[mojarra] 01/06: Imported Upstream version 2.2.8+dfsg

Markus Koschany apo-guest at moszumanska.debian.org
Sat Aug 30 16:22:32 UTC 2014


This is an automated email from the git hooks/post-receive script.

apo-guest pushed a commit to branch experimental
in repository mojarra.

commit d2a6960a6f07101607fa53df24616173836372f1
Author: Markus Koschany <apo at gambaru.de>
Date:   Mon Aug 25 13:28:20 2014 +0200

    Imported Upstream version 2.2.8+dfsg
---
 .kick                                              |    11 +
 INTEGRATING_WITH_V3.txt                            |    55 +
 LICENSE                                            |     6 +-
 PROMOTING_A_BUILD.txt                              |   253 +
 TEST.txt                                           |     1 +
 TESTING_A_BUILD.txt                                |    59 +
 build-source.xml                                   |    74 +-
 build.properties.glassfish                         |    84 +-
 build.properties.tomcat                            |   138 +
 build.properties.weblogic                          |   164 +
 build.xml                                          |   463 +-
 common/ant/bin/cb.bat                              |    45 +-
 common/ant/bin/cb.sh                               |    77 +-
 common/ant/bin/xs3p-disable-output-escaping.patch  |    11 +
 common/ant/common.xml                              |   361 +-
 common/ant/dependencies.xml                        |   236 +-
 common/ant/glassfish/container.xml                 |   708 +-
 common/ant/glassfishV3.1/DO_NOT_REMOVE_CRLFS.txt   |     3 +
 common/ant/glassfishV3.1/container.xml             |  1091 ++
 .../domains_domain1_config_default-web_xml.patch   |    13 +
 ...ns_domain1_config_default-web_xml_windows.patch |    13 +
 .../lib_templates_default-web_xml.patch            |    13 +
 .../lib_templates_default-web_xml_windows.patch    |    13 +
 .../DO_NOT_REMOVE_CRLFS.txt                        |     3 +
 common/ant/glassfishV3.1_no_cluster/container.xml  |   805 ++
 .../domains_domain1_config_default-web_xml.patch   |    13 +
 ...ns_domain1_config_default-web_xml_windows.patch |    13 +
 .../lib_templates_default-web_xml.patch            |    13 +
 .../lib_templates_default-web_xml_windows.patch    |    13 +
 common/ant/glassfishV3/container.xml               |   162 +-
 common/ant/glassfishV3prelude/container.xml        |   163 +-
 common/ant/maven-pre-maven-rename.xml              |   426 +
 common/ant/maven.xml                               |   328 +-
 common/ant/package-list                            |   203 +
 common/ant/source-build-setup.xml                  |    88 +-
 common/ant/template/container.xml                  |   237 +-
 common/ant/template/jsf-api-pom-template.xml       |   367 +-
 common/ant/template/jsf-impl-pom-template.xml      |   189 +-
 .../jsf-pre-maven-rename-api-pom-template.xml      |   335 +
 .../jsf-pre-maven-rename-impl-pom-template.xml     |   295 +
 common/ant/test-app.xml                            |   208 +
 common/ant/tomcat6/container.xml                   |   250 +
 common/ant/tomcat7/container.xml                   |   266 +
 common/ant/wls_10_3_4_no_cluster/container.xml     |  1044 ++
 common/ant/wls_10_3_4_no_cluster/wls-jsf/pom.xml   |    95 +
 .../wls-jsf/src/main/templates/weblogic.xml        |     7 +
 .../wls-jsf/src/main/webapp/WEB-INF/web.xml        |     7 +
 common/ant/wls_12_1_1_no_cluster/container.xml     |  1001 ++
 .../container.xml                                  |  1165 ++
 .../wls-jsf-pom-template.xml                       |   101 +
 .../wls-jsf/pom.xml                                |   101 +
 .../wls-jsf/src/main/templates/weblogic.xml        |     7 +
 .../wls-jsf/src/main/webapp/WEB-INF/web.xml        |     7 +
 contrib/sandbox/.cvsignore                         |     4 +
 contrib/sandbox/README                             |    39 +
 contrib/sandbox/build.xml                          |   375 +
 .../sandbox/component/AccessibleHtmlColumn.java    |   166 +
 .../sandbox/component/AccessibleHtmlDataTable.java |   991 ++
 .../sandbox/render/AccessibleTableRenderer.java    |   548 +
 .../faces/sandbox/render/HtmlBasicRenderer.java    |   576 +
 .../faces/sandbox/taglib/AccessibleColumnTag.java  |   170 +
 .../sandbox/taglib/AccessibleDataTableTag.java     |   624 +
 contrib/sandbox/src/resources/.cvsignore           |     2 +
 .../src/resources/META-INF/faces-config.xml        |    66 +
 .../src/resources/META-INF/sandbox.taglib.xml      |    50 +
 contrib/sandbox/src/resources/META-INF/sandbox.tld |   809 ++
 docs/README                                        |     5 +
 docs/build.javadocs.dist-index.html                |    62 +
 docs/build.xml                                     |    80 +
 docs/community.html                                |   121 +
 docs/index.html                                    |   100 +
 docs/issues.html                                   |    77 +
 docs/jcp-questionairre.txt                         |    99 +
 docs/jsf-2_1-changelog.html                        |   254 +
 docs/releasenotes.html                             |   118 +
 docs/tags/jax/body.tag                             |    30 +
 docs/tags/jax/head.tag                             |    18 +
 docs/tags/sun/navigation-bar.tag                   |   111 +
 docs/tags/sun/style/a2_corner_tr.gif               |   Bin 0 -> 110 bytes
 docs/tags/sun/style/bg_titlebar.gif                |   Bin 0 -> 4337 bytes
 docs/tags/sun/style/corner_navblue_tr.gif          |   Bin 0 -> 75 bytes
 docs/tags/sun/style/d7_tab_bg.gif                  |   Bin 0 -> 1111 bytes
 docs/tags/sun/style/sun.css                        |   194 +
 docs/tags/sun/style/sunlogo.gif                    |   Bin 0 -> 1022 bytes
 docs/toc.xml                                       |    67 +
 injectionprovider/build.xml                        |    80 +-
 .../faces/vendor/GlassFishInjectionProvider.java   |    36 +-
 .../sun/faces/vendor/Jetty6InjectionProvider.java  |   256 +-
 .../sun/faces/vendor/Tomcat6InjectionProvider.java |    36 +-
 jsf-api/LICENSE.TXT                                |   264 +-
 jsf-api/build-pre-maven-rename.xml                 |  1011 ++
 jsf-api/build-source.xml                           |   114 +-
 jsf-api/build.xml                                  |   422 +-
 jsf-api/doc/XMLSchema.dtd                          |    42 +
 jsf-api/doc/actionsource-props.xml                 |    73 +-
 jsf-api/doc/actionsource2-props.xml                |    73 +-
 jsf-api/doc/base-props.xml                         |    73 +-
 jsf-api/doc/changed_added_2_0_rev_a_cursor.cur     |   Bin
 jsf-api/doc/changed_added_2_1.png                  |   Bin 0 -> 748 bytes
 jsf-api/doc/changed_added_2_1_cursor.cur           |   Bin 0 -> 2238 bytes
 jsf-api/doc/changed_added_2_2.png                  |   Bin 0 -> 748 bytes
 jsf-api/doc/changed_added_2_2_cursor.cur           |   Bin 0 -> 2238 bytes
 jsf-api/doc/changed_added_2_3.png                  |   Bin 0 -> 748 bytes
 jsf-api/doc/changed_added_2_3_cursor.cur           |   Bin 0 -> 2238 bytes
 jsf-api/doc/changed_deleted_2_0_rev_a_cursor.cur   |   Bin
 jsf-api/doc/changed_deleted_2_1.png                |   Bin 0 -> 748 bytes
 jsf-api/doc/changed_deleted_2_1_cursor.cur         |   Bin 0 -> 2238 bytes
 jsf-api/doc/changed_deleted_2_2.png                |   Bin 0 -> 748 bytes
 jsf-api/doc/changed_deleted_2_2_cursor.cur         |   Bin 0 -> 2238 bytes
 jsf-api/doc/changed_deleted_2_3.png                |   Bin 0 -> 748 bytes
 jsf-api/doc/changed_deleted_2_3_cursor.cur         |   Bin 0 -> 2238 bytes
 jsf-api/doc/changed_modified_2_0_rev_a_cursor.cur  |   Bin
 jsf-api/doc/changed_modified_2_1.png               |   Bin 0 -> 748 bytes
 jsf-api/doc/changed_modified_2_1_cursor.cur        |   Bin 0 -> 2238 bytes
 jsf-api/doc/changed_modified_2_2.png               |   Bin 0 -> 748 bytes
 jsf-api/doc/changed_modified_2_2_cursor.cur        |   Bin 0 -> 2238 bytes
 jsf-api/doc/changed_modified_2_3.png               |   Bin 0 -> 748 bytes
 jsf-api/doc/changed_modified_2_3_cursor.cur        |   Bin 0 -> 2238 bytes
 jsf-api/doc/column-props.xml                       |    74 +-
 jsf-api/doc/command-button-props.xml               |    96 +-
 jsf-api/doc/core-props.xml                         |   107 +-
 jsf-api/doc/datatypes.dtd                          |    42 +
 jsf-api/doc/direct-link-props.xml                  |    74 +-
 jsf-api/doc/doctype-props.xml                      |   108 +
 jsf-api/doc/document-props.xml                     |    75 +
 jsf-api/doc/editable-props.xml                     |    73 +-
 jsf-api/doc/events-props-noclick.xml               |    92 +-
 jsf-api/doc/events-props.xml                       |    94 +-
 jsf-api/doc/events-valueChanged-click.xml          |    46 +-
 jsf-api/doc/expert-draft-bg-blank.graffle          |   256 +
 jsf-api/doc/expert-draft-bg-blank.png              |   Bin 0 -> 164 bytes
 jsf-api/doc/expert-draft-bg-non-blank.graffle      |   542 +
 jsf-api/doc/expert-draft-bg-non-blank.png          |   Bin 0 -> 9811 bytes
 jsf-api/doc/expert-draft-bg.png                    |   Bin 0 -> 9811 bytes
 jsf-api/doc/facelet-taglib_1_0.dtd                 |    85 +-
 jsf-api/doc/focus-props.xml                        |    82 +-
 jsf-api/doc/form-form-props.xml                    |    84 +-
 jsf-api/doc/get-link-props.xml                     |    77 +
 jsf-api/doc/graphic-image-props.xml                |    86 +-
 jsf-api/doc/i18n-props.xml                         |    80 +-
 jsf-api/doc/id-props.xml                           |    70 +
 jsf-api/doc/image-button-props.xml                 |    76 +-
 jsf-api/doc/input-props-nochange.xml               |    80 +-
 jsf-api/doc/input-props.xml                        |    82 +-
 jsf-api/doc/input-secret-props.xml                 |    74 +-
 jsf-api/doc/input-textarea-props.xml               |    78 +-
 jsf-api/doc/javaee_5.xsd                           |   116 +-
 jsf-api/doc/javaee_6.xsd                           |  2422 ++++
 jsf-api/doc/javaee_7.xsd                           |  3063 +++++
 jsf-api/doc/javaee_web_services_1_2.xsd            |   115 +-
 jsf-api/doc/javaee_web_services_client_1_2.xsd     |   115 +-
 jsf-api/doc/javaee_web_services_client_1_3.xsd     |   737 +
 jsf-api/doc/javaee_web_services_client_1_4.xsd     |   737 +
 jsf-api/doc/jsdoc-template/static/default.css      |   265 +
 jsf-api/doc/link-props.xml                         |   112 +-
 jsf-api/doc/list-props.xml                         |    74 +-
 jsf-api/doc/listbox-props.xml                      |    74 +-
 jsf-api/doc/menu-props.xml                         |    76 +-
 jsf-api/doc/message-message-props.xml              |    74 +-
 jsf-api/doc/messages-messages-props.xml            |    74 +-
 jsf-api/doc/output-format-props.xml                |    74 +-
 jsf-api/doc/output-label-props.xml                 |    74 +-
 jsf-api/doc/output-resource-props.xml              |    88 +-
 jsf-api/doc/output-text-props.xml                  |    74 +-
 jsf-api/doc/panel-grid-props.xml                   |    74 +-
 jsf-api/doc/panel-group-props.xml                  |    78 +-
 jsf-api/doc/selectmany-checkbox-props.xml          |    76 +-
 jsf-api/doc/selectmany-props.xml                   |    73 +-
 jsf-api/doc/selectone-props.xml                    |    74 +-
 jsf-api/doc/selectone-radio-props.xml              |    76 +-
 jsf-api/doc/standard-html-renderkit-base.xml       |  1227 +-
 jsf-api/doc/standard-html-renderkit.xml            | 10273 +++++++++-----
 jsf-api/doc/table-props.xml                        |    91 +-
 jsf-api/doc/text-props.xml                         |    80 +-
 jsf-api/doc/uicolumn-props.xml                     |    73 +-
 jsf-api/doc/uicommand-props.xml                    |    73 +-
 jsf-api/doc/uicomponent-props.xml                  |    77 +-
 jsf-api/doc/uidata-props.xml                       |    86 +-
 jsf-api/doc/uiform-props.xml                       |    73 +-
 jsf-api/doc/uigraphic-props.xml                    |    73 +-
 jsf-api/doc/uiinput-props.xml                      |    73 +-
 jsf-api/doc/uimessage-props.xml                    |    73 +-
 jsf-api/doc/uimessages-props.xml                   |    73 +-
 jsf-api/doc/uinamingcontainer-props.xml            |    73 +-
 jsf-api/doc/uioutcometarget-props.xml              |    74 +-
 jsf-api/doc/uioutput-props.xml                     |    73 +-
 jsf-api/doc/uipanel-props.xml                      |    73 +-
 jsf-api/doc/uiparameter-props.xml                  |    73 +-
 jsf-api/doc/uiselectboolean-props.xml              |    73 +-
 jsf-api/doc/uiselectitem-props.xml                 |    73 +-
 jsf-api/doc/uiselectitems-props.xml                |    73 +-
 jsf-api/doc/uiselectmany-props.xml                 |    73 +-
 jsf-api/doc/uiselectone-props.xml                  |    73 +-
 jsf-api/doc/uiviewaction-props.xml                 |   121 +
 jsf-api/doc/uiviewroot-props.xml                   |    73 +-
 jsf-api/doc/valueholder-props.xml                  |    73 +-
 jsf-api/doc/web-facelettaglibrary_2_0.xsd          |   117 +-
 jsf-api/doc/web-facelettaglibrary_2_2.xsd          |   684 +
 jsf-api/doc/web-facesconfig_1_0.dtd                |    77 +-
 jsf-api/doc/web-facesconfig_1_1.dtd                |    72 +-
 jsf-api/doc/web-facesconfig_1_2.xsd                |   118 +-
 jsf-api/doc/web-facesconfig_2_0.xsd                |   117 +-
 jsf-api/doc/web-facesconfig_2_1.xsd                |  2792 ++++
 jsf-api/doc/web-facesconfig_2_2.xsd                |  3703 +++++
 jsf-api/doc/web-facesuicomponent_2_0.xsd           |   118 +-
 jsf-api/doc/web-facesuicomponent_2_2.xsd           |   222 +
 jsf-api/doc/web-partialresponse_2_0.xsd            |   117 +-
 jsf-api/doc/web-partialresponse_2_2.xsd            |   402 +
 jsf-api/doc/xml.xsd                                |    43 +-
 jsf-api/interim-pom.xml                            |    85 +-
 jsf-api/mojarra-jsf-api.bnd                        |   158 +-
 .../javax/faces/CurrentThreadToServletContext.java |   382 +
 .../src/main/java/javax/faces/FacesException.java  |    37 +-
 .../src/main/java/javax/faces/FacesWrapper.java    |    36 +-
 .../src/main/java/javax/faces/FactoryFinder.java   |   649 +-
 .../java/javax/faces/FactoryFinderInstance.java    |   536 +
 .../main/java/javax/faces/LogStrings.properties    |    33 +-
 .../main/java/javax/faces/LogStrings_de.properties |    32 +-
 .../main/java/javax/faces/LogStrings_es.properties |    32 +-
 .../main/java/javax/faces/LogStrings_fr.properties |    44 +-
 .../main/java/javax/faces/LogStrings_ja.properties |    32 +-
 .../main/java/javax/faces/LogStrings_ko.properties |    32 +-
 .../java/javax/faces/LogStrings_pt_BR.properties   |    32 +-
 .../java/javax/faces/LogStrings_zh_CN.properties   |    32 +-
 .../java/javax/faces/LogStrings_zh_HK.properties   |    93 +
 .../java/javax/faces/LogStrings_zh_TW.properties   |    32 +-
 .../src/main/java/javax/faces/Messages.properties  |    44 +-
 .../main/java/javax/faces/Messages_de.properties   |    44 +-
 .../main/java/javax/faces/Messages_en.properties   |    44 +-
 .../main/java/javax/faces/Messages_es.properties   |    44 +-
 .../main/java/javax/faces/Messages_fr.properties   |   142 +-
 .../main/java/javax/faces/Messages_ja.properties   |    44 +-
 .../main/java/javax/faces/Messages_ko.properties   |    44 +-
 .../java/javax/faces/Messages_pt_BR.properties     |    44 +-
 .../java/javax/faces/Messages_zh_CN.properties     |    50 +-
 .../java/javax/faces/Messages_zh_HK.properties     |   150 +
 .../java/javax/faces/Messages_zh_TW.properties     |    50 +-
 .../java/javax/faces/application/Application.java  |   252 +-
 .../ApplicationConfigurationPopulator.java         |    97 +
 .../faces/application/ApplicationFactory.java      |    40 +-
 .../faces/application/ApplicationWrapper.java      |   104 +-
 .../application/ConfigurableNavigationHandler.java |    89 +-
 .../ConfigurableNavigationHandlerWrapper.java      |   105 +
 .../java/javax/faces/application/FacesMessage.java |   976 +-
 .../javax/faces/application/NavigationCase.java    |   116 +-
 .../faces/application/NavigationCaseWrapper.java   |   158 +
 .../javax/faces/application/NavigationHandler.java |    66 +-
 .../application/NavigationHandlerWrapper.java      |    76 +
 .../java/javax/faces/application/ProjectStage.java |    29 +-
 .../faces/application/ProtectedViewException.java  |    68 +
 .../java/javax/faces/application/Resource.java     |   107 +-
 .../faces/application/ResourceDependencies.java    |    28 +-
 .../faces/application/ResourceDependency.java      |    28 +-
 .../javax/faces/application/ResourceHandler.java   |   314 +-
 .../faces/application/ResourceHandlerWrapper.java  |    75 +-
 .../javax/faces/application/ResourceWrapper.java   |   110 +-
 .../java/javax/faces/application/StateManager.java |   128 +-
 .../faces/application/StateManagerWrapper.java     |    48 +-
 .../faces/application/ViewExpiredException.java    |    37 +-
 .../java/javax/faces/application/ViewHandler.java  |   273 +-
 .../faces/application/ViewHandlerWrapper.java      |   110 +-
 .../java/javax/faces/application/ViewResource.java |    67 +
 .../main/java/javax/faces/application/package.html |    55 +-
 .../java/javax/faces/bean/ApplicationScoped.java   |    28 +-
 .../main/java/javax/faces/bean/CustomScoped.java   |    28 +-
 .../main/java/javax/faces/bean/ManagedBean.java    |    36 +-
 .../java/javax/faces/bean/ManagedProperty.java     |    36 +-
 .../src/main/java/javax/faces/bean/NoneScoped.java |    29 +-
 .../main/java/javax/faces/bean/ReferencedBean.java |    36 +-
 .../main/java/javax/faces/bean/RequestScoped.java  |    28 +-
 .../main/java/javax/faces/bean/SessionScoped.java  |    28 +-
 .../src/main/java/javax/faces/bean/ViewScoped.java |    91 +-
 .../src/main/java/javax/faces/bean/package.html    |    44 +-
 .../java/javax/faces/component/ActionSource.java   |    36 +-
 .../java/javax/faces/component/ActionSource2.java  |    36 +-
 .../faces/component/AttachedObjectListHolder.java  |    33 +-
 .../faces/component/ComponentStateHelper.java      |    83 +-
 .../javax/faces/component/ContextCallback.java     |    36 +-
 .../javax/faces/component/EditableValueHolder.java |    45 +-
 .../java/javax/faces/component/FacesComponent.java |   102 +-
 .../faces/component/MethodBindingAdapterBase.java  |    36 +-
 .../faces/component/MethodBindingValidator.java    |    36 +-
 .../MethodBindingValueChangeListener.java          |    36 +-
 .../javax/faces/component/NamingContainer.java     |    36 +-
 .../javax/faces/component/PartialStateHolder.java  |    31 +-
 .../javax/faces/component/SelectItemsIterator.java |    38 +-
 .../java/javax/faces/component/SelectUtils.java    |    36 +-
 .../java/javax/faces/component/StateHelper.java    |    38 +-
 .../java/javax/faces/component/StateHolder.java    |    64 +-
 .../faces/component/TransientStateHelper.java      |    95 +
 .../faces/component/TransientStateHolder.java      |    90 +
 .../main/java/javax/faces/component/UIColumn.java  |    36 +-
 .../main/java/javax/faces/component/UICommand.java |    36 +-
 .../java/javax/faces/component/UIComponent.java    |  5169 +++----
 .../javax/faces/component/UIComponentBase.java     |   562 +-
 .../main/java/javax/faces/component/UIData.java    |  4456 ++++---
 .../main/java/javax/faces/component/UIForm.java    |   124 +-
 .../main/java/javax/faces/component/UIGraphic.java |    37 +-
 .../main/java/javax/faces/component/UIInput.java   |   186 +-
 .../main/java/javax/faces/component/UIMessage.java |    36 +-
 .../java/javax/faces/component/UIMessages.java     |    36 +-
 .../javax/faces/component/UINamingContainer.java   |    49 +-
 .../javax/faces/component/UIOutcomeTarget.java     |    65 +-
 .../main/java/javax/faces/component/UIOutput.java  |   571 +-
 .../main/java/javax/faces/component/UIPanel.java   |    36 +-
 .../java/javax/faces/component/UIParameter.java    |   366 +-
 .../javax/faces/component/UISelectBoolean.java     |    36 +-
 .../java/javax/faces/component/UISelectItem.java   |    61 +-
 .../java/javax/faces/component/UISelectItems.java  |    36 +-
 .../java/javax/faces/component/UISelectMany.java   |    38 +-
 .../java/javax/faces/component/UISelectOne.java    |    36 +-
 .../java/javax/faces/component/UIViewAction.java   |   753 ++
 .../javax/faces/component/UIViewParameter.java     |    91 +-
 .../java/javax/faces/component/UIViewRoot.java     |  3685 ++---
 .../java/javax/faces/component/UniqueIdVendor.java |    36 +-
 .../faces/component/UpdateModelException.java      |    36 +-
 .../java/javax/faces/component/ValueHolder.java    |    36 +-
 .../faces/component/behavior/AjaxBehavior.java     |   155 +-
 .../javax/faces/component/behavior/Behavior.java   |    41 +-
 .../faces/component/behavior/BehaviorBase.java     |    32 +-
 .../faces/component/behavior/ClientBehavior.java   |    39 +-
 .../component/behavior/ClientBehaviorBase.java     |    28 +-
 .../component/behavior/ClientBehaviorContext.java  |   512 +-
 .../component/behavior/ClientBehaviorHint.java     |   116 +-
 .../component/behavior/ClientBehaviorHolder.java   |    29 +-
 .../faces/component/behavior/FacesBehavior.java    |    28 +-
 .../javax/faces/component/behavior/package.html    |    47 +-
 .../java/javax/faces/component/html/package.html   |    45 +-
 .../main/java/javax/faces/component/package.html   |    46 +-
 .../javax/faces/component/visit/VisitCallback.java |    36 +-
 .../javax/faces/component/visit/VisitContext.java  |    38 +-
 .../faces/component/visit/VisitContextFactory.java |    39 +-
 .../faces/component/visit/VisitContextWrapper.java |    37 +-
 .../javax/faces/component/visit/VisitHint.java     |    50 +-
 .../javax/faces/component/visit/VisitResult.java   |    36 +-
 .../java/javax/faces/component/visit/package.html  |    46 +-
 .../java/javax/faces/context/ExceptionHandler.java |    36 +-
 .../faces/context/ExceptionHandlerFactory.java     |    40 +-
 .../faces/context/ExceptionHandlerWrapper.java     |    44 +-
 .../java/javax/faces/context/ExternalContext.java  |   300 +-
 .../faces/context/ExternalContextFactory.java      |    39 +-
 .../faces/context/ExternalContextWrapper.java      |   171 +-
 .../java/javax/faces/context/FacesContext.java     |   209 +-
 .../javax/faces/context/FacesContextFactory.java   |    49 +-
 .../javax/faces/context/FacesContextWrapper.java   |   122 +-
 .../src/main/java/javax/faces/context/Flash.java   |    66 +-
 .../java/javax/faces/context/FlashFactory.java     |   100 +
 .../java/javax/faces/context/FlashWrapper.java     |   309 +
 .../javax/faces/context/PartialResponseWriter.java |    55 +-
 .../javax/faces/context/PartialViewContext.java    |    66 +-
 .../faces/context/PartialViewContextFactory.java   |    39 +-
 .../faces/context/PartialViewContextWrapper.java   |    74 +-
 .../java/javax/faces/context/ResponseStream.java   |    36 +-
 .../java/javax/faces/context/ResponseWriter.java   |   150 +-
 .../javax/faces/context/ResponseWriterWrapper.java |    81 +-
 .../src/main/java/javax/faces/context/package.html |    45 +-
 .../javax/faces/convert/BigDecimalConverter.java   |    36 +-
 .../javax/faces/convert/BigIntegerConverter.java   |    36 +-
 .../java/javax/faces/convert/BooleanConverter.java |    36 +-
 .../java/javax/faces/convert/ByteConverter.java    |    36 +-
 .../javax/faces/convert/CharacterConverter.java    |    36 +-
 .../main/java/javax/faces/convert/Converter.java   |    52 +-
 .../javax/faces/convert/ConverterException.java    |    36 +-
 .../javax/faces/convert/DateTimeConverter.java     |    42 +-
 .../java/javax/faces/convert/DoubleConverter.java  |    36 +-
 .../java/javax/faces/convert/EnumConverter.java    |   536 +-
 .../java/javax/faces/convert/FacesConverter.java   |    80 +-
 .../java/javax/faces/convert/FloatConverter.java   |    36 +-
 .../java/javax/faces/convert/IntegerConverter.java |    36 +-
 .../java/javax/faces/convert/LongConverter.java    |    36 +-
 .../java/javax/faces/convert/NumberConverter.java  |    44 +-
 .../java/javax/faces/convert/ShortConverter.java   |    36 +-
 .../src/main/java/javax/faces/convert/package.html |    49 +-
 .../el/CompositeComponentExpressionHolder.java     |    28 +-
 .../java/javax/faces/el/EvaluationException.java   |    37 +-
 .../main/java/javax/faces/el/MethodBinding.java    |    37 +-
 .../javax/faces/el/MethodNotFoundException.java    |    37 +-
 .../javax/faces/el/PropertyNotFoundException.java  |    37 +-
 .../main/java/javax/faces/el/PropertyResolver.java |    37 +-
 .../javax/faces/el/ReferenceSyntaxException.java   |    37 +-
 .../src/main/java/javax/faces/el/ValueBinding.java |    37 +-
 .../main/java/javax/faces/el/VariableResolver.java |    37 +-
 jsf-api/src/main/java/javax/faces/el/package.html  |    42 +
 .../faces/event/AbortProcessingException.java      |    37 +-
 .../main/java/javax/faces/event/ActionEvent.java   |    36 +-
 .../java/javax/faces/event/ActionListener.java     |    49 +-
 .../javax/faces/event/ActionListenerWrapper.java   |    72 +
 .../java/javax/faces/event/AjaxBehaviorEvent.java  |    36 +-
 .../javax/faces/event/AjaxBehaviorListener.java    |    28 +-
 .../main/java/javax/faces/event/BehaviorEvent.java |    29 +-
 .../java/javax/faces/event/BehaviorListener.java   |    28 +-
 .../javax/faces/event/ComponentSystemEvent.java    |    84 +-
 .../faces/event/ComponentSystemEventListener.java  |    28 +-
 .../main/java/javax/faces/event/EventHierarchy.jpg |   Bin 999248 -> 140469 bytes
 .../javax/faces/event/ExceptionQueuedEvent.java    |    36 +-
 .../faces/event/ExceptionQueuedEventContext.java   |    36 +-
 .../main/java/javax/faces/event/FacesEvent.java    |    36 +-
 .../main/java/javax/faces/event/FacesListener.java |    36 +-
 .../main/java/javax/faces/event/ListenerFor.java   |    28 +-
 .../main/java/javax/faces/event/ListenersFor.java  |    29 +-
 .../event/MethodExpressionActionListener.java      |   104 +-
 .../event/MethodExpressionValueChangeListener.java |    79 +-
 .../main/java/javax/faces/event/NamedEvent.java    |    28 +-
 .../main/java/javax/faces/event/PhaseEvent.java    |    36 +-
 .../src/main/java/javax/faces/event/PhaseId.java   |    93 +-
 .../main/java/javax/faces/event/PhaseListener.java |    36 +-
 .../java/javax/faces/event/PostAddToViewEvent.java |    72 +-
 .../faces/event/PostAddToViewNonPDLEvent.java      |    56 -
 .../faces/event/PostConstructApplicationEvent.java |    29 +-
 .../faces/event/PostConstructCustomScopeEvent.java |    28 +-
 .../faces/event/PostConstructViewMapEvent.java     |    28 +-
 .../javax/faces/event/PostKeepFlashValueEvent.java |    78 +
 .../javax/faces/event/PostPutFlashValueEvent.java  |    78 +
 .../javax/faces/event/PostRestoreStateEvent.java   |    28 +-
 .../java/javax/faces/event/PostValidateEvent.java  |    53 +-
 .../java/javax/faces/event/PreClearFlashEvent.java |    74 +
 .../faces/event/PreDestroyApplicationEvent.java    |    28 +-
 .../faces/event/PreDestroyCustomScopeEvent.java    |    28 +-
 .../javax/faces/event/PreDestroyViewMapEvent.java  |    28 +-
 .../faces/event/PreRemoveFlashValueEvent.java      |    78 +
 .../javax/faces/event/PreRemoveFromViewEvent.java  |    28 +-
 .../javax/faces/event/PreRenderComponentEvent.java |    28 +-
 .../java/javax/faces/event/PreRenderViewEvent.java |    36 +-
 .../java/javax/faces/event/PreValidateEvent.java   |    50 +-
 .../main/java/javax/faces/event/ScopeContext.java  |    28 +-
 .../main/java/javax/faces/event/SystemEvent.java   |    38 +-
 .../javax/faces/event/SystemEventListener.java     |    28 +-
 .../faces/event/SystemEventListenerHolder.java     |    36 +-
 .../java/javax/faces/event/ValueChangeEvent.java   |    36 +-
 .../javax/faces/event/ValueChangeListener.java     |    36 +-
 .../java/javax/faces/event/ViewMapListener.java    |    36 +-
 .../src/main/java/javax/faces/event/package.html   |    45 +-
 jsf-api/src/main/java/javax/faces/flow/Flow.java   |   247 +
 .../main/java/javax/faces/flow/FlowCallNode.java   |    54 +
 .../main/java/javax/faces/flow/FlowHandler.java    |   471 +
 .../java/javax/faces/flow/FlowHandlerFactory.java  |    72 +
 .../faces/flow/FlowHandlerFactoryWrapper.java      |    80 +
 .../main/java/javax/faces/flow/FlowHierarchy.jpg   |   Bin 0 -> 62558 bytes
 .../src/main/java/javax/faces/flow/FlowNode.java   |    56 +
 .../src/main/java/javax/faces/flow/FlowScoped.java |    94 +
 .../main/java/javax/faces/flow/MethodCallNode.java |    87 +
 .../src/main/java/javax/faces/flow/Parameter.java  |    70 +
 .../src/main/java/javax/faces/flow/ReturnNode.java |    64 +
 .../src/main/java/javax/faces/flow/SwitchCase.java |    69 +
 .../src/main/java/javax/faces/flow/SwitchNode.java |    74 +
 .../src/main/java/javax/faces/flow/ViewNode.java   |    62 +
 .../java/javax/faces/flow/builder/FlowBuilder.java |   278 +
 .../faces/flow/builder/FlowBuilderParameter.java   |    67 +
 .../javax/faces/flow/builder/FlowCallBuilder.java  |    86 +
 .../javax/faces/flow/builder/FlowDefinition.java   |    65 +
 .../faces/flow/builder/MethodCallBuilder.java      |   138 +
 .../faces/flow/builder/NavigationCaseBuilder.java  |   169 +
 .../java/javax/faces/flow/builder/NodeBuilder.java |    62 +
 .../javax/faces/flow/builder/ReturnBuilder.java    |    76 +
 .../javax/faces/flow/builder/SwitchBuilder.java    |    85 +
 .../faces/flow/builder/SwitchCaseBuilder.java      |    99 +
 .../java/javax/faces/flow/builder/ViewBuilder.java |    53 +
 .../java/javax/faces/flow/builder/package.html     |    54 +
 .../src/main/java/javax/faces/flow/package.html    |    54 +
 .../java/javax/faces/lifecycle/ClientWindow.java   |   245 +
 .../javax/faces/lifecycle/ClientWindowFactory.java |    88 +
 .../javax/faces/lifecycle/ClientWindowWrapper.java |    88 +
 .../main/java/javax/faces/lifecycle/Lifecycle.java |    60 +-
 .../javax/faces/lifecycle/LifecycleFactory.java    |    39 +-
 .../javax/faces/lifecycle/LifecycleWrapper.java    |    99 +
 .../main/java/javax/faces/lifecycle/package.html   |    44 +-
 .../java/javax/faces/model/ArrayDataModel.java     |    50 +-
 .../javax/faces/model/CollectionDataModel.java     |   222 +
 .../src/main/java/javax/faces/model/DataModel.java |    48 +-
 .../java/javax/faces/model/DataModelEvent.java     |    36 +-
 .../java/javax/faces/model/DataModelListener.java  |    36 +-
 .../main/java/javax/faces/model/ListDataModel.java |    47 +-
 .../javax/faces/model/NoRowAvailableException.java |    29 +-
 .../java/javax/faces/model/ResultDataModel.java    |    37 +-
 .../java/javax/faces/model/ResultSetDataModel.java |    36 +-
 .../java/javax/faces/model/ScalarDataModel.java    |    40 +-
 .../main/java/javax/faces/model/SelectItem.java    |    48 +-
 .../java/javax/faces/model/SelectItemGroup.java    |    36 +-
 .../src/main/java/javax/faces/model/package.html   |    45 +-
 jsf-api/src/main/java/javax/faces/package.html     |    46 +-
 .../javax/faces/render/ClientBehaviorRenderer.java |   256 +-
 .../javax/faces/render/FacesBehaviorRenderer.java  |    28 +-
 .../java/javax/faces/render/FacesRenderer.java     |    36 +-
 .../main/java/javax/faces/render/RenderKit.java    |    38 +-
 .../java/javax/faces/render/RenderKitFactory.java  |    39 +-
 .../java/javax/faces/render/RenderKitWrapper.java  |    37 +-
 .../src/main/java/javax/faces/render/Renderer.java |    48 +-
 .../java/javax/faces/render/RendererWrapper.java   |   108 +
 .../javax/faces/render/ResponseStateManager.java   |   220 +-
 .../src/main/java/javax/faces/render/package.html  |    45 +-
 .../java/javax/faces/validator/BeanValidator.java  |    70 +-
 .../faces/validator/DoubleRangeValidator.java      |    45 +-
 .../java/javax/faces/validator/FacesValidator.java |    50 +-
 .../javax/faces/validator/LengthValidator.java     |    45 +-
 .../javax/faces/validator/LongRangeValidator.java  |    45 +-
 .../faces/validator/MethodExpressionValidator.java |   348 +-
 .../java/javax/faces/validator/RegexValidator.java |    36 +-
 .../javax/faces/validator/RequiredValidator.java   |    39 +-
 .../main/java/javax/faces/validator/Validator.java |    40 +-
 .../javax/faces/validator/ValidatorException.java  |    36 +-
 .../faces/validator/ValueExpressionAnalyzer.java   |    36 +-
 .../java/javax/faces/validator/ValueReference.java |    38 +-
 .../main/java/javax/faces/validator/package.html   |    47 +-
 .../view/ActionSource2AttachedObjectHandler.java   |    28 +-
 .../view/ActionSource2AttachedObjectTarget.java    |    28 +-
 .../javax/faces/view/AttachedObjectHandler.java    |    34 +-
 .../javax/faces/view/AttachedObjectTarget.java     |    29 +-
 .../view/BehaviorHolderAttachedObjectHandler.java  |    38 +-
 .../view/BehaviorHolderAttachedObjectTarget.java   |    36 +-
 .../EditableValueHolderAttachedObjectHandler.java  |    29 +-
 .../EditableValueHolderAttachedObjectTarget.java   |    29 +-
 .../src/main/java/javax/faces/view/Location.java   |    28 +-
 .../javax/faces/view/StateManagementStrategy.java  |    91 +-
 .../view/ValueHolderAttachedObjectHandler.java     |    29 +-
 .../view/ValueHolderAttachedObjectTarget.java      |    29 +-
 .../javax/faces/view/ViewDeclarationLanguage.java  |   227 +-
 .../faces/view/ViewDeclarationLanguageFactory.java |    52 +-
 .../faces/view/ViewDeclarationLanguageWrapper.java |   158 +
 .../main/java/javax/faces/view/ViewMetadata.java   |    94 +-
 .../src/main/java/javax/faces/view/ViewScoped.java |   124 +
 .../faces/view/facelets/AttributeHandler.java      |    29 +-
 .../javax/faces/view/facelets/BehaviorConfig.java  |    38 +-
 .../javax/faces/view/facelets/BehaviorHandler.java |    36 +-
 .../javax/faces/view/facelets/ComponentConfig.java |    28 +-
 .../faces/view/facelets/ComponentHandler.java      |   107 +-
 .../view/facelets/CompositeFaceletHandler.java     |    31 +-
 .../javax/faces/view/facelets/ConverterConfig.java |    28 +-
 .../faces/view/facelets/ConverterHandler.java      |    28 +-
 .../view/facelets/DelegatingMetaTagHandler.java    |    52 +-
 .../java/javax/faces/view/facelets/Facelet.java    |    94 +
 .../javax/faces/view/facelets/FaceletCache.java    |   196 +
 .../faces/view/facelets/FaceletCacheFactory.java   |    63 +
 .../javax/faces/view/facelets/FaceletContext.java  |    32 +-
 .../faces/view/facelets/FaceletException.java      |    28 +-
 .../javax/faces/view/facelets/FaceletHandler.java  |    31 +-
 .../facelets/FaceletsAttachedObjectHandler.java    |    28 +-
 .../view/facelets/FaceletsResourceResolver.java    |    60 +
 .../javax/faces/view/facelets/FacetHandler.java    |    29 +-
 .../java/javax/faces/view/facelets/MetaRule.java   |    28 +-
 .../javax/faces/view/facelets/MetaRuleset.java     |    28 +-
 .../javax/faces/view/facelets/MetaTagHandler.java  |    28 +-
 .../java/javax/faces/view/facelets/Metadata.java   |    28 +-
 .../javax/faces/view/facelets/MetadataTarget.java  |    28 +-
 .../faces/view/facelets/ResourceResolver.java      |    34 +-
 .../main/java/javax/faces/view/facelets/Tag.java   |    28 +-
 .../javax/faces/view/facelets/TagAttribute.java    |    61 +-
 .../faces/view/facelets/TagAttributeException.java |    28 +-
 .../javax/faces/view/facelets/TagAttributes.java   |    61 +-
 .../java/javax/faces/view/facelets/TagConfig.java  |    28 +-
 .../javax/faces/view/facelets/TagDecorator.java    |   522 +-
 .../javax/faces/view/facelets/TagException.java    |    28 +-
 .../java/javax/faces/view/facelets/TagHandler.java |    37 +-
 .../faces/view/facelets/TagHandlerDelegate.java    |    50 +-
 .../view/facelets/TagHandlerDelegateFactory.java   |    61 +-
 .../javax/faces/view/facelets/TextHandler.java     |    29 +-
 .../javax/faces/view/facelets/ValidatorConfig.java |    28 +-
 .../faces/view/facelets/ValidatorHandler.java      |    28 +-
 .../java/javax/faces/view/facelets/package.html    |    45 +-
 .../src/main/java/javax/faces/view/package.html    |    49 +-
 .../main/java/javax/faces/webapp/AttributeTag.java |    36 +-
 .../java/javax/faces/webapp/ConverterELTag.java    |    36 +-
 .../main/java/javax/faces/webapp/ConverterTag.java |    36 +-
 .../main/java/javax/faces/webapp/FacesServlet.java |  1057 +-
 .../src/main/java/javax/faces/webapp/FacetTag.java |    36 +-
 .../webapp/PreJsf2ExceptionHandlerFactory.java     |    39 +-
 .../javax/faces/webapp/UIComponentBodyTag.java     |    36 +-
 .../faces/webapp/UIComponentClassicTagBase.java    |   965 +-
 .../java/javax/faces/webapp/UIComponentELTag.java  |    36 +-
 .../java/javax/faces/webapp/UIComponentTag.java    |    36 +-
 .../javax/faces/webapp/UIComponentTagBase.java     |    38 +-
 .../java/javax/faces/webapp/ValidatorELTag.java    |    36 +-
 .../main/java/javax/faces/webapp/ValidatorTag.java |    36 +-
 .../src/main/java/javax/faces/webapp/package.html  |    52 +-
 .../src/main/resources/doc-files/speclicense.html  |   215 +
 jsf-api/src/main/resources/jsf-api.css             |   476 +-
 jsf-api/src/main/resources/jsf.js                  |  1242 +-
 .../src/main/resources/managed-bean-overview.html  |    62 +-
 .../resources/mojarra-jsf-api-probe-provider.xml   |   109 +-
 jsf-api/src/main/resources/overview.html           |   108 +-
 .../java/javax/faces/FactoryFinderTestCase.java    |   221 -
 .../java/javax/faces/FactoryFinderTestCase2.java   |   129 -
 .../src/test/java/javax/faces/Messages.properties  |    50 -
 jsf-api/src/test/java/javax/faces/TestUtil.java    |   207 -
 .../faces/component/NamingContainerTestCase.java   |   589 -
 .../faces/component/StateHolderSaverTestCase.java  |   132 -
 .../javax/faces/component/TestActionListener.java  |   127 -
 .../java/javax/faces/component/TestCommand.java    |    65 -
 .../faces/component/TestCommandActionListener.java |    85 -
 .../java/javax/faces/component/TestComponent.java  |   152 -
 .../faces/component/TestDataActionListener.java    |    92 -
 .../java/javax/faces/component/TestDataBean.java   |    70 -
 .../javax/faces/component/TestDataValidator.java   |   104 -
 .../component/TestDataValueChangeListener.java     |   100 -
 .../test/java/javax/faces/component/TestEvent.java |    69 -
 .../test/java/javax/faces/component/TestInput.java |    69 -
 .../javax/faces/component/TestInputValidator.java  |    88 -
 .../component/TestInputValueChangeListener.java    |    85 -
 .../java/javax/faces/component/TestListener.java   |   110 -
 .../javax/faces/component/TestNamingContainer.java |    88 -
 .../java/javax/faces/component/TestSelectMany.java |    54 -
 .../java/javax/faces/component/TestValidator.java  |   101 -
 .../faces/component/TestValueChangeListener.java   |   135 -
 .../TestValueChangeListenerWithBackReference.java  |   108 -
 .../javax/faces/component/UIColumnTestCase.java    |   147 -
 .../javax/faces/component/UICommandTestCase.java   |   586 -
 .../UIComponentBaseAttachedStateTestCase.java      |   323 -
 .../component/UIComponentBaseBehaviorTestCase.java |   278 -
 .../faces/component/UIComponentBaseTestCase.java   |  1872 ---
 .../javax/faces/component/UIComponentTestCase.java |  2140 ---
 .../javax/faces/component/UIDataHeaderBean.java    |    95 -
 .../java/javax/faces/component/UIDataTestCase.java |  2697 ----
 .../javax/faces/component/UIDataTestCase_1.xml     |    96 -
 .../javax/faces/component/UIDataTestCase_2.xml     |    96 -
 .../javax/faces/component/UIDataTestCase_3.xml     |    96 -
 .../javax/faces/component/UIDataTestCase_4.xml     |    96 -
 .../javax/faces/component/UIDataTestCase_5.xml     |    68 -
 .../javax/faces/component/UIDataTestCase_6.xml     |    96 -
 .../javax/faces/component/UIDataTestCase_7.xml     |    96 -
 .../javax/faces/component/UIDataTestCase_8.xml     |    96 -
 .../faces/component/UIDataTestCase_9_withIds.xml   |   502 -
 .../component/UIDataTestCase_9_withoutIds.xml      |   502 -
 .../java/javax/faces/component/UIFormTestCase.java |   317 -
 .../javax/faces/component/UIGraphicTestCase.java   |   230 -
 .../UIInputAttachedObjectStateTestCase.java        |   173 -
 .../javax/faces/component/UIInputTestCase.java     |   682 -
 .../UIOutputAttachedObjectStateTestCase.java       |   153 -
 .../javax/faces/component/UIOutputTestCase.java    |   193 -
 .../javax/faces/component/UIPanelTestCase.java     |   148 -
 .../javax/faces/component/UIParameterTestCase.java |   241 -
 .../faces/component/UISelectBooleanTestCase.java   |   216 -
 .../javax/faces/component/UISelectItemSub.java     |    55 -
 .../faces/component/UISelectItemTestCase.java      |   349 -
 .../faces/component/UISelectItemsTestCase.java     |   191 -
 .../faces/component/UISelectManyTestCase.java      |   707 -
 .../javax/faces/component/UISelectOneTestCase.java |   461 -
 .../javax/faces/component/UIViewRootTestCase.java  |  1077 --
 .../faces/component/ValueHolderTestCaseBase.java   |   359 -
 .../test/java/javax/faces/event/PhaseIdTest.java   |    91 -
 .../mock/MockFacesContextFactoryExtender.java      |    51 -
 .../mock/MockFacesContextFactoryExtender2.java     |    51 -
 .../javax/faces/model/ArrayDataModelTestCase.java  |   100 -
 .../javax/faces/model/DataModelTestCaseBase.java   |   435 -
 .../javax/faces/model/ListDataModelTestCase.java   |   104 -
 .../javax/faces/model/ResultDataModelTestCase.java |   142 -
 .../faces/model/ResultSetDataModelTestCase.java    |   669 -
 .../javax/faces/model/ScalarDataModelTestCase.java |    98 -
 .../src/test/java/javax/faces/model/TestBean.java  |    48 -
 .../test/java/javax/faces/model/TestListener.java  |    88 -
 .../validator/DoubleRangeValidatorTestCase.java    |   156 -
 .../faces/validator/LengthValidatorTestCase.java   |   154 -
 .../validator/LongRangeValidatorTestCase.java      |   156 -
 .../faces/validator/RegexValidatorTestCase.java    |   104 -
 .../javax/faces/validator/ValidatorTestCase.java   |   179 -
 .../javax/faces/webapp/AttributeTagTestCase.java   |   268 -
 .../java/javax/faces/webapp/ConfigAttribute.java   |    61 -
 .../test/java/javax/faces/webapp/ConfigBase.java   |   144 -
 .../java/javax/faces/webapp/ConfigComponent.java   |    61 -
 .../java/javax/faces/webapp/ConfigConverter.java   |    61 -
 .../java/javax/faces/webapp/ConfigFeature.java     |   119 -
 .../javax/faces/webapp/ConfigFileTestCase.java     |   483 -
 .../java/javax/faces/webapp/ConfigProperty.java    |    61 -
 .../java/javax/faces/webapp/ConfigValidator.java   |    61 -
 .../javax/faces/webapp/ConverterTagTestCase.java   |   214 -
 .../java/javax/faces/webapp/FacetTagTestCase.java  |   186 -
 .../test/java/javax/faces/webapp/NamingTag.java    |    54 -
 .../java/javax/faces/webapp/TagTestCaseBase.java   |   191 -
 .../java/javax/faces/webapp/TestComponent.java     |   129 -
 .../test/java/javax/faces/webapp/TestInputTag.java |    87 -
 .../java/javax/faces/webapp/TestOutputTag.java     |    87 -
 .../src/test/java/javax/faces/webapp/TestTag.java  |   109 -
 .../javax/faces/webapp/UIComponentTagTestCase.java |   578 -
 .../javax/faces/webapp/ValidatorTagTestCase.java   |   214 -
 .../test/java/javax/faces/webapp/config-file-0.xml |    44 -
 .../test/java/javax/faces/webapp/config-file-1.xml |   318 -
 .../MethodBindingMethodExpressionAdapter.java      |    39 +-
 .../MethodExpressionMethodBindingAdapter.java      |    39 +-
 .../ValueBindingValueExpressionAdapter.java        |    39 +-
 .../ValueExpressionValueBindingAdapter.java        |    38 +-
 jsf-archetype/README.txt                           |   122 +
 .../create-from-project-2.1/nbactions.xml          |   163 +
 .../faces-test-war/create-from-project-2.1/pom.xml |   306 +
 .../com/sun/faces/test/artifactId/UserBean.java    |    92 +
 .../src/main/webapp/WEB-INF/beans.xml              |     9 +
 .../src/main/webapp/WEB-INF/glassfish-web.xml      |    11 +
 .../src/main/webapp/WEB-INF/web.xml                |    69 +
 .../src/main/webapp/index.xhtml                    |    56 +
 .../sun/faces/test/artifactId/AutomatedTestIT.java |   115 +
 .../create-from-project-2.2/nbactions.xml          |   163 +
 .../faces-test-war/create-from-project-2.2/pom.xml |   306 +
 .../com/sun/faces/test/artifactId/UserBean.java    |    92 +
 .../src/main/webapp/WEB-INF/beans.xml              |     9 +
 .../src/main/webapp/WEB-INF/glassfish-web.xml      |    11 +
 .../src/main/webapp/WEB-INF/web.xml                |    69 +
 .../src/main/webapp/index.xhtml                    |    56 +
 .../sun/faces/test/artifactId/AutomatedTestIT.java |   115 +
 .../faces-test-war/install-to-local-repo.sh        |    18 +
 .../faces-test-war/run-after-create-from-project   |    29 +
 .../apply_to_pom.patch                             |   167 +
 .../move-to-parent-directory-or-delete-build.xml   |    95 +
 .../create-from-project-2.1/pom.xml                |    82 +
 .../org/glassfish/javax/faces_war/UserBean.java    |    92 +
 .../src/main/webapp/WEB-INF/beans.xml              |     0
 .../src/main/webapp/WEB-INF/web.xml                |    39 +
 .../src/main/webapp/main.xhtml                     |    14 +
 .../install-to-local-repo.sh                       |    22 +
 jsf-archetype/javax.faces-war/apply_to_pom.patch   |   113 +
 .../move-to-parent-directory-or-delete-build.xml   |    95 +
 .../create-from-project-2.1/pom.xml                |    51 +
 .../org/glassfish/javax/faces_war/UserBean.java    |    92 +
 .../src/main/webapp/WEB-INF/beans.xml              |     0
 .../src/main/webapp/WEB-INF/web.xml                |    39 +
 .../src/main/webapp/main.xhtml                     |    14 +
 .../move-to-parent-directory-or-delete-build.xml   |    95 +
 .../create-from-project-2.2-m12/pom.xml            |    69 +
 .../org/glassfish/javax/faces_war/UserBean.java    |    92 +
 .../src/main/webapp/WEB-INF/beans.xml              |     0
 .../src/main/webapp/WEB-INF/web.xml                |    39 +
 .../src/main/webapp/main.xhtml                     |    14 +
 .../create-from-project-2.2/pom.xml                |    69 +
 .../org/glassfish/javax/faces_war/UserBean.java    |    92 +
 .../src/main/webapp/WEB-INF/beans.xml              |     0
 .../src/main/webapp/WEB-INF/web.xml                |    39 +
 .../src/main/webapp/main.xhtml                     |    14 +
 .../javax.faces-war/install-to-local-repo.sh       |    22 +
 jsf-archetype/simple-jsf/pom.xml                   |    12 +
 .../main/resources/META-INF/maven/archetype.xml    |    13 +
 .../src/main/resources/archetype-resources/pom.xml |    75 +
 .../main/java/com/sun/faces/hello/HelloBean.java   |    67 +
 .../src/main/webapp/WEB-INF/web.xml                |    85 +
 .../composite/simpleCompositeComponent.xhtml       |    15 +
 .../webapp/simpleCompositeComponentUsingPage.xhtml |    19 +
 .../src/main/webapp/submit.xhtml                   |    17 +
 jsf-demo/ajax-component/README.txt                 |    16 +
 jsf-demo/ajax-component/build.xml                  |   120 +
 jsf-demo/ajax-component/pom.xml                    |   191 +
 .../src/main/java/dataholding/Count.java           |    69 +
 .../src/main/java/dataholding/DateHolder.java      |    74 +
 .../src/main/java/dataholding/StringHolder.java    |    76 +
 .../src/main/java/switchlist/DemoResourceBean.java |   326 +
 .../src/main/java/switchlist/Functions.java        |   102 +
 .../src/main/java/switchlist/ListHolder.java       |    53 +
 .../src/main/java/switchlist/ListHolder1.java      |    77 +
 .../src/main/java/switchlist/ListHolder2.java      |    78 +
 .../src/main/java/switchlist/SwitchlistBean.java   |   111 +
 .../main/java/switchlist/SwitchlistController.java |   101 +
 .../src/main/webapp/WEB-INF/demo.xml               |   262 +
 .../src/main/webapp/WEB-INF/demotag-taglib.xml     |    59 +
 .../src/main/webapp/WEB-INF/demotemplate.xhtml     |    61 +
 .../ajax-component/src/main/webapp/WEB-INF/web.xml |    81 +
 .../src/main/webapp/busystatus.xhtml               |    66 +
 .../src/main/webapp/displaysource.xhtml            |    62 +
 .../ajax-component/src/main/webapp/edittext.xhtml  |    64 +
 jsf-demo/ajax-component/src/main/webapp/home.xhtml |   106 +
 jsf-demo/ajax-component/src/main/webapp/index.html |    49 +
 jsf-demo/ajax-component/src/main/webapp/poll.xhtml |    86 +
 .../main/webapp/resources/busystatus/busystatus.js |    58 +
 .../webapp/resources/busystatus/busystatus.xhtml   |    75 +
 .../resources/busystatus/spinner3-greenie.gif      |   Bin 0 -> 3292 bytes
 .../src/main/webapp/resources/editText/editText.js |    99 +
 .../main/webapp/resources/editText/editText.xhtml  |    87 +
 .../src/main/webapp/resources/editText/styles.css  |    54 +
 .../src/main/webapp/resources/images/execute.gif   |   Bin 0 -> 1242 bytes
 .../src/main/webapp/resources/poll/poll.js         |    84 +
 .../src/main/webapp/resources/poll/poll.xhtml      |    70 +
 .../src/main/webapp/resources/poll/polltag.js      |    84 +
 .../src/main/webapp/resources/poll/polltag.xhtml   |    70 +
 .../src/main/webapp/resources/switchlist.css       |    56 +
 .../webapp/resources/switchlist/switchlist.css     |    56 +
 .../webapp/resources/switchlist/switchlist.xhtml   |    82 +
 .../webapp/resources/switchlistajax/switchlist.css |    56 +
 .../resources/switchlistajax/switchlist.xhtml      |    94 +
 .../src/main/webapp/resources/yuical/calendar.js   |   121 +
 .../src/main/webapp/resources/yuical/yuical.xhtml  |    77 +
 .../src/main/webapp/switchlistAjaxComponent.xhtml  |    62 +
 .../src/main/webapp/switchlistAjaxTag.xhtml        |    76 +
 .../src/main/webapp/switchlistComponent.xhtml      |    63 +
 .../src/main/webapp/switchlistPage.xhtml           |    70 +
 .../src/main/webapp/switchlistPageUnstyled.xhtml   |    69 +
 .../ajax-component/src/main/webapp/yuical.xhtml    |    85 +
 jsf-demo/archive/README.txt                        |     7 +
 jsf-demo/archive/carstore/build.xml                |   191 +
 .../carstore/src/java/carstore/CarBean.java        |   589 +
 .../carstore/src/java/carstore/CarCustomizer.java  |   165 +
 .../carstore/src/java/carstore/CarStore.java       |   324 +
 .../src/java/carstore/CreditCardConverter.java     |   149 +
 .../carstore/src/java/carstore/CustomerBean.java   |   197 +
 .../src/java/carstore/FirstNameChanged.java        |    66 +
 .../src/java/carstore/FormatValidator.java         |   294 +
 .../src/java/carstore/FormatValidatorTag.java      |    85 +
 .../carstore/src/java/carstore/MessageFactory.java |   221 +
 .../carstore/bundles/Common_options.properties     |    63 +
 .../src/java/carstore/bundles/Custom.properties    |    61 +
 .../src/java/carstore/bundles/Deluxe.properties    |    61 +
 .../src/java/carstore/bundles/Jalopy.properties    |    48 +
 .../src/java/carstore/bundles/Jalopy_de.properties |    48 +
 .../src/java/carstore/bundles/Jalopy_es.properties |    48 +
 .../src/java/carstore/bundles/Jalopy_fr.properties |    48 +
 .../carstore/bundles/Jalopy_options.properties     |    73 +
 .../src/java/carstore/bundles/Luxury.properties    |    49 +
 .../src/java/carstore/bundles/Luxury_de.properties |    49 +
 .../src/java/carstore/bundles/Luxury_es.properties |    49 +
 .../src/java/carstore/bundles/Luxury_fr.properties |    49 +
 .../carstore/bundles/Luxury_options.properties     |    72 +
 .../src/java/carstore/bundles/Messages.properties  |    43 +
 .../java/carstore/bundles/Messages_de.properties   |    43 +
 .../java/carstore/bundles/Messages_es.properties   |    43 +
 .../java/carstore/bundles/Messages_fr.properties   |    43 +
 .../java/carstore/bundles/OptionPrices.properties  |    61 +
 .../java/carstore/bundles/Performance.properties   |    61 +
 .../src/java/carstore/bundles/Resources.properties |   121 +
 .../java/carstore/bundles/Resources_de.properties  |   118 +
 .../java/carstore/bundles/Resources_en.properties  |   121 +
 .../java/carstore/bundles/Resources_es.properties  |   189 +
 .../java/carstore/bundles/Resources_fr.properties  |   118 +
 .../src/java/carstore/bundles/Roadster.properties  |    48 +
 .../java/carstore/bundles/Roadster_de.properties   |    49 +
 .../java/carstore/bundles/Roadster_es.properties   |    46 +
 .../java/carstore/bundles/Roadster_fr.properties   |    48 +
 .../carstore/bundles/Roadster_options.properties   |    73 +
 .../src/java/carstore/bundles/SUV.properties       |    49 +
 .../src/java/carstore/bundles/SUV_de.properties    |    49 +
 .../src/java/carstore/bundles/SUV_es.properties    |    49 +
 .../src/java/carstore/bundles/SUV_fr.properties    |    49 +
 .../java/carstore/bundles/SUV_options.properties   |    72 +
 .../src/java/carstore/bundles/Standard.properties  |    61 +
 .../carstore/src/java/carstore/package.html        |    84 +
 jsf-demo/archive/carstore/web/WEB-INF/carstore.tld |    83 +
 .../archive/carstore/web/WEB-INF/faces-config.xml  |   374 +
 jsf-demo/archive/carstore/web/WEB-INF/web.xml      |   146 +
 jsf-demo/archive/carstore/web/bottomMatter.jsp     |    51 +
 jsf-demo/archive/carstore/web/carDetail.jsp        |   119 +
 jsf-demo/archive/carstore/web/chooseLocale.jsp     |   186 +
 jsf-demo/archive/carstore/web/confirmChoices.jsp   |   165 +
 jsf-demo/archive/carstore/web/customerInfo.jsp     |   226 +
 jsf-demo/archive/carstore/web/finish.jsp           |    76 +
 .../archive/carstore/web/images/150x126_Jalopy.jpg |   Bin 0 -> 19213 bytes
 .../archive/carstore/web/images/150x126_Luxury.jpg |   Bin 0 -> 37392 bytes
 .../carstore/web/images/150x126_Roadster.jpg       |   Bin 0 -> 24141 bytes
 .../archive/carstore/web/images/150x126_SUV.jpg    |   Bin 0 -> 25386 bytes
 .../archive/carstore/web/images/200x168_Jalopy.jpg |   Bin 0 -> 25971 bytes
 .../archive/carstore/web/images/200x168_Luxury.jpg |   Bin 0 -> 42176 bytes
 .../carstore/web/images/200x168_Roadster.jpg       |   Bin 0 -> 30895 bytes
 .../archive/carstore/web/images/200x168_SUV.jpg    |   Bin 0 -> 38918 bytes
 jsf-demo/archive/carstore/web/images/BuyBtn.gif    |   Bin 0 -> 1699 bytes
 jsf-demo/archive/carstore/web/images/FinishBtn.gif |   Bin 0 -> 1810 bytes
 jsf-demo/archive/carstore/web/images/MoreBtn.gif   |   Bin 0 -> 1858 bytes
 jsf-demo/archive/carstore/web/images/cardemo.jpg   |   Bin 0 -> 47830 bytes
 jsf-demo/archive/carstore/web/images/current.gif   |   Bin 0 -> 17792 bytes
 .../archive/carstore/web/images/duke.gif           |   Bin
 jsf-demo/archive/carstore/web/images/world.jpg     |   Bin 0 -> 61499 bytes
 .../archive/carstore/web/images/world_france.jpg   |   Bin 0 -> 61649 bytes
 .../archive/carstore/web/images/world_germany.jpg  |   Bin 0 -> 61667 bytes
 .../archive/carstore/web/images/world_namer.jpg    |   Bin 0 -> 62606 bytes
 .../archive/carstore/web/images/world_samer.jpg    |   Bin 0 -> 63308 bytes
 jsf-demo/archive/carstore/web/index.jsp            |    52 +
 jsf-demo/archive/carstore/web/javadocs/beans.jpg   |   Bin 0 -> 56638 bytes
 jsf-demo/archive/carstore/web/javadocs/data.jpg    |   Bin 0 -> 67910 bytes
 jsf-demo/archive/carstore/web/javadocs/flow.jpg    |   Bin 0 -> 43563 bytes
 jsf-demo/archive/carstore/web/optionsPanel.jsp     |   166 +
 jsf-demo/archive/carstore/web/storeFront.jsp       |   138 +
 jsf-demo/archive/carstore/web/stylesheet.css       |   171 +
 jsf-demo/archive/components/build.xml              |   160 +
 .../components/src/java/demo/model/ChartBean.java  |   135 +
 .../src/java/demo/model/CustomerBean.java          |   132 +
 .../components/src/java/demo/model/GraphBean.java  |   226 +
 .../src/java/demo/model/ProcessBean.java           |    95 +
 .../src/java/demo/model/RepeaterBean.java          |   426 +
 .../src/java/demo/model/Resource.properties        |    42 +
 .../src/java/demo/model/Resources.properties       |    54 +
 .../src/java/demo/model/Resources_de.properties    |    55 +
 .../src/java/demo/model/Resources_en.properties    |    55 +
 .../src/java/demo/model/Resources_es.properties    |    55 +
 .../src/java/demo/model/Resources_fi.properties    |    55 +
 .../src/java/demo/model/Resources_fr.properties    |    55 +
 .../src/java/demo/model/ResultSetBean.java         |   179 +
 .../src/java/demo/taglib/EscapeHtmlTag.java        |   207 +
 jsf-demo/archive/components/web/ShowSource.jsp     |    80 +
 .../components/web/WEB-INF/faces-config.xml        |   308 +
 .../archive/components/web/WEB-INF/tlds/demo.tld   |    79 +
 jsf-demo/archive/components/web/WEB-INF/web.xml    |   138 +
 jsf-demo/archive/components/web/ajaxValidator.jsp  |    92 +
 jsf-demo/archive/components/web/chart.jsp          |   202 +
 jsf-demo/archive/components/web/complete.jsp       |    66 +
 jsf-demo/archive/components/web/demo-test.jsp      |    71 +
 jsf-demo/archive/components/web/imagemap.jsp       |   188 +
 .../archive/components/web/images/arrow-left.gif   |   Bin 0 -> 65 bytes
 .../archive/components/web/images/arrow-right.gif  |   Bin 0 -> 65 bytes
 jsf-demo/archive/components/web/images/code.gif    |   Bin 0 -> 292 bytes
 .../archive/components/web/images/duke.gif         |   Bin
 jsf-demo/archive/components/web/images/execute.gif |   Bin 0 -> 1242 bytes
 .../components/web/images/folder_16_pad.gif        |   Bin 0 -> 862 bytes
 .../components/web/images/handledownlast.gif       |   Bin 0 -> 145 bytes
 .../components/web/images/handledownmiddle.gif     |   Bin 0 -> 145 bytes
 .../components/web/images/handlerightlast.gif      |   Bin 0 -> 142 bytes
 .../components/web/images/handlerightmiddle.gif    |   Bin 0 -> 146 bytes
 .../archive/components/web/images/linelastnode.gif |   Bin 0 -> 78 bytes
 .../components/web/images/linemiddlenode.gif       |   Bin 0 -> 83 bytes
 .../archive/components/web/images/linevertical.gif |   Bin 0 -> 81 bytes
 jsf-demo/archive/components/web/images/world.gif   |   Bin 0 -> 4171 bytes
 .../components/web/images/world_finland.gif        |   Bin 0 -> 797 bytes
 .../archive/components/web/images/world_france.gif |   Bin 0 -> 3487 bytes
 .../components/web/images/world_germany.gif        |   Bin 0 -> 3700 bytes
 .../archive/components/web/images/world_namer.gif  |   Bin 0 -> 5174 bytes
 .../archive/components/web/images/world_samer.gif  |   Bin 0 -> 4872 bytes
 jsf-demo/archive/components/web/index.jsp          |   261 +
 jsf-demo/archive/components/web/menu.jsp           |   227 +
 jsf-demo/archive/components/web/progressbar.jsp    |    69 +
 jsf-demo/archive/components/web/repeater.jsp       |   304 +
 jsf-demo/archive/components/web/result-set.css     |   148 +
 jsf-demo/archive/components/web/result-set.jsp     |   255 +
 jsf-demo/archive/components/web/stylesheet.css     |   148 +
 jsf-demo/archive/components/web/tabbedpanes.jsp    |   224 +
 jsf-demo/archive/components/web/tabbedpanes3.jsp   |    54 +
 .../archive/components/web/tree-control-test.css   |    59 +
 jsf-demo/archive/components/web/wait.jsp           |    74 +
 jsf-demo/archive/guessNumber/build.xml             |   132 +
 .../src/java/guessNumber/MessageFactory.java       |   351 +
 .../src/java/guessNumber/UserNumberBean.java       |   227 +
 .../guessNumber/web/WEB-INF/faces-config.xml       |   115 +
 jsf-demo/archive/guessNumber/web/WEB-INF/web.xml   |   106 +
 jsf-demo/archive/guessNumber/web/greeting.jsp      |    87 +
 jsf-demo/archive/guessNumber/web/index.jsp         |    69 +
 .../guessNumber/web/resources/images/wave.med.gif  |   Bin 0 -> 3000 bytes
 jsf-demo/archive/guessNumber/web/response.jsp      |    78 +
 jsf-demo/archive/helloDuke/build.xml               |   131 +
 .../helloDuke/src/helloDuke/UserNameBean.java      |    64 +
 .../archive/helloDuke/web/WEB-INF/faces-config.xml |    78 +
 jsf-demo/archive/helloDuke/web/WEB-INF/web.xml     |    73 +
 jsf-demo/archive/helloDuke/web/greeting.jsp        |    61 +
 jsf-demo/archive/helloDuke/web/index.html          |    58 +
 jsf-demo/archive/helloDuke/web/response.jsp        |    57 +
 jsf-demo/archive/helloDuke/web/wave.med.gif        |   Bin 0 -> 3000 bytes
 jsf-demo/archive/j2meDemo/build.properties.sample  |    89 +
 jsf-demo/archive/j2meDemo/build.xml                |   144 +
 .../archive/j2meDemo/midlet/AbstractMIDlet.java    |    54 +
 .../archive/j2meDemo/midlet/ConnectionManager.java |   252 +
 .../archive/j2meDemo/midlet/TicTacToeMIDlet.java   |   343 +
 .../j2meDemo/src/java/j2meDemo/messages.properties |    43 +
 .../j2meDemo/src/java/j2meDemo/model/Game.java     |    65 +
 .../src/java/j2meDemo/model/GameBoard.java         |   227 +
 .../src/java/j2meDemo/model/SetupForm.java         |   109 +
 .../java/j2meDemo/renderkit/ChoiceRenderer.java    |   117 +
 .../java/j2meDemo/renderkit/CommandRenderer.java   |    63 +
 .../src/java/j2meDemo/renderkit/FormRenderer.java  |    89 +
 .../java/j2meDemo/renderkit/GameBoardRenderer.java |   144 +
 .../src/java/j2meDemo/renderkit/TextRenderer.java  |    76 +
 .../src/java/j2meDemo/taglib/CommandTag.java       |    51 +
 .../j2meDemo/src/java/j2meDemo/taglib/FormTag.java |    51 +
 .../src/java/j2meDemo/taglib/GameBoardTag.java     |    82 +
 .../src/java/j2meDemo/taglib/InputTag.java         |    52 +
 .../src/java/j2meDemo/taglib/J2meComponentTag.java |    92 +
 .../src/java/j2meDemo/taglib/OutputTag.java        |    52 +
 .../src/java/j2meDemo/taglib/SelectOneTag.java     |    52 +
 .../java/j2meDemo/util/ConstantMethodBinding.java  |    96 +
 .../j2meDemo/src/java/j2meDemo/util/Util.java      |   404 +
 .../archive/j2meDemo/web/WEB-INF/faces-config.xml  |   150 +
 .../archive/j2meDemo/web/WEB-INF/tlds/j2meDemo.tld |   126 +
 jsf-demo/archive/j2meDemo/web/WEB-INF/web.xml      |    70 +
 jsf-demo/archive/j2meDemo/web/draw.jsp             |    53 +
 jsf-demo/archive/j2meDemo/web/lost.jsp             |    53 +
 jsf-demo/archive/j2meDemo/web/play.jsp             |    52 +
 jsf-demo/archive/j2meDemo/web/start.jsp            |    57 +
 jsf-demo/archive/j2meDemo/web/stylesheet.css       |    71 +
 jsf-demo/archive/j2meDemo/web/won.jsp              |    53 +
 jsf-demo/archive/mojarra_ext/build.xml             |   124 +
 .../src/java/mojarra_ext/BackingBean.java          |    59 +
 .../mojarra_ext/web/WEB-INF/faces-config.xml       |    82 +
 jsf-demo/archive/mojarra_ext/web/WEB-INF/web.xml   |    77 +
 jsf-demo/archive/mojarra_ext/web/landing.jsp       |    78 +
 jsf-demo/archive/mojarra_ext/web/landing.xhtml     |    75 +
 jsf-demo/archive/mojarra_ext/web/welcome.jsp       |    76 +
 jsf-demo/archive/mojarra_ext/web/welcome.xhtml     |    71 +
 jsf-demo/archive/nonjsp/build.xml                  |   133 +
 .../nonjsp/application/BuildComponentFromTag.java  |    85 +
 .../application/BuildComponentFromTagImpl.java     |   448 +
 .../nonjsp/application/ConstantMethodBinding.java  |    96 +
 .../nonjsp/application/XmlDialectProvider.java     |    67 +
 .../src/java/nonjsp/application/XmlXulRuleSet.java |   281 +
 .../nonjsp/application/XulDialectProvider.java     |   105 +
 .../nonjsp/application/XulViewHandlerImpl.java     |   434 +
 .../lifecycle/XulServletContextListener.java       |   114 +
 .../src/java/nonjsp/taglib/EscapeHtmlTag.java      |   209 +
 .../nonjsp/src/java/nonjsp/util/RIConstants.java   |    65 +
 .../archive/nonjsp/src/java/nonjsp/util/Util.java  |   117 +
 jsf-demo/archive/nonjsp/web/ShowSource.jsp         |    80 +
 .../archive/nonjsp/web/WEB-INF/faces-config.xml    |    57 +
 .../archive/nonjsp/web/WEB-INF/tlds/nonjsp.tld     |    39 +
 jsf-demo/archive/nonjsp/web/WEB-INF/web.xml        |    88 +
 jsf-demo/archive/nonjsp/web/helloDuke.xul          |    54 +
 jsf-demo/archive/nonjsp/web/hi.xul                 |    52 +
 jsf-demo/archive/nonjsp/web/images/code.gif        |   Bin 0 -> 292 bytes
 jsf-demo/archive/nonjsp/web/images/execute.gif     |   Bin 0 -> 1242 bytes
 jsf-demo/archive/nonjsp/web/images/wave.med.gif    |   Bin 0 -> 3000 bytes
 jsf-demo/archive/nonjsp/web/index.jsp              |   171 +
 jsf-demo/archive/nonjsp/web/label.xul              |    52 +
 jsf-demo/archive/nonjsp/web/textField.xul          |    59 +
 jsf-demo/archive/renderkits/README                 |    29 +
 jsf-demo/archive/renderkits/build.xml              |   170 +
 .../archive/renderkits/src/conf/faces-config.xml   |   369 +
 .../src/java/demo/model/Resources.properties       |    91 +
 .../src/java/renderkits/components/svg/Line.java   |    69 +
 .../java/renderkits/components/svg/Rectangle.java  |    69 +
 .../src/java/renderkits/components/svg/Shape.java  |    52 +
 .../java/renderkits/renderkit/SerializedView.java  |    66 +
 .../renderkits/renderkit/svg/BaseRenderer.java     |    91 +
 .../renderkits/renderkit/svg/ButtonRenderer.java   |   267 +
 .../renderkits/renderkit/svg/FormRenderer.java     |   297 +
 .../renderkits/renderkit/svg/LineRenderer.java     |   166 +
 .../renderkit/svg/RectangleRenderer.java           |   184 +
 .../renderkit/svg/ResponsePhaseListener.java       |    93 +
 .../renderkits/renderkit/svg/SVGRenderKit.java     |   284 +
 .../renderkit/svg/SVGResponseStateManager.java     |   332 +
 .../renderkit/svg/SVGResponseWriter.java           |   553 +
 .../renderkits/renderkit/svg/TextRenderer.java     |   213 +
 .../renderkits/renderkit/xul/BaseRenderer.java     |   324 +
 .../renderkits/renderkit/xul/ButtonRenderer.java   |   226 +
 .../renderkits/renderkit/xul/FormRenderer.java     |   293 +
 .../renderkits/renderkit/xul/GridRenderer.java     |   343 +
 .../renderkits/renderkit/xul/GroupRenderer.java    |   205 +
 .../renderkits/renderkit/xul/LabelRenderer.java    |   316 +
 .../renderkit/xul/ResponsePhaseListener.java       |    93 +
 .../renderkits/renderkit/xul/TextRenderer.java     |   173 +
 .../renderkits/renderkit/xul/XULRenderKit.java     |   280 +
 .../renderkit/xul/XULResponseStateManager.java     |   332 +
 .../renderkit/xul/XULResponseWriter.java           |   552 +
 .../renderkits/taglib/svg/CommandButtonTag.java    |   514 +
 .../src/java/renderkits/taglib/svg/FormTag.java    |   290 +
 .../src/java/renderkits/taglib/svg/LineTag.java    |   314 +
 .../java/renderkits/taglib/svg/OutputTextTag.java  |   312 +
 .../java/renderkits/taglib/svg/RectangleTag.java   |   348 +
 .../renderkits/taglib/xul/CommandButtonTag.java    |   376 +
 .../src/java/renderkits/taglib/xul/FormTag.java    |   290 +
 .../java/renderkits/taglib/xul/OutputLabelTag.java |   472 +
 .../java/renderkits/taglib/xul/OutputTextTag.java  |   202 +
 .../java/renderkits/taglib/xul/PanelGridTag.java   |   389 +
 .../java/renderkits/taglib/xul/PanelGroupTag.java  |   180 +
 .../src/java/renderkits/util/Base64.java           |   389 +
 .../src/java/renderkits/util/ByteArrayGuard.java   |   393 +
 .../renderkits/src/java/renderkits/util/Util.java  |   498 +
 jsf-demo/archive/renderkits/src/script/http-svg.es |   158 +
 jsf-demo/archive/renderkits/src/script/http-xul.es |   157 +
 .../archive/renderkits/src/script/lifecycle.es     |   333 +
 .../archive/renderkits/web/WEB-INF/tlds/svg.tld    |  1468 ++
 .../archive/renderkits/web/WEB-INF/tlds/xul.tld    |  1920 +++
 jsf-demo/archive/renderkits/web/WEB-INF/web.xml    |   117 +
 jsf-demo/archive/renderkits/web/html.css           |    42 +
 jsf-demo/archive/renderkits/web/html.jsp           |    79 +
 jsf-demo/archive/renderkits/web/index.jsp          |    63 +
 jsf-demo/archive/renderkits/web/life-demo.gif      |   Bin 0 -> 24763 bytes
 .../archive/renderkits/web/lifecycle-pages.gif     |   Bin 0 -> 4744 bytes
 jsf-demo/archive/renderkits/web/svg.jsp            |   166 +
 jsf-demo/archive/renderkits/web/xul-apply.jsp      |    80 +
 jsf-demo/archive/renderkits/web/xul-invoke.jsp     |    77 +
 jsf-demo/archive/renderkits/web/xul-render.jsp     |    79 +
 jsf-demo/archive/renderkits/web/xul-restore.jsp    |    81 +
 jsf-demo/archive/renderkits/web/xul-update.jsp     |    78 +
 jsf-demo/archive/renderkits/web/xul-valid.jsp      |    78 +
 jsf-demo/archive/renderkits/web/xul.css            |    48 +
 jsf-demo/archive/standard/build.xml                |   132 +
 .../standard/src/standard/CustomerBean.java        |   138 +
 .../standard/src/standard/DataModelBean.java       |   169 +
 .../standard/src/standard/DefaultListener.java     |    74 +
 .../archive/standard/src/standard/ListBean.java    |    61 +
 .../src/standard/LogValueChangedListener.java      |    83 +
 .../archive/standard/src/standard/LoginBean.java   |   508 +
 .../archive/standard/src/standard/LoginForm.java   |   104 +
 .../archive/standard/src/standard/ModelBean.java   |   194 +
 .../standard/src/standard/MyPhaseListener.java     |    69 +
 .../standard/src/standard/Resources.properties     |    46 +
 .../standard/src/standard/Resources_de.properties  |    46 +
 .../src/standard/Resources_en_US.properties        |    46 +
 .../standard/src/standard/SelectItemsData.java     |   166 +
 .../standard/src/standard/SelectManyBean.java      |   318 +
 .../standard/src/standard/SelectManyConverter.java |    70 +
 .../src/standard/SelectManyRegistered.java         |    81 +
 .../src/standard/SelectManyUnregistered.java       |    81 +
 .../archive/standard/src/standard/UIDataBean.java  |   477 +
 jsf-demo/archive/standard/web/DataModel.jsp        |   108 +
 jsf-demo/archive/standard/web/Standard_Thanks.jsp  |    79 +
 jsf-demo/archive/standard/web/UICommand.jsp        |    94 +
 jsf-demo/archive/standard/web/UIData.jsp           |   294 +
 jsf-demo/archive/standard/web/UIDataClick.jsp      |    97 +
 jsf-demo/archive/standard/web/UIGraphic.jsp        |    95 +
 jsf-demo/archive/standard/web/UIInput.jsp          |   117 +
 jsf-demo/archive/standard/web/UIOutput.jsp         |   115 +
 jsf-demo/archive/standard/web/UIPanel.jsp          |    88 +
 jsf-demo/archive/standard/web/UISelectBoolean.jsp  |    94 +
 jsf-demo/archive/standard/web/UISelectMany.jsp     |   101 +
 jsf-demo/archive/standard/web/UISelectOne.jsp      |    99 +
 .../standard/web/WEB-INF/NavigationConfig.xml      |    88 +
 .../archive/standard/web/WEB-INF/faces-config.xml  |   132 +
 jsf-demo/archive/standard/web/WEB-INF/web.xml      |    91 +
 .../archive/standard/web/command_button_row.jsp    |   164 +
 jsf-demo/archive/standard/web/command_link_row.jsp |   148 +
 .../archive/standard/web/duke.gif                  |   Bin
 .../archive/standard/web/graphic_image_row.jsp     |   108 +
 jsf-demo/archive/standard/web/index.jsp            |    94 +
 jsf-demo/archive/standard/web/input_date_row.jsp   |   168 +
 .../archive/standard/web/input_datetime_row.jsp    |    75 +
 jsf-demo/archive/standard/web/input_hidden_row.jsp |   107 +
 jsf-demo/archive/standard/web/input_number_row.jsp |   197 +
 jsf-demo/archive/standard/web/input_secret_row.jsp |   159 +
 jsf-demo/archive/standard/web/input_text_row.jsp   |   159 +
 .../archive/standard/web/input_textarea_row.jsp    |   153 +
 jsf-demo/archive/standard/web/input_time_row.jsp   |   101 +
 jsf-demo/archive/standard/web/output_date_row.jsp  |   150 +
 .../archive/standard/web/output_datetime_row.jsp   |    95 +
 .../archive/standard/web/output_message_row.jsp    |    91 +
 .../archive/standard/web/output_number_row.jsp     |   171 +
 jsf-demo/archive/standard/web/output_text_row.jsp  |   113 +
 jsf-demo/archive/standard/web/output_time_row.jsp  |    92 +
 jsf-demo/archive/standard/web/panel_grid_row.jsp   |   185 +
 .../standard/web/selectboolean_checkbox_row.jsp    |   124 +
 .../standard/web/selectmany_checkbox_row.jsp       |   161 +
 .../standard/web/selectmany_listbox_row.jsp        |   119 +
 .../archive/standard/web/selectmany_menu_row.jsp   |   118 +
 .../standard/web/selectmany_nonstring_row.jsp      |   176 +
 .../archive/standard/web/selectone_listbox_row.jsp |   156 +
 .../archive/standard/web/selectone_menu_row.jsp    |   102 +
 .../archive/standard/web/selectone_radio_row.jsp   |   189 +
 jsf-demo/archive/standard/web/stylesheet.css       |   155 +
 jsf-demo/archive/standard/web/table_header.jsp     |    68 +
 jsf-demo/archive/webtier-sample/README             |    21 +
 jsf-demo/archive/webtier-sample/build.xml          |   132 +
 .../src/java/webtiersample/BookBean.java           |    98 +
 .../src/java/webtiersample/BooksBean.java          |    83 +
 .../src/java/webtiersample/ColorELResolver.java    |   239 +
 .../java/webtiersample/ColorImplicitObject.java    |   231 +
 .../java/webtiersample/InstallColorListener.java   |    89 +
 .../web/WEB-INF/classes/webtiersample/rgb.txt      |   753 ++
 .../webtier-sample/web/WEB-INF/faces-config.xml    |    55 +
 .../archive/webtier-sample/web/WEB-INF/web.xml     |    62 +
 jsf-demo/archive/webtier-sample/web/index.jsp      |    49 +
 .../archive/webtier-sample/web/webtiersample.jsp   |   136 +
 jsf-demo/basic-ajax/README.txt                     |    14 +
 jsf-demo/basic-ajax/build.xml                      |   125 +
 jsf-demo/basic-ajax/pom.xml                        |   191 +
 .../basic-ajax/src/main/java/basicajax/Count.java  |    64 +
 .../src/main/java/basicajax/DemoResourceBean.java  |   330 +
 .../basic-ajax/src/main/java/basicajax/Echo.java   |    71 +
 .../src/main/java/basicajax/Functions.java         |   103 +
 .../src/main/java/basicajax/HideNShow.java         |    66 +
 .../src/main/java/basicajax/ListenerBean.java      |    77 +
 .../src/main/java/basicajax/RedirectBean.java      |    85 +
 .../src/main/webapp/WEB-INF/basicajax-taglib.xml   |    65 +
 .../basic-ajax/src/main/webapp/WEB-INF/demo.xml    |   173 +
 .../src/main/webapp/WEB-INF/demotemplate.xhtml     |    61 +
 .../basic-ajax/src/main/webapp/WEB-INF/web.xml     |    89 +
 .../basic-ajax/src/main/webapp/aggregate.xhtml     |    74 +
 jsf-demo/basic-ajax/src/main/webapp/count.xhtml    |    73 +
 .../basic-ajax/src/main/webapp/displaysource.xhtml |    62 +
 jsf-demo/basic-ajax/src/main/webapp/echo1.xhtml    |    76 +
 jsf-demo/basic-ajax/src/main/webapp/echo2.xhtml    |    73 +
 .../basic-ajax/src/main/webapp/hidenshow.xhtml     |    77 +
 jsf-demo/basic-ajax/src/main/webapp/home.xhtml     |   106 +
 jsf-demo/basic-ajax/src/main/webapp/index.html     |    47 +
 jsf-demo/basic-ajax/src/main/webapp/listener.xhtml |    70 +
 jsf-demo/basic-ajax/src/main/webapp/redirect.xhtml |    66 +
 .../src/main/webapp/redirecttarget1.xhtml          |    58 +
 .../src/main/webapp/redirecttarget2.xhtml          |    58 +
 .../src/main/webapp/redirecttarget3.xhtml          |    58 +
 .../src/main/webapp/resources/images/execute.gif   |   Bin 0 -> 1242 bytes
 .../main/webapp/resources/javascript/aggregate.js  |    65 +
 .../src/main/webapp/resources/javascript/echo1.js  |    61 +
 jsf-demo/basic-ezcomp/README.txt                   |    16 +
 jsf-demo/basic-ezcomp/build.xml                    |   121 +
 jsf-demo/basic-ezcomp/pom.xml                      |   191 +
 .../src/main/java/ezcomp/ActionCaller.java         |    64 +
 .../src/main/java/ezcomp/DemoResourceBean.java     |   326 +
 .../src/main/java/ezcomp/Functions.java            |   102 +
 .../src/main/java/ezcomp/InOutBean.java            |    95 +
 .../src/main/java/ezcomp/MultiNumberHolder.java    |    72 +
 .../src/main/java/ezcomp/NavigationHandler.java    |    75 +
 .../src/main/java/ezcomp/NumberHolder.java         |    62 +
 .../basic-ezcomp/src/main/webapp/WEB-INF/demo.xml  |   223 +
 .../src/main/webapp/WEB-INF/demotemplate.xhtml     |    61 +
 .../src/main/webapp/WEB-INF/ezcomp-taglib.xml      |    58 +
 .../basic-ezcomp/src/main/webapp/WEB-INF/web.xml   |    90 +
 .../src/main/webapp/actionListener.xhtml           |    76 +
 .../basic-ezcomp/src/main/webapp/contract.xhtml    |    79 +
 .../src/main/webapp/displaysource.xhtml            |    62 +
 jsf-demo/basic-ezcomp/src/main/webapp/index.html   |    47 +
 jsf-demo/basic-ezcomp/src/main/webapp/index.xhtml  |   106 +
 jsf-demo/basic-ezcomp/src/main/webapp/inout.xhtml  |    78 +
 jsf-demo/basic-ezcomp/src/main/webapp/inout2.xhtml |    70 +
 jsf-demo/basic-ezcomp/src/main/webapp/nav1.xhtml   |    79 +
 jsf-demo/basic-ezcomp/src/main/webapp/nav2.xhtml   |    79 +
 jsf-demo/basic-ezcomp/src/main/webapp/out.xhtml    |    83 +
 .../webapp/resources/action/actionButton.xhtml     |    67 +
 .../main/webapp/resources/css/spinnerStyled.xhtml  |    68 +
 .../src/main/webapp/resources/css/styles.css       |    74 +
 .../src/main/webapp/resources/images/execute.gif   |   Bin 0 -> 1242 bytes
 .../src/main/webapp/resources/navbutton/nav.xhtml  |    62 +
 .../webapp/resources/simplecontract/double.xhtml   |    76 +
 .../main/webapp/resources/simpleinout/inout.xhtml  |    72 +
 .../src/main/webapp/resources/simpleout/out.xhtml  |    70 +
 .../main/webapp/resources/spinner/spinner.xhtml    |    76 +
 .../main/webapp/resources/spinnerFinal/spinner.css |    54 +
 .../main/webapp/resources/spinnerFinal/spinner.js  |    58 +
 .../webapp/resources/spinnerFinal/spinner.xhtml    |    72 +
 .../webapp/resources/spinnerStyled/spinner.css     |    54 +
 .../webapp/resources/spinnerStyled/spinner.xhtml   |    77 +
 .../resources/spinnerStyled/spinnerStyled.css      |    43 +
 .../basic-ezcomp/src/main/webapp/spinner.xhtml     |    65 +
 .../src/main/webapp/spinnerFinal.xhtml             |    73 +
 .../src/main/webapp/spinnerStyled.xhtml            |    65 +
 jsf-demo/bean-validator/README.txt                 |    15 +
 jsf-demo/bean-validator/build.xml                  |   144 +
 jsf-demo/bean-validator/pom.xml                    |   195 +
 .../beanvalidation/DefaultValidatorsReport.java    |    69 +
 .../src/main/java/beanvalidation/UserBean.java     |   156 +
 .../beanvalidation/constraints/CreditCard.java     |    65 +
 .../constraints/CreditCardConstraintValidator.java |    95 +
 .../java/beanvalidation/constraints/Email.java     |    63 +
 .../constraints/EmailConstraintValidator.java      |    66 +
 .../src/main/java/beanvalidation/groups/Order.java |    45 +
 .../main/java/beanvalidation/groups/Personal.java  |    45 +
 .../src/main/resources/FacesMessages.properties    |    75 +
 .../src/main/resources/Messages.properties         |    76 +
 .../resources/ValidationMessages_en.properties     |    84 +
 .../resources/ValidationMessages_fr.properties     |    84 +
 .../src/main/webapp/WEB-INF/faces-config.xml       |    72 +
 .../src/main/webapp/WEB-INF/fragments/form.xhtml   |    74 +
 .../bean-validator/src/main/webapp/WEB-INF/web.xml |    76 +
 .../src/main/webapp/confirmation.xhtml             |    55 +
 .../src/main/webapp/creditCard.xhtml               |    72 +
 jsf-demo/bean-validator/src/main/webapp/home.xhtml |    76 +
 .../src/main/webapp/placeOrder.xhtml               |    62 +
 .../bean-validator/src/main/webapp/register.xhtml  |    60 +
 jsf-demo/build-tests.xml                           |   242 +
 jsf-demo/build.xml                                 |   422 +
 jsf-demo/custom-bean-scope/README.txt              |     6 +
 jsf-demo/custom-bean-scope/build.xml               |   135 +
 jsf-demo/custom-bean-scope/pom.xml                 |   191 +
 .../src/main/java/customscope/Bean.java            |    92 +
 .../java/customscope/CustomScopeELResolver.java    |   197 +
 .../src/main/webapp/WEB-INF/faces-config.xml       |    55 +
 .../src/main/webapp/WEB-INF/web.xml                |    72 +
 .../custom-bean-scope/src/main/webapp/custom.xhtml |   101 +
 jsf-demo/custom-tag/README.txt                     |    42 +
 jsf-demo/custom-tag/build.xml                      |   120 +
 jsf-demo/custom-tag/pom.xml                        |   173 +
 .../src/main/java/customtag/AjaxAwareDiv.java      |   123 +
 .../main/java/customtag/MyCustomComponentBean.java |    91 +
 .../src/main/webapp/WEB-INF/custom-taglib.xml      |    54 +
 .../custom-tag/src/main/webapp/WEB-INF/web.xml     |    78 +
 jsf-demo/custom-tag/src/main/webapp/index.xhtml    |    75 +
 jsf-demo/demo.iml                                  |   810 ++
 jsf-demo/guessNumber/README.txt                    |     3 +
 jsf-demo/guessNumber/build.xml                     |   132 +
 jsf-demo/guessNumber/pom.xml                       |   163 +
 .../main/java/guessnumber/ClientSideValidator.java |   116 +
 .../guessnumber/ClientSideValidatorHandler.java    |    95 +
 .../src/main/java/guessnumber/UserNumberBean.java  |   157 +
 .../guessNumber/src/main/webapp/WEB-INF/beans.xml  |     0
 .../src/main/webapp/WEB-INF/glassfish-web.xml      |    10 +
 .../src/main/webapp/WEB-INF/guessnumber.taglib.xml |    59 +
 .../guessNumber/src/main/webapp/WEB-INF/web.xml    |   102 +
 .../guessNumber/src/main/webapp/greeting.xhtml     |   100 +
 .../src/main/webapp/resources/css/styles.css       |    50 +
 .../src/main/webapp/resources/images/wave.med.gif  |   Bin 0 -> 3000 bytes
 .../src/main/webapp/resources/js/validator.js      |    46 +
 .../guessNumber/src/main/webapp/response.xhtml     |    65 +
 jsf-demo/helloworld/README.txt                     |    11 +
 jsf-demo/helloworld/build.xml                      |   120 +
 jsf-demo/helloworld/pom.xml                        |   173 +
 .../src/main/java/helloworld/HelloBean.java        |    57 +
 .../helloworld/src/main/webapp/WEB-INF/web.xml     |    82 +
 jsf-demo/helloworld/src/main/webapp/hello.xhtml    |    59 +
 .../src/main/webapp/resources/wave.med.gif         |   Bin 0 -> 3000 bytes
 jsf-demo/helloworld/src/main/webapp/response.xhtml |    56 +
 jsf-demo/ifnavigation/README.txt                   |     2 +
 jsf-demo/ifnavigation/build.xml                    |   133 +
 jsf-demo/ifnavigation/pom.xml                      |   173 +
 .../src/main/java/ifnavigation/NumberGuess.java    |   142 +
 .../src/main/webapp/WEB-INF/faces-config.xml       |    78 +
 .../ifnavigation/src/main/webapp/WEB-INF/web.xml   |    88 +
 .../ifnavigation/src/main/webapp/gameover.xhtml    |    70 +
 jsf-demo/ifnavigation/src/main/webapp/guess.xhtml  |    66 +
 jsf-demo/ifnavigation/src/main/webapp/home.xhtml   |    60 +
 jsf-demo/pom.xml                                   |    87 +
 jsf-demo/sandbox/OpenAjaxBridge/README             |    10 +
 jsf-demo/sandbox/OpenAjaxBridge/build.xml          |   123 +
 .../OpenAjaxBridge/src/openajaxbridge/Count.java   |    59 +
 .../sandbox/OpenAjaxBridge/web/WEB-INF/web.xml     |    89 +
 jsf-demo/sandbox/OpenAjaxBridge/web/count.xhtml    |    77 +
 jsf-demo/sandbox/OpenAjaxBridge/web/index.html     |    47 +
 .../web/resources/openajaxbridge/OpenAjax.js       |   237 +
 .../web/resources/openajaxbridge/bridge.js         |    57 +
 .../web/resources/openajaxbridge/bridge.xhtml      |    59 +
 .../sandbox/OpenAjaxBridge/web/resources/status.js |    55 +
 jsf-demo/sandbox/README.txt                        |     7 +
 jsf-demo/sandbox/ajax-queue/build.xml              |   121 +
 jsf-demo/sandbox/ajax-queue/pom.xml                |   165 +
 .../src/main/java/ajaxqueue/QueueBean.java         |    69 +
 .../java/ajaxqueue/bundles/Resources.properties    |    41 +
 .../java/ajaxqueue/bundles/Resources_en.properties |    41 +
 .../src/main/webapp/WEB-INF/faces-config.xml       |    61 +
 .../ajax-queue/src/main/webapp/WEB-INF/web.xml     |    86 +
 .../sandbox/ajax-queue/src/main/webapp/home.xhtml  |   250 +
 .../sandbox/ajax-queue/src/main/webapp/index.html  |    47 +
 .../src/main/webapp/resources/bgblack18.jpg        |   Bin 0 -> 12179 bytes
 .../src/main/webapp/resources/button2.gif          |   Bin 0 -> 614 bytes
 .../src/main/webapp/resources/button3.gif          |   Bin 0 -> 6833 bytes
 .../src/main/webapp/resources/stylesheet.css       |    98 +
 .../ajax-queue/src/main/webapp/resources/ui.js     |    86 +
 jsf-demo/sandbox/ajax-request/build.xml            |   132 +
 jsf-demo/sandbox/ajax-request/pom.xml              |   165 +
 .../src/main/java/ajaxrequest/Bean.java            |   149 +
 .../src/main/java/ajaxrequest/Button.java          |    89 +
 .../src/main/java/ajaxrequest/Panel.java           |    83 +
 .../java/ajaxrequest/RequestPhaseListener.java     |   114 +
 .../src/main/java/ajaxrequest/Resources.properties |    41 +
 .../src/main/webapp/META-INF/context.xml           |    44 +
 .../src/main/webapp/WEB-INF/demo.taglib.xml        |    63 +
 .../src/main/webapp/WEB-INF/faces-config.xml       |    76 +
 .../ajax-request/src/main/webapp/WEB-INF/web.xml   |   105 +
 .../ajax-request/src/main/webapp/ajaxrequest.xhtml |    97 +
 .../ajax-request/src/main/webapp/colorKey.xhtml    |    85 +
 .../src/main/webapp/componentMap.xhtml             |    83 +
 .../ajax-request/src/main/webapp/home.xhtml        |    90 +
 .../ajax-request/src/main/webapp/index.html        |    47 +
 .../src/main/webapp/resources/redwaveani.gif       |   Bin 0 -> 43394 bytes
 .../src/main/webapp/resources/stylesheet.css       |   252 +
 jsf-demo/sandbox/ajax-tag/build.xml                |   119 +
 jsf-demo/sandbox/ajax-tag/pom.xml                  |   165 +
 .../main/java/declarativeajax/GreetBehavior.java   |   123 +
 .../src/main/java/declarativeajax/TagBean.java     |   318 +
 .../ajax-tag/src/main/webapp/META-INF/context.xml  |    44 +
 .../src/main/webapp/WEB-INF/behavior-taglib.xml    |    58 +
 .../ajax-tag/src/main/webapp/WEB-INF/web.xml       |   106 +
 .../sandbox/ajax-tag/src/main/webapp/home.xhtml    |   797 ++
 .../sandbox/ajax-tag/src/main/webapp/index.html    |    47 +
 .../src/main/webapp/resources/anim-star-bkgrnd.gif |   Bin 0 -> 14402 bytes
 .../src/main/webapp/resources/stylesheet.css       |   247 +
 jsf-demo/sandbox/cc-metadata/pom.xml               |   205 +
 jsf-demo/sandbox/cc-metadata/profiles.xml          |    60 +
 .../java/jsf2/CompositeComponentMetadataUtils.java |   136 +
 .../src/main/java/jsf2/PrintMetadata.java          |    81 +
 .../classes/META-INF/cc-metadata.taglib.xml        |    69 +
 .../cc-metadata/src/main/webapp/WEB-INF/web.xml    |    77 +
 .../sandbox/cc-metadata/src/main/webapp/main.xhtml |    78 +
 .../src/main/webapp/resources/cc/myComponent.xhtml |   187 +
 jsf-demo/sandbox/custom-tag/build.xml              |   113 +
 jsf-demo/sandbox/custom-tag/pom.xml                |   149 +
 .../facelets/custom/CustomComponentHandler1.java   |    54 +
 .../facelets/custom/CustomComponentHandler2.java   |    64 +
 .../facelets/custom/CustomComponentHandler3.java   |    87 +
 .../facelets/custom/CustomValidatorHandler.java    |    77 +
 .../WEB-INF/classes/META-INF/custom.taglib.xml     |    82 +
 .../custom-tag/src/main/webapp/WEB-INF/web.xml     |    66 +
 .../sandbox/custom-tag/src/main/webapp/index.xhtml |    60 +
 .../demo-standalone/build.properties.sample        |    62 +
 jsf-demo/sandbox/demo-standalone/build.xml         |   111 +
 jsf-demo/sandbox/ezcomp00/build.xml                |   129 +
 jsf-demo/sandbox/ezcomp00/pom.xml                  |   136 +
 jsf-demo/sandbox/ezcomp02/build.xml                |   145 +
 jsf-demo/sandbox/ezcomp02/pom.xml                  |   141 +
 .../java/ezcomp/componentWithBackingJavaClass.java |    55 +
 .../main/webapp/WEB-INF/composite-test.taglib.xml  |    52 +
 .../src/main/webapp/WEB-INF/faces-config.xml       |    82 +
 .../main/webapp/WEB-INF/groovy/model/Bean.groovy   |   106 +
 .../ezcomp02/src/main/webapp/WEB-INF/web.xml       |   128 +
 .../sandbox/ezcomp02/src/main/webapp/index.html    |    47 +
 .../sandbox/ezcomp02/src/main/webapp/index.xhtml   |   107 +
 .../sandbox/ezcomp02/src/main/webapp/page2.xhtml   |    89 +
 .../main/webapp/resources/compositeTest/foo.xhtml  |    69 +
 .../webapp/resources/ezcomp/LoginProductName.png   |   Bin 0 -> 4973 bytes
 .../main/webapp/resources/ezcomp/colorAndMedia.css |  1111 ++
 .../webapp/resources/ezcomp/commontaskssection.css |   262 +
 .../ezcomp/componentWithBackingJavaClass.xhtml     |    69 +
 .../main/webapp/resources/ezcomp/css_master.css    |    47 +
 .../src/main/webapp/resources/ezcomp/css_ns6up.css |   863 ++
 .../src/main/webapp/resources/ezcomp/dot.gif       |   Bin 0 -> 43 bytes
 .../main/webapp/resources/ezcomp/gradlogbot.jpg    |   Bin 0 -> 340 bytes
 .../main/webapp/resources/ezcomp/gradlogsides.jpg  |   Bin 0 -> 368 bytes
 .../src/main/webapp/resources/ezcomp/layout.css    |  1573 +++
 .../webapp/resources/ezcomp/login-backimage.jpg    |   Bin 0 -> 65065 bytes
 .../main/webapp/resources/ezcomp/loginPanel.groovy |    75 +
 .../webapp/resources/ezcomp/loginPanel.properties  |    41 +
 .../main/webapp/resources/ezcomp/loginPanel.xhtml  |   116 +
 .../resources/ezcomp/loginPanelTemplate.xhtml      |   153 +
 .../webapp/resources/ezcomp/primary-enabled.gif    |   Bin 0 -> 93 bytes
 .../main/webapp/resources/ezcomp/primary-roll.gif  |   Bin 0 -> 94 bytes
 .../main/webapp/resources/ezcomp/progressBar.css   |   146 +
 .../src/main/webapp/resources/ezcomp/table2.css    |   138 +
 .../main/webapp/resources/ezcomp/typography.css    |   389 +
 jsf-demo/sandbox/ezcomp03/README.txt               |     1 +
 jsf-demo/sandbox/ezcomp03/build.xml                |   132 +
 jsf-demo/sandbox/ezcomp03/pom.xml                  |   142 +
 .../main/webapp/WEB-INF/composite-test.taglib.xml  |    52 +
 .../src/main/webapp/WEB-INF/faces-config.xml       |    82 +
 .../main/webapp/WEB-INF/groovy/model/Bean.groovy   |   106 +
 .../ezcomp03/src/main/webapp/WEB-INF/web.xml       |   118 +
 .../sandbox/ezcomp03/src/main/webapp/index.html    |    47 +
 .../sandbox/ezcomp03/src/main/webapp/index.xhtml   |   100 +
 .../sandbox/ezcomp03/src/main/webapp/page2.xhtml   |    89 +
 .../main/webapp/resources/compositeTest/foo.xhtml  |    69 +
 .../webapp/resources/ezcomp/LoginProductName.png   |   Bin 0 -> 4973 bytes
 .../main/webapp/resources/ezcomp/colorAndMedia.css |  1111 ++
 .../webapp/resources/ezcomp/commontaskssection.css |   262 +
 .../main/webapp/resources/ezcomp/css_master.css    |    47 +
 .../src/main/webapp/resources/ezcomp/css_ns6up.css |   863 ++
 .../src/main/webapp/resources/ezcomp/dot.gif       |   Bin 0 -> 43 bytes
 .../main/webapp/resources/ezcomp/gradlogbot.jpg    |   Bin 0 -> 340 bytes
 .../main/webapp/resources/ezcomp/gradlogsides.jpg  |   Bin 0 -> 368 bytes
 .../src/main/webapp/resources/ezcomp/layout.css    |  1573 +++
 .../webapp/resources/ezcomp/login-backimage.jpg    |   Bin 0 -> 65065 bytes
 .../main/webapp/resources/ezcomp/loginPanel.groovy |    75 +
 .../webapp/resources/ezcomp/loginPanel.properties  |    41 +
 .../main/webapp/resources/ezcomp/loginPanel.xhtml  |   114 +
 .../resources/ezcomp/loginPanelTemplate.xhtml      |   153 +
 .../webapp/resources/ezcomp/primary-enabled.gif    |   Bin 0 -> 93 bytes
 .../main/webapp/resources/ezcomp/primary-roll.gif  |   Bin 0 -> 94 bytes
 .../main/webapp/resources/ezcomp/progressBar.css   |   146 +
 .../src/main/webapp/resources/ezcomp/table2.css    |   138 +
 .../main/webapp/resources/ezcomp/typography.css    |   389 +
 jsf-demo/sandbox/flow_and_contract/abc/pom.xml     |    42 +
 .../abc/src/main/resources/META-INF/beans.xml      |     9 +
 .../src/main/resources/META-INF/faces-config.xml   |    66 +
 .../src/main/resources/META-INF/flows/abc/a.xhtml  |    28 +
 .../src/main/resources/META-INF/flows/abc/b.xhtml  |    29 +
 .../src/main/resources/META-INF/flows/abc/c.xhtml  |    28 +
 jsf-demo/sandbox/flow_and_contract/app/pom.xml     |    75 +
 .../com/sun/faces/flow_and_contract/UserBean.java  |    31 +
 .../app/src/main/webapp/WEB-INF/beans.xml          |     0
 .../app/src/main/webapp/WEB-INF/glassfish-web.xml  |    52 +
 .../app/src/main/webapp/WEB-INF/web.xml            |    39 +
 .../app/src/main/webapp/main.xhtml                 |    24 +
 .../app/src/main/webapp/mainTemplate.xhtml         |    36 +
 jsf-demo/sandbox/flow_and_contract/cba/pom.xml     |    42 +
 .../cba/src/main/resources/META-INF/beans.xml      |     9 +
 .../src/main/resources/META-INF/faces-config.xml   |    66 +
 .../src/main/resources/META-INF/flows/cba/a.xhtml  |    28 +
 .../src/main/resources/META-INF/flows/cba/b.xhtml  |    29 +
 .../src/main/resources/META-INF/flows/cba/c.xhtml  |    28 +
 jsf-demo/sandbox/flow_and_contract/leftNav/pom.xml |    42 +
 .../META-INF/contracts/leftNav/cssLayout.css       |    61 +
 .../META-INF/contracts/leftNav/default.css         |    29 +
 .../contracts/leftNav/javax.faces.contract.xml     |     0
 .../META-INF/contracts/leftNav/menu.xhtml          |    26 +
 jsf-demo/sandbox/flow_and_contract/pom.xml         |    17 +
 jsf-demo/sandbox/flow_and_contract/topNav/pom.xml  |    42 +
 .../META-INF/contracts/topNav/cssLayout.css        |    61 +
 .../META-INF/contracts/topNav/default.css          |    29 +
 .../contracts/topNav/javax.faces.contract.xml      |     0
 .../resources/META-INF/contracts/topNav/menu.xhtml |    26 +
 jsf-demo/sandbox/groovy-demo/pom.xml               |   139 +
 .../main/java/com/sun/faces/groovy/UserBean.java   |   129 +
 .../src/main/java/com/sun/faces/systest/Name.java  |    81 +
 .../sandbox/groovy-demo/src/main/webapp/README.txt |    61 +
 .../src/main/webapp/WEB-INF/faces-config.xml       |    85 +
 .../src/main/webapp/WEB-INF/groovy-taglib.xml      |    73 +
 .../WEB-INF/groovy/hello/AgeComponent.groovy       |    10 +
 .../webapp/WEB-INF/groovy/hello/HelloBean.groovy   |    32 +
 .../WEB-INF/groovy/hello/MessageOutput.groovy      |    20 +
 .../WEB-INF/groovy/hello/MessageRenderer.groovy    |    38 +
 .../WEB-INF/groovy/hello/NameConverter.groovy      |    27 +
 .../WEB-INF/groovy/hello/NameValidator.groovy      |    22 +
 .../groovy-demo/src/main/webapp/WEB-INF/web.xml    |    92 +
 .../groovy-demo/src/main/webapp/hello.xhtml        |    68 +
 .../groovy-demo/src/main/webapp/index.xhtml        |    56 +
 .../groovy-demo/src/main/webapp/submit.xhtml       |    62 +
 jsf-demo/sandbox/head-body/pom.xml                 |   142 +
 .../src/main/java/headbody/MyComponent.java        |    58 +
 .../src/main/webapp/WEB-INF/demo.taglib.xml        |    57 +
 .../src/main/webapp/WEB-INF/faces-config.xml       |    57 +
 .../head-body/src/main/webapp/WEB-INF/web.xml      |    94 +
 .../sandbox/head-body/src/main/webapp/head.xhtml   |   107 +
 .../sandbox/head-body/src/main/webapp/index.html   |    47 +
 .../head-body/src/main/webapp/noncomp.xhtml        |    59 +
 .../head-body/src/main/webapp/resources/basic.css  |    53 +
 .../src/main/webapp/resources/fancyCheckbox.js     |     5 +
 .../src/main/webapp/resources/form/scriptInForm.js |     5 +
 .../main/webapp/resources/javax.faces/ajaxOne.js   |     5 +
 .../main/webapp/resources/javax.faces/ajaxThree.js |     5 +
 .../main/webapp/resources/javax.faces/ajaxTwo.js   |     5 +
 .../main/webapp/resources/javax.faces/ajaxZero.js  |     5 +
 .../src/main/webapp/resources/mylib/mycomponent.js |   226 +
 .../src/main/webapp/resources/scriptInHead.js      |     5 +
 jsf-demo/sandbox/html5/matrix/README.txt           |    66 +
 jsf-demo/sandbox/html5/matrix/pom.xml              |   126 +
 jsf-demo/sandbox/html5/matrix/run-matrix.sh        |    14 +
 .../src/main/java/matrix/ConfiguratorImpl.java     |    58 +
 .../html5/matrix/src/main/java/matrix/Main.java    |    76 +
 .../html5/matrix/src/main/java/matrix/Matrix.java  |    85 +
 .../html5/matrix/src/main/webapp/WEB-INF/web.xml   |    85 +
 .../html5/matrix/src/main/webapp/index.html        |    48 +
 .../html5/matrix/src/main/webapp/index.xhtml       |   126 +
 .../src/main/webapp/resources/css/Space1.jpg       |   Bin 0 -> 451171 bytes
 .../matrix/src/main/webapp/resources/css/style.css |   103 +
 .../matrix/src/main/webapp/resources/h5/ws.xhtml   |    74 +
 .../matrix/src/main/webapp/resources/js/Matrix.js  |   409 +
 .../matrix/src/main/webapp/resources/js/arrow.gif  |   Bin 0 -> 66 bytes
 .../matrix/src/main/webapp/resources/js/color.js   |     9 +
 .../matrix/src/main/webapp/resources/js/cross.gif  |   Bin 0 -> 83 bytes
 .../matrix/src/main/webapp/resources/js/hs.png     |   Bin 0 -> 2684 bytes
 .../matrix/src/main/webapp/resources/js/hv.png     |   Bin 0 -> 2865 bytes
 .../matrix/src/main/webapp/resources/js/jscolor.js |   995 ++
 .../matrix/src/main/webapp/resources/js/jsf-ws.js  |   106 +
 .../webapp/resources/js/modernizr.custom.70435.js  |   815 ++
 jsf-demo/sandbox/jsf-forum/build.xml               |   113 +
 .../sandbox/jsf-forum/nbproject/ant-deploy.xml     |    60 +
 .../sandbox/jsf-forum/nbproject/build-impl.xml     |   844 ++
 .../jsf-forum/nbproject/faces-config.NavData       |     6 +
 .../jsf-forum/nbproject/genfiles.properties        |    48 +
 .../sandbox/jsf-forum/nbproject/project.properties |   110 +
 jsf-demo/sandbox/jsf-forum/nbproject/project.xml   |    18 +
 jsf-demo/sandbox/jsf-forum/src/conf/MANIFEST.MF    |     2 +
 .../sandbox/jsf-forum/src/conf/persistence.xml     |    52 +
 jsf-demo/sandbox/jsf-forum/src/conf/tableSetup.sql |    30 +
 .../sun/faces/demo/controller/ForumController.java |    90 +
 .../faces/demo/controller/MessageController.java   |   157 +
 .../faces/demo/controller/ThreadController.java    |   223 +
 .../sun/faces/demo/controller/TopicController.java |   173 +
 .../java/com/sun/faces/demo/model/Messages.java    |   162 +
 .../src/java/com/sun/faces/demo/model/Threads.java |   151 +
 .../src/java/com/sun/faces/demo/model/Topics.java  |   148 +
 jsf-demo/sandbox/jsf-forum/web/WEB-INF/sun-web.xml |    53 +
 jsf-demo/sandbox/jsf-forum/web/WEB-INF/web.xml     |    82 +
 jsf-demo/sandbox/jsf-forum/web/index.html          |    43 +
 jsf-demo/sandbox/jsf-forum/web/index.xhtml         |    89 +
 .../sandbox/jsf-forum/web/nav/replyMessage.xhtml   |    69 +
 .../sandbox/jsf-forum/web/threads/addThread.xhtml  |    68 +
 .../sandbox/jsf-forum/web/threads/listThread.xhtml |    87 +
 .../sandbox/jsf-forum/web/topics/addTopic.xhtml    |    64 +
 .../sandbox/jsf-forum/web/topics/listTopic.xhtml   |    81 +
 jsf-demo/sandbox/maven-archetypes/README.txt       |    92 +
 .../maven-archetypes/jsf2-composite/pom.xml        |   252 +
 .../src/main/java/example/model/UserBean.java      |    75 +
 .../jsf2-composite/src/main/webapp/WEB-INF/web.xml |    71 +
 .../jsf2-composite/src/main/webapp/main.xhtml      |    69 +
 .../src/main/webapp/resources/cc/myComponent.xhtml |    99 +
 .../sandbox/maven-archetypes/jsf2-simple/pom.xml   |   252 +
 .../src/main/java/example/model/UserBean.java      |    75 +
 .../jsf2-simple/src/main/webapp/WEB-INF/web.xml    |    71 +
 .../jsf2-simple/src/main/webapp/main.xhtml         |    58 +
 jsf-demo/sandbox/permalink/build.xml               |   138 +
 .../sandbox/permalink/src/java/permalink/Blog.java |   317 +
 .../permalink/src/java/permalink/BlogEntry.java    |   137 +
 .../src/java/permalink/BlogEntryRepository.java    |   272 +
 .../permalink/src/java/permalink/Comment.java      |   108 +
 .../permalink/src/java/permalink/CommentBoard.java |    95 +
 .../sandbox/permalink/web/WEB-INF/faces-config.xml |    88 +
 jsf-demo/sandbox/permalink/web/WEB-INF/sun-web.xml |    53 +
 .../web/WEB-INF/templates/categories.xhtml         |    60 +
 .../permalink/web/WEB-INF/templates/comments.xhtml |    81 +
 .../web/WEB-INF/templates/commonViewParams.xhtml   |    51 +
 .../web/WEB-INF/templates/entryContent.xhtml       |    93 +
 .../web/WEB-INF/templates/entryList.xhtml          |    82 +
 .../web/WEB-INF/templates/otherCategories.xhtml    |    60 +
 .../permalink/web/WEB-INF/templates/page.xhtml     |   112 +
 .../web/WEB-INF/templates/singleEntry.xhtml        |    77 +
 jsf-demo/sandbox/permalink/web/WEB-INF/web.xml     |    76 +
 jsf-demo/sandbox/permalink/web/category.xhtml      |    58 +
 jsf-demo/sandbox/permalink/web/entry.xhtml         |    59 +
 jsf-demo/sandbox/permalink/web/home.xhtml          |    54 +
 jsf-demo/sandbox/pom.xml                           |    66 +
 jsf-demo/sandbox/rlc/pom.xml                       |   100 +
 .../sandbox/rlc/src/main/webapp/WEB-INF/web.xml    |    85 +
 .../main/webapp/contracts/contract1/css/style.css  |    82 +
 .../main/webapp/contracts/contract1/template.xhtml |    69 +
 .../main/webapp/contracts/contract2/css/style.css  |    82 +
 .../main/webapp/contracts/contract2/template.xhtml |    69 +
 .../main/webapp/contracts/contract3/css/style.css  |    82 +
 .../main/webapp/contracts/contract3/template.xhtml |    69 +
 .../main/webapp/contracts/contract4/css/style.css  |    82 +
 .../main/webapp/contracts/contract4/template.xhtml |    69 +
 .../sandbox/rlc/src/main/webapp/images/sample1.jpg |   Bin 0 -> 25764 bytes
 .../sandbox/rlc/src/main/webapp/images/sample2.png |   Bin 0 -> 20172 bytes
 .../sandbox/rlc/src/main/webapp/images/sample3.png |   Bin 0 -> 18613 bytes
 .../sandbox/rlc/src/main/webapp/images/sample4.png |   Bin 0 -> 195676 bytes
 jsf-demo/sandbox/rlc/src/main/webapp/index.xhtml   |   100 +
 .../rlc/src/main/webapp/resources/css/Space1.jpg   |   Bin 0 -> 451171 bytes
 .../rlc/src/main/webapp/resources/css/style.css    |    75 +
 .../sandbox/rlc/src/main/webapp/template.xhtml     |    62 +
 .../sandbox/scrumtoys2009/eclipseProject/.project  |    11 +
 .../scrumtoys2009/eclipseProject/README.txt        |    32 +
 .../eclipseProject/blueprints-build.xml            |    63 +
 .../eclipseProject/blueprints-deploy-sample.xml    |   110 +
 .../eclipseProject/blueprints-test-build.xml       |    58 +
 .../scrumtoys2009/eclipseProject/latest/pom.xml    |   210 +
 .../eclipseProject/latest/src/docs/index.html.sav  |   178 +
 .../latest/src/main/conf/persistence.xml           |    59 +
 .../demo/scrum/model/entities/AbstractEntity.java  |    80 +
 .../scrum/model/entities/PersistentEntity.java     |    55 +
 .../jsf2/demo/scrum/model/entities/Project.java    |   166 +
 .../jsf2/demo/scrum/model/entities/Sprint.java     |   211 +
 .../entities/SprintNameUniquenessConstraint.java   |    64 +
 .../SprintNameUniquenessConstraintValidator.java   |    73 +
 .../java/jsf2/demo/scrum/model/entities/Story.java |   222 +
 .../java/jsf2/demo/scrum/model/entities/Task.java  |   179 +
 .../jsf2/demo/scrum/model/entities/TaskStatus.java |    50 +
 .../demo/scrum/web/controller/AbstractManager.java |   163 +
 .../scrum/web/controller/DashboardManager.java     |   186 +
 .../scrum/web/controller/ManagerException.java     |    58 +
 .../demo/scrum/web/controller/ProjectManager.java  |   271 +
 .../demo/scrum/web/controller/SkinManager.java     |    90 +
 .../demo/scrum/web/controller/SkinUrlManager.java  |    95 +
 .../scrum/web/controller/SkinValuesManager.java    |   105 +
 .../demo/scrum/web/controller/SprintManager.java   |   292 +
 .../demo/scrum/web/controller/StoryManager.java    |   275 +
 .../demo/scrum/web/controller/TaskManager.java     |   252 +
 .../scrum/web/event/CurrentProjectChangeEvent.java |    55 +
 .../scrum/web/event/CurrentSprintChangeEvent.java  |    55 +
 .../scrum/web/event/CurrentStoryChangeEvent.java   |    55 +
 .../scrum/web/event/CurrentTaskChangeEvent.java    |    55 +
 .../demo/scrum/web/helper/ProjectConverter.java    |    82 +
 .../java/jsf2/demo/scrum/web/scope/TaskScope.java  |    75 +
 .../demo/scrum/web/scope/TaskScopeResolver.java    |   136 +
 .../src/main/resources/META-INF/persistence.xml    |    59 +
 .../main/resources/ValidationMessages.properties   |    41 +
 .../resources/ValidationMessages_pt_BR.properties  |    41 +
 .../latest/src/main/resources/i18n.properties      |   301 +
 .../src/main/resources/i18n_en_US.properties       |   305 +
 .../src/main/resources/i18n_pt_BR.properties       |   305 +
 .../src/main/webapp/.dashboard.doneTasks.xhtml     |    80 +
 .../src/main/webapp/.dashboard.stories.xhtml       |    83 +
 .../src/main/webapp/.dashboard.todoTasks.xhtml     |    73 +
 .../src/main/webapp/.dashboard.workingTasks.xhtml  |    76 +
 .../webapp/WEB-INF/facelets/jsfcomps.taglib.xml    |    61 +
 .../src/main/webapp/WEB-INF/facelets/testTag.xhtml |    53 +
 .../src/main/webapp/WEB-INF/faces-config.xml       |   159 +
 .../latest/src/main/webapp/WEB-INF/sun-web.xml     |    53 +
 .../latest/src/main/webapp/WEB-INF/web.xml         |    78 +
 .../latest/src/main/webapp/allInOne.xhtml          |   234 +
 .../latest/src/main/webapp/burndown.xhtml          |    71 +
 .../latest/src/main/webapp/changeSkin.xhtml        |    77 +
 .../latest/src/main/webapp/dashboard.xhtml         |   117 +
 .../latest/src/main/webapp/dashboard/show.xhtml    |   119 +
 .../latest/src/main/webapp/footer.xhtml            |    53 +
 .../latest/src/main/webapp/home.xhtml              |    63 +
 .../latest/src/main/webapp/index.html              |    43 +
 .../latest/src/main/webapp/menu.xhtml              |   153 +
 .../latest/src/main/webapp/project/create.xhtml    |    76 +
 .../latest/src/main/webapp/project/edit.xhtml      |    73 +
 .../latest/src/main/webapp/project/form.xhtml      |    80 +
 .../latest/src/main/webapp/project/show.xhtml      |   108 +
 .../webapp/resources/components/bigPostit.xhtml    |    74 +
 .../main/webapp/resources/components/menu.xhtml    |   139 +
 .../webapp/resources/components/menuItem.xhtml     |    63 +
 .../main/webapp/resources/components/postit.xhtml  |    68 +
 .../webapp/resources/components/postitLink.xhtml   |    58 +
 .../main/webapp/resources/components/submenu.xhtml |    62 +
 .../webapp/resources/components/submenuItem.xhtml  |    62 +
 .../webapp/resources/components/title.properties   |    42 +
 .../main/webapp/resources/components/title.xhtml   |    77 +
 .../resources/components/title_en_US.properties    |    42 +
 .../resources/components/title_pt_BR.properties    |    42 +
 .../src/main/webapp/resources/css/1_0/app.css      |    53 +
 .../main/webapp/resources/css/1_1/appBlueSkin.css  |   259 +
 .../webapp/resources/css/1_1/appOrangeSkin.css     |   265 +
 .../main/webapp/resources/css/1_1/appRedSkin.css   |   263 +
 .../webapp/resources/css/1_1/appSelectedColor.css  |   259 +
 .../webapp/resources/css/1_1/appYellowSkin.css     |   266 +
 .../src/main/webapp/resources/css/1_1/common.css   |   227 +
 .../webapp/resources/images/JSFScrumWhiteBoard.png |   Bin 0 -> 140710 bytes
 .../webapp/resources/images/SoccerDukeSmall.png    |   Bin 0 -> 187753 bytes
 .../lousaNova/quadroNegro_botton_990x120.png       |   Bin 0 -> 1229 bytes
 .../images/lousaNova/quadroNegro_meio_990x10.png   |   Bin 0 -> 371 bytes
 .../images/lousaNova/quadroNegro_r1_c1.png         |   Bin 0 -> 666 bytes
 .../images/lousaNova/quadroNegro_r2_c1.png         |   Bin 0 -> 1570 bytes
 .../images/lousaNova/quadroNegro_r3_c1.png         |   Bin 0 -> 2476 bytes
 .../images/lousaNova/quadroNegro_top_990x80.png    |   Bin 0 -> 1088 bytes
 .../resources/images/menu/barraSuperior-04.png     |   Bin 0 -> 28732 bytes
 .../resources/images/menu/bt_preto03_165x35.png    |   Bin 0 -> 1111 bytes
 .../images/postits/novos/postit_amar_150x145.png   |   Bin 0 -> 8918 bytes
 .../images/postits/novos/postit_amar_315x150.png   |   Bin 0 -> 11394 bytes
 .../images/postits/novos/postit_azul_150x145.png   |   Bin 0 -> 3976 bytes
 .../images/postits/novos/postit_azul_315x150.png   |   Bin 0 -> 9661 bytes
 .../images/postits/novos/postit_lara_150x145.png   |   Bin 0 -> 4176 bytes
 .../images/postits/novos/postit_lara_315x150.png   |   Bin 0 -> 11093 bytes
 .../images/postits/novos/postit_verm_150x145.png   |   Bin 0 -> 4130 bytes
 .../images/postits/novos/postit_verm_315x150.png   |   Bin 0 -> 10846 bytes
 .../latest/src/main/webapp/resources/js/app.js     |    46 +
 .../latest/src/main/webapp/resources/js/date.js    |   492 +
 .../latest/src/main/webapp/resources/js/menu.js    |    54 +
 .../src/main/webapp/resources/js/validations.js    |   422 +
 .../latest/src/main/webapp/skin/changeSkin.xhtml   |    79 +
 .../latest/src/main/webapp/sprint/create.xhtml     |    75 +
 .../latest/src/main/webapp/sprint/edit.xhtml       |    79 +
 .../latest/src/main/webapp/sprint/form.xhtml       |    87 +
 .../latest/src/main/webapp/sprint/show.xhtml       |   138 +
 .../latest/src/main/webapp/storiesList.xhtml       |   145 +
 .../latest/src/main/webapp/story/create.xhtml      |   109 +
 .../latest/src/main/webapp/story/edit.xhtml        |    83 +
 .../latest/src/main/webapp/story/form.xhtml        |    83 +
 .../latest/src/main/webapp/story/show.xhtml        |   131 +
 .../latest/src/main/webapp/task/create.xhtml       |    84 +
 .../latest/src/main/webapp/task/edit.xhtml         |    85 +
 .../latest/src/main/webapp/task/form.xhtml         |    82 +
 .../latest/src/main/webapp/task/show.xhtml         |   144 +
 .../latest/src/main/webapp/template.xhtml          |   100 +
 .../sandbox/scrumtoys2009/eclipseProject/pom.xml   |   210 +
 .../demo/scrum/model/entities/AbstractEntity.java  |    80 +
 .../scrum/model/entities/PersistentEntity.java     |    55 +
 .../jsf2/demo/scrum/model/entities/Project.java    |   166 +
 .../jsf2/demo/scrum/model/entities/Sprint.java     |   215 +
 .../entities/SprintNameUniquenessConstraint.java   |    64 +
 .../SprintNameUniquenessConstraintValidator.java   |    73 +
 .../java/jsf2/demo/scrum/model/entities/Story.java |   226 +
 .../java/jsf2/demo/scrum/model/entities/Task.java  |   184 +
 .../jsf2/demo/scrum/model/entities/TaskStatus.java |    50 +
 .../demo/scrum/web/controller/AbstractManager.java |   163 +
 .../demo/scrum/web/controller/AuthManager.java     |    81 +
 .../scrum/web/controller/DashboardManager.java     |   233 +
 .../scrum/web/controller/ManagerException.java     |    58 +
 .../demo/scrum/web/controller/ProjectList.java     |   143 +
 .../demo/scrum/web/controller/ProjectManager.java  |   212 +
 .../demo/scrum/web/controller/SkinManager.java     |   101 +
 .../demo/scrum/web/controller/SkinUrlManager.java  |    95 +
 .../scrum/web/controller/SkinValuesManager.java    |   115 +
 .../jsf2/demo/scrum/web/controller/SprintList.java |   139 +
 .../demo/scrum/web/controller/SprintManager.java   |   269 +
 .../jsf2/demo/scrum/web/controller/StoryList.java  |   135 +
 .../demo/scrum/web/controller/StoryManager.java    |   226 +
 .../jsf2/demo/scrum/web/controller/TaskList.java   |   130 +
 .../demo/scrum/web/controller/TaskManager.java     |   212 +
 .../scrum/web/event/CurrentProjectChangeEvent.java |    55 +
 .../scrum/web/event/CurrentSprintChangeEvent.java  |    55 +
 .../scrum/web/event/CurrentStoryChangeEvent.java   |    55 +
 .../scrum/web/event/CurrentTaskChangeEvent.java    |    55 +
 .../demo/scrum/web/helper/ProjectConverter.java    |    82 +
 .../src/main/resources/META-INF/persistence.xml    |    62 +
 .../main/resources/ValidationMessages.properties   |    41 +
 .../resources/ValidationMessages_pt_BR.properties  |    41 +
 .../src/main/resources/i18n.properties             |   308 +
 .../src/main/resources/i18n_en_US.properties       |   312 +
 .../src/main/resources/i18n_pt_BR.properties       |   312 +
 .../src/main/webapp/.dashboard.doneTasks.xhtml     |    80 +
 .../src/main/webapp/.dashboard.stories.xhtml       |    83 +
 .../src/main/webapp/.dashboard.todoTasks.xhtml     |    73 +
 .../src/main/webapp/.dashboard.workingTasks.xhtml  |    76 +
 .../src/main/webapp/WEB-INF/beans.xml              |     5 +
 .../webapp/WEB-INF/facelets/jsfcomps.taglib.xml    |    61 +
 .../src/main/webapp/WEB-INF/facelets/testTag.xhtml |    53 +
 .../src/main/webapp/WEB-INF/faces-config.xml       |   158 +
 .../src/main/webapp/WEB-INF/glassfish-web.xml      |    11 +
 .../src/main/webapp/WEB-INF/lib/README.txt         |    16 +
 .../src/main/webapp/WEB-INF/sun-web.xml            |    59 +
 .../eclipseProject/src/main/webapp/WEB-INF/web.xml |   120 +
 .../eclipseProject/src/main/webapp/allInOne.xhtml  |   234 +
 .../eclipseProject/src/main/webapp/burndown.xhtml  |    71 +
 .../src/main/webapp/contracts/appBlueSkin/app.css  |    53 +
 .../webapp/contracts/appBlueSkin/appBlueSkin.css   |   259 +
 .../main/webapp/contracts/appBlueSkin/common.css   |   227 +
 .../main/webapp/contracts/appBlueSkin/footer.xhtml |    53 +
 .../webapp/contracts/appBlueSkin/template.xhtml    |   106 +
 .../main/webapp/contracts/appOrangeSkin/app.css    |    53 +
 .../contracts/appOrangeSkin/appOrangeSkin.css      |   265 +
 .../main/webapp/contracts/appOrangeSkin/common.css |   227 +
 .../webapp/contracts/appOrangeSkin/footer.xhtml    |    53 +
 .../webapp/contracts/appOrangeSkin/template.xhtml  |   106 +
 .../src/main/webapp/contracts/appRedSkin/app.css   |    53 +
 .../webapp/contracts/appRedSkin/appRedSkin.css     |   263 +
 .../main/webapp/contracts/appRedSkin/common.css    |   227 +
 .../main/webapp/contracts/appRedSkin/footer.xhtml  |    53 +
 .../webapp/contracts/appRedSkin/template.xhtml     |   106 +
 .../main/webapp/contracts/appYellowSkin/app.css    |    53 +
 .../contracts/appYellowSkin/appYellowSkin.css      |   266 +
 .../main/webapp/contracts/appYellowSkin/common.css |   227 +
 .../webapp/contracts/appYellowSkin/footer.xhtml    |    53 +
 .../webapp/contracts/appYellowSkin/template.xhtml  |   106 +
 .../eclipseProject/src/main/webapp/dashboard.xhtml |   117 +
 .../src/main/webapp/dashboard/show.xhtml           |   119 +
 .../eclipseProject/src/main/webapp/home.xhtml      |    63 +
 .../eclipseProject/src/main/webapp/index.html      |    43 +
 .../eclipseProject/src/main/webapp/login.xhtml     |    77 +
 .../src/main/webapp/loginError.xhtml               |    58 +
 .../src/main/webapp/project/create.xhtml           |    76 +
 .../src/main/webapp/project/edit.xhtml             |    73 +
 .../src/main/webapp/project/form.xhtml             |    80 +
 .../src/main/webapp/project/show.xhtml             |   108 +
 .../webapp/resources/components/bigPostit.xhtml    |    74 +
 .../main/webapp/resources/components/menu.xhtml    |   139 +
 .../webapp/resources/components/menuItem.xhtml     |    63 +
 .../main/webapp/resources/components/postit.xhtml  |    68 +
 .../webapp/resources/components/postitLink.xhtml   |    58 +
 .../main/webapp/resources/components/submenu.xhtml |    62 +
 .../webapp/resources/components/submenuItem.xhtml  |    62 +
 .../webapp/resources/components/title.properties   |    42 +
 .../main/webapp/resources/components/title.xhtml   |    77 +
 .../resources/components/title_en_US.properties    |    42 +
 .../resources/components/title_pt_BR.properties    |    42 +
 .../webapp/resources/css/1_1/appSelectedColor.css  |   259 +
 .../webapp/resources/images/JSFScrumWhiteBoard.png |   Bin 0 -> 140710 bytes
 .../webapp/resources/images/SoccerDukeSmall.png    |   Bin 0 -> 187753 bytes
 .../lousaNova/quadroNegro_botton_990x120.png       |   Bin 0 -> 1229 bytes
 .../images/lousaNova/quadroNegro_meio_990x10.png   |   Bin 0 -> 371 bytes
 .../images/lousaNova/quadroNegro_r1_c1.png         |   Bin 0 -> 666 bytes
 .../images/lousaNova/quadroNegro_r2_c1.png         |   Bin 0 -> 1570 bytes
 .../images/lousaNova/quadroNegro_r3_c1.png         |   Bin 0 -> 2476 bytes
 .../images/lousaNova/quadroNegro_top_990x80.png    |   Bin 0 -> 1088 bytes
 .../resources/images/menu/barraSuperior-04.png     |   Bin 0 -> 28732 bytes
 .../resources/images/menu/bt_preto03_165x35.png    |   Bin 0 -> 1111 bytes
 .../images/postits/novos/postit_amar_150x145.png   |   Bin 0 -> 8918 bytes
 .../images/postits/novos/postit_amar_315x150.png   |   Bin 0 -> 11394 bytes
 .../images/postits/novos/postit_azul_150x145.png   |   Bin 0 -> 3976 bytes
 .../images/postits/novos/postit_azul_315x150.png   |   Bin 0 -> 9661 bytes
 .../images/postits/novos/postit_lara_150x145.png   |   Bin 0 -> 4176 bytes
 .../images/postits/novos/postit_lara_315x150.png   |   Bin 0 -> 11093 bytes
 .../images/postits/novos/postit_verm_150x145.png   |   Bin 0 -> 4130 bytes
 .../images/postits/novos/postit_verm_315x150.png   |   Bin 0 -> 10846 bytes
 .../src/main/webapp/resources/js/app.js            |    46 +
 .../src/main/webapp/resources/js/date.js           |   452 +
 .../src/main/webapp/resources/js/menu.js           |    54 +
 .../src/main/webapp/resources/js/validations.js    |   382 +
 .../src/main/webapp/skin/changeSkin.xhtml          |    79 +
 .../src/main/webapp/sprint/create.xhtml            |    75 +
 .../src/main/webapp/sprint/edit.xhtml              |    79 +
 .../src/main/webapp/sprint/form.xhtml              |    87 +
 .../src/main/webapp/sprint/show.xhtml              |   138 +
 .../src/main/webapp/storiesList.xhtml              |   145 +
 .../src/main/webapp/story/create.xhtml             |   109 +
 .../src/main/webapp/story/edit.xhtml               |    83 +
 .../src/main/webapp/story/form.xhtml               |    83 +
 .../src/main/webapp/story/show.xhtml               |   131 +
 .../src/main/webapp/task/create.xhtml              |    84 +
 .../eclipseProject/src/main/webapp/task/edit.xhtml |    85 +
 .../eclipseProject/src/main/webapp/task/form.xhtml |    82 +
 .../eclipseProject/src/main/webapp/task/show.xhtml |   144 +
 .../src/test/java/jsf2/ScrumToysTest.java          |    63 +
 .../eclipseProject/test/dao/TestSprintDAO.java     |    78 +
 .../Class Diagram 1_1241809882217.diagram          |  2559 ++++
 .../scrumtoys-uml/scrumtoys-uml/UML_2.0EMBT.dtd    |  2713 ++++
 .../nbproject/private/private.properties           |    43 +
 .../scrumtoys-uml/nbproject/project.properties     |    48 +
 .../scrumtoys-uml/nbproject/project.xml            |    10 +
 .../scrumtoys-uml/scrumtoys-uml/scrumtoys-uml.etd  |   737 +
 .../scrumtoys-uml/scrumtoys-uml/scrumtoys-uml.ettm |    81 +
 .../scrumtoys-uml/scrumtoys-uml/scrumtoys-uml.etup |    63 +
 jsf-demo/sandbox/stock/manifest.mf                 |     3 +
 jsf-demo/sandbox/stock/pom.xml                     |   162 +
 .../sandbox/stock/src/main/java/stock/Bean.java    |   353 +
 .../stock/src/main/java/stock/StockTable.java      |    64 +
 .../src/main/java/stock/StockTableRenderer.java    |   193 +
 .../stock/src/main/java/stock/StockTableTag.java   |   107 +
 .../stock/src/main/webapp/WEB-INF/demo.taglib.xml  |    58 +
 .../stock/src/main/webapp/WEB-INF/faces-config.xml |    77 +
 .../stock/src/main/webapp/WEB-INF/stock.tld        |   161 +
 .../sandbox/stock/src/main/webapp/WEB-INF/web.xml  |    98 +
 jsf-demo/sandbox/stock/src/main/webapp/home.xhtml  |    96 +
 jsf-demo/sandbox/stock/src/main/webapp/index.html  |    47 +
 .../stock/src/main/webapp/resources/bgblack18.jpg  |   Bin 0 -> 12179 bytes
 .../stock/src/main/webapp/resources/down_r.gif     |   Bin 0 -> 73 bytes
 .../src/main/webapp/resources/javax.faces/ajax.js  |   505 +
 .../resources/javax.faces/com_sun_faces_ajax.js    |  1186 ++
 .../main/webapp/resources/javax.faces/prototype.js |  2249 ++++
 .../stock/src/main/webapp/resources/stock-query.js |    77 +
 .../stock/src/main/webapp/resources/stylesheet.css |    77 +
 .../stock/src/main/webapp/resources/up_g.gif       |   Bin 0 -> 90 bytes
 jsf-demo/sandbox/tree-visit/README.txt             |     2 +
 jsf-demo/sandbox/tree-visit/build.xml              |   132 +
 jsf-demo/sandbox/tree-visit/pom.xml                |   165 +
 .../tree-visit/src/main/java/treevisit/Bean.java   |   281 +
 .../tree-visit/src/main/webapp/WEB-INF/web.xml     |    71 +
 .../sandbox/tree-visit/src/main/webapp/home.xhtml  |   175 +
 .../sandbox/tree-visit/src/main/webapp/index.html  |    47 +
 .../src/main/webapp/resources/redwaveani.gif       |   Bin 0 -> 43394 bytes
 .../src/main/webapp/resources/stylesheet.css       |   248 +
 jsf-demo/test/mappingDemo/build.xml                |   160 +
 .../src/guessNumber/MessageFactory.java            |   273 +
 .../src/guessNumber/UserNumberBean.java            |   201 +
 .../test/mappingDemo/web/WEB-INF/faces-config.xml  |   117 +
 .../test/mappingDemo/web/WEB-INF/web.extension.xml |    83 +
 .../test/mappingDemo/web/WEB-INF/web.prefix.xml    |    83 +
 jsf-demo/test/mappingDemo/web/greeting.jsp         |    66 +
 jsf-demo/test/mappingDemo/web/index.html           |    58 +
 jsf-demo/test/mappingDemo/web/response.jsp         |    59 +
 jsf-demo/test/mappingDemo/web/wave.med.gif         |   Bin 0 -> 3000 bytes
 .../com/sun/faces/demotest/HtmlUnitTestCase.java   |   228 +
 .../sun/faces/demotest/cardemo/TestCarDemo.java    |   336 +
 .../faces/demotest/components/TestComponents.java  |   319 +
 .../demotest/customscope/TestCustomScope.java      |   125 +
 .../demotest/guessNumber/TestGuessNumber.java      |   260 +
 .../faces/demotest/mappingTest/TestMapping.java    |   277 +
 .../demotest/mojarra_ext/TestMojarra_Ext.java      |   216 +
 .../faces/demotest/treevisit/TestTreeVisit.java    |   129 +
 .../TestViewExpiredExceptionExceptionHandler.java  |    62 +
 jsf-demo/viewExpired/README.txt                    |     3 +
 jsf-demo/viewExpired/build.xml                     |   123 +
 jsf-demo/viewExpired/pom.xml                       |   166 +
 .../com/sun/faces/NullRestoreViewViewHandler.java  |    71 +
 .../ViewExpiredExceptionExceptionHandler.java      |   111 +
 ...iewExpiredExceptionExceptionHandlerFactory.java |    64 +
 .../src/main/webapp/WEB-INF/faces-config.xml       |    57 +
 .../viewExpired/src/main/webapp/WEB-INF/web.xml    |    78 +
 jsf-demo/viewExpired/src/main/webapp/main.xhtml    |    57 +
 .../viewExpired/src/main/webapp/viewExpired.xhtml  |    66 +
 jsf-ri/LICENSE.TXT                                 |   264 +-
 jsf-ri/build-pre-maven-rename.xml                  |   838 ++
 jsf-ri/build-source.xml                            |    78 +-
 jsf-ri/build-tests.xml                             |   252 +-
 jsf-ri/build.xml                                   |  1622 +--
 jsf-ri/conf/basic/META-INF/faces-config.xml        |    73 +-
 jsf-ri/conf/share/com.sun.faces.util.cdi11.CDIUtil |     1 +
 jsf-ri/conf/share/composite.taglib.xml             |  2041 +--
 jsf-ri/conf/share/composite.tld                    |  1767 +--
 jsf-ri/conf/share/error-include.xhtml              |    65 +-
 jsf-ri/conf/share/facelet-dev-debug.xml            |   114 +-
 jsf-ri/conf/share/facelet-dev-error.xml            |    86 +-
 jsf-ri/conf/share/facelets_jsf_core.taglib.xml     |  1662 ++-
 jsf-ri/conf/share/facelets_jsf_core.tld            |  1906 +--
 jsf-ri/conf/share/facelets_passthrough.tld         |    85 +
 .../conf/share/facelets_passthrough_attributes.tld |    85 +
 .../conf/share/facelets_passthrough_elements.tld   |   270 +
 jsf-ri/conf/share/html_basic.taglib.xml            |  1872 ++-
 .../share/javax.enterprise.inject.spi.Extension    |     3 +
 jsf-ri/conf/share/jsf_core.tld                     |    95 +-
 jsf-ri/conf/share/jstl-core.taglib.xml             |   196 +-
 jsf-ri/conf/share/jstl-core.tld                    |    75 +-
 jsf-ri/conf/share/jstl-fn.taglib.xml               |    70 +-
 jsf-ri/conf/share/jstl-fn.tld                      |    75 +-
 jsf-ri/conf/share/mojarra_ext.taglib.xml           |    74 +-
 jsf-ri/conf/share/mojarra_ext.tld                  |    63 +-
 .../share/tlddoc-resources/alltags-frame.html.xsl  |    61 +-
 .../tlddoc-resources/alltags-noframe.html.xsl      |    61 +-
 .../conf/share/tlddoc-resources/function.html.xsl  |    67 +-
 .../conf/share/tlddoc-resources/help-doc.html.xsl  |    67 +-
 jsf-ri/conf/share/tlddoc-resources/index.html.xsl  |    61 +-
 .../share/tlddoc-resources/overview-frame.html.xsl |    61 +-
 .../tlddoc-resources/overview-summary.html.xsl     |    67 +-
 jsf-ri/conf/share/tlddoc-resources/stylesheet.css  |   200 +-
 jsf-ri/conf/share/tlddoc-resources/tag.html.xsl    |    67 +-
 .../conf/share/tlddoc-resources/tld-frame.html.xsl |    61 +-
 .../share/tlddoc-resources/tld-summary.html.xsl    |    67 +-
 .../conf/share/tlddoc-resources/tld1_1-tld1_2.xsl  |    61 +-
 .../conf/share/tlddoc-resources/tld1_2-tld2_0.xsl  |    61 +-
 .../conf/share/tlddoc-resources/tld2_0-tld2_1.xsl  |    60 +-
 .../conf/share/tlddoc-resources/tld2_1-tld2_1.xsl  |    60 +-
 jsf-ri/conf/share/ui.taglib.xml                    |  1220 +-
 jsf-ri/conf/share/ui.tld                           |   244 +-
 jsf-ri/conf/share/xhtml/default.dtd                |    66 +-
 jsf-ri/conf/test/cactus.properties                 |    40 +
 jsf-ri/conf/test/web.xml                           |    80 +-
 jsf-ri/conf/xslt/facelets1_0-2_0toSchema.xsl       |    83 +-
 jsf-ri/conf/xslt/jsf1_0-1_1toSchema.xsl            |    77 +-
 jsf-ri/conf/xslt/merge-config.xsl                  |    64 +-
 jsf-ri/conf/xslt/prune-tool-data.xsl               |    62 +-
 jsf-ri/docs/Copyright.html                         |   169 +
 jsf-ri/docs/Installation.html                      |   572 +
 jsf-ri/docs/QuickStart.html                        |   101 +
 jsf-ri/docs/ReleaseNotes.html                      |  1188 ++
 jsf-ri/docs/api-issues-owners.xsl                  |   105 +
 jsf-ri/docs/index.html                             |   114 +
 jsf-ri/docs/models/LifecycleClasses.gif            |   Bin 0 -> 6894 bytes
 jsf-ri/docs/models/RestoreState.jpg                |   Bin 0 -> 64343 bytes
 jsf-ri/docs/models/SaveState.jpg                   |   Bin 0 -> 163282 bytes
 jsf-ri/docs/models/faces.mdl                       |  9691 ++++++++++++++
 jsf-ri/docs/models/faces.zuml                      |   Bin 0 -> 83057 bytes
 jsf-ri/docs/ri-issues-detail.xsl                   |   115 +
 jsf-ri/docs/samples.html                           |   123 +
 jsf-ri/docs/style/default.css                      |    83 +
 jsf-ri/maven.xml                                   |    76 +-
 jsf-ri/mojarra-jsf-impl.bnd                        |   133 +-
 jsf-ri/project.properties                          |    40 +
 jsf-ri/project.xml                                 |    76 +-
 jsf-ri/resources/empty-faces-config.xml            |    79 +-
 jsf-ri/resources/jsf-ri-config.xml                 |   100 +-
 jsf-ri/resources/mojarra.js                        |     2 +-
 .../src/main/java/com/sun/faces/RIConstants.java   |    93 +-
 .../java/com/sun/faces/action/ActionLifecycle.java |    93 +
 .../sun/faces/action/ActionLifecycleFactory.java   |   104 +
 .../java/com/sun/faces/action/ActionPhase.java     |   206 +
 .../java/com/sun/faces/action/RequestMapping.java  |    55 +
 .../com/sun/faces/action/RequestMappingInfo.java   |    89 +
 .../sun/faces/application/ActionListenerImpl.java  |    64 +-
 .../faces/application/ApplicationAssociate.java    |   390 +-
 .../faces/application/ApplicationFactoryImpl.java  |    37 +-
 .../com/sun/faces/application/ApplicationImpl.java |  4971 +++----
 .../ApplicationInstanceFactoryMetadataMap.java     |    84 +
 .../application/ApplicationResourceBundle.java     |    36 +-
 .../faces/application/ApplicationStateInfo.java    |    44 +-
 .../application/ByteArrayWebOutputStream.java      |    28 +-
 .../application/ConverterPropertyEditorBase.java   |    39 +-
 .../ConverterPropertyEditorFactory.java            |    45 +-
 .../ConverterPropertyEditorFor_XXXX.java           |    36 +-
 .../application/InjectionApplicationFactory.java   |    49 +-
 .../faces/application/JavaFlowLoaderHelper.java    |   119 +
 .../sun/faces/application/NamedEventManager.java   |    28 +-
 .../faces/application/NavigationHandlerImpl.java   |   920 +-
 .../faces/application/ProjectStageJndiFactory.java |    28 +-
 .../faces/application/PropertyEditorHelper.java    |    28 +-
 .../sun/faces/application/StateManagerImpl.java    |   443 +-
 .../application/ValidateComponentNesting.java      |   114 +
 .../com/sun/faces/application/ViewHandlerImpl.java |    79 +-
 .../application/ViewHandlerResponseWrapper.java    |    36 +-
 .../com/sun/faces/application/WebPrintWriter.java  |    28 +-
 .../faces/application/WebappLifecycleListener.java |   828 +-
 .../application/annotation/AnnotationManager.java  |    95 +-
 .../annotation/BehaviorConfigHandler.java          |    36 +-
 .../annotation/ComponentConfigHandler.java         |    57 +-
 .../annotation/ConfigAnnotationHandler.java        |    28 +-
 .../annotation/ConverterConfigHandler.java         |    56 +-
 .../annotation/DelegatedEJBScanner.java            |    88 +
 .../DelegatedPersistenceContextScanner.java        |    89 +
 .../DelegatedPersistenceUnitScanner.java           |    89 +
 .../annotation/DelegatedResourceScanner.java       |    89 +
 .../annotation/DelegatedWebServiceRefScanner.java  |    89 +
 .../faces/application/annotation/EJBHandler.java   |   103 +
 .../faces/application/annotation/EJBScanner.java   |   104 +
 .../annotation/FacesComponentUsage.java            |    65 +
 .../faces/application/annotation/JndiHandler.java  |   167 +
 .../application/annotation/ListenerForHandler.java |    28 +-
 .../application/annotation/ListenerForScanner.java |    28 +-
 .../annotation/ManagedBeanConfigHandler.java       |   100 +-
 .../annotation/NamedEventConfigHandler.java        |    30 +-
 .../annotation/PersistenceContextHandler.java      |    98 +
 .../annotation/PersistenceContextScanner.java      |   104 +
 .../annotation/PersistenceUnitHandler.java         |    99 +
 .../annotation/PersistenceUnitScanner.java         |   104 +
 .../annotation/RenderKitConfigHandler.java         |    36 +-
 .../annotation/ResourceDependencyHandler.java      |    28 +-
 .../annotation/ResourceDependencyScanner.java      |    28 +-
 .../application/annotation/ResourceHandler.java    |   109 +
 .../application/annotation/ResourceScanner.java    |   106 +
 .../annotation/RuntimeAnnotationHandler.java       |    29 +-
 .../sun/faces/application/annotation/Scanner.java  |    28 +-
 .../annotation/ValidatorConfigHandler.java         |    45 +-
 .../annotation/WebServiceRefHandler.java           |   109 +
 .../annotation/WebServiceRefScanner.java           |   109 +
 .../resource/ClasspathResourceHelper.java          |   293 +-
 .../application/resource/ClientResourceInfo.java   |   322 +
 .../faces/application/resource/ContractInfo.java   |    82 +
 .../application/resource/FaceletLibraryInfo.java   |    60 +
 .../application/resource/FaceletResourceInfo.java  |    60 +
 .../resource/FaceletWebappResourceHelper.java      |   253 +
 .../faces/application/resource/LibraryInfo.java    |   107 +-
 .../sun/faces/application/resource/Resource.java   |   192 +
 .../faces/application/resource/ResourceCache.java  |    52 +-
 .../application/resource/ResourceHandlerImpl.java  |   147 +-
 .../faces/application/resource/ResourceHelper.java |   234 +-
 .../faces/application/resource/ResourceImpl.java   |    89 +-
 .../faces/application/resource/ResourceInfo.java   |   392 +-
 .../application/resource/ResourceManager.java      |   327 +-
 .../faces/application/resource/VersionInfo.java    |    28 +-
 .../application/resource/WebappResourceHelper.java |   234 +-
 .../resource/ZipDirectoryEntryScanner.java         |   127 +
 .../view/FaceletFullStateManagementStrategy.java   |   897 ++
 .../FaceletPartialStateManagementStrategy.java     |   535 +
 .../view/FaceletViewHandlingStrategy.java          |   733 +-
 .../faces/application/view/FormOmittedChecker.java |   160 +
 .../view/JspStateManagementStrategy.java           |   459 +
 .../application/view/JspViewHandlingStrategy.java  |    36 +-
 .../faces/application/view/MultiViewHandler.java   |   240 +-
 .../view/StateManagementStrategyImpl.java          |   376 -
 .../view/ViewDeclarationLanguageFactoryImpl.java   |    40 +-
 .../application/view/ViewHandlingStrategy.java     |    28 +-
 .../view/ViewHandlingStrategyManager.java          |    28 +-
 .../ViewHandlingStrategyNotFoundException.java     |    30 +-
 .../faces/application/view/ViewMetadataImpl.java   |    93 +-
 .../faces/application/view/ViewScopeContext.java   |   174 +
 .../application/view/ViewScopeContextManager.java  |   386 +
 .../application/view/ViewScopeContextObject.java   |    94 +
 .../application/view/ViewScopeEventListener.java   |    81 +
 .../faces/application/view/ViewScopeExtension.java |   145 +
 .../faces/application/view/ViewScopeManager.java   |   406 +
 .../view/ViewScopedCDIEventFireHelper.java         |    49 +
 .../view/ViewScopedCDIEventFireHelperImpl.java     |    68 +
 .../application/view/WriteBehindStateWriter.java   |    66 +-
 .../component/ComponentResourceContainer.java      |    28 +-
 .../component/CompositeComponentStackManager.java  |   961 +-
 .../sun/faces/component/PassthroughElement.java    |   358 +
 .../faces/component/behavior/AjaxBehaviors.java    |    61 +-
 .../component/validator/ComponentValidators.java   |    52 +-
 .../faces/component/visit/FullVisitContext.java    |    36 +-
 .../faces/component/visit/PartialVisitContext.java |    40 +-
 .../component/visit/VisitContextFactoryImpl.java   |    39 +-
 .../com/sun/faces/config/AnnotationScanner.java    |   900 +-
 .../java/com/sun/faces/config/ConfigManager.java   |   477 +-
 .../sun/faces/config/ConfigurationException.java   |    36 +-
 .../com/sun/faces/config/ConfigureListener.java    |   252 +-
 .../main/java/com/sun/faces/config/DbfFactory.java |   425 +-
 .../DelegateToGlassFishAnnotationScanner.java      |   258 +
 .../faces/config/DelegatingAnnotationProvider.java |   103 +
 .../java/com/sun/faces/config/DocumentInfo.java    |    40 +-
 .../sun/faces/config/DocumentOrderingWrapper.java  |    46 +-
 .../sun/faces/config/FaceletsConfiguration.java    |   195 +
 .../java/com/sun/faces/config/FacesConfigInfo.java |    34 +-
 .../com/sun/faces/config/FacesInitializer.java     |    36 +-
 .../com/sun/faces/config/InitFacesContext.java     |   292 +-
 .../config/JavaClassScanningAnnotationScanner.java |   727 +
 .../main/java/com/sun/faces/config/Verifier.java   |    28 +-
 .../com/sun/faces/config/WebConfiguration.java     |  3050 +++--
 .../BaseWebConfigResourceProvider.java             |    57 +-
 .../MetaInfFaceletTaglibraryConfigProvider.java    |    76 +-
 .../MetaInfFacesConfigResourceProvider.java        |   359 +-
 .../MojarraFacesConfigResourceProvider.java        |    55 +-
 .../WebAppFlowConfigResourceProvider.java          |   139 +
 .../WebFaceletTaglibResourceProvider.java          |    36 +-
 .../WebFacesConfigResourceProvider.java            |    44 +-
 .../config/processor/AbstractConfigProcessor.java  |   189 +-
 .../processor/ApplicationConfigProcessor.java      |   170 +-
 .../config/processor/BehaviorConfigProcessor.java  |    38 +-
 .../config/processor/ComponentConfigProcessor.java |    38 +-
 .../faces/config/processor/ConfigProcessor.java    |    47 +-
 .../config/processor/ConverterConfigProcessor.java |    38 +-
 .../processor/FaceletTaglibConfigProcessor.java    |   121 +-
 .../processor/FacesConfigExtensionProcessor.java   |   187 +
 .../processor/FacesConfigNamespaceContext.java     |    64 +
 .../FacesFlowDefinitionConfigProcessor.java        |   853 ++
 .../config/processor/FactoryConfigProcessor.java   |    80 +-
 .../config/processor/LifecycleConfigProcessor.java |    44 +-
 .../processor/ManagedBeanConfigProcessor.java      |    40 +-
 .../processor/NavigationConfigProcessor.java       |    81 +-
 .../processor/ProtectedViewsConfigProcessor.java   |   168 +
 .../config/processor/RenderKitConfigProcessor.java |    56 +-
 .../ResourceLibraryContractsConfigProcessor.java   |   205 +
 .../config/processor/ValidatorConfigProcessor.java |    38 +-
 .../faces/context/AjaxExceptionHandlerImpl.java    |    61 +-
 .../faces/context/AjaxNoAjaxExceptionHandler.java  |    69 +
 .../sun/faces/context/AlwaysPuttingSessionMap.java |    65 +
 .../java/com/sun/faces/context/ApplicationMap.java |    32 +-
 .../java/com/sun/faces/context/BaseContextMap.java |    28 +-
 .../faces/context/ExceptionHandlerFactoryImpl.java |    51 +-
 .../sun/faces/context/ExceptionHandlerImpl.java    |    81 +-
 .../faces/context/ExternalContextFactoryImpl.java  |    41 +-
 .../com/sun/faces/context/ExternalContextImpl.java |   276 +-
 .../sun/faces/context/FacesContextFactoryImpl.java |    70 +-
 .../com/sun/faces/context/FacesContextImpl.java    |   112 +-
 .../faces/context/FacesFileNotFoundException.java  |    71 +
 .../com/sun/faces/context/InitParameterMap.java    |    28 +-
 .../context/InjectionFacesContextFactory.java      |    32 +-
 .../context/PartialViewContextFactoryImpl.java     |    38 +-
 .../sun/faces/context/PartialViewContextImpl.java  |   243 +-
 .../com/sun/faces/context/RequestCookieMap.java    |    28 +-
 .../com/sun/faces/context/RequestHeaderMap.java    |    28 +-
 .../sun/faces/context/RequestHeaderValuesMap.java  |    28 +-
 .../java/com/sun/faces/context/RequestMap.java     |    28 +-
 .../com/sun/faces/context/RequestParameterMap.java |    84 +-
 .../faces/context/RequestParameterValuesMap.java   |    28 +-
 .../java/com/sun/faces/context/SessionMap.java     |    40 +-
 .../java/com/sun/faces/context/StateContext.java   |   696 +-
 .../sun/faces/context/StringArrayValuesMap.java    |    28 +-
 .../java/com/sun/faces/context/UrlBuilder.java     |   133 +-
 .../java/com/sun/faces/context/flash/ELFlash.java  |  3124 +++--
 .../sun/faces/context/flash/FlashELResolver.java   |   141 +-
 .../sun/faces/context/flash/FlashFactoryImpl.java  |    63 +
 .../com/sun/faces/context/flash/SessionHelper.java |    98 +
 .../sun/faces/el/ChainAwareVariableResolver.java   |    38 +-
 .../sun/faces/el/ChainTypeCompositeELResolver.java |   227 +
 .../el/CompositeComponentAttributesELResolver.java |   103 +-
 .../com/sun/faces/el/DemuxCompositeELResolver.java |   414 +
 .../sun/faces/el/DummyPropertyResolverImpl.java    |    38 +-
 .../main/java/com/sun/faces/el/ELConstants.java    |    66 +-
 .../main/java/com/sun/faces/el/ELContextImpl.java  |    37 +-
 .../com/sun/faces/el/ELContextListenerImpl.java    |    29 +-
 jsf-ri/src/main/java/com/sun/faces/el/ELUtils.java |   158 +-
 .../com/sun/faces/el/FacesCompositeELResolver.java |   190 +-
 .../faces/el/FacesResourceBundleELResolver.java    |    36 +-
 .../com/sun/faces/el/ImplicitObjectELResolver.java |   106 +-
 .../faces/el/ImplicitObjectELResolverForJsp.java   |    62 +-
 .../com/sun/faces/el/ManagedBeanELResolver.java    |    93 +-
 .../sun/faces/el/PropertyResolverChainWrapper.java |    29 +-
 .../com/sun/faces/el/PropertyResolverImpl.java     |    36 +-
 .../java/com/sun/faces/el/ResourceELResolver.java  |    36 +-
 .../sun/faces/el/ScopedAttributeELResolver.java    |    38 +-
 .../sun/faces/el/VariableResolverChainWrapper.java |    76 +-
 .../com/sun/faces/el/VariableResolverImpl.java     |    40 +-
 .../java/com/sun/faces/ext/component/UIFocus.java  |    30 +-
 .../sun/faces/ext/render/FocusHTMLRenderer.java    |    28 +-
 .../faces/ext/taglib/CreditCardValidatorTag.java   |    37 +-
 .../java/com/sun/faces/ext/taglib/FocusTag.java    |    30 +-
 .../faces/ext/validator/CreditCardValidator.java   |    37 +-
 .../faces/ext/validator/MojarraMessageFactory.java |    49 +-
 .../faces/ext/validator/mojarraMessages.properties |    42 +-
 .../ext/validator/mojarraMessages_en.properties    |    40 +
 .../main/java/com/sun/faces/facelets/Facelet.java  |    91 -
 .../java/com/sun/faces/facelets/FaceletCache.java  |    41 +-
 .../sun/faces/facelets/FaceletContextImplBase.java |    36 +-
 .../com/sun/faces/facelets/FaceletFactory.java     |   125 -
 .../facelets/PrivateApiFaceletCacheAdapter.java    |   113 +
 .../java/com/sun/faces/facelets/StateWriter.java   |    32 +-
 .../com/sun/faces/facelets/TemplateClient.java     |    33 +-
 .../faces/facelets/compiler/AbstractUIHandler.java |    29 +-
 .../facelets/compiler/AttributeInstruction.java    |    29 +-
 .../facelets/compiler/CommentInstruction.java      |    30 +-
 .../facelets/compiler/CompilationManager.java      |   106 +-
 .../compiler/CompilationMessageHolder.java         |    36 +-
 .../compiler/CompilationMessageHolderImpl.java     |    36 +-
 .../faces/facelets/compiler/CompilationUnit.java   |    31 +-
 .../com/sun/faces/facelets/compiler/Compiler.java  |    36 +-
 .../CompilerPackageCompilationMessageHolder.java   |    36 +-
 .../faces/facelets/compiler/EncodingHandler.java   |    42 +-
 .../facelets/compiler/EndElementInstruction.java   |    30 +-
 .../facelets/compiler/ImplementationUnit.java      |    30 +-
 .../sun/faces/facelets/compiler/Instruction.java   |    30 +-
 .../sun/faces/facelets/compiler/InterfaceUnit.java |    29 +-
 .../compiler/LiteralAttributeInstruction.java      |    30 +-
 .../compiler/LiteralCommentInstruction.java        |    30 +-
 .../facelets/compiler/LiteralTextInstruction.java  |    40 +-
 .../facelets/compiler/LiteralXMLInstruction.java   |    29 +-
 .../faces/facelets/compiler/NamespaceHandler.java  |    28 +-
 .../faces/facelets/compiler/NamespaceManager.java  |    32 +-
 .../sun/faces/facelets/compiler/NamespaceUnit.java |    30 +-
 .../sun/faces/facelets/compiler/RemoveUnit.java    |    30 +-
 .../sun/faces/facelets/compiler/SAXCompiler.java   |   177 +-
 .../facelets/compiler/StartElementInstruction.java |    29 +-
 .../com/sun/faces/facelets/compiler/TagUnit.java   |    33 +-
 .../faces/facelets/compiler/TextInstruction.java   |    29 +-
 .../com/sun/faces/facelets/compiler/TextUnit.java  |   102 +-
 .../faces/facelets/compiler/TrimmedTagUnit.java    |    28 +-
 .../facelets/compiler/UIInstructionHandler.java    |    38 +-
 .../faces/facelets/compiler/UIInstructions.java    |    32 +-
 .../com/sun/faces/facelets/compiler/UILeaf.java    |    30 +-
 .../sun/faces/facelets/compiler/UILiteralText.java |    29 +-
 .../facelets/compiler/UILiteralTextHandler.java    |    29 +-
 .../com/sun/faces/facelets/compiler/UIText.java    |    31 +-
 .../sun/faces/facelets/compiler/UITextHandler.java |    31 +-
 .../faces/facelets/compiler/XMLInstruction.java    |    29 +-
 .../faces/facelets/component/RepeatRenderer.java   |    29 +-
 .../com/sun/faces/facelets/component/UIRepeat.java |   217 +-
 .../faces/facelets/el/CompositeFunctionMapper.java |    31 +-
 .../faces/facelets/el/CompositeVariableMapper.java |    30 +-
 .../el/ContextualCompositeMethodExpression.java    |   601 +-
 .../el/ContextualCompositeValueExpression.java     |    31 +-
 .../faces/facelets/el/DefaultFunctionMapper.java   |    31 +-
 .../faces/facelets/el/DefaultVariableMapper.java   |    30 +-
 .../java/com/sun/faces/facelets/el/ELText.java     |   106 +-
 .../com/sun/faces/facelets/el/LegacyELContext.java |    33 +-
 .../sun/faces/facelets/el/LegacyMethodBinding.java |    33 +-
 .../sun/faces/facelets/el/LegacyValueBinding.java  |    30 +-
 .../sun/faces/facelets/el/TagMethodExpression.java |    31 +-
 .../sun/faces/facelets/el/TagValueExpression.java  |    49 +-
 .../faces/facelets/el/VariableMapperWrapper.java   |    31 +-
 .../sun/faces/facelets/impl/DefaultFacelet.java    |    89 +-
 .../faces/facelets/impl/DefaultFaceletCache.java   |    95 +-
 .../faces/facelets/impl/DefaultFaceletContext.java |    31 +-
 .../faces/facelets/impl/DefaultFaceletFactory.java |   315 +-
 .../facelets/impl/DefaultResourceResolver.java     |    51 +-
 .../facelets/impl/FaceletCacheFactoryImpl.java     |    66 +
 .../java/com/sun/faces/facelets/impl/IdMapper.java |    29 +-
 .../faces/facelets/impl/XMLFrontMatterSaver.java   |    53 +
 .../sun/faces/facelets/tag/AbstractTagLibrary.java |    80 +-
 .../faces/facelets/tag/BeanPropertyTagRule.java    |    31 +-
 .../faces/facelets/tag/CompositeTagDecorator.java  |    43 +-
 .../faces/facelets/tag/CompositeTagLibrary.java    |    49 +-
 .../faces/facelets/tag/DefaultTagDecorator.java    |   315 +
 .../sun/faces/facelets/tag/IterationStatus.java    |    31 +-
 .../sun/faces/facelets/tag/MetaRulesetImpl.java    |    48 +-
 .../sun/faces/facelets/tag/MetaTagHandlerImpl.java |    31 +-
 .../com/sun/faces/facelets/tag/MetadataImpl.java   |    30 +-
 .../sun/faces/facelets/tag/MetadataTargetImpl.java |    30 +-
 .../com/sun/faces/facelets/tag/MethodRule.java     |    28 +-
 .../sun/faces/facelets/tag/TagAttributeImpl.java   |    64 +-
 .../sun/faces/facelets/tag/TagAttributesImpl.java  |    47 +-
 .../sun/faces/facelets/tag/TagHandlerFactory.java  |    31 +-
 .../com/sun/faces/facelets/tag/TagHandlerImpl.java |    36 +-
 .../com/sun/faces/facelets/tag/TagLibrary.java     |    32 +-
 .../com/sun/faces/facelets/tag/TagLibraryImpl.java |    45 +-
 .../com/sun/faces/facelets/tag/UserTagHandler.java |    31 +-
 .../ActionSource2AttachedObjectTargetHandler.java  |    29 +-
 .../ActionSource2AttachedObjectTargetImpl.java     |    28 +-
 .../tag/composite/AttachedObjectTargetHandler.java |    29 +-
 .../tag/composite/AttachedObjectTargetImpl.java    |    33 +-
 .../facelets/tag/composite/AttributeHandler.java   |   126 +-
 .../BehaviorHolderAttachedObjectTargetHandler.java |    54 +-
 .../BehaviorHolderAttachedObjectTargetImpl.java    |    36 +-
 .../tag/composite/BehaviorHolderWrapper.java       |    41 +-
 .../tag/composite/CompositeComponentBeanInfo.java  |    29 +-
 .../facelets/tag/composite/CompositeLibrary.java   |    37 +-
 .../tag/composite/DeclareFacetHandler.java         |    29 +-
 ...ableValueHolderAttachedObjectTargetHandler.java |    28 +-
 ...ditableValueHolderAttachedObjectTargetImpl.java |    28 +-
 .../facelets/tag/composite/ExtensionHandler.java   |    36 +-
 .../tag/composite/ImplementationHandler.java       |    28 +-
 .../tag/composite/InsertChildrenHandler.java       |   428 +-
 .../facelets/tag/composite/InsertFacetHandler.java |    40 +-
 .../facelets/tag/composite/InterfaceHandler.java   |    34 +-
 .../facelets/tag/composite/PropertyHandler.java    |    30 +-
 .../tag/composite/PropertyHandlerManager.java      |    72 +-
 .../facelets/tag/composite/RelocateListener.java   |    28 +-
 .../facelets/tag/composite/RenderFacetHandler.java |    46 +-
 .../tag/composite/TypedPropertyHandler.java        |    29 +-
 .../ValueHolderAttachedObjectTargetHandler.java    |    28 +-
 .../ValueHolderAttachedObjectTargetImpl.java       |    29 +-
 .../faces/facelets/tag/jsf/ActionSourceRule.java   |    51 +-
 .../faces/facelets/tag/jsf/AttachedBehaviors.java  |    36 +-
 .../tag/jsf/BehaviorTagHandlerDelegateImpl.java    |    38 +-
 .../sun/faces/facelets/tag/jsf/ComponentRule.java  |    31 +-
 .../faces/facelets/tag/jsf/ComponentSupport.java   |   295 +-
 .../tag/jsf/ComponentTagHandlerDelegateImpl.java   |  1154 +-
 .../facelets/tag/jsf/CompositeComponentImpl.java   |    28 +-
 .../tag/jsf/CompositeComponentTagHandler.java      |   155 +-
 .../tag/jsf/CompositeComponentTagLibrary.java      |    93 +-
 .../tag/jsf/ConverterTagHandlerDelegateImpl.java   |    46 +-
 .../facelets/tag/jsf/EditableValueHolderRule.java  |    28 +-
 .../facelets/tag/jsf/FacesComponentTagLibrary.java |   161 +
 .../faces/facelets/tag/jsf/IterationIdManager.java |    71 +
 .../sun/faces/facelets/tag/jsf/LazyTagLibrary.java |    53 +
 .../tag/jsf/PassThroughAttributeLibrary.java       |    55 +
 .../jsf/PassThroughElementComponentHandler.java    |   107 +
 .../tag/jsf/PassThroughElementLibrary.java         |    58 +
 .../faces/facelets/tag/jsf/RenderPropertyRule.java |    30 +-
 .../tag/jsf/TagHandlerDelegateFactoryImpl.java     |    39 +-
 .../tag/jsf/ValidatorTagHandlerDelegateImpl.java   |    61 +-
 .../faces/facelets/tag/jsf/ValueHolderRule.java    |    30 +-
 .../tag/jsf/core/ActionListenerHandler.java        |   110 +-
 .../tag/jsf/core/ActionListenerHandlerBase.java    |   145 +
 .../faces/facelets/tag/jsf/core/AjaxHandler.java   |    50 +-
 .../facelets/tag/jsf/core/AttributeHandler.java    |    28 +-
 .../facelets/tag/jsf/core/AttributesHandler.java   |   122 +
 .../tag/jsf/core/ConvertDateTimeHandler.java       |    34 +-
 .../tag/jsf/core/ConvertDelegateHandler.java       |    30 +-
 .../tag/jsf/core/ConvertNumberHandler.java         |    31 +-
 .../faces/facelets/tag/jsf/core/CoreLibrary.java   |    55 +-
 .../faces/facelets/tag/jsf/core/EventHandler.java  |    33 +-
 .../faces/facelets/tag/jsf/core/FacetHandler.java  |    31 +-
 .../facelets/tag/jsf/core/LoadBundleHandler.java   |    33 +-
 .../facelets/tag/jsf/core/MetadataHandler.java     |    38 +-
 .../tag/jsf/core/PassThroughAttributeHandler.java  |   129 +
 .../tag/jsf/core/PassThroughAttributesHandler.java |   103 +
 .../tag/jsf/core/PhaseListenerHandler.java         |    74 +-
 .../facelets/tag/jsf/core/ResetValuesHandler.java  |   154 +
 .../jsf/core/SetPropertyActionListenerHandler.java |    38 +-
 .../tag/jsf/core/ValidateDelegateHandler.java      |    31 +-
 .../tag/jsf/core/ValueChangeListenerHandler.java   |    75 +-
 .../facelets/tag/jsf/core/VerbatimHandler.java     |    29 +-
 .../faces/facelets/tag/jsf/core/ViewHandler.java   |   119 +-
 .../facelets/tag/jsf/html/AbstractHtmlLibrary.java |    28 +-
 .../tag/jsf/html/ComponentResourceDelegate.java    |    36 +-
 .../tag/jsf/html/HtmlComponentHandler.java         |    30 +-
 .../faces/facelets/tag/jsf/html/HtmlDecorator.java |    34 +-
 .../faces/facelets/tag/jsf/html/HtmlLibrary.java   |    51 +-
 .../tag/jsf/html/ScriptResourceDelegate.java       |    36 +-
 .../tag/jsf/html/ScriptResourceHandler.java        |    36 +-
 .../tag/jsf/html/StylesheetResourceDelegate.java   |    36 +-
 .../tag/jsf/html/StylesheetResourceHandler.java    |    36 +-
 .../sun/faces/facelets/tag/jsf/html/package.html   |    44 +-
 .../faces/facelets/tag/jstl/core/CatchHandler.java |    28 +-
 .../facelets/tag/jstl/core/ChooseHandler.java      |    28 +-
 .../tag/jstl/core/ChooseOtherwiseHandler.java      |    28 +-
 .../facelets/tag/jstl/core/ChooseWhenHandler.java  |    29 +-
 .../facelets/tag/jstl/core/ForEachHandler.java     |    61 +-
 .../faces/facelets/tag/jstl/core/IfHandler.java    |    29 +-
 .../tag/jstl/core/IndexedValueExpression.java      |    29 +-
 .../tag/jstl/core/IteratedValueExpression.java     |    65 +-
 .../tag/jstl/core/IterationStatusExpression.java   |    51 +-
 .../facelets/tag/jstl/core/JstlCoreLibrary.java    |    68 +-
 .../tag/jstl/core/JstlIterationStatus.java         |    36 +-
 .../tag/jstl/core/MappedValueExpression.java       |    31 +-
 .../faces/facelets/tag/jstl/core/SetHandler.java   |    37 +-
 .../faces/facelets/tag/jstl/fn/JstlFunction.java   |    40 +-
 .../sun/faces/facelets/tag/ui/ComponentRef.java    |    28 +-
 .../faces/facelets/tag/ui/ComponentRefHandler.java |    28 +-
 .../faces/facelets/tag/ui/CompositionHandler.java  |    58 +-
 .../sun/faces/facelets/tag/ui/DecorateHandler.java |    36 +-
 .../sun/faces/facelets/tag/ui/DefineHandler.java   |    37 +-
 .../sun/faces/facelets/tag/ui/IncludeHandler.java  |    48 +-
 .../sun/faces/facelets/tag/ui/InsertHandler.java   |    37 +-
 .../sun/faces/facelets/tag/ui/ParamHandler.java    |    28 +-
 .../sun/faces/facelets/tag/ui/RepeatHandler.java   |    50 +-
 .../tag/ui/SchemaCompliantRemoveHandler.java       |    30 +-
 .../com/sun/faces/facelets/tag/ui/UIDebug.java     |   107 +-
 .../com/sun/faces/facelets/tag/ui/UILibrary.java   |    39 +-
 .../com/sun/faces/facelets/tag/ui/package.html     |    44 +-
 .../com/sun/faces/facelets/util/Classpath.java     |   118 +-
 .../java/com/sun/faces/facelets/util/DevTools.java |    51 +-
 .../com/sun/faces/facelets/util/FastWriter.java    |    34 +-
 .../sun/faces/facelets/util/FunctionLibrary.java   |    42 +-
 .../java/com/sun/faces/facelets/util/Path.java     |    36 +-
 .../sun/faces/facelets/util/ReflectionUtil.java    |   196 +-
 .../java/com/sun/faces/facelets/util/Resource.java |   189 -
 .../faces/facelets/util/ResourceResolverProxy.java |    36 +-
 .../java/com/sun/faces/flow/FlowCDIContext.java    |   509 +
 .../com/sun/faces/flow/FlowCDIEventFireHelper.java |    51 +
 .../sun/faces/flow/FlowCDIEventFireHelperImpl.java |    68 +
 .../java/com/sun/faces/flow/FlowCDIExtension.java  |   130 +
 .../java/com/sun/faces/flow/FlowCallNodeImpl.java  |   165 +
 .../sun/faces/flow/FlowDiscoveryCDIExtension.java  |   118 +
 .../com/sun/faces/flow/FlowDiscoveryCDIHelper.java |    77 +
 .../java/com/sun/faces/flow/FlowDiscoveryInfo.java |    81 +
 .../com/sun/faces/flow/FlowHandlerFactoryImpl.java |    61 +
 .../java/com/sun/faces/flow/FlowHandlerImpl.java   |   558 +
 .../src/main/java/com/sun/faces/flow/FlowImpl.java |   405 +
 .../com/sun/faces/flow/MethodCallNodeImpl.java     |   159 +
 .../java/com/sun/faces/flow/ParameterImpl.java     |    83 +
 .../java/com/sun/faces/flow/ReturnNodeImpl.java    |    98 +
 .../java/com/sun/faces/flow/SwitchCaseImpl.java    |   104 +
 .../java/com/sun/faces/flow/SwitchNodeImpl.java    |   140 +
 .../main/java/com/sun/faces/flow/ViewNodeImpl.java |    79 +
 .../sun/faces/flow/builder/FlowBuilderImpl.java    |   209 +
 .../faces/flow/builder/FlowCallBuilderImpl.java    |   115 +
 .../faces/flow/builder/MethodCallBuilderImpl.java  |   117 +
 .../faces/flow/builder/MutableNavigationCase.java  |   339 +
 .../flow/builder/NavigationCaseBuilderImpl.java    |   156 +
 .../sun/faces/flow/builder/ReturnBuilderImpl.java  |    83 +
 .../sun/faces/flow/builder/SwitchBuilderImpl.java  |    99 +
 .../faces/flow/builder/SwitchCaseBuilderImpl.java  |    91 +
 .../sun/faces/flow/builder/ViewBuilderImpl.java    |    68 +
 .../java/com/sun/faces/io/Base64InputStream.java   |    37 +-
 .../com/sun/faces/io/Base64OutputStreamWriter.java |    37 +-
 .../java/com/sun/faces/io/FastStringWriter.java    |    36 +-
 .../faces/lifecycle/ApplyRequestValuesPhase.java   |    36 +-
 .../faces/lifecycle/ClientWindowFactoryImpl.java   |   102 +
 .../com/sun/faces/lifecycle/ClientWindowImpl.java  |   101 +
 .../lifecycle/ELResolverInitPhaseListener.java     |    80 +-
 .../HttpMethodRestrictionsPhaseListener.java       |    79 +
 .../faces/lifecycle/InvokeApplicationPhase.java    |    36 +-
 .../sun/faces/lifecycle/LifecycleFactoryImpl.java  |    43 +-
 .../com/sun/faces/lifecycle/LifecycleImpl.java     |   118 +-
 .../main/java/com/sun/faces/lifecycle/Phase.java   |    36 +-
 .../faces/lifecycle/ProcessValidationsPhase.java   |    36 +-
 .../sun/faces/lifecycle/RenderResponsePhase.java   |    39 +-
 .../com/sun/faces/lifecycle/RestoreViewPhase.java  |   266 +-
 .../faces/lifecycle/UpdateModelValuesPhase.java    |    36 +-
 .../java/com/sun/faces/mgbean/BeanBuilder.java     |    74 +-
 .../java/com/sun/faces/mgbean/BeanManager.java     |  1571 +--
 .../main/java/com/sun/faces/mgbean/ErrorBean.java  |    36 +-
 .../com/sun/faces/mgbean/ManagedBeanBuilder.java   |    36 +-
 .../faces/mgbean/ManagedBeanCreationException.java |    36 +-
 .../java/com/sun/faces/mgbean/ManagedBeanInfo.java |    36 +-
 .../mgbean/ManagedBeanPreProcessingException.java  |    36 +-
 .../sun/faces/mgbean/ManagedListBeanBuilder.java   |    36 +-
 .../sun/faces/mgbean/ManagedMapBeanBuilder.java    |    36 +-
 .../renderkit/ApplicationObjectInputStream.java    |    36 +-
 .../java/com/sun/faces/renderkit/Attribute.java    |    36 +-
 .../com/sun/faces/renderkit/ByteArrayGuard.java    |   474 +-
 .../sun/faces/renderkit/ClientSideStateHelper.java |   338 +-
 .../sun/faces/renderkit/RenderKitFactoryImpl.java  |    36 +-
 .../com/sun/faces/renderkit/RenderKitImpl.java     |    46 +-
 .../com/sun/faces/renderkit/RenderKitUtils.java    |   202 +-
 .../faces/renderkit/ResponseStateManagerImpl.java  |    57 +-
 .../sun/faces/renderkit/SelectItemsIterator.java   |    95 +-
 .../sun/faces/renderkit/ServerSideStateHelper.java |   261 +-
 .../java/com/sun/faces/renderkit/StateHelper.java  |   175 +-
 .../renderkit/html_basic/AjaxBehaviorRenderer.java |   113 +-
 .../renderkit/html_basic/BaseTableRenderer.java    |    37 +-
 .../faces/renderkit/html_basic/BodyRenderer.java   |   223 +-
 .../faces/renderkit/html_basic/ButtonRenderer.java |    48 +-
 .../renderkit/html_basic/CheckboxRenderer.java     |    34 +-
 .../renderkit/html_basic/CommandLinkRenderer.java  |    36 +-
 .../html_basic/CompositeFacetRenderer.java         |    29 +-
 .../renderkit/html_basic/CompositeRenderer.java    |    29 +-
 .../renderkit/html_basic/DoctypeRenderer.java      |    93 +
 .../faces/renderkit/html_basic/FileRenderer.java   |   147 +
 .../faces/renderkit/html_basic/FormRenderer.java   |    78 +-
 .../faces/renderkit/html_basic/GridRenderer.java   |    36 +-
 .../faces/renderkit/html_basic/GroupRenderer.java  |    51 +-
 .../faces/renderkit/html_basic/HeadRenderer.java   |    38 +-
 .../faces/renderkit/html_basic/HiddenRenderer.java |    36 +-
 .../html_basic/HtmlBasicInputRenderer.java         |    36 +-
 .../renderkit/html_basic/HtmlBasicRenderer.java    |    42 +-
 .../renderkit/html_basic/HtmlResponseWriter.java   |  2625 ++--
 .../faces/renderkit/html_basic/ImageRenderer.java  |    36 +-
 .../faces/renderkit/html_basic/LabelRenderer.java  |   403 +-
 .../faces/renderkit/html_basic/LinkRenderer.java   |    36 +-
 .../renderkit/html_basic/ListboxRenderer.java      |    36 +-
 .../faces/renderkit/html_basic/MenuRenderer.java   |    51 +-
 .../renderkit/html_basic/MessageRenderer.java      |    42 +-
 .../renderkit/html_basic/MessagesRenderer.java     |    42 +-
 .../html_basic/OutcomeTargetButtonRenderer.java    |    48 +-
 .../html_basic/OutcomeTargetLinkRenderer.java      |   418 +-
 .../html_basic/OutcomeTargetRenderer.java          |   141 +-
 .../renderkit/html_basic/OutputLinkRenderer.java   |    54 +-
 .../html_basic/OutputMessageRenderer.java          |    51 +-
 .../renderkit/html_basic/PassthroughRenderer.java  |   130 +
 .../faces/renderkit/html_basic/RadioRenderer.java  |    36 +-
 .../faces/renderkit/html_basic/ScriptRenderer.java |    68 +-
 .../html_basic/ScriptStyleBaseRenderer.java        |    52 +-
 .../faces/renderkit/html_basic/SecretRenderer.java |    36 +-
 .../html_basic/SelectManyCheckboxListRenderer.java |    57 +-
 .../renderkit/html_basic/StylesheetRenderer.java   |    68 +-
 .../faces/renderkit/html_basic/TableRenderer.java  |    95 +-
 .../faces/renderkit/html_basic/TextRenderer.java   |    50 +-
 .../renderkit/html_basic/TextareaRenderer.java     |   237 +-
 .../sun/faces/scripting/GroovySupportFilter.java   |    56 +-
 .../scripting/NonWeldAwareGroovySupportFilter.java |    87 +
 .../com/sun/faces/scripting/ScriptManager.java     |    30 +-
 .../scripting/WeldAwareGroovySupportFilter.java    |   167 +
 .../scripting/groovy/ActionListenerProxy.java      |    29 +-
 .../faces/scripting/groovy/ELResolverProxy.java    |    28 +-
 .../sun/faces/scripting/groovy/GroovyHelper.java   |    38 +-
 .../scripting/groovy/GroovyHelperFactory.java      |    34 +-
 .../faces/scripting/groovy/GroovyHelperImpl.java   |    50 +-
 .../scripting/groovy/GroovyScriptManager.java      |    40 +-
 .../scripting/groovy/NavigationHandlerProxy.java   |    28 +-
 .../faces/scripting/groovy/PhaseListenerProxy.java |    28 +-
 .../sun/faces/scripting/groovy/RendererProxy.java  |    28 +-
 .../faces/scripting/groovy/ViewHandlerProxy.java   |    36 +-
 .../java/com/sun/faces/spi/AnnotationProvider.java |    33 +-
 .../sun/faces/spi/AnnotationProviderFactory.java   |    44 +-
 .../java/com/sun/faces/spi/AnnotationScanner.java  |    65 +
 .../faces/spi/ConfigurationResourceProvider.java   |    34 +-
 .../spi/ConfigurationResourceProviderFactory.java  |    58 +-
 .../faces/spi/DiscoverableInjectionProvider.java   |    36 +-
 .../faces/spi/FaceletConfigResourceProvider.java   |    28 +-
 .../sun/faces/spi/FacesConfigResourceProvider.java |    28 +-
 .../com/sun/faces/spi/HighAvailabilityEnabler.java |    55 +
 .../java/com/sun/faces/spi/InjectionProvider.java  |   147 +-
 .../sun/faces/spi/InjectionProviderException.java  |    38 +-
 .../sun/faces/spi/InjectionProviderFactory.java    |    68 +-
 .../com/sun/faces/spi/SerializationProvider.java   |    38 +-
 .../faces/spi/SerializationProviderFactory.java    |    36 +-
 .../java/com/sun/faces/spi/ServiceFactory.java     |    41 +-
 .../java/com/sun/faces/taglib/FacesValidator.java  |    39 +-
 .../main/java/com/sun/faces/taglib/TagParser.java  |    36 +-
 .../java/com/sun/faces/taglib/ValidatorInfo.java   |    36 +-
 .../com/sun/faces/taglib/html_basic/ColumnTag.java |    37 +-
 .../taglib/html_basic/CommandTagParserImpl.java    |    38 +-
 .../taglib/html_basic/HtmlBasicValidator.java      |    42 +-
 .../taglib/jsf_core/AbstractConverterTag.java      |    36 +-
 .../taglib/jsf_core/AbstractValidatorTag.java      |    37 +-
 .../faces/taglib/jsf_core/ActionListenerTag.java   |    36 +-
 .../sun/faces/taglib/jsf_core/AttributeTag.java    |    36 +-
 .../faces/taglib/jsf_core/ConvertDateTimeTag.java  |    36 +-
 .../faces/taglib/jsf_core/ConvertNumberTag.java    |    36 +-
 .../sun/faces/taglib/jsf_core/ConverterTag.java    |    36 +-
 .../faces/taglib/jsf_core/CoreTagParserImpl.java   |    36 +-
 .../sun/faces/taglib/jsf_core/CoreValidator.java   |    40 +-
 .../sun/faces/taglib/jsf_core/IdTagParserImpl.java |    36 +-
 .../sun/faces/taglib/jsf_core/LoadBundleTag.java   |    44 +-
 .../faces/taglib/jsf_core/MaxMinValidatorTag.java  |    36 +-
 .../sun/faces/taglib/jsf_core/ParameterTag.java    |    36 +-
 .../faces/taglib/jsf_core/PhaseListenerTag.java    |    36 +-
 .../faces/taglib/jsf_core/RegexValidatorTag.java   |    39 +-
 .../sun/faces/taglib/jsf_core/SelectItemTag.java   |    36 +-
 .../sun/faces/taglib/jsf_core/SelectItemsTag.java  |    38 +-
 .../jsf_core/SetPropertyActionListenerImpl.java    |    29 +-
 .../jsf_core/SetPropertyActionListenerTag.java     |    36 +-
 .../com/sun/faces/taglib/jsf_core/SubviewTag.java  |    43 +-
 .../taglib/jsf_core/ValidateDoubleRangeTag.java    |    36 +-
 .../faces/taglib/jsf_core/ValidateLengthTag.java   |    36 +-
 .../taglib/jsf_core/ValidateLongRangeTag.java      |    36 +-
 .../sun/faces/taglib/jsf_core/ValidatorTag.java    |    36 +-
 .../taglib/jsf_core/ValueChangeListenerTag.java    |    36 +-
 .../com/sun/faces/taglib/jsf_core/VerbatimTag.java |    36 +-
 .../com/sun/faces/taglib/jsf_core/ViewTag.java     |    58 +-
 .../com/sun/faces/util/ByteArrayGuardAESCTR.java   |   224 +
 jsf-ri/src/main/java/com/sun/faces/util/Cache.java |   131 +-
 .../java/com/sun/faces/util/CollectionsUtils.java  |    37 +-
 .../java/com/sun/faces/util/ComponentStruct.java   |    94 +-
 .../java/com/sun/faces/util/ConcurrentCache.java   |    39 +-
 .../sun/faces/util/DebugObjectOutputStream.java    |   179 +
 .../main/java/com/sun/faces/util/DebugUtil.java    |   875 +-
 .../sun/faces/util/ExpiringConcurrentCache.java    |    40 +-
 .../main/java/com/sun/faces/util/FacesLogger.java  |    74 +-
 .../main/java/com/sun/faces/util/HtmlUtils.java    |    69 +-
 .../src/main/java/com/sun/faces/util/LRUMap.java   |    36 +-
 .../main/java/com/sun/faces/util/MessageUtils.java |    43 +-
 .../com/sun/faces/util/MetadataWrapperMap.java     |   115 +
 .../com/sun/faces/util/MojarraThreadFactory.java   |    30 +-
 .../com/sun/faces/util/MostlySingletonSet.java     |   353 +
 .../sun/faces/util/MultiKeyConcurrentHashMap.java  |    32 +-
 .../java/com/sun/faces/util/ReflectionUtils.java   |    38 +-
 .../com/sun/faces/util/RequestStateManager.java    |    56 +-
 jsf-ri/src/main/java/com/sun/faces/util/Timer.java |    36 +-
 jsf-ri/src/main/java/com/sun/faces/util/Util.java  |  1964 +--
 .../java/com/sun/faces/util/cdi11/CDIUtil.java     |    66 +
 .../java/com/sun/faces/util/cdi11/CDIUtilImpl.java |   176 +
 .../vendor/WebContainerInjectionProvider.java      |   182 +-
 .../resources/com/sun/faces/LogStrings.properties  |    33 +-
 .../com/sun/faces/LogStrings_de.properties         |    33 +-
 .../com/sun/faces/LogStrings_es.properties         |    34 +-
 .../com/sun/faces/LogStrings_fr.properties         |   195 +-
 .../com/sun/faces/LogStrings_ja.properties         |    33 +-
 .../com/sun/faces/LogStrings_ko.properties         |    33 +-
 .../com/sun/faces/LogStrings_pt_BR.properties      |    33 +-
 .../com/sun/faces/LogStrings_zh_CN.properties      |    33 +-
 .../com/sun/faces/LogStrings_zh_HK.properties      |   152 +
 .../com/sun/faces/LogStrings_zh_TW.properties      |    33 +-
 .../com/sun/faces/resources/Messages.properties    |    31 +-
 .../com/sun/faces/resources/Messages_de.properties |    37 +-
 .../com/sun/faces/resources/Messages_en.properties |    31 +-
 .../com/sun/faces/resources/Messages_es.properties |    31 +-
 .../com/sun/faces/resources/Messages_fr.properties |   283 +-
 .../com/sun/faces/resources/Messages_ja.properties |    31 +-
 .../com/sun/faces/resources/Messages_ko.properties |    31 +-
 .../sun/faces/resources/Messages_pt_BR.properties  |    31 +-
 .../sun/faces/resources/Messages_zh_CN.properties  |    31 +-
 .../sun/faces/resources/Messages_zh_HK.properties  |   188 +
 .../sun/faces/resources/Messages_zh_TW.properties  |    31 +-
 .../com/sun/faces/resources/Resources.properties   |    40 +
 .../com/sun/faces/standard-html-renderkit-impl.xml |    81 +-
 .../com/sun/faces/web-facesconfig_1_1.xsd          |   107 +-
 .../faces/systest/AbsoluteOrderingTestCase.java    |    40 +-
 .../java/com/sun/faces/systest/PhaseListenerA.java |    36 +-
 .../java/com/sun/faces/systest/PhaseListenerB.java |    38 +-
 .../java/com/sun/faces/systest/PhaseListenerC.java |    38 +-
 .../java/com/sun/faces/systest/PhaseListenerD.java |    38 +-
 .../com/sun/faces/systest/model/OrderingBean.java  |    36 +-
 .../absolute-ordering/web/WEB-INF/faces-config.xml |    73 +-
 .../web/WEB-INF/faces-configB.xml                  |    73 +-
 .../absolute-ordering/web/WEB-INF/web.xml          |    73 +-
 .../absolute-ordering/web/test.xhtml               |    73 +-
 ...ceVariableresolverProgrammaticallyTestCase.java |   126 +
 .../src/java/com/sun/faces/systest/Bean.java       |   134 +
 .../faces/systest/EagerApplicationScopedBean.java  |    69 +
 .../java/com/sun/faces/systest/NewELResolver.java  |   110 +
 .../com/sun/faces/systest/NewVariableResolver.java |   119 +
 .../add-er-replace-vr/web/WEB-INF/faces-config.xml |    65 +
 .../add-er-replace-vr/web/WEB-INF/web.xml          |    73 +
 .../add-er-replace-vr/web/test.jsp                 |    78 +
 .../add-er-replace-vr/web/test1.jsp                |    70 +
 .../systest/AnnotationProcessingTestCase.java      |    40 +-
 .../systest/model/AnnotationProcessingBean.java    |    28 +-
 .../faces/systest/test/NotFoundWebInfClasses.java  |    28 +-
 .../annotation-restrictions/web/WEB-INF/web.xml    |    73 +-
 .../annotation-restrictions/web/test.xhtml         |    73 +-
 .../systest/render/BogusRenderKitIdTestCase.java   |    95 +
 .../systest/render/model/BogusRenderKitIdBean.java |    64 +
 .../web/WEB-INF/faces-config.xml                   |    14 +
 .../web/use-basic-render-kit-id.xhtml              |    24 +
 .../web/use-configured-render-kit-id.xhtml         |    20 +
 jsf-ri/systest-per-webapp/build-tests.xml          |   243 +-
 jsf-ri/systest-per-webapp/build.xml                |   366 +-
 .../src/java/characterCombat/CharacterBean.java    |    71 +
 .../characterCombat/CharacterCombatTestCase.java   |    89 +
 .../src/java/characterCombat/ModelBean.java        |   451 +
 .../src/java/characterCombat/SpeciesBean.java      |    91 +
 .../src/java/characterCombat/WizardButtons.java    |   267 +
 .../characterCombat/web/WEB-INF/faces-config.xml   |   122 +
 .../characterCombat/web/WEB-INF/web.xml            |    53 +
 .../characterCombat/web/firstSelection.jsp         |    73 +
 .../characterCombat/web/images/header.jpg          |   Bin 0 -> 11996 bytes
 .../characterCombat/web/index.jsp                  |    37 +
 .../characterCombat/web/main.jsp                   |   133 +
 .../characterCombat/web/results.jsp                |    65 +
 .../characterCombat/web/secondSelection.jsp        |    75 +
 .../characterCombat/web/stylesheet.css             |    56 +
 .../characterCombat/web/wizard-buttons.jsp         |    41 +
 .../systest/clientside/AjaxMultiformTestCase.java  |    35 +-
 .../faces/systest/clientside/AjaxRequestBean.java  |    30 +-
 .../clientside-statesaving/web/WEB-INF/web.xml     |    73 +-
 .../clientside-statesaving/web/ajaxMultiform.xhtml |    63 +-
 .../ClusterNoAgressiveSessionDirtyingTestCase.java |   131 +
 .../com/sun/faces/systest/RequestScopedBean.java   |    64 +
 .../com/sun/faces/systest/SessionScopedBean.java   |    65 +
 .../web/WEB-INF/beans.xml                          |     0
 .../web/WEB-INF/web.xml                            |    74 +
 .../web/error.jsp                                  |    50 +
 .../web/session.xhtml                              |    64 +
 .../web/sessionComplex.xhtml                       |    65 +
 .../web/test.jsp                                   |    66 +
 .../systest/CommandLinkBackButtonTestCase.java     |    40 +-
 .../com/sun/faces/systest/model/BackingBean.java   |    37 +-
 .../web/WEB-INF/faces-config.xml                   |    74 +-
 .../command-link-back-button/web/WEB-INF/web.xml   |    73 +-
 .../command-link-back-button/web/buttonPressed.jsp |    97 +-
 .../command-link-back-button/web/linkPressed.jsp   |    97 +-
 .../command-link-back-button/web/test.jsp          |    97 +-
 .../web/WEB-INF/faces-config.xml                   |    74 +-
 .../command-link-redirect/web/WEB-INF/web.xml      |    73 +-
 .../command-link-redirect/web/five.jsp             |    97 +-
 .../command-link-redirect/web/four.jsp             |    97 +-
 .../command-link-redirect/web/one.jsp              |    97 +-
 .../command-link-redirect/web/three.jsp            |    97 +-
 .../command-link-redirect/web/two.jsp              |    97 +-
 .../systest/ConverterPropertyEditorTestCase.java   |   157 +-
 .../src/java/test/Payment.java                     |    36 +-
 .../src/java/test/PaymentConverter.java            |    36 +-
 .../src/java/test/TestBean.java                    |    36 +-
 .../web/WEB-INF/faces-config.xml                   |    74 +-
 .../web/WEB-INF/sun-web.xml                        |    73 +-
 .../converter-property-editor/web/WEB-INF/web.xml  |    73 +-
 .../converter-property-editor/web/index.jsp        |    78 +-
 .../converter-property-editor/web/selectmany.jsp   |    72 +-
 .../web/selectmanyCheckbox.jsp                     |    72 +-
 .../web/selectmanyListbox.jsp                      |    72 +-
 .../converter-property-editor/web/selectone.jsp    |    72 +-
 .../web/selectoneRadio.jsp                         |    72 +-
 .../converter-property-editor/web/welcome.jsp      |   124 +-
 .../com/sun/faces/systest/CoreTagsListener.java    |    28 +-
 .../com/sun/faces/systest/CoreTagsTestCase.java    |    40 +-
 .../core-tags/web/WEB-INF/web.xml                  |    73 +-
 .../core-tags/web/converter_noval.jsp              |    96 +-
 .../core-tags/web/listener_noval.jsp               |    96 +-
 .../core-tags/web/validator_noval.jsp              |    96 +-
 .../systest/DisableBeanValidatorTestCase.java      |    40 +-
 .../disable-bean-validator/web/WEB-INF/web.xml     |    62 +-
 .../disable-bean-validator/web/enable.xhtml        |    72 +-
 .../disable-bean-validator/web/index.html          |    71 +-
 .../disable-bean-validator/web/index.xhtml         |    72 +-
 .../java/com/sun/faces/systest/UnicodeBean.java    |    28 +-
 .../com/sun/faces/systest/UnicodeBeanFilter.java   |    29 +-
 .../com/sun/faces/systest/UnicodeTestCase.java     |    32 +-
 .../web/WEB-INF/faces-config.xml                   |    73 +-
 .../disable-unicode-escaping/web/WEB-INF/web.xml   |    73 +-
 .../web/indexISO8859_1.jsp                         |    91 +-
 .../disable-unicode-escaping/web/indexUSASCII.jsp  |    91 +-
 .../disable-unicode-escaping/web/indexUTF.jsp      |    91 +-
 .../faces/systest/DocumentOrderingTestCase.java    |    40 +-
 .../java/com/sun/faces/systest/PhaseListenerA.java |    36 +-
 .../java/com/sun/faces/systest/PhaseListenerB.java |    38 +-
 .../java/com/sun/faces/systest/PhaseListenerC.java |    38 +-
 .../java/com/sun/faces/systest/PhaseListenerD.java |    38 +-
 .../com/sun/faces/systest/model/OrderingBean.java  |    36 +-
 .../document-ordering/web/WEB-INF/faces-config.xml |    73 +-
 .../web/WEB-INF/faces-configB.xml                  |    73 +-
 .../document-ordering/web/WEB-INF/web.xml          |    73 +-
 .../document-ordering/web/test.xhtml               |    73 +-
 .../java/com/sun/faces/systest/EvaluatorBean.java  |    36 +-
 .../el-performance/web/WEB-INF/faces-config.xml    |    74 +-
 .../el-performance/web/WEB-INF/web.xml             |    73 +-
 .../el-performance/web/attribute-test.jsp          |    97 +-
 .../systest-per-webapp/el-performance/web/test.jsp |    97 +-
 .../faces/systest/EmptyStringAsNullTestCase.java   |   163 -
 .../src/java/com/sun/faces/systest/model/Bean.java |    99 -
 .../web/WEB-INF/faces-config.xml                   |    51 -
 .../empty-string-as-null/web/WEB-INF/web.xml       |    66 -
 .../empty-string-as-null/web/test.xhtml            |    62 -
 .../faces/systest/FindResourcesInJarTestCase.java  |   110 +
 .../find-resources-in-jar/web/index.xhtml          |    25 +
 .../flash/src/java/com/sun/faces/CustomerBean.java |    49 +
 .../flash/src/java/com/sun/faces/model/Bean.java   |    32 +-
 .../com/sun/faces/model/SessionScopedBean.java     |   125 +
 .../com/sun/faces/run_time_test/ResultSetBean.java |    28 +-
 .../java/com/sun/faces/systest/FlashTestCase.java  |    93 +-
 .../flash/web/WEB-INF/faces-config.xml             |    58 +-
 .../systest-per-webapp/flash/web/WEB-INF/web.xml   |    56 +-
 jsf-ri/systest-per-webapp/flash/web/flash10.xhtml  |    73 +-
 jsf-ri/systest-per-webapp/flash/web/flash11.xhtml  |    73 +-
 jsf-ri/systest-per-webapp/flash/web/flash12.xhtml  |    73 +-
 jsf-ri/systest-per-webapp/flash/web/flash13.xhtml  |    57 +
 jsf-ri/systest-per-webapp/flash/web/flash14.xhtml  |    53 +
 jsf-ri/systest-per-webapp/flash/web/flash2.xhtml   |    72 +-
 jsf-ri/systest-per-webapp/flash/web/flash3.xhtml   |    72 +-
 jsf-ri/systest-per-webapp/flash/web/flash4.xhtml   |    72 +-
 jsf-ri/systest-per-webapp/flash/web/flash5.xhtml   |    63 +-
 jsf-ri/systest-per-webapp/flash/web/flash6.xhtml   |    73 +-
 jsf-ri/systest-per-webapp/flash/web/flash7.xhtml   |    73 +-
 jsf-ri/systest-per-webapp/flash/web/flash8.xhtml   |    73 +-
 jsf-ri/systest-per-webapp/flash/web/flash9.xhtml   |    73 +-
 jsf-ri/systest-per-webapp/flash/web/index.html     |    71 +-
 jsf-ri/systest-per-webapp/flash/web/index.xhtml    |    74 +-
 .../formOmittedTrinidad/README.txt                 |    11 +
 .../systest-per-webapp/injection/jsf-injection.war |   Bin 0 -> 187064 bytes
 .../src/java/com/sun/faces/systest/Foo.java        |    45 +
 .../src/java/com/sun/faces/systest/Injection.java  |    83 +
 .../com/sun/faces/systest/InjectionTestCase.java   |   125 +
 .../injection/web/WEB-INF/beans.xml                |     0
 .../injection/web/WEB-INF/web.xml                  |    91 +
 .../injection/web/injection.xhtml                  |    19 +
 .../sun/faces/systest/InvalidMappingTestCase.java  |    60 +-
 .../invalid-mapping/web/WEB-INF/web.xml            |    73 +-
 .../invalid-mapping/web/test.jsp                   |    97 +-
 .../com/sun/faces/systest/JarOrderingTestCase.java |    40 +-
 .../jar-ordering/web/WEB-INF/web.xml               |    73 +-
 .../systest-per-webapp/jar-ordering/web/test.jsp   |    97 +-
 .../com/sun/faces/systest/JspFlashTestCase.java    |    40 +-
 .../src/java/com/sun/faces/systest/model/Bean.java |    28 +-
 .../jsp-flash/web/WEB-INF/faces-config.xml         |    58 +-
 .../jsp-flash/web/WEB-INF/web.xml                  |    62 +-
 .../jsp-flash/web/bottomPanel.jsp                  |    71 +-
 jsf-ri/systest-per-webapp/jsp-flash/web/flash2.jsp |    70 +-
 jsf-ri/systest-per-webapp/jsp-flash/web/flash3.jsp |    70 +-
 jsf-ri/systest-per-webapp/jsp-flash/web/flash4.jsp |    70 +-
 .../jsp-flash/web/home-flash.jsp                   |     2 +-
 jsf-ri/systest-per-webapp/jsp-flash/web/index.html |    71 +-
 .../jsp-flash/web/rightColumn.jsp                  |    71 +-
 .../com/sun/faces/systest/LateBindingTestCase.java |    40 +-
 .../src/java/com/sun/faces/systest/late/Bean.java  |    36 +-
 .../com/sun/faces/systest/late/LBConverter.java    |    28 +-
 .../com/sun/faces/systest/late/LBValidator.java    |    28 +-
 .../systest-per-webapp/late-bindings/web/Test.jsp  |    75 +-
 .../late-bindings/web/WEB-INF/faces-config.xml     |    74 +-
 .../late-bindings/web/WEB-INF/web.xml              |    73 +-
 .../InvokeOnComponentBean.java                     |   119 +
 .../MyFacesUIDataTestCase.java                     |   218 +
 .../SimpleCity.java                                |   110 +
 .../SimpleCountry.java                             |   234 +
 .../SimpleCountryList.java                         |   205 +
 .../example_messages.properties                    |   236 +
 .../web/WEB-INF/faces-config.xml                   |    54 +
 .../web/WEB-INF/web.xml                            |   156 +
 .../web/home.xhtml                                 |    81 +
 .../web/index.html                                 |     5 +
 .../web/nestedDatatable.xhtml                      |   126 +
 .../web/nestedDatatableCCInsertChildren.xhtml      |   131 +
 .../web/nestedDatatableCCResource.xhtml            |   127 +
 .../web/resources/basic.css                        |   686 +
 .../web/resources/css/style.css                    |    56 +
 .../web/resources/test/inputText.css               |    44 +
 .../web/resources/test/inputText.xhtml             |    61 +
 .../web/resources/test/simpleInsertChildren.xhtml  |    58 +
 .../web/showProblem.xhtml                          |   124 +
 .../web/simpleDatatable.xhtml                      |   115 +
 .../web/simpleDatatableCCInsertChildren.xhtml      |   118 +
 .../web/simpleDatatableCCResource.xhtml            |   116 +
 .../faces/systest/NestedDatatablesTestCase.java    |    40 +-
 .../com/sun/faces/systest/model/ActionBean.java    |    36 +-
 .../java/com/sun/faces/systest/model/Bean62.java   |    29 +-
 .../java/com/sun/faces/systest/model/BeanList.java |    36 +-
 .../com/sun/faces/systest/model/InputBean.java     |    36 +-
 .../systest/model/PrintTreePhaseListener.java      |    36 +-
 .../src/java/com/tavve/webapps/nested/Port.java    |    36 +-
 .../src/java/com/tavve/webapps/nested/Service.java |    36 +-
 .../java/com/tavve/webapps/nested/TestBean.java    |    36 +-
 .../src/java/test/NestedBean.java                  |    29 +-
 .../nested-datatables/web/WEB-INF/faces-config.xml |    74 +-
 .../nested-datatables/web/WEB-INF/web.xml          |    73 +-
 .../nested-datatables/web/index.jsp                |    97 +-
 .../nested-datatables/web/jsfri62.jsp              |    97 +-
 .../nested-datatables/web/nested.jsp               |    97 +-
 .../nested-datatables/web/nestedTest-jsfri159.jsp  |    97 +-
 .../nested-datatables/web/test.jsp                 |    97 +-
 .../nested-datatables/web/test2.jsp                |    97 +-
 .../faces/systest/NestedLoadBundlesTestCase.java   |    40 +-
 .../sun/faces/systest/model/BundleA_en.properties  |    40 +
 .../sun/faces/systest/model/BundleB_en.properties  |    40 +
 .../sun/faces/systest/model/BundleC_en.properties  |    40 +
 .../sun/faces/systest/model/BundleD_en.properties  |    40 +
 .../sun/faces/systest/model/BundleE_en.properties  |    40 +
 .../web/WEB-INF/faces-config.xml                   |    74 +-
 .../nested-loadbundles/web/WEB-INF/web.xml         |    73 +-
 .../nested-loadbundles/web/bar01.jsp               |    77 +-
 .../nested-loadbundles/web/bar02.jsp               |    77 +-
 .../nested-loadbundles/web/foo01.jsp               |    77 +-
 .../nested-loadbundles/web/foo02.jsp               |    77 +-
 .../nested-loadbundles/web/index.jsp               |    77 +-
 .../systest/NeverUnwrapExceptionsTestCase.java     |    40 +-
 .../faces/systest/model/CatchExceptionServlet.java |    36 +-
 .../model/ThrowWrappedExceptionOnPropertyGet.java  |    37 +-
 .../web/WEB-INF/faces-config.xml                   |    74 +-
 .../never-unwrap-exceptions/web/WEB-INF/web.xml    |    73 +-
 .../never-unwrap-exceptions/web/error.jsp          |    72 +-
 .../never-unwrap-exceptions/web/test.jsp           |    97 +-
 .../src/java/com/sun/faces/systest/HelloBean.java  |    62 +
 .../com/sun/faces/systest/NoWebXMLTestCase.java    |   123 +
 .../systest-per-webapp/no-web-xml/web/hello.xhtml  |    18 +
 .../systest-per-webapp/no-web-xml/web/submit.xhtml |    17 +
 .../process-as-jspx/src/java/Blink.java            |   116 +
 .../faces/facelets/tag/jsp/DummyTagHandler.java    |    65 +
 .../sun/faces/facelets/tag/jsp/ForwardHandler.java |   193 +
 .../facelets/tag/jsp/GetPropertyRenderer.java      |    95 +
 .../facelets/tag/jsp/PageDirectiveHandler.java     |    81 +
 .../sun/faces/facelets/tag/jsp/ParamHandler.java   |   121 +
 .../sun/faces/facelets/tag/jsp/PluginRenderer.java |   233 +
 .../faces/facelets/tag/jsp/SetPropertyHandler.java |   147 +
 .../sun/faces/facelets/tag/jsp/UseBeanHandler.java |   157 +
 .../tag/jsp/WrapHttpServletRequestToAddParams.java |    53 +
 .../com/sun/faces/systest/ProcessAsJspxBean.java   |    54 +
 .../sun/faces/systest/ProcessAsJspxTestCase.java   |   167 +
 .../java/com/sun/faces/systest/UseBeanBean.java    |    61 +
 .../process-as-jspx/web/WEB-INF/faces-config.xml   |    19 +
 .../process-as-jspx/web/WEB-INF/jspx.taglib.xml    |   125 +
 .../process-as-jspx/web/WEB-INF/web.xml            |    83 +
 .../process-as-jspx/web/fromForward.jspx           |    22 +
 .../process-as-jspx/web/includedjspxfile.jspx      |    11 +
 .../process-as-jspx/web/includedjspxfile2.jspx     |    11 +
 .../process-as-jspx/web/index.html                 |   140 +
 .../process-as-jspx/web/jspview.jsp                |   111 +
 .../process-as-jspx/web/jspxview.jspx              |   112 +
 .../process-as-jspx/web/mathmlview.view.xml        |    80 +
 .../process-as-jspx/web/toForward.jspx             |    27 +
 .../process-as-jspx/web/xhtmlview.xhtml            |   111 +
 .../process-as-jspx/web/xmlview.view.xml           |   110 +
 .../web/xmlviewWithDoctype.view.xml                |   112 +
 .../web/xmlviewWithHtmlRoot.view.xml               |    59 +
 ...lviewWithHtmlRootAndXmlnsOnHeadAndBody.view.xml |    58 +
 .../faces/systest/PropertyResolverJspTestCase.java |    35 +-
 .../faces/systest/RegisteredPropertyResolver.java  |    36 +-
 .../property-resolver-jsp/web/Test.jsp             |    75 +-
 .../web/WEB-INF/faces-config.xml                   |    74 +-
 .../property-resolver-jsp/web/WEB-INF/web.xml      |    73 +-
 .../java/com/sun/faces/systest/NewApplication.java |    38 +-
 .../sun/faces/systest/NewApplicationFactory.java   |    39 +-
 .../com/sun/faces/systest/NewStateManager.java     |    38 +-
 .../java/com/sun/faces/systest/NewViewHandler.java |    38 +-
 .../sun/faces/systest/ReplaceApplicationBean.java  |    38 +-
 .../faces/systest/ReplaceApplicationTestCase.java  |    40 +-
 .../web/WEB-INF/faces-config.xml                   |    74 +-
 .../replace-application/web/WEB-INF/web.xml        |    73 +-
 .../replace-application/web/test.jsp               |    97 +-
 .../sun/faces/systest/LifecycleFactoryImpl.java    |    39 +-
 .../java/com/sun/faces/systest/NewLifecycle.java   |    36 +-
 .../faces/systest/ReplaceLifecycleTestCase.java    |    45 +-
 .../com/sun/faces/systest/SimplePhaseListener.java |    46 +-
 .../replace-lifecycle/web/WEB-INF/faces-config.xml |    74 +-
 .../replace-lifecycle/web/WEB-INF/web.xml          |    73 +-
 .../replace-lifecycle/web/test.jsp                 |    97 +-
 .../replace-lifecycle/web/test2.jsp                |    97 +-
 .../java/com/sun/faces/systest/NewApplication.java |    29 +-
 .../sun/faces/systest/NewApplicationFactory.java   |   103 +-
 .../com/sun/faces/systest/NewStateManager.java     |    38 +-
 .../java/com/sun/faces/systest/NewViewHandler.java |   112 +-
 .../sun/faces/systest/ReplaceApplicationBean.java  |    38 +-
 .../faces/systest/ReplaceStateManagerTestCase.java |    40 +-
 .../web/WEB-INF/faces-config.xml                   |    74 +-
 .../replace-statemanager/web/WEB-INF/web.xml       |    73 +-
 .../replace-statemanager/web/test.jsp              |    97 +-
 .../src/java/com/sun/faces/systest/Bean.java       |   117 +
 .../faces/systest/EagerApplicationScopedBean.java  |    64 +
 .../com/sun/faces/systest/NewVariableResolver.java |   120 +
 .../systest/ReplaceVariableResolverTestCase.java   |   122 +
 .../web/WEB-INF/faces-config.xml                   |    65 +
 .../web/WEB-INF/web.xml                            |    73 +
 .../web/test.jsp                                   |    70 +
 .../web/test1.jsp                                  |    70 +
 .../src/java/com/sun/faces/systest/Bean.java       |    36 +-
 .../com/sun/faces/systest/NewVariableResolver.java |    36 +-
 .../systest/ReplaceVariableResolverTestCase.java   |    40 +-
 .../web/WEB-INF/faces-config.xml                   |    74 +-
 .../replace-variableresolver/web/WEB-INF/web.xml   |    73 +-
 .../replace-variableresolver/web/test.jsp          |    97 +-
 .../replace-variableresolver/web/test1.jsp         |    97 +-
 .../src/java/com/sun/faces/systest/Bean.java       |   199 +
 .../faces/systest/EagerApplicationScopedBean.java  |    68 +
 .../java/com/sun/faces/systest/NewELResolver.java  |   115 +
 .../com/sun/faces/systest/NewVariableResolver.java |   123 +
 .../replace-vr-add-er/web/WEB-INF/faces-config.xml |    65 +
 .../replace-vr-add-er/web/WEB-INF/web.xml          |    73 +
 .../replace-vr-add-er/web/test.jsp                 |    84 +
 .../replace-vr-add-er/web/test1.jsp                |    70 +
 .../java/com/sun/faces/systest/NoCharEncBean.java  |    77 +
 .../faces/systest/NoSessionCharEncTestCase.java    |   106 +
 .../web/ascii.xhtml                                |    20 +
 .../web/utf8.xhtml                                 |    16 +
 .../systest/ResourceLocalePrefixTestCase.java      |    51 +-
 .../sun/faces/systest/resource/Messages.properties |    42 +-
 .../faces/systest/resource/Messages_de.properties  |    42 +-
 .../faces/systest/resource/Messages_en.properties  |    42 +-
 .../faces/systest/resource/Messages_fr.properties  |    42 +-
 .../web/WEB-INF/faces-config.xml                   |    74 +-
 .../resource-locale-prefix/web/WEB-INF/web.xml     |    73 +-
 .../web/resources/de/lib/duke.gif                  |   Bin 0 -> 1082 bytes
 .../web/resources/duke-non-localized-non-lib.gif   |   Bin 0 -> 2716 bytes
 .../web/resources/en/lib/duke.gif                  |   Bin 0 -> 1064 bytes
 .../web/resources/fr/lib/duke.gif                  |   Bin 0 -> 1067 bytes
 .../web/resources/lib/duke-non-localized.gif       |   Bin 0 -> 2741 bytes
 .../resource-locale-prefix/web/test.jsp            |    79 +-
 .../com/sun/faces/systest/StringConverter.java     |    29 +-
 .../sun/faces/systest/StringConverterTestCase.java |    40 +-
 .../string-converter/web/WEB-INF/faces-config.xml  |    73 +-
 .../string-converter/web/WEB-INF/web.xml           |    73 +-
 .../string-converter/web/index.jsp                 |    97 +-
 .../sun/faces/systest/SuppressXmlDeclTestCase.java |   106 +
 .../suppress-xml-decl/web/WEB-INF/faces-config.xml |    15 +
 .../suppress-xml-decl/web/WEB-INF/web.xml          |    60 +
 .../suppress-xml-decl/web/index.xhtml              |    66 +
 .../systest/ViewExpiredExceptionTestCase.java      |    42 +-
 .../view-expired/web/WEB-INF/web.xml               |    73 +-
 .../systest-per-webapp/view-expired/web/error.jsp  |    72 +-
 .../systest-per-webapp/view-expired/web/test.jsp   |    97 +-
 .../sun/faces/systest/WcagDataTableTestCase.java   |    40 +-
 .../faces/systest/model/WindowsCodePageData.java   |    28 +-
 .../systest/model/WindowsCodePageDataBean.java     |    28 +-
 .../wcag-datatable/web/WEB-INF/faces-config.xml    |    73 +-
 .../wcag-datatable/web/WEB-INF/web.xml             |    73 +-
 .../wcag-datatable/web/index.jsp                   |    97 +-
 .../WriteAttributeScriptDisabledTestCase.java      |    40 +-
 .../src/java/com/sun/faces/systest/model/Bean.java |    28 +-
 .../web/WEB-INF/faces-config.xml                   |    73 +-
 .../web/WEB-INF/web.xml                            |    73 +-
 .../write-attribute-script-disabled/web/test.jsp   |    97 +-
 .../WriteAttributeScriptEnabledTestCase.java       |    40 +-
 .../src/java/com/sun/faces/systest/model/Bean.java |    28 +-
 .../web/WEB-INF/faces-config.xml                   |    73 +-
 .../web/WEB-INF/web.xml                            |    73 +-
 .../write-attribute-script-enabled/web/test.jsp    |    97 +-
 jsf-ri/systest/.cvsignore                          |     2 +
 jsf-ri/systest/build-tests.xml                     |  1236 +-
 jsf-ri/systest/build.properties.sample             |    40 +
 jsf-ri/systest/build.xml                           |   139 +-
 jsf-ri/systest/nbproject/project.xml               |    17 +-
 .../src/com/sun/faces/CustomMessages.properties    |    40 +
 .../src/com/sun/faces/CustomMessages_en.properties |    40 +
 .../src/com/sun/faces/CustomMessages_fr.properties |    40 +
 .../com/sun/faces/ajax/AjaxAllKeywordTestCase.java |   123 -
 .../src/com/sun/faces/ajax/AjaxAttrsTestCase.java  |   110 -
 .../src/com/sun/faces/ajax/AjaxBadXMLTestCase.java |    87 -
 .../src/com/sun/faces/ajax/AjaxEchoTestCase.java   |   295 -
 .../src/com/sun/faces/ajax/AjaxErrorTestCase.java  |   152 -
 .../src/com/sun/faces/ajax/AjaxEvalTestCase.java   |   102 -
 .../sun/faces/ajax/AjaxIncludedTextTestCase.java   |    96 -
 .../sun/faces/ajax/AjaxInsertDeleteTestCase.java   |   163 -
 .../com/sun/faces/ajax/AjaxMessageTestCase.java    |   173 -
 .../com/sun/faces/ajax/AjaxMultiformTestCase.java  |   103 -
 .../com/sun/faces/ajax/AjaxRedirectTestCase.java   |    98 -
 .../faces/ajax/AjaxRequestMultiRenderTestCase.java |   111 -
 .../sun/faces/ajax/AjaxRequestScriptTestCase.java  |    96 -
 .../com/sun/faces/ajax/AjaxRequestTestCase.java    |   502 -
 .../faces/ajax/AjaxRerenderOtherFormTestCase.java  |    90 -
 .../src/com/sun/faces/ajax/AjaxSelectTestCase.java |   166 -
 .../src/com/sun/faces/ajax/AjaxTableTestCase.java  |   118 -
 .../faces/ajax/AjaxTagEventAttributeTestCase.java  |   117 -
 .../faces/ajax/AjaxTagEventWrappingTestCase.java   |   201 -
 .../com/sun/faces/ajax/AjaxTagResolveTestCase.java |   121 -
 .../src/com/sun/faces/ajax/AjaxTagTestCase.java    |   646 -
 .../sun/faces/ajax/AjaxTagWrappingTestCase.java    |   136 -
 .../com/sun/faces/annotation/AnnotatedBean.java    |    36 +-
 .../sun/faces/annotation/AnnotatedBehavior.java    |    45 +-
 .../annotation/AnnotatedBehaviorRenderer.java      |    36 +-
 .../sun/faces/annotation/AnnotatedComponent.java   |    36 +-
 .../annotation/AnnotatedComponentSystemEvent.java  |    28 +-
 .../annotation/AnnotatedComponentsTestCase.java    |   101 -
 .../sun/faces/annotation/AnnotatedConverter.java   |    46 +-
 .../annotation/AnnotatedConverterForClass.java     |    36 +-
 .../faces/annotation/AnnotatedPhaseListener.java   |    78 +
 .../sun/faces/annotation/AnnotatedRenderer.java    |    36 +-
 .../sun/faces/annotation/AnnotatedValidator.java   |    45 +-
 .../annotation/AnnotatedValidatorDefault.java      |    28 +-
 .../annotation/AnnotatedValidatorNoValue.java      |    63 +
 .../sun/faces/annotation/AnnotationTestBean.java   |    66 +-
 .../AnotherAnnotatedComponentSystemEvent.java      |    30 +-
 .../src/com/sun/faces/annotation/BaseBean.java     |    28 +-
 .../faces/annotation/BaseBeanImplementation.java   |    28 +-
 .../faces/annotation/CustomScopeAnnotatedBean.java |    28 +-
 .../application/ResetUniqueRequestIdBean.java      |    36 +-
 .../com/sun/faces/component/ComponentTestCase.java |    98 -
 .../faces/component/CompositeMetaDataTestCase.java |   108 -
 .../src/com/sun/faces/component/DynamicAdd.java    |    52 +-
 .../sun/faces/component/GetClientIdELTestCase.java |    99 -
 .../src/com/sun/faces/component/PostAddTester.java |    74 +
 .../component/ViewScopedComponentBindingBean.java  |    91 +
 .../composite/BootstrapCompositeComponent.java     |    28 +-
 .../composite/ComponentResolverActionListener.java |    28 +-
 .../src/com/sun/faces/composite/CompositeBean.java |    83 +-
 .../composite/CompositeComponentMetadataUtils.java |    28 +-
 .../composite/CompositeComponentsTestCase.java     |    99 +-
 ...ositeComponentsTestCaseWithEE6Dependencies.java |    55 +-
 .../sun/faces/composite/DefaultActionTestCase.java |    32 +-
 .../JavaBackedComponentDefaultAttrValues.java      |    29 +-
 .../JavaTopLevelActionListenerComponent.java       |    29 +-
 ...avaTopLevelActionListenerComponentTestCase.java |    40 +-
 .../sun/faces/composite/JavaTopLevelComponent.java |    40 +-
 .../composite/JavaTopLevelComponentTestCase.java   |    40 +-
 .../PhaseListenerInCompositeComponent.java         |    28 +-
 .../composite/ResourceDependencyComponent.java     |    28 +-
 .../ResourceDependencyComponentTestCase.java       |    32 +-
 .../sun/faces/composite/TimeWastingTagHandler.java |    28 +-
 ...istenerSetPropertyActionListener01TestCase.java |    40 +-
 .../com/sun/faces/event/DynamicAddTestCase.java    |   121 -
 .../com/sun/faces/event/PostAddToViewListener.java |    29 +-
 .../sun/faces/event/PostRestoreStateListener.java  |    29 +-
 .../com/sun/faces/event/TestComponentRenderer.java |    64 +
 .../src/com/sun/faces/event/TestManagedBean.java   |    82 +
 .../src/com/sun/faces/event/UIAddComponent.java    |    58 +
 .../src/com/sun/faces/event/UIAddComponent1.java   |    74 +
 .../src/com/sun/faces/event/UIAddComponent2.java   |    97 +
 .../src/com/sun/faces/event/UIAddComponent3.java   |    81 +
 .../com/sun/faces/event/UIRecursiveComponent.java  |    62 +
 .../src/com/sun/faces/event/UIStableComponent.java |    68 +
 .../src/com/sun/faces/event/UITableComponent.java  |   100 +
 .../src/com/sun/faces/event/UIToggleComponent.java |    54 +
 .../event/VerifyBuildBeforeRestoreTestCase.java    |   101 -
 .../facelets/FaceletsTargetNotFoundTestCase.java   |   133 -
 .../com/sun/faces/facelets/FaceletsTestCase.java   |   402 -
 .../sun/faces/facelets/ImplicitFacetTestCase.java  |   120 -
 .../sun/faces/facelets/KeepMessagesTestCase.java   |   120 -
 .../src/com/sun/faces/facelets/RepeatBean.java     |    36 +-
 .../com/sun/faces/facelets/UIRepeatTestCase.java   |   201 -
 .../src/com/sun/faces/facelets/csetTestCase.java   |   107 -
 .../src/com/sun/faces/groovy/GroovyTestCase.java   |    34 +-
 .../com/sun/faces/htmlunit/AbstractTestCase.java   |   422 -
 .../src/com/sun/faces/jsf2jsp/Jsf2JspTestCase.java |    33 +-
 .../jsptest/CommandLinkMultiFormTestCase.java      |    43 +-
 .../faces/jsptest/CommandLinkNoFormTestCase.java   |   114 -
 .../faces/jsptest/CommandLinkOnClickTestCase.java  |    40 +-
 .../com/sun/faces/jsptest/ConverterTestCase.java   |   254 -
 .../src/com/sun/faces/jsptest/ForEachTestCase.java |    53 +-
 .../src/com/sun/faces/jsptest/FormElTestCase.java  |   110 -
 .../com/sun/faces/jsptest/FormInputTestCase.java   |    40 +-
 .../src/com/sun/faces/jsptest/IdRefTestCase.java   |    48 +-
 .../faces/jsptest/InvalidateSessionTestCase.java   |    40 +-
 .../sun/faces/jsptest/JspIntegrationTestCase.java  |    40 +-
 .../sun/faces/jsptest/JstlIntegrationTestCase.java |    40 +-
 .../com/sun/faces/jsptest/ListenerTestCase.java    |    40 +-
 .../src/com/sun/faces/jsptest/LocaleTestCase.java  |    40 +-
 .../MissingActionListenerMethodTestCase.java       |    81 -
 .../com/sun/faces/jsptest/MissingViewTestCase.java |    40 +-
 .../com/sun/faces/jsptest/PrependIdTestCase.java   |    52 +-
 .../jsptest/SelectComponentValueTestCase.java      |    40 +-
 .../faces/jsptest/SelectItemEscapeTestCase.java    |    40 +-
 .../faces/jsptest/SelectManyMultiFormTestCase.java |    40 +-
 .../com/sun/faces/jsptest/SetPropertyTestCase.java |   133 -
 .../src/com/sun/faces/jsptest/TagIvarTestCase.java |    40 +-
 .../src/com/sun/faces/jsptest/TlvTestCase.java     |    40 +-
 .../com/sun/faces/jsptest/ValidatorTestCase.java   |    40 +-
 .../faces/jsptest/ValueChangeListenerTestCase.java |   200 -
 .../jsptest/ViewRootPhaseListenerTestCase.java     |   154 -
 .../src/com/sun/faces/jsptest/ViewTagTestCase.java |   126 -
 .../com/sun/faces/methodref/MethodRefTestCase.java |   272 -
 ...ibuteListenerMethodExpressionNoArgTestCase.java |   100 -
 .../src/com/sun/faces/pathtest/PathTestCase.java   |   139 -
 .../sun/faces/render/CommandButtonTestCase.java    |   102 -
 .../sun/faces/render/MessageRenderTestCase.java    |   116 -
 .../faces/render/OutputScriptStyleTestCase.java    |   222 -
 .../com/sun/faces/render/SelectStarTestCase.java   |   254 -
 .../com/sun/faces/systest/CheckboxTestCase.java    |   105 -
 .../com/sun/faces/systest/ChildrenComponent.java   |    36 +-
 .../faces/systest/ChildrenComponentBodyTag.java    |    36 +-
 .../sun/faces/systest/ChildrenComponentTag.java    |    36 +-
 .../sun/faces/systest/ComponentMiscTestCase.java   |   139 -
 .../systest/ConditionalNavigationTestCase.java     |   108 -
 .../com/sun/faces/systest/DataTableTestCase.java   |   233 -
 .../src/com/sun/faces/systest/DuplicateIds04.java  |    38 +-
 .../sun/faces/systest/DuplicateIds04TestCase.java  |    42 +-
 .../com/sun/faces/systest/DynamicComponent.java    |    36 +-
 .../com/sun/faces/systest/DynamicComponentTag.java |    36 +-
 .../src/com/sun/faces/systest/FacetComponent.java  |    36 +-
 .../com/sun/faces/systest/FacetComponentTag.java   |    36 +-
 .../sun/faces/systest/FlashMessagesTestCase.java   |   102 -
 .../src/com/sun/faces/systest/FlashReaperBean.java |    75 -
 .../com/sun/faces/systest/FlashReaperTestCase.java |   114 -
 .../sun/faces/systest/FlashViewParamTestCase.java  |   115 -
 .../src/com/sun/faces/systest/HelloBean.java       |    67 +
 .../faces/systest/LinkTypeAttributeTestCase.java   |   116 -
 .../src/com/sun/faces/systest/MessageBean.java     |    72 +
 .../src/com/sun/faces/systest/NamingTag.java       |    36 +-
 .../com/sun/faces/systest/NavigationTestCase.java  |   259 -
 .../sun/faces/systest/OutputTargetsTestCase.java   |   254 -
 .../com/sun/faces/systest/OutputVerbatimTag.java   |    36 +-
 .../com/sun/faces/systest/RenderKitsTestCase.java  |   188 -
 .../faces/systest/ResourceRelocationTestCase.java  |   200 -
 .../systest/SelectManyCollectionTestCase.java      |   270 -
 ...neHideNoSelectionInSelectItemGroupTestCase.java |    52 -
 .../systest/SelectOneHideNoSelectionTestCase.java  |   163 -
 .../faces/systest/SelectOneManyEnumTestCase.java   |   190 -
 ...tOneValueExpressionHideNoSelectionTestCase.java |   109 -
 .../sun/faces/systest/SystemEventListenerImpl.java |    28 +-
 .../sun/faces/systest/TestActionListener01.java    |    36 +-
 .../src/com/sun/faces/systest/TestComponent.java   |    36 +-
 .../src/com/sun/faces/systest/TestConverter.java   |    36 +-
 .../src/com/sun/faces/systest/TestConverter01.java |    36 +-
 .../com/sun/faces/systest/TestPhaseListener01.java |    72 +
 .../src/com/sun/faces/systest/TestValidator.java   |    36 +-
 .../src/com/sun/faces/systest/TestValidator01.java |    36 +-
 .../sun/faces/systest/TestValueChangeListener.java |    36 +-
 .../faces/systest/TestValueChangeListener01.java   |    36 +-
 .../com/sun/faces/systest/ant/SystestClient.java   |  1554 ---
 .../sun/faces/systest/component/Issue599Bean.java  |   125 +
 .../composite/CompositeAttributeTestCase.java      |   192 +
 .../composite/MultiActionComponentBean.java        |    61 +
 .../composite/MultiActionComponentTestCase.java    |    87 +
 .../composite/behavior/CompositeBehavior.java      |    65 +
 .../behavior/CompositeBehaviorTestBean.java        |    56 +
 .../dynamic1757/Issue1757DynamicManagedBean.java   |    56 +
 .../systest/dynamic1757/Issue1757TestCase.java     |   108 +
 .../systest/dynamic1757/TestComponentRenderer.java |    72 +
 .../faces/systest/dynamic1757/UITestComponent.java |    90 +
 .../src/com/sun/faces/systest/el/ELTestCase.java   |   115 -
 .../sun/faces/systest/flash/FlashMessagesBean.java |    80 -
 .../implicitnav/ImplicitNavigationBean.java        |    36 +-
 .../implicitnav/ImplicitNavigationTestCase.java    |    40 +-
 .../faces/systest/jsp/managed/ManagedTestCase.java |    67 +
 .../lifecycle/ApplicationFactoryWrapper.java       |    39 +-
 .../lifecycle/FacesContextFactoryWrapper.java      |    39 +-
 .../systest/lifecycle/LifecycleFactoryWrapper.java |    39 +-
 .../ManagedBeanLifecycleAnnotationTestCase.java    |    40 +-
 .../systest/lifecycle/ReloadPhaseListenerImpl.java |    36 +-
 .../systest/lifecycle/RenderKitFactoryWrapper.java |    39 +-
 .../src/com/sun/faces/systest/listener.java        |    64 +
 .../sun/faces/systest/model/AbstractTestBean.java  |    36 +-
 .../sun/faces/systest/model/AddMessageBean.java    |    52 -
 .../src/com/sun/faces/systest/model/Bean1729.java  |    80 +
 .../src/com/sun/faces/systest/model/Bean2194.java  |    82 +
 .../src/com/sun/faces/systest/model/Bean2202.java  |    64 +
 .../src/com/sun/faces/systest/model/BookBean.java  |    36 +-
 .../src/com/sun/faces/systest/model/BooksBean.java |    36 +-
 .../src/com/sun/faces/systest/model/CSRFBean.java  |    83 +
 .../com/sun/faces/systest/model/ConverterBean.java |    36 +-
 .../faces/systest/model/CustomDatatableBean.java   |    36 +-
 .../src/com/sun/faces/systest/model/EnumBean.java  |    38 +-
 .../com/sun/faces/systest/model/EventTagBean.java  |    28 +-
 .../com/sun/faces/systest/model/FaceletsBean.java  |    36 +-
 .../com/sun/faces/systest/model/ForEachBean.java   |    36 +-
 .../com/sun/faces/systest/model/FunctionBean.java  |    28 +-
 .../sun/faces/systest/model/InterweavingBean.java  |    38 +-
 .../com/sun/faces/systest/model/ListHolder.java    |    30 +-
 .../com/sun/faces/systest/model/ListenerBean.java  |    36 +-
 .../sun/faces/systest/model/ListenerCheckBean.java |    28 +-
 .../src/com/sun/faces/systest/model/MethodRef.java |    36 +-
 .../com/sun/faces/systest/model/NumberHolder.java  |    30 +-
 .../model/PrintEventToRequestMapPhaseListener.java |    36 +-
 .../sun/faces/systest/model/PropertyOrderBean.java |    36 +-
 .../faces/systest/model/ResourceInjectionBean.java |    36 +-
 .../sun/faces/systest/model/SelectItemsBean.java   |    57 +-
 .../sun/faces/systest/model/SelectMany05Bean.java  |    53 +-
 .../SelectMany05BeanWithNoSelectionValue.java      |    36 +-
 .../com/sun/faces/systest/model/SpecialBean.java   |    36 +-
 .../sun/faces/systest/model/SpecialConverter.java  |    36 +-
 .../com/sun/faces/systest/model/StringHolder.java  |    30 +-
 .../src/com/sun/faces/systest/model/TestBean.java  |   126 +-
 .../src/com/sun/faces/systest/model/TestBean2.java |    36 +-
 .../sun/faces/systest/model/TestBeanConverter.java |    36 +-
 .../faces/systest/model/TestBeanEventClass.java    |    28 +-
 .../systest/model/TestBeanPostConstructEvent.java  |    28 +-
 .../systest/model/TestBeanPreDestroyEvent.java     |    28 +-
 .../sun/faces/systest/model/TestBeanSubclass.java  |    36 +-
 .../com/sun/faces/systest/model/TestListBox.java   |    36 +-
 .../systest/model/TestValueChangeListener.java     |    29 +-
 .../sun/faces/systest/model/ThousandsOfPojos.java  |   156 +
 .../com/sun/faces/systest/model/ValidatorBean.java |    36 +-
 .../systest/model/ValueChangeListenerBean.java     |    36 +-
 .../ValueChangeSetPropertyActionListenerBean.java  |    28 +-
 .../sun/faces/systest/model/ViewRootExtension.java |    36 +-
 .../faces/systest/model/ajax/AjaxRequestBean.java  |    49 +-
 .../sun/faces/systest/model/ajax/AjaxTable.java    |    28 +-
 .../systest/model/ajax/AjaxTagValuesBean.java      |    38 +-
 .../sun/faces/systest/model/ajax/AttrsBean.java    |    31 +-
 .../sun/faces/systest/model/ajax/CountBean.java    |    28 +-
 .../src/com/sun/faces/systest/model/ajax/Echo.java |    28 +-
 .../sun/faces/systest/model/ajax/ErrorBean.java    |    29 +-
 .../com/sun/faces/systest/model/ajax/EvalBean.java |    31 +-
 .../com/sun/faces/systest/model/ajax/FailBean.java |    31 +-
 .../faces/systest/model/ajax/InsertDeleteBean.java |    54 +-
 .../faces/systest/model/ajax/InvalidXMLBean.java   |    30 +-
 .../sun/faces/systest/model/ajax/RedirectBean.java |    28 +-
 .../model/ajax/browser/BrowserAttributesBean.java  |    28 +-
 .../systest/model/ajax/browser/EvalScriptBean.java |    28 +-
 .../model/ajax/browser/SelectChangeBean.java       |    29 +-
 .../systest/model/ajax/browser/UpdateRootBean.java |    28 +-
 .../ComponentWithResourceInjection.java            |    68 +
 .../src/com/sun/faces/systest/render/Base64.java   |    36 +-
 .../sun/faces/systest/render/ButtonRenderer.java   |    36 +-
 .../faces/systest/render/CustomRenderKitImpl.java  |    36 +-
 .../render/CustomResponseStateManagerImpl.java     |    37 +-
 .../faces/systest/render/CustomResponseWriter.java |    36 +-
 .../com/sun/faces/systest/render/FormRenderer.java |    36 +-
 .../com/sun/faces/systest/render/TextRenderer.java |    36 +-
 .../resources/ResourceBundle01_en.properties       |    42 +-
 .../resources/ResourceBundle03_en.properties       |    42 +-
 .../sun/faces/systest/resources/Resources_en.java  |    38 +-
 .../state/CaptureIsSavingStateValueBean.java       |    88 +
 .../state/CaptureIsSavingStateValueComponent.java  |    67 +
 .../sun/faces/systest/state/DynamicStateBean.java  |    36 +-
 .../sun/faces/systest/state/DynamicStateBean2.java |    29 +-
 .../faces/systest/state/DynamicStateTestCase.java  |   208 -
 .../com/sun/faces/systest/tags/EventTestCase.java  |   168 -
 .../faces/systest/viewparameters/NewsIndex.java    |    28 +-
 .../faces/systest/viewparameters/NewsReader.java   |    28 +-
 .../faces/systest/viewparameters/NewsStory.java    |    28 +-
 .../viewparameters/ViewParametersTestCase.java     |   307 -
 jsf-ri/systest/web/Iterator02.jsp                  |    77 +-
 jsf-ri/systest/web/ModelSelectItemConversion.jsp   |    97 +-
 jsf-ri/systest/web/ProcessSaveRestoreStateTest.jsp |   132 +-
 jsf-ri/systest/web/SelectManyConverterTest.jsp     |    91 +-
 jsf-ri/systest/web/TCCI_subview01.jsp              |    72 +-
 jsf-ri/systest/web/TCCI_subview02.jsp              |    72 +-
 jsf-ri/systest/web/TCCI_subview03.jsp              |    72 +-
 jsf-ri/systest/web/TCCI_subview04.jsp              |    72 +-
 jsf-ri/systest/web/TCCI_subview05.jsp              |    72 +-
 jsf-ri/systest/web/TCCI_subview06.jsp              |    72 +-
 jsf-ri/systest/web/TestCoreValidatorFail.jsp       |    77 +-
 jsf-ri/systest/web/TestCoreValidatorIfFail.jsp     |    77 +-
 jsf-ri/systest/web/TestCoreValidatorIfSucceed.jsp  |    77 +-
 .../systest/web/TestCoreValidatorIteratorFail.jsp  |    77 +-
 .../web/TestCoreValidatorIteratorSucceed.jsp       |    77 +-
 jsf-ri/systest/web/TestCoreValidatorSucceed.jsp    |    77 +-
 .../systest/web/TestElValidatorActionRefFail.jsp   |    77 +-
 .../web/TestElValidatorActionRefSucceed.jsp        |    77 +-
 .../systest/web/TestElValidatorComponentFail.jsp   |    77 +-
 .../web/TestElValidatorComponentSucceed.jsp        |    77 +-
 jsf-ri/systest/web/TestElValidatorIdFail.jsp       |    77 +-
 jsf-ri/systest/web/TestElValidatorIdSucceed.jsp    |    77 +-
 jsf-ri/systest/web/TestElValidatorValueRefFail.jsp |    77 +-
 .../systest/web/TestElValidatorValueRefSucceed.jsp |    77 +-
 jsf-ri/systest/web/TestHtmlBasicValidatorFail.jsp  |    77 +-
 .../systest/web/TestHtmlBasicValidatorSucceed.jsp  |    77 +-
 .../web/TestValueChangeAndActionListenerNoArg.jsp  |    71 +-
 .../TestValueChangeAndActionListenerNoArg.xhtml    |    71 +-
 .../web/WEB-INF/composite-behavior.taglib.xml      |    77 +-
 jsf-ri/systest/web/WEB-INF/faces-config.xml        |   126 +-
 jsf-ri/systest/web/WEB-INF/formlayout.taglib.xml   |    54 +
 jsf-ri/systest/web/WEB-INF/formlayout/layout.xhtml |    58 +
 .../web/WEB-INF/formlayout/sub/maintemplate.xhtml  |    61 +
 .../com/sun/faces/groovy/GroovyBacked.groovy       |    30 +-
 .../groovy/com/sun/faces/groovy/SimpleBean.groovy  |    29 +-
 .../WEB-INF/i_spec_599_composite_taglib.taglib.xml |    16 +
 jsf-ri/systest/web/WEB-INF/init-faces-config.xml   |    74 +-
 jsf-ri/systest/web/WEB-INF/source1.taglib.xml      |   105 +-
 jsf-ri/systest/web/WEB-INF/sun-web.xml             |    74 +-
 jsf-ri/systest/web/WEB-INF/taglib.tld              |    74 +-
 jsf-ri/systest/web/WEB-INF/tags/source.xhtml       |    74 +-
 .../WEB-INF/templates/compositeTestTemplate.xhtml  |    73 +-
 .../WEB-INF/templates/templateCompTemplate.xhtml   |    73 +-
 .../templates/templateDecorateTemplate.xhtml       |    73 +-
 jsf-ri/systest/web/WEB-INF/test.jsp                |    77 +-
 .../systest/web/WEB-INF/testcomponent.taglib.xml   |   113 +
 jsf-ri/systest/web/WEB-INF/web.xml.template        |   113 +-
 jsf-ri/systest/web/ajax/ajaxAllKeyword1.xhtml      |    73 +-
 jsf-ri/systest/web/ajax/ajaxAllKeyword2.xhtml      |    73 +-
 jsf-ri/systest/web/ajax/ajaxAllKeyword3.xhtml      |    73 +-
 jsf-ri/systest/web/ajax/ajaxAttrs.xhtml            |    82 +-
 jsf-ri/systest/web/ajax/ajaxCount.xhtml            |    63 +-
 jsf-ri/systest/web/ajax/ajaxEcho.xhtml             |    63 +-
 jsf-ri/systest/web/ajax/ajaxEchoArea.xhtml         |    74 +-
 jsf-ri/systest/web/ajax/ajaxError.xhtml            |    75 +-
 jsf-ri/systest/web/ajax/ajaxError2.xhtml           |    77 +-
 jsf-ri/systest/web/ajax/ajaxError3.xhtml           |    63 +-
 jsf-ri/systest/web/ajax/ajaxEval.xhtml             |    75 +-
 jsf-ri/systest/web/ajax/ajaxEvent.xhtml            |    61 +-
 jsf-ri/systest/web/ajax/ajaxIncludedScript.xhtml   |    63 +-
 jsf-ri/systest/web/ajax/ajaxIncludedText.xhtml     |    63 +-
 jsf-ri/systest/web/ajax/ajaxInsertDelete.xhtml     |    67 +-
 jsf-ri/systest/web/ajax/ajaxInvalidXML.xhtml       |    73 +-
 jsf-ri/systest/web/ajax/ajaxMalformedXML.xhtml     |    75 +-
 jsf-ri/systest/web/ajax/ajaxMessage.xhtml          |    63 +-
 jsf-ri/systest/web/ajax/ajaxMultiform.xhtml        |    63 +-
 jsf-ri/systest/web/ajax/ajaxProjectStage.xhtml     |    73 +-
 jsf-ri/systest/web/ajax/ajaxRedirect.xhtml         |    77 +-
 .../web/ajax/ajaxRequestDefaultsButton.xhtml       |    63 +-
 .../ajax/ajaxRequestDefaultsButtonNoPrepend.xhtml  |    63 +-
 .../systest/web/ajax/ajaxRequestDefaultsEdit.xhtml |    61 +-
 .../ajax/ajaxRequestDefaultsEditNoPrepend.xhtml    |    61 +-
 jsf-ri/systest/web/ajax/ajaxRequestHeader.xhtml    |    62 +
 .../systest/web/ajax/ajaxRequestMultiRender.xhtml  |    63 +-
 .../systest/web/ajax/ajaxRerenderOtherForm.xhtml   |    61 +-
 jsf-ri/systest/web/ajax/ajaxSelect.xhtml           |    61 +-
 jsf-ri/systest/web/ajax/ajaxTable.xhtml            |    71 +-
 jsf-ri/systest/web/ajax/ajaxTagCount.xhtml         |    63 +-
 .../systest/web/ajax/ajaxTagDefaultsButton.xhtml   |    63 +-
 .../web/ajax/ajaxTagDefaultsButtonNoPrepend.xhtml  |    63 +-
 jsf-ri/systest/web/ajax/ajaxTagDefaultsEdit.xhtml  |    63 +-
 .../web/ajax/ajaxTagDefaultsEditNoPrepend.xhtml    |    63 +-
 jsf-ri/systest/web/ajax/ajaxTagDisabled.xhtml      |    63 +-
 jsf-ri/systest/web/ajax/ajaxTagEvent.xhtml         |    67 +-
 .../systest/web/ajax/ajaxTagEventAttribute.xhtml   |    77 +-
 jsf-ri/systest/web/ajax/ajaxTagEventWrapping.xhtml |    61 +-
 jsf-ri/systest/web/ajax/ajaxTagKeywords.xhtml      |    63 +-
 jsf-ri/systest/web/ajax/ajaxTagMulti.xhtml         |    63 +-
 jsf-ri/systest/web/ajax/ajaxTagResolve.xhtml       |    63 +-
 jsf-ri/systest/web/ajax/ajaxTagWrapping.xhtml      |    63 +-
 jsf-ri/systest/web/ajax/ajaxViewState.xhtml        |    80 +
 jsf-ri/systest/web/ajax/browser/browser.xhtml      |    71 +-
 .../web/ajax/browser/browserSelectChange.xhtml     |    71 +-
 .../web/ajax/browser/browserUpdateAttribute.xhtml  |    61 +-
 .../web/ajax/browser/browserUpdateView.xhtml       |    63 +-
 .../ajax/issue1760NestedAjaxCheckboxRender.xhtml   |   109 +
 jsf-ri/systest/web/ajax/jsfJS.xhtml                |    82 +
 jsf-ri/systest/web/ajax/redirecttarget.xhtml       |    72 +-
 jsf-ri/systest/web/annotationtest.xhtml            |    75 +-
 jsf-ri/systest/web/bar01.jsp                       |    77 +-
 jsf-ri/systest/web/bar02.jsp                       |    77 +-
 jsf-ri/systest/web/binding01.jsp                   |    77 +-
 .../systest/web/clearApplicationMapProperty.xhtml  |    71 +-
 jsf-ri/systest/web/commandLinkPrependId.jsp        |    72 +-
 jsf-ri/systest/web/component.jsp                   |    72 +-
 jsf-ri/systest/web/component01.jsp                 |    72 +-
 jsf-ri/systest/web/component02.jsp                 |    74 +-
 jsf-ri/systest/web/component03.jsp                 |    60 +
 jsf-ri/systest/web/componentImplicitObject.jsp     |    72 +-
 jsf-ri/systest/web/composite/1462-using.xhtml      |    19 +
 jsf-ri/systest/web/composite/action.xhtml          |    71 +-
 jsf-ri/systest/web/composite/actionListener.xhtml  |    71 +-
 jsf-ri/systest/web/composite/actionsource.xhtml    |    71 +-
 .../systest/web/composite/addPhaseListener.xhtml   |    60 +-
 .../systest/web/composite/attachedconverter.xhtml  |    71 +-
 .../systest/web/composite/attachedvalidator.xhtml  |    71 +-
 .../systest/web/composite/behavior/composite.xhtml |    79 +-
 .../web/composite/behavior/composite02.xhtml       |    55 +
 .../boostrapCompositeComponentMetadata.xhtml       |    71 +-
 jsf-ri/systest/web/composite/childrenfacets.xhtml  |    61 +-
 jsf-ri/systest/web/composite/clientId01.xhtml      |    71 +-
 .../systest/web/composite/compActionWithArgs.xhtml |    71 +-
 .../web/composite/compAttributeRequired.xhtml      |    12 +
 .../composite/compAttributeRequiredLiteral.xhtml   |    12 +
 .../composite/compAttributeRequiredNullValue.xhtml |    12 +
 .../compAttributeResourceRelocation.xhtml          |    71 +-
 .../web/composite/compAttributeWithArgs.xhtml      |    71 +-
 .../compositeComponentWithMultipleActions.xhtml    |    71 +
 ...ponentWithMultipleActionsMethodSignatures.xhtml |    71 +
 ...positeComponentWithMultipleActions_cancel.xhtml |    54 +
 ...positeComponentWithMultipleActions_submit.xhtml |    54 +
 .../composite/compositeInsertChildrenNesting.xhtml |    73 +-
 .../compositeInsertChildrenNesting02.xhtml         |    73 +-
 .../composite/compositeInsertFacetNesting.xhtml    |    63 +-
 .../composite/compositeInsertFacetNesting02.xhtml  |    73 +-
 .../compositionWithinCompositeUsingPage.xhtml      |    61 +-
 jsf-ri/systest/web/composite/customAction.xhtml    |    71 +-
 jsf-ri/systest/web/composite/decorate.xhtml        |    73 +-
 .../systest/web/composite/defaultActionNext.xhtml  |    71 +-
 .../web/composite/defaultActionUsingPage.xhtml     |    71 +-
 .../defaultAttributeMethodExpression.xhtml         |    75 +-
 .../defaultAttributeValueExpression.xhtml          |    59 +
 .../defaultAttributeValueExpression_1966.xhtml     |    56 +
 .../defaultAttributeValueExpression_1986.xhtml     |    57 +
 .../defaultAttributeValuesUsingPage.xhtml          |    61 +-
 .../web/composite/defaultAttributesUsingPage.xhtml |    62 +
 .../web/composite/insertchildrenrequired01.xhtml   |    71 +-
 .../web/composite/insertchildrenrequired02.xhtml   |    71 +-
 .../web/composite/insertchildrenrequired03.xhtml   |    71 +-
 .../web/composite/insertfacetrequired01.xhtml      |    71 +-
 .../web/composite/insertfacetrequired02.xhtml      |    71 +-
 .../web/composite/insertfacetrequired03.xhtml      |    71 +-
 jsf-ri/systest/web/composite/invalidMeArgs.xhtml   |    71 +-
 jsf-ri/systest/web/composite/invalidVeArgs.xhtml   |    71 +-
 .../web/composite/isCompositeComponentUsing.xhtml  |    67 +
 .../systest/web/composite/issue-1782-using.xhtml   |    60 +
 jsf-ri/systest/web/composite/issue1318.xhtml       |    73 +-
 ...aTopLevelActionListenerComponentUsingPage.xhtml |    60 +-
 .../web/composite/javaTopLevelComponent2.xhtml     |    71 +-
 .../composite/javaTopLevelComponentUsingPage.xhtml |    71 +-
 jsf-ri/systest/web/composite/jsr276-using.xhtml    |    71 +-
 .../web/composite/methodExprNotRequired.xhtml      |    71 +-
 .../systest/web/composite/methodExprRequired.xhtml |    71 +-
 jsf-ri/systest/web/composite/nesting01.xhtml       |    73 +-
 jsf-ri/systest/web/composite/nesting02.xhtml       |    73 +-
 jsf-ri/systest/web/composite/nesting03.xhtml       |    73 +-
 jsf-ri/systest/web/composite/nesting04.xhtml       |    73 +-
 jsf-ri/systest/web/composite/nesting05.xhtml       |    73 +-
 jsf-ri/systest/web/composite/nesting06.xhtml       |    73 +-
 jsf-ri/systest/web/composite/nesting07.xhtml       |    71 +-
 jsf-ri/systest/web/composite/nesting08.xhtml       |    71 +-
 .../nestingCompositeExpressionTreeCreation.xhtml   |    73 +-
 jsf-ri/systest/web/composite/nestingNav.xhtml      |    73 +-
 .../programmaticDefaultAttributeValueAccess.xhtml  |    72 +-
 .../web/composite/renderfacetrequired01.xhtml      |    71 +-
 .../web/composite/renderfacetrequired02.xhtml      |    71 +-
 .../web/composite/renderfacetrequired03.xhtml      |    71 +-
 .../systest/web/composite/requiredAttribute.xhtml  |    71 +-
 jsf-ri/systest/web/composite/requiredFacet.xhtml   |    71 +-
 .../resourceDependencyComponentNextPage.xhtml      |    71 +-
 .../resourceDependencyComponentUsingPage.xhtml     |    71 +-
 .../simpleCompositeComponentUsingPage.xhtml        |    21 +
 jsf-ri/systest/web/composite/submit.xhtml          |    17 +
 jsf-ri/systest/web/composite/validator.xhtml       |    71 +-
 .../web/composite/valueChangeListener.xhtml        |    71 +-
 ...ChangeListenerSetPropertyActionListener01.xhtml |    71 +-
 jsf-ri/systest/web/conditionalNav.xhtml            |    73 +-
 jsf-ri/systest/web/config01.jsp                    |    72 +-
 jsf-ri/systest/web/converter.jsp                   |    72 +-
 jsf-ri/systest/web/converter01.jsp                 |    72 +-
 jsf-ri/systest/web/converter02.jsp                 |    72 +-
 jsf-ri/systest/web/converter03.jsp                 |    76 +-
 jsf-ri/systest/web/converter04.jsp                 |    76 +-
 jsf-ri/systest/web/converter05.jsp                 |    79 +-
 jsf-ri/systest/web/converter06.jsp                 |    76 +-
 jsf-ri/systest/web/converter07.jsp                 |   110 +
 jsf-ri/systest/web/duplicateIds01.jsp              |    77 +-
 jsf-ri/systest/web/duplicateIds02.jsp              |    77 +-
 jsf-ri/systest/web/duplicateIds03.jsp              |    77 +-
 jsf-ri/systest/web/duplicateIds04.jsp              |    77 +-
 jsf-ri/systest/web/duplicateIds05.jsp              |    77 +-
 jsf-ri/systest/web/dynamicComponents.xhtml         |    71 +-
 jsf-ri/systest/web/dynamicComponents00.xhtml       |    71 +-
 jsf-ri/systest/web/dynamicComponents01.xhtml       |    71 +-
 jsf-ri/systest/web/dynamicComponents02.xhtml       |    71 +-
 jsf-ri/systest/web/dynamicComponents_2119.xhtml    |    29 +
 jsf-ri/systest/web/dynamicComponents_2121.xhtml    |    26 +
 jsf-ri/systest/web/dynamicComponents_common.xhtml  |    69 +
 jsf-ri/systest/web/dynamicComponents_index.xhtml   |    29 +
 .../systest/web/dynamicComponents_recursive.xhtml  |    29 +
 jsf-ri/systest/web/dynamicComponents_stable.xhtml  |    30 +
 jsf-ri/systest/web/dynamicComponents_table.xhtml   |    74 +
 jsf-ri/systest/web/dynamicComponents_toggle.xhtml  |    32 +
 jsf-ri/systest/web/eagerbean.jsp                   |    72 +-
 jsf-ri/systest/web/elfunction.xhtml                |    73 +-
 jsf-ri/systest/web/enum-converter-1.jsp            |    72 +-
 jsf-ri/systest/web/enum-converter.jsp              |    97 +-
 jsf-ri/systest/web/enum01.jsp                      |    79 +-
 jsf-ri/systest/web/escape_test.jsp                 |    72 +-
 jsf-ri/systest/web/eventTag.xhtml                  |    63 +-
 jsf-ri/systest/web/eventTag01.xhtml                |    73 +-
 jsf-ri/systest/web/eventTag02.xhtml                |    73 +-
 jsf-ri/systest/web/eventTagInvalid.xhtml           |    73 +-
 jsf-ri/systest/web/examineViewRoot.jsp             |    72 +-
 jsf-ri/systest/web/external01.jsp                  |    72 +-
 jsf-ri/systest/web/external02.jsp                  |    72 +-
 jsf-ri/systest/web/external03.jsp                  |    72 +-
 jsf-ri/systest/web/facelets/Client1.xhtml          |    73 +-
 jsf-ri/systest/web/facelets/Client2.xhtml          |    73 +-
 jsf-ri/systest/web/facelets/Client3.xhtml          |    48 +
 .../web/facelets/Issue1576IncludedPage.xhtml       |    10 +
 .../systest/web/facelets/Issue1576UsingPage.xhtml  |     8 +
 jsf-ri/systest/web/facelets/Template1.xhtml        |    73 +-
 jsf-ri/systest/web/facelets/Template2.xhtml        |    73 +-
 jsf-ri/systest/web/facelets/Template3.xhtml        |    49 +
 .../web/facelets/componentELAtBuildTime.xhtml      |    74 +-
 .../systest/web/facelets/compositionnotfound.xhtml |    74 +-
 .../facelets/conditionalCCAttributeRendering.xhtml |    74 +-
 jsf-ri/systest/web/facelets/csetTagBody.xhtml      |    74 +-
 jsf-ri/systest/web/facelets/decoratenotfound.xhtml |    74 +-
 jsf-ri/systest/web/facelets/forEach.xhtml          |    84 +-
 .../i_bugdb_13582626_fViewNullLocale.xhtml         |    69 +
 jsf-ri/systest/web/facelets/i_spec_599.xhtml       |    56 +
 jsf-ri/systest/web/facelets/implicitFacet01.xhtml  |    73 +-
 jsf-ri/systest/web/facelets/includenotfound.xhtml  |    74 +-
 jsf-ri/systest/web/facelets/issue1313.xhtml        |    64 +-
 jsf-ri/systest/web/facelets/issue1726.xhtml        |    78 +
 .../web/facelets/issue1727-facet-conditional.xhtml |    87 +
 .../facelets/issue1757-dynamic-components.xhtml    |    74 +
 jsf-ri/systest/web/facelets/keepMessages.xhtml     |    65 -
 jsf-ri/systest/web/facelets/messagePage.xhtml      |    56 -
 .../web/facelets/setpropertyactionlistener1.xhtml  |    74 +-
 .../systest/web/facelets/sourcefromdtdconfig.xhtml |    74 +-
 jsf-ri/systest/web/facelets/templateComp.xhtml     |    71 +-
 jsf-ri/systest/web/facelets/templateDecorate.xhtml |    71 +-
 .../systest/web/facelets/templateDecoration2.xhtml |    73 +-
 jsf-ri/systest/web/facelets/uirepeat.xhtml         |    73 +-
 jsf-ri/systest/web/facelets/uirepeat2.xhtml        |    73 +-
 jsf-ri/systest/web/facelets/uirepeat3.xhtml        |    73 +-
 jsf-ri/systest/web/facelets/uirepeat4.xhtml        |    63 +-
 jsf-ri/systest/web/facelets/uirepeat5.xhtml        |    74 +
 .../systest/web/facelets/validatorDisabled.xhtml   |    63 +-
 .../systest/web/facelets/viewPhaseListeners.xhtml  |    73 +-
 jsf-ri/systest/web/facelets/when.xhtml             |    64 +-
 jsf-ri/systest/web/facesResponse.jsp               |    77 +-
 jsf-ri/systest/web/factoryFinder.jsp               |    72 +-
 jsf-ri/systest/web/failure.xhtml                   |    73 +-
 jsf-ri/systest/web/flash/flashKeepMessages01.xhtml |    54 -
 jsf-ri/systest/web/flash/flashKeepMessages02.xhtml |    51 -
 jsf-ri/systest/web/flash01.xhtml                   |    76 -
 jsf-ri/systest/web/flash02.xhtml                   |    63 -
 jsf-ri/systest/web/foo01.jsp                       |    77 +-
 jsf-ri/systest/web/foo02.jsp                       |    77 +-
 jsf-ri/systest/web/forEach.xhtml                   |    69 +
 jsf-ri/systest/web/forEach01.jsp                   |    77 +-
 jsf-ri/systest/web/forEach02.jsp                   |     6 +-
 jsf-ri/systest/web/forEach03.jsp                   |    75 +-
 jsf-ri/systest/web/forEach03Include.jsp            |    74 +-
 jsf-ri/systest/web/forEach04.jsp                   |    73 +-
 jsf-ri/systest/web/frag1.jsp                       |    73 +-
 jsf-ri/systest/web/frag2.jsp                       |    73 +-
 jsf-ri/systest/web/golden/escape_test.txt          |    45 -
 jsf-ri/systest/web/golden/factoryFinder.txt        |    23 -
 jsf-ri/systest/web/golden/hello-mismatch.txt       |     2 -
 jsf-ri/systest/web/golden/hello.txt                |     2 -
 .../web/golden/include-import-interweaving.txt     |   191 -
 jsf-ri/systest/web/golden/interweaving01.txt       |    31 -
 jsf-ri/systest/web/golden/interweaving02.txt       |    31 -
 jsf-ri/systest/web/golden/interweaving03.txt       |    34 -
 jsf-ri/systest/web/golden/interweaving04.txt       |    27 -
 jsf-ri/systest/web/golden/interweaving05.txt       |    31 -
 jsf-ri/systest/web/golden/interweaving06.txt       |    57 -
 jsf-ri/systest/web/golden/interweaving07.txt       |    58 -
 jsf-ri/systest/web/golden/interweaving08.txt       |    28 -
 jsf-ri/systest/web/golden/interweaving09.txt       |    29 -
 jsf-ri/systest/web/golden/interweaving10.txt       |    29 -
 jsf-ri/systest/web/golden/interweaving11.txt       |    27 -
 jsf-ri/systest/web/golden/interweaving12.txt       |    25 -
 jsf-ri/systest/web/golden/managed04.txt            |    23 -
 .../web/golden/regression/AreaTextRowsAttrTest.txt |    16 -
 .../web/golden/regression/InjectUserDefJS.txt      |    15 -
 .../regression/SelectOneManySizeAttrTest.txt       |    18 -
 jsf-ri/systest/web/golden/renderkit02A.txt         |    14 -
 jsf-ri/systest/web/golden/renderkit03A.txt         |    14 -
 jsf-ri/systest/web/golden/resourceBundle02.txt     |     4 -
 jsf-ri/systest/web/golden/resourceBundle03.txt     |    13 -
 jsf-ri/systest/web/golden/resourceBundle04.txt     |     9 -
 jsf-ri/systest/web/golden/resourceInjection01.txt  |    16 -
 .../systest/web/golden/standard/autocomplete.txt   |    21 -
 jsf-ri/systest/web/golden/standard/component01.txt |    14 -
 jsf-ri/systest/web/golden/standard/converter02.txt |     7 -
 jsf-ri/systest/web/golden/standard/converter05.txt |    18 -
 jsf-ri/systest/web/golden/standard/converter06.txt |    68 -
 .../web/golden/standard/dtablecolumnclasses.txt    |   206 -
 jsf-ri/systest/web/golden/standard/messages01.txt  |    32 -
 jsf-ri/systest/web/golden/standard/messages02.txt  |    44 -
 .../web/golden/standard/pgridcolumnclasses.txt     |   187 -
 .../systest/web/golden/standard/selectmany02.txt   |    23 -
 .../systest/web/golden/standard/selectmany03.txt   |    23 -
 .../systest/web/golden/standard/selectmany04.txt   |    12 -
 jsf-ri/systest/web/golden/subview01.txt            |    55 -
 jsf-ri/systest/web/golden/subview02.txt            |    31 -
 jsf-ri/systest/web/golden/subview03.txt            |    54 -
 jsf-ri/systest/web/golden/subview04.txt            |    62 -
 jsf-ri/systest/web/golden/subview05.txt            |    60 -
 jsf-ri/systest/web/golden/subview06.txt            |    63 -
 jsf-ri/systest/web/golden/taglib/attributeTest.txt |    24 -
 .../web/golden/taglib/commandButton_param_test.txt |    25 -
 .../web/golden/taglib/commandButton_test.txt       |    21 -
 .../golden/taglib/commandLink_multiform_test.txt   |    23 -
 .../systest/web/golden/taglib/commandLink_test.txt |    21 -
 .../web/golden/taglib/command_button_test.txt      |    25 -
 .../web/golden/taglib/command_link_test.txt        |    28 -
 jsf-ri/systest/web/golden/verbatim_test.txt        |    51 -
 jsf-ri/systest/web/groovy/groovy.xhtml             |    71 +-
 jsf-ri/systest/web/hello.jsp                       |    72 +-
 jsf-ri/systest/web/ignore/hello-mismatch.txt       |     1 -
 jsf-ri/systest/web/ignore/ignoreIfContains.txt     |     1 -
 .../web/ignore/taglib/commandButton_test.txt       |     1 -
 .../ignore/taglib/commandLink_multiform_test.txt   |     2 -
 .../systest/web/ignore/taglib/commandLink_test.txt |     2 -
 .../web/ignore/taglib/command_button_test.txt      |     1 -
 .../web/ignore/taglib/command_link_test.txt        |     1 -
 jsf-ri/systest/web/immediate01.jsp                 |    77 +-
 .../web/implicitnav/implicitNavEmptyString.xhtml   |    71 +-
 .../web/implicitnav/implicitNavRedirect.xhtml      |    70 +-
 .../web/implicitnav/implicitNavRedirect02.xhtml    |    71 +-
 jsf-ri/systest/web/implicitnav/page01.xhtml        |    75 +-
 jsf-ri/systest/web/implicitnav/page02.xhtml        |    71 +-
 jsf-ri/systest/web/implicitnav/page03.xhtml        |    71 +-
 jsf-ri/systest/web/implicitnav/page04.xhtml        |    71 +-
 jsf-ri/systest/web/include-import-interweaving.jsp |    72 +-
 jsf-ri/systest/web/include12.jsp                   |    72 +-
 jsf-ri/systest/web/index.html                      |    72 +-
 jsf-ri/systest/web/input01.jsp                     |    72 +-
 jsf-ri/systest/web/interweaving01.jsp              |    76 +-
 jsf-ri/systest/web/interweaving02.jsp              |    76 +-
 jsf-ri/systest/web/interweaving03.jsp              |    77 +-
 jsf-ri/systest/web/interweaving04.jsp              |    77 +-
 jsf-ri/systest/web/interweaving05.jsp              |    77 +-
 jsf-ri/systest/web/interweaving06.jsp              |    77 +-
 jsf-ri/systest/web/interweaving07.jsp              |    77 +-
 jsf-ri/systest/web/interweaving08.jsp              |    72 +-
 jsf-ri/systest/web/interweaving09.jsp              |    72 +-
 jsf-ri/systest/web/interweaving10.jsp              |    72 +-
 jsf-ri/systest/web/interweaving11.jsp              |    72 +-
 jsf-ri/systest/web/interweaving12.jsp              |    72 +-
 jsf-ri/systest/web/issue1682.xhtml                 |    72 +
 jsf-ri/systest/web/jsf2jsp/ajax-gives-500.jspx     |    73 +-
 jsf-ri/systest/web/jsf2jsp/body-gives-500.jspx     |    73 +-
 jsf-ri/systest/web/jsf2jsp/button-gives-500.jspx   |    73 +-
 ...ton-parameter-children-gives-hidden-fields.jspx |    73 +-
 jsf-ri/systest/web/jsf2jsp/event-gives-500.jspx    |    73 +-
 jsf-ri/systest/web/jsf2jsp/head-gives-500.jspx     |    73 +-
 jsf-ri/systest/web/jsf2jsp/link-gives-500.jspx     |    73 +-
 jsf-ri/systest/web/jsf2jsp/metadata-gives-500.jspx |    73 +-
 .../web/jsf2jsp/outputScript-gives-500.jspx        |    73 +-
 .../web/jsf2jsp/outputStylesheet-gives-500.jspx    |    73 +-
 .../web/jsf2jsp/resource-ELResolver-gives-500.jspx |    73 +-
 jsf-ri/systest/web/jsf2jsp/resources.jspx          |    73 +-
 .../web/jsf2jsp/selectManyJsf2Features.jspx        |    73 +-
 jsf-ri/systest/web/jsp/6992760.jsp                 |    70 +
 jsf-ri/systest/web/jsp/addComponent.jsp            |    77 +-
 jsf-ri/systest/web/jsp/commandLinkOnClickFalse.jsp |    72 +-
 jsf-ri/systest/web/jsp/commandLinkOnClickTrue.jsp  |    72 +-
 jsf-ri/systest/web/jsp/form-input-00.jsp           |    77 +-
 jsf-ri/systest/web/jsp/form-input-01.jsp           |    77 +-
 jsf-ri/systest/web/jsp/form-input-02.jsp           |    77 +-
 jsf-ri/systest/web/jsp/formEl.jsp                  |    77 +-
 jsf-ri/systest/web/jsp/jsp-dynamic-00.jsp          |    77 +-
 jsf-ri/systest/web/jsp/jsp-dynamic-01.jsp          |    77 +-
 jsf-ri/systest/web/jsp/jsp-include-00.jsp          |    77 +-
 jsf-ri/systest/web/jsp/jsp-include-01.jsp          |    77 +-
 jsf-ri/systest/web/jsp/jsp-include-02.jsp          |    77 +-
 jsf-ri/systest/web/jsp/jsp-include-03.jsp          |    77 +-
 jsf-ri/systest/web/jsp/jsp-include-04.jsp          |    77 +-
 jsf-ri/systest/web/jsp/jsp-setProperty-01.jsp      |    77 +-
 jsf-ri/systest/web/jsp/jstl-choose-00.jsp          |    77 +-
 jsf-ri/systest/web/jsp/jstl-choose-01.jsp          |    77 +-
 jsf-ri/systest/web/jsp/jstl-choose-02.jsp          |    77 +-
 jsf-ri/systest/web/jsp/jstl-foreach-00.jsp         |    77 +-
 jsf-ri/systest/web/jsp/jstl-foreach-01.jsp         |    77 +-
 jsf-ri/systest/web/jsp/jstl-if-00.jsp              |    77 +-
 jsf-ri/systest/web/jsp/jstl-if-01.jsp              |    77 +-
 jsf-ri/systest/web/jsp/jstl-if-02.jsp              |    77 +-
 jsf-ri/systest/web/jsp/jstl-if-03.jsp              |    77 +-
 jsf-ri/systest/web/jsp/jstl-if-04.jsp              |    77 +-
 jsf-ri/systest/web/jsp/jstl-if-05.jsp              |    77 +-
 jsf-ri/systest/web/jsp/jstl-import-00.jsp          |    77 +-
 jsf-ri/systest/web/jsp/jstl-import-01.jsp          |    77 +-
 jsf-ri/systest/web/jsp/jstl-import-01a.jsp         |    77 +-
 jsf-ri/systest/web/jsp/jstl-import-01b.jsp         |    77 +-
 jsf-ri/systest/web/jsp/jstl-import-02.jsp          |    77 +-
 jsf-ri/systest/web/jsp/jstl-import-02a.jsp         |    77 +-
 jsf-ri/systest/web/jsp/jstl-import-02b.jsp         |    77 +-
 jsf-ri/systest/web/jsp/jstl-import-03.jsp          |    77 +-
 jsf-ri/systest/web/jsp/jstl-import-03a.jsp         |    77 +-
 jsf-ri/systest/web/jsp/jstl-import-03b.jsp         |    77 +-
 jsf-ri/systest/web/jsp/jstl-import-03c.jsp         |    77 +-
 jsf-ri/systest/web/jsp/jstl-import-04.jsp          |    77 +-
 jsf-ri/systest/web/jsp/jstl-import-04a.jsp         |    77 +-
 jsf-ri/systest/web/jsp/jstl-import-04b.jsp         |    77 +-
 jsf-ri/systest/web/jsp/jstl-import-04c.jsp         |    77 +-
 jsf-ri/systest/web/jsp/missing-view.jsp            |    77 +-
 jsf-ri/systest/web/jsp/prependId.jsp               |    77 +-
 jsf-ri/systest/web/jsp/selectBooleanValue.jsp      |    77 +-
 jsf-ri/systest/web/jsp/selectManyInvalidValue.jsp  |    77 +-
 jsf-ri/systest/web/jsp/selectManyMismatchValue.jsp |    77 +-
 jsf-ri/systest/web/jsp/selectManyNoValue.jsp       |    77 +-
 jsf-ri/systest/web/jsp/selectManyTypeInts.jsp      |    77 +-
 jsf-ri/systest/web/jsp/selectOneInvalidValue.jsp   |    77 +-
 jsf-ri/systest/web/jsp/selectOneNoValue.jsp        |    77 +-
 jsf-ri/systest/web/jsp/selectOneRadioTypeInt.jsp   |    73 +-
 .../systest/web/jsp/selectOneRadioTypeInteger.jsp  |    73 +-
 jsf-ri/systest/web/jsp/selectOneTypeInt.jsp        |    77 +-
 .../web/jsp/testMissingActionListenerMethod.jsp    |    72 +-
 jsf-ri/systest/web/jsp/tlvTest01.jsp               |    77 +-
 jsf-ri/systest/web/jsp/verbatim-one-test.jsp       |    72 +-
 jsf-ri/systest/web/jsp/verbatim-test.jsp           |    77 +-
 jsf-ri/systest/web/jsp/verbatim-two-test.jsp       |    72 +-
 jsf-ri/systest/web/listener-1729.xhtml             |    68 +
 jsf-ri/systest/web/listener.jsp                    |    76 +-
 jsf-ri/systest/web/listenerTagListenersBinding.jsp |    72 +-
 .../web/listenerTagListenersBindingType.jsp        |    72 +-
 jsf-ri/systest/web/listenerTagListenersType.jsp    |    72 +-
 jsf-ri/systest/web/listeners.xhtml                 |    96 +
 jsf-ri/systest/web/managed01.jsp                   |    72 +-
 jsf-ri/systest/web/managed02.jsp                   |    72 +-
 jsf-ri/systest/web/managed03.jsp                   |    72 +-
 jsf-ri/systest/web/managed04.jsp                   |    72 +-
 jsf-ri/systest/web/managed07.jsp                   |    72 +-
 jsf-ri/systest/web/managed08.jsp                   |    72 +-
 jsf-ri/systest/web/message01.jsp                   |    72 +-
 jsf-ri/systest/web/message02.jsp                   |    72 +-
 jsf-ri/systest/web/message03.jsp                   |    72 +-
 jsf-ri/systest/web/message04.jsp                   |    72 +-
 jsf-ri/systest/web/message05.xhtml                 |    53 +
 jsf-ri/systest/web/messages.xhtml                  |    52 +
 jsf-ri/systest/web/methodref01.jsp                 |    72 +-
 jsf-ri/systest/web/methodref02.jsp                 |    72 +-
 jsf-ri/systest/web/phaseListener01.jsp             |    72 +-
 jsf-ri/systest/web/phaseListener01A.jsp            |    72 +-
 jsf-ri/systest/web/positiveTagFile.jsp             |   110 +-
 .../web/pre31injection/injectedComponent.xhtml     |    48 +
 jsf-ri/systest/web/projectStage/formMessage.xhtml  |    24 +
 jsf-ri/systest/web/publishEvents.xhtml             |    61 +
 jsf-ri/systest/web/redirect.jsp                    |    77 +-
 jsf-ri/systest/web/redirect1.jsp                   |    77 +-
 jsf-ri/systest/web/regexp/converter02.txt          |     1 +
 jsf-ri/systest/web/regexp/converter06.txt          |     1 +
 jsf-ri/systest/web/regexp/escape_test.txt          |     1 +
 .../web/regexp/regression/AreaTextRowsAttrTest.txt |     1 +
 .../regression/SelectOneManySizeAttrTest.txt       |     1 +
 .../systest/web/regexp/standard/autocomplete.txt   |     1 +
 jsf-ri/systest/web/regexp/standard/component01.txt |     1 +
 .../web/regexp/standard/dtablecolumnclasses.txt    |     1 +
 jsf-ri/systest/web/regexp/standard/messages01.txt  |     1 +
 jsf-ri/systest/web/regexp/standard/messages02.txt  |     1 +
 .../web/regexp/standard/pgridcolumnclasses.txt     |     1 +
 .../systest/web/regexp/standard/selectmany02.txt   |     1 +
 jsf-ri/systest/web/regexp/verbatim_test.txt        |     1 +
 .../web/regression/AreaTextRowsAttrTest.jsp        |    75 +-
 jsf-ri/systest/web/regression/InjectUserDefJS.jsp  |    75 +-
 .../web/regression/SelectOneManySizeAttrTest.jsp   |    75 +-
 .../web/regression/uninstallListeners.xhtml        |    70 +-
 .../web/regression/verifyBuildBeforeRestore.xhtml  |    70 +-
 .../systest/web/render/Mojarra932UsingPage.xhtml   |    69 +
 .../systest/web/render/commandButtonButton.xhtml   |    63 +-
 jsf-ri/systest/web/render/messageRender.xhtml      |    63 +-
 jsf-ri/systest/web/render/outputLinkSpaces.jsp     |    54 +
 jsf-ri/systest/web/render/outputScriptQuery.xhtml  |    71 +-
 .../web/render/outputScriptStyleNested.xhtml       |    71 +-
 jsf-ri/systest/web/render/outputSheetMedia.xhtml   |    14 +
 .../systest/web/render/selectStarNoSelection.jspx  |    36 +-
 .../systest/web/render/selectStarNoSelection.xhtml |    73 +-
 .../selectStarSelectionHideNoSelection.xhtml       |    71 +-
 jsf-ri/systest/web/renderkit-default-clear.jsp     |    72 +-
 jsf-ri/systest/web/renderkit-default.jsp           |    72 +-
 jsf-ri/systest/web/renderkit01.jsp                 |    72 +-
 jsf-ri/systest/web/renderkit02.jsp                 |    72 +-
 jsf-ri/systest/web/renderkit02A.jsp                |    72 +-
 jsf-ri/systest/web/renderkit03.jsp                 |    86 -
 jsf-ri/systest/web/renderkit03A.jsp                |    46 -
 jsf-ri/systest/web/renderkit04.jsp                 |    72 +-
 jsf-ri/systest/web/renderkit05.jsp                 |    72 +-
 jsf-ri/systest/web/renderkit06.jsp                 |    72 +-
 jsf-ri/systest/web/replaceViewRoot.jsp             |    72 +-
 jsf-ri/systest/web/resourceBundle01.jsp            |    72 +-
 jsf-ri/systest/web/resourceBundle02.jsp            |    72 +-
 jsf-ri/systest/web/resourceBundle03.jsp            |    72 +-
 jsf-ri/systest/web/resourceBundle04.jsp            |    72 +-
 jsf-ri/systest/web/resourceBundle05.jsp            |    56 +
 jsf-ri/systest/web/resourceInjection01.jsp         |    72 +-
 jsf-ri/systest/web/resourcerelocation.xhtml        |    75 +-
 jsf-ri/systest/web/resourcerelocation2.xhtml       |    75 +-
 jsf-ri/systest/web/resourcerelocation3.xhtml       |    75 +-
 jsf-ri/systest/web/resourcerelocation4.xhtml       |    75 +-
 jsf-ri/systest/web/resources/ajax/echo1.js         |    71 +-
 .../systest/web/resources/ajax/evalTestFile.xhtml  |    71 +-
 .../web/resources/ajax/evalTestInline.xhtml        |    61 +-
 jsf-ri/systest/web/resources/ajax/test.jsf.js      |  2270 ++++
 jsf-ri/systest/web/resources/case11.css            |    40 +
 jsf-ri/systest/web/resources/case12.css            |    40 +
 jsf-ri/systest/web/resources/case14.css            |    40 +
 jsf-ri/systest/web/resources/case9.css             |    40 +
 .../composite/actionListenerWrapper1.xhtml         |    61 +-
 .../composite/actionListenerWrapper2.xhtml         |    61 +-
 .../composite/actionListenerWrapper3.xhtml         |    61 +-
 .../composite/actionListenerWrapper4.xhtml         |    61 +-
 .../web/resources/composite/actionSource1.xhtml    |    71 +-
 .../web/resources/composite/actionSource2.xhtml    |    71 +-
 .../web/resources/composite/actionSource3.xhtml    |    71 +-
 .../web/resources/composite/actionSource4.xhtml    |    71 +-
 .../web/resources/composite/actionWrapper1.xhtml   |    61 +-
 .../web/resources/composite/actionWrapper2.xhtml   |    61 +-
 .../web/resources/composite/actionWrapper3.xhtml   |    61 +-
 .../web/resources/composite/actionWrapper4.xhtml   |    61 +-
 .../web/resources/composite/addPhaseListener.xhtml |    71 +-
 .../web/resources/composite/argAction.xhtml        |    71 +-
 .../composite/captureIsSavingStateValue.xhtml      |    60 +
 .../resources/composite/ccParentExpression.xhtml   |    61 +-
 .../resources/composite/childrenAndFacets.xhtml    |    71 +-
 jsf-ri/systest/web/resources/composite/compA.xhtml |    71 +-
 .../composite/compAttributeRequired.xhtml          |    16 +
 .../composite/compAttributeWithArgs.xhtml          |    61 +-
 jsf-ri/systest/web/resources/composite/compB.xhtml |    71 +-
 jsf-ri/systest/web/resources/composite/compD.xhtml |    71 +-
 jsf-ri/systest/web/resources/composite/compE.xhtml |    71 +-
 .../web/resources/composite/compWithArgs.xhtml     |    61 +-
 .../composite/componentWithMetadata.xhtml          |    71 +-
 .../resources/composite/compositeComponentEL.xhtml |    71 +-
 .../composite/compositionWithinComposite.xhtml     |    71 +-
 .../composite/conditionalAttributeRendering.xhtml  |    71 +-
 .../web/resources/composite/converter1.xhtml       |    71 +-
 .../web/resources/composite/converter2.xhtml       |    71 +-
 .../web/resources/composite/converter3.xhtml       |    71 +-
 .../web/resources/composite/converter4.xhtml       |    71 +-
 .../web/resources/composite/customAction.xhtml     |    71 +-
 .../resources/composite/customActionListener.xhtml |    71 +-
 .../resources/composite/customActionWrapper1.xhtml |    61 +-
 .../resources/composite/customActionWrapper2.xhtml |    61 +-
 .../resources/composite/customActionWrapper3.xhtml |    61 +-
 .../resources/composite/customActionWrapper4.xhtml |    61 +-
 .../resources/composite/customCustomAction.xhtml   |    71 +-
 .../web/resources/composite/customValidator.xhtml  |    71 +-
 .../composite/customValueChangeListener.xhtml      |    71 +-
 .../systest/web/resources/composite/decorate.xhtml |    73 +-
 .../web/resources/composite/defaultAction.xhtml    |    71 +-
 .../composite/defaultAttributeValues.xhtml         |    68 +
 .../systest/web/resources/composite/facetA.xhtml   |    71 +-
 .../systest/web/resources/composite/facetB.xhtml   |    71 +-
 .../systest/web/resources/composite/facetD.xhtml   |    71 +-
 .../systest/web/resources/composite/facetE.xhtml   |    71 +-
 .../web/resources/composite/groovyBacked.xhtml     |    70 +-
 .../web/resources/composite/inlinedStyle1.xhtml    |    71 +-
 .../web/resources/composite/inlinedStyle2.xhtml    |    71 +-
 .../composite/inlinedStyleAndScript.xhtml          |    71 +-
 .../composite/insertChildrenRequiredFalse.xhtml    |    71 +-
 .../composite/insertChildrenRequiredTrue.xhtml     |    71 +-
 .../composite/insertFacetRequiredFalse.xhtml       |    71 +-
 .../composite/insertFacetRequiredTrue.xhtml        |    71 +-
 .../web/resources/composite/invalidMeArgs.xhtml    |    61 +-
 .../web/resources/composite/invalidVeArgs.xhtml    |    61 +-
 .../resources/composite/isCompositeComponent.xhtml |    68 +
 .../javaBackedComponentDefaultAttrValues.xhtml     |    70 +-
 .../javaTopLevelActionListenerComponent.xhtml      |    71 +-
 .../composite/javaTopLevelComponent.xhtml          |    71 +-
 .../web/resources/composite/jsr276Correct01.xhtml  |    71 +-
 .../resources/composite/jsr276Incorrect01.xhtml    |    71 +-
 .../web/resources/composite/meDefaults.xhtml       |    63 +-
 .../resources/composite/multiActionSource.xhtml    |    60 +
 .../multiActionSourceMethodSignatures.xhtml        |    63 +
 .../systest/web/resources/composite/myaction.xhtml |    71 +-
 .../systest/web/resources/composite/nesting.xhtml  |    71 +-
 .../systest/web/resources/composite/nesting1.xhtml |    71 +-
 .../web/resources/composite/nesting10.xhtml        |    73 +-
 .../web/resources/composite/nesting11.xhtml        |    63 +-
 .../systest/web/resources/composite/nesting2.xhtml |    71 +-
 .../systest/web/resources/composite/nesting3.xhtml |    73 +-
 .../systest/web/resources/composite/nesting4.xhtml |    73 +-
 .../systest/web/resources/composite/nesting5.xhtml |    73 +-
 .../systest/web/resources/composite/nesting6.xhtml |    63 +-
 .../systest/web/resources/composite/nesting7.xhtml |    61 +-
 .../systest/web/resources/composite/nesting8.xhtml |    63 +-
 .../systest/web/resources/composite/nesting9.xhtml |    63 +-
 .../web/resources/composite/notrequired.xhtml      |    71 +-
 .../composite/renderFacetRequiredFalse.xhtml       |    71 +-
 .../composite/renderFacetRequiredTrue.xhtml        |    71 +-
 .../systest/web/resources/composite/required.xhtml |    71 +-
 .../web/resources/composite/required01.xhtml       |    71 +-
 .../web/resources/composite/requiredFacet.xhtml    |    71 +-
 .../composite/resourceDependencyComponent.xhtml    |    71 +-
 .../web/resources/composite/showClientId01.xhtml   |    71 +-
 .../composite/simpleCompositeComponent.xhtml       |    15 +
 .../web/resources/composite/validator1.xhtml       |    71 +-
 .../web/resources/composite/validator2.xhtml       |    71 +-
 .../web/resources/composite/validator3.xhtml       |    71 +-
 .../web/resources/composite/validator4.xhtml       |    71 +-
 .../resources/composite/validatorWrapper1.xhtml    |    61 +-
 .../resources/composite/validatorWrapper2.xhtml    |    61 +-
 .../resources/composite/validatorWrapper3.xhtml    |    61 +-
 .../resources/composite/validatorWrapper4.xhtml    |    61 +-
 .../valueChangeSetPropertyActionListener.xhtml     |    71 +-
 .../resources/composite/valueChangeWrapper1.xhtml  |    61 +-
 .../resources/composite/valueChangeWrapper2.xhtml  |    61 +-
 .../resources/composite/valueChangeWrapper3.xhtml  |    61 +-
 .../resources/composite/valueChangeWrapper4.xhtml  |    61 +-
 .../web/resources/composite/veDefaults.xhtml       |    67 +
 .../web/resources/composite/veDefaults_1966.xhtml  |    59 +
 .../composite/veDefaults_1966_Color.xhtml          |    55 +
 .../web/resources/composite/veDefaults_1986.xhtml  |    56 +
 .../resources/composite/verifyUserIsInRole.xhtml   |    18 +
 .../systest/web/resources/composite/wrapper.xhtml  |    71 +-
 .../web/resources/ezbehaviors/compositeTest.xhtml  |    72 +-
 .../i_spec_599_composite.xhtml                     |    61 +
 .../i_spec_599_composite_taglib.xhtml              |    23 +
 jsf-ri/systest/web/resources/simple.css            |    42 +-
 jsf-ri/systest/web/resources/tmo/block.xhtml       |    62 +
 jsf-ri/systest/web/selectItemEscape.jsp            |    97 +-
 jsf-ri/systest/web/session-invalidator.jsp         |    77 +-
 jsf-ri/systest/web/setApplicationMapProperty.xhtml |    71 +-
 jsf-ri/systest/web/standard/autocomplete.jsp       |    72 +-
 .../web/standard/checkboxSubmittedValue.xhtml      |    55 -
 jsf-ri/systest/web/standard/clinknoform.jsp        |    74 +-
 jsf-ri/systest/web/standard/component01.jsp        |    72 +-
 .../systest/web/standard/dtablecolumnclasses.jsp   |    72 +-
 jsf-ri/systest/web/standard/dtablemultiforms.jsp   |    74 +-
 jsf-ri/systest/web/standard/dtablerowclasses.jsp   |    66 +-
 .../web/standard/dtablevarnotoverwritten.jsp       |    72 +-
 .../systest/web/standard/dtablewithemptybody.jsp   |    64 +-
 .../systest/web/standard/formlayouttemplates.xhtml |    22 +
 jsf-ri/systest/web/standard/formnotomitted.xhtml   |    16 +
 jsf-ri/systest/web/standard/formomitted.xhtml      |    14 +
 jsf-ri/systest/web/standard/formomittedforcc.xhtml |    14 +
 .../include/formomitted_includedcontent.xhtml      |    58 +
 .../systest/web/standard/linkTypeAttribute.xhtml   |    77 +-
 jsf-ri/systest/web/standard/messages01.jsp         |    72 +-
 jsf-ri/systest/web/standard/messages02.jsp         |    72 +-
 .../web/standard/metadataandformomitted.xhtml      |    20 +
 jsf-ri/systest/web/standard/metadataomitted.xhtml  |    20 +
 jsf-ri/systest/web/standard/nav1.xhtml             |    73 +-
 jsf-ri/systest/web/standard/nav2.xhtml             |    73 +-
 jsf-ri/systest/web/standard/outcometarget01.xhtml  |    64 +-
 jsf-ri/systest/web/standard/pgridcolumnclasses.jsp |    72 +-
 .../selectOneLiteralHideNoSelectionOption.xhtml    |    61 +-
 ...ralHideNoSelectionOptionInSelectItemGroup.xhtml |    63 +-
 ...ctOneValueExpressionHideNoSelectionOption.xhtml |    63 +-
 jsf-ri/systest/web/standard/selectmany01.jsp       |    72 +-
 jsf-ri/systest/web/standard/selectmany02.jsp       |    73 +-
 jsf-ri/systest/web/standard/selectmany03.jsp       |    75 +-
 jsf-ri/systest/web/standard/selectmany04.jsp       |    73 +-
 jsf-ri/systest/web/standard/selectmany05.xhtml     |    73 +-
 jsf-ri/systest/web/standard/selectonemanyenum.jsp  |    72 +-
 jsf-ri/systest/web/standard/submit.xhtml           |    17 +
 jsf-ri/systest/web/state/dynamicAddition.xhtml     |    71 +-
 jsf-ri/systest/web/state/dynamicAddition2.xhtml    |    77 +-
 .../web/state/dynamicAdditionDeletion.xhtml        |    75 +-
 .../state/dynamicAdditionTransientSubTree.xhtml    |    73 +-
 jsf-ri/systest/web/state/dynamicDeletion.xhtml     |    71 +-
 jsf-ri/systest/web/state/isSavingState.xhtml       |    69 +
 jsf-ri/systest/web/state/isSavingState2.xhtml      |    64 +
 jsf-ri/systest/web/subview01.jsp                   |    77 +-
 jsf-ri/systest/web/subview02.jsp                   |    77 +-
 jsf-ri/systest/web/subview03.jsp                   |    77 +-
 jsf-ri/systest/web/subview04.jsp                   |    77 +-
 jsf-ri/systest/web/subview05.jsp                   |    77 +-
 jsf-ri/systest/web/subview06.jsp                   |    77 +-
 jsf-ri/systest/web/subviewIterator01.jsp           |    77 +-
 jsf-ri/systest/web/subviewIterator02.jsp           |    77 +-
 jsf-ri/systest/web/success.xhtml                   |    73 +-
 jsf-ri/systest/web/tag-ivars1.jsp                  |    72 +-
 jsf-ri/systest/web/tag-ivars2.jsp                  |    72 +-
 jsf-ri/systest/web/taglib/attributeTest.jsp        |    72 +-
 .../web/taglib/commandButton_param_test.jsp        |    72 +-
 jsf-ri/systest/web/taglib/commandButton_test.jsp   |    72 +-
 .../web/taglib/commandLink_multiform_test.jsp      |    72 +-
 jsf-ri/systest/web/taglib/commandLink_test.jsp     |    72 +-
 jsf-ri/systest/web/taglib/command_button_test.jsp  |    72 +-
 jsf-ri/systest/web/taglib/command_link_test.jsp    |    72 +-
 jsf-ri/systest/web/test01.jsp                      |    79 +-
 jsf-ri/systest/web/validator.jsp                   |    72 +-
 jsf-ri/systest/web/validator01.jsp                 |    72 +-
 jsf-ri/systest/web/validator02.jsp                 |    76 +-
 jsf-ri/systest/web/validator03.jsp                 |    76 +-
 jsf-ri/systest/web/validator04.jsp                 |    76 +-
 jsf-ri/systest/web/validator05.xhtml               |    73 +-
 jsf-ri/systest/web/valueBinding01.jsp              |    72 +-
 jsf-ri/systest/web/valueBinding02.jsp              |    72 +-
 jsf-ri/systest/web/valueBinding03.jsp              |    72 +-
 jsf-ri/systest/web/valueBinding04.jsp              |    72 +-
 jsf-ri/systest/web/valueBinding05.jsp              |    72 +-
 jsf-ri/systest/web/valueBinding06.jsp              |    72 +-
 jsf-ri/systest/web/valueBinding07.jsp              |    72 +-
 jsf-ri/systest/web/valueChangeListener.jsp         |    76 +-
 jsf-ri/systest/web/valueChangeListener02.jsp       |    73 +-
 jsf-ri/systest/web/verbatim_test.jsp               |    72 +-
 jsf-ri/systest/web/view.xml/footer.xhtml           |    62 +
 jsf-ri/systest/web/view.xml/header.view.xml        |    62 +
 .../systest/web/view.xml/includedInFooter.view.xml |    53 +
 jsf-ri/systest/web/view.xml/includedInFooter.xhtml |    44 +
 jsf-ri/systest/web/view.xml/index.view.xml         |    72 +
 .../templateClientUsingXmlAndXhtml.view.xml        |    96 +
 jsf-ri/systest/web/view.xml/xhtmlTemplate.xhtml    |    84 +
 jsf-ri/systest/web/viewLocale.jsp                  |    77 +-
 jsf-ri/systest/web/viewParameters/events.xhtml     |    71 +-
 jsf-ri/systest/web/viewParameters/page01.xhtml     |    61 +-
 jsf-ri/systest/web/viewParameters/page02.xhtml     |    61 +-
 jsf-ri/systest/web/viewParameters/page03.xhtml     |    71 +-
 jsf-ri/systest/web/viewParameters/template.xhtml   |    71 +-
 jsf-ri/systest/web/viewTagListeners.jsp            |    72 +-
 .../com/sun/faces/AdapterPropertyResolver.java     |    36 +-
 jsf-ri/test/com/sun/faces/CustomSystemEvent.java   |    29 +-
 jsf-ri/test/com/sun/faces/CustomerBean.java        |    36 +-
 .../test/com/sun/faces/SystemEventListener1.java   |    28 +-
 .../test/com/sun/faces/SystemEventListener2.java   |    30 +-
 jsf-ri/test/com/sun/faces/TestActionListener.java  |    36 +-
 jsf-ri/test/com/sun/faces/TestBean.java            |    36 +-
 jsf-ri/test/com/sun/faces/TestComponent.java       |    36 +-
 jsf-ri/test/com/sun/faces/TestConverter.java       |    36 +-
 jsf-ri/test/com/sun/faces/TestELResolver.java      |    34 +-
 jsf-ri/test/com/sun/faces/TestExceptionBean.java   |    36 +-
 jsf-ri/test/com/sun/faces/TestFirstConverter.java  |    36 +-
 jsf-ri/test/com/sun/faces/TestFirstValidator.java  |    36 +-
 jsf-ri/test/com/sun/faces/TestForm.java            |    28 +-
 jsf-ri/test/com/sun/faces/TestFormVisit.java       |    65 +
 jsf-ri/test/com/sun/faces/TestMessages.properties  |    40 +
 .../test/com/sun/faces/TestNavigationHandler.java  |    36 +-
 .../com/sun/faces/TestOldVariableResolver.java     |    36 +-
 .../test/com/sun/faces/TestPropertyResolver.java   |    36 +-
 .../sun/faces/TestResourceBundle2_de.properties    |    42 +-
 .../com/sun/faces/TestResourceBundle_de.properties |    42 +-
 .../com/sun/faces/TestResourceBundle_en.properties |    40 +
 jsf-ri/test/com/sun/faces/TestSecondConverter.java |    36 +-
 jsf-ri/test/com/sun/faces/TestSecondValidator.java |    36 +-
 .../test/com/sun/faces/TestVariableResolver.java   |    36 +-
 jsf-ri/test/com/sun/faces/TestViewHandler.java     |    36 +-
 .../faces/application/ActionListenerTestImpl.java  |    36 +-
 .../faces/application/DeprStateManagerImpl.java    |    37 +-
 jsf-ri/test/com/sun/faces/application/NavBean.java |    36 +-
 .../application/NavigationHandlerTestImpl.java     |    36 +-
 .../application/PropertyResolverTestImpl.java      |    36 +-
 .../faces/application/TestActionListenerImpl.java  |   200 -
 .../com/sun/faces/application/TestAdapters.java    |    38 +-
 .../faces/application/TestApplicationEvents.java   |    28 +-
 .../application/TestApplicationFactoryImpl.java    |    36 +-
 .../sun/faces/application/TestApplicationImpl.java |   151 +-
 .../application/TestApplicationImpl_Config.java    |    38 +-
 .../sun/faces/application/TestFacesMessage.java    |   103 +-
 .../application/TestHASDeprStateManagerImpl.java   |    60 +-
 .../faces/application/TestHAStateManagerImpl.java  |    36 +-
 .../com/sun/faces/application/TestInjection.java   |    38 +-
 .../application/TestJSF2NavigationHandler.java     |   302 -
 .../faces/application/TestNavigationHandler.java   |   464 -
 .../faces/application/TestStateManagerImpl.java    |    51 +-
 .../sun/faces/application/TestViewHandlerImpl.java |    78 +-
 .../application/VariableResolverTestImpl.java      |    36 +-
 .../sun/faces/application/ViewHandlerTestImpl.java |    36 +-
 .../faces/application/packagehack/PackageHack.java |    55 +
 .../resource/TestResourceHandlerImpl.java          |   293 +-
 .../application/resource/TestResourceImpl.java     |   109 +-
 .../application/resource/TestResourceManager.java  |    85 +-
 .../sun/faces/component/visit/TestTreeVisit.java   |    60 +-
 .../component/visit/TestTreeWithUIDataVisit.java   |   337 +-
 .../component/visit/TestTreeWithUIRepeatVisit.java |    96 +-
 .../com/sun/faces/config/ClaimConfiguration.java   |    36 +-
 .../faces/config/ConfigureListenerTestCase.java    |  1001 --
 .../sun/faces/config/NewCustomerFormHandler.java   |    37 +-
 .../test/com/sun/faces/config/NonManagedBean.java  |    36 +-
 jsf-ri/test/com/sun/faces/config/SimpleBean.java   |    37 +-
 .../com/sun/faces/config/SimplePhaseListener.java  |    37 +-
 .../com/sun/faces/config/StoreServletContext.java  |    37 +-
 .../test/com/sun/faces/config/TestComponent.java   |    36 +-
 .../com/sun/faces/config/TestConfigListener.java   |    87 -
 .../test/com/sun/faces/config/TestConverter.java   |    36 +-
 .../sun/faces/config/TestFacesConfigOrdering.java  |    36 +-
 .../com/sun/faces/config/TestFactoryInjection.java |    45 +-
 .../sun/faces/config/TestManagedBeanFactory.java   |    49 +-
 jsf-ri/test/com/sun/faces/config/TestRenderer.java |    36 +-
 .../test/com/sun/faces/config/TestValidator.java   |    36 +-
 .../sun/faces/context/TestExceptionHandler.java    |    36 +-
 .../context/TestExternalContextFactoryImpl.java    |    36 +-
 .../sun/faces/context/TestExternalContextImpl.java |    55 +-
 .../faces/context/TestFacesContextFactoryImpl.java |    36 +-
 .../sun/faces/context/TestFacesContextImpl.java    |   714 -
 .../faces/context/TestPartialResponseWriter.java   |   138 +
 .../com/sun/faces/context/TestStateContext.java    |   135 +
 .../test/com/sun/faces/convert/TestConverters.java |    36 +-
 jsf-ri/test/com/sun/faces/el/ElBean.java           |    36 +-
 .../el/TestFacesResourceBundleELResolver.java      |    38 +-
 .../com/sun/faces/el/TestMethodExpressionImpl.java |   344 +-
 jsf-ri/test/com/sun/faces/el/TestMethodRef.java    |    36 +-
 .../com/sun/faces/el/TestNestedELResolver.java     |    34 +-
 .../com/sun/faces/el/TestPropertyResolverImpl.java |    36 +-
 .../com/sun/faces/el/TestResourceELResolver.java   |    42 +-
 .../com/sun/faces/el/TestValueBindingImpl.java     |   190 +-
 .../sun/faces/el/TestValueBindingImpl_Model.java   |    75 +-
 .../com/sun/faces/el/TestValueExpressionImpl.java  |   467 +-
 .../faces/el/TestValueExpressionImpl_Model.java    |    76 +-
 .../com/sun/faces/el/TestVariableResolverImpl.java |    36 +-
 jsf-ri/test/com/sun/faces/el/impl/Bean1.java       |    29 +-
 jsf-ri/test/com/sun/faces/el/impl/Bean2.java       |    29 +-
 jsf-ri/test/com/sun/faces/el/impl/Bean2Editor.java |    29 +-
 jsf-ri/test/com/sun/faces/el/impl/TestELImpl.java  |    31 +-
 .../com/sun/faces/el/impl/TestUnifiedELImpl.java   |    33 +-
 .../test/com/sun/faces/el/impl/beans/Factory.java  |    31 +-
 .../com/sun/faces/el/impl/beans/PrivateBean1a.java |    31 +-
 .../com/sun/faces/el/impl/beans/PrivateBean2b.java |    29 +-
 .../com/sun/faces/el/impl/beans/PrivateBean2c.java |    30 +-
 .../com/sun/faces/el/impl/beans/PrivateBean2d.java |    29 +-
 .../com/sun/faces/el/impl/beans/PublicBean1.java   |    29 +-
 .../com/sun/faces/el/impl/beans/PublicBean1b.java  |    29 +-
 .../com/sun/faces/el/impl/beans/PublicBean2a.java  |    29 +-
 .../sun/faces/el/impl/beans/PublicInterface2.java  |    29 +-
 jsf-ri/test/com/sun/faces/io/TestIO.java           |    38 +-
 .../lifecycle/TestApplyRequestValuesPhase.java     |    52 +-
 .../lifecycle/TestInvokeApplicationPhase.java      |    36 +-
 .../faces/lifecycle/TestLifecycleFactoryImpl.java  |    36 +-
 .../com/sun/faces/lifecycle/TestLifecycleImpl.java |   608 +-
 .../faces/lifecycle/TestLifecycleImpl_initial.java |    50 +-
 jsf-ri/test/com/sun/faces/lifecycle/TestPhase.java |    50 +-
 .../com/sun/faces/lifecycle/TestProcessEvents.java |    36 +-
 .../lifecycle/TestProcessValidationsPhase.java     |    48 +-
 .../faces/lifecycle/TestRenderResponsePhase.java   |    54 +-
 .../faces/lifecycle/TestRestoreViewFromPage.java   |    50 +-
 .../sun/faces/lifecycle/TestRestoreViewPhase.java  |    54 +-
 .../sun/faces/lifecycle/TestSaveStateInPage.java   |    51 +-
 .../lifecycle/TestUpdateModelValuesPhase.java      |    36 +-
 .../com/sun/faces/mock/MockServletContext.java     |    36 +-
 .../com/sun/faces/renderkit/TestContentTypes.java  |    36 +-
 .../com/sun/faces/renderkit/TestRenderKit.java     |    50 +-
 .../sun/faces/renderkit/TestRenderKitFactory.java  |    36 +-
 .../sun/faces/renderkit/TestRenderKitUtils.java    |    36 +-
 .../html_basic/HtmlResponseWriterTest.java         |   139 -
 .../renderkit/html_basic/MenuRendererTestCase.java |    36 +-
 .../renderkit/html_basic/TestComponentType.java    |    36 +-
 .../html_basic/TestHtmlResponseWriter.java         |    36 +-
 .../html_basic/TestRendererConversions.java        |    54 +-
 .../renderkit/html_basic/TestRenderers_1.java      |    50 +-
 .../renderkit/html_basic/TestRenderers_2.java      |    58 +-
 .../renderkit/html_basic/TestRenderers_3.java      |    36 +-
 .../renderkit/html_basic/TestRenderers_4.java      |    36 +-
 .../groovy/MojarraGroovyClassLoaderTest.java       |    28 +-
 .../com/sun/faces/taglib/TestCoreValidator.java    |    36 +-
 .../sun/faces/taglib/TestHtmlBasicValidator.java   |    36 +-
 jsf-ri/test/com/sun/faces/taglib/TlvTestCase.java  |    36 +-
 .../taglib/jsf_core/TestCoreTagsVBEnabled.java     |    50 +-
 .../faces/taglib/jsf_core/TestLoadBundleTag.java   |    36 +-
 .../faces/taglib/jsf_core/TestValidatorTags.java   |    50 +-
 .../com/sun/faces/taglib/jsf_core/TestViewTag.java |    52 +-
 .../com/sun/faces/util/MultiThreadTestRunner.java  |    36 +-
 jsf-ri/test/com/sun/faces/util/TestHtmlUtils.java  |   164 -
 .../test/com/sun/faces/util/TestLRUMap_local.java  |   113 -
 .../com/sun/faces/util/TestMessageFactoryImpl.java |    36 +-
 jsf-ri/test/com/sun/faces/util/TestUtil.java       |    36 +-
 jsf-ri/test/com/sun/faces/util/TestUtil_local.java |   102 -
 .../test/com/sun/faces/util/TestUtil_messages.java |    40 +-
 jsf-ri/test/com/sun/faces/util/TreeStructure.java  |    36 +-
 jsf-ri/test/debugrunner.bat                        |     0
 jsf-ri/web/test/CorrectRenderersResponse           |    28 +-
 jsf-ri/web/test/RenderResponse_correct             |    43 +-
 jsf-ri/web/test/TestCoreTagVBEnabled.jsp           |    77 +-
 jsf-ri/web/test/TestLifecycleImpl_initial_correct  |     8 +-
 jsf-ri/web/test/TestRenderResponsePhase.jsp        |    77 +-
 jsf-ri/web/test/TestRenderersFromJsp.jsp           |    77 +-
 jsf-ri/web/test/TestSaveState.jsp                  |    77 +-
 jsf-ri/web/test/TestValidatorTags.jsp              |    77 +-
 jsf-ri/web/test/TestViewHandlerImpl_correct        |     8 +-
 jsf-ri/web/test/TestViewTag.jsp                    |    79 +-
 jsf-ri/web/test/TestViewTag2.jsp                   |    79 +-
 jsf-ri/web/test/WEB-INF/config-lists-and-maps.xml  |   102 +-
 jsf-ri/web/test/WEB-INF/embed-config.xml           |    73 +-
 jsf-ri/web/test/WEB-INF/extra-config.xml           |    73 +-
 jsf-ri/web/test/WEB-INF/faces-config-1.0.xml       |    73 +-
 jsf-ri/web/test/WEB-INF/faces-config-empty.xml     |    74 +-
 jsf-ri/web/test/WEB-INF/faces-config.xml           |    73 +-
 jsf-ri/web/test/WEB-INF/faces-navigation-2.xml     |    73 +-
 jsf-ri/web/test/WEB-INF/faces-navigation.xml       |    74 +-
 jsf-ri/web/test/WEB-INF/navigation-cases-2.xml     |    74 +-
 jsf-ri/web/test/WEB-INF/navigation-cases.xml       |    74 +-
 jsf-ri/web/test/WEB-INF/none-scoped-beans.xml      |    74 +-
 jsf-ri/web/test/WEB-INF/renderkit1.xml             |    73 +-
 jsf-ri/web/test/WEB-INF/webinfAbsolute1.xml        |    75 +-
 jsf-ri/web/test/WEB-INF/webinfAbsolute2.xml        |    75 +-
 jsf-ri/web/test/WEB-INF/webinfAbsolute3.xml        |    75 +-
 jsf-ri/web/test/components.jsp                     |    77 +-
 .../config-with-failing-property-conversion.xml    |    73 +-
 jsf-ri/web/test/config1.xml                        |    73 +-
 jsf-ri/web/test/config2.xml                        |    73 +-
 jsf-ri/web/test/greeting.jsp                       |    77 +-
 jsf-ri/web/test/locale-config.xml                  |    73 +-
 jsf-ri/web/test/locale-config1.xml                 |    73 +-
 jsf-ri/web/test/locale-config2.xml                 |    73 +-
 jsf-ri/web/test/parserTests.txt                    |    40 +
 jsf-ri/web/test/parserTestsOutput.txt              |    40 +
 .../nvLibrary/images/duke-nv.gif => root-duke.gif} |   Bin
 .../rootLibrary-duke.gif}                          |   Bin
 jsf-ri/web/test/runtime-components.xml             |    73 +-
 jsf-ri/web/test/test.xhtml                         |    73 +-
 jsf-ri/web/test/testWhile.jsp                      |    77 +-
 jsf-spi/called-from-mvn-build.xml                  |   166 +
 jsf-spi/pom.xml                                    |   297 +
 jsf-test/GLASSFISH-11636/build.xml                 |   120 +
 .../GLASSFISH-11636/i_gf_11636_htmlunit/pom.xml    |   107 +
 .../IssueGlassFish11636TestCase.java               |    77 +
 .../pom.xml                                        |    38 +
 .../src/main/java/beans/Bean.java                  |    58 +
 .../src/main/resources/META-INF/faces-config.xml   |    45 +
 .../maven-module-that-makes-wab/pom.xml            |   191 +
 .../src/main/resources/Messages.properties         |    12 +
 .../src/main/resources/Messages_ru.properties      |    12 +
 .../src/main/resources/log4j.properties            |     8 +
 .../src/main/webapp/WEB-INF/faces-config.xml       |    19 +
 .../src/main/webapp/WEB-INF/pages/login.xhtml      |    18 +
 .../src/main/webapp/WEB-INF/web.xml                |    59 +
 .../src/main/webapp/i_gf_11636.xhtml               |     4 +
 .../src/main/webapp/index.jsp                      |     4 +
 .../src/test/java/ndx/bill/face/readme.txt         |     1 +
 .../src/test/resources/log4j.properties            |     8 +
 jsf-test/GLASSFISH-15985/build.xml                 |   115 +
 jsf-test/GLASSFISH-15985/dummy-web.war             |   Bin 0 -> 580310 bytes
 .../GLASSFISH-15985/i_gf_15985_htmlunit/pom.xml    |   110 +
 .../IssueGlassFish15985TestCase.java               |    77 +
 jsf-test/GLASSFISH-16847/build.xml                 |    91 +
 jsf-test/GLASSFISH-16847/jsftest/pom.xml           |   104 +
 .../tests/embedded/jsftest/JSFTestBean.java        |    87 +
 .../tests/embedded/jsftest/JSFTestServlet.java     |    92 +
 .../main/webapp/IssueGLASSFISH16847UsingPage.xhtml |    85 +
 .../jsftest/src/main/webapp/WEB-INF/sun-web.xml    |    51 +
 .../jsftest/src/main/webapp/WEB-INF/web.xml        |    72 +
 .../glassfish/tests/embedded/jsftest/JSFTest.java  |   138 +
 jsf-test/GLASSFISH-16917/build.xml                 |    96 +
 .../leaktest2-ManagedBean-only/pom.xml             |    56 +
 .../java/com/mycompany/leaktest2/TestBean.java     |    10 +
 .../src/main/webapp/WEB-INF/web.xml                |     3 +
 .../GLASSFISH-16917/leaktest2-cdi-only/pom.xml     |    56 +
 .../java/com/mycompany/leaktest2/TestBean.java     |     9 +
 .../src/main/webapp/WEB-INF/beans.xml              |     5 +
 .../src/main/webapp/WEB-INF/web.xml                |     3 +
 jsf-test/GLASSFISH-17218/build.xml                 |   124 +
 .../i_glassfish_17218_htmlunit/pom.xml             |    97 +
 .../IssueGLASSFISH_17218MojarraTestCase.java       |    88 +
 .../IssueGLASSFISH_17218MyFacesTestCase.java       |    88 +
 .../i_glassfish_17218_mojarra_1_2_war/pom.xml      |   137 +
 .../src/main/java/helloDuke/UserNameBean.java      |    78 +
 .../src/main/webapp/WEB-INF/faces-config.xml       |    63 +
 .../src/main/webapp/WEB-INF/sun-web.xml            |     6 +
 .../src/main/webapp/WEB-INF/web.xml                |    68 +
 .../src/main/webapp/error.jsp                      |    74 +
 .../src/main/webapp/greeting.jsp                   |    78 +
 .../src/main/webapp/index.html                     |    54 +
 .../src/main/webapp/response.jsp                   |    78 +
 .../src/main/webapp/wave.med.gif                   |   Bin 0 -> 3000 bytes
 .../i_glassfish_17218_myfaces_1_2_war/pom.xml      |   128 +
 .../src/main/java/helloDuke/UserNameBean.java      |    78 +
 .../src/main/webapp/WEB-INF/faces-config.xml       |    63 +
 .../src/main/webapp/WEB-INF/sun-web.xml            |     6 +
 .../src/main/webapp/WEB-INF/web.xml                |    68 +
 .../src/main/webapp/error.jsp                      |    74 +
 .../src/main/webapp/greeting.jsp                   |    78 +
 .../src/main/webapp/index.html                     |    54 +
 .../src/main/webapp/response.jsp                   |    78 +
 .../src/main/webapp/wave.med.gif                   |   Bin 0 -> 3000 bytes
 jsf-test/JAVASERVERFACES-1338/build.xml            |   140 +
 .../i_jsf_1338_htmlunit/pom.xml                    |    97 +
 .../i_jsf_1338_htmlunit/ScrumToysTestCase.java     |    80 +
 jsf-test/JAVASERVERFACES-1995/build.xml            |   101 +
 .../JAVASERVERFACES-1995/i_jsf_1995_ear/pom.xml    |    43 +
 .../i_jsf_1995_htmlunit/pom.xml                    |    97 +
 .../i_jsf_1995/Issue1995_war_1_TestCase.java       |    76 +
 .../i_jsf_1995/Issue1995_war_2_TestCase.java       |    76 +
 .../JAVASERVERFACES-1995/i_jsf_1995_jar/pom.xml    |    38 +
 .../i_jsf_1995_jar/src/main/java/beans/Bean.java   |    58 +
 .../src/main/resources/META-INF/faces-config.xml   |    45 +
 .../JAVASERVERFACES-1995/i_jsf_1995_war_1/pom.xml  |    50 +
 .../regression/i_jsf_1995/Issue1995War1Bean.java   |    61 +
 .../src/main/webapp/WEB-INF/beans.xml              |     0
 .../src/main/webapp/WEB-INF/glassfish-web.xml      |    11 +
 .../src/main/webapp/WEB-INF/web.xml                |    24 +
 .../i_jsf_1995_war_1/src/main/webapp/index.jsp     |    17 +
 .../i_jsf_1995_war_1/src/main/webapp/index.xhtml   |    14 +
 .../JAVASERVERFACES-1995/i_jsf_1995_war_2/pom.xml  |    50 +
 .../regression/i_jsf_1995/Issue1995War2Bean.java   |    61 +
 .../src/main/webapp/WEB-INF/beans.xml              |     0
 .../src/main/webapp/WEB-INF/glassfish-web.xml      |    11 +
 .../src/main/webapp/WEB-INF/web.xml                |    24 +
 .../i_jsf_1995_war_2/src/main/webapp/index.xhtml   |    14 +
 jsf-test/JAVASERVERFACES-2195/build.xml            |    87 +
 jsf-test/JAVASERVERFACES-2195/htmlunit/pom.xml     |   116 +
 .../com/sun/faces/systest/Issue2195TestCase.java   |   133 +
 jsf-test/JAVASERVERFACES-2195/i_jsf_2195/pom.xml   |   116 +
 .../src/main/java/i_jsf_2195/TestBean.java         |    45 +
 .../i_jsf_2195/src/main/webapp/WEB-INF/web.xml     |    35 +
 .../src/main/webapp/actionListener.xhtml           |    21 +
 .../i_jsf_2195/src/main/webapp/ajax.xhtml          |    24 +
 .../i_jsf_2195/src/main/webapp/event.xhtml         |    23 +
 .../i_jsf_2195/src/main/webapp/index.html          |    13 +
 .../resources/mycomp/cc_actionListener.xhtml       |    23 +
 .../src/main/webapp/resources/mycomp/cc_ajax.xhtml |    25 +
 .../main/webapp/resources/mycomp/cc_event.xhtml    |    22 +
 .../resources/mycomp/cc_valueChangeListener.xhtml  |    22 +
 .../src/main/webapp/resources/mycomp/cc_view.xhtml |    22 +
 .../src/main/webapp/valueChangeListener.xhtml      |    23 +
 jsf-test/JAVASERVERFACES-2197/build.xml            |    87 +
 jsf-test/JAVASERVERFACES-2197/htmlunit/pom.xml     |   116 +
 .../com/sun/faces/systest/Issue2197TestCase.java   |   270 +
 jsf-test/JAVASERVERFACES-2197/i_jsf_2197/pom.xml   |   117 +
 .../main/java/i_jsf_2197/TestActionListener.java   |    65 +
 .../src/main/java/i_jsf_2197/TestBean.java         |    29 +
 .../src/main/java/i_jsf_2197/TestValidator.java    |    64 +
 .../java/i_jsf_2197/TestValueChangeListener.java   |    65 +
 .../src/main/webapp/WEB-INF/faces-config.xml       |    53 +
 .../i_jsf_2197/src/main/webapp/WEB-INF/web.xml     |    73 +
 .../src/main/webapp/actionListener.xhtml           |    60 +
 .../src/main/webapp/convertDateTime.xhtml          |    59 +
 .../i_jsf_2197/src/main/webapp/convertNumber.xhtml |    59 +
 .../i_jsf_2197/src/main/webapp/converter.xhtml     |    59 +
 .../i_jsf_2197/src/main/webapp/index.html          |    63 +
 .../src/main/webapp/resources/mycomp/button.xhtml  |    58 +
 .../main/webapp/resources/mycomp/register.xhtml    |    58 +
 .../main/webapp/setPropertyActionListener.xhtml    |    59 +
 .../src/main/webapp/validateDoubleRange.xhtml      |    59 +
 .../src/main/webapp/validateLength.xhtml           |    59 +
 .../src/main/webapp/validateLongRange.xhtml        |    59 +
 .../i_jsf_2197/src/main/webapp/validateRegex.xhtml |    61 +
 .../src/main/webapp/validateRequired.xhtml         |    59 +
 .../i_jsf_2197/src/main/webapp/validator.xhtml     |    61 +
 .../src/main/webapp/valueChangeListener.xhtml      |    62 +
 .../JAVASERVERFACES_SPEC_PUBLIC-1038/build.xml     |    84 +
 .../i_spec_1038_war/pom.xml                        |    65 +
 .../AnnotationDeclaredResourceResolver.java        |    67 +
 .../src/main/webapp/WEB-INF/beans.xml              |     0
 .../src/main/webapp/WEB-INF/web.xml                |    39 +
 .../src/main/webapp/i_spec_1038_war.xhtml          |    14 +
 .../JAVASERVERFACES_SPEC_PUBLIC-1082/build.xml     |   104 +
 .../i_spec_1082_htmlunit/pom.xml                   |    97 +
 .../Issue1082Html5DoctypeTestCase.java             |    73 +
 .../Issue1082HtmlDoctypeTestCase.java              |    73 +
 .../Issue1082TestCaseBase.java                     |    85 +
 .../i_spec_1082_war/pom.xml                        |    47 +
 .../sun/faces/test/i_spec_1082_war/UserBean.java   |    92 +
 .../src/main/webapp/WEB-INF/beans.xml              |     0
 .../src/main/webapp/WEB-INF/web.xml                |    39 +
 .../src/main/webapp/i_2353_using.xhtml             |    57 +
 .../i_spec_1082_xhtml_war/pom.xml                  |    47 +
 .../sun/faces/test/i_spec_1082_war/UserBean.java   |    92 +
 .../src/main/webapp/WEB-INF/beans.xml              |     0
 .../src/main/webapp/WEB-INF/faces-config.xml       |    56 +
 .../src/main/webapp/WEB-INF/web.xml                |    39 +
 .../src/main/webapp/i_2353_xhtml_using.xhtml       |    57 +
 jsf-test/JAVASERVERFACES_SPEC_PUBLIC-594/build.xml |    90 +
 .../i_spec_594_htmlunit/pom.xml                    |    97 +
 .../i_spec_594_htmlunit/IssueSpec594TestCase.java  |    77 +
 .../i_spec_594_war/pom.xml                         |    47 +
 .../sun/faces/test/i_spec_594_war/UserBean.java    |    92 +
 .../components/TagNameDerivedFromClassName.java    |    49 +
 .../components/TagNameExplicitlyDeclared.java      |    49 +
 .../src/main/webapp/WEB-INF/beans.xml              |     0
 .../i_spec_594_war/src/main/webapp/WEB-INF/web.xml |    39 +
 .../i_spec_594_war/src/main/webapp/main.xhtml      |    17 +
 jsf-test/JAVASERVERFACES_SPEC_PUBLIC-719/build.xml |    84 +
 .../i_spec_719_old_resource_resolver_war/pom.xml   |    47 +
 .../MyResourceResolver.java                        |    76 +
 .../Resource.java                                  |   183 +
 .../src/main/webapp/WEB-INF/beans.xml              |     0
 .../src/main/webapp/WEB-INF/web.xml                |    29 +
 .../webapp/i_spec_719_old_resource_resolver.xhtml  |    14 +
 jsf-test/JAVASERVERFACES_SPEC_PUBLIC-763/build.xml |   163 +
 .../i_spec_763_war/pom.xml                         |    66 +
 .../i_spec_763_war/FacesConfigActionListener.java  |    77 +
 .../FacesConfigApplicationFactory.java             |    92 +
 .../i_spec_763_war/FacesConfigELResolver.java      |   102 +
 .../FacesConfigNavigationHandler.java              |    76 +
 .../i_spec_763_war/FacesConfigPhaseListener.java   |    84 +
 .../i_spec_763_war/FacesConfigResourceHandler.java |    79 +
 .../i_spec_763_war/FacesConfigStateManager.java    |    74 +
 .../FacesConfigSystemEventListener.java            |    74 +
 .../i_spec_763_war/FacesConfigViewHandler.java     |    74 +
 .../regression/i_spec_763_war/NewApplication.java  |    70 +
 .../src/main/webapp/WEB-INF/beans.xml              |     0
 .../src/main/webapp/WEB-INF/faces-config.xml       |    33 +
 .../src/main/webapp/WEB-INF/glassfish-web.xml      |    10 +
 .../i_spec_763_war/src/main/webapp/WEB-INF/web.xml |    46 +
 .../src/main/webapp/i_spec_763_war.xhtml           |    22 +
 ...InvalidatingSessionDestroysConversationTest.war |   Bin 0 -> 2826637 bytes
 jsf-test/admingui/admingui/pom.xml                 |    97 +
 .../regression/admingui/AdminGuiTestCase.java      |   187 +
 jsf-test/admingui/admingui_test_war/pom.xml        |    51 +
 .../regression/admingui_test_awar/UserBean.java    |    89 +
 .../src/main/webapp/WEB-INF/web.xml                |    39 +
 .../admingui_test_war/src/main/webapp/main.xhtml   |    13 +
 jsf-test/admingui/build.xml                        |   106 +
 jsf-test/bugdb-12867406/build.xml                  |   164 +
 jsf-test/bugdb-12867406/custom-bean-scope.war      |   Bin 0 -> 16369 bytes
 jsf-test/bugdb-12867406/helloworld.war             |   Bin 0 -> 11695 bytes
 .../i_bugdb_12867406_htmlunit/pom.xml              |    97 +
 .../functional/webapp/jsf20/JSF20TestBase.java     |    14 +
 .../webapp/jsf20/JSFRenderingTestBase.java         |   523 +
 .../custombeanscope/CustomBeanScopeSuiteTest.java  |    22 +
 .../jsf20/custombeanscope/CustomBeanScopeTest.java |    66 +
 jsf-test/bugdb-13245471/build.xml                  |   112 +
 jsf-test/build.xml                                 |   136 +
 jsf-tools/.cvsignore                               |     3 +
 jsf-tools/COPYRIGHT                                |    42 +-
 jsf-tools/LICENSE.html                             |    94 +-
 ...tsHtmlBasicTaglib21.pre-maven-rename.properties |   141 +
 .../conf/FaceletsHtmlBasicTaglib21.properties      |   109 +-
 jsf-tools/conf/HtmlBasicTaglib12.properties        |   103 +-
 .../HtmlBasicTaglib21.pre-maven-rename.properties  |   139 +
 jsf-tools/conf/HtmlBasicTaglib21.properties        |   104 +-
 jsf-tools/doc/mockup/DEFAULT/CommandLink.html      |    42 +
 .../doc/mockup/DEFAULT/renderkit-summary.html      |    42 +
 jsf-tools/doc/mockup/allrenderers-frame.html       |    42 +
 jsf-tools/doc/mockup/index.html                    |    42 +
 jsf-tools/doc/mockup/stylesheet.css                |    36 +-
 jsf-tools/doc/standard-html-components.xsl         |    62 +-
 .../doc/standard-html-renderkit-specification.xsl  |    62 +-
 jsf-tools/pom.xml                                  |   135 +
 .../com/sun/faces/ant/AbstractGeneratorTask.java   |    36 +-
 .../com/sun/faces/ant/AttributeManagerGenTask.java |    28 +-
 .../java/com/sun/faces/ant/ComponentGenTask.java   |    36 +-
 .../java/com/sun/faces/ant/FaceletsTLDGenTask.java |    36 +-
 .../com/sun/faces/ant/RenderkitDocGenTask.java     |    36 +-
 .../main/java/com/sun/faces/ant/TaglibGenTask.java |    36 +-
 .../main/java/com/sun/faces/ant/ValidateTask.java  |    36 +-
 .../java/com/sun/faces/config/DigesterFactory.java |    49 +-
 .../sun/faces/config/beans/ApplicationBean.java    |    36 +-
 .../com/sun/faces/config/beans/AttributeBean.java  |    36 +-
 .../sun/faces/config/beans/AttributeHolder.java    |    36 +-
 .../com/sun/faces/config/beans/ComponentBean.java  |    36 +-
 .../com/sun/faces/config/beans/ConverterBean.java  |    36 +-
 .../sun/faces/config/beans/DescriptionBean.java    |    36 +-
 .../sun/faces/config/beans/DisplayNameBean.java    |    36 +-
 .../sun/faces/config/beans/FacesConfigBean.java    |    36 +-
 .../com/sun/faces/config/beans/FactoryBean.java    |    36 +-
 .../com/sun/faces/config/beans/FeatureBean.java    |    36 +-
 .../java/com/sun/faces/config/beans/IconBean.java  |    36 +-
 .../com/sun/faces/config/beans/LifecycleBean.java  |    36 +-
 .../sun/faces/config/beans/ListEntriesBean.java    |    36 +-
 .../sun/faces/config/beans/ListEntriesHolder.java  |    36 +-
 .../com/sun/faces/config/beans/ListEntryBean.java  |    36 +-
 .../sun/faces/config/beans/LocaleConfigBean.java   |    36 +-
 .../sun/faces/config/beans/ManagedBeanBean.java    |    36 +-
 .../faces/config/beans/ManagedPropertyBean.java    |    36 +-
 .../com/sun/faces/config/beans/MapEntriesBean.java |    36 +-
 .../sun/faces/config/beans/MapEntriesHolder.java   |    36 +-
 .../com/sun/faces/config/beans/MapEntryBean.java   |    36 +-
 .../sun/faces/config/beans/NavigationCaseBean.java |    36 +-
 .../sun/faces/config/beans/NavigationRuleBean.java |    36 +-
 .../sun/faces/config/beans/NullValueHolder.java    |    36 +-
 .../com/sun/faces/config/beans/PropertyBean.java   |    36 +-
 .../com/sun/faces/config/beans/PropertyHolder.java |    36 +-
 .../sun/faces/config/beans/ReferencedBeanBean.java |    36 +-
 .../com/sun/faces/config/beans/RenderKitBean.java  |    36 +-
 .../com/sun/faces/config/beans/RendererBean.java   |    36 +-
 .../sun/faces/config/beans/ResourceBundleBean.java |    36 +-
 .../com/sun/faces/config/beans/ValidatorBean.java  |    36 +-
 .../sun/faces/config/rules/ApplicationRule.java    |    36 +-
 .../com/sun/faces/config/rules/AttributeRule.java  |    36 +-
 .../com/sun/faces/config/rules/ComponentRule.java  |    36 +-
 .../com/sun/faces/config/rules/ConverterRule.java  |    36 +-
 .../sun/faces/config/rules/DescriptionRule.java    |    36 +-
 .../faces/config/rules/DescriptionTextRule.java    |    36 +-
 .../sun/faces/config/rules/DisplayNameRule.java    |    36 +-
 .../sun/faces/config/rules/FacesConfigRule.java    |    36 +-
 .../sun/faces/config/rules/FacesConfigRuleSet.java |    40 +-
 .../com/sun/faces/config/rules/FactoryRule.java    |    36 +-
 .../com/sun/faces/config/rules/FeatureRule.java    |    36 +-
 .../java/com/sun/faces/config/rules/IconRule.java  |    36 +-
 .../com/sun/faces/config/rules/LifecycleRule.java  |    36 +-
 .../sun/faces/config/rules/ListEntriesRule.java    |    36 +-
 .../sun/faces/config/rules/LocaleConfigRule.java   |    36 +-
 .../sun/faces/config/rules/ManagedBeanRule.java    |    36 +-
 .../faces/config/rules/ManagedPropertyRule.java    |    36 +-
 .../com/sun/faces/config/rules/MapEntriesRule.java |    36 +-
 .../com/sun/faces/config/rules/MapEntryRule.java   |    36 +-
 .../sun/faces/config/rules/NavigationCaseRule.java |    36 +-
 .../sun/faces/config/rules/NavigationRuleRule.java |    36 +-
 .../com/sun/faces/config/rules/NullValueRule.java  |    36 +-
 .../com/sun/faces/config/rules/PropertyRule.java   |    36 +-
 .../sun/faces/config/rules/ReferencedBeanRule.java |    36 +-
 .../com/sun/faces/config/rules/RenderKitRule.java  |    36 +-
 .../com/sun/faces/config/rules/RendererRule.java   |    36 +-
 .../sun/faces/config/rules/ResourceBundleRule.java |    36 +-
 .../com/sun/faces/config/rules/ValidatorRule.java  |    36 +-
 .../com/sun/faces/generate/AbstractGenerator.java  |    36 +-
 .../faces/generate/AttributeManagerGenerator.java  |    28 +-
 .../java/com/sun/faces/generate/Generator.java     |    36 +-
 .../java/com/sun/faces/generate/GeneratorUtil.java |    54 +-
 .../sun/faces/generate/HtmlComponentGenerator.java |    43 +-
 .../sun/faces/generate/HtmlTaglib12Generator.java  |    39 +-
 .../sun/faces/generate/HtmlTaglib21Generator.java  |    36 +-
 .../com/sun/faces/generate/JspTLD12Generator.java  |    36 +-
 .../com/sun/faces/generate/JspTLD21Generator.java  |    42 +-
 .../com/sun/faces/generate/JspTLDGenerator.java    |    36 +-
 .../generate/JspToFaceletsTLD21Generator.java      |    48 +-
 .../com/sun/faces/generate/PropertyManager.java    |    78 +-
 .../generate/RenderKitSpecificationGenerator.java  |    65 +-
 .../java/com/sun/faces/tools/GlassfishUpdater.java |    36 +-
 .../com/sun/faces/tools/StripClassesForApiJar.java |   292 +
 .../main/java/com/sun/faces/util/ToolsUtil.java    |    37 +-
 .../src/main/resources/JsfToolsMessages.properties |    61 +-
 .../main/resources/JsfToolsMessages_de.properties  |    61 +-
 .../main/resources/JsfToolsMessages_es.properties  |    61 +-
 .../main/resources/JsfToolsMessages_fr.properties  |    79 +-
 .../com/sun/faces/ToolsLogStrings.properties       |    59 +-
 .../generate/facesdoc/renderkit-summary.bottom     |     2 +-
 .../faces/generate/facesdoc/renderkit-summary.top  |     2 +-
 .../com/sun/faces/generate/facesdoc/stylesheet.css |   117 +-
 jsf-tools/template-src/MessageFactory.java         |    56 +-
 jsf-tools/template-src/SharedUtils.java            |   122 +
 jsf-tools/template-src/StateHolderSaver.java       |    86 +-
 jsf-tools/template-src/TypedCollections.java       |    40 +-
 legal/jsf-cddl/BINARY_LICENSE.txt                  |    30 +-
 legal/jsf-cddl/CDDLGPLHeader.txt                   |    70 +-
 legal/jsf-cddl/COPYRIGHT                           |   117 +-
 legal/jsf-cddl/LICENSE.txt                         |   300 +-
 nbproject/.cvsignore                               |     1 +
 nbproject/project.xml                              |    74 +-
 password.txt                                       |     2 +-
 test/README-Weblogic.txt                           |   166 +
 test/README.txt                                    |   199 +
 test/agnostic/ajax-namespace/nbactions.xml         |   166 +
 test/agnostic/ajax-namespace/pom.xml               |    62 +
 .../ajax_namespace/ApplicationFactoryImpl.java     |    77 +
 .../agnostic/ajax_namespace/ApplicationImpl.java   |    76 +
 .../ajax_namespace/NamingContainerViewRoot.java    |    59 +
 .../test/agnostic/ajax_namespace/UserBean.java     |    94 +
 .../src/main/webapp/WEB-INF/faces-config.xml       |     7 +
 .../src/main/webapp/WEB-INF/glassfish-web.xml      |    11 +
 .../ajax-namespace/src/main/webapp/WEB-INF/web.xml |    73 +
 .../ajax-namespace/src/main/webapp/index.xhtml     |    74 +
 .../test/agnostic/ajax_namespace/Issue3031IT.java  |   135 +
 test/agnostic/application/basic/nbactions.xml      |    27 +
 test/agnostic/application/basic/pom.xml            |    71 +
 .../application/basic/ApplicationConfigBean.java   |   464 +
 .../agnostic/application/basic/TestComponent.java  |    56 +
 .../agnostic/application/basic/TestConverter.java  |    50 +
 .../basic/src/main/webapp/WEB-INF/web.xml          |    76 +
 .../basic/src/main/webapp/appConfig.jsp            |    56 +
 .../application/basic/src/main/webapp/error.jsp    |    56 +
 .../application/basic/ApplicationImplConfigIT.java |   128 +
 test/agnostic/application/listener/nbactions.xml   |    69 +
 test/agnostic/application/listener/pom.xml         |    63 +
 .../listener/NewCustomerFormHandler.java           |   139 +
 .../agnostic/application/listener/UserBean.java    |    56 +
 .../src/main/webapp/WEB-INF/faces-navigation.xml   |   277 +
 .../src/main/webapp/WEB-INF/glassfish-web.xml      |    11 +
 .../listener/src/main/webapp/WEB-INF/web.xml       |    38 +
 .../application/listener/src/main/webapp/error.jsp |    56 +
 .../application/listener/src/main/webapp/home.jsp  |    52 +
 .../application/listener/src/main/webapp/login.jsp |    60 +
 .../listener/src/main/webapp/must-login-first.jsp  |    52 +
 .../application/listener/ActionListenerImplIT.java |   104 +
 test/agnostic/application/localeConfig/pom.xml     |    71 +
 .../localeConfig/ApplicationConfigBean.java        |   115 +
 .../src/main/webapp/WEB-INF/faces-config.xml       |    58 +
 .../src/main/webapp/WEB-INF/glassfish-web.xml      |    11 +
 .../src/main/webapp/WEB-INF/locale-config.xml      |    58 +
 .../src/main/webapp/WEB-INF/locale-config2.xml     |    61 +
 .../localeConfig/src/main/webapp/WEB-INF/web.xml   |    80 +
 .../localeConfig/src/main/webapp/error.jsp         |    56 +
 .../localeConfig/src/main/webapp/locale-config.xml |    59 +
 .../src/main/webapp/localeConfigPositive.xhtml     |    66 +
 .../application/localeConfig/LocaleConfigIT.java   |    86 +
 test/agnostic/application/navigation/nbactions.xml |    28 +
 test/agnostic/application/navigation/pom.xml       |    71 +
 .../agnostic/application/navigation/NavBean.java   |    58 +
 .../application/navigation/NavigationBean.java     |   460 +
 .../navigation/OutcomeParameterBean.java           |   129 +
 .../src/main/webapp/WEB-INF/faces-config.xml       |   112 +
 .../src/main/webapp/WEB-INF/faces-navigation.xml   |   211 +
 .../src/main/webapp/WEB-INF/glassfish-web.xml      |    11 +
 .../src/main/webapp/WEB-INF/navigation-cases.xml   |   298 +
 .../navigation/src/main/webapp/WEB-INF/web.xml     |    38 +
 .../navigation/src/main/webapp/error.jsp           |    56 +
 .../navigation/src/main/webapp/hbuttonXSS1.xhtml   |    13 +
 .../navigation/src/main/webapp/hbuttonXSS2.xhtml   |    16 +
 .../navigation/src/main/webapp/navHandler.xhtml    |    66 +
 .../src/main/webapp/outcomeParameterForm.xhtml     |    60 +
 .../src/main/webapp/outcomeParameterResults.xhtml  |    26 +
 .../src/main/webapp/redirectParams.xhtml           |    66 +
 .../navigation/src/main/webapp/separateRule.xhtml  |    66 +
 .../src/main/webapp/similarFromViewId.xhtml        |    66 +
 .../navigation/src/main/webapp/test.xhtml          |    54 +
 .../src/main/webapp/wrappedNavHandler.xhtml        |    66 +
 .../application/navigation/Issue3023IT.java        |   109 +
 .../navigation/NavigationHandlerIT.java            |   110 +
 test/agnostic/application/navigationJSF2/pom.xml   |    71 +
 .../application/navigationJSF2/NavigationBean.java |   268 +
 .../src/main/webapp/WEB-INF/faces-config.xml       |   112 +
 .../src/main/webapp/WEB-INF/faces-navigation-2.xml |    93 +
 .../src/main/webapp/WEB-INF/navigation-cases-2.xml |    98 +
 .../navigationJSF2/src/main/webapp/WEB-INF/web.xml |    38 +
 .../navigationJSF2/src/main/webapp/error.jsp       |    56 +
 .../src/main/webapp/navHandler.xhtml               |    66 +
 .../navigationJSF2/src/main/webapp/test.xhtml      |    54 +
 .../navigationJSF2/NavigationHandlerJSF2IT.java    |    89 +
 test/agnostic/application/pom.xml                  |    64 +
 test/agnostic/application/runtimeConfig/pom.xml    |    71 +
 .../runtimeConfig/ActionListenerTestImpl.java      |    48 +
 .../runtimeConfig/ApplicationConfigBean.java       |   125 +
 .../runtimeConfig/NavigationHandlerTestImpl.java   |    47 +
 .../runtimeConfig/PropertyResolverTestImpl.java    |    61 +
 .../runtimeConfig/TestActionListener.java          |    50 +
 .../runtimeConfig/TestNavigationHandler.java       |    50 +
 .../runtimeConfig/TestPropertyResolver.java        |   105 +
 .../runtimeConfig/TestVariableResolver.java        |    69 +
 .../runtimeConfig/VariableResolverTestImpl.java    |    50 +
 .../runtimeConfig/ViewHandlerTestImpl.java         |    47 +
 .../src/main/webapp/WEB-INF/faces-config.xml       |    53 +
 .../runtimeConfig/src/main/webapp/WEB-INF/web.xml  |    80 +
 .../runtimeConfig/src/main/webapp/error.jsp        |    56 +
 .../src/main/webapp/runtime-components.xml         |    62 +
 .../src/main/webapp/updateRuntimeComponents.xhtml  |    66 +
 .../application/runtimeConfig/RuntimeConfigIT.java |    87 +
 test/agnostic/config/basic/nbactions.xml           |   163 +
 test/agnostic/config/basic/pom.xml                 |    71 +
 .../test/agnostic/config/basic/ConfigFileBean.java |   577 +
 .../test/agnostic/config/basic/TestComponent.java  |    56 +
 .../test/agnostic/config/basic/TestConverter.java  |    52 +
 .../test/agnostic/config/basic/TestRenderer.java   |    52 +
 .../test/agnostic/config/basic/TestValidator.java  |    52 +
 .../main/webapp/WEB-INF/config-lists-and-maps.xml  |   158 +
 .../basic/src/main/webapp/WEB-INF/faces-config.xml |    74 +
 .../src/main/webapp/WEB-INF/glassfish-web.xml      |    11 +
 .../config/basic/src/main/webapp/WEB-INF/web.xml   |    80 +
 .../config/basic/src/main/webapp/basic.xhtml       |    66 +
 .../config/basic/src/main/webapp/boolean.xhtml     |    66 +
 .../config/basic/src/main/webapp/default.xhtml     |    66 +
 .../config/basic/src/main/webapp/error.jsp         |    56 +
 .../test/agnostic/config/basic/ConfigFileIT.java   |    96 +
 test/agnostic/config/configFile/pom.xml            |    71 +
 .../agnostic/config/configFile/ConfigFileBean.java |   193 +
 .../agnostic/config/configFile/NonManagedBean.java |    47 +
 .../agnostic/config/configFile/SimpleBean.java     |   106 +
 .../main/webapp/WEB-INF/config-lists-and-maps.xml  |   168 +
 .../configFile/src/main/webapp/WEB-INF/web.xml     |    80 +
 .../config/configFile/src/main/webapp/error.jsp    |    56 +
 .../configFile/src/main/webapp/map1701.xhtml       |    66 +
 .../src/main/webapp/mapAndListPositive.xhtml       |    66 +
 .../configFile/src/main/webapp/navHandler.xhtml    |    66 +
 .../agnostic/config/configFile/ConfigFileIT.java   |    92 +
 test/agnostic/config/embedConfig/nbactions.xml     |   163 +
 test/agnostic/config/embedConfig/pom.xml           |    71 +
 .../config/embedConfig/ConfigFileBean.java         |   538 +
 .../agnostic/config/embedConfig/TestComponent.java |    56 +
 .../agnostic/config/embedConfig/TestConverter.java |    52 +
 .../agnostic/config/embedConfig/TestRenderer.java  |    52 +
 .../agnostic/config/embedConfig/TestValidator.java |    52 +
 .../src/main/webapp/WEB-INF/embed-config.xml       |    77 +
 .../src/main/webapp/WEB-INF/extra-config.xml       |    77 +
 .../src/main/webapp/WEB-INF/faces-config.xml       |    74 +
 .../src/main/webapp/WEB-INF/glassfish-web.xml      |    11 +
 .../embedConfig/src/main/webapp/WEB-INF/web.xml    |    80 +
 .../embedConfig/src/main/webapp/embedConfig.xhtml  |    66 +
 .../config/embedConfig/src/main/webapp/error.jsp   |    56 +
 .../agnostic/config/embedConfig/ConfigFileIT.java  |    84 +
 test/agnostic/config/extraConfig/nbactions.xml     |   163 +
 test/agnostic/config/extraConfig/pom.xml           |    71 +
 .../config/extraConfig/ConfigFileBean.java         |   538 +
 .../agnostic/config/extraConfig/TestComponent.java |    56 +
 .../agnostic/config/extraConfig/TestConverter.java |    52 +
 .../agnostic/config/extraConfig/TestRenderer.java  |    52 +
 .../agnostic/config/extraConfig/TestValidator.java |    52 +
 .../WEB-INF/classes/META-INF/faces-config.xml      |    72 +
 .../src/main/webapp/WEB-INF/extra-config.xml       |    77 +
 .../src/main/webapp/WEB-INF/faces-config.xml       |    74 +
 .../src/main/webapp/WEB-INF/glassfish-web.xml      |    11 +
 .../extraConfig/src/main/webapp/WEB-INF/web.xml    |    80 +
 .../config/extraConfig/src/main/webapp/error.jsp   |    56 +
 .../extraConfig/src/main/webapp/extraConfig.xhtml  |    66 +
 .../agnostic/config/extraConfig/ConfigFileIT.java  |    84 +
 test/agnostic/config/lowerCase/pom.xml             |    62 +
 .../src/main/webapp/WEB-INF/glassfish-web.xml      |    11 +
 .../lowerCase/src/main/webapp/WEB-INF/web.xml      |    77 +
 .../config/lowerCase/src/main/webapp/index.xhtml   |    56 +
 .../agnostic/config/lowerCase/Issue2067IT.java     |    74 +
 test/agnostic/config/pom.xml                       |    63 +
 .../context/initFacesContext/nbactions.xml         |   163 +
 test/agnostic/context/initFacesContext/pom.xml     |    76 +
 .../agnostic/context/ApplicationScopedBean.java    |    96 +
 .../src/main/webapp/WEB-INF/beans.xml              |     9 +
 .../src/main/webapp/WEB-INF/glassfish-web.xml      |    11 +
 .../src/main/webapp/WEB-INF/web.xml                |    73 +
 .../initFacesContext/src/main/webapp/index.xhtml   |    53 +
 .../test/agnostic/context/AutomatedTestIT.java     |   103 +
 test/agnostic/context/pom.xml                      |    57 +
 test/agnostic/context/regular/pom.xml              |    71 +
 .../agnostic/context/regular/AccessorBean.java     |   192 +
 .../agnostic/context/regular/AttributesBean.java   |    64 +
 .../agnostic/context/regular/ConstructorBean.java  |   119 +
 .../test/agnostic/context/regular/ElBean.java      |   100 +
 .../context/regular/ExternalContextBean.java       |   203 +
 .../test/agnostic/context/regular/MessageBean.java |   314 +
 .../agnostic/context/regular/PostBackBean.java     |   100 +
 .../test/agnostic/context/regular/ReleaseBean.java |   130 +
 .../test/agnostic/context/regular/RenderBean.java  |   154 +
 .../src/main/webapp/WEB-INF/faces-config.xml       |     7 +
 .../src/main/webapp/WEB-INF/glassfish-web.xml      |    11 +
 .../regular/src/main/webapp/WEB-INF/web.xml        |    74 +
 .../regular/src/main/webapp/accessor1.xhtml        |    12 +
 .../regular/src/main/webapp/accessor2.xhtml        |    12 +
 .../regular/src/main/webapp/accessor3.xhtml        |    12 +
 .../regular/src/main/webapp/attributes1.xhtml      |    12 +
 .../regular/src/main/webapp/constructor1.xhtml     |    13 +
 .../regular/src/main/webapp/constructor2.xhtml     |    13 +
 .../regular/src/main/webapp/constructor3.xhtml     |    13 +
 .../regular/src/main/webapp/constructor4.xhtml     |    13 +
 .../context/regular/src/main/webapp/el1.xhtml      |    12 +
 .../context/regular/src/main/webapp/error.jsp      |    56 +
 .../regular/src/main/webapp/issue2540.xhtml        |    53 +
 .../regular/src/main/webapp/issue2541.xhtml        |    53 +
 .../regular/src/main/webapp/issue2543.xhtml        |    53 +
 .../regular/src/main/webapp/issue2545.xhtml        |    53 +
 .../regular/src/main/webapp/issue2546.xhtml        |    53 +
 .../regular/src/main/webapp/issue2549.xhtml        |    53 +
 .../regular/src/main/webapp/issue2550.xhtml        |    55 +
 .../context/regular/src/main/webapp/message1.xhtml |    11 +
 .../context/regular/src/main/webapp/message2.xhtml |    11 +
 .../context/regular/src/main/webapp/message3.xhtml |    11 +
 .../context/regular/src/main/webapp/message4.xhtml |    11 +
 .../context/regular/src/main/webapp/message5.xhtml |    11 +
 .../context/regular/src/main/webapp/message6.xhtml |    11 +
 .../context/regular/src/main/webapp/message7.xhtml |    11 +
 .../context/regular/src/main/webapp/message8.xhtml |    11 +
 .../regular/src/main/webapp/postback1.xhtml        |    11 +
 .../regular/src/main/webapp/postback2.xhtml        |    14 +
 .../context/regular/src/main/webapp/release1.xhtml |    12 +
 .../context/regular/src/main/webapp/release2.xhtml |    12 +
 .../context/regular/src/main/webapp/render1.xhtml  |    11 +
 .../context/regular/src/main/webapp/render2.xhtml  |    11 +
 .../context/regular/src/main/webapp/render3.xhtml  |    11 +
 .../test/agnostic/context/regular/AccessorIT.java  |    84 +
 .../agnostic/context/regular/ConstructorIT.java    |    89 +
 .../faces/test/agnostic/context/regular/ElIT.java  |    74 +
 .../context/regular/ExternalContextIT.java         |   113 +
 .../test/agnostic/context/regular/MessageIT.java   |   109 +
 .../test/agnostic/context/regular/PostBackIT.java  |    84 +
 .../test/agnostic/context/regular/ReleaseIT.java   |    74 +
 .../test/agnostic/context/regular/RenderIT.java    |    84 +
 test/agnostic/converter/basic/nbactions.xml        |    74 +
 test/agnostic/converter/basic/pom.xml              |    63 +
 .../src/main/java/com/sun/faces/test/Bean.java     |    92 +
 .../src/main/java/com/sun/faces/test/Foo.java      |    85 +
 .../java/com/sun/faces/test/FooConverterBase.java  |    75 +
 .../com/sun/faces/test/FooConverterByClass.java    |    48 +
 .../java/com/sun/faces/test/FooConverterById.java  |    49 +
 .../agnostic/converter/basic/Issue1660Bean.java    |    87 +
 .../converter/basic/Issue1660ComplexEnum.java      |    48 +
 .../converter/basic/Issue1660SimpleEnum.java       |    46 +
 .../basic/src/main/webapp/Issue2384Using.xhtml     |    73 +
 .../webapp/Issue2384UsingWithoutQueryParam.xhtml   |    61 +
 .../src/main/webapp/WEB-INF/glassfish-web.xml      |    11 +
 .../basic/src/main/webapp/WEB-INF/web.xml          |    32 +
 .../converter/basic/src/main/webapp/index.xhtml    |    55 +
 .../basic/src/main/webapp/issue1660.xhtml          |    23 +
 .../test/agnostic/converter/basic/Issue1660IT.java |    75 +
 .../test/agnostic/converter/basic/Issue2384IT.java |   123 +
 .../converter/converterThrowsNPE/nbactions.xml     |   124 +
 test/agnostic/converter/converterThrowsNPE/pom.xml |    61 +
 .../converterThrowsNPE/ThrowNPEConverter.java      |    65 +
 .../src/main/webapp/WEB-INF/glassfish-web.xml      |    11 +
 .../src/main/webapp/WEB-INF/web.xml                |    69 +
 .../converterThrowsNPE/src/main/webapp/index.xhtml |    85 +
 .../VerifyExceptionThrownIT.java                   |    93 +
 test/agnostic/converter/pom.xml                    |    60 +
 test/agnostic/externalContext/basic/nbactions.xml  |   101 +
 test/agnostic/externalContext/basic/pom.xml        |    63 +
 .../test/agnostic/externalContext/basic/Bean.java  |    86 +
 .../basic/src/main/webapp/WEB-INF/web.xml          |    70 +
 .../basic/src/main/webapp/bookmarkable01.xhtml     |    60 +
 .../basic/src/main/webapp/index.xhtml              |    59 +
 .../basic/src/main/webapp/issue2440.xhtml          |    69 +
 .../agnostic/externalContext/basic/CookieIT.java   |   106 +
 .../externalContext/basic/Issue2440IT.java         |   123 +
 test/agnostic/externalContext/pom.xml              |    59 +
 test/agnostic/facelets/cc/nbactions.xml            |    29 +
 test/agnostic/facelets/cc/pom.xml                  |    71 +
 .../facelets/composite/ActionListener1Bean.java    |   108 +
 .../facelets/composite/AttributeELInput.java       |    22 +
 .../facelets/composite/AttributeELInputBean.java   |    19 +
 .../facelets/composite/CompositeBehavior.java      |    66 +
 .../facelets/composite/ConstructorComponent.java   |    60 +
 .../composite/InputTextAjaxListener1Bean.java      |    63 +
 .../composite/InputTextValidator1Bean.java         |    67 +
 .../test/agnostic/facelets/composite/Line.java     |    81 +
 .../agnostic/facelets/composite/LineConverter.java |    59 +
 .../agnostic/facelets/composite/LineStore.java     |    69 +
 .../test/agnostic/facelets/composite/Order.java    |    91 +
 .../agnostic/facelets/composite/OrderPage.java     |    74 +
 .../facelets/composite/OutputTextInlineBean.java   |    18 +
 .../test/agnostic/facelets/composite/TestBean.java |    79 +
 .../test/agnostic/facelets/composite/UserBean.java |    36 +
 .../composite/ValidatorDoubleValidator.java        |    58 +
 .../facelets/composite/ValidatorExceptionBean.java |    66 +
 .../webapp/WEB-INF/composite-behavior.taglib.xml   |    56 +
 .../cc/src/main/webapp/WEB-INF/glassfish-web.xml   |    52 +
 .../WEB-INF/sourceValidationFails.taglib.xml       |    15 +
 .../WEB-INF/templates/validatorException.xhtml     |    18 +
 .../cc/src/main/webapp/WEB-INF/test.taglib.xml     |    14 +
 .../facelets/cc/src/main/webapp/WEB-INF/web.xml    |    79 +
 .../cc/src/main/webapp/WEB-INF/weblogic.xml        |     7 +
 .../cc/src/main/webapp/actionListener1.xhtml       |    61 +
 .../webapp/attributeBooleanPrimitiveFalse.xhtml    |    55 +
 .../webapp/attributeBooleanPrimitiveTrue.xhtml     |    55 +
 .../attributeBooleanPrimitiveWithDefault.xhtml     |    55 +
 .../cc/src/main/webapp/attributeType.xhtml         |    25 +
 .../cc/src/main/webapp/attributeUsingEL.xhtml      |    18 +
 .../cc/src/main/webapp/ccAndInclude-include.xhtml  |    18 +
 .../facelets/cc/src/main/webapp/ccAndInclude.xhtml |    12 +
 .../facelets/cc/src/main/webapp/ccInJar.xhtml      |    16 +
 .../facelets/cc/src/main/webapp/ccInJar2.xhtml     |    14 +
 .../cc/src/main/webapp/clientBehavior.xhtml        |    68 +
 .../facelets/cc/src/main/webapp/composite.xhtml    |    30 +
 .../facelets/cc/src/main/webapp/constructor.xhtml  |    16 +
 .../facelets/cc/src/main/webapp/decorate1.xhtml    |    18 +
 .../facelets/cc/src/main/webapp/decorate1c.xhtml   |    18 +
 .../facelets/cc/src/main/webapp/index.xhtml        |    14 +
 .../src/main/webapp/inputTextAjaxListener1.xhtml   |    29 +
 .../cc/src/main/webapp/inputTextValidator1.xhtml   |    18 +
 .../cc/src/main/webapp/outputTextInline.xhtml      |    26 +
 .../facelets/cc/src/main/webapp/renderFacet1.xhtml |    55 +
 .../resources/actionListener/actionListener1.xhtml |    66 +
 .../actionListener/actionListener1b.xhtml          |    59 +
 .../webapp/resources/attributeType/listBox.xhtml   |    18 +
 .../resources/attributeUsingEL/myInput1.xhtml      |    21 +
 .../main/webapp/resources/attributes/boolean.xhtml |    57 +
 .../resources/attributes/booleanWithDefault.xhtml  |    57 +
 .../ccAndInclude/external-composite.xhtml          |    20 +
 .../ccAndInclude/internal-composite.xhtml          |    38 +
 .../resources/clientbehavior/compositeTest.xhtml   |    73 +
 .../resources/clientbehavior/compositeTestEL.xhtml |    73 +
 .../main/webapp/resources/components/bind.xhtml    |    10 +
 .../webapp/resources/constructor/component.xhtml   |    12 +
 .../main/webapp/resources/decorate/decorate1.xhtml |    20 +
 .../webapp/resources/decorate/decorate1b.xhtml     |    18 +
 .../inputTextAjaxListener1.xhtml                   |    22 +
 .../inputTextAjaxListener1b.xhtml                  |    24 +
 .../inputTextValidator1/inputTextValidator1.xhtml  |    21 +
 .../inputTextValidator1/inputTextValidator1b.xhtml |    20 +
 .../resources/outputText/outputTextInline1.xhtml   |    26 +
 .../resources/outputText/outputTextInline1b.xhtml  |    21 +
 .../webapp/resources/renderFacet/renderFacet.xhtml |    18 +
 .../src/main/webapp/resources/simple/simple.xhtml  |    18 +
 .../sourceValidationFails.xhtml                    |    15 +
 .../validatorDouble/validatorDouble.xhtml          |    19 +
 .../resources/validatorException/inputText.xhtml   |    41 +
 .../facelets/cc/src/main/webapp/simple.xhtml       |    17 +
 .../cc/src/main/webapp/sourceValidationFails.xhtml |    14 +
 .../src/main/webapp/templates/defaultLayout.xhtml  |    12 +
 .../cc/src/main/webapp/templates/defaultPage.xhtml |    16 +
 .../cc/src/main/webapp/validatorDouble.xhtml       |    31 +
 .../cc/src/main/webapp/validatorException.xhtml    |    23 +
 .../agnostic/facelets/composite/Issue1856IT.java   |    72 +
 .../agnostic/facelets/composite/Issue2033IT.java   |    70 +
 .../agnostic/facelets/composite/Issue2047IT.java   |    75 +
 .../agnostic/facelets/composite/Issue2161IT.java   |    71 +
 .../agnostic/facelets/composite/Issue2232IT.java   |    71 +
 .../agnostic/facelets/composite/Issue2665IT.java   |    75 +
 .../agnostic/facelets/composite/Issue2700IT.java   |    87 +
 .../agnostic/facelets/composite/Issue2738IT.java   |    70 +
 .../agnostic/facelets/composite/Issue2767IT.java   |    68 +
 .../agnostic/facelets/composite/Issue2846IT.java   |    82 +
 .../agnostic/facelets/composite/Issue2925IT.java   |   116 +
 .../agnostic/facelets/composite/Issue3026IT.java   |    72 +
 .../agnostic/facelets/composite/Issue3077IT.java   |    85 +
 .../agnostic/facelets/composite/Issue3085IT.java   |    75 +
 .../agnostic/facelets/composite/Issue3088IT.java   |    72 +
 .../agnostic/facelets/composite/Issue3094IT.java   |    73 +
 .../agnostic/facelets/composite/Issue3095IT.java   |    74 +
 .../agnostic/facelets/composite/Issue3100IT.java   |    76 +
 .../agnostic/facelets/composite/Spec901IT.java     |    78 +
 test/agnostic/facelets/ccInJar/pom.xml             |    59 +
 .../src/main/resources/META-INF/ccInJar.taglib.xml |    12 +
 .../META-INF/resources/ccInJar2/ccInJar2.xhtml     |    23 +
 .../src/main/resources/facelet/tag/layout.xhtml    |    16 +
 .../resources/facelet/tag/template/layoutAll.xhtml |    27 +
 .../facelet/tag/template/layoutContentBody.xhtml   |    12 +
 .../facelet/tag/template/layoutContentFooter.xhtml |    12 +
 .../facelet/tag/template/layoutContentHead.xhtml   |    12 +
 .../facelet/tag/template/layoutContentLeft.xhtml   |    12 +
 .../facelet/tag/template/layoutHead.xhtml          |    17 +
 .../resources/facelet/tag/template/webapp.xhtml    |    17 +
 test/agnostic/facelets/findChild/nbactions.xml     |    40 +
 test/agnostic/facelets/findChild/pom.xml           |    61 +
 .../service_requests/managedBeans/IndexMB.java     |    26 +
 .../findChild/src/main/java/test/PageAjaxTest.java |    49 +
 .../src/main/java/test/TimerPhaseListener.java     |    72 +
 .../findChild/src/main/webapp/AjaxTest.xhtml       | 13366 +++++++++++++++++++
 .../src/main/webapp/WEB-INF/faces-config.xml       |    19 +
 .../src/main/webapp/WEB-INF/glassfish-web.xml      |    11 +
 .../findChild/src/main/webapp/WEB-INF/web.xml      |   102 +
 .../facelets/findChild/src/main/webapp/index.xhtml |    16 +
 .../findChild/src/main/webapp/jsfInfo.xhtml        |    27 +
 .../performanceNoneRenderedObjects.xhtml           |    20 +
 ...rformanceNoneRenderedObjectsMultiplikator.xhtml |   102 +
 .../main/webapp/performance/performanceTest.xhtml  |   131 +
 .../findChild/src/main/webapp/simplestPage.xhtml   |    11 +
 .../test/agnostic/facelets/AutomatedTestIT.java    |   115 +
 test/agnostic/facelets/pom.xml                     |    63 +
 .../facelets/processing/escaping01/nbactions.xml   |    20 +
 .../facelets/processing/escaping01/pom.xml         |    63 +
 .../src/main/webapp/WEB-INF/faces-config.xml       |    14 +
 .../src/main/webapp/WEB-INF/glassfish-web.xml      |    11 +
 .../escaping01/src/main/webapp/WEB-INF/web.xml     |    75 +
 .../escaping01/src/main/webapp/index.xhtml         |    77 +
 .../processing/escaping01/Issue3150IT.java         |    89 +
 test/agnostic/facelets/processing/html5/pom.xml    |    63 +
 .../test/agnostic/facelets/processing/Person.java  |    86 +
 .../agnostic/facelets/processing/PersonPage.java   |    79 +
 .../facelets/processing/PersonRepository.java      |    71 +
 .../html5/src/main/webapp/WEB-INF/faces-config.xml |    14 +
 .../src/main/webapp/WEB-INF/glassfish-web.xml      |    11 +
 .../html5/src/main/webapp/WEB-INF/web.xml          |    75 +
 .../html5/src/main/webapp/editPerson.xhtml         |    39 +
 .../html5/src/main/webapp/personDetails.xhtml      |    37 +
 .../html5/src/main/webapp/personList.xhtml         |    25 +
 .../src/main/webapp/resources/jquery-1.10.2.min.js |     6 +
 .../html5/src/main/webapp/resources/script.js      |    11 +
 .../agnostic/facelets/processing/Issue2981IT.java  |    76 +
 test/agnostic/facelets/processing/pom.xml          |    58 +
 .../facelets/viewAction/newsReader/nbactions.xml   |   166 +
 .../facelets/viewAction/newsReader/pom.xml         |    63 +
 .../facelets/viewAction/newsReader/NewsIndex.java  |    78 +
 .../facelets/viewAction/newsReader/NewsReader.java |   119 +
 .../facelets/viewAction/newsReader/NewsStory.java  |    68 +
 .../src/main/webapp/WEB-INF/faces-config.xml       |    84 +
 .../src/main/webapp/WEB-INF/glassfish-web.xml      |    11 +
 .../newsReader/src/main/webapp/WEB-INF/web.xml     |    40 +
 .../newsReader/src/main/webapp/events.xhtml        |    44 +
 .../newsReader/src/main/webapp/page01.xhtml        |    77 +
 .../newsReader/src/main/webapp/page02.xhtml        |   110 +
 .../newsReader/src/main/webapp/page03.xhtml        |    67 +
 .../newsReader/src/main/webapp/template.xhtml      |    59 +
 .../facelets/viewAction/newsReader/Spec758IT.java  |   315 +
 test/agnostic/facelets/viewAction/pom.xml          |    59 +
 test/agnostic/flash/basic/nbactions.xml            |    17 +
 test/agnostic/flash/basic/pom.xml                  |    62 +
 .../test/agnostic/flash/basic/AddMessageBean.java  |    56 +
 .../agnostic/flash/basic/FlashDropCookieBean.java  |    77 +
 .../agnostic/flash/basic/FlashMessagesBean.java    |    84 +
 .../faces/test/agnostic/flash/issue2973/Bean.java  |    77 +
 .../flash/basic/src/main/webapp/WEB-INF/beans.xml  |     9 +
 .../src/main/webapp/WEB-INF/glassfish-web.xml      |    11 +
 .../flash/basic/src/main/webapp/WEB-INF/web.xml    |    69 +
 .../flash/basic/src/main/webapp/flash01.xhtml      |    81 +
 .../flash/basic/src/main/webapp/flash02.xhtml      |    68 +
 .../basic/src/main/webapp/flashDropCookie.xhtml    |    59 +
 .../basic/src/main/webapp/flashDropCookie2.xhtml   |    55 +
 .../basic/src/main/webapp/flashDropCookie3.xhtml   |    54 +
 .../src/main/webapp/flashKeepMessages01.xhtml      |    59 +
 .../src/main/webapp/flashKeepMessages02.xhtml      |    56 +
 .../basic/src/main/webapp/issue2973/page1.xhtml    |    20 +
 .../basic/src/main/webapp/issue2973/page2.xhtml    |    12 +
 .../flash/basic/src/main/webapp/keepMessages.xhtml |    71 +
 .../flash/basic/src/main/webapp/messagePage.xhtml  |    63 +
 .../test/agnostic/flash/basic/FlashMessagesIT.java |    90 +
 .../agnostic/flash/basic/FlashViewParamIT.java     |   112 +
 .../test/agnostic/flash/basic/Issue2862IT.java     |    93 +
 .../test/agnostic/flash/basic/Issue2973IT.java     |   114 +
 .../test/agnostic/flash/basic/KeepMessagesIT.java  |   122 +
 test/agnostic/flash/chunkRedirect/nbactions.xml    |    17 +
 test/agnostic/flash/chunkRedirect/pom.xml          |    63 +
 .../flash/chunkRedirect/Issue2136Bean.java         |    60 +
 .../flash/chunkRedirect/Issue2332Bean.java         |    23 +
 .../src/main/webapp/WEB-INF/glassfish-web.xml      |    11 +
 .../chunkRedirect/src/main/webapp/WEB-INF/web.xml  |    33 +
 .../chunkRedirect/src/main/webapp/index.xhtml      |   146 +
 .../src/main/webapp/issue2136/issue2136.xhtml      |    16 +
 .../src/main/webapp/issue2136b/issue2136b.xhtml    |    15 +
 .../chunkRedirect/src/main/webapp/page2.xhtml      |   370 +
 .../agnostic/flash/chunkRedirect/Issue2136IT.java  |    79 +
 .../agnostic/flash/chunkRedirect/Issue2332IT.java  |    90 +
 test/agnostic/flash/custom/pom.xml                 |    62 +
 .../test/agnostic/flash/custom/CustomFlash.java    |    58 +
 .../agnostic/flash/custom/CustomFlashBean.java     |    54 +
 .../agnostic/flash/custom/CustomFlashFactory.java  |    65 +
 .../src/main/webapp/WEB-INF/faces-config.xml       |    52 +
 .../src/main/webapp/WEB-INF/glassfish-web.xml      |    15 +
 .../flash/custom/src/main/webapp/WEB-INF/web.xml   |    75 +
 .../flash/custom/src/main/webapp/customflash.xhtml |    17 +
 .../test/agnostic/flash/custom/Spec1071IT.java     |    71 +
 test/agnostic/flash/pom.xml                        |    59 +
 test/agnostic/lifecycle/basic/nbactions.xml        |    74 +
 test/agnostic/lifecycle/basic/pom.xml              |    63 +
 .../test/lifecycle/basic/DocumentPopulator.java    |    79 +
 .../test/lifecycle/basic/MyPhaseListener.java      |    68 +
 .../lifecycle/basic/Spec1129ResetInputBean.java    |    70 +
 .../sun/faces/test/lifecycle/basic/TestBean.java   |    71 +
 ...s.application.ApplicationConfigurationPopulator |     1 +
 .../src/main/webapp/WEB-INF/glassfish-web.xml      |    11 +
 .../basic/src/main/webapp/WEB-INF/web.xml          |    30 +
 .../lifecycle/basic/src/main/webapp/index.xhtml    |    55 +
 .../src/main/webapp/spec1129_resetInput_01.xhtml   |    87 +
 .../lifecycle/basic/src/main/webapp/spec566.xhtml  |    83 +
 .../test/agnostic/lifeycle/basic/Spec533IT.java    |    73 +
 .../test/agnostic/lifeycle/basic/Spec566IT.java    |    93 +
 test/agnostic/lifecycle/clientWindow/nbactions.xml |    74 +
 test/agnostic/lifecycle/clientWindow/pom.xml       |    63 +
 .../agnostic/lifecycle/clientWindow/UserBean.java  |    92 +
 .../src/main/webapp/WEB-INF/glassfish-web.xml      |    52 +
 .../clientWindow/src/main/webapp/WEB-INF/web.xml   |    34 +
 .../src/main/webapp/disableClientWindow.xhtml      |    63 +
 .../clientWindow/src/main/webapp/main.xhtml        |    94 +
 .../clientWindow/src/main/webapp/page2.xhtml       |    79 +
 .../agnostic/lifeycle/clientWindow/Spec949IT.java  |   185 +
 test/agnostic/lifecycle/csrf/nbactions.xml         |    74 +
 test/agnostic/lifecycle/csrf/pom.xml               |    63 +
 .../csrf/src/main/webapp/WEB-INF/faces-config.xml  |    52 +
 .../lifecycle/csrf/src/main/webapp/WEB-INF/web.xml |    30 +
 .../csrf/src/main/webapp/i_spec_869_war.xhtml      |    18 +
 .../src/main/webapp/i_spec_869_war_protected.xhtml |    14 +
 .../test/agnostic/lifeycle/csrf/Spec869IT.java     |   152 +
 .../debugObjectOutputStream/nbactions.xml          |   151 +
 .../lifecycle/debugObjectOutputStream/pom.xml      |    63 +
 .../NotSerializableBean.java                       |    88 +
 .../src/main/webapp/WEB-INF/glassfish-web.xml      |    11 +
 .../src/main/webapp/WEB-INF/web.xml                |    35 +
 .../src/main/webapp/index.xhtml                    |    74 +
 .../debugObjectOutputStream/Issue2466IT.java       |   102 +
 .../lifecycle/facesServletAccess/nbactions.xml     |    14 +
 test/agnostic/lifecycle/facesServletAccess/pom.xml |    63 +
 .../src/main/webapp/META-INF/youcantgetme.xhtml    |    52 +
 .../src/main/webapp/WEB-INF/faces-config.xml       |    17 +
 .../src/main/webapp/WEB-INF/glassfish-web.xml      |    11 +
 .../src/main/webapp/WEB-INF/web.xml                |    75 +
 .../src/main/webapp/WEB-INF/youcantgetme.xhtml     |    52 +
 .../facesServletAccess/src/main/webapp/index.xhtml |    49 +
 .../facesServletAccess/Issue15973375IT.java        |   107 +
 test/agnostic/lifecycle/optionsRequest/pom.xml     |    63 +
 .../src/main/webapp/WEB-INF/glassfish-web.xml      |    11 +
 .../optionsRequest/src/main/webapp/WEB-INF/web.xml |    75 +
 .../optionsRequest/src/main/webapp/index.xhtml     |    14 +
 .../src/main/webapp/optionsRequest.xhtml           |    14 +
 .../lifecycle/optionsRequest/Spec915IT.java        |    75 +
 test/agnostic/lifecycle/pom.xml                    |    66 +
 .../nbactions.xml                                  |    74 +
 .../unserializableServerState_negative/pom.xml     |    63 +
 .../unserializableServerState_negative/Bean.java   |    71 +
 .../src/main/webapp/WEB-INF/web.xml                |    34 +
 .../src/main/webapp/index.xhtml                    |    60 +
 .../Issue1127IT.java                               |    78 +
 .../nbactions.xml                                  |    74 +
 .../unserializableServerState_positive/pom.xml     |    63 +
 .../unserializableServerState_positive/Bean.java   |    71 +
 .../src/main/webapp/WEB-INF/web.xml                |    34 +
 .../src/main/webapp/index.xhtml                    |    60 +
 .../Issue1127IT.java                               |    73 +
 test/agnostic/pom.xml                              |    80 +
 test/agnostic/renderKit/basic/nbactions.xml        |   166 +
 test/agnostic/renderKit/basic/pom.xml              |    63 +
 .../faces/test/agnostic/renderKit/basic/Bean.java  |   163 +
 .../agnostic/renderKit/basic/HobbitConverter.java  |    77 +
 .../agnostic/renderKit/basic/Issue1830Bean.java    |    65 +
 .../agnostic/renderKit/basic/Issue2065Bean.java    |    72 +
 .../basic/Issue2065ClientBehaviorRenderer.java     |    45 +
 .../agnostic/renderKit/basic/Issue2613Bean.java    |    78 +
 .../agnostic/renderKit/basic/SelectMany05Bean.java |   433 +
 .../com/sun/faces/test/render/ButtonRenderer.java  |   286 +
 .../sun/faces/test/render/CustomRenderKitImpl.java |   243 +
 .../faces/test/render/CustomResponseWriter.java    |   588 +
 .../com/sun/faces/test/render/FormRenderer.java    |   361 +
 .../com/sun/faces/test/render/TextRenderer.java    |   365 +
 .../basic/src/main/webapp/WEB-INF/faces-config.xml |    71 +
 .../src/main/webapp/WEB-INF/glassfish-web.xml      |    11 +
 .../basic/src/main/webapp/WEB-INF/web.xml          |    72 +
 .../basic/src/main/webapp/attributes.xhtml         |    67 +
 .../basic/src/main/webapp/data-attributes.xhtml    |    90 +
 .../renderKit/basic/src/main/webapp/hbody.xhtml    |    49 +
 .../renderKit/basic/src/main/webapp/hhead.xhtml    |    50 +
 .../renderKit/basic/src/main/webapp/hlink.xhtml    |    51 +
 .../src/main/webapp/inputFileRenderTest.xhtml      |    53 +
 .../basic/src/main/webapp/issue1830.xhtml          |    57 +
 .../basic/src/main/webapp/issue2065.xhtml          |    50 +
 .../basic/src/main/webapp/issue2168.xhtml          |    53 +
 .../basic/src/main/webapp/issue2459.xhtml          |    74 +
 .../basic/src/main/webapp/issue2523.xhtml          |    55 +
 .../basic/src/main/webapp/issue2613.xhtml          |    78 +
 .../basic/src/main/webapp/issue2767.xhtml          |    77 +
 .../basic/src/main/webapp/outputEscape.xhtml       |    19 +
 .../basic/src/main/webapp/outputEscape1.xhtml      |    59 +
 .../basic/src/main/webapp/outputFormat.xhtml       |    61 +
 .../basic/src/main/webapp/panelGrid.xhtml          |    67 +
 .../src/main/webapp/passThroughAttributes.xhtml    |    69 +
 .../main/webapp/passThroughAttributesSelect.xhtml  |   173 +
 .../basic/src/main/webapp/renderkit03.jsp          |    92 +
 .../basic/src/main/webapp/renderkit03A.jsp         |    52 +
 .../src/main/webapp/resources/alibrary/script.js   |    42 +
 .../basic/src/main/webapp/resources/css/main.css   |    75 +
 .../basic/src/main/webapp/resources/foo.js         |    40 +
 .../basic/src/main/webapp/resources/import1.css    |    40 +
 .../basic/src/main/webapp/scriptWithComment.xhtml  |    15 +
 .../basic/src/main/webapp/scriptWithComment2.xhtml |    21 +
 .../renderKit/basic/CustomRenderKitIT.java         |   106 +
 .../test/agnostic/renderKit/basic/Issue1089IT.java |   213 +
 .../test/agnostic/renderKit/basic/Issue1100IT.java |    69 +
 .../test/agnostic/renderKit/basic/Issue1134IT.java |    83 +
 .../test/agnostic/renderKit/basic/Issue1830IT.java |    78 +
 .../test/agnostic/renderKit/basic/Issue2065IT.java |    69 +
 .../test/agnostic/renderKit/basic/Issue2168IT.java |    70 +
 .../test/agnostic/renderKit/basic/Issue2351IT.java |    85 +
 .../test/agnostic/renderKit/basic/Issue2386IT.java |    82 +
 .../test/agnostic/renderKit/basic/Issue2409IT.java |    69 +
 .../test/agnostic/renderKit/basic/Issue2420IT.java |    72 +
 .../test/agnostic/renderKit/basic/Issue2459IT.java |   154 +
 .../test/agnostic/renderKit/basic/Issue2502IT.java |    94 +
 .../test/agnostic/renderKit/basic/Issue2503IT.java |    92 +
 .../test/agnostic/renderKit/basic/Issue2523IT.java |    70 +
 .../test/agnostic/renderKit/basic/Issue2613IT.java |    77 +
 .../test/agnostic/renderKit/basic/Issue2721IT.java |    87 +
 .../test/agnostic/renderKit/basic/Issue2767IT.java |    80 +
 .../renderKit/noLinkDecoration/nbactions.xml       |   169 +
 test/agnostic/renderKit/noLinkDecoration/pom.xml   |    63 +
 .../src/main/webapp/WEB-INF/faces-config.xml       |     0
 .../src/main/webapp/WEB-INF/glassfish-web.xml      |    11 +
 .../noLinkDecoration/src/main/webapp/index.xhtml   |    57 +
 .../noLinkDecoration/src/main/webapp/page.xhtml    |    57 +
 .../renderkit/nolinkdecoration/Issue3054IT.java    |    81 +
 test/agnostic/renderKit/passthrough/nbactions.xml  |   155 +
 test/agnostic/renderKit/passthrough/pom.xml        |    63 +
 .../sun/faces/test/renderKit/passthrough/Bean.java |   206 +
 .../faces/test/renderKit/passthrough/Complex.java  |    93 +
 .../src/main/webapp/WEB-INF/faces-config.xml       |    50 +
 .../src/main/webapp/WEB-INF/glassfish-web.xml      |    11 +
 .../passthrough/src/main/webapp/WEB-INF/web.xml    |    68 +
 .../passthrough/src/main/webapp/article.xhtml      |    93 +
 .../passthrough/src/main/webapp/aside.xhtml        |    93 +
 .../passthrough/src/main/webapp/base.xhtml         |    56 +
 .../passthrough/src/main/webapp/button.xhtml       |    76 +
 .../passthrough/src/main/webapp/causeError.xhtml   |    56 +
 .../passthrough/src/main/webapp/command.xhtml      |    59 +
 .../passthrough/src/main/webapp/complex.xhtml      |    76 +
 .../passthrough/src/main/webapp/datalist.xhtml     |    64 +
 .../passthrough/src/main/webapp/divWithClass.xhtml |    16 +
 .../passthrough/src/main/webapp/fieldset.xhtml     |   122 +
 .../passthrough/src/main/webapp/h1h2h3h4h5h6.xhtml |   120 +
 .../passthrough/src/main/webapp/hgroup.xhtml       |   101 +
 .../passthrough/src/main/webapp/index.html         |    62 +
 .../passthrough/src/main/webapp/input.xhtml        |    78 +
 .../passthrough/src/main/webapp/input1.xhtml       |    75 +
 .../passthrough/src/main/webapp/issue2767.xhtml    |    61 +
 .../passthrough/src/main/webapp/keygen.xhtml       |    56 +
 .../passthrough/src/main/webapp/label.xhtml        |    90 +
 .../passthrough/src/main/webapp/links.xhtml        |    60 +
 .../passthrough/src/main/webapp/meta.xhtml         |    56 +
 .../passthrough/src/main/webapp/meter.xhtml        |    61 +
 .../passthrough/src/main/webapp/nav.xhtml          |   103 +
 .../passthrough/src/main/webapp/outcome1.xhtml     |    57 +
 .../passthrough/src/main/webapp/output.xhtml       |    54 +
 .../passthrough/src/main/webapp/resources/css.css  |    14 +
 .../passthrough/src/main/webapp/resources/js.js    |    13 +
 .../passthrough/src/main/webapp/section.xhtml      |    93 +
 .../passthrough/src/main/webapp/select.xhtml       |    72 +
 .../passthrough/src/main/webapp/simplestForm.xhtml |    57 +
 .../src/main/webapp/spuriousClosing.xhtml          |    34 +
 .../passthrough/src/main/webapp/textarea.xhtml     |    58 +
 .../renderKit/passthrough/Issue1111IT.java         |   385 +
 .../renderKit/passthrough/Issue2605IT.java         |   154 +
 .../renderKit/passthrough/Issue2606IT.java         |   222 +
 .../renderKit/passthrough/Issue2607IT.java         |   123 +
 .../renderKit/passthrough/Issue2608IT.java         |   185 +
 .../renderKit/passthrough/Issue2629IT.java         |   108 +
 .../renderKit/passthrough/Issue2711IT.java         |    98 +
 .../renderKit/passthrough/Issue3025IT.java         |    77 +
 .../renderKit/passthrough/Issue3169IT.java         |    71 +
 test/agnostic/renderKit/pom.xml                    |    61 +
 test/agnostic/replace-vr-add-er/nbactions.xml      |    28 +
 test/agnostic/replace-vr-add-er/pom.xml            |    61 +
 .../test/agnostic/replace_vr_add_er/Bean.java      |   196 +
 .../EagerApplicationScopedBean.java                |    68 +
 .../agnostic/replace_vr_add_er/NewELResolver.java  |   115 +
 .../replace_vr_add_er/NewVariableResolver.java     |   123 +
 .../agnostic/replace_vr_add_er/SpecialBean.java    |    62 +
 .../test/agnostic/replace_vr_add_er/TestBean.java  |  1011 ++
 .../replace_vr_add_er/TestBeanEventClass.java      |    56 +
 .../TestBeanPostConstructEvent.java                |    54 +
 .../replace_vr_add_er/TestBeanPreDestroyEvent.java |    52 +
 .../src/main/webapp/WEB-INF/faces-config.xml       |    65 +
 .../src/main/webapp/WEB-INF/glassfish-web.xml      |    11 +
 .../src/main/webapp/WEB-INF/web.xml                |    68 +
 .../replace-vr-add-er/src/main/webapp/test.jsp     |    84 +
 .../replace-vr-add-er/src/main/webapp/test1.jsp    |    70 +
 ...ResolverAndAddELResolverProgrammaticallyIT.java |   163 +
 test/agnostic/resource/basic/nbactions.xml         |    28 +
 test/agnostic/resource/basic/pom.xml               |    63 +
 .../test/agnostic/resource/basic/ResourceBean.java |   176 +
 .../agnostic/resource/basic/ResourceComponent.java |    59 +
 .../agnostic/resource/basic/ResourceNPEBean.java   |    70 +
 .../basic/src/main/webapp/WEB-INF/faces-config.xml |    57 +
 .../src/main/webapp/WEB-INF/glassfish-web.xml      |    11 +
 .../src/main/webapp/WEB-INF/resource.taglib.xml    |    56 +
 .../resource/basic/src/main/webapp/WEB-INF/web.xml |    68 +
 .../resource/basic/src/main/webapp/index.xhtml     |    16 +
 .../resource/basic/src/main/webapp/issue2565.xhtml |    61 +
 .../resource/basic/src/main/webapp/issue2889.xhtml |    67 +
 .../basic/src/main/webapp/resourceNPE.xhtml        |    54 +
 .../basic/src/main/webapp/resources/css/el.css     |     8 +
 .../webapp/resources/css/images/background.png     |   Bin 0 -> 137 bytes
 .../basic/src/main/webapp/resources/js/foo.js      |     1 +
 .../resource/basic/src/main/webapp/start.xhtml     |    82 +
 .../webapp/styles/2_0/foreground.css/3_2_1.css     |    23 +
 .../src/main/webapp/styles/2_0/leading.css/_99.css |     8 +
 .../styles/2_0/noUnderscore.css/99-100-101.css     |     4 +
 .../main/webapp/styles/2_0/trailing.css/42_.css    |     1 +
 .../test/agnostic/resource/basic/Issue2052IT.java  |    70 +
 .../test/agnostic/resource/basic/Issue2401IT.java  |    99 +
 .../test/agnostic/resource/basic/Issue2889IT.java  |    87 +
 .../test/agnostic/resource/basic/Issue2932IT.java  |    73 +
 .../test/agnostic/resource/basic/Issue3204IT.java  |    71 +
 test/agnostic/resource/pom.xml                     |    63 +
 test/agnostic/resource/relocated/pom.xml           |    63 +
 .../src/main/webapp/WEB-INF/glassfish-web.xml      |    11 +
 .../main/webapp/WEB-INF/myresources/default.xhtml  |    22 +
 .../relocated/src/main/webapp/WEB-INF/web.xml      |    37 +
 .../relocated/src/main/webapp/issue2348.xhtml      |    19 +
 .../agnostic/resource/relocated/Issue2348IT.java   |    76 +
 test/agnostic/scope/pom.xml                        |    59 +
 test/agnostic/scope/session/pom.xml                |    63 +
 .../agnostic/scope/session/InvalidatedBean.java    |   106 +
 .../src/main/webapp/WEB-INF/glassfish-web.xml      |    11 +
 .../scope/session/src/main/webapp/WEB-INF/web.xml  |    33 +
 .../src/main/webapp/invalidatedPerform.xhtml       |    15 +
 .../src/main/webapp/invalidatedSession.xhtml       |    15 +
 .../src/main/webapp/invalidatedVerify.xhtml        |    15 +
 .../test/agnostic/scope/session/Issue1960IT.java   |    81 +
 test/agnostic/stateSaving/basic/nbactions.xml      |    28 +
 test/agnostic/stateSaving/basic/pom.xml            |    63 +
 .../statesaving/basic/DynamicParentComponent.java  |   106 +
 .../basic/DynamicParentComponentRenderer.java      |    78 +
 .../agnostic/statesaving/basic/Issue1554Bean.java  |    81 +
 .../agnostic/statesaving/basic/Issue2518Bean.java  |    55 +
 .../statesaving/basic/SimplePhaseListener.java     |   109 +
 .../test/agnostic/statesaving/basic/StateBean.java |    88 +
 .../WEB-INF/dynamicParentComponent.taglib.xml      |    57 +
 .../basic/src/main/webapp/WEB-INF/faces-config.xml |    50 +
 .../src/main/webapp/WEB-INF/glassfish-web.xml      |    11 +
 .../basic/src/main/webapp/WEB-INF/web.xml          |    69 +
 .../main/webapp/dynamicChildAtCorrectIndex.xhtml   |    60 +
 .../basic/src/main/webapp/issue1554.xhtml          |    32 +
 .../basic/src/main/webapp/issue2518.xhtml          |    26 +
 .../basic/src/main/webapp/transientParent.xhtml    |    61 +
 .../agnostic/statesaving/basic/Issue2371IT.java    |    86 +
 .../agnostic/statesaving/basic/Issue2372IT.java    |    79 +
 .../stateSaving/disableIdUniqueness/pom.xml        |    63 +
 .../src/main/webapp/WEB-INF/faces-config.xml       |    45 +
 .../src/main/webapp/WEB-INF/glassfish-web.xml      |    11 +
 .../src/main/webapp/WEB-INF/web.xml                |    69 +
 .../src/main/webapp/hello.xhtml                    |    55 +
 .../disableiduniqueness/Issue2414IT.java           |    69 +
 test/agnostic/stateSaving/pom.xml                  |    61 +
 .../stateSaving/serializeServerState/pom.xml       |    63 +
 .../src/main/webapp/WEB-INF/faces-config.xml       |    50 +
 .../src/main/webapp/WEB-INF/glassfish-web.xml      |    52 +
 .../src/main/webapp/WEB-INF/web.xml                |    74 +
 .../src/main/webapp/simpleFormSubmit.xhtml         |    58 +
 .../serializeserverstate/Issue3000IT.java          |    79 +
 .../vdl/facelets/contracts/basic/nbactions.xml     |    28 +
 test/agnostic/vdl/facelets/contracts/basic/pom.xml |    63 +
 .../src/main/webapp/WEB-INF/glassfish-web.xml      |    11 +
 .../basic/src/main/webapp/WEB-INF/web.xml          |    72 +
 .../main/webapp/contracts/siteLayout/cssLayout.css |    61 +
 .../main/webapp/contracts/siteLayout/default.css   |    29 +
 .../webapp/contracts/siteLayout/leftNav_foo.xhtml  |    68 +
 .../contracts/siteLayout/topNav_Template.xhtml     |    68 +
 .../contracts/basic/src/main/webapp/index.xhtml    |    72 +
 .../contracts/basic/src/main/webapp/page2.xhtml    |    25 +
 .../vdl/facelets/contracts/basic/Issue2511IT.java  |   123 +
 .../vdl/facelets/contracts/basic/Issue2914IT.java  |    74 +
 .../contracts/basic_contract_in_jar/nbactions.xml  |    28 +
 .../contracts/basic_contract_in_jar/pom.xml        |    70 +
 .../src/main/webapp/WEB-INF/glassfish-web.xml      |    11 +
 .../src/main/webapp/WEB-INF/web.xml                |    72 +
 .../src/main/webapp/index.xhtml                    |    30 +
 .../src/main/webapp/page2.xhtml                    |    25 +
 .../contracts/basic_in_jar/Issue2511IT.java        |   120 +
 .../facelets/contracts/basic_contract_jar/pom.xml  |    61 +
 .../META-INF/contracts/siteLayout/cssLayout.css    |    61 +
 .../META-INF/contracts/siteLayout/default.css      |    29 +
 .../contracts/siteLayout/javax.faces.contract.xml  |     0
 .../contracts/siteLayout/leftNav_foo.xhtml         |    68 +
 .../contracts/siteLayout/topNav_Template.xhtml     |    68 +
 .../contracts/extended/extended_base/pom.xml       |    63 +
 .../META-INF/contracts/jarbase/css/contract.css    |    29 +
 .../META-INF/contracts/jarbase/css/cssLayout.css   |    24 +
 .../contracts/jarbase/javax.faces.contract.xml     |    31 +
 .../META-INF/contracts/jarbase/subtemplate.xhtml   |    73 +
 .../META-INF/contracts/jarbase/template.xhtml      |    33 +
 .../src/main/resources/META-INF/faces-config.xml   |    46 +
 .../contracts/extended/extended_blue/pom.xml       |    61 +
 .../META-INF/contracts/blue/css/contract.css       |    36 +
 .../contracts/blue/javax.faces.contract.xml        |    31 +
 .../META-INF/contracts/blue/template.xhtml         |    41 +
 .../src/main/resources/META-INF/faces-config.xml   |    47 +
 .../contracts/extended/extended_contracts/pom.xml  |    80 +
 .../contracts/extended/bean/ContractsBean.java     |    60 +
 .../extended/context/ContractsFacesContext.java    |   112 +
 .../context/ContractsFacesContextFactory.java      |    67 +
 .../src/main/webapp/WEB-INF/beans.xml              |    32 +
 .../src/main/webapp/WEB-INF/faces-config.xml       |    47 +
 .../src/main/webapp/WEB-INF/web.xml                |    56 +
 .../main/webapp/contracts/green/css/contract.css   |    36 +
 .../src/main/webapp/contracts/green/template.xhtml |    41 +
 .../main/webapp/contracts/warbase/css/contract.css |    29 +
 .../webapp/contracts/warbase/css/cssLayout.css     |    24 +
 .../webapp/contracts/warbase/subtemplate.xhtml     |    73 +
 .../main/webapp/contracts/warbase/template.xhtml   |    33 +
 .../src/main/webapp/green/index.xhtml              |    45 +
 .../extended_contracts/src/main/webapp/index.xhtml |    73 +
 .../src/main/webapp/red/index.xhtml                |    45 +
 .../src/main/webapp/user/index.xhtml               |    48 +
 .../facelets/contracts/extended/Issue3137IT.java   |   271 +
 .../contracts/extended/extended_red/pom.xml        |    61 +
 .../META-INF/contracts/red/css/contract.css        |    36 +
 .../contracts/red/javax.faces.contract.xml         |    31 +
 .../META-INF/contracts/red/template.xhtml          |    43 +
 .../src/main/resources/META-INF/faces-config.xml   |    46 +
 .../vdl/facelets/contracts/extended/pom.xml        |    64 +
 test/agnostic/vdl/facelets/contracts/pom.xml       |    66 +
 .../agnostic/vdl/facelets/contracts/sample/pom.xml |    63 +
 .../src/main/webapp/WEB-INF/faces-config.xml       |    21 +
 .../src/main/webapp/WEB-INF/glassfish-web.xml      |    11 +
 .../sample/src/main/webapp/WEB-INF/web.xml         |    57 +
 .../main/webapp/contracts/default/template.xhtml   |    18 +
 .../src/main/webapp/contracts/user/template.xhtml  |    17 +
 .../contracts/sample/src/main/webapp/index.xhtml   |    38 +
 .../contracts/sample/src/main/webapp/page2.xhtml   |    20 +
 .../sample/src/main/webapp/user/index.xhtml        |    20 +
 .../vdl/facelets/contracts/sample/Issue2709IT.java |    82 +
 .../agnostic/vdl/facelets/contracts/simple/pom.xml |    63 +
 .../src/main/webapp/WEB-INF/faces-config.xml       |    17 +
 .../src/main/webapp/WEB-INF/glassfish-web.xml      |    11 +
 .../simple/src/main/webapp/WEB-INF/web.xml         |    72 +
 .../main/webapp/contracts/siteLayout/cssLayout.css |    61 +
 .../main/webapp/contracts/siteLayout/default.css   |    29 +
 .../webapp/contracts/siteLayout/leftNav_foo.xhtml  |    68 +
 .../contracts/siteLayout/topNav_Template.xhtml     |    68 +
 .../contracts/simple/src/main/webapp/index.xhtml   |    30 +
 .../contracts/simple/src/main/webapp/page2.xhtml   |    25 +
 .../vdl/facelets/contracts/simple/Issue2640IT.java |   118 +
 .../vdl/facelets/contracts/vhosts/nbactions.xml    |    47 +
 .../agnostic/vdl/facelets/contracts/vhosts/pom.xml |    63 +
 .../vdl/facelets/contracts/vhosts/VDLFactory.java  |    65 +
 .../src/main/webapp/WEB-INF/faces-config.xml       |    12 +
 .../src/main/webapp/WEB-INF/glassfish-web.xml      |    11 +
 .../vhosts/src/main/webapp/WEB-INF/web.xml         |    72 +
 .../src/main/webapp/contracts/host1/css/layout.css |     3 +
 .../src/main/webapp/contracts/host1/header.xhtml   |    11 +
 .../src/main/webapp/contracts/host1/lib/cc.xhtml   |    23 +
 .../src/main/webapp/contracts/host2/template.xhtml |    63 +
 .../src/main/webapp/contracts/host3/index.xhtml    |    59 +
 .../src/main/webapp/contracts/host4/index.xhtml    |    13 +
 .../main/webapp/contracts/host5/foo/template.xhtml |    61 +
 .../vhosts/src/main/webapp/foo/index.xhtml         |    16 +
 .../vhosts/src/main/webapp/foo/template.xhtml      |    62 +
 .../contracts/vhosts/src/main/webapp/header.xhtml  |     7 +
 .../contracts/vhosts/src/main/webapp/index.xhtml   |    18 +
 .../src/main/webapp/resources/css/layout.css       |     3 +
 .../src/main/webapp/resources/lib/2_3/cc.xhtml     |    23 +
 .../main/webapp/resources/lib/2_3/template.xhtml   |    56 +
 .../vhosts/src/main/webapp/template.xhtml          |    68 +
 .../vdl/facelets/contracts/vhosts/Issue2511IT.java |   176 +
 .../vdl/facelets/contracts/vhosts/Issue2679IT.java |    92 +
 .../vdl/facelets/contracts/viewroot/pom.xml        |    63 +
 .../viewroot/ViewRootContractsELBean.java          |    58 +
 .../src/main/webapp/WEB-INF/faces-config.xml       |     7 +
 .../src/main/webapp/WEB-INF/glassfish-web.xml      |    11 +
 .../viewroot/src/main/webapp/WEB-INF/web.xml       |    69 +
 .../main/webapp/contracts/layout1/css/layout.css   |     3 +
 .../src/main/webapp/contracts/layout1/header.xhtml |     5 +
 .../main/webapp/contracts/layout2/template.xhtml   |    63 +
 .../viewroot/src/main/webapp/header.xhtml          |     7 +
 .../contracts/viewroot/src/main/webapp/index.xhtml |    21 +
 .../src/main/webapp/resources/css/layout.css       |     3 +
 .../viewroot/src/main/webapp/template.xhtml        |    61 +
 .../src/main/webapp/viewRootContractsEL.xhtml      |    63 +
 .../contracts/viewroot/src/main/webapp/wrong.xhtml |    21 +
 .../facelets/contracts/viewroot/Issue2654IT.java   |    82 +
 .../facelets/contracts/viewroot/Issue2671IT.java   |    82 +
 .../facelets/contracts/viewroot/Issue2736IT.java   |    70 +
 .../only_faces_config_in_jar/app/nbactions.xml     |    28 +
 .../facelets/only_faces_config_in_jar/app/pom.xml  |    70 +
 .../only_faces_config_in_jar/TestBean.java         |    73 +
 .../app/src/main/webapp/WEB-INF/glassfish-web.xml  |    11 +
 .../app/src/main/webapp/WEB-INF/web.xml            |    76 +
 .../app/src/main/webapp/index.xhtml                |    90 +
 .../only_faces_config_in_jar/Issue2841IT.java      |    70 +
 .../facelets/only_faces_config_in_jar/jar/pom.xml  |    61 +
 .../facelets/only_faces_config_in_jar/Bean.java    |    55 +
 .../src/main/resources/META-INF/faces-config.xml   |    54 +
 .../vdl/facelets/only_faces_config_in_jar/pom.xml  |    60 +
 test/agnostic/vdl/facelets/pom.xml                 |    61 +
 test/agnostic/vdl/pom.xml                          |    59 +
 test/bin/test-glassfish-default.bat                |     2 +
 test/bin/test-glassfish-default.sh                 |    47 +
 test/bin/test-glassfish-matrix.bat                 |    23 +
 test/bin/test-glassfish-matrix.sh                  |    77 +
 test/bin/test-glassfish-specific.bat               |    29 +
 test/bin/test-glassfish-specific.sh                |    83 +
 test/bin/test-weblogic-default.sh                  |    47 +
 test/bin/test-weblogic-specific.sh                 |    90 +
 .../flow/basic_faces_flow_call/nbactions.xml       |    70 +
 .../javaee6web/flow/basic_faces_flow_call/pom.xml  |    63 +
 .../flow/basic_faces_flow_call/FlowA.java          |    72 +
 .../flow/basic_faces_flow_call/FlowC.java          |    68 +
 .../flow/basic_faces_flow_call/Flow_a_Bean.java    |    58 +
 .../flow/basic_faces_flow_call/Flow_b_Bean.java    |    58 +
 .../flow/basic_faces_flow_call/Flow_c_Bean.java    |    58 +
 .../src/main/webapp/WEB-INF/beans.xml              |     9 +
 .../src/main/webapp/WEB-INF/glassfish-web.xml      |    24 +
 .../src/main/webapp/WEB-INF/web.xml                |    82 +
 .../src/main/webapp/WEB-INF/weblogic.xml           |    54 +
 .../src/main/webapp/flow-a/flow-a.xhtml            |    67 +
 .../src/main/webapp/flow-a/next_a.xhtml            |    65 +
 .../src/main/webapp/flow-a/next_b.xhtml            |    98 +
 .../src/main/webapp/flow-b/flow-b-flow.xml         |    83 +
 .../src/main/webapp/flow-b/flow-b.xhtml            |    67 +
 .../src/main/webapp/flow-b/next_a.xhtml            |    65 +
 .../src/main/webapp/flow-b/next_b.xhtml            |    72 +
 .../src/main/webapp/flow-c/flow-c.xhtml            |    64 +
 .../src/main/webapp/flow-c/next_a.xhtml            |    65 +
 .../src/main/webapp/flow-c/next_b.xhtml            |    72 +
 .../src/main/webapp/index.xhtml                    |    73 +
 .../src/main/webapp/nonFlow.xhtml                  |    61 +
 .../src/main/webapp/return1.xhtml                  |    63 +
 .../basic_faces_flow_call/FlowACallsFlowBIT.java   |   226 +
 test/cluster/javaee6web/flow/pom.xml               |    61 +
 test/cluster/javaee6web/pom.xml                    |    57 +
 test/cluster/javaee6web/viewScoped/nbactions.xml   |    69 +
 test/cluster/javaee6web/viewScoped/pom.xml         |    60 +
 .../viewScoped/SessionFailoverListener.java        |    60 +
 .../javaee6web/viewScoped/ViewScopedBean.java      |    86 +
 .../viewScoped/src/main/webapp/WEB-INF/beans.xml   |     9 +
 .../src/main/webapp/WEB-INF/glassfish-web.xml      |    20 +
 .../viewScoped/src/main/webapp/WEB-INF/web.xml     |    79 +
 .../viewScoped/src/main/webapp/index.xhtml         |    74 +
 .../viewScoped/src/main/webapp/page2.xhtml         |    18 +
 .../cluster/javaee6web/viewScoped/Issue3319IT.java |   178 +
 test/cluster/pom.xml                               |   520 +
 test/cluster/servlet25/bytearrayguard/pom.xml      |    65 +
 .../bytearrayguard/src/main/webapp/WEB-INF/web.xml |    38 +
 .../bytearrayguard/src/main/webapp/index.xhtml     |    15 +
 test/cluster/servlet25/flash/basic/nbactions.xml   |    70 +
 test/cluster/servlet25/flash/basic/pom.xml         |    62 +
 .../test/cluster/flash/basic/AddMessageBean.java   |    59 +
 .../cluster/flash/basic/FlashDropCookieBean.java   |    80 +
 .../cluster/flash/basic/FlashMessagesBean.java     |    87 +
 .../faces/test/cluster/flash/issue2973/Bean.java   |    81 +
 .../src/main/webapp/WEB-INF/glassfish-web.xml      |    18 +
 .../flash/basic/src/main/webapp/WEB-INF/web.xml    |    84 +
 .../basic/src/main/webapp/WEB-INF/weblogic.xml     |    54 +
 .../flash/basic/src/main/webapp/flash01.xhtml      |   110 +
 .../flash/basic/src/main/webapp/flash02.xhtml      |    67 +
 .../basic/src/main/webapp/flashDropCookie.xhtml    |    59 +
 .../basic/src/main/webapp/flashDropCookie2.xhtml   |    55 +
 .../basic/src/main/webapp/flashDropCookie3.xhtml   |    54 +
 .../src/main/webapp/flashKeepMessages01.xhtml      |    59 +
 .../src/main/webapp/flashKeepMessages02.xhtml      |    56 +
 .../basic/src/main/webapp/issue2973/page1.xhtml    |    20 +
 .../basic/src/main/webapp/issue2973/page2.xhtml    |    12 +
 .../flash/basic/src/main/webapp/keepMessages.xhtml |    71 +
 .../flash/basic/src/main/webapp/messagePage.xhtml  |    63 +
 .../test/cluster/flash/basic/FlashClusterIT.java   |   114 +
 .../test/cluster/flash/basic/FlashMessagesIT.java  |    90 +
 .../test/cluster/flash/basic/FlashViewParamIT.java |   106 +
 .../test/cluster/flash/basic/Issue2862IT.java      |    87 +
 .../test/cluster/flash/basic/Issue2973IT.java      |   108 +
 .../test/cluster/flash/basic/KeepMessagesIT.java   |   122 +
 test/cluster/servlet25/flash/pom.xml               |    60 +
 test/cluster/servlet25/flash/reaper/nbactions.xml  |    70 +
 test/cluster/servlet25/flash/reaper/pom.xml        |    58 +
 .../servlet25/flash/reaper/FlashReaperBean.java    |    73 +
 .../src/main/webapp/WEB-INF/glassfish-web.xml      |    18 +
 .../flash/reaper/src/main/webapp/WEB-INF/web.xml   |    89 +
 .../reaper/src/main/webapp/WEB-INF/weblogic.xml    |    54 +
 .../reaper/src/main/webapp}/flashReaper.xhtml      |     0
 .../servlet25/flash/reaper/FlashReaperIT.java      |   117 +
 test/cluster/servlet25/pom.xml                     |    62 +
 test/glassfish/bundle22/README.txt                 |     3 +
 test/glassfish/bundle22/pom.xml                    |    71 +
 .../sun/faces/test/glassfish/bundle22/Bean.java    |    64 +
 .../src/main/webapp/WEB-INF/glassfish-web.xml      |    56 +
 .../bundle22/src/main/webapp/WEB-INF/web.xml       |    74 +
 .../bundle22/src/main/webapp/simple.xhtml          |    69 +
 .../faces/test/glassfish/bundle22/Issue2984IT.java |    86 +
 test/glassfish/facelets/core/pom.xml               |    62 +
 .../annotation/AnnotatedValidatorNoValue.java      |    64 +
 .../facelets/core/AnnotationTestBean.java          |   111 +
 .../core/src/main/webapp/WEB-INF/faces-config.xml  |    56 +
 .../core/src/main/webapp/WEB-INF/glassfish-web.xml |    51 +
 .../facelets/core/src/main/webapp/WEB-INF/web.xml  |    76 +
 .../core/src/main/webapp/annotationtest.xhtml      |    17 +
 .../facelets/core/AnnotatedComponentIT.java        |    74 +
 test/glassfish/facelets/pom.xml                    |    60 +
 test/glassfish/pom.xml                             |    71 +
 test/glassfish/request_char_encoding/nbactions.xml |   148 +
 test/glassfish/request_char_encoding/pom.xml       |    63 +
 .../src/main/java/com/sun/faces/test/Bean.java     |    92 +
 .../src/main/java/com/sun/faces/test/Foo.java      |    85 +
 .../java/com/sun/faces/test/FooConverterBase.java  |    75 +
 .../com/sun/faces/test/FooConverterByClass.java    |    48 +
 .../java/com/sun/faces/test/FooConverterById.java  |    49 +
 .../src/main/java/hello1/Hello.java                |    64 +
 .../src/main/webapp/WEB-INF/glassfish-web.xml      |    11 +
 .../src/main/webapp/WEB-INF/web.xml                |    35 +
 .../src/main/webapp/duke.waving.gif                |   Bin 0 -> 2286 bytes
 .../src/main/webapp/index.xhtml                    |    33 +
 .../src/main/webapp/response.xhtml                 |    18 +
 .../request_char_encoding/Issue2217IT.java         |   100 +
 .../glassfish/request_char_encoding2/nbactions.xml |    74 +
 test/glassfish/request_char_encoding2/pom.xml      |    63 +
 .../src/main/java/com/sun/faces/test/Bean.java     |    92 +
 .../src/main/java/com/sun/faces/test/Foo.java      |    85 +
 .../java/com/sun/faces/test/FooConverterBase.java  |    75 +
 .../com/sun/faces/test/FooConverterByClass.java    |    48 +
 .../java/com/sun/faces/test/FooConverterById.java  |    49 +
 .../src/main/java/hello1/Hello.java                |    64 +
 .../src/main/webapp/WEB-INF/glassfish-web.xml      |     8 +
 .../src/main/webapp/WEB-INF/web.xml                |    35 +
 .../src/main/webapp/duke.waving.gif                |   Bin 0 -> 1305 bytes
 .../src/main/webapp/index.xhtml                    |    33 +
 .../src/main/webapp/response.xhtml                 |    18 +
 .../request_char_encoding2/Issue2217IT.java        |   106 +
 test/glassfish/undeploy/pom.xml                    |    60 +
 test/glassfish/undeploy/undeploy1/pom.xml          |    63 +
 .../src/main/webapp/WEB-INF/glassfish-web.xml      |    15 +
 .../undeploy1/src/main/webapp/WEB-INF/web.xml      |    33 +
 .../undeploy/undeploy1/src/main/webapp/index.xhtml |    13 +
 test/glassfish/undeploy/undeploy2/pom.xml          |    63 +
 .../glassfish/undeploy/undeploy2/CountBean.java    |    50 +
 .../src/main/webapp/WEB-INF/glassfish-web.xml      |    11 +
 .../undeploy2/src/main/webapp/WEB-INF/web.xml      |    33 +
 .../undeploy/undeploy2/src/main/webapp/count.xhtml |    14 +
 .../undeploy/undeploy2/src/main/webapp/index.xhtml |    13 +
 .../glassfish/undeploy/undeploy2/Issue2398IT.java  |   117 +
 test/groovy/basic/nbactions.xml                    |   163 +
 test/groovy/basic/pom.xml                          |    61 +
 .../java/com/sun/faces/test/groovy/basic/Name.java |    81 +
 .../groovy/hello/AgeComponent.groovy               |    27 +
 .../basic/src/main/webapp/WEB-INF/faces-config.xml |    85 +
 .../src/main/webapp/WEB-INF/glassfish-web.xml      |    11 +
 .../src/main/webapp/WEB-INF/groovy-taglib.xml      |    73 +
 .../WEB-INF/groovy/hello/AgeComponent.groovy       |    10 +
 .../webapp/WEB-INF/groovy/hello/HelloBean.groovy   |    32 +
 .../WEB-INF/groovy/hello/MessageOutput.groovy      |    20 +
 .../WEB-INF/groovy/hello/MessageRenderer.groovy    |    38 +
 .../WEB-INF/groovy/hello/NameConverter.groovy      |    29 +
 .../WEB-INF/groovy/hello/NameValidator.groovy      |    22 +
 test/groovy/basic/src/main/webapp/WEB-INF/web.xml  |    94 +
 .../src/main/webapp/closedStreamComponent.xhtml    |    16 +
 test/groovy/basic/src/main/webapp/hello.xhtml      |    27 +
 .../closedStreamComponent.groovy                   |    59 +
 .../closedStreamComponent.properties               |    41 +
 .../closedStreamComponent.xhtml                    |    18 +
 test/groovy/basic/src/main/webapp/submit.xhtml     |    20 +
 .../sun/faces/test/groovy/basic/Issue1655IT.java   |   107 +
 .../sun/faces/test/groovy/basic/Issue2113IT.java   |    74 +
 test/groovy/pom.xml                                |    58 +
 test/groovy/weldAware/nbactions.xml                |   163 +
 test/groovy/weldAware/pom.xml                      |    61 +
 .../com/sun/faces/test/groovy/weldAware/Name.java  |    81 +
 .../groovy/hello/AgeComponent.groovy               |    27 +
 .../weldAware/src/main/webapp/WEB-INF/beans.xml    |     0
 .../src/main/webapp/WEB-INF/faces-config.xml       |    85 +
 .../src/main/webapp/WEB-INF/glassfish-web.xml      |    11 +
 .../src/main/webapp/WEB-INF/groovy-taglib.xml      |    74 +
 .../WEB-INF/groovy/hello/AgeComponent.groovy       |    10 +
 .../webapp/WEB-INF/groovy/hello/HelloBean.groovy   |    32 +
 .../WEB-INF/groovy/hello/MessageOutput.groovy      |    20 +
 .../WEB-INF/groovy/hello/MessageRenderer.groovy    |    38 +
 .../WEB-INF/groovy/hello/NameConverter.groovy      |    29 +
 .../WEB-INF/groovy/hello/NameValidator.groovy      |    22 +
 .../weldAware/src/main/webapp/WEB-INF/web.xml      |    88 +
 test/groovy/weldAware/src/main/webapp/hello.xhtml  |    27 +
 test/groovy/weldAware/src/main/webapp/submit.xhtml |    21 +
 .../faces/test/groovy/weldAware/Issue3005IT.java   |   102 +
 test/javaee6/pom.xml                               |    66 +
 .../resource/cacheLastMod/ear/nbactions.xml        |   163 +
 test/javaee6/resource/cacheLastMod/ear/pom.xml     |    95 +
 test/javaee6/resource/cacheLastMod/jar/pom.xml     |    59 +
 .../main/java/util/jsf/CustomResourceResolver.java |    32 +
 .../resources/META-INF/resources/other-styles.css  |     4 +
 .../main/resources/META-INF/resources/styles.css   |     4 +
 .../resources/META-INF/resources/template.xhtml    |    26 +
 .../src/main/resources/META-INF/resources/test.js  |     5 +
 test/javaee6/resource/cacheLastMod/pom.xml         |    62 +
 .../resource/cacheLastMod/war-test/nbactions.xml   |   163 +
 .../javaee6/resource/cacheLastMod/war-test/pom.xml |    70 +
 .../resource/cacheLastMod/wartest/Issue2895IT.java |    97 +
 test/javaee6/resource/cacheLastMod/war/pom.xml     |    73 +
 .../war/src/main/webapp/WEB-INF/faces-config.xml   |     7 +
 .../war/src/main/webapp/WEB-INF/web.xml            |    33 +
 .../cacheLastMod/war/src/main/webapp/index.xhtml   |    27 +
 test/javaee6/resource/pom.xml                      |    59 +
 test/javaee6web/ajax/pom.xml                       |    62 +
 .../ajax/ProgrammaticClientBehaviorBean.java       |    84 +
 .../ajax/src/main/webapp/WEB-INF/beans.xml         |     6 +
 .../ajax/src/main/webapp/WEB-INF/glassfish-web.xml |    15 +
 .../ajax/src/main/webapp/WEB-INF/web.xml           |    75 +
 .../main/webapp/programmaticClientBehavior.xhtml   |    60 +
 .../faces/test/javaee6web/ajax/Issue2674IT.java    |    77 +
 test/javaee6web/el/basic/nbactions.xml             |    96 +
 test/javaee6web/el/basic/pom.xml                   |    63 +
 .../el/basic/ExceptionSwallowedBean.java           |    74 +
 .../test/javaee6web/el/basic/ViewExpiredBean.java  |    67 +
 .../el/basic/src/main/webapp/WEB-INF/beans.xml     |     6 +
 .../src/main/webapp/WEB-INF/glassfish-web.xml      |    11 +
 .../el/basic/src/main/webapp/WEB-INF/web.xml       |    75 +
 .../webapp/abortDuringMethodExpressionEL.xhtml     |    49 +
 .../webapp/exceptionDuringMethodExpressionEL.xhtml |    49 +
 .../main/webapp/exceptionDuringValueChangeEL.xhtml |    49 +
 .../el/basic/src/main/webapp/index.xhtml           |    55 +
 .../el/basic/src/main/webapp/viewExpired.xhtml     |    17 +
 .../test/javaee6web/el/basic/Issue2397IT.java      |    90 +
 .../test/javaee6web/el/basic/Issue3194IT.java      |    98 +
 test/javaee6web/el/pom.xml                         |    59 +
 test/javaee6web/pom.xml                            |    70 +
 test/javaee7/action/basic/pom.xml                  |    63 +
 .../faces/test/javaee7/action/basic/BasicBean.java |    86 +
 .../action/basic/src/main/webapp/WEB-INF/beans.xml |     7 +
 .../basic/src/main/webapp/WEB-INF/faces-config.xml |    52 +
 .../src/main/webapp/WEB-INF/glassfish-web.xml      |    11 +
 .../action/basic/src/main/webapp/WEB-INF/web.xml   |    86 +
 .../action/basic/src/main/webapp/exact.xhtml       |    13 +
 .../action/basic/src/main/webapp/extension.xhtml   |    14 +
 .../action/basic/src/main/webapp/form1.xhtml       |    14 +
 .../action/basic/src/main/webapp/form1b.xhtml      |    14 +
 .../action/basic/src/main/webapp/prefix.xhtml      |    13 +
 .../test/javaee7/action/basic/Issue3136IT.java     |   103 +
 test/javaee7/action/pom.xml                        |    58 +
 .../beanValidation/methodValidation/nbactions.xml  |   163 +
 .../beanValidation/methodValidation/pom.xml        |    60 +
 .../methodValidator/FooConstraint.java             |    64 +
 .../methodValidator/FooConstraintValidator.java    |    63 +
 .../methodValidator/HelloService.java              |    54 +
 .../beanValidator/methodValidator/UserBean.java    |    60 +
 .../src/main/webapp/WEB-INF/beans.xml              |     6 +
 .../src/main/webapp/WEB-INF/glassfish-web.xml      |    11 +
 .../src/main/webapp/WEB-INF/web.xml                |    69 +
 .../methodValidation/src/main/webapp/index.xhtml   |    72 +
 .../methodValidator/MethodValidatorIT.java         |   122 +
 test/javaee7/beanValidation/pom.xml                |    56 +
 test/javaee7/cdi/beanValidatorCdi/nbactions.xml    |   163 +
 test/javaee7/cdi/beanValidatorCdi/pom.xml          |    62 +
 .../cdi/beanValidatorCdi/FooConstraint.java        |    64 +
 .../beanValidatorCdi/FooConstraintValidator.java   |    66 +
 .../javaee7/cdi/beanValidatorCdi/UserBean.java     |    93 +
 .../src/main/webapp/WEB-INF/beans.xml              |     6 +
 .../src/main/webapp/WEB-INF/glassfish-web.xml      |    15 +
 .../src/main/webapp/WEB-INF/web.xml                |    69 +
 .../beanValidatorCdi/src/main/webapp/index.xhtml   |    56 +
 .../javaee7/cdi/beanValidatorCdi/Issue3014IT.java  |    80 +
 test/javaee7/cdi/initDestroy/nbactions.xml         |    69 +
 test/javaee7/cdi/initDestroy/pom.xml               |    63 +
 .../test/javaee7/cdi/initDestroy/AppBean.java      |    69 +
 .../test/javaee7/cdi/initDestroy/FlowLogger.java   |    76 +
 .../javaee7/cdi/initDestroy/SessionLogger.java     |    76 +
 .../javaee7/cdi/initDestroy/SimplestFlowBean.java  |    63 +
 .../test/javaee7/cdi/initDestroy/UserBean.java     |   175 +
 .../javaee7/cdi/initDestroy/ViewScopedBean.java    |    58 +
 .../javaee7/cdi/initDestroy/ViewScopedLogger.java  |    74 +
 .../cdi/initDestroy/issue2997/Issue2997Bean.java   |    78 +
 .../src/main/webapp/01_simplest-return.xhtml       |    21 +
 .../main/webapp/01_simplest/01_simplest-flow.xml   |     0
 .../src/main/webapp/01_simplest/01_simplest.xhtml  |    26 +
 .../src/main/webapp/01_simplest/a.xhtml            |    21 +
 .../initDestroy/src/main/webapp/WEB-INF/beans.xml  |     7 +
 .../src/main/webapp/WEB-INF/faces-config.xml       |    19 +
 .../src/main/webapp/WEB-INF/glassfish-web.xml      |    15 +
 .../initDestroy/src/main/webapp/WEB-INF/web.xml    |    69 +
 .../flow-with-templates-flow.xml                   |     0
 .../flow-with-templates/flow-with-templates.xhtml  |    24 +
 .../main/webapp/flow-with-templates/page02.xhtml   |    24 +
 .../cdi/initDestroy/src/main/webapp/index.xhtml    |    67 +
 .../src/main/webapp/issue2997Home.xhtml            |    17 +
 .../main/webapp/issue2997PageInFacesConfig.xhtml   |    17 +
 .../src/main/webapp/issue2997UserList.xhtml        |    17 +
 .../cdi/initDestroy/src/main/webapp/page02.xhtml   |    55 +
 .../main/webapp/resources/templates/cssLayout.css  |    61 +
 .../main/webapp/resources/templates/default.css    |    29 +
 .../main/webapp/templates/issue2997-template.xhtml |    38 +
 .../initDestroy/src/main/webapp/viewScoped01.xhtml |    60 +
 .../initDestroy/src/main/webapp/viewScoped02.xhtml |    56 +
 .../test/javaee7/cdi/initDestroy/Issue2948IT.java  |   114 +
 .../test/javaee7/cdi/initDestroy/Issue2997IT.java  |   123 +
 .../multi-tenant/cdi-app-sets-tccl/nbactions.xml   |    69 +
 .../cdi/multi-tenant/cdi-app-sets-tccl/pom.xml     |    60 +
 .../multi_tenant/app_sets_tccl/BeforeFilter.java   |   165 +
 .../multi_tenant/app_sets_tccl/UserBean.java       |    92 +
 .../src/main/webapp/WEB-INF/beans.xml              |     0
 .../src/main/webapp/WEB-INF/glassfish-web.xml      |    11 +
 .../src/main/webapp/WEB-INF/web.xml                |    77 +
 .../cdi-app-sets-tccl/src/main/webapp/index.xhtml  |    66 +
 .../multi_tenant/app_sets_tccl/Issue3341IT.java    |   112 +
 .../cdi-jsp-only-app-sets-tccl/nbactions.xml       |    69 +
 .../cdi-jsp-only-app-sets-tccl/pom.xml             |    83 +
 .../cdi_jsp_only_app_sets_tccl/BeforeFilter.java   |   120 +
 .../cdi_jsp_only_app_sets_tccl/UserBean.java       |    92 +
 .../src/main/webapp/WEB-INF/beans.xml              |     0
 .../src/main/webapp/WEB-INF/glassfish-web.xml      |    11 +
 .../src/main/webapp/WEB-INF/web.xml                |    55 +
 .../src/main/webapp/index.jsp                      |    20 +
 .../cdi_jsp_only_app_sets_tccl/Issue3341IT.java    |   115 +
 test/javaee7/cdi/multi-tenant/pom.xml              |    60 +
 test/javaee7/cdi/noBeansXml/nbactions.xml          |   163 +
 test/javaee7/cdi/noBeansXml/pom.xml                |    63 +
 .../javaee7/cdi/noBeansXml/SimplestFlowBean.java   |    63 +
 .../src/main/webapp/01_simplest-return.xhtml       |    21 +
 .../main/webapp/01_simplest/01_simplest-flow.xml   |     0
 .../src/main/webapp/01_simplest/01_simplest.xhtml  |    21 +
 .../noBeansXml/src/main/webapp/01_simplest/a.xhtml |    21 +
 .../src/main/webapp/WEB-INF/glassfish-web.xml      |    15 +
 .../cdi/noBeansXml/src/main/webapp/WEB-INF/web.xml |    69 +
 .../cdi/noBeansXml/src/main/webapp/index.xhtml     |    57 +
 .../test/javaee7/cdi/noBeansXml/NoBeansXmlIT.java  |    88 +
 test/javaee7/cdi/pom.xml                           |    62 +
 test/javaee7/el/basicLambda/nbactions.xml          |   163 +
 test/javaee7/el/basicLambda/pom.xml                |    65 +
 .../faces/test/javaee7/el/basicLambda/Book.java    |    75 +
 .../javaee7/el/basicLambda/BookTableBacking.java   |    65 +
 .../faces/test/javaee7/el/basicLambda/Library.java |    70 +
 .../src/main/webapp/WEB-INF/glassfish-web.xml      |    10 +
 .../el/basicLambda/src/main/webapp/WEB-INF/web.xml |    69 +
 .../el/basicLambda/src/main/webapp/bookTable.xhtml |    69 +
 .../el/basicLambda/src/main/webapp/index.xhtml     |    63 +
 .../test/javaee7/el/basicLambda/BasicLambdaIT.java |   106 +
 test/javaee7/el/pom.xml                            |    56 +
 test/javaee7/facelets/pom.xml                      |    59 +
 test/javaee7/facelets/ui/nbactions.xml             |    31 +
 test/javaee7/facelets/ui/pom.xml                   |    57 +
 .../javaee7/facelets/ui/SessionController.java     |    66 +
 .../ui/src/main/webapp/WEB-INF/glassfish-web.xml   |    11 +
 .../webapp/WEB-INF/templates/foo/template.xhtml    |    26 +
 .../facelets/ui/src/main/webapp/WEB-INF/web.xml    |    69 +
 .../facelets/ui/src/main/webapp/index.xhtml        |    57 +
 .../ui/src/main/webapp/resources/css/cssLayout.css |    61 +
 .../ui/src/main/webapp/resources/css/default.css   |    29 +
 .../javaee7/facelets/ui/VerifyTemplateUIIT.java    |    80 +
 test/javaee7/pom.xml                               |    74 +
 test/performance/pom.xml                           |   202 +
 .../sun/faces/test/performance/Issue2413Bean.java  |    55 +
 .../src/main/webapp/WEB-INF/glassfish-web.xml      |    16 +
 test/performance/src/main/webapp/WEB-INF/web.xml   |    24 +
 test/performance/src/main/webapp/index.html        |    10 +
 test/performance/src/main/webapp/issue2413.xhtml   |    25 +
 .../src/test/jmeter/0001-index-page.jmx            |    85 +
 .../src/test/jmeter/0002-issue-2413.jmx            |   188 +
 test/pom.xml                                       |   879 ++
 test/protocolaware/flash/basic/nbactions.xml       |    19 +
 test/protocolaware/flash/basic/pom.xml             |    63 +
 .../src/main/webapp/WEB-INF/glassfish-web.xml      |    11 +
 .../flash/basic/src/main/webapp/WEB-INF/web.xml    |    69 +
 .../flash/basic/src/main/webapp/flash01.xhtml      |    81 +
 .../flash/basic/src/main/webapp/flash02.xhtml      |    68 +
 .../flash/basic/FlashViewParamIT.java              |   127 +
 test/protocolaware/flash/pom.xml                   |    59 +
 test/protocolaware/pom.xml                         |   120 +
 test/quality/findbugs-exclude.xml                  |   130 +
 test/quality/pmd-ruleset.xml                       |    25 +
 test/quality/pom.xml                               |   251 +
 test/quality/src/checkstyle/config.xml             |   163 +
 test/selenium/agnostic/pom.xml                     |    62 +
 test/selenium/agnostic/shared/pom.xml              |    64 +
 .../src/main/webapp/WEB-INF/glassfish-web.xml      |    11 +
 .../agnostic/shared/src/main/webapp/index.jsp      |    17 +
 .../agnostic/shared/src/main/webapp/simple.jsp     |    15 +
 .../faces/test/selenium/shared/IndexPageIT.java    |    56 +
 test/selenium/pom.xml                              |   121 +
 test/servlet30/ajax/nbactions.xml                  |   190 +
 test/servlet30/ajax/pom.xml                        |    63 +
 .../test/servlet30/ajax/AjaxRedirectBean.java      |    82 +
 .../sun/faces/test/servlet30/ajax/AjaxTable.java   |   100 +
 .../com/sun/faces/test/servlet30/ajax/Bean.java    |   117 +
 .../servlet30/ajax/ButtonOnlySubmitsOneBean.java   |    76 +
 .../test/servlet30/ajax/DivInCompositeBean.java    |    58 +
 .../sun/faces/test/servlet30/ajax/EchoBean.java    |    64 +
 .../faces/test/servlet30/ajax/GreetBehavior.java   |   123 +
 .../sun/faces/test/servlet30/ajax/InsertBean.java  |   102 +
 .../faces/test/servlet30/ajax/Issue1533Bean.java   |   110 +
 .../faces/test/servlet30/ajax/Issue1581Bean.java   |    73 +
 .../faces/test/servlet30/ajax/Issue1581Bug.java    |    76 +
 .../faces/test/servlet30/ajax/Issue1817Bean.java   |    66 +
 .../faces/test/servlet30/ajax/Issue1817Item.java   |    32 +
 .../faces/test/servlet30/ajax/Issue2041Bean.java   |    63 +
 .../faces/test/servlet30/ajax/Issue2162Bean.java   |    67 +
 .../test/servlet30/ajax/Issue2179Component1.java   |    64 +
 .../test/servlet30/ajax/Issue2179Component2.java   |    63 +
 .../faces/test/servlet30/ajax/Issue2500Bean.java   |   111 +
 .../faces/test/servlet30/ajax/Issue2578Bean.java   |   133 +
 .../faces/test/servlet30/ajax/Issue2636Bean.java   |    74 +
 .../faces/test/servlet30/ajax/Issue2648Bean.java   |    95 +
 .../faces/test/servlet30/ajax/Issue2666Bean.java   |    89 +
 .../faces/test/servlet30/ajax/Issue2674Bean.java   |    87 +
 .../faces/test/servlet30/ajax/Issue2682Bean.java   |    76 +
 .../faces/test/servlet30/ajax/Issue2906Bean.java   |    79 +
 .../faces/test/servlet30/ajax/Issue3020Bean.java   |    86 +
 .../test/servlet30/ajax/LegendWithoutIdBean.java   |    19 +
 .../faces/test/servlet30/ajax/MultiPart1Bean.java  |    73 +
 .../sun/faces/test/servlet30/ajax/SelectBean.java  |    79 +
 .../sun/faces/test/servlet30/ajax/UpdateBean.java  |   237 +
 .../test/servlet30/ajax/ViewExpired1Bean.java      |    65 +
 .../faces/test/servlet30/ajax/ViewScopeBean.java   |    77 +
 .../faces/test/servlet30/ajax/ViewState1Bean.java  |    68 +
 .../test/servlet30/ajax/filter/BeforeFilter.java   |   122 +
 .../src/main/webapp/WEB-INF/behavior-taglib.xml    |    58 +
 .../ajax/src/main/webapp/WEB-INF/glassfish-web.xml |    11 +
 .../ajax/src/main/webapp/WEB-INF/taglib.xml        |    64 +
 .../servlet30/ajax/src/main/webapp/WEB-INF/web.xml |    42 +
 .../ajax/src/main/webapp/ajaxProjectStage.xhtml    |    65 +
 .../ajax/src/main/webapp/ajaxRedirect01.xhtml      |    27 +
 .../ajax/src/main/webapp/ajaxRedirect02.html       |    51 +
 .../src/main/webapp/attributeNameIsChecked.xhtml   |    62 +
 .../src/main/webapp/attributeNameIsClass.xhtml     |    62 +
 .../src/main/webapp/attributeNameIsDisabled.xhtml  |    62 +
 .../ajax/src/main/webapp/attributeNameIsOn.xhtml   |    81 +
 .../src/main/webapp/attributeNameIsReadonly.xhtml  |    62 +
 .../src/main/webapp/attributeNameIsValue.xhtml     |    62 +
 test/servlet30/ajax/src/main/webapp/body.xhtml     |    16 +
 .../src/main/webapp/buttonOnlySubmitsOne.xhtml     |    20 +
 .../ajax/src/main/webapp/commandLinkRadio.xhtml    |    65 +
 .../ajax/src/main/webapp/disabledBehaviors.xhtml   |    77 +
 .../ajax/src/main/webapp/divInComposite.xhtml      |    66 +
 .../ajax/src/main/webapp/dupViewState.xhtml        |    83 +
 .../src/main/webapp/exceptionDuringRender.xhtml    |    83 +
 test/servlet30/ajax/src/main/webapp/index.xhtml    |    13 +
 .../ajax/src/main/webapp/insertElement.xhtml       |    68 +
 .../servlet30/ajax/src/main/webapp/issue1284.xhtml |    70 +
 .../servlet30/ajax/src/main/webapp/issue1533.xhtml |    23 +
 .../servlet30/ajax/src/main/webapp/issue1581.xhtml |    70 +
 .../servlet30/ajax/src/main/webapp/issue1817.xhtml |   113 +
 .../servlet30/ajax/src/main/webapp/issue1825.xhtml |    64 +
 .../servlet30/ajax/src/main/webapp/issue1957.xhtml |    83 +
 .../ajax/src/main/webapp/issue2041-page1.xhtml     |    13 +
 .../ajax/src/main/webapp/issue2041-page2.xhtml     |    19 +
 .../servlet30/ajax/src/main/webapp/issue2041.xhtml |     9 +
 .../servlet30/ajax/src/main/webapp/issue2162.xhtml |    65 +
 .../ajax/src/main/webapp/issue2179-page1.xhtml     |    65 +
 .../ajax/src/main/webapp/issue2179-page2.xhtml     |    85 +
 .../servlet30/ajax/src/main/webapp/issue2574.xhtml |    74 +
 .../servlet30/ajax/src/main/webapp/issue2578.xhtml |    68 +
 .../servlet30/ajax/src/main/webapp/issue2636.xhtml |    78 +
 .../ajax/src/main/webapp/issue2648-1.xhtml         |    54 +
 .../ajax/src/main/webapp/issue2648-2.xhtml         |    50 +
 .../servlet30/ajax/src/main/webapp/issue2648.xhtml |    62 +
 .../servlet30/ajax/src/main/webapp/issue2666.xhtml |    76 +
 .../servlet30/ajax/src/main/webapp/issue2674.xhtml |    61 +
 .../servlet30/ajax/src/main/webapp/issue2682.xhtml |    65 +
 .../servlet30/ajax/src/main/webapp/issue2754.xhtml |    60 +
 .../servlet30/ajax/src/main/webapp/issue2767.xhtml |    65 +
 .../servlet30/ajax/src/main/webapp/issue2906.xhtml |    70 +
 .../servlet30/ajax/src/main/webapp/issue2927.xhtml |    89 +
 .../servlet30/ajax/src/main/webapp/issue2978.xhtml |   150 +
 .../ajax/src/main/webapp/issue3020Negative.xhtml   |    70 +
 .../ajax/src/main/webapp/issue3020Positive.xhtml   |    70 +
 test/servlet30/ajax/src/main/webapp/issue939.xhtml |    70 +
 .../ajax/src/main/webapp/legendWithoutId.xhtml     |    24 +
 .../ajax/src/main/webapp/multiPart1.xhtml          |    17 +
 .../ajax/src/main/webapp/multiPart1b.xhtml         |    11 +
 .../webapp/resources/ajaxRedirect/ajaxRedirect.js  |    63 +
 .../src/main/webapp/resources/composite/cc.xhtml   |    59 +
 .../resources/composite/ccAttrRequired.xhtml       |    59 +
 .../resources/composite/compositeControl.xhtml     |    21 +
 .../resources/divInComposite/component.xhtml       |    15 +
 .../ajax/src/main/webapp/resources/echo1.js        |    61 +
 .../webapp/resources/issue1825/issue1825.xhtml     |    55 +
 test/servlet30/ajax/src/main/webapp/script.xhtml   |    77 +
 .../ajax/src/main/webapp/scriptQuote.xhtml         |    62 +
 .../src/main/webapp/selectBooleanCheckbox.xhtml    |    63 +
 .../webapp/selectManyCheckboxIdsInComposite.xhtml  |    74 +
 .../webapp/selectManyCheckboxInComposite.xhtml     |    74 +
 .../webapp/selectManyCheckboxNoComposite.xhtml     |    70 +
 .../src/main/webapp/selectOneMenuDataTable.xhtml   |    96 +
 .../main/webapp/selectOneRadioIdsInComposite.xhtml |    74 +
 .../main/webapp/selectOneRadioInComposite.xhtml    |    74 +
 .../main/webapp/selectOneRadioNoComposite.xhtml    |    70 +
 .../ajax/src/main/webapp/templates/issue2041.xhtml |    18 +
 .../ajax/src/main/webapp/updateBody.xhtml          |    61 +
 .../ajax/src/main/webapp/viewExpired1.xhtml        |    32 +
 .../servlet30/ajax/src/main/webapp/viewScope.xhtml |    86 +
 .../ajax/src/main/webapp/viewState1.xhtml          |    27 +
 .../sun/faces/test/servlet30/ajax/Issue1284IT.java |   104 +
 .../sun/faces/test/servlet30/ajax/Issue1533IT.java |    84 +
 .../sun/faces/test/servlet30/ajax/Issue1581IT.java |   118 +
 .../sun/faces/test/servlet30/ajax/Issue1781IT.java |    85 +
 .../sun/faces/test/servlet30/ajax/Issue1817IT.java |    81 +
 .../sun/faces/test/servlet30/ajax/Issue1825IT.java |    81 +
 .../sun/faces/test/servlet30/ajax/Issue1957IT.java |    94 +
 .../sun/faces/test/servlet30/ajax/Issue2041IT.java |    91 +
 .../sun/faces/test/servlet30/ajax/Issue2162IT.java |    86 +
 .../sun/faces/test/servlet30/ajax/Issue2179IT.java |   104 +
 .../sun/faces/test/servlet30/ajax/Issue2255IT.java |    89 +
 .../sun/faces/test/servlet30/ajax/Issue2340IT.java |   104 +
 .../sun/faces/test/servlet30/ajax/Issue2381IT.java |    89 +
 .../sun/faces/test/servlet30/ajax/Issue2407IT.java |    88 +
 .../sun/faces/test/servlet30/ajax/Issue2408IT.java |   273 +
 .../sun/faces/test/servlet30/ajax/Issue2421IT.java |    92 +
 .../sun/faces/test/servlet30/ajax/Issue2422IT.java |    95 +
 .../sun/faces/test/servlet30/ajax/Issue2439IT.java |    94 +
 .../sun/faces/test/servlet30/ajax/Issue2443IT.java |    86 +
 .../sun/faces/test/servlet30/ajax/Issue2456IT.java |    88 +
 .../sun/faces/test/servlet30/ajax/Issue2461IT.java |    90 +
 .../sun/faces/test/servlet30/ajax/Issue2479IT.java |   102 +
 .../sun/faces/test/servlet30/ajax/Issue2500IT.java |    95 +
 .../sun/faces/test/servlet30/ajax/Issue2574IT.java |    90 +
 .../sun/faces/test/servlet30/ajax/Issue2578IT.java |   103 +
 .../sun/faces/test/servlet30/ajax/Issue2636IT.java |   104 +
 .../sun/faces/test/servlet30/ajax/Issue2648IT.java |    79 +
 .../sun/faces/test/servlet30/ajax/Issue2666IT.java |    80 +
 .../sun/faces/test/servlet30/ajax/Issue2674IT.java |    84 +
 .../sun/faces/test/servlet30/ajax/Issue2682IT.java |    92 +
 .../sun/faces/test/servlet30/ajax/Issue2697IT.java |    83 +
 .../sun/faces/test/servlet30/ajax/Issue2749IT.java |    90 +
 .../sun/faces/test/servlet30/ajax/Issue2750IT.java |   110 +
 .../sun/faces/test/servlet30/ajax/Issue2751IT.java |    91 +
 .../sun/faces/test/servlet30/ajax/Issue2752IT.java |    96 +
 .../sun/faces/test/servlet30/ajax/Issue2754IT.java |    84 +
 .../sun/faces/test/servlet30/ajax/Issue2767IT.java |   104 +
 .../sun/faces/test/servlet30/ajax/Issue2906IT.java |   117 +
 .../sun/faces/test/servlet30/ajax/Issue2969IT.java |    73 +
 .../sun/faces/test/servlet30/ajax/Issue3020IT.java |   104 +
 .../sun/faces/test/servlet30/ajax/Issue3097IT.java |    89 +
 .../sun/faces/test/servlet30/ajax/Issue3106IT.java |    86 +
 .../sun/faces/test/servlet30/ajax/Issue3171IT.java |    92 +
 .../sun/faces/test/servlet30/ajax/Issue3261IT.java |    82 +
 .../sun/faces/test/servlet30/ajax/Issue3344IT.java |    78 +
 .../sun/faces/test/servlet30/ajax/Issue3351IT.java |    81 +
 .../sun/faces/test/servlet30/ajax/Issue939IT.java  |   141 +
 .../sun/faces/test/servlet30/ajax/Spec1296IT.java  |    74 +
 .../sun/faces/test/servlet30/ajax/Spec220IT.java   |    91 +
 test/servlet30/component/pom.xml                   |    62 +
 .../servlet30/component/CreateComponentBean.java   |    71 +
 .../servlet30/component/ListenerComponent.java     |    64 +
 .../servlet30/component/ListenersComponent.java    |    71 +
 .../component/ResourceDependencyBean.java          |    69 +
 .../component/ResourceDependencyRenderer.java      |    60 +
 .../main/webapp/WEB-INF/eventListener.taglib.xml   |    61 +
 .../src/main/webapp/WEB-INF/faces-config.xml       |    56 +
 .../src/main/webapp/WEB-INF/glassfish-web.xml      |    11 +
 .../webapp/WEB-INF/resourceDependency.taglib.xml   |    57 +
 .../component/src/main/webapp/WEB-INF/web.xml      |    73 +
 .../src/main/webapp/componentEndlessLoop.xhtml     |    62 +
 .../src/main/webapp/createComponent.xhtml          |    56 +
 .../component/src/main/webapp/eventListener.xhtml  |    66 +
 .../src/main/webapp/resourceDependency.xhtml       |    59 +
 .../resourceDependency/resourceDependency.js       |     4 +
 .../test/servlet30/component/Issue2544IT.java      |    78 +
 .../test/servlet30/component/Issue2740IT.java      |    74 +
 .../test/servlet30/component/Issue3319IT.java      |    83 +
 .../faces/test/servlet30/component/Spec599IT.java  |    70 +
 test/servlet30/composite/pom.xml                   |    63 +
 .../test/servlet30/composite/Action3Bean.java      |    66 +
 .../faces/test/servlet30/composite/ActionBean.java |    69 +
 .../test/servlet30/composite/ActionSourceBean.java |    84 +
 .../servlet30/composite/AttributeTypeBean.java     |    95 +
 .../composite/AttributeTypeComponent.java          |    53 +
 .../faces/test/servlet30/composite/BasicBean.java  |    63 +
 .../test/servlet30/composite/CompositeBean.java    |    93 +
 .../test/servlet30/composite/ConverterBean.java    |    77 +
 .../sun/faces/test/servlet30/composite/IfBean.java |    55 +
 .../test/servlet30/composite/Issue1943Bean.java    |    42 +
 .../test/servlet30/composite/Issue2176Bean.java    |   101 +
 .../composite/Issue2320PhaseListener.java          |    68 +
 .../servlet30/composite/PreRenderViewBean.java     |    70 +
 .../composite/PreRenderViewComponent1.java         |    98 +
 .../composite/PreRenderViewComponent2.java         |    95 +
 .../composite/PreRenderViewComponentBase.java      |   128 +
 .../servlet30/composite/PreRenderViewDataItem.java |    57 +
 .../composite/ProgrammaticComponentBean.java       |    74 +
 .../servlet30/composite/ValidatorComponent.java    |    54 +
 .../src/main/webapp/WEB-INF/faces-config.xml       |    10 +
 .../src/main/webapp/WEB-INF/glassfish-web.xml      |    11 +
 .../composite/src/main/webapp/WEB-INF/web.xml      |    33 +
 .../composite/src/main/webapp/action/action1.xhtml |    61 +
 .../composite/src/main/webapp/action/action2.xhtml |    63 +
 .../composite/src/main/webapp/action/action3.xhtml |    55 +
 .../main/webapp/actionSource/actionSource1.xhtml   |    71 +
 .../src/main/webapp/attribute/attribute1.xhtml     |    18 +
 .../src/main/webapp/attribute/attribute2.xhtml     |    29 +
 .../src/main/webapp/attribute/attributeType.xhtml  |    32 +
 .../src/main/webapp/attribute/issue2176.xhtml      |    68 +
 .../webapp/basic/isInsideCompositeComponent.xhtml  |    58 +
 .../webapp/basic/isInsideCompositeComponent2.xhtml |    60 +
 .../composite/src/main/webapp/basic/simple1.xhtml  |    18 +
 .../composite/src/main/webapp/basic/simple2.xhtml  |    18 +
 .../composite/src/main/webapp/basic/simple3.xhtml  |    18 +
 .../composite/src/main/webapp/choose/choose1.xhtml |    18 +
 .../src/main/webapp/choose/choose1b.xhtml          |    18 +
 .../composite/src/main/webapp/choose/choose2.xhtml |    18 +
 .../src/main/webapp/choose/choose2b.xhtml          |    18 +
 .../src/main/webapp/compositePartialState.xhtml    |    18 +
 .../src/main/webapp/converter/converter1.xhtml     |    69 +
 .../composite/src/main/webapp/define/define1.xhtml |    12 +
 .../composite/src/main/webapp/if/if1.xhtml         |    18 +
 .../composite/src/main/webapp/if/if2.xhtml         |    18 +
 .../src/main/webapp/include/include1-some.xhtml    |    50 +
 .../src/main/webapp/include/include1.xhtml         |    65 +
 test/servlet30/composite/src/main/webapp/index.jsp |    66 +
 .../composite/src/main/webapp/input/input1.xhtml   |    22 +
 .../webapp/insertChildren/insertChildren1.xhtml    |    26 +
 .../webapp/insertChildren/insertChildren2.xhtml    |    18 +
 .../webapp/insertChildren/insertChildren3.xhtml    |    23 +
 .../webapp/insertChildren/insertChildren4.xhtml    |    21 +
 .../src/main/webapp/insertFacet/insertFacet1.xhtml |    29 +
 .../src/main/webapp/insertFacet/insertFacet2.xhtml |    29 +
 .../src/main/webapp/issue1943-action.xhtml         |    17 +
 .../composite/src/main/webapp/issue1943.xhtml      |    18 +
 .../composite/src/main/webapp/issue2035.xhtml      |    62 +
 .../composite/src/main/webapp/issue2035b.xhtml     |    62 +
 .../composite/src/main/webapp/issue2320.xhtml      |    72 +
 .../composite/src/main/webapp/link/link1.xhtml     |    16 +
 .../composite/src/main/webapp/nested/nested1.xhtml |    18 +
 .../composite/src/main/webapp/nested/nested2.xhtml |    18 +
 .../composite/src/main/webapp/nested/nested3.xhtml |    18 +
 .../webapp/outputStylesheet/outputStylesheet.xhtml |    65 +
 .../composite/src/main/webapp/preRenderView.xhtml  |    65 +
 .../src/main/webapp/programmaticComponent.xhtml    |    49 +
 .../src/main/webapp/renderFacet/renderFacet1.xhtml |    29 +
 .../src/main/webapp/renderFacet/renderFacet2.xhtml |    63 +
 .../renderFacet/renderFacetDuplicateId.xhtml       |   120 +
 .../src/main/webapp/resources/action/action1.xhtml |    62 +
 .../src/main/webapp/resources/action/action2.xhtml |    65 +
 .../main/webapp/resources/action/action2b.xhtml    |    58 +
 .../src/main/webapp/resources/action/action3.xhtml |    64 +
 .../webapp/resources/action/actionButton.xhtml     |    16 +
 .../resources/actionSource/actionSource1.xhtml     |    57 +
 .../webapp/resources/attribute/attribute1.xhtml    |    22 +
 .../webapp/resources/attribute/attribute2.xhtml    |    16 +
 .../webapp/resources/attribute/attributeType.xhtml |    44 +
 .../webapp/resources/attribute/issue2176.xhtml     |    57 +
 .../basic/isInsideCompositeComponent.xhtml         |    59 +
 .../basic/isInsideCompositeComponent2.xhtml        |    58 +
 .../src/main/webapp/resources/choose/choose1.xhtml |    21 +
 .../src/main/webapp/resources/choose/choose2.xhtml |    15 +
 .../main/webapp/resources/choose/choose2b.xhtml    |    21 +
 .../webapp/resources/converter/converter1.xhtml    |    60 +
 .../src/main/webapp/resources/define/define1.xhtml |    21 +
 .../webapp/resources/form/formAndComposite1.xhtml  |    16 +
 .../webapp/resources/form/formAndComposite2.xhtml  |    16 +
 .../src/main/webapp/resources/if/if1.xhtml         |    16 +
 .../src/main/webapp/resources/if/if2.xhtml         |    16 +
 .../main/webapp/resources/include/include1.xhtml   |    61 +
 .../main/webapp/resources/include/include1a.xhtml  |    55 +
 .../main/webapp/resources/include/include1b.xhtml  |    55 +
 .../src/main/webapp/resources/input/input1.xhtml   |    14 +
 .../resources/insertChildren/insertChildren1.xhtml |    13 +
 .../resources/insertChildren/insertChildren2.xhtml |    23 +
 .../resources/insertChildren/insertChildren3.xhtml |    23 +
 .../resources/insertChildren/insertChildren4.xhtml |    23 +
 .../insertChildren/insertChildren4b.xhtml          |    16 +
 .../resources/insertFacet/insertFacet1.xhtml       |    16 +
 .../resources/insertFacet/insertFacet2.xhtml       |    18 +
 .../resources/insertFacet/insertFacet2b.xhtml      |    14 +
 .../webapp/resources/issue1943/issue1943.xhtml     |    25 +
 .../webapp/resources/issue1943/issue1943b.xhtml    |    20 +
 .../webapp/resources/issue1943/issue1943c.xhtml    |    15 +
 .../webapp/resources/issue2035/issue2035.xhtml     |    55 +
 .../webapp/resources/issue2320/issue2320.xhtml     |    55 +
 .../src/main/webapp/resources/link/link1.xhtml     |    15 +
 .../src/main/webapp/resources/nested/nested1.xhtml |    21 +
 .../src/main/webapp/resources/nested/nested2.xhtml |    21 +
 .../src/main/webapp/resources/nested/nested3.xhtml |    21 +
 .../main/webapp/resources/nested/nestedForm1.xhtml |    21 +
 .../main/webapp/resources/nested/nestedForm2.xhtml |    21 +
 .../outputStylesheet/outputStylesheet1.xhtml       |    52 +
 .../resources/preRenderView/component1.xhtml       |    62 +
 .../resources/preRenderView/component2.xhtml       |    60 +
 .../resources/preRenderView/preRenderView.css      |    75 +
 .../programmatic/programmaticComponent.xhtml       |    17 +
 .../resources/renderFacet/renderFacet1.xhtml       |    13 +
 .../resources/renderFacet/renderFacet2.xhtml       |    63 +
 .../resources/renderFacet/renderFacet2b.xhtml      |    59 +
 .../renderFacet/renderFacetDuplicateId.xhtml       |    76 +
 .../src/main/webapp/resources/simple/simple1.xhtml |    14 +
 .../src/main/webapp/resources/simple/simple2.xhtml |    21 +
 .../src/main/webapp/resources/simple/simple3.xhtml |    21 +
 .../resources/validator/validatorComponent.xhtml   |    19 +
 .../src/main/webapp/templates/define1.xhtml        |    18 +
 .../main/webapp/validator/validatorComponent.xhtml |    18 +
 .../test/servlet30/composite/AttributeIT.java      |    79 +
 .../faces/test/servlet30/composite/BasicIT.java    |    91 +
 .../test/servlet30/composite/ConverterIT.java      |    79 +
 .../faces/test/servlet30/composite/DefineIT.java   |    79 +
 .../faces/test/servlet30/composite/InputIT.java    |    85 +
 .../test/servlet30/composite/InsertChildrenIT.java |    85 +
 .../test/servlet30/composite/InsertFacetIT.java    |    73 +
 .../test/servlet30/composite/Issue1806IT.java      |    85 +
 .../test/servlet30/composite/Issue1853IT.java      |    80 +
 .../test/servlet30/composite/Issue1854IT.java      |    78 +
 .../test/servlet30/composite/Issue1943IT.java      |    91 +
 .../test/servlet30/composite/Issue1958IT.java      |    71 +
 .../test/servlet30/composite/Issue2035IT.java      |    80 +
 .../test/servlet30/composite/Issue2089IT.java      |    71 +
 .../test/servlet30/composite/Issue2176IT.java      |    90 +
 .../test/servlet30/composite/Issue2320IT.java      |    73 +
 .../test/servlet30/composite/Issue2437IT.java      |    84 +
 .../test/servlet30/composite/Issue2562IT.java      |    72 +
 .../test/servlet30/composite/Issue2698IT.java      |    83 +
 .../test/servlet30/composite/Issue3198IT.java      |    81 +
 .../faces/test/servlet30/composite/NestedIT.java   |    91 +
 .../test/servlet30/composite/RenderFacetIT.java    |    79 +
 .../faces/test/servlet30/composite/Spec745IT.java  |   196 +
 test/servlet30/dynamic/pom.xml                     |    65 +
 .../sun/faces/test/servlet30/dynamic/AddBean.java  |    81 +
 .../faces/test/servlet30/dynamic/AddComponent.java |    86 +
 .../test/servlet30/dynamic/AddComponent1.java      |   108 +
 .../test/servlet30/dynamic/ComponentRenderer.java  |    64 +
 .../test/servlet30/dynamic/Issue1414Bean.java      |    31 +
 .../test/servlet30/dynamic/Issue2395Bean.java      |    93 +
 .../test/servlet30/dynamic/Issue2471Bean.java      |    61 +
 .../test/servlet30/dynamic/Issue2471Component.java |    63 +
 .../test/servlet30/dynamic/MoveComponent.java      |    98 +
 .../test/servlet30/dynamic/MoveComponent2.java     |    80 +
 .../test/servlet30/dynamic/MoveComponent2Bean.java |    59 +
 .../test/servlet30/dynamic/MoveComponentBean.java  |    77 +
 .../test/servlet30/dynamic/RecursiveComponent.java |    89 +
 .../servlet30/dynamic/RemoveComponentBean.java     |    72 +
 .../test/servlet30/dynamic/StableComponent.java    |    99 +
 .../test/servlet30/dynamic/TableComponent.java     |   106 +
 .../faces/test/servlet30/dynamic/ToggleBean.java   |    47 +
 .../test/servlet30/dynamic/ToggleComponent.java    |    71 +
 .../servlet30/dynamic/TransientFirstChildBean.java |    70 +
 .../src/main/webapp/WEB-INF/dynamic.taglib.xml     |    98 +
 .../src/main/webapp/WEB-INF/faces-config.xml       |    49 +
 .../src/main/webapp/WEB-INF/glassfish-web.xml      |    57 +
 .../src/main/webapp/WEB-INF/issue2471.taglib.xml   |    56 +
 .../dynamic/src/main/webapp/WEB-INF/web.xml        |    72 +
 test/servlet30/dynamic/src/main/webapp/add.xhtml   |    76 +
 test/servlet30/dynamic/src/main/webapp/add1.xhtml  |    77 +
 test/servlet30/dynamic/src/main/webapp/add2.xhtml  |    74 +
 test/servlet30/dynamic/src/main/webapp/index.xhtml |    76 +
 .../dynamic/src/main/webapp/issue1414.xhtml        |    22 +
 .../dynamic/src/main/webapp/issue2395.xhtml        |    28 +
 .../dynamic/src/main/webapp/issue2471.xhtml        |    19 +
 .../dynamic/src/main/webapp/moveComponent.xhtml    |    92 +
 .../dynamic/src/main/webapp/moveComponent1.xhtml   |    77 +
 .../dynamic/src/main/webapp/moveComponent2.xhtml   |    20 +
 .../src/main/webapp/moveContainerComponent.xhtml   |    94 +
 .../dynamic/src/main/webapp/recursive.xhtml        |    77 +
 .../dynamic/src/main/webapp/removeComponent.xhtml  |    74 +
 .../dynamic/src/main/webapp/resources/issue2471.js |     3 +
 .../servlet30/dynamic/src/main/webapp/stable.xhtml |    78 +
 test/servlet30/dynamic/src/main/webapp/table.xhtml |    80 +
 .../servlet30/dynamic/src/main/webapp/toggle.xhtml |    80 +
 .../src/main/webapp/transientFirstChild.xhtml      |    31 +
 .../faces/test/servlet30/dynamic/Issue1414IT.java  |    98 +
 .../faces/test/servlet30/dynamic/Issue1826IT.java  |   160 +
 .../faces/test/servlet30/dynamic/Issue2119IT.java  |    85 +
 .../faces/test/servlet30/dynamic/Issue2121IT.java  |    81 +
 .../faces/test/servlet30/dynamic/Issue2373IT.java  |   170 +
 .../faces/test/servlet30/dynamic/Issue2395IT.java  |   108 +
 .../faces/test/servlet30/dynamic/Issue2471IT.java  |    69 +
 .../faces/test/servlet30/dynamic/Issue2888IT.java  |    80 +
 .../faces/test/servlet30/dynamic/Issue3310IT.java  |    74 +
 .../faces/test/servlet30/dynamic/Issue3332IT.java  |    74 +
 test/servlet30/el/basic/nbactions.xml              |    17 +
 test/servlet30/el/basic/pom.xml                    |    62 +
 .../el/basic/GetFeatureDescriptorsBean.java        |    84 +
 .../test/servlet30/el/basic/Issue2989Bean.java     |   152 +
 .../faces/test/servlet30/el/basic/SetNullBean.java |   203 +
 .../servlet30/el/basic/SetNullInnerTestBean.java   |    49 +
 .../test/servlet30/el/basic/SetNullTestBean.java   |    64 +
 .../servlet30/el/basic/ValueBindingSetBean.java    |   106 +
 .../servlet30/el/basic/ViewConstructorBean.java    |    70 +
 .../servlet30/el/basic/ViewInitFacesListener.java  |    91 +
 .../servlet30/el/basic/ViewInvalidated2Bean.java   |    91 +
 .../servlet30/el/basic/ViewInvalidatedBean.java    |   101 +
 .../servlet30/el/basic/ViewNavigateAwayBean.java   |    93 +
 .../test/servlet30/el/basic/ViewNavigateBean.java  |    80 +
 .../servlet30/el/basic/ViewPostConstructBean.java  |    80 +
 .../test/servlet30/el/basic/ViewVerbatimBean.java  |    83 +
 .../basic/src/main/webapp/WEB-INF/faces-config.xml |    61 +
 .../src/main/webapp/WEB-INF/glassfish-web.xml      |    52 +
 .../el/basic/src/main/webapp/WEB-INF/web.xml       |    75 +
 .../src/main/webapp/getFeatureDescriptors.xhtml    |    16 +
 .../servlet30/el/basic/src/main/webapp/index.xhtml |    55 +
 .../el/basic/src/main/webapp/issue2566.jsp         |    58 +
 .../el/basic/src/main/webapp/issue2989.jsp         |    20 +
 .../el/basic/src/main/webapp/setNull1.xhtml        |    14 +
 .../el/basic/src/main/webapp/setNull2.xhtml        |    14 +
 .../el/basic/src/main/webapp/setNull3.xhtml        |    14 +
 .../el/basic/src/main/webapp/setNull4.xhtml        |    14 +
 .../el/basic/src/main/webapp/setNull5.xhtml        |    14 +
 .../el/basic/src/main/webapp/setNull6.xhtml        |    14 +
 .../el/basic/src/main/webapp/setNull7.xhtml        |    14 +
 .../el/basic/src/main/webapp/setNull8.xhtml        |    14 +
 .../basic/src/main/webapp/valueBindingSet1.xhtml   |    13 +
 .../basic/src/main/webapp/valueBindingSet2.xhtml   |    13 +
 .../basic/src/main/webapp/valueBindingSet3.xhtml   |    13 +
 .../basic/src/main/webapp/valueBindingSet4.xhtml   |    13 +
 .../basic/src/main/webapp/valueBindingSet5.xhtml   |    13 +
 .../basic/src/main/webapp/valueBindingSet6.xhtml   |    13 +
 .../el/basic/src/main/webapp/viewConstructor.xhtml |    57 +
 .../el/basic/src/main/webapp/viewInitFaces.xhtml   |    57 +
 .../el/basic/src/main/webapp/viewInitFaces2.xhtml  |    57 +
 .../src/main/webapp/viewInvalidatedPerform.xhtml   |    57 +
 .../src/main/webapp/viewInvalidatedSession.xhtml   |    57 +
 .../src/main/webapp/viewInvalidatedSession2.xhtml  |    61 +
 .../src/main/webapp/viewInvalidatedVerify.xhtml    |    57 +
 .../el/basic/src/main/webapp/viewNavigate.xhtml    |    60 +
 .../basic/src/main/webapp/viewNavigateAway.xhtml   |    60 +
 .../basic/src/main/webapp/viewNavigatedAway.xhtml  |    57 +
 .../basic/src/main/webapp/viewPostconstruct.xhtml  |    57 +
 .../el/basic/src/main/webapp/viewVerbatim.xhtml    |    67 +
 .../faces/test/servlet30/el/basic/Issue1706IT.java |    81 +
 .../faces/test/servlet30/el/basic/Issue2561IT.java |   106 +
 .../faces/test/servlet30/el/basic/Issue2566IT.java |    70 +
 .../faces/test/servlet30/el/basic/Issue2638IT.java |    78 +
 .../faces/test/servlet30/el/basic/Issue2644IT.java |    72 +
 .../faces/test/servlet30/el/basic/Issue2673IT.java |    78 +
 .../faces/test/servlet30/el/basic/Issue2829IT.java |   100 +
 .../faces/test/servlet30/el/basic/Issue2830IT.java |    88 +
 .../faces/test/servlet30/el/basic/Issue2831IT.java |    88 +
 .../faces/test/servlet30/el/basic/Issue2989IT.java |    76 +
 .../faces/test/servlet30/el/basic/Issue3268IT.java |    90 +
 test/servlet30/el/decorate-context/app/pom.xml     |    38 +
 .../app/src/main/webapp/WEB-INF/glassfish-web.xml  |    52 +
 .../app/src/main/webapp/WEB-INF/web.xml            |    39 +
 .../app/src/main/webapp/main.xhtml                 |    16 +
 .../servlet30/el/decorate_context/Issue3352IT.java |    72 +
 .../decorate-exceptionhandlerfactory/pom.xml       |    19 +
 .../faces/mt_safety/MyExceptionHandlerFactory.java |    81 +
 .../src/main/resources/META-INF/faces-config.xml   |    52 +
 .../decorate-facescontextfactory/pom.xml           |    19 +
 .../sun/faces/mt_safety/MyFacesContextFactory.java |    91 +
 .../src/main/resources/META-INF/faces-config.xml   |    52 +
 test/servlet30/el/decorate-context/pom.xml         |    19 +
 test/servlet30/el/pom.xml                          |    60 +
 test/servlet30/facelets/c/pom.xml                  |    63 +
 .../servlet30/facelets/c/ModifiedForEachBean.java  |    95 +
 .../servlet30/facelets/c/NestedForEachBean.java    |    36 +
 .../servlet30/facelets/c/NestedForEachItem.java    |    25 +
 .../test/servlet30/facelets/c/SetForEachBean.java  |    17 +
 .../c/src/main/webapp/WEB-INF/faces-config.xml     |     7 +
 .../c/src/main/webapp/WEB-INF/glassfish-web.xml    |    52 +
 .../facelets/c/src/main/webapp/WEB-INF/web.xml     |    75 +
 .../facelets/c/src/main/webapp/index.xhtml         |    58 +
 .../c/src/main/webapp/modifiedForEach.xhtml        |    89 +
 .../facelets/c/src/main/webapp/nestedForEach.xhtml |    27 +
 .../facelets/c/src/main/webapp/setEmpty.xhtml      |    16 +
 .../facelets/c/src/main/webapp/setForEach.xhtml    |    56 +
 .../test/servlet30/facelets/c/Issue2524IT.java     |    78 +
 .../test/servlet30/facelets/c/Issue2627IT.java     |    91 +
 .../test/servlet30/facelets/c/Issue2892IT.java     |    74 +
 .../test/servlet30/facelets/c/Issue3084IT.java     |    80 +
 test/servlet30/facelets/core/nbactions.xml         |    39 +
 test/servlet30/facelets/core/pom.xml               |    63 +
 .../facelets/core/ActionListenerBean.java          |    61 +
 .../facelets/core/CustomComponentHandler.java      |    98 +
 .../servlet30/facelets/core/EnumConverterBean.java |    76 +
 .../servlet30/facelets/core/EnumConverterEnum.java |    47 +
 .../test/servlet30/facelets/core/ForEachBean.java  |   168 +
 .../facelets/core/MetadataShortCircuitBean.java    |    71 +
 .../core/MetadataShortCircuitPhaseListener.java    |    75 +
 .../facelets/core/OutcomeTestFirstBean.java        |    67 +
 .../facelets/core/OutcomeTestSecondBean.java       |    70 +
 .../facelets/core/PassThroughAttribute1Bean.java   |    54 +
 .../facelets/core/PhaseListener1Bean.java          |   113 +
 .../facelets/core/RequestEncodingBean.java         |    52 +
 .../core/RequestEncodingPhaseListener.java         |    69 +
 .../test/servlet30/facelets/core/SubviewBean.java  |    65 +
 .../facelets/core/ValidateBeanDisabledBean.java    |    21 +
 .../facelets/core/ValidateBeanDisabledFoo.java     |    17 +
 .../facelets/core/ValidateRequiredBean.java        |    30 +
 .../servlet30/facelets/core/ViewActionBean.java    |   122 +
 .../servlet30/facelets/core/ViewParam2Bean.java    |    60 +
 .../servlet30/facelets/core/ViewParam3Bean.java    |    61 +
 .../servlet30/facelets/core/ViewParam5Bean.java    |    31 +
 .../servlet30/facelets/core/ViewParam6Bean.java    |    29 +
 .../servlet30/facelets/core/ViewParam7Bean.java    |    30 +
 .../servlet30/facelets/core/ViewParamBean.java     |    65 +
 .../facelets/core/ViewParamLocaleBean.java         |    64 +
 .../facelets/core/ViewParamLocaleConverter.java    |    64 +
 .../servlet30/facelets/core/Messages.properties    |     1 +
 .../servlet30/facelets/core/Messages_it.properties |     1 +
 .../core/src/main/webapp/WEB-INF/custom.taglib.xml |    55 +
 .../core/src/main/webapp/WEB-INF/faces-config.xml  |    57 +
 .../core/src/main/webapp/WEB-INF/glassfish-web.xml |    55 +
 .../facelets/core/src/main/webapp/WEB-INF/web.xml  |    75 +
 .../core/src/main/webapp/actionlistener.xhtml      |    58 +
 .../core/src/main/webapp/cifRenderedFalse.xhtml    |    36 +
 .../core/src/main/webapp/enumConverter.xhtml       |    59 +
 ...false_false_false_false_false_false_false.xhtml |    84 +
 ..._false_false_false_false_false_false_true.xhtml |    77 +
 ..._false_false_false_false_false_true_false.xhtml |    77 +
 ...e_false_false_false_false_false_true_true.xhtml |    79 +
 ..._false_false_false_false_true_false_false.xhtml |    87 +
 ...e_false_false_false_false_true_false_true.xhtml |    81 +
 ...e_false_false_false_false_true_true_false.xhtml |    82 +
 ...se_false_false_false_false_true_true_true.xhtml |    83 +
 ..._false_false_false_true_false_false_false.xhtml |    87 +
 ...e_false_false_false_true_false_false_true.xhtml |    81 +
 ...e_false_false_false_true_false_true_false.xhtml |    81 +
 ...se_false_false_false_true_false_true_true.xhtml |    83 +
 ...e_false_false_false_true_true_false_false.xhtml |    91 +
 ...se_false_false_false_true_true_false_true.xhtml |    85 +
 ...se_false_false_false_true_true_true_false.xhtml |    85 +
 ...lse_false_false_false_true_true_true_true.xhtml |    87 +
 ...lse_false_false_true_true_true_true_false.xhtml |    86 +
 ...lse_false_true_false_true_false_true_true.xhtml |    85 +
 ...se_true_false_false_false_true_true_false.xhtml |    89 +
 ...e_false_false_false_true_false_true_false.xhtml |    85 +
 .../webapp/forEach/includedDynamically01.xhtml     |    70 +
 .../webapp/forEach/includedDynamically02.xhtml     |    70 +
 .../main/webapp/forEach/includedLiterally.xhtml    |    70 +
 .../forEach/includedLiterallyWithParam.xhtml       |    70 +
 .../core/src/main/webapp/forEach/index.xhtml       |   848 ++
 ...false_false_false_false_false_false_false.xhtml |    87 +
 ...e_true_true_true_true_true_true_true_true.xhtml |   100 +
 .../core/src/main/webapp/htmlAttributeEmpty.xhtml  |    55 +
 .../facelets/core/src/main/webapp/include.xhtml    |    58 +
 .../webapp/metadata/metadataShortCircuit.xhtml     |    20 +
 .../src/main/webapp/passThroughAttribute1.xhtml    |    18 +
 .../core/src/main/webapp/phaseListener1.xhtml      |    20 +
 .../main/webapp/phaseListenerRequestEncoding.xhtml |    57 +
 .../src/main/webapp/validateBeanDisabled.xhtml     |    35 +
 .../core/src/main/webapp/validateRequired.xhtml    |    20 +
 .../src/main/webapp/validateRequiredDisabled.xhtml |    20 +
 .../src/main/webapp/viewActionActionEmpty.xhtml    |    20 +
 .../webapp/viewActionActionExplicitRedirect.xhtml  |    17 +
 .../main/webapp/viewActionActionListener1a.xhtml   |    18 +
 .../main/webapp/viewActionActionListener1b.xhtml   |    19 +
 .../main/webapp/viewActionActionListener2a.xhtml   |    17 +
 .../main/webapp/viewActionActionListener2b.xhtml   |    17 +
 .../src/main/webapp/viewActionActionNull.xhtml     |    20 +
 .../src/main/webapp/viewActionActionPageA.xhtml    |    20 +
 .../src/main/webapp/viewActionRedirect1a.xhtml     |    15 +
 .../src/main/webapp/viewActionRedirect1b.xhtml     |    16 +
 .../core/src/main/webapp/viewActionResult.xhtml    |    11 +
 .../facelets/core/src/main/webapp/viewParam.xhtml  |    23 +
 .../facelets/core/src/main/webapp/viewParam2.xhtml |    19 +
 .../facelets/core/src/main/webapp/viewParam3.xhtml |    18 +
 .../facelets/core/src/main/webapp/viewParam4.xhtml |    24 +
 .../facelets/core/src/main/webapp/viewParam5.xhtml |    34 +
 .../facelets/core/src/main/webapp/viewParam6.xhtml |    35 +
 .../facelets/core/src/main/webapp/viewParam7.xhtml |    18 +
 .../core/src/main/webapp/viewParam7Required.xhtml  |    20 +
 .../src/main/webapp/viewParamListener_first.xhtml  |    33 +
 .../src/main/webapp/viewParamListener_second.xhtml |    22 +
 .../core/src/main/webapp/viewParamLocale.xhtml     |    61 +
 .../core/src/main/webapp/viewParamMultiple.xhtml   |    70 +
 .../core/src/main/webapp/viewTransient.xhtml       |    21 +
 .../core/src/main/webapp/viewTransientAjax.xhtml   |    28 +
 .../core/src/main/webapp/viewTransientFalse.xhtml  |    21 +
 .../test/servlet30/facelets/core/ForEachIT.java    |   292 +
 .../servlet30/facelets/core/Glassfish18007IT.java  |    80 +
 .../servlet30/facelets/core/Issue18329103IT.java   |   100 +
 .../test/servlet30/facelets/core/Issue2045IT.java  |    76 +
 .../test/servlet30/facelets/core/Issue2247IT.java  |    89 +
 .../test/servlet30/facelets/core/Issue2260IT.java  |    80 +
 .../test/servlet30/facelets/core/Issue2347IT.java  |    94 +
 .../test/servlet30/facelets/core/Issue2526IT.java  |    82 +
 .../test/servlet30/facelets/core/Issue2718IT.java  |    93 +
 .../test/servlet30/facelets/core/Issue2720IT.java  |    77 +
 .../test/servlet30/facelets/core/Issue2731IT.java  |   123 +
 .../test/servlet30/facelets/core/Issue2848IT.java  |    89 +
 .../test/servlet30/facelets/core/Issue2884IT.java  |    70 +
 .../test/servlet30/facelets/core/Issue2919IT.java  |    80 +
 .../test/servlet30/facelets/core/Issue3021IT.java  |    77 +
 .../test/servlet30/facelets/core/Issue3058IT.java  |    80 +
 .../test/servlet30/facelets/core/Issue3080IT.java  |    84 +
 .../test/servlet30/facelets/core/Issue3123IT.java  |    70 +
 .../test/servlet30/facelets/core/Issue3205IT.java  |    81 +
 .../test/servlet30/facelets/core/Spec758IT.java    |   223 +
 .../test/servlet30/facelets/core/Spec762IT.java    |    71 +
 .../facelets/coreEmptyAsNull/nbactions.xml         |    29 +
 test/servlet30/facelets/coreEmptyAsNull/pom.xml    |    63 +
 .../coreEmptyAsNull/ValidateEmptyFieldsBean.java   |    65 +
 .../src/main/webapp/WEB-INF/faces-config.xml       |     7 +
 .../src/main/webapp/WEB-INF/glassfish-web.xml      |    52 +
 .../src/main/webapp/WEB-INF/web.xml                |    79 +
 .../coreEmptyAsNull/src/main/webapp/index.xhtml    |    13 +
 .../src/main/webapp/validateEmptyFields.xhtml      |    18 +
 .../facelets/coreEmptyAsNull/Issue1508IT.java      |    92 +
 test/servlet30/facelets/html/nbactions.xml         |    17 +
 test/servlet30/facelets/html/pom.xml               |    63 +
 .../facelets/html/DataTableCollectionBean.java     |   147 +
 .../facelets/html/DataTableCollectionItem.java     |    67 +
 .../facelets/html/DataTableDynamicBean.java        |   114 +
 .../facelets/html/DataTablePassthroughBean.java    |    48 +
 .../servlet30/facelets/html/FileUploadBean.java    |   104 +
 .../servlet30/facelets/html/FileValidator.java     |    77 +
 .../facelets/html/FormDuplicateIdBean.java         |    59 +
 .../servlet30/facelets/html/InputFile1Bean.java    |    79 +
 .../facelets/html/InputFile1Validator.java         |    74 +
 .../servlet30/facelets/html/InputTextSetBean.java  |   115 +
 .../facelets/html/OutputFormatConverter.java       |    75 +
 .../facelets/html/OutputTextScript1Bean.java       |    57 +
 .../facelets/html/OutputTextScript2Bean.java       |    57 +
 .../facelets/html/OutputTextWithEscapeBean.java    |    51 +
 .../SelectBooleanCheckboxSubmittedValueBean.java   |    42 +
 .../facelets/html/SelectOneMenuXSSBean.java        |    66 +
 .../facelets/html/SelectOneMenuXSSItem.java        |    57 +
 .../facelets/html/SelectOnePassthroughBean.java    |    99 +
 .../html/src/main/webapp/WEB-INF/faces-config.xml  |    11 +
 .../html/src/main/webapp/WEB-INF/glassfish-web.xml |    52 +
 .../facelets/html/src/main/webapp/WEB-INF/web.xml  |    75 +
 .../html/src/main/webapp/dataTableCollection.xhtml |    23 +
 .../html/src/main/webapp/dataTableDynamic.xhtml    |    17 +
 .../html/src/main/webapp/dataTableEmpty.xhtml      |    25 +
 .../src/main/webapp/dataTablePassthrough.xhtml     |    22 +
 .../html/src/main/webapp/dataTablePreserved.xhtml  |    24 +
 .../html/src/main/webapp/doctypeComposition1.xhtml |    13 +
 .../src/main/webapp/doctypeComposition1b.xhtml     |    55 +
 .../main/webapp/doctypeCompositionReload1.xhtml    |     7 +
 .../main/webapp/doctypeCompositionReload1b.xhtml   |    21 +
 .../html/src/main/webapp/doctypeInclude1.xhtml     |     5 +
 .../src/main/webapp/findChildByTagIdFacets.xhtml   |    49 +
 .../html/src/main/webapp/formDuplicateId.xhtml     |    34 +
 .../html/src/main/webapp/formOmitted.xhtml         |    55 +
 .../main/webapp/graphicImageDirectContract.xhtml   |    11 +
 .../main/webapp/graphicImageDirectContract2.xhtml  |    11 +
 .../facelets/html/src/main/webapp/index.xhtml      |    24 +
 .../facelets/html/src/main/webapp/inputFile1.xhtml |    22 +
 .../html/src/main/webapp/inputFileAjax.xhtml       |    70 +
 .../src/main/webapp/inputFileAjaxListener.xhtml    |    27 +
 .../src/main/webapp/inputFileAjaxPartial.xhtml     |    70 +
 .../html/src/main/webapp/inputFileRequired.xhtml   |    21 +
 .../html/src/main/webapp/inputTextSet.xhtml        |    59 +
 .../facelets/html/src/main/webapp/namespace.xhtml  |    57 +
 .../src/main/webapp/outputFormatConverter.xhtml    |    74 +
 .../html/src/main/webapp/outputScript.xhtml        |    13 +
 .../main/webapp/outputScriptDirectContract.xhtml   |    12 +
 .../src/main/webapp/outputScriptMissingHead.xhtml  |    20 +
 .../webapp/outputStylesheetDirectContract.xhtml    |    11 +
 .../src/main/webapp/outputTextProjectStage.xhtml   |    13 +
 .../html/src/main/webapp/outputTextScript1.xhtml   |    72 +
 .../html/src/main/webapp/outputTextScript2.xhtml   |    71 +
 .../src/main/webapp/outputTextWithEscape.xhtml     |    14 +
 .../html/src/main/webapp/panelGroupStyle.xhtml     |    15 +
 .../selectBooleanCheckboxSubmittedValue.xhtml      |    64 +
 .../html/src/main/webapp/selectOneMenuXSS.xhtml    |    18 +
 .../src/main/webapp/selectOnePassthrough.xhtml     |    43 +
 .../test/servlet30/facelets/html/Issue1968IT.java  |    70 +
 .../test/servlet30/facelets/html/Issue2079IT.java  |    68 +
 .../test/servlet30/facelets/html/Issue2111IT.java  |    94 +
 .../test/servlet30/facelets/html/Issue2112IT.java  |    89 +
 .../test/servlet30/facelets/html/Issue2405IT.java  |    77 +
 .../test/servlet30/facelets/html/Issue2453IT.java  |    85 +
 .../test/servlet30/facelets/html/Issue2575IT.java  |    75 +
 .../test/servlet30/facelets/html/Issue2623IT.java  |    80 +
 .../test/servlet30/facelets/html/Issue2683IT.java  |    85 +
 .../test/servlet30/facelets/html/Issue2923IT.java  |    80 +
 .../test/servlet30/facelets/html/Issue2968IT.java  |    70 +
 .../test/servlet30/facelets/html/Issue3016IT.java  |    79 +
 .../test/servlet30/facelets/html/Issue3127IT.java  |    71 +
 .../test/servlet30/facelets/html/Issue3134IT.java  |    76 +
 .../test/servlet30/facelets/html/Issue3143IT.java  |    70 +
 .../test/servlet30/facelets/html/Issue3144IT.java  |    72 +
 .../test/servlet30/facelets/html/Issue3168IT.java  |    92 +
 .../test/servlet30/facelets/html/Issue3208IT.java  |    72 +
 .../test/servlet30/facelets/html/Issue3267IT.java  |    75 +
 .../test/servlet30/facelets/html/Issue3270IT.java  |    76 +
 .../test/servlet30/facelets/html/Issue3308IT.java  |    82 +
 .../test/servlet30/facelets/html/Issue832IT.java   |    71 +
 .../test/servlet30/facelets/html/Issue904IT.java   |    83 +
 .../test/servlet30/facelets/html/Spec479IT.java    |    71 +
 .../test/servlet30/facelets/html/Spec802IT.java    |    70 +
 test/servlet30/facelets/pom.xml                    |    63 +
 test/servlet30/facelets/ui/nbactions.xml           |    31 +
 test/servlet30/facelets/ui/pom.xml                 |    62 +
 .../facelets/ui/DecorateWithNullTemplateBean.java  |    56 +
 .../test/servlet30/facelets/ui/Issue2900Bean.java  |    63 +
 .../servlet30/facelets/ui/Repeat3ClickBean.java    |    37 +
 .../test/servlet30/facelets/ui/RepeatAbcBean.java  |    57 +
 .../facelets/ui/RepeatAjaxEvaluateBean.java        |    81 +
 .../facelets/ui/RepeatDynamicConverterBean.java    |   118 +
 .../facelets/ui/RepeatDynamicConverterItem.java    |    69 +
 .../servlet30/facelets/ui/RepeatOffsetBean.java    |    79 +
 .../ui/RepeatPropertyActionListenerBean.java       |    64 +
 .../ui/RepeatPropertyActionListenerItem.java       |    24 +
 .../servlet30/facelets/ui/RepeatRemovedBean.java   |    63 +
 .../servlet30/facelets/ui/RepeatResetNullBean.java |    85 +
 .../test/servlet30/facelets/ui/RepeatSizeBean.java |    71 +
 .../servlet30/facelets/ui/RepeatTooManyBean.java   |    58 +
 .../facelets/ui/RepeatUseLocalValueBean.java       |    60 +
 .../facelets/ui/RepeatUseLocalValueTypeA.java      |    57 +
 .../facelets/ui/RepeatUseLocalValueTypeB.java      |    57 +
 .../servlet30/facelets/ui/RepeatValueBean.java     |    70 +
 .../ui/src/main/webapp/WEB-INF/glassfish-web.xml   |    52 +
 .../facelets/ui/src/main/webapp/WEB-INF/web.xml    |    79 +
 .../ui/src/main/webapp/compositionBadPath.xhtml    |    56 +
 .../main/webapp/compositionDirectContract.xhtml    |    15 +
 .../ui/src/main/webapp/compositionEmptyPath.xhtml  |    57 +
 .../main/webapp/compositionWithNullTemplate.xhtml  |    60 +
 .../facelets/ui/src/main/webapp/debugHasId.xhtml   |    51 +
 .../ui/src/main/webapp/debugNotRendered.xhtml      |    51 +
 .../ui/src/main/webapp/debugQuestionMark.xhtml     |    53 +
 .../ui/src/main/webapp/debugRendered.xhtml         |    51 +
 .../ui/src/main/webapp/decorateBadPath.xhtml       |    57 +
 .../src/main/webapp/decorateDirectContract.xhtml   |    14 +
 .../ui/src/main/webapp/decorateEmptyPath.xhtml     |    57 +
 .../src/main/webapp/decorateWithNullTemplate.xhtml |    60 +
 .../ui/src/main/webapp/includeDirectContract.xhtml |    12 +
 .../facelets/ui/src/main/webapp/index.xhtml        |    53 +
 .../facelets/ui/src/main/webapp/issue2767.xhtml    |    64 +
 .../facelets/ui/src/main/webapp/issue2900.xhtml    |    57 +
 .../facelets/ui/src/main/webapp/remove.xhtml       |    55 +
 .../facelets/ui/src/main/webapp/repeat3click.xhtml |    31 +
 .../facelets/ui/src/main/webapp/repeatAbc.xhtml    |    13 +
 .../ui/src/main/webapp/repeatAjaxEvaluate.xhtml    |    32 +
 .../src/main/webapp/repeatDynamicConverter.xhtml   |    26 +
 .../facelets/ui/src/main/webapp/repeatOffset.xhtml |    62 +
 .../main/webapp/repeatPropertyActionListener.xhtml |    26 +
 .../ui/src/main/webapp/repeatRemoved.xhtml         |    76 +
 .../ui/src/main/webapp/repeatResetNull.xhtml       |    62 +
 .../facelets/ui/src/main/webapp/repeatSize.xhtml   |    85 +
 .../ui/src/main/webapp/repeatTooMany.xhtml         |    16 +
 .../ui/src/main/webapp/repeatUseLocalValue.xhtml   |    21 +
 .../facelets/ui/src/main/webapp/repeatValue.xhtml  |    64 +
 .../servlet30/facelets/ui/Issue12309225IT.java     |    79 +
 .../test/servlet30/facelets/ui/Issue1728IT.java    |    70 +
 .../test/servlet30/facelets/ui/Issue1945IT.java    |    72 +
 .../test/servlet30/facelets/ui/Issue2025IT.java    |   103 +
 .../test/servlet30/facelets/ui/Issue2038IT.java    |    77 +
 .../test/servlet30/facelets/ui/Issue2051IT.java    |    77 +
 .../test/servlet30/facelets/ui/Issue2074IT.java    |    82 +
 .../test/servlet30/facelets/ui/Issue2209IT.java    |    76 +
 .../test/servlet30/facelets/ui/Issue2258IT.java    |    71 +
 .../test/servlet30/facelets/ui/Issue2425IT.java    |    74 +
 .../test/servlet30/facelets/ui/Issue2703IT.java    |    80 +
 .../test/servlet30/facelets/ui/Issue2717IT.java    |    82 +
 .../test/servlet30/facelets/ui/Issue2767IT.java    |    71 +
 .../test/servlet30/facelets/ui/Issue2900IT.java    |    71 +
 .../test/servlet30/facelets/ui/Issue2938IT.java    |    80 +
 .../test/servlet30/facelets/ui/Issue2956IT.java    |    80 +
 .../test/servlet30/facelets/ui/Issue3035IT.java    |    87 +
 .../test/servlet30/facelets/ui/Issue3146IT.java    |    69 +
 .../test/servlet30/facelets/ui/Issue3152IT.java    |    74 +
 .../test/servlet30/facelets/ui/Issue3167IT.java    |    77 +
 .../test/servlet30/facelets/ui/Issue3215IT.java    |    72 +
 .../test/servlet30/facelets/ui/uiRemoveIT.java     |    70 +
 test/servlet30/factory/pom.xml                     |    62 +
 .../factory/CustomFaceletCacheFactory.java         |    80 +
 .../factory/CustomFaceletCacheFactoryBean.java     |    61 +
 .../factory/CustomViewDeclarationLanguage.java     |   130 +
 .../CustomViewDeclarationLanguageFactory.java      |    76 +
 .../src/main/webapp/WEB-INF/faces-config.xml       |    11 +
 .../src/main/webapp/WEB-INF/glassfish-web.xml      |    57 +
 .../factory/src/main/webapp/WEB-INF/web.xml        |    68 +
 .../factory/src/main/webapp/customfcf.xhtml        |    58 +
 .../factory/src/main/webapp/customvdl.xhtml        |    60 +
 .../test/servlet30/factory/Issue11694509IT.java    |    70 +
 .../faces/test/servlet30/factory/Issue2109IT.java  |    82 +
 test/servlet30/mapping/exact/pom.xml               |    18 +
 .../mapping/exact/src/main/webapp/WEB-INF/web.xml  |    34 +
 .../mapping/exact/src/main/webapp/exact.xhtml      |    14 +
 test/servlet30/mapping/pom.xml                     |    59 +
 .../nbactions.xml                                  |    69 +
 .../pom.xml                                        |    60 +
 .../BeforeServlet.java                             |    93 +
 .../UserBean.java                                  |    92 +
 .../src/main/webapp/WEB-INF/glassfish-web.xml      |    11 +
 .../src/main/webapp/WEB-INF/web.xml                |    77 +
 .../src/main/webapp/index.xhtml                    |    66 +
 .../Issue3341IT.java                               |   109 +
 .../multi-tenant/app-sets-tccl/nbactions.xml       |    69 +
 test/servlet30/multi-tenant/app-sets-tccl/pom.xml  |    60 +
 .../multi_tenant/app_sets_tccl/BeforeFilter.java   |   165 +
 .../multi_tenant/app_sets_tccl/UserBean.java       |    92 +
 .../src/main/webapp/WEB-INF/glassfish-web.xml      |    11 +
 .../app-sets-tccl/src/main/webapp/WEB-INF/web.xml  |    77 +
 .../app-sets-tccl/src/main/webapp/index.xhtml      |    66 +
 .../multi_tenant/app_sets_tccl/Issue3341IT.java    |   110 +
 test/servlet30/multi-tenant/pom.xml                |    57 +
 test/servlet30/navigation/pom.xml                  |    62 +
 .../src/main/webapp/WEB-INF/faces-config.xml       |    58 +
 .../src/main/webapp/WEB-INF/glassfish-web.xml      |    11 +
 .../navigation/src/main/webapp/WEB-INF/web.xml     |    33 +
 .../navigation/src/main/webapp/viewParams1.jsp     |    59 +
 .../navigation/src/main/webapp/viewParams1b.jsp    |    61 +
 .../test/servlet30/navigation/Issue2266IT.java     |    73 +
 test/servlet30/pom.xml                             |    77 +
 test/servlet30/systest/pom.xml                     |    70 +
 .../com/sun/faces/annotation/AnnotatedBean.java    |    73 +
 .../sun/faces/annotation/AnnotatedBehavior.java    |    67 +
 .../annotation/AnnotatedBehaviorRenderer.java      |    54 +
 .../sun/faces/annotation/AnnotatedComponent.java   |    56 +
 .../annotation/AnnotatedComponentSystemEvent.java  |    56 +
 .../sun/faces/annotation/AnnotatedConverter.java   |    72 +
 .../annotation/AnnotatedConverterForClass.java     |    64 +
 .../faces/annotation/AnnotatedPhaseListener.java   |    78 +
 .../sun/faces/annotation/AnnotatedRenderer.java    |    52 +
 .../sun/faces/annotation/AnnotatedValidator.java   |    65 +
 .../annotation/AnnotatedValidatorDefault.java      |    60 +
 .../annotation/AnnotatedValidatorNoValue.java      |    63 +
 .../sun/faces/annotation/AnnotationTestBean.java   |   310 +
 .../AnotherAnnotatedComponentSystemEvent.java      |    56 +
 .../java/com/sun/faces/annotation/BaseBean.java    |    71 +
 .../faces/annotation/BaseBeanImplementation.java   |    57 +
 .../faces/annotation/CustomScopeAnnotatedBean.java |    52 +
 .../application/ResetUniqueRequestIdBean.java      |    72 +
 .../java/com/sun/faces/component/DynamicAdd.java   |   136 +
 .../com/sun/faces/component/PostAddTester.java     |    74 +
 .../component/ViewScopedComponentBindingBean.java  |    91 +
 .../composite/BootstrapCompositeComponent.java     |    97 +
 .../composite/ComponentResolverActionListener.java |    64 +
 .../com/sun/faces/composite/CompositeBean.java     |   309 +
 .../composite/CompositeComponentMetadataUtils.java |   136 +
 .../JavaBackedComponentDefaultAttrValues.java      |    78 +
 .../JavaTopLevelActionListenerComponent.java       |    64 +
 .../sun/faces/composite/JavaTopLevelComponent.java |    87 +
 .../PhaseListenerInCompositeComponent.java         |    63 +
 .../composite/ResourceDependencyComponent.java     |    52 +
 .../sun/faces/composite/TimeWastingTagHandler.java |    64 +
 .../com/sun/faces/event/PostAddToViewListener.java |    90 +
 .../sun/faces/event/PostRestoreStateListener.java  |    90 +
 .../com/sun/faces/event/TestComponentRenderer.java |    64 +
 .../java/com/sun/faces/event/TestManagedBean.java  |    82 +
 .../java/com/sun/faces/event/UIAddComponent.java   |    58 +
 .../java/com/sun/faces/event/UIAddComponent1.java  |    74 +
 .../java/com/sun/faces/event/UIAddComponent2.java  |    97 +
 .../java/com/sun/faces/event/UIAddComponent3.java  |    81 +
 .../com/sun/faces/event/UIRecursiveComponent.java  |    62 +
 .../com/sun/faces/event/UIStableComponent.java     |    68 +
 .../java/com/sun/faces/event/UITableComponent.java |   100 +
 .../com/sun/faces/event/UIToggleComponent.java     |    54 +
 .../java/com/sun/faces/facelets/RepeatBean.java    |    94 +
 .../com/sun/faces/systest/ChildrenComponent.java   |   115 +
 .../faces/systest/ChildrenComponentBodyTag.java    |    97 +
 .../sun/faces/systest/ChildrenComponentTag.java    |    84 +
 .../java/com/sun/faces/systest/DuplicateIds04.java |   188 +
 .../com/sun/faces/systest/DynamicComponent.java    |   181 +
 .../com/sun/faces/systest/DynamicComponentTag.java |    84 +
 .../java/com/sun/faces/systest/FacetComponent.java |    89 +
 .../com/sun/faces/systest/FacetComponentTag.java   |    96 +
 .../main/java/com/sun/faces/systest/HelloBean.java |    67 +
 .../java/com/sun/faces/systest/MessageBean.java    |    72 +
 .../main/java/com/sun/faces/systest/NamingTag.java |    74 +
 .../com/sun/faces/systest/OutputVerbatimTag.java   |    95 +
 .../sun/faces/systest/SystemEventListenerImpl.java |    65 +
 .../sun/faces/systest/TestActionListener01.java    |    65 +
 .../java/com/sun/faces/systest/TestComponent.java  |   154 +
 .../java/com/sun/faces/systest/TestConverter.java  |    65 +
 .../com/sun/faces/systest/TestConverter01.java     |    72 +
 .../com/sun/faces/systest/TestPhaseListener01.java |    72 +
 .../java/com/sun/faces/systest/TestValidator.java  |    61 +
 .../com/sun/faces/systest/TestValidator01.java     |    64 +
 .../sun/faces/systest/TestValueChangeListener.java |    61 +
 .../faces/systest/TestValueChangeListener01.java   |    65 +
 .../sun/faces/systest/component/Issue599Bean.java  |   125 +
 .../composite/MultiActionComponentBean.java        |    61 +
 .../composite/behavior/CompositeBehavior.java      |    65 +
 .../behavior/CompositeBehaviorTestBean.java        |    56 +
 .../dynamic1757/Issue1757DynamicManagedBean.java   |    56 +
 .../systest/dynamic1757/TestComponentRenderer.java |    72 +
 .../faces/systest/dynamic1757/UITestComponent.java |    90 +
 .../implicitnav/ImplicitNavigationBean.java        |    77 +
 .../lifecycle/ApplicationFactoryWrapper.java       |    69 +
 .../lifecycle/FacesContextFactoryWrapper.java      |    70 +
 .../systest/lifecycle/LifecycleFactoryWrapper.java |    78 +
 .../systest/lifecycle/ReloadPhaseListenerImpl.java |    94 +
 .../systest/lifecycle/RenderKitFactoryWrapper.java |    79 +
 .../main/java/com/sun/faces/systest/listener.java  |    64 +
 .../sun/faces/systest/model/AbstractTestBean.java  |    62 +
 .../java/com/sun/faces/systest/model/Bean1729.java |    80 +
 .../java/com/sun/faces/systest/model/Bean2194.java |    82 +
 .../java/com/sun/faces/systest/model/Bean2202.java |    64 +
 .../java/com/sun/faces/systest/model/BookBean.java |   106 +
 .../com/sun/faces/systest/model/BooksBean.java     |    83 +
 .../java/com/sun/faces/systest/model/CSRFBean.java |    83 +
 .../com/sun/faces/systest/model/ConverterBean.java |    97 +
 .../faces/systest/model/CustomDatatableBean.java   |    98 +
 .../java/com/sun/faces/systest/model/EnumBean.java |   113 +
 .../com/sun/faces/systest/model/EventTagBean.java  |   139 +
 .../com/sun/faces/systest/model/FaceletsBean.java  |    66 +
 .../com/sun/faces/systest/model/ForEachBean.java   |   112 +
 .../com/sun/faces/systest/model/FunctionBean.java  |    63 +
 .../sun/faces/systest/model/InterweavingBean.java  |    71 +
 .../com/sun/faces/systest/model/ListHolder.java    |    65 +
 .../com/sun/faces/systest/model/ListenerBean.java  |    70 +
 .../sun/faces/systest/model/ListenerCheckBean.java |    91 +
 .../com/sun/faces/systest/model/MethodRef.java     |   171 +
 .../com/sun/faces/systest/model/NumberHolder.java  |    63 +
 .../model/PrintEventToRequestMapPhaseListener.java |   125 +
 .../sun/faces/systest/model/PropertyOrderBean.java |   105 +
 .../faces/systest/model/ResourceInjectionBean.java |    61 +
 .../sun/faces/systest/model/SelectItemsBean.java   |   114 +
 .../sun/faces/systest/model/SelectMany05Bean.java  |   371 +
 .../SelectMany05BeanWithNoSelectionValue.java      |    83 +
 .../com/sun/faces/systest/model/SpecialBean.java   |    62 +
 .../sun/faces/systest/model/SpecialConverter.java  |    69 +
 .../com/sun/faces/systest/model/StringHolder.java  |    61 +
 .../java/com/sun/faces/systest/model/TestBean.java |  1011 ++
 .../com/sun/faces/systest/model/TestBean2.java     |    60 +
 .../sun/faces/systest/model/TestBeanConverter.java |    59 +
 .../faces/systest/model/TestBeanEventClass.java    |    55 +
 .../systest/model/TestBeanPostConstructEvent.java  |    54 +
 .../systest/model/TestBeanPreDestroyEvent.java     |    51 +
 .../sun/faces/systest/model/TestBeanSubclass.java  |    62 +
 .../com/sun/faces/systest/model/TestListBox.java   |    74 +
 .../systest/model/TestValueChangeListener.java     |    74 +
 .../sun/faces/systest/model/ThousandsOfPojos.java  |   156 +
 .../com/sun/faces/systest/model/ValidatorBean.java |   100 +
 .../systest/model/ValueChangeListenerBean.java     |    87 +
 .../ValueChangeSetPropertyActionListenerBean.java  |    72 +
 .../sun/faces/systest/model/ViewRootExtension.java |    59 +
 .../faces/systest/model/ajax/AjaxRequestBean.java  |   141 +
 .../sun/faces/systest/model/ajax/AjaxTable.java    |   109 +
 .../systest/model/ajax/AjaxTagValuesBean.java      |   120 +
 .../sun/faces/systest/model/ajax/AttrsBean.java    |    81 +
 .../sun/faces/systest/model/ajax/CountBean.java    |    85 +
 .../com/sun/faces/systest/model/ajax/Echo.java     |    64 +
 .../sun/faces/systest/model/ajax/ErrorBean.java    |    78 +
 .../com/sun/faces/systest/model/ajax/EvalBean.java |    78 +
 .../com/sun/faces/systest/model/ajax/FailBean.java |    77 +
 .../faces/systest/model/ajax/InsertDeleteBean.java |   181 +
 .../faces/systest/model/ajax/InvalidXMLBean.java   |    83 +
 .../sun/faces/systest/model/ajax/RedirectBean.java |    67 +
 .../model/ajax/browser/BrowserAttributesBean.java  |   156 +
 .../systest/model/ajax/browser/EvalScriptBean.java |   233 +
 .../model/ajax/browser/SelectChangeBean.java       |    94 +
 .../systest/model/ajax/browser/UpdateRootBean.java |   422 +
 .../java/com/sun/faces/systest/render/Base64.java  |   420 +
 .../sun/faces/systest/render/ButtonRenderer.java   |   286 +
 .../faces/systest/render/CustomRenderKitImpl.java  |   243 +
 .../render/CustomResponseStateManagerImpl.java     |   270 +
 .../faces/systest/render/CustomResponseWriter.java |   588 +
 .../com/sun/faces/systest/render/FormRenderer.java |   361 +
 .../com/sun/faces/systest/render/TextRenderer.java |   365 +
 .../sun/faces/systest/resources/Resources_en.java  |    65 +
 .../state/CaptureIsSavingStateValueBean.java       |    88 +
 .../state/CaptureIsSavingStateValueComponent.java  |    67 +
 .../sun/faces/systest/state/DynamicStateBean.java  |   159 +
 .../sun/faces/systest/state/DynamicStateBean2.java |   124 +
 .../faces/systest/viewparameters/NewsIndex.java    |    78 +
 .../faces/systest/viewparameters/NewsReader.java   |   112 +
 .../faces/systest/viewparameters/NewsStory.java    |    68 +
 .../com/sun/faces/CustomMessages.properties        |    58 +
 .../com/sun/faces/CustomMessages_en.properties     |    45 +
 .../com/sun/faces/CustomMessages_fr.properties     |    45 +
 .../resources/ResourceBundle01_en.properties       |    42 +
 .../resources/ResourceBundle03_en.properties       |    42 +
 .../systest/src/main/webapp/Iterator02.jsp         |    56 +
 .../src/main/webapp/ModelSelectItemConversion.jsp  |    67 +
 .../main/webapp/ProcessSaveRestoreStateTest.jsp    |    72 +
 .../src/main/webapp/SelectManyConverterTest.jsp    |    78 +
 .../systest/src/main/webapp/TCCI_subview01.jsp     |    58 +
 .../systest/src/main/webapp/TCCI_subview02.jsp     |    54 +
 .../systest/src/main/webapp/TCCI_subview03.jsp     |    54 +
 .../systest/src/main/webapp/TCCI_subview04.jsp     |    58 +
 .../systest/src/main/webapp/TCCI_subview05.jsp     |    54 +
 .../systest/src/main/webapp/TCCI_subview06.jsp     |    54 +
 .../src/main/webapp/TestCoreValidatorFail.jsp      |    80 +
 .../src/main/webapp/TestCoreValidatorIfFail.jsp    |    71 +
 .../src/main/webapp/TestCoreValidatorIfSucceed.jsp |    71 +
 .../main/webapp/TestCoreValidatorIteratorFail.jsp  |    70 +
 .../webapp/TestCoreValidatorIteratorSucceed.jsp    |    73 +
 .../src/main/webapp/TestCoreValidatorSucceed.jsp   |    80 +
 .../main/webapp/TestElValidatorActionRefFail.jsp   |    71 +
 .../webapp/TestElValidatorActionRefSucceed.jsp     |    70 +
 .../main/webapp/TestElValidatorComponentFail.jsp   |    71 +
 .../webapp/TestElValidatorComponentSucceed.jsp     |    75 +
 .../src/main/webapp/TestElValidatorIdFail.jsp      |    71 +
 .../src/main/webapp/TestElValidatorIdSucceed.jsp   |    72 +
 .../main/webapp/TestElValidatorValueRefFail.jsp    |    67 +
 .../main/webapp/TestElValidatorValueRefSucceed.jsp |    66 +
 .../src/main/webapp/TestHtmlBasicValidatorFail.jsp |    79 +
 .../main/webapp/TestHtmlBasicValidatorSucceed.jsp  |    68 +
 .../TestValueChangeAndActionListenerNoArg.jsp      |    83 +
 .../TestValueChangeAndActionListenerNoArg.xhtml    |    83 +
 .../webapp/WEB-INF/composite-behavior.taglib.xml   |    58 +
 .../src/main/webapp/WEB-INF/faces-config.xml       |   860 ++
 .../src/main/webapp/WEB-INF/formlayout.taglib.xml  |    54 +
 .../main/webapp/WEB-INF/formlayout/layout.xhtml    |    58 +
 .../WEB-INF/formlayout/sub/maintemplate.xhtml      |    61 +
 .../src/main/webapp/WEB-INF/glassfish-web.xml      |    38 +
 .../com/sun/faces/groovy/GroovyBacked.groovy       |    63 +
 .../groovy/com/sun/faces/groovy/SimpleBean.groovy  |    54 +
 .../WEB-INF/i_spec_599_composite_taglib.taglib.xml |    16 +
 .../src/main/webapp/WEB-INF/init-faces-config.xml  |    59 +
 .../src/main/webapp/WEB-INF/source1.taglib.xml     |    93 +
 .../systest/src/main/webapp/WEB-INF/sun-web.xml    |    75 +
 .../systest/src/main/webapp/WEB-INF/taglib.tld     |   230 +
 .../src/main/webapp/WEB-INF/tags/outputLink.tag    |     4 +
 .../src/main/webapp/WEB-INF/tags/source.xhtml      |    43 +
 .../WEB-INF/templates/compositeTestTemplate.xhtml  |    61 +
 .../WEB-INF/templates/templateCompTemplate.xhtml   |    61 +
 .../templates/templateDecorateTemplate.xhtml       |    64 +
 .../systest/src/main/webapp/WEB-INF/test.jsp       |    52 +
 .../main/webapp/WEB-INF/testcomponent.taglib.xml   |   113 +
 .../systest/src/main/webapp/WEB-INF/web.xml        |   163 +
 .../src/main/webapp/WEB-INF/web.xml.template       |   164 +
 .../src/main/webapp/ajax/ajaxAllKeyword1.xhtml     |    75 +
 .../src/main/webapp/ajax/ajaxAllKeyword2.xhtml     |    77 +
 .../src/main/webapp/ajax/ajaxAllKeyword3.xhtml     |    80 +
 .../systest/src/main/webapp/ajax/ajaxAttrs.xhtml   |    70 +
 .../systest/src/main/webapp/ajax/ajaxCount.xhtml   |    72 +
 .../systest/src/main/webapp/ajax/ajaxEcho.xhtml    |    82 +
 .../src/main/webapp/ajax/ajaxEchoArea.xhtml        |    69 +
 .../systest/src/main/webapp/ajax/ajaxError.xhtml   |    63 +
 .../systest/src/main/webapp/ajax/ajaxError2.xhtml  |    63 +
 .../systest/src/main/webapp/ajax/ajaxError3.xhtml  |    78 +
 .../systest/src/main/webapp/ajax/ajaxEval.xhtml    |    61 +
 .../systest/src/main/webapp/ajax/ajaxEvent.xhtml   |    91 +
 .../src/main/webapp/ajax/ajaxIncludedScript.xhtml  |    93 +
 .../src/main/webapp/ajax/ajaxIncludedText.xhtml    |    77 +
 .../src/main/webapp/ajax/ajaxInsertDelete.xhtml    |    76 +
 .../src/main/webapp/ajax/ajaxInvalidXML.xhtml      |    61 +
 .../src/main/webapp/ajax/ajaxMalformedXML.xhtml    |    61 +
 .../systest/src/main/webapp/ajax/ajaxMessage.xhtml |   120 +
 .../src/main/webapp/ajax/ajaxMultiform.xhtml       |   100 +
 .../src/main/webapp/ajax/ajaxProjectStage.xhtml    |    65 +
 .../src/main/webapp/ajax/ajaxRedirect.xhtml        |    61 +
 .../webapp/ajax/ajaxRequestDefaultsButton.xhtml    |    93 +
 .../ajax/ajaxRequestDefaultsButtonNoPrepend.xhtml  |    95 +
 .../main/webapp/ajax/ajaxRequestDefaultsEdit.xhtml |   104 +
 .../ajax/ajaxRequestDefaultsEditNoPrepend.xhtml    |   104 +
 .../src/main/webapp/ajax/ajaxRequestHeader.xhtml   |    62 +
 .../main/webapp/ajax/ajaxRequestMultiRender.xhtml  |    78 +
 .../main/webapp/ajax/ajaxRerenderOtherForm.xhtml   |    71 +
 .../systest/src/main/webapp/ajax/ajaxSelect.xhtml  |   101 +
 .../systest/src/main/webapp/ajax/ajaxTable.xhtml   |   129 +
 .../src/main/webapp/ajax/ajaxTagCount.xhtml        |    73 +
 .../main/webapp/ajax/ajaxTagDefaultsButton.xhtml   |    94 +
 .../ajax/ajaxTagDefaultsButtonNoPrepend.xhtml      |    94 +
 .../src/main/webapp/ajax/ajaxTagDefaultsEdit.xhtml |   105 +
 .../webapp/ajax/ajaxTagDefaultsEditNoPrepend.xhtml |   105 +
 .../src/main/webapp/ajax/ajaxTagDisabled.xhtml     |    77 +
 .../src/main/webapp/ajax/ajaxTagEvent.xhtml        |    96 +
 .../main/webapp/ajax/ajaxTagEventAttribute.xhtml   |   110 +
 .../main/webapp/ajax/ajaxTagEventWrapping.xhtml    |   132 +
 .../src/main/webapp/ajax/ajaxTagKeywords.xhtml     |    93 +
 .../src/main/webapp/ajax/ajaxTagMulti.xhtml        |    90 +
 .../src/main/webapp/ajax/ajaxTagResolve.xhtml      |    99 +
 .../src/main/webapp/ajax/ajaxTagWrapping.xhtml     |   106 +
 .../src/main/webapp/ajax/ajaxViewState.xhtml       |    80 +
 .../src/main/webapp/ajax/browser/browser.xhtml     |    58 +
 .../webapp/ajax/browser/browserEvalScripts.xhtml   |    88 +
 .../webapp/ajax/browser/browserSelectChange.xhtml  |   118 +
 .../ajax/browser/browserUpdateAttribute.xhtml      |    87 +
 .../webapp/ajax/browser/browserUpdateView.xhtml    |   120 +
 .../ajax/issue1760NestedAjaxCheckboxRender.xhtml   |   109 +
 .../systest/src/main/webapp/ajax/jsfJS.xhtml       |    82 +
 .../src/main/webapp/ajax/redirecttarget.xhtml      |    57 +
 .../systest/src/main/webapp/annotationtest.xhtml   |    59 +
 test/servlet30/systest/src/main/webapp/bar01.jsp   |    51 +
 test/servlet30/systest/src/main/webapp/bar02.jsp   |    51 +
 .../systest/src/main/webapp/binding01.jsp          |    60 +
 .../main/webapp/clearApplicationMapProperty.xhtml  |    58 +
 .../src/main/webapp/commandLinkPrependId.jsp       |    76 +
 .../systest/src/main/webapp/component.jsp          |    67 +
 .../systest/src/main/webapp/component01.jsp        |    75 +
 .../systest/src/main/webapp/component02.jsp        |    58 +
 .../systest/src/main/webapp/component03.jsp        |    60 +
 .../src/main/webapp/componentImplicitObject.jsp    |    64 +
 .../src/main/webapp/composite/1462-using.xhtml     |    19 +
 .../systest/src/main/webapp/composite/action.xhtml |    93 +
 .../src/main/webapp/composite/actionListener.xhtml |    93 +
 .../src/main/webapp/composite/actionsource.xhtml   |   106 +
 .../main/webapp/composite/addPhaseListener.xhtml   |    52 +
 .../main/webapp/composite/attachedconverter.xhtml  |   118 +
 .../main/webapp/composite/attachedvalidator.xhtml  |   118 +
 .../main/webapp/composite/behavior/composite.xhtml |    58 +
 .../webapp/composite/behavior/composite02.xhtml    |    55 +
 .../boostrapCompositeComponentMetadata.xhtml       |    69 +
 .../src/main/webapp/composite/childrenfacets.xhtml |    74 +
 .../src/main/webapp/composite/clientId01.xhtml     |   104 +
 .../main/webapp/composite/compActionWithArgs.xhtml |    68 +
 .../webapp/composite/compAttributeRequired.xhtml   |    12 +
 .../composite/compAttributeRequiredLiteral.xhtml   |    12 +
 .../composite/compAttributeRequiredNullValue.xhtml |    12 +
 .../compAttributeResourceRelocation.xhtml          |    61 +
 .../webapp/composite/compAttributeWithArgs.xhtml   |    68 +
 .../compositeComponentWithMultipleActions.xhtml    |    71 +
 ...ponentWithMultipleActionsMethodSignatures.xhtml |    71 +
 ...positeComponentWithMultipleActions_cancel.xhtml |    54 +
 ...positeComponentWithMultipleActions_submit.xhtml |    54 +
 .../composite/compositeInsertChildrenNesting.xhtml |    67 +
 .../compositeInsertChildrenNesting02.xhtml         |    62 +
 .../composite/compositeInsertFacetNesting.xhtml    |    71 +
 .../composite/compositeInsertFacetNesting02.xhtml  |    65 +
 .../compositionWithinCompositeUsingPage.xhtml      |    69 +
 .../src/main/webapp/composite/customAction.xhtml   |    93 +
 .../src/main/webapp/composite/decorate.xhtml       |    58 +
 .../main/webapp/composite/defaultActionNext.xhtml  |    51 +
 .../webapp/composite/defaultActionUsingPage.xhtml  |    55 +
 .../defaultAttributeMethodExpression.xhtml         |    59 +
 .../defaultAttributeValueExpression.xhtml          |    59 +
 .../defaultAttributeValueExpression_1966.xhtml     |    56 +
 .../defaultAttributeValueExpression_1986.xhtml     |    57 +
 .../defaultAttributeValuesUsingPage.xhtml          |    71 +
 .../composite/defaultAttributesUsingPage.xhtml     |    62 +
 .../composite/insertchildrenrequired01.xhtml       |    59 +
 .../composite/insertchildrenrequired02.xhtml       |    63 +
 .../composite/insertchildrenrequired03.xhtml       |    59 +
 .../webapp/composite/insertfacetrequired01.xhtml   |    59 +
 .../webapp/composite/insertfacetrequired02.xhtml   |    63 +
 .../webapp/composite/insertfacetrequired03.xhtml   |    59 +
 .../src/main/webapp/composite/invalidMeArgs.xhtml  |    68 +
 .../src/main/webapp/composite/invalidVeArgs.xhtml  |    68 +
 .../composite/isCompositeComponentUsing.xhtml      |    67 +
 .../main/webapp/composite/issue-1782-using.xhtml   |    60 +
 .../src/main/webapp/composite/issue1318.xhtml      |    61 +
 ...aTopLevelActionListenerComponentUsingPage.xhtml |    89 +
 .../webapp/composite/javaTopLevelComponent2.xhtml  |    55 +
 .../composite/javaTopLevelComponentUsingPage.xhtml |    81 +
 .../src/main/webapp/composite/jsr276-using.xhtml   |    76 +
 .../webapp/composite/methodExprNotRequired.xhtml   |    67 +
 .../main/webapp/composite/methodExprRequired.xhtml |    67 +
 .../src/main/webapp/composite/nesting01.xhtml      |    58 +
 .../src/main/webapp/composite/nesting02.xhtml      |    60 +
 .../src/main/webapp/composite/nesting03.xhtml      |    60 +
 .../src/main/webapp/composite/nesting04.xhtml      |    61 +
 .../src/main/webapp/composite/nesting05.xhtml      |    58 +
 .../src/main/webapp/composite/nesting06.xhtml      |    58 +
 .../src/main/webapp/composite/nesting07.xhtml      |    63 +
 .../src/main/webapp/composite/nesting08.xhtml      |    62 +
 .../nestingCompositeExpressionTreeCreation.xhtml   |    62 +
 .../src/main/webapp/composite/nestingNav.xhtml     |    54 +
 .../programmaticDefaultAttributeValueAccess.xhtml  |    55 +
 .../webapp/composite/renderfacetrequired01.xhtml   |    59 +
 .../webapp/composite/renderfacetrequired02.xhtml   |    62 +
 .../webapp/composite/renderfacetrequired03.xhtml   |    59 +
 .../main/webapp/composite/requiredAttribute.xhtml  |    67 +
 .../src/main/webapp/composite/requiredFacet.xhtml  |    67 +
 .../resourceDependencyComponentNextPage.xhtml      |    59 +
 .../resourceDependencyComponentUsingPage.xhtml     |    59 +
 .../simpleCompositeComponentUsingPage.xhtml        |    21 +
 .../systest/src/main/webapp/composite/submit.xhtml |    17 +
 .../src/main/webapp/composite/validator.xhtml      |    93 +
 .../webapp/composite/valueChangeListener.xhtml     |    93 +
 ...ChangeListenerSetPropertyActionListener01.xhtml |    79 +
 .../systest/src/main/webapp/conditionalNav.xhtml   |    58 +
 .../servlet30/systest/src/main/webapp/config01.jsp |   117 +
 .../systest/src/main/webapp/converter.jsp          |    67 +
 .../systest/src/main/webapp/converter01.jsp        |    71 +
 .../systest/src/main/webapp/converter02.jsp        |    55 +
 .../systest/src/main/webapp/converter03.jsp        |   151 +
 .../systest/src/main/webapp/converter04.jsp        |   347 +
 .../systest/src/main/webapp/converter05.jsp        |   125 +
 .../systest/src/main/webapp/converter06.jsp        |   135 +
 .../systest/src/main/webapp/converter07.jsp        |   110 +
 .../systest/src/main/webapp/duplicateIds01.jsp     |    62 +
 .../systest/src/main/webapp/duplicateIds02.jsp     |    55 +
 .../systest/src/main/webapp/duplicateIds03.jsp     |    59 +
 .../systest/src/main/webapp/duplicateIds04.jsp     |    65 +
 .../systest/src/main/webapp/duplicateIds05.jsp     |    55 +
 .../src/main/webapp/dynamicComponents.xhtml        |    70 +
 .../src/main/webapp/dynamicComponents00.xhtml      |    69 +
 .../src/main/webapp/dynamicComponents01.xhtml      |    74 +
 .../src/main/webapp/dynamicComponents02.xhtml      |    71 +
 .../src/main/webapp/dynamicComponents_2119.xhtml   |    29 +
 .../src/main/webapp/dynamicComponents_2121.xhtml   |    26 +
 .../src/main/webapp/dynamicComponents_common.xhtml |    69 +
 .../src/main/webapp/dynamicComponents_index.xhtml  |    29 +
 .../main/webapp/dynamicComponents_recursive.xhtml  |    29 +
 .../src/main/webapp/dynamicComponents_stable.xhtml |    30 +
 .../src/main/webapp/dynamicComponents_table.xhtml  |    74 +
 .../src/main/webapp/dynamicComponents_toggle.xhtml |    32 +
 .../systest/src/main/webapp/eagerbean.jsp          |    66 +
 .../systest/src/main/webapp/elfunction.xhtml       |    57 +
 .../systest/src/main/webapp/enum-converter-1.jsp   |    95 +
 .../systest/src/main/webapp/enum-converter.jsp     |    68 +
 test/servlet30/systest/src/main/webapp/enum01.jsp  |    55 +
 .../systest/src/main/webapp/escape_test.jsp        |    87 +
 .../systest/src/main/webapp/eventTag.xhtml         |    82 +
 .../systest/src/main/webapp/eventTag01.xhtml       |    61 +
 .../systest/src/main/webapp/eventTag02.xhtml       |    70 +
 .../systest/src/main/webapp/eventTagInvalid.xhtml  |    61 +
 .../systest/src/main/webapp/examineViewRoot.jsp    |    72 +
 .../systest/src/main/webapp/external01.jsp         |   102 +
 .../systest/src/main/webapp/external02.jsp         |   102 +
 .../systest/src/main/webapp/external03.jsp         |   102 +
 .../systest/src/main/webapp/facelets/Client1.xhtml |    48 +
 .../systest/src/main/webapp/facelets/Client2.xhtml |    44 +
 .../systest/src/main/webapp/facelets/Client3.xhtml |    48 +
 .../webapp/facelets/Issue1576IncludedPage.xhtml    |    10 +
 .../main/webapp/facelets/Issue1576UsingPage.xhtml  |     8 +
 .../src/main/webapp/facelets/Template1.xhtml       |    49 +
 .../src/main/webapp/facelets/Template2.xhtml       |    48 +
 .../src/main/webapp/facelets/Template3.xhtml       |    49 +
 .../webapp/facelets/componentELAtBuildTime.xhtml   |    69 +
 .../main/webapp/facelets/compositionnotfound.xhtml |    66 +
 .../facelets/conditionalCCAttributeRendering.xhtml |    65 +
 .../src/main/webapp/facelets/csetTagBody.xhtml     |    61 +
 .../main/webapp/facelets/decoratenotfound.xhtml    |    67 +
 .../systest/src/main/webapp/facelets/forEach.xhtml |    69 +
 .../systest/src/main/webapp/facelets/frag1.xhtml   |     8 +
 .../systest/src/main/webapp/facelets/frag2.xhtml   |     8 +
 .../i_bugdb_13582626_fViewNullLocale.xhtml         |    69 +
 .../src/main/webapp/facelets/i_spec_599.xhtml      |    56 +
 .../src/main/webapp/facelets/implicitFacet01.xhtml |   105 +
 .../src/main/webapp/facelets/includenotfound.xhtml |    59 +
 .../src/main/webapp/facelets/issue1313.xhtml       |    86 +
 .../src/main/webapp/facelets/issue1726.xhtml       |    78 +
 .../facelets/issue1727-facet-conditional.xhtml     |    87 +
 .../facelets/issue1757-dynamic-components.xhtml    |    74 +
 .../facelets/setpropertyactionlistener1.xhtml      |    66 +
 .../main/webapp/facelets/sourcefromdtdconfig.xhtml |    54 +
 .../src/main/webapp/facelets/templateComp.xhtml    |    62 +
 .../main/webapp/facelets/templateDecorate.xhtml    |    61 +
 .../main/webapp/facelets/templateDecoration2.xhtml |    50 +
 .../src/main/webapp/facelets/uirepeat.xhtml        |    75 +
 .../src/main/webapp/facelets/uirepeat2.xhtml       |    67 +
 .../src/main/webapp/facelets/uirepeat3.xhtml       |    66 +
 .../src/main/webapp/facelets/uirepeat4.xhtml       |   113 +
 .../src/main/webapp/facelets/uirepeat5.xhtml       |    74 +
 .../main/webapp/facelets/validatorDisabled.xhtml   |    87 +
 .../main/webapp/facelets/viewPhaseListeners.xhtml  |    61 +
 .../systest/src/main/webapp/facelets/when.xhtml    |    81 +
 .../systest/src/main/webapp/facesResponse.jsp      |    59 +
 .../systest/src/main/webapp/factoryFinder.jsp      |    66 +
 .../systest/src/main/webapp/failure.xhtml          |    49 +
 test/servlet30/systest/src/main/webapp/foo01.jsp   |    51 +
 test/servlet30/systest/src/main/webapp/foo02.jsp   |    51 +
 .../systest/src/main/webapp/forEach.xhtml          |    69 +
 .../systest/src/main/webapp/forEach01.jsp          |   115 +
 .../systest/src/main/webapp/forEach02.jsp          |    89 +
 .../systest/src/main/webapp/forEach03.jsp          |   156 +
 .../systest/src/main/webapp/forEach03Include.jsp   |    59 +
 .../systest/src/main/webapp/forEach04.jsp          |    66 +
 test/servlet30/systest/src/main/webapp/frag1.jsp   |    44 +
 test/servlet30/systest/src/main/webapp/frag2.jsp   |    44 +
 .../systest/src/main/webapp/groovy/groovy.xhtml    |    57 +
 test/servlet30/systest/src/main/webapp/hello.jsp   |    45 +
 .../systest/src/main/webapp/immediate01.jsp        |    77 +
 .../implicitnav/implicitNavEmptyString.xhtml       |    64 +
 .../webapp/implicitnav/implicitNavRedirect.xhtml   |    59 +
 .../webapp/implicitnav/implicitNavRedirect02.xhtml |    57 +
 .../src/main/webapp/implicitnav/page01.xhtml       |    67 +
 .../src/main/webapp/implicitnav/page02.xhtml       |    63 +
 .../src/main/webapp/implicitnav/page03.xhtml       |    63 +
 .../src/main/webapp/implicitnav/page04.xhtml       |    62 +
 .../main/webapp/include-import-interweaving.jsp    |   140 +
 .../systest/src/main/webapp/include12.jsp          |    50 +
 test/servlet30/systest/src/main/webapp/index.html  |   100 +
 test/servlet30/systest/src/main/webapp/input01.jsp |    70 +
 .../systest/src/main/webapp/interweaving01.jsp     |    65 +
 .../systest/src/main/webapp/interweaving02.jsp     |    67 +
 .../systest/src/main/webapp/interweaving03.jsp     |    57 +
 .../systest/src/main/webapp/interweaving04.jsp     |    70 +
 .../systest/src/main/webapp/interweaving05.jsp     |    80 +
 .../systest/src/main/webapp/interweaving06.jsp     |    63 +
 .../systest/src/main/webapp/interweaving07.jsp     |    64 +
 .../systest/src/main/webapp/interweaving08.jsp     |    68 +
 .../systest/src/main/webapp/interweaving09.jsp     |    69 +
 .../systest/src/main/webapp/interweaving10.jsp     |    68 +
 .../systest/src/main/webapp/interweaving11.jsp     |    73 +
 .../systest/src/main/webapp/interweaving12.jsp     |    56 +
 .../systest/src/main/webapp/issue1682.xhtml        |    72 +
 .../src/main/webapp/jsf2jsp/ajax-gives-500.jspx    |    71 +
 .../src/main/webapp/jsf2jsp/body-gives-500.jspx    |    78 +
 .../src/main/webapp/jsf2jsp/button-gives-500.jspx  |    65 +
 ...ton-parameter-children-gives-hidden-fields.jspx |    77 +
 .../src/main/webapp/jsf2jsp/event-gives-500.jspx   |    74 +
 .../src/main/webapp/jsf2jsp/head-gives-500.jspx    |    82 +
 .../src/main/webapp/jsf2jsp/link-gives-500.jspx    |    65 +
 .../main/webapp/jsf2jsp/metadata-gives-500.jspx    |    75 +
 .../webapp/jsf2jsp/outputScript-gives-500.jspx     |    75 +
 .../webapp/jsf2jsp/outputStylesheet-gives-500.jspx |    75 +
 .../jsf2jsp/resource-ELResolver-gives-500.jspx     |    66 +
 .../systest/src/main/webapp/jsf2jsp/resources.jspx |    66 +
 .../webapp/jsf2jsp/selectManyJsf2Features.jspx     |   247 +
 .../systest/src/main/webapp/jsp/6992760.jsp        |    70 +
 .../systest/src/main/webapp/jsp/addComponent.jsp   |    71 +
 .../main/webapp/jsp/commandLinkOnClickFalse.jsp    |    78 +
 .../src/main/webapp/jsp/commandLinkOnClickTrue.jsp |    78 +
 .../systest/src/main/webapp/jsp/form-input-00.jsp  |    58 +
 .../systest/src/main/webapp/jsp/form-input-01.jsp  |    58 +
 .../systest/src/main/webapp/jsp/form-input-02.jsp  |   102 +
 .../systest/src/main/webapp/jsp/formEl.jsp         |    78 +
 .../systest/src/main/webapp/jsp/jsp-dynamic-00.jsp |    60 +
 .../systest/src/main/webapp/jsp/jsp-dynamic-01.jsp |    63 +
 .../systest/src/main/webapp/jsp/jsp-include-00.jsp |    60 +
 .../systest/src/main/webapp/jsp/jsp-include-01.jsp |    63 +
 .../systest/src/main/webapp/jsp/jsp-include-02.jsp |    63 +
 .../systest/src/main/webapp/jsp/jsp-include-03.jsp |    71 +
 .../systest/src/main/webapp/jsp/jsp-include-04.jsp |    71 +
 .../src/main/webapp/jsp/jsp-setProperty-01.jsp     |    76 +
 .../systest/src/main/webapp/jsp/jstl-choose-00.jsp |    58 +
 .../systest/src/main/webapp/jsp/jstl-choose-01.jsp |    74 +
 .../systest/src/main/webapp/jsp/jstl-choose-02.jsp |    80 +
 .../src/main/webapp/jsp/jstl-foreach-00.jsp        |    59 +
 .../src/main/webapp/jsp/jstl-foreach-01.jsp        |    88 +
 .../systest/src/main/webapp/jsp/jstl-if-00.jsp     |    58 +
 .../systest/src/main/webapp/jsp/jstl-if-01.jsp     |    63 +
 .../systest/src/main/webapp/jsp/jstl-if-02.jsp     |    75 +
 .../systest/src/main/webapp/jsp/jstl-if-03.jsp     |    65 +
 .../systest/src/main/webapp/jsp/jstl-if-04.jsp     |    72 +
 .../systest/src/main/webapp/jsp/jstl-if-05.jsp     |    72 +
 .../systest/src/main/webapp/jsp/jstl-import-00.jsp |    58 +
 .../systest/src/main/webapp/jsp/jstl-import-01.jsp |    63 +
 .../src/main/webapp/jsp/jstl-import-01a.jsp        |    45 +
 .../src/main/webapp/jsp/jstl-import-01b.jsp        |    45 +
 .../systest/src/main/webapp/jsp/jstl-import-02.jsp |    63 +
 .../src/main/webapp/jsp/jstl-import-02a.jsp        |    49 +
 .../src/main/webapp/jsp/jstl-import-02b.jsp        |    50 +
 .../systest/src/main/webapp/jsp/jstl-import-03.jsp |    71 +
 .../src/main/webapp/jsp/jstl-import-03a.jsp        |    50 +
 .../src/main/webapp/jsp/jstl-import-03b.jsp        |    50 +
 .../src/main/webapp/jsp/jstl-import-03c.jsp        |    50 +
 .../systest/src/main/webapp/jsp/jstl-import-04.jsp |    78 +
 .../src/main/webapp/jsp/jstl-import-04a.jsp        |    52 +
 .../src/main/webapp/jsp/jstl-import-04b.jsp        |    53 +
 .../src/main/webapp/jsp/jstl-import-04c.jsp        |    53 +
 .../systest/src/main/webapp/jsp/missing-view.jsp   |    70 +
 .../systest/src/main/webapp/jsp/prependId.jsp      |   144 +
 .../src/main/webapp/jsp/selectBooleanValue.jsp     |   116 +
 .../src/main/webapp/jsp/selectManyInvalidValue.jsp |    84 +
 .../main/webapp/jsp/selectManyMismatchValue.jsp    |    81 +
 .../src/main/webapp/jsp/selectManyNoValue.jsp      |    81 +
 .../src/main/webapp/jsp/selectManyTypeInts.jsp     |    79 +
 .../src/main/webapp/jsp/selectOneInvalidValue.jsp  |    84 +
 .../src/main/webapp/jsp/selectOneNoValue.jsp       |    82 +
 .../src/main/webapp/jsp/selectOneRadioTypeInt.jsp  |    68 +
 .../main/webapp/jsp/selectOneRadioTypeInteger.jsp  |    67 +
 .../src/main/webapp/jsp/selectOneTypeInt.jsp       |    79 +
 .../webapp/jsp/testMissingActionListenerMethod.jsp |    63 +
 .../systest/src/main/webapp/jsp/tlvTest01.jsp      |    70 +
 .../src/main/webapp/jsp/verbatim-one-test.jsp      |    74 +
 .../systest/src/main/webapp/jsp/verbatim-test.jsp  |    72 +
 .../src/main/webapp/jsp/verbatim-two-test.jsp      |    76 +
 .../systest/src/main/webapp/listener-1729.xhtml    |    68 +
 .../servlet30/systest/src/main/webapp/listener.jsp |   143 +
 .../main/webapp/listenerTagListenersBinding.jsp    |    87 +
 .../webapp/listenerTagListenersBindingType.jsp     |    87 +
 .../src/main/webapp/listenerTagListenersType.jsp   |    87 +
 .../systest/src/main/webapp/listeners.xhtml        |    96 +
 .../systest/src/main/webapp/managed01.jsp          |   140 +
 .../systest/src/main/webapp/managed02.jsp          |   135 +
 .../systest/src/main/webapp/managed03.jsp          |    60 +
 .../systest/src/main/webapp/managed04.jsp          |    70 +
 .../systest/src/main/webapp/managed07.jsp          |    65 +
 .../systest/src/main/webapp/managed08.jsp          |   113 +
 .../systest/src/main/webapp/message01.jsp          |   122 +
 .../systest/src/main/webapp/message02.jsp          |   107 +
 .../systest/src/main/webapp/message03.jsp          |   132 +
 .../systest/src/main/webapp/message04.jsp          |   133 +
 .../systest/src/main/webapp/message05.xhtml        |    53 +
 .../systest/src/main/webapp/messages.xhtml         |    52 +
 .../systest/src/main/webapp/methodref01.jsp        |    99 +
 .../systest/src/main/webapp/methodref02.jsp        |   114 +
 .../systest/src/main/webapp/phaseListener01.jsp    |    97 +
 .../systest/src/main/webapp/phaseListener01A.jsp   |    51 +
 .../systest/src/main/webapp/positiveTagFile.jsp    |    64 +
 .../src/main/webapp/projectStage/formMessage.xhtml |    24 +
 .../systest/src/main/webapp/publishEvents.xhtml    |    61 +
 .../servlet30/systest/src/main/webapp/redirect.jsp |    58 +
 .../systest/src/main/webapp/redirect1.jsp          |    59 +
 .../systest/src/main/webapp/regexp/converter02.txt |     1 +
 .../systest/src/main/webapp/regexp/converter06.txt |     1 +
 .../systest/src/main/webapp/regexp/escape_test.txt |     1 +
 .../regexp/regression/AreaTextRowsAttrTest.txt     |     1 +
 .../regression/SelectOneManySizeAttrTest.txt       |     1 +
 .../main/webapp/regexp/standard/autocomplete.txt   |     1 +
 .../main/webapp/regexp/standard/component01.txt    |     1 +
 .../webapp/regexp/standard/dtablecolumnclasses.txt |     1 +
 .../src/main/webapp/regexp/standard/messages01.txt |     1 +
 .../src/main/webapp/regexp/standard/messages02.txt |     1 +
 .../webapp/regexp/standard/pgridcolumnclasses.txt  |     1 +
 .../main/webapp/regexp/standard/selectmany02.txt   |     1 +
 .../src/main/webapp/regexp/verbatim_test.txt       |     1 +
 .../webapp/regression/AreaTextRowsAttrTest.jsp     |    64 +
 .../src/main/webapp/regression/InjectUserDefJS.jsp |    67 +
 .../regression/SelectOneManySizeAttrTest.jsp       |    68 +
 .../webapp/regression/uninstallListeners.xhtml     |    58 +
 .../regression/verifyBuildBeforeRestore.xhtml      |    63 +
 .../main/webapp/render/Mojarra932UsingPage.xhtml   |    69 +
 .../main/webapp/render/commandButtonButton.xhtml   |    75 +
 .../src/main/webapp/render/messageRender.xhtml     |   109 +
 .../src/main/webapp/render/outputLinkSpaces.jsp    |    54 +
 .../src/main/webapp/render/outputScriptQuery.xhtml |    59 +
 .../webapp/render/outputScriptStyleNested.xhtml    |   169 +
 .../src/main/webapp/render/outputSheetMedia.xhtml  |    14 +
 .../main/webapp/render/selectStarNoSelection.jspx  |   136 +
 .../main/webapp/render/selectStarNoSelection.xhtml |   165 +
 .../selectStarSelectionHideNoSelection.xhtml       |   165 +
 .../src/main/webapp/renderkit-default-clear.jsp    |    53 +
 .../systest/src/main/webapp/renderkit-default.jsp  |    53 +
 .../systest/src/main/webapp/renderkit01.jsp        |   174 +
 .../systest/src/main/webapp/renderkit02.jsp        |    98 +
 .../systest/src/main/webapp/renderkit02A.jsp       |    52 +
 .../systest/src/main/webapp/renderkit04.jsp        |    65 +
 .../systest/src/main/webapp/renderkit05.jsp        |    65 +
 .../systest/src/main/webapp/renderkit06.jsp        |    65 +
 .../systest/src/main/webapp/replaceViewRoot.jsp    |    66 +
 .../systest/src/main/webapp/resourceBundle01.jsp   |    43 +
 .../systest/src/main/webapp/resourceBundle02.jsp   |    46 +
 .../systest/src/main/webapp/resourceBundle03.jsp   |    55 +
 .../systest/src/main/webapp/resourceBundle04.jsp   |    51 +
 .../systest/src/main/webapp/resourceBundle05.jsp   |    56 +
 .../src/main/webapp/resourceInjection01.jsp        |    63 +
 .../src/main/webapp/resourcerelocation.xhtml       |    63 +
 .../src/main/webapp/resourcerelocation2.xhtml      |    63 +
 .../src/main/webapp/resourcerelocation3.xhtml      |    58 +
 .../src/main/webapp/resourcerelocation4.xhtml      |    58 +
 .../src/main/webapp/resources/ajax/echo1.js        |    61 +
 .../systest/src/main/webapp/resources/ajax/eval.js |     3 +
 .../main/webapp/resources/ajax/evalTestFile.xhtml  |    65 +
 .../webapp/resources/ajax/evalTestInline.xhtml     |    77 +
 .../src/main/webapp/resources/ajax/test.jsf.js     |  2270 ++++
 .../systest/src/main/webapp/resources/case1.js     |     3 +
 .../systest/src/main/webapp/resources/case11.css   |    43 +
 .../systest/src/main/webapp/resources/case12.css   |    43 +
 .../systest/src/main/webapp/resources/case14.css   |    43 +
 .../systest/src/main/webapp/resources/case3.js     |     3 +
 .../systest/src/main/webapp/resources/case4.js     |     3 +
 .../systest/src/main/webapp/resources/case6.js     |     3 +
 .../systest/src/main/webapp/resources/case9.css    |    43 +
 .../composite/actionListenerWrapper1.xhtml         |    71 +
 .../composite/actionListenerWrapper2.xhtml         |    71 +
 .../composite/actionListenerWrapper3.xhtml         |    71 +
 .../composite/actionListenerWrapper4.xhtml         |    71 +
 .../webapp/resources/composite/actionSource1.xhtml |    65 +
 .../webapp/resources/composite/actionSource2.xhtml |    65 +
 .../webapp/resources/composite/actionSource3.xhtml |    66 +
 .../webapp/resources/composite/actionSource4.xhtml |    68 +
 .../resources/composite/actionWrapper1.xhtml       |    71 +
 .../resources/composite/actionWrapper2.xhtml       |    71 +
 .../resources/composite/actionWrapper3.xhtml       |    71 +
 .../resources/composite/actionWrapper4.xhtml       |    71 +
 .../resources/composite/addPhaseListener.xhtml     |    68 +
 .../webapp/resources/composite/argAction.xhtml     |    73 +
 .../composite/captureIsSavingStateValue.xhtml      |    60 +
 .../resources/composite/ccParentExpression.xhtml   |    71 +
 .../webapp/resources/composite/cc_template.xhtml   |    14 +
 .../resources/composite/childrenAndFacets.xhtml    |    78 +
 .../main/webapp/resources/composite/compA.xhtml    |    61 +
 .../composite/compAttributeRequired.xhtml          |    16 +
 .../composite/compAttributeWithArgs.xhtml          |    70 +
 .../main/webapp/resources/composite/compB.xhtml    |    61 +
 .../main/webapp/resources/composite/compD.xhtml    |    64 +
 .../main/webapp/resources/composite/compE.xhtml    |    60 +
 .../webapp/resources/composite/compWithArgs.xhtml  |    70 +
 .../composite/componentWithMetadata.xhtml          |   190 +
 .../resources/composite/compositeComponentEL.xhtml |    68 +
 .../composite/compositionWithinComposite.xhtml     |    65 +
 .../composite/conditionalAttributeRendering.xhtml  |    65 +
 .../webapp/resources/composite/converter1.xhtml    |    65 +
 .../webapp/resources/composite/converter2.xhtml    |    65 +
 .../webapp/resources/composite/converter3.xhtml    |    66 +
 .../webapp/resources/composite/converter4.xhtml    |    68 +
 .../webapp/resources/composite/customAction.xhtml  |    67 +
 .../resources/composite/customActionListener.xhtml |    67 +
 .../resources/composite/customActionWrapper1.xhtml |    71 +
 .../resources/composite/customActionWrapper2.xhtml |    71 +
 .../resources/composite/customActionWrapper3.xhtml |    71 +
 .../resources/composite/customActionWrapper4.xhtml |    71 +
 .../resources/composite/customCustomAction.xhtml   |    67 +
 .../resources/composite/customValidator.xhtml      |    67 +
 .../composite/customValueChangeListener.xhtml      |    67 +
 .../main/webapp/resources/composite/decorate.xhtml |    65 +
 .../webapp/resources/composite/defaultAction.xhtml |    57 +
 .../composite/defaultAttributeValues.xhtml         |    68 +
 .../main/webapp/resources/composite/facetA.xhtml   |    63 +
 .../main/webapp/resources/composite/facetB.xhtml   |    65 +
 .../main/webapp/resources/composite/facetD.xhtml   |    65 +
 .../main/webapp/resources/composite/facetE.xhtml   |    62 +
 .../webapp/resources/composite/groovyBacked.xhtml  |    57 +
 .../webapp/resources/composite/inlinedStyle1.xhtml |    72 +
 .../webapp/resources/composite/inlinedStyle2.xhtml |    85 +
 .../composite/inlinedStyleAndScript.xhtml          |    73 +
 .../composite/insertChildrenRequiredFalse.xhtml    |    65 +
 .../composite/insertChildrenRequiredTrue.xhtml     |    65 +
 .../composite/insertFacetRequiredFalse.xhtml       |    68 +
 .../composite/insertFacetRequiredTrue.xhtml        |    65 +
 .../webapp/resources/composite/invalidMeArgs.xhtml |    69 +
 .../webapp/resources/composite/invalidVeArgs.xhtml |    69 +
 .../resources/composite/isCompositeComponent.xhtml |    68 +
 .../javaBackedComponentDefaultAttrValues.xhtml     |    76 +
 .../javaTopLevelActionListenerComponent.xhtml      |    88 +
 .../composite/javaTopLevelComponent.xhtml          |   103 +
 .../resources/composite/jsr276Correct01.xhtml      |    77 +
 .../resources/composite/jsr276Incorrect01.xhtml    |    75 +
 .../webapp/resources/composite/meDefaults.xhtml    |    89 +
 .../resources/composite/multiActionSource.xhtml    |    60 +
 .../multiActionSourceMethodSignatures.xhtml        |    63 +
 .../main/webapp/resources/composite/myaction.xhtml |    67 +
 .../main/webapp/resources/composite/nesting.xhtml  |    65 +
 .../main/webapp/resources/composite/nesting1.xhtml |    68 +
 .../webapp/resources/composite/nesting10.xhtml     |    65 +
 .../webapp/resources/composite/nesting11.xhtml     |    77 +
 .../main/webapp/resources/composite/nesting2.xhtml |    66 +
 .../main/webapp/resources/composite/nesting3.xhtml |    66 +
 .../main/webapp/resources/composite/nesting4.xhtml |    67 +
 .../main/webapp/resources/composite/nesting5.xhtml |    68 +
 .../main/webapp/resources/composite/nesting6.xhtml |    69 +
 .../main/webapp/resources/composite/nesting7.xhtml |    89 +
 .../main/webapp/resources/composite/nesting8.xhtml |    74 +
 .../main/webapp/resources/composite/nesting9.xhtml |    72 +
 .../webapp/resources/composite/notrequired.xhtml   |    65 +
 .../composite/renderFacetRequiredFalse.xhtml       |    63 +
 .../composite/renderFacetRequiredTrue.xhtml        |    63 +
 .../main/webapp/resources/composite/required.xhtml |    65 +
 .../webapp/resources/composite/required01.xhtml    |    66 +
 .../webapp/resources/composite/requiredFacet.xhtml |    66 +
 .../composite/resourceDependencyComponent.xhtml    |    79 +
 .../resources/composite/showClientId01.xhtml       |    70 +
 .../composite/simpleCompositeComponent.xhtml       |    15 +
 .../webapp/resources/composite/validator1.xhtml    |    65 +
 .../webapp/resources/composite/validator2.xhtml    |    65 +
 .../webapp/resources/composite/validator3.xhtml    |    66 +
 .../webapp/resources/composite/validator4.xhtml    |    68 +
 .../resources/composite/validatorWrapper1.xhtml    |    71 +
 .../resources/composite/validatorWrapper2.xhtml    |    71 +
 .../resources/composite/validatorWrapper3.xhtml    |    71 +
 .../resources/composite/validatorWrapper4.xhtml    |    71 +
 .../valueChangeSetPropertyActionListener.xhtml     |    69 +
 .../resources/composite/valueChangeWrapper1.xhtml  |    71 +
 .../resources/composite/valueChangeWrapper2.xhtml  |    71 +
 .../resources/composite/valueChangeWrapper3.xhtml  |    71 +
 .../resources/composite/valueChangeWrapper4.xhtml  |    71 +
 .../webapp/resources/composite/veDefaults.xhtml    |    67 +
 .../resources/composite/veDefaults_1966.xhtml      |    59 +
 .../composite/veDefaults_1966_Color.xhtml          |    55 +
 .../resources/composite/veDefaults_1986.xhtml      |    56 +
 .../resources/composite/verifyUserIsInRole.xhtml   |    18 +
 .../main/webapp/resources/composite/wrapper.xhtml  |    67 +
 .../resources/ezbehaviors/compositeTest.xhtml      |    84 +
 .../i_spec_599_composite.xhtml                     |    61 +
 .../i_spec_599_composite_taglib.xhtml              |    23 +
 .../systest/src/main/webapp/resources/simple.css   |    43 +
 .../systest/src/main/webapp/resources/simple.js    |     3 +
 .../systest/src/main/webapp/resources/simple2.js   |     3 +
 .../src/main/webapp/resources/tmo/block.xhtml      |    62 +
 .../webapp/resources/vLibrary/2_0}/duke-nv.gif     |   Bin
 .../webapp/resources/vLibrary/2_0/duke.gif/1_0.gif |   Bin
 .../webapp/resources/vLibrary/2_0/duke.gif/1_1.gif |   Bin
 .../webapp/resources/vLibrary/2_0/duke2.gif/1_1    |   Bin
 .../systest/src/main/webapp/selectItemEscape.jsp   |    95 +
 .../src/main/webapp/session-invalidator.jsp        |    94 +
 .../main/webapp/setApplicationMapProperty.xhtml    |    58 +
 .../src/main/webapp/standard/autocomplete.jsp      |    64 +
 .../src/main/webapp/standard/clinknoform.jsp       |    65 +
 .../src/main/webapp/standard/component01.jsp       |   100 +
 .../main/webapp/standard/dtablecolumnclasses.jsp   |   267 +
 .../src/main/webapp/standard/dtablemultiforms.jsp  |    68 +
 .../src/main/webapp/standard/dtablerowclasses.jsp  |    84 +
 .../webapp/standard/dtablevarnotoverwritten.jsp    |    59 +
 .../main/webapp/standard/dtablewithemptybody.jsp   |   108 +
 .../main/webapp/standard/formlayouttemplates.xhtml |    22 +
 .../src/main/webapp/standard/formnotomitted.xhtml  |    18 +
 .../src/main/webapp/standard/formomitted.xhtml     |    15 +
 .../main/webapp/standard/formomittedforcc.xhtml    |    15 +
 .../include/formomitted_includedcontent.xhtml      |    58 +
 .../main/webapp/standard/linkTypeAttribute.xhtml   |    58 +
 .../src/main/webapp/standard/messages01.jsp        |   109 +
 .../src/main/webapp/standard/messages02.jsp        |   118 +
 .../webapp/standard/metadataandformomitted.xhtml   |    17 +
 .../src/main/webapp/standard/metadataomitted.xhtml |    19 +
 .../systest/src/main/webapp/standard/nav1.xhtml    |    54 +
 .../systest/src/main/webapp/standard/nav2.xhtml    |    54 +
 .../src/main/webapp/standard/outcometarget01.xhtml |    94 +
 .../main/webapp/standard/pgridcolumnclasses.jsp    |   197 +
 .../selectOneLiteralHideNoSelectionOption.xhtml    |   178 +
 ...ralHideNoSelectionOptionInSelectItemGroup.xhtml |   166 +
 ...ctOneValueExpressionHideNoSelectionOption.xhtml |    81 +
 .../src/main/webapp/standard/selectmany01.jsp      |    68 +
 .../src/main/webapp/standard/selectmany02.jsp      |    68 +
 .../src/main/webapp/standard/selectmany03.jsp      |    67 +
 .../src/main/webapp/standard/selectmany04.jsp      |    60 +
 .../src/main/webapp/standard/selectmany05.xhtml    |   236 +
 .../src/main/webapp/standard/selectonemanyenum.jsp |    99 +
 .../systest/src/main/webapp/standard/submit.xhtml  |    17 +
 .../src/main/webapp/state/dynamicAddition.xhtml    |    86 +
 .../src/main/webapp/state/dynamicAddition2.xhtml   |    60 +
 .../webapp/state/dynamicAdditionDeletion.xhtml     |    58 +
 .../state/dynamicAdditionTransientSubTree.xhtml    |    59 +
 .../src/main/webapp/state/dynamicDeletion.xhtml    |    86 +
 .../src/main/webapp/state/isSavingState.xhtml      |    69 +
 .../src/main/webapp/state/isSavingState2.xhtml     |    64 +
 .../systest/src/main/webapp/subview01.jsp          |    68 +
 .../systest/src/main/webapp/subview02.jsp          |    74 +
 .../systest/src/main/webapp/subview03.jsp          |    67 +
 .../systest/src/main/webapp/subview04.jsp          |    73 +
 .../systest/src/main/webapp/subview05.jsp          |    63 +
 .../systest/src/main/webapp/subview06.jsp          |    66 +
 .../systest/src/main/webapp/subviewIterator01.jsp  |    59 +
 .../systest/src/main/webapp/subviewIterator02.jsp  |    56 +
 .../systest/src/main/webapp/success.xhtml          |    49 +
 .../systest/src/main/webapp/tag-ivars1.jsp         |    82 +
 .../systest/src/main/webapp/tag-ivars2.jsp         |    79 +
 .../src/main/webapp/taglib/attributeTest.jsp       |    70 +
 .../webapp/taglib/commandButton_param_test.jsp     |    75 +
 .../src/main/webapp/taglib/commandButton_test.jsp  |    65 +
 .../webapp/taglib/commandLink_multiform_test.jsp   |    80 +
 .../src/main/webapp/taglib/commandLink_test.jsp    |    66 +
 .../src/main/webapp/taglib/command_button_test.jsp |    64 +
 .../src/main/webapp/taglib/command_link_test.jsp   |    66 +
 test/servlet30/systest/src/main/webapp/test01.jsp  |    53 +
 .../systest/src/main/webapp/validator.jsp          |    67 +
 .../systest/src/main/webapp/validator01.jsp        |    72 +
 .../systest/src/main/webapp/validator02.jsp        |   135 +
 .../systest/src/main/webapp/validator03.jsp        |   120 +
 .../systest/src/main/webapp/validator04.jsp        |   105 +
 .../systest/src/main/webapp/validator05.xhtml      |    72 +
 .../systest/src/main/webapp/valueBinding01.jsp     |    77 +
 .../systest/src/main/webapp/valueBinding02.jsp     |    79 +
 .../systest/src/main/webapp/valueBinding03.jsp     |    79 +
 .../systest/src/main/webapp/valueBinding04.jsp     |    79 +
 .../systest/src/main/webapp/valueBinding05.jsp     |    79 +
 .../systest/src/main/webapp/valueBinding06.jsp     |    79 +
 .../systest/src/main/webapp/valueBinding07.jsp     |    81 +
 .../src/main/webapp/valueChangeListener.jsp        |    95 +
 .../src/main/webapp/valueChangeListener02.jsp      |    65 +
 .../systest/src/main/webapp/verbatim_test.jsp      |    90 +
 .../systest/src/main/webapp/view.xml/footer.xhtml  |    62 +
 .../src/main/webapp/view.xml/header.view.xml       |    62 +
 .../main/webapp/view.xml/includedInFooter.view.xml |    53 +
 .../main/webapp/view.xml/includedInFooter.xhtml    |    44 +
 .../src/main/webapp/view.xml/index.view.xml        |    72 +
 .../templateClientUsingXmlAndXhtml.view.xml        |    96 +
 .../src/main/webapp/view.xml/xhtmlTemplate.xhtml   |    84 +
 .../systest/src/main/webapp/viewLocale.jsp         |    75 +
 .../src/main/webapp/viewParameters/events.xhtml    |    44 +
 .../src/main/webapp/viewParameters/page01.xhtml    |    77 +
 .../src/main/webapp/viewParameters/page02.xhtml    |   109 +
 .../src/main/webapp/viewParameters/page03.xhtml    |    67 +
 .../src/main/webapp/viewParameters/template.xhtml  |    59 +
 .../systest/src/main/webapp/viewTagListeners.jsp   |    88 +
 .../com/sun/faces/ajax/AjaxAllKeywordITCase.java   |   127 +
 .../java/com/sun/faces/ajax/AjaxAttrsITCase.java   |   134 +
 .../java/com/sun/faces/ajax/AjaxBadXMLITCase.java  |    91 +
 .../java/com/sun/faces/ajax/AjaxEchoITCase.java    |   299 +
 .../java/com/sun/faces/ajax/AjaxErrorITCase.java   |   145 +
 .../java/com/sun/faces/ajax/AjaxEvalITCase.java    |   105 +
 .../com/sun/faces/ajax/AjaxIncludedTextITCase.java |   100 +
 .../com/sun/faces/ajax/AjaxInsertDeleteITCase.java |   173 +
 .../java/com/sun/faces/ajax/AjaxJsfJsITCase.java   |    88 +
 .../java/com/sun/faces/ajax/AjaxMessageITCase.java |   177 +
 .../com/sun/faces/ajax/AjaxMultiformITCase.java    |   107 +
 .../com/sun/faces/ajax/AjaxRedirectITCase.java     |   102 +
 .../sun/faces/ajax/AjaxRequestHeaderITCase.java    |    89 +
 .../java/com/sun/faces/ajax/AjaxRequestITCase.java |   505 +
 .../faces/ajax/AjaxRequestMultiRenderITCase.java   |   115 +
 .../sun/faces/ajax/AjaxRequestScriptITCase.java    |   100 +
 .../faces/ajax/AjaxRerenderOtherFormITCase.java    |    94 +
 .../java/com/sun/faces/ajax/AjaxSelectITCase.java  |   171 +
 .../java/com/sun/faces/ajax/AjaxTableITCase.java   |   122 +
 .../faces/ajax/AjaxTagEventAttributeITCase.java    |   126 +
 .../sun/faces/ajax/AjaxTagEventWrappingITCase.java |   205 +
 .../java/com/sun/faces/ajax/AjaxTagITCase.java     |   656 +
 .../com/sun/faces/ajax/AjaxTagResolveITCase.java   |   125 +
 .../com/sun/faces/ajax/AjaxTagWrappingITCase.java  |   189 +
 .../com/sun/faces/ajax/AjaxViewStateITCase.java    |    95 +
 .../annotation/AnnotatedComponentsITCase.java      |    91 +
 .../com/sun/faces/component/ComponentITCase.java   |   124 +
 .../faces/component/CompositeMetaDataITCase.java   |   126 +
 .../faces/composite/CompositeComponentsITCase.java |  1139 ++
 ...mpositeComponentsWithEE6DependenciesITCase.java |   155 +
 .../sun/faces/composite/DefaultActionITCase.java   |   100 +
 .../JavaTopLevelActionListenerComponentITCase.java |   104 +
 .../composite/JavaTopLevelComponentITCase.java     |   117 +
 .../ResourceDependencyComponentITCase.java         |   117 +
 ...eListenerSetPropertyActionListener01ITCase.java |   136 +
 .../java/com/sun/faces/event/DynamicAddITCase.java |   210 +
 .../event/ValueChangeListenerCalledITCase.java     |   127 +
 .../event/VerifyBuildBeforeRestoreITCase.java      |   105 +
 .../com/sun/faces/facelets/FaceletsITCase.java     |   478 +
 .../facelets/FaceletsTargetNotFoundITCase.java     |   155 +
 .../sun/faces/facelets/ImplicitFacetITCase.java    |   169 +
 .../com/sun/faces/facelets/UIRepeatITCase.java     |   230 +
 .../java/com/sun/faces/facelets/csetITCase.java    |   111 +
 .../sun/faces/htmlunit/HtmlUnitFacesITCase.java    |   655 +
 .../java/com/sun/faces/jsf2jsp/Jsf2JspITCase.java  |   143 +
 .../faces/jsptest/CommandLinkMultiFormITCase.java  |   142 +
 .../sun/faces/jsptest/CommandLinkNoFormITCase.java |   118 +
 .../faces/jsptest/CommandLinkOnClickITCase.java    |   179 +
 .../com/sun/faces/jsptest/ConverterITCase.java     |   258 +
 .../java/com/sun/faces/jsptest/ForEachITCase.java  |   181 +
 .../java/com/sun/faces/jsptest/FormElITCase.java   |   114 +
 .../com/sun/faces/jsptest/FormInputITCase.java     |   245 +
 .../java/com/sun/faces/jsptest/IdRefITCase.java    |   212 +
 .../sun/faces/jsptest/InvalidateSessionITCase.java |   121 +
 .../sun/faces/jsptest/JspIntegration2ITCase.java   |    90 +
 .../sun/faces/jsptest/JspIntegrationITCase.java    |   411 +
 .../sun/faces/jsptest/JstlIntegrationITCase.java   |   911 ++
 .../java/com/sun/faces/jsptest/LocaleITCase.java   |   113 +
 .../jsptest/MissingActionListenerMethodITCase.java |    85 +
 .../com/sun/faces/jsptest/MissingViewITCase.java   |   109 +
 .../faces/jsptest/SelectComponentValueITCase.java  |   331 +
 .../sun/faces/jsptest/SelectItemEscapeITCase.java  |   125 +
 .../faces/jsptest/SelectManyMultiFormITCase.java   |   124 +
 .../com/sun/faces/jsptest/SetPropertyITCase.java   |   137 +
 .../java/com/sun/faces/jsptest/TagIvarITCase.java  |   110 +
 .../test/java/com/sun/faces/jsptest/TlvITCase.java |   116 +
 .../com/sun/faces/jsptest/ValidatorITCase.java     |   156 +
 .../faces/jsptest/ValueChangeListenerITCase.java   |   204 +
 .../sun/faces/jsptest/ViewRootPhaseListenerIT.java |    81 +
 .../faces/jsptest/ViewRootPhaseListenerITCase.java |   138 +
 .../java/com/sun/faces/jsptest/ViewTagITCase.java  |   130 +
 .../com/sun/faces/methodref/MethodRefITCase.java   |   276 +
 ...tributeListenerMethodExpressionNoArgITCase.java |   103 +
 .../com/sun/faces/render/CommandButtonITCase.java  |   106 +
 .../com/sun/faces/render/MessageRenderITCase.java  |   143 +
 .../com/sun/faces/render/MessagesRenderITCase.java |   100 +
 .../sun/faces/render/OutputScriptStyleITCase.java  |   220 +
 .../com/sun/faces/render/SelectStarITCase.java     |   272 +
 .../test/java/com/sun/faces/systest/BasicIT.java   |    83 +
 .../com/sun/faces/systest/BugDb13582626IT.java     |    71 +
 .../java/com/sun/faces/systest/ComponentIT.java    |    85 +
 .../com/sun/faces/systest/ComponentMiscITCase.java |   143 +
 .../faces/systest/ConditionalNavigationITCase.java |   112 +
 .../java/com/sun/faces/systest/ConverterIT.java    |   108 +
 .../com/sun/faces/systest/DataTableITCase.java     |   243 +
 .../java/com/sun/faces/systest/DuplicateIdIT.java  |   105 +
 .../com/sun/faces/systest/ExternalContextIT.java   |    83 +
 .../test/java/com/sun/faces/systest/FaceletIT.java |    88 +
 .../sun/faces/systest/ForEachFaceletsITCase.java   |   100 +
 .../test/java/com/sun/faces/systest/ForEachIT.java |    72 +
 .../java/com/sun/faces/systest/FourOFourIT.java    |    72 +
 .../java/com/sun/faces/systest/HtmlTaglibIT.java   |    71 +
 .../com/sun/faces/systest/Issue2194ITCase.java     |   121 +
 .../src/test/java/com/sun/faces/systest/JSPIT.java |    72 +
 .../sun/faces/systest/LinkTypeAttributeITCase.java |   120 +
 .../java/com/sun/faces/systest/ListenerIT.java     |    72 +
 .../java/com/sun/faces/systest/ManagedBeanIT.java  |   117 +
 .../java/com/sun/faces/systest/MethodRefIT.java    |    71 +
 .../com/sun/faces/systest/NavigationITCase.java    |   263 +
 .../com/sun/faces/systest/OutputTargetsITCase.java |   258 +
 .../faces/systest/PGridColumnClassesITCase.java    |    69 +
 .../test/java/com/sun/faces/systest/PhaseIT.java   |    71 +
 .../com/sun/faces/systest/PrefixSecurityIT.java    |   131 +
 .../test/java/com/sun/faces/systest/RenderIT.java  |    71 +
 .../java/com/sun/faces/systest/RenderKitIT.java    |    77 +
 .../com/sun/faces/systest/RenderKitsITCase.java    |   192 +
 .../faces/systest/ResourceRelocationITCase.java    |   203 +
 .../faces/systest/SelectManyCollectionITCase.java  |   274 +
 .../systest/SelectOneHideNoSelectionITCase.java    |   167 +
 ...tOneHideNoSelectionInSelectItemGroupITCase.java |    56 +
 .../sun/faces/systest/SelectOneManyEnumITCase.java |   194 +
 ...ectOneValueExpressionHideNoSelectionITCase.java |   113 +
 .../java/com/sun/faces/systest/StandardIT.java     |    95 +
 .../java/com/sun/faces/systest/TLValidatorIT.java  |   209 +
 .../java/com/sun/faces/systest/ValidatorIT.java    |    96 +
 .../java/com/sun/faces/systest/ValueBindingIT.java |   128 +
 .../java/com/sun/faces/systest/VerbatimIT.java     |    77 +
 .../sun/faces/systest/ViewIdNormalizationIT.java   |    72 +
 .../composite/CompositeAttributeITCase.java        |   192 +
 .../composite/MultiActionComponentITCase.java      |    87 +
 .../behavior/CompositeBehaviorITCase.java          |    89 +
 .../faces/systest/dynamic1757/Issue1757ITCase.java |   108 +
 .../java/com/sun/faces/systest/el/ELITCase.java    |   119 +
 .../sun/faces/systest/http/HttpMethodITCase.java   |   150 +
 .../implicitnav/ImplicitNavigationITCase.java      |   227 +
 .../sun/faces/systest/jsp/config/ConfigITCase.java |    71 +
 .../systest/jsp/converter/ConverterITCase.java     |    69 +
 .../systest/jsp/htmltaglib/HtmlTaglibITCase.java   |   102 +
 .../jsp/interweaving/InterweavingITCase.java       |   168 +
 .../faces/systest/jsp/managed/ManagedITCase.java   |    67 +
 .../systest/jsp/regressions/RegressionsIT.java     |    79 +
 .../systest/jsp/regressions/RegressionsITCase.java |    68 +
 .../faces/systest/jsp/subview/SubviewITCase.java   |    97 +
 .../ManagedBeanLifecycleAnnotationITCase.java      |   265 +
 .../systest/projectstage/FormOmittedITCase.java    |   134 +
 .../projectstage/MetadataOmittedITCase.java        |   119 +
 .../systest/projectstage/ProjectStageITCase.java   |    70 +
 .../resources/ResourceBundleELResolverIT.java      |    83 +
 .../resources/ResourceBundleELResolverITCase.java  |   151 +
 .../faces/systest/state/DynamicStateITCase.java    |   212 +
 .../faces/systest/state/IsSavingStateITCase.java   |    75 +
 .../com/sun/faces/systest/tags/EventITCase.java    |   179 +
 .../sun/faces/systest/view/xml/ViewXmlITCase.java  |   128 +
 .../viewparameters/ViewParametersITCase.java       |   311 +
 .../facelets/coreEmptyAsNull/nbactions.xml         |    28 +
 test/servlet31/facelets/coreEmptyAsNull/pom.xml    |    63 +
 .../coreEmptyAsNull/VerifyEmptyAsNullBean.java     |   106 +
 .../src/main/webapp/WEB-INF/faces-config.xml       |     7 +
 .../src/main/webapp/WEB-INF/glassfish-web.xml      |    52 +
 .../src/main/webapp/WEB-INF/web.xml                |    79 +
 .../coreEmptyAsNull/src/main/webapp/index.xhtml    |    13 +
 .../src/main/webapp/verifyEmptyAsNull.xhtml        |    69 +
 .../facelets/coreEmptyAsNull/Issue2827IT.java      |   175 +
 test/servlet31/facelets/html/pom.xml               |    62 +
 .../test/servlet31/facelets/html/Functions.java    |    49 +
 .../html/src/main/webapp/WEB-INF/glassfish-web.xml |    52 +
 .../html/src/main/webapp/WEB-INF/test.taglib.xml   |    17 +
 .../facelets/html/src/main/webapp/WEB-INF/web.xml  |    79 +
 .../html/src/main/webapp/outputTextInline.xhtml    |    23 +
 .../html/src/main/webapp/outputTextInlineEL3.xhtml |    59 +
 .../test/servlet31/facelets/html/Issue2891IT.java  |    70 +
 .../test/servlet31/facelets/html/Issue3135IT.java  |    70 +
 test/servlet31/facelets/pom.xml                    |    58 +
 test/servlet31/facelets/ui/pom.xml                 |    62 +
 .../servlet31/facelets/ui/RepeatNestedBean.java    |    87 +
 .../ui/src/main/webapp/WEB-INF/glassfish-web.xml   |    52 +
 .../facelets/ui/src/main/webapp/WEB-INF/web.xml    |    75 +
 .../facelets/ui/src/main/webapp/repeatNested.xhtml |    63 +
 .../test/servlet31/facelets/ui/Issue1807IT.java    |    85 +
 test/servlet31/pom.xml                             |    67 +
 test/unit/pom.xml                                  |   224 +
 .../sun/faces/application/FacesMessageTest.java    |   137 +
 .../java/com/sun/faces/config/DigesterFactory.java |   500 +
 ...CompositeComponentAttributesELResolverTest.java |   112 +
 .../sun/faces/facelets/component/UIRepeatTest.java |    57 +
 .../sun/faces/facelets/util/ClasspathTestCase.java |    65 +
 .../sun/faces/junit/JUnitFacesTestCaseBase.java    |   142 +
 .../java/com/sun/faces/mock/MockApplication.java   |  1085 ++
 .../com/sun/faces/mock/MockApplicationFactory.java |    70 +
 .../com/sun/faces/mock/MockApplicationMap.java     |   173 +
 .../java/com/sun/faces/mock/MockELContext.java     |    79 +
 .../java/com/sun/faces/mock/MockELResolver.java    |   123 +
 .../java/com/sun/faces/mock/MockEnumeration.java   |    67 +
 .../com/sun/faces/mock/MockExternalContext.java    |   367 +
 .../sun/faces/mock/MockExternalContextFactory.java |    66 +
 .../java/com/sun/faces/mock/MockFacesContext.java  |   399 +
 .../sun/faces/mock/MockFacesContextFactory.java    |    84 +
 .../com/sun/faces/mock/MockHttpServletRequest.java |   509 +
 .../sun/faces/mock/MockHttpServletResponse.java    |   238 +
 .../java/com/sun/faces/mock/MockHttpSession.java   |   157 +
 .../java/com/sun/faces/mock/MockJspWriter.java     |   251 +
 .../java/com/sun/faces/mock/MockLifecycle.java     |    85 +
 .../com/sun/faces/mock/MockLifecycleFactory.java   |    74 +
 .../java/com/sun/faces/mock/MockMethodBinding.java |   210 +
 .../java/com/sun/faces/mock/MockPageContext.java   |   354 +
 .../com/sun/faces/mock/MockPartialViewContext.java |   139 +
 .../java/com/sun/faces/mock/MockPrincipal.java     |   110 +
 .../com/sun/faces/mock/MockPropertyResolver.java   |   143 +
 .../java/com/sun/faces/mock/MockRenderKit.java     |   202 +
 .../com/sun/faces/mock/MockRenderKitFactory.java   |    95 +
 .../java/com/sun/faces/mock/MockRequestMap.java    |   173 +
 .../com/sun/faces/mock/MockResourceHandler.java    |    85 +
 .../sun/faces/mock/MockResponseStateManager.java   |    45 +
 .../com/sun/faces/mock/MockResponseWriter.java     |   154 +
 .../test/java/com/sun/faces/mock/MockResult.java   |   117 +
 .../java/com/sun/faces/mock/MockResultSet.java     |  1164 ++
 .../com/sun/faces/mock/MockResultSetMetaData.java  |   205 +
 .../test/java/com/sun/faces/mock/MockServlet.java  |    88 +
 .../java/com/sun/faces/mock/MockServletConfig.java |    89 +
 .../com/sun/faces/mock/MockServletContext.java     |   303 +
 .../java/com/sun/faces/mock/MockSessionMap.java    |   173 +
 .../java/com/sun/faces/mock/MockStateManager.java  |    98 +
 .../java/com/sun/faces/mock/MockValueBinding.java  |   274 +
 .../com/sun/faces/mock/MockVariableResolver.java   |   101 +
 .../java/com/sun/faces/mock/MockViewHandler.java   |   128 +
 .../com/sun/faces/mock/model/BeanTestImpl.java     |   200 +
 .../html_basic/HtmlResponseWriterTest.java         |   167 +
 .../sun/faces/util/ByteArrayGuardAESCTRTest.java   |    66 +
 .../com/sun/faces/util/MostlySingletonTest.java    |   647 +
 .../java/com/sun/faces/util/TestHtmlUtils.java     |   162 +
 .../java/com/sun/faces/util/TestLRUMap_local.java  |   114 +
 .../java/com/sun/faces/util/TestUtil_local.java    |   121 +
 .../test/java/com/sun/faces/util/ToolsUtil.java    |   138 +
 .../java/com/sun/faces/xml/ParseXMLTestCase.java   |   151 +
 .../com/sun/faces/xml/XHTMLResolvingHandler.java   |   102 +
 .../java/javax/faces/FacesWrapperTestCase.java     |   241 +
 .../java/javax/faces/FactoryFinderTestCase.java    |   318 +
 .../java/javax/faces/FactoryFinderTestCase2.java   |   138 +
 .../faces/application/StateManagerTestCase.java    |   105 +
 .../faces/component/ActionListenerTestImpl.java    |   128 +
 .../component/CommandActionListenerTestImpl.java   |    80 +
 .../javax/faces/component/CommandTestImpl.java     |    55 +
 .../javax/faces/component/ComponentTestImpl.java   |   143 +
 .../javax/faces/component/DataBeanTestImpl.java    |    76 +
 .../java/javax/faces/component/EventTestImpl.java  |    71 +
 .../java/javax/faces/component/InputTestImpl.java  |    59 +
 .../faces/component/InputValidatorTestImpl.java    |    80 +
 .../InputValueChangeListenerTestImpl.java          |    80 +
 .../javax/faces/component/ListenerTestImpl.java    |   104 +
 .../faces/component/NamingContainerTestCase.java   |   543 +
 .../faces/component/NamingContainerTestImpl.java   |    80 +
 .../javax/faces/component/SelectManyTestImpl.java  |    52 +
 .../faces/component/StateHolderSaverTestCase.java  |   117 +
 .../javax/faces/component/UIColumnTestCase.java    |   125 +
 .../javax/faces/component/UICommandTestCase.java   |   539 +
 .../UIComponentBaseAttachedStateTestCase.java      |   342 +
 .../component/UIComponentBaseBehaviorTestCase.java |   275 +
 .../faces/component/UIComponentBaseTestCase.java   |  1833 +++
 .../javax/faces/component/UIComponentTestCase.java |  2049 +++
 .../java/javax/faces/component/UIDataTest.java     |    91 +
 .../javax/faces/component/UIGraphicTestCase.java   |   207 +
 .../java/javax/faces/component/UIInputTest.java    |   228 +
 .../javax/faces/component/UIInputTestCase.java     |   605 +
 .../UIOutputAttachedObjectStateTestCase.java       |   184 +
 .../javax/faces/component/UIOutputTestCase.java    |   167 +
 .../javax/faces/component/UIPanelTestCase.java     |   118 +
 .../javax/faces/component/UIParameterTest.java     |    91 +
 .../javax/faces/component/UIParameterTestCase.java |   213 +
 .../faces/component/UISelectBooleanTestCase.java   |   185 +
 .../javax/faces/component/UISelectItemSub.java     |    50 +
 .../faces/component/UISelectItemTestCase.java      |   319 +
 .../faces/component/UISelectItemsTestCase.java     |   165 +
 .../faces/component/UISelectManyTestCase.java      |   640 +
 .../javax/faces/component/UISelectOneTestCase.java |   409 +
 .../java/javax/faces/component/UIViewRootTest.java |   182 +
 .../javax/faces/component/UIViewRootTestCase.java  |   922 ++
 .../component/ValueChangeListenerTestImpl.java     |   134 +
 .../faces/component/ValueHolderTestCaseBase.java   |   318 +
 .../test/java/javax/faces/event/PhaseIdTest.java   |    83 +
 .../mock/MockFacesContextFactoryExtender.java      |    56 +
 .../mock/MockFacesContextFactoryExtender2.java     |    56 +
 .../javax/faces/model/ArrayDataModelTestCase.java  |    82 +
 .../test/java/javax/faces/model/BeanTestImpl.java  |    47 +
 .../javax/faces/model/CollectionDataModelTest.java |    66 +
 .../javax/faces/model/DataModelTestCaseBase.java   |   374 +
 .../javax/faces/model/ListDataModelTestCase.java   |    88 +
 .../java/javax/faces/model/ListenerTestImpl.java   |    81 +
 .../javax/faces/model/ResultDataModelTestCase.java |   112 +
 .../faces/model/ResultSetDataModelTestCase.java    |   606 +
 .../javax/faces/model/ScalarDataModelTestCase.java |    80 +
 .../validator/DoubleRangeValidatorTestCase.java    |   145 +
 .../faces/validator/LengthValidatorTestCase.java   |   145 +
 .../validator/LongRangeValidatorTestCase.java      |   147 +
 .../faces/validator/RegexValidatorTestCase.java    |   102 +
 .../javax/faces/validator/ValidatorTestCase.java   |    92 +
 .../javax/faces/webapp/AttributeTagTestCase.java   |   200 +
 .../java/javax/faces/webapp/ComponentTestImpl.java |   126 +
 .../java/javax/faces/webapp/ConfigAttribute.java   |    67 +
 .../test/java/javax/faces/webapp/ConfigBase.java   |   146 +
 .../java/javax/faces/webapp/ConfigComponent.java   |    67 +
 .../java/javax/faces/webapp/ConfigConverter.java   |    67 +
 .../java/javax/faces/webapp/ConfigFeature.java     |   125 +
 .../javax/faces/webapp/ConfigFileTestCase.java     |   414 +
 .../java/javax/faces/webapp/ConfigProperty.java    |    67 +
 .../java/javax/faces/webapp/ConfigValidator.java   |    67 +
 .../javax/faces/webapp/ConverterTagTestCase.java   |   156 +
 .../javax/faces/webapp/FacesServletTestCase.java   |   233 +
 .../java/javax/faces/webapp/FacetTagTestCase.java  |   135 +
 .../java/javax/faces/webapp/InputTagTestImpl.java  |    88 +
 .../java/javax/faces/webapp/OutputTagTestImpl.java |    88 +
 .../java/javax/faces/webapp/TagTestCaseBase.java   |   116 +
 .../test/java/javax/faces/webapp/TagTestImpl.java  |   111 +
 .../javax/faces/webapp/ValidatorTagTestCase.java   |   155 +
 .../test/java/javax/faces/webapp/config-file-0.xml |    49 +
 .../test/java/javax/faces/webapp/config-file-1.xml |   323 +
 .../com/sun/faces/xml/Entities_en_US.properties    |    60 +
 test/util/pom.xml                                  |    73 +
 .../htmlunit/IgnoringIncorrectnessListener.java    |    56 +
 .../com/sun/faces/test/junit/JsfServerExclude.java |   100 +
 .../java/com/sun/faces/test/junit/JsfTest.java     |    67 +
 .../com/sun/faces/test/junit/JsfTestRunner.java    |   154 +
 .../java/com/sun/faces/test/junit/JsfVersion.java  |   106 +
 .../java/com/sun/faces/test/util/ClusterUtils.java |    84 +
 .../java/com/sun/faces/test/util/HttpUtils.java    |    93 +
 .../com/sun/faces/test/junit/JsfNoVersionTest.java |    51 +
 .../faces/test/junit/JsfVersion2_2_0_m01Test.java  |    52 +
 .../faces/test/junit/JsfVersion2_2_0_m02Test.java  |    52 +
 .../faces/test/junit/JsfVersion2_2_0_m03Test.java  |    52 +
 .../faces/test/junit/JsfVersion2_2_0_m04Test.java  |    52 +
 .../faces/test/junit/JsfVersion2_2_0_m05Test.java  |    52 +
 .../faces/test/junit/JsfVersion2_2_0_m06Test.java  |    52 +
 .../faces/test/junit/JsfVersion2_2_0_m07Test.java  |    52 +
 .../com/sun/faces/test/util/ClusterUtilsTest.java  |    20 +
 test/web-profile/adf/basic/nbactions.xml           |    69 +
 test/web-profile/adf/basic/pom.xml                 |    75 +
 .../basic/src/main/webapp/WEB-INF/faces-config.xml |    65 +
 .../src/main/webapp/WEB-INF/glassfish-web.xml      |    11 +
 .../src/main/webapp/WEB-INF/trinidad-config.xml    |    14 +
 .../adf/basic/src/main/webapp/WEB-INF/web.xml      |   126 +
 .../adf/basic/src/main/webapp/formomitted.xhtml    |    14 +
 .../adf/basic/FormOmittedTrinidadIT.java           |    78 +
 test/web-profile/adf/pom.xml                       |    59 +
 test/web-profile/facelets/core/nbactions.xml       |    17 +
 test/web-profile/facelets/core/pom.xml             |    63 +
 .../facelets/core/EventPreRenderViewBean.java      |    61 +
 .../facelets/core/ValidateRequiredBean.java        |    30 +
 .../core/src/main/webapp/WEB-INF/beans.xml         |     5 +
 .../core/src/main/webapp/WEB-INF/faces-config.xml  |     7 +
 .../core/src/main/webapp/WEB-INF/glassfish-web.xml |    52 +
 .../facelets/core/src/main/webapp/WEB-INF/web.xml  |    75 +
 .../core/src/main/webapp/eventPreRenderView.xhtml  |    16 +
 .../core/src/main/webapp/validateRequired.xhtml    |    20 +
 .../test/webprofile/facelets/core/Issue2719IT.java |    79 +
 .../test/webprofile/facelets/core/Issue3058IT.java |    88 +
 test/web-profile/facelets/pom.xml                  |    59 +
 .../flow/basic-empty-flow-def/nbactions.xml        |    69 +
 test/web-profile/flow/basic-empty-flow-def/pom.xml |    63 +
 .../flow/basic_empty_flow_def/FlowBean.java        |    58 +
 .../src/main/resources/META-INF/persistence.xml    |    17 +
 .../src/main/webapp/WEB-INF/beans.xml              |     9 +
 .../src/main/webapp/WEB-INF/glassfish-web.xml      |    11 +
 .../src/main/webapp/WEB-INF/web.xml                |    69 +
 .../src/main/webapp/bounded-task-flow-return.xhtml |    61 +
 .../bounded-task-flow/bounded-task-flow-flow.xml   |     0
 .../bounded-task-flow/bounded-task-flow.xhtml      |    64 +
 .../src/main/webapp/bounded-task-flow/next_a.xhtml |    65 +
 .../src/main/webapp/bounded-task-flow/next_b.xhtml |    66 +
 .../src/main/webapp/index.xhtml                    |    59 +
 .../BasicEmptyFlowDefEntryExitIT.java              |   156 +
 test/web-profile/flow/basic-implicit/nbactions.xml |    69 +
 test/web-profile/flow/basic-implicit/pom.xml       |    63 +
 .../webprofile/flow/basic_implicit/FlowBean.java   |    60 +
 .../src/main/resources/META-INF/persistence.xml    |    17 +
 .../src/main/webapp/WEB-INF/beans.xml              |     9 +
 .../src/main/webapp/WEB-INF/faces-config.xml       |    58 +
 .../src/main/webapp/WEB-INF/glassfish-web.xml      |    11 +
 .../basic-implicit/src/main/webapp/WEB-INF/web.xml |    69 +
 .../basic-implicit/src/main/webapp/index.xhtml     |    59 +
 .../basic-implicit/src/main/webapp/start.xhtml     |    63 +
 .../flow/basic_implicit/BasicFlowEntryExitIT.java  |   123 +
 .../basic-multi-page-fdl-in-web-inf/nbactions.xml  |    69 +
 .../flow/basic-multi-page-fdl-in-web-inf/pom.xml   |    63 +
 .../faces/test/webprofile/flow/basic/FlowBean.java |    58 +
 .../src/main/resources/META-INF/persistence.xml    |    17 +
 .../src/main/webapp/WEB-INF/beans.xml              |     9 +
 .../bounded-task-flow/bounded-task-flow-flow.xml   |    57 +
 .../src/main/webapp/WEB-INF/web.xml                |    57 +
 .../bounded-task-flow/bounded-task-flow.xhtml      |    64 +
 .../src/main/webapp/bounded-task-flow/next_a.xhtml |    65 +
 .../src/main/webapp/bounded-task-flow/next_b.xhtml |    66 +
 .../src/main/webapp/index.xhtml                    |    59 +
 .../src/main/webapp/return1.xhtml                  |    61 +
 .../BasicInWebInfFlowEntryExitIT.java              |   156 +
 .../flow/basic-multi-page/nbactions.xml            |    69 +
 test/web-profile/flow/basic-multi-page/pom.xml     |    63 +
 .../faces/test/webprofile/flow/basic/FlowBean.java |    58 +
 .../src/main/resources/META-INF/persistence.xml    |    17 +
 .../src/main/webapp/WEB-INF/beans.xml              |     9 +
 .../src/main/webapp/WEB-INF/faces-config.xml       |    19 +
 .../src/main/webapp/WEB-INF/web.xml                |    69 +
 .../bounded-task-flow/bounded-task-flow-flow.xml   |    57 +
 .../bounded-task-flow/bounded-task-flow.xhtml      |    64 +
 .../src/main/webapp/bounded-task-flow/next_a.xhtml |    65 +
 .../src/main/webapp/bounded-task-flow/next_b.xhtml |    66 +
 .../flow-with-templates-flow.xml                   |     0
 .../flow-with-templates/flow-with-templates.xhtml  |    21 +
 .../main/webapp/flow-with-templates/page02.xhtml   |    21 +
 .../basic-multi-page/src/main/webapp/index.xhtml   |    61 +
 .../src/main/webapp/issue2997Home.xhtml            |    12 +
 .../main/webapp/issue2997PageInFacesConfig.xhtml   |    12 +
 .../src/main/webapp/issue2997UserList.xhtml        |    12 +
 .../main/webapp/resources/templates/cssLayout.css  |    61 +
 .../main/webapp/resources/templates/default.css    |    29 +
 .../basic-multi-page/src/main/webapp/return1.xhtml |    61 +
 .../main/webapp/templates/issue2997-template.xhtml |    38 +
 .../BasicMultiPageFlowEntryExitIT.java             |   156 +
 .../basic_multi_page/issue2997/Issue2997IT.java    |   115 +
 .../flow/basic_faces_flow_call/nbactions.xml       |    69 +
 .../web-profile/flow/basic_faces_flow_call/pom.xml |    63 +
 .../faces/test/webprofile/flow/basic/FlowA.java    |    72 +
 .../faces/test/webprofile/flow/basic/FlowC.java    |    68 +
 .../test/webprofile/flow/basic/Flow_a_Bean.java    |    58 +
 .../test/webprofile/flow/basic/Flow_b_Bean.java    |    58 +
 .../test/webprofile/flow/basic/Flow_c_Bean.java    |    58 +
 .../src/main/webapp/WEB-INF/beans.xml              |     9 +
 .../src/main/webapp/WEB-INF/web.xml                |    69 +
 .../src/main/webapp/flow-a/flow-a.xhtml            |    67 +
 .../src/main/webapp/flow-a/next_a.xhtml            |    65 +
 .../src/main/webapp/flow-a/next_b.xhtml            |    69 +
 .../src/main/webapp/flow-b/flow-b-flow.xml         |    83 +
 .../src/main/webapp/flow-b/flow-b.xhtml            |    67 +
 .../src/main/webapp/flow-b/next_a.xhtml            |    65 +
 .../src/main/webapp/flow-b/next_b.xhtml            |    72 +
 .../src/main/webapp/flow-c/flow-c.xhtml            |    64 +
 .../src/main/webapp/flow-c/next_a.xhtml            |    65 +
 .../src/main/webapp/flow-c/next_b.xhtml            |    72 +
 .../src/main/webapp/index.xhtml                    |    73 +
 .../src/main/webapp/nonFlow.xhtml                  |    61 +
 .../src/main/webapp/return1.xhtml                  |    63 +
 .../basic_faces_flow_call/FlowACallsFlowBIT.java   |   217 +
 .../web-profile/flow/basic_implicit_in_jar/pom.xml |    61 +
 .../flow/flow_with_template_in_jar/FlowBean.java   |    63 +
 .../src/main/resources/META-INF/beans.xml          |     9 +
 .../src/main/resources/META-INF/faces-config.xml   |    62 +
 .../flows/flow_with_template_in_jar/01.xhtml       |    27 +
 .../flows/flow_with_template_in_jar/02.xhtml       |    27 +
 .../flow_with_template_in_jar/myTemplate.xhtml     |    30 +
 .../META-INF/resources/resources/cssLayout.css     |    61 +
 .../META-INF/resources/resources/default.css       |    29 +
 .../flow/basic_implicit_template/nbactions.xml     |    69 +
 .../flow/basic_implicit_template/pom.xml           |    70 +
 .../src/main/resources/META-INF/persistence.xml    |    17 +
 .../src/main/webapp/WEB-INF/beans.xml              |     9 +
 .../src/main/webapp/WEB-INF/glassfish-web.xml      |    11 +
 .../src/main/webapp/WEB-INF/web.xml                |    69 +
 .../src/main/webapp/flow-a-return.xhtml            |    12 +
 .../src/main/webapp/flow-a/flow-a-flow.xml         |     0
 .../src/main/webapp/flow-a/flow-a-next.xhtml       |    27 +
 .../src/main/webapp/flow-a/flow-a.xhtml            |    27 +
 .../main/webapp/flow-a/templateWithinFlow.xhtml    |    30 +
 .../webapp/flow_with_template_in_jar-return.xhtml  |    12 +
 .../src/main/webapp/index.xhtml                    |    59 +
 .../src/main/webapp/resources/css/cssLayout.css    |    61 +
 .../src/main/webapp/resources/css/default.css      |    29 +
 .../BasicFlowEntryExitIT.java                      |   138 +
 .../flow/basic_method_call/nbactions.xml           |    69 +
 test/web-profile/flow/basic_method_call/pom.xml    |    63 +
 .../webprofile/flow/basic_method_call/FlowA.java   |    70 +
 .../flow/basic_method_call/Flow_a_Bean.java        |    70 +
 .../flow/basic_method_call/Flow_b_Bean.java        |    80 +
 .../webprofile/flow/basic_method_call/Pflow.java   |    57 +
 .../flow/basic_method_call/SwitchFlow.java         |    57 +
 .../src/main/webapp/WEB-INF/beans.xml              |     9 +
 .../src/main/webapp/WEB-INF/glassfish-web.xml      |    11 +
 .../src/main/webapp/WEB-INF/web.xml                |    69 +
 .../src/main/webapp/flow-a/flow-a.xhtml            |    60 +
 .../src/main/webapp/flow-a/next_b.xhtml            |    57 +
 .../src/main/webapp/flow-b/flow-b-flow.xml         |    75 +
 .../src/main/webapp/flow-b/flow-b.xhtml            |    61 +
 .../src/main/webapp/flow-b/next_b.xhtml            |    57 +
 .../basic_method_call/src/main/webapp/index.xhtml  |    67 +
 .../method-call-start-node-flow.xml                |    65 +
 .../method-call-start-node/myFirstViewNode.xhtml   |    61 +
 .../src/main/webapp/return1.xhtml                  |    65 +
 .../webapp/switch-start-node/myFirstViewNode.xhtml |    61 +
 .../switch-start-node/switch-start-node-flow.xml   |    67 +
 .../flow/basic_method_call/FlowMethodCallIT.java   |   134 +
 .../flow/basic_method_call/NonViewStartNodeIT.java |   111 +
 test/web-profile/flow/basic_switch/nbactions.xml   |    69 +
 test/web-profile/flow/basic_switch/pom.xml         |    63 +
 .../test/webprofile/flow/basic_switch/FlowA.java   |    80 +
 .../webprofile/flow/basic_switch/Flow_a_Bean.java  |    99 +
 .../webprofile/flow/basic_switch/Flow_b_Bean.java  |    99 +
 .../basic_switch/src/main/webapp/WEB-INF/beans.xml |     9 +
 .../src/main/webapp/WEB-INF/glassfish-web.xml      |    11 +
 .../basic_switch/src/main/webapp/WEB-INF/web.xml   |    69 +
 .../src/main/webapp/flow-a/flow-a.xhtml            |    61 +
 .../src/main/webapp/flow-a/switchA_result.xhtml    |    57 +
 .../src/main/webapp/flow-a/switchB_result.xhtml    |    57 +
 .../src/main/webapp/flow-a/switchC_result.xhtml    |    57 +
 .../src/main/webapp/flow-b/flow-b-flow.xml         |   104 +
 .../src/main/webapp/flow-b/flow-b.xhtml            |    62 +
 .../src/main/webapp/flow-b/switchA_result.xhtml    |    57 +
 .../src/main/webapp/flow-b/switchB_result.xhtml    |    57 +
 .../src/main/webapp/flow-b/switchC_result.xhtml    |    57 +
 .../flow/basic_switch/src/main/webapp/index.xhtml  |    62 +
 .../basic_switch/src/main/webapp/return1.xhtml     |    65 +
 .../webprofile/flow/basic_switch/SwitchCallIT.java |   149 +
 .../flow/defining_document_id/app/nbactions.xml    |    69 +
 .../flow/defining_document_id/app/pom.xml          |    75 +
 .../defining_document_id/SessionScopedBean.java    |    58 +
 .../src/main/resources/META-INF/persistence.xml    |    17 +
 .../app/src/main/webapp/WEB-INF/beans.xml          |     9 +
 .../app/src/main/webapp/WEB-INF/faces-config.xml   |    27 +
 .../app/src/main/webapp/WEB-INF/glassfish-web.xml  |    11 +
 .../app/src/main/webapp/WEB-INF/web.xml            |    69 +
 .../app/src/main/webapp/index.xhtml                |    64 +
 .../app/src/main/webapp/nonFlow.xhtml              |    61 +
 .../app/src/main/webapp/return1.xhtml              |    63 +
 .../defining_document_id/DefiningDocumentIdIT.java |   133 +
 .../flow/defining_document_id/jar01/pom.xml        |    61 +
 .../test/webprofile/flow/basic/FlowBean01.java     |    64 +
 .../jar01/src/main/resources/META-INF/beans.xml    |     9 +
 .../src/main/resources/META-INF/faces-config.xml   |    62 +
 .../bounded-task-flow/bounded-task-flow.xhtml      |    64 +
 .../META-INF/flows/bounded-task-flow/next_a.xhtml  |    65 +
 .../META-INF/flows/bounded-task-flow/next_b.xhtml  |    66 +
 .../flow/defining_document_id/jar02/pom.xml        |    61 +
 .../test/webprofile/flow/basic/FlowBean02.java     |    64 +
 .../jar02/src/main/resources/META-INF/beans.xml    |     9 +
 .../src/main/resources/META-INF/faces-config.xml   |    62 +
 .../bounded-task-flow/bounded-task-flow.xhtml      |    64 +
 .../META-INF/flows/bounded-task-flow/next_a.xhtml  |    65 +
 .../META-INF/flows/bounded-task-flow/next_b.xhtml  |    66 +
 test/web-profile/flow/defining_document_id/pom.xml |    64 +
 test/web-profile/flow/factory/nbactions.xml        |    28 +
 test/web-profile/flow/factory/pom.xml              |    63 +
 .../test/webprofile/flow/factory/AppBean.java      |    59 +
 .../test/webprofile/flow/factory/FlowBean.java     |    54 +
 .../flow/factory/FlowHandlerFactoryTestImpl.java   |    95 +
 .../flow/factory/src/main/webapp/WEB-INF/beans.xml |     9 +
 .../src/main/webapp/WEB-INF/faces-config.xml       |    58 +
 .../src/main/webapp/WEB-INF/glassfish-web.xml      |    11 +
 .../flow/factory/src/main/webapp/WEB-INF/web.xml   |    76 +
 .../flow/factory/src/main/webapp/index.xhtml       |    58 +
 .../flow/factory/src/main/webapp/start.xhtml       |    64 +
 .../flow/factory/FlowHandlerFactoryTestImplIT.java |    44 +
 test/web-profile/flow/intermediate/nbactions.xml   |    69 +
 test/web-profile/flow/intermediate/pom.xml         |    64 +
 .../webprofile/flow/intermediate/CustomerBean.java |    72 +
 .../flow/intermediate/MaintainCustomerBean.java    |   100 +
 .../intermediate/MaintainCustomerBeanJavaFlow.java |    51 +
 .../intermediate/MaintainCustomerBeanXmlFlow.java  |    51 +
 .../MaintainCustomerRecordJavaFlowDefinition.java  |    97 +
 .../src/main/resources/META-INF/persistence.xml    |    17 +
 .../intermediate/src/main/webapp/WEB-INF/beans.xml |     9 +
 .../intermediate/src/main/webapp/WEB-INF/web.xml   |    69 +
 .../intermediate/src/main/webapp/complete.xhtml    |    63 +
 .../flow/intermediate/src/main/webapp/index.xhtml  |    60 +
 .../create-customer.xhtml                          |    68 +
 .../maintain-customer-record-java.xhtml            |    54 +
 .../maintain-customer-record-java/pageA.xhtml      |    64 +
 .../maintain-customer-record-java/pageB.xhtml      |    77 +
 .../maintain-customer-record-java/pageC.xhtml      |    64 +
 .../pageC_false.xhtml                              |    64 +
 .../maintain-customer-record-java/pageC_true.xhtml |    64 +
 .../pageD_noParams.xhtml                           |    64 +
 .../pageD_params.xhtml                             |    72 +
 .../view-customer.xhtml                            |    72 +
 .../maintain-customer-record/create-customer.xhtml |    68 +
 .../maintain-customer-record-flow.xml              |   151 +
 .../maintain-customer-record.xhtml                 |    54 +
 .../webapp/maintain-customer-record/pageA.xhtml    |    64 +
 .../webapp/maintain-customer-record/pageB.xhtml    |    77 +
 .../maintain-customer-record/pageC_false.xhtml     |    64 +
 .../maintain-customer-record/pageC_true.xhtml      |    64 +
 .../maintain-customer-record/pageD_noParams.xhtml  |    64 +
 .../maintain-customer-record/pageD_params.xhtml    |    72 +
 .../maintain-customer-record/view-customer.xhtml   |    72 +
 .../intermediate/FlowEntryExitIntermediateIT.java  |   244 +
 .../flow/multi-page-from-jar/app/nbactions.xml     |    69 +
 .../flow/multi-page-from-jar/app/pom.xml           |    69 +
 .../src/main/resources/META-INF/persistence.xml    |    17 +
 .../app/src/main/webapp/WEB-INF/beans.xml          |     9 +
 .../app/src/main/webapp/WEB-INF/glassfish-web.xml  |    11 +
 .../app/src/main/webapp/WEB-INF/web.xml            |    69 +
 .../app/src/main/webapp/index.xhtml                |    88 +
 .../app/src/main/webapp/return1.xhtml              |    61 +
 .../BasicMultiPageFlowInJarEntryExitIT.java        |   157 +
 .../flow/multi-page-from-jar/jar/pom.xml           |    61 +
 .../faces/test/webprofile/flow/basic/FlowBean.java |    63 +
 .../jar/src/main/resources/META-INF/beans.xml      |     9 +
 .../src/main/resources/META-INF/faces-config.xml   |    55 +
 .../bounded-task-flow/bounded-task-flow.xhtml      |    64 +
 .../META-INF/flows/bounded-task-flow/next_a.xhtml  |    65 +
 .../META-INF/flows/bounded-task-flow/next_b.xhtml  |    66 +
 test/web-profile/flow/multi-page-from-jar/pom.xml  |    63 +
 test/web-profile/flow/nested_flows/nbactions.xml   |    69 +
 test/web-profile/flow/nested_flows/pom.xml         |    63 +
 .../nested_flows/src/main/webapp/WEB-INF/beans.xml |     9 +
 .../src/main/webapp/WEB-INF/faces-config.xml       |    43 +
 .../src/main/webapp/WEB-INF/glassfish-web.xml      |    11 +
 .../nested_flows/src/main/webapp/WEB-INF/web.xml   |    69 +
 .../nested_flows/src/main/webapp/flow1/flow1.xhtml |    16 +
 .../src/main/webapp/flow1/return2.xhtml            |    13 +
 .../nested_flows/src/main/webapp/flow2/flow2.xhtml |    16 +
 .../nested_flows/src/main/webapp/flow3/flow3.xhtml |    16 +
 .../flow/nested_flows/src/main/webapp/index.xhtml  |    16 +
 .../flow/nested_flows/NestedFlowsIT.java           |   120 +
 .../flow/parameter_faces_flow_call/nbactions.xml   |    69 +
 .../flow/parameter_faces_flow_call/pom.xml         |    63 +
 .../flow/parameter_faces_flow_call/FlowA.java      |    72 +
 .../parameter_faces_flow_call/Flow_a_Bean.java     |    58 +
 .../parameter_faces_flow_call/Flow_b_Bean.java     |    58 +
 .../src/main/webapp/WEB-INF/beans.xml              |     9 +
 .../src/main/webapp/WEB-INF/glassfish-web.xml      |    11 +
 .../src/main/webapp/WEB-INF/web.xml                |    69 +
 .../flow-a-no-inbound-no-outbound-flow.xml         |    61 +
 .../flow-a-no-inbound-no-outbound.xhtml            |    62 +
 .../flow-a-no-inbound-yes-outbound-flow.xml        |    66 +
 .../flow-a-no-inbound-yes-outbound.xhtml           |    62 +
 .../flow-a-yes-inbound-no-outbound-flow.xml        |    66 +
 .../flow-a-yes-inbound-no-outbound.xhtml           |    62 +
 .../src/main/webapp/flow-a/flow-a.xhtml            |    67 +
 .../src/main/webapp/flow-a/next_a.xhtml            |    65 +
 .../src/main/webapp/flow-a/next_b.xhtml            |    69 +
 .../flow-b-no-inbound-no-outbound-flow.xml         |    67 +
 .../flow-b-no-inbound-no-outbound.xhtml            |    65 +
 .../src/main/webapp/flow-b/flow-b-flow.xml         |    83 +
 .../src/main/webapp/flow-b/flow-b.xhtml            |    67 +
 .../src/main/webapp/flow-b/next_a.xhtml            |    65 +
 .../src/main/webapp/flow-b/next_b.xhtml            |    72 +
 .../src/main/webapp/index.xhtml                    |   100 +
 .../src/main/webapp/return1.xhtml                  |    63 +
 .../FlowACallsFlowBIT.java                         |   143 +
 test/web-profile/flow/pom.xml                      |    75 +
 .../flow/return_from_depth/nbactions.xml           |    69 +
 test/web-profile/flow/return_from_depth/pom.xml    |    63 +
 .../src/main/webapp/WEB-INF/beans.xml              |     9 +
 .../src/main/webapp/WEB-INF/faces-config.xml       |    28 +
 .../src/main/webapp/WEB-INF/glassfish-web.xml      |    11 +
 .../src/main/webapp/WEB-INF/web.xml                |    69 +
 .../src/main/webapp/flow1/flow1.xhtml              |    16 +
 .../src/main/webapp/flow1/return2.xhtml            |    13 +
 .../src/main/webapp/flow2/flow2.xhtml              |    16 +
 .../return_from_depth/src/main/webapp/index.xhtml  |    16 +
 .../flow/return_from_depth/ReturnFromDepthIT.java  |    86 +
 .../flow/view_node_differences/nbactions.xml       |    69 +
 .../web-profile/flow/view_node_differences/pom.xml |    63 +
 .../flow/view_node_differences/Flow1Bean.java      |    58 +
 .../src/main/webapp/WEB-INF/beans.xml              |     9 +
 .../src/main/webapp/WEB-INF/glassfish-web.xml      |    11 +
 .../src/main/webapp/WEB-INF/web.xml                |    69 +
 .../src/main/webapp/flow1/flow1-flow.xml           |    77 +
 .../src/main/webapp/flow1/flow1.xhtml              |    58 +
 .../src/main/webapp/flow1/flow1_2.xhtml            |    59 +
 .../src/main/webapp/flow2/flow2-flow.xml           |     0
 .../src/main/webapp/flow2/flow2.xhtml              |    12 +
 .../src/main/webapp/index.xhtml                    |    59 +
 .../src/main/webapp/nonFlow.xhtml                  |    61 +
 .../src/main/webapp/return1.xhtml                  |    61 +
 .../ViewNodeDifferencesIT.java                     |   119 +
 .../multi_templating/basic/nbactions.xml           |    69 +
 test/web-profile/multi_templating/basic/pom.xml    |    63 +
 .../src/main/resources/META-INF/persistence.xml    |    17 +
 .../basic/src/main/webapp/WEB-INF/beans.xml        |     9 +
 .../src/main/webapp/WEB-INF/glassfish-web.xml      |    11 +
 .../basic/src/main/webapp/WEB-INF/web.xml          |    69 +
 .../src/main/webapp/contracts/basic/banner3.png    |   Bin 0 -> 208957 bytes
 .../src/main/webapp/contracts/basic/concert.jpg    |   Bin 0 -> 26721 bytes
 .../src/main/webapp/contracts/basic/flourishes.png |   Bin 0 -> 207760 bytes
 .../basic/src/main/webapp/contracts/basic/star.png |   Bin 0 -> 105481 bytes
 .../src/main/webapp/contracts/basic/template.css   |   201 +
 .../src/main/webapp/contracts/basic/template.png   |   Bin 0 -> 33368 bytes
 .../src/main/webapp/contracts/basic/template.xhtml |    51 +
 .../src/main/webapp/contracts/basic/template.xml   |    13 +
 .../basic/src/main/webapp/index.xhtml              |    75 +
 .../webprofile/multi_templating/BasicRenderIT.java |   148 +
 test/web-profile/multi_templating/pom.xml          |    59 +
 test/web-profile/pom.xml                           |    73 +
 .../renderKit/basic/inputFileFailure.txt           |     2 +
 .../renderKit/basic/inputFileSuccess.txt           |     2 +
 test/web-profile/renderKit/basic/nbactions.xml     |   163 +
 test/web-profile/renderKit/basic/pom.xml           |    63 +
 .../webprofile/renderKit/basic/FileUploadBean.java |    99 +
 .../webprofile/renderKit/basic/FileValidator.java  |    77 +
 .../webprofile/renderKit/basic/Issue2941Bean.java  |    75 +
 .../basic/src/main/webapp/WEB-INF/beans.xml        |     9 +
 .../basic/src/main/webapp/WEB-INF/web.xml          |    72 +
 .../basic/src/main/webapp/inputFile.xhtml          |    66 +
 .../basic/src/main/webapp/inputFileAjax.xhtml      |    79 +
 .../basic/src/main/webapp/inputFileNoEncTyoe.xhtml |    68 +
 .../basic/src/main/webapp/issue2941.xhtml          |    70 +
 .../test/webprofile/renderKit/basic/Spec802IT.java |   128 +
 .../fileUploadFailure/inputFileSuccess.txt         |     2 +
 .../renderKit/fileUploadFailure/nbactions.xml      |   163 +
 .../renderKit/fileUploadFailure/pom.xml            |    63 +
 .../fileUploadFailure/ExternalContextImpl.java     |    73 +
 .../FacesContextFactoryWrapper.java                |    72 +
 .../fileUploadFailure/FacesContextImpl.java        |    75 +
 .../fileUploadFailure/FileUploadBean.java          |    80 +
 .../fileUploadFailure/HttpServletRequestImpl.java  |    66 +
 .../src/main/webapp/WEB-INF/beans.xml              |     9 +
 .../src/main/webapp/WEB-INF/faces-config.xml       |    13 +
 .../src/main/webapp/WEB-INF/web.xml                |    72 +
 .../src/main/webapp/inputFile.xhtml                |    58 +
 .../renderKit/fileUploadFailure/Issue2326IT.java   |    90 +
 test/web-profile/renderKit/pom.xml                 |    60 +
 test/web-profile/scope/pom.xml                     |    59 +
 test/web-profile/scope/view/nbactions.xml          |    28 +
 test/web-profile/scope/view/pom.xml                |    65 +
 .../webprofile/scope/view/InvalidatedBean.java     |    93 +
 .../test/webprofile/scope/view/ViewScopedBean.java |    89 +
 .../scope/view/src/main/webapp/WEB-INF/beans.xml   |    48 +
 .../view/src/main/webapp/WEB-INF/glassfish-web.xml |    52 +
 .../scope/view/src/main/webapp/WEB-INF/web.xml     |    70 +
 .../view/src/main/webapp/invalidatedPerform.xhtml  |    57 +
 .../view/src/main/webapp/invalidatedSession.xhtml  |    57 +
 .../view/src/main/webapp/invalidatedVerify.xhtml   |    57 +
 .../scope/view/src/main/webapp/otherPage.xhtml     |    64 +
 .../scope/view/src/main/webapp/viewScoped.xhtml    |    64 +
 .../scope/view/src/main/webapp/viewScoped2.xhtml   |    59 +
 .../view/src/main/webapp/viewScopedInput.xhtml     |    65 +
 .../test/webprofile/scope/view/Issue2641IT.java    |   152 +
 test/web-profile/stateSaving/basic/pom.xml         |    63 +
 .../statesaving/basic/Issue1845Bean.java           |    73 +
 .../basic/src/main/webapp/WEB-INF/beans.xml        |     6 +
 .../basic/src/main/webapp/WEB-INF/faces-config.xml |     7 +
 .../src/main/webapp/WEB-INF/glassfish-web.xml      |    11 +
 .../basic/src/main/webapp/WEB-INF/web.xml          |    65 +
 .../stateSaving/basic/src/main/webapp/index.xhtml  |    15 +
 .../basic/src/main/webapp/issue1845.xhtml          |    30 +
 .../test/webprofile/statesaving/Issue1845IT.java   |    88 +
 test/web-profile/stateSaving/pom.xml               |    59 +
 test/weblogic/pom.xml                              |    67 +
 test/weblogic/wls1214/facelets/core/pom.xml        |    62 +
 .../annotation/AnnotatedValidatorNoValue.java      |    64 +
 .../wls1214/facelets/core/AnnotationTestBean.java  |   111 +
 .../core/src/main/webapp/WEB-INF/faces-config.xml  |    56 +
 .../facelets/core/src/main/webapp/WEB-INF/web.xml  |    76 +
 .../core/src/main/webapp/WEB-INF/weblogic.xml      |    49 +
 .../core/src/main/webapp/annotationtest.xhtml      |    60 +
 .../facelets/core/AnnotatedComponentIT.java        |    74 +
 test/weblogic/wls1214/facelets/pom.xml             |    60 +
 test/weblogic/wls1214/pom.xml                      |    60 +
 test/weblogic12c/pom.xml                           |    25 +
 .../request_char_encoding/nbactions.xml            |    74 +
 test/weblogic12c/request_char_encoding/pom.xml     |    61 +
 .../src/main/java/com/sun/faces/test/Bean.java     |    92 +
 .../src/main/java/com/sun/faces/test/Foo.java      |    85 +
 .../java/com/sun/faces/test/FooConverterBase.java  |    75 +
 .../com/sun/faces/test/FooConverterByClass.java    |    48 +
 .../java/com/sun/faces/test/FooConverterById.java  |    49 +
 .../src/main/java/hello1/Hello.java                |    64 +
 .../src/main/webapp/WEB-INF/web.xml                |    35 +
 .../src/main/webapp/WEB-INF/weblogic.xml           |    11 +
 .../src/main/webapp/duke.waving.gif                |     0
 .../src/main/webapp/index.xhtml                    |    33 +
 .../src/main/webapp/response.xhtml                 |    18 +
 .../request_char_encoding/Issue2217IT.java         |   105 +
 updatecenter2/README                               |    63 +
 updatecenter2/bin/makepkgs.sh                      |    72 +
 updatecenter2/build.xml                            |    80 +
 updatecenter2/conf/LICENSE                         |    37 +
 updatecenter2/conf/README                          |     7 +
 updatecenter2/conf/jsf_proto.py                    |    72 +
 updatecenter2/updatecenter2.iml                    |    10 +
 www/.java.net.updater                              |     1 +
 www/alm-process/snippets/page.xml                  |    44 +
 www/index.html                                     |   122 +
 .../LICENSE.TXT => www/legal/jsf-cddl/CDDLv1.0.txt |     0
 www/legal/jsf-cddl/COPYRIGHT                       |    37 +
 www/legal/jsf-cddl/jsf-cddl-header-props.txt       |    77 +
 www/legal/jsf-cddl/jsf-cddl-header-xml.txt         |    40 +
 www/legal/jsf-cddl/jsf-cddl-header.txt             |    39 +
 8118 files changed, 667915 insertions(+), 132811 deletions(-)

diff --git a/.kick b/.kick
new file mode 100644
index 0000000..36dceca
--- /dev/null
+++ b/.kick
@@ -0,0 +1,11 @@
+  process do |files|
+    r = ENV['ADC']
+    files.each do |src| 
+      if ! src.include? ".svn"
+	dest = "#{r}/#{src}"
+	puts "Copying #{src} to #{dest}"
+	execute("cp #{src} #{dest}")
+      end
+      files.delete(src)
+    end
+  end
diff --git a/INTEGRATING_WITH_V3.txt b/INTEGRATING_WITH_V3.txt
new file mode 100644
index 0000000..e360449
--- /dev/null
+++ b/INTEGRATING_WITH_V3.txt
@@ -0,0 +1,55 @@
+
+After the push to maven, check
+http://download.java.net/maven/2/com/sun/faces/jsf-impl/
+http://download.java.net/maven/2/com/sun/faces/jsf-api/
+
+to be sure that the push was successful.  It can take a while (30 minutes or so).
+
+You may wish delete the ~/.m2/repository/com/sun/faces directory to ensure a clean build.
+
+in the v3 source base:
+
+edit pom.xml
+
+change the two lines that look like this:
+
+<jsf-api.version>2.0.0-b09</jsf-api.version>
+<jsf-impl.version>2.0.0-b09</jsf-impl.version>
+
+to reflect the correct version numbers
+
+
+edit packager/pkg_conf.py.template
+
+change the line that looks like this:
+
+jsf_version="2.0.0,0-9"
+
+to have the latest version number
+
+
+Build v3, run the tests.  Sanity check admin-gui.  Since both of these tests were done
+before promotion, they should pass, but better safe than sorry.
+
+Putback changes to v3.
+
+Notify QE.
+
+
+Update source build:
+
+checkout https://glassfish-svn.dev.java.net/source/browse/glassfish-svn/trunk/external/source-build/
+
+edit build.properties
+Change the lines that contain mojarra, for example:
+
+mojarra.svn.url="https://mojarra.dev.java.net/svn/mojarra/tags/2.0.2-b06"
+mojarra.version="b06"
+
+test with:
+
+ant -Dexternal.dir=/tmp -Dmaven.repo.local=/tmp/maven -f mojarra.xml
+
+ensure that the correct files are pushed to the maven repo.
+
+commit changes
\ No newline at end of file
diff --git a/LICENSE b/LICENSE
index 8addcdd..f95cf37 100644
--- a/LICENSE
+++ b/LICENSE
@@ -90,7 +90,7 @@ You may create a Larger Work by combining Covered Software with other code not g
 
 4.1. New Versions.
 
-Sun Microsystems, Inc. is the initial license steward and may publish revised and/or new versions of this License from time to time. Each version will be given a distinguishing version number. Except as provided in Section 4.3, no one other than the license steward has the right to modify this License.
+Oracle America, Inc. is the initial license steward and may publish revised and/or new versions of this License from time to time. Each version will be given a distinguishing version number. Except as provided in Section 4.3, no one other than the license steward has the right to modify this License.
 
 4.2. Effect of New Versions.
 
@@ -258,8 +258,8 @@ This General Public License does not permit incorporating your program into prop
 
 "CLASSPATH" EXCEPTION TO THE GPL VERSION 2
 
-Certain source files distributed by Sun Microsystems, Inc. are subject to the following clarification and special exception to the GPL Version 2, but only where Sun has expressly included in the particular source file's header the words
-"Sun designates this particular file as subject to the "Classpath" exception as provided by Sun in the License file that accompanied this code."
+Certain source files distributed by Oracle America, Inc. are subject to the following clarification and special exception to the GPL Version 2, but only where Oracle has expressly included in the particular source file's header the words
+"Oracle designates this particular file as subject to the "Classpath" exception as provided by Oracle in the License file that accompanied this code."
 
 Linking this library statically or dynamically with other modules is making a combined work based on this library. Thus, the terms and conditions of the GNU General Public License Version 2 cover the whole combination.
 
diff --git a/PROMOTING_A_BUILD.txt b/PROMOTING_A_BUILD.txt
new file mode 100644
index 0000000..93cadcf
--- /dev/null
+++ b/PROMOTING_A_BUILD.txt
@@ -0,0 +1,253 @@
+Instructions on promoting a build:
+
+Engineering finishes JSF2.0 code.
+
+Ensure all tests pass via:
+ant clean main test.with.container.refresh
+
+Engineering verifies QL passes
+checkout v3 workspace.
+cd v3/tests/quicklook
+mvn -Dglassfish.home=$GLASSFISH test
+
+Do this first with a pristine Glassfish build, without the new jsf jars
+added in.  If the quicklook tests pass, you may proceed.  If not, you
+need to get this resolved before proceeding.
+
+Once you have a successful quicklook test, add in the new jsf jars, and
+re-run with the new jars in place.
+
+Engineering updates updatecenter2/conf/jsf_proto.py to correct version #. (ex: 2.0.1-0,1)
+
+If doing a new maven release, be sure to update the pom.xml files in each demo directory.
+
+MAKE SURE TO BUILD WITH the minimum required Java SE version.  For JSF
+2.0 and 2.1 this is Java SE 5.
+
+Tag build.
+Currently, we're using a tag format of
+2.0.1-bXX - where "XX" is a monotonically increasing number, incremented with every build.
+sample tagging command:
+svn copy https://mojarra.dev.java.net/svn/mojarra/trunk \
+         https://mojarra.dev.java.net/svn/mojarra/tags/2.0.1-b01 \
+         -m "Tag 2.0.1 Build 01"
+
+RE (Terena) promotes the build, with maven.deploy.promoted (ex: 2.0.1-b01)
+Engineering needs to give RE the tag name, build.type, and build.number
+RE changes variables found in common.xml (build.type, etc) via -D as part of build
+    build.type will be set to a value such as BETA, RC, FCS, etc.
+    build.number will be a monotonically increasing integer, incremented for each build (i.e., b01, b02)
+After the push to maven, check (it can take a while to show up, up to 30 minutes)
+http://download.java.net/maven/2/com/sun/faces/jsf-impl/
+http://download.java.net/maven/2/com/sun/faces/jsf-api/
+
+
+After testing, engineering integrates to v3 (including UC), see integration instructions.
+The integration pushes the new build bits to repine.
+
+QE runs qualification tests against repine (current GFv3), comfirms they pass.
+
+QE gives go-ahead.
+
+For a release, RE will then do a maven.deploy.release for a released build (ex: 2.0.1)
+
+Engineering then needs to once again integrate v3.
+
+
+RELEASING TO JAVA.NET
+=========================================
+NOTE: we currently don't push every promoted build to java.net.  These instructions
+      are for pushing a release to the public.  The steps above are valid in
+      all cases.
+
+ - Copy the downloaded binary and source bundles promoted from RE to a local
+   directory.  These bundles are what will be made available to the public.
+   (You can download them by ftp from rindge.sfbay.sun.com, cd to the provided directory
+   (currently /net/jws-sparc.sfbay/bld1/BUILD_AREA/jsf2.0/bundles/latest), and then
+   mget * - it's also possible to get these bundles via http, by visiting a site such as:
+   http://javaweb.sfbay/java/re/jsf/2.0.1/promoted/FCS/b02/archive/bundles/ )
+
+ - Prepare release notes:
+    + check out the website:  cvs -d :pserver:<j.net uid>@cvs.dev.java.net:/cvs co -P -d jsf-web javaserverfaces
+    + if releasing a new patch release:
+       * copy the directory structure of an existing version to the new version
+         (e.g. rsync -r -C 1.2_12/* 1.2_13).  If this is another cut
+       * replace the old version numbers with the new version numbers
+       * update changelog.html with:
+         - outline of new features (if any)
+         - new context init parameters (if any - see older release notes for examples)
+         - issues resolved
+           + To get the list of issues, use the report tool to generate a report
+             and gather a list of all issues resolved for this patch release
+             (this may span several builds).  The table for the resolved
+             issues should be two columns for the issue ID and description.
+             Ensure the ID is a hyperlink.  I use a FireFox addon called
+             Scrapbook to copy a selection of issues into a separate
+             html document and then cut/paste into changelog.html.  Don't forget
+             to update the row styles (again, see older changelogs for examples)
+        * check in the new directory structure and files
+     + if releasing an update to an existing version (i.e. 2.0.0 BETA1 to 2.0.0 BETA2)
+       * update the version in the existing release notes
+       * append the issues resolved between the two versions in changelog.xhtml
+         (Use the 2.0.0 release notes for an example)
+   - Upload the binary and source bundles to java.net.  The new directory
+     should be placed under: Downloads->Release->Version
+   - In the same directory, add a link that refers to the Release Notes (see
+     previous versions for an example)
+   - Update download.html:
+     + If necessary move the version being replaced to Archived Releases
+     + Add the new version using the existing format
+   - Create a new download button for the new version using
+     images/downloadbackground.png.  I use gimp to do the image manipulation.
+     Add the new version to the template using Sans Bold font.  Adjust the
+     font weight to fill the button.  Save the image as download<version>.png
+     (e.g. download1212.png).  Check the image in to CVS.
+   - Update index.html to reference the new download button.  Have the link
+     the image refers to point to the folder containing the new build (should
+     display the source, binary, and release notes).
+   - Add a new announcement using the project's news facility.  Use existing
+     announcements as a template.
+
+SECTION: Notes from the last time Roger promoted a build:
+
+From: Roger Kitain <roger.kitain at oracle.com>
+To: Barbara Louis <barbara.louis at oracle.com>
+CC: Ed Burns <edward.burns at oracle.com>, 
+ Ryan Lubke <ryan.lubke at oracle.com>,
+ "VARTAK,SHEETAL" <sheetal.vartak at oracle.com>, 
+ Jill Sato <jill.sato at oracle.com>,
+ dougd <Douglas.Donahue at oracle.COM>, 
+ Roger Kitain <Roger.Kitain at Oracle.COM>
+Subject: Re: Need To Do Another JSF Promotion
+Date: Wed, 30 Jun 2010 21:25:50 -0400
+Content-Type: text/plain; charset=ISO-8859-1; format=flowed
+MIME-Version: 1.0
+
+Ok Folks -
+
+Looks like we are making progress...
+It appears that I now have privileges to push artifacts to our java.net 
+maven repository.
+So here's what I've done:
+
+1. Ryan recommended I create a new tag so I created:
+      https://mojarra.dev.java.net/svn/mojarra/tags/2.0.3-b03
+     from the previous tag (2.0.3-b02).
+
+2. Built the new tag locally using the build.type and build.number 
+parameters:
+      ant -Dbuild.type=FCS -Dbuild.number=b03 clean main
+
+3. Tests the new jars locally with my GlassFish v3.1 install:
+      ant container.deploy
+      fired up GlassFish and Admin console; checked logs to make sure 
+the correct JSF build string was displayed:
+          Initializing Mojarra 2.0.3 (FCS b03) ....
+
+4. Tested the maven deploy targets locally (for jsf-api and jsf-ri):
+     cd jsf-api;  ant mvn.deploy.promoted.local -Dbuild.number=b03
+     cd jsf-ri; ant mvn.deploy.promoted.local -Dbuild.number=b03
+
+5. Pushed the jars out to maven repo:
+     cd jsf-api; ant mvn.deploy.promoted -Dbuild.number=b03
+     cd jsf-ri; ant mvn.deploy.promoted.local -Dbuild.number=b03
+
+Now I am integrating into GlassFish v3.1 locally (first)...
+
+-roger
+
+From: Roger Kitain <roger.kitain at oracle.com>
+To: Barbara Louis <barbara.louis at oracle.com>
+CC: Ed Burns <edward.burns at oracle.com>, 
+ Ryan Lubke <ryan.lubke at oracle.com>,
+ "VARTAK,SHEETAL" <sheetal.vartak at oracle.com>, 
+ Roger Kitain <Roger.Kitain at Oracle.COM>,
+ Jill Sato <jill.sato at oracle.com>
+Subject: Re: Need To Do Another JSF Promotion
+Date: Wed, 30 Jun 2010 11:42:28 -0400
+Content-Type: text/plain; charset=ISO-8859-1; format=flowed
+MIME-Version: 1.0
+
+Folks -
+
+Maybe it's just me - but I ran into some issues with the last JSF 
+promotion (2.0.3-b02) when I was attempting to
+do a test integration into my local GlassFish 3.1 install.  Jill helped 
+me get the Mojarra artifacts out in the Maven repository.
+Apparently, I missed (and misunderstood) this step in our Mojarra 
+PROMOTING_A_BUILD.txt file:
+
+"RE (Terena) promotes the build, with maven.deploy.promoted (ex: 2.0.1-b01)
+Engineering needs to give RE the tag name, build.type, and build.number
+RE changes variables found in common.xml (build.type, etc) via -D as 
+part of build
+     build.type will be set to a value such as BETA, RC, FCS, etc.
+     build.number will be a monotonically increasing integer, 
+incremented for each build (i.e., b01, b02)
+After the push to maven, check (it can take a while to show up, up to 30 
+minutes)
+http://download.java.net/maven/2/com/sun/faces/jsf-impl/
+http://download.java.net/maven/2/com/sun/faces/jsf-api/"
+
+Terena is no longer with us, so Barbara suggested we have Ryan do a 
+brief TOI for us so we can all synch up on
+the correct process - as Ed, myself and Sheetal (working wth Jill) will 
+be doing these frequently.
+This may be a review for some, but I feel this is necessary to get 
+everyone on the same page.
+If possible I would like to do today (if not tomorrow) sometime.  Please 
+let me know your
+availability (I know Ed is traveling to Philadelphia today and will be 
+available sometime later today).
+
+Thanks, Roger.
+
+From: Roger Kitain <roger.kitain at oracle.com>
+To: jsfaces_core_us at oracle.com, Barbara Louis <Barbara.Louis at oracle.com>, 
+ Ryan Lubke <ryan.lubke at oracle.com>
+Subject: Need To Do Another JSF Promotion
+Date: Wed, 30 Jun 2010 05:52:32 -0400
+Content-Type: text/plain; charset=ISO-8859-1; format=flowed
+MIME-Version: 1.0
+
+In my attempts to do a test integration of JSF into GlassFish trunk 
+(locally), I discovered
+that the version of Mojarra displayed in the logs was:
+Mojarra 2.0.3 (SNAPSHOT 20100618).
+
+I asked Ryan about this and apparently a step was missed outlined in the
+mojarra PROMOTING_A_BUILD.txt file.  In that file, we say:
+
+"RE (Terena) promotes the build, with maven.deploy.promoted (ex: 2.0.1-b01)
+Engineering needs to give RE the tag name, build.type, and build.number
+RE changes variables found in common.xml (build.type, etc) via -D as 
+part of build
+     build.type will be set to a value such as BETA, RC, FCS, etc.
+     build.number will be a monotonically increasing integer, 
+incremented for each build (i.e., b01, b02)
+After the push to maven, check (it can take a while to show up, up to 30 
+minutes)
+http://download.java.net/maven/2/com/sun/faces/jsf-impl/
+http://download.java.net/maven/2/com/sun/faces/jsf-api/
+"
+
+Actually, Terena is no longer with us, so I was trying to work with Jill 
+Saito.
+Jill, was not familiar with the process Terena used for JSF.
+After attempting to push the artifacts myself - (only to discover I did 
+not have privileges),
+I worked with Jill to get the artifacts pushed.
+I also noticed that the pom artifacts out on the maven repo for the 
+recently pushed
+2.0.3-b02 promotion (under http://download.java.net/maven/2/com/sun/faces/)
+do not have the copyright header.
+
+Ryan suggested we cut a new tag (2.0.3-b03) and do another promotion.  I 
+really would like
+to get someone's undivided attention to nail down the process and update 
+the
+PROMOTING_A_BUILD.txt file if necessary before I do another promotion.
+Perhaps Jill (or whoever has taken over for Terena needs to be involved 
+as well).
+
+-roger
diff --git a/TEST.txt b/TEST.txt
new file mode 100644
index 0000000..3b12464
--- /dev/null
+++ b/TEST.txt
@@ -0,0 +1 @@
+TEST
\ No newline at end of file
diff --git a/TESTING_A_BUILD.txt b/TESTING_A_BUILD.txt
new file mode 100644
index 0000000..5b9fe4a
--- /dev/null
+++ b/TESTING_A_BUILD.txt
@@ -0,0 +1,59 @@
+
+For testing the build with v2, simply run 
+
+update build.properties to point to the correct directory
+container.name=glassfish
+container.home=/glassfish/home/directory
+make sure that password.txt is found in container.home
+set ANT_OPTS to be -Xms512m -Xmx786m -XX:MaxPermSize=786m
+ant test.with.container.refresh
+-or-
+start glassfish (asadmin start-domain)
+ant build.and.deploy # make sure that you'll actually test the changes
+ant test
+
+For testing the build with v3:
+Quicklook tests:
+ant build.and.debug
+checkout v3
+cd tests/quicklook
+mvn -Dglassfish.home=/home/glassfish/dir test
+
+JSF tests:
+Be sure to install glassfish with a password on admin
+make sure that password.txt is found in container.home
+container.name=glassfishV3
+container.home=/glassfish/home/directory
+home may be one level down in standard distro (glassfish/glassfish)
+ant test.with.container.refresh
+-or-
+start glassfish (asadmin start-domain)
+ant main container.deploy # make sure that you'll actually test the changes
+ant test
+
+
+Testing V3 Trunk without relying on an RE build
+----------------------------------------------------------
+
+${MOJARRA_2.0_REPO} -> directory in which the Mojarra 2.0.x sources are checked out
+${BUILD.NUMBER}     -> the build number that RE would use for the promotion
+${BUILD.TYPE}       -> the build type RE would use for the promotion
+
+
+cd ${MOJARRA_2.0_REPO}
+ant -Dbuild.number=${BUILD.NUMBER} -Dbuild.type=${BUILD.TYPE} clean main
+cd jsf-api && ant -Dbuild.number=${BUILD.NUMBER} -Dbuild.type=${BUILD.TYPE} mvn.deploy.promoted.local && cd ..
+cd jsf-ri && ant -Dbuild.number=${BUILD.NUMBER} -Dbuild.type=${BUILD.TYPE} mvn.deploy.promoted.local && cd ..
+
+This will produce the same result as what RE would produce so that the version strings, etc
+can all be verified.
+
+After running these steps you should be able to ls:
+
+    ~/.m2/repository/com/sun/faces/jsf-api/2.0.0-${BUILD.NUMBER}/jsf-api-2.0.0-${BUILD.NUBMER}.jar
+    ~/.m2/repository/com/sun/faces/jsf-impl/2.0.0-${BUILD.NUMBER}/jsf-impl-2.0.0-${BUILD.NUMBER}.jar
+
+
+Update your v3/pom.xml to refer to the new build.
+Build V3, and unpack the glassfish distribution (i.e. distributions/glassfish/target).
+Run the quicklook tests per usual.
diff --git a/build-source.xml b/build-source.xml
index 1dc0bc9..301375a 100644
--- a/build-source.xml
+++ b/build-source.xml
@@ -1,41 +1,45 @@
 <?xml version='1.0' encoding='UTF-8'?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
--->
 
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
 
 <!-- ************ JSF build file ************************************** -->
 
diff --git a/build.properties.glassfish b/build.properties.glassfish
index 28bbb26..3f13fcd 100644
--- a/build.properties.glassfish
+++ b/build.properties.glassfish
@@ -1,39 +1,45 @@
 #
-# The contents of this file are subject to the terms
-# of the Common Development and Distribution License
-# (the License). You may not use this file except in
-# compliance with the License.
-# 
-# You can obtain a copy of the License at
-# https://javaserverfaces.dev.java.net/CDDL.html or
-# legal/CDDLv1.0.txt. 
-# See the License for the specific language governing
-# permission and limitations under the License.
-# 
-# When distributing Covered Code, include this CDDL
-# Header Notice in each file and include the License file
-# at legal/CDDLv1.0.txt.    
-# If applicable, add the following below the CDDL Header,
-# with the fields enclosed by brackets [] replaced by
-# your own identifying information:
-# "Portions Copyrighted [year] [name of copyright owner]"
-# 
-# [Name of File] [ver.__] [Date]
-# 
-# Copyright 2005 Sun Microsystems Inc. All Rights Reserved
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 #
+# Copyright (c) 2005-2010 Oracle and/or its affiliates. All rights reserved.
 #
-# -----------------------------------------------------------------------------
-# build.properties.glassfish
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
 #
-# This build.properties allows for the building of 
-# javaserverfaces-sources against Glassfish.
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
 #
-# $Id: build.properties.glassfish,v 1.14 2008/04/02 20:00:03 rlubke Exp $
-# -----------------------------------------------------------------------------
 
 # --------------------------------------------------
-#   BUILD REQUIRES ANT 1.7.0 OR ABOVE
+#   BUILD REQUIRES ANT 1.8.1 OR ABOVE
 # --------------------------------------------------
 
 # --------------------------------------------------
@@ -47,7 +53,8 @@ jsf.build.home=<SET CURRENT DIRECTORY>
 # http.proxy.port if the build environment is
 # behind a firewall.  This is necessary in order
 # for the build system to download the required
-# dependencies.
+# dependencies.  This is necessary for building
+# inside Oracle.
 # --------------------------------------------------
 http.proxy.host=
 http.proxy.port=
@@ -57,9 +64,12 @@ http.proxy.port=
 #      to the container.xml file in 
 #      ${jsf.build.home}/common/ant/${container.name}
 #
-#  For Glassfish V1/V2, use:      glassfish
-#  For GlassFish V3 Prelude, use: glassfishV3prelude
-#  For GlassFish V3, use:         glassfishV3
+#  For Glassfish V1/V2, use:                   glassfish
+#  For GlassFish V3 Prelude, use:              glassfishV3prelude
+#  For GlassFish V3, use:                      glassfishV3
+#  For GlassFish V3.1, use:                    glassfishV3.1
+#  For GlassFish V3.1 with no clustering, use: glassfishV3.1_no_cluster
+
 # --------------------------------------------------
 container.name=glassfish
 
@@ -73,6 +83,10 @@ container.home=
 container.host=localhost
 container.port=8080
 
+# these are the properties necessary to pass on the command line to
+# configure an alternate port set for the automated tests.
+# -Dcontainer.port=20080 -Dglassfish.domain=myDomain -Dglassfish.admin.port=20048
+
 # --------------------------------------------------
 #    Glassfish specific properties needed by
 #    ${jsf.build.home}/common/ant/glassfish/container.xml
@@ -154,10 +168,10 @@ halt.on.failure=yes
 # --------------------------------------------------
 #    Unix
 # --------------------------------------------------
-#debug.jvm.args = -Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n
+#debug.jvm.args = -agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=n
 
 # --------------------------------------------------
 #    Windows
 ## -------------------------------------------------- 
-#debug.jvm.args = -Xdebug -Xrunjdwp:transport=dt_shmem,address=jdbconn,server=y,suspend=n
+#debug.jvm.args = -agentlib:jdwp=transport=dt_shmem,address=jdbconn,server=y,suspend=n
 
diff --git a/build.properties.tomcat b/build.properties.tomcat
new file mode 100644
index 0000000..dc6ae92
--- /dev/null
+++ b/build.properties.tomcat
@@ -0,0 +1,138 @@
+#
+# The contents of this file are subject to the terms
+# of the Common Development and Distribution License
+# (the License). You may not use this file except in
+# compliance with the License.
+# 
+# You can obtain a copy of the License at
+# https://javaserverfaces.dev.java.net/CDDL.html or
+# legal/CDDLv1.0.txt. 
+# See the License for the specific language governing
+# permission and limitations under the License.
+# 
+# When distributing Covered Code, include this CDDL
+# Header Notice in each file and include the License file
+# at legal/CDDLv1.0.txt.    
+# If applicable, add the following below the CDDL Header,
+# with the fields enclosed by brackets [] replaced by
+# your own identifying information:
+# "Portions Copyrighted [year] [name of copyright owner]"
+# 
+# [Name of File] [ver.__] [Date]
+# 
+# Copyright 2005 Sun Microsystems Inc. All Rights Reserved
+#
+#
+# -----------------------------------------------------------------------------
+# build.properties.tomcat
+#
+# This build.properties allows for the building of 
+# javaserverfaces-sources against Tomcat.
+#
+# $Id: build.properties.glassfish,v 1.14 2008/04/02 20:00:03 rlubke Exp $
+# -----------------------------------------------------------------------------
+
+# --------------------------------------------------
+#   BUILD REQUIRES ANT 1.8.1 OR ABOVE
+# --------------------------------------------------
+
+# --------------------------------------------------
+# Set this to the directory in which the sources
+# were checked out into
+# --------------------------------------------------
+jsf.build.home=
+
+# --------------------------------------------------
+# Set the values for http.proxy.host and 
+# http.proxy.port if the build environment is
+# behind a firewall.  This is necessary in order
+# for the build system to download the required
+# dependencies.
+# --------------------------------------------------
+http.proxy.host=
+http.proxy.port=
+
+# --------------------------------------------------
+#    Container Name - a simple identifier which maps
+#      to the container.xml file in 
+#      ${jsf.build.home}/common/ant/${container.name}
+#
+#  For Tomcat 6, use:             tomcat6
+# --------------------------------------------------
+container.name=
+
+# --------------------------------------------------
+#    Path to the web container installation.
+#    This is only necessary if running the unit tests
+#    Override the default value if testing against
+#    a different version is desirable.
+# --------------------------------------------------
+container.home=
+container.host=localhost
+container.port=8080
+
+# --------------------------------------------------
+#    Tomcat specific properties needed by
+#    ${jsf.build.home}/common/ant/tomcat6/container.xml
+#
+#    These are used specifically for testing.  Override
+#    the defaults if desired.
+#
+#    tomcat.Xms - min value of the memory for th tomcat VM
+#    tomcat.Xmx - max value of the memory for the tomcat VM
+#    tomcat.debug.port - port on which to listen for debugging
+# --------------------------------------------------
+tomcat.Xms=64M
+tomcat.Xmx=128M
+tomcat.debug.port=8000
+
+# --------------------------------------------------
+#    Compilation flags
+# --------------------------------------------------
+compile.deprecation=off
+compile.debug=true
+
+# --------------------------------------------------
+#    Java 'Endorsed' directory
+# --------------------------------------------------
+endorsed.dirs=
+
+# --------------------------------------------------
+#    Web application packaging
+#      - true: no dependent libraries packaged with
+#              applications
+#      - false: dependent libraries packaged with
+#               applications
+#    Note that this is true by default, because some
+#    tests do require libraries that are not shipped
+#    by default with Tomcat (e.g. JSTL)
+# --------------------------------------------------
+build.standalone=true
+
+# --------------------------------------------------
+#   Unit testing 
+#     - If 'yes', then the unit tests will stop 
+#       running if any failure occurs
+#     - If 'no', then the unit tests will run 
+#       through to completion regardless of errors
+# --------------------------------------------------
+halt.on.failure=yes  
+
+
+# --------------------------------------------------
+#     Debugging control Flags 
+#
+# Define the arguments to give to the jvm to enable debugging
+# If this is commented out, no debugging arguments will be passed.
+# Make sure to uncomment the proper arguments for your platform.
+# --------------------------------------------------
+
+# --------------------------------------------------
+#    Unix
+# --------------------------------------------------
+#debug.jvm.args = -agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=y
+
+# --------------------------------------------------
+#    Windows
+## -------------------------------------------------- 
+#debug.jvm.args = -agentlib:jdwp=transport=dt_shmem,address=jdbconn,server=y,suspend=n
diff --git a/build.properties.weblogic b/build.properties.weblogic
new file mode 100644
index 0000000..21265d4
--- /dev/null
+++ b/build.properties.weblogic
@@ -0,0 +1,164 @@
+#
+# The contents of this file are subject to the terms
+# of the Common Development and Distribution License
+# (the License). You may not use this file except in
+# compliance with the License.
+# 
+# You can obtain a copy of the License at
+# https://javaserverfaces.dev.java.net/CDDL.html or
+# legal/CDDLv1.0.txt. 
+# See the License for the specific language governing
+# permission and limitations under the License.
+# 
+# When distributing Covered Code, include this CDDL
+# Header Notice in each file and include the License file
+# at legal/CDDLv1.0.txt.    
+# If applicable, add the following below the CDDL Header,
+# with the fields enclosed by brackets [] replaced by
+# your own identifying information:
+# "Portions Copyrighted [year] [name of copyright owner]"
+# 
+# [Name of File] [ver.__] [Date]
+# 
+# Copyright 2005 Sun Microsystems Inc. All Rights Reserved
+#
+#
+# -----------------------------------------------------------------------------
+# build.properties.glassfish
+#
+# This build.properties allows for the building of 
+# javaserverfaces-sources against Glassfish.
+#
+# $Id: build.properties.glassfish,v 1.14 2008/04/02 20:00:03 rlubke Exp $
+# -----------------------------------------------------------------------------
+
+# --------------------------------------------------
+#   BUILD REQUIRES ANT 1.8.1 OR ABOVE
+# --------------------------------------------------
+
+# --------------------------------------------------
+# Set this to the directory in which the sources
+# were checked out into
+# --------------------------------------------------
+jsf.build.home=/home/ejburns/Documents/JavaEE/workareas/mojarra-2HEAD
+maven.repo.local=/scratch/ejburns/Documents/JavaEE/workareas/mvnrepository
+# --------------------------------------------------
+# Set the values for http.proxy.host and 
+# http.proxy.port if the build environment is
+# behind a firewall.  This is necessary in order
+# for the build system to download the required
+# dependencies.
+# --------------------------------------------------
+http.proxy.host=www-proxy.us.oracle.com
+http.proxy.port=80
+
+# --------------------------------------------------
+#    Container Name - a simple identifier which maps
+#      to the container.xml file in 
+#      ${jsf.build.home}/common/ant/${container.name}
+#
+#  For Glassfish V1/V2, use:      glassfish
+#  For GlassFish V3 Prelude, use: glassfishV3prelude
+#  For GlassFish V3, use:         glassfishV3
+#  For GlassFish V3.1, use:       glassfishV3.1
+#  For Weblogic 10.3.4 use:       wls-10.3.4_no_cluster
+# --------------------------------------------------
+container.name=wls-10.3.4_no_cluster
+
+# --------------------------------------------------
+#    Path to the web container installation.
+#    This is only necessary if running the unit tests
+#    Override the default value if testing against
+#    a different version is desirable.
+# --------------------------------------------------
+container.home=/home/ejburns/Documents/JavaEE/runtimes/wls-10.3.4
+container.host=localhost
+container.port=7001
+
+# --------------------------------------------------
+#    Glassfish specific properties needed by
+#    ${jsf.build.home}/common/ant/glassfish/container.xml
+#
+#    These are used specifically for testing.  Override
+#    the defaults if desired.
+#
+#    glassfish.admin.user - administrative user
+#    glassfish.password.file - file containing the 
+#     ${admin.user}'s password.  This is a simple
+#     file consisting of:
+#        AS_ADMIN_PASSWORD=<password>
+#     The default password file will have the password
+#     of 'adminadmin'.
+#    glassfish.admin.host - host of the 
+#     Glassfish administrative server (usually
+#     the same as ${container.host} above.
+#    glassfish.admin.port - port number the
+#     Glassfish administrative server is listening
+#     on.  This defaults to 4848.
+#    glassfish.domain - the default Glassfish domain.
+# --------------------------------------------------
+glassfish.home=${container.home}
+glassfish.admin.user=admin
+glassfish.password.file=${jsf.build.home}/password.txt
+glassfish.admin.host=${container.host}
+glassfish.admin.port=4848
+glassfish.domain=domain1
+
+# --------------------------------------------------
+# Directory for pkg tools, downloaded from
+# http://wiki.updatecenter.java.net/Wiki.jsp?page=Download
+# Used for updatecenter2
+# Note: 2.1RR is the minimum required version
+# Be sure to specify the "pkg" directory under the distro
+# For example:
+# pkg.dir=/home/username/pkg/pkg
+# --------------------------------------------------
+pkg.dir=
+
+# --------------------------------------------------
+#    Compilation flags
+# --------------------------------------------------
+compile.deprecation=off
+compile.debug=true
+
+# --------------------------------------------------
+#    Java 'Endorsed' directory
+# --------------------------------------------------
+endorsed.dirs=
+
+# --------------------------------------------------
+#    Web application packaging
+#      - true: no dependent libraries packaged with
+#              applications
+#      - false: dependent libraries packaged with
+#               applications
+# --------------------------------------------------
+build.standalone=false
+
+# --------------------------------------------------
+#   Unit testing 
+#     - If 'yes', then the unit tests will stop 
+#       running if any failure occurs
+#     - If 'no', then the unit tests will run 
+#       through to completion regardless of errors
+# --------------------------------------------------
+halt.on.failure=yes
+
+
+# --------------------------------------------------
+#     Debugging control Flags 
+#
+# Define the arguments to give to the jvm to enable debugging
+# If this is commented out, no debugging arguments will be passed.
+# Make sure to uncomment the proper arguments for your platform.
+# --------------------------------------------------
+
+# --------------------------------------------------
+#    Unix
+# --------------------------------------------------
+#debug.jvm.args = -agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=y
+
+# --------------------------------------------------
+#    Windows
+## -------------------------------------------------- 
+#debug.jvm.args = -agentlib:jdwp=transport=dt_shmem,address=jdbconn,server=y,suspend=n
diff --git a/build.xml b/build.xml
index ce0a434..6c6f2cb 100644
--- a/build.xml
+++ b/build.xml
@@ -1,41 +1,45 @@
 <?xml version='1.0' encoding='UTF-8'?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
--->
 
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
 
 <!-- ************ JSF build file ************************************** -->
 
@@ -48,7 +52,6 @@
     <import file="${jsf.build.home}/common/ant/common.xml"/>
     <property name="tasks.home" value="${myenv.TASKS_HOME}"/>
     <property name="dist.dir" value="${basedir}/dist"/>
-    <property name="javaserverfaces-spec-eg.dir" value="${basedir}/../javaserverfaces-spec-eg-HEAD"/>
 
 
     <property name="LICENSEFILE"
@@ -62,38 +65,63 @@
     <macrodef name="call.modules">
         <attribute name="target"/>
         <sequential>
+            <if>
+                <equals arg1="clean" arg2="@{target}" />
+                <then>
+                    <jsf.mvn dir="${basedir}/jsf-tools" goals="@{target}" />
+                    <subant target="@{target}" inheritAll="false">
+                      <property name="force.no.cluster" value="${force.no.cluster}" />
+                      <filelist dir="${api.dir}">
+                          <file name="build-pre-maven-rename.xml"/>
+                      </filelist>    
+                      <filelist dir="${impl.dir}">
+                          <file name="build-pre-maven-rename.xml"/>
+                      </filelist>
+                  </subant>
+                </then>
+            </if>
+            <if>
+                <equals arg1="main" arg2="@{target}" />
+                <then>
+                    <jsf.mvn dir="${basedir}/jsf-tools" goals="install" />
+                </then>
+            </if>
             <subant target="@{target}" inheritAll="false">
+                <property name="force.no.cluster" value="${force.no.cluster}" />
                 <filelist dir="${api.dir}">
                     <file name="build.xml"/>
                 </filelist>    
                 <filelist dir="${impl.dir}">
                     <file name="build.xml"/>
                 </filelist>
-                <!-- taking jsf-demo out of the standard build/test loop
-                     as one can't build the current source bundle as jsf-demo
-                     isn't included
-                <filelist dir="${demo.dir}">
-                    <file name="build.xml"/>
-                </filelist>
-                     -->
             </subant>
         </sequential>
     </macrodef>
 
     <target name="clean"
             description="Clean build and distribution directories">       
+        <subant target="clean" inheritAll="false">
+          <filelist dir="${regression.test.dir}">
+            <file name="build.xml"/>
+          </filelist>
+        </subant>
         <delete file="mojarra-samples.zip"/>
         <delete dir="${basedir}/build"/>
         <delete dir="${dist.dir}"/>
         <call.modules target="clean"/>        
         <ant dir="jsf-demo" target="clean" />
         <ant dir="updatecenter2" target="updatecenter2.clean" />
-        <antcall target="remove.netbeans.186761.hack" />
     </target>  
 
-    <target name="modules.clean">
-      <call.modules target="clean"/>        
-    </target>
+    <target name="clean.mojarra.only"
+            description="Clean just the Mojarra code">       
+        <subant target="clean" inheritAll="false">
+          <filelist dir="${jsf.build.home}">
+            <file name="jsf-api/build.xml" />
+            <file name="jsf-ri/build.xml" />
+          </filelist>
+        </subant>
+    </target>  
 
     <target name="main" description="Build Mojarra">
         <call.modules target="main"/>
@@ -117,10 +145,119 @@
 
     <target name="test" description="Run API, Impl, and Demo automated tests">
         <call.modules target="test"/>
+        <subant target="test" inheritAll="false" failonerror="true">
+          <filelist dir="${regression.test.dir}">
+              <file name="build.xml"/>
+          </filelist>
+        </subant>
+
+    </target>
+
+    <target name="test.with.cactus.tests" description="Run API, Impl, and Demo automated tests">
+        <call.modules target="test"/>
+        <subant target="run.cactus.test" inheritAll="false">
+          <property name="force.no.cluster" value="${force.no.cluster}" />
+          <filelist dir="${impl.dir}">
+            <file name="build.xml"/>
+          </filelist>
+        </subant>
+        <subant target="test" inheritAll="false" failonerror="true">
+          <filelist dir="${regression.test.dir}">
+              <file name="build.xml"/>
+          </filelist>
+        </subant>
+
     </target>
 
+
     <target name="test.with.container.refresh"
             description="Stop the target container, deploy the build artifacts, restart the container and test">
+        <trycatch reference="exception_ref">
+            <try>
+                <container.stop/>
+                <antcall target="container.deploy"/>
+                <echo message="Successfully deployed JSF implementation to container." />
+                <echo message="About to start container." />
+                <container.start/>
+                <echo message="Successfully started container." />
+                <echo message="About to invoke tests." />
+                <antcall target="test"/>
+
+                <!-- taking jsf-demo out of the standard build/test loop
+                     as one can't build the current source bundle as jsf-demo
+                     isn't included
+                <filelist dir="${demo.dir}">
+                    <file name="build.xml"/>
+                </filelist>
+                     -->
+
+
+                <echo message="Successfully invoked test." />
+
+            </try>
+
+            <catch>
+               <property name="exception" refid="exception_ref" />
+               <property name="message" value="Error in trycatch block:${line.separator}${exception}" />
+               <echo message="${message}" />
+               <fail message="${message}" />
+            </catch>
+
+            <finally>
+
+                <echo message="About to stop container." />
+                <container.stop/>
+
+            </finally>
+        </trycatch>
+
+    </target>
+
+    <target name="test.with.cactus.tests.with.container.refresh"
+            description="Stop the target container, deploy the build artifacts, restart the container and test">
+        <trycatch reference="exception_ref">
+            <try>
+                <container.stop/>
+                <antcall target="container.deploy"/>
+                <echo message="Successfully deployed JSF implementation to container." />
+                <echo message="About to start container." />
+                <container.start/>
+                <echo message="Successfully started container." />
+                <echo message="About to invoke tests." />
+                <antcall target="test.with.cactus.tests"/>
+
+                <!-- taking jsf-demo out of the standard build/test loop
+                     as one can't build the current source bundle as jsf-demo
+                     isn't included
+                <filelist dir="${demo.dir}">
+                    <file name="build.xml"/>
+                </filelist>
+                     -->
+
+                <echo message="Successfully invoked test." />
+
+            </try>
+
+            <catch>
+               <property name="exception" refid="exception_ref" />
+               <property name="message" value="Error in trycatch block:${line.separator}${exception}" />
+               <echo message="${message}" />
+               <fail message="${message}" />
+            </catch>
+
+            <finally>
+
+                <echo message="About to stop container." />
+                <container.stop/>
+
+            </finally>
+        </trycatch>
+
+    </target>
+
+
+    <target name="smoketest.with.container.refresh"
+            description="Stop the target container, deploy the build artifacts, restart the container and run systest with partial state saving enabled">
         <trycatch>
             <try>
                 <container.stop/>
@@ -130,7 +267,21 @@
                 <container.start/>
                 <echo message="Successfully started container." />
                 <echo message="About to invoke tests." />
-                <call.modules target="test"/>
+                <subant target="init.test" inheritAll="false">
+                  <filelist dir="${impl.dir}">
+                      <file name="build.xml"/>
+                  </filelist>
+                </subant>
+                <subant target="compile.test" inheritAll="false">
+                  <filelist dir="${impl.dir}">
+                      <file name="build.xml"/>
+                  </filelist>
+                </subant>
+                <subant target="test.partial.true" inheritAll="false">
+                  <filelist dir="${impl.dir}/systest">
+                      <file name="build.xml"/>
+                  </filelist>
+                </subant>
                 <echo message="Successfully invoked test." />
             </try>
             <finally>
@@ -140,6 +291,60 @@
         </trycatch>
     </target>
 
+   <target name="generate.smoketest.reports">
+      <property name="test.report.dir" value="${impl.dir}/build/test-reports" />
+      <mkdir dir="${test.report.dir}" />
+      <mkdir dir="${test.report.dir}/html" />
+      <junitreport todir="${test.report.dir}">
+        <fileset dir="${impl.dir}/testresults/systest">
+          <include name="TEST-*.xml" />
+        </fileset>
+        <report format="frames" todir="${test.report.dir}/html" />
+      </junitreport>
+   </target>
+
+
+    <target name="test.with.container.refresh.and.generate.reports"
+            depends="test.with.container.refresh,generate.reports" />
+
+    <target name="smoketest.with.container.refresh.and.generate.reports"
+            depends="smoketest.with.container.refresh,generate.smoketest.reports" />
+
+    <target name="generate.reports">
+      <ant dir="jsf-ri" antfile="build.xml" target="generate.reports"/>
+    </target>
+
+    <target name="assert.expected.passed.test.count">
+      <if>
+        <isset property="expected.passed.test.count" />
+        <then> 
+<echo>perform the assertion</echo>
+         <sequential>
+           <property name="test.report.dir" 
+                     value="${impl.dir}/build/test-reports" />
+           <loadfile property="report.summary"
+                     srcFile="${test.report.dir}/html/overview-summary.html" />
+           <propertyregex property="actual.passed.test.count"
+                          input="${report.summary}"
+                          regexp="(?s)(.*)(href=.all-tests.html.>)([0-9]{1,6})(.*)"
+                          select="\3"
+           />
+           <math result="passed.test.count.difference" datatype="int"
+                 operation="subtract" 
+                 operand1="${actual.passed.test.count}"
+                 operand2="${expected.passed.test.count}" />
+           <propertyregex property="actual.lessthan.expected"
+                          input="${passed.test.count.difference}"
+                          regexp="^-.*"
+                          replace="actual.lessthan.expected" />
+           <fail if="actual.lessthan.expected" status="-1"
+                 message="
+--JOB FAILED!-- Fewer than expected tests passed.  Expected: ${expected.passed.test.count} Actual: ${actual.passed.test.count}"/>
+          </sequential>
+        </then>
+      </if>
+    </target>
+
     <target name="build.and.debug" depends="clean, main"
             description="Clean, build, and deploy, restarting in debug mode">
         <trycatch>
@@ -201,6 +406,20 @@
         <delete dir="${basedir}/srctemp"/>
     </target>
 
+   <target name="jsf.source.tlda">
+
+     <delete failonerror="false" dir="${dist.dir}/srctemp"/>
+     <mkdir dir="${dist.dir}/srctemp"/>
+     <unzip src="${dist.dir}/mojarra-${impl.version}-source.zip"
+            dest="${dist.dir}/srctemp"/>
+     <get src="http://anybodys.us.oracle.com/java/javaee/Specs/JSF/README_TLDA.txt"
+          dest="${dist.dir}/srctemp/mojarra-${impl.version}-source/legal/README_TLDA.txt" />
+     <zip destfile="${dist.dir}/mojarra-${impl.version}-source-tlda.zip"
+          basedir="${dist.dir}/srctemp"/>
+     <delete failonerror="false" dir="${dist.dir}/srctemp"/>
+
+   </target>
+
    <target name="dist" description="Build distribution files"
            depends="main">
         
@@ -224,20 +443,7 @@
 
    </target>
 
-   <target name="copy.spec.pdf" if="spec-eg-dir-available">
-       <echo message="Copying PDF spec for build: ${build.number} from ${javaserverfaces-spec-eg.dir} to ${spec.snapshot.dir}" />
-
-       <copy todir="${spec.snapshot.dir}" flatten="true">
 
-         <fileset dir="${javaserverfaces-spec-eg.dir}">
-
-           <include name="**/*${build.number}*.pdf" />
-
-         </fileset>
-
-       </copy>
-
-   </target>
 
    <target name="deploy.spec.locally" if="spec-eg-dir-available">
 
@@ -256,17 +462,14 @@
 
    </target>
 
-   <target name="test.spec-eg-dir-available">
-       <available type="dir" file="${javaserverfaces-spec-eg.dir}"
-                  property="spec-eg-dir-available" />
-   </target>
-
    <target name="build.spec.snapshot" depends="dist">
 
+       <echo message="build.number: ${build.number}" />
+
        <available type="dir" file="${javaserverfaces-spec-eg.dir}"
                   property="spec-eg-dir-available" />
 
-       <antcall target="copy.spec.pdf" />
+       <ant dir="${demo.dir}" target="copy.spec.pdf" />
 
        <echo message="Unzipping ${demo.dir}/dist/docs/mojarra-${impl.version}-documentation.zip to ${spec.snapshot.dir}" />
        <unzip src="${demo.dir}/dist/docs/mojarra-${impl.version}-documentation.zip"
@@ -313,9 +516,7 @@
                                    fromFile="${dist.dir}/mojarra-${impl.version}-source.zip"
                                    fileDescription="Mojarra ${impl.version.number} nightly source bundle."
                                    overwrite="yes"/>
-                    <echo message="Deploying jsf-api.jar snapshot to the java.net M2 repository..."/>
-                    <ant antfile="${api.dir}/build.xml" target="mvn.deploy.snapshot"/>
-                    <echo message="Deploying jsf-impl.jar snapshot to the java.net M2 repository..."/>
+                    <echo message="Deploying javax.faces.jar snapshot to the java.net M2 repository..."/>
                     <ant antfile="${impl.dir}/build.xml" target="mvn.deploy.snapshot"/>
                 </sequential>
             </then>
@@ -361,20 +562,126 @@
     </target>
 
     <target name="updatecenter2" depends="main">
-      <copy file="jsf-api/build/lib/jsf-api.jar" todir="updatecenter2/lib"/>
-      <copy file="jsf-ri/build/lib/jsf-impl.jar" todir="updatecenter2/lib"/>
+      <copy file="jsf-ri/build/lib/javax.faces.jar" todir="updatecenter2/lib"/>
+    </target>
+
+    <target name="mvn.deploy.release.local">
+      <call.modules target="mvn.deploy.release.local" />
+    </target>
+
+    <target name="mvn.deploy.snapshot.local">
+      <call.modules target="mvn.deploy.snapshot.local" />
     </target>
 
-    <target name="apply.netbeans.186761.hack">
-      <ant dir="jsf-api" target="apply.netbeans.186761.hack" />
-      <ant dir="jsf-ri" target="apply.netbeans.186761.hack" />
+    <target name="mvn.deploy.promoted.local">
+      <call.modules target="mvn.deploy.promoted.local" />
     </target>
 
-    <target name="remove.netbeans.186761.hack">
-      <ant dir="jsf-api" target="remove.netbeans.186761.hack" />
-      <ant dir="jsf-ri" target="remove.netbeans.186761.hack" />
+    <target name="mvn.deploy.release">
+      <call.modules target="mvn.deploy.release" />
+    </target>
+
+    <target name="mvn.deploy.snapshot">
+      <call.modules target="mvn.deploy.snapshot" />
+    </target>
+
+    <target name="mvn.deploy.promoted">
+      <call.modules target="mvn.deploy.promoted" />
+    </target>
+
+    <target name="hudson.deploy">
+
+<!--      <ant inheritAll="true"
+            target="mvn.deploy.${mojarra.build.type}${mojarra.build.local.or.blank}"
+               dir="jsf-api" />-->
+      <ant inheritAll="true"
+            target="mvn.deploy.${mojarra.build.type}${mojarra.build.local.or.blank}"
+               dir="jsf-ri" />
+
+      <ant inheritAll="true"
+            antfile="build-pre-maven-rename.xml"
+            target="main"
+               dir="jsf-api" />
+
+      <ant inheritAll="true"
+            antfile="build-pre-maven-rename.xml"
+            target="mvn.pre-maven-rename.deploy.${mojarra.build.type}${mojarra.build.local.or.blank}"
+               dir="jsf-api" />
+
+      <ant inheritAll="true"
+            antfile="build-pre-maven-rename.xml"
+            target="main"
+               dir="jsf-ri" />
+
+      <ant inheritAll="true"
+            antfile="build-pre-maven-rename.xml"
+            target="mvn.pre-maven-rename.deploy.${mojarra.build.type}${mojarra.build.local.or.blank}"
+               dir="jsf-ri" />
+
+
+
     </target>
 
+    <target name="hudson.deploy.milestone">
+
+      <ant inheritAll="true"
+            target="mvn.deploy.${mojarra.build.type}${mojarra.build.local.or.blank}"
+               dir="jsf-ri" />
+
+      <ant inheritAll="true"
+            antfile="build-pre-maven-rename.xml"
+            target="main"
+               dir="jsf-api" />
+
+      <ant inheritAll="true"
+            antfile="build-pre-maven-rename.xml"
+            target="mvn.pre-maven-rename.deploy.${mojarra.build.type}${mojarra.build.local.or.blank}"
+               dir="jsf-api" />
+
+      <ant inheritAll="true"
+            antfile="build-pre-maven-rename.xml"
+            target="main"
+               dir="jsf-ri" />
+
+      <ant inheritAll="true"
+            antfile="build-pre-maven-rename.xml"
+            target="mvn.pre-maven-rename.deploy.${mojarra.build.type}${mojarra.build.local.or.blank}"
+               dir="jsf-ri" />
+
+
+
+    </target>
+
+
+    <target name="blank" />
+
+
+    <target name="mvn.pre-maven-rename.deploy.snapshot.local">
+
+      <ant inheritAll="true"
+            antfile="build-pre-maven-rename.xml"
+            target="main"
+               dir="jsf-api">
+        <property name="skip.javadoc.jar"  value="true" />
+      </ant>
+
+      <ant inheritAll="true"
+            antfile="build-pre-maven-rename.xml"
+            target="mvn.pre-maven-rename.deploy.snapshot.local"
+               dir="jsf-api">
+        <property name="skip.javadoc.jar"  value="true" />
+      </ant>
+
+      <ant inheritAll="true"
+            antfile="build-pre-maven-rename.xml"
+            target="main"
+               dir="jsf-ri" />
+
+      <ant inheritAll="true"
+            antfile="build-pre-maven-rename.xml"
+            target="mvn.pre-maven-rename.deploy.snapshot.local"
+               dir="jsf-ri" />
+    </target>
 
 </project>
 
diff --git a/common/ant/bin/cb.bat b/common/ant/bin/cb.bat
index 53e9b48..a686687 100644
--- a/common/ant/bin/cb.bat
+++ b/common/ant/bin/cb.bat
@@ -1,29 +1,32 @@
 @echo off
 
-REM
 REM DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-REM 
-REM Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
-REM 
+REM
+REM Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+REM
 REM The contents of this file are subject to the terms of either the GNU
 REM General Public License Version 2 only ("GPL") or the Common Development
 REM and Distribution License("CDDL") (collectively, the "License").  You
-REM may not use this file except in compliance with the License. You can obtain
-REM a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
-REM or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+REM may not use this file except in compliance with the License.  You can
+REM obtain a copy of the License at
+REM https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+REM or packager/legal/LICENSE.txt.  See the License for the specific
 REM language governing permissions and limitations under the License.
-REM 
+REM
 REM When distributing the software, include this License Header Notice in each
-REM file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
-REM Sun designates this particular file as subject to the "Classpath" exception
-REM as provided by Sun in the GPL Version 2 section of the License file that
-REM accompanied this code.  If applicable, add the following below the License
-REM Header, with the fields enclosed by brackets [] replaced by your own
-REM identifying information: "Portions Copyrighted [year]
-REM [name of copyright owner]"
-REM 
+REM file and include the License file at packager/legal/LICENSE.txt.
+REM
+REM GPL Classpath Exception:
+REM Oracle designates this particular file as subject to the "Classpath"
+REM exception as provided by Oracle in the GPL Version 2 section of the License
+REM file that accompanied this code.
+REM
+REM Modifications:
+REM If applicable, add the following below the License Header, with the fields
+REM enclosed by brackets [] replaced by your own identifying information:
+REM "Portions Copyright [year] [name of copyright owner]"
+REM
 REM Contributor(s):
-REM 
 REM If you wish your version of this file to be governed by only the CDDL or
 REM only the GPL Version 2, indicate your decision by adding "[Contributor]
 REM elects to include this software in this distribution under the [CDDL or GPL
@@ -35,8 +38,6 @@ REM and therefore, elected the GPL Version 2 license, then the option applies
 REM only if the new code is made subject to such option by the copyright
 REM holder.
 REM
-
-REM 
 REM List all files added, modified, and removed from a cvs repository
 REM 
 REM For this to work, you will need to make sure the following utilities
@@ -73,7 +74,7 @@ goto :END
 :CHANGES
 echo Modifications found.  Generating change bundle...
 
-echo -- ADD DESCRIPTION HERE https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=XXXX -- > %CB%
+echo -- ADD DESCRIPTION HERE http://java.net/jira/browse/JAVASERVERFACES-XXXX -- > %CB%
 echo. >> %CB%
 echo. >> %CB%
 
@@ -101,7 +102,7 @@ echo ******************************************************************* >> %CB%
 echo * SECTION: Diffs >> %CB%
 echo ******************************************************************* >> %CB%
 
-svn diff 2>&1 | grep -v "^cvs server:" | grep -v "^\?"  >> %CB%
+svn diff -x --ignore-eol-style 2>&1 | grep -v "^cvs server:" | grep -v "^\?"  >> %CB%
 
 for /f "tokens=*" %%F in ('wc -l %ADD_FILE% ^| grep -v "      0"') do (
 	echo ******************************************************************* >> %CB%
@@ -113,7 +114,7 @@ for /f "tokens=*" %%F in ('wc -l %ADD_FILE% ^| grep -v "      0"') do (
 	del %ZIP%
 	echo. > %DUMMY%
 	zip %ZIP% %DUMMY%
-	type %ADD_FILE% | cut -c3- | zip %ZIP% -@
+	type %ADD_FILE% | cut -c9- | zip %ZIP% -@
 	zip -d %ZIP% %DUMMY%
 	del %DUMMY%
 	echo.
diff --git a/common/ant/bin/cb.sh b/common/ant/bin/cb.sh
index eda7ba4..4a80488 100644
--- a/common/ant/bin/cb.sh
+++ b/common/ant/bin/cb.sh
@@ -1,29 +1,32 @@
 #!/bin/bash
-
 #
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-# 
-# Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
-# 
+#
+# Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+#
 # The contents of this file are subject to the terms of either the GNU
 # General Public License Version 2 only ("GPL") or the Common Development
 # and Distribution License("CDDL") (collectively, the "License").  You
-# may not use this file except in compliance with the License. You can obtain
-# a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
-# or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
 # language governing permissions and limitations under the License.
-# 
+#
 # When distributing the software, include this License Header Notice in each
-# file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
-# Sun designates this particular file as subject to the "Classpath" exception
-# as provided by Sun in the GPL Version 2 section of the License file that
-# accompanied this code.  If applicable, add the following below the License
-# Header, with the fields enclosed by brackets [] replaced by your own
-# identifying information: "Portions Copyrighted [year]
-# [name of copyright owner]"
-# 
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
 # Contributor(s):
-# 
 # If you wish your version of this file to be governed by only the CDDL or
 # only the GPL Version 2, indicate your decision by adding "[Contributor]
 # elects to include this software in this distribution under the [CDDL or GPL
@@ -36,6 +39,44 @@
 # holder.
 #
 
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+# Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+
 
 #
 # List all files added, modified, and removed from a subversion repository
@@ -63,7 +104,7 @@ fi
 echo -n "Modifications found..."
 
 echo "" > $CB
-echo "<< ADD DESCRIPTION HERE https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=XXXX >>" >> $CB
+echo "<< ADD DESCRIPTION HERE http://java.net/jira/browse/JAVASERVERFACES-XXXX >>" >> $CB
 echo "" >> $CB
 echo "" >> $CB
 
diff --git a/common/ant/bin/xs3p-disable-output-escaping.patch b/common/ant/bin/xs3p-disable-output-escaping.patch
new file mode 100644
index 0000000..112d2a5
--- /dev/null
+++ b/common/ant/bin/xs3p-disable-output-escaping.patch
@@ -0,0 +1,11 @@
+--- xs3p.xsl	2011-06-24 14:32:37.000000000 -0400
++++ xs3p-disable-output-escaping.xsl	2012-07-25 12:10:10.000000000 -0400
+@@ -6325,7 +6325,7 @@
+      Displays text node.
+      -->
+    <xsl:template match="text()" mode="html">
+-      <xsl:value-of select="."/>
++      <xsl:value-of select="." disable-output-escaping="yes"/>
+    </xsl:template>
+ 
+    <!--
diff --git a/common/ant/common.xml b/common/ant/common.xml
index 64e4da0..d1f476c 100644
--- a/common/ant/common.xml
+++ b/common/ant/common.xml
@@ -1,45 +1,50 @@
 <?xml version="1.0" encoding="UTF-8"?>
-      
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in complicomance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
-      
+
 <project name="JSF Common" basedir="." xmlns:artifact="antlib:org.apache.maven.artifact.ant">
 
-    <import file="${jsf.build.home}/common/ant/${container.name}/container.xml"/>
     <import file="${jsf.build.home}/common/ant/dependencies.xml"/>
+    <import file="${jsf.build.home}/common/ant/test-app.xml"/>
     <import file="${jsf.build.home}/common/ant/maven.xml"/>
     <taskdef resource="net/sf/antcontrib/antlib.xml">
         <classpath>
@@ -60,7 +65,7 @@
             <pathelement location="${jsf.build.home}/common/lib/sfx4j-1.0.jar"/>
         </classpath>
     </taskdef>
-    <path id="maven-ant-tasks.classpath" path="${jsf.build.home}/common/lib/maven-ant-tasks-2.0.10.jar" />
+    <path id="maven-ant-tasks.classpath" path="${jsf.build.home}/common/lib/maven-ant-tasks-2.1.3.jar" />
       <typedef resource="org/apache/maven/artifact/ant/antlib.xml"
                uri="antlib:org.apache.maven.artifact.ant"
                classpathref="maven-ant-tasks.classpath" />
@@ -75,6 +80,7 @@
     <property name="api.dir" value="${jsf.build.home}/jsf-api"/>
     <property name="mvn.api.dir" value="${api.dir}/build/mvn" />
     <property name="impl.dir" value="${jsf.build.home}/jsf-ri"/>
+    <property name="regression.test.dir" value="${jsf.build.home}/jsf-test"/>
     <property name="mvn.impl.dir" value="${jsf.build.home}/jsf-ri/build/mvn"/>
     <property name="tools.dir" value="${jsf.build.home}/jsf-tools"/>    
     <property name="demo.dir" value="${jsf.build.home}/jsf-demo"/>
@@ -82,32 +88,40 @@
               value="${demo.dir}/dist/spec-snapshot" />
     <property name="impl.test.results.dir" value="${impl.dir}/testresults"/>
     <property name="api.test.results.dir" value="${api.dir}/testresults"/>
+    <property name="regression.test.results.dir" 
+              value="${regression.test.dir}/build/testresults" />
+
+    <!-- Name -->
+    <property name="api-artifact-id" value="javax.faces-api"/>
+    <property name="impl-artifact-id" value="javax.faces"/>
 
     <!-- Artifacts of interest -->
-    <property name="jsf-api.jar" value="${api.dir}/build/lib/jsf-api.jar"/>
-    <property name="jsf-tools.jar" value="${tools.dir}/build/lib/jsf-tools.jar"/>
-    <property name="jsf-impl.jar" value="${impl.dir}/build/lib/jsf-impl.jar"/>   
+    <property name="jsf-api-intermediate.jar" value="${api.dir}/build/lib/jsf-api-intermediate.jar"/>
+    <property name="javax.faces-api.jar" value="${api.dir}/build/lib/${api-artifact-id}.jar"/>
+    <property name="javax.faces.jar" value="${impl.dir}/build/lib/${impl-artifact-id}.jar"/>   
     <property name="jsf.test.jar" value="${jsf.build.home}/lib/jsf-extensions-test-time.jar"/>    
     <property name="installer.jar" value="${jsf.build.home}/common/lib/installer-builder.jar"/>
     <property name="javanettasks.jar" value="${jsf.build.home}/common/lib/javanettasks-1.0.5.jar"/>
     <property name="standard.renderkit.xml" value="${api.dir}/doc/standard-html-renderkit.xml"/>
 
     <!-- Version -->
-    <property name="spec.version" value="2.0"/>
-    <property name="spec.snapshot.version" value="2.1-SNAPSHOT"/>
-    <property name="patch.version" value="3"/>
+    <property name="spec.version" value="2.2"/>
+    <property name="spec_version" value="2_2"/>
+    <property name="spec.snapshot.version" value="2.2-SNAPSHOT"/>
+    <property name="patch.version" value="8"/>
     <property name="impl.name" value="Mojarra"/>
-    <property name="build.number" value="${DSTAMP}"/>
-    <property name="build.type" value="SNAPSHOT"/>
+    <property name="build.number" value="${DSTAMP}-${TSTAMP}"/>
+    <property name="build.type" value="-SNAPSHOT"/>
     <property name="impl.version.number" value="${spec.version}.${patch.version}" />
-    <property name="impl.version" value="${impl.version.number}-${build.type}"/>
-    <property name="full.impl.version" value="${impl.version.number} (${build.number}-${build.type})"/>
+    <property name="impl.version" value="${impl.version.number}${build.type}"/>
+    <property name="full.impl.version" value="${impl.version.number} (${build.number}${build.type})"/>
     <property name="snapshot.version" value="${impl.version.number}-SNAPSHOT"/>
 
     <!-- Environment -->
     <property environment="myenv" />
     <property name="http.proxy.host" value=""/>
     <property name="http.proxy.port" value=""/>
+    <property name="force.no.cluster" value=""/>
 
     <!-- Change bundle -->
     <property name="change.bundle.dir" value="${jsf.build.home}/common/ant/bin" />
@@ -144,29 +158,42 @@
     <condition property="maven.repo.local" value="${maven.repo.local}" else="${user.home}/.m2/repository">
         <isset property="maven.repo.local"/>
     </condition>
+
     <artifact:localRepository id="local.repository" path="${maven.repo.local}"/>
     
-    <artifact:remoteRepository id="jboss.repo" url="http://repository.jboss.com/maven2/"/>
-    <artifact:remoteRepository id="j.n.repo" url="http://download.java.net/maven/2/"/>
-    <artifact:remoteRepository id="gf.repo" url="http://download.java.net/maven/glassfish/"/>
-    <artifact:remoteRepository id="gf.nexus.repo" url="http://maven.glassfish.org/content/groups/glassfish/"/>
+    <artifact:remoteRepository id="j.n.repo" url="https://maven.java.net/content/repositories/releases/"/>
+    <artifact:remoteRepository id="j.n.repo.snapshot" url="https://maven.java.net/content/repositories/snapshots/"/>
     <artifact:remoteRepository id="codehaus.repo" url="http://repository.codehaus.org/"/>
     <artifact:remoteRepository id="ibiblio.repo" url="http://mirrors.ibiblio.org/pub/mirrors/maven2/"/>
 
     <artifact:dependencies filesetId="compile.filepath" pathId="compile.path">
-        <dependency groupId="javax.el" artifactId="el-api" version="1.0" scope="provided"/>
-        <dependency groupId="org.glassfish" artifactId="javax.servlet" version="3.0-SNAPSHOT" scope="provided"/>
-        <dependency groupId="javax.servlet.jsp" artifactId="jsp-api" version="2.1" scope="provided"/>
+        <dependency groupId="javax.el" artifactId="javax.el-api" version="2.2.1" scope="provided"/>
+        <dependency groupId="javax.servlet" artifactId="javax.servlet-api" version="3.0.1" scope="provided"/>
+        <dependency groupId="javax.servlet.jsp" artifactId="javax.servlet.jsp-api" version="2.2.1" scope="provided"/>
         <dependency groupId="javax.annotation" artifactId="jsr250-api" version="1.0" scope="provided"/>
-        <dependency groupId="org.codehaus.groovy" artifactId="groovy-all" version="1.6.4" scope="provided"/>
+        <dependency groupId="org.codehaus.groovy" artifactId="groovy-all" version="1.6.9" scope="provided"/>
         <dependency groupId="javax.validation" artifactId="validation-api" version="1.0.0.GA" scope="provided"/>
-        <dependency groupId="jstl" artifactId="jstl" version="1.2" scope="provided" />
+        <dependency groupId="javax.inject" artifactId="javax.inject" version="1" scope="provided"/>
+        <dependency groupId="javax.servlet.jsp.jstl" artifactId="jstl-api" version="1.2" scope="provided" />
+        <dependency groupId="javax" artifactId="javaee-web-api" version="6.0" scope="provided"/>
         <dependency groupId="com.sun.el" artifactId="el-ri" version="1.0" scope="provided"/>
         <localRepository refid="local.repository"/>
         <remoteRepository refid="j.n.repo"/>
-        <remoteRepository refid="gf.repo"/>
-        <remoteRepository refid="gf.nexus.repo"/>
-        <remoteRepository refid="jboss.repo"/>  <!-- needed for validation-api -->
+        <remoteRepository refid="codehaus.repo"/>
+        <remoteRepository refid="j.n.repo.snapshot"/>
+    </artifact:dependencies>
+
+    <artifact:dependencies filesetId="cdi.filepath" pathId="cdi.path">
+        <dependency groupId="javax.enterprise" artifactId="cdi-api" version="1.1" scope="provided"/>
+        <localRepository refid="local.repository"/>
+        <remoteRepository refid="ibiblio.repo"/>
+    </artifact:dependencies>
+    
+    <artifact:dependencies filesetId="jsf-spi.filepath" pathId="jsf-spi.path">
+        <dependency groupId="com.sun.faces" artifactId="jsf-spi" version="1.0" scope="provided"/>
+        <localRepository refid="local.repository"/>
+        <remoteRepository refid="j.n.repo"/>
+        <remoteRepository refid="j.n.repo.snapshot"/>
     </artifact:dependencies>
     
     <artifact:dependencies filesetId="commons.filepath" pathId="commons.path">
@@ -175,7 +202,8 @@
         <dependency groupId="commons-beanutils" artifactId="commons-beanutils" version="1.6.1"/>
         <dependency groupId="commons-logging" artifactId="commons-logging" version="1.0.4"/>
         <localRepository refid="local.repository"/>
-        <remoteRepository refid="gf.nexus.repo"/>
+        <remoteRepository refid="j.n.repo"/>
+        <remoteRepository refid="j.n.repo.snapshot"/>
     </artifact:dependencies>
 
     <artifact:dependencies filesetId="servlet25test.filepath" pathId="servlet25test.path">
@@ -185,9 +213,17 @@
         <dependency groupId="javax.servlet.jsp.jstl" artifactId="jstl-api" version="1.2" scope="provided"/>
         <dependency groupId="javax.annotation" artifactId="jsr250-api" version="1.0" scope="provided"/>
         <localRepository refid="local.repository"/>
-        <remoteRepository refid="gf.nexus.repo"/>
+        <remoteRepository refid="j.n.repo"/>
+        <remoteRepository refid="j.n.repo.snapshot"/>
     </artifact:dependencies>
 
+
+    <!-- Intra-project dependency property names -->
+
+    <!-- this is hard coded to match the values in ${basedir}/jsf-tools/pom.xml -->
+    <property name="jsf-tools.jar" 
+	value="${maven.repo.local}/com/sun/faces/build/jsf-tools/${impl.version.number}/jsf-tools-${impl.version.number}.jar" /> 
+
     <!-- Test classpaths that are used in multiple places within the project -->
     <path id="junit.classpath">
         <pathelement location="${junit.jar}"/>
@@ -227,11 +263,27 @@
         <path refid="compile.path"/>
     </path>
 
+    <path id="cdi.classpath">
+        <path refid="cdi.path"/>
+    </path>
+
+
+    <path id="api-compile.classpath">
+        <path refid="jsf-spi.path"/>
+        <path refid="compile.path"/>
+    </path>
+
     <path id="apache.commons.classpath">
         <path refid="commons.path"/>
     </path>
 
-    <!-- Common Targets -->
+    <!-- HtmlUnit client classpath -->
+    <path id="html.classpath">  
+        <pathelement location="${basedir}/build/classes"/>
+        <path refid="htmlunit.runtime.classpath"/>
+        <path refid="jsf.test.jar.classpath"/>
+    </path>
+
 
     <!-- Convenience macro for javac -->
     <macrodef name="jsf.javac">        
@@ -249,6 +301,7 @@
                    deprecation="${compile.deprecation}"
                    source="@{source}"
                    target="@{target}"
+                   includeAntRuntime="false"
                    includes="@{includes}"
                    excludes="@{excludes}">
                 <classpath/>
@@ -264,6 +317,10 @@
         <attribute name="assert.classes" default=""/>
         <attribute name="logging.config.file" default=""/>
         <attribute name="explodedWarDir" default=""/>
+        <attribute name="force.no.cluster" default="${force.no.cluster}"/>
+        <attribute name="instance.numbers" default="${instance.numbers}" />
+        <attribute name="custom.port" default="${scenario.aware.port}" />
+        <attribute name="virtual-server" default="" />
         <element name="tests" optional="true"/>
         <element name="custom-sysproperties" optional="true"/>
         <element name="suite" optional="true"/>
@@ -278,11 +335,16 @@
                 <formatter type="plain" usefile="false"/>
                 <formatter type="xml" usefile="true"/>
                 <sysproperty key="host" value="${container.host}"/>
-                <sysproperty key="port" value="${container.port}"/>
+                <sysproperty key="port" value="@{custom.port}"/>
                 <sysproperty key="context.path" value="@{context-path}"/>
                 <sysproperty key="explodedWarDir" value="@{explodedWarDir}"/>
                 <sysproperty key="java.util.logging.config.file" 
                              value="@{logging.config.file}"/>
+                <sysproperty key="force.no.cluster" 
+                             value="@{force.no.cluster}"/>
+                <sysproperty key="container" value="${container.name}" />
+                <sysproperty key="instance.numbers" value="@{instance.numbers}" />
+                <sysproperty key="virtual-server" value="@{virtual-server}" />
                 <custom-sysproperties/>
                 <batchtest todir="@{test-results-dir}">
                     <tests/>
@@ -292,6 +354,36 @@
         </sequential>
     </macrodef>
 
+    <macrodef name="test-webapp">
+        <attribute name="app-name"/>
+        <attribute name="app-base-dir"/>
+        <attribute name="test-case"/>
+        <attribute name="explodedWarDir" default=""/>
+        <attribute name="virtual-server" default=""/>
+        <attribute name="test-results-dir" default="${impl.test.results.dir}"/>
+        <attribute name="test-classpath" default="@{app-base-dir}/build/classes"/>
+        <sequential>
+            <path id="test.classpath">
+                <pathelement location="@{app-base-dir}/build/classes"/>
+                <pathelement location="${basedir}/build/classes"/>
+                <path refid="htmlunit.runtime.classpath"/>
+                <path refid="html.classpath"/>
+            </path>
+            <jsf.junit classpath-refid="test.classpath"
+                       context-path="/jsf-@{app-name}"
+                       instance.numbers="${instance.numbers}"
+                       test-results-dir="@{test-results-dir}"
+                       custom.port="${scenario.aware.port}"
+                       explodedWarDir="@{explodedWarDir}"
+                       virtual-server="@{virtual-server}">
+                <tests>
+                    <fileset dir="@{test-classpath}"
+                             includes="@{test-case}"/>
+                </tests>
+            </jsf.junit>
+        </sequential>
+    </macrodef>
+
     <!-- Conveninece macro for building WARs -->
     <macrodef name="jsf.war">
         <attribute name="basedir"/>
@@ -311,7 +403,7 @@
                 <then>
                     <echo message="Adding dependent libraries..."/>
 
-                    <for list="${jsf-impl.jar},${jsf-api.jar},${webapp.jars}"
+                    <for list="${javax.faces.jar},${jsf-api-intermediate.jar},${webapp.jars}"
                          param="jar">
                         <sequential>
                             <echo message="JAR: @{jar}"/>
@@ -332,7 +424,7 @@
 
     <!--
        Build a JAR file which includes a manifest including
-       information pertaining to Sun's JavaServer Faces
+       information pertaining to Oracle's JavaServer Faces
        implementation.
     -->
     <macrodef name="jsf.manifested.jar">
@@ -356,7 +448,7 @@
                     <attribute name="Implementation-Version"
                                value="${impl.version}"/>
                     <attribute name="Implementation-Vendor"
-                               value="Sun Microsystems, Inc."/>
+                               value="Oracle America, Inc."/>
                     <attribute name="Implementation-Vendor-Id"
                                value="com.sun"/>
                     <attribute name="Extension-Name"
@@ -410,7 +502,7 @@
                   fork="true">
                 <classpath>
                     <path refid="compile.classpath"/>
-                    <pathelement location="${jsf-api.jar}"/>
+                    <pathelement location="${jsf-api-intermediate.jar}"/>
                     <pathelement location="${tools.dir}/build/classes"/>
                 </classpath>
                 <sysproperty key="java.endorsed.dirs" value="${endorsed.dirs}"/>
@@ -418,6 +510,137 @@
         </sequential>
     </macrodef>
 
+    <macrodef name="jsf.tester">
+        <attribute name="classpath-refid"/>
+        <attribute name="context-path" default=""/>
+        <attribute name="test-results-dir"/>
+        <attribute name="assert.classes" default=""/>
+        <attribute name="logging.config.file" default=""/>
+        <attribute name="explodedWarDir" default=""/>
+        <attribute name="request" />
+        <attribute name="regexp" default=""/>
+        <attribute name="regexpFile" default=""/>
+        <attribute name="status" default=""/>
+        <attribute name="textPage" default="" />
+        <attribute name="force.no.cluster" default="${force.no.cluster}"/>
+        <attribute name="instance.numbers" default="${instance.numbers}" />
+        <attribute name="custom.port" default="${scenario.aware.port}" />
+        <element name="custom-sysproperties" optional="true"/>
+        <sequential>
+            <var name="testname" unset="true" />
+            <propertyregex property="testname"
+                           input="@{request}"
+                           global="true"
+                           regexp="[/|?]"
+                           replace="_" />
+            <echo message="writing TEST-${testname}" />
+            <junit printsummary="yes"
+                   fork="yes"
+                   haltonfailure="${halt.on.failure}"
+                   haltonerror="${halt.on.failure}">
+                <jvmarg line="${debug.jvm.args}"/>
+                <jvmarg line="@{assert.classes}"/>
+                <classpath refid="@{classpath-refid}"/>
+                <formatter type="plain" usefile="false"/>
+                <formatter type="xml" usefile="true"/>
+                <sysproperty key="request" value="@{request}"/>
+                <sysproperty key="regexp" value="@{regexp}"/>
+                <sysproperty key="regexpFile" value="@{regexpFile}"/>
+                <sysproperty key="status" value="@{status}"/>
+                <sysproperty key="textPage" value="@{textPage}"/>
+                <sysproperty key="host" value="${container.host}"/>
+                <sysproperty key="port" value="@{custom.port}"/>
+                <sysproperty key="context.path" value="@{context-path}"/>
+                <sysproperty key="explodedWarDir" value="@{explodedWarDir}"/>
+                <sysproperty key="java.util.logging.config.file" 
+                             value="@{logging.config.file}"/>
+                <sysproperty key="force.no.cluster" 
+                             value="@{force.no.cluster}"/>
+                <sysproperty key="container" value="${container.name}" />
+                <sysproperty key="instance.numbers" value="@{instance.numbers}" />
+                <sysproperty key="SimpleTesterTestCase.dumpText" 
+                             value="${SimpleTesterTestCase.dumpText}" />
+                <custom-sysproperties/>
+                <test name="com.sun.faces.htmlunit.SimpleTesterTestCase" 
+                      haltonfailure="yes" 
+                      todir="@{test-results-dir}"
+                      outfile="TEST-${testname}">
+                    <formatter type="xml"/>
+                </test>
+            </junit>
+        </sequential>
+    </macrodef>
+
+    <macrodef name="jsf.svninfo">
+      <sequential>
+        <if>
+          <os family="windows"/>
+          <then>
+            <property name="svn.cmd" value="svn.exe"/>
+          </then>
+          <else>
+            <property name="svn.cmd" value="svn"/>
+          </else>
+        </if>
+        <var name="svninfo.out" unset="true" />
+        <var name="svninfo.to.process" unset="true" />
+        <var name="svn.revision.url" unset="true" />
+
+        <exec os="SunOS" dir="${jsf.build.home}" failonerror="false" failifexecutionfails="false"
+              resultproperty="svninfo.result"
+              executable="${svn.cmd}" outputproperty="svninfo.out">
+          <arg line="info"/>
+        </exec>
+        <exec os="Linux" dir="${jsf.build.home}" failonerror="false" failifexecutionfails="false"
+              resultproperty="svninfo.result"
+                  executable="${svn.cmd}" outputproperty="svninfo.out">
+          <arg line="info"/>
+          
+        </exec>
+        <exec osfamily="windows" dir="${jsf.build.home}" executable="${svn.cmd}"
+              resultproperty="svninfo.result"
+              failonerror="false" failifexecutionfails="false" outputproperty="svninfo.out">
+          <arg line="info"/>
+        </exec>
+        <exec os="Mac OS X" dir="${jsf.build.home}" executable="${svn.cmd}"
+              resultproperty="svninfo.result"
+              failonerror="false" failifexecutionfails="false" outputproperty="svninfo.out">
+          <arg line="info"/>
+        </exec>
+
+        <if>
+          <equals arg1="${svninfo.result}" arg2="1"/>
+          <then>
+            <property name="svn.revision.url" value="unable to get svn info" />
+          </then>
+          <else>
+            <propertyregex property="svninfo.to.process"
+                           input="${svninfo.out}"
+                           regexp="\s+"
+                           replace=" " />
+            
+            <propertyregex property="svn.revision.url"
+                           input="${svninfo.to.process}"
+                           select="\2@\6">
+              <regexp pattern="(?s)(.*URL: )(.+)(\s)(Repository Root:.*)(Revision: )([0-9]+)(.*)"/>
+            </propertyregex>
+          </else>
+        </if>
+
+        <if>
+          <not>
+            <isset property="svn.revision.url" />
+          </not>
+          <then>
+            <property name="svn.revision.url" value="unable to get svn info" />
+          </then>
+        </if>
+
+      </sequential>
+
+    </macrodef>
+
+
     <!-- Change bundle target(s) -->
 
     <target name="cb" description="Create a change bundle for review">
@@ -439,4 +662,8 @@
                 </else>
             </if>
     </target>
+
+    <target name="container.deploy.with.test.dependencies" 
+            depends="container.deploy,container.deploy.test.dependencies" />
+    <import file="${jsf.build.home}/common/ant/${container.name}/container.xml"/>
 </project>
diff --git a/common/ant/dependencies.xml b/common/ant/dependencies.xml
index 27837fe..6d4ff34 100644
--- a/common/ant/dependencies.xml
+++ b/common/ant/dependencies.xml
@@ -1,39 +1,44 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
 
 <project name="JSF Dependencies" basedir="." xmlns:artifact="antlib:org.apache.maven.artifact.ant">
@@ -51,6 +56,7 @@
     <property name="dependency.jar.dir" value="${dependency.base.dir}/jars"/>
     <property name="junit.version" value="3.8.1"/>
     <property name="htmlunit.version" value="2.4"/>
+    <property name="xs3p.version" value="1.1.5"/>
     <property name="cactus.version" value="13-1.7.2"/>
     <!-- Note that if changing the Apache Commons versions
          you must also change the versions in the source loading code -->
@@ -59,21 +65,27 @@
     <property name="collections.version" value="2.1"/>
     <property name="logging.version" value="1.0.4"/>
     <property name="taglibdoc.version" value="1.3"/>
+    <property name="vdldoc.version" value="1.0"/>
     <property name="jsdoc.version" value="2.0.2"/>
     <property name="servlet.api.version" value="2.5"/>
+    <property name="javaee-api.version" value="6.0"/>
+    <property name="cdi-api.version" value="1.1"/>
     <property name="newer.servlet.api.version" value="3.0"/>
     <property name="jsp.api.version" value="2.1"/>
     <property name="jstl.api.version" value="1.2"/>
     <property name="annotation.api.version" value="1.0"/>
     <property name="portlet.api.version" value="1.0"/>
-    <property name="groovy.version" value="1.6.4"/>
+    <property name="groovy.version" value="1.6.9"/>
     <property name="el.version" value="1.0"/>
     <property name="validation.version" value="1.0.0.GA" />
     <property name="bean-validator.version" value="3.0-JBoss-4.0.0.Beta3"/>
+    <property name="javax-inject.version" value="1"/>
+    <property name="javax-enterprise.version" value="1.1"/>
     <property name="maven.repository.importer.version" value="1.2"/>
     <property name="yuicompressor.version" value="2.4.2"/>
 
-    <property name="redhat.maven2" value="http://repository.jboss.org/maven2"/>
+    <property name="central.maven2" value="http://repo1.maven.org/maven2" />
+    <property name="redhat.maven2" value="https://repository.jboss.org/nexus/content/repositories/thirdparty-releases"/>
     <!--<property name="maven2.mirror" value="http://mirrors.ibiblio.org/pub/mirrors/maven2"/>-->
     <property name="maven2.mirror" value="http://repo.exist.com/maven2/"/>
     <property name="java.net.maven" value="http://download.java.net/maven/1"/>
@@ -84,6 +96,7 @@
 
     <property name="junit.home" value="${dependency.base.dir}/junit${junit.version}"/>
     <property name="htmlunit.home" value="${dependency.base.dir}/htmlunit-${htmlunit.version}"/>
+    <property name="xs3p.home" value="${dependency.base.dir}/xs3p-${xs3p.version}"/>
     <property name="cactus.home" value="${dependency.base.dir}/jakarta-cactus-${cactus.version}"/>
     <property name="beanutils.home" value="${dependency.base.dir}/commons-beanutils-${beanutils.version}"/>
     <property name="digester.home" value="${dependency.base.dir}/commons-digester-${digester.version}"/>
@@ -99,7 +112,6 @@
     <property name="jstl.home" value="${dependency.base.dir}/jstl-${jstl.api.version}"/>
     <property name="annotation.home" value="${dependency.base.dir}/annotation-${annotation.api.version}"/>
     <property name="yuicompressor.home" value="${dependency.base.dir}/yuicompressor-${yuicompressor.version}"/>
-
     <property name="junit.jar" value="${dependency.jar.dir}/junit-${junit.version}.jar"/>
     <property name="htmlunit.jar" value="${dependency.jar.dir}/htmlunit-${htmlunit.version}.jar"/>
     <property name="commons-beanutils.jar" value="${dependency.jar.dir}/commons-beanutils-${beanutils.version}.jar"/>
@@ -108,11 +120,14 @@
     <property name="commons-logging.jar" value="${dependency.jar.dir}/commons-logging-${logging.version}.jar"/>
     <property name="yuicompressor.jar" value="${dependency.jar.dir}/yuicompressor.jar"/>
     <property name="tlddoc.jar" value="${dependency.jar.dir}/tlddoc-${taglibdoc.version}.jar"/>
+    <property name="vdldoc.jar" value="${dependency.jar.dir}/vdldoc-${vdldoc.version}.jar"/>
     <property name="jsdoc.jar" value="${dependency.jar.dir}/jsdoc-${jsdoc.version}.jar"/>
     <property name="maven.repository.importer.jar"
               value="${dependency.jar.dir}/maven-repository-importer-${maven.repository.importer.version}.jar"/>
     <property name="servlet.jar" value="${dependency.jar.dir}/servlet-api-${servlet.api.version}.jar"/>
     <property name="servlet3.jar" value="${dependency.jar.dir}/servlet-api-${newer.servlet.api.version}.jar"/>
+    <property name="javaee-api.jar" value="${dependency.jar.dir}/javaee-api-${javaee-api.version}.jar"/>
+    <property name="cdi-api.jar" value="${dependency.jar.dir}/cdi-api-${cdi-api.version}.jar"/>
     <property name="jsp.jar" value="${dependency.jar.dir}/jsp-api-${jsp.api.version}.jar"/>
     <property name="el-api.jar" value="${dependency.jar.dir}/el-api-${el.version}.jar"/>
     <property name="el-impl.jar" value="${dependency.jar.dir}/el-impl-${el.version}.jar"/>
@@ -120,10 +135,15 @@
     <property name="annotation.jar" value="${dependency.jar.dir}/jsr250-api-${annotation.api.version}.jar"/>
     <property name="portlet.jar" value="${dependency.jar.dir}/portlet-api-${portlet.api.version}.jar"/>
     <property name="groovy.jar" value="${dependency.jar.dir}/groovy-all-${groovy.version}.jar"/>
-    <property name="validation-api.jar" value="${dependency.jar.dir}/validation-api-1.0.0.GA.jar"/>
+    <property name="validation-api.jar" value="${dependency.jar.dir}/validation-api-${validation.version}.jar"/>
+    <property name="javax-inject.jar" value="${dependency.jar.dir}/javax.inject-${javax-inject.version}.jar"/>
+    <property name="javax-enterprise.jar" value="${dependency.jar.dir}/cdi-api-${javax-enterprise.version}.jar"/>
     <property name="glassfish.download.url" value="http://download.java.net/javaee5/v2ur1/promoted/"/>
     <property name="glassfish.installer.jar" value="glassfish-installer-v2ur1-b09d-"/>
 
+    <property name="gf-ant.version" value="3.1.1"/>
+    <property name="gf-ant.jar"     value="${dependency.jar.dir}/ant-tasks.jar"/>
+
     <!--  source build properties -->
     
     <property name="commons.logging.url" value="http://svn.apache.org/repos/asf/commons/proper/logging/tags/LOGGING_1_0_4/"/>
@@ -163,6 +183,18 @@
             </then>
         </if>
 
+        <!-- GLASSFISH ANT JAR -->
+        <if>
+            <not>
+                <available file="${gf-ant.jar}" property="ignored"/>
+            </not>
+            <then>
+                <get src="http://download.java.net/maven/glassfish/org/glassfish/ant-tasks/${gf-ant.version}/ant-tasks-${gf-ant.version}.jar"
+                     dest="${gf-ant.jar}"
+                     usetimestamp="true"/>
+            </then>
+        </if>
+        
         <!-- JUNIT -->
         <if>
             <and>
@@ -204,6 +236,43 @@
             </then>
         </if>
 
+        <!-- XS3P -->
+        <if>
+            <and>
+                <not>
+                    <available file="${xs3p.home}" property="ignored"/>
+                </not>
+                <not>
+                    <isset property="build.source"/>
+                </not>
+            </and>
+            <then>
+                <get src="http://downloads.sourceforge.net/project/xs3p/xs3p-${xs3p.version}.zip"
+                     dest="${dependency.base.dir}/downloads/xs3p-${xs3p.version}.zip"
+                     usetimestamp="true"/>
+                <mkdir dir="${xs3p.home}" />
+                <unzip
+                        src="${dependency.base.dir}/downloads/xs3p-${xs3p.version}.zip"
+                        dest="${xs3p.home}"/>
+            </then>
+        </if>
+
+        <if>
+            <and>
+                <not>
+                    <os family="windows"/>
+                </not>
+                <not>
+                    <isset property="build.source"/>
+                </not>
+            </and>
+            <then>
+              <patch patchfile="${jsf.build.home}/common/ant/bin/xs3p-disable-output-escaping.patch"
+                     originalfile="${xs3p.home}/xs3p.xsl" failonerror="false"
+                     dir="${xs3p.home}"/>
+            </then>
+        </if>
+
         <!-- YUI Compressor -->
         <if>
             <and>
@@ -258,13 +327,32 @@
                 </not>
             </and>
             <then>
-                <get src="${maven2.mirror}/taglibrarydoc/tlddoc/${taglibdoc.version}/tlddoc-${taglibdoc.version}.jar"
+                <get src="${central.maven2}/taglibrarydoc/tlddoc/${taglibdoc.version}/tlddoc-${taglibdoc.version}.jar"
                      dest="${tlddoc.jar}"
                      usetimestamp="true"/>
 
             </then>
         </if>
 
+        <!-- VDLDOC -->
+        <if>
+            <and>
+            <not>
+                <available file="${vdldoc.jar}" property="ignored"/>
+            </not>
+                <not>
+                    <isset property="build.source"/>
+                </not>
+            </and>
+            <then>
+                <get src="http://vdldoc.googlecode.com/files/vdldoc-${vdldoc.version}.jar"
+                     dest="${vdldoc.jar}"
+                     usetimestamp="true"/>
+
+            </then>
+        </if>
+
+
         <!-- JSDOC -->
         <if>
             <and>
@@ -304,6 +392,32 @@
             </then>
         </if>
 
+        <!-- JAVAEE API -->
+        <if>
+            <not>
+                <available file="${javaee-api.jar}" property="ignored"/>
+            </not>
+            <then>
+                <get src="${java.net.maven2}/javax/javaee-api/${javaee-api.version}/javaee-api-${javaee-api.version}.jar"
+                     dest="${javaee-api.jar}"
+                     usetimestamp="true"/>
+
+            </then>
+        </if>
+        <!-- CDI API -->
+        <if>
+            <not>
+                <available file="${cdi-api.jar}" property="ignored"/>
+            </not>
+            <then>
+                <get src="${central.maven2}/javax/enterprise/cdi-api/${cdi-api.version}/cdi-api-${cdi-api.version}.jar"
+                     dest="${cdi-api.jar}"
+                     usetimestamp="true"/>
+
+            </then>
+        </if>
+
+
         <!-- SERVLET API -->
         <if>
             <not>
@@ -322,7 +436,7 @@
                 <available file="${servlet3.jar}" property="ignored"/>
             </not>
             <then>
-                <get src="http://repo1.maven.org/maven2/org/mortbay/jetty/servlet-api/3.0.20100224/servlet-api-3.0.20100224.jar"
+                <get src="${central.maven2}/org/mortbay/jetty/servlet-api/3.0.20100224/servlet-api-3.0.20100224.jar"
                      dest="${servlet3.jar}"
                      usetimestamp="true"/>
 
@@ -370,7 +484,6 @@
         </if>
         -->
         <!-- JSTL API -->
-        <!--
         <if>
             <not>
                 <available file="${jstl.jar}" property="ignored"/>
@@ -382,7 +495,6 @@
 
             </then>
         </if>
-       -->
         <!-- ANNOTATION API -->
         <!--
         <if>
@@ -410,8 +522,7 @@
             </then>
         </if>
         -->
-        <!-- Groovy -->
-        <!--
+        <!-- Groovy -->       
         <if>
             <not>
                 <available file="${groovy.jar}" property="ignored"/>
@@ -421,8 +532,30 @@
                      dest="${groovy.jar}"
                      usetimestamp="true"/>
             </then>
+        </if>        
+
+        <!-- JSR 330 -->
+        <if>
+            <not>
+                <available file="${javax-inject.jar}" property="ignored"/>
+            </not>
+            <then>
+                <get src="${central.maven2}/javax/inject/javax.inject/${javax-inject.version}/javax.inject-${javax-inject.version}.jar"
+                     dest="${javax-inject.jar}"
+                     usetimestamp="true"/>
+            </then>
+        </if>
+        <!-- JSR 299 -->
+        <if>
+            <not>
+                <available file="${javax-enterprise.jar}" property="ignored"/>
+            </not>
+            <then>
+                <get src="${central.maven2}/javax/enterprise/cdi-api/${javax-enterprise.version}/cdi-api-${javax-enterprise.version}.jar"
+                     dest="${javax-enterprise.jar}"
+                     usetimestamp="true"/>
+            </then>
         </if>
-        -->
         <!-- JSR 303 -->
         <!--
         <if>
@@ -578,7 +711,7 @@
     <property name="glassfish.home"
               value="${dependency.base.dir}/glassfish"/>
     <property name="tomcat6.home"
-              value="${dependency.base.dir}/apache-tomcat-6.0.13"/>
+              value="${dependency.base.dir}/apache-tomcat-6.0.29"/>
     <property name="glassfish.jar"
               value="${dependency.base.dir}/glassfish/lib/appserv-rt.jar"/>
     <property name="tomcat6.jar"
@@ -647,15 +780,15 @@ java -Xmx256m -jar ${dependency.base.dir}/${glassfish.installer.jar}${fl.os}.jar
 
         <if>
             <not>
-                <available file="${dependency.base.dir}/apache-tomcat-6.0.13.zip"
+                <available file="${dependency.base.dir}/apache-tomcat-6.0.29.zip"
                            property="ignored"/>
             </not>
             <then>
-                <get src="http://archive.apache.org/dist/tomcat/tomcat-6/v6.0.13/bin/apache-tomcat-6.0.13.zip"
-                     dest="${dependency.base.dir}/apache-tomcat-6.0.13.zip"
+                <get src="http://archive.apache.org/dist/tomcat/tomcat-6/v6.0.29/bin/apache-tomcat-6.0.29.zip"
+                     dest="${dependency.base.dir}/apache-tomcat-6.0.29.zip"
                      usetimestamp="true"/>
                 <unzip
-                        src="${dependency.base.dir}/apache-tomcat-6.0.13.zip"
+                        src="${dependency.base.dir}/apache-tomcat-6.0.29.zip"
                         dest="${dependency.base.dir}"/>
             </then>
         </if>
@@ -692,6 +825,9 @@ java -Xmx256m -jar ${dependency.base.dir}/${glassfish.installer.jar}${fl.os}.jar
         <condition property="dl.os" value="WINNT">
             <os family="winnt"/>
         </condition>
+        <condition property="dl.os" value="WINNT">
+            <os family="windows"/>
+        </condition>
         <condition property="dl.os" value="Darwin">
             <os name="Mac OS X"/>
         </condition>
diff --git a/common/ant/glassfish/container.xml b/common/ant/glassfish/container.xml
index e198699..fadf00d 100644
--- a/common/ant/glassfish/container.xml
+++ b/common/ant/glassfish/container.xml
@@ -1,85 +1,94 @@
-<?xml version="1.0" encoding="UTF-8"?>
-      
-<!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
--->
-<project name="Test Classpath" basedir=".">        
-
-    <!-- JARs that may be packaged in WEB-INF/lib
-  in order for the implementation to run 
-  properly if they aren't availabe in the
-  container's classloader.  
-   
-  This is a comma separated list of fully
-  qualified JARs -->
-    <property name="webapp.jars" value=""/>
-
-
-    <!-- Required Targets -->
-    
-    <macrodef name="deploy.artifact">
-        <attribute name="artifact"
-                   description="The WAR to deploy"/>
-        <attribute name="appName"
-                   description="The name of the application"/>
-        <sequential>
-            <condition property="exec.name" value="cmd.exe">
-                <os family="windows"/>
-            </condition>
-            <condition property="exec.arg.1"
-                       value="/c ${container.home}/bin/asadmin">
-                <os family="windows"/>
-            </condition>
-            <property name="exec.name" value="${container.home}/bin/asadmin"/>
-            <property name="exec.arg.1" value=""/>
-            <echo>
-                
----------------- Glassfish - Deploying @{appName} ---------------- 
-                
-            </echo>
-            <exec executable="${exec.name}" failonerror="true">
-                <arg line="${exec.arg.1}"/>
-                <arg line="deploy"/>
-                <arg line="--user ${glassfish.admin.user}"/>
-                <arg line="--passwordfile ${glassfish.password.file}"/>
-                <arg line="--host ${glassfish.admin.host}"/>
-                <arg line="--port ${glassfish.admin.port}"/>
-                <arg line="@{artifact}"/>
-            </exec>
-        </sequential>
-    </macrodef>
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project name="Test Classpath" basedir=".">        
+
+    <!-- JARs that may be packaged in WEB-INF/lib
+  in order for the implementation to run 
+  properly if they aren't availabe in the
+  container's classloader.  
+   
+  This is a comma separated list of fully
+  qualified JARs -->
+    <property name="webapp.jars" value=""/>
+
+
+    <!-- Required Targets -->
+    
+    <macrodef name="deploy.artifact">
+        <attribute name="artifact"
+                   description="The WAR to deploy"/>
+        <attribute name="appName"
+                   description="The name of the application"/>
+        <attribute name="use-virtual-servers"
+                   description="If true, deploy to the virtual servers."
+                   default="false"/>
+        <sequential>
+            <condition property="exec.name" value="cmd.exe">
+                <os family="windows"/>
+            </condition>
+            <condition property="exec.arg.1"
+                       value="/c ${container.home}/bin/asadmin">
+                <os family="windows"/>
+            </condition>
+            <property name="exec.name" value="${container.home}/bin/asadmin"/>
+            <property name="exec.arg.1" value=""/>
+            <echo>
+                
+---------------- Glassfish - Deploying @{appName} ---------------- 
+                
+            </echo>
+            <exec executable="${exec.name}" failonerror="true">
+                <arg line="${exec.arg.1}"/>
+                <arg line="deploy"/>
+                <arg line="--user ${glassfish.admin.user}"/>
+                <arg line="--passwordfile ${glassfish.password.file}"/>
+                <arg line="--host ${glassfish.admin.host}"/>
+                <arg line="--port ${glassfish.admin.port}"/>
+                <arg line="@{artifact}"/>
+            </exec>
+        </sequential>
+    </macrodef>
 
     <macrodef name="deploydir.artifact">
         <attribute name="explodedWarDir"
@@ -112,245 +121,296 @@
             </exec>
         </sequential>
     </macrodef>
-
-    <macrodef name="undeploy.artifact">
-        <attribute name="artifact"
-                   description="The WAR to deploy"/>
-        <attribute name="appName"
-                   description="The name of the application"/>
-        <sequential>
-            <condition property="exec.name" value="cmd.exe">
-                <os family="windows"/>
-            </condition>
-            <condition property="exec.arg.1"
-                       value="/c ${container.home}/bin/asadmin">
-                <os family="windows"/>
-            </condition>
-            <property name="exec.name" value="${container.home}/bin/asadmin"/>
-            <property name="exec.arg.1" value=""/>
-            <echo>
-                
----------------- Glassfish - Undeploying @{appName} ---------------- 
-                
-            </echo>
-            <exec executable="${exec.name}">
-                <arg line="${exec.arg.1}"/>
-                <arg line="undeploy"/>
-                <arg line="--user ${glassfish.admin.user}"/>
-                <arg line="--passwordfile ${glassfish.password.file}"/>
-                <arg line="--host ${glassfish.admin.host}"/>
-                <arg line="--port ${glassfish.admin.port}"/>
-                <arg line="@{appName}"/>
-            </exec>
-        </sequential>
-    </macrodef>
-    
-    <target name="config.container"
-            description="Perform any container specific configuration necessary for the unit tests to run">
-        <replace
-              file="${container.home}/domains/${glassfish.domain}/config/server.policy"
-              token="permission java.util.PropertyPermission "*", "read";"
-              value="permission java.util.PropertyPermission "*", "read,write";"/>
-        <concat append="true"
-                destfile="${container.home}/domains/${glassfish.domain}/config/server.policy">
-grant {
-    permission java.lang.reflect.ReflectPermission "*";
-};
-        </concat>
-        <chmod
-              file="${container.home}/domains/${glassfish.domain}/config/server.policy"
-              perm="777"/>
-        <replace
-              file="${container.home}/domains/${glassfish.domain}/config/domain.xml"
-              token="keep-alive max-connections="250" thread-count="1" timeout-in-seconds="30""
-              value="keep-alive max-connections="250" thread-count="1" timeout-in-seconds="70""/>
-    </target>
-
-    <!-- Require target to display information about the build environment -->
-    <target name="props">
-        <echo message="PENDING - Please add a message"/>            
-        <echo message="container.home->${container.home}" />
-        <echo message="javaee.jar->${container.home}/lib/javaee.jar" />
-    </target>
-    
-    <target name="update.impl.manifest">
-        <echo message="PENDING - Please implement"/>
-    </target>
-
-    <target name="container.deploy"
-              description="Deploy the JSF Implementation artifacts to the target container.">
-      <mkdir dir="${dist.dir}" />
-      <mkdir dir="${dist.dir}/tmp" />
-      <unjar src="${impl.dir}/build/lib/jsf-impl.jar"
-             dest="${dist.dir}/tmp" />
-      <delete dir="${dist.dir}/tmp/com/sun/org/apache" />
-      <jar destfile="${dist.dir}/jsf-impl.jar" 
-           basedir="${dist.dir}/tmp" />
-
-            <if>
-                <os family="windows"/>
-                <then>
-                   <container.stop/>
-                </then>
-            </if>
-            <delete>
-                <fileset dir="${container.home}/lib">
-                   <include name="jsf-*.jar"/>
-                   <include name="bean-validator.jar"/>
-                </fileset>
-            </delete>
-            <jar jarfile="${container.home}/lib/javaee.jar" update="yes">
-                <zipfileset src="${api.dir}/build/lib/jsf-api.jar"/>
-            </jar>
-            <copy overwrite="true" todir="${container.home}/lib"
-                  file="${dist.dir}/jsf-impl.jar"/>
-            <!--
-            <copy overwrite="true" todir="${container.home}/lib"
-                  file="${validation-api.jar}"/>
-            -->
-            <if>
-                <os family="windows"/>
-                <then>
-                   <container.start/>
-                </then>
-            </if>
-            <delete dir="${dist.dir}/tmp" />
-            <delete file="${dist.dir}/jsf-impl.jar" />
-    </target>
-    
-    <target name="container.start"
-            description="Start the GlassFish container">
-        <container.start/>
-    </target>
-
-    <target name="container.debug"
-            description="Start the GlassFish container in debug mode">
-        <container.debug/>
-    </target>
-
-    <target name="container.stop"
-            description="Stop the GlassFish container">
-        <container.stop/>
-    </target>
-    <target name="container.restart"
-            description="Stop the GlassFish container">
-        <container.stop/>
-        <container.start/>
-    </target>
-    <macrodef name="container.start"
-            description="Start the GlassFish container">
-        <sequential>
-            <start.domain/>
-        </sequential>
-    </macrodef>
-    
-    <macrodef name="container.stop"
-            description="Stop the GlassFish container">
-        <sequential>
-            <stop.domain/>
-        </sequential>
-    </macrodef>
-
-
-    <!-- 'PRIVATE' targets -->
-    <macrodef name="start.domain">
-        <sequential>
-            <echo>
-                
-"------------ Starting ${glassfish.domain} ------------"
-                
-            </echo>
-            <if>
-                <os family="unix"/>
-                <then>
-                    <exec executable="${container.home}/bin/asadmin"
-                          failonerror="true">
-                        <arg line="start-domain"/>
-                        <arg line="--user ${glassfish.admin.user}"/>
-                        <arg line="${glassfish.domain}"/>
-                    </exec>
-                    <waitfor>
-                        <http url="http://${container.host}:${container.port}"/>
-                    </waitfor>
-                </then>
-                <else>
-                    <exec executable="${container.home}/bin/asadmin.bat"
-                          spawn="true">
-                        <arg line="start-domain"/>
-                        <arg line="--user ${glassfish.admin.user}"/>
-                        <arg line="${glassfish.domain}"/>
-                    </exec>
-                    <waitfor>
-                        <http url="http://${container.host}:${container.port}"/>
-                    </waitfor>
-                </else>
-            </if>
-        </sequential>
-    </macrodef>
-
-    <macrodef name="debug.domain">
-        <sequential>
-            <echo>
-
-"------------ Starting ${glassfish.domain} in debug mode ------------"
-
-            </echo>
-            <if>
-                <os family="unix"/>
-                <then>
-                    <exec executable="${container.home}/bin/asadmin"
-                          failonerror="true">
-                        <arg line="start-domain"/>
-                        <arg line="--debug"/>
-                        <arg line="--user ${glassfish.admin.user}"/>
-                        <arg line="${glassfish.domain}"/>
-                    </exec>
-                    <waitfor>
-                        <http url="http://${container.host}:${container.port}"/>
-                    </waitfor>
-                </then>
-                <else>
-                    <exec executable="${container.home}/bin/asadmin.bat"
-                          spawn="true">
-                        <arg line="start-domain"/>
-                        <arg line="--debug"/>
-                        <arg line="--user ${glassfish.admin.user}"/>
-                        <arg line="${glassfish.domain}"/>
-                    </exec>
-                    <waitfor>
-                        <http url="http://${container.host}:${container.port}"/>
-                    </waitfor>
-                </else>
-            </if>
-        </sequential>
-    </macrodef>    
-
-    <macrodef name="stop.domain">
-        <sequential>
-            <echo>
-                
-"------------ Stopping ${glassfish.domain} ------------"
-                
-            </echo>
-            <if>
-                <os family="unix"/>
-                <then>
-                    <exec executable="${container.home}/bin/asadmin">
-                        <arg line="stop-domain"/>
-                        <arg line="${glassfish.domain}"/>
-                    </exec>
-                </then>
-                <else>
-                    <exec executable="${container.home}/bin/asadmin.bat"
-                          spawn="true">
-                        <arg line="stop-domain"/>
-                        <arg line="${glassfish.domain}"/>
-                    </exec>
-                </else>
-            </if>
-
-            <sleep seconds="15"/>
-        </sequential>
-    </macrodef>
-
-</project>
+
+    <macrodef name="undeploy.artifact">
+        <attribute name="artifact"
+                   description="The WAR to deploy"/>
+        <attribute name="appName"
+                   description="The name of the application"/>
+        <sequential>
+            <condition property="exec.name" value="cmd.exe">
+                <os family="windows"/>
+            </condition>
+            <condition property="exec.arg.1"
+                       value="/c ${container.home}/bin/asadmin">
+                <os family="windows"/>
+            </condition>
+            <property name="exec.name" value="${container.home}/bin/asadmin"/>
+            <property name="exec.arg.1" value=""/>
+            <echo>
+                
+---------------- Glassfish - Undeploying @{appName} ---------------- 
+                
+            </echo>
+            <exec executable="${exec.name}">
+                <arg line="${exec.arg.1}"/>
+                <arg line="undeploy"/>
+                <arg line="--user ${glassfish.admin.user}"/>
+                <arg line="--passwordfile ${glassfish.password.file}"/>
+                <arg line="--host ${glassfish.admin.host}"/>
+                <arg line="--port ${glassfish.admin.port}"/>
+                <arg line="@{appName}"/>
+            </exec>
+        </sequential>
+    </macrodef>
+    
+    <target name="config.container"
+            description="Perform any container specific configuration necessary for the unit tests to run">
+        <replace
+              file="${container.home}/domains/${glassfish.domain}/config/server.policy"
+              token="permission java.util.PropertyPermission "*", "read";"
+              value="permission java.util.PropertyPermission "*", "read,write";"/>
+        <concat append="true"
+                destfile="${container.home}/domains/${glassfish.domain}/config/server.policy">
+grant {
+    permission java.lang.reflect.ReflectPermission "*";
+};
+        </concat>
+        <chmod
+              file="${container.home}/domains/${glassfish.domain}/config/server.policy"
+              perm="777"/>
+        <replace
+              file="${container.home}/domains/${glassfish.domain}/config/domain.xml"
+              token="keep-alive max-connections="250" thread-count="1" timeout-in-seconds="30""
+              value="keep-alive max-connections="250" thread-count="1" timeout-in-seconds="70""/>
+    </target>
+
+    <!-- Require target to display information about the build environment -->
+    <target name="props">
+        <echo message="PENDING - Please add a message"/>            
+        <echo message="container.home->${container.home}" />
+        <echo message="javaee.jar->${container.home}/lib/javaee.jar" />
+    </target>
+    
+    <target name="update.impl.manifest">
+        <echo message="PENDING - Please implement"/>
+    </target>
+
+    <target name="container.deploy"
+              description="Deploy the JSF Implementation artifacts to the target container.">
+      <mkdir dir="${dist.dir}" />
+      <mkdir dir="${dist.dir}/tmp" />
+      <unjar src="${impl.dir}/build/lib/javax.faces.jar"
+             dest="${dist.dir}/tmp" />
+      <delete dir="${dist.dir}/tmp/com/sun/org/apache" />
+      <jar destfile="${dist.dir}/javax.faces.jar" 
+           basedir="${dist.dir}/tmp" />
+
+            <if>
+                <os family="windows"/>
+                <then>
+                   <container.stop/>
+                </then>
+            </if>
+            <delete>
+                <fileset dir="${container.home}/lib">
+                   <include name="jsf-*.jar"/>
+                   <include name="bean-validator.jar"/>
+                </fileset>
+            </delete>
+            <jar jarfile="${container.home}/lib/javaee.jar" update="yes">
+                <zipfileset src="${api.dir}/build/lib/jsf-api-intermediate.jar"/>
+            </jar>
+            <copy overwrite="true" todir="${container.home}/lib"
+                  file="${dist.dir}/javax.faces.jar"/>
+            <!--
+            <copy overwrite="true" todir="${container.home}/lib"
+                  file="${validation-api.jar}"/>
+            -->
+            <if>
+                <os family="windows"/>
+                <then>
+                   <container.start/>
+                </then>
+            </if>
+            <delete dir="${dist.dir}/tmp" />
+            <delete file="${dist.dir}/javax.faces.jar" />
+    </target>
+
+    <target name="container.deploy.test.dependencies"
+            description="Deploy any container level dependencies to the container.">
+        <if>
+            <os family="windows"/>
+            <then>
+                <container.stop/>
+            </then>
+        </if>
+
+        <copy overwrite="true" file="${groovy.jar}" todir="${container.home}/lib"/>
+
+        <if>
+            <os family="windows"/>
+            <then>
+                <!-- container.start/ -->
+                <echo>The container may have been stopped. Please restart it, if
+                    needed.
+                </echo>
+            </then>
+        </if>       
+    </target>
+
+    <target name="container.undeploy.test.dependencies"
+            description="Undeploy any container level dependencies from the container.">
+        <if>
+            <os family="windows"/>
+            <then>
+                <container.stop/>
+            </then>
+        </if>
+
+        <delete file="${container.home}/modules/${groovy.jarfile}"/>
+
+        <if>
+            <os family="windows"/>
+            <then>
+                <!-- container.start/ -->
+                <echo>The container may have been stopped. Please restart it, if
+                    needed.
+                </echo>
+            </then>
+        </if>       
+    </target>
+    
+    <target name="container.start"
+            description="Start the GlassFish container">
+        <container.start/>
+    </target>
+
+    <target name="container.debug"
+            description="Start the GlassFish container in debug mode">
+        <container.debug/>
+    </target>
+
+    <target name="container.stop"
+            description="Stop the GlassFish container">
+        <container.stop/>
+    </target>
+    <target name="container.restart"
+            description="Stop the GlassFish container">
+        <container.stop/>
+        <container.start/>
+    </target>
+    <macrodef name="container.start"
+            description="Start the GlassFish container">
+        <sequential>
+            <start.domain/>
+        </sequential>
+    </macrodef>
+    
+    <macrodef name="container.stop"
+            description="Stop the GlassFish container">
+        <sequential>
+            <stop.domain/>
+        </sequential>
+    </macrodef>
+
+    <target name="define.scenario.aware.port">
+      <property name="scenario.aware.port" value="${container.port}" />
+    </target>
+
+    <target name="define.virtual-server.aware.port">
+      <property name="scenario.aware.port" value="${container.port}" />
+    </target>
+
+    <!-- 'PRIVATE' targets -->
+    <macrodef name="start.domain">
+        <sequential>
+            <echo>
+                
+"------------ Starting ${glassfish.domain} ------------"
+                
+            </echo>
+            <if>
+                <os family="unix"/>
+                <then>
+                    <exec executable="${container.home}/bin/asadmin"
+                          failonerror="true">
+                        <arg line="start-domain"/>
+                        <arg line="--user ${glassfish.admin.user}"/>
+                        <arg line="${glassfish.domain}"/>
+                    </exec>
+                    <waitfor>
+                        <http url="http://${container.host}:${container.port}"/>
+                    </waitfor>
+                </then>
+                <else>
+                    <exec executable="${container.home}/bin/asadmin.bat"
+                          spawn="true">
+                        <arg line="start-domain"/>
+                        <arg line="--user ${glassfish.admin.user}"/>
+                        <arg line="${glassfish.domain}"/>
+                    </exec>
+                    <waitfor>
+                        <http url="http://${container.host}:${container.port}"/>
+                    </waitfor>
+                </else>
+            </if>
+        </sequential>
+    </macrodef>
+
+    <macrodef name="debug.domain">
+        <sequential>
+            <echo>
+
+"------------ Starting ${glassfish.domain} in debug mode ------------"
+
+            </echo>
+            <if>
+                <os family="unix"/>
+                <then>
+                    <exec executable="${container.home}/bin/asadmin"
+                          failonerror="true">
+                        <arg line="start-domain"/>
+                        <arg line="--debug"/>
+                        <arg line="--user ${glassfish.admin.user}"/>
+                        <arg line="${glassfish.domain}"/>
+                    </exec>
+                    <waitfor>
+                        <http url="http://${container.host}:${container.port}"/>
+                    </waitfor>
+                </then>
+                <else>
+                    <exec executable="${container.home}/bin/asadmin.bat"
+                          spawn="true">
+                        <arg line="start-domain"/>
+                        <arg line="--debug"/>
+                        <arg line="--user ${glassfish.admin.user}"/>
+                        <arg line="${glassfish.domain}"/>
+                    </exec>
+                    <waitfor>
+                        <http url="http://${container.host}:${container.port}"/>
+                    </waitfor>
+                </else>
+            </if>
+        </sequential>
+    </macrodef>    
+
+    <macrodef name="stop.domain">
+        <sequential>
+            <echo>
+                
+"------------ Stopping ${glassfish.domain} ------------"
+                
+            </echo>
+            <if>
+                <os family="unix"/>
+                <then>
+                    <exec executable="${container.home}/bin/asadmin">
+                        <arg line="stop-domain"/>
+                        <arg line="${glassfish.domain}"/>
+                    </exec>
+                </then>
+                <else>
+                    <exec executable="${container.home}/bin/asadmin.bat"
+                          spawn="true">
+                        <arg line="stop-domain"/>
+                        <arg line="${glassfish.domain}"/>
+                    </exec>
+                </else>
+            </if>
+
+            <sleep seconds="15"/>
+        </sequential>
+    </macrodef>
+
+</project>
diff --git a/common/ant/glassfishV3.1/DO_NOT_REMOVE_CRLFS.txt b/common/ant/glassfishV3.1/DO_NOT_REMOVE_CRLFS.txt
new file mode 100644
index 0000000..3109825
--- /dev/null
+++ b/common/ant/glassfishV3.1/DO_NOT_REMOVE_CRLFS.txt
@@ -0,0 +1,3 @@
+Don't remove the CRLF characters from the patch files.
+
+http://www.mail-archive.com/gnuwin32-users@lists.sourceforge.net/msg01528.html
diff --git a/common/ant/glassfishV3.1/container.xml b/common/ant/glassfishV3.1/container.xml
new file mode 100644
index 0000000..e626d91
--- /dev/null
+++ b/common/ant/glassfishV3.1/container.xml
@@ -0,0 +1,1091 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project name="GlassFishV3.1" basedir=".">
+
+    <!-- JARs that may be packaged in WEB-INF/lib
+  in order for the implementation to run
+  properly if they aren't availabe in the
+  container's classloader.
+
+  This is a comma separated list of fully
+  qualified JARs -->
+
+    <property name="webapp.jars" value=""/>
+
+    <property name="instance.numbers" value="1,2" />
+
+    <property name="glassfish.custom.domain" value="mojarra-domain" />
+    <property name="glassfish.cluster" value="mojarra-cluster" />
+    <property name="glassfish.custom.admin.port" value="60048" />
+    <property name="glassfish.cluster.admin.port" value="4949" />
+    <property name="glassfish.portbase.tenthousandsplace" value="6" />
+    <property name="glassfish.portbase" value="${glassfish.portbase.tenthousandsplace}0000" />
+    <property name="container.ssl.port" value="8181" />
+    <property name="container.jms.port" value="7676" />
+    <property name="container.iiop.port" value="3700" />
+    <property name="container.iiop.ssl.port" value="3820" />
+    <property name="container.iiop.ssl.mutualauth.port" value="3920" />
+    <property name="container.jmx.port" value="8686" />
+    <property name="container.gms.port" value="9490" />
+    <property name="container.debug.port" value="9009" />
+
+
+    <!-- Required Targets -->
+    <macrodef name="deploy.artifact">
+        <attribute name="artifact"
+                   description="The WAR to deploy"/>
+        <attribute name="appName"
+                   description="The name of the application"/>
+        <attribute name="use-virtual-servers"
+                   description="If true, deploy to the virtual servers."
+                   default="false"/>
+        <attribute name="osgi"
+                   description="If true, deploy with --type osgi."
+                   default="false"/>
+        <sequential>
+            <condition property="exec.name" value="cmd.exe">
+                <os family="windows"/>
+            </condition>
+            <condition property="exec.arg.1"
+                       value="/c ${container.home}/bin/asadmin">
+                <os family="windows"/>
+            </condition>
+            <property name="exec.name" value="${container.home}/bin/asadmin"/>
+            <property name="exec.arg.1" value=""/>
+            <echo>
+
+---------------- Glassfish - Deploying @{appName} ---------------- 
+
+            </echo>
+            <condition property="target"
+                       value="--target ${glassfish.cluster}">
+                <not>
+                  <equals arg1="${force.no.cluster}" casesensitive="false" trim="true"
+                          arg2="true" />
+                </not>
+            </condition>
+            <condition property="availabilityenabled"
+                       value="--availabilityenabled true">
+                <not>
+                  <equals arg1="${force.no.cluster}" casesensitive="false" trim="true"
+                          arg2="true" />
+                </not>
+            </condition>
+            <property name="target" value="" />
+            <property name="availabilityenabled" value="" />
+            <if>
+              <equals arg1="@{osgi}"
+                      casesensitive="false" trim="true"
+                      arg2="true" />
+                <then>
+                  <sequential>
+                      <property name="osgi-value" value="--type osgi" />
+                  </sequential>
+                </then>
+            </if>
+            <property name="osgi-value" value="" />
+            <echo message="osgi-value: ${osgi-value}" />
+            <exec executable="${exec.name}" failonerror="true">
+                <arg line="${exec.arg.1}"/>
+                <arg line="--port ${glassfish.custom.admin.port}"/>
+                <arg line="deploy"/>
+                <arg line="${osgi-value}"/>
+                <arg line="${availabilityenabled}"/>
+                <arg line="${target}"/>
+                <arg line="@{artifact}"/>
+            </exec>
+        </sequential>
+    </macrodef>
+
+    <macrodef name="non.ant.deploy.artifact">
+        <attribute name="artifact"
+                   description="The WAR to deploy"/>
+        <attribute name="appName"
+                   description="The name of the application"/>
+        <sequential>
+          <condition property="exec.name" value="cmd.exe">
+            <os family="windows"/>
+          </condition>
+          <condition property="exec.arg.1"
+                     value="${container.home}/bin/asadmin.bat">
+            <os family="windows"/>
+          </condition>
+          <echo>
+
+---------------- Glassfish - Deploying @{appName} ---------------- 
+
+          </echo>
+          <exec spawn="true" executable="${exec.name}">
+            <arg value="/c" />
+            <arg line="${exec.arg.1}" />
+            <arg line="deploy"/>
+            <arg line="--user ${glassfish.admin.user}"/>
+            <arg line="--passwordfile ${glassfish.password.file}"/>
+            <arg line="--host ${glassfish.admin.host}"/>
+            <arg line="--port ${glassfish.admin.port}"/>
+            <arg line="--contextroot @{appName} @{artifact}"/>
+          </exec>
+        </sequential>
+    </macrodef>
+
+    <macrodef name="deploydir.artifact">
+        <attribute name="explodedWarDir"
+                   description="The exploded war directory to deploy"/>
+        <attribute name="appName"
+                   description="The name of the application"/>
+        <sequential>
+            <condition property="exec.name" value="cmd.exe">
+                <os family="windows"/>
+            </condition>
+            <condition property="exec.arg.1"
+                       value="/c ${container.home}/bin/asadmin">
+                <os family="windows"/>
+            </condition>
+            <property name="exec.name" value="${container.home}/bin/asadmin"/>
+            <property name="exec.arg.1" value=""/>
+            <condition property="target"
+                       value="--target ${glassfish.cluster}">
+                <not>
+                  <equals arg1="${force.no.cluster}" casesensitive="false" trim="true"
+                          arg2="true" />
+                </not>
+            </condition>
+            <condition property="availabilityenabled"
+                       value="--availabilityenabled true">
+                <not>
+                  <equals arg1="${force.no.cluster}" casesensitive="false" trim="true"
+                          arg2="true" />
+                </not>
+            </condition>
+            <property name="target" value="" />
+            <property name="availabilityenabled" value="" />
+            <echo>
+
+---------------- Glassfish - Deploying @{appName} ---------------- 
+
+            </echo>
+            <exec executable="${exec.name}" failonerror="true">
+                <arg line="${exec.arg.1}"/>
+                <arg line="--port ${glassfish.custom.admin.port}"/>
+                <arg line="deploydir"/>
+                <arg line="${availabilityenabled}"/>
+                <arg line="${target}"/>
+                <arg line="--contextroot @{appName} @{explodedWarDir}"/>
+            </exec>
+        </sequential>
+    </macrodef>
+
+
+    <macrodef name="undeploy.artifact">
+        <attribute name="artifact"
+                   description="The WAR to deploy"/>
+        <attribute name="appName"
+                   description="The name of the application"/>
+        <sequential>
+            <condition property="exec.name" value="cmd.exe">
+                <os family="windows"/>
+            </condition>
+            <condition property="exec.arg.1"
+                       value="/c ${container.home}/bin/asadmin">
+                <os family="windows"/>
+            </condition>
+            <property name="exec.name" value="${container.home}/bin/asadmin"/>
+            <property name="exec.arg.1" value=""/>
+            <condition property="target"
+                       value="--target ${glassfish.cluster}">
+                <not>
+                  <equals arg1="${force.no.cluster}" casesensitive="false" trim="true"
+                          arg2="true" />
+                </not>
+            </condition>
+            <property name="target" value="" />
+            <echo>
+
+---------------- Glassfish - Undeploying @{appName} ---------------- 
+
+            </echo>
+            <exec executable="${exec.name}">
+                <arg line="${exec.arg.1}"/>
+                <arg line="--port ${glassfish.custom.admin.port}"/>
+                <arg line="undeploy"/>
+                <arg line="${target}"/>
+                <arg line="@{appName}"/>
+            </exec>
+        </sequential>
+    </macrodef>
+
+    <target name="config.container">
+    </target>
+
+    <!-- Require target to display information about the build environment -->
+    <target name="props">
+        <echo message="PENDING - Please add a message"/>
+        <echo message="container.home->${container.home}" />
+        <echo message="javaee.jar->${container.home}/lib/javaee.jar" />
+    </target>
+
+    <target name="update.impl.manifest">
+        <echo message="PENDING - Please implement"/>
+    </target>
+
+    <target name="container.deploy" 
+            description="Deploy the JSF Implementation artifacts to the target container.">
+        <if>
+            <os family="windows"/>
+            <then>
+                <container.stop/>
+            </then>
+        </if>
+        <delete failonerror="false" 
+                file="${container.home}/modules/jsf-api.jar" />
+        <delete failonerror="false" 
+                file="${container.home}/modules/jsf-impl.jar" />
+
+        <copy overwrite="true" file="${impl.dir}/build/lib/javax.faces.jar" toFile="${container.home}/modules/javax.faces.jar"/>
+
+        <if>
+            <os family="windows"/>
+            <then>
+                <!-- container.start/ -->
+                <echo>The container may have been stopped. Please restart it, if
+                    needed.
+                </echo>
+            </then>
+        </if>       
+    </target>
+
+
+    <target name="container.deploy.test.dependencies"
+            description="Deploy any container level dependencies to the container.">
+        <if>
+            <os family="windows"/>
+            <then>
+                <container.stop/>
+            </then>
+        </if>
+
+        <copy overwrite="true" file="${groovy.jar}" todir="${container.home}/modules"/>
+
+        <if>
+            <os family="windows"/>
+            <then>
+                <!-- container.start/ -->
+                <echo>The container may have been stopped. Please restart it, if
+                    needed.
+                </echo>
+            </then>
+        </if>       
+    </target>
+
+    <target name="container.undeploy.test.dependencies"
+            description="Undeploy any container level dependencies from the container.">
+        <if>
+            <os family="windows"/>
+            <then>
+                <container.stop/>
+            </then>
+        </if>
+
+        <delete file="${container.home}/modules/${groovy.jar}"/>
+
+        <if>
+            <os family="windows"/>
+            <then>
+                <!-- container.start/ -->
+                <echo>The container may have been stopped. Please restart it, if
+                    needed.
+                </echo>
+            </then>
+        </if>       
+    </target>
+
+    <target name="container.start"
+            description="Start the GlassFish container">
+        <var name="create-domain-value" value="true" />
+        <var name="create-cluster-value" value="true" />
+        <if>
+          <equals arg1="${create-domain}" 
+                  casesensitive="false" trim="true"
+                  arg2="false" />
+          <then>
+            <var name="create-domain-value" value="false" />
+          </then>
+        </if>
+        <if>
+          <equals arg1="${create-cluster}" 
+                  casesensitive="false" trim="true"
+                  arg2="false" />
+          <then>
+            <var name="create-cluster-value" value="false" />
+          </then>
+        </if>
+        <echo>
+--------- Starting container, create-domain: ${create-domain-value} create-cluster: ${create-cluster-value}
+        </echo>
+        <container.start create-domain="${create-domain-value}"
+                         create-cluster="${create-cluster-value}" failonerror="false"/>
+    </target>
+
+    <target name="container.debug"
+            description="Start the GlassFish container in debug mode">
+        <var name="create-domain-value" value="true" />
+        <var name="create-cluster-value" value="true" />
+        <if>
+          <equals arg1="${create-domain}" 
+                  casesensitive="false" trim="true"
+                  arg2="false" />
+          <then>
+            <var name="create-domain-value" value="false" />
+          </then>
+        </if>
+        <if>
+          <equals arg1="${create-cluster}" 
+                  casesensitive="false" trim="true"
+                  arg2="false" />
+          <then>
+            <var name="create-cluster-value" value="false" />
+          </then>
+        </if>
+        <echo>
+--------- Starting container in debug mode, create-domain: ${create-domain-value} create-cluster: ${create-cluster-value}
+        </echo>
+        <container.debug create-domain="${create-domain-value}"
+                         create-cluster="${create-cluster-value}"/>
+    </target>
+
+    <target name="container.stop"
+            description="Stop the GlassFish container">
+        <var name="create-domain-value" value="true" />
+        <var name="create-cluster-value" value="true" />
+        <if>
+          <equals arg1="${create-domain}" 
+                  casesensitive="false" trim="true"
+                  arg2="false" />
+          <then>
+            <var name="create-domain-value" value="false" />
+          </then>
+        </if>
+        <if>
+          <equals arg1="${create-cluster}" 
+                  casesensitive="false" trim="true"
+                  arg2="false" />
+          <then>
+            <var name="create-cluster-value" value="false" />
+          </then>
+        </if>
+        <echo>
+--------- Stopping container, create-domain: ${create-domain-value} create-cluster: ${create-cluster-value}
+        </echo>
+        <container.stop create-domain="${create-domain-value}"
+                        create-cluster="${create-cluster-value}"/>
+    </target>
+
+    <target name="container.init.osgi"
+            description="Configure GlassFish 3.1 for OSGi WAB deployment">
+        <echo>
+---------  Configuring GlassFish 3.1 for OSGi WAB deployment
+        </echo>
+        <container.start failonerror="false"/>
+        <exec executable="${container.home}/bin/asadmin"
+                          failonerror="false">
+           <arg line="--port ${glassfish.custom.admin.port}"/>
+           <arg line="delete-jvm-options"/>
+           <arg line="--target mojarra-cluster-config"/>
+           <arg line="-Dorg.glassfish.additionalOSGiBundlesToStart='org.apache.felix.shell,org.apache.felix.gogo.runtime,org.apache.felix.gogo.shell,org.apache.felix.gogo.command'"/>
+         </exec>
+         <exec executable="${container.home}/bin/asadmin"
+                          failonerror="false">
+           <arg line="--port ${glassfish.custom.admin.port}"/>
+           <arg line="delete-jvm-options"/>
+           <arg line="--target mojarra-cluster-config"/>
+           <arg line="-Dorg.glassfish.additionalOSGiBundlesToStart='org.apache.felix.shell,org.apache.felix.gogo.runtime,org.apache.felix.gogo.shell,org.apache.felix.shell.remote,org.apache.felix.fileinstall'"/>
+         </exec>
+         <exec executable="${container.home}/bin/asadmin"
+                          failonerror="true">
+           <arg line="--port ${glassfish.custom.admin.port}"/>
+           <arg line="create-jvm-options"/>
+           <arg line="--target mojarra-cluster-config"/>
+           <arg line="-Dorg.glassfish.additionalOSGiBundlesToStart='org.apache.felix.shell,org.apache.felix.gogo.runtime,org.apache.felix.gogo.shell,org.apache.felix.shell.remote,org.apache.felix.fileinstall'"/>
+         </exec>
+         <container.stop create-domain="false" create-cluster="false"/>
+    </target>
+
+    <target name="container.restart"
+            description="Stop the GlassFish container">
+        <container.stop/>
+        <container.start/>
+    </target>
+
+    <target name="define.scenario.aware.port">
+        <condition property="scenario.aware.port" value="${glassfish.portbase.tenthousandsplace}0080">
+          <equals arg1="${force.no.cluster}" casesensitive="false" trim="true"
+                  arg2="true" />
+        </condition>
+        <if>
+          <not>
+            <equals arg1="${force.no.cluster}" casesensitive="false" trim="true"
+                    arg2="true" />
+          </not>
+          <then>
+            <property name="scenario.aware.port" 
+                      value="${container.port}" />
+          </then>
+        </if>
+        <echo message="scenario.aware.port = ${scenario.aware.port}" />
+    </target>
+
+    <target name="define.virtual-server.aware.port">
+      <property name="scenario.aware.port" value="${container.port}" />
+    </target>
+
+
+    <macrodef name="container.start"
+            description="Start the GlassFish container">
+        <attribute name="create-domain" default="true"/>
+        <attribute name="create-cluster" default="true"/>
+        <attribute name="failonerror" default="true"/>
+        <sequential>
+            <start.domain create-domain="@{create-domain}" 
+                          create-cluster="@{create-cluster}"
+                          failonerror="@{failonerror}"/>
+        </sequential>
+    </macrodef>
+
+    <macrodef name="container.debug"
+            description="Start the GlassFish container in debug mode">
+        <attribute name="create-domain" default="true"/>
+        <attribute name="create-cluster" default="true"/>
+        <sequential>
+            <debug.domain create-domain="@{create-domain}"
+                          create-cluster="@{create-cluster}"/>
+        </sequential>
+    </macrodef>
+
+
+    <macrodef name="container.stop"
+            description="Stop the GlassFish container">
+        <attribute name="create-domain" default="true"/>
+        <attribute name="create-cluster" default="true"/>
+        <sequential>
+            <stop.domain create-domain="@{create-domain}"
+                         create-cluster="@{create-cluster}"/>
+        </sequential>
+    </macrodef>
+
+    <!-- 'PRIVATE' targets -->
+    <macrodef name="start.domain">
+        <attribute name="create-domain" default="true"/>
+        <attribute name="create-cluster" default="true"/>
+        <attribute name="failonerror" default="true"/>
+
+        <sequential>
+            <echo>
+
+"------------ Starting ${glassfish.custom.domain} force.no.cluster ${force.no.cluster} ------------"
+
+            </echo>
+            <if>
+                <os family="unix"/>
+                <then>
+                  <sequential>
+                    <if>
+                        <equals arg1="@{create-domain}" 
+                                casesensitive="false" trim="true"
+                                arg2="true" />
+                        <then>
+			  <exec executable="${container.home}/bin/asadmin"
+				failonerror="@{failonerror}">
+			      <arg line="create-domain"/>
+			      <arg line="--user ${glassfish.admin.user}"/>
+			      <arg line="--passwordfile ${glassfish.password.file}"/>
+			      <arg line="--portbase ${glassfish.portbase}"/>
+			      <arg line="${glassfish.custom.domain}"/>
+			  </exec>
+                        </then>
+                    </if>
+                    <exec executable="${container.home}/bin/asadmin"
+				failonerror="@{failonerror}">
+                        <arg line="start-domain"/>
+                        <arg line="--user ${glassfish.admin.user}"/>
+                        <arg line="${glassfish.custom.domain}"/>
+                    </exec>
+                    <if>
+                      <not>
+                        <equals arg1="${force.no.cluster}" 
+                                casesensitive="false" trim="true"
+                                arg2="true" />
+                      </not>
+                      <then>
+                        <start.cluster create-cluster="@{create-cluster}"
+				failonerror="@{failonerror}"/>
+                      </then>
+                      <else>
+			<waitfor>
+			    <http url="http://${container.host}:${glassfish.portbase.tenthousandsplace}0080"/>
+			</waitfor>
+                      </else>
+                    </if>
+                  </sequential>
+                </then>
+                <else>
+                  <sequential>
+                    <if>
+                        <equals arg1="@{create-domain}" 
+                                casesensitive="false" trim="true"
+                                arg2="true" />
+                        <then>
+			  <exec executable="${container.home}/bin/asadmin.bat"
+				failonerror="@{failonerror}">
+			      <arg line="create-domain"/>
+			      <arg line="--user ${glassfish.admin.user}"/>
+			      <arg line="--passwordfile ${glassfish.password.file}"/>
+			      <arg line="--portbase ${glassfish.portbase}"/>
+			      <arg line="${glassfish.custom.domain}"/>
+			  </exec>
+                        </then>
+                    </if>
+                    <exec executable="${container.home}/bin/asadmin.bat"
+				failonerror="@{failonerror}">
+                          spawn="true">
+                        <arg line="start-domain"/>
+                        <arg line="--user ${glassfish.admin.user}"/>
+                        <arg line="${glassfish.custom.domain}"/>
+                    </exec>
+                    <if>
+                      <not>
+                        <equals arg1="${force.no.cluster}" 
+                                casesensitive="false" trim="true"
+                                arg2="true" />
+                      </not>
+                      <then>
+                        <start.cluster create-cluster="@{create-cluster}"
+				failonerror="@{failonerror}"/>
+                      </then>
+                      <else>
+			<waitfor>
+			    <http url="http://${container.host}:${glassfish.portbase.tenthousandsplace}0080"/>
+			</waitfor>
+                      </else>
+                    </if>
+                  </sequential>
+                </else>
+            </if>
+        </sequential>
+    </macrodef>
+
+    <macrodef name="start.cluster">
+        <attribute name="create-cluster" default="true"/>
+        <attribute name="failonerror" default="true"/>
+        <sequential>
+            <echo>
+
+"------------ Starting ${glassfish.cluster} ------------"
+
+            </echo>
+            <if>
+                <os family="unix"/>
+                <then>
+                    <if>
+                        <equals arg1="@{create-cluster}" 
+                                casesensitive="false" trim="true"
+                                arg2="true" />
+                        <then>
+			  <exec executable="${container.home}/bin/asadmin"
+				failonerror="@{failonerror}">
+			      <arg line="--port ${glassfish.custom.admin.port}"/>
+			      <arg line="create-cluster"/>
+			      <arg line="--systemproperties ASADMIN_LISTENER_PORT=${glassfish.cluster.admin.port}"/>
+			      <arg line="${glassfish.cluster}"/>
+			  </exec>
+
+			  <for list="${instance.numbers}" param="num" trim="true">
+			    <sequential>
+			      <exec executable="${container.home}/bin/asadmin"
+				failonerror="@{failonerror}">
+				  <arg line="--port ${glassfish.custom.admin.port}"/>
+				  <arg line="create-local-instance"/>
+				  <arg line="--cluster ${glassfish.cluster}"/>
+				  <arg line="--systemproperties ASADMIN_LISTENER_PORT=@{num}${glassfish.admin.port}:HTTP_LISTENER_PORT=@{num}${container.port}:HTTP_SSL_LISTENER_PORT=@{num}${container.ssl.port}:JMS_PROVIDER_PORT=@{num}${container.jms.port}:IIOP_LISTENER_PORT=@{num}${container.iiop.port}:IIOP_SSL_LISTENER_PORT=@{num}${container.iiop.ssl.port}:IIOP_SSL_MUTUALAUTH_PORT=@{num}${container.iiop.ssl.mutualauth.port}:JMX_SYSTEM_CONNECTOR_PORT=@{num}${container.jmx.port}:GMS_BIND_INTERFACE_ADDRESS-${glassfis [...]
+				  <arg line="${glassfish.cluster}@{num}"/>
+			      </exec>
+			    </sequential>
+			  </for>
+                      </then>
+                    </if>
+                    <exec executable="${container.home}/bin/asadmin"
+				failonerror="@{failonerror}">
+                        <arg line="--port ${glassfish.custom.admin.port}"/>
+                        <arg line="start-cluster"/>
+                        <arg line="${glassfish.cluster}"/>
+                    </exec>
+                    <for list="${instance.numbers}" param="num" trim="true">
+                      <sequential>
+			<waitfor>
+			    <http url="http://${container.host}:@{num}${container.port}"/>
+			</waitfor>
+                      </sequential>
+                    </for>
+                </then>
+                <else>
+                    <if>
+                        <equals arg1="@{create-cluster}" 
+                                casesensitive="false" trim="true"
+                                arg2="true" />
+                        <then>
+			<exec executable="${container.home}/bin/asadmin.bat"
+				failonerror="@{failonerror}">
+			    <arg line="--port ${glassfish.custom.admin.port}"/>
+			    <arg line="create-cluster"/>
+			    <arg line="--systemproperties ASADMIN_LISTENER_PORT=${glassfish.cluster.admin.port}"/>
+			    <arg line="${glassfish.cluster}"/>
+			</exec>
+
+			<for list="${instance.numbers}" param="num" trim="true">
+			  <sequential>
+			    <exec executable="${container.home}/bin/asadmin.bat"
+				failonerror="@{failonerror}">
+				<arg line="--port ${glassfish.custom.admin.port}"/>
+				<arg line="create-local-instance"/>
+				<arg line="--cluster ${glassfish.cluster}"/>
+				<arg line="--systemproperties ASADMIN_LISTENER_PORT=@{num}${glassfish.admin.port}:HTTP_LISTENER_PORT=@{num}${container.port}:HTTP_SSL_LISTENER_PORT=@{num}${container.ssl.port}:JMS_PROVIDER_PORT=@{num}${container.jms.port}:IIOP_LISTENER_PORT=@{num}${container.iiop.port}:IIOP_SSL_LISTENER_PORT=@{num}${container.iiop.ssl.port}:IIOP_SSL_MUTUALAUTH_PORT=@{num}${container.iiop.ssl.mutualauth.port}:JMX_SYSTEM_CONNECTOR_PORT=@{num}${container.jmx.port}:GMS_BIND_INTERFACE_ADDRESS-${glassfish. [...]
+				<arg line="${glassfish.cluster}@{num}"/>
+			    </exec>
+			  </sequential>
+			</for>
+                      </then>
+                    </if>
+                    <exec executable="${container.home}/bin/asadmin.bat"
+				failonerror="@{failonerror}">
+                        <arg line="--port ${glassfish.custom.admin.port}"/>
+                        <arg line="start-cluster"/>
+                        <arg line="${glassfish.cluster}"/>
+                    </exec>
+                    <for list="${instance.numbers}" param="num" trim="true">
+                      <sequential>
+			<waitfor>
+			    <http url="http://${container.host}:@{num}${container.port}"/>
+			</waitfor>
+                      </sequential>
+                    </for>
+                </else>
+            </if>
+        </sequential>
+    </macrodef>
+
+    <macrodef name="debug.cluster">
+        <attribute name="create-cluster" default="true"/>
+        <sequential>
+            <echo>
+
+"------------ Starting ${glassfish.cluster} in debug mode ------------"
+
+            </echo>
+            <if>
+                <os family="unix"/>
+                <then>
+                    <if>
+                        <equals arg1="@{create-cluster}" 
+                                casesensitive="false" trim="true"
+                                arg2="true" />
+                        <then>
+                            <echo>
+
+"------------ Creating ${glassfish.cluster} ------------"
+
+                            </echo>
+			    <exec executable="${container.home}/bin/asadmin"
+				  failonerror="true">
+				<arg line="--port ${glassfish.custom.admin.port}"/>
+				<arg line="create-cluster"/>
+				<arg line="--systemproperties ASADMIN_LISTENER_PORT=${glassfish.cluster.admin.port}"/>
+				<arg line="${glassfish.cluster}"/>
+			    </exec>
+
+			    <for list="${instance.numbers}" param="num" trim="true">
+			      <sequential>
+                                <echo>
+
+"------------ Creating local instance ${glassfish.cluster}@{num} ------------"
+
+                                </echo>
+				<exec executable="${container.home}/bin/asadmin"
+				      failonerror="true">
+				    <arg line="--port ${glassfish.custom.admin.port}"/>
+				    <arg line="create-local-instance"/>
+				    <arg line="--cluster ${glassfish.cluster}"/>
+				    <arg line="--systemproperties JAVA_DEBUGGER_PORT=@{num}${container.debug.port}:ASADMIN_LISTENER_PORT=@{num}${glassfish.admin.port}:HTTP_LISTENER_PORT=@{num}${container.port}:HTTP_SSL_LISTENER_PORT=@{num}${container.ssl.port}:JMS_PROVIDER_PORT=@{num}${container.jms.port}:IIOP_LISTENER_PORT=@{num}${container.iiop.port}:IIOP_SSL_LISTENER_PORT=@{num}${container.iiop.ssl.port}:IIOP_SSL_MUTUALAUTH_PORT=@{num}${container.iiop.ssl.mutualauth.port}:JMX_SYSTEM_CONNECTOR_PORT=@{num}${contai [...]
+				    <arg line="${glassfish.cluster}@{num}"/>
+				</exec>
+			      </sequential>
+			    </for>
+                        </then>
+                    </if>
+                    <for list="${instance.numbers}" param="num" trim="true">
+                      <sequential>
+                       <echo>
+
+"------------ Starting local instance ${glassfish.cluster}@{num} with debug enabled ------------"
+
+                       </echo>
+                       <exec executable="${container.home}/bin/asadmin"
+       			           failonerror="true">
+				   <arg line="start-instance"/>
+				   <arg line="--user ${glassfish.admin.user}"/>
+				   <arg line="--passwordfile ${glassfish.password.file}"/>
+			           <arg line="--port ${glassfish.custom.admin.port}"/>
+                                   <arg line="--debug=true"/>
+			           <arg line="${glassfish.cluster}@{num}"/>
+                        </exec>
+			<waitfor>
+			    <http url="http://${container.host}:@{num}${container.port}"/>
+			</waitfor>
+                      </sequential>
+                    </for>
+                </then>
+                <else>
+                    <if>
+                        <equals arg1="@{create-cluster}" 
+                                casesensitive="false" trim="true"
+                                arg2="true" />
+                        <then>
+			    <exec executable="${container.home}/bin/asadmin.bat"
+				  failonerror="true">
+				<arg line="--port ${glassfish.custom.admin.port}"/>
+				<arg line="create-cluster"/>
+				<arg line="--systemproperties ASADMIN_LISTENER_PORT=${glassfish.cluster.admin.port}"/>
+				<arg line="${glassfish.cluster}"/>
+			    </exec>
+
+			    <for list="${instance.numbers}" param="num" trim="true">
+			      <sequential>
+				<exec executable="${container.home}/bin/asadmin.bat"
+				      failonerror="true">
+				    <arg line="--port ${glassfish.custom.admin.port}"/>
+				    <arg line="create-local-instance"/>
+				    <arg line="--cluster ${glassfish.cluster}"/>
+				    <arg line="--systemproperties ASADMIN_LISTENER_PORT=@{num}${glassfish.admin.port}:HTTP_LISTENER_PORT=@{num}${container.port}:HTTP_SSL_LISTENER_PORT=@{num}${container.ssl.port}:JMS_PROVIDER_PORT=@{num}${container.jms.port}:IIOP_LISTENER_PORT=@{num}${container.iiop.port}:IIOP_SSL_LISTENER_PORT=@{num}${container.iiop.ssl.port}:IIOP_SSL_MUTUALAUTH_PORT=@{num}${container.iiop.ssl.mutualauth.port}:JMX_SYSTEM_CONNECTOR_PORT=@{num}${container.jmx.port}:GMS_BIND_INTERFACE_ADDRESS-${glassf [...]
+				    <arg line="${glassfish.cluster}@{num}"/>
+				</exec>
+                                <exec executable="${container.home}/bin/asadmin.bat"
+       			           failonerror="true">
+	  			     <arg line="start-instance"/>
+				     <arg line="--user ${glassfish.admin.user}"/>
+				     <arg line="--passwordfile ${glassfish.password.file}"/>
+			             <arg line="--port ${glassfish.custom.admin.port}"/>
+                                     <arg line="--debug=true"/>
+			             <arg line="${glassfish.cluster}@{num}"/>
+                                </exec>
+			      </sequential>
+			    </for>
+                        </then>
+                    </if>
+                    <for list="${instance.numbers}" param="num" trim="true">
+                      <sequential>
+			<waitfor>
+			    <http url="http://${container.host}:@{num}${container.port}"/>
+			</waitfor>
+                      </sequential>
+                    </for>
+                </else>
+            </if>
+        </sequential>
+    </macrodef>
+
+    <macrodef name="stop.cluster">
+        <attribute name="create-cluster" default="true"/>
+        <sequential>
+            <echo>
+
+"------------ Stopping ${glassfish.cluster} ------------"
+
+            </echo>
+            <if>
+                <os family="unix"/>
+                <then>
+                    <exec executable="${container.home}/bin/asadmin" 
+                          failonerror="false">
+                        <arg line="--port ${glassfish.custom.admin.port}"/>
+                        <arg line="stop-cluster"/>
+                        <arg line="${glassfish.cluster}"/>
+                    </exec>
+                    <if>
+                        <equals arg1="@{create-cluster}" 
+                                casesensitive="false" trim="true"
+                                arg2="true" />
+                        <then>
+			    <for list="${instance.numbers}" param="num" trim="true">
+			      <sequential>
+				<exec executable="${container.home}/bin/asadmin"
+				      failonerror="false">
+				    <arg line="--port ${glassfish.custom.admin.port}"/>
+				    <arg line="delete-local-instance"/>
+				    <arg line="${glassfish.cluster}@{num}"/>
+				</exec>
+			      </sequential>
+			    </for>
+			    <exec executable="${container.home}/bin/asadmin"
+				  failonerror="false">
+				<arg line="--port ${glassfish.custom.admin.port}"/>
+				<arg line="delete-cluster"/>
+				<arg line="${glassfish.cluster}"/>
+			    </exec>
+                        </then>
+                    </if>
+                </then>
+                <else>
+                    <exec executable="${container.home}/bin/asadmin.bat"
+                          failonerror="false">
+                        <arg line="--port ${glassfish.custom.admin.port}"/>
+                        <arg line="stop-cluster"/>
+                        <arg line="${glassfish.cluster}"/>
+                    </exec>
+                    <if>
+                        <equals arg1="@{create-cluster}" 
+                                casesensitive="false" trim="true"
+                                arg2="true" />
+                        <then>
+			   <for list="${instance.numbers}" param="num" trim="true">
+			     <sequential>
+			       <exec executable="${container.home}/bin/asadmin.bat"
+				     failonerror="false">
+				   <arg line="--port ${glassfish.custom.admin.port}"/>
+				   <arg line="delete-local-instance"/>
+				   <arg line="${glassfish.cluster}@{num}"/>
+			       </exec>
+			     </sequential>
+			   </for>
+			   <exec executable="${container.home}/bin/asadmin.bat"
+				 failonerror="false">
+			       <arg line="--port ${glassfish.custom.admin.port}"/>
+			       <arg line="delete-cluster"/>
+			       <arg line="${glassfish.cluster}"/>
+			   </exec>
+                       </then>
+                    </if>
+		</else>
+            </if>
+        </sequential>
+    </macrodef>
+
+
+    <macrodef name="debug.domain">
+        <attribute name="create-domain" default="true"/>
+        <attribute name="create-cluster" default="true"/>
+        <sequential>
+            <echo>
+
+"------------ Starting ${glassfish.custom.domain} in debug mode------------"
+
+            </echo>
+            <if>
+                <os family="unix"/>
+                <then>
+                    <if>
+                        <equals arg1="@{create-domain}" 
+                                casesensitive="false" trim="true"
+                                arg2="true" />
+                        <then>
+			  <exec executable="${container.home}/bin/asadmin"
+				failonerror="true">
+			      <arg line="create-domain"/>
+			      <arg line="--user ${glassfish.admin.user}"/>
+			      <arg line="--passwordfile ${glassfish.password.file}"/>
+			      <arg line="--portbase ${glassfish.portbase}"/>
+			      <arg line="${glassfish.custom.domain}"/>
+			  </exec>
+                        </then>
+                    </if>
+                    <exec executable="${container.home}/bin/asadmin"
+                          failonerror="true">
+                        <arg line="start-domain"/>
+                        <arg line="--debug true"/>
+                        <arg line="--user ${glassfish.admin.user}"/>
+                        <arg line="${glassfish.custom.domain}"/>
+                    </exec>
+                    <if>
+                      <not>
+                        <equals arg1="${force.no.cluster}" 
+                                casesensitive="false" trim="true"
+                                arg2="true" />
+                      </not>
+                      <then>
+                        <debug.cluster create-cluster="@{create-cluster}"/>
+                      </then>
+                      <else>
+			<waitfor>
+			    <http url="http://${container.host}:${glassfish.portbase.tenthousandsplace}0080"/>
+			</waitfor>
+                      </else>
+                    </if>
+                </then>
+                <else>
+                    <if>
+                        <equals arg1="@{create-domain}" 
+                                casesensitive="false" trim="true"
+                                arg2="true" />
+                        <then>
+			  <exec executable="${container.home}/bin/asadmin.bat"
+				failonerror="true">
+			      <arg line="create-domain"/>
+			      <arg line="--user ${glassfish.admin.user}"/>
+			      <arg line="--passwordfile ${glassfish.password.file}"/>
+			      <arg line="--portbase ${glassfish.portbase}"/>
+			      <arg line="${glassfish.custom.domain}"/>
+			  </exec>
+                        </then>
+                    </if>
+                    <exec executable="${container.home}/bin/asadmin.bat"
+                          spawn="true">
+                        <arg line="start-domain"/>
+                        <arg line="--user ${glassfish.admin.user}"/>
+                        <arg line="${glassfish.custom.domain}"/>
+                    </exec>
+                    <if>
+                      <not>
+                        <equals arg1="${force.no.cluster}" 
+                                casesensitive="false" trim="true"
+                                arg2="true" />
+                      </not>
+                      <then>
+                        <debug.cluster create-cluster="@{create-cluster}"/>
+                      </then>
+                      <else>
+			<waitfor>
+			    <http url="http://${container.host}:${glassfish.portbase.tenthousandsplace}0080"/>
+			</waitfor>
+                      </else>
+                    </if>
+                </else>
+            </if>
+        </sequential>
+    </macrodef>
+
+    <macrodef name="stop.domain">
+        <attribute name="create-domain" default="true"/>
+        <attribute name="create-cluster" default="true"/>
+        <sequential>
+            <if>
+                <os family="unix"/>
+                <then>
+                    <if>
+                      <not>
+                        <equals arg1="${force.no.cluster}" 
+                                casesensitive="false" trim="true"
+                                arg2="true" />
+                      </not>
+                      <then>
+                        <stop.cluster create-cluster="@{create-cluster}"/>
+                      </then>
+                    </if>
+                    <echo>
+
+"------------ Stopping ${glassfish.custom.domain} ------------"
+
+                    </echo>
+                    <exec executable="${container.home}/bin/asadmin">
+                        <arg line="stop-domain"/>
+                        <arg line="${glassfish.custom.domain}"/>
+                    </exec>
+                    <if>
+                        <equals arg1="@{create-domain}" 
+                                casesensitive="false" trim="true"
+                                arg2="true" />
+                        <then>
+			  <exec executable="${container.home}/bin/asadmin">
+			      <arg line="delete-domain"/>
+			      <arg line="${glassfish.custom.domain}"/>
+			  </exec>
+                        </then>
+                    </if>
+                </then>
+                <else>
+                    <if>
+                      <not>
+                        <equals arg1="${force.no.cluster}" 
+                                casesensitive="false" trim="true"
+                                arg2="true" />
+                      </not>
+                      <then>
+                        <stop.cluster create-cluster="@{create-cluster}"/>
+                      </then>
+                    </if>
+                    <echo>
+
+"------------ Stopping ${glassfish.custom.domain} ------------"
+
+                    </echo>
+                    <exec executable="${container.home}/bin/asadmin.bat"
+                          spawn="true">
+                        <arg line="stop-domain"/>
+                        <arg line="${glassfish.custom.domain}"/>
+                    </exec>
+                    <if>
+                        <equals arg1="@{create-domain}" 
+                                casesensitive="false" trim="true"
+                                arg2="true" />
+                        <then>
+			  <exec executable="${container.home}/bin/asadmin.bat"
+				spawn="true">
+			      <arg line="delete-domain"/>
+			      <arg line="${glassfish.custom.domain}"/>
+			  </exec>
+                        </then>
+                    </if>
+                </else>
+            </if>
+        </sequential>
+    </macrodef>
+
+
+    <!-- ************ Compiler Defaults *************************************** -->
+
+
+    <!-- ************ Executable Targets ************************************** -->
+
+    <target name="main">
+    </target>
+
+
+</project>
+
diff --git a/common/ant/glassfishV3.1/domains_domain1_config_default-web_xml.patch b/common/ant/glassfishV3.1/domains_domain1_config_default-web_xml.patch
new file mode 100644
index 0000000..196f3b0
--- /dev/null
+++ b/common/ant/glassfishV3.1/domains_domain1_config_default-web_xml.patch
@@ -0,0 +1,13 @@
+--- default-web.xml.orig        Wed Jul 27 11:36:33 2011
++++ default-web.xml     Wed Jul 27 11:36:46 2011
+@@ -319,9 +319,8 @@
+         javax.servlet.jsp.jar
+         javax.servlet.jsp.jstl.jar
+         javax.jms.jar
+-        jsf-api.jar
++        javax.faces.jar
+         jsp-impl.jar
+-        jsf-impl.jar
+         jspcaching-connector.jar
+         web-glue.jar
+         bean-validator.jar
diff --git a/common/ant/glassfishV3.1/domains_domain1_config_default-web_xml_windows.patch b/common/ant/glassfishV3.1/domains_domain1_config_default-web_xml_windows.patch
new file mode 100644
index 0000000..e3099c4
--- /dev/null
+++ b/common/ant/glassfishV3.1/domains_domain1_config_default-web_xml_windows.patch
@@ -0,0 +1,13 @@
+--- default-web.xml.orig        Wed Jul 27 11:36:33 2011
++++ default-web.xml     Wed Jul 27 11:36:46 2011
+@@ -319,9 +319,8 @@
+         javax.servlet.jsp.jar
+         javax.servlet.jsp.jstl.jar
+         javax.jms.jar
+-        jsf-api.jar
++        javax.faces.jar
+         jsp-impl.jar
+-        jsf-impl.jar
+         jspcaching-connector.jar
+         web-glue.jar
+         bean-validator.jar
diff --git a/common/ant/glassfishV3.1/lib_templates_default-web_xml.patch b/common/ant/glassfishV3.1/lib_templates_default-web_xml.patch
new file mode 100644
index 0000000..dcb6133
--- /dev/null
+++ b/common/ant/glassfishV3.1/lib_templates_default-web_xml.patch
@@ -0,0 +1,13 @@
+--- default-web.xml.orig        Wed Jul 27 11:30:54 2011
++++ default-web.xml     Wed Jul 27 11:33:42 2011
+@@ -319,9 +319,8 @@
+         javax.servlet.jsp.jar
+         javax.servlet.jsp.jstl.jar
+         javax.jms.jar
+-        jsf-api.jar
++        javax.faces.jar
+         jsp-impl.jar
+-        jsf-impl.jar
+         jspcaching-connector.jar
+         web-glue.jar
+         bean-validator.jar
diff --git a/common/ant/glassfishV3.1/lib_templates_default-web_xml_windows.patch b/common/ant/glassfishV3.1/lib_templates_default-web_xml_windows.patch
new file mode 100644
index 0000000..23858d0
--- /dev/null
+++ b/common/ant/glassfishV3.1/lib_templates_default-web_xml_windows.patch
@@ -0,0 +1,13 @@
+--- default-web.xml.orig        Wed Jul 27 11:30:54 2011
++++ default-web.xml     Wed Jul 27 11:33:42 2011
+@@ -319,9 +319,8 @@
+         javax.servlet.jsp.jar
+         javax.servlet.jsp.jstl.jar
+         javax.jms.jar
+-        jsf-api.jar
++        javax.faces.jar
+         jsp-impl.jar
+-        jsf-impl.jar
+         jspcaching-connector.jar
+         web-glue.jar
+         bean-validator.jar
diff --git a/common/ant/glassfishV3.1_no_cluster/DO_NOT_REMOVE_CRLFS.txt b/common/ant/glassfishV3.1_no_cluster/DO_NOT_REMOVE_CRLFS.txt
new file mode 100644
index 0000000..3109825
--- /dev/null
+++ b/common/ant/glassfishV3.1_no_cluster/DO_NOT_REMOVE_CRLFS.txt
@@ -0,0 +1,3 @@
+Don't remove the CRLF characters from the patch files.
+
+http://www.mail-archive.com/gnuwin32-users@lists.sourceforge.net/msg01528.html
diff --git a/common/ant/glassfishV3.1_no_cluster/container.xml b/common/ant/glassfishV3.1_no_cluster/container.xml
new file mode 100644
index 0000000..ce53d9f
--- /dev/null
+++ b/common/ant/glassfishV3.1_no_cluster/container.xml
@@ -0,0 +1,805 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project name="glassfishV3.1_no_cluster" basedir=".">
+
+    <!-- JARs that may be packaged in WEB-INF/lib
+  in order for the implementation to run
+  properly if they aren't availabe in the
+  container's classloader.
+
+  This is a comma separated list of fully
+  qualified JARs -->
+
+    <property name="webapp.jars" value=""/>
+
+    <property name="glassfish.virtual.server.port" 
+              value="8888" />
+    <property name="glassfish.virtual.server" value="myVirtualServer" />
+
+    <!-- Required Targets -->
+    <macrodef name="deploy.artifact">
+        <attribute name="artifact"
+                   description="The WAR to deploy"/>
+        <attribute name="appName"
+                   description="The name of the application"/>
+        <attribute name="use-virtual-servers"
+                   description="If true, deploy to the virtual servers."
+                   default="false"/>
+        <attribute name="osgi"
+                   description="If true, deploy with --type osgi."
+                   default="false"/>
+        <sequential>
+            <echo>
+
+---------------- Glassfish - Deploying @{appName} ---------------- 
+
+            </echo>
+            <if>
+              <equals arg1="@{use-virtual-servers}"
+                      casesensitive="false" trim="true"
+                      arg2="true" />
+                <then>
+                  <sequential>
+                      <var name="virtualservers-rhs" value="" />
+                      <for list="${instance.numbers}" param="num" trim="true">
+                        <sequential>
+                          <var name="virtualservers-rhs" 
+                               value="${virtualservers-rhs},${glassfish.virtual.server}@{num}" />
+                        </sequential>
+                      </for>     
+                      <propertyregex property="virtualservers-rhs-trimmed"
+                                     input="${virtualservers-rhs}"
+                                     regexp="^[,](.*)"
+                                     select="\1"
+                                     casesensitive="false" />
+                      <property name="use-virtual-servers-value" value="--virtualservers ${virtualservers-rhs-trimmed}" />
+                  </sequential>
+                </then>
+            </if>
+            <property name="use-virtual-servers-value" value="" />
+            <echo message="use-virtual-servers-value: ${use-virtual-servers-value}" />
+            <if>
+              <equals arg1="@{osgi}"
+                      casesensitive="false" trim="true"
+                      arg2="true" />
+                <then>
+                  <sequential>
+                      <property name="osgi-value" value="--type osgi" />
+                  </sequential>
+                </then>
+            </if>
+            <property name="osgi-value" value="" />
+            <echo message="osgi-value: ${osgi-value}" />
+            <taskdef 
+                name="glassfish-admin"
+                classname="org.glassfish.ant.tasks.AdminTask"
+                classpath="${dependency.base.dir}/jars/ant-tasks.jar" />
+            <glassfish-admin 
+                installDir="${container.home}"
+                command="--user ${glassfish.admin.user} --passwordfile ${glassfish.password.file} --host ${glassfish.admin.host} --port ${glassfish.admin.port} deploy ${use-virtual-servers-value} ${osgi-value} @{artifact}"/>
+        </sequential>
+    </macrodef>
+
+    <macrodef name="deploydir.artifact">
+        <attribute name="explodedWarDir"
+                   description="The exploded war directory to deploy"/>
+        <attribute name="appName"
+                   description="The name of the application"/>
+        <sequential>
+            <condition property="exec.name" value="cmd.exe">
+                <os family="windows"/>
+            </condition>
+            <condition property="exec.arg.1"
+                       value="/c ${container.home}/bin/asadmin">
+                <os family="windows"/>
+            </condition>
+            <property name="exec.name" value="${container.home}/bin/asadmin"/>
+            <property name="exec.arg.1" value=""/>
+            <echo>
+
+---------------- Glassfish - Deploying @{appName} ---------------- 
+
+            </echo>
+            <exec executable="${exec.name}" failonerror="true">
+                <arg line="${exec.arg.1}"/>
+                <arg line="deploydir"/>
+                <arg line="--user ${glassfish.admin.user}"/>
+                <arg line="--passwordfile ${glassfish.password.file}"/>
+                <arg line="--host ${glassfish.admin.host}"/>
+                <arg line="--port ${glassfish.admin.port}"/>
+                <arg line="--contextroot @{appName} @{explodedWarDir}"/>
+            </exec>
+        </sequential>
+    </macrodef>
+
+    <macrodef name="non.ant.deploy.artifact">
+        <attribute name="artifact"
+                   description="The WAR to deploy"/>
+        <attribute name="appName"
+                   description="The name of the application"/>
+        <sequential>
+          <condition property="exec.name" value="cmd.exe">
+            <os family="windows"/>
+          </condition>
+          <condition property="exec.arg.1"
+                     value="${container.home}/bin/asadmin.bat">
+            <os family="windows"/>
+          </condition>
+          <echo>
+
+---------------- Glassfish - Deploying @{appName} ---------------- 
+
+          </echo>
+          <exec spawn="true" executable="${exec.name}">
+            <arg value="/c" />
+            <arg line="${exec.arg.1}" />
+            <arg line="deploy"/>
+            <arg line="--user ${glassfish.admin.user}"/>
+            <arg line="--passwordfile ${glassfish.password.file}"/>
+            <arg line="--host ${glassfish.admin.host}"/>
+            <arg line="--port ${glassfish.admin.port}"/>
+            <arg line="--contextroot @{appName} @{artifact}"/>
+          </exec>
+        </sequential>
+    </macrodef>
+
+    <macrodef name="undeploy.artifact">
+        <attribute name="artifact"
+                   description="The WAR to deploy"/>
+        <attribute name="appName"
+                   description="The name of the application"/>
+        <sequential>
+            <echo>
+
+---------------- Glassfish - Undeploying @{appName} ---------------- 
+
+            </echo>
+            <trycatch>
+                <try>
+                    <taskdef 
+                        name="glassfish-admin"
+                        classname="org.glassfish.ant.tasks.AdminTask"
+                        classpath="${dependency.base.dir}/jars/ant-tasks.jar" />
+                    <glassfish-admin 
+                        installDir="${container.home}"
+                        command="--user ${glassfish.admin.user} --passwordfile ${glassfish.password.file} --host ${glassfish.admin.host} --port ${glassfish.admin.port} undeploy @{appName}"/>
+                </try>
+                <finally>
+                    <echo>Unable to undeploy, continuing on</echo>
+                </finally>
+            </trycatch>
+        </sequential>
+    </macrodef>
+
+    <target name="config.container">
+    </target>
+
+    <!-- Require target to display information about the build environment -->
+    <target name="props">
+        <echo message="PENDING - Please add a message"/>
+        <echo message="container.home->${container.home}" />
+        <echo message="javaee.jar->${container.home}/lib/javaee.jar" />
+    </target>
+
+    <target name="update.impl.manifest">
+        <echo message="PENDING - Please implement"/>
+    </target>
+
+    <target name="container.deploy" 
+            description="Deploy the JSF Implementation artifacts to the target container.">
+        <if>
+            <not>
+                <isset property="skip.container.bounce"/>
+            </not>
+            <then>
+              <container.stop/>
+            </then>
+        </if>
+        <delete failonerror="false" 
+                file="${container.home}/modules/jsf-api.jar" />
+        <delete failonerror="false" 
+                file="${container.home}/modules/jsf-impl.jar" />
+
+        <copy overwrite="true" file="${impl.dir}/build/lib/javax.faces.jar" toFile="${container.home}/modules/javax.faces.jar"/>
+
+        <if>
+            <not>
+                <isset property="skip.container.bounce"/>
+            </not>
+            <then>
+              <container.start/>
+            </then>
+        </if>
+
+    </target>
+
+    <target name="define.scenario.aware.port">
+      <property name="scenario.aware.port" value="${container.port}" />
+    </target>
+
+    <target name="define.virtual-server.aware.port">
+        <property name="scenario.aware.port" 
+                  value="${glassfish.virtual.server.port}" />
+        <echo message="scenario.aware.port = ${scenario.aware.port}" />
+    </target>
+
+    <target name="container.deploy.test.dependencies"
+            description="Deploy any container level dependencies to the container.">
+        <if>
+            <not>
+                <isset property="skip.container.bounce"/>
+            </not>
+            <then>
+              <container.stop/>
+            </then>
+        </if>
+
+        <copy overwrite="true" file="${groovy.jar}" todir="${container.home}/modules"/>
+        <if>
+            <not>
+                <isset property="skip.container.bounce"/>
+            </not>
+            <then>
+              <container.start/>
+            </then>
+        </if>
+
+    </target>
+
+    <target name="container.undeploy.test.dependencies"
+            description="Undeploy any container level dependencies from the container.">
+        <container.stop/>
+
+        <delete failonerror="false" file="${container.home}/modules/${groovy.jarfile}"/>
+
+        <container.start/>
+    </target>
+
+    <target name="create.virtual.servers">
+      <property name="instance.numbers" value="1,2" />
+
+      <create.virtual.servers />
+    </target>
+
+    <target name="delete.virtual.servers">
+      <property name="instance.numbers" value="1,2" />
+
+      <delete.virtual.servers />
+    </target>
+
+    <target name="container.init.osgi"
+            description="Configure GlassFish 3.1 for OSGi WAB deployment">
+        <echo>
+---------  Configuring GlassFish 3.1 for OSGi WAB deployment
+        </echo>
+        <container.start failonerror="false" />
+        <taskdef 
+            name="glassfish-admin"
+            classname="org.glassfish.ant.tasks.AdminTask"
+            classpath="${dependency.base.dir}/jars/ant-tasks.jar" />
+        <glassfish-admin 
+            installDir="${container.home}"
+            command="--user ${glassfish.admin.user} --passwordfile ${glassfish.password.file} --host ${glassfish.admin.host} --port ${glassfish.admin.port} delete-jvm-options --target server-config -Dorg.glassfish.additionalOSGiBundlesToStart='org.apache.felix.shell,org.apache.felix.gogo.runtime,org.apache.felix.gogo.shell,org.apache.felix.gogo.command'"/>
+        <glassfish-admin 
+            installDir="${container.home}"
+            command="--user ${glassfish.admin.user} --passwordfile ${glassfish.password.file} --host ${glassfish.admin.host} --port ${glassfish.admin.port} delete-jvm-options --target server-config -Dorg.glassfish.additionalOSGiBundlesToStart='org.apache.felix.shell,org.apache.felix.gogo.runtime,org.apache.felix.gogo.shell,org.apache.felix.shell.remote,org.apache.felix.fileinstall'"/>
+        <glassfish-admin 
+            installDir="${container.home}"
+            command="--user ${glassfish.admin.user} --passwordfile ${glassfish.password.file} --host ${glassfish.admin.host} --port ${glassfish.admin.port} create-jvm-options --target server-config -Dorg.glassfish.additionalOSGiBundlesToStart='org.apache.felix.shell,org.apache.felix.gogo.runtime,org.apache.felix.gogo.shell,org.apache.felix.shell.remote,org.apache.felix.fileinstall'"/>
+         <container.stop/>
+    </target>
+
+
+    <target name="container.start"
+            description="Start the GlassFish container">
+        <var name="create-virtual-server-value" value="false" />
+
+        <if>
+          <equals arg1="${create-virtual-server}" 
+                  casesensitive="false" trim="true"
+                  arg2="true" />
+          <then>
+            <var name="create-virtual-server-value" value="true" />
+          </then>
+        </if>
+        <echo>
+--------- Starting container create-virtual-server: ${create-virtual-server-value} 
+        </echo>
+        <container.start
+                  create-virtual-server="${create-virtual-server-value}" />
+    </target>
+
+    <target name="database.start"
+            description="Start the container's database">
+        <var name="create-virtual-server-value" value="false" />
+
+        <if>
+          <equals arg1="${create-virtual-server}" 
+                  casesensitive="false" trim="true"
+                  arg2="true" />
+          <then>
+            <var name="create-virtual-server-value" value="true" />
+          </then>
+        </if>
+        <echo>
+--------- Starting database create-virtual-server: ${create-virtual-server-value} 
+        </echo>
+        <database.start
+                  create-virtual-server="${create-virtual-server-value}" />
+    </target>
+
+
+    <target name="container.debug"
+            description="Start the GlassFish container">
+        <var name="create-virtual-server-value" value="false" />
+
+        <if>
+          <equals arg1="${create-virtual-server}" 
+                  casesensitive="false" trim="true"
+                  arg2="true" />
+          <then>
+            <var name="create-virtual-server-value" value="true" />
+          </then>
+        </if>
+        <echo>
+--------- Starting container create-virtual-server: ${create-virtual-server-value} 
+        </echo>
+        <container.debug
+                  create-virtual-server="${create-virtual-server-value}" />
+    </target>
+
+    <target name="container.stop"
+            description="Stop the GlassFish container">
+        <var name="create-virtual-server-value" value="false" />
+        <if>
+          <equals arg1="${create-virtual-server}" 
+                  casesensitive="false" trim="true"
+                  arg2="true" />
+          <then>
+            <var name="create-virtual-server-value" value="true" />
+          </then>
+        </if>
+        <echo>
+--------- stopping container create-virtual-server: ${create-virtual-server-value} 
+        </echo>
+
+        <container.stop create-virtual-server="${create-virtual-server-value}" />
+
+    </target>
+
+    <target name="database.stop"
+            description="Stop the container database">
+        <var name="create-virtual-server-value" value="false" />
+        <if>
+          <equals arg1="${create-virtual-server}" 
+                  casesensitive="false" trim="true"
+                  arg2="true" />
+          <then>
+            <var name="create-virtual-server-value" value="true" />
+          </then>
+        </if>
+        <echo>
+--------- stopping database create-virtual-server: ${create-virtual-server-value} 
+        </echo>
+
+        <database.stop create-virtual-server="${create-virtual-server-value}" />
+
+    </target>
+
+    <target name="container.restart"
+            description="Stop the GlassFish container">
+        <container.stop/>
+        <container.start />
+    </target>
+
+    <macrodef name="container.start"
+            description="Start the GlassFish container">
+        <attribute name="create-virtual-server" default="false"/>
+        <attribute name="failonerror" default="true"/>
+        <sequential>
+            <start.domain failonerror="@{failonerror}"
+                          create-virtual-server="@{create-virtual-server}"/>
+        </sequential>
+    </macrodef>
+
+    <macrodef name="database.start"
+            description="Start the container database">
+        <attribute name="create-virtual-server" default="false"/>
+        <attribute name="failonerror" default="true"/>
+        <sequential>
+            <start.database failonerror="@{failonerror}"
+                          create-virtual-server="@{create-virtual-server}"/>
+        </sequential>
+    </macrodef>
+
+    <macrodef name="container.debug"
+            description="Start the GlassFish container in debug mode">
+        <attribute name="create-virtual-server" default="false"/>
+        <sequential>
+            <debug.domain create-virtual-server="@{create-virtual-server}"/>
+        </sequential>
+    </macrodef>
+
+
+    <macrodef name="container.stop"
+            description="Stop the GlassFish container">
+        <attribute name="create-virtual-server" default="false" />
+        <sequential>
+            <stop.domain create-virtual-server="@{create-virtual-server}"/>
+        </sequential>
+    </macrodef>
+
+    <macrodef name="database.stop"
+            description="Stop the container database">
+        <attribute name="create-virtual-server" default="false" />
+        <sequential>
+            <stop.database create-virtual-server="@{create-virtual-server}"/>
+        </sequential>
+    </macrodef>
+
+    <!-- 'PRIVATE' targets -->
+    <macrodef name="start.domain">
+        <attribute name="create-virtual-server" default="false"/>
+        <attribute name="failonerror" default="true"/>
+        <sequential>
+            <echo>
+
+"------------ Starting ${glassfish.domain} ------------"
+
+            </echo>
+            <taskdef 
+                name="glassfish-start-server"
+                classname="org.glassfish.ant.tasks.StartServerTask"
+                classpath="${dependency.base.dir}/jars/ant-tasks.jar" />
+            <glassfish-start-server 
+                installDir="${container.home}"
+                domain="${glassfish.domain}"/>
+            <waitfor>
+                <http url="http://${container.host}:${container.port}"/>
+            </waitfor>
+            <if>
+                <equals arg1="@{create-virtual-server}" 
+                        casesensitive="false" trim="true"
+                        arg2="true" />
+                <then>
+                    <sequential>
+                        <create.virtual.servers />
+                        <for list="${instance.numbers}" param="num" trim="true">
+                            <sequential>
+                                <waitfor>
+                                    <http url="http://${container.host}:@{num}${glassfish.virtual.server.port}"/>
+                                </waitfor>
+                            </sequential>
+                        </for>
+                    </sequential>
+                </then>
+            </if>
+        </sequential>
+    </macrodef>
+
+    <macrodef name="start.database">
+        <attribute name="create-virtual-server" default="false"/>
+        <attribute name="failonerror" default="true"/>
+        <sequential>
+            <echo>
+
+"------------ Starting database ------------"
+
+            </echo>
+            <if>
+                <os family="unix"/>
+                <then>
+                    <exec executable="${container.home}/bin/asadmin"
+                          failonerror="@{failonerror}">
+                        <arg line="start-database"/>
+                    </exec>
+                    <waitfor>
+                        <http url="http://${container.host}:${container.port}"/>
+                    </waitfor>
+                </then>
+                <else>
+                  <condition property="exec.name" value="cmd.exe">
+                    <os family="windows"/>
+                  </condition>
+                  <condition property="exec.arg.1"
+                     value="${container.home}/bin/asadmin.bat">
+                     <os family="windows"/>
+                  </condition>
+                  <exec spawn="true" executable="${exec.name}">
+                      <arg value="/c" />
+                      <arg line="${exec.arg.1}" />
+                      <arg line="start-database" />
+                  </exec>                   
+                    <waitfor>
+                        <http url="http://${container.host}:${container.port}"/>
+                    </waitfor>
+                </else>
+            </if>
+        </sequential>
+    </macrodef>
+
+    <macrodef name="set.security.properties">
+        <attribute name="create-virtual-server" default="false"/>
+        <attribute name="failonerror" default="true"/>
+        <sequential>
+            <echo>
+
+"------------ Setting security properties ------------"
+
+            </echo>
+            <mkdir dir="${basedir}/build" />
+            <echo file="${basedir}/build/userpassword.txt">AS_ADMIN_USERPASSWORD=user1</echo>
+            <if>
+                <os family="unix"/>
+                <then>
+                    <exec executable="${container.home}/bin/asadmin"
+                          failonerror="@{failonerror}">
+                        <arg line="set server.security-service.activate-default-principal-to-role-mapping=true"/>
+                    </exec>
+                    <exec executable="${container.home}/bin/asadmin"
+                          failonerror="false">
+                        <arg line="--passwordfile ${basedir}/build/userpassword.txt delete-file-user user1"/>
+                    </exec>
+                    <exec executable="${container.home}/bin/asadmin"
+                          failonerror="@{failonerror}">
+                        <arg line="--passwordfile ${basedir}/build/userpassword.txt create-file-user --groups user user1"/>
+                    </exec>
+                    <waitfor>
+                        <http url="http://${container.host}:${container.port}"/>
+                    </waitfor>
+                </then>
+                <else>
+                  <condition property="exec.name" value="cmd.exe">
+                    <os family="windows"/>
+                  </condition>
+                  <condition property="exec.arg.1"
+                     value="${container.home}/bin/asadmin.bat">
+                     <os family="windows"/>
+                  </condition>
+                  <exec spawn="true" executable="${exec.name}">
+                      <arg value="/c" />
+                      <arg line="${exec.arg.1}" />
+                      <arg line="set server.security-service.activate-default-principal-to-role-mapping=true" />
+                  </exec>                   
+                  <exec spawn="true" failonerror="false" executable="${exec.name}">
+                      <arg value="/c" />
+                      <arg line="${exec.arg.1}" />
+                      <arg line="--passwordfile ${basedir}/build/userpassword.txt delete-file-user user1" />
+                  </exec>                   
+                  <exec spawn="true" executable="${exec.name}">
+                      <arg value="/c" />
+                      <arg line="${exec.arg.1}" />
+                      <arg line="--passwordfile ${basedir}/build/userpassword.txt create-file-user --groups user user1" />
+                  </exec>                   
+                    <waitfor>
+                        <http url="http://${container.host}:${container.port}"/>
+                    </waitfor>
+                </else>
+            </if>
+        </sequential>
+    </macrodef>
+
+    <macrodef name="create.virtual.servers">
+        <sequential>
+                    <for list="${instance.numbers}" param="num" trim="true">
+                      <sequential>
+                        <echo>
+
+"------------ Creating ${glassfish.virtual.server}@{num} --listenerport @{num}${glassfish.virtual.server.port} ------------"
+
+                        </echo>
+                    <taskdef 
+                        name="glassfish-admin"
+                        classname="org.glassfish.ant.tasks.AdminTask"
+                        classpath="${dependency.base.dir}/jars/ant-tasks.jar" />
+                    <glassfish-admin 
+                        installDir="${container.home}"
+                        command="--user ${glassfish.admin.user} create-virtual-server --hosts localhost ${glassfish.virtual.server}@{num}"/>
+                    <glassfish-admin 
+                        installDir="${container.home}"
+                        command="--user ${glassfish.admin.user} create-http-listener --listenerport @{num}${glassfish.virtual.server.port} --defaultvs ${glassfish.virtual.server}@{num} --servername localhost.localdomain --acceptorthreads 1 --listeneraddress 0.0.0.0 myHttpListener@{num}"/>
+                </sequential>
+            </for>
+        </sequential>
+    </macrodef>
+
+    <macrodef name="delete.virtual.servers">
+        <sequential>
+            <for list="${instance.numbers}" param="num" trim="true">
+                <sequential>
+                    <echo>
+  
+"------------ Deleting ${glassfish.virtual.server}@{num} ------------"
+
+                    </echo>
+                    <taskdef 
+                        name="glassfish-admin"
+                        classname="org.glassfish.ant.tasks.AdminTask"
+                        classpath="${dependency.base.dir}/jars/ant-tasks.jar" />
+                    <glassfish-admin 
+                        installDir="${container.home}"
+                        command="delete-http-listener myHttpListener@{num}"/>
+                    <glassfish-admin 
+                        installDir="${container.home}"
+                        command="delete-virtual-server ${glassfish.virtual.server}@{num}"/>
+                </sequential>
+            </for>
+        </sequential>
+    </macrodef>
+
+    <macrodef name="debug.domain">
+        <attribute name="create-virtual-server" default="false"/>
+        <sequential>
+            <echo>
+
+"------------ Starting ${glassfish.domain} in debug mode------------"
+
+            </echo>
+            <if>
+                <os family="unix"/>
+                <then>
+                    <exec executable="${container.home}/bin/asadmin"
+                          failonerror="true">
+                        <arg line="start-domain"/>
+                        <arg line="--user ${glassfish.admin.user}"/>
+                        <arg line="--debug"/>
+                        <arg line="${glassfish.domain}"/>
+                    </exec>
+                    <waitfor>
+                        <http url="http://${container.host}:${container.port}"/>
+                    </waitfor>
+                </then>
+                <else>
+                    <exec executable="${container.home}/bin/asadmin.bat"
+                          spawn="true">
+                        <arg line="start-domain"/>
+                        <arg line="--user ${glassfish.admin.user}"/>
+                        <arg line="--debug"/>
+                        <arg line="${glassfish.domain}"/>
+                    </exec>
+                    <waitfor>
+                        <http url="http://${container.host}:${container.port}"/>
+                    </waitfor>
+                </else>
+            </if>
+            <if>
+              <equals arg1="@{create-virtual-server}" 
+                      casesensitive="false" trim="true"
+                      arg2="true" />
+                <then>
+                  <sequential>
+                    <create.virtual.servers />
+                    <for list="${instance.numbers}" param="num" trim="true">
+                      <sequential>
+                        <waitfor>
+                          <http url="http://${container.host}:@{num}${glassfish.virtual.server.port}"/>
+                       </waitfor>
+                     </sequential>
+                   </for>
+                  </sequential>
+                </then>
+              </if>
+        </sequential>
+    </macrodef>
+
+    <macrodef name="stop.domain">
+        <attribute name="create-virtual-server" default="false"/>
+        <sequential>
+            <echo>
+
+"------------ create-virtual-server: @{create-virtual-server} ------------"
+
+            </echo>
+            <if>
+                <equals arg1="@{create-virtual-server}" 
+                    casesensitive="false" trim="true"
+                    arg2="true" />
+                <then>
+                    <sequential>
+                        <delete.virtual.servers />
+                    </sequential>
+                </then>
+            </if>
+            <taskdef name="glassfish-stop-server"
+                classname="org.glassfish.ant.tasks.StopServerTask"
+                classpath="${dependency.base.dir}/jars/ant-tasks.jar" />
+            <glassfish-stop-server 
+                installDir="${container.home}"
+                domain="${glassfish.domain}"/>
+        </sequential>
+    </macrodef>
+
+    <macrodef name="stop.database">
+        <attribute name="create-virtual-server" default="false"/>
+        <attribute name="failonerror" default="false"/>
+        <sequential>
+            <echo>
+
+"------------ Stopping database ------------"
+
+            </echo>
+            <if>
+                <os family="unix"/>
+                <then>
+                    <exec executable="${container.home}/bin/asadmin"
+                          failonerror="@{failonerror}">
+                        <arg line="stop-database"/>
+                    </exec>
+                    <waitfor>
+                        <http url="http://${container.host}:${container.port}"/>
+                    </waitfor>
+                </then>
+                <else>
+                  <condition property="exec.name" value="cmd.exe">
+                    <os family="windows"/>
+                  </condition>
+                  <condition property="exec.arg.1"
+                     value="${container.home}/bin/asadmin.bat">
+                     <os family="windows"/>
+                  </condition>
+                  <exec spawn="true" executable="${exec.name}">
+                      <arg value="/c" />
+                      <arg line="${exec.arg.1}" />
+                      <arg line="stop-database" />
+                  </exec>                   
+                    <waitfor>
+                        <http url="http://${container.host}:${container.port}"/>
+                    </waitfor>
+                </else>
+            </if>
+        </sequential>
+    </macrodef>
+
+
+    <!-- ************ Compiler Defaults *************************************** -->
+
+
+    <!-- ************ Executable Targets ************************************** -->
+
+    <target name="main">
+    </target>
+
+
+</project>
+
diff --git a/common/ant/glassfishV3.1_no_cluster/domains_domain1_config_default-web_xml.patch b/common/ant/glassfishV3.1_no_cluster/domains_domain1_config_default-web_xml.patch
new file mode 100644
index 0000000..196f3b0
--- /dev/null
+++ b/common/ant/glassfishV3.1_no_cluster/domains_domain1_config_default-web_xml.patch
@@ -0,0 +1,13 @@
+--- default-web.xml.orig        Wed Jul 27 11:36:33 2011
++++ default-web.xml     Wed Jul 27 11:36:46 2011
+@@ -319,9 +319,8 @@
+         javax.servlet.jsp.jar
+         javax.servlet.jsp.jstl.jar
+         javax.jms.jar
+-        jsf-api.jar
++        javax.faces.jar
+         jsp-impl.jar
+-        jsf-impl.jar
+         jspcaching-connector.jar
+         web-glue.jar
+         bean-validator.jar
diff --git a/common/ant/glassfishV3.1_no_cluster/domains_domain1_config_default-web_xml_windows.patch b/common/ant/glassfishV3.1_no_cluster/domains_domain1_config_default-web_xml_windows.patch
new file mode 100644
index 0000000..e3099c4
--- /dev/null
+++ b/common/ant/glassfishV3.1_no_cluster/domains_domain1_config_default-web_xml_windows.patch
@@ -0,0 +1,13 @@
+--- default-web.xml.orig        Wed Jul 27 11:36:33 2011
++++ default-web.xml     Wed Jul 27 11:36:46 2011
+@@ -319,9 +319,8 @@
+         javax.servlet.jsp.jar
+         javax.servlet.jsp.jstl.jar
+         javax.jms.jar
+-        jsf-api.jar
++        javax.faces.jar
+         jsp-impl.jar
+-        jsf-impl.jar
+         jspcaching-connector.jar
+         web-glue.jar
+         bean-validator.jar
diff --git a/common/ant/glassfishV3.1_no_cluster/lib_templates_default-web_xml.patch b/common/ant/glassfishV3.1_no_cluster/lib_templates_default-web_xml.patch
new file mode 100644
index 0000000..dcb6133
--- /dev/null
+++ b/common/ant/glassfishV3.1_no_cluster/lib_templates_default-web_xml.patch
@@ -0,0 +1,13 @@
+--- default-web.xml.orig        Wed Jul 27 11:30:54 2011
++++ default-web.xml     Wed Jul 27 11:33:42 2011
+@@ -319,9 +319,8 @@
+         javax.servlet.jsp.jar
+         javax.servlet.jsp.jstl.jar
+         javax.jms.jar
+-        jsf-api.jar
++        javax.faces.jar
+         jsp-impl.jar
+-        jsf-impl.jar
+         jspcaching-connector.jar
+         web-glue.jar
+         bean-validator.jar
diff --git a/common/ant/glassfishV3.1_no_cluster/lib_templates_default-web_xml_windows.patch b/common/ant/glassfishV3.1_no_cluster/lib_templates_default-web_xml_windows.patch
new file mode 100644
index 0000000..23858d0
--- /dev/null
+++ b/common/ant/glassfishV3.1_no_cluster/lib_templates_default-web_xml_windows.patch
@@ -0,0 +1,13 @@
+--- default-web.xml.orig        Wed Jul 27 11:30:54 2011
++++ default-web.xml     Wed Jul 27 11:33:42 2011
+@@ -319,9 +319,8 @@
+         javax.servlet.jsp.jar
+         javax.servlet.jsp.jstl.jar
+         javax.jms.jar
+-        jsf-api.jar
++        javax.faces.jar
+         jsp-impl.jar
+-        jsf-impl.jar
+         jspcaching-connector.jar
+         web-glue.jar
+         bean-validator.jar
diff --git a/common/ant/glassfishV3/container.xml b/common/ant/glassfishV3/container.xml
index 48f2d53..7513889 100644
--- a/common/ant/glassfishV3/container.xml
+++ b/common/ant/glassfishV3/container.xml
@@ -1,40 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
+
 <project name="GlassFishV3" basedir=".">
 
     <!-- JARs that may be packaged in WEB-INF/lib
@@ -53,6 +59,9 @@
                    description="The WAR to deploy"/>
         <attribute name="appName"
                    description="The name of the application"/>
+        <attribute name="use-virtual-servers"
+                   description="If true, deploy to the virtual servers."
+                   default="false"/>
         <sequential>
             <condition property="exec.name" value="cmd.exe">
                 <os family="windows"/>
@@ -79,6 +88,37 @@
             </exec>
         </sequential>
     </macrodef>
+    
+    <macrodef name="non.ant.deploy.artifact">
+        <attribute name="artifact"
+                   description="The WAR to deploy"/>
+        <attribute name="appName"
+                   description="The name of the application"/>
+        <sequential>
+          <condition property="exec.name" value="cmd.exe">
+            <os family="windows"/>
+          </condition>
+          <condition property="exec.arg.1"
+                     value="${container.home}/bin/asadmin.bat">
+            <os family="windows"/>
+          </condition>
+          <echo>
+
+---------------- Glassfish - Deploying @{appName} ---------------- 
+
+          </echo>
+          <exec spawn="true" executable="${exec.name}">
+            <arg value="/c" />
+            <arg line="${exec.arg.1}" />
+            <arg line="deploy"/>
+            <arg line="--user ${glassfish.admin.user}"/>
+            <arg line="--passwordfile ${glassfish.password.file}"/>
+            <arg line="--host ${glassfish.admin.host}"/>
+            <arg line="--port ${glassfish.admin.port}"/>
+            <arg line="--contextroot @{appName} @{artifact}"/>
+          </exec>
+        </sequential>
+    </macrodef>
 
     <macrodef name="deploydir.artifact">
         <attribute name="explodedWarDir"
@@ -168,8 +208,51 @@
             </then>
         </if>
 
-        <copy overwrite="true" file="${api.dir}/build/lib/jsf-api.jar" toFile="${container.home}/modules/jsf-api.jar"/>
-        <copy overwrite="true" file="${impl.dir}/build/lib/jsf-impl.jar" toFile="${container.home}/modules/jsf-impl.jar"/>
+        <copy overwrite="true" file="${impl.dir}/build/lib/javax.faces.jar" toFile="${container.home}/modules/javax.faces.jar"/>
+
+        <if>
+            <os family="windows"/>
+            <then>
+                <!-- container.start/ -->
+                <echo>The container may have been stopped. Please restart it, if
+                    needed.
+                </echo>
+            </then>
+        </if>       
+    </target>
+
+    <target name="container.deploy.test.dependencies"
+            description="Deploy any container level dependencies to the container.">
+        <if>
+            <os family="windows"/>
+            <then>
+                <container.stop/>
+            </then>
+        </if>
+
+        <copy overwrite="true" file="${groovy.jar}" todir="${container.home}/modules"/>
+
+        <if>
+            <os family="windows"/>
+            <then>
+                <!-- container.start/ -->
+                <echo>The container may have been stopped. Please restart it, if
+                    needed.
+                </echo>
+            </then>
+        </if>       
+    </target>
+
+    <target name="container.undeploy.test.dependencies"
+            description="Undeploy any container level dependencies from the container.">
+        <if>
+            <os family="windows"/>
+            <then>
+                <container.stop/>
+            </then>
+        </if>
+
+        <delete file="${container.home}/modules/${groovy.jarfile}"/>
 
         <if>
             <os family="windows"/>
@@ -320,6 +403,13 @@
         </sequential>
     </macrodef>
 
+    <target name="define.scenario.aware.port">
+        <property name="scenario.aware.port" value="${container.port}"/>
+    </target>
+
+    <target name="define.virtual-server.aware.port">
+      <property name="scenario.aware.port" value="${container.port}" />
+    </target>
 
     <!-- ************ Compiler Defaults *************************************** -->
 
diff --git a/common/ant/glassfishV3prelude/container.xml b/common/ant/glassfishV3prelude/container.xml
index 9d1c1d9..3b18b39 100644
--- a/common/ant/glassfishV3prelude/container.xml
+++ b/common/ant/glassfishV3prelude/container.xml
@@ -1,40 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
+
 <project name="GlassFishV3" basedir=".">
 
     <!-- JARs that may be packaged in WEB-INF/lib
@@ -53,6 +59,9 @@
                    description="The WAR to deploy"/>
         <attribute name="appName"
                    description="The name of the application"/>
+        <attribute name="use-virtual-servers"
+                   description="If true, deploy to the virtual servers."
+                   default="false"/>
         <sequential>
             <condition property="exec.name" value="cmd.exe">
                 <os family="windows"/>
@@ -79,6 +88,37 @@
             </exec>
         </sequential>
     </macrodef>
+    
+    <macrodef name="non.ant.deploy.artifact">
+        <attribute name="artifact"
+                   description="The WAR to deploy"/>
+        <attribute name="appName"
+                   description="The name of the application"/>
+        <sequential>
+          <condition property="exec.name" value="cmd.exe">
+            <os family="windows"/>
+          </condition>
+          <condition property="exec.arg.1"
+                     value="${container.home}/bin/asadmin.bat">
+            <os family="windows"/>
+          </condition>
+          <echo>
+
+---------------- Glassfish - Deploying @{appName} ---------------- 
+
+          </echo>
+          <exec spawn="true" executable="${exec.name}">
+            <arg value="/c" />
+            <arg line="${exec.arg.1}" />
+            <arg line="deploy"/>
+            <arg line="--user ${glassfish.admin.user}"/>
+            <arg line="--passwordfile ${glassfish.password.file}"/>
+            <arg line="--host ${glassfish.admin.host}"/>
+            <arg line="--port ${glassfish.admin.port}"/>
+            <arg line="--contextroot @{appName} @{artifact}"/>
+          </exec>
+        </sequential>
+    </macrodef>
 
     <macrodef name="deploydir.artifact">
         <attribute name="explodedWarDir"
@@ -167,8 +207,51 @@
             </then>
         </if>
 
-        <copy file="${api.dir}/build/lib/jsf-api.jar" toFile="${container.home}/modules/jsf-api.jar"/>
-        <copy file="${impl.dir}/build/lib/jsf-impl.jar" toFile="${container.home}/modules/web/jsf-impl.jar"/>
+        <copy file="${impl.dir}/build/lib/javax.faces.jar" toFile="${container.home}/modules/web/javax.faces.jar"/>
+
+        <if>
+            <os family="windows"/>
+            <then>
+                <!-- container.start/ -->
+                <echo>The container may have been stopped. Please restart it, if
+                    needed.
+                </echo>
+            </then>
+        </if>       
+    </target>
+
+    <target name="container.deploy.test.dependencies"
+            description="Deploy any container level dependencies to the container.">
+        <if>
+            <os family="windows"/>
+            <then>
+                <container.stop/>
+            </then>
+        </if>
+
+        <copy overwrite="true" file="${groovy.jar}" todir="${container.home}/modules"/>
+
+        <if>
+            <os family="windows"/>
+            <then>
+                <!-- container.start/ -->
+                <echo>The container may have been stopped. Please restart it, if
+                    needed.
+                </echo>
+            </then>
+        </if>       
+    </target>
+
+    <target name="container.undeploy.test.dependencies"
+            description="Undeploy any container level dependencies from the container.">
+        <if>
+            <os family="windows"/>
+            <then>
+                <container.stop/>
+            </then>
+        </if>
+
+        <delete file="${container.home}/modules/${groovy.jarfile}"/>
 
         <if>
             <os family="windows"/>
@@ -197,6 +280,14 @@
         <container.start/>
     </target>
 
+    <target name="define.scenario.aware.port">
+      <property name="scenario.aware.port" value="${container.port}" />
+    </target>
+
+    <target name="define.virtual-server.aware.port">
+      <property name="scenario.aware.port" value="${container.port}" />
+    </target>
+
     <macrodef name="container.start"
             description="Start the GlassFish container">
         <sequential>
diff --git a/common/ant/maven-pre-maven-rename.xml b/common/ant/maven-pre-maven-rename.xml
new file mode 100644
index 0000000..fb57d81
--- /dev/null
+++ b/common/ant/maven-pre-maven-rename.xml
@@ -0,0 +1,426 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project name="JSF Maven-pre-maven-rename" basedir=".">
+
+    <property name="current.dir" value="${jsf.build.home}/common/ant"/>
+    <property environment="myenv"/>
+    <property name="mvn.home" value="${myenv.M2_HOME}"/>
+    <property name="mvn.pre-maven-rename.api.dir" value="${api.dir}/${build.dir}/mvn-pre-maven-rename" />
+    <property name="mvn.pre-maven-rename.impl.dir" value="${jsf.build.home}/jsf-ri/${build.dir}/mvn-pre-maven-rename"/>
+    <property name="groupId" value="com.sun.faces"/>
+
+    <!-- ======================== SNAPSHOT ============================ -->
+
+    <macrodef name="mvn.pre-maven-rename.deploy.snapshot.local">
+        <attribute name="type"/>
+        <sequential>
+            <do.pre-maven-rename.mvn type="@{type}" goal="install" version="${snapshot.version}"/>
+        </sequential>
+    </macrodef>
+
+    <macrodef name="mvn.pre-maven-rename.deploy.snapshot">
+        <attribute name="type"/>
+        <sequential>
+            <sequential>
+                <do.pre-maven-rename.mvn type="@{type}" goal="deploy" version="${snapshot.version}"/>
+            </sequential>
+        </sequential>
+    </macrodef>
+
+    <!-- ======================== PROMOTED BUILD =========================== -->
+
+    <macrodef name="mvn.pre-maven-rename.deploy.promoted.local">
+        <attribute name="type"/>
+        <sequential>
+            <do.pre-maven-rename.mvn type="@{type}" goal="install" version="${impl.version.number}-${build.number}"/>
+        </sequential>
+    </macrodef>
+
+    <macrodef name="mvn.pre-maven-rename.deploy.promoted">
+        <attribute name="type"/>
+        <sequential>
+            <do.pre-maven-rename.mvn type="@{type}" goal="deploy" version="${impl.version.number}-${build.number}"/>
+        </sequential>
+    </macrodef>
+
+    <!-- ========================= RELEASE BUILD =========================== -->
+
+    <macrodef name="mvn.pre-maven-rename.deploy.release.local">
+        <attribute name="type"/>
+        <attribute name="groupId" default="${groupId}"/>
+        <attribute name="version" default="${impl.version.number}"/>
+        <sequential>
+            <do.pre-maven-rename.mvn type="@{type}" groupId="@{groupId}" goal="install" version="@{version}"/>
+        </sequential>
+    </macrodef>
+
+    <macrodef name="mvn.pre-maven-rename.deploy.release">
+        <attribute name="type"/>
+        <attribute name="groupId" default="${groupId}"/>
+        <attribute name="version" default="${impl.version.number}"/>
+        <sequential>
+            <do.pre-maven-rename.mvn type="@{type}" groupId="@{groupId}" goal="deploy" version="@{version}"/>
+        </sequential>
+    </macrodef>
+
+    <!-- ============================== HELPER MACROS ====================== -->
+
+    <macrodef name="create.pre-maven-rename.pom">
+        <attribute name="template.file"/>
+        <attribute name="output.file"/>
+        <attribute name="version"/>
+        <attribute name="groupId" default="${groupId}"/>
+        <sequential>
+            <copy overwrite="true" file="@{template.file}" tofile="@{output.file}"/>
+            <replace file="@{output.file}"
+                     token="@version@"
+                     value="@{version}"/>
+            <replace file="@{output.file}"
+                     token="@groupId@"
+                     value="@{groupId}"/>
+        </sequential>
+    </macrodef>
+
+    <macrodef name="obtain.pre-maven-rename.javadoc.jar">
+      <attribute name="artifactId" />
+      <attribute name="version" />
+      <attribute name="target.parent.dir" />
+     
+      <sequential>
+        <property name="documentation.zip"
+                  value="${jsf.build.home}/jsf-demo/dist/docs/mojarra-@{version}-documentation.zip" />
+        <property name="javadoc.jar"
+                  value="@{target.parent.dir}/target/@{artifactId}-@{version}-javadoc.jar" />
+        <if>
+          <isset property="skip.javadoc.jar" />
+          <then>
+            <echo file="@{target.parent.dir}/target/index.html" append="false">
+<html>
+<head><title>javadoc generation skipped</title></head>
+<body>
+javadoc generation skipped
+</body>
+</html>
+            </echo>
+            <jar destfile="@{target.parent.dir}/target/@{artifactId}-@{version}-javadoc.jar" 
+                 basedir="@{target.parent.dir}/target/" includes="index.html"/>
+          </then>
+          <else>
+            <if>
+              <not>
+                <resourceexists>
+                  <file file="${documentation.zip}" />
+                </resourceexists>
+              </not>
+              <then>
+                <echo message="Generating documentation for inclusion as ${javadoc.jar}"/>
+                <property name="documentation.version" value="@{version}" />
+                <ant dir="${demo.dir}" 
+                  target="generate.documentatation.given.documentation.version" />
+              </then>
+            </if>
+            <copy file="${documentation.zip}" tofile="${javadoc.jar}"
+                  overwrite="true" failonerror="false"/> 
+          </else>
+        </if>
+      </sequential>
+    </macrodef>
+
+    <macrodef name="do.pre-maven-rename.mvn">
+        <attribute name="type"/>
+        <attribute name="version"/>
+        <attribute name="goal"/>
+        <attribute name="groupId" default="${groupId}"/>
+        <sequential>
+            <if>
+                <equals arg1="@{type}" arg2="api"/>
+                <then>
+                    <delete failonerror="false" dir="${mvn.pre-maven-rename.api.dir}"/>
+                    <create.pre-maven-rename.pom
+                          template.file="${current.dir}/template/jsf-pre-maven-rename-api-pom-template.xml"
+                          output.file="${mvn.pre-maven-rename.api.dir}/jsf-api-pom.xml"
+                          version="@{version}"
+                          groupId="@{groupId}"/>
+                    <mkdir dir="${mvn.pre-maven-rename.api.dir}/target/classes"/>
+                    <mkdir dir="${mvn.pre-maven-rename.api.dir}/src/main/java"/>
+                    <copy overwrite="true" 
+                          todir="${mvn.pre-maven-rename.api.dir}/src/main/java">
+                      <fileset dir="${api.dir}/doc">
+                        <include name="**/*.png" />
+                        <include name="*.xsd" />
+                        <include name="*.dtd" />
+                        <include name="standard-html-renderkit.xml" />
+                        <exclude name="xml.xsd" />
+                        <exclude name="javaee*.xsd" />
+                        <exclude name="XMLSchema.dtd" />
+                        <exclude name="datatypes.dtd" />
+                        <exclude name="changed_*.png" />
+                      </fileset>
+                      <fileset dir="${api.dir}/src/main/java">
+                        <include name="**/*" />
+                        <exclude name="**/*.png" />
+                      </fileset>
+                      <fileset dir="${api.dir}/${build.dir}/generate/">
+                        <include name="**/*" />
+                        <exclude name="**/last-generation" />
+                        <exclude name="facesdoc/**/*.*" />
+                        <exclude name="**/*.png" />
+                      </fileset>
+                    </copy>
+                    <unjar src="${api.dir}/${build.dir}/lib/jsf-api.jar"
+                           overwrite="yes"
+                           dest="${mvn.pre-maven-rename.api.dir}/target/classes"/>
+                    <obtain.pre-maven-rename.javadoc.jar 
+                            artifactId="jsf-api"
+                            version="@{version}" 
+                            target.parent.dir="${mvn.pre-maven-rename.api.dir}"/>
+                    <jsf.pre-maven-rename.mvn pomFile="${mvn.pre-maven-rename.api.dir}/jsf-api-pom.xml"
+                             mvnSpecVersion="@{version}"
+                             dir="${mvn.pre-maven-rename.api.dir}"
+                             goals="@{goal}"/>
+                    <if>
+                      <isset property="mvn.jar.echo" />
+                      <then>
+                        <output.jar.contents
+                            locally.deployed.jar="${maven.repo.local}/com/sun/faces/jsf-api/@{version}/jsf-api-@{version}.jar" />
+                        <output.jar.contents
+                            locally.deployed.jar="${maven.repo.local}/com/sun/faces/jsf-api/@{version}/jsf-api-@{version}-javadoc.jar" />
+                        <output.jar.contents
+                            locally.deployed.jar="${maven.repo.local}/com/sun/faces/jsf-api/@{version}/jsf-api-@{version}-sources.jar" />
+                      </then>
+                    </if>
+
+                </then>
+                <else>
+                     <delete failonerror="false" dir="${mvn.pre-maven-rename.impl.dir}"/>
+                     <create.pre-maven-rename.pom
+                          template.file="${current.dir}/template/jsf-pre-maven-rename-impl-pom-template.xml"
+                          output.file="${mvn.pre-maven-rename.impl.dir}/jsf-impl-pom.xml"
+                          version="@{version}"/>
+                    <mkdir dir="${mvn.pre-maven-rename.impl.dir}/target/classes"/>
+                    <mkdir dir="${mvn.pre-maven-rename.impl.dir}/src/main/java"/>
+                    <copy overwrite="true" 
+                          todir="${mvn.pre-maven-rename.impl.dir}/src/main/java">
+                      <fileset dir="${impl.dir}/src/main/java" includes="**/*" />
+                      <fileset dir="${impl.dir}/${build.dir}/generate/" 
+                               includes="**/*" excludes="last-generation,conf/**,**/*.xsd" />
+                    </copy>
+                    <unjar src="${impl.dir}/${build.dir}/lib/jsf-impl.jar"
+                           overwrite="yes"
+                           dest="${mvn.pre-maven-rename.impl.dir}/target/classes"/>
+                    <property name="skip.javadoc.jar" value="true" />
+                    <obtain.pre-maven-rename.javadoc.jar 
+                            artifactId="jsf-impl"
+                            version="@{version}" 
+                            target.parent.dir="${mvn.pre-maven-rename.impl.dir}"/>
+                    <jsf.pre-maven-rename.mvn pomFile="${mvn.pre-maven-rename.impl.dir}/jsf-impl-pom.xml"
+                             mvnSpecVersion="@{version}"
+                             dir="${mvn.pre-maven-rename.impl.dir}"
+                             goals="@{goal}"/>
+
+                    <if>
+                      <isset property="mvn.jar.echo" />
+                      <then>
+                        <output.jar.contents
+                            locally.deployed.jar="${maven.repo.local}/com/sun/faces/jsf-impl/@{version}/jsf-impl-@{version}.jar" />
+                        <output.jar.contents
+                            locally.deployed.jar="${maven.repo.local}/com/sun/faces/jsf-impl/@{version}/jsf-impl-@{version}-javadoc.jar" />
+                        <output.jar.contents
+                            locally.deployed.jar="${maven.repo.local}/com/sun/faces/jsf-impl/@{version}/jsf-impl-@{version}-sources.jar" />
+                      </then>
+                    </if>
+                    
+                </else>
+            </if>
+        </sequential>
+    </macrodef>
+
+    <macrodef name="output.jar.contents">
+      <attribute name="locally.deployed.jar" />
+      <sequential>
+        <var name="jar.contents.raw" unset="true" />
+        <var name="jar.contents" unset="true" />
+
+        <pathconvert pathsep="${line.separator}" 
+                     property="jar.contents.raw">
+          <zipfileset src="@{locally.deployed.jar}" />
+        </pathconvert>
+        <!-- Remove the leading fully qualified paths. -->
+<!--        <propertyregex property="jar.contents" 
+                       input="${jar.contents.raw}" override="true"
+                       regexp="@{locally.deployed.jar}:" replace="" 
+                       global="true" />-->
+        <echo>
++++++++++++++++++++++++++++++++ START contents of @{locally.deployed.jar}:
+${jar.contents.raw}
++++++++++++++++++++++++++++++++ END contents of @{locally.deployed.jar}:
+        </echo>
+      </sequential>                    
+    </macrodef>
+
+    <macrodef name="jsf.pre-maven-rename.mvn">
+        <attribute name="pomFile" default="pom.xml"/>
+        <attribute name="mvnSpecVersion" default="${impl.version}"/>
+        <attribute name="goals"/>
+        <attribute name="dir"/>
+        <attribute name="skipTests" default="true"/>
+        <attribute name="mvnargs" default=""/>
+        <sequential>
+            <if>
+                <equals arg1="${mvn.home}" arg2="$${myenv.M2_HOME}"/>
+                <then>
+                    <if>
+                        <os family="windows"/>
+                        <then>
+                            <property name="mvn.cmd" value="mvn.bat"/>
+                        </then>
+                        <else>
+                            <property name="mvn.cmd" value="mvn"/>
+                        </else>
+                    </if>
+                </then>
+                <else>
+                    <if>
+                        <os family="windows"/>
+                        <then>
+                            <property name="mvn.cmd" value="${mvn.home}/bin/mvn.bat"/>
+                        </then>
+                        <else>
+                            <property name="mvn.cmd" value="${mvn.home}/bin/mvn"/>
+                        </else>
+                    </if>
+                </else>
+            </if>
+
+
+            <if>
+                <!-- If maven.repo.local set, respect it -->
+                <isset property="maven.repo.local"/>
+                <then>
+                    <property name="mvn.repo.local.prop" value="-D'maven.repo.local=${maven.repo.local}'"/>
+                </then>
+                <else>
+                    <property name="mvn.repo.local.prop" value=""/>
+                </else>
+            </if>
+            <if>
+                <!-- If maven.m2.settings set, respect it -->
+                <isset property="maven.m2.settings"/>
+                <then>
+                    <property name="mvn.m2.settings.prop" value="--settings ${maven.m2.settings}"/>
+                </then>
+                <else>
+                    <property name="mvn.m2.settings.prop" value=""/>
+                </else>
+            </if>
+            <if>
+                <equals arg1="@{skipTests}" arg2="false"/>
+                <then>
+                    <property name="testSkipProperty" value=""/>
+                </then>
+                <else>
+                    <property name="testSkipProperty"
+                              value="-Dmaven.test.skip=true"/>
+                </else>
+            </if>
+            <if>
+                <and>
+                  <isset property="http.proxy.host" />
+                  <length string="${http.proxy.host}" when="greater" length="0" />
+                </and>
+                <then>
+                    <property name="httpProxyProperty" value="-Dhttp.proxyHost=${http.proxy.host} -Dhttp.proxyPort=${http.proxy.port}"/>
+                </then>
+                <else>
+                    <property name="httpProxyProperty" value=""/>
+                </else>
+            </if>
+
+            <if>
+                <and>
+                  <isset property="gpg.passphrase" />
+                  <length string="${gpg.passphrase}" when="greater" length="0" />
+                </and>
+                <then>
+                    <property name="gpgPassphraseProperty" value="-Prelease-sign-artifacts -Dgpg.passphrase=${gpg.passphrase}"/>
+                </then>
+                <else>
+                    <property name="gpgPassphraseProperty" value=""/>
+                </else>
+            </if>
+            <if>
+                <and>
+                  <isset property="https.proxy.host" />
+                  <length string="${https.proxy.host}" when="greater" length="0" />
+                </and>
+                <then>
+                    <property name="httpsProxyProperty" value="-Dhttps.proxyHost=${https.proxy.host} -Dhttps.proxyPort=${https.proxy.port}"/>
+                </then>
+                <else>
+                    <property name="httpsProxyProperty" value=""/>
+                </else>
+            </if>
+
+            <exec os="SunOS" dir="@{dir}" failonerror="yes"
+                  executable="${mvn.cmd}">
+                <arg line="-f @{pomFile} @{mvnargs} ${mvn.m2.settings.prop} ${testSkipProperty} ${mvn.repo.local.prop} -DmvnSpecVersion=@{mvnSpecVersion} @{goals} -Dspec.snapshot.version=${spec.snapshot.version} -Dproject.build.sourceEncoding=UTF-8 ${gpgPassphraseProperty} ${httpProxyProperty} ${httpsProxyProperty}"/>
+            </exec>
+            <exec os="Linux" dir="@{dir}" failonerror="yes"
+                  executable="${mvn.cmd}">
+                <arg line="-f @{pomFile} @{mvnargs} ${mvn.m2.settings.prop} ${testSkipProperty} ${mvn.repo.local.prop} -DmvnSpecVersion=@{mvnSpecVersion} @{goals} -Dspec.snapshot.version=${spec.snapshot.version} -Dproject.build.sourceEncoding=UTF-8 ${gpgPassphraseProperty} ${httpProxyProperty} ${httpsProxyProperty}"/>
+            </exec>
+            <exec osfamily="windows" dir="@{dir}" executable="${mvn.cmd}"
+                  failonerror="yes">
+                <arg line="-f @{pomFile} @{mvnargs} ${mvn.m2.settings.prop} ${testSkipProperty} ${mvn.repo.local.prop} -DmvnSpecVersion=@{mvnSpecVersion} @{goals} -Dspec.snapshot.version=${spec.snapshot.version} -Dproject.build.sourceEncoding=UTF-8 ${gpgPassphraseProperty} ${httpProxyProperty} ${httpsProxyProperty}"/>
+            </exec>
+            <exec os="Mac OS X" dir="@{dir}" executable="${mvn.cmd}"
+                  failonerror="yes">
+                <arg line="-f @{pomFile} @{mvnargs} ${mvn.m2.settings.prop} ${testSkipProperty} ${mvn.repo.local.prop} -DmvnSpecVersion=@{mvnSpecVersion} @{goals} -Dspec.snapshot.version=${spec.snapshot.version} -Dproject.build.sourceEncoding=UTF-8 ${gpgPassphraseProperty} ${httpProxyProperty} ${httpsProxyProperty}"/>
+            </exec>
+        </sequential>
+    </macrodef>
+
+   
+
+</project>
diff --git a/common/ant/maven.xml b/common/ant/maven.xml
index 3ceb56f..fecd044 100644
--- a/common/ant/maven.xml
+++ b/common/ant/maven.xml
@@ -1,39 +1,44 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in complicomance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
 
 <project name="JSF Maven" basedir=".">
@@ -45,17 +50,19 @@
     <!-- ======================== SNAPSHOT ============================ -->
 
     <macrodef name="mvn.deploy.snapshot.local">
+        <attribute name="version" default="${snapshot.version}"/>
         <attribute name="type"/>
         <sequential>
-            <do.mvn type="@{type}" goal="install" version="${snapshot.version}"/>
+            <do.mvn type="@{type}" goal="install" version="@{version}"/>
         </sequential>
     </macrodef>
 
     <macrodef name="mvn.deploy.snapshot">
+        <attribute name="version" default="${snapshot.version}"/>
         <attribute name="type"/>
         <sequential>
             <sequential>
-                <do.mvn type="@{type}" goal="deploy" version="${snapshot.version}"/>
+                <do.mvn type="@{type}" goal="deploy" version="@{version}"/>
             </sequential>
         </sequential>
     </macrodef>
@@ -63,16 +70,20 @@
     <!-- ======================== PROMOTED BUILD =========================== -->
 
     <macrodef name="mvn.deploy.promoted.local">
+        <attribute name="version" 
+                   default="${impl.version.number}-${build.number}"/>
         <attribute name="type"/>
         <sequential>
-            <do.mvn type="@{type}" goal="install" version="${impl.version.number}-${build.number}"/>
+            <do.mvn type="@{type}" goal="install" version="@{version}"/>
         </sequential>
     </macrodef>
 
     <macrodef name="mvn.deploy.promoted">
+        <attribute name="version" 
+                   default="${impl.version.number}-${build.number}"/>
         <attribute name="type"/>
         <sequential>
-            <do.mvn type="@{type}" goal="deploy" version="${impl.version.number}-${build.number}"/>
+            <do.mvn type="@{type}" goal="deploy" version="@{version}"/>
         </sequential>
     </macrodef>
 
@@ -80,7 +91,7 @@
 
     <macrodef name="mvn.deploy.release.local">
         <attribute name="type"/>
-        <attribute name="groupId" default="com.sun.faces"/>
+        <attribute name="groupId" default="${groupId}"/>
         <attribute name="version" default="${impl.version.number}"/>
         <sequential>
             <do.mvn type="@{type}" groupId="@{groupId}" goal="install" version="@{version}"/>
@@ -89,7 +100,7 @@
 
     <macrodef name="mvn.deploy.release">
         <attribute name="type"/>
-        <attribute name="groupId" default="com.sun.faces"/>
+        <attribute name="groupId" default="${groupId}"/>
         <attribute name="version" default="${impl.version.number}"/>
         <sequential>
             <do.mvn type="@{type}" groupId="@{groupId}" goal="deploy" version="@{version}"/>
@@ -102,27 +113,83 @@
         <attribute name="template.file"/>
         <attribute name="output.file"/>
         <attribute name="version"/>
-        <attribute name="groupId" default="com.sun.faces"/>
+        <attribute name="groupId" default="${groupId}"/>
         <sequential>
-            <copy file="@{template.file}" tofile="@{output.file}"/>
+            <copy overwrite="true" file="@{template.file}" tofile="@{output.file}"/>
             <replace file="@{output.file}"
                      token="@version@"
                      value="@{version}"/>
             <replace file="@{output.file}"
                      token="@groupId@"
                      value="@{groupId}"/>
+            <replace file="@{output.file}"
+                     token="@dependency.base.dir@"
+                     value="${dependency.base.dir}"/>
+            <replace file="@{output.file}"
+                     token="@xs3p.version@"
+                     value="${xs3p.version}"/>
+            <replace file="@{output.file}"
+                     token="@spec_version@"
+                     value="${spec_version}"/>
+
         </sequential>
     </macrodef>
 
+    <macrodef name="obtain.javadoc.jar">
+      <attribute name="artifactId" />
+      <attribute name="version" />
+      <attribute name="target.parent.dir" />
+
+      <sequential>
+        <property name="documentation.zip"
+                  value="${jsf.build.home}/jsf-demo/dist/docs/mojarra-@{version}-documentation.zip" />
+        <property name="javadoc.jar"
+                  value="@{target.parent.dir}/target/@{artifactId}-@{version}-javadoc.jar" />
+        <if>
+          <isset property="skip.javadoc.jar" />
+          <then>
+            <echo file="@{target.parent.dir}/target/index.html" append="false">
+<html>
+<head><title>javadoc generation skipped</title></head>
+<body>
+javadoc generation skipped
+</body>
+</html>
+            </echo>
+            <jar destfile="@{target.parent.dir}/target/@{artifactId}-@{version}-javadoc.jar" 
+                 basedir="@{target.parent.dir}/target/" includes="index.html"/>
+          </then>
+          <else>
+            <if>
+              <not>
+                <resourceexists>
+                  <file file="${documentation.zip}" />
+                </resourceexists>
+              </not>
+              <then>
+                <echo message="Generating documentation for inclusion as ${javadoc.jar}"/>
+                <property name="documentation.version" value="@{version}" />
+                <ant dir="${demo.dir}" 
+                  target="generate.documentatation.given.documentation.version" />
+              </then>
+            </if>
+            <copy file="${documentation.zip}" tofile="${javadoc.jar}"
+                  overwrite="true" failonerror="false"/> 
+          </else>
+        </if>
+      </sequential>
+    </macrodef>
+
     <macrodef name="do.mvn">
         <attribute name="type"/>
         <attribute name="version"/>
         <attribute name="goal"/>
-        <attribute name="groupId" default="com.sun.faces"/>
+        <attribute name="groupId" default="${groupId}"/>
         <sequential>
             <if>
                 <equals arg1="@{type}" arg2="api"/>
                 <then>
+                    <delete failonerror="false" dir="${mvn.api.dir}"/>
                     <create.pom
                           template.file="${current.dir}/template/jsf-api-pom-template.xml"
                           output.file="${mvn.api.dir}/jsf-api-pom.xml"
@@ -133,7 +200,7 @@
                     <copy overwrite="true" 
                           todir="${mvn.api.dir}/src/main/java">
                       <fileset dir="${api.dir}/doc">
-                        <include name="*.png" />
+                        <include name="**/*.png" />
                         <include name="*.xsd" />
                         <include name="*.dtd" />
                         <include name="standard-html-renderkit.xml" />
@@ -141,52 +208,143 @@
                         <exclude name="javaee*.xsd" />
                         <exclude name="XMLSchema.dtd" />
                         <exclude name="datatypes.dtd" />
+                        <exclude name="changed_*.png" />
+                      </fileset>
+                      <fileset dir="${api.dir}/src/main/java">
+                        <include name="**/*" />
+                        <exclude name="**/*.png" />
+                      </fileset>
+                      <fileset dir="${api.dir}/${build.dir}/generate/">
+                        <include name="**/*" />
+                        <exclude name="**/last-generation" />
+                        <exclude name="facesdoc/**/*.*" />
+                        <exclude name="**/*.png" />
                       </fileset>
-                      <fileset dir="${api.dir}/src/main/java" includes="**/*" />
-                      <fileset dir="${api.dir}/build/generate/" 
-                               includes="**/*" excludes="last-generation" />
                     </copy>
-                    <unjar src="${api.dir}/build/lib/jsf-api.jar"
+                    <unjar src="${javax.faces-api.jar}"
                            overwrite="yes"
                            dest="${mvn.api.dir}/target/classes"/>
                     <jsf.mvn pomFile="${mvn.api.dir}/jsf-api-pom.xml"
                              mvnSpecVersion="@{version}"
                              dir="${mvn.api.dir}"
-                             goals="@{goal}"/>
-                    <delete dir="${mvn.api.dir}"/>
+                             goals="xml:transform" />
+                    <obtain.javadoc.jar 
+                            artifactId="${api-artifact-id}"
+                            version="@{version}"
+                            target.parent.dir="${mvn.api.dir}" />
+                    <jsf.mvn pomFile="${mvn.api.dir}/jsf-api-pom.xml"
+                             mvnSpecVersion="@{version}"
+                             dir="${mvn.api.dir}"
+                             goals="@{goal}" />
+                    <if>
+                      <isset property="mvn.jar.echo" />
+                      <then>
+                        <output.jar.contents
+                            locally.deployed.jar="${maven.repo.local}/javax/faces/javax.faces-api/@{version}/javax.faces-api-@{version}.jar" />
+                        <output.jar.contents
+                            locally.deployed.jar="${maven.repo.local}/javax/faces/javax.faces-api/@{version}/javax.faces-api-@{version}-javadoc.jar" />
+                        <output.jar.contents
+                            locally.deployed.jar="${maven.repo.local}/javax/faces/javax.faces-api/@{version}/javax.faces-api-@{version}-sources.jar" />
+                      </then>
+                    </if>
+
                 </then>
                 <else>
+                     <delete failonerror="false" dir="${mvn.impl.dir}"/>
                      <create.pom
                           template.file="${current.dir}/template/jsf-impl-pom-template.xml"
                           output.file="${mvn.impl.dir}/jsf-impl-pom.xml"
                           version="@{version}"/>
                     <mkdir dir="${mvn.impl.dir}/target/classes"/>
-                    <mkdir dir="${mvn.api.dir}/src/main/java"/>
+                    <mkdir dir="${mvn.impl.dir}/src/main/java"/>
                     <copy overwrite="true" 
                           todir="${mvn.impl.dir}/src/main/java">
-                      <fileset dir="${impl.dir}/src" includes="**/*" />
-                      <fileset dir="${impl.dir}/build/generate/" 
-                               includes="**/*" excludes="last-generation,conf/**,**/*.xsd" />
+                      <fileset dir="${impl.dir}/src/main/java" includes="**/*" />
+                      <fileset dir="${impl.dir}/${build.dir}/generate/"> 
+                        <include name="**/*" />
+                        <exclude name="last-generation" />
+                        <exclude name="conf/**" />
+                        <exclude name="facesdoc/**" />
+                        <exclude name="**/*.xsd" />
+                      </fileset>
+
+                      <fileset dir="${api.dir}/src/main/java">
+                        <include name="**/*" />
+                        <exclude name="last-generation" />
+                        <exclude name="conf/**" />
+                        <exclude name="facesdoc/**" />
+                        <exclude name="**/*.xsd" />
+                      </fileset>
+                      <fileset dir="${api.dir}/build/generate/">
+                        <include name="**/*" />
+                        <exclude name="last-generation" />
+                        <exclude name="conf/**" />
+                        <exclude name="facesdoc/**" />
+                        <exclude name="**/*.xsd" />
+                      </fileset>
+
                     </copy>
-                    <unjar src="${impl.dir}/build/lib/jsf-impl.jar"
+                    <unjar src="${impl.dir}/build/lib/javax.faces.jar"
                            overwrite="yes"
                            dest="${mvn.impl.dir}/target/classes"/>
+                    <property name="skip.javadoc.jar" value="true" />
+                    <obtain.javadoc.jar 
+                            artifactId="${impl-artifact-id}"
+                            version="@{version}"
+                            target.parent.dir="${mvn.impl.dir}" />
                     <jsf.mvn pomFile="${mvn.impl.dir}/jsf-impl-pom.xml"
                              mvnSpecVersion="@{version}"
                              dir="${mvn.impl.dir}"
                              goals="@{goal}"/>
-                    <delete dir="${mvn.impl.dir}"/>
+
+                    <if>
+                      <isset property="mvn.jar.echo" />
+                      <then>
+                        <output.jar.contents
+                            locally.deployed.jar="${maven.repo.local}/org/glassfish/javax.faces/@{version}/javax.faces-@{version}.jar" />
+                        <output.jar.contents
+                            locally.deployed.jar="${maven.repo.local}/org/glassfish/javax.faces/@{version}/javax.faces-@{version}-javadoc.jar" />
+                        <output.jar.contents
+                            locally.deployed.jar="${maven.repo.local}/org/glassfish/javax.faces/@{version}/javax.faces-@{version}-sources.jar" />
+                      </then>
+                    </if>
+
+
                 </else>
             </if>
         </sequential>
     </macrodef>
 
+    <macrodef name="output.jar.contents">
+      <attribute name="locally.deployed.jar" />
+      <sequential>
+        <var name="jar.contents.raw" unset="true" />
+        <var name="jar.contents" unset="true" />
+
+        <pathconvert pathsep="${line.separator}" 
+                     property="jar.contents.raw">
+          <zipfileset src="@{locally.deployed.jar}" />
+        </pathconvert>
+        <!-- Remove the leading fully qualified paths. -->
+<!--        <propertyregex property="jar.contents" 
+                       input="${jar.contents.raw}" override="true"
+                       regexp="@{locally.deployed.jar}:" replace="" 
+                       global="true" />-->
+        <echo>
++++++++++++++++++++++++++++++++ START contents of @{locally.deployed.jar}:
+${jar.contents.raw}
++++++++++++++++++++++++++++++++ END contents of @{locally.deployed.jar}:
+        </echo>
+      </sequential>                    
+    </macrodef>
+
     <macrodef name="jsf.mvn">
         <attribute name="pomFile" default="pom.xml"/>
         <attribute name="mvnSpecVersion" default="${impl.version}"/>
         <attribute name="goals"/>
         <attribute name="dir"/>
         <attribute name="skipTests" default="true"/>
+        <attribute name="mvnargs" default=""/>
         <sequential>
             <if>
                 <equals arg1="${mvn.home}" arg2="$${myenv.M2_HOME}"/>
@@ -219,13 +377,23 @@
                 <!-- If maven.repo.local set, respect it -->
                 <isset property="maven.repo.local"/>
                 <then>
-                    <property name="mvn.repo.local.prop" value="-Dmaven.repo.local=${maven.repo.local}"/>
+                    <property name="mvn.repo.local.prop" value="-D'maven.repo.local=${maven.repo.local}'"/>
                 </then>
                 <else>
                     <property name="mvn.repo.local.prop" value=""/>
                 </else>
             </if>
             <if>
+                <!-- If maven.m2.settings set, respect it -->
+                <isset property="maven.m2.settings"/>
+                <then>
+                    <property name="mvn.m2.settings.prop" value="--settings ${maven.m2.settings}"/>
+                </then>
+                <else>
+                    <property name="mvn.m2.settings.prop" value=""/>
+                </else>
+            </if>
+            <if>
                 <equals arg1="@{skipTests}" arg2="false"/>
                 <then>
                     <property name="testSkipProperty" value=""/>
@@ -235,24 +403,62 @@
                               value="-Dmaven.test.skip=true"/>
                 </else>
             </if>
+            <if>
+                <and>
+                  <isset property="http.proxy.host" />
+                  <length string="${http.proxy.host}" when="greater" length="0" />
+                </and>
+                <then>
+                    <property name="httpProxyProperty" value="-Dhttp.proxyHost=${http.proxy.host} -Dhttp.proxyPort=${http.proxy.port}"/>
+                </then>
+                <else>
+                    <property name="httpProxyProperty" value=""/>
+                </else>
+            </if>
+            <if>
+                <and>
+                  <isset property="gpg.passphrase" />
+                  <length string="${gpg.passphrase}" when="greater" length="0" />
+                </and>
+                <then>
+                    <property name="gpgPassphraseProperty" value="-Prelease-sign-artifacts -Dgpg.passphrase=${gpg.passphrase}"/>
+                </then>
+                <else>
+                    <property name="gpgPassphraseProperty" value=""/>
+                </else>
+            </if>
+            <if>
+                <and>
+                  <isset property="https.proxy.host" />
+                  <length string="${https.proxy.host}" when="greater" length="0" />
+                </and>
+                <then>
+                    <property name="httpsProxyProperty" value="-Dhttps.proxyHost=${https.proxy.host} -Dhttps.proxyPort=${https.proxy.port}"/>
+                </then>
+                <else>
+                    <property name="httpsProxyProperty" value=""/>
+                </else>
+            </if>
+    
             <exec os="SunOS" dir="@{dir}" failonerror="yes"
                   executable="${mvn.cmd}">
-                <arg line="-f @{pomFile} ${testSkipProperty} ${mvn.repo.local.prop} -DmvnSpecVersion=@{mvnSpecVersion} @{goals}"/>
+                <arg line="-f @{pomFile} @{mvnargs} ${mvn.m2.settings.prop} ${testSkipProperty} ${mvn.repo.local.prop} -DmvnSpecVersion=@{mvnSpecVersion} @{goals} -Dspec.snapshot.version=${spec.snapshot.version} -Dproject.build.sourceEncoding=UTF-8 ${gpgPassphraseProperty} ${httpProxyProperty} ${httpsProxyProperty}"/>
             </exec>
             <exec os="Linux" dir="@{dir}" failonerror="yes"
                   executable="${mvn.cmd}">
-                <arg line="-f @{pomFile} ${testSkipProperty} ${mvn.repo.local.prop} -DmvnSpecVersion=@{mvnSpecVersion} @{goals}"/>
+                <arg line="-f @{pomFile} @{mvnargs} ${mvn.m2.settings.prop} ${testSkipProperty} ${mvn.repo.local.prop} -DmvnSpecVersion=@{mvnSpecVersion} @{goals} -Dspec.snapshot.version=${spec.snapshot.version} -Dproject.build.sourceEncoding=UTF-8 ${gpgPassphraseProperty} ${httpProxyProperty} ${httpsProxyProperty}"/>
             </exec>
             <exec osfamily="windows" dir="@{dir}" executable="${mvn.cmd}"
                   failonerror="yes">
-                <arg line="-f @{pomFile} ${testSkipProperty} ${mvn.repo.local.prop} -DmvnSpecVersion=@{mvnSpecVersion} @{goals}"/>
+                <arg line="-f @{pomFile} @{mvnargs} ${mvn.m2.settings.prop} ${testSkipProperty} ${mvn.repo.local.prop} -DmvnSpecVersion=@{mvnSpecVersion} @{goals} -Dspec.snapshot.version=${spec.snapshot.version} -Dproject.build.sourceEncoding=UTF-8 ${gpgPassphraseProperty} ${httpProxyProperty} ${httpsProxyProperty}"/>
             </exec>
             <exec os="Mac OS X" dir="@{dir}" executable="${mvn.cmd}"
                   failonerror="yes">
-                <arg line="-f @{pomFile} ${testSkipProperty} ${mvn.repo.local.prop} -DmvnSpecVersion=@{mvnSpecVersion} @{goals}"/>
+                <arg line="-f @{pomFile} @{mvnargs} ${mvn.m2.settings.prop} ${testSkipProperty} ${mvn.repo.local.prop} -DmvnSpecVersion=@{mvnSpecVersion} @{goals} -Dspec.snapshot.version=${spec.snapshot.version} -Dproject.build.sourceEncoding=UTF-8 ${gpgPassphraseProperty} ${httpProxyProperty} ${httpsProxyProperty}"/>
             </exec>
         </sequential>
     </macrodef>
 
+   
 
 </project>
diff --git a/common/ant/package-list b/common/ant/package-list
new file mode 100644
index 0000000..3e918cd
--- /dev/null
+++ b/common/ant/package-list
@@ -0,0 +1,203 @@
+java.applet
+java.awt
+java.awt.color
+java.awt.datatransfer
+java.awt.dnd
+java.awt.event
+java.awt.font
+java.awt.geom
+java.awt.im
+java.awt.im.spi
+java.awt.image
+java.awt.image.renderable
+java.awt.print
+java.beans
+java.beans.beancontext
+java.io
+java.lang
+java.lang.annotation
+java.lang.instrument
+java.lang.management
+java.lang.ref
+java.lang.reflect
+java.math
+java.net
+java.nio
+java.nio.channels
+java.nio.channels.spi
+java.nio.charset
+java.nio.charset.spi
+java.rmi
+java.rmi.activation
+java.rmi.dgc
+java.rmi.registry
+java.rmi.server
+java.security
+java.security.acl
+java.security.cert
+java.security.interfaces
+java.security.spec
+java.sql
+java.text
+java.text.spi
+java.util
+java.util.concurrent
+java.util.concurrent.atomic
+java.util.concurrent.locks
+java.util.jar
+java.util.logging
+java.util.prefs
+java.util.regex
+java.util.spi
+java.util.zip
+javax.accessibility
+javax.activation
+javax.activity
+javax.annotation
+javax.annotation.processing
+javax.crypto
+javax.crypto.interfaces
+javax.crypto.spec
+javax.imageio
+javax.imageio.event
+javax.imageio.metadata
+javax.imageio.plugins.bmp
+javax.imageio.plugins.jpeg
+javax.imageio.spi
+javax.imageio.stream
+javax.jws
+javax.jws.soap
+javax.lang.model
+javax.lang.model.element
+javax.lang.model.type
+javax.lang.model.util
+javax.management
+javax.management.loading
+javax.management.modelmbean
+javax.management.monitor
+javax.management.openmbean
+javax.management.relation
+javax.management.remote
+javax.management.remote.rmi
+javax.management.timer
+javax.naming
+javax.naming.directory
+javax.naming.event
+javax.naming.ldap
+javax.naming.spi
+javax.net
+javax.net.ssl
+javax.print
+javax.print.attribute
+javax.print.attribute.standard
+javax.print.event
+javax.rmi
+javax.rmi.CORBA
+javax.rmi.ssl
+javax.script
+javax.security.auth
+javax.security.auth.callback
+javax.security.auth.kerberos
+javax.security.auth.login
+javax.security.auth.spi
+javax.security.auth.x500
+javax.security.cert
+javax.security.sasl
+javax.sound.midi
+javax.sound.midi.spi
+javax.sound.sampled
+javax.sound.sampled.spi
+javax.sql
+javax.sql.rowset
+javax.sql.rowset.serial
+javax.sql.rowset.spi
+javax.swing
+javax.swing.border
+javax.swing.colorchooser
+javax.swing.event
+javax.swing.filechooser
+javax.swing.plaf
+javax.swing.plaf.basic
+javax.swing.plaf.metal
+javax.swing.plaf.multi
+javax.swing.plaf.synth
+javax.swing.table
+javax.swing.text
+javax.swing.text.html
+javax.swing.text.html.parser
+javax.swing.text.rtf
+javax.swing.tree
+javax.swing.undo
+javax.tools
+javax.transaction
+javax.transaction.xa
+javax.xml
+javax.xml.bind
+javax.xml.bind.annotation
+javax.xml.bind.annotation.adapters
+javax.xml.bind.attachment
+javax.xml.bind.helpers
+javax.xml.bind.util
+javax.xml.crypto
+javax.xml.crypto.dom
+javax.xml.crypto.dsig
+javax.xml.crypto.dsig.dom
+javax.xml.crypto.dsig.keyinfo
+javax.xml.crypto.dsig.spec
+javax.xml.datatype
+javax.xml.namespace
+javax.xml.parsers
+javax.xml.soap
+javax.xml.stream
+javax.xml.stream.events
+javax.xml.stream.util
+javax.xml.transform
+javax.xml.transform.dom
+javax.xml.transform.sax
+javax.xml.transform.stax
+javax.xml.transform.stream
+javax.xml.validation
+javax.xml.ws
+javax.xml.ws.handler
+javax.xml.ws.handler.soap
+javax.xml.ws.http
+javax.xml.ws.soap
+javax.xml.ws.spi
+javax.xml.ws.wsaddressing
+javax.xml.xpath
+org.ietf.jgss
+org.omg.CORBA
+org.omg.CORBA.DynAnyPackage
+org.omg.CORBA.ORBPackage
+org.omg.CORBA.TypeCodePackage
+org.omg.CORBA.portable
+org.omg.CORBA_2_3
+org.omg.CORBA_2_3.portable
+org.omg.CosNaming
+org.omg.CosNaming.NamingContextExtPackage
+org.omg.CosNaming.NamingContextPackage
+org.omg.Dynamic
+org.omg.DynamicAny
+org.omg.DynamicAny.DynAnyFactoryPackage
+org.omg.DynamicAny.DynAnyPackage
+org.omg.IOP
+org.omg.IOP.CodecFactoryPackage
+org.omg.IOP.CodecPackage
+org.omg.Messaging
+org.omg.PortableInterceptor
+org.omg.PortableInterceptor.ORBInitInfoPackage
+org.omg.PortableServer
+org.omg.PortableServer.CurrentPackage
+org.omg.PortableServer.POAManagerPackage
+org.omg.PortableServer.POAPackage
+org.omg.PortableServer.ServantLocatorPackage
+org.omg.PortableServer.portable
+org.omg.SendingContext
+org.omg.stub.java.rmi
+org.w3c.dom
+org.w3c.dom.bootstrap
+org.w3c.dom.events
+org.w3c.dom.ls
+org.xml.sax
+org.xml.sax.ext
+org.xml.sax.helpers
diff --git a/common/ant/source-build-setup.xml b/common/ant/source-build-setup.xml
index 9836063..a2d8096 100644
--- a/common/ant/source-build-setup.xml
+++ b/common/ant/source-build-setup.xml
@@ -1,41 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
-      
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in complicomance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
-      
+
 <project name="JSF Source Build Setup" basedir="." xmlns:artifact="antlib:org.apache.maven.artifact.ant">
 
     <property file="../../build.properties"/>
@@ -60,7 +65,7 @@
             <pathelement location="${jsf.build.home}/common/lib/sfx4j-1.0.jar"/>
         </classpath>
     </taskdef>
-    <path id="maven-ant-tasks.classpath" path="${jsf.build.home}/common/lib/maven-ant-tasks-2.0.10.jar" />
+    <path id="maven-ant-tasks.classpath" path="${jsf.build.home}/common/lib/maven-ant-tasks-2.1.3.jar" />
       <typedef resource="org/apache/maven/artifact/ant/antlib.xml"
                uri="antlib:org.apache.maven.artifact.ant"
                classpathref="maven-ant-tasks.classpath" />
@@ -84,9 +89,9 @@
     <property name="api.test.results.dir" value="${api.dir}/testresults"/>
 
     <!-- Artifacts of interest -->
-    <property name="jsf-api.jar" value="${api.dir}/build/lib/jsf-api.jar"/>
+    <property name="jsf-api-intermediate.jar" value="${api.dir}/build/lib/jsf-api-intermediate.jar"/>
     <property name="jsf-tools.jar" value="${tools.dir}/build/lib/jsf-tools.jar"/>
-    <property name="jsf-impl.jar" value="${impl.dir}/build/lib/jsf-impl.jar"/>   
+    <property name="javax.faces.jar" value="${impl.dir}/build/lib/javax.faces.jar"/>   
     <property name="jsf.test.jar" value="${jsf.build.home}/lib/jsf-extensions-test-time.jar"/>    
     <property name="installer.jar" value="${jsf.build.home}/common/lib/installer-builder.jar"/>
     <property name="javanettasks.jar" value="${jsf.build.home}/common/lib/javanettasks-1.0.5.jar"/>
@@ -149,7 +154,6 @@
     <artifact:remoteRepository id="jboss.repo" url="http://repository.jboss.com/maven2/"/>
     <artifact:remoteRepository id="j.n.repo" url="http://download.java.net/maven/2/"/>
     <artifact:remoteRepository id="gf.repo" url="http://download.java.net/maven/glassfish/"/>
-    <artifact:remoteRepository id="gf.nexus.repo" url="http://maven.glassfish.org/content/groups/glassfish/"/>
     <artifact:remoteRepository id="codehaus.repo" url="http://repository.codehaus.org/"/>
     <artifact:remoteRepository id="ibiblio.repo" url="http://mirrors.ibiblio.org/pub/mirrors/maven2/"/>
 
@@ -160,7 +164,6 @@
         <localRepository refid="local.repository"/>
         <remoteRepository refid="j.n.repo"/>
         <remoteRepository refid="gf.repo"/>
-        <remoteRepository refid="gf.nexus.repo"/>
     </artifact:dependencies>
     
     <artifact:dependencies filesetId="commons.filepath" pathId="commons.path">
@@ -169,7 +172,6 @@
         <dependency groupId="commons-beanutils" artifactId="commons-beanutils" version="1.6.1"/>
         <dependency groupId="commons-logging" artifactId="commons-logging" version="1.0.4"/>
         <localRepository refid="local.repository"/>
-        <remoteRepository refid="gf.nexus.repo"/>
     </artifact:dependencies>
 
     <path id="compile.classpath">
@@ -230,7 +232,7 @@
                     <attribute name="Implementation-Version"
                                value="${impl.version}"/>
                     <attribute name="Implementation-Vendor"
-                               value="Sun Microsystems, Inc."/>
+                               value="Oracle America, Inc."/>
                     <attribute name="Implementation-Vendor-Id"
                                value="com.sun"/>
                     <attribute name="Extension-Name"
@@ -284,7 +286,7 @@
                   fork="true">
                 <classpath>
                     <path refid="compile.classpath"/>
-                    <pathelement location="${jsf-api.jar}"/>
+                    <pathelement location="${jsf-api-intermediate.jar}"/>
                     <pathelement location="${tools.dir}/build/classes"/>
                 </classpath>
                 <sysproperty key="java.endorsed.dirs" value="${endorsed.dirs}"/>
diff --git a/common/ant/template/container.xml b/common/ant/template/container.xml
index 82fc7ff..7a46d0b 100644
--- a/common/ant/template/container.xml
+++ b/common/ant/template/container.xml
@@ -1,82 +1,70 @@
 <?xml version="1.0" encoding="UTF-8"?>
-      
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
--->
-<project name="Test Classpath" basedir=".">
- 
-    <!--
-        This definition should include all
-        the compile dependencies required
-        by Sun's Javaserver Faces implementation.
-                      
-        Servlet (version 2.5)
-        JSP (version 2.1)
-        JSTL (version 1.2)
-    -->
-    <path id="compile.classpath"/>        
-    
 
-    <!-- 
-       JARs that may be packaged in WEB-INF/lib
-       in order for the implementation to run 
-       properly if they aren't availabe in the
-       container's classloader.  
-   
-       This is a comma separated list of fully
-       qualified JARs. 
-    -->
-    <property name="webapp.jars" value=""/>
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
 
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
-    <!-- Required Targets/Macrodefs -->
+-->
+
+<project name="replace.with.container.name" basedir=".">
     
-    <!-- 
-       Deploys the specified artifact to the
-       target container.
-    -->      
+
     <macrodef name="deploy.artifact">
         <attribute name="artifact"
                    description="The WAR to deploy"/>
         <attribute name="appName"
                    description="The name of the application"/>
         <sequential>
-            <echo message="Provide 'deploy.artifact' implementation"/>
+          <fail message="this macro is unimplemented for this container" />
+        </sequential>
+    </macrodef>
+
+    <macrodef name="deploydir.artifact">
+        <attribute name="explodedWarDir"
+                   description="The exploded war directory to deploy"/>
+        <attribute name="appName"
+                   description="The name of the application"/>
+        <sequential>
+          <fail message="this macro is unimplemented for this container" />
         </sequential>
     </macrodef>
 
+
     <!-- 
         Undeploy the specified WAR from the 
         target container.
@@ -87,54 +75,10 @@
         <attribute name="appName"
                    description="The name of the application"/>
         <sequential>
-            <echo message="Provide 'undeploy.artifact' implementation"/>
+          <fail message="this macro is unimplemented for this container" />
         </sequential>
     </macrodef>
-    
-    <!-- 
-        Perform any configuration of the target container in order
-        to run the unit tests.
-        
-        Ensure the following at a minimum:
-           java.util.PropertyPermission is read,write
-           java.lang.ReflectPermission is "*"                   
-    -->
-    <target name="config.container"
-            description="Perform any container specific configuration necessary for the unit tests to run">
-        <sequential>
-            <echo message="Provide 'config.container' implementation"/>
-        </sequential>
-    </target>
 
-    <!--
-         Display/Validate any property information necessary to build 
-         successfully.
-     -->
-    <target name="props">
-        <echo message="Provide 'props' implementation"/>            
-    </target>
-    
-    <!--
-        OPTIONAL
-          Update the jsf-impl.jar's manfest file
-          with the versions of the compile time
-          dependencies.
-    -->
-    <target name="update.impl.manifest">
-        <echo message="Provide 'update.impl.manifest' implementation"/>
-    </target>
-
-    <!--
-        OPTIONAL
-          Perform whatever steps are necessary to integrate
-          Sun's JavaServer Faces implementation into the
-          target container.
-    -->
-    <target name="container.deploy" 
-            description="Deploy the JSF Implementation artifacts to the target container.">
-        <echo message="Provide 'container.deploy' implementation"/>    
-    </target>
-    
     <!-- 
         OPTIONAL
           Start the container
@@ -142,7 +86,7 @@
     <macrodef name="container.start"
             description="Start the target container.">
         <sequential>
-            <echo message="Provide 'container.start' implementation"/>
+          <fail message="this macro is unimplemented for this container" />
         </sequential>
     </macrodef>
 
@@ -153,7 +97,7 @@
     <macrodef name="container.debug"
             description="Start the target container in debug mode.">
         <sequential>
-            <echo message="Provide 'container.debug' implementation"/>
+          <fail message="this macro is unimplemented for this container" />
         </sequential>
     </macrodef>
     <!--
@@ -163,8 +107,75 @@
     <macrodef name="container.stop"
               description="Stop the target container.">
         <sequential>
-            <echo message="Provide 'container.stop' implementation"/>
+          <fail message="this macro is unimplemented for this container" />
         </sequential>
     </macrodef>
 
-</project>
\ No newline at end of file
+    <macrodef name="create.virtual.servers">
+        <!-- depends on property instance.numbers -->
+        <sequential>
+          <fail message="this macro is unimplemented for this container" />
+        </sequential>
+    </macrodef>
+
+    <macrodef name="delete.virtual.servers">
+        <!-- depends on property instance.numbers -->
+        <sequential>
+          <fail message="this macro is unimplemented for this container" />
+        </sequential>
+    </macrodef>
+
+    <target name="define.scenario.aware.port">
+      <property name="scenario.aware.port" value="${container.port}" />
+      <fail message="this macro is unimplemented for this container" />
+    </target>
+
+    <target name="define.virtual-server.aware.port">
+      <property name="scenario.aware.port" 
+                value="${glassfish.virtual.server.port}" />
+      <echo message="scenario.aware.port = ${scenario.aware.port}" />
+      <fail message="this macro is unimplemented for this container" />
+    </target>
+
+    <target name="container.init.osgi"
+            description="Configure GlassFish 3.1 for OSGi WAB deployment">
+      <fail message="this macro is unimplemented for this container" />
+    </target>
+
+
+    <target name="container.start"
+            description="Start the GlassFish container">
+        <container.start />
+    </target>
+
+    <target name="container.debug"
+            description="Start the GlassFish container">
+        <container.debug />
+    </target>
+
+    <target name="container.stop"
+            description="Stop the GlassFish container">
+        <container.stop />
+
+    </target>
+
+    <!--
+         Display/Validate any property information necessary to build 
+         successfully.
+     -->
+    <target name="props">
+      <fail message="this macro is unimplemented for this container" />
+    </target>
+    
+    <target name="container.deploy" 
+            description="Deploy the JSF Implementation artifacts to the target container.">
+      <fail message="this macro is unimplemented for this container" />
+    </target>
+
+
+    <target name="container.deploy.test.dependencies" 
+            description="Deploy the extra test dependencies to the target container.">
+      <fail message="this macro is unimplemented for this container" />
+    </target>
+
+</project>
diff --git a/common/ant/template/jsf-api-pom-template.xml b/common/ant/template/jsf-api-pom-template.xml
index 52413cc..e6a40bf 100644
--- a/common/ant/template/jsf-api-pom-template.xml
+++ b/common/ant/template/jsf-api-pom-template.xml
@@ -1,154 +1,116 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
 
- Contributor(s):
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
 -->
 
 <project>
     <modelVersion>4.0.0</modelVersion>
-    <groupId>@groupId@</groupId>
-    <artifactId>jsf-api</artifactId>
+    <groupId>javax.faces</groupId>
+    <artifactId>javax.faces-api</artifactId>
     <version>@version@</version>
     <packaging>jar</packaging>
     <name>
-        Sun's implementation of the JSF 2.0 specification API.
+        Oracle's implementation of the JSF 2.2 specification API.
     </name>
     <description>
-        This is the master POM file for Sun's Implementation of the JSF 2.0 Specification.
+        This is the master POM file for Oracle's Implementation of the JSF 2.2 Specification.
     </description>
-    <url>http://java.sun.com/javaee/javaserverfaces/</url>
+    <url>http://jsf-spec.java.net/</url>
     <licenses>
         <license>
             <name>
                 COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) plus GPL
             </name>
-            <url>https://glassfish.dev.java.net/public/CDDL+GPL.html</url>
+            <url>http://glassfish.java.net/nonav/public/CDDL+GPL.html</url>
             <distribution>repo</distribution>
         </license>
     </licenses>
     <scm>
-        <url>https://mojarra.dev.java.net/svn/mojarra</url>
-        <connection>scm:svn:https://mojarra.dev.java.net/svn/mojarra</connection>
+        <url>http://java.net/projects/mojarra/sources</url>
+        <connection>scm:svn:https://svn.java.net/svn/mojarra~svn/trunk</connection>
     </scm>
     <developers>
         <developer>
             <id>edburns</id>
             <name>Ed Burns</name>
-            <email>ed.burns at sun.com</email>
-            <organization>Sun Microsystems, Inc.</organization>
-            <roles>
-                <role>project-owner</role>
-            </roles>
-            <timezone>-6</timezone>
-        </developer>
-        <developer>
-            <id>rlubke</id>
-            <name>Ryan Lubke</name>
-            <email>Ryan.Lubke at sun.com</email>
-            <organization>Sun Microsystems, Inc.</organization>
+            <email>edward.burns at oracle.com</email>
+            <organization>Oracle America, Inc.</organization>
             <roles>
                 <role>project-owner</role>
             </roles>
-            <timezone>-9</timezone>
+            <timezone>-5</timezone>
         </developer>
         <developer>
             <id>rogerk</id>
             <name>Roger Kitain</name>
-            <email>Roger.Kitain at sun.com</email>
-            <organization>Sun Microsystems, Inc.</organization>
+            <email>roger.kitain at oracle.com</email>
+            <organization>Oracle America, Inc.</organization>
             <roles>
                 <role>project-owner</role>
             </roles>
-            <timezone>-6</timezone>
+            <timezone>-5</timezone>
         </developer>
         <developer>
-            <id>driscoll</id>
-            <name>Jim Driscoll</name>
-            <email>jim.dirscoll at sun.com</email>
-            <organization>Sun Microsystems, Inc.</organization>
+            <id>mriem</id>
+            <name>Manfred Riem</name>
+            <email>manfred.riem at oracle.com</email>
+            <organization>Oracle America, Inc.</organization>
             <roles>
                 <role>project-owner</role>
             </roles>
-            <timezone>-9</timezone>
+            <timezone>-6</timezone>
         </developer>
     </developers>
-
-    <repositories>
-        <repository>
-            <snapshots/>
-            <id>ibiblio</id>
-            <url>http://www.ibiblio.org/maven2/</url>
-        </repository>
-        <repository>
-            <id>maven2-repository.dev.java.net</id>
-            <name>Java.net Repository for Maven</name>
-            <url>http://download.java.net/maven/2/</url>
-            <layout>default</layout>
-        </repository>
-        <repository>
-            <snapshots/>
-            <id>codehaus</id>
-            <name>codehaus</name>
-            <url>http://repository.codehaus.org</url>
-        </repository>
-        <repository>
-            <snapshots/>
-            <id>java.net</id>
-            <name>Java.net Maven 1.x Repository for external projects</name>
-            <url>http://download.java.net/maven/1/</url>
-            <layout>legacy</layout>
-        </repository>
-        <repository>
-            <snapshots/>
-            <id>java.net.shared</id>
-            <name>Java.net Maven 1.x Repository for glassfish dependencies
-            </name>
-            <url>http://download.java.net/javaee5/external/shared</url>
-            <layout>legacy</layout>
-        </repository>
-
-    </repositories>
-
     <distributionManagement>
-        <repository>
-            <uniqueVersion>false</uniqueVersion>
-            <id>java.net-mavent2-repository</id>
-            <url>java-net:/maven2-repository/trunk/repository/</url>
-        </repository>
+      <snapshotRepository>
+        <id>jvnet-nexus-snapshots</id>
+        <name>Java.net Nexus Snapshots Repository</name>
+        <url>https://maven.java.net/content/repositories/snapshots/</url>
+      </snapshotRepository>
+      <repository>
+        <id>jvnet-nexus-staging</id>
+        <name>Java.net Nexus Staging Repository</name>
+        <url>https://maven.java.net/service/local/staging/deploy/maven2/</url>
+      </repository>
     </distributionManagement>
-
     <build>
         <defaultGoal>install</defaultGoal>
         <plugins>
@@ -165,6 +127,13 @@
             </plugin>
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-deploy-plugin</artifactId>
+                <configuration>
+                  <updateReleaseInfo>true</updateReleaseInfo>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-source-plugin</artifactId>
                 <version>2.1</version>
                 <executions>
@@ -178,6 +147,29 @@
                 </executions>
             </plugin>
             <plugin>
+              <groupId>org.codehaus.mojo</groupId>
+              <artifactId>build-helper-maven-plugin</artifactId>
+              <version>1.7</version>
+              <executions>
+                <execution>
+                  <id>attach-artifacts</id>
+                  <phase>package</phase>
+                  <goals>
+                    <goal>attach-artifact</goal>
+                  </goals>
+                  <configuration>
+                    <artifacts>
+                      <artifact>
+                        <file>target/javax.faces-api- at version@-javadoc.jar</file>
+                        <type>jar</type>
+                        <classifier>javadoc</classifier>
+                      </artifact>
+                    </artifacts>
+                  </configuration>
+                </execution>
+              </executions>
+            </plugin>
+            <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-jar-plugin</artifactId>
                 <configuration>
@@ -186,34 +178,65 @@
                     </archive>
                 </configuration>
             </plugin>
+            <plugin>
+              <groupId>org.codehaus.mojo</groupId>
+              <artifactId>xml-maven-plugin</artifactId>
+              <version>1.0</version>
+              <executions>
+                <execution>
+                  <goals>
+                    <goal>transform</goal>
+                  </goals>
+                </execution>
+              </executions>
+              <configuration>
+                <transformationSets>
+                  <transformationSet>
+                    <dir>src/main/java</dir>
+                    <includes>
+                      <include>web-facesconfig_${spec_version}*</include>
+                      <include>web-facelettaglibrary_${spec_version}*</include>
+                      <include>web-partialresponse_${spec_version}*</include>
+                    </includes>
+                    <stylesheet>${dependency.base.dir}/xs3p-${xs3p.version}/xs3p.xsl</stylesheet>
+                    <parameters>
+                      <parameter>
+                        <name>externalCSSURL</name>
+                        <value>jsf-api.css</value>
+                      </parameter>
+                      <parameter>
+                        <name>title</name>
+                        <value>JSF Schema</value>
+                      </parameter>
+                    </parameters>
+                    <fileMappers>
+                      <fileMapper implementation="org.codehaus.plexus.components.io.filemappers.FileExtensionMapper">
+                        <targetExtension>.html</targetExtension>
+                      </fileMapper>
+                    </fileMappers>
+                  </transformationSet>
+                </transformationSets>
+              </configuration>
+            </plugin>
         </plugins>
-
-        <extensions>
-            <extension>
-                <groupId>org.jvnet.wagon-svn</groupId>
-                <artifactId>wagon-svn</artifactId>
-                <version>1.8</version>
-            </extension>
-        </extensions>
-
     </build>
-
     <issueManagement>
-        <system>issueZilla</system>
-        <url>
-            https://javaserverfaces.dev.java.net/servlets/ProjectIssues
-        </url>
+        <system>JIRA</system>
+        <url>http://java.net/jira/browse/JAVASERVERFACES_SPEC_PUBLIC</url>
     </issueManagement>
     <mailingLists>
         <mailingList>
-            <name>JSF 2.0 Specification Comments</name>
-            <post>jsr-314-comments at jcp.org</post>
+            <name>JSF 2.2 Specification Comments</name>
+            <post>users at javaserverfaces-spec-public.java.net</post>
+            <archive>
+                http://jsf-spec.java.net/lists/
+            </archive>
         </mailingList>
         <mailingList>
             <name>Mojarra Implementation Dev List</name>
-            <post>dev at javaserverfaces.dev.java.net</post>
+            <post>dev at javaserverfaces.java.net</post>
             <archive>
-                https://javaserverfaces.dev.java.net/servlets/SummarizeList?listName=dev
+                http://java.net/projects/javaserverfaces/lists
             </archive>
         </mailingList>
     </mailingLists>
@@ -253,33 +276,119 @@
         </contributor>
     </contributors>
     <organization>
-        <name>Sun Microsystems, Inc</name>
-        <url>http://www.sun.com/</url>
+        <name>Oracle America, Inc</name>
+        <url>http://www.oracle.com/</url>
     </organization>
     <dependencies>
         <dependency>
             <groupId>javax.servlet</groupId>
-            <artifactId>servlet-api</artifactId>
-            <version>2.5</version>
+            <artifactId>javax.servlet-api</artifactId>
+            <version>3.0.1</version>
             <scope>provided</scope>
         </dependency>
         <dependency>
             <groupId>javax.servlet.jsp</groupId>
-            <artifactId>jsp-api</artifactId>
-            <version>2.1</version>
+            <artifactId>javax.servlet.jsp-api</artifactId>
+            <version>2.2.1</version>
             <scope>provided</scope>
         </dependency>
         <dependency>
             <groupId>javax.el</groupId>
-            <artifactId>el-api</artifactId>
-            <version>1.0</version>
+            <artifactId>javax.el-api</artifactId>
+            <version>2.2.1</version>
             <scope>provided</scope>
         </dependency>
         <dependency>
-            <groupId>jstl</groupId>
-            <artifactId>jstl</artifactId>
+            <groupId>javax.servlet.jsp.jstl</groupId>
+            <artifactId>jstl-api</artifactId>
             <version>1.2</version>
             <scope>provided</scope>
         </dependency>
     </dependencies>
+    <profiles>
+      <profile>
+        <id>release-sign-artifacts</id>
+        <build>
+          <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                    <source>1.5</source>
+                    <target>1.5</target>
+                    <excludes>
+                        <exclude>**/*.*</exclude>
+                    </excludes>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-source-plugin</artifactId>
+                <version>2.1</version>
+                <executions>
+                    <execution>
+                        <id>attach-sources</id>
+                        <phase>verify</phase>
+                        <goals>
+                            <goal>jar-no-fork</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+              <groupId>org.codehaus.mojo</groupId>
+              <artifactId>build-helper-maven-plugin</artifactId>
+              <version>1.7</version>
+              <executions>
+                <execution>
+                  <id>attach-artifacts</id>
+                  <phase>package</phase>
+                  <goals>
+                    <goal>attach-artifact</goal>
+                  </goals>
+                  <configuration>
+                    <artifacts>
+                      <artifact>
+                        <file>target/javax.faces-api- at version@-javadoc.jar</file>
+                        <type>jar</type>
+                        <classifier>javadoc</classifier>
+                      </artifact>
+                    </artifacts>
+                  </configuration>
+                </execution>
+              </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-jar-plugin</artifactId>
+                <configuration>
+                    <archive>
+                        <manifestFile>target/classes/META-INF/MANIFEST.MF</manifestFile>
+                    </archive>
+                </configuration>
+            </plugin>            <plugin>
+              <groupId>org.apache.maven.plugins</groupId>
+              <artifactId>maven-gpg-plugin</artifactId>
+              <version>1.3</version>
+              <executions>
+                <execution>
+                  <id>sign-artifacts</id>
+                  <phase>verify</phase>
+                  <goals>
+                    <goal>sign</goal>
+                  </goals>
+                </execution>
+              </executions>
+            </plugin>
+          </plugins>
+        </build>
+      </profile>
+    </profiles>
+
+    <properties>
+      <dependency.base.dir>@dependency.base.dir@</dependency.base.dir>
+      <xs3p.version>@xs3p.version@</xs3p.version>
+      <spec_version>@spec_version@</spec_version>
+    </properties>
+
 </project>
diff --git a/common/ant/template/jsf-impl-pom-template.xml b/common/ant/template/jsf-impl-pom-template.xml
index 728c4d4..ac4b145 100644
--- a/common/ant/template/jsf-impl-pom-template.xml
+++ b/common/ant/template/jsf-impl-pom-template.xml
@@ -1,52 +1,57 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
 
- Contributor(s):
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
 -->
 
 <project>
     <modelVersion>4.0.0</modelVersion>
-    <groupId>com.sun.faces</groupId>
-    <artifactId>jsf-impl</artifactId>
+    <groupId>org.glassfish</groupId>
+    <artifactId>javax.faces</artifactId>
     <version>@version@</version>
     <packaging>jar</packaging>
     <name>
-        Sun's implementation of the JSF 2.0 specification.
+        Oracle's implementation of the JSF 2.2 specification.
     </name>
     <description>
-        This is the master POM file for Sun's Implementation of the JSF 2.0 Specification.
+        This is the master POM file for Oracle's Implementation of the JSF 2.2 Specification.
     </description>
     <url>http://java.sun.com/javaee/javaserverfaces/</url>
     <licenses>
@@ -54,20 +59,20 @@
             <name>
                 COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) plus GPL
             </name>
-            <url>https://glassfish.dev.java.net/public/CDDL+GPL.html</url>
+            <url>http://glassfish.java.net/nonav/public/CDDL+GPL.html</url>
             <distribution>repo</distribution>
         </license>
     </licenses>
     <scm>
-        <url>https://mojarra.dev.java.net/svn/mojarra</url>
-        <connection>scm:svn:https://mojarra.dev.java.net/svn/mojarra</connection>
+        <url>http://java.net/projects/mojarra/sources</url>
+        <connection>scm:svn:https://svn.java.net/svn/mojarra~svn/trunk</connection>
     </scm>
     <developers>
         <developer>
             <id>edburns</id>
             <name>Ed Burns</name>
             <email>ed.burns at sun.com</email>
-            <organization>Sun Microsystems, Inc.</organization>
+            <organization>Oracle America, Inc.</organization>
             <roles>
                 <role>project-owner</role>
             </roles>
@@ -77,7 +82,7 @@
             <id>rlubke</id>
             <name>Ryan Lubke</name>
             <email>Ryan.Lubke at sun.com</email>
-            <organization>Sun Microsystems, Inc.</organization>
+            <organization>Oracle America, Inc.</organization>
             <roles>
                 <role>project-owner</role>
             </roles>
@@ -87,7 +92,7 @@
             <id>rogerk</id>
             <name>Roger Kitain</name>
             <email>Roger.Kitain at sun.com</email>
-            <organization>Sun Microsystems, Inc.</organization>
+            <organization>Oracle America, Inc.</organization>
             <roles>
                 <role>project-owner</role>
             </roles>
@@ -97,7 +102,7 @@
             <id>driscoll</id>
             <name>Jim Driscoll</name>
             <email>jim.dirscoll at sun.com</email>
-            <organization>Sun Microsystems, Inc.</organization>
+            <organization>Oracle America, Inc.</organization>
             <roles>
                 <role>project-owner</role>
             </roles>
@@ -105,11 +110,16 @@
         </developer>
     </developers>
     <distributionManagement>
-        <repository>
-            <uniqueVersion>false</uniqueVersion>
-            <id>java.net-maven2-repository</id>
-            <url>java-net:/maven2-repository/trunk/repository/</url>
-        </repository>
+      <snapshotRepository>
+        <id>jvnet-nexus-snapshots</id>
+        <name>Java.net Nexus Snapshots Repository</name>
+        <url>https://maven.java.net/content/repositories/snapshots/</url>
+      </snapshotRepository>
+      <repository>
+        <id>jvnet-nexus-staging</id>
+        <name>Java.net Nexus Staging Repository</name>
+        <url>https://maven.java.net/service/local/staging/deploy/maven2/</url>
+      </repository>
     </distributionManagement>
     <build>
         <defaultGoal>install</defaultGoal>
@@ -127,6 +137,13 @@
             </plugin>
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-deploy-plugin</artifactId>
+                <configuration>
+                  <updateReleaseInfo>true</updateReleaseInfo>
+               </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-source-plugin</artifactId>
                 <version>2.1</version>
                 <executions>
@@ -149,25 +166,38 @@
                     </archive>
                 </configuration>
             </plugin>
+            <plugin>
+              <groupId>org.codehaus.mojo</groupId>
+              <artifactId>build-helper-maven-plugin</artifactId>
+              <version>1.7</version>
+              <executions>
+                <execution>
+                  <id>attach-artifacts</id>
+                  <phase>package</phase>
+                  <goals>
+                    <goal>attach-artifact</goal>
+                  </goals>
+                  <configuration>
+                    <artifacts>
+                      <artifact>
+                        <file>target/javax.faces- at version@-javadoc.jar</file>
+                        <type>jar</type>
+                        <classifier>javadoc</classifier>
+                      </artifact>
+                    </artifacts>
+                  </configuration>
+                </execution>
+              </executions>
+            </plugin>
         </plugins>
-        <extensions>
-            <extension>
-                <groupId>org.jvnet.wagon-svn</groupId>
-                <artifactId>wagon-svn</artifactId>
-                <version>1.8</version>
-            </extension>
-        </extensions>
-
     </build>
     <issueManagement>
-        <system>issueZilla</system>
-        <url>
-            https://javaserverfaces.dev.java.net/servlets/ProjectIssues
-        </url>
+        <system>JIRA</system>
+        <url>https://java.net/jira/browse/JAVASERVERFACES</url>
     </issueManagement>
     <mailingLists>
         <mailingList>
-            <name>Sun's JavaServer Faces Implementation Dev List</name>
+            <name>Oracle's JavaServer Faces Implementation Dev List</name>
             <post>dev at javaserverfaces.dev.java.net</post>
             <archive>
                 https://javaserverfaces.dev.java.net/servlets/SummarizeList?listName=dev
@@ -210,33 +240,56 @@
         </contributor>
     </contributors>
     <organization>
-        <name>Sun Microsystems, Inc</name>
-        <url>http://www.sun.com/</url>
+        <name>Oracle America, Inc</name>
+        <url>http://www.oracle.com/</url>
     </organization>
     <dependencies>
         <dependency>
             <groupId>javax.servlet</groupId>
-            <artifactId>servlet-api</artifactId>
-            <version>2.5</version>
+            <artifactId>javax.servlet-api</artifactId>
+            <version>3.0.1</version>
             <scope>provided</scope>
         </dependency>
         <dependency>
             <groupId>javax.servlet.jsp</groupId>
-            <artifactId>jsp-api</artifactId>
-            <version>2.1</version>
+            <artifactId>javax.servlet.jsp-api</artifactId>
+            <version>2.2.1</version>
             <scope>provided</scope>
         </dependency>
         <dependency>
             <groupId>javax.el</groupId>
-            <artifactId>el-api</artifactId>
-            <version>1.0</version>
+            <artifactId>javax.el-api</artifactId>
+            <version>2.2.1</version>
             <scope>provided</scope>
         </dependency>
         <dependency>
-            <groupId>jstl</groupId>
-            <artifactId>jstl</artifactId>
+            <groupId>javax.servlet.jsp.jstl</groupId>
+            <artifactId>jstl-api</artifactId>
             <version>1.2</version>
             <scope>provided</scope>
         </dependency>
     </dependencies>
+    <profiles>
+      <profile>
+        <id>release-sign-artifacts</id>
+        <build>
+          <plugins>
+            <plugin>
+              <groupId>org.apache.maven.plugins</groupId>
+              <artifactId>maven-gpg-plugin</artifactId>
+              <version>1.3</version>
+              <executions>
+                <execution>
+                  <id>sign-artifacts</id>
+                  <phase>verify</phase>
+                  <goals>
+                    <goal>sign</goal>
+                  </goals>
+                </execution>
+              </executions>
+            </plugin>
+          </plugins>
+        </build>
+      </profile>
+    </profiles>
 </project>
diff --git a/common/ant/template/jsf-pre-maven-rename-api-pom-template.xml b/common/ant/template/jsf-pre-maven-rename-api-pom-template.xml
new file mode 100644
index 0000000..f36eb01
--- /dev/null
+++ b/common/ant/template/jsf-pre-maven-rename-api-pom-template.xml
@@ -0,0 +1,335 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project>
+    <modelVersion>4.0.0</modelVersion>
+    <groupId>@groupId@</groupId>
+    <artifactId>jsf-api</artifactId>
+    <version>@version@</version>
+    <packaging>jar</packaging>
+    <name>
+        Oracle's implementation of the JSF 2.2 specification API.
+    </name>
+    <description>
+        This is the master POM file for Oracle's Implementation of the JSF 2.2 Specification.
+    </description>
+    <url>http://java.sun.com/javaee/javaserverfaces/</url>
+    <licenses>
+        <license>
+            <name>
+                COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) plus GPL
+            </name>
+            <url>http://glassfish.java.net/nonav/public/CDDL+GPL.html</url>
+            <distribution>repo</distribution>
+        </license>
+    </licenses>
+    <scm>
+        <url>http://java.net/projects/mojarra/sources</url>
+        <connection>scm:svn:https://svn.java.net/svn/mojarra~svn/trunk</connection>
+    </scm>
+    <developers>
+        <developer>
+            <id>edburns</id>
+            <name>Ed Burns</name>
+            <email>edward.burns at oracle.com</email>
+            <organization>Oracle America, Inc.</organization>
+            <roles>
+                <role>project-owner</role>
+            </roles>
+            <timezone>-6</timezone>
+        </developer>
+        <developer>
+            <id>rogerk</id>
+            <name>Roger Kitain</name>
+            <email>roger.kitain at oracle.com</email>
+            <organization>Oracle America, Inc.</organization>
+            <roles>
+                <role>project-owner</role>
+            </roles>
+            <timezone>-6</timezone>
+        </developer>
+    </developers>
+    <distributionManagement>
+      <snapshotRepository>
+        <id>jvnet-nexus-snapshots</id>
+        <name>Java.net Nexus Snapshots Repository</name>
+        <url>https://maven.java.net/content/repositories/snapshots/</url>
+      </snapshotRepository>
+      <repository>
+        <id>jvnet-nexus-staging</id>
+        <name>Java.net Nexus Staging Repository</name>
+        <url>https://maven.java.net/service/local/staging/deploy/maven2/</url>
+      </repository>
+    </distributionManagement>
+    <build>
+        <defaultGoal>install</defaultGoal>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                    <source>1.5</source>
+                    <target>1.5</target>
+                    <excludes>
+                        <exclude>**/*.*</exclude>
+                    </excludes>
+                </configuration>
+            </plugin>
+            <plugin>
+                 <groupId>org.apache.maven.plugins</groupId>
+                 <artifactId>maven-deploy-plugin</artifactId>
+                 <configuration>
+                   <updateReleaseInfo>true</updateReleaseInfo>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-source-plugin</artifactId>
+                <version>2.1</version>
+                <executions>
+                    <execution>
+                        <id>attach-sources</id>
+                        <phase>verify</phase>
+                        <goals>
+                            <goal>jar-no-fork</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+              <groupId>org.codehaus.mojo</groupId>
+              <artifactId>build-helper-maven-plugin</artifactId>
+              <version>1.7</version>
+              <executions>
+                <execution>
+                  <id>attach-artifacts</id>
+                  <phase>package</phase>
+                  <goals>
+                    <goal>attach-artifact</goal>
+                  </goals>
+                  <configuration>
+                    <artifacts>
+                      <artifact>
+                        <file>target/jsf-api- at version@-javadoc.jar</file>
+                        <type>jar</type>
+                        <classifier>javadoc</classifier>
+                      </artifact>
+                    </artifacts>
+                  </configuration>
+                </execution>
+              </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-jar-plugin</artifactId>
+                <configuration>
+                    <archive>
+                        <manifestFile>target/classes/META-INF/MANIFEST.MF</manifestFile>
+                    </archive>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+    <issueManagement>
+        <system>JIRA</system>
+        <url>https://java.net/jira/browse/JAVASERVERFACES</url>
+    </issueManagement>
+    <mailingLists>
+        <mailingList>
+            <name>JSF 2.2 Specification Comments</name>
+            <post>jsr-314-comments at jcp.org</post>
+        </mailingList>
+        <mailingList>
+            <name>Mojarra Implementation Dev List</name>
+            <post>dev at javaserverfaces.dev.java.net</post>
+            <archive>
+                https://javaserverfaces.dev.java.net/servlets/SummarizeList?listName=dev
+            </archive>
+        </mailingList>
+    </mailingLists>
+    <contributors>
+        <contributor>
+            <name>Craig McClanahan</name>
+        </contributor>
+        <contributor>
+            <name>Deepak Gothe</name>
+        </contributor>
+        <contributor>
+            <name>Gregory Murray</name>
+        </contributor>
+        <contributor>
+            <name>Justyna Horwat</name>
+        </contributor>
+        <contributor>
+            <name>Jayashri Visvanathan</name>
+        </contributor>
+        <contributor>
+            <name>Jennifer Ball</name>
+        </contributor>
+        <contributor>
+            <name>Jacob Hookom</name>
+        </contributor>
+        <contributor>
+            <name>Raj Premkumar</name>
+        </contributor>
+        <contributor>
+            <name>Stan Silvert</name>
+        </contributor>
+        <contributor>
+            <name>Mike Youngstrom</name>
+        </contributor>
+        <contributor>
+            <name>Jason Lee</name>
+        </contributor>
+    </contributors>
+    <organization>
+        <name>Oracle America, Inc</name>
+        <url>http://www.oracle.com/</url>
+    </organization>
+    <dependencies>
+        <dependency>
+            <groupId>javax.servlet</groupId>
+            <artifactId>javax.servlet-api</artifactId>
+            <version>3.0.1</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>javax.servlet.jsp</groupId>
+            <artifactId>javax.servlet.jsp-api</artifactId>
+            <version>2.2.1</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>javax.el</groupId>
+            <artifactId>javax.el-api</artifactId>
+            <version>2.2.1</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>javax.servlet.jsp.jstl</groupId>
+            <artifactId>jstl-api</artifactId>
+            <version>1.2</version>
+            <scope>provided</scope>
+        </dependency>
+    </dependencies>
+    <profiles>
+      <profile>
+        <id>release-sign-artifacts</id>
+        <build>
+          <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                    <source>1.5</source>
+                    <target>1.5</target>
+                    <excludes>
+                        <exclude>**/*.*</exclude>
+                    </excludes>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-source-plugin</artifactId>
+                <version>2.1</version>
+                <executions>
+                    <execution>
+                        <id>attach-sources</id>
+                        <phase>verify</phase>
+                        <goals>
+                            <goal>jar-no-fork</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+              <groupId>org.codehaus.mojo</groupId>
+              <artifactId>build-helper-maven-plugin</artifactId>
+              <version>1.7</version>
+              <executions>
+                <execution>
+                  <id>attach-artifacts</id>
+                  <phase>package</phase>
+                  <goals>
+                    <goal>attach-artifact</goal>
+                  </goals>
+                  <configuration>
+                    <artifacts>
+                      <artifact>
+                        <file>target/jsf-api- at version@-javadoc.jar</file>
+                        <type>jar</type>
+                        <classifier>javadoc</classifier>
+                      </artifact>
+                    </artifacts>
+                  </configuration>
+                </execution>
+              </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-jar-plugin</artifactId>
+                <configuration>
+                    <archive>
+                        <manifestFile>target/classes/META-INF/MANIFEST.MF</manifestFile>
+                    </archive>
+                </configuration>
+            </plugin>            <plugin>
+              <groupId>org.apache.maven.plugins</groupId>
+              <artifactId>maven-gpg-plugin</artifactId>
+              <version>1.3</version>
+              <executions>
+                <execution>
+                  <id>sign-artifacts</id>
+                  <phase>verify</phase>
+                  <goals>
+                    <goal>sign</goal>
+                  </goals>
+                </execution>
+              </executions>
+            </plugin>
+          </plugins>
+        </build>
+      </profile>
+    </profiles>
+
+</project>
diff --git a/common/ant/template/jsf-pre-maven-rename-impl-pom-template.xml b/common/ant/template/jsf-pre-maven-rename-impl-pom-template.xml
new file mode 100644
index 0000000..31d9cb1
--- /dev/null
+++ b/common/ant/template/jsf-pre-maven-rename-impl-pom-template.xml
@@ -0,0 +1,295 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project>
+    <modelVersion>4.0.0</modelVersion>
+    <groupId>@groupId@</groupId>
+    <artifactId>jsf-impl</artifactId>
+    <version>@version@</version>
+    <packaging>jar</packaging>
+    <name>
+        Oracle's implementation of the JSF 2.2 specification.
+    </name>
+    <description>
+        This is the master POM file for Oracle's Implementation of the JSF 2.2 Specification.
+    </description>
+    <url>http://java.sun.com/javaee/javaserverfaces/</url>
+    <licenses>
+        <license>
+            <name>
+                COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) plus GPL
+            </name>
+            <url>http://glassfish.java.net/nonav/public/CDDL+GPL.html</url>
+            <distribution>repo</distribution>
+        </license>
+    </licenses>
+    <scm>
+        <url>http://java.net/projects/mojarra/sources</url>
+        <connection>scm:svn:https://svn.java.net/svn/mojarra~svn/trunk</connection>
+    </scm>
+    <developers>
+        <developer>
+            <id>edburns</id>
+            <name>Ed Burns</name>
+            <email>ed.burns at sun.com</email>
+            <organization>Oracle America, Inc.</organization>
+            <roles>
+                <role>project-owner</role>
+            </roles>
+            <timezone>-6</timezone>
+        </developer>
+        <developer>
+            <id>rlubke</id>
+            <name>Ryan Lubke</name>
+            <email>Ryan.Lubke at sun.com</email>
+            <organization>Oracle America, Inc.</organization>
+            <roles>
+                <role>project-owner</role>
+            </roles>
+            <timezone>-9</timezone>
+        </developer>
+        <developer>
+            <id>rogerk</id>
+            <name>Roger Kitain</name>
+            <email>Roger.Kitain at sun.com</email>
+            <organization>Oracle America, Inc.</organization>
+            <roles>
+                <role>project-owner</role>
+            </roles>
+            <timezone>-6</timezone>
+        </developer>
+        <developer>
+            <id>driscoll</id>
+            <name>Jim Driscoll</name>
+            <email>jim.dirscoll at sun.com</email>
+            <organization>Oracle America, Inc.</organization>
+            <roles>
+                <role>project-owner</role>
+            </roles>
+            <timezone>-9</timezone>
+        </developer>
+    </developers>
+    <distributionManagement>
+      <snapshotRepository>
+        <id>jvnet-nexus-snapshots</id>
+        <name>Java.net Nexus Snapshots Repository</name>
+        <url>https://maven.java.net/content/repositories/snapshots/</url>
+      </snapshotRepository>
+      <repository>
+        <id>jvnet-nexus-staging</id>
+        <name>Java.net Nexus Staging Repository</name>
+        <url>https://maven.java.net/service/local/staging/deploy/maven2/</url>
+      </repository>
+    </distributionManagement>
+    <build>
+        <defaultGoal>install</defaultGoal>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                    <source>1.5</source>
+                    <target>1.5</target>
+                    <excludes>
+                        <exclude>**/*.*</exclude>
+                    </excludes>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-deploy-plugin</artifactId>
+                 <configuration>
+                   <updateReleaseInfo>true</updateReleaseInfo>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-source-plugin</artifactId>
+                <version>2.1</version>
+                <executions>
+                    <execution>
+                        <id>attach-sources</id>
+                        <phase>verify</phase>
+                        <goals>
+                            <goal>jar-no-fork</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+              <groupId>org.codehaus.mojo</groupId>
+              <artifactId>build-helper-maven-plugin</artifactId>
+              <version>1.7</version>
+              <executions>
+                <execution>
+                  <id>attach-artifacts</id>
+                  <phase>package</phase>
+                  <goals>
+                    <goal>attach-artifact</goal>
+                  </goals>
+                  <configuration>
+                    <artifacts>
+                      <artifact>
+                        <file>target/jsf-impl- at version@-javadoc.jar</file>
+                        <type>jar</type>
+                        <classifier>javadoc</classifier>
+                      </artifact>
+                    </artifacts>
+                  </configuration>
+                </execution>
+              </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-jar-plugin</artifactId>
+                <configuration>
+                    <archive>
+                        <manifestFile>target/classes/META-INF/MANIFEST.MF
+                        </manifestFile>
+                    </archive>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+    <issueManagement>
+        <system>JIRA</system>
+        <url>https://java.net/jira/browse/JAVASERVERFACES</url>
+    </issueManagement>
+    <mailingLists>
+        <mailingList>
+            <name>Oracle's JavaServer Faces Implementation Dev List</name>
+            <post>dev at javaserverfaces.dev.java.net</post>
+            <archive>
+                https://javaserverfaces.dev.java.net/servlets/SummarizeList?listName=dev
+            </archive>
+        </mailingList>
+    </mailingLists>
+    <contributors>
+        <contributor>
+            <name>Craig McClanahan</name>
+        </contributor>
+        <contributor>
+            <name>Deepak Gothe</name>
+        </contributor>
+        <contributor>
+            <name>Gregory Murray</name>
+        </contributor>
+        <contributor>
+            <name>Justyna Horwat</name>
+        </contributor>
+        <contributor>
+            <name>Jayashri Visvanathan</name>
+        </contributor>
+        <contributor>
+            <name>Jennifer Ball</name>
+        </contributor>
+        <contributor>
+            <name>Jacob Hookom</name>
+        </contributor>
+        <contributor>
+            <name>Raj Premkumar</name>
+        </contributor>
+        <contributor>
+            <name>Stan Silvert</name>
+        </contributor>
+        <contributor>
+            <name>Mike Youngstrom</name>
+        </contributor>
+        <contributor>
+            <name>Jason Lee</name>
+        </contributor>
+    </contributors>
+    <organization>
+        <name>Oracle America, Inc</name>
+        <url>http://www.oracle.com/</url>
+    </organization>
+    <dependencies>
+        <dependency>
+            <groupId>javax.servlet</groupId>
+            <artifactId>javax.servlet-api</artifactId>
+            <version>3.0.1</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>javax.servlet.jsp</groupId>
+            <artifactId>javax.servlet.jsp-api</artifactId>
+            <version>2.2.1</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>javax.el</groupId>
+            <artifactId>javax.el-api</artifactId>
+            <version>2.2.1</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>javax.servlet.jsp.jstl</groupId>
+            <artifactId>jstl-api</artifactId>
+            <version>1.2</version>
+            <scope>provided</scope>
+        </dependency>
+    </dependencies>
+    <profiles>
+      <profile>
+        <id>release-sign-artifacts</id>
+        <build>
+          <plugins>
+            <plugin>
+              <groupId>org.apache.maven.plugins</groupId>
+              <artifactId>maven-gpg-plugin</artifactId>
+              <version>1.3</version>
+              <executions>
+                <execution>
+                  <id>sign-artifacts</id>
+                  <phase>verify</phase>
+                  <goals>
+                    <goal>sign</goal>
+                  </goals>
+                </execution>
+              </executions>
+            </plugin>
+          </plugins>
+        </build>
+      </profile>
+    </profiles>
+</project>
diff --git a/common/ant/test-app.xml b/common/ant/test-app.xml
new file mode 100644
index 0000000..7aa338b
--- /dev/null
+++ b/common/ant/test-app.xml
@@ -0,0 +1,208 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project name="test-app" 
+         basedir="." xmlns:artifact="antlib:org.apache.maven.artifact.ant">
+
+  <!-- Construct compile classpath -->
+  <path id="test.compile.classpath">
+        <pathelement location="${javax.faces.jar}"/>
+        <pathelement location="${javax-enterprise.jar}"/>
+        <pathelement location="${javax-inject.jar}"/>
+        <pathelement location="${jsf.test.jar}"/>
+        <pathelement location="${jsf.test.jar}"/>
+        <path refid="compile.classpath"/>
+        <pathelement location="${basedir}/build/classes"/>       
+        <pathelement location="${basedir}/../build/test/classes"/>       
+        <path refid="htmlunit.compile.classpath"/>
+  </path>
+
+  <target name="help">
+<echo>
+Define some properties in your build file that imports
+this file.  Use the following as an example.
+
+    <property name="deploy-exploded-applications"
+              value="groovy" />
+
+    <property name="applications-for-V3-only"
+              value="disable-bean-validator,
+                     no-web-xml" />
+
+    <property name="applications-for-V3.1-only"
+              value="disable-bean-validator,
+                     injection,
+                     no-web-xml,
+                     cluster-no-agressive-session-dirtying" />
+
+    <property name="applications-for-V3.1_no_cluster-only"
+              value="disable-bean-validator,
+                     injection,
+                     no-web-xml" />
+
+    <property name="container-agnostic-applications"
+              value="
+                   annotation-restrictions,
+                   clientside-statesaving,
+                   request-char-encoding-no-session,
+                   bogus-render-kit-id,
+                   characterCombat"/>
+
+</echo>
+  </target>
+
+    <target name="define.applications" depends="discover.container.version,define.tomcat7.applications,define.V2.applications,define.V3.applications,define.V3.1.applications,define.V3.1_no_cluster.applications">
+      <propertyregex property="applications.nowhitespace" input="${applications}" override="true"
+                     regexp="\s+" replace="" global="true" />
+
+
+      <propertyregex property="applications.formatted" input="${applications.nowhitespace}" override="true"
+                     regexp="," replace="${line.separator}" global="true" />
+
+      <echo>
++++++++++++++++ Executing the following regression tests
+${applications.formatted}
++++++++++++++++
+      </echo>
+    </target>
+
+    <target name="discover.container.version" 
+            depends="query.is.V2,query.is.V3,query.is.V3.1,query.is.V3.1_no_cluster,query.is.tomcat7"/>
+
+    <target name="query.is.tomcat7">
+        <condition property="container.is.tomcat7">
+          <equals arg1="tomcat7" arg2="${container.name}" />
+        </condition>
+    </target>
+
+    <target name="query.is.V2">
+        <condition property="container.is.V2">
+          <equals arg1="glassfish" arg2="${container.name}" />
+        </condition>
+    </target>
+
+    <target name="query.is.V3">
+        <condition property="container.is.V3">
+          <equals arg1="glassfishV3" arg2="${container.name}" />
+        </condition>
+    </target>
+
+    <target name="query.is.V3.1">
+        <condition property="container.is.V3.1">
+          <equals arg1="glassfishV3.1" arg2="${container.name}" />
+        </condition>
+    </target>
+
+    <target name="query.is.V3.1_no_cluster">
+        <condition property="container.is.V3.1_no_cluster">
+          <equals arg1="glassfishV3.1_no_cluster" arg2="${container.name}" />
+        </condition>
+    </target>
+
+    <target name="define.V2.applications" if="container.is.V2">
+       <property name="applications" value="${container-agnostic-applications}" />
+    </target>
+
+    <target name="define.tomcat7.applications" if="container.is.tomcat7">
+       <property name="applications" value="${container-agnostic-applications}" />
+    </target>
+
+    <target name="define.V3.applications" if="container.is.V3">
+       <property name="applications" 
+                 value="${container-agnostic-applications},${applications-for-V3-only}" />
+    </target>
+
+    <target name="define.V3.1.applications" if="container.is.V3.1">
+       <property name="applications" 
+                 value="${applications-for-V3.1-only},${container-agnostic-applications}" />
+    </target>
+
+    <target name="define.V3.1_no_cluster.applications" if="container.is.V3.1_no_cluster">
+       <property name="applications" 
+                 value="${container-agnostic-applications},${applications-for-V3.1_no_cluster-only}" />
+    </target>
+    
+    <target name="deployment.check">
+       <!-- this should be a macro, but macros cannot fail, or retry -->
+
+       <!-- overridable defaults: -->
+       <property name="sleep.seconds" value="10" />
+       
+        <echo>
+Testing http://${deployment.host}:${deployment.port}${path.with.leading.slash}
+For occurence of pattern ${page.regexp}.
+deployment.retries=${deployment.retries}
+sleep.seconds=${sleep.seconds}   
+        </echo>
+
+       <!-- make sure our helper property is unoccupied: -->
+       <fail if="do.sleep" />
+       
+       <retry retrycount="${deployment.retries}">
+           <sequential>
+               <local name=".sleep.seconds" />
+               <condition property=".sleep.seconds" value="${sleep.seconds}" else="0">
+                   <istrue value="${do.sleep}" />
+               </condition>
+               <sleep seconds="${.sleep.seconds}" />
+
+               <property name="do.sleep" value="true" />
+
+               <fail><condition>
+                   <resourcesmatch astext="true">
+                       <string value="" />
+                        <concat>
+                           <url url="http://${deployment.host}:${deployment.port}${path.with.leading.slash}" />
+                           <filterchain>
+                               <linecontainsregexp>
+                                   <regexp pattern="${page.regexp}" />
+                               </linecontainsregexp>
+                           </filterchain>
+                       </concat>
+                   </resourcesmatch>
+               </condition></fail>
+           </sequential>
+       </retry>
+    </target>
+    
+</project>
diff --git a/common/ant/tomcat6/container.xml b/common/ant/tomcat6/container.xml
new file mode 100644
index 0000000..e183925
--- /dev/null
+++ b/common/ant/tomcat6/container.xml
@@ -0,0 +1,250 @@
+<?xml version="1.0" encoding="UTF-8"?>
+      
+<!--
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ 
+ Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+ 
+ The contents of this file are subject to the terms of either the GNU
+ General Public License Version 2 only ("GPL") or the Common Development
+ and Distribution License("CDDL") (collectively, the "License").  You
+ may not use this file except in compliance with the License. You can obtain
+ a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
+ or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ language governing permissions and limitations under the License.
+ 
+ When distributing the software, include this License Header Notice in each
+ file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
+ Sun designates this particular file as subject to the "Classpath" exception
+ as provided by Sun in the GPL Version 2 section of the License file that
+ accompanied this code.  If applicable, add the following below the License
+ Header, with the fields enclosed by brackets [] replaced by your own
+ identifying information: "Portions Copyrighted [year]
+ [name of copyright owner]"
+ 
+ Contributor(s):
+ 
+ If you wish your version of this file to be governed by only the CDDL or
+ only the GPL Version 2, indicate your decision by adding "[Contributor]
+ elects to include this software in this distribution under the [CDDL or GPL
+ Version 2] license."  If you don't indicate a single choice of license, a
+ recipient has the option to distribute your version of this file under
+ either the CDDL, the GPL Version 2 or to extend the choice of license to
+ its licensees as provided above.  However, if you add GPL Version 2 code
+ and therefore, elected the GPL Version 2 license, then the option applies
+ only if the new code is made subject to such option by the copyright
+ holder.
+-->
+<project name="Tomcat" basedir=".">
+ 
+    <!-- 
+       JARs that may be packaged in WEB-INF/lib
+       in order for the implementation to run 
+       properly if they aren't availabe in the
+       container's classloader.  
+   
+       This is a comma separated list of fully
+       qualified JARs.
+    -->
+    <property name="webapp.jars" value="${jstl.jar}"/>
+
+
+    <!-- Required Targets/Macrodefs -->
+    
+    <!-- 
+       Deploys the specified artifact to the
+       target container.
+    -->      
+    <macrodef name="deploy.artifact">
+        <attribute name="artifact"
+                   description="The WAR to deploy"/>
+        <attribute name="appName"
+                   description="The name of the application"/>
+        <attribute name="use-virtual-servers"
+                   description="If true, deploy to the virtual servers."
+                   default="false"/>
+        <sequential>
+            <echo>
+
+---------------- Apache Tomcat - Deploying @{appName} ----------------
+
+            </echo>
+            <copy file="@{artifact}" toDir="${container.home}/webapps" />
+            <sleep seconds="8" />
+
+        </sequential>
+    </macrodef>
+
+    <!-- 
+        Undeploy the specified WAR from the 
+        target container.
+    -->
+    <macrodef name="undeploy.artifact">
+        <attribute name="artifact"
+                   description="The WAR to deploy"/>
+        <attribute name="appName"
+                   description="The name of the application"/>
+        <sequential>
+            <echo>
+
+---------------- Apache Tomcat - Undeploying @{appName} ----------------
+
+            </echo>
+            <basename file="@{artifact}" property="warFile" />
+            <delete file="${container.home}/webapps/${warFile}" />
+            <sleep seconds="8" />
+
+        </sequential>
+    </macrodef>
+    
+    <!-- 
+        Perform any configuration of the target container in order
+        to run the unit tests.
+        
+        Ensure the following at a minimum:
+           java.util.PropertyPermission is read,write
+           java.lang.ReflectPermission is "*"                   
+    -->
+    <target name="config.container"
+            description="Perform any container specific configuration necessary for the unit tests to run">
+    </target>
+
+    <!--
+         Display/Validate any property information necessary to build 
+         successfully.
+     -->
+    <target name="props">
+        <echo message="Provide 'props' implementation"/>            
+    </target>
+    
+    <!--
+        OPTIONAL
+          Update the javax.faces.jar's manfest file
+          with the versions of the compile time
+          dependencies.
+    -->
+    <target name="update.impl.manifest">
+        <echo message="Provide 'update.impl.manifest' implementation"/>
+    </target>
+
+    <!--
+        OPTIONAL
+          Perform whatever steps are necessary to integrate
+          Sun's JavaServer Faces implementation into the
+          target container.
+    -->
+    <target name="container.deploy" 
+            description="Deploy the JSF Implementation artifacts to the target container.">
+        <copy overwrite="true" file="${impl.dir}/build/lib/javax.faces.jar" toFile="${container.home}/lib/javax.faces.jar"/>
+    </target>
+
+
+    <target name="container.start"
+            description="Start the Tomcat container">
+        <container.start/>
+    </target>
+
+    <target name="container.stop"
+            description="Stop the Tomcat container">
+        <container.stop/>
+    </target>
+
+    <target name="container.debug"
+            description="Start the Tomcat container in debug mode">
+        <container.debug/>
+    </target>
+
+    <target name="container.restart"
+            description="Stop the Tomcat container">
+        <container.stop/>
+        <container.start/>
+    </target>
+    
+    <target name="define.scenario.aware.port">
+      <property name="scenario.aware.port" value="${container.port}" />
+    </target>
+
+    <target name="define.virtual-server.aware.port">
+      <property name="scenario.aware.port" value="${container.port}" />
+    </target>
+
+    <!-- 
+        OPTIONAL
+          Start the container
+    -->
+    <macrodef name="container.start"
+            description="Start the target container.">
+        <sequential>
+
+            <java classname="org.apache.catalina.startup.Bootstrap" fork="true" spawn="true">
+                <classpath>
+                    <pathelement path="${container.home}/bin/bootstrap.jar" />
+                    <pathelement path="${container.home}/bin/tomcat-juli.jar" />
+                </classpath>
+                <jvmarg value="-Dcatalina.home=${container.home}" />
+                <jvmarg value="-Dcatalina.base=${container.home}" />
+                <jvmarg value="-Djava.util.logging.config.file=${container.home}/conf/logging.properties" />
+                <jvmarg value="-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager" />
+                <jvmarg value="-Xms${tomcat.Xms}" />
+                <jvmarg value="-Xmx${tomcat.Xmx}" />
+                <jvmarg value="-XX:MaxPermSize=${tomcat.Xmx}" />
+                <jvmarg value="-client" />
+                <arg value="start" />
+            </java>
+
+        </sequential>
+    </macrodef>
+
+    <!--
+        OPTIONAL
+          Start the container in debug mode
+    -->
+    <macrodef name="container.debug"
+            description="Start the target container in debug mode.">
+        <sequential>
+
+            <java classname="org.apache.catalina.startup.Bootstrap" fork="true" spawn="true">
+                <classpath>
+                    <pathelement path="${container.home}/bin/bootstrap.jar" />
+                    <pathelement path="${container.home}/bin/tomcat-juli.jar" />
+                </classpath>
+                <jvmarg value="-Dcatalina.home=${container.home}" />
+                <jvmarg value="-Dcatalina.base=${container.home}" />
+                <jvmarg value="-Djava.util.logging.config.file=${container.home}/conf/logging.properties" />
+                <jvmarg value="-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager" />
+                <jvmarg value="-Xms${tomcat.Xms}" />
+                <jvmarg value="-Xmx${tomcat.Xmx}" />
+                <jvmarg value="-XX:MaxPermSize=${tomcat.Xmx}" />
+                <jvmarg value="-Xdebug"/>
+    			<jvmarg value="-Xrunjdwp:transport=dt_socket,address=${tomcat.debug.port},server=y,suspend=n"/>
+                <jvmarg value="-client" />
+                <arg value="start" />
+            </java>
+            
+
+        </sequential>
+    </macrodef>
+    <!--
+       OPTIONAL
+          Stop the container
+    -->
+    <macrodef name="container.stop"
+              description="Stop the target container.">
+        <sequential>
+            <java classname="org.apache.catalina.startup.Bootstrap" fork="true" spawn="true">
+                <classpath>
+                    <pathelement path="${container.home}/bin/bootstrap.jar" />
+                    <pathelement path="${container.home}/bin/tomcat-juli.jar" />
+                </classpath>
+                <jvmarg value="-Dcatalina.home=${container.home}" />
+                <jvmarg value="-Dcatalina.base=${container.home}" />
+                <jvmarg value="-Xms${tomcat.Xms}" />
+                <jvmarg value="-Xmx${tomcat.Xmx}" />
+                <jvmarg value="-XX:MaxPermSize=${tomcat.Xmx}" />
+                <jvmarg value="-client" />
+                <arg value="stop" />    
+            </java>
+        </sequential>
+    </macrodef>
+
+</project>
diff --git a/common/ant/tomcat7/container.xml b/common/ant/tomcat7/container.xml
new file mode 100644
index 0000000..bab1e49
--- /dev/null
+++ b/common/ant/tomcat7/container.xml
@@ -0,0 +1,266 @@
+<?xml version="1.0" encoding="UTF-8"?>
+      
+<!--
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ 
+ Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+ 
+ The contents of this file are subject to the terms of either the GNU
+ General Public License Version 2 only ("GPL") or the Common Development
+ and Distribution License("CDDL") (collectively, the "License").  You
+ may not use this file except in compliance with the License. You can obtain
+ a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
+ or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ language governing permissions and limitations under the License.
+ 
+ When distributing the software, include this License Header Notice in each
+ file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
+ Sun designates this particular file as subject to the "Classpath" exception
+ as provided by Sun in the GPL Version 2 section of the License file that
+ accompanied this code.  If applicable, add the following below the License
+ Header, with the fields enclosed by brackets [] replaced by your own
+ identifying information: "Portions Copyrighted [year]
+ [name of copyright owner]"
+ 
+ Contributor(s):
+ 
+ If you wish your version of this file to be governed by only the CDDL or
+ only the GPL Version 2, indicate your decision by adding "[Contributor]
+ elects to include this software in this distribution under the [CDDL or GPL
+ Version 2] license."  If you don't indicate a single choice of license, a
+ recipient has the option to distribute your version of this file under
+ either the CDDL, the GPL Version 2 or to extend the choice of license to
+ its licensees as provided above.  However, if you add GPL Version 2 code
+ and therefore, elected the GPL Version 2 license, then the option applies
+ only if the new code is made subject to such option by the copyright
+ holder.
+-->
+<project name="Tomcat" basedir=".">
+ 
+    <!-- 
+       JARs that may be packaged in WEB-INF/lib
+       in order for the implementation to run 
+       properly if they aren't availabe in the
+       container's classloader.  
+   
+       This is a comma separated list of fully
+       qualified JARs.
+    -->
+    <property name="webapp.jars" value="${jstl.jar}"/>
+
+    <property name="tomcat.Xms" value="512m" />
+    <property name="tomcat.Xmx" value="786m" />
+    <property name="tomcat.debug.port" value="9009" />
+
+
+
+    <!-- Required Targets/Macrodefs -->
+    
+    <!-- 
+       Deploys the specified artifact to the
+       target container.
+    -->      
+    <macrodef name="deploy.artifact">
+        <attribute name="artifact"
+                   description="The WAR to deploy"/>
+        <attribute name="appName"
+                   description="The name of the application"/>
+        <attribute name="use-virtual-servers"
+                   description="If true, deploy to the virtual servers."
+                   default="false"/>
+        <sequential>
+            <echo>
+
+---------------- Apache Tomcat - Deploying @{appName} ----------------
+
+            </echo>
+            <copy file="@{artifact}" toDir="${container.home}/webapps" />
+            <sleep seconds="8" />
+
+        </sequential>
+    </macrodef>
+
+    <!-- 
+        Undeploy the specified WAR from the 
+        target container.
+    -->
+    <macrodef name="undeploy.artifact">
+        <attribute name="artifact"
+                   description="The WAR to deploy"/>
+        <attribute name="appName"
+                   description="The name of the application"/>
+        <sequential>
+            <echo>
+
+---------------- Apache Tomcat - Undeploying @{appName} ----------------
+
+            </echo>
+            <basename file="@{artifact}" property="warFile" />
+            <delete file="${container.home}/webapps/${warFile}" />
+            <sleep seconds="8" />
+
+        </sequential>
+    </macrodef>
+    
+    <!-- 
+        Perform any configuration of the target container in order
+        to run the unit tests.
+        
+        Ensure the following at a minimum:
+           java.util.PropertyPermission is read,write
+           java.lang.ReflectPermission is "*"                   
+    -->
+    <target name="config.container"
+            description="Perform any container specific configuration necessary for the unit tests to run">
+    </target>
+
+    <!--
+         Display/Validate any property information necessary to build 
+         successfully.
+     -->
+    <target name="props">
+        <echo message="Provide 'props' implementation"/>            
+    </target>
+    
+    <!--
+        OPTIONAL
+          Update the javax.faces.jar's manfest file
+          with the versions of the compile time
+          dependencies.
+    -->
+    <target name="update.impl.manifest">
+        <echo message="Provide 'update.impl.manifest' implementation"/>
+    </target>
+
+    <!--
+        OPTIONAL
+          Perform whatever steps are necessary to integrate
+          Sun's JavaServer Faces implementation into the
+          target container.
+    -->
+    <target name="container.deploy" 
+            description="Deploy the JSF Implementation artifacts to the target container.">
+        <copy overwrite="true" file="${impl.dir}/build/lib/javax.faces.jar" toFile="${container.home}/lib/javax.faces.jar"/>
+        <copy overwrite="true" file="${jstl.jar}" todir="${container.home}/lib"/>
+    </target>
+
+    <target name="container.deploy.test.dependencies"
+            description="Deploy any container level dependencies to the container.">
+    </target>
+
+    <target name="container.undeploy.test.dependencies"
+            description="Undeploy any container level dependencies from the container.">
+    </target>
+
+
+    <target name="container.start"
+            description="Start the Tomcat container">
+        <container.start/>
+    </target>
+
+    <target name="container.stop"
+            description="Stop the Tomcat container">
+        <container.stop/>
+    </target>
+
+    <target name="container.debug"
+            description="Start the Tomcat container in debug mode">
+        <container.debug/>
+    </target>
+
+    <target name="container.restart"
+            description="Stop the Tomcat container">
+        <container.stop/>
+        <container.start/>
+    </target>
+    
+    <target name="define.scenario.aware.port">
+      <property name="scenario.aware.port" value="${container.port}" />
+    </target>
+
+    <target name="define.virtual-server.aware.port">
+      <property name="scenario.aware.port" value="${container.port}" />
+    </target>
+
+    <!-- 
+        OPTIONAL
+          Start the container
+    -->
+    <macrodef name="container.start"
+            description="Start the target container.">
+        <sequential>
+
+            <java classname="org.apache.catalina.startup.Bootstrap" fork="true" spawn="true">
+                <classpath>
+                    <pathelement path="${container.home}/bin/bootstrap.jar" />
+                    <pathelement path="${container.home}/bin/tomcat-juli.jar" />
+                </classpath>
+                <jvmarg value="-Dorg.apache.el.parser.SKIP_IDENTIFIER_CHECK=true" />
+                <jvmarg value="-Dcatalina.home=${container.home}" />
+                <jvmarg value="-Dcatalina.base=${container.home}" />
+                <jvmarg value="-Djava.util.logging.config.file=${container.home}/conf/logging.properties" />
+                <jvmarg value="-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager" />
+                <jvmarg value="-Xms${tomcat.Xms}" />
+                <jvmarg value="-Xmx${tomcat.Xmx}" />
+                <jvmarg value="-XX:MaxPermSize=${tomcat.Xmx}" />
+                <jvmarg value="-client" />
+                <arg value="start" />
+            </java>
+
+        </sequential>
+    </macrodef>
+
+    <!--
+        OPTIONAL
+          Start the container in debug mode
+    -->
+    <macrodef name="container.debug"
+            description="Start the target container in debug mode.">
+        <sequential>
+
+            <java classname="org.apache.catalina.startup.Bootstrap" fork="true" spawn="true">
+                <classpath>
+                    <pathelement path="${container.home}/bin/bootstrap.jar" />
+                    <pathelement path="${container.home}/bin/tomcat-juli.jar" />
+                </classpath>
+                <jvmarg value="-Dcatalina.home=${container.home}" />
+                <jvmarg value="-Dorg.apache.el.parser.SKIP_IDENTIFIER_CHECK=true" />
+                <jvmarg value="-Dcatalina.base=${container.home}" />
+                <jvmarg value="-Djava.util.logging.config.file=${container.home}/conf/logging.properties" />
+                <jvmarg value="-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager" />
+                <jvmarg value="-Xms${tomcat.Xms}" />
+                <jvmarg value="-Xmx${tomcat.Xmx}" />
+                <jvmarg value="-XX:MaxPermSize=${tomcat.Xmx}" />
+                <jvmarg value="-Xdebug"/>
+    			<jvmarg value="-Xrunjdwp:transport=dt_socket,address=${tomcat.debug.port},server=y,suspend=n"/>
+                <jvmarg value="-client" />
+                <arg value="start" />
+            </java>
+            
+
+        </sequential>
+    </macrodef>
+    <!--
+       OPTIONAL
+          Stop the container
+    -->
+    <macrodef name="container.stop"
+              description="Stop the target container.">
+        <sequential>
+            <java classname="org.apache.catalina.startup.Bootstrap" fork="true" spawn="true">
+                <classpath>
+                    <pathelement path="${container.home}/bin/bootstrap.jar" />
+                    <pathelement path="${container.home}/bin/tomcat-juli.jar" />
+                </classpath>
+                <jvmarg value="-Dcatalina.home=${container.home}" />
+                <jvmarg value="-Dcatalina.base=${container.home}" />
+                <jvmarg value="-Xms${tomcat.Xms}" />
+                <jvmarg value="-Xmx${tomcat.Xmx}" />
+                <jvmarg value="-XX:MaxPermSize=${tomcat.Xmx}" />
+                <jvmarg value="-client" />
+                <arg value="stop" />    
+            </java>
+        </sequential>
+    </macrodef>
+
+</project>
diff --git a/common/ant/wls_10_3_4_no_cluster/container.xml b/common/ant/wls_10_3_4_no_cluster/container.xml
new file mode 100644
index 0000000..4ab62dd
--- /dev/null
+++ b/common/ant/wls_10_3_4_no_cluster/container.xml
@@ -0,0 +1,1044 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project name="wls-10.3.4" basedir=".">
+
+<!-- 
+
+To start the server manually
+
+The admin console is at http://adc2110030:7001/console weblogic:weblogic1
+
+-->
+
+    <property name="wl.username" value="weblogic"/>
+    <property name="wl.password" value="weblogic1"/>
+    <property name="wl.home" value="${container.home}/wlserver_10.3" />
+    <property name="wl.domain.home" value="${container.home}/user_projects/domains" />
+    <property name="wl.domain.name" value="base_domain" />
+    <property name="wl.admin.server.name" value="AdminServer" />
+
+    <taskdef name="wlserver" 
+             classname="weblogic.ant.taskdefs.management.WLServer">
+        <classpath>
+            <pathelement
+                  location="${wl.home}/server/lib/weblogic.jar"/>
+        </classpath>
+      
+    </taskdef>
+    <taskdef name="wldeploy" 
+             classname="weblogic.ant.taskdefs.management.WLDeploy">
+        <classpath>
+            <pathelement
+                  location="${wl.home}/server/lib/weblogic.jar"/>
+        </classpath>
+      
+    </taskdef>
+
+    <!-- JARs that may be packaged in WEB-INF/lib
+  in order for the implementation to run
+  properly if they aren't availabe in the
+  container's classloader.
+
+  This is a comma separated list of fully
+  qualified JARs -->
+
+    <property name="webapp.jars" value=""/>
+
+    <property name="instance.numbers" value="1,2" />
+
+    <property name="glassfish.custom.domain" value="mojarra-domain" />
+    <property name="glassfish.cluster" value="mojarra-cluster" />
+    <property name="glassfish.custom.admin.port" value="60048" />
+    <property name="glassfish.cluster.admin.port" value="4949" />
+    <property name="glassfish.portbase.tenthousandsplace" value="6" />
+    <property name="glassfish.portbase" value="${glassfish.portbase.tenthousandsplace}0000" />
+    <property name="container.ssl.port" value="8181" />
+    <property name="container.jms.port" value="7676" />
+    <property name="container.iiop.port" value="3700" />
+    <property name="container.iiop.ssl.port" value="3820" />
+    <property name="container.iiop.ssl.mutualauth.port" value="3920" />
+    <property name="container.jmx.port" value="8686" />
+    <property name="container.gms.port" value="9490" />
+    <property name="container.debug.port" value="9009" />
+
+
+    <!-- Required Targets -->
+    <macrodef name="deploy.artifact">
+        <attribute name="artifact"
+                   description="The WAR to deploy"/>
+        <attribute name="appName"
+                   description="The name of the application"/>
+        <attribute name="use-virtual-servers"
+                   description="If true, deploy to the virtual servers."
+                   default="false"/>
+        <sequential>
+            <echo>Instrumenting @{artifact} with weblogic.xml</echo>
+            <property name="local.wls-jsf"
+                  value="${jsf.build.home}/common/ant/${container.name}/wls-jsf" />
+            <property name="local.wls-jsf.deploy.artifact"
+                  value="${local.wls-jsf}/target/deploy.artifact" />
+            <delete dir="${local.wls-jsf.deploy.artifact}" 
+                    failonerror="false" />
+            <mkdir dir="${local.wls-jsf.deploy.artifact}/WEB-INF/" />
+            <copy file="${local.wls-jsf}/src/main/templates/weblogic.xml"
+                  tofile="${local.wls-jsf.deploy.artifact}/WEB-INF/weblogic.xml"
+                  filtering="true">
+                <filterset>
+                  <filter token="spec.version" value="${impl.version.number}"/>
+                  <filter token="impl.name" value="${impl.name}"/>
+                </filterset>
+            </copy>
+            <jar update="true" destfile="@{artifact}">
+                <fileset dir="${local.wls-jsf.deploy.artifact}"
+                         includes="**/*.*" />
+            </jar>
+
+            <echo>
+
+---------------- Glassfish - Deploying @{appName} ---------------- 
+
+            </echo>
+            <wldeploy action="deploy"
+                appversion="${impl.version.number}"
+                name="@{appName}"
+                password="${wl.password}"
+                user="${wl.username}"
+                source="@{artifact}"
+                verbose="true" />
+        </sequential>
+    </macrodef>
+
+    <macrodef name="deploydir.artifact">
+        <attribute name="explodedWarDir"
+                   description="The exploded war directory to deploy"/>
+        <attribute name="appName"
+                   description="The name of the application"/>
+        <sequential>
+            <condition property="exec.name" value="cmd.exe">
+                <os family="windows"/>
+            </condition>
+            <condition property="exec.arg.1"
+                       value="/c ${container.home}/bin/asadmin">
+                <os family="windows"/>
+            </condition>
+            <property name="exec.name" value="${container.home}/bin/asadmin"/>
+            <property name="exec.arg.1" value=""/>
+            <condition property="target"
+                       value="--target ${glassfish.cluster}">
+                <not>
+                  <equals arg1="${force.no.cluster}" casesensitive="false" trim="true"
+                          arg2="true" />
+                </not>
+            </condition>
+            <condition property="availabilityenabled"
+                       value="--availabilityenabled true">
+                <not>
+                  <equals arg1="${force.no.cluster}" casesensitive="false" trim="true"
+                          arg2="true" />
+                </not>
+            </condition>
+            <property name="target" value="" />
+            <property name="availabilityenabled" value="" />
+            <echo>
+
+---------------- Glassfish - Deploying @{appName} ---------------- 
+
+            </echo>
+            <exec executable="${exec.name}" failonerror="true">
+                <arg line="${exec.arg.1}"/>
+                <arg line="--port ${glassfish.custom.admin.port}"/>
+                <arg line="deploydir"/>
+                <arg line="${availabilityenabled}"/>
+                <arg line="${target}"/>
+                <arg line="--contextroot @{appName} @{explodedWarDir}"/>
+            </exec>
+        </sequential>
+    </macrodef>
+
+
+    <macrodef name="undeploy.artifact">
+        <attribute name="artifact"
+                   description="The WAR to deploy"/>
+        <attribute name="appName"
+                   description="The name of the application"/>
+        <sequential>
+            <echo>
+
+---------------- Glassfish - Undeploying @{appName} ---------------- 
+
+            </echo>
+            <wldeploy action="undeploy"
+                name="@{appName}"
+                password="${wl.password}"
+                user="${wl.username}"
+                verbose="true" debug="true" failonerror="false"/>
+
+        </sequential>
+    </macrodef>
+
+    <target name="config.container">
+    </target>
+
+    <!-- Require target to display information about the build environment -->
+    <target name="props">
+        <echo message="PENDING - Please add a message"/>
+        <echo message="container.home->${container.home}" />
+        <echo message="javaee.jar->${container.home}/lib/javaee.jar" />
+    </target>
+
+    <target name="update.impl.manifest">
+        <echo message="PENDING - Please implement"/>
+    </target>
+
+    <target name="define.wls.properties">
+      <property name="wls.jsf.di.groupId" value="com/bea/faces" />
+      <property name="wls.jsf.di.artifactId" value="wls.jsf.di" />
+      <property name="wls.jsf.di.version" value="2.0.4" />
+      <property name="wls.jsf.di.path" value="${wls.jsf.di.groupId}/${wls.jsf.di.artifactId}/${wls.jsf.di.version}" />
+      <property name="wls.jsf.di.jar" value="${wls.jsf.di.path}/${wls.jsf.di.artifactId}-${wls.jsf.di.version}.jar" />
+      <property name="wls.jsf.di.url" value="http://hg.us.oracle.com/jsf/website/raw-file/43f22fe82eca/downloads/wls.jsf.di-2.0.4.jar"/>
+
+      <propertyregex override="true"
+                   property="groupPath" input="${groupId}"
+                   regexp="\." replace="/" global="true" />
+    </target>
+
+    <target name="container.deploy" depends="define.wls.properties"
+            description="Deploy the JSF Implementation artifacts to the target container.">
+
+      <ant dir="${impl.dir}" target="mvn.deploy.snapshot.local" />     
+
+      <if>
+        <not>
+          <available file="${maven.repo.local}/${wls.jsf.di.jar}" property="ignored"/>
+        </not>
+        <then>
+          <sequential>
+            <mkdir dir="${maven.repo.local}/${wls.jsf.di.path}" />
+            <get src="${wls.jsf.di.url}" verbose="true"
+                 usetimestamp="true"
+                 dest="${maven.repo.local}/${wls.jsf.di.jar}" />
+          </sequential>
+        </then>
+      </if>
+
+      <jsf.mvn mvnargs="-Dimpl.version=${impl.version} -Dimpl.name=${impl.name}" 
+               dir="${jsf.build.home}/common/ant/${container.name}/wls-jsf" goals="clean install" />
+      <container.stop />
+
+      <copy file="${maven.repo.local}/org/glassfish/javax.faces/${impl.version}/javax.faces-${impl.version}.jar" overwrite="true"
+            todir="${wl.home}/server/lib/consoleapp/webapp/WEB-INF/lib" />
+      <container.start />
+      <wldeploy action="deploy"
+                appversion="${impl.version.number}"
+                libImplVer="${impl.version.number}"
+                libSpecVer="${impl.version.number}"
+                library="true"
+                name="${impl.name}"
+                password="${wl.password}"
+                user="${wl.username}"
+                source="${jsf.build.home}/common/ant/${container.name}/wls-jsf/target/${impl.name}-${impl.version}.war"
+                verbose="true" />
+      <container.stop />
+
+    </target>
+
+    <target name="container.undeploy" depends="define.wls.properties"
+            description="Undeploy the JSF Implementation artifacts from the target container.">
+     
+      <container.stop />
+      <container.start />
+      <wldeploy action="undeploy"
+                appversion="${impl.version.number}"
+                libImplVer="${impl.version.number}"
+                libSpecVer="${impl.version.number}"
+                library="true"
+                name="${impl.name}"
+                password="${wl.password}"
+                user="${wl.username}"
+                verbose="true" />
+      <container.stop />
+
+    </target>
+
+    <target name="container.deploy.test.dependencies"
+            description="Deploy any container level dependencies to the container.">
+    </target>
+
+    <target name="container.undeploy.test.dependencies"
+            description="Undeploy any container level dependencies from the container.">
+    </target>
+
+    <target name="container.start"
+            description="Start the GlassFish container">
+        <var name="create-domain-value" value="true" />
+        <var name="create-cluster-value" value="true" />
+        <if>
+          <equals arg1="${create-domain}" 
+                  casesensitive="false" trim="true"
+                  arg2="false" />
+          <then>
+            <var name="create-domain-value" value="false" />
+          </then>
+        </if>
+        <if>
+          <equals arg1="${create-cluster}" 
+                  casesensitive="false" trim="true"
+                  arg2="false" />
+          <then>
+            <var name="create-cluster-value" value="false" />
+          </then>
+        </if>
+        <echo>
+--------- Starting container, create-domain: ${create-domain-value} create-cluster: ${create-cluster-value}
+        </echo>
+        <container.start create-domain="${create-domain-value}"
+                         create-cluster="${create-cluster-value}"/>
+    </target>
+
+    <target name="container.debug"
+            description="Start the GlassFish container in debug mode">
+        <var name="create-domain-value" value="true" />
+        <var name="create-cluster-value" value="true" />
+        <if>
+          <equals arg1="${create-domain}" 
+                  casesensitive="false" trim="true"
+                  arg2="false" />
+          <then>
+            <var name="create-domain-value" value="false" />
+          </then>
+        </if>
+        <if>
+          <equals arg1="${create-cluster}" 
+                  casesensitive="false" trim="true"
+                  arg2="false" />
+          <then>
+            <var name="create-cluster-value" value="false" />
+          </then>
+        </if>
+        <echo>
+--------- Starting container in debug mode, create-domain: ${create-domain-value} create-cluster: ${create-cluster-value}
+        </echo>
+        <container.debug create-domain="${create-domain-value}"
+                         create-cluster="${create-cluster-value}"/>
+    </target>
+
+    <target name="container.stop"
+            description="Stop the GlassFish container">
+        <var name="create-domain-value" value="true" />
+        <var name="create-cluster-value" value="true" />
+        <if>
+          <equals arg1="${create-domain}" 
+                  casesensitive="false" trim="true"
+                  arg2="false" />
+          <then>
+            <var name="create-domain-value" value="false" />
+          </then>
+        </if>
+        <if>
+          <equals arg1="${create-cluster}" 
+                  casesensitive="false" trim="true"
+                  arg2="false" />
+          <then>
+            <var name="create-cluster-value" value="false" />
+          </then>
+        </if>
+        <echo>
+--------- Stopping container, create-domain: ${create-domain-value} create-cluster: ${create-cluster-value}
+        </echo>
+        <container.stop create-domain="${create-domain-value}"
+                        create-cluster="${create-cluster-value}"/>
+    </target>
+
+    <target name="container.restart"
+            description="Stop the GlassFish container">
+        <container.stop/>
+        <container.start/>
+    </target>
+
+    <target name="define.scenario.aware.port">
+      <property name="scenario.aware.port" value="${container.port}" />
+      <echo message="scenario.aware.port = ${scenario.aware.port}" />
+
+      <var name="force.no.cluster" value="true" />
+      <echo message="force.no.cluster = ${force.no.cluster}" />
+    </target>
+
+    <target name="define.virtual-server.aware.port">
+      <property name="scenario.aware.port" value="${container.port}" />
+      <echo message="scenario.aware.port = ${scenario.aware.port}" />
+
+      <var name="force.no.cluster" value="true" />
+      <echo message="force.no.cluster = ${force.no.cluster}" />
+    </target>
+
+
+    <macrodef name="container.start"
+            description="Start the GlassFish container">
+        <attribute name="create-domain" default="true"/>
+        <attribute name="create-cluster" default="true"/>
+        <sequential>
+          <echo>Starting ${container.name}</echo>
+          <wlserver dir="${wl.domain.home}/${wl.domain.name}" 
+                    host="${container.host}" port="${container.port}"
+                    domainname="${wl.domain.name}" 
+                    servername="${wl.admin.server.name}"
+                    action="start" 
+                    username="${wl.username}" password="${wl.password}"
+                    beahome="${container.home}" 
+                    weblogichome="${wl.home}" verbose="true" 
+                    noExit="true"
+                    protocol="t3" 
+                    classpath="${wl.home}/server/lib/weblogic.jar" >
+                       <jvmarg value="-server"/>
+                       <jvmarg value="-Xms512m"/>
+                       <jvmarg value="-Xmx786m"/>
+                       <jvmarg value="-XX:PermSize=128m"/>
+                       <jvmarg value="-XX:MaxPermSize=786m"/>
+           </wlserver>
+        </sequential>
+    </macrodef>
+
+    <macrodef name="container.debug"
+            description="Start the GlassFish container in debug mode">
+        <attribute name="create-domain" default="true"/>
+        <attribute name="create-cluster" default="true"/>
+        <sequential>
+            <debug.domain create-domain="@{create-domain}"
+                          create-cluster="@{create-cluster}"/>
+        </sequential>
+    </macrodef>
+
+
+    <macrodef name="container.stop"
+            description="Stop the GlassFish container">
+        <attribute name="create-domain" default="true"/>
+        <attribute name="create-cluster" default="true"/>
+        <sequential>
+          <echo>Stopping ${container.name}</echo>
+          <wlserver dir="${wl.domain.home}/${wl.domain.name}" 
+                    host="${container.host}" port="${container.port}"
+                    servername="${wl.admin.server.name}" 
+                    username="${wl.username}" password="${wl.password}"
+                    action="shutdown" 
+                    beahome="${container.home}" 
+                    weblogichome="${wl.home}" 
+                    forceshutdown="true"/>
+        </sequential>
+    </macrodef>
+
+    <!-- 'PRIVATE' targets -->
+    <macrodef name="start.domain">
+        <attribute name="create-domain" default="true"/>
+        <attribute name="create-cluster" default="true"/>
+
+        <sequential>
+            <echo>
+
+"------------ Starting ${glassfish.custom.domain} force.no.cluster ${force.no.cluster} ------------"
+
+            </echo>
+            <if>
+                <os family="unix"/>
+                <then>
+                    <if>
+                        <equals arg1="@{create-domain}" 
+                                casesensitive="false" trim="true"
+                                arg2="true" />
+                        <then>
+			  <exec executable="${container.home}/bin/asadmin"
+				failonerror="true">
+			      <arg line="create-domain"/>
+			      <arg line="--user ${glassfish.admin.user}"/>
+			      <arg line="--passwordfile ${glassfish.password.file}"/>
+			      <arg line="--portbase ${glassfish.portbase}"/>
+			      <arg line="${glassfish.custom.domain}"/>
+			  </exec>
+                        </then>
+                    </if>
+                    <exec executable="${container.home}/bin/asadmin"
+                          failonerror="true">
+                        <arg line="start-domain"/>
+                        <arg line="--user ${glassfish.admin.user}"/>
+                        <arg line="${glassfish.custom.domain}"/>
+                    </exec>
+                    <if>
+                      <not>
+                        <equals arg1="${force.no.cluster}" 
+                                casesensitive="false" trim="true"
+                                arg2="true" />
+                      </not>
+                      <then>
+                        <start.cluster create-cluster="@{create-cluster}"/>
+                      </then>
+                      <else>
+			<waitfor>
+			    <http url="http://${container.host}:${glassfish.portbase.tenthousandsplace}0080"/>
+			</waitfor>
+                      </else>
+                    </if>
+                </then>
+                <else>
+                    <if>
+                        <equals arg1="@{create-domain}" 
+                                casesensitive="false" trim="true"
+                                arg2="true" />
+                        <then>
+			  <exec executable="${container.home}/bin/asadmin.bat"
+				failonerror="true">
+			      <arg line="create-domain"/>
+			      <arg line="--user ${glassfish.admin.user}"/>
+			      <arg line="--passwordfile ${glassfish.password.file}"/>
+			      <arg line="--portbase ${glassfish.portbase}"/>
+			      <arg line="${glassfish.custom.domain}"/>
+			  </exec>
+                        </then>
+                    </if>
+                    <exec executable="${container.home}/bin/asadmin.bat"
+                          spawn="true">
+                        <arg line="start-domain"/>
+                        <arg line="--user ${glassfish.admin.user}"/>
+                        <arg line="${glassfish.custom.domain}"/>
+                    </exec>
+                    <if>
+                      <not>
+                        <equals arg1="${force.no.cluster}" 
+                                casesensitive="false" trim="true"
+                                arg2="true" />
+                      </not>
+                      <then>
+                        <start.cluster create-cluster="@{create-cluster}"/>
+                      </then>
+                      <else>
+			<waitfor>
+			    <http url="http://${container.host}:${glassfish.portbase.tenthousandsplace}0080"/>
+			</waitfor>
+                      </else>
+                    </if>
+                </else>
+            </if>
+        </sequential>
+    </macrodef>
+
+    <macrodef name="start.cluster">
+        <attribute name="create-cluster" default="true"/>
+        <sequential>
+            <echo>
+
+"------------ Starting ${glassfish.cluster} ------------"
+
+            </echo>
+            <if>
+                <os family="unix"/>
+                <then>
+                    <if>
+                        <equals arg1="@{create-cluster}" 
+                                casesensitive="false" trim="true"
+                                arg2="true" />
+                        <then>
+			  <exec executable="${container.home}/bin/asadmin"
+				failonerror="true">
+			      <arg line="--port ${glassfish.custom.admin.port}"/>
+			      <arg line="create-cluster"/>
+			      <arg line="--systemproperties ASADMIN_LISTENER_PORT=${glassfish.cluster.admin.port}"/>
+			      <arg line="${glassfish.cluster}"/>
+			  </exec>
+
+			  <for list="${instance.numbers}" param="num" trim="true">
+			    <sequential>
+			      <exec executable="${container.home}/bin/asadmin"
+				    failonerror="true">
+				  <arg line="--port ${glassfish.custom.admin.port}"/>
+				  <arg line="create-local-instance"/>
+				  <arg line="--cluster ${glassfish.cluster}"/>
+				  <arg line="--systemproperties ASADMIN_LISTENER_PORT=@{num}${glassfish.admin.port}:HTTP_LISTENER_PORT=@{num}${container.port}:HTTP_SSL_LISTENER_PORT=@{num}${container.ssl.port}:JMS_PROVIDER_PORT=@{num}${container.jms.port}:IIOP_LISTENER_PORT=@{num}${container.iiop.port}:IIOP_SSL_LISTENER_PORT=@{num}${container.iiop.ssl.port}:IIOP_SSL_MUTUALAUTH_PORT=@{num}${container.iiop.ssl.mutualauth.port}:JMX_SYSTEM_CONNECTOR_PORT=@{num}${container.jmx.port}:GMS_BIND_INTERFACE_ADDRESS-${glassfis [...]
+				  <arg line="${glassfish.cluster}@{num}"/>
+			      </exec>
+			    </sequential>
+			  </for>
+                      </then>
+                    </if>
+                    <exec executable="${container.home}/bin/asadmin"
+                          failonerror="true">
+                        <arg line="--port ${glassfish.custom.admin.port}"/>
+                        <arg line="start-cluster"/>
+                        <arg line="${glassfish.cluster}"/>
+                    </exec>
+                    <for list="${instance.numbers}" param="num" trim="true">
+                      <sequential>
+			<waitfor>
+			    <http url="http://${container.host}:@{num}${container.port}"/>
+			</waitfor>
+                      </sequential>
+                    </for>
+                </then>
+                <else>
+                    <if>
+                        <equals arg1="@{create-cluster}" 
+                                casesensitive="false" trim="true"
+                                arg2="true" />
+                        <then>
+			<exec executable="${container.home}/bin/asadmin.bat"
+			      failonerror="true">
+			    <arg line="--port ${glassfish.custom.admin.port}"/>
+			    <arg line="create-cluster"/>
+			    <arg line="--systemproperties ASADMIN_LISTENER_PORT=${glassfish.cluster.admin.port}"/>
+			    <arg line="${glassfish.cluster}"/>
+			</exec>
+
+			<for list="${instance.numbers}" param="num" trim="true">
+			  <sequential>
+			    <exec executable="${container.home}/bin/asadmin.bat"
+				  failonerror="true">
+				<arg line="--port ${glassfish.custom.admin.port}"/>
+				<arg line="create-local-instance"/>
+				<arg line="--cluster ${glassfish.cluster}"/>
+				<arg line="--systemproperties ASADMIN_LISTENER_PORT=@{num}${glassfish.admin.port}:HTTP_LISTENER_PORT=@{num}${container.port}:HTTP_SSL_LISTENER_PORT=@{num}${container.ssl.port}:JMS_PROVIDER_PORT=@{num}${container.jms.port}:IIOP_LISTENER_PORT=@{num}${container.iiop.port}:IIOP_SSL_LISTENER_PORT=@{num}${container.iiop.ssl.port}:IIOP_SSL_MUTUALAUTH_PORT=@{num}${container.iiop.ssl.mutualauth.port}:JMX_SYSTEM_CONNECTOR_PORT=@{num}${container.jmx.port}:GMS_BIND_INTERFACE_ADDRESS-${glassfish. [...]
+				<arg line="${glassfish.cluster}@{num}"/>
+			    </exec>
+			  </sequential>
+			</for>
+                      </then>
+                    </if>
+                    <exec executable="${container.home}/bin/asadmin.bat"
+                          failonerror="true">
+                        <arg line="--port ${glassfish.custom.admin.port}"/>
+                        <arg line="start-cluster"/>
+                        <arg line="${glassfish.cluster}"/>
+                    </exec>
+                    <for list="${instance.numbers}" param="num" trim="true">
+                      <sequential>
+			<waitfor>
+			    <http url="http://${container.host}:@{num}${container.port}"/>
+			</waitfor>
+                      </sequential>
+                    </for>
+                </else>
+            </if>
+        </sequential>
+    </macrodef>
+
+    <macrodef name="debug.cluster">
+        <attribute name="create-cluster" default="true"/>
+        <sequential>
+            <echo>
+
+"------------ Starting ${glassfish.cluster} in debug mode ------------"
+
+            </echo>
+            <if>
+                <os family="unix"/>
+                <then>
+                    <if>
+                        <equals arg1="@{create-cluster}" 
+                                casesensitive="false" trim="true"
+                                arg2="true" />
+                        <then>
+                            <echo>
+
+"------------ Creating ${glassfish.cluster} ------------"
+
+                            </echo>
+			    <exec executable="${container.home}/bin/asadmin"
+				  failonerror="true">
+				<arg line="--port ${glassfish.custom.admin.port}"/>
+				<arg line="create-cluster"/>
+				<arg line="--systemproperties ASADMIN_LISTENER_PORT=${glassfish.cluster.admin.port}"/>
+				<arg line="${glassfish.cluster}"/>
+			    </exec>
+
+			    <for list="${instance.numbers}" param="num" trim="true">
+			      <sequential>
+                                <echo>
+
+"------------ Creating local instance ${glassfish.cluster}@{num} ------------"
+
+                                </echo>
+				<exec executable="${container.home}/bin/asadmin"
+				      failonerror="true">
+				    <arg line="--port ${glassfish.custom.admin.port}"/>
+				    <arg line="create-local-instance"/>
+				    <arg line="--cluster ${glassfish.cluster}"/>
+				    <arg line="--systemproperties JAVA_DEBUGGER_PORT=@{num}${container.debug.port}:ASADMIN_LISTENER_PORT=@{num}${glassfish.admin.port}:HTTP_LISTENER_PORT=@{num}${container.port}:HTTP_SSL_LISTENER_PORT=@{num}${container.ssl.port}:JMS_PROVIDER_PORT=@{num}${container.jms.port}:IIOP_LISTENER_PORT=@{num}${container.iiop.port}:IIOP_SSL_LISTENER_PORT=@{num}${container.iiop.ssl.port}:IIOP_SSL_MUTUALAUTH_PORT=@{num}${container.iiop.ssl.mutualauth.port}:JMX_SYSTEM_CONNECTOR_PORT=@{num}${contai [...]
+				    <arg line="${glassfish.cluster}@{num}"/>
+				</exec>
+			      </sequential>
+			    </for>
+                        </then>
+                    </if>
+                    <for list="${instance.numbers}" param="num" trim="true">
+                      <sequential>
+                       <echo>
+
+"------------ Starting local instance ${glassfish.cluster}@{num} with debug enabled ------------"
+
+                       </echo>
+                       <exec executable="${container.home}/bin/asadmin"
+       			           failonerror="true">
+				   <arg line="start-instance"/>
+				   <arg line="--user ${glassfish.admin.user}"/>
+				   <arg line="--passwordfile ${glassfish.password.file}"/>
+			           <arg line="--port ${glassfish.custom.admin.port}"/>
+                                   <arg line="--debug=true"/>
+			           <arg line="${glassfish.cluster}@{num}"/>
+                        </exec>
+			<waitfor>
+			    <http url="http://${container.host}:@{num}${container.port}"/>
+			</waitfor>
+                      </sequential>
+                    </for>
+                </then>
+                <else>
+                    <if>
+                        <equals arg1="@{create-cluster}" 
+                                casesensitive="false" trim="true"
+                                arg2="true" />
+                        <then>
+			    <exec executable="${container.home}/bin/asadmin.bat"
+				  failonerror="true">
+				<arg line="--port ${glassfish.custom.admin.port}"/>
+				<arg line="create-cluster"/>
+				<arg line="--systemproperties ASADMIN_LISTENER_PORT=${glassfish.cluster.admin.port}"/>
+				<arg line="${glassfish.cluster}"/>
+			    </exec>
+
+			    <for list="${instance.numbers}" param="num" trim="true">
+			      <sequential>
+				<exec executable="${container.home}/bin/asadmin.bat"
+				      failonerror="true">
+				    <arg line="--port ${glassfish.custom.admin.port}"/>
+				    <arg line="create-local-instance"/>
+				    <arg line="--cluster ${glassfish.cluster}"/>
+				    <arg line="--systemproperties ASADMIN_LISTENER_PORT=@{num}${glassfish.admin.port}:HTTP_LISTENER_PORT=@{num}${container.port}:HTTP_SSL_LISTENER_PORT=@{num}${container.ssl.port}:JMS_PROVIDER_PORT=@{num}${container.jms.port}:IIOP_LISTENER_PORT=@{num}${container.iiop.port}:IIOP_SSL_LISTENER_PORT=@{num}${container.iiop.ssl.port}:IIOP_SSL_MUTUALAUTH_PORT=@{num}${container.iiop.ssl.mutualauth.port}:JMX_SYSTEM_CONNECTOR_PORT=@{num}${container.jmx.port}:GMS_BIND_INTERFACE_ADDRESS-${glassf [...]
+				    <arg line="${glassfish.cluster}@{num}"/>
+				</exec>
+                                <exec executable="${container.home}/bin/asadmin.bat"
+       			           failonerror="true">
+	  			     <arg line="start-instance"/>
+				     <arg line="--user ${glassfish.admin.user}"/>
+				     <arg line="--passwordfile ${glassfish.password.file}"/>
+			             <arg line="--port ${glassfish.custom.admin.port}"/>
+                                     <arg line="--debug=true"/>
+			             <arg line="${glassfish.cluster}@{num}"/>
+                                </exec>
+			      </sequential>
+			    </for>
+                        </then>
+                    </if>
+                    <for list="${instance.numbers}" param="num" trim="true">
+                      <sequential>
+			<waitfor>
+			    <http url="http://${container.host}:@{num}${container.port}"/>
+			</waitfor>
+                      </sequential>
+                    </for>
+                </else>
+            </if>
+        </sequential>
+    </macrodef>
+
+    <macrodef name="stop.cluster">
+        <attribute name="create-cluster" default="true"/>
+        <sequential>
+            <echo>
+
+"------------ Stopping ${glassfish.cluster} ------------"
+
+            </echo>
+            <if>
+                <os family="unix"/>
+                <then>
+                    <exec executable="${container.home}/bin/asadmin" 
+                          failonerror="false">
+                        <arg line="--port ${glassfish.custom.admin.port}"/>
+                        <arg line="stop-cluster"/>
+                        <arg line="${glassfish.cluster}"/>
+                    </exec>
+                    <if>
+                        <equals arg1="@{create-cluster}" 
+                                casesensitive="false" trim="true"
+                                arg2="true" />
+                        <then>
+			    <for list="${instance.numbers}" param="num" trim="true">
+			      <sequential>
+				<exec executable="${container.home}/bin/asadmin"
+				      failonerror="false">
+				    <arg line="--port ${glassfish.custom.admin.port}"/>
+				    <arg line="delete-local-instance"/>
+				    <arg line="${glassfish.cluster}@{num}"/>
+				</exec>
+			      </sequential>
+			    </for>
+			    <exec executable="${container.home}/bin/asadmin"
+				  failonerror="false">
+				<arg line="--port ${glassfish.custom.admin.port}"/>
+				<arg line="delete-cluster"/>
+				<arg line="${glassfish.cluster}"/>
+			    </exec>
+                        </then>
+                    </if>
+                </then>
+                <else>
+                    <exec executable="${container.home}/bin/asadmin.bat"
+                          failonerror="false">
+                        <arg line="--port ${glassfish.custom.admin.port}"/>
+                        <arg line="stop-cluster"/>
+                        <arg line="${glassfish.cluster}"/>
+                    </exec>
+                    <if>
+                        <equals arg1="@{create-cluster}" 
+                                casesensitive="false" trim="true"
+                                arg2="true" />
+                        <then>
+			   <for list="${instance.numbers}" param="num" trim="true">
+			     <sequential>
+			       <exec executable="${container.home}/bin/asadmin.bat"
+				     failonerror="false">
+				   <arg line="--port ${glassfish.custom.admin.port}"/>
+				   <arg line="delete-local-instance"/>
+				   <arg line="${glassfish.cluster}@{num}"/>
+			       </exec>
+			     </sequential>
+			   </for>
+			   <exec executable="${container.home}/bin/asadmin.bat"
+				 failonerror="false">
+			       <arg line="--port ${glassfish.custom.admin.port}"/>
+			       <arg line="delete-cluster"/>
+			       <arg line="${glassfish.cluster}"/>
+			   </exec>
+                       </then>
+                    </if>
+		</else>
+            </if>
+        </sequential>
+    </macrodef>
+
+
+    <macrodef name="debug.domain">
+        <attribute name="create-domain" default="true"/>
+        <attribute name="create-cluster" default="true"/>
+        <sequential>
+            <echo>
+
+"------------ Starting ${glassfish.custom.domain} in debug mode------------"
+
+            </echo>
+            <if>
+                <os family="unix"/>
+                <then>
+                    <if>
+                        <equals arg1="@{create-domain}" 
+                                casesensitive="false" trim="true"
+                                arg2="true" />
+                        <then>
+			  <exec executable="${container.home}/bin/asadmin"
+				failonerror="true">
+			      <arg line="create-domain"/>
+			      <arg line="--user ${glassfish.admin.user}"/>
+			      <arg line="--passwordfile ${glassfish.password.file}"/>
+			      <arg line="--portbase ${glassfish.portbase}"/>
+			      <arg line="${glassfish.custom.domain}"/>
+			  </exec>
+                        </then>
+                    </if>
+                    <exec executable="${container.home}/bin/asadmin"
+                          failonerror="true">
+                        <arg line="start-domain"/>
+                        <arg line="--debug true"/>
+                        <arg line="--user ${glassfish.admin.user}"/>
+                        <arg line="${glassfish.custom.domain}"/>
+                    </exec>
+                    <if>
+                      <not>
+                        <equals arg1="${force.no.cluster}" 
+                                casesensitive="false" trim="true"
+                                arg2="true" />
+                      </not>
+                      <then>
+                        <debug.cluster create-cluster="@{create-cluster}"/>
+                      </then>
+                      <else>
+			<waitfor>
+			    <http url="http://${container.host}:${glassfish.portbase.tenthousandsplace}0080"/>
+			</waitfor>
+                      </else>
+                    </if>
+                </then>
+                <else>
+                    <if>
+                        <equals arg1="@{create-domain}" 
+                                casesensitive="false" trim="true"
+                                arg2="true" />
+                        <then>
+			  <exec executable="${container.home}/bin/asadmin.bat"
+				failonerror="true">
+			      <arg line="create-domain"/>
+			      <arg line="--user ${glassfish.admin.user}"/>
+			      <arg line="--passwordfile ${glassfish.password.file}"/>
+			      <arg line="--portbase ${glassfish.portbase}"/>
+			      <arg line="${glassfish.custom.domain}"/>
+			  </exec>
+                        </then>
+                    </if>
+                    <exec executable="${container.home}/bin/asadmin.bat"
+                          spawn="true">
+                        <arg line="start-domain"/>
+                        <arg line="--user ${glassfish.admin.user}"/>
+                        <arg line="${glassfish.custom.domain}"/>
+                    </exec>
+                    <if>
+                      <not>
+                        <equals arg1="${force.no.cluster}" 
+                                casesensitive="false" trim="true"
+                                arg2="true" />
+                      </not>
+                      <then>
+                        <debug.cluster create-cluster="@{create-cluster}"/>
+                      </then>
+                      <else>
+			<waitfor>
+			    <http url="http://${container.host}:${glassfish.portbase.tenthousandsplace}0080"/>
+			</waitfor>
+                      </else>
+                    </if>
+                </else>
+            </if>
+        </sequential>
+    </macrodef>
+
+    <macrodef name="stop.domain">
+        <attribute name="create-domain" default="true"/>
+        <attribute name="create-cluster" default="true"/>
+        <sequential>
+            <if>
+                <os family="unix"/>
+                <then>
+                    <if>
+                      <not>
+                        <equals arg1="${force.no.cluster}" 
+                                casesensitive="false" trim="true"
+                                arg2="true" />
+                      </not>
+                      <then>
+                        <stop.cluster create-cluster="@{create-cluster}"/>
+                      </then>
+                    </if>
+                    <echo>
+
+"------------ Stopping ${glassfish.custom.domain} ------------"
+
+                    </echo>
+                    <exec executable="${container.home}/bin/asadmin">
+                        <arg line="stop-domain"/>
+                        <arg line="${glassfish.custom.domain}"/>
+                    </exec>
+                    <if>
+                        <equals arg1="@{create-domain}" 
+                                casesensitive="false" trim="true"
+                                arg2="true" />
+                        <then>
+			  <exec executable="${container.home}/bin/asadmin">
+			      <arg line="delete-domain"/>
+			      <arg line="${glassfish.custom.domain}"/>
+			  </exec>
+                        </then>
+                    </if>
+                </then>
+                <else>
+                    <if>
+                      <not>
+                        <equals arg1="${force.no.cluster}" 
+                                casesensitive="false" trim="true"
+                                arg2="true" />
+                      </not>
+                      <then>
+                        <stop.cluster create-cluster="@{create-cluster}"/>
+                      </then>
+                    </if>
+                    <echo>
+
+"------------ Stopping ${glassfish.custom.domain} ------------"
+
+                    </echo>
+                    <exec executable="${container.home}/bin/asadmin.bat"
+                          spawn="true">
+                        <arg line="stop-domain"/>
+                        <arg line="${glassfish.custom.domain}"/>
+                    </exec>
+                    <if>
+                        <equals arg1="@{create-domain}" 
+                                casesensitive="false" trim="true"
+                                arg2="true" />
+                        <then>
+			  <exec executable="${container.home}/bin/asadmin.bat"
+				spawn="true">
+			      <arg line="delete-domain"/>
+			      <arg line="${glassfish.custom.domain}"/>
+			  </exec>
+                        </then>
+                    </if>
+                </else>
+            </if>
+        </sequential>
+    </macrodef>
+
+
+    <!-- ************ Compiler Defaults *************************************** -->
+
+
+    <!-- ************ Executable Targets ************************************** -->
+
+    <target name="main">
+    </target>
+
+    <target name="edburns">
+
+    <propertyregex override="true"
+                   property="groupPath" input="${groupId}"
+                   regexp="\." replace="/" global="true" />
+<echo>${groupId} ${groupPath}</echo>
+    </target>
+
+</project>
+
diff --git a/common/ant/wls_10_3_4_no_cluster/wls-jsf/pom.xml b/common/ant/wls_10_3_4_no_cluster/wls-jsf/pom.xml
new file mode 100644
index 0000000..19acd69
--- /dev/null
+++ b/common/ant/wls_10_3_4_no_cluster/wls-jsf/pom.xml
@@ -0,0 +1,95 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>com.oracle.faces</groupId>
+  <artifactId>${impl.name}</artifactId>
+  <version>${impl.version}</version>
+  <packaging>war</packaging>
+  <name>${impl.name}</name>
+
+  <build>
+   <pluginManagement>
+     <plugins>
+       <plugin>
+         <groupId>org.apache.maven.plugins</groupId>
+         <artifactId>maven-compiler-plugin</artifactId>
+         <configuration>
+           <source>1.5</source>
+           <target>1.5</target>
+         </configuration>
+       </plugin>
+       <plugin>
+	 <groupId>org.apache.maven.plugins</groupId>
+	 <artifactId>maven-war-plugin</artifactId>
+         <version>2.1-alpha-2</version>
+         <configuration>
+           <failOnMissingWebXml>false</failOnMissingWebXml>
+         </configuration>
+       </plugin>
+
+     </plugins>
+   </pluginManagement>
+  </build>
+
+  <dependencies>
+    <dependency>
+      <groupId>org.glassfish</groupId>
+      <artifactId>javax.faces</artifactId>
+      <version>${impl.version}</version>
+      <scope>compile</scope>
+    </dependency>
+    <dependency>
+      <groupId>jstl</groupId>
+      <artifactId>jstl</artifactId>
+      <version>1.2</version>
+      <scope>compile</scope>
+    </dependency>
+    <dependency>
+      <groupId>com.bea.faces</groupId>
+      <artifactId>wls.jsf.di</artifactId>
+      <version>2.0.4</version>
+      <scope>compile</scope>
+    </dependency>
+  </dependencies>
+</project>
diff --git a/common/ant/wls_10_3_4_no_cluster/wls-jsf/src/main/templates/weblogic.xml b/common/ant/wls_10_3_4_no_cluster/wls-jsf/src/main/templates/weblogic.xml
new file mode 100644
index 0000000..9ed8882
--- /dev/null
+++ b/common/ant/wls_10_3_4_no_cluster/wls-jsf/src/main/templates/weblogic.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<weblogic-web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.bea.com/ns/weblogic/weblogic-web-app.xsd" xmlns="http://www.bea.com/ns/weblogic/weblogic-web-app">
+  <library-ref>
+    <library-name>@impl.name@</library-name>
+    <specification-version>@spec.version@</specification-version>
+  </library-ref>
+</weblogic-web-app>
diff --git a/common/ant/wls_10_3_4_no_cluster/wls-jsf/src/main/webapp/WEB-INF/web.xml b/common/ant/wls_10_3_4_no_cluster/wls-jsf/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..c335333
--- /dev/null
+++ b/common/ant/wls_10_3_4_no_cluster/wls-jsf/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,7 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<web-app 
+        xmlns="http://java.sun.com/xml/ns/j2ee" 
+        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+        version="2.4">
+
+</web-app>
diff --git a/common/ant/wls_12_1_1_no_cluster/container.xml b/common/ant/wls_12_1_1_no_cluster/container.xml
new file mode 100644
index 0000000..c80c821
--- /dev/null
+++ b/common/ant/wls_12_1_1_no_cluster/container.xml
@@ -0,0 +1,1001 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project name="wls-12.1.1" basedir=".">
+
+<!-- 
+
+To start the server manually
+
+The admin console is at http://adc2110030:7001/console weblogic:weblogic1
+
+-->
+    <property name="container.xml.dir" 
+              value="${jsf.build.home}/common/ant/${container.name}" />
+
+    <property name="wl.username" value="weblogic"/>
+    <property name="wl.password" value="weblogic1"/>
+    <property name="wl.home" value="${container.home}/wlserver_12.1" />
+    <property name="wl.domain.home" value="${container.home}/user_projects/domains" />
+    <property name="wl.domain.name" value="base_domain" />
+    <property name="wl.admin.server.name" value="AdminServer" />
+    <property name="wl.log" value="${wl.domain.home}/${wl.domain.name}/${container.name}-${build.number}-${TSTAMP}.log" />
+    <property name="wl.jsf-api.jar_A" value="javax.jsf_1.0.0.0_2-1.jar" />
+    <property name="wl.jsf-api.jar_B" value="javax.jsf_1.0.0.0_2-0.jar" />
+    <property name="wl.jsf-impl.jar" value="glassfish.jsf_1.0.0.0_2-0-4.jar" />
+
+    <taskdef name="wlserver" 
+             classname="weblogic.ant.taskdefs.management.WLServer">
+        <classpath>
+            <pathelement
+                  location="${wl.home}/server/lib/weblogic.jar"/>
+        </classpath>
+      
+    </taskdef>
+    <taskdef name="wldeploy" 
+             classname="weblogic.ant.taskdefs.management.WLDeploy">
+        <classpath>
+            <pathelement
+                  location="${wl.home}/server/lib/weblogic.jar"/>
+        </classpath>
+      
+    </taskdef>
+
+    <!-- JARs that may be packaged in WEB-INF/lib
+  in order for the implementation to run
+  properly if they aren't availabe in the
+  container's classloader.
+
+  This is a comma separated list of fully
+  qualified JARs -->
+
+    <property name="webapp.jars" value=""/>
+
+    <property name="instance.numbers" value="1,2" />
+
+    <property name="glassfish.custom.domain" value="mojarra-domain" />
+    <property name="glassfish.cluster" value="mojarra-cluster" />
+    <property name="glassfish.custom.admin.port" value="60048" />
+    <property name="glassfish.cluster.admin.port" value="4949" />
+    <property name="glassfish.portbase.tenthousandsplace" value="6" />
+    <property name="glassfish.portbase" value="${glassfish.portbase.tenthousandsplace}0000" />
+    <property name="container.ssl.port" value="8181" />
+    <property name="container.jms.port" value="7676" />
+    <property name="container.iiop.port" value="3700" />
+    <property name="container.iiop.ssl.port" value="3820" />
+    <property name="container.iiop.ssl.mutualauth.port" value="3920" />
+    <property name="container.jmx.port" value="8686" />
+    <property name="container.gms.port" value="9490" />
+    <property name="container.debug.port" value="9009" />
+
+
+    <!-- Required Targets -->
+    <macrodef name="deploy.artifact">
+        <attribute name="artifact"
+                   description="The WAR to deploy"/>
+        <attribute name="appName"
+                   description="The name of the application"/>
+        <attribute name="use-virtual-servers"
+                   description="If true, deploy to the virtual servers."
+                   default="false"/>
+        <attribute name="waitforpath" default=""
+                   description="the path to test to determine if the deployment was successful" />
+        <sequential>
+            <echo>
+
+---------------- Deploying @{appName} ---------------- 
+
+            </echo>
+            <wldeploy action="deploy"
+                appversion="${impl.version.number}"
+                name="@{appName}"
+                password="${wl.password}"
+                user="${wl.username}"
+                source="@{artifact}"
+                verbose="true" 
+                adminurl="t3://${container.host}:${container.port}" />
+            <waitfor>
+              <http url="http://${container.host}:${container.port}/@{appName}/@{waitforpath}"/>
+            </waitfor>
+        </sequential>
+    </macrodef>
+
+    <macrodef name="deploydir.artifact">
+        <attribute name="explodedWarDir"
+                   description="The exploded war directory to deploy"/>
+        <attribute name="appName"
+                   description="The name of the application"/>
+        <sequential>
+          <fail message="this macro is unimplemented for this container" />
+        </sequential>
+    </macrodef>
+
+
+    <macrodef name="undeploy.artifact">
+        <attribute name="artifact"
+                   description="The WAR to deploy"/>
+        <attribute name="appName"
+                   description="The name of the application"/>
+        <sequential>
+            <echo>
+
+---------------- Undeploying @{appName} ---------------- 
+
+            </echo>
+            <wldeploy action="undeploy"
+                name="@{appName}"
+                password="${wl.password}"
+                user="${wl.username}"
+                verbose="true" debug="true" failonerror="false" 
+                adminurl="t3://${container.host}:${container.port}"/>
+
+        </sequential>
+    </macrodef>
+
+    <!-- Require target to display information about the build environment -->
+    <target name="props">
+        <echo message="PENDING - Please add a message"/>
+        <echo message="container.home->${container.home}" />
+        <echo message="javaee.jar->${container.home}/lib/javaee.jar" />
+    </target>
+
+    <target name="define.wls.properties">
+      <property name="wls.jsf.di.groupId" value="com/bea/faces" />
+      <property name="wls.jsf.di.artifactId" value="wls.jsf.di" />
+      <property name="wls.jsf.di.version" value="2.0.4" />
+      <property name="wls.jsf.di.path" value="${wls.jsf.di.groupId}/${wls.jsf.di.artifactId}/${wls.jsf.di.version}" />
+      <property name="wls.jsf.di.jar" value="${wls.jsf.di.path}/${wls.jsf.di.artifactId}-${wls.jsf.di.version}.jar" />
+      <property name="wls.jsf.di.url" value="http://hg.us.oracle.com/jsf/website/raw-file/43f22fe82eca/downloads/wls.jsf.di-2.0.4.jar"/>
+
+      <propertyregex override="true"
+                   property="groupPath" input="${groupId}"
+                   regexp="\." replace="/" global="true" />
+    </target>
+
+    <target name="container.deploy" depends="define.wls.properties"
+            description="Deploy the JSF Implementation artifacts to the target container.">
+
+      <ant antfile="build-pre-maven-rename.xml" dir="${api.dir}" 
+           target="main">
+          <property name="skip.javadoc.jar"  value="true" />
+      </ant>
+
+      <ant antfile="build-pre-maven-rename.xml" dir="${impl.dir}" 
+           target="main">
+          <property name="skip.javadoc.jar"  value="true" />
+      </ant>
+
+      <delete dir="${container.xml.dir}/target" failonerror="false" />
+     
+      <!-- repackage the api jar -->
+      <mkdir dir="${container.xml.dir}/target" />
+      <mkdir dir="${container.xml.dir}/target/jsf-api" />
+      <unzip src="${api.dir}/build.pre-maven-rename/lib/jsf-api.jar"
+             dest="${container.xml.dir}/target/jsf-api" />
+      <delete dir="${container.xml.dir}/target/jsf-api/META-INF" />
+      <zip destfile="${container.home}/modules/javax.jsf_1.0.0.0_2-0.jar" 
+           basedir="${container.xml.dir}/target/jsf-api" 
+           update="true" />
+
+      <!-- repackage the impl jar -->
+      <mkdir dir="${container.xml.dir}/target" />
+      <mkdir dir="${container.xml.dir}/target/jsf-impl" />
+      <unzip src="${impl.dir}/build.pre-maven-rename/lib/jsf-impl.jar"
+             dest="${container.xml.dir}/target/jsf-impl" />
+      <delete dir="${container.xml.dir}/target/jsf-impl/META-INF" />
+      <zip destfile="${container.home}/modules/glassfish.jsf_1.0.0.0_2-0-4.jar" 
+           basedir="${container.xml.dir}/target/jsf-impl" 
+           update="true" />
+
+
+    </target>
+
+    <target name="container.deploy.test.dependencies" 
+            description="Deploy the extra test dependencies to the target container.">
+    </target>
+
+
+    <target name="container.start"
+            description="Start the WebLogic container">
+        <var name="create-domain-value" value="true" />
+        <var name="create-cluster-value" value="true" />
+        <if>
+          <equals arg1="${create-domain}" 
+                  casesensitive="false" trim="true"
+                  arg2="false" />
+          <then>
+            <var name="create-domain-value" value="false" />
+          </then>
+        </if>
+        <if>
+          <equals arg1="${create-cluster}" 
+                  casesensitive="false" trim="true"
+                  arg2="false" />
+          <then>
+            <var name="create-cluster-value" value="false" />
+          </then>
+        </if>
+        <echo>
+--------- Starting container
+        </echo>
+        <container.start create-domain="${create-domain-value}"
+                         create-cluster="${create-cluster-value}"/>
+    </target>
+
+    <target name="container.debug"
+            description="Start the WebLogic container in debug mode">
+        <var name="create-domain-value" value="true" />
+        <var name="create-cluster-value" value="true" />
+        <if>
+          <equals arg1="${create-domain}" 
+                  casesensitive="false" trim="true"
+                  arg2="false" />
+          <then>
+            <var name="create-domain-value" value="false" />
+          </then>
+        </if>
+        <if>
+          <equals arg1="${create-cluster}" 
+                  casesensitive="false" trim="true"
+                  arg2="false" />
+          <then>
+            <var name="create-cluster-value" value="false" />
+          </then>
+        </if>
+        <echo>
+--------- Starting container in debug mode, create-domain: ${create-domain-value} create-cluster: ${create-cluster-value}
+        </echo>
+        <container.debug create-domain="${create-domain-value}"
+                         create-cluster="${create-cluster-value}"/>
+    </target>
+
+    <target name="container.stop"
+            description="Stop the WebLogic container">
+        <var name="create-domain-value" value="true" />
+        <var name="create-cluster-value" value="true" />
+        <if>
+          <equals arg1="${create-domain}" 
+                  casesensitive="false" trim="true"
+                  arg2="false" />
+          <then>
+            <var name="create-domain-value" value="false" />
+          </then>
+        </if>
+        <if>
+          <equals arg1="${create-cluster}" 
+                  casesensitive="false" trim="true"
+                  arg2="false" />
+          <then>
+            <var name="create-cluster-value" value="false" />
+          </then>
+        </if>
+        <echo>
+--------- Stopping container, create-domain: ${create-domain-value} create-cluster: ${create-cluster-value}
+        </echo>
+        <container.stop create-domain="${create-domain-value}"
+                        create-cluster="${create-cluster-value}"/>
+    </target>
+
+    <target name="container.restart"
+            description="Stop the WebLogic container">
+        <container.stop/>
+        <container.start/>
+    </target>
+
+    <target name="define.scenario.aware.port">
+      <property name="scenario.aware.port" value="${container.port}" />
+      <echo message="scenario.aware.port = ${scenario.aware.port}" />
+
+      <var name="force.no.cluster" value="true" />
+      <echo message="force.no.cluster = ${force.no.cluster}" />
+    </target>
+
+    <target name="define.virtual-server.aware.port">
+      <property name="scenario.aware.port" value="${container.port}" />
+      <echo message="scenario.aware.port = ${scenario.aware.port}" />
+
+      <var name="force.no.cluster" value="true" />
+      <echo message="force.no.cluster = ${force.no.cluster}" />
+    </target>
+
+
+    <macrodef name="container.start"
+            description="Start the WebLogic container">
+        <attribute name="create-domain" default="true"/>
+        <attribute name="create-cluster" default="true"/>
+        <attribute name="dir" default="${container.home}/user_projects/domains/base_domain/bin" />
+        <sequential>
+          <echo>Starting ${container.name}</echo>
+          <!-- windows or unix java exec invocation -->
+          <condition property="exec.name" value="cmd.exe /c">
+              <os family="windows"/>
+          </condition>
+          <condition property="exec.name" value="nohup">
+              <os family="unix"/>
+          </condition>
+          <condition property="exec.name" value="nohup">
+              <os family="unix"/>
+          </condition>
+          <condition property="exec.arg.1"
+                     value="@{dir}/startWebLogic.bat">
+              <os family="windows"/>
+          </condition>
+          <property name="exec.arg.1"  value="@{dir}/startWebLogic.sh" />
+          <echo message="redirecting log output to ${wl.log}" />
+          <exec spawn="true" executable="${exec.name}">
+              <arg line="${exec.arg.1}"/>
+              <env key="WLS_REDIRECT_LOG"
+                   value="${wl.log}" />
+          </exec>
+        </sequential>
+    </macrodef>
+
+    <macrodef name="container.debug"
+            description="Start the WebLogic container in debug mode">
+        <attribute name="create-domain" default="true"/>
+        <attribute name="create-cluster" default="true"/>
+        <attribute name="dir" default="${container.home}/user_projects/domains/base_domain/bin" />
+      <sequential>
+        <echo>
+Unable to start ${container.name} in debug mode from ant.  
+You must manually edit setDomainEnv.sh and include the line
+
+debugFlag="true"
+
+right around line 344, before the line 
+
+if [ "${debugFlag}" = "true" ] ; then
+
+and manually start the container with ./startWebLogic.sh.
+
+        </echo>
+        <fail />
+      </sequential>
+    </macrodef>
+
+
+    <macrodef name="container.stop"
+            description="Stop the WebLogic container">
+        <attribute name="create-domain" default="true"/>
+        <attribute name="create-cluster" default="true"/>
+        <attribute name="dir" default="${container.home}/user_projects/domains/base_domain/bin" />
+        <sequential>
+          <echo>Stopping ${container.name}</echo>
+          <if>
+            <os family="windows"/>
+              <then>
+                <property name="stopWebLogic" value="@{dir}/stopWebLogic.bat"/>
+              </then>
+              <else>
+               <property name="stopWebLogic" value="@{dir}/stopWebLogic.sh"/>
+              </else>
+            </if>
+            <exec os="SunOS" dir="@{dir}"
+                  executable="${stopWebLogic}">
+            </exec>
+            <exec os="Linux" dir="@{dir}"
+                  executable="${stopWebLogic}">
+            </exec>
+            <exec osfamily="windows" dir="@{dir}" 
+                  executable="${stopWebLogic}">
+            </exec>
+            <exec os="Mac OS X" dir="@{dir}" 
+                  executable="${stopWebLogic}">
+            </exec>
+        </sequential>    
+    </macrodef>
+
+    <!-- 'PRIVATE' targets -->
+    <macrodef name="start.domain">
+        <attribute name="create-domain" default="true"/>
+        <attribute name="create-cluster" default="true"/>
+
+        <sequential>
+            <echo>
+
+"------------ Starting ${glassfish.custom.domain} force.no.cluster ${force.no.cluster} ------------"
+
+            </echo>
+            <if>
+                <os family="unix"/>
+                <then>
+                    <if>
+                        <equals arg1="@{create-domain}" 
+                                casesensitive="false" trim="true"
+                                arg2="true" />
+                        <then>
+			  <exec executable="${container.home}/bin/asadmin"
+				failonerror="true">
+			      <arg line="create-domain"/>
+			      <arg line="--user ${glassfish.admin.user}"/>
+			      <arg line="--passwordfile ${glassfish.password.file}"/>
+			      <arg line="--portbase ${glassfish.portbase}"/>
+			      <arg line="${glassfish.custom.domain}"/>
+			  </exec>
+                        </then>
+                    </if>
+                    <exec executable="${container.home}/bin/asadmin"
+                          failonerror="true">
+                        <arg line="start-domain"/>
+                        <arg line="--user ${glassfish.admin.user}"/>
+                        <arg line="${glassfish.custom.domain}"/>
+                    </exec>
+                    <if>
+                      <not>
+                        <equals arg1="${force.no.cluster}" 
+                                casesensitive="false" trim="true"
+                                arg2="true" />
+                      </not>
+                      <then>
+                        <start.cluster create-cluster="@{create-cluster}"/>
+                      </then>
+                      <else>
+			<waitfor>
+			    <http url="http://${container.host}:${glassfish.portbase.tenthousandsplace}0080"/>
+			</waitfor>
+                      </else>
+                    </if>
+                </then>
+                <else>
+                    <if>
+                        <equals arg1="@{create-domain}" 
+                                casesensitive="false" trim="true"
+                                arg2="true" />
+                        <then>
+			  <exec executable="${container.home}/bin/asadmin.bat"
+				failonerror="true">
+			      <arg line="create-domain"/>
+			      <arg line="--user ${glassfish.admin.user}"/>
+			      <arg line="--passwordfile ${glassfish.password.file}"/>
+			      <arg line="--portbase ${glassfish.portbase}"/>
+			      <arg line="${glassfish.custom.domain}"/>
+			  </exec>
+                        </then>
+                    </if>
+                    <exec executable="${container.home}/bin/asadmin.bat"
+                          spawn="true">
+                        <arg line="start-domain"/>
+                        <arg line="--user ${glassfish.admin.user}"/>
+                        <arg line="${glassfish.custom.domain}"/>
+                    </exec>
+                    <if>
+                      <not>
+                        <equals arg1="${force.no.cluster}" 
+                                casesensitive="false" trim="true"
+                                arg2="true" />
+                      </not>
+                      <then>
+                        <start.cluster create-cluster="@{create-cluster}"/>
+                      </then>
+                      <else>
+			<waitfor>
+			    <http url="http://${container.host}:${glassfish.portbase.tenthousandsplace}0080"/>
+			</waitfor>
+                      </else>
+                    </if>
+                </else>
+            </if>
+        </sequential>
+    </macrodef>
+
+    <macrodef name="start.cluster">
+        <attribute name="create-cluster" default="true"/>
+        <sequential>
+            <echo>
+
+"------------ Starting ${glassfish.cluster} ------------"
+
+            </echo>
+            <if>
+                <os family="unix"/>
+                <then>
+                    <if>
+                        <equals arg1="@{create-cluster}" 
+                                casesensitive="false" trim="true"
+                                arg2="true" />
+                        <then>
+			  <exec executable="${container.home}/bin/asadmin"
+				failonerror="true">
+			      <arg line="--port ${glassfish.custom.admin.port}"/>
+			      <arg line="create-cluster"/>
+			      <arg line="--systemproperties ASADMIN_LISTENER_PORT=${glassfish.cluster.admin.port}"/>
+			      <arg line="${glassfish.cluster}"/>
+			  </exec>
+
+			  <for list="${instance.numbers}" param="num" trim="true">
+			    <sequential>
+			      <exec executable="${container.home}/bin/asadmin"
+				    failonerror="true">
+				  <arg line="--port ${glassfish.custom.admin.port}"/>
+				  <arg line="create-local-instance"/>
+				  <arg line="--cluster ${glassfish.cluster}"/>
+				  <arg line="--systemproperties ASADMIN_LISTENER_PORT=@{num}${glassfish.admin.port}:HTTP_LISTENER_PORT=@{num}${container.port}:HTTP_SSL_LISTENER_PORT=@{num}${container.ssl.port}:JMS_PROVIDER_PORT=@{num}${container.jms.port}:IIOP_LISTENER_PORT=@{num}${container.iiop.port}:IIOP_SSL_LISTENER_PORT=@{num}${container.iiop.ssl.port}:IIOP_SSL_MUTUALAUTH_PORT=@{num}${container.iiop.ssl.mutualauth.port}:JMX_SYSTEM_CONNECTOR_PORT=@{num}${container.jmx.port}:GMS_BIND_INTERFACE_ADDRESS-${glassfis [...]
+				  <arg line="${glassfish.cluster}@{num}"/>
+			      </exec>
+			    </sequential>
+			  </for>
+                      </then>
+                    </if>
+                    <exec executable="${container.home}/bin/asadmin"
+                          failonerror="true">
+                        <arg line="--port ${glassfish.custom.admin.port}"/>
+                        <arg line="start-cluster"/>
+                        <arg line="${glassfish.cluster}"/>
+                    </exec>
+                    <for list="${instance.numbers}" param="num" trim="true">
+                      <sequential>
+			<waitfor>
+			    <http url="http://${container.host}:@{num}${container.port}"/>
+			</waitfor>
+                      </sequential>
+                    </for>
+                </then>
+                <else>
+                    <if>
+                        <equals arg1="@{create-cluster}" 
+                                casesensitive="false" trim="true"
+                                arg2="true" />
+                        <then>
+			<exec executable="${container.home}/bin/asadmin.bat"
+			      failonerror="true">
+			    <arg line="--port ${glassfish.custom.admin.port}"/>
+			    <arg line="create-cluster"/>
+			    <arg line="--systemproperties ASADMIN_LISTENER_PORT=${glassfish.cluster.admin.port}"/>
+			    <arg line="${glassfish.cluster}"/>
+			</exec>
+
+			<for list="${instance.numbers}" param="num" trim="true">
+			  <sequential>
+			    <exec executable="${container.home}/bin/asadmin.bat"
+				  failonerror="true">
+				<arg line="--port ${glassfish.custom.admin.port}"/>
+				<arg line="create-local-instance"/>
+				<arg line="--cluster ${glassfish.cluster}"/>
+				<arg line="--systemproperties ASADMIN_LISTENER_PORT=@{num}${glassfish.admin.port}:HTTP_LISTENER_PORT=@{num}${container.port}:HTTP_SSL_LISTENER_PORT=@{num}${container.ssl.port}:JMS_PROVIDER_PORT=@{num}${container.jms.port}:IIOP_LISTENER_PORT=@{num}${container.iiop.port}:IIOP_SSL_LISTENER_PORT=@{num}${container.iiop.ssl.port}:IIOP_SSL_MUTUALAUTH_PORT=@{num}${container.iiop.ssl.mutualauth.port}:JMX_SYSTEM_CONNECTOR_PORT=@{num}${container.jmx.port}:GMS_BIND_INTERFACE_ADDRESS-${glassfish. [...]
+				<arg line="${glassfish.cluster}@{num}"/>
+			    </exec>
+			  </sequential>
+			</for>
+                      </then>
+                    </if>
+                    <exec executable="${container.home}/bin/asadmin.bat"
+                          failonerror="true">
+                        <arg line="--port ${glassfish.custom.admin.port}"/>
+                        <arg line="start-cluster"/>
+                        <arg line="${glassfish.cluster}"/>
+                    </exec>
+                    <for list="${instance.numbers}" param="num" trim="true">
+                      <sequential>
+			<waitfor>
+			    <http url="http://${container.host}:@{num}${container.port}"/>
+			</waitfor>
+                      </sequential>
+                    </for>
+                </else>
+            </if>
+        </sequential>
+    </macrodef>
+
+    <macrodef name="debug.cluster">
+        <attribute name="create-cluster" default="true"/>
+        <sequential>
+            <echo>
+
+"------------ Starting ${glassfish.cluster} in debug mode ------------"
+
+            </echo>
+            <if>
+                <os family="unix"/>
+                <then>
+                    <if>
+                        <equals arg1="@{create-cluster}" 
+                                casesensitive="false" trim="true"
+                                arg2="true" />
+                        <then>
+                            <echo>
+
+"------------ Creating ${glassfish.cluster} ------------"
+
+                            </echo>
+			    <exec executable="${container.home}/bin/asadmin"
+				  failonerror="true">
+				<arg line="--port ${glassfish.custom.admin.port}"/>
+				<arg line="create-cluster"/>
+				<arg line="--systemproperties ASADMIN_LISTENER_PORT=${glassfish.cluster.admin.port}"/>
+				<arg line="${glassfish.cluster}"/>
+			    </exec>
+
+			    <for list="${instance.numbers}" param="num" trim="true">
+			      <sequential>
+                                <echo>
+
+"------------ Creating local instance ${glassfish.cluster}@{num} ------------"
+
+                                </echo>
+				<exec executable="${container.home}/bin/asadmin"
+				      failonerror="true">
+				    <arg line="--port ${glassfish.custom.admin.port}"/>
+				    <arg line="create-local-instance"/>
+				    <arg line="--cluster ${glassfish.cluster}"/>
+				    <arg line="--systemproperties JAVA_DEBUGGER_PORT=@{num}${container.debug.port}:ASADMIN_LISTENER_PORT=@{num}${glassfish.admin.port}:HTTP_LISTENER_PORT=@{num}${container.port}:HTTP_SSL_LISTENER_PORT=@{num}${container.ssl.port}:JMS_PROVIDER_PORT=@{num}${container.jms.port}:IIOP_LISTENER_PORT=@{num}${container.iiop.port}:IIOP_SSL_LISTENER_PORT=@{num}${container.iiop.ssl.port}:IIOP_SSL_MUTUALAUTH_PORT=@{num}${container.iiop.ssl.mutualauth.port}:JMX_SYSTEM_CONNECTOR_PORT=@{num}${contai [...]
+				    <arg line="${glassfish.cluster}@{num}"/>
+				</exec>
+			      </sequential>
+			    </for>
+                        </then>
+                    </if>
+                    <for list="${instance.numbers}" param="num" trim="true">
+                      <sequential>
+                       <echo>
+
+"------------ Starting local instance ${glassfish.cluster}@{num} with debug enabled ------------"
+
+                       </echo>
+                       <exec executable="${container.home}/bin/asadmin"
+       			           failonerror="true">
+				   <arg line="start-instance"/>
+				   <arg line="--user ${glassfish.admin.user}"/>
+				   <arg line="--passwordfile ${glassfish.password.file}"/>
+			           <arg line="--port ${glassfish.custom.admin.port}"/>
+                                   <arg line="--debug=true"/>
+			           <arg line="${glassfish.cluster}@{num}"/>
+                        </exec>
+			<waitfor>
+			    <http url="http://${container.host}:@{num}${container.port}"/>
+			</waitfor>
+                      </sequential>
+                    </for>
+                </then>
+                <else>
+                    <if>
+                        <equals arg1="@{create-cluster}" 
+                                casesensitive="false" trim="true"
+                                arg2="true" />
+                        <then>
+			    <exec executable="${container.home}/bin/asadmin.bat"
+				  failonerror="true">
+				<arg line="--port ${glassfish.custom.admin.port}"/>
+				<arg line="create-cluster"/>
+				<arg line="--systemproperties ASADMIN_LISTENER_PORT=${glassfish.cluster.admin.port}"/>
+				<arg line="${glassfish.cluster}"/>
+			    </exec>
+
+			    <for list="${instance.numbers}" param="num" trim="true">
+			      <sequential>
+				<exec executable="${container.home}/bin/asadmin.bat"
+				      failonerror="true">
+				    <arg line="--port ${glassfish.custom.admin.port}"/>
+				    <arg line="create-local-instance"/>
+				    <arg line="--cluster ${glassfish.cluster}"/>
+				    <arg line="--systemproperties ASADMIN_LISTENER_PORT=@{num}${glassfish.admin.port}:HTTP_LISTENER_PORT=@{num}${container.port}:HTTP_SSL_LISTENER_PORT=@{num}${container.ssl.port}:JMS_PROVIDER_PORT=@{num}${container.jms.port}:IIOP_LISTENER_PORT=@{num}${container.iiop.port}:IIOP_SSL_LISTENER_PORT=@{num}${container.iiop.ssl.port}:IIOP_SSL_MUTUALAUTH_PORT=@{num}${container.iiop.ssl.mutualauth.port}:JMX_SYSTEM_CONNECTOR_PORT=@{num}${container.jmx.port}:GMS_BIND_INTERFACE_ADDRESS-${glassf [...]
+				    <arg line="${glassfish.cluster}@{num}"/>
+				</exec>
+                                <exec executable="${container.home}/bin/asadmin.bat"
+       			           failonerror="true">
+	  			     <arg line="start-instance"/>
+				     <arg line="--user ${glassfish.admin.user}"/>
+				     <arg line="--passwordfile ${glassfish.password.file}"/>
+			             <arg line="--port ${glassfish.custom.admin.port}"/>
+                                     <arg line="--debug=true"/>
+			             <arg line="${glassfish.cluster}@{num}"/>
+                                </exec>
+			      </sequential>
+			    </for>
+                        </then>
+                    </if>
+                    <for list="${instance.numbers}" param="num" trim="true">
+                      <sequential>
+			<waitfor>
+			    <http url="http://${container.host}:@{num}${container.port}"/>
+			</waitfor>
+                      </sequential>
+                    </for>
+                </else>
+            </if>
+        </sequential>
+    </macrodef>
+
+    <macrodef name="stop.cluster">
+        <attribute name="create-cluster" default="true"/>
+        <sequential>
+            <echo>
+
+"------------ Stopping ${glassfish.cluster} ------------"
+
+            </echo>
+            <if>
+                <os family="unix"/>
+                <then>
+                    <exec executable="${container.home}/bin/asadmin" 
+                          failonerror="false">
+                        <arg line="--port ${glassfish.custom.admin.port}"/>
+                        <arg line="stop-cluster"/>
+                        <arg line="${glassfish.cluster}"/>
+                    </exec>
+                    <if>
+                        <equals arg1="@{create-cluster}" 
+                                casesensitive="false" trim="true"
+                                arg2="true" />
+                        <then>
+			    <for list="${instance.numbers}" param="num" trim="true">
+			      <sequential>
+				<exec executable="${container.home}/bin/asadmin"
+				      failonerror="false">
+				    <arg line="--port ${glassfish.custom.admin.port}"/>
+				    <arg line="delete-local-instance"/>
+				    <arg line="${glassfish.cluster}@{num}"/>
+				</exec>
+			      </sequential>
+			    </for>
+			    <exec executable="${container.home}/bin/asadmin"
+				  failonerror="false">
+				<arg line="--port ${glassfish.custom.admin.port}"/>
+				<arg line="delete-cluster"/>
+				<arg line="${glassfish.cluster}"/>
+			    </exec>
+                        </then>
+                    </if>
+                </then>
+                <else>
+                    <exec executable="${container.home}/bin/asadmin.bat"
+                          failonerror="false">
+                        <arg line="--port ${glassfish.custom.admin.port}"/>
+                        <arg line="stop-cluster"/>
+                        <arg line="${glassfish.cluster}"/>
+                    </exec>
+                    <if>
+                        <equals arg1="@{create-cluster}" 
+                                casesensitive="false" trim="true"
+                                arg2="true" />
+                        <then>
+			   <for list="${instance.numbers}" param="num" trim="true">
+			     <sequential>
+			       <exec executable="${container.home}/bin/asadmin.bat"
+				     failonerror="false">
+				   <arg line="--port ${glassfish.custom.admin.port}"/>
+				   <arg line="delete-local-instance"/>
+				   <arg line="${glassfish.cluster}@{num}"/>
+			       </exec>
+			     </sequential>
+			   </for>
+			   <exec executable="${container.home}/bin/asadmin.bat"
+				 failonerror="false">
+			       <arg line="--port ${glassfish.custom.admin.port}"/>
+			       <arg line="delete-cluster"/>
+			       <arg line="${glassfish.cluster}"/>
+			   </exec>
+                       </then>
+                    </if>
+		</else>
+            </if>
+        </sequential>
+    </macrodef>
+
+
+    <macrodef name="debug.domain">
+        <attribute name="create-domain" default="true"/>
+        <attribute name="create-cluster" default="true"/>
+        <sequential>
+            <echo>
+
+"------------ Starting ${glassfish.custom.domain} in debug mode------------"
+
+            </echo>
+            <if>
+                <os family="unix"/>
+                <then>
+                    <if>
+                        <equals arg1="@{create-domain}" 
+                                casesensitive="false" trim="true"
+                                arg2="true" />
+                        <then>
+			  <exec executable="${container.home}/bin/asadmin"
+				failonerror="true">
+			      <arg line="create-domain"/>
+			      <arg line="--user ${glassfish.admin.user}"/>
+			      <arg line="--passwordfile ${glassfish.password.file}"/>
+			      <arg line="--portbase ${glassfish.portbase}"/>
+			      <arg line="${glassfish.custom.domain}"/>
+			  </exec>
+                        </then>
+                    </if>
+                    <exec executable="${container.home}/bin/asadmin"
+                          failonerror="true">
+                        <arg line="start-domain"/>
+                        <arg line="--debug true"/>
+                        <arg line="--user ${glassfish.admin.user}"/>
+                        <arg line="${glassfish.custom.domain}"/>
+                    </exec>
+                    <if>
+                      <not>
+                        <equals arg1="${force.no.cluster}" 
+                                casesensitive="false" trim="true"
+                                arg2="true" />
+                      </not>
+                      <then>
+                        <debug.cluster create-cluster="@{create-cluster}"/>
+                      </then>
+                      <else>
+			<waitfor>
+			    <http url="http://${container.host}:${glassfish.portbase.tenthousandsplace}0080"/>
+			</waitfor>
+                      </else>
+                    </if>
+                </then>
+                <else>
+                    <if>
+                        <equals arg1="@{create-domain}" 
+                                casesensitive="false" trim="true"
+                                arg2="true" />
+                        <then>
+			  <exec executable="${container.home}/bin/asadmin.bat"
+				failonerror="true">
+			      <arg line="create-domain"/>
+			      <arg line="--user ${glassfish.admin.user}"/>
+			      <arg line="--passwordfile ${glassfish.password.file}"/>
+			      <arg line="--portbase ${glassfish.portbase}"/>
+			      <arg line="${glassfish.custom.domain}"/>
+			  </exec>
+                        </then>
+                    </if>
+                    <exec executable="${container.home}/bin/asadmin.bat"
+                          spawn="true">
+                        <arg line="start-domain"/>
+                        <arg line="--user ${glassfish.admin.user}"/>
+                        <arg line="${glassfish.custom.domain}"/>
+                    </exec>
+                    <if>
+                      <not>
+                        <equals arg1="${force.no.cluster}" 
+                                casesensitive="false" trim="true"
+                                arg2="true" />
+                      </not>
+                      <then>
+                        <debug.cluster create-cluster="@{create-cluster}"/>
+                      </then>
+                      <else>
+			<waitfor>
+			    <http url="http://${container.host}:${glassfish.portbase.tenthousandsplace}0080"/>
+			</waitfor>
+                      </else>
+                    </if>
+                </else>
+            </if>
+        </sequential>
+    </macrodef>
+
+    <macrodef name="stop.domain">
+        <attribute name="create-domain" default="true"/>
+        <attribute name="create-cluster" default="true"/>
+        <sequential>
+            <if>
+                <os family="unix"/>
+                <then>
+                    <if>
+                      <not>
+                        <equals arg1="${force.no.cluster}" 
+                                casesensitive="false" trim="true"
+                                arg2="true" />
+                      </not>
+                      <then>
+                        <stop.cluster create-cluster="@{create-cluster}"/>
+                      </then>
+                    </if>
+                    <echo>
+
+"------------ Stopping ${glassfish.custom.domain} ------------"
+
+                    </echo>
+                    <exec executable="${container.home}/bin/asadmin">
+                        <arg line="stop-domain"/>
+                        <arg line="${glassfish.custom.domain}"/>
+                    </exec>
+                    <if>
+                        <equals arg1="@{create-domain}" 
+                                casesensitive="false" trim="true"
+                                arg2="true" />
+                        <then>
+			  <exec executable="${container.home}/bin/asadmin">
+			      <arg line="delete-domain"/>
+			      <arg line="${glassfish.custom.domain}"/>
+			  </exec>
+                        </then>
+                    </if>
+                </then>
+                <else>
+                    <if>
+                      <not>
+                        <equals arg1="${force.no.cluster}" 
+                                casesensitive="false" trim="true"
+                                arg2="true" />
+                      </not>
+                      <then>
+                        <stop.cluster create-cluster="@{create-cluster}"/>
+                      </then>
+                    </if>
+                    <echo>
+
+"------------ Stopping ${glassfish.custom.domain} ------------"
+
+                    </echo>
+                    <exec executable="${container.home}/bin/asadmin.bat"
+                          spawn="true">
+                        <arg line="stop-domain"/>
+                        <arg line="${glassfish.custom.domain}"/>
+                    </exec>
+                    <if>
+                        <equals arg1="@{create-domain}" 
+                                casesensitive="false" trim="true"
+                                arg2="true" />
+                        <then>
+			  <exec executable="${container.home}/bin/asadmin.bat"
+				spawn="true">
+			      <arg line="delete-domain"/>
+			      <arg line="${glassfish.custom.domain}"/>
+			  </exec>
+                        </then>
+                    </if>
+                </else>
+            </if>
+        </sequential>
+    </macrodef>
+
+
+    <!-- ************ Compiler Defaults *************************************** -->
+
+
+    <!-- ************ Executable Targets ************************************** -->
+
+    <target name="main">
+    </target>
+
+    <target name="edburns">
+
+    <propertyregex override="true"
+                   property="groupPath" input="${groupId}"
+                   regexp="\." replace="/" global="true" />
+<echo>${groupId} ${groupPath}</echo>
+    </target>
+
+</project>
+
diff --git a/common/ant/wls_12_1_1_no_cluster_library_war/container.xml b/common/ant/wls_12_1_1_no_cluster_library_war/container.xml
new file mode 100644
index 0000000..9c3b02b
--- /dev/null
+++ b/common/ant/wls_12_1_1_no_cluster_library_war/container.xml
@@ -0,0 +1,1165 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project name="wls-12.1.1" basedir=".">
+
+<!-- 
+
+To start the server manually
+
+The admin console is at http://adc2110030:7001/console weblogic:weblogic1
+
+-->
+
+    <property name="wl.username" value="weblogic"/>
+    <property name="wl.password" value="weblogic1"/>
+    <property name="wl.home" value="${container.home}/wlserver_12.1" />
+    <property name="wl.domain.home" value="${container.home}/user_projects/domains" />
+    <property name="wl.domain.name" value="base_domain" />
+    <property name="wl.admin.server.name" value="AdminServer" />
+    <property name="wl.log" value="${wl.domain.home}/${wl.domain.name}/${container.name}-${build.number}-${TSTAMP}.log" />
+    <property name="wl.jsf-api.jar_A" value="javax.jsf_1.0.0.0_2-1.jar" />
+    <property name="wl.jsf-api.jar_B" value="javax.jsf_1.0.0.0_2-0.jar" />
+    <property name="wl.jsf-impl.jar" value="glassfish.jsf_1.0.0.0_2-0-4.jar" />
+
+    <taskdef name="wlserver" 
+             classname="weblogic.ant.taskdefs.management.WLServer">
+        <classpath>
+            <pathelement
+                  location="${wl.home}/server/lib/weblogic.jar"/>
+        </classpath>
+      
+    </taskdef>
+    <taskdef name="wldeploy" 
+             classname="weblogic.ant.taskdefs.management.WLDeploy">
+        <classpath>
+            <pathelement
+                  location="${wl.home}/server/lib/weblogic.jar"/>
+        </classpath>
+      
+    </taskdef>
+
+    <!-- JARs that may be packaged in WEB-INF/lib
+  in order for the implementation to run
+  properly if they aren't availabe in the
+  container's classloader.
+
+  This is a comma separated list of fully
+  qualified JARs -->
+
+    <property name="webapp.jars" value=""/>
+
+    <property name="instance.numbers" value="1,2" />
+
+    <property name="glassfish.custom.domain" value="mojarra-domain" />
+    <property name="glassfish.cluster" value="mojarra-cluster" />
+    <property name="glassfish.custom.admin.port" value="60048" />
+    <property name="glassfish.cluster.admin.port" value="4949" />
+    <property name="glassfish.portbase.tenthousandsplace" value="6" />
+    <property name="glassfish.portbase" value="${glassfish.portbase.tenthousandsplace}0000" />
+    <property name="container.ssl.port" value="8181" />
+    <property name="container.jms.port" value="7676" />
+    <property name="container.iiop.port" value="3700" />
+    <property name="container.iiop.ssl.port" value="3820" />
+    <property name="container.iiop.ssl.mutualauth.port" value="3920" />
+    <property name="container.jmx.port" value="8686" />
+    <property name="container.gms.port" value="9490" />
+    <property name="container.debug.port" value="9009" />
+
+
+    <!-- Required Targets -->
+    <macrodef name="deploy.artifact">
+        <attribute name="artifact"
+                   description="The WAR to deploy"/>
+        <attribute name="appName"
+                   description="The name of the application"/>
+        <attribute name="use-virtual-servers"
+                   description="If true, deploy to the virtual servers."
+                   default="false"/>
+        <attribute name="waitforpath" default=""
+                   description="the path to test to determine if the deployment was successful" />
+        <sequential>
+            <echo>Instrumenting @{artifact} with weblogic.xml</echo>
+            <property name="local.wls-jsf"
+                  value="${jsf.build.home}/common/ant/${container.name}/wls-jsf" />
+            <property name="local.wls-jsf.deploy.artifact"
+                  value="${local.wls-jsf}/target/deploy.artifact" />
+            <delete dir="${local.wls-jsf.deploy.artifact}" 
+                    failonerror="false" />
+            <mkdir dir="${local.wls-jsf.deploy.artifact}/WEB-INF/" />
+            <copy file="${local.wls-jsf}/src/main/templates/weblogic.xml"
+                  tofile="${local.wls-jsf.deploy.artifact}/WEB-INF/weblogic.xml"
+                  filtering="true">
+                <filterset>
+                  <filter token="spec.version" value="${impl.version.number}"/>
+                  <filter token="impl.name" value="${impl.name}"/>
+                </filterset>
+            </copy>
+            <jar update="true" destfile="@{artifact}">
+                <fileset dir="${local.wls-jsf.deploy.artifact}"
+                         includes="**/*.*" />
+            </jar>
+
+            <echo>
+
+---------------- Glassfish - Deploying @{appName} ---------------- 
+
+            </echo>
+            <wldeploy action="deploy"
+                appversion="${impl.version.number}"
+                name="@{appName}"
+                password="${wl.password}"
+                user="${wl.username}"
+                source="@{artifact}"
+                verbose="true" 
+                adminurl="t3://${container.host}:${container.port}" />
+            <waitfor>
+              <http url="http://${container.host}:${container.port}/@{appName}/@{waitforpath}"/>
+            </waitfor>
+        </sequential>
+    </macrodef>
+
+    <macrodef name="deploydir.artifact">
+        <attribute name="explodedWarDir"
+                   description="The exploded war directory to deploy"/>
+        <attribute name="appName"
+                   description="The name of the application"/>
+        <sequential>
+            <condition property="exec.name" value="cmd.exe">
+                <os family="windows"/>
+            </condition>
+            <condition property="exec.arg.1"
+                       value="/c ${container.home}/bin/asadmin">
+                <os family="windows"/>
+            </condition>
+            <property name="exec.name" value="${container.home}/bin/asadmin"/>
+            <property name="exec.arg.1" value=""/>
+            <condition property="target"
+                       value="--target ${glassfish.cluster}">
+                <not>
+                  <equals arg1="${force.no.cluster}" casesensitive="false" trim="true"
+                          arg2="true" />
+                </not>
+            </condition>
+            <condition property="availabilityenabled"
+                       value="--availabilityenabled true">
+                <not>
+                  <equals arg1="${force.no.cluster}" casesensitive="false" trim="true"
+                          arg2="true" />
+                </not>
+            </condition>
+            <property name="target" value="" />
+            <property name="availabilityenabled" value="" />
+            <echo>
+
+---------------- Glassfish - Deploying @{appName} ---------------- 
+
+            </echo>
+            <exec executable="${exec.name}" failonerror="true">
+                <arg line="${exec.arg.1}"/>
+                <arg line="--port ${glassfish.custom.admin.port}"/>
+                <arg line="deploydir"/>
+                <arg line="${availabilityenabled}"/>
+                <arg line="${target}"/>
+                <arg line="--contextroot @{appName} @{explodedWarDir}"/>
+            </exec>
+        </sequential>
+    </macrodef>
+
+
+    <macrodef name="undeploy.artifact">
+        <attribute name="artifact"
+                   description="The WAR to deploy"/>
+        <attribute name="appName"
+                   description="The name of the application"/>
+        <sequential>
+            <echo>
+
+---------------- Glassfish - Undeploying @{appName} ---------------- 
+
+            </echo>
+            <wldeploy action="undeploy"
+                name="@{appName}"
+                password="${wl.password}"
+                user="${wl.username}"
+                verbose="true" debug="true" failonerror="false" 
+                adminurl="t3://${container.host}:${container.port}"/>
+
+        </sequential>
+    </macrodef>
+
+    <target name="config.container">
+    </target>
+
+    <!-- Require target to display information about the build environment -->
+    <target name="props">
+        <echo message="PENDING - Please add a message"/>
+        <echo message="container.home->${container.home}" />
+        <echo message="javaee.jar->${container.home}/lib/javaee.jar" />
+    </target>
+
+    <target name="update.impl.manifest">
+        <echo message="PENDING - Please implement"/>
+    </target>
+
+    <target name="define.wls.properties">
+      <property name="wls.jsf.di.groupId" value="com/bea/faces" />
+      <property name="wls.jsf.di.artifactId" value="wls.jsf.di" />
+      <property name="wls.jsf.di.version" value="2.0.4" />
+      <property name="wls.jsf.di.path" value="${wls.jsf.di.groupId}/${wls.jsf.di.artifactId}/${wls.jsf.di.version}" />
+      <property name="wls.jsf.di.jar" value="${wls.jsf.di.path}/${wls.jsf.di.artifactId}-${wls.jsf.di.version}.jar" />
+      <property name="wls.jsf.di.url" value="http://hg.us.oracle.com/jsf/website/raw-file/43f22fe82eca/downloads/wls.jsf.di-2.0.4.jar"/>
+
+      <propertyregex override="true"
+                   property="groupPath" input="${groupId}"
+                   regexp="\." replace="/" global="true" />
+    </target>
+
+    <target name="container.deploy" depends="define.wls.properties"
+            description="Deploy the JSF Implementation artifacts to the target container.">
+
+      <ant antfile="build-pre-maven-rename.xml" dir="${api.dir}" 
+           target="main">
+          <property name="skip.javadoc.jar"  value="true" />
+      </ant>
+
+      <ant antfile="build-pre-maven-rename.xml" dir="${impl.dir}" 
+           target="main">
+          <property name="skip.javadoc.jar"  value="true" />
+      </ant>
+
+      <ant antfile="build-pre-maven-rename.xml" dir="${api.dir}" 
+           target="mvn.pre-maven-rename.deploy.snapshot.local">
+          <property name="skip.javadoc.jar"  value="true" />
+      </ant>
+
+      <ant antfile="build-pre-maven-rename.xml" dir="${impl.dir}" 
+           target="mvn.pre-maven-rename.deploy.snapshot.local">
+          <property name="skip.javadoc.jar"  value="true" />
+      </ant>
+
+      <if>
+        <not>
+          <available file="${maven.repo.local}/${wls.jsf.di.jar}" property="ignored"/>
+        </not>
+        <then>
+          <sequential>
+            <mkdir dir="${maven.repo.local}/${wls.jsf.di.path}" />
+            <get src="${wls.jsf.di.url}" verbose="true"
+                 usetimestamp="true"
+                 dest="${maven.repo.local}/${wls.jsf.di.jar}" />
+          </sequential>
+        </then>
+      </if>
+
+      <create.pom template.file="${jsf.build.home}/common/ant/${container.name}/wls-jsf-pom-template.xml"
+                  output.file="${jsf.build.home}/common/ant/${container.name}/wls-jsf/pom.xml" 
+                  version="${impl.version}"
+                  groupId="com.oracle.faces" />
+      <jsf.mvn dir="${jsf.build.home}/common/ant/${container.name}/wls-jsf" goals="clean install" />
+
+      <copy file="${maven.repo.local}/com/sun/faces/jsf-api/${impl.version}/jsf-api-${impl.version}.jar" overwrite="true"
+            todir="${wl.home}/server/lib/consoleapp/webapp/WEB-INF/lib" />
+      <copy file="${maven.repo.local}/com/sun/faces/jsf-api/${impl.version}/jsf-api-${impl.version}.jar" overwrite="true"
+            todir="${wl.home}/server/lib/consoleapp/webapp/WEB-INF/lib" />
+
+      <copy file="${maven.repo.local}/com/sun/faces/jsf-api/${impl.version}/jsf-api-${impl.version}.jar" overwrite="true"
+            tofile="${container.home}/modules/${wl.jsf-api.jar_A}" />
+      <copy file="${maven.repo.local}/com/sun/faces/jsf-api/${impl.version}/jsf-api-${impl.version}.jar" overwrite="true"
+            tofile="${container.home}/modules/${wl.jsf-api.jar_B}" />
+      <copy file="${maven.repo.local}/com/sun/faces/jsf-impl/${impl.version}/jsf-impl-${impl.version}.jar" overwrite="true"
+            tofile="${container.home}/modules/${wl.jsf-impl.jar}" />
+
+      <container.start />
+      <waitfor>
+        <http url="http://${container.host}:${container.port}/console/"/>
+      </waitfor>
+
+      <run.wldeploy action="deploy" failonerror="false"/>
+
+      <container.stop />
+
+    </target>
+
+    <target name="run.wldeploy">
+
+      <run.wldeploy action="deploy" />
+
+    </target>
+
+    <macrodef name="run.wldeploy"
+            description="run the wldeploy ant task">
+      <attribute name="action" />
+      <attribute name="failonerror" default="true"/>
+      <sequential>
+        <if>
+          <equals arg1="@{action}" 
+                  arg2="deploy" />
+          <then>
+            <wldeploy action="@{action}" failonerror="@{failonerror}"
+                  appversion="${impl.version.number}"
+                  libImplVer="${impl.version.number}"
+                  libSpecVer="${impl.version.number}"
+                  library="true"
+                  name="${impl.name}"
+                  password="${wl.password}"
+                  user="${wl.username}"
+                  source="${jsf.build.home}/common/ant/${container.name}/wls-jsf/target/${impl.name}-${impl.version}.war"
+                  verbose="true"  
+                  adminurl="t3://${container.host}:${container.port}"/>
+          </then>
+          <else>
+            <wldeploy action="@{action}" failonerror="@{failonerror}"
+                  appversion="${impl.version.number}"
+                  libImplVer="${impl.version.number}"
+                  libSpecVer="${impl.version.number}"
+                  library="true"
+                  name="${impl.name}"
+                  password="${wl.password}"
+                  user="${wl.username}"
+                  verbose="true" 
+                  adminurl="t3://${container.host}:${container.port}" />
+          </else>
+        </if>
+
+
+      </sequential>
+    </macrodef>
+
+    <target name="container.undeploy" depends="define.wls.properties"
+            description="Undeploy the JSF Implementation artifacts from the target container.">
+     
+      <container.stop />
+
+      <delete file="${container.home}/modules/${wl.jsf-api.jar_A}" 
+              failonerror="false" />
+      <delete file="${container.home}/modules/${wl.jsf-api.jar_B}" 
+              failonerror="false" />
+      <delete file="${container.home}/modules/${wl.jsf-impl.jar}"
+              failonerror="false" />
+      <delete file="${wl.home}/server/lib/consoleapp/webapp/WEB-INF/lib/jsf-api-${impl.version}.jar" failonerror="false"/>
+      <delete file="${wl.home}/server/lib/consoleapp/webapp/WEB-INF/lib/jsf-impl-${impl.version}.jar" failonerror="false"/>
+
+      <container.start />
+      <waitfor>
+        <http url="http://${container.host}:${container.port}/console/"/>
+      </waitfor>
+
+
+      <run.wldeploy action="undeploy" failonerror="false" />
+      <container.stop />
+
+    </target>
+
+    <target name="container.deploy.test.dependencies"
+            description="Deploy any container level dependencies to the container.">
+    </target>
+
+    <target name="container.undeploy.test.dependencies"
+            description="Undeploy any container level dependencies from the container.">
+    </target>
+
+    <target name="container.start"
+            description="Start the WebLogic container">
+        <var name="create-domain-value" value="true" />
+        <var name="create-cluster-value" value="true" />
+        <if>
+          <equals arg1="${create-domain}" 
+                  casesensitive="false" trim="true"
+                  arg2="false" />
+          <then>
+            <var name="create-domain-value" value="false" />
+          </then>
+        </if>
+        <if>
+          <equals arg1="${create-cluster}" 
+                  casesensitive="false" trim="true"
+                  arg2="false" />
+          <then>
+            <var name="create-cluster-value" value="false" />
+          </then>
+        </if>
+        <echo>
+--------- Starting container, create-domain: ${create-domain-value} create-cluster: ${create-cluster-value}
+        </echo>
+        <container.start create-domain="${create-domain-value}"
+                         create-cluster="${create-cluster-value}"/>
+    </target>
+
+    <target name="container.debug"
+            description="Start the WebLogic container in debug mode">
+        <var name="create-domain-value" value="true" />
+        <var name="create-cluster-value" value="true" />
+        <if>
+          <equals arg1="${create-domain}" 
+                  casesensitive="false" trim="true"
+                  arg2="false" />
+          <then>
+            <var name="create-domain-value" value="false" />
+          </then>
+        </if>
+        <if>
+          <equals arg1="${create-cluster}" 
+                  casesensitive="false" trim="true"
+                  arg2="false" />
+          <then>
+            <var name="create-cluster-value" value="false" />
+          </then>
+        </if>
+        <echo>
+--------- Starting container in debug mode, create-domain: ${create-domain-value} create-cluster: ${create-cluster-value}
+        </echo>
+        <container.debug create-domain="${create-domain-value}"
+                         create-cluster="${create-cluster-value}"/>
+    </target>
+
+    <target name="container.stop"
+            description="Stop the WebLogic container">
+        <var name="create-domain-value" value="true" />
+        <var name="create-cluster-value" value="true" />
+        <if>
+          <equals arg1="${create-domain}" 
+                  casesensitive="false" trim="true"
+                  arg2="false" />
+          <then>
+            <var name="create-domain-value" value="false" />
+          </then>
+        </if>
+        <if>
+          <equals arg1="${create-cluster}" 
+                  casesensitive="false" trim="true"
+                  arg2="false" />
+          <then>
+            <var name="create-cluster-value" value="false" />
+          </then>
+        </if>
+        <echo>
+--------- Stopping container, create-domain: ${create-domain-value} create-cluster: ${create-cluster-value}
+        </echo>
+        <container.stop create-domain="${create-domain-value}"
+                        create-cluster="${create-cluster-value}"/>
+    </target>
+
+    <target name="container.restart"
+            description="Stop the WebLogic container">
+        <container.stop/>
+        <container.start/>
+    </target>
+
+    <target name="define.scenario.aware.port">
+      <property name="scenario.aware.port" value="${container.port}" />
+      <echo message="scenario.aware.port = ${scenario.aware.port}" />
+
+      <var name="force.no.cluster" value="true" />
+      <echo message="force.no.cluster = ${force.no.cluster}" />
+    </target>
+
+    <target name="define.virtual-server.aware.port">
+      <property name="scenario.aware.port" value="${container.port}" />
+      <echo message="scenario.aware.port = ${scenario.aware.port}" />
+
+      <var name="force.no.cluster" value="true" />
+      <echo message="force.no.cluster = ${force.no.cluster}" />
+    </target>
+
+
+    <macrodef name="container.start"
+            description="Start the WebLogic container">
+        <attribute name="create-domain" default="true"/>
+        <attribute name="create-cluster" default="true"/>
+        <attribute name="dir" default="${container.home}/user_projects/domains/base_domain/bin" />
+        <sequential>
+          <echo>Starting ${container.name}</echo>
+          <!-- windows or unix java exec invocation -->
+          <condition property="exec.name" value="cmd.exe /c">
+              <os family="windows"/>
+          </condition>
+          <condition property="exec.name" value="nohup">
+              <os family="unix"/>
+          </condition>
+          <condition property="exec.name" value="nohup">
+              <os family="unix"/>
+          </condition>
+          <condition property="exec.arg.1"
+                     value="@{dir}/startWebLogic.bat">
+              <os family="windows"/>
+          </condition>
+          <property name="exec.arg.1"  value="@{dir}/startWebLogic.sh" />
+          <echo message="redirecting log output to ${wl.log}" />
+          <exec spawn="true" executable="${exec.name}">
+              <arg line="${exec.arg.1}"/>
+              <env key="WLS_REDIRECT_LOG"
+                   value="${wl.log}" />
+          </exec>
+        </sequential>
+    </macrodef>
+
+    <macrodef name="container.debug"
+            description="Start the WebLogic container in debug mode">
+        <attribute name="create-domain" default="true"/>
+        <attribute name="create-cluster" default="true"/>
+        <attribute name="dir" default="${container.home}/user_projects/domains/base_domain/bin" />
+      <sequential>
+        <echo>
+Unable to start ${container.name} in debug mode from ant.  
+You must manually edit setDomainEnv.sh and include the line
+
+debugFlag="true"
+
+right around line 344, before the line 
+
+if [ "${debugFlag}" = "true" ] ; then
+
+and manually start the container with ./startWebLogic.sh.
+
+        </echo>
+        <fail />
+      </sequential>
+    </macrodef>
+
+
+    <macrodef name="container.stop"
+            description="Stop the WebLogic container">
+        <attribute name="create-domain" default="true"/>
+        <attribute name="create-cluster" default="true"/>
+        <attribute name="dir" default="${container.home}/user_projects/domains/base_domain/bin" />
+        <sequential>
+          <echo>Stopping ${container.name}</echo>
+          <if>
+            <os family="windows"/>
+              <then>
+                <property name="stopWebLogic" value="@{dir}/stopWebLogic.bat"/>
+              </then>
+              <else>
+               <property name="stopWebLogic" value="@{dir}/stopWebLogic.sh"/>
+              </else>
+            </if>
+            <exec os="SunOS" dir="@{dir}"
+                  executable="${stopWebLogic}">
+            </exec>
+            <exec os="Linux" dir="@{dir}"
+                  executable="${stopWebLogic}">
+            </exec>
+            <exec osfamily="windows" dir="@{dir}" 
+                  executable="${stopWebLogic}">
+            </exec>
+            <exec os="Mac OS X" dir="@{dir}" 
+                  executable="${stopWebLogic}">
+            </exec>
+        </sequential>    
+    </macrodef>
+
+    <!-- 'PRIVATE' targets -->
+    <macrodef name="start.domain">
+        <attribute name="create-domain" default="true"/>
+        <attribute name="create-cluster" default="true"/>
+
+        <sequential>
+            <echo>
+
+"------------ Starting ${glassfish.custom.domain} force.no.cluster ${force.no.cluster} ------------"
+
+            </echo>
+            <if>
+                <os family="unix"/>
+                <then>
+                    <if>
+                        <equals arg1="@{create-domain}" 
+                                casesensitive="false" trim="true"
+                                arg2="true" />
+                        <then>
+			  <exec executable="${container.home}/bin/asadmin"
+				failonerror="true">
+			      <arg line="create-domain"/>
+			      <arg line="--user ${glassfish.admin.user}"/>
+			      <arg line="--passwordfile ${glassfish.password.file}"/>
+			      <arg line="--portbase ${glassfish.portbase}"/>
+			      <arg line="${glassfish.custom.domain}"/>
+			  </exec>
+                        </then>
+                    </if>
+                    <exec executable="${container.home}/bin/asadmin"
+                          failonerror="true">
+                        <arg line="start-domain"/>
+                        <arg line="--user ${glassfish.admin.user}"/>
+                        <arg line="${glassfish.custom.domain}"/>
+                    </exec>
+                    <if>
+                      <not>
+                        <equals arg1="${force.no.cluster}" 
+                                casesensitive="false" trim="true"
+                                arg2="true" />
+                      </not>
+                      <then>
+                        <start.cluster create-cluster="@{create-cluster}"/>
+                      </then>
+                      <else>
+			<waitfor>
+			    <http url="http://${container.host}:${glassfish.portbase.tenthousandsplace}0080"/>
+			</waitfor>
+                      </else>
+                    </if>
+                </then>
+                <else>
+                    <if>
+                        <equals arg1="@{create-domain}" 
+                                casesensitive="false" trim="true"
+                                arg2="true" />
+                        <then>
+			  <exec executable="${container.home}/bin/asadmin.bat"
+				failonerror="true">
+			      <arg line="create-domain"/>
+			      <arg line="--user ${glassfish.admin.user}"/>
+			      <arg line="--passwordfile ${glassfish.password.file}"/>
+			      <arg line="--portbase ${glassfish.portbase}"/>
+			      <arg line="${glassfish.custom.domain}"/>
+			  </exec>
+                        </then>
+                    </if>
+                    <exec executable="${container.home}/bin/asadmin.bat"
+                          spawn="true">
+                        <arg line="start-domain"/>
+                        <arg line="--user ${glassfish.admin.user}"/>
+                        <arg line="${glassfish.custom.domain}"/>
+                    </exec>
+                    <if>
+                      <not>
+                        <equals arg1="${force.no.cluster}" 
+                                casesensitive="false" trim="true"
+                                arg2="true" />
+                      </not>
+                      <then>
+                        <start.cluster create-cluster="@{create-cluster}"/>
+                      </then>
+                      <else>
+			<waitfor>
+			    <http url="http://${container.host}:${glassfish.portbase.tenthousandsplace}0080"/>
+			</waitfor>
+                      </else>
+                    </if>
+                </else>
+            </if>
+        </sequential>
+    </macrodef>
+
+    <macrodef name="start.cluster">
+        <attribute name="create-cluster" default="true"/>
+        <sequential>
+            <echo>
+
+"------------ Starting ${glassfish.cluster} ------------"
+
+            </echo>
+            <if>
+                <os family="unix"/>
+                <then>
+                    <if>
+                        <equals arg1="@{create-cluster}" 
+                                casesensitive="false" trim="true"
+                                arg2="true" />
+                        <then>
+			  <exec executable="${container.home}/bin/asadmin"
+				failonerror="true">
+			      <arg line="--port ${glassfish.custom.admin.port}"/>
+			      <arg line="create-cluster"/>
+			      <arg line="--systemproperties ASADMIN_LISTENER_PORT=${glassfish.cluster.admin.port}"/>
+			      <arg line="${glassfish.cluster}"/>
+			  </exec>
+
+			  <for list="${instance.numbers}" param="num" trim="true">
+			    <sequential>
+			      <exec executable="${container.home}/bin/asadmin"
+				    failonerror="true">
+				  <arg line="--port ${glassfish.custom.admin.port}"/>
+				  <arg line="create-local-instance"/>
+				  <arg line="--cluster ${glassfish.cluster}"/>
+				  <arg line="--systemproperties ASADMIN_LISTENER_PORT=@{num}${glassfish.admin.port}:HTTP_LISTENER_PORT=@{num}${container.port}:HTTP_SSL_LISTENER_PORT=@{num}${container.ssl.port}:JMS_PROVIDER_PORT=@{num}${container.jms.port}:IIOP_LISTENER_PORT=@{num}${container.iiop.port}:IIOP_SSL_LISTENER_PORT=@{num}${container.iiop.ssl.port}:IIOP_SSL_MUTUALAUTH_PORT=@{num}${container.iiop.ssl.mutualauth.port}:JMX_SYSTEM_CONNECTOR_PORT=@{num}${container.jmx.port}:GMS_BIND_INTERFACE_ADDRESS-${glassfis [...]
+				  <arg line="${glassfish.cluster}@{num}"/>
+			      </exec>
+			    </sequential>
+			  </for>
+                      </then>
+                    </if>
+                    <exec executable="${container.home}/bin/asadmin"
+                          failonerror="true">
+                        <arg line="--port ${glassfish.custom.admin.port}"/>
+                        <arg line="start-cluster"/>
+                        <arg line="${glassfish.cluster}"/>
+                    </exec>
+                    <for list="${instance.numbers}" param="num" trim="true">
+                      <sequential>
+			<waitfor>
+			    <http url="http://${container.host}:@{num}${container.port}"/>
+			</waitfor>
+                      </sequential>
+                    </for>
+                </then>
+                <else>
+                    <if>
+                        <equals arg1="@{create-cluster}" 
+                                casesensitive="false" trim="true"
+                                arg2="true" />
+                        <then>
+			<exec executable="${container.home}/bin/asadmin.bat"
+			      failonerror="true">
+			    <arg line="--port ${glassfish.custom.admin.port}"/>
+			    <arg line="create-cluster"/>
+			    <arg line="--systemproperties ASADMIN_LISTENER_PORT=${glassfish.cluster.admin.port}"/>
+			    <arg line="${glassfish.cluster}"/>
+			</exec>
+
+			<for list="${instance.numbers}" param="num" trim="true">
+			  <sequential>
+			    <exec executable="${container.home}/bin/asadmin.bat"
+				  failonerror="true">
+				<arg line="--port ${glassfish.custom.admin.port}"/>
+				<arg line="create-local-instance"/>
+				<arg line="--cluster ${glassfish.cluster}"/>
+				<arg line="--systemproperties ASADMIN_LISTENER_PORT=@{num}${glassfish.admin.port}:HTTP_LISTENER_PORT=@{num}${container.port}:HTTP_SSL_LISTENER_PORT=@{num}${container.ssl.port}:JMS_PROVIDER_PORT=@{num}${container.jms.port}:IIOP_LISTENER_PORT=@{num}${container.iiop.port}:IIOP_SSL_LISTENER_PORT=@{num}${container.iiop.ssl.port}:IIOP_SSL_MUTUALAUTH_PORT=@{num}${container.iiop.ssl.mutualauth.port}:JMX_SYSTEM_CONNECTOR_PORT=@{num}${container.jmx.port}:GMS_BIND_INTERFACE_ADDRESS-${glassfish. [...]
+				<arg line="${glassfish.cluster}@{num}"/>
+			    </exec>
+			  </sequential>
+			</for>
+                      </then>
+                    </if>
+                    <exec executable="${container.home}/bin/asadmin.bat"
+                          failonerror="true">
+                        <arg line="--port ${glassfish.custom.admin.port}"/>
+                        <arg line="start-cluster"/>
+                        <arg line="${glassfish.cluster}"/>
+                    </exec>
+                    <for list="${instance.numbers}" param="num" trim="true">
+                      <sequential>
+			<waitfor>
+			    <http url="http://${container.host}:@{num}${container.port}"/>
+			</waitfor>
+                      </sequential>
+                    </for>
+                </else>
+            </if>
+        </sequential>
+    </macrodef>
+
+    <macrodef name="debug.cluster">
+        <attribute name="create-cluster" default="true"/>
+        <sequential>
+            <echo>
+
+"------------ Starting ${glassfish.cluster} in debug mode ------------"
+
+            </echo>
+            <if>
+                <os family="unix"/>
+                <then>
+                    <if>
+                        <equals arg1="@{create-cluster}" 
+                                casesensitive="false" trim="true"
+                                arg2="true" />
+                        <then>
+                            <echo>
+
+"------------ Creating ${glassfish.cluster} ------------"
+
+                            </echo>
+			    <exec executable="${container.home}/bin/asadmin"
+				  failonerror="true">
+				<arg line="--port ${glassfish.custom.admin.port}"/>
+				<arg line="create-cluster"/>
+				<arg line="--systemproperties ASADMIN_LISTENER_PORT=${glassfish.cluster.admin.port}"/>
+				<arg line="${glassfish.cluster}"/>
+			    </exec>
+
+			    <for list="${instance.numbers}" param="num" trim="true">
+			      <sequential>
+                                <echo>
+
+"------------ Creating local instance ${glassfish.cluster}@{num} ------------"
+
+                                </echo>
+				<exec executable="${container.home}/bin/asadmin"
+				      failonerror="true">
+				    <arg line="--port ${glassfish.custom.admin.port}"/>
+				    <arg line="create-local-instance"/>
+				    <arg line="--cluster ${glassfish.cluster}"/>
+				    <arg line="--systemproperties JAVA_DEBUGGER_PORT=@{num}${container.debug.port}:ASADMIN_LISTENER_PORT=@{num}${glassfish.admin.port}:HTTP_LISTENER_PORT=@{num}${container.port}:HTTP_SSL_LISTENER_PORT=@{num}${container.ssl.port}:JMS_PROVIDER_PORT=@{num}${container.jms.port}:IIOP_LISTENER_PORT=@{num}${container.iiop.port}:IIOP_SSL_LISTENER_PORT=@{num}${container.iiop.ssl.port}:IIOP_SSL_MUTUALAUTH_PORT=@{num}${container.iiop.ssl.mutualauth.port}:JMX_SYSTEM_CONNECTOR_PORT=@{num}${contai [...]
+				    <arg line="${glassfish.cluster}@{num}"/>
+				</exec>
+			      </sequential>
+			    </for>
+                        </then>
+                    </if>
+                    <for list="${instance.numbers}" param="num" trim="true">
+                      <sequential>
+                       <echo>
+
+"------------ Starting local instance ${glassfish.cluster}@{num} with debug enabled ------------"
+
+                       </echo>
+                       <exec executable="${container.home}/bin/asadmin"
+       			           failonerror="true">
+				   <arg line="start-instance"/>
+				   <arg line="--user ${glassfish.admin.user}"/>
+				   <arg line="--passwordfile ${glassfish.password.file}"/>
+			           <arg line="--port ${glassfish.custom.admin.port}"/>
+                                   <arg line="--debug=true"/>
+			           <arg line="${glassfish.cluster}@{num}"/>
+                        </exec>
+			<waitfor>
+			    <http url="http://${container.host}:@{num}${container.port}"/>
+			</waitfor>
+                      </sequential>
+                    </for>
+                </then>
+                <else>
+                    <if>
+                        <equals arg1="@{create-cluster}" 
+                                casesensitive="false" trim="true"
+                                arg2="true" />
+                        <then>
+			    <exec executable="${container.home}/bin/asadmin.bat"
+				  failonerror="true">
+				<arg line="--port ${glassfish.custom.admin.port}"/>
+				<arg line="create-cluster"/>
+				<arg line="--systemproperties ASADMIN_LISTENER_PORT=${glassfish.cluster.admin.port}"/>
+				<arg line="${glassfish.cluster}"/>
+			    </exec>
+
+			    <for list="${instance.numbers}" param="num" trim="true">
+			      <sequential>
+				<exec executable="${container.home}/bin/asadmin.bat"
+				      failonerror="true">
+				    <arg line="--port ${glassfish.custom.admin.port}"/>
+				    <arg line="create-local-instance"/>
+				    <arg line="--cluster ${glassfish.cluster}"/>
+				    <arg line="--systemproperties ASADMIN_LISTENER_PORT=@{num}${glassfish.admin.port}:HTTP_LISTENER_PORT=@{num}${container.port}:HTTP_SSL_LISTENER_PORT=@{num}${container.ssl.port}:JMS_PROVIDER_PORT=@{num}${container.jms.port}:IIOP_LISTENER_PORT=@{num}${container.iiop.port}:IIOP_SSL_LISTENER_PORT=@{num}${container.iiop.ssl.port}:IIOP_SSL_MUTUALAUTH_PORT=@{num}${container.iiop.ssl.mutualauth.port}:JMX_SYSTEM_CONNECTOR_PORT=@{num}${container.jmx.port}:GMS_BIND_INTERFACE_ADDRESS-${glassf [...]
+				    <arg line="${glassfish.cluster}@{num}"/>
+				</exec>
+                                <exec executable="${container.home}/bin/asadmin.bat"
+       			           failonerror="true">
+	  			     <arg line="start-instance"/>
+				     <arg line="--user ${glassfish.admin.user}"/>
+				     <arg line="--passwordfile ${glassfish.password.file}"/>
+			             <arg line="--port ${glassfish.custom.admin.port}"/>
+                                     <arg line="--debug=true"/>
+			             <arg line="${glassfish.cluster}@{num}"/>
+                                </exec>
+			      </sequential>
+			    </for>
+                        </then>
+                    </if>
+                    <for list="${instance.numbers}" param="num" trim="true">
+                      <sequential>
+			<waitfor>
+			    <http url="http://${container.host}:@{num}${container.port}"/>
+			</waitfor>
+                      </sequential>
+                    </for>
+                </else>
+            </if>
+        </sequential>
+    </macrodef>
+
+    <macrodef name="stop.cluster">
+        <attribute name="create-cluster" default="true"/>
+        <sequential>
+            <echo>
+
+"------------ Stopping ${glassfish.cluster} ------------"
+
+            </echo>
+            <if>
+                <os family="unix"/>
+                <then>
+                    <exec executable="${container.home}/bin/asadmin" 
+                          failonerror="false">
+                        <arg line="--port ${glassfish.custom.admin.port}"/>
+                        <arg line="stop-cluster"/>
+                        <arg line="${glassfish.cluster}"/>
+                    </exec>
+                    <if>
+                        <equals arg1="@{create-cluster}" 
+                                casesensitive="false" trim="true"
+                                arg2="true" />
+                        <then>
+			    <for list="${instance.numbers}" param="num" trim="true">
+			      <sequential>
+				<exec executable="${container.home}/bin/asadmin"
+				      failonerror="false">
+				    <arg line="--port ${glassfish.custom.admin.port}"/>
+				    <arg line="delete-local-instance"/>
+				    <arg line="${glassfish.cluster}@{num}"/>
+				</exec>
+			      </sequential>
+			    </for>
+			    <exec executable="${container.home}/bin/asadmin"
+				  failonerror="false">
+				<arg line="--port ${glassfish.custom.admin.port}"/>
+				<arg line="delete-cluster"/>
+				<arg line="${glassfish.cluster}"/>
+			    </exec>
+                        </then>
+                    </if>
+                </then>
+                <else>
+                    <exec executable="${container.home}/bin/asadmin.bat"
+                          failonerror="false">
+                        <arg line="--port ${glassfish.custom.admin.port}"/>
+                        <arg line="stop-cluster"/>
+                        <arg line="${glassfish.cluster}"/>
+                    </exec>
+                    <if>
+                        <equals arg1="@{create-cluster}" 
+                                casesensitive="false" trim="true"
+                                arg2="true" />
+                        <then>
+			   <for list="${instance.numbers}" param="num" trim="true">
+			     <sequential>
+			       <exec executable="${container.home}/bin/asadmin.bat"
+				     failonerror="false">
+				   <arg line="--port ${glassfish.custom.admin.port}"/>
+				   <arg line="delete-local-instance"/>
+				   <arg line="${glassfish.cluster}@{num}"/>
+			       </exec>
+			     </sequential>
+			   </for>
+			   <exec executable="${container.home}/bin/asadmin.bat"
+				 failonerror="false">
+			       <arg line="--port ${glassfish.custom.admin.port}"/>
+			       <arg line="delete-cluster"/>
+			       <arg line="${glassfish.cluster}"/>
+			   </exec>
+                       </then>
+                    </if>
+		</else>
+            </if>
+        </sequential>
+    </macrodef>
+
+
+    <macrodef name="debug.domain">
+        <attribute name="create-domain" default="true"/>
+        <attribute name="create-cluster" default="true"/>
+        <sequential>
+            <echo>
+
+"------------ Starting ${glassfish.custom.domain} in debug mode------------"
+
+            </echo>
+            <if>
+                <os family="unix"/>
+                <then>
+                    <if>
+                        <equals arg1="@{create-domain}" 
+                                casesensitive="false" trim="true"
+                                arg2="true" />
+                        <then>
+			  <exec executable="${container.home}/bin/asadmin"
+				failonerror="true">
+			      <arg line="create-domain"/>
+			      <arg line="--user ${glassfish.admin.user}"/>
+			      <arg line="--passwordfile ${glassfish.password.file}"/>
+			      <arg line="--portbase ${glassfish.portbase}"/>
+			      <arg line="${glassfish.custom.domain}"/>
+			  </exec>
+                        </then>
+                    </if>
+                    <exec executable="${container.home}/bin/asadmin"
+                          failonerror="true">
+                        <arg line="start-domain"/>
+                        <arg line="--debug true"/>
+                        <arg line="--user ${glassfish.admin.user}"/>
+                        <arg line="${glassfish.custom.domain}"/>
+                    </exec>
+                    <if>
+                      <not>
+                        <equals arg1="${force.no.cluster}" 
+                                casesensitive="false" trim="true"
+                                arg2="true" />
+                      </not>
+                      <then>
+                        <debug.cluster create-cluster="@{create-cluster}"/>
+                      </then>
+                      <else>
+			<waitfor>
+			    <http url="http://${container.host}:${glassfish.portbase.tenthousandsplace}0080"/>
+			</waitfor>
+                      </else>
+                    </if>
+                </then>
+                <else>
+                    <if>
+                        <equals arg1="@{create-domain}" 
+                                casesensitive="false" trim="true"
+                                arg2="true" />
+                        <then>
+			  <exec executable="${container.home}/bin/asadmin.bat"
+				failonerror="true">
+			      <arg line="create-domain"/>
+			      <arg line="--user ${glassfish.admin.user}"/>
+			      <arg line="--passwordfile ${glassfish.password.file}"/>
+			      <arg line="--portbase ${glassfish.portbase}"/>
+			      <arg line="${glassfish.custom.domain}"/>
+			  </exec>
+                        </then>
+                    </if>
+                    <exec executable="${container.home}/bin/asadmin.bat"
+                          spawn="true">
+                        <arg line="start-domain"/>
+                        <arg line="--user ${glassfish.admin.user}"/>
+                        <arg line="${glassfish.custom.domain}"/>
+                    </exec>
+                    <if>
+                      <not>
+                        <equals arg1="${force.no.cluster}" 
+                                casesensitive="false" trim="true"
+                                arg2="true" />
+                      </not>
+                      <then>
+                        <debug.cluster create-cluster="@{create-cluster}"/>
+                      </then>
+                      <else>
+			<waitfor>
+			    <http url="http://${container.host}:${glassfish.portbase.tenthousandsplace}0080"/>
+			</waitfor>
+                      </else>
+                    </if>
+                </else>
+            </if>
+        </sequential>
+    </macrodef>
+
+    <macrodef name="stop.domain">
+        <attribute name="create-domain" default="true"/>
+        <attribute name="create-cluster" default="true"/>
+        <sequential>
+            <if>
+                <os family="unix"/>
+                <then>
+                    <if>
+                      <not>
+                        <equals arg1="${force.no.cluster}" 
+                                casesensitive="false" trim="true"
+                                arg2="true" />
+                      </not>
+                      <then>
+                        <stop.cluster create-cluster="@{create-cluster}"/>
+                      </then>
+                    </if>
+                    <echo>
+
+"------------ Stopping ${glassfish.custom.domain} ------------"
+
+                    </echo>
+                    <exec executable="${container.home}/bin/asadmin">
+                        <arg line="stop-domain"/>
+                        <arg line="${glassfish.custom.domain}"/>
+                    </exec>
+                    <if>
+                        <equals arg1="@{create-domain}" 
+                                casesensitive="false" trim="true"
+                                arg2="true" />
+                        <then>
+			  <exec executable="${container.home}/bin/asadmin">
+			      <arg line="delete-domain"/>
+			      <arg line="${glassfish.custom.domain}"/>
+			  </exec>
+                        </then>
+                    </if>
+                </then>
+                <else>
+                    <if>
+                      <not>
+                        <equals arg1="${force.no.cluster}" 
+                                casesensitive="false" trim="true"
+                                arg2="true" />
+                      </not>
+                      <then>
+                        <stop.cluster create-cluster="@{create-cluster}"/>
+                      </then>
+                    </if>
+                    <echo>
+
+"------------ Stopping ${glassfish.custom.domain} ------------"
+
+                    </echo>
+                    <exec executable="${container.home}/bin/asadmin.bat"
+                          spawn="true">
+                        <arg line="stop-domain"/>
+                        <arg line="${glassfish.custom.domain}"/>
+                    </exec>
+                    <if>
+                        <equals arg1="@{create-domain}" 
+                                casesensitive="false" trim="true"
+                                arg2="true" />
+                        <then>
+			  <exec executable="${container.home}/bin/asadmin.bat"
+				spawn="true">
+			      <arg line="delete-domain"/>
+			      <arg line="${glassfish.custom.domain}"/>
+			  </exec>
+                        </then>
+                    </if>
+                </else>
+            </if>
+        </sequential>
+    </macrodef>
+
+
+    <!-- ************ Compiler Defaults *************************************** -->
+
+
+    <!-- ************ Executable Targets ************************************** -->
+
+    <target name="main">
+    </target>
+
+    <target name="edburns">
+
+    <propertyregex override="true"
+                   property="groupPath" input="${groupId}"
+                   regexp="\." replace="/" global="true" />
+<echo>${groupId} ${groupPath}</echo>
+    </target>
+
+</project>
+
diff --git a/common/ant/wls_12_1_1_no_cluster_library_war/wls-jsf-pom-template.xml b/common/ant/wls_12_1_1_no_cluster_library_war/wls-jsf-pom-template.xml
new file mode 100644
index 0000000..a64ea7c
--- /dev/null
+++ b/common/ant/wls_12_1_1_no_cluster_library_war/wls-jsf-pom-template.xml
@@ -0,0 +1,101 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>com.oracle.faces</groupId>
+  <artifactId>Mojarra</artifactId>
+  <version>@version@</version>
+  <packaging>war</packaging>
+  <name>Mojarra</name>
+
+  <build>
+   <pluginManagement>
+     <plugins>
+       <plugin>
+         <groupId>org.apache.maven.plugins</groupId>
+         <artifactId>maven-compiler-plugin</artifactId>
+         <configuration>
+           <source>1.5</source>
+           <target>1.5</target>
+         </configuration>
+       </plugin>
+       <plugin>
+	 <groupId>org.apache.maven.plugins</groupId>
+	 <artifactId>maven-war-plugin</artifactId>
+         <version>2.1-alpha-2</version>
+         <configuration>
+           <failOnMissingWebXml>false</failOnMissingWebXml>
+         </configuration>
+       </plugin>
+
+     </plugins>
+   </pluginManagement>
+  </build>
+
+  <dependencies>
+    <dependency>
+      <groupId>com.sun.faces</groupId>
+      <artifactId>jsf-api</artifactId>
+      <version>@version@</version>
+      <scope>compile</scope>
+    </dependency>
+    <dependency>
+      <groupId>com.sun.faces</groupId>
+      <artifactId>jsf-impl</artifactId>
+      <version>@version@</version>
+      <scope>compile</scope>
+    </dependency>
+    <dependency>
+      <groupId>jstl</groupId>
+      <artifactId>jstl</artifactId>
+      <version>1.2</version>
+      <scope>compile</scope>
+    </dependency>
+    <dependency>
+      <groupId>com.bea.faces</groupId>
+      <artifactId>wls.jsf.di</artifactId>
+      <version>2.0.4</version>
+      <scope>compile</scope>
+    </dependency>
+  </dependencies>
+</project>
diff --git a/common/ant/wls_12_1_1_no_cluster_library_war/wls-jsf/pom.xml b/common/ant/wls_12_1_1_no_cluster_library_war/wls-jsf/pom.xml
new file mode 100644
index 0000000..0295120
--- /dev/null
+++ b/common/ant/wls_12_1_1_no_cluster_library_war/wls-jsf/pom.xml
@@ -0,0 +1,101 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>com.oracle.faces</groupId>
+  <artifactId>Mojarra</artifactId>
+  <version>2.1.5-SNAPSHOT</version>
+  <packaging>war</packaging>
+  <name>Mojarra</name>
+
+  <build>
+   <pluginManagement>
+     <plugins>
+       <plugin>
+         <groupId>org.apache.maven.plugins</groupId>
+         <artifactId>maven-compiler-plugin</artifactId>
+         <configuration>
+           <source>1.5</source>
+           <target>1.5</target>
+         </configuration>
+       </plugin>
+       <plugin>
+	 <groupId>org.apache.maven.plugins</groupId>
+	 <artifactId>maven-war-plugin</artifactId>
+         <version>2.1-alpha-2</version>
+         <configuration>
+           <failOnMissingWebXml>false</failOnMissingWebXml>
+         </configuration>
+       </plugin>
+
+     </plugins>
+   </pluginManagement>
+  </build>
+
+  <dependencies>
+    <dependency>
+      <groupId>com.sun.faces</groupId>
+      <artifactId>jsf-api</artifactId>
+      <version>2.1.5-SNAPSHOT</version>
+      <scope>compile</scope>
+    </dependency>
+    <dependency>
+      <groupId>com.sun.faces</groupId>
+      <artifactId>jsf-impl</artifactId>
+      <version>2.1.5-SNAPSHOT</version>
+      <scope>compile</scope>
+    </dependency>
+    <dependency>
+      <groupId>jstl</groupId>
+      <artifactId>jstl</artifactId>
+      <version>1.2</version>
+      <scope>compile</scope>
+    </dependency>
+    <dependency>
+      <groupId>com.bea.faces</groupId>
+      <artifactId>wls.jsf.di</artifactId>
+      <version>2.0.4</version>
+      <scope>compile</scope>
+    </dependency>
+  </dependencies>
+</project>
diff --git a/common/ant/wls_12_1_1_no_cluster_library_war/wls-jsf/src/main/templates/weblogic.xml b/common/ant/wls_12_1_1_no_cluster_library_war/wls-jsf/src/main/templates/weblogic.xml
new file mode 100644
index 0000000..9ed8882
--- /dev/null
+++ b/common/ant/wls_12_1_1_no_cluster_library_war/wls-jsf/src/main/templates/weblogic.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<weblogic-web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.bea.com/ns/weblogic/weblogic-web-app.xsd" xmlns="http://www.bea.com/ns/weblogic/weblogic-web-app">
+  <library-ref>
+    <library-name>@impl.name@</library-name>
+    <specification-version>@spec.version@</specification-version>
+  </library-ref>
+</weblogic-web-app>
diff --git a/common/ant/wls_12_1_1_no_cluster_library_war/wls-jsf/src/main/webapp/WEB-INF/web.xml b/common/ant/wls_12_1_1_no_cluster_library_war/wls-jsf/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..c335333
--- /dev/null
+++ b/common/ant/wls_12_1_1_no_cluster_library_war/wls-jsf/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,7 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<web-app 
+        xmlns="http://java.sun.com/xml/ns/j2ee" 
+        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+        version="2.4">
+
+</web-app>
diff --git a/contrib/sandbox/.cvsignore b/contrib/sandbox/.cvsignore
new file mode 100644
index 0000000..9d9f179
--- /dev/null
+++ b/contrib/sandbox/.cvsignore
@@ -0,0 +1,4 @@
+dependencies
+dist
+build
+keystore.ks
diff --git a/contrib/sandbox/README b/contrib/sandbox/README
new file mode 100644
index 0000000..d3b0800
--- /dev/null
+++ b/contrib/sandbox/README
@@ -0,0 +1,39 @@
+README:  JSF RI Sandbox
+=================================
+
+Installation
+-----------------------
+ - Unzip jsf-ri-sandbox-0.1.zip
+ - Include jsf-ri-sandbox.jar in the 
+   WEB-INF/lib directory of your web
+   application
+   
+Minimum Requirements
+-----------------------
+J2SE 1.5
+JSF 1.1
+
+Dependencies
+-----------------------
+Shale Remoting 1.0.4
+Commons Logging 1.1
+
+For Multi-File Upload only:
+    Commons HTTP Client 3.0.1
+    Commons Codec 1.3
+    Commons IO 1.2
+   
+Documentation
+-----------------------
+The RI Sandbox is a collection of (currently) 12 components, ranging from a 
+fully 508-compliant DataTable to UIComponent wrappers for the Yahoo! User
+Interface JavaScript component library.  More complete documentation can
+be found at https://javaserverfaces.dev.java.net/sandbox/, or in the 
+Javadoc and TLD docs included with bundle.
+
+Issue Tracker
+-----------------------
+If you have any issues with any of these components, please file an
+issue on the tracker here:
+
+https://javaserverfaces.dev.java.net/issues/query.cgi?subcomponent=sandbox
diff --git a/contrib/sandbox/build.xml b/contrib/sandbox/build.xml
new file mode 100644
index 0000000..9da0030
--- /dev/null
+++ b/contrib/sandbox/build.xml
@@ -0,0 +1,375 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!-- ************ JSF build file ************************************** -->
+
+<project name="JSF-RI-SANDBOX" default="main" basedir=".">
+
+
+    <!-- ************ Per user local properties ******************************* -->
+
+    <property file="${user.home}/build.properties"/>
+    <property file="../../build.properties"/>
+    <import file="${jsf.build.home}/common/ant/common.xml"/>
+    <property name="tasks.home" value="${myenv.TASKS_HOME}"/>
+
+    <property name="name" value="jsf-ri-sandbox"/>
+    <property name="sb.impl.version" value="0.9"/>
+    <property name="impl.name" value="JSF RI Sandbox"/>
+
+    <!-- ******************* Structural ************************** -->
+
+    <!-- The base directory for compilation targets -->
+    <property name="build.dir" value="${basedir}/build"/>
+    <property name="build.classes.dir" value="${build.dir}/classes"/>
+    <property name="build.generate.dir" value="${build.dir}/generate"/>
+    <property name="dep.jar.dir" value="${build.classes.dir}/META-INF/static/jars/" />
+
+    <!-- The base directory for distribution targets -->
+    <property name="dist.dir" value="${basedir}/dist"/>
+
+    <!-- The base directory for component sources -->
+    <property name="source.dir" value="${basedir}/src/java"/>
+
+    <!-- The base resource directory -->
+    <property name="resource.dir" value="${basedir}/src/resources"/>
+
+    <!-- Dependencies -->
+    <property name="sandbox.dependency.base.dir" value="${basedir}/dependencies"/>
+    <property name="maven.mirror" value="http://mirrors.ibiblio.org/pub/mirrors/maven2"/>
+    <property name="sourceforge.mirror" value="http://superb-east.dl.sourceforge.net/sourceforge"/>
+    
+    <path id="impl.compile.classpath">
+        <pathelement location="${javax.faces.jar}"/>
+        <path refid="sun.commons.classpath"/>
+        <path refid="compile.classpath"/>
+        <pathelement location="${tools.dir}/build/classes"/>
+    </path>
+
+
+    <!-- ************ Executable Targets ************************************** -->
+
+
+    <target name="init" description="Initialize and evaluate conditionals">
+        <echo message="-------- ${impl.name} ${impl.version} --------"/>
+    </target>
+
+    <target name="prepare" depends="init" description="Prepare build directory">
+        <mkdir dir="${build.dir}"/>
+        <mkdir dir="${build.generate.dir}"/>
+        <mkdir dir="${build.classes.dir}"/>
+        <mkdir dir="${build.classes.dir}/META-INF"/>
+        <mkdir dir="${build.dir}/javadocs"/>
+        <mkdir dir="${build.dir}/tlddocs"/>
+        <mkdir dir="${build.dir}/lib"/>       
+        <mkdir dir="${dep.jar.dir}"/>       
+    </target>
+
+    <target name="update" description="Download project dependencies">
+        <mkdir dir="${sandbox.dependency.base.dir}/downloads/"/>
+        <!-- setup the proxy if necessary -->
+        <if>
+            <and>
+                <length string="${http.proxy.host}" when="greater" length="0"/>
+                <length string="${http.proxy.port}" when="greater" length="0"/>
+            </and>
+            <then>
+                <setproxy proxyhost="${http.proxy.host}" proxyport="${http.proxy.port}"/>
+            </then>
+        </if>
+        <!-- left for information purposes
+        <if>
+            <not>
+                <available file="${logging.jar}" property="ignored"/>
+            </not>
+            <then>
+                <get src="${maven.mirror}/commons-logging/commons-logging/${logging.version}/commons-logging-${logging.version}.jar"
+                     dest="${logging.jar}"
+                     usetimestamp="true"/>
+            </then>
+        </if>
+	-->
+    </target>
+
+    <path id="sandbox.compile.classpath">
+        <fileset dir="${sandbox.dependency.base.dir}" includes="*.jar"/>
+    </path>
+
+    <target name="compile" depends="prepare,update" description="Just compile the classes">
+        <if>
+            <equals arg1="${container.name}" arg2="glassfish"/>
+            <then>
+                <property name="exclude.path" value="com/sun/faces/sandbox/web/**"/>
+            </then>
+            <else>
+                <property name="exclude.path" value="com/sun/faces/vendor/**,com/sun/faces/sandbox/web/**"/>
+            </else>
+        </if>
+
+        <!-- Run javac through everything -->
+        <jsf.javac srcdir="${source.dir}"
+                   destdir="${build.classes.dir}"
+                   excludes="${exclude.path}"
+                   source="1.5"
+                   target="1.5">
+            <classpath>
+                <path refid="sandbox.compile.classpath"/>
+                <path refid="impl.compile.classpath"/>
+            </classpath>
+        </jsf.javac>
+
+        <copy toDir="${build.classes.dir}">
+            <fileset dir="${resource.dir}" />
+        </copy>
+    </target>
+
+    <target name="clean" description="Clean build and distribution directories">
+
+        <delete dir="${build.dir}"/>
+        <delete dir="${dist.dir}"/>
+
+        <delete>
+            <fileset dir="." includes="**/*~" defaultexcludes="no"/>
+            <fileset dir="." includes="**/.nbattrs" defaultexcludes="no"/>
+        </delete>
+    </target>
+
+    <target name="all" depends="clean,prepare,compile"
+            description="Clean and compile all components"/>
+
+    <!-- Create the source distribution -->
+    <target name="sandbox.source">
+        <zip destfile="${dist.dir}/jsf-ri-sandbox-src-${sb.impl.version}.zip">
+            <zipfileset dir="${basedir}"
+                        includes="build.xml"
+                        prefix="jsf-ri-sandbox-src-${sb.impl.version}"/>
+            <zipfileset dir="${source.dir}"
+                        excludes="**/CVS/**"
+                        prefix="jsf-ri-sandbox-src-${sb.impl.version}/src"/>
+            <zipfileset dir="${basedir}"
+                        includes="conf/** web/** build.xml"
+                        prefix="jsf-ri-sandbox-src-${sb.impl.version}"/>
+        </zip>
+    </target>
+
+    <target name="check.generation.necessity">
+        <uptodate property="skip.generation"
+                  targetfile="${build.generate.dir}/last-generation">
+            <srcfiles dir="${resource.dir}/META-INF">
+                <include name="faces-config.xml"/>
+            </srcfiles>
+        </uptodate>
+    </target>
+
+    <target name="generate" depends="check.generation.necessity">
+            <!-- unless="skip.generation" -->
+
+        <delete dir="${build.generate.dir}"/>
+        <mkdir dir="${build.generate.dir}"/>
+        <!--
+        <antcall target="tools.javac"/>
+        -->
+        <taskdef name="generateComponents"
+                 classname="com.sun.faces.ant.ComponentGenTask">
+            <classpath>
+                <path refid="sun.commons.classpath"/>
+                <pathelement location="${tools.dir}/build/classes"/>
+            </classpath>
+        </taskdef>
+        <generateComponents
+              generatorConfig="${basedir}/conf/SandboxTaglib12.properties"
+              facesConfig="${resource.dir}/META-INF/faces-config.xml"
+              fork="true">
+            <classpath>
+                <path refid="sun.commons.classpath"/>
+                <path refid="compile.classpath"/>
+                <pathelement location="${javax.faces-api.jar}"/>
+                <pathelement location="${tools.dir}/build/classes"/>
+            </classpath>
+            <assertions>
+                <enable/>
+            </assertions>
+            <sysproperty key="java.endorsed.dirs" value="${endorsed.dirs}"/>
+        </generateComponents>
+
+        <!--
+        <copy todir="${build.generate.dir}/javax/faces/component/html"
+            file="${src.dir}/javax/faces/component/html/package.html"/>
+        -->
+
+        <touch file="${build.generate.dir}/last-generation"/>
+    </target>
+
+    <target name="dist" depends="jars" description="Build distribution files">
+
+        <mkdir dir="${dist.dir}"/>
+
+        <antcall target="docs"/>
+        
+        <!-- Create the binary distribution -->
+        <delete file="${dist.dir}/jsf-ri-sandbox-${sb.impl.version}.zip"/>
+        <delete file="${dist.dir}/jsf-ri-sandbox-src-${sb.impl.version}.zip"/>
+        <zip destfile="${dist.dir}/jsf-ri-sandbox-${sb.impl.version}.zip">
+            <zipfileset dir="${build.dir}"
+                        includes="lib/**,tlddocs/**"
+                        prefix="jsf-ri-sandbox-${sb.impl.version}"/>
+        </zip>
+
+        <!-- Create a buildable source distribution -->
+        <zip destfile="${dist.dir}/jsf-ri-sandbox-src-${sb.impl.version}.zip">
+            <zipfileset dir="${basedir}"
+                        includes="build.xml build-tests.xml README COPYRIGHT LICENSE*.*"
+                        prefix="jsf-ri-sandbox-src-${sb.impl.version}"/>
+            <zipfileset dir="${source.dir}"
+                        excludes="**/CVS/**"
+                        prefix="jsf-ri-sandbox-src-${sb.impl.version}/src"/>
+
+        </zip>
+        <antcall target="sandbox.source"/>
+    </target>
+    
+    <target name="docs" description="Generate the tld and javadoc documentation">
+        <antcall target="tlddocs"/>
+        <antcall target="javadoc"/>
+    </target>
+
+    <target name="tlddocs" description="Generate tld docs">
+        <java fork="true" jar="${tlddoc.jar}">
+            <arg line="-d ${build.dir}/tlddocs"/>
+            <arg line="-windowtitle jsf-ri-sandbox-${sb.impl.version}"/>
+            <arg value="${resource.dir}/META-INF/sandbox.tld"/>
+        </java>
+    </target>
+
+    <target name="javadoc" description="Generate javadocs">
+        <mkdir dir="${build.dir}/javadocs" />
+        <javadoc packagenames="com.sun.faces.sandbox."
+                verbose="false"
+                defaultexcludes="yes"
+                classpathref="impl.compile.classpath"
+                destdir="${build.dir}/javadocs"
+                header="${javadoc.headertext}"
+                footer="${javadoc.footertext}"
+                author="true"
+                version="true"
+                access="protected"
+                useexternalfile="yes"
+                use="true">
+           <link offline="true"
+                 href="http://java.sun.com/javase/6/docs/api/package-list"
+                 packagelistloc="${jsf.build.home}/common/ant/package-list" />
+                 
+            <fileset dir="${source.dir}" defaultexcludes="yes" />
+        </javadoc>
+    </target>
+
+    <target name="getpassword" unless="keystore.pass">
+        <input message="Please enter the keystore password:" addproperty="keystore.pass" />
+    </target>
+
+    <!--
+         ===================================================================
+           Create the jars
+         ===================================================================
+    -->
+
+    <target name="jars" depends="compile,getpassword">
+        <if>
+            <available file="keystore.ks" property="ignored" />
+            <then>
+                <signjar keystore="keystore.ks" alias="mykey" storepass="${keystore.pass}" lazy="yes">
+                    <fileset dir="${dep.jar.dir}">
+                        <include name="*.jar" />
+                    </fileset>
+                </signjar>
+            </then>
+        </if>
+
+        <jsf.manifested.jar jarfile="${build.dir}/lib/${name}-${sb.impl.version}.jar"
+                            basedir="${build.classes.dir}"
+                            extension-name=""/>       
+    </target>
+
+    <target name="nightly" depends="clean,dist" description="Upload nightly build to java.net">
+        <if>
+            <available file="${tasks.home}"/>
+            <then>
+                <sequential>
+                    <taskdef resource="org/kohsuke/javanettasks.properties">
+                        <classpath>
+                            <pathelement location="${tasks.home}/javanettasks-1.0.12.jar"/>
+                            <fileset dir="${tasks.home}/lib" includes="*.jar"/>
+                        </classpath>
+                    </taskdef>
+
+                    <ant dir="demo/" target="dist" inheritAll="false"/>
+                    <javaNetUpload projectName="javaserverfaces"
+                                   toFile="/RI Sandbox/${sb.impl.version}/jsf-ri-sandbox-${sb.impl.version}.jar"
+                                   fromFile="${build.dir}/lib/jsf-ri-sandbox-${sb.impl.version}.jar"
+                                   fileDescription="Nightly snapshot of the Sandbox components"
+                                   overwrite="yes"/>
+                    <javaNetUpload projectName="javaserverfaces"
+                                   toFile="/RI Sandbox/${sb.impl.version}/jsf-ri-sandbox-${sb.impl.version}.zip"
+                                   fromFile="${dist.dir}/jsf-ri-sandbox-${sb.impl.version}.zip"
+                                   fileDescription="Nightly snapshot of the Sandbox components, jar and javadocs"
+                                   overwrite="yes"/>
+                    <javaNetUpload projectName="javaserverfaces"
+                                   toFile="/RI Sandbox/${sb.impl.version}/jsf-ri-sandbox-src-${sb.impl.version}.zip"
+                                   fromFile="${dist.dir}/jsf-ri-sandbox-src-${sb.impl.version}.zip"
+                                   fileDescription="Nightly snapshot of the source bundle for the Sandbox components"
+                                   overwrite="yes"/>
+                    <javaNetUpload projectName="javaserverfaces"
+                                   toFile="/RI Sandbox/${sb.impl.version}/README"
+                                   fromFile="README"
+                                   fileDescription=""
+                                   overwrite="yes"/>
+                </sequential>
+            </then>
+            <else>
+                <fail message="Javanettasks version 1.0.12 is not available at the location referred by TASKS_HOME (${tasks.home}).  Ensure that the TASKS_HOME environment variable is properly set."/>
+            </else>
+        </if>
+    </target>
+
+    <target name="main" depends="jars"/>
+</project>
diff --git a/contrib/sandbox/src/java/com/sun/faces/sandbox/component/AccessibleHtmlColumn.java b/contrib/sandbox/src/java/com/sun/faces/sandbox/component/AccessibleHtmlColumn.java
new file mode 100644
index 0000000..3b7f6a2
--- /dev/null
+++ b/contrib/sandbox/src/java/com/sun/faces/sandbox/component/AccessibleHtmlColumn.java
@@ -0,0 +1,166 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.sandbox.component;
+
+import javax.faces.context.FacesContext;
+import javax.faces.el.ValueBinding;
+
+/**
+ * <p>Represents a column that will be rendered
+ * in an HTML <code>table</code> element.</p>
+ */
+public class AccessibleHtmlColumn extends javax.faces.component.UIColumn {
+
+
+
+    public AccessibleHtmlColumn() {
+        super();
+    }
+
+
+    /**
+     * <p>The standard component type for this component.</p>
+     */
+    public static final String COMPONENT_TYPE =
+         "com.sun.faces.sandbox.AccessibleHtmlColumn";
+
+
+    private String footerClass;
+
+    /**
+     * <p>Return the value of the <code>footerClass</code> property.</p>
+     * <p>Contents: Space-separated list of CSS style class(es) that will be
+     * applied to any footer generated for this column.
+     */
+    public String getFooterClass() {
+        if (null != this.footerClass) {
+            return this.footerClass;
+        }
+        ValueBinding _vb = getValueBinding("footerClass");
+        if (_vb != null) {
+            return (String) _vb.getValue(getFacesContext());
+        } else {
+            return null;
+        }
+    }
+
+    /**
+     * <p>Set the value of the <code>footerClass</code> property.</p>
+     */
+    public void setFooterClass(String footerClass) {
+        this.footerClass = footerClass;
+    }
+
+
+    private String headerClass;
+
+    /**
+     * <p>Return the value of the <code>headerClass</code> property.</p>
+     * <p>Contents: Space-separated list of CSS style class(es) that will be
+     * applied to any header generated for this column.
+     */
+    public String getHeaderClass() {
+        if (null != this.headerClass) {
+            return this.headerClass;
+        }
+        ValueBinding _vb = getValueBinding("headerClass");
+        if (_vb != null) {
+            return (String) _vb.getValue(getFacesContext());
+        } else {
+            return null;
+        }
+    }
+
+    /**
+     * <p>Set the value of the <code>headerClass</code> property.</p>
+     */
+    public void setHeaderClass(String headerClass) {
+        this.headerClass = headerClass;
+    }
+
+
+    private boolean rowHeader;
+    private boolean rowHeader_set;
+
+    /**
+     * <p>Return the value of the <code>rowHeader</code> property.</p>
+     * <p>Contents:  Flag indicating that this column is a row header column and
+     * therefore cells in this column should be rendered with "th"
+     * instead of "td" and must have the 'scope="row"' attribute.
+     */
+    public boolean getRowHeader() {
+        if (rowHeader_set) {
+            return rowHeader;
+        } else {
+            ValueBinding _vb = getValueBinding("rowHeader");
+            return (_vb != null
+                 && ((Boolean) _vb.getValue(getFacesContext())).booleanValue());
+        }
+    }
+
+    public void setRowHeader(boolean rowHeader) {
+        rowHeader_set = true;
+        this.rowHeader = rowHeader;
+    }
+
+
+    private Object[] _values;
+
+    public Object saveState(FacesContext _context) {
+        if (_values == null) {
+            _values = new Object[3];
+        }
+        _values[0] = super.saveState(_context);
+        _values[1] = footerClass;
+        _values[2] = headerClass;
+        return _values;
+}
+
+
+    public void restoreState(FacesContext _context, Object _state) {
+        _values = (Object[]) _state;
+        super.restoreState(_context, _values[0]);
+        this.footerClass = (String) _values[1];
+        this.headerClass = (String) _values[2];
+    }
+
+
+}
diff --git a/contrib/sandbox/src/java/com/sun/faces/sandbox/component/AccessibleHtmlDataTable.java b/contrib/sandbox/src/java/com/sun/faces/sandbox/component/AccessibleHtmlDataTable.java
new file mode 100644
index 0000000..461d7b8
--- /dev/null
+++ b/contrib/sandbox/src/java/com/sun/faces/sandbox/component/AccessibleHtmlDataTable.java
@@ -0,0 +1,991 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.sandbox.component;
+
+import javax.faces.context.FacesContext;
+import javax.faces.el.ValueBinding;
+
+/**
+ * <p>Represents a set of repeating data (segregated into
+ * columns by child UIColumn components) that will
+ * be rendered in an HTML <code>table</code> element.</p>
+ * <p>By default, the <code>rendererType</code> property must be set to "<code>javax.faces.Table</code>".
+ * This value can be changed by calling the <code>setRendererType()</code> method.</p>
+ */
+public class AccessibleHtmlDataTable extends javax.faces.component.UIData {
+
+
+
+    public AccessibleHtmlDataTable() {
+        super();
+        setRendererType("com.sun.faces.sandbox.AccessibleTableRenderer");
+    }
+
+
+    /**
+     * <p>The standard component type for this component.</p>
+     */
+    public static final String COMPONENT_TYPE =
+         "com.sun.faces.sandbox.AccessibleHtmlDataTable";
+
+
+    private String bgcolor;
+
+    /**
+     * <p>Return the value of the <code>bgcolor</code> property.</p>
+     * <p>Contents: Name or code of the background color for this table.
+     */
+    public String getBgcolor() {
+        if (null != this.bgcolor) {
+            return this.bgcolor;
+        }
+        ValueBinding _vb = getValueBinding("bgcolor");
+        if (_vb != null) {
+            return (String) _vb.getValue(getFacesContext());
+        } else {
+            return null;
+        }
+    }
+
+    /**
+     * <p>Set the value of the <code>bgcolor</code> property.</p>
+     */
+    public void setBgcolor(String bgcolor) {
+        this.bgcolor = bgcolor;
+    }
+
+
+    private int border = Integer.MIN_VALUE;
+    private boolean border_set = false;
+
+    /**
+     * <p>Return the value of the <code>border</code> property.</p>
+     * <p>Contents: Width (in pixels) of the border to be drawn
+     * around this table.
+     */
+    public int getBorder() {
+        if (this.border_set) {
+            return this.border;
+        }
+        ValueBinding _vb = getValueBinding("border");
+        if (_vb != null) {
+            Object _result = _vb.getValue(getFacesContext());
+            if (_result == null) {
+                return Integer.MIN_VALUE;
+            } else {
+                return ((Integer) _result).intValue();
+            }
+        } else {
+            return this.border;
+        }
+    }
+
+    /**
+     * <p>Set the value of the <code>border</code> property.</p>
+     */
+    public void setBorder(int border) {
+        this.border = border;
+        this.border_set = true;
+    }
+
+
+    private String bodyrows;
+    private boolean bodyrows_set = false;
+
+    /**
+     * <p>Return the value of the <code>bodyrows</code> property.</p>
+     * <p>Contents: Comma separated list of row indices for which a new
+     * "tbody" element should be started (and any
+     * previously opened one should be ended).</p>
+     */
+    public String getBodyrows() {
+         if (this.bodyrows_set) {
+            return this.bodyrows;
+        }
+        ValueBinding _vb = getValueBinding("bodyrows");
+        if (_vb != null) {
+            return (String) _vb.getValue(getFacesContext());
+        } else {
+            return null;
+        }
+    }
+
+    /**
+     * <p>Sets the value of the <code>bodyrows</code> property.</p>     
+     */
+    public void setBodyrows(String bodyrows) {
+        this.bodyrows = bodyrows;
+        this.bodyrows_set = true;
+    }
+
+
+
+    private String captionClass;
+
+    /**
+     * <p>Return the value of the <code>captionClass</code> property.</p>
+     * <p>Contents: Space-separated list of CSS style class(es) that will be
+     * applied to any caption generated for this table.
+     */
+    public String getCaptionClass() {
+        if (null != this.captionClass) {
+            return this.captionClass;
+        }
+        ValueBinding _vb = getValueBinding("captionClass");
+        if (_vb != null) {
+            return (String) _vb.getValue(getFacesContext());
+        } else {
+            return null;
+        }
+    }
+
+    /**
+     * <p>Set the value of the <code>captionClass</code> property.</p>
+     */
+    public void setCaptionClass(String captionClass) {
+        this.captionClass = captionClass;
+    }
+
+
+    private String captionStyle;
+
+    /**
+     * <p>Return the value of the <code>captionStyle</code> property.</p>
+     * <p>Contents: CSS style(s) to be applied when this caption is rendered.
+     */
+    public String getCaptionStyle() {
+        if (null != this.captionStyle) {
+            return this.captionStyle;
+        }
+        ValueBinding _vb = getValueBinding("captionStyle");
+        if (_vb != null) {
+            return (String) _vb.getValue(getFacesContext());
+        } else {
+            return null;
+        }
+    }
+
+    /**
+     * <p>Set the value of the <code>captionStyle</code> property.</p>
+     */
+    public void setCaptionStyle(String captionStyle) {
+        this.captionStyle = captionStyle;
+    }
+
+
+    private String cellpadding;
+
+    /**
+     * <p>Return the value of the <code>cellpadding</code> property.</p>
+     * <p>Contents: Definition of how much space the user agent should
+     * leave between the border of each cell and its contents.
+     */
+    public String getCellpadding() {
+        if (null != this.cellpadding) {
+            return this.cellpadding;
+        }
+        ValueBinding _vb = getValueBinding("cellpadding");
+        if (_vb != null) {
+            return (String) _vb.getValue(getFacesContext());
+        } else {
+            return null;
+        }
+    }
+
+    /**
+     * <p>Set the value of the <code>cellpadding</code> property.</p>
+     */
+    public void setCellpadding(String cellpadding) {
+        this.cellpadding = cellpadding;
+    }
+
+
+    private String cellspacing;
+
+    /**
+     * <p>Return the value of the <code>cellspacing</code> property.</p>
+     * <p>Contents: Definition of how much space the user agent should
+     * leave between the left side of the table and the
+     * leftmost column, the top of the table and the top of
+     * the top side of the topmost row, and so on for the
+     * right and bottom of the table.  It also specifies
+     * the amount of space to leave between cells.
+     */
+    public String getCellspacing() {
+        if (null != this.cellspacing) {
+            return this.cellspacing;
+        }
+        ValueBinding _vb = getValueBinding("cellspacing");
+        if (_vb != null) {
+            return (String) _vb.getValue(getFacesContext());
+        } else {
+            return null;
+        }
+    }
+
+    /**
+     * <p>Set the value of the <code>cellspacing</code> property.</p>
+     */
+    public void setCellspacing(String cellspacing) {
+        this.cellspacing = cellspacing;
+    }
+
+
+    private String columnClasses;
+
+    /**
+     * <p>Return the value of the <code>columnClasses</code> property.</p>
+     * <p>Contents: Comma-delimited list of CSS style classes that will be applied
+     * to the columns of this table.  A space separated list of
+     * classes may also be specified for any individual column.  If
+     * the number of elements in this list is less than the number of
+     * columns specified in the "columns" attribute, no "class"
+     * attribute is output for each column greater than the number of
+     * elements in the list.  If the number of elements in the list
+     * is greater than the number of columns specified in the
+     * "columns" attribute, the elements at the posisiton in the list
+     * after the value of the "columns" attribute are ignored.
+     */
+    public String getColumnClasses() {
+        if (null != this.columnClasses) {
+            return this.columnClasses;
+        }
+        ValueBinding _vb = getValueBinding("columnClasses");
+        if (_vb != null) {
+            return (String) _vb.getValue(getFacesContext());
+        } else {
+            return null;
+        }
+    }
+
+    /**
+     * <p>Set the value of the <code>columnClasses</code> property.</p>
+     */
+    public void setColumnClasses(String columnClasses) {
+        this.columnClasses = columnClasses;
+    }
+
+
+    private String dir;
+
+    /**
+     * <p>Return the value of the <code>dir</code> property.</p>
+     * <p>Contents: Direction indication for text that does not inherit directionality.
+     * Valid values are "LTR" (left-to-right) and "RTL" (right-to-left).
+     */
+    public String getDir() {
+        if (null != this.dir) {
+            return this.dir;
+        }
+        ValueBinding _vb = getValueBinding("dir");
+        if (_vb != null) {
+            return (String) _vb.getValue(getFacesContext());
+        } else {
+            return null;
+        }
+    }
+
+    /**
+     * <p>Set the value of the <code>dir</code> property.</p>
+     */
+    public void setDir(String dir) {
+        this.dir = dir;
+    }
+
+
+    private String footerClass;
+
+    /**
+     * <p>Return the value of the <code>footerClass</code> property.</p>
+     * <p>Contents: Space-separated list of CSS style class(es) that will be
+     * applied to any footer generated for this table.
+     */
+    public String getFooterClass() {
+        if (null != this.footerClass) {
+            return this.footerClass;
+        }
+        ValueBinding _vb = getValueBinding("footerClass");
+        if (_vb != null) {
+            return (String) _vb.getValue(getFacesContext());
+        } else {
+            return null;
+        }
+    }
+
+    /**
+     * <p>Set the value of the <code>footerClass</code> property.</p>
+     */
+    public void setFooterClass(String footerClass) {
+        this.footerClass = footerClass;
+    }
+
+
+    private String frame;
+
+    /**
+     * <p>Return the value of the <code>frame</code> property.</p>
+     * <p>Contents: Code specifying which sides of the frame surrounding
+     * this table will be visible.  Valid values are:
+     * none (no sides, default value); above (top side only);
+     * below (bottom side only); hsides (top and bottom sides
+     * only); vsides (right and left sides only); lhs (left
+     * hand side only); rhs (right hand side only); box
+     * (all four sides); and border (all four sides).
+     */
+    public String getFrame() {
+        if (null != this.frame) {
+            return this.frame;
+        }
+        ValueBinding _vb = getValueBinding("frame");
+        if (_vb != null) {
+            return (String) _vb.getValue(getFacesContext());
+        } else {
+            return null;
+        }
+    }
+
+    /**
+     * <p>Set the value of the <code>frame</code> property.</p>
+     */
+    public void setFrame(String frame) {
+        this.frame = frame;
+    }
+
+
+    private String headerClass;
+
+    /**
+     * <p>Return the value of the <code>headerClass</code> property.</p>
+     * <p>Contents: Space-separated list of CSS style class(es) that will be
+     * applied to any header generated for this table.
+     */
+    public String getHeaderClass() {
+        if (null != this.headerClass) {
+            return this.headerClass;
+        }
+        ValueBinding _vb = getValueBinding("headerClass");
+        if (_vb != null) {
+            return (String) _vb.getValue(getFacesContext());
+        } else {
+            return null;
+        }
+    }
+
+    /**
+     * <p>Set the value of the <code>headerClass</code> property.</p>
+     */
+    public void setHeaderClass(String headerClass) {
+        this.headerClass = headerClass;
+    }
+
+
+    private String lang;
+
+    /**
+     * <p>Return the value of the <code>lang</code> property.</p>
+     * <p>Contents: Code describing the language used in the generated markup
+     * for this component.
+     */
+    public String getLang() {
+        if (null != this.lang) {
+            return this.lang;
+        }
+        ValueBinding _vb = getValueBinding("lang");
+        if (_vb != null) {
+            return (String) _vb.getValue(getFacesContext());
+        } else {
+            return null;
+        }
+    }
+
+    /**
+     * <p>Set the value of the <code>lang</code> property.</p>
+     */
+    public void setLang(String lang) {
+        this.lang = lang;
+    }
+
+
+    private String onclick;
+
+    /**
+     * <p>Return the value of the <code>onclick</code> property.</p>
+     * <p>Contents: Javascript code executed when a pointer button is
+     * clicked over this element.
+     */
+    public String getOnclick() {
+        if (null != this.onclick) {
+            return this.onclick;
+        }
+        ValueBinding _vb = getValueBinding("onclick");
+        if (_vb != null) {
+            return (String) _vb.getValue(getFacesContext());
+        } else {
+            return null;
+        }
+    }
+
+    /**
+     * <p>Set the value of the <code>onclick</code> property.</p>
+     */
+    public void setOnclick(String onclick) {
+        this.onclick = onclick;
+    }
+
+
+    private String ondblclick;
+
+    /**
+     * <p>Return the value of the <code>ondblclick</code> property.</p>
+     * <p>Contents: Javascript code executed when a pointer button is
+     * double clicked over this element.
+     */
+    public String getOndblclick() {
+        if (null != this.ondblclick) {
+            return this.ondblclick;
+        }
+        ValueBinding _vb = getValueBinding("ondblclick");
+        if (_vb != null) {
+            return (String) _vb.getValue(getFacesContext());
+        } else {
+            return null;
+        }
+    }
+
+    /**
+     * <p>Set the value of the <code>ondblclick</code> property.</p>
+     */
+    public void setOndblclick(String ondblclick) {
+        this.ondblclick = ondblclick;
+    }
+
+
+    private String onkeydown;
+
+    /**
+     * <p>Return the value of the <code>onkeydown</code> property.</p>
+     * <p>Contents: Javascript code executed when a key is
+     * pressed down over this element.
+     */
+    public String getOnkeydown() {
+        if (null != this.onkeydown) {
+            return this.onkeydown;
+        }
+        ValueBinding _vb = getValueBinding("onkeydown");
+        if (_vb != null) {
+            return (String) _vb.getValue(getFacesContext());
+        } else {
+            return null;
+        }
+    }
+
+    /**
+     * <p>Set the value of the <code>onkeydown</code> property.</p>
+     */
+    public void setOnkeydown(String onkeydown) {
+        this.onkeydown = onkeydown;
+    }
+
+
+    private String onkeypress;
+
+    /**
+     * <p>Return the value of the <code>onkeypress</code> property.</p>
+     * <p>Contents: Javascript code executed when a key is
+     * pressed and released over this element.
+     */
+    public String getOnkeypress() {
+        if (null != this.onkeypress) {
+            return this.onkeypress;
+        }
+        ValueBinding _vb = getValueBinding("onkeypress");
+        if (_vb != null) {
+            return (String) _vb.getValue(getFacesContext());
+        } else {
+            return null;
+        }
+    }
+
+    /**
+     * <p>Set the value of the <code>onkeypress</code> property.</p>
+     */
+    public void setOnkeypress(String onkeypress) {
+        this.onkeypress = onkeypress;
+    }
+
+
+    private String onkeyup;
+
+    /**
+     * <p>Return the value of the <code>onkeyup</code> property.</p>
+     * <p>Contents: Javascript code executed when a key is
+     * released over this element.
+     */
+    public String getOnkeyup() {
+        if (null != this.onkeyup) {
+            return this.onkeyup;
+        }
+        ValueBinding _vb = getValueBinding("onkeyup");
+        if (_vb != null) {
+            return (String) _vb.getValue(getFacesContext());
+        } else {
+            return null;
+        }
+    }
+
+    /**
+     * <p>Set the value of the <code>onkeyup</code> property.</p>
+     */
+    public void setOnkeyup(String onkeyup) {
+        this.onkeyup = onkeyup;
+    }
+
+
+    private String onmousedown;
+
+    /**
+     * <p>Return the value of the <code>onmousedown</code> property.</p>
+     * <p>Contents: Javascript code executed when a pointer button is
+     * pressed down over this element.
+     */
+    public String getOnmousedown() {
+        if (null != this.onmousedown) {
+            return this.onmousedown;
+        }
+        ValueBinding _vb = getValueBinding("onmousedown");
+        if (_vb != null) {
+            return (String) _vb.getValue(getFacesContext());
+        } else {
+            return null;
+        }
+    }
+
+    /**
+     * <p>Set the value of the <code>onmousedown</code> property.</p>
+     */
+    public void setOnmousedown(String onmousedown) {
+        this.onmousedown = onmousedown;
+    }
+
+
+    private String onmousemove;
+
+    /**
+     * <p>Return the value of the <code>onmousemove</code> property.</p>
+     * <p>Contents: Javascript code executed when a pointer button is
+     * moved within this element.
+     */
+    public String getOnmousemove() {
+        if (null != this.onmousemove) {
+            return this.onmousemove;
+        }
+        ValueBinding _vb = getValueBinding("onmousemove");
+        if (_vb != null) {
+            return (String) _vb.getValue(getFacesContext());
+        } else {
+            return null;
+        }
+    }
+
+    /**
+     * <p>Set the value of the <code>onmousemove</code> property.</p>
+     */
+    public void setOnmousemove(String onmousemove) {
+        this.onmousemove = onmousemove;
+    }
+
+
+    private String onmouseout;
+
+    /**
+     * <p>Return the value of the <code>onmouseout</code> property.</p>
+     * <p>Contents: Javascript code executed when a pointer button is
+     * moved away from this element.
+     */
+    public String getOnmouseout() {
+        if (null != this.onmouseout) {
+            return this.onmouseout;
+        }
+        ValueBinding _vb = getValueBinding("onmouseout");
+        if (_vb != null) {
+            return (String) _vb.getValue(getFacesContext());
+        } else {
+            return null;
+        }
+    }
+
+    /**
+     * <p>Set the value of the <code>onmouseout</code> property.</p>
+     */
+    public void setOnmouseout(String onmouseout) {
+        this.onmouseout = onmouseout;
+    }
+
+
+    private String onmouseover;
+
+    /**
+     * <p>Return the value of the <code>onmouseover</code> property.</p>
+     * <p>Contents: Javascript code executed when a pointer button is
+     * moved onto this element.
+     */
+    public String getOnmouseover() {
+        if (null != this.onmouseover) {
+            return this.onmouseover;
+        }
+        ValueBinding _vb = getValueBinding("onmouseover");
+        if (_vb != null) {
+            return (String) _vb.getValue(getFacesContext());
+        } else {
+            return null;
+        }
+    }
+
+    /**
+     * <p>Set the value of the <code>onmouseover</code> property.</p>
+     */
+    public void setOnmouseover(String onmouseover) {
+        this.onmouseover = onmouseover;
+    }
+
+
+    private String onmouseup;
+
+    /**
+     * <p>Return the value of the <code>onmouseup</code> property.</p>
+     * <p>Contents: Javascript code executed when a pointer button is
+     * released over this element.
+     */
+    public String getOnmouseup() {
+        if (null != this.onmouseup) {
+            return this.onmouseup;
+        }
+        ValueBinding _vb = getValueBinding("onmouseup");
+        if (_vb != null) {
+            return (String) _vb.getValue(getFacesContext());
+        } else {
+            return null;
+        }
+    }
+
+    /**
+     * <p>Set the value of the <code>onmouseup</code> property.</p>
+     */
+    public void setOnmouseup(String onmouseup) {
+        this.onmouseup = onmouseup;
+    }
+
+
+    private String rowClasses;
+
+    /**
+     * <p>Return the value of the <code>rowClasses</code> property.</p>
+     * <p>Contents: Comma-delimited list of CSS style classes that will be applied
+     * to the rows of this table.  A space separated list of classes
+     * may also be specified for any individual row.  Thes styles are
+     * applied, in turn, to each row in the table.  For example, if
+     * the list has two elements, the first style class in the list
+     * is applied to the first row, the second to the second row, the
+     * first to the third row, the second to the fourth row, etc.  In
+     * other words, we keep iterating through the list until we reach
+     * the end, and then we start at the beginning again.
+     */
+    public String getRowClasses() {
+        if (null != this.rowClasses) {
+            return this.rowClasses;
+        }
+        ValueBinding _vb = getValueBinding("rowClasses");
+        if (_vb != null) {
+            return (String) _vb.getValue(getFacesContext());
+        } else {
+            return null;
+        }
+    }
+
+    /**
+     * <p>Set the value of the <code>rowClasses</code> property.</p>
+     */
+    public void setRowClasses(String rowClasses) {
+        this.rowClasses = rowClasses;
+    }
+
+
+    private String rules;
+
+    /**
+     * <p>Return the value of the <code>rules</code> property.</p>
+     * <p>Contents: Code specifying which rules will appear between cells  within this table.  Valid values are:  none (no rules,
+     * default value); groups (between row groups); rows
+     * (between rows only); cols (between columns only); and
+     * all (between all rows and columns).
+     */
+    public String getRules() {
+        if (null != this.rules) {
+            return this.rules;
+        }
+        ValueBinding _vb = getValueBinding("rules");
+        if (_vb != null) {
+            return (String) _vb.getValue(getFacesContext());
+        } else {
+            return null;
+        }
+    }
+
+    /**
+     * <p>Set the value of the <code>rules</code> property.</p>
+     */
+    public void setRules(String rules) {
+        this.rules = rules;
+    }
+
+
+    private String style;
+
+    /**
+     * <p>Return the value of the <code>style</code> property.</p>
+     * <p>Contents: CSS style(s) to be applied when this component is rendered.
+     */
+    public String getStyle() {
+        if (null != this.style) {
+            return this.style;
+        }
+        ValueBinding _vb = getValueBinding("style");
+        if (_vb != null) {
+            return (String) _vb.getValue(getFacesContext());
+        } else {
+            return null;
+        }
+    }
+
+    /**
+     * <p>Set the value of the <code>style</code> property.</p>
+     */
+    public void setStyle(String style) {
+        this.style = style;
+    }
+
+
+    private String styleClass;
+
+    /**
+     * <p>Return the value of the <code>styleClass</code> property.</p>
+     * <p>Contents: Space-separated list of CSS style class(es) to be applied when     this element is rendered.  This value must be passed through
+     * as the "class" attribute on generated markup.
+     */
+    public String getStyleClass() {
+        if (null != this.styleClass) {
+            return this.styleClass;
+        }
+        ValueBinding _vb = getValueBinding("styleClass");
+        if (_vb != null) {
+            return (String) _vb.getValue(getFacesContext());
+        } else {
+            return null;
+        }
+    }
+
+    /**
+     * <p>Set the value of the <code>styleClass</code> property.</p>
+     */
+    public void setStyleClass(String styleClass) {
+        this.styleClass = styleClass;
+    }
+
+
+    private String summary;
+
+    /**
+     * <p>Return the value of the <code>summary</code> property.</p>
+     * <p>Contents: Summary of this table's purpose and structure, for
+     * user agents rendering to non-visual media such as
+     * speech and Braille.
+     */
+    public String getSummary() {
+        if (null != this.summary) {
+            return this.summary;
+        }
+        ValueBinding _vb = getValueBinding("summary");
+        if (_vb != null) {
+            return (String) _vb.getValue(getFacesContext());
+        } else {
+            return null;
+        }
+    }
+
+    /**
+     * <p>Set the value of the <code>summary</code> property.</p>
+     */
+    public void setSummary(String summary) {
+        this.summary = summary;
+    }
+
+
+    private String title;
+
+    /**
+     * <p>Return the value of the <code>title</code> property.</p>
+     * <p>Contents: Advisory title information about markup elements generated
+     * for this component.
+     */
+    public String getTitle() {
+        if (null != this.title) {
+            return this.title;
+        }
+        ValueBinding _vb = getValueBinding("title");
+        if (_vb != null) {
+            return (String) _vb.getValue(getFacesContext());
+        } else {
+            return null;
+        }
+    }
+
+    /**
+     * <p>Set the value of the <code>title</code> property.</p>
+     */
+    public void setTitle(String title) {
+        this.title = title;
+    }
+
+
+    private String width;
+
+    /**
+     * <p>Return the value of the <code>width</code> property.</p>
+     * <p>Contents: Width of the entire table, for visual user agents.
+     */
+    public String getWidth() {
+        if (null != this.width) {
+            return this.width;
+        }
+        ValueBinding _vb = getValueBinding("width");
+        if (_vb != null) {
+            return (String) _vb.getValue(getFacesContext());
+        } else {
+            return null;
+        }
+    }
+
+    /**
+     * <p>Set the value of the <code>width</code> property.</p>
+     */
+    public void setWidth(String width) {
+        this.width = width;
+    }
+
+
+    private Object[] _values;
+
+    public Object saveState(FacesContext _context) {
+        if (_values == null) {
+            _values = new Object[31];
+        }
+        _values[0] = super.saveState(_context);
+        _values[1] = bgcolor;
+        _values[2] = new Integer(this.border);
+        _values[3] = this.border_set ? Boolean.TRUE : Boolean.FALSE;
+        _values[4] = captionClass;
+        _values[5] = captionStyle;
+        _values[6] = cellpadding;
+        _values[7] = cellspacing;
+        _values[8] = columnClasses;
+        _values[9] = dir;
+        _values[10] = footerClass;
+        _values[11] = frame;
+        _values[12] = headerClass;
+        _values[13] = lang;
+        _values[14] = onclick;
+        _values[15] = ondblclick;
+        _values[16] = onkeydown;
+        _values[17] = onkeypress;
+        _values[18] = onkeyup;
+        _values[19] = onmousedown;
+        _values[20] = onmousemove;
+        _values[21] = onmouseout;
+        _values[22] = onmouseover;
+        _values[23] = onmouseup;
+        _values[24] = rowClasses;
+        _values[25] = rules;
+        _values[26] = style;
+        _values[27] = styleClass;
+        _values[28] = summary;
+        _values[29] = title;
+        _values[30] = width;
+        return _values;
+}
+
+
+    public void restoreState(FacesContext _context, Object _state) {
+        _values = (Object[]) _state;
+        super.restoreState(_context, _values[0]);
+        this.bgcolor = (String) _values[1];
+        this.border = ((Integer) _values[2]).intValue();
+        this.border_set = ((Boolean) _values[3]).booleanValue();
+        this.captionClass = (String) _values[4];
+        this.captionStyle = (String) _values[5];
+        this.cellpadding = (String) _values[6];
+        this.cellspacing = (String) _values[7];
+        this.columnClasses = (String) _values[8];
+        this.dir = (String) _values[9];
+        this.footerClass = (String) _values[10];
+        this.frame = (String) _values[11];
+        this.headerClass = (String) _values[12];
+        this.lang = (String) _values[13];
+        this.onclick = (String) _values[14];
+        this.ondblclick = (String) _values[15];
+        this.onkeydown = (String) _values[16];
+        this.onkeypress = (String) _values[17];
+        this.onkeyup = (String) _values[18];
+        this.onmousedown = (String) _values[19];
+        this.onmousemove = (String) _values[20];
+        this.onmouseout = (String) _values[21];
+        this.onmouseover = (String) _values[22];
+        this.onmouseup = (String) _values[23];
+        this.rowClasses = (String) _values[24];
+        this.rules = (String) _values[25];
+        this.style = (String) _values[26];
+        this.styleClass = (String) _values[27];
+        this.summary = (String) _values[28];
+        this.title = (String) _values[29];
+        this.width = (String) _values[30];
+    }
+
+
+}
diff --git a/contrib/sandbox/src/java/com/sun/faces/sandbox/render/AccessibleTableRenderer.java b/contrib/sandbox/src/java/com/sun/faces/sandbox/render/AccessibleTableRenderer.java
new file mode 100644
index 0000000..5d30e8c
--- /dev/null
+++ b/contrib/sandbox/src/java/com/sun/faces/sandbox/render/AccessibleTableRenderer.java
@@ -0,0 +1,548 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.sandbox.render;
+
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import javax.faces.component.UIColumn;
+import javax.faces.component.UIComponent;
+import javax.faces.component.UIData;
+import javax.faces.context.FacesContext;
+import javax.faces.context.ResponseWriter;
+
+import com.sun.faces.RIConstants;
+import com.sun.faces.sandbox.util.Util;
+
+/** <p>Render a {@link UIData} component as a two-dimensional table.</p> */
+
+public class AccessibleTableRenderer extends HtmlBasicRenderer{
+
+    // ---------------------------------------------------------- Public Methods
+
+    private static final String HEADER_ID_LIST_ATTR_NAME =
+            RIConstants.FACES_PREFIX + "HeaderIds";
+
+    public void encodeBegin(FacesContext context, UIComponent component)
+          throws IOException {
+
+        if (context == null) {
+            throw new NullPointerException("param 'context' is null");
+        }
+        if (component == null) {
+            throw new NullPointerException("param 'component' is null");
+        }
+
+        // suppress rendering if "rendered" property on the component is
+        // false.
+        if (!component.isRendered()) {
+            return;
+        }
+        UIData data = (UIData) component;
+        data.setRowIndex(-1);
+
+        // Render the beginning of the table
+        ResponseWriter writer = context.getResponseWriter();
+        writer.startElement("table", data);
+        writeIdAttributeIfNecessary(context, writer, component);
+        String styleClass = (String) data.getAttributes().get("styleClass");
+        if (styleClass != null) {
+            writer.writeAttribute("class", styleClass, "styleClass");
+        }
+        Util.renderPassThruAttributes(writer,
+                                      component,
+                                      new String[]{"rows"});
+        writer.writeText("\n", null);
+
+        UIComponent caption = getFacet(data, "caption");
+        if (caption != null) {
+            String captionClass =
+                  (String) data.getAttributes().get("captionClass");
+            String captionStyle = (String)
+                  data.getAttributes().get("captionStyle");
+            writer.startElement("caption", data);
+            if (captionClass != null) {
+                writer.writeAttribute("class", captionClass, "captionClass");
+            }
+            if (captionStyle != null) {
+                writer.writeAttribute("style", captionStyle, "captionStyle");
+            }
+            encodeRecursive(context, caption);
+            writer.endElement("caption");
+        }
+        UIComponent colGroups = getFacet(data, "colgroups");
+        if (null != colGroups) {
+            encodeRecursive(context, colGroups);
+        }
+
+        // Render the header facets (if any)
+        UIComponent header = getFacet(data, "header");
+        int headerFacets = getFacetCount(data, "header");
+        String headerClass = (String) data.getAttributes().get("headerClass");
+        if ((header != null) || (headerFacets > 0)) {
+            // WCAG 5.2
+            writer.startElement("thead", data);
+            writer.writeText("\n", null);
+        }
+        if (header != null) {
+            writer.startElement("tr", header);
+            // WCAG 5.1
+            writer.startElement("th", header);
+            if (headerClass != null) {
+                writer.writeAttribute("class", headerClass, "headerClass");
+            }
+            writer.writeAttribute("colspan", "" + getColumnCount(data), null);
+            writer.writeAttribute("scope", "colgroup", null);
+            encodeRecursive(context, header);
+            writer.endElement("th");
+            writer.endElement("tr");
+            writer.writeText("\n", null);
+        }
+        if (headerFacets > 0) {
+            writer.startElement("tr", data);
+            writer.writeText("\n", null);
+            Iterator columns = getColumns(data);
+            while (columns.hasNext()) {
+                UIColumn column = (UIColumn) columns.next();
+                String columnHeaderClass =
+                      (String) column.getAttributes().get("headerClass");
+                // WCAG 5.1
+                writer.startElement("th", column);
+                if (columnHeaderClass != null) {
+                    writer.writeAttribute("class", columnHeaderClass,
+                                          "columnHeaderClass");
+                } else if (headerClass != null) {
+                    writer.writeAttribute("class", headerClass, "headerClass");
+                }
+                writer.writeAttribute("scope", "col", null);
+                UIComponent facet = getFacet(column, "header");
+                if (facet != null) {
+                    encodeRecursive(context, facet);
+                }
+                writer.endElement("th");
+                writer.writeText("\n", null);
+            }
+            writer.endElement("tr");
+            writer.writeText("\n", null);
+        }
+        if ((header != null) || (headerFacets > 0)) {
+            writer.endElement("thead");
+            writer.writeText("\n", null);
+        }
+
+        // Render the footer facets (if any)
+        UIComponent footer = getFacet(data, "footer");
+        int footerFacets = getFacetCount(data, "footer");
+        String footerClass = (String) data.getAttributes().get("footerClass");
+        if ((footer != null) || (footerFacets > 0)) {
+            // WCAG 5.2
+            writer.startElement("tfoot", data);
+            writer.writeText("\n", null);
+        }
+        if (footer != null) {
+            writer.startElement("tr", footer);
+            writer.startElement("td", footer);
+            if (footerClass != null) {
+                writer.writeAttribute("class", footerClass, "footerClass");
+            }
+            writer.writeAttribute("colspan", "" + getColumnCount(data), null);
+            encodeRecursive(context, footer);
+            writer.endElement("td");
+            writer.endElement("tr");
+            writer.writeText("\n", null);
+        }
+        if (footerFacets > 0) {
+            writer.startElement("tr", data);
+            writer.writeText("\n", null);
+            Iterator columns = getColumns(data);
+            while (columns.hasNext()) {
+                UIColumn column = (UIColumn) columns.next();
+                String columnFooterClass =
+                      (String) column.getAttributes().get("footerClass");
+                writer.startElement("td", column);
+                if (columnFooterClass != null) {
+                    writer.writeAttribute("class", columnFooterClass,
+                                          "columnFooterClass");
+                } else if (footerClass != null) {
+                    writer.writeAttribute("class", footerClass, "footerClass");
+                }
+                UIComponent facet = getFacet(column, "footer");
+                if (facet != null) {
+                    encodeRecursive(context, facet);
+                }
+                writer.endElement("td");
+                writer.writeText("\n", null);
+            }
+            writer.endElement("tr");
+            writer.writeText("\n", null);
+        }
+        if ((footer != null) || (footerFacets > 0)) {
+            writer.endElement("tfoot");
+            writer.writeText("\n", null);
+        }
+
+    }
+
+
+    public void encodeChildren(FacesContext context, UIComponent component)
+          throws IOException {
+
+        if (context == null) {
+            throw new NullPointerException("param 'context' is null");
+        }
+        if (component == null) {
+            throw new NullPointerException("param 'component' is null");
+        }
+
+        if (!component.isRendered()) {           
+            return;
+        }
+        UIData data = (UIData) component;
+
+        // Set up variables we will need
+        String columnClasses[] = getColumnClasses(data);
+        int columnStyle = 0;
+        int columnStyles = columnClasses.length;
+        String rowClasses[] = getRowClasses(data);
+        int rowStyles = rowClasses.length;
+        ResponseWriter writer = context.getResponseWriter();
+        Iterator kids = null;
+        Iterator grandkids = null;
+
+        // Iterate over the rows of data that are provided
+        int processed = 0;
+        int rowIndex = data.getFirst() - 1;
+        int rows = data.getRows();
+        int rowStyle = 0;
+        List bodyRows = getBodyRows(data);
+        boolean wroteTbody = false;
+
+        // WCAG 5.2
+        // If there is no "bodyrows" attribute, or it is empty,
+        if (null == bodyRows || bodyRows.isEmpty()) {
+            // contain the entire body in a single tbody element.
+            wroteTbody = true;
+            writer.startElement("tbody", component);
+        }
+        writer.writeText("\n", null);
+        while (true) {
+
+            // Have we displayed the requested number of rows?
+            if ((rows > 0) && (++processed > rows)) {
+                break;
+            }
+            // Select the current row
+            data.setRowIndex(++rowIndex);
+            if (!data.isRowAvailable()) {
+                break; // Scrolled past the last row
+            }
+            if (null != bodyRows && bodyRows.contains(Integer.valueOf(data.getRowIndex()))) {
+                // close out the previous tbody.
+                if (wroteTbody) {
+                    writer.endElement("tbody");
+                }
+                writer.startElement("tbody", component);
+                wroteTbody = true;
+            }
+
+            // Render the beginning of this row
+            writer.startElement("tr", data);
+            if (rowStyles > 0) {
+                writer.writeAttribute("class", rowClasses[rowStyle++],
+                                      "rowClasses");
+                if (rowStyle >= rowStyles) {
+                    rowStyle = 0;
+                }
+            }
+            writer.writeText("\n", null);
+
+            // Iterate over the child UIColumn components for each row
+            columnStyle = 0;
+            kids = getColumns(data);
+            int i = 0;
+            while (kids.hasNext()) {
+
+                // Identify the next renderable column
+                UIColumn column = (UIColumn) kids.next();
+                Boolean isRowHeader = null;
+
+                // Render the beginning of this cell
+
+                // If the rowHeader attribute was set to true on this column...
+                if (null != (isRowHeader =
+                        (Boolean) column.getAttributes().get("rowHeader")) &&
+                    isRowHeader.booleanValue()) {
+                    // WCAG 5.2.  Generate th with scope=row.
+                    writer.startElement("th", column);
+                    writer.writeAttribute("scope", "row", null);
+                }
+                else {
+                    writer.startElement("td", column);
+                }
+                // WCAG 5.2 render the "headers" attribute with data
+                // from the headers facet, if present.
+                List headerIds = (List) context.
+                        getExternalContext().getRequestMap().
+                        get(HEADER_ID_LIST_ATTR_NAME);
+                if (null != headerIds) {
+                    writer.writeAttribute("headers", headerIds.get(i++),
+                            "headers");
+                }
+                if (columnStyles > 0) {
+                    writer.writeAttribute("class", columnClasses[columnStyle++],
+                                          "columnClasses");
+                    if (columnStyle >= columnStyles) {
+                        columnStyle = 0;
+                    }
+                }
+
+                // Render the contents of this cell by iterating over
+                // the kids of our kids
+                grandkids = getChildren(column);
+                while (grandkids.hasNext()) {
+                    encodeRecursive(context, (UIComponent) grandkids.next());
+                }
+
+                // Render the ending of this cell
+                if (null != isRowHeader && isRowHeader.booleanValue()) {
+                    writer.endElement("th");
+                }
+                else {
+                    writer.endElement("td");
+                }
+                writer.writeText("\n", null);
+
+            }
+
+            // Render the ending of this row
+            writer.endElement("tr");
+            writer.writeText("\n", null);
+
+        }
+        // If there was no bodyrows attribute, or it was empty.
+        if (wroteTbody) {
+            writer.endElement("tbody");
+        }
+        writer.writeText("\n", null);
+
+        // Clean up after ourselves
+        data.setRowIndex(-1);
+
+    }
+
+    private List getBodyRows(UIData data) throws NumberFormatException {
+        List result = null;
+        String bodyRows = (String) data.getAttributes().get("bodyrows");
+        if (null != bodyRows) {
+            String [] rows = bodyRows.split(",");
+            if (null != rows) {
+                result = new ArrayList(rows.length);
+                for (int i = 0; i < rows.length; i++) {
+                    result.add(Integer.valueOf(rows[i]));
+                }                
+            }
+        }
+
+        return result;
+    }
+
+
+    public void encodeEnd(FacesContext context, UIComponent component)
+          throws IOException {
+
+        if (context == null) {
+            throw new NullPointerException("param 'context' is null");
+        }
+        if (component == null) {
+            throw new NullPointerException("param 'component' is null");
+        }
+        if (!component.isRendered()) {
+            return;
+        }
+        UIData data = (UIData) component;
+        data.setRowIndex(-1);
+        ResponseWriter writer = context.getResponseWriter();
+
+        // Render the ending of this table
+        writer.endElement("table");
+        writer.writeText("\n", null);
+
+    }
+
+
+    public boolean getRendersChildren() {
+
+        return true;
+
+    }
+
+    // --------------------------------------------------------- Private Methods
+
+
+    /**
+     * <p>Return an array of stylesheet classes to be applied to
+     * each column in the table in the order specified. Every column may or
+     * may not have a stylesheet.</p>
+     *
+     * @param data {@link UIData} component being rendered
+     */
+    private String[] getColumnClasses(UIData data) {
+
+        String values = (String) data.getAttributes().get("columnClasses");
+        if (values == null) {
+            return (new String[0]);
+        }
+        values = values.trim();
+        ArrayList list = new ArrayList();
+        while (values.length() > 0) {
+            int comma = values.indexOf(",");
+            if (comma >= 0) {
+                list.add(values.substring(0, comma).trim());
+                values = values.substring(comma + 1);
+            } else {
+                list.add(values.trim());
+                values = "";
+            }
+        }
+
+        return ((String[]) list.toArray(new String[list.size()]));
+
+    }
+
+
+    /**
+     * <p>Return the number of child <code>UIColumn</code> components
+     * that are nested in the specified {@link UIData}.</p>
+     *
+     * @param data {@link UIData} component being analyzed
+     */
+    private int getColumnCount(UIData data) {
+
+        int columns = 0;
+        Iterator kids = getColumns(data);
+        while (kids.hasNext()) {
+            kids.next();
+            columns++;
+        }
+        return (columns);
+
+    }
+
+
+    /**
+     * <p>Return an Iterator over the <code>UIColumn</code> children
+     * of the specified <code>UIData</code> that have a
+     * <code>rendered</code> property of <code>true</code>.</p>
+     *
+     * @param data <code>UIData</code> for which to extract children
+     */
+    private Iterator getColumns(UIData data) {
+
+        List results = new ArrayList();
+        Iterator kids = data.getChildren().iterator();
+        while (kids.hasNext()) {
+            UIComponent kid = (UIComponent) kids.next();
+            if ((kid instanceof UIColumn) && kid.isRendered()) {
+                results.add((UIColumn) kid);
+            }
+        }
+        return (results.iterator());
+
+    }
+
+
+    /**
+     * <p>Return the number of child <code>UIColumn</code> components
+     * nested in the specified <code>UIData</code> that have a facet with
+     * the specified name.</p>
+     *
+     * @param data <code>UIData</code> component being analyzed
+     * @param name Name of the facet being analyzed
+     */
+    private int getFacetCount(UIData data, String name) {
+
+        int n = 0;
+        Iterator kids = getColumns(data);
+        while (kids.hasNext()) {
+            UIComponent kid = (UIComponent) kids.next();
+            if (getFacet(kid, name) != null) {
+                n++;
+            }
+        }
+        return (n);
+
+    }
+
+
+    /**
+     * <p>Return an array of stylesheet classes to be applied to
+     * each row in the table, in the order specified.  Every row may or
+     * may not have a stylesheet.</p>
+     *
+     * @param data {@link UIData} component being rendered
+     */
+    private String[] getRowClasses(UIData data) {
+
+        String values = (String) data.getAttributes().get("rowClasses");
+        if (values == null) {
+            return (new String[0]);
+        }
+        values = values.trim();
+        ArrayList list = new ArrayList();
+        while (values.length() > 0) {
+            int comma = values.indexOf(",");
+            if (comma >= 0) {
+                list.add(values.substring(0, comma).trim());
+                values = values.substring(comma + 1);
+            } else {
+                list.add(values.trim());
+                values = "";
+            }
+        }
+       
+        return ((String[]) list.toArray(new String[list.size()]));
+
+    }
+
+}
diff --git a/contrib/sandbox/src/java/com/sun/faces/sandbox/render/HtmlBasicRenderer.java b/contrib/sandbox/src/java/com/sun/faces/sandbox/render/HtmlBasicRenderer.java
new file mode 100644
index 0000000..f61c371
--- /dev/null
+++ b/contrib/sandbox/src/java/com/sun/faces/sandbox/render/HtmlBasicRenderer.java
@@ -0,0 +1,576 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+// HtmlBasicRenderer.java
+
+package com.sun.faces.sandbox.render;
+
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.NoSuchElementException;
+
+import javax.faces.component.NamingContainer;
+import javax.faces.component.UIComponent;
+import javax.faces.component.UIInput;
+import javax.faces.component.UIParameter;
+import javax.faces.component.UIViewRoot;
+import javax.faces.component.ValueHolder;
+import javax.faces.context.FacesContext;
+import javax.faces.context.ResponseWriter;
+import javax.faces.convert.Converter;
+import javax.faces.convert.ConverterException;
+import javax.faces.render.Renderer;
+
+import com.sun.faces.sandbox.util.Util;
+
+/**
+ * <B>HtmlBasicRenderer</B> is a base class for implementing renderers
+ * for HtmlBasicRenderKit.
+ */
+
+public abstract class HtmlBasicRenderer extends Renderer {
+
+
+    public HtmlBasicRenderer() {
+        super();
+    }
+
+
+    public void decode(FacesContext context, UIComponent component) {
+
+        if (context == null || component == null) {
+            throw new NullPointerException();
+        }
+
+        
+        if (component instanceof UIInput) {
+            //uiInput = (UIInput) component;
+        } else {
+            // decode needs to be invoked only for components that are
+            // instances or subclasses of UIInput.
+            return;
+        }
+
+        // If the component is disabled, do not change the value of the
+        // component, since its state cannot be changed.
+        if (Util.componentIsDisabledOnReadonly(component)) {
+            return;
+        }
+
+        String clientId = component.getClientId(context);
+        Map requestMap = context.getExternalContext().getRequestParameterMap();
+        // Don't overwrite the value unless you have to!
+        if (requestMap.containsKey(clientId)) {
+            String newValue = (String) requestMap.get(clientId);
+            setSubmittedValue(component, newValue);
+        }
+    }
+
+
+    public void encodeEnd(FacesContext context, UIComponent component)
+         throws IOException {
+
+        String currentValue = null;
+//        ResponseWriter writer = null;
+//        String styleClass = null;
+
+        if (context == null || component == null) {
+            throw new NullPointerException();
+        }
+
+        // suppress rendering if "rendered" property on the component is
+        // false.
+        if (!component.isRendered()) {
+            return;
+        }
+
+//        writer = context.getResponseWriter();
+
+        currentValue = getCurrentValue(context, component);
+        getEndTextToRender(context, component, currentValue);
+    }
+
+
+    /**
+     * Gets value to be rendered and formats it if required. Sets to empty
+     * string if value is null.
+     */
+    protected String getCurrentValue(FacesContext context, UIComponent component) {
+
+        if (component instanceof UIInput) {
+            Object submittedValue = ((UIInput) component).getSubmittedValue();
+            if (submittedValue != null) {
+                return (String) submittedValue;
+            }
+        }
+
+        String currentValue = null;
+        Object currentObj = getValue(component);
+        if (currentObj != null) {
+            currentValue = getFormattedValue(context, component, currentObj);
+        }
+        return currentValue;
+    }
+
+
+    protected Object getValue(UIComponent component) {
+        // Make sure this method isn't being called except
+        // from subclasses that override getValue()!
+        throw new UnsupportedOperationException();
+    }
+
+
+    /**
+     * Renderers override this method to write appropriate HTML content into
+     * the buffer.
+     */
+    protected void getEndTextToRender(FacesContext context, UIComponent component,
+                                      String currentValue) throws IOException {
+        return;
+    }
+
+
+    /**
+     * Renderers override this method to store the previous value
+     * of the associated component.
+     */
+    protected void setSubmittedValue(UIComponent component, Object value) {
+    }
+
+
+    /**
+     * Renderers override this method in case output value needs to be
+     * formatted
+     */
+    protected String getFormattedValue(FacesContext context, UIComponent component,
+                                       Object currentValue)
+         throws ConverterException {
+
+        String result = null;
+        // formatting is supported only for components that support
+        // converting value attributes.
+        if (!(component instanceof ValueHolder)) {
+            if (currentValue != null) {
+                result = currentValue.toString();
+            }
+            return result;
+        }
+
+        Converter converter = null;
+
+        // If there is a converter attribute, use it to to ask application
+        // instance for a converter with this identifer.
+
+        if (component instanceof ValueHolder) {
+            converter = ((ValueHolder) component).getConverter();
+        }
+
+        // if value is null and no converter attribute is specified, then
+        // return a zero length String.
+        if (converter == null && currentValue == null) {
+            return "";
+        }
+
+        if (converter == null) {
+            // Do not look for "by-type" converters for Strings
+            if (currentValue instanceof String) {
+                return (String) currentValue;
+            }
+
+            // if converter attribute set, try to acquire a converter
+            // using its class type.
+
+            Class converterType = currentValue.getClass();
+            converter = Util.getConverterForClass(converterType, context);
+
+            // if there is no default converter available for this identifier,
+            // assume the model type to be String.
+            if (converter == null && currentValue != null) {
+                result = currentValue.toString();
+                return result;
+            }
+        }
+
+        if (converter != null) {
+            result = converter.getAsString(context, component, currentValue);
+
+            return result;
+        } else {
+            // throw converter exception if no converter can be
+            // identified
+//            Object[] params = {
+//                 currentValue,
+//                 "null Converter"
+//            };
+
+            throw new ConverterException("No converter can be identified")
+            ;
+        }
+    }
+
+
+    public String convertClientId(FacesContext context, String clientId) {
+        return clientId;
+    }
+
+
+    protected Iterator getMessageIter(FacesContext context,
+                                      String forComponent,
+                                      UIComponent component) {
+        Iterator messageIter = null;
+        // Attempt to use the "for" attribute to locate
+        // messages.  Three possible scenarios here:
+        // 1. valid "for" attribute - messages returned
+        //    for valid component identified by "for" expression.
+        // 2. zero length "for" expression - global errors
+        //    not associated with any component returned
+        // 3. no "for" expression - all messages returned.
+        if (null != forComponent) {
+            if (forComponent.length() == 0) {
+                messageIter = context.getMessages(null);
+            } else {
+                UIComponent result = getForComponent(context, forComponent,
+                     component);
+                if (result == null) {
+                    messageIter = Collections.EMPTY_LIST.iterator();
+                } else {
+                    messageIter =
+                         context.getMessages(result.getClientId(context));
+                }
+            }
+        } else {
+            messageIter = context.getMessages();
+        }
+        return messageIter;
+    }
+
+
+    /**
+     * Locates the component identified by <code>forComponent</code>
+     *
+     * @param forComponent - the component to search for
+     * @param component    - the starting point in which to begin the search
+     * @return the component with the the <code>id</code that matches
+     *         <code>forComponent</code> otheriwse null if no match is found.
+     */
+    protected UIComponent getForComponent(FacesContext context,
+                                          String forComponent, UIComponent component) {
+        if (null == forComponent || forComponent.length() == 0) {
+            return null;
+        }
+
+        UIComponent result = null;
+        UIComponent currentParent = component;
+        try {
+            // Check the naming container of the current
+            // component for component identified by
+            // 'forComponent'
+            while (currentParent != null) {
+                // If the current component is a NamingContainer,
+                // see if it contains what we're looking for.
+                result = currentParent.findComponent(forComponent);
+                if (result != null)
+                    break;
+                // if not, start checking further up in the view
+                currentParent = currentParent.getParent();
+            }
+
+            // no hit from above, scan for a NamingContainer
+            // that contains the component we're looking for from the root.
+            if (result == null) {
+                result =
+                     findUIComponentBelow(context.getViewRoot(), forComponent);
+            }
+        } catch (Throwable t) {
+            throw new RuntimeException("Unable to find 'for' component '" + forComponent + "'");
+        }
+        // log a message if we were unable to find the specified
+
+        return result;
+    }
+
+
+    /**
+     * <p>Recursively searches for {@link NamingContainer}s from the
+     * given start point looking for the component with the <code>id</code>
+     * specified by <code>forComponent</code>.
+     *
+     * @param startPoint   - the starting point in which to begin the search
+     * @param forComponent - the component to search for
+     * @return the component with the the <code>id</code that matches
+     *         <code>forComponent</code> otheriwse null if no match is found.
+     */
+    private UIComponent findUIComponentBelow(UIComponent startPoint, String forComponent) {
+        UIComponent retComp = null;
+        List children = startPoint.getChildren();
+        for (int i = 0, size = children.size(); i < size; i++) {
+            UIComponent comp = (UIComponent) children.get(i);
+
+            if (comp instanceof NamingContainer) {
+                retComp = comp.findComponent(forComponent);
+            }
+
+            if (retComp == null) {
+                if (comp.getChildCount() > 0) {
+                    retComp = findUIComponentBelow(comp, forComponent);
+                }
+            }
+
+            if (retComp != null)
+                break;
+        }
+        return retComp;
+    }
+
+
+    /**
+     * <p>Render nested child components by invoking the encode methods
+     * on those components, but only when the <code>rendered</code>
+     * property is <code>true</code>.</p>
+     */
+    protected void encodeRecursive(FacesContext context, UIComponent component)
+         throws IOException {
+
+        // suppress rendering if "rendered" property on the component is
+        // false.
+        if (!component.isRendered()) {
+            return;
+        }
+
+        // Render this component and its children recursively
+        component.encodeBegin(context);
+        if (component.getRendersChildren()) {
+            component.encodeChildren(context);
+        } else {
+            Iterator kids = getChildren(component);
+            while (kids.hasNext()) {
+                UIComponent kid = (UIComponent) kids.next();
+                encodeRecursive(context, kid);
+            }
+        }
+        component.encodeEnd(context);
+    }
+
+
+    /**
+     * <p>Return an Iterator over the children of the specified
+     * component, selecting only those that have a
+     * <code>rendered</code> property of <code>true</code>.</p>
+     *
+     * @param component <code>UIComponent</code> for which to extract children
+     */
+    protected Iterator getChildren(UIComponent component) {
+
+        int childCount = component.getChildCount();
+        if (childCount > 0) {
+            return new RenderedChildIterator(component.getChildren().iterator());
+        } else {
+            return Collections.EMPTY_LIST.iterator();
+        }
+    }
+
+
+    /**
+     * <p>Return the specified facet from the specified component, but
+     * <strong>only</strong> if its <code>rendered</code> property is
+     * set to <code>true</code>.
+     *
+     * @param component Component from which to return a facet
+     * @param name      Name of the desired facet
+     */
+    protected UIComponent getFacet(UIComponent component, String name) {
+
+        UIComponent facet = component.getFacet(name);
+        if ((facet != null) && !facet.isRendered()) {
+            facet = null;
+        }
+        return (facet);
+
+    }
+
+
+    /**
+     * @return true if this renderer should render an id attribute.
+     */
+    protected boolean shouldWriteIdAttribute(UIComponent component) {
+        String id;
+        return (null != (id = component.getId()) &&
+             !id.startsWith(UIViewRoot.UNIQUE_ID_PREFIX));
+    }
+
+
+    protected void writeIdAttributeIfNecessary(FacesContext context,
+                                               ResponseWriter writer,
+                                               UIComponent component) {
+        if (shouldWriteIdAttribute(component)) {
+            try {
+                writer.writeAttribute("id", component.getClientId(context),
+                     "id");
+            } catch (IOException e) {
+                ;
+            }
+        }
+    }
+
+
+    protected Param[] getParamList(FacesContext context, UIComponent command) {
+        ArrayList parameterList = new ArrayList();
+
+        Iterator kids = command.getChildren().iterator();
+        while (kids.hasNext()) {
+            UIComponent kid = (UIComponent) kids.next();
+
+            if (kid instanceof UIParameter) {
+                UIParameter uiParam = (UIParameter) kid;
+                Object value = uiParam.getValue();
+                Param param = new Param(uiParam.getName(),
+                     (value == null ? null :
+                          value.toString()));
+                parameterList.add(param);
+            }
+        }
+
+        return (Param[]) parameterList.toArray(new Param[parameterList.size()]);
+    }
+
+
+    //inner class to store parameter name and value pairs
+    protected class Param {
+
+        public Param(String name, String value) {
+            set(name, value);
+        }
+
+
+        private String name;
+        private String value;
+
+
+        public void set(String name, String value) {
+            this.name = name;
+            this.value = value;
+        }
+
+
+        public String getName() {
+            return name;
+        }
+
+
+        public String getValue() {
+            return value;
+        }
+    }
+
+    /**
+     * <p>This <code>Iterator</code> is used to Iterator over
+     * children components that are set to be rendered.</p>
+     */
+    private static class RenderedChildIterator implements Iterator {
+
+        Iterator childIterator;
+        boolean hasNext;
+        Object child;
+
+        // -------------------------------------------------------- Constructors
+
+
+        private RenderedChildIterator(Iterator childIterator) {
+
+            this.childIterator = childIterator;
+            update();
+
+        }
+
+        // ----------------------------------------------- Methods from Iterator
+
+
+        public void remove() {
+
+            throw new UnsupportedOperationException();
+
+        }
+
+        public boolean hasNext() {
+
+            return hasNext;
+
+        }
+
+        public Object next() {
+
+            if (!hasNext) {
+                throw new NoSuchElementException();
+            }
+            Object temp = child;
+            update();
+            return temp;
+
+        }
+
+        // ----------------------------------------------------- Private Methods
+
+        /**
+         * <p>Moves the internal pointer to the next renderable
+         * component skipping any that are not to be rendered.</p>
+         */
+        private void update() {
+
+            while (childIterator.hasNext()) {
+                UIComponent comp = (UIComponent) childIterator.next();
+                if (comp.isRendered()) {
+                    child = comp;
+                    hasNext = true;
+                    return;
+                }
+            }
+
+            hasNext = false;
+            child = null;
+
+        }
+    }
+
+} // end of class HtmlBasicRenderer
diff --git a/contrib/sandbox/src/java/com/sun/faces/sandbox/taglib/AccessibleColumnTag.java b/contrib/sandbox/src/java/com/sun/faces/sandbox/taglib/AccessibleColumnTag.java
new file mode 100644
index 0000000..73995bc
--- /dev/null
+++ b/contrib/sandbox/src/java/com/sun/faces/sandbox/taglib/AccessibleColumnTag.java
@@ -0,0 +1,170 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.sandbox.taglib;
+
+import javax.faces.component.UIColumn;
+import javax.faces.component.UIComponent;
+import javax.faces.el.ValueBinding;
+import javax.faces.webapp.UIComponentTag;
+import javax.servlet.jsp.JspException;
+
+import com.sun.faces.sandbox.util.Util;
+
+public class AccessibleColumnTag extends UIComponentTag {
+
+    // PROPERTY: footerClass
+    private String footerClass;
+    public void setFooterClass(String footerClass) {
+        this.footerClass = footerClass;
+    }
+
+    // PROPERTY: headerClass
+    private String headerClass;
+    public void setHeaderClass(String headerClass) {
+        this.headerClass = headerClass;
+    }    
+
+    //
+    // General Methods
+    //
+    public String getRendererType() {
+        return null;
+    }
+
+
+    public String getComponentType() {
+        return "com.sun.faces.sandbox.AccessibleHtmlColumn";
+    }
+
+
+    protected void setProperties(UIComponent component) {
+        super.setProperties(component);
+        UIColumn column;
+
+        try {
+            column = (UIColumn) component;
+        } catch (ClassCastException cce) {
+            throw new IllegalStateException("Component " + component.toString() + " not expected type.  Expected: UIColumn.  Perhaps you're missing a tag?");
+        }
+        if (footerClass != null) {
+            if (isValueReference(footerClass)) {
+                ValueBinding vb = Util.getValueBinding(footerClass);
+                column.setValueBinding("width", vb);
+            } else {
+                column.getAttributes().put("footerClass", footerClass);
+            }
+        }
+        if (headerClass != null) {
+            if (isValueReference(headerClass)) {
+                ValueBinding vb = Util.getValueBinding(headerClass);
+                column.setValueBinding("width", vb);
+            } else {
+                column.getAttributes().put("headerClass", headerClass);
+            }
+        }
+        if (rowHeader != null) {
+            if (isValueReference(rowHeader)) {
+                ValueBinding vb = Util.getValueBinding(rowHeader);
+                column.setValueBinding("width", vb);
+            } else {
+                column.getAttributes().put("rowHeader",
+                                           Boolean.valueOf(rowHeader));
+            }
+        }      
+    }
+
+    //
+    // Methods From TagSupport
+    //
+
+    public int doStartTag() throws JspException {
+
+        try {
+            return super.doStartTag();
+        } catch (JspException e) {
+            throw e;
+        } catch (Throwable t) {
+            throw new JspException(t);
+        }
+
+    }
+
+
+    public int doEndTag() throws JspException {
+
+        try {
+            return super.doEndTag();
+        } catch (JspException e) {
+            throw e;
+        } catch (Throwable t) {           
+            throw new JspException(t);
+        }
+
+    }
+
+    // RELEASE
+    public void release() {
+        super.release();
+        this.headerClass = null;
+        this.footerClass = null;
+        this.rowHeader = null;
+    }
+
+    public String getDebugString() {
+        return ("id: " + this.getId() + " class: " +
+            this.getClass().getName());
+    }
+
+    /**
+     * Holds value of property rowHeader.
+     */
+    private String rowHeader;
+
+    /**
+     * Setter for property rowHeader.
+     * @param rowHeader New value of property rowHeader.
+     */
+    public void setRowHeader(String rowHeader) {
+        this.rowHeader = rowHeader;
+    }
+
+}
+
diff --git a/contrib/sandbox/src/java/com/sun/faces/sandbox/taglib/AccessibleDataTableTag.java b/contrib/sandbox/src/java/com/sun/faces/sandbox/taglib/AccessibleDataTableTag.java
new file mode 100644
index 0000000..9c9108d
--- /dev/null
+++ b/contrib/sandbox/src/java/com/sun/faces/sandbox/taglib/AccessibleDataTableTag.java
@@ -0,0 +1,624 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.sandbox.taglib;
+
+import javax.faces.component.UIComponent;
+import javax.faces.el.ValueBinding;
+import javax.faces.webapp.UIComponentTag;
+import javax.servlet.jsp.JspException;
+
+import com.sun.faces.sandbox.util.Util;
+
+public final class AccessibleDataTableTag extends UIComponentTag {
+
+
+    // Setter Methods
+    // PROPERTY: first
+    private String first;
+    public void setFirst(String first) {
+        this.first = first;
+    }
+
+    // PROPERTY: rows
+    private String rows;
+    public void setRows(String rows) {
+        this.rows = rows;
+    }
+
+    // PROPERTY: value
+    private String value;
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+    // PROPERTY: var
+    private String _var;
+    public void setVar(String _var) {
+        this._var = _var;
+    }
+
+    // PROPERTY: bgcolor
+    private String bgcolor;
+    public void setBgcolor(String bgcolor) {
+        this.bgcolor = bgcolor;
+    }
+
+    // PROPERTY: border
+    private String border;
+    public void setBorder(String border) {
+        this.border = border;
+    }
+
+    // PROPERTY: bodyrows
+    private String bodyrows;
+    public void setBodyrows(String bodyrows) {
+        this.bodyrows = bodyrows;
+    }
+
+    // PROPERTY: captionClass
+    private String captionClass;
+    public void setCaptionClass(String captionClass) {
+        this.captionClass = captionClass;
+    }
+
+    // PROPERTY: captionStyle
+    private String captionStyle;
+    public void setCaptionStyle(String captionStyle) {
+        this.captionStyle = captionStyle;
+    }
+
+    // PROPERTY: cellpadding
+    private String cellpadding;
+    public void setCellpadding(String cellpadding) {
+        this.cellpadding = cellpadding;
+    }
+
+    // PROPERTY: cellspacing
+    private String cellspacing;
+    public void setCellspacing(String cellspacing) {
+        this.cellspacing = cellspacing;
+    }
+
+    // PROPERTY: columnClasses
+    private String columnClasses;
+    public void setColumnClasses(String columnClasses) {
+        this.columnClasses = columnClasses;
+    }
+
+    // PROPERTY: dir
+    private String dir;
+    public void setDir(String dir) {
+        this.dir = dir;
+    }
+
+    // PROPERTY: footerClass
+    private String footerClass;
+    public void setFooterClass(String footerClass) {
+        this.footerClass = footerClass;
+    }
+
+    // PROPERTY: frame
+    private String frame;
+    public void setFrame(String frame) {
+        this.frame = frame;
+    }
+
+    // PROPERTY: headerClass
+    private String headerClass;
+    public void setHeaderClass(String headerClass) {
+        this.headerClass = headerClass;
+    }
+
+    // PROPERTY: lang
+    private String lang;
+    public void setLang(String lang) {
+        this.lang = lang;
+    }
+
+    // PROPERTY: onclick
+    private String onclick;
+    public void setOnclick(String onclick) {
+        this.onclick = onclick;
+    }
+
+    // PROPERTY: ondblclick
+    private String ondblclick;
+    public void setOndblclick(String ondblclick) {
+        this.ondblclick = ondblclick;
+    }
+
+    // PROPERTY: onkeydown
+    private String onkeydown;
+    public void setOnkeydown(String onkeydown) {
+        this.onkeydown = onkeydown;
+    }
+
+    // PROPERTY: onkeypress
+    private String onkeypress;
+    public void setOnkeypress(String onkeypress) {
+        this.onkeypress = onkeypress;
+    }
+
+    // PROPERTY: onkeyup
+    private String onkeyup;
+    public void setOnkeyup(String onkeyup) {
+        this.onkeyup = onkeyup;
+    }
+
+    // PROPERTY: onmousedown
+    private String onmousedown;
+    public void setOnmousedown(String onmousedown) {
+        this.onmousedown = onmousedown;
+    }
+
+    // PROPERTY: onmousemove
+    private String onmousemove;
+    public void setOnmousemove(String onmousemove) {
+        this.onmousemove = onmousemove;
+    }
+
+    // PROPERTY: onmouseout
+    private String onmouseout;
+    public void setOnmouseout(String onmouseout) {
+        this.onmouseout = onmouseout;
+    }
+
+    // PROPERTY: onmouseover
+    private String onmouseover;
+    public void setOnmouseover(String onmouseover) {
+        this.onmouseover = onmouseover;
+    }
+
+    // PROPERTY: onmouseup
+    private String onmouseup;
+    public void setOnmouseup(String onmouseup) {
+        this.onmouseup = onmouseup;
+    }
+
+    // PROPERTY: rowClasses
+    private String rowClasses;
+    public void setRowClasses(String rowClasses) {
+        this.rowClasses = rowClasses;
+    }
+
+    // PROPERTY: rules
+    private String rules;
+    public void setRules(String rules) {
+        this.rules = rules;
+    }
+
+    // PROPERTY: style
+    private String style;
+    public void setStyle(String style) {
+        this.style = style;
+    }
+
+    // PROPERTY: styleClass
+    private String styleClass;
+    public void setStyleClass(String styleClass) {
+        this.styleClass = styleClass;
+    }
+
+    // PROPERTY: summary
+    private String summary;
+    public void setSummary(String summary) {
+        this.summary = summary;
+    }
+
+    // PROPERTY: title
+    private String title;
+    public void setTitle(String title) {
+        this.title = title;
+    }
+
+    // PROPERTY: width
+    private String width;
+    public void setWidth(String width) {
+        this.width = width;
+    }
+
+
+    // General Methods
+    public String getRendererType() {
+        return "com.sun.faces.sandbox.AccessibleTableRenderer";
+    }
+
+    public String getComponentType() {
+        return "com.sun.faces.sandbox.AccessibleHtmlDataTable";
+    }
+
+    protected void setProperties(UIComponent component) {
+        super.setProperties(component);
+        javax.faces.component.UIData data = null;
+        try {
+            data = (javax.faces.component.UIData) component;
+        } catch (ClassCastException cce) {
+            throw new IllegalStateException("Component " + component.toString() + " not expected type.  Expected: javax.faces.component.UIData.  Perhaps you're missing a tag?");
+        }
+
+        if (first != null) {
+            if (isValueReference(first)) {
+                ValueBinding vb = Util.getValueBinding(first);
+                data.setValueBinding("first", vb);
+            } else {
+                int _first = Integer.parseInt(first);
+                data.setFirst(_first);
+            }
+        }
+
+        if (rows != null) {
+            if (isValueReference(rows)) {
+                ValueBinding vb = Util.getValueBinding(rows);
+                data.setValueBinding("rows", vb);
+            } else {
+                int _rows = Integer.parseInt(rows);
+                data.setRows(_rows);
+            }
+        }
+
+        if (value != null) {
+            if (isValueReference(value)) {
+                ValueBinding vb = Util.getValueBinding(value);
+                data.setValueBinding("value", vb);
+            } else {
+                data.setValue(value);
+            }
+        }
+
+        data.setVar(_var);
+
+        if (bgcolor != null) {
+            if (isValueReference(bgcolor)) {
+                ValueBinding vb = Util.getValueBinding(bgcolor);
+                data.setValueBinding("bgcolor", vb);
+            } else {
+                data.getAttributes().put("bgcolor", bgcolor);
+            }
+        }
+
+        if (border != null) {
+            if (isValueReference(border)) {
+                ValueBinding vb = Util.getValueBinding(border);
+                data.setValueBinding("border", vb);
+            } else {
+                int _border = Integer.parseInt(border);
+                if (_border != Integer.MIN_VALUE) {
+                    data.getAttributes().put("border", Integer.valueOf(_border));
+                }
+            }
+        }
+        if (bodyrows != null) {
+            if (isValueReference(bodyrows)) {
+                ValueBinding vb = Util.getValueBinding(bodyrows);
+                data.setValueBinding("bodyrows", vb);
+            } else {
+                data.getAttributes().put("bodyrows", bodyrows);
+            }
+        }
+        if (captionClass != null) {
+            if (isValueReference(captionClass)) {
+                ValueBinding vb = Util.getValueBinding(captionClass);
+                data.setValueBinding("captionClass", vb);
+            } else {
+                data.getAttributes().put("captionClass", bgcolor);
+            }
+        }
+        if (captionStyle != null) {
+            if (isValueReference(captionStyle)) {
+                ValueBinding vb = Util.getValueBinding(captionStyle);
+                data.setValueBinding("captionStyle", vb);
+            } else {
+                data.getAttributes().put("captionStyle", bgcolor);
+            }
+        }
+        if (cellpadding != null) {
+            if (isValueReference(cellpadding)) {
+                ValueBinding vb = Util.getValueBinding(cellpadding);
+                data.setValueBinding("cellpadding", vb);
+            } else {
+                data.getAttributes().put("cellpadding", cellpadding);
+            }
+        }
+        if (cellspacing != null) {
+            if (isValueReference(cellspacing)) {
+                ValueBinding vb = Util.getValueBinding(cellspacing);
+                data.setValueBinding("cellspacing", vb);
+            } else {
+                data.getAttributes().put("cellspacing", cellspacing);
+            }
+        }
+        if (columnClasses != null) {
+            if (isValueReference(columnClasses)) {
+                ValueBinding vb = Util.getValueBinding(columnClasses);
+                data.setValueBinding("columnClasses", vb);
+            } else {
+                data.getAttributes().put("columnClasses", columnClasses);
+            }
+        }
+        if (dir != null) {
+            if (isValueReference(dir)) {
+                ValueBinding vb = Util.getValueBinding(dir);
+                data.setValueBinding("dir", vb);
+            } else {
+                data.getAttributes().put("dir", dir);
+            }
+        }
+        if (footerClass != null) {
+            if (isValueReference(footerClass)) {
+                ValueBinding vb = Util.getValueBinding(footerClass);
+                data.setValueBinding("footerClass", vb);
+            } else {
+                data.getAttributes().put("footerClass", footerClass);
+            }
+        }
+        if (frame != null) {
+            if (isValueReference(frame)) {
+                ValueBinding vb = Util.getValueBinding(frame);
+                data.setValueBinding("frame", vb);
+            } else {
+                data.getAttributes().put("frame", frame);
+            }
+        }
+        if (headerClass != null) {
+            if (isValueReference(headerClass)) {
+                ValueBinding vb = Util.getValueBinding(headerClass);
+                data.setValueBinding("headerClass", vb);
+            } else {
+                data.getAttributes().put("headerClass", headerClass);
+            }
+        }
+        if (lang != null) {
+            if (isValueReference(lang)) {
+                ValueBinding vb = Util.getValueBinding(lang);
+                data.setValueBinding("lang", vb);
+            } else {
+                data.getAttributes().put("lang", lang);
+            }
+        }
+        if (onclick != null) {
+            if (isValueReference(onclick)) {
+                ValueBinding vb = Util.getValueBinding(onclick);
+                data.setValueBinding("onclick", vb);
+            } else {
+                data.getAttributes().put("onclick", onclick);
+            }
+        }
+        if (ondblclick != null) {
+            if (isValueReference(ondblclick)) {
+                ValueBinding vb = Util.getValueBinding(ondblclick);
+                data.setValueBinding("ondblclick", vb);
+            } else {
+                data.getAttributes().put("ondblclick", ondblclick);
+            }
+        }
+        if (onkeydown != null) {
+            if (isValueReference(onkeydown)) {
+                ValueBinding vb = Util.getValueBinding(onkeydown);
+                data.setValueBinding("onkeydown", vb);
+            } else {
+                data.getAttributes().put("onkeydown", onkeydown);
+            }
+        }
+        if (onkeypress != null) {
+            if (isValueReference(onkeypress)) {
+                ValueBinding vb = Util.getValueBinding(onkeypress);
+                data.setValueBinding("onkeypress", vb);
+            } else {
+                data.getAttributes().put("onkeypress", onkeypress);
+            }
+        }
+        if (onkeyup != null) {
+            if (isValueReference(onkeyup)) {
+                ValueBinding vb = Util.getValueBinding(onkeyup);
+                data.setValueBinding("onkeyup", vb);
+            } else {
+                data.getAttributes().put("onkeyup", onkeyup);
+            }
+        }
+        if (onmousedown != null) {
+            if (isValueReference(onmousedown)) {
+                ValueBinding vb = Util.getValueBinding(onmousedown);
+                data.setValueBinding("onmousedown", vb);
+            } else {
+                data.getAttributes().put("onmousedown", onmousedown);
+            }
+        }
+        if (onmousemove != null) {
+            if (isValueReference(onmousemove)) {
+                ValueBinding vb = Util.getValueBinding(onmousemove);
+                data.setValueBinding("onmousemove", vb);
+            } else {
+                data.getAttributes().put("onmousemove", onmousemove);
+            }
+        }
+        if (onmouseout != null) {
+            if (isValueReference(onmouseout)) {
+                ValueBinding vb = Util.getValueBinding(onmouseout);
+                data.setValueBinding("onmouseout", vb);
+            } else {
+                data.getAttributes().put("onmouseout", onmouseout);
+            }
+        }
+        if (onmouseover != null) {
+            if (isValueReference(onmouseover)) {
+                ValueBinding vb = Util.getValueBinding(onmouseover);
+                data.setValueBinding("onmouseover", vb);
+            } else {
+                data.getAttributes().put("onmouseover", onmouseover);
+            }
+        }
+        if (onmouseup != null) {
+            if (isValueReference(onmouseup)) {
+                ValueBinding vb = Util.getValueBinding(onmouseup);
+                data.setValueBinding("onmouseup", vb);
+            } else {
+                data.getAttributes().put("onmouseup", onmouseup);
+            }
+        }
+        if (rowClasses != null) {
+            if (isValueReference(rowClasses)) {
+                ValueBinding vb = Util.getValueBinding(rowClasses);
+                data.setValueBinding("rowClasses", vb);
+            } else {
+                data.getAttributes().put("rowClasses", rowClasses);
+            }
+        }
+        if (rules != null) {
+            if (isValueReference(rules)) {
+                ValueBinding vb = Util.getValueBinding(rules);
+                data.setValueBinding("rules", vb);
+            } else {
+                data.getAttributes().put("rules", rules);
+            }
+        }
+        if (style != null) {
+            if (isValueReference(style)) {
+                ValueBinding vb = Util.getValueBinding(style);
+                data.setValueBinding("style", vb);
+            } else {
+                data.getAttributes().put("style", style);
+            }
+        }
+        if (styleClass != null) {
+            if (isValueReference(styleClass)) {
+                ValueBinding vb = Util.getValueBinding(styleClass);
+                data.setValueBinding("styleClass", vb);
+            } else {
+                data.getAttributes().put("styleClass", styleClass);
+            }
+        }
+        if (summary != null) {
+            if (isValueReference(summary)) {
+                ValueBinding vb = Util.getValueBinding(summary);
+                data.setValueBinding("summary", vb);
+            } else {
+                data.getAttributes().put("summary", summary);
+            }
+        }
+        if (title != null) {
+            if (isValueReference(title)) {
+                ValueBinding vb = Util.getValueBinding(title);
+                data.setValueBinding("title", vb);
+            } else {
+                data.getAttributes().put("title", title);
+            }
+        }
+        if (width != null) {
+            if (isValueReference(width)) {
+                ValueBinding vb = Util.getValueBinding(width);
+                data.setValueBinding("width", vb);
+            } else {
+                data.getAttributes().put("width", width);
+            }
+        }
+    }
+    // Methods From TagSupport
+    public int doStartTag() throws JspException {
+        try {
+            return super.doStartTag();
+        } catch (Exception e) {
+            Throwable root = e;
+            while (root.getCause() != null) {
+                root = root.getCause();
+            }
+            throw new JspException(root);
+        }
+    }
+
+    public int doEndTag() throws JspException {
+        try {
+            return super.doEndTag();
+        } catch (Exception e) {
+            Throwable root = e;
+            while (root.getCause() != null) {
+                root = root.getCause();
+            }
+            throw new JspException(root);
+        }
+    }
+
+    // RELEASE
+    public void release() {
+        super.release();
+
+        // component properties
+        this.first = null;
+        this.rows = null;
+        this.value = null;
+        this._var = null;
+
+        // rendered attributes
+        this.bgcolor = null;
+        this.border = null;
+        this.captionClass = null;
+        this.captionStyle = null;
+        this.cellpadding = null;
+        this.cellspacing = null;
+        this.columnClasses = null;
+        this.dir = null;
+        this.footerClass = null;
+        this.frame = null;
+        this.headerClass = null;
+        this.lang = null;
+        this.onclick = null;
+        this.ondblclick = null;
+        this.onkeydown = null;
+        this.onkeypress = null;
+        this.onkeyup = null;
+        this.onmousedown = null;
+        this.onmousemove = null;
+        this.onmouseout = null;
+        this.onmouseover = null;
+        this.onmouseup = null;
+        this.rowClasses = null;
+        this.rules = null;
+        this.style = null;
+        this.styleClass = null;
+        this.summary = null;
+        this.title = null;
+        this.width = null;
+    }
+
+    public String getDebugString() {
+        return "id: " + this.getId() + " class: " + this.getClass().getName();
+    }
+
+}
diff --git a/contrib/sandbox/src/resources/.cvsignore b/contrib/sandbox/src/resources/.cvsignore
new file mode 100644
index 0000000..3fcbbda
--- /dev/null
+++ b/contrib/sandbox/src/resources/.cvsignore
@@ -0,0 +1,2 @@
+yui
+html_editor
\ No newline at end of file
diff --git a/contrib/sandbox/src/resources/META-INF/faces-config.xml b/contrib/sandbox/src/resources/META-INF/faces-config.xml
new file mode 100644
index 0000000..ca52080
--- /dev/null
+++ b/contrib/sandbox/src/resources/META-INF/faces-config.xml
@@ -0,0 +1,66 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<faces-config xmlns="http://java.sun.com/xml/ns/javaee" 
+              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+              xmlns:xi="http://www.w3.org/2001/XInclude" 
+              xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd" 
+              version="1.2">
+    <component>
+        <component-type>com.sun.faces.sandbox.AccessibleHtmlColumn</component-type>
+        <component-class>com.sun.faces.sandbox.component.AccessibleHtmlColumn</component-class>
+    </component>
+    <component>
+        <component-type>com.sun.faces.sandbox.AccessibleHtmlDataTable</component-type>
+        <component-class>com.sun.faces.sandbox.component.AccessibleHtmlDataTable</component-class>
+    </component>
+    <render-kit>
+        <render-kit-id>HTML_BASIC</render-kit-id>
+        <render-kit-class>com.sun.faces.renderkit.RenderKitImpl</render-kit-class>
+        <renderer>
+            <component-family>javax.faces.Data</component-family>
+            <renderer-type>com.sun.faces.sandbox.AccessibleTableRenderer</renderer-type>
+            <renderer-class>com.sun.faces.sandbox.render.AccessibleTableRenderer</renderer-class>
+        </renderer>
+    </render-kit>
+</faces-config>
diff --git a/contrib/sandbox/src/resources/META-INF/sandbox.taglib.xml b/contrib/sandbox/src/resources/META-INF/sandbox.taglib.xml
new file mode 100644
index 0000000..d056532
--- /dev/null
+++ b/contrib/sandbox/src/resources/META-INF/sandbox.taglib.xml
@@ -0,0 +1,50 @@
+<?xml version="1.0"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE facelet-taglib PUBLIC
+  "-//Sun Microsystems, Inc.//DTD Facelet Taglib 1.0//EN"
+  "http://java.sun.com/dtd/facelet-taglib_1_0.dtd">
+
+<facelet-taglib>
+    <namespace>http://java.sun.com/jsf/ri/sandbox</namespace>
+</facelet-taglib>
diff --git a/contrib/sandbox/src/resources/META-INF/sandbox.tld b/contrib/sandbox/src/resources/META-INF/sandbox.tld
new file mode 100644
index 0000000..2cbffcd
--- /dev/null
+++ b/contrib/sandbox/src/resources/META-INF/sandbox.tld
@@ -0,0 +1,809 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE taglib
+PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
+"http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
+
+<taglib>
+    <tlib-version>1.0</tlib-version>
+    <jsp-version>1.2</jsp-version>
+    <short-name>risb</short-name>
+    <uri>http://java.sun.com/jsf/ri/sandbox</uri>
+    <description>
+        This taglib is for components being developed within the
+        JSF RI sandbox.
+    </description>
+
+    <!-- ===================== Tag Definitions ============================= -->
+
+    <!-- ******************************************************************* -->
+    <!-- Begin DataTable tag attributes                                      -->
+    <!-- ******************************************************************* -->
+    <tag>
+
+        <name>
+            dataTable
+        </name>
+        <tag-class>
+            com.sun.faces.sandbox.taglib.AccessibleDataTableTag
+        </tag-class>
+        <body-content>
+            JSP
+        </body-content>
+        <description>
+            <![CDATA[<p>Renders an HTML "table" element compliant with the HTML 401
+            specification.  Render the "caption" facet, if present, inside a
+            "caption" element immediately below the "table" element.  If the
+            "captionClass" attribute is specified, render its value as the
+            value of the "class" attribute on the "caption" element.  If the
+            "captionStyle" attribute is specified, render its value as the
+            value of the "style" attribute on the "caption" element.</p>
+            <p>Please consult the javadoc for <code>UIData</code> to
+            supplement this specification.  If the "styleClass" attribute is
+            specified, render its value as the value of the "class" attribute
+            on the "table" element.  Any pass-through attributes are also
+            rendered on the "table" element.  </p>
+
+            <p>Column Groups</p>
+
+            <ul>
+
+            <p>If the <code>UIData</code> component has a "colgroups" facet,
+            render its contents.  Consistent with the rules of facets in
+            general, this facet must have only one child.  In general, this
+            will be a <code>panel group</code> component that will contain
+            <code>colgroup</code> and <code>col</code> elements per the HTML
+            Table specification.  Use of column grouping can improve
+            accessibility.  This facet must be rendered before the table
+            header and footer.</p>
+
+            </ul>
+
+            <p>Rendering the header</p>
+
+            <ul>
+
+            <p>If the <code>UIData</code> component has a "header" facet, or
+            any of the child <code>UIColumn</code> components has a "header"
+            facet, render a "thead" element.  If the <code>UIData</code>
+            component has a "header" facet, encode its contents inside of "tr"
+            and "th" elements, respectively.  Output the value of the
+            "headerClass" attribute of the <code>UIData</code> component, if
+            present, as the value of the "class" attribute on the "th".
+            Output the number of child <code>UIColumn</code> components of the
+            <code>UIData</code> component as the value of the "colspan"
+            attribute on the "th".  Output "colgroup" as the value of the
+            "scope" attribute on the "th" element. </p>
+
+            <p>If any of the child <code>UIColumn</code> components has a
+            "header" facet render a "tr" element.  For each
+            <code>UIColumn</code> that actually has a "header" facet, render
+            it inside of a "th" element.  Columns that don't have a "header"
+            facet cause an empty "th" element to be rendered.  Output the
+            value of the "headerClass" attribute of the <code>UIColumn</code>
+            component, if present, as the value of the "class" attribute on
+            the "th".  If the "headerClass" attribute of the
+            <code>UIColumn</code> component is not present, output the value
+            of the "headerClass" attribute of the <code>UIData</code>
+            component, if present, as the value of the "class" attribute on
+            the "th".  Output "col" as the value of the "scope" attribute on
+            the "th" element.
+            </p>
+
+            <p>Close out the "thead" element.</p>
+
+            </ul>
+
+            <p>Rendering the footer</p>
+
+            <ul>
+
+            <p>Follow the same process as for the header, except replace
+            "header" with "footer", "th" with "td", "thead" with "tfoot", and
+            "headerClass" with "footerClass".  Do not render any "scope"
+            attribute for the footer.</p>
+
+            </ul>
+
+            <p>Rendering the table body</p>
+
+            <ul>
+
+            <p>Look at the value of the "bodyrows" attribute.  If present,
+            this must be a comma separated list of integers.  Each entry in
+            this list is the row index of the row before which a "tbody"
+            element should be rendered.</p>
+
+            <p>If there was no "bodyrows" attribute, or it was empty, render a
+            "tbody" element.  Keep track of the result of the "rows" property
+            on the <code>UIData</code> component.  Keep track of the number of
+            rows we have rendered so far.  Iterate through the rows.  Set the
+            "rowIndex" property of the <code>UIData</code> component to be
+            correct as we iterate through the rows.  Stop rendering children
+            and close out the "tbody" element if the "rowAvailable" property
+            of the <code>UIData</code> returned false.  If the current row
+            index is contained in the "bodyrows" attribute, check if a "tbody"
+            start element was rendered that needs to be closed, and if so,
+            close the "tbody" element.  Then render a "tbody" element start.
+            Otherwise, do not render a "tbody" element.</p>
+
+            <p>Output a "tr" element.  Output the value of the "rowClasses"
+            per the attribute description below.  For each
+            <code>UIColumn</code> child, if the column component has a
+            "rowHeader" attribute with a value of "true", output a "th"
+            element with a "scope" attribute with the value of "row".
+            Otherwise, if the column component has no "rowHeader" attribute,
+            or its value is false, output a "td" element.  In either case
+            attach the value of the "columnClasses" attribute of the
+            <code>UIData</code> component per the attribute description below.
+            Recursively encode each child of each <code>UIColumn</code> child.
+            Close out the "td" or "th" element.  When done with the row, close
+            out the "tr" element.  When done with all the rows, close out the
+            "tbody" element.</p>
+            </ul>
+
+            <p>When done rendering all the rows, set the "rowIndex" property of
+            the <code>UIData</code> to -1, and close out the "table"
+            element.</p>]]>
+        </description>
+        <attribute>
+            <name>
+                first
+            </name>
+            <required>
+                false
+            </required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                <![CDATA[Zero-relative row number of the first row to be displayed.  If this
+                property is set to zero, rendering will begin with the first row of
+                the underlying data.]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>
+                id
+            </name>
+            <required>
+                false
+            </required>
+            <rtexprvalue>
+                true
+            </rtexprvalue>
+            <description>
+                <![CDATA[The component identifier for this component.  This value must be
+                unique within the closest parent component that is a naming
+                container.]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>
+                rendered
+            </name>
+            <required>
+                false
+            </required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                <![CDATA[Flag indicating whether or not this component should be rendered
+                (during Render Response Phase), or processed on any subsequent
+                form submit.  The default value for this property is true.]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>
+                rows
+            </name>
+            <required>
+                false
+            </required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                <![CDATA[The number of rows to display, starting with the one identified by the
+                "first" property.  If this value is set to zero, all available rows in
+                the underlying data model will be displayed.]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>
+                value
+            </name>
+            <required>
+                false
+            </required>
+            <rtexprvalue>false</rtexprvalue>
+             <description>
+                <![CDATA[The current value of this component.]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>
+                var
+            </name>
+            <required>
+                false
+            </required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                <![CDATA[Name of a request-scope attribute under which the model data for the
+                row selected by the current value of the "rowIndex" property (i.e.
+                also the current value of the "rowData" property) will be exposed.]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>
+                bgcolor
+            </name>
+            <required>
+                false
+            </required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                <![CDATA[Name or code of the background color for this table.]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>
+                border
+            </name>
+            <required>
+                false
+            </required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                <![CDATA[Width (in pixels) of the border to be drawn
+                around this table.]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>
+                captionClass
+            </name>
+            <required>
+                false
+            </required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                <![CDATA[Space-separated list of CSS style class(es) that will be
+                applied to any caption generated for this table.]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>
+                captionStyle
+            </name>
+            <required>
+                false
+            </required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                <![CDATA[CSS style(s) to be applied when this caption is rendered.]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>
+                cellpadding
+            </name>
+            <required>
+                false
+            </required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                <![CDATA[Definition of how much space the user agent should
+                leave between the border of each cell and its contents.]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>
+                cellspacing
+            </name>
+            <required>
+                false
+            </required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                <![CDATA[Definition of how much space the user agent should
+                leave between the left side of the table and the
+                leftmost column, the top of the table and the top of
+                the top side of the topmost row, and so on for the
+                right and bottom of the table.  It also specifies
+                the amount of space to leave between cells.]]>
+            </description>
+        </attribute>
+        <attribute>
+
+            <name>
+                columnClasses
+            </name>
+            <required>
+                false
+            </required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                <![CDATA[Comma-delimited list of CSS style classes that will be applied
+                to the columns of this table.  A space separated list of
+                classes may also be specified for any individual column.  If
+                the number of elements in this list is less than the number of
+                columns specified in the "columns" attribute, no "class"
+                attribute is output for each column greater than the number of
+                elements in the list.  If the number of elements in the list
+                is greater than the number of columns specified in the
+                "columns" attribute, the elements at the posisiton in the list
+                after the value of the "columns" attribute are ignored.]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>
+                dir
+            </name>
+            <required>
+                false
+            </required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                <![CDATA[Direction indication for text that does not inherit directionality.
+                Valid values are "LTR" (left-to-right) and "RTL" (right-to-left).]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>
+                footerClass
+            </name>
+            <required>
+                false
+            </required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                <![CDATA[Space-separated list of CSS style class(es) that will be
+                applied to any footer generated for this table.]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>
+                frame
+            </name>
+            <required>
+                false
+            </required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                <![CDATA[Code specifying which sides of the frame surrounding
+                this table will be visible.  Valid values are:
+                none (no sides, default value); above (top side only);
+                below (bottom side only); hsides (top and bottom sides
+                only); vsides (right and left sides only); lhs (left
+                hand side only); rhs (right hand side only); box
+                (all four sides); and border (all four sides).]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>
+                headerClass
+            </name>
+            <required>
+                false
+            </required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                <![CDATA[Space-separated list of CSS style class(es) that will be
+                applied to any header generated for this table.]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>
+                lang
+            </name>
+            <required>
+                false
+            </required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                <![CDATA[Code describing the language used in the generated markup
+                for this component.]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>
+                onclick
+            </name>
+            <required>
+                false
+            </required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                <![CDATA[Javascript code executed when a pointer button is
+                clicked over this element.]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>
+                ondblclick
+            </name>
+            <required>
+                false
+            </required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                <![CDATA[Javascript code executed when a pointer button is
+                double clicked over this element.]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>
+                onkeydown
+            </name>
+            <required>
+                false
+            </required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                <![CDATA[Javascript code executed when a key is
+                pressed down over this element.]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>
+                onkeypress
+            </name>
+            <required>
+                false
+            </required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                <![CDATA[Javascript code executed when a key is
+                pressed and released over this element.]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>
+                onkeyup
+            </name>
+            <required>
+                false
+            </required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                <![CDATA[Javascript code executed when a key is
+                released over this element.]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>
+                onmousedown
+            </name>
+            <required>
+                false
+            </required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                <![CDATA[Javascript code executed when a pointer button is
+                pressed down over this element.]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>
+                onmousemove
+            </name>
+            <required>
+                false
+            </required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                <![CDATA[Javascript code executed when a pointer button is
+                moved within this element.]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>
+                onmouseout
+            </name>
+            <required>
+                false
+            </required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                <![CDATA[Javascript code executed when a pointer button is
+                moved away from this element.]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>
+                onmouseover
+            </name>
+            <required>
+                false
+            </required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                <![CDATA[Javascript code executed when a pointer button is
+                moved onto this element.]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>
+                onmouseup
+            </name>
+            <required>
+                false
+            </required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                <![CDATA[Javascript code executed when a pointer button is
+                released over this element.]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>
+                rowClasses
+            </name>
+            <required>
+                false
+            </required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                <![CDATA[Comma-delimited list of CSS style classes that will be applied
+                to the rows of this table.  A space separated list of classes
+                may also be specified for any individual row.  Thes styles are
+                applied, in turn, to each row in the table.  For example, if
+                the list has two elements, the first style class in the list
+                is applied to the first row, the second to the second row, the
+                first to the third row, the second to the fourth row, etc.  In
+                other words, we keep iterating through the list until we reach
+                the end, and then we start at the beginning again.]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>
+                rules
+            </name>
+            <required>
+                false
+            </required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                <![CDATA[Code specifying which rules will appear between cells
+                within this table.  Valid values are:  none (no rules,
+                default value); groups (between row groups); rows
+                (between rows only); cols (between columns only); and
+                all (between all rows and columns).]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>
+                style
+            </name>
+            <required>
+                false
+            </required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                <![CDATA[CSS style(s) to be applied when this component is rendered.]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>
+                styleClass
+            </name>
+            <required>
+                false
+            </required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                <![CDATA[Space-separated list of CSS style class(es) to be applied when
+                this element is rendered.  This value must be passed through
+                as the "class" attribute on generated markup.]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>
+                summary
+            </name>
+            <required>
+                false
+            </required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                <![CDATA[Summary of this table's purpose and structure, for
+                user agents rendering to non-visual media such as
+                speech and Braille.]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>
+                title
+            </name>
+            <required>
+                false
+            </required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                <![CDATA[Advisory title information about markup elements generated
+                for this component.]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>
+                width
+            </name>
+            <required>
+                false
+            </required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                <![CDATA[Width of the entire table, for visual user agents.]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>
+                binding
+            </name>
+            <required>
+                false
+            </required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                The ValueExpression linking this component to a property in a backing bean
+            </description>
+        </attribute>
+        <attribute>
+            <name>
+                bodyrows
+            </name>
+            <required>
+                false
+            </required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                Comma separated list of row indices for which a new
+                "tbody" element should be started (and any
+                previously opened one should be ended).
+            </description>
+        </attribute>
+    </tag>
+    <!-- ******************************************************************* -->
+    <!-- End DataTable tag attributes                                        -->
+    <!-- ******************************************************************* -->
+
+    <!-- ******************************************************************* -->
+    <!-- Begin Column tag attributes                                         -->
+    <!-- ******************************************************************* -->
+    <tag>
+        <name>
+            column
+        </name>
+        <tag-class>
+            com.sun.faces.sandbox.taglib.AccessibleColumnTag
+        </tag-class>
+        <body-content>
+            JSP
+        </body-content>
+        <description>
+            <![CDATA[<p>Renders a UIComponent that represents a single column of data within a parent <code>UIData</code> component.</p>]]>
+        </description>
+        <attribute>
+            <name>
+                rendered
+            </name>
+            <required>
+                false
+            </required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                Flag indicating whether or not this component should be rendered
+                (during Render Response Phase), or processed on any subsequent
+                form submit.
+            </description>
+        </attribute>
+        <attribute>
+            <name>
+                binding
+            </name>
+            <required>
+                false
+            </required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                The value binding expression linking this component to a property in a backing bean
+            </description>
+        </attribute>
+        <attribute>
+            <name>
+                id
+            </name>
+            <required>
+                false
+            </required>
+            <rtexprvalue>
+                false
+            </rtexprvalue>
+            <type>
+                java.lang.String
+            </type>
+            <description>
+                The component identifier for the associated component
+            </description>
+        </attribute>
+        <attribute>
+            <name>
+                footerClass
+            </name>
+            <required>
+                false
+            </required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                <![CDATA[Space-separated list of CSS style class(es) that will be
+                applied to any column footer generated for this table.]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>
+                headerClass
+            </name>
+            <required>
+                false
+            </required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                <![CDATA[Space-separated list of CSS style class(es) that will be
+                applied to any column header generated for this table.]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>
+                rowHeader
+            </name>
+            <required>
+                false
+            </required>
+            <rtexprvalue>false</rtexprvalue>
+             <description>
+                <![CDATA[Flag indicating that this column is a row header column and therefore cells in this column should be rendered with "th" instead of "td" and must have the 'scope="row"' attribute.]]>
+            </description>
+        </attribute>
+    </tag>
+    <!-- ******************************************************************* -->
+    <!-- End Column tag attributes                                           -->
+    <!-- ******************************************************************* -->
+</taglib>
diff --git a/docs/README b/docs/README
new file mode 100644
index 0000000..54913d6
--- /dev/null
+++ b/docs/README
@@ -0,0 +1,5 @@
+In order to generate the release notes, you must have HTMLMacro
+installed as an extension to Ant (i.e. ANT_HOME/lib).
+
+Download HTMLMacro from https://htmlmacro.dev.java.net
+
diff --git a/docs/build.javadocs.dist-index.html b/docs/build.javadocs.dist-index.html
new file mode 100644
index 0000000..407e5d0
--- /dev/null
+++ b/docs/build.javadocs.dist-index.html
@@ -0,0 +1,62 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+  <head>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+    <title>JSF @spec.version@ @build.number@ @build.type@ Specification</title>
+  </head>
+
+  <body>
+    <h1>JSF @spec.version@ @build.number@ @build.type@ Specification</h1>
+
+<p>Start with the <a href="javadocs/index.html">Javadocs</a>.  Look at
+the top level <em>Description</em>.</p>
+
+
+    <hr>
+<!-- Created: Tue Jan 29 14:31:14 EST 2008 -->
+<!-- hhmts start -->
+Last modified: Tue Jan 29 14:38:51 EST 2008
+<!-- hhmts end -->
+  </body>
+</html>
diff --git a/docs/build.xml b/docs/build.xml
new file mode 100644
index 0000000..ef7b29d
--- /dev/null
+++ b/docs/build.xml
@@ -0,0 +1,80 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project basedir="." default="gendoc">
+    
+    <property name="build.dir" value="${basedir}/build"/>
+    <property name="dist.dir" value="${basedir}/dist"/>
+    <property file="../build.properties"/>
+    <import file="${jsf.build.home}/common/ant/common.xml"/>
+    
+    <target name="gendoc" 
+            description="Generate the Release Notes for the current version">
+        <taskdef name="docgen" classname="com.sun.wts.tools.htmlmacro.HtmlMacroTask"/>
+        <mkdir dir="${build.dir}"/>
+        <docgen destdir="${build.dir}">
+            <documents dir="${basedir}" includes="*.html"/>
+            <tags dir="${basedir}/tags" includes="**/*.tag"/>
+            <property key="javaNetProjectName" value="javaserverfaces"/>
+            <property key="IMPL_VERSION" value="${impl.version}"/>
+            <property key="SPEC_VERSION" value="${spec.version}"/>
+            <property key="IMPL_VERSION_SUFFIX" value="FCS"/>
+        </docgen>
+        <copy todir="${basedir}/build">
+            <fileset dir="${basedir}/tags/sun" includes="style/*" />
+        </copy>
+    </target>
+
+    <target name="clean"
+            description="Clean up the generated artifacts">
+        <delete dir="${build.dir}"/>
+        <delete dir="${dist.dir}"/>
+    </target>
+    
+    <target name="dist" depends="gendoc"
+            description="Zip the contents of the build directory">
+        <mkdir dir="${dist.dir}"/>
+        <zip destfile="${dist.dir}/ReleaseNotes-${impl.version}.zip" 
+             basedir="${build.dir}"/>    
+    </target>
+</project>
diff --git a/docs/community.html b/docs/community.html
new file mode 100644
index 0000000..42f7a5f
--- /dev/null
+++ b/docs/community.html
@@ -0,0 +1,121 @@
+<html>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<head caption="Community">
+    <link rel="stylesheet" type="text/css" href="style/sun.css"/>
+</head>
+<body>
+
+<p>
+    This document contains information about the JSF Community.
+
+    <dt>
+        <a href="https://javaserverfaces.dev.java.net/">
+            JSF Project at java.net
+        </a>
+    </dt>
+    <dd>
+        Join the JSF Community on java.net! This community is the ideal place
+        for people interested in JSF to share their ideas and ask each other
+        questions. <a href="https://www.dev.java.net/servlets/Join">Join
+        now!</a>
+    </dd>
+    <dt>
+        <a href="https://javaserverfaces.dev.java.net/servlets/ProjectMailingListList">
+            Mailing List
+        </a>
+    </dt>
+    <dd>
+        This mailing list is used for discussions/questions related to JSF
+        usage, plugin development, and etc.
+    </dd>
+
+    <dt>
+        <a href="http://wiki.java.net/bin/view/Projects/SunJSFImplFaq">
+            Frequently Asked Questions
+        </a>
+    </dt>
+    <dd>
+        We collect questions that are asked often and their answers.  Since
+        this FAQ is a WIKI, we invite you to participate.
+    </dd>
+    <dt>
+        <a href="http://forum.java.sun.com/forum.jsp?forum=427">
+            User Support Forum
+        </a>
+    </dt>
+    <dd>
+        While we prefer mailing list-based user support, we do have a web forum
+        where you can ask questions.  When posting, please include information
+        such as your container, implementation version, platform, etc.
+    </dd>
+    <dt>
+        <a href="https://javaserverfaces.dev.java.net/issues/enter_bug.cgi">
+            Issue Tracker
+        </a>
+    </dt>
+    <dd>
+        If you find any bug in the JSF implementation, please file it as a
+        bug in the issue tracker. A test case would be greatly appreciated.
+    </dd>
+    <dt>
+        <a href="mailto:jsr-252-comments at jcp.org">
+            jsr-252-comments at jcp.org           
+        </a>
+    </dt>
+    <dd>
+        Use this alias for feedback about the JSF Specification and API
+        documentation
+    </dd>
+    <dt>
+        <a href="http://java.sun.com/javaee/javaserverfaces/">
+            JavaServer Faces at java.sun.com
+        </a>
+    </dt>
+    <dd>
+        The JavaServer Faces site at <a href="http://java.sun.com">java.sun.com</a>.
+    </dd>
+</p>
+
+</body>
+</html>
diff --git a/docs/index.html b/docs/index.html
new file mode 100644
index 0000000..f4ce68a
--- /dev/null
+++ b/docs/index.html
@@ -0,0 +1,100 @@
+<html>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<head caption="Overview">
+    <link rel="stylesheet" type="text/css" href="style/sun.css"/>
+</head>
+<body>
+
+<p>
+    JavaServer<sup><font size="-2">TM</font></sup> Faces technology simplifies
+    building user interfaces for JavaServer applications.  
+    
+    Developers of various skill levels can quickly build web applications
+    by:
+    <ul>
+        <li>assembling resuable UI components in a page</li>
+        <li>connecting these components to an application data source</li>
+        <li>wiring client-generated events to server-side event handlers</li>
+        <li>and much more...</li>
+    </ul>
+</p>
+
+<h2>Documentation</h2>
+
+<p>
+    Documentation for this release consists of the following:
+    <ul>
+        <li>
+            <a href="releasenotes.html">Release Notes</a>            
+        </li>
+        <li>
+            <a href="http://java.sun.com/javaee/javaserverfaces/1.2/docs/api/index.html">Javadoc API documentation (javax.faces.*)</a>
+        </li>
+        <li>
+            <a href="http://java.sun.com/javaee/javaserverfaces/1.2/docs/tlddocs/index.html">TLDDoc taglibrary documentation</a>
+        </li>
+        <li>
+            <a href="http://java.sun.com/javaee/javaserverfaces/1.2/docs/renderkitdocs/index.html">Standard HTML Render Kit Documentation</a>
+        </li>
+        <li>
+            <a href="http://wiki.java.net/bin/view/Projects/SunJSFImplFaq">JSF FAQ</a>
+        </li>
+    </ul>
+</p>
+
+<h2>Software Licenses</h2>
+<ul>
+    <li>
+        <a href="https://javaserverfaces.dev.java.net/COPYRIGHT">Copyright 2006 Sun Microsystems, Inc.  All rights reserved.</a>
+    </li>
+    <li>
+        The JSF 1.2_01 release is covered by the <a href="https://javaserverfaces.dev.java.net/CDDLv1.0.txt">Common Development and Distribution License (CDDL)</a>
+    </li>
+    <li>
+        Additional copyright notices and license terms applicable to portions of the software are set forth in the <a href="https://javaserverfaces.dev.java.net/THIRDPARTYLICENSEREADME.txt">Third Party License README</a>
+    </li>
+</ul>
+
+</body>
+</html>
diff --git a/docs/issues.html b/docs/issues.html
new file mode 100644
index 0000000..6309893
--- /dev/null
+++ b/docs/issues.html
@@ -0,0 +1,77 @@
+<html>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<head caption="Known Issues">
+    <link rel="stylesheet" type="text/css" href="style/sun.css"/>
+</head>
+<body>
+
+<p>
+    Known issues with the 1.2_02 release.
+</p>
+<ul>
+    <li>
+    <p>
+        There is an inconsistency in the javadocs for <code>javax.faces.model.SelectItem</code>
+        where null values should be allowed, but the docs still state
+        NullPointerExceptions
+        should be thrown in this case. This issue will be addressed in the
+        upcoming
+        maintenance release (see issue <a
+          href="https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=345">345</a>).
+    </p>
+</li>
+<li>
+    <p>
+        The default renderer for <code>h:dataTable</code> doesn't produce
+        accessible
+        markup - specifically no <code>scope</code> attribute is rendered on
+        table
+        rows (see issue <a
+          href="https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=341">341</a>).
+    </p>
+</li>
+</ul>
+
+</body>
+</html>
diff --git a/docs/jcp-questionairre.txt b/docs/jcp-questionairre.txt
new file mode 100644
index 0000000..1c80b99
--- /dev/null
+++ b/docs/jcp-questionairre.txt
@@ -0,0 +1,99 @@
+http://jcp.org/aboutJava/communityprocess/speclead/final-questions.txt
+
+Revision 20101108-2313 EST
+
+Before we post your Spec's Final Approval Ballot, we need to have the
+complete answers to the following questions on file here in the PMO:
+
+1. Have you provided the PMO a PDF or ZIP version of the Final Specification?
+
+Yes: https://stbeehive.oracle.com/content/dav/st/Mojarra/Public%20Documents/JSF%202.1%20Release%20Candidate%201/jsf-spec-2.1.zip
+
+2. Have you provided the PMO a PDF or ZIP version of the Final Reference Implementation?
+
+Yes: https://stbeehive.oracle.com/content/dav/st/Mojarra/Public%20Documents/JSF%202.1%20Release%20Candidate%201/mojarra-2.1.0-FCS.zip
+
+3. Have you provided the PMO a PDF or ZIP version of the Final Technology Compatibility Kit?
+
+https://stbeehive.oracle.com/content/dav/st/Mojarra/Public%20Documents/JSF%202.1%20Release%20Candidate%201/jsftck-2.1_08-Nov-2010.zip
+
+4. What is the full text of the final Specification License?
+
+See the PDF in the zip in question 1.
+
+5. What is the full text of the Final Reference Implementation license?
+
+See the LICENSE.TXT file in the zip from question 2.
+
+6. What is the full text of the Final Technology
+    Compatibility Kit license?  
+
+>>>>> On Tue, 01 Jun 2010 17:13:23 -0700, Harold Ogle <harold at jcp.org> said:
+
+HO>     One last question, though: can you confirm that the license terms 
+HO> which will apply to the revised Final Release (Maintenance Release) 
+HO> Specification, RI and TCK are unchanged from the original Final Release?
+
+I confirm that these have not changed from the original Final Release.
+
+7. Where is the Reference Implementation be posted for Final Release?
+
+See question 1.
+
+8. Where is the Technology Compatibility Kit posted for Final Release?
+
+See question 3.
+
+9. What is the first-level TCK appeals process that you have established?
+
+This has not changed from the original Final Release
+
+10. How extensive is the coverage of your TCK? (provide the TCK Coverage Document you have prepared)
+
+Do we need this for a Minor Revision?
+
+11. Who will be the Maintenance Lead? (provide name, postal address, e-mail address, telephone number)
+
+12. What is the version number of the specification, and the full legal name of your company or organization?
+
+2.1
+
+Oracle America, Inc.
+
+13. What is the public location of your change log? 
+
+http://jcp.org/aboutJava/communityprocess/maintenance/jsr314/314ChangeLog.html
+
+14. What are your answers to the following, with regards to the Final Specification?
+
+A. Does the specification include software codes
+in the following format:
+Binary : Yes _______ No ___X______
+Source (compilable) : Yes _______ No _____X____
+Javadocs : Yes __X____ No __________
+B. Do the codes or the spec call on, contain, use
+or demonstrate encryption technology?
+Yes ___X_____ No ________
+If yes, please describe in detail
+
+The only encryption technology called on is what already exists in the Java Platform Standard Edition
+
+15. Does the Expert Group agree that you are ready to go Final?
+
+Yes.
+       
+16. Does the Reference Implementation pass the Technology Compatibility Kit?
+
+Yes.
+   
+17. Can the Specification be implemented independently of the Reference
+       Implementation?
+
+Yes.
+
+Please send the answers to the above questions back to spec-submit at jcp.org.
+
+Thank you very much and congratulations with reaching the Final Approval Ballot stage of the JCP!
+
+The JCP Program Office.
+       
diff --git a/docs/jsf-2_1-changelog.html b/docs/jsf-2_1-changelog.html
new file mode 100644
index 0000000..fe7e982
--- /dev/null
+++ b/docs/jsf-2_1-changelog.html
@@ -0,0 +1,254 @@
+
+<!-- saved from url=(0078)http://jcp.org/aboutJava/communityprocess/maintenance/jsr314/314ChangeLog.html -->
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>
+Change Log for JSR-000314 JavaServer Faces 2
+</title>
+</head>
+<body>
+<h2><center>
+Change Log for JSR-000314 JavaServer<font size="-2"><sup>TM</sup></font> Faces 2
+</center>
+</h2>
+
+<p>This page details the proposed, accepted and deferred changes to JSR
+314, documenting the changes that will go into revision 2.1, per <a
+href="http://jcp.org/en/procedures/jcp2#4.2">Section 4.2 of the JCP 2.7
+document</a>.</p>
+
+<p>Last updated: 9 November 2010</p>
+
+<p>Generated from <a href="https://javaserverfaces-spec-public.dev.java.net/issues/buglist.cgi?component=javaserverfaces-spec-public&email1=&emailtype1=exact&emailassigned_to1=1&email2=&emailtype2=exact&emailreporter2=1&issueidtype=include&issue_id=&changedin=&votes=&chfieldfrom=&chfieldto=Now&chfieldvalue=&short_desc=&short_desc_type=fulltext&long_desc=&long_desc_type=fulltext&issue_file_loc=&issue_file_loc_type=fulltext&status_whiteboard=&status_whiteboard_type=fulltext&keywords=change [...]
+containing the keyword “changelog_2_1”</a>.</p>
+
+<b>PROPOSED CHANGES</b>
+
+<table border="" width="100%">
+
+<tbody><tr><td>
+<p>
+</p><h2>Target 2.1</h2>
+</td>
+</tr>
+</tbody>
+
+
+</table>
+
+
+
+</p><p>
+
+<b>ACCEPTED CHANGES</b>
+
+<table border="" width="100%">
+
+<tbody><tr>
+<td>
+<h2>Target Milestone 2.1</h2>
+
+The source code repositories for the spec to which this change-log applies are:
+<p>
+   * <a href="https://mojarra.dev.java.net/svn/mojarra/trunk">svn url for generated portion of spec, and implementation</a><br>
+   * CVS info for non-generated portion of spec: cvs -d :pserver:USERNAME at cvs.dev.java.net:/cvs javaserverfaces-spec-eg
+
+</td>
+</tr>
+
+<tr><td>
+<table width="100%" border="1">
+        <tbody><tr>
+          <th colspan="2">Tue Nov 9 02:55:48 +0000 2010</th>
+        </tr>
+        <tr>
+          <th>
+            <a href="buglist.cgi?issue_id=153,490,444,545,576,607,663,683,696,733,777,786,800,808,850,857,862,863,866,868,883&order=issues.issue_id">ID</a>
+          </th>
+
+    <th><a href="buglist.cgi?resort=1&issue_id=153,444,490,545,576,607,663,683,696,733,777,786,800,808,850,857,862,863,866,868,883&order=issues.short_desc%2C%20issues.issue_id">Summary</a></th>
+</tr>
+
+<tr class="b">
+	<td>
+ 	<a href="https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=153">153</a>
+	</td>
+	<td><span class="summary">Add property to UIData to enable transient state saving with</span>
+	</td>
+</tr>
+<tr class="b">
+	<td>
+ 	<a href="https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=444">444</a>
+	</td>
+	<td><span class="summary">Specify that EL expressions embedded in resources must be evaluated when the resource is served up.</span>
+	</td>
+</tr>
+<tr class="a">
+	<td>
+ 	<a href="https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=490">490</a>
+	</td>
+	<td><span class="summary">Enable JSF views to be written in pure XML</span>
+	</td>
+</tr>
+<tr class="b">
+	<td>
+ 	<a href="https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=545">545</a>
+	</td>
+	<td><span class="summary">New visit hints: EXECUTE_STATE_SAVING, SKIP_ITERATION</span>
+	</td>
+</tr>
+<tr class="a">
+	<td>
+ 	<a href="https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=576">576</a>
+	</td>
+	<td><span class="summary">Make default resource excludes contain .groovy extension</span>
+	</td>
+</tr>
+<tr class="b">
+	<td>
+ 	<a href="https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=607">607</a>
+	</td>
+	<td><span class="summary">Add method FacesContext.isReleased()</span>
+	</td>
+</tr>
+<tr class="a">
+	<td>
+ 	<a href="https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=663">663</a>
+	</td>
+	<td><span class="summary">apply() needs to be called twice: restore-view, after invoke</span>
+	</td>
+</tr>
+<tr class="a">
+	<td>
+ 	<a href="https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=683">683</a>
+	</td>
+	<td><span class="summary">Form serialization should happen at the last possible second</span>
+	</td>
+</tr>
+<tr class="b">
+	<td>
+ 	<a href="https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=696">696</a>
+	</td>
+	<td><span class="summary">Option to suppress xml declaration in Facelets</span>
+	</td>
+</tr>
+<tr class="b">
+	<td>
+ 	<a href="https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=733">733</a>
+	</td>
+	<td><span class="summary">Add read only boolean "secure" property on ExternalContext</span>
+	</td>
+</tr>
+<tr class="a">
+	<td>
+ 	<a href="https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=777">777</a>
+	</td>
+	<td><span class="summary">Define API to allow pluggable Facelet cache management</span>
+	</td>
+</tr>
+<tr class="b">
+	<td>
+ 	<a href="https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=786">786</a>
+	</td>
+	<td><span class="summary">Add sessionMaxInactiveInterval to ExternalContext</span>
+	</td>
+</tr>
+<tr class="a">
+	<td>
+ 	<a href="https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=800">800</a>
+	</td>
+	<td><span class="summary">UIViewRoot.getComponentResources() generated id rules</span>
+	</td>
+</tr>
+<tr class="b">
+	<td>
+ 	<a href="https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=808">808</a>
+	</td>
+	<td><span class="summary">Move SystemEventListener implementation from UIComponent dow</span>
+	</td>
+</tr>
+<tr class="a">
+	<td>
+ 	<a href="https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=850">850</a>
+	</td>
+	<td><span class="summary">composite.tld: Specify deferred-method Element Within cc:aat</span>
+	</td>
+</tr>
+<tr class="b">
+	<td>
+ 	<a href="https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=857">857</a>
+	</td>
+	<td><span class="summary">OutputStyleSheet Renderer: add a "media" attribute.</span>
+	</td>
+</tr>
+<tr class="a">
+	<td>
+ 	<a href="https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=862">862</a>
+	</td>
+	<td><span class="summary">Remove class jsf-api/src/main/java/javax/faces/event/PostAdd</span>
+	</td>
+</tr>
+<tr class="b">
+	<td>
+ 	<a href="https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=863">863</a>
+	</td>
+	<td><span class="summary">Specify use of ServletContainerInitializer.</span>
+	</td>
+</tr>
+<tr class="a">
+	<td>
+ 	<a href="https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=866">866</a>
+	</td>
+	<td><span class="summary">Section 5.6.2.5 Specify special "this" resource library name</span>
+	</td>
+</tr>
+<tr class="b">
+	<td>
+ 	<a href="https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=868">868</a>
+	</td>
+	<td><span class="summary">Drop support for CURRENT_COMPONENT CURRENT_COMPOSITE_COMPONE</span>
+	</td>
+</tr>
+<tr class="b">
+	<td>
+ 	<a href="https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=878">878</a>
+	</td>
+	<td><span class="summary">FacesContext.setUIViewRoot Spec Inconsistent With Implementation</span>
+	</td>
+</tr>
+<tr class="a">
+	<td>
+ 	<a href="https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=883">883</a>
+	</td>
+	<td><span class="summary">Specify that ScriptRenderer calls encodeResourceURL</span>
+	</td>
+</tr>
+</tbody></table>
+</td></tr>
+
+
+</tbody></table>
+
+<br />
+
+<b>DEFERRED CHANGES</b><table border="" width="100%">
+
+<tbody>
+
+<tr class="a">
+	<td>
+ 	<a href="https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=731">731</a>
+	</td>
+	<td><span class="summary">Clarify f:event listener method parameter requirements</span>
+	</td>
+</tr>
+
+<tr class="b">
+	<td>
+ 	<a href="https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=869">869</a>
+	</td>
+	<td><span class="summary">Specify CSRF Solution</span>
+	</td>
+</tr>
+
+
+</tbody></table></body></html>
diff --git a/docs/releasenotes.html b/docs/releasenotes.html
new file mode 100644
index 0000000..8ba228a
--- /dev/null
+++ b/docs/releasenotes.html
@@ -0,0 +1,118 @@
+<html>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<head caption="Release Notes">
+    <link rel="stylesheet" type="text/css" href="style/sun.css"/>
+</head>
+<body>
+
+<p>
+    This document contains information that should help you use this
+    software library more effectively. See the
+    <a href="http://wiki.java.net/bin/view/Projects/SunJSFImplFaq">JSF FAQ</a>
+    for additional information.
+</p>
+
+<h2>Java<sup><font size="-2">TM</font></sup> 2 Platform, Standard Edition
+    (J2SE<sup><font size="-2">TM</font></sup>) Requirements</h2>
+
+<p>
+    This release of JSF requires <a
+      href="http://java.sun.com/javase/downloads/index.jsp">J2SE 5.0</a>
+    or higher.
+</p>
+
+<h2>Webtier Specification Requirements</h2>
+
+<p>
+    This release of JSF requires:
+    <ul>
+        <li><a href="http://java.sun.com/products/servlets/">Java Servlet 2.5</a></li>
+        <li><a href="http://java.sun.com/products/jsp/">JavaServer<sup><font size="-2">TM</font></sup> Pages 2.1</a></li>
+        <li><a href="http://java.sun.com/products/jsp/jstl/">JavaServer<sup><font size="-2">TM</font></sup> Pages Standard Tag
+            Library 2.1</a>
+        </li>
+    </ul>
+</p>
+
+<h2>Identifying the JAR Files</h2>
+
+<table style="border:1px solid; border-width:1px;border-collapse:collapse;"
+       cellspacing="1" cellpadding="5px">
+    <tr bgcolor="silver" style="border:1px solid;">
+        <th width="30%">JAR File</th>
+        <th width="70%">Description</th>
+    </tr>
+    <tr>
+        <td>
+            javax.faces-api.jar
+        </td>
+        <td>
+            This JAR contains all of the public APIs as described by the
+            specification.
+        </td>
+    </tr>
+    <tr>
+        <td>
+            javax.faces.jar
+        </td>
+        <td>
+            This JAR contains the API and the runtime implementation per the specification.
+        </td>
+    </tr>
+</table>
+
+<h2>Change Log</h2>
+<ul>
+    <li><a href="https://javaserverfaces.dev.java.net/nonav/rlnotes/1.2_02/changelog.html">JSF 1.2_02 change log</a></li>
+    <li><a href="https://javaserverfaces.dev.java.net/nonav/rlnotes/1.2_01/changelog.html">JSF 1.2_01 change log</a></li>
+    <li>Please refer to the <a
+          href="https://javaserverfaces.dev.java.net/README_1.2">JSF 1.2 Release
+        Notes</a>
+        for information about that release.
+    </li>
+</ul>
+
+
+</body>
+</html>
diff --git a/docs/tags/jax/body.tag b/docs/tags/jax/body.tag
new file mode 100644
index 0000000..a675dd0
--- /dev/null
+++ b/docs/tags/jax/body.tag
@@ -0,0 +1,30 @@
+<j:jelly xmlns:j="jelly:core" xmlns:d="jelly:define" xmlns:x="jelly:xml">
+  <BODY>
+    <h1>
+      <x:copyOf select="$toc/toc/banner" />
+
+      <br />
+      ${caption} <!-- exported by head.tag -->
+    </h1>
+    <center>
+      <j:if test="${SPEC_VERSION!=null}">
+        <b>Specification Version:</b> ${SPEC_VERSION}<br />
+      </j:if>
+      <j:if test="${IMPL_VERSION!=null}">
+        <b>Implementation Version:</b> ${IMPL_VERSION} ${IMPL_VERSION_SUFFIX}<br />
+      </j:if>
+    </center>
+
+    <navigation-bar toc="${toc}" />
+
+    <d:invokeBody />
+
+    <hr />
+    <div class="footer">
+      <!-- to make sure that this always have enough height -->
+      <div style="float:right; height: 24px"></div>
+      <x:copyOf select="$toc/toc/footer" />
+      <div style="clear:both"></div>
+    </div>
+  </BODY>
+</j:jelly>
\ No newline at end of file
diff --git a/docs/tags/jax/head.tag b/docs/tags/jax/head.tag
new file mode 100644
index 0000000..7e8b58f
--- /dev/null
+++ b/docs/tags/jax/head.tag
@@ -0,0 +1,18 @@
+<j:jelly xmlns:j="jelly:core" xmlns:d="jelly:define" xmlns:x="jelly:xml">
+  <HEAD>
+    <!-- parse TOC and export it -->
+    <x:parse var="toc" xml="toc.xml" />
+    <j:set scope="parent" var="toc" value="${toc}" />
+
+    <!-- also export the caption -->
+    <j:set scope="parent" var="caption" value="${caption}" />
+
+    <d:invokeBody />
+    <title>
+      <x:expr select="$toc/toc/@name"/> ${IMPL_VERSION} ${IMPL_VERSION_SUFFIX} -- ${caption}
+    </title>
+    <j:if test="${javaNetProjectName!=null}">
+      <link rel="alternate" type="application/rss+xml" href="https://${javaNetProjectName}.dev.java.net/servlets/ProjectNewsRSS" />
+    </j:if>
+  </HEAD>
+</j:jelly>
\ No newline at end of file
diff --git a/docs/tags/sun/navigation-bar.tag b/docs/tags/sun/navigation-bar.tag
new file mode 100644
index 0000000..3ff0fe0
--- /dev/null
+++ b/docs/tags/sun/navigation-bar.tag
@@ -0,0 +1,111 @@
+<?xml version="1.0" encoding="us-ascii" ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!--
+  Creates a navigation bar in Sun theme.
+-->
+<j:jelly xmlns:j="jelly:core" xmlns:x="jelly:xml">
+  <!-- parse TOC if necessary -->
+  <j:if test="${toc==null}">
+    <x:parse var="toc" xml="${tocXml}" />
+  </j:if>
+  <x:set var="toc" select="$toc/toc" />
+
+  <!-- tabs -->
+  <table class="navbar" cellspacing="0">
+    <tr>
+      <x:forEach var="chapter" select="$toc/chapter">
+        <x:set var="active" select="boolean($chapter/document[starts-with(@url,$fileName)])" />
+        <j:choose>
+          <j:when test="${active}">
+            <td class="active">
+              <a>
+                <x:expr select="$chapter/@name" />
+              </a>
+            </td>
+          </j:when>
+          <j:otherwise>
+            <td class="inactive">
+              <x:set var="href" select="string($chapter/document[1]/@url)" />
+              <a href="${href}">
+                <x:expr select="$chapter/@name" />
+              </a>
+            </td>
+          </j:otherwise>
+        </j:choose>
+      </x:forEach>
+    </tr>
+  </table>
+  <!-- sub navigation bar -->
+  <x:forEach var="chapter" select="$toc/chapter">
+    <x:set var="active" select="boolean($chapter/document[starts-with(@url,$fileName)])" />
+    <j:if test="${active}">
+      <div class="subnavbar">
+        <ul>
+          <j:set var="first" value="${true}" />
+          <x:forEach var="document" select="$chapter/document">
+            <x:set var="activeDocument" select="starts-with($document/@url,$fileName)" />
+            <x:element name="li">
+              <j:if test="${first}">
+                <x:attribute name="class">first</x:attribute>
+                <j:set var="first" value="${false}" />
+              </j:if>
+              <x:set var="href" select="string($document/@url)" />
+              <a href="${href}">
+                <x:element name="span">
+                  <j:if test="${activeDocument}">
+                    <x:attribute name="class">active</x:attribute>
+                  </j:if>
+                  <x:expr select="$document/@name" />
+                  <!-- whitespace -->
+                  <j:whitespace trim="false"> </j:whitespace>
+                </x:element>
+              </a>
+           </x:element>
+          </x:forEach>
+        </ul>
+      </div>
+    </j:if>
+  </x:forEach>
+</j:jelly>
+
diff --git a/docs/tags/sun/style/a2_corner_tr.gif b/docs/tags/sun/style/a2_corner_tr.gif
new file mode 100644
index 0000000..b99c180
Binary files /dev/null and b/docs/tags/sun/style/a2_corner_tr.gif differ
diff --git a/docs/tags/sun/style/bg_titlebar.gif b/docs/tags/sun/style/bg_titlebar.gif
new file mode 100644
index 0000000..bbef368
Binary files /dev/null and b/docs/tags/sun/style/bg_titlebar.gif differ
diff --git a/docs/tags/sun/style/corner_navblue_tr.gif b/docs/tags/sun/style/corner_navblue_tr.gif
new file mode 100644
index 0000000..597a34c
Binary files /dev/null and b/docs/tags/sun/style/corner_navblue_tr.gif differ
diff --git a/docs/tags/sun/style/d7_tab_bg.gif b/docs/tags/sun/style/d7_tab_bg.gif
new file mode 100644
index 0000000..d836d77
Binary files /dev/null and b/docs/tags/sun/style/d7_tab_bg.gif differ
diff --git a/docs/tags/sun/style/sun.css b/docs/tags/sun/style/sun.css
new file mode 100644
index 0000000..696b372
--- /dev/null
+++ b/docs/tags/sun/style/sun.css
@@ -0,0 +1,194 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+/*
+ * The contents of this file are subject to the terms
+ * of the Common Development and Distribution License
+ * (the "License").  You may not use this file except
+ * in compliance with the License.
+ * 
+ * You can obtain a copy of the license at
+ * https://jwsdp.dev.java.net/CDDLv1.0.html
+ * See the License for the specific language governing
+ * permissions and limitations under the License.
+ * 
+ * When distributing Covered Code, include this CDDL
+ * HEADER in each file and include the License file at
+ * https://jwsdp.dev.java.net/CDDLv1.0.html  If applicable,
+ * add the following below this CDDL HEADER, with the
+ * fields enclosed by brackets "[]" replaced with your
+ * own identifying information: Portions Copyright [yyyy]
+ * [name of copyright owner]
+ */
+
+/*
+ * Default CSS stylesheet
+ */
+
+body {
+    background-color: white;
+}
+
+h1,h2,h3,h4,h5,h6 {
+  font-family: sans-serif;
+}
+
+h1 {
+  text-align: center;
+  color: rgb(231, 111, 0);
+}
+
+h3, h4, h5, h6 {
+    color: #000;
+}
+
+code {
+    font-family: Courier, monospace;
+}
+
+diff {
+    font-family: Courier, monospace;
+    color: red;
+}
+
+a {
+  text-decoration:none;
+}
+a:visited {
+  color:#917E9C;
+}
+a:link {
+  color:#3E6B8A;
+}
+
+a:hover {
+  text-decoration:underline;
+}
+
+DIV.footer {/* header on each HTML file that shows the revision */
+	text-align: right;
+	font-size: 0.8em;
+	padding-right: 80px;
+	background: url("sunlogo.gif") no-repeat right bottom;
+}
+
+
+/*------------------------------ navigation bar ------------------------------*/
+.navbar {
+  border-spacing: 0px;
+  border: 0px;
+  margin-left: 1em;
+}
+
+.navbar TD {
+  border-right:5px solid #FFF;
+  padding:0px;
+  vertical-align: top;
+}
+
+.navbar TD A {
+  padding: 6px 7px 3px 7px;
+  border: none;
+  margin: none;
+  display: block;
+  text-decoration: none;
+}
+
+.navbar TD A:hover {
+  text-decoration: underline;
+}
+
+
+.navbar TD.active {
+  background: #507c9a url("bg_titlebar.gif") no-repeat left top;
+}
+
+.navbar TD.active A {
+  background: url("a2_corner_tr.gif") no-repeat right top;
+  font-weight: bold;
+  color: white;
+}
+
+.navbar TD.inactive {
+  background: #CCDAE3 url("d7_tab_bg.gif") no-repeat left top;
+  border-top: 3px solid #FFF;  /* so that active tabs are drawn 3px taller than others */
+}
+
+.navbar TD.inactive A {
+  background: url("corner_navblue_tr.gif") no-repeat right top;
+  color: rgb(53, 85, 107);
+}
+
+
+.subnavbar {
+  display: block;
+  background: #507c9a;
+  padding: 9px 7px 5px 7px;
+}
+.subnavbar UL {
+  display: inline;
+  margin-left: 0px;
+  padding-left: 0px;
+}
+.subnavbar UL LI {
+  display: inline;
+  margin-left: 0px;
+  border-left: 1px solid #FFF;
+  padding-left: 5px;
+}
+.subnavbar UL LI.first {
+  border-left: none;
+}
+.subnavbar A {
+  font-weight:normal;
+  color:#CCDAE3;
+  text-decoration: none;
+}
+.subnavbar A:hover {
+  text-decoration: underline;
+}
+.subnavbar A:visited {
+  font-weight:normal;
+  color:#FFF;
+}
+.subnavbar UL LI A SPAN.active {
+  font-weight: bold;
+  color:#FFF;
+}
diff --git a/docs/tags/sun/style/sunlogo.gif b/docs/tags/sun/style/sunlogo.gif
new file mode 100644
index 0000000..1c21163
Binary files /dev/null and b/docs/tags/sun/style/sunlogo.gif differ
diff --git a/docs/toc.xml b/docs/toc.xml
new file mode 100644
index 0000000..96ac791
--- /dev/null
+++ b/docs/toc.xml
@@ -0,0 +1,67 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<toc name="JavaServer(TM) Faces Release Notes">
+    <!-- this portion is executed as the banner -->
+    <banner>        
+      JavaServer<sup><font size="-2">TM</font></sup> Faces Release Notes     
+    </banner>
+    <!-- this portion is excuted as the footer -->
+    <footer>
+        $Revision: 1.7 $<br/>
+        $Date: 2007/04/27 21:59:57 $<br/>        
+    </footer>
+    <chapter name="JavaServer Faces(TM) 1.2">
+        <document name="Overview"
+                  url="index.html"/>
+        <document name="Release Notes"
+                  url="releasenotes.html"/>
+        <document name="Change Log"
+                  url="changelog.html"/>
+        <document name="Known Issues"
+                  url="issues.html"/>
+    </chapter>
+    <chapter name="JSF Community">
+        <document name="Community"
+                  url="community.html"/>
+    </chapter>
+</toc>
diff --git a/injectionprovider/build.xml b/injectionprovider/build.xml
index d0dde50..97060dc 100644
--- a/injectionprovider/build.xml
+++ b/injectionprovider/build.xml
@@ -1,41 +1,45 @@
 <?xml version='1.0' encoding='UTF-8'?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
--->
 
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
 
 <!-- ************ JSF build file ************************************** -->
 
@@ -53,8 +57,8 @@
 
     <path id="compile.classpath">
         <pathelement location="${servlet.jar}"/>
-        <pathelement location="${jsf-api.jar}"/>
-        <pathelement location="${jsf-impl.jar}"/>
+        <pathelement location="${javax.faces-api.jar}"/>
+        <pathelement location="${javax.faces.jar}"/>
         <pathelement location="${glassfish.jar}"/>
         <pathelement location="${tomcat6.jar}"/>
         <pathelement location="${jetty.jar}" />
@@ -97,4 +101,4 @@ NOTE: You must build jsf-api and jsf-ri *before* building this project.
         <delete dir="${build.dir}"/>
     </target>
 
-</project>
\ No newline at end of file
+</project>
diff --git a/injectionprovider/src/java/com/sun/faces/vendor/GlassFishInjectionProvider.java b/injectionprovider/src/java/com/sun/faces/vendor/GlassFishInjectionProvider.java
index d82fe1f..29e7930 100644
--- a/injectionprovider/src/java/com/sun/faces/vendor/GlassFishInjectionProvider.java
+++ b/injectionprovider/src/java/com/sun/faces/vendor/GlassFishInjectionProvider.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/injectionprovider/src/java/com/sun/faces/vendor/Jetty6InjectionProvider.java b/injectionprovider/src/java/com/sun/faces/vendor/Jetty6InjectionProvider.java
index 6118517..e039fb3 100644
--- a/injectionprovider/src/java/com/sun/faces/vendor/Jetty6InjectionProvider.java
+++ b/injectionprovider/src/java/com/sun/faces/vendor/Jetty6InjectionProvider.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -33,116 +37,116 @@
  * only if the new code is made subject to such option by the copyright
  * holder.
  */
-
-package com.sun.faces.vendor;
-
-import com.sun.faces.spi.DiscoverableInjectionProvider;
-import com.sun.faces.spi.InjectionProviderException;
-import org.mortbay.jetty.plus.annotation.InjectionCollection;
-import org.mortbay.jetty.plus.annotation.LifeCycleCallbackCollection;
-import org.mortbay.jetty.annotations.AnnotationParser;
+
+package com.sun.faces.vendor;
+
+import com.sun.faces.spi.DiscoverableInjectionProvider;
+import com.sun.faces.spi.InjectionProviderException;
+import org.mortbay.jetty.plus.annotation.InjectionCollection;
+import org.mortbay.jetty.plus.annotation.LifeCycleCallbackCollection;
+import org.mortbay.jetty.annotations.AnnotationParser;
 import org.mortbay.jetty.webapp.WebAppContext;
 
-
-
-/**
- * <p>See http://docs.codehaus.org/display/JETTY/Annotations for details on
- * Jetty's supported Annotations.</p>
- */
-public class Jetty6InjectionProvider extends DiscoverableInjectionProvider {
-
-    private InjectionCollection injections;
-    private LifeCycleCallbackCollection callbacks;
-
-
-    // ------------------------------------------------------------ Constructors
-
-
-    /**
-     * <p>Construct a new Jetty6InjectionProvider instance.</p>
-     */
-    public Jetty6InjectionProvider() {
-
-        injections = new InjectionCollection();
-        callbacks = new LifeCycleCallbackCollection();
-
-    }
-
-
-    // ------------------------------ Methods from DiscoverableInjectionProvider
-
-
-    /**
-     * <p>The implementation of this method must perform the following
-     * steps:
-     * <ul>
-     * <li>Inject the supported resources per the Servlet 2.5
-     * specification into the provided object</li>
-     * </ul>
-     * </p>
-     * <p>This method <em>must not</em> invoke any methods
-     * annotated with <code>@PostConstruct</code>
-     *
-     * @param managedBean the target managed bean
-     * @throws com.sun.faces.spi.InjectionProviderException
-     *          if an error occurs during
-     *          resource injection
-     */
-    public void inject(Object managedBean) throws InjectionProviderException {
-
+
+
+/**
+ * <p>See http://docs.codehaus.org/display/JETTY/Annotations for details on
+ * Jetty's supported Annotations.</p>
+ */
+public class Jetty6InjectionProvider extends DiscoverableInjectionProvider {
+
+    private InjectionCollection injections;
+    private LifeCycleCallbackCollection callbacks;
+
+
+    // ------------------------------------------------------------ Constructors
+
+
+    /**
+     * <p>Construct a new Jetty6InjectionProvider instance.</p>
+     */
+    public Jetty6InjectionProvider() {
+
+        injections = new InjectionCollection();
+        callbacks = new LifeCycleCallbackCollection();
+
+    }
+
+
+    // ------------------------------ Methods from DiscoverableInjectionProvider
+
+
+    /**
+     * <p>The implementation of this method must perform the following
+     * steps:
+     * <ul>
+     * <li>Inject the supported resources per the Servlet 2.5
+     * specification into the provided object</li>
+     * </ul>
+     * </p>
+     * <p>This method <em>must not</em> invoke any methods
+     * annotated with <code>@PostConstruct</code>
+     *
+     * @param managedBean the target managed bean
+     * @throws com.sun.faces.spi.InjectionProviderException
+     *          if an error occurs during
+     *          resource injection
+     */
+    public void inject(Object managedBean) throws InjectionProviderException {
+
         AnnotationParser.parseAnnotations((WebAppContext) WebAppContext.getCurrentWebAppContext(),
-                                          managedBean.getClass(),
-                                          null,
-                                          injections,
-                                          callbacks);
-        try {
-            injections.inject(managedBean);
-        } catch (Exception e) {
-            throw new InjectionProviderException(e);
-        }
-        
-    }
-
-    /**
-     * <p>The implemenation of this method must invoke any
-     * method marked with the <code>@PreDestroy</code> annotation
-     * (per the Common Annotations Specification).
-     *
-     * @param managedBean the target managed bean
-     * @throws com.sun.faces.spi.InjectionProviderException
-     *          if an error occurs when invoking
-     *          the method annotated by the <code>@PreDestroy</code> annotation
-     */
-    public void invokePreDestroy(Object managedBean)
-    throws InjectionProviderException {
-
-        try {
-            callbacks.callPreDestroyCallback(managedBean);
-        } catch (Exception e) {
-            throw new InjectionProviderException(e);
-        }
-
-    }
-
-    /**
-     * <p>The implemenation of this method must invoke any
-     * method marked with the <code>@PostConstruct</code> annotation
-     * (per the Common Annotations Specification).
-     *
-     * @param managedBean the target managed bean
-     * @throws com.sun.faces.spi.InjectionProviderException
-     *          if an error occurs when invoking
-     *          the method annotated by the <code>@PostConstruct</code>
-     *          annotation
-     */
-    public void invokePostConstruct(Object managedBean)
-    throws InjectionProviderException {
-
-        try {
-            callbacks.callPostConstructCallback(managedBean);       
-        } catch (Exception e) {
-            throw new InjectionProviderException(e);
-        }
-
-    }
-}
+                                          managedBean.getClass(),
+                                          null,
+                                          injections,
+                                          callbacks);
+        try {
+            injections.inject(managedBean);
+        } catch (Exception e) {
+            throw new InjectionProviderException(e);
+        }
+        
+    }
+
+    /**
+     * <p>The implemenation of this method must invoke any
+     * method marked with the <code>@PreDestroy</code> annotation
+     * (per the Common Annotations Specification).
+     *
+     * @param managedBean the target managed bean
+     * @throws com.sun.faces.spi.InjectionProviderException
+     *          if an error occurs when invoking
+     *          the method annotated by the <code>@PreDestroy</code> annotation
+     */
+    public void invokePreDestroy(Object managedBean)
+    throws InjectionProviderException {
+
+        try {
+            callbacks.callPreDestroyCallback(managedBean);
+        } catch (Exception e) {
+            throw new InjectionProviderException(e);
+        }
+
+    }
+
+    /**
+     * <p>The implemenation of this method must invoke any
+     * method marked with the <code>@PostConstruct</code> annotation
+     * (per the Common Annotations Specification).
+     *
+     * @param managedBean the target managed bean
+     * @throws com.sun.faces.spi.InjectionProviderException
+     *          if an error occurs when invoking
+     *          the method annotated by the <code>@PostConstruct</code>
+     *          annotation
+     */
+    public void invokePostConstruct(Object managedBean)
+    throws InjectionProviderException {
+
+        try {
+            callbacks.callPostConstructCallback(managedBean);       
+        } catch (Exception e) {
+            throw new InjectionProviderException(e);
+        }
+
+    }
+}
diff --git a/injectionprovider/src/java/com/sun/faces/vendor/Tomcat6InjectionProvider.java b/injectionprovider/src/java/com/sun/faces/vendor/Tomcat6InjectionProvider.java
index cfb747c..eca46dd 100644
--- a/injectionprovider/src/java/com/sun/faces/vendor/Tomcat6InjectionProvider.java
+++ b/injectionprovider/src/java/com/sun/faces/vendor/Tomcat6InjectionProvider.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-api/LICENSE.TXT b/jsf-api/LICENSE.TXT
index b4ffbe7..f95cf37 100644
--- a/jsf-api/LICENSE.TXT
+++ b/jsf-api/LICENSE.TXT
@@ -1,96 +1,266 @@
-COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0 
+COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0
 
-1. Definitions. 
+1. Definitions.
 
-1.1. Contributor means each individual or entity that creates or contributes to the creation of Modifications. 
+1.1. "Contributor" means each individual or entity that creates or contributes to the creation of Modifications.
 
-1.2. Contributor Version means the combination of the Original Software, prior Modifications used by a Contributor (if any), and the Modifications made by that particular Contributor. 
+1.2. "Contributor Version" means the combination of the Original Software, prior Modifications used by a Contributor (if any), and the Modifications made by that particular Contributor.
 
-1.3. Covered Software means (a) the Original Software, or (b) Modifications, or (c) the combination of files containing Original Software with files containing Modifications, in each case including portions thereof. 
+1.3. "Covered Software" means (a) the Original Software, or (b) Modifications, or (c) the combination of files containing Original Software with files containing Modifications, in each case including portions thereof.
 
-1.4. Executable means the Covered Software in any form other than Source Code. 
+1.4. "Executable" means the Covered Software in any form other than Source Code.
 
-1.5. Initial Developer means the individual or entity that first makes Original Software available under this License. 
+1.5. "Initial Developer" means the individual or entity that first makes Original Software available under this License.
 
-1.6. Larger Work means a work which combines Covered Software or portions thereof with code not governed by the terms of this License. 
+1.6. "Larger Work" means a work which combines Covered Software or portions thereof with code not governed by the terms of this License.
 
-1.7. License means this document. 
+1.7. "License" means this document.
 
-1.8. Licensable means having the right to grant, to the maximum extent possible, whether at the time of the initial grant or subsequently acquired, any and all of the rights conveyed herein. 
+1.8. "Licensable" means having the right to grant, to the maximum extent possible, whether at the time of the initial grant or subsequently acquired, any and all of the rights conveyed herein.
 
-1.9. Modifications means the Source Code and Executable form of any of the following: A. Any file that results from an addition to, deletion from or modification of the contents of a file containing Original Software or previous Modifications; B. Any new file that contains any part of the Original Software or previous Modification; or C. Any new file that is contributed or otherwise made available under the terms of this License. 
+1.9. "Modifications" means the Source Code and Executable form of any of the following:
 
-1.10. Original Software means the Source Code and Executable form of computer software code that is originally released under this License. 
+A. Any file that results from an addition to, deletion from or modification of the contents of a file containing Original Software or previous Modifications;
 
-1.11. Patent Claims means any patent claim(s), now owned or hereafter acquired, including without limitation, method, process, and apparatus claims, in any patent Licensable by grantor. 
+B. Any new file that contains any part of the Original Software or previous Modification; or
 
-1.12. Source Code means (a) the common form of computer software code in which modifications are made and (b) associated documentation included in or with such code. 
+C. Any new file that is contributed or otherwise made available under the terms of this License.
 
-1.13. You (or Your) means an individual or a legal entity exercising rights under, and complying with all of the terms of, this License. For legal entities, You includes any entity which controls, is controlled by, or is under common control with You. For purposes of this definition, control means (a) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (b) ownership of more than fifty percent (50%) of the outstanding sh [...]
+1.10. "Original Software" means the Source Code and Executable form of computer software code that is originally released under this License.
+
+1.11. "Patent Claims" means any patent claim(s), now owned or hereafter acquired, including without limitation, method, process, and apparatus claims, in any patent Licensable by grantor.
+
+1.12. "Source Code" means (a) the common form of computer software code in which modifications are made and (b) associated documentation included in or with such code.
+
+1.13. "You" (or "Your") means an individual or a legal entity exercising rights under, and complying with all of the terms of, this License. For legal entities, "You" includes any entity which controls, is controlled by, or is under common control with You. For purposes of this definition, "control" means (a) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (b) ownership of more than fifty percent (50%) of the outsta [...]
 
 2. License Grants.
 
-2.1. The Initial Developer Grant. Conditioned upon Your compliance with Section 3.1 below and subject to third party intellectual property claims, the Initial Developer hereby grants You a world-wide, royalty-free, non-exclusive license: 
+2.1. The Initial Developer Grant.
 
-(a) under intellectual property rights (other than patent or trademark) Licensable by Initial Developer, to use, reproduce, modify, display, perform, sublicense and distribute the Original Software (or portions thereof), with or without Modifications, and/or as part of a Larger Work; and 
+Conditioned upon Your compliance with Section 3.1 below and subject to third party intellectual property claims, the Initial Developer hereby grants You a world-wide, royalty-free, non-exclusive license:
 
-(b) under Patent Claims infringed by the making, using or selling of Original Software, to make, have made, use, practice, sell, and offer for sale, and/or otherwise dispose of the Original Software (or portions thereof);
+(a) under intellectual property rights (other than patent or trademark) Licensable by Initial Developer, to use, reproduce, modify, display, perform, sublicense and distribute the Original Software (or portions thereof), with or without Modifications, and/or as part of a Larger Work; and
 
-(c) The licenses granted in Sections 2.1(a) and (b) are effective on the date Initial Developer first distributes or otherwise makes the Original Software available to a third party under the terms of this License;
+(b) under Patent Claims infringed by the making, using or selling of Original Software, to make, have made, use, practice, sell, and offer for sale, and/or otherwise dispose of the Original Software (or portions thereof).
 
-(d) Notwithstanding Section 2.1(b) above, no patent license is granted: (1) for code that You delete from the Original Software, or (2) for infringements caused by: (i) the modification of the Original Software, or (ii) the combination of the Original Software with other software or devices. 
+(c) The licenses granted in Sections 2.1(a) and (b) are effective on the date Initial Developer first distributes or otherwise makes the Original Software available to a third party under the terms of this License.
 
-2.2. Contributor Grant. Conditioned upon Your compliance with Section 3.1 below and subject to third party intellectual property claims, each Contributor hereby grants You a world-wide, royalty-free, non-exclusive license: 
+(d) Notwithstanding Section 2.1(b) above, no patent license is granted: (1) for code that You delete from the Original Software, or (2) for infringements caused by: (i) the modification of the Original Software, or (ii) the combination of the Original Software with other software or devices.
 
-(a) under intellectual property rights (other than patent or trademark) Licensable by Contributor to use, reproduce, modify, display, perform, sublicense and distribute the Modifications created by such Contributor (or portions thereof), either on an unmodified basis, with other Modifications, as Covered Software and/or as part of a Larger Work; and 
+2.2. Contributor Grant.
 
-(b) under Patent Claims infringed by the making, using, or selling of Modifications made by that Contributor either alone and/or in combination with its Contributor Version (or portions of such combination), to make, use, sell, offer for sale, have made, and/or otherwise dispose of: (1) Modifications made by that Contributor (or portions thereof); and (2) the combination of Modifications made by that Contributor with its Contributor Version (or portions of such combination). 
+Conditioned upon Your compliance with Section 3.1 below and subject to third party intellectual property claims, each Contributor hereby grants You a world-wide, royalty-free, non-exclusive license:
+
+(a) under intellectual property rights (other than patent or trademark) Licensable by Contributor to use, reproduce, modify, display, perform, sublicense and distribute the Modifications created by such Contributor (or portions thereof), either on an unmodified basis, with other Modifications, as Covered Software and/or as part of a Larger Work; and
+
+(b) under Patent Claims infringed by the making, using, or selling of Modifications made by that Contributor either alone and/or in combination with its Contributor Version (or portions of such combination), to make, use, sell, offer for sale, have made, and/or otherwise dispose of: (1) Modifications made by that Contributor (or portions thereof); and (2) the combination of Modifications made by that Contributor with its Contributor Version (or portions of such combination).
 
 (c) The licenses granted in Sections 2.2(a) and 2.2(b) are effective on the date Contributor first distributes or otherwise makes the Modifications available to a third party.
 
-(d) Notwithstanding Section 2.2(b) above, no patent license is granted: (1) for any code that Contributor has deleted from the Contributor Version; (2) for infringements caused by: (i) third party modifications of Contributor Version, or (ii) the combination of Modifications made by that Contributor with other software (except as part of the Contributor Version) or other devices; or (3) under Patent Claims infringed by Covered Software in the absence of Modifications made by that Contributor. 
+(d) Notwithstanding Section 2.2(b) above, no patent license is granted: (1) for any code that Contributor has deleted from the Contributor Version; (2) for infringements caused by: (i) third party modifications of Contributor Version, or (ii) the combination of Modifications made by that Contributor with other software (except as part of the Contributor Version) or other devices; or (3) under Patent Claims infringed by Covered Software in the absence of Modifications made by that Contributor.
+
+3. Distribution Obligations.
+
+3.1. Availability of Source Code.
+
+Any Covered Software that You distribute or otherwise make available in Executable form must also be made available in Source Code form and that Source Code form must be distributed only under the terms of this License. You must include a copy of this License with every copy of the Source Code form of the Covered Software You distribute or otherwise make available. You must inform recipients of any such Covered Software in Executable form as to how they can obtain such Covered Software i [...]
+
+3.2. Modifications.
+
+The Modifications that You create or to which You contribute are governed by the terms of this License. You represent that You believe Your Modifications are Your original creation(s) and/or You have sufficient rights to grant the rights conveyed by this License.
+
+3.3. Required Notices.
+
+You must include a notice in each of Your Modifications that identifies You as the Contributor of the Modification. You may not remove or alter any copyright, patent or trademark notices contained within the Covered Software, or any notices of licensing or any descriptive text giving attribution to any Contributor or the Initial Developer.
+
+3.4. Application of Additional Terms.
+
+You may not offer or impose any terms on any Covered Software in Source Code form that alters or restricts the applicable version of this License or the recipients� rights hereunder. You may choose to offer, and to charge a fee for, warranty, support, indemnity or liability obligations to one or more recipients of Covered Software. However, you may do so only on Your own behalf, and not on behalf of the Initial Developer or any Contributor. You must make it absolutely clear that any such [...]
+
+3.5. Distribution of Executable Versions.
+
+You may distribute the Executable form of the Covered Software under the terms of this License or under the terms of a license of Your choice, which may contain terms different from this License, provided that You are in compliance with the terms of this License and that the license for the Executable form does not attempt to limit or alter the recipient�s rights in the Source Code form from the rights set forth in this License. If You distribute the Covered Software in Executable form u [...]
+
+3.6. Larger Works.
+
+You may create a Larger Work by combining Covered Software with other code not governed by the terms of this License and distribute the Larger Work as a single product. In such a case, You must make sure the requirements of this License are fulfilled for the Covered Software.
+
+4. Versions of the License.
+
+4.1. New Versions.
+
+Oracle America, Inc. is the initial license steward and may publish revised and/or new versions of this License from time to time. Each version will be given a distinguishing version number. Except as provided in Section 4.3, no one other than the license steward has the right to modify this License.
+
+4.2. Effect of New Versions.
+
+You may always continue to use, distribute or otherwise make the Covered Software available under the terms of the version of the License under which You originally received the Covered Software. If the Initial Developer includes a notice in the Original Software prohibiting it from being distributed or otherwise made available under any subsequent version of the License, You must distribute and make the Covered Software available under the terms of the version of the License under which [...]
+
+4.3. Modified Versions.
+
+When You are an Initial Developer and You want to create a new license for Your Original Software, You may create and use a modified version of this License if You: (a) rename the license and remove any references to the name of the license steward (except to note that the license differs from this License); and (b) otherwise make it clear that the license contains terms which differ from this License.
+
+5. DISCLAIMER OF WARRANTY.
+
+COVERED SOFTWARE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE COVERED SOFTWARE IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED SOFTWARE IS WITH YOU. SHOULD ANY COVERED SOFTWARE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE [...]
+
+6. TERMINATION.
+
+6.1. This License and the rights granted hereunder will terminate automatically if You fail to comply with terms herein and fail to cure such breach within 30 days of becoming aware of the breach. Provisions which, by their nature, must remain in effect beyond the termination of this License shall survive.
+
+6.2. If You assert a patent infringement claim (excluding declaratory judgment actions) against Initial Developer or a Contributor (the Initial Developer or Contributor against whom You assert such claim is referred to as "Participant") alleging that the Participant Software (meaning the Contributor Version where the Participant is a Contributor or the Original Software where the Participant is the Initial Developer) directly or indirectly infringes any patent, then any and all rights gr [...]
+
+6.3. In the event of termination under Sections 6.1 or 6.2 above, all end user licenses that have been validly granted by You or any distributor hereunder prior to termination (excluding licenses granted to You by any distributor) shall survive termination.
+
+7. LIMITATION OF LIABILITY.
+
+UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED SOFTWARE, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOST PROFITS, LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL O [...]
+
+8. U.S. GOVERNMENT END USERS.
+
+The Covered Software is a "commercial item," as that term is defined in 48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer software" (as that term is defined at 48 C.F.R. � 252.227-7014(a)(1)) and "commercial computer software documentation" as such terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), all U.S. Government End Users acquire Covered Software with only those rights set forth he [...]
+
+9. MISCELLANEOUS.
+
+This License represents the complete agreement concerning subject matter hereof. If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it enforceable. This License shall be governed by the law of the jurisdiction specified in a notice contained within the Original Software (except to the extent applicable law, if any, provides otherwise), excluding such jurisdiction�s conflict-of-law provisions. Any litigation  [...]
+
+10. RESPONSIBILITY FOR CLAIMS.
+
+As between Initial Developer and the Contributors, each party is responsible for claims and damages arising, directly or indirectly, out of its utilization of rights under this License and You agree to work with Initial Developer and Contributors to distribute such responsibility on an equitable basis. Nothing herein is intended or shall be deemed to constitute any admission of liability.
+
+NOTICE PURSUANT TO SECTION 9 OF THE COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL)
+
+The code released under the CDDL shall be governed by the laws of the State of California (excluding conflict-of-law provisions). Any litigation relating to this License shall be subject to the jurisdiction of the Federal Courts of the Northern District of California and the state courts of the State of California, with venue lying in Santa Clara County, California.
+
+The GNU General Public License (GPL) Version 2, June 1991
+
+Copyright (C) 1989, 1991 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.
+
+Preamble
+
+The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library Genera [...]
+
+When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things.
+
+To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it.
+
+For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights.
+
+We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software.
+
+Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations.
+
+Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all.
+
+The precise terms and conditions for copying, distribution and modification follow.
+
+TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. ( [...]
+
+Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does.
+
+1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee.
+
+2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions:
+
+a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change.
+
+b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License.
+
+c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is i [...]
+
+These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose p [...]
+
+Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License.
+
+3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following:
+
+a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or,
+
+b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or,
+
+c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major co [...]
+
+If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code.
+
+4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.
+
+5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works ba [...]
+
+6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License.
+
+7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not dist [...]
+
+If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/dono [...]
+
+This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License.
+
+8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License.
+
+9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation.
+
+10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally.
+
+NO WARRANTY
+
+11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  [...]
 
-3. Distribution Obligations. 
+12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO  [...]
 
-3.1. Availability of Source Code. Any Covered Software that You distribute or otherwise make available in Executable form must also be made available in Source Code form and that Source Code form must be distributed only under the terms of this License. You must include a copy of this License with every copy of the Source Code form of the Covered Software You distribute or otherwise make available. You must inform recipients of any such Covered Software in Executable form as to how they  [...]
+END OF TERMS AND CONDITIONS
 
-3.2. Modifications. The Modifications that You create or to which You contribute are governed by the terms of this License. You represent that You believe Your Modifications are Your original creation(s) and/or You have sufficient rights to grant the rights conveyed by this License. 
+How to Apply These Terms to Your New Programs
 
-3.3. Required Notices. You must include a notice in each of Your Modifications that identifies You as the Contributor of the Modification. You may not remove or alter any copyright, patent or trademark notices contained within the Covered Software, or any notices of licensing or any descriptive text giving attribution to any Contributor or the Initial Developer. 
+If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms.
 
-3.4. Application of Additional Terms. You may not offer or impose any terms on any Covered Software in Source Code form that alters or restricts the applicable version of this License or the recipients rights hereunder. You may choose to offer, and to charge a fee for, warranty, support, indemnity or liability obligations to one or more recipients of Covered Software. However, you may do so only on Your own behalf, and not on behalf of the Initial Developer or any Contributor. You must m [...]
+To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found.
 
-3.5. Distribution of Executable Versions. You may distribute the Executable form of the Covered Software under the terms of this License or under the terms of a license of Your choice, which may contain terms different from this License, provided that You are in compliance with the terms of this License and that the license for the Executable form does not attempt to limit or alter the recipients rights in the Source Code form from the rights set forth in this License. If You distribute  [...]
+One line to give the program's name and a brief idea of what it does.
 
-3.6. Larger Works. You may create a Larger Work by combining Covered Software with other code not governed by the terms of this License and distribute the Larger Work as a single product. In such a case, You must make sure the requirements of this License are fulfilled for the Covered Software. 
+Copyright (C)
 
-4. Versions of the License. 
+This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
 
-4.1. New Versions. Sun Microsystems, Inc. is the initial license steward and may publish revised and/or new versions of this License from time to time. Each version will be given a distinguishing version number. Except as provided in Section 4.3, no one other than the license steward has the right to modify this License. 
+This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
 
-4.2. Effect of New Versions. You may always continue to use, distribute or otherwise make the Covered Software available under the terms of the version of the License under which You originally received the Covered Software. If the Initial Developer includes a notice in the Original Software prohibiting it from being distributed or otherwise made available under any subsequent version of the License, You must distribute and make the Covered Software available under the terms of the versi [...]
+You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
 
-4.3. Modified Versions. When You are an Initial Developer and You want to create a new license for Your Original Software, You may create and use a modified version of this License if You: (a) rename the license and remove any references to the name of the license steward (except to note that the license differs from this License); and (b) otherwise make it clear that the license contains terms which differ from this License. 
+Also add information on how to contact you by electronic and paper mail.
 
-5. DISCLAIMER OF WARRANTY. COVERED SOFTWARE IS PROVIDED UNDER THIS LICENSE ON AN AS IS BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE COVERED SOFTWARE IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED SOFTWARE IS WITH YOU. SHOULD ANY COVERED SOFTWARE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL DEVELOPER OR ANY OTHE [...]
+If the program is interactive, make it output a short notice like this when it starts in an interactive mode:
 
-6. TERMINATION. 
+Gnomovision version 69, Copyright (C) year name of author
+Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details.
 
-6.1. This License and the rights granted hereunder will terminate automatically if You fail to comply with terms herein and fail to cure such breach within 30 days of becoming aware of the breach. Provisions which, by their nature, must remain in effect beyond the termination of this License shall survive. 
+The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program.
 
-6.2. If You assert a patent infringement claim (excluding declaratory judgment actions) against Initial Developer or a Contributor (the Initial Developer or Contributor against whom You assert such claim is referred to as Participant) alleging that the Participant Software (meaning the Contributor Version where the Participant is a Contributor or the Original Software where the Participant is the Initial Developer) directly or indirectly infringes any patent, then any and all rights gran [...]
+You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names:
 
-6.3. In the event of termination under Sections 6.1 or 6.2 above, all end user licenses that have been validly granted by You or any distributor hereunder prior to termination (excluding licenses granted to You by any distributor) shall survive termination. 
+Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker.
 
-7. LIMITATION OF LIABILITY. UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED SOFTWARE, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOST PROFITS, LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR M [...]
+signature of Ty Coon, 1 April 1989
+Ty Coon, President of Vice
 
-8. U.S. GOVERNMENT END USERS. The Covered Software is a commercial item, as that term is defined in 48 C.F.R. 2.101 (Oct. 1995), consisting of commercial computer software (as that term is defined at 48 C.F.R. 252.227-7014(a)(1)) and commercial computer software documentation as such terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), all U.S. Government End Users acquire Covered Software with only tho [...]
+This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Library General Public License instead of this License.
 
-9. MISCELLANEOUS. This License represents the complete agreement concerning subject matter hereof. If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it enforceable. This License shall be governed by the law of the jurisdiction specified in a notice contained within the Original Software (except to the extent applicable law, if any, provides otherwise), excluding such jurisdictions conflict-of-law provisions [...]
+"CLASSPATH" EXCEPTION TO THE GPL VERSION 2
 
-10. RESPONSIBILITY FOR CLAIMS. As between Initial Developer and the Contributors, each party is responsible for claims and damages arising, directly or indirectly, out of its utilization of rights under this License and You agree to work with Initial Developer and Contributors to distribute such responsibility on an equitable basis. Nothing herein is intended or shall be deemed to constitute any admission of liability. 
-**********************************************************************
+Certain source files distributed by Oracle America, Inc. are subject to the following clarification and special exception to the GPL Version 2, but only where Oracle has expressly included in the particular source file's header the words
+"Oracle designates this particular file as subject to the "Classpath" exception as provided by Oracle in the License file that accompanied this code."
 
-NOTICE PURSUANT TO SECTION 9 OF THE COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL): This code is released under the CDDL and shall be governed by the laws of the State of California (excluding conflict-of-law provisions). Any litigation relating to this License shall be subject to the jurisdiction of the Federal Courts of the Northern District of California and the state courts of the State of California, with venue lying in Santa Clara County, California.
+Linking this library statically or dynamically with other modules is making a combined work based on this library. Thus, the terms and conditions of the GNU General Public License Version 2 cover the whole combination.
 
-*********************************************************************
+As a special exception, the copyright holders of this library give you permission to link this library with independent modules to produce an executable, regardless of the license terms of these independent modules, and to copy and distribute the resulting executable under terms of your choice, provided that you also meet, for each linked independent module, the terms and conditions of the license of that module.? An independent module is a module which is not derived from or based on th [...]
diff --git a/jsf-api/build-pre-maven-rename.xml b/jsf-api/build-pre-maven-rename.xml
new file mode 100644
index 0000000..c6ebb3f
--- /dev/null
+++ b/jsf-api/build-pre-maven-rename.xml
@@ -0,0 +1,1011 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!--
+  =======================================================================
+    JSF-API build file
+  =======================================================================
+-->
+<project name="JSF-API" default="main" basedir=".">
+
+    <property name="build.dir" value="build.pre-maven-rename"/>
+
+    <property file="${user.home}/build.properties"/>
+    <property file="../build.properties"/>
+
+    <import file="${jsf.build.home}/common/ant/common.xml"/>
+    <import file="${jsf.build.home}/common/ant/maven-pre-maven-rename.xml"/>
+
+    <!-- Structural -->
+    <property name="doc.dir" value="${basedir}/doc"/>
+    <property name="src.dir" value="${basedir}/src/main/java"/>
+    <property name="resources.dir" value="${basedir}/src/main/resources"/>
+    <property name="tools.dir" value="${basedir}/tools"/>
+    <property name="test.dir" value="${basedir}/src/test/java"/>
+    <property name="dist.dir" value="${basedir}/dist"/>
+    <property name="target.dir" value="target"/>
+    <property name="build.classes.dir" value="${build.dir}/classes"/>
+    <property name="build.lib.dir" value="${build.dir}/lib"/>
+    <property name="build.temp.dir" value="${build.dir}/temp"/>
+    <property name="build.test.dir" value="${build.dir}/test"/>
+    <property name="build.generate.dir" value="${build.dir}/generate"/>
+    <property name="build.javadocs.dir" value="${build.dir}/javadocs"/>
+    <property name="build.managed-bean-javadocs.dir" value="${build.javadocs.dir}/../managed-bean-javadocs"/>
+    <property name="build.renderkitdoc.dirs"
+              value="${build.dir}/renderkitdocs"/>
+    <property name="build.mifdocs.dir" value="${build.dir}/mifdocs"/>
+    <property name="javadoc.private" value="false"/>
+    <property name="javadoc.protected" value="true"/>
+    <property name="artifact-id" value="jsf-api"/>
+
+    <property name="assertion.classes" value="-ea:javax.faces..."/>
+    <property name="name" value="jsf-api"/>
+    <property name="DocName" value="JavaServer Faces API"/>
+
+    <path id="test.classpath">
+        <pathelement location="${build.classes.dir}"/>
+        <pathelement location="${build.test.dir}"/>
+        <pathelement location="${jsf.test.jar}"/>
+        <pathelement location="${jsf-tools.jar}"/>
+        <pathelement location="${tools.dir}/build/classes"/>
+        <path refid="apache.commons.classpath"/>
+        <path refid="api-compile.classpath"/>
+        <path refid="junit.classpath"/>
+    </path>
+
+    <property name="test.factory"
+              value="org.apache.commons.logging.impl.LogFactoryImpl"/>
+    <property name="test.failonerror" value="true"/>
+    <property name="test.level" value="error"/>
+    <property name="test.log"
+              value="org.apache.commons.logging.impl.SimpleLog"/>
+    <property name="test.runner" value="junit.textui.TestRunner"/>
+
+
+    <!--
+         ===================================================================
+           Prepare the build
+         ===================================================================
+    -->
+    <target name="prepare">
+        <tstamp/>
+        <mkdir dir="${build.dir}"/>
+        <mkdir dir="${build.classes.dir}"/>
+        <mkdir dir="${build.lib.dir}"/>
+        <mkdir dir="${build.javadocs.dir}"/>
+        <mkdir dir="${build.managed-bean-javadocs.dir}"/>
+        <mkdir dir="${build.generate.dir}"/>
+    </target>
+
+    <target name="attributes"
+            description="Recreate attributes include files from property include files"
+            depends="prepare">
+
+        <!-- Copy just the properties files we wish to convert -->
+        <copy todir="${doc.dir}"
+              overwrite="true">
+            <mapper type="glob"
+                    from="*-props.xml"
+                    to="*-attrs.xml"/>
+            <fileset dir="${doc.dir}">
+                <include name="*-props.xml"/>
+                <exclude name="actionsource-props.xml"/>
+                <exclude name="actionsource2-props.xml"/>
+                <exclude name="editable-props.xml"/>
+                <exclude name="valueholder-props.xml"/>
+                <exclude name="ui*-props.xml"/>
+            </fileset>
+        </copy>
+
+        <!-- Replace "property" with "attribute" in relevant cases -->
+        <replace dir="${doc.dir}"
+                 summary="true">
+            <include name="*-attrs.xml"/>
+            <replacefilter token="<property"
+                           value="<attribute"/>
+            <replacefilter token="</property"
+                           value="</attribute"/>
+            <replacefilter token="Properties"
+                           value="Attributes"/>
+        </replace>
+
+    </target>
+
+    <!--
+         ===================================================================
+           Build the API code
+         ===================================================================
+    -->
+
+    <target name="compile">
+        <jsf.javac destdir="${build.classes.dir}"
+                   srcdir="${src.dir}:${build.generate.dir}">
+            <classpath>
+                <path refid="api-compile.classpath"/>
+            </classpath>
+        </jsf.javac>
+    </target>
+
+    <target name="build"
+            depends="prepare,generate,copy.template.sources,compile">
+        <copy todir="${build.classes.dir}">
+            <fileset dir="${src.dir}">
+                <exclude name="**/*.java"/>
+                <exclude name="**/*.html"/>
+                <exclude name="**/*.jpg"/>
+            </fileset>
+        </copy>
+        <copy todir="${build.classes.dir}/META-INF" file="src/main/resources/mojarra-jsf-api-probe-provider.xml"/>
+        <copy todir="${build.lib.dir}">
+            <fileset dir="${doc.dir}">
+                <include name="*.dtd"/>
+            </fileset>
+        </copy>
+
+    </target>
+
+    <target name="check.generation.necessity">
+        <uptodate property="skip.generation"
+                  targetfile="${build.generate.dir}/last-generation">
+            <srcfiles dir="${basedir}/doc">
+                <include name="standard-html-renderkit.xml"/>
+            </srcfiles>
+        </uptodate>
+    </target>
+
+    <target name="generate"
+            depends="check.generation.necessity"
+            unless="skip.generation">
+
+        <delete dir="${build.generate.dir}"/>      
+        <antcall target="tools.javac"/>
+
+        <taskdef name="generateComponents"
+                 classname="com.sun.faces.ant.ComponentGenTask">
+            <classpath>
+                <path refid="apache.commons.classpath"/>
+                <pathelement location="${jsf-tools.jar}"/>
+                <pathelement location="${tools.dir}/build/classes"/>
+            </classpath>
+        </taskdef>
+        <generateComponents
+              generatorConfig="${tools.dir}/conf/HtmlBasicTaglib21.pre-maven-rename.properties"
+              facesConfig="${standard.renderkit.xml}"
+              fork="true">
+            <classpath>
+                <path refid="apache.commons.classpath"/>
+                <path refid="compile.classpath"/>
+                <pathelement location="${commons-beanutils.jar}" />
+                <pathelement location="${commons-digester.jar}" />
+                <pathelement location="${commons-collections.jar}" />
+                <pathelement location="${commons-logging.jar}" />
+                <pathelement location="${jsf-api.jar}"/>
+                <pathelement location="${jsf-tools.jar}"/>
+                <pathelement location="${tools.dir}/build/classes"/>
+            </classpath>
+            <assertions>
+                <enable/>
+            </assertions>
+            <sysproperty key="java.endorsed.dirs" value="${endorsed.dirs}"/>
+        </generateComponents>
+
+        <copy todir="${build.generate.dir}/javax/faces/component/html"
+              file="${src.dir}/javax/faces/component/html/package.html"/>
+
+        <touch file="${build.generate.dir}/last-generation"/>
+
+    </target>
+
+    <target name="facesdoc" 
+            description="Create the Standard HTML Renderkit Documentation">
+        <taskdef name="generateRenderkitDocs"
+                 classname="com.sun.faces.ant.RenderkitDocGenTask">
+            <classpath>
+                <path refid="apache.commons.classpath"/>
+                <pathelement location="${jsf-tools.jar}"/>
+                <pathelement location="${tools.dir}/build/classes"/>
+            </classpath>
+        </taskdef>
+        <copy todir="${build.generate.dir}/facesdoc/">
+           <fileset dir="${doc.dir}">
+             <include name="changed*.png" />
+             <include name="expert*.png" />
+             <include name="changed*.cur" />
+           </fileset>
+        </copy>
+        
+        <generateRenderkitDocs
+              generatorConfig="${tools.dir}/conf/HtmlBasicTaglib21.properties"
+              facesConfig="${standard.renderkit.xml}"
+              fork="true">
+            <classpath>
+                <path refid="apache.commons.classpath"/>
+                <path refid="compile.classpath"/>
+                <pathelement location="${jsf-api.jar}"/>
+                <pathelement location="${jsf-tools.jar}"/>
+                <pathelement location="${tools.dir}/build/classes"/>
+            </classpath>
+            <sysproperty key="java.endorsed.dirs" value="${endorsed.dirs}"/>
+            <sysproperty key="tools.src.dir" value="${tools.dir}/src/main/java"/>
+            <jvmarg line="${debug.jvm.args}"/>
+            <assertions>
+                <enable/>
+            </assertions>
+        </generateRenderkitDocs>      
+
+    </target>
+
+    <target name="tools.javac">
+        <path id="ant.classpath">
+            <pathelement location="${myenv.ANT_HOME}/lib/ant.jar"/>
+        </path>
+
+        <mkdir dir="${tools.dir}/build/classes"/>
+        <copy todir="${tools.dir}/build/classes" >
+            <fileset dir="${impl.dir}/src/main/resources"
+                     includes="**/LogStrings.properties"/>
+        </copy>
+        <copy todir="${tools.dir}/build/classes/com/sun/faces"
+              flatten="true">
+            <fileset dir="${api.dir}/doc"
+                     includes="*.dtd,*.xsd"/>
+        </copy>
+    </target>
+
+    <target name="copy.template.sources"
+            description="Copy template sources from ${tools.dir}/template-source">
+
+        <filter token="protection" value=""/>
+
+        <filter token="package" value="javax.faces"/>
+        <copy file="${tools.dir}/template-src/TypedCollections.java"
+              todir="${build.generate.dir}/javax/faces"
+              filtering="true"/>
+
+        <filter token="package" value="javax.faces.component"/>
+        <copy file="${tools.dir}/template-src/SharedUtils.java"
+              todir="${build.generate.dir}/javax/faces/component"
+              filtering="true"/>
+        <copy file="${tools.dir}/template-src/MessageFactory.java"
+              todir="${build.generate.dir}/javax/faces/component"
+              filtering="true"/>
+        <copy file="${tools.dir}/template-src/TypedCollections.java"
+              todir="${build.generate.dir}/javax/faces/component"
+              filtering="true"/>
+        <copy file="${tools.dir}/template-src/StateHolderSaver.java"
+              todir="${build.generate.dir}/javax/faces/component"
+              filtering="true"/>
+        <copy todir="${build.generate.dir}/javax/faces/component"
+              filtering="true">
+            <fileset dir="${basedir}/template-src">
+                <include name="*Adapter.java"/>
+            </fileset>
+        </copy>
+
+        <filter token="package" value="javax.faces.application"/>
+        <copy file="${tools.dir}/template-src/SharedUtils.java"
+              todir="${build.generate.dir}/javax/faces/application"
+              filtering="true"/>
+
+        <filter token="package" value="javax.faces.convert"/>
+        <copy file="${tools.dir}/template-src/MessageFactory.java"
+              todir="${build.generate.dir}/javax/faces/convert"
+              filtering="true"/>
+
+        <filter token="package" value="javax.faces.validator"/>
+        <copy file="${tools.dir}/template-src/MessageFactory.java"
+              todir="${build.generate.dir}/javax/faces/validator"
+              filtering="true"/>
+
+        <filter token="package" value="javax.faces.webapp"/>
+        <copy file="${tools.dir}/template-src/MessageFactory.java"
+              todir="${build.generate.dir}/javax/faces/webapp"
+              filtering="true"/>
+        <copy file="${tools.dir}/template-src/TypedCollections.java"
+              todir="${build.generate.dir}/javax/faces/webapp"
+              filtering="true"/>
+
+        <replace
+              file="${build.generate.dir}/javax/faces/component/MethodBindingMethodExpressionAdapter.java"
+              token="@serialVersionUID@"
+              value="7334926223014401689L"/>
+
+        <replace
+              file="${build.generate.dir}/javax/faces/component/MethodExpressionMethodBindingAdapter.java"
+              token="@serialVersionUID@"
+              value="-1822420567946048452L"/>
+
+        <replace
+              file="${build.generate.dir}/javax/faces/component/ValueExpressionValueBindingAdapter.java"
+              token="@serialVersionUID@"
+              value="2388977392466671243L"/>
+
+        <replace
+              file="${build.generate.dir}/javax/faces/component/ValueBindingValueExpressionAdapter.java"
+              token="@serialVersionUID@"
+              value="-8015491904782686906L"/>
+
+        <replace
+              file="${build.generate.dir}/javax/faces/component/StateHolderSaver.java"
+              token="@serialVersionUID@"
+              value="6470180891722042701L"/>
+
+    </target>
+
+    <target name="prepare.test">
+        <mkdir dir="${api.test.results.dir}"/>
+    </target>
+
+    <!--
+         ===================================================================
+           Build the test code
+         ===================================================================
+    -->
+
+    <target name="build.test.dir" depends="build,prepare.test">
+        <mkdir dir="${build.dir}"/>
+        <mkdir dir="${build.test.dir}"/>
+
+        <jsf.javac srcdir="${test.dir}"
+                   destdir="${build.test.dir}">
+            <classpath>
+                <path refid="test.classpath"/>
+                <path refid="apache.commons.classpath"/>
+            </classpath>
+        </jsf.javac>
+
+        <copy todir="${build.test.dir}">
+            <fileset dir="${test.dir}" includes="**/*.properties"/>
+        </copy>
+
+        <delete file="${basedir}/test/javax/faces/mock/MockPageContext.java"/>
+
+        <copy todir="${build.test.dir}">
+            <fileset dir="${test.dir}">
+                <exclude name="**/*.java"/>
+            </fileset>
+        </copy>
+
+       <delete dir="${build.test.dir}/META-INF/services" />
+        <mkdir dir="${build.test.dir}/META-INF/services"/>
+        <echo
+              file="${build.test.dir}/META-INF/services/javax.faces.context.ExceptionHandlerFactory">javax.faces.webapp.PreJsf2ExceptionHandlerFactory</echo>
+
+
+    </target>
+
+
+    <!--
+         ===================================================================
+           Test targets
+         ===================================================================
+    -->
+
+
+    <target name="test"
+            description="Run all JUnit test cases"
+            depends="build.test.dir">
+    </target>
+
+    <target name="test.FactoryFinder" depends="build.test.dir">
+        <echo message="Running FactoryFinder tests ..."/>
+        <mkdir dir="${build.classes.dir}/META-INF/services"/>
+        <echo
+              file="${build.classes.dir}/META-INF/services/javax.faces.context.FacesContextFactory">javax.faces.mock.MockFacesContextFactoryExtender</echo>
+        <jsf.junit test-results-dir="${api.test.results.dir}"
+                   classpath-refid="test.classpath"
+                   assert.classes="${assertion.classes}">
+            <tests>
+                <fileset dir="${build.test.dir}"
+                         includes="javax/faces/FactoryFinderTestCase.class"/>
+            </tests>
+        </jsf.junit>
+        <delete dir="${build.classes.dir}/META-INF"/>
+    </target>
+
+    <target name="test.FactoryFinder2" depends="build.test.dir">
+        <echo message="Running FactoryFinder tests ..."/>
+        <jsf.junit test-results-dir="${api.test.results.dir}"
+                   classpath-refid="test.classpath"
+                   assert.classes="${assertion.classes}">
+            <tests>
+                <fileset dir="${build.test.dir}"
+                         includes="javax/faces/FactoryFinderTestCase2.class"/>
+            </tests>
+        </jsf.junit>
+    </target>   
+
+    <target name="test.FacesWrapper" depends="build.test.dir">
+        <echo message="Running FacesWrapper tests ..."/>
+        <jsf.junit test-results-dir="${api.test.results.dir}"
+                   classpath-refid="test.classpath"
+                   assert.classes="${assertion.classes}">
+            <tests>
+                <fileset dir="${build.test.dir}"
+                         includes="javax/faces/FacesWrapperTestCase.class"/>
+            </tests>
+        </jsf.junit>
+    </target>   
+            	
+    <target name="test.PhaseId" depends="build.test.dir">
+        <echo message="Running PhaseId tests ..."/>
+        <jsf.junit test-results-dir="${api.test.results.dir}"
+                   classpath-refid="test.classpath"
+                   assert.classes="${assertion.classes}">
+            <tests>
+                <fileset dir="${build.test.dir}"
+                         includes="javax/faces/event/PhaseIdTest.class"/>
+            </tests>
+        </jsf.junit>
+    </target>
+
+    <target name="test.component" depends="build.test.dir">
+        <echo message="Running javax.faces.component tests ..."/>
+        <delete file="${api.test.results.dir}/api-test.log"/>
+        <delete file="${api.test.results.dir}/test-logging.properties"/>
+        <echo file="${api.test.results.dir}/test-logging.properties">
+handlers=java.util.logging.FileHandler
+java.util.logging.FileHandler.append=true
+java.util.logging.FileHandler.encoding=UTF-8
+java.util.logging.FileHandler.formatter=java.util.logging.SimpleFormatter
+java.util.logging.FileHandler.pattern=${api.test.results.dir}/api-test.log
+javax.faces.level=ALL
+        </echo>
+        <jsf.junit test-results-dir="${api.test.results.dir}"
+                   classpath-refid="test.classpath"
+                   assert.classes="${assertion.classes}"
+                   logging.config.file="${api.test.results.dir}/test-logging.properties">
+            <tests>
+                <fileset dir="${build.test.dir}"
+                         includes="javax/faces/component/*TestCase.class"
+                         excludes="javax/faces/component/UIDataTestCase.class,javax/faces/component/UIFormTestCase.class"/>
+            </tests>
+        </jsf.junit>
+    </target>
+
+    <target name="test.application" depends="build.test.dir">
+        <echo message="Running javax.faces.application tests ..."/>
+        <delete file="${api.test.results.dir}/api-test.log"/>
+        <delete file="${api.test.results.dir}/test-logging.properties"/>
+        <echo file="${api.test.results.dir}/test-logging.properties">
+handlers=java.util.logging.FileHandler
+java.util.logging.FileHandler.append=true
+java.util.logging.FileHandler.encoding=UTF-8
+java.util.logging.FileHandler.formatter=java.util.logging.SimpleFormatter
+java.util.logging.FileHandler.pattern=${api.test.results.dir}/api-test.log
+javax.faces.level=ALL
+        </echo>
+        <jsf.junit test-results-dir="${api.test.results.dir}"
+                   classpath-refid="test.classpath"
+                   assert.classes="${assertion.classes}"
+                   logging.config.file="${api.test.results.dir}/test-logging.properties">
+            <tests>
+                <fileset dir="${build.test.dir}"
+                         includes="javax/faces/application/*TestCase.class"/>
+            </tests>
+        </jsf.junit>
+    </target>
+
+    <target name="test.validator" depends="build.test.dir">
+        <echo message="Running javax.faces.validator tests ..."/>
+        <jsf.junit test-results-dir="${api.test.results.dir}"
+                   classpath-refid="test.classpath"
+                   assert.classes="${assertion.classes}">
+            <tests>
+                <fileset dir="${build.test.dir}"
+                         includes="javax/faces/validator/*TestCase.class"/>
+            </tests>
+        </jsf.junit>
+    </target>
+
+    <target name="test.mock" depends="build.test.dir">
+        <echo message="Running javax.faces.mock tests ..."/>
+        <jsf.junit test-results-dir="${api.test.results.dir}"
+                   classpath-refid="test.classpath"
+                   assert.classes="${assertion.classes}">
+            <tests>
+                <fileset dir="${build.test.dir}"
+                         includes="javax/faces/mock/*TestCase.class"/>
+            </tests>
+        </jsf.junit>
+    </target>
+
+    <target name="test.model" depends="build.test.dir">
+        <echo message="Running javax.faces.model tests ..."/>
+        <jsf.junit test-results-dir="${api.test.results.dir}"
+                   classpath-refid="test.classpath"
+                   assert.classes="${assertion.classes}">
+            <tests>
+                <fileset dir="${build.test.dir}"
+                         includes="javax/faces/model/*TestCase.class"/>
+            </tests>
+        </jsf.junit>
+    </target>
+
+    <target name="test.webapp" depends="build.test.dir">
+        <echo message="Running javax.faces.webapp tests ..."/>
+        <jsf.junit test-results-dir="${api.test.results.dir}"
+                   classpath-refid="test.classpath"
+                   assert.classes="${assertion.classes}">
+            <custom-sysproperties>
+                <sysproperty key="base.dir" value="${basedir}/build"/>
+            </custom-sysproperties>
+            <tests>
+            <fileset dir="${build.test.dir}"
+                         includes="javax/faces/webapp/*TestCase.class"
+                         excludes="javax/faces/webapp/UIComponentTagTestCase.class"/>
+            </tests>
+        </jsf.junit>
+    </target>
+
+    <!--
+         ===================================================================
+           Create the standard-html-renderkit.xml document
+         ===================================================================
+    -->
+
+    <target name="create.standard.xml" depends="attributes">
+        <copy
+              file="${basedir}/../jsf-ri/src/main/resources/com/sun/faces/standard-html-renderkit-impl.xml"
+              todir="${basedir}/doc"/>
+        <exec executable="xmllint" dir="${basedir}/doc" failonerror="true">
+            <arg
+                  line="--xinclude --format --output standard-html-renderkit.xml standard-html-renderkit-base.xml"/>
+        </exec>
+        <replace file="${basedir}/doc/standard-html-renderkit.xml">
+            <replacetoken>
+                <![CDATA[<?xml version="1.0" encoding="UTF-8"?>]]></replacetoken>
+            <replacevalue><![CDATA[<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- DO NOT EDIT     DO NOT EDIT    DO NOT EDIT    DO NOT EDIT    DO NOT EDIT -->]]>
+            </replacevalue>
+        </replace>
+        <delete file="${basedir}/doc/standard-html-renderkit-impl.xml"/>
+
+        <!-- validate the generated standard-html-renderkit.xml -->
+        <taskdef name="validate" classname="com.sun.faces.ant.ValidateTask">
+            <classpath>
+                <pathelement location="${jsf-tools.jar}"/>
+                <pathelement location="${tools.dir}/build/classes"/>
+            </classpath>
+        </taskdef>
+        <validate schemaDir="${basedir}/doc"/>
+    </target>
+
+    <!--
+         ===================================================================
+           Create the jars
+         ===================================================================
+    -->
+    <target name="jars" depends="build">
+
+        <copy file="${basedir}/mojarra-jsf-api.bnd" tofile="tmp.bnd"/>
+        <replace file="tmp.bnd"
+                 token="@spec.version@"
+                 value="${spec.version}"/>
+        <replace file="tmp.bnd"
+                 token="@impl.name@"
+                 value="${impl.name}"/>
+        <replace file="tmp.bnd"
+                 token="@impl.version@"
+                 value="${impl.version}"/>
+        <replace file="tmp.bnd"
+                 token="@full.impl.version@"
+                 value="${full.impl.version}"/>
+        <if>
+            <equals arg1="${build.type}" arg2=""/>
+            <then>
+                <replace file="tmp.bnd"
+                         token="@osgi.version@"
+                         value="${impl.version.number}"/>
+            </then>
+            <else>
+                <replace file="tmp.bnd"
+                         token="@osgi.version@"
+                         value="${impl.version.number}-${build.type}"/>
+            </else>
+        </if>
+        <replace file="tmp.bnd"
+                 token="@extension.name@"
+                 value="javax.faces"/>
+        <jsf.osgi.jar jarfile="${build.lib.dir}/${name}.jar"
+                            basedir="${build.classes.dir}"
+                            extension-name="javax.faces"
+                            bndfile="tmp.bnd"/>
+        <delete file="tmp.bnd"/>
+
+    </target>
+
+
+    <!--
+         ===================================================================
+           Clean up build and distribution directories
+         ===================================================================
+    -->
+    <target name="clean" description="Clean build directory">
+        <delete dir="${build.dir}"/>
+        <delete dir="${target.dir}"/>
+        <delete dir="${api.test.results.dir}"/>
+        <delete>
+            <fileset dir="." includes="**/.nbattrs" defaultexcludes="no"/>
+            <fileset dir="." includes="**/*~" defaultexcludes="no"/>
+        </delete>
+        <!-- delete this file since it's copied from another file based on JSP level -->
+        <delete file="${basedir}/test/javax/faces/mock/MockPageContext.java"/>
+        <delete dir="${dist.dir}"/>
+        <!-- delete extraneous generated doc files, if necessary -->
+        <delete>
+            <fileset dir="doc" includes="*-attrs.xml"/>
+        </delete>
+    </target>
+
+
+    <!--
+         ===================================================================
+           Clean everything
+         ===================================================================
+    -->
+    <target name="allclean" depends="clean">
+    </target>
+
+
+    <!--
+         ===================================================================
+           Create the API documentation
+         ===================================================================
+    -->
+
+    <target name="javadoc_check">
+        <uptodate property="javadoc.notrequired"
+                  targetfile="${build.javadocs.dir}/packages.html">
+            <srcfiles dir="${src.dir}" includes="**/*.java"/>
+            <srcfiles dir="${resources.dir}" includes="**/*.html"/>
+            <srcfiles dir="${build.generate.dir}" includes="**/*.java"/>
+        </uptodate>
+    </target>
+
+    <target name="javadocs"
+            depends="prepare,javadoc_check,generate,generate.javadocs,facesdoc"
+            unless="javadoc.notrequired"
+            description="Create the JavaDoc API documentation">
+
+        <copy todir="${build.javadocs.dir}/javax/faces/component"
+              file="${src.dir}/javax/faces/component/UIComponentHierarchy.jpg"/>
+        <copy todir="${build.javadocs.dir}/javax/faces/event"
+              file="${src.dir}/javax/faces/event/EventHierarchy.jpg"/>
+
+        <copy todir="${build.javadocs.dir}/javax/faces/view/facelets"
+              file="${src.dir}/javax/faces/view/facelets/Facelets.jpg"/>
+
+        <filter token="build.number" value="${build.number}"/>
+        <copy todir="${build.javadocs.dir}/doc-files" filtering="true">
+          <fileset dir="${resources.dir}/doc-files" />
+        </copy>
+
+        <copy todir="${build.javadocs.dir}/">
+           <fileset dir="${doc.dir}">
+             <include name="changed*.png" />
+             <include name="expert*.png" />
+             <include name="changed*.cur" />
+           </fileset>
+        </copy>
+
+        <copy todir="${build.managed-bean-javadocs.dir}/">
+           <fileset dir="${doc.dir}">
+             <include name="changed*.png" />
+             <include name="changed*.cur" />
+           </fileset>
+        </copy>
+
+    </target>
+
+
+    <target name="generate.javadocs">
+        <javadoc packagenames="javax.*"
+                 destdir="${build.javadocs.dir}"
+                 Overview="${resources.dir}/overview.html"
+                 private="${javadoc.private}"
+                 protected="${javadoc.protected}"
+                 windowtitle="${DocName} (${spec.version})"
+                 stylesheetfile="${resources.dir}/jsf-api.css"
+                 source="1.5"
+                 doctitle="${DocName} (${spec.version} SNAPSHOT ${build.number})">
+            <bottom><![CDATA[<a href="http://www.oracle.com">Oracle</a> and/or its affiliates. All Rights Reserved. Use is subject to <a href="{@docRoot}/doc-files/speclicense.html" target="_top">license terms</a>]]></bottom>
+           <link offline="true"
+                 href="http://java.sun.com/javase/6/docs/api/package-list"
+                 packagelistloc="${jsf.build.home}/common/ant/package-list" />
+                 
+            <fileset dir="${src.dir}">
+                <include name="**/*.java"/>
+                <exclude name="**/ApplicationScoped.java" />
+                <exclude name="**/CustomScoped.java" />
+                <exclude name="**/ManagedBean.java" />
+                <exclude name="**/ReferencedBean.java" />
+                <exclude name="**/ManagedProperty.java" />
+                <exclude name="**/NoneScoped.java" />
+                <exclude name="**/RequestScoped.java" />
+                <exclude name="**/SessionScoped.java" />
+                <exclude name="**/ViewScoped.java" />
+            </fileset>
+            <fileset dir="${build.generate.dir}">
+                <include name="**/*.java"/>
+            </fileset>
+            <classpath refid="api-compile.classpath"/>
+        </javadoc>
+
+        <javadoc packagenames="javax.*"
+                 destdir="${build.managed-bean-javadocs.dir}"
+                 Overview="${resources.dir}/managed-bean-overview.html"
+                 private="${javadoc.private}"
+                 protected="${javadoc.protected}"
+                 windowtitle="Faces Managed Bean Annotation Specification (${spec.version})"
+                 stylesheetfile="${resources.dir}/jsf-api.css"
+                 source="1.5"
+                 doctitle="Faces Managed Bean Annotation Specification (${spec.version})"
+                 bottom="Copyright © 2002-2009 Sun Microsystems, Inc. All Rights Reserved.">
+           <link offline="true"
+                 href="http://java.sun.com/javase/6/docs/api/package-list"
+                 packagelistloc="${jsf.build.home}/common/ant/package-list" />
+                 
+            <fileset dir="${src.dir}">
+                <include name="**/ApplicationScoped.java" />
+                <include name="**/CustomScoped.java" />
+                <include name="**/ReferencedBean.java" />
+                <include name="**/ManagedBean.java" />
+                <include name="**/ManagedProperty.java" />
+                <include name="**/NoneScoped.java" />
+                <include name="**/RequestScoped.java" />
+                <include name="**/SessionScoped.java" />
+                <include name="**/ViewScoped.java" />
+            </fileset>
+            <classpath refid="compile.classpath"/>
+        </javadoc>
+    </target>
+
+
+    <!--
+         ===================================================================
+           Main target
+         ===================================================================
+    -->
+    <target name="main" depends="update,jars"
+            description="Compile API classes and build JAR file"/>
+
+    <!--
+         ===================================================================
+           Distributions target
+         ===================================================================
+    -->
+    <target name="dist" depends="main,javadocs"
+            description="Build distribution files">
+
+        <!-- Create the distributions directory -->
+        <mkdir dir="${dist.dir}"/>
+
+        <!-- Create the binary distribution -->
+        <zip destfile="${dist.dir}/${name}-${impl.version}.zip">
+            <zipfileset dir="${build.dir}"
+                        includes="lib/**"
+                        prefix="${name}-${impl.version}"/>
+        </zip>
+
+        <!-- Create the javadocs distribution -->
+        <zip destfile="${dist.dir}/${name}-javadocs-${impl.version}.zip">
+            <zipfileset dir="${build.dir}"
+                        includes="javadocs/**"
+                        prefix="${name}-${impl.version}"/>
+            <zipfileset dir="${build.dir}/generate"
+                        includes="facesdoc/**"
+                        prefix="${name}-${impl.version}"/>
+
+        </zip>
+
+
+        <!-- Create the source distribution -->
+        <zip destfile="${dist.dir}/${name}-src-${impl.version}.zip">
+            <zipfileset dir="${basedir}"
+                        includes="build.xml COPYRIGHT LICENSE.html"
+                        prefix="${name}"/>
+            <zipfileset dir="${src.dir}"
+                        excludes="**/CVS/**"
+                        prefix="${name}/src"/>
+            <zipfileset dir="${test.dir}"
+                        excludes="**/CVS/**"
+                        prefix="${name}/test"/>
+            <zipfileset dir="${doc.dir}"
+                        includes="*.dtd,*.xsd,standard-html-renderkit.xml"
+                        prefix="${name}/doc"/>
+            <zipfileset dir="${tools.dir}"
+                        excludes="**/CVS/**, **/build/**"
+                        prefix="jsf-tools"/>
+        </zip>
+
+    </target>
+
+
+    <!--
+       USE THE FOLLOWING TARGETS TO PUSH VARIOUS BUILD TYPES TO YOUR LOCAL
+       M2 REPOSITORY
+ant -Dgpg.passphrase=PASSPHRASE HERE mvn.deploy.snapshot.local
+    -->
+
+    <target name="mvn.pre-maven-rename.deploy.snapshot.local">
+        <mvn.pre-maven-rename.deploy.snapshot.local type="api"/>
+    </target>
+
+
+    <target name="mvn.pre-maven-rename.deploy.promoted.local">
+        <mvn.pre-maven-rename.deploy.promoted.local type="api"/>
+    </target>
+
+
+    <target name="mvn.pre-maven-rename.deploy.release.local">
+        <mvn.pre-maven-rename.deploy.release.local type="api"/>
+    </target>
+
+    <target name="strip.api.jar" 
+            depends="get.faces.java.packages.as.space.separated.string">
+        <!-- path maintenance -->
+        <move file="${build.lib.dir}/${name}.jar" failonerror="true"
+              tofile="${build.lib.dir}/${name}-full.jar" />
+        <delete failonerror="false" dir="${build.lib.dir}/jsf-api-stripped" />
+        <mkdir dir="${build.lib.dir}/jsf-api-stripped" />
+        <!-- windows or unix java exec invocation -->
+<!--        <condition property="exec.name" value="cmd.exe">
+            <os family="windows"/>
+        </condition>
+        <condition property="exec.arg.1"
+                   value="/c ${java.home}/bin/javac">
+            <os family="windows"/>
+        </condition>
+        <property name="exec.name" value="${java.home}/bin/javac"/>
+        <property name="exec.arg.1" value=""/>
+         invoke the javac processor to produce stripped .class files 
+        <exec executable="${exec.name}" failonerror="true">
+            <arg line="${exec.arg.1}"/>
+            <arg line="-XDprocess.packages"/>
+            <arg line="-proc:only"/>
+            <arg line="-cp ${build.lib.dir}/${name}-full.jar:${jsf-tools.jar}"/>
+            <arg line="-processor com.sun.faces.tools.StripClassesForApiJar"/>
+            <arg line="-Acom.sun.tools.javac.sym.Jar=${build.lib.dir}/${name}-full.jar"/>
+            <arg line="-Acom.sun.tools.javac.sym.ExtraApiClassPath=${javaee-api.jar}${path.separator}${com.sun.faces:jsf-spi:jar}"/>
+            <arg line="-Acom.sun.tools.javac.sym.Dest=${build.lib.dir}/jsf-api-stripped"/>
+            <arg line="${src.paths}"/>
+        </exec>-->
+        <!-- jar up the stripped files into jsf-api.jar. -->
+        <!-- Extract the original manifest -->
+        <unjar src="${build.lib.dir}/${name}-full.jar"
+               dest="${build.lib.dir}/jsf-api-stripped">
+<!--          <patternset>
+            <include name="META-INF/MANIFEST.MF" />
+          </patternset>-->
+        </unjar>
+        <jar destfile="${build.lib.dir}/${name}.jar"
+             basedir="${build.lib.dir}/jsf-api-stripped"
+             manifest="${build.lib.dir}/jsf-api-stripped/META-INF/MANIFEST.MF" />
+    </target>
+
+    <target name="get.faces.java.packages.as.space.separated.string"
+            description="Traverse ${src.dir} and extract the directory names into a property ${src.paths} as a space separated list of java packages">
+      <!-- Suck the dirs into a path-like structure. -->
+      <path id="src.dir.path">
+        <dirset dir="${src.dir}" />
+      </path>
+      <!-- Suck the path-like structure into a property. -->
+      <property name="src.dir.paths" refid="src.dir.path" />
+
+      <!-- Massage the property value to make it be as desired. -->
+
+      <!-- Remove the leading fully qualified paths. -->
+      <propertyregex property="src.paths" input="${src.dir.paths}" override="true"
+                     regexp="${src.dir}" replace="" global="true" />
+      <!-- Remove the leading "/" from every path entry. -->
+      <propertyregex property="src.paths" input="${src.paths}" override="true"
+                     regexp="/javax" 
+                     replace="javax" global="true" />
+      <!-- Remove the javax entry.  It is not a java package. -->
+      <propertyregex property="src.paths" input="${src.paths}" override="true"
+                     regexp="${path.separator}javax${path.separator}" 
+                     replace="" global="true" />
+      <!-- Replace ':' with ' ' (or ';' with ' ' on windows). -->
+      <propertyregex property="src.paths" input="${src.paths}" override="true"
+                     regexp="${path.separator}" 
+                     replace=" " global="true" />
+      <!-- Replace '/' with '.'. -->
+      <propertyregex property="src.paths" input="${src.paths}" override="true"
+                     regexp="/" 
+                     replace="." global="true" />
+    </target>
+        
+    <target name="mvn.pre-maven-rename.deploy.api.release.local" depends="strip.api.jar">
+
+        <mvn.pre-maven-rename.deploy.release.local groupId="javax.faces" version="${spec.version}" type="api"/>
+    </target>
+
+
+    <!--
+       USE THE FOLLOWING TARGETS TO PUSH VARIOUS BUILD TYPES TO THE
+       JAVA.NET M2 REPOSITORY
+    -->
+     <target name="mvn.pre-maven-rename.deploy.snapshot">
+        <mvn.pre-maven-rename.deploy.snapshot type="api"/>
+    </target>
+
+
+    <target name="mvn.pre-maven-rename.deploy.promoted">
+        <mvn.pre-maven-rename.deploy.promoted type="api"/>
+    </target>
+
+
+    <target name="mvn.pre-maven-rename.deploy.release">
+        <mvn.pre-maven-rename.deploy.release type="api"/>
+    </target>
+
+    <target name="mvn.pre-maven-rename.deploy.api.release" depends="strip.api.jar">
+        <mvn.pre-maven-rename.deploy.release groupId="javax.faces" version="${spec.version}" type="api"/>
+    </target>
+
+    <target name="passthru">
+        <echo message="Running javax.faces.component tests ..."/>
+        <delete file="${api.test.results.dir}/api-test.log"/>
+        <delete file="${api.test.results.dir}/test-logging.properties"/>
+        <echo file="${api.test.results.dir}/test-logging.properties">
+handlers=java.util.logging.FileHandler
+java.util.logging.FileHandler.append=true
+java.util.logging.FileHandler.encoding=UTF-8
+java.util.logging.FileHandler.formatter=java.util.logging.SimpleFormatter
+java.util.logging.FileHandler.pattern=${api.test.results.dir}/api-test.log
+javax.faces.level=ALL
+        </echo>
+        <jsf.junit test-results-dir="${api.test.results.dir}"
+                   classpath-refid="test.classpath"
+                   assert.classes="${assertion.classes}"
+                   logging.config.file="${api.test.results.dir}/test-logging.properties">
+            <tests>
+                <fileset dir="${build.test.dir}"
+                         includes="javax/faces/webapp/FacesServletTestCase.class"/>
+            </tests>
+        </jsf.junit>
+    </target>
+
+</project>
diff --git a/jsf-api/build-source.xml b/jsf-api/build-source.xml
index 1efa744..e247aea 100644
--- a/jsf-api/build-source.xml
+++ b/jsf-api/build-source.xml
@@ -1,41 +1,45 @@
 <?xml version='1.0' encoding='UTF-8'?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
--->
 
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
 
 <!--
   =======================================================================
@@ -70,7 +74,6 @@
     <property name="build.mifdocs.dir" value="${build.dir}/mifdocs"/>
     <property name="javadoc.private" value="false"/>
     <property name="javadoc.protected" value="true"/>
-    <property name="artifact-id" value="jsf-api"/>
 
     <property name="assertion.classes" value="-ea:javax.faces..."/>
     <property name="name" value="jsf-api"/>
@@ -211,7 +214,7 @@
                 <pathelement location="${commons-digester.jar}" />
                 <pathelement location="${commons-collections.jar}" />
                 <pathelement location="${commons-logging.jar}" />
-                <pathelement location="${jsf-api.jar}"/>
+                <pathelement location="${jsf-api-intermediate.jar}"/>
                 <pathelement location="${tools.dir}/build/classes"/>
             </classpath>
             <assertions>
@@ -250,7 +253,7 @@
             <classpath>
                 <path refid="apache.commons.classpath"/>
                 <path refid="compile.classpath"/>
-                <pathelement location="${jsf-api.jar}"/>
+                <pathelement location="${jsf-api-intermediate.jar}"/>
                 <pathelement location="${tools.dir}/build/classes"/>
             </classpath>
             <sysproperty key="java.endorsed.dirs" value="${endorsed.dirs}"/>
@@ -420,16 +423,7 @@
 
     <target name="test"
             description="Run all JUnit test cases"
-            depends="build.test.dir,
-                copy.template.sources,
-                test.FactoryFinder,
-                test.FactoryFinder2,
-                test.PhaseId,
-                test.component,
-                test.validator,
-                test.mock,
-                test.model,
-                test.webapp">
+            depends="build.test.dir">
     </target>
 
     <target name="test.FactoryFinder" depends="build.test.dir">
@@ -460,7 +454,19 @@
         </jsf.junit>
     </target>   
 
-    <target name="test.PhaseId" depends="build.test.dir">
+    <target name="test.FacesWrapper" depends="build.test.dir">
+        <echo message="Running FacesWrapper tests ..."/>
+        <jsf.junit test-results-dir="${api.test.results.dir}"
+                   classpath-refid="test.classpath"
+                   assert.classes="${assertion.classes}">
+            <tests>
+                <fileset dir="${build.test.dir}"
+                         includes="javax/faces/FacesWrapperTestCase.class"/>
+            </tests>
+        </jsf.junit>
+    </target>   
+
+  	<target name="test.PhaseId" depends="build.test.dir">
         <echo message="Running PhaseId tests ..."/>
         <jsf.junit test-results-dir="${api.test.results.dir}"
                    classpath-refid="test.classpath"
@@ -712,13 +718,16 @@ javax.faces.level=ALL
                  destdir="${build.javadocs.dir}"
                  Overview="${resources.dir}/overview.html"
                  private="${javadoc.private}"
-                 link="http://java.sun.com/javase/6/docs/api/"
                  protected="${javadoc.protected}"
                  windowtitle="${DocName} (${spec.version})"
                  stylesheetfile="${resources.dir}/jsf-api.css"
                  source="1.5"
                  doctitle="${DocName} (${spec.version})"
                  bottom="Copyright © 2002-2009 Sun Microsystems, Inc. All Rights Reserved.">
+           <link offline="true"
+                 href="http://java.sun.com/javase/6/docs/api/package-list"
+                 packagelistloc="${jsf.build.home}/common/ant/package-list" />
+                 
             <fileset dir="${src.dir}">
                 <include name="**/*.java"/>
                 <exclude name="**/ApplicationScoped.java" />
@@ -741,13 +750,16 @@ javax.faces.level=ALL
                  destdir="${build.managed-bean-javadocs.dir}"
                  Overview="${resources.dir}/managed-bean-overview.html"
                  private="${javadoc.private}"
-                 link="http://java.sun.com/javase/6/docs/api/"
                  protected="${javadoc.protected}"
                  windowtitle="Faces Managed Bean Annotation Specification (${spec.version})"
                  stylesheetfile="${resources.dir}/jsf-api.css"
                  source="1.5"
                  doctitle="Faces Managed Bean Annotation Specification (${spec.version})"
                  bottom="Copyright © 2002-2009 Sun Microsystems, Inc. All Rights Reserved.">
+           <link offline="true"
+                 href="http://java.sun.com/javase/6/docs/api/package-list"
+                 packagelistloc="${jsf.build.home}/common/ant/package-list" />
+                 
             <fileset dir="${src.dir}">
                 <include name="**/ApplicationScoped.java" />
                 <include name="**/CustomScoped.java" />
diff --git a/jsf-api/build.xml b/jsf-api/build.xml
index 399f582..cf9b495 100644
--- a/jsf-api/build.xml
+++ b/jsf-api/build.xml
@@ -1,41 +1,45 @@
 <?xml version='1.0' encoding='UTF-8'?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
--->
 
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
 
 <!--
   =======================================================================
@@ -70,19 +74,19 @@
     <property name="build.mifdocs.dir" value="${build.dir}/mifdocs"/>
     <property name="javadoc.private" value="false"/>
     <property name="javadoc.protected" value="true"/>
-    <property name="artifact-id" value="jsf-api"/>
 
     <property name="assertion.classes" value="-ea:javax.faces..."/>
-    <property name="name" value="jsf-api"/>
+    <property name="name" value="jsf-api-intermediate"/>
     <property name="DocName" value="JavaServer Faces API"/>
 
     <path id="test.classpath">
         <pathelement location="${build.classes.dir}"/>
         <pathelement location="${build.test.dir}"/>
         <pathelement location="${jsf.test.jar}"/>
+        <pathelement location="${jsf-tools.jar}"/>
         <pathelement location="${tools.dir}/build/classes"/>
         <path refid="apache.commons.classpath"/>
-        <path refid="compile.classpath"/>
+        <path refid="api-compile.classpath"/>
         <path refid="junit.classpath"/>
     </path>
 
@@ -154,7 +158,7 @@
         <jsf.javac destdir="${build.classes.dir}"
                    srcdir="${src.dir}:${build.generate.dir}">
             <classpath>
-                <path refid="compile.classpath"/>
+                <path refid="api-compile.classpath"/>
             </classpath>
         </jsf.javac>
     </target>
@@ -197,6 +201,7 @@
                  classname="com.sun.faces.ant.ComponentGenTask">
             <classpath>
                 <path refid="apache.commons.classpath"/>
+                <pathelement location="${jsf-tools.jar}"/>
                 <pathelement location="${tools.dir}/build/classes"/>
             </classpath>
         </taskdef>
@@ -211,7 +216,8 @@
                 <pathelement location="${commons-digester.jar}" />
                 <pathelement location="${commons-collections.jar}" />
                 <pathelement location="${commons-logging.jar}" />
-                <pathelement location="${jsf-api.jar}"/>
+                <pathelement location="${jsf-api-intermediate.jar}"/>
+                <pathelement location="${jsf-tools.jar}"/>
                 <pathelement location="${tools.dir}/build/classes"/>
             </classpath>
             <assertions>
@@ -229,17 +235,18 @@
 
     <target name="facesdoc" 
             description="Create the Standard HTML Renderkit Documentation">
-        <antcall target="tools.javac"/>
         <taskdef name="generateRenderkitDocs"
                  classname="com.sun.faces.ant.RenderkitDocGenTask">
             <classpath>
                 <path refid="apache.commons.classpath"/>
+                <pathelement location="${jsf-tools.jar}"/>
                 <pathelement location="${tools.dir}/build/classes"/>
             </classpath>
         </taskdef>
         <copy todir="${build.generate.dir}/facesdoc/">
            <fileset dir="${doc.dir}">
              <include name="changed*.png" />
+             <include name="expert*.png" />
              <include name="changed*.cur" />
            </fileset>
         </copy>
@@ -251,11 +258,13 @@
             <classpath>
                 <path refid="apache.commons.classpath"/>
                 <path refid="compile.classpath"/>
-                <pathelement location="${jsf-api.jar}"/>
+                <pathelement location="${jsf-api-intermediate.jar}"/>
+                <pathelement location="${jsf-tools.jar}"/>
                 <pathelement location="${tools.dir}/build/classes"/>
             </classpath>
             <sysproperty key="java.endorsed.dirs" value="${endorsed.dirs}"/>
             <sysproperty key="tools.src.dir" value="${tools.dir}/src/main/java"/>
+            <jvmarg line="${debug.jvm.args}"/>
             <assertions>
                 <enable/>
             </assertions>
@@ -269,18 +278,6 @@
         </path>
 
         <mkdir dir="${tools.dir}/build/classes"/>
-        <jsf.javac srcdir="${tools.dir}/src/main/java"
-                   destdir="${tools.dir}/build/classes">
-            <classpath>
-                <path refid="compile.classpath"/>
-                <path refid="apache.commons.classpath"/>
-                <path refid="ant.classpath"/>
-            </classpath>
-        </jsf.javac>
-        <copy todir="${tools.dir}/build/classes">
-            <fileset dir="${tools.dir}/src/main/resources"
-                     includes="**/*.properties"/>
-        </copy>
         <copy todir="${tools.dir}/build/classes" >
             <fileset dir="${impl.dir}/src/main/resources"
                      includes="**/LogStrings.properties"/>
@@ -290,13 +287,8 @@
             <fileset dir="${api.dir}/doc"
                      includes="*.dtd,*.xsd"/>
         </copy>
-        <copy todir="${tools.dir}/build/classes">
-            <fileset dir="${tools.dir}/src/main/resources"
-                     includes="**/*.html,**/*.top,**/*.bottom,**/*.css"/>            
-        </copy>
     </target>
 
-
     <target name="copy.template.sources"
             description="Copy template sources from ${tools.dir}/template-source">
 
@@ -308,6 +300,9 @@
               filtering="true"/>
 
         <filter token="package" value="javax.faces.component"/>
+        <copy file="${tools.dir}/template-src/SharedUtils.java"
+              todir="${build.generate.dir}/javax/faces/component"
+              filtering="true"/>
         <copy file="${tools.dir}/template-src/MessageFactory.java"
               todir="${build.generate.dir}/javax/faces/component"
               filtering="true"/>
@@ -324,6 +319,11 @@
             </fileset>
         </copy>
 
+        <filter token="package" value="javax.faces.application"/>
+        <copy file="${tools.dir}/template-src/SharedUtils.java"
+              todir="${build.generate.dir}/javax/faces/application"
+              filtering="true"/>
+
         <filter token="package" value="javax.faces.convert"/>
         <copy file="${tools.dir}/template-src/MessageFactory.java"
               todir="${build.generate.dir}/javax/faces/convert"
@@ -421,16 +421,7 @@
 
     <target name="test"
             description="Run all JUnit test cases"
-            depends="build.test.dir,
-                copy.template.sources,
-                test.FactoryFinder,
-                test.FactoryFinder2,
-                test.PhaseId,
-                test.component,
-                test.validator,
-                test.mock,
-                test.model,
-                test.webapp">
+            depends="build.test.dir">
     </target>
 
     <target name="test.FactoryFinder" depends="build.test.dir">
@@ -461,6 +452,18 @@
         </jsf.junit>
     </target>   
 
+    <target name="test.FacesWrapper" depends="build.test.dir">
+        <echo message="Running FacesWrapper tests ..."/>
+        <jsf.junit test-results-dir="${api.test.results.dir}"
+                   classpath-refid="test.classpath"
+                   assert.classes="${assertion.classes}">
+            <tests>
+                <fileset dir="${build.test.dir}"
+                         includes="javax/faces/FacesWrapperTestCase.class"/>
+            </tests>
+        </jsf.junit>
+    </target>   
+            	
     <target name="test.PhaseId" depends="build.test.dir">
         <echo message="Running PhaseId tests ..."/>
         <jsf.junit test-results-dir="${api.test.results.dir}"
@@ -497,6 +500,29 @@ javax.faces.level=ALL
         </jsf.junit>
     </target>
 
+    <target name="test.application" depends="build.test.dir">
+        <echo message="Running javax.faces.application tests ..."/>
+        <delete file="${api.test.results.dir}/api-test.log"/>
+        <delete file="${api.test.results.dir}/test-logging.properties"/>
+        <echo file="${api.test.results.dir}/test-logging.properties">
+handlers=java.util.logging.FileHandler
+java.util.logging.FileHandler.append=true
+java.util.logging.FileHandler.encoding=UTF-8
+java.util.logging.FileHandler.formatter=java.util.logging.SimpleFormatter
+java.util.logging.FileHandler.pattern=${api.test.results.dir}/api-test.log
+javax.faces.level=ALL
+        </echo>
+        <jsf.junit test-results-dir="${api.test.results.dir}"
+                   classpath-refid="test.classpath"
+                   assert.classes="${assertion.classes}"
+                   logging.config.file="${api.test.results.dir}/test-logging.properties">
+            <tests>
+                <fileset dir="${build.test.dir}"
+                         includes="javax/faces/application/*TestCase.class"/>
+            </tests>
+        </jsf.junit>
+    </target>
+
     <target name="test.validator" depends="build.test.dir">
         <echo message="Running javax.faces.validator tests ..."/>
         <jsf.junit test-results-dir="${api.test.results.dir}"
@@ -573,18 +599,10 @@ javax.faces.level=ALL
         </replace>
         <delete file="${basedir}/doc/standard-html-renderkit-impl.xml"/>
 
-        <mkdir dir="${tools.dir}/build/classes"/>
-        <antcall target="tools.javac"/>
-        <javac srcdir="${tools.dir}/src/main/java"
-               destdir="${tools.dir}/build/classes">
-            <classpath>
-                <path refid="compile.classpath"/>
-            </classpath>
-        </javac>
-
         <!-- validate the generated standard-html-renderkit.xml -->
         <taskdef name="validate" classname="com.sun.faces.ant.ValidateTask">
             <classpath>
+                <pathelement location="${jsf-tools.jar}"/>
                 <pathelement location="${tools.dir}/build/classes"/>
             </classpath>
         </taskdef>
@@ -608,6 +626,9 @@ javax.faces.level=ALL
         <replace file="tmp.bnd"
                  token="@impl.version@"
                  value="${impl.version}"/>
+        <replace file="tmp.bnd"
+                 token="@full.impl.version@"
+                 value="${full.impl.version}"/>
         <if>
             <equals arg1="${build.type}" arg2=""/>
             <then>
@@ -618,7 +639,7 @@ javax.faces.level=ALL
             <else>
                 <replace file="tmp.bnd"
                          token="@osgi.version@"
-                         value="${impl.version.number}-${build.type}"/>
+                         value="${impl.version.number}${build.type}"/>
             </else>
         </if>
         <replace file="tmp.bnd"
@@ -649,7 +670,6 @@ javax.faces.level=ALL
         <!-- delete this file since it's copied from another file based on JSP level -->
         <delete file="${basedir}/test/javax/faces/mock/MockPageContext.java"/>
         <delete dir="${dist.dir}"/>
-        <delete dir="${tools.dir}/build"/>
         <!-- delete extraneous generated doc files, if necessary -->
         <delete>
             <fileset dir="doc" includes="*-attrs.xml"/>
@@ -676,6 +696,7 @@ javax.faces.level=ALL
         <uptodate property="javadoc.notrequired"
                   targetfile="${build.javadocs.dir}/packages.html">
             <srcfiles dir="${src.dir}" includes="**/*.java"/>
+            <srcfiles dir="${resources.dir}" includes="**/*.html"/>
             <srcfiles dir="${build.generate.dir}" includes="**/*.java"/>
         </uptodate>
     </target>
@@ -687,15 +708,23 @@ javax.faces.level=ALL
 
         <copy todir="${build.javadocs.dir}/javax/faces/component"
               file="${src.dir}/javax/faces/component/UIComponentHierarchy.jpg"/>
+        <copy todir="${build.javadocs.dir}/javax/faces/flow"
+              file="${src.dir}/javax/faces/flow/FlowHierarchy.jpg"/>
         <copy todir="${build.javadocs.dir}/javax/faces/event"
               file="${src.dir}/javax/faces/event/EventHierarchy.jpg"/>
 
         <copy todir="${build.javadocs.dir}/javax/faces/view/facelets"
               file="${src.dir}/javax/faces/view/facelets/Facelets.jpg"/>
 
+        <filter token="build.number" value="${build.number}"/>
+        <copy todir="${build.javadocs.dir}/doc-files" filtering="true">
+          <fileset dir="${resources.dir}/doc-files" />
+        </copy>
+
         <copy todir="${build.javadocs.dir}/">
            <fileset dir="${doc.dir}">
              <include name="changed*.png" />
+             <include name="expert*.png" />
              <include name="changed*.cur" />
            </fileset>
         </copy>
@@ -709,19 +738,59 @@ javax.faces.level=ALL
 
     </target>
 
+   <target name="copy.xsddoc"
+           depends="prepare"
+           description="Copy the already created xsddoc">
+
+     <if>
+       <available file="${build.dir}/mvn/target/generated-resources/xml/xslt/web-facesconfig_${spec_version}.html" />
+       <then>
+         <copy file="${build.dir}/mvn/target/generated-resources/xml/xslt/web-facesconfig_${spec_version}.html"
+               tofile="${build.javadocs.dir}/web-facesconfig.html" />
+       </then>
+     </if>
+     <if>
+       <available file="${build.dir}/mvn/target/generated-resources/xml/xslt/web-facelettaglibrary_${spec_version}.html" />
+       <then>
+         <copy file="${build.dir}/mvn/target/generated-resources/xml/xslt/web-facelettaglibrary_${spec_version}.html"
+               tofile="${build.javadocs.dir}/web-facelettaglibrary.html" />
+       </then>
+     </if>
+     <if>
+       <available file="${build.dir}/mvn/target/generated-resources/xml/xslt/web-partialresponse_${spec_version}.html" />
+       <then>
+         <copy file="${build.dir}/mvn/target/generated-resources/xml/xslt/web-partialresponse_${spec_version}.html"
+               tofile="${build.javadocs.dir}/web-partialresponse.html" />
+       </then>
+     </if>
+
+     <copy file="${doc.dir}/web-facesconfig_${spec_version}.xsd"
+               tofile="${build.javadocs.dir}/web-facesconfig.xsd" />
+     <copy file="${doc.dir}/web-facelettaglibrary_${spec_version}.xsd"
+               tofile="${build.javadocs.dir}/web-facelettaglibrary.xsd" />
+     <copy file="${doc.dir}/web-partialresponse_${spec_version}.xsd"
+               tofile="${build.javadocs.dir}/web-partialresponse.xsd" />
+
+   </target>
+
 
     <target name="generate.javadocs">
         <javadoc packagenames="javax.*"
                  destdir="${build.javadocs.dir}"
                  Overview="${resources.dir}/overview.html"
                  private="${javadoc.private}"
-                 link="http://java.sun.com/javase/6/docs/api/"
                  protected="${javadoc.protected}"
                  windowtitle="${DocName} (${spec.version})"
                  stylesheetfile="${resources.dir}/jsf-api.css"
                  source="1.5"
-                 doctitle="${DocName} (${spec.version})"
-                 bottom="Copyright © 2002-2009 Sun Microsystems, Inc. All Rights Reserved.">
+                 useexternalfile="yes"
+                 doctitle="${DocName} (${spec.version} SNAPSHOT ${build.number})"
+                 >
+            <bottom><![CDATA[<a href="http://www.oracle.com">Oracle</a> and/or its affiliates. All Rights Reserved. Use is subject to <a href="{@docRoot}/doc-files/speclicense.html" target="_top">license terms</a>]]></bottom>
+           <link offline="true"
+                 href="http://java.sun.com/javase/6/docs/api/package-list"
+                 packagelistloc="${jsf.build.home}/common/ant/package-list" />
+                 
             <fileset dir="${src.dir}">
                 <include name="**/*.java"/>
                 <exclude name="**/ApplicationScoped.java" />
@@ -732,25 +801,28 @@ javax.faces.level=ALL
                 <exclude name="**/NoneScoped.java" />
                 <exclude name="**/RequestScoped.java" />
                 <exclude name="**/SessionScoped.java" />
-                <exclude name="**/ViewScoped.java" />
             </fileset>
             <fileset dir="${build.generate.dir}">
                 <include name="**/*.java"/>
             </fileset>
-            <classpath refid="compile.classpath"/>
+            <classpath refid="api-compile.classpath"/>
         </javadoc>
 
         <javadoc packagenames="javax.*"
                  destdir="${build.managed-bean-javadocs.dir}"
                  Overview="${resources.dir}/managed-bean-overview.html"
                  private="${javadoc.private}"
-                 link="http://java.sun.com/javase/6/docs/api/"
                  protected="${javadoc.protected}"
                  windowtitle="Faces Managed Bean Annotation Specification (${spec.version})"
                  stylesheetfile="${resources.dir}/jsf-api.css"
                  source="1.5"
+                 useexternalfile="yes"
                  doctitle="Faces Managed Bean Annotation Specification (${spec.version})"
                  bottom="Copyright © 2002-2009 Sun Microsystems, Inc. All Rights Reserved.">
+           <link offline="true"
+                 href="http://java.sun.com/javase/6/docs/api/package-list"
+                 packagelistloc="${jsf.build.home}/common/ant/package-list" />
+                 
             <fileset dir="${src.dir}">
                 <include name="**/ApplicationScoped.java" />
                 <include name="**/CustomScoped.java" />
@@ -760,7 +832,7 @@ javax.faces.level=ALL
                 <include name="**/NoneScoped.java" />
                 <include name="**/RequestScoped.java" />
                 <include name="**/SessionScoped.java" />
-                <include name="**/ViewScoped.java" />
+                <include name="**/javax/faces/bean/ViewScoped.java" />
             </fileset>
             <classpath refid="compile.classpath"/>
         </javadoc>
@@ -832,77 +904,167 @@ javax.faces.level=ALL
        M2 REPOSITORY
     -->
 
-    <target name="mvn.deploy.snapshot.local">
-        <mvn.deploy.snapshot.local type="api"/>
+    <target name="mvn.deploy.snapshot.local" depends="strip.api.jar">
+        <mvn.deploy.snapshot.local type="api" 
+                                   version="${spec.snapshot.version}"/>
     </target>
 
-
-    <target name="mvn.deploy.promoted.local">
+    <target name="mvn.deploy.promoted.local" depends="strip.api.jar">
         <mvn.deploy.promoted.local type="api"/>
     </target>
 
+    <target name="mvn.deploy.release.local" depends="strip.api.jar">
+        <mvn.deploy.release.local type="api" 
+                                  version="${spec.version}"/>
+    </target>
+
+    <target name="strip.api.jar" 
+            depends="get.faces.java.packages.as.space.separated.string">
+        <!-- path maintenance -->
+        <delete failonerror="false" dir="${build.lib.dir}/jsf-api-stripped" />
+        <mkdir dir="${build.lib.dir}/jsf-api-stripped" />
+<!--         windows or unix java exec invocation 
+        <condition property="exec.name" value="cmd.exe">
+            <os family="windows"/>
+        </condition>
+        <condition property="exec.name" value="${java.home}/bin/javac">
+            <available file="${java.home}/bin/javac"/>
+        </condition>
+        <condition property="exec.name" value="${java.home}/../bin/javac">
+            <available file="${java.home}/../bin/javac"/>
+        </condition>
+        <condition property="exec.arg.1"
+                   value="/c ${java.home}/bin/javac.exe">
+            <available file="${java.home}/bin/javac.exe"/>
+        </condition>
+        <condition property="exec.arg.1"
+                   value="/c ${java.home}/../bin/javac.exe">
+            <available file="${java.home}/../bin/javac.exe"/>
+        </condition>
+        <property name="exec.name" value="${java.home}/bin/javac"/>
+        <property name="exec.arg.1" value=""/>
+        <path id="ExtraApiClassPath">
+          <path refid="jsf-spi.path"/>
+          <pathelement location="${javaee-api.jar}" />
+        </path>
+         invoke the javac processor to produce stripped .class files 
+        <exec executable="${exec.name}" failonerror="true">
+            <arg line="${exec.arg.1}"/>
+            <arg line="-XDprocess.packages"/>
+            <arg line="-proc:only"/>
+            <arg line="-cp ${build.lib.dir}/${name}.jar${path.separator}${jsf-tools.jar}"/>
+            <arg line="-processor com.sun.faces.tools.StripClassesForApiJar"/>
+            <arg line="-Acom.sun.tools.javac.sym.Jar=${build.lib.dir}/${name}.jar"/>
+            <arg line="-Acom.sun.tools.javac.sym.ExtraApiClassPath=${javaee-api.jar}${path.separator}${com.sun.faces:jsf-spi:jar}"/>
+            <arg line="-Acom.sun.tools.javac.sym.Dest=${build.lib.dir}/jsf-api-stripped"/>
+            <arg line="${src.paths}"/>
+        </exec>
+         jar up the stripped files into javax.faces-api.jar. 
+         Extract the original manifest -->
+        <unjar src="${build.lib.dir}/${name}.jar"
+               dest="${build.lib.dir}/jsf-api-stripped">
+<!--          <patternset>
+            <include name="META-INF/MANIFEST.MF" />
+          </patternset>-->
+        </unjar>
+        <jar destfile="${javax.faces-api.jar}"
+             basedir="${build.lib.dir}/jsf-api-stripped"
+             manifest="${build.lib.dir}/jsf-api-stripped/META-INF/MANIFEST.MF" />
+    </target>
 
-    <target name="mvn.deploy.release.local">
-        <mvn.deploy.release.local type="api"/>
+    <target name="get.faces.java.packages.as.space.separated.string"
+            description="Traverse ${src.dir} and extract the directory names into a property ${src.paths} as a space separated list of java packages">
+      <!-- Suck the dirs into a path-like structure. -->
+      <path id="src.dir.path">
+        <dirset dir="${src.dir}" />
+      </path>
+      <!-- Suck the path-like structure into a property. -->
+      <property name="src.dir.paths" refid="src.dir.path" />
+
+      <!-- Massage the property value to make it be as desired. -->
+
+      <propertyregex property="src.dir.paths" input="${src.dir.paths}" override="true"
+                     regexp="\\" replace="/" global="true" />
+      <propertyregex property="src.dir" input="${src.dir}" override="true"
+                     regexp="\\" replace="/" global="true" />
+      <!-- Remove the leading fully qualified paths. -->
+      <propertyregex property="src.paths" input="${src.dir.paths}" override="true"
+                     regexp="${src.dir}" replace="" global="true" />
+      <!-- Remove the leading "/" from every path entry. -->
+      <propertyregex property="src.paths" input="${src.paths}" override="true"
+                     regexp="/javax" 
+                     replace="javax" global="true" />
+      <!-- Remove the javax entry.  It is not a java package. -->
+      <propertyregex property="src.paths" input="${src.paths}" override="true"
+                     regexp="${path.separator}javax${path.separator}" 
+                     replace="" global="true" />
+      <!-- Replace ':' with ' ' (or ';' with ' ' on windows). -->
+      <propertyregex property="src.paths" input="${src.paths}" override="true"
+                     regexp="${path.separator}" 
+                     replace=" " global="true" />
+      <!-- Replace '/' with '.'. -->
+      <propertyregex property="src.paths" input="${src.paths}" override="true"
+                     regexp="/" 
+                     replace="." global="true" />
     </target>
+        
+    <target name="mvn.deploy.api.release.local" depends="strip.api.jar">
 
-    <target name="mvn.deploy.api.release.local">
-        <mvn.deploy.release.local groupId="javax.faces" version="${spec.version}" type="api"/>
+        <mvn.deploy.release.local version="${spec.version}" type="api"/>
     </target>
 
 
     <!--
        USE THE FOLLOWING TARGETS TO PUSH VARIOUS BUILD TYPES TO THE
        JAVA.NET M2 REPOSITORY
+
+ant -Dgpg.passphrase=PASSPHRASE HERE mvn.deploy.snapshot.local
+
     -->
-     <target name="mvn.deploy.snapshot">
-        <mvn.deploy.snapshot type="api"/>
+     <target name="mvn.deploy.snapshot" depends="strip.api.jar">
+        <mvn.deploy.snapshot type="api" 
+                             version="${spec.snapshot.version}"/>
     </target>
 
 
-    <target name="mvn.deploy.promoted">
+    <target name="mvn.deploy.promoted" depends="strip.api.jar">
         <mvn.deploy.promoted type="api"/>
     </target>
 
 
-    <target name="mvn.deploy.release">
-        <mvn.deploy.release type="api"/>
-    </target>
-
-    <target name="mvn.deploy.api.release">
-        <mvn.deploy.release groupId="javax.faces" version="${spec.version}" type="api"/>
+    <target name="mvn.deploy.release" depends="strip.api.jar">
+        <mvn.deploy.release type="api" 
+                            version="${spec.version}"/>
     </target>
 
-    <target name="apply.netbeans.186761.hack">
-
-      <copy todir="${src.dir}">
-
-        <fileset dir="${build.generate.dir}">
-          <include name="**/*.java" />
-        </fileset>
-
-      </copy>
-
+    <target name="passthru">
+        <echo message="Running javax.faces.component tests ..."/>
+        <delete file="${api.test.results.dir}/api-test.log"/>
+        <delete file="${api.test.results.dir}/test-logging.properties"/>
+        <echo file="${api.test.results.dir}/test-logging.properties">
+handlers=java.util.logging.FileHandler
+java.util.logging.FileHandler.append=true
+java.util.logging.FileHandler.encoding=UTF-8
+java.util.logging.FileHandler.formatter=java.util.logging.SimpleFormatter
+java.util.logging.FileHandler.pattern=${api.test.results.dir}/api-test.log
+javax.faces.level=ALL
+        </echo>
+        <jsf.junit test-results-dir="${api.test.results.dir}"
+                   classpath-refid="test.classpath"
+                   assert.classes="${assertion.classes}"
+                   logging.config.file="${api.test.results.dir}/test-logging.properties">
+            <tests>
+                <fileset dir="${build.test.dir}"
+                         includes="javax/faces/webapp/FacesServletTestCase.class"/>
+            </tests>
+        </jsf.junit>
     </target>
 
-    <target name="remove.netbeans.186761.hack">
-
-      <delete failonerror="false">
+    <target name="clean.javadoc.cache">
 
-        <fileset dir="${src.dir}">
-          <include name="**/TypedCollections.java" />
-          <include name="**/MessageFactory.java" />
-          <include name="**/MethodBindingMethodExpressionAdapter.java" />
-          <include name="**/ValueBindingValueExpressionAdapter.java" />
-          <include name="**/MethodExpressionMethodBindingAdapter.java" />
-          <include name="**/ValueExpressionValueBindingAdapter.java" />
-          <include name="**/StateHolderSaver.java" />
-          <include name="javax/faces/component/html/*.java" />
-        </fileset>
-
-      </delete>
+      <delete failonerror="false" 
+  file="${demo.dir}/dist/mojarra-${spec.version}-SNAPSHOT-documentation.zip" />
 
     </target>
 
-
 </project>
diff --git a/jsf-api/doc/XMLSchema.dtd b/jsf-api/doc/XMLSchema.dtd
index 8533c0a..acb5961 100644
--- a/jsf-api/doc/XMLSchema.dtd
+++ b/jsf-api/doc/XMLSchema.dtd
@@ -1,3 +1,45 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
 <!-- DTD for XML Schemas: Part 1: Structures
      Public Identifier: "-//W3C//DTD XMLSCHEMA 200102//EN"
      Official Location: http://www.w3.org/2001/XMLSchema.dtd -->
diff --git a/jsf-api/doc/actionsource-props.xml b/jsf-api/doc/actionsource-props.xml
index d9ccf4c..a9cde6f 100644
--- a/jsf-api/doc/actionsource-props.xml
+++ b/jsf-api/doc/actionsource-props.xml
@@ -1,39 +1,44 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
 
 <!-- ========== ActionSource Properties ==================================== -->
diff --git a/jsf-api/doc/actionsource2-props.xml b/jsf-api/doc/actionsource2-props.xml
index c79e438..512d53a 100644
--- a/jsf-api/doc/actionsource2-props.xml
+++ b/jsf-api/doc/actionsource2-props.xml
@@ -1,39 +1,44 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
 
 <!-- ========== ActionSource Properties ==================================== -->
diff --git a/jsf-api/doc/base-props.xml b/jsf-api/doc/base-props.xml
index 8443f40..26a6366 100644
--- a/jsf-api/doc/base-props.xml
+++ b/jsf-api/doc/base-props.xml
@@ -1,39 +1,44 @@
 <?xml version='1.0' encoding='UTF-8'?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
 
 <!-- template
diff --git a/jsf-api/doc/changed_added_2_0_rev_a_cursor.cur b/jsf-api/doc/changed_added_2_0_rev_a_cursor.cur
old mode 100644
new mode 100755
diff --git a/jsf-api/doc/changed_added_2_1.png b/jsf-api/doc/changed_added_2_1.png
new file mode 100644
index 0000000..c1f4b58
Binary files /dev/null and b/jsf-api/doc/changed_added_2_1.png differ
diff --git a/jsf-api/doc/changed_added_2_1_cursor.cur b/jsf-api/doc/changed_added_2_1_cursor.cur
new file mode 100755
index 0000000..4acd7fa
Binary files /dev/null and b/jsf-api/doc/changed_added_2_1_cursor.cur differ
diff --git a/jsf-api/doc/changed_added_2_2.png b/jsf-api/doc/changed_added_2_2.png
new file mode 100644
index 0000000..c1f4b58
Binary files /dev/null and b/jsf-api/doc/changed_added_2_2.png differ
diff --git a/jsf-api/doc/changed_added_2_2_cursor.cur b/jsf-api/doc/changed_added_2_2_cursor.cur
new file mode 100755
index 0000000..3c3982f
Binary files /dev/null and b/jsf-api/doc/changed_added_2_2_cursor.cur differ
diff --git a/jsf-api/doc/changed_added_2_3.png b/jsf-api/doc/changed_added_2_3.png
new file mode 100644
index 0000000..c1f4b58
Binary files /dev/null and b/jsf-api/doc/changed_added_2_3.png differ
diff --git a/jsf-api/doc/changed_added_2_3_cursor.cur b/jsf-api/doc/changed_added_2_3_cursor.cur
new file mode 100755
index 0000000..6286c8d
Binary files /dev/null and b/jsf-api/doc/changed_added_2_3_cursor.cur differ
diff --git a/jsf-api/doc/changed_deleted_2_0_rev_a_cursor.cur b/jsf-api/doc/changed_deleted_2_0_rev_a_cursor.cur
old mode 100644
new mode 100755
diff --git a/jsf-api/doc/changed_deleted_2_1.png b/jsf-api/doc/changed_deleted_2_1.png
new file mode 100644
index 0000000..1c88708
Binary files /dev/null and b/jsf-api/doc/changed_deleted_2_1.png differ
diff --git a/jsf-api/doc/changed_deleted_2_1_cursor.cur b/jsf-api/doc/changed_deleted_2_1_cursor.cur
new file mode 100755
index 0000000..46eb9ca
Binary files /dev/null and b/jsf-api/doc/changed_deleted_2_1_cursor.cur differ
diff --git a/jsf-api/doc/changed_deleted_2_2.png b/jsf-api/doc/changed_deleted_2_2.png
new file mode 100644
index 0000000..1c88708
Binary files /dev/null and b/jsf-api/doc/changed_deleted_2_2.png differ
diff --git a/jsf-api/doc/changed_deleted_2_2_cursor.cur b/jsf-api/doc/changed_deleted_2_2_cursor.cur
new file mode 100755
index 0000000..66cb8a8
Binary files /dev/null and b/jsf-api/doc/changed_deleted_2_2_cursor.cur differ
diff --git a/jsf-api/doc/changed_deleted_2_3.png b/jsf-api/doc/changed_deleted_2_3.png
new file mode 100644
index 0000000..1c88708
Binary files /dev/null and b/jsf-api/doc/changed_deleted_2_3.png differ
diff --git a/jsf-api/doc/changed_deleted_2_3_cursor.cur b/jsf-api/doc/changed_deleted_2_3_cursor.cur
new file mode 100755
index 0000000..48fe437
Binary files /dev/null and b/jsf-api/doc/changed_deleted_2_3_cursor.cur differ
diff --git a/jsf-api/doc/changed_modified_2_0_rev_a_cursor.cur b/jsf-api/doc/changed_modified_2_0_rev_a_cursor.cur
old mode 100644
new mode 100755
diff --git a/jsf-api/doc/changed_modified_2_1.png b/jsf-api/doc/changed_modified_2_1.png
new file mode 100644
index 0000000..93d9a62
Binary files /dev/null and b/jsf-api/doc/changed_modified_2_1.png differ
diff --git a/jsf-api/doc/changed_modified_2_1_cursor.cur b/jsf-api/doc/changed_modified_2_1_cursor.cur
new file mode 100755
index 0000000..30a9f18
Binary files /dev/null and b/jsf-api/doc/changed_modified_2_1_cursor.cur differ
diff --git a/jsf-api/doc/changed_modified_2_2.png b/jsf-api/doc/changed_modified_2_2.png
new file mode 100644
index 0000000..93d9a62
Binary files /dev/null and b/jsf-api/doc/changed_modified_2_2.png differ
diff --git a/jsf-api/doc/changed_modified_2_2_cursor.cur b/jsf-api/doc/changed_modified_2_2_cursor.cur
new file mode 100755
index 0000000..0c8d2a4
Binary files /dev/null and b/jsf-api/doc/changed_modified_2_2_cursor.cur differ
diff --git a/jsf-api/doc/changed_modified_2_3.png b/jsf-api/doc/changed_modified_2_3.png
new file mode 100644
index 0000000..93d9a62
Binary files /dev/null and b/jsf-api/doc/changed_modified_2_3.png differ
diff --git a/jsf-api/doc/changed_modified_2_3_cursor.cur b/jsf-api/doc/changed_modified_2_3_cursor.cur
new file mode 100755
index 0000000..4fc1163
Binary files /dev/null and b/jsf-api/doc/changed_modified_2_3_cursor.cur differ
diff --git a/jsf-api/doc/column-props.xml b/jsf-api/doc/column-props.xml
index 7386b4c..c86ac2b 100644
--- a/jsf-api/doc/column-props.xml
+++ b/jsf-api/doc/column-props.xml
@@ -1,41 +1,45 @@
 <?xml version='1.0' encoding='UTF-8'?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
--->
 
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
 
 <!-- ========== Table Properties =========================================== -->
 
diff --git a/jsf-api/doc/command-button-props.xml b/jsf-api/doc/command-button-props.xml
index cc8d48f..0ab194b 100644
--- a/jsf-api/doc/command-button-props.xml
+++ b/jsf-api/doc/command-button-props.xml
@@ -1,41 +1,45 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
--->
 
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
 
 <!-- ========== Command+Button Properties ================================== -->
 
@@ -65,7 +69,7 @@
         <property-name>onclick</property-name>
         <property-class>java.lang.String</property-class>
         <property-extension>
-            <pass-through>false</pass-through>
+            <ignored-by-renderer>false</ignored-by-renderer>
             <behavior/>
             <behavior>action</behavior>
             <default-behavior>true</default-behavior>
@@ -82,7 +86,7 @@
         <property-name>ondblclick</property-name>
         <property-class>java.lang.String</property-class>
         <property-extension>
-            <pass-through>true</pass-through>
+            <ignored-by-renderer>true</ignored-by-renderer>
             <behavior/>
         </property-extension>
     </property>
@@ -97,7 +101,7 @@
         <property-name>onchange</property-name>
         <property-class>java.lang.String</property-class>
         <property-extension>
-            <pass-through>true</pass-through>
+            <ignored-by-renderer>true</ignored-by-renderer>
             <behavior/>
         </property-extension>
     </property>
@@ -112,7 +116,7 @@
         <property-name>onmousedown</property-name>
         <property-class>java.lang.String</property-class>
         <property-extension>
-            <pass-through>true</pass-through>
+            <ignored-by-renderer>true</ignored-by-renderer>
             <behavior/>
         </property-extension>
     </property>
@@ -127,7 +131,7 @@
         <property-name>onmouseup</property-name>
         <property-class>java.lang.String</property-class>
         <property-extension>
-            <pass-through>true</pass-through>
+            <ignored-by-renderer>true</ignored-by-renderer>
             <behavior/>
         </property-extension>
     </property>
@@ -142,7 +146,7 @@
         <property-name>onmouseover</property-name>
         <property-class>java.lang.String</property-class>
         <property-extension>
-            <pass-through>true</pass-through>
+            <ignored-by-renderer>true</ignored-by-renderer>
             <behavior/>
         </property-extension>
     </property>
@@ -157,7 +161,7 @@
         <property-name>onmousemove</property-name>
         <property-class>java.lang.String</property-class>
         <property-extension>
-            <pass-through>true</pass-through>
+            <ignored-by-renderer>true</ignored-by-renderer>
             <behavior/>
         </property-extension>
     </property>
@@ -172,7 +176,7 @@
         <property-name>onmouseout</property-name>
         <property-class>java.lang.String</property-class>
         <property-extension>
-            <pass-through>true</pass-through>
+            <ignored-by-renderer>true</ignored-by-renderer>
             <behavior/>
         </property-extension>
     </property>
@@ -187,7 +191,7 @@
         <property-name>onkeypress</property-name>
         <property-class>java.lang.String</property-class>
         <property-extension>
-            <pass-through>true</pass-through>
+            <ignored-by-renderer>true</ignored-by-renderer>
             <behavior/>
         </property-extension>
     </property>
@@ -202,7 +206,7 @@
         <property-name>onkeydown</property-name>
         <property-class>java.lang.String</property-class>
         <property-extension>
-            <pass-through>true</pass-through>
+            <ignored-by-renderer>true</ignored-by-renderer>
             <behavior/>
         </property-extension>
     </property>
@@ -217,7 +221,7 @@
         <property-name>onkeyup</property-name>
         <property-class>java.lang.String</property-class>
         <property-extension>
-            <pass-through>true</pass-through>
+            <ignored-by-renderer>true</ignored-by-renderer>
             <behavior/>
         </property-extension>
     </property>
diff --git a/jsf-api/doc/core-props.xml b/jsf-api/doc/core-props.xml
index d84c284..69ba410 100644
--- a/jsf-api/doc/core-props.xml
+++ b/jsf-api/doc/core-props.xml
@@ -1,41 +1,45 @@
 <?xml version='1.0' encoding='UTF-8'?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
--->
 
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
 
 <!-- ========== Core Properties ============================================ -->
 
@@ -62,7 +66,7 @@
         <property-name>style</property-name>
         <property-class>java.lang.String</property-class>
         <property-extension>
-            <pass-through>true</pass-through>
+            <ignored-by-renderer>true</ignored-by-renderer>
         </property-extension>
     </property>
 
@@ -77,7 +81,7 @@
         <property-name>styleClass</property-name>
         <property-class>java.lang.String</property-class>
         <property-extension>
-            <pass-through>false</pass-through>
+            <ignored-by-renderer>false</ignored-by-renderer>
         </property-extension>
     </property>
 
@@ -91,7 +95,34 @@
         <property-name>title</property-name>
         <property-class>java.lang.String</property-class>
         <property-extension>
-            <pass-through>true</pass-through>
+            <ignored-by-renderer>true</ignored-by-renderer>
         </property-extension>
     </property>
+
+    <property>
+        <description><![CDATA[
+          <p class="changed_added_2_2">Per the WAI-ARIA spec and its
+          relationship to HTML5 (Section title ARIA Role Attriubute),
+          every HTML element may have a "role" attribute whose value
+          must be passed through unmodified on the element on which it
+          is declared in the final rendered markup.  The attribute, if
+          specified, must have a value that is a string literal that is,
+          or an EL Expression that evaluates to, a set of
+          space-separated tokens representing the various WAI-ARIA roles
+          that the element belongs to.
+          </p>
+
+          <p class="changed_added_2_2">It is the page author's
+          responsibility to ensure that the user agent is capable of
+          correctly interpreting the value of this attribute.</p>]]>
+        </description>
+        <display-name>ARIA role</display-name>
+        <icon></icon>
+        <property-name>role</property-name>
+        <property-class>java.lang.String</property-class>
+        <property-extension>
+            <ignored-by-renderer>true</ignored-by-renderer>
+        </property-extension>
+    </property>
+
 </root>
diff --git a/jsf-api/doc/datatypes.dtd b/jsf-api/doc/datatypes.dtd
old mode 100644
new mode 100755
index fc4e196..59f1759
--- a/jsf-api/doc/datatypes.dtd
+++ b/jsf-api/doc/datatypes.dtd
@@ -1,4 +1,46 @@
 <!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!--
         DTD for XML Schemas: Part 2: Datatypes
         Note this DTD is NOT normative, or even definitive. - - the
         prose copy in the datatypes REC is the definitive version
diff --git a/jsf-api/doc/direct-link-props.xml b/jsf-api/doc/direct-link-props.xml
index 3d0a80d..f8c0af2 100644
--- a/jsf-api/doc/direct-link-props.xml
+++ b/jsf-api/doc/direct-link-props.xml
@@ -1,41 +1,45 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
--->
 
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
 
 <!-- ========== Link Properties ============================================ -->
 
diff --git a/jsf-api/doc/doctype-props.xml b/jsf-api/doc/doctype-props.xml
new file mode 100644
index 0000000..e8fcf50
--- /dev/null
+++ b/jsf-api/doc/doctype-props.xml
@@ -0,0 +1,108 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!-- ========== HTML Document Properties ============================================ -->
+
+
+<!-- template
+
+      <property>
+        <description>
+        </description>
+        <display-name></display-name>
+        <icon></icon>
+        <property-name></property-name>
+        <property-class>java.lang.String</property-class>
+      </property>
+
+-->
+<root>
+    <property>
+        <description>
+          <![CDATA[<div class="changed_added_2_1">
+           The root XML element
+           </div>]]>
+        </description>
+        <display-name>Root XML element</display-name>
+        <icon></icon>
+        <property-name>rootElement</property-name>
+        <property-class>java.lang.String</property-class>
+        <property-extension>
+            <ignored-by-renderer>true</ignored-by-renderer>
+            <required>true</required>
+        </property-extension>
+    </property>
+
+    <property>
+        <description>
+          <![CDATA[<div class="changed_added_2_1">
+           Will be output as the public part of the DOCTYPE
+           </div>]]>
+        </description>
+        <display-name>The public part of the DOCTYPE</display-name>
+        <icon></icon>
+        <property-name>public</property-name>
+        <property-class>java.lang.String</property-class>
+        <property-extension>
+            <ignored-by-renderer>true</ignored-by-renderer>
+            <required>false</required>
+        </property-extension>
+    </property>
+
+    <property>
+        <description>
+          <![CDATA[<div class="changed_added_2_1">
+           Will be output as the system part of the DOCTYPE
+           </div>]]>
+        </description>
+        <display-name>The system part of the DOCTYPE</display-name>
+        <icon></icon>
+        <property-name>system</property-name>
+        <property-class>java.lang.String</property-class>
+        <property-extension>
+            <ignored-by-renderer>true</ignored-by-renderer>
+            <required>false</required>
+        </property-extension>
+    </property>
+
+</root>
diff --git a/jsf-api/doc/document-props.xml b/jsf-api/doc/document-props.xml
new file mode 100644
index 0000000..30bc183
--- /dev/null
+++ b/jsf-api/doc/document-props.xml
@@ -0,0 +1,75 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!-- ========== HTML Document Properties ============================================ -->
+
+
+<!-- template
+
+      <property>
+        <description>
+        </description>
+        <display-name></display-name>
+        <icon></icon>
+        <property-name></property-name>
+        <property-class>java.lang.String</property-class>
+      </property>
+
+-->
+<root>
+    <property>
+        <description>
+          <![CDATA[<div class="changed_added_2_1">
+           An XML Namespace to be passed through to the rendered element
+           </div>]]>
+        </description>
+        <display-name>XML Namespace</display-name>
+        <icon></icon>
+        <property-name>xmlns</property-name>
+        <property-class>java.lang.String</property-class>
+        <property-extension>
+            <ignored-by-renderer>true</ignored-by-renderer>
+        </property-extension>
+    </property>
+
+</root>
diff --git a/jsf-api/doc/editable-props.xml b/jsf-api/doc/editable-props.xml
index 1e8823a..61b2138 100644
--- a/jsf-api/doc/editable-props.xml
+++ b/jsf-api/doc/editable-props.xml
@@ -1,39 +1,44 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
 
 <!-- ========== EditableValueHolder Properties ============================= -->
diff --git a/jsf-api/doc/events-props-noclick.xml b/jsf-api/doc/events-props-noclick.xml
index fcbb3fc..d169e11 100644
--- a/jsf-api/doc/events-props-noclick.xml
+++ b/jsf-api/doc/events-props-noclick.xml
@@ -1,41 +1,45 @@
 <?xml version='1.0' encoding='UTF-8'?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
--->
 
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
 
 <!-- ========== Event Properties =========================================== -->
 
@@ -64,7 +68,7 @@
         <property-name>ondblclick</property-name>
         <property-class>java.lang.String</property-class>
         <property-extension>
-            <pass-through>true</pass-through>
+            <ignored-by-renderer>true</ignored-by-renderer>
             <behavior/>
         </property-extension>
     </property>
@@ -79,7 +83,7 @@
         <property-name>onmousedown</property-name>
         <property-class>java.lang.String</property-class>
         <property-extension>
-            <pass-through>true</pass-through>
+            <ignored-by-renderer>true</ignored-by-renderer>
             <behavior/>
         </property-extension>
     </property>
@@ -94,7 +98,7 @@
         <property-name>onmouseup</property-name>
         <property-class>java.lang.String</property-class>
         <property-extension>
-            <pass-through>true</pass-through>
+            <ignored-by-renderer>true</ignored-by-renderer>
             <behavior/>
         </property-extension>
     </property>
@@ -109,7 +113,7 @@
         <property-name>onmouseover</property-name>
         <property-class>java.lang.String</property-class>
         <property-extension>
-            <pass-through>true</pass-through>
+            <ignored-by-renderer>true</ignored-by-renderer>
             <behavior/>
         </property-extension>
     </property>
@@ -124,7 +128,7 @@
         <property-name>onmousemove</property-name>
         <property-class>java.lang.String</property-class>
         <property-extension>
-            <pass-through>true</pass-through>
+            <ignored-by-renderer>true</ignored-by-renderer>
             <behavior/>
         </property-extension>
     </property>
@@ -139,7 +143,7 @@
         <property-name>onmouseout</property-name>
         <property-class>java.lang.String</property-class>
         <property-extension>
-            <pass-through>true</pass-through>
+            <ignored-by-renderer>true</ignored-by-renderer>
             <behavior/>
         </property-extension>
     </property>
@@ -154,7 +158,7 @@
         <property-name>onkeypress</property-name>
         <property-class>java.lang.String</property-class>
         <property-extension>
-            <pass-through>true</pass-through>
+            <ignored-by-renderer>true</ignored-by-renderer>
             <behavior/>
         </property-extension>
     </property>
@@ -169,7 +173,7 @@
         <property-name>onkeydown</property-name>
         <property-class>java.lang.String</property-class>
         <property-extension>
-            <pass-through>true</pass-through>
+            <ignored-by-renderer>true</ignored-by-renderer>
             <behavior/>
         </property-extension>
     </property>
@@ -184,7 +188,7 @@
         <property-name>onkeyup</property-name>
         <property-class>java.lang.String</property-class>
         <property-extension>
-            <pass-through>true</pass-through>
+            <ignored-by-renderer>true</ignored-by-renderer>
             <behavior/>
         </property-extension>
     </property>
diff --git a/jsf-api/doc/events-props.xml b/jsf-api/doc/events-props.xml
index 33ac9cd..02b88ab 100644
--- a/jsf-api/doc/events-props.xml
+++ b/jsf-api/doc/events-props.xml
@@ -1,41 +1,45 @@
 <?xml version='1.0' encoding='UTF-8'?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
--->
 
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
 
 <!-- ========== Event Properties =========================================== -->
 
@@ -63,7 +67,7 @@
         <property-name>onclick</property-name>
         <property-class>java.lang.String</property-class>
         <property-extension>
-            <pass-through>true</pass-through>
+            <ignored-by-renderer>true</ignored-by-renderer>
             <behavior/>
         </property-extension>
     </property>
@@ -78,7 +82,7 @@
         <property-name>ondblclick</property-name>
         <property-class>java.lang.String</property-class>
         <property-extension>
-            <pass-through>true</pass-through>
+            <ignored-by-renderer>true</ignored-by-renderer>
             <behavior/>
         </property-extension>
     </property>
@@ -93,7 +97,7 @@
         <property-name>onmousedown</property-name>
         <property-class>java.lang.String</property-class>
         <property-extension>
-            <pass-through>true</pass-through>
+            <ignored-by-renderer>true</ignored-by-renderer>
             <behavior/>
         </property-extension>
     </property>
@@ -108,7 +112,7 @@
         <property-name>onmouseup</property-name>
         <property-class>java.lang.String</property-class>
         <property-extension>
-            <pass-through>true</pass-through>
+            <ignored-by-renderer>true</ignored-by-renderer>
             <behavior/>
         </property-extension>
     </property>
@@ -123,7 +127,7 @@
         <property-name>onmouseover</property-name>
         <property-class>java.lang.String</property-class>
         <property-extension>
-            <pass-through>true</pass-through>
+            <ignored-by-renderer>true</ignored-by-renderer>
             <behavior/>
         </property-extension>
     </property>
@@ -138,7 +142,7 @@
         <property-name>onmousemove</property-name>
         <property-class>java.lang.String</property-class>
         <property-extension>
-            <pass-through>true</pass-through>
+            <ignored-by-renderer>true</ignored-by-renderer>
             <behavior/>
         </property-extension>
     </property>
@@ -153,7 +157,7 @@
         <property-name>onmouseout</property-name>
         <property-class>java.lang.String</property-class>
         <property-extension>
-            <pass-through>true</pass-through>
+            <ignored-by-renderer>true</ignored-by-renderer>
             <behavior/>
         </property-extension>
     </property>
@@ -168,7 +172,7 @@
         <property-name>onkeypress</property-name>
         <property-class>java.lang.String</property-class>
         <property-extension>
-            <pass-through>true</pass-through>
+            <ignored-by-renderer>true</ignored-by-renderer>
             <behavior/>
         </property-extension>
     </property>
@@ -183,7 +187,7 @@
         <property-name>onkeydown</property-name>
         <property-class>java.lang.String</property-class>
         <property-extension>
-            <pass-through>true</pass-through>
+            <ignored-by-renderer>true</ignored-by-renderer>
             <behavior/>
         </property-extension>
     </property>
@@ -198,7 +202,7 @@
         <property-name>onkeyup</property-name>
         <property-class>java.lang.String</property-class>
         <property-extension>
-            <pass-through>true</pass-through>
+            <ignored-by-renderer>true</ignored-by-renderer>
             <behavior/>
         </property-extension>
     </property>
diff --git a/jsf-api/doc/events-valueChanged-click.xml b/jsf-api/doc/events-valueChanged-click.xml
index 3d82e31..91b6ed6 100644
--- a/jsf-api/doc/events-valueChanged-click.xml
+++ b/jsf-api/doc/events-valueChanged-click.xml
@@ -1,3 +1,45 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
 <root>
 
     <property>
@@ -10,7 +52,7 @@
         <property-name>onchange</property-name>
         <property-class>java.lang.String</property-class>
         <property-extension>
-            <pass-through>true</pass-through>
+            <ignored-by-renderer>true</ignored-by-renderer>
             <behavior/>
         </property-extension>
     </property>
@@ -26,7 +68,7 @@
         <property-name>onclick</property-name>
         <property-class>java.lang.String</property-class>
         <property-extension>
-            <pass-through>false</pass-through>
+            <ignored-by-renderer>false</ignored-by-renderer>
             <behavior/>
             <behavior>valueChange</behavior>
             <default-behavior>true</default-behavior>
diff --git a/jsf-api/doc/expert-draft-bg-blank.graffle b/jsf-api/doc/expert-draft-bg-blank.graffle
new file mode 100644
index 0000000..e998b13
--- /dev/null
+++ b/jsf-api/doc/expert-draft-bg-blank.graffle
@@ -0,0 +1,256 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>ActiveLayerIndex</key>
+	<integer>0</integer>
+	<key>ApplicationVersion</key>
+	<array>
+		<string>com.omnigroup.OmniGrafflePro</string>
+		<string>139.16.0.171715</string>
+	</array>
+	<key>AutoAdjust</key>
+	<false/>
+	<key>BackgroundGraphic</key>
+	<dict>
+		<key>Bounds</key>
+		<string>{{0, 0}, {576, 753.9000244140625}}</string>
+		<key>Class</key>
+		<string>SolidGraphic</string>
+		<key>ID</key>
+		<integer>2</integer>
+		<key>Style</key>
+		<dict>
+			<key>shadow</key>
+			<dict>
+				<key>Draws</key>
+				<string>NO</string>
+			</dict>
+			<key>stroke</key>
+			<dict>
+				<key>Draws</key>
+				<string>NO</string>
+			</dict>
+		</dict>
+	</dict>
+	<key>BaseZoom</key>
+	<integer>0</integer>
+	<key>CanvasOrigin</key>
+	<string>{0, 0}</string>
+	<key>ColumnAlign</key>
+	<integer>1</integer>
+	<key>ColumnSpacing</key>
+	<real>36</real>
+	<key>CreationDate</key>
+	<string>2006-07-19 19:53:09 +0000</string>
+	<key>Creator</key>
+	<string>Edward Burns</string>
+	<key>DisplayScale</key>
+	<string>1 0/72 in = 1.0000 in</string>
+	<key>GraphDocumentVersion</key>
+	<integer>8</integer>
+	<key>GraphicsList</key>
+	<array>
+		<dict>
+			<key>Bounds</key>
+			<string>{{31, 54.125}, {13, 14}}</string>
+			<key>Class</key>
+			<string>ShapedGraphic</string>
+			<key>FitText</key>
+			<string>YES</string>
+			<key>Flow</key>
+			<string>Resize</string>
+			<key>ID</key>
+			<integer>3</integer>
+			<key>Rotation</key>
+			<real>66</real>
+			<key>Shape</key>
+			<string>Rectangle</string>
+			<key>Style</key>
+			<dict>
+				<key>fill</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+				<key>shadow</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+				<key>stroke</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+			</dict>
+			<key>Text</key>
+			<dict>
+				<key>Text</key>
+				<string>{\rtf1\ansi\ansicpg1252\cocoartf1138\cocoasubrtf510
+{\fonttbl\f0\fnil\fcharset0 AmericanTypewriter;}
+{\colortbl;\red255\green255\blue255;\red255\green242\blue230;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+
+\f0\fs24 \cf2  }</string>
+				<key>VerticalPad</key>
+				<integer>0</integer>
+			</dict>
+			<key>Wrap</key>
+			<string>NO</string>
+		</dict>
+	</array>
+	<key>GridInfo</key>
+	<dict/>
+	<key>GuidesLocked</key>
+	<string>NO</string>
+	<key>GuidesVisible</key>
+	<string>YES</string>
+	<key>HPages</key>
+	<integer>1</integer>
+	<key>ImageCounter</key>
+	<integer>1</integer>
+	<key>KeepToScale</key>
+	<false/>
+	<key>Layers</key>
+	<array>
+		<dict>
+			<key>Lock</key>
+			<string>NO</string>
+			<key>Name</key>
+			<string>Layer 1</string>
+			<key>Print</key>
+			<string>YES</string>
+			<key>View</key>
+			<string>YES</string>
+		</dict>
+	</array>
+	<key>LayoutInfo</key>
+	<dict>
+		<key>Animate</key>
+		<string>NO</string>
+		<key>circoMinDist</key>
+		<real>18</real>
+		<key>circoSeparation</key>
+		<real>0.0</real>
+		<key>layoutEngine</key>
+		<string>dot</string>
+		<key>neatoSeparation</key>
+		<real>0.0</real>
+		<key>twopiSeparation</key>
+		<real>0.0</real>
+	</dict>
+	<key>LinksVisible</key>
+	<string>NO</string>
+	<key>MagnetsVisible</key>
+	<string>NO</string>
+	<key>MasterSheets</key>
+	<array/>
+	<key>ModificationDate</key>
+	<string>2012-12-05 21:20:18 +0000</string>
+	<key>Modifier</key>
+	<string>Edward Burns</string>
+	<key>NotesVisible</key>
+	<string>NO</string>
+	<key>Orientation</key>
+	<integer>2</integer>
+	<key>OriginVisible</key>
+	<string>NO</string>
+	<key>PageBreaks</key>
+	<string>YES</string>
+	<key>PrintInfo</key>
+	<dict>
+		<key>NSBottomMargin</key>
+		<array>
+			<string>float</string>
+			<string>4.97998</string>
+		</array>
+		<key>NSHorizonalPagination</key>
+		<array>
+			<string>coded</string>
+			<string>BAtzdHJlYW10eXBlZIHoA4QBQISEhAhOU051bWJlcgCEhAdOU1ZhbHVlAISECE5TT2JqZWN0AIWEASqEhAFxlwCG</string>
+		</array>
+		<key>NSLeftMargin</key>
+		<array>
+			<string>float</string>
+			<string>18</string>
+		</array>
+		<key>NSPaperSize</key>
+		<array>
+			<string>size</string>
+			<string>{612, 792}</string>
+		</array>
+		<key>NSPrintAllPages</key>
+		<array>
+			<string>int</string>
+			<string>0</string>
+		</array>
+		<key>NSPrintReverseOrientation</key>
+		<array>
+			<string>int</string>
+			<string>0</string>
+		</array>
+		<key>NSRightMargin</key>
+		<array>
+			<string>float</string>
+			<string>18</string>
+		</array>
+		<key>NSTopMargin</key>
+		<array>
+			<string>float</string>
+			<string>33.12</string>
+		</array>
+	</dict>
+	<key>PrintOnePage</key>
+	<false/>
+	<key>ReadOnly</key>
+	<string>NO</string>
+	<key>RowAlign</key>
+	<integer>1</integer>
+	<key>RowSpacing</key>
+	<real>36</real>
+	<key>SheetTitle</key>
+	<string>Canvas 1</string>
+	<key>SmartAlignmentGuidesActive</key>
+	<string>YES</string>
+	<key>SmartDistanceGuidesActive</key>
+	<string>YES</string>
+	<key>UniqueID</key>
+	<integer>1</integer>
+	<key>UseEntirePage</key>
+	<true/>
+	<key>VPages</key>
+	<integer>1</integer>
+	<key>WindowInfo</key>
+	<dict>
+		<key>CurrentSheet</key>
+		<integer>0</integer>
+		<key>ExpandedCanvases</key>
+		<array/>
+		<key>Frame</key>
+		<string>{{78, 0}, {591, 828}}</string>
+		<key>ListView</key>
+		<false/>
+		<key>OutlineWidth</key>
+		<integer>142</integer>
+		<key>RightSidebar</key>
+		<false/>
+		<key>Sidebar</key>
+		<true/>
+		<key>SidebarWidth</key>
+		<integer>138</integer>
+		<key>VisibleRegion</key>
+		<string>{{0.5, 1}, {219.5, 359.5}}</string>
+		<key>Zoom</key>
+		<real>2</real>
+		<key>ZoomValues</key>
+		<array>
+			<array>
+				<string>Canvas 1</string>
+				<real>2</real>
+				<real>1.5</real>
+			</array>
+		</array>
+	</dict>
+</dict>
+</plist>
diff --git a/jsf-api/doc/expert-draft-bg-blank.png b/jsf-api/doc/expert-draft-bg-blank.png
new file mode 100644
index 0000000..346a7d8
Binary files /dev/null and b/jsf-api/doc/expert-draft-bg-blank.png differ
diff --git a/jsf-api/doc/expert-draft-bg-non-blank.graffle b/jsf-api/doc/expert-draft-bg-non-blank.graffle
new file mode 100644
index 0000000..9b7b9d5
--- /dev/null
+++ b/jsf-api/doc/expert-draft-bg-non-blank.graffle
@@ -0,0 +1,542 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>ActiveLayerIndex</key>
+	<integer>0</integer>
+	<key>ApplicationVersion</key>
+	<array>
+		<string>com.omnigroup.OmniGrafflePro</string>
+		<string>138.17.0.133677</string>
+	</array>
+	<key>AutoAdjust</key>
+	<false/>
+	<key>BackgroundGraphic</key>
+	<dict>
+		<key>Bounds</key>
+		<string>{{0, 0}, {576, 753.9}}</string>
+		<key>Class</key>
+		<string>SolidGraphic</string>
+		<key>ID</key>
+		<integer>2</integer>
+		<key>Style</key>
+		<dict>
+			<key>shadow</key>
+			<dict>
+				<key>Draws</key>
+				<string>NO</string>
+			</dict>
+			<key>stroke</key>
+			<dict>
+				<key>Draws</key>
+				<string>NO</string>
+			</dict>
+		</dict>
+	</dict>
+	<key>CanvasOrigin</key>
+	<string>{0, 0}</string>
+	<key>ColumnAlign</key>
+	<integer>1</integer>
+	<key>ColumnSpacing</key>
+	<real>36</real>
+	<key>CreationDate</key>
+	<string>2006-07-19 15:53:09 -0400</string>
+	<key>Creator</key>
+	<string>Edward Burns</string>
+	<key>DisplayScale</key>
+	<string>1 0/72 in = 1.0000 in</string>
+	<key>GraphDocumentVersion</key>
+	<integer>6</integer>
+	<key>GraphicsList</key>
+	<array>
+		<dict>
+			<key>Bounds</key>
+			<string>{{-28, 54.125}, {131, 14}}</string>
+			<key>Class</key>
+			<string>ShapedGraphic</string>
+			<key>FitText</key>
+			<string>YES</string>
+			<key>Flow</key>
+			<string>Resize</string>
+			<key>ID</key>
+			<integer>1</integer>
+			<key>Rotation</key>
+			<real>66</real>
+			<key>Shape</key>
+			<string>Rectangle</string>
+			<key>Style</key>
+			<dict>
+				<key>fill</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+				<key>shadow</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+				<key>stroke</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+			</dict>
+			<key>Text</key>
+			<dict>
+				<key>Text</key>
+				<string>{\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf350
+{\fonttbl\f0\fnil\fcharset0 AmericanTypewriter;}
+{\colortbl;\red255\green255\blue255;\red170\green162\blue153;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
+
+\f0\fs24 \cf2 Expert Draft Version}</string>
+				<key>VerticalPad</key>
+				<integer>0</integer>
+			</dict>
+			<key>Wrap</key>
+			<string>NO</string>
+		</dict>
+	</array>
+	<key>GridInfo</key>
+	<dict/>
+	<key>GuidesLocked</key>
+	<string>NO</string>
+	<key>GuidesVisible</key>
+	<string>YES</string>
+	<key>HPages</key>
+	<integer>1</integer>
+	<key>ImageCounter</key>
+	<integer>1</integer>
+	<key>KeepToScale</key>
+	<false/>
+	<key>Layers</key>
+	<array>
+		<dict>
+			<key>Lock</key>
+			<string>NO</string>
+			<key>Name</key>
+			<string>Layer 1</string>
+			<key>Print</key>
+			<string>YES</string>
+			<key>View</key>
+			<string>YES</string>
+		</dict>
+	</array>
+	<key>LayoutInfo</key>
+	<dict>
+		<key>Animate</key>
+		<string>NO</string>
+		<key>circoMinDist</key>
+		<real>18</real>
+		<key>circoSeparation</key>
+		<real>0.0</real>
+		<key>layoutEngine</key>
+		<string>dot</string>
+		<key>neatoSeparation</key>
+		<real>0.0</real>
+		<key>twopiSeparation</key>
+		<real>0.0</real>
+	</dict>
+	<key>LinksVisible</key>
+	<string>NO</string>
+	<key>MagnetsVisible</key>
+	<string>NO</string>
+	<key>MasterSheets</key>
+	<array/>
+	<key>ModificationDate</key>
+	<string>2011-06-16 12:56:40 -0400</string>
+	<key>Modifier</key>
+	<string>Edward Burns</string>
+	<key>NotesVisible</key>
+	<string>NO</string>
+	<key>Orientation</key>
+	<integer>2</integer>
+	<key>OriginVisible</key>
+	<string>NO</string>
+	<key>PageBreaks</key>
+	<string>YES</string>
+	<key>PrintInfo</key>
+	<dict>
+		<key>NSBottomMargin</key>
+		<array>
+			<string>float</string>
+			<string>4.97998</string>
+		</array>
+		<key>NSLeftMargin</key>
+		<array>
+			<string>float</string>
+			<string>18</string>
+		</array>
+		<key>NSPaperSize</key>
+		<array>
+			<string>size</string>
+			<string>{612, 792}</string>
+		</array>
+		<key>NSPrintAllPages</key>
+		<array>
+			<string>int</string>
+			<string>0</string>
+		</array>
+		<key>NSRightMargin</key>
+		<array>
+			<string>float</string>
+			<string>18</string>
+		</array>
+		<key>NSTopMargin</key>
+		<array>
+			<string>float</string>
+			<string>33.12</string>
+		</array>
+	</dict>
+	<key>PrintOnePage</key>
+	<false/>
+	<key>QuickLookPreview</key>
+	<data>
+	JVBERi0xLjMKJcTl8uXrp/Og0MTGCjUgMCBvYmoKPDwgL0xlbmd0aCA2IDAgUiAvRmls
+	dGVyIC9GbGF0ZURlY29kZSA+PgpzdHJlYW0KeAG1kL1uwzAMhPc8xY3NYIWUKNFcm589
+	gNDOhWEDLZC0sTv08UOnCAq0GRvcIIIi79PphD1OIFfWAs0JY49nHLFaT4xuAl80dWgo
+	ZFAQIooi1/Fg88LgF6W0om1aeJXEosa5R2zCBl93iO8WTaXMVsYpS86/yutAUmcVi0E1
+	L7oDHivY/VyNn02hMNsI6gGrHQfyN9YBD9uvj35cor5hW79z/RsySjD7S/zEZnwZ7oJs
+	/UfNjG9Bn+5C9IyJ9VbMfpxe348/0P0ZFDx3mAplbmRzdHJlYW0KZW5kb2JqCjYgMCBv
+	YmoKMjA1CmVuZG9iagozIDAgb2JqCjw8IC9UeXBlIC9QYWdlIC9QYXJlbnQgNCAwIFIg
+	L1Jlc291cmNlcyA3IDAgUiAvQ29udGVudHMgNSAwIFIgL01lZGlhQm94IFswIDAgNTc2
+	IDc1My45XQo+PgplbmRvYmoKNyAwIG9iago8PCAvUHJvY1NldCBbIC9QREYgL1RleHQg
+	XSAvQ29sb3JTcGFjZSA8PCAvQ3MxIDggMCBSID4+IC9Gb250IDw8IC9GMS4wIDkgMCBS
+	Cj4+ID4+CmVuZG9iagoxMCAwIG9iago8PCAvTGVuZ3RoIDExIDAgUiAvTiAzIC9BbHRl
+	cm5hdGUgL0RldmljZVJHQiAvRmlsdGVyIC9GbGF0ZURlY29kZSA+PgpzdHJlYW0KeAGF
+	VM9rE0EU/jZuqdAiCFprDrJ4kCJJWatoRdQ2/RFiawzbH7ZFkGQzSdZuNuvuJrWliOTi
+	0SreRe2hB/+AHnrwZC9KhVpFKN6rKGKhFy3xzW5MtqXqwM5+8943731vdt8ADXLSNPWA
+	BOQNx1KiEWlsfEJq/IgAjqIJQTQlVdvsTiQGQYNz+Xvn2HoPgVtWw3v7d7J3rZrStpoH
+	hP1A4Eea2Sqw7xdxClkSAog836Epx3QI3+PY8uyPOU55eMG1Dys9xFkifEA1Lc5/TbhT
+	zSXTQINIOJT1cVI+nNeLlNcdB2luZsbIEL1PkKa7zO6rYqGcTvYOkL2d9H5Os94+wiHC
+	CxmtP0a4jZ71jNU/4mHhpObEhj0cGDX0+GAVtxqp+DXCFF8QTSeiVHHZLg3xmK79VvJK
+	gnCQOMpkYYBzWkhP10xu+LqHBX0m1xOv4ndWUeF5jxNn3tTd70XaAq8wDh0MGgyaDUhQ
+	EEUEYZiwUECGPBoxNLJyPyOrBhuTezJ1JGq7dGJEsUF7Ntw9t1Gk3Tz+KCJxlEO1CJL8
+	Qf4qr8lP5Xn5y1yw2Fb3lK2bmrry4DvF5Zm5Gh7X08jjc01efJXUdpNXR5aseXq8muwa
+	P+xXlzHmgjWPxHOw+/EtX5XMlymMFMXjVfPqS4R1WjE3359sfzs94i7PLrXWc62JizdW
+	m5dn/WpI++6qvJPmVflPXvXx/GfNxGPiKTEmdornIYmXxS7xkthLqwviYG3HCJ2VhinS
+	bZH6JNVgYJq89S9dP1t4vUZ/DPVRlBnM0lSJ93/CKmQ0nbkOb/qP28f8F+T3iuefKAIv
+	bODImbptU3HvEKFlpW5zrgIXv9F98LZua6N+OPwEWDyrFq1SNZ8gvAEcdod6HugpmNOW
+	ls05Uocsn5O66cpiUsxQ20NSUtcl12VLFrOZVWLpdtiZ0x1uHKE5QvfEp0plk/qv8RGw
+	/bBS+fmsUtl+ThrWgZf6b8C8/UUKZW5kc3RyZWFtCmVuZG9iagoxMSAwIG9iago3MzcK
+	ZW5kb2JqCjggMCBvYmoKWyAvSUNDQmFzZWQgMTAgMCBSIF0KZW5kb2JqCjQgMCBvYmoK
+	PDwgL1R5cGUgL1BhZ2VzIC9NZWRpYUJveCBbMCAwIDYxMiA3OTJdIC9Db3VudCAxIC9L
+	aWRzIFsgMyAwIFIgXSA+PgplbmRvYmoKMTIgMCBvYmoKPDwgL1R5cGUgL0NhdGFsb2cg
+	L091dGxpbmVzIDIgMCBSIC9QYWdlcyA0IDAgUiA+PgplbmRvYmoKMiAwIG9iago8PCAv
+	TGFzdCAxMyAwIFIgL0ZpcnN0IDE0IDAgUiA+PgplbmRvYmoKMTQgMCBvYmoKPDwgL1Bh
+	cmVudCAxNSAwIFIgL0NvdW50IDAgL0Rlc3QgWyAzIDAgUiAvWFlaIDAgNzUzLjkgMCBd
+	IC9UaXRsZSAoQ2FudmFzIDEpCj4+CmVuZG9iagoxNSAwIG9iago8PCA+PgplbmRvYmoK
+	MTMgMCBvYmoKPDwgL1BhcmVudCAxNSAwIFIgL0NvdW50IDAgL0Rlc3QgWyAzIDAgUiAv
+	WFlaIDAgNzUzLjkgMCBdIC9UaXRsZSAoQ2FudmFzIDEpCj4+CmVuZG9iagoxNiAwIG9i
+	ago8PCAvTGVuZ3RoIDE3IDAgUiAvTGVuZ3RoMSA1ODUyIC9GaWx0ZXIgL0ZsYXRlRGVj
+	b2RlID4+CnN0cmVhbQp4AZ1Ye2wcx3mfmZ2d3Xvv3u29eORxb/eevCfveDy+b/kSSckU
+	KYm2RPlJSdTLoqTKsmwrtuUocupEtlGjsR2gLZK2/sPNP3ZqJYiBIjXaAHH9R9GHgwRo
+	kT/aoA3gBk5hxy1si+w3e0f6TAcF2rmbmZvHzs38vu/7fd/s5UsPryMPegoJaPno2sWT
+	yE7BbyKEZ45vrF1stcllqN85fuWy3mrjX0A9cvLiqY1Wm/B+7dS5x9rPCycQUn90en0N
+	ajt9CuXgaehoNfEA1MnTG5cfbbUJb1vnLhxvjwsWtI2NtUfb/4/+Gdr6+bWNdaghBc9B
+	Ubh44SG+L0jBLBQzFy+tt+fjI9C+iTCUCvo5YlhHEiJIRhZyQt/v4j9DFEb5OOTUn157
+	737f2G+wKfwSetDrf/23T/H6rcvv/Hoztvn7UpMuQFOAFVoJnhGe2WIISQc3Y1uH6Vl7
+	pfagXSm3wuFQKHgrqGmBwC2/X1WVW4rP5/Xe8njcbtctl9PpcNySZUEgtwiG9V5Hz/0A
+	bz09e3rm//19Q6R7UP4NiUH5XUphne8yBiXa+g2+TV4l30PLaBpNoQaaR3X0Jl7BJn4N
+	v4Pewz50Ab+Ez+K/x2X8Cr7j6Bn+gfOKIBSMCldm9deF1Ky5djpinn5gpog/RE30MULk
+	ZyhA/hjyz7Y+AQnGiYIy+ChS8SBSyBOQDZQmR5ADv4d8+D9QHv8ekqBfAIRa2CPkRgz9
+	BbR1tPoFDDvx/L/8JvY//O9P0N86DOe1EwNt4Um2S144QG9cULvBVrztXl+7nkAT6O/w
+	u+QY+VC4R/iUPi/eI77KltlH0jPSf8v/ArMI4IXw98lHsDMJ3WXpWJYtB5GoiBETRYGI
+	FP6SMUwwgIPRnivlRgQ1x8pjym3+xeWx29C4PYb6K3jh9JuwpLxweu116+CRIbXxJpK3
+	3hparakJNVVTzSZ+ZPPHH39MPrrtbJLH4L8DIJ0/J98Cme9Ba1Yaz81Z89Ga6SMFuUmj
+	jUFaRzOMOUfLLN6XjSPNSbC8vYPm2Oe2cLtUQiVI7W3IaK5zG3N8G4EB05CYadQHatVe
+	HKpVm3iwVg3HcVBjvL+M06bhw4Zk8Dl8CObUA6rG68ZgfSCdgQnsxZrD7Xf0FkW5Hje6
+	uycDvXePL9+711rcCIVnzXQiWCEAXN7vcSmSt7ZS9M0+Oji5NFuYWDJJaB8RdBNLVJBI
+	l/HqhWN/lCoSJggSNr0BgezDf7C5WnLSyf1PnbipefwccY7RccDoJvqedQQ/+6z13Lmn
+	j601DfaV07OOiE5HRg6Kc6mk2L00Lk7uuyCur4vnLq0eqVUrJVakN1Ex2FgMrpxll4mk
+	+r4kfS3H/HeusKHG19gTX752GYVcBDs6MC3ftiV6W+G1Yn+4jMNcyHbfWBkEbsuew21j
+	voO6Az3bifqznainOezhkFntbwCYtWpQk1gQoA1qpjGOBzi0EuvBWpAX4dAorgLg/Jnt
+	ia2pIJj6QB4brVnBkD2Ty6Y1FZa0V4TlqnzFtjDbsnyx5pUUl8ffh70vOZ3/KRUVzwAV
+	CE0mza5zc5489ktqrsmSSYlRTIWkKQ4XezwYY58r98xoQUimqVByRdy69J2J+45SUcR9
+	vWLI5ayR0F4iBLwmdkoCLsl5PWZ6e7ywpxWfS3D1F2Wvl3myjOTdaV82Lw+WTK0mx0Ke
+	ZJ+rz5XXEhNKLOHKOiWz4hv1FUv+vX5vw1smmDKc1ImwD+GtT7Y+ID8n37YtJWdbSqje
+	E1MYnhkpUxcNTVkTY8W+iORgHhMN9WuCh+ByW7DhsaYCIsRlsJLdMiv/FkuJEUAUVL1l
+	K7b2czlwE6lAtyTASEZomUNrDjcRW6gwYJiAPIj2g+e+6stKcSmTDt4ZStZVXyqFhbCo
+	BgOvqKWK+oZH9sZZF8tk3b6hfPRYJJUmgDtzFUS8uXkn/pOKlhZNw+0QTAOTRGOzt78f
+	/1fKqRIzKbg8iSTG3V7F5rD41vtkjIhoALzoJasfT05aU/2DPSTURfViQaz210ap5KOp
+	wTpNp8oM9U0w6memiTnZYqmNUhNAslnNJjVQdjABzm63bS1vE4uEJjtVfJKruGhkABCQ
+	dmMCwxeUketyS7lbAwCNrdW1Kqg6/y2xTMMLJagrAId/cjBQ2ziwNhfLjK7UhmvFjM/h
+	7Ql1mReWvk9Yt9mbwOQfcai/ealRnl70zO1bnj4EUySHns+Vo04XZc6I1pXsGlp+7Z2K
+	w7T69Yo4/MCP5zSFuRbSBQgRCMpsvY9/BRj1oCxatUycy1l9SPHHaUSiEZMiKrCE7mTB
+	NIvFcBDhyDYqHBTOCaA9ZfgJYLShiKBcJxQ5DgXWmJkw2sey+RXI1cYGIAiJWsusQYfw
+	r5yRzb/yyEenCwsuh9SVurFy5vEbZ++7uvli6P3g8uDQPTidViV534lKqieSnlx/7pGr
+	33xyzuut7z/AhYbUrU/xa+QNiBi+ak3ghQVr73TJCJMeVcqq/R7aQHR6fEyUAn5ZkGi1
+	fw+z6gOK4GMjwy7BSSUrH2O9VroX4ew2+5Vt4ZfDnO2U2y3Wg67Wse2D7xBdFi10Hn3B
+	PvpAA+TOeQkOGdSAo4LbrqNlPLZWtF0Ll3oTcyKrD8B00AqOTwsrvORUE/l+z/5EYq+K
+	RU3UvMzIqbNqPJJx5YNeZ9QZcGLsr5rJYc/KYvOO7qAWI0tel9Lo93uSSf/mL1MsJpKE
+	KQui6dGkyj3/4E+ZHv/SSi0fikUBPtAHBfCrkZfRKJpDZ6w+PD9vLbgqqW5VNOMujPrC
+	tF6fpc0xNhV1MG+W1QpTQS/C4R20bIdgA7XjDdruoK0fYTTfCdK87Q24VXBvyiHhivGZ
+	S+bdAwBEnaO4i1VYEDx0hptYG6a/wSJok+hMRwPKpNKlZzxZQ+6VI6IYlXukZCEg6w45
+	IfdABIsHwolEGDI2rlcdRcDFqzmoaCSYRQ8dPESbkm5gKmaoQuXB3D/BVF2H6VzHACPy
+	BNjMOnrZmscnT1qnAg/ctX96KBX14HF1IKDKvWoWI3r3Ql8uI2SpQ64PwJrLwoF9owlB
+	YaEKE1bZvSfuxXPNHiGEBIwXts0KOBnA4x9OzKB03MPabrbd3XatQNhtPBfQyU48T7bw
+	5ICEQ212aaPzOVw53k1SBw+742OhB2ZyQm917fB8E9czJbyDfy+2JfXW2InBB1QvQO7o
+	YZ5ARPVa3V1qVQDInQExQggWHfFE37IZcStyt6M3KxdCsaBZYH26GPPEMSHEo0gxKVlk
+	NKW4u3AP/kn3HY2c0fhhXjZEv8enyYSZvYQ2auN31LV0MDycue/pgi6DkAQQlc5GLjxm
+	GlFRT2BK+F2HoDTw2ScgGxeKoAWrC0ejVpdD9VEhTB0aQ24GQSvIUNjGmyNtU9hOqCqg
+	aCeeUY6n2KFjAni6Soug6wPYc+bJaw9uPHn91J5lujS3cEh94erVF56/evUb+N1jRz33
+	Pfjg/W/b+3JsLZIq7GscLaFr1hBeXrYOsLF6fzamuPDMVFBFRo0itwviaVrI76OsJA3P
+	M0cywMKLTOgNO7iWGNu75nF2i5bszbeoCfp2vPiOdhhoufM0y59ph21omZbh7RK7HTXZ
+	vrsR+ILZhZmkSVpQi2NQFzse+MuhtRNXnjhzeJCwsNQt6X2+eKgQUbIeNWIwjyoHHGBu
+	UalHThVcnqjbYchRH3SFJivzS89X9uGf6vu/fuXay+OH0q5elkhA6CUGvbpAM6v4eklK
+	6JgIL2WGqMshTo9Xzqy9PQI26AOe+jfA8w50wxrFi4vWfjY3nldxSu1yQ3iEaGUqQFms
+	iw6POJiv0SsVQ0wwqyxjsZl9M7iUzXBAK9uAjrXNDjC0A9nWBcZ2cBzpltG1Da6CFjsh
+	XdwFaYuNwjz4bMeun1EbEDt0wmWi47LBbY3tmBqnwB8OHN5zuJAM6xFFcLJaen+XgsUu
+	j9cl6znqG/dlw0O5tFP0OWmUEEGIyd1yIu/MOmW/7OrCP40tLE0UGt2aEhXczp7snvzh
+	qWl5mMINQyKi2YsFUqr96yjTTdG2GYzyW/+O3yYuNImuWAN4asqajpuk6JVE4hcgfhVd
+	Zkqs5EZoPEqbgKDCxBBDDZYQM5wOcW4bxDK4ytbHtigeHZRtpznGPUAbvRya6kRvykav
+	Gv4spLcD9TK2+SaowY2spah2d12zL1x8cpzY6ge8BOz/8XRRTxDKdQXj6WJp4sjId86v
+	HhrHRooRWQ+6yJGZfuvcqXNnAQGa0llE09wld1pPxPNl03LL4Svzq2WnI5mTRr3eSJ/b
+	1O4arKZnXK7RvXsOwyGRtPUB/gp5AZXQKauIy2WrIgopqiEsivk+XeilMa9H6MpmVOB3
+	04gI4SJz9DgQ1trgADStEMImdSB0js1OzKShcicoZQ5Kavs6xOkYHCDXHThqKyywA8ft
+	gAJYvlbFIwSbZnf68LIRDehKMOjJqJmkfyOdO++d3fN1K1fayI/UUqu/DgZ93lDgVDr9
+	oM9MBT86A/QE5xPAp12E9yRfQt+2lvDjj1tPzF29cOL+1cWpquE/dncz1YvD1FWgjUO0
+	MXeGPqxINNPTTemY5BnuiwpwvXjk1J3CLFt46NyDB5b3sgVUD3o9tITxw20EwLPxAKoz
+	czWx74/2BaSDvHa05WH0eCcwj3NgmpibjA/bRgMY2ES1fRGBK0aoF4OWwBR7Qs3oGLef
+	22nn2wt9FlXUB8pw2QgCnDYjtiZsvxwI1apfvnnTq8lUpc5ETsD9UVW1lFxalnyMEunu
+	+x0QMIRZso80QtHokLtgyHE50nf5D70ai0K3nFH0WCzpKqc8ESI6BeHC70hOIMx83puN
+	h/1RQ+lLsggLnPjWKwqmWDcoYYZOoJTPn3fyRkLkhVy58QOVcvsVoKQYXsrR69dlKlJT
+	p/DbSPA3Vu13f1tHkcZF/IXE70gCykDcP4xmIF5eAC49gA6iQ+hOdBc6jO62n8DID9rB
+	E0MQIi7tOTK5OJef3Fi/dOb42vmVxy6uP3LpzOX1S1yHttM8/FiBzN+l8vedNyB/A/Ir
+	kG9B/hHkdyH/AvKH8CCFrEFOQh7YaicYQzu/MdJ3tWd2tWd3te/a1V7b1bbfy3asf3LX
+	uG0WHePnd41f2NW23+N2zAdAPrf/h3a1L+9q2++V/weyTXcLCmVuZHN0cmVhbQplbmRv
+	YmoKMTcgMCBvYmoKMzg0NwplbmRvYmoKMTggMCBvYmoKPDwgL1R5cGUgL0ZvbnREZXNj
+	cmlwdG9yIC9Bc2NlbnQgOTA0IC9DYXBIZWlnaHQgNzU4IC9EZXNjZW50IC0yNTAgL0Zs
+	YWdzIDMyCi9Gb250QkJveCBbLTQ4NSAtMzY1IDE4NTUgMTA5N10gL0ZvbnROYW1lIC9P
+	RlhBTUcrQW1lcmljYW5UeXBld3JpdGVyIC9JdGFsaWNBbmdsZQowIC9TdGVtViAwIC9N
+	YXhXaWR0aCAxODc0IC9YSGVpZ2h0IDUxOSAvRm9udEZpbGUyIDE2IDAgUiA+PgplbmRv
+	YmoKMTkgMCBvYmoKWyAyNTAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAw
+	IDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMAowIDcyOCA2NzMgMCAwIDAg
+	MCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCA3MjggMCAwIDAgMCAwIDAgMCAwIDAgMCA1
+	NjQgMCAwCjAgNTI4IDM0NiAwIDAgMzEwIDAgMCAwIDAgNjM3IDU0NiA2MDAgMCA0OTEg
+	NDkyIDQwMCAwIDAgMCA2MzcgXQplbmRvYmoKOSAwIG9iago8PCAvVHlwZSAvRm9udCAv
+	U3VidHlwZSAvVHJ1ZVR5cGUgL0Jhc2VGb250IC9PRlhBTUcrQW1lcmljYW5UeXBld3Jp
+	dGVyIC9Gb250RGVzY3JpcHRvcgoxOCAwIFIgL1dpZHRocyAxOSAwIFIgL0ZpcnN0Q2hh
+	ciAzMiAvTGFzdENoYXIgMTIwIC9FbmNvZGluZyAvTWFjUm9tYW5FbmNvZGluZwo+Pgpl
+	bmRvYmoKMjAgMCBvYmoKKE1hYyBPUyBYIDEwLjYuNyBRdWFydHogUERGQ29udGV4dCkK
+	ZW5kb2JqCjIxIDAgb2JqCihEOjIwMTEwNjE2MTY1NjQ2WjAwJzAwJykKZW5kb2JqCjEg
+	MCBvYmoKPDwgL1Byb2R1Y2VyIDIwIDAgUiAvQ3JlYXRpb25EYXRlIDIxIDAgUiAvTW9k
+	RGF0ZSAyMSAwIFIgPj4KZW5kb2JqCnhyZWYKMCAyMgowMDAwMDAwMDAwIDY1NTM1IGYg
+	CjAwMDAwMDY1MjYgMDAwMDAgbiAKMDAwMDAwMTU2OSAwMDAwMCBuIAowMDAwMDAwMzIw
+	IDAwMDAwIG4gCjAwMDAwMDE0MjAgMDAwMDAgbiAKMDAwMDAwMDAyMiAwMDAwMCBuIAow
+	MDAwMDAwMzAxIDAwMDAwIG4gCjAwMDAwMDA0MjYgMDAwMDAgbiAKMDAwMDAwMTM4NCAw
+	MDAwMCBuIAowMDAwMDA2MjQ5IDAwMDAwIG4gCjAwMDAwMDA1MjQgMDAwMDAgbiAKMDAw
+	MDAwMTM2NCAwMDAwMCBuIAowMDAwMDAxNTAzIDAwMDAwIG4gCjAwMDAwMDE3MzQgMDAw
+	MDAgbiAKMDAwMDAwMTYxNyAwMDAwMCBuIAowMDAwMDAxNzEyIDAwMDAwIG4gCjAwMDAw
+	MDE4MjkgMDAwMDAgbiAKMDAwMDAwNTc2NiAwMDAwMCBuIAowMDAwMDA1Nzg3IDAwMDAw
+	IG4gCjAwMDAwMDYwMjEgMDAwMDAgbiAKMDAwMDAwNjQzMiAwMDAwMCBuIAowMDAwMDA2
+	NDg0IDAwMDAwIG4gCnRyYWlsZXIKPDwgL1NpemUgMjIgL1Jvb3QgMTIgMCBSIC9JbmZv
+	IDEgMCBSIC9JRCBbIDwzOWM3MzMwYmU0Mzk3ODRkMTY0NGQzNzdlMGMxMDhiZj4KPDM5
+	YzczMzBiZTQzOTc4NGQxNjQ0ZDM3N2UwYzEwOGJmPiBdID4+CnN0YXJ0eHJlZgo2NjAx
+	CiUlRU9GCjEgMCBvYmoKPDwvQXV0aG9yIChFZHdhcmQgQnVybnMpL0NyZWF0aW9uRGF0
+	ZSAoRDoyMDA2MDcxOTE5NTMwMFopL0NyZWF0b3IgKE9tbmlHcmFmZmxlIFByb2Zlc3Np
+	b25hbCA1LjIuMykvTW9kRGF0ZSAoRDoyMDExMDYxNjE2NTYwMFopL1Byb2R1Y2VyIDIw
+	IDAgUiAvVGl0bGUgKGV4cGVydC1kcmFmdC1iZy5ncmFmZmxlKT4+CmVuZG9iagp4cmVm
+	CjEgMQowMDAwMDA3MTk4IDAwMDAwIG4gCnRyYWlsZXIKPDwvSUQgWzwzOWM3MzMwYmU0
+	Mzk3ODRkMTY0NGQzNzdlMGMxMDhiZj4gPDM5YzczMzBiZTQzOTc4NGQxNjQ0ZDM3N2Uw
+	YzEwOGJmPl0gL0luZm8gMSAwIFIgL1ByZXYgNjYwMSAvUm9vdCAxMiAwIFIgL1NpemUg
+	MjI+PgpzdGFydHhyZWYKNzM5MQolJUVPRgo=
+	</data>
+	<key>QuickLookThumbnail</key>
+	<data>
+	TU0AKgAAAUyAPeBPcAQWDQeEQmFQuDv+HP97OxwAB0vkHgAQhsIwyORyHv95OVugB5P+
+	LhoOBQAAKOy2Gw8APp2gBxuR8AAJh4NgAFASXS6PwV7ABzt5ygABzkABYHgefx2gwd7u
+	gANxwPUABsSiEAAkCSynwiowl7O6qPR9gilhcIWGxTCFP57zN3PenA4HAoAAav26xwp9
+	gB3OWjvcBRcNhmN2G/wt/PR0gByu4AgAMh4LACfT/Gx10t6RgoPCMAA3Ny3Oxx4OKRvJ
+	9v4AA8PiXY6eFamOY+iOehhUN5nbbe4W6Cvx5TRvuucCPSAqwS+HcSDPx8gB0OFxAAFh
+	3aA0DQncWF5upvyQBBWshQGW/o9KEP7juNuzMJiOuc6C+G3YF2zUAH6BgMKWCIEgA/Ti
+	OMyJ0HiyoNA6zMDuI3SRMiB4QtJCL3IWgIAADwEAAAMAAAABAAsAAAEBAAMAAAABABUA
+	AAECAAMAAAAEAAACBgEDAAMAAAABAAUAAAEGAAMAAAABAAIAAAERAAQAAAABAAAACAES
+	AAMAAAABAAEAAAEVAAMAAAABAAQAAAEWAAMAAAABABUAAAEXAAQAAAABAAABRAEcAAMA
+	AAABAAEAAAE9AAMAAAABAAIAAAFSAAMAAAABAAEAAAFTAAMAAAAEAAACDodzAAcAABns
+	AAACFgAAAAAACAAIAAgACAABAAEAAQABAAAZ7GFwcGwCEAAAbW50clJHQiBYWVogB9sA
+	AwAZABIAMgA3YWNzcEFQUEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPbWAAEAAAAA
+	0y1hcHBsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+	AAARZGVzYwAAAVAAAABiZHNjbQAAAbQAAAJCY3BydAAAA/gAAADQd3RwdAAABMgAAAAU
+	clhZWgAABNwAAAAUZ1hZWgAABPAAAAAUYlhZWgAABQQAAAAUclRSQwAABRgAAAgMYWFy
+	ZwAADSQAAAAgdmNndAAADUQAAAYSbmRpbgAAE1gAAAY+Y2hhZAAAGZgAAAAsbW1vZAAA
+	GcQAAAAoYlRSQwAABRgAAAgMZ1RSQwAABRgAAAgMYWFiZwAADSQAAAAgYWFnZwAADSQA
+	AAAgZGVzYwAAAAAAAAAIRGlzcGxheQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+	AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+	AG1sdWMAAAAAAAAAEgAAAAxubE5MAAAAFgAAAOhuYk5PAAAAEgAAAP5kYURLAAAAHAAA
+	ARBlblVTAAAAEgAAASxwbFBMAAAAEgAAAT5mckZSAAAAFgAAAVBwdEJSAAAAGAAAAWZw
+	dFBUAAAAFgAAAX56aENOAAAADAAAAZRlc0VTAAAAEgAAAaBqYUpQAAAADgAAAbJydVJV
+	AAAAJAAAAcBzdlNFAAAAEAAAAeR6aFRXAAAADgAAAfRkZURFAAAAEAAAAgJpdElUAAAA
+	FAAAAhJmaUZJAAAAEAAAAiZrb0tSAAAADAAAAjYASwBsAGUAdQByAGUAbgAtAEwAQwBE
+	AEYAYQByAGcAZQAtAEwAQwBEAEwAQwBEAC0AZgBhAHIAdgBlAHMAawDmAHIAbQBDAG8A
+	bABvAHIAIABMAEMARABLAG8AbABvAHIAIABMAEMARABMAEMARAAgAGMAbwB1AGwAZQB1
+	AHIATABDAEQAIABDAG8AbABvAHIAaQBkAG8ATABDAEQAIABhACAAQwBvAHIAZQBzX2mC
+	cgAgAEwAQwBEAEwAQwBEACAAYwBvAGwAbwByMKsw6TD8ACAATABDAEQEJgQyBDUEQgQ9
+	BD4EOQAgBBYEGgAtBDQEOARBBD8EOwQ1BDkARgDkAHIAZwAtAEwAQwBEX2mCcm2yZnaY
+	b3k6VmgARgBhAHIAYgAtAEwAQwBEAEwAQwBEACAAYwBvAGwAbwByAGkAVgDkAHIAaQAt
+	AEwAQwBEzuy37AAgAEwAQwBEAAB0ZXh0AAAAAENvcHlyaWdodCBBcHBsZSwgSW5jLiwg
+	MjAxMQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+	AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+	AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+	AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWFlaIAAAAAAAAPNSAAEAAAABFs9YWVogAAAA
+	AAAAYZwAADaEAAAHTVhZWiAAAAAAAABtlgAAr/wAABiOWFlaIAAAAAAAACejAAAZgAAA
+	s1JjdXJ2AAAAAAAABAAAAAAFAAoADwAUABkAHgAjACgALQAyADYAOwBAAEUASgBPAFQA
+	WQBeAGMAaABtAHIAdwB8AIEAhgCLAJAAlQCaAJ8AowCoAK0AsgC3ALwAwQDGAMsA0ADV
+	ANsA4ADlAOsA8AD2APsBAQEHAQ0BEwEZAR8BJQErATIBOAE+AUUBTAFSAVkBYAFnAW4B
+	dQF8AYMBiwGSAZoBoQGpAbEBuQHBAckB0QHZAeEB6QHyAfoCAwIMAhQCHQImAi8COAJB
+	AksCVAJdAmcCcQJ6AoQCjgKYAqICrAK2AsECywLVAuAC6wL1AwADCwMWAyEDLQM4A0MD
+	TwNaA2YDcgN+A4oDlgOiA64DugPHA9MD4APsA/kEBgQTBCAELQQ7BEgEVQRjBHEEfgSM
+	BJoEqAS2BMQE0wThBPAE/gUNBRwFKwU6BUkFWAVnBXcFhgWWBaYFtQXFBdUF5QX2BgYG
+	FgYnBjcGSAZZBmoGewaMBp0GrwbABtEG4wb1BwcHGQcrBz0HTwdhB3QHhgeZB6wHvwfS
+	B+UH+AgLCB8IMghGCFoIbgiCCJYIqgi+CNII5wj7CRAJJQk6CU8JZAl5CY8JpAm6Cc8J
+	5Qn7ChEKJwo9ClQKagqBCpgKrgrFCtwK8wsLCyILOQtRC2kLgAuYC7ALyAvhC/kMEgwq
+	DEMMXAx1DI4MpwzADNkM8w0NDSYNQA1aDXQNjg2pDcMN3g34DhMOLg5JDmQOfw6bDrYO
+	0g7uDwkPJQ9BD14Peg+WD7MPzw/sEAkQJhBDEGEQfhCbELkQ1xD1ERMRMRFPEW0RjBGq
+	EckR6BIHEiYSRRJkEoQSoxLDEuMTAxMjE0MTYxODE6QTxRPlFAYUJxRJFGoUixStFM4U
+	8BUSFTQVVhV4FZsVvRXgFgMWJhZJFmwWjxayFtYW+hcdF0EXZReJF64X0hf3GBsYQBhl
+	GIoYrxjVGPoZIBlFGWsZkRm3Gd0aBBoqGlEadxqeGsUa7BsUGzsbYxuKG7Ib2hwCHCoc
+	Uhx7HKMczBz1HR4dRx1wHZkdwx3sHhYeQB5qHpQevh7pHxMfPh9pH5Qfvx/qIBUgQSBs
+	IJggxCDwIRwhSCF1IaEhziH7IiciVSKCIq8i3SMKIzgjZiOUI8Ij8CQfJE0kfCSrJNol
+	CSU4JWgllyXHJfcmJyZXJocmtyboJxgnSSd6J6sn3CgNKD8ocSiiKNQpBik4KWspnSnQ
+	KgIqNSpoKpsqzysCKzYraSudK9EsBSw5LG4soizXLQwtQS12Last4S4WLkwugi63Lu4v
+	JC9aL5Evxy/+MDUwbDCkMNsxEjFKMYIxujHyMioyYzKbMtQzDTNGM38zuDPxNCs0ZTSe
+	NNg1EzVNNYc1wjX9Njc2cjauNuk3JDdgN5w31zgUOFA4jDjIOQU5Qjl/Obw5+To2OnQ6
+	sjrvOy07azuqO+g8JzxlPKQ84z0iPWE9oT3gPiA+YD6gPuA/IT9hP6I/4kAjQGRApkDn
+	QSlBakGsQe5CMEJyQrVC90M6Q31DwEQDREdEikTORRJFVUWaRd5GIkZnRqtG8Ec1R3tH
+	wEgFSEtIkUjXSR1JY0mpSfBKN0p9SsRLDEtTS5pL4kwqTHJMuk0CTUpNk03cTiVObk63
+	TwBPSU+TT91QJ1BxULtRBlFQUZtR5lIxUnxSx1MTU19TqlP2VEJUj1TbVShVdVXCVg9W
+	XFapVvdXRFeSV+BYL1h9WMtZGllpWbhaB1pWWqZa9VtFW5Vb5Vw1XIZc1l0nXXhdyV4a
+	XmxevV8PX2Ffs2AFYFdgqmD8YU9homH1YklinGLwY0Njl2PrZEBklGTpZT1lkmXnZj1m
+	kmboZz1nk2fpaD9olmjsaUNpmmnxakhqn2r3a09rp2v/bFdsr20IbWBtuW4SbmtuxG8e
+	b3hv0XArcIZw4HE6cZVx8HJLcqZzAXNdc7h0FHRwdMx1KHWFdeF2Pnabdvh3VnezeBF4
+	bnjMeSp5iXnnekZ6pXsEe2N7wnwhfIF84X1BfaF+AX5ifsJ/I3+Ef+WAR4CogQqBa4HN
+	gjCCkoL0g1eDuoQdhICE44VHhauGDoZyhteHO4efiASIaYjOiTOJmYn+imSKyoswi5aL
+	/IxjjMqNMY2Yjf+OZo7OjzaPnpAGkG6Q1pE/kaiSEZJ6kuOTTZO2lCCUipT0lV+VyZY0
+	lp+XCpd1l+CYTJi4mSSZkJn8mmia1ZtCm6+cHJyJnPedZJ3SnkCerp8dn4uf+qBpoNih
+	R6G2oiailqMGo3aj5qRWpMelOKWpphqmi6b9p26n4KhSqMSpN6mpqhyqj6sCq3Wr6axc
+	rNCtRK24ri2uoa8Wr4uwALB1sOqxYLHWskuywrM4s660JbSctRO1irYBtnm28Ldot+C4
+	WbjRuUq5wro7urW7LrunvCG8m70VvY++Cr6Evv+/er/1wHDA7MFnwePCX8Lbw1jD1MRR
+	xM7FS8XIxkbGw8dBx7/IPci8yTrJuco4yrfLNsu2zDXMtc01zbXONs62zzfPuNA50LrR
+	PNG+0j/SwdNE08bUSdTL1U7V0dZV1tjXXNfg2GTY6Nls2fHadtr724DcBdyK3RDdlt4c
+	3qLfKd+v4DbgveFE4cziU+Lb42Pj6+Rz5PzlhOYN5pbnH+ep6DLovOlG6dDqW+rl63Dr
+	++yG7RHtnO4o7rTvQO/M8Fjw5fFy8f/yjPMZ86f0NPTC9VD13vZt9vv3ivgZ+Kj5OPnH
+	+lf65/t3/Af8mP0p/br+S/7c/23//3BhcmEAAAAAAAMAAAACZmYAAPKnAAANWQAAE9AA
+	AAoOdmNndAAAAAAAAAAAAAMBAAACAAAABQAVADIAXwCbAOgBNQGJAewCXALaA2MD+QSk
+	BV4GJwb4B9gIyAnICtAL3Az2Dg0PNxBdEYUSrBPSFPUWEhclGDkZQBpFG0IcMB0XHgIe
+	6h/UIL0hqiKYI4okfiVyJmknXyhXKVcqVytXLFstZS5tL3kwiTGaMqwzwzTfNfs3Fzg8
+	OVs6fDuQPJ09qz64P8JAz0HfQu5D/EUNRh5HMUhBSVFKZ0t7TI9NpU64T8tQ41H6UxFU
+	J1U/VlhXdViYWcBa71wdXUpedl+jYNBiAGMyZGJlmGbTaAtpSWqMa9RtGm5pb7txEnJt
+	c8p1KnaOd9N47noAexB8JH00fkV/UIBegWeCaoNyhHCFaoZlh1mISok1ih+LBIvnjMmN
+	pY6Aj12QQZEqkhKS+pPjlMuVtJabl4OYbZlXmkObL5wbnQmd+Z7rn9+g1KHMosWjvaS6
+	paWmhqdsqFOpOKogqwir76zYrcOurq+bsIaxcrJfs020O7Uqthm3BbfyuN+5y7qnu3+8
+	Vr0vvgq+5b/CwJ7BfsJew0DEJcUNxfXG4cfPyL7JsMqly5zMk82IznfPZdBR0T3SKtMa
+	1AfU9dXm1tbXydi82bHap9uf3Jfdk96N34vgiOGG4ozjkeSQ5Ynmfedz6GnpYeph62fs
+	eO2c7tLwIvGW8yr05PbW+Pv7b/4m//8AAAAHACEAUACWAPYBOgGIAeQCSAK4AzkDzARm
+	BQsFxQaJB1sIOQkgChYLGwwcDSsOQA9eEHkRmBK2E9QU7xYAFw4YGRkhGh4bFhwCHOcd
+	zx65H6EgiSFzImEjUiRFJTMmKCcdKA8pDSoIKwEsAS0FLgkvDTAVMRsyJjM2NEY1WjZq
+	N4I4lzmqOrI7sDyuPa0+qT+nQKlBqkKqQ6xErkWxRrNHtki6ScBKxUvJTM5N0U7YT99Q
+	5FHqUvFT+VUFVhZXLlhLWWhahFugXL1d2176YBthO2JgY4tks2XfZxBoRWl4arNr8m01
+	bnpvwXELclhzjHShda92u3fKeNd543rue/l9An4Hfw2AEYESghKDEIQNhQWF/Yb0h+iI
+	3YnOir+LroyWjYKOaI9TkD6RKpIXkwST8pTlldiWzZfDmLuZs5qwm66crp2xnrWfvKDB
+	ociiu6OdpIelc6Zfp02oPKksqh6rEqwIrP6t867pr+Cw2LHMssWzu7SstZ62kLeDuHi5
+	a7pdu1C8Q702vim/HMAQwQPB9sLrw+HE1MXMxsPHusizya3KqsumzKnNv87az/LRB9Ic
+	0zHUQtVT1mXXdtiI2ZvasNvG3OHd+t8a4DvhYOKH46/k2eYK5zrobOmm6uTsI+1o7rLw
+	AvFW8qr0BPVk9sX4J/mO+vX8W/2+/xf//wAAAAYADgAhAD4AZgCYANUBFwFWAZ0B7gJL
+	ArEDIQOYBBoEpQU7BdsGfwcqB9wIkQlNCg8KyguLDE4NEA3NDoQPOg/vEJ0RSBHtEogT
+	JBO9FFcU8RWLFicWxBdjGAQYoxlFGekajhs1G90chh0yHeMekx9EH/kgrCFjIh8i2yOX
+	JFQlGCXYJpUnSyf0KKApTCn3KqQrUywDLLUtZy4cLtEvhzA/MPoxtTJxMzAz7DSqNWk2
+	LDbrN6s4bjkxOfU6tzt7PEM9Cj3SPpo/YkArQPZBwUKNQ1xELkT9Rc9GpEd7SE9JKUoD
+	St9LvEyaTXhOWU8vT/5QzFGcUm5TQVQZVPBVy1aoV4ZYallNWjVbIFwNXPxd7F7eX9Ng
+	yGHAYrdjrmSkZZNmgmdvaGBpU2pGaztsL20mbiBvGnAXcRVyE3MSdBN1FnYadx54JXks
+	ejF7M3wZfPF9yH6ff3KAR4EZgemCu4OOhGGFNIYHhtuHsoiLiWKKP4sci/qM2Y27jpyP
+	cZBEkReR7pLJk6eUiJVrllaXRJg1mS+aLJstnDOdPp5Mn16gdKGPoqujvaTDpcSmxqfI
+	qM6p16rgq+ys/K4Lrx6wM7FIsl+zdrSNtae2vrfYuO+6CLtBvKO9+r9KwJ/B/sNoxODG
+	bcgSydvLv83S0CjSwtWp2Q7dDuIi6MDzHP//AABuZGluAAAAAAAABjYAAJkCAABWyAAA
+	VQQAAJGwAAAncwAAFwoAAFANAABUOQACCj0AAfrhAAEmZgADAQAAAgAAABMALABFAF8A
+	eACRAKsAxQDfAPkBFAEwAUwBagGHAaYBxgHnAgoCLgJUAnwCpwLTAwMDNQNqA6UD5AQk
+	BGcErATzBTsFhQXPBhwGaga6BwwHXQewCAUIWwiwCQgJYQm6ChQKcQrNCyoLhwvmDEcM
+	pg0JDWwN1Q5EDrUPJg+cEBQQixEEEX8R/RJ6EvoTexP/FIUVChWRFhsWpRcyF8IYUxji
+	GXYaCxqiGzob0xxsHQQdnB4xHscfYB/6IJchNCHUInQjFCO2JFok/SWdJkIm5yeLKC4o
+	zyl1KhkquyteLAAsoi1ELeYuiy8sL84wejFEMh0y+TPXNLM1mDZ7N2c4UTlDOj07Mzw2
+	PT8+Sj9gQHtBokLMRAJFOUZ+R8hJEkpRS5BM1E4ZT2JQrVH+U09UoVX3V0pYo1n9W1Vc
+	rV4GX19gt2IPY2xkw2Y3Z8FpQmrIbFNt2m9pcPhyhXQVdaV3PHjRemp8A32gfzuA4YKJ
+	hDKF4IexiY+Lc41SjzORFJL7lNqWvZiemnicV54woAih36O0pYanVqkpqwes8q7jsNiy
+	0rTEtsK4v7q5vLi+tcCywq/ErcaqyKnKocyjzpzQntKd1IrWh9iS2qzc0t7v4RnjM+VC
+	50fpMOr/7LvuW+/h8UvypvPw9Sn2Svdi+G75aPpX+zb8EPze/aT+l///AAAADAAjADwA
+	VABuAIcAoQC7ANYA8QEMASkBRgFkAYIBogHDAeUCCQIuAlUCfwKrAtkDCQM9A3QDsAPw
+	BDEEdAS6BQIFSwWVBeAGLwZ+Bs8HIwd1B8oIIgh5CNEJKwmHCeMKQgqhCwALYQvCDCcM
+	igzwDVgNww44DrAPKA+kECMQoREhEaQSKBKuEzYTwBRMFNoVaBX5FowXIRe5GFMY6xmJ
+	GigayRtrHA4csR1SHfEekB8xH9QgeSEfIccicCMaI8UkciUeJcgmdickJ9IofSkqKdoq
+	hyszK+AsjC05LeUuli9BL/AwrTGBMl4zPjQfNQE16TbRN744qzmgOpg7kDyRPZM+mz+l
+	QLVBzkLkRAVFJEZMR3dIpknjSx5MYk2jTuZQK1FxUr1UAVVKVpFX2lkiWm5btFz8XkRf
+	jGDTYhljZWSsZhJnmWkUapBsEW2Mbw5wjnIMc4x1CXaPeBR5m3sjfLR+QH/TgXCDEISy
+	hlWH94mgi0+M/I6tkGCSGpPRlYyXTpkMmsyck55WoByh5KOspXSnOqkFqsKsY64Cr6ex
+	UrMCtK+2abglueG7n71kvyTA6MKqxG7GK8fvyajLY80dztLQi9JA0/fVptdX2Qzaudxg
+	3gXfreFP4u3kiuYg57LpSurf7HDt+++I8RbypfQw9bj3R/jW+mT7/f2O//8AAAAdAEQA
+	agCRALgA3wEIATIBXgGLAbwB7gIkAl4CngLiAywDfwPcBD4EpgUSBYEF8wZqBuMHXwfe
+	CGAI4QlnCe4KeQsDC48MIAyvDUMN4Q6SD0UP/hC4EXQSMxL0E7cUfhVDFg0W2BeoGHoZ
+	TBolGv8b2xy6HZ8egh9oIFEhPiItIx0kESUFJfgm8SfpKN8p3SrXK9Qs0S3PLtIv0zDk
+	MgQzJzRINWs2izevOM458jsOPC89TT5pP4VAokHCQt1D/kUaRj1HYEiFSbhK7UwpTWFO
+	mk/VURBSUVOMVMlWCVdEWIVZxlsIXEldjF7QYBVhWmKgY+5lQmbRaHJqD2u8bWZvH3DZ
+	cpR0UnYUd9l5nHtcfSJ+3oChgmSEJIXmh8eJsIubjXuPWJEwkwaUzpaVmFaaB5u6nWef
+	DqCyolKj76WIpx6otKpZrBWt3q+osXSzPbUAtsm4j7pQvBK92L+UwVfDGMTaxp7IZcoo
+	y/TNu8+L0V7TItSU1gnXidkT2p7cJN2j3xvgi+Hx40zkneXj5xjoQOli6nvrg+yF7XLu
+	Xe838A/w1/Gf8lfzDvO79Fj09vWL9hf2o/co95z4D/iD+PH5Uvm0+hb6ePrK+xP7XPul
+	++78N/x2/Kb81f0F/TT9ZP2T/cP98/4i/k/+ev6l/tD++/8n/1L/ff+o/9T//wAAc2Yz
+	MgAAAAAAAQxCAAAF3v//8yYAAAeSAAD9kf//+6L///2jAAAD3AAAwGxtbW9kAAAAAAAA
+	BhAAAJxnAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+	</data>
+	<key>ReadOnly</key>
+	<string>NO</string>
+	<key>RowAlign</key>
+	<integer>1</integer>
+	<key>RowSpacing</key>
+	<real>36</real>
+	<key>SheetTitle</key>
+	<string>Canvas 1</string>
+	<key>SmartAlignmentGuidesActive</key>
+	<string>YES</string>
+	<key>SmartDistanceGuidesActive</key>
+	<string>YES</string>
+	<key>UniqueID</key>
+	<integer>1</integer>
+	<key>UseEntirePage</key>
+	<true/>
+	<key>VPages</key>
+	<integer>1</integer>
+	<key>WindowInfo</key>
+	<dict>
+		<key>CurrentSheet</key>
+		<integer>0</integer>
+		<key>ExpandedCanvases</key>
+		<array/>
+		<key>Frame</key>
+		<string>{{78, 0}, {591, 828}}</string>
+		<key>ListView</key>
+		<false/>
+		<key>OutlineWidth</key>
+		<integer>142</integer>
+		<key>RightSidebar</key>
+		<false/>
+		<key>Sidebar</key>
+		<true/>
+		<key>SidebarWidth</key>
+		<integer>138</integer>
+		<key>VisibleRegion</key>
+		<string>{{0.5, 1.5}, {219.5, 352}}</string>
+		<key>Zoom</key>
+		<real>2</real>
+		<key>ZoomValues</key>
+		<array>
+			<array>
+				<string>Canvas 1</string>
+				<real>2</real>
+				<real>1.5</real>
+			</array>
+		</array>
+	</dict>
+	<key>saveQuickLookFiles</key>
+	<string>YES</string>
+</dict>
+</plist>
diff --git a/jsf-api/doc/expert-draft-bg-non-blank.png b/jsf-api/doc/expert-draft-bg-non-blank.png
new file mode 100644
index 0000000..497f46c
Binary files /dev/null and b/jsf-api/doc/expert-draft-bg-non-blank.png differ
diff --git a/jsf-api/doc/expert-draft-bg.png b/jsf-api/doc/expert-draft-bg.png
new file mode 100644
index 0000000..497f46c
Binary files /dev/null and b/jsf-api/doc/expert-draft-bg.png differ
diff --git a/jsf-api/doc/facelet-taglib_1_0.dtd b/jsf-api/doc/facelet-taglib_1_0.dtd
index e32be2c..18e20b0 100644
--- a/jsf-api/doc/facelet-taglib_1_0.dtd
+++ b/jsf-api/doc/facelet-taglib_1_0.dtd
@@ -1,52 +1,59 @@
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
- Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
 
-  Contributor(s):
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
 
- This file incorporates work covered by the following copyright and
- permission notice:
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
 
- 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
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
-     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.
+    This file incorporates work covered by the following copyright and
+    permission notice:
+
+    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.
+
 -->
 
 <!ELEMENT facelet-taglib (library-class|(namespace,(tag|function)+))>
diff --git a/jsf-api/doc/focus-props.xml b/jsf-api/doc/focus-props.xml
index 75d9de2..4de06bb 100644
--- a/jsf-api/doc/focus-props.xml
+++ b/jsf-api/doc/focus-props.xml
@@ -1,41 +1,45 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
--->
 
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
 
 <!-- ========== Focus Properties =========================================== -->
 
@@ -63,7 +67,7 @@
         <property-name>accesskey</property-name>
         <property-class>java.lang.String</property-class>
         <property-extension>
-            <pass-through>true</pass-through>
+            <ignored-by-renderer>true</ignored-by-renderer>
         </property-extension>
     </property>
 
@@ -76,7 +80,7 @@
         <property-name>onblur</property-name>
         <property-class>java.lang.String</property-class>
         <property-extension>
-            <pass-through>true</pass-through>
+            <ignored-by-renderer>true</ignored-by-renderer>
             <behavior/>
         </property-extension>
     </property>
@@ -90,7 +94,7 @@
         <property-name>onfocus</property-name>
         <property-class>java.lang.String</property-class>
         <property-extension>
-            <pass-through>true</pass-through>
+            <ignored-by-renderer>true</ignored-by-renderer>
             <behavior/>
         </property-extension>
     </property>
@@ -106,7 +110,7 @@
         <property-name>tabindex</property-name>
         <property-class>java.lang.String</property-class>
         <property-extension>
-            <pass-through>true</pass-through>
+            <ignored-by-renderer>true</ignored-by-renderer>
         </property-extension>
     </property>
 </root>
diff --git a/jsf-api/doc/form-form-props.xml b/jsf-api/doc/form-form-props.xml
index 5e7b0b7..2ac8616 100644
--- a/jsf-api/doc/form-form-props.xml
+++ b/jsf-api/doc/form-form-props.xml
@@ -1,41 +1,45 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
--->
 
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
 
 <!-- ========== Form+Form Properties ======================================= -->
 
@@ -63,7 +67,7 @@
         <property-name>accept</property-name>
         <property-class>java.lang.String</property-class>
         <property-extension>
-            <pass-through>true</pass-through>
+            <ignored-by-renderer>true</ignored-by-renderer>
         </property-extension>
     </property>
 
@@ -91,7 +95,7 @@
         <property-class>java.lang.String</property-class>
         <property-extension>
             <default-value>"application/x-www-form-urlencoded"</default-value>
-            <pass-through>true</pass-through>
+            <ignored-by-renderer>true</ignored-by-renderer>
         </property-extension>
     </property>
 
@@ -104,7 +108,7 @@
         <property-name>onreset</property-name>
         <property-class>java.lang.String</property-class>
         <property-extension>
-            <pass-through>true</pass-through>
+            <ignored-by-renderer>true</ignored-by-renderer>
         </property-extension>
     </property>
 
@@ -117,7 +121,7 @@
         <property-name>onsubmit</property-name>
         <property-class>java.lang.String</property-class>
         <property-extension>
-            <pass-through>true</pass-through>
+            <ignored-by-renderer>true</ignored-by-renderer>
         </property-extension>
     </property>
 
@@ -132,7 +136,7 @@
         <property-name>target</property-name>
         <property-class>java.lang.String</property-class>
         <property-extension>
-            <pass-through>true</pass-through>
+            <ignored-by-renderer>true</ignored-by-renderer>
         </property-extension>
     </property>
 </root>
diff --git a/jsf-api/doc/get-link-props.xml b/jsf-api/doc/get-link-props.xml
new file mode 100644
index 0000000..44c8d2b
--- /dev/null
+++ b/jsf-api/doc/get-link-props.xml
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!-- ========== UICommand Properties ======================================= -->
+
+
+<!-- template
+
+      <property>
+        <description>
+        </description>
+        <display-name></display-name>
+        <icon></icon>
+        <property-name></property-name>
+        <property-class>java.lang.String</property-class>
+      </property>
+
+-->
+<root xmlns:xi="http://www.w3.org/2001/XInclude">
+
+    <property>
+        <description><![CDATA[<p class="changed_added_2_2">Disable appending the <code>ClientWindow</code> on the rendering of this element.</p>
+        ]]>
+        </description>
+        <display-name>Disable ClientWindow on rendered OutcomeTarget</display-name>
+        <icon></icon>
+        <property-name>disableClientWindow</property-name>
+        <property-class>java.lang.Boolean</property-class>
+        <property-extension>
+          <default-value>false</default-value>
+        </property-extension>
+
+    </property>
+
+   
+</root>
+
diff --git a/jsf-api/doc/graphic-image-props.xml b/jsf-api/doc/graphic-image-props.xml
index 88c1d42..d4f25aa 100644
--- a/jsf-api/doc/graphic-image-props.xml
+++ b/jsf-api/doc/graphic-image-props.xml
@@ -1,41 +1,45 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
--->
 
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
 
 <!-- ========== Graphic+Image Properties =================================== -->
 
@@ -63,7 +67,7 @@
         <property-name>alt</property-name>
         <property-class>java.lang.String</property-class>
         <property-extension>
-            <pass-through>true</pass-through>
+            <ignored-by-renderer>true</ignored-by-renderer>
         </property-extension>
     </property>
 
@@ -76,7 +80,7 @@
         <property-name>height</property-name>
         <property-class>java.lang.String</property-class>
         <property-extension>
-            <pass-through>true</pass-through>
+            <ignored-by-renderer>true</ignored-by-renderer>
         </property-extension>
     </property>
 
@@ -93,7 +97,7 @@
         <property-name>ismap</property-name>
         <property-class>boolean</property-class>
         <property-extension>
-            <pass-through>false</pass-through>
+            <ignored-by-renderer>false</ignored-by-renderer>
         </property-extension>
     </property>
 
@@ -107,7 +111,7 @@
         <property-name>longdesc</property-name>
         <property-class>java.lang.String</property-class>
         <property-extension>
-            <pass-through>true</pass-through>
+            <ignored-by-renderer>true</ignored-by-renderer>
         </property-extension>
     </property>
 
@@ -121,7 +125,7 @@
         <property-name>usemap</property-name>
         <property-class>java.lang.String</property-class>
         <property-extension>
-            <pass-through>true</pass-through>
+            <ignored-by-renderer>true</ignored-by-renderer>
         </property-extension>
     </property>
 
@@ -134,7 +138,7 @@
         <property-name>width</property-name>
         <property-class>java.lang.String</property-class>
         <property-extension>
-            <pass-through>true</pass-through>
+            <ignored-by-renderer>true</ignored-by-renderer>
         </property-extension>
     </property>
 </root>
diff --git a/jsf-api/doc/i18n-props.xml b/jsf-api/doc/i18n-props.xml
index 55f4237..655278e 100644
--- a/jsf-api/doc/i18n-props.xml
+++ b/jsf-api/doc/i18n-props.xml
@@ -1,41 +1,45 @@
 <?xml version='1.0' encoding='UTF-8'?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
--->
 
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
 
 <!-- ========== I18N Properties ============================================ -->
 
@@ -57,13 +61,15 @@
         <description>
           Direction indication for text that does not inherit directionality.
           Valid values are "LTR" (left-to-right) and "RTL" (right-to-left).
+          These attributes are case sensitive when rendering to XHTML, so
+          care must be taken to have the correct case.
         </description>
         <display-name>Direction</display-name>
         <icon></icon>
         <property-name>dir</property-name>
         <property-class>java.lang.String</property-class>
         <property-extension>
-            <pass-through>true</pass-through>
+            <ignored-by-renderer>true</ignored-by-renderer>
         </property-extension>
     </property>
 
@@ -77,7 +83,7 @@
         <property-name>lang</property-name>
         <property-class>java.lang.String</property-class>
         <property-extension>
-            <pass-through>true</pass-through>
+            <ignored-by-renderer>true</ignored-by-renderer>
         </property-extension>
     </property>
 </root>
diff --git a/jsf-api/doc/id-props.xml b/jsf-api/doc/id-props.xml
new file mode 100644
index 0000000..528f4bd
--- /dev/null
+++ b/jsf-api/doc/id-props.xml
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!-- ========== UIComponent Properties ===================================== -->
+
+
+<!-- template
+
+      <property>
+        <description>
+        </description>
+        <display-name></display-name>
+        <icon></icon>
+        <property-name></property-name>
+        <property-class>java.lang.String</property-class>
+      </property>
+
+-->
+<root xmlns:xi="http://www.w3.org/2001/XInclude">
+    <property>
+        <description><![CDATA[ <p class="changed_added_2_2">The
+        component identifier for this component.  This value must be
+        unique within the closest parent component that is a naming
+        container.</p> ]]></description>
+        <display-name>Component Identifier</display-name>
+        <icon></icon>
+        <property-name>id</property-name>
+        <property-class>java.lang.String</property-class>
+    </property>
+</root>
diff --git a/jsf-api/doc/image-button-props.xml b/jsf-api/doc/image-button-props.xml
index 84dd323..95f4bdc 100644
--- a/jsf-api/doc/image-button-props.xml
+++ b/jsf-api/doc/image-button-props.xml
@@ -1,41 +1,45 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
--->
 
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
 
 <!-- ========== Command+Button Properties ================================== -->
 
@@ -63,7 +67,7 @@
       <property-name>alt</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
 
diff --git a/jsf-api/doc/input-props-nochange.xml b/jsf-api/doc/input-props-nochange.xml
index d91c1df..20ee2b6 100644
--- a/jsf-api/doc/input-props-nochange.xml
+++ b/jsf-api/doc/input-props-nochange.xml
@@ -1,41 +1,45 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
--->
 
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
 
 <!-- ========== Input Properties =========================================== -->
 
@@ -65,7 +69,7 @@
         <property-name>disabled</property-name>
         <property-class>boolean</property-class>
         <property-extension>
-            <pass-through>false</pass-through>
+            <ignored-by-renderer>false</ignored-by-renderer>
         </property-extension>
     </property>
 
@@ -79,7 +83,7 @@
         <property-name>onselect</property-name>
         <property-class>java.lang.String</property-class>
         <property-extension>
-            <pass-through>true</pass-through>
+            <ignored-by-renderer>true</ignored-by-renderer>
             <behavior/>
         </property-extension>
     </property>
@@ -97,7 +101,7 @@
         <property-name>readonly</property-name>
         <property-class>boolean</property-class>
         <property-extension>
-            <pass-through>false</pass-through>
+            <ignored-by-renderer>false</ignored-by-renderer>
         </property-extension>
     </property>
 
diff --git a/jsf-api/doc/input-props.xml b/jsf-api/doc/input-props.xml
index 92f6a23..f5e3a2c 100644
--- a/jsf-api/doc/input-props.xml
+++ b/jsf-api/doc/input-props.xml
@@ -1,41 +1,45 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
--->
 
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
 
 <!-- ========== Input Properties =========================================== -->
 
@@ -65,7 +69,7 @@
         <property-name>disabled</property-name>
         <property-class>boolean</property-class>
         <property-extension>
-            <pass-through>false</pass-through>
+            <ignored-by-renderer>false</ignored-by-renderer>
         </property-extension>
     </property>
 
@@ -79,7 +83,7 @@
         <property-name>onchange</property-name>
         <property-class>java.lang.String</property-class>
         <property-extension>
-            <pass-through>false</pass-through>
+            <ignored-by-renderer>false</ignored-by-renderer>
             <behavior/>
             <behavior>valueChange</behavior>
             <default-behavior>true</default-behavior>
@@ -96,7 +100,7 @@
         <property-name>onselect</property-name>
         <property-class>java.lang.String</property-class>
         <property-extension>
-            <pass-through>true</pass-through>
+            <ignored-by-renderer>true</ignored-by-renderer>
             <behavior/>
         </property-extension>
     </property>
@@ -114,7 +118,7 @@
         <property-name>readonly</property-name>
         <property-class>boolean</property-class>
         <property-extension>
-            <pass-through>false</pass-through>
+            <ignored-by-renderer>false</ignored-by-renderer>
         </property-extension>
     </property>
 
diff --git a/jsf-api/doc/input-secret-props.xml b/jsf-api/doc/input-secret-props.xml
index be1a515..95eeaf5 100644
--- a/jsf-api/doc/input-secret-props.xml
+++ b/jsf-api/doc/input-secret-props.xml
@@ -1,41 +1,45 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
--->
 
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
 
 <!-- ========== Input+Secret Properties ==================================== -->
 
diff --git a/jsf-api/doc/input-textarea-props.xml b/jsf-api/doc/input-textarea-props.xml
index 0a4a27f..925d4e4 100644
--- a/jsf-api/doc/input-textarea-props.xml
+++ b/jsf-api/doc/input-textarea-props.xml
@@ -1,41 +1,45 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
--->
 
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
 
 <!-- ========== Input+Textarea Properties ================================== -->
 
@@ -62,7 +66,7 @@
         <property-name>cols</property-name>
         <property-class>int</property-class>
         <property-extension>
-            <pass-through>true</pass-through>
+            <ignored-by-renderer>true</ignored-by-renderer>
         </property-extension>
     </property>
 
@@ -75,7 +79,7 @@
         <property-name>rows</property-name>
         <property-class>int</property-class>
         <property-extension>
-            <pass-through>true</pass-through>            
+            <ignored-by-renderer>true</ignored-by-renderer>            
             <value-expression-enabled>true</value-expression-enabled>
         </property-extension>
     </property>
diff --git a/jsf-api/doc/javaee_5.xsd b/jsf-api/doc/javaee_5.xsd
index 205d945..af306f3 100644
--- a/jsf-api/doc/javaee_5.xsd
+++ b/jsf-api/doc/javaee_5.xsd
@@ -1,4 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
 <xsd:schema
      targetNamespace="http://java.sun.com/xml/ns/javaee"
      xmlns:javaee="http://java.sun.com/xml/ns/javaee"
@@ -15,43 +57,43 @@
   <xsd:annotation>
     <xsd:documentation>
 
-      DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-      
-      Copyright 2003-2009 Sun Microsystems, Inc. All rights reserved.
-      
-      The contents of this file are subject to the terms of either the
-      GNU General Public License Version 2 only ("GPL") or the Common
-      Development and Distribution License("CDDL") (collectively, the
-      "License").  You may not use this file except in compliance with
-      the License. You can obtain a copy of the License at
-      https://glassfish.dev.java.net/public/CDDL+GPL.html or
-      glassfish/bootstrap/legal/LICENSE.txt.  See the License for the
-      specific language governing permissions and limitations under the
-      License.
-      
-      When distributing the software, include this License Header
-      Notice in each file and include the License file at
-      glassfish/bootstrap/legal/LICENSE.txt.  Sun designates this
-      particular file as subject to the "Classpath" exception as
-      provided by Sun in the GPL Version 2 section of the License file
-      that accompanied this code.  If applicable, add the following
-      below the License Header, with the fields enclosed by brackets []
-      replaced by your own identifying information:
-      "Portions Copyrighted [year] [name of copyright owner]"
-      
-      Contributor(s):
-      
-      If you wish your version of this file to be governed by only the
-      CDDL or only the GPL Version 2, indicate your decision by adding
-      "[Contributor] elects to include this software in this
-      distribution under the [CDDL or GPL Version 2] license."  If you
-      don't indicate a single choice of license, a recipient has the
-      option to distribute your version of this file under either the
-      CDDL, the GPL Version 2 or to extend the choice of license to its
-      licensees as provided above.  However, if you add GPL Version 2
-      code and therefore, elected the GPL Version 2 license, then the
-      option applies only if the new code is made subject to such
-      option by the copyright holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
       
     </xsd:documentation>
   </xsd:annotation>
diff --git a/jsf-api/doc/javaee_6.xsd b/jsf-api/doc/javaee_6.xsd
new file mode 100644
index 0000000..f165d18
--- /dev/null
+++ b/jsf-api/doc/javaee_6.xsd
@@ -0,0 +1,2422 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsd:schema targetNamespace="http://java.sun.com/xml/ns/javaee"
+            xmlns:javaee="http://java.sun.com/xml/ns/javaee"
+            xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+            elementFormDefault="qualified"
+            attributeFormDefault="unqualified"
+            version="6">
+  <xsd:annotation>
+    <xsd:documentation>
+
+      DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+      
+      Copyright 2003-2009 Sun Microsystems, Inc. All rights reserved.
+      
+      The contents of this file are subject to the terms of either the
+      GNU General Public License Version 2 only ("GPL") or the Common
+      Development and Distribution License("CDDL") (collectively, the
+      "License").  You may not use this file except in compliance with
+      the License. You can obtain a copy of the License at
+      https://glassfish.dev.java.net/public/CDDL+GPL.html or
+      glassfish/bootstrap/legal/LICENSE.txt.  See the License for the
+      specific language governing permissions and limitations under the
+      License.
+      
+      When distributing the software, include this License Header
+      Notice in each file and include the License file at
+      glassfish/bootstrap/legal/LICENSE.txt.  Sun designates this
+      particular file as subject to the "Classpath" exception as
+      provided by Sun in the GPL Version 2 section of the License file
+      that accompanied this code.  If applicable, add the following
+      below the License Header, with the fields enclosed by brackets []
+      replaced by your own identifying information:
+      "Portions Copyrighted [year] [name of copyright owner]"
+      
+      Contributor(s):
+      
+      If you wish your version of this file to be governed by only the
+      CDDL or only the GPL Version 2, indicate your decision by adding
+      "[Contributor] elects to include this software in this
+      distribution under the [CDDL or GPL Version 2] license."  If you
+      don't indicate a single choice of license, a recipient has the
+      option to distribute your version of this file under either the
+      CDDL, the GPL Version 2 or to extend the choice of license to its
+      licensees as provided above.  However, if you add GPL Version 2
+      code and therefore, elected the GPL Version 2 license, then the
+      option applies only if the new code is made subject to such
+      option by the copyright holder.
+      
+    </xsd:documentation>
+  </xsd:annotation>
+
+  <xsd:annotation>
+    <xsd:documentation>
+
+      The following definitions that appear in the common
+      shareable schema(s) of Java EE deployment descriptors should be
+      interpreted with respect to the context they are included:
+      
+      Deployment Component may indicate one of the following:
+      java ee application;
+      application client;
+      web application;
+      enterprise bean;
+      resource adapter; 
+      
+      Deployment File may indicate one of the following:
+      ear file;
+      war file;
+      jar file;
+      rar file;
+      
+    </xsd:documentation>
+  </xsd:annotation>
+
+  <xsd:import namespace="http://www.w3.org/XML/1998/namespace"
+              schemaLocation="http://www.w3.org/2001/xml.xsd"/>
+
+  <xsd:include schemaLocation="javaee_web_services_client_1_3.xsd"/>
+
+  <xsd:group name="descriptionGroup">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        This group keeps the usage of the contained description related
+        elements consistent across Java EE deployment descriptors.
+        
+        All elements may occur multiple times with different languages,
+        to support localization of the content.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="description"
+                   type="javaee:descriptionType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="display-name"
+                   type="javaee:display-nameType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="icon"
+                   type="javaee:iconType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+    </xsd:sequence>
+  </xsd:group>
+
+  <xsd:group name="jndiEnvironmentRefsGroup">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        This group keeps the usage of the contained JNDI environment
+        reference elements consistent across Java EE deployment descriptors.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="env-entry"
+                   type="javaee:env-entryType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="ejb-ref"
+                   type="javaee:ejb-refType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="ejb-local-ref"
+                   type="javaee:ejb-local-refType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:group ref="javaee:service-refGroup"/>
+      <xsd:element name="resource-ref"
+                   type="javaee:resource-refType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="resource-env-ref"
+                   type="javaee:resource-env-refType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="message-destination-ref"
+                   type="javaee:message-destination-refType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="persistence-context-ref"
+                   type="javaee:persistence-context-refType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="persistence-unit-ref"
+                   type="javaee:persistence-unit-refType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="post-construct"
+                   type="javaee:lifecycle-callbackType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="pre-destroy"
+                   type="javaee:lifecycle-callbackType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="data-source"
+                   type="javaee:data-sourceType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+    </xsd:sequence>
+  </xsd:group>
+
+  <xsd:group name="resourceGroup">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        This group collects elements that are common to most
+        JNDI resource elements.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:group ref="javaee:resourceBaseGroup"/>
+      <xsd:element name="lookup-name"
+                   type="javaee:xsdStringType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The JNDI name to be looked up to resolve a resource reference.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+  </xsd:group>
+
+  <xsd:group name="resourceBaseGroup">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        This group collects elements that are common to all the
+        JNDI resource elements. It does not include the lookup-name
+        element, that is only applicable to some resource elements.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="mapped-name"
+                   type="javaee:xsdStringType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            A product specific name that this resource should be
+            mapped to.  The name of this resource, as defined by the
+            resource's name element or defaulted, is a name that is
+            local to the application component using the resource.
+            (It's a name in the JNDI java:comp/env namespace.)  Many
+            application servers provide a way to map these local
+            names to names of resources known to the application
+            server.  This mapped name is often a global JNDI name,
+            but may be a name of any form.
+            
+            Application servers are not required to support any
+            particular form or type of mapped name, nor the ability
+            to use mapped names.  The mapped name is
+            product-dependent and often installation-dependent.  No
+            use of a mapped name is portable.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="injection-target"
+                   type="javaee:injection-targetType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+    </xsd:sequence>
+  </xsd:group>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="data-sourceType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        Configuration of a DataSource.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="description"
+                   type="javaee:descriptionType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Description of this DataSource.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="name"
+                   type="javaee:jndi-nameType">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The name element specifies the JNDI name of the
+            data source being defined.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="class-name"
+                   type="javaee:fully-qualified-classType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            DataSource, XADataSource or ConnectionPoolDataSource
+            implementation class.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="server-name"
+                   type="javaee:string"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Database server name.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="port-number"
+                   type="javaee:xsdIntegerType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Port number where a server is listening for requests.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="database-name"
+                   type="javaee:string"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Name of a database on a server.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="url"
+                   type="javaee:jdbc-urlType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+            <![CDATA[[
+            A JDBC URL. If the <code>url</code> property is specified
+            along with other standard <code>DataSource</code> properties
+            such as <code>serverName</code>, <code>databaseName</code>
+            and <code>portNumber</code>, the more specific properties will
+            take precedence and <code>url</code> will be ignored.
+            
+            ]]>
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="user"
+                   type="javaee:string"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            User name to use for connection authentication.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="password"
+                   type="javaee:string"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Password to use for connection authentication.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="property"
+                   type="javaee:propertyType"
+                   minOccurs="0"
+                   maxOccurs="unbounded">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            JDBC DataSource property.  This may be a vendor-specific
+            property or a less commonly used DataSource property.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="login-timeout"
+                   type="javaee:xsdIntegerType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Sets the maximum time in seconds that this data source
+            will wait while attempting to connect to a database.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="transactional"
+                   type="javaee:xsdBooleanType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Set to false if connections should not participate in
+            transactions.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="isolation-level"
+                   type="javaee:isolation-levelType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Isolation level for connections.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="initial-pool-size"
+                   type="javaee:xsdIntegerType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Number of connections that should be created when a
+            connection pool is initialized.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="max-pool-size"
+                   type="javaee:xsdIntegerType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Maximum number of connections that should be concurrently
+            allocated for a connection pool.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="min-pool-size"
+                   type="javaee:xsdIntegerType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Minimum number of connections that should be concurrently
+            allocated for a connection pool.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="max-idle-time"
+                   type="javaee:xsdIntegerType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The number of seconds that a physical connection should
+            remain unused in the pool before the connection is
+            closed for a connection pool.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="max-statements"
+                   type="javaee:xsdIntegerType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The total number of statements that a connection pool
+            should keep open.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="descriptionType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The description type is used by a description element to
+        provide text describing the parent element.  The elements
+        that use this type should include any information that the
+        Deployment Component's Deployment File file producer wants
+        to provide to the consumer of the Deployment Component's
+        Deployment File (i.e., to the Deployer). Typically, the
+        tools used by such a Deployment File consumer will display
+        the description when processing the parent element that
+        contains the description.
+        
+        The lang attribute defines the language that the
+        description is provided in. The default value is "en" (English). 
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:extension base="javaee:xsdStringType">
+        <xsd:attribute ref="xml:lang"/>
+      </xsd:extension>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+  <xsd:simpleType name="dewey-versionType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        This type defines a dewey decimal that is used
+        to describe versions of documents. 
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:token">
+      <xsd:pattern value="\.?[0-9]+(\.[0-9]+)*"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="display-nameType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[[
+        The display-name type contains a short name that is intended
+        to be displayed by tools. It is used by display-name
+        elements.  The display name need not be unique.
+        
+        Example: 
+        
+        ...
+        <display-name xml:lang="en">
+        Employee Self Service
+        </display-name>
+        
+        The value of the xml:lang attribute is "en" (English) by default. 
+        
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:extension base="javaee:string">
+        <xsd:attribute ref="xml:lang"/>
+      </xsd:extension>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="ejb-linkType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[[
+        The ejb-linkType is used by ejb-link
+        elements in the ejb-ref or ejb-local-ref elements to specify
+        that an EJB reference is linked to enterprise bean.
+        
+        The value of the ejb-link element must be the ejb-name of an
+        enterprise bean in the same ejb-jar file or in another ejb-jar
+        file in the same Java EE application unit. 
+        
+        Alternatively, the name in the ejb-link element may be
+        composed of a path name specifying the ejb-jar containing the
+        referenced enterprise bean with the ejb-name of the target
+        bean appended and separated from the path name by "#".  The
+        path name is relative to the Deployment File containing
+        Deployment Component that is referencing the enterprise
+        bean.  This allows multiple enterprise beans with the same
+        ejb-name to be uniquely identified.
+        
+        Examples:
+        
+        <ejb-link>EmployeeRecord</ejb-link>
+        
+        <ejb-link>../products/product.jar#ProductEJB</ejb-link>
+        
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="javaee:string"/>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="ejb-local-refType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The ejb-local-refType is used by ejb-local-ref elements for
+        the declaration of a reference to an enterprise bean's local
+        home or to the local business interface of a 3.0 bean.
+        The declaration consists of:
+        
+        - an optional description
+        - the EJB reference name used in the code of the Deployment 
+        Component that's referencing the enterprise bean.
+        - the optional expected type of the referenced enterprise bean
+        - the optional expected local interface of the referenced 
+        enterprise bean or the local business interface of the 
+        referenced enterprise bean.
+        - the optional expected local home interface of the referenced 
+        enterprise bean. Not applicable if this ejb-local-ref refers
+        to the local business interface of a 3.0 bean.
+        - optional ejb-link information, used to specify the 
+        referenced enterprise bean
+        - optional elements to define injection of the named enterprise  
+        bean into a component field or property.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="description"
+                   type="javaee:descriptionType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="ejb-ref-name"
+                   type="javaee:ejb-ref-nameType"/>
+      <xsd:element name="ejb-ref-type"
+                   type="javaee:ejb-ref-typeType"
+                   minOccurs="0"/>
+      <xsd:element name="local-home"
+                   type="javaee:local-homeType"
+                   minOccurs="0"/>
+      <xsd:element name="local"
+                   type="javaee:localType"
+                   minOccurs="0"/>
+      <xsd:element name="ejb-link"
+                   type="javaee:ejb-linkType"
+                   minOccurs="0"/>
+      <xsd:group ref="javaee:resourceGroup"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="ejb-ref-nameType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[[
+        The ejb-ref-name element contains the name of an EJB
+        reference. The EJB reference is an entry in the
+        Deployment Component's environment and is relative to the
+        java:comp/env context.  The name must be unique within the
+        Deployment Component.
+        
+        It is recommended that name is prefixed with "ejb/".
+        
+        Example:
+        
+        <ejb-ref-name>ejb/Payroll</ejb-ref-name>
+        
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="javaee:jndi-nameType"/>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="ejb-refType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The ejb-refType is used by ejb-ref elements for the
+        declaration of a reference to an enterprise bean's home or
+        to the remote business interface of a 3.0 bean.  
+        The declaration consists of:
+        
+        - an optional description
+        - the EJB reference name used in the code of
+        the Deployment Component that's referencing the enterprise
+        bean. 
+        - the optional expected type of the referenced enterprise bean
+        - the optional remote interface of the referenced enterprise bean
+        or the remote business interface of the referenced enterprise 
+        bean
+        - the optional expected home interface of the referenced 
+        enterprise bean.  Not applicable if this ejb-ref
+        refers to the remote business interface of a 3.0 bean.
+        - optional ejb-link information, used to specify the
+        referenced enterprise bean
+        - optional elements to define injection of the named enterprise
+        bean into a component field or property
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="description"
+                   type="javaee:descriptionType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="ejb-ref-name"
+                   type="javaee:ejb-ref-nameType"/>
+      <xsd:element name="ejb-ref-type"
+                   type="javaee:ejb-ref-typeType"
+                   minOccurs="0"/>
+      <xsd:element name="home"
+                   type="javaee:homeType"
+                   minOccurs="0"/>
+      <xsd:element name="remote"
+                   type="javaee:remoteType"
+                   minOccurs="0"/>
+      <xsd:element name="ejb-link"
+                   type="javaee:ejb-linkType"
+                   minOccurs="0"/>
+      <xsd:group ref="javaee:resourceGroup"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="ejb-ref-typeType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The ejb-ref-typeType contains the expected type of the
+        referenced enterprise bean.
+        
+        The ejb-ref-type designates a value
+        that must be one of the following:
+        
+        Entity
+        Session
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="javaee:string">
+        <xsd:enumeration value="Entity"/>
+        <xsd:enumeration value="Session"/>
+      </xsd:restriction>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="emptyType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        This type is used to designate an empty
+        element when used. 
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="env-entryType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The env-entryType is used to declare an application's
+        environment entry. The declaration consists of an optional
+        description, the name of the environment entry, a type
+        (optional if the value is injected, otherwise required), and
+        an optional value.
+        
+        It also includes optional elements to define injection of
+        the named resource into fields or JavaBeans properties.
+        
+        If a value is not specified and injection is requested,
+        no injection will occur and no entry of the specified name
+        will be created.  This allows an initial value to be
+        specified in the source code without being incorrectly
+        changed when no override has been specified.
+        
+        If a value is not specified and no injection is requested,
+        a value must be supplied during deployment. 
+        
+        This type is used by env-entry elements.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="description"
+                   type="javaee:descriptionType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="env-entry-name"
+                   type="javaee:jndi-nameType">
+        <xsd:annotation>
+          <xsd:documentation>
+            <![CDATA[[
+            The env-entry-name element contains the name of a
+            Deployment Component's environment entry.  The name
+            is a JNDI name relative to the java:comp/env
+            context.  The name must be unique within a 
+            Deployment Component. The uniqueness
+            constraints must be defined within the declared
+            context.
+            
+            Example:
+            
+            <env-entry-name>minAmount</env-entry-name>
+            
+            ]]>
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="env-entry-type"
+                   type="javaee:env-entry-type-valuesType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+            <![CDATA[[
+            The env-entry-type element contains the Java language
+            type of the environment entry.  If an injection target
+            is specified for the environment entry, the type may
+            be omitted, or must match the type of the injection
+            target.  If no injection target is specified, the type
+            is required.
+            
+            Example:
+            
+            <env-entry-type>java.lang.Integer</env-entry-type>
+            
+            ]]>
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="env-entry-value"
+                   type="javaee:xsdStringType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+            <![CDATA[[
+            The env-entry-value designates the value of a
+            Deployment Component's environment entry. The value
+            must be a String that is valid for the
+            constructor of the specified type that takes a
+            single String parameter, or for java.lang.Character,
+            a single character.
+            
+            Example:
+            
+            <env-entry-value>100.00</env-entry-value>
+            
+            ]]>
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:group ref="javaee:resourceGroup"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="env-entry-type-valuesType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[[
+        This type contains the fully-qualified Java type of the
+        environment entry value that is expected by the
+        application's code.
+        
+        The following are the legal values of env-entry-type-valuesType:
+        
+        java.lang.Boolean
+        java.lang.Byte
+        java.lang.Character
+        java.lang.String
+        java.lang.Short
+        java.lang.Integer
+        java.lang.Long
+        java.lang.Float
+        java.lang.Double
+        		  java.lang.Class
+        		  any enumeration type (i.e. a subclass of java.lang.Enum)
+        
+        Examples:
+        
+        <env-entry-type>java.lang.Boolean</env-entry-type>
+        <env-entry-type>java.lang.Class</env-entry-type>
+        <env-entry-type>com.example.Color</env-entry-type>
+        
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="javaee:fully-qualified-classType"/>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="fully-qualified-classType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The elements that use this type designate the name of a
+        Java class or interface.  The name is in the form of a
+        "binary name", as defined in the JLS.  This is the form
+        of name used in Class.forName().  Tools that need the
+        canonical name (the name used in source code) will need
+        to convert this binary name to the canonical name.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="javaee:string"/>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="generic-booleanType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        This type defines four different values which can designate
+        boolean values. This includes values yes and no which are 
+        not designated by xsd:boolean
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="javaee:string">
+        <xsd:enumeration value="true"/>
+        <xsd:enumeration value="false"/>
+        <xsd:enumeration value="yes"/>
+        <xsd:enumeration value="no"/>
+      </xsd:restriction>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="iconType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The icon type contains small-icon and large-icon elements
+        that specify the file names for small and large GIF, JPEG,
+        or PNG icon images used to represent the parent element in a
+        GUI tool. 
+        
+        The xml:lang attribute defines the language that the
+        icon file names are provided in. Its value is "en" (English)
+        by default. 
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="small-icon"
+                   type="javaee:pathType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+            <![CDATA[[
+            The small-icon element contains the name of a file
+            containing a small (16 x 16) icon image. The file
+            name is a relative path within the Deployment
+            Component's Deployment File.
+            
+            The image may be in the GIF, JPEG, or PNG format.
+            The icon can be used by tools.
+            
+            Example:
+            
+            <small-icon>employee-service-icon16x16.jpg</small-icon>
+            
+            ]]>
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="large-icon"
+                   type="javaee:pathType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+            <![CDATA[[
+            The large-icon element contains the name of a file
+            containing a large
+            (32 x 32) icon image. The file name is a relative 
+            path within the Deployment Component's Deployment
+            File.
+            
+            The image may be in the GIF, JPEG, or PNG format.
+            The icon can be used by tools.
+            
+            Example:
+            
+            <large-icon>employee-service-icon32x32.jpg</large-icon>
+            
+            ]]>
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+    <xsd:attribute ref="xml:lang"/>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="injection-targetType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        An injection target specifies a class and a name within
+        that class into which a resource should be injected.
+        
+        The injection target class specifies the fully qualified
+        class name that is the target of the injection.  The
+        Java EE specifications describe which classes can be an
+        injection target.
+        
+        The injection target name specifies the target within
+        the specified class.  The target is first looked for as a
+        JavaBeans property name.  If not found, the target is
+        looked for as a field name.
+        
+        The specified resource will be injected into the target
+        during initialization of the class by either calling the
+        set method for the target property or by setting a value
+        into the named field.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="injection-target-class"
+                   type="javaee:fully-qualified-classType"/>
+      <xsd:element name="injection-target-name"
+                   type="javaee:java-identifierType"/>
+    </xsd:sequence>
+  </xsd:complexType>
+
+  <xsd:simpleType name="isolation-levelType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        	The following transaction isolation levels are allowed
+        	(see documentation for the java.sql.Connection interface):
+        TRANSACTION_READ_UNCOMMITTED
+        TRANSACTION_READ_COMMITTED
+        TRANSACTION_REPEATABLE_READ
+        TRANSACTION_SERIALIZABLE
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:string">
+      <xsd:enumeration value="TRANSACTION_READ_UNCOMMITTED"/>
+      <xsd:enumeration value="TRANSACTION_READ_COMMITTED"/>
+      <xsd:enumeration value="TRANSACTION_REPEATABLE_READ"/>
+      <xsd:enumeration value="TRANSACTION_SERIALIZABLE"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="java-identifierType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The java-identifierType defines a Java identifier.
+        The users of this type should further verify that 
+        the content does not contain Java reserved keywords.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="javaee:string">
+        <xsd:pattern value="($|_|\p{L})(\p{L}|\p{Nd}|_|$)*"/>
+      </xsd:restriction>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="java-typeType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        This is a generic type that designates a Java primitive
+        type or a fully qualified name of a Java interface/type,
+        or an array of such types.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="javaee:string">
+        <xsd:pattern value="[^\p{Z}]*"/>
+      </xsd:restriction>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="jdbc-urlType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[[
+        The jdbc-urlType contains the url pattern of the mapping.
+        It must follow the rules specified in Section 9.3 of the
+        JDBC Specification where the format is:
+        
+        jdbc:<subprotocol>:<subname>
+        
+        Example:
+        
+        <url>jdbc:mysql://localhost:3307/testdb</url>
+        
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="javaee:string">
+        <xsd:pattern value="jdbc:(.*):(.*)"/>
+      </xsd:restriction>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="jndi-nameType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The jndi-nameType type designates a JNDI name in the
+        Deployment Component's environment and is relative to the
+        java:comp/env context.  A JNDI name must be unique within the
+        Deployment Component.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="javaee:string"/>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="homeType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[[
+        The homeType defines the fully-qualified name of
+        an enterprise bean's home interface. 
+        
+        Example:
+        
+        <home>com.aardvark.payroll.PayrollHome</home>
+        
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="javaee:fully-qualified-classType"/>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="lifecycle-callbackType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The lifecycle-callback type specifies a method on a
+        class to be called when a lifecycle event occurs.
+        Note that each class may have only one lifecycle callback
+        method for any given event and that the method may not
+        be overloaded.
+        
+        If the lifefycle-callback-class element is missing then
+        the class defining the callback is assumed to be the
+        component class in scope at the place in the descriptor
+        in which the callback definition appears.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="lifecycle-callback-class"
+                   type="javaee:fully-qualified-classType"
+                   minOccurs="0"/>
+      <xsd:element name="lifecycle-callback-method"
+                   type="javaee:java-identifierType"/>
+    </xsd:sequence>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="listenerType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The listenerType indicates the deployment properties for a web
+        application listener bean.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:group ref="javaee:descriptionGroup"/>
+      <xsd:element name="listener-class"
+                   type="javaee:fully-qualified-classType">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The listener-class element declares a class in the
+            application must be registered as a web
+            application listener bean. The value is the fully
+            qualified classname of the listener class.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="localType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The localType defines the fully-qualified name of an
+        enterprise bean's local interface.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="javaee:fully-qualified-classType"/>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="local-homeType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The local-homeType defines the fully-qualified
+        name of an enterprise bean's local home interface.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="javaee:fully-qualified-classType"/>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="param-valueType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        This type is a general type that can be used to declare
+        parameter/value lists.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="description"
+                   type="javaee:descriptionType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="param-name"
+                   type="javaee:string">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The param-name element contains the name of a
+            parameter.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="param-value"
+                   type="javaee:xsdStringType">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The param-value element contains the value of a
+            parameter.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="pathType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The elements that use this type designate either a relative
+        path or an absolute path starting with a "/".
+        
+        In elements that specify a pathname to a file within the
+        same Deployment File, relative filenames (i.e., those not
+        starting with "/") are considered relative to the root of
+        the Deployment File's namespace.  Absolute filenames (i.e.,
+        those starting with "/") also specify names in the root of
+        the Deployment File's namespace.  In general, relative names
+        are preferred.  The exception is .war files where absolute
+        names are preferred for consistency with the Servlet API.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="javaee:string"/>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="persistence-context-refType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[[
+        The persistence-context-ref element contains a declaration
+        of Deployment Component's reference to a persistence context
+        associated within a Deployment Component's
+        environment. It consists of:
+        
+        - an optional description
+        - the persistence context reference name
+        - an optional persistence unit name.  If not specified,
+        the default persistence unit is assumed.
+        - an optional specification as to whether
+        the persistence context type is Transaction or
+        Extended.  If not specified, Transaction is assumed.
+        - an optional list of persistence properties
+        - optional injection targets
+        
+        Examples:
+        
+        <persistence-context-ref>
+        <persistence-context-ref-name>myPersistenceContext
+        </persistence-context-ref-name>
+        </persistence-context-ref>
+        
+        <persistence-context-ref>
+        <persistence-context-ref-name>myPersistenceContext
+        </persistence-context-ref-name>
+        <persistence-unit-name>PersistenceUnit1
+        </persistence-unit-name>
+        <persistence-context-type>Extended</persistence-context-type>
+        </persistence-context-ref>
+        
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="description"
+                   type="javaee:descriptionType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="persistence-context-ref-name"
+                   type="javaee:jndi-nameType">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The persistence-context-ref-name element specifies
+            the name of a persistence context reference; its
+            value is the environment entry name used in
+            Deployment Component code.  The name is a JNDI name
+            relative to the java:comp/env context.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="persistence-unit-name"
+                   type="javaee:string"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The Application Assembler(or BeanProvider) may use the
+            following syntax to avoid the need to rename persistence
+            units to have unique names within a Java EE application.
+            
+            The Application Assembler specifies the pathname of the
+            root of the persistence.xml file for the referenced
+            persistence unit and appends the name of the persistence
+            unit separated from the pathname by #. The pathname is
+            relative to the referencing application component jar file. 
+            In this manner, multiple persistence units with the same
+            persistence unit name may be uniquely identified when the 
+            Application Assembler cannot change persistence unit names.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="persistence-context-type"
+                   type="javaee:persistence-context-typeType"
+                   minOccurs="0"/>
+      <xsd:element name="persistence-property"
+                   type="javaee:propertyType"
+                   minOccurs="0"
+                   maxOccurs="unbounded">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Used to specify properties for the container or persistence
+            provider.  Vendor-specific properties may be included in
+            the set of properties.  Properties that are not recognized
+            by a vendor must be ignored.  Entries that make use of the 
+            namespace javax.persistence and its subnamespaces must not
+            be used for vendor-specific properties.  The namespace
+            javax.persistence is reserved for use by the specification.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:group ref="javaee:resourceBaseGroup"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="persistence-context-typeType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The persistence-context-typeType specifies the transactional
+        nature of a persistence context reference.  
+        
+        The value of the persistence-context-type element must be
+        one of the following:
+        Transaction
+        Extended
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="javaee:string">
+        <xsd:enumeration value="Transaction"/>
+        <xsd:enumeration value="Extended"/>
+      </xsd:restriction>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="propertyType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        Specifies a name/value pair.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="name"
+                   type="javaee:xsdStringType">
+      </xsd:element>
+      <xsd:element name="value"
+                   type="javaee:xsdStringType">
+      </xsd:element>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="persistence-unit-refType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[[
+        The persistence-unit-ref element contains a declaration
+        of Deployment Component's reference to a persistence unit
+        associated within a Deployment Component's
+        environment. It consists of:
+        
+        - an optional description
+        - the persistence unit reference name
+        - an optional persistence unit name.  If not specified,
+        the default persistence unit is assumed.
+        - optional injection targets
+        
+        Examples:
+        
+        <persistence-unit-ref>
+        <persistence-unit-ref-name>myPersistenceUnit
+        </persistence-unit-ref-name>
+        </persistence-unit-ref>
+        
+        <persistence-unit-ref>
+        <persistence-unit-ref-name>myPersistenceUnit
+        </persistence-unit-ref-name>
+        <persistence-unit-name>PersistenceUnit1
+        </persistence-unit-name>
+        </persistence-unit-ref>
+        
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="description"
+                   type="javaee:descriptionType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="persistence-unit-ref-name"
+                   type="javaee:jndi-nameType">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The persistence-unit-ref-name element specifies
+            the name of a persistence unit reference; its
+            value is the environment entry name used in
+            Deployment Component code.  The name is a JNDI name
+            relative to the java:comp/env context.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="persistence-unit-name"
+                   type="javaee:string"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The Application Assembler(or BeanProvider) may use the
+            following syntax to avoid the need to rename persistence
+            units to have unique names within a Java EE application.
+            
+            The Application Assembler specifies the pathname of the
+            root of the persistence.xml file for the referenced
+            persistence unit and appends the name of the persistence
+            unit separated from the pathname by #. The pathname is
+            relative to the referencing application component jar file. 
+            In this manner, multiple persistence units with the same
+            persistence unit name may be uniquely identified when the 
+            Application Assembler cannot change persistence unit names.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:group ref="javaee:resourceBaseGroup"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="remoteType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[[
+        The remote element contains the fully-qualified name
+        of the enterprise bean's remote interface.
+        
+        Example:
+        
+        <remote>com.wombat.empl.EmployeeService</remote>
+        
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="javaee:fully-qualified-classType"/>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="resource-env-refType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[[
+        The resource-env-refType is used to define
+        resource-env-ref elements.  It contains a declaration of a
+        Deployment Component's reference to an administered object
+        associated with a resource in the Deployment Component's
+        environment.  It consists of an optional description, the
+        resource environment reference name, and an optional
+        indication of the resource environment reference type
+        expected by the Deployment Component code.
+        
+        It also includes optional elements to define injection of
+        the named resource into fields or JavaBeans properties.
+        
+        The resource environment type must be supplied unless an
+        injection target is specified, in which case the type
+        of the target is used.  If both are specified, the type
+        must be assignment compatible with the type of the injection
+        target.
+        
+        Example:
+        
+        <resource-env-ref>
+        <resource-env-ref-name>jms/StockQueue
+        </resource-env-ref-name>
+        <resource-env-ref-type>javax.jms.Queue
+        </resource-env-ref-type>
+        </resource-env-ref>
+        
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="description"
+                   type="javaee:descriptionType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="resource-env-ref-name"
+                   type="javaee:jndi-nameType">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The resource-env-ref-name element specifies the name
+            of a resource environment reference; its value is
+            the environment entry name used in
+            the Deployment Component code.  The name is a JNDI 
+            name relative to the java:comp/env context and must 
+            be unique within a Deployment Component.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="resource-env-ref-type"
+                   type="javaee:fully-qualified-classType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The resource-env-ref-type element specifies the type
+            of a resource environment reference.  It is the
+            fully qualified name of a Java language class or
+            interface.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:group ref="javaee:resourceGroup"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="resource-refType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[[
+        The resource-refType contains a declaration of a
+        Deployment Component's reference to an external resource. It
+        consists of an optional description, the resource manager
+        connection factory reference name, an optional indication of
+        the resource manager connection factory type expected by the
+        Deployment Component code, an optional type of authentication
+        (Application or Container), and an optional specification of
+        the shareability of connections obtained from the resource
+        (Shareable or Unshareable).
+        
+        It also includes optional elements to define injection of
+        the named resource into fields or JavaBeans properties.
+        
+        The connection factory type must be supplied unless an
+        injection target is specified, in which case the type
+        of the target is used.  If both are specified, the type
+        must be assignment compatible with the type of the injection
+        target.
+        
+        Example:
+        
+        <resource-ref>
+        <res-ref-name>jdbc/EmployeeAppDB</res-ref-name>
+        <res-type>javax.sql.DataSource</res-type>
+        <res-auth>Container</res-auth>
+        <res-sharing-scope>Shareable</res-sharing-scope>
+        </resource-ref>
+        
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="description"
+                   type="javaee:descriptionType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="res-ref-name"
+                   type="javaee:jndi-nameType">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The res-ref-name element specifies the name of a
+            resource manager connection factory reference.
+            The name is a JNDI name relative to the
+            java:comp/env context.  
+            The name must be unique within a Deployment File. 
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="res-type"
+                   type="javaee:fully-qualified-classType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The res-type element specifies the type of the data
+            source. The type is specified by the fully qualified
+            Java language class or interface
+            expected to be implemented by the data source.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="res-auth"
+                   type="javaee:res-authType"
+                   minOccurs="0"/>
+      <xsd:element name="res-sharing-scope"
+                   type="javaee:res-sharing-scopeType"
+                   minOccurs="0"/>
+      <xsd:group ref="javaee:resourceGroup"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="res-authType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The res-authType specifies whether the Deployment Component
+        code signs on programmatically to the resource manager, or
+        whether the Container will sign on to the resource manager
+        on behalf of the Deployment Component. In the latter case,
+        the Container uses information that is supplied by the
+        Deployer.
+        
+        The value must be one of the two following:
+        
+        Application
+        Container
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="javaee:string">
+        <xsd:enumeration value="Application"/>
+        <xsd:enumeration value="Container"/>
+      </xsd:restriction>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="res-sharing-scopeType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The res-sharing-scope type specifies whether connections
+        obtained through the given resource manager connection
+        factory reference can be shared. The value, if specified,
+        must be one of the two following:
+        
+        Shareable
+        Unshareable
+        
+        The default value is Shareable.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="javaee:string">
+        <xsd:enumeration value="Shareable"/>
+        <xsd:enumeration value="Unshareable"/>
+      </xsd:restriction>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="run-asType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The run-asType specifies the run-as identity to be
+        used for the execution of a component. It contains an 
+        optional description, and the name of a security role.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="description"
+                   type="javaee:descriptionType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="role-name"
+                   type="javaee:role-nameType"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="role-nameType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The role-nameType designates the name of a security role.
+        
+        The name must conform to the lexical rules for a token.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="javaee:string"/>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="security-roleType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[[
+        The security-roleType contains the definition of a security
+        role. The definition consists of an optional description of
+        the security role, and the security role name.
+        
+        Example:
+        
+        <security-role>
+        <description>
+        This role includes all employees who are authorized
+        to access the employee service application.
+        </description>
+        <role-name>employee</role-name>
+        </security-role>
+        
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="description"
+                   type="javaee:descriptionType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="role-name"
+                   type="javaee:role-nameType"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="security-role-refType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The security-role-refType contains the declaration of a
+        security role reference in a component's or a
+        Deployment Component's code. The declaration consists of an
+        optional description, the security role name used in the
+        code, and an optional link to a security role. If the
+        security role is not specified, the Deployer must choose an
+        appropriate security role.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="description"
+                   type="javaee:descriptionType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="role-name"
+                   type="javaee:role-nameType">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The value of the role-name element must be the String used
+            as the parameter to the 
+            EJBContext.isCallerInRole(String roleName) method or the
+            HttpServletRequest.isUserInRole(String role) method.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="role-link"
+                   type="javaee:role-nameType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The role-link element is a reference to a defined
+            security role. The role-link element must contain
+            the name of one of the security roles defined in the
+            security-role elements.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="xsdQNameType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        This type adds an "id" attribute to xsd:QName.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:extension base="xsd:QName">
+        <xsd:attribute name="id"
+                       type="xsd:ID"/>
+      </xsd:extension>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="xsdBooleanType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        This type adds an "id" attribute to xsd:boolean.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:extension base="xsd:boolean">
+        <xsd:attribute name="id"
+                       type="xsd:ID"/>
+      </xsd:extension>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="xsdNMTOKENType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        This type adds an "id" attribute to xsd:NMTOKEN.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:extension base="xsd:NMTOKEN">
+        <xsd:attribute name="id"
+                       type="xsd:ID"/>
+      </xsd:extension>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="xsdAnyURIType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        This type adds an "id" attribute to xsd:anyURI.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:extension base="xsd:anyURI">
+        <xsd:attribute name="id"
+                       type="xsd:ID"/>
+      </xsd:extension>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="xsdIntegerType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        This type adds an "id" attribute to xsd:integer.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:extension base="xsd:integer">
+        <xsd:attribute name="id"
+                       type="xsd:ID"/>
+      </xsd:extension>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="xsdPositiveIntegerType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        This type adds an "id" attribute to xsd:positiveInteger.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:extension base="xsd:positiveInteger">
+        <xsd:attribute name="id"
+                       type="xsd:ID"/>
+      </xsd:extension>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="xsdNonNegativeIntegerType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        This type adds an "id" attribute to xsd:nonNegativeInteger.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:extension base="xsd:nonNegativeInteger">
+        <xsd:attribute name="id"
+                       type="xsd:ID"/>
+      </xsd:extension>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="xsdStringType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        This type adds an "id" attribute to xsd:string.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:extension base="xsd:string">
+        <xsd:attribute name="id"
+                       type="xsd:ID"/>
+      </xsd:extension>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="string">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        This is a special string datatype that is defined by Java EE as
+        a base type for defining collapsed strings. When schemas
+        require trailing/leading space elimination as well as
+        collapsing the existing whitespace, this base type may be
+        used.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:extension base="xsd:token">
+        <xsd:attribute name="id"
+                       type="xsd:ID"/>
+      </xsd:extension>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="true-falseType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        This simple type designates a boolean with only two
+        permissible values
+        
+        - true
+        - false
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="javaee:xsdBooleanType">
+        <xsd:pattern value="(true|false)"/>
+      </xsd:restriction>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="url-patternType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The url-patternType contains the url pattern of the mapping.
+        It must follow the rules specified in Section 11.2 of the
+        Servlet API Specification. This pattern is assumed to be in
+        URL-decoded form and must not contain CR(#xD) or LF(#xA).
+        If it contains those characters, the container must inform
+        the developer with a descriptive error message.
+        The container must preserve all characters including whitespaces.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:extension base="xsd:string"/>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="message-destinationType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[[
+        The message-destinationType specifies a message
+        destination. The logical destination described by this
+        element is mapped to a physical destination by the Deployer.
+        
+        The message destination element contains: 
+        
+        - an optional description
+        - an optional display-name
+        - an optional icon
+        - a message destination name which must be unique
+        among message destination names within the same 
+        Deployment File. 
+        - an optional mapped name
+        - an optional lookup name
+        
+        Example: 
+        
+        <message-destination>
+        <message-destination-name>CorporateStocks
+        </message-destination-name>
+        </message-destination>
+        
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:group ref="javaee:descriptionGroup"/>
+      <xsd:element name="message-destination-name"
+                   type="javaee:string">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The message-destination-name element specifies a
+            name for a message destination.  This name must be
+            unique among the names of message destinations
+            within the Deployment File.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="mapped-name"
+                   type="javaee:xsdStringType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            A product specific name that this message destination
+            should be mapped to.  Each message-destination-ref
+            element that references this message destination will
+            define a name in the namespace of the referencing
+            component or in one of the other predefined namespaces. 
+            Many application servers provide a way to map these
+            local names to names of resources known to the
+            application server.  This mapped name is often a global
+            JNDI name, but may be a name of any form.  Each of the
+            local names should be mapped to this same global name.
+            
+            Application servers are not required to support any
+            particular form or type of mapped name, nor the ability
+            to use mapped names.  The mapped name is
+            product-dependent and often installation-dependent.  No
+            use of a mapped name is portable.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="lookup-name"
+                   type="javaee:xsdStringType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The JNDI name to be looked up to resolve the message destination.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="message-destination-refType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[[
+        The message-destination-ref element contains a declaration
+        of Deployment Component's reference to a message destination
+        associated with a resource in Deployment Component's
+        environment. It consists of:
+        
+        - an optional description
+        - the message destination reference name
+        - an optional message destination type
+        - an optional specification as to whether
+        the destination is used for 
+        consuming or producing messages, or both.
+        if not specified, "both" is assumed.
+        - an optional link to the message destination
+        - optional injection targets
+        
+        The message destination type must be supplied unless an
+        injection target is specified, in which case the type
+        of the target is used.  If both are specified, the type
+        must be assignment compatible with the type of the injection
+        target.
+        
+        Examples:
+        
+        <message-destination-ref>
+        <message-destination-ref-name>jms/StockQueue
+        </message-destination-ref-name>
+        <message-destination-type>javax.jms.Queue
+        </message-destination-type>
+        <message-destination-usage>Consumes
+        </message-destination-usage>
+        <message-destination-link>CorporateStocks
+        </message-destination-link>
+        </message-destination-ref>
+        
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="description"
+                   type="javaee:descriptionType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="message-destination-ref-name"
+                   type="javaee:jndi-nameType">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The message-destination-ref-name element specifies
+            the name of a message destination reference; its
+            value is the environment entry name used in
+            Deployment Component code.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="message-destination-type"
+                   type="javaee:message-destination-typeType"
+                   minOccurs="0"/>
+      <xsd:element name="message-destination-usage"
+                   type="javaee:message-destination-usageType"
+                   minOccurs="0"/>
+      <xsd:element name="message-destination-link"
+                   type="javaee:message-destination-linkType"
+                   minOccurs="0"/>
+      <xsd:group ref="javaee:resourceGroup"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="message-destination-usageType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The message-destination-usageType specifies the use of the
+        message destination indicated by the reference.  The value
+        indicates whether messages are consumed from the message
+        destination, produced for the destination, or both.  The
+        Assembler makes use of this information in linking producers
+        of a destination with its consumers.
+        
+        The value of the message-destination-usage element must be
+        one of the following:
+        Consumes
+        Produces
+        ConsumesProduces
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="javaee:string">
+        <xsd:enumeration value="Consumes"/>
+        <xsd:enumeration value="Produces"/>
+        <xsd:enumeration value="ConsumesProduces"/>
+      </xsd:restriction>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="message-destination-typeType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[[
+        The message-destination-typeType specifies the type of
+        the destination. The type is specified by the Java interface
+        expected to be implemented by the destination.
+        
+        Example: 
+        
+        <message-destination-type>javax.jms.Queue
+        </message-destination-type>
+        
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="javaee:fully-qualified-classType"/>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="message-destination-linkType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The message-destination-linkType is used to link a message
+        destination reference or message-driven bean to a message
+        destination.
+        
+        The Assembler sets the value to reflect the flow of messages
+        between producers and consumers in the application.
+        
+        The value must be the message-destination-name of a message
+        destination in the same Deployment File or in another
+        Deployment File in the same Java EE application unit.
+        
+        Alternatively, the value may be composed of a path name
+        specifying a Deployment File containing the referenced
+        message destination with the message-destination-name of the
+        destination appended and separated from the path name by
+        "#". The path name is relative to the Deployment File
+        containing Deployment Component that is referencing the
+        message destination.  This allows multiple message
+        destinations with the same name to be uniquely identified.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="javaee:string"/>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+</xsd:schema>
diff --git a/jsf-api/doc/javaee_7.xsd b/jsf-api/doc/javaee_7.xsd
new file mode 100644
index 0000000..72ea7a1
--- /dev/null
+++ b/jsf-api/doc/javaee_7.xsd
@@ -0,0 +1,3063 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsd:schema targetNamespace="http://xmlns.jcp.org/xml/ns/javaee"
+            xmlns:javaee="http://xmlns.jcp.org/xml/ns/javaee"
+            xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+            elementFormDefault="qualified"
+            attributeFormDefault="unqualified"
+            version="7">
+  <xsd:annotation>
+    <xsd:documentation>
+
+      DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+      
+      Copyright (c) 2009-2013 Oracle and/or its affiliates. All rights reserved.
+      
+      The contents of this file are subject to the terms of either the GNU
+      General Public License Version 2 only ("GPL") or the Common Development
+      and Distribution License("CDDL") (collectively, the "License").  You
+      may not use this file except in compliance with the License.  You can
+      obtain a copy of the License at
+      https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+      or packager/legal/LICENSE.txt.  See the License for the specific
+      language governing permissions and limitations under the License.
+      
+      When distributing the software, include this License Header Notice in each
+      file and include the License file at packager/legal/LICENSE.txt.
+      
+      GPL Classpath Exception:
+      Oracle designates this particular file as subject to the "Classpath"
+      exception as provided by Oracle in the GPL Version 2 section of the License
+      file that accompanied this code.
+      
+      Modifications:
+      If applicable, add the following below the License Header, with the fields
+      enclosed by brackets [] replaced by your own identifying information:
+      "Portions Copyright [year] [name of copyright owner]"
+      
+      Contributor(s):
+      If you wish your version of this file to be governed by only the CDDL or
+      only the GPL Version 2, indicate your decision by adding "[Contributor]
+      elects to include this software in this distribution under the [CDDL or GPL
+      Version 2] license."  If you don't indicate a single choice of license, a
+      recipient has the option to distribute your version of this file under
+      either the CDDL, the GPL Version 2 or to extend the choice of license to
+      its licensees as provided above.  However, if you add GPL Version 2 code
+      and therefore, elected the GPL Version 2 license, then the option applies
+      only if the new code is made subject to such option by the copyright
+      holder.
+      
+    </xsd:documentation>
+  </xsd:annotation>
+
+  <xsd:annotation>
+    <xsd:documentation>
+
+      The following definitions that appear in the common
+      shareable schema(s) of Java EE deployment descriptors should be
+      interpreted with respect to the context they are included:
+      
+      Deployment Component may indicate one of the following:
+      java ee application;
+      application client;
+      web application;
+      enterprise bean;
+      resource adapter; 
+      
+      Deployment File may indicate one of the following:
+      ear file;
+      war file;
+      jar file;
+      rar file;
+      
+    </xsd:documentation>
+  </xsd:annotation>
+
+  <xsd:import namespace="http://www.w3.org/XML/1998/namespace"
+              schemaLocation="http://www.w3.org/2001/xml.xsd"/>
+
+  <xsd:include schemaLocation="javaee_web_services_client_1_4.xsd"/>
+
+  <xsd:group name="descriptionGroup">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        This group keeps the usage of the contained description related
+        elements consistent across Java EE deployment descriptors.
+        
+        All elements may occur multiple times with different languages,
+        to support localization of the content.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="description"
+                   type="javaee:descriptionType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="display-name"
+                   type="javaee:display-nameType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="icon"
+                   type="javaee:iconType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+    </xsd:sequence>
+  </xsd:group>
+
+  <xsd:group name="jndiEnvironmentRefsGroup">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        This group keeps the usage of the contained JNDI environment
+        reference elements consistent across Java EE deployment descriptors.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="env-entry"
+                   type="javaee:env-entryType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="ejb-ref"
+                   type="javaee:ejb-refType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="ejb-local-ref"
+                   type="javaee:ejb-local-refType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:group ref="javaee:service-refGroup"/>
+      <xsd:element name="resource-ref"
+                   type="javaee:resource-refType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="resource-env-ref"
+                   type="javaee:resource-env-refType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="message-destination-ref"
+                   type="javaee:message-destination-refType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="persistence-context-ref"
+                   type="javaee:persistence-context-refType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="persistence-unit-ref"
+                   type="javaee:persistence-unit-refType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="post-construct"
+                   type="javaee:lifecycle-callbackType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="pre-destroy"
+                   type="javaee:lifecycle-callbackType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="data-source"
+                   type="javaee:data-sourceType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="jms-connection-factory"
+                   type="javaee:jms-connection-factoryType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="jms-destination"
+                   type="javaee:jms-destinationType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="mail-session"
+                   type="javaee:mail-sessionType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="connection-factory"
+                   type="javaee:connection-factory-resourceType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="administered-object"
+                   type="javaee:administered-objectType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+    </xsd:sequence>
+  </xsd:group>
+
+  <xsd:group name="resourceGroup">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        This group collects elements that are common to most
+        JNDI resource elements.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:group ref="javaee:resourceBaseGroup"/>
+      <xsd:element name="lookup-name"
+                   type="javaee:xsdStringType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The JNDI name to be looked up to resolve a resource reference.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+  </xsd:group>
+
+  <xsd:group name="resourceBaseGroup">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        This group collects elements that are common to all the
+        JNDI resource elements. It does not include the lookup-name
+        element, that is only applicable to some resource elements.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="mapped-name"
+                   type="javaee:xsdStringType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            A product specific name that this resource should be
+            mapped to.  The name of this resource, as defined by the
+            resource's name element or defaulted, is a name that is
+            local to the application component using the resource.
+            (It's a name in the JNDI java:comp/env namespace.)  Many
+            application servers provide a way to map these local
+            names to names of resources known to the application
+            server.  This mapped name is often a global JNDI name,
+            but may be a name of any form.
+            
+            Application servers are not required to support any
+            particular form or type of mapped name, nor the ability
+            to use mapped names.  The mapped name is
+            product-dependent and often installation-dependent.  No
+            use of a mapped name is portable.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="injection-target"
+                   type="javaee:injection-targetType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+    </xsd:sequence>
+  </xsd:group>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="administered-objectType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        Configuration of an administered object.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="description"
+                   type="javaee:descriptionType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Description of this administered object.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="name"
+                   type="javaee:jndi-nameType">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The name element specifies the JNDI name of the
+            administered object being defined.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="interface-name"
+                   type="javaee:fully-qualified-classType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The administered object's interface type.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="class-name"
+                   type="javaee:fully-qualified-classType">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The administered object's class name.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="resource-adapter"
+                   type="javaee:string">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Resource adapter name.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="property"
+                   type="javaee:propertyType"
+                   minOccurs="0"
+                   maxOccurs="unbounded">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Property of the administered object property.  This may be a 
+            vendor-specific property.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="connection-factory-resourceType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        Configuration of a Connector Connection Factory resource.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="description"
+                   type="javaee:descriptionType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Description of this resource.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="name"
+                   type="javaee:jndi-nameType">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The name element specifies the JNDI name of the
+            resource being defined.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="class-name"
+                   type="javaee:fully-qualified-classType">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The fully qualified domain name of the connection factory 
+            interface class. 
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="resource-adapter"
+                   type="javaee:string">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Resource adapter name.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="max-pool-size"
+                   type="javaee:xsdIntegerType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Maximum number of connections that should be concurrently
+            allocated for a connection pool.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="min-pool-size"
+                   type="javaee:xsdIntegerType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Minimum number of connections that should be concurrently
+            allocated for a connection pool.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="transaction-support"
+                   type="javaee:transaction-supportType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The level of transaction support the connection factory 
+            needs to support. 
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="property"
+                   type="javaee:propertyType"
+                   minOccurs="0"
+                   maxOccurs="unbounded">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Resource property.  This may be a vendor-specific
+            property.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="data-sourceType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        Configuration of a DataSource.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="description"
+                   type="javaee:descriptionType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Description of this DataSource.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="name"
+                   type="javaee:jndi-nameType">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The name element specifies the JNDI name of the
+            data source being defined.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="class-name"
+                   type="javaee:fully-qualified-classType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            DataSource, XADataSource or ConnectionPoolDataSource
+            implementation class.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="server-name"
+                   type="javaee:string"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Database server name.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="port-number"
+                   type="javaee:xsdIntegerType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Port number where a server is listening for requests.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="database-name"
+                   type="javaee:string"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Name of a database on a server.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="url"
+                   type="javaee:jdbc-urlType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+            <![CDATA[[
+            A JDBC URL. If the <code>url</code> property is specified
+            along with other standard <code>DataSource</code> properties
+            such as <code>serverName</code>, <code>databaseName</code>
+            and <code>portNumber</code>, the more specific properties will
+            take precedence and <code>url</code> will be ignored.
+            
+            ]]>
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="user"
+                   type="javaee:string"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            User name to use for connection authentication.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="password"
+                   type="javaee:string"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Password to use for connection authentication.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="property"
+                   type="javaee:propertyType"
+                   minOccurs="0"
+                   maxOccurs="unbounded">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            JDBC DataSource property.  This may be a vendor-specific
+            property or a less commonly used DataSource property.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="login-timeout"
+                   type="javaee:xsdIntegerType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Sets the maximum time in seconds that this data source
+            will wait while attempting to connect to a database.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="transactional"
+                   type="javaee:xsdBooleanType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Set to false if connections should not participate in
+            transactions.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="isolation-level"
+                   type="javaee:isolation-levelType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Isolation level for connections.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="initial-pool-size"
+                   type="javaee:xsdIntegerType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Number of connections that should be created when a
+            connection pool is initialized.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="max-pool-size"
+                   type="javaee:xsdIntegerType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Maximum number of connections that should be concurrently
+            allocated for a connection pool.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="min-pool-size"
+                   type="javaee:xsdIntegerType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Minimum number of connections that should be concurrently
+            allocated for a connection pool.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="max-idle-time"
+                   type="javaee:xsdIntegerType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The number of seconds that a physical connection should
+            remain unused in the pool before the connection is
+            closed for a connection pool.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="max-statements"
+                   type="javaee:xsdIntegerType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The total number of statements that a connection pool
+            should keep open.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="descriptionType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The description type is used by a description element to
+        provide text describing the parent element.  The elements
+        that use this type should include any information that the
+        Deployment Component's Deployment File file producer wants
+        to provide to the consumer of the Deployment Component's
+        Deployment File (i.e., to the Deployer). Typically, the
+        tools used by such a Deployment File consumer will display
+        the description when processing the parent element that
+        contains the description.
+        
+        The lang attribute defines the language that the
+        description is provided in. The default value is "en" (English). 
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:extension base="javaee:xsdStringType">
+        <xsd:attribute ref="xml:lang"/>
+      </xsd:extension>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+  <xsd:simpleType name="dewey-versionType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        This type defines a dewey decimal that is used
+        to describe versions of documents. 
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:token">
+      <xsd:pattern value="\.?[0-9]+(\.[0-9]+)*"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="display-nameType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[[
+        The display-name type contains a short name that is intended
+        to be displayed by tools. It is used by display-name
+        elements.  The display name need not be unique.
+        
+        Example: 
+        
+        ...
+        <display-name xml:lang="en">
+        Employee Self Service
+        </display-name>
+        
+        The value of the xml:lang attribute is "en" (English) by default. 
+        
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:extension base="javaee:string">
+        <xsd:attribute ref="xml:lang"/>
+      </xsd:extension>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="ejb-linkType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[[
+        The ejb-linkType is used by ejb-link
+        elements in the ejb-ref or ejb-local-ref elements to specify
+        that an EJB reference is linked to enterprise bean.
+        
+        The value of the ejb-link element must be the ejb-name of an
+        enterprise bean in the same ejb-jar file or in another ejb-jar
+        file in the same Java EE application unit. 
+        
+        Alternatively, the name in the ejb-link element may be
+        composed of a path name specifying the ejb-jar containing the
+        referenced enterprise bean with the ejb-name of the target
+        bean appended and separated from the path name by "#".  The
+        path name is relative to the Deployment File containing
+        Deployment Component that is referencing the enterprise
+        bean.  This allows multiple enterprise beans with the same
+        ejb-name to be uniquely identified.
+        
+        Examples:
+        
+        <ejb-link>EmployeeRecord</ejb-link>
+        
+        <ejb-link>../products/product.jar#ProductEJB</ejb-link>
+        
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="javaee:string"/>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="ejb-local-refType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The ejb-local-refType is used by ejb-local-ref elements for
+        the declaration of a reference to an enterprise bean's local
+        home or to the local business interface of a 3.0 bean.
+        The declaration consists of:
+        
+        - an optional description
+        - the EJB reference name used in the code of the Deployment 
+        Component that's referencing the enterprise bean.
+        - the optional expected type of the referenced enterprise bean
+        - the optional expected local interface of the referenced 
+        enterprise bean or the local business interface of the 
+        referenced enterprise bean.
+        - the optional expected local home interface of the referenced 
+        enterprise bean. Not applicable if this ejb-local-ref refers
+        to the local business interface of a 3.0 bean.
+        - optional ejb-link information, used to specify the 
+        referenced enterprise bean
+        - optional elements to define injection of the named enterprise  
+        bean into a component field or property.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="description"
+                   type="javaee:descriptionType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="ejb-ref-name"
+                   type="javaee:ejb-ref-nameType"/>
+      <xsd:element name="ejb-ref-type"
+                   type="javaee:ejb-ref-typeType"
+                   minOccurs="0"/>
+      <xsd:element name="local-home"
+                   type="javaee:local-homeType"
+                   minOccurs="0"/>
+      <xsd:element name="local"
+                   type="javaee:localType"
+                   minOccurs="0"/>
+      <xsd:element name="ejb-link"
+                   type="javaee:ejb-linkType"
+                   minOccurs="0"/>
+      <xsd:group ref="javaee:resourceGroup"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="ejb-ref-nameType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[[
+        The ejb-ref-name element contains the name of an EJB
+        reference. The EJB reference is an entry in the
+        Deployment Component's environment and is relative to the
+        java:comp/env context.  The name must be unique within the
+        Deployment Component.
+        
+        It is recommended that name is prefixed with "ejb/".
+        
+        Example:
+        
+        <ejb-ref-name>ejb/Payroll</ejb-ref-name>
+        
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="javaee:jndi-nameType"/>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="ejb-refType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The ejb-refType is used by ejb-ref elements for the
+        declaration of a reference to an enterprise bean's home or
+        to the remote business interface of a 3.0 bean.  
+        The declaration consists of:
+        
+        - an optional description
+        - the EJB reference name used in the code of
+        the Deployment Component that's referencing the enterprise
+        bean. 
+        - the optional expected type of the referenced enterprise bean
+        - the optional remote interface of the referenced enterprise bean
+        or the remote business interface of the referenced enterprise 
+        bean
+        - the optional expected home interface of the referenced 
+        enterprise bean.  Not applicable if this ejb-ref
+        refers to the remote business interface of a 3.0 bean.
+        - optional ejb-link information, used to specify the
+        referenced enterprise bean
+        - optional elements to define injection of the named enterprise
+        bean into a component field or property
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="description"
+                   type="javaee:descriptionType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="ejb-ref-name"
+                   type="javaee:ejb-ref-nameType"/>
+      <xsd:element name="ejb-ref-type"
+                   type="javaee:ejb-ref-typeType"
+                   minOccurs="0"/>
+      <xsd:element name="home"
+                   type="javaee:homeType"
+                   minOccurs="0"/>
+      <xsd:element name="remote"
+                   type="javaee:remoteType"
+                   minOccurs="0"/>
+      <xsd:element name="ejb-link"
+                   type="javaee:ejb-linkType"
+                   minOccurs="0"/>
+      <xsd:group ref="javaee:resourceGroup"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="ejb-ref-typeType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The ejb-ref-typeType contains the expected type of the
+        referenced enterprise bean.
+        
+        The ejb-ref-type designates a value
+        that must be one of the following:
+        
+        Entity
+        Session
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="javaee:string">
+        <xsd:enumeration value="Entity"/>
+        <xsd:enumeration value="Session"/>
+      </xsd:restriction>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="emptyType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        This type is used to designate an empty
+        element when used. 
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="env-entryType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The env-entryType is used to declare an application's
+        environment entry. The declaration consists of an optional
+        description, the name of the environment entry, a type
+        (optional if the value is injected, otherwise required), and
+        an optional value.
+        
+        It also includes optional elements to define injection of
+        the named resource into fields or JavaBeans properties.
+        
+        If a value is not specified and injection is requested,
+        no injection will occur and no entry of the specified name
+        will be created.  This allows an initial value to be
+        specified in the source code without being incorrectly
+        changed when no override has been specified.
+        
+        If a value is not specified and no injection is requested,
+        a value must be supplied during deployment. 
+        
+        This type is used by env-entry elements.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="description"
+                   type="javaee:descriptionType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="env-entry-name"
+                   type="javaee:jndi-nameType">
+        <xsd:annotation>
+          <xsd:documentation>
+            <![CDATA[[
+            The env-entry-name element contains the name of a
+            Deployment Component's environment entry.  The name
+            is a JNDI name relative to the java:comp/env
+            context.  The name must be unique within a 
+            Deployment Component. The uniqueness
+            constraints must be defined within the declared
+            context.
+            
+            Example:
+            
+            <env-entry-name>minAmount</env-entry-name>
+            
+            ]]>
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="env-entry-type"
+                   type="javaee:env-entry-type-valuesType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+            <![CDATA[[
+            The env-entry-type element contains the Java language
+            type of the environment entry.  If an injection target
+            is specified for the environment entry, the type may
+            be omitted, or must match the type of the injection
+            target.  If no injection target is specified, the type
+            is required.
+            
+            Example:
+            
+            <env-entry-type>java.lang.Integer</env-entry-type>
+            
+            ]]>
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="env-entry-value"
+                   type="javaee:xsdStringType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+            <![CDATA[[
+            The env-entry-value designates the value of a
+            Deployment Component's environment entry. The value
+            must be a String that is valid for the
+            constructor of the specified type that takes a
+            single String parameter, or for java.lang.Character,
+            a single character.
+            
+            Example:
+            
+            <env-entry-value>100.00</env-entry-value>
+            
+            ]]>
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:group ref="javaee:resourceGroup"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="env-entry-type-valuesType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[[
+        This type contains the fully-qualified Java type of the
+        environment entry value that is expected by the
+        application's code.
+        
+        The following are the legal values of env-entry-type-valuesType:
+        
+        java.lang.Boolean
+        java.lang.Byte
+        java.lang.Character
+        java.lang.String
+        java.lang.Short
+        java.lang.Integer
+        java.lang.Long
+        java.lang.Float
+        java.lang.Double
+        		  java.lang.Class
+        		  any enumeration type (i.e. a subclass of java.lang.Enum)
+        
+        Examples:
+        
+        <env-entry-type>java.lang.Boolean</env-entry-type>
+        <env-entry-type>java.lang.Class</env-entry-type>
+        <env-entry-type>com.example.Color</env-entry-type>
+        
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="javaee:fully-qualified-classType"/>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="fully-qualified-classType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The elements that use this type designate the name of a
+        Java class or interface.  The name is in the form of a
+        "binary name", as defined in the JLS.  This is the form
+        of name used in Class.forName().  Tools that need the
+        canonical name (the name used in source code) will need
+        to convert this binary name to the canonical name.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="javaee:string"/>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="generic-booleanType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        This type defines four different values which can designate
+        boolean values. This includes values yes and no which are 
+        not designated by xsd:boolean
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="javaee:string">
+        <xsd:enumeration value="true"/>
+        <xsd:enumeration value="false"/>
+        <xsd:enumeration value="yes"/>
+        <xsd:enumeration value="no"/>
+      </xsd:restriction>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="iconType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The icon type contains small-icon and large-icon elements
+        that specify the file names for small and large GIF, JPEG,
+        or PNG icon images used to represent the parent element in a
+        GUI tool. 
+        
+        The xml:lang attribute defines the language that the
+        icon file names are provided in. Its value is "en" (English)
+        by default. 
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="small-icon"
+                   type="javaee:pathType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+            <![CDATA[[
+            The small-icon element contains the name of a file
+            containing a small (16 x 16) icon image. The file
+            name is a relative path within the Deployment
+            Component's Deployment File.
+            
+            The image may be in the GIF, JPEG, or PNG format.
+            The icon can be used by tools.
+            
+            Example:
+            
+            <small-icon>employee-service-icon16x16.jpg</small-icon>
+            
+            ]]>
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="large-icon"
+                   type="javaee:pathType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+            <![CDATA[[
+            The large-icon element contains the name of a file
+            containing a large
+            (32 x 32) icon image. The file name is a relative 
+            path within the Deployment Component's Deployment
+            File.
+            
+            The image may be in the GIF, JPEG, or PNG format.
+            The icon can be used by tools.
+            
+            Example:
+            
+            <large-icon>employee-service-icon32x32.jpg</large-icon>
+            
+            ]]>
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+    <xsd:attribute ref="xml:lang"/>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="injection-targetType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        An injection target specifies a class and a name within
+        that class into which a resource should be injected.
+        
+        The injection target class specifies the fully qualified
+        class name that is the target of the injection.  The
+        Java EE specifications describe which classes can be an
+        injection target.
+        
+        The injection target name specifies the target within
+        the specified class.  The target is first looked for as a
+        JavaBeans property name.  If not found, the target is
+        looked for as a field name.
+        
+        The specified resource will be injected into the target
+        during initialization of the class by either calling the
+        set method for the target property or by setting a value
+        into the named field.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="injection-target-class"
+                   type="javaee:fully-qualified-classType"/>
+      <xsd:element name="injection-target-name"
+                   type="javaee:java-identifierType"/>
+    </xsd:sequence>
+  </xsd:complexType>
+
+  <xsd:simpleType name="isolation-levelType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        	The following transaction isolation levels are allowed
+        	(see documentation for the java.sql.Connection interface):
+        TRANSACTION_READ_UNCOMMITTED
+        TRANSACTION_READ_COMMITTED
+        TRANSACTION_REPEATABLE_READ
+        TRANSACTION_SERIALIZABLE
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:string">
+      <xsd:enumeration value="TRANSACTION_READ_UNCOMMITTED"/>
+      <xsd:enumeration value="TRANSACTION_READ_COMMITTED"/>
+      <xsd:enumeration value="TRANSACTION_REPEATABLE_READ"/>
+      <xsd:enumeration value="TRANSACTION_SERIALIZABLE"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="java-identifierType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The java-identifierType defines a Java identifier.
+        The users of this type should further verify that 
+        the content does not contain Java reserved keywords.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="javaee:string">
+        <xsd:pattern value="($|_|\p{L})(\p{L}|\p{Nd}|_|$)*"/>
+      </xsd:restriction>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="java-typeType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        This is a generic type that designates a Java primitive
+        type or a fully qualified name of a Java interface/type,
+        or an array of such types.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="javaee:string">
+        <xsd:pattern value="[^\p{Z}]*"/>
+      </xsd:restriction>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="jdbc-urlType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[[
+        The jdbc-urlType contains the url pattern of the mapping.
+        It must follow the rules specified in Section 9.3 of the
+        JDBC Specification where the format is:
+        
+        jdbc:<subprotocol>:<subname>
+        
+        Example:
+        
+        <url>jdbc:mysql://localhost:3307/testdb</url>
+        
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="javaee:string">
+        <xsd:pattern value="jdbc:(.*):(.*)"/>
+      </xsd:restriction>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="jms-connection-factoryType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        Configuration of a JMS Connection Factory.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="description"
+                   type="javaee:descriptionType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Description of this JMS Connection Factory.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="name"
+                   type="javaee:jndi-nameType">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The name element specifies the JNDI name of the
+            JMS connection factory being defined.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="class-name"
+                   type="javaee:fully-qualified-classType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            javax.jms.ConnectionFactory, javax.jms.QueueConnectionFactory, or javax.jms.TopicConnectionFactory
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="resource-adapter"
+                   type="javaee:string"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Resource adapter name.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="user"
+                   type="javaee:string"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            User name to use for connection authentication.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="password"
+                   type="javaee:string"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Password to use for connection authentication.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="client-id"
+                   type="javaee:string"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Client id to use for connection.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="property"
+                   type="javaee:propertyType"
+                   minOccurs="0"
+                   maxOccurs="unbounded">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            JMS Connection Factory property.  This may be a vendor-specific
+            property or a less commonly used ConnectionFactory property.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="transactional"
+                   type="javaee:xsdBooleanType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Set to false if connections should not participate in
+            transactions.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="max-pool-size"
+                   type="javaee:xsdIntegerType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Maximum number of connections that should be concurrently
+            allocated for a connection pool.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="min-pool-size"
+                   type="javaee:xsdIntegerType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Minimum number of connections that should be concurrently
+            allocated for a connection pool.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="jms-destinationType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        Configuration of a JMS Destination.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="description"
+                   type="javaee:descriptionType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Description of this JMS Destination.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="name"
+                   type="javaee:jndi-nameType">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The name element specifies the JNDI name of the
+            JMS destination being defined.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="class-name"
+                   type="javaee:fully-qualified-classType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            javax.jms.Queue or javax.jms.Topic
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="resource-adapter"
+                   type="javaee:string"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Resource adapter name.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="destination-name"
+                   type="javaee:string"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Name of the queue or topic.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="property"
+                   type="javaee:propertyType"
+                   minOccurs="0"
+                   maxOccurs="unbounded">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            JMS Destination property.  This may be a vendor-specific
+            property or a less commonly used Destination property.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="jndi-nameType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The jndi-nameType type designates a JNDI name in the
+        Deployment Component's environment and is relative to the
+        java:comp/env context.  A JNDI name must be unique within the
+        Deployment Component.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="javaee:string"/>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="homeType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[[
+        The homeType defines the fully-qualified name of
+        an enterprise bean's home interface. 
+        
+        Example:
+        
+        <home>com.aardvark.payroll.PayrollHome</home>
+        
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="javaee:fully-qualified-classType"/>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="lifecycle-callbackType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The lifecycle-callback type specifies a method on a
+        class to be called when a lifecycle event occurs.
+        Note that each class may have only one lifecycle callback
+        method for any given event and that the method may not
+        be overloaded.
+        
+        If the lifefycle-callback-class element is missing then
+        the class defining the callback is assumed to be the
+        component class in scope at the place in the descriptor
+        in which the callback definition appears.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="lifecycle-callback-class"
+                   type="javaee:fully-qualified-classType"
+                   minOccurs="0"/>
+      <xsd:element name="lifecycle-callback-method"
+                   type="javaee:java-identifierType"/>
+    </xsd:sequence>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="listenerType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The listenerType indicates the deployment properties for a web
+        application listener bean.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:group ref="javaee:descriptionGroup"/>
+      <xsd:element name="listener-class"
+                   type="javaee:fully-qualified-classType">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The listener-class element declares a class in the
+            application must be registered as a web
+            application listener bean. The value is the fully
+            qualified classname of the listener class.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="localType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The localType defines the fully-qualified name of an
+        enterprise bean's local interface.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="javaee:fully-qualified-classType"/>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="local-homeType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The local-homeType defines the fully-qualified
+        name of an enterprise bean's local home interface.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="javaee:fully-qualified-classType"/>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="mail-sessionType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        Configuration of a Mail Session resource.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="description"
+                   type="javaee:descriptionType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Description of this Mail Session resource.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="name"
+                   type="javaee:jndi-nameType">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The name element specifies the JNDI name of the
+            Mail Session resource being defined.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="store-protocol"
+                   type="javaee:string"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Storage protocol.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="store-protocol-class"
+                   type="javaee:fully-qualified-classType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Service provider store protocol implementation class
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="transport-protocol"
+                   type="javaee:string"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Transport protocol.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="transport-protocol-class"
+                   type="javaee:fully-qualified-classType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Service provider transport protocol implementation class
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="host"
+                   type="javaee:string"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Mail server host name.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="user"
+                   type="javaee:string"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Mail server user name.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="password"
+                   type="javaee:string"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Password.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="from"
+                   type="javaee:string"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Email address to indicate the message sender.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="property"
+                   type="javaee:propertyType"
+                   minOccurs="0"
+                   maxOccurs="unbounded">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Mail server property.  This may be a vendor-specific
+            property.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="param-valueType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        This type is a general type that can be used to declare
+        parameter/value lists.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="description"
+                   type="javaee:descriptionType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="param-name"
+                   type="javaee:string">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The param-name element contains the name of a
+            parameter.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="param-value"
+                   type="javaee:xsdStringType">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The param-value element contains the value of a
+            parameter.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="pathType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The elements that use this type designate either a relative
+        path or an absolute path starting with a "/".
+        
+        In elements that specify a pathname to a file within the
+        same Deployment File, relative filenames (i.e., those not
+        starting with "/") are considered relative to the root of
+        the Deployment File's namespace.  Absolute filenames (i.e.,
+        those starting with "/") also specify names in the root of
+        the Deployment File's namespace.  In general, relative names
+        are preferred.  The exception is .war files where absolute
+        names are preferred for consistency with the Servlet API.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="javaee:string"/>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="persistence-context-refType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[[
+        The persistence-context-ref element contains a declaration
+        of Deployment Component's reference to a persistence context
+        associated within a Deployment Component's
+        environment. It consists of:
+        
+        - an optional description
+        - the persistence context reference name
+        - an optional persistence unit name.  If not specified,
+        the default persistence unit is assumed.
+        - an optional specification as to whether
+        the persistence context type is Transaction or
+        Extended.  If not specified, Transaction is assumed.
+        - an optional specification as to whether
+        the persistence context synchronization with the current
+        transaction is Synchronized or Unsynchronized. If not
+        specified, Synchronized is assumed.
+        - an optional list of persistence properties
+        - optional injection targets
+        
+        Examples:
+        
+        <persistence-context-ref>
+        <persistence-context-ref-name>myPersistenceContext
+        </persistence-context-ref-name>
+        </persistence-context-ref>
+        
+        <persistence-context-ref>
+        <persistence-context-ref-name>myPersistenceContext
+        </persistence-context-ref-name>
+        <persistence-unit-name>PersistenceUnit1
+        </persistence-unit-name>
+        <persistence-context-type>Extended</persistence-context-type>
+        </persistence-context-ref>
+        
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="description"
+                   type="javaee:descriptionType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="persistence-context-ref-name"
+                   type="javaee:jndi-nameType">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The persistence-context-ref-name element specifies
+            the name of a persistence context reference; its
+            value is the environment entry name used in
+            Deployment Component code.  The name is a JNDI name
+            relative to the java:comp/env context.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="persistence-unit-name"
+                   type="javaee:string"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The Application Assembler(or BeanProvider) may use the
+            following syntax to avoid the need to rename persistence
+            units to have unique names within a Java EE application.
+            
+            The Application Assembler specifies the pathname of the
+            root of the persistence.xml file for the referenced
+            persistence unit and appends the name of the persistence
+            unit separated from the pathname by #. The pathname is
+            relative to the referencing application component jar file. 
+            In this manner, multiple persistence units with the same
+            persistence unit name may be uniquely identified when the 
+            Application Assembler cannot change persistence unit names.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="persistence-context-type"
+                   type="javaee:persistence-context-typeType"
+                   minOccurs="0"/>
+      <xsd:element name="persistence-context-synchronization"
+                   type="javaee:persistence-context-synchronizationType"
+                   minOccurs="0"/>
+      <xsd:element name="persistence-property"
+                   type="javaee:propertyType"
+                   minOccurs="0"
+                   maxOccurs="unbounded">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Used to specify properties for the container or persistence
+            provider.  Vendor-specific properties may be included in
+            the set of properties.  Properties that are not recognized
+            by a vendor must be ignored.  Entries that make use of the 
+            namespace javax.persistence and its subnamespaces must not
+            be used for vendor-specific properties.  The namespace
+            javax.persistence is reserved for use by the specification.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:group ref="javaee:resourceBaseGroup"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="persistence-context-synchronizationType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The persistence-context-synchronizationType specifies 
+        whether a container-managed persistence context is automatically
+        synchronized with the current transaction.
+        
+        The value of the persistence-context-synchronization element 
+        must be one of the following:
+        Synchronized
+        Unsynchronized
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="javaee:string">
+        <xsd:enumeration value="Synchronized"/>
+        <xsd:enumeration value="Unsynchronized"/>
+      </xsd:restriction>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="persistence-context-typeType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The persistence-context-typeType specifies the transactional
+        nature of a persistence context reference.  
+        
+        The value of the persistence-context-type element must be
+        one of the following:
+        Transaction
+        Extended
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="javaee:string">
+        <xsd:enumeration value="Transaction"/>
+        <xsd:enumeration value="Extended"/>
+      </xsd:restriction>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="propertyType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        Specifies a name/value pair.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="name"
+                   type="javaee:xsdStringType">
+      </xsd:element>
+      <xsd:element name="value"
+                   type="javaee:xsdStringType">
+      </xsd:element>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="persistence-unit-refType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[[
+        The persistence-unit-ref element contains a declaration
+        of Deployment Component's reference to a persistence unit
+        associated within a Deployment Component's
+        environment. It consists of:
+        
+        - an optional description
+        - the persistence unit reference name
+        - an optional persistence unit name.  If not specified,
+        the default persistence unit is assumed.
+        - optional injection targets
+        
+        Examples:
+        
+        <persistence-unit-ref>
+        <persistence-unit-ref-name>myPersistenceUnit
+        </persistence-unit-ref-name>
+        </persistence-unit-ref>
+        
+        <persistence-unit-ref>
+        <persistence-unit-ref-name>myPersistenceUnit
+        </persistence-unit-ref-name>
+        <persistence-unit-name>PersistenceUnit1
+        </persistence-unit-name>
+        </persistence-unit-ref>
+        
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="description"
+                   type="javaee:descriptionType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="persistence-unit-ref-name"
+                   type="javaee:jndi-nameType">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The persistence-unit-ref-name element specifies
+            the name of a persistence unit reference; its
+            value is the environment entry name used in
+            Deployment Component code.  The name is a JNDI name
+            relative to the java:comp/env context.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="persistence-unit-name"
+                   type="javaee:string"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The Application Assembler(or BeanProvider) may use the
+            following syntax to avoid the need to rename persistence
+            units to have unique names within a Java EE application.
+            
+            The Application Assembler specifies the pathname of the
+            root of the persistence.xml file for the referenced
+            persistence unit and appends the name of the persistence
+            unit separated from the pathname by #. The pathname is
+            relative to the referencing application component jar file. 
+            In this manner, multiple persistence units with the same
+            persistence unit name may be uniquely identified when the 
+            Application Assembler cannot change persistence unit names.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:group ref="javaee:resourceBaseGroup"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="remoteType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[[
+        The remote element contains the fully-qualified name
+        of the enterprise bean's remote interface.
+        
+        Example:
+        
+        <remote>com.wombat.empl.EmployeeService</remote>
+        
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="javaee:fully-qualified-classType"/>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="resource-env-refType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[[
+        The resource-env-refType is used to define
+        resource-env-ref elements.  It contains a declaration of a
+        Deployment Component's reference to an administered object
+        associated with a resource in the Deployment Component's
+        environment.  It consists of an optional description, the
+        resource environment reference name, and an optional
+        indication of the resource environment reference type
+        expected by the Deployment Component code.
+        
+        It also includes optional elements to define injection of
+        the named resource into fields or JavaBeans properties.
+        
+        The resource environment type must be supplied unless an
+        injection target is specified, in which case the type
+        of the target is used.  If both are specified, the type
+        must be assignment compatible with the type of the injection
+        target.
+        
+        Example:
+        
+        <resource-env-ref>
+        <resource-env-ref-name>jms/StockQueue
+        </resource-env-ref-name>
+        <resource-env-ref-type>javax.jms.Queue
+        </resource-env-ref-type>
+        </resource-env-ref>
+        
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="description"
+                   type="javaee:descriptionType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="resource-env-ref-name"
+                   type="javaee:jndi-nameType">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The resource-env-ref-name element specifies the name
+            of a resource environment reference; its value is
+            the environment entry name used in
+            the Deployment Component code.  The name is a JNDI 
+            name relative to the java:comp/env context and must 
+            be unique within a Deployment Component.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="resource-env-ref-type"
+                   type="javaee:fully-qualified-classType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The resource-env-ref-type element specifies the type
+            of a resource environment reference.  It is the
+            fully qualified name of a Java language class or
+            interface.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:group ref="javaee:resourceGroup"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="resource-refType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[[
+        The resource-refType contains a declaration of a
+        Deployment Component's reference to an external resource. It
+        consists of an optional description, the resource manager
+        connection factory reference name, an optional indication of
+        the resource manager connection factory type expected by the
+        Deployment Component code, an optional type of authentication
+        (Application or Container), and an optional specification of
+        the shareability of connections obtained from the resource
+        (Shareable or Unshareable).
+        
+        It also includes optional elements to define injection of
+        the named resource into fields or JavaBeans properties.
+        
+        The connection factory type must be supplied unless an
+        injection target is specified, in which case the type
+        of the target is used.  If both are specified, the type
+        must be assignment compatible with the type of the injection
+        target.
+        
+        Example:
+        
+        <resource-ref>
+        <res-ref-name>jdbc/EmployeeAppDB</res-ref-name>
+        <res-type>javax.sql.DataSource</res-type>
+        <res-auth>Container</res-auth>
+        <res-sharing-scope>Shareable</res-sharing-scope>
+        </resource-ref>
+        
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="description"
+                   type="javaee:descriptionType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="res-ref-name"
+                   type="javaee:jndi-nameType">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The res-ref-name element specifies the name of a
+            resource manager connection factory reference.
+            The name is a JNDI name relative to the
+            java:comp/env context.  
+            The name must be unique within a Deployment File. 
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="res-type"
+                   type="javaee:fully-qualified-classType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The res-type element specifies the type of the data
+            source. The type is specified by the fully qualified
+            Java language class or interface
+            expected to be implemented by the data source.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="res-auth"
+                   type="javaee:res-authType"
+                   minOccurs="0"/>
+      <xsd:element name="res-sharing-scope"
+                   type="javaee:res-sharing-scopeType"
+                   minOccurs="0"/>
+      <xsd:group ref="javaee:resourceGroup"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="res-authType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The res-authType specifies whether the Deployment Component
+        code signs on programmatically to the resource manager, or
+        whether the Container will sign on to the resource manager
+        on behalf of the Deployment Component. In the latter case,
+        the Container uses information that is supplied by the
+        Deployer.
+        
+        The value must be one of the two following:
+        
+        Application
+        Container
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="javaee:string">
+        <xsd:enumeration value="Application"/>
+        <xsd:enumeration value="Container"/>
+      </xsd:restriction>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="res-sharing-scopeType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The res-sharing-scope type specifies whether connections
+        obtained through the given resource manager connection
+        factory reference can be shared. The value, if specified,
+        must be one of the two following:
+        
+        Shareable
+        Unshareable
+        
+        The default value is Shareable.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="javaee:string">
+        <xsd:enumeration value="Shareable"/>
+        <xsd:enumeration value="Unshareable"/>
+      </xsd:restriction>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="run-asType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The run-asType specifies the run-as identity to be
+        used for the execution of a component. It contains an 
+        optional description, and the name of a security role.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="description"
+                   type="javaee:descriptionType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="role-name"
+                   type="javaee:role-nameType"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="role-nameType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The role-nameType designates the name of a security role.
+        
+        The name must conform to the lexical rules for a token.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="javaee:string"/>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="security-roleType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[[
+        The security-roleType contains the definition of a security
+        role. The definition consists of an optional description of
+        the security role, and the security role name.
+        
+        Example:
+        
+        <security-role>
+        <description>
+        This role includes all employees who are authorized
+        to access the employee service application.
+        </description>
+        <role-name>employee</role-name>
+        </security-role>
+        
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="description"
+                   type="javaee:descriptionType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="role-name"
+                   type="javaee:role-nameType"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="security-role-refType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The security-role-refType contains the declaration of a
+        security role reference in a component's or a
+        Deployment Component's code. The declaration consists of an
+        optional description, the security role name used in the
+        code, and an optional link to a security role. If the
+        security role is not specified, the Deployer must choose an
+        appropriate security role.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="description"
+                   type="javaee:descriptionType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="role-name"
+                   type="javaee:role-nameType">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The value of the role-name element must be the String used
+            as the parameter to the 
+            EJBContext.isCallerInRole(String roleName) method or the
+            HttpServletRequest.isUserInRole(String role) method.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="role-link"
+                   type="javaee:role-nameType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The role-link element is a reference to a defined
+            security role. The role-link element must contain
+            the name of one of the security roles defined in the
+            security-role elements.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="xsdQNameType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        This type adds an "id" attribute to xsd:QName.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:extension base="xsd:QName">
+        <xsd:attribute name="id"
+                       type="xsd:ID"/>
+      </xsd:extension>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="xsdBooleanType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        This type adds an "id" attribute to xsd:boolean.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:extension base="xsd:boolean">
+        <xsd:attribute name="id"
+                       type="xsd:ID"/>
+      </xsd:extension>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="xsdNMTOKENType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        This type adds an "id" attribute to xsd:NMTOKEN.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:extension base="xsd:NMTOKEN">
+        <xsd:attribute name="id"
+                       type="xsd:ID"/>
+      </xsd:extension>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="xsdAnyURIType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        This type adds an "id" attribute to xsd:anyURI.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:extension base="xsd:anyURI">
+        <xsd:attribute name="id"
+                       type="xsd:ID"/>
+      </xsd:extension>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="xsdIntegerType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        This type adds an "id" attribute to xsd:integer.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:extension base="xsd:integer">
+        <xsd:attribute name="id"
+                       type="xsd:ID"/>
+      </xsd:extension>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="xsdPositiveIntegerType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        This type adds an "id" attribute to xsd:positiveInteger.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:extension base="xsd:positiveInteger">
+        <xsd:attribute name="id"
+                       type="xsd:ID"/>
+      </xsd:extension>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="xsdNonNegativeIntegerType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        This type adds an "id" attribute to xsd:nonNegativeInteger.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:extension base="xsd:nonNegativeInteger">
+        <xsd:attribute name="id"
+                       type="xsd:ID"/>
+      </xsd:extension>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="xsdStringType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        This type adds an "id" attribute to xsd:string.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:extension base="xsd:string">
+        <xsd:attribute name="id"
+                       type="xsd:ID"/>
+      </xsd:extension>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="string">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        This is a special string datatype that is defined by Java EE as
+        a base type for defining collapsed strings. When schemas
+        require trailing/leading space elimination as well as
+        collapsing the existing whitespace, this base type may be
+        used.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:extension base="xsd:token">
+        <xsd:attribute name="id"
+                       type="xsd:ID"/>
+      </xsd:extension>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="true-falseType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        This simple type designates a boolean with only two
+        permissible values
+        
+        - true
+        - false
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="javaee:xsdBooleanType">
+        <xsd:pattern value="(true|false)"/>
+      </xsd:restriction>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="url-patternType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The url-patternType contains the url pattern of the mapping.
+        It must follow the rules specified in Section 11.2 of the
+        Servlet API Specification. This pattern is assumed to be in
+        URL-decoded form and must not contain CR(#xD) or LF(#xA).
+        If it contains those characters, the container must inform
+        the developer with a descriptive error message.
+        The container must preserve all characters including whitespaces.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:extension base="xsd:string"/>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="message-destinationType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[[
+        The message-destinationType specifies a message
+        destination. The logical destination described by this
+        element is mapped to a physical destination by the Deployer.
+        
+        The message destination element contains: 
+        
+        - an optional description
+        - an optional display-name
+        - an optional icon
+        - a message destination name which must be unique
+        among message destination names within the same 
+        Deployment File. 
+        - an optional mapped name
+        - an optional lookup name
+        
+        Example: 
+        
+        <message-destination>
+        <message-destination-name>CorporateStocks
+        </message-destination-name>
+        </message-destination>
+        
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:group ref="javaee:descriptionGroup"/>
+      <xsd:element name="message-destination-name"
+                   type="javaee:string">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The message-destination-name element specifies a
+            name for a message destination.  This name must be
+            unique among the names of message destinations
+            within the Deployment File.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="mapped-name"
+                   type="javaee:xsdStringType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            A product specific name that this message destination
+            should be mapped to.  Each message-destination-ref
+            element that references this message destination will
+            define a name in the namespace of the referencing
+            component or in one of the other predefined namespaces. 
+            Many application servers provide a way to map these
+            local names to names of resources known to the
+            application server.  This mapped name is often a global
+            JNDI name, but may be a name of any form.  Each of the
+            local names should be mapped to this same global name.
+            
+            Application servers are not required to support any
+            particular form or type of mapped name, nor the ability
+            to use mapped names.  The mapped name is
+            product-dependent and often installation-dependent.  No
+            use of a mapped name is portable.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="lookup-name"
+                   type="javaee:xsdStringType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The JNDI name to be looked up to resolve the message destination.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="message-destination-refType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[[
+        The message-destination-ref element contains a declaration
+        of Deployment Component's reference to a message destination
+        associated with a resource in Deployment Component's
+        environment. It consists of:
+        
+        - an optional description
+        - the message destination reference name
+        - an optional message destination type
+        - an optional specification as to whether
+        the destination is used for 
+        consuming or producing messages, or both.
+        if not specified, "both" is assumed.
+        - an optional link to the message destination
+        - optional injection targets
+        
+        The message destination type must be supplied unless an
+        injection target is specified, in which case the type
+        of the target is used.  If both are specified, the type
+        must be assignment compatible with the type of the injection
+        target.
+        
+        Examples:
+        
+        <message-destination-ref>
+        <message-destination-ref-name>jms/StockQueue
+        </message-destination-ref-name>
+        <message-destination-type>javax.jms.Queue
+        </message-destination-type>
+        <message-destination-usage>Consumes
+        </message-destination-usage>
+        <message-destination-link>CorporateStocks
+        </message-destination-link>
+        </message-destination-ref>
+        
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="description"
+                   type="javaee:descriptionType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="message-destination-ref-name"
+                   type="javaee:jndi-nameType">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The message-destination-ref-name element specifies
+            the name of a message destination reference; its
+            value is the environment entry name used in
+            Deployment Component code.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="message-destination-type"
+                   type="javaee:message-destination-typeType"
+                   minOccurs="0"/>
+      <xsd:element name="message-destination-usage"
+                   type="javaee:message-destination-usageType"
+                   minOccurs="0"/>
+      <xsd:element name="message-destination-link"
+                   type="javaee:message-destination-linkType"
+                   minOccurs="0"/>
+      <xsd:group ref="javaee:resourceGroup"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="message-destination-usageType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The message-destination-usageType specifies the use of the
+        message destination indicated by the reference.  The value
+        indicates whether messages are consumed from the message
+        destination, produced for the destination, or both.  The
+        Assembler makes use of this information in linking producers
+        of a destination with its consumers.
+        
+        The value of the message-destination-usage element must be
+        one of the following:
+        Consumes
+        Produces
+        ConsumesProduces
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="javaee:string">
+        <xsd:enumeration value="Consumes"/>
+        <xsd:enumeration value="Produces"/>
+        <xsd:enumeration value="ConsumesProduces"/>
+      </xsd:restriction>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="message-destination-typeType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[[
+        The message-destination-typeType specifies the type of
+        the destination. The type is specified by the Java interface
+        expected to be implemented by the destination.
+        
+        Example: 
+        
+        <message-destination-type>javax.jms.Queue
+        </message-destination-type>
+        
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="javaee:fully-qualified-classType"/>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="message-destination-linkType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The message-destination-linkType is used to link a message
+        destination reference or message-driven bean to a message
+        destination.
+        
+        The Assembler sets the value to reflect the flow of messages
+        between producers and consumers in the application.
+        
+        The value must be the message-destination-name of a message
+        destination in the same Deployment File or in another
+        Deployment File in the same Java EE application unit.
+        
+        Alternatively, the value may be composed of a path name
+        specifying a Deployment File containing the referenced
+        message destination with the message-destination-name of the
+        destination appended and separated from the path name by
+        "#". The path name is relative to the Deployment File
+        containing Deployment Component that is referencing the
+        message destination.  This allows multiple message
+        destinations with the same name to be uniquely identified.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="javaee:string"/>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="transaction-supportType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The transaction-supportType specifies the level of
+        transaction support provided by the resource adapter. It is
+        used by transaction-support elements.
+        
+        The value must be one of the following:
+        
+        NoTransaction
+        LocalTransaction
+        XATransaction
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="javaee:string">
+        <xsd:enumeration value="NoTransaction"/>
+        <xsd:enumeration value="LocalTransaction"/>
+        <xsd:enumeration value="XATransaction"/>
+      </xsd:restriction>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+</xsd:schema>
diff --git a/jsf-api/doc/javaee_web_services_1_2.xsd b/jsf-api/doc/javaee_web_services_1_2.xsd
index 8c31b87..a3dc57f 100644
--- a/jsf-api/doc/javaee_web_services_1_2.xsd
+++ b/jsf-api/doc/javaee_web_services_1_2.xsd
@@ -1,4 +1,45 @@
 <?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
 
 <xsd:schema xmlns="http://www.w3.org/2001/XMLSchema"
 	    targetNamespace="http://java.sun.com/xml/ns/javaee"
@@ -16,43 +57,43 @@
   <xsd:annotation>
     <xsd:documentation>
 
-      DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-      
-      Copyright 2003-2009 Sun Microsystems, Inc. All rights reserved.
-      
-      The contents of this file are subject to the terms of either the
-      GNU General Public License Version 2 only ("GPL") or the Common
-      Development and Distribution License("CDDL") (collectively, the
-      "License").  You may not use this file except in compliance with
-      the License. You can obtain a copy of the License at
-      https://glassfish.dev.java.net/public/CDDL+GPL.html or
-      glassfish/bootstrap/legal/LICENSE.txt.  See the License for the
-      specific language governing permissions and limitations under the
-      License.
-      
-      When distributing the software, include this License Header
-      Notice in each file and include the License file at
-      glassfish/bootstrap/legal/LICENSE.txt.  Sun designates this
-      particular file as subject to the "Classpath" exception as
-      provided by Sun in the GPL Version 2 section of the License file
-      that accompanied this code.  If applicable, add the following
-      below the License Header, with the fields enclosed by brackets []
-      replaced by your own identifying information:
-      "Portions Copyrighted [year] [name of copyright owner]"
-      
-      Contributor(s):
-      
-      If you wish your version of this file to be governed by only the
-      CDDL or only the GPL Version 2, indicate your decision by adding
-      "[Contributor] elects to include this software in this
-      distribution under the [CDDL or GPL Version 2] license."  If you
-      don't indicate a single choice of license, a recipient has the
-      option to distribute your version of this file under either the
-      CDDL, the GPL Version 2 or to extend the choice of license to its
-      licensees as provided above.  However, if you add GPL Version 2
-      code and therefore, elected the GPL Version 2 license, then the
-      option applies only if the new code is made subject to such
-      option by the copyright holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
       
     </xsd:documentation>
   </xsd:annotation>
diff --git a/jsf-api/doc/javaee_web_services_client_1_2.xsd b/jsf-api/doc/javaee_web_services_client_1_2.xsd
index 1863ebd..1118458 100644
--- a/jsf-api/doc/javaee_web_services_client_1_2.xsd
+++ b/jsf-api/doc/javaee_web_services_client_1_2.xsd
@@ -1,4 +1,45 @@
 <?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
 
 <xsd:schema xmlns="http://www.w3.org/2001/XMLSchema"
 	    targetNamespace="http://java.sun.com/xml/ns/javaee"
@@ -16,43 +57,43 @@
   <xsd:annotation>
     <xsd:documentation>
 
-      DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-      
-      Copyright 2003-2009 Sun Microsystems, Inc. All rights reserved.
-      
-      The contents of this file are subject to the terms of either the
-      GNU General Public License Version 2 only ("GPL") or the Common
-      Development and Distribution License("CDDL") (collectively, the
-      "License").  You may not use this file except in compliance with
-      the License. You can obtain a copy of the License at
-      https://glassfish.dev.java.net/public/CDDL+GPL.html or
-      glassfish/bootstrap/legal/LICENSE.txt.  See the License for the
-      specific language governing permissions and limitations under the
-      License.
-      
-      When distributing the software, include this License Header
-      Notice in each file and include the License file at
-      glassfish/bootstrap/legal/LICENSE.txt.  Sun designates this
-      particular file as subject to the "Classpath" exception as
-      provided by Sun in the GPL Version 2 section of the License file
-      that accompanied this code.  If applicable, add the following
-      below the License Header, with the fields enclosed by brackets []
-      replaced by your own identifying information:
-      "Portions Copyrighted [year] [name of copyright owner]"
-      
-      Contributor(s):
-      
-      If you wish your version of this file to be governed by only the
-      CDDL or only the GPL Version 2, indicate your decision by adding
-      "[Contributor] elects to include this software in this
-      distribution under the [CDDL or GPL Version 2] license."  If you
-      don't indicate a single choice of license, a recipient has the
-      option to distribute your version of this file under either the
-      CDDL, the GPL Version 2 or to extend the choice of license to its
-      licensees as provided above.  However, if you add GPL Version 2
-      code and therefore, elected the GPL Version 2 license, then the
-      option applies only if the new code is made subject to such
-      option by the copyright holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
       
     </xsd:documentation>
   </xsd:annotation>
diff --git a/jsf-api/doc/javaee_web_services_client_1_3.xsd b/jsf-api/doc/javaee_web_services_client_1_3.xsd
new file mode 100644
index 0000000..5c673ae
--- /dev/null
+++ b/jsf-api/doc/javaee_web_services_client_1_3.xsd
@@ -0,0 +1,737 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsd:schema xmlns="http://www.w3.org/2001/XMLSchema"
+            targetNamespace="http://java.sun.com/xml/ns/javaee"
+            xmlns:javaee="http://java.sun.com/xml/ns/javaee"
+            xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+            elementFormDefault="qualified"
+            attributeFormDefault="unqualified"
+            version="1.3">
+  <xsd:annotation>
+    <xsd:documentation>
+
+      DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+      
+      Copyright 2003-2009 Sun Microsystems, Inc. All rights reserved.
+      
+      The contents of this file are subject to the terms of either the
+      GNU General Public License Version 2 only ("GPL") or the Common
+      Development and Distribution License("CDDL") (collectively, the
+      "License").  You may not use this file except in compliance with
+      the License. You can obtain a copy of the License at
+      https://glassfish.dev.java.net/public/CDDL+GPL.html or
+      glassfish/bootstrap/legal/LICENSE.txt.  See the License for the
+      specific language governing permissions and limitations under the
+      License.
+      
+      When distributing the software, include this License Header
+      Notice in each file and include the License file at
+      glassfish/bootstrap/legal/LICENSE.txt.  Sun designates this
+      particular file as subject to the "Classpath" exception as
+      provided by Sun in the GPL Version 2 section of the License file
+      that accompanied this code.  If applicable, add the following
+      below the License Header, with the fields enclosed by brackets []
+      replaced by your own identifying information:
+      "Portions Copyrighted [year] [name of copyright owner]"
+      
+      Contributor(s):
+      
+      If you wish your version of this file to be governed by only the
+      CDDL or only the GPL Version 2, indicate your decision by adding
+      "[Contributor] elects to include this software in this
+      distribution under the [CDDL or GPL Version 2] license."  If you
+      don't indicate a single choice of license, a recipient has the
+      option to distribute your version of this file under either the
+      CDDL, the GPL Version 2 or to extend the choice of license to its
+      licensees as provided above.  However, if you add GPL Version 2
+      code and therefore, elected the GPL Version 2 license, then the
+      option applies only if the new code is made subject to such
+      option by the copyright holder.
+      
+    </xsd:documentation>
+  </xsd:annotation>
+
+  <xsd:annotation>
+    <xsd:documentation>
+
+      (C) Copyright International Business Machines Corporation 2002
+      
+    </xsd:documentation>
+  </xsd:annotation>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="service-refType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The service-ref element declares a reference to a Web
+        service. It contains optional description, display name and
+        icons, a declaration of the required Service interface,
+        an optional WSDL document location, an optional set
+        of JAX-RPC mappings, an optional QName for the service element,
+        an optional set of Service Endpoint Interfaces to be resolved 
+        by the container to a WSDL port, and an optional set of handlers.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:group ref="javaee:descriptionGroup"/>
+      <xsd:element name="service-ref-name"
+                   type="javaee:jndi-nameType">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The service-ref-name element declares logical name that the
+            components in the module use to look up the Web service. It 
+            is recommended that all service reference names start with 
+            "service/".
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="service-interface"
+                   type="javaee:fully-qualified-classType">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The service-interface element declares the fully qualified class
+            name of the JAX-RPC Service interface the client depends on. 
+            In most cases the value will be javax.xml.rpc.Service.  A JAX-RPC
+            generated Service Interface class may also be specified.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="service-ref-type"
+                   type="javaee:fully-qualified-classType"
+                   minOccurs="0"
+                   maxOccurs="1">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The service-ref-type element declares the type of the service-ref 
+            element that is injected or returned when a JNDI lookup is done.
+            This must be either a fully qualified name of Service class or 
+            the fully qualified name of service endpoint interface class. 
+            This is only used with JAX-WS runtime where the corresponding 
+            @WebServiceRef annotation can be used to denote both a Service
+            or a Port.
+            
+            If this is not specified, then the type of service-ref element 
+            that is injected or returned when a JNDI lookup is done is 
+            always a Service interface/class.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="wsdl-file"
+                   type="javaee:xsdAnyURIType"
+                   minOccurs="0"
+                   maxOccurs="1">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The wsdl-file element contains the URI location of a WSDL
+            file. The location is relative to the root of the module.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="jaxrpc-mapping-file"
+                   type="javaee:pathType"
+                   minOccurs="0"
+                   maxOccurs="1">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The jaxrpc-mapping-file element contains the name of a file that
+            describes the JAX-RPC mapping between the Java interaces used by
+            the application and the WSDL description in the wsdl-file.  The 
+            file name is a relative path within the module file.
+            
+            This is not required when JAX-WS based runtime is used.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="service-qname"
+                   type="javaee:xsdQNameType"
+                   minOccurs="0"
+                   maxOccurs="1">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The service-qname element declares the specific WSDL service
+            element that is being refered to.  It is not specified if no
+            wsdl-file is declared.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="port-component-ref"
+                   type="javaee:port-component-refType"
+                   minOccurs="0"
+                   maxOccurs="unbounded">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The port-component-ref element declares a client dependency
+            on the container for resolving a Service Endpoint Interface
+            to a WSDL port. It optionally associates the Service Endpoint
+            Interface with a particular port-component. This is only used
+            by the container for a Service.getPort(Class) method call.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:choice>
+        <xsd:element name="handler"
+                     type="javaee:handlerType"
+                     minOccurs="0"
+                     maxOccurs="unbounded">
+          <xsd:annotation>
+            <xsd:documentation>
+
+              	Declares the handler for a port-component. Handlers can
+              	access the init-param name/value pairs using the
+              	HandlerInfo interface. If port-name is not specified, the
+              	handler is assumed to be associated with all ports of the
+              	service.
+              
+              	To be used with JAX-RPC based runtime only.
+              
+            </xsd:documentation>
+          </xsd:annotation>
+        </xsd:element>
+        <xsd:element name="handler-chains"
+                     type="javaee:handler-chainsType"
+                     minOccurs="0"
+                     maxOccurs="1">
+          <xsd:annotation>
+            <xsd:documentation>
+
+              	 To be used with JAX-WS based runtime only.
+              
+            </xsd:documentation>
+          </xsd:annotation>
+        </xsd:element>
+      </xsd:choice>
+      <xsd:group ref="javaee:resourceGroup"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="port-component-refType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The port-component-ref element declares a client dependency
+        on the container for resolving a Service Endpoint Interface
+        to a WSDL port. It optionally associates the Service Endpoint
+        Interface with a particular port-component. This is only used
+        by the container for a Service.getPort(Class) method call.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="service-endpoint-interface"
+                   type="javaee:fully-qualified-classType">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The service-endpoint-interface element defines a fully qualified
+            Java class that represents the Service Endpoint Interface of a
+            WSDL port.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="enable-mtom"
+                   type="javaee:true-falseType"
+                   minOccurs="0"
+                   maxOccurs="1">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Used to enable or disable SOAP MTOM/XOP mechanism on the client
+            side for a port-component. 
+            
+            Not to be specified for JAX-RPC runtime
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="mtom-threshold"
+                   type="javaee:xsdNonNegativeIntegerType"
+                   minOccurs="0"
+                   maxOccurs="1">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            When MTOM is enabled, binary data above this size in bytes
+            should be XOP encoded or sent as attachment. Default value is 0.
+            
+            Not to be specified for JAX-RPC runtime
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="addressing"
+                   type="javaee:addressingType"
+                   minOccurs="0"
+                   maxOccurs="1">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            This specifies the WS-Addressing requirements for a JAX-WS
+            web service. It corresponds to javax.xml.ws.soap.Addressing
+            annotation or its feature javax.xml.ws.soap.AddressingFeature.
+            
+            See the addressingType for more information.
+            
+            Not to be specified for JAX-RPC runtime
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="respect-binding"
+                   type="javaee:respect-bindingType"
+                   minOccurs="0"
+                   maxOccurs="1">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Corresponds to the javax.xml.ws.RespectBinding annotation
+            or its corresponding javax.xml.ws.RespectBindingFeature web
+            service feature. This is used to control whether a JAX-WS
+            implementation must respect/honor the contents of the
+            wsdl:binding in the WSDL that is associated with the service.
+            
+            Not to be specified for JAX-RPC runtime
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="port-component-link"
+                   type="javaee:string"
+                   minOccurs="0"
+                   maxOccurs="1">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The port-component-link element links a port-component-ref
+            to a specific port-component required to be made available
+            by a service reference.
+            
+            The value of a port-component-link must be the
+            port-component-name of a port-component in the same module
+            or another module in the same application unit. The syntax
+            for specification follows the syntax defined for ejb-link
+            in the EJB 2.0 specification.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="handler-chainsType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The handler-chains element defines the handlerchains associated with this
+        service or service endpoint.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="handler-chain"
+                   type="javaee:handler-chainType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="handler-chainType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The handler-chain element defines the handlerchain. 
+        Handlerchain can be defined such that the handlers in the
+        handlerchain operate,all ports of a service, on a specific
+        port or on a list of protocol-bindings. The choice of elements
+        service-name-pattern, port-name-pattern and protocol-bindings
+        are used to specify whether the handlers in handler-chain are
+        for a service, port or protocol binding. If none of these 
+        choices are specified with the handler-chain element then the
+        handlers specified in the handler-chain will be applied on 
+        everything.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:choice minOccurs="0"
+                  maxOccurs="1">
+        <xsd:element name="service-name-pattern"
+                     type="javaee:qname-pattern"/>
+        <xsd:element name="port-name-pattern"
+                     type="javaee:qname-pattern"/>
+        <xsd:element name="protocol-bindings"
+                     type="javaee:protocol-bindingListType"/>
+      </xsd:choice>
+      <xsd:element name="handler"
+                   type="javaee:handlerType"
+                   minOccurs="1"
+                   maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+  <xsd:simpleType name="protocol-bindingListType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        Defines the type used for specifying a list of
+        protocol-bindingType(s). For e.g.
+        
+        ##SOAP11_HTTP ##SOAP12_HTTP ##XML_HTTP
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:list itemType="javaee:protocol-bindingType"/>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="protocol-bindingType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        Defines the type used for specifying the URI for the
+        protocol binding used by the port-component.  For
+        portability one could use one of the following tokens that
+        alias the standard binding types: 
+        
+        ##SOAP11_HTTP
+        ##SOAP11_HTTP_MTOM
+        ##SOAP12_HTTP
+        ##SOAP12_HTTP_MTOM
+        ##XML_HTTP
+        
+        Other specifications could define tokens that start with ##
+        to alias new standard binding URIs that are introduced.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:union memberTypes="xsd:anyURI javaee:protocol-URIAliasType"/>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="protocol-URIAliasType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        Defines the type that is used for specifying tokens that
+        start with ## which are used to alias existing standard
+        protocol bindings and support aliases for new standard
+        binding URIs that are introduced in future specifications.
+        
+        The following tokens alias the standard protocol binding
+        URIs:
+        
+        ##SOAP11_HTTP = "http://schemas.xmlsoap.org/wsdl/soap/http"
+        ##SOAP11_HTTP_MTOM = 
+        "http://schemas.xmlsoap.org/wsdl/soap/http?mtom=true"
+        ##SOAP12_HTTP = "http://www.w3.org/2003/05/soap/bindings/HTTP/"
+        ##SOAP12_HTTP_MTOM = 
+        "http://www.w3.org/2003/05/soap/bindings/HTTP/?mtom=true"
+        ##XML_HTTP = "http://www.w3.org/2004/08/wsdl/http"
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:token">
+      <xsd:pattern value="##.+"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="qname-pattern">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        This is used to specify the QName pattern in the
+        attribute service-name-pattern and port-name-pattern in
+        the handler-chain element
+        
+        For example, the various forms acceptable here for
+        service-name-pattern attribute in handler-chain element
+        are :
+        
+        Exact Name: service-name-pattern="ns1:EchoService"
+        
+        	 In this case, handlers specified in this
+        	 handler-chain element will apply to all ports with
+        	 this exact service name. The namespace prefix must
+        	 have been declared in a namespace declaration
+        	 attribute in either the start-tag of the element
+        	 where the prefix is used or in an an ancestor 
+        	 element (i.e. an element in whose content the 
+        	 prefixed markup occurs)
+        	 
+        
+        Pattern : service-name-pattern="ns1:EchoService*"
+        
+        	 In this case, handlers specified in this
+        	 handler-chain element will apply to all ports whose
+        	 Service names are like EchoService1, EchoServiceFoo
+        	 etc. The namespace prefix must have been declared in
+        	 a namespace declaration attribute in either the
+        	 start-tag of the element where the prefix is used or
+        	 in an an ancestor element (i.e. an element in whose 
+        	 content the prefixed markup occurs)
+        
+        Wild Card : service-name-pattern="*"
+        
+        	In this case, handlers specified in this handler-chain
+        	element will apply to ports of all service names.
+        
+        The same can be applied to port-name attribute in
+        handler-chain element.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:token">
+      <xsd:pattern value="\*|([\i-[:]][\c-[:]]*:)?[\i-[:]][\c-[:]]*\*?"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="addressingType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        This specifies the WS-Addressing requirements for a JAX-WS web service.
+        It corresponds to javax.xml.ws.soap.Addressing annotation or its
+        feature javax.xml.ws.soap.AddressingFeature.
+        
+        If the "enabled" element is "true", WS-Addressing is enabled.
+        It means that the endpoint supports WS-Addressing but does not require
+        its use. The default value for "enabled" is "true".
+        
+        If the WS-Addressing is enabled and the "required" element is "true",
+        it means that the endpoint requires WS-Addressing. The default value
+        for "required" is "false".
+        
+        If WS-Addressing is enabled, the "responses" element determines
+        if an endpoint requires the use of only anonymous responses,
+        or only non-anonymous responses, or all. The value of the "responses"
+        element must be one of the following:
+        
+        ANONYMOUS
+        NON_ANONYMOUS
+        ALL
+        
+        The default value for the "responses" is ALL.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="enabled"
+                   type="javaee:true-falseType"
+                   minOccurs="0"
+                   maxOccurs="1"/>
+      <xsd:element name="required"
+                   type="javaee:true-falseType"
+                   minOccurs="0"
+                   maxOccurs="1"/>
+      <xsd:element name="responses"
+                   type="javaee:addressing-responsesType"
+                   minOccurs="0"
+                   maxOccurs="1"/>
+    </xsd:sequence>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="addressing-responsesType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        If WS-Addressing is enabled, this type determines if an endpoint
+        requires the use of only anonymous responses, or only non-anonymous
+        responses, or all.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="javaee:string">
+        <xsd:enumeration value="ANONYMOUS"/>
+        <xsd:enumeration value="NON_ANONYMOUS"/>
+        <xsd:enumeration value="ALL"/>
+      </xsd:restriction>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="respect-bindingType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        Corresponds to the javax.xml.ws.RespectBinding annotation
+        or its corresponding javax.xml.ws.RespectBindingFeature web
+        service feature. This is used to control whether a JAX-WS
+        implementation must respect/honor the contents of the
+        wsdl:binding in the WSDL that is associated with the service.
+        
+        If the "enabled" element is "true", wsdl:binding in the
+        associated WSDL, if any, must be respected/honored.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="enabled"
+                   type="javaee:true-falseType"
+                   minOccurs="0"
+                   maxOccurs="1"/>
+    </xsd:sequence>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="handlerType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        Declares the handler for a port-component, service-ref. Handlers can
+        access the init-param name/value pairs using the HandlerInfo interface.
+        
+        Used in: port-component, service-ref
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:group ref="javaee:descriptionGroup"/>
+      <xsd:element name="handler-name"
+                   type="javaee:string">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Defines the name of the handler. The name must be unique within the
+            module.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="handler-class"
+                   type="javaee:fully-qualified-classType">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Defines a fully qualified class name for the handler implementation.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="init-param"
+                   type="javaee:param-valueType"
+                   minOccurs="0"
+                   maxOccurs="unbounded">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Not to be specified for JAX-WS runtime
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="soap-header"
+                   type="javaee:xsdQNameType"
+                   minOccurs="0"
+                   maxOccurs="unbounded">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Defines the QName of a SOAP header that will be processed by the
+            handler.
+            
+            Not to be specified for JAX-WS runtime
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="soap-role"
+                   type="javaee:string"
+                   minOccurs="0"
+                   maxOccurs="unbounded">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The soap-role element contains a SOAP actor definition that the
+            Handler will play as a role.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="port-name"
+                   type="javaee:string"
+                   minOccurs="0"
+                   maxOccurs="unbounded">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The port-name element defines the WSDL port-name that a
+            handler should be associated with. If port-name is not
+            specified, the handler is assumed to be associated with
+            all ports of the service.
+            
+            Not to be specified for JAX-WS runtime
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+  <xsd:group name="service-refGroup">
+    <xsd:sequence>
+      <xsd:element name="service-ref"
+                   type="javaee:service-refType"
+                   minOccurs="0"
+                   maxOccurs="unbounded">
+        <xsd:key name="service-ref_handler-name-key">
+          <xsd:annotation>
+            <xsd:documentation>
+
+              Defines the name of the handler. The name must be unique
+              within the module.
+              
+            </xsd:documentation>
+          </xsd:annotation>
+          <xsd:selector xpath="javaee:handler"/>
+          <xsd:field xpath="javaee:handler-name"/>
+        </xsd:key>
+      </xsd:element>
+    </xsd:sequence>
+  </xsd:group>
+
+</xsd:schema>
diff --git a/jsf-api/doc/javaee_web_services_client_1_4.xsd b/jsf-api/doc/javaee_web_services_client_1_4.xsd
new file mode 100644
index 0000000..d474a8d
--- /dev/null
+++ b/jsf-api/doc/javaee_web_services_client_1_4.xsd
@@ -0,0 +1,737 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsd:schema xmlns="http://www.w3.org/2001/XMLSchema"
+            targetNamespace="http://xmlns.jcp.org/xml/ns/javaee"
+            xmlns:javaee="http://xmlns.jcp.org/xml/ns/javaee"
+            xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+            elementFormDefault="qualified"
+            attributeFormDefault="unqualified"
+            version="1.4">
+  <xsd:annotation>
+    <xsd:documentation>
+
+      DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+      
+      Copyright (c) 2009-2013 Oracle and/or its affiliates. All rights reserved.
+      
+      The contents of this file are subject to the terms of either the GNU
+      General Public License Version 2 only ("GPL") or the Common Development
+      and Distribution License("CDDL") (collectively, the "License").  You
+      may not use this file except in compliance with the License.  You can
+      obtain a copy of the License at
+      https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+      or packager/legal/LICENSE.txt.  See the License for the specific
+      language governing permissions and limitations under the License.
+      
+      When distributing the software, include this License Header Notice in each
+      file and include the License file at packager/legal/LICENSE.txt.
+      
+      GPL Classpath Exception:
+      Oracle designates this particular file as subject to the "Classpath"
+      exception as provided by Oracle in the GPL Version 2 section of the License
+      file that accompanied this code.
+      
+      Modifications:
+      If applicable, add the following below the License Header, with the fields
+      enclosed by brackets [] replaced by your own identifying information:
+      "Portions Copyright [year] [name of copyright owner]"
+      
+      Contributor(s):
+      If you wish your version of this file to be governed by only the CDDL or
+      only the GPL Version 2, indicate your decision by adding "[Contributor]
+      elects to include this software in this distribution under the [CDDL or GPL
+      Version 2] license."  If you don't indicate a single choice of license, a
+      recipient has the option to distribute your version of this file under
+      either the CDDL, the GPL Version 2 or to extend the choice of license to
+      its licensees as provided above.  However, if you add GPL Version 2 code
+      and therefore, elected the GPL Version 2 license, then the option applies
+      only if the new code is made subject to such option by the copyright
+      holder.
+      
+    </xsd:documentation>
+  </xsd:annotation>
+
+  <xsd:annotation>
+    <xsd:documentation>
+
+      (C) Copyright International Business Machines Corporation 2002
+      
+    </xsd:documentation>
+  </xsd:annotation>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="service-refType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The service-ref element declares a reference to a Web
+        service. It contains optional description, display name and
+        icons, a declaration of the required Service interface,
+        an optional WSDL document location, an optional set
+        of JAX-RPC mappings, an optional QName for the service element,
+        an optional set of Service Endpoint Interfaces to be resolved 
+        by the container to a WSDL port, and an optional set of handlers.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:group ref="javaee:descriptionGroup"/>
+      <xsd:element name="service-ref-name"
+                   type="javaee:jndi-nameType">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The service-ref-name element declares logical name that the
+            components in the module use to look up the Web service. It 
+            is recommended that all service reference names start with 
+            "service/".
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="service-interface"
+                   type="javaee:fully-qualified-classType">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The service-interface element declares the fully qualified class
+            name of the JAX-RPC Service interface the client depends on. 
+            In most cases the value will be javax.xml.rpc.Service.  A JAX-RPC
+            generated Service Interface class may also be specified.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="service-ref-type"
+                   type="javaee:fully-qualified-classType"
+                   minOccurs="0"
+                   maxOccurs="1">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The service-ref-type element declares the type of the service-ref 
+            element that is injected or returned when a JNDI lookup is done.
+            This must be either a fully qualified name of Service class or 
+            the fully qualified name of service endpoint interface class. 
+            This is only used with JAX-WS runtime where the corresponding 
+            @WebServiceRef annotation can be used to denote both a Service
+            or a Port.
+            
+            If this is not specified, then the type of service-ref element 
+            that is injected or returned when a JNDI lookup is done is 
+            always a Service interface/class.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="wsdl-file"
+                   type="javaee:xsdAnyURIType"
+                   minOccurs="0"
+                   maxOccurs="1">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The wsdl-file element contains the URI location of a WSDL
+            file. The location is relative to the root of the module.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="jaxrpc-mapping-file"
+                   type="javaee:pathType"
+                   minOccurs="0"
+                   maxOccurs="1">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The jaxrpc-mapping-file element contains the name of a file that
+            describes the JAX-RPC mapping between the Java interaces used by
+            the application and the WSDL description in the wsdl-file.  The 
+            file name is a relative path within the module file.
+            
+            This is not required when JAX-WS based runtime is used.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="service-qname"
+                   type="javaee:xsdQNameType"
+                   minOccurs="0"
+                   maxOccurs="1">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The service-qname element declares the specific WSDL service
+            element that is being refered to.  It is not specified if no
+            wsdl-file is declared.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="port-component-ref"
+                   type="javaee:port-component-refType"
+                   minOccurs="0"
+                   maxOccurs="unbounded">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The port-component-ref element declares a client dependency
+            on the container for resolving a Service Endpoint Interface
+            to a WSDL port. It optionally associates the Service Endpoint
+            Interface with a particular port-component. This is only used
+            by the container for a Service.getPort(Class) method call.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:choice>
+        <xsd:element name="handler"
+                     type="javaee:handlerType"
+                     minOccurs="0"
+                     maxOccurs="unbounded">
+          <xsd:annotation>
+            <xsd:documentation>
+
+              	Declares the handler for a port-component. Handlers can
+              	access the init-param name/value pairs using the
+              	HandlerInfo interface. If port-name is not specified, the
+              	handler is assumed to be associated with all ports of the
+              	service.
+              
+              	To be used with JAX-RPC based runtime only.
+              
+            </xsd:documentation>
+          </xsd:annotation>
+        </xsd:element>
+        <xsd:element name="handler-chains"
+                     type="javaee:handler-chainsType"
+                     minOccurs="0"
+                     maxOccurs="1">
+          <xsd:annotation>
+            <xsd:documentation>
+
+              	 To be used with JAX-WS based runtime only.
+              
+            </xsd:documentation>
+          </xsd:annotation>
+        </xsd:element>
+      </xsd:choice>
+      <xsd:group ref="javaee:resourceGroup"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="port-component-refType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The port-component-ref element declares a client dependency
+        on the container for resolving a Service Endpoint Interface
+        to a WSDL port. It optionally associates the Service Endpoint
+        Interface with a particular port-component. This is only used
+        by the container for a Service.getPort(Class) method call.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="service-endpoint-interface"
+                   type="javaee:fully-qualified-classType">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The service-endpoint-interface element defines a fully qualified
+            Java class that represents the Service Endpoint Interface of a
+            WSDL port.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="enable-mtom"
+                   type="javaee:true-falseType"
+                   minOccurs="0"
+                   maxOccurs="1">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Used to enable or disable SOAP MTOM/XOP mechanism on the client
+            side for a port-component. 
+            
+            Not to be specified for JAX-RPC runtime
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="mtom-threshold"
+                   type="javaee:xsdNonNegativeIntegerType"
+                   minOccurs="0"
+                   maxOccurs="1">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            When MTOM is enabled, binary data above this size in bytes
+            should be XOP encoded or sent as attachment. Default value is 0.
+            
+            Not to be specified for JAX-RPC runtime
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="addressing"
+                   type="javaee:addressingType"
+                   minOccurs="0"
+                   maxOccurs="1">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            This specifies the WS-Addressing requirements for a JAX-WS
+            web service. It corresponds to javax.xml.ws.soap.Addressing
+            annotation or its feature javax.xml.ws.soap.AddressingFeature.
+            
+            See the addressingType for more information.
+            
+            Not to be specified for JAX-RPC runtime
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="respect-binding"
+                   type="javaee:respect-bindingType"
+                   minOccurs="0"
+                   maxOccurs="1">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Corresponds to the javax.xml.ws.RespectBinding annotation
+            or its corresponding javax.xml.ws.RespectBindingFeature web
+            service feature. This is used to control whether a JAX-WS
+            implementation must respect/honor the contents of the
+            wsdl:binding in the WSDL that is associated with the service.
+            
+            Not to be specified for JAX-RPC runtime
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="port-component-link"
+                   type="javaee:string"
+                   minOccurs="0"
+                   maxOccurs="1">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The port-component-link element links a port-component-ref
+            to a specific port-component required to be made available
+            by a service reference.
+            
+            The value of a port-component-link must be the
+            port-component-name of a port-component in the same module
+            or another module in the same application unit. The syntax
+            for specification follows the syntax defined for ejb-link
+            in the EJB 2.0 specification.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="handler-chainsType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The handler-chains element defines the handlerchains associated with this
+        service or service endpoint.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="handler-chain"
+                   type="javaee:handler-chainType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="handler-chainType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The handler-chain element defines the handlerchain. 
+        Handlerchain can be defined such that the handlers in the
+        handlerchain operate,all ports of a service, on a specific
+        port or on a list of protocol-bindings. The choice of elements
+        service-name-pattern, port-name-pattern and protocol-bindings
+        are used to specify whether the handlers in handler-chain are
+        for a service, port or protocol binding. If none of these 
+        choices are specified with the handler-chain element then the
+        handlers specified in the handler-chain will be applied on 
+        everything.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:choice minOccurs="0"
+                  maxOccurs="1">
+        <xsd:element name="service-name-pattern"
+                     type="javaee:qname-pattern"/>
+        <xsd:element name="port-name-pattern"
+                     type="javaee:qname-pattern"/>
+        <xsd:element name="protocol-bindings"
+                     type="javaee:protocol-bindingListType"/>
+      </xsd:choice>
+      <xsd:element name="handler"
+                   type="javaee:handlerType"
+                   minOccurs="1"
+                   maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+  <xsd:simpleType name="protocol-bindingListType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        Defines the type used for specifying a list of
+        protocol-bindingType(s). For e.g.
+        
+        ##SOAP11_HTTP ##SOAP12_HTTP ##XML_HTTP
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:list itemType="javaee:protocol-bindingType"/>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="protocol-bindingType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        Defines the type used for specifying the URI for the
+        protocol binding used by the port-component.  For
+        portability one could use one of the following tokens that
+        alias the standard binding types: 
+        
+        ##SOAP11_HTTP
+        ##SOAP11_HTTP_MTOM
+        ##SOAP12_HTTP
+        ##SOAP12_HTTP_MTOM
+        ##XML_HTTP
+        
+        Other specifications could define tokens that start with ##
+        to alias new standard binding URIs that are introduced.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:union memberTypes="xsd:anyURI javaee:protocol-URIAliasType"/>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="protocol-URIAliasType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        Defines the type that is used for specifying tokens that
+        start with ## which are used to alias existing standard
+        protocol bindings and support aliases for new standard
+        binding URIs that are introduced in future specifications.
+        
+        The following tokens alias the standard protocol binding
+        URIs:
+        
+        ##SOAP11_HTTP = "http://schemas.xmlsoap.org/wsdl/soap/http"
+        ##SOAP11_HTTP_MTOM = 
+        "http://schemas.xmlsoap.org/wsdl/soap/http?mtom=true"
+        ##SOAP12_HTTP = "http://www.w3.org/2003/05/soap/bindings/HTTP/"
+        ##SOAP12_HTTP_MTOM = 
+        "http://www.w3.org/2003/05/soap/bindings/HTTP/?mtom=true"
+        ##XML_HTTP = "http://www.w3.org/2004/08/wsdl/http"
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:token">
+      <xsd:pattern value="##.+"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="qname-pattern">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        This is used to specify the QName pattern in the
+        attribute service-name-pattern and port-name-pattern in
+        the handler-chain element
+        
+        For example, the various forms acceptable here for
+        service-name-pattern attribute in handler-chain element
+        are :
+        
+        Exact Name: service-name-pattern="ns1:EchoService"
+        
+        	 In this case, handlers specified in this
+        	 handler-chain element will apply to all ports with
+        	 this exact service name. The namespace prefix must
+        	 have been declared in a namespace declaration
+        	 attribute in either the start-tag of the element
+        	 where the prefix is used or in an an ancestor 
+        	 element (i.e. an element in whose content the 
+        	 prefixed markup occurs)
+        	 
+        
+        Pattern : service-name-pattern="ns1:EchoService*"
+        
+        	 In this case, handlers specified in this
+        	 handler-chain element will apply to all ports whose
+        	 Service names are like EchoService1, EchoServiceFoo
+        	 etc. The namespace prefix must have been declared in
+        	 a namespace declaration attribute in either the
+        	 start-tag of the element where the prefix is used or
+        	 in an an ancestor element (i.e. an element in whose 
+        	 content the prefixed markup occurs)
+        
+        Wild Card : service-name-pattern="*"
+        
+        	In this case, handlers specified in this handler-chain
+        	element will apply to ports of all service names.
+        
+        The same can be applied to port-name attribute in
+        handler-chain element.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:token">
+      <xsd:pattern value="\*|([\i-[:]][\c-[:]]*:)?[\i-[:]][\c-[:]]*\*?"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="addressingType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        This specifies the WS-Addressing requirements for a JAX-WS web service.
+        It corresponds to javax.xml.ws.soap.Addressing annotation or its
+        feature javax.xml.ws.soap.AddressingFeature.
+        
+        If the "enabled" element is "true", WS-Addressing is enabled.
+        It means that the endpoint supports WS-Addressing but does not require
+        its use. The default value for "enabled" is "true".
+        
+        If the WS-Addressing is enabled and the "required" element is "true",
+        it means that the endpoint requires WS-Addressing. The default value
+        for "required" is "false".
+        
+        If WS-Addressing is enabled, the "responses" element determines
+        if an endpoint requires the use of only anonymous responses,
+        or only non-anonymous responses, or all. The value of the "responses"
+        element must be one of the following:
+        
+        ANONYMOUS
+        NON_ANONYMOUS
+        ALL
+        
+        The default value for the "responses" is ALL.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="enabled"
+                   type="javaee:true-falseType"
+                   minOccurs="0"
+                   maxOccurs="1"/>
+      <xsd:element name="required"
+                   type="javaee:true-falseType"
+                   minOccurs="0"
+                   maxOccurs="1"/>
+      <xsd:element name="responses"
+                   type="javaee:addressing-responsesType"
+                   minOccurs="0"
+                   maxOccurs="1"/>
+    </xsd:sequence>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="addressing-responsesType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        If WS-Addressing is enabled, this type determines if an endpoint
+        requires the use of only anonymous responses, or only non-anonymous
+        responses, or all.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="javaee:string">
+        <xsd:enumeration value="ANONYMOUS"/>
+        <xsd:enumeration value="NON_ANONYMOUS"/>
+        <xsd:enumeration value="ALL"/>
+      </xsd:restriction>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="respect-bindingType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        Corresponds to the javax.xml.ws.RespectBinding annotation
+        or its corresponding javax.xml.ws.RespectBindingFeature web
+        service feature. This is used to control whether a JAX-WS
+        implementation must respect/honor the contents of the
+        wsdl:binding in the WSDL that is associated with the service.
+        
+        If the "enabled" element is "true", wsdl:binding in the
+        associated WSDL, if any, must be respected/honored.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="enabled"
+                   type="javaee:true-falseType"
+                   minOccurs="0"
+                   maxOccurs="1"/>
+    </xsd:sequence>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="handlerType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        Declares the handler for a port-component, service-ref. Handlers can
+        access the init-param name/value pairs using the HandlerInfo interface.
+        
+        Used in: port-component, service-ref
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:group ref="javaee:descriptionGroup"/>
+      <xsd:element name="handler-name"
+                   type="javaee:string">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Defines the name of the handler. The name must be unique within the
+            module.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="handler-class"
+                   type="javaee:fully-qualified-classType">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Defines a fully qualified class name for the handler implementation.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="init-param"
+                   type="javaee:param-valueType"
+                   minOccurs="0"
+                   maxOccurs="unbounded">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Not to be specified for JAX-WS runtime
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="soap-header"
+                   type="javaee:xsdQNameType"
+                   minOccurs="0"
+                   maxOccurs="unbounded">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Defines the QName of a SOAP header that will be processed by the
+            handler.
+            
+            Not to be specified for JAX-WS runtime
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="soap-role"
+                   type="javaee:string"
+                   minOccurs="0"
+                   maxOccurs="unbounded">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The soap-role element contains a SOAP actor definition that the
+            Handler will play as a role.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="port-name"
+                   type="javaee:string"
+                   minOccurs="0"
+                   maxOccurs="unbounded">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The port-name element defines the WSDL port-name that a
+            handler should be associated with. If port-name is not
+            specified, the handler is assumed to be associated with
+            all ports of the service.
+            
+            Not to be specified for JAX-WS runtime
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+  <xsd:group name="service-refGroup">
+    <xsd:sequence>
+      <xsd:element name="service-ref"
+                   type="javaee:service-refType"
+                   minOccurs="0"
+                   maxOccurs="unbounded">
+        <xsd:key name="service-ref_handler-name-key">
+          <xsd:annotation>
+            <xsd:documentation>
+
+              Defines the name of the handler. The name must be unique
+              within the module.
+              
+            </xsd:documentation>
+          </xsd:annotation>
+          <xsd:selector xpath="javaee:handler"/>
+          <xsd:field xpath="javaee:handler-name"/>
+        </xsd:key>
+      </xsd:element>
+    </xsd:sequence>
+  </xsd:group>
+
+</xsd:schema>
diff --git a/jsf-api/doc/jsdoc-template/static/default.css b/jsf-api/doc/jsdoc-template/static/default.css
new file mode 100644
index 0000000..4dfa560
--- /dev/null
+++ b/jsf-api/doc/jsdoc-template/static/default.css
@@ -0,0 +1,265 @@
+/* default.css */
+body
+{
+	font: 12px "Lucida Grande", Tahoma, Arial, Helvetica, sans-serif;
+	width: 800px;
+        background: url(expert-draft-bg.png); 
+}
+
+.header
+{
+	clear: both;
+	background-color: #ccc;
+	padding: 8px;
+}
+
+h1
+{
+	font-size: 150%;
+	font-weight: bold;
+	padding: 0;
+	margin: 1em 0 0 .3em;
+}
+
+hr
+{
+	border: none 0;
+	border-top: 1px solid #000000;
+	height: 1px;
+}
+
+pre.code
+{
+	display: block;
+	padding: 8px;
+	border: 1px dashed #ccc;
+}
+
+#index
+{
+	margin-top: 24px;
+	float: left;
+	width: 160px;
+	position: absolute;
+	left: 8px;
+	background-color: #F3F3F3;
+	padding: 8px;
+}
+
+#content
+{
+	margin-left: 190px;
+	width: 600px;
+}
+
+.classList
+{
+	list-style-type: none;
+	padding: 0;
+	margin: 0 0 0 8px;
+	font-family: arial, sans-serif;
+	font-size: 1em;
+	overflow: auto;
+}
+
+.classList li
+{
+	padding: 0;
+	margin: 0 0 8px 0;
+}
+
+.summaryTable { width: 100%; }
+
+h1.classTitle
+{
+	font-size:170%;
+	line-height:130%;
+}
+
+h2 { font-size: 110%; }
+caption, div.sectionTitle
+{
+	background-color: #000000;
+	color: #fff;
+	font-size:130%;
+	text-align: left;
+	padding: 2px 6px 2px 6px;
+	border: 1px #000000 solid;
+}
+
+div.sectionTitle { margin-bottom: 8px; }
+.summaryTable thead { display: none; }
+
+.summaryTable td
+{
+	vertical-align: top;
+	padding: 4px;
+	border-bottom: 1px #000000 solid;
+	border-right: 1px #000000 solid;
+}
+
+/*col#summaryAttributes {}*/
+.summaryTable td.attributes
+{
+	border-left: 1px #000000 solid;
+	width: 140px;
+	text-align: right;
+}
+
+td.attributes, .fixedFont
+{
+	line-height: 15px;
+	color: #002EBE;
+	font-family: "Courier New",Courier,monospace;
+	font-size: 13px;
+}
+
+.summaryTable td.nameDescription
+{
+	text-align: left;
+	font-size: 13px;
+	line-height: 15px;
+}
+
+.summaryTable td.nameDescription, .description
+{
+	line-height: 15px;
+	padding: 4px;
+	padding-left: 4px;
+}
+
+.summaryTable { margin-bottom: 8px; }
+
+ul.inheritsList
+{
+	list-style: square;
+	margin-left: 20px;
+	padding-left: 0;
+}
+
+.detailList {
+	margin-left: 20px; 
+	line-height: 15px;
+}
+.detailList dt { margin-left: 20px; }
+
+.detailList .heading
+{
+	font-weight: bold;
+	padding-bottom: 6px;
+	margin-left: 0;
+}
+
+.light, td.attributes, .light a:link, .light a:visited
+{
+	color: #777;
+	font-style: italic;
+}
+
+.fineprint
+{
+	text-align: right;
+	font-size: 10px;
+}
+
+/* Change bars from http://www.geocities.com/hentaihelper/2atimlin.htm */
+
+/* put a red "change" bar in the left margin			*/
+/*
+   .changed_added_2_0 { cursor: url(changed_added_2_0_cursor.png), auto;
+                 background: url(changed_added_2_0.png); 
+                 padding-left:0.2em; border-left:solid;
+                 border-left-width:thin; border-right:none;
+                 border-top:none; border-bottom:none; border-color:green }
+
+   .changed_modified_2_0 { cursor: url(changed_modified_2_0_cursor.png), auto;
+                 background: url(changed_modified_2_0.png); 
+                 padding-left:0.2em; border-left:solid;
+                 border-left-width:thin; border-right:none;
+                 border-top:none; border-bottom:none; border-color:orange }
+
+   .changed_deleted_2_0 { cursor: url(changed_deleted_2_0_cursor.png), auto;
+                 background: url(changed_deleted_2_0.png); 
+                 padding-left:0.2em; border-left:solid;
+                 border-left-width:thin; border-right:none;
+                 border-top:none; border-bottom:none; border-color:red;
+                 text-decoration: line-through; }
+
+   .changed_added_2_0_rev_a { cursor: url(changed_added_2_0_rev_a_cursor.cur), auto;
+                 background: url(changed_added_2_0_rev_a.png); 
+                 padding-left:0.2em; border-left:solid;
+                 border-left-width:thin; border-right:none;
+                 border-top:none; border-bottom:none; border-color:green }
+
+   .changed_modified_2_0_rev_a { cursor: url(changed_modified_2_0_rev_a_cursor.cur), auto;
+                 background: url(changed_modified_2_0_rev_a.png); 
+                 padding-left:0.2em; border-left:solid;
+                 border-left-width:thin; border-right:none;
+                 border-top:none; border-bottom:none; border-color:orange }
+
+   .changed_deleted_2_0_rev_a { cursor: url(changed_deleted_2_0_rev_a_cursor.cur), auto;
+                 background: url(changed_deleted_2_0_rev_a.png); 
+                 padding-left:0.2em; border-left:solid;
+                 border-left-width:thin; border-right:none;
+                 border-top:none; border-bottom:none; border-color:red;
+                 text-decoration: line-through; }
+
+   .changed_added_2_1 { cursor: url(changed_added_2_1_cursor.cur), auto;
+                 background: url(changed_added_2_1.png); 
+                 padding-left:0.2em; border-left:solid;
+                 border-left-width:thin; border-right:none;
+                 border-top:none; border-bottom:none; border-color:green }
+
+   .changed_modified_2_1 { cursor: url(changed_modified_2_1_cursor.cur), auto;
+                 background: url(changed_modified_2_1.png); 
+                 padding-left:0.2em; border-left:solid;
+                 border-left-width:thin; border-right:none;
+                 border-top:none; border-bottom:none; border-color:orange }
+
+   .changed_deleted_2_1 { cursor: url(changed_deleted_2_1_cursor.cur), auto;
+                 background: url(changed_deleted_2_1.png); 
+                 padding-left:0.2em; border-left:solid;
+                 border-left-width:thin; border-right:none;
+                 border-top:none; border-bottom:none; border-color:red;
+                 text-decoration: line-through; }
+
+
+   .changed_added_2_2 { cursor: url(changed_added_2_2_cursor.cur), auto;
+                 background: url(changed_added_2_2.png); 
+                 padding-left:0.2em; border-left:solid;
+                 border-left-width:thin; border-right:none;
+                 border-top:none; border-bottom:none; border-color:green }
+
+   .changed_modified_2_2 { cursor: url(changed_modified_2_2_cursor.cur), auto;
+                 background: url(changed_modified_2_2.png); 
+                 padding-left:0.2em; border-left:solid;
+                 border-left-width:thin; border-right:none;
+                 border-top:none; border-bottom:none; border-color:orange }
+
+   .changed_deleted_2_2 { cursor: url(changed_deleted_2_2_cursor.cur), auto;
+                 background: url(changed_deleted_2_2.png); 
+                 padding-left:0.2em; border-left:solid;
+                 border-left-width:thin; border-right:none;
+                 border-top:none; border-bottom:none; border-color:red;
+                 text-decoration: line-through; }
+
+*/
+
+   .changed_added_2_3 { cursor: url(changed_added_2_3_cursor.cur), auto;
+                 background: url(changed_added_2_3.png); 
+                 padding-left:0.2em; border-left:solid;
+                 border-left-width:thin; border-right:none;
+                 border-top:none; border-bottom:none; border-color:green }
+
+   .changed_modified_2_3 { cursor: url(changed_modified_2_3_cursor.cur), auto;
+                 background: url(changed_modified_2_3.png); 
+                 padding-left:0.2em; border-left:solid;
+                 border-left-width:thin; border-right:none;
+                 border-top:none; border-bottom:none; border-color:orange }
+
+   .changed_deleted_2_3 { cursor: url(changed_deleted_2_3_cursor.cur), auto;
+                 background: url(changed_deleted_2_3.png); 
+                 padding-left:0.2em; border-left:solid;
+                 border-left-width:thin; border-right:none;
+                 border-top:none; border-bottom:none; border-color:red;
+                 text-decoration: line-through; }
diff --git a/jsf-api/doc/link-props.xml b/jsf-api/doc/link-props.xml
index ee5c721..f6fc0e4 100644
--- a/jsf-api/doc/link-props.xml
+++ b/jsf-api/doc/link-props.xml
@@ -1,41 +1,45 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
--->
 
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
 
 <!-- ========== Link Properties ============================================ -->
 
@@ -63,7 +67,7 @@
         <property-name>charset</property-name>
         <property-class>java.lang.String</property-class>
         <property-extension>
-            <pass-through>true</pass-through>
+            <ignored-by-renderer>true</ignored-by-renderer>
         </property-extension>
     </property>
 
@@ -77,7 +81,7 @@
         <property-name>coords</property-name>
         <property-class>java.lang.String</property-class>
         <property-extension>
-            <pass-through>true</pass-through>
+            <ignored-by-renderer>true</ignored-by-renderer>
         </property-extension>
     </property>
 
@@ -91,7 +95,7 @@
         <property-name>hreflang</property-name>
         <property-class>java.lang.String</property-class>
         <property-extension>
-            <pass-through>true</pass-through>
+            <ignored-by-renderer>true</ignored-by-renderer>
         </property-extension>
     </property>
 
@@ -107,7 +111,7 @@
         <property-name>rel</property-name>
         <property-class>java.lang.String</property-class>
         <property-extension>
-            <pass-through>true</pass-through>
+            <ignored-by-renderer>true</ignored-by-renderer>
         </property-extension>
     </property>
 
@@ -123,7 +127,7 @@
         <property-name>rev</property-name>
         <property-class>java.lang.String</property-class>
         <property-extension>
-            <pass-through>true</pass-through>
+            <ignored-by-renderer>true</ignored-by-renderer>
         </property-extension>
     </property>
 
@@ -140,7 +144,7 @@
         <property-name>shape</property-name>
         <property-class>java.lang.String</property-class>
         <property-extension>
-            <pass-through>true</pass-through>
+            <ignored-by-renderer>true</ignored-by-renderer>
         </property-extension>
     </property>
 
@@ -155,7 +159,7 @@
         <property-name>target</property-name>
         <property-class>java.lang.String</property-class>
         <property-extension>
-            <pass-through>false</pass-through>
+            <ignored-by-renderer>false</ignored-by-renderer>
         </property-extension>
     </property>
 
@@ -169,7 +173,7 @@
         <property-name>type</property-name>
         <property-class>java.lang.String</property-class>
         <property-extension>
-            <pass-through>true</pass-through>
+            <ignored-by-renderer>true</ignored-by-renderer>
         </property-extension>
     </property>
 
@@ -184,7 +188,7 @@
         <property-name>disabled</property-name>
         <property-class>boolean</property-class>
         <property-extension>
-            <pass-through>false</pass-through>
+            <ignored-by-renderer>false</ignored-by-renderer>
         </property-extension>
     </property>
 
@@ -198,7 +202,7 @@
         <property-name>onclick</property-name>
         <property-class>java.lang.String</property-class>
         <property-extension>
-            <pass-through>false</pass-through>
+            <ignored-by-renderer>false</ignored-by-renderer>
             <behavior/>
             <behavior>action</behavior>
             <default-behavior>true</default-behavior>
@@ -215,7 +219,7 @@
         <property-name>ondblclick</property-name>
         <property-class>java.lang.String</property-class>
         <property-extension>
-            <pass-through>true</pass-through>
+            <ignored-by-renderer>true</ignored-by-renderer>
             <behavior/>
         </property-extension>
     </property>
@@ -230,7 +234,7 @@
         <property-name>onmousedown</property-name>
         <property-class>java.lang.String</property-class>
         <property-extension>
-            <pass-through>true</pass-through>
+            <ignored-by-renderer>true</ignored-by-renderer>
             <behavior/>
         </property-extension>
     </property>
@@ -245,7 +249,7 @@
         <property-name>onmouseup</property-name>
         <property-class>java.lang.String</property-class>
         <property-extension>
-            <pass-through>true</pass-through>
+            <ignored-by-renderer>true</ignored-by-renderer>
             <behavior/>
         </property-extension>
     </property>
@@ -260,7 +264,7 @@
         <property-name>onmouseover</property-name>
         <property-class>java.lang.String</property-class>
         <property-extension>
-            <pass-through>true</pass-through>
+            <ignored-by-renderer>true</ignored-by-renderer>
             <behavior/>
         </property-extension>
     </property>
@@ -275,7 +279,7 @@
         <property-name>onmousemove</property-name>
         <property-class>java.lang.String</property-class>
         <property-extension>
-            <pass-through>true</pass-through>
+            <ignored-by-renderer>true</ignored-by-renderer>
             <behavior/>
         </property-extension>
     </property>
@@ -290,7 +294,7 @@
         <property-name>onmouseout</property-name>
         <property-class>java.lang.String</property-class>
         <property-extension>
-            <pass-through>true</pass-through>
+            <ignored-by-renderer>true</ignored-by-renderer>
             <behavior/>
         </property-extension>
     </property>
@@ -305,7 +309,7 @@
         <property-name>onkeypress</property-name>
         <property-class>java.lang.String</property-class>
         <property-extension>
-            <pass-through>true</pass-through>
+            <ignored-by-renderer>true</ignored-by-renderer>
             <behavior/>
         </property-extension>
     </property>
@@ -320,7 +324,7 @@
         <property-name>onkeydown</property-name>
         <property-class>java.lang.String</property-class>
         <property-extension>
-            <pass-through>true</pass-through>
+            <ignored-by-renderer>true</ignored-by-renderer>
             <behavior/>
         </property-extension>
     </property>
@@ -335,7 +339,7 @@
         <property-name>onkeyup</property-name>
         <property-class>java.lang.String</property-class>
         <property-extension>
-            <pass-through>true</pass-through>
+            <ignored-by-renderer>true</ignored-by-renderer>
             <behavior/>
         </property-extension>
     </property>
diff --git a/jsf-api/doc/list-props.xml b/jsf-api/doc/list-props.xml
index 94101e8..855c8f3 100644
--- a/jsf-api/doc/list-props.xml
+++ b/jsf-api/doc/list-props.xml
@@ -1,41 +1,45 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
--->
 
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
 
 <!-- ========== List Properties ============================================ -->
 
diff --git a/jsf-api/doc/listbox-props.xml b/jsf-api/doc/listbox-props.xml
index 5999d2b..99affe2 100644
--- a/jsf-api/doc/listbox-props.xml
+++ b/jsf-api/doc/listbox-props.xml
@@ -1,41 +1,45 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
--->
 
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
 
 <!-- ========== Listbox Properties ========================================= -->
 
diff --git a/jsf-api/doc/menu-props.xml b/jsf-api/doc/menu-props.xml
index 38be320..3a3a7cb 100644
--- a/jsf-api/doc/menu-props.xml
+++ b/jsf-api/doc/menu-props.xml
@@ -1,41 +1,45 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
--->
 
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
 
 <!-- ========== Menu Properties ========================================= -->
 
@@ -74,4 +78,4 @@
         <property-name>enabledClass</property-name>
         <property-class>java.lang.String</property-class>
     </property>
-</root>
\ No newline at end of file
+</root>
diff --git a/jsf-api/doc/message-message-props.xml b/jsf-api/doc/message-message-props.xml
index 270fe21..818a3fc 100644
--- a/jsf-api/doc/message-message-props.xml
+++ b/jsf-api/doc/message-message-props.xml
@@ -1,41 +1,45 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
--->
 
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
 
 <!-- ========== Message+Message Properties ================================= -->
 
diff --git a/jsf-api/doc/messages-messages-props.xml b/jsf-api/doc/messages-messages-props.xml
index b80220b..2c0d63b 100644
--- a/jsf-api/doc/messages-messages-props.xml
+++ b/jsf-api/doc/messages-messages-props.xml
@@ -1,41 +1,45 @@
 <?xml version='1.0' encoding='UTF-8'?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
--->
 
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
 
 <!-- ========== Messages+Messages Properties =============================== -->
 
diff --git a/jsf-api/doc/output-format-props.xml b/jsf-api/doc/output-format-props.xml
index b0adf5c..e116a4b 100644
--- a/jsf-api/doc/output-format-props.xml
+++ b/jsf-api/doc/output-format-props.xml
@@ -1,41 +1,45 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
--->
 
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
 
 <!-- ========== Output+Format Properties =================================== -->
 
diff --git a/jsf-api/doc/output-label-props.xml b/jsf-api/doc/output-label-props.xml
index 671b330..06b9954 100644
--- a/jsf-api/doc/output-label-props.xml
+++ b/jsf-api/doc/output-label-props.xml
@@ -1,41 +1,45 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
--->
 
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
 
 <!-- ========== Output+Label Properties ==================================== -->
 
diff --git a/jsf-api/doc/output-resource-props.xml b/jsf-api/doc/output-resource-props.xml
index 36cab95..86bdce7 100644
--- a/jsf-api/doc/output-resource-props.xml
+++ b/jsf-api/doc/output-resource-props.xml
@@ -1,41 +1,45 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
--->
 
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
 
 <!-- ========== Output+Text Properties ===================================== -->
 
@@ -55,20 +59,6 @@
 <root>
     <attribute>
         <description>
-            <![CDATA[<div class="changed_added_2_0"><p>The <em>resourceName</em> for this resource.</p></div>]]>
-        </description>
-        <display-name>Resource Name</display-name>
-        <icon></icon>
-        <attribute-name>name</attribute-name>
-        <attribute-class>java.lang.String</attribute-class>
-        <attribute-extension>
-            <required>false</required>
-            <tag-attribute>true</tag-attribute>
-        </attribute-extension>
-
-    </attribute>
-    <attribute>
-        <description>
             <![CDATA[<div class="changed_added_2_0"><p>The <em>libraryName</em> for this resource.</p></div>]]>
         </description>
         <display-name>Library Name</display-name>
diff --git a/jsf-api/doc/output-text-props.xml b/jsf-api/doc/output-text-props.xml
index 5c475c8..5e25106 100644
--- a/jsf-api/doc/output-text-props.xml
+++ b/jsf-api/doc/output-text-props.xml
@@ -1,41 +1,45 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
--->
 
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
 
 <!-- ========== Output+Text Properties ===================================== -->
 
diff --git a/jsf-api/doc/panel-grid-props.xml b/jsf-api/doc/panel-grid-props.xml
index bd4f8e8..6388d47 100644
--- a/jsf-api/doc/panel-grid-props.xml
+++ b/jsf-api/doc/panel-grid-props.xml
@@ -1,41 +1,45 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
--->
 
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
 
 <!-- ========== Panel+Grid Properties ====================================== -->
 
diff --git a/jsf-api/doc/panel-group-props.xml b/jsf-api/doc/panel-group-props.xml
index 3d47b09..409b692 100644
--- a/jsf-api/doc/panel-group-props.xml
+++ b/jsf-api/doc/panel-group-props.xml
@@ -1,41 +1,45 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
--->
 
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
 
 <!-- ========== Panel+Grid Propertys ====================================== -->
 
@@ -62,7 +66,7 @@
         <property-name>style</property-name>
         <property-class>java.lang.String</property-class>
         <property-extension>
-            <pass-through>true</pass-through>
+            <ignored-by-renderer>true</ignored-by-renderer>
         </property-extension>
     </property>
 
@@ -77,7 +81,7 @@
         <property-name>styleClass</property-name>
         <property-class>java.lang.String</property-class>
         <property-extension>
-            <pass-through>false</pass-through>
+            <ignored-by-renderer>false</ignored-by-renderer>
         </property-extension>
     </property>
     <property>
diff --git a/jsf-api/doc/selectmany-checkbox-props.xml b/jsf-api/doc/selectmany-checkbox-props.xml
index c2fedea..575f765 100644
--- a/jsf-api/doc/selectmany-checkbox-props.xml
+++ b/jsf-api/doc/selectmany-checkbox-props.xml
@@ -1,41 +1,45 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
--->
 
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
 
 <!-- ========== SelectMany+CheckboxList Properties ========================= -->
 
@@ -63,7 +67,7 @@
         <property-name>border</property-name>
         <property-class>int</property-class>
         <property-extension>
-            <pass-through>true</pass-through>
+            <ignored-by-renderer>true</ignored-by-renderer>
         </property-extension>
     </property>
 
diff --git a/jsf-api/doc/selectmany-props.xml b/jsf-api/doc/selectmany-props.xml
index ba594e4..918aa4d 100644
--- a/jsf-api/doc/selectmany-props.xml
+++ b/jsf-api/doc/selectmany-props.xml
@@ -1,39 +1,44 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
 
 <!-- ========== UISelectMany Properties ==================================== -->
diff --git a/jsf-api/doc/selectone-props.xml b/jsf-api/doc/selectone-props.xml
index 04f5d3f..9a2e739 100644
--- a/jsf-api/doc/selectone-props.xml
+++ b/jsf-api/doc/selectone-props.xml
@@ -1,41 +1,45 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
--->
 
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
 
 <!-- ========== SelectOne+Radio Properties ================================= -->
 
diff --git a/jsf-api/doc/selectone-radio-props.xml b/jsf-api/doc/selectone-radio-props.xml
index e796a6a..9ea31a4 100644
--- a/jsf-api/doc/selectone-radio-props.xml
+++ b/jsf-api/doc/selectone-radio-props.xml
@@ -1,41 +1,45 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
--->
 
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
 
 <!-- ========== SelectOne+Radio Properties ================================= -->
 
@@ -63,7 +67,7 @@
         <property-name>border</property-name>
         <property-class>int</property-class>
         <property-extension>
-            <pass-through>true</pass-through>
+            <ignored-by-renderer>true</ignored-by-renderer>
         </property-extension>
     </property>
 
diff --git a/jsf-api/doc/standard-html-renderkit-base.xml b/jsf-api/doc/standard-html-renderkit-base.xml
index 29d9bf3..dbed753 100644
--- a/jsf-api/doc/standard-html-renderkit-base.xml
+++ b/jsf-api/doc/standard-html-renderkit-base.xml
@@ -1,48 +1,53 @@
 <?xml version='1.0' encoding='UTF-8'?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
 
 <!-- =========== FULL CONFIGURATION FILE ================================== -->
 
-<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
+<faces-config xmlns="http://xmlns.jcp.org/xml/ns/javaee"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xmlns:xi="http://www.w3.org/2001/XInclude"
-    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
-    version="2.0">
+    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd"
+    version="2.2">
 
     <!-- Generic User Interface Components -->
 
@@ -234,6 +239,19 @@
 
     <component>
 
+        <component-type>javax.faces.ViewAction</component-type>
+        <component-class>javax.faces.component.UIViewAction</component-class>
+
+    <xi:include href="uiviewaction-props.xml" xpointer="xpointer(/root/*)"/>
+
+        <component-extension>
+            <component-family>javax.faces.ViewAction</component-family>
+        </component-extension>
+
+    </component>
+
+    <component>
+
         <component-type>javax.faces.Parameter</component-type>
         <component-class>javax.faces.component.UIParameter</component-class>
 
@@ -414,6 +432,18 @@
         <xi:include href="events-props.xml" xpointer="xpointer(/root/*)"/>
         <xi:include href="i18n-props.xml" xpointer="xpointer(/root/*)"/>
         <xi:include href="table-props.xml" xpointer="xpointer(/root/*)"/>
+        <property>
+            <description>
+              <![CDATA[<span class="changed_added_2_1">Boolean flag directing how the per-row component state should be handled.</span>]]>
+            </description>
+            <display-name>Preserve Row Component State</display-name>
+            <icon></icon>
+            <property-name>rowStatePreserved</property-name>
+            <property-class>boolean</property-class>
+            <property-extension>
+                <tag-attribute>false</tag-attribute>
+            </property-extension>
+        </property>
 
         <component-extension>
             <base-component-type>javax.faces.Data</base-component-type>
@@ -472,6 +502,31 @@
 
         <description>
             <![CDATA[<p>Represents an HTML <code>input</code> element
+      of type <code>file</code>.</p>]]>
+        </description>
+        <display-name>Input File</display-name>
+        <component-type>javax.faces.HtmlInputFile</component-type>
+        <component-class>javax.faces.component.html.HtmlInputFile</component-class>
+
+        <xi:include href="uiinput-props.xml" xpointer="xpointer(/root/*)"/>
+        <xi:include href="core-props.xml" xpointer="xpointer(/root/*)"/>
+        <xi:include href="events-props.xml" xpointer="xpointer(/root/*)"/>
+        <xi:include href="focus-props.xml" xpointer="xpointer(/root/*)"/>
+        <xi:include href="i18n-props.xml" xpointer="xpointer(/root/*)"/>
+        <xi:include href="input-props.xml" xpointer="xpointer(/root/*)"/>
+        <xi:include href="text-props.xml" xpointer="xpointer(/root/*)"/>
+
+        <component-extension>
+            <base-component-type>javax.faces.Input</base-component-type>
+            <renderer-type>javax.faces.File</renderer-type>
+        </component-extension>
+
+    </component>
+
+    <component>
+
+        <description>
+            <![CDATA[<p>Represents an HTML <code>input</code> element
       of type <code>hidden</code>.</p>]]>
         </description>
         <display-name>Input Hidden</display-name>
@@ -791,6 +846,7 @@
         <component-class>javax.faces.component.html.HtmlPanelGroup</component-class>
 
         <xi:include href="uipanel-props.xml" xpointer="xpointer(/root/*)"/>
+        <xi:include href="events-props.xml" xpointer="xpointer(/root/*)"/>
         <xi:include href="panel-group-props.xml" xpointer="xpointer(/root/*)"/>
 
         <component-extension>
@@ -803,10 +859,11 @@
     <component>
 
         <description>
-            <![CDATA[<p>Represents an HTML <code>input</code> element
-      of type <code>checkbox</code>.  The checkbox will
-      be rendered as checked, or not, based on the value
-      of the <code>value</code> property.</p>]]>
+            <![CDATA[<p><span
+            class="changed_modified_2_0_rev_a">Represents</span> an HTML
+            <code>input</code> element of type <code>checkbox</code>.
+            The checkbox will be rendered as checked, or not, based on
+            the value of the <code>value</code> property.</p>]]>
         </description>
         <display-name>Checkbox</display-name>
         <component-type>javax.faces.HtmlSelectBooleanCheckbox</component-type>
@@ -830,9 +887,11 @@
     <component>
 
         <description>
-            <![CDATA[<p>Represents a multiple-selection component that is rendered
-      as a set of HTML <code>input</code> elements of type
-      <code>checkbox</code>.</p>]]>
+            <![CDATA[<p><span
+            class="changed_modified_2_0_rev_a">Represents</span> a
+            multiple-selection component that is rendered as a set of
+            HTML <code>input</code> elements of type
+            <code>checkbox</code>.</p>]]>
         </description>
         <display-name>Multi-Select Checkbox</display-name>
         <component-type>javax.faces.HtmlSelectManyCheckbox</component-type>
@@ -961,9 +1020,11 @@
     <component>
 
         <description>
-            <![CDATA[<p>Represents a single-selection component that is rendered
-      as a set of HTML <code>input</code> elements of type
-      <code>radio</code>.</p>]]>
+            <![CDATA[<p><span
+            class="changed_modified_2_0_rev_a">Represents</span> a
+            single-selection component that is rendered as a set of HTML
+            <code>input</code> elements of type
+            <code>radio</code>.</p>]]>
         </description>
         <display-name>Radio</display-name>
         <component-type>javax.faces.HtmlSelectOneRadio</component-type>
@@ -991,11 +1052,26 @@
 
     <component>
         <description>NONE</description>
+        <display-name>doctype</display-name>
+        <component-type>javax.faces.OutputDoctype</component-type>
+        <component-class>javax.faces.component.html.HtmlDoctype</component-class>
+
+        <xi:include href="doctype-props.xml" xpointer="xpointer(/root/*)"/>
+
+        <component-extension>
+            <base-component-type>javax.faces.Output</base-component-type>
+            <renderer-type>javax.faces.Doctype</renderer-type>
+        </component-extension>
+    </component>
+
+    <component>
+        <description>NONE</description>
         <display-name>head</display-name>
         <component-type>javax.faces.OutputHead</component-type>
         <component-class>javax.faces.component.html.HtmlHead</component-class>
 
         <xi:include href="i18n-props.xml" xpointer="xpointer(/root/*)"/>
+        <xi:include href="document-props.xml" xpointer="xpointer(/root/*)"/>
 
         <component-extension>
             <base-component-type>javax.faces.Output</base-component-type>
@@ -1010,6 +1086,7 @@
         <component-class>javax.faces.component.html.HtmlBody</component-class>
 
         <xi:include href="i18n-props.xml" xpointer="xpointer(/root/*)"/>
+        <xi:include href="document-props.xml" xpointer="xpointer(/root/*)"/>
         <xi:include href="core-props.xml" xpointer="xpointer(/root/*)"/>
         <xi:include href="events-props.xml" xpointer="xpointer(/root/*)"/>
         <property>
@@ -1020,7 +1097,7 @@
             <property-name>onload</property-name>
             <property-class>java.lang.String</property-class>
             <property-extension>
-                <pass-through>true</pass-through>
+                <ignored-by-renderer>true</ignored-by-renderer>
                 <behavior/>
             </property-extension>
         </property>
@@ -1033,7 +1110,7 @@
             <property-name>onunload</property-name>
             <property-class>java.lang.String</property-class>
             <property-extension>
-                <pass-through>true</pass-through>
+                <ignored-by-renderer>true</ignored-by-renderer>
                 <behavior/>
             </property-extension>
         </property>
@@ -1050,9 +1127,9 @@
     <render-kit>
 
         <description>
-            <![CDATA[
-     The standard HTML RenderKit.  Please see the spec for additional
-     details for the standard render-kit.
+            <![CDATA[ <span class="changed_modified_2_2">The</span>
+            standard HTML RenderKit.  Please see the spec for additional
+            details for the standard render-kit.
 
      <div class="changed_added_2_0">
      <p>The following new renderers have been
@@ -1143,6 +1220,11 @@
      <p>If the value of the component's "rendered" property is false,
      the component, and its children must not be rendered.</p>
 
+     <p class="changed_added_2_2">For all renderers that are responsible
+     for rendering their own children, the renderer will decide if the
+     end tag is required or not based on the presence or absence of
+     children for the component.</p>
+
      <p>General notes regarding the <code>id</code> attribute</p>
 
      <ul>
@@ -1199,8 +1281,8 @@
        Renderers for the <code>javax.faces.Command</code></a> component.
        The generation of JavaScript in any other Renderer in the
        HTML_BASIC renderkit is not permitted.  However, any JavaScript
-       code provided by the user as the value of a passthru attribute,
-       such as "onmouseover", is excluded from this restriction.</p>
+       code provided by the user as the value of an <code>ignored-by-renderer</code> 
+       attribute, such as "onmouseover", is excluded from this restriction.</p>
 
      </ul>
 
@@ -1228,15 +1310,45 @@
      </ul>
      </div>
 
+     <div class="changed_added_2_2">
+     <p><a name="general_behavior_encoding">Rendering</a> Pass Through Attributes.</p>
+
+     <ul>
+
+       <p>The set of attributes written for a component is determined by
+       its <code>Renderer</code> and collectively are known as
+       <em>renderer specific attributes</em>.  In addition to
+       <em>renderer specific attributes</em>, <em>pass through
+       attributes</em> are also possible.  <em>Pass through
+       attributes</em> are declared as markup attributes on components
+       in the VDL view and are stored in the <code>Map</code> returned
+       by <code>UIComponent.getPassThroughAttributes()</code>.  When
+       rendering a <code>UIComponent</code> instance,
+       <code>Renderer</code>s call
+       <code>ResponseWriter.startElement()</code>, passing in the
+       <code>UIComponent</code> instance.  The
+       <code>ResponseWriter</code> must ensure that any <em>pass through
+       attributes</em> are rendered on the outer-most markup element for
+       the component.  If there is a <em>pass through attribute</em>
+       with the same name as a <em>renderer specific attribute</em>, the
+       <em>pass through attribute</em> takes precedence.  <em>Pass
+       through attributes</em> are rendered as if they were passed to
+       <code>ResponseWriter.writeURIAttribute()</code>.</p>
+
+
+     </ul>
+     </div>
+
 
-    </ul>]]>
+</ul>]]>
 
         </description>
 
         <renderer>
 
-            <description><![CDATA[<p><span
-            class="changed_modified_2_0">Renders an HTML "input"
+            <description><![CDATA[<p><span class="changed_modified_2_0
+            changed_modified_2_0_rev_a
+            changed_modified_2_2">Renders</span> an HTML "input"
             element.</p>
 
       <p>Decode Behavior</p>
@@ -1306,6 +1418,29 @@
       <code>encodeEnd()</code> methods called, in order, passing the
       temporary component as the second argument.</p>
 
+      <div class="changed_added_2_2">
+
+        <p>Because this renderer is responsible for rendering its own
+        children, the renderer will decide if the end tag is required or
+        not based on the presence or absence of children for the
+        component.</p>
+
+        <p>To support entering flows that are defined by both a defining
+        document id and a flow id, add a component attribute to this
+        component whose name is given by the value of the symbolic
+        constant
+        <code>javax.faces.event.ActionListener.TO_FLOW_DOCUMENT_ID_ATTR_NAME</code>,
+        and whose value is the defining document id.  For example, when
+        using this component in a facelet page, the following markup
+        would cause such an attribute to be added.</p>
+
+<pre><code><h:commandButton id="start_a" value="enter flow-a" action="flow-a"><br />
+  <f:attribute name="to-flow-document-id" value="unique"/><br />
+</h:commandButton><br />
+</code></pre>
+
+      </div>
+
       </ul>
             ]]>
             </description>
@@ -1330,8 +1465,8 @@
 
         <renderer>
 
-            <description><![CDATA[<p><span
-            class="changed_modified_2_0">Render</span> an HTML "a" anchor
+            <description><![CDATA[<p><span class="changed_modified_2_0
+            changed_modified_2_0_rev_a changed_modified_2_2">Render</span> an HTML "a" anchor
             element that acts like a form submit button when
             clicked.</p>
 
@@ -1384,11 +1519,12 @@
       <ul>
 
       <p>If the value of the <code>disabled</code> attribute is
-      <code>true</code>, render a span element.  Render all the passthru
-      attributes and the <code>target</code> attribute as pass-through
-      attributes on the span, even though the <code>target</code>
-      attribute will have no effect on a span.  Render the current value
-      of the component as the content of the span.  Return.</p>
+      <code>true</code>, render a span element.  Render all the
+      ignored-by-renderer attributes and the <code>target</code>
+      attribute as ignored-by-renderer attributes on the span, even
+      though the <code>target</code> attribute will have no effect on a
+      span.  Render the current value of the component as the content of
+      the span.  Return.</p>
 
       <p>If the <code>disabled</code> attribute is not present, or its
       value is <code>false</code>, render an HTML <code>a</code>
@@ -1400,13 +1536,12 @@
       <p><code>document.forms['CLIENT_ID']['hiddenFieldName'].value='CLIENT_ID';
       document.forms['CLIENT_ID']['PARAM1_NAME'].value='PARAM1_VALUE';
       document.forms['CLIENT_ID']['PARAM2_NAME'].value='PARAM2_VALUE';
-      return false;</code></p>
+      document.forms['CLIENT_ID'].submit(); return false;</code></p>
 
-      <p>document.forms['CLIENT_ID'].submit()" where hiddenFieldName is
-      as described above, CLIENT_ID is the clientId of the UICommand
-      component, PARAM*_NAME and PARAM*_VALUE are the names and values,
-      respectively, of any nested UIParameter children.  The name and
-      the value must be URLEncoded.  <span
+      <p>where hiddenFieldName is as described above, CLIENT_ID is the
+      clientId of the UICommand component, PARAM*_NAME and PARAM*_VALUE
+      are the names and values, respectively, of any nested UIParameter
+      children.  The name and the value must be URLEncoded.  <span
       class="changed_modified_2_0_rev_a">Note that the required url
       encoding is handled by
       <code>ResponseWrter.writeAttribute()</code>.</span> If an
@@ -1440,7 +1575,7 @@
       render the HTML "a" anchor element or its "href" attribute.
       Instead, render a "span" element.  If the "styleClass" attribute
       is specified, render its value as the value of the "class"
-      attribute on the "span".  Render any pass-through attributes on
+      attribute on the "span".  Render any ignored-by-renderer attributes on
       the "span".  The content of the span element comes from the value
       of the component or its children as specified above.</p>
 
@@ -1455,7 +1590,27 @@
       <p>Where TARGET is the value of the target attribute on the JSP
       tag.</p>
 
-      </ul>]]>
+      </ul>
+
+<div class="changed_added_2_2">
+
+        <p>To support entering flows that are defined by both a defining
+        document id and a flow id, add a component attribute to this
+        component whose name is given by the value of the symbolic
+        constant
+        <code>javax.faces.event.ActionListener.TO_FLOW_DOCUMENT_ID_ATTR_NAME</code>,
+        and whose value is the defining document id.  For example, when
+        using this component in a facelet page, the following markup
+        would cause such an attribute to be added.</p>
+
+<pre><code><h:commandLink id="start_a" value="enter flow-a" action="flow-a"><br />
+  <f:attribute name="to-flow-document-id" value="unique"/><br />
+</h:commandLink><br />
+</code></pre>
+
+</div>
+
+]]>
             </description>
             <component-family>javax.faces.Command</component-family>
             <renderer-type>javax.faces.Link</renderer-type>
@@ -1479,18 +1634,20 @@
 
             <description>
                 <![CDATA[
-      <p>Renders an HTML "table" element compliant with the HTML 401
-      specification.  Render the "caption" facet, if present, inside a
-      "caption" element immediately below the "table" element.  If the
-      "captionClass" attribute is specified, render its value as the
-      value of the "class" attribute on the "caption" element.  If the
-      "captionStyle" attribute is specified, render its value as the
-      value of the "style" attribute on the "caption" element.</p>
-      <p>Please consult the javadoc for <code>UIData</code> to
-      supplement this specification.  If the "styleClass" attribute is
-      specified, render its value as the value of the "class" attribute
-      on the "table" element.  Any pass-through attributes are also
-      rendered on the "table" element.  </p>
+
+      <p><span class="changed_modified_2_0_rev_a">Renders</span> an HTML
+      "table" element compliant with the HTML 401 specification.  Render
+      the "caption" facet, if present, inside a "caption" element
+      immediately below the "table" element.  If the "captionClass"
+      attribute is specified, render its value as the value of the
+      "class" attribute on the "caption" element.  If the "captionStyle"
+      attribute is specified, render its value as the value of the
+      "style" attribute on the "caption" element.</p> <p>Please consult
+      the javadoc for <code>UIData</code> to supplement this
+      specification.  If the "styleClass" attribute is specified, render
+      its value as the value of the "class" attribute on the "table"
+      element.  Any ignored-by-renderer attributes are also rendered on the
+      "table" element.  </p>
 
      <p>Column Groups</p>
 
@@ -1643,6 +1800,18 @@
             <xi:include href="events-attrs.xml" xpointer="xpointer(/root/*)"/>
             <xi:include href="i18n-attrs.xml" xpointer="xpointer(/root/*)"/>
             <xi:include href="table-attrs.xml" xpointer="xpointer(/root/*)"/>
+            <attribute>
+                <description>
+                  <![CDATA[<span class="changed_added_2_1">Boolean flag directing how the per-row component state should be handled.</span>]]>
+                </description>
+                <display-name>Preserve Row Component State</display-name>
+                <icon></icon>
+                <attribute-name>rowStatePreserved</attribute-name>
+                <attribute-class>boolean</attribute-class>
+                <attribute-extension>
+                    <tag-attribute>false</tag-attribute>
+                </attribute-extension>
+            </attribute>
 
             <renderer-extension>
                 <renders-children>true</renders-children>
@@ -1652,8 +1821,9 @@
 
         <renderer>
 
-            <description><![CDATA[<span class="changed_modified_2_0">
-            Renders</span> an HTML "form" element.
+            <description><![CDATA[
+
+<p><span class="changed_modified_2_0">Renders</span> an HTML "form" element.</p>
 
       <p>Decode Behavior</p>
 
@@ -1683,7 +1853,7 @@
       If the "styleClass" attribute is specified, render its value as the 
       value of the "class" attribute.  Render a "name"
       attribute with a value the same as the "id" attribute as described
-      in "<a href="../../../renderkitdocs/HTML_BASIC/renderkit-summary.html#general_encoding">General Notes on
+      in "<a href="renderkit-summary.html#general_encoding">General Notes on
       Encoding</a>" regarding the "id" attribute for UIInput
       components.  <p class="changed_added_2_0">Obtain the <code>UIViewRoot view identifier</code> and
       use it to obtain an <code>action URL</code> by calling <code>ViewHandler.getActionURL</code>.
@@ -1696,9 +1866,9 @@
       render a hidden field with the name <code>javax.faces.encodedURL</code> and the value
       of this hidden field as the value from <code>ExternalContext.encodePartialActionURL</code>.</p>
       Call <code>ViewHandler.writeState()</code>
-      before the the close of the "form" element.  Render all the
-      necessary hidden fields for all commandLink instances in the page
-      just before the close of the "form" element.  
+      before the the close of the "form" element. 
+      Render all the necessary hidden fields 
+      for all commandLink instances in the page just before the close of the "form" element.  
       <div class="changed_modified_2_0">
       Just before rendering the closing <code></form></code> element tag, render 
       any resources that have been targeted for this form:
@@ -1713,7 +1883,7 @@
       </div>
       </p>
       </ul>
-      </div>]]>
+      ]]>
             </description>
             <component-family>javax.faces.Form</component-family>
             <renderer-type>javax.faces.Form</renderer-type>
@@ -1781,6 +1951,20 @@
             <xi:include href="graphic-image-attrs.xml" xpointer="xpointer(/root/*)"/>
             <xi:include href="output-resource-attrs.xml" xpointer="xpointer(/root/*)"/>
 
+            <attribute>
+                <description><![CDATA[<div class="changed_added_2_0"><p>The 
+                <em>resourceName</em> for this resource.</p></div>]]>
+                </description>
+                <display-name>Resource Name</display-name>
+                <icon/>
+                <attribute-name>name</attribute-name>
+                <attribute-class>java.lang.String</attribute-class>
+                <attribute-extension>
+                    <required>false</required>
+                    <tag-attribute>true</tag-attribute>
+                </attribute-extension>
+            </attribute>
+
             <renderer-extension>
                 <renders-children>true</renders-children>
             </renderer-extension>
@@ -1788,6 +1972,131 @@
 
         <renderer>
 
+            <description><![CDATA[<p class="changed_added_2_2">This
+            renderer is intended to be used with an arbitrary markup
+            element whose decoding needs can be entirely described by
+            the section "General notes on decoding" in the RenderKit
+            overview.</p>
+
+            <div class="changed_added_2_2">
+            <p>The local name of the rendered element must first be
+             determined for encoding. Look in the components's pass through
+             attribute map for a value under the key given by the value of the
+            symbolic constant
+            <code>Renderer.PASSTHROUGH_RENDERER_LOCALNAME_KEY</code>. If not found,
+            throw a <code>FacesException</code>.  If found, let this value be
+            <strong>localName</strong>.</p>
+
+
+            <p><a name="decode">Encode Behavior</a></p>
+
+  <p>If the component has a manually declared, not auto-generated
+  clientId, or if the component has behaviors attached to it, render the
+  clientId as the value of the "id" attribute.</p>
+
+            </div>
+
+
+]]></description>
+    <component-family>javax.faces.Panel</component-family>
+    <renderer-type>javax.faces.passthrough.Element</renderer-type>
+            <renderer-class>
+                <xi:include href="standard-html-renderkit-impl.xml" xpointer="xpointer(/root/passthrough-renderer-class/text())"/>
+            </renderer-class>
+
+            <xi:include href="events-attrs.xml" xpointer="xpointer(/root/*)"/>
+
+            <renderer-extension>
+                <renders-children>false</renders-children>
+            </renderer-extension>
+        </renderer>
+        
+        <renderer>
+
+            <description><![CDATA[<p class="changed_added_2_2"><span>Renders</span>
+            an HTML "input" element of "type" "file". The standard HTML_BASIC
+            RenderKit specifies behavior that assumes Servlet 3.0 or later.  
+            Portlet implementations must override this implementation with a 
+            semantically equivalent one that functions under the constraints 
+            of the Portlet specification.</p>
+
+      <div class="changed_added_2_2">
+
+      <p><a name="decode">Decode Behavior</a></p>
+
+      <ul>
+
+      <p>Obtain the <code>Map</code> from the "requestParameterMap"
+      property of the <code>ExternalContext</code>.  If the
+      <code>Map</code> contains an entry for the "clientId" of the
+      component, pass the value of the entry to the
+      <code>setSubmittedValue()</code> method of the component, which
+      must be an instance of <code>EditableValueHolder</code>, and
+      return.  Otherwise, obtain the "request" property from the
+      <code>ExternalContext</code> and cast it to
+      <code>javax.servlet.http.HttpServletRequest</code>.  Call
+      <code>getParts()</code> on the httpServletRequest. Iterate over
+      the parts.  If the "name" property of the current part is equal to
+      the "clientId", pass the current part to the
+      <code>setSubmittedValue()</code> method of the component.  If an
+      exception is thrown during the iteration, log the exception and
+      continue.</p>
+
+      <p>The standard implementation must override the 
+      <code>getConvertedValue()</code> so that it simply returns the
+      <code>submittedValue</code> argument.</p>
+
+      <p>Any exception thrown when interacting with the underlying
+      multi-part API must be wrapped in a <code>FacesException</code>
+      and allowed to reach the <code>ExceptionHandler</code>.</p>
+
+      </ul>
+
+      <p>Encode Behavior</p>
+
+      <ul>
+
+      <p> Render the clientId of the component as the value of the
+      "name" attribute.  Do not render the "value" attribute.  If the
+      "styleClass" attribute is specified, render its value as the value
+      of the "class" attribute.  </p>
+
+      <p>If <code>ProjectStage</code> is not
+      <code>ProjectStage.Production</code>, verify that the enclosing
+      form has an <code>enctype</code> attribute whose value is
+      <code>multipart/form-data</code>.  If not, add a
+      <code>FacesMessage</code> for this component's clientId to the
+      <code>FacesContext</code> stating that file upload requires a form
+      with <code>enctype</code> equal to
+      <code>multipart/form-data</code>.  If <code>ProjectStage</code>
+      <strong>is</strong> <code>ProjectStage.Production</code>, do not
+      do this verification.</p>
+
+      </ul>
+
+</div> ]]>
+
+            </description>
+            <component-family>javax.faces.Input</component-family>
+            <renderer-type>javax.faces.File</renderer-type>
+            <renderer-class>
+                <xi:include href="standard-html-renderkit-impl.xml" xpointer="xpointer(/root/input-file-renderer-class/text())"/>
+            </renderer-class>
+
+            <xi:include href="core-attrs.xml" xpointer="xpointer(/root/*)"/>
+            <xi:include href="events-attrs.xml" xpointer="xpointer(/root/*)"/>
+            <xi:include href="focus-attrs.xml" xpointer="xpointer(/root/*)"/>
+            <xi:include href="i18n-attrs.xml" xpointer="xpointer(/root/*)"/>
+            <xi:include href="input-attrs.xml" xpointer="xpointer(/root/*)"/>
+            <xi:include href="text-attrs.xml" xpointer="xpointer(/root/*)"/>
+
+            <renderer-extension>
+                <renders-children>false</renders-children>
+            </renderer-extension>
+        </renderer>
+
+        <renderer>
+
             <description><![CDATA[<p>Renders an HTML "input" element of type
       "hidden".</p>
 
@@ -1873,8 +2182,8 @@
 
         <renderer>
 
-            <description><![CDATA[<p>Renders an HTML "input"
-      element of "type" "text".</p>
+            <description><![CDATA[<p><span class="changed_modified_2_2">Renders</span>
+            an HTML "input" element of "type" "text".</p>
 
       <p><a name="decode">Decode Behavior</a></p>
 
@@ -1900,6 +2209,11 @@
       of the "class" attribute.
       </p>
 
+      <p class="changed_added_2_2">If this element has children, they
+      must be ignored by default.  Implementions may provide a
+      configuration option that allows this element to render its
+      children.</p>
+
       </ul>]]>
 
             </description>
@@ -1917,7 +2231,7 @@
             <xi:include href="text-attrs.xml" xpointer="xpointer(/root/*)"/>
 
             <renderer-extension>
-                <renders-children>true</renders-children>
+                <renders-children>false</renders-children>
             </renderer-extension>
         </renderer>
 
@@ -1963,7 +2277,7 @@
 
         <renderer>
 
-            <description><![CDATA[<p>Render a single message for a specific component.</p>
+            <description><![CDATA[<p><span class="changed_modified_2_2">Render</span> a single message for a specific component.</p>
 
       <p>Set-up for Rendering</p>
 
@@ -2008,15 +2322,13 @@
       "style" attribute as the the value of the "style" attribute, and
       outputting the value of the "styleClass" attribute as the value of
       the "class" attribute on the "span" element.  Output the "dir" and
-      "lang" attributes as well, if they are present.  If the
+      "lang" attributes as well, if they are present.  <span class="changed_modified_2_2">If the
       <code>UIMessage</code> has a "tooltip" attribute with the value of
-      "true", and the <code>UIMessage</code> has "showSummary" and
-      "showDetail" properties with the value "true", if we haven't
-      already written out the "span", output the "summary" as the value
-      of the "title" attribute on the "span".  If we haven't already
-      written out a "title" attribute, and "showSummary" is true, output
-      the summary.  If "showDetail" is true, output the detail.  Close
-      out the span if necessary.</p>
+      "true",  and we haven't already written out the "span" and the "title" attribute for
+      the "span", output the "detail" as the value of the "title" attribute on the 
+      "span".  If we haven't already written out a "title" attribute, and there is 
+      no detail, output the "summary" as the value of the "title" attribute.</span>  
+      Close out the span if necessary.</p>
 
       </ul>]]>
 
@@ -2094,7 +2406,7 @@
       <code>class</code> attribute.  Output the <code>style</code>
       attribute as the value of the <code>style</code> attribute.
       Output the <code>dir</code> and <code>lang</code> attributes as
-      pass through attributes.  Accrue a list of the values of all child
+      ignored-by-renderer attributes.  Accrue a list of the values of all child
       <code>UIParameter</code> components of this component.  If there
       are one or more accumulated parameter values, convert the list of
       parameter values to an <code>Object</code> array, call
@@ -2148,34 +2460,36 @@
 
             <description><![CDATA[
 
-            <p>Render an HTML "a" anchor element.  The value of the
-            component is rendered as the value of the "href" attribute.
-            Any child UIParameter components <span
-            class="changed_modified_2_0_rev_a">whose
-            <code>disable</code> property is <code>false</code></span> are
-            appended to the String to be output as the value of the
+            <p><span class="changed_modified_2_0_rev_a
+            changed_modified_2_2">Render</span> an HTML "a" anchor
+            element.  The value of the component is rendered as the
+            value of the "href" attribute.  Any child UIParameter
+            components <span class="changed_modified_2_0_rev_a">whose
+            <code>disable</code> property is <code>false</code></span>
+            are appended to the String to be output as the value of the
             "href" attribute as query parameters before rendering.  The
-            entire "href" string must be passed through a call to the
+            entire "href" string must be processed by a call to the
             <code>encodeResourceURL()</code> method of the
             <code>ExternalContext</code>.  The name of the UIParameter
             goes on the left hand side, and the value of the UIParameter
             on the right hand side.  The name and the value must be
-            URLEncoded.  <span class="changed_modified_2_0_rev_a">Note
-            that the required url encoding is handled by
-            <code>ResponseWrter.writeAttribute()</code>.</span> Each
+            URLEncoded.  <span class="changed_modified_2_0_rev_a
+            changed_modified_2_2">Note that the required url encoding is
+            handled by
+            <code>ResponseWrter.writeURIAttribute()</code>.</span> Each
             UIParameter instance is separeted by an ampersand, as
             dictated in the URL spec.  If the "styleClass" attribute is
             specified, render its value as the value of the "class"
             attribute.  If the "id" attribute is specified, follow the
             same steps as mentioned in the "<a
-            href="../../../renderkitdocs/HTML_BASIC/renderkit-summary.html#general_encoding">General
-            Notes on Encoding</a>" regarding the "id" attribute for
-            UIInput components.  If the "disabled" attribute is
-            specified, do not render the HTML "a" anchor element or the
-            "href" element.  Instead, render a "span" element.  If the
+            href="renderkit-summary.html#general_encoding">General Notes
+            on Encoding</a>" regarding the "id" attribute for UIInput
+            components.  If the "disabled" attribute is specified, do
+            not render the HTML "a" anchor element or the "href"
+            element.  Instead, render a "span" element.  If the
             "styleClass" attribute is specified, render its value as the
             value of the "class" attribute on the "span".  Render any
-            pass-through attributes on the "span".
+            ignored-by-renderer attributes on the "span".
 
             </p>]]>
             </description>
@@ -2200,40 +2514,65 @@
 
         <renderer>
 
-            <description><![CDATA[<div
-            class="changed_added_2_0"><p>Render an HTML "a" anchor
-            element.  The value of the component is rendered as the
-            anchor text and the outcome of the component is used to
-            determine the target URL rendered in the "href" attribute.
-            Any child <code>UIParameter</code> components <span
-            class="changed_modified_2_0_rev_a">whose
-            <code>disable</code> property is <code>false</code></span>
-            are appended to the String to be output as the value of the
-            "href" attribute as query parameters before rendering.  The
-            entire "href" string must be passed through a call to the
-            <code>encodeResourceURL()</code> method of the
-            <code>ExternalContext</code>.  The name of the
-            <code>UIParameter</code> goes on the left hand side, and the
-            value of the <code>UIParameter</code> on the right hand
-            side.  The name and the value must be URLEncoded.  <span
-            class="changed_modified_2_0_rev_a">Note that the required
-            url encoding is handled by
-            <code>ResponseWrter.writeAttribute()</code>.</span> Each
-            <code>UIParameter</code> instance is separated by an
-            ampersand, as dictated in the URL spec.  If the "fragment"
-            attribute is specified, the value will be included at the
-            end of the resulting URL preceded by a hash mark.  If the
-            "styleClass" attribute is specified, render its value as the
-            value of the "class" attribute.  If the "id" attribute is
-            specified, follow the same steps as mentioned in the "<a
-            href="../../../renderkitdocs/HTML_BASIC/renderkit-summary.html#general_encoding">General
-            Notes on Encoding</a>" regarding the "id" attribute for
-            UIInput components.  If the "disabled" attribute is
-            specified, do not render the HTML "a" anchor element or the
-            "href" element.  Instead, render a "span" element.  If the
-            "styleClass" attribute is specified, render its value as the
-            value of the "class" attribute on the "span".  Render any
-            pass-through attributes on the "span".</p></div>]]>
+            <description><![CDATA[
+
+<p><span class="changed_added_2_0 changed_modified_2_0_rev_a
+changed_modified_2_1 changed_modified_2_2">Render</span> <span class="changed_added_2_0
+changed_modified_2_1">an HTML "a" anchor element.  The value of the
+component is rendered as the anchor text and the outcome of the
+component is used to determine the target URL rendered in the "href"
+attribute.  Execute the <a
+href="javax.faces.OutcomeTargetjavax.faces.Button.html#UIOutcomeTargetGetEncodedTargetUrl">Algorithm
+to obtain the URL to which the user-agent should issue a GET request
+when clicked</a>.</span></p>
+
+<p class="changed_added_2_0">Any child <code>UIParameter</code> components
+<span class="changed_modified_2_0_rev_a">whose <code>disable</code>
+property is <code>false</code></span> are appended to the String to be
+output as the value of the "href" attribute as query parameters before
+rendering.  The entire "href" string must be processed by a call to
+the <code>encodeResourceURL()</code> method of the
+<code>ExternalContext</code>.  The name of the <code>UIParameter</code>
+goes on the left hand side, and the value of the
+<code>UIParameter</code> on the right hand side.  The name and the value
+must be URLEncoded.  <span class="changed_modified_2_0_rev_a">Note that
+the required url encoding is handled by
+<code>ResponseWrter.writeAttribute()</code>.</span> Each
+<code>UIParameter</code> instance is separated by an ampersand, as
+dictated in the URL spec.  If the "fragment" attribute is specified, the
+value will be included at the end of the resulting URL preceded by a
+hash mark.  If the "styleClass" attribute is specified, render its value
+as the value of the "class" attribute.</p>
+
+<p class="changed_added_2_0">If the "id" attribute is specified, follow
+the same steps as mentioned in the "<a
+href="renderkit-summary.html#general_encoding">General Notes on
+Encoding</a>" regarding the "id" attribute for UIInput components.  If
+the "disabled" attribute is specified, do not render the HTML "a" anchor
+element or the "href" element.  Instead, render a "span" element.  If
+the "styleClass" attribute is specified, render its value as the value
+of the "class" attribute on the "span".  Render any ignored-by-renderer
+attributes on the "span".</p>
+
+<div class="changed_added_2_2">
+
+        <p>To support entering flows that are defined by both a defining
+        document id and a flow id, add a component attribute to this
+        component whose name is given by the value of the symbolic
+        constant
+        <code>javax.faces.event.ActionListener.TO_FLOW_DOCUMENT_ID_ATTR_NAME</code>,
+        and whose value is the defining document id.  For example, when
+        using this component in a facelet page, the following markup
+        would cause such an attribute to be added.</p>
+
+<pre><code><h:link id="start_a" value="enter flow-a" outcome="flow-a"><br />
+  <f:attribute name="to-flow-document-id" value="unique"/><br />
+</h:link><br />
+</code></pre>
+
+</div>
+
+]]>
             </description>
 
             <component-family>javax.faces.OutcomeTarget</component-family>
@@ -2248,6 +2587,7 @@
             <xi:include href="i18n-attrs.xml" xpointer="xpointer(/root/*)"/>
             <xi:include href="link-attrs.xml" xpointer="xpointer(/root/*)"/>
             <xi:include href="direct-link-attrs.xml" xpointer="xpointer(/root/*)"/>
+            <xi:include href="get-link-attrs.xml" xpointer="xpointer(/root/*)"/>
 
             <renderer-extension>
                 <renders-children>true</renders-children>
@@ -2259,40 +2599,181 @@
         </renderer>
 
         <renderer>
-            <description><![CDATA[<div
-      class="changed_added_2_0"><p>Render an HTML "input" element of
-      type "button".  The value of the component is rendered as the
-      button text and the outcome of the component is used to determine
-      the target URL which is activated by onclick.  If "image"
-      attribute is specified, render it as the value of the "src"
-      attribute after passing it to the <code>getResourceURL()</code>
-      method of the <code>ViewHandler</code> for this application, and
-      passing the result through the <code>encodeResourceURL()</code>
-      method of the <code>ExternalContext</code>. Any child
-      <code>UIParameter</code> components are appended to the String to
-      be used as the target URL as query parameters before rendering.
-      The entire target URL string must be passed through a call to the
-      <code>encodeResourceURL()</code> method of the
-      <code>ExternalContext</code>.  The name of the
-      <code>UIParameter</code> goes on the left hand side, and the value
-      of the <code>UIParameter</code> on the right hand side.  The name
-      and the value must be URLEncoded.  Each <code>UIParameter</code>
-      instance is separeted by an ampersand, as dictated in the URL
-      spec.  The final encoded result will be written out to the onclick
-      attribute of the button as "window.location.href = '<encoded HREF
-      value>'".  If the developer has specified a custom onlclick the
-      window.location.href name/value pair will be appended at the end
-      of the developer specified script.  If the "fragment" attribute is
-      specified, the value will be included at the end of the resulting
-      URL preceded by a hash mark.  If the "styleClass" attribute is
-      specified, render its value as the value of the "class" attribute.
-      If the "id" attribute is specified, follow the same steps as
-      mentioned in the "<a
-      href="../../../renderkitdocs/HTML_BASIC/renderkit-summary.html#general_encoding">General
-      Notes on Encoding</a>" regarding the "id" attribute for UIInput
-      components.  If the "disabled" attribute is specified, do not
-      render the "onclick" element and assign the "disabled" attribute a
-      value of true.</p></div>]]>
+            <description><![CDATA[
+
+<p><span class="changed_modified_2_1"><span class="changed_modified_2_2">Render</span> a button that does not
+cause an HTTP POST.</span></p>
+
+<div class="changed_added_2_0"><div class="changed_modified_2_1">
+ 
+      <p>Encode Behavior</p>
+
+<p>Render an HTML "input" element of type "button".  The value of the
+component is rendered as the button text and the outcome of the
+component is used to determine the target URL which is activated by
+onclick.  If "image" attribute is specified, render it as the value of
+the "src" attribute after passing it to the
+<code>getResourceURL()</code> method of the <code>ViewHandler</code> for
+this application, and passing the result through the
+<code>encodeResourceURL()</code> method of the
+<code>ExternalContext</code>.</p>
+
+<p>If the component is not disabled, take the following actions.</p>
+
+  <p><a name="UIOutcomeTargetGetEncodedTargetUrl">Algorithm to obtain the url to which the user-agent should issue a GET request when clicked</a></p>
+
+  <p>Obtain the <code>NavigationCase</code> that corresponds to the
+  component instance for this <code>Renderer</code>.</p>
+
+  <p>Obtain an instance of
+  <code>javax.faces.application.ConfigurableNavigationHandler</code>
+  from the <code>ViewHandler</code>.  If no such instance can be
+  obtained, write the "disabled" attribute on the button.  Otherwise,
+  let <em>outcome</em> be the result of calling
+  <code>getOutcome()</code> on the argument component, which must be an
+  instance of <code>UIOutcomeTarget</code>.  If this result is
+  <code>null</code>, let <em>outcome</em> be the viewId of the current
+  <code>UIViewRoot</code>.  <span class="changed_modified_2_2">Obtain a
+  reference to the <code>NavigationCase</code>, called <em>navCase</em>
+  for discussion.  If the component has a non-<code>null</code>
+  attribute named by the value of the symbolic constant
+  <code>javax.faces.event.ActionListener.TO_FLOW_DOCUMENT_ID_ATTR_NAME</code>,
+  let <em>navCase</em> be the return from calling
+  <code>getNavigationCase()</code> on the
+  <code>ConfigurableNavigationHandler</code>, passing the current
+  <code>FacesContext</code> as the first argument, <code>null</code>, as
+  the second argument, <em>outcome</em> as the third argument, and the
+  value of the <code>TO_FLOW_DOCUMENT_ID_ATTR_NAME</code> attribute as
+  the fourth argument.  Otherwise, let <em>navCase</em> be the return
+  from calling <code>getNavigationCase()</code> on the
+  <code>ConfigurableNavigationHandler</code>, passing the current
+  <code>FacesContext</code> as the first argument, <code>null</code>, as
+  the second argument, and <em>outcome</em> as the third
+  argument.</span> If this returns <code>null</code>, log an informative
+  error which includes the component id, and write the "disabled"
+  attribute on the component markup, with the value of
+  <code>true</code>.  Otherwise obtain the encoded target URL using the
+  following algorithm.</p>
+
+  <p>Algorithm to obtain the encoded target URL</p>
+
+  <ul>
+
+	  <li><p>Let <em>params</em> be the <code>Map<String,
+	  List<String>></code> to be passed to
+	  <code>ViewHandler.getBookmarkableURL()</code>.  Build this map up first
+	  from any child <code>UIParameter</code> components.  These children must
+	  be processed in the order in which they appear as children.  If multiple
+	  children with the same name are encountered, their values must appear in
+	  the <code>List<String></code> in the <code>Map</code> entry with
+	  the same name, and appear in the list in the same order as their child
+	  order.</p></li>
+
+	  <li><p>Obtain any parameters included within the
+	  navigation case.  Call <code>getParameters()</code> on
+	  <em>navCase</em>.  The result will be a <code>Map<String,
+	  List<String>></code>.  If the result is
+	  non-<code>null</code> and non-empty, iterate over the entries
+	  from the result <code>Map</code> and, if no entry with the
+	  same name exists in <em>params</em>, set the value from the
+	  current entry as the value in the <em>params</em>
+	  <code>Map</code>.</p></li>
+
+          <li class="changed_added_2_2"><p>If the navigation case has a
+          non-null <code>toFlowDocumentId</code> property, add two
+          parameters as shown in this table.</p>
+
+          <table border="1">
+            <tr>
+              <th>parameter name</th>
+              <th>parameter value</th>
+            </tr>
+
+            <tr>
+               <td>value of <code>FlowHandler.TO_FLOW_DOCUMENT_ID_REQUEST_PARAM_NAME</code></td>
+
+               <td>value of the <code>toFlowDocumentId</code> property
+               of the navigation case</td>
+            </tr>
+            
+            <tr>
+               <td>value of <code>FlowHandler.FLOW_ID_REQUEST_PARAM_NAME</code></td>
+
+               <td>value of the <code>fromOutcome</code> property
+               of the navigation case</td>
+            </tr>
+            
+          </table>
+
+
+          </li>
+
+	  <li><p>Let <em>includeViewParams</em> be the result of a
+	  logical OR of the results from calling
+	  <code>isIncludeViewParams()</code> on the argument
+	  <code>UIOutcomeTarget</code> component and calling
+	  <code>isIncludeViewParams</code> on <em>navCase</em>.</p></li>
+
+
+	  <li><p>Call <code>getBookmarkableURL()</code> on the
+	  <code>ViewHandler</code>, passing the current
+	  <code>FacesContext</code> as the first argument, the return
+	  from calling <code>getToViewId()</code> as the second
+	  argument, <em>params</em> as the third argument, and
+	  <em>includeViewParams</em> as the last argument.</p></li>
+
+  </ul>
+
+  <p>The entire target URL string must be processed by a call to
+  the <code>encodeResourceURL()</code> method of the
+  <code>ExternalContext</code>.  The name of the
+  <code>UIParameter</code> goes on the left hand side, and the value of
+  the <code>UIParameter</code> on the right hand side.  The name and the
+  value must be URLEncoded.  Each <code>UIParameter</code> instance is
+  separeted by an ampersand, as dictated in the URL spec.  The final
+  encoded result will be written out to the onclick attribute of the
+  button as "window.location.href = '<encoded HREF value>'".  If the
+  developer has specified a custom onlclick the window.location.href
+  name/value pair will be appended at the end of the developer specified
+  script.  If the "fragment" attribute is specified, the value will be
+  included at the end of the resulting URL preceded by a hash mark.  If
+  the "styleClass" attribute is specified, render its value as the value
+  of the "class" attribute.  If the "id" attribute is specified, follow
+  the same steps as mentioned in the "<a
+  href="renderkit-summary.html#general_encoding">General
+  Notes on Encoding</a>" regarding the "id" attribute for UIInput
+  components.  If the "disabled" attribute is specified, do not render
+  the "onclick" element and assign the "disabled" attribute a value of
+  true.</p>
+
+</div></div>
+
+<div class="changed_added_2_2">
+
+  <p>Because this renderer is responsible for rendering its own
+  children, the renderer will decide if the end tag is required or
+  not based on the presence or absence of children for the
+  component.</p>
+
+        <p>To support entering flows that are defined by both a defining
+        document id and a flow id, add a component attribute to this
+        component whose name is given by the value of the symbolic
+        constant
+        <code>javax.faces.event.ActionListener.TO_FLOW_DOCUMENT_ID_ATTR_NAME</code>,
+        and whose value is the defining document id.  For example, when
+        using this component in a facelet page, the following markup
+        would cause such an attribute to be added.</p>
+
+<pre><code><h:button id="start_a" value="enter flow-a" outcome="flow-a"><br />
+  <f:attribute name="to-flow-document-id" value="unique"/><br />
+</h:button><br />
+</code></pre>
+
+
+
+</div>
+
+]]>
 
             </description>
             <component-family>javax.faces.OutcomeTarget</component-family>
@@ -2307,6 +2788,7 @@
             <xi:include href="events-attrs.xml" xpointer="xpointer(/root/*)"/>
             <xi:include href="image-button-attrs.xml" xpointer="xpointer(/root/*)"/>
             <xi:include href="direct-link-attrs.xml" xpointer="xpointer(/root/*)"/>
+            <xi:include href="get-link-attrs.xml" xpointer="xpointer(/root/*)"/>
 
             <renderer-extension>
                 <renders-children>true</renders-children>
@@ -2319,16 +2801,24 @@
 
         <renderer>
 
-            <description>If the "styleClass", "style", "dir" or "lang"
-      attributes are present, render a "span" element.  If the
-      "styleClass" attribute is present, render its value as the value
-      of the "class" attribute.  If the "style" attribute is present,
-      pass it thru.  If the "escape" attribute is not present, or it is
-      present and its value is "true" all angle brackets should be
-      converted to the ampersand xx semicolon syntax when rendering the
-      value of the "value" attribute as the value of the component.  If
-      the "escape" attribute is present and is "false" the value of the
-      component should be rendered as text without escaping.
+            <description><![CDATA[
+      <p><span class="changed_modified_2_2">If</span> the
+      "styleClass", "style", "dir" or "lang" attributes are present,
+      render a "span" element.  If the "styleClass" attribute is
+      present, render its value as the value of the "class" attribute.
+      If the "style" attribute is present, convey it unmodified.  If the
+      "escape" attribute is not present, or it is present and its value
+      is "true" all angle brackets should be converted to the ampersand
+      xx semicolon syntax when rendering the value of the "value"
+      attribute as the value of the component.  If the "escape"
+      attribute is present and is "false" the value of the component
+      should be rendered as text without escaping.</p>
+
+      <p class="changed_added_2_2">If this element has children,
+      they must be ignored by default.  Implementions may provide a
+      configuration option that allows this element to render its
+      children.</p>]]>
+
             </description>
             <component-family>javax.faces.Output</component-family>
             <renderer-type>javax.faces.Text</renderer-type>
@@ -2341,7 +2831,7 @@
             <xi:include href="i18n-attrs.xml" xpointer="xpointer(/root/*)"/>
 
             <renderer-extension>
-                <renders-children>true</renders-children>
+                <renders-children>false</renders-children>
             </renderer-extension>
         </renderer>
 
@@ -2354,7 +2844,7 @@
       of the "class" attribute on the "caption" element.  If the "captionStyle" attribute
       is specified, render its value as the value of the "style" attribute
       on the "caption" element.  If the "styleClass" attribute is specified, render 
-      its value as the value of the "class" attribute.  Render the pass-through 
+      its value as the value of the "class" attribute.  Render the ignored-by-renderer 
       attributes in the table below.  Render the "header" facet, if present, inside of
       "thead", "tr", and "th" elements, nested in that order.  If the
       "headerClass" attribute is specifed, render its value as the value
@@ -2421,6 +2911,7 @@
             </renderer-class>
 
             <xi:include href="panel-group-attrs.xml" xpointer="xpointer(/root/*)"/>
+            <xi:include href="events-attrs.xml" xpointer="xpointer(/root/*)"/>
 
             <renderer-extension>
                 <renders-children>true</renders-children>
@@ -2477,8 +2968,8 @@
 
         <renderer>
 
-            <description><![CDATA[<p><span
-            class="changed_modified_2_0">Render</span> an HTML checkbox
+            <description><![CDATA[<p><span class="changed_modified_2_0
+            changed_modified_2_0_rev_a">Render</span> an HTML checkbox
             list.</p>
 
       <p><a name="decode">Decode Behavior</a></p>
@@ -2497,7 +2988,7 @@
       <p>Render a "table" element.  If the "styleClass" is specified,
       render the value of the "styleClass" attribute as the value of the
       "class" attribute on the "table" element. If the "style", or
-      "border" attributes are specified, pass them thru <span
+      "border" attributes are specified, convey them <span
       class="changed_added_2_0">and render their values as the "style"
       and "border" attributes on the "table", respectively.</span> If
       the "layout" attribute is specified, and its value is
@@ -2583,9 +3074,9 @@
 
         <renderer>
 
-            <description><![CDATA[<p><span
-            class="changed_modified_2_0">Render</span> an HTML option
-            list.</p>
+            <description><![CDATA[<p><span class="changed_modified_2_0
+            changed_modified_2_0_rev_a
+            changed_modified_2_2">Render</span> an HTML option list.</p>
 
       <p>Decode Behavior</p>
 
@@ -2593,6 +3084,18 @@
       that handle <code>UISelectMany</code> or <code>UISelectOne</code>
       components.</p>
 
+      <div class="changed_added_2_2">
+
+      <p>If the collection type of the collection that provides the
+      value of this component is not one of the types handled by a
+      converter in the package <code>javax.faces.convert</code>, a
+      converter must explicitly be specified using the appropriate code
+      in the VDL.  For example, use <code><f:converter></code> in
+      JSP or Facelet pages.</p>
+
+      </div>
+      
+
       <ul>
 
       <p><a name="decodeMany">Decode Behavior for
@@ -2668,7 +3171,7 @@
       not be rendered.</span> If the current child is a
       <code>UISelectItem</code> create a <code>SelectItem</code>instance
       from its <code>itemValue, itemLabel</code>, <code
-      class="changed_added_2_0">itemEscaped</code>, and
+      class="changed_added_2_0_rev_a">itemEscaped</code>, and
       <code>itemDescription</code> properties, add it to the list.  If
       the current child is a <code>UISelectItems</code> instance, call
       its <code>getValue()</code> method.  If the result is a
@@ -2681,26 +3184,32 @@
       label, the value as the value, and <code>null</code> as the
       description.</p>
 
-      <p>Iterate over the list of <code>SelectItem</code> beans.  If the
-      current element is a <code>SelectItemGroup</code>, render an
-      "optgroup" element with a "label" attribute, the value of which is
-      the "label" property from the current element, then call
-      <code>getSelectItems()</code> and render each element as below.
-      If the current element is not a <code>SelectItemGroup</code>,
-      render an "option" element.  Follow the conversion rules in the
-      spec to obtain a renderable <code>String</code> from the "value"
-      property of the current element, render that as the value of the
-      "value" atribute.  Now it is time to see if the current element is
-      the selected value.  Call its <code>getSubmittedValue()</code>
-      method, casting the result to an <code>Object []</code>, otherwise
-      the component must be a <code>UISelectOne</code> instance, call
-      its <code>getSubmittedValue()</code> method and create an
-      <code>Object []</code> around the result.  Determine the type of
-      the resultant array, if the resultant array is non-null, otherwise
-      the type is <code>String</code>.  Coerce the current item value to
-      this type following the Expression Language coercion rules.  If
-      the resultant array is non-null, we look in the array for a value
-      that, when we pass the renderable value to its
+      <p><span class="changed_modified_2_0_rev_a">Iterate over the list
+      of <code>SelectItem</code> beans.  If the current element is a
+      <code>SelectItemGroup</code>, render an "optgroup" element with a
+      "label" attribute, the value of which is the "label" property from
+      the current element, then call <code>getSelectItems()</code> and
+      render each element as below.  If the current element is not a
+      <code>SelectItemGroup</code>, render an "option" element.  <span
+      class="changed_modified_2_2">In both the case of the "option"
+      element or the "optgroup" element, the implementation must pass
+      the <code>UISelectItem</code> or <code>UISelectItems</code>
+      corresponding to the <code>SelectItem</code> bean to the call to
+      <code>ResponseWriter.startElement()</code></span>.  Follow the
+      conversion rules in the spec to obtain a renderable
+      <code>String</code> from the "value" property of the current
+      element, render that as the value of the "value" atribute.  Now it
+      is time to see if the current element is the selected value.  Call
+      its <code>getSubmittedValue()</code> method, casting the result to
+      an <code>Object []</code>, otherwise the component must be a
+      <code>UISelectOne</code> instance, call its
+      <code>getSubmittedValue()</code> method and create an <code>Object
+      []</code> around the result.  Determine the type of the resultant
+      array, if the resultant array is non-null, otherwise the type is
+      <code>String</code>.  Coerce the current item value to this type
+      following the Expression Language coercion rules.  If the
+      resultant array is non-null, we look in the array for a
+      value</span> that, when we pass the renderable value to its
       <code>equals()</code> method, it returns <code>true</code>,
       meaning the current element is selected.  If the resultant array
       is <code>null</code>, if the component is a
@@ -2718,16 +3227,16 @@
       HTML boolean property "selected".  If the current
       SelectItem.isDisabled() returns true, render "disabled" as the
       value of the "disabled" attribute.  <span
-      class="changed_added_2_0">If the value of the <code>escape</code>
-      property is true, use the <code>writeText()</code> method of
-      <code>ResponseWriter</code> to write out the value of the
-      <code>label</code> property.  Otherwise, use the
-      <code>write()</code> method of the <code>ResponseWriter</code> to
-      do so.</span></p>
+      class="changed_added_2_0_rev_a">If the value of the
+      <code>escape</code> property is true, use the
+      <code>writeText()</code> method of <code>ResponseWriter</code> to
+      write out the value of the <code>label</code> property.
+      Otherwise, use the <code>write()</code> method of the
+      <code>ResponseWriter</code> to do so.</span></p>
 
       </ul>
 
-      </ul>]]>
+</ul>]]>
 
             </description>
             <component-family>javax.faces.SelectMany</component-family>
@@ -2909,7 +3418,7 @@
         <renderer>
 
             <description><![CDATA[<p><span
-            class="changed_modified_2_0">Render</span> a set of html
+            class="changed_modified_2_0 changed_modified_2_0_rev_a">Render</span> a set of html
             "input" elements of type "radio".</p>
 
       <p><a name="decode">Decode Behavior</a></p>
@@ -2929,7 +3438,7 @@
       <p>Render a "table" element. If the "styleClass" is specified,
       render the value of the "styleClass" attribute as the value of the
       "class" attribute on the "table" element. If the "style", "border"
-      attributes are specified, pass them thru <span
+      attributes are specified, convey them <span
       class="changed_added_2_0">and render their values as the "style"
       and "border" attributes on the "table", respectively.</span>. If
       the "layout" attribute is specified, and its value is
@@ -3031,7 +3540,8 @@
       <renderer>
             <description><![CDATA[<div class="changed_added_2_0">
 
-<p>Renders a facet at this particular point in the composite component VDL page.</p>
+<p><span class="changed_modified_2_0_rev_a">Renders</span> a facet at
+this particular point in the composite component VDL page.</p>
 
       <p>Decode Behavior</p>
 
@@ -3050,7 +3560,7 @@ passed to the <code>encodeChildern()</code> method of this renderer will
 be the component with <code>component-family</code>
 <code>javax.faces.Output</code> and <code>renderer-type</code> equal to
 the one for this renderer.  The implementation of
-<code>encodeBegin()</code>, must obtain the component attribute value
+<code><span class="changed_modified_2_0_rev_a">encodeChildren()</span></code>, must obtain the component attribute value
 under the key given by the value of the symbolic constant
 <code>UIComponent.FACETS_KEY</code> from the attributes map of the
 argument component.  If not found, throw <code>IOException</code>.  This
@@ -3075,20 +3585,24 @@ Otherwise, get the facet whose name is "facetName".  If found call
         </renderer>
 
         <renderer>
-            <description><![CDATA[<div class="changed_added_2_0">
-
-<p><span class="changed_modified_2_0_rev_a">Render</span> the markup for
-a <code><script></code> element that renders the script
-<code>Resource</code> specified by the optional <code>name</code>
-attribute and <code>library</code> attributes.</p>
-
-<p>The implementation of this renderer must have a <a target="_"
+            <description><![CDATA[ 
+
+            <p class="changed_modified_2_0"><span
+            class="changed_modified_2_0_rev_a
+            changed_modified_2_1">Render</span> the markup for a
+            <code><script></code> element that renders the script
+            <code>Resource</code> specified by the optional
+            <code>name</code> attribute and <code>library</code>
+            attributes.</p>
+
+<p class="changed_modified_2_0">The implementation of this renderer must
+have a <a target="_"
 href="../../javadocs/javax/faces/event/ListenerFor.html"><code>@ListenerFor</code></a>
 annotation attached to it, at the class level, declaring <a target="_"
 href="../../javadocs/javax/faces/event/PostAddToViewEvent.html"><code>PostAddToViewEvent.class</code></a>
-as the value of the <code>systemEventClass</code> attribute.  The presence of
-this annotation on a renderer implies the renderer implements <a
-target="_"
+as the value of the <code>systemEventClass</code> attribute.  The
+presence of this annotation on a renderer implies the renderer
+implements <a target="_"
 href="../../javadocs/javax/faces/event/ComponentSystemEventListener.html"><code>ComponentSystemEventListener</code></a>,
 which this renderer must do.  The implementation of
 <code>processEvent()</code> must extract the <code>UIComponent</code>
@@ -3098,17 +3612,17 @@ and only if such a key is present, the implementation of
 <code>processEvent()</code> must pass the component to <a target="_"
 href="../../javadocs/javax/faces/component/UIViewRoot.html#addComponentResource(javax.faces.context.FacesContext,%20javax.faces.component.UIComponent)"><code>UIViewRoot.addComponentResource()</code></a>.</p>
 
-      <p>Decode Behavior</p>
+      <p class="changed_modified_2_0">Decode Behavior</p>
 
-      <ul>
+      <ul class="changed_modified_2_0">
 
 <p>No action is required during decode for this renderer.</p>
 
 </ul>
 
-      <p>Encode Behavior</p>
+      <p class="changed_modified_2_0">Encode Behavior</p>
 
-      <ul>
+      <ul class="changed_modified_2_0">
 
         <p><a name="ResourceCommonGetResource">Common Algorithm for Obtaining A Resource to Render</a></p>
 
@@ -3199,21 +3713,20 @@ href="../../javadocs/javax/faces/component/UIViewRoot.html#addComponentResource(
         <p>If this is NOT the first time this <code>Resource</code> has
         been referenced on this request take no action and return.</p>
 
-        <p>Render a script element.  Use the result from calling
-        <code>resource.getRequestPath()</code> as the value of the "src"
-        attribue and the result from calling
-        <code>resource.getContentType()</code> as the value of the "type"
-        attribute.</p>
-
-</p>
-
-
+        <p>Render a script element.  <span
+        class="changed_modified_2_1">Call
+        <code>resource.getRequestPath()</code>.  If the result contains
+        a query string, take care to handle it correctly.  Pass the
+        request path to a call to <code>encodeResourceURL()</code> on
+        the <code>ExternalContext</code>.  Use the result as the value
+        of the "src" attribute.  Use the result from calling
+        <code>resource.getContentType()</code> as the value of the
+        "type" attribute.</span></p>
 
        </ul>
 
 
-
-</div>]]></description>
+]]></description>
             <component-family>javax.faces.Output</component-family>
             <renderer-type>javax.faces.resource.Script</renderer-type>
             <renderer-class>
@@ -3221,6 +3734,21 @@ href="../../javadocs/javax/faces/component/UIViewRoot.html#addComponentResource(
             </renderer-class>
             <xi:include href="output-resource-attrs.xml" xpointer="xpointer(/root/*)"/>
             <attribute>
+                <description><![CDATA[<div class="changed_added_2_0"><p>The
+                <em>resourceName</em> for this resource.</p></div><div class="changed_modified_2_0_rev_a">
+                <p>This attribute is required</p></div>]]>
+                </description>
+                <display-name>Resource Name</display-name>
+                <icon/>
+                <attribute-name>name</attribute-name>
+                <attribute-class>java.lang.String</attribute-class>
+                <attribute-extension>
+                    <required>true</required>
+                    <tag-attribute>true</tag-attribute>
+                </attribute-extension>
+            </attribute>
+
+            <attribute>
                 <description>
 
                     <![CDATA[<div class="changed_added_2_0"><p>The
@@ -3254,23 +3782,25 @@ href="../../javadocs/javax/faces/component/UIViewRoot.html#addComponentResource(
         </renderer>
 
         <renderer>
-            <description><![CDATA[<div class="changed_added_2_0">
+            <description><![CDATA[
 
-<p>Render the markup for a <code><link></code> element that
-renders the style <code>Resource</code> specified by the optional
-<code>name</code> and <code>library</code> attributes.</p>
+<p><span class="changed_modified_2_0 changed_modified_2_0_rev_a
+changed_modified_2_1 changed_modified_2_2">Render</span> the markup for a
+<code><link></code> element that renders the style
+<code>Resource</code> specified by the optional <code>name</code> and
+<code>library</code> attributes.</p>
 
-      <p>Decode Behavior</p>
+      <p class="changed_modified_2_0">Decode Behavior</p>
 
-      <ul>
+      <ul class="changed_modified_2_0">
 
 <p>No action is required during decode for this renderer.</p>
 
 </ul>
 
-      <p>Encode Behavior</p>
+      <p class="changed_modified_2_0">Encode Behavior</p>
 
-      <ul>
+      <ul class="changed_modified_2_0">
 
        <p>Use the algorithm <em>Common Encode Behavior</em> for
        <code>encodeBegin()</code>, <code>encodeChildren()</code> and
@@ -3285,9 +3815,11 @@ renders the style <code>Resource</code> specified by the optional
 calling <code>resource.getRequestPath()</code> as the value of the
 "href" attribute, the result from calling
 <code>resource.getContentType()</code> as the value of the "type"
-attribute, the literal string "stylesheet" as the value of the "rel"
-attribute, and the literal string "screen" as the value of the "media"
-attribute.</p>
+attribute, and the literal string "stylesheet" as the value of the "rel"
+attribute.  <span class="changed_modified_2_2">If this tag has a "media"
+attribute, use its value as the value of the "media" attribute.
+Otherwise, do not render a media attribute.</span></p>
+
 
 <p>The implementation of this renderer must have a <a target="_"
 href="../../javadocs/javax/faces/event/ListenerFor.html"><code>@ListenerFor</code></a>
@@ -3305,23 +3837,126 @@ the literal string "<code>head</code>" as the last argument.</p>
 <p>The stylsheet renderer must ensure that any stylesheets are included in the <head> of the document. 
 </p>
 
-</div>]]></description>
+</ul>
+
+]]></description>
             <component-family>javax.faces.Output</component-family>
             <renderer-type>javax.faces.resource.Stylesheet</renderer-type>
             <renderer-class>
                <xi:include href="standard-html-renderkit-impl.xml" xpointer="xpointer(/root/output-stylesheet-renderer-class/text())"/>
             </renderer-class>
             <xi:include href="output-resource-attrs.xml" xpointer="xpointer(/root/*)"/>
+            <attribute>
+                <description><![CDATA[<div class="changed_added_2_0"><p>The
+                <em>resourceName</em> for this resource.</p></div><div class="changed_modified_2_1">
+                <p>This attribute is required</p></div>]]>
+                </description>
+                <display-name>Resource Name</display-name>
+                <icon/>
+                <attribute-name>name</attribute-name>
+                <attribute-class>java.lang.String</attribute-class>
+                <attribute-extension>
+                    <required>true</required>
+                    <tag-attribute>true</tag-attribute>
+                </attribute-extension>
+            </attribute>
+
+            <attribute>
+                <description>
+
+                    <![CDATA[<div class="changed_added_2_1"><p>The
+                    <em>media</em> type for this stylesheet.  For
+                    example, <em>media="screen"</em> would cause the
+                    resource to be rendered with the <em>media</em>
+                    attribute of the <em>link</em> set to
+                    <em>screen</em>.</p></div>]]>
+
+                </description>
+                <display-name>Media</display-name>
+                <icon></icon>
+                <attribute-name>media</attribute-name>
+                <attribute-class>java.lang.String</attribute-class>
+                <attribute-extension>
+                    <required>false</required>
+                    <tag-attribute>true</tag-attribute>
+                </attribute-extension>
+
+            </attribute>
+
+
             <renderer-extension>
                 <jsp-ignore>true</jsp-ignore>
                 <renders-children>true</renders-children>
             </renderer-extension>
         </renderer>
 
+
+<renderer>
+            <description><![CDATA[<div class="changed_added_2_1">
+
+<p><span class="changed_added_2_1 changed_modified_2_2">Render</span> the markup for
+a <code><!DOCTYPE></code> declaration.</p>
+
+      <p>Decode Behavior</p>
+
+      <ul>
+
+<p>No action is required during decode for this renderer.</p>
+
+</ul>
+
+      <p>Encode Behavior</p>
+
+<p>Output an XML Doctype using the provided attributes.  Output the
+literal text <code><!DOCTYPE</code>. The "rootElement" attribute is
+required and must be rendered next.  If the "public" attribute is
+defined, render the literal text <code>PUBLIC</code> then render the
+value of the attribute inside double quotes.  If the "system" attribute
+is defined, render it next, inside double quotes.  Close the doctype
+declaration with the literal text <code>></code>.</p>
+
+<div class="changed_added_2_2">
+
+<p>No relocation occurs with the output of this component. It is
+rendered at whatever position in the view hierarchy it happens to be
+encountered when traversing the view to render. Therefore, this
+component must be located in the view hierarchy at the correct location
+so that the final rendered markup has it in the proper place with
+respect to the user agent that consumes the rendered markup. In practice
+this means in front of the <html> or <h:html> element.
+Furthermore, if multiple <h:doctype> components exist,
+<strong>all</strong> of them will be rendered.</p>
+
+<p>If this component is present in a view, any DOCTYPE that would
+otherwise have been rendered by virtue of being present in the VDL page
+must be ignored.</p>
+
+</div>
+
+
+</div>]]></description>
+            <component-family>javax.faces.Output</component-family>
+            <renderer-type>javax.faces.Doctype</renderer-type>
+            <renderer-class>
+               <xi:include href="standard-html-renderkit-impl.xml" xpointer="xpointer(/root/output-doctype-renderer-class/text())"/>
+            </renderer-class>
+
+            <xi:include href="doctype-attrs.xml" xpointer="xpointer(/root/*)"/>
+
+            <renderer-extension>
+                <jsp-ignore>true</jsp-ignore>
+                <tag-name>doctype</tag-name>
+            </renderer-extension>
+        </renderer>
+
         <renderer>
-            <description><![CDATA[<div class="changed_added_2_0">
+            <description><![CDATA[
+
+<p><span class="changed_modified_2_0_rev_a
+changed_modified_2_1 changed_modified_2_2">Render</span> the markup for a
+<code><head></code> element.</p>
 
-<p>Render the markup for a <code><head></code> element.</p>
+<div class="changed_added_2_0">
 
       <p>Decode Behavior</p>
 
@@ -3335,11 +3970,12 @@ the literal string "<code>head</code>" as the last argument.</p>
 
       <ul>
 
-<p>Render the starting <code><head></code> element tag.  Any attributes declared on the element must be passed through
-unmodified to the rendered output.  
-At some point before rendering the
-      closing <code></head></code> element tag, render any resources that have been targeted
-      for this "head" element:
+<p>Render the starting <code><head></code> element tag.  Any
+attributes declared on the element must be conveyed unmodified to
+the rendered output.  <span class="changed_modified_2_0_rev_a">At some
+point before rendering the closing <code></head></code> element
+tag</span>, render any resources that have been targeted for this "head"
+element:
       <ul>
       <li>Obtain a <code>UIViewRoot</code> instance.</li>
       <li>Obtain a <code>List</code> of component resources targeted for
@@ -3348,11 +3984,13 @@ At some point before rendering the
       <li>Iterate over the returned <code>List</code> of <code>UIComponent</code> instances
       and call <code>encodeAll</code> on each <code>UIComponent</code> instance. 
 
-<p>Any attributes declared on the element must be passed through
+<p>Any attributes declared on the element must be conveyed
 unmodified to the rendered output.</p>
 
       </ul>
 
+<div class="changed_modified_2_0_rev_a">
+
       <p>Note that due to the cascading nature of CSS files, the order
       in which these files have been added to the view must be preserved
       when rendering the references to the files within the
@@ -3365,6 +4003,8 @@ unmodified to the rendered output.</p>
 
       <p>Render the ending <code></head></code> element tag.</p>
 
+</div>
+
 </div>]]></description>
             <component-family>javax.faces.Output</component-family>
             <renderer-type>javax.faces.Head</renderer-type>
@@ -3372,7 +4012,9 @@ unmodified to the rendered output.</p>
                <xi:include href="standard-html-renderkit-impl.xml" xpointer="xpointer(/root/output-head-renderer-class/text())"/>
             </renderer-class>
 
+            <xi:include href="id-attrs.xml" xpointer="xpointer(/root/*)"/> 
             <xi:include href="i18n-attrs.xml" xpointer="xpointer(/root/*)"/>
+            <xi:include href="document-attrs.xml" xpointer="xpointer(/root/*)"/>
 
             <renderer-extension>
                 <jsp-ignore>true</jsp-ignore>
@@ -3381,9 +4023,12 @@ unmodified to the rendered output.</p>
         </renderer>
 
         <renderer>
-            <description><![CDATA[<div class="changed_added_2_0">
+            <description><![CDATA[
+
+<p><span class="changed_modified_2_1 changed_added_2_0">Render</span> the markup for a
+<code><body></code> element.</p>
 
-<p>Render the markup for a <code><body></code> element.</p>
+<div class="changed_added_2_0">
 
       <p>Decode Behavior</p>
 
@@ -3413,7 +4058,7 @@ unmodified to the rendered output.</p>
       and call <code>encodeAll</code> on each <code>UIComponent</code> instance.
       </ul>
 
-<p>Any attributes declared on the element must be passed through
+<p>Any attributes declared on the element must be conveyed
 unmodified to the rendered output.</p>
 
 </div>]]></description>
@@ -3422,8 +4067,10 @@ unmodified to the rendered output.</p>
             <renderer-class>
                <xi:include href="standard-html-renderkit-impl.xml" xpointer="xpointer(/root/output-body-renderer-class/text())"/>
             </renderer-class>
- 
+
+            <xi:include href="id-attrs.xml" xpointer="xpointer(/root/*)"/> 
             <xi:include href="core-attrs.xml" xpointer="xpointer(/root/*)"/>
+            <xi:include href="document-attrs.xml" xpointer="xpointer(/root/*)"/>
             <xi:include href="i18n-attrs.xml" xpointer="xpointer(/root/*)"/>
             <xi:include href="events-attrs.xml" xpointer="xpointer(/root/*)"/>
 
@@ -3437,7 +4084,7 @@ unmodified to the rendered output.</p>
                <attribute-name>onload</attribute-name>
                <attribute-class>java.lang.String</attribute-class>
                <attribute-extension>
-                   <pass-through>true</pass-through>
+                   <ignored-by-renderer>true</ignored-by-renderer>
                    <behavior/>
                </attribute-extension>
             </attribute> 
@@ -3452,7 +4099,7 @@ unmodified to the rendered output.</p>
                <attribute-name>onunload</attribute-name>
                <attribute-class>java.lang.String</attribute-class>
                <attribute-extension>
-                   <pass-through>true</pass-through>
+                   <ignored-by-renderer>true</ignored-by-renderer>
                    <behavior/>
                </attribute-extension>
             </attribute> 
diff --git a/jsf-api/doc/standard-html-renderkit.xml b/jsf-api/doc/standard-html-renderkit.xml
index 56f0f3d..1ce8093 100644
--- a/jsf-api/doc/standard-html-renderkit.xml
+++ b/jsf-api/doc/standard-html-renderkit.xml
@@ -1,41 +1,47 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
 <!-- =========== FULL CONFIGURATION FILE ================================== -->
-<faces-config xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xi="http://www.w3.org/2001/XInclude" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd" version="2.0">
+<faces-config xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xi="http://www.w3.org/2001/XInclude" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd" version="2.2">
   <!-- Generic User Interface Components -->
   <component>
     <component-type>javax.faces.Column</component-type>
@@ -585,6 +591,16 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       </property-extension>
     </property>
     <property>
+      <description><![CDATA[<span class="changed_added_2_1">Boolean flag directing how the per-row component state should be handled.</span>]]></description>
+      <display-name>Preserve Row Component State</display-name>
+      <icon/>
+      <property-name>rowStatePreserved</property-name>
+      <property-class>boolean</property-class>
+      <property-extension>
+        <tag-attribute>false</tag-attribute>
+      </property-extension>
+    </property>
+    <property>
       <description>
           The number of rows of model data that are available for processing
           by this component.  If the number of rows is unknown, this property
@@ -2979,8 +2995,8 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
     </component-extension>
   </component>
   <component>
-    <component-type>javax.faces.Parameter</component-type>
-    <component-class>javax.faces.component.UIParameter</component-class>
+    <component-type>javax.faces.ViewAction</component-type>
+    <component-class>javax.faces.component.UIViewAction</component-class>
 
     <property>
       <description><![CDATA[
@@ -3122,18 +3138,93 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
     </property>
     <property>
       <description>
-          Name of the parameter associated with this component.
+          MethodExpression representing the application action to invoke
+          when this component is activated by the user.  The expression
+          must evaluate to a public method that takes no parameters, and
+          returns an Object (the toString() of which is called to derive
+          the logical outcome) which is passed to the NavigationHandler
+          for this application.
         </description>
-      <display-name>Property Name</display-name>
+      <display-name>Application Action</display-name>
       <icon/>
-      <property-name>name</property-name>
-      <property-class>java.lang.String</property-class>
+      <property-name>action</property-name>
+      <property-class>javax.el.MethodExpression</property-class>
+      <property-extension>
+        <method-signature>
+                java.lang.Object action()
+            </method-signature>
+      </property-extension>
+    </property>
+    <property>
+      <description><![CDATA[<p>
+
+          MethodExpression representing an action listener method that
+          will be notified when this component is activated by the user.
+          The expression must evaluate to a public method that takes an
+          ActionEvent parameter, with a return type of void, <span
+          class="changed_added_2_0">or to a public method that takes no
+          arguments with a return type of void.  In the latter case, the
+          method has no way of easily knowing where the event came from,
+          but this can be useful in cases where a notification is needed
+          that "some action happened".</span>
+
+</p>]]></description>
+      <display-name>Action Listener</display-name>
+      <icon/>
+      <property-name>actionListener</property-name>
+      <property-class>javax.el.MethodExpression</property-class>
+      <property-extension>
+        <method-signature>
+                void actionListener(javax.faces.event.ActionEvent)
+            </method-signature>
+        <!-- PENDING modify tlddoc to handle an OR of method signatures 
+as required by 
+https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447 
+            <method-signature>
+                void actionListener()
+            </method-signature>
+-->
+      </property-extension>
     </property>
     <property>
       <description>
-          Value of the parameter associated with this component.
+          Flag indicating that, if this component is activated by the user,
+          notifications should be delivered to interested listeners and actions
+          immediately (that is, during Apply Request Values phase) rather than
+          waiting until Invoke Application phase.
         </description>
-      <display-name>Property Value</display-name>
+      <display-name>Immediate Action</display-name>
+      <icon/>
+      <property-name>immediate</property-name>
+      <property-class>boolean</property-class>
+      <property-extension>
+        <value-expression-enabled>true</value-expression-enabled>
+      </property-extension>
+    </property>
+    <property>
+      <description>
+          MethodExpression representing the application action to invoke
+          when this component is activated by the user.  The expression
+          must evaluate to a public method that takes no parameters, and
+          returns an Object (the toString() of which is called to derive
+          the logical outcome) which is passed to the NavigationHandler
+          for this application.
+        </description>
+      <display-name>Application Action</display-name>
+      <icon/>
+      <property-name>actionExpression</property-name>
+      <property-class>javax.el.MethodExpression</property-class>
+      <property-extension>
+        <method-signature>
+                java.lang.Object action()
+            </method-signature>
+      </property-extension>
+    </property>
+    <property>
+      <description>
+          The current value of this component.
+        </description>
+      <display-name>Value</display-name>
       <icon/>
       <property-name>value</property-name>
       <property-class>java.lang.Object</property-class>
@@ -3141,14 +3232,53 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <value-expression-enabled>true</value-expression-enabled>
       </property-extension>
     </property>
+    <property>
+      <description>
+                By default, a view action is not executed on
+                postback. If your application is decidedly stateless,
+                you may need the view action to execute on any type of
+                request. The default value is false.
+            </description>
+      <property-name>onPostback</property-name>
+      <property-class>boolean</property-class>
+      <property-extension>
+        <required>false</required>
+        <value-expression-enabled>true</value-expression-enabled>
+      </property-extension>
+    </property>
+    <property>
+      <description>
+                You may only want the view action to be invoked under certain conditions. 
+                For that, you can use this property, which accepts an EL value expression
+                that must evaluate to a boolean value.
+            </description>
+      <property-name>if</property-name>
+      <property-class>boolean</property-class>
+      <property-extension>
+        <required>false</required>
+        <value-expression-enabled>true</value-expression-enabled>
+      </property-extension>
+    </property>
+    <property>
+      <description>
+                Specifies the phase in which the action invocation should occur 
+                using the name of the phase constant in the PhaseId class (the case does 
+                not matter). The default is INVOKE_APPLICATION.
+            </description>
+      <property-name>phase</property-name>
+      <property-class>java.lang.String</property-class>
+      <property-extension>
+        <required>false</required>
+      </property-extension>
+    </property>
 
     <component-extension>
-      <component-family>javax.faces.Parameter</component-family>
+      <component-family>javax.faces.ViewAction</component-family>
     </component-extension>
   </component>
   <component>
-    <component-type>javax.faces.SelectBoolean</component-type>
-    <component-class>javax.faces.component.UISelectBoolean</component-class>
+    <component-type>javax.faces.Parameter</component-type>
+    <component-class>javax.faces.component.UIParameter</component-class>
 
     <property>
       <description><![CDATA[
@@ -3290,108 +3420,276 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
     </property>
     <property>
       <description>
-            Converter instance registered with this component.
+          Name of the parameter associated with this component.
         </description>
-      <display-name>Converter</display-name>
+      <display-name>Property Name</display-name>
       <icon/>
-      <property-name>converter</property-name>
-      <property-class>javax.faces.convert.Converter</property-class>
-      <property-extension>
-        <value-expression-enabled>true</value-expression-enabled>
-      </property-extension>
+      <property-name>name</property-name>
+      <property-class>java.lang.String</property-class>
     </property>
     <property>
       <description>
-            For output components, this is the same as the "value" property.
-            For input components, this is the most recently user-entered
-            value, which will be pushed to the application data model during
-            Update Model Values phase, if a value binding is present for the
-            "value" property.
+          Value of the parameter associated with this component.
         </description>
-      <display-name>Local Value</display-name>
+      <display-name>Property Value</display-name>
       <icon/>
-      <property-name>localValue</property-name>
+      <property-name>value</property-name>
       <property-class>java.lang.Object</property-class>
       <property-extension>
-        <tag-attribute>false</tag-attribute>
+        <value-expression-enabled>true</value-expression-enabled>
       </property-extension>
     </property>
+
+    <component-extension>
+      <component-family>javax.faces.Parameter</component-family>
+    </component-extension>
+  </component>
+  <component>
+    <component-type>javax.faces.SelectBoolean</component-type>
+    <component-class>javax.faces.component.UISelectBoolean</component-class>
+
     <property>
-      <description>
-            The current value of this component.
-        </description>
-      <display-name>Value</display-name>
+      <description><![CDATA[
+          A mutable Map of the attributes associated with
+          this component, keyed by attribute name.
+        ]]></description>
+      <display-name>Attributes Map</display-name>
       <icon/>
-      <property-name>value</property-name>
-      <property-class>java.lang.Boolean</property-class>
+      <property-name>attributes</property-name>
+      <property-class>java.util.Map</property-class>
       <property-extension>
-        <value-expression-enabled>true</value-expression-enabled>
+        <tag-attribute>false</tag-attribute>
+        <read-only>true</read-only>
       </property-extension>
     </property>
     <property>
-      <description>
-          Flag indicating whether the "localValue" property
-          of this component has been set.  This property is
-          reset automatically when the "value" propertyis set.
-        </description>
-      <display-name>Local Value Set</display-name>
+      <description><![CDATA[
+          The number of child components associated with
+          this component.
+        ]]></description>
+      <display-name>Child Component Count</display-name>
       <icon/>
-      <property-name>localValueSet</property-name>
-      <property-class>boolean</property-class>
+      <property-name>childCount</property-name>
+      <property-class>int</property-class>
       <property-extension>
         <tag-attribute>false</tag-attribute>
+        <read-only>true</read-only>
       </property-extension>
     </property>
     <property>
-      <description>
-          Flag indicating that the user is required to provide a submitted
-          value for this input component.
-        </description>
-      <display-name>Required Flag</display-name>
+      <description><![CDATA[
+          A mutable List of the child components associated with
+          this component.
+        ]]></description>
+      <display-name>Child Component List</display-name>
       <icon/>
-      <property-name>required</property-name>
-      <property-class>boolean</property-class>
+      <property-name>children</property-name>
+      <property-class>java.util.List</property-class>
       <property-extension>
-        <value-expression-enabled>true</value-expression-enabled>
+        <tag-attribute>false</tag-attribute>
+        <read-only>true</read-only>
       </property-extension>
     </property>
     <property>
-      <description>
-          A ValueExpression enabled attribute that, if present, will be
-          used as the text of the validation message for the "required"
-          facility, if the "required" facility is used.
-        </description>
-      <display-name>Required Message</display-name>
+      <description><![CDATA[
+          A mutable Map of the facets associated with
+          this component, keyed by facet name.
+        ]]></description>
+      <display-name>Facets Map</display-name>
       <icon/>
-      <property-name>requiredMessage</property-name>
-      <property-class>java.lang.String</property-class>
+      <property-name>facets</property-name>
+      <property-class>java.util.Map</property-class>
       <property-extension>
-        <value-expression-enabled>true</value-expression-enabled>
+        <tag-attribute>false</tag-attribute>
+        <read-only>true</read-only>
       </property-extension>
     </property>
     <property>
-      <description>
-          A ValueExpression enabled attribute that, if present, will be
-          used as the text of the converter message, replacing any message
-          that comes from the converter.
-        </description>
-      <display-name>Converter Message</display-name>
+      <description><![CDATA[
+          The component family to which this component belongs.  This property
+          is used to select an appropriate Renderer.
+        ]]></description>
+      <display-name>Component Family</display-name>
       <icon/>
-      <property-name>converterMessage</property-name>
+      <property-name>family</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <value-expression-enabled>true</value-expression-enabled>
+        <tag-attribute>false</tag-attribute>
+        <read-only>true</read-only>
       </property-extension>
     </property>
     <property>
-      <description>
-          A ValueExpression enabled attribute that, if present, will be
-          used as the text of the validator message, replacing any
-          message that comes from the validator.
-        </description>
-      <display-name>Validator Message</display-name>
-      <icon/>
-      <property-name>validatorMessage</property-name>
+      <description><![CDATA[
+          The component identifier for this component.  This value must be
+          unique within the closest parent component that is a naming
+          container.
+        ]]></description>
+      <display-name>Component Identifier</display-name>
+      <icon/>
+      <property-name>id</property-name>
+      <property-class>java.lang.String</property-class>
+    </property>
+    <property>
+      <description><![CDATA[
+          The parent component for this component.  On the root component
+          in the component tree (which must be of type UIViewRoot), this
+          property is null.
+        ]]></description>
+      <display-name>Parent Component</display-name>
+      <icon/>
+      <property-name>parent</property-name>
+      <property-class>javax.faces.component.UIComponent</property-class>
+      <property-extension>
+        <tag-attribute>false</tag-attribute>
+        <read-only>true</read-only>
+      </property-extension>
+    </property>
+    <property>
+      <description><![CDATA[
+          Flag indicating whether or not this component should be rendered
+          (during Render Response Phase), or processed on any subsequent
+          form submit.  The default value for this property is true.
+        ]]></description>
+      <display-name>Rendered Flag</display-name>
+      <icon/>
+      <property-name>rendered</property-name>
+      <property-class>boolean</property-class>
+      <property-extension>
+        <value-expression-enabled>true</value-expression-enabled>
+      </property-extension>
+    </property>
+    <property>
+      <description><![CDATA[
+          Identifier used (in conjunction with the "family" property) to
+          select an appropriate Renderer to encode and decode this component.
+        ]]></description>
+      <display-name>Renderer Type</display-name>
+      <icon/>
+      <property-name>rendererType</property-name>
+      <property-class>java.lang.String</property-class>
+      <property-extension>
+        <tag-attribute>false</tag-attribute>
+      </property-extension>
+    </property>
+    <property>
+      <description><![CDATA[
+          Flag indicating whether or not this component takes responsibility
+          for rendering its own children.  This decision is normally delegated
+          to the associated Renderer, if there is one.
+        ]]></description>
+      <display-name>Renders Children</display-name>
+      <icon/>
+      <property-name>rendersChildren</property-name>
+      <property-class>boolean</property-class>
+      <property-extension>
+        <tag-attribute>false</tag-attribute>
+        <read-only>true</read-only>
+      </property-extension>
+    </property>
+    <property>
+      <description>
+            Converter instance registered with this component.
+        </description>
+      <display-name>Converter</display-name>
+      <icon/>
+      <property-name>converter</property-name>
+      <property-class>javax.faces.convert.Converter</property-class>
+      <property-extension>
+        <value-expression-enabled>true</value-expression-enabled>
+      </property-extension>
+    </property>
+    <property>
+      <description>
+            For output components, this is the same as the "value" property.
+            For input components, this is the most recently user-entered
+            value, which will be pushed to the application data model during
+            Update Model Values phase, if a value binding is present for the
+            "value" property.
+        </description>
+      <display-name>Local Value</display-name>
+      <icon/>
+      <property-name>localValue</property-name>
+      <property-class>java.lang.Object</property-class>
+      <property-extension>
+        <tag-attribute>false</tag-attribute>
+      </property-extension>
+    </property>
+    <property>
+      <description>
+            The current value of this component.
+        </description>
+      <display-name>Value</display-name>
+      <icon/>
+      <property-name>value</property-name>
+      <property-class>java.lang.Boolean</property-class>
+      <property-extension>
+        <value-expression-enabled>true</value-expression-enabled>
+      </property-extension>
+    </property>
+    <property>
+      <description>
+          Flag indicating whether the "localValue" property
+          of this component has been set.  This property is
+          reset automatically when the "value" propertyis set.
+        </description>
+      <display-name>Local Value Set</display-name>
+      <icon/>
+      <property-name>localValueSet</property-name>
+      <property-class>boolean</property-class>
+      <property-extension>
+        <tag-attribute>false</tag-attribute>
+      </property-extension>
+    </property>
+    <property>
+      <description>
+          Flag indicating that the user is required to provide a submitted
+          value for this input component.
+        </description>
+      <display-name>Required Flag</display-name>
+      <icon/>
+      <property-name>required</property-name>
+      <property-class>boolean</property-class>
+      <property-extension>
+        <value-expression-enabled>true</value-expression-enabled>
+      </property-extension>
+    </property>
+    <property>
+      <description>
+          A ValueExpression enabled attribute that, if present, will be
+          used as the text of the validation message for the "required"
+          facility, if the "required" facility is used.
+        </description>
+      <display-name>Required Message</display-name>
+      <icon/>
+      <property-name>requiredMessage</property-name>
+      <property-class>java.lang.String</property-class>
+      <property-extension>
+        <value-expression-enabled>true</value-expression-enabled>
+      </property-extension>
+    </property>
+    <property>
+      <description>
+          A ValueExpression enabled attribute that, if present, will be
+          used as the text of the converter message, replacing any message
+          that comes from the converter.
+        </description>
+      <display-name>Converter Message</display-name>
+      <icon/>
+      <property-name>converterMessage</property-name>
+      <property-class>java.lang.String</property-class>
+      <property-extension>
+        <value-expression-enabled>true</value-expression-enabled>
+      </property-extension>
+    </property>
+    <property>
+      <description>
+          A ValueExpression enabled attribute that, if present, will be
+          used as the text of the validator message, replacing any
+          message that comes from the validator.
+        </description>
+      <display-name>Validator Message</display-name>
+      <icon/>
+      <property-name>validatorMessage</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
         <value-expression-enabled>true</value-expression-enabled>
@@ -5176,7 +5474,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>style</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -5190,7 +5488,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>styleClass</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>false</pass-through>
+        <ignored-by-renderer>false</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -5203,7 +5501,31 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>title</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
+      </property-extension>
+    </property>
+    <property>
+      <description><![CDATA[
+          <p class="changed_added_2_2">Per the WAI-ARIA spec and its
+          relationship to HTML5 (Section title ARIA Role Attriubute),
+          every HTML element may have a "role" attribute whose value
+          must be passed through unmodified on the element on which it
+          is declared in the final rendered markup.  The attribute, if
+          specified, must have a value that is a string literal that is,
+          or an EL Expression that evaluates to, a set of
+          space-separated tokens representing the various WAI-ARIA roles
+          that the element belongs to.
+          </p>
+
+          <p class="changed_added_2_2">It is the page author's
+          responsibility to ensure that the user agent is capable of
+          correctly interpreting the value of this attribute.</p>]]></description>
+      <display-name>ARIA role</display-name>
+      <icon/>
+      <property-name>role</property-name>
+      <property-class>java.lang.String</property-class>
+      <property-extension>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
 
@@ -5218,7 +5540,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>accesskey</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -5230,7 +5552,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onblur</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -5243,7 +5565,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onfocus</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -5258,7 +5580,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>tabindex</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
 
@@ -5267,13 +5589,15 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <description>
           Direction indication for text that does not inherit directionality.
           Valid values are "LTR" (left-to-right) and "RTL" (right-to-left).
+          These attributes are case sensitive when rendering to XHTML, so
+          care must be taken to have the correct case.
         </description>
       <display-name>Direction</display-name>
       <icon/>
       <property-name>dir</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -5286,7 +5610,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>lang</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
 
@@ -5303,7 +5627,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>disabled</property-name>
       <property-class>boolean</property-class>
       <property-extension>
-        <pass-through>false</pass-through>
+        <ignored-by-renderer>false</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -5316,7 +5640,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onchange</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>false</pass-through>
+        <ignored-by-renderer>false</ignored-by-renderer>
         <behavior/>
         <behavior>valueChange</behavior>
         <default-behavior>true</default-behavior>
@@ -5332,7 +5656,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onselect</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -5349,7 +5673,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>readonly</property-name>
       <property-class>boolean</property-class>
       <property-extension>
-        <pass-through>false</pass-through>
+        <ignored-by-renderer>false</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -5376,7 +5700,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>alt</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -5415,7 +5739,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onclick</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>false</pass-through>
+        <ignored-by-renderer>false</ignored-by-renderer>
         <behavior/>
         <behavior>action</behavior>
         <default-behavior>true</default-behavior>
@@ -5431,7 +5755,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>ondblclick</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -5445,7 +5769,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onchange</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -5459,7 +5783,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onmousedown</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -5473,7 +5797,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onmouseup</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -5487,7 +5811,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onmouseover</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -5501,7 +5825,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onmousemove</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -5515,7 +5839,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onmouseout</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -5529,7 +5853,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onkeypress</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -5543,7 +5867,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onkeydown</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -5557,7 +5881,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onkeyup</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -5815,7 +6139,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>style</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -5829,7 +6153,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>styleClass</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>false</pass-through>
+        <ignored-by-renderer>false</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -5842,7 +6166,31 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>title</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
+      </property-extension>
+    </property>
+    <property>
+      <description><![CDATA[
+          <p class="changed_added_2_2">Per the WAI-ARIA spec and its
+          relationship to HTML5 (Section title ARIA Role Attriubute),
+          every HTML element may have a "role" attribute whose value
+          must be passed through unmodified on the element on which it
+          is declared in the final rendered markup.  The attribute, if
+          specified, must have a value that is a string literal that is,
+          or an EL Expression that evaluates to, a set of
+          space-separated tokens representing the various WAI-ARIA roles
+          that the element belongs to.
+          </p>
+
+          <p class="changed_added_2_2">It is the page author's
+          responsibility to ensure that the user agent is capable of
+          correctly interpreting the value of this attribute.</p>]]></description>
+      <display-name>ARIA role</display-name>
+      <icon/>
+      <property-name>role</property-name>
+      <property-class>java.lang.String</property-class>
+      <property-extension>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
 
@@ -5857,7 +6205,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>accesskey</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -5869,7 +6217,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onblur</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -5882,7 +6230,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onfocus</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -5897,7 +6245,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>tabindex</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
 
@@ -5906,13 +6254,15 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <description>
           Direction indication for text that does not inherit directionality.
           Valid values are "LTR" (left-to-right) and "RTL" (right-to-left).
+          These attributes are case sensitive when rendering to XHTML, so
+          care must be taken to have the correct case.
         </description>
       <display-name>Direction</display-name>
       <icon/>
       <property-name>dir</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -5925,7 +6275,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>lang</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
 
@@ -5940,7 +6290,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>charset</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -5953,7 +6303,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>coords</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -5966,7 +6316,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>hreflang</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -5981,7 +6331,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>rel</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -5996,7 +6346,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>rev</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -6012,7 +6362,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>shape</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -6026,7 +6376,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>target</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>false</pass-through>
+        <ignored-by-renderer>false</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -6039,7 +6389,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>type</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -6053,7 +6403,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>disabled</property-name>
       <property-class>boolean</property-class>
       <property-extension>
-        <pass-through>false</pass-through>
+        <ignored-by-renderer>false</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -6066,7 +6416,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onclick</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>false</pass-through>
+        <ignored-by-renderer>false</ignored-by-renderer>
         <behavior/>
         <behavior>action</behavior>
         <default-behavior>true</default-behavior>
@@ -6082,7 +6432,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>ondblclick</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -6096,7 +6446,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onmousedown</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -6110,7 +6460,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onmouseup</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -6124,7 +6474,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onmouseover</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -6138,7 +6488,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onmousemove</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -6152,7 +6502,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onmouseout</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -6166,7 +6516,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onkeypress</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -6180,7 +6530,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onkeydown</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -6194,7 +6544,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onkeyup</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -6378,6 +6728,16 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       </property-extension>
     </property>
     <property>
+      <description><![CDATA[<span class="changed_added_2_1">Boolean flag directing how the per-row component state should be handled.</span>]]></description>
+      <display-name>Preserve Row Component State</display-name>
+      <icon/>
+      <property-name>rowStatePreserved</property-name>
+      <property-class>boolean</property-class>
+      <property-extension>
+        <tag-attribute>false</tag-attribute>
+      </property-extension>
+    </property>
+    <property>
       <description>
           The number of rows of model data that are available for processing
           by this component.  If the number of rows is unknown, this property
@@ -6469,7 +6829,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>style</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -6483,7 +6843,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>styleClass</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>false</pass-through>
+        <ignored-by-renderer>false</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -6496,7 +6856,31 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>title</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
+      </property-extension>
+    </property>
+    <property>
+      <description><![CDATA[
+          <p class="changed_added_2_2">Per the WAI-ARIA spec and its
+          relationship to HTML5 (Section title ARIA Role Attriubute),
+          every HTML element may have a "role" attribute whose value
+          must be passed through unmodified on the element on which it
+          is declared in the final rendered markup.  The attribute, if
+          specified, must have a value that is a string literal that is,
+          or an EL Expression that evaluates to, a set of
+          space-separated tokens representing the various WAI-ARIA roles
+          that the element belongs to.
+          </p>
+
+          <p class="changed_added_2_2">It is the page author's
+          responsibility to ensure that the user agent is capable of
+          correctly interpreting the value of this attribute.</p>]]></description>
+      <display-name>ARIA role</display-name>
+      <icon/>
+      <property-name>role</property-name>
+      <property-class>java.lang.String</property-class>
+      <property-extension>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
 
@@ -6511,7 +6895,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onclick</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -6525,7 +6909,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>ondblclick</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -6539,7 +6923,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onmousedown</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -6553,7 +6937,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onmouseup</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -6567,7 +6951,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onmouseover</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -6581,7 +6965,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onmousemove</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -6595,7 +6979,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onmouseout</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -6609,7 +6993,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onkeypress</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -6623,7 +7007,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onkeydown</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -6637,7 +7021,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onkeyup</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -6647,13 +7031,15 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <description>
           Direction indication for text that does not inherit directionality.
           Valid values are "LTR" (left-to-right) and "RTL" (right-to-left).
+          These attributes are case sensitive when rendering to XHTML, so
+          care must be taken to have the correct case.
         </description>
       <display-name>Direction</display-name>
       <icon/>
       <property-name>dir</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -6666,7 +7052,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>lang</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
 
@@ -6680,7 +7066,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>bgcolor</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -6693,7 +7079,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>border</property-name>
       <property-class>int</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -6706,7 +7092,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>cellpadding</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -6723,7 +7109,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>cellspacing</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -6769,7 +7155,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>frame</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -6831,7 +7217,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>rules</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -6845,7 +7231,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>summary</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -6857,7 +7243,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>width</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -6872,6 +7258,16 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-class>java.lang.String</property-class>
     </property>
 
+    <property>
+      <description><![CDATA[<span class="changed_added_2_1">Boolean flag directing how the per-row component state should be handled.</span>]]></description>
+      <display-name>Preserve Row Component State</display-name>
+      <icon/>
+      <property-name>rowStatePreserved</property-name>
+      <property-class>boolean</property-class>
+      <property-extension>
+        <tag-attribute>false</tag-attribute>
+      </property-extension>
+    </property>
     <component-extension>
       <base-component-type>javax.faces.Data</base-component-type>
       <renderer-type>javax.faces.Table</renderer-type>
@@ -7062,7 +7458,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>style</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -7076,7 +7472,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>styleClass</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>false</pass-through>
+        <ignored-by-renderer>false</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -7089,7 +7485,31 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>title</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
+      </property-extension>
+    </property>
+    <property>
+      <description><![CDATA[
+          <p class="changed_added_2_2">Per the WAI-ARIA spec and its
+          relationship to HTML5 (Section title ARIA Role Attriubute),
+          every HTML element may have a "role" attribute whose value
+          must be passed through unmodified on the element on which it
+          is declared in the final rendered markup.  The attribute, if
+          specified, must have a value that is a string literal that is,
+          or an EL Expression that evaluates to, a set of
+          space-separated tokens representing the various WAI-ARIA roles
+          that the element belongs to.
+          </p>
+
+          <p class="changed_added_2_2">It is the page author's
+          responsibility to ensure that the user agent is capable of
+          correctly interpreting the value of this attribute.</p>]]></description>
+      <display-name>ARIA role</display-name>
+      <icon/>
+      <property-name>role</property-name>
+      <property-class>java.lang.String</property-class>
+      <property-extension>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
 
@@ -7104,7 +7524,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onclick</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -7118,7 +7538,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>ondblclick</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -7132,7 +7552,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onmousedown</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -7146,7 +7566,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onmouseup</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -7160,7 +7580,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onmouseover</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -7174,7 +7594,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onmousemove</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -7188,7 +7608,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onmouseout</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -7202,7 +7622,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onkeypress</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -7216,7 +7636,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onkeydown</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -7230,7 +7650,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onkeyup</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -7240,13 +7660,15 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <description>
           Direction indication for text that does not inherit directionality.
           Valid values are "LTR" (left-to-right) and "RTL" (right-to-left).
+          These attributes are case sensitive when rendering to XHTML, so
+          care must be taken to have the correct case.
         </description>
       <display-name>Direction</display-name>
       <icon/>
       <property-name>dir</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -7259,7 +7681,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>lang</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
 
@@ -7274,7 +7696,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>accept</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -7300,7 +7722,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-class>java.lang.String</property-class>
       <property-extension>
         <default-value>"application/x-www-form-urlencoded"</default-value>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -7312,7 +7734,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onreset</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -7324,7 +7746,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onsubmit</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -7338,7 +7760,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>target</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
 
@@ -7528,7 +7950,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>style</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -7542,7 +7964,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>styleClass</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>false</pass-through>
+        <ignored-by-renderer>false</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -7555,7 +7977,31 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>title</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
+      </property-extension>
+    </property>
+    <property>
+      <description><![CDATA[
+          <p class="changed_added_2_2">Per the WAI-ARIA spec and its
+          relationship to HTML5 (Section title ARIA Role Attriubute),
+          every HTML element may have a "role" attribute whose value
+          must be passed through unmodified on the element on which it
+          is declared in the final rendered markup.  The attribute, if
+          specified, must have a value that is a string literal that is,
+          or an EL Expression that evaluates to, a set of
+          space-separated tokens representing the various WAI-ARIA roles
+          that the element belongs to.
+          </p>
+
+          <p class="changed_added_2_2">It is the page author's
+          responsibility to ensure that the user agent is capable of
+          correctly interpreting the value of this attribute.</p>]]></description>
+      <display-name>ARIA role</display-name>
+      <icon/>
+      <property-name>role</property-name>
+      <property-class>java.lang.String</property-class>
+      <property-extension>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
 
@@ -7570,7 +8016,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onclick</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -7584,7 +8030,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>ondblclick</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -7598,7 +8044,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onmousedown</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -7612,7 +8058,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onmouseup</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -7626,7 +8072,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onmouseover</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -7640,7 +8086,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onmousemove</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -7654,7 +8100,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onmouseout</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -7668,7 +8114,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onkeypress</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -7682,7 +8128,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onkeydown</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -7696,7 +8142,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onkeyup</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -7706,13 +8152,15 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <description>
           Direction indication for text that does not inherit directionality.
           Valid values are "LTR" (left-to-right) and "RTL" (right-to-left).
+          These attributes are case sensitive when rendering to XHTML, so
+          care must be taken to have the correct case.
         </description>
       <display-name>Direction</display-name>
       <icon/>
       <property-name>dir</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -7725,7 +8173,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>lang</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
 
@@ -7740,7 +8188,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>alt</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -7752,7 +8200,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>height</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -7768,7 +8216,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>ismap</property-name>
       <property-class>boolean</property-class>
       <property-extension>
-        <pass-through>false</pass-through>
+        <ignored-by-renderer>false</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -7781,7 +8229,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>longdesc</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -7794,7 +8242,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>usemap</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -7806,7 +8254,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>width</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
 
@@ -7817,10 +8265,10 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
   </component>
   <component>
     <description><![CDATA[<p>Represents an HTML <code>input</code> element
-      of type <code>hidden</code>.</p>]]></description>
-    <display-name>Input Hidden</display-name>
-    <component-type>javax.faces.HtmlInputHidden</component-type>
-    <component-class>javax.faces.component.html.HtmlInputHidden</component-class>
+      of type <code>file</code>.</p>]]></description>
+    <display-name>Input File</display-name>
+    <component-type>javax.faces.HtmlInputFile</component-type>
+    <component-class>javax.faces.component.html.HtmlInputFile</component-class>
 
     <property>
       <description><![CDATA[
@@ -8161,783 +8609,794 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       </property-extension>
     </property>
 
-    <component-extension>
-      <base-component-type>javax.faces.Input</base-component-type>
-      <renderer-type>javax.faces.Hidden</renderer-type>
-    </component-extension>
-  </component>
-  <component>
-    <description><![CDATA[<p>Represents an HTML <code>input</code> element
-      of type <code>password</code>.  On a redisplay,
-      any previously entered value will <em>not</em>
-      be rendered (for security reasons) unless the
-      <code>redisplay</code> property is set to
-      <code>true</code>.</p>]]></description>
-    <display-name>Input Secret</display-name>
-    <component-type>javax.faces.HtmlInputSecret</component-type>
-    <component-class>javax.faces.component.html.HtmlInputSecret</component-class>
 
     <property>
-      <description><![CDATA[
-          A mutable Map of the attributes associated with
-          this component, keyed by attribute name.
-        ]]></description>
-      <display-name>Attributes Map</display-name>
+      <description>
+          CSS style(s) to be applied when this component is rendered.
+        </description>
+      <display-name>CSS Styles</display-name>
       <icon/>
-      <property-name>attributes</property-name>
-      <property-class>java.util.Map</property-class>
-      <property-extension>
-        <tag-attribute>false</tag-attribute>
-        <read-only>true</read-only>
+      <property-name>style</property-name>
+      <property-class>java.lang.String</property-class>
+      <property-extension>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
-      <description><![CDATA[
-          The number of child components associated with
-          this component.
-        ]]></description>
-      <display-name>Child Component Count</display-name>
+      <description>
+          Space-separated list of CSS style class(es) to be applied when
+          this element is rendered.  This value must be passed through
+          as the "class" attribute on generated markup.
+        </description>
+      <display-name>CSS Style Classes</display-name>
       <icon/>
-      <property-name>childCount</property-name>
-      <property-class>int</property-class>
+      <property-name>styleClass</property-name>
+      <property-class>java.lang.String</property-class>
       <property-extension>
-        <tag-attribute>false</tag-attribute>
-        <read-only>true</read-only>
+        <ignored-by-renderer>false</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
-      <description><![CDATA[
-          A mutable List of the child components associated with
-          this component.
-        ]]></description>
-      <display-name>Child Component List</display-name>
+      <description>
+          Advisory title information about markup elements generated
+          for this component.
+        </description>
+      <display-name>Advisory Title</display-name>
       <icon/>
-      <property-name>children</property-name>
-      <property-class>java.util.List</property-class>
+      <property-name>title</property-name>
+      <property-class>java.lang.String</property-class>
       <property-extension>
-        <tag-attribute>false</tag-attribute>
-        <read-only>true</read-only>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
       <description><![CDATA[
-          A mutable Map of the facets associated with
-          this component, keyed by facet name.
-        ]]></description>
-      <display-name>Facets Map</display-name>
+          <p class="changed_added_2_2">Per the WAI-ARIA spec and its
+          relationship to HTML5 (Section title ARIA Role Attriubute),
+          every HTML element may have a "role" attribute whose value
+          must be passed through unmodified on the element on which it
+          is declared in the final rendered markup.  The attribute, if
+          specified, must have a value that is a string literal that is,
+          or an EL Expression that evaluates to, a set of
+          space-separated tokens representing the various WAI-ARIA roles
+          that the element belongs to.
+          </p>
+
+          <p class="changed_added_2_2">It is the page author's
+          responsibility to ensure that the user agent is capable of
+          correctly interpreting the value of this attribute.</p>]]></description>
+      <display-name>ARIA role</display-name>
       <icon/>
-      <property-name>facets</property-name>
-      <property-class>java.util.Map</property-class>
+      <property-name>role</property-name>
+      <property-class>java.lang.String</property-class>
       <property-extension>
-        <tag-attribute>false</tag-attribute>
-        <read-only>true</read-only>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
+
+
     <property>
-      <description><![CDATA[
-          The component family to which this component belongs.  This property
-          is used to select an appropriate Renderer.
-        ]]></description>
-      <display-name>Component Family</display-name>
+      <description>
+          Javascript code executed when a pointer button is
+          clicked over this element.
+        </description>
+      <display-name>Button Click Script</display-name>
       <icon/>
-      <property-name>family</property-name>
+      <property-name>onclick</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <tag-attribute>false</tag-attribute>
-        <read-only>true</read-only>
+        <ignored-by-renderer>true</ignored-by-renderer>
+        <behavior/>
       </property-extension>
     </property>
     <property>
-      <description><![CDATA[
-          The component identifier for this component.  This value must be
-          unique within the closest parent component that is a naming
-          container.
-        ]]></description>
-      <display-name>Component Identifier</display-name>
+      <description>
+          Javascript code executed when a pointer button is
+          double clicked over this element.
+        </description>
+      <display-name>Double Click Script</display-name>
       <icon/>
-      <property-name>id</property-name>
+      <property-name>ondblclick</property-name>
       <property-class>java.lang.String</property-class>
+      <property-extension>
+        <ignored-by-renderer>true</ignored-by-renderer>
+        <behavior/>
+      </property-extension>
     </property>
     <property>
-      <description><![CDATA[
-          The parent component for this component.  On the root component
-          in the component tree (which must be of type UIViewRoot), this
-          property is null.
-        ]]></description>
-      <display-name>Parent Component</display-name>
+      <description>
+          Javascript code executed when a pointer button is
+          pressed down over this element.
+        </description>
+      <display-name>Mouse Down Script</display-name>
       <icon/>
-      <property-name>parent</property-name>
-      <property-class>javax.faces.component.UIComponent</property-class>
+      <property-name>onmousedown</property-name>
+      <property-class>java.lang.String</property-class>
       <property-extension>
-        <tag-attribute>false</tag-attribute>
-        <read-only>true</read-only>
+        <ignored-by-renderer>true</ignored-by-renderer>
+        <behavior/>
       </property-extension>
     </property>
     <property>
-      <description><![CDATA[
-          Flag indicating whether or not this component should be rendered
-          (during Render Response Phase), or processed on any subsequent
-          form submit.  The default value for this property is true.
-        ]]></description>
-      <display-name>Rendered Flag</display-name>
+      <description>
+          Javascript code executed when a pointer button is
+          released over this element.
+        </description>
+      <display-name>Mouse Up Script</display-name>
       <icon/>
-      <property-name>rendered</property-name>
-      <property-class>boolean</property-class>
+      <property-name>onmouseup</property-name>
+      <property-class>java.lang.String</property-class>
       <property-extension>
-        <value-expression-enabled>true</value-expression-enabled>
+        <ignored-by-renderer>true</ignored-by-renderer>
+        <behavior/>
       </property-extension>
     </property>
     <property>
-      <description><![CDATA[
-          Identifier used (in conjunction with the "family" property) to
-          select an appropriate Renderer to encode and decode this component.
-        ]]></description>
-      <display-name>Renderer Type</display-name>
+      <description>
+          Javascript code executed when a pointer button is
+          moved onto this element.
+        </description>
+      <display-name>Mouse Over Script</display-name>
       <icon/>
-      <property-name>rendererType</property-name>
+      <property-name>onmouseover</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <tag-attribute>false</tag-attribute>
+        <ignored-by-renderer>true</ignored-by-renderer>
+        <behavior/>
       </property-extension>
     </property>
     <property>
-      <description><![CDATA[
-          Flag indicating whether or not this component takes responsibility
-          for rendering its own children.  This decision is normally delegated
-          to the associated Renderer, if there is one.
-        ]]></description>
-      <display-name>Renders Children</display-name>
+      <description>
+          Javascript code executed when a pointer button is
+          moved within this element.
+        </description>
+      <display-name>Mouse Move Script</display-name>
       <icon/>
-      <property-name>rendersChildren</property-name>
-      <property-class>boolean</property-class>
+      <property-name>onmousemove</property-name>
+      <property-class>java.lang.String</property-class>
       <property-extension>
-        <tag-attribute>false</tag-attribute>
-        <read-only>true</read-only>
+        <ignored-by-renderer>true</ignored-by-renderer>
+        <behavior/>
       </property-extension>
     </property>
     <property>
       <description>
-          Converter instance registered with this component.
+          Javascript code executed when a pointer button is
+          moved away from this element.
         </description>
-      <display-name>Converter</display-name>
+      <display-name>Mouse Out Script</display-name>
       <icon/>
-      <property-name>converter</property-name>
-      <property-class>javax.faces.convert.Converter</property-class>
+      <property-name>onmouseout</property-name>
+      <property-class>java.lang.String</property-class>
       <property-extension>
-        <value-expression-enabled>true</value-expression-enabled>
+        <ignored-by-renderer>true</ignored-by-renderer>
+        <behavior/>
       </property-extension>
     </property>
     <property>
       <description>
-          For output components, this is the same as the "value" property.
-          For input components, this is the most recently user-entered
-          value, which will be pushed to the application data model during
-          Update Model Values phase, if a value binding is present for the
-          "value" property.
+          Javascript code executed when a key is
+          pressed and released over this element.
         </description>
-      <display-name>Local Value</display-name>
+      <display-name>Key Press Script</display-name>
       <icon/>
-      <property-name>localValue</property-name>
-      <property-class>java.lang.Object</property-class>
+      <property-name>onkeypress</property-name>
+      <property-class>java.lang.String</property-class>
       <property-extension>
-        <tag-attribute>false</tag-attribute>
+        <ignored-by-renderer>true</ignored-by-renderer>
+        <behavior/>
       </property-extension>
     </property>
     <property>
       <description>
-          The current value of this component.
+          Javascript code executed when a key is
+          pressed down over this element.
         </description>
-      <display-name>Value</display-name>
+      <display-name>Key Down Script</display-name>
       <icon/>
-      <property-name>value</property-name>
-      <property-class>java.lang.Object</property-class>
+      <property-name>onkeydown</property-name>
+      <property-class>java.lang.String</property-class>
       <property-extension>
-        <value-expression-enabled>true</value-expression-enabled>
+        <ignored-by-renderer>true</ignored-by-renderer>
+        <behavior/>
       </property-extension>
     </property>
     <property>
       <description>
-          Flag indicating whether the "localValue" property
-          of this component has been set.  This property is
-          reset automatically when the "value" propertyis set.
+          Javascript code executed when a key is
+          released over this element.
         </description>
-      <display-name>Local Value Set</display-name>
+      <display-name>Key Up Script</display-name>
       <icon/>
-      <property-name>localValueSet</property-name>
-      <property-class>boolean</property-class>
+      <property-name>onkeyup</property-name>
+      <property-class>java.lang.String</property-class>
       <property-extension>
-        <tag-attribute>false</tag-attribute>
+        <ignored-by-renderer>true</ignored-by-renderer>
+        <behavior/>
       </property-extension>
     </property>
+
+
     <property>
       <description>
-          Flag indicating that the user is required to provide a submitted
-          value for this input component.
+          Access key that, when pressed, transfers focus
+          to this element.
         </description>
-      <display-name>Required Flag</display-name>
+      <display-name>Access Key</display-name>
       <icon/>
-      <property-name>required</property-name>
-      <property-class>boolean</property-class>
+      <property-name>accesskey</property-name>
+      <property-class>java.lang.String</property-class>
       <property-extension>
-        <value-expression-enabled>true</value-expression-enabled>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
       <description>
-          A ValueExpression enabled attribute that, if present, will be
-          used as the text of the validation message for the "required"
-          facility, if the "required" facility is used.
+          Javascript code executed when this element loses focus.
         </description>
-      <display-name>Required Message</display-name>
+      <display-name>Focus Off Script</display-name>
       <icon/>
-      <property-name>requiredMessage</property-name>
+      <property-name>onblur</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <value-expression-enabled>true</value-expression-enabled>
+        <ignored-by-renderer>true</ignored-by-renderer>
+        <behavior/>
       </property-extension>
     </property>
     <property>
       <description>
-          A ValueExpression enabled attribute that, if present, will be
-          used as the text of the converter message, replacing any message
-          that comes from the converter.
+          Javascript code executed when this element receives focus.
         </description>
-      <display-name>Converter Message</display-name>
+      <display-name>Focus On Script</display-name>
       <icon/>
-      <property-name>converterMessage</property-name>
+      <property-name>onfocus</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <value-expression-enabled>true</value-expression-enabled>
+        <ignored-by-renderer>true</ignored-by-renderer>
+        <behavior/>
       </property-extension>
     </property>
     <property>
       <description>
-          A ValueExpression enabled attribute that, if present, will be
-          used as the text of the validator message, replacing any
-          message that comes from the validator.
+          Position of this element in the tabbing order
+          for the current document.  This value must be
+          an integer between 0 and 32767.
         </description>
-      <display-name>Validator Message</display-name>
+      <display-name>Tab Index</display-name>
       <icon/>
-      <property-name>validatorMessage</property-name>
+      <property-name>tabindex</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <value-expression-enabled>true</value-expression-enabled>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
+
+
     <property>
       <description>
-          The value submitted for this input component by the user, prior to
-          any required conversion or validation.
+          Direction indication for text that does not inherit directionality.
+          Valid values are "LTR" (left-to-right) and "RTL" (right-to-left).
+          These attributes are case sensitive when rendering to XHTML, so
+          care must be taken to have the correct case.
         </description>
-      <display-name>Submitted Value</display-name>
+      <display-name>Direction</display-name>
       <icon/>
-      <property-name>submittedValue</property-name>
-      <property-class>java.lang.Object</property-class>
+      <property-name>dir</property-name>
+      <property-class>java.lang.String</property-class>
       <property-extension>
-        <tag-attribute>false</tag-attribute>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
       <description>
-          MethodExpression representing a validator method that will be called
-          during Process Validations to perform correctness checks on the
-          value of this component.  The expression must evaluate to a public
-          method that takes FacesContext, UIComponent, and Object parameters,
-          with a return type of void.
+          Code describing the language used in the generated markup
+          for this component.
         </description>
-      <display-name>Validator</display-name>
+      <display-name>Language Code</display-name>
       <icon/>
-      <property-name>validator</property-name>
-      <property-class>javax.el.MethodExpression</property-class>
+      <property-name>lang</property-name>
+      <property-class>java.lang.String</property-class>
       <property-extension>
-        <method-signature>
-                void validate(javax.faces.context.FacesContext, javax.faces.component.UIComponent, java.lang.Object)
-            </method-signature>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
-    <property>
-      <description><![CDATA[<p>
 
-          MethodExpression representing a value change listener method
-          that will be notified when a new value has been set for this
-          input component.  The expression must evaluate to a public
-          method that takes a <code>ValueChangeEvent</code> parameter,
-          with a return type of void, <span class="changed_added_2_0">or
-          to a public method that takes no arguments with a return type
-          of void.  In the latter case, the method has no way of easily
-          knowing what the new value is, but this can be useful in cases
-          where a notification is needed that "this value
-          changed".</span>
 
-</p>]]></description>
-      <display-name>Value Change Listener</display-name>
-      <icon/>
-      <property-name>valueChangeListener</property-name>
-      <property-class>javax.el.MethodExpression</property-class>
-      <property-extension>
-        <method-signature>
-                void valueChange(javax.faces.event.ValueChangeEvent)
-            </method-signature>
-        <!-- PENDING modify tlddoc to handle an OR of method signatures 
-as required by 
-https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447 
-            <method-signature>
-                void valueChange()
-            </method-signature>
--->
-      </property-extension>
-    </property>
     <property>
       <description>
-          Flag indicating that this component's value must be
-          converted and validated immediately (that is, during
-          Apply Request Values phase), rather than waiting
-          until Process Validations phase.
+          Flag indicating that this element must never receive focus or
+          be included in a subsequent submit.  A value of false causes
+          no attribute to be rendered, while a value of true causes the
+          attribute to be rendered as disabled="disabled".            
         </description>
-      <display-name>Immediate Action</display-name>
+      <display-name>Disabled Flag</display-name>
       <icon/>
-      <property-name>immediate</property-name>
+      <property-name>disabled</property-name>
       <property-class>boolean</property-class>
       <property-extension>
-        <value-expression-enabled>true</value-expression-enabled>
+        <ignored-by-renderer>false</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
       <description>
-          Flag indicating whether or not any required conversion or validation
-          on this component value has been performed successfully.
+          Javascript code executed when this element loses focus
+          and its value has been modified since gaining focus.
         </description>
-      <display-name>Valid Flag</display-name>
+      <display-name>Input Change Script</display-name>
       <icon/>
-      <property-name>valid</property-name>
-      <property-class>valid</property-class>
+      <property-name>onchange</property-name>
+      <property-class>java.lang.String</property-class>
       <property-extension>
-        <tag-attribute>false</tag-attribute>
+        <ignored-by-renderer>false</ignored-by-renderer>
+        <behavior/>
+        <behavior>valueChange</behavior>
+        <default-behavior>true</default-behavior>
       </property-extension>
     </property>
-
-
     <property>
       <description>
-          CSS style(s) to be applied when this component is rendered.
+          Javascript code executed when text within this
+          element is selected by the user.
         </description>
-      <display-name>CSS Styles</display-name>
+      <display-name>Text Select Script</display-name>
       <icon/>
-      <property-name>style</property-name>
+      <property-name>onselect</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
+        <behavior/>
       </property-extension>
     </property>
     <property>
       <description>
-          Space-separated list of CSS style class(es) to be applied when
-          this element is rendered.  This value must be passed through
-          as the "class" attribute on generated markup.
+          Flag indicating that this component will prohibit changes by
+          the user.  The element may receive focus unless it has also
+          been disabled.  A value of false causes
+          no attribute to be rendered, while a value of true causes the
+          attribute to be rendered as readonly="readonly".
         </description>
-      <display-name>CSS Style Classes</display-name>
+      <display-name>Read Only Flag</display-name>
       <icon/>
-      <property-name>styleClass</property-name>
-      <property-class>java.lang.String</property-class>
+      <property-name>readonly</property-name>
+      <property-class>boolean</property-class>
       <property-extension>
-        <pass-through>false</pass-through>
+        <ignored-by-renderer>false</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
       <description>
-          Advisory title information about markup elements generated
-          for this component.
+          A localized user presentable name for this component.
         </description>
-      <display-name>Advisory Title</display-name>
+      <display-name>Label</display-name>
       <icon/>
-      <property-name>title</property-name>
+      <property-name>label</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <renderer-attribute-ignore>true</renderer-attribute-ignore>
       </property-extension>
     </property>
 
 
     <property>
       <description>
-          Javascript code executed when a pointer button is
-          clicked over this element.
+          Alternate textual description of the
+          element rendered by this component.
         </description>
-      <display-name>Button Click Script</display-name>
+      <display-name>Alternate Text</display-name>
       <icon/>
-      <property-name>onclick</property-name>
+      <property-name>alt</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
-        <behavior/>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
       <description>
-          Javascript code executed when a pointer button is
-          double clicked over this element.
+        If the value of this attribute is "off", render "off" as the value
+        of the attribute. This indicates that the  browser should
+        disable its autocomplete feature for this component.  This is
+        useful for components that perform autocompletion and do not
+        want the browser interfering.  If this attribute is not set or the value 
+        is "on", render nothing.
         </description>
-      <display-name>Double Click Script</display-name>
+      <display-name>Enable or disable browser autocompletion.</display-name>
       <icon/>
-      <property-name>ondblclick</property-name>
+      <property-name>autocomplete</property-name>
       <property-class>java.lang.String</property-class>
-      <property-extension>
-        <pass-through>true</pass-through>
-        <behavior/>
-      </property-extension>
     </property>
     <property>
       <description>
-          Javascript code executed when a pointer button is
-          pressed down over this element.
+          The maximum number of characters that may
+          be entered in this field.
         </description>
-      <display-name>Mouse Down Script</display-name>
+      <display-name>Maximum Length</display-name>
       <icon/>
-      <property-name>onmousedown</property-name>
-      <property-class>java.lang.String</property-class>
+      <property-name>maxlength</property-name>
+      <property-class>int</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
-        <behavior/>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
       <description>
-          Javascript code executed when a pointer button is
-          released over this element.
+          The number of characters used to determine
+          the width of this field.
         </description>
-      <display-name>Mouse Up Script</display-name>
+      <display-name>Field Width</display-name>
       <icon/>
-      <property-name>onmouseup</property-name>
-      <property-class>java.lang.String</property-class>
+      <property-name>size</property-name>
+      <property-class>int</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
-        <behavior/>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
+
+    <component-extension>
+      <base-component-type>javax.faces.Input</base-component-type>
+      <renderer-type>javax.faces.File</renderer-type>
+    </component-extension>
+  </component>
+  <component>
+    <description><![CDATA[<p>Represents an HTML <code>input</code> element
+      of type <code>hidden</code>.</p>]]></description>
+    <display-name>Input Hidden</display-name>
+    <component-type>javax.faces.HtmlInputHidden</component-type>
+    <component-class>javax.faces.component.html.HtmlInputHidden</component-class>
+
     <property>
-      <description>
-          Javascript code executed when a pointer button is
-          moved onto this element.
-        </description>
-      <display-name>Mouse Over Script</display-name>
+      <description><![CDATA[
+          A mutable Map of the attributes associated with
+          this component, keyed by attribute name.
+        ]]></description>
+      <display-name>Attributes Map</display-name>
       <icon/>
-      <property-name>onmouseover</property-name>
-      <property-class>java.lang.String</property-class>
+      <property-name>attributes</property-name>
+      <property-class>java.util.Map</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
-        <behavior/>
+        <tag-attribute>false</tag-attribute>
+        <read-only>true</read-only>
       </property-extension>
     </property>
     <property>
-      <description>
-          Javascript code executed when a pointer button is
-          moved within this element.
-        </description>
-      <display-name>Mouse Move Script</display-name>
+      <description><![CDATA[
+          The number of child components associated with
+          this component.
+        ]]></description>
+      <display-name>Child Component Count</display-name>
       <icon/>
-      <property-name>onmousemove</property-name>
-      <property-class>java.lang.String</property-class>
+      <property-name>childCount</property-name>
+      <property-class>int</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
-        <behavior/>
+        <tag-attribute>false</tag-attribute>
+        <read-only>true</read-only>
       </property-extension>
     </property>
     <property>
-      <description>
-          Javascript code executed when a pointer button is
-          moved away from this element.
-        </description>
-      <display-name>Mouse Out Script</display-name>
+      <description><![CDATA[
+          A mutable List of the child components associated with
+          this component.
+        ]]></description>
+      <display-name>Child Component List</display-name>
       <icon/>
-      <property-name>onmouseout</property-name>
-      <property-class>java.lang.String</property-class>
+      <property-name>children</property-name>
+      <property-class>java.util.List</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
-        <behavior/>
+        <tag-attribute>false</tag-attribute>
+        <read-only>true</read-only>
       </property-extension>
     </property>
     <property>
-      <description>
-          Javascript code executed when a key is
-          pressed and released over this element.
-        </description>
-      <display-name>Key Press Script</display-name>
+      <description><![CDATA[
+          A mutable Map of the facets associated with
+          this component, keyed by facet name.
+        ]]></description>
+      <display-name>Facets Map</display-name>
       <icon/>
-      <property-name>onkeypress</property-name>
-      <property-class>java.lang.String</property-class>
+      <property-name>facets</property-name>
+      <property-class>java.util.Map</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
-        <behavior/>
+        <tag-attribute>false</tag-attribute>
+        <read-only>true</read-only>
       </property-extension>
     </property>
     <property>
-      <description>
-          Javascript code executed when a key is
-          pressed down over this element.
-        </description>
-      <display-name>Key Down Script</display-name>
+      <description><![CDATA[
+          The component family to which this component belongs.  This property
+          is used to select an appropriate Renderer.
+        ]]></description>
+      <display-name>Component Family</display-name>
       <icon/>
-      <property-name>onkeydown</property-name>
+      <property-name>family</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
-        <behavior/>
+        <tag-attribute>false</tag-attribute>
+        <read-only>true</read-only>
       </property-extension>
     </property>
     <property>
-      <description>
-          Javascript code executed when a key is
-          released over this element.
-        </description>
-      <display-name>Key Up Script</display-name>
+      <description><![CDATA[
+          The component identifier for this component.  This value must be
+          unique within the closest parent component that is a naming
+          container.
+        ]]></description>
+      <display-name>Component Identifier</display-name>
       <icon/>
-      <property-name>onkeyup</property-name>
+      <property-name>id</property-name>
       <property-class>java.lang.String</property-class>
+    </property>
+    <property>
+      <description><![CDATA[
+          The parent component for this component.  On the root component
+          in the component tree (which must be of type UIViewRoot), this
+          property is null.
+        ]]></description>
+      <display-name>Parent Component</display-name>
+      <icon/>
+      <property-name>parent</property-name>
+      <property-class>javax.faces.component.UIComponent</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
-        <behavior/>
+        <tag-attribute>false</tag-attribute>
+        <read-only>true</read-only>
       </property-extension>
     </property>
-
-
     <property>
-      <description>
-          Access key that, when pressed, transfers focus
-          to this element.
-        </description>
-      <display-name>Access Key</display-name>
+      <description><![CDATA[
+          Flag indicating whether or not this component should be rendered
+          (during Render Response Phase), or processed on any subsequent
+          form submit.  The default value for this property is true.
+        ]]></description>
+      <display-name>Rendered Flag</display-name>
       <icon/>
-      <property-name>accesskey</property-name>
-      <property-class>java.lang.String</property-class>
+      <property-name>rendered</property-name>
+      <property-class>boolean</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <value-expression-enabled>true</value-expression-enabled>
       </property-extension>
     </property>
     <property>
-      <description>
-          Javascript code executed when this element loses focus.
-        </description>
-      <display-name>Focus Off Script</display-name>
+      <description><![CDATA[
+          Identifier used (in conjunction with the "family" property) to
+          select an appropriate Renderer to encode and decode this component.
+        ]]></description>
+      <display-name>Renderer Type</display-name>
       <icon/>
-      <property-name>onblur</property-name>
+      <property-name>rendererType</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
-        <behavior/>
+        <tag-attribute>false</tag-attribute>
       </property-extension>
     </property>
     <property>
-      <description>
-          Javascript code executed when this element receives focus.
-        </description>
-      <display-name>Focus On Script</display-name>
+      <description><![CDATA[
+          Flag indicating whether or not this component takes responsibility
+          for rendering its own children.  This decision is normally delegated
+          to the associated Renderer, if there is one.
+        ]]></description>
+      <display-name>Renders Children</display-name>
       <icon/>
-      <property-name>onfocus</property-name>
-      <property-class>java.lang.String</property-class>
+      <property-name>rendersChildren</property-name>
+      <property-class>boolean</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
-        <behavior/>
+        <tag-attribute>false</tag-attribute>
+        <read-only>true</read-only>
       </property-extension>
     </property>
     <property>
       <description>
-          Position of this element in the tabbing order
-          for the current document.  This value must be
-          an integer between 0 and 32767.
+          Converter instance registered with this component.
         </description>
-      <display-name>Tab Index</display-name>
+      <display-name>Converter</display-name>
       <icon/>
-      <property-name>tabindex</property-name>
-      <property-class>java.lang.String</property-class>
+      <property-name>converter</property-name>
+      <property-class>javax.faces.convert.Converter</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <value-expression-enabled>true</value-expression-enabled>
       </property-extension>
     </property>
-
-
     <property>
       <description>
-          Direction indication for text that does not inherit directionality.
-          Valid values are "LTR" (left-to-right) and "RTL" (right-to-left).
+          For output components, this is the same as the "value" property.
+          For input components, this is the most recently user-entered
+          value, which will be pushed to the application data model during
+          Update Model Values phase, if a value binding is present for the
+          "value" property.
         </description>
-      <display-name>Direction</display-name>
+      <display-name>Local Value</display-name>
       <icon/>
-      <property-name>dir</property-name>
-      <property-class>java.lang.String</property-class>
+      <property-name>localValue</property-name>
+      <property-class>java.lang.Object</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <tag-attribute>false</tag-attribute>
       </property-extension>
     </property>
     <property>
       <description>
-          Code describing the language used in the generated markup
-          for this component.
+          The current value of this component.
         </description>
-      <display-name>Language Code</display-name>
+      <display-name>Value</display-name>
       <icon/>
-      <property-name>lang</property-name>
-      <property-class>java.lang.String</property-class>
+      <property-name>value</property-name>
+      <property-class>java.lang.Object</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <value-expression-enabled>true</value-expression-enabled>
       </property-extension>
     </property>
-
-
     <property>
       <description>
-          Flag indicating that this element must never receive focus or
-          be included in a subsequent submit.  A value of false causes
-          no attribute to be rendered, while a value of true causes the
-          attribute to be rendered as disabled="disabled".            
+          Flag indicating whether the "localValue" property
+          of this component has been set.  This property is
+          reset automatically when the "value" propertyis set.
         </description>
-      <display-name>Disabled Flag</display-name>
+      <display-name>Local Value Set</display-name>
       <icon/>
-      <property-name>disabled</property-name>
+      <property-name>localValueSet</property-name>
       <property-class>boolean</property-class>
       <property-extension>
-        <pass-through>false</pass-through>
+        <tag-attribute>false</tag-attribute>
       </property-extension>
     </property>
     <property>
       <description>
-          Javascript code executed when this element loses focus
-          and its value has been modified since gaining focus.
+          Flag indicating that the user is required to provide a submitted
+          value for this input component.
         </description>
-      <display-name>Input Change Script</display-name>
+      <display-name>Required Flag</display-name>
       <icon/>
-      <property-name>onchange</property-name>
-      <property-class>java.lang.String</property-class>
+      <property-name>required</property-name>
+      <property-class>boolean</property-class>
       <property-extension>
-        <pass-through>false</pass-through>
-        <behavior/>
-        <behavior>valueChange</behavior>
-        <default-behavior>true</default-behavior>
+        <value-expression-enabled>true</value-expression-enabled>
       </property-extension>
     </property>
     <property>
       <description>
-          Javascript code executed when text within this
-          element is selected by the user.
+          A ValueExpression enabled attribute that, if present, will be
+          used as the text of the validation message for the "required"
+          facility, if the "required" facility is used.
         </description>
-      <display-name>Text Select Script</display-name>
+      <display-name>Required Message</display-name>
       <icon/>
-      <property-name>onselect</property-name>
+      <property-name>requiredMessage</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
-        <behavior/>
+        <value-expression-enabled>true</value-expression-enabled>
       </property-extension>
     </property>
     <property>
       <description>
-          Flag indicating that this component will prohibit changes by
-          the user.  The element may receive focus unless it has also
-          been disabled.  A value of false causes
-          no attribute to be rendered, while a value of true causes the
-          attribute to be rendered as readonly="readonly".
+          A ValueExpression enabled attribute that, if present, will be
+          used as the text of the converter message, replacing any message
+          that comes from the converter.
         </description>
-      <display-name>Read Only Flag</display-name>
+      <display-name>Converter Message</display-name>
       <icon/>
-      <property-name>readonly</property-name>
-      <property-class>boolean</property-class>
+      <property-name>converterMessage</property-name>
+      <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>false</pass-through>
+        <value-expression-enabled>true</value-expression-enabled>
       </property-extension>
     </property>
     <property>
       <description>
-          A localized user presentable name for this component.
+          A ValueExpression enabled attribute that, if present, will be
+          used as the text of the validator message, replacing any
+          message that comes from the validator.
         </description>
-      <display-name>Label</display-name>
+      <display-name>Validator Message</display-name>
       <icon/>
-      <property-name>label</property-name>
+      <property-name>validatorMessage</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <renderer-attribute-ignore>true</renderer-attribute-ignore>
+        <value-expression-enabled>true</value-expression-enabled>
       </property-extension>
     </property>
-
-
     <property>
       <description>
-          Alternate textual description of the
-          element rendered by this component.
+          The value submitted for this input component by the user, prior to
+          any required conversion or validation.
         </description>
-      <display-name>Alternate Text</display-name>
+      <display-name>Submitted Value</display-name>
       <icon/>
-      <property-name>alt</property-name>
-      <property-class>java.lang.String</property-class>
+      <property-name>submittedValue</property-name>
+      <property-class>java.lang.Object</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <tag-attribute>false</tag-attribute>
       </property-extension>
     </property>
     <property>
       <description>
-        If the value of this attribute is "off", render "off" as the value
-        of the attribute. This indicates that the  browser should
-        disable its autocomplete feature for this component.  This is
-        useful for components that perform autocompletion and do not
-        want the browser interfering.  If this attribute is not set or the value 
-        is "on", render nothing.
+          MethodExpression representing a validator method that will be called
+          during Process Validations to perform correctness checks on the
+          value of this component.  The expression must evaluate to a public
+          method that takes FacesContext, UIComponent, and Object parameters,
+          with a return type of void.
         </description>
-      <display-name>Enable or disable browser autocompletion.</display-name>
+      <display-name>Validator</display-name>
       <icon/>
-      <property-name>autocomplete</property-name>
-      <property-class>java.lang.String</property-class>
+      <property-name>validator</property-name>
+      <property-class>javax.el.MethodExpression</property-class>
+      <property-extension>
+        <method-signature>
+                void validate(javax.faces.context.FacesContext, javax.faces.component.UIComponent, java.lang.Object)
+            </method-signature>
+      </property-extension>
     </property>
     <property>
-      <description>
-          The maximum number of characters that may
-          be entered in this field.
-        </description>
-      <display-name>Maximum Length</display-name>
+      <description><![CDATA[<p>
+
+          MethodExpression representing a value change listener method
+          that will be notified when a new value has been set for this
+          input component.  The expression must evaluate to a public
+          method that takes a <code>ValueChangeEvent</code> parameter,
+          with a return type of void, <span class="changed_added_2_0">or
+          to a public method that takes no arguments with a return type
+          of void.  In the latter case, the method has no way of easily
+          knowing what the new value is, but this can be useful in cases
+          where a notification is needed that "this value
+          changed".</span>
+
+</p>]]></description>
+      <display-name>Value Change Listener</display-name>
       <icon/>
-      <property-name>maxlength</property-name>
-      <property-class>int</property-class>
+      <property-name>valueChangeListener</property-name>
+      <property-class>javax.el.MethodExpression</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <method-signature>
+                void valueChange(javax.faces.event.ValueChangeEvent)
+            </method-signature>
+        <!-- PENDING modify tlddoc to handle an OR of method signatures 
+as required by 
+https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447 
+            <method-signature>
+                void valueChange()
+            </method-signature>
+-->
       </property-extension>
     </property>
     <property>
       <description>
-          The number of characters used to determine
-          the width of this field.
+          Flag indicating that this component's value must be
+          converted and validated immediately (that is, during
+          Apply Request Values phase), rather than waiting
+          until Process Validations phase.
         </description>
-      <display-name>Field Width</display-name>
+      <display-name>Immediate Action</display-name>
       <icon/>
-      <property-name>size</property-name>
-      <property-class>int</property-class>
+      <property-name>immediate</property-name>
+      <property-class>boolean</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <value-expression-enabled>true</value-expression-enabled>
       </property-extension>
     </property>
-
-
     <property>
       <description>
-        Flag indicating that any existing value
-        in this field should be rendered when the
-        form is created.  Because this is a potential
-        security risk, password values are not
-        displayed by default.
+          Flag indicating whether or not any required conversion or validation
+          on this component value has been performed successfully.
         </description>
-      <display-name>Redisplay Flag</display-name>
+      <display-name>Valid Flag</display-name>
       <icon/>
-      <property-name>redisplay</property-name>
-      <property-class>boolean</property-class>
+      <property-name>valid</property-name>
+      <property-class>valid</property-class>
+      <property-extension>
+        <tag-attribute>false</tag-attribute>
+      </property-extension>
     </property>
 
     <component-extension>
       <base-component-type>javax.faces.Input</base-component-type>
-      <renderer-type>javax.faces.Secret</renderer-type>
+      <renderer-type>javax.faces.Hidden</renderer-type>
     </component-extension>
   </component>
   <component>
     <description><![CDATA[<p>Represents an HTML <code>input</code> element
-      of type <code>text</code>.</p>]]></description>
-    <display-name>Input Text</display-name>
-    <component-type>javax.faces.HtmlInputText</component-type>
-    <component-class>javax.faces.component.html.HtmlInputText</component-class>
+      of type <code>password</code>.  On a redisplay,
+      any previously entered value will <em>not</em>
+      be rendered (for security reasons) unless the
+      <code>redisplay</code> property is set to
+      <code>true</code>.</p>]]></description>
+    <display-name>Input Secret</display-name>
+    <component-type>javax.faces.HtmlInputSecret</component-type>
+    <component-class>javax.faces.component.html.HtmlInputSecret</component-class>
 
     <property>
       <description><![CDATA[
@@ -9288,7 +9747,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>style</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -9302,7 +9761,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>styleClass</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>false</pass-through>
+        <ignored-by-renderer>false</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -9315,7 +9774,31 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>title</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
+      </property-extension>
+    </property>
+    <property>
+      <description><![CDATA[
+          <p class="changed_added_2_2">Per the WAI-ARIA spec and its
+          relationship to HTML5 (Section title ARIA Role Attriubute),
+          every HTML element may have a "role" attribute whose value
+          must be passed through unmodified on the element on which it
+          is declared in the final rendered markup.  The attribute, if
+          specified, must have a value that is a string literal that is,
+          or an EL Expression that evaluates to, a set of
+          space-separated tokens representing the various WAI-ARIA roles
+          that the element belongs to.
+          </p>
+
+          <p class="changed_added_2_2">It is the page author's
+          responsibility to ensure that the user agent is capable of
+          correctly interpreting the value of this attribute.</p>]]></description>
+      <display-name>ARIA role</display-name>
+      <icon/>
+      <property-name>role</property-name>
+      <property-class>java.lang.String</property-class>
+      <property-extension>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
 
@@ -9330,7 +9813,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onclick</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -9344,7 +9827,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>ondblclick</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -9358,7 +9841,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onmousedown</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -9372,7 +9855,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onmouseup</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -9386,7 +9869,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onmouseover</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -9400,7 +9883,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onmousemove</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -9414,7 +9897,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onmouseout</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -9428,7 +9911,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onkeypress</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -9442,7 +9925,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onkeydown</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -9456,7 +9939,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onkeyup</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -9472,7 +9955,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>accesskey</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -9484,7 +9967,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onblur</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -9497,7 +9980,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onfocus</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -9512,7 +9995,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>tabindex</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
 
@@ -9521,13 +10004,15 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <description>
           Direction indication for text that does not inherit directionality.
           Valid values are "LTR" (left-to-right) and "RTL" (right-to-left).
+          These attributes are case sensitive when rendering to XHTML, so
+          care must be taken to have the correct case.
         </description>
       <display-name>Direction</display-name>
       <icon/>
       <property-name>dir</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -9540,7 +10025,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>lang</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
 
@@ -9557,7 +10042,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>disabled</property-name>
       <property-class>boolean</property-class>
       <property-extension>
-        <pass-through>false</pass-through>
+        <ignored-by-renderer>false</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -9570,7 +10055,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onchange</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>false</pass-through>
+        <ignored-by-renderer>false</ignored-by-renderer>
         <behavior/>
         <behavior>valueChange</behavior>
         <default-behavior>true</default-behavior>
@@ -9586,7 +10071,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onselect</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -9603,7 +10088,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>readonly</property-name>
       <property-class>boolean</property-class>
       <property-extension>
-        <pass-through>false</pass-through>
+        <ignored-by-renderer>false</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -9630,7 +10115,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>alt</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -9657,7 +10142,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>maxlength</property-name>
       <property-class>int</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -9670,20 +10155,36 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>size</property-name>
       <property-class>int</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
 
+
+    <property>
+      <description>
+        Flag indicating that any existing value
+        in this field should be rendered when the
+        form is created.  Because this is a potential
+        security risk, password values are not
+        displayed by default.
+        </description>
+      <display-name>Redisplay Flag</display-name>
+      <icon/>
+      <property-name>redisplay</property-name>
+      <property-class>boolean</property-class>
+    </property>
+
     <component-extension>
       <base-component-type>javax.faces.Input</base-component-type>
-      <renderer-type>javax.faces.Text</renderer-type>
+      <renderer-type>javax.faces.Secret</renderer-type>
     </component-extension>
   </component>
   <component>
-    <description><![CDATA[<p>Represents an HTML <code>textarea</code> element.</p>]]></description>
-    <display-name>Input Textarea</display-name>
-    <component-type>javax.faces.HtmlInputTextarea</component-type>
-    <component-class>javax.faces.component.html.HtmlInputTextarea</component-class>
+    <description><![CDATA[<p>Represents an HTML <code>input</code> element
+      of type <code>text</code>.</p>]]></description>
+    <display-name>Input Text</display-name>
+    <component-type>javax.faces.HtmlInputText</component-type>
+    <component-class>javax.faces.component.html.HtmlInputText</component-class>
 
     <property>
       <description><![CDATA[
@@ -10034,7 +10535,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>style</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -10048,7 +10549,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>styleClass</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>false</pass-through>
+        <ignored-by-renderer>false</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -10061,7 +10562,31 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>title</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
+      </property-extension>
+    </property>
+    <property>
+      <description><![CDATA[
+          <p class="changed_added_2_2">Per the WAI-ARIA spec and its
+          relationship to HTML5 (Section title ARIA Role Attriubute),
+          every HTML element may have a "role" attribute whose value
+          must be passed through unmodified on the element on which it
+          is declared in the final rendered markup.  The attribute, if
+          specified, must have a value that is a string literal that is,
+          or an EL Expression that evaluates to, a set of
+          space-separated tokens representing the various WAI-ARIA roles
+          that the element belongs to.
+          </p>
+
+          <p class="changed_added_2_2">It is the page author's
+          responsibility to ensure that the user agent is capable of
+          correctly interpreting the value of this attribute.</p>]]></description>
+      <display-name>ARIA role</display-name>
+      <icon/>
+      <property-name>role</property-name>
+      <property-class>java.lang.String</property-class>
+      <property-extension>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
 
@@ -10076,7 +10601,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onclick</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -10090,7 +10615,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>ondblclick</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -10104,7 +10629,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onmousedown</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -10118,7 +10643,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onmouseup</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -10132,7 +10657,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onmouseover</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -10146,7 +10671,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onmousemove</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -10160,7 +10685,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onmouseout</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -10174,7 +10699,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onkeypress</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -10188,7 +10713,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onkeydown</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -10202,7 +10727,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onkeyup</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -10218,7 +10743,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>accesskey</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -10230,7 +10755,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onblur</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -10243,7 +10768,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onfocus</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -10258,7 +10783,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>tabindex</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
 
@@ -10267,13 +10792,15 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <description>
           Direction indication for text that does not inherit directionality.
           Valid values are "LTR" (left-to-right) and "RTL" (right-to-left).
+          These attributes are case sensitive when rendering to XHTML, so
+          care must be taken to have the correct case.
         </description>
       <display-name>Direction</display-name>
       <icon/>
       <property-name>dir</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -10286,7 +10813,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>lang</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
 
@@ -10303,7 +10830,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>disabled</property-name>
       <property-class>boolean</property-class>
       <property-extension>
-        <pass-through>false</pass-through>
+        <ignored-by-renderer>false</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -10316,7 +10843,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onchange</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>false</pass-through>
+        <ignored-by-renderer>false</ignored-by-renderer>
         <behavior/>
         <behavior>valueChange</behavior>
         <default-behavior>true</default-behavior>
@@ -10332,7 +10859,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onselect</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -10349,7 +10876,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>readonly</property-name>
       <property-class>boolean</property-class>
       <property-extension>
-        <pass-through>false</pass-through>
+        <ignored-by-renderer>false</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -10368,39 +10895,68 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
 
     <property>
       <description>
-        The number of columns to be displayed.
+          Alternate textual description of the
+          element rendered by this component.
         </description>
-      <display-name>Columns</display-name>
+      <display-name>Alternate Text</display-name>
       <icon/>
-      <property-name>cols</property-name>
+      <property-name>alt</property-name>
+      <property-class>java.lang.String</property-class>
+      <property-extension>
+        <ignored-by-renderer>true</ignored-by-renderer>
+      </property-extension>
+    </property>
+    <property>
+      <description>
+        If the value of this attribute is "off", render "off" as the value
+        of the attribute. This indicates that the  browser should
+        disable its autocomplete feature for this component.  This is
+        useful for components that perform autocompletion and do not
+        want the browser interfering.  If this attribute is not set or the value 
+        is "on", render nothing.
+        </description>
+      <display-name>Enable or disable browser autocompletion.</display-name>
+      <icon/>
+      <property-name>autocomplete</property-name>
+      <property-class>java.lang.String</property-class>
+    </property>
+    <property>
+      <description>
+          The maximum number of characters that may
+          be entered in this field.
+        </description>
+      <display-name>Maximum Length</display-name>
+      <icon/>
+      <property-name>maxlength</property-name>
       <property-class>int</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
       <description>
-        The number of rows to be displayed.
+          The number of characters used to determine
+          the width of this field.
         </description>
-      <display-name>Rows</display-name>
+      <display-name>Field Width</display-name>
       <icon/>
-      <property-name>rows</property-name>
+      <property-name>size</property-name>
       <property-class>int</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
-        <value-expression-enabled>true</value-expression-enabled>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
 
     <component-extension>
       <base-component-type>javax.faces.Input</base-component-type>
-      <renderer-type>javax.faces.Textarea</renderer-type>
+      <renderer-type>javax.faces.Text</renderer-type>
     </component-extension>
   </component>
   <component>
-    <display-name>Message</display-name>
-    <component-type>javax.faces.HtmlMessage</component-type>
-    <component-class>javax.faces.component.html.HtmlMessage</component-class>
+    <description><![CDATA[<p>Represents an HTML <code>textarea</code> element.</p>]]></description>
+    <display-name>Input Textarea</display-name>
+    <component-type>javax.faces.HtmlInputTextarea</component-type>
+    <component-class>javax.faces.component.html.HtmlInputTextarea</component-class>
 
     <property>
       <description><![CDATA[
@@ -10542,606 +11098,608 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
     </property>
     <property>
       <description>
-          Client identifier of the component for which to display messages.
+          Converter instance registered with this component.
         </description>
-      <display-name>Associated Client Id</display-name>
+      <display-name>Converter</display-name>
       <icon/>
-      <property-name>for</property-name>
-      <property-class>java.lang.String</property-class>
+      <property-name>converter</property-name>
+      <property-class>javax.faces.convert.Converter</property-class>
       <property-extension>
-        <required>true</required>
         <value-expression-enabled>true</value-expression-enabled>
       </property-extension>
     </property>
     <property>
       <description>
-          Flag indicating whether the detail portion of displayed messages
-          should be included.  Default value is "true".
+          For output components, this is the same as the "value" property.
+          For input components, this is the most recently user-entered
+          value, which will be pushed to the application data model during
+          Update Model Values phase, if a value binding is present for the
+          "value" property.
         </description>
-      <display-name>Show Detail</display-name>
+      <display-name>Local Value</display-name>
       <icon/>
-      <property-name>showDetail</property-name>
-      <property-class>boolean</property-class>
+      <property-name>localValue</property-name>
+      <property-class>java.lang.Object</property-class>
       <property-extension>
-        <default-value>true</default-value>
-        <value-expression-enabled>true</value-expression-enabled>
+        <tag-attribute>false</tag-attribute>
       </property-extension>
     </property>
     <property>
       <description>
-          Flag indicating whether the summary portion of displayed messages
-          should be included.  Default value is "false".
+          The current value of this component.
         </description>
-      <display-name>Show Summary</display-name>
+      <display-name>Value</display-name>
       <icon/>
-      <property-name>showSummary</property-name>
-      <property-class>boolean</property-class>
+      <property-name>value</property-name>
+      <property-class>java.lang.Object</property-class>
       <property-extension>
-        <default-value>false</default-value>
         <value-expression-enabled>true</value-expression-enabled>
       </property-extension>
     </property>
-
-
     <property>
       <description>
-          CSS style(s) to be applied when this component is rendered.
+          Flag indicating whether the "localValue" property
+          of this component has been set.  This property is
+          reset automatically when the "value" propertyis set.
         </description>
-      <display-name>CSS Styles</display-name>
+      <display-name>Local Value Set</display-name>
       <icon/>
-      <property-name>style</property-name>
-      <property-class>java.lang.String</property-class>
+      <property-name>localValueSet</property-name>
+      <property-class>boolean</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <tag-attribute>false</tag-attribute>
       </property-extension>
     </property>
     <property>
       <description>
-          Space-separated list of CSS style class(es) to be applied when
-          this element is rendered.  This value must be passed through
-          as the "class" attribute on generated markup.
+          Flag indicating that the user is required to provide a submitted
+          value for this input component.
         </description>
-      <display-name>CSS Style Classes</display-name>
+      <display-name>Required Flag</display-name>
       <icon/>
-      <property-name>styleClass</property-name>
-      <property-class>java.lang.String</property-class>
+      <property-name>required</property-name>
+      <property-class>boolean</property-class>
       <property-extension>
-        <pass-through>false</pass-through>
+        <value-expression-enabled>true</value-expression-enabled>
       </property-extension>
     </property>
     <property>
       <description>
-          Advisory title information about markup elements generated
-          for this component.
+          A ValueExpression enabled attribute that, if present, will be
+          used as the text of the validation message for the "required"
+          facility, if the "required" facility is used.
         </description>
-      <display-name>Advisory Title</display-name>
+      <display-name>Required Message</display-name>
       <icon/>
-      <property-name>title</property-name>
+      <property-name>requiredMessage</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <value-expression-enabled>true</value-expression-enabled>
       </property-extension>
     </property>
-
-
-    <property>
-      <description>
-          CSS style class to apply to any message
-          with a severity class of "ERROR".
-        </description>
-      <display-name>Error Class</display-name>
-      <icon/>
-      <property-name>errorClass</property-name>
-      <property-class>java.lang.String</property-class>
-    </property>
     <property>
       <description>
-          CSS style(s) to apply to any message
-          with a severity class of "ERROR".
+          A ValueExpression enabled attribute that, if present, will be
+          used as the text of the converter message, replacing any message
+          that comes from the converter.
         </description>
-      <display-name>Error Styles</display-name>
+      <display-name>Converter Message</display-name>
       <icon/>
-      <property-name>errorStyle</property-name>
+      <property-name>converterMessage</property-name>
       <property-class>java.lang.String</property-class>
+      <property-extension>
+        <value-expression-enabled>true</value-expression-enabled>
+      </property-extension>
     </property>
     <property>
       <description>
-          CSS style class to apply to any message
-          with a severity class of "FATAL".
+          A ValueExpression enabled attribute that, if present, will be
+          used as the text of the validator message, replacing any
+          message that comes from the validator.
         </description>
-      <display-name>Fatal Class</display-name>
+      <display-name>Validator Message</display-name>
       <icon/>
-      <property-name>fatalClass</property-name>
+      <property-name>validatorMessage</property-name>
       <property-class>java.lang.String</property-class>
+      <property-extension>
+        <value-expression-enabled>true</value-expression-enabled>
+      </property-extension>
     </property>
     <property>
       <description>
-          CSS style(s) to apply to any message
-          with a severity class of "FATAL".
+          The value submitted for this input component by the user, prior to
+          any required conversion or validation.
         </description>
-      <display-name>Fatal Styles</display-name>
+      <display-name>Submitted Value</display-name>
       <icon/>
-      <property-name>fatalStyle</property-name>
-      <property-class>java.lang.String</property-class>
+      <property-name>submittedValue</property-name>
+      <property-class>java.lang.Object</property-class>
+      <property-extension>
+        <tag-attribute>false</tag-attribute>
+      </property-extension>
     </property>
     <property>
       <description>
-          CSS style class to apply to any message
-          with a severity class of "INFO".
+          MethodExpression representing a validator method that will be called
+          during Process Validations to perform correctness checks on the
+          value of this component.  The expression must evaluate to a public
+          method that takes FacesContext, UIComponent, and Object parameters,
+          with a return type of void.
         </description>
-      <display-name>Info Class</display-name>
+      <display-name>Validator</display-name>
       <icon/>
-      <property-name>infoClass</property-name>
-      <property-class>java.lang.String</property-class>
+      <property-name>validator</property-name>
+      <property-class>javax.el.MethodExpression</property-class>
+      <property-extension>
+        <method-signature>
+                void validate(javax.faces.context.FacesContext, javax.faces.component.UIComponent, java.lang.Object)
+            </method-signature>
+      </property-extension>
     </property>
     <property>
-      <description>
-          CSS style(s) to apply to any message
-          with a severity class of "INFO".
-        </description>
-      <display-name>Info Styles</display-name>
+      <description><![CDATA[<p>
+
+          MethodExpression representing a value change listener method
+          that will be notified when a new value has been set for this
+          input component.  The expression must evaluate to a public
+          method that takes a <code>ValueChangeEvent</code> parameter,
+          with a return type of void, <span class="changed_added_2_0">or
+          to a public method that takes no arguments with a return type
+          of void.  In the latter case, the method has no way of easily
+          knowing what the new value is, but this can be useful in cases
+          where a notification is needed that "this value
+          changed".</span>
+
+</p>]]></description>
+      <display-name>Value Change Listener</display-name>
       <icon/>
-      <property-name>infoStyle</property-name>
-      <property-class>java.lang.String</property-class>
+      <property-name>valueChangeListener</property-name>
+      <property-class>javax.el.MethodExpression</property-class>
+      <property-extension>
+        <method-signature>
+                void valueChange(javax.faces.event.ValueChangeEvent)
+            </method-signature>
+        <!-- PENDING modify tlddoc to handle an OR of method signatures 
+as required by 
+https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447 
+            <method-signature>
+                void valueChange()
+            </method-signature>
+-->
+      </property-extension>
     </property>
     <property>
       <description>
-          Flag indicating whether the detail portion of the
-          message should be displayed as a tooltip.
+          Flag indicating that this component's value must be
+          converted and validated immediately (that is, during
+          Apply Request Values phase), rather than waiting
+          until Process Validations phase.
         </description>
-      <display-name>Tooltip</display-name>
+      <display-name>Immediate Action</display-name>
       <icon/>
-      <property-name>tooltip</property-name>
+      <property-name>immediate</property-name>
       <property-class>boolean</property-class>
+      <property-extension>
+        <value-expression-enabled>true</value-expression-enabled>
+      </property-extension>
     </property>
     <property>
       <description>
-          CSS style class to apply to any message
-          with a severity class of "WARN".
+          Flag indicating whether or not any required conversion or validation
+          on this component value has been performed successfully.
         </description>
-      <display-name>Warning Class</display-name>
+      <display-name>Valid Flag</display-name>
       <icon/>
-      <property-name>warnClass</property-name>
-      <property-class>java.lang.String</property-class>
+      <property-name>valid</property-name>
+      <property-class>valid</property-class>
+      <property-extension>
+        <tag-attribute>false</tag-attribute>
+      </property-extension>
     </property>
+
+
     <property>
       <description>
-          CSS style(s) to apply to any message
-          with a severity class of "WARN".
+          CSS style(s) to be applied when this component is rendered.
         </description>
-      <display-name>Warning Styles</display-name>
+      <display-name>CSS Styles</display-name>
       <icon/>
-      <property-name>warnStyle</property-name>
+      <property-name>style</property-name>
       <property-class>java.lang.String</property-class>
+      <property-extension>
+        <ignored-by-renderer>true</ignored-by-renderer>
+      </property-extension>
     </property>
-
-
     <property>
       <description>
-          Direction indication for text that does not inherit directionality.
-          Valid values are "LTR" (left-to-right) and "RTL" (right-to-left).
+          Space-separated list of CSS style class(es) to be applied when
+          this element is rendered.  This value must be passed through
+          as the "class" attribute on generated markup.
         </description>
-      <display-name>Direction</display-name>
+      <display-name>CSS Style Classes</display-name>
       <icon/>
-      <property-name>dir</property-name>
+      <property-name>styleClass</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>false</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
       <description>
-          Code describing the language used in the generated markup
+          Advisory title information about markup elements generated
           for this component.
         </description>
-      <display-name>Language Code</display-name>
+      <display-name>Advisory Title</display-name>
       <icon/>
-      <property-name>lang</property-name>
+      <property-name>title</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
-
-    <component-extension>
-      <base-component-type>javax.faces.Message</base-component-type>
-      <renderer-type>javax.faces.Message</renderer-type>
-    </component-extension>
-  </component>
-  <component>
-    <display-name>Messages</display-name>
-    <component-type>javax.faces.HtmlMessages</component-type>
-    <component-class>javax.faces.component.html.HtmlMessages</component-class>
-
     <property>
       <description><![CDATA[
-          A mutable Map of the attributes associated with
-          this component, keyed by attribute name.
-        ]]></description>
-      <display-name>Attributes Map</display-name>
+          <p class="changed_added_2_2">Per the WAI-ARIA spec and its
+          relationship to HTML5 (Section title ARIA Role Attriubute),
+          every HTML element may have a "role" attribute whose value
+          must be passed through unmodified on the element on which it
+          is declared in the final rendered markup.  The attribute, if
+          specified, must have a value that is a string literal that is,
+          or an EL Expression that evaluates to, a set of
+          space-separated tokens representing the various WAI-ARIA roles
+          that the element belongs to.
+          </p>
+
+          <p class="changed_added_2_2">It is the page author's
+          responsibility to ensure that the user agent is capable of
+          correctly interpreting the value of this attribute.</p>]]></description>
+      <display-name>ARIA role</display-name>
       <icon/>
-      <property-name>attributes</property-name>
-      <property-class>java.util.Map</property-class>
+      <property-name>role</property-name>
+      <property-class>java.lang.String</property-class>
       <property-extension>
-        <tag-attribute>false</tag-attribute>
-        <read-only>true</read-only>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
+
+
     <property>
-      <description><![CDATA[
-          The number of child components associated with
-          this component.
-        ]]></description>
-      <display-name>Child Component Count</display-name>
+      <description>
+          Javascript code executed when a pointer button is
+          clicked over this element.
+        </description>
+      <display-name>Button Click Script</display-name>
       <icon/>
-      <property-name>childCount</property-name>
-      <property-class>int</property-class>
+      <property-name>onclick</property-name>
+      <property-class>java.lang.String</property-class>
       <property-extension>
-        <tag-attribute>false</tag-attribute>
-        <read-only>true</read-only>
+        <ignored-by-renderer>true</ignored-by-renderer>
+        <behavior/>
       </property-extension>
     </property>
     <property>
-      <description><![CDATA[
-          A mutable List of the child components associated with
-          this component.
-        ]]></description>
-      <display-name>Child Component List</display-name>
+      <description>
+          Javascript code executed when a pointer button is
+          double clicked over this element.
+        </description>
+      <display-name>Double Click Script</display-name>
       <icon/>
-      <property-name>children</property-name>
-      <property-class>java.util.List</property-class>
+      <property-name>ondblclick</property-name>
+      <property-class>java.lang.String</property-class>
       <property-extension>
-        <tag-attribute>false</tag-attribute>
-        <read-only>true</read-only>
+        <ignored-by-renderer>true</ignored-by-renderer>
+        <behavior/>
       </property-extension>
     </property>
     <property>
-      <description><![CDATA[
-          A mutable Map of the facets associated with
-          this component, keyed by facet name.
-        ]]></description>
-      <display-name>Facets Map</display-name>
+      <description>
+          Javascript code executed when a pointer button is
+          pressed down over this element.
+        </description>
+      <display-name>Mouse Down Script</display-name>
       <icon/>
-      <property-name>facets</property-name>
-      <property-class>java.util.Map</property-class>
+      <property-name>onmousedown</property-name>
+      <property-class>java.lang.String</property-class>
       <property-extension>
-        <tag-attribute>false</tag-attribute>
-        <read-only>true</read-only>
+        <ignored-by-renderer>true</ignored-by-renderer>
+        <behavior/>
       </property-extension>
     </property>
     <property>
-      <description><![CDATA[
-          The component family to which this component belongs.  This property
-          is used to select an appropriate Renderer.
-        ]]></description>
-      <display-name>Component Family</display-name>
+      <description>
+          Javascript code executed when a pointer button is
+          released over this element.
+        </description>
+      <display-name>Mouse Up Script</display-name>
       <icon/>
-      <property-name>family</property-name>
+      <property-name>onmouseup</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <tag-attribute>false</tag-attribute>
-        <read-only>true</read-only>
+        <ignored-by-renderer>true</ignored-by-renderer>
+        <behavior/>
       </property-extension>
     </property>
     <property>
-      <description><![CDATA[
-          The component identifier for this component.  This value must be
-          unique within the closest parent component that is a naming
-          container.
-        ]]></description>
-      <display-name>Component Identifier</display-name>
+      <description>
+          Javascript code executed when a pointer button is
+          moved onto this element.
+        </description>
+      <display-name>Mouse Over Script</display-name>
       <icon/>
-      <property-name>id</property-name>
+      <property-name>onmouseover</property-name>
       <property-class>java.lang.String</property-class>
-    </property>
-    <property>
-      <description><![CDATA[
-          The parent component for this component.  On the root component
-          in the component tree (which must be of type UIViewRoot), this
-          property is null.
-        ]]></description>
-      <display-name>Parent Component</display-name>
-      <icon/>
-      <property-name>parent</property-name>
-      <property-class>javax.faces.component.UIComponent</property-class>
       <property-extension>
-        <tag-attribute>false</tag-attribute>
-        <read-only>true</read-only>
+        <ignored-by-renderer>true</ignored-by-renderer>
+        <behavior/>
       </property-extension>
     </property>
     <property>
-      <description><![CDATA[
-          Flag indicating whether or not this component should be rendered
-          (during Render Response Phase), or processed on any subsequent
-          form submit.  The default value for this property is true.
-        ]]></description>
-      <display-name>Rendered Flag</display-name>
+      <description>
+          Javascript code executed when a pointer button is
+          moved within this element.
+        </description>
+      <display-name>Mouse Move Script</display-name>
       <icon/>
-      <property-name>rendered</property-name>
-      <property-class>boolean</property-class>
+      <property-name>onmousemove</property-name>
+      <property-class>java.lang.String</property-class>
       <property-extension>
-        <value-expression-enabled>true</value-expression-enabled>
+        <ignored-by-renderer>true</ignored-by-renderer>
+        <behavior/>
       </property-extension>
     </property>
     <property>
-      <description><![CDATA[
-          Identifier used (in conjunction with the "family" property) to
-          select an appropriate Renderer to encode and decode this component.
-        ]]></description>
-      <display-name>Renderer Type</display-name>
+      <description>
+          Javascript code executed when a pointer button is
+          moved away from this element.
+        </description>
+      <display-name>Mouse Out Script</display-name>
       <icon/>
-      <property-name>rendererType</property-name>
+      <property-name>onmouseout</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <tag-attribute>false</tag-attribute>
+        <ignored-by-renderer>true</ignored-by-renderer>
+        <behavior/>
       </property-extension>
     </property>
     <property>
-      <description><![CDATA[
-          Flag indicating whether or not this component takes responsibility
-          for rendering its own children.  This decision is normally delegated
-          to the associated Renderer, if there is one.
-        ]]></description>
-      <display-name>Renders Children</display-name>
+      <description>
+          Javascript code executed when a key is
+          pressed and released over this element.
+        </description>
+      <display-name>Key Press Script</display-name>
       <icon/>
-      <property-name>rendersChildren</property-name>
-      <property-class>boolean</property-class>
+      <property-name>onkeypress</property-name>
+      <property-class>java.lang.String</property-class>
       <property-extension>
-        <tag-attribute>false</tag-attribute>
-        <read-only>true</read-only>
+        <ignored-by-renderer>true</ignored-by-renderer>
+        <behavior/>
       </property-extension>
     </property>
     <property>
       <description>
-          Flag indicating that only global messages (that is, messages not
-          associated with any client identifier) are to be displayed.
-          Default value is "false".
+          Javascript code executed when a key is
+          pressed down over this element.
         </description>
-      <display-name>Global Only</display-name>
-      <icon/>
-      <property-name>globalOnly</property-name>
-      <property-class>boolean</property-class>
-      <property-extension>
-        <default-value>false</default-value>
-        <value-expression-enabled>true</value-expression-enabled>
-      </property-extension>
-    </property>
-    <property>
-      <description>
-          Client identifier of the component for which to display messages. This
-          attribute is mutually exclusive with globalOnly and take precedence
-          if used.
-        </description>
-      <display-name>Associated Client Id</display-name>
+      <display-name>Key Down Script</display-name>
       <icon/>
-      <property-name>for</property-name>
+      <property-name>onkeydown</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <required>false</required>
-        <value-expression-enabled>true</value-expression-enabled>
+        <ignored-by-renderer>true</ignored-by-renderer>
+        <behavior/>
       </property-extension>
     </property>
     <property>
       <description>
-          Flag indicating whether the detail portion of displayed messages
-          should be included.  Default value is "false".
+          Javascript code executed when a key is
+          released over this element.
         </description>
-      <display-name>Show Detail</display-name>
+      <display-name>Key Up Script</display-name>
       <icon/>
-      <property-name>showDetail</property-name>
-      <property-class>boolean</property-class>
+      <property-name>onkeyup</property-name>
+      <property-class>java.lang.String</property-class>
       <property-extension>
-        <default-value>false</default-value>
-        <value-expression-enabled>true</value-expression-enabled>
+        <ignored-by-renderer>true</ignored-by-renderer>
+        <behavior/>
       </property-extension>
     </property>
+
+
     <property>
       <description>
-          Flag indicating whether the summary portion of displayed messages
-          should be included.  Default value is "true".
+          Access key that, when pressed, transfers focus
+          to this element.
         </description>
-      <display-name>Show Summary</display-name>
+      <display-name>Access Key</display-name>
       <icon/>
-      <property-name>showSummary</property-name>
-      <property-class>boolean</property-class>
+      <property-name>accesskey</property-name>
+      <property-class>java.lang.String</property-class>
       <property-extension>
-        <default-value>true</default-value>
-        <value-expression-enabled>true</value-expression-enabled>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
-
-
     <property>
       <description>
-          CSS style(s) to be applied when this component is rendered.
+          Javascript code executed when this element loses focus.
         </description>
-      <display-name>CSS Styles</display-name>
+      <display-name>Focus Off Script</display-name>
       <icon/>
-      <property-name>style</property-name>
+      <property-name>onblur</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
+        <behavior/>
       </property-extension>
     </property>
     <property>
       <description>
-          Space-separated list of CSS style class(es) to be applied when
-          this element is rendered.  This value must be passed through
-          as the "class" attribute on generated markup.
+          Javascript code executed when this element receives focus.
         </description>
-      <display-name>CSS Style Classes</display-name>
+      <display-name>Focus On Script</display-name>
       <icon/>
-      <property-name>styleClass</property-name>
+      <property-name>onfocus</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>false</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
+        <behavior/>
       </property-extension>
     </property>
     <property>
       <description>
-          Advisory title information about markup elements generated
-          for this component.
+          Position of this element in the tabbing order
+          for the current document.  This value must be
+          an integer between 0 and 32767.
         </description>
-      <display-name>Advisory Title</display-name>
+      <display-name>Tab Index</display-name>
       <icon/>
-      <property-name>title</property-name>
+      <property-name>tabindex</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
 
 
     <property>
       <description>
-          CSS style class to apply to any message
-          with a severity class of "ERROR".
-        </description>
-      <display-name>Error Class</display-name>
-      <icon/>
-      <property-name>errorClass</property-name>
-      <property-class>java.lang.String</property-class>
-    </property>
-    <property>
-      <description>
-          CSS style(s) to apply to any message
-          with a severity class of "ERROR".
-        </description>
-      <display-name>Error Styles</display-name>
-      <icon/>
-      <property-name>errorStyle</property-name>
-      <property-class>java.lang.String</property-class>
-    </property>
-    <property>
-      <description>
-          CSS style class to apply to any message
-          with a severity class of "FATAL".
+          Direction indication for text that does not inherit directionality.
+          Valid values are "LTR" (left-to-right) and "RTL" (right-to-left).
+          These attributes are case sensitive when rendering to XHTML, so
+          care must be taken to have the correct case.
         </description>
-      <display-name>Fatal Class</display-name>
+      <display-name>Direction</display-name>
       <icon/>
-      <property-name>fatalClass</property-name>
+      <property-name>dir</property-name>
       <property-class>java.lang.String</property-class>
+      <property-extension>
+        <ignored-by-renderer>true</ignored-by-renderer>
+      </property-extension>
     </property>
     <property>
       <description>
-          CSS style(s) to apply to any message
-          with a severity class of "FATAL".
+          Code describing the language used in the generated markup
+          for this component.
         </description>
-      <display-name>Fatal Styles</display-name>
+      <display-name>Language Code</display-name>
       <icon/>
-      <property-name>fatalStyle</property-name>
+      <property-name>lang</property-name>
       <property-class>java.lang.String</property-class>
+      <property-extension>
+        <ignored-by-renderer>true</ignored-by-renderer>
+      </property-extension>
     </property>
+
+
     <property>
       <description>
-          CSS style class to apply to any message
-          with a severity class of "INFO".
+          Flag indicating that this element must never receive focus or
+          be included in a subsequent submit.  A value of false causes
+          no attribute to be rendered, while a value of true causes the
+          attribute to be rendered as disabled="disabled".            
         </description>
-      <display-name>Info Class</display-name>
+      <display-name>Disabled Flag</display-name>
       <icon/>
-      <property-name>infoClass</property-name>
-      <property-class>java.lang.String</property-class>
+      <property-name>disabled</property-name>
+      <property-class>boolean</property-class>
+      <property-extension>
+        <ignored-by-renderer>false</ignored-by-renderer>
+      </property-extension>
     </property>
     <property>
       <description>
-          CSS style(s) to apply to any message
-          with a severity class of "INFO".
+          Javascript code executed when this element loses focus
+          and its value has been modified since gaining focus.
         </description>
-      <display-name>Info Styles</display-name>
+      <display-name>Input Change Script</display-name>
       <icon/>
-      <property-name>infoStyle</property-name>
+      <property-name>onchange</property-name>
       <property-class>java.lang.String</property-class>
+      <property-extension>
+        <ignored-by-renderer>false</ignored-by-renderer>
+        <behavior/>
+        <behavior>valueChange</behavior>
+        <default-behavior>true</default-behavior>
+      </property-extension>
     </property>
     <property>
       <description>
-          The type of layout markup to use when rendering
-          error messages.  Valid values are "table" (an HTML
-          table) and "list" (an HTML list).  If not specified,
-          the default value is "list".
+          Javascript code executed when text within this
+          element is selected by the user.
         </description>
-      <display-name>Layout</display-name>
+      <display-name>Text Select Script</display-name>
       <icon/>
-      <property-name>layout</property-name>
+      <property-name>onselect</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <default-value>"list"</default-value>
+        <ignored-by-renderer>true</ignored-by-renderer>
+        <behavior/>
       </property-extension>
     </property>
     <property>
       <description>
-          Flag indicating whether the detail portion of the
-          message should be displayed as a tooltip.
+          Flag indicating that this component will prohibit changes by
+          the user.  The element may receive focus unless it has also
+          been disabled.  A value of false causes
+          no attribute to be rendered, while a value of true causes the
+          attribute to be rendered as readonly="readonly".
         </description>
-      <display-name>Tooltip</display-name>
+      <display-name>Read Only Flag</display-name>
       <icon/>
-      <property-name>tooltip</property-name>
+      <property-name>readonly</property-name>
       <property-class>boolean</property-class>
+      <property-extension>
+        <ignored-by-renderer>false</ignored-by-renderer>
+      </property-extension>
     </property>
     <property>
       <description>
-          CSS style class to apply to any message
-          with a severity class of "WARN".
-        </description>
-      <display-name>Warning Class</display-name>
-      <icon/>
-      <property-name>warnClass</property-name>
-      <property-class>java.lang.String</property-class>
-    </property>
-    <property>
-      <description>
-          CSS style(s) to apply to any message
-          with a severity class of "WARN".
+          A localized user presentable name for this component.
         </description>
-      <display-name>Warning Styles</display-name>
+      <display-name>Label</display-name>
       <icon/>
-      <property-name>warnStyle</property-name>
+      <property-name>label</property-name>
       <property-class>java.lang.String</property-class>
+      <property-extension>
+        <renderer-attribute-ignore>true</renderer-attribute-ignore>
+      </property-extension>
     </property>
 
 
     <property>
       <description>
-          Direction indication for text that does not inherit directionality.
-          Valid values are "LTR" (left-to-right) and "RTL" (right-to-left).
+        The number of columns to be displayed.
         </description>
-      <display-name>Direction</display-name>
+      <display-name>Columns</display-name>
       <icon/>
-      <property-name>dir</property-name>
-      <property-class>java.lang.String</property-class>
+      <property-name>cols</property-name>
+      <property-class>int</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
       <description>
-          Code describing the language used in the generated markup
-          for this component.
+        The number of rows to be displayed.
         </description>
-      <display-name>Language Code</display-name>
+      <display-name>Rows</display-name>
       <icon/>
-      <property-name>lang</property-name>
-      <property-class>java.lang.String</property-class>
+      <property-name>rows</property-name>
+      <property-class>int</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
+        <value-expression-enabled>true</value-expression-enabled>
       </property-extension>
     </property>
 
     <component-extension>
-      <base-component-type>javax.faces.Messages</base-component-type>
-      <renderer-type>javax.faces.Messages</renderer-type>
+      <base-component-type>javax.faces.Input</base-component-type>
+      <renderer-type>javax.faces.Textarea</renderer-type>
     </component-extension>
   </component>
   <component>
-    <description><![CDATA[<p>Represents a component that looks up a localized message in a
-      resource bundle, optionally uses it as a
-      <code>MessageFormat</code> pattern string and substitutes in
-      parameter values from nested <em>UIParameter</em> components, and
-      renders the result.  If the "dir" or "lang" attributes are
-      present, render a <code>span</code> element and pass them through
-      as attributes on the span.</p>]]></description>
-    <display-name>Output Format</display-name>
-    <component-type>javax.faces.HtmlOutputFormat</component-type>
-    <component-class>javax.faces.component.html.HtmlOutputFormat</component-class>
+    <display-name>Message</display-name>
+    <component-type>javax.faces.HtmlMessage</component-type>
+    <component-class>javax.faces.component.html.HtmlMessage</component-class>
 
     <property>
       <description><![CDATA[
@@ -11283,41 +11841,42 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
     </property>
     <property>
       <description>
-          Converter instance registered with this component.
+          Client identifier of the component for which to display messages.
         </description>
-      <display-name>Converter</display-name>
+      <display-name>Associated Client Id</display-name>
       <icon/>
-      <property-name>converter</property-name>
-      <property-class>javax.faces.convert.Converter</property-class>
+      <property-name>for</property-name>
+      <property-class>java.lang.String</property-class>
       <property-extension>
+        <required>true</required>
         <value-expression-enabled>true</value-expression-enabled>
       </property-extension>
     </property>
     <property>
       <description>
-          For output components, this is the same as the "value" property.
-          For input components, this is the most recently user-entered
-          value, which will be pushed to the application data model during
-          Update Model Values phase, if a value binding is present for the
-          "value" property.
+          Flag indicating whether the detail portion of displayed messages
+          should be included.  Default value is "true".
         </description>
-      <display-name>Local Value</display-name>
+      <display-name>Show Detail</display-name>
       <icon/>
-      <property-name>localValue</property-name>
-      <property-class>java.lang.Object</property-class>
+      <property-name>showDetail</property-name>
+      <property-class>boolean</property-class>
       <property-extension>
-        <tag-attribute>false</tag-attribute>
+        <default-value>true</default-value>
+        <value-expression-enabled>true</value-expression-enabled>
       </property-extension>
     </property>
     <property>
       <description>
-          The current value of this component.
+          Flag indicating whether the summary portion of displayed messages
+          should be included.  Default value is "false".
         </description>
-      <display-name>Value</display-name>
+      <display-name>Show Summary</display-name>
       <icon/>
-      <property-name>value</property-name>
-      <property-class>java.lang.Object</property-class>
+      <property-name>showSummary</property-name>
+      <property-class>boolean</property-class>
       <property-extension>
+        <default-value>false</default-value>
         <value-expression-enabled>true</value-expression-enabled>
       </property-extension>
     </property>
@@ -11332,7 +11891,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>style</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -11346,7 +11905,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>styleClass</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>false</pass-through>
+        <ignored-by-renderer>false</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -11359,24 +11918,124 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>title</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
+      </property-extension>
+    </property>
+    <property>
+      <description><![CDATA[
+          <p class="changed_added_2_2">Per the WAI-ARIA spec and its
+          relationship to HTML5 (Section title ARIA Role Attriubute),
+          every HTML element may have a "role" attribute whose value
+          must be passed through unmodified on the element on which it
+          is declared in the final rendered markup.  The attribute, if
+          specified, must have a value that is a string literal that is,
+          or an EL Expression that evaluates to, a set of
+          space-separated tokens representing the various WAI-ARIA roles
+          that the element belongs to.
+          </p>
+
+          <p class="changed_added_2_2">It is the page author's
+          responsibility to ensure that the user agent is capable of
+          correctly interpreting the value of this attribute.</p>]]></description>
+      <display-name>ARIA role</display-name>
+      <icon/>
+      <property-name>role</property-name>
+      <property-class>java.lang.String</property-class>
+      <property-extension>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
 
 
     <property>
       <description>
-        Flag indicating that characters that are sensitive
-        in HTML and XML markup must be escaped.  This flag
-        is set to "true" by default.
+          CSS style class to apply to any message
+          with a severity class of "ERROR".
         </description>
-      <display-name>Escape Characters</display-name>
+      <display-name>Error Class</display-name>
       <icon/>
-      <property-name>escape</property-name>
+      <property-name>errorClass</property-name>
+      <property-class>java.lang.String</property-class>
+    </property>
+    <property>
+      <description>
+          CSS style(s) to apply to any message
+          with a severity class of "ERROR".
+        </description>
+      <display-name>Error Styles</display-name>
+      <icon/>
+      <property-name>errorStyle</property-name>
+      <property-class>java.lang.String</property-class>
+    </property>
+    <property>
+      <description>
+          CSS style class to apply to any message
+          with a severity class of "FATAL".
+        </description>
+      <display-name>Fatal Class</display-name>
+      <icon/>
+      <property-name>fatalClass</property-name>
+      <property-class>java.lang.String</property-class>
+    </property>
+    <property>
+      <description>
+          CSS style(s) to apply to any message
+          with a severity class of "FATAL".
+        </description>
+      <display-name>Fatal Styles</display-name>
+      <icon/>
+      <property-name>fatalStyle</property-name>
+      <property-class>java.lang.String</property-class>
+    </property>
+    <property>
+      <description>
+          CSS style class to apply to any message
+          with a severity class of "INFO".
+        </description>
+      <display-name>Info Class</display-name>
+      <icon/>
+      <property-name>infoClass</property-name>
+      <property-class>java.lang.String</property-class>
+    </property>
+    <property>
+      <description>
+          CSS style(s) to apply to any message
+          with a severity class of "INFO".
+        </description>
+      <display-name>Info Styles</display-name>
+      <icon/>
+      <property-name>infoStyle</property-name>
+      <property-class>java.lang.String</property-class>
+    </property>
+    <property>
+      <description>
+          Flag indicating whether the detail portion of the
+          message should be displayed as a tooltip.
+        </description>
+      <display-name>Tooltip</display-name>
+      <icon/>
+      <property-name>tooltip</property-name>
       <property-class>boolean</property-class>
-      <property-extension>
-        <default-value>true</default-value>
-      </property-extension>
+    </property>
+    <property>
+      <description>
+          CSS style class to apply to any message
+          with a severity class of "WARN".
+        </description>
+      <display-name>Warning Class</display-name>
+      <icon/>
+      <property-name>warnClass</property-name>
+      <property-class>java.lang.String</property-class>
+    </property>
+    <property>
+      <description>
+          CSS style(s) to apply to any message
+          with a severity class of "WARN".
+        </description>
+      <display-name>Warning Styles</display-name>
+      <icon/>
+      <property-name>warnStyle</property-name>
+      <property-class>java.lang.String</property-class>
     </property>
 
 
@@ -11384,13 +12043,15 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <description>
           Direction indication for text that does not inherit directionality.
           Valid values are "LTR" (left-to-right) and "RTL" (right-to-left).
+          These attributes are case sensitive when rendering to XHTML, so
+          care must be taken to have the correct case.
         </description>
       <display-name>Direction</display-name>
       <icon/>
       <property-name>dir</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -11403,21 +12064,19 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>lang</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
 
     <component-extension>
-      <base-component-type>javax.faces.Output</base-component-type>
-      <renderer-type>javax.faces.Format</renderer-type>
+      <base-component-type>javax.faces.Message</base-component-type>
+      <renderer-type>javax.faces.Message</renderer-type>
     </component-extension>
   </component>
   <component>
-    <description><![CDATA[<p>Represents an HTML <code>label</code> element, used to define
-      an accessible label for a corresponding input element.</p>]]></description>
-    <display-name>Output Label</display-name>
-    <component-type>javax.faces.HtmlOutputLabel</component-type>
-    <component-class>javax.faces.component.html.HtmlOutputLabel</component-class>
+    <display-name>Messages</display-name>
+    <component-type>javax.faces.HtmlMessages</component-type>
+    <component-class>javax.faces.component.html.HtmlMessages</component-class>
 
     <property>
       <description><![CDATA[
@@ -11559,41 +12218,59 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
     </property>
     <property>
       <description>
-          Converter instance registered with this component.
+          Flag indicating that only global messages (that is, messages not
+          associated with any client identifier) are to be displayed.
+          Default value is "false".
         </description>
-      <display-name>Converter</display-name>
+      <display-name>Global Only</display-name>
       <icon/>
-      <property-name>converter</property-name>
-      <property-class>javax.faces.convert.Converter</property-class>
+      <property-name>globalOnly</property-name>
+      <property-class>boolean</property-class>
+      <property-extension>
+        <default-value>false</default-value>
+        <value-expression-enabled>true</value-expression-enabled>
+      </property-extension>
+    </property>
+    <property>
+      <description>
+          Client identifier of the component for which to display messages. This
+          attribute is mutually exclusive with globalOnly and take precedence
+          if used.
+        </description>
+      <display-name>Associated Client Id</display-name>
+      <icon/>
+      <property-name>for</property-name>
+      <property-class>java.lang.String</property-class>
       <property-extension>
+        <required>false</required>
         <value-expression-enabled>true</value-expression-enabled>
       </property-extension>
     </property>
     <property>
       <description>
-          For output components, this is the same as the "value" property.
-          For input components, this is the most recently user-entered
-          value, which will be pushed to the application data model during
-          Update Model Values phase, if a value binding is present for the
-          "value" property.
+          Flag indicating whether the detail portion of displayed messages
+          should be included.  Default value is "false".
         </description>
-      <display-name>Local Value</display-name>
+      <display-name>Show Detail</display-name>
       <icon/>
-      <property-name>localValue</property-name>
-      <property-class>java.lang.Object</property-class>
+      <property-name>showDetail</property-name>
+      <property-class>boolean</property-class>
       <property-extension>
-        <tag-attribute>false</tag-attribute>
+        <default-value>false</default-value>
+        <value-expression-enabled>true</value-expression-enabled>
       </property-extension>
     </property>
     <property>
       <description>
-          The current value of this component.
+          Flag indicating whether the summary portion of displayed messages
+          should be included.  Default value is "true".
         </description>
-      <display-name>Value</display-name>
+      <display-name>Show Summary</display-name>
       <icon/>
-      <property-name>value</property-name>
-      <property-class>java.lang.Object</property-class>
+      <property-name>showSummary</property-name>
+      <property-class>boolean</property-class>
       <property-extension>
+        <default-value>true</default-value>
         <value-expression-enabled>true</value-expression-enabled>
       </property-extension>
     </property>
@@ -11608,7 +12285,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>style</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -11622,7 +12299,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>styleClass</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>false</pass-through>
+        <ignored-by-renderer>false</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -11635,205 +12312,139 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>title</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
+      </property-extension>
+    </property>
+    <property>
+      <description><![CDATA[
+          <p class="changed_added_2_2">Per the WAI-ARIA spec and its
+          relationship to HTML5 (Section title ARIA Role Attriubute),
+          every HTML element may have a "role" attribute whose value
+          must be passed through unmodified on the element on which it
+          is declared in the final rendered markup.  The attribute, if
+          specified, must have a value that is a string literal that is,
+          or an EL Expression that evaluates to, a set of
+          space-separated tokens representing the various WAI-ARIA roles
+          that the element belongs to.
+          </p>
+
+          <p class="changed_added_2_2">It is the page author's
+          responsibility to ensure that the user agent is capable of
+          correctly interpreting the value of this attribute.</p>]]></description>
+      <display-name>ARIA role</display-name>
+      <icon/>
+      <property-name>role</property-name>
+      <property-class>java.lang.String</property-class>
+      <property-extension>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
 
 
     <property>
       <description>
-          Javascript code executed when a pointer button is
-          clicked over this element.
+          CSS style class to apply to any message
+          with a severity class of "ERROR".
         </description>
-      <display-name>Button Click Script</display-name>
+      <display-name>Error Class</display-name>
       <icon/>
-      <property-name>onclick</property-name>
+      <property-name>errorClass</property-name>
       <property-class>java.lang.String</property-class>
-      <property-extension>
-        <pass-through>true</pass-through>
-        <behavior/>
-      </property-extension>
     </property>
     <property>
       <description>
-          Javascript code executed when a pointer button is
-          double clicked over this element.
+          CSS style(s) to apply to any message
+          with a severity class of "ERROR".
         </description>
-      <display-name>Double Click Script</display-name>
+      <display-name>Error Styles</display-name>
       <icon/>
-      <property-name>ondblclick</property-name>
+      <property-name>errorStyle</property-name>
       <property-class>java.lang.String</property-class>
-      <property-extension>
-        <pass-through>true</pass-through>
-        <behavior/>
-      </property-extension>
     </property>
     <property>
       <description>
-          Javascript code executed when a pointer button is
-          pressed down over this element.
+          CSS style class to apply to any message
+          with a severity class of "FATAL".
         </description>
-      <display-name>Mouse Down Script</display-name>
+      <display-name>Fatal Class</display-name>
       <icon/>
-      <property-name>onmousedown</property-name>
+      <property-name>fatalClass</property-name>
       <property-class>java.lang.String</property-class>
-      <property-extension>
-        <pass-through>true</pass-through>
-        <behavior/>
-      </property-extension>
     </property>
     <property>
       <description>
-          Javascript code executed when a pointer button is
-          released over this element.
+          CSS style(s) to apply to any message
+          with a severity class of "FATAL".
         </description>
-      <display-name>Mouse Up Script</display-name>
+      <display-name>Fatal Styles</display-name>
       <icon/>
-      <property-name>onmouseup</property-name>
+      <property-name>fatalStyle</property-name>
       <property-class>java.lang.String</property-class>
-      <property-extension>
-        <pass-through>true</pass-through>
-        <behavior/>
-      </property-extension>
     </property>
     <property>
       <description>
-          Javascript code executed when a pointer button is
-          moved onto this element.
+          CSS style class to apply to any message
+          with a severity class of "INFO".
         </description>
-      <display-name>Mouse Over Script</display-name>
+      <display-name>Info Class</display-name>
       <icon/>
-      <property-name>onmouseover</property-name>
+      <property-name>infoClass</property-name>
       <property-class>java.lang.String</property-class>
-      <property-extension>
-        <pass-through>true</pass-through>
-        <behavior/>
-      </property-extension>
     </property>
     <property>
       <description>
-          Javascript code executed when a pointer button is
-          moved within this element.
+          CSS style(s) to apply to any message
+          with a severity class of "INFO".
         </description>
-      <display-name>Mouse Move Script</display-name>
+      <display-name>Info Styles</display-name>
       <icon/>
-      <property-name>onmousemove</property-name>
+      <property-name>infoStyle</property-name>
       <property-class>java.lang.String</property-class>
-      <property-extension>
-        <pass-through>true</pass-through>
-        <behavior/>
-      </property-extension>
     </property>
     <property>
       <description>
-          Javascript code executed when a pointer button is
-          moved away from this element.
+          The type of layout markup to use when rendering
+          error messages.  Valid values are "table" (an HTML
+          table) and "list" (an HTML list).  If not specified,
+          the default value is "list".
         </description>
-      <display-name>Mouse Out Script</display-name>
+      <display-name>Layout</display-name>
       <icon/>
-      <property-name>onmouseout</property-name>
+      <property-name>layout</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
-        <behavior/>
+        <default-value>"list"</default-value>
       </property-extension>
     </property>
     <property>
       <description>
-          Javascript code executed when a key is
-          pressed and released over this element.
-        </description>
-      <display-name>Key Press Script</display-name>
-      <icon/>
-      <property-name>onkeypress</property-name>
-      <property-class>java.lang.String</property-class>
-      <property-extension>
-        <pass-through>true</pass-through>
-        <behavior/>
-      </property-extension>
-    </property>
-    <property>
-      <description>
-          Javascript code executed when a key is
-          pressed down over this element.
-        </description>
-      <display-name>Key Down Script</display-name>
-      <icon/>
-      <property-name>onkeydown</property-name>
-      <property-class>java.lang.String</property-class>
-      <property-extension>
-        <pass-through>true</pass-through>
-        <behavior/>
-      </property-extension>
-    </property>
-    <property>
-      <description>
-          Javascript code executed when a key is
-          released over this element.
-        </description>
-      <display-name>Key Up Script</display-name>
-      <icon/>
-      <property-name>onkeyup</property-name>
-      <property-class>java.lang.String</property-class>
-      <property-extension>
-        <pass-through>true</pass-through>
-        <behavior/>
-      </property-extension>
-    </property>
-
-
-    <property>
-      <description>
-          Access key that, when pressed, transfers focus
-          to this element.
-        </description>
-      <display-name>Access Key</display-name>
-      <icon/>
-      <property-name>accesskey</property-name>
-      <property-class>java.lang.String</property-class>
-      <property-extension>
-        <pass-through>true</pass-through>
-      </property-extension>
-    </property>
-    <property>
-      <description>
-          Javascript code executed when this element loses focus.
+          Flag indicating whether the detail portion of the
+          message should be displayed as a tooltip.
         </description>
-      <display-name>Focus Off Script</display-name>
+      <display-name>Tooltip</display-name>
       <icon/>
-      <property-name>onblur</property-name>
-      <property-class>java.lang.String</property-class>
-      <property-extension>
-        <pass-through>true</pass-through>
-        <behavior/>
-      </property-extension>
+      <property-name>tooltip</property-name>
+      <property-class>boolean</property-class>
     </property>
     <property>
       <description>
-          Javascript code executed when this element receives focus.
+          CSS style class to apply to any message
+          with a severity class of "WARN".
         </description>
-      <display-name>Focus On Script</display-name>
+      <display-name>Warning Class</display-name>
       <icon/>
-      <property-name>onfocus</property-name>
+      <property-name>warnClass</property-name>
       <property-class>java.lang.String</property-class>
-      <property-extension>
-        <pass-through>true</pass-through>
-        <behavior/>
-      </property-extension>
     </property>
     <property>
       <description>
-          Position of this element in the tabbing order
-          for the current document.  This value must be
-          an integer between 0 and 32767.
+          CSS style(s) to apply to any message
+          with a severity class of "WARN".
         </description>
-      <display-name>Tab Index</display-name>
+      <display-name>Warning Styles</display-name>
       <icon/>
-      <property-name>tabindex</property-name>
+      <property-name>warnStyle</property-name>
       <property-class>java.lang.String</property-class>
-      <property-extension>
-        <pass-through>true</pass-through>
-      </property-extension>
     </property>
 
 
@@ -11841,13 +12452,15 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <description>
           Direction indication for text that does not inherit directionality.
           Valid values are "LTR" (left-to-right) and "RTL" (right-to-left).
+          These attributes are case sensitive when rendering to XHTML, so
+          care must be taken to have the correct case.
         </description>
       <display-name>Direction</display-name>
       <icon/>
       <property-name>dir</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -11860,52 +12473,26 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>lang</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
-      </property-extension>
-    </property>
-
-
-    <property>
-      <description>
-        Client identifier of the component for which this element
-        is a label.
-        </description>
-      <display-name>Label For Identifier</display-name>
-      <icon/>
-      <property-name>for</property-name>
-      <property-class>java.lang.String</property-class>
-      <property-extension>
-        <required>false</required>
-      </property-extension>
-    </property>
-    <property>
-      <description>
-        Flag indicating that characters that are sensitive
-        in HTML and XML markup must be escaped.  If omitted, this
-        flag is assumed to be "true".
-        </description>
-      <display-name>Escape Characters</display-name>
-      <icon/>
-      <property-name>escape</property-name>
-      <property-class>boolean</property-class>
-      <property-extension>
-        <default-value>true</default-value>
-        <value-expression-enabled>true</value-expression-enabled>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
 
     <component-extension>
-      <base-component-type>javax.faces.Output</base-component-type>
-      <renderer-type>javax.faces.Label</renderer-type>
+      <base-component-type>javax.faces.Messages</base-component-type>
+      <renderer-type>javax.faces.Messages</renderer-type>
     </component-extension>
   </component>
   <component>
-    <description><![CDATA[<p>Represents an HTML <code>a</code> (hyperlink) element that may be
-      used to link to an arbitrary URL defined by the <code>value</code>
-      property.</p>]]></description>
-    <display-name>Output Hyperlink</display-name>
-    <component-type>javax.faces.HtmlOutputLink</component-type>
-    <component-class>javax.faces.component.html.HtmlOutputLink</component-class>
+    <description><![CDATA[<p>Represents a component that looks up a localized message in a
+      resource bundle, optionally uses it as a
+      <code>MessageFormat</code> pattern string and substitutes in
+      parameter values from nested <em>UIParameter</em> components, and
+      renders the result.  If the "dir" or "lang" attributes are
+      present, render a <code>span</code> element and pass them through
+      as attributes on the span.</p>]]></description>
+    <display-name>Output Format</display-name>
+    <component-type>javax.faces.HtmlOutputFormat</component-type>
+    <component-class>javax.faces.component.html.HtmlOutputFormat</component-class>
 
     <property>
       <description><![CDATA[
@@ -12096,7 +12683,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>style</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -12110,7 +12697,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>styleClass</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>false</pass-through>
+        <ignored-by-renderer>false</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -12123,362 +12710,337 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>title</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
-
-
     <property>
-      <description>
-          Javascript code executed when a pointer button is
-          clicked over this element.
-        </description>
-      <display-name>Button Click Script</display-name>
+      <description><![CDATA[
+          <p class="changed_added_2_2">Per the WAI-ARIA spec and its
+          relationship to HTML5 (Section title ARIA Role Attriubute),
+          every HTML element may have a "role" attribute whose value
+          must be passed through unmodified on the element on which it
+          is declared in the final rendered markup.  The attribute, if
+          specified, must have a value that is a string literal that is,
+          or an EL Expression that evaluates to, a set of
+          space-separated tokens representing the various WAI-ARIA roles
+          that the element belongs to.
+          </p>
+
+          <p class="changed_added_2_2">It is the page author's
+          responsibility to ensure that the user agent is capable of
+          correctly interpreting the value of this attribute.</p>]]></description>
+      <display-name>ARIA role</display-name>
       <icon/>
-      <property-name>onclick</property-name>
+      <property-name>role</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
-        <behavior/>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
+
+
     <property>
       <description>
-          Javascript code executed when a pointer button is
-          double clicked over this element.
+        Flag indicating that characters that are sensitive
+        in HTML and XML markup must be escaped.  This flag
+        is set to "true" by default.
         </description>
-      <display-name>Double Click Script</display-name>
+      <display-name>Escape Characters</display-name>
       <icon/>
-      <property-name>ondblclick</property-name>
-      <property-class>java.lang.String</property-class>
+      <property-name>escape</property-name>
+      <property-class>boolean</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
-        <behavior/>
+        <default-value>true</default-value>
       </property-extension>
     </property>
+
+
     <property>
       <description>
-          Javascript code executed when a pointer button is
-          pressed down over this element.
+          Direction indication for text that does not inherit directionality.
+          Valid values are "LTR" (left-to-right) and "RTL" (right-to-left).
+          These attributes are case sensitive when rendering to XHTML, so
+          care must be taken to have the correct case.
         </description>
-      <display-name>Mouse Down Script</display-name>
+      <display-name>Direction</display-name>
       <icon/>
-      <property-name>onmousedown</property-name>
+      <property-name>dir</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
-        <behavior/>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
       <description>
-          Javascript code executed when a pointer button is
-          released over this element.
+          Code describing the language used in the generated markup
+          for this component.
         </description>
-      <display-name>Mouse Up Script</display-name>
+      <display-name>Language Code</display-name>
       <icon/>
-      <property-name>onmouseup</property-name>
+      <property-name>lang</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
-        <behavior/>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
+
+    <component-extension>
+      <base-component-type>javax.faces.Output</base-component-type>
+      <renderer-type>javax.faces.Format</renderer-type>
+    </component-extension>
+  </component>
+  <component>
+    <description><![CDATA[<p>Represents an HTML <code>label</code> element, used to define
+      an accessible label for a corresponding input element.</p>]]></description>
+    <display-name>Output Label</display-name>
+    <component-type>javax.faces.HtmlOutputLabel</component-type>
+    <component-class>javax.faces.component.html.HtmlOutputLabel</component-class>
+
     <property>
-      <description>
-          Javascript code executed when a pointer button is
-          moved onto this element.
-        </description>
-      <display-name>Mouse Over Script</display-name>
+      <description><![CDATA[
+          A mutable Map of the attributes associated with
+          this component, keyed by attribute name.
+        ]]></description>
+      <display-name>Attributes Map</display-name>
       <icon/>
-      <property-name>onmouseover</property-name>
-      <property-class>java.lang.String</property-class>
+      <property-name>attributes</property-name>
+      <property-class>java.util.Map</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
-        <behavior/>
+        <tag-attribute>false</tag-attribute>
+        <read-only>true</read-only>
       </property-extension>
     </property>
     <property>
-      <description>
-          Javascript code executed when a pointer button is
-          moved within this element.
-        </description>
-      <display-name>Mouse Move Script</display-name>
+      <description><![CDATA[
+          The number of child components associated with
+          this component.
+        ]]></description>
+      <display-name>Child Component Count</display-name>
       <icon/>
-      <property-name>onmousemove</property-name>
-      <property-class>java.lang.String</property-class>
+      <property-name>childCount</property-name>
+      <property-class>int</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
-        <behavior/>
+        <tag-attribute>false</tag-attribute>
+        <read-only>true</read-only>
       </property-extension>
     </property>
     <property>
-      <description>
-          Javascript code executed when a pointer button is
-          moved away from this element.
-        </description>
-      <display-name>Mouse Out Script</display-name>
+      <description><![CDATA[
+          A mutable List of the child components associated with
+          this component.
+        ]]></description>
+      <display-name>Child Component List</display-name>
       <icon/>
-      <property-name>onmouseout</property-name>
-      <property-class>java.lang.String</property-class>
+      <property-name>children</property-name>
+      <property-class>java.util.List</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
-        <behavior/>
+        <tag-attribute>false</tag-attribute>
+        <read-only>true</read-only>
       </property-extension>
     </property>
     <property>
-      <description>
-          Javascript code executed when a key is
-          pressed and released over this element.
-        </description>
-      <display-name>Key Press Script</display-name>
+      <description><![CDATA[
+          A mutable Map of the facets associated with
+          this component, keyed by facet name.
+        ]]></description>
+      <display-name>Facets Map</display-name>
       <icon/>
-      <property-name>onkeypress</property-name>
-      <property-class>java.lang.String</property-class>
-      <property-extension>
-        <pass-through>true</pass-through>
-        <behavior/>
-      </property-extension>
-    </property>
-    <property>
-      <description>
-          Javascript code executed when a key is
-          pressed down over this element.
-        </description>
-      <display-name>Key Down Script</display-name>
-      <icon/>
-      <property-name>onkeydown</property-name>
-      <property-class>java.lang.String</property-class>
-      <property-extension>
-        <pass-through>true</pass-through>
-        <behavior/>
-      </property-extension>
-    </property>
-    <property>
-      <description>
-          Javascript code executed when a key is
-          released over this element.
-        </description>
-      <display-name>Key Up Script</display-name>
-      <icon/>
-      <property-name>onkeyup</property-name>
-      <property-class>java.lang.String</property-class>
-      <property-extension>
-        <pass-through>true</pass-through>
-        <behavior/>
-      </property-extension>
-    </property>
-
-
-    <property>
-      <description>
-          Access key that, when pressed, transfers focus
-          to this element.
-        </description>
-      <display-name>Access Key</display-name>
-      <icon/>
-      <property-name>accesskey</property-name>
-      <property-class>java.lang.String</property-class>
+      <property-name>facets</property-name>
+      <property-class>java.util.Map</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <tag-attribute>false</tag-attribute>
+        <read-only>true</read-only>
       </property-extension>
     </property>
     <property>
-      <description>
-          Javascript code executed when this element loses focus.
-        </description>
-      <display-name>Focus Off Script</display-name>
+      <description><![CDATA[
+          The component family to which this component belongs.  This property
+          is used to select an appropriate Renderer.
+        ]]></description>
+      <display-name>Component Family</display-name>
       <icon/>
-      <property-name>onblur</property-name>
+      <property-name>family</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
-        <behavior/>
+        <tag-attribute>false</tag-attribute>
+        <read-only>true</read-only>
       </property-extension>
     </property>
     <property>
-      <description>
-          Javascript code executed when this element receives focus.
-        </description>
-      <display-name>Focus On Script</display-name>
+      <description><![CDATA[
+          The component identifier for this component.  This value must be
+          unique within the closest parent component that is a naming
+          container.
+        ]]></description>
+      <display-name>Component Identifier</display-name>
       <icon/>
-      <property-name>onfocus</property-name>
+      <property-name>id</property-name>
       <property-class>java.lang.String</property-class>
-      <property-extension>
-        <pass-through>true</pass-through>
-        <behavior/>
-      </property-extension>
     </property>
     <property>
-      <description>
-          Position of this element in the tabbing order
-          for the current document.  This value must be
-          an integer between 0 and 32767.
-        </description>
-      <display-name>Tab Index</display-name>
+      <description><![CDATA[
+          The parent component for this component.  On the root component
+          in the component tree (which must be of type UIViewRoot), this
+          property is null.
+        ]]></description>
+      <display-name>Parent Component</display-name>
       <icon/>
-      <property-name>tabindex</property-name>
-      <property-class>java.lang.String</property-class>
+      <property-name>parent</property-name>
+      <property-class>javax.faces.component.UIComponent</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <tag-attribute>false</tag-attribute>
+        <read-only>true</read-only>
       </property-extension>
     </property>
-
-
     <property>
-      <description>
-          Direction indication for text that does not inherit directionality.
-          Valid values are "LTR" (left-to-right) and "RTL" (right-to-left).
-        </description>
-      <display-name>Direction</display-name>
+      <description><![CDATA[
+          Flag indicating whether or not this component should be rendered
+          (during Render Response Phase), or processed on any subsequent
+          form submit.  The default value for this property is true.
+        ]]></description>
+      <display-name>Rendered Flag</display-name>
       <icon/>
-      <property-name>dir</property-name>
-      <property-class>java.lang.String</property-class>
+      <property-name>rendered</property-name>
+      <property-class>boolean</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <value-expression-enabled>true</value-expression-enabled>
       </property-extension>
     </property>
     <property>
-      <description>
-          Code describing the language used in the generated markup
-          for this component.
-        </description>
-      <display-name>Language Code</display-name>
+      <description><![CDATA[
+          Identifier used (in conjunction with the "family" property) to
+          select an appropriate Renderer to encode and decode this component.
+        ]]></description>
+      <display-name>Renderer Type</display-name>
       <icon/>
-      <property-name>lang</property-name>
+      <property-name>rendererType</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <tag-attribute>false</tag-attribute>
       </property-extension>
     </property>
-
-
     <property>
-      <description>
-          The character encoding of the resource designated
-          by this hyperlink.
-        </description>
-      <display-name>Character Set</display-name>
+      <description><![CDATA[
+          Flag indicating whether or not this component takes responsibility
+          for rendering its own children.  This decision is normally delegated
+          to the associated Renderer, if there is one.
+        ]]></description>
+      <display-name>Renders Children</display-name>
       <icon/>
-      <property-name>charset</property-name>
-      <property-class>java.lang.String</property-class>
+      <property-name>rendersChildren</property-name>
+      <property-class>boolean</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <tag-attribute>false</tag-attribute>
+        <read-only>true</read-only>
       </property-extension>
     </property>
     <property>
       <description>
-          The position and shape of the hot spot on the screen
-          (for use in client-side image maps).
+          Converter instance registered with this component.
         </description>
-      <display-name>Coordinates</display-name>
+      <display-name>Converter</display-name>
       <icon/>
-      <property-name>coords</property-name>
-      <property-class>java.lang.String</property-class>
+      <property-name>converter</property-name>
+      <property-class>javax.faces.convert.Converter</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <value-expression-enabled>true</value-expression-enabled>
       </property-extension>
     </property>
     <property>
       <description>
-          The language code of the resource designated
-          by this hyperlink.
+          For output components, this is the same as the "value" property.
+          For input components, this is the most recently user-entered
+          value, which will be pushed to the application data model during
+          Update Model Values phase, if a value binding is present for the
+          "value" property.
         </description>
-      <display-name>Language</display-name>
+      <display-name>Local Value</display-name>
       <icon/>
-      <property-name>hreflang</property-name>
-      <property-class>java.lang.String</property-class>
+      <property-name>localValue</property-name>
+      <property-class>java.lang.Object</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <tag-attribute>false</tag-attribute>
       </property-extension>
     </property>
     <property>
       <description>
-          The relationship from the current document
-          to the anchor specified by this hyperlink.
-          The value of this attribute is a space-separated
-          list of link types.
+          The current value of this component.
         </description>
-      <display-name>Relationship</display-name>
+      <display-name>Value</display-name>
       <icon/>
-      <property-name>rel</property-name>
-      <property-class>java.lang.String</property-class>
+      <property-name>value</property-name>
+      <property-class>java.lang.Object</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <value-expression-enabled>true</value-expression-enabled>
       </property-extension>
     </property>
+
+
     <property>
       <description>
-          A reverse link from the anchor specified
-          by this hyperlink to the current document.
-          The value of this attribute is a space-separated
-          list of link types.
+          CSS style(s) to be applied when this component is rendered.
         </description>
-      <display-name>Reverse Link</display-name>
+      <display-name>CSS Styles</display-name>
       <icon/>
-      <property-name>rev</property-name>
+      <property-name>style</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
       <description>
-          The shape of the hot spot on the screen
-          (for use in client-side image maps).  Valid
-          values are:  default (entire region); rect
-          (rectangular region); circle (circular region);
-          and poly (polygonal region).
+          Space-separated list of CSS style class(es) to be applied when
+          this element is rendered.  This value must be passed through
+          as the "class" attribute on generated markup.
         </description>
-      <display-name>Shape</display-name>
+      <display-name>CSS Style Classes</display-name>
       <icon/>
-      <property-name>shape</property-name>
+      <property-name>styleClass</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>false</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
       <description>
-          Name of a frame where the resource
-          retrieved via this hyperlink is to
-          be displayed.
+          Advisory title information about markup elements generated
+          for this component.
         </description>
-      <display-name>Target Frame</display-name>
+      <display-name>Advisory Title</display-name>
       <icon/>
-      <property-name>target</property-name>
+      <property-name>title</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>false</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
-      <description>
-          The content type of the resource designated
-          by this hyperlink.
-        </description>
-      <display-name>Content Type</display-name>
+      <description><![CDATA[
+          <p class="changed_added_2_2">Per the WAI-ARIA spec and its
+          relationship to HTML5 (Section title ARIA Role Attriubute),
+          every HTML element may have a "role" attribute whose value
+          must be passed through unmodified on the element on which it
+          is declared in the final rendered markup.  The attribute, if
+          specified, must have a value that is a string literal that is,
+          or an EL Expression that evaluates to, a set of
+          space-separated tokens representing the various WAI-ARIA roles
+          that the element belongs to.
+          </p>
+
+          <p class="changed_added_2_2">It is the page author's
+          responsibility to ensure that the user agent is capable of
+          correctly interpreting the value of this attribute.</p>]]></description>
+      <display-name>ARIA role</display-name>
       <icon/>
-      <property-name>type</property-name>
+      <property-name>role</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
-      </property-extension>
-    </property>
-    <property>
-      <description>
-          Flag indicating that this element must never
-          receive focus or be included in a subsequent
-          submit.
-        </description>
-      <display-name>Disabled Flag</display-name>
-      <icon/>
-      <property-name>disabled</property-name>
-      <property-class>boolean</property-class>
-      <property-extension>
-        <pass-through>false</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
+
+
     <property>
       <description>
           Javascript code executed when a pointer button is
@@ -12489,10 +13051,8 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onclick</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>false</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
-        <behavior>action</behavior>
-        <default-behavior>true</default-behavior>
       </property-extension>
     </property>
     <property>
@@ -12505,7 +13065,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>ondblclick</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -12519,7 +13079,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onmousedown</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -12533,7 +13093,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onmouseup</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -12547,7 +13107,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onmouseover</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -12561,7 +13121,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onmousemove</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -12575,7 +13135,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onmouseout</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -12589,7 +13149,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onkeypress</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -12603,7 +13163,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onkeydown</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -12617,7 +13177,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onkeyup</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -12625,30 +13185,130 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
 
     <property>
       <description>
-          The identifier of the page fragment which should
-          be brought into focus when the target page is
-          rendered. The value of this attribute is appended
-          to the end of target URL following a hash (#) mark.
-          This notation is part of the standard URL syntax.
+          Access key that, when pressed, transfers focus
+          to this element.
         </description>
-      <display-name>Fragment Identifier</display-name>
+      <display-name>Access Key</display-name>
       <icon/>
-      <property-name>fragment</property-name>
+      <property-name>accesskey</property-name>
       <property-class>java.lang.String</property-class>
+      <property-extension>
+        <ignored-by-renderer>true</ignored-by-renderer>
+      </property-extension>
     </property>
-
-    <component-extension>
-      <base-component-type>javax.faces.Output</base-component-type>
-      <renderer-type>javax.faces.Link</renderer-type>
-    </component-extension>
-  </component>
-  <component>
+    <property>
+      <description>
+          Javascript code executed when this element loses focus.
+        </description>
+      <display-name>Focus Off Script</display-name>
+      <icon/>
+      <property-name>onblur</property-name>
+      <property-class>java.lang.String</property-class>
+      <property-extension>
+        <ignored-by-renderer>true</ignored-by-renderer>
+        <behavior/>
+      </property-extension>
+    </property>
+    <property>
+      <description>
+          Javascript code executed when this element receives focus.
+        </description>
+      <display-name>Focus On Script</display-name>
+      <icon/>
+      <property-name>onfocus</property-name>
+      <property-class>java.lang.String</property-class>
+      <property-extension>
+        <ignored-by-renderer>true</ignored-by-renderer>
+        <behavior/>
+      </property-extension>
+    </property>
+    <property>
+      <description>
+          Position of this element in the tabbing order
+          for the current document.  This value must be
+          an integer between 0 and 32767.
+        </description>
+      <display-name>Tab Index</display-name>
+      <icon/>
+      <property-name>tabindex</property-name>
+      <property-class>java.lang.String</property-class>
+      <property-extension>
+        <ignored-by-renderer>true</ignored-by-renderer>
+      </property-extension>
+    </property>
+
+
+    <property>
+      <description>
+          Direction indication for text that does not inherit directionality.
+          Valid values are "LTR" (left-to-right) and "RTL" (right-to-left).
+          These attributes are case sensitive when rendering to XHTML, so
+          care must be taken to have the correct case.
+        </description>
+      <display-name>Direction</display-name>
+      <icon/>
+      <property-name>dir</property-name>
+      <property-class>java.lang.String</property-class>
+      <property-extension>
+        <ignored-by-renderer>true</ignored-by-renderer>
+      </property-extension>
+    </property>
+    <property>
+      <description>
+          Code describing the language used in the generated markup
+          for this component.
+        </description>
+      <display-name>Language Code</display-name>
+      <icon/>
+      <property-name>lang</property-name>
+      <property-class>java.lang.String</property-class>
+      <property-extension>
+        <ignored-by-renderer>true</ignored-by-renderer>
+      </property-extension>
+    </property>
+
+
+    <property>
+      <description>
+        Client identifier of the component for which this element
+        is a label.
+        </description>
+      <display-name>Label For Identifier</display-name>
+      <icon/>
+      <property-name>for</property-name>
+      <property-class>java.lang.String</property-class>
+      <property-extension>
+        <required>false</required>
+      </property-extension>
+    </property>
+    <property>
+      <description>
+        Flag indicating that characters that are sensitive
+        in HTML and XML markup must be escaped.  If omitted, this
+        flag is assumed to be "true".
+        </description>
+      <display-name>Escape Characters</display-name>
+      <icon/>
+      <property-name>escape</property-name>
+      <property-class>boolean</property-class>
+      <property-extension>
+        <default-value>true</default-value>
+        <value-expression-enabled>true</value-expression-enabled>
+      </property-extension>
+    </property>
+
+    <component-extension>
+      <base-component-type>javax.faces.Output</base-component-type>
+      <renderer-type>javax.faces.Label</renderer-type>
+    </component-extension>
+  </component>
+  <component>
     <description><![CDATA[<p>Represents an HTML <code>a</code> (hyperlink) element that may be
-      used to link to a URL handled by the Faces Servlet resolved preemptively using the logical
-      outcome defined by the <code>outcome</code> property.]]></description>
-    <display-name>Outcome Target Hyperlink</display-name>
-    <component-type>javax.faces.HtmlOutcomeTargetLink</component-type>
-    <component-class>javax.faces.component.html.HtmlOutcomeTargetLink</component-class>
+      used to link to an arbitrary URL defined by the <code>value</code>
+      property.</p>]]></description>
+    <display-name>Output Hyperlink</display-name>
+    <component-type>javax.faces.HtmlOutputLink</component-type>
+    <component-class>javax.faces.component.html.HtmlOutputLink</component-class>
 
     <property>
       <description><![CDATA[
@@ -12828,42 +13488,6 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <value-expression-enabled>true</value-expression-enabled>
       </property-extension>
     </property>
-    <property>
-      <description>
-          The logical outcome used to resolve a navigation case.
-        </description>
-      <display-name>Outcome</display-name>
-      <icon/>
-      <property-name>outcome</property-name>
-      <property-class>java.lang.String</property-class>
-      <property-extension>
-        <value-expression-enabled>true</value-expression-enabled>
-      </property-extension>
-    </property>
-    <property>
-      <description>
-          Whether to include page parameters in the target URI.
-        </description>
-      <display-name>Include Page Parameters</display-name>
-      <icon/>
-      <property-name>includeViewParams</property-name>
-      <property-class>java.lang.Boolean</property-class>
-      <property-extension>
-        <value-expression-enabled>true</value-expression-enabled>
-      </property-extension>
-    </property>
-    <property>
-      <description>
-          Return the URI fragment, as specified in RFC 2396.
-        </description>
-      <display-name>HTML Fragment</display-name>
-      <icon/>
-      <property-name>fragment</property-name>
-      <property-class>java.lang.String</property-class>
-      <property-extension>
-        <value-expression-enabled>true</value-expression-enabled>
-      </property-extension>
-    </property>
 
 
     <property>
@@ -12875,7 +13499,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>style</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -12889,7 +13513,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>styleClass</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>false</pass-through>
+        <ignored-by-renderer>false</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -12902,166 +13526,334 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>title</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
-
-
     <property>
-      <description>
-          Access key that, when pressed, transfers focus
-          to this element.
-        </description>
-      <display-name>Access Key</display-name>
+      <description><![CDATA[
+          <p class="changed_added_2_2">Per the WAI-ARIA spec and its
+          relationship to HTML5 (Section title ARIA Role Attriubute),
+          every HTML element may have a "role" attribute whose value
+          must be passed through unmodified on the element on which it
+          is declared in the final rendered markup.  The attribute, if
+          specified, must have a value that is a string literal that is,
+          or an EL Expression that evaluates to, a set of
+          space-separated tokens representing the various WAI-ARIA roles
+          that the element belongs to.
+          </p>
+
+          <p class="changed_added_2_2">It is the page author's
+          responsibility to ensure that the user agent is capable of
+          correctly interpreting the value of this attribute.</p>]]></description>
+      <display-name>ARIA role</display-name>
       <icon/>
-      <property-name>accesskey</property-name>
+      <property-name>role</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
+
+
     <property>
       <description>
-          Javascript code executed when this element loses focus.
+          Javascript code executed when a pointer button is
+          clicked over this element.
         </description>
-      <display-name>Focus Off Script</display-name>
+      <display-name>Button Click Script</display-name>
       <icon/>
-      <property-name>onblur</property-name>
+      <property-name>onclick</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
     <property>
       <description>
-          Javascript code executed when this element receives focus.
+          Javascript code executed when a pointer button is
+          double clicked over this element.
         </description>
-      <display-name>Focus On Script</display-name>
+      <display-name>Double Click Script</display-name>
       <icon/>
-      <property-name>onfocus</property-name>
+      <property-name>ondblclick</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
     <property>
       <description>
-          Position of this element in the tabbing order
-          for the current document.  This value must be
-          an integer between 0 and 32767.
+          Javascript code executed when a pointer button is
+          pressed down over this element.
         </description>
-      <display-name>Tab Index</display-name>
+      <display-name>Mouse Down Script</display-name>
       <icon/>
-      <property-name>tabindex</property-name>
+      <property-name>onmousedown</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
+        <behavior/>
       </property-extension>
     </property>
-
-
     <property>
       <description>
-          Direction indication for text that does not inherit directionality.
-          Valid values are "LTR" (left-to-right) and "RTL" (right-to-left).
+          Javascript code executed when a pointer button is
+          released over this element.
         </description>
-      <display-name>Direction</display-name>
+      <display-name>Mouse Up Script</display-name>
       <icon/>
-      <property-name>dir</property-name>
+      <property-name>onmouseup</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
+        <behavior/>
       </property-extension>
     </property>
     <property>
       <description>
-          Code describing the language used in the generated markup
-          for this component.
+          Javascript code executed when a pointer button is
+          moved onto this element.
         </description>
-      <display-name>Language Code</display-name>
+      <display-name>Mouse Over Script</display-name>
       <icon/>
-      <property-name>lang</property-name>
+      <property-name>onmouseover</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
+        <behavior/>
       </property-extension>
     </property>
-
-
     <property>
       <description>
-          The character encoding of the resource designated
-          by this hyperlink.
+          Javascript code executed when a pointer button is
+          moved within this element.
         </description>
-      <display-name>Character Set</display-name>
+      <display-name>Mouse Move Script</display-name>
       <icon/>
-      <property-name>charset</property-name>
+      <property-name>onmousemove</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
+        <behavior/>
       </property-extension>
     </property>
     <property>
       <description>
-          The position and shape of the hot spot on the screen
-          (for use in client-side image maps).
+          Javascript code executed when a pointer button is
+          moved away from this element.
         </description>
-      <display-name>Coordinates</display-name>
+      <display-name>Mouse Out Script</display-name>
       <icon/>
-      <property-name>coords</property-name>
+      <property-name>onmouseout</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
+        <behavior/>
       </property-extension>
     </property>
     <property>
       <description>
-          The language code of the resource designated
-          by this hyperlink.
+          Javascript code executed when a key is
+          pressed and released over this element.
         </description>
-      <display-name>Language</display-name>
+      <display-name>Key Press Script</display-name>
       <icon/>
-      <property-name>hreflang</property-name>
+      <property-name>onkeypress</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
+        <behavior/>
       </property-extension>
     </property>
     <property>
       <description>
-          The relationship from the current document
-          to the anchor specified by this hyperlink.
-          The value of this attribute is a space-separated
-          list of link types.
+          Javascript code executed when a key is
+          pressed down over this element.
         </description>
-      <display-name>Relationship</display-name>
+      <display-name>Key Down Script</display-name>
       <icon/>
-      <property-name>rel</property-name>
+      <property-name>onkeydown</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
+        <behavior/>
       </property-extension>
     </property>
     <property>
       <description>
-          A reverse link from the anchor specified
-          by this hyperlink to the current document.
-          The value of this attribute is a space-separated
-          list of link types.
+          Javascript code executed when a key is
+          released over this element.
         </description>
-      <display-name>Reverse Link</display-name>
+      <display-name>Key Up Script</display-name>
       <icon/>
-      <property-name>rev</property-name>
+      <property-name>onkeyup</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
+        <behavior/>
       </property-extension>
     </property>
+
+
     <property>
       <description>
-          The shape of the hot spot on the screen
+          Access key that, when pressed, transfers focus
+          to this element.
+        </description>
+      <display-name>Access Key</display-name>
+      <icon/>
+      <property-name>accesskey</property-name>
+      <property-class>java.lang.String</property-class>
+      <property-extension>
+        <ignored-by-renderer>true</ignored-by-renderer>
+      </property-extension>
+    </property>
+    <property>
+      <description>
+          Javascript code executed when this element loses focus.
+        </description>
+      <display-name>Focus Off Script</display-name>
+      <icon/>
+      <property-name>onblur</property-name>
+      <property-class>java.lang.String</property-class>
+      <property-extension>
+        <ignored-by-renderer>true</ignored-by-renderer>
+        <behavior/>
+      </property-extension>
+    </property>
+    <property>
+      <description>
+          Javascript code executed when this element receives focus.
+        </description>
+      <display-name>Focus On Script</display-name>
+      <icon/>
+      <property-name>onfocus</property-name>
+      <property-class>java.lang.String</property-class>
+      <property-extension>
+        <ignored-by-renderer>true</ignored-by-renderer>
+        <behavior/>
+      </property-extension>
+    </property>
+    <property>
+      <description>
+          Position of this element in the tabbing order
+          for the current document.  This value must be
+          an integer between 0 and 32767.
+        </description>
+      <display-name>Tab Index</display-name>
+      <icon/>
+      <property-name>tabindex</property-name>
+      <property-class>java.lang.String</property-class>
+      <property-extension>
+        <ignored-by-renderer>true</ignored-by-renderer>
+      </property-extension>
+    </property>
+
+
+    <property>
+      <description>
+          Direction indication for text that does not inherit directionality.
+          Valid values are "LTR" (left-to-right) and "RTL" (right-to-left).
+          These attributes are case sensitive when rendering to XHTML, so
+          care must be taken to have the correct case.
+        </description>
+      <display-name>Direction</display-name>
+      <icon/>
+      <property-name>dir</property-name>
+      <property-class>java.lang.String</property-class>
+      <property-extension>
+        <ignored-by-renderer>true</ignored-by-renderer>
+      </property-extension>
+    </property>
+    <property>
+      <description>
+          Code describing the language used in the generated markup
+          for this component.
+        </description>
+      <display-name>Language Code</display-name>
+      <icon/>
+      <property-name>lang</property-name>
+      <property-class>java.lang.String</property-class>
+      <property-extension>
+        <ignored-by-renderer>true</ignored-by-renderer>
+      </property-extension>
+    </property>
+
+
+    <property>
+      <description>
+          The character encoding of the resource designated
+          by this hyperlink.
+        </description>
+      <display-name>Character Set</display-name>
+      <icon/>
+      <property-name>charset</property-name>
+      <property-class>java.lang.String</property-class>
+      <property-extension>
+        <ignored-by-renderer>true</ignored-by-renderer>
+      </property-extension>
+    </property>
+    <property>
+      <description>
+          The position and shape of the hot spot on the screen
+          (for use in client-side image maps).
+        </description>
+      <display-name>Coordinates</display-name>
+      <icon/>
+      <property-name>coords</property-name>
+      <property-class>java.lang.String</property-class>
+      <property-extension>
+        <ignored-by-renderer>true</ignored-by-renderer>
+      </property-extension>
+    </property>
+    <property>
+      <description>
+          The language code of the resource designated
+          by this hyperlink.
+        </description>
+      <display-name>Language</display-name>
+      <icon/>
+      <property-name>hreflang</property-name>
+      <property-class>java.lang.String</property-class>
+      <property-extension>
+        <ignored-by-renderer>true</ignored-by-renderer>
+      </property-extension>
+    </property>
+    <property>
+      <description>
+          The relationship from the current document
+          to the anchor specified by this hyperlink.
+          The value of this attribute is a space-separated
+          list of link types.
+        </description>
+      <display-name>Relationship</display-name>
+      <icon/>
+      <property-name>rel</property-name>
+      <property-class>java.lang.String</property-class>
+      <property-extension>
+        <ignored-by-renderer>true</ignored-by-renderer>
+      </property-extension>
+    </property>
+    <property>
+      <description>
+          A reverse link from the anchor specified
+          by this hyperlink to the current document.
+          The value of this attribute is a space-separated
+          list of link types.
+        </description>
+      <display-name>Reverse Link</display-name>
+      <icon/>
+      <property-name>rev</property-name>
+      <property-class>java.lang.String</property-class>
+      <property-extension>
+        <ignored-by-renderer>true</ignored-by-renderer>
+      </property-extension>
+    </property>
+    <property>
+      <description>
+          The shape of the hot spot on the screen
           (for use in client-side image maps).  Valid
           values are:  default (entire region); rect
           (rectangular region); circle (circular region);
@@ -13072,7 +13864,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>shape</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -13086,7 +13878,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>target</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>false</pass-through>
+        <ignored-by-renderer>false</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -13099,7 +13891,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>type</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -13113,7 +13905,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>disabled</property-name>
       <property-class>boolean</property-class>
       <property-extension>
-        <pass-through>false</pass-through>
+        <ignored-by-renderer>false</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -13126,7 +13918,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onclick</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>false</pass-through>
+        <ignored-by-renderer>false</ignored-by-renderer>
         <behavior/>
         <behavior>action</behavior>
         <default-behavior>true</default-behavior>
@@ -13142,7 +13934,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>ondblclick</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -13156,7 +13948,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onmousedown</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -13170,7 +13962,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onmouseup</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -13184,7 +13976,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onmouseover</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -13198,7 +13990,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onmousemove</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -13212,7 +14004,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onmouseout</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -13226,7 +14018,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onkeypress</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -13240,7 +14032,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onkeydown</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -13254,7 +14046,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onkeyup</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -13275,19 +14067,17 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
     </property>
 
     <component-extension>
-      <base-component-type>javax.faces.OutcomeTarget</base-component-type>
+      <base-component-type>javax.faces.Output</base-component-type>
       <renderer-type>javax.faces.Link</renderer-type>
     </component-extension>
   </component>
   <component>
-    <description><![CDATA[<p>Represents an HTML <code>input</code> element of type "button" or image that
-            may be used to link to a URL handled by the Faces Servlet resolved preemptively using
-            the logical outcome defined by the <code>outcome</code> property. The button behaves like
-            a link, so the current form is not submitted when it is activated (the transitive of how
-            the UICommandLink behaves like a submit button).]]></description>
-    <display-name>Outcome Target Button</display-name>
-    <component-type>javax.faces.HtmlOutcomeTargetButton</component-type>
-    <component-class>javax.faces.component.html.HtmlOutcomeTargetButton</component-class>
+    <description><![CDATA[<p>Represents an HTML <code>a</code> (hyperlink) element that may be
+      used to link to a URL handled by the Faces Servlet resolved preemptively using the logical
+      outcome defined by the <code>outcome</code> property.]]></description>
+    <display-name>Outcome Target Hyperlink</display-name>
+    <component-type>javax.faces.HtmlOutcomeTargetLink</component-type>
+    <component-class>javax.faces.component.html.HtmlOutcomeTargetLink</component-class>
 
     <property>
       <description><![CDATA[
@@ -13514,7 +14304,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>style</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -13528,7 +14318,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>styleClass</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>false</pass-through>
+        <ignored-by-renderer>false</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -13541,7 +14331,31 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>title</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
+      </property-extension>
+    </property>
+    <property>
+      <description><![CDATA[
+          <p class="changed_added_2_2">Per the WAI-ARIA spec and its
+          relationship to HTML5 (Section title ARIA Role Attriubute),
+          every HTML element may have a "role" attribute whose value
+          must be passed through unmodified on the element on which it
+          is declared in the final rendered markup.  The attribute, if
+          specified, must have a value that is a string literal that is,
+          or an EL Expression that evaluates to, a set of
+          space-separated tokens representing the various WAI-ARIA roles
+          that the element belongs to.
+          </p>
+
+          <p class="changed_added_2_2">It is the page author's
+          responsibility to ensure that the user agent is capable of
+          correctly interpreting the value of this attribute.</p>]]></description>
+      <display-name>ARIA role</display-name>
+      <icon/>
+      <property-name>role</property-name>
+      <property-class>java.lang.String</property-class>
+      <property-extension>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
 
@@ -13556,7 +14370,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>accesskey</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -13568,7 +14382,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onblur</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -13581,7 +14395,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onfocus</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -13596,7 +14410,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>tabindex</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
 
@@ -13605,13 +14419,15 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <description>
           Direction indication for text that does not inherit directionality.
           Valid values are "LTR" (left-to-right) and "RTL" (right-to-left).
+          These attributes are case sensitive when rendering to XHTML, so
+          care must be taken to have the correct case.
         </description>
       <display-name>Direction</display-name>
       <icon/>
       <property-name>dir</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -13624,189 +14440,278 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>lang</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
 
 
     <property>
       <description>
-          Javascript code executed when a pointer button is
-          clicked over this element.
+          The character encoding of the resource designated
+          by this hyperlink.
         </description>
-      <display-name>Button Click Script</display-name>
+      <display-name>Character Set</display-name>
       <icon/>
-      <property-name>onclick</property-name>
+      <property-name>charset</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
-        <behavior/>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
       <description>
-          Javascript code executed when a pointer button is
-          double clicked over this element.
+          The position and shape of the hot spot on the screen
+          (for use in client-side image maps).
         </description>
-      <display-name>Double Click Script</display-name>
+      <display-name>Coordinates</display-name>
       <icon/>
-      <property-name>ondblclick</property-name>
+      <property-name>coords</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
-        <behavior/>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
       <description>
-          Javascript code executed when a pointer button is
-          pressed down over this element.
+          The language code of the resource designated
+          by this hyperlink.
         </description>
-      <display-name>Mouse Down Script</display-name>
+      <display-name>Language</display-name>
       <icon/>
-      <property-name>onmousedown</property-name>
+      <property-name>hreflang</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
-        <behavior/>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
       <description>
-          Javascript code executed when a pointer button is
-          released over this element.
+          The relationship from the current document
+          to the anchor specified by this hyperlink.
+          The value of this attribute is a space-separated
+          list of link types.
         </description>
-      <display-name>Mouse Up Script</display-name>
+      <display-name>Relationship</display-name>
       <icon/>
-      <property-name>onmouseup</property-name>
+      <property-name>rel</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
-        <behavior/>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
       <description>
-          Javascript code executed when a pointer button is
-          moved onto this element.
+          A reverse link from the anchor specified
+          by this hyperlink to the current document.
+          The value of this attribute is a space-separated
+          list of link types.
         </description>
-      <display-name>Mouse Over Script</display-name>
+      <display-name>Reverse Link</display-name>
       <icon/>
-      <property-name>onmouseover</property-name>
+      <property-name>rev</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
-        <behavior/>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
       <description>
-          Javascript code executed when a pointer button is
-          moved within this element.
+          The shape of the hot spot on the screen
+          (for use in client-side image maps).  Valid
+          values are:  default (entire region); rect
+          (rectangular region); circle (circular region);
+          and poly (polygonal region).
         </description>
-      <display-name>Mouse Move Script</display-name>
+      <display-name>Shape</display-name>
       <icon/>
-      <property-name>onmousemove</property-name>
+      <property-name>shape</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
-        <behavior/>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
       <description>
-          Javascript code executed when a pointer button is
-          moved away from this element.
+          Name of a frame where the resource
+          retrieved via this hyperlink is to
+          be displayed.
         </description>
-      <display-name>Mouse Out Script</display-name>
+      <display-name>Target Frame</display-name>
       <icon/>
-      <property-name>onmouseout</property-name>
+      <property-name>target</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
-        <behavior/>
+        <ignored-by-renderer>false</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
       <description>
-          Javascript code executed when a key is
-          pressed and released over this element.
+          The content type of the resource designated
+          by this hyperlink.
         </description>
-      <display-name>Key Press Script</display-name>
+      <display-name>Content Type</display-name>
       <icon/>
-      <property-name>onkeypress</property-name>
+      <property-name>type</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
-        <behavior/>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
       <description>
-          Javascript code executed when a key is
-          pressed down over this element.
+          Flag indicating that this element must never
+          receive focus or be included in a subsequent
+          submit.
         </description>
-      <display-name>Key Down Script</display-name>
+      <display-name>Disabled Flag</display-name>
       <icon/>
-      <property-name>onkeydown</property-name>
-      <property-class>java.lang.String</property-class>
-      <property-extension>
-        <pass-through>true</pass-through>
+      <property-name>disabled</property-name>
+      <property-class>boolean</property-class>
+      <property-extension>
+        <ignored-by-renderer>false</ignored-by-renderer>
+      </property-extension>
+    </property>
+    <property>
+      <description>
+          Javascript code executed when a pointer button is
+          clicked over this element.
+        </description>
+      <display-name>Button Click Script</display-name>
+      <icon/>
+      <property-name>onclick</property-name>
+      <property-class>java.lang.String</property-class>
+      <property-extension>
+        <ignored-by-renderer>false</ignored-by-renderer>
+        <behavior/>
+        <behavior>action</behavior>
+        <default-behavior>true</default-behavior>
+      </property-extension>
+    </property>
+    <property>
+      <description>
+          Javascript code executed when a pointer button is
+          double clicked over this element.
+        </description>
+      <display-name>Double Click Script</display-name>
+      <icon/>
+      <property-name>ondblclick</property-name>
+      <property-class>java.lang.String</property-class>
+      <property-extension>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
     <property>
       <description>
-          Javascript code executed when a key is
+          Javascript code executed when a pointer button is
+          pressed down over this element.
+        </description>
+      <display-name>Mouse Down Script</display-name>
+      <icon/>
+      <property-name>onmousedown</property-name>
+      <property-class>java.lang.String</property-class>
+      <property-extension>
+        <ignored-by-renderer>true</ignored-by-renderer>
+        <behavior/>
+      </property-extension>
+    </property>
+    <property>
+      <description>
+          Javascript code executed when a pointer button is
           released over this element.
         </description>
-      <display-name>Key Up Script</display-name>
+      <display-name>Mouse Up Script</display-name>
       <icon/>
-      <property-name>onkeyup</property-name>
+      <property-name>onmouseup</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
-
-
     <property>
       <description>
-        Alternate textual description of the
-        element rendered by this component.
-      </description>
-      <display-name>Alternate Text</display-name>
+          Javascript code executed when a pointer button is
+          moved onto this element.
+        </description>
+      <display-name>Mouse Over Script</display-name>
       <icon/>
-      <property-name>alt</property-name>
+      <property-name>onmouseover</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
+        <behavior/>
       </property-extension>
     </property>
     <property>
-      <description><![CDATA[<p>
-        Absolute or relative URL of the
-        image to be displayed for this
-        button.  If specified, this
-        "input" element will be of type
-        "image".  Otherwise, it will be
-        of the type specified by the
-        "type" property with a label
-        specified by the "value"
-        property.  <span
-        class="changed_added_2_0">Note
-        that if the value of this
-        attribute starts with "/", the
-        rendered value for this
-        attribute will be prefixed with
-        the context-root for this
-        application.</span>
-      </p>]]></description>
-      <display-name>Image URL</display-name>
+      <description>
+          Javascript code executed when a pointer button is
+          moved within this element.
+        </description>
+      <display-name>Mouse Move Script</display-name>
       <icon/>
-      <property-name>image</property-name>
+      <property-name>onmousemove</property-name>
+      <property-class>java.lang.String</property-class>
+      <property-extension>
+        <ignored-by-renderer>true</ignored-by-renderer>
+        <behavior/>
+      </property-extension>
+    </property>
+    <property>
+      <description>
+          Javascript code executed when a pointer button is
+          moved away from this element.
+        </description>
+      <display-name>Mouse Out Script</display-name>
+      <icon/>
+      <property-name>onmouseout</property-name>
+      <property-class>java.lang.String</property-class>
+      <property-extension>
+        <ignored-by-renderer>true</ignored-by-renderer>
+        <behavior/>
+      </property-extension>
+    </property>
+    <property>
+      <description>
+          Javascript code executed when a key is
+          pressed and released over this element.
+        </description>
+      <display-name>Key Press Script</display-name>
+      <icon/>
+      <property-name>onkeypress</property-name>
+      <property-class>java.lang.String</property-class>
+      <property-extension>
+        <ignored-by-renderer>true</ignored-by-renderer>
+        <behavior/>
+      </property-extension>
+    </property>
+    <property>
+      <description>
+          Javascript code executed when a key is
+          pressed down over this element.
+        </description>
+      <display-name>Key Down Script</display-name>
+      <icon/>
+      <property-name>onkeydown</property-name>
+      <property-class>java.lang.String</property-class>
+      <property-extension>
+        <ignored-by-renderer>true</ignored-by-renderer>
+        <behavior/>
+      </property-extension>
+    </property>
+    <property>
+      <description>
+          Javascript code executed when a key is
+          released over this element.
+        </description>
+      <display-name>Key Up Script</display-name>
+      <icon/>
+      <property-name>onkeyup</property-name>
       <property-class>java.lang.String</property-class>
+      <property-extension>
+        <ignored-by-renderer>true</ignored-by-renderer>
+        <behavior/>
+      </property-extension>
     </property>
 
 
@@ -13826,16 +14731,18 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
 
     <component-extension>
       <base-component-type>javax.faces.OutcomeTarget</base-component-type>
-      <renderer-type>javax.faces.Button</renderer-type>
+      <renderer-type>javax.faces.Link</renderer-type>
     </component-extension>
   </component>
   <component>
-    <description><![CDATA[<p>Renders the component value as text, optionally wrapping in a
-      <code>span</code> element if I18N attributes, CSS styles or style
-      classes are specified.</p>]]></description>
-    <display-name>Output Text</display-name>
-    <component-type>javax.faces.HtmlOutputText</component-type>
-    <component-class>javax.faces.component.html.HtmlOutputText</component-class>
+    <description><![CDATA[<p>Represents an HTML <code>input</code> element of type "button" or image that
+            may be used to link to a URL handled by the Faces Servlet resolved preemptively using
+            the logical outcome defined by the <code>outcome</code> property. The button behaves like
+            a link, so the current form is not submitted when it is activated (the transitive of how
+            the UICommandLink behaves like a submit button).]]></description>
+    <display-name>Outcome Target Button</display-name>
+    <component-type>javax.faces.HtmlOutcomeTargetButton</component-type>
+    <component-class>javax.faces.component.html.HtmlOutcomeTargetButton</component-class>
 
     <property>
       <description><![CDATA[
@@ -14015,6 +14922,42 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <value-expression-enabled>true</value-expression-enabled>
       </property-extension>
     </property>
+    <property>
+      <description>
+          The logical outcome used to resolve a navigation case.
+        </description>
+      <display-name>Outcome</display-name>
+      <icon/>
+      <property-name>outcome</property-name>
+      <property-class>java.lang.String</property-class>
+      <property-extension>
+        <value-expression-enabled>true</value-expression-enabled>
+      </property-extension>
+    </property>
+    <property>
+      <description>
+          Whether to include page parameters in the target URI.
+        </description>
+      <display-name>Include Page Parameters</display-name>
+      <icon/>
+      <property-name>includeViewParams</property-name>
+      <property-class>java.lang.Boolean</property-class>
+      <property-extension>
+        <value-expression-enabled>true</value-expression-enabled>
+      </property-extension>
+    </property>
+    <property>
+      <description>
+          Return the URI fragment, as specified in RFC 2396.
+        </description>
+      <display-name>HTML Fragment</display-name>
+      <icon/>
+      <property-name>fragment</property-name>
+      <property-class>java.lang.String</property-class>
+      <property-extension>
+        <value-expression-enabled>true</value-expression-enabled>
+      </property-extension>
+    </property>
 
 
     <property>
@@ -14026,7 +14969,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>style</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -14040,7 +14983,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>styleClass</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>false</pass-through>
+        <ignored-by-renderer>false</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -14053,23 +14996,86 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>title</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
+      </property-extension>
+    </property>
+    <property>
+      <description><![CDATA[
+          <p class="changed_added_2_2">Per the WAI-ARIA spec and its
+          relationship to HTML5 (Section title ARIA Role Attriubute),
+          every HTML element may have a "role" attribute whose value
+          must be passed through unmodified on the element on which it
+          is declared in the final rendered markup.  The attribute, if
+          specified, must have a value that is a string literal that is,
+          or an EL Expression that evaluates to, a set of
+          space-separated tokens representing the various WAI-ARIA roles
+          that the element belongs to.
+          </p>
+
+          <p class="changed_added_2_2">It is the page author's
+          responsibility to ensure that the user agent is capable of
+          correctly interpreting the value of this attribute.</p>]]></description>
+      <display-name>ARIA role</display-name>
+      <icon/>
+      <property-name>role</property-name>
+      <property-class>java.lang.String</property-class>
+      <property-extension>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
 
 
     <property>
       <description>
-        Flag indicating that characters that are sensitive
-        in HTML and XML markup must be escaped.  This flag
-        is set to "true" by default.
+          Access key that, when pressed, transfers focus
+          to this element.
         </description>
-      <display-name>Escape Characters</display-name>
+      <display-name>Access Key</display-name>
       <icon/>
-      <property-name>escape</property-name>
-      <property-class>boolean</property-class>
+      <property-name>accesskey</property-name>
+      <property-class>java.lang.String</property-class>
       <property-extension>
-        <default-value>true</default-value>
+        <ignored-by-renderer>true</ignored-by-renderer>
+      </property-extension>
+    </property>
+    <property>
+      <description>
+          Javascript code executed when this element loses focus.
+        </description>
+      <display-name>Focus Off Script</display-name>
+      <icon/>
+      <property-name>onblur</property-name>
+      <property-class>java.lang.String</property-class>
+      <property-extension>
+        <ignored-by-renderer>true</ignored-by-renderer>
+        <behavior/>
+      </property-extension>
+    </property>
+    <property>
+      <description>
+          Javascript code executed when this element receives focus.
+        </description>
+      <display-name>Focus On Script</display-name>
+      <icon/>
+      <property-name>onfocus</property-name>
+      <property-class>java.lang.String</property-class>
+      <property-extension>
+        <ignored-by-renderer>true</ignored-by-renderer>
+        <behavior/>
+      </property-extension>
+    </property>
+    <property>
+      <description>
+          Position of this element in the tabbing order
+          for the current document.  This value must be
+          an integer between 0 and 32767.
+        </description>
+      <display-name>Tab Index</display-name>
+      <icon/>
+      <property-name>tabindex</property-name>
+      <property-class>java.lang.String</property-class>
+      <property-extension>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
 
@@ -14078,13 +15084,15 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <description>
           Direction indication for text that does not inherit directionality.
           Valid values are "LTR" (left-to-right) and "RTL" (right-to-left).
+          These attributes are case sensitive when rendering to XHTML, so
+          care must be taken to have the correct case.
         </description>
       <display-name>Direction</display-name>
       <icon/>
       <property-name>dir</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -14097,21 +15105,218 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>lang</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
 
-    <component-extension>
-      <base-component-type>javax.faces.Output</base-component-type>
-      <renderer-type>javax.faces.Text</renderer-type>
-    </component-extension>
+
+    <property>
+      <description>
+          Javascript code executed when a pointer button is
+          clicked over this element.
+        </description>
+      <display-name>Button Click Script</display-name>
+      <icon/>
+      <property-name>onclick</property-name>
+      <property-class>java.lang.String</property-class>
+      <property-extension>
+        <ignored-by-renderer>true</ignored-by-renderer>
+        <behavior/>
+      </property-extension>
+    </property>
+    <property>
+      <description>
+          Javascript code executed when a pointer button is
+          double clicked over this element.
+        </description>
+      <display-name>Double Click Script</display-name>
+      <icon/>
+      <property-name>ondblclick</property-name>
+      <property-class>java.lang.String</property-class>
+      <property-extension>
+        <ignored-by-renderer>true</ignored-by-renderer>
+        <behavior/>
+      </property-extension>
+    </property>
+    <property>
+      <description>
+          Javascript code executed when a pointer button is
+          pressed down over this element.
+        </description>
+      <display-name>Mouse Down Script</display-name>
+      <icon/>
+      <property-name>onmousedown</property-name>
+      <property-class>java.lang.String</property-class>
+      <property-extension>
+        <ignored-by-renderer>true</ignored-by-renderer>
+        <behavior/>
+      </property-extension>
+    </property>
+    <property>
+      <description>
+          Javascript code executed when a pointer button is
+          released over this element.
+        </description>
+      <display-name>Mouse Up Script</display-name>
+      <icon/>
+      <property-name>onmouseup</property-name>
+      <property-class>java.lang.String</property-class>
+      <property-extension>
+        <ignored-by-renderer>true</ignored-by-renderer>
+        <behavior/>
+      </property-extension>
+    </property>
+    <property>
+      <description>
+          Javascript code executed when a pointer button is
+          moved onto this element.
+        </description>
+      <display-name>Mouse Over Script</display-name>
+      <icon/>
+      <property-name>onmouseover</property-name>
+      <property-class>java.lang.String</property-class>
+      <property-extension>
+        <ignored-by-renderer>true</ignored-by-renderer>
+        <behavior/>
+      </property-extension>
+    </property>
+    <property>
+      <description>
+          Javascript code executed when a pointer button is
+          moved within this element.
+        </description>
+      <display-name>Mouse Move Script</display-name>
+      <icon/>
+      <property-name>onmousemove</property-name>
+      <property-class>java.lang.String</property-class>
+      <property-extension>
+        <ignored-by-renderer>true</ignored-by-renderer>
+        <behavior/>
+      </property-extension>
+    </property>
+    <property>
+      <description>
+          Javascript code executed when a pointer button is
+          moved away from this element.
+        </description>
+      <display-name>Mouse Out Script</display-name>
+      <icon/>
+      <property-name>onmouseout</property-name>
+      <property-class>java.lang.String</property-class>
+      <property-extension>
+        <ignored-by-renderer>true</ignored-by-renderer>
+        <behavior/>
+      </property-extension>
+    </property>
+    <property>
+      <description>
+          Javascript code executed when a key is
+          pressed and released over this element.
+        </description>
+      <display-name>Key Press Script</display-name>
+      <icon/>
+      <property-name>onkeypress</property-name>
+      <property-class>java.lang.String</property-class>
+      <property-extension>
+        <ignored-by-renderer>true</ignored-by-renderer>
+        <behavior/>
+      </property-extension>
+    </property>
+    <property>
+      <description>
+          Javascript code executed when a key is
+          pressed down over this element.
+        </description>
+      <display-name>Key Down Script</display-name>
+      <icon/>
+      <property-name>onkeydown</property-name>
+      <property-class>java.lang.String</property-class>
+      <property-extension>
+        <ignored-by-renderer>true</ignored-by-renderer>
+        <behavior/>
+      </property-extension>
+    </property>
+    <property>
+      <description>
+          Javascript code executed when a key is
+          released over this element.
+        </description>
+      <display-name>Key Up Script</display-name>
+      <icon/>
+      <property-name>onkeyup</property-name>
+      <property-class>java.lang.String</property-class>
+      <property-extension>
+        <ignored-by-renderer>true</ignored-by-renderer>
+        <behavior/>
+      </property-extension>
+    </property>
+
+
+    <property>
+      <description>
+        Alternate textual description of the
+        element rendered by this component.
+      </description>
+      <display-name>Alternate Text</display-name>
+      <icon/>
+      <property-name>alt</property-name>
+      <property-class>java.lang.String</property-class>
+      <property-extension>
+        <ignored-by-renderer>true</ignored-by-renderer>
+      </property-extension>
+    </property>
+    <property>
+      <description><![CDATA[<p>
+        Absolute or relative URL of the
+        image to be displayed for this
+        button.  If specified, this
+        "input" element will be of type
+        "image".  Otherwise, it will be
+        of the type specified by the
+        "type" property with a label
+        specified by the "value"
+        property.  <span
+        class="changed_added_2_0">Note
+        that if the value of this
+        attribute starts with "/", the
+        rendered value for this
+        attribute will be prefixed with
+        the context-root for this
+        application.</span>
+      </p>]]></description>
+      <display-name>Image URL</display-name>
+      <icon/>
+      <property-name>image</property-name>
+      <property-class>java.lang.String</property-class>
+    </property>
+
+
+    <property>
+      <description>
+          The identifier of the page fragment which should
+          be brought into focus when the target page is
+          rendered. The value of this attribute is appended
+          to the end of target URL following a hash (#) mark.
+          This notation is part of the standard URL syntax.
+        </description>
+      <display-name>Fragment Identifier</display-name>
+      <icon/>
+      <property-name>fragment</property-name>
+      <property-class>java.lang.String</property-class>
+    </property>
+
+    <component-extension>
+      <base-component-type>javax.faces.OutcomeTarget</base-component-type>
+      <renderer-type>javax.faces.Button</renderer-type>
+    </component-extension>
   </component>
   <component>
-    <description><![CDATA[<p>Renders child components in a table, starting a new
-      row after the specified number of columns.</p>]]></description>
-    <display-name>Panel Grid</display-name>
-    <component-type>javax.faces.HtmlPanelGrid</component-type>
-    <component-class>javax.faces.component.html.HtmlPanelGrid</component-class>
+    <description><![CDATA[<p>Renders the component value as text, optionally wrapping in a
+      <code>span</code> element if I18N attributes, CSS styles or style
+      classes are specified.</p>]]></description>
+    <display-name>Output Text</display-name>
+    <component-type>javax.faces.HtmlOutputText</component-type>
+    <component-class>javax.faces.component.html.HtmlOutputText</component-class>
 
     <property>
       <description><![CDATA[
@@ -14251,6 +15456,46 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <read-only>true</read-only>
       </property-extension>
     </property>
+    <property>
+      <description>
+          Converter instance registered with this component.
+        </description>
+      <display-name>Converter</display-name>
+      <icon/>
+      <property-name>converter</property-name>
+      <property-class>javax.faces.convert.Converter</property-class>
+      <property-extension>
+        <value-expression-enabled>true</value-expression-enabled>
+      </property-extension>
+    </property>
+    <property>
+      <description>
+          For output components, this is the same as the "value" property.
+          For input components, this is the most recently user-entered
+          value, which will be pushed to the application data model during
+          Update Model Values phase, if a value binding is present for the
+          "value" property.
+        </description>
+      <display-name>Local Value</display-name>
+      <icon/>
+      <property-name>localValue</property-name>
+      <property-class>java.lang.Object</property-class>
+      <property-extension>
+        <tag-attribute>false</tag-attribute>
+      </property-extension>
+    </property>
+    <property>
+      <description>
+          The current value of this component.
+        </description>
+      <display-name>Value</display-name>
+      <icon/>
+      <property-name>value</property-name>
+      <property-class>java.lang.Object</property-class>
+      <property-extension>
+        <value-expression-enabled>true</value-expression-enabled>
+      </property-extension>
+    </property>
 
 
     <property>
@@ -14262,7 +15507,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>style</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -14276,7 +15521,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>styleClass</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>false</pass-through>
+        <ignored-by-renderer>false</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -14289,36 +15534,322 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>title</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
-
-
     <property>
-      <description>
-          Javascript code executed when a pointer button is
-          clicked over this element.
-        </description>
-      <display-name>Button Click Script</display-name>
+      <description><![CDATA[
+          <p class="changed_added_2_2">Per the WAI-ARIA spec and its
+          relationship to HTML5 (Section title ARIA Role Attriubute),
+          every HTML element may have a "role" attribute whose value
+          must be passed through unmodified on the element on which it
+          is declared in the final rendered markup.  The attribute, if
+          specified, must have a value that is a string literal that is,
+          or an EL Expression that evaluates to, a set of
+          space-separated tokens representing the various WAI-ARIA roles
+          that the element belongs to.
+          </p>
+
+          <p class="changed_added_2_2">It is the page author's
+          responsibility to ensure that the user agent is capable of
+          correctly interpreting the value of this attribute.</p>]]></description>
+      <display-name>ARIA role</display-name>
       <icon/>
-      <property-name>onclick</property-name>
+      <property-name>role</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
-        <behavior/>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
+
+
     <property>
       <description>
-          Javascript code executed when a pointer button is
-          double clicked over this element.
-        </description>
+        Flag indicating that characters that are sensitive
+        in HTML and XML markup must be escaped.  This flag
+        is set to "true" by default.
+        </description>
+      <display-name>Escape Characters</display-name>
+      <icon/>
+      <property-name>escape</property-name>
+      <property-class>boolean</property-class>
+      <property-extension>
+        <default-value>true</default-value>
+      </property-extension>
+    </property>
+
+
+    <property>
+      <description>
+          Direction indication for text that does not inherit directionality.
+          Valid values are "LTR" (left-to-right) and "RTL" (right-to-left).
+          These attributes are case sensitive when rendering to XHTML, so
+          care must be taken to have the correct case.
+        </description>
+      <display-name>Direction</display-name>
+      <icon/>
+      <property-name>dir</property-name>
+      <property-class>java.lang.String</property-class>
+      <property-extension>
+        <ignored-by-renderer>true</ignored-by-renderer>
+      </property-extension>
+    </property>
+    <property>
+      <description>
+          Code describing the language used in the generated markup
+          for this component.
+        </description>
+      <display-name>Language Code</display-name>
+      <icon/>
+      <property-name>lang</property-name>
+      <property-class>java.lang.String</property-class>
+      <property-extension>
+        <ignored-by-renderer>true</ignored-by-renderer>
+      </property-extension>
+    </property>
+
+    <component-extension>
+      <base-component-type>javax.faces.Output</base-component-type>
+      <renderer-type>javax.faces.Text</renderer-type>
+    </component-extension>
+  </component>
+  <component>
+    <description><![CDATA[<p>Renders child components in a table, starting a new
+      row after the specified number of columns.</p>]]></description>
+    <display-name>Panel Grid</display-name>
+    <component-type>javax.faces.HtmlPanelGrid</component-type>
+    <component-class>javax.faces.component.html.HtmlPanelGrid</component-class>
+
+    <property>
+      <description><![CDATA[
+          A mutable Map of the attributes associated with
+          this component, keyed by attribute name.
+        ]]></description>
+      <display-name>Attributes Map</display-name>
+      <icon/>
+      <property-name>attributes</property-name>
+      <property-class>java.util.Map</property-class>
+      <property-extension>
+        <tag-attribute>false</tag-attribute>
+        <read-only>true</read-only>
+      </property-extension>
+    </property>
+    <property>
+      <description><![CDATA[
+          The number of child components associated with
+          this component.
+        ]]></description>
+      <display-name>Child Component Count</display-name>
+      <icon/>
+      <property-name>childCount</property-name>
+      <property-class>int</property-class>
+      <property-extension>
+        <tag-attribute>false</tag-attribute>
+        <read-only>true</read-only>
+      </property-extension>
+    </property>
+    <property>
+      <description><![CDATA[
+          A mutable List of the child components associated with
+          this component.
+        ]]></description>
+      <display-name>Child Component List</display-name>
+      <icon/>
+      <property-name>children</property-name>
+      <property-class>java.util.List</property-class>
+      <property-extension>
+        <tag-attribute>false</tag-attribute>
+        <read-only>true</read-only>
+      </property-extension>
+    </property>
+    <property>
+      <description><![CDATA[
+          A mutable Map of the facets associated with
+          this component, keyed by facet name.
+        ]]></description>
+      <display-name>Facets Map</display-name>
+      <icon/>
+      <property-name>facets</property-name>
+      <property-class>java.util.Map</property-class>
+      <property-extension>
+        <tag-attribute>false</tag-attribute>
+        <read-only>true</read-only>
+      </property-extension>
+    </property>
+    <property>
+      <description><![CDATA[
+          The component family to which this component belongs.  This property
+          is used to select an appropriate Renderer.
+        ]]></description>
+      <display-name>Component Family</display-name>
+      <icon/>
+      <property-name>family</property-name>
+      <property-class>java.lang.String</property-class>
+      <property-extension>
+        <tag-attribute>false</tag-attribute>
+        <read-only>true</read-only>
+      </property-extension>
+    </property>
+    <property>
+      <description><![CDATA[
+          The component identifier for this component.  This value must be
+          unique within the closest parent component that is a naming
+          container.
+        ]]></description>
+      <display-name>Component Identifier</display-name>
+      <icon/>
+      <property-name>id</property-name>
+      <property-class>java.lang.String</property-class>
+    </property>
+    <property>
+      <description><![CDATA[
+          The parent component for this component.  On the root component
+          in the component tree (which must be of type UIViewRoot), this
+          property is null.
+        ]]></description>
+      <display-name>Parent Component</display-name>
+      <icon/>
+      <property-name>parent</property-name>
+      <property-class>javax.faces.component.UIComponent</property-class>
+      <property-extension>
+        <tag-attribute>false</tag-attribute>
+        <read-only>true</read-only>
+      </property-extension>
+    </property>
+    <property>
+      <description><![CDATA[
+          Flag indicating whether or not this component should be rendered
+          (during Render Response Phase), or processed on any subsequent
+          form submit.  The default value for this property is true.
+        ]]></description>
+      <display-name>Rendered Flag</display-name>
+      <icon/>
+      <property-name>rendered</property-name>
+      <property-class>boolean</property-class>
+      <property-extension>
+        <value-expression-enabled>true</value-expression-enabled>
+      </property-extension>
+    </property>
+    <property>
+      <description><![CDATA[
+          Identifier used (in conjunction with the "family" property) to
+          select an appropriate Renderer to encode and decode this component.
+        ]]></description>
+      <display-name>Renderer Type</display-name>
+      <icon/>
+      <property-name>rendererType</property-name>
+      <property-class>java.lang.String</property-class>
+      <property-extension>
+        <tag-attribute>false</tag-attribute>
+      </property-extension>
+    </property>
+    <property>
+      <description><![CDATA[
+          Flag indicating whether or not this component takes responsibility
+          for rendering its own children.  This decision is normally delegated
+          to the associated Renderer, if there is one.
+        ]]></description>
+      <display-name>Renders Children</display-name>
+      <icon/>
+      <property-name>rendersChildren</property-name>
+      <property-class>boolean</property-class>
+      <property-extension>
+        <tag-attribute>false</tag-attribute>
+        <read-only>true</read-only>
+      </property-extension>
+    </property>
+
+
+    <property>
+      <description>
+          CSS style(s) to be applied when this component is rendered.
+        </description>
+      <display-name>CSS Styles</display-name>
+      <icon/>
+      <property-name>style</property-name>
+      <property-class>java.lang.String</property-class>
+      <property-extension>
+        <ignored-by-renderer>true</ignored-by-renderer>
+      </property-extension>
+    </property>
+    <property>
+      <description>
+          Space-separated list of CSS style class(es) to be applied when
+          this element is rendered.  This value must be passed through
+          as the "class" attribute on generated markup.
+        </description>
+      <display-name>CSS Style Classes</display-name>
+      <icon/>
+      <property-name>styleClass</property-name>
+      <property-class>java.lang.String</property-class>
+      <property-extension>
+        <ignored-by-renderer>false</ignored-by-renderer>
+      </property-extension>
+    </property>
+    <property>
+      <description>
+          Advisory title information about markup elements generated
+          for this component.
+        </description>
+      <display-name>Advisory Title</display-name>
+      <icon/>
+      <property-name>title</property-name>
+      <property-class>java.lang.String</property-class>
+      <property-extension>
+        <ignored-by-renderer>true</ignored-by-renderer>
+      </property-extension>
+    </property>
+    <property>
+      <description><![CDATA[
+          <p class="changed_added_2_2">Per the WAI-ARIA spec and its
+          relationship to HTML5 (Section title ARIA Role Attriubute),
+          every HTML element may have a "role" attribute whose value
+          must be passed through unmodified on the element on which it
+          is declared in the final rendered markup.  The attribute, if
+          specified, must have a value that is a string literal that is,
+          or an EL Expression that evaluates to, a set of
+          space-separated tokens representing the various WAI-ARIA roles
+          that the element belongs to.
+          </p>
+
+          <p class="changed_added_2_2">It is the page author's
+          responsibility to ensure that the user agent is capable of
+          correctly interpreting the value of this attribute.</p>]]></description>
+      <display-name>ARIA role</display-name>
+      <icon/>
+      <property-name>role</property-name>
+      <property-class>java.lang.String</property-class>
+      <property-extension>
+        <ignored-by-renderer>true</ignored-by-renderer>
+      </property-extension>
+    </property>
+
+
+    <property>
+      <description>
+          Javascript code executed when a pointer button is
+          clicked over this element.
+        </description>
+      <display-name>Button Click Script</display-name>
+      <icon/>
+      <property-name>onclick</property-name>
+      <property-class>java.lang.String</property-class>
+      <property-extension>
+        <ignored-by-renderer>true</ignored-by-renderer>
+        <behavior/>
+      </property-extension>
+    </property>
+    <property>
+      <description>
+          Javascript code executed when a pointer button is
+          double clicked over this element.
+        </description>
       <display-name>Double Click Script</display-name>
       <icon/>
       <property-name>ondblclick</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -14332,7 +15863,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onmousedown</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -14346,7 +15877,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onmouseup</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -14360,7 +15891,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onmouseover</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -14374,7 +15905,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onmousemove</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -14388,7 +15919,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onmouseout</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -14402,7 +15933,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onkeypress</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -14416,7 +15947,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onkeydown</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -14430,7 +15961,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onkeyup</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -14440,13 +15971,15 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <description>
           Direction indication for text that does not inherit directionality.
           Valid values are "LTR" (left-to-right) and "RTL" (right-to-left).
+          These attributes are case sensitive when rendering to XHTML, so
+          care must be taken to have the correct case.
         </description>
       <display-name>Direction</display-name>
       <icon/>
       <property-name>dir</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -14459,7 +15992,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>lang</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
 
@@ -14473,7 +16006,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>bgcolor</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -14486,7 +16019,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>border</property-name>
       <property-class>int</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -14499,7 +16032,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>cellpadding</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -14516,7 +16049,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>cellspacing</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -14562,7 +16095,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>frame</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -14624,7 +16157,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>rules</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -14638,7 +16171,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>summary</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -14650,7 +16183,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>width</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -14834,14 +16367,156 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
 
     <property>
       <description>
-          CSS style(s) to be applied when this component is rendered.
+          Javascript code executed when a pointer button is
+          clicked over this element.
+        </description>
+      <display-name>Button Click Script</display-name>
+      <icon/>
+      <property-name>onclick</property-name>
+      <property-class>java.lang.String</property-class>
+      <property-extension>
+        <ignored-by-renderer>true</ignored-by-renderer>
+        <behavior/>
+      </property-extension>
+    </property>
+    <property>
+      <description>
+          Javascript code executed when a pointer button is
+          double clicked over this element.
+        </description>
+      <display-name>Double Click Script</display-name>
+      <icon/>
+      <property-name>ondblclick</property-name>
+      <property-class>java.lang.String</property-class>
+      <property-extension>
+        <ignored-by-renderer>true</ignored-by-renderer>
+        <behavior/>
+      </property-extension>
+    </property>
+    <property>
+      <description>
+          Javascript code executed when a pointer button is
+          pressed down over this element.
+        </description>
+      <display-name>Mouse Down Script</display-name>
+      <icon/>
+      <property-name>onmousedown</property-name>
+      <property-class>java.lang.String</property-class>
+      <property-extension>
+        <ignored-by-renderer>true</ignored-by-renderer>
+        <behavior/>
+      </property-extension>
+    </property>
+    <property>
+      <description>
+          Javascript code executed when a pointer button is
+          released over this element.
+        </description>
+      <display-name>Mouse Up Script</display-name>
+      <icon/>
+      <property-name>onmouseup</property-name>
+      <property-class>java.lang.String</property-class>
+      <property-extension>
+        <ignored-by-renderer>true</ignored-by-renderer>
+        <behavior/>
+      </property-extension>
+    </property>
+    <property>
+      <description>
+          Javascript code executed when a pointer button is
+          moved onto this element.
+        </description>
+      <display-name>Mouse Over Script</display-name>
+      <icon/>
+      <property-name>onmouseover</property-name>
+      <property-class>java.lang.String</property-class>
+      <property-extension>
+        <ignored-by-renderer>true</ignored-by-renderer>
+        <behavior/>
+      </property-extension>
+    </property>
+    <property>
+      <description>
+          Javascript code executed when a pointer button is
+          moved within this element.
+        </description>
+      <display-name>Mouse Move Script</display-name>
+      <icon/>
+      <property-name>onmousemove</property-name>
+      <property-class>java.lang.String</property-class>
+      <property-extension>
+        <ignored-by-renderer>true</ignored-by-renderer>
+        <behavior/>
+      </property-extension>
+    </property>
+    <property>
+      <description>
+          Javascript code executed when a pointer button is
+          moved away from this element.
+        </description>
+      <display-name>Mouse Out Script</display-name>
+      <icon/>
+      <property-name>onmouseout</property-name>
+      <property-class>java.lang.String</property-class>
+      <property-extension>
+        <ignored-by-renderer>true</ignored-by-renderer>
+        <behavior/>
+      </property-extension>
+    </property>
+    <property>
+      <description>
+          Javascript code executed when a key is
+          pressed and released over this element.
+        </description>
+      <display-name>Key Press Script</display-name>
+      <icon/>
+      <property-name>onkeypress</property-name>
+      <property-class>java.lang.String</property-class>
+      <property-extension>
+        <ignored-by-renderer>true</ignored-by-renderer>
+        <behavior/>
+      </property-extension>
+    </property>
+    <property>
+      <description>
+          Javascript code executed when a key is
+          pressed down over this element.
+        </description>
+      <display-name>Key Down Script</display-name>
+      <icon/>
+      <property-name>onkeydown</property-name>
+      <property-class>java.lang.String</property-class>
+      <property-extension>
+        <ignored-by-renderer>true</ignored-by-renderer>
+        <behavior/>
+      </property-extension>
+    </property>
+    <property>
+      <description>
+          Javascript code executed when a key is
+          released over this element.
+        </description>
+      <display-name>Key Up Script</display-name>
+      <icon/>
+      <property-name>onkeyup</property-name>
+      <property-class>java.lang.String</property-class>
+      <property-extension>
+        <ignored-by-renderer>true</ignored-by-renderer>
+        <behavior/>
+      </property-extension>
+    </property>
+
+
+    <property>
+      <description>
+          CSS style(s) to be applied when this component is rendered.
         </description>
       <display-name>CSS Styles</display-name>
       <icon/>
       <property-name>style</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -14855,7 +16530,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>styleClass</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>false</pass-through>
+        <ignored-by-renderer>false</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -14877,10 +16552,11 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
     </component-extension>
   </component>
   <component>
-    <description><![CDATA[<p>Represents an HTML <code>input</code> element
-      of type <code>checkbox</code>.  The checkbox will
-      be rendered as checked, or not, based on the value
-      of the <code>value</code> property.</p>]]></description>
+    <description><![CDATA[<p><span
+            class="changed_modified_2_0_rev_a">Represents</span> an HTML
+            <code>input</code> element of type <code>checkbox</code>.
+            The checkbox will be rendered as checked, or not, based on
+            the value of the <code>value</code> property.</p>]]></description>
     <display-name>Checkbox</display-name>
     <component-type>javax.faces.HtmlSelectBooleanCheckbox</component-type>
     <component-class>javax.faces.component.html.HtmlSelectBooleanCheckbox</component-class>
@@ -15247,7 +16923,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>style</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -15261,7 +16937,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>styleClass</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>false</pass-through>
+        <ignored-by-renderer>false</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -15274,7 +16950,31 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>title</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
+      </property-extension>
+    </property>
+    <property>
+      <description><![CDATA[
+          <p class="changed_added_2_2">Per the WAI-ARIA spec and its
+          relationship to HTML5 (Section title ARIA Role Attriubute),
+          every HTML element may have a "role" attribute whose value
+          must be passed through unmodified on the element on which it
+          is declared in the final rendered markup.  The attribute, if
+          specified, must have a value that is a string literal that is,
+          or an EL Expression that evaluates to, a set of
+          space-separated tokens representing the various WAI-ARIA roles
+          that the element belongs to.
+          </p>
+
+          <p class="changed_added_2_2">It is the page author's
+          responsibility to ensure that the user agent is capable of
+          correctly interpreting the value of this attribute.</p>]]></description>
+      <display-name>ARIA role</display-name>
+      <icon/>
+      <property-name>role</property-name>
+      <property-class>java.lang.String</property-class>
+      <property-extension>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
 
@@ -15289,7 +16989,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>ondblclick</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -15303,7 +17003,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onmousedown</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -15317,7 +17017,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onmouseup</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -15331,7 +17031,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onmouseover</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -15345,7 +17045,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onmousemove</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -15359,7 +17059,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onmouseout</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -15373,7 +17073,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onkeypress</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -15387,7 +17087,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onkeydown</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -15401,7 +17101,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onkeyup</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -15417,7 +17117,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>accesskey</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -15429,7 +17129,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onblur</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -15442,7 +17142,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onfocus</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -15457,7 +17157,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>tabindex</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
 
@@ -15466,13 +17166,15 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <description>
           Direction indication for text that does not inherit directionality.
           Valid values are "LTR" (left-to-right) and "RTL" (right-to-left).
+          These attributes are case sensitive when rendering to XHTML, so
+          care must be taken to have the correct case.
         </description>
       <display-name>Direction</display-name>
       <icon/>
       <property-name>dir</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -15485,7 +17187,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>lang</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
 
@@ -15502,7 +17204,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>disabled</property-name>
       <property-class>boolean</property-class>
       <property-extension>
-        <pass-through>false</pass-through>
+        <ignored-by-renderer>false</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -15515,7 +17217,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onselect</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -15532,7 +17234,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>readonly</property-name>
       <property-class>boolean</property-class>
       <property-extension>
-        <pass-through>false</pass-through>
+        <ignored-by-renderer>false</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -15559,7 +17261,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onchange</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -15573,7 +17275,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onclick</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>false</pass-through>
+        <ignored-by-renderer>false</ignored-by-renderer>
         <behavior/>
         <behavior>valueChange</behavior>
         <default-behavior>true</default-behavior>
@@ -15586,9 +17288,11 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
     </component-extension>
   </component>
   <component>
-    <description><![CDATA[<p>Represents a multiple-selection component that is rendered
-      as a set of HTML <code>input</code> elements of type
-      <code>checkbox</code>.</p>]]></description>
+    <description><![CDATA[<p><span
+            class="changed_modified_2_0_rev_a">Represents</span> a
+            multiple-selection component that is rendered as a set of
+            HTML <code>input</code> elements of type
+            <code>checkbox</code>.</p>]]></description>
     <display-name>Multi-Select Checkbox</display-name>
     <component-type>javax.faces.HtmlSelectManyCheckbox</component-type>
     <component-class>javax.faces.component.html.HtmlSelectManyCheckbox</component-class>
@@ -15955,7 +17659,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>style</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -15969,7 +17673,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>styleClass</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>false</pass-through>
+        <ignored-by-renderer>false</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -15982,7 +17686,31 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>title</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
+      </property-extension>
+    </property>
+    <property>
+      <description><![CDATA[
+          <p class="changed_added_2_2">Per the WAI-ARIA spec and its
+          relationship to HTML5 (Section title ARIA Role Attriubute),
+          every HTML element may have a "role" attribute whose value
+          must be passed through unmodified on the element on which it
+          is declared in the final rendered markup.  The attribute, if
+          specified, must have a value that is a string literal that is,
+          or an EL Expression that evaluates to, a set of
+          space-separated tokens representing the various WAI-ARIA roles
+          that the element belongs to.
+          </p>
+
+          <p class="changed_added_2_2">It is the page author's
+          responsibility to ensure that the user agent is capable of
+          correctly interpreting the value of this attribute.</p>]]></description>
+      <display-name>ARIA role</display-name>
+      <icon/>
+      <property-name>role</property-name>
+      <property-class>java.lang.String</property-class>
+      <property-extension>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
 
@@ -15997,7 +17725,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>ondblclick</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -16011,7 +17739,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onmousedown</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -16025,7 +17753,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onmouseup</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -16039,7 +17767,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onmouseover</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -16053,7 +17781,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onmousemove</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -16067,7 +17795,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onmouseout</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -16081,7 +17809,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onkeypress</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -16095,7 +17823,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onkeydown</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -16109,7 +17837,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onkeyup</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -16125,7 +17853,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>accesskey</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -16137,7 +17865,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onblur</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -16150,7 +17878,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onfocus</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -16165,7 +17893,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>tabindex</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
 
@@ -16174,13 +17902,15 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <description>
           Direction indication for text that does not inherit directionality.
           Valid values are "LTR" (left-to-right) and "RTL" (right-to-left).
+          These attributes are case sensitive when rendering to XHTML, so
+          care must be taken to have the correct case.
         </description>
       <display-name>Direction</display-name>
       <icon/>
       <property-name>dir</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -16193,7 +17923,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>lang</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
 
@@ -16210,7 +17940,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>disabled</property-name>
       <property-class>boolean</property-class>
       <property-extension>
-        <pass-through>false</pass-through>
+        <ignored-by-renderer>false</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -16223,7 +17953,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onselect</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -16240,7 +17970,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>readonly</property-name>
       <property-class>boolean</property-class>
       <property-extension>
-        <pass-through>false</pass-through>
+        <ignored-by-renderer>false</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -16267,7 +17997,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onchange</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -16281,7 +18011,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onclick</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>false</pass-through>
+        <ignored-by-renderer>false</ignored-by-renderer>
         <behavior/>
         <behavior>valueChange</behavior>
         <default-behavior>true</default-behavior>
@@ -16299,7 +18029,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>border</property-name>
       <property-class>int</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -16731,7 +18461,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>style</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -16745,7 +18475,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>styleClass</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>false</pass-through>
+        <ignored-by-renderer>false</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -16758,7 +18488,31 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>title</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
+      </property-extension>
+    </property>
+    <property>
+      <description><![CDATA[
+          <p class="changed_added_2_2">Per the WAI-ARIA spec and its
+          relationship to HTML5 (Section title ARIA Role Attriubute),
+          every HTML element may have a "role" attribute whose value
+          must be passed through unmodified on the element on which it
+          is declared in the final rendered markup.  The attribute, if
+          specified, must have a value that is a string literal that is,
+          or an EL Expression that evaluates to, a set of
+          space-separated tokens representing the various WAI-ARIA roles
+          that the element belongs to.
+          </p>
+
+          <p class="changed_added_2_2">It is the page author's
+          responsibility to ensure that the user agent is capable of
+          correctly interpreting the value of this attribute.</p>]]></description>
+      <display-name>ARIA role</display-name>
+      <icon/>
+      <property-name>role</property-name>
+      <property-class>java.lang.String</property-class>
+      <property-extension>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
 
@@ -16773,7 +18527,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onclick</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -16787,7 +18541,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>ondblclick</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -16801,7 +18555,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onmousedown</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -16815,7 +18569,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onmouseup</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -16829,7 +18583,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onmouseover</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -16843,7 +18597,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onmousemove</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -16857,7 +18611,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onmouseout</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -16871,7 +18625,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onkeypress</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -16885,7 +18639,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onkeydown</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -16899,7 +18653,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onkeyup</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -16915,7 +18669,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>accesskey</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -16927,7 +18681,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onblur</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -16940,7 +18694,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onfocus</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -16955,7 +18709,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>tabindex</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
 
@@ -16964,13 +18718,15 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <description>
           Direction indication for text that does not inherit directionality.
           Valid values are "LTR" (left-to-right) and "RTL" (right-to-left).
+          These attributes are case sensitive when rendering to XHTML, so
+          care must be taken to have the correct case.
         </description>
       <display-name>Direction</display-name>
       <icon/>
       <property-name>dir</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -16983,7 +18739,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>lang</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
 
@@ -17000,7 +18756,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>disabled</property-name>
       <property-class>boolean</property-class>
       <property-extension>
-        <pass-through>false</pass-through>
+        <ignored-by-renderer>false</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -17013,7 +18769,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onchange</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>false</pass-through>
+        <ignored-by-renderer>false</ignored-by-renderer>
         <behavior/>
         <behavior>valueChange</behavior>
         <default-behavior>true</default-behavior>
@@ -17029,7 +18785,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onselect</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -17046,7 +18802,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>readonly</property-name>
       <property-class>boolean</property-class>
       <property-extension>
-        <pass-through>false</pass-through>
+        <ignored-by-renderer>false</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -17469,7 +19225,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>style</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -17483,7 +19239,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>styleClass</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>false</pass-through>
+        <ignored-by-renderer>false</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -17496,7 +19252,31 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>title</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
+      </property-extension>
+    </property>
+    <property>
+      <description><![CDATA[
+          <p class="changed_added_2_2">Per the WAI-ARIA spec and its
+          relationship to HTML5 (Section title ARIA Role Attriubute),
+          every HTML element may have a "role" attribute whose value
+          must be passed through unmodified on the element on which it
+          is declared in the final rendered markup.  The attribute, if
+          specified, must have a value that is a string literal that is,
+          or an EL Expression that evaluates to, a set of
+          space-separated tokens representing the various WAI-ARIA roles
+          that the element belongs to.
+          </p>
+
+          <p class="changed_added_2_2">It is the page author's
+          responsibility to ensure that the user agent is capable of
+          correctly interpreting the value of this attribute.</p>]]></description>
+      <display-name>ARIA role</display-name>
+      <icon/>
+      <property-name>role</property-name>
+      <property-class>java.lang.String</property-class>
+      <property-extension>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
 
@@ -17511,7 +19291,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onclick</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -17525,7 +19305,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>ondblclick</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -17539,7 +19319,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onmousedown</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -17553,7 +19333,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onmouseup</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -17567,7 +19347,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onmouseover</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -17581,7 +19361,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onmousemove</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -17595,7 +19375,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onmouseout</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -17609,7 +19389,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onkeypress</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -17623,7 +19403,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onkeydown</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -17637,7 +19417,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onkeyup</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -17653,7 +19433,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>accesskey</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -17665,7 +19445,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onblur</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -17678,7 +19458,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onfocus</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -17693,7 +19473,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>tabindex</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
 
@@ -17702,13 +19482,15 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <description>
           Direction indication for text that does not inherit directionality.
           Valid values are "LTR" (left-to-right) and "RTL" (right-to-left).
+          These attributes are case sensitive when rendering to XHTML, so
+          care must be taken to have the correct case.
         </description>
       <display-name>Direction</display-name>
       <icon/>
       <property-name>dir</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -17721,7 +19503,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>lang</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
 
@@ -17738,7 +19520,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>disabled</property-name>
       <property-class>boolean</property-class>
       <property-extension>
-        <pass-through>false</pass-through>
+        <ignored-by-renderer>false</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -17751,7 +19533,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onchange</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>false</pass-through>
+        <ignored-by-renderer>false</ignored-by-renderer>
         <behavior/>
         <behavior>valueChange</behavior>
         <default-behavior>true</default-behavior>
@@ -17767,7 +19549,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onselect</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -17784,7 +19566,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>readonly</property-name>
       <property-class>boolean</property-class>
       <property-extension>
-        <pass-through>false</pass-through>
+        <ignored-by-renderer>false</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -18184,7 +19966,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>style</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -18198,7 +19980,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>styleClass</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>false</pass-through>
+        <ignored-by-renderer>false</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -18211,7 +19993,31 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>title</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
+      </property-extension>
+    </property>
+    <property>
+      <description><![CDATA[
+          <p class="changed_added_2_2">Per the WAI-ARIA spec and its
+          relationship to HTML5 (Section title ARIA Role Attriubute),
+          every HTML element may have a "role" attribute whose value
+          must be passed through unmodified on the element on which it
+          is declared in the final rendered markup.  The attribute, if
+          specified, must have a value that is a string literal that is,
+          or an EL Expression that evaluates to, a set of
+          space-separated tokens representing the various WAI-ARIA roles
+          that the element belongs to.
+          </p>
+
+          <p class="changed_added_2_2">It is the page author's
+          responsibility to ensure that the user agent is capable of
+          correctly interpreting the value of this attribute.</p>]]></description>
+      <display-name>ARIA role</display-name>
+      <icon/>
+      <property-name>role</property-name>
+      <property-class>java.lang.String</property-class>
+      <property-extension>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
 
@@ -18226,7 +20032,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onclick</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -18240,7 +20046,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>ondblclick</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -18254,7 +20060,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onmousedown</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -18268,7 +20074,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onmouseup</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -18282,7 +20088,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onmouseover</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -18296,7 +20102,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onmousemove</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -18310,7 +20116,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onmouseout</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -18324,7 +20130,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onkeypress</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -18338,7 +20144,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onkeydown</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -18352,7 +20158,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onkeyup</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -18368,7 +20174,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>accesskey</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -18380,7 +20186,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onblur</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -18393,7 +20199,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onfocus</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -18408,7 +20214,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>tabindex</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
 
@@ -18417,13 +20223,15 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <description>
           Direction indication for text that does not inherit directionality.
           Valid values are "LTR" (left-to-right) and "RTL" (right-to-left).
+          These attributes are case sensitive when rendering to XHTML, so
+          care must be taken to have the correct case.
         </description>
       <display-name>Direction</display-name>
       <icon/>
       <property-name>dir</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -18436,7 +20244,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>lang</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
 
@@ -18453,7 +20261,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>disabled</property-name>
       <property-class>boolean</property-class>
       <property-extension>
-        <pass-through>false</pass-through>
+        <ignored-by-renderer>false</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -18466,7 +20274,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onchange</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>false</pass-through>
+        <ignored-by-renderer>false</ignored-by-renderer>
         <behavior/>
         <behavior>valueChange</behavior>
         <default-behavior>true</default-behavior>
@@ -18482,7 +20290,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onselect</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -18499,7 +20307,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>readonly</property-name>
       <property-class>boolean</property-class>
       <property-extension>
-        <pass-through>false</pass-through>
+        <ignored-by-renderer>false</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -18909,7 +20717,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>style</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -18923,7 +20731,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>styleClass</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>false</pass-through>
+        <ignored-by-renderer>false</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -18936,7 +20744,31 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>title</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
+      </property-extension>
+    </property>
+    <property>
+      <description><![CDATA[
+          <p class="changed_added_2_2">Per the WAI-ARIA spec and its
+          relationship to HTML5 (Section title ARIA Role Attriubute),
+          every HTML element may have a "role" attribute whose value
+          must be passed through unmodified on the element on which it
+          is declared in the final rendered markup.  The attribute, if
+          specified, must have a value that is a string literal that is,
+          or an EL Expression that evaluates to, a set of
+          space-separated tokens representing the various WAI-ARIA roles
+          that the element belongs to.
+          </p>
+
+          <p class="changed_added_2_2">It is the page author's
+          responsibility to ensure that the user agent is capable of
+          correctly interpreting the value of this attribute.</p>]]></description>
+      <display-name>ARIA role</display-name>
+      <icon/>
+      <property-name>role</property-name>
+      <property-class>java.lang.String</property-class>
+      <property-extension>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
 
@@ -18951,7 +20783,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onclick</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -18965,7 +20797,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>ondblclick</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -18979,7 +20811,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onmousedown</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -18993,7 +20825,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onmouseup</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -19007,7 +20839,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onmouseover</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -19021,7 +20853,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onmousemove</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -19035,7 +20867,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onmouseout</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -19049,7 +20881,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onkeypress</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -19063,7 +20895,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onkeydown</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -19077,7 +20909,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onkeyup</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -19093,7 +20925,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>accesskey</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -19105,7 +20937,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onblur</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -19118,7 +20950,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onfocus</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -19133,7 +20965,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>tabindex</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
 
@@ -19142,13 +20974,15 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <description>
           Direction indication for text that does not inherit directionality.
           Valid values are "LTR" (left-to-right) and "RTL" (right-to-left).
+          These attributes are case sensitive when rendering to XHTML, so
+          care must be taken to have the correct case.
         </description>
       <display-name>Direction</display-name>
       <icon/>
       <property-name>dir</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -19161,7 +20995,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>lang</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
 
@@ -19178,7 +21012,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>disabled</property-name>
       <property-class>boolean</property-class>
       <property-extension>
-        <pass-through>false</pass-through>
+        <ignored-by-renderer>false</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -19191,7 +21025,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onchange</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>false</pass-through>
+        <ignored-by-renderer>false</ignored-by-renderer>
         <behavior/>
         <behavior>valueChange</behavior>
         <default-behavior>true</default-behavior>
@@ -19207,7 +21041,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onselect</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -19224,7 +21058,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>readonly</property-name>
       <property-class>boolean</property-class>
       <property-extension>
-        <pass-through>false</pass-through>
+        <ignored-by-renderer>false</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -19268,9 +21102,11 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
     </component-extension>
   </component>
   <component>
-    <description><![CDATA[<p>Represents a single-selection component that is rendered
-      as a set of HTML <code>input</code> elements of type
-      <code>radio</code>.</p>]]></description>
+    <description><![CDATA[<p><span
+            class="changed_modified_2_0_rev_a">Represents</span> a
+            single-selection component that is rendered as a set of HTML
+            <code>input</code> elements of type
+            <code>radio</code>.</p>]]></description>
     <display-name>Radio</display-name>
     <component-type>javax.faces.HtmlSelectOneRadio</component-type>
     <component-class>javax.faces.component.html.HtmlSelectOneRadio</component-class>
@@ -19624,7 +21460,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>style</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -19638,7 +21474,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>styleClass</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>false</pass-through>
+        <ignored-by-renderer>false</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -19651,7 +21487,31 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>title</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
+      </property-extension>
+    </property>
+    <property>
+      <description><![CDATA[
+          <p class="changed_added_2_2">Per the WAI-ARIA spec and its
+          relationship to HTML5 (Section title ARIA Role Attriubute),
+          every HTML element may have a "role" attribute whose value
+          must be passed through unmodified on the element on which it
+          is declared in the final rendered markup.  The attribute, if
+          specified, must have a value that is a string literal that is,
+          or an EL Expression that evaluates to, a set of
+          space-separated tokens representing the various WAI-ARIA roles
+          that the element belongs to.
+          </p>
+
+          <p class="changed_added_2_2">It is the page author's
+          responsibility to ensure that the user agent is capable of
+          correctly interpreting the value of this attribute.</p>]]></description>
+      <display-name>ARIA role</display-name>
+      <icon/>
+      <property-name>role</property-name>
+      <property-class>java.lang.String</property-class>
+      <property-extension>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
 
@@ -19666,7 +21526,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>ondblclick</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -19680,7 +21540,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onmousedown</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -19694,7 +21554,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onmouseup</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -19708,7 +21568,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onmouseover</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -19722,7 +21582,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onmousemove</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -19736,7 +21596,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onmouseout</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -19750,7 +21610,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onkeypress</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -19764,7 +21624,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onkeydown</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -19778,7 +21638,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onkeyup</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -19794,7 +21654,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>accesskey</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -19806,7 +21666,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onblur</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -19819,7 +21679,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onfocus</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -19834,7 +21694,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>tabindex</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
 
@@ -19843,13 +21703,15 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <description>
           Direction indication for text that does not inherit directionality.
           Valid values are "LTR" (left-to-right) and "RTL" (right-to-left).
+          These attributes are case sensitive when rendering to XHTML, so
+          care must be taken to have the correct case.
         </description>
       <display-name>Direction</display-name>
       <icon/>
       <property-name>dir</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -19862,7 +21724,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>lang</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
 
@@ -19879,7 +21741,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>disabled</property-name>
       <property-class>boolean</property-class>
       <property-extension>
-        <pass-through>false</pass-through>
+        <ignored-by-renderer>false</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -19892,7 +21754,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onselect</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -19909,7 +21771,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>readonly</property-name>
       <property-class>boolean</property-class>
       <property-extension>
-        <pass-through>false</pass-through>
+        <ignored-by-renderer>false</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -19936,7 +21798,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onchange</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -19950,7 +21812,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onclick</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>false</pass-through>
+        <ignored-by-renderer>false</ignored-by-renderer>
         <behavior/>
         <behavior>valueChange</behavior>
         <default-behavior>true</default-behavior>
@@ -19968,7 +21830,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>border</property-name>
       <property-class>int</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -20016,6 +21878,57 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
     -->
   <component>
     <description>NONE</description>
+    <display-name>doctype</display-name>
+    <component-type>javax.faces.OutputDoctype</component-type>
+    <component-class>javax.faces.component.html.HtmlDoctype</component-class>
+
+    <property>
+      <description><![CDATA[<div class="changed_added_2_1">
+           The root XML element
+           </div>]]></description>
+      <display-name>Root XML element</display-name>
+      <icon/>
+      <property-name>rootElement</property-name>
+      <property-class>java.lang.String</property-class>
+      <property-extension>
+        <ignored-by-renderer>true</ignored-by-renderer>
+        <required>true</required>
+      </property-extension>
+    </property>
+    <property>
+      <description><![CDATA[<div class="changed_added_2_1">
+           Will be output as the public part of the DOCTYPE
+           </div>]]></description>
+      <display-name>The public part of the DOCTYPE</display-name>
+      <icon/>
+      <property-name>public</property-name>
+      <property-class>java.lang.String</property-class>
+      <property-extension>
+        <ignored-by-renderer>true</ignored-by-renderer>
+        <required>false</required>
+      </property-extension>
+    </property>
+    <property>
+      <description><![CDATA[<div class="changed_added_2_1">
+           Will be output as the system part of the DOCTYPE
+           </div>]]></description>
+      <display-name>The system part of the DOCTYPE</display-name>
+      <icon/>
+      <property-name>system</property-name>
+      <property-class>java.lang.String</property-class>
+      <property-extension>
+        <ignored-by-renderer>true</ignored-by-renderer>
+        <required>false</required>
+      </property-extension>
+    </property>
+
+    <component-extension>
+      <base-component-type>javax.faces.Output</base-component-type>
+      <renderer-type>javax.faces.Doctype</renderer-type>
+    </component-extension>
+  </component>
+  <component>
+    <description>NONE</description>
     <display-name>head</display-name>
     <component-type>javax.faces.OutputHead</component-type>
     <component-class>javax.faces.component.html.HtmlHead</component-class>
@@ -20024,13 +21937,15 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <description>
           Direction indication for text that does not inherit directionality.
           Valid values are "LTR" (left-to-right) and "RTL" (right-to-left).
+          These attributes are case sensitive when rendering to XHTML, so
+          care must be taken to have the correct case.
         </description>
       <display-name>Direction</display-name>
       <icon/>
       <property-name>dir</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -20043,7 +21958,21 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>lang</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
+      </property-extension>
+    </property>
+
+
+    <property>
+      <description><![CDATA[<div class="changed_added_2_1">
+           An XML Namespace to be passed through to the rendered element
+           </div>]]></description>
+      <display-name>XML Namespace</display-name>
+      <icon/>
+      <property-name>xmlns</property-name>
+      <property-class>java.lang.String</property-class>
+      <property-extension>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
 
@@ -20062,13 +21991,15 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <description>
           Direction indication for text that does not inherit directionality.
           Valid values are "LTR" (left-to-right) and "RTL" (right-to-left).
+          These attributes are case sensitive when rendering to XHTML, so
+          care must be taken to have the correct case.
         </description>
       <display-name>Direction</display-name>
       <icon/>
       <property-name>dir</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -20081,7 +22012,21 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>lang</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
+      </property-extension>
+    </property>
+
+
+    <property>
+      <description><![CDATA[<div class="changed_added_2_1">
+           An XML Namespace to be passed through to the rendered element
+           </div>]]></description>
+      <display-name>XML Namespace</display-name>
+      <icon/>
+      <property-name>xmlns</property-name>
+      <property-class>java.lang.String</property-class>
+      <property-extension>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
 
@@ -20095,7 +22040,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>style</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -20109,7 +22054,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>styleClass</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>false</pass-through>
+        <ignored-by-renderer>false</ignored-by-renderer>
       </property-extension>
     </property>
     <property>
@@ -20122,7 +22067,31 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>title</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
+      </property-extension>
+    </property>
+    <property>
+      <description><![CDATA[
+          <p class="changed_added_2_2">Per the WAI-ARIA spec and its
+          relationship to HTML5 (Section title ARIA Role Attriubute),
+          every HTML element may have a "role" attribute whose value
+          must be passed through unmodified on the element on which it
+          is declared in the final rendered markup.  The attribute, if
+          specified, must have a value that is a string literal that is,
+          or an EL Expression that evaluates to, a set of
+          space-separated tokens representing the various WAI-ARIA roles
+          that the element belongs to.
+          </p>
+
+          <p class="changed_added_2_2">It is the page author's
+          responsibility to ensure that the user agent is capable of
+          correctly interpreting the value of this attribute.</p>]]></description>
+      <display-name>ARIA role</display-name>
+      <icon/>
+      <property-name>role</property-name>
+      <property-class>java.lang.String</property-class>
+      <property-extension>
+        <ignored-by-renderer>true</ignored-by-renderer>
       </property-extension>
     </property>
 
@@ -20137,7 +22106,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onclick</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -20151,7 +22120,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>ondblclick</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -20165,7 +22134,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onmousedown</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -20179,7 +22148,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onmouseup</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -20193,7 +22162,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onmouseover</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -20207,7 +22176,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onmousemove</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -20221,7 +22190,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onmouseout</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -20235,7 +22204,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onkeypress</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -20249,7 +22218,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onkeydown</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -20263,7 +22232,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onkeyup</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -20276,7 +22245,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onload</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -20288,7 +22257,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <property-name>onunload</property-name>
       <property-class>java.lang.String</property-class>
       <property-extension>
-        <pass-through>true</pass-through>
+        <ignored-by-renderer>true</ignored-by-renderer>
         <behavior/>
       </property-extension>
     </property>
@@ -20299,9 +22268,9 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
   </component>
   <!-- Standard HTML Renderkit -->
   <render-kit>
-    <description><![CDATA[
-     The standard HTML RenderKit.  Please see the spec for additional
-     details for the standard render-kit.
+    <description><![CDATA[ <span class="changed_modified_2_2">The</span>
+            standard HTML RenderKit.  Please see the spec for additional
+            details for the standard render-kit.
 
      <div class="changed_added_2_0">
      <p>The following new renderers have been
@@ -20392,6 +22361,11 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
      <p>If the value of the component's "rendered" property is false,
      the component, and its children must not be rendered.</p>
 
+     <p class="changed_added_2_2">For all renderers that are responsible
+     for rendering their own children, the renderer will decide if the
+     end tag is required or not based on the presence or absence of
+     children for the component.</p>
+
      <p>General notes regarding the <code>id</code> attribute</p>
 
      <ul>
@@ -20448,8 +22422,8 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
        Renderers for the <code>javax.faces.Command</code></a> component.
        The generation of JavaScript in any other Renderer in the
        HTML_BASIC renderkit is not permitted.  However, any JavaScript
-       code provided by the user as the value of a passthru attribute,
-       such as "onmouseover", is excluded from this restriction.</p>
+       code provided by the user as the value of an <code>ignored-by-renderer</code> 
+       attribute, such as "onmouseover", is excluded from this restriction.</p>
 
      </ul>
 
@@ -20477,11 +22451,41 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
      </ul>
      </div>
 
+     <div class="changed_added_2_2">
+     <p><a name="general_behavior_encoding">Rendering</a> Pass Through Attributes.</p>
+
+     <ul>
+
+       <p>The set of attributes written for a component is determined by
+       its <code>Renderer</code> and collectively are known as
+       <em>renderer specific attributes</em>.  In addition to
+       <em>renderer specific attributes</em>, <em>pass through
+       attributes</em> are also possible.  <em>Pass through
+       attributes</em> are declared as markup attributes on components
+       in the VDL view and are stored in the <code>Map</code> returned
+       by <code>UIComponent.getPassThroughAttributes()</code>.  When
+       rendering a <code>UIComponent</code> instance,
+       <code>Renderer</code>s call
+       <code>ResponseWriter.startElement()</code>, passing in the
+       <code>UIComponent</code> instance.  The
+       <code>ResponseWriter</code> must ensure that any <em>pass through
+       attributes</em> are rendered on the outer-most markup element for
+       the component.  If there is a <em>pass through attribute</em>
+       with the same name as a <em>renderer specific attribute</em>, the
+       <em>pass through attribute</em> takes precedence.  <em>Pass
+       through attributes</em> are rendered as if they were passed to
+       <code>ResponseWriter.writeURIAttribute()</code>.</p>
+
+
+     </ul>
+     </div>
+
 
-    </ul>]]></description>
+</ul>]]></description>
     <renderer>
-      <description><![CDATA[<p><span
-            class="changed_modified_2_0">Renders an HTML "input"
+      <description><![CDATA[<p><span class="changed_modified_2_0
+            changed_modified_2_0_rev_a
+            changed_modified_2_2">Renders</span> an HTML "input"
             element.</p>
 
       <p>Decode Behavior</p>
@@ -20551,7 +22555,30 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <code>encodeEnd()</code> methods called, in order, passing the
       temporary component as the second argument.</p>
 
-      </ul>
+      <div class="changed_added_2_2">
+
+        <p>Because this renderer is responsible for rendering its own
+        children, the renderer will decide if the end tag is required or
+        not based on the presence or absence of children for the
+        component.</p>
+
+        <p>To support entering flows that are defined by both a defining
+        document id and a flow id, add a component attribute to this
+        component whose name is given by the value of the symbolic
+        constant
+        <code>javax.faces.event.ActionListener.TO_FLOW_DOCUMENT_ID_ATTR_NAME</code>,
+        and whose value is the defining document id.  For example, when
+        using this component in a facelet page, the following markup
+        would cause such an attribute to be added.</p>
+
+<pre><code><h:commandButton id="start_a" value="enter flow-a" action="flow-a"><br />
+  <f:attribute name="to-flow-document-id" value="unique"/><br />
+</h:commandButton><br />
+</code></pre>
+
+      </div>
+
+      </ul>
             ]]></description>
       <component-family>javax.faces.Command</component-family>
       <renderer-type>javax.faces.Button</renderer-type>
@@ -20568,7 +22595,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>style</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -20582,7 +22609,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>styleClass</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>false</pass-through>
+          <ignored-by-renderer>false</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -20595,7 +22622,31 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>title</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
+        </attribute-extension>
+      </attribute>
+      <attribute>
+        <description><![CDATA[
+          <p class="changed_added_2_2">Per the WAI-ARIA spec and its
+          relationship to HTML5 (Section title ARIA Role Attriubute),
+          every HTML element may have a "role" attribute whose value
+          must be passed through unmodified on the element on which it
+          is declared in the final rendered markup.  The attribute, if
+          specified, must have a value that is a string literal that is,
+          or an EL Expression that evaluates to, a set of
+          space-separated tokens representing the various WAI-ARIA roles
+          that the element belongs to.
+          </p>
+
+          <p class="changed_added_2_2">It is the page author's
+          responsibility to ensure that the user agent is capable of
+          correctly interpreting the value of this attribute.</p>]]></description>
+        <display-name>ARIA role</display-name>
+        <icon/>
+        <attribute-name>role</attribute-name>
+        <attribute-class>java.lang.String</attribute-class>
+        <attribute-extension>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
 
@@ -20610,7 +22661,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>accesskey</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -20622,7 +22673,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onblur</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -20635,7 +22686,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onfocus</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -20650,7 +22701,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>tabindex</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
 
@@ -20659,13 +22710,15 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <description>
           Direction indication for text that does not inherit directionality.
           Valid values are "LTR" (left-to-right) and "RTL" (right-to-left).
+          These attributes are case sensitive when rendering to XHTML, so
+          care must be taken to have the correct case.
         </description>
         <display-name>Direction</display-name>
         <icon/>
         <attribute-name>dir</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -20678,7 +22731,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>lang</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
 
@@ -20695,7 +22748,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>disabled</attribute-name>
         <attribute-class>boolean</attribute-class>
         <attribute-extension>
-          <pass-through>false</pass-through>
+          <ignored-by-renderer>false</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -20708,7 +22761,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onchange</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>false</pass-through>
+          <ignored-by-renderer>false</ignored-by-renderer>
           <behavior/>
           <behavior>valueChange</behavior>
           <default-behavior>true</default-behavior>
@@ -20724,7 +22777,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onselect</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -20741,7 +22794,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>readonly</attribute-name>
         <attribute-class>boolean</attribute-class>
         <attribute-extension>
-          <pass-through>false</pass-through>
+          <ignored-by-renderer>false</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -20768,7 +22821,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>alt</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -20807,7 +22860,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onclick</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>false</pass-through>
+          <ignored-by-renderer>false</ignored-by-renderer>
           <behavior/>
           <behavior>action</behavior>
           <default-behavior>true</default-behavior>
@@ -20823,7 +22876,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>ondblclick</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -20837,7 +22890,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onchange</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -20851,7 +22904,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onmousedown</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -20865,7 +22918,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onmouseup</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -20879,7 +22932,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onmouseover</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -20893,7 +22946,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onmousemove</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -20907,7 +22960,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onmouseout</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -20921,7 +22974,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onkeypress</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -20935,7 +22988,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onkeydown</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -20949,7 +23002,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onkeyup</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -20973,8 +23026,8 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       </renderer-extension>
     </renderer>
     <renderer>
-      <description><![CDATA[<p><span
-            class="changed_modified_2_0">Render</span> an HTML "a" anchor
+      <description><![CDATA[<p><span class="changed_modified_2_0
+            changed_modified_2_0_rev_a changed_modified_2_2">Render</span> an HTML "a" anchor
             element that acts like a form submit button when
             clicked.</p>
 
@@ -21027,11 +23080,12 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <ul>
 
       <p>If the value of the <code>disabled</code> attribute is
-      <code>true</code>, render a span element.  Render all the passthru
-      attributes and the <code>target</code> attribute as pass-through
-      attributes on the span, even though the <code>target</code>
-      attribute will have no effect on a span.  Render the current value
-      of the component as the content of the span.  Return.</p>
+      <code>true</code>, render a span element.  Render all the
+      ignored-by-renderer attributes and the <code>target</code>
+      attribute as ignored-by-renderer attributes on the span, even
+      though the <code>target</code> attribute will have no effect on a
+      span.  Render the current value of the component as the content of
+      the span.  Return.</p>
 
       <p>If the <code>disabled</code> attribute is not present, or its
       value is <code>false</code>, render an HTML <code>a</code>
@@ -21043,13 +23097,12 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <p><code>document.forms['CLIENT_ID']['hiddenFieldName'].value='CLIENT_ID';
       document.forms['CLIENT_ID']['PARAM1_NAME'].value='PARAM1_VALUE';
       document.forms['CLIENT_ID']['PARAM2_NAME'].value='PARAM2_VALUE';
-      return false;</code></p>
+      document.forms['CLIENT_ID'].submit(); return false;</code></p>
 
-      <p>document.forms['CLIENT_ID'].submit()" where hiddenFieldName is
-      as described above, CLIENT_ID is the clientId of the UICommand
-      component, PARAM*_NAME and PARAM*_VALUE are the names and values,
-      respectively, of any nested UIParameter children.  The name and
-      the value must be URLEncoded.  <span
+      <p>where hiddenFieldName is as described above, CLIENT_ID is the
+      clientId of the UICommand component, PARAM*_NAME and PARAM*_VALUE
+      are the names and values, respectively, of any nested UIParameter
+      children.  The name and the value must be URLEncoded.  <span
       class="changed_modified_2_0_rev_a">Note that the required url
       encoding is handled by
       <code>ResponseWrter.writeAttribute()</code>.</span> If an
@@ -21083,7 +23136,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       render the HTML "a" anchor element or its "href" attribute.
       Instead, render a "span" element.  If the "styleClass" attribute
       is specified, render its value as the value of the "class"
-      attribute on the "span".  Render any pass-through attributes on
+      attribute on the "span".  Render any ignored-by-renderer attributes on
       the "span".  The content of the span element comes from the value
       of the component or its children as specified above.</p>
 
@@ -21098,7 +23151,27 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <p>Where TARGET is the value of the target attribute on the JSP
       tag.</p>
 
-      </ul>]]></description>
+      </ul>
+
+<div class="changed_added_2_2">
+
+        <p>To support entering flows that are defined by both a defining
+        document id and a flow id, add a component attribute to this
+        component whose name is given by the value of the symbolic
+        constant
+        <code>javax.faces.event.ActionListener.TO_FLOW_DOCUMENT_ID_ATTR_NAME</code>,
+        and whose value is the defining document id.  For example, when
+        using this component in a facelet page, the following markup
+        would cause such an attribute to be added.</p>
+
+<pre><code><h:commandLink id="start_a" value="enter flow-a" action="flow-a"><br />
+  <f:attribute name="to-flow-document-id" value="unique"/><br />
+</h:commandLink><br />
+</code></pre>
+
+</div>
+
+]]></description>
       <component-family>javax.faces.Command</component-family>
       <renderer-type>javax.faces.Link</renderer-type>
       <renderer-class>
@@ -21114,7 +23187,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>style</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -21128,7 +23201,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>styleClass</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>false</pass-through>
+          <ignored-by-renderer>false</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -21141,7 +23214,31 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>title</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
+        </attribute-extension>
+      </attribute>
+      <attribute>
+        <description><![CDATA[
+          <p class="changed_added_2_2">Per the WAI-ARIA spec and its
+          relationship to HTML5 (Section title ARIA Role Attriubute),
+          every HTML element may have a "role" attribute whose value
+          must be passed through unmodified on the element on which it
+          is declared in the final rendered markup.  The attribute, if
+          specified, must have a value that is a string literal that is,
+          or an EL Expression that evaluates to, a set of
+          space-separated tokens representing the various WAI-ARIA roles
+          that the element belongs to.
+          </p>
+
+          <p class="changed_added_2_2">It is the page author's
+          responsibility to ensure that the user agent is capable of
+          correctly interpreting the value of this attribute.</p>]]></description>
+        <display-name>ARIA role</display-name>
+        <icon/>
+        <attribute-name>role</attribute-name>
+        <attribute-class>java.lang.String</attribute-class>
+        <attribute-extension>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
 
@@ -21156,7 +23253,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>accesskey</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -21168,7 +23265,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onblur</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -21181,7 +23278,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onfocus</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -21196,7 +23293,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>tabindex</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
 
@@ -21205,13 +23302,15 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <description>
           Direction indication for text that does not inherit directionality.
           Valid values are "LTR" (left-to-right) and "RTL" (right-to-left).
+          These attributes are case sensitive when rendering to XHTML, so
+          care must be taken to have the correct case.
         </description>
         <display-name>Direction</display-name>
         <icon/>
         <attribute-name>dir</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -21224,7 +23323,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>lang</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
 
@@ -21239,7 +23338,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>charset</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -21252,7 +23351,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>coords</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -21265,7 +23364,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>hreflang</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -21280,7 +23379,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>rel</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -21295,7 +23394,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>rev</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -21311,7 +23410,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>shape</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -21325,7 +23424,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>target</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>false</pass-through>
+          <ignored-by-renderer>false</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -21338,7 +23437,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>type</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -21352,7 +23451,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>disabled</attribute-name>
         <attribute-class>boolean</attribute-class>
         <attribute-extension>
-          <pass-through>false</pass-through>
+          <ignored-by-renderer>false</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -21365,7 +23464,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onclick</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>false</pass-through>
+          <ignored-by-renderer>false</ignored-by-renderer>
           <behavior/>
           <behavior>action</behavior>
           <default-behavior>true</default-behavior>
@@ -21381,7 +23480,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>ondblclick</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -21395,7 +23494,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onmousedown</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -21409,7 +23508,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onmouseup</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -21423,7 +23522,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onmouseover</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -21437,7 +23536,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onmousemove</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -21451,7 +23550,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onmouseout</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -21465,7 +23564,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onkeypress</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -21479,7 +23578,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onkeydown</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -21493,7 +23592,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onkeyup</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -21505,18 +23604,20 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
     </renderer>
     <renderer>
       <description><![CDATA[
-      <p>Renders an HTML "table" element compliant with the HTML 401
-      specification.  Render the "caption" facet, if present, inside a
-      "caption" element immediately below the "table" element.  If the
-      "captionClass" attribute is specified, render its value as the
-      value of the "class" attribute on the "caption" element.  If the
-      "captionStyle" attribute is specified, render its value as the
-      value of the "style" attribute on the "caption" element.</p>
-      <p>Please consult the javadoc for <code>UIData</code> to
-      supplement this specification.  If the "styleClass" attribute is
-      specified, render its value as the value of the "class" attribute
-      on the "table" element.  Any pass-through attributes are also
-      rendered on the "table" element.  </p>
+
+      <p><span class="changed_modified_2_0_rev_a">Renders</span> an HTML
+      "table" element compliant with the HTML 401 specification.  Render
+      the "caption" facet, if present, inside a "caption" element
+      immediately below the "table" element.  If the "captionClass"
+      attribute is specified, render its value as the value of the
+      "class" attribute on the "caption" element.  If the "captionStyle"
+      attribute is specified, render its value as the value of the
+      "style" attribute on the "caption" element.</p> <p>Please consult
+      the javadoc for <code>UIData</code> to supplement this
+      specification.  If the "styleClass" attribute is specified, render
+      its value as the value of the "class" attribute on the "table"
+      element.  Any ignored-by-renderer attributes are also rendered on the
+      "table" element.  </p>
 
      <p>Column Groups</p>
 
@@ -21641,27 +23742,549 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
 
       </ul>
 
-     <p>When done rendering all the rows, set the "rowIndex" property of
-     the <code>UIData</code> to -1, and close out the "table"
-     element.</p>
-            ]]></description>
-      <component-family>javax.faces.Data</component-family>
-      <renderer-type>javax.faces.Table</renderer-type>
+     <p>When done rendering all the rows, set the "rowIndex" property of
+     the <code>UIData</code> to -1, and close out the "table"
+     element.</p>
+            ]]></description>
+      <component-family>javax.faces.Data</component-family>
+      <renderer-type>javax.faces.Table</renderer-type>
+      <renderer-class>
+        com.sun.faces.renderkit.html_basic.TableRenderer
+    </renderer-class>
+      <facet>
+        <facet-name>caption</facet-name>
+      </facet>
+      <facet>
+        <facet-name>header</facet-name>
+      </facet>
+      <facet>
+        <facet-name>footer</facet-name>
+      </facet>
+      <facet>
+        <facet-name>colgroups</facet-name>
+      </facet>
+
+      <attribute>
+        <description>
+          CSS style(s) to be applied when this component is rendered.
+        </description>
+        <display-name>CSS Styles</display-name>
+        <icon/>
+        <attribute-name>style</attribute-name>
+        <attribute-class>java.lang.String</attribute-class>
+        <attribute-extension>
+          <ignored-by-renderer>true</ignored-by-renderer>
+        </attribute-extension>
+      </attribute>
+      <attribute>
+        <description>
+          Space-separated list of CSS style class(es) to be applied when
+          this element is rendered.  This value must be passed through
+          as the "class" attribute on generated markup.
+        </description>
+        <display-name>CSS Style Classes</display-name>
+        <icon/>
+        <attribute-name>styleClass</attribute-name>
+        <attribute-class>java.lang.String</attribute-class>
+        <attribute-extension>
+          <ignored-by-renderer>false</ignored-by-renderer>
+        </attribute-extension>
+      </attribute>
+      <attribute>
+        <description>
+          Advisory title information about markup elements generated
+          for this component.
+        </description>
+        <display-name>Advisory Title</display-name>
+        <icon/>
+        <attribute-name>title</attribute-name>
+        <attribute-class>java.lang.String</attribute-class>
+        <attribute-extension>
+          <ignored-by-renderer>true</ignored-by-renderer>
+        </attribute-extension>
+      </attribute>
+      <attribute>
+        <description><![CDATA[
+          <p class="changed_added_2_2">Per the WAI-ARIA spec and its
+          relationship to HTML5 (Section title ARIA Role Attriubute),
+          every HTML element may have a "role" attribute whose value
+          must be passed through unmodified on the element on which it
+          is declared in the final rendered markup.  The attribute, if
+          specified, must have a value that is a string literal that is,
+          or an EL Expression that evaluates to, a set of
+          space-separated tokens representing the various WAI-ARIA roles
+          that the element belongs to.
+          </p>
+
+          <p class="changed_added_2_2">It is the page author's
+          responsibility to ensure that the user agent is capable of
+          correctly interpreting the value of this attribute.</p>]]></description>
+        <display-name>ARIA role</display-name>
+        <icon/>
+        <attribute-name>role</attribute-name>
+        <attribute-class>java.lang.String</attribute-class>
+        <attribute-extension>
+          <ignored-by-renderer>true</ignored-by-renderer>
+        </attribute-extension>
+      </attribute>
+
+
+      <attribute>
+        <description>
+          Javascript code executed when a pointer button is
+          clicked over this element.
+        </description>
+        <display-name>Button Click Script</display-name>
+        <icon/>
+        <attribute-name>onclick</attribute-name>
+        <attribute-class>java.lang.String</attribute-class>
+        <attribute-extension>
+          <ignored-by-renderer>true</ignored-by-renderer>
+          <behavior/>
+        </attribute-extension>
+      </attribute>
+      <attribute>
+        <description>
+          Javascript code executed when a pointer button is
+          double clicked over this element.
+        </description>
+        <display-name>Double Click Script</display-name>
+        <icon/>
+        <attribute-name>ondblclick</attribute-name>
+        <attribute-class>java.lang.String</attribute-class>
+        <attribute-extension>
+          <ignored-by-renderer>true</ignored-by-renderer>
+          <behavior/>
+        </attribute-extension>
+      </attribute>
+      <attribute>
+        <description>
+          Javascript code executed when a pointer button is
+          pressed down over this element.
+        </description>
+        <display-name>Mouse Down Script</display-name>
+        <icon/>
+        <attribute-name>onmousedown</attribute-name>
+        <attribute-class>java.lang.String</attribute-class>
+        <attribute-extension>
+          <ignored-by-renderer>true</ignored-by-renderer>
+          <behavior/>
+        </attribute-extension>
+      </attribute>
+      <attribute>
+        <description>
+          Javascript code executed when a pointer button is
+          released over this element.
+        </description>
+        <display-name>Mouse Up Script</display-name>
+        <icon/>
+        <attribute-name>onmouseup</attribute-name>
+        <attribute-class>java.lang.String</attribute-class>
+        <attribute-extension>
+          <ignored-by-renderer>true</ignored-by-renderer>
+          <behavior/>
+        </attribute-extension>
+      </attribute>
+      <attribute>
+        <description>
+          Javascript code executed when a pointer button is
+          moved onto this element.
+        </description>
+        <display-name>Mouse Over Script</display-name>
+        <icon/>
+        <attribute-name>onmouseover</attribute-name>
+        <attribute-class>java.lang.String</attribute-class>
+        <attribute-extension>
+          <ignored-by-renderer>true</ignored-by-renderer>
+          <behavior/>
+        </attribute-extension>
+      </attribute>
+      <attribute>
+        <description>
+          Javascript code executed when a pointer button is
+          moved within this element.
+        </description>
+        <display-name>Mouse Move Script</display-name>
+        <icon/>
+        <attribute-name>onmousemove</attribute-name>
+        <attribute-class>java.lang.String</attribute-class>
+        <attribute-extension>
+          <ignored-by-renderer>true</ignored-by-renderer>
+          <behavior/>
+        </attribute-extension>
+      </attribute>
+      <attribute>
+        <description>
+          Javascript code executed when a pointer button is
+          moved away from this element.
+        </description>
+        <display-name>Mouse Out Script</display-name>
+        <icon/>
+        <attribute-name>onmouseout</attribute-name>
+        <attribute-class>java.lang.String</attribute-class>
+        <attribute-extension>
+          <ignored-by-renderer>true</ignored-by-renderer>
+          <behavior/>
+        </attribute-extension>
+      </attribute>
+      <attribute>
+        <description>
+          Javascript code executed when a key is
+          pressed and released over this element.
+        </description>
+        <display-name>Key Press Script</display-name>
+        <icon/>
+        <attribute-name>onkeypress</attribute-name>
+        <attribute-class>java.lang.String</attribute-class>
+        <attribute-extension>
+          <ignored-by-renderer>true</ignored-by-renderer>
+          <behavior/>
+        </attribute-extension>
+      </attribute>
+      <attribute>
+        <description>
+          Javascript code executed when a key is
+          pressed down over this element.
+        </description>
+        <display-name>Key Down Script</display-name>
+        <icon/>
+        <attribute-name>onkeydown</attribute-name>
+        <attribute-class>java.lang.String</attribute-class>
+        <attribute-extension>
+          <ignored-by-renderer>true</ignored-by-renderer>
+          <behavior/>
+        </attribute-extension>
+      </attribute>
+      <attribute>
+        <description>
+          Javascript code executed when a key is
+          released over this element.
+        </description>
+        <display-name>Key Up Script</display-name>
+        <icon/>
+        <attribute-name>onkeyup</attribute-name>
+        <attribute-class>java.lang.String</attribute-class>
+        <attribute-extension>
+          <ignored-by-renderer>true</ignored-by-renderer>
+          <behavior/>
+        </attribute-extension>
+      </attribute>
+
+
+      <attribute>
+        <description>
+          Direction indication for text that does not inherit directionality.
+          Valid values are "LTR" (left-to-right) and "RTL" (right-to-left).
+          These attributes are case sensitive when rendering to XHTML, so
+          care must be taken to have the correct case.
+        </description>
+        <display-name>Direction</display-name>
+        <icon/>
+        <attribute-name>dir</attribute-name>
+        <attribute-class>java.lang.String</attribute-class>
+        <attribute-extension>
+          <ignored-by-renderer>true</ignored-by-renderer>
+        </attribute-extension>
+      </attribute>
+      <attribute>
+        <description>
+          Code describing the language used in the generated markup
+          for this component.
+        </description>
+        <display-name>Language Code</display-name>
+        <icon/>
+        <attribute-name>lang</attribute-name>
+        <attribute-class>java.lang.String</attribute-class>
+        <attribute-extension>
+          <ignored-by-renderer>true</ignored-by-renderer>
+        </attribute-extension>
+      </attribute>
+
+
+      <attribute>
+        <description>
+          Name or code of the background color for this table.
+        </description>
+        <display-name>Background Color</display-name>
+        <icon/>
+        <attribute-name>bgcolor</attribute-name>
+        <attribute-class>java.lang.String</attribute-class>
+        <attribute-extension>
+          <ignored-by-renderer>true</ignored-by-renderer>
+        </attribute-extension>
+      </attribute>
+      <attribute>
+        <description>
+          Width (in pixels) of the border to be drawn
+          around this table.
+        </description>
+        <display-name>Table Border</display-name>
+        <icon/>
+        <attribute-name>border</attribute-name>
+        <attribute-class>int</attribute-class>
+        <attribute-extension>
+          <ignored-by-renderer>true</ignored-by-renderer>
+        </attribute-extension>
+      </attribute>
+      <attribute>
+        <description>
+          Definition of how much space the user agent should
+          leave between the border of each cell and its contents.
+        </description>
+        <display-name>Cell Padding</display-name>
+        <icon/>
+        <attribute-name>cellpadding</attribute-name>
+        <attribute-class>java.lang.String</attribute-class>
+        <attribute-extension>
+          <ignored-by-renderer>true</ignored-by-renderer>
+        </attribute-extension>
+      </attribute>
+      <attribute>
+        <description>
+          Definition of how much space the user agent should
+          leave between the left side of the table and the
+          leftmost column, the top of the table and the top of
+          the top side of the topmost row, and so on for the
+          right and bottom of the table.  It also specifies
+          the amount of space to leave between cells.
+        </description>
+        <display-name>Cell Spacing</display-name>
+        <icon/>
+        <attribute-name>cellspacing</attribute-name>
+        <attribute-class>java.lang.String</attribute-class>
+        <attribute-extension>
+          <ignored-by-renderer>true</ignored-by-renderer>
+        </attribute-extension>
+      </attribute>
+      <attribute>
+        <description>
+          Comma-delimited list of CSS style classes that will be applied
+          to the columns of this table.  A space separated list of
+          classes may also be specified for any individual column.  If
+          the number of elements in this list is less than the number of
+          actual column children of the UIData, no "class"
+          attribute is output for each column greater than the number of
+          elements in the list.  If the number of elements in the list
+          is greater than the number of actual column children of the
+          UIData, the elements at the posisiton in the list
+          after the last column are ignored.
+        </description>
+        <display-name>Column CSS Classes</display-name>
+        <icon/>
+        <attribute-name>columnClasses</attribute-name>
+        <attribute-class>java.lang.String</attribute-class>
+      </attribute>
+      <attribute>
+        <description>
+          Space-separated list of CSS style class(es) that will be
+          applied to any footer generated for this table.
+        </description>
+        <display-name>Footer CSS Classes</display-name>
+        <icon/>
+        <attribute-name>footerClass</attribute-name>
+        <attribute-class>java.lang.String</attribute-class>
+      </attribute>
+      <attribute>
+        <description>
+          Code specifying which sides of the frame surrounding
+          this table will be visible.  Valid values are:
+          none (no sides, default value); above (top side only);
+          below (bottom side only); hsides (top and bottom sides
+          only); vsides (right and left sides only); lhs (left
+          hand side only); rhs (right hand side only); box
+          (all four sides); and border (all four sides).
+        </description>
+        <display-name>Table Frame</display-name>
+        <icon/>
+        <attribute-name>frame</attribute-name>
+        <attribute-class>java.lang.String</attribute-class>
+        <attribute-extension>
+          <ignored-by-renderer>true</ignored-by-renderer>
+        </attribute-extension>
+      </attribute>
+      <attribute>
+        <description>
+          Space-separated list of CSS style class(es) that will be
+          applied to any caption generated for this table.
+        </description>
+        <display-name>Caption CSS Classes</display-name>
+        <icon/>
+        <attribute-name>captionClass</attribute-name>
+        <attribute-class>java.lang.String</attribute-class>
+      </attribute>
+      <attribute>
+        <description>
+          CSS style(s) to be applied when this caption is rendered.
+        </description>
+        <display-name>Caption CSS Styles</display-name>
+        <icon/>
+        <attribute-name>captionStyle</attribute-name>
+        <attribute-class>java.lang.String</attribute-class>
+      </attribute>
+      <attribute>
+        <description>
+          Space-separated list of CSS style class(es) that will be
+          applied to any header generated for this table.
+        </description>
+        <display-name>Header CSS Classes</display-name>
+        <icon/>
+        <attribute-name>headerClass</attribute-name>
+        <attribute-class>java.lang.String</attribute-class>
+      </attribute>
+      <attribute>
+        <description>
+          Comma-delimited list of CSS style classes that will be applied
+          to the rows of this table.  A space separated list of classes
+          may also be specified for any individual row.  Thes styles are
+          applied, in turn, to each row in the table.  For example, if
+          the list has two elements, the first style class in the list
+          is applied to the first row, the second to the second row, the
+          first to the third row, the second to the fourth row, etc.  In
+          other words, we keep iterating through the list until we reach
+          the end, and then we start at the beginning again.
+        </description>
+        <display-name>Row CSS Classes</display-name>
+        <icon/>
+        <attribute-name>rowClasses</attribute-name>
+        <attribute-class>java.lang.String</attribute-class>
+      </attribute>
+      <attribute>
+        <description>
+          Code specifying which rules will appear between cells
+          within this table.  Valid values are:  none (no rules,
+          default value); groups (between row groups); rows
+          (between rows only); cols (between columns only); and
+          all (between all rows and columns).
+        </description>
+        <display-name>Table Rules</display-name>
+        <icon/>
+        <attribute-name>rules</attribute-name>
+        <attribute-class>java.lang.String</attribute-class>
+        <attribute-extension>
+          <ignored-by-renderer>true</ignored-by-renderer>
+        </attribute-extension>
+      </attribute>
+      <attribute>
+        <description>
+          Summary of this table's purpose and structure, for
+          user agents rendering to non-visual media such as
+          speech and Braille.
+        </description>
+        <display-name>Table Summary</display-name>
+        <icon/>
+        <attribute-name>summary</attribute-name>
+        <attribute-class>java.lang.String</attribute-class>
+        <attribute-extension>
+          <ignored-by-renderer>true</ignored-by-renderer>
+        </attribute-extension>
+      </attribute>
+      <attribute>
+        <description>
+          Width of the entire table, for visual user agents.
+        </description>
+        <display-name>Table Width</display-name>
+        <icon/>
+        <attribute-name>width</attribute-name>
+        <attribute-class>java.lang.String</attribute-class>
+        <attribute-extension>
+          <ignored-by-renderer>true</ignored-by-renderer>
+        </attribute-extension>
+      </attribute>
+      <attribute>
+        <description>
+          Comma separated list of row indices for which a new
+          "tbody" element should be started (and any
+          previously opened one should be ended).
+        </description>
+        <display-name>Body Rows</display-name>
+        <icon/>
+        <attribute-name>bodyrows</attribute-name>
+        <attribute-class>java.lang.String</attribute-class>
+      </attribute>
+
+      <attribute>
+        <description><![CDATA[<span class="changed_added_2_1">Boolean flag directing how the per-row component state should be handled.</span>]]></description>
+        <display-name>Preserve Row Component State</display-name>
+        <icon/>
+        <attribute-name>rowStatePreserved</attribute-name>
+        <attribute-class>boolean</attribute-class>
+        <attribute-extension>
+          <tag-attribute>false</tag-attribute>
+        </attribute-extension>
+      </attribute>
+      <renderer-extension>
+        <renders-children>true</renders-children>
+      </renderer-extension>
+    </renderer>
+    <renderer>
+      <description><![CDATA[
+
+<p><span class="changed_modified_2_0">Renders</span> an HTML "form" element.</p>
+
+      <p>Decode Behavior</p>
+
+      <ul>
+
+      <p>Obtain the <code>Map</code> from the "requestParameterMap"
+      property of the <code>ExternalContext</code>.  If the map contains
+      an entry for the "clientId" of this <code>UIForm</code> component,
+      call <code>setSubmitted(true)</code> on the form, otherwise call
+      <code>setSubmitted(false)</code> on the form.</p>
+
+      </ul>
+
+
+
+      <p>Encode Behavior</p>
+
+      <ul>
+
+      <p>The value of the "method" attribute must be "post".  The value
+      of the "action" attribute must be the result of passing the view
+      identifier of the current view to the <code>getActionURL()</code>
+      method of the <code>ViewHandler</code> for this application, then
+      passing that String to the <code>encodeActionURL()</code> method
+      on the <code>ExternalContext</code>.  The value of the acceptcharset
+      attribute must be rendered as the value of "accept-charset".
+      If the "styleClass" attribute is specified, render its value as the 
+      value of the "class" attribute.  Render a "name"
+      attribute with a value the same as the "id" attribute as described
+      in "<a href="renderkit-summary.html#general_encoding">General Notes on
+      Encoding</a>" regarding the "id" attribute for UIInput
+      components.  <p class="changed_added_2_0">Obtain the <code>UIViewRoot view identifier</code> and
+      use it to obtain an <code>action URL</code> by calling <code>ViewHandler.getActionURL</code>.
+      Use the <code>action URL</code> to obtain an <code>encoded action URL</code> by calling 
+      <code>ExternalContext.encodeActionURL</code>.  Obtain an 
+      <code>encoded partial action URL</code> by calling
+      <code>ExternalContext.encodePartialActionURL</code> using <code>action URL</code> as the argument.
+      Compare the result from <code>ExternalContext.encodePartialActionURL</code> with the
+      value from <code>ExternalContext.encodeActionURL()</code>.  If they are different, 
+      render a hidden field with the name <code>javax.faces.encodedURL</code> and the value
+      of this hidden field as the value from <code>ExternalContext.encodePartialActionURL</code>.</p>
+      Call <code>ViewHandler.writeState()</code>
+      before the the close of the "form" element. 
+      Render all the necessary hidden fields 
+      for all commandLink instances in the page just before the close of the "form" element.  
+      <div class="changed_modified_2_0">
+      Just before rendering the closing <code></form></code> element tag, render 
+      any resources that have been targeted for this form:
+      <ul>
+      <li>Obtain a <code>UIViewRoot</code> instance.</li>
+      <li>Obtain a <code>List</code> of component resources targeted for
+      this form with a call to <code>UIViewRoot.getComponentResources()</code>
+      with the <code>String "form"</code> as the argument.</li>
+      <li>Iterate over the returned <code>List</code> of <code>UIComponent</code> instances         
+      and call <code>encodeAll</code> on each <code>UIComponent</code> instance.
+      </ul>
+      </div>
+      </p>
+      </ul>
+      ]]></description>
+      <component-family>javax.faces.Form</component-family>
+      <renderer-type>javax.faces.Form</renderer-type>
       <renderer-class>
-        com.sun.faces.renderkit.html_basic.TableRenderer
+        com.sun.faces.renderkit.html_basic.FormRenderer
     </renderer-class>
-      <facet>
-        <facet-name>caption</facet-name>
-      </facet>
-      <facet>
-        <facet-name>header</facet-name>
-      </facet>
-      <facet>
-        <facet-name>footer</facet-name>
-      </facet>
-      <facet>
-        <facet-name>colgroups</facet-name>
-      </facet>
 
       <attribute>
         <description>
@@ -21672,7 +24295,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>style</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -21686,7 +24309,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>styleClass</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>false</pass-through>
+          <ignored-by-renderer>false</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -21699,7 +24322,31 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>title</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
+        </attribute-extension>
+      </attribute>
+      <attribute>
+        <description><![CDATA[
+          <p class="changed_added_2_2">Per the WAI-ARIA spec and its
+          relationship to HTML5 (Section title ARIA Role Attriubute),
+          every HTML element may have a "role" attribute whose value
+          must be passed through unmodified on the element on which it
+          is declared in the final rendered markup.  The attribute, if
+          specified, must have a value that is a string literal that is,
+          or an EL Expression that evaluates to, a set of
+          space-separated tokens representing the various WAI-ARIA roles
+          that the element belongs to.
+          </p>
+
+          <p class="changed_added_2_2">It is the page author's
+          responsibility to ensure that the user agent is capable of
+          correctly interpreting the value of this attribute.</p>]]></description>
+        <display-name>ARIA role</display-name>
+        <icon/>
+        <attribute-name>role</attribute-name>
+        <attribute-class>java.lang.String</attribute-class>
+        <attribute-extension>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
 
@@ -21714,7 +24361,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onclick</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -21728,7 +24375,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>ondblclick</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -21742,7 +24389,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onmousedown</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -21756,7 +24403,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onmouseup</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -21770,7 +24417,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onmouseover</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -21784,7 +24431,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onmousemove</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -21798,7 +24445,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onmouseout</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -21812,7 +24459,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onkeypress</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -21826,7 +24473,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onkeydown</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -21840,7 +24487,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onkeyup</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -21850,13 +24497,15 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <description>
           Direction indication for text that does not inherit directionality.
           Valid values are "LTR" (left-to-right) and "RTL" (right-to-left).
+          These attributes are case sensitive when rendering to XHTML, so
+          care must be taken to have the correct case.
         </description>
         <display-name>Direction</display-name>
         <icon/>
         <attribute-name>dir</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -21869,283 +24518,133 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>lang</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
 
 
       <attribute>
         <description>
-          Name or code of the background color for this table.
-        </description>
-        <display-name>Background Color</display-name>
-        <icon/>
-        <attribute-name>bgcolor</attribute-name>
-        <attribute-class>java.lang.String</attribute-class>
-        <attribute-extension>
-          <pass-through>true</pass-through>
-        </attribute-extension>
-      </attribute>
-      <attribute>
-        <description>
-          Width (in pixels) of the border to be drawn
-          around this table.
-        </description>
-        <display-name>Table Border</display-name>
-        <icon/>
-        <attribute-name>border</attribute-name>
-        <attribute-class>int</attribute-class>
-        <attribute-extension>
-          <pass-through>true</pass-through>
-        </attribute-extension>
-      </attribute>
-      <attribute>
-        <description>
-          Definition of how much space the user agent should
-          leave between the border of each cell and its contents.
-        </description>
-        <display-name>Cell Padding</display-name>
-        <icon/>
-        <attribute-name>cellpadding</attribute-name>
-        <attribute-class>java.lang.String</attribute-class>
-        <attribute-extension>
-          <pass-through>true</pass-through>
-        </attribute-extension>
-      </attribute>
-      <attribute>
-        <description>
-          Definition of how much space the user agent should
-          leave between the left side of the table and the
-          leftmost column, the top of the table and the top of
-          the top side of the topmost row, and so on for the
-          right and bottom of the table.  It also specifies
-          the amount of space to leave between cells.
-        </description>
-        <display-name>Cell Spacing</display-name>
-        <icon/>
-        <attribute-name>cellspacing</attribute-name>
-        <attribute-class>java.lang.String</attribute-class>
-        <attribute-extension>
-          <pass-through>true</pass-through>
-        </attribute-extension>
-      </attribute>
-      <attribute>
-        <description>
-          Comma-delimited list of CSS style classes that will be applied
-          to the columns of this table.  A space separated list of
-          classes may also be specified for any individual column.  If
-          the number of elements in this list is less than the number of
-          actual column children of the UIData, no "class"
-          attribute is output for each column greater than the number of
-          elements in the list.  If the number of elements in the list
-          is greater than the number of actual column children of the
-          UIData, the elements at the posisiton in the list
-          after the last column are ignored.
-        </description>
-        <display-name>Column CSS Classes</display-name>
-        <icon/>
-        <attribute-name>columnClasses</attribute-name>
-        <attribute-class>java.lang.String</attribute-class>
-      </attribute>
-      <attribute>
-        <description>
-          Space-separated list of CSS style class(es) that will be
-          applied to any footer generated for this table.
-        </description>
-        <display-name>Footer CSS Classes</display-name>
-        <icon/>
-        <attribute-name>footerClass</attribute-name>
-        <attribute-class>java.lang.String</attribute-class>
-      </attribute>
-      <attribute>
-        <description>
-          Code specifying which sides of the frame surrounding
-          this table will be visible.  Valid values are:
-          none (no sides, default value); above (top side only);
-          below (bottom side only); hsides (top and bottom sides
-          only); vsides (right and left sides only); lhs (left
-          hand side only); rhs (right hand side only); box
-          (all four sides); and border (all four sides).
+        List of content types that a server processing this form
+        will handle correctly
         </description>
-        <display-name>Table Frame</display-name>
+        <display-name>Content Type</display-name>
         <icon/>
-        <attribute-name>frame</attribute-name>
+        <attribute-name>accept</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
         <description>
-          Space-separated list of CSS style class(es) that will be
-          applied to any caption generated for this table.
-        </description>
-        <display-name>Caption CSS Classes</display-name>
-        <icon/>
-        <attribute-name>captionClass</attribute-name>
-        <attribute-class>java.lang.String</attribute-class>
-      </attribute>
-      <attribute>
-        <description>
-          CSS style(s) to be applied when this caption is rendered.
-        </description>
-        <display-name>Caption CSS Styles</display-name>
-        <icon/>
-        <attribute-name>captionStyle</attribute-name>
-        <attribute-class>java.lang.String</attribute-class>
-      </attribute>
-      <attribute>
-        <description>
-          Space-separated list of CSS style class(es) that will be
-          applied to any header generated for this table.
-        </description>
-        <display-name>Header CSS Classes</display-name>
-        <icon/>
-        <attribute-name>headerClass</attribute-name>
-        <attribute-class>java.lang.String</attribute-class>
-      </attribute>
-      <attribute>
-        <description>
-          Comma-delimited list of CSS style classes that will be applied
-          to the rows of this table.  A space separated list of classes
-          may also be specified for any individual row.  Thes styles are
-          applied, in turn, to each row in the table.  For example, if
-          the list has two elements, the first style class in the list
-          is applied to the first row, the second to the second row, the
-          first to the third row, the second to the fourth row, etc.  In
-          other words, we keep iterating through the list until we reach
-          the end, and then we start at the beginning again.
+        List of character encodings for input data
+        that are accepted by the server processing
+        this form.
         </description>
-        <display-name>Row CSS Classes</display-name>
+        <display-name>Character Set</display-name>
         <icon/>
-        <attribute-name>rowClasses</attribute-name>
+        <attribute-name>acceptcharset</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
       </attribute>
       <attribute>
         <description>
-          Code specifying which rules will appear between cells
-          within this table.  Valid values are:  none (no rules,
-          default value); groups (between row groups); rows
-          (between rows only); cols (between columns only); and
-          all (between all rows and columns).
+        Content type used to submit the form to the server.  If not
+        specified, the default value is
+        "application/x-www-form-urlencoded".
         </description>
-        <display-name>Table Rules</display-name>
+        <display-name>Encoding Type</display-name>
         <icon/>
-        <attribute-name>rules</attribute-name>
+        <attribute-name>enctype</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <default-value>"application/x-www-form-urlencoded"</default-value>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
         <description>
-          Summary of this table's purpose and structure, for
-          user agents rendering to non-visual media such as
-          speech and Braille.
+        Javascript code executed when this form is reset.
         </description>
-        <display-name>Table Summary</display-name>
+        <display-name>Form Reset Script</display-name>
         <icon/>
-        <attribute-name>summary</attribute-name>
+        <attribute-name>onreset</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
         <description>
-          Width of the entire table, for visual user agents.
+        Javascript code executed when this form is submitted.
         </description>
-        <display-name>Table Width</display-name>
+        <display-name>Form Submit Script</display-name>
         <icon/>
-        <attribute-name>width</attribute-name>
+        <attribute-name>onsubmit</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
         <description>
-          Comma separated list of row indices for which a new
-          "tbody" element should be started (and any
-          previously opened one should be ended).
+        Name of a frame where the response
+        retrieved after this form submit is to
+        be displayed.
         </description>
-        <display-name>Body Rows</display-name>
+        <display-name>Target Frame</display-name>
         <icon/>
-        <attribute-name>bodyrows</attribute-name>
+        <attribute-name>target</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
+        <attribute-extension>
+          <ignored-by-renderer>true</ignored-by-renderer>
+        </attribute-extension>
       </attribute>
 
       <renderer-extension>
         <renders-children>true</renders-children>
+        <tag-name>form</tag-name>
       </renderer-extension>
     </renderer>
     <renderer>
-      <description><![CDATA[<span class="changed_modified_2_0">
-            Renders</span> an HTML "form" element.
-
-      <p>Decode Behavior</p>
+      <description><![CDATA[<p><span
+            class="changed_modified_2_0">Renders</span> an HTML "img"
+            element.  Render the clientId as the value of the "id"
+            attribute.</p>
 
-      <ul>
+<div class="changed_modified_2_0">
 
-      <p>Obtain the <code>Map</code> from the "requestParameterMap"
-      property of the <code>ExternalContext</code>.  If the map contains
-      an entry for the "clientId" of this <code>UIForm</code> component,
-      call <code>setSubmitted(true)</code> on the form, otherwise call
-      <code>setSubmitted(false)</code> on the form.</p>
+<p>Handling the Value</p>
 
-      </ul>
+  <ul>
 
+    <p>If the "name" attribute is present, execute algorithm <a
+    href="javax.faces.Outputjavax.faces.resource.Script.html#ResourceCommonGetResource">Common Algorithm for Obtaining A Resource to Render</a> to obtain a <code>Resource</code> instance.  Call
+    <code>Resource.getRequestPath()</code> and output the result as the
+    value of the "src" attribute on the rendered markup.</p>
 
+    <p>Otherwise, if the "url" attribute is present, treat its value as
+    if it was the value of the "value" attribute.  Otherwise, if the
+    "value" attribute is present, render the value of the component as
+    the value of the "src" attribute, after passing it to the
+    <code>getResourceURL()</code> method of the <code>ViewHandler</code>
+    for this application, and passing the result through the
+    <code>encodeResourceURL()</code> method of the
+    <code>ExternalContext</code>.</p>
 
-      <p>Encode Behavior</p>
+    <p>When handling the "src" attribute,
+    the value must not be escaped.  For example, <code>&</code> must not
+    be turned into <code>&amp;</code>.  If the "styleClass"
+    attribute is specified, render its value as the value of the "class"
+    attribute.</p>
 
-      <ul>
+  </ul>
 
-      <p>The value of the "method" attribute must be "post".  The value
-      of the "action" attribute must be the result of passing the view
-      identifier of the current view to the <code>getActionURL()</code>
-      method of the <code>ViewHandler</code> for this application, then
-      passing that String to the <code>encodeActionURL()</code> method
-      on the <code>ExternalContext</code>.  The value of the acceptcharset
-      attribute must be rendered as the value of "accept-charset".
-      If the "styleClass" attribute is specified, render its value as the 
-      value of the "class" attribute.  Render a "name"
-      attribute with a value the same as the "id" attribute as described
-      in "<a href="../../../renderkitdocs/HTML_BASIC/renderkit-summary.html#general_encoding">General Notes on
-      Encoding</a>" regarding the "id" attribute for UIInput
-      components.  <p class="changed_added_2_0">Obtain the <code>UIViewRoot view identifier</code> and
-      use it to obtain an <code>action URL</code> by calling <code>ViewHandler.getActionURL</code>.
-      Use the <code>action URL</code> to obtain an <code>encoded action URL</code> by calling 
-      <code>ExternalContext.encodeActionURL</code>.  Obtain an 
-      <code>encoded partial action URL</code> by calling
-      <code>ExternalContext.encodePartialActionURL</code> using <code>action URL</code> as the argument.
-      Compare the result from <code>ExternalContext.encodePartialActionURL</code> with the
-      value from <code>ExternalContext.encodeActionURL()</code>.  If they are different, 
-      render a hidden field with the name <code>javax.faces.encodedURL</code> and the value
-      of this hidden field as the value from <code>ExternalContext.encodePartialActionURL</code>.</p>
-      Call <code>ViewHandler.writeState()</code>
-      before the the close of the "form" element.  Render all the
-      necessary hidden fields for all commandLink instances in the page
-      just before the close of the "form" element.  
-      <div class="changed_modified_2_0">
-      Just before rendering the closing <code></form></code> element tag, render 
-      any resources that have been targeted for this form:
-      <ul>
-      <li>Obtain a <code>UIViewRoot</code> instance.</li>
-      <li>Obtain a <code>List</code> of component resources targeted for
-      this form with a call to <code>UIViewRoot.getComponentResources()</code>
-      with the <code>String "form"</code> as the argument.</li>
-      <li>Iterate over the returned <code>List</code> of <code>UIComponent</code> instances         
-      and call <code>encodeAll</code> on each <code>UIComponent</code> instance.
-      </ul>
-      </div>
-      </p>
-      </ul>
-      </div>]]></description>
-      <component-family>javax.faces.Form</component-family>
-      <renderer-type>javax.faces.Form</renderer-type>
+</div>]]></description>
+      <component-family>javax.faces.Graphic</component-family>
+      <renderer-type>javax.faces.Image</renderer-type>
       <renderer-class>
-        com.sun.faces.renderkit.html_basic.FormRenderer
+        com.sun.faces.renderkit.html_basic.ImageRenderer
     </renderer-class>
 
       <attribute>
@@ -22157,7 +24656,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>style</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -22171,7 +24670,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>styleClass</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>false</pass-through>
+          <ignored-by-renderer>false</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -22184,7 +24683,31 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>title</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
+        </attribute-extension>
+      </attribute>
+      <attribute>
+        <description><![CDATA[
+          <p class="changed_added_2_2">Per the WAI-ARIA spec and its
+          relationship to HTML5 (Section title ARIA Role Attriubute),
+          every HTML element may have a "role" attribute whose value
+          must be passed through unmodified on the element on which it
+          is declared in the final rendered markup.  The attribute, if
+          specified, must have a value that is a string literal that is,
+          or an EL Expression that evaluates to, a set of
+          space-separated tokens representing the various WAI-ARIA roles
+          that the element belongs to.
+          </p>
+
+          <p class="changed_added_2_2">It is the page author's
+          responsibility to ensure that the user agent is capable of
+          correctly interpreting the value of this attribute.</p>]]></description>
+        <display-name>ARIA role</display-name>
+        <icon/>
+        <attribute-name>role</attribute-name>
+        <attribute-class>java.lang.String</attribute-class>
+        <attribute-extension>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
 
@@ -22199,7 +24722,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onclick</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -22213,7 +24736,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>ondblclick</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -22227,7 +24750,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onmousedown</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -22241,7 +24764,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onmouseup</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -22255,7 +24778,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onmouseover</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -22269,7 +24792,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onmousemove</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -22283,7 +24806,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onmouseout</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -22297,7 +24820,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onkeypress</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -22311,7 +24834,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onkeydown</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -22325,7 +24848,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onkeyup</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -22335,13 +24858,15 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <description>
           Direction indication for text that does not inherit directionality.
           Valid values are "LTR" (left-to-right) and "RTL" (right-to-left).
+          These attributes are case sensitive when rendering to XHTML, so
+          care must be taken to have the correct case.
         </description>
         <display-name>Direction</display-name>
         <icon/>
         <attribute-name>dir</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -22354,133 +24879,365 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>lang</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
+        </attribute-extension>
+      </attribute>
+
+
+      <attribute>
+        <description>
+        Alternate textual description of the
+        element rendered by this component.
+        </description>
+        <display-name>Alternate Text</display-name>
+        <icon/>
+        <attribute-name>alt</attribute-name>
+        <attribute-class>java.lang.String</attribute-class>
+        <attribute-extension>
+          <ignored-by-renderer>true</ignored-by-renderer>
+        </attribute-extension>
+      </attribute>
+      <attribute>
+        <description>
+        Override for the height of this image.
+        </description>
+        <display-name>Image Height</display-name>
+        <icon/>
+        <attribute-name>height</attribute-name>
+        <attribute-class>java.lang.String</attribute-class>
+        <attribute-extension>
+          <ignored-by-renderer>true</ignored-by-renderer>
+        </attribute-extension>
+      </attribute>
+      <attribute>
+        <description>
+        Flag indicating that this image is to be used as a server side
+        image map.  Such an image must be enclosed within a hyperlink
+        ("a").  A value of false causes no attribute to be rendered, 
+        while a value of true causes the attribute to be rendered as
+        ismap="ismap".
+        </description>
+        <display-name>Image Map Flag</display-name>
+        <icon/>
+        <attribute-name>ismap</attribute-name>
+        <attribute-class>boolean</attribute-class>
+        <attribute-extension>
+          <ignored-by-renderer>false</ignored-by-renderer>
+        </attribute-extension>
+      </attribute>
+      <attribute>
+        <description>
+        URI to a long description of the image
+        represented by this element.
+        </description>
+        <display-name>Long Description</display-name>
+        <icon/>
+        <attribute-name>longdesc</attribute-name>
+        <attribute-class>java.lang.String</attribute-class>
+        <attribute-extension>
+          <ignored-by-renderer>true</ignored-by-renderer>
+        </attribute-extension>
+      </attribute>
+      <attribute>
+        <description>
+        The name of a client side image map (an HTML "map"
+        element) for which this element provides the image.
+        </description>
+        <display-name>Use Image Map</display-name>
+        <icon/>
+        <attribute-name>usemap</attribute-name>
+        <attribute-class>java.lang.String</attribute-class>
+        <attribute-extension>
+          <ignored-by-renderer>true</ignored-by-renderer>
+        </attribute-extension>
+      </attribute>
+      <attribute>
+        <description>
+        Override for the width of this image.
+        </description>
+        <display-name>Image Width</display-name>
+        <icon/>
+        <attribute-name>width</attribute-name>
+        <attribute-class>java.lang.String</attribute-class>
+        <attribute-extension>
+          <ignored-by-renderer>true</ignored-by-renderer>
+        </attribute-extension>
+      </attribute>
+
+
+      <attribute>
+        <description><![CDATA[<div class="changed_added_2_0"><p>The <em>libraryName</em> for this resource.</p></div>]]></description>
+        <display-name>Library Name</display-name>
+        <icon/>
+        <attribute-name>library</attribute-name>
+        <attribute-class>java.lang.String</attribute-class>
+        <attribute-extension>
+          <required>false</required>
+          <tag-attribute>true</tag-attribute>
+        </attribute-extension>
+      </attribute>
+
+      <attribute>
+        <description><![CDATA[<div class="changed_added_2_0"><p>The 
+                <em>resourceName</em> for this resource.</p></div>]]></description>
+        <display-name>Resource Name</display-name>
+        <icon/>
+        <attribute-name>name</attribute-name>
+        <attribute-class>java.lang.String</attribute-class>
+        <attribute-extension>
+          <required>false</required>
+          <tag-attribute>true</tag-attribute>
+        </attribute-extension>
+      </attribute>
+      <renderer-extension>
+        <renders-children>true</renders-children>
+      </renderer-extension>
+    </renderer>
+    <renderer>
+      <description><![CDATA[<p class="changed_added_2_2">This
+            renderer is intended to be used with an arbitrary markup
+            element whose decoding needs can be entirely described by
+            the section "General notes on decoding" in the RenderKit
+            overview.</p>
+
+            <div class="changed_added_2_2">
+            <p>The local name of the rendered element must first be
+             determined for encoding. Look in the components's pass through
+             attribute map for a value under the key given by the value of the
+            symbolic constant
+            <code>Renderer.PASSTHROUGH_RENDERER_LOCALNAME_KEY</code>. If not found,
+            throw a <code>FacesException</code>.  If found, let this value be
+            <strong>localName</strong>.</p>
+
+
+            <p><a name="decode">Encode Behavior</a></p>
+
+  <p>If the component has a manually declared, not auto-generated
+  clientId, or if the component has behaviors attached to it, render the
+  clientId as the value of the "id" attribute.</p>
+
+            </div>
+
+
+]]></description>
+      <component-family>javax.faces.Panel</component-family>
+      <renderer-type>javax.faces.passthrough.Element</renderer-type>
+      <renderer-class>
+        com.sun.faces.renderkit.html_basic.PassthroughRenderer
+    </renderer-class>
+
+      <attribute>
+        <description>
+          Javascript code executed when a pointer button is
+          clicked over this element.
+        </description>
+        <display-name>Button Click Script</display-name>
+        <icon/>
+        <attribute-name>onclick</attribute-name>
+        <attribute-class>java.lang.String</attribute-class>
+        <attribute-extension>
+          <ignored-by-renderer>true</ignored-by-renderer>
+          <behavior/>
+        </attribute-extension>
+      </attribute>
+      <attribute>
+        <description>
+          Javascript code executed when a pointer button is
+          double clicked over this element.
+        </description>
+        <display-name>Double Click Script</display-name>
+        <icon/>
+        <attribute-name>ondblclick</attribute-name>
+        <attribute-class>java.lang.String</attribute-class>
+        <attribute-extension>
+          <ignored-by-renderer>true</ignored-by-renderer>
+          <behavior/>
+        </attribute-extension>
+      </attribute>
+      <attribute>
+        <description>
+          Javascript code executed when a pointer button is
+          pressed down over this element.
+        </description>
+        <display-name>Mouse Down Script</display-name>
+        <icon/>
+        <attribute-name>onmousedown</attribute-name>
+        <attribute-class>java.lang.String</attribute-class>
+        <attribute-extension>
+          <ignored-by-renderer>true</ignored-by-renderer>
+          <behavior/>
+        </attribute-extension>
+      </attribute>
+      <attribute>
+        <description>
+          Javascript code executed when a pointer button is
+          released over this element.
+        </description>
+        <display-name>Mouse Up Script</display-name>
+        <icon/>
+        <attribute-name>onmouseup</attribute-name>
+        <attribute-class>java.lang.String</attribute-class>
+        <attribute-extension>
+          <ignored-by-renderer>true</ignored-by-renderer>
+          <behavior/>
         </attribute-extension>
       </attribute>
-
-
       <attribute>
         <description>
-        List of content types that a server processing this form
-        will handle correctly
+          Javascript code executed when a pointer button is
+          moved onto this element.
         </description>
-        <display-name>Content Type</display-name>
+        <display-name>Mouse Over Script</display-name>
         <icon/>
-        <attribute-name>accept</attribute-name>
+        <attribute-name>onmouseover</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
+          <behavior/>
         </attribute-extension>
       </attribute>
       <attribute>
         <description>
-        List of character encodings for input data
-        that are accepted by the server processing
-        this form.
+          Javascript code executed when a pointer button is
+          moved within this element.
         </description>
-        <display-name>Character Set</display-name>
+        <display-name>Mouse Move Script</display-name>
         <icon/>
-        <attribute-name>acceptcharset</attribute-name>
+        <attribute-name>onmousemove</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
+        <attribute-extension>
+          <ignored-by-renderer>true</ignored-by-renderer>
+          <behavior/>
+        </attribute-extension>
       </attribute>
       <attribute>
         <description>
-        Content type used to submit the form to the server.  If not
-        specified, the default value is
-        "application/x-www-form-urlencoded".
+          Javascript code executed when a pointer button is
+          moved away from this element.
         </description>
-        <display-name>Encoding Type</display-name>
+        <display-name>Mouse Out Script</display-name>
         <icon/>
-        <attribute-name>enctype</attribute-name>
+        <attribute-name>onmouseout</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <default-value>"application/x-www-form-urlencoded"</default-value>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
+          <behavior/>
         </attribute-extension>
       </attribute>
       <attribute>
         <description>
-        Javascript code executed when this form is reset.
+          Javascript code executed when a key is
+          pressed and released over this element.
         </description>
-        <display-name>Form Reset Script</display-name>
+        <display-name>Key Press Script</display-name>
         <icon/>
-        <attribute-name>onreset</attribute-name>
+        <attribute-name>onkeypress</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
+          <behavior/>
         </attribute-extension>
       </attribute>
       <attribute>
         <description>
-        Javascript code executed when this form is submitted.
+          Javascript code executed when a key is
+          pressed down over this element.
         </description>
-        <display-name>Form Submit Script</display-name>
+        <display-name>Key Down Script</display-name>
         <icon/>
-        <attribute-name>onsubmit</attribute-name>
+        <attribute-name>onkeydown</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
+          <behavior/>
         </attribute-extension>
       </attribute>
       <attribute>
         <description>
-        Name of a frame where the response
-        retrieved after this form submit is to
-        be displayed.
+          Javascript code executed when a key is
+          released over this element.
         </description>
-        <display-name>Target Frame</display-name>
+        <display-name>Key Up Script</display-name>
         <icon/>
-        <attribute-name>target</attribute-name>
+        <attribute-name>onkeyup</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
+          <behavior/>
         </attribute-extension>
       </attribute>
 
       <renderer-extension>
-        <renders-children>true</renders-children>
-        <tag-name>form</tag-name>
+        <renders-children>false</renders-children>
       </renderer-extension>
     </renderer>
     <renderer>
-      <description><![CDATA[<p><span
-            class="changed_modified_2_0">Renders</span> an HTML "img"
-            element.  Render the clientId as the value of the "id"
-            attribute.</p>
+      <description><![CDATA[<p class="changed_added_2_2"><span>Renders</span>
+            an HTML "input" element of "type" "file". The standard HTML_BASIC
+            RenderKit specifies behavior that assumes Servlet 3.0 or later.  
+            Portlet implementations must override this implementation with a 
+            semantically equivalent one that functions under the constraints 
+            of the Portlet specification.</p>
 
-<div class="changed_modified_2_0">
+      <div class="changed_added_2_2">
 
-<p>Handling the Value</p>
+      <p><a name="decode">Decode Behavior</a></p>
 
-  <ul>
+      <ul>
 
-    <p>If the "name" attribute is present, execute algorithm <a
-    href="javax.faces.Outputjavax.faces.resource.Script.html#ResourceCommonGetResource">Common Algorithm for Obtaining A Resource to Render</a> to obtain a <code>Resource</code> instance.  Call
-    <code>Resource.getRequestPath()</code> and output the result as the
-    value of the "src" attribute on the rendered markup.</p>
+      <p>Obtain the <code>Map</code> from the "requestParameterMap"
+      property of the <code>ExternalContext</code>.  If the
+      <code>Map</code> contains an entry for the "clientId" of the
+      component, pass the value of the entry to the
+      <code>setSubmittedValue()</code> method of the component, which
+      must be an instance of <code>EditableValueHolder</code>, and
+      return.  Otherwise, obtain the "request" property from the
+      <code>ExternalContext</code> and cast it to
+      <code>javax.servlet.http.HttpServletRequest</code>.  Call
+      <code>getParts()</code> on the httpServletRequest. Iterate over
+      the parts.  If the "name" property of the current part is equal to
+      the "clientId", pass the current part to the
+      <code>setSubmittedValue()</code> method of the component.  If an
+      exception is thrown during the iteration, log the exception and
+      continue.</p>
+
+      <p>The standard implementation must override the 
+      <code>getConvertedValue()</code> so that it simply returns the
+      <code>submittedValue</code> argument.</p>
+
+      <p>Any exception thrown when interacting with the underlying
+      multi-part API must be wrapped in a <code>FacesException</code>
+      and allowed to reach the <code>ExceptionHandler</code>.</p>
 
-    <p>Otherwise, if the "url" attribute is present, treat its value as
-    if it was the value of the "value" attribute.  Otherwise, if the
-    "value" attribute is present, render the value of the component as
-    the value of the "src" attribute, after passing it to the
-    <code>getResourceURL()</code> method of the <code>ViewHandler</code>
-    for this application, and passing the result through the
-    <code>encodeResourceURL()</code> method of the
-    <code>ExternalContext</code>.</p>
+      </ul>
 
-    <p>When handling the "src" attribute,
-    the value must not be escaped.  For example, <code>&</code> must not
-    be turned into <code>&amp;</code>.  If the "styleClass"
-    attribute is specified, render its value as the value of the "class"
-    attribute.</p>
+      <p>Encode Behavior</p>
 
-  </ul>
+      <ul>
 
-</div>]]></description>
-      <component-family>javax.faces.Graphic</component-family>
-      <renderer-type>javax.faces.Image</renderer-type>
+      <p> Render the clientId of the component as the value of the
+      "name" attribute.  Do not render the "value" attribute.  If the
+      "styleClass" attribute is specified, render its value as the value
+      of the "class" attribute.  </p>
+
+      <p>If <code>ProjectStage</code> is not
+      <code>ProjectStage.Production</code>, verify that the enclosing
+      form has an <code>enctype</code> attribute whose value is
+      <code>multipart/form-data</code>.  If not, add a
+      <code>FacesMessage</code> for this component's clientId to the
+      <code>FacesContext</code> stating that file upload requires a form
+      with <code>enctype</code> equal to
+      <code>multipart/form-data</code>.  If <code>ProjectStage</code>
+      <strong>is</strong> <code>ProjectStage.Production</code>, do not
+      do this verification.</p>
+
+      </ul>
+
+</div> ]]></description>
+      <component-family>javax.faces.Input</component-family>
+      <renderer-type>javax.faces.File</renderer-type>
       <renderer-class>
-        com.sun.faces.renderkit.html_basic.ImageRenderer
+        com.sun.faces.renderkit.html_basic.FileRenderer
     </renderer-class>
 
       <attribute>
@@ -22492,7 +25249,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>style</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -22506,7 +25263,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>styleClass</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>false</pass-through>
+          <ignored-by-renderer>false</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -22519,7 +25276,31 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>title</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
+        </attribute-extension>
+      </attribute>
+      <attribute>
+        <description><![CDATA[
+          <p class="changed_added_2_2">Per the WAI-ARIA spec and its
+          relationship to HTML5 (Section title ARIA Role Attriubute),
+          every HTML element may have a "role" attribute whose value
+          must be passed through unmodified on the element on which it
+          is declared in the final rendered markup.  The attribute, if
+          specified, must have a value that is a string literal that is,
+          or an EL Expression that evaluates to, a set of
+          space-separated tokens representing the various WAI-ARIA roles
+          that the element belongs to.
+          </p>
+
+          <p class="changed_added_2_2">It is the page author's
+          responsibility to ensure that the user agent is capable of
+          correctly interpreting the value of this attribute.</p>]]></description>
+        <display-name>ARIA role</display-name>
+        <icon/>
+        <attribute-name>role</attribute-name>
+        <attribute-class>java.lang.String</attribute-class>
+        <attribute-extension>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
 
@@ -22534,7 +25315,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onclick</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -22548,7 +25329,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>ondblclick</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -22562,7 +25343,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onmousedown</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -22576,7 +25357,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onmouseup</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -22590,7 +25371,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onmouseover</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -22604,7 +25385,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onmousemove</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -22618,7 +25399,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onmouseout</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -22632,7 +25413,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onkeypress</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -22646,7 +25427,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onkeydown</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -22660,23 +25441,80 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onkeyup</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
+          <behavior/>
+        </attribute-extension>
+      </attribute>
+
+
+      <attribute>
+        <description>
+          Access key that, when pressed, transfers focus
+          to this element.
+        </description>
+        <display-name>Access Key</display-name>
+        <icon/>
+        <attribute-name>accesskey</attribute-name>
+        <attribute-class>java.lang.String</attribute-class>
+        <attribute-extension>
+          <ignored-by-renderer>true</ignored-by-renderer>
+        </attribute-extension>
+      </attribute>
+      <attribute>
+        <description>
+          Javascript code executed when this element loses focus.
+        </description>
+        <display-name>Focus Off Script</display-name>
+        <icon/>
+        <attribute-name>onblur</attribute-name>
+        <attribute-class>java.lang.String</attribute-class>
+        <attribute-extension>
+          <ignored-by-renderer>true</ignored-by-renderer>
+          <behavior/>
+        </attribute-extension>
+      </attribute>
+      <attribute>
+        <description>
+          Javascript code executed when this element receives focus.
+        </description>
+        <display-name>Focus On Script</display-name>
+        <icon/>
+        <attribute-name>onfocus</attribute-name>
+        <attribute-class>java.lang.String</attribute-class>
+        <attribute-extension>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
+      <attribute>
+        <description>
+          Position of this element in the tabbing order
+          for the current document.  This value must be
+          an integer between 0 and 32767.
+        </description>
+        <display-name>Tab Index</display-name>
+        <icon/>
+        <attribute-name>tabindex</attribute-name>
+        <attribute-class>java.lang.String</attribute-class>
+        <attribute-extension>
+          <ignored-by-renderer>true</ignored-by-renderer>
+        </attribute-extension>
+      </attribute>
 
 
       <attribute>
         <description>
           Direction indication for text that does not inherit directionality.
           Valid values are "LTR" (left-to-right) and "RTL" (right-to-left).
+          These attributes are case sensitive when rendering to XHTML, so
+          care must be taken to have the correct case.
         </description>
         <display-name>Direction</display-name>
         <icon/>
         <attribute-name>dir</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -22689,117 +25527,142 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>lang</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
 
 
       <attribute>
         <description>
-        Alternate textual description of the
-        element rendered by this component.
+          Flag indicating that this element must never receive focus or
+          be included in a subsequent submit.  A value of false causes
+          no attribute to be rendered, while a value of true causes the
+          attribute to be rendered as disabled="disabled".            
         </description>
-        <display-name>Alternate Text</display-name>
+        <display-name>Disabled Flag</display-name>
         <icon/>
-        <attribute-name>alt</attribute-name>
-        <attribute-class>java.lang.String</attribute-class>
+        <attribute-name>disabled</attribute-name>
+        <attribute-class>boolean</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>false</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
         <description>
-        Override for the height of this image.
+          Javascript code executed when this element loses focus
+          and its value has been modified since gaining focus.
         </description>
-        <display-name>Image Height</display-name>
+        <display-name>Input Change Script</display-name>
         <icon/>
-        <attribute-name>height</attribute-name>
+        <attribute-name>onchange</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>false</ignored-by-renderer>
+          <behavior/>
+          <behavior>valueChange</behavior>
+          <default-behavior>true</default-behavior>
         </attribute-extension>
       </attribute>
       <attribute>
         <description>
-        Flag indicating that this image is to be used as a server side
-        image map.  Such an image must be enclosed within a hyperlink
-        ("a").  A value of false causes no attribute to be rendered, 
-        while a value of true causes the attribute to be rendered as
-        ismap="ismap".
+          Javascript code executed when text within this
+          element is selected by the user.
         </description>
-        <display-name>Image Map Flag</display-name>
+        <display-name>Text Select Script</display-name>
         <icon/>
-        <attribute-name>ismap</attribute-name>
-        <attribute-class>boolean</attribute-class>
+        <attribute-name>onselect</attribute-name>
+        <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>false</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
+          <behavior/>
         </attribute-extension>
       </attribute>
       <attribute>
         <description>
-        URI to a long description of the image
-        represented by this element.
+          Flag indicating that this component will prohibit changes by
+          the user.  The element may receive focus unless it has also
+          been disabled.  A value of false causes
+          no attribute to be rendered, while a value of true causes the
+          attribute to be rendered as readonly="readonly".
         </description>
-        <display-name>Long Description</display-name>
+        <display-name>Read Only Flag</display-name>
         <icon/>
-        <attribute-name>longdesc</attribute-name>
-        <attribute-class>java.lang.String</attribute-class>
+        <attribute-name>readonly</attribute-name>
+        <attribute-class>boolean</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>false</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
         <description>
-        The name of a client side image map (an HTML "map"
-        element) for which this element provides the image.
+          A localized user presentable name for this component.
         </description>
-        <display-name>Use Image Map</display-name>
+        <display-name>Label</display-name>
         <icon/>
-        <attribute-name>usemap</attribute-name>
+        <attribute-name>label</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <renderer-attribute-ignore>true</renderer-attribute-ignore>
         </attribute-extension>
       </attribute>
+
+
       <attribute>
         <description>
-        Override for the width of this image.
+          Alternate textual description of the
+          element rendered by this component.
         </description>
-        <display-name>Image Width</display-name>
+        <display-name>Alternate Text</display-name>
         <icon/>
-        <attribute-name>width</attribute-name>
+        <attribute-name>alt</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
-
-
       <attribute>
-        <description><![CDATA[<div class="changed_added_2_0"><p>The <em>resourceName</em> for this resource.</p></div>]]></description>
-        <display-name>Resource Name</display-name>
+        <description>
+        If the value of this attribute is "off", render "off" as the value
+        of the attribute. This indicates that the  browser should
+        disable its autocomplete feature for this component.  This is
+        useful for components that perform autocompletion and do not
+        want the browser interfering.  If this attribute is not set or the value 
+        is "on", render nothing.
+        </description>
+        <display-name>Enable or disable browser autocompletion.</display-name>
         <icon/>
-        <attribute-name>name</attribute-name>
+        <attribute-name>autocomplete</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
+      </attribute>
+      <attribute>
+        <description>
+          The maximum number of characters that may
+          be entered in this field.
+        </description>
+        <display-name>Maximum Length</display-name>
+        <icon/>
+        <attribute-name>maxlength</attribute-name>
+        <attribute-class>int</attribute-class>
         <attribute-extension>
-          <required>false</required>
-          <tag-attribute>true</tag-attribute>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
-        <description><![CDATA[<div class="changed_added_2_0"><p>The <em>libraryName</em> for this resource.</p></div>]]></description>
-        <display-name>Library Name</display-name>
+        <description>
+          The number of characters used to determine
+          the width of this field.
+        </description>
+        <display-name>Field Width</display-name>
         <icon/>
-        <attribute-name>library</attribute-name>
-        <attribute-class>java.lang.String</attribute-class>
+        <attribute-name>size</attribute-name>
+        <attribute-class>int</attribute-class>
         <attribute-extension>
-          <required>false</required>
-          <tag-attribute>true</tag-attribute>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
 
       <renderer-extension>
-        <renders-children>true</renders-children>
+        <renders-children>false</renders-children>
       </renderer-extension>
     </renderer>
     <renderer>
@@ -22875,7 +25738,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>style</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -22889,7 +25752,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>styleClass</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>false</pass-through>
+          <ignored-by-renderer>false</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -22902,7 +25765,31 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>title</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
+        </attribute-extension>
+      </attribute>
+      <attribute>
+        <description><![CDATA[
+          <p class="changed_added_2_2">Per the WAI-ARIA spec and its
+          relationship to HTML5 (Section title ARIA Role Attriubute),
+          every HTML element may have a "role" attribute whose value
+          must be passed through unmodified on the element on which it
+          is declared in the final rendered markup.  The attribute, if
+          specified, must have a value that is a string literal that is,
+          or an EL Expression that evaluates to, a set of
+          space-separated tokens representing the various WAI-ARIA roles
+          that the element belongs to.
+          </p>
+
+          <p class="changed_added_2_2">It is the page author's
+          responsibility to ensure that the user agent is capable of
+          correctly interpreting the value of this attribute.</p>]]></description>
+        <display-name>ARIA role</display-name>
+        <icon/>
+        <attribute-name>role</attribute-name>
+        <attribute-class>java.lang.String</attribute-class>
+        <attribute-extension>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
 
@@ -22917,7 +25804,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onclick</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -22931,7 +25818,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>ondblclick</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -22945,7 +25832,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onmousedown</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -22959,7 +25846,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onmouseup</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -22973,7 +25860,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onmouseover</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -22987,7 +25874,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onmousemove</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -23001,7 +25888,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onmouseout</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -23015,7 +25902,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onkeypress</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -23029,7 +25916,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onkeydown</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -23043,7 +25930,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onkeyup</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -23059,7 +25946,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>accesskey</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -23071,7 +25958,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onblur</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -23084,7 +25971,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onfocus</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -23099,7 +25986,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>tabindex</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
 
@@ -23108,13 +25995,15 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <description>
           Direction indication for text that does not inherit directionality.
           Valid values are "LTR" (left-to-right) and "RTL" (right-to-left).
+          These attributes are case sensitive when rendering to XHTML, so
+          care must be taken to have the correct case.
         </description>
         <display-name>Direction</display-name>
         <icon/>
         <attribute-name>dir</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -23127,7 +26016,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>lang</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
 
@@ -23144,7 +26033,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>disabled</attribute-name>
         <attribute-class>boolean</attribute-class>
         <attribute-extension>
-          <pass-through>false</pass-through>
+          <ignored-by-renderer>false</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -23157,7 +26046,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onchange</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>false</pass-through>
+          <ignored-by-renderer>false</ignored-by-renderer>
           <behavior/>
           <behavior>valueChange</behavior>
           <default-behavior>true</default-behavior>
@@ -23173,7 +26062,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onselect</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -23190,7 +26079,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>readonly</attribute-name>
         <attribute-class>boolean</attribute-class>
         <attribute-extension>
-          <pass-through>false</pass-through>
+          <ignored-by-renderer>false</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -23217,7 +26106,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>alt</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -23244,7 +26133,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>maxlength</attribute-name>
         <attribute-class>int</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -23257,7 +26146,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>size</attribute-name>
         <attribute-class>int</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
 
@@ -23281,8 +26170,8 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       </renderer-extension>
     </renderer>
     <renderer>
-      <description><![CDATA[<p>Renders an HTML "input"
-      element of "type" "text".</p>
+      <description><![CDATA[<p><span class="changed_modified_2_2">Renders</span>
+            an HTML "input" element of "type" "text".</p>
 
       <p><a name="decode">Decode Behavior</a></p>
 
@@ -23308,6 +26197,11 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       of the "class" attribute.
       </p>
 
+      <p class="changed_added_2_2">If this element has children, they
+      must be ignored by default.  Implementions may provide a
+      configuration option that allows this element to render its
+      children.</p>
+
       </ul>]]></description>
       <component-family>javax.faces.Input</component-family>
       <renderer-type>javax.faces.Text</renderer-type>
@@ -23324,7 +26218,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>style</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -23338,7 +26232,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>styleClass</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>false</pass-through>
+          <ignored-by-renderer>false</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -23351,7 +26245,31 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>title</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
+        </attribute-extension>
+      </attribute>
+      <attribute>
+        <description><![CDATA[
+          <p class="changed_added_2_2">Per the WAI-ARIA spec and its
+          relationship to HTML5 (Section title ARIA Role Attriubute),
+          every HTML element may have a "role" attribute whose value
+          must be passed through unmodified on the element on which it
+          is declared in the final rendered markup.  The attribute, if
+          specified, must have a value that is a string literal that is,
+          or an EL Expression that evaluates to, a set of
+          space-separated tokens representing the various WAI-ARIA roles
+          that the element belongs to.
+          </p>
+
+          <p class="changed_added_2_2">It is the page author's
+          responsibility to ensure that the user agent is capable of
+          correctly interpreting the value of this attribute.</p>]]></description>
+        <display-name>ARIA role</display-name>
+        <icon/>
+        <attribute-name>role</attribute-name>
+        <attribute-class>java.lang.String</attribute-class>
+        <attribute-extension>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
 
@@ -23366,7 +26284,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onclick</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -23380,7 +26298,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>ondblclick</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -23394,7 +26312,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onmousedown</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -23408,7 +26326,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onmouseup</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -23422,7 +26340,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onmouseover</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -23436,7 +26354,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onmousemove</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -23450,7 +26368,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onmouseout</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -23464,7 +26382,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onkeypress</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -23478,7 +26396,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onkeydown</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -23492,7 +26410,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onkeyup</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -23508,7 +26426,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>accesskey</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -23520,7 +26438,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onblur</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -23533,7 +26451,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onfocus</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -23548,7 +26466,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>tabindex</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
 
@@ -23557,13 +26475,15 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <description>
           Direction indication for text that does not inherit directionality.
           Valid values are "LTR" (left-to-right) and "RTL" (right-to-left).
+          These attributes are case sensitive when rendering to XHTML, so
+          care must be taken to have the correct case.
         </description>
         <display-name>Direction</display-name>
         <icon/>
         <attribute-name>dir</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -23576,7 +26496,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>lang</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
 
@@ -23593,7 +26513,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>disabled</attribute-name>
         <attribute-class>boolean</attribute-class>
         <attribute-extension>
-          <pass-through>false</pass-through>
+          <ignored-by-renderer>false</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -23606,7 +26526,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onchange</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>false</pass-through>
+          <ignored-by-renderer>false</ignored-by-renderer>
           <behavior/>
           <behavior>valueChange</behavior>
           <default-behavior>true</default-behavior>
@@ -23622,7 +26542,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onselect</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -23639,7 +26559,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>readonly</attribute-name>
         <attribute-class>boolean</attribute-class>
         <attribute-extension>
-          <pass-through>false</pass-through>
+          <ignored-by-renderer>false</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -23666,7 +26586,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>alt</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -23693,7 +26613,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>maxlength</attribute-name>
         <attribute-class>int</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -23706,12 +26626,12 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>size</attribute-name>
         <attribute-class>int</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
 
       <renderer-extension>
-        <renders-children>true</renders-children>
+        <renders-children>false</renders-children>
       </renderer-extension>
     </renderer>
     <renderer>
@@ -23750,7 +26670,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>style</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -23764,7 +26684,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>styleClass</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>false</pass-through>
+          <ignored-by-renderer>false</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -23777,7 +26697,31 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>title</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
+        </attribute-extension>
+      </attribute>
+      <attribute>
+        <description><![CDATA[
+          <p class="changed_added_2_2">Per the WAI-ARIA spec and its
+          relationship to HTML5 (Section title ARIA Role Attriubute),
+          every HTML element may have a "role" attribute whose value
+          must be passed through unmodified on the element on which it
+          is declared in the final rendered markup.  The attribute, if
+          specified, must have a value that is a string literal that is,
+          or an EL Expression that evaluates to, a set of
+          space-separated tokens representing the various WAI-ARIA roles
+          that the element belongs to.
+          </p>
+
+          <p class="changed_added_2_2">It is the page author's
+          responsibility to ensure that the user agent is capable of
+          correctly interpreting the value of this attribute.</p>]]></description>
+        <display-name>ARIA role</display-name>
+        <icon/>
+        <attribute-name>role</attribute-name>
+        <attribute-class>java.lang.String</attribute-class>
+        <attribute-extension>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
 
@@ -23792,7 +26736,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onclick</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -23806,7 +26750,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>ondblclick</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -23820,7 +26764,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onmousedown</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -23834,7 +26778,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onmouseup</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -23848,7 +26792,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onmouseover</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -23862,7 +26806,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onmousemove</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -23876,7 +26820,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onmouseout</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -23890,7 +26834,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onkeypress</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -23904,7 +26848,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onkeydown</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -23918,7 +26862,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onkeyup</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -23934,7 +26878,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>accesskey</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -23946,7 +26890,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onblur</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -23959,7 +26903,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onfocus</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -23974,7 +26918,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>tabindex</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
 
@@ -23983,13 +26927,15 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <description>
           Direction indication for text that does not inherit directionality.
           Valid values are "LTR" (left-to-right) and "RTL" (right-to-left).
+          These attributes are case sensitive when rendering to XHTML, so
+          care must be taken to have the correct case.
         </description>
         <display-name>Direction</display-name>
         <icon/>
         <attribute-name>dir</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -24002,7 +26948,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>lang</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
 
@@ -24019,7 +26965,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>disabled</attribute-name>
         <attribute-class>boolean</attribute-class>
         <attribute-extension>
-          <pass-through>false</pass-through>
+          <ignored-by-renderer>false</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -24032,7 +26978,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onchange</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>false</pass-through>
+          <ignored-by-renderer>false</ignored-by-renderer>
           <behavior/>
           <behavior>valueChange</behavior>
           <default-behavior>true</default-behavior>
@@ -24048,7 +26994,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onselect</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -24065,7 +27011,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>readonly</attribute-name>
         <attribute-class>boolean</attribute-class>
         <attribute-extension>
-          <pass-through>false</pass-through>
+          <ignored-by-renderer>false</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -24091,7 +27037,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>cols</attribute-name>
         <attribute-class>int</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -24103,7 +27049,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>rows</attribute-name>
         <attribute-class>int</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <value-expression-enabled>true</value-expression-enabled>
         </attribute-extension>
       </attribute>
@@ -24113,7 +27059,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       </renderer-extension>
     </renderer>
     <renderer>
-      <description><![CDATA[<p>Render a single message for a specific component.</p>
+      <description><![CDATA[<p><span class="changed_modified_2_2">Render</span> a single message for a specific component.</p>
 
       <p>Set-up for Rendering</p>
 
@@ -24158,15 +27104,13 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       "style" attribute as the the value of the "style" attribute, and
       outputting the value of the "styleClass" attribute as the value of
       the "class" attribute on the "span" element.  Output the "dir" and
-      "lang" attributes as well, if they are present.  If the
+      "lang" attributes as well, if they are present.  <span class="changed_modified_2_2">If the
       <code>UIMessage</code> has a "tooltip" attribute with the value of
-      "true", and the <code>UIMessage</code> has "showSummary" and
-      "showDetail" properties with the value "true", if we haven't
-      already written out the "span", output the "summary" as the value
-      of the "title" attribute on the "span".  If we haven't already
-      written out a "title" attribute, and "showSummary" is true, output
-      the summary.  If "showDetail" is true, output the detail.  Close
-      out the span if necessary.</p>
+      "true",  and we haven't already written out the "span" and the "title" attribute for
+      the "span", output the "detail" as the value of the "title" attribute on the 
+      "span".  If we haven't already written out a "title" attribute, and there is 
+      no detail, output the "summary" as the value of the "title" attribute.</span>  
+      Close out the span if necessary.</p>
 
       </ul>]]></description>
       <component-family>javax.faces.Message</component-family>
@@ -24184,7 +27128,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>style</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -24198,7 +27142,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>styleClass</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>false</pass-through>
+          <ignored-by-renderer>false</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -24211,7 +27155,31 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>title</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
+        </attribute-extension>
+      </attribute>
+      <attribute>
+        <description><![CDATA[
+          <p class="changed_added_2_2">Per the WAI-ARIA spec and its
+          relationship to HTML5 (Section title ARIA Role Attriubute),
+          every HTML element may have a "role" attribute whose value
+          must be passed through unmodified on the element on which it
+          is declared in the final rendered markup.  The attribute, if
+          specified, must have a value that is a string literal that is,
+          or an EL Expression that evaluates to, a set of
+          space-separated tokens representing the various WAI-ARIA roles
+          that the element belongs to.
+          </p>
+
+          <p class="changed_added_2_2">It is the page author's
+          responsibility to ensure that the user agent is capable of
+          correctly interpreting the value of this attribute.</p>]]></description>
+        <display-name>ARIA role</display-name>
+        <icon/>
+        <attribute-name>role</attribute-name>
+        <attribute-class>java.lang.String</attribute-class>
+        <attribute-extension>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
 
@@ -24312,13 +27280,15 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <description>
           Direction indication for text that does not inherit directionality.
           Valid values are "LTR" (left-to-right) and "RTL" (right-to-left).
+          These attributes are case sensitive when rendering to XHTML, so
+          care must be taken to have the correct case.
         </description>
         <display-name>Direction</display-name>
         <icon/>
         <attribute-name>dir</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -24331,7 +27301,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>lang</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
 
@@ -24383,7 +27353,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>style</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -24397,7 +27367,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>styleClass</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>false</pass-through>
+          <ignored-by-renderer>false</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -24410,7 +27380,31 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>title</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
+        </attribute-extension>
+      </attribute>
+      <attribute>
+        <description><![CDATA[
+          <p class="changed_added_2_2">Per the WAI-ARIA spec and its
+          relationship to HTML5 (Section title ARIA Role Attriubute),
+          every HTML element may have a "role" attribute whose value
+          must be passed through unmodified on the element on which it
+          is declared in the final rendered markup.  The attribute, if
+          specified, must have a value that is a string literal that is,
+          or an EL Expression that evaluates to, a set of
+          space-separated tokens representing the various WAI-ARIA roles
+          that the element belongs to.
+          </p>
+
+          <p class="changed_added_2_2">It is the page author's
+          responsibility to ensure that the user agent is capable of
+          correctly interpreting the value of this attribute.</p>]]></description>
+        <display-name>ARIA role</display-name>
+        <icon/>
+        <attribute-name>role</attribute-name>
+        <attribute-class>java.lang.String</attribute-class>
+        <attribute-extension>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
 
@@ -24526,13 +27520,15 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <description>
           Direction indication for text that does not inherit directionality.
           Valid values are "LTR" (left-to-right) and "RTL" (right-to-left).
+          These attributes are case sensitive when rendering to XHTML, so
+          care must be taken to have the correct case.
         </description>
         <display-name>Direction</display-name>
         <icon/>
         <attribute-name>dir</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -24545,7 +27541,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>lang</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
 
@@ -24562,7 +27558,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <code>class</code> attribute.  Output the <code>style</code>
       attribute as the value of the <code>style</code> attribute.
       Output the <code>dir</code> and <code>lang</code> attributes as
-      pass through attributes.  Accrue a list of the values of all child
+      ignored-by-renderer attributes.  Accrue a list of the values of all child
       <code>UIParameter</code> components of this component.  If there
       are one or more accumulated parameter values, convert the list of
       parameter values to an <code>Object</code> array, call
@@ -24586,7 +27582,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>style</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -24600,7 +27596,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>styleClass</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>false</pass-through>
+          <ignored-by-renderer>false</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -24613,7 +27609,31 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>title</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
+        </attribute-extension>
+      </attribute>
+      <attribute>
+        <description><![CDATA[
+          <p class="changed_added_2_2">Per the WAI-ARIA spec and its
+          relationship to HTML5 (Section title ARIA Role Attriubute),
+          every HTML element may have a "role" attribute whose value
+          must be passed through unmodified on the element on which it
+          is declared in the final rendered markup.  The attribute, if
+          specified, must have a value that is a string literal that is,
+          or an EL Expression that evaluates to, a set of
+          space-separated tokens representing the various WAI-ARIA roles
+          that the element belongs to.
+          </p>
+
+          <p class="changed_added_2_2">It is the page author's
+          responsibility to ensure that the user agent is capable of
+          correctly interpreting the value of this attribute.</p>]]></description>
+        <display-name>ARIA role</display-name>
+        <icon/>
+        <attribute-name>role</attribute-name>
+        <attribute-class>java.lang.String</attribute-class>
+        <attribute-extension>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
 
@@ -24638,13 +27658,15 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <description>
           Direction indication for text that does not inherit directionality.
           Valid values are "LTR" (left-to-right) and "RTL" (right-to-left).
+          These attributes are case sensitive when rendering to XHTML, so
+          care must be taken to have the correct case.
         </description>
         <display-name>Direction</display-name>
         <icon/>
         <attribute-name>dir</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -24657,7 +27679,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>lang</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
 
@@ -24687,7 +27709,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>style</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -24701,7 +27723,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>styleClass</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>false</pass-through>
+          <ignored-by-renderer>false</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -24714,7 +27736,31 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>title</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
+        </attribute-extension>
+      </attribute>
+      <attribute>
+        <description><![CDATA[
+          <p class="changed_added_2_2">Per the WAI-ARIA spec and its
+          relationship to HTML5 (Section title ARIA Role Attriubute),
+          every HTML element may have a "role" attribute whose value
+          must be passed through unmodified on the element on which it
+          is declared in the final rendered markup.  The attribute, if
+          specified, must have a value that is a string literal that is,
+          or an EL Expression that evaluates to, a set of
+          space-separated tokens representing the various WAI-ARIA roles
+          that the element belongs to.
+          </p>
+
+          <p class="changed_added_2_2">It is the page author's
+          responsibility to ensure that the user agent is capable of
+          correctly interpreting the value of this attribute.</p>]]></description>
+        <display-name>ARIA role</display-name>
+        <icon/>
+        <attribute-name>role</attribute-name>
+        <attribute-class>java.lang.String</attribute-class>
+        <attribute-extension>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
 
@@ -24729,7 +27775,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onclick</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -24743,7 +27789,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>ondblclick</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -24757,7 +27803,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onmousedown</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -24771,7 +27817,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onmouseup</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -24785,7 +27831,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onmouseover</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -24799,7 +27845,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onmousemove</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -24813,7 +27859,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onmouseout</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -24827,7 +27873,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onkeypress</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -24841,7 +27887,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onkeydown</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -24855,7 +27901,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onkeyup</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -24871,7 +27917,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>accesskey</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -24883,7 +27929,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onblur</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -24896,7 +27942,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onfocus</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -24911,7 +27957,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>tabindex</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
 
@@ -24920,13 +27966,15 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <description>
           Direction indication for text that does not inherit directionality.
           Valid values are "LTR" (left-to-right) and "RTL" (right-to-left).
+          These attributes are case sensitive when rendering to XHTML, so
+          care must be taken to have the correct case.
         </description>
         <display-name>Direction</display-name>
         <icon/>
         <attribute-name>dir</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -24939,7 +27987,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>lang</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
 
@@ -24980,34 +28028,36 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
     <renderer>
       <description><![CDATA[
 
-            <p>Render an HTML "a" anchor element.  The value of the
-            component is rendered as the value of the "href" attribute.
-            Any child UIParameter components <span
-            class="changed_modified_2_0_rev_a">whose
-            <code>disable</code> property is <code>false</code></span> are
-            appended to the String to be output as the value of the
+            <p><span class="changed_modified_2_0_rev_a
+            changed_modified_2_2">Render</span> an HTML "a" anchor
+            element.  The value of the component is rendered as the
+            value of the "href" attribute.  Any child UIParameter
+            components <span class="changed_modified_2_0_rev_a">whose
+            <code>disable</code> property is <code>false</code></span>
+            are appended to the String to be output as the value of the
             "href" attribute as query parameters before rendering.  The
-            entire "href" string must be passed through a call to the
+            entire "href" string must be processed by a call to the
             <code>encodeResourceURL()</code> method of the
             <code>ExternalContext</code>.  The name of the UIParameter
             goes on the left hand side, and the value of the UIParameter
             on the right hand side.  The name and the value must be
-            URLEncoded.  <span class="changed_modified_2_0_rev_a">Note
-            that the required url encoding is handled by
-            <code>ResponseWrter.writeAttribute()</code>.</span> Each
+            URLEncoded.  <span class="changed_modified_2_0_rev_a
+            changed_modified_2_2">Note that the required url encoding is
+            handled by
+            <code>ResponseWrter.writeURIAttribute()</code>.</span> Each
             UIParameter instance is separeted by an ampersand, as
             dictated in the URL spec.  If the "styleClass" attribute is
             specified, render its value as the value of the "class"
             attribute.  If the "id" attribute is specified, follow the
             same steps as mentioned in the "<a
-            href="../../../renderkitdocs/HTML_BASIC/renderkit-summary.html#general_encoding">General
-            Notes on Encoding</a>" regarding the "id" attribute for
-            UIInput components.  If the "disabled" attribute is
-            specified, do not render the HTML "a" anchor element or the
-            "href" element.  Instead, render a "span" element.  If the
+            href="renderkit-summary.html#general_encoding">General Notes
+            on Encoding</a>" regarding the "id" attribute for UIInput
+            components.  If the "disabled" attribute is specified, do
+            not render the HTML "a" anchor element or the "href"
+            element.  Instead, render a "span" element.  If the
             "styleClass" attribute is specified, render its value as the
             value of the "class" attribute on the "span".  Render any
-            pass-through attributes on the "span".
+            ignored-by-renderer attributes on the "span".
 
             </p>]]></description>
       <component-family>javax.faces.Output</component-family>
@@ -25025,7 +28075,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>style</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -25039,7 +28089,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>styleClass</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>false</pass-through>
+          <ignored-by-renderer>false</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -25052,7 +28102,31 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>title</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
+        </attribute-extension>
+      </attribute>
+      <attribute>
+        <description><![CDATA[
+          <p class="changed_added_2_2">Per the WAI-ARIA spec and its
+          relationship to HTML5 (Section title ARIA Role Attriubute),
+          every HTML element may have a "role" attribute whose value
+          must be passed through unmodified on the element on which it
+          is declared in the final rendered markup.  The attribute, if
+          specified, must have a value that is a string literal that is,
+          or an EL Expression that evaluates to, a set of
+          space-separated tokens representing the various WAI-ARIA roles
+          that the element belongs to.
+          </p>
+
+          <p class="changed_added_2_2">It is the page author's
+          responsibility to ensure that the user agent is capable of
+          correctly interpreting the value of this attribute.</p>]]></description>
+        <display-name>ARIA role</display-name>
+        <icon/>
+        <attribute-name>role</attribute-name>
+        <attribute-class>java.lang.String</attribute-class>
+        <attribute-extension>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
 
@@ -25067,7 +28141,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onclick</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -25081,7 +28155,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>ondblclick</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -25095,7 +28169,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onmousedown</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -25109,7 +28183,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onmouseup</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -25123,7 +28197,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onmouseover</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -25137,7 +28211,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onmousemove</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -25151,7 +28225,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onmouseout</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -25165,7 +28239,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onkeypress</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -25179,7 +28253,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onkeydown</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -25193,7 +28267,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onkeyup</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -25209,7 +28283,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>accesskey</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -25221,7 +28295,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onblur</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -25234,7 +28308,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onfocus</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -25249,7 +28323,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>tabindex</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
 
@@ -25258,13 +28332,15 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <description>
           Direction indication for text that does not inherit directionality.
           Valid values are "LTR" (left-to-right) and "RTL" (right-to-left).
+          These attributes are case sensitive when rendering to XHTML, so
+          care must be taken to have the correct case.
         </description>
         <display-name>Direction</display-name>
         <icon/>
         <attribute-name>dir</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -25277,7 +28353,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>lang</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
 
@@ -25292,7 +28368,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>charset</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -25305,7 +28381,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>coords</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -25318,7 +28394,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>hreflang</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -25333,7 +28409,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>rel</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -25348,7 +28424,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>rev</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -25364,7 +28440,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>shape</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -25378,7 +28454,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>target</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>false</pass-through>
+          <ignored-by-renderer>false</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -25391,7 +28467,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>type</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -25405,7 +28481,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>disabled</attribute-name>
         <attribute-class>boolean</attribute-class>
         <attribute-extension>
-          <pass-through>false</pass-through>
+          <ignored-by-renderer>false</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -25418,7 +28494,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onclick</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>false</pass-through>
+          <ignored-by-renderer>false</ignored-by-renderer>
           <behavior/>
           <behavior>action</behavior>
           <default-behavior>true</default-behavior>
@@ -25434,7 +28510,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>ondblclick</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -25448,7 +28524,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onmousedown</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -25462,7 +28538,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onmouseup</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -25476,7 +28552,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onmouseover</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -25490,7 +28566,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onmousemove</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -25504,7 +28580,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onmouseout</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -25518,7 +28594,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onkeypress</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -25532,7 +28608,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onkeydown</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -25546,7 +28622,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onkeyup</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -25557,40 +28633,65 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       </renderer-extension>
     </renderer>
     <renderer>
-      <description><![CDATA[<div
-            class="changed_added_2_0"><p>Render an HTML "a" anchor
-            element.  The value of the component is rendered as the
-            anchor text and the outcome of the component is used to
-            determine the target URL rendered in the "href" attribute.
-            Any child <code>UIParameter</code> components <span
-            class="changed_modified_2_0_rev_a">whose
-            <code>disable</code> property is <code>false</code></span>
-            are appended to the String to be output as the value of the
-            "href" attribute as query parameters before rendering.  The
-            entire "href" string must be passed through a call to the
-            <code>encodeResourceURL()</code> method of the
-            <code>ExternalContext</code>.  The name of the
-            <code>UIParameter</code> goes on the left hand side, and the
-            value of the <code>UIParameter</code> on the right hand
-            side.  The name and the value must be URLEncoded.  <span
-            class="changed_modified_2_0_rev_a">Note that the required
-            url encoding is handled by
-            <code>ResponseWrter.writeAttribute()</code>.</span> Each
-            <code>UIParameter</code> instance is separated by an
-            ampersand, as dictated in the URL spec.  If the "fragment"
-            attribute is specified, the value will be included at the
-            end of the resulting URL preceded by a hash mark.  If the
-            "styleClass" attribute is specified, render its value as the
-            value of the "class" attribute.  If the "id" attribute is
-            specified, follow the same steps as mentioned in the "<a
-            href="../../../renderkitdocs/HTML_BASIC/renderkit-summary.html#general_encoding">General
-            Notes on Encoding</a>" regarding the "id" attribute for
-            UIInput components.  If the "disabled" attribute is
-            specified, do not render the HTML "a" anchor element or the
-            "href" element.  Instead, render a "span" element.  If the
-            "styleClass" attribute is specified, render its value as the
-            value of the "class" attribute on the "span".  Render any
-            pass-through attributes on the "span".</p></div>]]></description>
+      <description><![CDATA[
+
+<p><span class="changed_added_2_0 changed_modified_2_0_rev_a
+changed_modified_2_1 changed_modified_2_2">Render</span> <span class="changed_added_2_0
+changed_modified_2_1">an HTML "a" anchor element.  The value of the
+component is rendered as the anchor text and the outcome of the
+component is used to determine the target URL rendered in the "href"
+attribute.  Execute the <a
+href="javax.faces.OutcomeTargetjavax.faces.Button.html#UIOutcomeTargetGetEncodedTargetUrl">Algorithm
+to obtain the URL to which the user-agent should issue a GET request
+when clicked</a>.</span></p>
+
+<p class="changed_added_2_0">Any child <code>UIParameter</code> components
+<span class="changed_modified_2_0_rev_a">whose <code>disable</code>
+property is <code>false</code></span> are appended to the String to be
+output as the value of the "href" attribute as query parameters before
+rendering.  The entire "href" string must be processed by a call to
+the <code>encodeResourceURL()</code> method of the
+<code>ExternalContext</code>.  The name of the <code>UIParameter</code>
+goes on the left hand side, and the value of the
+<code>UIParameter</code> on the right hand side.  The name and the value
+must be URLEncoded.  <span class="changed_modified_2_0_rev_a">Note that
+the required url encoding is handled by
+<code>ResponseWrter.writeAttribute()</code>.</span> Each
+<code>UIParameter</code> instance is separated by an ampersand, as
+dictated in the URL spec.  If the "fragment" attribute is specified, the
+value will be included at the end of the resulting URL preceded by a
+hash mark.  If the "styleClass" attribute is specified, render its value
+as the value of the "class" attribute.</p>
+
+<p class="changed_added_2_0">If the "id" attribute is specified, follow
+the same steps as mentioned in the "<a
+href="renderkit-summary.html#general_encoding">General Notes on
+Encoding</a>" regarding the "id" attribute for UIInput components.  If
+the "disabled" attribute is specified, do not render the HTML "a" anchor
+element or the "href" element.  Instead, render a "span" element.  If
+the "styleClass" attribute is specified, render its value as the value
+of the "class" attribute on the "span".  Render any ignored-by-renderer
+attributes on the "span".</p>
+
+<div class="changed_added_2_2">
+
+        <p>To support entering flows that are defined by both a defining
+        document id and a flow id, add a component attribute to this
+        component whose name is given by the value of the symbolic
+        constant
+        <code>javax.faces.event.ActionListener.TO_FLOW_DOCUMENT_ID_ATTR_NAME</code>,
+        and whose value is the defining document id.  For example, when
+        using this component in a facelet page, the following markup
+        would cause such an attribute to be added.</p>
+
+<pre><code><h:link id="start_a" value="enter flow-a" outcome="flow-a"><br />
+  <f:attribute name="to-flow-document-id" value="unique"/><br />
+</h:link><br />
+</code></pre>
+
+</div>
+
+]]></description>
       <component-family>javax.faces.OutcomeTarget</component-family>
       <renderer-type>javax.faces.Link</renderer-type>
       <renderer-class>
@@ -25606,7 +28707,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>style</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -25620,7 +28721,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>styleClass</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>false</pass-through>
+          <ignored-by-renderer>false</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -25633,7 +28734,31 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>title</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
+        </attribute-extension>
+      </attribute>
+      <attribute>
+        <description><![CDATA[
+          <p class="changed_added_2_2">Per the WAI-ARIA spec and its
+          relationship to HTML5 (Section title ARIA Role Attriubute),
+          every HTML element may have a "role" attribute whose value
+          must be passed through unmodified on the element on which it
+          is declared in the final rendered markup.  The attribute, if
+          specified, must have a value that is a string literal that is,
+          or an EL Expression that evaluates to, a set of
+          space-separated tokens representing the various WAI-ARIA roles
+          that the element belongs to.
+          </p>
+
+          <p class="changed_added_2_2">It is the page author's
+          responsibility to ensure that the user agent is capable of
+          correctly interpreting the value of this attribute.</p>]]></description>
+        <display-name>ARIA role</display-name>
+        <icon/>
+        <attribute-name>role</attribute-name>
+        <attribute-class>java.lang.String</attribute-class>
+        <attribute-extension>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
 
@@ -25648,7 +28773,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onclick</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -25662,7 +28787,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>ondblclick</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -25676,7 +28801,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onmousedown</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -25690,7 +28815,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onmouseup</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -25704,7 +28829,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onmouseover</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -25718,7 +28843,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onmousemove</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -25732,7 +28857,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onmouseout</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -25746,7 +28871,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onkeypress</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -25760,7 +28885,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onkeydown</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -25774,7 +28899,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onkeyup</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -25790,7 +28915,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>accesskey</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -25802,7 +28927,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onblur</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -25815,7 +28940,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onfocus</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -25830,7 +28955,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>tabindex</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
 
@@ -25839,13 +28964,15 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <description>
           Direction indication for text that does not inherit directionality.
           Valid values are "LTR" (left-to-right) and "RTL" (right-to-left).
+          These attributes are case sensitive when rendering to XHTML, so
+          care must be taken to have the correct case.
         </description>
         <display-name>Direction</display-name>
         <icon/>
         <attribute-name>dir</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -25858,7 +28985,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>lang</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
 
@@ -25873,7 +29000,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>charset</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -25886,7 +29013,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>coords</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -25899,7 +29026,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>hreflang</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -25914,7 +29041,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>rel</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -25929,7 +29056,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>rev</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -25945,7 +29072,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>shape</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -25959,7 +29086,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>target</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>false</pass-through>
+          <ignored-by-renderer>false</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -25972,7 +29099,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>type</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -25986,7 +29113,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>disabled</attribute-name>
         <attribute-class>boolean</attribute-class>
         <attribute-extension>
-          <pass-through>false</pass-through>
+          <ignored-by-renderer>false</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -25999,7 +29126,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onclick</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>false</pass-through>
+          <ignored-by-renderer>false</ignored-by-renderer>
           <behavior/>
           <behavior>action</behavior>
           <default-behavior>true</default-behavior>
@@ -26015,7 +29142,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>ondblclick</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -26029,7 +29156,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onmousedown</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -26043,7 +29170,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onmouseup</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -26057,7 +29184,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onmouseover</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -26071,7 +29198,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onmousemove</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -26085,7 +29212,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onmouseout</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -26099,7 +29226,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onkeypress</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -26113,7 +29240,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onkeydown</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -26127,7 +29254,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onkeyup</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -26147,6 +29274,19 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-class>java.lang.String</attribute-class>
       </attribute>
 
+
+      <attribute>
+        <description><![CDATA[<p class="changed_added_2_2">Disable appending the <code>ClientWindow</code> on the rendering of this element.</p>
+        ]]></description>
+        <display-name>Disable ClientWindow on rendered OutcomeTarget</display-name>
+        <icon/>
+        <attribute-name>disableClientWindow</attribute-name>
+        <attribute-class>java.lang.Boolean</attribute-class>
+        <attribute-extension>
+          <default-value>false</default-value>
+        </attribute-extension>
+      </attribute>
+
       <renderer-extension>
         <renders-children>true</renders-children>
         <body-tag>true</body-tag>
@@ -26155,40 +29295,181 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       </renderer-extension>
     </renderer>
     <renderer>
-      <description><![CDATA[<div
-      class="changed_added_2_0"><p>Render an HTML "input" element of
-      type "button".  The value of the component is rendered as the
-      button text and the outcome of the component is used to determine
-      the target URL which is activated by onclick.  If "image"
-      attribute is specified, render it as the value of the "src"
-      attribute after passing it to the <code>getResourceURL()</code>
-      method of the <code>ViewHandler</code> for this application, and
-      passing the result through the <code>encodeResourceURL()</code>
-      method of the <code>ExternalContext</code>. Any child
-      <code>UIParameter</code> components are appended to the String to
-      be used as the target URL as query parameters before rendering.
-      The entire target URL string must be passed through a call to the
-      <code>encodeResourceURL()</code> method of the
-      <code>ExternalContext</code>.  The name of the
-      <code>UIParameter</code> goes on the left hand side, and the value
-      of the <code>UIParameter</code> on the right hand side.  The name
-      and the value must be URLEncoded.  Each <code>UIParameter</code>
-      instance is separeted by an ampersand, as dictated in the URL
-      spec.  The final encoded result will be written out to the onclick
-      attribute of the button as "window.location.href = '<encoded HREF
-      value>'".  If the developer has specified a custom onlclick the
-      window.location.href name/value pair will be appended at the end
-      of the developer specified script.  If the "fragment" attribute is
-      specified, the value will be included at the end of the resulting
-      URL preceded by a hash mark.  If the "styleClass" attribute is
-      specified, render its value as the value of the "class" attribute.
-      If the "id" attribute is specified, follow the same steps as
-      mentioned in the "<a
-      href="../../../renderkitdocs/HTML_BASIC/renderkit-summary.html#general_encoding">General
-      Notes on Encoding</a>" regarding the "id" attribute for UIInput
-      components.  If the "disabled" attribute is specified, do not
-      render the "onclick" element and assign the "disabled" attribute a
-      value of true.</p></div>]]></description>
+      <description><![CDATA[
+
+<p><span class="changed_modified_2_1"><span class="changed_modified_2_2">Render</span> a button that does not
+cause an HTTP POST.</span></p>
+
+<div class="changed_added_2_0"><div class="changed_modified_2_1">
+ 
+      <p>Encode Behavior</p>
+
+<p>Render an HTML "input" element of type "button".  The value of the
+component is rendered as the button text and the outcome of the
+component is used to determine the target URL which is activated by
+onclick.  If "image" attribute is specified, render it as the value of
+the "src" attribute after passing it to the
+<code>getResourceURL()</code> method of the <code>ViewHandler</code> for
+this application, and passing the result through the
+<code>encodeResourceURL()</code> method of the
+<code>ExternalContext</code>.</p>
+
+<p>If the component is not disabled, take the following actions.</p>
+
+  <p><a name="UIOutcomeTargetGetEncodedTargetUrl">Algorithm to obtain the url to which the user-agent should issue a GET request when clicked</a></p>
+
+  <p>Obtain the <code>NavigationCase</code> that corresponds to the
+  component instance for this <code>Renderer</code>.</p>
+
+  <p>Obtain an instance of
+  <code>javax.faces.application.ConfigurableNavigationHandler</code>
+  from the <code>ViewHandler</code>.  If no such instance can be
+  obtained, write the "disabled" attribute on the button.  Otherwise,
+  let <em>outcome</em> be the result of calling
+  <code>getOutcome()</code> on the argument component, which must be an
+  instance of <code>UIOutcomeTarget</code>.  If this result is
+  <code>null</code>, let <em>outcome</em> be the viewId of the current
+  <code>UIViewRoot</code>.  <span class="changed_modified_2_2">Obtain a
+  reference to the <code>NavigationCase</code>, called <em>navCase</em>
+  for discussion.  If the component has a non-<code>null</code>
+  attribute named by the value of the symbolic constant
+  <code>javax.faces.event.ActionListener.TO_FLOW_DOCUMENT_ID_ATTR_NAME</code>,
+  let <em>navCase</em> be the return from calling
+  <code>getNavigationCase()</code> on the
+  <code>ConfigurableNavigationHandler</code>, passing the current
+  <code>FacesContext</code> as the first argument, <code>null</code>, as
+  the second argument, <em>outcome</em> as the third argument, and the
+  value of the <code>TO_FLOW_DOCUMENT_ID_ATTR_NAME</code> attribute as
+  the fourth argument.  Otherwise, let <em>navCase</em> be the return
+  from calling <code>getNavigationCase()</code> on the
+  <code>ConfigurableNavigationHandler</code>, passing the current
+  <code>FacesContext</code> as the first argument, <code>null</code>, as
+  the second argument, and <em>outcome</em> as the third
+  argument.</span> If this returns <code>null</code>, log an informative
+  error which includes the component id, and write the "disabled"
+  attribute on the component markup, with the value of
+  <code>true</code>.  Otherwise obtain the encoded target URL using the
+  following algorithm.</p>
+
+  <p>Algorithm to obtain the encoded target URL</p>
+
+  <ul>
+
+	  <li><p>Let <em>params</em> be the <code>Map<String,
+	  List<String>></code> to be passed to
+	  <code>ViewHandler.getBookmarkableURL()</code>.  Build this map up first
+	  from any child <code>UIParameter</code> components.  These children must
+	  be processed in the order in which they appear as children.  If multiple
+	  children with the same name are encountered, their values must appear in
+	  the <code>List<String></code> in the <code>Map</code> entry with
+	  the same name, and appear in the list in the same order as their child
+	  order.</p></li>
+
+	  <li><p>Obtain any parameters included within the
+	  navigation case.  Call <code>getParameters()</code> on
+	  <em>navCase</em>.  The result will be a <code>Map<String,
+	  List<String>></code>.  If the result is
+	  non-<code>null</code> and non-empty, iterate over the entries
+	  from the result <code>Map</code> and, if no entry with the
+	  same name exists in <em>params</em>, set the value from the
+	  current entry as the value in the <em>params</em>
+	  <code>Map</code>.</p></li>
+
+          <li class="changed_added_2_2"><p>If the navigation case has a
+          non-null <code>toFlowDocumentId</code> property, add two
+          parameters as shown in this table.</p>
+
+          <table border="1">
+            <tr>
+              <th>parameter name</th>
+              <th>parameter value</th>
+            </tr>
+
+            <tr>
+               <td>value of <code>FlowHandler.TO_FLOW_DOCUMENT_ID_REQUEST_PARAM_NAME</code></td>
+
+               <td>value of the <code>toFlowDocumentId</code> property
+               of the navigation case</td>
+            </tr>
+            
+            <tr>
+               <td>value of <code>FlowHandler.FLOW_ID_REQUEST_PARAM_NAME</code></td>
+
+               <td>value of the <code>fromOutcome</code> property
+               of the navigation case</td>
+            </tr>
+            
+          </table>
+
+
+          </li>
+
+	  <li><p>Let <em>includeViewParams</em> be the result of a
+	  logical OR of the results from calling
+	  <code>isIncludeViewParams()</code> on the argument
+	  <code>UIOutcomeTarget</code> component and calling
+	  <code>isIncludeViewParams</code> on <em>navCase</em>.</p></li>
+
+
+	  <li><p>Call <code>getBookmarkableURL()</code> on the
+	  <code>ViewHandler</code>, passing the current
+	  <code>FacesContext</code> as the first argument, the return
+	  from calling <code>getToViewId()</code> as the second
+	  argument, <em>params</em> as the third argument, and
+	  <em>includeViewParams</em> as the last argument.</p></li>
+
+  </ul>
+
+  <p>The entire target URL string must be processed by a call to
+  the <code>encodeResourceURL()</code> method of the
+  <code>ExternalContext</code>.  The name of the
+  <code>UIParameter</code> goes on the left hand side, and the value of
+  the <code>UIParameter</code> on the right hand side.  The name and the
+  value must be URLEncoded.  Each <code>UIParameter</code> instance is
+  separeted by an ampersand, as dictated in the URL spec.  The final
+  encoded result will be written out to the onclick attribute of the
+  button as "window.location.href = '<encoded HREF value>'".  If the
+  developer has specified a custom onlclick the window.location.href
+  name/value pair will be appended at the end of the developer specified
+  script.  If the "fragment" attribute is specified, the value will be
+  included at the end of the resulting URL preceded by a hash mark.  If
+  the "styleClass" attribute is specified, render its value as the value
+  of the "class" attribute.  If the "id" attribute is specified, follow
+  the same steps as mentioned in the "<a
+  href="renderkit-summary.html#general_encoding">General
+  Notes on Encoding</a>" regarding the "id" attribute for UIInput
+  components.  If the "disabled" attribute is specified, do not render
+  the "onclick" element and assign the "disabled" attribute a value of
+  true.</p>
+
+</div></div>
+
+<div class="changed_added_2_2">
+
+  <p>Because this renderer is responsible for rendering its own
+  children, the renderer will decide if the end tag is required or
+  not based on the presence or absence of children for the
+  component.</p>
+
+        <p>To support entering flows that are defined by both a defining
+        document id and a flow id, add a component attribute to this
+        component whose name is given by the value of the symbolic
+        constant
+        <code>javax.faces.event.ActionListener.TO_FLOW_DOCUMENT_ID_ATTR_NAME</code>,
+        and whose value is the defining document id.  For example, when
+        using this component in a facelet page, the following markup
+        would cause such an attribute to be added.</p>
+
+<pre><code><h:button id="start_a" value="enter flow-a" outcome="flow-a"><br />
+  <f:attribute name="to-flow-document-id" value="unique"/><br />
+</h:button><br />
+</code></pre>
+
+
+
+</div>
+
+]]></description>
       <component-family>javax.faces.OutcomeTarget</component-family>
       <renderer-type>javax.faces.Button</renderer-type>
       <renderer-class>
@@ -26204,7 +29485,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>style</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -26218,7 +29499,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>styleClass</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>false</pass-through>
+          <ignored-by-renderer>false</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -26231,7 +29512,31 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>title</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
+        </attribute-extension>
+      </attribute>
+      <attribute>
+        <description><![CDATA[
+          <p class="changed_added_2_2">Per the WAI-ARIA spec and its
+          relationship to HTML5 (Section title ARIA Role Attriubute),
+          every HTML element may have a "role" attribute whose value
+          must be passed through unmodified on the element on which it
+          is declared in the final rendered markup.  The attribute, if
+          specified, must have a value that is a string literal that is,
+          or an EL Expression that evaluates to, a set of
+          space-separated tokens representing the various WAI-ARIA roles
+          that the element belongs to.
+          </p>
+
+          <p class="changed_added_2_2">It is the page author's
+          responsibility to ensure that the user agent is capable of
+          correctly interpreting the value of this attribute.</p>]]></description>
+        <display-name>ARIA role</display-name>
+        <icon/>
+        <attribute-name>role</attribute-name>
+        <attribute-class>java.lang.String</attribute-class>
+        <attribute-extension>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
 
@@ -26246,7 +29551,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>accesskey</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -26258,7 +29563,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onblur</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -26271,7 +29576,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onfocus</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -26286,7 +29591,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>tabindex</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
 
@@ -26295,13 +29600,15 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <description>
           Direction indication for text that does not inherit directionality.
           Valid values are "LTR" (left-to-right) and "RTL" (right-to-left).
+          These attributes are case sensitive when rendering to XHTML, so
+          care must be taken to have the correct case.
         </description>
         <display-name>Direction</display-name>
         <icon/>
         <attribute-name>dir</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -26314,7 +29621,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>lang</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
 
@@ -26329,7 +29636,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onclick</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -26343,7 +29650,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>ondblclick</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -26357,7 +29664,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onmousedown</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -26371,7 +29678,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onmouseup</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -26385,7 +29692,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onmouseover</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -26399,7 +29706,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onmousemove</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -26413,7 +29720,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onmouseout</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -26427,7 +29734,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onkeypress</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -26441,7 +29748,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onkeydown</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -26455,7 +29762,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onkeyup</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -26471,7 +29778,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>alt</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -26514,6 +29821,19 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-class>java.lang.String</attribute-class>
       </attribute>
 
+
+      <attribute>
+        <description><![CDATA[<p class="changed_added_2_2">Disable appending the <code>ClientWindow</code> on the rendering of this element.</p>
+        ]]></description>
+        <display-name>Disable ClientWindow on rendered OutcomeTarget</display-name>
+        <icon/>
+        <attribute-name>disableClientWindow</attribute-name>
+        <attribute-class>java.lang.Boolean</attribute-class>
+        <attribute-extension>
+          <default-value>false</default-value>
+        </attribute-extension>
+      </attribute>
+
       <renderer-extension>
         <renders-children>true</renders-children>
         <body-tag>true</body-tag>
@@ -26522,17 +29842,23 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       </renderer-extension>
     </renderer>
     <renderer>
-      <description>If the "styleClass", "style", "dir" or "lang"
-      attributes are present, render a "span" element.  If the
-      "styleClass" attribute is present, render its value as the value
-      of the "class" attribute.  If the "style" attribute is present,
-      pass it thru.  If the "escape" attribute is not present, or it is
-      present and its value is "true" all angle brackets should be
-      converted to the ampersand xx semicolon syntax when rendering the
-      value of the "value" attribute as the value of the component.  If
-      the "escape" attribute is present and is "false" the value of the
-      component should be rendered as text without escaping.
-            </description>
+      <description><![CDATA[
+      <p><span class="changed_modified_2_2">If</span> the
+      "styleClass", "style", "dir" or "lang" attributes are present,
+      render a "span" element.  If the "styleClass" attribute is
+      present, render its value as the value of the "class" attribute.
+      If the "style" attribute is present, convey it unmodified.  If the
+      "escape" attribute is not present, or it is present and its value
+      is "true" all angle brackets should be converted to the ampersand
+      xx semicolon syntax when rendering the value of the "value"
+      attribute as the value of the component.  If the "escape"
+      attribute is present and is "false" the value of the component
+      should be rendered as text without escaping.</p>
+
+      <p class="changed_added_2_2">If this element has children,
+      they must be ignored by default.  Implementions may provide a
+      configuration option that allows this element to render its
+      children.</p>]]></description>
       <component-family>javax.faces.Output</component-family>
       <renderer-type>javax.faces.Text</renderer-type>
       <renderer-class>
@@ -26548,7 +29874,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>style</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -26562,7 +29888,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>styleClass</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>false</pass-through>
+          <ignored-by-renderer>false</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -26575,7 +29901,31 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>title</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
+        </attribute-extension>
+      </attribute>
+      <attribute>
+        <description><![CDATA[
+          <p class="changed_added_2_2">Per the WAI-ARIA spec and its
+          relationship to HTML5 (Section title ARIA Role Attriubute),
+          every HTML element may have a "role" attribute whose value
+          must be passed through unmodified on the element on which it
+          is declared in the final rendered markup.  The attribute, if
+          specified, must have a value that is a string literal that is,
+          or an EL Expression that evaluates to, a set of
+          space-separated tokens representing the various WAI-ARIA roles
+          that the element belongs to.
+          </p>
+
+          <p class="changed_added_2_2">It is the page author's
+          responsibility to ensure that the user agent is capable of
+          correctly interpreting the value of this attribute.</p>]]></description>
+        <display-name>ARIA role</display-name>
+        <icon/>
+        <attribute-name>role</attribute-name>
+        <attribute-class>java.lang.String</attribute-class>
+        <attribute-extension>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
 
@@ -26600,13 +29950,15 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <description>
           Direction indication for text that does not inherit directionality.
           Valid values are "LTR" (left-to-right) and "RTL" (right-to-left).
+          These attributes are case sensitive when rendering to XHTML, so
+          care must be taken to have the correct case.
         </description>
         <display-name>Direction</display-name>
         <icon/>
         <attribute-name>dir</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -26619,12 +29971,12 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>lang</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
 
       <renderer-extension>
-        <renders-children>true</renders-children>
+        <renders-children>false</renders-children>
       </renderer-extension>
     </renderer>
     <renderer>
@@ -26635,7 +29987,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       of the "class" attribute on the "caption" element.  If the "captionStyle" attribute
       is specified, render its value as the value of the "style" attribute
       on the "caption" element.  If the "styleClass" attribute is specified, render 
-      its value as the value of the "class" attribute.  Render the pass-through 
+      its value as the value of the "class" attribute.  Render the ignored-by-renderer 
       attributes in the table below.  Render the "header" facet, if present, inside of
       "thead", "tr", and "th" elements, nested in that order.  If the
       "headerClass" attribute is specifed, render its value as the value
@@ -26677,7 +30029,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>style</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -26691,7 +30043,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>styleClass</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>false</pass-through>
+          <ignored-by-renderer>false</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -26704,7 +30056,31 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>title</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
+        </attribute-extension>
+      </attribute>
+      <attribute>
+        <description><![CDATA[
+          <p class="changed_added_2_2">Per the WAI-ARIA spec and its
+          relationship to HTML5 (Section title ARIA Role Attriubute),
+          every HTML element may have a "role" attribute whose value
+          must be passed through unmodified on the element on which it
+          is declared in the final rendered markup.  The attribute, if
+          specified, must have a value that is a string literal that is,
+          or an EL Expression that evaluates to, a set of
+          space-separated tokens representing the various WAI-ARIA roles
+          that the element belongs to.
+          </p>
+
+          <p class="changed_added_2_2">It is the page author's
+          responsibility to ensure that the user agent is capable of
+          correctly interpreting the value of this attribute.</p>]]></description>
+        <display-name>ARIA role</display-name>
+        <icon/>
+        <attribute-name>role</attribute-name>
+        <attribute-class>java.lang.String</attribute-class>
+        <attribute-extension>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
 
@@ -26719,7 +30095,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onclick</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -26733,7 +30109,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>ondblclick</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -26747,7 +30123,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onmousedown</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -26761,7 +30137,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onmouseup</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -26775,7 +30151,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onmouseover</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -26789,7 +30165,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onmousemove</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -26803,7 +30179,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onmouseout</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -26817,7 +30193,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onkeypress</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -26831,7 +30207,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onkeydown</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -26845,7 +30221,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onkeyup</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -26855,13 +30231,15 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <description>
           Direction indication for text that does not inherit directionality.
           Valid values are "LTR" (left-to-right) and "RTL" (right-to-left).
+          These attributes are case sensitive when rendering to XHTML, so
+          care must be taken to have the correct case.
         </description>
         <display-name>Direction</display-name>
         <icon/>
         <attribute-name>dir</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -26874,7 +30252,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>lang</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
 
@@ -26888,7 +30266,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>bgcolor</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -26901,7 +30279,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>border</attribute-name>
         <attribute-class>int</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -26914,7 +30292,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>cellpadding</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -26931,7 +30309,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>cellspacing</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -26977,7 +30355,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>frame</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -27039,7 +30417,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>rules</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -27053,7 +30431,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>summary</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -27065,7 +30443,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>width</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -27117,41 +30495,183 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
 
       <attribute>
         <description>
-          CSS style(s) to be applied when this component is rendered.
+          CSS style(s) to be applied when this component is rendered.
+        </description>
+        <display-name>CSS Styles</display-name>
+        <icon/>
+        <attribute-name>style</attribute-name>
+        <attribute-class>java.lang.String</attribute-class>
+        <attribute-extension>
+          <ignored-by-renderer>true</ignored-by-renderer>
+        </attribute-extension>
+      </attribute>
+      <attribute>
+        <description>
+          Space-separated list of CSS style class(es) to be applied when
+          this element is rendered.  This value must be passed through
+          as the "class" property on generated markup.
+        </description>
+        <display-name>CSS Style Classes</display-name>
+        <icon/>
+        <attribute-name>styleClass</attribute-name>
+        <attribute-class>java.lang.String</attribute-class>
+        <attribute-extension>
+          <ignored-by-renderer>false</ignored-by-renderer>
+        </attribute-extension>
+      </attribute>
+      <attribute>
+        <description>
+          The type of layout markup to use when rendering this group.
+          If the value is "block" the renderer must produce an HTML
+          "div" element.  Otherwise HTML "span" element must
+          be produced.
+        </description>
+        <display-name>Layout</display-name>
+        <icon/>
+        <attribute-name>layout</attribute-name>
+        <attribute-class>java.lang.String</attribute-class>
+      </attribute>
+
+
+      <attribute>
+        <description>
+          Javascript code executed when a pointer button is
+          clicked over this element.
+        </description>
+        <display-name>Button Click Script</display-name>
+        <icon/>
+        <attribute-name>onclick</attribute-name>
+        <attribute-class>java.lang.String</attribute-class>
+        <attribute-extension>
+          <ignored-by-renderer>true</ignored-by-renderer>
+          <behavior/>
+        </attribute-extension>
+      </attribute>
+      <attribute>
+        <description>
+          Javascript code executed when a pointer button is
+          double clicked over this element.
+        </description>
+        <display-name>Double Click Script</display-name>
+        <icon/>
+        <attribute-name>ondblclick</attribute-name>
+        <attribute-class>java.lang.String</attribute-class>
+        <attribute-extension>
+          <ignored-by-renderer>true</ignored-by-renderer>
+          <behavior/>
+        </attribute-extension>
+      </attribute>
+      <attribute>
+        <description>
+          Javascript code executed when a pointer button is
+          pressed down over this element.
+        </description>
+        <display-name>Mouse Down Script</display-name>
+        <icon/>
+        <attribute-name>onmousedown</attribute-name>
+        <attribute-class>java.lang.String</attribute-class>
+        <attribute-extension>
+          <ignored-by-renderer>true</ignored-by-renderer>
+          <behavior/>
+        </attribute-extension>
+      </attribute>
+      <attribute>
+        <description>
+          Javascript code executed when a pointer button is
+          released over this element.
+        </description>
+        <display-name>Mouse Up Script</display-name>
+        <icon/>
+        <attribute-name>onmouseup</attribute-name>
+        <attribute-class>java.lang.String</attribute-class>
+        <attribute-extension>
+          <ignored-by-renderer>true</ignored-by-renderer>
+          <behavior/>
+        </attribute-extension>
+      </attribute>
+      <attribute>
+        <description>
+          Javascript code executed when a pointer button is
+          moved onto this element.
+        </description>
+        <display-name>Mouse Over Script</display-name>
+        <icon/>
+        <attribute-name>onmouseover</attribute-name>
+        <attribute-class>java.lang.String</attribute-class>
+        <attribute-extension>
+          <ignored-by-renderer>true</ignored-by-renderer>
+          <behavior/>
+        </attribute-extension>
+      </attribute>
+      <attribute>
+        <description>
+          Javascript code executed when a pointer button is
+          moved within this element.
+        </description>
+        <display-name>Mouse Move Script</display-name>
+        <icon/>
+        <attribute-name>onmousemove</attribute-name>
+        <attribute-class>java.lang.String</attribute-class>
+        <attribute-extension>
+          <ignored-by-renderer>true</ignored-by-renderer>
+          <behavior/>
+        </attribute-extension>
+      </attribute>
+      <attribute>
+        <description>
+          Javascript code executed when a pointer button is
+          moved away from this element.
         </description>
-        <display-name>CSS Styles</display-name>
+        <display-name>Mouse Out Script</display-name>
         <icon/>
-        <attribute-name>style</attribute-name>
+        <attribute-name>onmouseout</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
+          <behavior/>
         </attribute-extension>
       </attribute>
       <attribute>
         <description>
-          Space-separated list of CSS style class(es) to be applied when
-          this element is rendered.  This value must be passed through
-          as the "class" property on generated markup.
+          Javascript code executed when a key is
+          pressed and released over this element.
         </description>
-        <display-name>CSS Style Classes</display-name>
+        <display-name>Key Press Script</display-name>
         <icon/>
-        <attribute-name>styleClass</attribute-name>
+        <attribute-name>onkeypress</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>false</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
+          <behavior/>
         </attribute-extension>
       </attribute>
       <attribute>
         <description>
-          The type of layout markup to use when rendering this group.
-          If the value is "block" the renderer must produce an HTML
-          "div" element.  Otherwise HTML "span" element must
-          be produced.
+          Javascript code executed when a key is
+          pressed down over this element.
         </description>
-        <display-name>Layout</display-name>
+        <display-name>Key Down Script</display-name>
         <icon/>
-        <attribute-name>layout</attribute-name>
+        <attribute-name>onkeydown</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
+        <attribute-extension>
+          <ignored-by-renderer>true</ignored-by-renderer>
+          <behavior/>
+        </attribute-extension>
+      </attribute>
+      <attribute>
+        <description>
+          Javascript code executed when a key is
+          released over this element.
+        </description>
+        <display-name>Key Up Script</display-name>
+        <icon/>
+        <attribute-name>onkeyup</attribute-name>
+        <attribute-class>java.lang.String</attribute-class>
+        <attribute-extension>
+          <ignored-by-renderer>true</ignored-by-renderer>
+          <behavior/>
+        </attribute-extension>
       </attribute>
 
       <renderer-extension>
@@ -27202,7 +30722,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>style</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -27216,7 +30736,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>styleClass</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>false</pass-through>
+          <ignored-by-renderer>false</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -27229,7 +30749,31 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>title</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
+        </attribute-extension>
+      </attribute>
+      <attribute>
+        <description><![CDATA[
+          <p class="changed_added_2_2">Per the WAI-ARIA spec and its
+          relationship to HTML5 (Section title ARIA Role Attriubute),
+          every HTML element may have a "role" attribute whose value
+          must be passed through unmodified on the element on which it
+          is declared in the final rendered markup.  The attribute, if
+          specified, must have a value that is a string literal that is,
+          or an EL Expression that evaluates to, a set of
+          space-separated tokens representing the various WAI-ARIA roles
+          that the element belongs to.
+          </p>
+
+          <p class="changed_added_2_2">It is the page author's
+          responsibility to ensure that the user agent is capable of
+          correctly interpreting the value of this attribute.</p>]]></description>
+        <display-name>ARIA role</display-name>
+        <icon/>
+        <attribute-name>role</attribute-name>
+        <attribute-class>java.lang.String</attribute-class>
+        <attribute-extension>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
 
@@ -27244,7 +30788,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onclick</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -27258,7 +30802,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>ondblclick</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -27272,7 +30816,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onmousedown</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -27286,7 +30830,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onmouseup</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -27300,7 +30844,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onmouseover</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -27314,7 +30858,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onmousemove</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -27328,7 +30872,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onmouseout</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -27342,7 +30886,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onkeypress</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -27356,7 +30900,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onkeydown</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -27370,7 +30914,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onkeyup</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -27386,7 +30930,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>accesskey</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -27398,7 +30942,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onblur</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -27411,7 +30955,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onfocus</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -27426,7 +30970,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>tabindex</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
 
@@ -27435,13 +30979,15 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <description>
           Direction indication for text that does not inherit directionality.
           Valid values are "LTR" (left-to-right) and "RTL" (right-to-left).
+          These attributes are case sensitive when rendering to XHTML, so
+          care must be taken to have the correct case.
         </description>
         <display-name>Direction</display-name>
         <icon/>
         <attribute-name>dir</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -27454,7 +31000,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>lang</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
 
@@ -27471,7 +31017,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>disabled</attribute-name>
         <attribute-class>boolean</attribute-class>
         <attribute-extension>
-          <pass-through>false</pass-through>
+          <ignored-by-renderer>false</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -27484,7 +31030,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onchange</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>false</pass-through>
+          <ignored-by-renderer>false</ignored-by-renderer>
           <behavior/>
           <behavior>valueChange</behavior>
           <default-behavior>true</default-behavior>
@@ -27500,7 +31046,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onselect</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -27517,7 +31063,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>readonly</attribute-name>
         <attribute-class>boolean</attribute-class>
         <attribute-extension>
-          <pass-through>false</pass-through>
+          <ignored-by-renderer>false</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -27538,8 +31084,8 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       </renderer-extension>
     </renderer>
     <renderer>
-      <description><![CDATA[<p><span
-            class="changed_modified_2_0">Render</span> an HTML checkbox
+      <description><![CDATA[<p><span class="changed_modified_2_0
+            changed_modified_2_0_rev_a">Render</span> an HTML checkbox
             list.</p>
 
       <p><a name="decode">Decode Behavior</a></p>
@@ -27558,7 +31104,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <p>Render a "table" element.  If the "styleClass" is specified,
       render the value of the "styleClass" attribute as the value of the
       "class" attribute on the "table" element. If the "style", or
-      "border" attributes are specified, pass them thru <span
+      "border" attributes are specified, convey them <span
       class="changed_added_2_0">and render their values as the "style"
       and "border" attributes on the "table", respectively.</span> If
       the "layout" attribute is specified, and its value is
@@ -27636,7 +31182,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>style</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -27650,7 +31196,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>styleClass</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>false</pass-through>
+          <ignored-by-renderer>false</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -27663,7 +31209,31 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>title</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
+        </attribute-extension>
+      </attribute>
+      <attribute>
+        <description><![CDATA[
+          <p class="changed_added_2_2">Per the WAI-ARIA spec and its
+          relationship to HTML5 (Section title ARIA Role Attriubute),
+          every HTML element may have a "role" attribute whose value
+          must be passed through unmodified on the element on which it
+          is declared in the final rendered markup.  The attribute, if
+          specified, must have a value that is a string literal that is,
+          or an EL Expression that evaluates to, a set of
+          space-separated tokens representing the various WAI-ARIA roles
+          that the element belongs to.
+          </p>
+
+          <p class="changed_added_2_2">It is the page author's
+          responsibility to ensure that the user agent is capable of
+          correctly interpreting the value of this attribute.</p>]]></description>
+        <display-name>ARIA role</display-name>
+        <icon/>
+        <attribute-name>role</attribute-name>
+        <attribute-class>java.lang.String</attribute-class>
+        <attribute-extension>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
 
@@ -27678,7 +31248,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onclick</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -27692,7 +31262,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>ondblclick</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -27706,7 +31276,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onmousedown</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -27720,7 +31290,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onmouseup</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -27734,7 +31304,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onmouseover</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -27748,7 +31318,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onmousemove</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -27762,7 +31332,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onmouseout</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -27776,7 +31346,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onkeypress</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -27790,7 +31360,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onkeydown</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -27804,7 +31374,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onkeyup</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -27820,7 +31390,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>accesskey</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -27832,7 +31402,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onblur</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -27845,7 +31415,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onfocus</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -27860,7 +31430,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>tabindex</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
 
@@ -27869,13 +31439,15 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <description>
           Direction indication for text that does not inherit directionality.
           Valid values are "LTR" (left-to-right) and "RTL" (right-to-left).
+          These attributes are case sensitive when rendering to XHTML, so
+          care must be taken to have the correct case.
         </description>
         <display-name>Direction</display-name>
         <icon/>
         <attribute-name>dir</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -27888,7 +31460,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>lang</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
 
@@ -27905,7 +31477,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>disabled</attribute-name>
         <attribute-class>boolean</attribute-class>
         <attribute-extension>
-          <pass-through>false</pass-through>
+          <ignored-by-renderer>false</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -27918,7 +31490,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onchange</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>false</pass-through>
+          <ignored-by-renderer>false</ignored-by-renderer>
           <behavior/>
           <behavior>valueChange</behavior>
           <default-behavior>true</default-behavior>
@@ -27934,7 +31506,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onselect</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -27951,7 +31523,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>readonly</attribute-name>
         <attribute-class>boolean</attribute-class>
         <attribute-extension>
-          <pass-through>false</pass-through>
+          <ignored-by-renderer>false</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -27978,7 +31550,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>border</attribute-name>
         <attribute-class>int</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -28070,9 +31642,9 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       </renderer-extension>
     </renderer>
     <renderer>
-      <description><![CDATA[<p><span
-            class="changed_modified_2_0">Render</span> an HTML option
-            list.</p>
+      <description><![CDATA[<p><span class="changed_modified_2_0
+            changed_modified_2_0_rev_a
+            changed_modified_2_2">Render</span> an HTML option list.</p>
 
       <p>Decode Behavior</p>
 
@@ -28080,6 +31652,18 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       that handle <code>UISelectMany</code> or <code>UISelectOne</code>
       components.</p>
 
+      <div class="changed_added_2_2">
+
+      <p>If the collection type of the collection that provides the
+      value of this component is not one of the types handled by a
+      converter in the package <code>javax.faces.convert</code>, a
+      converter must explicitly be specified using the appropriate code
+      in the VDL.  For example, use <code><f:converter></code> in
+      JSP or Facelet pages.</p>
+
+      </div>
+      
+
       <ul>
 
       <p><a name="decodeMany">Decode Behavior for
@@ -28155,7 +31739,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       not be rendered.</span> If the current child is a
       <code>UISelectItem</code> create a <code>SelectItem</code>instance
       from its <code>itemValue, itemLabel</code>, <code
-      class="changed_added_2_0">itemEscaped</code>, and
+      class="changed_added_2_0_rev_a">itemEscaped</code>, and
       <code>itemDescription</code> properties, add it to the list.  If
       the current child is a <code>UISelectItems</code> instance, call
       its <code>getValue()</code> method.  If the result is a
@@ -28168,26 +31752,32 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       label, the value as the value, and <code>null</code> as the
       description.</p>
 
-      <p>Iterate over the list of <code>SelectItem</code> beans.  If the
-      current element is a <code>SelectItemGroup</code>, render an
-      "optgroup" element with a "label" attribute, the value of which is
-      the "label" property from the current element, then call
-      <code>getSelectItems()</code> and render each element as below.
-      If the current element is not a <code>SelectItemGroup</code>,
-      render an "option" element.  Follow the conversion rules in the
-      spec to obtain a renderable <code>String</code> from the "value"
-      property of the current element, render that as the value of the
-      "value" atribute.  Now it is time to see if the current element is
-      the selected value.  Call its <code>getSubmittedValue()</code>
-      method, casting the result to an <code>Object []</code>, otherwise
-      the component must be a <code>UISelectOne</code> instance, call
-      its <code>getSubmittedValue()</code> method and create an
-      <code>Object []</code> around the result.  Determine the type of
-      the resultant array, if the resultant array is non-null, otherwise
-      the type is <code>String</code>.  Coerce the current item value to
-      this type following the Expression Language coercion rules.  If
-      the resultant array is non-null, we look in the array for a value
-      that, when we pass the renderable value to its
+      <p><span class="changed_modified_2_0_rev_a">Iterate over the list
+      of <code>SelectItem</code> beans.  If the current element is a
+      <code>SelectItemGroup</code>, render an "optgroup" element with a
+      "label" attribute, the value of which is the "label" property from
+      the current element, then call <code>getSelectItems()</code> and
+      render each element as below.  If the current element is not a
+      <code>SelectItemGroup</code>, render an "option" element.  <span
+      class="changed_modified_2_2">In both the case of the "option"
+      element or the "optgroup" element, the implementation must pass
+      the <code>UISelectItem</code> or <code>UISelectItems</code>
+      corresponding to the <code>SelectItem</code> bean to the call to
+      <code>ResponseWriter.startElement()</code></span>.  Follow the
+      conversion rules in the spec to obtain a renderable
+      <code>String</code> from the "value" property of the current
+      element, render that as the value of the "value" atribute.  Now it
+      is time to see if the current element is the selected value.  Call
+      its <code>getSubmittedValue()</code> method, casting the result to
+      an <code>Object []</code>, otherwise the component must be a
+      <code>UISelectOne</code> instance, call its
+      <code>getSubmittedValue()</code> method and create an <code>Object
+      []</code> around the result.  Determine the type of the resultant
+      array, if the resultant array is non-null, otherwise the type is
+      <code>String</code>.  Coerce the current item value to this type
+      following the Expression Language coercion rules.  If the
+      resultant array is non-null, we look in the array for a
+      value</span> that, when we pass the renderable value to its
       <code>equals()</code> method, it returns <code>true</code>,
       meaning the current element is selected.  If the resultant array
       is <code>null</code>, if the component is a
@@ -28205,16 +31795,16 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       HTML boolean property "selected".  If the current
       SelectItem.isDisabled() returns true, render "disabled" as the
       value of the "disabled" attribute.  <span
-      class="changed_added_2_0">If the value of the <code>escape</code>
-      property is true, use the <code>writeText()</code> method of
-      <code>ResponseWriter</code> to write out the value of the
-      <code>label</code> property.  Otherwise, use the
-      <code>write()</code> method of the <code>ResponseWriter</code> to
-      do so.</span></p>
+      class="changed_added_2_0_rev_a">If the value of the
+      <code>escape</code> property is true, use the
+      <code>writeText()</code> method of <code>ResponseWriter</code> to
+      write out the value of the <code>label</code> property.
+      Otherwise, use the <code>write()</code> method of the
+      <code>ResponseWriter</code> to do so.</span></p>
 
       </ul>
 
-      </ul>]]></description>
+</ul>]]></description>
       <component-family>javax.faces.SelectMany</component-family>
       <renderer-type>javax.faces.Listbox</renderer-type>
       <renderer-class>
@@ -28230,7 +31820,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>style</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -28244,7 +31834,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>styleClass</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>false</pass-through>
+          <ignored-by-renderer>false</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -28257,7 +31847,31 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>title</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
+        </attribute-extension>
+      </attribute>
+      <attribute>
+        <description><![CDATA[
+          <p class="changed_added_2_2">Per the WAI-ARIA spec and its
+          relationship to HTML5 (Section title ARIA Role Attriubute),
+          every HTML element may have a "role" attribute whose value
+          must be passed through unmodified on the element on which it
+          is declared in the final rendered markup.  The attribute, if
+          specified, must have a value that is a string literal that is,
+          or an EL Expression that evaluates to, a set of
+          space-separated tokens representing the various WAI-ARIA roles
+          that the element belongs to.
+          </p>
+
+          <p class="changed_added_2_2">It is the page author's
+          responsibility to ensure that the user agent is capable of
+          correctly interpreting the value of this attribute.</p>]]></description>
+        <display-name>ARIA role</display-name>
+        <icon/>
+        <attribute-name>role</attribute-name>
+        <attribute-class>java.lang.String</attribute-class>
+        <attribute-extension>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
 
@@ -28272,7 +31886,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onclick</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -28286,7 +31900,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>ondblclick</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -28300,7 +31914,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onmousedown</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -28314,7 +31928,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onmouseup</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -28328,7 +31942,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onmouseover</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -28342,7 +31956,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onmousemove</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -28356,7 +31970,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onmouseout</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -28370,7 +31984,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onkeypress</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -28384,7 +31998,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onkeydown</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -28398,7 +32012,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onkeyup</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -28414,7 +32028,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>accesskey</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -28426,7 +32040,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onblur</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -28439,7 +32053,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onfocus</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -28454,7 +32068,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>tabindex</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
 
@@ -28463,13 +32077,15 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <description>
           Direction indication for text that does not inherit directionality.
           Valid values are "LTR" (left-to-right) and "RTL" (right-to-left).
+          These attributes are case sensitive when rendering to XHTML, so
+          care must be taken to have the correct case.
         </description>
         <display-name>Direction</display-name>
         <icon/>
         <attribute-name>dir</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -28482,7 +32098,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>lang</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
 
@@ -28499,7 +32115,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>disabled</attribute-name>
         <attribute-class>boolean</attribute-class>
         <attribute-extension>
-          <pass-through>false</pass-through>
+          <ignored-by-renderer>false</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -28512,7 +32128,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onchange</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>false</pass-through>
+          <ignored-by-renderer>false</ignored-by-renderer>
           <behavior/>
           <behavior>valueChange</behavior>
           <default-behavior>true</default-behavior>
@@ -28528,7 +32144,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onselect</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -28545,7 +32161,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>readonly</attribute-name>
         <attribute-class>boolean</attribute-class>
         <attribute-extension>
-          <pass-through>false</pass-through>
+          <ignored-by-renderer>false</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -28674,7 +32290,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>style</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -28688,7 +32304,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>styleClass</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>false</pass-through>
+          <ignored-by-renderer>false</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -28701,7 +32317,31 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>title</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
+        </attribute-extension>
+      </attribute>
+      <attribute>
+        <description><![CDATA[
+          <p class="changed_added_2_2">Per the WAI-ARIA spec and its
+          relationship to HTML5 (Section title ARIA Role Attriubute),
+          every HTML element may have a "role" attribute whose value
+          must be passed through unmodified on the element on which it
+          is declared in the final rendered markup.  The attribute, if
+          specified, must have a value that is a string literal that is,
+          or an EL Expression that evaluates to, a set of
+          space-separated tokens representing the various WAI-ARIA roles
+          that the element belongs to.
+          </p>
+
+          <p class="changed_added_2_2">It is the page author's
+          responsibility to ensure that the user agent is capable of
+          correctly interpreting the value of this attribute.</p>]]></description>
+        <display-name>ARIA role</display-name>
+        <icon/>
+        <attribute-name>role</attribute-name>
+        <attribute-class>java.lang.String</attribute-class>
+        <attribute-extension>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
 
@@ -28716,7 +32356,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onclick</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -28730,7 +32370,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>ondblclick</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -28744,7 +32384,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onmousedown</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -28758,7 +32398,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onmouseup</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -28772,7 +32412,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onmouseover</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -28786,7 +32426,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onmousemove</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -28800,7 +32440,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onmouseout</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -28814,7 +32454,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onkeypress</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -28828,7 +32468,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onkeydown</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -28842,7 +32482,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onkeyup</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -28858,7 +32498,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>accesskey</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -28870,7 +32510,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onblur</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -28883,7 +32523,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onfocus</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -28898,7 +32538,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>tabindex</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
 
@@ -28907,13 +32547,15 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <description>
           Direction indication for text that does not inherit directionality.
           Valid values are "LTR" (left-to-right) and "RTL" (right-to-left).
+          These attributes are case sensitive when rendering to XHTML, so
+          care must be taken to have the correct case.
         </description>
         <display-name>Direction</display-name>
         <icon/>
         <attribute-name>dir</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -28926,7 +32568,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>lang</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
 
@@ -28943,7 +32585,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>disabled</attribute-name>
         <attribute-class>boolean</attribute-class>
         <attribute-extension>
-          <pass-through>false</pass-through>
+          <ignored-by-renderer>false</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -28956,7 +32598,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onchange</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>false</pass-through>
+          <ignored-by-renderer>false</ignored-by-renderer>
           <behavior/>
           <behavior>valueChange</behavior>
           <default-behavior>true</default-behavior>
@@ -28972,7 +32614,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onselect</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -28989,7 +32631,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>readonly</attribute-name>
         <attribute-class>boolean</attribute-class>
         <attribute-extension>
-          <pass-through>false</pass-through>
+          <ignored-by-renderer>false</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -29106,7 +32748,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>style</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -29120,7 +32762,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>styleClass</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>false</pass-through>
+          <ignored-by-renderer>false</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -29133,7 +32775,31 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>title</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
+        </attribute-extension>
+      </attribute>
+      <attribute>
+        <description><![CDATA[
+          <p class="changed_added_2_2">Per the WAI-ARIA spec and its
+          relationship to HTML5 (Section title ARIA Role Attriubute),
+          every HTML element may have a "role" attribute whose value
+          must be passed through unmodified on the element on which it
+          is declared in the final rendered markup.  The attribute, if
+          specified, must have a value that is a string literal that is,
+          or an EL Expression that evaluates to, a set of
+          space-separated tokens representing the various WAI-ARIA roles
+          that the element belongs to.
+          </p>
+
+          <p class="changed_added_2_2">It is the page author's
+          responsibility to ensure that the user agent is capable of
+          correctly interpreting the value of this attribute.</p>]]></description>
+        <display-name>ARIA role</display-name>
+        <icon/>
+        <attribute-name>role</attribute-name>
+        <attribute-class>java.lang.String</attribute-class>
+        <attribute-extension>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
 
@@ -29148,7 +32814,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onclick</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -29162,7 +32828,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>ondblclick</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -29176,7 +32842,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onmousedown</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -29190,7 +32856,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onmouseup</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -29204,7 +32870,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onmouseover</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -29218,7 +32884,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onmousemove</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -29232,7 +32898,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onmouseout</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -29246,7 +32912,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onkeypress</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -29260,7 +32926,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onkeydown</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -29274,7 +32940,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onkeyup</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -29290,7 +32956,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>accesskey</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -29302,7 +32968,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onblur</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -29315,7 +32981,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onfocus</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -29330,7 +32996,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>tabindex</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
 
@@ -29339,13 +33005,15 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <description>
           Direction indication for text that does not inherit directionality.
           Valid values are "LTR" (left-to-right) and "RTL" (right-to-left).
+          These attributes are case sensitive when rendering to XHTML, so
+          care must be taken to have the correct case.
         </description>
         <display-name>Direction</display-name>
         <icon/>
         <attribute-name>dir</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -29358,7 +33026,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>lang</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
 
@@ -29375,7 +33043,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>disabled</attribute-name>
         <attribute-class>boolean</attribute-class>
         <attribute-extension>
-          <pass-through>false</pass-through>
+          <ignored-by-renderer>false</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -29388,7 +33056,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onchange</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>false</pass-through>
+          <ignored-by-renderer>false</ignored-by-renderer>
           <behavior/>
           <behavior>valueChange</behavior>
           <default-behavior>true</default-behavior>
@@ -29404,7 +33072,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onselect</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -29421,7 +33089,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>readonly</attribute-name>
         <attribute-class>boolean</attribute-class>
         <attribute-extension>
-          <pass-through>false</pass-through>
+          <ignored-by-renderer>false</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -29533,7 +33201,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>style</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -29547,7 +33215,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>styleClass</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>false</pass-through>
+          <ignored-by-renderer>false</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -29560,7 +33228,31 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>title</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
+        </attribute-extension>
+      </attribute>
+      <attribute>
+        <description><![CDATA[
+          <p class="changed_added_2_2">Per the WAI-ARIA spec and its
+          relationship to HTML5 (Section title ARIA Role Attriubute),
+          every HTML element may have a "role" attribute whose value
+          must be passed through unmodified on the element on which it
+          is declared in the final rendered markup.  The attribute, if
+          specified, must have a value that is a string literal that is,
+          or an EL Expression that evaluates to, a set of
+          space-separated tokens representing the various WAI-ARIA roles
+          that the element belongs to.
+          </p>
+
+          <p class="changed_added_2_2">It is the page author's
+          responsibility to ensure that the user agent is capable of
+          correctly interpreting the value of this attribute.</p>]]></description>
+        <display-name>ARIA role</display-name>
+        <icon/>
+        <attribute-name>role</attribute-name>
+        <attribute-class>java.lang.String</attribute-class>
+        <attribute-extension>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
 
@@ -29575,7 +33267,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onclick</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -29589,7 +33281,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>ondblclick</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -29603,7 +33295,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onmousedown</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -29617,7 +33309,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onmouseup</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -29631,7 +33323,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onmouseover</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -29645,7 +33337,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onmousemove</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -29659,7 +33351,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onmouseout</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -29673,7 +33365,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onkeypress</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -29687,7 +33379,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onkeydown</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -29701,7 +33393,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onkeyup</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -29717,7 +33409,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>accesskey</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -29729,7 +33421,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onblur</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -29742,7 +33434,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onfocus</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -29757,7 +33449,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>tabindex</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
 
@@ -29766,13 +33458,15 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <description>
           Direction indication for text that does not inherit directionality.
           Valid values are "LTR" (left-to-right) and "RTL" (right-to-left).
+          These attributes are case sensitive when rendering to XHTML, so
+          care must be taken to have the correct case.
         </description>
         <display-name>Direction</display-name>
         <icon/>
         <attribute-name>dir</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -29785,7 +33479,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>lang</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
 
@@ -29802,7 +33496,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>disabled</attribute-name>
         <attribute-class>boolean</attribute-class>
         <attribute-extension>
-          <pass-through>false</pass-through>
+          <ignored-by-renderer>false</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -29815,7 +33509,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onchange</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>false</pass-through>
+          <ignored-by-renderer>false</ignored-by-renderer>
           <behavior/>
           <behavior>valueChange</behavior>
           <default-behavior>true</default-behavior>
@@ -29831,7 +33525,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onselect</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -29848,7 +33542,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>readonly</attribute-name>
         <attribute-class>boolean</attribute-class>
         <attribute-extension>
-          <pass-through>false</pass-through>
+          <ignored-by-renderer>false</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -29907,7 +33601,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
     </renderer>
     <renderer>
       <description><![CDATA[<p><span
-            class="changed_modified_2_0">Render</span> a set of html
+            class="changed_modified_2_0 changed_modified_2_0_rev_a">Render</span> a set of html
             "input" elements of type "radio".</p>
 
       <p><a name="decode">Decode Behavior</a></p>
@@ -29927,7 +33621,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
       <p>Render a "table" element. If the "styleClass" is specified,
       render the value of the "styleClass" attribute as the value of the
       "class" attribute on the "table" element. If the "style", "border"
-      attributes are specified, pass them thru <span
+      attributes are specified, convey them <span
       class="changed_added_2_0">and render their values as the "style"
       and "border" attributes on the "table", respectively.</span>. If
       the "layout" attribute is specified, and its value is
@@ -29981,7 +33675,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>style</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -29995,7 +33689,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>styleClass</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>false</pass-through>
+          <ignored-by-renderer>false</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -30008,7 +33702,31 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>title</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
+        </attribute-extension>
+      </attribute>
+      <attribute>
+        <description><![CDATA[
+          <p class="changed_added_2_2">Per the WAI-ARIA spec and its
+          relationship to HTML5 (Section title ARIA Role Attriubute),
+          every HTML element may have a "role" attribute whose value
+          must be passed through unmodified on the element on which it
+          is declared in the final rendered markup.  The attribute, if
+          specified, must have a value that is a string literal that is,
+          or an EL Expression that evaluates to, a set of
+          space-separated tokens representing the various WAI-ARIA roles
+          that the element belongs to.
+          </p>
+
+          <p class="changed_added_2_2">It is the page author's
+          responsibility to ensure that the user agent is capable of
+          correctly interpreting the value of this attribute.</p>]]></description>
+        <display-name>ARIA role</display-name>
+        <icon/>
+        <attribute-name>role</attribute-name>
+        <attribute-class>java.lang.String</attribute-class>
+        <attribute-extension>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
 
@@ -30023,7 +33741,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onclick</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -30037,7 +33755,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>ondblclick</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -30051,7 +33769,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onmousedown</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -30065,7 +33783,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onmouseup</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -30079,7 +33797,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onmouseover</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -30093,7 +33811,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onmousemove</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -30107,7 +33825,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onmouseout</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -30121,7 +33839,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onkeypress</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -30135,7 +33853,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onkeydown</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -30149,7 +33867,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onkeyup</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -30165,7 +33883,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>accesskey</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -30177,7 +33895,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onblur</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -30190,7 +33908,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onfocus</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -30205,7 +33923,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>tabindex</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
 
@@ -30214,13 +33932,15 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <description>
           Direction indication for text that does not inherit directionality.
           Valid values are "LTR" (left-to-right) and "RTL" (right-to-left).
+          These attributes are case sensitive when rendering to XHTML, so
+          care must be taken to have the correct case.
         </description>
         <display-name>Direction</display-name>
         <icon/>
         <attribute-name>dir</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -30233,7 +33953,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>lang</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
 
@@ -30250,7 +33970,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>disabled</attribute-name>
         <attribute-class>boolean</attribute-class>
         <attribute-extension>
-          <pass-through>false</pass-through>
+          <ignored-by-renderer>false</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -30263,7 +33983,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onchange</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>false</pass-through>
+          <ignored-by-renderer>false</ignored-by-renderer>
           <behavior/>
           <behavior>valueChange</behavior>
           <default-behavior>true</default-behavior>
@@ -30279,7 +33999,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onselect</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -30296,7 +34016,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>readonly</attribute-name>
         <attribute-class>boolean</attribute-class>
         <attribute-extension>
-          <pass-through>false</pass-through>
+          <ignored-by-renderer>false</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -30325,7 +34045,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>disabled</attribute-name>
         <attribute-class>boolean</attribute-class>
         <attribute-extension>
-          <pass-through>false</pass-through>
+          <ignored-by-renderer>false</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -30338,7 +34058,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onchange</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>false</pass-through>
+          <ignored-by-renderer>false</ignored-by-renderer>
           <behavior/>
           <behavior>valueChange</behavior>
           <default-behavior>true</default-behavior>
@@ -30354,7 +34074,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>onselect</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -30371,7 +34091,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>readonly</attribute-name>
         <attribute-class>boolean</attribute-class>
         <attribute-extension>
-          <pass-through>false</pass-through>
+          <ignored-by-renderer>false</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -30413,7 +34133,7 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
         <attribute-name>border</attribute-name>
         <attribute-class>int</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -30493,7 +34213,8 @@ https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=447
     <renderer>
       <description><![CDATA[<div class="changed_added_2_0">
 
-<p>Renders a facet at this particular point in the composite component VDL page.</p>
+<p><span class="changed_modified_2_0_rev_a">Renders</span> a facet at
+this particular point in the composite component VDL page.</p>
 
       <p>Decode Behavior</p>
 
@@ -30512,7 +34233,7 @@ passed to the <code>encodeChildern()</code> method of this renderer will
 be the component with <code>component-family</code>
 <code>javax.faces.Output</code> and <code>renderer-type</code> equal to
 the one for this renderer.  The implementation of
-<code>encodeBegin()</code>, must obtain the component attribute value
+<code><span class="changed_modified_2_0_rev_a">encodeChildren()</span></code>, must obtain the component attribute value
 under the key given by the value of the symbolic constant
 <code>UIComponent.FACETS_KEY</code> from the attributes map of the
 argument component.  If not found, throw <code>IOException</code>.  This
@@ -30535,20 +34256,24 @@ Otherwise, get the facet whose name is "facetName".  If found call
       </renderer-extension>
     </renderer>
     <renderer>
-      <description><![CDATA[<div class="changed_added_2_0">
-
-<p><span class="changed_modified_2_0_rev_a">Render</span> the markup for
-a <code><script></code> element that renders the script
-<code>Resource</code> specified by the optional <code>name</code>
-attribute and <code>library</code> attributes.</p>
-
-<p>The implementation of this renderer must have a <a target="_"
+      <description><![CDATA[ 
+
+            <p class="changed_modified_2_0"><span
+            class="changed_modified_2_0_rev_a
+            changed_modified_2_1">Render</span> the markup for a
+            <code><script></code> element that renders the script
+            <code>Resource</code> specified by the optional
+            <code>name</code> attribute and <code>library</code>
+            attributes.</p>
+
+<p class="changed_modified_2_0">The implementation of this renderer must
+have a <a target="_"
 href="../../javadocs/javax/faces/event/ListenerFor.html"><code>@ListenerFor</code></a>
 annotation attached to it, at the class level, declaring <a target="_"
 href="../../javadocs/javax/faces/event/PostAddToViewEvent.html"><code>PostAddToViewEvent.class</code></a>
-as the value of the <code>systemEventClass</code> attribute.  The presence of
-this annotation on a renderer implies the renderer implements <a
-target="_"
+as the value of the <code>systemEventClass</code> attribute.  The
+presence of this annotation on a renderer implies the renderer
+implements <a target="_"
 href="../../javadocs/javax/faces/event/ComponentSystemEventListener.html"><code>ComponentSystemEventListener</code></a>,
 which this renderer must do.  The implementation of
 <code>processEvent()</code> must extract the <code>UIComponent</code>
@@ -30558,17 +34283,17 @@ and only if such a key is present, the implementation of
 <code>processEvent()</code> must pass the component to <a target="_"
 href="../../javadocs/javax/faces/component/UIViewRoot.html#addComponentResource(javax.faces.context.FacesContext,%20javax.faces.component.UIComponent)"><code>UIViewRoot.addComponentResource()</code></a>.</p>
 
-      <p>Decode Behavior</p>
+      <p class="changed_modified_2_0">Decode Behavior</p>
 
-      <ul>
+      <ul class="changed_modified_2_0">
 
 <p>No action is required during decode for this renderer.</p>
 
 </ul>
 
-      <p>Encode Behavior</p>
+      <p class="changed_modified_2_0">Encode Behavior</p>
 
-      <ul>
+      <ul class="changed_modified_2_0">
 
         <p><a name="ResourceCommonGetResource">Common Algorithm for Obtaining A Resource to Render</a></p>
 
@@ -30659,21 +34384,20 @@ href="../../javadocs/javax/faces/component/UIViewRoot.html#addComponentResource(
         <p>If this is NOT the first time this <code>Resource</code> has
         been referenced on this request take no action and return.</p>
 
-        <p>Render a script element.  Use the result from calling
-        <code>resource.getRequestPath()</code> as the value of the "src"
-        attribue and the result from calling
-        <code>resource.getContentType()</code> as the value of the "type"
-        attribute.</p>
-
-</p>
-
-
+        <p>Render a script element.  <span
+        class="changed_modified_2_1">Call
+        <code>resource.getRequestPath()</code>.  If the result contains
+        a query string, take care to handle it correctly.  Pass the
+        request path to a call to <code>encodeResourceURL()</code> on
+        the <code>ExternalContext</code>.  Use the result as the value
+        of the "src" attribute.  Use the result from calling
+        <code>resource.getContentType()</code> as the value of the
+        "type" attribute.</span></p>
 
        </ul>
 
 
-
-</div>]]></description>
+]]></description>
       <component-family>javax.faces.Output</component-family>
       <renderer-type>javax.faces.resource.Script</renderer-type>
       <renderer-class>
@@ -30681,28 +34405,30 @@ href="../../javadocs/javax/faces/component/UIViewRoot.html#addComponentResource(
     </renderer-class>
 
       <attribute>
-        <description><![CDATA[<div class="changed_added_2_0"><p>The <em>resourceName</em> for this resource.</p></div>]]></description>
-        <display-name>Resource Name</display-name>
+        <description><![CDATA[<div class="changed_added_2_0"><p>The <em>libraryName</em> for this resource.</p></div>]]></description>
+        <display-name>Library Name</display-name>
         <icon/>
-        <attribute-name>name</attribute-name>
+        <attribute-name>library</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
           <required>false</required>
           <tag-attribute>true</tag-attribute>
         </attribute-extension>
       </attribute>
+
       <attribute>
-        <description><![CDATA[<div class="changed_added_2_0"><p>The <em>libraryName</em> for this resource.</p></div>]]></description>
-        <display-name>Library Name</display-name>
+        <description><![CDATA[<div class="changed_added_2_0"><p>The
+                <em>resourceName</em> for this resource.</p></div><div class="changed_modified_2_0_rev_a">
+                <p>This attribute is required</p></div>]]></description>
+        <display-name>Resource Name</display-name>
         <icon/>
-        <attribute-name>library</attribute-name>
+        <attribute-name>name</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <required>false</required>
+          <required>true</required>
           <tag-attribute>true</tag-attribute>
         </attribute-extension>
       </attribute>
-
       <attribute>
         <description><![CDATA[<div class="changed_added_2_0"><p>The
                     <em>target</em> area for which this resource will be
@@ -30731,23 +34457,25 @@ href="../../javadocs/javax/faces/component/UIViewRoot.html#addComponentResource(
       </renderer-extension>
     </renderer>
     <renderer>
-      <description><![CDATA[<div class="changed_added_2_0">
+      <description><![CDATA[
 
-<p>Render the markup for a <code><link></code> element that
-renders the style <code>Resource</code> specified by the optional
-<code>name</code> and <code>library</code> attributes.</p>
+<p><span class="changed_modified_2_0 changed_modified_2_0_rev_a
+changed_modified_2_1 changed_modified_2_2">Render</span> the markup for a
+<code><link></code> element that renders the style
+<code>Resource</code> specified by the optional <code>name</code> and
+<code>library</code> attributes.</p>
 
-      <p>Decode Behavior</p>
+      <p class="changed_modified_2_0">Decode Behavior</p>
 
-      <ul>
+      <ul class="changed_modified_2_0">
 
 <p>No action is required during decode for this renderer.</p>
 
 </ul>
 
-      <p>Encode Behavior</p>
+      <p class="changed_modified_2_0">Encode Behavior</p>
 
-      <ul>
+      <ul class="changed_modified_2_0">
 
        <p>Use the algorithm <em>Common Encode Behavior</em> for
        <code>encodeBegin()</code>, <code>encodeChildren()</code> and
@@ -30762,9 +34490,11 @@ renders the style <code>Resource</code> specified by the optional
 calling <code>resource.getRequestPath()</code> as the value of the
 "href" attribute, the result from calling
 <code>resource.getContentType()</code> as the value of the "type"
-attribute, the literal string "stylesheet" as the value of the "rel"
-attribute, and the literal string "screen" as the value of the "media"
-attribute.</p>
+attribute, and the literal string "stylesheet" as the value of the "rel"
+attribute.  <span class="changed_modified_2_2">If this tag has a "media"
+attribute, use its value as the value of the "media" attribute.
+Otherwise, do not render a media attribute.</span></p>
+
 
 <p>The implementation of this renderer must have a <a target="_"
 href="../../javadocs/javax/faces/event/ListenerFor.html"><code>@ListenerFor</code></a>
@@ -30782,7 +34512,9 @@ the literal string "<code>head</code>" as the last argument.</p>
 <p>The stylsheet renderer must ensure that any stylesheets are included in the <head> of the document. 
 </p>
 
-</div>]]></description>
+</ul>
+
+]]></description>
       <component-family>javax.faces.Output</component-family>
       <renderer-type>javax.faces.resource.Stylesheet</renderer-type>
       <renderer-class>
@@ -30790,37 +34522,154 @@ the literal string "<code>head</code>" as the last argument.</p>
     </renderer-class>
 
       <attribute>
-        <description><![CDATA[<div class="changed_added_2_0"><p>The <em>resourceName</em> for this resource.</p></div>]]></description>
+        <description><![CDATA[<div class="changed_added_2_0"><p>The <em>libraryName</em> for this resource.</p></div>]]></description>
+        <display-name>Library Name</display-name>
+        <icon/>
+        <attribute-name>library</attribute-name>
+        <attribute-class>java.lang.String</attribute-class>
+        <attribute-extension>
+          <required>false</required>
+          <tag-attribute>true</tag-attribute>
+        </attribute-extension>
+      </attribute>
+
+      <attribute>
+        <description><![CDATA[<div class="changed_added_2_0"><p>The
+                <em>resourceName</em> for this resource.</p></div><div class="changed_modified_2_1">
+                <p>This attribute is required</p></div>]]></description>
         <display-name>Resource Name</display-name>
         <icon/>
         <attribute-name>name</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <required>false</required>
+          <required>true</required>
           <tag-attribute>true</tag-attribute>
         </attribute-extension>
       </attribute>
       <attribute>
-        <description><![CDATA[<div class="changed_added_2_0"><p>The <em>libraryName</em> for this resource.</p></div>]]></description>
-        <display-name>Library Name</display-name>
+        <description><![CDATA[<div class="changed_added_2_1"><p>The
+                    <em>media</em> type for this stylesheet.  For
+                    example, <em>media="screen"</em> would cause the
+                    resource to be rendered with the <em>media</em>
+                    attribute of the <em>link</em> set to
+                    <em>screen</em>.</p></div>]]></description>
+        <display-name>Media</display-name>
         <icon/>
-        <attribute-name>library</attribute-name>
+        <attribute-name>media</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
           <required>false</required>
           <tag-attribute>true</tag-attribute>
         </attribute-extension>
       </attribute>
-
       <renderer-extension>
         <jsp-ignore>true</jsp-ignore>
         <renders-children>true</renders-children>
       </renderer-extension>
     </renderer>
     <renderer>
-      <description><![CDATA[<div class="changed_added_2_0">
+      <description><![CDATA[<div class="changed_added_2_1">
+
+<p><span class="changed_added_2_1 changed_modified_2_2">Render</span> the markup for
+a <code><!DOCTYPE></code> declaration.</p>
+
+      <p>Decode Behavior</p>
+
+      <ul>
+
+<p>No action is required during decode for this renderer.</p>
+
+</ul>
+
+      <p>Encode Behavior</p>
+
+<p>Output an XML Doctype using the provided attributes.  Output the
+literal text <code><!DOCTYPE</code>. The "rootElement" attribute is
+required and must be rendered next.  If the "public" attribute is
+defined, render the literal text <code>PUBLIC</code> then render the
+value of the attribute inside double quotes.  If the "system" attribute
+is defined, render it next, inside double quotes.  Close the doctype
+declaration with the literal text <code>></code>.</p>
+
+<div class="changed_added_2_2">
+
+<p>No relocation occurs with the output of this component. It is
+rendered at whatever position in the view hierarchy it happens to be
+encountered when traversing the view to render. Therefore, this
+component must be located in the view hierarchy at the correct location
+so that the final rendered markup has it in the proper place with
+respect to the user agent that consumes the rendered markup. In practice
+this means in front of the <html> or <h:html> element.
+Furthermore, if multiple <h:doctype> components exist,
+<strong>all</strong> of them will be rendered.</p>
+
+<p>If this component is present in a view, any DOCTYPE that would
+otherwise have been rendered by virtue of being present in the VDL page
+must be ignored.</p>
+
+</div>
+
+
+</div>]]></description>
+      <component-family>javax.faces.Output</component-family>
+      <renderer-type>javax.faces.Doctype</renderer-type>
+      <renderer-class>
+        com.sun.faces.renderkit.html_basic.DoctypeRenderer
+    </renderer-class>
+
+      <attribute>
+        <description><![CDATA[<div class="changed_added_2_1">
+           The root XML element
+           </div>]]></description>
+        <display-name>Root XML element</display-name>
+        <icon/>
+        <attribute-name>rootElement</attribute-name>
+        <attribute-class>java.lang.String</attribute-class>
+        <attribute-extension>
+          <ignored-by-renderer>true</ignored-by-renderer>
+          <required>true</required>
+        </attribute-extension>
+      </attribute>
+      <attribute>
+        <description><![CDATA[<div class="changed_added_2_1">
+           Will be output as the public part of the DOCTYPE
+           </div>]]></description>
+        <display-name>The public part of the DOCTYPE</display-name>
+        <icon/>
+        <attribute-name>public</attribute-name>
+        <attribute-class>java.lang.String</attribute-class>
+        <attribute-extension>
+          <ignored-by-renderer>true</ignored-by-renderer>
+          <required>false</required>
+        </attribute-extension>
+      </attribute>
+      <attribute>
+        <description><![CDATA[<div class="changed_added_2_1">
+           Will be output as the system part of the DOCTYPE
+           </div>]]></description>
+        <display-name>The system part of the DOCTYPE</display-name>
+        <icon/>
+        <attribute-name>system</attribute-name>
+        <attribute-class>java.lang.String</attribute-class>
+        <attribute-extension>
+          <ignored-by-renderer>true</ignored-by-renderer>
+          <required>false</required>
+        </attribute-extension>
+      </attribute>
 
-<p>Render the markup for a <code><head></code> element.</p>
+      <renderer-extension>
+        <jsp-ignore>true</jsp-ignore>
+        <tag-name>doctype</tag-name>
+      </renderer-extension>
+    </renderer>
+    <renderer>
+      <description><![CDATA[
+
+<p><span class="changed_modified_2_0_rev_a
+changed_modified_2_1 changed_modified_2_2">Render</span> the markup for a
+<code><head></code> element.</p>
+
+<div class="changed_added_2_0">
 
       <p>Decode Behavior</p>
 
@@ -30834,11 +34683,12 @@ the literal string "<code>head</code>" as the last argument.</p>
 
       <ul>
 
-<p>Render the starting <code><head></code> element tag.  Any attributes declared on the element must be passed through
-unmodified to the rendered output.  
-At some point before rendering the
-      closing <code></head></code> element tag, render any resources that have been targeted
-      for this "head" element:
+<p>Render the starting <code><head></code> element tag.  Any
+attributes declared on the element must be conveyed unmodified to
+the rendered output.  <span class="changed_modified_2_0_rev_a">At some
+point before rendering the closing <code></head></code> element
+tag</span>, render any resources that have been targeted for this "head"
+element:
       <ul>
       <li>Obtain a <code>UIViewRoot</code> instance.</li>
       <li>Obtain a <code>List</code> of component resources targeted for
@@ -30847,11 +34697,13 @@ At some point before rendering the
       <li>Iterate over the returned <code>List</code> of <code>UIComponent</code> instances
       and call <code>encodeAll</code> on each <code>UIComponent</code> instance. 
 
-<p>Any attributes declared on the element must be passed through
+<p>Any attributes declared on the element must be conveyed
 unmodified to the rendered output.</p>
 
       </ul>
 
+<div class="changed_modified_2_0_rev_a">
+
       <p>Note that due to the cascading nature of CSS files, the order
       in which these files have been added to the view must be preserved
       when rendering the references to the files within the
@@ -30864,6 +34716,8 @@ unmodified to the rendered output.</p>
 
       <p>Render the ending <code></head></code> element tag.</p>
 
+</div>
+
 </div>]]></description>
       <component-family>javax.faces.Output</component-family>
       <renderer-type>javax.faces.Head</renderer-type>
@@ -30872,16 +34726,30 @@ unmodified to the rendered output.</p>
     </renderer-class>
 
       <attribute>
+        <description><![CDATA[ <p class="changed_added_2_2">The
+        component identifier for this component.  This value must be
+        unique within the closest parent component that is a naming
+        container.</p> ]]></description>
+        <display-name>Component Identifier</display-name>
+        <icon/>
+        <attribute-name>id</attribute-name>
+        <attribute-class>java.lang.String</attribute-class>
+      </attribute>
+
+
+      <attribute>
         <description>
           Direction indication for text that does not inherit directionality.
           Valid values are "LTR" (left-to-right) and "RTL" (right-to-left).
+          These attributes are case sensitive when rendering to XHTML, so
+          care must be taken to have the correct case.
         </description>
         <display-name>Direction</display-name>
         <icon/>
         <attribute-name>dir</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -30894,7 +34762,21 @@ unmodified to the rendered output.</p>
         <attribute-name>lang</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
+        </attribute-extension>
+      </attribute>
+
+
+      <attribute>
+        <description><![CDATA[<div class="changed_added_2_1">
+           An XML Namespace to be passed through to the rendered element
+           </div>]]></description>
+        <display-name>XML Namespace</display-name>
+        <icon/>
+        <attribute-name>xmlns</attribute-name>
+        <attribute-class>java.lang.String</attribute-class>
+        <attribute-extension>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
 
@@ -30904,9 +34786,12 @@ unmodified to the rendered output.</p>
       </renderer-extension>
     </renderer>
     <renderer>
-      <description><![CDATA[<div class="changed_added_2_0">
+      <description><![CDATA[
 
-<p>Render the markup for a <code><body></code> element.</p>
+<p><span class="changed_modified_2_1 changed_added_2_0">Render</span> the markup for a
+<code><body></code> element.</p>
+
+<div class="changed_added_2_0">
 
       <p>Decode Behavior</p>
 
@@ -30936,7 +34821,7 @@ unmodified to the rendered output.</p>
       and call <code>encodeAll</code> on each <code>UIComponent</code> instance.
       </ul>
 
-<p>Any attributes declared on the element must be passed through
+<p>Any attributes declared on the element must be conveyed
 unmodified to the rendered output.</p>
 
 </div>]]></description>
@@ -30947,6 +34832,18 @@ unmodified to the rendered output.</p>
     </renderer-class>
 
       <attribute>
+        <description><![CDATA[ <p class="changed_added_2_2">The
+        component identifier for this component.  This value must be
+        unique within the closest parent component that is a naming
+        container.</p> ]]></description>
+        <display-name>Component Identifier</display-name>
+        <icon/>
+        <attribute-name>id</attribute-name>
+        <attribute-class>java.lang.String</attribute-class>
+      </attribute>
+
+
+      <attribute>
         <description>
           CSS style(s) to be applied when this component is rendered.
         </description>
@@ -30955,7 +34852,7 @@ unmodified to the rendered output.</p>
         <attribute-name>style</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -30969,7 +34866,7 @@ unmodified to the rendered output.</p>
         <attribute-name>styleClass</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>false</pass-through>
+          <ignored-by-renderer>false</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -30982,7 +34879,45 @@ unmodified to the rendered output.</p>
         <attribute-name>title</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
+        </attribute-extension>
+      </attribute>
+      <attribute>
+        <description><![CDATA[
+          <p class="changed_added_2_2">Per the WAI-ARIA spec and its
+          relationship to HTML5 (Section title ARIA Role Attriubute),
+          every HTML element may have a "role" attribute whose value
+          must be passed through unmodified on the element on which it
+          is declared in the final rendered markup.  The attribute, if
+          specified, must have a value that is a string literal that is,
+          or an EL Expression that evaluates to, a set of
+          space-separated tokens representing the various WAI-ARIA roles
+          that the element belongs to.
+          </p>
+
+          <p class="changed_added_2_2">It is the page author's
+          responsibility to ensure that the user agent is capable of
+          correctly interpreting the value of this attribute.</p>]]></description>
+        <display-name>ARIA role</display-name>
+        <icon/>
+        <attribute-name>role</attribute-name>
+        <attribute-class>java.lang.String</attribute-class>
+        <attribute-extension>
+          <ignored-by-renderer>true</ignored-by-renderer>
+        </attribute-extension>
+      </attribute>
+
+
+      <attribute>
+        <description><![CDATA[<div class="changed_added_2_1">
+           An XML Namespace to be passed through to the rendered element
+           </div>]]></description>
+        <display-name>XML Namespace</display-name>
+        <icon/>
+        <attribute-name>xmlns</attribute-name>
+        <attribute-class>java.lang.String</attribute-class>
+        <attribute-extension>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
 
@@ -30991,13 +34926,15 @@ unmodified to the rendered output.</p>
         <description>
           Direction indication for text that does not inherit directionality.
           Valid values are "LTR" (left-to-right) and "RTL" (right-to-left).
+          These attributes are case sensitive when rendering to XHTML, so
+          care must be taken to have the correct case.
         </description>
         <display-name>Direction</display-name>
         <icon/>
         <attribute-name>dir</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
       <attribute>
@@ -31010,7 +34947,7 @@ unmodified to the rendered output.</p>
         <attribute-name>lang</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
         </attribute-extension>
       </attribute>
 
@@ -31025,7 +34962,7 @@ unmodified to the rendered output.</p>
         <attribute-name>onclick</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -31039,7 +34976,7 @@ unmodified to the rendered output.</p>
         <attribute-name>ondblclick</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -31053,7 +34990,7 @@ unmodified to the rendered output.</p>
         <attribute-name>onmousedown</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -31067,7 +35004,7 @@ unmodified to the rendered output.</p>
         <attribute-name>onmouseup</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -31081,7 +35018,7 @@ unmodified to the rendered output.</p>
         <attribute-name>onmouseover</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -31095,7 +35032,7 @@ unmodified to the rendered output.</p>
         <attribute-name>onmousemove</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -31109,7 +35046,7 @@ unmodified to the rendered output.</p>
         <attribute-name>onmouseout</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -31123,7 +35060,7 @@ unmodified to the rendered output.</p>
         <attribute-name>onkeypress</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -31137,7 +35074,7 @@ unmodified to the rendered output.</p>
         <attribute-name>onkeydown</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -31151,7 +35088,7 @@ unmodified to the rendered output.</p>
         <attribute-name>onkeyup</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -31166,7 +35103,7 @@ unmodified to the rendered output.</p>
         <attribute-name>onload</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
@@ -31180,7 +35117,7 @@ unmodified to the rendered output.</p>
         <attribute-name>onunload</attribute-name>
         <attribute-class>java.lang.String</attribute-class>
         <attribute-extension>
-          <pass-through>true</pass-through>
+          <ignored-by-renderer>true</ignored-by-renderer>
           <behavior/>
         </attribute-extension>
       </attribute>
diff --git a/jsf-api/doc/table-props.xml b/jsf-api/doc/table-props.xml
index 6cd8537..b818d65 100644
--- a/jsf-api/doc/table-props.xml
+++ b/jsf-api/doc/table-props.xml
@@ -1,41 +1,45 @@
 <?xml version='1.0' encoding='UTF-8'?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
--->
 
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
 
 <!-- ========== Table Properties =========================================== -->
 
@@ -53,6 +57,7 @@
 
 -->
 <root>
+
     <property>
         <description>
           Name or code of the background color for this table.
@@ -62,7 +67,7 @@
         <property-name>bgcolor</property-name>
         <property-class>java.lang.String</property-class>
         <property-extension>
-            <pass-through>true</pass-through>
+            <ignored-by-renderer>true</ignored-by-renderer>
         </property-extension>
     </property>
 
@@ -76,7 +81,7 @@
         <property-name>border</property-name>
         <property-class>int</property-class>
         <property-extension>
-            <pass-through>true</pass-through>
+            <ignored-by-renderer>true</ignored-by-renderer>
         </property-extension>
     </property>
 
@@ -90,7 +95,7 @@
         <property-name>cellpadding</property-name>
         <property-class>java.lang.String</property-class>
         <property-extension>
-            <pass-through>true</pass-through>
+            <ignored-by-renderer>true</ignored-by-renderer>
         </property-extension>
     </property>
 
@@ -108,7 +113,7 @@
         <property-name>cellspacing</property-name>
         <property-class>java.lang.String</property-class>
         <property-extension>
-            <pass-through>true</pass-through>
+            <ignored-by-renderer>true</ignored-by-renderer>
         </property-extension>
     </property>
 
@@ -157,7 +162,7 @@
         <property-name>frame</property-name>
         <property-class>java.lang.String</property-class>
         <property-extension>
-            <pass-through>true</pass-through>
+            <ignored-by-renderer>true</ignored-by-renderer>
         </property-extension>
     </property>
 
@@ -224,7 +229,7 @@
         <property-name>rules</property-name>
         <property-class>java.lang.String</property-class>
         <property-extension>
-            <pass-through>true</pass-through>
+            <ignored-by-renderer>true</ignored-by-renderer>
         </property-extension>
     </property>
 
@@ -239,7 +244,7 @@
         <property-name>summary</property-name>
         <property-class>java.lang.String</property-class>
         <property-extension>
-            <pass-through>true</pass-through>
+            <ignored-by-renderer>true</ignored-by-renderer>
         </property-extension>
     </property>
 
@@ -252,7 +257,7 @@
         <property-name>width</property-name>
         <property-class>java.lang.String</property-class>
         <property-extension>
-            <pass-through>true</pass-through>
+            <ignored-by-renderer>true</ignored-by-renderer>
         </property-extension>
     </property>
     <property>
diff --git a/jsf-api/doc/text-props.xml b/jsf-api/doc/text-props.xml
index 5931460..0d544f0 100644
--- a/jsf-api/doc/text-props.xml
+++ b/jsf-api/doc/text-props.xml
@@ -1,41 +1,45 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
--->
 
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
 
 <!-- ========== Text Properties ============================================ -->
 
@@ -63,7 +67,7 @@
         <property-name>alt</property-name>
         <property-class>java.lang.String</property-class>
         <property-extension>
-            <pass-through>true</pass-through>
+            <ignored-by-renderer>true</ignored-by-renderer>
         </property-extension>
     </property>
 
@@ -92,7 +96,7 @@
         <property-name>maxlength</property-name>
         <property-class>int</property-class>
         <property-extension>
-            <pass-through>true</pass-through>
+            <ignored-by-renderer>true</ignored-by-renderer>
         </property-extension>
     </property>
 
@@ -106,7 +110,7 @@
         <property-name>size</property-name>
         <property-class>int</property-class>
         <property-extension>
-            <pass-through>true</pass-through>
+            <ignored-by-renderer>true</ignored-by-renderer>
         </property-extension>
     </property>
 </root>
diff --git a/jsf-api/doc/uicolumn-props.xml b/jsf-api/doc/uicolumn-props.xml
index f560cc8..cfd52d5 100644
--- a/jsf-api/doc/uicolumn-props.xml
+++ b/jsf-api/doc/uicolumn-props.xml
@@ -1,39 +1,44 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
 
 <!-- ========== UIColumn Properties ======================================== -->
diff --git a/jsf-api/doc/uicommand-props.xml b/jsf-api/doc/uicommand-props.xml
index 53bfdc1..5fa636a 100644
--- a/jsf-api/doc/uicommand-props.xml
+++ b/jsf-api/doc/uicommand-props.xml
@@ -1,39 +1,44 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
 
 <!-- ========== UICommand Properties ======================================= -->
diff --git a/jsf-api/doc/uicomponent-props.xml b/jsf-api/doc/uicomponent-props.xml
index c01f905..6680b3b 100644
--- a/jsf-api/doc/uicomponent-props.xml
+++ b/jsf-api/doc/uicomponent-props.xml
@@ -1,39 +1,44 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
 
 <!-- ========== UIComponent Properties ===================================== -->
@@ -127,6 +132,10 @@
         </property-extension>
     </property>
 
+    <!-- PENDING(edburns): Replace this with a call to <xi:include
+         href="id-props.xml" xpointer="xpointer(/root/*)"/> for the
+         final spec generation.  -->
+
     <property>
         <description><![CDATA[
           The component identifier for this component.  This value must be
diff --git a/jsf-api/doc/uidata-props.xml b/jsf-api/doc/uidata-props.xml
index 5d981b0..d545a30 100644
--- a/jsf-api/doc/uidata-props.xml
+++ b/jsf-api/doc/uidata-props.xml
@@ -1,39 +1,44 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
 
 <!-- ========== UIData Properties ========================================== -->
@@ -85,6 +90,19 @@
 
     <property>
         <description>
+          <![CDATA[<span class="changed_added_2_1">Boolean flag directing how the per-row component state should be handled.</span>]]>
+        </description>
+        <display-name>Preserve Row Component State</display-name>
+        <icon></icon>
+        <property-name>rowStatePreserved</property-name>
+        <property-class>boolean</property-class>
+        <property-extension>
+            <tag-attribute>false</tag-attribute>
+        </property-extension>
+    </property>
+
+    <property>
+        <description>
           The number of rows of model data that are available for processing
           by this component.  If the number of rows is unknown, this property
           will be set to -1.
diff --git a/jsf-api/doc/uiform-props.xml b/jsf-api/doc/uiform-props.xml
index eff7ed0..1aba100 100644
--- a/jsf-api/doc/uiform-props.xml
+++ b/jsf-api/doc/uiform-props.xml
@@ -1,39 +1,44 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
 
 <!-- ========== UIForm Properties ========================================== -->
diff --git a/jsf-api/doc/uigraphic-props.xml b/jsf-api/doc/uigraphic-props.xml
index 4ab1c76..0499702 100644
--- a/jsf-api/doc/uigraphic-props.xml
+++ b/jsf-api/doc/uigraphic-props.xml
@@ -1,39 +1,44 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
 
 <!-- ========== UIGraphic Properties ======================================= -->
diff --git a/jsf-api/doc/uiinput-props.xml b/jsf-api/doc/uiinput-props.xml
index f375cdf..0e08025 100644
--- a/jsf-api/doc/uiinput-props.xml
+++ b/jsf-api/doc/uiinput-props.xml
@@ -1,39 +1,44 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
 
 <!-- ========== UIInput Properties ========================================= -->
diff --git a/jsf-api/doc/uimessage-props.xml b/jsf-api/doc/uimessage-props.xml
index a799b01..6adae02 100644
--- a/jsf-api/doc/uimessage-props.xml
+++ b/jsf-api/doc/uimessage-props.xml
@@ -1,39 +1,44 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
 
 <!-- ========== UIMessage Properties ======================================= -->
diff --git a/jsf-api/doc/uimessages-props.xml b/jsf-api/doc/uimessages-props.xml
index 781fd45..e76f9f6 100644
--- a/jsf-api/doc/uimessages-props.xml
+++ b/jsf-api/doc/uimessages-props.xml
@@ -1,39 +1,44 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
 
 <!-- ========== UIMessages Properties ====================================== -->
diff --git a/jsf-api/doc/uinamingcontainer-props.xml b/jsf-api/doc/uinamingcontainer-props.xml
index e1b7db2..5cd78af 100644
--- a/jsf-api/doc/uinamingcontainer-props.xml
+++ b/jsf-api/doc/uinamingcontainer-props.xml
@@ -1,39 +1,44 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
 
 <!-- ========== UINamingContainer Properties =============================== -->
diff --git a/jsf-api/doc/uioutcometarget-props.xml b/jsf-api/doc/uioutcometarget-props.xml
index 548ce95..3a5b05d 100644
--- a/jsf-api/doc/uioutcometarget-props.xml
+++ b/jsf-api/doc/uioutcometarget-props.xml
@@ -1,39 +1,44 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
 
 <!-- ========== UICommand Properties ======================================= -->
@@ -89,6 +94,7 @@
             <value-expression-enabled>true</value-expression-enabled>
         </property-extension>
     </property>
+
    
 </root>
 
diff --git a/jsf-api/doc/uioutput-props.xml b/jsf-api/doc/uioutput-props.xml
index 4a28709..2e60a93 100644
--- a/jsf-api/doc/uioutput-props.xml
+++ b/jsf-api/doc/uioutput-props.xml
@@ -1,39 +1,44 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
 
 <!-- ========== UIOutput Properties ======================================== -->
diff --git a/jsf-api/doc/uipanel-props.xml b/jsf-api/doc/uipanel-props.xml
index 82bc505..8d6dab8 100644
--- a/jsf-api/doc/uipanel-props.xml
+++ b/jsf-api/doc/uipanel-props.xml
@@ -1,39 +1,44 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
 
 <!-- ========== UIPanel Properties ========================================= -->
diff --git a/jsf-api/doc/uiparameter-props.xml b/jsf-api/doc/uiparameter-props.xml
index c5d7bbf..d3c88e2 100644
--- a/jsf-api/doc/uiparameter-props.xml
+++ b/jsf-api/doc/uiparameter-props.xml
@@ -1,39 +1,44 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
 
 <!-- ========== UIParameter Properties ===================================== -->
diff --git a/jsf-api/doc/uiselectboolean-props.xml b/jsf-api/doc/uiselectboolean-props.xml
index 04bb00f..fb113a4 100644
--- a/jsf-api/doc/uiselectboolean-props.xml
+++ b/jsf-api/doc/uiselectboolean-props.xml
@@ -1,39 +1,44 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
 
 <!-- ========== UISelectBoolean Properties ================================= -->
diff --git a/jsf-api/doc/uiselectitem-props.xml b/jsf-api/doc/uiselectitem-props.xml
index 82359e0..2cb4893 100644
--- a/jsf-api/doc/uiselectitem-props.xml
+++ b/jsf-api/doc/uiselectitem-props.xml
@@ -1,39 +1,44 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
 
 <!-- ========== UISelectItem Properties ==================================== -->
diff --git a/jsf-api/doc/uiselectitems-props.xml b/jsf-api/doc/uiselectitems-props.xml
index 86d5aef..353b0a0 100644
--- a/jsf-api/doc/uiselectitems-props.xml
+++ b/jsf-api/doc/uiselectitems-props.xml
@@ -1,39 +1,44 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
 
 <!-- ========== UISelectItem Properties ==================================== -->
diff --git a/jsf-api/doc/uiselectmany-props.xml b/jsf-api/doc/uiselectmany-props.xml
index a2d33e2..bac2c07 100644
--- a/jsf-api/doc/uiselectmany-props.xml
+++ b/jsf-api/doc/uiselectmany-props.xml
@@ -1,39 +1,44 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
 
 <!-- ========== UISelectMany Properties ==================================== -->
diff --git a/jsf-api/doc/uiselectone-props.xml b/jsf-api/doc/uiselectone-props.xml
index e021344..4388d45 100644
--- a/jsf-api/doc/uiselectone-props.xml
+++ b/jsf-api/doc/uiselectone-props.xml
@@ -1,39 +1,44 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
 
 <!-- ========== UISelectOne Properties ===================================== -->
diff --git a/jsf-api/doc/uiviewaction-props.xml b/jsf-api/doc/uiviewaction-props.xml
new file mode 100644
index 0000000..0a34e3e
--- /dev/null
+++ b/jsf-api/doc/uiviewaction-props.xml
@@ -0,0 +1,121 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!-- ========== UICommand Properties ======================================= -->
+
+
+<!-- template
+
+      <property>
+        <description>
+        </description>
+        <display-name></display-name>
+        <icon></icon>
+        <property-name></property-name>
+        <property-class>java.lang.String</property-class>
+      </property>
+
+-->
+<root xmlns:xi="http://www.w3.org/2001/XInclude">
+    <xi:include href="uicomponent-props.xml" xpointer="xpointer(/root/*)"/>
+    <xi:include href="actionsource-props.xml" xpointer="xpointer(/root/*)"/>
+    <xi:include href="actionsource2-props.xml" xpointer="xpointer(/root/*)"/>
+
+    <property>
+        <description>
+          The current value of this component.
+        </description>
+        <display-name>Value</display-name>
+        <icon></icon>
+        <property-name>value</property-name>
+        <property-class>java.lang.Object</property-class>
+        <property-extension>
+            <value-expression-enabled>true</value-expression-enabled>
+        </property-extension>
+    </property>
+
+        <property>
+            <description>
+                By default, a view action is not executed on
+                postback. If your application is decidedly stateless,
+                you may need the view action to execute on any type of
+                request. The default value is false.
+            </description>
+            <property-name>onPostback</property-name>
+            <property-class>boolean</property-class>
+            <property-extension>
+              <required>false</required>
+              <value-expression-enabled>true</value-expression-enabled>
+            </property-extension>
+        </property>
+
+        <property>
+            <description>
+                You may only want the view action to be invoked under certain conditions. 
+                For that, you can use this property, which accepts an EL value expression
+                that must evaluate to a boolean value.
+            </description>
+            <property-name>if</property-name>
+            <property-class>boolean</property-class>
+            <property-extension>
+              <required>false</required>
+              <value-expression-enabled>true</value-expression-enabled>
+            </property-extension>
+        </property>
+
+        <property>
+            <description>
+                Specifies the phase in which the action invocation should occur 
+                using the name of the phase constant in the PhaseId class (the case does 
+                not matter). The default is INVOKE_APPLICATION.
+            </description>
+            <property-name>phase</property-name>
+            <property-class>java.lang.String</property-class>
+            <property-extension>
+              <required>false</required>
+            </property-extension>
+        </property>
+
+
+</root>
+
diff --git a/jsf-api/doc/uiviewroot-props.xml b/jsf-api/doc/uiviewroot-props.xml
index 78ea93e..0c14050 100644
--- a/jsf-api/doc/uiviewroot-props.xml
+++ b/jsf-api/doc/uiviewroot-props.xml
@@ -1,39 +1,44 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
 
 <!-- ========== UIViewRoot Properties ====================================== -->
diff --git a/jsf-api/doc/valueholder-props.xml b/jsf-api/doc/valueholder-props.xml
index d8b5028..78bf825 100644
--- a/jsf-api/doc/valueholder-props.xml
+++ b/jsf-api/doc/valueholder-props.xml
@@ -1,39 +1,44 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
 
 <!-- ========== ValueHolder Properties ===================================== -->
diff --git a/jsf-api/doc/web-facelettaglibrary_2_0.xsd b/jsf-api/doc/web-facelettaglibrary_2_0.xsd
index 6802f5b..82afa2b 100644
--- a/jsf-api/doc/web-facelettaglibrary_2_0.xsd
+++ b/jsf-api/doc/web-facelettaglibrary_2_0.xsd
@@ -1,4 +1,45 @@
 <?xml version = "1.0" encoding = "UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
 
 <xsd:schema
       targetNamespace="http://java.sun.com/xml/ns/javaee"
@@ -13,43 +54,43 @@
   <xsd:annotation>
     <xsd:documentation>
 
-      DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-      
-      Copyright 2003-2009 Sun Microsystems, Inc. All rights reserved.
-      
-      The contents of this file are subject to the terms of either the
-      GNU General Public License Version 2 only ("GPL") or the Common
-      Development and Distribution License("CDDL") (collectively, the
-      "License").  You may not use this file except in compliance with
-      the License. You can obtain a copy of the License at
-      https://glassfish.dev.java.net/public/CDDL+GPL.html or
-      glassfish/bootstrap/legal/LICENSE.txt.  See the License for the
-      specific language governing permissions and limitations under the
-      License.
-      
-      When distributing the software, include this License Header
-      Notice in each file and include the License file at
-      glassfish/bootstrap/legal/LICENSE.txt.  Sun designates this
-      particular file as subject to the "Classpath" exception as
-      provided by Sun in the GPL Version 2 section of the License file
-      that accompanied this code.  If applicable, add the following
-      below the License Header, with the fields enclosed by brackets []
-      replaced by your own identifying information:
-      "Portions Copyrighted [year] [name of copyright owner]"
-      
-      Contributor(s):
-      
-      If you wish your version of this file to be governed by only the
-      CDDL or only the GPL Version 2, indicate your decision by adding
-      "[Contributor] elects to include this software in this
-      distribution under the [CDDL or GPL Version 2] license."  If you
-      don't indicate a single choice of license, a recipient has the
-      option to distribute your version of this file under either the
-      CDDL, the GPL Version 2 or to extend the choice of license to its
-      licensees as provided above.  However, if you add GPL Version 2
-      code and therefore, elected the GPL Version 2 license, then the
-      option applies only if the new code is made subject to such
-      option by the copyright holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
       
     </xsd:documentation>
   </xsd:annotation>
@@ -145,7 +186,7 @@
                     <xsd:element name="namespace" type="javaee:string"/>
                     <xsd:element minOccurs="0" maxOccurs="1"
                                  name="composite-library-name"
-                                 type="javaee:fully-qualified-classType"/>
+                                 type="javaee:string"/>
                     <xsd:choice minOccurs="0" maxOccurs="unbounded">
                         <xsd:element name="tag"
                                      type="javaee:facelet-taglib-tagType"/>
diff --git a/jsf-api/doc/web-facelettaglibrary_2_2.xsd b/jsf-api/doc/web-facelettaglibrary_2_2.xsd
new file mode 100644
index 0000000..779e014
--- /dev/null
+++ b/jsf-api/doc/web-facelettaglibrary_2_2.xsd
@@ -0,0 +1,684 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsd:schema targetNamespace="http://xmlns.jcp.org/xml/ns/javaee"
+            xmlns:javaee="http://xmlns.jcp.org/xml/ns/javaee"
+            xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+            xmlns:xml="http://www.w3.org/XML/1998/namespace"
+            elementFormDefault="qualified"
+            attributeFormDefault="unqualified"
+            version="2.2">
+  <xsd:include schemaLocation="javaee_7.xsd"/>
+
+  <xsd:annotation>
+    <xsd:documentation>
+
+      DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+      
+      Copyright (c) 2011-2013 Oracle and/or its affiliates. All rights reserved.
+      
+      The contents of this file are subject to the terms of either the GNU
+      General Public License Version 2 only ("GPL") or the Common Development
+      and Distribution License("CDDL") (collectively, the "License").  You
+      may not use this file except in compliance with the License.  You can
+      obtain a copy of the License at
+      https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+      or packager/legal/LICENSE.txt.  See the License for the specific
+      language governing permissions and limitations under the License.
+      
+      When distributing the software, include this License Header Notice in each
+      file and include the License file at packager/legal/LICENSE.txt.
+      
+      GPL Classpath Exception:
+      Oracle designates this particular file as subject to the "Classpath"
+      exception as provided by Oracle in the GPL Version 2 section of the License
+      file that accompanied this code.
+      
+      Modifications:
+      If applicable, add the following below the License Header, with the fields
+      enclosed by brackets [] replaced by your own identifying information:
+      "Portions Copyright [year] [name of copyright owner]"
+      
+      Contributor(s):
+      If you wish your version of this file to be governed by only the CDDL or
+      only the GPL Version 2, indicate your decision by adding "[Contributor]
+      elects to include this software in this distribution under the [CDDL or GPL
+      Version 2] license."  If you don't indicate a single choice of license, a
+      recipient has the option to distribute your version of this file under
+      either the CDDL, the GPL Version 2 or to extend the choice of license to
+      its licensees as provided above.  However, if you add GPL Version 2 code
+      and therefore, elected the GPL Version 2 license, then the option applies
+      only if the new code is made subject to such option by the copyright
+      holder.
+      
+    </xsd:documentation>
+  </xsd:annotation>
+
+  <xsd:annotation>
+    <xsd:documentation>
+      <![CDATA[[
+      <p>The XML Schema for the Tag Libraries in the JavaServer Faces
+      Standard Facelets View Declaration Language (Facelets VDL)
+      (Version 2.2).</p>
+      
+      <p>JSF 2.2 Facelet Tag Libraries that wish to conform to this
+      schema must declare it in the following manner.</p>
+      
+      <facelet-taglib xmlns="http://xmlns.jcp.org/xml/ns/javaee"
+      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+      xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-facelettaglibary_2_2.xsd"
+      version="2.2">
+      
+      ...
+      
+      </facelet-taglib></pre>
+      
+      <p>The instance documents may indicate the published
+      version of the schema using xsi:schemaLocation attribute
+      for javaee namespace with the following location:</p>
+      
+      <p>http://xmlns.jcp.org/xml/ns/javaee/web-facelettaglibary_2_2.xsd</p>
+      
+      ]]>
+    </xsd:documentation>
+  </xsd:annotation>
+
+
+<!-- **************************************************** -->
+
+  <xsd:element name="facelet-taglib"
+               type="javaee:facelet-taglibType">
+    <xsd:unique name="facelet-taglib-tagname-uniqueness">
+      <xsd:annotation>
+        <xsd:documentation><![CDATA[<p>
+
+          tag-names must be unique within a document.
+          
+        </p>]]></xsd:documentation>
+      </xsd:annotation>
+      <xsd:selector xpath="javaee:tag"/>
+      <xsd:field xpath="javaee:tag-name"/>
+    </xsd:unique>
+    <xsd:unique name="faces-config-behavior-ID-uniqueness">
+      <xsd:annotation>
+        <xsd:documentation><![CDATA[<p>
+
+          Behavior IDs must be unique within a document.
+          
+        </p>]]></xsd:documentation>
+      </xsd:annotation>
+      <xsd:selector xpath="javaee:behavior"/>
+      <xsd:field xpath="javaee:behavior-id"/>
+    </xsd:unique>
+    <xsd:unique name="faces-config-converter-ID-uniqueness">
+      <xsd:annotation>
+        <xsd:documentation><![CDATA[<p>
+
+          Converter IDs must be unique within a document.
+          
+        </p>]]></xsd:documentation>
+      </xsd:annotation>
+      <xsd:selector xpath="javaee:converter"/>
+      <xsd:field xpath="javaee:converter-id"/>
+    </xsd:unique>
+    <xsd:unique name="faces-config-validator-ID-uniqueness">
+      <xsd:annotation>
+        <xsd:documentation><![CDATA[<p>
+
+          Validator IDs must be unique within a document.
+          
+        </p>]]></xsd:documentation>
+      </xsd:annotation>
+      <xsd:selector xpath="javaee:validator"/>
+      <xsd:field xpath="javaee:validator-id"/>
+    </xsd:unique>
+  </xsd:element>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="facelet-taglibType">
+    <xsd:annotation>
+      <xsd:documentation><![CDATA[<p>
+
+        The top level XML element in a facelet tag library XML file.
+        
+      </p>]]></xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:group ref="javaee:descriptionGroup"/>
+      <xsd:choice>
+        <xsd:element name="library-class"
+                     type="javaee:fully-qualified-classType"/>
+        <xsd:sequence>
+          <xsd:element name="namespace"
+                       type="javaee:string"/>
+          <xsd:element minOccurs="0" maxOccurs="1" name="short-name"
+                       type="javaee:string">
+            <xsd:annotation>
+              <xsd:documentation><![CDATA[<p>
+              
+              An advisory short name for usages of tags from this tag library.
+              
+              </p>]]></xsd:documentation>
+            </xsd:annotation>
+          </xsd:element>
+          <xsd:element minOccurs="0"
+                       maxOccurs="1"
+                       name="composite-library-name"
+                       type="javaee:string"/>
+          <xsd:choice minOccurs="0"
+                      maxOccurs="unbounded">
+            <xsd:element name="tag"
+                         type="javaee:facelet-taglib-tagType"/>
+            <xsd:element name="function"
+                         type="javaee:facelet-taglib-functionType"/>
+          </xsd:choice>
+        </xsd:sequence>
+      </xsd:choice>
+      <xsd:element name="taglib-extension"
+                   type="javaee:facelet-taglib-extensionType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+    <xsd:attribute name="version"
+                   type="javaee:facelet-taglib-versionType"
+                   use="required"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="facelet-taglib-extensionType">
+    <xsd:annotation>
+      <xsd:documentation><![CDATA[<p>
+
+        Extension element for facelet-taglib. It may contain
+        implementation specific content.
+        
+      </p>]]></xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:any namespace="##any"
+               processContents="lax"
+               minOccurs="0"
+               maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="facelet-taglib-tagType">
+    <xsd:annotation>
+      <xsd:documentation><![CDATA[
+
+        <p>If the tag library XML
+        file contains individual tag declarations rather than pointing
+        to a library-class or a declaring a composite-library name, the
+        individual tags are enclosed in tag elements.</p>
+
+      ]]></xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:group ref="javaee:descriptionGroup"/>
+      <xsd:element name="tag-name"
+                   type="javaee:facelet-taglib-canonical-nameType"/>
+      <xsd:choice>
+        <xsd:element name="handler-class"
+                     type="javaee:fully-qualified-classType"/>
+        <xsd:element name="behavior"
+                     type="javaee:facelet-taglib-tag-behaviorType"/>
+        <xsd:element name="component"
+                     type="javaee:facelet-taglib-tag-componentType"/>
+        <xsd:element name="converter"
+                     type="javaee:facelet-taglib-tag-converterType"/>
+        <xsd:element name="validator"
+                     type="javaee:facelet-taglib-tag-validatorType"/>
+        <xsd:element name="source"
+                     type="javaee:string"/>
+      </xsd:choice>
+      <xsd:element name="attribute"
+                   type="javaee:facelet-taglib-tag-attributeType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="tag-extension"
+                   type="javaee:facelet-taglib-tag-extensionType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+    </xsd:sequence>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="facelet-taglib-tag-attributeType">
+    <xsd:annotation>
+      <xsd:documentation><![CDATA[<p>
+
+        <p>The attribute element defines an attribute for the nesting
+        tag. The attribute element may have several subelements
+        defining:</p>
+        
+        <dl>
+
+          <dt>description</dt><dd><p> a description of the attribute
+	  </p></dd>
+
+	  <dt>name</dt><dd><p> the name of the attribute
+	  </p></dd>
+        
+	  <dt>required</dt><dd><p> whether the attribute is required or
+        optional
+	  </p></dd>
+
+          <dt>type</dt><dd><p> the type of the attribute
+	  </p></dd>
+
+        </dl>
+        
+      </p>]]></xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:group ref="javaee:descriptionGroup"/>
+      <xsd:element name="name"
+                   type="javaee:xsdNMTOKENType"/>
+      <xsd:element name="required"
+                   type="javaee:generic-booleanType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation><![CDATA[
+
+            <p>Defines if the nesting attribute is required or
+            optional.</p>
+            
+            <p>If not present then the default is "false", i.e
+            the attribute is optional.</p>
+            
+          ]]></xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:choice>
+        <xsd:element name="type"
+                     type="javaee:fully-qualified-classType"
+                     minOccurs="0">
+          <xsd:annotation>
+            <xsd:documentation><![CDATA[<p>
+
+              Defines the Java type of the attributes
+              value. If this element is omitted, the
+              expected type is assumed to be
+              "java.lang.Object".</p>
+              
+            ]]></xsd:documentation>
+          </xsd:annotation>
+        </xsd:element>
+        <xsd:element name="method-signature"
+                     type="javaee:string"
+                     minOccurs="0">
+          <xsd:annotation>
+            <xsd:documentation><![CDATA[<p>
+
+              Defines the method signature for a MethodExpression-
+              enabled attribute.  The syntax of the method-signature
+              element is as follows (taken from the function-signature
+              EBNF in web-jsptaglibrary_2_1.xsd):</p>
+
+<code>
+
+<p>MethodSignature ::= ReturnType S MethodName S? '(' S? Parameters? S? ')'</p>
+
+<p>ReturnType        ::= Type</p>
+
+<p>MethodName        ::= Identifier</p>
+
+<p>Parameters        ::= Parameter | ( Parameter S? ',' S? Parameters )</p>
+
+<p>Parameter         ::= Type</p>
+
+</code>
+
+<p>Where:</p>
+
+<ul>
+
+	  <li><p><code>Type</code> is a basic type or a fully qualified
+	  Java class name (including package name), as per the 'Type'
+	  production in the Java Language Specification, Second Edition,
+	  Chapter 18.</p></li>
+
+	  <li><p><code>Identifier</code> is a Java identifier, as per the
+	  'Identifier' production in the Java Language Specification,
+	  Second Edition, Chapter 18.</p></li>
+
+</ul>
+
+<p>Example:</p>
+
+<p><code>java.lang.String nickName( java.lang.String, int )</code></p>
+
+]]></xsd:documentation>
+          </xsd:annotation>
+        </xsd:element>
+      </xsd:choice>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="facelet-taglib-tag-extensionType">
+    <xsd:annotation>
+      <xsd:documentation><![CDATA[<p>
+
+        Extension element for tag It may contain
+        implementation specific content.
+        
+      </p>]]></xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:any namespace="##any"
+               processContents="lax"
+               minOccurs="0"
+               maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="facelet-taglib-functionType">
+    <xsd:annotation>
+      <xsd:documentation><![CDATA[<p>
+
+        If the tag library XML file contains individual function
+        declarations rather than pointing to a library-class or a
+        declaring a composite-library name, the individual functions are
+        enclosed in function elements.
+        
+      </p>]]></xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:group ref="javaee:descriptionGroup"/>
+      <xsd:element name="function-name"
+                   type="javaee:string"/>
+      <xsd:element name="function-class"
+                   type="javaee:fully-qualified-classType"/>
+      <xsd:element name="function-signature"
+                   type="javaee:string"/>
+    </xsd:sequence>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="facelet-taglib-tag-behaviorType">
+    <xsd:annotation>
+      <xsd:documentation><![CDATA[<p>
+
+        Within a tag element, the behavior element encapsulates
+        information specific to a JSF Behavior.
+        
+      </p>]]></xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:group ref="javaee:descriptionGroup"/>
+      <xsd:element minOccurs="1"
+                   maxOccurs="1"
+                   name="behavior-id"
+                   type="javaee:string"/>
+      <xsd:element minOccurs="0"
+                   maxOccurs="1"
+                   name="handler-class"
+                   type="javaee:fully-qualified-classType"/>
+      <xsd:element name="behavior-extension"
+                   type="javaee:facelet-taglib-tag-behavior-extensionType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+    </xsd:sequence>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="facelet-taglib-tag-behavior-extensionType">
+    <xsd:annotation>
+      <xsd:documentation><![CDATA[<p>
+
+        Extension element for behavior. It may contain
+        implementation specific content.
+        
+      </p>]]></xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:any namespace="##any"
+               processContents="lax"
+               minOccurs="0"
+               maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="facelet-taglib-tag-componentType">
+    <xsd:annotation>
+      <xsd:documentation><![CDATA[
+
+      <p><span class="changed_modified_2_2">Within</span> a tag element,
+      the component element encapsulates information specific to a JSF
+      UIComponent.</p>
+
+<div class="changed_added_2_2">
+
+<p>This element must have exactly one of
+<code><component-type></code>, <code><resource-id></code>,
+or <code><handler-class></code> among its child elements.</p>
+
+</div>
+       
+      ]]></xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:group ref="javaee:descriptionGroup"/>
+      <xsd:choice minOccurs="0"
+                  maxOccurs="unbounded">
+          <xsd:element name="component-type"
+                       type="javaee:string"/>
+          <xsd:element name="resource-id"
+                       type="javaee:string">
+            <xsd:annotation>
+              <xsd:documentation><![CDATA[
+
+              <p class="changed_added_2_2">A valid resource identifier
+              as specified in the spec prose document section
+              2.6.1.3.  For example:</p>
+
+          <p><code><resource-id>myCC/ccName.xhtml</resource-id></code></p>
+
+              ]]></xsd:documentation>
+            </xsd:annotation>
+          </xsd:element>
+          <xsd:element name="handler-class"
+                       type="javaee:fully-qualified-classType"/>
+      </xsd:choice>
+      <xsd:element minOccurs="0"
+                   maxOccurs="1"
+                   name="renderer-type"
+                   type="javaee:string"/>
+      <xsd:element name="component-extension"
+                   type="javaee:facelet-taglib-tag-component-extensionType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+    </xsd:sequence>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="facelet-taglib-tag-component-extensionType">
+    <xsd:annotation>
+      <xsd:documentation><![CDATA[<p>
+
+        Extension element for component It may contain
+        implementation specific content.
+        
+      </p>]]></xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:any namespace="##any"
+               processContents="lax"
+               minOccurs="0"
+               maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="facelet-taglib-tag-converterType">
+    <xsd:annotation>
+      <xsd:documentation><![CDATA[<p>
+
+        Within a tag element, the converter element encapsulates
+        information specific to a JSF Converter.
+        
+      </p>]]></xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:group ref="javaee:descriptionGroup"/>
+      <xsd:element minOccurs="1"
+                   maxOccurs="1"
+                   name="converter-id"
+                   type="javaee:string"/>
+      <xsd:element minOccurs="0"
+                   maxOccurs="1"
+                   name="handler-class"
+                   type="javaee:fully-qualified-classType"/>
+      <xsd:element name="converter-extension"
+                   type="javaee:facelet-taglib-tag-converter-extensionType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+    </xsd:sequence>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="facelet-taglib-tag-converter-extensionType">
+    <xsd:annotation>
+      <xsd:documentation><![CDATA[<p>
+
+        Extension element for converter It may contain
+        implementation specific content.
+        
+      </p>]]></xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:any namespace="##any"
+               processContents="lax"
+               minOccurs="0"
+               maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="facelet-taglib-tag-validatorType">
+    <xsd:annotation>
+      <xsd:documentation><![CDATA[<p>
+
+        Within a tag element, the validator element encapsulates
+        information specific to a JSF Validator.
+        
+      </p>]]></xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:group ref="javaee:descriptionGroup"/>
+      <xsd:element minOccurs="1"
+                   maxOccurs="1"
+                   name="validator-id"
+                   type="javaee:string"/>
+      <xsd:element minOccurs="0"
+                   maxOccurs="1"
+                   name="handler-class"
+                   type="javaee:fully-qualified-classType"/>
+      <xsd:element name="validator-extension"
+                   type="javaee:facelet-taglib-tag-validator-extensionType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+    </xsd:sequence>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="facelet-taglib-tag-validator-extensionType">
+    <xsd:annotation>
+      <xsd:documentation><![CDATA[<p>
+
+        Extension element for validator It may contain
+        implementation specific content.
+        
+      </p>]]></xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:any namespace="##any"
+               processContents="lax"
+               minOccurs="0"
+               maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+  <xsd:simpleType name="facelet-taglib-versionType">
+    <xsd:annotation>
+      <xsd:documentation><![CDATA[<p>
+
+        This type contains the recognized versions of
+        facelet-taglib supported.
+        
+      </p>]]></xsd:documentation>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:token">
+      <xsd:enumeration value="2.2"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="facelet-taglib-canonical-nameType">
+    <xsd:annotation>
+      <xsd:documentation><![CDATA[<p>
+
+        <p>Defines the canonical name of a tag or attribute being
+        defined.</p>
+        
+        <p>The name must conform to the lexical rules for an NCName</p>
+        
+      </p>]]></xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:extension base="xsd:NCName">
+        <xsd:attribute name="id"
+                       type="xsd:ID"/>
+      </xsd:extension>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+</xsd:schema>
diff --git a/jsf-api/doc/web-facesconfig_1_0.dtd b/jsf-api/doc/web-facesconfig_1_0.dtd
index d2826b8..8ba03a6 100644
--- a/jsf-api/doc/web-facesconfig_1_0.dtd
+++ b/jsf-api/doc/web-facesconfig_1_0.dtd
@@ -1,40 +1,45 @@
-<!-- 
-/* 
-* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. 
-* 
-* Copyright 2003-2009 Sun Microsystems, Inc. All rights reserved.
-* 
-* The contents of this file are subject to the terms of either the GNU 
-* General Public License Version 2 only ("GPL") or the Common Development 
-* and Distribution License("CDDL") (collectively, the "License").  You 
-* may not use this file except in compliance with the License. You can obtain 
-* a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html 
-* or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific 
-* language governing permissions and limitations under the License. 
-* 
-* When distributing the software, include this License Header Notice in each 
-* file and include the License file at glassfish/bootstrap/legal/LICENSE.txt. 
-* Sun designates this particular file as subject to the "Classpath" exception 
-* as provided by Sun in the GPL Version 2 section of the License file that 
-* accompanied this code.  If applicable, add the following below the License 
-* Header, with the fields enclosed by brackets [] replaced by your own 
-* identifying information: "Portions Copyrighted [year] 
-* [name of copyright owner]" 
-* 
-* Contributor(s): 
-* 
-* If you wish your version of this file to be governed by only the CDDL or 
-* only the GPL Version 2, indicate your decision by adding "[Contributor] 
-* elects to include this software in this distribution under the [CDDL or GPL 
-* Version 2] license."  If you don't indicate a single choice of license, a 
-* recipient has the option to distribute your version of this file under 
-* either the CDDL, the GPL Version 2 or to extend the choice of license to 
-* its licensees as provided above.  However, if you add GPL Version 2 code 
-* and therefore, elected the GPL Version 2 license, then the option applies 
-* only if the new code is made subject to such option by the copyright 
-* holder. 
-*/ 
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2003-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
+
 <!--
     DTD for the JavaServer Faces Application Configuration File (Version 1.0)
 
diff --git a/jsf-api/doc/web-facesconfig_1_1.dtd b/jsf-api/doc/web-facesconfig_1_1.dtd
index a0ba368..75284e2 100644
--- a/jsf-api/doc/web-facesconfig_1_1.dtd
+++ b/jsf-api/doc/web-facesconfig_1_1.dtd
@@ -1,37 +1,43 @@
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
 
 <!--
diff --git a/jsf-api/doc/web-facesconfig_1_2.xsd b/jsf-api/doc/web-facesconfig_1_2.xsd
index 7065ada..0103ba4 100644
--- a/jsf-api/doc/web-facesconfig_1_2.xsd
+++ b/jsf-api/doc/web-facesconfig_1_2.xsd
@@ -1,5 +1,45 @@
 <?xml version = "1.0" encoding = "UTF-8"?>
-
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
 
 <xsd:schema
      targetNamespace="http://java.sun.com/xml/ns/javaee"
@@ -13,44 +53,44 @@
   <xsd:annotation>
     <xsd:documentation>
 
-      DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-      
-      Copyright 2003-2009 Sun Microsystems, Inc. All rights reserved.
-      
-      The contents of this file are subject to the terms of either the
-      GNU General Public License Version 2 only ("GPL") or the Common
-      Development and Distribution License("CDDL") (collectively, the
-      "License").  You may not use this file except in compliance with
-      the License. You can obtain a copy of the License at
-      https://glassfish.dev.java.net/public/CDDL+GPL.html or
-      glassfish/bootstrap/legal/LICENSE.txt.  See the License for the
-      specific language governing permissions and limitations under the
-      License.
-      
-      When distributing the software, include this License Header
-      Notice in each file and include the License file at
-      glassfish/bootstrap/legal/LICENSE.txt.  Sun designates this
-      particular file as subject to the "Classpath" exception as
-      provided by Sun in the GPL Version 2 section of the License file
-      that accompanied this code.  If applicable, add the following
-      below the License Header, with the fields enclosed by brackets []
-      replaced by your own identifying information:
-      "Portions Copyrighted [year] [name of copyright owner]"
-      
-      Contributor(s):
-      
-      If you wish your version of this file to be governed by only the
-      CDDL or only the GPL Version 2, indicate your decision by adding
-      "[Contributor] elects to include this software in this
-      distribution under the [CDDL or GPL Version 2] license."  If you
-      don't indicate a single choice of license, a recipient has the
-      option to distribute your version of this file under either the
-      CDDL, the GPL Version 2 or to extend the choice of license to its
-      licensees as provided above.  However, if you add GPL Version 2
-      code and therefore, elected the GPL Version 2 license, then the
-      option applies only if the new code is made subject to such
-      option by the copyright holder.
-      
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
     </xsd:documentation>
   </xsd:annotation>
 
diff --git a/jsf-api/doc/web-facesconfig_2_0.xsd b/jsf-api/doc/web-facesconfig_2_0.xsd
index b90bc42..9ad7724 100644
--- a/jsf-api/doc/web-facesconfig_2_0.xsd
+++ b/jsf-api/doc/web-facesconfig_2_0.xsd
@@ -1,5 +1,45 @@
 <?xml version = "1.0" encoding = "UTF-8"?>
-
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
 
 <xsd:schema
      targetNamespace="http://java.sun.com/xml/ns/javaee"
@@ -13,44 +53,43 @@
   <xsd:annotation>
     <xsd:documentation>
 
-      DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-      
-      Copyright 2003-2009 Sun Microsystems, Inc. All rights reserved.
-      
-      The contents of this file are subject to the terms of either the
-      GNU General Public License Version 2 only ("GPL") or the Common
-      Development and Distribution License("CDDL") (collectively, the
-      "License").  You may not use this file except in compliance with
-      the License. You can obtain a copy of the License at
-      https://glassfish.dev.java.net/public/CDDL+GPL.html or
-      glassfish/bootstrap/legal/LICENSE.txt.  See the License for the
-      specific language governing permissions and limitations under the
-      License.
-      
-      When distributing the software, include this License Header
-      Notice in each file and include the License file at
-      glassfish/bootstrap/legal/LICENSE.txt.  Sun designates this
-      particular file as subject to the "Classpath" exception as
-      provided by Sun in the GPL Version 2 section of the License file
-      that accompanied this code.  If applicable, add the following
-      below the License Header, with the fields enclosed by brackets []
-      replaced by your own identifying information:
-      "Portions Copyrighted [year] [name of copyright owner]"
-      
-      Contributor(s):
-      
-      If you wish your version of this file to be governed by only the
-      CDDL or only the GPL Version 2, indicate your decision by adding
-      "[Contributor] elects to include this software in this
-      distribution under the [CDDL or GPL Version 2] license."  If you
-      don't indicate a single choice of license, a recipient has the
-      option to distribute your version of this file under either the
-      CDDL, the GPL Version 2 or to extend the choice of license to its
-      licensees as provided above.  However, if you add GPL Version 2
-      code and therefore, elected the GPL Version 2 license, then the
-      option applies only if the new code is made subject to such
-      option by the copyright holder.
-      
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
     </xsd:documentation>
   </xsd:annotation>
 
diff --git a/jsf-api/doc/web-facesconfig_2_1.xsd b/jsf-api/doc/web-facesconfig_2_1.xsd
new file mode 100644
index 0000000..843de59
--- /dev/null
+++ b/jsf-api/doc/web-facesconfig_2_1.xsd
@@ -0,0 +1,2792 @@
+<?xml version = "1.0" encoding = "UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<xsd:schema
+     targetNamespace="http://java.sun.com/xml/ns/javaee"
+     xmlns:javaee="http://java.sun.com/xml/ns/javaee"
+     xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+     xmlns:xml="http://www.w3.org/XML/1998/namespace"
+     elementFormDefault="qualified"
+     attributeFormDefault="unqualified"
+     version="2.1">
+
+  <xsd:annotation>
+    <xsd:documentation>
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+    </xsd:documentation>
+  </xsd:annotation>
+
+    <xsd:annotation>
+        <xsd:documentation>
+
+            <![CDATA[
+
+            The XML Schema for the JavaServer Faces Application
+            Configuration File (Version 2.1).
+
+            All JavaServer Faces configuration files must indicate
+            the JavaServer Faces schema by indicating the JavaServer
+            Faces namespace:
+
+            http://java.sun.com/xml/ns/javaee
+
+            and by indicating the version of the schema by
+            using the version element as shown below:
+
+            <faces-config xmlns="http://java.sun.com/xml/ns/javaee"
+                    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+                    xsi:schemaLocation="..."
+                    version="2.1">
+                ...
+            </faces-config>
+
+            The instance documents may indicate the published
+            version of the schema using xsi:schemaLocation attribute
+            for javaee namespace with the following location:
+
+            http://java.sun.com/xml/ns/javaee/web-facesconfig_2_1.xsd
+
+            ]]>
+
+        </xsd:documentation>
+    </xsd:annotation>
+
+    <xsd:include schemaLocation="javaee_5.xsd"/>
+
+    <!-- **************************************************** -->
+
+    <xsd:element name = "faces-config" type="javaee:faces-configType">
+        <xsd:annotation>
+            <xsd:documentation>
+
+                The "faces-config" element is the root of the configuration
+                information hierarchy, and contains nested elements for all
+                of the other configuration settings.
+
+            </xsd:documentation>
+        </xsd:annotation>
+
+        <xsd:unique name="faces-config-behavior-ID-uniqueness">
+            <xsd:annotation>
+                <xsd:documentation>
+
+                    Behavior IDs must be unique within a document.
+
+                </xsd:documentation>
+            </xsd:annotation>
+
+            <xsd:selector xpath="javaee:behavior"/>
+            <xsd:field    xpath="javaee:behavior-id"/>
+        </xsd:unique>
+
+        <xsd:unique name="faces-config-converter-ID-uniqueness">
+            <xsd:annotation>
+                <xsd:documentation>
+
+                    Converter IDs must be unique within a document.
+
+                </xsd:documentation>
+            </xsd:annotation>
+
+            <xsd:selector xpath="javaee:converter"/>
+            <xsd:field    xpath="javaee:converter-id"/>
+        </xsd:unique>
+
+        <xsd:unique name="faces-config-converter-for-class-uniqueness">
+            <xsd:annotation>
+                <xsd:documentation>
+
+                    'converter-for-class' element values must be unique
+                    within a document.
+
+                </xsd:documentation>
+            </xsd:annotation>
+
+            <xsd:selector xpath="javaee:converter"/>
+            <xsd:field    xpath="javaee:converter-for-class"/>
+        </xsd:unique>
+
+        <xsd:unique name="faces-config-validator-ID-uniqueness">
+            <xsd:annotation>
+                <xsd:documentation>
+
+                    Validator IDs must be unique within a document.
+
+                </xsd:documentation>
+            </xsd:annotation>
+
+            <xsd:selector xpath="javaee:validator"/>
+            <xsd:field    xpath="javaee:validator-id"/>
+        </xsd:unique>
+
+        <xsd:unique name="faces-config-managed-bean-name-uniqueness">
+            <xsd:annotation>
+                <xsd:documentation>
+
+                    Managed bean names must be unique within a document.
+
+                </xsd:documentation>
+            </xsd:annotation>
+
+            <xsd:selector xpath="javaee:managed-bean"/>
+            <xsd:field    xpath="javaee:managed-bean-name"/>
+        </xsd:unique>
+    </xsd:element>
+
+    <!-- **************************************************** -->
+
+    <xsd:complexType name="faces-configType">
+        <xsd:annotation>
+            <xsd:documentation>
+
+                The "faces-config" element is the root of the configuration
+                information hierarchy, and contains nested elements for all
+                of the other configuration settings.
+
+            </xsd:documentation>
+        </xsd:annotation>
+        <xsd:choice minOccurs="0" maxOccurs="unbounded">
+            <xsd:element name="application"
+                         type="javaee:faces-config-applicationType"/>
+            <xsd:element name="ordering"
+                         type="javaee:faces-config-orderingType"/>
+            <xsd:element name="absolute-ordering"
+                         type="javaee:faces-config-absoluteOrderingType"
+                         minOccurs="0"
+                         maxOccurs="1"/>
+            <xsd:element name="factory"
+                         type="javaee:faces-config-factoryType"/>
+            <xsd:element name="component"
+                         type="javaee:faces-config-componentType"/>
+            <xsd:element name="converter"
+                         type="javaee:faces-config-converterType"/>
+            <xsd:element name="managed-bean"
+                         type="javaee:faces-config-managed-beanType"/>
+            <xsd:element name="name"
+                         type="javaee:java-identifierType"
+                         minOccurs="0"
+                         maxOccurs="1">
+              <xsd:annotation>
+                  <xsd:documentation>
+                      
+                      The "name" element within the top level "faces-config"
+                      element declares the name of this application
+                      configuration resource.  Such names are used
+                      in the document ordering scheme specified in section
+                      JSF.11.4.6.
+                      
+                  </xsd:documentation>
+              </xsd:annotation>
+            </xsd:element>
+                             
+            <xsd:element name="navigation-rule"
+                         type="javaee:faces-config-navigation-ruleType"/>
+            <xsd:element name="referenced-bean"
+                         type="javaee:faces-config-referenced-beanType"/>
+            <xsd:element name="render-kit"
+                         type="javaee:faces-config-render-kitType"/>
+            <xsd:element name="lifecycle"
+                         type="javaee:faces-config-lifecycleType"/>
+            <xsd:element name="validator"
+                         type="javaee:faces-config-validatorType"/>
+            <xsd:element name="behavior"
+                         type="javaee:faces-config-behaviorType"/>
+            <xsd:element name="faces-config-extension"
+                         type="javaee:faces-config-extensionType"
+                         minOccurs="0"
+                         maxOccurs="unbounded"/>
+        </xsd:choice>
+        <xsd:attribute name="metadata-complete"
+                       type="xsd:boolean"
+                       use="optional">
+            <xsd:annotation>
+                <xsd:documentation>
+
+                    The metadata-complete attribute defines whether this
+                    JavaServer Faces application is complete, or whether
+                    the class files available to this module and packaged with
+                    this application should be examined for annotations
+                    that specify configuration information.
+                    
+                    This attribute is only inspected on the application 
+                    configuration resource file located at "WEB-INF/faces-config.xml".
+                    The presence of this attribute on any application configuration
+                    resource other than the one located at "WEB-INF/faces-config.xml",
+                    including any files named using the javax.faces.CONFIG_FILES
+                    attribute, must be ignored.
+
+                    If metadata-complete is set to "true", the JavaServer Faces
+                    runtime must ignore any annotations that specify configuration
+                    information, which might be present in the class files
+                    of the application.
+
+                    If metadata-complete is not specified or is set to
+                    "false", the JavaServer Faces runtime must examine the class
+                    files of the application for annotations, as specified by
+                    the specification.
+
+                    If "WEB-INF/faces-config.xml" is not present, the JavaServer
+                    Faces runtime will assume metadata-complete to be "false".
+
+                    The value of this attribute will have no impact on
+                    runtime annotations such as @ResourceDependency or
+                    @ListenerFor.
+                </xsd:documentation>
+            </xsd:annotation>
+        </xsd:attribute>
+        <xsd:attribute name="id" type="xsd:ID" />
+        <xsd:attribute name="version"
+                       type="javaee:faces-config-versionType"
+                       use="required"/>
+    </xsd:complexType>
+
+    <!-- **************************************************** -->
+
+    <xsd:complexType name = "faces-config-extensionType">
+        <xsd:annotation>
+            <xsd:documentation>
+
+                Extension element for faces-config.  It may contain
+                implementation specific content.
+
+            </xsd:documentation>
+        </xsd:annotation>
+
+        <xsd:sequence>
+            <xsd:any namespace="##any"
+                     processContents="lax"
+                     minOccurs="0"
+                     maxOccurs="unbounded" />
+         </xsd:sequence>
+         <xsd:attribute name="id" type="xsd:ID"/>
+    </xsd:complexType>
+
+
+    <!-- **************************************************** -->
+
+
+    <xsd:complexType name="faces-config-orderingType">
+        <xsd:annotation>
+            <xsd:documentation>
+
+              Please see section JSF.11.4.6 for the specification of this element.
+                
+            </xsd:documentation>
+        </xsd:annotation>
+        <xsd:sequence>
+            <xsd:element name="after" 
+                         type="javaee:faces-config-ordering-orderingType"
+                         minOccurs="0"
+                         maxOccurs="1"/>
+            <xsd:element name="before" 
+                         type="javaee:faces-config-ordering-orderingType"
+                         minOccurs="0"
+                         maxOccurs="1"/>
+        </xsd:sequence>
+        <xsd:attribute name="id" type="xsd:ID"/>
+    </xsd:complexType>
+
+    <xsd:complexType name="faces-config-ordering-orderingType">
+        <xsd:annotation>
+            <xsd:documentation>
+
+                This element contains a sequence of "id" elements, each of which
+                refers to an application configuration resource by the "id"
+                declared on its faces-config element.  This element can also contain
+                a single "others" element which specifies that this document comes
+                before or after other documents within the application.
+
+            </xsd:documentation>
+        </xsd:annotation>
+        <xsd:sequence>
+            <xsd:element name="name" type="javaee:java-identifierType" minOccurs="0" maxOccurs="unbounded"/>
+            <xsd:element name="others" type="javaee:faces-config-ordering-othersType" minOccurs="0" maxOccurs="1" />
+        </xsd:sequence>
+        <xsd:attribute name="id" type="xsd:ID"/>
+    </xsd:complexType>
+
+    <xsd:complexType name="faces-config-ordering-othersType">
+        <xsd:annotation>
+            <xsd:documentation>
+
+                This element indicates that the ordering sub-element in which
+                it was placed should take special action regarding the ordering
+                of this application resource relative to other
+                application configuration resources.  See section JSF.11.4.6
+                for the complete specification.
+
+            </xsd:documentation>
+        </xsd:annotation>
+        <xsd:attribute name="id" type="xsd:ID"/>
+    </xsd:complexType>
+
+
+    <!-- **************************************************** -->
+
+
+    <xsd:complexType name="faces-config-absoluteOrderingType">
+        <xsd:annotation>
+            <xsd:documentation>
+
+              Only relevant if this is placed within the /WEB-INF/faces-config.xml.
+              Please see section JSF.11.4.6 for the specification for details.
+
+            </xsd:documentation>
+        </xsd:annotation>
+        <xsd:choice minOccurs="0" maxOccurs="unbounded">
+            <xsd:element name="name" type="javaee:java-identifierType" minOccurs="0" maxOccurs="unbounded"/>
+            <xsd:element name="others" type="javaee:faces-config-ordering-othersType" minOccurs="0" maxOccurs="1" />
+        </xsd:choice>
+        <xsd:attribute name="id" type="xsd:ID"/>
+    </xsd:complexType>
+
+
+    <!-- **************************************************** -->
+
+
+    <xsd:complexType name="faces-config-applicationType">
+        <xsd:annotation>
+            <xsd:documentation>
+
+                The "application" element provides a mechanism to define the
+                various per-application-singleton implementation artifacts for
+                a particular web application that is utilizing
+                JavaServer Faces.  For nested elements that are not specified,
+                the JSF implementation must provide a suitable default.
+
+            </xsd:documentation>
+        </xsd:annotation>
+
+        <xsd:choice minOccurs="0" maxOccurs="unbounded">
+            <xsd:element name="action-listener"
+                         type="javaee:fully-qualified-classType">
+                <xsd:annotation>
+                    <xsd:documentation>
+
+                            The "action-listener" element contains the fully
+                            qualified class name of the concrete
+                            ActionListener implementation class that will be
+                            called during the Invoke Application phase of the
+                            request processing lifecycle.
+
+                    </xsd:documentation>
+                </xsd:annotation>
+            </xsd:element>
+            <xsd:element name="default-render-kit-id"
+                         type="javaee:string">
+                <xsd:annotation>
+                    <xsd:documentation>
+
+                            The "default-render-kit-id" element allows the
+                            application to define a renderkit to be used other
+                            than the standard one.
+
+                    </xsd:documentation>
+                </xsd:annotation>
+            </xsd:element>
+            <xsd:element name="message-bundle"
+                         type="javaee:string">
+                <xsd:annotation>
+                    <xsd:documentation>
+
+                            The base name of a resource bundle representing
+                            the message resources for this application.  See
+                            the JavaDocs for the "java.util.ResourceBundle"
+                            class for more information on the syntax of
+                            resource bundle names.
+
+                    </xsd:documentation>
+                </xsd:annotation>
+            </xsd:element>
+            <xsd:element name="navigation-handler"
+                         type="javaee:fully-qualified-classType">
+                <xsd:annotation>
+                    <xsd:documentation>
+
+                            The "navigation-handler" element contains the
+                            fully qualified class name of the concrete
+                            NavigationHandler implementation class that will
+                            be called during the Invoke Application phase
+                            of the request processing lifecycle, if the
+                            default ActionListener (provided by the JSF
+                            implementation) is used.
+
+                    </xsd:documentation>
+                </xsd:annotation>
+            </xsd:element>
+            <xsd:element name="view-handler"
+                         type="javaee:fully-qualified-classType">
+                <xsd:annotation>
+                    <xsd:documentation>
+
+                            The "view-handler" element contains the fully
+                            qualified class name of the concrete ViewHandler
+                            implementation class that will be called during
+                            the Restore View and Render Response phases of the
+                            request processing lifecycle.  The faces
+                            implementation must provide a default
+                            implementation of this class.
+
+                    </xsd:documentation>
+                </xsd:annotation>
+            </xsd:element>
+            <xsd:element name="state-manager"
+                         type="javaee:fully-qualified-classType">
+                <xsd:annotation>
+                    <xsd:documentation>
+
+                            The "state-manager" element contains the fully
+                            qualified class name of the concrete StateManager
+                            implementation class that will be called during
+                            the Restore View and Render Response phases of the
+                            request processing lifecycle.  The faces
+                            implementation must provide a default
+                            implementation of this class.
+
+                    </xsd:documentation>
+                </xsd:annotation>
+            </xsd:element>
+            <xsd:element name="el-resolver"
+                         type="javaee:fully-qualified-classType">
+                <xsd:annotation>
+                    <xsd:documentation>
+
+                            The "el-resolver" element contains the fully
+                            qualified class name of the concrete
+                            javax.el.ELResolver implementation class
+                            that will be used during the processing of
+                            EL expressions.
+
+                    </xsd:documentation>
+                </xsd:annotation>
+            </xsd:element>
+            <xsd:element name="property-resolver"
+                         type="javaee:fully-qualified-classType">
+                <xsd:annotation>
+                    <xsd:documentation>
+
+                            The "property-resolver" element contains the fully
+                            qualified class name of the concrete
+                            PropertyResolver implementation class that will
+                            be used during the processing of value binding
+                            expressions.
+
+                    </xsd:documentation>
+                </xsd:annotation>
+            </xsd:element>
+            <xsd:element name="variable-resolver"
+                         type="javaee:fully-qualified-classType">
+                <xsd:annotation>
+                    <xsd:documentation>
+
+                            The "variable-resolver" element contains the fully
+                            qualified class name of the concrete
+                            VariableResolver implementation class that will
+                            be used during the processing of value binding
+                            expressions.
+
+                    </xsd:documentation>
+                </xsd:annotation>
+            </xsd:element>
+            <xsd:element name="resource-handler"
+                         type="javaee:fully-qualified-classType">
+                <xsd:annotation>
+                    <xsd:documentation>
+                        <![CDATA[
+
+                            The "resource-handler" element contains the
+                            fully qualified class name of the concrete
+                            ResourceHandler implementation class that
+                            will be used during rendering and decoding
+                            of resource requests The standard
+                            constructor based decorator pattern used for
+                            other application singletons will be
+                            honored.
+
+                        ]]>
+
+                    </xsd:documentation>
+                </xsd:annotation>
+            </xsd:element>
+            <xsd:element name="system-event-listener"
+                         type="javaee:faces-config-system-event-listenerType"
+                         minOccurs="0"
+                         maxOccurs="unbounded">
+            </xsd:element>
+            <xsd:element
+                name="locale-config"
+                type="javaee:faces-config-locale-configType"/>
+            <xsd:element
+                name="resource-bundle"
+                type="javaee:faces-config-application-resource-bundleType"/>
+            <xsd:element name="application-extension"
+                         type="javaee:faces-config-application-extensionType"
+                         minOccurs="0"
+                         maxOccurs="unbounded"/>
+            <xsd:element
+                name="default-validators"
+                type="javaee:faces-config-default-validatorsType"/>
+            </xsd:choice>
+        <xsd:attribute name = "id" type = "xsd:ID"/>
+    </xsd:complexType>
+
+    <xsd:complexType name="faces-config-application-resource-bundleType">
+        <xsd:annotation>
+            <xsd:documentation>
+
+              The resource-bundle element inside the application element
+              references a java.util.ResourceBundle instance by name
+              using the var element.  ResourceBundles referenced in this
+              manner may be returned by a call to
+              Application.getResourceBundle() passing the current
+              FacesContext for this request and the value of the var
+              element below.
+
+            </xsd:documentation>
+        </xsd:annotation>
+
+        <xsd:sequence>
+            <xsd:group ref="javaee:descriptionGroup"/>
+            <xsd:element name="base-name"
+                         type="javaee:fully-qualified-classType">
+                <xsd:annotation>
+                    <xsd:documentation>
+
+                        The fully qualified class name of the
+                        java.util.ResourceBundle instance.
+
+                    </xsd:documentation>
+                </xsd:annotation>
+            </xsd:element>
+            <xsd:element name="var"
+                         type="javaee:string">
+                <xsd:annotation>
+                    <xsd:documentation>
+
+                        The name by which this ResourceBundle instance
+                        is retrieved by a call to
+                        Application.getResourceBundle().
+
+                    </xsd:documentation>
+                </xsd:annotation>
+            </xsd:element>
+        </xsd:sequence>
+        <xsd:attribute name="id" type="xsd:ID"/>
+    </xsd:complexType>
+
+    <!-- **************************************************** -->
+
+    <xsd:complexType name = "faces-config-application-extensionType">
+        <xsd:annotation>
+            <xsd:documentation>
+
+                Extension element for application.  It may contain
+                implementation specific content.
+
+            </xsd:documentation>
+        </xsd:annotation>
+
+        <xsd:sequence>
+            <xsd:any namespace="##any"
+                     processContents="lax"
+                     minOccurs="0"
+                     maxOccurs="unbounded" />
+         </xsd:sequence>
+         <xsd:attribute name="id" type="xsd:ID"/>
+    </xsd:complexType>
+
+
+    <!-- **************************************************** -->
+
+    <xsd:complexType name = "faces-config-factoryType">
+        <xsd:annotation>
+            <xsd:documentation>
+
+                The "factory" element provides a mechanism to define the
+                various Factories that comprise parts of the implementation
+                of JavaServer Faces.  For nested elements that are not
+                specified, the JSF implementation must provide a suitable
+                default.
+
+            </xsd:documentation>
+        </xsd:annotation>
+
+        <xsd:choice minOccurs="0" maxOccurs="unbounded">
+            <xsd:element name="application-factory"
+                         type="javaee:fully-qualified-classType">
+                <xsd:annotation>
+                    <xsd:documentation>
+
+                        The "application-factory" element contains the
+                        fully qualified class name of the concrete
+                        ApplicationFactory implementation class that will
+                        be called when
+                        FactoryFinder.getFactory(APPLICATION_FACTORY) is
+                        called.
+
+                    </xsd:documentation>
+                </xsd:annotation>
+            </xsd:element>
+            <xsd:element name="exception-handler-factory"
+                         type="javaee:fully-qualified-classType">
+                <xsd:annotation>
+                    <xsd:documentation>
+
+                        The "exception-handler-factory" element contains the
+                        fully qualified class name of the concrete
+                        ExceptionHandlerFactory implementation class that will
+                        be called when
+                        FactoryFinder.getFactory(EXCEPTION_HANDLER_FACTORY)
+                        is called.
+
+                    </xsd:documentation>
+                </xsd:annotation>
+            </xsd:element>
+            <xsd:element name="external-context-factory"
+                         type="javaee:fully-qualified-classType">
+                <xsd:annotation>
+                    <xsd:documentation>
+
+                        The "external-context-factory" element contains the
+                        fully qualified class name of the concrete
+                        ExternalContextFactory implementation class that will
+                        be called when
+                        FactoryFinder.getFactory(EXTERNAL_CONTEXT_FACTORY)
+                        is called.
+
+                    </xsd:documentation>
+                </xsd:annotation>
+            </xsd:element>
+
+            <xsd:element name="faces-context-factory"
+                         type="javaee:fully-qualified-classType">
+                <xsd:annotation>
+                    <xsd:documentation>
+
+                        The "faces-context-factory" element contains the
+                        fully qualified class name of the concrete
+                        FacesContextFactory implementation class that will
+                        be called when
+                        FactoryFinder.getFactory(FACES_CONTEXT_FACTORY)
+                        is called.
+
+                    </xsd:documentation>
+                </xsd:annotation>
+            </xsd:element>
+
+            <xsd:element name="facelet-cache-factory"
+                         type="javaee:fully-qualified-classType">
+                <xsd:annotation>
+                    <xsd:documentation>
+
+                        The "facelet-cache-factory" element contains the
+                        fully qualified class name of the concrete
+                        FaceletCacheFactory implementation class that will
+                        be called when
+                        FactoryFinder.getFactory(FACELET_CACHE_FACTORY)
+                        is called.
+
+                    </xsd:documentation>
+                </xsd:annotation>
+            </xsd:element>
+
+            <xsd:element name="partial-view-context-factory"
+                         type="javaee:fully-qualified-classType">
+                <xsd:annotation>
+                    <xsd:documentation>
+
+                        The "partial-view-context-factory" element contains the
+                        fully qualified class name of the concrete
+                        PartialViewContextFactory implementation class that will
+                        be called when FactoryFinder.getFactory
+                        (FactoryFinder.PARTIAL_VIEW_CONTEXT_FACTORY) is called.
+
+                    </xsd:documentation>
+                </xsd:annotation>
+            </xsd:element>
+
+            <xsd:element name="lifecycle-factory"
+                        type="javaee:fully-qualified-classType">
+                <xsd:annotation>
+                    <xsd:documentation>
+
+                        The "lifecycle-factory" element contains the fully
+                        qualified class name of the concrete LifecycleFactory
+                        implementation class that will be called when
+                        FactoryFinder.getFactory(LIFECYCLE_FACTORY) is called.
+
+                    </xsd:documentation>
+                </xsd:annotation>
+            </xsd:element>
+            <xsd:element name="view-declaration-language-factory"
+                        type="javaee:fully-qualified-classType">
+                <xsd:annotation>
+                    <xsd:documentation>
+
+                        The "view-declaration-language-factory" element contains
+                        the fully qualified class name of the concrete
+                        ViewDeclarationLanguageFactory
+                        implementation class that will be called when
+                        FactoryFinder.getFactory(VIEW_DECLARATION_FACTORY) is called.
+
+                    </xsd:documentation>
+                </xsd:annotation>
+            </xsd:element>
+            <xsd:element name="tag-handler-delegate-factory"
+                        type="javaee:fully-qualified-classType">
+                <xsd:annotation>
+                    <xsd:documentation>
+
+                        The "tag-handler-delegate-factory" element contains
+                        the fully qualified class name of the concrete
+                        ViewDeclarationLanguageFactory
+                        implementation class that will be called when
+                        FactoryFinder.getFactory(TAG_HANDLER_DELEGATE_FACTORY) is called.
+
+                    </xsd:documentation>
+                </xsd:annotation>
+            </xsd:element>
+            <xsd:element name="render-kit-factory"
+                         type="javaee:fully-qualified-classType">
+                <xsd:annotation>
+                    <xsd:documentation>
+
+                        The "render-kit-factory" element contains the fully
+                        qualified class name of the concrete RenderKitFactory
+                        implementation class that will be called when
+                        FactoryFinder.getFactory(RENDER_KIT_FACTORY) is
+                        called.
+
+                    </xsd:documentation>
+                </xsd:annotation>
+            </xsd:element>
+            <xsd:element name="visit-context-factory"
+                         type="javaee:fully-qualified-classType">
+                <xsd:annotation>
+                    <xsd:documentation>
+
+                        The "visit-context-factory" element contains the fully
+                        qualified class name of the concrete VisitContextFactory
+                        implementation class that will be called when
+                        FactoryFinder.getFactory(VISIT_CONTEXT_FACTORY) is
+                        called.
+
+                    </xsd:documentation>
+                </xsd:annotation>
+            </xsd:element>
+            <xsd:element name="factory-extension"
+                         type="javaee:faces-config-factory-extensionType"
+                         minOccurs="0"
+                         maxOccurs="unbounded"/>
+        </xsd:choice>
+        <xsd:attribute name = "id" type = "xsd:ID"/>
+    </xsd:complexType>
+
+    <!-- **************************************************** -->
+
+    <xsd:complexType name = "faces-config-factory-extensionType">
+        <xsd:annotation>
+            <xsd:documentation>
+
+                Extension element for factory.  It may contain
+                implementation specific content.
+
+            </xsd:documentation>
+        </xsd:annotation>
+
+        <xsd:sequence>
+            <xsd:any namespace="##any"
+                     processContents="lax"
+                     minOccurs="0"
+                     maxOccurs="unbounded" />
+         </xsd:sequence>
+         <xsd:attribute name="id" type="xsd:ID"/>
+    </xsd:complexType>
+
+
+    <!-- **************************************************** -->
+
+    <xsd:complexType name="faces-config-attributeType">
+        <xsd:annotation>
+            <xsd:documentation>
+
+                The "attribute" element represents a named, typed, value
+                associated with the parent UIComponent via the generic
+                attributes mechanism.
+
+                Attribute names must be unique within the scope of the parent
+                (or related) component.
+
+            </xsd:documentation>
+        </xsd:annotation>
+
+        <xsd:sequence>
+            <xsd:group ref="javaee:descriptionGroup"/>
+            <xsd:element name="attribute-name"
+                         type="javaee:string">
+                <xsd:annotation>
+                    <xsd:documentation>
+
+                        The "attribute-name" element represents the name under
+                        which the corresponding value will be stored, in the
+                        generic attributes of the UIComponent we are related
+                        to.
+
+                    </xsd:documentation>
+                </xsd:annotation>
+            </xsd:element>
+            <xsd:element name="attribute-class"
+                         type="javaee:fully-qualified-classType">
+                <xsd:annotation>
+                    <xsd:documentation>
+
+                        The "attribute-class" element represents the Java type
+                        of the value associated with this attribute name.
+
+                    </xsd:documentation>
+                </xsd:annotation>
+            </xsd:element>
+            <xsd:element name="default-value"
+                         type="javaee:faces-config-default-valueType"
+                         minOccurs="0"/>
+            <xsd:element name="suggested-value"
+                         type="javaee:faces-config-suggested-valueType"
+                         minOccurs="0"/>
+            <xsd:element name="attribute-extension"
+                         type="javaee:faces-config-attribute-extensionType"
+                         minOccurs="0"
+                         maxOccurs="unbounded"/>
+        </xsd:sequence>
+        <xsd:attribute name = "id" type = "xsd:ID"/>
+    </xsd:complexType>
+
+    <!-- **************************************************** -->
+
+    <xsd:complexType name = "faces-config-attribute-extensionType">
+        <xsd:annotation>
+            <xsd:documentation>
+
+                Extension element for attribute.  It may contain
+                implementation specific content.
+
+            </xsd:documentation>
+        </xsd:annotation>
+
+        <xsd:sequence>
+            <xsd:any namespace="##any"
+                     processContents="lax"
+                     minOccurs="0"
+                     maxOccurs="unbounded" />
+         </xsd:sequence>
+         <xsd:attribute name="id" type="xsd:ID"/>
+    </xsd:complexType>
+
+    <!-- **************************************************** -->
+
+    <xsd:complexType name="faces-config-componentType">
+        <xsd:annotation>
+            <xsd:documentation>
+
+                The "component" element represents a concrete UIComponent
+                implementation class that should be registered under the
+                specified type identifier, along with its associated
+                properties and attributes.  Component types must be unique
+                within the entire web application.
+
+                Nested "attribute" elements identify generic attributes that
+                are recognized by the implementation logic of this component.
+                Nested "property" elements identify JavaBeans properties of
+                the component class that may be exposed for manipulation
+                via tools.
+
+            </xsd:documentation>
+        </xsd:annotation>
+
+        <xsd:sequence>
+            <xsd:group ref="javaee:descriptionGroup"/>
+            <xsd:element name="component-type"
+                         type="javaee:string">
+                <xsd:annotation>
+                    <xsd:documentation>
+
+                        The "component-type" element represents the name under
+                        which the corresponding UIComponent class should be
+                        registered.
+
+                    </xsd:documentation>
+                </xsd:annotation>
+            </xsd:element>
+            <xsd:element name="component-class"
+                         type="javaee:fully-qualified-classType">
+                <xsd:annotation>
+                    <xsd:documentation>
+
+                        The "component-class" element represents the fully
+                        qualified class name of a concrete UIComponent
+                        implementation class.
+
+                    </xsd:documentation>
+                </xsd:annotation>
+            </xsd:element>
+            <xsd:element name="facet"
+                         type="javaee:faces-config-facetType"
+                         minOccurs="0"
+                         maxOccurs="unbounded"/>
+            <xsd:element name="attribute"
+                         type="javaee:faces-config-attributeType"
+                         minOccurs="0"
+                         maxOccurs="unbounded"/>
+            <xsd:element name="property"
+                         type="javaee:faces-config-propertyType"
+                         minOccurs="0"
+                         maxOccurs="unbounded"/>
+            <xsd:element name="component-extension"
+                         type="javaee:faces-config-component-extensionType"
+                         minOccurs="0"
+                         maxOccurs="unbounded"/>
+        </xsd:sequence>
+        <xsd:attribute name="id" type="xsd:ID"/>
+    </xsd:complexType>
+
+    <!-- **************************************************** -->
+
+    <xsd:complexType name="faces-config-component-extensionType">
+        <xsd:annotation>
+            <xsd:documentation>
+                Extension element for component.  It may contain
+                implementation specific content.
+            </xsd:documentation>
+        </xsd:annotation>
+
+        <xsd:sequence>
+            <xsd:any namespace="##any"
+                     processContents="lax"
+                     minOccurs="0"
+                     maxOccurs="unbounded" />
+         </xsd:sequence>
+         <xsd:attribute name="id" type="xsd:ID"/>
+    </xsd:complexType>
+
+    <!-- **************************************************** -->
+
+    <xsd:complexType name="faces-config-default-localeType">
+        <xsd:annotation>
+            <xsd:documentation>
+
+                The "default-locale" element declares the default locale
+                for this application instance.
+
+                It must be specified as :language:[_:country:[_:variant:]]
+                without the colons, for example "ja_JP_SJIS".  The
+                separators between the segments may be '-' or '_'.
+
+            </xsd:documentation>
+        </xsd:annotation>
+        <xsd:simpleContent>
+            <xsd:extension base="javaee:faces-config-localeType">
+                <xsd:attribute name="id" type="xsd:ID"/>
+            </xsd:extension>
+        </xsd:simpleContent>
+    </xsd:complexType>
+
+    <!-- **************************************************** -->
+
+
+    <xsd:complexType name="faces-config-default-valueType">
+        <xsd:annotation>
+            <xsd:documentation>
+
+                The "default-value" contains the value for the property or
+                attribute in which this element resides.  This value differs
+                from the "suggested-value" in that the property or attribute
+                must take the value, whereas in "suggested-value" taking the
+                value is optional.
+
+            </xsd:documentation>
+        </xsd:annotation>
+        <xsd:simpleContent>
+            <xsd:restriction base="javaee:string">
+                <xsd:attribute name="id" type="xsd:ID"/>
+            </xsd:restriction>
+        </xsd:simpleContent>
+    </xsd:complexType>
+
+    <!-- **************************************************** -->
+
+    <xsd:simpleType name="faces-config-el-expressionType">
+        <xsd:annotation>
+            <xsd:documentation>
+
+                EL expressions present within a faces config file
+                must start with the character sequence of '#{' and
+                end with '}'.
+
+            </xsd:documentation>
+        </xsd:annotation>
+        <xsd:restriction base="xsd:string">
+            <xsd:pattern value="#\{.*\}"/>
+        </xsd:restriction>
+    </xsd:simpleType>
+
+    <!-- **************************************************** -->
+
+    <xsd:complexType name="faces-config-facetType">
+        <xsd:annotation>
+            <xsd:documentation>
+
+                Define the name and other design-time information for a facet
+                that is associated with a renderer or a component.
+
+            </xsd:documentation>
+        </xsd:annotation>
+
+        <xsd:sequence>
+            <xsd:group ref="javaee:descriptionGroup"/>
+            <xsd:element name="facet-name"
+                         type="javaee:java-identifierType">
+                <xsd:annotation>
+                    <xsd:documentation>
+
+                        The "facet-name" element represents the facet name
+                        under which a UIComponent will be added to its parent.
+                        It must be of type "Identifier".
+
+                    </xsd:documentation>
+                </xsd:annotation>
+            </xsd:element>
+            <xsd:element name="facet-extension"
+                         type="javaee:faces-config-facet-extensionType"
+                         minOccurs="0"
+                         maxOccurs="unbounded"/>
+        </xsd:sequence>
+        <xsd:attribute name="id" type="xsd:ID"/>
+    </xsd:complexType>
+
+    <!-- **************************************************** -->
+
+    <xsd:complexType name="faces-config-facet-extensionType">
+         <xsd:annotation>
+            <xsd:documentation>
+
+                Extension element for facet.  It may contain implementation
+                specific content.
+
+            </xsd:documentation>
+        </xsd:annotation>
+
+        <xsd:sequence>
+            <xsd:any namespace="##any"
+                     processContents="lax"
+                     minOccurs="0"
+                     maxOccurs="unbounded" />
+         </xsd:sequence>
+         <xsd:attribute name="id" type="xsd:ID"/>
+    </xsd:complexType>
+
+    <!-- **************************************************** -->
+
+    <xsd:complexType name="faces-config-from-view-idType">
+        <xsd:annotation>
+            <xsd:documentation>
+
+                The value of from-view-id must contain one of the following
+                values:
+
+                  - The exact match for a view identifier that is recognized
+                    by the the ViewHandler implementation being used (such as
+                    "/index.jsp" if you are using the default ViewHandler).
+
+                  - A proper prefix of a view identifier, plus a trailing
+                    "*" character.  This pattern indicates that all view
+                    identifiers that match the portion of the pattern up to
+                    the asterisk will match the surrounding rule.  When more
+                    than one match exists, the match with the longest pattern
+                    is selected.
+
+                  - An "*" character, which means that this pattern applies
+                    to all view identifiers.
+
+            </xsd:documentation>
+        </xsd:annotation>
+        <xsd:simpleContent>
+            <xsd:restriction base="javaee:string">
+                <xsd:attribute name="id" type="xsd:ID"/>
+            </xsd:restriction>
+        </xsd:simpleContent>
+    </xsd:complexType>
+
+    <!-- **************************************************** -->
+
+    <xsd:complexType name="faces-config-from-actionType">
+        <xsd:annotation>
+            <xsd:documentation>
+
+                The "from-action" element contains an action reference
+                expression that must have been executed (by the default
+                ActionListener for handling application level events)
+                in order to select the navigation rule.  If not specified,
+                this rule will be relevant no matter which action reference
+                was executed (or if no action reference was executed).
+
+            </xsd:documentation>
+        </xsd:annotation>
+        <xsd:simpleContent>
+            <xsd:extension base="javaee:faces-config-el-expressionType">
+                <xsd:attribute name="id" type="xsd:ID"/>
+            </xsd:extension>
+        </xsd:simpleContent>
+    </xsd:complexType>
+
+    <!-- **************************************************** -->
+
+    <xsd:complexType name="faces-config-ifType">
+        <xsd:annotation>
+            <xsd:documentation>
+
+                The "if" element defines a condition that must resolve
+                to true in order for the navigation case on which it is
+                defined to be matched, with the existing match criteria
+                (action method and outcome) as a prerequiste, if present.
+                The condition is defined declaratively using a value
+                expression in the body of this element. The expression is
+                evaluated at the time the navigation case is being matched.
+                If the "from-outcome" is omitted and this element is
+                present, the navigation handler will match a null outcome
+                and use the condition return value to determine if the
+                case should be considered a match.
+
+            </xsd:documentation>
+        </xsd:annotation>
+        <xsd:simpleContent>
+            <xsd:extension base="javaee:faces-config-el-expressionType">
+                <xsd:attribute name="id" type="xsd:ID"/>
+            </xsd:extension>
+        </xsd:simpleContent>
+    </xsd:complexType>
+
+    <!-- **************************************************** -->
+
+    <xsd:complexType name="faces-config-converterType">
+        <xsd:annotation>
+            <xsd:documentation>
+
+                The "converter" element represents a concrete Converter
+                implementation class that should be registered under the
+                specified converter identifier.  Converter identifiers must
+                be unique within the entire web application.
+
+                Nested "attribute" elements identify generic attributes that
+                may be configured on the corresponding UIComponent in order
+                to affect the operation of the Converter.  Nested "property"
+                elements identify JavaBeans properties of the Converter
+                implementation class that may be configured to affect the
+                operation of the Converter.  "attribute" and "property"
+                elements are intended to allow component developers to
+                more completely describe their components to tools and users.
+                These elements have no required runtime semantics.
+
+            </xsd:documentation>
+        </xsd:annotation>
+
+        <xsd:sequence>
+            <xsd:group ref="javaee:descriptionGroup"/>
+            <xsd:choice>
+                <xsd:element name="converter-id"
+                             type="javaee:string">
+                    <xsd:annotation>
+                        <xsd:documentation>
+
+                            The "converter-id" element represents the
+                            identifier under which the corresponding
+                            Converter class should be registered.
+
+                        </xsd:documentation>
+                    </xsd:annotation>
+                </xsd:element>
+
+                <xsd:element name="converter-for-class"
+                             type="javaee:fully-qualified-classType">
+                    <xsd:annotation>
+                        <xsd:documentation>
+
+                            The "converter-for-class" element represents the
+                            fully qualified class name for which a Converter
+                            class will be registered.
+
+                        </xsd:documentation>
+                    </xsd:annotation>
+                </xsd:element>
+            </xsd:choice>
+
+            <xsd:element name="converter-class"
+                         type="javaee:fully-qualified-classType">
+                <xsd:annotation>
+                    <xsd:documentation>
+
+                        The "converter-class" element represents the fully
+                        qualified class name of a concrete Converter
+                        implementation class.
+
+                    </xsd:documentation>
+                </xsd:annotation>
+            </xsd:element>
+            <xsd:element name="attribute"
+                         type="javaee:faces-config-attributeType"
+                         minOccurs="0"
+                         maxOccurs="unbounded">
+                <xsd:annotation>
+                    <xsd:documentation>
+
+                       Nested "attribute" elements identify generic
+                       attributes that may be configured on the
+                       corresponding UIComponent in order to affect the
+                       operation of the Converter.  This attribute is
+                       primarily for design-time tools and is not
+                       specified to have any meaning at runtime.
+
+                    </xsd:documentation>
+                </xsd:annotation>
+            </xsd:element>
+            <xsd:element name="property"
+                         type="javaee:faces-config-propertyType"
+                         minOccurs="0"
+                         maxOccurs="unbounded">
+                <xsd:annotation>
+                    <xsd:documentation>
+
+                       Nested "property" elements identify JavaBeans
+                       properties of the Converter implementation class
+                       that may be configured to affect the operation of
+                       the Converter.  This attribute is primarily for
+                       design-time tools and is not specified to have
+                       any meaning at runtime.
+
+                    </xsd:documentation>
+                </xsd:annotation>
+            </xsd:element>
+            <xsd:element name="converter-extension"
+                         type="javaee:faces-config-converter-extensionType"
+                         minOccurs="0"
+                         maxOccurs="unbounded"/>
+        </xsd:sequence>
+        <xsd:attribute name="id" type="xsd:ID"/>
+    </xsd:complexType>
+
+    <!-- **************************************************** -->
+
+    <xsd:complexType name = "faces-config-converter-extensionType">
+        <xsd:annotation>
+            <xsd:documentation>
+
+                Extension element for converter.  It may contain
+                implementation specific content.
+
+            </xsd:documentation>
+        </xsd:annotation>
+
+        <xsd:sequence>
+            <xsd:any namespace="##any"
+                     processContents="lax"
+                     minOccurs="0"
+                     maxOccurs="unbounded" />
+         </xsd:sequence>
+         <xsd:attribute name="id" type="xsd:ID"/>
+    </xsd:complexType>
+
+
+
+    <!-- **************************************************** -->
+
+    <xsd:complexType name="faces-config-lifecycleType">
+        <xsd:annotation>
+            <xsd:documentation>
+
+                The "lifecycle" element provides a mechanism to specify
+                modifications to the behaviour of the default Lifecycle
+                implementation for this web application.
+
+            </xsd:documentation>
+        </xsd:annotation>
+
+        <xsd:sequence>
+            <xsd:element name="phase-listener"
+                         type="javaee:fully-qualified-classType"
+                         minOccurs="0"
+                         maxOccurs="unbounded">
+
+                <xsd:annotation>
+                    <xsd:documentation>
+
+                        The "phase-listener" element contains the fully
+                        qualified class name of the concrete PhaseListener
+                        implementation class that will be registered on
+                        the Lifecycle.
+
+                    </xsd:documentation>
+            </xsd:annotation>
+            </xsd:element>
+            <xsd:element name="lifecycle-extension"
+                         type="javaee:faces-config-lifecycle-extensionType"
+                         minOccurs="0"
+                         maxOccurs="unbounded"/>
+
+        </xsd:sequence>
+        <xsd:attribute name="id" type="xsd:ID"/>
+
+    </xsd:complexType>
+
+    <!-- **************************************************** -->
+
+    <xsd:complexType name = "faces-config-lifecycle-extensionType">
+        <xsd:annotation>
+            <xsd:documentation>
+
+                Extension element for lifecycle.  It may contain
+                implementation specific content.
+
+            </xsd:documentation>
+        </xsd:annotation>
+
+        <xsd:sequence>
+            <xsd:any namespace="##any"
+                     processContents="lax"
+                     minOccurs="0"
+                     maxOccurs="unbounded" />
+         </xsd:sequence>
+         <xsd:attribute name="id" type="xsd:ID"/>
+    </xsd:complexType>
+
+
+    <!-- **************************************************** -->
+
+    <xsd:simpleType name="faces-config-localeType">
+        <xsd:annotation>
+            <xsd:documentation>
+
+                The localeType defines valid locale defined by ISO-639-1
+                and ISO-3166.
+
+            </xsd:documentation>
+        </xsd:annotation>
+
+        <xsd:restriction base="xsd:string">
+            <xsd:pattern value="([a-z]{2})[_|\-]?([\p{L}]{2})?[_|\-]?(\w+)?"/>
+        </xsd:restriction>
+  </xsd:simpleType>
+
+    <!-- **************************************************** -->
+
+    <xsd:complexType name="faces-config-locale-configType">
+        <xsd:annotation>
+            <xsd:documentation>
+
+                The "locale-config" element allows the app developer to
+                declare the supported locales for this application.
+
+            </xsd:documentation>
+        </xsd:annotation>
+
+        <xsd:sequence>
+            <xsd:element name="default-locale"
+                         type="javaee:faces-config-default-localeType"
+                         minOccurs="0">
+            </xsd:element>
+            <xsd:element name="supported-locale"
+                         type="javaee:faces-config-supported-localeType"
+                         minOccurs="0"
+                         maxOccurs="unbounded">
+            </xsd:element>
+        </xsd:sequence>
+        <xsd:attribute name="id" type="xsd:ID"/>
+    </xsd:complexType>
+
+    <!-- **************************************************** -->
+
+    <xsd:complexType name="faces-config-default-validatorsType">
+        <xsd:annotation>
+            <xsd:documentation>
+
+                The "default-validators" element allows the app developer to
+                register a set of validators, referenced by identifier, that
+                are automatically assigned to any EditableValueHolder component
+                in the application, unless overridden or disabled locally.
+
+            </xsd:documentation>
+        </xsd:annotation>
+
+        <xsd:sequence>
+            <xsd:element name="validator-id"
+                         type="javaee:string"
+                         minOccurs="0"
+                         maxOccurs="unbounded">
+                <xsd:annotation>
+                    <xsd:documentation>
+
+                        The "validator-id" element represents the identifier
+                        of a registered validator.
+
+                    </xsd:documentation>
+                </xsd:annotation>
+            </xsd:element>
+        </xsd:sequence>
+        <xsd:attribute name="id" type="xsd:ID"/>
+    </xsd:complexType>
+
+    <!-- **************************************************** -->
+
+    <xsd:complexType name="faces-config-managed-beanType">
+        <xsd:annotation>
+            <xsd:documentation>
+
+                The "managed-bean" element represents a JavaBean, of a
+                particular class, that will be dynamically instantiated
+                at runtime (by the default VariableResolver implementation)
+                if it is referenced as the first element of a value binding
+                expression, and no corresponding bean can be identified in
+                any scope.  In addition to the creation of the managed bean,
+                and the optional storing of it into the specified scope,
+                the nested managed-property elements can be used to
+                initialize the contents of settable JavaBeans properties of
+                the created instance.
+
+            </xsd:documentation>
+        </xsd:annotation>
+
+        <xsd:sequence>
+            <xsd:group ref="javaee:descriptionGroup"/>
+            <xsd:element name="managed-bean-name"
+                         type="javaee:java-identifierType">
+                <xsd:annotation>
+                    <xsd:documentation>
+
+                        The "managed-bean-name" element represents the
+                        attribute name under which a managed bean will
+                        be searched for, as well as stored (unless the
+                        "managed-bean-scope" value is "none").
+
+                    </xsd:documentation>
+                </xsd:annotation>
+            </xsd:element>
+            <xsd:element name="managed-bean-class"
+                         type="javaee:fully-qualified-classType">
+                <xsd:annotation>
+                    <xsd:documentation>
+
+                        The "managed-bean-class" element represents the fully
+                        qualified class name of the Java class that will be
+                        used`to instantiate a new instance if creation of the
+                        specified`managed bean is requested.
+
+                        The specified class must conform to standard JavaBeans
+                        conventions.  In particular, it must have a public
+                        zero-arguments constructor, and zero or more public
+                        property setters.
+
+                    </xsd:documentation>
+                </xsd:annotation>
+            </xsd:element>
+            <xsd:element
+                name="managed-bean-scope"
+                type="javaee:faces-config-managed-bean-scopeOrNoneType">
+                <xsd:annotation>
+                    <xsd:documentation>
+
+                        The "managed-bean-scope" element represents the scope
+                        into which a newly created instance of the specified
+                        managed bean will be stored (unless the value is
+                        "none").
+
+                    </xsd:documentation>
+                </xsd:annotation>
+            </xsd:element>
+            <xsd:choice>
+                <xsd:element name="managed-property"
+                             type="javaee:faces-config-managed-propertyType"
+                             minOccurs="0"
+                             maxOccurs="unbounded"/>
+                <xsd:element name="map-entries"
+                             type="javaee:faces-config-map-entriesType"/>
+                <xsd:element name="list-entries"
+                             type="javaee:faces-config-list-entriesType"/>
+            </xsd:choice>
+            <xsd:element name="managed-bean-extension"
+                         type="javaee:faces-config-managed-bean-extensionType"
+                         minOccurs="0"
+                         maxOccurs="unbounded"/>
+        </xsd:sequence>
+        <xsd:attribute name="eager"
+                       type="xsd:boolean"
+                       use="optional">
+            <xsd:annotation>
+                <xsd:documentation>
+
+                    This attribute is only considered when associated with
+                    an application-scoped managed bean. If the value of the eager
+                    attribute is true the runtime must instantiate this class
+                    and store the instance within the application scope when the
+                    application starts.
+
+                    If eager is unspecified or is false, the default "lazy"
+                    instantiation and scoped storage of the managed bean
+                    will occur.
+
+                </xsd:documentation>
+            </xsd:annotation>
+        </xsd:attribute>
+        <xsd:attribute name="id" type="xsd:ID"/>
+    </xsd:complexType>
+
+    <!-- **************************************************** -->
+
+    <xsd:complexType name = "faces-config-managed-bean-extensionType">
+        <xsd:annotation>
+            <xsd:documentation>
+
+                Extension element for managed-bean.  It may contain
+                implementation specific content.
+
+            </xsd:documentation>
+        </xsd:annotation>
+
+        <xsd:sequence>
+            <xsd:any namespace="##any"
+                     processContents="lax"
+                     minOccurs="0"
+                     maxOccurs="unbounded" />
+         </xsd:sequence>
+         <xsd:attribute name="id" type="xsd:ID"/>
+    </xsd:complexType>
+
+
+    <!-- **************************************************** -->
+
+    <xsd:complexType name="faces-config-managed-bean-scopeOrNoneType">
+        <xsd:annotation>
+            <xsd:documentation>
+
+                <![CDATA[
+                Defines the legal values for the <managed-bean-scope>
+                element's body content, which includes all of the scopes
+                normally used in a web application, plus the "none" value
+                indicating that a created bean should not be stored into
+                any scope.  Alternatively, an EL expression may be used
+                as the value of this element.  The result of evaluating this
+                expression must by of type java.util.Map.
+                ]]>
+
+            </xsd:documentation>
+        </xsd:annotation>
+        <xsd:simpleContent>
+            <xsd:restriction base="javaee:string">
+            <xsd:pattern value="view|request|session|application|none|#\{.*\}"/>
+            </xsd:restriction>
+        </xsd:simpleContent>
+    </xsd:complexType>
+
+    <!-- **************************************************** -->
+
+    <xsd:complexType name="faces-config-managed-propertyType">
+        <xsd:annotation>
+            <xsd:documentation>
+
+                The "managed-property" element represents an individual
+                property of a managed bean that will be configured to the
+                specified value (or value set) if the corresponding
+                managed bean is automatically created.
+
+            </xsd:documentation>
+        </xsd:annotation>
+        <xsd:sequence>
+            <xsd:group ref="javaee:descriptionGroup"/>
+            <xsd:element name="property-name"
+                         type="javaee:string">
+                <xsd:annotation>
+                    <xsd:documentation>
+
+                        The "property-name" element represents the JavaBeans
+                        property name under which the corresponding value may
+                        be stored.
+
+                    </xsd:documentation>
+                </xsd:annotation>
+            </xsd:element>
+            <xsd:element name="property-class"
+                         type="javaee:java-typeType"
+                         minOccurs="0">
+                <xsd:annotation>
+                    <xsd:documentation>
+
+                        The "property-class" element represents the Java type
+                        of the value associated with this property name.
+                        If not specified, it can be inferred from existing
+                        classes; however, this element should be specified
+                        if the configuration file is going to be the source
+                        for generating the corresponding classes.
+
+                    </xsd:documentation>
+                </xsd:annotation>
+            </xsd:element>
+            <xsd:choice>
+                <xsd:element name="map-entries"
+                             type="javaee:faces-config-map-entriesType"/>
+                <xsd:element name="null-value"
+                             type="javaee:faces-config-null-valueType">
+                </xsd:element>
+                <xsd:element name="value"
+                             type="javaee:faces-config-valueType"/>
+                <xsd:element name="list-entries"
+                             type="javaee:faces-config-list-entriesType"/>
+            </xsd:choice>
+        </xsd:sequence>
+        <xsd:attribute name="id" type="xsd:ID"/>
+    </xsd:complexType>
+
+    <!-- **************************************************** -->
+
+    <xsd:complexType name="faces-config-map-entryType">
+        <xsd:annotation>
+            <xsd:documentation>
+
+                The "map-entry" element reprsents a single key-entry pair
+                that will be added to the computed value of a managed
+                property of type java.util.Map.
+
+            </xsd:documentation>
+        </xsd:annotation>
+        <xsd:sequence>
+            <xsd:element name="key"
+                         type="javaee:string">
+                <xsd:annotation>
+                    <xsd:documentation>
+
+                        The "key" element is the String representation of a
+                        map key that will be stored in a managed property of
+                        type java.util.Map.
+
+                    </xsd:documentation>
+                </xsd:annotation>
+            </xsd:element>
+            <xsd:choice>
+                <xsd:element name="null-value"
+                             type="javaee:faces-config-null-valueType"/>
+                <xsd:element name="value"
+                             type="javaee:faces-config-valueType"/>
+            </xsd:choice>
+        </xsd:sequence>
+        <xsd:attribute name="id" type="xsd:ID"/>
+    </xsd:complexType>
+
+    <!-- **************************************************** -->
+
+    <xsd:complexType name="faces-config-map-entriesType">
+        <xsd:annotation>
+            <xsd:documentation>
+
+                The "map-entries' element represents a set of key-entry pairs
+                that will be added to the computed value of a managed property
+                of type java.util.Map.  In addition, the Java class types
+                of the key and entry values may be optionally declared.
+
+            </xsd:documentation>
+        </xsd:annotation>
+
+        <xsd:sequence>
+            <xsd:element name="key-class"
+                         type="javaee:fully-qualified-classType"
+                         minOccurs="0">
+                <xsd:annotation>
+                    <xsd:documentation>
+
+                        The "key-class" element defines the Java type to which
+                        each "key" element in a set of "map-entry" elements
+                        will be converted to.  If omitted, "java.lang.String"
+                        is assumed.
+
+                    </xsd:documentation>
+                </xsd:annotation>
+            </xsd:element>
+            <xsd:element name="value-class"
+                         type="javaee:faces-config-value-classType"
+                         minOccurs="0"/>
+            <xsd:element name="map-entry"
+                         type="javaee:faces-config-map-entryType"
+                         minOccurs="0"
+                         maxOccurs="unbounded"/>
+        </xsd:sequence>
+        <xsd:attribute name="id" type="xsd:ID"/>
+    </xsd:complexType>
+
+    <!-- **************************************************** -->
+
+    <xsd:complexType name="faces-config-navigation-caseType">
+        <xsd:annotation>
+            <xsd:documentation>
+
+                The "navigation-case" element describes a particular
+                combination of conditions that must match for this case to
+                be executed, and the view id of the component tree that
+                should be selected next.
+
+            </xsd:documentation>
+        </xsd:annotation>
+        <xsd:sequence>
+            <xsd:group ref="javaee:descriptionGroup"/>
+            <xsd:element name="from-action"
+                         type="javaee:faces-config-from-actionType"
+                         minOccurs="0">
+            </xsd:element>
+            <xsd:element name="from-outcome"
+                         type="javaee:string" minOccurs="0">
+                <xsd:annotation>
+                    <xsd:documentation>
+
+                        The "from-outcome" element contains a logical outcome
+                        string returned by the execution of an application
+                        action method selected via an "actionRef" property
+                        (or a literal value specified by an "action" property)
+                        of a UICommand component.  If specified, this rule
+                        will be relevant only if the outcome value matches
+                        this element's value.  If not specified, this rule
+                        will be relevant if the outcome value is non-null
+                        or, if the "if" element is present, will be relevant
+                        for any outcome value, with the assumption that the
+                        condition specified in the "if" element ultimately
+                        determines if this rule is a match.
+
+                    </xsd:documentation>
+                </xsd:annotation>
+            </xsd:element>
+            <xsd:element name="if"
+                         type="javaee:faces-config-ifType"
+                         minOccurs="0">
+                <xsd:annotation>
+                    <xsd:documentation>
+
+                       Please see section JSF.7.4.2 for the specification of this element.
+
+                    </xsd:documentation>
+                </xsd:annotation>
+            </xsd:element>
+            <xsd:element name="to-view-id"
+                         type="javaee:faces-config-valueType">
+                <xsd:annotation>
+                    <xsd:documentation>
+
+                        The "to-view-id" element contains the view identifier
+                        of the next view that should be displayed if this
+                        navigation rule is matched. If the contents is a
+                        value expression, it should be resolved by the
+                        navigation handler to obtain the view identifier.
+
+                    </xsd:documentation>
+                </xsd:annotation>
+            </xsd:element>
+            <xsd:element
+                name="redirect"
+                type="javaee:faces-config-redirectType" minOccurs="0"/>
+        </xsd:sequence>
+        <xsd:attribute name="id" type="xsd:ID"/>
+    </xsd:complexType>
+
+    <!-- **************************************************** -->
+
+    <xsd:complexType name="faces-config-navigation-ruleType">
+        <xsd:annotation>
+            <xsd:documentation>
+
+                The "navigation-rule" element represents an individual
+                decision rule that will be utilized by the default
+                NavigationHandler implementation to make decisions on
+                what view should be displayed next, based on the
+                view id being processed.
+
+            </xsd:documentation>
+        </xsd:annotation>
+        <xsd:sequence>
+            <xsd:group ref="javaee:descriptionGroup"/>
+            <xsd:element name="from-view-id"
+                         type="javaee:faces-config-from-view-idType"
+                         minOccurs="0"/>
+            <xsd:element name="navigation-case"
+                         type="javaee:faces-config-navigation-caseType"
+                         minOccurs="0"
+                         maxOccurs="unbounded"/>
+            <xsd:element
+                name="navigation-rule-extension"
+                type="javaee:faces-config-navigation-rule-extensionType"
+                minOccurs="0"
+                maxOccurs="unbounded"/>
+        </xsd:sequence>
+        <xsd:attribute name="id" type="xsd:ID"/>
+    </xsd:complexType>
+
+    <!-- **************************************************** -->
+
+    <xsd:complexType name = "faces-config-navigation-rule-extensionType">
+        <xsd:annotation>
+            <xsd:documentation>
+
+                Extension element for navigation-rule.  It may contain
+                implementation specific content.
+
+            </xsd:documentation>
+        </xsd:annotation>
+
+        <xsd:sequence>
+            <xsd:any namespace="##any"
+                     processContents="lax"
+                     minOccurs="0"
+                     maxOccurs="unbounded" />
+         </xsd:sequence>
+         <xsd:attribute name="id" type="xsd:ID"/>
+    </xsd:complexType>
+
+
+    <!-- **************************************************** -->
+
+    <xsd:complexType name="faces-config-null-valueType">
+        <xsd:annotation>
+            <xsd:documentation>
+
+                The "null-value" element indicates that the managed
+                property in which we are nested will be explicitly
+                set to null if our managed bean is automatically
+                created.  This is different from omitting the managed
+                property element entirely, which will cause no
+                property setter to be called for this property.
+
+                The "null-value" element can only be used when the
+                associated "property-class" identifies a Java class,
+                not a Java primitive.
+
+            </xsd:documentation>
+        </xsd:annotation>
+        <xsd:attribute name="id" type="xsd:ID"/>
+    </xsd:complexType>
+
+    <!-- **************************************************** -->
+
+    <xsd:complexType name="faces-config-propertyType">
+        <xsd:annotation>
+            <xsd:documentation>
+
+                The "property" element represents a JavaBean property of the
+                Java class represented by our parent element.
+
+                Property names must be unique within the scope of the Java
+                class that is represented by the parent element, and must
+                correspond to property names that will be recognized when
+                performing introspection against that class via
+                java.beans.Introspector.
+
+            </xsd:documentation>
+        </xsd:annotation>
+        <xsd:sequence>
+            <xsd:group ref="javaee:descriptionGroup"/>
+            <xsd:element name="property-name"
+                         type="javaee:string">
+                <xsd:annotation>
+                    <xsd:documentation>
+
+                        The "property-name" element represents the JavaBeans
+                        property name under which the corresponding value
+                        may be stored.
+
+                    </xsd:documentation>
+                </xsd:annotation>
+            </xsd:element>
+            <xsd:element name="property-class"
+                         type="javaee:java-typeType">
+                <xsd:annotation>
+                    <xsd:documentation>
+
+                        The "property-class" element represents the Java type
+                        of the value associated with this property name.
+                        If not specified, it can be inferred from existing
+                        classes; however, this element should be specified if
+                        the configuration file is going to be the source for
+                        generating the corresponding classes.
+
+                    </xsd:documentation>
+                </xsd:annotation>
+            </xsd:element>
+            <xsd:element name="default-value"
+                         type="javaee:faces-config-default-valueType"
+                         minOccurs="0"/>
+            <xsd:element name="suggested-value"
+                         type="javaee:faces-config-suggested-valueType"
+                         minOccurs="0"/>
+            <xsd:element name="property-extension"
+                         type="javaee:faces-config-property-extensionType"
+                         minOccurs="0"
+                         maxOccurs="unbounded"/>
+        </xsd:sequence>
+        <xsd:attribute name="id" type="xsd:ID"/>
+
+    </xsd:complexType>
+
+    <!-- **************************************************** -->
+
+    <xsd:complexType name="faces-config-property-extensionType">
+        <xsd:annotation>
+            <xsd:documentation>
+
+                Extension element for property.  It may contain
+                implementation specific content.
+
+            </xsd:documentation>
+        </xsd:annotation>
+
+        <xsd:sequence>
+            <xsd:any namespace="##any"
+                     processContents="lax"
+                     minOccurs="0"
+                     maxOccurs="unbounded" />
+         </xsd:sequence>
+         <xsd:attribute name="id" type="xsd:ID"/>
+    </xsd:complexType>
+
+    <!-- **************************************************** -->
+
+    <xsd:complexType name="faces-config-redirectType">
+        <xsd:annotation>
+            <xsd:documentation>
+
+                    The "redirect" element indicates that navigation to the
+                    specified "to-view-id" should be accomplished by
+                    performing an HTTP redirect rather than the usual
+                    ViewHandler mechanisms.
+
+            </xsd:documentation>
+        </xsd:annotation>
+        <xsd:sequence>
+            <xsd:element name="view-param"
+                         type="javaee:faces-config-redirect-viewParamType"
+                         minOccurs="0" maxOccurs="unbounded"/>
+            <xsd:element name="redirect-param"
+                         type="javaee:faces-config-redirect-redirectParamType"
+                         minOccurs="0" maxOccurs="unbounded"/>
+        </xsd:sequence>
+        <xsd:attribute name="id" type="xsd:ID"/>
+        <xsd:attribute name="include-view-params" type="xsd:boolean" use="optional"/>
+
+    </xsd:complexType>
+
+    <!-- **************************************************** -->
+
+    <xsd:complexType name="faces-config-redirect-viewParamType">
+        <xsd:annotation>
+            <xsd:documentation>
+
+                    This element was introduced due to a specification
+                    error, and is now deprecated.  The correct name for
+                    this element is "redirect-param" and its meaning is
+                    documented therein.  The "view-param" element is
+                    maintained to preserve backwards compatibility.
+                    Implementations must treat this element the same as
+                    "redirect-param".
+
+            </xsd:documentation>
+        </xsd:annotation>
+        <xsd:sequence>
+            <xsd:element name="name"
+                         type="javaee:string"
+                         minOccurs="1" maxOccurs="1"/>
+            <xsd:element name="value"
+                         type="javaee:string"
+                         minOccurs="1" maxOccurs="1"/>
+        </xsd:sequence>
+        <xsd:attribute name="id" type="xsd:ID"/>
+
+    </xsd:complexType>
+
+    <!-- **************************************************** -->
+
+    <xsd:complexType name="faces-config-redirect-redirectParamType">
+        <xsd:annotation>
+            <xsd:documentation>
+
+                    The "redirect-param" element, only valid within
+                    a "redirect" element, contains child "name"
+                    and "value" elements that must be included in the
+                    redirect url when the redirect is performed.
+
+            </xsd:documentation>
+        </xsd:annotation>
+        <xsd:sequence>
+            <xsd:element name="name"
+                         type="javaee:string"
+                         minOccurs="1" maxOccurs="1"/>
+            <xsd:element name="value"
+                         type="javaee:string"
+                         minOccurs="1" maxOccurs="1"/>
+        </xsd:sequence>
+        <xsd:attribute name="id" type="xsd:ID"/>
+
+    </xsd:complexType>
+
+    <!-- **************************************************** -->
+
+    <xsd:complexType name="faces-config-referenced-beanType">
+        <xsd:annotation>
+            <xsd:documentation>
+
+                The "referenced-bean" element represents at design time the
+                promise that a Java object of the specified type will exist at
+                runtime in some scope, under the specified key.  This can be
+                used by design time tools to construct user interface dialogs
+                based on the properties of the specified class.  The presence
+                or absence of a referenced bean element has no impact on the
+                JavaServer Faces runtime environment inside a web application.
+
+            </xsd:documentation>
+        </xsd:annotation>
+        <xsd:sequence>
+            <xsd:group ref="javaee:descriptionGroup"/>
+            <xsd:element name="referenced-bean-name"
+                         type="javaee:java-identifierType">
+                <xsd:annotation>
+                    <xsd:documentation>
+
+                        The "referenced-bean-name" element represents the
+                        attribute name under which the corresponding
+                        referenced bean may be assumed to be stored, in one
+                        of 'request', 'session', 'view', 'application'
+                        or a custom scope.
+
+                    </xsd:documentation>
+                </xsd:annotation>
+            </xsd:element>
+            <xsd:element name="referenced-bean-class"
+                         type="javaee:fully-qualified-classType">
+                <xsd:annotation>
+                    <xsd:documentation>
+
+                        The "referenced-bean-class" element represents the
+                        fully qualified class name of the Java class
+                        (either abstract or concrete) or Java interface
+                        implemented by the corresponding referenced bean.
+
+                    </xsd:documentation>
+                </xsd:annotation>
+            </xsd:element>
+        </xsd:sequence>
+        <xsd:attribute name="id" type="xsd:ID"/>
+    </xsd:complexType>
+
+    <!-- **************************************************** -->
+
+    <xsd:complexType name="faces-config-render-kitType">
+        <xsd:annotation>
+            <xsd:documentation>
+
+                The "render-kit" element represents a concrete RenderKit
+                implementation that should be registered under the specified
+                render-kit-id.  If no render-kit-id is specified, the
+                identifier of the default RenderKit
+                (RenderKitFactory.DEFAULT_RENDER_KIT) is assumed.
+
+            </xsd:documentation>
+        </xsd:annotation>
+
+        <xsd:sequence>
+            <xsd:group ref="javaee:descriptionGroup"/>
+            <xsd:element name="render-kit-id"
+                         type="javaee:string"
+                         minOccurs="0">
+                <xsd:annotation>
+                    <xsd:documentation>
+
+                        The "render-kit-id" element represents an identifier
+                        for the RenderKit represented by the parent
+                        "render-kit" element.
+
+                    </xsd:documentation>
+                </xsd:annotation>
+            </xsd:element>
+            <xsd:element name="render-kit-class"
+                         type="javaee:fully-qualified-classType"
+                         minOccurs="0">
+                <xsd:annotation>
+                    <xsd:documentation>
+
+                        The "render-kit-class" element represents the fully
+                        qualified class name of a concrete RenderKit
+                        implementation class.
+
+                    </xsd:documentation>
+                </xsd:annotation>
+            </xsd:element>
+            <xsd:element name="renderer"
+                         type="javaee:faces-config-rendererType"
+                         minOccurs="0"
+                         maxOccurs="unbounded"/>
+            <xsd:element name="client-behavior-renderer"
+                         type="javaee:faces-config-client-behavior-rendererType"
+                         minOccurs="0"
+                         maxOccurs="unbounded"/>
+            <xsd:element name="render-kit-extension"
+                         type="javaee:faces-config-render-kit-extensionType"
+                         minOccurs="0"
+                         maxOccurs="unbounded"/>
+        </xsd:sequence>
+        <xsd:attribute name="id" type="xsd:ID"/>
+    </xsd:complexType>
+
+    <!-- **************************************************** -->
+
+    <xsd:complexType name="faces-config-client-behavior-rendererType">
+        <xsd:annotation>
+            <xsd:documentation>
+
+                The "client-behavior-renderer" element represents a concrete
+                ClientBehaviorRenderer implementation class that should be
+                registered under the specified behavior renderer type identifier,
+                in the RenderKit associated with the parent "render-kit"
+                element.  Client Behavior renderer type must be unique within the RenderKit
+                associated with the parent "render-kit" element.
+
+                Nested "attribute" elements identify generic component
+                attributes that are recognized by this renderer.
+
+            </xsd:documentation>
+        </xsd:annotation>
+
+        <xsd:sequence>
+            <xsd:element name="client-behavior-renderer-type"
+                         type="javaee:string">
+                <xsd:annotation>
+                    <xsd:documentation>
+
+                        The "client-behavior-renderer-type" element represents a renderer type
+                        identifier for the Client Behavior Renderer represented by the parent
+                        "client-behavior-renderer" element.
+
+                    </xsd:documentation>
+                </xsd:annotation>
+            </xsd:element>
+            <xsd:element name="client-behavior-renderer-class"
+                         type="javaee:fully-qualified-classType">
+                <xsd:annotation>
+                    <xsd:documentation>
+
+                        The "client-behavior-renderer-class" element represents the fully
+                        qualified class name of a concrete Client Behavior Renderer
+                        implementation class.
+
+                    </xsd:documentation>
+                </xsd:annotation>
+            </xsd:element>
+        </xsd:sequence>
+        <xsd:attribute name="id" type="xsd:ID"/>
+    </xsd:complexType>
+
+    <xsd:complexType name="faces-config-rendererType">
+        <xsd:annotation>
+            <xsd:documentation>
+
+                The "renderer" element represents a concrete Renderer
+                implementation class that should be registered under the
+                specified component family and renderer type identifiers,
+                in the RenderKit associated with the parent "render-kit"
+                element.  Combinations of component family and
+                renderer type must be unique within the RenderKit
+                associated with the parent "render-kit" element.
+
+                Nested "attribute" elements identify generic component
+                attributes that are recognized by this renderer.
+
+            </xsd:documentation>
+        </xsd:annotation>
+
+        <xsd:sequence>
+            <xsd:group ref="javaee:descriptionGroup"/>
+            <xsd:element name="component-family"
+                         type="javaee:string">
+                <xsd:annotation>
+                    <xsd:documentation>
+
+                        The "component-family" element represents the
+                        component family for which the Renderer represented
+                        by the parent "renderer" element will be used.
+
+                    </xsd:documentation>
+                </xsd:annotation>
+            </xsd:element>
+            <xsd:element name="renderer-type"
+                         type="javaee:string">
+                <xsd:annotation>
+                    <xsd:documentation>
+
+                        The "renderer-type" element represents a renderer type
+                        identifier for the Renderer represented by the parent
+                        "renderer" element.
+
+                    </xsd:documentation>
+                </xsd:annotation>
+            </xsd:element>
+            <xsd:element name="renderer-class"
+                         type="javaee:fully-qualified-classType">
+                <xsd:annotation>
+                    <xsd:documentation>
+
+                        The "renderer-class" element represents the fully
+                        qualified class name of a concrete Renderer
+                        implementation class.
+
+                    </xsd:documentation>
+                </xsd:annotation>
+            </xsd:element>
+            <xsd:element name="facet"
+                         type="javaee:faces-config-facetType"
+                         minOccurs="0"
+                         maxOccurs="unbounded"/>
+            <xsd:element name="attribute"
+                         type="javaee:faces-config-attributeType"
+                         minOccurs="0"
+                         maxOccurs="unbounded"/>
+            <xsd:element name="renderer-extension"
+                         type="javaee:faces-config-renderer-extensionType"
+                         minOccurs="0"
+                         maxOccurs="unbounded"/>
+        </xsd:sequence>
+        <xsd:attribute name="id" type="xsd:ID"/>
+    </xsd:complexType>
+
+    <!-- **************************************************** -->
+
+    <xsd:complexType name="faces-config-renderer-extensionType">
+        <xsd:annotation>
+            <xsd:documentation>
+
+                Extension element for renderer.  It may contain implementation
+                specific content.
+
+            </xsd:documentation>
+        </xsd:annotation>
+
+        <xsd:sequence>
+            <xsd:any namespace="##any"
+                     processContents="lax"
+                     minOccurs="0"
+                     maxOccurs="unbounded" />
+         </xsd:sequence>
+         <xsd:attribute name="id" type="xsd:ID"/>
+    </xsd:complexType>
+
+    <!-- **************************************************** -->
+
+    <xsd:complexType name="faces-config-render-kit-extensionType">
+        <xsd:annotation>
+            <xsd:documentation>
+
+                Extension element for render-kit.  It may contain
+                implementation specific content.
+
+            </xsd:documentation>
+        </xsd:annotation>
+
+        <xsd:sequence>
+            <xsd:any namespace="##any"
+                     processContents="lax"
+                     minOccurs="0"
+                     maxOccurs="unbounded" />
+         </xsd:sequence>
+         <xsd:attribute name="id" type="xsd:ID"/>
+    </xsd:complexType>
+
+
+    <!-- **************************************************** -->
+
+    <xsd:complexType name="faces-config-suggested-valueType">
+        <xsd:annotation>
+            <xsd:documentation>
+
+                The "suggested-value" contains the value for the property or
+                attribute in which this element resides.  This value is
+                advisory only and is intended for tools to use when
+                populating pallettes.
+
+            </xsd:documentation>
+        </xsd:annotation>
+        <xsd:simpleContent>
+            <xsd:restriction base="javaee:string"/>
+        </xsd:simpleContent>
+    </xsd:complexType>
+
+    <!-- **************************************************** -->
+
+    <xsd:complexType name="faces-config-supported-localeType">
+        <xsd:annotation>
+            <xsd:documentation>
+
+                The "supported-locale" element allows authors to declare
+                which locales are supported in this application instance.
+
+                It must be specified as :language:[_:country:[_:variant:]]
+                without the colons, for example "ja_JP_SJIS".  The
+                separators between the segments may be '-' or '_'.
+
+            </xsd:documentation>
+        </xsd:annotation>
+        <xsd:simpleContent>
+            <xsd:extension base="javaee:faces-config-localeType">
+                <xsd:attribute name="id" type="xsd:ID"/>
+            </xsd:extension>
+        </xsd:simpleContent>
+    </xsd:complexType>
+
+    <!-- **************************************************** -->
+
+    <xsd:complexType name="faces-config-behaviorType">
+        <xsd:annotation>
+            <xsd:documentation>
+
+                The "behavior" element represents a concrete Behavior
+                implementation class that should be registered under the
+                specified behavior identifier.  Behavior identifiers must
+                be unique within the entire web application.
+
+                Nested "attribute" elements identify generic attributes that
+                may be configured on the corresponding UIComponent in order
+                to affect the operation of the Behavior.  Nested "property"
+                elements identify JavaBeans properties of the Behavior
+                implementation class that may be configured to affect the
+                operation of the Behavior.  "attribute" and "property"
+                elements are intended to allow component developers to
+                more completely describe their components to tools and users.
+                These elements have no required runtime semantics.
+
+            </xsd:documentation>
+        </xsd:annotation>
+        <xsd:sequence>
+            <xsd:group ref="javaee:descriptionGroup"/>
+            <xsd:element name="behavior-id"
+                         type="javaee:string">
+                <xsd:annotation>
+                    <xsd:documentation>
+
+                        The "behavior-id" element represents the identifier
+                        under which the corresponding Behavior class should
+                        be registered.
+
+                    </xsd:documentation>
+                </xsd:annotation>
+            </xsd:element>
+            <xsd:element name="behavior-class"
+                         type="javaee:fully-qualified-classType">
+                <xsd:annotation>
+                    <xsd:documentation>
+
+                        The "behavior-class" element represents the fully
+                        qualified class name of a concrete Behavior
+                        implementation class.
+
+                    </xsd:documentation>
+                </xsd:annotation>
+            </xsd:element>
+            <xsd:element name="attribute"
+                         type="javaee:faces-config-attributeType"
+                         minOccurs="0"
+                         maxOccurs="unbounded">
+                <xsd:annotation>
+                    <xsd:documentation>
+
+                       Nested "attribute" elements identify generic
+                       attributes that may be configured on the
+                       corresponding UIComponent in order to affect the
+                       operation of the Behavior.  This attribute is
+                       primarily for design-time tools and is not
+                       specified to have any meaning at runtime.
+
+                    </xsd:documentation>
+                </xsd:annotation>
+
+            </xsd:element>
+            <xsd:element name="property"
+                         type="javaee:faces-config-propertyType"
+                         minOccurs="0"
+                         maxOccurs="unbounded">
+                <xsd:annotation>
+                    <xsd:documentation>
+
+                       Nested "property" elements identify JavaBeans
+                       properties of the Behavior implementation class
+                       that may be configured to affect the operation of
+                       the Behavior.  This attribute is primarily for
+                       design-time tools and is not specified to have
+                       any meaning at runtime.
+
+                    </xsd:documentation>
+                </xsd:annotation>
+            </xsd:element>
+            <xsd:element name="behavior-extension"
+                         type="javaee:faces-config-behavior-extensionType"
+                         minOccurs="0"
+                         maxOccurs="unbounded"/>
+        </xsd:sequence>
+        <xsd:attribute name="id" type="xsd:ID"/>
+    </xsd:complexType>
+
+    <!-- **************************************************** -->
+
+    <xsd:complexType name = "faces-config-behavior-extensionType">
+        <xsd:annotation>
+            <xsd:documentation>
+
+                Extension element for behavior.  It may contain
+                implementation specific content.
+
+            </xsd:documentation>
+        </xsd:annotation>
+
+        <xsd:sequence>
+            <xsd:any namespace="##any"
+                     processContents="lax"
+                     minOccurs="0"
+                     maxOccurs="unbounded" />
+         </xsd:sequence>
+         <xsd:attribute name="id" type="xsd:ID"/>
+    </xsd:complexType>
+
+    <!-- **************************************************** -->
+
+    <xsd:complexType name="faces-config-validatorType">
+        <xsd:annotation>
+            <xsd:documentation>
+
+                The "validator" element represents a concrete Validator
+                implementation class that should be registered under the
+                specified validator identifier.  Validator identifiers must
+                be unique within the entire web application.
+
+                Nested "attribute" elements identify generic attributes that
+                may be configured on the corresponding UIComponent in order
+                to affect the operation of the Validator.  Nested "property"
+                elements identify JavaBeans properties of the Validator
+                implementation class that may be configured to affect the
+                operation of the Validator.  "attribute" and "property"
+                elements are intended to allow component developers to
+                more completely describe their components to tools and users.
+                These elements have no required runtime semantics.
+
+            </xsd:documentation>
+        </xsd:annotation>
+        <xsd:sequence>
+            <xsd:group ref="javaee:descriptionGroup"/>
+            <xsd:element name="validator-id"
+                         type="javaee:string">
+                <xsd:annotation>
+                    <xsd:documentation>
+
+                        The "validator-id" element represents the identifier
+                        under which the corresponding Validator class should
+                        be registered.
+
+                    </xsd:documentation>
+                </xsd:annotation>
+            </xsd:element>
+            <xsd:element name="validator-class"
+                         type="javaee:fully-qualified-classType">
+                <xsd:annotation>
+                    <xsd:documentation>
+
+                        The "validator-class" element represents the fully
+                        qualified class name of a concrete Validator
+                        implementation class.
+
+                    </xsd:documentation>
+                </xsd:annotation>
+            </xsd:element>
+            <xsd:element name="attribute"
+                         type="javaee:faces-config-attributeType"
+                         minOccurs="0"
+                         maxOccurs="unbounded">
+                <xsd:annotation>
+                    <xsd:documentation>
+
+                       Nested "attribute" elements identify generic
+                       attributes that may be configured on the
+                       corresponding UIComponent in order to affect the
+                       operation of the Validator.  This attribute is
+                       primarily for design-time tools and is not
+                       specified to have any meaning at runtime.
+
+                    </xsd:documentation>
+                </xsd:annotation>
+
+            </xsd:element>
+            <xsd:element name="property"
+                         type="javaee:faces-config-propertyType"
+                         minOccurs="0"
+                         maxOccurs="unbounded">
+                <xsd:annotation>
+                    <xsd:documentation>
+
+                       Nested "property" elements identify JavaBeans
+                       properties of the Validator implementation class
+                       that may be configured to affect the operation of
+                       the Validator.  This attribute is primarily for
+                       design-time tools and is not specified to have
+                       any meaning at runtime.
+
+                    </xsd:documentation>
+                </xsd:annotation>
+            </xsd:element>
+            <xsd:element name="validator-extension"
+                         type="javaee:faces-config-validator-extensionType"
+                         minOccurs="0"
+                         maxOccurs="unbounded"/>
+        </xsd:sequence>
+        <xsd:attribute name="id" type="xsd:ID"/>
+    </xsd:complexType>
+
+    <!-- **************************************************** -->
+
+    <xsd:complexType name = "faces-config-validator-extensionType">
+        <xsd:annotation>
+            <xsd:documentation>
+
+                Extension element for validator.  It may contain
+                implementation specific content.
+
+            </xsd:documentation>
+        </xsd:annotation>
+
+        <xsd:sequence>
+            <xsd:any namespace="##any"
+                     processContents="lax"
+                     minOccurs="0"
+                     maxOccurs="unbounded" />
+         </xsd:sequence>
+         <xsd:attribute name="id" type="xsd:ID"/>
+    </xsd:complexType>
+
+    <!-- **************************************************** -->
+
+    <xsd:simpleType name="faces-config-valueType">
+        <xsd:annotation>
+            <xsd:documentation>
+
+                The "value" element is the String representation of
+                a literal value to which a scalar managed property
+                will be set, or a value binding expression ("#{...}")
+                that will be used to calculate the required value.
+                It will be converted as specified for the actual
+                property type.
+
+            </xsd:documentation>
+        </xsd:annotation>
+        <xsd:union
+            memberTypes="javaee:faces-config-el-expressionType xsd:string"/>
+    </xsd:simpleType>
+
+    <!-- **************************************************** -->
+
+    <xsd:complexType name="faces-config-value-classType">
+        <xsd:annotation>
+            <xsd:documentation>
+
+                The "value-class" element defines the Java type to which each
+                "value" element's value will be converted to, prior to adding
+                it to the "list-entries" list for a managed property that is
+                a java.util.List, or a "map-entries" map for a managed
+                property that is a java.util.Map.
+
+            </xsd:documentation>
+        </xsd:annotation>
+        <xsd:simpleContent>
+            <xsd:restriction base="javaee:fully-qualified-classType">
+                <xsd:attribute name="id" type="xsd:ID"/>
+            </xsd:restriction>
+        </xsd:simpleContent>
+    </xsd:complexType>
+
+    <!-- **************************************************** -->
+
+    <xsd:complexType name="faces-config-list-entriesType">
+        <xsd:annotation>
+            <xsd:documentation>
+
+                The "list-entries" element represents a set of initialization
+                elements for a managed property that is a java.util.List or an
+                array.  In the former case, the "value-class" element can
+                optionally be used to declare the Java type to which each
+                value should be converted before adding it to the Collection.
+
+            </xsd:documentation>
+        </xsd:annotation>
+        <xsd:sequence>
+            <xsd:element name="value-class"
+                         type="javaee:faces-config-value-classType"
+                         minOccurs="0"/>
+            <xsd:choice minOccurs="0" maxOccurs="unbounded">
+                <xsd:element name="null-value"
+                             type="javaee:faces-config-null-valueType"/>
+                <xsd:element name="value"
+                             type="javaee:faces-config-valueType"/>
+            </xsd:choice>
+        </xsd:sequence>
+        <xsd:attribute name="id" type="xsd:ID"/>
+    </xsd:complexType>
+
+    <!-- **************************************************** -->
+
+    <xsd:complexType name="faces-config-system-event-listenerType">
+        <xsd:annotation>
+            <xsd:documentation>
+
+                The presence of this element within the "application" element in
+                an application configuration resource file indicates the
+                developer wants to add an SystemEventListener to this
+                application instance.  Elements nested within this element allow
+                selecting the kinds of events that will be delivered to the
+                listener instance, and allow selecting the kinds of classes that
+                can be the source of events that are delivered to the listener
+                instance.
+
+            </xsd:documentation>
+        </xsd:annotation>
+        <xsd:sequence>
+            <xsd:element name="system-event-listener-class"
+                         type="javaee:fully-qualified-classType">
+                <xsd:annotation>
+                    <xsd:documentation>
+
+                        The "system-event-listener-class" element contains
+                        the fully qualified class name of the concrete
+                        SystemEventListener implementation class that will be
+                        called when events of the type specified by the
+                        "system-event-class" are sent by the runtime.
+
+                    </xsd:documentation>
+                </xsd:annotation>
+            </xsd:element>
+            <xsd:element name="system-event-class"
+                         type="javaee:fully-qualified-classType">
+                <xsd:annotation>
+                    <xsd:documentation>
+
+                        The "system-event-class" element contains the fully
+                        qualified class name of the SystemEvent subclass for
+                        which events will be delivered to the class whose fully
+                        qualified class name is given by the
+                        "system-event-listener-class" element.
+
+                    </xsd:documentation>
+                </xsd:annotation>
+            </xsd:element>
+            <xsd:element name="source-class" minOccurs="0"
+                         type="javaee:fully-qualified-classType">
+                <xsd:annotation>
+                    <xsd:documentation>
+
+                        The "source-class" element, if present, contains the
+                        fully qualified class name of the class that will be the
+                        source for the event to be delivered to the class whose
+                        fully qualified class name is given by the
+                        "system-event-listener-class" element.
+
+                    </xsd:documentation>
+                </xsd:annotation>
+            </xsd:element>
+        </xsd:sequence>
+        <xsd:attribute name="id" type="xsd:ID"/>
+    </xsd:complexType>
+
+    <!-- **************************************************** -->
+
+    <xsd:simpleType name="faces-config-versionType">
+        <xsd:annotation>
+            <xsd:documentation>
+
+                This type contains the recognized versions of
+                faces-config supported.
+
+            </xsd:documentation>
+        </xsd:annotation>
+        <xsd:restriction base="xsd:token">
+            <xsd:enumeration value="2.1"/>
+        </xsd:restriction>
+    </xsd:simpleType>
+
+    <!-- **************************************************** -->
+
+</xsd:schema>
diff --git a/jsf-api/doc/web-facesconfig_2_2.xsd b/jsf-api/doc/web-facesconfig_2_2.xsd
new file mode 100644
index 0000000..8127220
--- /dev/null
+++ b/jsf-api/doc/web-facesconfig_2_2.xsd
@@ -0,0 +1,3703 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<xsd:schema xmlns:javaee="http://xmlns.jcp.org/xml/ns/javaee" attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://xmlns.jcp.org/xml/ns/javaee" version="2.2" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+    <xsd:include schemaLocation="javaee_7.xsd" />
+    <xsd:annotation>
+        <xsd:documentation>
+
+      DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+      
+      Copyright (c) 2011 - 2013 Oracle and/or its affiliates. All rights reserved.
+      
+      The contents of this file are subject to the terms of either the GNU
+      General Public License Version 2 only ("GPL") or the Common Development
+      and Distribution License("CDDL") (collectively, the "License").  You
+      may not use this file except in compliance with the License.  You can
+      obtain a copy of the License at
+      https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+      or packager/legal/LICENSE.txt.  See the License for the specific
+      language governing permissions and limitations under the License.
+      
+      When distributing the software, include this License Header Notice in each
+      file and include the License file at packager/legal/LICENSE.txt.
+      
+      GPL Classpath Exception:
+      Oracle designates this particular file as subject to the "Classpath"
+      exception as provided by Oracle in the GPL Version 2 section of the License
+      file that accompanied this code.
+      
+      Modifications:
+      If applicable, add the following below the License Header, with the fields
+      enclosed by brackets [] replaced by your own identifying information:
+      "Portions Copyright [year] [name of copyright owner]"
+      
+      Contributor(s):
+      If you wish your version of this file to be governed by only the CDDL or
+      only the GPL Version 2, indicate your decision by adding "[Contributor]
+      elects to include this software in this distribution under the [CDDL or GPL
+      Version 2] license."  If you don't indicate a single choice of license, a
+      recipient has the option to distribute your version of this file under
+      either the CDDL, the GPL Version 2 or to extend the choice of license to
+      its licensees as provided above.  However, if you add GPL Version 2 code
+      and therefore, elected the GPL Version 2 license, then the option applies
+      only if the new code is made subject to such option by the copyright
+      holder.
+      
+    </xsd:documentation>
+    </xsd:annotation>
+
+  <xsd:annotation>
+    <xsd:documentation>
+      <![CDATA[
+
+      <p>The XML Schema for the JavaServer Faces Application
+      Configuration File (Version 2.2).</p>
+      
+      <p>All JavaServer Faces configuration files must indicate
+      the JavaServer Faces schema by indicating the JavaServer
+      Faces namespace:</p>
+      
+      <p>http://xmlns.jcp.org/xml/ns/javaee</p>
+      
+      <p>and by indicating the version of the schema by
+      using the version element as shown below:</p>
+      
+      <pre><faces-config xmlns="http://xmlns.jcp.org/xml/ns/javaee"
+      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+      xsi:schemaLocation="..."
+      version="2.2">
+      ...
+      </faces-config></pre>
+      
+      <p>The instance documents may indicate the published
+      version of the schema using xsi:schemaLocation attribute
+      for javaee namespace with the following location:</p>
+      
+      <p>http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd</p>
+      
+      ]]>
+    </xsd:documentation>
+  </xsd:annotation>
+
+
+<!-- **************************************************** -->
+
+  <xsd:element name="faces-config"
+               type="javaee:faces-configType">
+    <xsd:annotation>
+      <xsd:documentation><![CDATA[
+
+        <p>The "faces-config" element is the root of the configuration
+        information hierarchy, and contains nested elements for all
+        of the other configuration settings.</p>
+        
+      ]]></xsd:documentation>
+    </xsd:annotation>
+    <xsd:unique name="faces-config-behavior-ID-uniqueness">
+      <xsd:annotation>
+        <xsd:documentation><![CDATA[
+
+          <p>Behavior IDs must be unique within a document.</p>
+          
+        ]]></xsd:documentation>
+      </xsd:annotation>
+      <xsd:selector xpath="javaee:behavior"/>
+      <xsd:field xpath="javaee:behavior-id"/>
+    </xsd:unique>
+    <xsd:unique name="faces-config-converter-ID-uniqueness">
+      <xsd:annotation>
+        <xsd:documentation><![CDATA[
+
+          <p>Converter IDs must be unique within a document.</p>
+          
+        ]]></xsd:documentation>
+      </xsd:annotation>
+      <xsd:selector xpath="javaee:converter"/>
+      <xsd:field xpath="javaee:converter-id"/>
+    </xsd:unique>
+    <xsd:unique name="faces-config-converter-for-class-uniqueness">
+      <xsd:annotation>
+        <xsd:documentation><![CDATA[
+
+          <p>'converter-for-class' element values must be unique
+          within a document.</p>
+          
+        ]]></xsd:documentation>
+      </xsd:annotation>
+      <xsd:selector xpath="javaee:converter"/>
+      <xsd:field xpath="javaee:converter-for-class"/>
+    </xsd:unique>
+    <xsd:unique name="faces-config-validator-ID-uniqueness">
+      <xsd:annotation>
+        <xsd:documentation><![CDATA[
+
+         <p> Validator IDs must be unique within a document.</p>
+          
+        ]]></xsd:documentation>
+      </xsd:annotation>
+      <xsd:selector xpath="javaee:validator"/>
+      <xsd:field xpath="javaee:validator-id"/>
+    </xsd:unique>
+    <xsd:unique name="faces-config-managed-bean-name-uniqueness">
+      <xsd:annotation>
+        <xsd:documentation><![CDATA[
+
+         <p> Managed bean names must be unique within a document.</p>
+          
+        ]]></xsd:documentation>
+      </xsd:annotation>
+      <xsd:selector xpath="javaee:managed-bean"/>
+      <xsd:field xpath="javaee:managed-bean-name"/>
+    </xsd:unique>
+  </xsd:element>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="faces-configType">
+    <xsd:annotation>
+      <xsd:documentation><![CDATA[
+
+       <p> The "faces-config" element is the root of the configuration
+        information hierarchy, and contains nested elements for all
+        of the other configuration settings.</p>
+        
+      ]]></xsd:documentation>
+    </xsd:annotation>
+    <xsd:choice minOccurs="0"
+                maxOccurs="unbounded">
+      <xsd:element name="application"
+                   type="javaee:faces-config-applicationType"/>
+      <xsd:element name="ordering"
+                   type="javaee:faces-config-orderingType"/>
+      <xsd:element name="absolute-ordering"
+                   type="javaee:faces-config-absoluteOrderingType"
+                   minOccurs="0"
+                   />
+      <xsd:element name="factory"
+                   type="javaee:faces-config-factoryType"/>
+      <xsd:element name="component"
+                   type="javaee:faces-config-componentType"/>
+      <xsd:element name="converter"
+                   type="javaee:faces-config-converterType"/>
+      <xsd:element name="managed-bean"
+                   type="javaee:faces-config-managed-beanType"/>
+      <xsd:element name="flow-definition"
+                   type="javaee:faces-config-flow-definitionType"/>
+      <xsd:element name="name"
+                   type="javaee:java-identifierType"
+                   minOccurs="0"
+                   >
+        <xsd:annotation>
+          <xsd:documentation><![CDATA[
+
+           <p> <span class="changed_modified_2_2">The</span> "name" element 
+           within the top level "faces-config"
+            element declares the name of this application
+            configuration resource.  Such names are used
+            in the document ordering scheme specified in section
+            JSF.11.4.6.</p>
+            
+            <p class="changed_added_2_2">This value is taken to be the 
+            defining document id of any <flow-definition> elements 
+            defined in this Application Configuration Resource file.  If this
+            element is not specified, the runtime must take the empty string 
+            as its value.</p>
+            
+          ]]></xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="navigation-rule"
+                   type="javaee:faces-config-navigation-ruleType"/>
+      <xsd:element name="protected-views"
+                   type="javaee:faces-config-protected-viewsType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="referenced-bean"
+                   type="javaee:faces-config-referenced-beanType"/>
+      <xsd:element name="render-kit"
+                   type="javaee:faces-config-render-kitType"/>
+      <xsd:element name="lifecycle"
+                   type="javaee:faces-config-lifecycleType"/>
+      <xsd:element name="validator"
+                   type="javaee:faces-config-validatorType"/>
+      <xsd:element name="behavior"
+                   type="javaee:faces-config-behaviorType"/>
+      <xsd:element name="faces-config-extension"
+                   type="javaee:faces-config-extensionType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+    </xsd:choice>
+    <xsd:attribute name="metadata-complete"
+                   type="xsd:boolean"
+                   use="optional">
+      <xsd:annotation>
+        <xsd:documentation><![CDATA[
+
+          The metadata-complete attribute defines whether this
+          JavaServer Faces application is complete, or whether
+          the class files available to this module and packaged with
+          this application should be examined for annotations
+          that specify configuration information.
+          
+          This attribute is only inspected on the application 
+          configuration resource file located at "WEB-INF/faces-config.xml".
+          The presence of this attribute on any application configuration
+          resource other than the one located at "WEB-INF/faces-config.xml",
+          including any files named using the javax.faces.CONFIG_FILES
+          attribute, must be ignored.
+          
+          If metadata-complete is set to "true", the JavaServer Faces
+          runtime must ignore any annotations that specify configuration
+          information, which might be present in the class files
+          of the application.
+          
+          If metadata-complete is not specified or is set to
+          "false", the JavaServer Faces runtime must examine the class
+          files of the application for annotations, as specified by
+          the specification.
+          
+          If "WEB-INF/faces-config.xml" is not present, the JavaServer
+          Faces runtime will assume metadata-complete to be "false".
+          
+          The value of this attribute will have no impact on
+          runtime annotations such as @ResourceDependency or
+          @ListenerFor.
+          
+        ]]></xsd:documentation>
+      </xsd:annotation>
+    </xsd:attribute>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+    <xsd:attribute name="version"
+                   type="javaee:faces-config-versionType"
+                   use="required"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-extensionType">
+    <xsd:annotation>
+      <xsd:documentation><![CDATA[
+
+       <p> Extension element for faces-config.  It may contain
+        implementation specific content.</p>
+        
+      ]]></xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:any minOccurs="0"
+               maxOccurs="unbounded"
+               namespace="##any"
+               processContents="lax"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-orderingType">
+    <xsd:annotation>
+      <xsd:documentation><![CDATA[
+
+       <p> Please see section JSF.11.4.6 for the specification of this element.</p>
+        
+      ]]></xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="after"
+                   type="javaee:faces-config-ordering-orderingType"
+                   minOccurs="0"
+                   />
+      <xsd:element name="before"
+                   type="javaee:faces-config-ordering-orderingType"
+                   minOccurs="0"
+                   />
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-ordering-orderingType">
+    <xsd:annotation>
+      <xsd:documentation><![CDATA[
+
+       <p> This element contains a sequence of "id" elements, each of which
+        refers to an application configuration resource by the "id"
+        declared on its faces-config element.  This element can also contain
+        a single "others" element which specifies that this document comes
+        before or after other documents within the application.</p>
+        
+      ]]></xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="name"
+                   type="javaee:java-identifierType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="others"
+                   type="javaee:faces-config-ordering-othersType"
+                   minOccurs="0"
+                   />
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-ordering-othersType">
+    <xsd:annotation>
+      <xsd:documentation><![CDATA[
+
+       <p> This element indicates that the ordering sub-element in which
+        it was placed should take special action regarding the ordering
+        of this application resource relative to other
+        application configuration resources.  See section JSF.11.4.6
+        for the complete specification.</p>
+        
+      ]]></xsd:documentation>
+    </xsd:annotation>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-absoluteOrderingType">
+    <xsd:annotation>
+      <xsd:documentation><![CDATA[
+
+       <p> Only relevant if this is placed within the /WEB-INF/faces-config.xml.
+        Please see section JSF.11.4.6 for the specification for details.</p>
+        
+      ]]></xsd:documentation>
+    </xsd:annotation>
+    <xsd:choice minOccurs="0"
+                maxOccurs="unbounded">
+      <xsd:element name="name"
+                   type="javaee:java-identifierType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="others"
+                   type="javaee:faces-config-ordering-othersType"
+                   minOccurs="0"
+                   />
+    </xsd:choice>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-applicationType">
+    <xsd:annotation>
+      <xsd:documentation><![CDATA[
+
+       <p> The "application" element provides a mechanism to define the
+        various per-application-singleton implementation artifacts for
+        a particular web application that is utilizing
+        JavaServer Faces.  For nested elements that are not specified,
+        the JSF implementation must provide a suitable default.</p>
+        
+      ]]></xsd:documentation>
+    </xsd:annotation>
+    <xsd:choice minOccurs="0"
+                maxOccurs="unbounded">
+      <xsd:element name="action-listener"
+                   type="javaee:fully-qualified-classType">
+        <xsd:annotation>
+          <xsd:documentation><![CDATA[
+
+           <p> The "action-listener" element contains the fully
+            qualified class name of the concrete
+            ActionListener implementation class that will be
+            called during the Invoke Application phase of the
+            request processing lifecycle.</p>
+            
+          ]]></xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="default-render-kit-id"
+                   type="javaee:string">
+        <xsd:annotation>
+          <xsd:documentation><![CDATA[
+
+           <p> The "default-render-kit-id" element allows the
+            application to define a renderkit to be used other
+            than the standard one.</p>
+            
+          ]]></xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="message-bundle"
+                   type="javaee:string">
+        <xsd:annotation>
+          <xsd:documentation><![CDATA[
+
+           <p> The base name of a resource bundle representing
+            the message resources for this application.  See
+            the JavaDocs for the "java.util.ResourceBundle"
+            class for more information on the syntax of
+            resource bundle names.</p>
+            
+          ]]></xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="navigation-handler"
+                   type="javaee:fully-qualified-classType">
+        <xsd:annotation>
+          <xsd:documentation><![CDATA[
+
+           <p> The "navigation-handler" element contains the
+            fully qualified class name of the concrete
+            NavigationHandler implementation class that will
+            be called during the Invoke Application phase
+            of the request processing lifecycle, if the
+            default ActionListener (provided by the JSF
+            implementation) is used.</p>
+            
+          ]]></xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="view-handler"
+                   type="javaee:fully-qualified-classType">
+        <xsd:annotation>
+          <xsd:documentation><![CDATA[
+
+           <p> The "view-handler" element contains the fully
+            qualified class name of the concrete ViewHandler
+            implementation class that will be called during
+            the Restore View and Render Response phases of the
+            request processing lifecycle.  The faces
+            implementation must provide a default
+            implementation of this class.</p>
+            
+          ]]></xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="state-manager"
+                   type="javaee:fully-qualified-classType">
+        <xsd:annotation>
+          <xsd:documentation><![CDATA[
+
+           <p> The "state-manager" element contains the fully
+            qualified class name of the concrete StateManager
+            implementation class that will be called during
+            the Restore View and Render Response phases of the
+            request processing lifecycle.  The faces
+            implementation must provide a default
+            implementation of this class.</p>
+            
+          ]]></xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="el-resolver"
+                   type="javaee:fully-qualified-classType">
+        <xsd:annotation>
+          <xsd:documentation><![CDATA[
+
+           <p> The "el-resolver" element contains the fully
+            qualified class name of the concrete
+            javax.el.ELResolver implementation class
+            that will be used during the processing of
+            EL expressions.</p>
+            
+          ]]></xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="property-resolver"
+                   type="javaee:fully-qualified-classType">
+        <xsd:annotation>
+          <xsd:documentation><![CDATA[
+
+           <p> The "property-resolver" element contains the fully
+            qualified class name of the concrete
+            PropertyResolver implementation class that will
+            be used during the processing of value binding
+            expressions.</p>
+            
+          ]]></xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="variable-resolver"
+                   type="javaee:fully-qualified-classType">
+        <xsd:annotation>
+          <xsd:documentation><![CDATA[
+
+           <p> The "variable-resolver" element contains the fully
+            qualified class name of the concrete
+            VariableResolver implementation class that will
+            be used during the processing of value binding
+            expressions.</p>
+            
+          ]]></xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="resource-handler"
+                   type="javaee:fully-qualified-classType">
+        <xsd:annotation>
+          <xsd:documentation><![CDATA[
+
+           <p> The "resource-handler" element contains the
+            fully qualified class name of the concrete
+            ResourceHandler implementation class that
+            will be used during rendering and decoding
+            of resource requests The standard
+            constructor based decorator pattern used for
+            other application singletons will be
+            honored.</p>
+            
+          ]]></xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="resource-library-contracts"
+                   type="javaee:faces-config-application-resource-library-contractsType">
+        <xsd:annotation>
+          <xsd:documentation><![CDATA[
+
+           <p class="changed_added_2_2">The "resource-library-contracts" element
+           specifies the mappings between views in the application and resource
+           library contracts that, if present in the application, must be made
+           available for use as templates of the specified views.
+           </p>
+            
+          ]]></xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="system-event-listener"
+                   type="javaee:faces-config-system-event-listenerType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="locale-config"
+                   type="javaee:faces-config-locale-configType"/>
+      <xsd:element name="resource-bundle"
+                   type="javaee:faces-config-application-resource-bundleType"/>
+      <xsd:element name="application-extension"
+                   type="javaee:faces-config-application-extensionType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="default-validators"
+                   type="javaee:faces-config-default-validatorsType"/>
+    </xsd:choice>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-application-resource-bundleType">
+    <xsd:annotation>
+      <xsd:documentation><![CDATA[
+
+       <p> The resource-bundle element inside the application element
+        references a java.util.ResourceBundle instance by name
+        using the var element.  ResourceBundles referenced in this
+        manner may be returned by a call to
+        Application.getResourceBundle() passing the current
+        FacesContext for this request and the value of the var
+        element below.</p>
+        
+      ]]></xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:group ref="javaee:descriptionGroup"/>
+      <xsd:element name="base-name"
+                   type="javaee:fully-qualified-classType">
+        <xsd:annotation>
+          <xsd:documentation><![CDATA[
+
+           <p> The fully qualified class name of the
+            java.util.ResourceBundle instance.</p>
+            
+          ]]></xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="var"
+                   type="javaee:string">
+        <xsd:annotation>
+          <xsd:documentation><![CDATA[
+
+           <p> The name by which this ResourceBundle instance
+            is retrieved by a call to
+            Application.getResourceBundle().</p>
+            
+          ]]></xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+  <xsd:complexType name="faces-config-application-resource-library-contractsType">
+    <xsd:annotation>
+      <xsd:documentation><![CDATA[
+
+           <p class="changed_added_2_2">The "resource-library-contracts" element
+           specifies the mappings between views in the application and resource
+           library contracts that, if present in the application, must be made
+           available for use as templates of the specified views.
+           </p>
+        
+      ]]></xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:group ref="javaee:descriptionGroup"/>
+      <xsd:element name="contract-mapping"
+                   type="javaee:faces-config-application-resource-library-contracts-contract-mappingType"
+                   
+                   maxOccurs="unbounded">
+        <xsd:annotation>
+          <xsd:documentation><![CDATA[
+
+           <p classes="changed_added_2_2">Declare a mapping between a collection
+           of views in the application and the list of contracts (if present in the application)
+           that may be used as a source for templates and resources for those views.</p>
+            
+          ]]></xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+  <xsd:complexType name="faces-config-application-resource-library-contracts-contract-mappingType">
+    <xsd:annotation>
+      <xsd:documentation><![CDATA[
+
+           <p class="changed_added_2_2">The "contract-mapping" element
+           specifies the mappings between a collection of views in the application and resource
+           library contracts that, if present in the application, must be made
+           available for use as templates of the specified views.
+           </p>
+        
+      ]]></xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:group ref="javaee:descriptionGroup"/>
+      <xsd:element name="url-pattern"
+                   type="javaee:url-patternType"
+                   maxOccurs="unbounded">
+        <xsd:annotation>
+          <xsd:documentation><![CDATA[
+
+           <p class="changed_added_2_2">The "url-pattern" element
+           specifies the collection of views in this application that 
+           are allowed to use the corresponding contracts.
+           </p>
+        
+           ]]></xsd:documentation>
+         </xsd:annotation>
+      </xsd:element>
+
+      <xsd:element name="contracts"
+                   type="javaee:string"
+                   maxOccurs="unbounded">
+        <xsd:annotation>
+          <xsd:documentation><![CDATA[
+
+           <p class="changed_added_2_2">The "contracts" element
+           is a comma separated list of resource library contracts that,
+           if available to the application, may be used by the views
+           matched by the corresponding "url-pattern"
+           </p>
+        
+           ]]></xsd:documentation>
+         </xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-application-extensionType">
+    <xsd:annotation>
+      <xsd:documentation><![CDATA[
+
+       <p> Extension element for application.  It may contain
+        implementation specific content.</p>
+        
+      ]]></xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:any minOccurs="0"
+               maxOccurs="unbounded"
+               namespace="##any"
+               processContents="lax"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-factoryType">
+    <xsd:annotation>
+      <xsd:documentation><![CDATA[
+
+       <p> The "factory" element provides a mechanism to define the
+        various Factories that comprise parts of the implementation
+        of JavaServer Faces.  For nested elements that are not
+        specified, the JSF implementation must provide a suitable
+        default.</p>
+        
+      ]]></xsd:documentation>
+    </xsd:annotation>
+    <xsd:choice minOccurs="0"
+                maxOccurs="unbounded">
+      <xsd:element name="application-factory"
+                   type="javaee:fully-qualified-classType">
+        <xsd:annotation>
+          <xsd:documentation><![CDATA[
+
+           <p> The "application-factory" element contains the
+            fully qualified class name of the concrete
+            ApplicationFactory implementation class that will
+            be called when
+            FactoryFinder.getFactory(APPLICATION_FACTORY) is
+            called.</p>
+            
+          ]]></xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="exception-handler-factory"
+                   type="javaee:fully-qualified-classType">
+        <xsd:annotation>
+          <xsd:documentation><![CDATA[
+
+           <p> The "exception-handler-factory" element contains the
+            fully qualified class name of the concrete
+            ExceptionHandlerFactory implementation class that will
+            be called when
+            FactoryFinder.getFactory(EXCEPTION_HANDLER_FACTORY)
+            is called.</p>
+            
+          ]]></xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="external-context-factory"
+                   type="javaee:fully-qualified-classType">
+        <xsd:annotation>
+          <xsd:documentation><![CDATA[
+
+           <p> The "external-context-factory" element contains the
+            fully qualified class name of the concrete
+            ExternalContextFactory implementation class that will
+            be called when
+            FactoryFinder.getFactory(EXTERNAL_CONTEXT_FACTORY)
+            is called.</p>
+            
+          ]]></xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="faces-context-factory"
+                   type="javaee:fully-qualified-classType">
+        <xsd:annotation>
+          <xsd:documentation><![CDATA[
+
+           <p> The "faces-context-factory" element contains the
+            fully qualified class name of the concrete
+            FacesContextFactory implementation class that will
+            be called when
+            FactoryFinder.getFactory(FACES_CONTEXT_FACTORY)
+            is called.</p>
+            
+          ]]></xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="facelet-cache-factory"
+                   type="javaee:fully-qualified-classType">
+        <xsd:annotation>
+          <xsd:documentation><![CDATA[
+
+           <p> The "facelet-cache-factory" element contains the
+            fully qualified class name of the concrete
+            FaceletCacheFactory implementation class that will
+            be called when
+            FactoryFinder.getFactory(FACELET_CACHE_FACTORY)
+            is called.</p>
+            
+          ]]></xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="partial-view-context-factory"
+                   type="javaee:fully-qualified-classType">
+        <xsd:annotation>
+          <xsd:documentation><![CDATA[
+
+           <p> The "partial-view-context-factory" element contains the
+            fully qualified class name of the concrete
+            PartialViewContextFactory implementation class that will
+            be called when FactoryFinder.getFactory
+            (FactoryFinder.PARTIAL_VIEW_CONTEXT_FACTORY) is called.</p>
+            
+          ]]></xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="lifecycle-factory"
+                   type="javaee:fully-qualified-classType">
+        <xsd:annotation>
+          <xsd:documentation><![CDATA[
+
+           <p> The "lifecycle-factory" element contains the fully
+            qualified class name of the concrete LifecycleFactory
+            implementation class that will be called when
+            FactoryFinder.getFactory(LIFECYCLE_FACTORY) is called.</p>
+            
+          ]]></xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="view-declaration-language-factory"
+                   type="javaee:fully-qualified-classType">
+        <xsd:annotation>
+          <xsd:documentation><![CDATA[
+
+           <p> The "view-declaration-language-factory" element contains
+            the fully qualified class name of the concrete
+            ViewDeclarationLanguageFactory
+            implementation class that will be called when
+            FactoryFinder.getFactory(VIEW_DECLARATION_FACTORY) is called.</p>
+            
+          ]]></xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="tag-handler-delegate-factory"
+                   type="javaee:fully-qualified-classType">
+        <xsd:annotation>
+          <xsd:documentation><![CDATA[
+
+           <p> The "tag-handler-delegate-factory" element contains
+            the fully qualified class name of the concrete
+            ViewDeclarationLanguageFactory
+            implementation class that will be called when
+            FactoryFinder.getFactory(TAG_HANDLER_DELEGATE_FACTORY) is called.</p>
+            
+          ]]></xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="render-kit-factory"
+                   type="javaee:fully-qualified-classType">
+        <xsd:annotation>
+          <xsd:documentation><![CDATA[
+
+           <p> The "render-kit-factory" element contains the fully
+            qualified class name of the concrete RenderKitFactory
+            implementation class that will be called when
+            FactoryFinder.getFactory(RENDER_KIT_FACTORY) is
+            called.</p>
+            
+          ]]></xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="visit-context-factory"
+                   type="javaee:fully-qualified-classType">
+        <xsd:annotation>
+          <xsd:documentation><![CDATA[
+
+           <p> The "visit-context-factory" element contains the fully
+            qualified class name of the concrete VisitContextFactory
+            implementation class that will be called when
+            FactoryFinder.getFactory(VISIT_CONTEXT_FACTORY) is
+            called.</p>
+            
+          ]]></xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="flash-factory"
+                   type="javaee:fully-qualified-classType">
+        <xsd:annotation>
+          <xsd:documentation><![CDATA[
+
+           <p class="changed_added_2_2"> The "flash-factory" element contains the
+            fully qualified class name of the concrete
+            FaceletFactory implementation class that will
+            be called when
+            FactoryFinder.getFactory(FLASH_FACTORY) is
+            called.</p>
+            
+          ]]></xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="flow-handler-factory"
+                   type="javaee:fully-qualified-classType">
+        <xsd:annotation>
+          <xsd:documentation><![CDATA[
+
+           <p> The "flow-handler-factory" element contains the
+            fully qualified class name of the concrete
+            FlowHandlerFactory implementation class that will
+            be called when
+            FactoryFinder.getFactory(FLOW_HANDLER_FACTORY) is
+            called.</p>
+            
+          ]]></xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="factory-extension"
+                   type="javaee:faces-config-factory-extensionType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+    </xsd:choice>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-factory-extensionType">
+    <xsd:annotation>
+      <xsd:documentation><![CDATA[
+
+       <p> Extension element for factory.  It may contain
+        implementation specific content.</p>
+        
+      ]]></xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:any minOccurs="0"
+               maxOccurs="unbounded"
+               namespace="##any"
+               processContents="lax"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-attributeType">
+    <xsd:annotation>
+      <xsd:documentation><![CDATA[
+
+       <p> The "attribute" element represents a named, typed, value
+        associated with the parent UIComponent via the generic
+        attributes mechanism.</p>
+        
+        <p>Attribute names must be unique within the scope of the parent
+        (or related) component.</p>
+        
+      ]]></xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:group ref="javaee:descriptionGroup"/>
+      <xsd:element name="attribute-name"
+                   type="javaee:string">
+        <xsd:annotation>
+          <xsd:documentation><![CDATA[
+
+           <p> The "attribute-name" element represents the name under
+            which the corresponding value will be stored, in the
+            generic attributes of the UIComponent we are related
+            to.</p>
+            
+          ]]></xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="attribute-class"
+                   type="javaee:fully-qualified-classType">
+        <xsd:annotation>
+          <xsd:documentation><![CDATA[
+
+           <p> The "attribute-class" element represents the Java type
+            of the value associated with this attribute name.</p>
+            
+          ]]></xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="default-value"
+                   type="javaee:faces-config-default-valueType"
+                   minOccurs="0"/>
+      <xsd:element name="suggested-value"
+                   type="javaee:faces-config-suggested-valueType"
+                   minOccurs="0"/>
+      <xsd:element name="attribute-extension"
+                   type="javaee:faces-config-attribute-extensionType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-attribute-extensionType">
+    <xsd:annotation>
+      <xsd:documentation><![CDATA[
+
+       <p> Extension element for attribute.  It may contain
+        implementation specific content.</p>
+        
+      ]]></xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:any minOccurs="0"
+               maxOccurs="unbounded"
+               namespace="##any"
+               processContents="lax"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-componentType">
+    <xsd:annotation>
+      <xsd:documentation><![CDATA[
+
+       <p> The "component" element represents a concrete UIComponent
+        implementation class that should be registered under the
+        specified type identifier, along with its associated
+        properties and attributes.  Component types must be unique
+        within the entire web application.</p>
+        
+        <p>Nested "attribute" elements identify generic attributes that
+        are recognized by the implementation logic of this component.
+        Nested "property" elements identify JavaBeans properties of
+        the component class that may be exposed for manipulation
+        via tools.</p>
+        
+      ]]></xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:group ref="javaee:descriptionGroup"/>
+      <xsd:element name="component-type"
+                   type="javaee:string">
+        <xsd:annotation>
+          <xsd:documentation><![CDATA[
+
+           <p> The "component-type" element represents the name under
+            which the corresponding UIComponent class should be
+            registered.</p>
+            
+          ]]></xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="component-class"
+                   type="javaee:fully-qualified-classType">
+        <xsd:annotation>
+          <xsd:documentation><![CDATA[
+
+           <p> The "component-class" element represents the fully
+            qualified class name of a concrete UIComponent
+            implementation class.</p>
+            
+          ]]></xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="facet"
+                   type="javaee:faces-config-facetType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="attribute"
+                   type="javaee:faces-config-attributeType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="property"
+                   type="javaee:faces-config-propertyType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="component-extension"
+                   type="javaee:faces-config-component-extensionType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-component-extensionType">
+    <xsd:annotation>
+      <xsd:documentation><![CDATA[
+
+       <p> Extension element for component.  It may contain
+        implementation specific content.</p>
+        
+      ]]></xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:any minOccurs="0"
+               maxOccurs="unbounded"
+               namespace="##any"
+               processContents="lax"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-default-localeType">
+    <xsd:annotation>
+      <xsd:documentation><![CDATA[
+
+       <p> The "default-locale" element declares the default locale
+        for this application instance.</p>
+        
+        <p>It must be specified as :language:[_:country:[_:variant:]]
+        without the colons, for example "ja_JP_SJIS".  The
+        separators between the segments may be '-' or '_'.</p>
+        
+      ]]></xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:extension base="javaee:faces-config-localeType">
+        <xsd:attribute name="id"
+                       type="xsd:ID"/>
+      </xsd:extension>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-default-valueType">
+    <xsd:annotation>
+      <xsd:documentation><![CDATA[
+
+       <p> The "default-value" contains the value for the property or
+        attribute in which this element resides.  This value differs
+        from the "suggested-value" in that the property or attribute
+        must take the value, whereas in "suggested-value" taking the
+        value is optional.</p>
+        
+      ]]></xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="javaee:string">
+        <xsd:attribute name="id"
+                       type="xsd:ID"/>
+      </xsd:restriction>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+  <xsd:simpleType name="faces-config-el-expressionType">
+    <xsd:annotation>
+      <xsd:documentation><![CDATA[
+
+       <p> EL expressions present within a faces config file
+        must start with the character sequence of '#{' and
+        end with '}'.</p>
+        
+      ]]></xsd:documentation>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:string">
+      <xsd:pattern value="#\{.*\}"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-facetType">
+    <xsd:annotation>
+      <xsd:documentation><![CDATA[
+
+       <p> Define the name and other design-time information for a facet
+        that is associated with a renderer or a component.</p>
+        
+      ]]></xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:group ref="javaee:descriptionGroup"/>
+      <xsd:element name="facet-name"
+                   type="javaee:java-identifierType">
+        <xsd:annotation>
+          <xsd:documentation><![CDATA[
+
+           <p> The "facet-name" element represents the facet name
+            under which a UIComponent will be added to its parent.
+            It must be of type "Identifier".</p>
+            
+          ]]></xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="facet-extension"
+                   type="javaee:faces-config-facet-extensionType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-facet-extensionType">
+    <xsd:annotation>
+      <xsd:documentation><![CDATA[
+
+       <p> Extension element for facet.  It may contain implementation
+        specific content.</p>
+        
+      ]]></xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:any minOccurs="0"
+               maxOccurs="unbounded"
+               namespace="##any"
+               processContents="lax"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-from-view-idType">
+    <xsd:annotation>
+      <xsd:documentation><![CDATA[
+
+       <p><span class="changed_modified_2_2">The</span>
+       value of from-view-id must contain one of the following
+        values:</p>
+        
+        <ul>
+
+        <li><p>The exact match for a view identifier that is recognized
+        by the the ViewHandler implementation being used (such as
+        "/index.jsp" if you are using the default ViewHandler).</p></li>
+        
+        <li><p class="changed_added_2_2">The exact match of a flow node id
+        in the current flow, or a flow id of another flow.</p></li>
+        
+         <li><p> A proper prefix of a view identifier, plus a trailing
+         "*" character.  This pattern indicates that all view
+         identifiers that match the portion of the pattern up to the
+         asterisk will match the surrounding rule.  When more than one
+         match exists, the match with the longest pattern is selected.
+         </p></li>
+        
+        <li><p>An "*" character, which means that this pattern applies
+        to all view identifiers.  </p></li>
+
+       </ul>
+        
+      ]]></xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="javaee:string">
+        <xsd:attribute name="id"
+                       type="xsd:ID"/>
+      </xsd:restriction>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-from-actionType">
+    <xsd:annotation>
+      <xsd:documentation><![CDATA[
+
+       <p> The "from-action" element contains an action reference
+        expression that must have been executed (by the default
+        ActionListener for handling application level events)
+        in order to select the navigation rule.  If not specified,
+        this rule will be relevant no matter which action reference
+        was executed (or if no action reference was executed).</p>
+        
+      ]]></xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:extension base="javaee:faces-config-el-expressionType">
+        <xsd:attribute name="id"
+                       type="xsd:ID"/>
+      </xsd:extension>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-ifType">
+    <xsd:annotation>
+      <xsd:documentation><![CDATA[
+
+        <p>The "if" element defines a condition that must resolve
+        to true in order for the navigation case on which it is
+        defined to be matched, with the existing match criteria
+        (action method and outcome) as a prerequiste, if present.
+        The condition is defined declaratively using a value
+        expression in the body of this element. The expression is
+        evaluated at the time the navigation case is being matched.
+        If the "from-outcome" is omitted and this element is
+        present, the navigation handler will match a null outcome
+        and use the condition return value to determine if the
+        case should be considered a match.</p>
+
+<div class="changed_added_2_2">
+
+<p>When used in a <code><switch></code> within a flow, if the
+expresion returns <code>true</code>, the
+<code><from-outcome></code> sibling element's outcome is used as
+the id of the node in the flow graph to which control must be
+passed.</p>
+
+</div>
+        
+        
+      ]]></xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:extension base="javaee:faces-config-el-expressionType">
+        <xsd:attribute name="id"
+                       type="xsd:ID"/>
+      </xsd:extension>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-flow-definition-parameter-valueType">
+    <xsd:annotation>
+      <xsd:documentation><![CDATA[
+
+        <p class="changed_added_2_2"></p>
+
+<div class="changed_added_2_2">
+
+
+
+</div>
+        
+        
+      ]]></xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:extension base="javaee:faces-config-el-expressionType">
+        <xsd:attribute name="id"
+                       type="xsd:ID"/>
+      </xsd:extension>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-converterType">
+    <xsd:annotation>
+      <xsd:documentation><![CDATA[
+
+       <p> The "converter" element represents a concrete Converter
+        implementation class that should be registered under the
+        specified converter identifier.  Converter identifiers must
+        be unique within the entire web application.</p>
+        
+        <p>Nested "attribute" elements identify generic attributes that
+        may be configured on the corresponding UIComponent in order
+        to affect the operation of the Converter.  Nested "property"
+        elements identify JavaBeans properties of the Converter
+        implementation class that may be configured to affect the
+        operation of the Converter.  "attribute" and "property"
+        elements are intended to allow component developers to
+        more completely describe their components to tools and users.
+        These elements have no required runtime semantics.</p>
+        
+      ]]></xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:group ref="javaee:descriptionGroup"/>
+      <xsd:choice>
+        <xsd:element name="converter-id"
+                     type="javaee:string">
+          <xsd:annotation>
+            <xsd:documentation><![CDATA[
+
+             <p> The "converter-id" element represents the
+              identifier under which the corresponding
+              Converter class should be registered.</p>
+              
+            ]]></xsd:documentation>
+          </xsd:annotation>
+        </xsd:element>
+        <xsd:element name="converter-for-class"
+                     type="javaee:fully-qualified-classType">
+          <xsd:annotation>
+            <xsd:documentation><![CDATA[
+
+             <p> The "converter-for-class" element represents the
+              fully qualified class name for which a Converter
+              class will be registered.</p>
+              
+            ]]></xsd:documentation>
+          </xsd:annotation>
+        </xsd:element>
+      </xsd:choice>
+      <xsd:element name="converter-class"
+                   type="javaee:fully-qualified-classType">
+        <xsd:annotation>
+          <xsd:documentation><![CDATA[
+
+           <p> The "converter-class" element represents the fully
+            qualified class name of a concrete Converter
+            implementation class.</p>
+            
+          ]]></xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="attribute"
+                   type="javaee:faces-config-attributeType"
+                   minOccurs="0"
+                   maxOccurs="unbounded">
+        <xsd:annotation>
+          <xsd:documentation><![CDATA[
+
+           <p> Nested "attribute" elements identify generic
+            attributes that may be configured on the
+            corresponding UIComponent in order to affect the
+            operation of the Converter.  This attribute is
+            primarily for design-time tools and is not
+            specified to have any meaning at runtime.</p>
+            
+          ]]></xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="property"
+                   type="javaee:faces-config-propertyType"
+                   minOccurs="0"
+                   maxOccurs="unbounded">
+        <xsd:annotation>
+          <xsd:documentation><![CDATA[
+
+           <p> Nested "property" elements identify JavaBeans
+            properties of the Converter implementation class
+            that may be configured to affect the operation of
+            the Converter.  This attribute is primarily for
+            design-time tools and is not specified to have
+            any meaning at runtime.</p>
+            
+          ]]></xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="converter-extension"
+                   type="javaee:faces-config-converter-extensionType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-converter-extensionType">
+    <xsd:annotation>
+      <xsd:documentation><![CDATA[
+
+       <p> Extension element for converter.  It may contain
+        implementation specific content.</p>
+        
+      ]]></xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:any minOccurs="0"
+               maxOccurs="unbounded"
+               namespace="##any"
+               processContents="lax"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-lifecycleType">
+    <xsd:annotation>
+      <xsd:documentation><![CDATA[
+
+       <p> The "lifecycle" element provides a mechanism to specify
+        modifications to the behaviour of the default Lifecycle
+        implementation for this web application.</p>
+        
+      ]]></xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="phase-listener"
+                   type="javaee:fully-qualified-classType"
+                   minOccurs="0"
+                   maxOccurs="unbounded">
+        <xsd:annotation>
+          <xsd:documentation><![CDATA[
+
+           <p> The "phase-listener" element contains the fully
+            qualified class name of the concrete PhaseListener
+            implementation class that will be registered on
+            the Lifecycle.</p>
+            
+          ]]></xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="lifecycle-extension"
+                   type="javaee:faces-config-lifecycle-extensionType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-lifecycle-extensionType">
+    <xsd:annotation>
+      <xsd:documentation><![CDATA[
+
+       <p> Extension element for lifecycle.  It may contain
+        implementation specific content.</p>
+        
+      ]]></xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:any minOccurs="0"
+               maxOccurs="unbounded"
+               namespace="##any"
+               processContents="lax"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+  <xsd:simpleType name="faces-config-localeType">
+    <xsd:annotation>
+      <xsd:documentation><![CDATA[
+
+       <p> The localeType defines valid locale defined by ISO-639-1
+        and ISO-3166.</p>
+        
+      ]]></xsd:documentation>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:string">
+      <xsd:pattern value="([a-z]{2})[_|\-]?([\p{L}]{2})?[_|\-]?(\w+)?"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-locale-configType">
+    <xsd:annotation>
+      <xsd:documentation><![CDATA[
+
+       <p> The "locale-config" element allows the app developer to
+        declare the supported locales for this application.</p>
+        
+      ]]></xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="default-locale"
+                   type="javaee:faces-config-default-localeType"
+                   minOccurs="0"/>
+      <xsd:element name="supported-locale"
+                   type="javaee:faces-config-supported-localeType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-default-validatorsType">
+    <xsd:annotation>
+      <xsd:documentation><![CDATA[
+
+       <p> The "default-validators" element allows the app developer to
+        register a set of validators, referenced by identifier, that
+        are automatically assigned to any EditableValueHolder component
+        in the application, unless overridden or disabled locally.</p>
+        
+      ]]></xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="validator-id"
+                   type="javaee:string"
+                   minOccurs="0"
+                   maxOccurs="unbounded">
+        <xsd:annotation>
+          <xsd:documentation><![CDATA[
+
+           <p> The "validator-id" element represents the identifier
+            of a registered validator.</p>
+            
+          ]]></xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-managed-beanType">
+    <xsd:annotation>
+      <xsd:documentation><![CDATA[
+
+       <p> The "managed-bean" element represents a JavaBean, of a
+        particular class, that will be dynamically instantiated
+        at runtime (by the default VariableResolver implementation)
+        if it is referenced as the first element of a value binding
+        expression, and no corresponding bean can be identified in
+        any scope.  In addition to the creation of the managed bean,
+        and the optional storing of it into the specified scope,
+        the nested managed-property elements can be used to
+        initialize the contents of settable JavaBeans properties of
+        the created instance.</p>
+        
+      ]]></xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:group ref="javaee:descriptionGroup"/>
+      <xsd:element name="managed-bean-name"
+                   type="javaee:java-identifierType">
+        <xsd:annotation>
+          <xsd:documentation><![CDATA[
+
+           <p> The "managed-bean-name" element represents the
+            attribute name under which a managed bean will
+            be searched for, as well as stored (unless the
+            "managed-bean-scope" value is "none").</p>
+            
+          ]]></xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="managed-bean-class"
+                   type="javaee:fully-qualified-classType">
+        <xsd:annotation>
+          <xsd:documentation><![CDATA[
+
+           <p> The "managed-bean-class" element represents the fully
+            qualified class name of the Java class that will be
+            used`to instantiate a new instance if creation of the
+            specified`managed bean is requested.</p>
+            
+            <p>The specified class must conform to standard JavaBeans
+            conventions.  In particular, it must have a public
+            zero-arguments constructor, and zero or more public
+            property setters.</p>
+            
+          ]]></xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="managed-bean-scope"
+                   type="javaee:faces-config-managed-bean-scopeOrNoneType">
+        <xsd:annotation>
+          <xsd:documentation><![CDATA[
+
+           <p> The "managed-bean-scope" element represents the scope
+            into which a newly created instance of the specified
+            managed bean will be stored (unless the value is
+            "none").</p>
+            
+          ]]></xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:choice>
+        <xsd:element name="managed-property"
+                     type="javaee:faces-config-managed-propertyType"
+                     minOccurs="0"
+                     maxOccurs="unbounded"/>
+        <xsd:element name="map-entries"
+                     type="javaee:faces-config-map-entriesType"/>
+        <xsd:element name="list-entries"
+                     type="javaee:faces-config-list-entriesType"/>
+      </xsd:choice>
+      <xsd:element name="managed-bean-extension"
+                   type="javaee:faces-config-managed-bean-extensionType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="eager"
+                   type="xsd:boolean"
+                   use="optional">
+      <xsd:annotation>
+        <xsd:documentation><![CDATA[
+
+         <p> This attribute is only considered when associated with
+          an application-scoped managed bean. If the value of the eager
+          attribute is true the runtime must instantiate this class
+          and store the instance within the application scope when the
+          application starts.</p>
+          
+          <p>If eager is unspecified or is false, the default "lazy"
+          instantiation and scoped storage of the managed bean
+          will occur.</p>
+          
+        ]]></xsd:documentation>
+      </xsd:annotation>
+    </xsd:attribute>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-flow-definitionType">
+    <xsd:annotation>
+      <xsd:documentation>
+<![CDATA[
+
+        <p class="changed_added_2_2">Top level element for a flow
+        definition.</p>
+
+<div class="changed_added_2_2">
+
+<p>If there is no <code><start-node></code> element declared, it
+is assumed to be <code><flowName>.xhtml</code>.</p>
+
+</div>
+
+]]>
+</xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:group ref="javaee:descriptionGroup"/>
+      <xsd:element name="start-node"
+                   type="javaee:java-identifierType"
+                   minOccurs="0"
+                   >
+        <xsd:annotation>
+          <xsd:documentation>
+
+        <![CDATA[
+
+<p class="changed_added_2_2">Declare the id of the starting node in the
+flow graph.  The start node may be any of the node types mentioned in
+the class javadocs for <code><a target="_"
+href="javax/faces/flow/FlowHandler.html">FlowHandler</a></code>.</p>
+
+]]>
+
+
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="view"
+                   type="javaee:faces-config-flow-definition-viewType"
+                   minOccurs="0"
+                   maxOccurs="unbounded" />
+      <xsd:element name="switch"
+                   type="javaee:faces-config-flow-definition-switchType"
+                   minOccurs="0"
+                   maxOccurs="unbounded" />
+      <xsd:element name="flow-return"
+                   type="javaee:faces-config-flow-definition-flow-returnType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="navigation-rule"
+                   type="javaee:faces-config-navigation-ruleType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="flow-call"
+                   type="javaee:faces-config-flow-definition-flow-callType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="method-call"
+                   type="javaee:faces-config-flow-definition-faces-method-callType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="initializer"
+                   type="javaee:faces-config-flow-definition-initializerType"
+                   minOccurs="0"
+                   />
+      <xsd:element name="finalizer"
+                   type="javaee:faces-config-flow-definition-finalizerType"
+                   minOccurs="0"
+                   />
+      <xsd:element name="inbound-parameter"
+                   type="javaee:faces-config-flow-definition-inbound-parameterType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID" use="required">
+        <xsd:annotation>
+          <xsd:documentation>
+
+        <![CDATA[
+
+         <p class="changed_added_2_2">The id of this flow.  The id
+         must be unique within the Application configuration Resource
+         file in which this flow is defined.  The value of this attribute, 
+         combined with the value of the <faces-config><name> element
+         must globally identify the flow within the application.<p> ]]>
+
+
+          </xsd:documentation>
+        </xsd:annotation>
+
+    </xsd:attribute>
+  </xsd:complexType>
+  
+  <xsd:complexType name="faces-config-flow-definition-faces-method-callType">
+      <xsd:annotation>
+        <xsd:documentation>
+        <![CDATA[
+
+         <p class="changed_added_2_2">Invoke a method, passing parameters if necessary.
+         The return from the method is used as the outcome for where to go next in the
+         flow.  If the method is a void method, the default outcome is used.<p> ]]>
+
+
+        </xsd:documentation>
+      </xsd:annotation>
+      
+      <xsd:sequence>
+          <xsd:element name="method"
+                       type="javaee:faces-config-flow-definition-faces-method-call-methodType"
+                       
+                       />
+          <xsd:element name="default-outcome"
+                       type="javaee:string"
+                       
+                       />
+          <xsd:element name="parameter"
+                       type="javaee:faces-config-flow-definition-flow-call-parameterType"
+                       minOccurs="0" maxOccurs="unbounded">
+            <xsd:annotation>
+              <xsd:documentation>
+
+        <![CDATA[
+
+         <p class="changed_added_2_2">A parameter to pass when calling the method
+         identified in the "method" element that is a sibling of this element.<p>
+
+         ]]>
+
+              </xsd:documentation>
+            </xsd:annotation>
+          </xsd:element>
+      </xsd:sequence>
+  </xsd:complexType>
+  
+  <xsd:complexType name="faces-config-flow-definition-faces-method-call-methodType">
+    <xsd:simpleContent>
+      <xsd:extension base="javaee:faces-config-el-expressionType">
+        <xsd:attribute name="id"
+                       type="xsd:ID"/>
+      </xsd:extension>
+    </xsd:simpleContent>
+      
+  </xsd:complexType>
+
+  <xsd:complexType name="faces-config-flow-definition-flow-call-parameterType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        <![CDATA[
+
+         <p class="changed_added_2_2">A parameter to pass when calling the method
+         identified in the "method" element that is a sibling of this element.<p>
+
+]]>
+
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="class"
+                   type="javaee:string"
+                   minOccurs="0"
+                   >
+        <xsd:annotation>
+          <xsd:documentation><![CDATA[
+
+           <p class="changed_added_2_2"> The optional "class" element within a "parameter" element 
+            will be interpreted as the fully qualified class name for the type
+            of the "value" element.</p>
+            
+          ]]></xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="value"
+                   type="javaee:faces-config-flow-definition-parameter-valueType"
+                   
+                   >
+        <xsd:annotation>
+          <xsd:documentation><![CDATA[
+
+           <p class="changed_added_2_2"> The "value" element within an "parameter"
+            must be a literal string or an EL Expression whose "get" will be called when the "method"
+            associated with this element is invoked.</p>
+            
+          ]]></xsd:documentation>
+        </xsd:annotation>
+                       
+      </xsd:element>
+    </xsd:sequence>
+  </xsd:complexType>
+
+
+  <xsd:complexType name="faces-config-flow-definition-viewType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        <![CDATA[
+
+<p class="changed_added_2_2">Define a view node in a flow graph.</p>
+
+<p>This element must contain exactly one
+<code><vdl-document></code> element.</p>
+
+]]>
+
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="vdl-document"
+                   type="javaee:java-identifierType">
+        <xsd:annotation>
+          <xsd:documentation>
+
+        <![CDATA[
+
+         <p class="changed_added_2_2">Define the vdl-document for the enclosing view.<p>
+
+]]>
+
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"
+                   use="required">
+        <xsd:annotation>
+          <xsd:documentation>
+<![CDATA[
+         
+         <p class="changed_added_2_2">The id of this view.  It must be
+         unique within the flow.</p>
+
+         ]]>
+          </xsd:documentation>
+        </xsd:annotation>
+    </xsd:attribute>
+  </xsd:complexType>
+
+  <xsd:complexType name="faces-config-flow-definition-switchType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        <![CDATA[
+
+<p class="changed_added_2_2">Define a switch node in a flow graph.</p>
+
+<div class="changed_added_2_2">
+
+<p>This element must contain one or more
+<code><case></code> elements.  When control passes to the
+<code><switch></code> node, each of the cases must be considered
+in order and control must past to the <code><from-outcome></code>
+of the first one whose <code><if></code> expression evaluates to 
+<code>true</code>.</p>
+
+</div>
+
+]]>
+
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="case"
+                   type="javaee:faces-config-flow-definition-switch-caseType"
+                   minOccurs="0"
+                   maxOccurs="unbounded">
+        <xsd:annotation>
+          <xsd:documentation>
+
+        <![CDATA[
+
+         <p class="changed_added_2_2">Defines a case that must be
+         considered in the list of cases in the
+         <code><switch></code>.</p>
+
+]]>
+
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="default-outcome"
+                   type="javaee:string"
+                   minOccurs="0"
+                   >
+        <xsd:annotation>
+          <xsd:documentation>
+
+        <![CDATA[
+
+         <p class="changed_added_2_2">Defines the default case that will
+         be taken if none of the other cases in the
+         <code><switch></code> are taken.</p>
+
+]]>
+
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"
+                   use="required">
+        <xsd:annotation>
+          <xsd:documentation>
+<![CDATA[
+         
+         <p class="changed_added_2_2">The id of this switch.  It must be
+         unique within the flow.</p>
+
+         ]]>
+          </xsd:documentation>
+        </xsd:annotation>
+    </xsd:attribute>
+  </xsd:complexType>
+  
+  <xsd:complexType name="faces-config-flow-definition-switch-caseType">
+    <xsd:annotation>
+      <xsd:documentation><![CDATA[
+
+         <p class="changed_added_2_2">Defines a case that will
+         be considered in the <code><switch></code>.</p>
+
+        
+      ]]></xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:group ref="javaee:descriptionGroup"/>
+      <xsd:element name="if"
+                   type="javaee:faces-config-ifType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation><![CDATA[
+
+           <p class="changed_added_2_2">If this EL expression evaluates to
+           <code>true</code>, the corresponding <code>from-outcome</code> will 
+           be the outcome taken by the enclosing <code><switch></code></p>
+            
+          ]]></xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="from-outcome"
+                   type="javaee:string"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation><![CDATA[
+
+            <p>The "from-outcome" element contains a logical outcome
+            string returned by the execution of an application
+            action method selected via an "actionRef" property
+            (or a literal value specified by an "action" property)
+            of a UICommand component.  If specified, this rule
+            will be relevant only if the outcome value matches
+            this element's value.  If not specified, this rule
+            will be relevant if the outcome value is non-null
+            or, if the "if" element is present, will be relevant
+            for any outcome value, with the assumption that the
+            condition specified in the "if" element ultimately
+            determines if this rule is a match.</p>
+
+<p class="changed_added_2_2">If used in a faces flow, this element
+represents the node id to which control will be passed.</p>
+
+
+]]>
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID">
+    </xsd:attribute>
+  </xsd:complexType>
+  
+  <xsd:complexType name="faces-config-flow-definition-flow-returnType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        <![CDATA[
+
+<p class="changed_added_2_2">Define a return node in a flow graph.</p>
+
+<div class="changed_added_2_2">
+
+<p>This element must contain exactly one <code><from-outcome></code> element.</p>
+</div>
+
+]]>
+
+      </xsd:documentation>
+    </xsd:annotation>
+
+    <xsd:sequence>
+      <xsd:element name="from-outcome"
+                   type="javaee:string"
+                   >
+        <xsd:annotation>
+          <xsd:documentation><![CDATA[
+
+<p class="changed_added_2_2">This element
+represents the node id to which control will be passed.</p>
+
+
+]]>
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+
+    <xsd:attribute name="id"
+                   type="xsd:ID"
+                   use="required">
+        <xsd:annotation>
+          <xsd:documentation>
+<![CDATA[
+         
+         <p class="changed_added_2_2">The id of this flow-return.</p>
+
+         ]]>
+          </xsd:documentation>
+        </xsd:annotation>
+    </xsd:attribute>
+
+  </xsd:complexType>
+
+  <xsd:complexType name="faces-config-flow-definition-flow-callType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        <![CDATA[
+
+<p class="changed_added_2_2">Define a call node in a flow graph.</p>
+
+<div class="changed_added_2_2">
+
+<p>This element must contain exactly one <code><flow-reference></code> element, 
+which must contain exactly one <code><flow-id></code> element.</p>
+</div>
+
+]]>
+
+      </xsd:documentation>
+    </xsd:annotation>
+
+    <xsd:sequence>
+      <xsd:element name="flow-reference"
+                   type="javaee:faces-config-flow-definition-flow-call-flow-referenceType"
+                    >
+        <xsd:annotation>
+          <xsd:documentation>
+
+        <![CDATA[
+
+         <p class="changed_added_2_2">The flow id of the called flow.<p>
+
+]]>
+
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="outbound-parameter"
+                   type="javaee:faces-config-flow-definition-flow-call-outbound-parameterType"
+                   minOccurs="0" maxOccurs="unbounded">
+        <xsd:annotation>
+          <xsd:documentation>
+
+        <![CDATA[
+
+         <p class="changed_added_2_2">A parameter to pass when calling the flow
+         identified in the "flow-reference" element that is a sibling of this element.<p>
+
+]]>
+
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+
+    <xsd:attribute name="id"
+                   type="xsd:ID"
+                   use="required">
+        <xsd:annotation>
+          <xsd:documentation>
+<![CDATA[
+         
+         <p class="changed_added_2_2">The id of this flow-return.</p>
+
+         ]]>
+          </xsd:documentation>
+        </xsd:annotation>
+    </xsd:attribute>
+
+  </xsd:complexType>
+  
+  <xsd:complexType name="faces-config-flow-definition-flow-call-flow-referenceType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        <![CDATA[
+
+<p class="changed_added_2_2">Identifiy the called flow.</p>
+
+<div class="changed_added_2_2">
+
+</div>
+]]>
+
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="flow-document-id"
+                   type="javaee:java-identifierType"
+                   minOccurs="0"
+                   >
+        <xsd:annotation>
+          <xsd:documentation><![CDATA[
+
+           <p>The document id of the called flow.</p>
+            
+          ]]></xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+
+      <xsd:element name="flow-id"
+                   type="javaee:java-identifierType"
+                   >
+        <xsd:annotation>
+          <xsd:documentation><![CDATA[
+
+           <p>The id of the called flow.</p>
+            
+          ]]></xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+        
+    </xsd:sequence>
+  </xsd:complexType>
+
+  <xsd:complexType name="faces-config-flow-definition-initializerType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        <![CDATA[
+
+         <p class="changed_added_2_2">A <code>MethodExpression</code> that will be invoked when the flow is entered.<p>
+
+]]>
+
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:extension base="javaee:faces-config-el-expressionType">
+        <xsd:attribute name="id"
+                       type="xsd:ID"/>
+      </xsd:extension>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+  <xsd:complexType name="faces-config-flow-definition-finalizerType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        <![CDATA[
+
+         <p class="changed_added_2_2">A <code>MethodExpression</code> that will be invoked when the flow is exited.<p>
+
+]]>
+
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:extension base="javaee:faces-config-el-expressionType">
+        <xsd:attribute name="id"
+                       type="xsd:ID"/>
+      </xsd:extension>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+  <xsd:complexType name="faces-config-flow-definition-inbound-parameterType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        <![CDATA[
+
+         <p class="changed_added_2_2">A named parameter whose value will be populated
+         with a correspondingly named parameter within an "outbound-parameter" element.<p>
+
+]]>
+
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="name"
+                   type="javaee:java-identifierType"
+                   
+                   >
+        <xsd:annotation>
+          <xsd:documentation><![CDATA[
+
+           <p class="changed_added_2_2"> The "name" element within an "inbound-parameter"
+            element declares the name of this parameter
+            to be passed into a flow.  There must be 
+            a sibling "value" element in the same parent as this element.</p>
+            
+          ]]></xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="value"
+                   type="javaee:faces-config-flow-definition-parameter-valueType"
+                   
+                   >
+        <xsd:annotation>
+          <xsd:documentation><![CDATA[
+
+           <p class="changed_added_2_2"> The "value" element within an "inbound-parameter"
+            must be an EL Expression whose value will be set with the correspondingly
+            named "outbound-parameter" when this flow is entered, if such a 
+            parameter exists.</p>
+            
+          ]]></xsd:documentation>
+        </xsd:annotation>
+                       
+      </xsd:element>
+    </xsd:sequence>
+  </xsd:complexType>
+
+  <xsd:complexType name="faces-config-flow-definition-flow-call-outbound-parameterType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        <![CDATA[
+
+         <p class="changed_added_2_2">A named parameter whose value will be 
+         passed to a correspondingly named parameter within an "inbound-parameter" element
+         on the target flow.<p>
+
+]]>
+
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="name"
+                   type="javaee:java-identifierType"
+                   
+                   >
+        <xsd:annotation>
+          <xsd:documentation><![CDATA[
+
+           <p class="changed_added_2_2"> The "name" element within an "outbound-parameter" element 
+            declares the name of this parameter to be passed out of a flow.  There must be 
+            a sibling "value" element in the same parent as this element.</p>
+            
+          ]]></xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="value"
+                   type="javaee:faces-config-flow-definition-parameter-valueType"
+                   
+                   >
+        <xsd:annotation>
+          <xsd:documentation><![CDATA[
+
+           <p class="changed_added_2_2"> The "value" element within an "outbound-parameter"
+            must be a literal string or an EL Expression whose "get" will be called when the "flow-call"
+            containing this element is traversed to go to a new flow.</p>
+            
+          ]]></xsd:documentation>
+        </xsd:annotation>
+                       
+      </xsd:element>
+    </xsd:sequence>
+  </xsd:complexType>
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-managed-bean-extensionType">
+    <xsd:annotation>
+      <xsd:documentation><![CDATA[
+
+       <p> Extension element for managed-bean.  It may contain
+        implementation specific content.</p>
+        
+      ]]></xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:any minOccurs="0"
+               maxOccurs="unbounded"
+               namespace="##any"
+               processContents="lax"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-managed-bean-scopeOrNoneType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[[
+
+       <p> Defines the legal values for the <managed-bean-scope>
+        element's body content, which includes all of the scopes
+        normally used in a web application, plus the "none" value
+        indicating that a created bean should not be stored into
+        any scope.  Alternatively, an EL expression may be used
+        as the value of this element.  The result of evaluating this
+        expression must by of type java.util.Map.</p>
+        
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="javaee:string">
+        <xsd:pattern value="view|request|session|application|none|#\{.*\}"/>
+      </xsd:restriction>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-managed-propertyType">
+    <xsd:annotation>
+      <xsd:documentation><![CDATA[
+
+       <p> The "managed-property" element represents an individual
+        property of a managed bean that will be configured to the
+        specified value (or value set) if the corresponding
+        managed bean is automatically created.</p>
+        
+      ]]></xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:group ref="javaee:descriptionGroup"/>
+      <xsd:element name="property-name"
+                   type="javaee:string">
+        <xsd:annotation>
+          <xsd:documentation><![CDATA[
+
+           <p> The "property-name" element represents the JavaBeans
+            property name under which the corresponding value may
+            be stored.</p>
+            
+          ]]></xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="property-class"
+                   type="javaee:java-typeType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation><![CDATA[
+
+           <p> The "property-class" element represents the Java type
+            of the value associated with this property name.
+            If not specified, it can be inferred from existing
+            classes; however, this element should be specified
+            if the configuration file is going to be the source
+            for generating the corresponding classes.</p>
+            
+          ]]></xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:choice>
+        <xsd:element name="map-entries"
+                     type="javaee:faces-config-map-entriesType"/>
+        <xsd:element name="null-value"
+                     type="javaee:faces-config-null-valueType"/>
+        <xsd:element name="value"
+                     type="javaee:faces-config-valueType"/>
+        <xsd:element name="list-entries"
+                     type="javaee:faces-config-list-entriesType"/>
+      </xsd:choice>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-map-entryType">
+    <xsd:annotation>
+      <xsd:documentation><![CDATA[
+
+       <p> The "map-entry" element reprsents a single key-entry pair
+        that will be added to the computed value of a managed
+        property of type java.util.Map.</p>
+        
+      ]]></xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="key"
+                   type="javaee:string">
+        <xsd:annotation>
+          <xsd:documentation><![CDATA[
+
+           <p> The "key" element is the String representation of a
+            map key that will be stored in a managed property of
+            type java.util.Map.</p>
+            
+          ]]></xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:choice>
+        <xsd:element name="null-value"
+                     type="javaee:faces-config-null-valueType"/>
+        <xsd:element name="value"
+                     type="javaee:faces-config-valueType"/>
+      </xsd:choice>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-map-entriesType">
+    <xsd:annotation>
+      <xsd:documentation><![CDATA[
+
+       <p> The "map-entries' element represents a set of key-entry pairs
+        that will be added to the computed value of a managed property
+        of type java.util.Map.  In addition, the Java class types
+        of the key and entry values may be optionally declared.</p>
+        
+      ]]></xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="key-class"
+                   type="javaee:fully-qualified-classType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation><![CDATA[
+
+           <p> The "key-class" element defines the Java type to which
+            each "key" element in a set of "map-entry" elements
+            will be converted to.  If omitted, "java.lang.String"
+            is assumed.</p>
+            
+          ]]></xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="value-class"
+                   type="javaee:faces-config-value-classType"
+                   minOccurs="0"/>
+      <xsd:element name="map-entry"
+                   type="javaee:faces-config-map-entryType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-navigation-caseType">
+    <xsd:annotation>
+      <xsd:documentation><![CDATA[
+
+       <p> <span class="changed_modified_2_2">The</span>
+       "navigation-case" element describes a particular
+        combination of conditions that must match for this case to
+        be executed, and the view id of the component tree that
+        should be selected next.</p>
+        
+      ]]></xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:group ref="javaee:descriptionGroup"/>
+      <xsd:element name="from-action"
+                   type="javaee:faces-config-from-actionType"
+                   minOccurs="0"/>
+      <xsd:element name="from-outcome"
+                   type="javaee:string"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation><![CDATA[
+
+            <p>The "from-outcome" element contains a logical outcome
+            string returned by the execution of an application
+            action method selected via an "actionRef" property
+            (or a literal value specified by an "action" property)
+            of a UICommand component.  If specified, this rule
+            will be relevant only if the outcome value matches
+            this element's value.  If not specified, this rule
+            will be relevant if the outcome value is non-null
+            or, if the "if" element is present, will be relevant
+            for any outcome value, with the assumption that the
+            condition specified in the "if" element ultimately
+            determines if this rule is a match.</p>
+
+]]>
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="if"
+                   type="javaee:faces-config-ifType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation><![CDATA[
+
+           <p> Please see section JSF.7.4.2 for the specification of this element.</p>
+            
+          ]]></xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="to-view-id"
+                   type="javaee:faces-config-valueType">
+        <xsd:annotation>
+          <xsd:documentation><![CDATA[
+
+           <p><span class="changed_modified_2_2">The "to-view-id" element 
+            contains the view identifier (<span class="changed_added_2_2">or 
+            flow node id, or flow id</span>)
+            of the next view (<span class="changed_added_2_2">or flow node or 
+            flow</span>) that should be displayed if this
+            navigation rule is matched. If the contents is a
+            value expression, it should be resolved by the
+            navigation handler to obtain the view (
+            <span class="changed_added_2_2">or flow node or flow</span>) 
+            identifier.</p>
+            
+          ]]></xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="to-flow-document-id"
+                     type="javaee:java-identifierType"
+                     minOccurs="0"
+                     >
+          <xsd:annotation>
+            <xsd:documentation><![CDATA[
+
+             <p class="changed_added_2_2">The document id of the called flow.
+             If this element appears in a <navigation-case> nested within 
+             a <flow-definition>, it must be ignored because navigation
+             cases within flows may only navigate among the view nodes of that 
+             flow.</p>
+            
+            ]]></xsd:documentation>
+          </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="redirect"
+                   type="javaee:faces-config-redirectType"
+                   minOccurs="0"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-navigation-ruleType">
+    <xsd:annotation>
+      <xsd:documentation><![CDATA[
+
+       <p> The "navigation-rule" element represents an individual
+        decision rule that will be utilized by the default
+        NavigationHandler implementation to make decisions on
+        what view should be displayed next, based on the
+        view id being processed.</p>
+        
+      ]]></xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:group ref="javaee:descriptionGroup"/>
+      <xsd:element name="from-view-id"
+                   type="javaee:faces-config-from-view-idType"
+                   />
+      <xsd:element name="navigation-case"
+                   type="javaee:faces-config-navigation-caseType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="navigation-rule-extension"
+                   type="javaee:faces-config-navigation-rule-extensionType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-navigation-rule-extensionType">
+    <xsd:annotation>
+      <xsd:documentation><![CDATA[
+
+       <p> Extension element for navigation-rule.  It may contain
+        implementation specific content.</p>
+        
+      ]]></xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:any minOccurs="0"
+               maxOccurs="unbounded"
+               namespace="##any"
+               processContents="lax"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-null-valueType">
+    <xsd:annotation>
+      <xsd:documentation><![CDATA[
+
+       <p> The "null-value" element indicates that the managed
+        property in which we are nested will be explicitly
+        set to null if our managed bean is automatically
+        created.  This is different from omitting the managed
+        property element entirely, which will cause no
+        property setter to be called for this property.</p>
+        
+        <p>The "null-value" element can only be used when the
+        associated "property-class" identifies a Java class,
+        not a Java primitive.</p>
+        
+      ]]></xsd:documentation>
+    </xsd:annotation>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-propertyType">
+    <xsd:annotation>
+      <xsd:documentation><![CDATA[
+
+       <p> The "property" element represents a JavaBean property of the
+        Java class represented by our parent element.</p>
+        
+        <p>Property names must be unique within the scope of the Java
+        class that is represented by the parent element, and must
+        correspond to property names that will be recognized when
+        performing introspection against that class via
+        java.beans.Introspector.</p>
+        
+      ]]></xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:group ref="javaee:descriptionGroup"/>
+      <xsd:element name="property-name"
+                   type="javaee:string">
+        <xsd:annotation>
+          <xsd:documentation><![CDATA[
+
+           <p> The "property-name" element represents the JavaBeans
+            property name under which the corresponding value
+            may be stored.</p>
+            
+          ]]></xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="property-class"
+                   type="javaee:java-typeType">
+        <xsd:annotation>
+          <xsd:documentation><![CDATA[
+
+           <p> The "property-class" element represents the Java type
+            of the value associated with this property name.
+            If not specified, it can be inferred from existing
+            classes; however, this element should be specified if
+            the configuration file is going to be the source for
+            generating the corresponding classes.</p>
+            
+          ]]></xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="default-value"
+                   type="javaee:faces-config-default-valueType"
+                   minOccurs="0"/>
+      <xsd:element name="suggested-value"
+                   type="javaee:faces-config-suggested-valueType"
+                   minOccurs="0"/>
+      <xsd:element name="property-extension"
+                   type="javaee:faces-config-property-extensionType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-protected-viewsType">
+    <xsd:annotation>
+      <xsd:documentation><![CDATA[
+
+       <p class="changed_added_2_2">Any view that matches any of the
+       url-patterns in this element may only be reached from another JSF
+       view in the same web application. Because the runtime is aware of
+       which views are protected, any navigation from an unprotected
+       view to a protected view is automatically subject to
+       protection.</p>
+        
+      ]]></xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="url-pattern"
+                   type="javaee:url-patternType"
+                   maxOccurs="unbounded"/>
+    </xsd:sequence>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-property-extensionType">
+    <xsd:annotation>
+      <xsd:documentation><![CDATA[
+
+       <p> Extension element for property.  It may contain
+        implementation specific content.</p>
+        
+      ]]></xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:any minOccurs="0"
+               maxOccurs="unbounded"
+               namespace="##any"
+               processContents="lax"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-redirectType">
+    <xsd:annotation>
+      <xsd:documentation><![CDATA[
+
+       <p> The "redirect" element indicates that navigation to the
+        specified "to-view-id" should be accomplished by
+        performing an HTTP redirect rather than the usual
+        ViewHandler mechanisms.</p>
+        
+      ]]></xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="redirect-param"
+                   type="javaee:faces-config-redirect-redirectParamType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+    <xsd:attribute name="include-view-params"
+                   type="xsd:boolean"
+                   use="optional"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-redirect-viewParamType">
+    <xsd:annotation>
+      <xsd:documentation><![CDATA[
+
+       <p> This element was introduced due to a specification
+        error, and is now deprecated.  The correct name for
+        this element is "redirect-param" and its meaning is
+        documented therein.  The "view-param" element is
+        maintained to preserve backwards compatibility.
+        Implementations must treat this element the same as
+        "redirect-param".</p>
+        
+      ]]></xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="name"
+                   type="javaee:string"
+                   
+                   />
+      <xsd:element name="value"
+                   type="javaee:string"
+                   
+                   />
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-redirect-redirectParamType">
+    <xsd:annotation>
+      <xsd:documentation><![CDATA[
+
+       <p> The "redirect-param" element, only valid within
+        a "redirect" element, contains child "name"
+        and "value" elements that must be included in the
+        redirect url when the redirect is performed.</p>
+        
+      ]]></xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="name"
+                   type="javaee:string"
+                   
+                   />
+      <xsd:element name="value"
+                   type="javaee:string"
+                   
+                   />
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-referenced-beanType">
+    <xsd:annotation>
+      <xsd:documentation><![CDATA[
+
+       <p> The "referenced-bean" element represents at design time the
+        promise that a Java object of the specified type will exist at
+        runtime in some scope, under the specified key.  This can be
+        used by design time tools to construct user interface dialogs
+        based on the properties of the specified class.  The presence
+        or absence of a referenced bean element has no impact on the
+        JavaServer Faces runtime environment inside a web application.</p>
+        
+      ]]></xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:group ref="javaee:descriptionGroup"/>
+      <xsd:element name="referenced-bean-name"
+                   type="javaee:java-identifierType">
+        <xsd:annotation>
+          <xsd:documentation><![CDATA[
+
+           <p> The "referenced-bean-name" element represents the
+            attribute name under which the corresponding
+            referenced bean may be assumed to be stored, in one
+            of 'request', 'session', 'view', 'application'
+            or a custom scope.</p>
+            
+          ]]></xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="referenced-bean-class"
+                   type="javaee:fully-qualified-classType">
+        <xsd:annotation>
+          <xsd:documentation><![CDATA[
+
+           <p> The "referenced-bean-class" element represents the
+            fully qualified class name of the Java class
+            (either abstract or concrete) or Java interface
+            implemented by the corresponding referenced bean.</p>
+            
+          ]]></xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-render-kitType">
+    <xsd:annotation>
+      <xsd:documentation><![CDATA[
+
+       <p> The "render-kit" element represents a concrete RenderKit
+        implementation that should be registered under the specified
+        render-kit-id.  If no render-kit-id is specified, the
+        identifier of the default RenderKit
+        (RenderKitFactory.DEFAULT_RENDER_KIT) is assumed.</p>
+        
+      ]]></xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:group ref="javaee:descriptionGroup"/>
+      <xsd:element name="render-kit-id"
+                   type="javaee:string"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation><![CDATA[
+
+           <p> The "render-kit-id" element represents an identifier
+            for the RenderKit represented by the parent
+            "render-kit" element.</p>
+            
+          ]]></xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="render-kit-class"
+                   type="javaee:fully-qualified-classType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation><![CDATA[
+
+           <p> The "render-kit-class" element represents the fully
+            qualified class name of a concrete RenderKit
+            implementation class.</p>
+            
+          ]]></xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="renderer"
+                   type="javaee:faces-config-rendererType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="client-behavior-renderer"
+                   type="javaee:faces-config-client-behavior-rendererType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="render-kit-extension"
+                   type="javaee:faces-config-render-kit-extensionType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-client-behavior-rendererType">
+    <xsd:annotation>
+      <xsd:documentation><![CDATA[
+
+       <p> The "client-behavior-renderer" element represents a concrete
+        ClientBehaviorRenderer implementation class that should be
+        registered under the specified behavior renderer type identifier,
+        in the RenderKit associated with the parent "render-kit"
+        element.  Client Behavior renderer type must be unique within the RenderKit
+        associated with the parent "render-kit" element.</p>
+        
+        <p>Nested "attribute" elements identify generic component
+        attributes that are recognized by this renderer.</p>
+        
+      ]]></xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="client-behavior-renderer-type"
+                   type="javaee:string">
+        <xsd:annotation>
+          <xsd:documentation><![CDATA[
+
+           <p> The "client-behavior-renderer-type" element represents a renderer type
+            identifier for the Client Behavior Renderer represented by the parent
+            "client-behavior-renderer" element.</p>
+            
+          ]]></xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="client-behavior-renderer-class"
+                   type="javaee:fully-qualified-classType">
+        <xsd:annotation>
+          <xsd:documentation><![CDATA[
+
+           <p> The "client-behavior-renderer-class" element represents the fully
+            qualified class name of a concrete Client Behavior Renderer
+            implementation class.</p>
+            
+          ]]></xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-rendererType">
+    <xsd:annotation>
+      <xsd:documentation><![CDATA[
+
+       <p> The "renderer" element represents a concrete Renderer
+        implementation class that should be registered under the
+        specified component family and renderer type identifiers,
+        in the RenderKit associated with the parent "render-kit"
+        element.  Combinations of component family and
+        renderer type must be unique within the RenderKit
+        associated with the parent "render-kit" element.</p>
+        
+        <p>Nested "attribute" elements identify generic component
+        attributes that are recognized by this renderer.</p>
+        
+      ]]></xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:group ref="javaee:descriptionGroup"/>
+      <xsd:element name="component-family"
+                   type="javaee:string">
+        <xsd:annotation>
+          <xsd:documentation><![CDATA[
+
+           <p> The "component-family" element represents the
+            component family for which the Renderer represented
+            by the parent "renderer" element will be used.</p>
+            
+          ]]></xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="renderer-type"
+                   type="javaee:string">
+        <xsd:annotation>
+          <xsd:documentation><![CDATA[
+
+           <p> The "renderer-type" element represents a renderer type
+            identifier for the Renderer represented by the parent
+            "renderer" element.</p>
+            
+          ]]></xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="renderer-class"
+                   type="javaee:fully-qualified-classType">
+        <xsd:annotation>
+          <xsd:documentation><![CDATA[
+
+           <p> The "renderer-class" element represents the fully
+            qualified class name of a concrete Renderer
+            implementation class.</p>
+            
+          ]]></xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="facet"
+                   type="javaee:faces-config-facetType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="attribute"
+                   type="javaee:faces-config-attributeType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="renderer-extension"
+                   type="javaee:faces-config-renderer-extensionType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-renderer-extensionType">
+    <xsd:annotation>
+      <xsd:documentation><![CDATA[
+
+       <p> Extension element for renderer.  It may contain implementation
+        specific content.</p>
+        
+      ]]></xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:any minOccurs="0"
+               maxOccurs="unbounded"
+               namespace="##any"
+               processContents="lax"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-render-kit-extensionType">
+    <xsd:annotation>
+      <xsd:documentation><![CDATA[
+
+       <p> Extension element for render-kit.  It may contain
+        implementation specific content.</p>
+        
+      ]]></xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:any minOccurs="0"
+               maxOccurs="unbounded"
+               namespace="##any"
+               processContents="lax"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-suggested-valueType">
+    <xsd:annotation>
+      <xsd:documentation><![CDATA[
+
+       <p> The "suggested-value" contains the value for the property or
+        attribute in which this element resides.  This value is
+        advisory only and is intended for tools to use when
+        populating pallettes.</p>
+        
+      ]]></xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="javaee:string"/>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-supported-localeType">
+    <xsd:annotation>
+      <xsd:documentation><![CDATA[
+
+       <p> The "supported-locale" element allows authors to declare
+        which locales are supported in this application instance.</p>
+        
+        <p>It must be specified as :language:[_:country:[_:variant:]]
+        without the colons, for example "ja_JP_SJIS".  The
+        separators between the segments may be '-' or '_'.</p>
+        
+      ]]></xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:extension base="javaee:faces-config-localeType">
+        <xsd:attribute name="id"
+                       type="xsd:ID"/>
+      </xsd:extension>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-behaviorType">
+    <xsd:annotation>
+      <xsd:documentation><![CDATA[
+
+       <p> The "behavior" element represents a concrete Behavior
+        implementation class that should be registered under the
+        specified behavior identifier.  Behavior identifiers must
+        be unique within the entire web application.</p>
+        
+        <p>Nested "attribute" elements identify generic attributes that
+        may be configured on the corresponding UIComponent in order
+        to affect the operation of the Behavior.  Nested "property"
+        elements identify JavaBeans properties of the Behavior
+        implementation class that may be configured to affect the
+        operation of the Behavior.  "attribute" and "property"
+        elements are intended to allow component developers to
+        more completely describe their components to tools and users.
+        These elements have no required runtime semantics.</p>
+        
+      ]]></xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:group ref="javaee:descriptionGroup"/>
+      <xsd:element name="behavior-id"
+                   type="javaee:string">
+        <xsd:annotation>
+          <xsd:documentation><![CDATA[
+
+           <p> The "behavior-id" element represents the identifier
+            under which the corresponding Behavior class should
+            be registered.</p>
+            
+          ]]></xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="behavior-class"
+                   type="javaee:fully-qualified-classType">
+        <xsd:annotation>
+          <xsd:documentation><![CDATA[
+
+           <p> The "behavior-class" element represents the fully
+            qualified class name of a concrete Behavior
+            implementation class.</p>
+            
+          ]]></xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="attribute"
+                   type="javaee:faces-config-attributeType"
+                   minOccurs="0"
+                   maxOccurs="unbounded">
+        <xsd:annotation>
+          <xsd:documentation><![CDATA[
+
+           <p> Nested "attribute" elements identify generic
+            attributes that may be configured on the
+            corresponding UIComponent in order to affect the
+            operation of the Behavior.  This attribute is
+            primarily for design-time tools and is not
+            specified to have any meaning at runtime.</p>
+            
+          ]]></xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="property"
+                   type="javaee:faces-config-propertyType"
+                   minOccurs="0"
+                   maxOccurs="unbounded">
+        <xsd:annotation>
+          <xsd:documentation><![CDATA[
+
+           <p> Nested "property" elements identify JavaBeans
+            properties of the Behavior implementation class
+            that may be configured to affect the operation of
+            the Behavior.  This attribute is primarily for
+            design-time tools and is not specified to have
+            any meaning at runtime.</p>
+            
+          ]]></xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="behavior-extension"
+                   type="javaee:faces-config-behavior-extensionType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-behavior-extensionType">
+    <xsd:annotation>
+      <xsd:documentation><![CDATA[
+
+       <p> Extension element for behavior.  It may contain
+        implementation specific content.</p>
+        
+      ]]></xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:any minOccurs="0"
+               maxOccurs="unbounded"
+               namespace="##any"
+               processContents="lax"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-validatorType">
+    <xsd:annotation>
+      <xsd:documentation><![CDATA[
+
+       <p> The "validator" element represents a concrete Validator
+        implementation class that should be registered under the
+        specified validator identifier.  Validator identifiers must
+        be unique within the entire web application.</p>
+        
+        <p>Nested "attribute" elements identify generic attributes that
+        may be configured on the corresponding UIComponent in order
+        to affect the operation of the Validator.  Nested "property"
+        elements identify JavaBeans properties of the Validator
+        implementation class that may be configured to affect the
+        operation of the Validator.  "attribute" and "property"
+        elements are intended to allow component developers to
+        more completely describe their components to tools and users.
+        These elements have no required runtime semantics.</p>
+        
+      ]]></xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:group ref="javaee:descriptionGroup"/>
+      <xsd:element name="validator-id"
+                   type="javaee:string">
+        <xsd:annotation>
+          <xsd:documentation><![CDATA[
+
+           <p> The "validator-id" element represents the identifier
+            under which the corresponding Validator class should
+            be registered.</p>
+            
+          ]]></xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="validator-class"
+                   type="javaee:fully-qualified-classType">
+        <xsd:annotation>
+          <xsd:documentation><![CDATA[
+
+           <p> The "validator-class" element represents the fully
+            qualified class name of a concrete Validator
+            implementation class.</p>
+            
+          ]]></xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="attribute"
+                   type="javaee:faces-config-attributeType"
+                   minOccurs="0"
+                   maxOccurs="unbounded">
+        <xsd:annotation>
+          <xsd:documentation><![CDATA[
+
+           <p> Nested "attribute" elements identify generic
+            attributes that may be configured on the
+            corresponding UIComponent in order to affect the
+            operation of the Validator.  This attribute is
+            primarily for design-time tools and is not
+            specified to have any meaning at runtime.</p>
+            
+          ]]></xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="property"
+                   type="javaee:faces-config-propertyType"
+                   minOccurs="0"
+                   maxOccurs="unbounded">
+        <xsd:annotation>
+          <xsd:documentation><![CDATA[
+
+           <p> Nested "property" elements identify JavaBeans
+            properties of the Validator implementation class
+            that may be configured to affect the operation of
+            the Validator.  This attribute is primarily for
+            design-time tools and is not specified to have
+            any meaning at runtime.</p>
+            
+          ]]></xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="validator-extension"
+                   type="javaee:faces-config-validator-extensionType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-validator-extensionType">
+    <xsd:annotation>
+      <xsd:documentation><![CDATA[
+
+       <p> Extension element for validator.  It may contain
+        implementation specific content.</p>
+        
+      ]]></xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:any minOccurs="0"
+               maxOccurs="unbounded"
+               namespace="##any"
+               processContents="lax"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+  <xsd:simpleType name="faces-config-valueType">
+    <xsd:annotation>
+      <xsd:documentation><![CDATA[
+
+       <p> The "value" element is the String representation of
+        a literal value to which a scalar managed property
+        will be set, or a value binding expression ("#{...}")
+        that will be used to calculate the required value.
+        It will be converted as specified for the actual
+        property type.</p>
+        
+      ]]></xsd:documentation>
+    </xsd:annotation>
+    <xsd:union memberTypes="javaee:faces-config-el-expressionType xsd:string"/>
+  </xsd:simpleType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-value-classType">
+    <xsd:annotation>
+      <xsd:documentation><![CDATA[
+
+       <p> The "value-class" element defines the Java type to which each
+        "value" element's value will be converted to, prior to adding
+        it to the "list-entries" list for a managed property that is
+        a java.util.List, or a "map-entries" map for a managed
+        property that is a java.util.Map.</p>
+        
+      ]]></xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="javaee:fully-qualified-classType">
+        <xsd:attribute name="id"
+                       type="xsd:ID"/>
+      </xsd:restriction>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-list-entriesType">
+    <xsd:annotation>
+      <xsd:documentation><![CDATA[
+
+       <p> The "list-entries" element represents a set of initialization
+        elements for a managed property that is a java.util.List or an
+        array.  In the former case, the "value-class" element can
+        optionally be used to declare the Java type to which each
+        value should be converted before adding it to the Collection.</p>
+        
+      ]]></xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="value-class"
+                   type="javaee:faces-config-value-classType"
+                   minOccurs="0"/>
+      <xsd:choice minOccurs="0"
+                  maxOccurs="unbounded">
+        <xsd:element name="null-value"
+                     type="javaee:faces-config-null-valueType"/>
+        <xsd:element name="value"
+                     type="javaee:faces-config-valueType"/>
+      </xsd:choice>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-system-event-listenerType">
+    <xsd:annotation>
+      <xsd:documentation><![CDATA[
+
+       <p> The presence of this element within the "application" element in
+        an application configuration resource file indicates the
+        developer wants to add an SystemEventListener to this
+        application instance.  Elements nested within this element allow
+        selecting the kinds of events that will be delivered to the
+        listener instance, and allow selecting the kinds of classes that
+        can be the source of events that are delivered to the listener
+        instance.</p>
+        
+      ]]></xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="system-event-listener-class"
+                   type="javaee:fully-qualified-classType">
+        <xsd:annotation>
+          <xsd:documentation><![CDATA[
+
+           <p> The "system-event-listener-class" element contains
+            the fully qualified class name of the concrete
+            SystemEventListener implementation class that will be
+            called when events of the type specified by the
+            "system-event-class" are sent by the runtime.</p>
+            
+          ]]></xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="system-event-class"
+                   type="javaee:fully-qualified-classType">
+        <xsd:annotation>
+          <xsd:documentation><![CDATA[
+
+           <p> The "system-event-class" element contains the fully
+            qualified class name of the SystemEvent subclass for
+            which events will be delivered to the class whose fully
+            qualified class name is given by the
+            "system-event-listener-class" element.</p>
+            
+          ]]></xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="source-class"
+                   type="javaee:fully-qualified-classType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation><![CDATA[
+
+           <p> The "source-class" element, if present, contains the
+            fully qualified class name of the class that will be the
+            source for the event to be delivered to the class whose
+            fully qualified class name is given by the
+            "system-event-listener-class" element.</p>
+            
+          ]]></xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+  <xsd:simpleType name="faces-config-versionType">
+    <xsd:annotation>
+      <xsd:documentation><![CDATA[
+
+       <p> This type contains the recognized versions of
+        faces-config supported.</p>
+        
+      ]]></xsd:documentation>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:token">
+      <xsd:enumeration value="2.2"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+</xsd:schema>
diff --git a/jsf-api/doc/web-facesuicomponent_2_0.xsd b/jsf-api/doc/web-facesuicomponent_2_0.xsd
index e7bd7c6..8fb8de1 100644
--- a/jsf-api/doc/web-facesuicomponent_2_0.xsd
+++ b/jsf-api/doc/web-facesuicomponent_2_0.xsd
@@ -1,6 +1,45 @@
 <?xml version = "1.0" encoding = "UTF-8"?>
-
-
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
 
 <xsd:schema
      targetNamespace="http://java.sun.com/xml/ns/javaee"
@@ -14,44 +53,43 @@
   <xsd:annotation>
     <xsd:documentation>
 
-      DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-      
-      Copyright 2003-2009 Sun Microsystems, Inc. All rights reserved.
-      
-      The contents of this file are subject to the terms of either the
-      GNU General Public License Version 2 only ("GPL") or the Common
-      Development and Distribution License("CDDL") (collectively, the
-      "License").  You may not use this file except in compliance with
-      the License. You can obtain a copy of the License at
-      https://glassfish.dev.java.net/public/CDDL+GPL.html or
-      glassfish/bootstrap/legal/LICENSE.txt.  See the License for the
-      specific language governing permissions and limitations under the
-      License.
-      
-      When distributing the software, include this License Header
-      Notice in each file and include the License file at
-      glassfish/bootstrap/legal/LICENSE.txt.  Sun designates this
-      particular file as subject to the "Classpath" exception as
-      provided by Sun in the GPL Version 2 section of the License file
-      that accompanied this code.  If applicable, add the following
-      below the License Header, with the fields enclosed by brackets []
-      replaced by your own identifying information:
-      "Portions Copyrighted [year] [name of copyright owner]"
-      
-      Contributor(s):
-      
-      If you wish your version of this file to be governed by only the
-      CDDL or only the GPL Version 2, indicate your decision by adding
-      "[Contributor] elects to include this software in this
-      distribution under the [CDDL or GPL Version 2] license."  If you
-      don't indicate a single choice of license, a recipient has the
-      option to distribute your version of this file under either the
-      CDDL, the GPL Version 2 or to extend the choice of license to its
-      licensees as provided above.  However, if you add GPL Version 2
-      code and therefore, elected the GPL Version 2 license, then the
-      option applies only if the new code is made subject to such
-      option by the copyright holder.
-      
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
     </xsd:documentation>
   </xsd:annotation>
 
diff --git a/jsf-api/doc/web-facesuicomponent_2_2.xsd b/jsf-api/doc/web-facesuicomponent_2_2.xsd
new file mode 100644
index 0000000..435125e
--- /dev/null
+++ b/jsf-api/doc/web-facesuicomponent_2_2.xsd
@@ -0,0 +1,222 @@
+<?xml version = "1.0" encoding = "UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<xsd:schema
+     targetNamespace="http://xmlns.jcp.org/xml/ns/javaee"
+     xmlns:javaee="http://xmlns.jcp.org/xml/ns/javaee"
+     xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+     xmlns:xml="http://www.w3.org/XML/1998/namespace"
+     elementFormDefault="qualified"
+     attributeFormDefault="unqualified"
+     version="2.2">
+
+    <xsd:annotation>
+        <xsd:documentation>
+
+            <![CDATA[
+
+            <p>The XML Schema for a JavaServer Faces UIComponent (Version 2.0).</p>
+
+            <p>The elements in this schema may be used in an XHTML page for
+            a composite component, by pulling in the composite namespace:</p>
+<pre><code>            
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:composite="http://xmlns.jcp.org/jsf/composite">
+      
+      <composite:interface>
+         <composite:attribute name="foo" default="bar" />
+      </composite:/interface>
+      <!-- the rest omitted -->
+</html>
+</code></pre>
+
+            <p>The elements in this schema may also be used in a facelet taglibrary
+            file in the same manner:</p>
+            
+<pre><code>
+<facelet-taglib xmlns="http://xmlns.jcp.org/xml/ns/javaee"
+              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+              xmlns:composite="http://xmlns.jcp.org/jsf/composite"
+              xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-facelettaglibary_2_0.xsd"
+              version="2.0">
+  <namespace>http://domain.com/test_schema</namespace>
+  <tag>
+    <tag-name>testSchema</tag-name>
+    <component>
+      <component-type>javax.faces.Input</component-type>
+      <renderer-type>javax.faces.Text</renderer-type>
+      <handler-class>com.sun.faces.facelets.tag.jsf.ComponentHandler</handler-class>
+      <component-extension>
+
+        <composite:attribute name="foo" default="bar" />
+
+      </component-extension>
+    </component>
+  </tag>
+</facelet-taglib>
+</code></pre>
+            
+            <p>The instance documents may indicate the published
+            version of the schema using xsi:schemaLocation attribute
+            for javaee namespace with the following location:</p>
+
+            <p>http://xmlns.jcp.org/xml/ns/javaee/web-facesuicomponent_2_2.xsd</p>
+
+            ]]>
+
+        </xsd:documentation>
+    </xsd:annotation>
+
+    <xsd:include schemaLocation="javaee_7.xsd"/>
+
+    <!-- **************************************************** -->
+
+    <xsd:element name = "attribute" type="javaee:uicomponent-attributeType">
+    </xsd:element>
+
+    <!-- **************************************************** -->
+
+    <xsd:complexType name="uicomponent-attributeType">
+        <xsd:annotation>
+            <xsd:documentation>
+
+                The "attribute" element declares an attribute of this 
+                ui component.
+
+            </xsd:documentation>
+        </xsd:annotation>
+        
+        <xsd:choice minOccurs="0" maxOccurs="unbounded">
+            <xsd:element name="attribute"
+                         type="javaee:uicomponent-attributeType"/>
+        </xsd:choice>
+
+        <xsd:attribute name="name"
+                       type="xsd:string"
+                       use="required"/>
+
+        <xsd:attribute name="displayName"
+                       type="xsd:string"
+                       use="optional"/>
+
+        <xsd:attribute name="shortDescription"
+                       type="xsd:string"
+                       use="optional"/>
+
+        <xsd:attribute name="default"
+                       type="xsd:string"
+                       use="optional"/>
+
+        <xsd:attribute name="method-signature"
+                       type="xsd:string"
+                       use="optional">
+
+	  <xsd:annotation>
+	      <xsd:documentation>
+                <![CDATA[
+
+	    <p>Provides the signature of the Java method.  The syntax of
+	    the method-signature element is as follows (taken from the
+	    function-signature EBNF in web-jsptaglibrary_2_1.xsd):</p>
+
+<code>
+
+<p>MethodSignature ::= ReturnType S MethodName S? '(' S? Parameters? S? ')'</p>
+
+<p>ReturnType        ::= Type</p>
+
+<p>MethodName        ::= Identifier</p>
+
+<p>Parameters        ::= Parameter | ( Parameter S? ',' S? Parameters )</p>
+
+<p>Parameter         ::= Type</p>
+
+</code>
+
+<p>Where:</p>
+
+<ul>
+
+	  <li><p><code>Type</code> is a basic type or a fully qualified
+	  Java class name (including package name), as per the 'Type'
+	  production in the Java Language Specification, Second Edition,
+	  Chapter 18.</p></li>
+
+	  <li><p><code>Identifier</code> is a Java identifier, as per the
+	  'Identifier' production in the Java Language Specification,
+	  Second Edition, Chapter 18.</p></li>
+
+</ul>
+
+<p>Example:</p>
+
+<p><code>java.lang.String nickName( java.lang.String, int )</code></p>
+
+                ]]>
+	      </xsd:documentation>
+	  </xsd:annotation>
+
+        </xsd:attribute>
+
+        <xsd:attribute name="applyTo"
+                       type="xsd:string"
+                       use="optional"/>
+
+        <xsd:attribute name="required"
+                       type="xsd:boolean"
+                       use="optional"/>
+
+        <xsd:attribute name="preferred"
+                       type="xsd:boolean"
+                       use="optional"/>
+
+        <xsd:attribute name="expert"
+                       type="xsd:boolean"
+                       use="optional"/>
+
+        
+    </xsd:complexType>
+
+    <!-- **************************************************** -->
+
+</xsd:schema>
diff --git a/jsf-api/doc/web-partialresponse_2_0.xsd b/jsf-api/doc/web-partialresponse_2_0.xsd
index 3b1b3bc..0ce9b85 100644
--- a/jsf-api/doc/web-partialresponse_2_0.xsd
+++ b/jsf-api/doc/web-partialresponse_2_0.xsd
@@ -1,5 +1,45 @@
 <?xml version = "1.0" encoding = "UTF-8"?>
-
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
 
 <xsd:schema
      targetNamespace="http://java.sun.com/xml/ns/javaee"
@@ -13,44 +53,43 @@
   <xsd:annotation>
     <xsd:documentation>
 
-      DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-      
-      Copyright 2003-2009 Sun Microsystems, Inc. All rights reserved.
-      
-      The contents of this file are subject to the terms of either the
-      GNU General Public License Version 2 only ("GPL") or the Common
-      Development and Distribution License("CDDL") (collectively, the
-      "License").  You may not use this file except in compliance with
-      the License. You can obtain a copy of the License at
-      https://glassfish.dev.java.net/public/CDDL+GPL.html or
-      glassfish/bootstrap/legal/LICENSE.txt.  See the License for the
-      specific language governing permissions and limitations under the
-      License.
-      
-      When distributing the software, include this License Header
-      Notice in each file and include the License file at
-      glassfish/bootstrap/legal/LICENSE.txt.  Sun designates this
-      particular file as subject to the "Classpath" exception as
-      provided by Sun in the GPL Version 2 section of the License file
-      that accompanied this code.  If applicable, add the following
-      below the License Header, with the fields enclosed by brackets []
-      replaced by your own identifying information:
-      "Portions Copyrighted [year] [name of copyright owner]"
-      
-      Contributor(s):
-      
-      If you wish your version of this file to be governed by only the
-      CDDL or only the GPL Version 2, indicate your decision by adding
-      "[Contributor] elects to include this software in this
-      distribution under the [CDDL or GPL Version 2] license."  If you
-      don't indicate a single choice of license, a recipient has the
-      option to distribute your version of this file under either the
-      CDDL, the GPL Version 2 or to extend the choice of license to its
-      licensees as provided above.  However, if you add GPL Version 2
-      code and therefore, elected the GPL Version 2 license, then the
-      option applies only if the new code is made subject to such
-      option by the copyright holder.
-      
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
     </xsd:documentation>
   </xsd:annotation>
 
diff --git a/jsf-api/doc/web-partialresponse_2_2.xsd b/jsf-api/doc/web-partialresponse_2_2.xsd
new file mode 100644
index 0000000..d4386ab
--- /dev/null
+++ b/jsf-api/doc/web-partialresponse_2_2.xsd
@@ -0,0 +1,402 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsd:schema xmlns:javaee="http://xmlns.jcp.org/xml/ns/javaee"
+            attributeFormDefault="unqualified"
+            elementFormDefault="qualified"
+            targetNamespace="http://xmlns.jcp.org/xml/ns/javaee"
+            version="2.2"
+            xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+  <xsd:include schemaLocation="javaee_7.xsd"/>
+
+  <xsd:annotation>
+    <xsd:documentation>
+
+      DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+      
+      Copyright (c) 2011 - 2013 Oracle and/or its affiliates. All rights reserved.
+      
+      The contents of this file are subject to the terms of either the GNU
+      General Public License Version 2 only ("GPL") or the Common Development
+      and Distribution License("CDDL") (collectively, the "License").  You
+      may not use this file except in compliance with the License.  You can
+      obtain a copy of the License at
+      https://glassfish.java.net/public/CDDL+GPL_1_1.html
+      or packager/legal/LICENSE.txt.  See the License for the specific
+      language governing permissions and limitations under the License.
+      
+      When distributing the software, include this License Header Notice in each
+      file and include the License file at packager/legal/LICENSE.txt.
+      
+      GPL Classpath Exception:
+      Oracle designates this particular file as subject to the "Classpath"
+      exception as provided by Oracle in the GPL Version 2 section of the License
+      file that accompanied this code.
+      
+      Modifications:
+      If applicable, add the following below the License Header, with the fields
+      enclosed by brackets [] replaced by your own identifying information:
+      "Portions Copyright [year] [name of copyright owner]"
+      
+      Contributor(s):
+      If you wish your version of this file to be governed by only the CDDL or
+      only the GPL Version 2, indicate your decision by adding "[Contributor]
+      elects to include this software in this distribution under the [CDDL or GPL
+      Version 2] license."  If you don't indicate a single choice of license, a
+      recipient has the option to distribute your version of this file under
+      either the CDDL, the GPL Version 2 or to extend the choice of license to
+      its licensees as provided above.  However, if you add GPL Version 2 code
+      and therefore, elected the GPL Version 2 license, then the option applies
+      only if the new code is made subject to such option by the copyright
+      holder.
+      
+    </xsd:documentation>
+  </xsd:annotation>
+
+  <xsd:annotation>
+    <xsd:documentation>
+      <![CDATA[[
+      <p>
+      
+      The XML Schema for the JavaServer Faces (Version 2.2)  
+      Partial Response used in JSF Ajax frameworks.
+      
+      </p>
+      
+      ]]>
+    </xsd:documentation>
+  </xsd:annotation>
+
+
+<!-- **************************************************** -->
+
+  <xsd:element name="partial-response"
+               type="javaee:partial-responseType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[[
+        <p>
+        
+        The "partial-response" element is the root of the
+        partial response information hierarchy, and contains
+        nested elements for all possible elements that can exist
+        in the response.</p>
+        
+        <p>This element must have an "id" attribute whose value
+        is the return from calling getContainerClientId() on the
+        UIViewRoot to which this response pertains.
+        
+        </p>
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+  </xsd:element>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="partial-responseType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[[
+        <p>
+        
+        The "partial-response" element is the root of the
+        partial response information hierarchy, and contains
+        nested elements for all possible elements that can exist
+        in the response.
+        
+        <p>
+        
+        </p>
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:choice>
+      <xsd:element name="changes"
+                   type="javaee:partial-response-changesType"
+                   minOccurs="0"
+                   maxOccurs="1"/>
+      <xsd:element name="redirect"
+                   type="javaee:partial-response-redirectType"
+                   minOccurs="0"
+                   maxOccurs="1"/>
+      <xsd:element name="error"
+                   type="javaee:partial-response-errorType"
+                   minOccurs="0"
+                   maxOccurs="1"/>
+    </xsd:choice>
+    <xsd:attribute name="id"
+                   type="xsd:ID"
+                   use="required">
+      <xsd:annotation>
+        <xsd:documentation>
+          <![CDATA[[
+          <p class="changed_added_2_2">This element must have an "id" attribute whose value
+          is the return from calling getContainerClientId() on the
+          UIViewRoot to which this response pertains.<p> 
+          
+          ]]>
+        </xsd:documentation>
+      </xsd:annotation>
+    </xsd:attribute>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="partial-response-changesType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[[
+        <p>
+        
+        The "changes" element contains a collection of child elements,
+        each of which describes a different change to be applied to the
+        view in the user agent.
+        
+        </p>
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:choice minOccurs="0"
+                maxOccurs="unbounded">
+      <xsd:element name="update"
+                   type="javaee:partial-response-updateType"/>
+      <xsd:element name="insert"
+                   type="javaee:partial-response-insertType"/>
+      <xsd:element name="delete"
+                   type="javaee:partial-response-deleteType"/>
+      <xsd:element name="attributes"
+                   type="javaee:partial-response-attributesType"/>
+      <xsd:element name="eval"
+                   type="xsd:string">
+        <xsd:annotation>
+          <xsd:documentation>
+            <![CDATA[[
+            <p>
+            
+            The "eval" element enables this element's
+            contents to be executed as JavaScript.
+            
+            </p>
+            ]]>
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="extension"
+                   type="javaee:partial-response-extensionType"/>
+    </xsd:choice>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="partial-response-updateType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[[
+        <p>
+        
+        The "update" element enables DOM elements matching the "id"
+        attribute to be updated with the contents of this element. 
+        
+        </p>
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence maxOccurs="unbounded">
+      <xsd:any processContents="skip"
+               namespace="##any"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:string"
+                   use="required"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="partial-response-insertType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[[
+        <p>
+        
+        The "insert" element enables content to be inserted into the DOM
+        before or after an existing DOM element as specified by the
+        nested "before" or "after" elements.  The elements "before" and
+        "after" are mutually exclusive - one of them must be specified. 
+        
+        </p>
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:choice minOccurs="1"
+                maxOccurs="1">
+      <xsd:element name="before">
+
+<!-- **************************************************** -->
+
+        <xsd:complexType>
+          <xsd:sequence>
+            <xsd:any namespace="##any"
+                     processContents="lax"
+                     minOccurs="0"
+                     maxOccurs="unbounded"/>
+          </xsd:sequence>
+          <xsd:attribute name="id"
+                         type="xsd:string"
+                         use="required"/>
+        </xsd:complexType>
+      </xsd:element>
+      <xsd:element name="after">
+
+<!-- **************************************************** -->
+
+        <xsd:complexType>
+          <xsd:sequence>
+            <xsd:any namespace="##any"
+                     processContents="lax"
+                     minOccurs="0"
+                     maxOccurs="unbounded"/>
+          </xsd:sequence>
+          <xsd:attribute name="id"
+                         type="xsd:string"
+                         use="required"/>
+        </xsd:complexType>
+      </xsd:element>
+    </xsd:choice>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="partial-response-deleteType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[[
+        <p>
+        
+        The "delete" element enables DOM elements matching the "id"
+        attribute to be removed. 
+        
+        </p>
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:attribute name="id"
+                   type="xsd:string"
+                   use="required"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="partial-response-attributesType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[[
+        <p>
+        
+        The "attributes" element enables attributes of DOM elements matching the "id"
+        attribute to be updated.  If this element is used, then it must contain at
+        least one "attribute" element. 
+        
+        </p>
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="attribute"
+                   minOccurs="1"
+                   maxOccurs="unbounded">
+
+<!-- **************************************************** -->
+
+        <xsd:complexType>
+          <xsd:attribute name="name"
+                         type="xsd:string"
+                         use="required"/>
+          <xsd:attribute name="value"
+                         type="xsd:string"
+                         use="required"/>
+        </xsd:complexType>
+      </xsd:element>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:string"
+                   use="required"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="partial-response-redirectType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[[
+        <p>
+        
+        The "redirect" element enables a redirect to the location as specified by the
+        "url" attribute. 
+        
+        </p>
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:attribute name="url"
+                   type="xsd:string"
+                   use="required"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="partial-response-errorType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[[
+        <p>
+        
+        The "error" element contains error information from the server. 
+        
+        </p>
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="error-name"
+                   type="xsd:string"
+                   minOccurs="1"
+                   maxOccurs="1"/>
+      <xsd:element name="error-message"
+                   type="xsd:string"
+                   minOccurs="1"
+                   maxOccurs="1"/>
+    </xsd:sequence>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="partial-response-extensionType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[[
+        <p>
+        Extension element for partial response.  It may contain
+        implementation specific content.
+        </p>
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:any namespace="##any"
+               processContents="lax"
+               minOccurs="0"
+               maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+</xsd:schema>
diff --git a/jsf-api/doc/xml.xsd b/jsf-api/doc/xml.xsd
index 72e0a32..ffe0cb7 100644
--- a/jsf-api/doc/xml.xsd
+++ b/jsf-api/doc/xml.xsd
@@ -1,6 +1,47 @@
 <?xml version='1.0'?>
-
 <!DOCTYPE xs:schema PUBLIC "-//W3C//DTD XMLSCHEMA 200102//EN" "XMLSchema.dtd" >
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
 <xs:schema targetNamespace="http://www.w3.org/XML/1998/namespace" xmlns:xs="http://www.w3.org/2001/XMLSchema" xml:lang="en">
 
  <xs:annotation>
diff --git a/jsf-api/interim-pom.xml b/jsf-api/interim-pom.xml
index 44fa154..c5bd07f 100644
--- a/jsf-api/interim-pom.xml
+++ b/jsf-api/interim-pom.xml
@@ -1,39 +1,44 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
 
- Contributor(s):
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
 -->
 
 <project>
@@ -41,11 +46,11 @@
 
     <groupId>com.sun.faces</groupId>
     <artifactId>jsf-api</artifactId>
-    <version>2.0.3-SNAPSHOT</version>
+    <version>2.1.0-SNAPSHOT</version>
     <packaging>jar</packaging>
 
-    <name>Sun's implementation of the JSF 2.0 specification API.</name>
-    <description>This is the master POM file for Sun's Implementation of the JSF 2.0 Specification.</description>
+    <name>Sun's implementation of the JSF 2.1 specification API.</name>
+    <description>This is the master POM file for Sun's Implementation of the JSF 2.1 Specification.</description>
     <url>http://java.sun.com/javaee/javaserverfaces/</url>
 
     <licenses>
@@ -65,7 +70,7 @@
             <id>edburns</id>
             <name>Ed Burns</name>
             <email>ed.burns at sun.com</email>
-            <organization>Sun Microsystems, Inc.</organization>
+            <organization>Oracle America, Inc.</organization>
             <roles>
                 <role>project-owner</role>
             </roles>
@@ -75,7 +80,7 @@
             <id>rlubke</id>
             <name>Ryan Lubke</name>
             <email>Ryan.Lubke at sun.com</email>
-            <organization>Sun Microsystems, Inc.</organization>
+            <organization>Oracle America, Inc.</organization>
             <roles>
                 <role>project-owner</role>
             </roles>
@@ -85,7 +90,7 @@
             <id>rogerk</id>
             <name>Roger Kitain</name>
             <email>Roger.Kitain at sun.com</email>
-            <organization>Sun Microsystems, Inc.</organization>
+            <organization>Oracle America, Inc.</organization>
             <roles>
                 <role>project-owner</role>
             </roles>
@@ -95,7 +100,7 @@
             <id>driscoll</id>
             <name>Jim Driscoll</name>
             <email>jim.dirscoll at sun.com</email>
-            <organization>Sun Microsystems, Inc.</organization>
+            <organization>Oracle America, Inc.</organization>
             <roles>
                 <role>project-owner</role>
             </roles>
@@ -180,7 +185,7 @@
                                         <pathelement location="${commons-digester.jar}" />
                                         <pathelement location="${commons-collections.jar}" />
                                         <pathelement location="${commons-logging.jar}" />
-                                        <pathelement location="${jsf-api.jar}"/>
+                                        <pathelement location="${jsf-api-intermediate.jar}"/>
                                         <pathelement location="${tools.dir}/build/classes"/>
                                     </classpath>
                                     <assertions>
@@ -243,7 +248,7 @@
 
     <mailingLists>
         <mailingList>
-            <name>JSF 2.0 Specification Comments</name>
+            <name>JSF 2.1 Specification Comments</name>
             <post>jsr-314-comments at jcp.org</post>
         </mailingList>
         <mailingList>
@@ -290,8 +295,8 @@
     </contributors>
 
     <organization>
-        <name>Sun Microsystems, Inc</name>
-        <url>http://www.sun.com/</url>
+        <name>Oracle America, Inc</name>
+        <url>http://www.oracle.com/</url>
     </organization>
 
     <dependencies>
diff --git a/jsf-api/mojarra-jsf-api.bnd b/jsf-api/mojarra-jsf-api.bnd
index 1be3c2f..3d09631 100644
--- a/jsf-api/mojarra-jsf-api.bnd
+++ b/jsf-api/mojarra-jsf-api.bnd
@@ -1,58 +1,100 @@
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- #
- # Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- #
- # The contents of this file are subject to the terms of either the GNU
- # General Public License Version 2 only ("GPL") or the Common Development
- # and Distribution License("CDDL") (collectively, the "License").  You
- # may not use this file except in compliance with the License. You can obtain
- # a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- # or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- # language governing permissions and limitations under the License.
- #
- # When distributing the software, include this License Header Notice in each
- # file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- # Sun designates this particular file as subject to the "Classpath" exception
- # as provided by Sun in the GPL Version 2 section of the License file that
- # accompanied this code.  If applicable, add the following below the License
- # Header, with the fields enclosed by brackets [] replaced by your own
- # identifying information: "Portions Copyrighted [year]
- # [name of copyright owner]"
- #
- # Contributor(s):
- #
- # If you wish your version of this file to be governed by only the CDDL or
- # only the GPL Version 2, indicate your decision by adding "[Contributor]
- # elects to include this software in this distribution under the [CDDL or GPL
- # Version 2] license."  If you don't indicate a single choice of license, a
- # recipient has the option to distribute your version of this file under
- # either the CDDL, the GPL Version 2 or to extend the choice of license to
- # its licensees as provided above.  However, if you add GPL Version 2 code
- # and therefore, elected the GPL Version 2 license, then the option applies
- # only if the new code is made subject to such option by the copyright
- # holder.
- #
-
-# Items to merge into the generated manifest
-Specification-Title: JavaServer Faces
-Specification-Version: @spec.version@
-Implementation-Title: @impl.name@
-Implementation-Version: @impl.version@
-Implementation-Vendor: Sun Microsystems, Inc.
-Implementation-Vendor-Id: com.sun
-Extension-Name: @extension.name@
-Probe-Provider-Xml-File-Names: META-INF/mojarra-jsf-api-probe-provider.xml
-
-# BND/OSGI Properties
-Export-Package: javax.faces.*;version=2.0
-Import-Package: javax.servlet.jsp.jstl.*;version=1.2,\
-  javax.validation.*;resolution:=optional, \
-  javax.servlet.jsp.*;version=2.1,\
-  javax.servlet.*;version=2.4,\
-  javax.el.*;version=2.1
-DynamicImport-Package: org.glassfish.flashlight.provider
-Include-Resource: META-INF=build/classes/META-INF,build/classes
-Bundle-Version: @osgi.version@
-Bundle-Name: Mojarra JSF API Implementation @impl.version@
-Bundle-Description: Mojarra JSF API (javax.faces/@spec.version@) @impl.version@
-Bundle-SymbolicName: javax.faces/com.sun.faces.mojarra-jsf-api
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ #
+ # Copyright 1997-2007 Oracle America, Inc. All rights reserved.
+ #
+ # The contents of this file are subject to the terms of either the GNU
+ # General Public License Version 2 only ("GPL") or the Common Development
+ # and Distribution License("CDDL") (collectively, the "License").  You
+ # may not use this file except in compliance with the License. You can obtain
+ # a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
+ # or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ # language governing permissions and limitations under the License.
+ #
+ # When distributing the software, include this License Header Notice in each
+ # file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
+ # Sun designates this particular file as subject to the "Classpath" exception
+ # as provided by Sun in the GPL Version 2 section of the License file that
+ # accompanied this code.  If applicable, add the following below the License
+ # Header, with the fields enclosed by brackets [] replaced by your own
+ # identifying information: "Portions Copyrighted [year]
+ # [name of copyright owner]"
+ #
+ # Contributor(s):
+ #
+ # If you wish your version of this file to be governed by only the CDDL or
+ # only the GPL Version 2, indicate your decision by adding "[Contributor]
+ # elects to include this software in this distribution under the [CDDL or GPL
+ # Version 2] license."  If you don't indicate a single choice of license, a
+ # recipient has the option to distribute your version of this file under
+ # either the CDDL, the GPL Version 2 or to extend the choice of license to
+ # its licensees as provided above.  However, if you add GPL Version 2 code
+ # and therefore, elected the GPL Version 2 license, then the option applies
+ # only if the new code is made subject to such option by the copyright
+ # holder.
+ #
+
+# Items to merge into the generated manifest
+Specification-Title: JavaServer Faces
+Specification-Version: @spec.version@
+Implementation-Title: @impl.name@
+Implementation-Version: @spec.version@
+Implementation-Vendor: Oracle America, Inc.
+Implementation-Vendor-Id: com.sun
+Extension-Name: @extension.name@
+Probe-Provider-Xml-File-Names: META-INF/mojarra-jsf-api-probe-provider.xml
+
+# BND/OSGI Properties
+Export-Package: javax.faces.*;version=@spec.version@
+Import-Package: javax.servlet.jsp.jstl.*;version=1.2,\
+  javax.validation.*;resolution:=optional, \
+  javax.servlet.jsp.*;version=2.1,\
+  javax.servlet.*;version=3.0,\
+  javax.el.*;version=2.2.1
+DynamicImport-Package: org.glassfish.flashlight.provider
+Include-Resource: META-INF=build/classes/META-INF,build/classes
+Bundle-Version: @spec.version@
+Bundle-Name: JavaServer Faces API @full.impl.version@
+Bundle-Description: Mojarra JSF API (javax.faces/@spec.version@) @full.impl.version@
+Bundle-SymbolicName: javax.faces-api
+Bundle-License: http://glassfish.java.net/nonav/public/CDDL+GPL.html
+Bundle-DocURL: http://download.oracle.com/javaee/6/api/
diff --git a/jsf-api/src/main/java/javax/faces/CurrentThreadToServletContext.java b/jsf-api/src/main/java/javax/faces/CurrentThreadToServletContext.java
new file mode 100644
index 0000000..8a71305
--- /dev/null
+++ b/jsf-api/src/main/java/javax/faces/CurrentThreadToServletContext.java
@@ -0,0 +1,382 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+
+package javax.faces;
+
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentMap;
+import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.faces.context.ExternalContext;
+import javax.faces.context.FacesContext;
+
+// ----------------------------------------------------------- Inner Classes
+final class CurrentThreadToServletContext {
+    ConcurrentMap<FactoryManagerCacheKey, FactoryFinderInstance> applicationMap = new ConcurrentHashMap<FactoryManagerCacheKey, FactoryFinderInstance>();
+    private AtomicBoolean logNullFacesContext = new AtomicBoolean(false);
+    private AtomicBoolean logNonNullFacesContext = new AtomicBoolean(false);
+    
+    private static final Logger LOGGER;
+    
+    static {
+        LOGGER = Logger.getLogger("javax.faces", "javax.faces.LogStrings");
+    }
+
+    // ------------------------------------------------------ Public Methods
+    Object getFallbackFactory(FactoryFinderInstance brokenFactoryManager, String factoryName) {
+        Object result = null;
+        ClassLoader cl = getClassLoader();        
+        for (Map.Entry<FactoryManagerCacheKey, FactoryFinderInstance> cur : applicationMap.entrySet()) {
+            if (cur.getKey().getClassLoader().equals(cl) && !cur.getValue().equals(brokenFactoryManager)) {
+                result = cur.getValue().getFactory(factoryName);
+                if (null != result) {
+                    break;
+                }
+            }
+        }
+        return result;
+    }
+
+    FactoryFinderInstance getApplicationFactoryManager() {
+        ClassLoader cl = getClassLoader();
+        FactoryFinderInstance result = getApplicationFactoryManager(cl, true);
+        return result;
+    }
+
+    private FactoryFinderInstance getApplicationFactoryManager(ClassLoader cl, boolean create) {
+        FacesContext facesContext = FacesContext.getCurrentInstance();
+        boolean isSpecialInitializationCase = detectSpecialInitializationCase(facesContext);
+        FactoryManagerCacheKey key = new FactoryManagerCacheKey(facesContext, cl, applicationMap);
+        FactoryFinderInstance result = applicationMap.get(key);
+        FactoryFinderInstance toCopy = null;
+        if (result == null && create) {
+            boolean createNewFactoryManagerInstance = false;
+            if (isSpecialInitializationCase) {
+                // We need to obtain a reference to the correct
+                // FactoryFinderInstance.  Iterate through the data structure
+                // containing all FactoryFinderInstance instances for this VM.
+                FactoryManagerCacheKey curKey;
+                boolean classLoadersMatchButContextsDoNotMatch = false;
+                boolean foundNoMatchInApplicationMap = true;
+                for (Map.Entry<FactoryManagerCacheKey, FactoryFinderInstance> cur : applicationMap.entrySet()) {
+                    curKey = cur.getKey();
+                    // If the current FactoryFinderInstance is for a
+                    // the same ClassLoader as the current ClassLoader...
+                    if (curKey.getClassLoader().equals(cl)) {
+                        foundNoMatchInApplicationMap = false;
+                        // Check the other descriminator for the
+                        // key: the context.
+                        // If the context objects of the keys are
+                        // both non-null and non-equal, then *do*
+                        // create a new FactoryFinderInstance instance.
+                        if ((null != key.getContext() && null != curKey.getContext()) && (!key.getContext().equals(curKey.getContext()))) {
+                            classLoadersMatchButContextsDoNotMatch = true;
+                            toCopy = cur.getValue();
+                        } else {
+                            // Otherwise, use this FactoryFinderInstance
+                            // instance.
+                            result = cur.getValue();
+                        }
+                        break;
+                    }
+                }
+                // We must create a new FactoryFinderInstance if there was no match
+                // at all found in the applicationMap, or a match was found
+                // and the match is safe to use in this web app
+                createNewFactoryManagerInstance = foundNoMatchInApplicationMap || (null == result && classLoadersMatchButContextsDoNotMatch);
+            } else {
+                createNewFactoryManagerInstance = true;
+            }
+            if (createNewFactoryManagerInstance) {
+                FactoryFinderInstance newResult;
+                if (null != toCopy) {
+                    newResult = new FactoryFinderInstance(toCopy);
+                } else {
+                    newResult = new FactoryFinderInstance();
+                }
+                result = applicationMap.putIfAbsent(key, newResult);
+                result = (null != result) ? result : newResult;
+            }
+        }
+        return result;
+    }
+
+    /**
+     * This method is used to detect the following special initialization case.
+     * IF no FactoryFinderInstance can be found for key,
+    AND this call to getApplicationFactoryFinderInstance() *does* have a currentKeyrent FacesContext
+    BUT a previous call to getApplicationFactoryFinderInstance *did not* have a currentKeyrent FacesContext
+     *
+     * @param facesContext the currentKeyrent FacesContext for this request
+     * @return true if the currentKeyrent execution falls into the special initialization case.
+     */
+    private boolean detectSpecialInitializationCase(FacesContext facesContext) {
+        boolean result = false;
+        if (null == facesContext) {
+            logNullFacesContext.compareAndSet(false, true);
+        } else {
+            logNonNullFacesContext.compareAndSet(false, true);
+        }
+        result = logNullFacesContext.get() && logNonNullFacesContext.get();
+        return result;
+    }
+
+    public void removeApplicationFactoryManager() {
+        ClassLoader cl = getClassLoader();
+        FactoryFinderInstance fm = this.getApplicationFactoryManager(cl, false);
+        if (null != fm) {
+            fm.clearInjectionProvider();
+        }
+        FacesContext facesContext = FacesContext.getCurrentInstance();
+        boolean isSpecialInitializationCase = detectSpecialInitializationCase(facesContext);
+        FactoryManagerCacheKey key = new FactoryManagerCacheKey(facesContext, cl, applicationMap);
+        applicationMap.remove(key);
+        if (isSpecialInitializationCase) {
+            logNullFacesContext.set(false);
+            logNonNullFacesContext.set(false);
+        }
+    }
+
+    public void resetSpecialInitializationCaseFlags() {
+        logNullFacesContext.set(false);
+        logNonNullFacesContext.set(false);
+    }
+    
+    /**
+     * <p>Identify and return the class loader that is associated with the
+     * calling web application.</p>
+     *
+     * @throws FacesException if the web application class loader
+     *                        cannot be identified
+     */
+    private ClassLoader getClassLoader() throws FacesException {
+
+        // J2EE 1.3 (and later) containers are required to make the
+        // web application class loader visible through the context
+        // class loader of the current thread.
+        ClassLoader cl = Thread.currentThread().getContextClassLoader();
+        if (cl == null) {
+            throw new FacesException("getContextClassLoader");
+        }
+        return (cl);
+
+    }
+
+    private static final class FactoryManagerCacheKey {
+        // The ClassLoader that is active the first time this key
+        // is created.  At startup time, this is assumed to be the 
+        // web app ClassLoader
+        private ClassLoader cl;
+        // I marker that disambiguates the case when multiple
+        // web apps have the same web app ClassLoader but different
+        // ServletContext instances.  
+        private Long marker;
+        // The ServletContext corresponding to this marker/ClassLoader pair.
+        private Object context;
+
+        private static final String MARKER_KEY = FactoryFinder.class.getName() + "." +
+                FactoryManagerCacheKey.class.getSimpleName();
+        private static final String INIT_TIME_CL_KEY = MARKER_KEY + ".InitTimeCLKey";
+
+        // <editor-fold defaultstate="collapsed" desc="Constructors and helpers">
+        public FactoryManagerCacheKey(FacesContext facesContext, ClassLoader cl,
+                Map<FactoryManagerCacheKey,FactoryFinderInstance> factoryMap) {
+            ExternalContext extContext = (null != facesContext) ? facesContext.getExternalContext()
+                    : null;
+            Object servletContext = (null != extContext) ? extContext.getContext() : null;
+
+            if (null == facesContext || null == extContext || null == servletContext) {
+                initFromFactoryMap(cl, factoryMap);
+            } else {
+                initFromAppMap(extContext, cl);
+            } 
+        }
+        
+        private void initFromFactoryMap(ClassLoader cl,
+                Map<FactoryManagerCacheKey,FactoryFinderInstance> factoryMap) {
+            // We don't have a FacesContext.
+            // Our only recourse is to inspect the keys of the
+            // factoryMap and see if any of them has a classloader
+            // equal to our argument cl.
+            Set<FactoryManagerCacheKey> keys = factoryMap.keySet();
+            FactoryManagerCacheKey match = null;
+            
+            if (keys.isEmpty()) {
+                this.cl = cl;
+                this.marker = new Long(System.currentTimeMillis());
+            } else {
+            
+                boolean found = false;
+                // For each entry in the factoryMap's keySet...
+                for (FactoryManagerCacheKey currentKey : keys) {
+                    ClassLoader curCL = cl;
+                    // For each ClassLoader in the hierarchy starting 
+                    // with the argument ClassLoader...
+                    while (!found && null != curCL) {
+                        // if the ClassLoader at this level in the hierarchy
+                        // is equal to the argument ClassLoader, consider it a match.
+                        found = curCL.equals(currentKey.cl);
+                        // If it's not a match, try the parent in the ClassLoader
+                        // hierarchy.
+                        if (!found) {
+                            curCL = curCL.getParent();
+                        }
+                    }
+                    // Keep searching for another match to detect an unsupported
+                    // deployment scenario.
+                    if (found) {
+                        if (null != currentKey && null != match) {
+                            LOGGER.log(Level.WARNING, "Multiple JSF Applications found on same ClassLoader.  Unable to safely determine which FactoryManager instance to use. Defaulting to first match.");
+                            break;
+                        }
+                        match = currentKey;
+                        this.cl = curCL;
+                    }
+                }
+                if (null != match) {
+                    this.marker = match.marker;
+                    this.context = match.context;
+                }
+            }
+            
+        }
+        
+        private void initFromAppMap(ExternalContext extContext, ClassLoader cl) {
+            Map<String, Object> appMap = extContext.getApplicationMap();
+            
+            Long val = (Long) appMap.get(MARKER_KEY);
+            if (null == val) {
+                this.marker = new Long(System.currentTimeMillis());
+                appMap.put(MARKER_KEY, marker);
+                
+                // If we needed to create a marker, assume that the
+                // argument CL is safe to treat as the web app
+                // ClassLoader.  This assumption allows us 
+                // to bypass the ClassLoader resolution algorithm
+                // in resolveToFirstTimeUsedClassLoader() in all cases
+                // except when the TCCL has been replaced.
+                appMap.put(INIT_TIME_CL_KEY, new Integer(System.identityHashCode(cl)));
+                
+            } else {
+                this.marker = val;
+            }
+            this.cl = resolveToFirstTimeUsedClassLoader(cl, extContext);
+            this.context = extContext.getContext();
+        }
+        
+       /*
+        * Resolve the argument ClassLoader to be the ClassLoader that 
+        * was passed in to the ctor the first time a FactoryManagerCacheKey
+        * was created for this web app.  
+        */
+
+        private ClassLoader resolveToFirstTimeUsedClassLoader(ClassLoader toResolve, ExternalContext extContext) {
+            ClassLoader curCL = toResolve;
+            ClassLoader resolved = null;
+            Map<String, Object> appMap = extContext.getApplicationMap();
+            
+            // See if the argument curCL already is the web app class loader
+            Integer webAppCLHashCode = (Integer) appMap.get(INIT_TIME_CL_KEY);
+            boolean found = false;
+            if (null != webAppCLHashCode) {
+                int toResolveHashCode = System.identityHashCode(curCL);
+                while (!found && null != curCL) {
+                    found = (toResolveHashCode == webAppCLHashCode);
+                    if (!found) {
+                        curCL = curCL.getParent();
+                        toResolveHashCode = System.identityHashCode(curCL);
+                    }
+                }
+            }
+            resolved = found ? curCL : toResolve;
+            
+            return resolved;
+        }
+        
+        // </editor-fold>
+        
+        public ClassLoader getClassLoader() {
+            return cl;
+        }
+        
+        public Object getContext() {
+            return context;
+        }
+        
+        private FactoryManagerCacheKey() {}
+
+        @Override
+        public boolean equals(Object obj) {
+            if (obj == null) {
+                return false;
+            }
+            if (getClass() != obj.getClass()) {
+                return false;
+            }
+            final FactoryManagerCacheKey other = (FactoryManagerCacheKey) obj;
+            if (this.cl != other.cl && (this.cl == null || !this.cl.equals(other.cl))) {
+                return false;
+            }
+            if (this.marker != other.marker && (this.marker == null || !this.marker.equals(other.marker))) {
+                return false;
+            }
+            return true;
+        }
+
+        @Override
+        public int hashCode() {
+            int hash = 7;
+            hash = 97 * hash + (this.cl != null ? this.cl.hashCode() : 0);
+            hash = 97 * hash + (this.marker != null ? this.marker.hashCode() : 0);
+            return hash;
+        }
+
+
+        
+
+    }
+    
+    
+
+} // END FactoryCache
diff --git a/jsf-api/src/main/java/javax/faces/FacesException.java b/jsf-api/src/main/java/javax/faces/FacesException.java
index e8e30d8..cfd2b2d 100644
--- a/jsf-api/src/main/java/javax/faces/FacesException.java
+++ b/jsf-api/src/main/java/javax/faces/FacesException.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -34,7 +38,6 @@
  * holder.
  */
 
-
 package javax.faces;
 
 
diff --git a/jsf-api/src/main/java/javax/faces/FacesWrapper.java b/jsf-api/src/main/java/javax/faces/FacesWrapper.java
index d67f42d..82e1567 100644
--- a/jsf-api/src/main/java/javax/faces/FacesWrapper.java
+++ b/jsf-api/src/main/java/javax/faces/FacesWrapper.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-api/src/main/java/javax/faces/FactoryFinder.java b/jsf-api/src/main/java/javax/faces/FactoryFinder.java
index 335f35e..8b23dfc 100644
--- a/jsf-api/src/main/java/javax/faces/FactoryFinder.java
+++ b/jsf-api/src/main/java/javax/faces/FactoryFinder.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -37,36 +41,16 @@
 package javax.faces;
 
 
-import java.io.BufferedReader;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.IOException;
-import java.io.UnsupportedEncodingException;
+import com.sun.faces.spi.InjectionProvider;
 import java.text.MessageFormat;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
 import java.util.Map;
-import java.util.ResourceBundle;
-import java.util.Arrays;
-import java.util.Enumeration;
-import java.util.concurrent.ConcurrentMap;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.Callable;
-import java.util.concurrent.FutureTask;
-import java.util.concurrent.Future;
-import java.util.concurrent.CancellationException;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.locks.ReentrantReadWriteLock;
 import java.util.logging.Logger;
 import java.util.logging.Level;
-import java.lang.reflect.Constructor;
-import java.net.URL;
-import java.net.URLConnection;
+import java.util.Collection;
 
 
 /**
- * <p><strong class="changed_modified_2_0">FactoryFinder</strong>
+ * <p><strong class="changed_modified_2_0 changed_modified_2_1 changed_modified_2_2">FactoryFinder</strong>
  * implements the standard discovery algorithm for all factory objects
  * specified in the JavaServer Faces APIs.  For a given factory class
  * name, a corresponding implementation class is searched for based on
@@ -83,7 +67,7 @@ import java.net.URLConnection;
  * <li><p>If the JavaServer Faces configuration files named by the
  * <code>javax.faces.CONFIG_FILES</code> <code>ServletContext</code> init
  * parameter contain any <code>factory</code> entries of the given
- * factory class name, those factories are used, with the last one taking
+ * factory class name, those injectionProvider are used, with the last one taking
  * precedence.</p></li> 
 
  * <li><p>If there are any JavaServer Faces configuration files bundled
@@ -94,7 +78,7 @@ import java.net.URLConnection;
 
  * <li><p>If a <code>META-INF/services/{factory-class-name}</code>
  * resource is visible to the web application class loader for the
- * calling application (typically as a result of being present in the
+ * calling application (typically as a injectionProvider of being present in the
  * manifest of a JAR file), its first line is read and assumed to be the
  * name of the factory implementation class to use.</p></li>
 
@@ -103,7 +87,7 @@ import java.net.URLConnection;
 
  * </ul>
 
- * <p>If any of the factories found on any of the steps above happen to
+ * <p>If any of the injectionProvider found on any of the steps above happen to
  * have a one-argument constructor, with argument the type being the
  * abstract factory class, that constructor is invoked, and the previous
  * match is passed to the constructor.  For example, say the container
@@ -154,6 +138,14 @@ public final class FactoryFinder {
          "javax.faces.application.ApplicationFactory";
 
     /**
+     * <p>The property name for the
+     * {@link javax.faces.lifecycle.ClientWindowFactory} class name.</p>
+     * @since 2.2
+     */
+    public final static String CLIENT_WINDOW_FACTORY =
+         "javax.faces.lifecycle.ClientWindowFactory";
+
+    /**
      * <p class="changed_added_2_0">The property name for the {@link
      * javax.faces.context.ExceptionHandlerFactory} class name.</p>
      */
@@ -175,6 +167,33 @@ public final class FactoryFinder {
          "javax.faces.context.FacesContextFactory";
 
     /**
+     * <p class="changed_added_2_1">The property name for the
+     * {@link javax.faces.view.facelets.FaceletCacheFactory} class name.</p>
+     *
+     * @since 2.1
+     */
+    public final static String FACELET_CACHE_FACTORY =
+         "javax.faces.view.facelets.FaceletCacheFactory";
+
+    /**
+     * <p class="changed_added_2_2">The property name for the
+     * {@link javax.faces.context.FlashFactory} class name.</p>
+     * 
+     * @since 2.2
+     */
+    public final static String FLASH_FACTORY =
+         "javax.faces.context.FlashFactory";
+
+    /**
+     * <p class="changed_added_2_2">The property name for the
+     * {@link javax.faces.flow.FlowHandlerFactory} class name.</p>
+     * 
+     * @since 2.2
+     */
+    public final static String FLOW_HANDLER_FACTORY =
+         "javax.faces.flow.FlowHandlerFactory";
+
+    /**
      * <p class="changed_added_2_0">The property name for the {@link
      * javax.faces.context.PartialViewContextFactory} class name.</p>
      */
@@ -218,44 +237,15 @@ public final class FactoryFinder {
 
     // ------------------------------------------------------- Static Variables
 
-    private static final FactoryManagerCache FACTORIES_CACHE =
-          new FactoryManagerCache();
-
-
-    /**
-     * <p>The set of JavaServer Faces factory classes for which the factory
-     * discovery mechanism is supported.  The entries in this list must be 
-     * alphabetically ordered according to the entire string, not just
-     * the last part!</p>
-     */
-    private static final String[] FACTORY_NAMES = {
-         APPLICATION_FACTORY,
-         VISIT_CONTEXT_FACTORY,
-         EXCEPTION_HANDLER_FACTORY,
-         EXTERNAL_CONTEXT_FACTORY,
-         FACES_CONTEXT_FACTORY,
-         LIFECYCLE_FACTORY,
-         VIEW_DECLARATION_LANGUAGE_FACTORY,
-         PARTIAL_VIEW_CONTEXT_FACTORY,
-         RENDER_KIT_FACTORY,
-         TAG_HANDLER_DELEGATE_FACTORY
-    
-    };
-
-    /**
-     * <p>Map of Class instances for the our factory names.</p>
-     */
-    private static Map<String, Class> factoryClasses = null;
+    static final CurrentThreadToServletContext FACTORIES_CACHE;
 
-    private static final Logger LOGGER =
-         Logger.getLogger("javax.faces", "javax.faces.LogStrings");
+    private static final Logger LOGGER;
 
-    // Ensure the factory names are sorted.
-    //
     static {
-        Arrays.sort(FACTORY_NAMES);
-    }
+        FACTORIES_CACHE = new CurrentThreadToServletContext();
 
+        LOGGER = Logger.getLogger("javax.faces", "javax.faces.LogStrings");
+    }
 
     // --------------------------------------------------------- Public Methods
 
@@ -267,10 +257,10 @@ public final class FactoryFinder {
      * Faces factory class, based on the discovery algorithm described
      * in the class description.</p>
      *
-     * <p class="changed_added_2_0">The standard factories and wrappers
+     * <p class="changed_added_2_0">The standard injectionProvider and wrappers
      * in JSF all implement the interface {@link FacesWrapper}.  If the
      * returned <code>Object</code> is an implementation of one of the
-     * standard factories, it must be legal to cast it to an instance of
+     * standard injectionProvider, it must be legal to cast it to an instance of
      * <code>FacesWrapper</code> and call {@link
      * FacesWrapper#getWrapped} on the instance.</p>
      *
@@ -292,14 +282,9 @@ public final class FactoryFinder {
     public static Object getFactory(String factoryName)
          throws FacesException {
 
-        validateFactoryName(factoryName);
-
-        // Identify the web application class loader
-        ClassLoader classLoader = getClassLoader();
-
-        FactoryManager manager =
-              FACTORIES_CACHE.getApplicationFactoryManager(classLoader);
-        return manager.getFactory(classLoader, factoryName);
+        FactoryFinderInstance manager =
+              FACTORIES_CACHE.getApplicationFactoryManager();
+        return manager.getFactory(factoryName);
 
     }
 
@@ -324,13 +309,8 @@ public final class FactoryFinder {
     public static void setFactory(String factoryName,
                                   String implName) {
 
-        validateFactoryName(factoryName);
-
-        // Identify the web application class loader
-        ClassLoader classLoader = getClassLoader();
-
-        FactoryManager manager =
-              FACTORIES_CACHE.getApplicationFactoryManager(classLoader);
+        FactoryFinderInstance manager =
+              FACTORIES_CACHE.getApplicationFactoryManager();
         manager.addFactory(factoryName, implName);
 
     }
@@ -347,468 +327,47 @@ public final class FactoryFinder {
      *                        cannot be identified
      */
     public static void releaseFactories() throws FacesException {
-
-        // Identify the web application class loader
-        ClassLoader cl = getClassLoader();
-
-        FACTORIES_CACHE.removeApplicationFactoryManager(cl);
-
-    }
-
-
-    // -------------------------------------------------------- Private Methods
-
-
-    /**
-     * <p>Identify and return the class loader that is associated with the
-     * calling web application.</p>
-     *
-     * @throws FacesException if the web application class loader
-     *                        cannot be identified
-     */
-    private static ClassLoader getClassLoader() throws FacesException {
-
-        // J2EE 1.3 (and later) containers are required to make the
-        // web application class loader visible through the context
-        // class loader of the current thread.
-        ClassLoader cl = Thread.currentThread().getContextClassLoader();
-        if (cl == null) {
-            throw new FacesException("getContextClassLoader");
-        }
-        return (cl);
-
-    }
-
-
-    /**
-     * <p>Load and return an instance of the specified implementation
-     * class using the following algorithm.</p>
-     * <p/>
-     * <ol>
-     * <p/>
-     * <li><p>If the argument <code>implementations</code> list has
-     * more than one element, or exactly one element, interpret the
-     * last element in the list to be the fully qualified class name of
-     * a class implementing <code>factoryName</code>.  Instantiate that
-     * class and save it for return.  If the
-     * <code>implementations</code> list has only one element, skip
-     * this step.</p></li>
-     * <p/>
-     * <li><p>Look for a resource called
-     * <code>/META-INF/services/<factoryName></code>.  If found,
-     * interpret it as a properties file, and read out the first entry.
-     * Interpret the first entry as a fully qualify class name of a
-     * class that implements <code>factoryName</code>.  If we have an
-     * instantiated factory from the previous step <em>and</em> the
-     * implementing class has a one arg constructor of the type for
-     * <code>factoryName</code>, instantiate it, passing the
-     * instantiated factory from the previous step.  If there is no one
-     * arg constructor, just instantiate the zero arg constructor.  Save
-     * the newly instantiated factory for return, replacing the
-     * instantiated factory from the previous step.</p></li>
-     * <p/>
-     * <li><p>Treat each remaining element in the
-     * <code>implementations</code> list as a fully qualified class name
-     * of a class implementing <code>factoryName</code>.  If the current
-     * element has a one arg constructor of the type for
-     * <code>factoryName</code>, instantiate it, passing the
-     * instantiated factory from the previous or step iteration.  If
-     * there is no one arg constructor, just instantiate the zero arg
-     * constructor, replacing the instantiated factory from the previous
-     * step or iteration.</p></li>
-     * <p/>
-     * <li><p>Return the saved factory</p></li>
-     * <p/>
-     * </ol>
-     *
-     * @param classLoader     Class loader for the web application that will
-     *                        be loading the implementation class
-     * @param implementations A List of implementations for a given
-     *                        factory class.
-     * @throws FacesException if the specified implementation class
-     *                        cannot be loaded
-     * @throws FacesException if an instance of the specified implementation
-     *                        class cannot be instantiated
-     */
-    private static Object getImplementationInstance(ClassLoader classLoader,
-                                                    String factoryName,
-                                                    List implementations)
-    throws FacesException {
-
-        Object result = null;
-        String curImplClass;
-        int len;
-
-        // step 1.
-        if (null != implementations &&
-             (1 < (len = implementations.size()) || 1 == len)) {
-            curImplClass = (String) implementations.remove(len - 1);
-            // since this is the hard coded implementation default,
-            // there is no preceding implementation, so don't bother
-            // with a non-zero-arg ctor.
-            result = getImplGivenPreviousImpl(classLoader, factoryName,
-                 curImplClass, null);
-        }
-
-        // step 2.
-        List<String> fromServices = getImplNameFromServices(classLoader, factoryName);
-        if (fromServices != null) {
-            for (String name : fromServices) {
-                result = getImplGivenPreviousImpl(classLoader,
-                                                  factoryName,
-                                                  name,
-                                                  result);
-            }
-        }        
-
-        // step 3.
-        if (null != implementations) {
-            for (len = (implementations.size() - 1); 0 <= len; len--) {
-                curImplClass = (String) implementations.remove(len);
-                result = getImplGivenPreviousImpl(classLoader, factoryName,
-                     curImplClass, result);
-            }
-        }
-
-        return result;
-
-    }
-
-
-    /**
-     * <p>Perform the logic to get the implementation class for the
-     * second step of {@link FactoryFinder#getImplementationInstance(ClassLoader, String, java.util.List)}.</p>
-     */
-    private static List<String> getImplNameFromServices(ClassLoader classLoader,
-                                                        String factoryName) {
-
-        // Check for a services definition
-        List<String> result = null;
-        String resourceName = "META-INF/services/" + factoryName;
-        InputStream stream;
-        BufferedReader reader = null;
-        try {
-            Enumeration<URL> e = classLoader.getResources(resourceName);
-            while (e.hasMoreElements()) {
-                URL url = e.nextElement();
-                URLConnection conn = url.openConnection();
-                conn.setUseCaches(false);
-                stream = conn.getInputStream();
-                if (stream != null) {
-                    // Deal with systems whose native encoding is possibly
-                    // different from the way that the services entry was created
-                    try {
-                        reader =
-                              new BufferedReader(new InputStreamReader(stream,
-                                                                       "UTF-8"));
-                        if (result == null) {
-                            result = new ArrayList<String>(3);
-                        }
-                        result.add(reader.readLine());
-                    } catch (UnsupportedEncodingException uee) {
-                        reader =
-                              new BufferedReader(new InputStreamReader(stream));
-                    } finally {
-                        if (reader != null) {
-                            reader.close();
-                            reader = null;
-                        }
-                        if (stream != null) {
-                            stream.close();
-                            //noinspection UnusedAssignment
-                            stream = null;
+        synchronized(FACTORIES_CACHE) {
+
+            if (!FACTORIES_CACHE.applicationMap.isEmpty()) {
+
+                FactoryFinderInstance fm = FACTORIES_CACHE.getApplicationFactoryManager();
+                InjectionProvider provider = fm.getInjectionProvider();
+                if (null != provider) {
+                    Collection factories = null;
+                    for (Map.Entry entry : 
+                            FACTORIES_CACHE.applicationMap.entrySet()) {
+                        FactoryFinderInstance cur = (FactoryFinderInstance) entry.getValue();
+                        factories = cur.getFactories();
+                        for (Object curFactory : factories) {
+                            try {
+                                provider.invokePreDestroy(curFactory);
+                            } catch (Exception ex) {
+                                if (LOGGER.isLoggable(Level.SEVERE)) {
+                                    String message = MessageFormat.format("Unable to invoke @PreDestroy annotated methods on {0}.", 
+                                            curFactory);
+                                    LOGGER.log(Level.SEVERE, message, ex);
+                                }
+                            }
                         }
                     }
-
+                } else {
+                    if (LOGGER.isLoggable(Level.SEVERE)) {
+                        LOGGER.log(Level.SEVERE, "Unable to call @PreDestroy annotated methods because no InjectionProvider can be found. Does this container implement the Mojarra Injection SPI?");
+                    }
                 }
             }
-        } catch (IOException e) {
-            if (LOGGER.isLoggable(Level.SEVERE)) {
-                LOGGER.log(Level.SEVERE,
-                           e.toString(),
-                           e);
-            }
-        } catch (SecurityException e) {
-            if (LOGGER.isLoggable(Level.SEVERE)) {
-                LOGGER.log(Level.SEVERE,
-                           e.toString(),
-                           e);
-            }
-        }
-        return result;
-
-    }
-
-
-    /**
-     * <p>Implement the decorator pattern for the factory
-     * implementation.</p>
-     * <p/>
-     * <p>If <code>previousImpl</code> is non-<code>null</code> and the
-     * class named by the argument <code>implName</code> has a one arg
-     * contstructor of type <code>factoryName</code>, instantiate it,
-     * passing previousImpl to the constructor.</p>
-     * <p/>
-     * <p>Otherwise, we just instantiate and return
-     * <code>implName</code>.</p>
-     *
-     * @param classLoader  the ClassLoader from which to load the class
-     * @param factoryName  the fully qualified class name of the factory.
-     * @param implName     the fully qualified class name of a class that
-     *                     implements the factory.
-     * @param previousImpl if non-<code>null</code>, the factory
-     *                     instance to be passed to the constructor of the new factory.
-     */
-    private static Object getImplGivenPreviousImpl(ClassLoader classLoader,
-                                                   String factoryName,
-                                                   String implName,
-                                                   Object previousImpl) {
-        Class clazz;
-        Class factoryClass = null;
-        Class[] getCtorArg;
-        Object[] newInstanceArgs = new Object[1];
-        Constructor ctor;
-        Object result = null;
-
-        // if we have a previousImpl and the appropriate one arg ctor.
-        if ((null != previousImpl) &&
-             (null != (factoryClass = getFactoryClass(factoryName)))) {
-            try {
-                clazz = Class.forName(implName, false, classLoader);
-                getCtorArg = new Class[1];
-                getCtorArg[0] = factoryClass;
-                ctor = clazz.getConstructor(getCtorArg);
-                newInstanceArgs[0] = previousImpl;
-                result = ctor.newInstance(newInstanceArgs);
-            }
-            catch (NoSuchMethodException nsme) {
-                // fall through to "zero-arg-ctor" case
-                factoryClass = null;
-            }
-            catch (Exception e) {
-                throw new FacesException(implName, e);
-            }
-        }
-        if (null == previousImpl || null == factoryClass) {
-            // we have either no previousImpl or no appropriate one arg
-            // ctor.
-            try {
-                clazz = Class.forName(implName, false, classLoader);
-                // since this is the hard coded implementation default,
-                // there is no preceding implementation, so don't bother
-                // with a non-zero-arg ctor.
-                result = clazz.newInstance();
-            } catch (Exception e) {
-                throw new FacesException(implName, e);
-            }
-        }
-        return result;
-
-    }
-
 
-    /**
-     * @return the <code>java.lang.Class</code> for the argument
-     *         factory.
-     */
-    private static Class getFactoryClass(String factoryClassName) {
-
-        if (null == factoryClasses) {
-            factoryClasses = new HashMap<String, Class>(FACTORY_NAMES.length);
-            factoryClasses.put(APPLICATION_FACTORY,
-                 javax.faces.application.ApplicationFactory.class);
-            factoryClasses.put(EXCEPTION_HANDLER_FACTORY,
-                 javax.faces.context.ExceptionHandlerFactory.class);
-            factoryClasses.put(EXTERNAL_CONTEXT_FACTORY,
-                 javax.faces.context.ExternalContextFactory.class);
-            factoryClasses.put(FACES_CONTEXT_FACTORY,
-                 javax.faces.context.FacesContextFactory.class);
-            factoryClasses.put(VISIT_CONTEXT_FACTORY,
-                 javax.faces.component.visit.VisitContextFactory.class);
-            factoryClasses.put(LIFECYCLE_FACTORY,
-                 javax.faces.lifecycle.LifecycleFactory.class);
-            factoryClasses.put(PARTIAL_VIEW_CONTEXT_FACTORY,
-                 javax.faces.context.PartialViewContextFactory.class);
-            factoryClasses.put(RENDER_KIT_FACTORY,
-                 javax.faces.render.RenderKitFactory.class);
-            factoryClasses.put(VIEW_DECLARATION_LANGUAGE_FACTORY,
-                 javax.faces.view.ViewDeclarationLanguageFactory.class);
-            factoryClasses.put(TAG_HANDLER_DELEGATE_FACTORY,
-                 javax.faces.view.facelets.TagHandlerDelegateFactory.class);
+            FACTORIES_CACHE.removeApplicationFactoryManager();
         }
-        return factoryClasses.get(factoryClassName);
-
     }
 
 
-    /**
-     * Ensure the provided factory name is valid.
-     */
-    private static void validateFactoryName(String factoryName) {
-
-        if (factoryName == null) {
-            throw new NullPointerException();
-        }
-        if (Arrays.binarySearch(FACTORY_NAMES, factoryName) < 0) {
-            throw new IllegalArgumentException(factoryName);
-        }
+    // -------------------------------------------------------- Private Methods
 
+    // Called via reflection from automated tests.
+    private static void reInitializeFactoryManager() {
+        FACTORIES_CACHE.resetSpecialInitializationCaseFlags();
     }
 
-
-    // ----------------------------------------------------------- Inner Classes
-
-
-    /**
-     * Managed the mappings between a web application and its configured
-     * factories.
-     */
-    private static final class FactoryManagerCache {
-
-        private ConcurrentMap<ClassLoader,Future<FactoryManager>> applicationMap =
-              new ConcurrentHashMap<ClassLoader, Future<FactoryManager>>();
-
-
-        // ------------------------------------------------------ Public Methods
-
-
-        private FactoryManager getApplicationFactoryManager(ClassLoader cl) {
-
-            while (true) {
-                Future<FactoryManager> factories = applicationMap.get(cl);
-                if (factories == null) {
-                    Callable<FactoryManager> callable =
-                          new Callable<FactoryManager>() {
-                              public FactoryManager call()
-                                    throws Exception {
-                                  return new FactoryManager();
-                              }
-                          };
-
-                    FutureTask<FactoryManager> ft =
-                          new FutureTask<FactoryManager>(callable);
-                    factories = applicationMap.putIfAbsent(cl, ft);
-                    if (factories == null) {
-                        factories = ft;
-                        ft.run();
-                    }
-                }
-
-                try {
-                    return factories.get();
-                } catch (CancellationException ce) {
-                    if (LOGGER.isLoggable(Level.FINEST)) {
-                        LOGGER.log(Level.FINEST,
-                                   ce.toString(),
-                                   ce);
-                    }
-                    applicationMap.remove(cl);
-                } catch (InterruptedException ie) {
-                    if (LOGGER.isLoggable(Level.FINEST)) {
-                        LOGGER.log(Level.FINEST,
-                                   ie.toString(),
-                                   ie);
-                    }
-                    applicationMap.remove(cl);
-                } catch (ExecutionException ee) {
-                    throw new FacesException(ee);
-                }
-
-            }
-
-        }
-
-
-        public void removeApplicationFactoryManager(ClassLoader cl) {
-
-            applicationMap.remove(cl);
-
-        }
-
-    } // END FactoryCache
-
-
-    /**
-     * Maintains the factories for a single web application.
-     */
-    private static final class FactoryManager {
-
-        private final Map<String,Object> factories;
-        private final ReentrantReadWriteLock lock;
-
-
-        // -------------------------------------------------------- Consturctors
-
-
-        public FactoryManager() {
-            factories = new HashMap<String,Object>();
-            for (String name : FACTORY_NAMES) {
-                factories.put(name, new ArrayList(4));
-            }
-            lock = new ReentrantReadWriteLock(true);
-        }
-
-
-        // ------------------------------------------------------ Public Methods
-
-
-        public void addFactory(String factoryName, String implementation) {
-
-            Object result = factories.get(factoryName);
-            lock.writeLock().lock();
-            try {
-                if (result instanceof List) {
-                    TypedCollections.dynamicallyCastList((List) result, String.class).add(0, implementation);
-                }
-            } finally {
-                lock.writeLock().unlock();
-            }
-        }
-
-
-        public Object getFactory(ClassLoader cl, String factoryName) {
-
-            Object factoryOrList;
-            lock.readLock().lock();
-            try {
-                factoryOrList = factories.get(factoryName);
-                if (!(factoryOrList instanceof List)) {
-                    return factoryOrList;
-                }
-            } finally {
-                lock.readLock().unlock();
-            }
-
-            // factory hasn't been constructed
-            lock.writeLock().lock();
-            try {
-                // double check the current value.  Another thread
-                // may have completed the initialization by the time
-                // this thread entered this block
-                factoryOrList = factories.get(factoryName);
-                if (!(factoryOrList instanceof List)) {
-                    return factoryOrList;
-                }
-                Object factory = getImplementationInstance(cl,
-                                                           factoryName,
-                                                           (List) factoryOrList);
-
-                if (factory == null) {
-                    ResourceBundle rb = LOGGER.getResourceBundle();
-                    String message = rb.getString("severe.no_factory");
-                    message = MessageFormat.format(message, factoryName);
-                    throw new IllegalStateException(message);
-                }
-
-                // Record and return the new instance
-                factories.put(factoryName, factory);
-                return (factory);
-            } finally {
-                lock.writeLock().unlock();
-            }
-        }
-
-    } // END FactoryManager
-
-
 }
diff --git a/jsf-api/src/main/java/javax/faces/FactoryFinderInstance.java b/jsf-api/src/main/java/javax/faces/FactoryFinderInstance.java
new file mode 100644
index 0000000..07f2036
--- /dev/null
+++ b/jsf-api/src/main/java/javax/faces/FactoryFinderInstance.java
@@ -0,0 +1,536 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+
+package javax.faces;
+
+import com.sun.faces.spi.InjectionProvider;
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.UnsupportedEncodingException;
+import java.lang.reflect.Constructor;
+import java.net.URL;
+import java.net.URLConnection;
+import java.text.MessageFormat;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.ResourceBundle;
+import java.util.concurrent.locks.ReentrantReadWriteLock;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.faces.context.FacesContext;
+
+final class FactoryFinderInstance {
+    private final Map<String, Object> factories;
+    private final Map<String, List<String>> savedFactoryNames;
+    private final ReentrantReadWriteLock lock;
+    private static final String INJECTION_PROVIDER_KEY = FactoryFinder.class.getPackage().getName() + "INJECTION_PROVIDER_KEY";
+
+    /**
+     * <p>The set of JavaServer Faces factory classes for which the factory
+     * discovery mechanism is supported.  The entries in this list must be 
+     * alphabetically ordered according to the entire string of the
+     * *value* of each of the literals, not just
+     * the last part of the literal!</p>
+     */
+    private static final String[] FACTORY_NAMES;
+    
+    /**
+     * <p>Map of Class instances for the our factory names.</p>
+     */
+    private final static Map<String, Class> FACTORY_CLASSES;
+    
+    private static final Logger LOGGER;
+
+    static {
+        
+        Map<String, Class> buildUpFactoryClasses; 
+        buildUpFactoryClasses = new HashMap<String, Class>();
+        buildUpFactoryClasses.put(FactoryFinder.APPLICATION_FACTORY,
+                 javax.faces.application.ApplicationFactory.class);
+        buildUpFactoryClasses.put(FactoryFinder.VISIT_CONTEXT_FACTORY,
+                 javax.faces.component.visit.VisitContextFactory.class);
+        buildUpFactoryClasses.put(FactoryFinder.EXCEPTION_HANDLER_FACTORY,
+                 javax.faces.context.ExceptionHandlerFactory.class);
+        buildUpFactoryClasses.put(FactoryFinder.EXTERNAL_CONTEXT_FACTORY,
+                 javax.faces.context.ExternalContextFactory.class);
+        buildUpFactoryClasses.put(FactoryFinder.FACES_CONTEXT_FACTORY,
+                 javax.faces.context.FacesContextFactory.class);
+        buildUpFactoryClasses.put(FactoryFinder.FLASH_FACTORY,
+                 javax.faces.context.FlashFactory.class);
+        buildUpFactoryClasses.put(FactoryFinder.PARTIAL_VIEW_CONTEXT_FACTORY,
+                 javax.faces.context.PartialViewContextFactory.class);
+        buildUpFactoryClasses.put(FactoryFinder.LIFECYCLE_FACTORY,
+                 javax.faces.lifecycle.LifecycleFactory.class);
+        buildUpFactoryClasses.put(FactoryFinder.CLIENT_WINDOW_FACTORY,
+                 javax.faces.lifecycle.ClientWindowFactory.class);
+        buildUpFactoryClasses.put(FactoryFinder.RENDER_KIT_FACTORY,
+                 javax.faces.render.RenderKitFactory.class);
+        buildUpFactoryClasses.put(FactoryFinder.VIEW_DECLARATION_LANGUAGE_FACTORY,
+                 javax.faces.view.ViewDeclarationLanguageFactory.class);
+        buildUpFactoryClasses.put(FactoryFinder.FACELET_CACHE_FACTORY,
+                 javax.faces.view.facelets.FaceletCacheFactory.class);
+        buildUpFactoryClasses.put(FactoryFinder.TAG_HANDLER_DELEGATE_FACTORY,
+                 javax.faces.view.facelets.TagHandlerDelegateFactory.class);
+        buildUpFactoryClasses.put(FactoryFinder.FLOW_HANDLER_FACTORY,
+                 javax.faces.flow.FlowHandlerFactory.class);
+        FACTORY_CLASSES = Collections.unmodifiableMap(buildUpFactoryClasses);
+
+        FACTORY_NAMES = new String [] {
+            FactoryFinder.APPLICATION_FACTORY,
+            FactoryFinder.VISIT_CONTEXT_FACTORY,
+            FactoryFinder.EXCEPTION_HANDLER_FACTORY,
+            FactoryFinder.EXTERNAL_CONTEXT_FACTORY,
+            FactoryFinder.FACES_CONTEXT_FACTORY,
+            FactoryFinder.FLASH_FACTORY,
+            FactoryFinder.FLOW_HANDLER_FACTORY,
+            FactoryFinder.PARTIAL_VIEW_CONTEXT_FACTORY,
+            FactoryFinder.CLIENT_WINDOW_FACTORY,
+            FactoryFinder.LIFECYCLE_FACTORY,
+            FactoryFinder.RENDER_KIT_FACTORY,
+            FactoryFinder.VIEW_DECLARATION_LANGUAGE_FACTORY,
+            FactoryFinder.FACELET_CACHE_FACTORY,
+            FactoryFinder.TAG_HANDLER_DELEGATE_FACTORY
+        };
+
+        // Optimize performance of validateFactoryName
+        Arrays.sort(FACTORY_NAMES);
+        
+        LOGGER = Logger.getLogger("javax.faces", "javax.faces.LogStrings");
+    }
+    
+    
+    // -------------------------------------------------------- Consturctors
+    public FactoryFinderInstance() {
+        lock = new ReentrantReadWriteLock(true);
+        factories = new HashMap<String, Object>();
+        savedFactoryNames = new HashMap<String, List<String>>();
+        for (String name : FACTORY_NAMES) {
+            factories.put(name, new ArrayList(4));
+        }
+        copyInjectionProviderFromFacesContext();
+    }
+
+    public FactoryFinderInstance(FactoryFinderInstance toCopy) {
+        lock = new ReentrantReadWriteLock(true);
+        factories = new HashMap<String, Object>();
+        savedFactoryNames = new HashMap<String, List<String>>();
+        factories.putAll(toCopy.savedFactoryNames);
+        copyInjectionProviderFromFacesContext();
+    }
+
+    private void copyInjectionProviderFromFacesContext() {
+        InjectionProvider injectionProvider = null;
+        FacesContext context = FacesContext.getCurrentInstance();
+        if (null != context) {
+            injectionProvider = (InjectionProvider) context.getAttributes().get("com.sun.faces.config.ConfigManager_INJECTION_PROVIDER_TASK");
+        }
+        if (null != injectionProvider) {
+            factories.put(INJECTION_PROVIDER_KEY, injectionProvider);
+        } else {
+            if (LOGGER.isLoggable(Level.SEVERE)) {
+                LOGGER.log(Level.SEVERE, "Unable to obtain InjectionProvider from init time FacesContext. Does this container implement the Mojarra Injection SPI?");
+            }
+        }
+    }
+
+    /**
+     * <p>Load and return an instance of the specified implementation
+     * class using the following algorithm.</p>
+     * <p/>
+     * <ol>
+     * <p/>
+     * <li><p>If the argument <code>implementations</code> list has
+     * more than one element, or exactly one element, interpret the
+     * last element in the list to be the fully qualified class name of
+     * a class implementing <code>factoryName</code>.  Instantiate that
+     * class and save it for return.  If the
+     * <code>implementations</code> list has only one element, skip
+     * this step.</p></li>
+     * <p/>
+     * <li><p>Look for a resource called
+     * <code>/META-INF/services/<factoryName></code>.  If found,
+     * interpret it as a properties file, and read out the first entry.
+     * Interpret the first entry as a fully qualify class name of a
+     * class that implements <code>factoryName</code>.  If we have an
+     * instantiated factory from the previous step <em>and</em> the
+     * implementing class has a one arg constructor of the type for
+     * <code>factoryName</code>, instantiate it, passing the
+     * instantiated factory from the previous step.  If there is no one
+     * arg constructor, just instantiate the zero arg constructor.  Save
+     * the newly instantiated factory for return, replacing the
+     * instantiated factory from the previous step.</p></li>
+     * <p/>
+     * <li><p>Treat each remaining element in the
+     * <code>implementations</code> list as a fully qualified class name
+     * of a class implementing <code>factoryName</code>.  If the currentKeyrent
+ element has a one arg constructor of the type for
+ <code>factoryName</code>, instantiate it, passing the
+     * instantiated factory from the previous or step iteration.  If
+     * there is no one arg constructor, just instantiate the zero arg
+     * constructor, replacing the instantiated factory from the previous
+     * step or iteration.</p></li>
+     * <p/>
+     * <li><p>Return the saved factory</p></li>
+     * <p/>
+     * </ol>
+     *
+     * @param classLoader     Class loader for the web application that will
+     *                        be loading the implementation class
+     * @param implementations A List of implementations for a given
+     *                        factory class.
+     * @throws FacesException if the specified implementation class
+     *                        cannot be loaded
+     * @throws FacesException if an instance of the specified implementation
+     *                        class cannot be instantiated
+     */
+    private Object getImplementationInstance(ClassLoader classLoader,
+                                             String factoryName,
+                                             List implementations)
+    throws FacesException {
+
+        Object result = null;
+        String curImplClass;
+        int len;
+
+        // step 1.
+        if (null != implementations &&
+             (1 < (len = implementations.size()) || 1 == len)) {
+            curImplClass = (String) implementations.remove(len - 1);
+            // since this is the hard coded implementation default,
+            // there is no preceding implementation, so don't bother
+            // with a non-zero-arg ctor.
+            result = getImplGivenPreviousImpl(classLoader, factoryName,
+                 curImplClass, null);
+        }
+
+        // step 2.
+        List<String> fromServices = getImplNameFromServices(classLoader, factoryName);
+        if (fromServices != null) {
+            for (String name : fromServices) {
+                result = getImplGivenPreviousImpl(classLoader,
+                                                  factoryName,
+                                                  name,
+                                                  result);
+            }
+        }        
+
+        // step 3.
+        if (null != implementations) {
+            for (len = (implementations.size() - 1); 0 <= len; len--) {
+                curImplClass = (String) implementations.remove(len);
+                result = getImplGivenPreviousImpl(classLoader, factoryName,
+                     curImplClass, result);
+            }
+        }
+
+        return result;
+
+    }
+    
+
+    /**
+     * <p>Perform the logic to get the implementation class for the
+     * second step of {@link FactoryFinder#getImplementationInstance(ClassLoader, String, java.util.List)}.</p>
+     */
+    private List<String> getImplNameFromServices(ClassLoader classLoader,
+                                                        String factoryName) {
+
+        // Check for a services definition
+        List<String> result = null;
+        String resourceName = "META-INF/services/" + factoryName;
+        InputStream stream;
+        BufferedReader reader = null;
+        try {
+            Enumeration<URL> e = classLoader.getResources(resourceName);
+            while (e.hasMoreElements()) {
+                URL url = e.nextElement();
+                URLConnection conn = url.openConnection();
+                conn.setUseCaches(false);
+                stream = conn.getInputStream();
+                if (stream != null) {
+                    // Deal with systems whose native encoding is possibly
+                    // different from the way that the services entry was created
+                    try {
+                        reader =
+                              new BufferedReader(new InputStreamReader(stream,
+                                                                       "UTF-8"));
+                        if (result == null) {
+                            result = new ArrayList<String>(3);
+                        }
+                        result.add(reader.readLine());
+                    } catch (UnsupportedEncodingException uee) {
+                        // The DM_DEFAULT_ENCODING warning is acceptable here
+                        // because we explicitly *want* to use the Java runtime's
+                        // default encoding.
+                        reader =
+                              new BufferedReader(new InputStreamReader(stream));
+                    } finally {
+                        if (reader != null) {
+                            reader.close();
+                            reader = null;
+                        }
+                        if (stream != null) {
+                            stream.close();
+                            //noinspection UnusedAssignment
+                            stream = null;
+                        }
+                    }
+
+                }
+            }
+        } catch (IOException e) {
+            if (LOGGER.isLoggable(Level.SEVERE)) {
+                LOGGER.log(Level.SEVERE,
+                           e.toString(),
+                           e);
+            }
+        } catch (SecurityException e) {
+            if (LOGGER.isLoggable(Level.SEVERE)) {
+                LOGGER.log(Level.SEVERE,
+                           e.toString(),
+                           e);
+            }
+        }
+        return result;
+
+    }
+
+
+    /**
+     * <p>Implement the decorator pattern for the factory
+     * implementation.</p>
+     * <p/>
+     * <p>If <code>previousImpl</code> is non-<code>null</code> and the
+     * class named by the argument <code>implName</code> has a one arg
+     * contstructor of type <code>factoryName</code>, instantiate it,
+     * passing previousImpl to the constructor.</p>
+     * <p/>
+     * <p>Otherwise, we just instantiate and return
+     * <code>implName</code>.</p>
+     *
+     * @param classLoader  the ClassLoader from which to load the class
+     * @param factoryName  the fully qualified class name of the factory.
+     * @param implName     the fully qualified class name of a class that
+     *                     implements the factory.
+     * @param previousImpl if non-<code>null</code>, the factory
+     *                     instance to be passed to the constructor of the new factory.
+     */
+    private Object getImplGivenPreviousImpl(ClassLoader classLoader,
+                                                   String factoryName,
+                                                   String implName,
+                                                   Object previousImpl) {
+        Class clazz;
+        Class factoryClass = null;
+        Class[] getCtorArg;
+        Object[] newInstanceArgs = new Object[1];
+        Constructor ctor;
+        Object result = null;
+        InjectionProvider provider = null;
+
+        // if we have a previousImpl and the appropriate one arg ctor.
+        if ((null != previousImpl) &&
+             (null != (factoryClass = getFactoryClass(factoryName)))) {
+            try {
+                clazz = Class.forName(implName, false, classLoader);
+                getCtorArg = new Class[1];
+                getCtorArg[0] = factoryClass;
+                ctor = clazz.getConstructor(getCtorArg);
+                newInstanceArgs[0] = previousImpl;
+                result = ctor.newInstance(newInstanceArgs);
+                
+                provider = getInjectionProvider();
+                if (null != provider) {
+                    provider.inject(result);
+                    provider.invokePostConstruct(result);
+                } else {
+                    if (LOGGER.isLoggable(Level.SEVERE)) {
+                        LOGGER.log(Level.SEVERE, "Unable to inject {0} because no InjectionProvider can be found. Does this container implement the Mojarra Injection SPI?", result);
+                    }
+                }
+                
+                
+            }
+            catch (NoSuchMethodException nsme) {
+                // fall through to "zero-arg-ctor" case
+                factoryClass = null;
+            }
+            catch (Exception e) {
+                throw new FacesException(implName, e);
+            }
+        }
+        if (null == previousImpl || null == factoryClass) {
+            // we have either no previousImpl or no appropriate one arg
+            // ctor.
+            try {
+                clazz = Class.forName(implName, false, classLoader);
+                // since this is the hard coded implementation default,
+                // there is no preceding implementation, so don't bother
+                // with a non-zero-arg ctor.
+                result = clazz.newInstance();
+            } catch (Exception e) {
+                throw new FacesException(implName, e);
+            }
+        }
+        return result;
+
+    }
+
+    /**
+     * @return the <code>java.lang.Class</code> for the argument
+     *         factory.
+     */
+    private Class getFactoryClass(String factoryClassName) {
+
+        return FACTORY_CLASSES.get(factoryClassName);
+
+    }
+
+    // ------------------------------------------------------ Public Methods
+    public Collection<Object> getFactories() {
+        return factories.values();
+    }
+
+    public void addFactory(String factoryName, String implementation) {
+        validateFactoryName(factoryName);
+        
+        Object result = factories.get(factoryName);
+        lock.writeLock().lock();
+        try {
+            if (result instanceof List) {
+                TypedCollections.dynamicallyCastList((List) result, String.class).add(0, implementation);
+            }
+        } finally {
+            lock.writeLock().unlock();
+        }
+    }
+
+    InjectionProvider getInjectionProvider() {
+        InjectionProvider result = (InjectionProvider) factories.get(INJECTION_PROVIDER_KEY);
+        return result;
+    }
+
+    void clearInjectionProvider() {
+        factories.remove(INJECTION_PROVIDER_KEY);
+    }
+
+    public Object getFactory(String factoryName) {
+        validateFactoryName(factoryName);
+        
+        Object factoryOrList;
+        lock.readLock().lock();
+        try {
+            factoryOrList = factories.get(factoryName);
+            if (!(factoryOrList instanceof List)) {
+                return factoryOrList;
+            }
+        } finally {
+            lock.readLock().unlock();
+        }
+        // factory hasn't been constructed
+        lock.writeLock().lock();
+        try {
+            // double check the current value.  Another thread
+            // may have completed the initialization by the time
+            // this thread entered this block
+            factoryOrList = factories.get(factoryName);
+            if (!(factoryOrList instanceof List)) {
+                return factoryOrList;
+            }
+            savedFactoryNames.put(factoryName, new ArrayList((List) factoryOrList));
+            ClassLoader cl = getClassLoader();
+            
+            Object factory = getImplementationInstance(cl, factoryName, (List) factoryOrList);
+            if (factory == null) {
+                ResourceBundle rb = LOGGER.getResourceBundle();
+                String message = rb.getString("severe.no_factory");
+                message = MessageFormat.format(message, factoryName);
+                if (LOGGER.isLoggable(Level.SEVERE)) {
+                    LOGGER.log(Level.SEVERE, message);
+                }
+                factory = FactoryFinder.FACTORIES_CACHE.getFallbackFactory(this, factoryName);
+                if (null == factory) {
+                    message = rb.getString("severe.no_factory_backup_failed");
+                    message = MessageFormat.format(message, factoryName);
+                    throw new IllegalStateException(message);
+                }
+            }
+            // Record and return the new instance
+            factories.put(factoryName, factory);
+            return factory;
+        } finally {
+            lock.writeLock().unlock();
+        }
+    }
+    
+    private ClassLoader getClassLoader() throws FacesException {
+
+        // J2EE 1.3 (and later) containers are required to make the
+        // web application class loader visible through the context
+        // class loader of the current thread.
+        ClassLoader cl = Thread.currentThread().getContextClassLoader();
+        if (cl == null) {
+            throw new FacesException("getContextClassLoader");
+        }
+        return (cl);
+
+    }
+    
+    
+    private void validateFactoryName(String factoryName) {
+
+        if (factoryName == null) {
+            throw new NullPointerException();
+        }
+        if (Arrays.binarySearch(FACTORY_NAMES, factoryName) < 0) {
+            throw new IllegalArgumentException(factoryName);
+        }
+
+    }
+    
+} // END FactoryFinderInstance
diff --git a/jsf-api/src/main/java/javax/faces/LogStrings.properties b/jsf-api/src/main/java/javax/faces/LogStrings.properties
index 503f23b..0ed1159 100644
--- a/jsf-api/src/main/java/javax/faces/LogStrings.properties
+++ b/jsf-api/src/main/java/javax/faces/LogStrings.properties
@@ -1,27 +1,31 @@
 #
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 #
-# Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+# Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
 #
 # The contents of this file are subject to the terms of either the GNU
 # General Public License Version 2 only ("GPL") or the Common Development
 # and Distribution License("CDDL") (collectively, the "License").  You
-# may not use this file except in compliance with the License. You can obtain
-# a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
-# or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
 # language governing permissions and limitations under the License.
 #
 # When distributing the software, include this License Header Notice in each
-# file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
-# Sun designates this particular file as subject to the "Classpath" exception
-# as provided by Sun in the GPL Version 2 section of the License file that
-# accompanied this code.  If applicable, add the following below the License
-# Header, with the fields enclosed by brackets [] replaced by your own
-# identifying information: "Portions Copyrighted [year]
-# [name of copyright owner]"
+# file and include the License file at packager/legal/LICENSE.txt.
 #
-# Contributor(s):
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
 #
+# Contributor(s):
 # If you wish your version of this file to be governed by only the CDDL or
 # only the GPL Version 2, indicate your decision by adding "[Contributor]
 # elects to include this software in this distribution under the [CDDL or GPL
@@ -42,7 +46,8 @@
 
 
 # PACKAGE javax.faces ----------------------------------------------------------
-severe.no_factory= Application was not properly initialized at startup, could not find Factory: {0}
+severe.no_factory= Application was not properly initialized at startup, could not find Factory: {0}. Attempting to find backup.
+severe.no_factory_backup_failed= Could not find backup for factory {0}. 
 
 
 # PACKAGE javax.faces.application ----------------------------------------------
@@ -79,9 +84,9 @@ severe.event.exception_invoking_processaction=Received ''{0}'' when invoking act
 
 
 # PACKAGE javax.faces.webapp ---------------------------------------------------
+warning.webapp.facesservlet.init_invalid_http_method=The runtime was configured to permit HTTP method {0} but that is not one of {1}.  Note that HTTP method names are case sensitive.
 severe.webapp.facesservlet.init_failed=Initialization of the JSF runtime either failed or did not occur.  Review the server''s log for details.
 servere.webapp.prejsf2.exception.handler.log_before={0} caught during beforePhase() processing of {1} : UIComponent-ClientId={2}, Message={3}
 servere.webapp.prejsf2.exception.handler.log_after={0} caught during afterPhase() processing of {1} : UIComponent-ClientId={2}, Message={3}
 servere.webapp.prejsf2.exception.handler.log={0} caught during processing of {1} : UIComponent-ClientId={2}, Message={3}
 
-
diff --git a/jsf-api/src/main/java/javax/faces/LogStrings_de.properties b/jsf-api/src/main/java/javax/faces/LogStrings_de.properties
index 46e74fb..e37c07d 100644
--- a/jsf-api/src/main/java/javax/faces/LogStrings_de.properties
+++ b/jsf-api/src/main/java/javax/faces/LogStrings_de.properties
@@ -1,27 +1,31 @@
 #
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 #
-# Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+# Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
 #
 # The contents of this file are subject to the terms of either the GNU
 # General Public License Version 2 only ("GPL") or the Common Development
 # and Distribution License("CDDL") (collectively, the "License").  You
-# may not use this file except in compliance with the License. You can obtain
-# a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
-# or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
 # language governing permissions and limitations under the License.
 #
 # When distributing the software, include this License Header Notice in each
-# file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
-# Sun designates this particular file as subject to the "Classpath" exception
-# as provided by Sun in the GPL Version 2 section of the License file that
-# accompanied this code.  If applicable, add the following below the License
-# Header, with the fields enclosed by brackets [] replaced by your own
-# identifying information: "Portions Copyrighted [year]
-# [name of copyright owner]"
+# file and include the License file at packager/legal/LICENSE.txt.
 #
-# Contributor(s):
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
 #
+# Contributor(s):
 # If you wish your version of this file to be governed by only the CDDL or
 # only the GPL Version 2, indicate your decision by adding "[Contributor]
 # elects to include this software in this distribution under the [CDDL or GPL
@@ -42,7 +46,8 @@
 
 
 # PACKAGE javax.faces ----------------------------------------------------------
-severe.no_factory= Die Anwendung wurde bei Systemstart nicht einwandfrei initialisiert, Factory konnte nicht gefunden werden: {0}
+severe.no_factory= Die Anwendung wurde bei Systemstart nicht einwandfrei initialisiert, Factory konnte nicht gefunden werden: {0}.
+severe.no_factory_backup_failed= Keine Factory als Backup f\u00fcr {0} gefunden.
 
 
 # PACKAGE javax.faces.application ----------------------------------------------
@@ -79,6 +84,7 @@ severe.event.exception_invoking_processaction=Beim Aufrufen des Aktionszielger\u
 
 
 # PACKAGE javax.faces.webapp ---------------------------------------------------
+warning.webapp.facesservlet.init_invalid_http_method=The runtime was configured to permit HTTP method {0} but that is not one of {1}.  Note that HTTP method names are case sensitive.
 severe.webapp.facesservlet.init_failed=Die Initialisierung der JSF-Laufzeit schlug fehl oder ist nicht aufgetreten.  Pr\u00fcfen Sie die Details im Protokoll des Servers.
 servere.webapp.prejsf2.exception.handler.log_before={0} erfasst w\u00e4hrend beforePhase()-Verarbeitung von {1} : UIComponent-ClientId={2}, Message={3}
 servere.webapp.prejsf2.exception.handler.log_after={0} erfasst w\u00e4hrend afterPhase()-Verarbeitung von {1} : UIComponent-ClientId={2}, Message={3}
diff --git a/jsf-api/src/main/java/javax/faces/LogStrings_es.properties b/jsf-api/src/main/java/javax/faces/LogStrings_es.properties
index 8da9171..4c058aa 100644
--- a/jsf-api/src/main/java/javax/faces/LogStrings_es.properties
+++ b/jsf-api/src/main/java/javax/faces/LogStrings_es.properties
@@ -1,27 +1,31 @@
 #
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 #
-# Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+# Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
 #
 # The contents of this file are subject to the terms of either the GNU
 # General Public License Version 2 only ("GPL") or the Common Development
 # and Distribution License("CDDL") (collectively, the "License").  You
-# may not use this file except in compliance with the License. You can obtain
-# a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
-# or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
 # language governing permissions and limitations under the License.
 #
 # When distributing the software, include this License Header Notice in each
-# file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
-# Sun designates this particular file as subject to the "Classpath" exception
-# as provided by Sun in the GPL Version 2 section of the License file that
-# accompanied this code.  If applicable, add the following below the License
-# Header, with the fields enclosed by brackets [] replaced by your own
-# identifying information: "Portions Copyrighted [year]
-# [name of copyright owner]"
+# file and include the License file at packager/legal/LICENSE.txt.
 #
-# Contributor(s):
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
 #
+# Contributor(s):
 # If you wish your version of this file to be governed by only the CDDL or
 # only the GPL Version 2, indicate your decision by adding "[Contributor]
 # elects to include this software in this distribution under the [CDDL or GPL
@@ -42,7 +46,8 @@
 
 
 # PACKAGE javax.faces ----------------------------------------------------------
-severe.no_factory= La aplicaci\u00f3n no se ha inicializado correctamente durante el inicio, no se encuentra la f\u00e1brica: {0}
+severe.no_factory= La aplicaci\u00f3n no se ha inicializado correctamente durante el inicio, no se encuentra la f\u00e1brica: {0}. Attempting to find backup.
+severe.no_factory_backup_failed= Could not find backup for factory {0}. 
 
 
 # PACKAGE javax.faces.application ----------------------------------------------
@@ -79,6 +84,7 @@ severe.event.exception_invoking_processaction=Se ha recibido ''{0}'' al invocar
 
 
 # PACKAGE javax.faces.webapp ---------------------------------------------------
+warning.webapp.facesservlet.init_invalid_http_method=The runtime was configured to permit HTTP method {0} but that is not one of {1}.  Note that HTTP method names are case sensitive.
 severe.webapp.facesservlet.init_failed=La inicializaci\u00f3n del tiempo de ejecuci\u00f3n JSF ha fallado o no se ha producido.  Revise el registro del servidor para m\u00e1s informaci\u00f3n.
 servere.webapp.prejsf2.exception.handler.log_before=Se ha interceptado {0} durante el procesamiento beforePhase() de {1} : UIComponent-ClientId={2}, Mensaje={3}
 servere.webapp.prejsf2.exception.handler.log_after=Se ha interceptado {0} durante el procesamiento afterPhase() de {1} : UIComponent-ClientId={2}, Mensaje={3}
diff --git a/jsf-api/src/main/java/javax/faces/LogStrings_fr.properties b/jsf-api/src/main/java/javax/faces/LogStrings_fr.properties
index a1e360a..1817b3b 100644
--- a/jsf-api/src/main/java/javax/faces/LogStrings_fr.properties
+++ b/jsf-api/src/main/java/javax/faces/LogStrings_fr.properties
@@ -1,27 +1,31 @@
 #
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 #
-# Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+# Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
 #
 # The contents of this file are subject to the terms of either the GNU
 # General Public License Version 2 only ("GPL") or the Common Development
 # and Distribution License("CDDL") (collectively, the "License").  You
-# may not use this file except in compliance with the License. You can obtain
-# a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
-# or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
 # language governing permissions and limitations under the License.
 #
 # When distributing the software, include this License Header Notice in each
-# file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
-# Sun designates this particular file as subject to the "Classpath" exception
-# as provided by Sun in the GPL Version 2 section of the License file that
-# accompanied this code.  If applicable, add the following below the License
-# Header, with the fields enclosed by brackets [] replaced by your own
-# identifying information: "Portions Copyrighted [year]
-# [name of copyright owner]"
+# file and include the License file at packager/legal/LICENSE.txt.
 #
-# Contributor(s):
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
 #
+# Contributor(s):
 # If you wish your version of this file to be governed by only the CDDL or
 # only the GPL Version 2, indicate your decision by adding "[Contributor]
 # elects to include this software in this distribution under the [CDDL or GPL
@@ -42,18 +46,19 @@
 
 
 # PACKAGE javax.faces ----------------------------------------------------------
-severe.no_factory= L''application n''a pas \u00e9t\u00e9 initialis\u00e9e correctement au d\u00e9marrage. Impossible de localiser la Fabrique : {0}
+severe.no_factory= L\u2019application n\u2019a pas \u00e9t\u00e9 initialis\u00e9e correctement au d\u00e9marrage. Impossible de localiser la Fabrique : {0}. Attempting to find backup.
+severe.no_factory_backup_failed= Could not find backup for factory {0}. 
 
 
 # PACKAGE javax.faces.application ----------------------------------------------
 
 
 # PACKAGE javax.faces.component ------------------------------------------------
-fine.component.populating_descriptor_map=Remplissage du plan PropertyDescriptor pour la classe ''{0}'' de la Thread nomm\u00e9e ''{1}''.
-error.component.abortprocessing_thrown=Exception d''abandon de processus (AbortProcessingException) \u00e9mise lors du traitement de l''\u00e9v\u00e9nement de type ''{0}'' pendant la phase ''{1}'' du composant dont l''ID ou l''ID Client est ''{2}''
-severe.component.unable_to_process_expression=Exception lors du traitement de l''expression {0} de l''attribut {1}.
+fine.component.populating_descriptor_map=Remplissage du plan PropertyDescriptor pour la classe \u00ab{0}\u00bb de la Thread nomm\u00e9e \u00ab{1}\u00bb.
+error.component.abortprocessing_thrown=Exception d\u2019abandon de processus (AbortProcessingException) \u00e9mise lors du traitement de l\u2019\u00e9v\u00e9nement de type \u00ab{0}\u00bb pendant la phase \u00ab{1}\u00bb du composant dont l\u2019ID ou l\u2019ID Client est \u00ab{2}\u00bb
+severe.component.unable_to_process_expression=Exception lors du traitement de l\u2019expression {0} de l\u2019attribut {1}.
 severe.component.uiviewroot_error_invoking_phaselistener=Exception invoquant UIViewRoot PhaseListener {0}.
-warning.component.uiviewroot_non_serializable_attribute_viewmap=D\u00e9finition d''une valeur d''attribut non-s\u00e9rialisable dans ViewMap\u00a0: (cl\u00e9\u00a0: {0}, classe de la valeur\u00a0: {1})
+warning.component.uiviewroot_non_serializable_attribute_viewmap=D\u00e9finition d\u2019une valeur d\u2019attribut non-s\u00e9rialisable dans ViewMap\u00a0: (cl\u00e9\u00a0: {0}, classe de la valeur\u00a0: {1})
 # PACKAGE javax.faces.context --------------------------------------------------
 
 
@@ -64,7 +69,7 @@ warning.component.uiviewroot_non_serializable_attribute_viewmap=D\u00e9finition
 
 
 # PACKAGE javax.faces.event ----------------------------------------------------
-severe.event.exception_invoking_processaction=R\u00e9ception de ''{0}'' lors de l''invocation du listener d''action ''{1}'' du composant ''{2}''
+severe.event.exception_invoking_processaction=R\u00e9ception de \u00ab{0}\u00bb lors de l\u2019invocation du listener d\u2019action \u00ab{1}\u00bb du composant \u00ab{2}\u00bb
 
 # PACKAGE javax.faces.lifecycle ------------------------------------------------
 
@@ -79,7 +84,8 @@ severe.event.exception_invoking_processaction=R\u00e9ception de ''{0}'' lors de
 
 
 # PACKAGE javax.faces.webapp ---------------------------------------------------
-severe.webapp.facesservlet.init_failed=L''initialisation de l''ex\u00e9cution JSF a \u00e9chou\u00e9 ou ne s''est pas produite.  Consultez le journal du serveur pour plus de d\u00e9tails.
+warning.webapp.facesservlet.init_invalid_http_method=The runtime was configured to permit HTTP method {0} but that is not one of {1}.  Note that HTTP method names are case sensitive.
+severe.webapp.facesservlet.init_failed=L\u2019initialisation de l\u2019ex\u00e9cution JSF a \u00e9chou\u00e9 ou ne s\u2019est pas produite.  Consultez le journal du serveur pour plus de d\u00e9tails.
 servere.webapp.prejsf2.exception.handler.log_before={0} intercept\u00e9 durant le traitement de la m\u00e9thode beforePhase() de {1} : UIComponent-ClientId={2}, Message={3}
 servere.webapp.prejsf2.exception.handler.log_after={0} intercept\u00e9 durant le traitement de la m\u00e9thode afterPhase() de {1} : UIComponent-ClientId={2}, Message={3}
 servere.webapp.prejsf2.exception.handler.log={0} intercept\u00e9 durant le traitement de {1} : UIComponent-ClientId={2}, Message={3}
diff --git a/jsf-api/src/main/java/javax/faces/LogStrings_ja.properties b/jsf-api/src/main/java/javax/faces/LogStrings_ja.properties
index 0fc7fc6..d8fcf5a 100644
--- a/jsf-api/src/main/java/javax/faces/LogStrings_ja.properties
+++ b/jsf-api/src/main/java/javax/faces/LogStrings_ja.properties
@@ -1,27 +1,31 @@
 #
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 #
-# Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+# Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
 #
 # The contents of this file are subject to the terms of either the GNU
 # General Public License Version 2 only ("GPL") or the Common Development
 # and Distribution License("CDDL") (collectively, the "License").  You
-# may not use this file except in compliance with the License. You can obtain
-# a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
-# or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
 # language governing permissions and limitations under the License.
 #
 # When distributing the software, include this License Header Notice in each
-# file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
-# Sun designates this particular file as subject to the "Classpath" exception
-# as provided by Sun in the GPL Version 2 section of the License file that
-# accompanied this code.  If applicable, add the following below the License
-# Header, with the fields enclosed by brackets [] replaced by your own
-# identifying information: "Portions Copyrighted [year]
-# [name of copyright owner]"
+# file and include the License file at packager/legal/LICENSE.txt.
 #
-# Contributor(s):
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
 #
+# Contributor(s):
 # If you wish your version of this file to be governed by only the CDDL or
 # only the GPL Version 2, indicate your decision by adding "[Contributor]
 # elects to include this software in this distribution under the [CDDL or GPL
@@ -42,7 +46,8 @@
 
 
 # PACKAGE javax.faces ----------------------------------------------------------
-severe.no_factory= \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306f\u8d77\u52d5\u6642\u306b\u6b63\u3057\u304f\u521d\u671f\u5316\u3055\u308c\u305a\u3001\u30d5\u30a1\u30af\u30c8\u30ea\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f: {0}
+severe.no_factory= \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306f\u8d77\u52d5\u6642\u306b\u6b63\u3057\u304f\u521d\u671f\u5316\u3055\u308c\u305a\u3001\u30d5\u30a1\u30af\u30c8\u30ea\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f: {0}. Attempting to find backup.
+severe.no_factory_backup_failed= Could not find backup for factory {0}. 
 
 
 # PACKAGE javax.faces.application ----------------------------------------------
@@ -79,6 +84,7 @@ severe.event.exception_invoking_processaction=\u30b3\u30f3\u30dd\u30fc\u30cd\u30
 
 
 # PACKAGE javax.faces.webapp ---------------------------------------------------
+warning.webapp.facesservlet.init_invalid_http_method=The runtime was configured to permit HTTP method {0} but that is not one of {1}.  Note that HTTP method names are case sensitive.
 severe.webapp.facesservlet.init_failed=JSF \u30e9\u30f3\u30bf\u30a4\u30e0\u306e\u521d\u671f\u5316\u306f\u3001\u5931\u6557\u3057\u305f\u304b\u5b9f\u884c\u3055\u308c\u307e\u305b\u3093\u3067\u3057\u305f\u3002\u8a73\u7d30\u306f\u3001\u30b5\u30fc\u30d0\u30fc\u306e\u30ed\u30b0\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002
 servere.webapp.prejsf2.exception.handler.log_before={1} \u306e beforePhase() \u306e\u51e6\u7406\u4e2d\u306b {0} \u3092\u30ad\u30e3\u30c3\u30c1\u3057\u307e\u3057\u305f: UIComponent \u306e ClientID ={2}\u3001\u30e1\u30c3\u30bb\u30fc\u30b8 ={3}
 servere.webapp.prejsf2.exception.handler.log_after={1} \u306e afterPhase() \u306e\u51e6\u7406\u4e2d\u306b {0} \u3092\u30ad\u30e3\u30c3\u30c1\u3057\u307e\u3057\u305f: UIComponent \u306e ClientID ={2}\u3001\u30e1\u30c3\u30bb\u30fc\u30b8 ={3}
diff --git a/jsf-api/src/main/java/javax/faces/LogStrings_ko.properties b/jsf-api/src/main/java/javax/faces/LogStrings_ko.properties
index 10c29e6..b8664f2 100644
--- a/jsf-api/src/main/java/javax/faces/LogStrings_ko.properties
+++ b/jsf-api/src/main/java/javax/faces/LogStrings_ko.properties
@@ -1,27 +1,31 @@
 #
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 #
-# Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+# Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
 #
 # The contents of this file are subject to the terms of either the GNU
 # General Public License Version 2 only ("GPL") or the Common Development
 # and Distribution License("CDDL") (collectively, the "License").  You
-# may not use this file except in compliance with the License. You can obtain
-# a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
-# or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
 # language governing permissions and limitations under the License.
 #
 # When distributing the software, include this License Header Notice in each
-# file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
-# Sun designates this particular file as subject to the "Classpath" exception
-# as provided by Sun in the GPL Version 2 section of the License file that
-# accompanied this code.  If applicable, add the following below the License
-# Header, with the fields enclosed by brackets [] replaced by your own
-# identifying information: "Portions Copyrighted [year]
-# [name of copyright owner]"
+# file and include the License file at packager/legal/LICENSE.txt.
 #
-# Contributor(s):
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
 #
+# Contributor(s):
 # If you wish your version of this file to be governed by only the CDDL or
 # only the GPL Version 2, indicate your decision by adding "[Contributor]
 # elects to include this software in this distribution under the [CDDL or GPL
@@ -42,7 +46,8 @@
 
 
 # PACKAGE javax.faces ----------------------------------------------------------
-severe.no_factory= \uc751\uc6a9 \ud504\ub85c\uadf8\ub7a8 \uc2dc\uc791 \uc2dc \uc62c\ubc14\ub974\uac8c \ucd08\uae30\ud654\ub418\uc9c0 \uc54a\uc544 {0} \ud329\ud1a0\ub9ac\ub97c \ucc3e\uc9c0 \ubabb\ud588\uc2b5\ub2c8\ub2e4.
+severe.no_factory= \uc751\uc6a9 \ud504\ub85c\uadf8\ub7a8 \uc2dc\uc791 \uc2dc \uc62c\ubc14\ub974\uac8c \ucd08\uae30\ud654\ub418\uc9c0 \uc54a\uc544 {0} \ud329\ud1a0\ub9ac\ub97c \ucc3e\uc9c0 \ubabb\ud588\uc2b5\ub2c8\ub2e4. Attempting to find backup.
+severe.no_factory_backup_failed= Could not find backup for factory {0}. 
 
 
 # PACKAGE javax.faces.application ----------------------------------------------
@@ -79,6 +84,7 @@ severe.event.exception_invoking_processaction=\uad6c\uc131 \uc694\uc18c "{2}"\uc
 
 
 # PACKAGE javax.faces.webapp ---------------------------------------------------
+warning.webapp.facesservlet.init_invalid_http_method=The runtime was configured to permit HTTP method {0} but that is not one of {1}.  Note that HTTP method names are case sensitive.
 severe.webapp.facesservlet.init_failed=JSF \ub7f0\ud0c0\uc784 \ucd08\uae30\ud654\uac00 \uc2e4\ud328\ud588\uac70\ub098 \ubc1c\uc0dd\ud558\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4.  \uc790\uc138\ud55c \ub0b4\uc6a9\uc740 \uc11c\ubc84\uc758 \ub85c\uadf8\ub97c \uac80\ud1a0\ud558\uc2ed\uc2dc\uc624.
 servere.webapp.prejsf2.exception.handler.log_before={1}\uc758 beforePhase() \ucc98\ub9ac \uc911 {0} \ubc1c\uc0dd: UIComponent-ClientId={2}, \uba54\uc2dc\uc9c0={3}
 servere.webapp.prejsf2.exception.handler.log_after={1}\uc758 afterPhase() \ucc98\ub9ac \uc911 {0} \ubc1c\uc0dd: UIComponent-ClientId={2}, \uba54\uc2dc\uc9c0={3}
diff --git a/jsf-api/src/main/java/javax/faces/LogStrings_pt_BR.properties b/jsf-api/src/main/java/javax/faces/LogStrings_pt_BR.properties
index d161b07..3880823 100644
--- a/jsf-api/src/main/java/javax/faces/LogStrings_pt_BR.properties
+++ b/jsf-api/src/main/java/javax/faces/LogStrings_pt_BR.properties
@@ -1,27 +1,31 @@
 #
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 #
-# Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+# Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
 #
 # The contents of this file are subject to the terms of either the GNU
 # General Public License Version 2 only ("GPL") or the Common Development
 # and Distribution License("CDDL") (collectively, the "License").  You
-# may not use this file except in compliance with the License. You can obtain
-# a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
-# or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
 # language governing permissions and limitations under the License.
 #
 # When distributing the software, include this License Header Notice in each
-# file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
-# Sun designates this particular file as subject to the "Classpath" exception
-# as provided by Sun in the GPL Version 2 section of the License file that
-# accompanied this code.  If applicable, add the following below the License
-# Header, with the fields enclosed by brackets [] replaced by your own
-# identifying information: "Portions Copyrighted [year]
-# [name of copyright owner]"
+# file and include the License file at packager/legal/LICENSE.txt.
 #
-# Contributor(s):
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
 #
+# Contributor(s):
 # If you wish your version of this file to be governed by only the CDDL or
 # only the GPL Version 2, indicate your decision by adding "[Contributor]
 # elects to include this software in this distribution under the [CDDL or GPL
@@ -42,7 +46,8 @@
 
 
 # PACKAGE javax.faces ----------------------------------------------------------
-severe.no_factory= O aplicativo n\u00e3o foi iniciado corretamente na inicializa\u00e7\u00e3o. N\u00e3o foi poss\u00edvel encontrar F\u00e1brica: {0}
+severe.no_factory= O aplicativo n\u00e3o foi iniciado corretamente na inicializa\u00e7\u00e3o. N\u00e3o foi poss\u00edvel encontrar F\u00e1brica: {0}. Attempting to find backup.
+severe.no_factory_backup_failed= Could not find backup for factory {0}. 
 
 
 # PACKAGE javax.faces.application ----------------------------------------------
@@ -79,6 +84,7 @@ severe.event.exception_invoking_processaction=''{0}'' recebido ao invocar escuta
 
 
 # PACKAGE javax.faces.webapp ---------------------------------------------------
+warning.webapp.facesservlet.init_invalid_http_method=The runtime was configured to permit HTTP method {0} but that is not one of {1}.  Note that HTTP method names are case sensitive.
 severe.webapp.facesservlet.init_failed=A inicializa\u00e7\u00e3o do tempo de execu\u00e7\u00e3o de JSF falhou ou n\u00e3o ocorreu.  Consulte o log do servidor para obter detalhes.
 servere.webapp.prejsf2.exception.handler.log_before={0} obtido durante o processamento de beforePhase() de {1}: UIComponent-ClientId={2}, Message={3}
 servere.webapp.prejsf2.exception.handler.log_after={0} obtido durante o processamento de afterPhase() de {1}: UIComponent-ClientId={2}, Message={3}
diff --git a/jsf-api/src/main/java/javax/faces/LogStrings_zh_CN.properties b/jsf-api/src/main/java/javax/faces/LogStrings_zh_CN.properties
index 3ee8060..a7fd444 100644
--- a/jsf-api/src/main/java/javax/faces/LogStrings_zh_CN.properties
+++ b/jsf-api/src/main/java/javax/faces/LogStrings_zh_CN.properties
@@ -1,27 +1,31 @@
 #
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 #
-# Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+# Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
 #
 # The contents of this file are subject to the terms of either the GNU
 # General Public License Version 2 only ("GPL") or the Common Development
 # and Distribution License("CDDL") (collectively, the "License").  You
-# may not use this file except in compliance with the License. You can obtain
-# a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
-# or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
 # language governing permissions and limitations under the License.
 #
 # When distributing the software, include this License Header Notice in each
-# file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
-# Sun designates this particular file as subject to the "Classpath" exception
-# as provided by Sun in the GPL Version 2 section of the License file that
-# accompanied this code.  If applicable, add the following below the License
-# Header, with the fields enclosed by brackets [] replaced by your own
-# identifying information: "Portions Copyrighted [year]
-# [name of copyright owner]"
+# file and include the License file at packager/legal/LICENSE.txt.
 #
-# Contributor(s):
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
 #
+# Contributor(s):
 # If you wish your version of this file to be governed by only the CDDL or
 # only the GPL Version 2, indicate your decision by adding "[Contributor]
 # elects to include this software in this distribution under the [CDDL or GPL
@@ -42,7 +46,8 @@
 
 
 # PACKAGE javax.faces ----------------------------------------------------------
-severe.no_factory= \u542f\u52a8\u65f6\u6ca1\u6709\u6b63\u786e\u521d\u59cb\u5316\u5e94\u7528\u7a0b\u5e8f\uff0c\u65e0\u6cd5\u627e\u5230\u5de5\u5382\uff1a{0}
+severe.no_factory= \u542f\u52a8\u65f6\u6ca1\u6709\u6b63\u786e\u521d\u59cb\u5316\u5e94\u7528\u7a0b\u5e8f\uff0c\u65e0\u6cd5\u627e\u5230\u5de5\u5382\uff1a{0}. Attempting to find backup.
+severe.no_factory_backup_failed= Could not find backup for factory {0}. 
 
 
 # PACKAGE javax.faces.application ----------------------------------------------
@@ -79,6 +84,7 @@ severe.event.exception_invoking_processaction=\u8c03\u7528\u7ec4\u4ef6 ''{2}'' \
 
 
 # PACKAGE javax.faces.webapp ---------------------------------------------------
+warning.webapp.facesservlet.init_invalid_http_method=The runtime was configured to permit HTTP method {0} but that is not one of {1}.  Note that HTTP method names are case sensitive.
 severe.webapp.facesservlet.init_failed=JSF \u8fd0\u884c\u65f6\u521d\u59cb\u5316\u5931\u8d25\u6216\u672a\u8fdb\u884c\u521d\u59cb\u5316\u3002\u6709\u5173\u8be6\u7ec6\u4fe1\u606f\uff0c\u8bf7\u68c0\u67e5\u670d\u52a1\u5668\u7684\u65e5\u5fd7\u3002
 servere.webapp.prejsf2.exception.handler.log_before=\u5728 {1} \u7684 beforePhase() \u5904\u7406\u8fc7\u7a0b\u4e2d\u6355\u6349\u5230 {0}\uff1aUIComponent-ClientId={2}\uff0cMessage={3}
 servere.webapp.prejsf2.exception.handler.log_after=\u5728 {1} \u7684 afterPhase() \u5904\u7406\u8fc7\u7a0b\u4e2d\u6355\u6349\u5230 {0}\uff1aUIComponent-ClientId={2}\uff0cMessage={3}
diff --git a/jsf-api/src/main/java/javax/faces/LogStrings_zh_HK.properties b/jsf-api/src/main/java/javax/faces/LogStrings_zh_HK.properties
new file mode 100644
index 0000000..8abc863
--- /dev/null
+++ b/jsf-api/src/main/java/javax/faces/LogStrings_zh_HK.properties
@@ -0,0 +1,93 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
+#
+# Logging key guideline:
+#   [level].[base package].[message_id]
+
+# Common -----------------------------------------------------------------------
+
+
+# PACKAGE javax.faces ----------------------------------------------------------
+severe.no_factory= \u672a\u5728\u555f\u52d5\u6642\u6b63\u78ba\u5730\u521d\u59cb\u5316\u61c9\u7528\u7a0b\u5f0f\uff0c\u627e\u4e0d\u5230\u5de5\u5ee0: {0}. Attempting to find backup.
+severe.no_factory_backup_failed= Could not find backup for factory {0}. 
+
+
+# PACKAGE javax.faces.application ----------------------------------------------
+
+
+# PACKAGE javax.faces.component ------------------------------------------------
+fine.component.populating_descriptor_map=\u6b63\u5728\u70ba\u540d\u70ba\u300c{1}\u300d\u7684\u57f7\u884c\u7dd2\u5beb\u5165\u985e\u5225\u300c{0}\u300d\u7684 PropertyDescriptor \u5c0d\u6620\u3002
+error.component.abortprocessing_thrown=\u5728 ID \u6216\u7528\u6236\u7aef ID \u70ba\u300c{2}\u300d\u7684\u5143\u4ef6\u7684\u968e\u6bb5\u300c{1}\u300d\uff0c\u8655\u7406\u985e\u578b\u70ba\u300c{0}\u300d\u7684\u4e8b\u4ef6\u6642\u4e1f\u51fa AbortProcessingException
+severe.component.unable_to_process_expression=\u8655\u7406\u5c6c\u6027 {1} \u7684\u8868\u793a\u5f0f {0} \u6642\u767c\u751f\u7570\u5e38\u3002 
+severe.component.uiviewroot_error_invoking_phaselistener=\u547c\u53eb UIViewRoot PhaseListener {0} \u6642\u767c\u751f\u7570\u5e38\u3002
+warning.component.uiviewroot_non_serializable_attribute_viewmap=\u5c07\u4e0d\u53ef\u4e32\u5217\u5316\u7684\u5c6c\u6027\u503c\u8a2d\u70ba ViewMap\uff1a(\u6a5f\u78bc: {0}\uff0c\u503c\u985e\u5225: {1})
+# PACKAGE javax.faces.context --------------------------------------------------
+
+
+# PACKAGE javax.faces.convert --------------------------------------------------
+
+
+# PACKAGE javax.faces.el -------------------------------------------------------
+
+
+# PACKAGE javax.faces.event ----------------------------------------------------
+severe.event.exception_invoking_processaction=\u547c\u53eb\u5143\u4ef6\u300c{2}\u300d\u7684\u52d5\u4f5c\u5075\u807d\u7a0b\u5f0f\u300c{1}\u300d\u6642\u6536\u5230\u300c{0}\u300d
+
+# PACKAGE javax.faces.lifecycle ------------------------------------------------
+
+
+# PACKAGE javax.faces.model ----------------------------------------------------
+
+
+# PACKAGE javax.faces.render ---------------------------------------------------
+
+
+# PACKAGE javax.faces.validator ------------------------------------------------
+
+
+# PACKAGE javax.faces.webapp ---------------------------------------------------
+warning.webapp.facesservlet.init_invalid_http_method=The runtime was configured to permit HTTP method {0} but that is not one of {1}.  Note that HTTP method names are case sensitive.
+severe.webapp.facesservlet.init_failed=\u521d\u59cb\u5316 JSF \u57f7\u884c\u968e\u6bb5\u5931\u6557\u6216\u672a\u767c\u751f\u3002\u8a73\u7d30\u8cc7\u8a0a\u8acb\u6aa2\u8996\u4f3a\u670d\u5668\u7684\u8a18\u9304\u6a94\u3002
+servere.webapp.prejsf2.exception.handler.log_before=\u5728 {1} \u7684 beforePhase() \u8655\u7406\u671f\u9593\u622a\u7372 {0}\uff1aUIComponent-ClientId={2}\uff0c\u8a0a\u606f={3}
+servere.webapp.prejsf2.exception.handler.log_after=\u5728 {1} \u7684 afterPhase() \u8655\u7406\u671f\u9593\u622a\u7372 {0}\uff1aUIComponent-ClientId={2}\uff0c\u8a0a\u606f={3}
+servere.webapp.prejsf2.exception.handler.log=\u5728\u8655\u7406 {1} \u671f\u9593\u622a\u7372 {0}\uff1aUIComponent-ClientId={2}\uff0c\u8a0a\u606f={3}
+
+
diff --git a/jsf-api/src/main/java/javax/faces/LogStrings_zh_TW.properties b/jsf-api/src/main/java/javax/faces/LogStrings_zh_TW.properties
index bcb80c2..8abc863 100644
--- a/jsf-api/src/main/java/javax/faces/LogStrings_zh_TW.properties
+++ b/jsf-api/src/main/java/javax/faces/LogStrings_zh_TW.properties
@@ -1,27 +1,31 @@
 #
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 #
-# Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+# Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
 #
 # The contents of this file are subject to the terms of either the GNU
 # General Public License Version 2 only ("GPL") or the Common Development
 # and Distribution License("CDDL") (collectively, the "License").  You
-# may not use this file except in compliance with the License. You can obtain
-# a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
-# or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
 # language governing permissions and limitations under the License.
 #
 # When distributing the software, include this License Header Notice in each
-# file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
-# Sun designates this particular file as subject to the "Classpath" exception
-# as provided by Sun in the GPL Version 2 section of the License file that
-# accompanied this code.  If applicable, add the following below the License
-# Header, with the fields enclosed by brackets [] replaced by your own
-# identifying information: "Portions Copyrighted [year]
-# [name of copyright owner]"
+# file and include the License file at packager/legal/LICENSE.txt.
 #
-# Contributor(s):
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
 #
+# Contributor(s):
 # If you wish your version of this file to be governed by only the CDDL or
 # only the GPL Version 2, indicate your decision by adding "[Contributor]
 # elects to include this software in this distribution under the [CDDL or GPL
@@ -42,7 +46,8 @@
 
 
 # PACKAGE javax.faces ----------------------------------------------------------
-severe.no_factory= \u672a\u5728\u555f\u52d5\u6642\u6b63\u78ba\u5730\u521d\u59cb\u5316\u61c9\u7528\u7a0b\u5f0f\uff0c\u627e\u4e0d\u5230\u5de5\u5ee0: {0}
+severe.no_factory= \u672a\u5728\u555f\u52d5\u6642\u6b63\u78ba\u5730\u521d\u59cb\u5316\u61c9\u7528\u7a0b\u5f0f\uff0c\u627e\u4e0d\u5230\u5de5\u5ee0: {0}. Attempting to find backup.
+severe.no_factory_backup_failed= Could not find backup for factory {0}. 
 
 
 # PACKAGE javax.faces.application ----------------------------------------------
@@ -79,6 +84,7 @@ severe.event.exception_invoking_processaction=\u547c\u53eb\u5143\u4ef6\u300c{2}\
 
 
 # PACKAGE javax.faces.webapp ---------------------------------------------------
+warning.webapp.facesservlet.init_invalid_http_method=The runtime was configured to permit HTTP method {0} but that is not one of {1}.  Note that HTTP method names are case sensitive.
 severe.webapp.facesservlet.init_failed=\u521d\u59cb\u5316 JSF \u57f7\u884c\u968e\u6bb5\u5931\u6557\u6216\u672a\u767c\u751f\u3002\u8a73\u7d30\u8cc7\u8a0a\u8acb\u6aa2\u8996\u4f3a\u670d\u5668\u7684\u8a18\u9304\u6a94\u3002
 servere.webapp.prejsf2.exception.handler.log_before=\u5728 {1} \u7684 beforePhase() \u8655\u7406\u671f\u9593\u622a\u7372 {0}\uff1aUIComponent-ClientId={2}\uff0c\u8a0a\u606f={3}
 servere.webapp.prejsf2.exception.handler.log_after=\u5728 {1} \u7684 afterPhase() \u8655\u7406\u671f\u9593\u622a\u7372 {0}\uff1aUIComponent-ClientId={2}\uff0c\u8a0a\u606f={3}
diff --git a/jsf-api/src/main/java/javax/faces/Messages.properties b/jsf-api/src/main/java/javax/faces/Messages.properties
index b7d378e..e223d82 100644
--- a/jsf-api/src/main/java/javax/faces/Messages.properties
+++ b/jsf-api/src/main/java/javax/faces/Messages.properties
@@ -1,3 +1,43 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
  # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  #
  # Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
@@ -51,8 +91,8 @@ javax.faces.converter.BigIntegerConverter.BIGINTEGER={2}: ''{0}'' must be a numb
 javax.faces.converter.BigIntegerConverter.BIGINTEGER_detail={2}: ''{0}'' must be a number consisting of one or more digits. Example: {1} 
 javax.faces.converter.BooleanConverter.BOOLEAN={1}: ''{0}'' must be 'true' or 'false'.
 javax.faces.converter.BooleanConverter.BOOLEAN_detail={1}: ''{0}'' must be 'true' or 'false'.  Any value other than 'true' will evaluate to 'false'.
-javax.faces.converter.ByteConverter.BYTE={2}: ''{0}'' must be a number between 0 and 255.
-javax.faces.converter.ByteConverter.BYTE_detail={2}: ''{0}'' must be a number between 0 and 255.  Example: {1} 
+javax.faces.converter.ByteConverter.BYTE={2}: ''{0}'' must be a number between -128 and 127.
+javax.faces.converter.ByteConverter.BYTE_detail={2}: ''{0}'' must be a number between -128 and 127.  Example: {1} 
 javax.faces.converter.CharacterConverter.CHARACTER={1}: ''{0}'' must be a valid character.
 javax.faces.converter.CharacterConverter.CHARACTER_detail={1}: ''{0}'' must be a valid ASCII character.
 javax.faces.converter.DateTimeConverter.DATE={2}: ''{0}'' could not be understood as a date.
diff --git a/jsf-api/src/main/java/javax/faces/Messages_de.properties b/jsf-api/src/main/java/javax/faces/Messages_de.properties
index c6f336d..9b942cf 100644
--- a/jsf-api/src/main/java/javax/faces/Messages_de.properties
+++ b/jsf-api/src/main/java/javax/faces/Messages_de.properties
@@ -1,3 +1,43 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
  # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  #
  # Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
@@ -51,8 +91,8 @@ javax.faces.converter.BigIntegerConverter.BIGINTEGER={2}: Bei ''{0}'' muss es si
 javax.faces.converter.BigIntegerConverter.BIGINTEGER_detail={2}: Bei ''{0}'' muss es sich um eine Zahl mit einer oder mehreren Ziffern handeln. Beispiel: {1} 
 javax.faces.converter.BooleanConverter.BOOLEAN={1}: ''{0}'' muss ''true'' oder ''false'' sein.
 javax.faces.converter.BooleanConverter.BOOLEAN_detail={1}: ''{0}'' muss ''true'' oder ''false'' sein.  Andere Werte als ''true'' werden als ''false'' ausgewertet.
-javax.faces.converter.ByteConverter.BYTE={2}: Bei ''{0}'' muss es sich um eine Zahl zwischen 0 und 255 handeln.
-javax.faces.converter.ByteConverter.BYTE_detail={2}: Bei ''{0}'' muss es sich um eine Zahl zwischen 0 und 255 handeln.  Beispiel: {1} 
+javax.faces.converter.ByteConverter.BYTE={2}: Bei ''{0}'' muss es sich um eine Zahl zwischen -128 und 127 handeln.
+javax.faces.converter.ByteConverter.BYTE_detail={2}: Bei ''{0}'' muss es sich um eine Zahl zwischen -128 und 127 handeln.  Beispiel: {1} 
 javax.faces.converter.CharacterConverter.CHARACTER={1}: ''{0}'' muss ein g\u00fcltiges Zeichen sein.
 javax.faces.converter.CharacterConverter.CHARACTER_detail={1}: ''{0}'' muss ein g\u00fcltiges ASCII-Zeichen sein.
 javax.faces.converter.DateTimeConverter.DATE={2}: ''{0}'' konnte nicht als Datum interpretiert werden.
diff --git a/jsf-api/src/main/java/javax/faces/Messages_en.properties b/jsf-api/src/main/java/javax/faces/Messages_en.properties
index 5966d99..e10565d 100644
--- a/jsf-api/src/main/java/javax/faces/Messages_en.properties
+++ b/jsf-api/src/main/java/javax/faces/Messages_en.properties
@@ -1,3 +1,43 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
  # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  #
  # Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
@@ -51,8 +91,8 @@ javax.faces.converter.BigIntegerConverter.BIGINTEGER={2}: ''{0}'' must be a numb
 javax.faces.converter.BigIntegerConverter.BIGINTEGER_detail={2}: ''{0}'' must be a number consisting of one or more digits. Example: {1}
 javax.faces.converter.BooleanConverter.BOOLEAN={1}: ''{0}'' must be 'true' or 'false'.
 javax.faces.converter.BooleanConverter.BOOLEAN_detail={1}: ''{0}'' must be 'true' or 'false'.  Any value other than 'true' will evaluate to 'false'.
-javax.faces.converter.ByteConverter.BYTE={2}: ''{0}'' must be a number between 0 and 255.
-javax.faces.converter.ByteConverter.BYTE_detail={2}: ''{0}'' must be a number between 0 and 255.  Example: {1}
+javax.faces.converter.ByteConverter.BYTE={2}: ''{0}'' must be a number between -128 and 127.
+javax.faces.converter.ByteConverter.BYTE_detail={2}: ''{0}'' must be a number between -128 and 127.  Example: {1}
 javax.faces.converter.CharacterConverter.CHARACTER={1}: ''{0}'' must be a valid character.
 javax.faces.converter.CharacterConverter.CHARACTER_detail={1}: ''{0}'' must be a valid ASCII character.
 javax.faces.converter.DateTimeConverter.DATE={2}: ''{0}'' could not be understood as a date.
diff --git a/jsf-api/src/main/java/javax/faces/Messages_es.properties b/jsf-api/src/main/java/javax/faces/Messages_es.properties
index 39665a8..f88d2eb 100644
--- a/jsf-api/src/main/java/javax/faces/Messages_es.properties
+++ b/jsf-api/src/main/java/javax/faces/Messages_es.properties
@@ -1,3 +1,43 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
  # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  #
  # Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
@@ -51,8 +91,8 @@ javax.faces.converter.BigIntegerConverter.BIGINTEGER={2}: ''{0}'' debe ser un n\
 javax.faces.converter.BigIntegerConverter.BIGINTEGER_detail={2}: ''{0}'' debe ser un n\u00famero formado por uno o varios d\u00edgitos. Ejemplo: {1} 
 javax.faces.converter.BooleanConverter.BOOLEAN={1}: ''{0}'' debe ser 'true' o 'false'.
 javax.faces.converter.BooleanConverter.BOOLEAN_detail={1}: ''{0}'' debe ser 'true' o 'false'.  Cualquier valor diferente a ''true'', se evaluar\u00e1 como ''false''.
-javax.faces.converter.ByteConverter.BYTE={2}: ''{0}'' debe ser un n\u00famero entre 0 y 255.
-javax.faces.converter.ByteConverter.BYTE_detail={2}: ''{0}'' debe ser un n\u00famero entre 0 y 255.  Ejemplo: {1} 
+javax.faces.converter.ByteConverter.BYTE={2}: ''{0}'' debe ser un n\u00famero entre -128 y 127.
+javax.faces.converter.ByteConverter.BYTE_detail={2}: ''{0}'' debe ser un n\u00famero entre -128 y 127.  Ejemplo: {1} 
 javax.faces.converter.CharacterConverter.CHARACTER={1}: ''{0}'' debe ser un car\u00e1cter v\u00e1lido.
 javax.faces.converter.CharacterConverter.CHARACTER_detail={1}: ''{0}'' debe ser un car\u00e1cter ASCII v\u00e1lido.
 javax.faces.converter.DateTimeConverter.DATE={2}: ''{0}'' no se ha podido reconocer como fecha.
diff --git a/jsf-api/src/main/java/javax/faces/Messages_fr.properties b/jsf-api/src/main/java/javax/faces/Messages_fr.properties
index 3baf96a..7fb809b 100644
--- a/jsf-api/src/main/java/javax/faces/Messages_fr.properties
+++ b/jsf-api/src/main/java/javax/faces/Messages_fr.properties
@@ -1,3 +1,43 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
  # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  #
  # Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
@@ -45,46 +85,46 @@ javax.faces.component.UISelectMany.INVALID={0}\u00a0: erreur de validation. La v
 # ==============================================================================
 # Converter Errors
 # ==============================================================================
-javax.faces.converter.BigDecimalConverter.DECIMAL={2}\u00a0: ''{0}'' doit \u00eatre un nombre d\u00e9cimal sign\u00e9.
-javax.faces.converter.BigDecimalConverter.DECIMAL_detail={2}\u00a0: ''{0}'' doit \u00eatre un nombre d\u00e9cimal sign\u00e9 compos\u00e9 de z\u00e9ro ou de plusieurs chiffres, pouvant \u00eatre suivis d'une virgule et d'une fraction.  Exemple\u00a0: {1} 
-javax.faces.converter.BigIntegerConverter.BIGINTEGER={2}\u00a0: ''{0}'' doit \u00eatre un nombre compos\u00e9 d'un ou de plusieurs chiffres.
-javax.faces.converter.BigIntegerConverter.BIGINTEGER_detail={2}\u00a0: ''{0}'' doit \u00eatre un nombre compos\u00e9 d'un ou de plusieurs chiffres. Exemple\u00a0: {1} 
-javax.faces.converter.BooleanConverter.BOOLEAN={1}\u00a0: ''{0}'' doit pr\u00e9senter la valeur 'true' ou 'false'.
-javax.faces.converter.BooleanConverter.BOOLEAN_detail={1}\u00a0: ''{0}'' doit pr\u00e9senter la valeur 'true' ou 'false'.  Toute valeur diff\u00e9rente de 'true' sera \u00e9valu\u00e9e comme \u00e9tant 'false'.
-javax.faces.converter.ByteConverter.BYTE={2}\u00a0: ''{0}'' doit \u00eatre un nombre compris entre 0 et 255.
-javax.faces.converter.ByteConverter.BYTE_detail={2}\u00a0: ''{0}'' doit \u00eatre un nombre compris entre 0 et 255.  Exemple\u00a0: {1} 
-javax.faces.converter.CharacterConverter.CHARACTER={1}\u00a0: ''{0}'' doit \u00eatre un caract\u00e8re valide.
-javax.faces.converter.CharacterConverter.CHARACTER_detail={1}\u00a0: ''{0}'' doit \u00eatre un caract\u00e8re ASCII valide.
-javax.faces.converter.DateTimeConverter.DATE={2}\u00a0: ''{0}'' n'a pas pu \u00eatre interpr\u00e9t\u00e9 en tant que date.
-javax.faces.converter.DateTimeConverter.DATE_detail={2}\u00a0: ''{0}'' n'a pas pu \u00eatre interpr\u00e9t\u00e9 en tant que date. Exemple\u00a0: {1} 
-javax.faces.converter.DateTimeConverter.TIME={2}\u00a0: ''{0}'' n'a pas pu \u00eatre interpr\u00e9t\u00e9 en tant qu'heure.
-javax.faces.converter.DateTimeConverter.TIME_detail={2}\u00a0: ''{0}'' n'a pas pu \u00eatre interpr\u00e9t\u00e9 en tant qu'heure. Exemple\u00a0: {1} 
-javax.faces.converter.DateTimeConverter.DATETIME={2}\u00a0: ''{0}'' n'a pas pu \u00eatre interpr\u00e9t\u00e9 en tant que date et heure.
-javax.faces.converter.DateTimeConverter.DATETIME_detail={2}\u00a0: ''{0}'' n'a pas pu \u00eatre interpr\u00e9t\u00e9 en tant que date et heure. Exemple\u00a0: {1} 
-javax.faces.converter.DateTimeConverter.PATTERN_TYPE={1}\u00a0: un attribut 'pattern' ou 'type' doit \u00eatre sp\u00e9cifi\u00e9 pour convertir la valeur ''{0}''.
-javax.faces.converter.DoubleConverter.DOUBLE={2}\u00a0: ''{0}'' doit \u00eatre un nombre compos\u00e9 d'un ou de plusieurs chiffres.
-javax.faces.converter.DoubleConverter.DOUBLE_detail={2}\u00a0: ''{0}'' doit \u00eatre un nombre compris entre 4.9E-324 et 1.7976931348623157E308. Exemple\u00a0: {1} 
-javax.faces.converter.EnumConverter.ENUM={2}\u00a0: ''{0}'' doit pouvoir \u00eatre converti en une valeur Enum.
-javax.faces.converter.EnumConverter.ENUM_detail={2}\u00a0: ''{0}'' doit pouvoir \u00eatre converti en une valeur Enum \u00e0 partir de la valeur Enum contenant la constante ''{1}''.
-javax.faces.converter.EnumConverter.ENUM_NO_CLASS={1}\u00a0: ''{0}'' doit pouvoir \u00eatre converti en une valeur Enum \u00e0 partir de la valeur Enum, mais aucune classe Enum n'est fournie.
-javax.faces.converter.EnumConverter.ENUM_NO_CLASS_detail={1}\u00a0: ''{0}'' doit pouvoir \u00eatre converti en une valeur Enum \u00e0 partir de la valeur Enum, mais aucune classe Enum n'est fournie.
-javax.faces.converter.FloatConverter.FLOAT={2}\u00a0: ''{0}'' doit \u00eatre un nombre compos\u00e9 d'un ou de plusieurs chiffres.
-javax.faces.converter.FloatConverter.FLOAT_detail={2}\u00a0: ''{0}'' doit \u00eatre un nombre compris entre 1.4E-45 et 3.4028235E38. Exemple\u00a0: {1}
-javax.faces.converter.IntegerConverter.INTEGER={2}\u00a0: ''{0}'' doit \u00eatre un nombre compos\u00e9 d'un ou de plusieurs chiffres.
-javax.faces.converter.IntegerConverter.INTEGER_detail={2}\u00a0: ''{0}'' doit \u00eatre un nombre compris entre -2147483648 et 2147483647. Exemple\u00a0: {1}
-javax.faces.converter.LongConverter.LONG={2}\u00a0: ''{0}'' doit \u00eatre un nombre compos\u00e9 d'un ou de plusieurs chiffres.
-javax.faces.converter.LongConverter.LONG_detail={2}\u00a0: ''{0}'' doit \u00eatre un nombre compris entre -9223372036854775808 et 9223372036854775807. Exemple\u00a0: {1}
-javax.faces.converter.NumberConverter.CURRENCY={2}\u00a0: ''{0}'' n'a pas pu \u00eatre interpr\u00e9t\u00e9 en tant que valeur mon\u00e9taire.
-javax.faces.converter.NumberConverter.CURRENCY_detail={2}\u00a0: ''{0}'' n'a pas pu \u00eatre interpr\u00e9t\u00e9 en tant que valeur mon\u00e9taire. Exemple\u00a0: {1}
-javax.faces.converter.NumberConverter.PERCENT={2}\u00a0: ''{0}'' n'a pas pu \u00eatre interpr\u00e9t\u00e9 en tant que pourcentage.
-javax.faces.converter.NumberConverter.PERCENT_detail={2}\u00a0: ''{0}'' n'a pas pu \u00eatre interpr\u00e9t\u00e9 en tant que pourcentage. Exemple\u00a0: {1}
-javax.faces.converter.NumberConverter.NUMBER={2}\u00a0: ''{0}'' n'est pas un nombre.
-javax.faces.converter.NumberConverter.NUMBER_detail={2}\u00a0: ''{0}'' n'est pas un nombre. Exemple\u00a0: {1}
-javax.faces.converter.NumberConverter.PATTERN={2}\u00a0: ''{0}'' n'est pas un format num\u00e9rique.
-javax.faces.converter.NumberConverter.PATTERN_detail={2}\u00a0: ''{0}'' n'est pas un format num\u00e9rique. Exemple\u00a0: {1}
-javax.faces.converter.ShortConverter.SHORT={2}\u00a0: ''{0}'' doit \u00eatre un nombre compos\u00e9 d'un ou de plusieurs chiffres.
-javax.faces.converter.ShortConverter.SHORT_detail={2}\u00a0: ''{0}'' doit \u00eatre un nombre compris entre -32768 et 32767. Exemple\u00a0: {1}
-javax.faces.converter.STRING={1}\u00a0: impossible de convertir ''{0}'' en cha\u00eene.
+javax.faces.converter.BigDecimalConverter.DECIMAL={2}\u00a0: \u00ab{0}\u00bb doit \u00eatre un nombre d\u00e9cimal sign\u00e9.
+javax.faces.converter.BigDecimalConverter.DECIMAL_detail={2}\u00a0: \u00ab{0}\u00bb doit \u00eatre un nombre d\u00e9cimal sign\u00e9 compos\u00e9 de z\u00e9ro ou de plusieurs chiffres, pouvant \u00eatre suivis d\u2019une virgule et d\u2019une fraction.  Exemple\u00a0: {1} 
+javax.faces.converter.BigIntegerConverter.BIGINTEGER={2}\u00a0: \u00ab{0}\u00bb doit \u00eatre un nombre compos\u00e9 d\u2019un ou de plusieurs chiffres.
+javax.faces.converter.BigIntegerConverter.BIGINTEGER_detail={2}\u00a0: \u00ab{0}\u00bb doit \u00eatre un nombre compos\u00e9 d\u2019un ou de plusieurs chiffres. Exemple\u00a0: {1} 
+javax.faces.converter.BooleanConverter.BOOLEAN={1}\u00a0: \u00ab{0}\u00bb doit pr\u00e9senter la valeur \u2019true\u2019 ou \u2019false\u2019.
+javax.faces.converter.BooleanConverter.BOOLEAN_detail={1}\u00a0: \u00ab{0}\u00bb doit pr\u00e9senter la valeur \u2019true\u2019 ou \u2019false\u2019.  Toute valeur diff\u00e9rente de \u2019true\u2019 sera \u00e9valu\u00e9e comme \u00e9tant \u2019false\u2019.
+javax.faces.converter.ByteConverter.BYTE={2}\u00a0: \u00ab{0}\u00bb doit \u00eatre un nombre compris entre -128 et 127.
+javax.faces.converter.ByteConverter.BYTE_detail={2}\u00a0: \u00ab{0}\u00bb doit \u00eatre un nombre compris entre -128 et 127.  Exemple\u00a0: {1} 
+javax.faces.converter.CharacterConverter.CHARACTER={1}\u00a0: \u00ab{0}\u00bb doit \u00eatre un caract\u00e8re valide.
+javax.faces.converter.CharacterConverter.CHARACTER_detail={1}\u00a0: \u00ab{0}\u00bb doit \u00eatre un caract\u00e8re ASCII valide.
+javax.faces.converter.DateTimeConverter.DATE={2}\u00a0: \u00ab{0}\u00bb n\u2019a pas pu \u00eatre interpr\u00e9t\u00e9 en tant que date.
+javax.faces.converter.DateTimeConverter.DATE_detail={2}\u00a0: \u00ab{0}\u00bb n\u2019a pas pu \u00eatre interpr\u00e9t\u00e9 en tant que date. Exemple\u00a0: {1} 
+javax.faces.converter.DateTimeConverter.TIME={2}\u00a0: \u00ab{0}\u00bb n\u2019a pas pu \u00eatre interpr\u00e9t\u00e9 en tant qu\u2019heure.
+javax.faces.converter.DateTimeConverter.TIME_detail={2}\u00a0: \u00ab{0}\u00bb n\u2019a pas pu \u00eatre interpr\u00e9t\u00e9 en tant qu\u2019heure. Exemple\u00a0: {1} 
+javax.faces.converter.DateTimeConverter.DATETIME={2}\u00a0: \u00ab{0}\u00bb n\u2019a pas pu \u00eatre interpr\u00e9t\u00e9 en tant que date et heure.
+javax.faces.converter.DateTimeConverter.DATETIME_detail={2}\u00a0: \u00ab{0}\u00bb n\u2019a pas pu \u00eatre interpr\u00e9t\u00e9 en tant que date et heure. Exemple\u00a0: {1} 
+javax.faces.converter.DateTimeConverter.PATTERN_TYPE={1}\u00a0: un attribut \u2019pattern\u2019 ou \u2019type\u2019 doit \u00eatre sp\u00e9cifi\u00e9 pour convertir la valeur \u00ab{0}\u00bb.
+javax.faces.converter.DoubleConverter.DOUBLE={2}\u00a0: \u00ab{0}\u00bb doit \u00eatre un nombre compos\u00e9 d\u2019un ou de plusieurs chiffres.
+javax.faces.converter.DoubleConverter.DOUBLE_detail={2}\u00a0: \u00ab{0}\u00bb doit \u00eatre un nombre compris entre 4.9E-324 et 1.7976931348623157E308. Exemple\u00a0: {1} 
+javax.faces.converter.EnumConverter.ENUM={2}\u00a0: \u00ab{0}\u00bb doit pouvoir \u00eatre converti en une valeur Enum.
+javax.faces.converter.EnumConverter.ENUM_detail={2}\u00a0: \u00ab{0}\u00bb doit pouvoir \u00eatre converti en une valeur Enum \u00e0 partir de la valeur Enum contenant la constante \u00ab{1}\u00bb.
+javax.faces.converter.EnumConverter.ENUM_NO_CLASS={1}\u00a0: \u00ab{0}\u00bb doit pouvoir \u00eatre converti en une valeur Enum \u00e0 partir de la valeur Enum, mais aucune classe Enum n\u2019est fournie.
+javax.faces.converter.EnumConverter.ENUM_NO_CLASS_detail={1}\u00a0: \u00ab{0}\u00bb doit pouvoir \u00eatre converti en une valeur Enum \u00e0 partir de la valeur Enum, mais aucune classe Enum n\u2019est fournie.
+javax.faces.converter.FloatConverter.FLOAT={2}\u00a0: \u00ab{0}\u00bb doit \u00eatre un nombre compos\u00e9 d\u2019un ou de plusieurs chiffres.
+javax.faces.converter.FloatConverter.FLOAT_detail={2}\u00a0: \u00ab{0}\u00bb doit \u00eatre un nombre compris entre 1.4E-45 et 3.4028235E38. Exemple\u00a0: {1}
+javax.faces.converter.IntegerConverter.INTEGER={2}\u00a0: \u00ab{0}\u00bb doit \u00eatre un nombre compos\u00e9 d\u2019un ou de plusieurs chiffres.
+javax.faces.converter.IntegerConverter.INTEGER_detail={2}\u00a0: \u00ab{0}\u00bb doit \u00eatre un nombre compris entre -2147483648 et 2147483647. Exemple\u00a0: {1}
+javax.faces.converter.LongConverter.LONG={2}\u00a0: \u00ab{0}\u00bb doit \u00eatre un nombre compos\u00e9 d\u2019un ou de plusieurs chiffres.
+javax.faces.converter.LongConverter.LONG_detail={2}\u00a0: \u00ab{0}\u00bb doit \u00eatre un nombre compris entre -9223372036854775808 et 9223372036854775807. Exemple\u00a0: {1}
+javax.faces.converter.NumberConverter.CURRENCY={2}\u00a0: \u00ab{0}\u00bb n\u2019a pas pu \u00eatre interpr\u00e9t\u00e9 en tant que valeur mon\u00e9taire.
+javax.faces.converter.NumberConverter.CURRENCY_detail={2}\u00a0: \u00ab{0}\u00bb n\u2019a pas pu \u00eatre interpr\u00e9t\u00e9 en tant que valeur mon\u00e9taire. Exemple\u00a0: {1}
+javax.faces.converter.NumberConverter.PERCENT={2}\u00a0: \u00ab{0}\u00bb n\u2019a pas pu \u00eatre interpr\u00e9t\u00e9 en tant que pourcentage.
+javax.faces.converter.NumberConverter.PERCENT_detail={2}\u00a0: \u00ab{0}\u00bb n\u2019a pas pu \u00eatre interpr\u00e9t\u00e9 en tant que pourcentage. Exemple\u00a0: {1}
+javax.faces.converter.NumberConverter.NUMBER={2}\u00a0: \u00ab{0}\u00bb n\u2019est pas un nombre.
+javax.faces.converter.NumberConverter.NUMBER_detail={2}\u00a0: \u00ab{0}\u00bb n\u2019est pas un nombre. Exemple\u00a0: {1}
+javax.faces.converter.NumberConverter.PATTERN={2}\u00a0: \u00ab{0}\u00bb n\u2019est pas un format num\u00e9rique.
+javax.faces.converter.NumberConverter.PATTERN_detail={2}\u00a0: \u00ab{0}\u00bb n\u2019est pas un format num\u00e9rique. Exemple\u00a0: {1}
+javax.faces.converter.ShortConverter.SHORT={2}\u00a0: \u00ab{0}\u00bb doit \u00eatre un nombre compos\u00e9 d\u2019un ou de plusieurs chiffres.
+javax.faces.converter.ShortConverter.SHORT_detail={2}\u00a0: \u00ab{0}\u00bb doit \u00eatre un nombre compris entre -32768 et 32767. Exemple\u00a0: {1}
+javax.faces.converter.STRING={1}\u00a0: impossible de convertir \u00ab{0}\u00bb en cha\u00eene.
 
 
 # ==============================================================================
@@ -92,21 +132,21 @@ javax.faces.converter.STRING={1}\u00a0: impossible de convertir ''{0}'' en cha\u
 # ==============================================================================
 javax.faces.validator.DoubleRangeValidator.MAXIMUM={1}\u00a0: erreur de validation. La valeur est sup\u00e9rieure \u00e0 la valeur maximale autoris\u00e9e, "{0}".
 javax.faces.validator.DoubleRangeValidator.MINIMUM={1}\u00a0: erreur de validation. La valeur est inf\u00e9rieure \u00e0 la valeur minimale autoris\u00e9e, "{0}".
-javax.faces.validator.DoubleRangeValidator.NOT_IN_RANGE={2}\u00a0: erreur de validation. L'attribut sp\u00e9cifi\u00e9 n'est pas compris entre les valeurs attendues {0} et {1}.
-javax.faces.validator.DoubleRangeValidator.TYPE={0}\u00a0: erreur de validation. La valeur n'est pas du type correct.
+javax.faces.validator.DoubleRangeValidator.NOT_IN_RANGE={2}\u00a0: erreur de validation. L\u2019attribut sp\u00e9cifi\u00e9 n\u2019est pas compris entre les valeurs attendues {0} et {1}.
+javax.faces.validator.DoubleRangeValidator.TYPE={0}\u00a0: erreur de validation. La valeur n\u2019est pas du type correct.
 javax.faces.validator.LengthValidator.MAXIMUM={1}\u00a0: erreur de validation. La longueur est sup\u00e9rieure \u00e0 la valeur maximale autoris\u00e9e, "{0}".
 javax.faces.validator.LengthValidator.MINIMUM={1}\u00a0: erreur de validation. La longueur est inf\u00e9rieure \u00e0 la valeur minimale autoris\u00e9e, "{0}".
 javax.faces.validator.LongRangeValidator.MAXIMUM={1}\u00a0: erreur de validation. La valeur est sup\u00e9rieure \u00e0 la valeur maximale autoris\u00e9e, "{0}".
 javax.faces.validator.LongRangeValidator.MINIMUM={1}\u00a0: erreur de validation. La valeur est inf\u00e9rieure \u00e0 la valeur minimale autoris\u00e9e, "{0}".
-javax.faces.validator.LongRangeValidator.NOT_IN_RANGE={2}\u00a0: erreur de validation. L'attribut sp\u00e9cifi\u00e9 n'est pas compris entre les valeurs attendues {0} et {1}.
-javax.faces.validator.LongRangeValidator.TYPE={0}\u00a0: erreur de validation. La valeur n'est pas du type correct.
-javax.faces.validator.NOT_IN_RANGE=Erreur de validation\u00a0: l'attribut sp\u00e9cifi\u00e9 n'est pas compris entre les valeurs attendues {0} et {1}.
-javax.faces.validator.RegexValidator.PATTERN_NOT_SET=Le mod\u00e8le d'expression r\u00e9guli\u00e8re doit \u00eatre d\u00e9fini.
-javax.faces.validator.RegexValidator.PATTERN_NOT_SET_detail=La valeur d\u00e9finie du mod\u00e8le d'expression r\u00e9guli\u00e8re ne peut pas \u00eatre vide.
-javax.faces.validator.RegexValidator.NOT_MATCHED=Discordance du mod\u00e8le d'expression r\u00e9guli\u00e8re.
-javax.faces.validator.RegexValidator.NOT_MATCHED_detail=Discordance du mod\u00e8le d'expression r\u00e9guli\u00e8re ''{0}''.
-javax.faces.validator.RegexValidator.MATCH_EXCEPTION=Erreur dans l'expression r\u00e9guli\u00e8re.
-javax.faces.validator.RegexValidator.MATCH_EXCEPTION_detail=Erreur dans l'expression r\u00e9guli\u00e8re,  ''{0}''
+javax.faces.validator.LongRangeValidator.NOT_IN_RANGE={2}\u00a0: erreur de validation. L\u2019attribut sp\u00e9cifi\u00e9 n\u2019est pas compris entre les valeurs attendues {0} et {1}.
+javax.faces.validator.LongRangeValidator.TYPE={0}\u00a0: erreur de validation. La valeur n\u2019est pas du type correct.
+javax.faces.validator.NOT_IN_RANGE=Erreur de validation\u00a0: l\u2019attribut sp\u00e9cifi\u00e9 n\u2019est pas compris entre les valeurs attendues {0} et {1}.
+javax.faces.validator.RegexValidator.PATTERN_NOT_SET=Le mod\u00e8le d\u2019expression r\u00e9guli\u00e8re doit \u00eatre d\u00e9fini.
+javax.faces.validator.RegexValidator.PATTERN_NOT_SET_detail=La valeur d\u00e9finie du mod\u00e8le d\u2019expression r\u00e9guli\u00e8re ne peut pas \u00eatre vide.
+javax.faces.validator.RegexValidator.NOT_MATCHED=Discordance du mod\u00e8le d\u2019expression r\u00e9guli\u00e8re.
+javax.faces.validator.RegexValidator.NOT_MATCHED_detail=Discordance du mod\u00e8le d\u2019expression r\u00e9guli\u00e8re \u00ab{0}\u00bb.
+javax.faces.validator.RegexValidator.MATCH_EXCEPTION=Erreur dans l\u2019expression r\u00e9guli\u00e8re.
+javax.faces.validator.RegexValidator.MATCH_EXCEPTION_detail=Erreur dans l\u2019expression r\u00e9guli\u00e8re,  \u00ab{0}\u00bb
 javax.faces.validator.BeanValidator.MESSAGE={0}
 
 
diff --git a/jsf-api/src/main/java/javax/faces/Messages_ja.properties b/jsf-api/src/main/java/javax/faces/Messages_ja.properties
index 9d0e9a4..a0c7b27 100644
--- a/jsf-api/src/main/java/javax/faces/Messages_ja.properties
+++ b/jsf-api/src/main/java/javax/faces/Messages_ja.properties
@@ -1,3 +1,43 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
  # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  #
  # Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
@@ -51,8 +91,8 @@ javax.faces.converter.BigIntegerConverter.BIGINTEGER={2}: ''{0}'' \u306f 1 \u684
 javax.faces.converter.BigIntegerConverter.BIGINTEGER_detail={2}: ''{0}'' \u306f 1 \u6841\u4ee5\u4e0a\u306e\u6570\u5b57\u3067\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002\u4f8b: {1} 
 javax.faces.converter.BooleanConverter.BOOLEAN={1}: ''{0}'' \u306f 'true' \u307e\u305f\u306f 'false' \u3067\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002
 javax.faces.converter.BooleanConverter.BOOLEAN_detail={1}: ''{0}'' \u306f 'true' \u307e\u305f\u306f 'false' \u3067\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002'true' \u4ee5\u5916\u306e\u5024\u306f\u3059\u3079\u3066 'false' \u306b\u8a55\u4fa1\u3055\u308c\u307e\u3059\u3002
-javax.faces.converter.ByteConverter.BYTE={2}: ''{0}'' \u306f 0 \u3068 255 \u306e\u9593\u306e\u6570\u5b57\u3067\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002
-javax.faces.converter.ByteConverter.BYTE_detail={2}: ''{0}'' \u306f 0 \u3068 255 \u306e\u9593\u306e\u6570\u5b57\u3067\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002\u4f8b: {1} 
+javax.faces.converter.ByteConverter.BYTE={2}: ''{0}'' \u306f -128 \u3068 127 \u306e\u9593\u306e\u6570\u5b57\u3067\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002
+javax.faces.converter.ByteConverter.BYTE_detail={2}: ''{0}'' \u306f -128 \u3068 127 \u306e\u9593\u306e\u6570\u5b57\u3067\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002\u4f8b: {1} 
 javax.faces.converter.CharacterConverter.CHARACTER={1}: ''{0}'' \u306f\u6709\u52b9\u306a\u6587\u5b57\u3067\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002
 javax.faces.converter.CharacterConverter.CHARACTER_detail={1}: ''{0}'' \u306f\u6709\u52b9\u306a ASCII \u6587\u5b57\u3067\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002
 javax.faces.converter.DateTimeConverter.DATE={2}: ''{0}'' \u3092\u65e5\u4ed8\u3068\u3057\u3066\u89e3\u91c8\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002
diff --git a/jsf-api/src/main/java/javax/faces/Messages_ko.properties b/jsf-api/src/main/java/javax/faces/Messages_ko.properties
index 9054eb3..e927403 100644
--- a/jsf-api/src/main/java/javax/faces/Messages_ko.properties
+++ b/jsf-api/src/main/java/javax/faces/Messages_ko.properties
@@ -1,3 +1,43 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
  # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  #
  # Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
@@ -51,8 +91,8 @@ javax.faces.converter.BigIntegerConverter.BIGINTEGER={2}: ''{0}''\uc740(\ub294)
 javax.faces.converter.BigIntegerConverter.BIGINTEGER_detail={2}: ''{0}''\uc740(\ub294) \ud55c \uc790\ub9ac \uc774\uc0c1\uc758 \uc22b\uc790\uc5ec\uc57c \ud569\ub2c8\ub2e4. \uc608: {1} 
 javax.faces.converter.BooleanConverter.BOOLEAN={1}: ''{0}''\uc740(\ub294) 'true' \ub610\ub294 'false'\uc5ec\uc57c \ud569\ub2c8\ub2e4.
 javax.faces.converter.BooleanConverter.BOOLEAN_detail={1}: ''{0}''\uc740(\ub294) 'true' \ub610\ub294 'false'\uc5ec\uc57c \ud569\ub2c8\ub2e4.  'true' \uc774\uc678\uc758 \uac12\uc740 'false'\ub85c \ud3c9\uac00\ub429\ub2c8\ub2e4.
-javax.faces.converter.ByteConverter.BYTE={2}: ''{0}''\uc740(\ub294) 0\uacfc 255 \uc0ac\uc774\uc758 \uc22b\uc790\uc5ec\uc57c \ud569\ub2c8\ub2e4.
-javax.faces.converter.ByteConverter.BYTE_detail={2}: ''{0}''\uc740(\ub294) 0\uacfc 255 \uc0ac\uc774\uc758 \uc22b\uc790\uc5ec\uc57c \ud569\ub2c8\ub2e4.  \uc608: {1} 
+javax.faces.converter.ByteConverter.BYTE={2}: ''{0}''\uc740(\ub294) -128\uacfc 127 \uc0ac\uc774\uc758 \uc22b\uc790\uc5ec\uc57c \ud569\ub2c8\ub2e4.
+javax.faces.converter.ByteConverter.BYTE_detail={2}: ''{0}''\uc740(\ub294) -128\uacfc 127 \uc0ac\uc774\uc758 \uc22b\uc790\uc5ec\uc57c \ud569\ub2c8\ub2e4.  \uc608: {1} 
 javax.faces.converter.CharacterConverter.CHARACTER={1}: ''{0}''\uc740(\ub294) \uc720\ud6a8\ud55c \ubb38\uc790\uc5ec\uc57c \ud569\ub2c8\ub2e4.
 javax.faces.converter.CharacterConverter.CHARACTER_detail={1}: ''{0}''\uc740(\ub294) \uc720\ud6a8\ud55c ASCII \ubb38\uc790\uc5ec\uc57c \ud569\ub2c8\ub2e4.
 javax.faces.converter.DateTimeConverter.DATE={2}: ''{0}''\uc744(\ub97c) \ub0a0\uc9dc\ub85c \uc778\uc2dd\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
diff --git a/jsf-api/src/main/java/javax/faces/Messages_pt_BR.properties b/jsf-api/src/main/java/javax/faces/Messages_pt_BR.properties
index cd80b89..252adb4 100644
--- a/jsf-api/src/main/java/javax/faces/Messages_pt_BR.properties
+++ b/jsf-api/src/main/java/javax/faces/Messages_pt_BR.properties
@@ -1,3 +1,43 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
  # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  #
  # Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
@@ -51,8 +91,8 @@ javax.faces.converter.BigIntegerConverter.BIGINTEGER={2}: ''{0}'' deve ser um n\
 javax.faces.converter.BigIntegerConverter.BIGINTEGER_detail={2}: ''{0}'' deve ser um n\u00famero formado por um ou mais d\u00edgitos. Exemplo: {1} 
 javax.faces.converter.BooleanConverter.BOOLEAN={1}: ''{0}'' deve ser 'verdadeiro' ou 'falso'.
 javax.faces.converter.BooleanConverter.BOOLEAN_detail={1}: ''{0}'' deve ser 'verdadeiro' ou 'falso'.  Qualquer valor diferente de 'verdadeiro' se avaliar\u00e1 como 'falso'.
-javax.faces.converter.ByteConverter.BYTE={2}: ''{0}'' deve ser um n\u00famero entre 0 e 255.
-javax.faces.converter.ByteConverter.BYTE_detail={2}: ''{0}'' deve ser um n\u00famero entre 0 e 255.  Exemplo: {1} 
+javax.faces.converter.ByteConverter.BYTE={2}: ''{0}'' deve ser um n\u00famero entre -128 e 127.
+javax.faces.converter.ByteConverter.BYTE_detail={2}: ''{0}'' deve ser um n\u00famero entre -128 e 127.  Exemplo: {1} 
 javax.faces.converter.CharacterConverter.CHARACTER={1}: ''{0}'' deve ser um caractere v\u00e1lido.
 javax.faces.converter.CharacterConverter.CHARACTER_detail={1}: ''{0}'' deve ser um caractere v\u00e1lido ASCII.
 javax.faces.converter.DateTimeConverter.DATE={2}: n\u00e3o foi poss\u00edvel reconhecer ''{0}'' como uma data.
diff --git a/jsf-api/src/main/java/javax/faces/Messages_zh_CN.properties b/jsf-api/src/main/java/javax/faces/Messages_zh_CN.properties
index 1c90b69..8705c4e 100644
--- a/jsf-api/src/main/java/javax/faces/Messages_zh_CN.properties
+++ b/jsf-api/src/main/java/javax/faces/Messages_zh_CN.properties
@@ -1,3 +1,43 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 2011 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
  # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  #
  # Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
@@ -51,8 +91,8 @@ javax.faces.converter.BigIntegerConverter.BIGINTEGER={2}: "{0}" \u5fc5\u987b\u66
 javax.faces.converter.BigIntegerConverter.BIGINTEGER_detail={2}: "{0}" \u5fc5\u987b\u662f\u7531\u4e00\u4e2a\u6216\u591a\u4e2a\u6570\u5b57\u6784\u6210\u7684\u6570\u503c\u3002\u793a\u4f8b: {1} 
 javax.faces.converter.BooleanConverter.BOOLEAN={1}: "{0}" \u5fc5\u987b\u662f "true" \u6216 "false"\u3002
 javax.faces.converter.BooleanConverter.BOOLEAN_detail={1}: "{0}" \u5fc5\u987b\u662f "true" \u6216 "false"\u3002\u975e "true" \u503c\u90fd\u5c06\u4f1a\u88ab\u89c6\u4e3a "false"\u3002
-javax.faces.converter.ByteConverter.BYTE={2}: "{0}" \u5fc5\u987b\u662f\u4ecb\u4e8e 0 \u548c 255 \u4e4b\u95f4\u7684\u6570\u503c\u3002
-javax.faces.converter.ByteConverter.BYTE_detail={2}: "{0}" \u5fc5\u987b\u662f\u4ecb\u4e8e 0 \u548c 255 \u4e4b\u95f4\u7684\u6570\u503c\u3002\u793a\u4f8b: {1} 
+javax.faces.converter.ByteConverter.BYTE={2}: "{0}" \u5fc5\u987b\u662f\u4ecb\u4e8e -128 \u548c 127 \u4e4b\u95f4\u7684\u6570\u503c\u3002
+javax.faces.converter.ByteConverter.BYTE_detail={2}: "{0}" \u5fc5\u987b\u662f\u4ecb\u4e8e -128 \u548c 127 \u4e4b\u95f4\u7684\u6570\u503c\u3002\u793a\u4f8b: {1} 
 javax.faces.converter.CharacterConverter.CHARACTER={1}: "{0}" \u5fc5\u987b\u662f\u6709\u6548\u5b57\u7b26\u3002
 javax.faces.converter.CharacterConverter.CHARACTER_detail={1}: "{0}" \u5fc5\u987b\u662f\u6709\u6548\u7684 ASCII \u5b57\u7b26\u3002
 javax.faces.converter.DateTimeConverter.DATE={2}\uff1a\u65e0\u6cd5\u5c06 "{0}" \u7406\u89e3\u4e3a\u65e5\u671f\u3002
@@ -94,8 +134,8 @@ javax.faces.validator.DoubleRangeValidator.MAXIMUM={1}\uff1a\u9a8c\u8bc1\u9519\u
 javax.faces.validator.DoubleRangeValidator.MINIMUM={1}\uff1a\u9a8c\u8bc1\u9519\u8bef\uff1a\u503c\u5c0f\u4e8e\u5141\u8bb8\u7684\u6700\u5c0f\u503c "{0}"
 javax.faces.validator.DoubleRangeValidator.NOT_IN_RANGE={2}\uff1a\u9a8c\u8bc1\u9519\u8bef\uff1a\u6307\u5b9a\u7684\u5c5e\u6027\u4e0d\u5728\u9884\u671f\u503c {0} \u548c {1} \u4e4b\u95f4\u3002
 javax.faces.validator.DoubleRangeValidator.TYPE={0}\uff1a\u9a8c\u8bc1\u9519\u8bef\uff1a\u503c\u4e0d\u662f\u6b63\u786e\u7684\u7c7b\u578b
-javax.faces.validator.LengthValidator.MAXIMUM={1}\u68c0 \u9a8c \u9519 \u8bef \uff1a \u957f \u5ea6 \u6bd4 \u5141 \u8bb8 \u7684 \u6700 \u591a \u4f1f \u5927 ''{0}''
-javax.faces.validator.LengthValidator.MINIMUM={1}\u68c0 \u9a8c \u9519 \u8bef \uff1a \u957f \u5ea6 \u6bd4 \u5141 \u8bb8 \u7684 \u6700 \u5c0f \u9650 \u5ea6 \u662f \u4e8e ''{0}''
+javax.faces.validator.LengthValidator.MAXIMUM={1}\uff1a\u9a8c\u8bc1\u9519\u8bef\uff1a\u957f\u5ea6\u5927\u4e8e\u5141\u8bb8\u7684\u6700\u5927\u503c "{0}"
+javax.faces.validator.LengthValidator.MINIMUM={1}\uff1a\u9a8c\u8bc1\u9519\u8bef\uff1a\u957f\u5ea6\u5c0f\u4e8e\u5141\u8bb8\u7684\u6700\u5c0f\u503c "{0}"
 javax.faces.validator.LongRangeValidator.MAXIMUM={1}\uff1a\u9a8c\u8bc1\u9519\u8bef\uff1a\u503c\u5927\u4e8e\u5141\u8bb8\u7684\u6700\u5927\u503c "{0}"
 javax.faces.validator.LongRangeValidator.MINIMUM={1}\uff1a\u9a8c\u8bc1\u9519\u8bef\uff1a\u503c\u5c0f\u4e8e\u5141\u8bb8\u7684\u6700\u5c0f\u503c "{0}"
 javax.faces.validator.LongRangeValidator.NOT_IN_RANGE={2}\uff1a\u9a8c\u8bc1\u9519\u8bef\uff1a\u6307\u5b9a\u7684\u5c5e\u6027\u4e0d\u5728\u9884\u671f\u503c {0} \u548c {1} \u4e4b\u95f4\u3002
@@ -108,5 +148,3 @@ javax.faces.validator.RegexValidator.NOT_MATCHED_detail="{0}" \u7684 Regex \u6a2
 javax.faces.validator.RegexValidator.MATCH_EXCEPTION=\u6b63\u5219\u8868\u8fbe\u5f0f\u4e2d\u53d1\u751f\u9519\u8bef\u3002
 javax.faces.validator.RegexValidator.MATCH_EXCEPTION_detail=\u6b63\u5219\u8868\u8fbe\u5f0f\u4e2d\u53d1\u751f\u9519\u8bef\uff0c"{0}"
 javax.faces.validator.BeanValidator.MESSAGE={0}
-
-
diff --git a/jsf-api/src/main/java/javax/faces/Messages_zh_HK.properties b/jsf-api/src/main/java/javax/faces/Messages_zh_HK.properties
new file mode 100644
index 0000000..224fc94
--- /dev/null
+++ b/jsf-api/src/main/java/javax/faces/Messages_zh_HK.properties
@@ -0,0 +1,150 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 2011 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
+ # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ #
+ # Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+ #
+ # The contents of this file are subject to the terms of either the GNU
+ # General Public License Version 2 only ("GPL") or the Common Development
+ # and Distribution License("CDDL") (collectively, the "License").  You
+ # may not use this file except in compliance with the License. You can obtain
+ # a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
+ # or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ # language governing permissions and limitations under the License.
+ #
+ # When distributing the software, include this License Header Notice in each
+ # file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
+ # Sun designates this particular file as subject to the "Classpath" exception
+ # as provided by Sun in the GPL Version 2 section of the License file that
+ # accompanied this code.  If applicable, add the following below the License
+ # Header, with the fields enclosed by brackets [] replaced by your own
+ # identifying information: "Portions Copyrighted [year]
+ # [name of copyright owner]"
+ #
+ # Contributor(s):
+ #
+ # If you wish your version of this file to be governed by only the CDDL or
+ # only the GPL Version 2, indicate your decision by adding "[Contributor]
+ # elects to include this software in this distribution under the [CDDL or GPL
+ # Version 2] license."  If you don't indicate a single choice of license, a
+ # recipient has the option to distribute your version of this file under
+ # either the CDDL, the GPL Version 2 or to extend the choice of license to
+ # its licensees as provided above.  However, if you add GPL Version 2 code
+ # and therefore, elected the GPL Version 2 license, then the option applies
+ # only if the new code is made subject to such option by the copyright
+ # holder.
+ #
+
+# ==============================================================================
+# Component Errors
+# ==============================================================================
+javax.faces.component.UIInput.CONVERSION={0}\uff1a\u767c\u751f\u8f49\u63db\u932f\u8aa4\u3002
+javax.faces.component.UIInput.REQUIRED={0}\uff1a\u9a57\u8b49\u932f\u8aa4\uff1a\u5fc5\u9808\u6709\u503c\u3002
+javax.faces.component.UIInput.UPDATE={0}\uff1a\u8655\u7406\u60a8\u9001\u51fa\u7684\u8cc7\u8a0a\u6642\u767c\u751f\u932f\u8aa4\u3002 
+javax.faces.component.UISelectOne.INVALID={0}\uff1a\u9a57\u8b49\u932f\u8aa4\uff1a\u503c\u7121\u6548
+javax.faces.component.UISelectMany.INVALID={0}\uff1a\u9a57\u8b49\u932f\u8aa4\uff1a\u503c\u7121\u6548
+
+# ==============================================================================
+# Converter Errors
+# ==============================================================================
+javax.faces.converter.BigDecimalConverter.DECIMAL={2}: ''{0}'' \u5fc5\u9808\u662f\u5e36\u6b63\u8ca0\u865f\u7684\u5341\u9032\u5236\u6578\u5b57\u3002
+javax.faces.converter.BigDecimalConverter.DECIMAL_detail={2}: ''{0}'' \u5fc5\u9808\u662f\u5e36\u6b63\u8ca0\u865f\u7684\u5341\u9032\u5236\u6578\u5b57\uff0c\u5305\u62ec\u96f6\u4f4d\u6216\u591a\u4f4d\u6578\uff0c\u53ef\u4ee5\u5f8c\u63a5\u5c0f\u6578\u9ede\u548c\u5206\u6578\u3002\u7bc4\u4f8b: {1} 
+javax.faces.converter.BigIntegerConverter.BIGINTEGER={2}: ''{0}'' \u5fc5\u9808\u662f\u4e00\u4f4d\u6216\u591a\u4f4d\u6578\u3002
+javax.faces.converter.BigIntegerConverter.BIGINTEGER_detail={2}: ''{0}'' \u5fc5\u9808\u662f\u4e00\u4f4d\u6216\u591a\u4f4d\u6578\u3002\u7bc4\u4f8b: {1} 
+javax.faces.converter.BooleanConverter.BOOLEAN={1}: ''{0}'' \u5fc5\u9808\u662f\u300ctrue\u300d\u6216\u300cfalse\u300d\u3002
+javax.faces.converter.BooleanConverter.BOOLEAN_detail={1}: ''{0}'' \u5fc5\u9808\u662f\u300ctrue\u300d\u6216\u300cfalse\u300d\u3002\u300ctrue\u300d\u4e4b\u5916\u7684\u4efb\u4f55\u503c\u5747\u6703\u8996\u70ba\u300cfalse\u300d\u3002
+javax.faces.converter.ByteConverter.BYTE={2}: ''{0}'' \u5fc5\u9808\u662f\u4ecb\u65bc -128 \u5230 127 \u4e4b\u9593\u7684\u6578\u5b57\u3002
+javax.faces.converter.ByteConverter.BYTE_detail={2}: ''{0}'' \u5fc5\u9808\u662f\u4ecb\u65bc -128 \u5230 127 \u4e4b\u9593\u7684\u6578\u5b57\u3002\u7bc4\u4f8b: {1} 
+javax.faces.converter.CharacterConverter.CHARACTER={1}: ''{0}'' \u5fc5\u9808\u662f\u6709\u6548\u5b57\u5143\u3002
+javax.faces.converter.CharacterConverter.CHARACTER_detail={1}: ''{0}'' \u5fc5\u9808\u662f\u6709\u6548\u7684 ASCII \u5b57\u5143\u3002
+javax.faces.converter.DateTimeConverter.DATE={2}\uff1a\u7121\u6cd5\u5c07 ''{0}'' \u89e3\u8b80\u70ba\u65e5\u671f\u3002
+javax.faces.converter.DateTimeConverter.DATE_detail={2}\uff1a\u7121\u6cd5\u5c07 ''{0}'' \u89e3\u8b80\u70ba\u65e5\u671f\u3002\u7bc4\u4f8b: {1} 
+javax.faces.converter.DateTimeConverter.TIME={2}\uff1a\u7121\u6cd5\u5c07 ''{0}'' \u89e3\u8b80\u70ba\u6642\u9593\u3002
+javax.faces.converter.DateTimeConverter.TIME_detail={2}\uff1a\u7121\u6cd5\u5c07 ''{0}'' \u89e3\u8b80\u70ba\u6642\u9593\u3002\u7bc4\u4f8b: {1} 
+javax.faces.converter.DateTimeConverter.DATETIME={2}\uff1a\u7121\u6cd5\u5c07 ''{0}'' \u89e3\u8b80\u70ba\u65e5\u671f\u548c\u6642\u9593\u3002
+javax.faces.converter.DateTimeConverter.DATETIME_detail={2}\uff1a\u7121\u6cd5\u5c07 ''{0}'' \u89e3\u8b80\u70ba\u65e5\u671f\u548c\u6642\u9593\u3002\u7bc4\u4f8b: {1} 
+javax.faces.converter.DateTimeConverter.PATTERN_TYPE={1}\uff1a\u5fc5\u9808\u6307\u5b9a\u300cpattern\u300d\u6216\u300ctype\u300d\u5c6c\u6027\u624d\u80fd\u8f49\u63db\u503c ''{0}''\u3002
+javax.faces.converter.DoubleConverter.DOUBLE={2}: ''{0}'' \u5fc5\u9808\u662f\u4e00\u4f4d\u6216\u591a\u4f4d\u6578\u3002
+javax.faces.converter.DoubleConverter.DOUBLE_detail={2}: ''{0}'' \u5fc5\u9808\u662f\u4ecb\u65bc 4.9E-324 \u5230 1.7976931348623157E308 \u4e4b\u9593\u7684\u6578\u5b57\u3002\u7bc4\u4f8b: {1} 
+javax.faces.converter.EnumConverter.ENUM={2}: ''{0}'' \u5fc5\u9808\u53ef\u8f49\u63db\u70ba enum\u3002
+javax.faces.converter.EnumConverter.ENUM_detail={2}: ''{0}'' \u5fc5\u9808\u53ef\u5f9e\u5305\u542b\u5e38\u6578\u300c{1}\u300d\u7684 enum \u8f49\u63db\u70ba enum\u3002
+javax.faces.converter.EnumConverter.ENUM_NO_CLASS={1}: ''{0}'' \u5fc5\u9808\u53ef\u5f9e enum \u8f49\u63db\u70ba enum\uff0c\u4f46\u662f\u672a\u63d0\u4f9b enum \u985e\u5225\u3002
+javax.faces.converter.EnumConverter.ENUM_NO_CLASS_detail={1}: ''{0}'' \u5fc5\u9808\u53ef\u5f9e enum \u8f49\u63db\u70ba enum\uff0c\u4f46\u662f\u672a\u63d0\u4f9b enum \u985e\u5225\u3002
+javax.faces.converter.FloatConverter.FLOAT={2}: ''{0}'' \u5fc5\u9808\u662f\u4e00\u4f4d\u6216\u591a\u4f4d\u6578\u3002
+javax.faces.converter.FloatConverter.FLOAT_detail={2}: ''{0}'' \u5fc5\u9808\u662f\u4ecb\u65bc 1.4E-45 \u5230 3.4028235E38 \u4e4b\u9593\u7684\u6578\u5b57\u3002\u7bc4\u4f8b: {1}
+javax.faces.converter.IntegerConverter.INTEGER={2}: ''{0}'' \u5fc5\u9808\u662f\u4e00\u4f4d\u6216\u591a\u4f4d\u6578\u3002
+javax.faces.converter.IntegerConverter.INTEGER_detail={2}: ''{0}'' \u5fc5\u9808\u662f\u4ecb\u65bc -2147483648 \u5230 2147483647 \u4e4b\u9593\u7684\u6578\u5b57\u3002\u7bc4\u4f8b: {1}
+javax.faces.converter.LongConverter.LONG={2}: ''{0}'' \u5fc5\u9808\u662f\u4e00\u4f4d\u6216\u591a\u4f4d\u6578\u3002
+javax.faces.converter.LongConverter.LONG_detail={2}: ''{0}'' \u5fc5\u9808\u662f\u4ecb\u65bc -9223372036854775808 \u5230 9223372036854775807 \u4e4b\u9593\u7684\u6578\u5b57\u3002\u7bc4\u4f8b: {1}
+javax.faces.converter.NumberConverter.CURRENCY={2}\uff1a\u7121\u6cd5\u5c07 ''{0}'' \u89e3\u8b80\u70ba\u8ca8\u5e63\u503c\u3002
+javax.faces.converter.NumberConverter.CURRENCY_detail={2}\uff1a\u7121\u6cd5\u5c07 ''{0}'' \u89e3\u8b80\u70ba\u8ca8\u5e63\u503c\u3002\u7bc4\u4f8b: {1}
+javax.faces.converter.NumberConverter.PERCENT={2}\uff1a\u7121\u6cd5\u5c07 ''{0}'' \u89e3\u8b80\u70ba\u767e\u5206\u6bd4\u3002
+javax.faces.converter.NumberConverter.PERCENT_detail={2}\uff1a\u7121\u6cd5\u5c07 ''{0}'' \u89e3\u8b80\u70ba\u767e\u5206\u6bd4\u3002\u7bc4\u4f8b: {1}
+javax.faces.converter.NumberConverter.NUMBER={2}: ''{0}'' \u4e0d\u662f\u6578\u5b57\u3002
+javax.faces.converter.NumberConverter.NUMBER_detail={2}: ''{0}'' \u4e0d\u662f\u6578\u5b57\u3002\u7bc4\u4f8b: {1}
+javax.faces.converter.NumberConverter.PATTERN={2}: ''{0}'' \u4e0d\u662f\u6578\u5b57\u6a23\u5f0f\u3002
+javax.faces.converter.NumberConverter.PATTERN_detail={2}: ''{0}'' \u4e0d\u662f\u6578\u5b57\u6a23\u5f0f\u3002\u7bc4\u4f8b: {1}
+javax.faces.converter.ShortConverter.SHORT={2}: ''{0}'' \u5fc5\u9808\u662f\u4e00\u4f4d\u6216\u591a\u4f4d\u6578\u3002
+javax.faces.converter.ShortConverter.SHORT_detail={2}: ''{0}'' \u5fc5\u9808\u662f\u4ecb\u65bc -32768 \u5230 32767 \u4e4b\u9593\u7684\u6578\u5b57\u3002\u7bc4\u4f8b: {1}
+javax.faces.converter.STRING={1}\uff1a\u7121\u6cd5\u5c07 ''{0}'' \u8f49\u63db\u70ba\u5b57\u4e32\u3002
+
+
+# ==============================================================================
+# Validator Errors
+# ==============================================================================
+javax.faces.validator.DoubleRangeValidator.MAXIMUM={1}\uff1a\u9a57\u8b49\u932f\u8aa4\uff1a\u503c\u5927\u65bc\u5141\u8a31\u7684\u6700\u5927\u503c ''{0}''
+javax.faces.validator.DoubleRangeValidator.MINIMUM={1}\uff1a\u9a57\u8b49\u932f\u8aa4\uff1a\u503c\u5c0f\u65bc\u5141\u8a31\u7684\u6700\u5c0f\u503c ''{0}''
+javax.faces.validator.DoubleRangeValidator.NOT_IN_RANGE={2}\uff1a\u9a57\u8b49\u932f\u8aa4\uff1a\u6307\u5b9a\u7684\u5c6c\u6027\u4e0d\u5728\u9810\u671f\u503c {0} \u548c {1} \u4e4b\u9593\u3002
+javax.faces.validator.DoubleRangeValidator.TYPE={0}\uff1a\u9a57\u8b49\u932f\u8aa4\uff1a\u503c\u4e0d\u5c6c\u65bc\u6b63\u78ba\u7684\u985e\u578b
+javax.faces.validator.LengthValidator.MAXIMUM={1}\uff1a\u9a57\u8b49\u932f\u8aa4\uff1a\u9577\u5ea6\u5927\u65bc\u5141\u8a31\u7684\u6700\u5927\u503c ''{0}''
+javax.faces.validator.LengthValidator.MINIMUM={1}\uff1a\u9a57\u8b49\u932f\u8aa4\uff1a\u9577\u5ea6\u5c0f\u65bc\u5141\u8a31\u7684\u6700\u5c0f\u503c ''{0}''
+javax.faces.validator.LongRangeValidator.MAXIMUM={1}\uff1a\u9a57\u8b49\u932f\u8aa4\uff1a\u503c\u5927\u65bc\u5141\u8a31\u7684\u6700\u5927\u503c ''{0}''
+javax.faces.validator.LongRangeValidator.MINIMUM={1}\uff1a\u9a57\u8b49\u932f\u8aa4\uff1a\u503c\u5c0f\u65bc\u5141\u8a31\u7684\u6700\u5c0f\u503c ''{0}''
+javax.faces.validator.LongRangeValidator.NOT_IN_RANGE={2}\uff1a\u9a57\u8b49\u932f\u8aa4\uff1a\u6307\u5b9a\u7684\u5c6c\u6027\u4e0d\u5728\u9810\u671f\u503c {0} \u548c {1} \u4e4b\u9593\u3002
+javax.faces.validator.LongRangeValidator.TYPE={0}\uff1a\u9a57\u8b49\u932f\u8aa4\uff1a\u503c\u4e0d\u5c6c\u65bc\u6b63\u78ba\u7684\u985e\u578b\u3002
+javax.faces.validator.NOT_IN_RANGE=\u9a57\u8b49\u932f\u8aa4\uff1a\u6307\u5b9a\u7684\u5c6c\u6027\u4e0d\u5728\u9810\u671f\u503c {0} \u548c {1} \u4e4b\u9593\u3002
+javax.faces.validator.RegexValidator.PATTERN_NOT_SET=\u5fc5\u9808\u8a2d\u5b9a\u5e38\u898f\u8868\u793a\u5f0f\u6a21\u5f0f\u3002
+javax.faces.validator.RegexValidator.PATTERN_NOT_SET_detail=\u5fc5\u9808\u5c07\u5e38\u898f\u8868\u793a\u5f0f\u6a21\u5f0f\u8a2d\u70ba\u975e\u7a7a\u767d\u503c\u3002
+javax.faces.validator.RegexValidator.NOT_MATCHED=\u4e0d\u7b26\u5e38\u898f\u8868\u793a\u5f0f\u6a21\u5f0f
+javax.faces.validator.RegexValidator.NOT_MATCHED_detail=\u4e0d\u7b26 ''{0}'' \u5e38\u898f\u8868\u793a\u5f0f\u6a21\u5f0f
+javax.faces.validator.RegexValidator.MATCH_EXCEPTION=\u5e38\u898f\u8868\u793a\u5f0f\u767c\u751f\u932f\u8aa4\u3002
+javax.faces.validator.RegexValidator.MATCH_EXCEPTION_detail=\u5e38\u898f\u8868\u793a\u5f0f\u767c\u751f\u932f\u8aa4\uff0c''{0}''
+javax.faces.validator.BeanValidator.MESSAGE={0}
diff --git a/jsf-api/src/main/java/javax/faces/Messages_zh_TW.properties b/jsf-api/src/main/java/javax/faces/Messages_zh_TW.properties
index ae89d6a..224fc94 100644
--- a/jsf-api/src/main/java/javax/faces/Messages_zh_TW.properties
+++ b/jsf-api/src/main/java/javax/faces/Messages_zh_TW.properties
@@ -1,3 +1,43 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 2011 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
  # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  #
  # Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
@@ -51,8 +91,8 @@ javax.faces.converter.BigIntegerConverter.BIGINTEGER={2}: ''{0}'' \u5fc5\u9808\u
 javax.faces.converter.BigIntegerConverter.BIGINTEGER_detail={2}: ''{0}'' \u5fc5\u9808\u662f\u4e00\u4f4d\u6216\u591a\u4f4d\u6578\u3002\u7bc4\u4f8b: {1} 
 javax.faces.converter.BooleanConverter.BOOLEAN={1}: ''{0}'' \u5fc5\u9808\u662f\u300ctrue\u300d\u6216\u300cfalse\u300d\u3002
 javax.faces.converter.BooleanConverter.BOOLEAN_detail={1}: ''{0}'' \u5fc5\u9808\u662f\u300ctrue\u300d\u6216\u300cfalse\u300d\u3002\u300ctrue\u300d\u4e4b\u5916\u7684\u4efb\u4f55\u503c\u5747\u6703\u8996\u70ba\u300cfalse\u300d\u3002
-javax.faces.converter.ByteConverter.BYTE={2}: ''{0}'' \u5fc5\u9808\u662f\u4ecb\u65bc 0 \u5230 255 \u4e4b\u9593\u7684\u6578\u5b57\u3002
-javax.faces.converter.ByteConverter.BYTE_detail={2}: ''{0}'' \u5fc5\u9808\u662f\u4ecb\u65bc 0 \u5230 255 \u4e4b\u9593\u7684\u6578\u5b57\u3002\u7bc4\u4f8b: {1} 
+javax.faces.converter.ByteConverter.BYTE={2}: ''{0}'' \u5fc5\u9808\u662f\u4ecb\u65bc -128 \u5230 127 \u4e4b\u9593\u7684\u6578\u5b57\u3002
+javax.faces.converter.ByteConverter.BYTE_detail={2}: ''{0}'' \u5fc5\u9808\u662f\u4ecb\u65bc -128 \u5230 127 \u4e4b\u9593\u7684\u6578\u5b57\u3002\u7bc4\u4f8b: {1} 
 javax.faces.converter.CharacterConverter.CHARACTER={1}: ''{0}'' \u5fc5\u9808\u662f\u6709\u6548\u5b57\u5143\u3002
 javax.faces.converter.CharacterConverter.CHARACTER_detail={1}: ''{0}'' \u5fc5\u9808\u662f\u6709\u6548\u7684 ASCII \u5b57\u5143\u3002
 javax.faces.converter.DateTimeConverter.DATE={2}\uff1a\u7121\u6cd5\u5c07 ''{0}'' \u89e3\u8b80\u70ba\u65e5\u671f\u3002
@@ -94,8 +134,8 @@ javax.faces.validator.DoubleRangeValidator.MAXIMUM={1}\uff1a\u9a57\u8b49\u932f\u
 javax.faces.validator.DoubleRangeValidator.MINIMUM={1}\uff1a\u9a57\u8b49\u932f\u8aa4\uff1a\u503c\u5c0f\u65bc\u5141\u8a31\u7684\u6700\u5c0f\u503c ''{0}''
 javax.faces.validator.DoubleRangeValidator.NOT_IN_RANGE={2}\uff1a\u9a57\u8b49\u932f\u8aa4\uff1a\u6307\u5b9a\u7684\u5c6c\u6027\u4e0d\u5728\u9810\u671f\u503c {0} \u548c {1} \u4e4b\u9593\u3002
 javax.faces.validator.DoubleRangeValidator.TYPE={0}\uff1a\u9a57\u8b49\u932f\u8aa4\uff1a\u503c\u4e0d\u5c6c\u65bc\u6b63\u78ba\u7684\u985e\u578b
-javax.faces.validator.LengthValidator.MAXIMUM={1}\u6aa2 \u9a57 \u932f \u8aa4 \uff1a \u9577 \u5ea6 \u6bd4 \u5141 \u8a31 \u7684 \u6700 \u591a \u5049 \u5927 ''{0}''
-javax.faces.validator.LengthValidator.MINIMUM={1}\u6aa2 \u9a57 \u932f \u8aa4 \uff1a \u9577 \u5ea6 \u6bd4 \u5141 \u8a31 \u7684 \u6700 \u5c0f \u9650 \u5ea6 \u662f \u4e8 ''{0}''
+javax.faces.validator.LengthValidator.MAXIMUM={1}\uff1a\u9a57\u8b49\u932f\u8aa4\uff1a\u9577\u5ea6\u5927\u65bc\u5141\u8a31\u7684\u6700\u5927\u503c ''{0}''
+javax.faces.validator.LengthValidator.MINIMUM={1}\uff1a\u9a57\u8b49\u932f\u8aa4\uff1a\u9577\u5ea6\u5c0f\u65bc\u5141\u8a31\u7684\u6700\u5c0f\u503c ''{0}''
 javax.faces.validator.LongRangeValidator.MAXIMUM={1}\uff1a\u9a57\u8b49\u932f\u8aa4\uff1a\u503c\u5927\u65bc\u5141\u8a31\u7684\u6700\u5927\u503c ''{0}''
 javax.faces.validator.LongRangeValidator.MINIMUM={1}\uff1a\u9a57\u8b49\u932f\u8aa4\uff1a\u503c\u5c0f\u65bc\u5141\u8a31\u7684\u6700\u5c0f\u503c ''{0}''
 javax.faces.validator.LongRangeValidator.NOT_IN_RANGE={2}\uff1a\u9a57\u8b49\u932f\u8aa4\uff1a\u6307\u5b9a\u7684\u5c6c\u6027\u4e0d\u5728\u9810\u671f\u503c {0} \u548c {1} \u4e4b\u9593\u3002
@@ -108,5 +148,3 @@ javax.faces.validator.RegexValidator.NOT_MATCHED_detail=\u4e0d\u7b26 ''{0}'' \u5
 javax.faces.validator.RegexValidator.MATCH_EXCEPTION=\u5e38\u898f\u8868\u793a\u5f0f\u767c\u751f\u932f\u8aa4\u3002
 javax.faces.validator.RegexValidator.MATCH_EXCEPTION_detail=\u5e38\u898f\u8868\u793a\u5f0f\u767c\u751f\u932f\u8aa4\uff0c''{0}''
 javax.faces.validator.BeanValidator.MESSAGE={0}
-
-
diff --git a/jsf-api/src/main/java/javax/faces/application/Application.java b/jsf-api/src/main/java/javax/faces/application/Application.java
index 3145a74..d91607c 100644
--- a/jsf-api/src/main/java/javax/faces/application/Application.java
+++ b/jsf-api/src/main/java/javax/faces/application/Application.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -63,18 +67,20 @@ import javax.el.ELException;
 import javax.el.ELResolver;
 import javax.faces.event.SystemEvent;
 import javax.faces.event.SystemEventListener;
+import javax.faces.flow.FlowHandler;
 import javax.faces.validator.Validator;
 import javax.faces.view.ViewDeclarationLanguage;
 
 
 /**
- * <p><strong class="changed_modified_2_0">Application</strong>
- * represents a per-web-application singleton object where applications
- * based on JavaServer Faces (or implementations wishing to provide
- * extended functionality) can register application-wide singletons that
- * provide functionality required by JavaServer Faces.  Default
- * implementations of each object are provided for cases where the
- * application does not choose to customize the behavior.</p>
+ * <p><strong class="changed_modified_2_0 changed_modified_2_0_rev_a
+ * changed_modified_2_2">Application</strong> represents a
+ * per-web-application singleton object where applications based on
+ * JavaServer Faces (or implementations wishing to provide extended
+ * functionality) can register application-wide singletons that provide
+ * functionality required by JavaServer Faces.  Default implementations
+ * of each object are provided for cases where the application does not
+ * choose to customize the behavior.</p>
  *
  * <p>The instance of {@link Application} is created by calling the
  * <code>getApplication()</code> method of {@link ApplicationFactory}.
@@ -96,48 +102,14 @@ public abstract class Application {
 
 
     /**
-     * <p>Return the default {@link ActionListener} to be registered for
+     * <p><span class="changed_modified_2_2">Return</span> the default 
+     * {@link ActionListener} to be registered for
      * all {@link javax.faces.component.ActionSource} components in this
-     * appication.  If not explicitly set, a default implementation must
-     * be provided that performs the
-     *
-     * following functions:</p>
-     * <ul>
-     * <li>The <code>processAction()</code> method must first call
-     *     <code>FacesContext.renderResponse()</code> in order to bypass
-     *     any intervening lifecycle phases, once the method returns.</li>
-     * <li>The <code>processAction()</code> method must next determine
-     *     the logical outcome of this event, as follows:
-     *     <ul>
-     *     <li>If the originating component has a non-<code>null</code>
-     *     <code>action</code> property, retrieve the {@link
-     *     MethodBinding} from the property, and call
-     *     <code>invoke()</code> on it.  Convert the returned value (if
-     *     any) to a String, and use it as the logical outcome.</li>
-
-     *     <li>Otherwise, the logical outcome is <code>null</code>.</li>
-     *     </ul></li>
-
-     * <li>The <code>processAction()</code> method must finally retrieve
-     *     the <code>NavigationHandler</code> instance for this
-     *     application and call {@link
-     *     NavigationHandler#handleNavigation} passing: 
-     *
-     *     <ul>
-
-     *     <li>the {@link FacesContext} for the current request</li>
-
-     *     <li>If there is a <code>MethodBinding</code> instance for the
-     *     <code>action</code> property of this component, the result of
-     *     calling {@link MethodBinding#getExpressionString} on it, null
-     *     otherwise</li>
-     *
-     *     <li>the logical outcome as determined above</li>
-     *
-     *     </ul>
-     *
-     *     </li>
-     * </ul>
+     * application.  If not explicitly set, a default implementation must
+     * be provided that performs the <span class="changed_modified_2_2">functions 
+     * as specified in the section
+     * titled "ActionListener Property" in the chapter titled "Application Integration"
+     * of the spec prose document.</span></p>
      *
      * <p>Note that the specification for the default
      * <code>ActionListener</code> contiues to call for the use of a
@@ -372,9 +344,6 @@ public abstract class Application {
      * for the sole purpose of not breaking existing applications that extend
      * this class.</p>
      *
-     * @return <code>ResourceBundle</code> for the current UIViewRoot,
-     * otherwise null
-     *
      * @throws FacesException if a bundle was defined, but not resolvable
      *
      * @throws NullPointerException if ctx == null || name == null
@@ -502,9 +471,10 @@ public abstract class Application {
     public abstract void setVariableResolver(VariableResolver resolver);
 
     /**
-     * <p>Cause an the argument <code>resolver</code> to be added to the
-     * resolver chain as specified in section JSF.5.5.1 of the JavaServer
-     * Faces Specification.</p>
+     * <p><span class="changed_modified_2_0_rev_a">Cause</span> an the
+     * argument <code>resolver</code> to be added to the resolver chain
+     * as specified in section JSF.5.5.1 of the JavaServer Faces
+     * Specification.</p>
      *
      * <p>It is not possible to remove an <code>ELResolver</code>
      * registered with this method, once it has been registered.</p>
@@ -525,9 +495,10 @@ public abstract class Application {
      * for the sole purpose of not breaking existing applications that extend
      * {@link Application}.</p>
 
-     * @throws IllegalStateException if called after the first
+     * @throws IllegalStateException <span
+     * class="changed_modified_2_0_rev_a">if called after the first
      * request to the {@link javax.faces.webapp.FacesServlet} has been
-     * serviced.
+     * serviced.</span>
 
      * @since 1.2
      */
@@ -585,6 +556,60 @@ public abstract class Application {
 
     }
 
+    /**
+     * <p class="changed_added_2_2">Return the thread-safe singleton 
+     * {@link FlowHandler} for this application.  For implementations declaring 
+     * compliance with version 2.2 of the specification, this method must never return 
+     * {@code null}, even if the application has no flows.  This is necessary to enable
+     * dynamic flow creation during the application's lifetime.</p>
+     *
+     * <div class="changed_added_2_2">
+     *
+     * <p>All implementations that declare compliance with version 2.2
+     * of the specification must implement this method.  For the purpose
+     * of backward compatibility with environments that extend {@code
+     * Application} but do not override this method, an implementation is 
+     * provided that returns {@code null}.  Due to the decoratable nature
+     * of {@code Application}, code calling this method should always check
+     * for a {@code null} return.</p>
+
+     * </div>
+
+     * @since 2.2
+     *
+     */ 
+
+    public FlowHandler getFlowHandler() {
+
+        if (defaultApplication != null) {
+            return defaultApplication.getFlowHandler();
+        }
+        return null;
+
+    }
+
+    /**
+     * <p class="changed_added_2_2">Set the {@link FlowHandler} instance used by
+     * the {@link NavigationHandler} to satisfy the requirements of the faces
+     * flows feature.</p>
+
+     * @since 2.2
+     * 
+     * @throws NullPounterException if {code newHandler} is {@code null}
+     * 
+     * @throws IllegalStateException if this method is called after at least one 
+     * request has been processed by the {@code Lifecycle} instance for this application. 
+     *
+     */ 
+
+    public void setFlowHandler(FlowHandler newHandler) {
+
+        if (defaultApplication != null) {
+            defaultApplication.setFlowHandler(newHandler);
+        }
+
+    }
+
 
     /**
      * <p>Return the {@link ViewHandler} instance that will be utilized
@@ -960,10 +985,11 @@ public abstract class Application {
 
 
     /**
-     * <p class="changed_added_2_0">Instantiate and return a new {@link
-     * UIComponent} instance from the argument {@link Resource}.  An
-     * algorithm semantically equivalent to the following must be
-     * followed to instantiate the <code>UIComponent</code> to
+     * <p class="changed_added_2_0"><span
+     * class="changed_modified_2_0_rev_a">Instantiate</span> and return
+     * a new {@link UIComponent} instance from the argument {@link
+     * Resource}.  An algorithm semantically equivalent to the following
+     * must be followed to instantiate the <code>UIComponent</code> to
      * return.</p>
      *
      * <div class="changed_added_2_0">
@@ -987,11 +1013,13 @@ public abstract class Application {
 	  uses JavaBeans as the API to the component metadata.</p></li>
 
 	  <li><p>Determine if the component author declared a
-	  <code>componentType</code> for this component instance by
-	  obtaining the <code>BeanDescriptor</code> from the component
-	  metadata and calling its <code>getValue()</code> method,
-	  passing {@link UIComponent#COMPOSITE_COMPONENT_TYPE_KEY} as
-	  the argument.  If non-<code>null</code>, the result must be a
+	  <code><span
+	  class="changed_modified_2_0_rev_a">componentType</span></code>
+	  for this component instance by obtaining the
+	  <code>BeanDescriptor</code> from the component metadata and
+	  calling its <code>getValue()</code> method, passing {@link
+	  UIComponent#COMPOSITE_COMPONENT_TYPE_KEY} as the argument.  If
+	  non-<code>null</code>, the result must be a
 	  <code>ValueExpression</code> whose value is the
 	  <code>component-type</code> of the <code>UIComponent</code> to
 	  be created for this <code>Resource</code> component.  Call
@@ -1092,8 +1120,7 @@ public abstract class Application {
         throw new UnsupportedOperationException();
 
     }
-
-
+    
     /**
      * <p>Return an <code>Iterator</code> over the set of currently defined
      * component types for this <code>Application</code>.</p>
@@ -1709,11 +1736,11 @@ public abstract class Application {
 
 
     /**
-     * <p class="changed_added_2_0">Install the listener instance
-     * referenced by argument <code>listener</code> into the
-     * application as a listener for events of type
-     * <code>systemEventClass</code> that originate from objects of type
-     * <code>sourceClass</code>.</p>
+     * <p class="changed_added_2_0"><span
+     * class="changed_modified_2_2">Install</span> the listener instance
+     * referenced by argument <code>listener</code> into the application
+     * as a listener for events of type <code>systemEventClass</code>
+     * that originate from objects of type <code>sourceClass</code>.</p>
      *
      * <div class="changed_added_2_0">
      *
@@ -1730,6 +1757,15 @@ public abstract class Application {
      * </p>
      *
      * </div>
+
+     * <div class="changed_added_2_2">
+
+     * <p>It is valid to call this method <strong>during</strong> the
+     * processing of an event which was subscribed to by a previous call
+     * to this method.</p>
+
+     * </div>
+
      *
      * @param systemEventClass the <code>Class</code> of event for which
      * <code>listener</code> must be fired.
@@ -1765,7 +1801,8 @@ public abstract class Application {
 
 
     /**
-     * <p class="changed_added_2_0">Install the listener instance
+     * <p class="changed_added_2_0"><span
+     * class="changed_modified_2_2">Install</span> the listener instance
      * referenced by argument <code>listener</code> into application as
      * a listener for events of type <code>systemEventClass</code>.  The
      * default implementation simply calls through to {@link
@@ -1787,6 +1824,15 @@ public abstract class Application {
      * be called when events of type <code>systemEventClass</code> are
      * fired.
 
+     * <div class="changed_added_2_2">
+
+     * <p>See {@link
+     * #subscribeToEvent(java.lang.Class,java.lang.Class,javax.faces.event.SystemEventListener)}
+     * for an additional requirement regarding when it is valid to call
+     * this method.</p>
+
+     * </div>
+
      * @throws <code>NullPointerException</code> if any combination of
      * <code>systemEventClass</code>, or <code>listener</code> are
      * <code>null</code>.
@@ -1806,7 +1852,8 @@ public abstract class Application {
 
 
     /**
-     * <p class="changed_added_2_0">Remove the listener instance
+     * <p class="changed_added_2_0"><span
+     * class="changed_modified_2_2">Remove</span> the listener instance
      * referenced by argument <code>listener</code> from the application
      * as a listener for events of type
      * <code>systemEventClass</code> that originate from objects of type
@@ -1815,7 +1862,16 @@ public abstract class Application {
      * javax.faces.event.SystemEventListener)} for the specification
      * of how the listener is stored, and therefore, how it must be
      * removed.</p>
-     *
+
+     * <div class="changed_added_2_2">
+
+     * <p>See {@link
+     * #subscribeToEvent(java.lang.Class,java.lang.Class,javax.faces.event.SystemEventListener)}
+     * for an additional requirement regarding when it is valid to call
+     * this method.</p>
+
+     * </div>
+
      * @param systemEventClass the <code>Class</code> of event for which
      * <code>listener</code> must be fired.
      *
@@ -1850,12 +1906,22 @@ public abstract class Application {
 
 
     /**
-     * <p class="changed_added_2_0">Remove the listener instance
+     * <p class="changed_added_2_0"><span
+     * class="changed_modified_2_2">Remove</span> the listener instance
      * referenced by argument <code>listener</code> from the application
      * as a listener for events of type <code>systemEventClass</code>.  The
      * default implementation simply calls through to {@link #unsubscribeFromEvent(Class, javax.faces.event.SystemEventListener)}
      * passing <code>null</code> as the <code>sourceClass</code> argument</p>
      *
+     * <div class="changed_added_2_2">
+
+     * <p>See {@link
+     * #subscribeToEvent(java.lang.Class,java.lang.Class,javax.faces.event.SystemEventListener)}
+     * for an additional requirement regarding when it is valid to call
+     * this method.</p>
+
+     * </div>
+
      * @param systemEventClass the <code>Class</code> of event for which
      * <code>listener</code> must be fired.
      *
@@ -1866,7 +1932,7 @@ public abstract class Application {
      * @throws <code>NullPointerException</code> if any combination of
      * <code>context</code>, <code>systemEventClass</code>, or
      * <code>listener</code> are
-     * <code>null</code>.                http://java.sun.com/javaee/javaserverfaces/reference/api/index.html
+     * <code>null</code>.                
      *
      * @since 2.0
      */
diff --git a/jsf-api/src/main/java/javax/faces/application/ApplicationConfigurationPopulator.java b/jsf-api/src/main/java/javax/faces/application/ApplicationConfigurationPopulator.java
new file mode 100644
index 0000000..5832232
--- /dev/null
+++ b/jsf-api/src/main/java/javax/faces/application/ApplicationConfigurationPopulator.java
@@ -0,0 +1,97 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package javax.faces.application;
+
+import org.w3c.dom.Document;
+
+/**
+
+ * <p class="changed_added_2_2">This class defines a {@code java.util.ServiceLoader}
+ * service which enables programmatic configuration of the JSF runtime using the existing
+ * Application Configuration Resources schema. See the section "Application Startup
+ * Behavior" in the specification prose document for the specification on when
+ * and how implementations of this service are used.</p>
+ * 
+ * @since 2.2
+ * 
+ */
+public abstract class ApplicationConfigurationPopulator {
+    
+    /**
+     * <p class="changed_added_2_2">Service providers that implement
+     * this service must be called by the JSF runtime
+     * exactly once for each implementation, at startup, before any requests have 
+     * been serviced.  Before calling the 
+     * {@link #populateApplicationConfiguration} method,
+     * the runtime must ensure that the {@code Document} argument is empty aside
+     * from being pre-configured to be in the proper namespace for an
+     * Application Configuration Resources file: 
+     * {@code http://xmlns.jcp.org/xml/ns/javaee}.  Implementations of this service
+     * must ensure that any changes made to the argument
+     * {@code Document} conform to that schema <a target="_"
+     * href="../../web-facesconfig.html">as defined in the
+     * specification</a>.  The JSF runtime is not required to validate the
+     * {@code Document} after control returns from the service implementation,
+     * though it may do so.</p>
+     * 
+     * <div class="changed_added_2_2">
+     * 
+     * <p>Ordering of Artifacts</p>
+     * 
+     * <p>If the document is made to contain an {@code <ordering>} element,
+     * as specified in the section <em>Ordering of Artifacts</em> in the
+     * specification prose document, the document will be prioritized
+     * accordingly.  Otherwise, the runtime must place the document in the
+     * list of other Application Configuration Resources documents at the
+     * "lowest" priority, meaning any conflicts that may arise between the
+     * argument document and any other Application Configuration Resources
+     * are resolved in favor of the other document.</p>
+     * 
+     * </div>
+     * 
+     * @param toPopulate The Document to populate with configuration.
+     * 
+     * @since 2.2
+     */
+    
+    public abstract void populateApplicationConfiguration(Document toPopulate);
+    
+}
diff --git a/jsf-api/src/main/java/javax/faces/application/ApplicationFactory.java b/jsf-api/src/main/java/javax/faces/application/ApplicationFactory.java
index aa70fa0..fa9edf2 100644
--- a/jsf-api/src/main/java/javax/faces/application/ApplicationFactory.java
+++ b/jsf-api/src/main/java/javax/faces/application/ApplicationFactory.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -56,6 +60,10 @@ import javax.faces.FacesWrapper;
  */
 
 public abstract class ApplicationFactory implements FacesWrapper<ApplicationFactory> {
+    
+    public ApplicationFactory() {
+        
+    }
 
 
     /**
diff --git a/jsf-api/src/main/java/javax/faces/application/ApplicationWrapper.java b/jsf-api/src/main/java/javax/faces/application/ApplicationWrapper.java
index d727f15..89774a9 100644
--- a/jsf-api/src/main/java/javax/faces/application/ApplicationWrapper.java
+++ b/jsf-api/src/main/java/javax/faces/application/ApplicationWrapper.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -61,11 +65,12 @@ import javax.faces.el.VariableResolver;
 import javax.faces.event.ActionListener;
 import javax.faces.event.SystemEvent;
 import javax.faces.event.SystemEventListener;
+import javax.faces.flow.FlowHandler;
 import javax.faces.validator.Validator;
 
 
 /**
- * <p class="changed_added_2_0">Provides a simple implementation of
+ * <p class="changed_added_2_0"><span class="changed_modified_2_2">Provides</span> a simple implementation of
  * {@link Application} that can be subclassed by developers wishing
  * to provide specialized behavior to an existing {@link
  * Application} instance.  The default implementation of all methods
@@ -82,6 +87,7 @@ import javax.faces.validator.Validator;
  */
 public abstract class ApplicationWrapper extends Application implements FacesWrapper<Application> {
 
+    @Override
     public abstract Application getWrapped();
 
     /**
@@ -208,8 +214,11 @@ public abstract class ApplicationWrapper extends Application implements FacesWra
      * <p class="changed_added_2_0">The default behavior of this method
      * is to call {@link Application#getPropertyResolver} on the
      * wrapped {@link Application} object.</p>
+     * 
+     * @deprecated See superclass for alternative.
      */
     @Override
+    @Deprecated
     public PropertyResolver getPropertyResolver() {
         return getWrapped().getPropertyResolver();
     }
@@ -218,8 +227,11 @@ public abstract class ApplicationWrapper extends Application implements FacesWra
      * <p class="changed_added_2_0">The default behavior of this method
      * is to call {@link Application#setPropertyResolver(javax.faces.el.PropertyResolver)} on the
      * wrapped {@link Application} object.</p>
+     * 
+     * @deprecated See superclass for alternative.
      */
     @Override
+    @Deprecated
     public void setPropertyResolver(PropertyResolver resolver) {
         getWrapped().setPropertyResolver(resolver);
     }
@@ -228,8 +240,11 @@ public abstract class ApplicationWrapper extends Application implements FacesWra
      * <p class="changed_added_2_0">The default behavior of this method
      * is to call {@link Application#getVariableResolver} on the
      * wrapped {@link Application} object.</p>
+     * 
+     * @deprecated See superclass for alternative.
      */
     @Override
+    @Deprecated
     public VariableResolver getVariableResolver() {
         return getWrapped().getVariableResolver();
     }
@@ -238,8 +253,11 @@ public abstract class ApplicationWrapper extends Application implements FacesWra
      * <p class="changed_added_2_0">The default behavior of this method
      * is to call {@link Application#setVariableResolver(javax.faces.el.VariableResolver)} on the
      * wrapped {@link Application} object.</p>
+     * 
+     * @deprecated See superclass for alternative.
      */
     @Override
+    @Deprecated
     public void setVariableResolver(VariableResolver resolver) {
         getWrapped().setVariableResolver(resolver);
     }
@@ -255,10 +273,16 @@ public abstract class ApplicationWrapper extends Application implements FacesWra
     }
 
     /**
-     * <p class="changed_added_2_0">The default behavior of this method
+     * <p class="changed_added_2_0"><span class="changed_modified_2_2">The</span> default behavior of this method
      * is to call {@link Application#setViewHandler(ViewHandler)} on the
      * wrapped {@link Application} object.</p>
-     */
+     * 
+     * @throws IllegalStateException <span class="changed_modified_2_2">if this method is called after
+     * at least one request has been processed by the
+     * <code>Lifecycle</code> instance for this application.
+     * @throws NullPointerException if <code>manager</code>
+     *  is <code>null</code></span>
+ */
     @Override
     public void setViewHandler(ViewHandler handler) {
         getWrapped().setViewHandler(handler);
@@ -275,9 +299,15 @@ public abstract class ApplicationWrapper extends Application implements FacesWra
     }
 
     /**
-     * <p class="changed_added_2_0">The default behavior of this method
+     * <p class="changed_added_2_0"><span class="changed_modified_2_2">The</span> default behavior of this method
      * is to call {@link Application#setStateManager(StateManager)} on the
      * wrapped {@link Application} object.</p>
+     * 
+     * @throws IllegalStateException <span class="changed_added_2_2">if this method is called after
+     * at least one request has been processed by the
+     * <code>Lifecycle</code> instance for this application.
+     * @throws NullPointerException if <code>manager</code>
+     *  is <code>null</code></span>
      */
     @Override
     public void setStateManager(StateManager manager) {
@@ -309,8 +339,11 @@ public abstract class ApplicationWrapper extends Application implements FacesWra
      * <p class="changed_added_2_0">The default behavior of this method
      * is to call {@link Application#createComponent(javax.faces.el.ValueBinding, javax.faces.context.FacesContext, String)}
      * on the wrapped {@link Application} object.</p>
+     * 
+     * @deprecated See superclass for alternative.
      */
     @Override
+    @Deprecated
     public UIComponent createComponent(ValueBinding componentBinding,
                                        FacesContext context,
                                        String componentType)
@@ -394,8 +427,11 @@ public abstract class ApplicationWrapper extends Application implements FacesWra
      * <p class="changed_added_2_0">The default behavior of this method
      * is to call {@link Application#createMethodBinding(String, Class[])} on the
      * wrapped {@link Application} object.</p>
+     * 
+     * @deprecated See superclass for alternative.
      */
     @Override
+    @Deprecated
     public MethodBinding createMethodBinding(String ref, Class<?>[] params)
           throws ReferenceSyntaxException {
         return getWrapped().createMethodBinding(ref, params);
@@ -503,9 +539,15 @@ public abstract class ApplicationWrapper extends Application implements FacesWra
     }
 
     /**
-     * <p class="changed_added_2_0">The default behavior of this method
+     * <p class="changed_added_2_0"><span class="changed_modified_2_2">The</span> default behavior of this method
      * is to call {@link Application#setResourceHandler(ResourceHandler)} on the
      * wrapped {@link Application} object.</p>
+     * 
+     * @throws IllegalStateException <span class="changed_added_2_2">if this method is called after
+     * at least one request has been processed by the
+     * <code>Lifecycle</code> instance for this application.
+     * @throws NullPointerException if <code>resourceHandler</code>
+     *  is <code>null</code></span>
      */
     @Override
     public void setResourceHandler(ResourceHandler resourceHandler) {
@@ -533,9 +575,14 @@ public abstract class ApplicationWrapper extends Application implements FacesWra
     }
 
     /**
-     * <p class="changed_added_2_0">The default behavior of this method
+     * <p class="changed_added_2_0"><span class="changed_modified_2_2">The</span> default behavior of this method
      * is to call {@link Application#addELResolver(javax.el.ELResolver)} on the
      * wrapped {@link Application} object.</p>
+     * 
+     * @throws IllegalStateException <span
+     * class="changed_added_2_2">if called after the first
+     * request to the {@link javax.faces.webapp.FacesServlet} has been
+     * serviced.</span>
      */
     @Override
     public void addELResolver(ELResolver resolver) {
@@ -611,12 +658,25 @@ public abstract class ApplicationWrapper extends Application implements FacesWra
         return getWrapped().getExpressionFactory();
     }
 
+    @Override
+    public FlowHandler getFlowHandler() {
+        return getWrapped().getFlowHandler();
+    }
+
+    @Override
+    public void setFlowHandler(FlowHandler newHandler) {
+        super.setFlowHandler(newHandler);
+    }
+    
     /**
      * <p class="changed_added_2_0">The default behavior of this method
      * is to call {@link Application#evaluateExpressionGet(javax.faces.context.FacesContext, String, Class)}
      * on the wrapped {@link Application} object.</p>
+     * 
+     * @deprecated See superclass for alternative.
      */
     @Override
+    @Deprecated
     public <T> T evaluateExpressionGet(FacesContext context,
                                        String expression,
                                        Class<? extends T> expectedType)
diff --git a/jsf-api/src/main/java/javax/faces/application/ConfigurableNavigationHandler.java b/jsf-api/src/main/java/javax/faces/application/ConfigurableNavigationHandler.java
index 2c557b5..e158897 100644
--- a/jsf-api/src/main/java/javax/faces/application/ConfigurableNavigationHandler.java
+++ b/jsf-api/src/main/java/javax/faces/application/ConfigurableNavigationHandler.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -40,10 +44,11 @@ import java.util.Map;
 import java.util.Set;
 
 import javax.faces.context.FacesContext;
+import javax.faces.flow.Flow;
 
 /**
  * <p
- * class="changed_added_2_0"><strong>ConfigurableNavigationHandler</strong>
+ * class="changed_added_2_0"><strong class="changed_modified_2_2">ConfigurableNavigationHandler</strong>
  * extends the contract of {@link NavigationHandler} to allow runtime
  * inspection of the {@link NavigationCase}s that make up the rule-base
  * for navigation.  An implementation compliant with the version of the
@@ -78,6 +83,41 @@ public abstract class ConfigurableNavigationHandler extends NavigationHandler {
             String fromAction, 
             String outcome);
     
+    
+    /**
+     * <p class="changed_added_2_2">Return the {@link NavigationCase}
+     * representing the navigation that would be taken had {@link
+     * NavigationHandler#handleNavigation} been called with the same
+     * arguments or <code>null</code> if there is no such case.  Implementations
+     * that comply the version of the specification in which this method
+     * was introduced must override this method.  For compatibility with 
+     * decorated implementations that comply with an earlier version of the
+     * specification, an implementation is provided that simply calls
+     * through to {@link #getNavigationCase(javax.faces.context.FacesContext, java.lang.String, java.lang.String)},
+     * ignoring the {@code toFlowDocumentId} parameter.</p>
+     * 
+     * @param context The {@link FacesContext} for the current request
+     * @param fromAction The action binding expression that was evaluated
+     *  to retrieve the specified outcome, or <code>null</code> if the
+     *  outcome was acquired by some other means
+     * @param outcome The logical outcome returned by a previous invoked
+     *  application action (which may be <code>null</code>)
+     * @param toFlowDocumentId The value of the <code>toFlowDocumentId</code> property
+     * for the navigation case (which may be <code>null</code>)
+     *
+     * @throws NullPointerException if <code>context</code>
+     *  is <code>null</code>
+     * 
+     * @since 2.2
+     */
+    
+    public NavigationCase getNavigationCase(FacesContext context,
+            String fromAction, 
+            String outcome,
+            String toFlowDocumentId) {
+        return getNavigationCase(context, fromAction, outcome);
+    }
+    
 
     /**
      * <p class="changed_added_2_0">Return a <code>Map<String,
@@ -94,7 +134,7 @@ public abstract class ConfigurableNavigationHandler extends NavigationHandler {
     
     /**
      * <p class="changed_added_2_0">A convenience method to signal the
-     * JavaServer Faces implementation to perform navigaton
+     * JavaServer Faces implementation to perform navigation
      * with the provided outcome. When the NavigationHandler is invoked,
      * the current viewId is treated as the "from viewId" and the "from action"
      * is null.</p>
@@ -105,5 +145,18 @@ public abstract class ConfigurableNavigationHandler extends NavigationHandler {
     public void performNavigation(String outcome) {
         this.handleNavigation(FacesContext.getCurrentInstance(), null, outcome);
     }
+    
+    /**
+     * <p class="changed_added_2_2">Called by the flow system to cause
+     * the flow to be inspected for navigation rules.  For backward
+     * compatibility with earlier implementations, an empty method
+     * is provided.</p>
+     * 
+     * 
+     * @since 2.2
+     */
+    public void inspectFlow(FacesContext context, Flow flow) {
+        
+    }
 
 }
diff --git a/jsf-api/src/main/java/javax/faces/application/ConfigurableNavigationHandlerWrapper.java b/jsf-api/src/main/java/javax/faces/application/ConfigurableNavigationHandlerWrapper.java
new file mode 100644
index 0000000..2b6a8ed
--- /dev/null
+++ b/jsf-api/src/main/java/javax/faces/application/ConfigurableNavigationHandlerWrapper.java
@@ -0,0 +1,105 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+ * Copyright (c) 2011 Oracle and/or its affiliates. All rights reserved.
+
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package javax.faces.application;
+
+import java.util.Map;
+import java.util.Set;
+import javax.faces.FacesWrapper;
+import javax.faces.context.FacesContext;
+import javax.faces.flow.Flow;
+
+/**
+ * <p class="changed_added_2_2">Provides a simple implementation of
+ * {@link ConfigurableNavigationHandler} that can be subclassed by developers wishing
+ * to provide specialized behavior to an existing {@link
+ * ConfigurableNavigationHandler} instance.  The default implementation of all methods
+ * is to call through to the wrapped {@link ConfigurableNavigationHandler}.</p>
+ *
+ * <div class="changed_added_2_2">
+ *
+ * <p>Usage: extend this class and override {@link #getWrapped} to
+ * return the instance we are wrapping.</p>
+ *
+ * </div>
+ *
+ * @since 2.2
+ */
+public abstract class ConfigurableNavigationHandlerWrapper extends ConfigurableNavigationHandler implements FacesWrapper<ConfigurableNavigationHandler>{
+
+    /**
+     * @return the instance that we are wrapping.
+     */ 
+    @Override
+    public abstract ConfigurableNavigationHandler getWrapped();
+    
+    
+    @Override
+    public NavigationCase getNavigationCase(FacesContext context, String fromAction, String outcome) {
+        return getWrapped().getNavigationCase(context, fromAction, outcome);
+    }
+
+    @Override
+    public Map<String, Set<NavigationCase>> getNavigationCases() {
+        return getWrapped().getNavigationCases();
+    }
+
+    @Override
+    public NavigationCase getNavigationCase(FacesContext context, String fromAction, String outcome, String toFlowDocumentId) {
+        return getWrapped().getNavigationCase(context, fromAction, outcome, toFlowDocumentId);
+    }
+
+    @Override
+    public void handleNavigation(FacesContext context, String fromAction, String outcome) {
+        getWrapped().handleNavigation(context, fromAction, outcome);
+    }
+    
+    
+    @Override
+    public void performNavigation(String outcome) {
+        getWrapped().performNavigation(outcome);
+    }
+
+    @Override
+    public void inspectFlow(FacesContext context, Flow flow) {
+        getWrapped().inspectFlow(context, flow);
+    }
+
+    
+}
diff --git a/jsf-api/src/main/java/javax/faces/application/FacesMessage.java b/jsf-api/src/main/java/javax/faces/application/FacesMessage.java
index 031744f..e92280d 100644
--- a/jsf-api/src/main/java/javax/faces/application/FacesMessage.java
+++ b/jsf-api/src/main/java/javax/faces/application/FacesMessage.java
@@ -1,485 +1,491 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package javax.faces.application;
-
-
-import java.io.IOException;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-import java.io.Serializable;
-
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-import java.util.HashMap;
-
-/**
- * <p><strong>FacesMessage</strong> represents a single validation (or
- * other) message, which is typically associated with a particular
- * component in the view.  A {@link javax.faces.application.FacesMessage} instance may be created
- * based on a specific <code>messageId</code>.  The specification defines
- * the set of <code>messageId</code>s for which there must be
- * {@link javax.faces.application.FacesMessage} instances.</p>
- *
- * <p>The implementation must take the following steps when creating
- * <code>FacesMessage</code> instances given a <code>messageId</code>:</p>
- *
- * <ul>
- *
- * <p>Call {@link Application#getMessageBundle}.  If
- * non-<code>null</code>, locate the named <code>ResourceBundle</code>,
- * using the <code>Locale</code> from the current {@link
- * javax.faces.component.UIViewRoot} and see if it has a value for the
- * argument <code>messageId</code>.  If it does, treat the value as the
- * <code>summary</code> of the <code>FacesMessage</code>.  If it does
- * not, or if {@link Application#getMessageBundle} returned
- * <code>null</code>, look in the <code>ResourceBundle</code> named by
- * the value of the constant {@link #FACES_MESSAGES} and see if it has a
- * value for the argument <code>messageId</code>.  If it does, treat the
- * value as the <code>summary</code> of the <code>FacesMessage</code>.
- * If it does not, there is no initialization information for the
- * <code>FacesMessage</code> instance.</p>
- *
- * <p>In all cases, if a <code>ResourceBundle</code> hit is found for
- * the <code>{messageId}</code>, look for further hits under the key
- * <code>{messageId}_detail</code>. Use this value, if present, as 
- * the <code>detail</code> for the returned <code>FacesMessage</code>.</p>
- *
- * <p>Make sure to perform any parameter substitution required for the
- * <code>summary</code> and <code>detail</code> of the
- * <code>FacesMessage</code>.</p>
- *
- * </ul>
- *
- */
-
-public class FacesMessage implements Serializable {
-
-
-    // --------------------------------------------------------------- Constants
-
-
-    /**
-     * <p><code>ResourceBundle</code> identifier for messages whose
-     * message identifiers are defined in the JavaServer Faces
-     * specification.</p>
-     */
-    public static final String FACES_MESSAGES = "javax.faces.Messages";
-
-
-    // ------------------------------------------------- Message Severity Levels
-
-
-    // Any new Severity values must go at the end of the list, or we will break
-    // backwards compatibility on serialized instances
-
-
-    private static final String SEVERITY_INFO_NAME = "INFO";
-    /**
-     * <p>Message severity level indicating an informational message
-     * rather than an error.</p>
-     */
-    public static final Severity SEVERITY_INFO = 
-	new Severity(SEVERITY_INFO_NAME);
-
-
-    private static final String SEVERITY_WARN_NAME = "WARN";
-    /**
-     * <p>Message severity level indicating that an error might have
-     * occurred.</p>
-     */
-    public static final Severity SEVERITY_WARN = 
-	new Severity(SEVERITY_WARN_NAME);
-
-
-    private static final String SEVERITY_ERROR_NAME = "ERROR";
-    /**
-     * <p>Message severity level indicating that an error has
-     * occurred.</p>
-     */
-    public static final Severity SEVERITY_ERROR = 
-	new Severity(SEVERITY_ERROR_NAME);
-
-
-    private static final String SEVERITY_FATAL_NAME = "FATAL";
-    /**
-     * <p>Message severity level indicating that a serious error has
-     * occurred.</p>
-     */
-    public static final Severity SEVERITY_FATAL = 
-	new Severity(SEVERITY_FATAL_NAME);
-
-
-    /**
-     * <p>Array of all defined values, ascending order of ordinal value.
-     *  Be sure you include any new instances created above, in the
-     * same order.</p>
-     */
-    private static final Severity[] values =
-    { SEVERITY_INFO, SEVERITY_WARN, SEVERITY_ERROR, SEVERITY_FATAL };
-    
-
-    /**
-     * <p>Immutable <code>List</code> of valid {@link javax.faces.application.FacesMessage.Severity}
-     * instances, in ascending order of their ordinal value.</p>
-     */
-    public static final List VALUES = 
-	Collections.unmodifiableList(Arrays.asList(values));
-
-    private static Map<String,Severity> _MODIFIABLE_MAP =
-         new HashMap<String,Severity>(4, 1.0f);
-    
-    static {
-	for (int i = 0, len = values.length; i < len; i++) {
-	    _MODIFIABLE_MAP.put(values[i].severityName, values[i]);
-	}
-    }
-    
-
-    /**
-     * <p>Immutable <code>Map</code> of valid {@link javax.faces.application.FacesMessage.Severity}
-     * instances, keyed by name.</p>
-     */
-    public final static Map VALUES_MAP = 
-	Collections.unmodifiableMap(_MODIFIABLE_MAP);
-    
-    private static final long serialVersionUID = -1180773928220076822L;
-
-
-    // ------------------------------------------------------------ Constructors
-
-
-    /**
-     * <p>Construct a new {@link javax.faces.application.FacesMessage} with no initial
-     * values. The severity is set to Severity.INFO.</p>
-     */
-    public FacesMessage() {
-
-        super();
-
-    }
-
-    /**
-     * <p>Construct a new {@link javax.faces.application.FacesMessage} with just a summary.  The
-     * detail is <code>null</code>, the severity is set to
-     * <code>Severity.INFO</code>.</p>
-     */
-    public FacesMessage(String summary) {
-
-        super();
-        setSummary(summary);
-    }
-
-
-
-
-    /**
-     * <p>Construct a new {@link javax.faces.application.FacesMessage} with the specified initial
-     * values.  The severity is set to Severity.INFO.</p>
-     *
-     * @param summary Localized summary message text
-     * @param detail Localized detail message text
-     *
-     * @throws IllegalArgumentException if the specified severity level
-     *  is not one of the supported values
-     */
-    public FacesMessage(String summary, String detail) {
-
-        super();
-        setSummary(summary);
-        setDetail(detail);
-
-    }
-
-
-    /**
-     * <p>Construct a new <code>FacesMessage</code> with the specified
-     * initial values.</p>
-     *
-     * @param severity the severity
-     * @param summary Localized summary message text
-     * @param detail Localized detail message text
-     *
-     * @throws IllegalArgumentException if the specified severity level
-     *  is not one of the supported values
-     */
-    public FacesMessage(Severity severity, String summary, 
-			String detail) {
-
-        super();
-	setSeverity(severity);
-        setSummary(summary);
-        setDetail(detail);
-
-    }
-
-
-    // ------------------------------------------------------ Instance Variables
-
-
-    private Severity severity = FacesMessage.SEVERITY_INFO;
-    private String summary = null;
-    private String detail = null;
-    private boolean rendered;
-
-
-    // ---------------------------------------------------------- Public Methods
-
-
-    /**
-     * <p>Return the localized detail text.  If no localized detail text has
-     * been defined for this message, return the localized summary text
-     * instead.</p>
-     */
-    public String getDetail() {
-
-	if (this.detail == null) {
-	    return (this.summary);
-	} else {
-	    return (this.detail);
-	}
-
-    }
-
-
-    /**
-     * <p>Set the localized detail text.</p>
-     *
-     * @param detail The new localized detail text
-     */
-    public void setDetail(String detail) {
-
-        this.detail = detail;
-
-    }
-
-
-    /**
-     * <p>Return the severity level.</p>
-     */
-    public Severity getSeverity() {
-
-        return (this.severity);
-
-    }
-
-
-    /**
-     * <p>Set the severity level.</p>
-     *
-     * @param severity The new severity level
-     *
-     * @throws IllegalArgumentException if the specified severity level
-     *  is not one of the supported values
-     */
-    public void setSeverity(Severity severity) {
-	
-        if ((severity.getOrdinal() < SEVERITY_INFO.getOrdinal()) || 
-	    (severity.getOrdinal() > SEVERITY_FATAL.getOrdinal())) {
-            throw new IllegalArgumentException(String.valueOf(severity));
-        }
-        this.severity = severity;
-	
-    }
-
-
-    /**
-     * <p>Return the localized summary text.</p>
-     */
-    public String getSummary() {
-
-        return (this.summary);
-
-    }
-
-
-    /**
-     * <p>Set the localized summary text.</p>
-     *
-     * @param summary The new localized summary text
-     */
-    public void setSummary(String summary) {
-
-        this.summary = summary;
-
-    }
-
-
-    /**
-     * @return <code>true</code> if {@link #rendered()} has been called, otherwise
-     *  <code>false</code>
-     *
-     * @since 2.0
-     */
-    public boolean isRendered() {
-
-        return rendered;
-
-    }
-
-    /**
-     * <p>Marks this message as having been rendered to the client.</p>
-     *
-     * @since 2.0
-     */
-    public void rendered() {
-
-        this.rendered = true;
-
-    }
-    
-
-    /**
-     * <p>Persist {@link javax.faces.application.FacesMessage} artifacts,
-     * including the non serializable <code>Severity</code>.</p>
-     */
-    private void writeObject(ObjectOutputStream out) throws IOException {
-        out.writeInt(getSeverity().getOrdinal());
-        out.writeObject(getSummary());
-        out.writeObject(getDetail());
-        out.writeObject(isRendered());
-    }
-
-    /**
-     * <p>Reconstruct {@link javax.faces.application.FacesMessage} from
-     * serialized artifacts.</p>
-     */
-    private void readObject(ObjectInputStream in)
-        throws IOException, ClassNotFoundException {
-        severity = SEVERITY_INFO;
-        summary = null;
-        detail = null;
-        int ordinal = in.readInt();
-        if (ordinal == SEVERITY_INFO.getOrdinal()) {
-            setSeverity(FacesMessage.SEVERITY_INFO);
-        } else if (ordinal == SEVERITY_WARN.getOrdinal()) {
-            setSeverity(FacesMessage.SEVERITY_WARN);
-        } else if (ordinal == SEVERITY_ERROR.getOrdinal()) {
-            setSeverity(FacesMessage.SEVERITY_ERROR);
-        } else if (ordinal == SEVERITY_FATAL.getOrdinal()) {
-            setSeverity(FacesMessage.SEVERITY_FATAL);
-        }
-        setSummary((String)in.readObject());
-        setDetail((String)in.readObject());
-        this.rendered = (Boolean) in.readObject();
-    }
-
-    /**
-     * <p>Class used to represent message severity levels in a typesafe
-     * enumeration.</p>
-     */
-    public static class Severity implements Comparable {
-
-
-	// -------------------------------------------------------  Constructors
-
-	
-	/**
-	 * <p>Private constructor to disable the creation of new
-	 * instances.</p>
-	 */
-	private Severity(String newSeverityName) {
-	    severityName = newSeverityName;
-	}
-	
-	
-	// -------------------------------------------------- Instance Variables
-	
-	
-	/**
-	 * <p>The ordinal value assigned to this instance.</p>
-	 */
-	private final int ordinal = nextOrdinal++;
-	
-
-	/**
-	 * <p>The (optional) name for this severity.</p>
-	 */
-        String severityName = null;
-	
-	
-	// -----------------------------------------------------  Public Methods
-
-
-	/**
-	 * <p>Compare this {@link javax.faces.application.FacesMessage.Severity} instance to the
-	 * specified one.  Returns a negative integer, zero, or a
-	 * positive integer if this object is less than, equal to, or
-	 * greater than the specified object.</p>
-	 *
-	 * @param other The other object to be compared to
-	 */
-	public int compareTo(Object other) {
-	    return this.ordinal - ((Severity) other).ordinal;
-	}
-	
-	
-	/**
-	 * <p>Return the ordinal value of this {@link
-	 * FacesMessage.Severity} instance.</p>
-	 */
-	public int getOrdinal() {
-	    return (this.ordinal);
-	}
-	
-
-	/**
-	 * <p>Return a String representation of this {@link
-	 * FacesMessage.Severity} instance.</p>
-	 */
-	public String toString() {
-	    if (null == severityName) {
-		return (String.valueOf(this.ordinal));
-	    }
-	    return (String.valueOf(this.severityName) + ' ' + this.ordinal);
-	}
-	
-	
-	// ---------------------------------------------------  Static Variables
-	
-	
-	/**
-	 * <p>Static counter returning the ordinal value to be assigned to the
-	 * next instance that is created.</p>
-	 */
-	private static int nextOrdinal = 0;
-	
-    }
-
-
-}
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package javax.faces.application;
+
+
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.io.Serializable;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+import java.util.HashMap;
+
+/**
+ * <p><strong>FacesMessage</strong> represents a single validation (or
+ * other) message, which is typically associated with a particular
+ * component in the view.  A {@link javax.faces.application.FacesMessage} instance may be created
+ * based on a specific <code>messageId</code>.  The specification defines
+ * the set of <code>messageId</code>s for which there must be
+ * {@link javax.faces.application.FacesMessage} instances.</p>
+ *
+ * <p>The implementation must take the following steps when creating
+ * <code>FacesMessage</code> instances given a <code>messageId</code>:</p>
+ *
+ * <ul>
+ *
+ * <p>Call {@link Application#getMessageBundle}.  If
+ * non-<code>null</code>, locate the named <code>ResourceBundle</code>,
+ * using the <code>Locale</code> from the current {@link
+ * javax.faces.component.UIViewRoot} and see if it has a value for the
+ * argument <code>messageId</code>.  If it does, treat the value as the
+ * <code>summary</code> of the <code>FacesMessage</code>.  If it does
+ * not, or if {@link Application#getMessageBundle} returned
+ * <code>null</code>, look in the <code>ResourceBundle</code> named by
+ * the value of the constant {@link #FACES_MESSAGES} and see if it has a
+ * value for the argument <code>messageId</code>.  If it does, treat the
+ * value as the <code>summary</code> of the <code>FacesMessage</code>.
+ * If it does not, there is no initialization information for the
+ * <code>FacesMessage</code> instance.</p>
+ *
+ * <p>In all cases, if a <code>ResourceBundle</code> hit is found for
+ * the <code>{messageId}</code>, look for further hits under the key
+ * <code>{messageId}_detail</code>. Use this value, if present, as 
+ * the <code>detail</code> for the returned <code>FacesMessage</code>.</p>
+ *
+ * <p>Make sure to perform any parameter substitution required for the
+ * <code>summary</code> and <code>detail</code> of the
+ * <code>FacesMessage</code>.</p>
+ *
+ * </ul>
+ *
+ */
+
+public class FacesMessage implements Serializable {
+
+
+    // --------------------------------------------------------------- Constants
+
+
+    /**
+     * <p><code>ResourceBundle</code> identifier for messages whose
+     * message identifiers are defined in the JavaServer Faces
+     * specification.</p>
+     */
+    public static final String FACES_MESSAGES = "javax.faces.Messages";
+
+
+    // ------------------------------------------------- Message Severity Levels
+
+
+    // Any new Severity values must go at the end of the list, or we will break
+    // backwards compatibility on serialized instances
+
+
+    private static final String SEVERITY_INFO_NAME = "INFO";
+    /**
+     * <p>Message severity level indicating an informational message
+     * rather than an error.</p>
+     */
+    public static final Severity SEVERITY_INFO = 
+	new Severity(SEVERITY_INFO_NAME);
+
+
+    private static final String SEVERITY_WARN_NAME = "WARN";
+    /**
+     * <p>Message severity level indicating that an error might have
+     * occurred.</p>
+     */
+    public static final Severity SEVERITY_WARN = 
+	new Severity(SEVERITY_WARN_NAME);
+
+
+    private static final String SEVERITY_ERROR_NAME = "ERROR";
+    /**
+     * <p>Message severity level indicating that an error has
+     * occurred.</p>
+     */
+    public static final Severity SEVERITY_ERROR = 
+	new Severity(SEVERITY_ERROR_NAME);
+
+
+    private static final String SEVERITY_FATAL_NAME = "FATAL";
+    /**
+     * <p>Message severity level indicating that a serious error has
+     * occurred.</p>
+     */
+    public static final Severity SEVERITY_FATAL = 
+	new Severity(SEVERITY_FATAL_NAME);
+
+
+    /**
+     * <p>Array of all defined values, ascending order of ordinal value.
+     *  Be sure you include any new instances created above, in the
+     * same order.</p>
+     */
+    private static final Severity[] values =
+    { SEVERITY_INFO, SEVERITY_WARN, SEVERITY_ERROR, SEVERITY_FATAL };
+    
+
+    /**
+     * <p>Immutable <code>List</code> of valid {@link javax.faces.application.FacesMessage.Severity}
+     * instances, in ascending order of their ordinal value.</p>
+     */
+    public static final List VALUES = 
+	Collections.unmodifiableList(Arrays.asList(values));
+
+    private static Map<String,Severity> _MODIFIABLE_MAP =
+         new HashMap<String,Severity>(4, 1.0f);
+    
+    static {
+	for (int i = 0, len = values.length; i < len; i++) {
+	    _MODIFIABLE_MAP.put(values[i].severityName, values[i]);
+	}
+    }
+    
+
+    /**
+     * <p>Immutable <code>Map</code> of valid {@link javax.faces.application.FacesMessage.Severity}
+     * instances, keyed by name.</p>
+     */
+    public final static Map VALUES_MAP = 
+	Collections.unmodifiableMap(_MODIFIABLE_MAP);
+    
+    private static final long serialVersionUID = -1180773928220076822L;
+
+
+    // ------------------------------------------------------------ Constructors
+
+
+    /**
+     * <p>Construct a new {@link javax.faces.application.FacesMessage} with no initial
+     * values. The severity is set to Severity.INFO.</p>
+     */
+    public FacesMessage() {
+
+        super();
+
+    }
+
+    /**
+     * <p>Construct a new {@link javax.faces.application.FacesMessage} with just a summary.  The
+     * detail is <code>null</code>, the severity is set to
+     * <code>Severity.INFO</code>.</p>
+     */
+    public FacesMessage(String summary) {
+
+        super();
+        setSummary(summary);
+    }
+
+
+
+
+    /**
+     * <p>Construct a new {@link javax.faces.application.FacesMessage} with the specified initial
+     * values.  The severity is set to Severity.INFO.</p>
+     *
+     * @param summary Localized summary message text
+     * @param detail Localized detail message text
+     *
+     * @throws IllegalArgumentException if the specified severity level
+     *  is not one of the supported values
+     */
+    public FacesMessage(String summary, String detail) {
+
+        super();
+        setSummary(summary);
+        setDetail(detail);
+
+    }
+
+
+    /**
+     * <p>Construct a new <code>FacesMessage</code> with the specified
+     * initial values.</p>
+     *
+     * @param severity the severity
+     * @param summary Localized summary message text
+     * @param detail Localized detail message text
+     *
+     * @throws IllegalArgumentException if the specified severity level
+     *  is not one of the supported values
+     */
+    public FacesMessage(Severity severity, String summary, 
+			String detail) {
+
+        super();
+	setSeverity(severity);
+        setSummary(summary);
+        setDetail(detail);
+
+    }
+
+
+    // ------------------------------------------------------ Instance Variables
+
+
+    private transient Severity severity = FacesMessage.SEVERITY_INFO;
+    private transient String summary = null;
+    private transient String detail = null;
+    private transient boolean rendered;
+
+
+    // ---------------------------------------------------------- Public Methods
+
+
+    /**
+     * <p>Return the localized detail text.  If no localized detail text has
+     * been defined for this message, return the localized summary text
+     * instead.</p>
+     */
+    public String getDetail() {
+
+	if (this.detail == null) {
+	    return (this.summary);
+	} else {
+	    return (this.detail);
+	}
+
+    }
+
+
+    /**
+     * <p>Set the localized detail text.</p>
+     *
+     * @param detail The new localized detail text
+     */
+    public void setDetail(String detail) {
+
+        this.detail = detail;
+
+    }
+
+
+    /**
+     * <p>Return the severity level.</p>
+     */
+    public Severity getSeverity() {
+
+        return (this.severity);
+
+    }
+
+
+    /**
+     * <p>Set the severity level.</p>
+     *
+     * @param severity The new severity level
+     *
+     * @throws IllegalArgumentException if the specified severity level
+     *  is not one of the supported values
+     */
+    public void setSeverity(Severity severity) {
+	
+        if ((severity.getOrdinal() < SEVERITY_INFO.getOrdinal()) || 
+	    (severity.getOrdinal() > SEVERITY_FATAL.getOrdinal())) {
+            throw new IllegalArgumentException(String.valueOf(severity));
+        }
+        this.severity = severity;
+	
+    }
+
+
+    /**
+     * <p>Return the localized summary text.</p>
+     */
+    public String getSummary() {
+
+        return (this.summary);
+
+    }
+
+
+    /**
+     * <p>Set the localized summary text.</p>
+     *
+     * @param summary The new localized summary text
+     */
+    public void setSummary(String summary) {
+
+        this.summary = summary;
+
+    }
+
+
+    /**
+     * @return <code>true</code> if {@link #rendered()} has been called, otherwise
+     *  <code>false</code>
+     *
+     * @since 2.0
+     */
+    public boolean isRendered() {
+
+        return rendered;
+
+    }
+
+    /**
+     * <p>Marks this message as having been rendered to the client.</p>
+     *
+     * @since 2.0
+     */
+    public void rendered() {
+
+        this.rendered = true;
+
+    }
+    
+
+    /**
+     * <p>Persist {@link javax.faces.application.FacesMessage} artifacts,
+     * including the non serializable <code>Severity</code>.</p>
+     */
+    private void writeObject(ObjectOutputStream out) throws IOException {
+        out.defaultWriteObject();
+        out.writeInt(severity.getOrdinal());
+        out.writeObject(summary);
+        out.writeObject(detail);
+        out.writeObject(rendered);
+    }
+
+    /**
+     * <p>Reconstruct {@link javax.faces.application.FacesMessage} from
+     * serialized artifacts.</p>
+     */
+    private void readObject(ObjectInputStream in)
+        throws IOException, ClassNotFoundException {
+        in.defaultReadObject();
+        severity = SEVERITY_INFO;
+        summary = null;
+        detail = null;
+        int ordinal = in.readInt();
+        if (ordinal == SEVERITY_INFO.getOrdinal()) {
+            severity = FacesMessage.SEVERITY_INFO;
+        } else if (ordinal == SEVERITY_WARN.getOrdinal()) {
+            severity = FacesMessage.SEVERITY_WARN;
+        } else if (ordinal == SEVERITY_ERROR.getOrdinal()) {
+            severity = FacesMessage.SEVERITY_ERROR;
+        } else if (ordinal == SEVERITY_FATAL.getOrdinal()) {
+            severity = FacesMessage.SEVERITY_FATAL;
+        }
+        summary = (String) in.readObject();
+        detail = (String) in.readObject();
+        rendered = (Boolean) in.readObject();
+    }
+
+    /**
+     * <p>Class used to represent message severity levels in a typesafe
+     * enumeration.</p>
+     */
+    public static class Severity implements Comparable {
+
+
+	// -------------------------------------------------------  Constructors
+
+	
+	/**
+	 * <p>Private constructor to disable the creation of new
+	 * instances.</p>
+	 */
+	private Severity(String newSeverityName) {
+	    severityName = newSeverityName;
+	}
+	
+	
+	// -------------------------------------------------- Instance Variables
+	
+	
+	/**
+	 * <p>The ordinal value assigned to this instance.</p>
+	 */
+	private final int ordinal = nextOrdinal++;
+	
+
+	/**
+	 * <p>The (optional) name for this severity.</p>
+	 */
+        String severityName = null;
+	
+	
+	// -----------------------------------------------------  Public Methods
+
+
+	/**
+	 * <p>Compare this {@link javax.faces.application.FacesMessage.Severity} instance to the
+	 * specified one.  Returns a negative integer, zero, or a
+	 * positive integer if this object is less than, equal to, or
+	 * greater than the specified object.</p>
+	 *
+	 * @param other The other object to be compared to
+	 */
+	public int compareTo(Object other) {
+	    return this.ordinal - ((Severity) other).ordinal;
+	}
+	
+	
+	/**
+	 * <p>Return the ordinal value of this {@link
+	 * FacesMessage.Severity} instance.</p>
+	 */
+	public int getOrdinal() {
+	    return (this.ordinal);
+	}
+	
+
+	/**
+	 * <p>Return a String representation of this {@link
+	 * FacesMessage.Severity} instance.</p>
+	 */
+	public String toString() {
+	    if (null == severityName) {
+		return (String.valueOf(this.ordinal));
+	    }
+	    return (String.valueOf(this.severityName) + ' ' + this.ordinal);
+	}
+	
+	
+	// ---------------------------------------------------  Static Variables
+	
+	
+	/**
+	 * <p>Static counter returning the ordinal value to be assigned to the
+	 * next instance that is created.</p>
+	 */
+	private static int nextOrdinal = 0;
+	
+    }
+
+
+}
diff --git a/jsf-api/src/main/java/javax/faces/application/NavigationCase.java b/jsf-api/src/main/java/javax/faces/application/NavigationCase.java
index 9ff703e..ef4f7bc 100644
--- a/jsf-api/src/main/java/javax/faces/application/NavigationCase.java
+++ b/jsf-api/src/main/java/javax/faces/application/NavigationCase.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -46,10 +50,11 @@ import javax.faces.context.ExternalContext;
 import javax.faces.context.FacesContext;
 
 /**
- * <p class="changed_added_2_0"><strong>NavigationCase</strong>
+ * <p class="changed_added_2_0"><strong class="changed_modified_2_2">
+ * NavigationCase</strong>
  * represents a <code><navigation-case></code> in the navigation
- * rule base, as well as the <code><from-view-id></code> inside
- * which this <code><navigation-case></code> is nested.</p>
+ * rule base, as well as the <span class="changed_modified_2_2"><code><from-view-id></code> with
+ * which this <code><navigation-case></code> is a sibling</span>.</p>
  *
  * @since 2.0
  */
@@ -60,6 +65,7 @@ public class NavigationCase {
     private final String fromOutcome;
     private final String condition;
     private final String toViewId;
+    private final String toFlowDocumentId;
     private final Map<String,List<String>> parameters;
     private final boolean redirect;
     private final boolean includeViewParams;
@@ -103,6 +109,46 @@ public class NavigationCase {
         this.fromOutcome = fromOutcome;
         this.condition = condition;
         this.toViewId = toViewId;
+        this.toFlowDocumentId = null;
+        this.parameters = parameters;
+        this.redirect = redirect;
+        this.includeViewParams = includeViewParams;
+
+    }
+
+
+    /**
+     * <p class="changed_added_2_0"> Construct a new
+     * <code>NavigationCase</code> based on the provided arguments.  See
+     * section JSF.7.4.2 for how a <code>NavigationCase</code> is used
+     * by the standard {@link ConfigurableNavigationHandler}</p>
+     *
+     * @param fromViewId return from {@link #getFromViewId}
+     * @param fromAction return from {@link #getFromAction}
+     * @param fromOutcome return from {@link #getFromOutcome}
+     * @param condition A string to be interpreted as a
+     * <code>ValueExpression</code> by a call to {@link #getCondition}
+     * @param toViewId return from {@link #getToViewId}
+     * @param parameters return from {@link #getParameters}
+     * @param redirect return from {@link #isRedirect}
+     * @param includeViewParams return {@link #isIncludeViewParams}
+     */
+    public NavigationCase(String fromViewId,
+                          String fromAction,
+                          String fromOutcome,
+                          String condition,
+                          String toViewId,
+                          String toFlowDocumentId,
+                          Map<String,List<String>> parameters,
+                          boolean redirect,
+                          boolean includeViewParams) {
+
+        this.fromViewId = fromViewId;
+        this.fromAction = fromAction;
+        this.fromOutcome = fromOutcome;
+        this.condition = condition;
+        this.toViewId = toViewId;
+        this.toFlowDocumentId = toFlowDocumentId;
         this.parameters = parameters;
         this.redirect = redirect;
         this.includeViewParams = includeViewParams;
@@ -178,7 +224,7 @@ public class NavigationCase {
                 extContext.getRequestServerPort(),
                 context.getApplication().getViewHandler().getRedirectURL(context,
                                                                          getToViewId(context),
-                                                                         getParameters(),
+                                                                         SharedUtils.evaluateExpressions(context, getParameters()),
                                                                          isIncludeViewParams()));
 
     }
@@ -261,17 +307,33 @@ public class NavigationCase {
                                                          toViewId,
                                                          String.class);
         }
-        String toViewId = (String) toViewIdExpr.getValue(context.getELContext());
-        if (toViewId.charAt(0) != '/') {
-            toViewId = '/' + toViewId;
+        String result = (String) toViewIdExpr.getValue(context.getELContext());
+        if (result.charAt(0) != '/') {
+            result = '/' + result;
         }
 
-        return toViewId;
+        return result;
 
     }
 
 
     /**
+     * <p class="changed_added_2_2">If this navigation case represents 
+     * a flow invocation, this property is the documentId in which the flow
+     * whose id is given by the return from {@link #getFromOutcome()} is 
+     * defined.  Implementations must override this method to return
+     * the value defined in the corresponding application configuration resources
+     * element.  The base implementation returns the empty string.</p>
+     *
+     * @since 2.2
+     */
+    public String getToFlowDocumentId() {
+
+        return toFlowDocumentId;
+
+    }
+    
+    /**
      * <p class="changed_added_2_0">Test if this navigation case has an
      * associated <code><if></code> element.
      *
@@ -292,7 +354,7 @@ public class NavigationCase {
      * <code><navigation-case></code>, if any.  The expression to
      * be evaluated is passed into the constructor as a string.  When
      * the expression is evaluated, its value must be coerced into a
-     * <code>boolean</code> per the normail EL coercion rules.</p>
+     * <code>boolean</code> per the normal EL coercion rules.</p>
      *
      * @param context the {@link FacesContext} for the current request
      *
@@ -391,6 +453,9 @@ public class NavigationCase {
                && !(toViewId != null
                     ? !toViewId.equals(that.toViewId)
                     : that.toViewId != null)
+               && !(toFlowDocumentId != null
+                    ? !toFlowDocumentId.equals(that.toFlowDocumentId)
+                    : that.toFlowDocumentId != null)
                && !(parameters != null
                     ? !parameters.equals(that.parameters)
                     : that.parameters != null));
@@ -413,6 +478,7 @@ public class NavigationCase {
                                     ? condition.hashCode()
                                     : 0);
             result = 31 * result + (toViewId != null ? toViewId.hashCode() : 0);
+            result = 31 * result + (toFlowDocumentId != null ? toFlowDocumentId.hashCode() : 0);
             result = 31 * result + (redirect ? 1 : 0);
             result = 31 * result + (parameters != null ? parameters.hashCode() : 0);
             hashCode = result;
diff --git a/jsf-api/src/main/java/javax/faces/application/NavigationCaseWrapper.java b/jsf-api/src/main/java/javax/faces/application/NavigationCaseWrapper.java
new file mode 100644
index 0000000..54b1e8d
--- /dev/null
+++ b/jsf-api/src/main/java/javax/faces/application/NavigationCaseWrapper.java
@@ -0,0 +1,158 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package javax.faces.application;
+
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.List;
+import java.util.Map;
+import javax.faces.FacesWrapper;
+import javax.faces.context.FacesContext;
+
+/**
+ * <p class="changed_added_2_2">Provides a simple implementation of 
+ * {@link NavigationCase} that can be subclassed by developers wishing to
+ * provide specialized behavior to an existing {@link NavigationCase}
+ * instance.  The default implementation of all methods is to call
+ * through to the wrapped {@link NavigationCase} instance.</p>
+ *
+ * <p class="changed_added_2_2">Usage: extend this class and override 
+ * {@link #getWrapped} to
+ * return the instance being wrapping.</p>
+ *
+ * @since 2.2
+ */
+public abstract class NavigationCaseWrapper extends NavigationCase implements FacesWrapper<NavigationCase> {
+
+    public NavigationCaseWrapper() {
+		super((String) null, (String) null, (String) null, (String) null, (String) null,
+                        (Map<String, List<String>>) null, false, false);
+    }
+    
+    @Override
+    public boolean equals(Object o) {
+        return getWrapped().equals(o);
+    }
+
+    @Override
+    public int hashCode() {
+        return getWrapped().hashCode();
+    }
+
+    @Override
+    public String toString() {
+        return getWrapped().toString();
+    }
+
+    @Override
+    public abstract NavigationCase getWrapped();
+
+    @Override
+    public URL getActionURL(FacesContext context) throws MalformedURLException {
+        return getWrapped().getActionURL(context);
+    }
+
+    @Override
+    public URL getBookmarkableURL(FacesContext context) throws MalformedURLException {
+        return getWrapped().getBookmarkableURL(context);
+    }
+
+    @Override
+    public Boolean getCondition(FacesContext context) {
+        return getWrapped().getCondition(context);
+    }
+
+    @Override
+    public String getFromAction() {
+        return getWrapped().getFromAction();
+    }
+
+    @Override
+    public String getFromOutcome() {
+        return getWrapped().getFromOutcome();
+    }
+
+    @Override
+    public String getFromViewId() {
+        return getWrapped().getFromViewId();
+    }
+
+    @Override
+    public Map<String, List<String>> getParameters() {
+        return getWrapped().getParameters();
+    }
+
+    @Override
+    public URL getRedirectURL(FacesContext context) throws MalformedURLException {
+        return getWrapped().getRedirectURL(context);
+    }
+
+    @Override
+    public URL getResourceURL(FacesContext context) throws MalformedURLException {
+        return getWrapped().getResourceURL(context);
+    }
+
+    @Override
+    public String getToViewId(FacesContext context) {
+        return getWrapped().getToViewId(context);
+    }
+
+    @Override
+    public String getToFlowDocumentId() {
+        return getWrapped().getToFlowDocumentId();
+    }
+
+    @Override
+    public boolean hasCondition() {
+        return getWrapped().hasCondition();
+    }
+
+    @Override
+    public boolean isIncludeViewParams() {
+        return getWrapped().isIncludeViewParams();
+    }
+
+    @Override
+    public boolean isRedirect() {
+        return getWrapped().isRedirect();
+    }
+
+}
diff --git a/jsf-api/src/main/java/javax/faces/application/NavigationHandler.java b/jsf-api/src/main/java/javax/faces/application/NavigationHandler.java
index f730a00..16fd498 100644
--- a/jsf-api/src/main/java/javax/faces/application/NavigationHandler.java
+++ b/jsf-api/src/main/java/javax/faces/application/NavigationHandler.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -41,7 +45,7 @@ import javax.faces.context.FacesContext;
 
 
 /**
- * <p><span class="changed_modified_2_0">A</a> 
+ * <p><span class="changed_modified_2_0 changed_modified_2_2">A</a> 
  * <strong>NavigationHandler</strong> is passed the outcome string
  * returned by an application action invoked for this application, and will
  * use this (along with related state information) to choose the view to
@@ -95,6 +99,34 @@ public abstract class NavigationHandler {
     public abstract void handleNavigation(FacesContext context,
                                           String fromAction,
                                           String outcome);
+    
+    /**
+     * <p class="changed_added_2_2">Overloaded variant of {@link #handleNavigation(javax.faces.context.FacesContext, java.lang.String, java.lang.String)}
+     * that allows the caller to provide the defining document id for a flow
+     * to be entered by this navigation.  For backward compatibility with 
+     * decorated {@code NavigationHandler} implementations that conform to an 
+     * earlier version of the specification, an implementation is provided that
+     * calls through to {@link #handleNavigation(javax.faces.context.FacesContext, java.lang.String, java.lang.String)},
+     * ignoring the {@code toFlowDocumentId} parameter.</p>
+     * 
+     * @param context The {@link FacesContext} for the current request
+     * @param fromAction The action binding expression that was evaluated
+     *  to retrieve the specified outcome, or <code>null</code> if the
+     *  outcome was acquired by some other means
+     * @param outcome The logical outcome returned by a previous invoked
+     *  application action (which may be <code>null</code>)
+     * @param toFlowDocumentId The defining document id of the flow into which
+     * this navigation will cause entry.
+     *
+     * @throws NullPointerException if <code>context</code>
+     *  is <code>null</code>
+     */
+    public void handleNavigation(FacesContext context,
+            String fromAction,
+            String outcome,
+            String toFlowDocumentId) {
+        this.handleNavigation(context, fromAction, outcome);
+    }
 
 
 }
diff --git a/jsf-api/src/main/java/javax/faces/application/NavigationHandlerWrapper.java b/jsf-api/src/main/java/javax/faces/application/NavigationHandlerWrapper.java
new file mode 100644
index 0000000..30ad32d
--- /dev/null
+++ b/jsf-api/src/main/java/javax/faces/application/NavigationHandlerWrapper.java
@@ -0,0 +1,76 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package javax.faces.application;
+
+import javax.faces.FacesWrapper;
+import javax.faces.context.FacesContext;
+
+/**
+ * <p
+ * class="changed_added_2_2"><strong>NavigationHandlerWrapper</strong>
+ * provides a simple implementation of {@link NavigationHandler} that
+ * can be subclassed by developers wishing to provide specialized
+ * behavior to an existing {@link NavigationHandler} instance.  The
+ * default implementation of all methods is to call through to the
+ * wrapped {@link NavigationHandler} instance.</p>
+ *
+ * <p class="changed_added_2_2>Usage: extend this class and override 
+ * {@link #getWrapped} to
+ * return the instance being wrapping.</p>
+ *
+ * @since 2.2
+ */
+public abstract class NavigationHandlerWrapper extends NavigationHandler implements FacesWrapper<NavigationHandler> {
+
+    @Override
+    public abstract NavigationHandler getWrapped();
+    
+    @Override
+    public void handleNavigation(FacesContext context, String fromAction, String outcome) {
+        getWrapped().handleNavigation(context, fromAction, outcome);
+    }
+
+    @Override
+    public void handleNavigation(FacesContext context, String fromAction, String outcome, String toFlowDocumentId) {
+        getWrapped().handleNavigation(context, fromAction, outcome, toFlowDocumentId);
+    }
+    
+}
diff --git a/jsf-api/src/main/java/javax/faces/application/ProjectStage.java b/jsf-api/src/main/java/javax/faces/application/ProjectStage.java
index 338c555..4d56a6b 100644
--- a/jsf-api/src/main/java/javax/faces/application/ProjectStage.java
+++ b/jsf-api/src/main/java/javax/faces/application/ProjectStage.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -34,7 +38,6 @@
  * holder.
  */
 
-
 package javax.faces.application;
 
 /**
diff --git a/jsf-api/src/main/java/javax/faces/application/ProtectedViewException.java b/jsf-api/src/main/java/javax/faces/application/ProtectedViewException.java
new file mode 100644
index 0000000..fa95995
--- /dev/null
+++ b/jsf-api/src/main/java/javax/faces/application/ProtectedViewException.java
@@ -0,0 +1,68 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+ * Copyright (c) 2011 Oracle and/or its affiliates. All rights reserved.
+
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package javax.faces.application;
+
+import javax.faces.FacesException;
+
+/**
+ * <p class="changed_added_2_2">This exception is thrown by the runtime
+ * when a violation of the view protection mechanism is encountered.</p>
+ * 
+ * @since 2.2
+ */
+
+public class ProtectedViewException extends FacesException {
+    
+    public ProtectedViewException(Throwable rootCause) {
+        super(rootCause);
+    }
+
+    public ProtectedViewException(String message, Throwable cause) {
+        super(message, cause);
+    }
+
+    public ProtectedViewException(String message) {
+        super(message);
+    }
+
+    public ProtectedViewException() {
+    }
+    
+}
diff --git a/jsf-api/src/main/java/javax/faces/application/Resource.java b/jsf-api/src/main/java/javax/faces/application/Resource.java
index ea80e5a..1cd8b7a 100644
--- a/jsf-api/src/main/java/javax/faces/application/Resource.java
+++ b/jsf-api/src/main/java/javax/faces/application/Resource.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -34,7 +38,6 @@
  * holder.
  */
 
-
 package javax.faces.application;
 
 import java.io.IOException;
@@ -45,19 +48,21 @@ import java.util.Map;
 import javax.faces.context.FacesContext;
 
 /**
- * <p class="changed_added_2_0">An instance of <code>Resource</code> is a Java
- * object representation of the artifact that is served up in response
- * to a <i>resource request</i> from the client.  Instances of
- * <code>Resource</code> are normally created and initialized via calls
- * to {@link ResourceHandler#createResource}.  See the documentation for
- * {@link ResourceHandler} for more information.</p>
+ * <p class="changed_added_2_0"><span
+ * class="changed_modified_2_1 changed_modified_2_2">An</span> instance of
+ * <code>Resource</code> is a Java object representation of the artifact
+ * that is served up in response to a <i>resource request</i> from the
+ * client.  Instances of <code>Resource</code> are normally created and
+ * initialized via calls to {@link ResourceHandler#createResource}.  See
+ * the documentation for {@link ResourceHandler} for more
+ * information.</p>
  *
  * <div class="changed_added_2_0">
  * </div>
  *
  * @since 2.0
  */
-public abstract class Resource {
+public abstract class Resource extends ViewResource {
     
     /**
      * <p class="changed_added_2_0">This constant is used as the key in the 
@@ -172,7 +177,8 @@ public abstract class Resource {
 
 
     /**
-     * <p class="changed_added_2_0">If the current request is a resource
+     * <p class="changed_added_2_0"><span
+     * class="changed_modified_2_1">If</span> the current request is a resource
      * request, (that is, {@link ResourceHandler#isResourceRequest}
      * returns <code>true</code>), return an <code>InputStream</code>
      * containing the bytes of the resource.  Otherwise, throw an
@@ -180,6 +186,14 @@ public abstract class Resource {
      * @return an <code>InputStream</code> containing the bytes of the
      * resource.</p>
      *
+     * <p class="changed_modified_2_1">Any EL expressions present in the
+     * resource must be evaluated before serving the bytes of the
+     * resource.  Note that due to browser and server caching, EL
+     * expressions in a resource file will generally only be evaluated
+     * once, when the resource is first served up.  Therefore, using EL
+     * expressions that refer to per-request data is not advisable since
+     * this data can become stale.</p>
+     *
      * @throws IOException if the current request is not a resource request.
      */
     public abstract InputStream getInputStream() throws IOException;
@@ -201,11 +215,12 @@ public abstract class Resource {
 
 
     /**
-     * <p class="changed_added_2_0">Return a path to this resource such
-     * that, when the browser resolves it against the base URI for the
-     * view that includes the resource, and issues a GET request to the
-     * resultant fully qualified URL, the bytes of the resource are
-     * returned in response.</p>
+     * <p class="changed_added_2_0"><span
+     * class="changed_modified_2_2">Return</span> a path to this
+     * resource such that, when the browser resolves it against the base
+     * URI for the view that includes the resource, and issues a GET
+     * request to the resultant fully qualified URL, the bytes of the
+     * resource are returned in response.</p>
      *
      * <div class="changed_added_2_0">
      *
@@ -216,7 +231,7 @@ public abstract class Resource {
      * <ul>
      *
      * <li><p>Get the context-root for this web application, not ending
-     * in slash.  For discussion this will be caled
+     * in slash.  For discussion this will be called
      * <em>contextRoot</em>.</p></li>
      *
      * <li><p>Discover if the <code>FacesServlet</code> is prefix or
@@ -239,18 +254,30 @@ public abstract class Resource {
      *
      * </li>
      *
-     * <li><p>If {@link #getLibraryName} returns non-<code>null</code>,
-     * build up a string, called <em>resourceMetaData</em> for
-     * discussion, as follows:</p>
+     * <li class="changed_modified_2_2"><p>Build up a string, called
+     * <em>resourceMetaData</em> which is an & separated string of
+     * name=value pairs suitable for inclusion in a URL query
+     * string.</p>
      *
      * <ul>
      *
-     * <p><code>resourceMetaData = "?ln=" + {@link
-     * #getLibraryName}</code></p>
+     * <p>If {@link #getLibraryName} returns non-<code>null</code>,
+     * <code>resourceMetaData</code> must include "ln=" + the return
+     * from {@link #getLibraryName}</p>
+
+     * <p class="changed_added_2_2">If there is a
+     * <code>localePrefix</code> for this application, as defined in
+     * {@link ResourceHandler#LOCALE_PREFIX}, <code>resourceMetaData</code> must
+     * include "loc=" + the <code>localePrefix</code>.</p>
+
+
+     * <p class="changed_added_2_2">If this resource is contained in a
+     * resource library contract, <code>resourceMetaData</code> must
+     * include "con=" + the name of the resource library contract.</p>
      *
      * </ul>
      *
-     * <p>Append <em>resourceMetaData</em> to <em>result</em>.</p>
+     * <p>Append "?" + <em>resourceMetaData</em> to <em>result</em>.</p>
      *
      * </li>
      *
@@ -258,7 +285,7 @@ public abstract class Resource {
      * ViewHandler#getResourceURL}.</p></li>
      *
      * </ul>
-     *
+
      * </div>
      *
      * @return the path to this resource, intended to be included in the
@@ -275,6 +302,7 @@ public abstract class Resource {
      * @return Return an actual <code>URL</code> instance that refers to
      * this resource instance.
      */
+    @Override
     public abstract URL getURL();
 
 
@@ -291,9 +319,14 @@ public abstract class Resource {
 
 
     /**
-     * <p class="changed_added_2_0">Return <code>true</code> if the
-     * user-agent requesting this resource needs an update.  Returns
-     * <code>false</code> otherwise.  
+     * <p class="changed_added_2_0"><span
+     * class="changed_modified_2_2">Return</span> <code>true</code> if
+     * the user-agent requesting this resource needs an update.  <span
+     * class="changed_added_2_2">If the {@code If-Modified-Since} HTTP
+     * header is available for this request, its value must be
+     * consulted, as specified in Section 14.25 of IETF RFC 2616, to
+     * determine the result.</span> Returns <code>false</code> if the
+     * user-agent does not need an update for this resource.</p>
      *
      * @return <code>true</code> or <code>false</code> depending on
      * whether or not the user-agent needs an update of this resource.
diff --git a/jsf-api/src/main/java/javax/faces/application/ResourceDependencies.java b/jsf-api/src/main/java/javax/faces/application/ResourceDependencies.java
index 8de23a7..1216158 100644
--- a/jsf-api/src/main/java/javax/faces/application/ResourceDependencies.java
+++ b/jsf-api/src/main/java/javax/faces/application/ResourceDependencies.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-api/src/main/java/javax/faces/application/ResourceDependency.java b/jsf-api/src/main/java/javax/faces/application/ResourceDependency.java
index 50b5d85..25c40f1 100644
--- a/jsf-api/src/main/java/javax/faces/application/ResourceDependency.java
+++ b/jsf-api/src/main/java/javax/faces/application/ResourceDependency.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-api/src/main/java/javax/faces/application/ResourceHandler.java b/jsf-api/src/main/java/javax/faces/application/ResourceHandler.java
index 32e70b4..e491819 100644
--- a/jsf-api/src/main/java/javax/faces/application/ResourceHandler.java
+++ b/jsf-api/src/main/java/javax/faces/application/ResourceHandler.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -42,10 +46,15 @@ import javax.faces.context.FacesContext;
 
 
 /**
- * <p class="changed_added_2_0"><strong>ResourceHandler</strong> is the
- * run-time API by which {@link javax.faces.component.UIComponent} and
- * {@link javax.faces.render.Renderer} instances can reference {@link
- * Resource} instances.  An implementation of this class must be thread-safe.</p>
+ * <p class="changed_added_2_0"><strong
+ * class="changed_modified_2_0_rev_a
+ * changed_modified_2_2 changed_modified_2_3">ResourceHandler</strong> is the run-time API by
+ * which {@link javax.faces.component.UIComponent} and {@link
+ * javax.faces.render.Renderer} instances<span
+ * class="changed_added_2_2">, and the {@link
+ * javax.faces.view.ViewDeclarationLanguage} can reference {@link
+ * Resource} instances.</span>  An implementation of this class must be
+ * thread-safe.</p>
  *
  * <div class="changed_added_2_0">
  *
@@ -67,13 +76,27 @@ import javax.faces.context.FacesContext;
  *
  * <p><code>resources/<resourceIdentifier></code></p>
  *
- * <p>relative to the web app root.</p>
+ * <p>relative to the web app root.  <span
+ * class="changed_added_2_2">"resources" is the default location, but
+ * this location can be changed by the value of the {@link
+ * #WEBAPP_RESOURCES_DIRECTORY_PARAM_NAME}
+ * <code><context-param></code>.</span></p>
  *
  * <p>For the default implementation, resources packaged in the
  * classpath must reside under the JAR entry name</p>
- *
+
  * <p><code>META-INF/resources/<resourceIdentifier></code></p>
 
+ * <div class="changed_added_2_2">
+
+ * <p>In the case of Faces Flows packaged
+ * within jar files, resources packaged in the classpath must reside
+ * under the jar entry name</p>
+
+ * <p><code>META-INF/flows/<resourceIdentifier></code></p>
+
+ * </div>
+
  * <p><code><resourceIdentifier></code> consists of several
  * segments, specified as follows.</p>
 
@@ -81,7 +104,9 @@ import javax.faces.context.FacesContext;
 
  * <p class="changed_modified_2_0_rev_a">None of the segments in the
  * resourceIdentifier may be relative paths, such as
- * ‘../otherLibraryName’.</p>
+ * ‘../otherLibraryName’.  The implementation is not
+ * required to support the <code>libraryVersion</code> and
+ * <code>resourceVersion</code> segments for the JAR packaging case.</p>
 
  * <p>Note that <em>resourceName</em> is the only required segment.</p>
  *
@@ -100,6 +125,9 @@ import javax.faces.context.FacesContext;
  *  to obtain the encoded URI for the resource.  See {@link
  *  Resource#getRequestPath} and the Standard HTML RenderKit specification for
  *  the complete specification.</p>
+
+ * <p class="changed_added_2_2">This usage of resources does not apply
+ * for resources that correspond to VDL resources.</p>
  *
  * </ul>
  *
@@ -113,7 +141,10 @@ import javax.faces.context.FacesContext;
  *  orchestrated by {@link #handleResourceRequest}, which calls {@link
  *  Resource#getInputStream} to obtain bytes of the resource.  See
  *  {@link #handleResourceRequest} for the complete specification.</p>
- *
+
+ * <p class="changed_added_2_2">This usage of resources does not apply
+ * for resources that correspond to VDL resources.</p>
+
  * </ul>
  *
  * </div>
@@ -135,6 +166,58 @@ public abstract class ResourceHandler {
 
 
     /**
+     * <p class="changed_added_2_2 changed_modified_2_3">This file must
+     * be located in
+     * <code>META-INF/contracts/<contractName>/</code> in a jar
+     * file that contains a resource library contract, where
+     * <code><contractName></code> is the name of the contract. If
+     * the jar file contains multiple contracts, the marker file must be
+     * present in each one. See “constant field values” for
+     * the name of the file that must be placed at that location.</p>
+
+     * @since 2.2
+     */
+
+    public static final String RESOURCE_CONTRACT_XML = "javax.faces.contract.xml";
+
+
+    /**
+
+     * <p class="changed_added_2_2">If a
+     * <code><context-param></code> with the param name equal to
+     * the value of {@link #WEBAPP_RESOURCES_DIRECTORY_PARAM_NAME}
+     * exists, the runtime must interpret its value as a path, relative
+     * to the web app root, where resources are to be located.  This
+     * param value must not start with a "/", though it may contain "/"
+     * characters.  If no such <code><context-param></code> exists, or
+     * its value is invalid, the value "resources", without the quotes,
+     * must be used by the runtime as the value.</p>
+     *
+     * @since 2.2
+     */
+
+    public static final String WEBAPP_RESOURCES_DIRECTORY_PARAM_NAME = 
+        "javax.faces.WEBAPP_RESOURCES_DIRECTORY";
+
+    /**
+
+     * <p class="changed_added_2_2">If a
+     * <code><context-param></code> with the param name equal to
+     * the value of {@link #WEBAPP_CONTRACTS_DIRECTORY_PARAM_NAME}
+     * exists, the runtime must interpret its value as a path, relative
+     * to the web app root, where resource library contracts are to be located.  This
+     * param value must not start with a "/", though it may contain "/"
+     * characters.  If no such <code><context-param></code> exists, or
+     * its value is invalid, the value "contracts", without the quotes,
+     * must be used by the runtime as the value.</p>
+     *
+     * @since 2.2
+     */
+
+    public static final String WEBAPP_CONTRACTS_DIRECTORY_PARAM_NAME = 
+        "javax.faces.WEBAPP_CONTRACTS_DIRECTORY";
+
+    /**
      * <p class="changed_added_2_0">The name of a key within the
      * application message bundle named by the return from {@link
      * Application#getMessageBundle} whose value is the locale prefix
@@ -163,11 +246,11 @@ public abstract class ResourceHandler {
           "javax.faces.RESOURCE_EXCLUDES";
 
     /**
-     * <p class="changed_added_2_0">The default value for the {@link
+     * <p class="changed_added_2_0 changed_modified_2_1">The default value for the {@link
      * #RESOURCE_EXCLUDES_PARAM_NAME} init param.</p>
      */
     public static final String RESOURCE_EXCLUDES_DEFAULT_VALUE =
-          ".class .jsp .jspx .properties .xhtml";
+          ".class .jsp .jspx .properties .xhtml .groovy";
 
 
 
@@ -175,19 +258,25 @@ public abstract class ResourceHandler {
     
 
     /**
-     * <p class="changed_added_2_0">Create an instance of
-     * <code>Resource</code> given the argument
+     * <p class="changed_added_2_0"><span
+     * class="changed_modified_2_2">Create</span> an instance of
+     * <code>ViewResource</code> given the argument
      * <code>resourceName</code>.  The content-type of the resource is
      * derived by passing the <em>resourceName</em> to {@link
      * javax.faces.context.ExternalContext#getMimeType}</p>
 
      * <div class="changed_added_2_0">
 
-     * <p>The algorithm specified in section JSF.2.6.1.4 of the spec prose
-     * document <a
+     * <p>The algorithm specified in section JSF.2.6.1.4 of the spec
+     * prose document <a
      * href="../../../overview-summary.html#prose_document">linked in
      * the overview summary</a> must be executed to create the
-     * <code>Resource</code></p>
+     * <code>Resource</code>.  <span class="changed_added_2_2">New
+     * requirements were introduced in version 2.2 of the specification.
+     * For historical reasons, this method operate correctly when the
+     * argument {@code resourceName} is of the form
+     * {@code libraryName/resourceName}, even when {@code resourceName}
+     * contains '/' characters.  </span></p>
 
      * </div>
 
@@ -200,33 +289,135 @@ public abstract class ResourceHandler {
      * for use in encoding or decoding the named resource.
      */
     public abstract Resource createResource(String resourceName);
+    
+    /**
+     * <p class="changed_added_2_2">Create an instance of <code>Resource</code>
+     * given the argument <code>resourceName</code>, which may contain "/" 
+     * characters.  The {@link javax.faces.view.ViewDeclarationLanguage} calls
+     * this method when it needs to load a view from a persistent store, such as
+     * a filesystem.  This method is functionality equivalent to 
+     * {@link #createResource(java.lang.String)}, but all callsites that need
+     * to load VDL views must use this method so that classes that want to 
+     * decorate the <code>ResourceHandler</code> in order to only affect the
+     * loading of views may do so without affecting the processing of other
+     * kinds of resources, such as scripts and stylesheets.
+     * A {@link javax.faces.context.FacesContext} must be present
+     * before calling this method.  To preserve compatibility with prior revisions of the
+     * specification, a default implementation must be provided that calls
+     * {@link #createResource(java.lang.String)}. </p>
+
+     * <div class="changed_added_2_2">
+
+     * <p>The default implementation must look for the resource in the
+     * following places, in this order.</p>
+
+     * <ul>
+
+     * <li><p>Considering resource library contracts (at the locations
+     * specified in the spec prose document section <em>Resource Library
+     * Contracts</em> in the <em>Request Processing Lifecycle</em>
+     * chapter).</p></li>
+
+     * <li><p>Considering the web app root.</p></li>
 
+     *  <li><p>Considering faces flows (at the locations specified in
+     * the spec prose document section <em>Faces Flows</em> in the
+     * <em>Using JSF in Web Applications</em> chapter).</p></li>
+
+     * </ul>
+     
+     * <p>Call {@link FacesContext#getResourceLibraryContracts}.  If the
+     * result is non-{@code null} and not empty, for each value in the
+     * list, treat the value as the name of a resource library contract.
+     * If the argument {@code resoureName} exists as a resource in the
+     * resource library contract, return it.  Otherwise, return the
+     * resource (not in the resource library contract), if found.
+     * Otherwise, return {@code null}.</p>
+
+     * </div>
+
+     * @param context the {@link FacesContext} for this request.
+
+     * @param resourceName the name of the resource to be interpreted as a view
+     * by the {@link javax.faces.view.ViewDeclarationLanguage}.
+
+     * @throws NullPointerException if <code>resourceName</code> is
+     *  {@code null}.
+
+     * @return a newly created {@link ViewResource} instance, suitable
+     * for use by the {@link javax.faces.view.ViewDeclarationLanguage}.
+     * 
+     * @since 2.2
+
+     */
+    
+    public ViewResource createViewResource(FacesContext context, String resourceName) {
+        return context.getApplication().getResourceHandler().createResource(resourceName);
+    }
 
     /**
-     * <p class="changed_added_2_0">Create an instance of
+     * <p class="changed_added_2_2">Create an instance of
+     * <code>Resource</code> given the argument
+     * <code>resourceId</code>.  The content-type of the resource is
+     * derived by passing the <em>resourceName</em> to {@link
+     * javax.faces.context.ExternalContext#getMimeType}</p>
+
+     * <div class="changed_added_2_2">
+
+     * <p>The resource must be identified according to the specification
+     * in JSF.2.6.1.3 of the spec prose document <a
+     * href="../../../overview-summary.html#prose_document">linked in
+     * the overview summary</a>.  New requirements were introduced in
+     * version 2.2 of the specification.</p>
+
+     * </div>
+
+     * @param resourceId the resource identifier of the resource.
+     *
+     * @throws NullPointerException if <code>resourceId</code> is
+     *  <code>null</code>.
+     *
+     * @return a newly created <code>Resource</code> instance, suitable
+     * for use in encoding or decoding the named resource.
+     * 
+     * @since 2.2
+     */
+
+    public Resource createResourceFromId(String resourceId) {
+        return null;
+    }
+
+    /**
+     * <p class="changed_added_2_0"><span
+     * class="changed_modified_2_2">Create</span> an instance of
      * <code>Resource</code> with a resourceName given by the value of
      * the argument <code>resourceName</code> that is a member of the
      * library named by the argument <code>libraryName</code>.  The
      * content-type of the resource is derived by passing the
-     * <em>resourceName</em> to
-     * {@link javax.faces.context.ExternalContext#getMimeType}.</p>
+     * <em>resourceName</em> to {@link
+     * javax.faces.context.ExternalContext#getMimeType}.</p>
      *
      * <div class="changed_added_2_0">
 
-     * <p>The algorithm specified in section JSF.2.6.1.4 of the spec prose
-     * document <a
+     * <p>The algorithm specified in section JSF.2.6.1.4 of the spec
+     * prose document <a
      * href="../../../overview-summary.html#prose_document">linked in
      * the overview summary</a> must be executed to create the
-     * <code>Resource</code></p>
+     * <code>Resource</code>. <span class="changed_added_2_2">New
+     * requirements were introduced in version 2.2 of the
+     * specification.</span></p>
 
      * </div>
 
      * @param resourceName the name of the resource.
      *
-     * @param libraryName the name of the library in which this resource
-     * resides, may be <code>null</code>. <span
+     * @param libraryOrContractName <span class="changed_modified_2_2">the
+     * name of the library (or contract) in which this resource
+     * resides, may be <code>null</code>. If there is a conflict between
+     * the name of a resource library and a resource library contract,
+     * the resource library takes precedence.  <span
      * class="changed_modified_2_0_rev_a">May not include relative
-     * paths, such as "../".</span>
+     * paths, such as "../".</span></span>
      *
      * @throws <code>NullPointerException</code> if
      * <code>resourceName</code> is <code>null</code>
@@ -235,11 +426,12 @@ public abstract class ResourceHandler {
      * for use in encoding or decoding the named resource.
      */
     public abstract Resource createResource(String resourceName,
-                                            String libraryName);
+                                            String libraryOrContractName);
 
 
     /**
-     * <p class="changed_added_2_0">Create an instance of
+     * <p class="changed_added_2_0"><span
+     * class="changed_modified_2_2">Create</span> an instance of
      * <code>Resource</code> with a <em>resourceName</em> given by the
      * value of the argument <code>resourceName</code> that is a member
      * of the library named by the argument <code>libraryName</code>
@@ -248,11 +440,13 @@ public abstract class ResourceHandler {
      *
      * <div class="changed_added_2_0">
 
-     * <p>The algorithm specified in section JSF.2.6.1.4 of the spec prose
-     * document <a
+     * <p>The algorithm specified in section JSF.2.6.1.4 of the spec
+     * prose document <a
      * href="../../../overview-summary.html#prose_document">linked in
      * the overview summary</a> must be executed to create the
-     * <code>Resource</code></p>
+     * <code>Resource</code>. <span class="changed_added_2_2">New
+     * requirements were introduced in version 2.2 of the
+     * specification.</span></p>
 
      * </div>
 
@@ -281,9 +475,20 @@ public abstract class ResourceHandler {
                                             String contentType);
     
     /**
-     * <p class="changed_added_2_0">Return <code>true</code> if the 
-     * resource library named by the argument <code>libraryName</code>
-     * can be found.</p>
+     * <p class="changed_added_2_0"><span
+     * class="changed_modified_2_2">Return</span> <code>true</code> if
+     * the resource library named by the argument
+     * <code>libraryName</code> can be found.  <span
+     * class="changed_added_2_2">If there is a <code>localePrefix</code>
+     * for this application, as defined in {@link #LOCALE_PREFIX}, first
+     * look for the library with the prefix.  If no such library is
+     * found, look for the library without the prefix.  This allows
+     * developers to avoid duplication of files.  For example, consider
+     * the case where the developer wants to have a resource library
+     * containing a localized image resource and a non-localized script
+     * resource.  By checking both locations for the existence of the
+     * library, along with other spec changes in section 2.6.1.4, this
+     * scenario is enabled.</span></p>
      *
      * @since 2.0
      * 
@@ -400,6 +605,27 @@ public abstract class ResourceHandler {
     public abstract boolean isResourceRequest(FacesContext context);
     
     /**
+     * <p class="changed_added_2_2">Return {@code true} if the argument {@code url}
+     * contains the string given by the value of the constant
+     * {@link ResourceHandler#RESOURCE_IDENTIFIER}, false otherwise.</p>
+     * 
+     * @param url the url to inspect for the presence of {@link ResourceHandler#RESOURCE_IDENTIFIER}.
+
+     * @throws NullPointerException if the argument url is {@code null}.
+     */
+    
+    public boolean isResourceURL(String url) {
+        boolean result = false;
+        if (null == url) {
+            throw new NullPointerException("null url");
+        }
+        result = url.contains(ResourceHandler.RESOURCE_IDENTIFIER);
+        
+        return result;
+        
+    }
+    
+    /**
      * <p class="changed_added_2_0">Return the <code>renderer-type</code> for a 
      * {@link javax.faces.render.Renderer} that is capable of rendering this 
      * resource. The default implementation must return values according to the
diff --git a/jsf-api/src/main/java/javax/faces/application/ResourceHandlerWrapper.java b/jsf-api/src/main/java/javax/faces/application/ResourceHandlerWrapper.java
index 88f0c87..d313ae5 100644
--- a/jsf-api/src/main/java/javax/faces/application/ResourceHandlerWrapper.java
+++ b/jsf-api/src/main/java/javax/faces/application/ResourceHandlerWrapper.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -42,7 +46,8 @@ import javax.faces.FacesWrapper;
 import javax.faces.context.FacesContext;
 
 /**
- * <p class="changed_added_2_0">Provides a simple implementation of
+ * <p class="changed_added_2_0"><span class="changed_modified_2_0_rev_a
+ * changed_modified_2_2">Provides</span> a simple implementation of
  * {@link ResourceHandler} that can be subclassed by developers wishing
  * to provide specialized behavior to an existing {@link
  * ResourceHandler} instance.  The default implementation of all methods
@@ -62,6 +67,7 @@ public abstract class ResourceHandlerWrapper extends ResourceHandler implements
     /**
      * @return the instance that we are wrapping.
      */ 
+    @Override
     public abstract ResourceHandler getWrapped();
 
 
@@ -73,30 +79,57 @@ public abstract class ResourceHandlerWrapper extends ResourceHandler implements
      * is to call {@link ResourceHandler#createResource(String)} on the
      * wrapped {@link ResourceHandler} object.</p>
      */
+    @Override
     public Resource createResource(String resourceName) {
 
         return getWrapped().createResource(resourceName);
 
     }
 
+    /**
+     * <p class="changed_added_2_2">The default behavior of this method
+     * is to call {@link ResourceHandler#createResourceFromId(String)} on the
+     * wrapped {@link ResourceHandler} object.</p>
+     *
+     * @since 2.2
+     */
+    @Override
+    public Resource createResourceFromId(String resourceId) {
+
+        return getWrapped().createResourceFromId(resourceId);
+
+    }
+
 
     /**
      * <p class="changed_added_2_0">The default behavior of this method
      * is to call {@link ResourceHandler#createResource(String, String)} on the wrapped
      * {@link ResourceHandler} object.</p>
      */
+    @Override
     public Resource createResource(String resourceName, String libraryName) {
 
         return getWrapped().createResource(resourceName, libraryName);
 
     }
 
+    /**
+     * <p class="changed_added_2_2">The default behavior of this method
+     * is to call {@link ResourceHandler#createViewResource} on the wrapped
+     * {@link ResourceHandler} object.</p>
+     */
+
+    @Override
+    public ViewResource createViewResource(FacesContext context, String resourceName) {
+        return getWrapped().createViewResource(context, resourceName);
+    }
 
     /**
      * <p class="changed_added_2_0">The default behavior of this method
      * is to call {@link ResourceHandler#createResource(String, String,
      * String)} on the wrapped {@link ResourceHandler} object.</p>
      */
+    @Override
     public Resource createResource(String resourceName,
                                    String libraryName,
                                    String contentType) {
@@ -114,6 +147,7 @@ public abstract class ResourceHandlerWrapper extends ResourceHandler implements
      * ResourceHandler#handleResourceRequest(javax.faces.context.FacesContext)}
      * on the wrapped {@link ResourceHandler} object.</p>
      */
+    @Override
     public void handleResourceRequest(FacesContext context) throws IOException {
 
         getWrapped().handleResourceRequest(context);
@@ -126,18 +160,32 @@ public abstract class ResourceHandlerWrapper extends ResourceHandler implements
      * is to call {@link ResourceHandler#isResourceRequest(javax.faces.context.FacesContext)} on the
      * wrapped {@link ResourceHandler} object.</p>
      */
+    @Override
     public boolean isResourceRequest(FacesContext context) {
 
         return getWrapped().isResourceRequest(context);
 
     }
 
+    /**
+     * <p class="changed_added_2_0">The default behavior of this method
+     * is to call {@link ResourceHandler#isResourceURL} on the
+     * wrapped {@link ResourceHandler} object.</p>
+     */
+    @Override
+    public boolean isResourceURL(String url) {
+        return getWrapped().isResourceURL(url);
+    }
+    
+    
+
 
     /**
      * <p class="changed_added_2_0">The default behavior of this method
      * is to call {@link ResourceHandler#libraryExists(String)} on the
      * wrapped {@link ResourceHandler} object.</p>
      */
+    @Override
     public boolean libraryExists(String libraryName) {
 
         return getWrapped().libraryExists(libraryName);
@@ -150,6 +198,7 @@ public abstract class ResourceHandlerWrapper extends ResourceHandler implements
      * is to call {@link ResourceHandler#getRendererTypeForResourceName(String)} on the
      * wrapped {@link ResourceHandler} object.</p>
      */
+    @Override
     public String getRendererTypeForResourceName(String resourceName) {
 
         return getWrapped().getRendererTypeForResourceName(resourceName);
diff --git a/jsf-api/src/main/java/javax/faces/application/ResourceWrapper.java b/jsf-api/src/main/java/javax/faces/application/ResourceWrapper.java
index 2438307..707ff7f 100644
--- a/jsf-api/src/main/java/javax/faces/application/ResourceWrapper.java
+++ b/jsf-api/src/main/java/javax/faces/application/ResourceWrapper.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -45,7 +49,8 @@ import javax.faces.FacesWrapper;
 import javax.faces.context.FacesContext;
 
 /**
- * <p class="changed_added_2_0">Provides a simple implementation of
+ * <p class="changed_added_2_0"><span class="changed_modified_2_2">Provides</span> 
+ * a simple implementation of
  * {@link Resource} that can be subclassed by developers wishing to
  * provide specialized behavior to an existing {@link Resource}
  * instance.  The default implementation of all methods is to call
@@ -66,17 +71,18 @@ public abstract class ResourceWrapper extends Resource implements FacesWrapper<R
     /**
      * @return the instance that we are wrapping.
      */ 
+    @Override
     public abstract Resource getWrapped();
 
 
     // --------------------------------------------------- Methods from Resource
 
-
     /**
      * <p class="changed_added_2_0">The default behavior of this method
      * is to call {@link Resource#getInputStream} on the wrapped {@link
      * ResourceHandler} object.</p>
      */
+    @Override
     public InputStream getInputStream() throws IOException {
 
         return getWrapped().getInputStream();
@@ -89,6 +95,7 @@ public abstract class ResourceWrapper extends Resource implements FacesWrapper<R
      * is to call {@link Resource#getURL} on the wrapped {@link
      * ResourceHandler} object.</p>
      */
+    @Override
     public URL getURL() {
 
         return getWrapped().getURL();
@@ -101,6 +108,7 @@ public abstract class ResourceWrapper extends Resource implements FacesWrapper<R
      * is to call {@link Resource#getResponseHeaders} on the wrapped {@link
      * ResourceHandler} object.</p>
      */
+    @Override
     public Map<String, String> getResponseHeaders() {
 
         return getWrapped().getResponseHeaders();
@@ -113,6 +121,7 @@ public abstract class ResourceWrapper extends Resource implements FacesWrapper<R
      * is to call {@link Resource#getRequestPath} on the wrapped {@link
      * ResourceHandler} object.</p>
      */
+    @Override
     public String getRequestPath() {
 
         return getWrapped().getRequestPath();
@@ -125,10 +134,83 @@ public abstract class ResourceWrapper extends Resource implements FacesWrapper<R
      * is to call {@link Resource#userAgentNeedsUpdate} on the wrapped {@link
      * ResourceHandler} object.</p>
      */
+    @Override
     public boolean userAgentNeedsUpdate(FacesContext context) {
 
         return getWrapped().userAgentNeedsUpdate(context);
         
     }
 
+
+    /**
+     * <p class="changed_added_2_2"> The default behavior of this method is to call
+     * {@link Resource#getContentType()} on the wrapped {@link ResourceHandler} object. </p>
+     */
+    @Override
+    public String getContentType() {
+
+        return getWrapped().getContentType();
+        
+    }
+
+    
+    /**
+     * <p class="changed_added_2_2"> The default behavior of this method is to call
+     * {@link Resource#setContentType(String)} on the wrapped {@link ResourceHandler} object. </p>
+     */
+    @Override
+    public void setContentType(String contentType) {
+
+        getWrapped().setContentType(contentType);
+
+    }
+
+
+    /**
+     * <p class="changed_added_2_2"> The default behavior of this method is to call
+     * {@link Resource#getLibraryName()} on the wrapped {@link ResourceHandler} object. </p>
+     */
+    @Override
+    public String getLibraryName() {
+
+        return getWrapped().getLibraryName();
+
+    }
+    
+    
+    /**
+     * <p class="changed_added_2_2"> The default behavior of this method is to call
+     * {@link Resource#setLibraryName(String)} on the wrapped {@link ResourceHandler} object. </p>
+     */
+    @Override
+    public void setLibraryName(String libraryName) {
+        
+        getWrapped().setLibraryName(libraryName);
+        
+    }
+
+    
+    /**
+     * <p class="changed_added_2_2"> The default behavior of this method is to call
+     * {@link Resource#getResourceName()} on the wrapped {@link ResourceHandler} object. </p>
+     */
+    @Override
+    public String getResourceName() {
+        
+        return getWrapped().getResourceName();
+        
+    }
+    
+    
+    /**
+     * <p class="changed_added_2_2"> The default behavior of this method is to call
+     * {@link Resource#setResourceName(String)} on the wrapped {@link ResourceHandler} object. </p>
+     */
+    @Override
+    public void setResourceName(String resourceName) {
+        
+        getWrapped().setResourceName(resourceName);
+        
+    }
+        
 }
diff --git a/jsf-api/src/main/java/javax/faces/application/StateManager.java b/jsf-api/src/main/java/javax/faces/application/StateManager.java
index 49125d8..0bc1183 100644
--- a/jsf-api/src/main/java/javax/faces/application/StateManager.java
+++ b/jsf-api/src/main/java/javax/faces/application/StateManager.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -47,8 +51,9 @@ import java.io.IOException;
 
 
 /**
- * <p><strong class="changed_modified_2_0">StateManager</strong> directs the 
- * process of saving and
+ * <p>
+ * <strong class="changed_modified_2_0 changed_modified_2_1 changed_modified_2_2">StateManager</strong>
+ * directs the process of saving and
  * restoring the view between requests.  <span class="changed_added_2_0">An
  * implementation
  * of this class must be thread-safe.</span>  The {@link StateManager}
@@ -126,6 +131,48 @@ public abstract class StateManager {
     public static final String FULL_STATE_SAVING_VIEW_IDS_PARAM_NAME =
           "javax.faces.FULL_STATE_SAVING_VIEW_IDS";
 
+    /**
+     * <p class="changed_added_2_1">Marker within the
+     * <code>FacesContext</code> attributes map to indicate we are
+     * saving state.  The implementation must set this marker into the
+     * map <b>before</b> starting the state saving traversal and the marker
+     * must be cleared, in a finally block, <b>after</b> the traversal is
+     * complete.</p>
+     */
+    public static final String IS_SAVING_STATE =
+          "javax.faces.IS_SAVING_STATE";
+
+    /**
+     * <p class="changed_added_2_1">Marker within the
+     * <code>FacesContext</code> attributes map to indicate we are
+     * marking initial state, so the <code>markInitialState()</code>
+     * method of iterating components such as {@link
+     * javax.faces.component.UIData} could recognize this fact and save
+     * the initial state of descendents.</p>
+
+     * @since 2.1
+
+     */
+    public final static String IS_BUILDING_INITIAL_STATE =
+            "javax.faces.IS_BUILDING_INITIAL_STATE";
+    
+    /**
+     * <p class="changed_added_2_2">
+     * If this param is set, and calling toLowerCase().equals("true") on a
+     * String representation of its value returns true, and the
+     * javax.faces.STATE_SAVING_METHOD is set to "server" (as indicated
+     * below), the server state must be guaranteed to be Serializable such
+     * that the aggregate state implements java.io.Serializable. The intent
+     * of this parameter is to ensure that the act of writing out the state
+     * to an ObjectOutputStream would not throw a NotSerializableException,
+     * but the runtime is not required verify this before saving the state.      
+     * </p>
+     * 
+     * @since 2.2
+     */
+        
+    public static final String SERIALIZE_SERVER_STATE_PARAM_NAME = 
+            "javax.faces.SERIALIZE_SERVER_STATE";
 
     /**
      * <p>Constant value for the initialization parameter named by
@@ -144,6 +191,9 @@ public abstract class StateManager {
 
     // ---------------------------------------------------- State Saving Methods
 
+    private static final String IS_CALLED_FROM_API_CLASS =
+        "javax.faces.ensureOverriddenInvocation";
+
 
     /**
      * <p>Return the tree structure and component state information for the
@@ -172,11 +222,18 @@ public abstract class StateManager {
      * return.  If the return is an <code>Object []</code>, it casts the
      * result to an <code>Object []</code> wrapping the first and second
      * elements in an instance of {@link SerializedView}, which it then
-     * returns.  Otherwise, it return <code>null</code>
+     * returns.  Otherwise, it returns <code>null</code>
      */
     public SerializedView saveSerializedView(FacesContext context) {
 
-        Object stateObj = saveView(context);
+        context.getAttributes().put(IS_CALLED_FROM_API_CLASS, Boolean.TRUE);
+        Object stateObj = null;
+        try {
+            stateObj = saveView(context);
+        } finally {
+            context.getAttributes().remove(IS_CALLED_FROM_API_CLASS);
+        }
+
         SerializedView result = null;
         if (null != stateObj) {
             if (stateObj instanceof Object[]) {
@@ -190,7 +247,9 @@ public abstract class StateManager {
     }
 
     /**
-     * <p>Return an opaque <code>Object</code> containing sufficient
+     * <p><span class="changed_deleted_2_2">The functionality of this method
+     * is now handled by {@link javax.faces.view.StateManagementStrategy#saveView}.
+     * </span> Return an opaque <code>Object</code> containing sufficient
      * information for this same instance to restore the state of the
      * current {@link UIViewRoot} on a subsequent request.  The returned
      * object must implement <code>java.io.Serializable</code>. If there
@@ -222,10 +281,17 @@ public abstract class StateManager {
      *                               the same non-<code>null</code> component id
      * @since 1.2
      */
+    @Deprecated
     public Object saveView(FacesContext context) {
-        SerializedView view = saveSerializedView(context);
-        Object stateArray[] = {view.getStructure(),
-                               view.getState()};
+        Object stateArray[] = null;
+
+        if (!context.getAttributes().containsKey(IS_CALLED_FROM_API_CLASS)) {
+            SerializedView view = saveSerializedView(context);
+            if (null != view) {
+                stateArray = new Object[]{view.getStructure(),
+                            view.getState()};
+            }
+        }
         return stateArray;
     }
 
@@ -367,7 +433,9 @@ public abstract class StateManager {
 
 
     /**
-     * <p>Restore the tree structure and the component state of the view
+     * <p><span class="changed_deleted_2_2">The functionality of this method
+     * is now handled by {@link javax.faces.view.StateManagementStrategy#restoreView}.
+     * </span> Restore the tree structure and the component state of the view
      * for the specified <code>viewId</code>, in an implementation dependent
      * manner, and return the restored {@link UIViewRoot}.  If there is no
      * saved state information available for this <code>viewId</code>,
@@ -394,6 +462,7 @@ public abstract class StateManager {
      * @throws IllegalArgumentException if <code>renderKitId</code>
      *                                  is <code>null</code>.
      */
+    @Deprecated
     public abstract UIViewRoot restoreView(FacesContext context, String viewId,
                                            String renderKitId);
 
@@ -521,14 +590,7 @@ public abstract class StateManager {
      * @since 2.0
      */
     public String getViewState(FacesContext context) {
-
         Object state = saveView(context);
-        if (state != null) {
-            return context.getRenderKit().getResponseStateManager()
-                  .getViewState(context, state);
-        }
-        return null;
-
+        return context.getRenderKit().getResponseStateManager().getViewState(context, state);
     }
-
 }
diff --git a/jsf-api/src/main/java/javax/faces/application/StateManagerWrapper.java b/jsf-api/src/main/java/javax/faces/application/StateManagerWrapper.java
index 3b14efa..054fa85 100644
--- a/jsf-api/src/main/java/javax/faces/application/StateManagerWrapper.java
+++ b/jsf-api/src/main/java/javax/faces/application/StateManagerWrapper.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -59,7 +63,7 @@ public abstract class StateManagerWrapper extends StateManager implements FacesW
     /**
      * @return the instance that we are wrapping.
      */ 
-
+    @Override
     public abstract StateManager getWrapped();
 
     // ----------------------- Methods from javax.faces.application.StateManager
@@ -73,6 +77,7 @@ public abstract class StateManagerWrapper extends StateManager implements FacesW
      * @see StateManager#saveSerializedView(javax.faces.context.FacesContext)
      * @since 1.2
      */
+    @Override
     public SerializedView saveSerializedView(FacesContext context) {
 
         return getWrapped().saveSerializedView(context);
@@ -88,6 +93,7 @@ public abstract class StateManagerWrapper extends StateManager implements FacesW
      * @see StateManager#saveView(javax.faces.context.FacesContext)
      * @since 1.2
      */
+    @Override
     public Object saveView(FacesContext context) {
         return getWrapped().saveView(context);
     }
@@ -101,6 +107,7 @@ public abstract class StateManagerWrapper extends StateManager implements FacesW
      * @see StateManager#getTreeStructureToSave(javax.faces.context.FacesContext)
      * @since 1.2
      */
+    @Override
     protected Object getTreeStructureToSave(FacesContext context) {
 
         return getWrapped().getTreeStructureToSave(context);
@@ -116,6 +123,7 @@ public abstract class StateManagerWrapper extends StateManager implements FacesW
      * @see StateManager#getComponentStateToSave(javax.faces.context.FacesContext)
      * @since 1.2
      */
+    @Override
     protected Object getComponentStateToSave(FacesContext context) {
 
         return getWrapped().getComponentStateToSave(context);
@@ -132,6 +140,7 @@ public abstract class StateManagerWrapper extends StateManager implements FacesW
      * java.lang.Object)
      * @since 1.2
      */
+    @Override
     public void writeState(FacesContext context,
                            Object state)
     throws IOException {
@@ -151,6 +160,7 @@ public abstract class StateManagerWrapper extends StateManager implements FacesW
      * @see StateManager#writeState(javax.faces.context.FacesContext, javax.faces.application.StateManager.SerializedView)
      * @since 1.2
      */
+    @Override
     public void writeState(FacesContext context,
                            SerializedView state)
     throws IOException {
@@ -168,6 +178,7 @@ public abstract class StateManagerWrapper extends StateManager implements FacesW
      * @see StateManager#restoreView(javax.faces.context.FacesContext, String, String)
      * @since 1.2
      */
+    @Override
     public UIViewRoot restoreView(FacesContext context, String viewId,
                                   String renderKitId) {
 
@@ -184,6 +195,7 @@ public abstract class StateManagerWrapper extends StateManager implements FacesW
      * @see StateManager#restoreTreeStructure(javax.faces.context.FacesContext, String, String)
      * @since 1.2
      */
+    @Override
     protected UIViewRoot restoreTreeStructure(FacesContext context,
                                               String viewId,
                                               String renderKitId) {
@@ -201,6 +213,7 @@ public abstract class StateManagerWrapper extends StateManager implements FacesW
      * @see StateManager#restoreComponentState(javax.faces.context.FacesContext, javax.faces.component.UIViewRoot, String)
      * @since 1.2
      */
+    @Override
     protected void restoreComponentState(FacesContext context,
                                          UIViewRoot viewRoot,
                                          String renderKitId) {
@@ -218,6 +231,7 @@ public abstract class StateManagerWrapper extends StateManager implements FacesW
      * @see StateManager#isSavingStateInClient(javax.faces.context.FacesContext) 
      * @since 1.2
      */
+    @Override
     public boolean isSavingStateInClient(FacesContext context) {
 
         return getWrapped().isSavingStateInClient(context);
diff --git a/jsf-api/src/main/java/javax/faces/application/ViewExpiredException.java b/jsf-api/src/main/java/javax/faces/application/ViewExpiredException.java
index 92f696e..93aa434 100644
--- a/jsf-api/src/main/java/javax/faces/application/ViewExpiredException.java
+++ b/jsf-api/src/main/java/javax/faces/application/ViewExpiredException.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -34,7 +38,6 @@
  * holder.
  */
 
-
 package javax.faces.application;
 
 import javax.faces.FacesException;
diff --git a/jsf-api/src/main/java/javax/faces/application/ViewHandler.java b/jsf-api/src/main/java/javax/faces/application/ViewHandler.java
index 88b08e7..9cec65a 100644
--- a/jsf-api/src/main/java/javax/faces/application/ViewHandler.java
+++ b/jsf-api/src/main/java/javax/faces/application/ViewHandler.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -38,9 +42,11 @@ package javax.faces.application;
 
 import java.io.IOException;
 import java.io.UnsupportedEncodingException;
+import java.util.Collections;
 import java.util.List;
 import java.util.Locale;
 import java.util.Map;
+import java.util.Set;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
@@ -49,21 +55,14 @@ import javax.faces.component.UIComponent;
 import javax.faces.component.UIViewRoot;
 import javax.faces.context.ExternalContext;
 import javax.faces.context.FacesContext;
-import javax.faces.view.ActionSource2AttachedObjectHandler;
-import javax.faces.view.ActionSource2AttachedObjectTarget;
-import javax.faces.view.AttachedObjectHandler;
-import javax.faces.view.AttachedObjectTarget;
-import javax.faces.view.EditableValueHolderAttachedObjectHandler;
-import javax.faces.view.EditableValueHolderAttachedObjectTarget;
 import javax.faces.view.ViewDeclarationLanguage;
-import javax.faces.view.ValueHolderAttachedObjectHandler;
-import javax.faces.view.ValueHolderAttachedObjectTarget;
 
 
 
 /**
  * <p><strong><span
- * class="changed_modified_2_0">ViewHandler</span></strong> is the
+ * class="changed_modified_2_0 changed_modified_2_1 changed_modified_2_2">
+ * ViewHandler</span></strong> is the
  * pluggablity mechanism for allowing implementations of or applications
  * using the JavaServer Faces specification to provide their own
  * handling of the activities in the <em>Render Response</em> and
@@ -92,7 +91,7 @@ import javax.faces.view.ValueHolderAttachedObjectTarget;
 
 public abstract class ViewHandler {
 
-    private static Logger log = Logger.getLogger("javax.faces.application");
+    private static final Logger log = Logger.getLogger("javax.faces.application");
 
 
     // ------------------------------------------------------ Manifest Constants
@@ -124,10 +123,26 @@ public abstract class ViewHandler {
 
 
     /**
-     * <p>The value to use for the default extension if the webapp is using
-     * url extension mapping.</p>
+     * <p class="changed_modified_2_1">The value to use for the default
+     * extension if the webapp is using url extension mapping.</p>
      */
-    public static final String DEFAULT_SUFFIX = ".xhtml .jsp";
+    public static final String DEFAULT_SUFFIX = ".xhtml .view.xml .jsp";
+    
+    /**
+     * <p class="changed_added_2_2">
+     * If this param is set, and calling toLowerCase().equals("true") on a
+     * String representation of its value returns true, the runtime must
+     * ensure that any XML comments in the Facelets source page are not
+     * delivered to the client. The runtime must also consider the
+     * facelets.SKIP_COMMENTS param name as an alias to this param name for
+     * backwards compatibility with existing facelets tag libraries.
+     * </p>
+     * 
+     * @since 2.0
+     */
+    
+    public static final String FACELETS_SKIP_COMMENTS_PARAM_NAME = 
+            "javax.faces.FACELETS_SKIP_COMMENTS";
     
     /**
      * <p class="changed_added_2_0">Allow the web application to define an
@@ -170,7 +185,90 @@ public abstract class ViewHandler {
     
     public static final String FACELETS_VIEW_MAPPINGS_PARAM_NAME = 
             "javax.faces.FACELETS_VIEW_MAPPINGS";
-
+    
+    /**
+     * <p class="changed_added_2_2">
+     * The buffer size to set on the response when the ResponseWriter is
+     * generated. By default the value is 1024. A value of -1 will not assign
+     * a buffer size on the response. This should be increased if you are
+     * using development mode in order to guarantee that the response isn't
+     * partially rendered when an error is generated. The runtime must also
+     * consider the facelets.BUFFER_SIZE param name as an alias to this param
+     * name for backwards compatibility with existing facelets tag libraries.</p>
+     * 
+     * @since 2.0
+     */
+    
+    public static final String FACELETS_BUFFER_SIZE_PARAM_NAME = 
+            "javax.faces.FACELETS_BUFFER_SIZE";
+    
+    /**
+     * <p class="changed_added_2_2">When a page is requested, what interval in seconds should the compiler
+     * check for changes. If you don't want the compiler to check for changes
+     * once the page is compiled, then use a value of -1. Setting a low
+     * refresh period helps during development to be able to edit pages in a
+     * running application.The runtime must also consider the
+     * facelets.REFRESH_PERIOD param name as an alias to this param name for
+     * backwards compatibility with existing facelets tag libraries.
+     * </p>
+     * 
+     * @since 2.0
+     */
+    public static final String FACELETS_REFRESH_PERIOD_PARAM_NAME = 
+            "javax.faces.FACELETS_REFRESH_PERIOD";
+    
+    /**
+     * <p class="changed_added_2_2">
+     * If this param is set, the runtime must interpret it as a semicolon (;)
+     * separated list of paths, starting with "/" (without the quotes). The
+     * runtime must interpret each entry in the list as a path relative to
+     * the web application root and interpret the file found at that path as
+     * a facelet tag library, conforming to the facelet taglibrary schema and
+     * expose the tags therein according to Section "Facelet Tag Library
+     * mechanism". The runtime must also consider the facelets.LIBRARIES
+     * param name as an alias to this param name for backwards compatibility
+     * with existing facelets tag libraries.     
+     * </p>
+     * 
+     * 
+     * @since 2.0
+     */
+    
+    public static final String FACELETS_LIBRARIES_PARAM_NAME = 
+            "javax.faces.FACELETS_LIBRARIES";
+    
+    /**
+     * <p class="changed_added_2_2">A semicolon (;) delimitted list of class names of type
+     * javax.faces.view.facelets.TagDecorator, with a no-argument
+     * constructor. These decorators will be loaded when the first request
+     * for a Facelets VDL view hits the ViewHandler for page compilation.The
+     * runtime must also consider the facelets.DECORATORS param name as an
+     * alias to this param name for backwards compatibility with existing
+     * facelets tag libraries.
+     * </p>
+     * 
+     * @since 2.0
+     */
+    
+    public static final String FACELETS_DECORATORS_PARAM_NAME = 
+            "javax.faces.FACELETS_DECORATORS";
+    
+    /**
+     * <p class="changed_added_2_2">
+     * If this param is set, and calling toLowerCase().equals("true") on a
+     * String representation of its value returns true, the default
+     * ViewHandler must behave as specified in the latest 1.2 version of this
+     * specification. Any behavior specified in Section "Default
+     * ViewDeclarationLanguage Implementation" of the spec prose document and
+     * implemented in the default ViewHandler that pertains to handling
+     * requests for pages authored in the JavaServer Faces View Declaration
+     * Language must not be executed by the runtime.
+     * </p>
+     * 
+     * @since 2.0
+     */
+    public static final String DISABLE_FACELET_JSF_VIEWHANDLER_PARAM_NAME = 
+            "DISABLE_FACELET_JSF_VIEWHANDLER";
 
     // ---------------------------------------------------------- Public Methods
 
@@ -281,7 +379,7 @@ public abstract class ViewHandler {
     /**
      * <p class="changed_added_2_0">Derive and return the viewId from
      * the current request, or the argument input by following the
-     * algorithm defined in specification section JSF.7.5.2.</p>
+     * algorithm defined in specification section JSF.7.6.2.</p>
      *
      * <p>The default implementation of this method simply returns
      * rawViewId unchanged.</p>
@@ -297,17 +395,43 @@ public abstract class ViewHandler {
         return rawViewId;
 
     }
+
+    /**
+     * <p class="changed_added_2_1">Derive and return the viewId from
+     * the current request, or the argument input by following the
+     * algorithm defined in specification section JSF.7.6.2.  Note that
+     * unlike <code>deriveViewId()</code>, this method does not require that
+     * a physical view be present.</p>
+     *
+     * <p>The default implementation of this method simply returns
+     * rawViewId unchanged.</p>
+     *
+     * @param context the <code>FacesContext</code> for this request
+     *
+     * @param rawViewId the <code>viewId</code> to derive,
+     *
+     * @since 2.1
+     */
+    public String deriveLogicalViewId(FacesContext context, String rawViewId) {
+
+        return rawViewId;
+
+    }
     
 
     /**
-     * <p class="changed_modified_2_0">If the value returned from this
+     * <p class="changed_modified_2_0"><span class="changed_modified_2_2">If</span>
+     * the value returned from this
      * method is used as the <code>file</code> argument to the
      * four-argument constructor for <code>java.net.URL</code> (assuming
      * appropriate values are used for the first three arguments), then
      * a client making a request to the <code>toExternalForm()</code> of
      * that <code>URL</code> will select the argument
      * <code>viewId</code> for traversing the JSF lifecycle.  Please see
-     * section JSF.7.5.2 for the complete specification.</p>
+     * section JSF.7.6.2 for the complete specification, 
+     * <span class="changed_added_2_2">especially for details related
+     * to view protection using the {@link javax.faces.render.ResponseStateManager#NON_POSTBACK_VIEW_TOKEN_PARAM}
+     * </span>.</p>
      *
      * @param context {@link FacesContext} for this request
      * @param viewId View identifier of the desired view
@@ -341,14 +465,71 @@ public abstract class ViewHandler {
      *  <code>path</code> is <code>null</code>.
      */
     public abstract String getResourceURL(FacesContext context, String path);
-
-
+    
+    /**
+     * <p class="changed_added_2_2">Return an unmodifiable
+     * <code>Set</code> of the protected views currently known to this
+     * <code>ViewHandler</code> instance. Compliant implementations must
+     * return a <code>Set</code> that is the concatenation of the
+     * contents of all the <code><url-pattern></code> elements
+     * within all the <code><protected-views></code> in all of the
+     * application configuration resources in the current application.
+     * The runtime must support calling this method at any time after
+     * application startup.  The default implementation returns an
+     * unmodifiable empty <code>Set</code>.</p>
+     * 
+     * @since 2.2 
+     */
+    public Set<String> getProtectedViewsUnmodifiable() {
+        return Collections.unmodifiableSet(Collections.EMPTY_SET);
+    }
+    
+    /**
+     * <p class="changed_added_2_2">Add the argument
+     * <code>urlPattern</code> to the thread safe <code>Set</code> of
+     * protected views for this application.  Compliant implementations
+     * make it so a subsequent call to {@link
+     * #getProtectedViewsUnmodifiable} contains the argument. The
+     * runtime must support calling this method at any time after
+     * application startup.  The default implementation takes no
+     * action.</p>
+     * 
+     * @param urlPattern the url-pattern to add.
+     * 
+     * @since 2.2 
+     */
+    public void addProtectedView(String urlPattern) {
+        
+    }
+    
+    /**
+     * <p class="changed_added_2_2">Remove the argument
+     * <code>urlPattern</code> from the thread safe <code>Set</code> of
+     * protected views for this application, if present in the
+     * <code>Set</code>. If the argument <code>urlPattern</code> is not
+     * present in the <code>Set</code>, this method has no effect.
+     * Compliant implementations must make it so a subsequent call to
+     * {@link #getProtectedViewsUnmodifiable} does not contain the
+     * argument. The runtime must support calling this method at any
+     * time after application startup.  Returns <code>true</code> if
+     * this <code>Set</code> contained the argument.  The default
+     * implementation takes no action and returns
+     * <code>false</code>.</p>
+     * 
+     * @param urlPattern the url-pattern to remove.
+     * 
+     * @since 2.2 
+     */
+    public boolean removeProtectedView(String urlPattern) {
+        return false;
+    }
+    
     /**
      * <p class="changed_added_2_0"> Return a JSF action URL derived
      * from the <code>viewId</code> argument that is suitable to be used
      * by the {@link NavigationHandler} to issue a redirect request to
-     * the URL using a NonFaces request.  Compiliant implementations
-     * must implement this method as specified in section JSF.7.5.2.
+     * the URL using a NonFaces request.  Compliant implementations
+     * must implement this method as specified in section JSF.7.6.2.
      * The default implementation simply calls through to {@link
      * #getActionURL}, passing the arguments <code>context</code> and
      * <code>viewId</code>.</p>
@@ -374,7 +555,7 @@ public abstract class ViewHandler {
      * <p class="changed_added_2_0"> Return a JSF action URL derived
      * from the viewId argument that is suitable to be used as the
      * target of a link in a JSF response. Compiliant implementations
-     * must implement this method as specified in section JSF.7.5.2.
+     * must implement this method as specified in section JSF.7.6.2.
      * The default implementation simply calls through to {@link
      * #getActionURL}, passing the arguments <code>context</code> and
      * <code>viewId</code>.</p>
@@ -397,8 +578,8 @@ public abstract class ViewHandler {
 
 
     /**
-     * <p class="changed_added_2_0">Return the {@link
-     * ViewDeclarationLanguage} instance used for this <code>ViewHandler</code>
+     * <p class="changed_added_2_0"><span class="changed_modified_2_1">Return</span>
+     * the {@link ViewDeclarationLanguage} instance used for this <code>ViewHandler</code>
      * instance.</p>
      * 
      * <div class="changed_added_2_0">
@@ -413,6 +594,12 @@ public abstract class ViewHandler {
      * <p>The default implementation of this method returns null.</p>
      * 
      * </div>
+     *
+     * @param context the <code>FacesContext</code> for this request.
+     *
+     * @param viewId <span class="changed_modified_2_1">the logical view
+     * id, as returned from {@link #deriveLogicalViewId} for which the
+     * <code>ViewDeclarationLanguage</code> should be returned.</span>
 
      * @since 2.0
      */
@@ -451,7 +638,11 @@ public abstract class ViewHandler {
      */
     
     public void initView(FacesContext context) throws FacesException {
-        String encoding = calculateCharacterEncoding(context);
+        String encoding = context.getExternalContext().getRequestCharacterEncoding();
+        if (null != encoding) {
+            return;
+        }
+        encoding = calculateCharacterEncoding(context);
         if (null != encoding) {
             try {
                 context.getExternalContext().setRequestCharacterEncoding(encoding);
diff --git a/jsf-api/src/main/java/javax/faces/application/ViewHandlerWrapper.java b/jsf-api/src/main/java/javax/faces/application/ViewHandlerWrapper.java
index 280de64..5e2aa7f 100644
--- a/jsf-api/src/main/java/javax/faces/application/ViewHandlerWrapper.java
+++ b/jsf-api/src/main/java/javax/faces/application/ViewHandlerWrapper.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -37,7 +41,7 @@
 package javax.faces.application;
 
 import java.util.List;
-import javax.faces.component.UIComponent;
+import java.util.Set;
 import javax.faces.context.FacesContext;
 import javax.faces.component.UIViewRoot;
 import javax.faces.FacesException;
@@ -46,11 +50,10 @@ import java.util.Locale;
 import java.util.Map;
 import java.io.IOException;
 import javax.faces.FacesWrapper;
-import javax.faces.view.AttachedObjectHandler;
 import javax.faces.view.ViewDeclarationLanguage;
 
 /**
- * <p>Provides a simple implementation of {@link ViewHandler} that can
+ * <p class="changed_modified_2_2">Provides a simple implementation of {@link ViewHandler} that can
  * be subclassed by developers wishing to provide specialized behavior
  * to an existing {@link ViewHandler} instance.  The default
  * implementation of all methods is to call through to the wrapped
@@ -67,7 +70,7 @@ public abstract class ViewHandlerWrapper extends ViewHandler implements FacesWra
     /**
      * @return the instance that we are wrapping.
      */ 
-
+    @Override
     public abstract ViewHandler getWrapped();
 
 
@@ -84,6 +87,7 @@ public abstract class ViewHandlerWrapper extends ViewHandler implements FacesWra
      * @since 1.2
      */
 
+    @Override
     public String calculateCharacterEncoding(FacesContext context) {
 
         return getWrapped().calculateCharacterEncoding(context);
@@ -99,6 +103,7 @@ public abstract class ViewHandlerWrapper extends ViewHandler implements FacesWra
      * @see ViewHandler#calculateLocale(javax.faces.context.FacesContext)
      * @since 1.2
      */
+    @Override
     public Locale calculateLocale(FacesContext context) {
 
         return getWrapped().calculateLocale(context);
@@ -122,6 +127,21 @@ public abstract class ViewHandlerWrapper extends ViewHandler implements FacesWra
 
     }
 
+    /**
+     *
+     * <p class="changed_added_2_1">The default behavior of this method is to
+     * call {@link ViewHandler#deriveLogicalViewId(javax.faces.context.FacesContext, String)}
+     * on the wrapped {@link ViewHandler} object.</p>
+     *
+     * @see ViewHandler#deriveLogicalViewId(javax.faces.context.FacesContext, String)
+     * @since 2.1
+     */
+    @Override
+    public String deriveLogicalViewId(FacesContext context, String input) {
+
+        return getWrapped().deriveLogicalViewId(context, input);
+
+    }
     
     /**
      * <p>The default behavior of this method is to
@@ -131,6 +151,7 @@ public abstract class ViewHandlerWrapper extends ViewHandler implements FacesWra
      * @see ViewHandler#calculateRenderKitId(javax.faces.context.FacesContext)
      * @since 1.2
      */
+    @Override
     public String calculateRenderKitId(FacesContext context) {
 
         return getWrapped().calculateRenderKitId(context);
@@ -146,6 +167,7 @@ public abstract class ViewHandlerWrapper extends ViewHandler implements FacesWra
      * @see ViewHandler#createView(javax.faces.context.FacesContext, String)
      * @since 1.2
      */
+    @Override
     public UIViewRoot createView(FacesContext context, String viewId) {
 
         return getWrapped().createView(context, viewId);
@@ -161,13 +183,56 @@ public abstract class ViewHandlerWrapper extends ViewHandler implements FacesWra
      * @see ViewHandler#getActionURL(javax.faces.context.FacesContext, String)
      * @since 1.2
      */
+    @Override
     public String getActionURL(FacesContext context, String viewId) {
 
         return getWrapped().getActionURL(context, viewId);
 
     }
 
+    /**
+     *
+     * <p>The default behavior of this method is to
+     * call {@link ViewHandler#getProtectedViewsUnmodifiable}
+     * on the wrapped {@link ViewHandler} object.</p>
+     *
+     * @see ViewHandler#getProtectedViewsUnmodifiable
+     * @since 2.2
+     */
+    @Override
+    public Set<String> getProtectedViewsUnmodifiable() {
+        return getWrapped().getProtectedViewsUnmodifiable();
+    }
+
+    /**
+     *
+     * <p>The default behavior of this method is to
+     * call {@link ViewHandler#addProtectedView}
+     * on the wrapped {@link ViewHandler} object.</p>
+     *
+     * @see ViewHandler#addProtectedView
+     * @since 2.2
+     */
+    @Override
+    public void addProtectedView(String urlPattern) {
+        getWrapped().addProtectedView(urlPattern);
+    }
+
+    /**
+     *
+     * <p>The default behavior of this method is to
+     * call {@link ViewHandler#removeProtectedView}
+     * on the wrapped {@link ViewHandler} object.</p>
+     *
+     * @see ViewHandler#removeProtectedView
+     * @since 2.2
+     */
 
+    @Override
+    public boolean removeProtectedView(String urlPattern) {
+        return getWrapped().removeProtectedView(urlPattern);
+    }
+    
     /**
      * <p>The default behavior of this method is to
      * call {@link ViewHandler#getRedirectURL(javax.faces.context.FacesContext, String, java.util.Map, boolean)}
@@ -220,6 +285,7 @@ public abstract class ViewHandlerWrapper extends ViewHandler implements FacesWra
      * @see ViewHandler#getResourceURL(javax.faces.context.FacesContext, String)
      * @since 1.2
      */
+    @Override
     public String getResourceURL(FacesContext context, String path) {
 
         return getWrapped().getResourceURL(context, path);
@@ -250,6 +316,7 @@ public abstract class ViewHandlerWrapper extends ViewHandler implements FacesWra
      * @see ViewHandler#initView
      * @since 1.2
      */
+    @Override
     public void initView(FacesContext context) throws FacesException {
         
         getWrapped().initView(context);
@@ -263,6 +330,7 @@ public abstract class ViewHandlerWrapper extends ViewHandler implements FacesWra
      * @see ViewHandler#renderView(javax.faces.context.FacesContext, javax.faces.component.UIViewRoot)
      * @since 1.2
      */
+    @Override
     public void renderView(FacesContext context, UIViewRoot viewToRender)
     throws IOException, FacesException {
 
@@ -279,6 +347,7 @@ public abstract class ViewHandlerWrapper extends ViewHandler implements FacesWra
      * @see ViewHandler#restoreView(javax.faces.context.FacesContext, String)
      * @since 1.2
      */
+    @Override
     public UIViewRoot restoreView(FacesContext context, String viewId) {
 
         return getWrapped().restoreView(context, viewId);
@@ -293,6 +362,7 @@ public abstract class ViewHandlerWrapper extends ViewHandler implements FacesWra
      * @see ViewHandler#writeState(javax.faces.context.FacesContext)
      * @since 1.2
      */
+    @Override
     public void writeState(FacesContext context) throws IOException {
 	getWrapped().writeState(context);
 
diff --git a/jsf-api/src/main/java/javax/faces/application/ViewResource.java b/jsf-api/src/main/java/javax/faces/application/ViewResource.java
new file mode 100644
index 0000000..d4e5435
--- /dev/null
+++ b/jsf-api/src/main/java/javax/faces/application/ViewResource.java
@@ -0,0 +1,67 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package javax.faces.application;
+
+import java.net.URL;
+
+/**
+ * <p class="changed_added_2_2">Superclass of {@link Resource} that is only
+ * for use with views.</p>
+ * 
+ * @since 2.2
+ * 
+ */
+
+public abstract class ViewResource {
+    
+    /**
+     * <p class="changed_added_2_2">Return an actual <code>URL</code>
+     * instance that refers to this resource instance.</p>
+     *
+     * @return Return an actual <code>URL</code> instance that refers to
+     * this resource instance.
+     * 
+     * @since 2.2
+     */
+    public abstract URL getURL();
+
+    
+}
diff --git a/jsf-api/src/main/java/javax/faces/application/package.html b/jsf-api/src/main/java/javax/faces/application/package.html
index c513a25..2d952ef 100644
--- a/jsf-api/src/main/java/javax/faces/application/package.html
+++ b/jsf-api/src/main/java/javax/faces/application/package.html
@@ -3,28 +3,55 @@
 <head>
 <!--
 
-  @(#)package.html	1.60 98/01/27
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
-  Copyright 2004 Sun Microsystems, Inc. 901 San Antonio Road,
-  Palo Alto, California, 94303, U.S.A.  All Rights Reserved.
+    Copyright (c) 2004-2010 Oracle and/or its affiliates. All rights reserved.
 
-  This software is the confidential and proprietary information of Sun
-  Microsystems, Inc. ("Confidential Information").  You shall not
-  disclose such Confidential Information and shall use it only in
-  accordance with the terms of the license agreement you entered into
-  with Sun.
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
 
-  CopyrightVersion 1.2
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 </head>
 <body bgcolor="white">
 
-<p><span class="changed_modified_2_0">APIs</span> that are used to link an
-application's business logic objects to JavaServer Faces, as well as
-convenient pluggable mechanisms to manage the execution of an
-application that is based on JavaServer Faces.  The main class in this
-package is {@link javax.faces.application.Application}.</p>
+<p><span class="changed_modified_2_0 changed_modified_2_0_rev_a
+changed_modified_2_1 changed_modified_2_2 changed_modified_2_3">APIs</span> that are used to link an application's
+business logic objects to JavaServer Faces, as well as convenient
+pluggable mechanisms to manage the execution of an application that is
+based on JavaServer Faces.  The main class in this package is {@link
+javax.faces.application.Application}.</p>
 
 </body>
 </html>
diff --git a/jsf-api/src/main/java/javax/faces/bean/ApplicationScoped.java b/jsf-api/src/main/java/javax/faces/bean/ApplicationScoped.java
index d5007f9..a4862b5 100644
--- a/jsf-api/src/main/java/javax/faces/bean/ApplicationScoped.java
+++ b/jsf-api/src/main/java/javax/faces/bean/ApplicationScoped.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-api/src/main/java/javax/faces/bean/CustomScoped.java b/jsf-api/src/main/java/javax/faces/bean/CustomScoped.java
index 63e3855..c9bb465 100644
--- a/jsf-api/src/main/java/javax/faces/bean/CustomScoped.java
+++ b/jsf-api/src/main/java/javax/faces/bean/CustomScoped.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-api/src/main/java/javax/faces/bean/ManagedBean.java b/jsf-api/src/main/java/javax/faces/bean/ManagedBean.java
index 793824d..d28fb7d 100644
--- a/jsf-api/src/main/java/javax/faces/bean/ManagedBean.java
+++ b/jsf-api/src/main/java/javax/faces/bean/ManagedBean.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-api/src/main/java/javax/faces/bean/ManagedProperty.java b/jsf-api/src/main/java/javax/faces/bean/ManagedProperty.java
index ac9c286..73308ec 100644
--- a/jsf-api/src/main/java/javax/faces/bean/ManagedProperty.java
+++ b/jsf-api/src/main/java/javax/faces/bean/ManagedProperty.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-api/src/main/java/javax/faces/bean/NoneScoped.java b/jsf-api/src/main/java/javax/faces/bean/NoneScoped.java
index 3d3334c..f53e95d 100644
--- a/jsf-api/src/main/java/javax/faces/bean/NoneScoped.java
+++ b/jsf-api/src/main/java/javax/faces/bean/NoneScoped.java
@@ -1,28 +1,31 @@
-
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
  *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-api/src/main/java/javax/faces/bean/ReferencedBean.java b/jsf-api/src/main/java/javax/faces/bean/ReferencedBean.java
index 778a3ed..b54d437 100644
--- a/jsf-api/src/main/java/javax/faces/bean/ReferencedBean.java
+++ b/jsf-api/src/main/java/javax/faces/bean/ReferencedBean.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-api/src/main/java/javax/faces/bean/RequestScoped.java b/jsf-api/src/main/java/javax/faces/bean/RequestScoped.java
index 4295db5..372e589 100644
--- a/jsf-api/src/main/java/javax/faces/bean/RequestScoped.java
+++ b/jsf-api/src/main/java/javax/faces/bean/RequestScoped.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-api/src/main/java/javax/faces/bean/SessionScoped.java b/jsf-api/src/main/java/javax/faces/bean/SessionScoped.java
index 88d7fa4..eb272c2 100644
--- a/jsf-api/src/main/java/javax/faces/bean/SessionScoped.java
+++ b/jsf-api/src/main/java/javax/faces/bean/SessionScoped.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-api/src/main/java/javax/faces/bean/ViewScoped.java b/jsf-api/src/main/java/javax/faces/bean/ViewScoped.java
index 4a26ca8..f8aaaa4 100644
--- a/jsf-api/src/main/java/javax/faces/bean/ViewScoped.java
+++ b/jsf-api/src/main/java/javax/faces/bean/ViewScoped.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -43,10 +47,69 @@ import java.lang.annotation.ElementType;
 import java.lang.annotation.Inherited;
 
 /**
- * <p class="changed_added_2_0">When this annotation, along with {@link
- * ManagedBean} is found on a class, the runtime must act as if a
+ * <p class="changed_added_2_0"><span
+ * class="changed_modified_2_2">When</span> this annotation, along with
+ * {@code ManagedBean} is found on a class, the runtime must act as if a
  * <code><managed-bean-scope>view<managed-bean-scope></code>
  * element was declared for the corresponding managed bean.</p>
+
+ * <div class="changed_added_2_2">
+
+ * <p>If <code>ProjectStage</code> is not
+ * <code>ProjectStage.Production</code>, verify that the current {@code
+ * UIViewRoot} does not have its {@code transient}
+ * property set to {@code true}.  If so, add a <code>FacesMessage</code>
+ * for the current {@code viewId} to the <code>FacesContext</code>
+ * stating {@code @ViewScoped} beans cannot work if the view is marked
+ * as transient.  Also log a <code>Level.WARNING</code> message to the 
+ * log.  If <code>ProjectStage</code> <strong>is</strong>
+ * <code>ProjectStage.Production</code>, do not do this
+ * verification.</p>
+
+ * <p>The bean must be stored in the map returned from 
+ * {@code javax.faces.component.UIViewRoot.getViewMap(boolean)}.</p>
+
+ * <p>The runtime must ensure that any methods on the bean annotated
+ * with {@code PostConstruct} or {@code PreDestroy} are called when the
+ * scope begins and ends, respectively.  Two circumstances can cause the
+ * scope to end.</p>
+
+ * <ul>
+
+ * <li><p>{@code FacesContext.setViewRoot()} is called with the new
+ * {@code UIViewRoot} being different than the current one.</p></li>
+
+ * <li><p>The session, that happened to be active when the bean was
+ * created, expires.  If no session existed when the bean was created,
+ * then this circumstance does not apply.</p></li>
+
+ * </ul>
+
+ * <p>In the session expiration case, the runtime must ensure that
+ * {@code FacesContext.getCurrentInstance()} returns a valid instance if
+ * it is called during the processing of the {@code @PreDestroy}
+ * annotated method.  The set of methods on {@code FacesContext} that
+ * are valid to call in this circumstance is identical to those
+ * documented as "valid to call this method during application startup
+ * or shutdown". On the {@code ExternalContext} returned from that
+ * {@code FacesContext}, all of the methods documented as "valid to call
+ * this method during application startup or shutdown" are valid to
+ * call.  In addition, the method {@code
+ * ExternalContext.getSessionMap()} is also valid to call.</p>
+
+
+ * <p>The annotations in this package may be
+ * deprecated in a future version of this specification because they
+ * duplicate functionality provided by other specifications included in
+ * JavaEE.  When possible, the corresponding annotations from the
+ * appropriate Java EE specification should be used in preference to
+ * these annotations.  In this case, the corresponding annotation is
+ * {@code javax.faces.view.ViewScoped}.  The functionality of this
+ * corresponding annotation is identical to this one, but it is
+ * implemented as a CDI custom scope.</p>
+
+ * </div>
+
  *
  * @since 2.0
  */
diff --git a/jsf-api/src/main/java/javax/faces/bean/package.html b/jsf-api/src/main/java/javax/faces/bean/package.html
index dd3727e..72c5a72 100644
--- a/jsf-api/src/main/java/javax/faces/bean/package.html
+++ b/jsf-api/src/main/java/javax/faces/bean/package.html
@@ -3,20 +3,46 @@
 <head>
 <!--
 
-  @(#)package.html	1.60 98/01/27
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
-  Copyright 2004 Sun Microsystems, Inc. 901 San Antonio Road, 
-  Palo Alto, California, 94303, U.S.A.  All Rights Reserved.
+    Copyright (c) 2004-2010 Oracle and/or its affiliates. All rights reserved.
 
-  This software is the confidential and proprietary information of Sun
-  Microsystems, Inc. ("Confidential Information").  You shall not
-  disclose such Confidential Information and shall use it only in
-  accordance with the terms of the license agreement you entered into
-  with Sun.
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
 
-  CopyrightVersion 1.2
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 </head>
 <body bgcolor="white">
 
diff --git a/jsf-api/src/main/java/javax/faces/component/ActionSource.java b/jsf-api/src/main/java/javax/faces/component/ActionSource.java
index 0d659f0..9f843ea 100644
--- a/jsf-api/src/main/java/javax/faces/component/ActionSource.java
+++ b/jsf-api/src/main/java/javax/faces/component/ActionSource.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-api/src/main/java/javax/faces/component/ActionSource2.java b/jsf-api/src/main/java/javax/faces/component/ActionSource2.java
index 324f240..c43eec9 100644
--- a/jsf-api/src/main/java/javax/faces/component/ActionSource2.java
+++ b/jsf-api/src/main/java/javax/faces/component/ActionSource2.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-api/src/main/java/javax/faces/component/AttachedObjectListHolder.java b/jsf-api/src/main/java/javax/faces/component/AttachedObjectListHolder.java
index fdf32d4..b581ce4 100644
--- a/jsf-api/src/main/java/javax/faces/component/AttachedObjectListHolder.java
+++ b/jsf-api/src/main/java/javax/faces/component/AttachedObjectListHolder.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -40,6 +44,7 @@ import javax.faces.context.FacesContext;
 import java.util.List;
 import java.util.ArrayList;
 import java.lang.reflect.Array;
+import java.util.Iterator;
 
 /**
  * <p>
@@ -205,4 +210,8 @@ class AttachedObjectListHolder<T> implements PartialStateHolder {
         
     }
     
+    Iterator<T> iterator() {
+        return attachedObjects.iterator();
+    }
+    
 }
diff --git a/jsf-api/src/main/java/javax/faces/component/ComponentStateHelper.java b/jsf-api/src/main/java/javax/faces/component/ComponentStateHelper.java
index e2b79df..9b8f99d 100644
--- a/jsf-api/src/main/java/javax/faces/component/ComponentStateHelper.java
+++ b/jsf-api/src/main/java/javax/faces/component/ComponentStateHelper.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -34,7 +38,6 @@
  * holder.
  */
 
-
 package javax.faces.component;
 
 import javax.faces.context.FacesContext;
@@ -45,7 +48,7 @@ import java.util.*;
 import java.io.Serializable;
 
 /**A base implementation for
- * maps which implement the PartialStateHolder interface.
+ * maps which implement the PartialStateHolder and TransientStateHolder interfaces.
  *
  * This can be used as a base-class for all
  * state-holder implementations in components,
@@ -53,13 +56,14 @@ import java.io.Serializable;
  * of the StateHolder interface.
  */
 @SuppressWarnings({"unchecked"})
-class ComponentStateHelper implements StateHelper {
+class ComponentStateHelper implements StateHelper , TransientStateHelper {
 
     private UIComponent component;
     private boolean isTransient;
     private Map<Serializable, Object> deltaMap;
     private Map<Serializable, Object> defaultMap;
-
+    private Map<Object, Object> transientState;
+    
     // ------------------------------------------------------------ Constructors
 
 
@@ -68,7 +72,7 @@ class ComponentStateHelper implements StateHelper {
         this.component = component;
         this.deltaMap = new HashMap<Serializable,Object>();
         this.defaultMap = new HashMap<Serializable,Object>();
-        
+        this.transientState = null;
     }
 
 
@@ -274,6 +278,16 @@ class ComponentStateHelper implements StateHelper {
         if (state == null) {
             return;
         }
+        
+        if (!component.initialStateMarked() && !defaultMap.isEmpty())
+        {
+            defaultMap.clear();
+            if(deltaMap != null && !deltaMap.isEmpty())
+            {
+                deltaMap.clear();
+            }
+        }
+        
         Object[] savedState = (Object[]) state;
         if (savedState[savedState.length - 1] != null) {
             component.initialState = (Boolean) savedState[savedState.length - 1];
@@ -429,4 +443,39 @@ class ComponentStateHelper implements StateHelper {
         return ret;
     }
 
+
+    public Object getTransient(Object key)
+    {
+        return (transientState == null) ? null : transientState.get(key);
+    }
+
+    public Object getTransient(Object key, Object defaultValue)
+    {
+        Object returnValue = (transientState == null) ? null : transientState.get(key);
+        if (returnValue != null)
+        {
+            return returnValue;
+        }
+        return defaultValue;
+    }
+
+    public Object putTransient(Object key, Object value)
+    {
+        if (transientState == null)
+        {
+            transientState = new HashMap<Object, Object>();
+        }
+        return transientState.put(key, value);
+    }
+
+    @SuppressWarnings("unchecked")
+    public void restoreTransientState(FacesContext context, Object state)
+    {
+        transientState = (Map<Object, Object>) state;
+    }
+    
+    public Object saveTransientState(FacesContext context)
+    {
+        return transientState;
+    }
 }
diff --git a/jsf-api/src/main/java/javax/faces/component/ContextCallback.java b/jsf-api/src/main/java/javax/faces/component/ContextCallback.java
index 77f3228..580d1c4 100644
--- a/jsf-api/src/main/java/javax/faces/component/ContextCallback.java
+++ b/jsf-api/src/main/java/javax/faces/component/ContextCallback.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-api/src/main/java/javax/faces/component/EditableValueHolder.java b/jsf-api/src/main/java/javax/faces/component/EditableValueHolder.java
index 387802a..22dbeb5 100644
--- a/jsf-api/src/main/java/javax/faces/component/EditableValueHolder.java
+++ b/jsf-api/src/main/java/javax/faces/component/EditableValueHolder.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -45,10 +49,11 @@ import javax.faces.render.Renderer;
 
 
 /**
- * <p><strong class="changed_modified_2_0">EditableValueHolder</strong>
- * is an extension of ValueHolder that describes additional features
- * supported by editable components, including {@link ValueChangeEvent}s
- * and {@link Validator}s.
+ * <p><strong class="changed_modified_2_0
+ * changed_modified_2_0_rev_a">EditableValueHolder</strong> is an
+ * extension of ValueHolder that describes additional features supported
+ * by editable components, including {@link ValueChangeEvent}s and
+ * {@link Validator}s.
  */
 
 public interface EditableValueHolder extends ValueHolder {
diff --git a/jsf-api/src/main/java/javax/faces/component/FacesComponent.java b/jsf-api/src/main/java/javax/faces/component/FacesComponent.java
index 1298ea6..002f429 100644
--- a/jsf-api/src/main/java/javax/faces/component/FacesComponent.java
+++ b/jsf-api/src/main/java/javax/faces/component/FacesComponent.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -61,20 +65,72 @@ import java.lang.annotation.Inherited;
 
  */ 
 
+/**
+ * <p><span class="changed_modified_2_2">The</span> presence of this annotation
+ * on a class that extends {@link UIComponent} must cause the runtime to 
+ * register this class as a component suitable for inclusion in a view.
+ * <span class="changed_added_2_2">If the <code>createTag</code> attribute
+ * is <code>true</code>, the runtime must create a corresponding Facelet
+ * tag handler according to the rules specified in the attributes of 
+ * this annotation.</span></p>
+ * 
+ */
+
 @Retention(RetentionPolicy.RUNTIME)
 @Target(ElementType.TYPE)
 @Inherited
 public @interface FacesComponent {
+    
+    /**
+     * <p class="changed_added_2_2">Components that declare a 
+     * <code>createTag = true</code> attribute will be placed into this tag
+     * namespace if the namespace attribute is omitted.</p>
+     */
+    public static final String NAMESPACE = "http://xmlns.jcp.org/jsf/component";
 
     /**
-     * <p class="changed_added_2_0">The value of this annotation
-     * attribute is taken to be the <em>component-type</em> with which
-     * instances of this class of component can be instantiated by
+     * <p class="changed_added_2_0"><span class="changed_modified_2_2">The</span>
+     * value of this annotation attribute is taken to be the 
+     * <em>component-type</em> with which instances of this class of component can be instantiated by
      * calling {@link
-     * javax.faces.application.Application#createComponent(java.lang.String)}</p>
+     * javax.faces.application.Application#createComponent(java.lang.String)}.
+     * <span class="changed_added_2_2">If no value is specified, or the value is
+     * <code>null</code>, the value is taken to be the return of calling
+     * <code>getSimpleName</code> on the class to which this annotation
+     * is attached and lowercasing the first character.  If more than one
+     * component with this derived name is found, the results are undefined.</span></p>
      */ 
 
-    String value();
-
-
+    String value() default "";
+    
+    /**
+     * <p class="changed_added_2_2">If the value of this attribute is 
+     * <code>true</code>, the runtime must create a Facelet tag handler, 
+     * that extends from {@link javax.faces.view.facelets.ComponentHandler},
+     * suitable for use in pages under the tag library with namespace given
+     * by the value of the {@link #namespace} attribute.</p>
+     */
+    
+    boolean createTag() default false;
+    
+    /**
+     * <p class="changed_added_2_2">If the value of the {@link #createTag} 
+     * attribute is <code>true</code>, the runtime must use this
+     * value as the tag name for including an instance of the component
+     * annotated with this annotation in a view.  If this attribute is not
+     * specified on a usage of this annotation, the simple name of the 
+     * class on which this annotation is declared, with the first character 
+     * lowercased, is taken to be the value.</p>
+     */
+    String tagName() default "";
+    
+    /**
+     * <p class="changed_added_2_2">If the value of the {@link #createTag} 
+     * attribute is <code>true</code>, the value of this attribute is taken
+     * to be the tag library namespace into which this component is placed.</p>
+     * 
+     */
+    
+    String namespace() default NAMESPACE;
+    
 }
diff --git a/jsf-api/src/main/java/javax/faces/component/MethodBindingAdapterBase.java b/jsf-api/src/main/java/javax/faces/component/MethodBindingAdapterBase.java
index c9c3500..937fe75 100644
--- a/jsf-api/src/main/java/javax/faces/component/MethodBindingAdapterBase.java
+++ b/jsf-api/src/main/java/javax/faces/component/MethodBindingAdapterBase.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-api/src/main/java/javax/faces/component/MethodBindingValidator.java b/jsf-api/src/main/java/javax/faces/component/MethodBindingValidator.java
index c3da2c7..7e27781 100644
--- a/jsf-api/src/main/java/javax/faces/component/MethodBindingValidator.java
+++ b/jsf-api/src/main/java/javax/faces/component/MethodBindingValidator.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-api/src/main/java/javax/faces/component/MethodBindingValueChangeListener.java b/jsf-api/src/main/java/javax/faces/component/MethodBindingValueChangeListener.java
index b6b1492..7395c0a 100644
--- a/jsf-api/src/main/java/javax/faces/component/MethodBindingValueChangeListener.java
+++ b/jsf-api/src/main/java/javax/faces/component/MethodBindingValueChangeListener.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-api/src/main/java/javax/faces/component/NamingContainer.java b/jsf-api/src/main/java/javax/faces/component/NamingContainer.java
index 96f559f..e8102b7 100644
--- a/jsf-api/src/main/java/javax/faces/component/NamingContainer.java
+++ b/jsf-api/src/main/java/javax/faces/component/NamingContainer.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-api/src/main/java/javax/faces/component/PartialStateHolder.java b/jsf-api/src/main/java/javax/faces/component/PartialStateHolder.java
index c1b9171..2279961 100644
--- a/jsf-api/src/main/java/javax/faces/component/PartialStateHolder.java
+++ b/jsf-api/src/main/java/javax/faces/component/PartialStateHolder.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -34,11 +38,8 @@
  * holder.
  */
 
-
 package javax.faces.component;
 
-import java.io.Serializable;
-
 /**
  * <p class="changed_added_2_0">Components that want to leverage the
  * partial state saving feature must implement this interface instead of
diff --git a/jsf-api/src/main/java/javax/faces/component/SelectItemsIterator.java b/jsf-api/src/main/java/javax/faces/component/SelectItemsIterator.java
index 3279ed5..feb435d 100644
--- a/jsf-api/src/main/java/javax/faces/component/SelectItemsIterator.java
+++ b/jsf-api/src/main/java/javax/faces/component/SelectItemsIterator.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -509,7 +513,7 @@ final class SelectItemsIterator implements Iterator<SelectItem> {
                                         : null));
                     setEscape(((itemEscapedResult != null)
                                    ? Boolean.valueOf(itemEscapedResult.toString())
-                                   : false));
+                                   : true));
                     setDisabled(((itemDisabledResult != null)
                                      ? Boolean.valueOf(itemDisabledResult.toString())
                                      : false));
diff --git a/jsf-api/src/main/java/javax/faces/component/SelectUtils.java b/jsf-api/src/main/java/javax/faces/component/SelectUtils.java
index cf74447..fab0500 100644
--- a/jsf-api/src/main/java/javax/faces/component/SelectUtils.java
+++ b/jsf-api/src/main/java/javax/faces/component/SelectUtils.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-api/src/main/java/javax/faces/component/StateHelper.java b/jsf-api/src/main/java/javax/faces/component/StateHelper.java
index 223bfd8..cc7d730 100644
--- a/jsf-api/src/main/java/javax/faces/component/StateHelper.java
+++ b/jsf-api/src/main/java/javax/faces/component/StateHelper.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -34,8 +38,6 @@
  * holder.
  */
 
-
-
 package javax.faces.component;
 
 import java.io.Serializable;
diff --git a/jsf-api/src/main/java/javax/faces/component/StateHolder.java b/jsf-api/src/main/java/javax/faces/component/StateHolder.java
index f6eefd2..19dd292 100644
--- a/jsf-api/src/main/java/javax/faces/component/StateHolder.java
+++ b/jsf-api/src/main/java/javax/faces/component/StateHolder.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -40,8 +44,9 @@ import javax.faces.context.FacesContext;
 
 /**
  *
- * <p>This interface is implemented by classes that need to save their
- * state between requests.</p>
+ * <p><span class="changed_modified_2_0_rev_a">This</span> interface is
+ * implemented by classes that need to save their state between
+ * requests.</p>
  *
  * <p>An implementor <strong>must</strong> implement both {@link
  * #saveState} and {@link #restoreState} methods in this class, since
@@ -87,17 +92,20 @@ public interface StateHolder {
 
     /**
      *
-     * <p> Perform any processing required to restore the state from the
-     * entries in the state Object.</p>
+     * <p><span class="changed_modified_2_0_rev_a">Perform</state> any
+     * processing required to restore the state from the entries in the
+     * state Object.</p>
      *
      * <p>If the class that implements this interface has references to
      * instances that also implement StateHolder (such as a
      * <code>UIComponent</code> with event handlers, validators, etc.)
      * this method must call the {@link #restoreState} method on all those
      * instances as well. </p>
+
+     * <p class="changed_modified_2_0_rev_a">If the <code>state</code>
+     * argument is <code>null</code>, take no action and return.</p>
      * 
-     * @throws NullPointerException if either <code>context</code> or
-     *  <code>state</code> are <code>null</code>
+     * @throws NullPointerException if <code>context</code> is null.
      */
 
     public void restoreState(FacesContext context, Object state);
@@ -111,12 +119,14 @@ public interface StateHolder {
     public boolean isTransient();
 
     /**
-     * <p>Denotes whether or not the Object implementing this interface must
-     * or must not participate in state saving or restoring.</p>
+     * <p><span class="changed_modified_2_0_rev_a">Denotes</span>
+     * whether or not the Object implementing this interface must or
+     * must not participate in state saving or restoring.</p>
      * 
-     * @param newTransientValue boolean pass <code>true</code> if this Object 
-     *  will not participate in state saving or restoring, otherwise
-     *  pass <code>false</code>.
+     * @param newTransientValue boolean pass <code>true</code> if this
+     * Object <span class="changed_modified_2_0_rev_a">will not
+     * participate</span> in state saving or restoring, otherwise pass
+     * <code>false</code>.
      */ 
     public void setTransient(boolean newTransientValue);
 
diff --git a/jsf-api/src/main/java/javax/faces/component/TransientStateHelper.java b/jsf-api/src/main/java/javax/faces/component/TransientStateHelper.java
new file mode 100644
index 0000000..c90ef46
--- /dev/null
+++ b/jsf-api/src/main/java/javax/faces/component/TransientStateHelper.java
@@ -0,0 +1,95 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package javax.faces.component;
+
+/**
+ * <p class="changed_added_2_1">Define a <code>Map</code>-like contract
+ * that makes it easier for components to implement {@link
+ * TransientStateHolder}.  Each {@link UIComponent} in the view will
+ * return an implementation of this interface from its {@link
+ * UIComponent#getTransientStateHelper} method.</p>
+ * 
+ * <div class="changed_added_2_1">
+ * 
+ * <p>The values retrieved or saved through {@link
+ * #getTransient} or {@link
+ * #putTransient} will not be
+ * preserved between requests.</p>
+ * 
+ * </div>
+ * 
+ * @since 2.1
+ * 
+ */
+public interface TransientStateHelper extends TransientStateHolder
+{
+    /**
+     * <p class="changed_added_2_1">Return the value currently
+     * associated with the specified <code>key</code> if any.</p>
+     * @param key the key for which the value should be returned.
+     * @since 2.1
+     */
+    public Object getTransient(Object key);
+    
+    /**
+     * <p class="changed_added_2_1">Performs the same logic as {@link
+     * #getTransient} } but if no value is found, this
+     * will return the specified <code>defaultValue</code></p>
+
+     * @param key the key for which the value should be returned.
+     * @param defaultValue the value to return if no value is found in
+     * the call to <code>get()</code>.
+     * @since 2.1
+     */
+    public Object getTransient(Object key, Object defaultValue);
+
+    /**
+     * <p class="changed_added_2_1">Return the previously stored value
+     * and store the specified key/value pair.  This is intended to
+     * store data that would otherwise reside in an instance variable on
+     * the component.</p>
+     * 
+     * @param key the key for the value
+     * @param value the value
+     * @since 2.1
+     */
+    public Object putTransient(Object key, Object value);
+}
diff --git a/jsf-api/src/main/java/javax/faces/component/TransientStateHolder.java b/jsf-api/src/main/java/javax/faces/component/TransientStateHolder.java
new file mode 100644
index 0000000..9349abb
--- /dev/null
+++ b/jsf-api/src/main/java/javax/faces/component/TransientStateHolder.java
@@ -0,0 +1,90 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package javax.faces.component;
+
+/**
+ * <p class="changed_added_2_1">This interface is implemented by classes 
+ * that need to save state that is expected to be available only within the scope
+ * of the current request.</p>
+ * 
+ * <div class="changed_added_2_1">
+ * 
+ * <p>An implementor <strong>must</strong> implement both {@link
+ * #saveTransientState} and {@link #restoreTransientState} methods in this class, since
+ * these two methods have a tightly coupled contract between themselves.
+ * In other words, if there is an inheritance hierarchy, it is not
+ * permissible to have the {@link #saveTransientState} and {@link #restoreTransientState}
+ * methods reside at different levels of the hierarchy.</p>
+ *
+ * <p>An example of transient state is the "submitted" property on forms.</p>
+ * 
+ * </div>
+ * 
+ * @since 2.1
+ */
+public interface TransientStateHolder
+{
+    
+    /**
+     * <p class="changed_added_2_1">Return the object containing related "transient states".
+     * that could be used later to restore the "transient state".<p>
+     * 
+     * @param context
+     * @return object containing transient values
+     * @since 2.1
+     */
+    public java.lang.Object saveTransientState(javax.faces.context.FacesContext context);
+
+    /**
+     * <p class="changed_added_2_1">Restore the "transient state" using the object passed as
+     * state.</p>
+     * 
+     * <p class="changed_added_2_1">If the <code>state</code>
+     * argument is <code>null</code> clear any previous transient
+     * state if any and return.</p>
+     * 
+     * @param context
+     * @param state the object containing transient values
+     * @since 2.1
+     */
+    public void restoreTransientState(javax.faces.context.FacesContext context,
+                             java.lang.Object state);
+}
diff --git a/jsf-api/src/main/java/javax/faces/component/UIColumn.java b/jsf-api/src/main/java/javax/faces/component/UIColumn.java
index 05cec74..6898de4 100644
--- a/jsf-api/src/main/java/javax/faces/component/UIColumn.java
+++ b/jsf-api/src/main/java/javax/faces/component/UIColumn.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-api/src/main/java/javax/faces/component/UICommand.java b/jsf-api/src/main/java/javax/faces/component/UICommand.java
index b8ed897..3118d57 100644
--- a/jsf-api/src/main/java/javax/faces/component/UICommand.java
+++ b/jsf-api/src/main/java/javax/faces/component/UICommand.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-api/src/main/java/javax/faces/component/UIComponent.java b/jsf-api/src/main/java/javax/faces/component/UIComponent.java
index d03e835..87601cc 100644
--- a/jsf-api/src/main/java/javax/faces/component/UIComponent.java
+++ b/jsf-api/src/main/java/javax/faces/component/UIComponent.java
@@ -1,2478 +1,2691 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package javax.faces.component;
-
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Enumeration;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-
-import java.util.MissingResourceException;
-import java.util.PropertyResourceBundle;
-import java.util.ResourceBundle;
-import java.util.Set;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-import javax.el.ELContext;
-import javax.el.ELException;
-import javax.el.ValueExpression;
-import javax.faces.FacesException;
-import javax.faces.FacesWrapper;
-import javax.faces.application.Resource;
-import javax.faces.component.visit.VisitCallback;
-import javax.faces.component.visit.VisitContext;
-import javax.faces.component.visit.VisitHint;
-import javax.faces.component.visit.VisitResult;
-import javax.faces.context.FacesContext;
-import javax.faces.el.ValueBinding;
-import javax.faces.event.AbortProcessingException;
-import javax.faces.event.PostRestoreStateEvent;
-import javax.faces.event.ComponentSystemEvent;
-import javax.faces.event.ComponentSystemEventListener;
-import javax.faces.event.FacesEvent;
-import javax.faces.event.SystemEvent;
-import javax.faces.event.SystemEventListener;
-import javax.faces.event.FacesListener;
-import javax.faces.event.SystemEventListenerHolder;
-import javax.faces.render.Renderer;
-
-/**
- * <p><strong class="changed_modified_2_0">UIComponent</strong> is the
- * base class for all user interface components in JavaServer Faces.
- * The set of {@link UIComponent} instances associated with a particular
- * request and response are organized into a component tree under a
- * {@link UIViewRoot} that represents the entire content of the request
- * or response.</p>
- *
- * <p>For the convenience of component developers,
- * {@link UIComponentBase} provides the default
- * behavior that is specified for a {@link UIComponent}, and is the base class
- * for all of the concrete {@link UIComponent} "base" implementations.
- * Component writers are encouraged to subclass
- * {@link UIComponentBase}, instead of directly
- * implementing this abstract class, to reduce the impact of any future changes
- * to the method signatures.</p>
- *
- * <p class="changed_added_2_0">If the {@link
- * javax.faces.event.ListenerFor} annotation is attached to the class
- * definition of a <code>Component</code>, that class must also
- * implement {@link javax.faces.event.ComponentSystemEventListener}.
- * </p>
-
- */
-
-public abstract class UIComponent implements PartialStateHolder, SystemEventListenerHolder,
-        ComponentSystemEventListener {
-
-    private static Logger LOGGER = Logger.getLogger("javax.faces.component",
-            "javax.faces.LogStrings");
-    
-    /**
-     * <p class="changed_added_2_0">The key to which the
-     * <code>UIComponent</code> currently being processed will be
-     * associated with within the {@link FacesContext} attributes map.</p>
-     *
-     * @see javax.faces.context.FacesContext#getAttributes()
-     *
-     * @since 2.0
-     */
-    public static final String CURRENT_COMPONENT = "javax.faces.component.CURRENT_COMPONENT";
-
-    /**
-     * <p class="changed_added_2_0">The key to which the
-     * <em>composite</em> <code>UIComponent</code> currently being
-     * processed will be associated with within the {@link FacesContext}
-     * attributes map.</p>
-     *
-     * @see javax.faces.context.FacesContext#getAttributes()
-     *
-     * @since 2.0
-     */
-    public static final String CURRENT_COMPOSITE_COMPONENT = "javax.faces.component.CURRENT_COMPOSITE_COMPONENT";
-
-    /**
-     * <p class="changed_added_2_0">The value of this constant is used as the key in the
-     * component attribute map, the value for which is a
-     * <code>java.beans.BeanInfo</code> implementation describing the composite
-     * component.  This <code>BeanInfo</code> is known as the 
-     * <em>composite component BeanInfo</em>.</p>
-     *
-     * @since 2.0
-     */
-    public static final String BEANINFO_KEY = "javax.faces.component.BEANINFO_KEY";
-
-
-    /**
-     * <p class="changed_added_2_0">The value of this constant is used as the key
-     * in the <em>composite component BeanDescriptor</em> for the 
-     * <code>Map<PropertyDescriptor></code> that contains meta-information
-     * for the declared facets for this composite component.
-     * This map must contain an entry under the key {@link #COMPOSITE_FACET_NAME}, even
-     * if no facets were explicitly declared.  See {@link #COMPOSITE_FACET_NAME}.</p>
-     *
-     * @since 2.0
-     */
-    public static final String FACETS_KEY = "javax.faces.component.FACETS_KEY";
-    
-    /**
-     * <p class="changed_added_2_0">The value of this constant is used as the key
-     * in the component attributes <code>Map</code> for the 
-     * {@link javax.faces.view.Location} in the view at which this component 
-     * instance resides.</p>
-     *
-     * @since 2.0
-     */
-    public static final String VIEW_LOCATION_KEY = "javax.faces.component.VIEW_LOCATION_KEY";
-    
-    /**
-     * <p class="changed_added_2_0">The value of this constant is used as the key
-     * in the <em>composite component BeanDescriptor</em> for a 
-     * <code>ValueExpression</code> that evaluates to the 
-     * <code>component-type</code> of the <em>composite component root</em>
-     * <code>UIComponent</code> for this composite component, if
-     * one was declared by the composite component author.</p>
-     *
-     * @since 2.0
-     */
-    public static final String COMPOSITE_COMPONENT_TYPE_KEY = "javax.faces.component.COMPOSITE_COMPONENT_TYPE";
-    
-    /**
-     * <p class="changed_added_2_0">The value of this constant is used as the key
-     * in the <code>Map</code> returned as described in {@link #FACETS_KEY}
-     * for the 
-     * <code>PropertyDescriptor</code> describing the composite component facet.
-     * The value of this constant is also used as the key in the <code>Map</code>
-     * returned from {@link #getFacets}.  In this case, it refers to the actual
-     * facet that is the {@link javax.faces.component.UIPanel} that is the parent of the all
-     * of the components in the <code><composite:implementation></code>
-     * section of the <em>composite component VDL file</em>.</p>
-     *
-     * @since 2.0
-     */
-    public static final String COMPOSITE_FACET_NAME = "javax.faces.component.COMPOSITE_FACET_NAME";
-
-    enum PropertyKeysPrivate {
-        attributesThatAreSet
-    }
-
-    /**
-     * Properties that are tracked by state saving.
-     */
-    enum PropertyKeys {
-        rendered,
-        attributes,
-        bindings,
-        rendererType,
-        systemEventListeners,
-        behaviors
-    }
-
-    /**
-     * List of attributes that have been set on the component (this
-     * may be from setValueExpression, the attributes map, or setters
-     * from the concrete HTML components.  This allows
-     * for faster rendering of attributes as this list is authoratative
-     * on what has been set.
-     */
-    List<String> attributesThatAreSet;
-    StateHelper stateHelper = null;
-    UIComponent compositeParent;
-
-
-    // -------------------------------------------------------------- Attributes
-
-
-    /**
-     * <p>Return a mutable 
-     * <code>Map</code> representing the attributes
-     * (and properties, see below) associated wth this {@link UIComponent},
-     * keyed by attribute name (which must be a String).  The returned
-     * implementation must support all of the standard and optional
-     * <code>Map</code> methods, plus support the following additional
-     * requirements:</p>
-     * <ul>
-     * <li>The <code>Map</code> implementation must implement
-     *     the <code>java.io.Serializable</code> interface.</li>
-     * <li>Any attempt to add a <code>null</code> key or value must
-     *     throw a <code>NullPointerException</code>.</li>
-     * <li>Any attempt to add a key that is not a String must throw
-     *     a <code>ClassCastException</code>.</li>
-     * <li>If the attribute name specified as a key matches a property
-     *     of this {@link UIComponent}'s implementation class, the following
-     *     methods will have special behavior:
-     *     <ul>
-     *     <li><code>containsKey</code> - Return <code>false</code>.</li>
-     *     <li><code>get()</code> - If the property is readable, call
-     *         the getter method and return the returned value (wrapping
-     *         primitive values in their corresponding wrapper classes);
-     *         otherwise throw <code>IllegalArgumentException</code>.</li>
-     *     <li><code>put()</code> - If the property is writeable, call
-     *         the setter method to set the corresponding value (unwrapping
-     *         primitive values in their corresponding wrapper classes).
-     *         If the property is not writeable, or an attempt is made to
-     *         set a property of primitive type to <code>null</code>,
-     *         throw <code>IllegalArgumentException</code>.</li>
-     *     <li><code>remove</code> - Throw
-     *         <code>IllegalArgumentException</code>.</li>
-     *     </ul></li>
-     * </ul>
-     * 
-     */
-    public abstract Map<String, Object> getAttributes();
-    
-    
-    // ---------------------------------------------------------------- Bindings
-
-
-    /**
-     *
-     * <p>Call through to {@link #getValueExpression} and examine the
-     * result.  If the result is an instance of the wrapper class
-     * mandated in {@link #setValueBinding}, extract the
-     * <code>ValueBinding</code> instance and return it.  Otherwise,
-     * wrap the result in an implementation of
-     * <code>ValueBinding</code>, and return it.</p>
-     *
-     * @param name Name of the attribute or property for which to retrieve a
-     *  {@link ValueBinding}
-     *
-     * @throws NullPointerException if <code>name</code>
-     *  is <code>null</code>
-     *
-     * @deprecated This has been replaced by {@link #getValueExpression}.
-     */
-    public abstract ValueBinding getValueBinding(String name);
-
-
-    /**
-     * <p>Wrap the argument <code>binding</code> in an implementation of
-     * {@link ValueExpression} and call through to {@link
-     * #setValueExpression}.</p>
-     *
-     * @param name Name of the attribute or property for which to set a
-     *  {@link ValueBinding}
-     * @param binding The {@link ValueBinding} to set, or <code>null</code>
-     *  to remove any currently set {@link ValueBinding}
-     *
-     * @throws IllegalArgumentException if <code>name</code> is one of
-     *  <code>id</code> or <code>parent</code>
-     * @throws NullPointerException if <code>name</code>
-     *  is <code>null</code>
-     *
-     * @deprecated This has been replaced by {@link #setValueExpression}.
-     */
-    public abstract void setValueBinding(String name, ValueBinding binding);
-
-    // The set of ValueExpressions for this component, keyed by property
-    // name This collection is lazily instantiated
-    // The set of ValueExpressions for this component, keyed by property
-    // name This collection is lazily instantiated
-    @Deprecated
-    protected Map<String,ValueExpression> bindings = null;
-
-    /**
-     * <p>Return the {@link ValueExpression} used to calculate the value for the
-     * specified attribute or property name, if any.</p>
-     *
-     * <p>This method must be overridden and implemented for components that
-     * comply with JSF 1.2 and later.</p>
-     *
-     * @since 1.2
-     *
-     * @param name Name of the attribute or property for which to retrieve a
-     *  {@link ValueExpression}
-     *
-     * @throws NullPointerException if <code>name</code>
-     *  is <code>null</code>
-     *
-     */
-    public ValueExpression getValueExpression(String name) {
-
-        if (name == null) {
-            throw new NullPointerException();
-        }
-
-        Map<String,ValueExpression> map = (Map<String,ValueExpression>)
-              getStateHelper().get(UIComponentBase.PropertyKeys.bindings);
-        return ((map != null) ? map.get(name) : null);
-
-    }
-
-    /**
-     * <p>Set the {@link ValueExpression} used to calculate the value
-     * for the specified attribute or property name, if any.</p>
-     *
-     * <p>The implementation must call {@link
-     * ValueExpression#isLiteralText} on the argument
-     * <code>expression</code>.  If <code>isLiteralText()</code> returns
-     * <code>true</code>, invoke {@link ValueExpression#getValue} on the
-     * argument expression and pass the result as the <code>value</code>
-     * parameter in a call to <code>this.{@link
-     * #getAttributes()}.put(name, value)</code> where <code>name</code>
-     * is the argument <code>name</code>.  If an exception is thrown as
-     * a result of calling {@link ValueExpression#getValue}, wrap it in
-     * a {@link javax.faces.FacesException} and re-throw it.  If
-     * <code>isLiteralText()</code> returns <code>false</code>, simply
-     * store the un-evaluated <code>expression</code> argument in the
-     * collection of <code>ValueExpression</code>s under the key given
-     * by the argument <code>name</code>.</p>
-     *
-     * <p>This method must be overridden and implemented for components that
-     * comply with JSF 1.2 and later.</p>
-     *
-     * @since 1.2
-     *
-     * @param name Name of the attribute or property for which to set a
-     *  {@link ValueExpression}
-     * @param binding The {@link ValueExpression} to set, or <code>null</code>
-     *  to remove any currently set {@link ValueExpression}
-     *
-     * @throws IllegalArgumentException if <code>name</code> is one of
-     *  <code>id</code> or <code>parent</code>
-     * @throws NullPointerException if <code>name</code>
-     *  is <code>null</code>
-     *
-     */
-    public void setValueExpression(String name, ValueExpression binding) {
-
-        if (name == null) {
-            throw new NullPointerException();
-        } else if ("id".equals(name) || "parent".equals(name)) {
-            throw new IllegalArgumentException();
-        }
-
-        if (binding != null) {
-            if (!binding.isLiteralText()) {
-                //if (bindings == null) {
-                //    //noinspection CollectionWithoutInitialCapacity
-                //    bindings = new HashMap<String, ValueExpression>();
-                //}
-                // add this binding name to the 'attributesThatAreSet' list
-                //List<String> sProperties = (List<String>)
-                //      getStateHelper().get(PropertyKeysPrivate.attributesThatAreSet);
-
-                 List<String> sProperties =
-                      (List<String>) getStateHelper().get(PropertyKeysPrivate.attributesThatAreSet);
-                if (sProperties == null) {
-                    getStateHelper().add(PropertyKeysPrivate.attributesThatAreSet, name);
-                } else if (!sProperties.contains(name)) {
-                    getStateHelper().add(PropertyKeysPrivate.attributesThatAreSet, name);
-                }
-                getStateHelper().put(UIComponentBase.PropertyKeys.bindings,
-                                     name,
-                                     binding);
-                //bindings.put(name, binding);
-            } else {
-                ELContext context =
-                    FacesContext.getCurrentInstance().getELContext();
-                try {
-                    getAttributes().put(name, binding.getValue(context));
-                } catch (ELException ele) {
-                    throw new FacesException(ele);
-                }
-            }
-        } else {
-            //if (bindings != null) {
-                // remove this binding name from the 'attributesThatAreSet' list
-//                List<String> sProperties = getAttributesThatAreSet(false);
-//                if (sProperties != null) {
-//                    sProperties.remove(name);
-//                }
-                getStateHelper().remove(PropertyKeysPrivate.attributesThatAreSet,
-                                        name);
-                getStateHelper().remove(UIComponentBase.PropertyKeys.bindings, name);
-                //bindings.remove(name);
-               // if (bindings.isEmpty()) {
-               //     bindings = null;
-               // }
-            }
-       // }
-
-    }
-
-    // -------------------------------------------------------------- Properties
-
-    boolean initialState;
-
-    /**
-     * <p class="changed_added_2_0">An implementation of {@link
-     * PartialStateHolder#markInitialState}, this method is called by
-     * the runtime to indicate that the instance should start tracking
-     * changes to its state.</p>
-     * @since 2.0
-     */
-    public void markInitialState() {
-        initialState = true;
-    }
-
-
-    /**
-     * <p class="changed_added_2_0">An implementation of {@link
-     * PartialStateHolder#initialStateMarked}, this method is called by
-     * the runtime to test if the {@link
-     * PartialStateHolder#markInitialState} method was called.</p>
-     * @since 2.0
-     */
-    public boolean initialStateMarked() {
-        return initialState;
-    }
-
-
-    /**
-     * <p class="changed_added_2_0">An implementation of {@link
-     * PartialStateHolder#clearInitialState}, this method is called by
-     * the runtime to tell the instance to stop tracking state
-     * changes.</p>
-     * @since 2.0
-     */
-    public void clearInitialState() {
-        initialState = false;
-    }
-
-
-    /**
-     * <p class="changed_added_2_0">Return the {@link StateHelper}
-     * instance used to help this component implement {@link
-     * PartialStateHolder}.</p>
-     * @since 2.0
-     */
-    protected StateHelper getStateHelper() {
-        return getStateHelper(true);
-    }
-
-
-    /**
-     * <p class="changed_added_2_0">Like {@link #getStateHelper()}, but
-     * only create a state helper instance if the argument
-     * <code>creat</code> is <code>true</code>.</p>
-     * @param create if <code>true</code>, a new {@link StateHelper}
-     * instance will be created if it does not exist already.  If
-     * <code>false</code>, and there is no existing
-     * <code>StateHelper</code> instance, one will not be created and
-     * <code>null</code> will be returned.
-     * @since 2.0
-     */
-    protected StateHelper getStateHelper(boolean create) {
-
-        if (create && stateHelper == null) {
-            stateHelper = new ComponentStateHelper(this);
-        }
-        return stateHelper;
-
-    }
-
-
-    private boolean isInView;
-
-
-    /**
-     * <p class="changed_added_2_0">Return <code>true</code> if this
-     * component is within the view hierarchy otherwise
-     * <code>false</code></code>
-     *
-     * @since 2.0
-     */
-    public boolean isInView() {
-        return isInView;
-    }
-
-
-    /**
-     * <p class="changed_added_2_0">Updates the status as to whether or
-     * not this component is currently within the view hierarchy.
-     * <strong>This method must never be called by developers; a {@link
-     * UIComponent}'s internal implementation will call it as components
-     * are added to or removed from a parent's child <code>List</code>
-     * or facet <code>Map</code></strong>.</p>
-     *
-     * @param isInView flag indicating whether or not this component is within
-     *  the view hierachy
-     *
-     * @since 2.0
-     */
-    public void setInView(boolean isInView) {
-        this.isInView = isInView;
-    }
-
-
-    /**
-     * <p class="changed_added_2_0">Enable EL to access the <code>clientId</code>
-     * of a component.  This is particularly useful in combination with the 
-     * <code>component</code> and <code>cc</code> implicit
-     * objects.  A default implementation is provided that simply calls
-     * {@link FacesContext#getCurrentInstance} and then calls through to
-     * {@link #getClientId(FacesContext)}.</p>
-     * 
-     * @since 2.0
-     */
-    
-    public String getClientId() {
-        FacesContext context = FacesContext.getCurrentInstance();
-        return getClientId(context);
-    }
-
-
-    /**
-     * <p>Return a client-side identifier for this component, generating
-     * one if necessary.  The associated {@link Renderer}, if any,
-     * will be asked to convert the clientId to a form suitable for
-     * transmission to the client.</p>
-     *
-     * <p>The return from this method must be the same value throughout
-     * the lifetime of the instance, unless the <code>id</code> property
-     * of the component is changed, or the component is placed in
-     * a {@link NamingContainer} whose client ID changes (for example,
-     * {@link UIData}).  However, even in these cases, consecutive
-     * calls to this method must always return the same value.  The
-     * implementation must follow these steps in determining the
-     * clientId:</p>
-     *
-     * <p>Find the closest ancestor to <b>this</b> component in the view
-     * hierarchy that implements <code>NamingContainer</code>.  Call
-     * <code>getContainerClientId()</code> on it and save the result as
-     * the <code>parentId</code> local variable.  Call {@link #getId} on
-     * <b>this</b> component and save the result as the
-     * <code>myId</code> local variable.  If <code>myId</code> is
-     * <code>null</code>, call
-     * <code>context.getViewRoot().createUniqueId()</code> and assign
-     * the result to myId.  If <code>parentId</code> is
-     * non-<code>null</code>, let <code>myId</code> equal <code>parentId
-     * + {@link UINamingContainer#getSeparatorChar} + myId</code>.  Call
-     * {@link Renderer#convertClientId}, passing <code>myId</code>, and
-     * return the result.</p>
-     *
-     * @param context The {@link FacesContext} for the current request
-     *
-     * @throws NullPointerException if <code>context</code>
-     *  is <code>null</code>
-     */
-    public abstract String getClientId(FacesContext context);
-
-    /**
-     * <p>Allow components that implement {@link NamingContainer} to
-     * selectively disable prepending their clientId to their
-     * descendent's clientIds by breaking the prepending logic into a
-     * seperately callable method.  See {@link #getClientId} for usage.</p>
-     *
-     * <p>By default, this method will call through to {@link
-     * #getClientId} and return the result.
-     *
-     * @since 1.2
-     *
-     *  @throws NullPointerException if <code>context</code> is
-     *  <code>null</code>
-     */
-    public String getContainerClientId(FacesContext context) {
-        if (context == null) {
-            throw new NullPointerException();
-        }
-        return this.getClientId(context);
-    }
-
-    /**
-     * <p>Return the identifier of the component family to which this
-     * component belongs.  This identifier, in conjunction with the value
-     * of the <code>rendererType</code> property, may be used to select
-     * the appropriate {@link Renderer} for this component instance.</p>
-     */
-    public abstract String getFamily();
-
-
-    /**
-     * <p>Return the component identifier of this {@link UIComponent}.</p>
-     */
-    public abstract String getId();
-
-
-    /**
-     * <p>Set the component identifier of this {@link UIComponent} (if any).
-     * Component identifiers must obey the following syntax restrictions:</p>
-     * <ul>
-     * <li>Must not be a zero-length String.</li>
-     * <li>First character must be a letter or an underscore ('_').</li>
-     * <li>Subsequent characters must be a letter, a digit,
-     *     an underscore ('_'), or a dash ('-').</li>
-     * <li>
-     * </ul>
-     *
-     * <p>Component identifiers must also obey the following semantic
-     * restrictions (note that this restriction is <strong>NOT</strong>
-     * enforced by the <code>setId()</code> implementation):</p>
-     * <ul>
-     * <li>The specified identifier must be unique among all the components
-     *     (including facets) that are descendents of the nearest ancestor
-     *     {@link UIComponent} that is a {@link NamingContainer}, or within
-     *     the scope of the entire component tree if there is no such
-     *     ancestor that is a {@link NamingContainer}.</li>
-     * </ul>
-     *
-     * @param id The new component identifier, or <code>null</code> to indicate
-     *  that this {@link UIComponent} does not have a component identifier
-     *
-     * @throws IllegalArgumentException if <code>id</code> is not
-     *  syntactically valid
-     */
-    public abstract void setId(String id);
-
-
-    /**
-     * <p>Return the parent {@link UIComponent} of this
-     * <code>UIComponent</code>, if any.  A component must allow child
-     * components to be added to and removed from the list of children
-     * of this component, even though the child component returns null
-     * from <code>getParent( )</code>.</p>
-     */
-    public abstract UIComponent getParent();
-
-
-    /**
-     * <p class="changed_modified_2_0">Set the parent
-     * <code>UIComponent</code> of this <code>UIComponent</code>.  <span
-     * class="changed_added_2_0">If <code>parent.isInView()</code>
-     * returns <code>true</code>, calling this method will first cause a
-     * {@link javax.faces.event.PreRemoveFromViewEvent} to be published,
-     * for this node, and then the children of this node.  Then, once
-     * the re-parenting has occurred, a {@link
-     * javax.faces.event.PostAddToViewEvent} will be published as well,
-     * first for this node, and then for the node's children, <span
-     * class="changed_modified_2_0_rev_a">but only if any of the
-     * following conditions are true.</span></p>
-
-     * <div class="changed_modified_2_0_rev_a">
-
-     *     <ul>
-
-     *       <li><p>{@link
-     *       javax.faces.context.FacesContext#getCurrentPhaseId} returns
-     *       {@link javax.faces.event.PhaseId#RESTORE_VIEW} and partial
-     *       state saving is enabled.</p></li>
-
-     *       <li><p>{@link javax.faces.context.FacesContext#isPostback}
-     *       returns <code>false</code> and {@link
-     *       javax.faces.context.FacesContext#getCurrentPhaseId} returns
-     *       something other than {@link
-     *       javax.faces.event.PhaseId#RESTORE_VIEW}</p></li>
-
-     *    </ul>
-
-     * </div>
-
-
-     * <p class="changed_modified_2_0"> <strong>This method must never
-     * be called by developers; a {@link UIComponent}'s internal
-     * implementation will call it as components are added to or removed
-     * from a parent's child <code>List</code> or facet
-     * <code>Map</code></strong></span>.</p>
-     *
-     * @param parent The new parent, or <code>null</code> for the root node
-     *  of a component tree
-     */
-    public abstract void setParent(UIComponent parent);
-
-
-    /**
-     * <p>Return <code>true</code> if this component (and its children)
-     * should be rendered during the <em>Render Response</em> phase
-     * of the request processing lifecycle.</p>
-     */
-    public abstract boolean isRendered();
-
-
-    /**
-     * <p>Set the <code>rendered</code> property of this
-     * {@link UIComponent}.</p>
-     *
-     * @param rendered If <code>true</code> render this component;
-     *  otherwise, do not render this component
-     */
-    public abstract void setRendered(boolean rendered);
-
-
-    /**
-     * <p>Return the {@link Renderer} type for this {@link UIComponent}
-     * (if any).</p>
-     */
-    public abstract String getRendererType();
-
-
-    /**
-     * <p>Set the {@link Renderer} type for this {@link UIComponent},
-     * or <code>null</code> for components that render themselves.</p>
-     *
-     * @param rendererType Logical identifier of the type of
-     *  {@link Renderer} to use, or <code>null</code> for components
-     *  that render themselves
-     */
-    public abstract void setRendererType(String rendererType);
-
-
-    /**
-     * <p>Return a flag indicating whether this component is responsible
-     * for rendering its child components.  The default implementation
-     * in {@link UIComponentBase#getRendersChildren} tries to find the
-     * renderer for this component.  If it does, it calls {@link
-     * Renderer#getRendersChildren} and returns the result.  If it
-     * doesn't, it returns false.  As of version 1.2 of the JavaServer
-     * Faces Specification, component authors are encouraged to return
-     * <code>true</code> from this method and rely on {@link
-     * UIComponentBase#encodeChildren}.</p>
-     */
-    public abstract boolean getRendersChildren();
-    
-
-    
-    private Map<String, String> resourceBundleMap = null;
-    
-    /**
-     * <p class="changed_added_2_0">Return a
-     * <code>Map<String,String></code> of the
-     * <code>ResourceBundle</code> for this component.  A component may
-     * have a <code>ResourceBundle</code> associated with it.  This
-     * bundle may contain localized properties relating to instances of
-     * this component.  The default implementation first looks for a
-     * <code>ResourceBundle</code> with a base name equal to the fully
-     * qualified class name of the current <code>UIComponent this</code>
-     * and <code>Locale</code> equal to the <code>Locale</code> of the
-     * current <code>UIViewRoot</code>.  If no such bundle is found, and
-     * the component is a composite component, let <em>resourceName</em>
-     * be the <em>resourceName</em> of the {@link Resource} for this
-     * composite component, replacing the file extension with
-     * ".properties".  Let <em>libraryName</em> be the
-     * <em>libraryName</em> of the the {@link Resource} for this
-     * composite component.  Call {@link
-     * javax.faces.application.ResourceHandler#createResource(java.lang.String,java.lang.String)},
-     * passing the derived <em>resourceName</em> and
-     * <em>libraryName</em>.  Note that this will automatically allow
-     * for the localization of the <code>ResourceBundle</code> due to
-     * the localization facility implemented in
-     * <code>createResource</code>, which is specified in section
-     * JSF.2.6.1.3 of the spec prose document.  If the resultant {@link
-     * Resource} exists and can be found, the <code>InputStream</code>
-     * for the resource is used to create a <code>ResourceBundle</code>.
-     * If either of the two previous steps for obtaining the
-     * <code>ResourceBundle</code> for this component is successful, the
-     * <code>ResourceBundle</code> is wrapped in a
-     * <code>Map<String,String></code> and returned.  Otherwise
-     * <code>Collections.EMPTY_MAP</code> is returned.</p>
-     *
-     * @since 2.0
-     */
-    public Map<String,String> getResourceBundleMap() {
-        
-        if (null == resourceBundleMap) {
-            // See if there is a ResourceBundle under the FQCN for this class
-            String className = this.getClass().getName();
-            Locale currentLocale = null;
-            FacesContext context = null;
-            UIViewRoot root = null;
-            ResourceBundle resourceBundle = null;
-            
-            // Step 1: look for a ResourceBundle under the FQCN of this instance
-            if (null != (context = FacesContext.getCurrentInstance())) {
-                if (null != (root = context.getViewRoot())) {
-                    currentLocale = root.getLocale();
-                }
-            }
-            if (null == currentLocale) {
-                currentLocale = Locale.getDefault();
-            }
-            try {
-                resourceBundle = 
-                        ResourceBundle.getBundle(className, currentLocale);
-            } catch (MissingResourceException e) {
-                // It is not an error if there is no ResourceBundle
-            }
-            
-            // Step 2: if this is a composite component, look for a 
-            // ResourceBundle as a Resource
-            if (null == resourceBundle) {
-                if (this.getAttributes().containsKey(Resource.COMPONENT_RESOURCE_KEY)) {
-                    Resource ccResource = (Resource)
-                            this.getAttributes().get(Resource.COMPONENT_RESOURCE_KEY);
-                    if (null != ccResource) {
-                        if (null != (ccResource = 
-                                findComponentResourceBundleLocaleMatch(context, 
-                                ccResource.getResourceName(), 
-                                ccResource.getLibraryName()))) {
-                            try {
-                                InputStream propertiesInputStream = ccResource.getInputStream();
-                                resourceBundle = new PropertyResourceBundle(propertiesInputStream);
-                            } catch (IOException ex) {
-                                Logger.getLogger(UIComponent.class.getName()).log(Level.SEVERE, null, ex);
-                            }
-                        }
-                    }
-                }
-            }
-            
-            // Step 3: if the previous steps yielded a ResourceBundle, wrap it
-            // with a Map
-            
-            if (null != resourceBundle) {
-                final ResourceBundle bundle = resourceBundle;
-                resourceBundleMap = 
-                        new Map() {
-                            // this is an immutable Map
-
-                            public String toString() {
-                                StringBuffer sb = new StringBuffer();
-                                Iterator<Map.Entry<String, Object>> entries =
-                                        this.entrySet().iterator();
-                                Map.Entry<String, Object> cur;
-                                while (entries.hasNext()) {
-                                    cur = entries.next();
-                                    sb.append(cur.getKey()).append(": ").append(cur.getValue()).append('\n');
-                                }
-
-                                return sb.toString();
-                            }
-
-                            // Do not need to implement for immutable Map
-                            public void clear() {
-                                throw new UnsupportedOperationException();
-                            }
-
-
-                            public boolean containsKey(Object key) {
-                                boolean result = false;
-                                if (null != key) {
-                                    result = (null != bundle.getObject(key.toString()));
-                                }
-                                return result;
-                            }
-
-
-                            public boolean containsValue(Object value) {
-                                Enumeration<String> keys = bundle.getKeys();
-                                boolean result = false;
-                                while (keys.hasMoreElements()) {
-                                    Object curObj = bundle.getObject(keys.nextElement());
-                                    if ((curObj == value) ||
-                                            ((null != curObj) && curObj.equals(value))) {
-                                        result = true;
-                                        break;
-                                    }
-                                }
-                                return result;
-                            }
-
-
-                            public Set<Map.Entry<String, Object>> entrySet() {
-                                HashMap<String, Object> mappings = new HashMap<String, Object>();
-                                Enumeration<String> keys = bundle.getKeys();
-                                while (keys.hasMoreElements()) {
-                                    String key = keys.nextElement();
-                                    Object value = bundle.getObject(key);
-                                    mappings.put(key, value);
-                                }
-                                return mappings.entrySet();
-                            }
-
-
-                            @Override
-                            public boolean equals(Object obj) {
-                                return !((obj == null) || !(obj instanceof Map))
-                                         && entrySet().equals(((Map) obj).entrySet());
-
-                            }
-
-
-                            public Object get(Object key) {
-                                if (null == key) {
-                                    return null;
-                                }
-                                try {
-                                    return bundle.getObject(key.toString());
-                                } catch (MissingResourceException e) {
-                                    return "???" + key + "???";
-                                }
-                            }
-
-
-                            public int hashCode() {
-                                return bundle.hashCode();
-                            }
-
-
-                            public boolean isEmpty() {
-                                Enumeration<String> keys = bundle.getKeys();
-                                return !keys.hasMoreElements();
-                            }
-
-
-                            public Set keySet() {
-                                Set<String> keySet = new HashSet<String>();
-                                Enumeration<String> keys = bundle.getKeys();
-                                while (keys.hasMoreElements()) {
-                                    keySet.add(keys.nextElement());
-                                }
-                                return keySet;
-                            }
-
-
-                            // Do not need to implement for immutable Map
-                            public Object put(Object k, Object v) {
-                                throw new UnsupportedOperationException();
-                            }
-
-
-                            // Do not need to implement for immutable Map
-                            public void putAll(Map t) {
-                                throw new UnsupportedOperationException();
-                            }
-
-
-                            // Do not need to implement for immutable Map
-                            public Object remove(Object k) {
-                                throw new UnsupportedOperationException();
-                            }
-
-
-                            public int size() {
-                                int result = 0;
-                                Enumeration<String> keys = bundle.getKeys();
-                                while (keys.hasMoreElements()) {
-                                    keys.nextElement();
-                                    result++;
-                                }
-                                return result;
-                            }
-
-
-                            public java.util.Collection values() {
-                                ArrayList<Object> result = new ArrayList<Object>();
-                                Enumeration<String> keys = bundle.getKeys();
-                                while (keys.hasMoreElements()) {
-                                    result.add(
-                                            bundle.getObject(keys.nextElement()));
-                                }
-                                return result;
-                            }
-                        };
-
-            }
-
-            if (null == resourceBundleMap) {
-                resourceBundleMap = Collections.EMPTY_MAP;
-            }
-
-        }
-        
-        return resourceBundleMap;
-    }
-
-    // PENDING(rlubke): I'm sure there's a more efficient
-    // way to handle this.
-    private Resource findComponentResourceBundleLocaleMatch(FacesContext context, 
-            String resourceName, String libraryName) {
-        Resource result = null;
-        ResourceBundle resourceBundle = null;
-        int i;
-        if (-1 != (i = resourceName.lastIndexOf("."))) {
-            resourceName = resourceName.substring(0, i) +
-                    ".properties";
-            if (null != context) {
-                result = context.getApplication().getResourceHandler().
-                        createResource(resourceName, libraryName);
-                try {
-                    InputStream propertiesInputStream = result.getInputStream();
-                    resourceBundle = new PropertyResourceBundle(propertiesInputStream);
-                } catch (IOException ex) {
-                    Logger.getLogger(UIComponent.class.getName()).log(Level.SEVERE, null, ex);
-                }
-            }
-        }
-        result = (null != resourceBundle) ? result : null;
-        
-        return result;
-    }
-    
-    
-    // This is necessary for JSF components that extend from UIComponent
-    // directly rather than extending from UIComponentBase.  Such components
-    // may need to have implementations provided for methods that originated
-    // from a spec version more recent than the version with which the component
-    // complies.  Currently this private property is only consulted in the
-    // getValueExpression() method.
-    private boolean isUIComponentBase;
-    private boolean isUIComponentBaseIsSet = false;
-
-    private boolean isUIComponentBase() {
-        if (!isUIComponentBaseIsSet) {
-            isUIComponentBase = (this instanceof UIComponentBase);
-        }
-
-        return isUIComponentBase;
-    }
-
-
-    // ------------------------------------------------- Tree Management Methods
-
-
-    /**
-     * <p><span class="changed_modified_2_0">Return</span> a mutable
-     * <code>List</code> representing the child {@link UIComponent}s
-     * associated with this component.  The returned implementation must
-     * support all of the standard and optional <code>List</code>
-     * methods, plus support the following additional requirements:</p>
-     * <ul> <li>The <code>List</code> implementation must implement the
-     * <code>java.io.Serializable</code> interface.</li> <li>Any attempt
-     * to add a <code>null</code> must throw a NullPointerException</li>
-     * <li>Any attempt to add an object that does not implement {@link
-     * UIComponent} must throw a ClassCastException.</li> <li>Whenever a
-     * new child component is added, the <code>parent</code> property of
-     * the child must be set to this component instance.  If the
-     * <code>parent</code> property of the child was already non-null,
-     * the child must first be removed from its previous parent (where
-     * it may have been either a child or a facet).</li> <li>Whenever an
-     * existing child component is removed, the <code>parent</code>
-     * property of the child must be set to <code>null</code>.</li>
-
-     * <li class="changed_modified_2_1"><p>After the child component has
-     *     been added to the view, {@link
-     *     javax.faces.application.Application#publishEvent} must be
-     *     called, passing {@link
-     *     javax.faces.event.PostAddToViewEvent}<code>.class</code> as
-     *     the first argument and the newly added component as the
-     *     second argument if any the following cases are true.</p>
-     *
-     *     <ul>
-
-     *       <li><p>{@link
-     *       javax.faces.context.FacesContext#getCurrentPhaseId} returns
-     *       {@link javax.faces.event.PhaseId#RESTORE_VIEW} and partial
-     *       state saving is enabled.</p></li>
-
-     *       <li><p>{@link javax.faces.context.FacesContext#isPostback}
-     *       returns <code>false</code> and {@link
-     *       javax.faces.context.FacesContext#getCurrentPhaseId} returns
-     *       something other than {@link
-     *       javax.faces.event.PhaseId#RESTORE_VIEW}</p></li>
-
-     *    </ul>
-
-     * </li>
-
-     * </ul>
-     */
-    public abstract List<UIComponent> getChildren();
-
-
-    /**
-     * <p>Return the number of child {@link UIComponent}s that are
-     * associated with this {@link UIComponent}.  If there are no
-     * children, this method must return 0.  The method must not cause
-     * the creation of a child component list.</p>
-     */
-    public abstract int getChildCount();
-
-
-    /**
-     * <p>Search for and return the {@link UIComponent} with an <code>id</code>
-     * that matches the specified search expression (if any), according to the
-     * algorithm described below.</p>
-     *
-     * <p>For a method to find a component given a simple
-     * <code>clientId</code>, see {@link #invokeOnComponent}.</p>
-     *
-     * <p>Component identifiers are required to be unique within the scope of
-     * the closest ancestor {@link NamingContainer} that encloses this
-     * component (which might be this component itself).  If there are no
-     * {@link NamingContainer} components in the ancestry of this component,
-     * the root component in the tree is treated as if it were a
-     * {@link NamingContainer}, whether or not its class actually implements
-     * the {@link NamingContainer} interface.</p>
-     *
-     * <p>A <em>search expression</em> consists of either an identifier
-     * (which is matched exactly against the <code>id</code> property of
-     * a {@link UIComponent}, or a series of such identifiers linked by
-     * the {@link UINamingContainer#getSeparatorChar} character value.
-     * The search algorithm should operates as follows, though alternate
-     * alogrithms may be used as long as the end result is the same:</p>
-
-     * <ul>
-     * <li>Identify the {@link UIComponent} that will be the base for searching,
-     *     by stopping as soon as one of the following conditions is met:
-     *     <ul>
-     *     <li>If the search expression begins with the the separator character
-     *         (called an "absolute" search expression),
-     *         the base will be the root {@link UIComponent} of the component
-     *         tree.  The leading separator character will be stripped off,
-     *         and the remainder of the search expression will be treated as
-     *         a "relative" search expression as described below.</li>
-     *     <li>Otherwise, if this {@link UIComponent} is a
-     *         {@link NamingContainer} it will serve as the basis.</li>
-     *     <li>Otherwise, search up the parents of this component.  If
-     *         a {@link NamingContainer} is encountered, it will be the base.
-     *         </li>
-     *     <li>Otherwise (if no {@link NamingContainer} is encountered)
-     *         the root {@link UIComponent} will be the base.</li>
-     *     </ul></li>
-     * <li>The search expression (possibly modified in the previous step) is now
-     *     a "relative" search expression that will be used to locate the
-     *     component (if any) that has an <code>id</code> that matches, within
-     *     the scope of the base component.  The match is performed as follows:
-     *     <ul>
-     *     <li>If the search expression is a simple identifier, this value is
-     *         compared to the <code>id</code> property, and then recursively
-     *         through the facets and children of the base {@link UIComponent}
-     *         (except that if a descendant {@link NamingContainer} is found,
-     *         its own facets and children are not searched).</li>
-     *     <li>If the search expression includes more than one identifier
-     *         separated by the separator character, the first identifier is
-     *         used to locate a {@link NamingContainer} by the rules in the
-     *         previous bullet point.  Then, the <code>findComponent()</code>
-     *         method of this {@link NamingContainer} will be called, passing
-     *         the remainder of the search expression.</li>
-     *     </ul></li>
-     * </ul>
-     *
-     * @param expr Search expression identifying the {@link UIComponent}
-     *  to be returned
-     *
-     * @return the found {@link UIComponent}, or <code>null</code>
-     *  if the component was not found.
-     *
-     * @throws IllegalArgumentException if an intermediate identifier
-     *  in a search expression identifies a {@link UIComponent} that is
-     *  not a {@link NamingContainer}
-     * @throws NullPointerException if <code>expr</code>
-     *  is <code>null</code>
-     */
-    public abstract UIComponent findComponent(String expr);
-
-    /**
-     * <p>Starting at this component in the View hierarchy, search for a
-     * component with a <code>clientId</code> equal to the argument
-     * <code>clientId</code> and, if found, call the {@link
-     * ContextCallback#invokeContextCallback} method on the argument
-     * <code>callback</code>, passing the current {@link FacesContext}
-     * and the found component as arguments. This method is similar to
-     * {@link #findComponent} but it does not support the leading {@link
-     * UINamingContainer#getSeparatorChar} syntax for searching from the
-     * root of the View.</p>
-     *
-     * <p>The default implementation will first check if
-     * <code>this.getClientId()</code> is equal to the argument
-     * <code>clientId</code>.  If so, call the {@link
-     * ContextCallback#invokeContextCallback} method on the argument callback,
-     * passing through the <code>FacesContext</code> argument and
-     * passing this as the component argument.  If an
-     * <code>Exception</code> is thrown by the callback, wrap it in a
-     * {@link FacesException} and re-throw it.  Otherwise, return
-     * <code>true</code>.</p>
-     *
-     * <p>Otherwise, for each component returned by {@link
-     * #getFacetsAndChildren}, call <code>invokeOnComponent()</code>
-     * passing the arguments to this method, in order.  The first time
-     * <code>invokeOnComponent()</code> returns true, abort traversing
-     * the rest of the <code>Iterator</code> and return
-     * <code>true</code>.</p>
-     *
-     * <p>When calling {@link ContextCallback#invokeContextCallback}
-     * the implementation of this method must guarantee that the state
-     * of the component passed to the callback correctly reflects the
-     * component's position in the View hierarchy with respect to any
-     * state found in the argument <code>clientId</code>.  For example,
-     * an iterating component such as {@link UIData} will need to set
-     * its row index to correctly reflect the argument
-     * <code>clientId</code> before finding the appropriate child
-     * component backed by the correct row.  When the callback returns,
-     * either normally or by throwing an <code>Exception</code> the
-     * implementation of this method must restore the state of the view
-     * to the way it was before invoking the callback.</p>
-     *
-     * <p>If none of the elements from {@link
-     * #getFacetsAndChildren} returned <code>true</code> from
-     * <code>invokeOnComponent()</code>, return <code>false</code>.</p>
-     *
-     * <p>Simple usage example to find a component by
-     * <code>clientId</code>.</p>
-
-* <pre><code>
-private UIComponent found = null;
-
-private void doFind(FacesContext context, String clientId) {
-  context.getViewRoot().invokeOnComponent(context, clientId,
-      new ContextCallback() {
-         public void invokeContextCallback(FacesContext context,
-                                       UIComponent component) {
-           found = component;
-         }
-      });
-}
-* </code></pre>
-
-     *
-     *
-     * @since 1.2
-     *
-     * @param context the {@link FacesContext} for the current request
-     *
-     * @param clientId the client identifier of the component to be passed
-     * to the argument callback.
-     *
-     * @param callback an implementation of the Callback interface.
-     *
-     * @throws NullPointerException if any of the arguments are null
-     *
-     * @throws FacesException if the argument Callback throws an
-     * Exception, it is wrapped in a <code>FacesException</code> and re-thrown.
-     *
-     * @return <code>true</code> if the a component with the given
-     * <code>clientId</code> is found, the callback method was
-     * successfully invoked passing that component as an argument, and
-     * no Exception was thrown.  Returns <code>false</code> if no
-     * component with the given <code>clientId</code> is found.
-     *
-     */
-
-    public boolean invokeOnComponent(FacesContext context, String clientId,
-            ContextCallback callback) throws FacesException {
-        if (null == context || null == clientId || null == callback) {
-            throw new NullPointerException();
-        }
-
-        boolean found = false;
-        if (clientId.equals(this.getClientId(context))) {
-            try {
-                callback.invokeContextCallback(context, this);
-                return true;
-            } catch (Exception e) {
-                throw new FacesException(e);
-            }
-        } else {
-            Iterator<UIComponent> itr = this.getFacetsAndChildren();
-
-            while (itr.hasNext() && !found) {
-                found = itr.next().invokeOnComponent(context, clientId,
-                        callback);
-            }
-        }
-        return found;
-    }
-
-    // ------------------------------------------------ Facet Management Methods
-
-
-    /**
-     * <p>Return a mutable <code>Map</code> representing the facet
-     * {@link UIComponent}s associated with this {@link UIComponent},
-     * keyed by facet name (which must be a String).  The returned
-     * implementation must support all of the standard and optional
-     * <code>Map</code> methods, plus support the following additional
-     * requirements:</p>
-
-     * <ul>
-     * <li>The <code>Map</code> implementation must implement
-     *     the <code>java.io.Serializable</code> interface.</li>
-     * <li>Any attempt to add a <code>null</code> key or value must
-     *     throw a NullPointerException.</li>
-     * <li>Any attempt to add a key that is not a String must throw
-     *     a ClassCastException.</li>
-     * <li>Any attempt to add a value that is not a {@link UIComponent}
-     *     must throw a ClassCastException.</li>
-     * <li>Whenever a new facet {@link UIComponent} is added:
-     *     <ul>
-     *     <li>The <code>parent</code> property of the component must be set to
-     *         this component instance.</li>
-     *     <li>If the <code>parent</code> property of the component was already
-     *     non-null, the component must first be removed from its previous
-     *     parent (where it may have been either a child or a facet).</li>
-     *     </ul></li>
-
-     * <li>Whenever an existing facet {@link UIComponent} is removed:
-     *     <ul>
-     *     <li>The <code>parent</code> property of the facet must be
-     *         set to <code>null</code>.</li>
-     *     </ul></li>
-     * </ul>
-     */
-    public abstract Map<String, UIComponent> getFacets();
-
-    /**
-     * <p>Return the number of facet {@link UIComponent}s that are
-     * associated with this {@link UIComponent}.  If there are no
-     * facets, this method must return 0.  The method must not cause
-     * the creation of a facet component map.</p>
-     *
-     * <p>For backwards compatability with classes that extend UIComponent
-     * directly, a default implementation is provided that simply calls
-     * {@link #getFacets} and then calls the <code>size()</code> method on the
-     * returned <code>Map</code>.  A more optimized version of this method is
-     * provided in {@link UIComponentBase#getFacetCount}.
-     *
-     * @since 1.2
-     */
-    public int getFacetCount() {
-        return (getFacets().size());
-    }
-
-
-
-    /**
-     * <p>Convenience method to return the named facet, if it exists, or
-     * <code>null</code> otherwise.  If the requested facet does not
-     * exist, the facets Map must not be created.</p>
-     *
-     * @param name Name of the desired facet
-     */
-    public abstract UIComponent getFacet(String name);
-
-
-    /**
-     * <p>Return an <code>Iterator</code> over the facet followed by child
-     * {@link UIComponent}s of this {@link UIComponent}.
-     * Facets are returned in an undefined order, followed by
-     * all the children in the order they are stored in the child list. If this
-     * component has no facets or children, an empty <code>Iterator</code>
-     * is returned.</p>
-     *
-     * <p>The returned <code>Iterator</code> must not support the
-     * <code>remove()</code> operation.</p>
-     */
-    public abstract Iterator<UIComponent> getFacetsAndChildren();
-
-
-    // -------------------------------------------- Lifecycle Processing Methods
-
-
-    /**
-     * <p>Broadcast the specified {@link FacesEvent} to all registered
-     * event listeners who have expressed an interest in events of this
-     * type.  Listeners are called in the order in which they were
-     * added.</p>  
-     * <p class="changed_added_2_0">If the <code>event</code> is an instance of 
-     * {@link javax.faces.event.BehaviorEvent} and the current 
-     * <code>component</code> is the source of the <code>event</code>
-     * call {@link javax.faces.event.BehaviorEvent#getBehavior} to get the
-     * {@link javax.faces.component.behavior.Behavior} for the event. 
-
-     * <span class="changed_modified_2_0_rev_a">Call {@link
-     * javax.faces.component.behavior.Behavior#broadcast(javax.faces.event.BehaviorEvent)}
-     * on the <code>Behavior</code> instance</span>.</p>
-     *
-     * @param event The {@link FacesEvent} to be broadcast
-     *
-     * @throws AbortProcessingException Signal the JavaServer Faces
-     *  implementation that no further processing on the current event
-     *  should be performed
-     * @throws IllegalArgumentException if the implementation class
-     *  of this {@link FacesEvent} is not supported by this component
-     * @throws NullPointerException if <code>event</code> is
-     * <code>null</code>
-     */
-    public abstract void broadcast(FacesEvent event)
-        throws AbortProcessingException;
-
-
-    /**
-     * <p>Decode any new state of this {@link UIComponent} from the
-     * request contained in the specified {@link FacesContext}, and store
-     * this state as needed.</p>
-     * <p>During decoding, events may be enqueued for later processing
-     * (by event listeners who have registered an interest),  by calling
-     * <code>queueEvent()</code>.</p>
-     *
-     * @param context {@link FacesContext} for the request we are processing
-     *
-     * @throws NullPointerException if <code>context</code>
-     *  is <code>null</code>
-     */
-    public abstract void decode(FacesContext context);
-    
-    /**
-     * <p class="changed_added_2_0">Perform a tree visit starting at
-     * this node in the tree.</p>
-     *
-     * <div class="changed_added_2_0">
-     *
-     * <p>UIComponent.visitTree() implementations do not invoke the
-     * {@link VisitCallback} directly, but instead call {@link
-     * VisitContext#invokeVisitCallback} to invoke the callback.  This
-     * allows {@code VisitContext} implementations to provide optimized
-     * tree traversals, for example by only calling the {@code
-     * VisitCallback} for a subset of components.</p>
-     *
-     * <p>UIComponent.visitTree() implementations must call
-     * UIComponent.pushComponentToEL() before performing the
-     * visit and UIComponent.popComponentFromEL() after the
-     * visit.</p>
-     *
-     * @param context the <code>VisitContext</code> for this visit
-     * @param callback the <code>VisitCallback</code> instance
-     * whose <code>visit</code> method will be called
-     * for each node visited.
-     * @return component implementations may return <code>true</code> 
-     *   to indicate that the tree visit is complete (eg. all components
-     *   that need to be visited have been visited).  This results in
-     *   the tree visit being short-circuited such that no more components
-     *   are visited.
-     *
-     * </div>
-     *
-     * @see VisitContext#invokeVisitCallback VisitContext.invokeVisitCallback()
-     *
-     * @since 2.0
-     */
-    public boolean visitTree(VisitContext context, 
-                             VisitCallback callback) {
-
-        // First check to see whether we are visitable.  If not
-        // short-circuit out of this subtree, though allow the
-        // visit to proceed through to other subtrees.
-        if (!isVisitable(context))
-            return false;
-
-        // Push ourselves to EL before visiting
-        FacesContext facesContext = context.getFacesContext();
-        pushComponentToEL(facesContext, null);
-
-        try {
-            // Visit ourselves.  Note that we delegate to the 
-            // VisitContext to actually perform the visit.
-            VisitResult result = context.invokeVisitCallback(this, callback);
-
-            // If the visit is complete, short-circuit out and end the visit
-            if (result == VisitResult.COMPLETE)
-              return true;
-
-            // Visit children if necessary
-            if (result == VisitResult.ACCEPT) {
-                Iterator<UIComponent> kids = this.getFacetsAndChildren();
-
-                while(kids.hasNext()) {
-                    boolean done = kids.next().visitTree(context, callback);
-
-                    // If any kid visit returns true, we are done.
-                    if (done)
-                        return true;
-                }
-            }
-        }
-        finally {
-            // Pop ourselves off the EL stack
-            popComponentFromEL(facesContext);
-        }
-
-        // Return false to allow the visit to continue
-        return false;
-    }
-
-    /**
-     * <p class="changed_added_2_0">Return <code>true</code> if this
-     * component should be visited, <code>false</code> otherwise.
-     * Called by {@link UIComponent#visitTree UIComponent.visitTree()}
-     * to determine whether this component satisfies the hints returned
-     * by {@link javax.faces.component.visit.VisitContext#getHints}.</p>
-
-     * <div class="changed_added_2_0">
-
-     * <p>If this method returns false, the tree visited is
-     * short-circuited such that neither the component nor any of its
-     * descendents will be visited></p> 
-
-     * <p>Custom {@code visitTree()} implementations may call this
-     * method to determine whether the component is visitable before
-     * performing any visit-related processing.</p>
-     *
-     * </div>
-     *
-     * @since 2.0
-     */
-    protected boolean isVisitable(VisitContext context) {
-
-        // VisitHints currently defines two hints that affect 
-        // visitability: VIIST_RENDERED and VISIT_TRANSIENT.
-        // Check for both of these and if set, verify that 
-        // we comply.
-        Set<VisitHint> hints = context.getHints();
-
-        if ((hints.contains(VisitHint.SKIP_UNRENDERED) && 
-                !this.isRendered())                    ||
-            (hints.contains(VisitHint.SKIP_TRANSIENT)  && 
-                this.isTransient())) {
-            return false;
-        }
-
-        return true;
-    }
-
-    /**
-     * <p><span class="changed_modified_2_0">If</span> our
-     * <code>rendered</code> property is <code>true</code>, render the
-     * beginning of the current state of this {@link UIComponent} to the
-     * response contained in the specified {@link FacesContext}. 
-     * Call {@link #pushComponentToEL(javax.faces.context.FacesContext,javax.faces.component.UIComponent)}.
-     * Call {@link javax.faces.application.Application#publishEvent}, passing
-     * {@link javax.faces.event.PreRenderComponentEvent}<code>.class</code> as the
-     * first argument and the component instance to be rendered as the
-     * second argument.</p></li>
-
-     * <p>If a {@link Renderer} is associated with this {@link
-     * UIComponent}, the actual encoding will be delegated to
-     * {@link Renderer#encodeBegin(FacesContext, UIComponent)}.
-     * </p>
-     *
-     * <p class="changed_added_2_0">If our <code>rendered</code> property is
-     * <code>false</code>, call {@link #pushComponentToEL(javax.faces.context.FacesContext,javax.faces.component.UIComponent)}
-     * and return immediately.</p>
-     *
-     * @param context {@link FacesContext} for the response we are creating
-     *
-     * @throws IOException if an input/output error occurs while rendering
-     * @throws NullPointerException if <code>context</code>
-     *  is <code>null</code>
-     */
-    public abstract void encodeBegin(FacesContext context) throws IOException;
-
-
-    /**
-     * <p>If our <code>rendered</code> property is <code>true</code>,
-     * render the child {@link UIComponent}s of this {@link UIComponent}.
-     * This method will only be called
-     * if the <code>rendersChildren</code> property is <code>true</code>.</p>
-     *
-     * <p>If a {@link Renderer} is associated with this {@link UIComponent},
-     * the actual encoding will be delegated to
-     * {@link Renderer#encodeChildren(FacesContext, UIComponent)}.
-     * <span class="changed_modified_2_0">If no {@link Renderer} is associated
-     * with this {@link UIComponent}, iterate over each of the children of this
-     * component and call 
-     * {@link #encodeAll(javax.faces.context.FacesContext)}.</span></p>
-     *
-     * @param context {@link FacesContext} for the response we are creating
-     *
-     * @throws IOException if an input/output error occurs while rendering
-     * @throws NullPointerException if <code>context</code>
-     *  is <code>null</code>
-     */
-    public abstract void encodeChildren(FacesContext context) throws IOException;
-
-
-    /**
-     * <p><span class="changed_modified_2_0">If</span> our
-     * <code>rendered</code> property is <code>true</code>, render the
-     * ending of the current state of this {@link UIComponent}.</p>
-     *
-     * <p>If a {@link Renderer} is associated with this {@link UIComponent},
-     * the actual encoding will be delegated to
-     * {@link Renderer#encodeEnd(FacesContext, UIComponent)}.</p>
-     *
-     * <p class="changed_added_2_0">Call {@link
-     * UIComponent#popComponentFromEL}. before returning regardless of the value
-     *  of the <code>rendered</code> property.</p>
-     *
-     * @param context {@link FacesContext} for the response we are creating
-     *
-     * @throws IOException if an input/output error occurs while rendering
-     * @throws NullPointerException if <code>context</code>
-     *  is <code>null</code>
-     */
-    public abstract void encodeEnd(FacesContext context) throws IOException;
-
-    /**
-     * <p>If this component
-     * returns <code>true</code> from {@link #isRendered}, take the
-     * following action.</p>
-     *
-     * <p>Render this component and all its children that return
-     * <code>true</code> from <code>isRendered()</code>, regardless of
-     * the value of the {@link #getRendersChildren} flag.</p></li>
-
-     * @since 1.2
-     *
-     * @throws IOException if an input/output error occurs while rendering
-     * @throws NullPointerException if <code>context</code>
-     *  is <code>null</code>
-     */
-    public void encodeAll(FacesContext context) throws IOException {
-
-        if (context == null) {
-            throw new NullPointerException();
-        }
-
-        if (!isRendered()) {
-            return;
-        }
-
-        encodeBegin(context);
-        if (getRendersChildren()) {
-            encodeChildren(context);
-        } else if (this.getChildCount() > 0) {
-            for (UIComponent kid : getChildren()) {
-                kid.encodeAll(context);
-            }
-        }
-
-        encodeEnd(context);
-
-    }
-
-
-    private UIComponent previouslyPushed = null;
-    private UIComponent previouslyPushedCompositeComponent = null;
-    private boolean pushed;
-    private int depth;
-
-    /**
-     * <p class="changed_added_2_0">Push the current
-     * <code>UIComponent</code> <code>this</code> to the {@link FacesContext}
-     * attribute map using the key {@link #CURRENT_COMPONENT} saving the previous
-     * <code>UIComponent</code> associated with {@link #CURRENT_COMPONENT} for a
-     * subsequent call to {@link #popComponentFromEL}.</p>
-     *
-     * <pclass="changed_added_2_0">This method and <code>popComponentFromEL()</code> form the basis for
-     * the contract that enables the EL Expression "<code>#{component}</code>" to
-     * resolve to the "current" component that is being processed in the
-     * lifecycle.  The requirements for when <code>pushComponentToEL()</code> and
-     * <code>popComponentFromEL()</code> must be called are specified as
-     * needed in the javadoc for this class.</p>
-     *
-     * <p class="changed_added_2_0">After
-     * <code>pushComponentToEL()</code> returns, a call to {@link
-     * #getCurrentComponent} must return <code>this</code>
-     * <code>UIComponent</code> instance until
-     * <code>popComponentFromEL()</code> is called, after which point
-     * the previous <code>UIComponent</code> instance will be returned
-     * from <code>getCurrentComponent()</code></p>
-     *
-     * @param context the {@link FacesContext} for the current request
-     * @param component the <code>component</code> to push to the EL.  If
-     *  <code>component</code> is <code>null</code> the <code>UIComponent</code>
-     *  instance that this call was invoked upon will be pushed to the EL.
-     *
-     * @throws NullPointerException if <code>context</code> is <code>null</code>
-     *
-     * @see javax.faces.context.FacesContext#getAttributes()
-     *
-     * @since 2.0
-     */
-    public final void pushComponentToEL(FacesContext context, UIComponent component) {
-
-        if (context == null) {
-            throw new NullPointerException();
-        }
-
-        if (null == component) {
-            component = this;
-        }
-
-        Map<Object,Object> contextMap = context.getAttributes();
-
-        if (contextMap.get(CURRENT_COMPONENT) == component) {
-            depth++;
-            return;
-        }
-        if (contextMap.get(CURRENT_COMPOSITE_COMPONENT) == component) {
-            depth++;
-            return;
-        }
-
-        pushed = true;
-        previouslyPushed = (UIComponent) contextMap.put(CURRENT_COMPONENT, component);
-        // If this is a composite component...
-        if (UIComponent.isCompositeComponent(component)) {
-            // make it so #{cc} resolves to this composite
-            // component, preserving the previous value if present
-            previouslyPushedCompositeComponent =
-                    (UIComponent) contextMap.put(CURRENT_COMPOSITE_COMPONENT, component);
-        }
-
-    }
-
-
-    /**
-     * <p class="changed_added_2_0">Pop the current
-     * <code>UIComponent</code> from the {@link FacesContext} attributes map
-     * so that the previous <code>UIComponent</code>, if any, becomes the current
-     * component.</p>
-     *
-     * @param context the {@link FacesContext} for the current request
-     * 
-     * @throws NullPointerException if <code>context</code> is <code>null</code>
-     *
-     * @see javax.faces.context.FacesContext#getAttributes()
-     *
-     * @since 2.0
-     */
-    public final void popComponentFromEL(FacesContext context) {
-
-        if (context == null) {
-            throw new NullPointerException();
-        }
-
-        if (depth > 0) {
-            depth--;
-            return;
-        }
-        
-        Map<Object,Object> contextMap = context.getAttributes();
-        if (contextMap != null) {
-
-            if (!pushed) {
-                return;
-            }
-            UIComponent c;
-            pushed = false;
-            if (previouslyPushed != null) {
-                c = (UIComponent) contextMap.put(CURRENT_COMPONENT, previouslyPushed);
-            } else {
-                c = (UIComponent) contextMap.remove(CURRENT_COMPONENT);
-            }
-
-            if (c != null && UIComponent.isCompositeComponent(c)) {
-                if (previouslyPushedCompositeComponent != null) {
-                    contextMap.put(CURRENT_COMPOSITE_COMPONENT,
-                                   previouslyPushedCompositeComponent);
-                } else {
-                    contextMap.remove(CURRENT_COMPOSITE_COMPONENT);
-                }
-            }
-        }
-
-    }
-
-
-    /**
-     * <p class="changed_added_2_0">Return <code>true</code> if
-     * <code>component</code> is a composite component, otherwise
-     * <code>false</code>.</p>
-     *
-     * @param component the {@link UIComponent} to test
-     *
-     * @throws NullPointerException if <code>component</code> is <code>null</code>
-     * @since 2.0
-     */
-    public static boolean isCompositeComponent(UIComponent component) {
-
-        if (component == null) {
-            throw new NullPointerException();
-        }
-        return (component.getAttributes().containsKey(Resource.COMPONENT_RESOURCE_KEY));
-
-    }
-
-
-    /**
-     * <p>
-     * Finds the nearest composite component parent of the specified component.
-     * </p>
-     *
-     * @param component the component from which to start the search from
-     *
-     * @return if <code>component</code> is <code>null</code>, return
-     *  <code>null</code>, otherwise search the component's parent hierachy
-     *  for the nearest parent composite component.  If no parent composite
-     *  component is found, return <code>null</code>
-     *
-     * @since 2.0
-     */
-    public static UIComponent getCompositeComponentParent(UIComponent component) {
-
-        if (component == null) {
-            return null;
-        } else {
-            if (component.compositeParent != null) {
-                return component.compositeParent;
-            }
-            UIComponent parent = component.getParent();
-            while (parent != null) {
-                if (UIComponent.isCompositeComponent(parent)) {
-                    if (component.isInView()) {
-                        component.compositeParent = parent;
-                    }
-                    return parent;
-                }
-                parent = parent.getParent();
-            }
-            return null;
-        }
-        
-    }
-
-
-    /**
-     * <p class="changed_added_2_0">Return the <code>UIComponent</code>
-     * instance that is currently processing.  This is equivalent to
-     * evaluating the EL expression "<code>#{component}</code>" and
-     * doing a <code>getValue</code> operation on the resultant
-     * <code>ValueExpression</code>.</p>
-     *
-     * <p class="changed_added_2_0">This method must return
-     * <code>null</code> if there is no currently processing
-     * <code>UIComponent</code></p>
-     *
-     * @param context {@link FacesContext} for the request we are processing
-     *
-     * @throws NullPointerException if <code>context</code>
-     *  is <code>null</code>
-     *
-     * @since 2.0
-     */
-    public static UIComponent getCurrentComponent(FacesContext context) {
-        if (context == null) {
-            throw new NullPointerException();
-        }
-        Map<Object, Object> contextMap = context.getAttributes();
-        return (UIComponent) contextMap.get(CURRENT_COMPONENT);
-
-    }
-
-
-    /**
-     * <p class="changed_added_2_0">Return the closest ancestor
-     * component, relative to the component returned from {@link
-     * #getCurrentComponent}, that is a composite component, or
-     * <code>null</code> if no such component exists.</p>
-     *
-     * @param context {@link FacesContext} for the request we are processing
-     * 
-     * @throws NullPointerException if <code>context</code>
-     *  is <code>null</code>
-     *
-     * @since 2.0
-     */
-    public static UIComponent getCurrentCompositeComponent(FacesContext context) {
-        if (context == null) {
-            throw new NullPointerException();
-        }
-
-        Map<Object, Object> contextMap = context.getAttributes();
-        return (UIComponent) contextMap.get(CURRENT_COMPOSITE_COMPONENT);
-
-    }
-    
-    // -------------------------------------------------- Event Listener Methods
-
-
-    /**
-     * <p>Add the specified {@link FacesListener} to the set of listeners
-     * registered to receive event notifications from this {@link UIComponent}.
-     * It is expected that {@link UIComponent} classes acting as event sources
-     * will have corresponding typesafe APIs for registering listeners of the
-     * required type, and the implementation of those registration methods
-     * will delegate to this method.  For example:</p>
-     * <pre>
-     * public class FooEvent extends FacesEvent { ... }
-     *
-     * public interface FooListener extends FacesListener {
-     *   public void processFoo(FooEvent event);
-     * }
-     *
-     * public class FooComponent extends UIComponentBase {
-     *   ...
-     *   public void addFooListener(FooListener listener) {
-     *     addFacesListener(listener);
-     *   }
-     *   public void removeFooListener(FooListener listener) {
-     *     removeFacesListener(listener);
-     *   }
-     *   ...
-     * }
-     * </pre>
-     *
-     * @param listener The {@link FacesListener} to be registered
-     *
-     * @throws NullPointerException if <code>listener</code>
-     *  is <code>null</code>
-     */
-    protected abstract void addFacesListener(FacesListener listener);
-
-
-    /**
-     * <p>Return an array of registered {@link FacesListener}s that are
-     * instances of the specified class.  If there are no such registered
-     * listeners, a zero-length array is returned.  The returned
-     * array can be safely be cast to an array strongly typed to
-     * an element type of <code>clazz</code>.</p>
-     *
-     * @param clazz Class that must be implemented by a {@link FacesListener}
-     *  for it to be returned
-     *
-     * @throws IllegalArgumentException if <code>class</code> is not,
-     *  and does not implement, {@link FacesListener}
-     * @throws NullPointerException if <code>clazz</code>
-     *  is <code>null</code>
-     */
-    protected abstract FacesListener[] getFacesListeners(Class clazz);
-
-
-    /**
-     * <p>Remove the specified {@link FacesListener} from the set of listeners
-     * registered to receive event notifications from this {@link UIComponent}.
-     *
-     * @param listener The {@link FacesListener} to be deregistered
-     *
-     * @throws NullPointerException if <code>listener</code>
-     *  is <code>null</code>
-     */
-    protected abstract void removeFacesListener(FacesListener listener);
-
-
-    /**
-     * <p>Queue an event for broadcast at the end of the current request
-     * processing lifecycle phase.  The default implementation in
-     * {@link UIComponentBase} must delegate this call to the
-     * <code>queueEvent()</code> method of the parent {@link UIComponent}.</p>
-     *
-     * @param event {@link FacesEvent} to be queued
-     *
-     * @throws IllegalStateException if this component is not a
-     *  descendant of a {@link UIViewRoot}
-     * @throws NullPointerException if <code>event</code>
-     *  is <code>null</code>
-     */
-    public abstract void queueEvent(FacesEvent event);
-
-    /**
-     * <p class="changed_added_2_0">Install the listener instance
-     * referenced by argument <code>componentListener</code> as a
-     * listener for events of type <code>eventClass</code> originating
-     * from this specific instance of <code>UIComponent</code>.  The
-     * default implementation creates an inner {@link
-     * SystemEventListener} instance that wraps argument
-     * <code>componentListener</code> as the <code>listener</code>
-     * argument.  This inner class must call through to the argument
-     * <code>componentListener</code> in its implementation of {@link
-     * SystemEventListener#processEvent} and its implementation of
-     * {@link SystemEventListener#isListenerForSource} must return
-     * true if the instance class of this <code>UIComponent</code> is
-     * assignable from the argument to
-     * <code>isListenerForSource</code>.</p>
-     *
-     * @param eventClass the <code>Class</code> of event for which
-     * <code>listener</code> must be fired.
-     * @param componentListener the implementation of {@link
-     * ComponentSystemEventListener} whose {@link
-     * ComponentSystemEventListener#processEvent} method must be called
-     * when events of type <code>facesEventClass</code> are fired.
-     *
-     * @throws <code>NullPointerException</code> if any of the
-     * arguments are <code>null</code>.
-     *
-     * @since 2.0                                             
-     */
-    public void subscribeToEvent(Class<? extends SystemEvent> eventClass,
-                                 ComponentSystemEventListener componentListener) {
-
-        if (eventClass == null) {
-            throw new NullPointerException();
-        }
-        if (componentListener == null) {
-            throw new NullPointerException();
-        }
-
-        if (initialStateMarked()) {
-            initialState = false;
-        }
-        if (null == listenersByEventClass) {
-            listenersByEventClass = new HashMap<Class<? extends SystemEvent>,
-                                                List<SystemEventListener>>(3, 1.0f);
-        }
-        SystemEventListener facesLifecycleListener =
-              new ComponentSystemEventListenerAdapter(componentListener, this);
-        List<SystemEventListener> listenersForEventClass =
-              listenersByEventClass.get(eventClass);
-        if (listenersForEventClass == null) {
-            listenersForEventClass = new ArrayList<SystemEventListener>(3);
-            listenersByEventClass.put(eventClass, listenersForEventClass);
-        }
-        if (!listenersForEventClass.contains(facesLifecycleListener)) {
-            listenersForEventClass.add(facesLifecycleListener);
-        }
-
-    }
-
-    /**
-     * <p class="changed_added_2_0">Remove the listener instance
-     *     referenced by argument <code>componentListener</code> as a
-     *     listener for events of type <code>eventClass</code>
-     *     originating from this specific instance of
-     *     <code>UIComponent</code>.  When doing the comparison to
-     *     determine if an existing listener is equal to the argument
-     *     <code>componentListener</code> (and thus must be removed),
-     *     the <code>equals()</code> method on the <em>existing
-     *     listener</em> must be invoked, passing the argument
-     *     <code>componentListener</code>, rather than the other way
-     *     around.</p>
-     *
-     * @param eventClass the <code>Class</code> of event for which
-     * <code>listener</code> must be removed.
-     * @param componentListener the implementation of {@link
-     * ComponentSystemEventListener} whose {@link
-     * ComponentSystemEventListener#processEvent} method must no longer be called
-     * when events of type <code>eventClass</code> are fired.
-     *
-     * @throws <code>NullPointerException</code> if any of the
-     * arguments are <code>null</code>.
-     *
-     * @since 2.0
-     */
-    public void unsubscribeFromEvent(Class<? extends SystemEvent> eventClass,
-                                     ComponentSystemEventListener componentListener) {
-
-        if (eventClass == null) {
-            throw new NullPointerException();
-        }
-        if (componentListener == null) {
-            throw new NullPointerException();
-        }
-
-        List<SystemEventListener> listeners =
-              getListenersForEventClass(eventClass);
-        if (listeners != null && !listeners.isEmpty()) {
-            for (Iterator<SystemEventListener> i = listeners.iterator(); i.hasNext();) {
-                SystemEventListener item = i.next();
-                ComponentSystemEventListenerAdapter csla =
-                      (ComponentSystemEventListenerAdapter) item;
-                ComponentSystemEventListener l = csla.getWrapped();
-                if (l.equals(componentListener)) {
-                    i.remove();
-                    break;
-                }
-            }
-        }
-
-    }
-
-    Map<Class<? extends SystemEvent>, List<SystemEventListener>> listenersByEventClass;
-
-    /**
-     * <p class="changed_added_2_0">Return the
-     * <code>SystemEventListener</code> instances registered on this
-     * <code>UIComponent</code> instance that are interested in events
-     * of type <code>eventClass</code>.</p>
-     *
-     * @param eventClass the <code>Class</code> of event for which the
-     * listeners must be returned.
-
-     * @throws NullPointerException if argument <code>eventClass</code> is <code>null</code>.
-     *
-     * @since 2.0
-     */
-    public List<SystemEventListener> getListenersForEventClass(Class<? extends SystemEvent> eventClass) {
-
-        if (eventClass == null) {
-            throw new NullPointerException();
-        }
-        List<SystemEventListener> result = null;
-        if (listenersByEventClass != null) {
-            result = listenersByEventClass.get(eventClass);
-        }
-        return result;
-
-    }
-
-
-    /**
-     * <p class="changed_added_2_0">Starting with "this", return the closest 
-     * component in the ancestry that is a <code>NamingContainer</code>
-     * or <code>null</code> if none can be found.</p>
-     *
-     * @since 2.0
-     */
-    public UIComponent getNamingContainer() {
-        UIComponent namingContainer = this;
-        while (namingContainer != null) {
-            if (namingContainer instanceof NamingContainer) {
-                return namingContainer;
-            }
-            namingContainer = namingContainer.getParent();
-        }
-        return null;
-    }
-
-    // ------------------------------------------------ Lifecycle Phase Handlers
-
-
-    /**
-     * <p><span class="changed_modified_2_0">Perform</span> the
-     * component tree processing required by the <em>Restore View</em>
-     * phase of the request processing lifecycle for all facets of this
-     * component, all children of this component, and this component
-     * itself, as follows.</p> <ul> <li
-     * class="changed_modified_2_0">Call the <code>restoreState()</code>
-     * method of this component.</li> 
-     *
-     * <li class="changed_added_2_0">Call
-     * {@link UIComponent#pushComponentToEL}.  </li>
-
-     * <li>Call the <code>processRestoreState()</code> method of all
-     * facets and children of this {@link UIComponent} in the order
-     * determined by a call to <code>getFacetsAndChildren()</code>.
-     * <span class="changed_added_2_0">After returning from the
-     * <code>processRestoreState()</code> method on a child or facet,
-     * call {@link UIComponent#popComponentFromEL}</span></li>
-
-     * </ul>
-     *
-     * <p>This method may not be called if the state saving method is
-     * set to server.</p>
-     *
-     * @param context {@link FacesContext} for the request we are processing
-     *
-     * @throws NullPointerException if <code>context</code>
-     *  is <code>null</code>
-     */
-    public abstract void processRestoreState(FacesContext context,
-                                             Object state);
-
-
-    /**
-     * <p><span class="changed_modified_2_0">Perform</span> the
-     * component tree processing required by the <em>Apply Request
-     * Values</em> phase of the request processing lifecycle for all
-     * facets of this component, all children of this component, and
-     * this component itself, as follows.</p>
-
-     * <ul>
-     * <li>If the <code>rendered</code> property of this {@link UIComponent}
-     *     is <code>false</code>, skip further processing.</li>
-     * <li class="changed_added_2_0">Call {@link #pushComponentToEL}.</li>
-     * <li>Call the <code>processDecodes()</code> method of all facets
-     *     and children of this {@link UIComponent}, in the order determined
-     *     by a call to <code>getFacetsAndChildren()</code>.</li>
-
-     * <li>Call the <code>decode()</code> method of this component.</li>
-
-     * <li>Call {@link #popComponentFromEL} from inside of a
-     * <code>finally block, just before returning.</code></li>
-
-
-
-     * <li>If a <code>RuntimeException</code> is thrown during
-     *     decode processing, call {@link FacesContext#renderResponse}
-     *     and re-throw the exception.</li>
-     * </ul>
-     *
-     * @param context {@link FacesContext} for the request we are processing
-     *
-     * @throws NullPointerException if <code>context</code>
-     *  is <code>null</code>
-     */
-    public abstract void processDecodes(FacesContext context);
-
-    /**
-     * <p class="changed_added_2_0">The default implementation performs
-     * the following action.  If the argument <code>event</code> is an
-     * instance of {@link PostRestoreStateEvent}, call
-     * <code>this.</code>{@link #getValueExpression} passing the literal
-     * string “binding”, without the quotes, as the
-     * argument.  If the result is non-<code>null</code>, set the value
-     * of the <code>ValueExpression</code> to be <code>this</code>.</p>
-     */ 
-
-    public void processEvent(ComponentSystemEvent event) throws AbortProcessingException {
-        if (event instanceof PostRestoreStateEvent) {
-	    assert(this == event.getComponent());
-            // if this component has a component value reference expression,
-            // make sure to populate the ValueExpression for it.
-            ValueExpression valueExpression;
-            if (null != (valueExpression = this.getValueExpression("binding"))) {
-                valueExpression.setValue(FacesContext.getCurrentInstance().getELContext(), 
-                        this);
-            }
-
-        }
-    }
-    
-    
-
-
-    /**
-     * <p><span class="changed_modified_2_0">Perform</span> the
-     * component tree processing required by the <em>Process
-     * Validations</em> phase of the request processing lifecycle for
-     * all facets of this component, all children of this component, and
-     * this component itself, as follows.</p>
-
-     * <ul>
-     * <li>If the <code>rendered</code> property of this {@link UIComponent}
-     *     is <code>false</code>, skip further processing.</li>
-     * <li class="changed_added_2_0">Call {@link #pushComponentToEL}.</li>
-     * <li>Call the <code>processValidators()</code> method of all facets
-     *     and children of this {@link UIComponent}, in the order determined
-     *     by a call to <code>getFacetsAndChildren()</code>.</li>
-     * <li>After returning from calling
-     * <code>getFacetsAndChildren()</code> call {@link
-     * UIComponent#popComponentFromEL}.</li>
-     * </ul>
-     *
-     * @param context {@link FacesContext} for the request we are processing
-     *
-     * @throws NullPointerException if <code>context</code>
-     *  is <code>null</code>
-     */
-    public abstract void processValidators(FacesContext context);
-
-
-    /**
-     * <p><span class="changed_modified_2_0">Perform</span> the
-     * component tree processing required by the <em>Update Model
-     * Values</em> phase of the request processing lifecycle for all
-     * facets of this component, all children of this component, and
-     * this component itself, as follows.</p> 
-
-     * <ul> 
-
-     * <li>If the <code>rendered</code> property of this {@link
-     * UIComponent} is <code>false</code>, skip further processing.</li>
-
-     * <li class="changed_added_2_0">Call {@link
-     * #pushComponentToEL}.</li>
-
-     * <li>Call the <code>processUpdates()</code> method of all facets
-     * and children of this {@link UIComponent}, in the order determined
-     * by a call to <code>getFacetsAndChildren()</code>.  <span
-     * class="changed_added_2_0">After returning from the
-     * <code>processUpdates()</code> method on a child or facet, call
-     * {@link UIComponent#popComponentFromEL}</span></li>
- 
-    * </ul>
-     *
-     * @param context {@link FacesContext} for the request we are processing
-     *
-     * @throws NullPointerException if <code>context</code>
-     *  is <code>null</code>
-     */
-    public abstract void processUpdates(FacesContext context);
-
-
-    /**
-     * <p><span class="changed_modified_2_0">Perform</span> the
-     * component tree processing required by the state saving portion of
-     * the <em>Render Response</em> phase of the request processing
-     * lifecycle for all facets of this component, all children of this
-     * component, and this component itself, as follows.</p>
-
-     * <ul>
-     *
-     * <li>consult the <code>transient</code> property of this
-     * component.  If true, just return <code>null</code>.</li>
-
-     * <li class="changed_added_2_0">Call {@link
-     * #pushComponentToEL}.</li>
-
-     * <li>Call the <code>processSaveState()</code> method of all facets
-     * and children of this {@link UIComponent} in the order determined
-     * by a call to <code>getFacetsAndChildren()</code>, skipping
-     * children and facets that are transient.  Ensure that {@link
-     * #popComponentFromEL} is called correctly after each child or
-     * facet.</li>
-     *
-     * <li>Call the <code>saveState()</code> method of this component.</li>
-     *
-     * <li>Encapsulate the child state and your state into a
-     * Serializable Object and return it.</li> 
-     *
-     * </ul>
-     *
-     * <p>This method may not be called if the state saving method is
-     * set to server.</p>
-     *
-     * @param context {@link FacesContext} for the request we are processing
-     *
-     * @throws NullPointerException if <code>context</code>
-     *  is <code>null</code>
-     */
-    public abstract Object processSaveState(FacesContext context);
-
-
-    // ----------------------------------------------------- Convenience Methods
-
-
-    /**
-     * <p>Convenience method to return the {@link FacesContext} instance
-     * for the current request.</p>
-     */
-    protected abstract FacesContext getFacesContext();
-
-
-    /**
-     * <p>Convenience method to return the {@link Renderer} instance
-     * associated with this component, if any; otherwise, return
-     * <code>null</code>.</p>
-     *
-     * @param context {@link FacesContext} for the current request
-     */
-    protected abstract Renderer getRenderer(FacesContext context);
-
-
-    // --------------------------------------------------------- Package Private
-
-
-    static final class ComponentSystemEventListenerAdapter
-       implements SystemEventListener, StateHolder, FacesWrapper<ComponentSystemEventListener> {
-
-        ComponentSystemEventListener wrapped;
-        Class<?> instanceClass;
-
-
-        // -------------------------------------------------------- Constructors
-
-
-        ComponentSystemEventListenerAdapter() {
-
-            // necessary for state saving
-
-        }
-
-
-        ComponentSystemEventListenerAdapter(ComponentSystemEventListener wrapped,
-                                            UIComponent component) {
-
-            this.wrapped = wrapped;
-            this.instanceClass = component.getClass();
-
-        }
-
-
-        // ------------------------------------ Methods from SystemEventListener
-
-
-        public void processEvent(SystemEvent event) throws AbortProcessingException {
-
-            wrapped.processEvent((ComponentSystemEvent) event);
-
-        }
-
-
-        public boolean isListenerForSource(Object component) {
-
-            if (wrapped instanceof SystemEventListener) {
-                return ((SystemEventListener) wrapped).isListenerForSource(component);
-            } else {
-                return instanceClass.isAssignableFrom(component.getClass());
-            }
-
-        }
-
-
-        // -------------------------------------------- Methods from StateHolder
-
-        public Object saveState(FacesContext context) {
-
-            if (context == null) {
-                throw new NullPointerException();
-            }
-            return new Object[] {
-                  ((wrapped instanceof UIComponent) ? null : new StateHolderSaver(context, wrapped)),
-                  instanceClass
-            };
-
-        }
-
-
-        public void restoreState(FacesContext context, Object state) {
-
-            if (context == null) {
-                throw new NullPointerException();
-            }
-            if (state == null) {
-                return;
-            }
-            Object[] s = (Object[]) state;
-            Object listener = s[0];
-            wrapped = (ComponentSystemEventListener) ((listener == null)
-                                                      ? UIComponent .getCurrentComponent(context)
-                                                      : ((StateHolderSaver) listener).restore(context));
-            instanceClass = (Class<?>) s[1];
-            
-        }
-
-
-        public boolean isTransient() {
-
-            if (wrapped instanceof StateHolder) {
-                return ((StateHolder) wrapped).isTransient();
-            }
-            return false;
-
-        }
-
-
-        public void setTransient(boolean newTransientValue) {
-
-            // no-op
-
-        }
-
-
-        // ------------------------------------------- Methods from FacesWrapper
-
-
-        public ComponentSystemEventListener getWrapped() {
-
-            return wrapped;
-
-        }
-
-
-        // ------------------------------------------------------ Public Methods
-
-
-        @Override
-        public int hashCode() {
-
-            return (wrapped.hashCode() ^ instanceClass.hashCode());
-
-        }
-
-        @Override
-        public boolean equals(Object obj) {
-
-            if (!(obj instanceof ComponentSystemEventListenerAdapter)) {
-                return false;
-            }
-            ComponentSystemEventListenerAdapter in =
-                  (ComponentSystemEventListenerAdapter) obj;
-            return (wrapped.equals(in.wrapped)
-                    && instanceClass.equals(in.instanceClass));
-            
-        }
-    } // END ComponentSystemEventListenerAdapter
-
-}
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package javax.faces.component;
+
+
+import java.io.IOException;
+import java.io.InputStream;
+
+import java.util.ArrayDeque;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+
+import java.util.MissingResourceException;
+import java.util.PropertyResourceBundle;
+import java.util.ResourceBundle;
+import java.util.Set;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.el.ELContext;
+import javax.el.ELException;
+import javax.el.ValueExpression;
+import javax.faces.FacesException;
+import javax.faces.FacesWrapper;
+import javax.faces.application.Resource;
+import javax.faces.component.visit.VisitCallback;
+import javax.faces.component.visit.VisitContext;
+import javax.faces.component.visit.VisitHint;
+import javax.faces.component.visit.VisitResult;
+import javax.faces.context.FacesContext;
+import javax.faces.el.ValueBinding;
+import javax.faces.event.AbortProcessingException;
+import javax.faces.event.PostRestoreStateEvent;
+import javax.faces.event.ComponentSystemEvent;
+import javax.faces.event.ComponentSystemEventListener;
+import javax.faces.event.FacesEvent;
+import javax.faces.event.SystemEvent;
+import javax.faces.event.SystemEventListener;
+import javax.faces.event.FacesListener;
+import javax.faces.event.SystemEventListenerHolder;
+import javax.faces.render.Renderer;
+
+/**
+ * <p><strong class="changed_modified_2_0
+ * changed_modified_2_0_rev_a changed_modified_2_1 changed_modified_2_2">UIComponent</strong> is
+ * the base class for all user interface components in JavaServer Faces.
+ * The set of {@link UIComponent} instances associated with a particular request
+ * and response are organized into a component tree under a {@link
+ * UIViewRoot} that represents the entire content of the request or
+ * response.</p>
+ *
+ * <p>For the convenience of component developers,
+ * {@link UIComponentBase} provides the default
+ * behavior that is specified for a {@link UIComponent}, and is the base class
+ * for all of the concrete {@link UIComponent} "base" implementations.
+ * Component writers are encouraged to subclass
+ * {@link UIComponentBase}, instead of directly
+ * implementing this abstract class, to reduce the impact of any future changes
+ * to the method signatures.</p>
+ *
+ * <p class="changed_added_2_0">If the {@link
+ * javax.faces.event.ListenerFor} annotation is attached to the class
+ * definition of a <code>Component</code>, that class must also
+ * implement {@link javax.faces.event.ComponentSystemEventListener}.
+ * </p>
+
+ */
+
+public abstract class UIComponent implements PartialStateHolder, TransientStateHolder, SystemEventListenerHolder,
+        ComponentSystemEventListener {
+
+    private static Logger LOGGER = Logger.getLogger("javax.faces.component",
+            "javax.faces.LogStrings");
+
+    /**
+     * <p class="changed_added_2_1">The <code>ServletContext</code> init
+     * parameter consulted by
+     * the <code>UIComponent</code> to tell whether or not the
+     * {@link #CURRENT_COMPONENT} and {@link #CURRENT_COMPOSITE_COMPONENT}
+     * attribute keys should be honored as specified.</p>
+     *
+     * <p>If this parameter is not specified, or is set to false, the contract
+     * specified by the {@link #CURRENT_COMPONENT} and
+     * {@link #CURRENT_COMPOSITE_COMPONENT} method is not honored. If this
+     * parameter is set to true, the contract is honored.</p>
+     */
+    public static final String HONOR_CURRENT_COMPONENT_ATTRIBUTES_PARAM_NAME =
+            "javax.faces.HONOR_CURRENT_COMPONENT_ATTRIBUTES";
+    
+    /**
+     * <p class="changed_added_2_0"><span
+     * class="changed_deleted_2_2">The</span> key to which the
+     * <code>UIComponent</code> currently being processed will be
+     * associated with within the {@link FacesContext} attributes
+     * map. <span class="changed_deleted_2_2">The use of this constant is
+     * deprecated.  Please see {@link
+     * #HONOR_CURRENT_COMPONENT_ATTRIBUTES_PARAM_NAME} to enable its
+     * use.</span></p>
+     *
+     * @see javax.faces.context.FacesContext#getAttributes()
+     *
+     * @since 2.0
+     *
+     * @deprecated
+     */
+    public static final String CURRENT_COMPONENT = "javax.faces.component.CURRENT_COMPONENT";
+
+    /**
+     * <p class="changed_added_2_0"><span
+     * class="changed_deleted_2_2">The</span> key to which the
+     * <em>composite</em> <code>UIComponent</code> currently being
+     * processed will be associated with within the {@link FacesContext}
+     * attributes map. <span class="changed_deleted_2_2">The use of this
+     * constant is deprecated.  Please see {@link
+     * #HONOR_CURRENT_COMPONENT_ATTRIBUTES_PARAM_NAME} to enable its
+     * use.</span></p>
+     *
+     * @see javax.faces.context.FacesContext#getAttributes()
+     *
+     * @since 2.0
+     *
+     * @deprecated
+     */
+    public static final String CURRENT_COMPOSITE_COMPONENT = "javax.faces.component.CURRENT_COMPOSITE_COMPONENT";
+
+    /**
+     * <p class="changed_added_2_0">The value of this constant is used as the key in the
+     * component attribute map, the value for which is a
+     * <code>java.beans.BeanInfo</code> implementation describing the composite
+     * component.  This <code>BeanInfo</code> is known as the 
+     * <em>composite component BeanInfo</em>.</p>
+     *
+     * @since 2.0
+     */
+    public static final String BEANINFO_KEY = "javax.faces.component.BEANINFO_KEY";
+
+
+    /**
+     * <p class="changed_added_2_0">The value of this constant is used as the key
+     * in the <em>composite component BeanDescriptor</em> for the 
+     * <code>Map<PropertyDescriptor></code> that contains meta-information
+     * for the declared facets for this composite component.
+     * This map must contain an entry under the key {@link #COMPOSITE_FACET_NAME}, even
+     * if no facets were explicitly declared.  See {@link #COMPOSITE_FACET_NAME}.</p>
+     *
+     * @since 2.0
+     */
+    public static final String FACETS_KEY = "javax.faces.component.FACETS_KEY";
+    
+    /**
+     * <p class="changed_added_2_0">The value of this constant is used as the key
+     * in the component attributes <code>Map</code> for the 
+     * {@link javax.faces.view.Location} in the view at which this component 
+     * instance resides.</p>
+     *
+     * @since 2.0
+     */
+    public static final String VIEW_LOCATION_KEY = "javax.faces.component.VIEW_LOCATION_KEY";
+    
+    /**
+     * <p class="changed_added_2_0">The value of this constant is used as the key
+     * in the <em>composite component BeanDescriptor</em> for a 
+     * <code>ValueExpression</code> that evaluates to the 
+     * <code>component-type</code> of the <em>composite component root</em>
+     * <code>UIComponent</code> for this composite component, if
+     * one was declared by the composite component author.</p>
+     *
+     * @since 2.0
+     */
+    public static final String COMPOSITE_COMPONENT_TYPE_KEY = "javax.faces.component.COMPOSITE_COMPONENT_TYPE";
+    
+    /**
+     * <p class="changed_added_2_0">The value of this constant is used as the key
+     * in the <code>Map</code> returned as described in {@link #FACETS_KEY}
+     * for the 
+     * <code>PropertyDescriptor</code> describing the composite component facet.
+     * The value of this constant is also used as the key in the <code>Map</code>
+     * returned from {@link #getFacets}.  In this case, it refers to the actual
+     * facet that is the {@link javax.faces.component.UIPanel} that is the parent of the all
+     * of the components in the <code><composite:implementation></code>
+     * section of the <em>composite component VDL file</em>.</p>
+     *
+     * @since 2.0
+     */
+    public static final String COMPOSITE_FACET_NAME = "javax.faces.component.COMPOSITE_FACET_NAME";
+
+    /**
+     * <p class="changed_added_2_1">This constant enables one to quickly discover
+     * the names of the declared composite component attributes that have been
+     * given default values by the composite component author.  The information
+     * is exposed as a <code>Collection<String></code> returned from the
+     * <code>getValue()</code> method on the <em>composite component
+     * BeanDescriptor</em>, when this constant is passed as the argument.</p>
+     *
+     * @since 2.1
+     */
+    public static final String ATTRS_WITH_DECLARED_DEFAULT_VALUES =
+            "javax.faces.component.ATTR_NAMES_WITH_DEFAULT_VALUES";
+
+    enum PropertyKeysPrivate {
+        attributesThatAreSet
+    }
+
+    /**
+     * Properties that are tracked by state saving.
+     */
+    enum PropertyKeys {
+        rendered,
+        attributes,
+        bindings,
+        rendererType,
+        systemEventListeners,
+        behaviors,
+        passThroughAttributes
+    }
+
+    /**
+     * List of attributes that have been set on the component (this
+     * may be from setValueExpression, the attributes map, or setters
+     * from the concrete HTML components.  This allows
+     * for faster rendering of attributes as this list is authoritative
+     * on what has been set.
+     */
+    List<String> attributesThatAreSet;
+    ComponentStateHelper stateHelper = null;
+    UIComponent compositeParent;
+    
+    private transient Boolean isSetCurrentComponent;
+
+    // -------------------------------------------------------------- Attributes
+
+
+    /**
+     * <p>Return a mutable 
+     * <code>Map</code> representing the attributes
+     * (and properties, see below) associated wth this {@link UIComponent},
+     * keyed by attribute name (which must be a String).  The returned
+     * implementation must support all of the standard and optional
+     * <code>Map</code> methods, plus support the following additional
+     * requirements:</p>
+     * <ul>
+     * <li>The <code>Map</code> implementation must implement
+     *     the <code>java.io.Serializable</code> interface.</li>
+     * <li>Any attempt to add a <code>null</code> key or value must
+     *     throw a <code>NullPointerException</code>.</li>
+     * <li>Any attempt to add a key that is not a String must throw
+     *     a <code>ClassCastException</code>.</li>
+     * <li>If the attribute name specified as a key matches a property
+     *     of this {@link UIComponent}'s implementation class, the following
+     *     methods will have special behavior:
+     *     <ul>
+     *     <li><code>containsKey</code> - Return <code>false</code>.</li>
+     *     <li><code>get()</code> - If the property is readable, call
+     *         the getter method and return the returned value (wrapping
+     *         primitive values in their corresponding wrapper classes);
+     *         otherwise throw <code>IllegalArgumentException</code>.</li>
+     *     <li><code>put()</code> - If the property is writeable, call
+     *         the setter method to set the corresponding value (unwrapping
+     *         primitive values in their corresponding wrapper classes).
+     *         If the property is not writeable, or an attempt is made to
+     *         set a property of primitive type to <code>null</code>,
+     *         throw <code>IllegalArgumentException</code>.</li>
+     *     <li><code>remove</code> - Throw
+     *         <code>IllegalArgumentException</code>.</li>
+     *     </ul></li>
+     * </ul>
+     * 
+     */
+    public abstract Map<String, Object> getAttributes();
+    
+    /**
+     * <p class="changed_added_2_2">This is a convenience method that 
+     * simply calls {@link #getPassThroughAttributes(boolean)}, passing {@code true}
+     * as the argument.  This method must never return {@code null}.</p>
+     * 
+     * @since 2.2
+     */
+
+    public final Map<String, Object> getPassThroughAttributes(){
+        
+        return getPassThroughAttributes(true);
+    }
+    
+    
+    /**
+     * <p class="changed_added_2_2">This method has the same specification as 
+     * {@link #getPassThroughAttributes() } except that it is allowed to return 
+     * {@code null} if and only if the argument {@code create} is {@code false}
+     * and no pass through attribute data structure exists for this instance.  
+     * The returned {@code Map} implementation must support all of the standard and optional 
+     * {@code Map} methods, plus support the following additional requirements.
+     * The map must be stored in using {@link #getStateHelper}.</p>
+     * 
+     * <div class="changed_added_2_2">
+     * 
+     * <p>The {@code Map} implementation must implement {@code java.io.Serializable}.</p>
+     * 
+     * <p>Any attempt to add a {@code null} key or value must throw a {@code NullPointerException}.</p>
+     * 
+     * <p>Any attempt to add a key that is not a {@code String} must
+     * throw an {@code IllegalArgumentException}.</p>
+     * 
+     * <p>For backward compatibility with components that extend directly from
+     * this class, a default implementation is provided that returns the empty
+     * map.</p>
+     * 
+     * </div>
+     *
+     * @param create if <code>true</code>, a new {@code Map}
+     * instance will be created if it does not exist already.  If
+     * <code>false</code>, and there is no existing
+     * <code>Map</code> instance, one will not be created and
+     * <code>null</code> will be returned.
+     * @return A {@code Map} instance, or {@code null}.
+     * 
+     * @since 2.2
+     */
+    
+    public Map<String, Object> getPassThroughAttributes(boolean create) {
+        return Collections.emptyMap();
+    }
+    
+    // ---------------------------------------------------------------- Bindings
+
+
+    /**
+     *
+     * <p>Call through to {@link #getValueExpression} and examine the
+     * result.  If the result is an instance of the wrapper class
+     * mandated in {@link #setValueBinding}, extract the
+     * <code>ValueBinding</code> instance and return it.  Otherwise,
+     * wrap the result in an implementation of
+     * <code>ValueBinding</code>, and return it.</p>
+     *
+     * @param name Name of the attribute or property for which to retrieve a
+     *  {@link ValueBinding}
+     *
+     * @throws NullPointerException if <code>name</code>
+     *  is <code>null</code>
+     *
+     * @deprecated This has been replaced by {@link #getValueExpression}.
+     */
+    public abstract ValueBinding getValueBinding(String name);
+
+
+    /**
+     * <p>Wrap the argument <code>binding</code> in an implementation of
+     * {@link ValueExpression} and call through to {@link
+     * #setValueExpression}.</p>
+     *
+     * @param name Name of the attribute or property for which to set a
+     *  {@link ValueBinding}
+     * @param binding The {@link ValueBinding} to set, or <code>null</code>
+     *  to remove any currently set {@link ValueBinding}
+     *
+     * @throws IllegalArgumentException if <code>name</code> is one of
+     *  <code>id</code> or <code>parent</code>
+     * @throws NullPointerException if <code>name</code>
+     *  is <code>null</code>
+     *
+     * @deprecated This has been replaced by {@link #setValueExpression}.
+     */
+    public abstract void setValueBinding(String name, ValueBinding binding);
+
+    // The set of ValueExpressions for this component, keyed by property
+    // name This collection is lazily instantiated
+    // The set of ValueExpressions for this component, keyed by property
+    // name This collection is lazily instantiated
+    @Deprecated
+    protected Map<String,ValueExpression> bindings = null;
+
+    /**
+     * <p>Return the {@link ValueExpression} used to calculate the value for the
+     * specified attribute or property name, if any.</p>
+     *
+     * <p>This method must be overridden and implemented for components that
+     * comply with JSF 1.2 and later.</p>
+     *
+     * @since 1.2
+     *
+     * @param name Name of the attribute or property for which to retrieve a
+     *  {@link ValueExpression}
+     *
+     * @throws NullPointerException if <code>name</code>
+     *  is <code>null</code>
+     *
+     */
+    public ValueExpression getValueExpression(String name) {
+
+        if (name == null) {
+            throw new NullPointerException();
+        }
+
+        Map<String,ValueExpression> map = (Map<String,ValueExpression>)
+              getStateHelper().get(UIComponentBase.PropertyKeys.bindings);
+        return ((map != null) ? map.get(name) : null);
+
+    }
+
+    /**
+     * <p>Set the {@link ValueExpression} used to calculate the value
+     * for the specified attribute or property name, if any.</p>
+     *
+     * <p>The implementation must call {@link
+     * ValueExpression#isLiteralText} on the argument
+     * <code>expression</code>.  If <code>isLiteralText()</code> returns
+     * <code>true</code>, invoke {@link ValueExpression#getValue} on the
+     * argument expression and pass the result as the <code>value</code>
+     * parameter in a call to <code>this.{@link
+     * #getAttributes()}.put(name, value)</code> where <code>name</code>
+     * is the argument <code>name</code>.  If an exception is thrown as
+     * a result of calling {@link ValueExpression#getValue}, wrap it in
+     * a {@link javax.faces.FacesException} and re-throw it.  If
+     * <code>isLiteralText()</code> returns <code>false</code>, simply
+     * store the un-evaluated <code>expression</code> argument in the
+     * collection of <code>ValueExpression</code>s under the key given
+     * by the argument <code>name</code>.</p>
+     *
+     * <p>This method must be overridden and implemented for components that
+     * comply with JSF 1.2 and later.</p>
+     *
+     * @since 1.2
+     *
+     * @param name Name of the attribute or property for which to set a
+     *  {@link ValueExpression}
+     * @param binding The {@link ValueExpression} to set, or <code>null</code>
+     *  to remove any currently set {@link ValueExpression}
+     *
+     * @throws IllegalArgumentException if <code>name</code> is one of
+     *  <code>id</code> or <code>parent</code>
+     * @throws NullPointerException if <code>name</code>
+     *  is <code>null</code>
+     *
+     */
+    public void setValueExpression(String name, ValueExpression binding) {
+
+        if (name == null) {
+            throw new NullPointerException();
+        } else if ("id".equals(name) || "parent".equals(name)) {
+            throw new IllegalArgumentException();
+        }
+
+        if (binding != null) {
+            if (!binding.isLiteralText()) {
+                //if (bindings == null) {
+                //    //noinspection CollectionWithoutInitialCapacity
+                //    bindings = new HashMap<String, ValueExpression>();
+                //}
+                // add this binding name to the 'attributesThatAreSet' list
+                //List<String> sProperties = (List<String>)
+                //      getStateHelper().get(PropertyKeysPrivate.attributesThatAreSet);
+
+                 List<String> sProperties =
+                      (List<String>) getStateHelper().get(PropertyKeysPrivate.attributesThatAreSet);
+                if (sProperties == null) {
+                    getStateHelper().add(PropertyKeysPrivate.attributesThatAreSet, name);
+                } else if (!sProperties.contains(name)) {
+                    getStateHelper().add(PropertyKeysPrivate.attributesThatAreSet, name);
+                }
+                getStateHelper().put(UIComponentBase.PropertyKeys.bindings,
+                                     name,
+                                     binding);
+                //bindings.put(name, binding);
+            } else {
+                ELContext context =
+                    FacesContext.getCurrentInstance().getELContext();
+                try {
+                    getAttributes().put(name, binding.getValue(context));
+                } catch (ELException ele) {
+                    throw new FacesException(ele);
+                }
+            }
+        } else {
+            //if (bindings != null) {
+                // remove this binding name from the 'attributesThatAreSet' list
+//                List<String> sProperties = getAttributesThatAreSet(false);
+//                if (sProperties != null) {
+//                    sProperties.remove(name);
+//                }
+                getStateHelper().remove(PropertyKeysPrivate.attributesThatAreSet,
+                                        name);
+                getStateHelper().remove(UIComponentBase.PropertyKeys.bindings, name);
+                //bindings.remove(name);
+               // if (bindings.isEmpty()) {
+               //     bindings = null;
+               // }
+            }
+       // }
+
+    }
+
+    // -------------------------------------------------------------- Properties
+
+    boolean initialState;
+
+    /**
+     * <p class="changed_added_2_0">An implementation of {@link
+     * PartialStateHolder#markInitialState}, this method is called by
+     * the runtime to indicate that the instance should start tracking
+     * changes to its state.</p>
+     * @since 2.0
+     */
+    public void markInitialState() {
+        initialState = true;
+    }
+
+
+    /**
+     * <p class="changed_added_2_0">An implementation of {@link
+     * PartialStateHolder#initialStateMarked}, this method is called by
+     * the runtime to test if the {@link
+     * PartialStateHolder#markInitialState} method was called.</p>
+     * @since 2.0
+     */
+    public boolean initialStateMarked() {
+        return initialState;
+    }
+
+
+    /**
+     * <p class="changed_added_2_0">An implementation of {@link
+     * PartialStateHolder#clearInitialState}, this method is called by
+     * the runtime to tell the instance to stop tracking state
+     * changes.</p>
+     * @since 2.0
+     */
+    public void clearInitialState() {
+        initialState = false;
+    }
+
+
+    /**
+     * <p class="changed_added_2_0">Return the {@link StateHelper}
+     * instance used to help this component implement {@link
+     * PartialStateHolder}.</p>
+     * @since 2.0
+     */
+    protected StateHelper getStateHelper() {
+        return getStateHelper(true);
+    }
+
+
+    /**
+     * <p class="changed_added_2_0">Like {@link #getStateHelper()}, but
+     * only create a state helper instance if the argument
+     * <code>creat</code> is <code>true</code>.</p>
+     * @param create if <code>true</code>, a new {@link StateHelper}
+     * instance will be created if it does not exist already.  If
+     * <code>false</code>, and there is no existing
+     * <code>StateHelper</code> instance, one will not be created and
+     * <code>null</code> will be returned.
+     * @since 2.0
+     */
+    protected StateHelper getStateHelper(boolean create) {
+
+        if (create && stateHelper == null) {
+            stateHelper = new ComponentStateHelper(this);
+        }
+        return stateHelper;
+
+    }
+
+    /**
+     * <p class="changed_added_2_1">Return the {@link
+     * TransientStateHelper} instance for this <code>UIComponent</code>
+     * instance.  The default implementation simply calls through to
+     * {@link #getTransientStateHelper(boolean)} passing <code>true</code>
+     * as the argument.</p>
+     *
+     * @since 2.1
+     */
+    
+    public final TransientStateHelper getTransientStateHelper()
+    {
+        return getTransientStateHelper(true);
+    }
+    
+    /**
+     * <p class="changed_added_2_1">Return the {@link
+     * TransientStateHelper} instance for this <code>UIComponent</code>
+     * instance.</p>
+     *
+     * @param create if <code>true</code> create, if necessary, any
+     * internal data structures.  If <code>false</code>, do not create
+     * any instances.  In this case, it is possible for this method to
+     * return <code>null</code>.
+     *
+     * @since 2.1
+     */
+    
+    public TransientStateHelper getTransientStateHelper(boolean create) {
+        
+        if (create && stateHelper == null) {
+            stateHelper = new ComponentStateHelper(this);
+        }
+        return stateHelper;
+        
+    }
+
+    /**
+     * <p class="changed_added_2_1">For components that need to support
+     * the concept of transient state, this method will restore any
+     * state saved on a prior call to {@link #saveTransientState}.</p>
+     *
+     * @since 2.1
+     */
+    
+    public void restoreTransientState(FacesContext context, Object state)
+    {
+        boolean forceCreate = (state != null);
+        TransientStateHelper helper = getTransientStateHelper(forceCreate);
+
+        if (helper != null) {
+            helper.restoreTransientState(context, state);
+        }
+    }
+
+    /**
+     * <p class="changed_added_2_1">For components that need to support
+     * the concept of transient state, this method will save any state
+     * that is known to be transient in nature.</p>
+     *
+     * @since 2.1
+     */
+    
+    public Object saveTransientState(FacesContext context)
+    {
+        TransientStateHelper helper = getTransientStateHelper(false);
+
+        return (helper == null) ? null : helper.saveTransientState(context);
+    }
+
+    private boolean isInView;
+
+
+    /**
+     * <p class="changed_added_2_0">Return <code>true</code> if this
+     * component is within the view hierarchy otherwise
+     * <code>false</code></code>
+     *
+     * @since 2.0
+     */
+    public boolean isInView() {
+        return isInView;
+    }
+
+
+    /**
+     * <p class="changed_added_2_0">Updates the status as to whether or
+     * not this component is currently within the view hierarchy.
+     * <strong>This method must never be called by developers; a {@link
+     * UIComponent}'s internal implementation will call it as components
+     * are added to or removed from a parent's child <code>List</code>
+     * or facet <code>Map</code></strong>.</p>
+     *
+     * @param isInView flag indicating whether or not this component is within
+     *  the view hierachy
+     *
+     * @since 2.0
+     */
+    public void setInView(boolean isInView) {
+        this.isInView = isInView;
+    }
+
+    /**
+     * <p class="changed_added_2_0">Enable EL to access the <code>clientId</code>
+     * of a component.  This is particularly useful in combination with the 
+     * <code>component</code> and <code>cc</code> implicit
+     * objects.  A default implementation is provided that simply calls
+     * {@link FacesContext#getCurrentInstance} and then calls through to
+     * {@link #getClientId(FacesContext)}.</p>
+     * 
+     * @since 2.0
+     */
+    
+    public String getClientId() {
+        FacesContext context = FacesContext.getCurrentInstance();
+        return getClientId(context);
+    }
+
+
+    /**
+     * <p>Return a client-side identifier for this component, generating
+     * one if necessary.  The associated {@link Renderer}, if any,
+     * will be asked to convert the clientId to a form suitable for
+     * transmission to the client.</p>
+     *
+     * <p>The return from this method must be the same value throughout
+     * the lifetime of the instance, unless the <code>id</code> property
+     * of the component is changed, or the component is placed in
+     * a {@link NamingContainer} whose client ID changes (for example,
+     * {@link UIData}).  However, even in these cases, consecutive
+     * calls to this method must always return the same value.  The
+     * implementation must follow these steps in determining the
+     * clientId:</p>
+     *
+     * <p>Find the closest ancestor to <b>this</b> component in the view
+     * hierarchy that implements <code>NamingContainer</code>.  Call
+     * <code>getContainerClientId()</code> on it and save the result as
+     * the <code>parentId</code> local variable.  Call {@link #getId} on
+     * <b>this</b> component and save the result as the
+     * <code>myId</code> local variable.  If <code>myId</code> is
+     * <code>null</code>, call
+     * <code>context.getViewRoot().createUniqueId()</code> and assign
+     * the result to myId.  If <code>parentId</code> is
+     * non-<code>null</code>, let <code>myId</code> equal <code>parentId
+     * + {@link UINamingContainer#getSeparatorChar} + myId</code>.  Call
+     * {@link Renderer#convertClientId}, passing <code>myId</code>, and
+     * return the result.</p>
+     *
+     * @param context The {@link FacesContext} for the current request
+     *
+     * @throws NullPointerException if <code>context</code>
+     *  is <code>null</code>
+     */
+    public abstract String getClientId(FacesContext context);
+
+    /**
+     * <p>Allow components that implement {@link NamingContainer} to
+     * selectively disable prepending their clientId to their
+     * descendent's clientIds by breaking the prepending logic into a
+     * seperately callable method.  See {@link #getClientId} for usage.</p>
+     *
+     * <p>By default, this method will call through to {@link
+     * #getClientId} and return the result.
+     *
+     * @since 1.2
+     *
+     *  @throws NullPointerException if <code>context</code> is
+     *  <code>null</code>
+     */
+    public String getContainerClientId(FacesContext context) {
+        if (context == null) {
+            throw new NullPointerException();
+        }
+        return this.getClientId(context);
+    }
+
+    /**
+     * <p>Return the identifier of the component family to which this
+     * component belongs.  This identifier, in conjunction with the value
+     * of the <code>rendererType</code> property, may be used to select
+     * the appropriate {@link Renderer} for this component instance.</p>
+     */
+    public abstract String getFamily();
+
+
+    /**
+     * <p>Return the component identifier of this {@link UIComponent}.</p>
+     */
+    public abstract String getId();
+
+
+    /**
+     * <p>Set the component identifier of this {@link UIComponent} (if any).
+     * Component identifiers must obey the following syntax restrictions:</p>
+     * <ul>
+     * <li>Must not be a zero-length String.</li>
+     * <li>First character must be a letter or an underscore ('_').</li>
+     * <li>Subsequent characters must be a letter, a digit,
+     *     an underscore ('_'), or a dash ('-').</li>
+     * <li>
+     * </ul>
+     *
+     * <p>Component identifiers must also obey the following semantic
+     * restrictions (note that this restriction is <strong>NOT</strong>
+     * enforced by the <code>setId()</code> implementation):</p>
+     * <ul>
+     * <li>The specified identifier must be unique among all the components
+     *     (including facets) that are descendents of the nearest ancestor
+     *     {@link UIComponent} that is a {@link NamingContainer}, or within
+     *     the scope of the entire component tree if there is no such
+     *     ancestor that is a {@link NamingContainer}.</li>
+     * </ul>
+     *
+     * @param id The new component identifier, or <code>null</code> to indicate
+     *  that this {@link UIComponent} does not have a component identifier
+     *
+     * @throws IllegalArgumentException if <code>id</code> is not
+     *  syntactically valid
+     */
+    public abstract void setId(String id);
+
+
+    /**
+     * <p>Return the parent {@link UIComponent} of this
+     * <code>UIComponent</code>, if any.  A component must allow child
+     * components to be added to and removed from the list of children
+     * of this component, even though the child component returns null
+     * from <code>getParent( )</code>.</p>
+     */
+    public abstract UIComponent getParent();
+
+
+    /**
+     * <p class="changed_modified_2_0"><span
+     * class="changed_modified_2_0_rev_a">Set</span> the parent
+     * <code>UIComponent</code> of this <code>UIComponent</code>.  <span
+     * class="changed_added_2_0"><span
+     * class="changed_modified_2_0_rev_a">If
+     * <code>parent.isInView()</code> returns <code>true</code>, calling
+     * this method will first cause a {@link
+     * javax.faces.event.PreRemoveFromViewEvent} to be published, for
+     * this node, and then the children of this node.  Then, once the
+     * re-parenting has occurred, a {@link
+     * javax.faces.event.PostAddToViewEvent} will be published as well,
+     * first for this node, and then for the node's children, <span
+     * class="changed_modified_2_0_rev_a">but only if any of the
+     * following conditions are true.</span></span></p>
+
+     * <div class="changed_modified_2_0_rev_a">
+
+     *     <ul>
+
+     *       <li><p>{@link
+     *       javax.faces.context.FacesContext#getCurrentPhaseId} returns
+     *       {@link javax.faces.event.PhaseId#RESTORE_VIEW} and partial
+     *       state saving is enabled.</p></li>
+
+     *       <li><p>{@link javax.faces.context.FacesContext#isPostback}
+     *       returns <code>false</code> and {@link
+     *       javax.faces.context.FacesContext#getCurrentPhaseId} returns
+     *       something other than {@link
+     *       javax.faces.event.PhaseId#RESTORE_VIEW}</p></li>
+
+     *    </ul>
+
+     * </div>
+
+
+     * <p class="changed_modified_2_0"> <strong>This method must never
+     * be called by developers; a {@link UIComponent}'s internal
+     * implementation will call it as components are added to or removed
+     * from a parent's child <code>List</code> or facet
+     * <code>Map</code></strong></span>.</p>
+     *
+     * @param parent The new parent, or <code>null</code> for the root node
+     *  of a component tree
+     */
+    public abstract void setParent(UIComponent parent);
+
+
+    /**
+     * <p>Return <code>true</code> if this component (and its children)
+     * should be rendered during the <em>Render Response</em> phase
+     * of the request processing lifecycle.</p>
+     */
+    public abstract boolean isRendered();
+
+
+    /**
+     * <p>Set the <code>rendered</code> property of this
+     * {@link UIComponent}.</p>
+     *
+     * @param rendered If <code>true</code> render this component;
+     *  otherwise, do not render this component
+     */
+    public abstract void setRendered(boolean rendered);
+
+
+    /**
+     * <p>Return the {@link Renderer} type for this {@link UIComponent}
+     * (if any).</p>
+     */
+    public abstract String getRendererType();
+
+
+    /**
+     * <p>Set the {@link Renderer} type for this {@link UIComponent},
+     * or <code>null</code> for components that render themselves.</p>
+     *
+     * @param rendererType Logical identifier of the type of
+     *  {@link Renderer} to use, or <code>null</code> for components
+     *  that render themselves
+     */
+    public abstract void setRendererType(String rendererType);
+
+
+    /**
+     * <p>Return a flag indicating whether this component is responsible
+     * for rendering its child components.  The default implementation
+     * in {@link UIComponentBase#getRendersChildren} tries to find the
+     * renderer for this component.  If it does, it calls {@link
+     * Renderer#getRendersChildren} and returns the result.  If it
+     * doesn't, it returns false.  As of version 1.2 of the JavaServer
+     * Faces Specification, component authors are encouraged to return
+     * <code>true</code> from this method and rely on {@link
+     * UIComponentBase#encodeChildren}.</p>
+     */
+    public abstract boolean getRendersChildren();
+    
+
+    
+    private Map<String, String> resourceBundleMap = null;
+    
+    /**
+     * <p class="changed_added_2_0">Return a
+     * <code>Map<String,String></code> of the
+     * <code>ResourceBundle</code> for this component.  A component may
+     * have a <code>ResourceBundle</code> associated with it.  This
+     * bundle may contain localized properties relating to instances of
+     * this component.  The default implementation first looks for a
+     * <code>ResourceBundle</code> with a base name equal to the fully
+     * qualified class name of the current <code>UIComponent this</code>
+     * and <code>Locale</code> equal to the <code>Locale</code> of the
+     * current <code>UIViewRoot</code>.  If no such bundle is found, and
+     * the component is a composite component, let <em>resourceName</em>
+     * be the <em>resourceName</em> of the {@link Resource} for this
+     * composite component, replacing the file extension with
+     * ".properties".  Let <em>libraryName</em> be the
+     * <em>libraryName</em> of the the {@link Resource} for this
+     * composite component.  Call {@link
+     * javax.faces.application.ResourceHandler#createResource(java.lang.String,java.lang.String)},
+     * passing the derived <em>resourceName</em> and
+     * <em>libraryName</em>.  Note that this will automatically allow
+     * for the localization of the <code>ResourceBundle</code> due to
+     * the localization facility implemented in
+     * <code>createResource</code>, which is specified in section
+     * JSF.2.6.1.3 of the spec prose document.  If the resultant {@link
+     * Resource} exists and can be found, the <code>InputStream</code>
+     * for the resource is used to create a <code>ResourceBundle</code>.
+     * If either of the two previous steps for obtaining the
+     * <code>ResourceBundle</code> for this component is successful, the
+     * <code>ResourceBundle</code> is wrapped in a
+     * <code>Map<String,String></code> and returned.  Otherwise
+     * <code>Collections.EMPTY_MAP</code> is returned.</p>
+     *
+     * @since 2.0
+     */
+    public Map<String,String> getResourceBundleMap() {
+        
+        if (null == resourceBundleMap) {
+            // See if there is a ResourceBundle under the FQCN for this class
+            String className = this.getClass().getName();
+            Locale currentLocale = null;
+            FacesContext context = null;
+            UIViewRoot root = null;
+            ResourceBundle resourceBundle = null;
+            
+            // Step 1: look for a ResourceBundle under the FQCN of this instance
+            if (null != (context = FacesContext.getCurrentInstance())) {
+                if (null != (root = context.getViewRoot())) {
+                    currentLocale = root.getLocale();
+                }
+            }
+            if (null == currentLocale) {
+                currentLocale = Locale.getDefault();
+            }
+            try {
+                resourceBundle = 
+                        ResourceBundle.getBundle(className, currentLocale);
+            } catch (MissingResourceException e) {
+                // It is not an error if there is no ResourceBundle
+            }
+            
+            // Step 2: if this is a composite component, look for a 
+            // ResourceBundle as a Resource
+            if (null == resourceBundle) {
+                if (this.getAttributes().containsKey(Resource.COMPONENT_RESOURCE_KEY)) {
+                    Resource ccResource = (Resource)
+                            this.getAttributes().get(Resource.COMPONENT_RESOURCE_KEY);
+                    if (null != ccResource) {
+                        if (null != (ccResource = 
+                                findComponentResourceBundleLocaleMatch(context, 
+                                ccResource.getResourceName(), 
+                                ccResource.getLibraryName()))) {
+                            InputStream propertiesInputStream = null;
+                            try {
+                                propertiesInputStream = ccResource.getInputStream();
+                                resourceBundle = new PropertyResourceBundle(propertiesInputStream);
+                            } catch (IOException ex) {
+                                Logger.getLogger(UIComponent.class.getName()).log(Level.SEVERE, null, ex);
+                            } finally{
+                            	if(null != propertiesInputStream){
+                                    try{
+                                        propertiesInputStream.close();
+                                    } catch(IOException ioe){
+                                        if (LOGGER.isLoggable(Level.SEVERE)) {
+                                            LOGGER.log(Level.SEVERE, null, ioe);
+                                        }
+                                    }
+                            	}
+                            }
+                        }
+                    }
+                }
+            }
+            
+            // Step 3: if the previous steps yielded a ResourceBundle, wrap it
+            // with a Map
+            
+            if (null != resourceBundle) {
+                final ResourceBundle bundle = resourceBundle;
+                resourceBundleMap = 
+                        new Map() {
+                            // this is an immutable Map
+
+                            public String toString() {
+                                StringBuffer sb = new StringBuffer();
+                                Iterator<Map.Entry<String, Object>> entries =
+                                        this.entrySet().iterator();
+                                Map.Entry<String, Object> cur;
+                                while (entries.hasNext()) {
+                                    cur = entries.next();
+                                    sb.append(cur.getKey()).append(": ").append(cur.getValue()).append('\n');
+                                }
+
+                                return sb.toString();
+                            }
+
+                            // Do not need to implement for immutable Map
+                            public void clear() {
+                                throw new UnsupportedOperationException();
+                            }
+
+
+                            public boolean containsKey(Object key) {
+                                boolean result = false;
+                                if (null != key) {
+                                    result = (null != bundle.getObject(key.toString()));
+                                }
+                                return result;
+                            }
+
+
+                            public boolean containsValue(Object value) {
+                                Enumeration<String> keys = bundle.getKeys();
+                                boolean result = false;
+                                while (keys.hasMoreElements()) {
+                                    Object curObj = bundle.getObject(keys.nextElement());
+                                    if ((curObj == value) ||
+                                            ((null != curObj) && curObj.equals(value))) {
+                                        result = true;
+                                        break;
+                                    }
+                                }
+                                return result;
+                            }
+
+
+                            public Set<Map.Entry<String, Object>> entrySet() {
+                                HashMap<String, Object> mappings = new HashMap<String, Object>();
+                                Enumeration<String> keys = bundle.getKeys();
+                                while (keys.hasMoreElements()) {
+                                    String key = keys.nextElement();
+                                    Object value = bundle.getObject(key);
+                                    mappings.put(key, value);
+                                }
+                                return mappings.entrySet();
+                            }
+
+
+                            @Override
+                            public boolean equals(Object obj) {
+                                return !((obj == null) || !(obj instanceof Map))
+                                         && entrySet().equals(((Map) obj).entrySet());
+
+                            }
+
+
+                            public Object get(Object key) {
+                                if (null == key) {
+                                    return null;
+                                }
+                                try {
+                                    return bundle.getObject(key.toString());
+                                } catch (MissingResourceException e) {
+                                    return "???" + key + "???";
+                                }
+                            }
+
+
+                            public int hashCode() {
+                                return bundle.hashCode();
+                            }
+
+
+                            public boolean isEmpty() {
+                                Enumeration<String> keys = bundle.getKeys();
+                                return !keys.hasMoreElements();
+                            }
+
+
+                            public Set keySet() {
+                                Set<String> keySet = new HashSet<String>();
+                                Enumeration<String> keys = bundle.getKeys();
+                                while (keys.hasMoreElements()) {
+                                    keySet.add(keys.nextElement());
+                                }
+                                return keySet;
+                            }
+
+
+                            // Do not need to implement for immutable Map
+                            public Object put(Object k, Object v) {
+                                throw new UnsupportedOperationException();
+                            }
+
+
+                            // Do not need to implement for immutable Map
+                            public void putAll(Map t) {
+                                throw new UnsupportedOperationException();
+                            }
+
+
+                            // Do not need to implement for immutable Map
+                            public Object remove(Object k) {
+                                throw new UnsupportedOperationException();
+                            }
+
+
+                            public int size() {
+                                int result = 0;
+                                Enumeration<String> keys = bundle.getKeys();
+                                while (keys.hasMoreElements()) {
+                                    keys.nextElement();
+                                    result++;
+                                }
+                                return result;
+                            }
+
+
+                            public java.util.Collection values() {
+                                ArrayList<Object> result = new ArrayList<Object>();
+                                Enumeration<String> keys = bundle.getKeys();
+                                while (keys.hasMoreElements()) {
+                                    result.add(
+                                            bundle.getObject(keys.nextElement()));
+                                }
+                                return result;
+                            }
+                        };
+
+            }
+
+            if (null == resourceBundleMap) {
+                resourceBundleMap = Collections.EMPTY_MAP;
+            }
+
+        }
+        
+        return resourceBundleMap;
+    }
+
+    // PENDING(rlubke): I'm sure there's a more efficient
+    // way to handle this.
+    private Resource findComponentResourceBundleLocaleMatch(FacesContext context, 
+            String resourceName, String libraryName) {
+        Resource result = null;
+        ResourceBundle resourceBundle = null;
+        int i;
+        if (-1 != (i = resourceName.lastIndexOf("."))) {
+            resourceName = resourceName.substring(0, i) +
+                    ".properties";
+            if (null != context) {
+                result = context.getApplication().getResourceHandler().
+                        createResource(resourceName, libraryName);
+                InputStream propertiesInputStream = null;
+                try {
+                    propertiesInputStream = result.getInputStream();
+                    resourceBundle = new PropertyResourceBundle(propertiesInputStream);
+                } catch (IOException ex) {
+                    Logger.getLogger(UIComponent.class.getName()).log(Level.SEVERE, null, ex);
+                } finally{
+                    if(null != propertiesInputStream){
+                        try{
+                            propertiesInputStream.close();
+                        } catch(IOException ioe){
+                            if (LOGGER.isLoggable(Level.SEVERE)) {
+                                LOGGER.log(Level.SEVERE, null, ioe);
+                            }
+                        }
+                    }
+                }
+            }
+        }
+        result = (null != resourceBundle) ? result : null;
+        
+        return result;
+    }
+    
+    
+    // This is necessary for JSF components that extend from UIComponent
+    // directly rather than extending from UIComponentBase.  Such components
+    // may need to have implementations provided for methods that originated
+    // from a spec version more recent than the version with which the component
+    // complies.  Currently this private property is only consulted in the
+    // getValueExpression() method.
+//    private boolean isUIComponentBase;
+//    private boolean isUIComponentBaseIsSet = false;
+//
+//    private boolean isUIComponentBase() {
+//        if (!isUIComponentBaseIsSet) {
+//            isUIComponentBase = (this instanceof UIComponentBase);
+//        }
+//
+//        return isUIComponentBase;
+//    }
+
+
+    // ------------------------------------------------- Tree Management Methods
+
+
+    /**
+     * <p><span class="changed_modified_2_0">Return</span> a mutable
+     * <code>List</code> representing the child {@link UIComponent}s
+     * associated with this component.  The returned implementation must
+     * support all of the standard and optional <code>List</code>
+     * methods, plus support the following additional requirements:</p>
+     * <ul> <li>The <code>List</code> implementation must implement the
+     * <code>java.io.Serializable</code> interface.</li> <li>Any attempt
+     * to add a <code>null</code> must throw a NullPointerException</li>
+     * <li>Any attempt to add an object that does not implement {@link
+     * UIComponent} must throw a ClassCastException.</li> <li>Whenever a
+     * new child component is added, the <code>parent</code> property of
+     * the child must be set to this component instance.  If the
+     * <code>parent</code> property of the child was already non-null,
+     * the child must first be removed from its previous parent (where
+     * it may have been either a child or a facet).</li> <li>Whenever an
+     * existing child component is removed, the <code>parent</code>
+     * property of the child must be set to <code>null</code>.</li>
+
+     * <li class="changed_modified_2_1"><p>After the child component has
+     *     been added to the view, {@link
+     *     javax.faces.application.Application#publishEvent} must be
+     *     called, passing {@link
+     *     javax.faces.event.PostAddToViewEvent}<code>.class</code> as
+     *     the first argument and the newly added component as the
+     *     second argument if any the following cases are true.</p>
+     *
+     *     <ul>
+
+     *       <li><p>{@link
+     *       javax.faces.context.FacesContext#getCurrentPhaseId} returns
+     *       {@link javax.faces.event.PhaseId#RESTORE_VIEW} and partial
+     *       state saving is enabled.</p></li>
+
+     *       <li><p>{@link javax.faces.context.FacesContext#isPostback}
+     *       returns <code>false</code> and {@link
+     *       javax.faces.context.FacesContext#getCurrentPhaseId} returns
+     *       something other than {@link
+     *       javax.faces.event.PhaseId#RESTORE_VIEW}</p></li>
+
+     *    </ul>
+
+     * </li>
+
+     * </ul>
+     */
+    public abstract List<UIComponent> getChildren();
+
+
+    /**
+     * <p>Return the number of child {@link UIComponent}s that are
+     * associated with this {@link UIComponent}.  If there are no
+     * children, this method must return 0.  The method must not cause
+     * the creation of a child component list.</p>
+     */
+    public abstract int getChildCount();
+
+
+    /**
+     * <p><span class="changed_modified_2_2">Search</span> for and
+     * return the {@link UIComponent} with an <code>id</code> that
+     * matches the specified search expression (if any), according to
+     * the algorithm described below.</p>
+
+     * <p class="changed_added_2_2">WARNING: The found
+     * <code>UIComponent</code> instance, if any, is returned
+     * <strong>without</strong> regard for its tree traversal context.
+     * Retrieving an EL-bound attribute from the component is not safe.
+     * EL expressions can contain implicit objects, such as
+     * <code>#{component}</code>, which assume they are being evaluated
+     * within the scope of a tree traversal context.  Evaluating
+     * expressions with these kinds of implicit objects outside of a
+     * tree traversal context produces undefined results.  See {@link
+     * #invokeOnComponent} for a method that <strong>does</strong>
+     * correctly account for the tree traversal context when operating
+     * on the found <code>UIComponent</code> instance.  {@link #invokeOnComponent}
+     * is also useful to find components given a simple <code>clientId</code>.
+     *
+     * <p>Component identifiers are required to be unique within the scope of
+     * the closest ancestor {@link NamingContainer} that encloses this
+     * component (which might be this component itself).  If there are no
+     * {@link NamingContainer} components in the ancestry of this component,
+     * the root component in the tree is treated as if it were a
+     * {@link NamingContainer}, whether or not its class actually implements
+     * the {@link NamingContainer} interface.</p>
+     *
+     * <p>A <em>search expression</em> consists of either an identifier
+     * (which is matched exactly against the <code>id</code> property of
+     * a {@link UIComponent}, or a series of such identifiers linked by
+     * the {@link UINamingContainer#getSeparatorChar} character value.
+     * The search algorithm should operates as follows, though alternate
+     * alogrithms may be used as long as the end result is the same:</p>
+
+     * <ul>
+     * <li>Identify the {@link UIComponent} that will be the base for searching,
+     *     by stopping as soon as one of the following conditions is met:
+     *     <ul>
+     *     <li>If the search expression begins with the the separator character
+     *         (called an "absolute" search expression),
+     *         the base will be the root {@link UIComponent} of the component
+     *         tree.  The leading separator character will be stripped off,
+     *         and the remainder of the search expression will be treated as
+     *         a "relative" search expression as described below.</li>
+     *     <li>Otherwise, if this {@link UIComponent} is a
+     *         {@link NamingContainer} it will serve as the basis.</li>
+     *     <li>Otherwise, search up the parents of this component.  If
+     *         a {@link NamingContainer} is encountered, it will be the base.
+     *         </li>
+     *     <li>Otherwise (if no {@link NamingContainer} is encountered)
+     *         the root {@link UIComponent} will be the base.</li>
+     *     </ul></li>
+     * <li>The search expression (possibly modified in the previous step) is now
+     *     a "relative" search expression that will be used to locate the
+     *     component (if any) that has an <code>id</code> that matches, within
+     *     the scope of the base component.  The match is performed as follows:
+     *     <ul>
+     *     <li>If the search expression is a simple identifier, this value is
+     *         compared to the <code>id</code> property, and then recursively
+     *         through the facets and children of the base {@link UIComponent}
+     *         (except that if a descendant {@link NamingContainer} is found,
+     *         its own facets and children are not searched).</li>
+     *     <li>If the search expression includes more than one identifier
+     *         separated by the separator character, the first identifier is
+     *         used to locate a {@link NamingContainer} by the rules in the
+     *         previous bullet point.  Then, the <code>findComponent()</code>
+     *         method of this {@link NamingContainer} will be called, passing
+     *         the remainder of the search expression.</li>
+     *     </ul></li>
+     * </ul>
+     *
+     * @param expr Search expression identifying the {@link UIComponent}
+     *  to be returned
+     *
+     * @return the found {@link UIComponent}, or <code>null</code>
+     *  if the component was not found.
+     *
+     * @throws IllegalArgumentException if an intermediate identifier
+     *  in a search expression identifies a {@link UIComponent} that is
+     *  not a {@link NamingContainer}
+     * @throws NullPointerException if <code>expr</code>
+     *  is <code>null</code>
+     */
+    public abstract UIComponent findComponent(String expr);
+
+    /**
+     * <p><span class="changed_modified_2_1">Starting</span> at this
+     * component in the View hierarchy, search for a component with a
+     * <code>clientId</code> equal to the argument <code>clientId</code>
+     * and, if found, call the {@link
+     * ContextCallback#invokeContextCallback} method on the argument
+     * <code>callback</code>, passing the current {@link FacesContext}
+     * and the found component as arguments. This method is similar to
+     * {@link #findComponent} but it does not support the leading {@link
+     * UINamingContainer#getSeparatorChar} syntax for searching from the
+     * root of the View.</p>
+     *
+     * <p>The default implementation will first check if
+     * <code>this.getClientId()</code> is equal to the argument
+     * <code>clientId</code>.  If so, <span
+     * class="changed_added_2_1">first call {@link #pushComponentToEL},
+     * then</span> call the {@link
+     * ContextCallback#invokeContextCallback} method on the argument
+     * callback, passing through the <code>FacesContext</code> argument
+     * and passing this as the component argument.  <span
+     * class="changed_added_2_1">Then call {@link #popComponentFromEL}.
+     * If an <code>Exception</code> is thrown by the callback, wrap it
+     * in a {@link FacesException} and re-throw it.  Otherwise, return
+     * <code>true</code>.</p>
+     *
+     * <p>Otherwise, for each component returned by {@link
+     * #getFacetsAndChildren}, call <code>invokeOnComponent()</code>
+     * passing the arguments to this method, in order.  The first time
+     * <code>invokeOnComponent()</code> returns true, abort traversing
+     * the rest of the <code>Iterator</code> and return
+     * <code>true</code>.</p>
+     *
+     * <p>When calling {@link ContextCallback#invokeContextCallback}
+     * the implementation of this method must guarantee that the state
+     * of the component passed to the callback correctly reflects the
+     * component's position in the View hierarchy with respect to any
+     * state found in the argument <code>clientId</code>.  For example,
+     * an iterating component such as {@link UIData} will need to set
+     * its row index to correctly reflect the argument
+     * <code>clientId</code> before finding the appropriate child
+     * component backed by the correct row.  When the callback returns,
+     * either normally or by throwing an <code>Exception</code> the
+     * implementation of this method must restore the state of the view
+     * to the way it was before invoking the callback.</p>
+     *
+     * <p>If none of the elements from {@link
+     * #getFacetsAndChildren} returned <code>true</code> from
+     * <code>invokeOnComponent()</code>, return <code>false</code>.</p>
+     *
+     * <p>Simple usage example to find a component by
+     * <code>clientId</code>.</p>
+
+* <pre><code>
+private UIComponent found = null;
+
+private void doFind(FacesContext context, String clientId) {
+  context.getViewRoot().invokeOnComponent(context, clientId,
+      new ContextCallback() {
+         public void invokeContextCallback(FacesContext context,
+                                       UIComponent component) {
+           found = component;
+         }
+      });
+}
+* </code></pre>
+
+     *
+     *
+     * @since 1.2
+     *
+     * @param context the {@link FacesContext} for the current request
+     *
+     * @param clientId the client identifier of the component to be passed
+     * to the argument callback.
+     *
+     * @param callback an implementation of the Callback interface.
+     *
+     * @throws NullPointerException if any of the arguments are null
+     *
+     * @throws FacesException if the argument Callback throws an
+     * Exception, it is wrapped in a <code>FacesException</code> and re-thrown.
+     *
+     * @return <code>true</code> if the a component with the given
+     * <code>clientId</code> is found, the callback method was
+     * successfully invoked passing that component as an argument, and
+     * no Exception was thrown.  Returns <code>false</code> if no
+     * component with the given <code>clientId</code> is found.
+     *
+     */
+
+    public boolean invokeOnComponent(FacesContext context, String clientId,
+            ContextCallback callback) throws FacesException {
+        if (null == context || null == clientId || null == callback) {
+            throw new NullPointerException();
+        }
+
+        boolean found = false;
+        if (clientId.equals(this.getClientId(context))) {
+            try {
+                this.pushComponentToEL(context, this);
+                callback.invokeContextCallback(context, this);
+                return true;
+            } catch (Exception e) {
+                throw new FacesException(e);
+            } finally {
+                this.popComponentFromEL(context);
+            }
+        } else {
+            Iterator<UIComponent> itr = this.getFacetsAndChildren();
+
+            while (itr.hasNext() && !found) {
+                found = itr.next().invokeOnComponent(context, clientId,
+                        callback);
+            }
+        }
+        return found;
+    }
+
+    // ------------------------------------------------ Facet Management Methods
+
+
+    /**
+     * <p>Return a mutable <code>Map</code> representing the facet
+     * {@link UIComponent}s associated with this {@link UIComponent},
+     * keyed by facet name (which must be a String).  The returned
+     * implementation must support all of the standard and optional
+     * <code>Map</code> methods, plus support the following additional
+     * requirements:</p>
+
+     * <ul>
+     * <li>The <code>Map</code> implementation must implement
+     *     the <code>java.io.Serializable</code> interface.</li>
+     * <li>Any attempt to add a <code>null</code> key or value must
+     *     throw a NullPointerException.</li>
+     * <li>Any attempt to add a key that is not a String must throw
+     *     a ClassCastException.</li>
+     * <li>Any attempt to add a value that is not a {@link UIComponent}
+     *     must throw a ClassCastException.</li>
+     * <li>Whenever a new facet {@link UIComponent} is added:
+     *     <ul>
+     *     <li>The <code>parent</code> property of the component must be set to
+     *         this component instance.</li>
+     *     <li>If the <code>parent</code> property of the component was already
+     *     non-null, the component must first be removed from its previous
+     *     parent (where it may have been either a child or a facet).</li>
+     *     </ul></li>
+
+     * <li>Whenever an existing facet {@link UIComponent} is removed:
+     *     <ul>
+     *     <li>The <code>parent</code> property of the facet must be
+     *         set to <code>null</code>.</li>
+     *     </ul></li>
+     * </ul>
+     */
+    public abstract Map<String, UIComponent> getFacets();
+
+    /**
+     * <p>Return the number of facet {@link UIComponent}s that are
+     * associated with this {@link UIComponent}.  If there are no
+     * facets, this method must return 0.  The method must not cause
+     * the creation of a facet component map.</p>
+     *
+     * <p>For backwards compatability with classes that extend UIComponent
+     * directly, a default implementation is provided that simply calls
+     * {@link #getFacets} and then calls the <code>size()</code> method on the
+     * returned <code>Map</code>.  A more optimized version of this method is
+     * provided in {@link UIComponentBase#getFacetCount}.
+     *
+     * @since 1.2
+     */
+    public int getFacetCount() {
+        return (getFacets().size());
+    }
+
+
+
+    /**
+     * <p>Convenience method to return the named facet, if it exists, or
+     * <code>null</code> otherwise.  If the requested facet does not
+     * exist, the facets Map must not be created.</p>
+     *
+     * @param name Name of the desired facet
+     */
+    public abstract UIComponent getFacet(String name);
+
+
+    /**
+     * <p>Return an <code>Iterator</code> over the facet followed by child
+     * {@link UIComponent}s of this {@link UIComponent}.
+     * Facets are returned in an undefined order, followed by
+     * all the children in the order they are stored in the child list. If this
+     * component has no facets or children, an empty <code>Iterator</code>
+     * is returned.</p>
+     *
+     * <p>The returned <code>Iterator</code> must not support the
+     * <code>remove()</code> operation.</p>
+     */
+    public abstract Iterator<UIComponent> getFacetsAndChildren();
+
+
+    // -------------------------------------------- Lifecycle Processing Methods
+
+
+    /**
+     * <p>Broadcast the specified {@link FacesEvent} to all registered
+     * event listeners who have expressed an interest in events of this
+     * type.  Listeners are called in the order in which they were
+     * added.</p>  
+     * <p class="changed_added_2_0">If the <code>event</code> is an instance of 
+     * {@link javax.faces.event.BehaviorEvent} and the current 
+     * <code>component</code> is the source of the <code>event</code>
+     * call {@link javax.faces.event.BehaviorEvent#getBehavior} to get the
+     * {@link javax.faces.component.behavior.Behavior} for the event. 
+
+     * <span class="changed_modified_2_0_rev_a">Call {@link
+     * javax.faces.component.behavior.Behavior#broadcast(javax.faces.event.BehaviorEvent)}
+     * on the <code>Behavior</code> instance</span>.</p>
+     *
+     * @param event The {@link FacesEvent} to be broadcast
+     *
+     * @throws AbortProcessingException Signal the JavaServer Faces
+     *  implementation that no further processing on the current event
+     *  should be performed
+     * @throws IllegalArgumentException if the implementation class
+     *  of this {@link FacesEvent} is not supported by this component
+     * @throws NullPointerException if <code>event</code> is
+     * <code>null</code>
+     */
+    public abstract void broadcast(FacesEvent event)
+        throws AbortProcessingException;
+
+
+    /**
+     * <p>Decode any new state of this {@link UIComponent} from the
+     * request contained in the specified {@link FacesContext}, and store
+     * this state as needed.</p>
+     * <p>During decoding, events may be enqueued for later processing
+     * (by event listeners who have registered an interest),  by calling
+     * <code>queueEvent()</code>.</p>
+     *
+     * @param context {@link FacesContext} for the request we are processing
+     *
+     * @throws NullPointerException if <code>context</code>
+     *  is <code>null</code>
+     */
+    public abstract void decode(FacesContext context);
+    
+    /**
+     * <p class="changed_added_2_0">Perform a tree visit starting at
+     * this node in the tree.</p>
+     *
+     * <div class="changed_added_2_0">
+     *
+     * <p>UIComponent.visitTree() implementations do not invoke the
+     * {@link VisitCallback} directly, but instead call {@link
+     * VisitContext#invokeVisitCallback} to invoke the callback.  This
+     * allows {@code VisitContext} implementations to provide optimized
+     * tree traversals, for example by only calling the {@code
+     * VisitCallback} for a subset of components.</p>
+     *
+     * <p>UIComponent.visitTree() implementations must call
+     * UIComponent.pushComponentToEL() before performing the
+     * visit and UIComponent.popComponentFromEL() after the
+     * visit.</p>
+     *
+     * @param context the <code>VisitContext</code> for this visit
+     * @param callback the <code>VisitCallback</code> instance
+     * whose <code>visit</code> method will be called
+     * for each node visited.
+     * @return component implementations may return <code>true</code> 
+     *   to indicate that the tree visit is complete (eg. all components
+     *   that need to be visited have been visited).  This results in
+     *   the tree visit being short-circuited such that no more components
+     *   are visited.
+     *
+     * </div>
+     *
+     * @see VisitContext#invokeVisitCallback VisitContext.invokeVisitCallback()
+     *
+     * @since 2.0
+     */
+    public boolean visitTree(VisitContext context, 
+                             VisitCallback callback) {
+
+        // First check to see whether we are visitable.  If not
+        // short-circuit out of this subtree, though allow the
+        // visit to proceed through to other subtrees.
+        if (!isVisitable(context))
+            return false;
+
+        // Push ourselves to EL before visiting
+        FacesContext facesContext = context.getFacesContext();
+        pushComponentToEL(facesContext, null);
+
+        try {
+            // Visit ourselves.  Note that we delegate to the 
+            // VisitContext to actually perform the visit.
+            VisitResult result = context.invokeVisitCallback(this, callback);
+
+            // If the visit is complete, short-circuit out and end the visit
+            if (result == VisitResult.COMPLETE)
+              return true;
+
+            // Visit children if necessary
+            if (result == VisitResult.ACCEPT) {
+                Iterator<UIComponent> kids = this.getFacetsAndChildren();
+
+                while(kids.hasNext()) {
+                    boolean done = kids.next().visitTree(context, callback);
+
+                    // If any kid visit returns true, we are done.
+                    if (done)
+                        return true;
+                }
+            }
+        }
+        finally {
+            // Pop ourselves off the EL stack
+            popComponentFromEL(facesContext);
+        }
+
+        // Return false to allow the visit to continue
+        return false;
+    }
+
+    /**
+     * <p class="changed_added_2_0">Return <code>true</code> if this
+     * component should be visited, <code>false</code> otherwise.
+     * Called by {@link UIComponent#visitTree UIComponent.visitTree()}
+     * to determine whether this component satisfies the hints returned
+     * by {@link javax.faces.component.visit.VisitContext#getHints}.</p>
+
+     * <div class="changed_added_2_0">
+
+     * <p>If this method returns false, the tree visited is
+     * short-circuited such that neither the component nor any of its
+     * descendents will be visited></p> 
+
+     * <p>Custom {@code visitTree()} implementations may call this
+     * method to determine whether the component is visitable before
+     * performing any visit-related processing.</p>
+     *
+     * </div>
+     *
+     * @since 2.0
+     */
+    protected boolean isVisitable(VisitContext context) {
+
+        // VisitHints currently defines two hints that affect 
+        // visitability: VIIST_RENDERED and VISIT_TRANSIENT.
+        // Check for both of these and if set, verify that 
+        // we comply.
+        Set<VisitHint> hints = context.getHints();
+
+        if ((hints.contains(VisitHint.SKIP_UNRENDERED) && 
+                !this.isRendered())                    ||
+            (hints.contains(VisitHint.SKIP_TRANSIENT)  && 
+                this.isTransient())) {
+            return false;
+        }
+
+        return true;
+    }
+
+    /**
+     * <p><span class="changed_modified_2_0">If</span> our
+     * <code>rendered</code> property is <code>true</code>, render the
+     * beginning of the current state of this {@link UIComponent} to the
+     * response contained in the specified {@link FacesContext}. 
+     * Call {@link #pushComponentToEL(javax.faces.context.FacesContext,javax.faces.component.UIComponent)}.
+     * Call {@link javax.faces.application.Application#publishEvent}, passing
+     * {@link javax.faces.event.PreRenderComponentEvent}<code>.class</code> as the
+     * first argument and the component instance to be rendered as the
+     * second argument.</p></li>
+
+     * <p>If a {@link Renderer} is associated with this {@link
+     * UIComponent}, the actual encoding will be delegated to
+     * {@link Renderer#encodeBegin(FacesContext, UIComponent)}.
+     * </p>
+     *
+     * <p class="changed_added_2_0">If our <code>rendered</code> property is
+     * <code>false</code>, call {@link #pushComponentToEL(javax.faces.context.FacesContext,javax.faces.component.UIComponent)}
+     * and return immediately.</p>
+     *
+     * @param context {@link FacesContext} for the response we are creating
+     *
+     * @throws IOException if an input/output error occurs while rendering
+     * @throws NullPointerException if <code>context</code>
+     *  is <code>null</code>
+     */
+    public abstract void encodeBegin(FacesContext context) throws IOException;
+
+
+    /**
+     * <p>If our <code>rendered</code> property is <code>true</code>,
+     * render the child {@link UIComponent}s of this {@link UIComponent}.
+     * This method will only be called
+     * if the <code>rendersChildren</code> property is <code>true</code>.</p>
+     *
+     * <p>If a {@link Renderer} is associated with this {@link UIComponent},
+     * the actual encoding will be delegated to
+     * {@link Renderer#encodeChildren(FacesContext, UIComponent)}.
+     * <span class="changed_modified_2_0">If no {@link Renderer} is associated
+     * with this {@link UIComponent}, iterate over each of the children of this
+     * component and call 
+     * {@link #encodeAll(javax.faces.context.FacesContext)}.</span></p>
+     *
+     * @param context {@link FacesContext} for the response we are creating
+     *
+     * @throws IOException if an input/output error occurs while rendering
+     * @throws NullPointerException if <code>context</code>
+     *  is <code>null</code>
+     */
+    public abstract void encodeChildren(FacesContext context) throws IOException;
+
+
+    /**
+     * <p><span class="changed_modified_2_0">If</span> our
+     * <code>rendered</code> property is <code>true</code>, render the
+     * ending of the current state of this {@link UIComponent}.</p>
+     *
+     * <p>If a {@link Renderer} is associated with this {@link UIComponent},
+     * the actual encoding will be delegated to
+     * {@link Renderer#encodeEnd(FacesContext, UIComponent)}.</p>
+     *
+     * <p class="changed_added_2_0">Call {@link
+     * UIComponent#popComponentFromEL}. before returning regardless of the value
+     *  of the <code>rendered</code> property.</p>
+     *
+     * @param context {@link FacesContext} for the response we are creating
+     *
+     * @throws IOException if an input/output error occurs while rendering
+     * @throws NullPointerException if <code>context</code>
+     *  is <code>null</code>
+     */
+    public abstract void encodeEnd(FacesContext context) throws IOException;
+
+    /**
+     * <p>If this component
+     * returns <code>true</code> from {@link #isRendered}, take the
+     * following action.</p>
+     *
+     * <p>Render this component and all its children that return
+     * <code>true</code> from <code>isRendered()</code>, regardless of
+     * the value of the {@link #getRendersChildren} flag.</p></li>
+
+     * @since 1.2
+     *
+     * @throws IOException if an input/output error occurs while rendering
+     * @throws NullPointerException if <code>context</code>
+     *  is <code>null</code>
+     */
+    public void encodeAll(FacesContext context) throws IOException {
+
+        if (context == null) {
+            throw new NullPointerException();
+        }
+
+        if (!isRendered()) {
+            return;
+        }
+
+        encodeBegin(context);
+        if (getRendersChildren()) {
+            encodeChildren(context);
+        } else if (this.getChildCount() > 0) {
+            for (UIComponent kid : getChildren()) {
+                kid.encodeAll(context);
+            }
+        }
+
+        encodeEnd(context);
+
+    }
+
+    
+    private static ArrayDeque<UIComponent> _getComponentELStack(String keyName, Map<Object, Object> contextAttributes)
+    {
+      ArrayDeque<UIComponent> elStack = (ArrayDeque<UIComponent>)contextAttributes.get(keyName);
+      
+      if (elStack == null)
+      {
+        elStack = new ArrayDeque<UIComponent>();
+        contextAttributes.put(keyName, elStack);
+      }
+      
+      return elStack;
+    }
+    
+    // bugdb 18090503 
+    
+    /*
+     * Respecting the fact that someone may have decorated FacesContextFactory
+     * and thus skipped our saving of this init param, look for the init
+     * param and return its value.  The return is saved in a transient ivar
+     * to provide performance while not perturbing state saving.
+     */
+    
+    private boolean isSetCurrentComponent(FacesContext context) {
+        if (null != isSetCurrentComponent) {
+            return isSetCurrentComponent;
+        }
+        
+        
+        Boolean bool = (Boolean) context.getAttributes().get(HONOR_CURRENT_COMPONENT_ATTRIBUTES_PARAM_NAME);
+        if (null != bool) {
+            isSetCurrentComponent = bool;
+        } else {
+            String val = context.getExternalContext().getInitParameter(UIComponent.HONOR_CURRENT_COMPONENT_ATTRIBUTES_PARAM_NAME);
+            isSetCurrentComponent = Boolean.valueOf(val);           
+        }
+        
+        return isSetCurrentComponent;  
+    }
+    
+    //private UIComponent previouslyPushed = null;
+    //private UIComponent previouslyPushedCompositeComponent = null;
+    //private boolean pushed;
+    //private int depth;
+
+    /**
+     * <p class="changed_added_2_0">Push the current
+     * <code>UIComponent</code> <code>this</code> to the {@link FacesContext}
+     * attribute map using the key {@link #CURRENT_COMPONENT} saving the previous
+     * <code>UIComponent</code> associated with {@link #CURRENT_COMPONENT} for a
+     * subsequent call to {@link #popComponentFromEL}.</p>
+     *
+     * <pclass="changed_added_2_0">This method and <code>popComponentFromEL()</code> form the basis for
+     * the contract that enables the EL Expression "<code>#{component}</code>" to
+     * resolve to the "current" component that is being processed in the
+     * lifecycle.  The requirements for when <code>pushComponentToEL()</code> and
+     * <code>popComponentFromEL()</code> must be called are specified as
+     * needed in the javadoc for this class.</p>
+     *
+     * <p class="changed_added_2_0">After
+     * <code>pushComponentToEL()</code> returns, a call to {@link
+     * #getCurrentComponent} must return <code>this</code>
+     * <code>UIComponent</code> instance until
+     * <code>popComponentFromEL()</code> is called, after which point
+     * the previous <code>UIComponent</code> instance will be returned
+     * from <code>getCurrentComponent()</code></p>
+     *
+     * @param context the {@link FacesContext} for the current request
+     * @param component the <code>component</code> to push to the EL.  If
+     *  <code>component</code> is <code>null</code> the <code>UIComponent</code>
+     *  instance that this call was invoked upon will be pushed to the EL.
+     *
+     * @throws NullPointerException if <code>context</code> is <code>null</code>
+     *
+     * @see javax.faces.context.FacesContext#getAttributes()
+     *
+     * @since 2.0
+     */
+    public final void pushComponentToEL(FacesContext context, UIComponent component) {
+
+        if (context == null) {
+            throw new NullPointerException();
+        }
+
+        if (null == component) {
+            component = this;
+        }
+
+        Map<Object, Object> contextAttributes = context.getAttributes();
+        ArrayDeque<UIComponent> componentELStack = _getComponentELStack(_CURRENT_COMPONENT_STACK_KEY,
+                                                               contextAttributes);
+        componentELStack.push(component);
+        component._isPushedAsCurrentRefCount++;
+        
+        // we only do this because of the spec
+        boolean setCurrentComponent = isSetCurrentComponent(context);
+        if (setCurrentComponent) {
+            contextAttributes.put(UIComponent.CURRENT_COMPONENT, component);
+        }
+        
+        // if the pushed component is a composite component, we need to update that
+        // stack as well
+        if (UIComponent.isCompositeComponent(component))
+        {
+          _getComponentELStack(_CURRENT_COMPOSITE_COMPONENT_STACK_KEY,
+                               contextAttributes).push(component);
+
+          // we only do this because of the spec
+          if (setCurrentComponent) {
+              contextAttributes.put(UIComponent.CURRENT_COMPOSITE_COMPONENT, component);
+          }
+        }
+    }
+
+  // track whether we have been pushed as current in order to handle mismatched pushes and
+  // pops of EL context stack.  We use a counter to handle cases where the same component
+  // is pushed on multiple times
+  private int _isPushedAsCurrentRefCount = 0;
+  
+  // key used to look up current component stack if FacesContext attributes
+  private static final String _CURRENT_COMPONENT_STACK_KEY = 
+                                                    "javax.faces.component.CURRENT_COMPONENT_STACK";
+  
+  // key used to look up current composite component stack if FacesContext attributes
+  private static final String _CURRENT_COMPOSITE_COMPONENT_STACK_KEY = 
+                                          "javax.faces.component.CURRENT_COMPOSITE_COMPONENT_STACK";
+  
+
+    /**
+     * <p class="changed_added_2_0">Pop the current
+     * <code>UIComponent</code> from the {@link FacesContext} attributes map
+     * so that the previous <code>UIComponent</code>, if any, becomes the current
+     * component.</p>
+     *
+     * @param context the {@link FacesContext} for the current request
+     * 
+     * @throws NullPointerException if <code>context</code> is <code>null</code>
+     *
+     * @see javax.faces.context.FacesContext#getAttributes()
+     *
+     * @since 2.0
+     */
+    public final void popComponentFromEL(FacesContext context)
+    {
+      if (context == null)
+      {
+        throw new NullPointerException();
+      }
+
+      // detect cases where the stack has become unbalanced.  Due to how UIComponentBase
+      // implemented pushing and pooping of components from the ELContext, components that
+      // overrode just one of encodeBegin or encodeEnd, or only called super in one case
+      // will become unbalanced.  Detect and correct for those cases here.
+ 
+      // detect case where push was never called.  In that case, pop should be a no-op
+      if (_isPushedAsCurrentRefCount < 1) {
+          return;
+      }
+           
+      Map<Object, Object> contextAttributes = context.getAttributes();
+      
+      ArrayDeque<UIComponent> componentELStack = _getComponentELStack(_CURRENT_COMPONENT_STACK_KEY,
+                                                             contextAttributes);
+      
+      // check for the other unbalanced case, a component was pushed but never popped.  Keep
+      // popping those components until we get to our component
+      for (UIComponent topComponent = componentELStack.peek();
+           topComponent != this;
+           topComponent = componentELStack.peek())
+      {
+          topComponent.popComponentFromEL(context);
+      }
+      
+      // pop ourselves off of the stack
+      componentELStack.pop();
+      _isPushedAsCurrentRefCount--;
+
+        boolean setCurrentComponent = isSetCurrentComponent(context);
+      
+      // update the current component with the new top of stack.  We only do this because of the spec
+        if (setCurrentComponent) {
+            contextAttributes.put(UIComponent.CURRENT_COMPONENT, componentELStack.peek());
+        }
+      
+      // if we're a composite component, we also have to pop ourselves off of the
+      // composite stack
+      if (UIComponent.isCompositeComponent(this))
+      {
+        ArrayDeque<UIComponent> compositeELStack=_getComponentELStack(_CURRENT_COMPOSITE_COMPONENT_STACK_KEY,
+                                                             contextAttributes);
+        if (!compositeELStack.isEmpty()) {
+            compositeELStack.pop();
+        }        
+
+        // update the current composite component with the new top of stack.
+          // We only do this because of the spec
+        if (setCurrentComponent) {
+              contextAttributes.put(UIComponent.CURRENT_COMPOSITE_COMPONENT, compositeELStack.peek());
+        }
+      }
+    }
+    
+    // It is safe to cache this because components never go from being
+    // composite to non-composite.
+    private transient Boolean isCompositeComponent = null;
+
+
+    /**
+     * <p class="changed_added_2_0">Return <code>true</code> if
+     * <code>component</code> is a composite component, otherwise
+     * <code>false</code>.</p>
+     *
+     * @param component the {@link UIComponent} to test
+     *
+     * @throws NullPointerException if <code>component</code> is <code>null</code>
+     * @since 2.0
+     */
+    public static boolean isCompositeComponent(UIComponent component) {
+
+        if (component == null) {
+            throw new NullPointerException();
+        }
+        boolean result = false;
+        if (null != component.isCompositeComponent) {
+            result = component.isCompositeComponent.booleanValue();
+        } else {
+            result = component.isCompositeComponent =
+                    (component.getAttributes().containsKey(
+                               Resource.COMPONENT_RESOURCE_KEY));
+        }
+        return result;
+
+    }
+
+
+    /**
+     * <p>
+     * Finds the nearest composite component parent of the specified component.
+     * </p>
+     *
+     * @param component the component from which to start the search from
+     *
+     * @return if <code>component</code> is <code>null</code>, return
+     *  <code>null</code>, otherwise search the component's parent hierachy
+     *  for the nearest parent composite component.  If no parent composite
+     *  component is found, return <code>null</code>
+     *
+     * @since 2.0
+     */
+    public static UIComponent getCompositeComponentParent(UIComponent component) {
+
+        if (component == null) {
+            return null;
+        } else {
+            if (component.compositeParent != null) {
+                return component.compositeParent;
+            }
+            UIComponent parent = component.getParent();
+            while (parent != null) {
+                if (UIComponent.isCompositeComponent(parent)) {
+                    if (component.isInView()) {
+                        component.compositeParent = parent;
+                    }
+                    return parent;
+                }
+                parent = parent.getParent();
+            }
+            return null;
+        }
+        
+    }
+
+
+    /**
+     * <p class="changed_added_2_0">Return the <code>UIComponent</code>
+     * instance that is currently processing.  This is equivalent to
+     * evaluating the EL expression "<code>#{component}</code>" and
+     * doing a <code>getValue</code> operation on the resultant
+     * <code>ValueExpression</code>.</p>
+     *
+     * <p class="changed_added_2_0">This method must return
+     * <code>null</code> if there is no currently processing
+     * <code>UIComponent</code></p>
+     *
+     * @param context {@link FacesContext} for the request we are processing
+     *
+     * @throws NullPointerException if <code>context</code>
+     *  is <code>null</code>
+     *
+     * @since 2.0
+     */
+    public static UIComponent getCurrentComponent(FacesContext context) {
+        Map<Object, Object> contextAttributes = context.getAttributes();
+        ArrayDeque<UIComponent> componentELStack = _getComponentELStack(_CURRENT_COMPONENT_STACK_KEY,
+                                                               contextAttributes);
+
+      return componentELStack.peek();
+    }
+
+
+    /**
+     * <p class="changed_added_2_0">Return the closest ancestor
+     * component, relative to the component returned from {@link
+     * #getCurrentComponent}, that is a composite component, or
+     * <code>null</code> if no such component exists.</p>
+     *
+     * @param context {@link FacesContext} for the request we are processing
+     * 
+     * @throws NullPointerException if <code>context</code>
+     *  is <code>null</code>
+     *
+     * @since 2.0
+     */
+    public static UIComponent getCurrentCompositeComponent(FacesContext context) {
+      // return (UIComponent)context.getAttributes().get(UIComponent.CURRENT_COMPOSITE_COMPONENT);
+        Map<Object, Object> contextAttributes = context.getAttributes();
+        ArrayDeque<UIComponent> compositeELStack = _getComponentELStack(_CURRENT_COMPOSITE_COMPONENT_STACK_KEY,
+                                                             contextAttributes);
+        return compositeELStack.peek();
+    }
+    
+    // -------------------------------------------------- Event Listener Methods
+
+
+    /**
+     * <p>Add the specified {@link FacesListener} to the set of listeners
+     * registered to receive event notifications from this {@link UIComponent}.
+     * It is expected that {@link UIComponent} classes acting as event sources
+     * will have corresponding typesafe APIs for registering listeners of the
+     * required type, and the implementation of those registration methods
+     * will delegate to this method.  For example:</p>
+     * <pre>
+     * public class FooEvent extends FacesEvent { ... }
+     *
+     * public interface FooListener extends FacesListener {
+     *   public void processFoo(FooEvent event);
+     * }
+     *
+     * public class FooComponent extends UIComponentBase {
+     *   ...
+     *   public void addFooListener(FooListener listener) {
+     *     addFacesListener(listener);
+     *   }
+     *   public void removeFooListener(FooListener listener) {
+     *     removeFacesListener(listener);
+     *   }
+     *   ...
+     * }
+     * </pre>
+     *
+     * @param listener The {@link FacesListener} to be registered
+     *
+     * @throws NullPointerException if <code>listener</code>
+     *  is <code>null</code>
+     */
+    protected abstract void addFacesListener(FacesListener listener);
+
+
+    /**
+     * <p>Return an array of registered {@link FacesListener}s that are
+     * instances of the specified class.  If there are no such registered
+     * listeners, a zero-length array is returned.  The returned
+     * array can be safely be cast to an array strongly typed to
+     * an element type of <code>clazz</code>.</p>
+     *
+     * @param clazz Class that must be implemented by a {@link FacesListener}
+     *  for it to be returned
+     *
+     * @throws IllegalArgumentException if <code>class</code> is not,
+     *  and does not implement, {@link FacesListener}
+     * @throws NullPointerException if <code>clazz</code>
+     *  is <code>null</code>
+     */
+    protected abstract FacesListener[] getFacesListeners(Class clazz);
+
+
+    /**
+     * <p>Remove the specified {@link FacesListener} from the set of listeners
+     * registered to receive event notifications from this {@link UIComponent}.
+     *
+     * @param listener The {@link FacesListener} to be deregistered
+     *
+     * @throws NullPointerException if <code>listener</code>
+     *  is <code>null</code>
+     */
+    protected abstract void removeFacesListener(FacesListener listener);
+
+
+    /**
+     * <p>Queue an event for broadcast at the end of the current request
+     * processing lifecycle phase.  The default implementation in
+     * {@link UIComponentBase} must delegate this call to the
+     * <code>queueEvent()</code> method of the parent {@link UIComponent}.</p>
+     *
+     * @param event {@link FacesEvent} to be queued
+     *
+     * @throws IllegalStateException if this component is not a
+     *  descendant of a {@link UIViewRoot}
+     * @throws NullPointerException if <code>event</code>
+     *  is <code>null</code>
+     */
+    public abstract void queueEvent(FacesEvent event);
+
+
+    /**
+     * <p class="changed_modified_2_1">This implementation throws
+     * <code>UnsupportedOperationException</code> and is provided
+     * for the sole purpose of not breaking existing applications that extend
+     * this class.  {@link UIComponentBase} provides the implementation of
+     * this method.</p>
+     *
+     * @since 2.1
+     */
+    public void subscribeToEvent(Class<? extends SystemEvent> eventClass,
+                                          ComponentSystemEventListener componentListener) {
+        throw new UnsupportedOperationException();
+    }
+
+    /**
+     * <p class="changed_modified_2_1">This implementation throws
+     * <code>UnsupportedOperationException</code> and is provided
+     * for the sole purpose of not breaking existing applications that extend
+     * this class.  {@link UIComponentBase} provides the implementation of
+     * this method.</p>
+     *
+     * @since 2.1
+     */
+    public void unsubscribeFromEvent(Class<? extends SystemEvent> eventClass,
+                                              ComponentSystemEventListener componentListener) {
+        throw new UnsupportedOperationException();
+    }
+
+    /**
+     * <p class="changed_modified_2_1">This implementation throws
+     * <code>UnsupportedOperationException</code> and is provided
+     * for the sole purpose of not breaking existing applications that extend
+     * this class.  {@link UIComponentBase} provides the implementation of
+     * this method.</p>
+     *
+     * @since 2.1
+     */
+    public List<SystemEventListener> getListenersForEventClass(Class<? extends SystemEvent> eventClass) {
+        throw new UnsupportedOperationException();
+    }
+
+
+
+    /**
+     * <p class="changed_added_2_0">Starting with "this", return the closest 
+     * component in the ancestry that is a <code>NamingContainer</code>
+     * or <code>null</code> if none can be found.</p>
+     *
+     * @since 2.0
+     */
+    public UIComponent getNamingContainer() {
+        UIComponent namingContainer = this;
+        while (namingContainer != null) {
+            if (namingContainer instanceof NamingContainer) {
+                return namingContainer;
+            }
+            namingContainer = namingContainer.getParent();
+        }
+        return null;
+    }
+
+    // ------------------------------------------------ Lifecycle Phase Handlers
+
+
+    /**
+     * <p><span class="changed_modified_2_0">Perform</span> the
+     * component tree processing required by the <em>Restore View</em>
+     * phase of the request processing lifecycle for all facets of this
+     * component, all children of this component, and this component
+     * itself, as follows.</p> <ul> <li
+     * class="changed_modified_2_0">Call the <code>restoreState()</code>
+     * method of this component.</li> 
+     *
+     * <li class="changed_added_2_0">Call
+     * {@link UIComponent#pushComponentToEL}.  </li>
+
+     * <li>Call the <code>processRestoreState()</code> method of all
+     * facets and children of this {@link UIComponent} in the order
+     * determined by a call to <code>getFacetsAndChildren()</code>.
+     * <span class="changed_added_2_0">After returning from the
+     * <code>processRestoreState()</code> method on a child or facet,
+     * call {@link UIComponent#popComponentFromEL}</span></li>
+
+     * </ul>
+     *
+     * <p>This method may not be called if the state saving method is
+     * set to server.</p>
+     *
+     * @param context {@link FacesContext} for the request we are processing
+     *
+     * @throws NullPointerException if <code>context</code>
+     *  is <code>null</code>
+     */
+    public abstract void processRestoreState(FacesContext context,
+                                             Object state);
+
+
+    /**
+     * <p><span class="changed_modified_2_0">Perform</span> the
+     * component tree processing required by the <em>Apply Request
+     * Values</em> phase of the request processing lifecycle for all
+     * facets of this component, all children of this component, and
+     * this component itself, as follows.</p>
+
+     * <ul>
+     * <li>If the <code>rendered</code> property of this {@link UIComponent}
+     *     is <code>false</code>, skip further processing.</li>
+     * <li class="changed_added_2_0">Call {@link #pushComponentToEL}.</li>
+     * <li>Call the <code>processDecodes()</code> method of all facets
+     *     and children of this {@link UIComponent}, in the order determined
+     *     by a call to <code>getFacetsAndChildren()</code>.</li>
+
+     * <li>Call the <code>decode()</code> method of this component.</li>
+
+     * <li>Call {@link #popComponentFromEL} from inside of a
+     * <code>finally block, just before returning.</code></li>
+
+
+
+     * <li>If a <code>RuntimeException</code> is thrown during
+     *     decode processing, call {@link FacesContext#renderResponse}
+     *     and re-throw the exception.</li>
+     * </ul>
+     *
+     * @param context {@link FacesContext} for the request we are processing
+     *
+     * @throws NullPointerException if <code>context</code>
+     *  is <code>null</code>
+     */
+    public abstract void processDecodes(FacesContext context);
+
+    /**
+     * <p class="changed_added_2_0">The default implementation performs
+     * the following action.  If the argument <code>event</code> is an
+     * instance of {@link PostRestoreStateEvent}, call
+     * <code>this.</code>{@link #getValueExpression} passing the literal
+     * string “binding”, without the quotes, as the
+     * argument.  If the result is non-<code>null</code>, set the value
+     * of the <code>ValueExpression</code> to be <code>this</code>.</p>
+     */ 
+
+    public void processEvent(ComponentSystemEvent event) throws AbortProcessingException {
+        if (event instanceof PostRestoreStateEvent) {
+	    assert(this == event.getComponent());
+            // if this component has a component value reference expression,
+            // make sure to populate the ValueExpression for it.
+            ValueExpression valueExpression;
+            if (null != (valueExpression = this.getValueExpression("binding"))) {
+                valueExpression.setValue(FacesContext.getCurrentInstance().getELContext(), 
+                        this);
+            }
+            isCompositeComponent = null;
+
+        }
+    }
+    
+    
+
+
+    /**
+     * <p><span class="changed_modified_2_0"><span
+     * class="changed_modified_2_0_rev_a">Perform</span></span> the component
+     * tree processing required by the <em>Process Validations</em>
+     * phase of the request processing lifecycle for all facets of this
+     * component, all children of this component, and this component
+     * itself, as follows.</p>
+
+     * <ul>
+     * <li>If the <code>rendered</code> property of this {@link UIComponent}
+     *     is <code>false</code>, skip further processing.</li>
+     * <li class="changed_added_2_0">Call {@link #pushComponentToEL}.</li>
+     * <li>Call the <code>processValidators()</code> method of all facets
+     *     and children of this {@link UIComponent}, in the order determined
+     *     by a call to <code>getFacetsAndChildren()</code>.</li>
+
+     * <li><span class="changed_modified_2_0_rev_a">After returning from
+     * calling <code>getFacetsAndChildren()</code> call {@link
+     * UIComponent#popComponentFromEL}.</span></li> </ul>
+     *
+     * @param context {@link FacesContext} for the request we are processing
+     *
+     * @throws NullPointerException if <code>context</code>
+     *  is <code>null</code>
+     */
+    public abstract void processValidators(FacesContext context);
+
+
+    /**
+     * <p><span class="changed_modified_2_0">Perform</span> the
+     * component tree processing required by the <em>Update Model
+     * Values</em> phase of the request processing lifecycle for all
+     * facets of this component, all children of this component, and
+     * this component itself, as follows.</p> 
+
+     * <ul> 
+
+     * <li>If the <code>rendered</code> property of this {@link
+     * UIComponent} is <code>false</code>, skip further processing.</li>
+
+     * <li class="changed_added_2_0">Call {@link
+     * #pushComponentToEL}.</li>
+
+     * <li>Call the <code>processUpdates()</code> method of all facets
+     * and children of this {@link UIComponent}, in the order determined
+     * by a call to <code>getFacetsAndChildren()</code>.  <span
+     * class="changed_added_2_0">After returning from the
+     * <code>processUpdates()</code> method on a child or facet, call
+     * {@link UIComponent#popComponentFromEL}</span></li>
+ 
+    * </ul>
+     *
+     * @param context {@link FacesContext} for the request we are processing
+     *
+     * @throws NullPointerException if <code>context</code>
+     *  is <code>null</code>
+     */
+    public abstract void processUpdates(FacesContext context);
+
+
+    /**
+     * <p><span class="changed_modified_2_0">Perform</span> the
+     * component tree processing required by the state saving portion of
+     * the <em>Render Response</em> phase of the request processing
+     * lifecycle for all facets of this component, all children of this
+     * component, and this component itself, as follows.</p>
+
+     * <ul>
+     *
+     * <li>consult the <code>transient</code> property of this
+     * component.  If true, just return <code>null</code>.</li>
+
+     * <li class="changed_added_2_0">Call {@link
+     * #pushComponentToEL}.</li>
+
+     * <li>Call the <code>processSaveState()</code> method of all facets
+     * and children of this {@link UIComponent} in the order determined
+     * by a call to <code>getFacetsAndChildren()</code>, skipping
+     * children and facets that are transient.  Ensure that {@link
+     * #popComponentFromEL} is called correctly after each child or
+     * facet.</li>
+     *
+     * <li>Call the <code>saveState()</code> method of this component.</li>
+     *
+     * <li>Encapsulate the child state and your state into a
+     * Serializable Object and return it.</li> 
+     *
+     * </ul>
+     *
+     * <p>This method may not be called if the state saving method is
+     * set to server.</p>
+     *
+     * @param context {@link FacesContext} for the request we are processing
+     *
+     * @throws NullPointerException if <code>context</code>
+     *  is <code>null</code>
+     */
+    public abstract Object processSaveState(FacesContext context);
+
+
+    // ----------------------------------------------------- Convenience Methods
+
+
+    /**
+     * <p>Convenience method to return the {@link FacesContext} instance
+     * for the current request.</p>
+     */
+    protected abstract FacesContext getFacesContext();
+
+
+    /**
+     * <p>Convenience method to return the {@link Renderer} instance
+     * associated with this component, if any; otherwise, return
+     * <code>null</code>.</p>
+     *
+     * @param context {@link FacesContext} for the current request
+     */
+    protected abstract Renderer getRenderer(FacesContext context);
+
+
+    // --------------------------------------------------------- Package Private
+
+
+    static final class ComponentSystemEventListenerAdapter
+       implements ComponentSystemEventListener, SystemEventListener, StateHolder, FacesWrapper<ComponentSystemEventListener> {
+
+        ComponentSystemEventListener wrapped;
+        Class<?> instanceClass;
+
+
+        // -------------------------------------------------------- Constructors
+
+
+        ComponentSystemEventListenerAdapter() {
+
+            // necessary for state saving
+
+        }
+
+
+        ComponentSystemEventListenerAdapter(ComponentSystemEventListener wrapped,
+                                            UIComponent component) {
+
+            this.wrapped = wrapped;
+            this.instanceClass = component.getClass();
+
+        }
+
+
+        // ------------------------------------ Methods from SystemEventListener
+
+
+        public void processEvent(SystemEvent event) throws AbortProcessingException {
+
+            wrapped.processEvent((ComponentSystemEvent) event);
+
+        }
+
+        // ------------------------------------ Methods from SystemEventListener
+
+
+        public void processEvent(ComponentSystemEvent event) throws AbortProcessingException {
+
+            wrapped.processEvent(event);
+
+        }
+        public boolean isListenerForSource(Object component) {
+
+            if (wrapped instanceof SystemEventListener) {
+                return ((SystemEventListener) wrapped).isListenerForSource(component);
+            } else {
+                return instanceClass.isAssignableFrom(component.getClass());
+            }
+
+        }
+
+
+        // -------------------------------------------- Methods from StateHolder
+
+        public Object saveState(FacesContext context) {
+
+            if (context == null) {
+                throw new NullPointerException();
+            }
+            return new Object[] {
+                  ((wrapped instanceof UIComponent) ? null : new StateHolderSaver(context, wrapped)),
+                  instanceClass
+            };
+
+        }
+
+
+        public void restoreState(FacesContext context, Object state) {
+
+            if (context == null) {
+                throw new NullPointerException();
+            }
+            if (state == null) {
+                return;
+            }
+            Object[] s = (Object[]) state;
+            Object listener = s[0];
+            wrapped = (ComponentSystemEventListener) ((listener == null)
+                                                      ? UIComponent .getCurrentComponent(context)
+                                                      : ((StateHolderSaver) listener).restore(context));
+            instanceClass = (Class<?>) s[1];
+            
+        }
+
+
+        public boolean isTransient() {
+
+            if (wrapped instanceof StateHolder) {
+                return ((StateHolder) wrapped).isTransient();
+            }
+            return false;
+
+        }
+
+
+        public void setTransient(boolean newTransientValue) {
+
+            // no-op
+
+        }
+
+
+        // ------------------------------------------- Methods from FacesWrapper
+
+
+        public ComponentSystemEventListener getWrapped() {
+
+            return wrapped;
+
+        }
+
+
+        // ------------------------------------------------------ Public Methods
+
+
+        @Override
+        public int hashCode() {
+
+            return (wrapped.hashCode() ^ instanceClass.hashCode());
+
+        }
+
+        @Override
+        public boolean equals(Object obj) {
+
+            if (!(obj instanceof ComponentSystemEventListenerAdapter)) {
+                return false;
+            }
+            ComponentSystemEventListenerAdapter in =
+                  (ComponentSystemEventListenerAdapter) obj;
+            return (wrapped.equals(in.wrapped)
+                    && instanceClass.equals(in.instanceClass));
+            
+        }
+    } // END ComponentSystemEventListenerAdapter
+
+}
diff --git a/jsf-api/src/main/java/javax/faces/component/UIComponentBase.java b/jsf-api/src/main/java/javax/faces/component/UIComponentBase.java
index 23bdee2..e4dea6b 100644
--- a/jsf-api/src/main/java/javax/faces/component/UIComponentBase.java
+++ b/jsf-api/src/main/java/javax/faces/component/UIComponentBase.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -45,17 +49,7 @@ import javax.faces.component.behavior.ClientBehavior;
 import javax.faces.component.behavior.ClientBehaviorHolder;
 import javax.faces.context.FacesContext;
 import javax.faces.el.ValueBinding;
-import javax.faces.event.AbortProcessingException;
-import javax.faces.event.BehaviorEvent;
-import javax.faces.event.FacesEvent;
-import javax.faces.event.FacesListener;
-import javax.faces.event.PostAddToViewEvent;
-import javax.faces.event.PostValidateEvent;
-import javax.faces.event.PreRemoveFromViewEvent;
-import javax.faces.event.PreRenderComponentEvent;
-import javax.faces.event.PreValidateEvent;
-import javax.faces.event.SystemEvent;
-import javax.faces.event.SystemEventListener;
+import javax.faces.event.*;
 import javax.faces.render.Renderer;
 import java.beans.IntrospectionException;
 import java.beans.Introspector;
@@ -81,13 +75,13 @@ import java.util.ListIterator;
 import java.util.Map;
 import java.util.NoSuchElementException;
 import java.util.Set;
-import java.util.WeakHashMap;
 import java.util.Map.Entry;
+import java.util.concurrent.ConcurrentHashMap;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
 /**
- * <p><strong class="changed_modified_2_0">UIComponentBase</strong> is a
+ * <p><strong class="changed_modified_2_0 changed_modified_2_0_rev_a changed_added_2_1">UIComponentBase</strong> is a
  * convenience base class that implements the default concrete behavior
  * of all methods defined by {@link UIComponent}.</p>
  * <p/>
@@ -118,15 +112,8 @@ public abstract class UIComponentBase extends UIComponent {
      * the properties of a concrete {@link UIComponent} implementation, keyed
      * by the corresponding <code>java.lang.Class</code>.</p>
      * <p/>
-     * <p><strong>IMPLEMENTATION NOTE</strong> - This is implemented as a
-     * <code>WeakHashMap</code> so that, even if this class is embedded in a
-     * container's class loader that is a parent to webapp class loaders,
-     * references to the classes will eventually expire.</p>
      */
-    @SuppressWarnings({"CollectionWithoutInitialCapacity"})
-    private static Map<Class<?>, Map<String, PropertyDescriptor>>
-            descriptors =
-            new WeakHashMap<Class<?>, Map<String, PropertyDescriptor>>();
+    private Map<Class<?>, Map<String, PropertyDescriptor>> descriptors;            
 
     /**
      * Reference to the map of <code>PropertyDescriptor</code>s for this class
@@ -134,6 +121,8 @@ public abstract class UIComponentBase extends UIComponent {
      */
     private Map<String, PropertyDescriptor> pdMap = null;
 
+    private Map<Class<? extends SystemEvent>, List<SystemEventListener>> listenersByEventClass;
+
     /**
      * <p>An EMPTY_OBJECT_ARRAY argument list to be passed to reflection methods.</p>
      */
@@ -144,38 +133,52 @@ public abstract class UIComponentBase extends UIComponent {
     }
 
     private void populateDescriptorsMapIfNecessary() {
-        Class<?> clazz = this.getClass();
-        pdMap = descriptors.get(clazz);
-        if (null != pdMap) {
-            return;
-        }
-
-        // load the property descriptors for this class.
-        PropertyDescriptor pd[] = getPropertyDescriptors();
-        if (pd != null) {
-            pdMap = new HashMap<String, PropertyDescriptor>(pd.length, 1.0f);
-            for (PropertyDescriptor aPd : pd) {
-                pdMap.put(aPd.getName(), aPd);
-            }
-            if (LOGGER.isLoggable(Level.FINE)) {
-                LOGGER.log(Level.FINE, "fine.component.populating_descriptor_map",
-                        new Object[]{clazz,
-                                Thread.currentThread().getName()});
-            }
+        FacesContext facesContext = FacesContext.getCurrentInstance();
+        Class<?> clazz = getClass();
+        
+        /*
+         * If we can find a valid FacesContext we are going to use it to get
+         * access to the property descriptor map.
+         */
+        if (facesContext != null && 
+                facesContext.getExternalContext() != null && 
+                facesContext.getExternalContext().getApplicationMap() != null) {
+            
+            Map<String, Object> applicationMap = facesContext.getExternalContext().getApplicationMap();
+            
+            if (!applicationMap.containsKey("com.sun.faces.compnent.COMPONENT_DESCRIPTORS_MAP")) {
+                applicationMap.put("com.sun.faces.compnent.COMPONENT_DESCRIPTORS_MAP", 
+                        new ConcurrentHashMap<Class<?>, Map<String, PropertyDescriptor>>());
+            }
+            
+            descriptors = (Map<Class<?>, Map<String, PropertyDescriptor>>) applicationMap.get("com.sun.faces.compnent.COMPONENT_DESCRIPTORS_MAP");
+            pdMap = descriptors.get(clazz);
+        }
+
+        if (pdMap == null) {
+            /*
+             * We did not find the property descriptor map so we are now 
+             * going to load it.
+             */
+            PropertyDescriptor pd[] = getPropertyDescriptors();
+            if (pd != null) {
+                pdMap = new HashMap<String, PropertyDescriptor>(pd.length, 1.0f);
+                for (PropertyDescriptor aPd : pd) {
+                    pdMap.put(aPd.getName(), aPd);
+                }
+                if (LOGGER.isLoggable(Level.FINE)) {
+                    LOGGER.log(Level.FINE, "fine.component.populating_descriptor_map",
+                            new Object[]{clazz,
+                                    Thread.currentThread().getName()});
+                }
 
-            // Check again
-            Map<String, PropertyDescriptor> reCheckMap =
-                    descriptors.get(clazz);
-            if (null != reCheckMap) {
-                return;
+                if (descriptors != null && !descriptors.containsKey(clazz)) {
+                    descriptors.put(clazz, pdMap);
+                }
             }
-            descriptors.put(clazz, pdMap);
         }
-
-
     }
 
-
     /**
      * <p>Return an array of <code>PropertyDescriptors</code> for this
      * {@link UIComponent}'s implementation class.  If no descriptors
@@ -211,7 +214,49 @@ public abstract class UIComponentBase extends UIComponent {
 
     }
 
+    @Override
+    public Map<String, Object> getPassThroughAttributes(boolean create) {
+        Map<String, Object> result = (Map<String, Object>) 
+                this.getStateHelper().get(PropertyKeys.passThroughAttributes);
+        if (null == result) {
+            if (create) {
+                result = new PassThroughAttributesMap<String, Object>();
+                this.getStateHelper().put(PropertyKeys.passThroughAttributes, 
+                        result);
+            }
+        }
+        
+        return result;
+
+    }
 
+    private static class PassThroughAttributesMap<K, V> extends ConcurrentHashMap<String, Object> implements Serializable {
+        @Override
+        public Object put(String key, Object value) {
+            if (null == key || null == value) {
+                throw new NullPointerException();
+            }
+            validateKey(key);
+            return super.put(key, value);
+        }
+        
+        @Override
+        public Object putIfAbsent(String key, Object value) {
+            if (null == key || null == value) {
+                throw new NullPointerException();
+            }
+            validateKey(key);
+            return super.putIfAbsent(key, value);
+        }
+        
+        private void validateKey(Object key) {
+            if (!(key instanceof String) || (key instanceof ValueExpression) || !(key instanceof Serializable)) {
+                throw new IllegalArgumentException();
+            }
+        }
+        
+    }
+    
     // ---------------------------------------------------------------- Bindings
 
 
@@ -383,10 +428,8 @@ public abstract class UIComponentBase extends UIComponent {
         return (this.parent);
     }
 
-
     public void setParent(UIComponent parent) {
 
-
         if (parent == null) {
             if (this.parent != null) {
                 doPreRemoveProcessing(FacesContext.getCurrentInstance(), this);
@@ -407,10 +450,7 @@ public abstract class UIComponentBase extends UIComponent {
                 this.getAttributes().remove(ADDED);
             }
         }
-
-    }
-
-
+    }            
 
     public boolean isRendered() {
         
@@ -1016,6 +1056,143 @@ public abstract class UIComponentBase extends UIComponent {
 
     }
 
+    /**
+     * <p class="changed_added_2_1">Install the listener instance
+     * referenced by argument <code>componentListener</code> as a
+     * listener for events of type <code>eventClass</code> originating
+     * from this specific instance of <code>UIComponent</code>.  The
+     * default implementation creates an inner {@link
+     * SystemEventListener} instance that wraps argument
+     * <code>componentListener</code> as the <code>listener</code>
+     * argument.  This inner class must call through to the argument
+     * <code>componentListener</code> in its implementation of {@link
+     * SystemEventListener#processEvent} and its implementation of
+     * {@link SystemEventListener#isListenerForSource} must return
+     * true if the instance class of this <code>UIComponent</code> is
+     * assignable from the argument to
+     * <code>isListenerForSource</code>.</p>
+     *
+     * @param eventClass the <code>Class</code> of event for which
+     * <code>listener</code> must be fired.
+     * @param componentListener the implementation of {@link
+     * javax.faces.event.ComponentSystemEventListener} whose {@link
+     * javax.faces.event.ComponentSystemEventListener#processEvent} method must be called
+     * when events of type <code>facesEventClass</code> are fired.
+     *
+     * @throws <code>NullPointerException</code> if any of the
+     * arguments are <code>null</code>.
+     *
+     * @since 2.1
+     */
+    public void subscribeToEvent(Class<? extends SystemEvent> eventClass,
+                                 ComponentSystemEventListener componentListener) {
+
+        if (eventClass == null) {
+            throw new NullPointerException();
+        }
+        if (componentListener == null) {
+            throw new NullPointerException();
+        }
+
+        if (initialStateMarked()) {
+            initialState = false;
+        }
+        if (null == listenersByEventClass) {
+            listenersByEventClass = new HashMap<Class<? extends SystemEvent>,
+                                                List<SystemEventListener>>(3, 1.0f);
+        }
+        SystemEventListener facesLifecycleListener =
+              new ComponentSystemEventListenerAdapter(componentListener, this);
+        List<SystemEventListener> listenersForEventClass =
+              listenersByEventClass.get(eventClass);
+        if (listenersForEventClass == null) {
+            listenersForEventClass = new ArrayList<SystemEventListener>(3);
+            listenersByEventClass.put(eventClass, listenersForEventClass);
+        }
+        if (!listenersForEventClass.contains(facesLifecycleListener)) {
+            listenersForEventClass.add(facesLifecycleListener);
+        }
+
+    }
+
+    /**
+     * <p class="changed_added_2_1">Remove the listener instance
+     *     referenced by argument <code>componentListener</code> as a
+     *     listener for events of type <code>eventClass</code>
+     *     originating from this specific instance of
+     *     <code>UIComponent</code>.  When doing the comparison to
+     *     determine if an existing listener is equal to the argument
+     *     <code>componentListener</code> (and thus must be removed),
+     *     the <code>equals()</code> method on the <em>existing
+     *     listener</em> must be invoked, passing the argument
+     *     <code>componentListener</code>, rather than the other way
+     *     around.</p>
+     *
+     * @param eventClass the <code>Class</code> of event for which
+     * <code>listener</code> must be removed.
+     * @param componentListener the implementation of {@link
+     * ComponentSystemEventListener} whose {@link
+     * ComponentSystemEventListener#processEvent} method must no longer be called
+     * when events of type <code>eventClass</code> are fired.
+     *
+     * @throws <code>NullPointerException</code> if any of the
+     * arguments are <code>null</code>.
+     *
+     * @since 2.1
+     */
+    public void unsubscribeFromEvent(Class<? extends SystemEvent> eventClass,
+                                     ComponentSystemEventListener componentListener) {
+
+        if (eventClass == null) {
+            throw new NullPointerException();
+        }
+        if (componentListener == null) {
+            throw new NullPointerException();
+        }
+
+        List<SystemEventListener> listeners =
+              getListenersForEventClass(eventClass);
+        if (listeners != null && !listeners.isEmpty()) {
+            for (Iterator<SystemEventListener> i = listeners.iterator(); i.hasNext();) {
+                SystemEventListener item = i.next();
+                ComponentSystemEventListenerAdapter csla =
+                      (ComponentSystemEventListenerAdapter) item;
+                ComponentSystemEventListener l = csla.getWrapped();
+                if (l.equals(componentListener)) {
+                    i.remove();
+                    break;
+                }
+            }
+        }
+
+    }
+
+    /**
+     * <p class="changed_added_2_1">Return the
+     * <code>SystemEventListener</code> instances registered on this
+     * <code>UIComponent</code> instance that are interested in events
+     * of type <code>eventClass</code>.</p>
+     *
+     * @param eventClass the <code>Class</code> of event for which the
+     * listeners must be returned.
+
+     * @throws NullPointerException if argument <code>eventClass</code> is <code>null</code>.
+     *
+     * @since 2.1
+     */
+    public List<SystemEventListener> getListenersForEventClass(Class<? extends SystemEvent> eventClass) {
+
+        if (eventClass == null) {
+            throw new NullPointerException();
+        }
+        List<SystemEventListener> result = null;
+        if (listenersByEventClass != null) {
+            result = listenersByEventClass.get(eventClass);
+        }
+        return result;
+
+    }
+
 
     // ------------------------------------------------ Lifecycle Phase Handlers
 
@@ -1036,23 +1213,24 @@ public abstract class UIComponentBase extends UIComponent {
 
         pushComponentToEL(context, null);
 
-        // Process all facets and children of this component
-        Iterator kids = getFacetsAndChildren();
-        while (kids.hasNext()) {
-            UIComponent kid = (UIComponent) kids.next();
-            kid.processDecodes(context);
-        }
-
-        // Process this component itself
         try {
-            decode(context);
-        } catch (RuntimeException e) {
-            context.renderResponse();
-            throw e;
+            // Process all facets and children of this component
+            Iterator kids = getFacetsAndChildren();
+            while (kids.hasNext()) {
+                UIComponent kid = (UIComponent) kids.next();
+                kid.processDecodes(context);
+            }
+
+            // Process this component itself
+            try {
+                decode(context);
+            } catch (RuntimeException e) {
+                context.renderResponse();
+                throw e;
+            }
         } finally {
             popComponentFromEL(context);
         }
-
     }
 
 
@@ -1072,17 +1250,19 @@ public abstract class UIComponentBase extends UIComponent {
 
         pushComponentToEL(context, null);
 
-        Application app = context.getApplication();
-        app.publishEvent(context, PreValidateEvent.class, this);
-        // Process all the facets and children of this component
-        Iterator kids = getFacetsAndChildren();
-        while (kids.hasNext()) {
-            UIComponent kid = (UIComponent) kids.next();
-            kid.processValidators(context);
+        try {
+            Application app = context.getApplication();
+            app.publishEvent(context, PreValidateEvent.class, this);
+            // Process all the facets and children of this component
+            Iterator kids = getFacetsAndChildren();
+            while (kids.hasNext()) {
+                UIComponent kid = (UIComponent) kids.next();
+                kid.processValidators(context);
+            }
+            app.publishEvent(context, PostValidateEvent.class, this);
+        } finally {
+            popComponentFromEL(context);
         }
-        app.publishEvent(context, PostValidateEvent.class, this);
-        popComponentFromEL(context);
-
     }
 
 
@@ -1102,15 +1282,17 @@ public abstract class UIComponentBase extends UIComponent {
 
         pushComponentToEL(context, null);
 
-        // Process all facets and children of this component
-        Iterator kids = getFacetsAndChildren();
-        while (kids.hasNext()) {
-            UIComponent kid = (UIComponent) kids.next();
-            kid.processUpdates(context);
+        try {
+            // Process all facets and children of this component
+            Iterator kids = getFacetsAndChildren();
+            while (kids.hasNext()) {
+                UIComponent kid = (UIComponent) kids.next();
+                kid.processUpdates(context);
 
+            }
+        } finally {
+            popComponentFromEL(context);
         }
-        popComponentFromEL(context);
-        
     }
 
     private static final int MY_STATE = 0;
@@ -1132,55 +1314,55 @@ public abstract class UIComponentBase extends UIComponent {
 
         pushComponentToEL(context, null);
 
-        // Process this component itself
-        stateStruct[MY_STATE] = saveState(context);
-
-        // determine if we have any children to store
-        int count = this.getChildCount() + this.getFacetCount();
-        if (count > 0) {
-
-            // this arraylist will store state
-            List<Object> stateList = new ArrayList<Object>(count);
-
-            // if we have children, add them to the stateList
-            if (this.getChildCount() > 0) {
-                Iterator kids = getChildren().iterator();
-                UIComponent kid;
-                while (kids.hasNext()) {
-                    kid = (UIComponent) kids.next();
-                    if (!kid.isTransient()) {
-                        stateList.add(kid.processSaveState(context));
-                        popComponentFromEL(context);
+        try {
+            // Process this component itself
+            stateStruct[MY_STATE] = saveState(context);
+
+            // determine if we have any children to store
+            int count = this.getChildCount() + this.getFacetCount();
+            if (count > 0) {
+
+                // this arraylist will store state
+                List<Object> stateList = new ArrayList<Object>(count);
+
+                // if we have children, add them to the stateList
+                if (this.getChildCount() > 0) {
+                    Iterator kids = getChildren().iterator();
+                    UIComponent kid;
+                    while (kids.hasNext()) {
+                        kid = (UIComponent) kids.next();
+                        if (!kid.isTransient()) {
+                            stateList.add(kid.processSaveState(context));
+                        }
                     }
                 }
-            }
-
-            pushComponentToEL(context, null);
 
-            // if we have facets, add them to the stateList
-            if (this.getFacetCount() > 0) {
-                Iterator myFacets = getFacets().entrySet().iterator();
-                UIComponent facet;
-                Object facetState;
-                Object[] facetSaveState;
-                Map.Entry entry;
-                while (myFacets.hasNext()) {
-                    entry = (Map.Entry) myFacets.next();
-                    facet = (UIComponent) entry.getValue();
-                    if (!facet.isTransient()) {
-                        facetState = facet.processSaveState(context);
-                        popComponentFromEL(context);
-                        facetSaveState = new Object[2];
-                        facetSaveState[0] = entry.getKey();
-                        facetSaveState[1] = facetState;
-                        stateList.add(facetSaveState);
+                // if we have facets, add them to the stateList
+                if (this.getFacetCount() > 0) {
+                    Iterator myFacets = getFacets().entrySet().iterator();
+                    UIComponent facet;
+                    Object facetState;
+                    Object[] facetSaveState;
+                    Map.Entry entry;
+                    while (myFacets.hasNext()) {
+                        entry = (Map.Entry) myFacets.next();
+                        facet = (UIComponent) entry.getValue();
+                        if (!facet.isTransient()) {
+                            facetState = facet.processSaveState(context);
+                            facetSaveState = new Object[2];
+                            facetSaveState[0] = entry.getKey();
+                            facetSaveState[1] = facetState;
+                            stateList.add(facetSaveState);
+                        }
                     }
                 }
-            }
 
-            // finally, capture the stateList and replace the original,
-            // EMPTY_OBJECT_ARRAY Object array
-            childState = stateList.toArray();
+                // finally, capture the stateList and replace the original,
+                // EMPTY_OBJECT_ARRAY Object array
+                childState = stateList.toArray();
+            }
+        } finally {
+            popComponentFromEL(context);
         }
 
         stateStruct[CHILD_STATE] = childState;
@@ -1196,49 +1378,51 @@ public abstract class UIComponentBase extends UIComponent {
             throw new NullPointerException();
         }
 
-        Object[] stateStruct = (Object[]) state;
-        Object[] childState = (Object[]) stateStruct[CHILD_STATE];
+        pushComponentToEL(context, null);
 
-        // Process this component itself
-        restoreState(context, stateStruct[MY_STATE]);
+        try {
+            Object[] stateStruct = (Object[]) state;
+            Object[] childState = (Object[]) stateStruct[CHILD_STATE];
 
-        int i = 0;
+            // Process this component itself
+            restoreState(context, stateStruct[MY_STATE]);
 
-        // Process all the children of this component
-        if (this.getChildCount() > 0) {
-            for (UIComponent kid : getChildren()) {
-                if (kid.isTransient()) {
-                    continue;
-                }
-                Object currentState = childState[i++];
-                if (currentState == null) {
-                    continue;
+            int i = 0;
+
+            // Process all the children of this component
+            if (this.getChildCount() > 0) {
+                for (UIComponent kid : getChildren()) {
+                    if (kid.isTransient()) {
+                        continue;
+                    }
+                    Object currentState = childState[i++];
+                    if (currentState == null) {
+                        continue;
+                    }
+                    kid.processRestoreState(context, currentState);
                 }
-                pushComponentToEL(context, null);
-                kid.processRestoreState(context, currentState);
-                popComponentFromEL(context);
-            }
-        }
-
-        // process all of the facets of this component
-        if (this.getFacetCount() > 0) {
-            int facetsSize = getFacets().size();
-            int j = 0;
-            Object[] facetSaveState;
-            String facetName;
-            UIComponent facet;
-            Object facetState;
-            while (j < facetsSize) {
-                if (null != (facetSaveState = (Object[]) childState[i++])) {
-                    facetName = (String) facetSaveState[0];
-                    facetState = facetSaveState[1];
-                    facet = getFacets().get(facetName);
-                    pushComponentToEL(context, null);
-                    facet.processRestoreState(context, facetState);
-                    popComponentFromEL(context);
+            }
+
+            // process all of the facets of this component
+            if (this.getFacetCount() > 0) {
+                int facetsSize = getFacets().size();
+                int j = 0;
+                Object[] facetSaveState;
+                String facetName;
+                UIComponent facet;
+                Object facetState;
+                while (j < facetsSize) {
+                    if (null != (facetSaveState = (Object[]) childState[i++])) {
+                        facetName = (String) facetSaveState[0];
+                        facetState = facetSaveState[1];
+                        facet = getFacets().get(facetName);
+                        facet.processRestoreState(context, facetState);
+                    }
+                    ++j;
                 }
-                ++j;
             }
+        } finally {
+            popComponentFromEL(context);
         }
     }
 
@@ -1348,10 +1532,9 @@ public abstract class UIComponentBase extends UIComponent {
         }
     }
 
-    private Object[] values;
 
     public Object saveState(FacesContext context) {
-
+        Object[] values = null;
         if (context == null) {
             throw new NullPointerException();
         }
@@ -1404,7 +1587,7 @@ public abstract class UIComponentBase extends UIComponent {
                 values[4] = stateHelper.saveState(context);
             }
             values[5] = id;
-
+            
             return (values);
         }
     }
@@ -1419,7 +1602,7 @@ public abstract class UIComponentBase extends UIComponent {
         if (state == null) {
             return;
         }
-        values = (Object[]) state;
+        Object[] values = (Object[]) state;
 
         if (values[0] != null) {
             if (listeners == null) {
@@ -2014,9 +2197,10 @@ public abstract class UIComponentBase extends UIComponent {
                     // assume the behaviors have already been populated by
                     // execution of the template.  Process the state in the
                     // same order that the names were saved.
-                    List<ClientBehavior> existingBehaviors =
-                          behaviors.get(names[i]);
-                    restoreBehaviors(context, existingBehaviors, (Object[]) attachedBehaviors[i]);
+                    if (behaviors != null) {
+                        List<ClientBehavior> existingBehaviors = behaviors.get(names[i]);
+                        restoreBehaviors(context, existingBehaviors, (Object[]) attachedBehaviors[i]);
+                    }
                 }
                 return behaviors;
             }
@@ -2049,7 +2233,11 @@ public abstract class UIComponentBase extends UIComponent {
             // passing in the current state.  If it's not, just ignore
             // it and move along.
             if (behavior instanceof StateHolder) {
-                ((StateHolder) behavior).restoreState(ctx, state[i]);
+            		if (state[i] instanceof StateHolderSaver) {
+            			((StateHolderSaver)state[i]).restore(ctx);
+            		} else {
+            			((StateHolder) behavior).restoreState(ctx, state[i]);
+            		}
             }
         }
     }
@@ -2559,8 +2747,8 @@ public abstract class UIComponentBase extends UIComponent {
 
         public UIComponent remove(int index) {
             UIComponent child = get(index);
-            super.remove(index);
             child.setParent(null);
+            super.remove(index);
             return (child);
         }
 
@@ -2570,8 +2758,10 @@ public abstract class UIComponentBase extends UIComponent {
                 throw new NullPointerException();
             }
 
-            if (super.remove(element)) {
+            if (super.indexOf(element) != -1) {
                 element.setParent(null);
+            }            
+            if (super.remove(element)) {
                 return (true);
             } else {
                 return (false);
diff --git a/jsf-api/src/main/java/javax/faces/component/UIData.java b/jsf-api/src/main/java/javax/faces/component/UIData.java
index db9dcd0..7ff5fd9 100644
--- a/jsf-api/src/main/java/javax/faces/component/UIData.java
+++ b/jsf-api/src/main/java/javax/faces/component/UIData.java
@@ -1,1950 +1,2506 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package javax.faces.component;
-
-import javax.el.ValueExpression;
-import javax.faces.FacesException;
-import javax.faces.application.Application;
-import javax.faces.application.FacesMessage;
-import javax.faces.component.visit.VisitCallback;
-import javax.faces.component.visit.VisitContext;
-import javax.faces.component.visit.VisitHint;
-import javax.faces.component.visit.VisitResult;
-import javax.faces.context.FacesContext;
-import javax.faces.el.ValueBinding;
-import javax.faces.event.AbortProcessingException;
-import javax.faces.event.FacesEvent;
-import javax.faces.event.FacesListener;
-import javax.faces.event.PhaseId;
-import javax.faces.event.PostValidateEvent;
-import javax.faces.event.PreValidateEvent;
-import javax.faces.model.ArrayDataModel;
-import javax.faces.model.DataModel;
-import javax.faces.model.ListDataModel;
-import javax.faces.model.ResultDataModel;
-import javax.faces.model.ResultSetDataModel;
-import javax.faces.model.ScalarDataModel;
-import javax.servlet.jsp.jstl.sql.Result;
-
-import java.io.IOException;
-import java.io.Serializable;
-import java.sql.ResultSet;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-import java.util.Iterator;
-
-
-
-// ------------------------------------------------------------- Private Classes
-// Private class to represent saved state information
-/**
- * <p><strong>UIData</strong> is a {@link UIComponent} that supports data
- * binding to a collection of data objects represented by a {@link DataModel}
- * instance, which is the current value of this component itself (typically
- * established via a {@link ValueExpression}). During iterative processing over
- * the rows of data in the data model, the object for the current row is exposed
- * as a request attribute under the key specified by the <code>var</code>
- * property.</p>
- * <p/>
- * <p>Only children of type {@link UIColumn} should be processed by renderers
- * associated with this component.</p>
- * <p/>
- * <p>By default, the <code>rendererType</code> property is set to
- * <code>javax.faces.Table</code>.  This value can be changed by calling the
- * <code>setRendererType()</code> method.</p>
- */
-
-public class UIData extends UIComponentBase
-      implements NamingContainer, UniqueIdVendor {
-
-    // ------------------------------------------------------ Manifest Constants
-
-
-    /**
-     * <p>The standard component type for this component.</p>
-     */
-    public static final String COMPONENT_TYPE = "javax.faces.Data";
-
-
-    /**
-     * <p>The standard component family for this component.</p>
-     */
-    public static final String COMPONENT_FAMILY = "javax.faces.Data";
-
-    // ------------------------------------------------------------ Constructors
-
-
-    /**
-     * <p>Create a new {@link UIData} instance with default property
-     * values.</p>
-     */
-    public UIData() {
-
-        super();
-        setRendererType("javax.faces.Table");
-
-    }
-
-    // ------------------------------------------------------ Instance Variables
-
-
-    /**
-     * Properties that are tracked by state saving.
-     */
-    enum PropertyKeys {
-        /**
-         * <p>The first row number (zero-relative) to be displayed.</p>
-         */
-        first,
-
-        /**
-         * <p>The zero-relative index of the current row number, or -1 for no
-         * current row association.</p>
-         */
-        rowIndex,
-
-        /**
-         * <p>The number of rows to display, or zero for all remaining rows in the
-         * table.</p>
-         */
-        rows,
-
-        /**
-         * <p>This map contains <code>SavedState</code> instances for each
-         * descendant component, keyed by the client identifier of the descendant.
-         * Because descendant client identifiers will contain the
-         * <code>rowIndex</code> value of the parent, per-row state information is
-         * actually preserved.</p>
-         */
-        saved,
-
-        /**
-         * <p>The local value of this {@link UIComponent}.</p>
-         */
-        value,
-
-        /**
-         * <p>The request scope attribute under which the data object for the
-         * current row will be exposed when iterating.</p>
-         */
-        var,
-
-        /**
-         * <p>Last id vended by {@link UIData#createUniqueId(javax.faces.context.FacesContext, String)}.</p>
-         */
-        lastId
-    }
-
-
-    /**
-     * <p>The {@link DataModel} associated with this component, lazily
-     * instantiated if requested.  This object is not part of the saved and
-     * restored state of the component.</p>
-     */
-    private DataModel model = null;
-
-
-    /**
-     * <p> During iteration through the rows of this table, This ivar is used to
-     * store the previous "var" value for this instance.  When the row iteration
-     * is complete, this value is restored to the request map.
-     */
-    private Object oldVar;
-
-
-    /**
-     * <p>Holds the base client ID that will be used to generate per-row
-     * client IDs (this will be null if this UIData is nested within another).</p>
-     *
-     * <p>This is not part of the component state.</p>
-     */
-    private String baseClientId = null;
-
-
-    /**
-     * <p> Length of the cached <code>baseClientId</code> plus one for
-     * the {@link UINamingContainer#getSeparatorChar}. </p>
-     *
-     * <p>This is not part of the component state.</p>
-     */
-    private int baseClientIdLength;
-
-
-    /**
-     * <p>StringBuilder used to build per-row client IDs.</p>
-     *
-     * <p>This is not part of the component state.</p>
-     */
-    private StringBuilder clientIdBuilder = null;
-
-
-    /**
-     * <p>Flag indicating whether or not this UIData instance is nested
-     * within another UIData instance</p>
-     *
-     * <p>This is not part of the component state.</p>
-     */
-    private Boolean isNested = null;
-
-
-    // -------------------------------------------------------------- Properties
-
-
-    public String getFamily() {
-
-        return (COMPONENT_FAMILY);
-
-    }
-
-
-    /**
-     * <p>Return the zero-relative row number of the first row to be
-     * displayed.</p>
-     */
-    public int getFirst() {
-
-        return (Integer) getStateHelper().eval(PropertyKeys.first, 0);
-
-    }
-
-
-    /**
-     * <p>Set the zero-relative row number of the first row to be
-     * displayed.</p>
-     *
-     * @param first New first row number
-     *
-     * @throws IllegalArgumentException if <code>first</code> is negative
-     */
-    public void setFirst(int first) {
-
-        if (first < 0) {
-            throw new IllegalArgumentException(String.valueOf(first));
-        }
-        getStateHelper().put(PropertyKeys.first, first);
-
-    }
-
-
-    /**
-     * <p>Return the footer facet of this component (if any).  A convenience
-     * method for <code>getFacet("footer")</code>.</p>
-     */
-    public UIComponent getFooter() {
-
-        return getFacet("footer");
-
-    }
-
-
-    /**
-     * <p>Set the footer facet of this component.  A convenience method for
-     * <code>getFacets().put("footer", footer)</code>.</p>
-     *
-     * @param footer the new footer facet
-     *
-     * @throws NullPointerException if <code>footer</code> is <code>null</code>
-     */
-    public void setFooter(UIComponent footer) {
-
-        getFacets().put("footer", footer);
-
-    }
-
-
-    /**
-     * <p>Return the header facet of this component (if any).  A convenience
-     * method for <code>getFacet("header")</code>.</p>
-     */
-    public UIComponent getHeader() {
-
-        return getFacet("header");
-
-    }
-
-
-    /**
-     * <p>Set the header facet of this component.  A convenience method for
-     * <code>getFacets().put("header", header)</code>.</p>
-     *
-     * @param header the new header facet
-     *
-     * @throws NullPointerException if <code>header</code> is <code>null</code>
-     */
-    public void setHeader(UIComponent header) {
-
-        getFacets().put("header", header);
-
-    }
-
-
-    /**
-     * <p>Return a flag indicating whether there is <code>rowData</code>
-     * available at the current <code>rowIndex</code>.  If no
-     * <code>wrappedData</code> is available, return <code>false</code>.</p>
-     *
-     * @throws FacesException if an error occurs getting the row availability
-     */
-    public boolean isRowAvailable() {
-
-        return (getDataModel().isRowAvailable());
-
-    }
-
-
-    /**
-     * <p>Return the number of rows in the underlying data model.  If the number
-     * of available rows is unknown, return -1.</p>
-     *
-     * @throws FacesException if an error occurs getting the row count
-     */
-    public int getRowCount() {
-
-        return (getDataModel().getRowCount());
-
-    }
-
-
-    /**
-     * <p>Return the data object representing the data for the currently
-     * selected row index, if any.</p>
-     *
-     * @throws FacesException           if an error occurs getting the row data
-     * @throws IllegalArgumentException if now row data is available at the
-     *                                  currently specified row index
-     */
-    public Object getRowData() {
-
-        return (getDataModel().getRowData());
-
-    }
-
-
-    /**
-     * <p>Return the zero-relative index of the currently selected row.  If we
-     * are not currently positioned on a row, return -1.  This property is
-     * <strong>not</strong> enabled for value binding expressions.</p>
-     *
-     * @throws FacesException if an error occurs getting the row index
-     */
-    public int getRowIndex() {
-
-        return (Integer) getStateHelper().eval(PropertyKeys.rowIndex, -1);
-
-    }
-
-
-    /**
-     * <p>Set the zero relative index of the current row, or -1 to indicate that
-     * no row is currently selected, by implementing the following algorithm.
-     * It is possible to set the row index at a value for which the underlying
-     * data collection does not contain any row data.  Therefore, callers may
-     * use the <code>isRowAvailable()</code> method to detect whether row data
-     * will be available for use by the <code>getRowData()</code> method.</p>
-     *</p>
-     * <ul>
-     * <li>Save current state information for all descendant components (as
-     *     described below).
-     * <li>Store the new row index, and pass it on to the {@link DataModel}
-     *     associated with this {@link UIData} instance.</li>
-     * <li>If the new <code>rowIndex</code> value is -1:
-     *     <ul>
-     *     <li>If the <code>var</code> property is not null,
-     *         remove the corresponding request scope attribute (if any).</li>
-     *     <li>Reset the state information for all descendant components
-     *         (as described below).</li>
-     *     </ul></li>
-     * <li>If the new <code>rowIndex</code> value is not -1:
-     *     <ul>
-     *     <li>If the <code>var</code> property is not null, call
-     *         <code>getRowData()</code> and expose the resulting data object
-     *         as a request scope attribute whose key is the <code>var</code>
-     *         property value.</li>
-     *     <li>Reset the state information for all descendant components
-     *         (as described below).
-     *     </ul></li>
-     * </ul>
-     *
-     * <p>To save current state information for all descendant components,
-     * {@link UIData} must maintain per-row information for each descendant
-     * as follows:<p>
-     * <ul>
-     * <li>If the descendant is an instance of <code>EditableValueHolder</code>, save
-     *     the state of its <code>localValue</code> property.</li>
-     * <li>If the descendant is an instance of <code>EditableValueHolder</code>,
-     *     save the state of the <code>localValueSet</code> property.</li>
-     * <li>If the descendant is an instance of <code>EditableValueHolder</code>, save
-     *     the state of the <code>valid</code> property.</li>
-     * <li>If the descendant is an instance of <code>EditableValueHolder</code>,
-     *     save the state of the <code>submittedValue</code> property.</li>
-     * </ul>
-     *
-     * <p>To restore current state information for all descendant components,
-     * {@link UIData} must reference its previously stored information for the
-     * current <code>rowIndex</code> and call setters for each descendant
-     * as follows:</p>
-     * <ul>
-     * <li>If the descendant is an instance of <code>EditableValueHolder</code>,
-     *     restore the <code>value</code> property.</li>
-     * <li>If the descendant is an instance of <code>EditableValueHolder</code>,
-     *     restore the state of the <code>localValueSet</code> property.</li>
-     * <li>If the descendant is an instance of <code>EditableValueHolder</code>,
-     *     restore the state of the <code>valid</code> property.</li>
-     * <li>If the descendant is an instance of <code>EditableValueHolder</code>,
-     *     restore the state of the <code>submittedValue</code> property.</li>
-     * </ul>
-     *
-     * @param rowIndex The new row index value, or -1 for no associated row
-     *
-     * @throws FacesException if an error occurs setting the row index
-     * @throws IllegalArgumentException if <code>rowIndex</code>
-     *  is less than -1
-     */
-    public void setRowIndex(int rowIndex) {
-
-        // Save current state for the previous row index
-        saveDescendantState();
-
-        // Update to the new row index        
-        //this.rowIndex = rowIndex;
-        getStateHelper().put(PropertyKeys.rowIndex, rowIndex);
-        DataModel localModel = getDataModel();
-        localModel.setRowIndex(rowIndex);
-        
-        // if rowIndex is -1, clear the cache
-        if (rowIndex == -1) {
-            setDataModel(null);
-        }
-        
-        // Clear or expose the current row data as a request scope attribute
-        String var = (String) getStateHelper().get(PropertyKeys.var);
-        if (var != null) {
-            Map<String, Object> requestMap =
-                  getFacesContext().getExternalContext().getRequestMap();
-            if (rowIndex == -1) {
-                oldVar = requestMap.remove(var);
-            } else if (isRowAvailable()) {
-                requestMap.put(var, getRowData());
-            } else {
-                requestMap.remove(var);
-                if (null != oldVar) {
-                    requestMap.put(var, oldVar);
-                    oldVar = null;
-                }
-            }
-        }
-
-        // Reset current state information for the new row index
-        restoreDescendantState();
-
-    }
-
-
-    /**
-     * <p>Return the number of rows to be displayed, or zero for all remaining
-     * rows in the table.  The default value of this property is zero.</p>
-     */
-    public int getRows() {
-
-
-        return (Integer) getStateHelper().eval(PropertyKeys.rows, 0);
-
-    }
-
-
-    /**
-     * <p>Set the number of rows to be displayed, or zero for all remaining rows
-     * in the table.</p>
-     *
-     * @param rows New number of rows
-     *
-     * @throws IllegalArgumentException if <code>rows</code> is negative
-     */
-    public void setRows(int rows) {
-
-        if (rows < 0) {
-            throw new IllegalArgumentException(String.valueOf(rows));
-        }
-        getStateHelper().put(PropertyKeys.rows, rows);
-
-    }
-
-
-    /**
-     * <p>Return the request-scope attribute under which the data object for the
-     * current row will be exposed when iterating.  This property is
-     * <strong>not</strong> enabled for value binding expressions.</p>
-     */
-    public String getVar() {
-
-        return (String) getStateHelper().get(PropertyKeys.var);
-
-    }
-
-
-    /**
-     * <p>Set the request-scope attribute under which the data object for the
-     * current row wil be exposed when iterating.</p>
-     *
-     * @param var The new request-scope attribute name
-     */
-    public void setVar(String var) {
-
-        getStateHelper().put(PropertyKeys.var, var);
-
-    }
-
-    // ----------------------------------------------------- StateHolder Methods
-
-
-
-
-    /**
-     * <p>Return the value of the UIData.  This value must either be
-     * be of type {@link DataModel}, or a type that can be adapted
-     * into a {@link DataModel}.  <code>UIData</code> will automatically
-     * adapt the following types:</p>
-     * <ul>
-     * <li>Arrays</li>
-     * <li><code>java.util.List</code></li>
-     * <li><code>java.sql.ResultSet</code></li>
-     * <li><code>javax.servlet.jsp.jstl.sql.Result</code></li>
-     * </ul>
-     * <p>All other types will be adapted using the {@link ScalarDataModel}
-     * class, which will treat the object as a single row of data.</p>
-     */
-    public Object getValue() {
-
-        return getStateHelper().eval(PropertyKeys.value);
-
-    }
-
-
-    /**
-     * <p>Set the value of the <code>UIData</code>.  This value must either be
-     * be of type {@link DataModel}, or a type that can be adapted into a {@link
-     * DataModel}.</p>
-     *
-     * @param value the new value
-     */
-    public void setValue(Object value) {
-        setDataModel(null);
-        getStateHelper().put(PropertyKeys.value, value);
-
-    }
-
-    // ----------------------------------------------------- UIComponent Methods
-
-
-    /**
-     * <p>If "name" is something other than "value", "var", or "rowIndex", rely
-     * on the superclass conversion from <code>ValueBinding</code> to
-     * <code>ValueExpression</code>.</p>
-     *
-     * @param name    Name of the attribute or property for which to set a
-     *                {@link ValueBinding}
-     * @param binding The {@link ValueBinding} to set, or <code>null</code> to
-     *                remove any currently set {@link ValueBinding}
-     *
-     * @throws IllegalArgumentException if <code>name</code> is one of
-     *                                  <code>id</code>, <code>parent</code>,
-     *                                  <code>var</code>, or <code>rowIndex</code>
-     * @throws NullPointerException     if <code>name</code> is <code>null</code>
-     * @deprecated This has been replaced by {@link #setValueExpression(java.lang.String,
-     *javax.el.ValueExpression)}.
-     */
-    public void setValueBinding(String name, ValueBinding binding) {
-
-        if ("value".equals(name)) {
-            setDataModel(null);
-        } else if ("var".equals(name) || "rowIndex".equals(name)) {
-            throw new IllegalArgumentException();
-        }
-        super.setValueBinding(name, binding);
-
-    }
-
-    /**
-     * <p>Set the {@link ValueExpression} used to calculate the value for the
-     * specified attribute or property name, if any.  In addition, if a {@link
-     * ValueExpression} is set for the <code>value</code> property, remove any
-     * synthesized {@link DataModel} for the data previously bound to this
-     * component.</p>
-     *
-     * @param name    Name of the attribute or property for which to set a
-     *                {@link ValueExpression}
-     * @param binding The {@link ValueExpression} to set, or <code>null</code>
-     *                to remove any currently set {@link ValueExpression}
-     *
-     * @throws IllegalArgumentException if <code>name</code> is one of
-     *                                  <code>id</code>, <code>parent</code>,
-     *                                  <code>var</code>, or <code>rowIndex</code>
-     * @throws NullPointerException     if <code>name</code> is <code>null</code>
-     * @since 1.2
-     */
-    public void setValueExpression(String name, ValueExpression binding) {
-
-        if ("value".equals(name)) {
-            this.model = null;
-        } else if ("var".equals(name) || "rowIndex".equals(name)) {
-            throw new IllegalArgumentException();
-        }
-        super.setValueExpression(name, binding);
-
-    }
-
-    /**
-     * <p>Return a client identifier for this component that includes the
-     * current value of the <code>rowIndex</code> property, if it is not set to
-     * -1.  This implies that multiple calls to <code>getClientId()</code> may
-     * return different results, but ensures that child components can
-     * themselves generate row-specific client identifiers (since {@link UIData}
-     * is a {@link NamingContainer}).</p>
-     *
-     * @throws NullPointerException if <code>context</code> is <code>null</code>
-     */
-    public String getClientId(FacesContext context) {
-
-        if (context == null) {
-            throw new NullPointerException();
-        }
-
-        // If baseClientId and clientIdBuilder are both null, this is the
-        // first time that getClientId() has been called.
-        // If we're not nested within another UIData, then:
-        //   - create a new StringBuilder assigned to clientIdBuilder containing
-        //   our client ID.
-        //   - toString() the builder - this result will be our baseClientId
-        //     for the duration of the component
-        //   - append UINamingContainer.getSeparatorChar() to the builder
-        //  If we are nested within another UIData, then:
-        //   - create an empty StringBuilder that will be used to build
-        //     this instance's ID
-        if (baseClientId == null && clientIdBuilder == null) {
-            if (!isNestedWithinUIData()) {
-                clientIdBuilder = new StringBuilder(super.getClientId(context));
-                baseClientId = clientIdBuilder.toString();
-                baseClientIdLength = (baseClientId.length() + 1);
-                clientIdBuilder.append(UINamingContainer.getSeparatorChar(context));
-                clientIdBuilder.setLength(baseClientIdLength);
-            } else {
-                clientIdBuilder = new StringBuilder();
-            }
-        }
-        int rowIndex = getRowIndex();
-        if (rowIndex >= 0) {
-            String cid;
-            if (!isNestedWithinUIData()) {
-                // we're not nested, so the clientIdBuilder is already
-                // primed with clientID +
-                // UINamingContainer.getSeparatorChar().  Append the
-                // current rowIndex, and toString() the builder.  reset
-                // the builder to it's primed state.
-                cid = clientIdBuilder.append(rowIndex).toString();
-                clientIdBuilder.setLength(baseClientIdLength);
-            } else {
-                // we're nested, so we have to build the ID from scratch
-                // each time.  Reuse the same clientIdBuilder instance
-                // for each call by resetting the length to 0 after
-                // the ID has been computed.
-                cid = clientIdBuilder.append(super.getClientId(context))
-                      .append(UINamingContainer.getSeparatorChar(context)).append(rowIndex)
-                      .toString();
-                clientIdBuilder.setLength(0);
-            }
-            return (cid);
-        } else {
-            if (!isNestedWithinUIData()) {
-                // Not nested and no row available, so just return our baseClientId
-                return (baseClientId);
-            } else {
-                // nested and no row available, return the result of getClientId().
-                // this is necessary as the client ID will reflect the row that
-                // this table represents
-                return super.getClientId(context);
-            }
-        }
-
-    }
-
-    /**
-     * <p>Override behavior from {@link
-     * UIComponentBase#invokeOnComponent} to provide special care for
-     * positioning the data properly before finding the component and
-     * invoking the callback on it.  If the argument
-     * <code>clientId</code> is equal to <code>this.getClientId()</code>
-     * simply invoke the <code>contextCallback</code>, passing the
-     * <code>context</code> argument and <b>this</b> as arguments, and
-     * return <code>true.</code> If the argument <code>clientId</code>
-     * is not equal to <code>this.getClientId()</code>, inspect each of
-     * the facet children of this <code>UIData</code> instance and for
-     * each one, compare its <code>clientId</code> with the argument
-     * <code>clientId</code>.  If there is a match, invoke the
-     * <code>contextCallback</code>, passing the <code>context</code>
-     * argument and <b>this</b> as arguments, and return
-     * <code>true</code>. Otherwise, attempt to extract a rowIndex from
-     * the <code>clientId</code>.  For example, if the argument
-     * <code>clientId</code> was <code>form:data:3:customerHeader</code>
-     * the rowIndex would be <code>3</code>.  Let this value be called
-     * <code>newIndex</code>. The current rowIndex of this instance must
-     * be saved aside and restored before returning in all cases,
-     * regardless of the outcome of the search or if any exceptions are
-     * thrown in the process.</p>
-     *
-     * <p>The implementation of this method must never return <code>true</code>
-     * if setting the rowIndex of this instance to be equal to
-     * <code>newIndex</code> causes this instance to return <code>false</code>
-     * from {@link #isRowAvailable}.</p>
-     *
-     * @throws NullPointerException {@inheritDoc}
-     * @throws FacesException       {@inheritDoc}  Also throws <code>FacesException</code>
-     *                              if any exception is thrown when deriving the
-     *                              rowIndex from the argument <code>clientId</code>.
-     * @since 1.2
-     */
-    public boolean invokeOnComponent(FacesContext context, String clientId,
-                                     ContextCallback callback)
-          throws FacesException {
-        if (null == context || null == clientId || null == callback) {
-            throw new NullPointerException();
-        }
-
-        String myId = super.getClientId(context);
-        boolean found = false;
-        if (clientId.equals(myId)) {
-            try {
-                callback.invokeContextCallback(context, this);
-                return true;
-            }
-            catch (Exception e) {
-                throw new FacesException(e);
-            }
-        }
-
-        // check the facets, if any, of UIData
-        if (this.getFacetCount() > 0) {
-            for (UIComponent c : this.getFacets().values()) {
-                if (clientId.equals(c.getClientId(context))) {
-                    callback.invokeContextCallback(context, c);
-                    return true;
-                }
-            }
-        }
-
-        // check column level facets, if any
-        if (this.getChildCount() > 0) {
-            for (UIComponent column : this.getChildren()) {
-                if (column instanceof UIColumn) {
-                    if (column.getFacetCount() > 0) {
-                        for (UIComponent facet : column.getFacets().values()) {
-                            if (facet.invokeOnComponent(context, clientId, callback)) {
-                                return true;
-                            }
-                        }
-                    }
-                }
-            }
-        }
-
-        int lastSep, newRow, savedRowIndex = this.getRowIndex();
-        try {
-            char sepChar = UINamingContainer.getSeparatorChar(context);
-            // If we need to strip out the rowIndex from our id
-            // PENDING(edburns): is this safe with respect to I18N?
-            if (myId.endsWith(sepChar + Integer.toString(savedRowIndex, 10))) {
-                lastSep = myId.lastIndexOf(sepChar);
-                assert (-1 != lastSep);
-                myId = myId.substring(0, lastSep);
-            }
-
-            // myId will be something like form:outerData for a non-nested table,
-            // and form:outerData:3:data for a nested table.
-            // clientId will be something like form:outerData:3:outerColumn
-            // for a non-nested table.  clientId will be something like
-            // outerData:3:data:3:input for a nested table.
-            if (clientId.startsWith(myId)) {
-                int preRowIndexSep, postRowIndexSep;
-
-                if (-1 != (preRowIndexSep =
-                      clientId.indexOf(sepChar,
-                                       myId.length()))) {
-                    // Check the length
-                    if (++preRowIndexSep < clientId.length()) {
-                        if (-1 != (postRowIndexSep =
-                              clientId.indexOf(sepChar,
-                                               preRowIndexSep + 1))) {
-                            try {
-                                newRow = Integer
-                                      .valueOf(clientId.substring(preRowIndexSep,
-                                                                  postRowIndexSep))
-                                      .intValue();
-                            } catch (NumberFormatException ex) {
-                                // PENDING(edburns): I18N
-                                String message =
-                                      "Trying to extract rowIndex from clientId \'"
-                                      +
-                                      clientId
-                                      + "\' "
-                                      + ex.getMessage();
-                                throw new NumberFormatException(message);
-                            }
-                            this.setRowIndex(newRow);
-                            if (this.isRowAvailable()) {
-                                found = super.invokeOnComponent(context,
-                                                                clientId,
-                                                                callback);
-                            }
-                        }
-                    }
-                }
-            }
-        }
-        catch (FacesException fe) {
-            throw fe;
-        }
-        catch (Exception e) {
-            throw new FacesException(e);
-        }
-        finally {
-            this.setRowIndex(savedRowIndex);
-        }
-        return found;
-    }
-
-
-    /**
-     * <p>Override the default {@link UIComponentBase#queueEvent} processing to
-     * wrap any queued events in a wrapper so that we can reset the current row
-     * index in <code>broadcast()</code>.</p>
-     *
-     * @param event {@link FacesEvent} to be queued
-     *
-     * @throws IllegalStateException if this component is not a descendant of a
-     *                               {@link UIViewRoot}
-     * @throws NullPointerException  if <code>event</code> is <code>null</code>
-     */
-    public void queueEvent(FacesEvent event) {
-
-        super.queueEvent(new WrapperEvent(this, event, getRowIndex()));
-
-    }
-
-
-    /**
-     * <p>Override the default {@link UIComponentBase#broadcast} processing to
-     * unwrap any wrapped {@link FacesEvent} and reset the current row index,
-     * before the event is actually broadcast.  For events that we did not wrap
-     * (in <code>queueEvent()</code>), default processing will occur.</p>
-     *
-     * @param event The {@link FacesEvent} to be broadcast
-     *
-     * @throws AbortProcessingException Signal the JavaServer Faces
-     *                                  implementation that no further
-     *                                  processing on the current event should
-     *                                  be performed
-     * @throws IllegalArgumentException if the implementation class of this
-     *                                  {@link FacesEvent} is not supported by
-     *                                  this component
-     * @throws NullPointerException     if <code>event</code> is <code>null</code>
-     */
-    public void broadcast(FacesEvent event)
-          throws AbortProcessingException {
-
-        if (!(event instanceof WrapperEvent)) {
-            super.broadcast(event);
-            return;
-        }
-        FacesContext context = FacesContext.getCurrentInstance();
-        // Set up the correct context and fire our wrapped event
-        WrapperEvent revent = (WrapperEvent) event;
-        if (isNestedWithinUIData()) {
-            setDataModel(null);
-        }
-        int oldRowIndex = getRowIndex();
-        setRowIndex(revent.getRowIndex());
-        FacesEvent rowEvent = revent.getFacesEvent();
-        UIComponent source = rowEvent.getComponent();
-        UIComponent compositeParent = null;
-        try {
-            if (!UIComponent.isCompositeComponent(source)) {
-                compositeParent = UIComponent.getCompositeComponentParent(source);
-            }
-            if (compositeParent != null) {
-                compositeParent.pushComponentToEL(context, null);
-            }
-            source.pushComponentToEL(context, null);
-            source.broadcast(rowEvent);
-        } finally {
-            source.popComponentFromEL(context);
-            if (compositeParent != null) {
-                compositeParent.popComponentFromEL(context);
-            }
-        }
-        setRowIndex(oldRowIndex);
-
-    }
-
-    /**
-     * <p>In addition to the default behavior, ensure that any saved per-row
-     * state for our child input components is discarded unless it is needed to
-     * rerender the current page with errors.
-     *
-     * @param context FacesContext for the current request
-     *
-     * @throws IOException          if an input/output error occurs while
-     *                              rendering
-     * @throws NullPointerException if <code>context</code> is <code>null</code>
-     */
-    public void encodeBegin(FacesContext context) throws IOException {
-
-        preEncode(context);
-        super.encodeBegin(context);
-
-    }
-
-
-    /**
-     * <p>Override the default {@link UIComponentBase#processDecodes} processing
-     * to perform the following steps.</p> <ul> <li>If the <code>rendered</code>
-     * property of this {@link UIComponent} is <code>false</code>, skip further
-     * processing.</li> <li>Set the current <code>rowIndex</code> to -1.</li>
-     * <li>Call the <code>processDecodes()</code> method of all facets of this
-     * {@link UIData}, in the order determined by a call to
-     * <code>getFacets().keySet().iterator()</code>.</li> <li>Call the
-     * <code>processDecodes()</code> method of all facets of the {@link
-     * UIColumn} children of this {@link UIData}.</li> <li>Iterate over the set
-     * of rows that were included when this component was rendered (i.e. those
-     * defined by the <code>first</code> and <code>rows</code> properties),
-     * performing the following processing for each row: <ul> <li>Set the
-     * current <code>rowIndex</code> to the appropriate value for this row.</li>
-     * <li>If <code>isRowAvailable()</code> returns <code>true</code>, iterate
-     * over the children components of each {@link UIColumn} child of this
-     * {@link UIData} component, calling the <code>processDecodes()</code>
-     * method for each such child.</li> </ul></li> <li>Set the current
-     * <code>rowIndex</code> to -1.</li> <li>Call the <code>decode()</code>
-     * method of this component.</li> <li>If a <code>RuntimeException</code> is
-     * thrown during decode processing, call {@link FacesContext#renderResponse}
-     * and re-throw the exception.</li> </ul>
-     *
-     * @param context {@link FacesContext} for the current request
-     *
-     * @throws NullPointerException if <code>context</code> is <code>null</code>
-     */
-    public void processDecodes(FacesContext context) {
-
-        if (context == null) {
-            throw new NullPointerException();
-        }
-        if (!isRendered()) {
-            return;
-        }
-
-        pushComponentToEL(context, this);
-        preDecode(context);
-        iterate(context, PhaseId.APPLY_REQUEST_VALUES);
-        decode(context);
-        popComponentFromEL(context);
-
-    }
-
-
-    /**
-     * <p>Override the default {@link UIComponentBase#processValidators}
-     * processing to perform the following steps.</p> <ul> <li>If the
-     * <code>rendered</code> property of this {@link UIComponent} is
-     * <code>false</code>, skip further processing.</li> <li>Set the current
-     * <code>rowIndex</code> to -1.</li> <li>Call the <code>processValidators()</code>
-     * method of all facets of this {@link UIData}, in the order determined by a
-     * call to <code>getFacets().keySet().iterator()</code>.</li> <li>Call the
-     * <code>processValidators()</code> method of all facets of the {@link
-     * UIColumn} children of this {@link UIData}.</li> <li>Iterate over the set
-     * of rows that were included when this component was rendered (i.e. those
-     * defined by the <code>first</code> and <code>rows</code> properties),
-     * performing the following processing for each row: <ul> <li>Set the
-     * current <code>rowIndex</code> to the appropriate value for this row.</li>
-     * <li>If <code>isRowAvailable()</code> returns <code>true</code>, iterate
-     * over the children components of each {@link UIColumn} child of this
-     * {@link UIData} component, calling the <code>processValidators()</code>
-     * method for each such child.</li> </ul></li> <li>Set the current
-     * <code>rowIndex</code> to -1.</li> </ul>
-     *
-     * @param context {@link FacesContext} for the current request
-     *
-     * @throws NullPointerException if <code>context</code> is <code>null</code>
-     */
-    public void processValidators(FacesContext context) {
-
-        if (context == null) {
-            throw new NullPointerException();
-        }
-        if (!isRendered()) {
-            return;
-        }
-        pushComponentToEL(context, this);
-        Application app = context.getApplication();
-        app.publishEvent(context, PreValidateEvent.class, this);
-        preValidate(context);
-        iterate(context, PhaseId.PROCESS_VALIDATIONS);
-        app.publishEvent(context, PostValidateEvent.class, this);
-        popComponentFromEL(context);
-
-    }
-
-
-    /**
-     * <p>Override the default {@link UIComponentBase#processUpdates}
-     * processing to perform the following steps.</p>
-     * <ul>
-     * <li>If the <code>rendered</code> property of this {@link UIComponent}
-     *     is <code>false</code>, skip further processing.</li>
-     * <li>Set the current <code>rowIndex</code> to -1.</li>
-     * <li>Call the <code>processUpdates()</code> method of all facets
-     *     of this {@link UIData}, in the order determined
-     *     by a call to <code>getFacets().keySet().iterator()</code>.</li>
-     * <li>Call the <code>processUpdates()</code> method of all facets
-     *     of the {@link UIColumn} children of this {@link UIData}.</li>
-     * <li>Iterate over the set of rows that were included when this
-     *     component was rendered (i.e. those defined by the <code>first</code>
-     *     and <code>rows</code> properties), performing the following
-     *     processing for each row:
-     *     <ul>
-     *     <li>Set the current <code>rowIndex</code> to the appropriate
-     *         value for this row.</li>
-     *     <li>If <code>isRowAvailable()</code> returns <code>true</code>,
-     *         iterate over the children components of each {@link UIColumn}
-     *         child of this {@link UIData} component, calling the
-     *         <code>processUpdates()</code> method for each such child.</li>
-     *     </ul></li>
-     * <li>Set the current <code>rowIndex</code> to -1.</li>
-     * </ul>
-     *
-     * @param context {@link FacesContext} for the current request
-     *
-     * @throws NullPointerException if <code>context</code> is <code>null</code>
-     */
-    public void processUpdates(FacesContext context) {
-
-        if (context == null) {
-            throw new NullPointerException();
-        }
-        if (!isRendered()) {
-            return;
-        }
-
-        pushComponentToEL(context, this);
-        preUpdate(context);
-        iterate(context, PhaseId.UPDATE_MODEL_VALUES);
-        popComponentFromEL(context);
-        // This is not a EditableValueHolder, so no further processing is required
-
-    }
-
-    public String createUniqueId(FacesContext context, String seed) {
-        Integer i = (Integer) getStateHelper().get(PropertyKeys.lastId);
-        int lastId = ((i != null) ? i : 0);
-        getStateHelper().put(PropertyKeys.lastId,  ++lastId);
-        return UIViewRoot.UNIQUE_ID_PREFIX + (seed == null ? lastId : seed);
-    }
-
-    /**
-     * <p class="changed_added_2_0">Override the behavior in {@link
-     * UIComponent#visitTree} to handle iteration correctly.</p>
-     *
-     * <div class="changed_added_2_0">
-
-     * <p>If the {@link UIComponent#isVisitable} method of this instance
-     * returns <code>false</code>, take no action and return.</p>
-
-     * <p>Call {@link UIComponent#pushComponentToEL} and
-     * invoke the visit callback on this <code>UIData</code> instance as
-     * described in {@link UIComponent#visitTree}.  Let the result of
-     * the invoctaion be <em>visitResult</em>.  If <em>visitResult</em>
-     * is {@link VisitResult#COMPLETE}, take no further action and
-     * return <code>true</code>.  Otherwise, determine if we need to
-     * visit our children.  The default implementation calls {@link
-     * VisitContext#getSubtreeIdsToVisit} passing <code>this</code> as
-     * the argument.  If the result of that call is non-empty, let
-     * <em>doVisitChildren</em> be <code>true</code>.  If
-     * <em>doVisitChildren</em> is <code>true</code> and
-     * <em>visitResult</em> is {@link VisitResult#ACCEPT}, take the
-     * following action.<p>
-
-     * <ul>
-
-     * 	  <li><p>If this component has facets, call {@link
-     * 	  UIComponent#getFacets} on this instance and invoke the
-     * 	  <code>values()</code> method.  For each
-     * 	  <code>UIComponent</code> in the returned <code>Map</code>,
-     * 	  call {@link UIComponent#visitTree}.</p></li>
-
-     * 	  <li><p>If this component has children, for each 
-     * 	  <code>UIColumn</code> child:</p>
-     * 
-     *    <p>Call {@link VisitContext#invokeVisitCallback} on that 
-          <code>UIColumn</code> instance.
-     *    If such a call returns <code>true</code>, terminate visiting and 
-          return <code>true</code> from this method.</p>
-     * 
-     *    <p>If the child <code>UIColumn</code> has facets, call
-     *    {@link UIComponent#visitTree} on each one.</p>
-     *
-     *    <p>Take no action on non-<code>UIColumn</code> children.</p></li>
-     *
-     *    <li><p>Save aside the result of a call to {@link
-     *    #getRowIndex}.</p>
-
-     *    <p>For each child component of this <code>UIData</code> that is
-     *    also an instance of {@link UIColumn}, 
-     *    </p>
-
-     * 	  <p>Iterate over the rows.</p>
-
-     * <ul>
-
-     * 	  <li><p>Let <em>rowsToProcess</em> be the return from {@link
-     * 	  #getRows}.  </p></li>
-
-     * 	  <li><p>Let <em>rowIndex</em> be the return from {@link
-     * 	  #getFirst} - 1.</p></li>
-
-     * 	  <li><p>While the number of rows processed is less than
-     * 	  <em>rowsToProcess</em>, take the following actions.</p>
-
-     * <p>Call {@link #setRowIndex}, passing the current row index.</p>
-
-     * <p>If {@link #isRowAvailable} returns <code>false</code>, take no
-     * further action and return <code>false</code>.</p>
-     *
-     * <p>Call {@link UIComponent#visitTree} on each of the children of this
-     * <code>UIColumn</code> instance.</p>
-
-     *     </li>
-
-     * </ul>
-
-     *    </li>
-
-     * </ul>
-
-     * <p>Call {@link #popComponentFromEL} and restore the saved row
-     * index with a call to {@link #setRowIndex}.</p>
-
-     * <p>Return <code>false</code> to allow the visiting to
-     * continue.</p>
-
-     * </div>
-     *
-     * @param context the <code>VisitContext</code> that provides
-     * context for performing the visit.
-     *
-     * @param callback the callback to be invoked for each node
-     * encountered in the visit.
-
-     * @throws NullPointerException if any of the parameters are
-     * <code>null</code>.
-
-     * 
-     */
-    @Override
-    public boolean visitTree(VisitContext context, 
-                             VisitCallback callback) {
-
-        // First check to see whether we are visitable.  If not
-        // short-circuit out of this subtree, though allow the
-        // visit to proceed through to other subtrees.
-        if (!isVisitable(context))
-            return false;
-
-        FacesContext facesContext = context.getFacesContext();
-        // NOTE: that the visitRows local will be obsolete once the
-        //       appropriate visit hints have been added to the API
-        boolean visitRows = requiresRowIteration(facesContext);
-
-        // Clear out the row index is one is set so that
-        // we start from a clean slate.
-        int oldRowIndex = -1;
-        if (visitRows) {
-            oldRowIndex = getRowIndex();
-            setRowIndex(-1);
-        }
-
-        // Push ourselves to EL
-        pushComponentToEL(facesContext, null);
-
-        try {
-
-            // Visit ourselves.  Note that we delegate to the 
-            // VisitContext to actually perform the visit.
-            VisitResult result = context.invokeVisitCallback(this, callback);
-
-            // If the visit is complete, short-circuit out and end the visit
-            if (result == VisitResult.COMPLETE)
-                return true;
-
-            // Visit children, short-circuiting as necessary
-            // NOTE: that the visitRows parameter will be obsolete once the
-            //       appropriate visit hints have been added to the API
-            if ((result == VisitResult.ACCEPT) && doVisitChildren(context, visitRows)) {
-
-                // First visit facets
-                // NOTE: that the visitRows parameter will be obsolete once the
-                //       appropriate visit hints have been added to the API
-                if (visitFacets(context, callback, visitRows))
-                    return true;
-
-                // Next column facets
-                // NOTE: that the visitRows parameter will be obsolete once the
-                //       appropriate visit hints have been added to the API
-                if (visitColumnsAndColumnFacets(context, callback, visitRows))
-                    return true;
-
-                // And finally, visit rows
-                // NOTE: that the visitRows parameter will be obsolete once the
-                //       appropriate visit hints have been added to the API
-                if (visitRows(context, callback, visitRows))
-                    return true;
-            }
-        }
-        finally {
-            // Clean up - pop EL and restore old row index
-            popComponentFromEL(facesContext);
-            if (visitRows) {
-                setRowIndex(oldRowIndex);
-            }
-        }
-
-        // Return false to allow the visit to continue
-        return false;
-    }
-
-
-    // --------------------------------------------------------- Protected Methods
-
-
-    /**
-     * <p>Return the internal {@link DataModel} object representing the data
-     * objects that we will iterate over in this component's rendering.</p>
-     * <p/>
-     * <p>If the model has been cached by a previous call to {@link
-     * #setDataModel}, return it.  Otherwise call {@link #getValue}.  If the
-     * result is null, create an empty {@link ListDataModel} and return it.  If
-     * the result is an instance of {@link DataModel}, return it.  Otherwise,
-     * adapt the result as described in {@link #getValue} and return it.</p>
-     */
-    protected DataModel getDataModel() {
-
-        // Return any previously cached DataModel instance
-        if (this.model != null) {
-            return (model);
-        }
-
-        // Synthesize a DataModel around our current value if possible
-        Object current = getValue();
-        if (current == null) {
-            setDataModel(new ListDataModel(Collections.EMPTY_LIST));
-        } else if (current instanceof DataModel) {
-            setDataModel((DataModel) current);
-        } else if (current instanceof List) {
-            setDataModel(new ListDataModel((List) current));
-        } else if (Object[].class.isAssignableFrom(current.getClass())) {
-            setDataModel(new ArrayDataModel((Object[]) current));
-        } else if (current instanceof ResultSet) {
-            setDataModel(new ResultSetDataModel((ResultSet) current));
-        } else if (current instanceof Result) {
-            setDataModel(new ResultDataModel((Result) current));
-        } else {
-            setDataModel(new ScalarDataModel(current));
-        }
-        return (model);
-
-    }
-
-    /**
-     * <p>Set the internal DataModel.  This <code>UIData</code> instance must
-     * use the given {@link DataModel} as its internal value representation from
-     * now until the next call to <code>setDataModel</code>.  If the given
-     * <code>DataModel</code> is <code>null</code>, the internal
-     * <code>DataModel</code> must be reset in a manner so that the next call to
-     * {@link #getDataModel} causes lazy instantion of a newly refreshed
-     * <code>DataModel</code>.</p>
-     * <p/>
-     * <p>Subclasses might call this method if they either want to restore the
-     * internal <code>DataModel</code> during the <em>Restore View</em> phase or
-     * if they want to explicitly refresh the current <code>DataModel</code> for
-     * the <em>Render Response</em> phase.</p>
-     *
-     * @param dataModel the new <code>DataModel</code> or <code>null</code> to
-     *                  cause the model to be refreshed.
-     */
-
-    protected void setDataModel(DataModel dataModel) {
-        this.model = dataModel;
-    }
-
-    // ---------------------------------------------------- Private Methods
-
-
-    /**
-     * Called by {@link UIData#visitTree} to determine whether or not the
-     * <code>visitTree</code> implementation should visit the rows of UIData
-     * or by manipulating the row index before visiting the components themselves.
-     *
-     * Once we have the appropriate Visit hints for state saving, this method
-     * will become obsolete.
-     *
-     * @param ctx the <code>FacesContext</code> for the current request
-     *
-     * @return true if row index manipulation is required by the visit to this
-     *  UIData instance
-     */
-    private boolean requiresRowIteration(FacesContext ctx) {
-
-        return (!PhaseId.RESTORE_VIEW.equals(ctx.getCurrentPhaseId()));
-
-    }
-
-
-    // Perform pre-decode initialization work.  Note that this
-    // initialization may be performed either during a normal decode
-    // (ie. processDecodes()) or during a tree visit (ie. visitTree()).
-    private void preDecode(FacesContext context) {
-        setDataModel(null); // Re-evaluate even with server-side state saving
-        Map<String, SavedState> saved =
-              (Map<String, SavedState>) getStateHelper().get(PropertyKeys.saved);
-        if (null == saved || !keepSaved(context)) {
-            //noinspection CollectionWithoutInitialCapacity
-            getStateHelper().remove(PropertyKeys.saved);
-        }
-    }
-
-    // Perform pre-validation initialization work.  Note that this
-    // initialization may be performed either during a normal validation
-    // (ie. processValidators()) or during a tree visit (ie. visitTree()).
-    private void preValidate(FacesContext context) {
-        if (isNestedWithinUIData()) {
-            setDataModel(null);
-        }
-    }
-
-    // Perform pre-update initialization work.  Note that this
-    // initialization may be performed either during normal update
-    // (ie. processUpdates()) or during a tree visit (ie. visitTree()).
-    private void preUpdate(FacesContext context) {
-        if (isNestedWithinUIData()) {
-            setDataModel(null);
-        }
-    }
-
-    // Perform pre-encode initialization work.  Note that this
-    // initialization may be performed either during a normal encode
-    // (ie. encodeBegin()) or during a tree visit (ie. visitTree()).
-    private void preEncode(FacesContext context) {
-        setDataModel(null); // re-evaluate even with server-side state saving
-        if (!keepSaved(context)) {
-            ////noinspection CollectionWithoutInitialCapacity
-            //saved = new HashMap<String, SavedState>();
-            getStateHelper().remove(PropertyKeys.saved);
-        }
-    }
-
-    /**
-     * <p>Perform the appropriate phase-specific processing and per-row
-     * iteration for the specified phase, as follows:
-     * <ul>
-     * <li>Set the <code>rowIndex</code> property to -1, and process the facets
-     *     of this {@link UIData} component exactly once.</li>
-     * <li>Set the <code>rowIndex</code> property to -1, and process the facets
-     *     of the {@link UIColumn} children of this {@link UIData} component
-     *     exactly once.</li>
-     * <li>Iterate over the relevant rows, based on the <code>first</code>
-     *     and <code>row</code> properties, and process the children
-     *     of the {@link UIColumn} children of this {@link UIData} component
-     *     once per row.</li>
-     * </ul>
-     *
-     * @param context {@link FacesContext} for the current request
-     * @param phaseId {@link PhaseId} of the phase we are currently running
-     */
-    private void iterate(FacesContext context, PhaseId phaseId) {
-
-        // Process each facet of this component exactly once
-        setRowIndex(-1);
-        if (getFacetCount() > 0) {
-            for (UIComponent facet : getFacets().values()) {
-                if (phaseId == PhaseId.APPLY_REQUEST_VALUES) {
-                    facet.processDecodes(context);
-                } else if (phaseId == PhaseId.PROCESS_VALIDATIONS) {
-                    facet.processValidators(context);
-                } else if (phaseId == PhaseId.UPDATE_MODEL_VALUES) {
-                    facet.processUpdates(context);
-                } else {
-                    throw new IllegalArgumentException();
-                }
-            }
-        }
-
-        // Process each facet of our child UIColumn components exactly once
-        setRowIndex(-1);
-        if (getChildCount() > 0) {
-            for (UIComponent column : getChildren()) {
-                if (!(column instanceof UIColumn) || !column.isRendered()) {
-                    continue;
-                }
-                if (column.getFacetCount() > 0) {
-                    for (UIComponent columnFacet : column.getFacets().values()) {
-                        if (phaseId == PhaseId.APPLY_REQUEST_VALUES) {
-                            columnFacet.processDecodes(context);
-                        } else if (phaseId == PhaseId.PROCESS_VALIDATIONS) {
-                            columnFacet.processValidators(context);
-                        } else if (phaseId == PhaseId.UPDATE_MODEL_VALUES) {
-                            columnFacet.processUpdates(context);
-                        } else {
-                            throw new IllegalArgumentException();
-                        }
-                    }
-                }
-            }
-        }
-
-        // Iterate over our UIColumn children, once per row
-        int processed = 0;
-        int rowIndex = getFirst() - 1;
-        int rows = getRows();
-
-        while (true) {
-
-            // Have we processed the requested number of rows?
-            if ((rows > 0) && (++processed > rows)) {
-                break;
-            }
-
-            // Expose the current row in the specified request attribute
-            setRowIndex(++rowIndex);
-            if (!isRowAvailable()) {
-                break; // Scrolled past the last row
-            }
-
-            // Perform phase-specific processing as required
-            // on the *children* of the UIColumn (facets have
-            // been done a single time with rowIndex=-1 already)
-            if (getChildCount() > 0) {
-                for (UIComponent kid : getChildren()) {
-                    if (!(kid instanceof UIColumn) || !kid.isRendered()) {
-                        continue;
-                    }
-                    if (kid.getChildCount() > 0) {
-                        for (UIComponent grandkid : kid.getChildren()) {
-                            if (!grandkid.isRendered()) {
-                                continue;
-                            }
-                            if (phaseId == PhaseId.APPLY_REQUEST_VALUES) {
-                                grandkid.processDecodes(context);
-                            } else if (phaseId == PhaseId.PROCESS_VALIDATIONS) {
-                                grandkid.processValidators(context);
-                            } else if (phaseId == PhaseId.UPDATE_MODEL_VALUES) {
-                                grandkid.processUpdates(context);
-                            } else {
-                                throw new IllegalArgumentException();
-                            }
-                        }
-                    }
-                }
-            }
-
-        }
-
-        // Clean up after ourselves
-        setRowIndex(-1);
-
-    }
-
-    // Tests whether we need to visit our children as part of
-    // a tree visit
-    private boolean doVisitChildren(VisitContext context, boolean visitRows) {
-
-        // Just need to check whether there are any ids under this
-        // subtree.  Make sure row index is cleared out since 
-        // getSubtreeIdsToVisit() needs our row-less client id.
-        if (visitRows) {
-            setRowIndex(-1);
-        }
-        Collection<String> idsToVisit = context.getSubtreeIdsToVisit(this);
-        assert(idsToVisit != null);
-
-        // All ids or non-empty collection means we need to visit our children.
-        return (!idsToVisit.isEmpty());
-    }
-
-    // Performs pre-phase initialization before visiting children
-    // (if necessary).
-    private void preVisitChildren(VisitContext visitContext) {
-
-        // If EXECUTE_LIFECYCLE hint is set, we need to do
-        // lifecycle-related initialization before visiting children
-        if (visitContext.getHints().contains(VisitHint.EXECUTE_LIFECYCLE)) {
-            FacesContext facesContext = visitContext.getFacesContext();
-            PhaseId phaseId = facesContext.getCurrentPhaseId();
-
-            if (phaseId == PhaseId.APPLY_REQUEST_VALUES)
-                preDecode(facesContext);
-            else if (phaseId == PhaseId.PROCESS_VALIDATIONS)
-                preValidate(facesContext);
-            else if (phaseId == PhaseId.UPDATE_MODEL_VALUES)
-                preUpdate(facesContext);
-            else if (phaseId == PhaseId.RENDER_RESPONSE)
-                preEncode(facesContext);
-        }
-    }
-
-    // Visit each facet of this component exactly once.
-    private boolean visitFacets(VisitContext context,
-                                VisitCallback callback,
-                                boolean visitRows) {
-
-        if (visitRows) {
-            setRowIndex(-1);
-        }
-        if (getFacetCount() > 0) {
-            for (UIComponent facet : getFacets().values()) {
-                if (facet.visitTree(context, callback))
-                    return true;
-            }
-        }
-
-        return false;
-    }
-
-    // Visit each UIColumn and any facets it may have defined exactly once
-    private boolean visitColumnsAndColumnFacets(VisitContext context,
-                                                VisitCallback callback,
-                                                boolean visitRows) {
-        if (visitRows) {
-            setRowIndex(-1);
-        }
-        if (getChildCount() > 0) {
-            for (UIComponent column : getChildren()) {
-                if (column instanceof UIColumn) {
-                    VisitResult result = context.invokeVisitCallback(column, callback); // visit the column directly
-                    if (result == VisitResult.COMPLETE) {
-                        return true;
-                    }
-                    if (column.getFacetCount() > 0) {
-                        for (UIComponent columnFacet : column.getFacets().values()) {
-                            if (columnFacet.visitTree(context, callback)) {
-                                return true;
-                            }
-                        }
-                    }
-                }
-            }
-        }
-
-        return false;
-    }
-
-    // Visit each column and row
-    private boolean visitRows(VisitContext context,
-                              VisitCallback callback,
-                              boolean visitRows) {
-
-        // Iterate over our UIColumn children, once per row
-        int processed = 0;
-        int rowIndex = 0;
-        int rows = 0;
-        if (visitRows) {
-            rowIndex = getFirst() - 1;
-            rows = getRows();
-        }
-
-        while (true) {
-
-            // Have we processed the requested number of rows?
-            if (visitRows) {
-                if ((rows > 0) && (++processed > rows)) {
-                    break;
-                }
-                // Expose the current row in the specified request attribute
-                setRowIndex(++rowIndex);
-                if (!isRowAvailable()) {
-                    break; // Scrolled past the last row
-                }
-            }
-
-            // Visit as required on the *children* of the UIColumn
-            // (facets have been done a single time with rowIndex=-1 already)
-            if (getChildCount() > 0) {
-                for (UIComponent kid : getChildren()) {
-                    if (!(kid instanceof UIColumn)) {
-                        continue;
-                    }
-                    if (kid.getChildCount() > 0) {
-                    for (UIComponent grandkid : kid.getChildren()) {
-                            if (grandkid.visitTree(context, callback)) {
-                                return true;
-                            }
-                        }
-                    }
-                }
-            }
-
-            if (!visitRows) {
-                break;
-            }
-
-        }
-
-        return false;
-    }
-
-
-    /**
-     * <p>Return <code>true</code> if we need to keep the saved
-     * per-child state information.  This will be the case if any of the
-     * following are true:</p>
-     *
-     * <ul>
-     *
-     * <li>there are messages queued with severity ERROR or FATAL.</li>
-     *
-     * <li>this <code>UIData</code> instance is nested inside of another
-     * <code>UIData</code> instance</li>
-     *
-     * </ul>
-     *
-     * @param context {@link FacesContext} for the current request
-     */
-    private boolean keepSaved(FacesContext context) {
-
-        return (contextHasErrorMessages(context) || isNestedWithinUIData());
-
-    }
-
-
-    private Boolean isNestedWithinUIData() {
-        if (isNested == null) {
-            UIComponent parent = this;
-            while (null != (parent = parent.getParent())) {
-                if (parent instanceof UIData) {
-                    isNested = Boolean.TRUE;
-                    break;
-                }
-            }
-            if (isNested == null) {
-                isNested = Boolean.FALSE;
-            }
-            return isNested;
-        } else {
-            return isNested;
-        }
-    }
-
-
-    private boolean contextHasErrorMessages(FacesContext context) {
-
-        FacesMessage.Severity sev = context.getMaximumSeverity();
-        return (sev != null && (FacesMessage.SEVERITY_ERROR.compareTo(sev) >= 0));
-
-    }
-
-
-    /**
-     * <p>Restore state information for all descendant components, as described
-     * for <code>setRowIndex()</code>.</p>
-     */
-    private void restoreDescendantState() {
-
-        FacesContext context = getFacesContext();
-        if (getChildCount() > 0) {
-            for (UIComponent kid : getChildren()) {
-                if (kid instanceof UIColumn) {
-                    restoreDescendantState(kid, context);
-                }
-            }
-        }
-
-    }
-
-
-    /**
-     * <p>Restore state information for the specified component and its
-     * descendants.</p>
-     *
-     * @param component Component for which to restore state information
-     * @param context   {@link FacesContext} for the current request
-     */
-    private void restoreDescendantState(UIComponent component,
-                                        FacesContext context) {
-
-        // Reset the client identifier for this component
-        String id = component.getId();
-        component.setId(id); // Forces client id to be reset
-        Map<String, SavedState> saved = (Map<String,SavedState>)
-            getStateHelper().get(PropertyKeys.saved);
-        // Restore state for this component (if it is a EditableValueHolder)
-        if (component instanceof EditableValueHolder) {
-            EditableValueHolder input = (EditableValueHolder) component;
-            String clientId = component.getClientId(context);
-
-            SavedState state = saved.get(clientId);
-            if (state == null) {
-                state = new SavedState();
-            }
-            input.setValue(state.getValue());
-            input.setValid(state.isValid());
-            input.setSubmittedValue(state.getSubmittedValue());
-            // This *must* be set after the call to setValue(), since
-            // calling setValue() always resets "localValueSet" to true.
-            input.setLocalValueSet(state.isLocalValueSet());
-        } else if (component instanceof UIForm) {
-            UIForm form = (UIForm) component;
-            String clientId = component.getClientId(context);
-            SavedState state = saved.get(clientId);
-            if (state == null) {
-                state = new SavedState();
-            }
-            form.setSubmitted(state.getSubmitted());
-            state.setSubmitted(form.isSubmitted());
-        }
-
-        // Restore state for children of this component
-        if (component.getChildCount() > 0) {
-            for (UIComponent kid : component.getChildren()) {
-                restoreDescendantState(kid, context);
-            }
-        }
-
-        // Restore state for facets of this component
-        if (component.getFacetCount() > 0) {
-            for (UIComponent facet : component.getFacets().values()) {
-                restoreDescendantState(facet, context);
-            }
-        }
-
-    }
-
-
-    /**
-     * <p>Save state information for all descendant components, as described for
-     * <code>setRowIndex()</code>.</p>
-     */
-    private void saveDescendantState() {
-
-        FacesContext context = getFacesContext();
-        if (getChildCount() > 0) {
-            for (UIComponent kid : getChildren()) {
-                if (kid instanceof UIColumn) {
-                    saveDescendantState(kid, context);
-                }
-            }
-        }
-
-    }
-
-
-    /**
-     * <p>Save state information for the specified component and its
-     * descendants.</p>
-     *
-     * @param component Component for which to save state information
-     * @param context   {@link FacesContext} for the current request
-     */
-    private void saveDescendantState(UIComponent component,
-                                     FacesContext context) {
-
-        // Save state for this component (if it is a EditableValueHolder)
-        Map<String, SavedState> saved = (Map<String, SavedState>)
-              getStateHelper().get(PropertyKeys.saved);
-        if (component instanceof EditableValueHolder) {
-            EditableValueHolder input = (EditableValueHolder) component;
-            SavedState state = null;
-            String clientId = component.getClientId(context);
-            if (saved == null) {
-                state = new SavedState();
-                getStateHelper().put(PropertyKeys.saved, clientId, state);
-            }
-            if (state == null) {
-                state = saved.get(clientId);
-                if (state == null) {
-                    state = new SavedState();
-                    //saved.put(clientId, state);
-                    getStateHelper().put(PropertyKeys.saved, clientId, state);
-                }
-            }
-            state.setValue(input.getLocalValue());
-            state.setValid(input.isValid());
-            state.setSubmittedValue(input.getSubmittedValue());
-            state.setLocalValueSet(input.isLocalValueSet());
-        } else if (component instanceof UIForm) {
-            UIForm form = (UIForm) component;
-            String clientId = component.getClientId(context);
-            SavedState state = null;
-            if (saved == null) {
-                state = new SavedState();
-                getStateHelper().put(PropertyKeys.saved, clientId, state);
-            }
-            if (state == null) {
-                state = saved.get(clientId);
-                if (state == null) {
-                    state = new SavedState();
-                    //saved.put(clientId, state);
-                    getStateHelper().put(PropertyKeys.saved, clientId, state);
-                }
-            }
-            state.setSubmitted(form.isSubmitted());
-        }
-
-        // Save state for children of this component
-        if (component.getChildCount() > 0) {
-            for (UIComponent uiComponent : component.getChildren()) {
-                saveDescendantState(uiComponent, context);
-            }
-        }
-
-        // Save state for facets of this component
-        if (component.getFacetCount() > 0) {
-            for (UIComponent facet : component.getFacets().values()) {
-                saveDescendantState(facet, context);
-            }
-        }
-
-    }
-
-}
- at SuppressWarnings({"SerializableHasSerializationMethods",
-      "NonSerializableFieldInSerializableClass"})
-class SavedState implements Serializable {
-
-    private static final long serialVersionUID = 2920252657338389849L;
-    private Object submittedValue;
-    private boolean submitted;
-
-    Object getSubmittedValue() {
-        return (this.submittedValue);
-    }
-
-    void setSubmittedValue(Object submittedValue) {
-        this.submittedValue = submittedValue;
-    }
-
-    private boolean valid = true;
-
-    boolean isValid() {
-        return (this.valid);
-    }
-
-    void setValid(boolean valid) {
-        this.valid = valid;
-    }
-
-    private Object value;
-
-    Object getValue() {
-        return (this.value);
-    }
-
-    public void setValue(Object value) {
-        this.value = value;
-    }
-
-    private boolean localValueSet;
-
-    boolean isLocalValueSet() {
-        return (this.localValueSet);
-    }
-
-    public void setLocalValueSet(boolean localValueSet) {
-        this.localValueSet = localValueSet;
-    }
-
-    public boolean getSubmitted() {
-        return this.submitted;
-    }
-
-    public void setSubmitted(boolean submitted) {
-        this.submitted = submitted;
-    }
-
-    public String toString() {
-        return ("submittedValue: " + submittedValue +
-                " value: " + value +
-                " localValueSet: " + localValueSet);
-    }
-
-}
-
-
-// Private class to wrap an event with a row index
-class WrapperEvent extends FacesEvent {
-
-
-    public WrapperEvent(UIComponent component, FacesEvent event, int rowIndex) {
-        super(component);
-        this.event = event;
-        this.rowIndex = rowIndex;
-    }
-
-    private FacesEvent event = null;
-    private int rowIndex = -1;
-
-    public FacesEvent getFacesEvent() {
-        return (this.event);
-    }
-
-    public int getRowIndex() {
-        return (this.rowIndex);
-    }
-
-    public PhaseId getPhaseId() {
-        return (this.event.getPhaseId());
-    }
-
-    public void setPhaseId(PhaseId phaseId) {
-        this.event.setPhaseId(phaseId);
-    }
-
-    public boolean isAppropriateListener(FacesListener listener) {
-        return (false);
-    }
-
-    public void processListener(FacesListener listener) {
-        throw new IllegalStateException();
-    }
-
-
-}
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package javax.faces.component;
+
+import java.io.IOException;
+import java.io.Serializable;
+import java.sql.ResultSet;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import javax.el.ValueExpression;
+import javax.faces.FacesException;
+import javax.faces.application.Application;
+import javax.faces.application.FacesMessage;
+import javax.faces.application.StateManager;
+import javax.faces.component.visit.VisitCallback;
+import javax.faces.component.visit.VisitContext;
+import javax.faces.component.visit.VisitHint;
+import javax.faces.component.visit.VisitResult;
+import javax.faces.context.FacesContext;
+import javax.faces.el.ValueBinding;
+import javax.faces.event.AbortProcessingException;
+import javax.faces.event.FacesEvent;
+import javax.faces.event.FacesListener;
+import javax.faces.event.PhaseId;
+import javax.faces.event.PostValidateEvent;
+import javax.faces.event.PreValidateEvent;
+import javax.faces.model.ArrayDataModel;
+import javax.faces.model.CollectionDataModel;
+import javax.faces.model.DataModel;
+import javax.faces.model.ListDataModel;
+import javax.faces.model.ResultDataModel;
+import javax.faces.model.ResultSetDataModel;
+import javax.faces.model.ScalarDataModel;
+import javax.servlet.jsp.jstl.sql.Result;
+
+
+
+// ------------------------------------------------------------- Private Classes
+// Private class to represent saved state information
+
+/**
+ * <p><strong class="changed_modified_2_0_rev_a
+ * changed_modified_2_1 changed_modified_2_2">UIData</strong> is a {@link UIComponent} that
+ * supports data binding to a collection of data objects represented by
+ * a {@link DataModel} instance, which is the current value of this
+ * component itself (typically established via a {@link
+ * ValueExpression}). During iterative processing over the rows of data
+ * in the data model, the object for the current row is exposed as a
+ * request attribute under the key specified by the <code>var</code>
+ * property.</p> <p/> <p>Only children of type {@link UIColumn} should
+ * be processed by renderers associated with this component.</p> <p/>
+ * <p>By default, the <code>rendererType</code> property is set to
+ * <code>javax.faces.Table</code>.  This value can be changed by calling
+ * the <code>setRendererType()</code> method.</p>
+ */
+
+public class UIData extends UIComponentBase
+      implements NamingContainer, UniqueIdVendor {
+
+    // ------------------------------------------------------ Manifest Constants
+
+
+    /**
+     * <p>The standard component type for this component.</p>
+     */
+    public static final String COMPONENT_TYPE = "javax.faces.Data";
+
+
+    /**
+     * <p>The standard component family for this component.</p>
+     */
+    public static final String COMPONENT_FAMILY = "javax.faces.Data";
+
+    // ------------------------------------------------------------ Constructors
+
+
+    /**
+     * <p>Create a new {@link UIData} instance with default property
+     * values.</p>
+     */
+    public UIData() {
+
+        super();
+        setRendererType("javax.faces.Table");
+
+    }
+
+    // ------------------------------------------------------ Instance Variables
+
+
+    /**
+     * Properties that are tracked by state saving.
+     */
+    enum PropertyKeys {
+        /**
+         * <p>The first row number (zero-relative) to be displayed.</p>
+         */
+        first,
+
+        /**
+         * <p>The zero-relative index of the current row number, or -1 for no
+         * current row association.</p>
+         */
+        rowIndex,
+
+        /**
+         * <p>The number of rows to display, or zero for all remaining rows in the
+         * table.</p>
+         */
+        rows,
+
+        /**
+         * <p>This map contains <code>SavedState</code> instances for each
+         * descendant component, keyed by the client identifier of the descendant.
+         * Because descendant client identifiers will contain the
+         * <code>rowIndex</code> value of the parent, per-row state information is
+         * actually preserved.</p>
+         */
+        saved,
+
+        /**
+         * <p>The local value of this {@link UIComponent}.</p>
+         */
+        value,
+
+        /**
+         * <p>The request scope attribute under which the data object for the
+         * current row will be exposed when iterating.</p>
+         */
+        var,
+
+        /**
+         * <p>Last id vended by {@link UIData#createUniqueId(javax.faces.context.FacesContext, String)}.</p>
+         */
+        lastId,
+     
+        /**
+         * 
+         */
+        rowStatePreserved
+    }
+
+
+    /**
+     * <p>The {@link DataModel} associated with this component, lazily
+     * instantiated if requested.  This object is not part of the saved and
+     * restored state of the component.</p>
+     */
+    private DataModel model = null;
+
+
+    /**
+     * <p> During iteration through the rows of this table, This ivar is used to
+     * store the previous "var" value for this instance.  When the row iteration
+     * is complete, this value is restored to the request map.
+     */
+    private Object oldVar;
+
+
+    /**
+     * <p>Holds the base client ID that will be used to generate per-row
+     * client IDs (this will be null if this UIData is nested within another).</p>
+     *
+     * <p>This is not part of the component state.</p>
+     */
+    private String baseClientId = null;
+
+
+    /**
+     * <p> Length of the cached <code>baseClientId</code> plus one for
+     * the {@link UINamingContainer#getSeparatorChar}. </p>
+     *
+     * <p>This is not part of the component state.</p>
+     */
+    private int baseClientIdLength;
+
+
+    /**
+     * <p>StringBuilder used to build per-row client IDs.</p>
+     *
+     * <p>This is not part of the component state.</p>
+     */
+    private StringBuilder clientIdBuilder = null;
+
+
+    /**
+     * <p>Flag indicating whether or not this UIData instance is nested
+     * within another UIData instance</p>
+     *
+     * <p>This is not part of the component state.</p>
+     */
+    private Boolean isNested = null;
+
+    private Map<String, Object> _rowDeltaStates = new HashMap<String, Object>();
+    private Map<String, Object> _rowTransientStates = new HashMap<String, Object>();
+    
+    private Object _initialDescendantFullComponentState = null;
+
+    // -------------------------------------------------------------- Properties
+
+
+    public String getFamily() {
+
+        return (COMPONENT_FAMILY);
+
+    }
+
+
+    /**
+     * <p>Return the zero-relative row number of the first row to be
+     * displayed.</p>
+     */
+    public int getFirst() {
+
+        return (Integer) getStateHelper().eval(PropertyKeys.first, 0);
+
+    }
+
+
+    /**
+     * <p>Set the zero-relative row number of the first row to be
+     * displayed.</p>
+     *
+     * @param first New first row number
+     *
+     * @throws IllegalArgumentException if <code>first</code> is negative
+     */
+    public void setFirst(int first) {
+
+        if (first < 0) {
+            throw new IllegalArgumentException(String.valueOf(first));
+        }
+        getStateHelper().put(PropertyKeys.first, first);
+
+    }
+
+
+    /**
+     * <p>Return the footer facet of this component (if any).  A convenience
+     * method for <code>getFacet("footer")</code>.</p>
+     */
+    public UIComponent getFooter() {
+
+        return getFacet("footer");
+
+    }
+
+
+    /**
+     * <p>Set the footer facet of this component.  A convenience method for
+     * <code>getFacets().put("footer", footer)</code>.</p>
+     *
+     * @param footer the new footer facet
+     *
+     * @throws NullPointerException if <code>footer</code> is <code>null</code>
+     */
+    public void setFooter(UIComponent footer) {
+
+        getFacets().put("footer", footer);
+
+    }
+
+
+    /**
+     * <p>Return the header facet of this component (if any).  A convenience
+     * method for <code>getFacet("header")</code>.</p>
+     */
+    public UIComponent getHeader() {
+
+        return getFacet("header");
+
+    }
+
+
+    /**
+     * <p>Set the header facet of this component.  A convenience method for
+     * <code>getFacets().put("header", header)</code>.</p>
+     *
+     * @param header the new header facet
+     *
+     * @throws NullPointerException if <code>header</code> is <code>null</code>
+     */
+    public void setHeader(UIComponent header) {
+
+        getFacets().put("header", header);
+
+    }
+
+
+    /**
+     * <p>Return a flag indicating whether there is <code>rowData</code>
+     * available at the current <code>rowIndex</code>.  If no
+     * <code>wrappedData</code> is available, return <code>false</code>.</p>
+     *
+     * @throws FacesException if an error occurs getting the row availability
+     */
+    public boolean isRowAvailable() {
+
+        return (getDataModel().isRowAvailable());
+
+    }
+
+
+    /**
+     * <p>Return the number of rows in the underlying data model.  If the number
+     * of available rows is unknown, return -1.</p>
+     *
+     * @throws FacesException if an error occurs getting the row count
+     */
+    public int getRowCount() {
+
+        return (getDataModel().getRowCount());
+
+    }
+
+
+    /**
+     * <p>Return the data object representing the data for the currently
+     * selected row index, if any.</p>
+     *
+     * @throws FacesException           if an error occurs getting the row data
+     * @throws IllegalArgumentException if now row data is available at the
+     *                                  currently specified row index
+     */
+    public Object getRowData() {
+
+        return (getDataModel().getRowData());
+
+    }
+
+
+    /**
+     * <p>Return the zero-relative index of the currently selected row.  If we
+     * are not currently positioned on a row, return -1.  This property is
+     * <strong>not</strong> enabled for value binding expressions.</p>
+     *
+     * @throws FacesException if an error occurs getting the row index
+     */
+    public int getRowIndex() {
+
+        return (Integer) getStateHelper().eval(PropertyKeys.rowIndex, -1);
+
+    }
+
+
+    /**
+     * <p><span class="changed_modified_2_1">Set</span> the zero
+     * relative index of the current row, or -1 to indicate that no row
+     * is currently selected, by implementing the following algorithm.
+     * It is possible to set the row index at a value for which the
+     * underlying data collection does not contain any row data.
+     * Therefore, callers may use the <code>isRowAvailable()</code>
+     * method to detect whether row data will be available for use by
+     * the <code>getRowData()</code> method.</p>
+
+     * <p class="changed_added_2_1">To support transient state among
+     * descendents, please consult the specification for {@link
+     * #setRowStatePreserved}, which details the requirements
+     * for <code>setRowIndex()</code> when the
+     * <code>rowStatePreserved</code> JavaBeans property is set
+     * to <code>true</code>.</p>
+
+     * <ul>
+     * <li>Save current state information for all descendant components (as
+     *     described below).
+     * <li>Store the new row index, and pass it on to the {@link DataModel}
+     *     associated with this {@link UIData} instance.</li>
+     * <li>If the new <code>rowIndex</code> value is -1:
+     *     <ul>
+     *     <li>If the <code>var</code> property is not null,
+     *         remove the corresponding request scope attribute (if any).</li>
+     *     <li>Reset the state information for all descendant components
+     *         (as described below).</li>
+     *     </ul></li>
+     * <li>If the new <code>rowIndex</code> value is not -1:
+     *     <ul>
+     *     <li>If the <code>var</code> property is not null, call
+     *         <code>getRowData()</code> and expose the resulting data object
+     *         as a request scope attribute whose key is the <code>var</code>
+     *         property value.</li>
+     *     <li>Reset the state information for all descendant components
+     *         (as described below).
+     *     </ul></li>
+     * </ul>
+     *
+     * <p>To save current state information for all descendant components,
+     * {@link UIData} must maintain per-row information for each descendant
+     * as follows:<p>
+     * <ul>
+     * <li>If the descendant is an instance of <code>EditableValueHolder</code>, save
+     *     the state of its <code>localValue</code> property.</li>
+     * <li>If the descendant is an instance of <code>EditableValueHolder</code>,
+     *     save the state of the <code>localValueSet</code> property.</li>
+     * <li>If the descendant is an instance of <code>EditableValueHolder</code>, save
+     *     the state of the <code>valid</code> property.</li>
+     * <li>If the descendant is an instance of <code>EditableValueHolder</code>,
+     *     save the state of the <code>submittedValue</code> property.</li>
+     * </ul>
+     *
+     * <p>To restore current state information for all descendant components,
+     * {@link UIData} must reference its previously stored information for the
+     * current <code>rowIndex</code> and call setters for each descendant
+     * as follows:</p>
+     * <ul>
+     * <li>If the descendant is an instance of <code>EditableValueHolder</code>,
+     *     restore the <code>value</code> property.</li>
+     * <li>If the descendant is an instance of <code>EditableValueHolder</code>,
+     *     restore the state of the <code>localValueSet</code> property.</li>
+     * <li>If the descendant is an instance of <code>EditableValueHolder</code>,
+     *     restore the state of the <code>valid</code> property.</li>
+     * <li>If the descendant is an instance of <code>EditableValueHolder</code>,
+     *     restore the state of the <code>submittedValue</code> property.</li>
+     * </ul>
+     *
+     * @param rowIndex The new row index value, or -1 for no associated row
+     *
+     * @throws FacesException if an error occurs setting the row index
+     * @throws IllegalArgumentException if <code>rowIndex</code>
+     *  is less than -1
+     */
+    public void setRowIndex(int rowIndex)
+    {
+        if (isRowStatePreserved())
+        {
+            setRowIndexRowStatePreserved(rowIndex);
+        }
+        else
+        {
+            setRowIndexWithoutRowStatePreserved(rowIndex);
+        }
+    }
+
+    private void setRowIndexWithoutRowStatePreserved(int rowIndex){
+        // Save current state for the previous row index
+        saveDescendantState();
+
+        // Update to the new row index        
+        //this.rowIndex = rowIndex;
+        getStateHelper().put(PropertyKeys.rowIndex, rowIndex);
+        DataModel localModel = getDataModel();
+        localModel.setRowIndex(rowIndex);
+        
+        // if rowIndex is -1, clear the cache
+        if (rowIndex == -1) {
+            setDataModel(null);
+        }
+        
+        // Clear or expose the current row data as a request scope attribute
+        String var = (String) getStateHelper().get(PropertyKeys.var);
+        if (var != null) {
+            Map<String, Object> requestMap =
+                  getFacesContext().getExternalContext().getRequestMap();
+            if (rowIndex == -1) {
+                oldVar = requestMap.remove(var);
+            } else if (isRowAvailable()) {
+                requestMap.put(var, getRowData());
+            } else {
+                requestMap.remove(var);
+                if (null != oldVar) {
+                    requestMap.put(var, oldVar);
+                    oldVar = null;
+                }
+            }
+        }
+
+        // Reset current state information for the new row index
+        restoreDescendantState();
+
+    }
+    
+    private void setRowIndexRowStatePreserved(int rowIndex)
+    {
+        if (rowIndex < -1)
+        {
+            throw new IllegalArgumentException("rowIndex is less than -1");
+        }
+
+        if (getRowIndex() == rowIndex)
+        {
+            return;
+        }
+
+        FacesContext facesContext = getFacesContext();
+
+        if (_initialDescendantFullComponentState != null)
+        {
+            //Just save the row
+            Map<String, Object> sm = saveFullDescendantComponentStates(facesContext, null, getChildren().iterator(), false);
+            if (sm != null && !sm.isEmpty())
+            {
+                _rowDeltaStates.put(getContainerClientId(facesContext), sm);
+            }
+            if (getRowIndex() != -1)
+            {
+                _rowTransientStates.put(getContainerClientId(facesContext), saveTransientDescendantComponentStates(facesContext, null, getChildren().iterator(), false));
+            }
+        }
+
+        // Update to the new row index        
+        //this.rowIndex = rowIndex;
+        getStateHelper().put(PropertyKeys.rowIndex, rowIndex);
+        DataModel localModel = getDataModel();
+        localModel.setRowIndex(rowIndex);
+        
+        // if rowIndex is -1, clear the cache
+        if (rowIndex == -1) {
+            setDataModel(null);
+        }
+        
+        // Clear or expose the current row data as a request scope attribute
+        String var = (String) getStateHelper().get(PropertyKeys.var);
+        if (var != null) {
+            Map<String, Object> requestMap =
+                  getFacesContext().getExternalContext().getRequestMap();
+            if (rowIndex == -1) {
+                oldVar = requestMap.remove(var);
+            } else if (isRowAvailable()) {
+                requestMap.put(var, getRowData());
+            } else {
+                requestMap.remove(var);
+                if (null != oldVar) {
+                    requestMap.put(var, oldVar);
+                    oldVar = null;
+                }
+            }
+        }
+
+        if (_initialDescendantFullComponentState != null)
+        {
+            Object rowState = _rowDeltaStates.get(getContainerClientId(facesContext));
+            if (rowState == null)
+            {
+                //Restore as original
+                restoreFullDescendantComponentStates(facesContext, getChildren().iterator(), _initialDescendantFullComponentState, false);
+            }
+            else
+            {
+                //Restore first original and then delta
+                restoreFullDescendantComponentDeltaStates(facesContext, getChildren().iterator(), rowState, _initialDescendantFullComponentState, false);
+            }
+            if (getRowIndex() == -1)
+            {
+                restoreTransientDescendantComponentStates(facesContext, getChildren().iterator(), null, false);
+            }
+            else
+            {
+                rowState = _rowTransientStates.get(getContainerClientId(facesContext));
+                if (rowState == null)
+                {
+                    restoreTransientDescendantComponentStates(facesContext, getChildren().iterator(), null, false);
+                }
+                else
+                {
+                    restoreTransientDescendantComponentStates(facesContext, getChildren().iterator(), (Map<String, Object>) rowState, false);
+                }
+            }
+        }
+    }
+
+    /**
+     * <p>Return the number of rows to be displayed, or zero for all remaining
+     * rows in the table.  The default value of this property is zero.</p>
+     */
+    public int getRows() {
+
+
+        return (Integer) getStateHelper().eval(PropertyKeys.rows, 0);
+
+    }
+
+
+    /**
+     * <p>Set the number of rows to be displayed, or zero for all remaining rows
+     * in the table.</p>
+     *
+     * @param rows New number of rows
+     *
+     * @throws IllegalArgumentException if <code>rows</code> is negative
+     */
+    public void setRows(int rows) {
+
+        if (rows < 0) {
+            throw new IllegalArgumentException(String.valueOf(rows));
+        }
+        getStateHelper().put(PropertyKeys.rows, rows);
+
+    }
+
+
+    /**
+     * <p>Return the request-scope attribute under which the data object for the
+     * current row will be exposed when iterating.  This property is
+     * <strong>not</strong> enabled for value binding expressions.</p>
+     */
+    public String getVar() {
+
+        return (String) getStateHelper().get(PropertyKeys.var);
+
+    }
+
+
+    /**
+     * <p>Set the request-scope attribute under which the data object for the
+     * current row wil be exposed when iterating.</p>
+     *
+     * @param var The new request-scope attribute name
+     */
+    public void setVar(String var) {
+
+        getStateHelper().put(PropertyKeys.var, var);
+
+    }
+    
+    /**
+     * <p class="changed_added_2_1">Return the value of the
+     * <code>rowStatePreserved</code> JavaBeans property. See
+     * {@link #setRowStatePreserved}.</p>
+     *
+     * @since 2.1
+     */
+
+    public boolean isRowStatePreserved()
+    {
+        Boolean b = (Boolean) getStateHelper().get(PropertyKeys.rowStatePreserved);
+        return b == null ? false : b.booleanValue(); 
+    }
+
+    /**
+     * <p class="changed_added_2_1">If this property is set to
+     * <code>true</code>, the <code>UIData</code> must take steps to
+     * ensure that modifications to its iterated children will be
+     * preserved on a per-row basis.  This allows applications to modify
+     * component properties, such as the style-class, for a specific
+     * row, rather than having such modifications apply to all rows.</p>
+
+     * <div class="changed_added_2_1">
+
+     * <p>To accomplish this, <code>UIData</code> must call {@link
+     * StateHolder#saveState} and {@link
+     * TransientStateHolder#saveTransientState} on its children to
+     * capture their state on exiting each row.  When re-entering the
+     * row, {@link StateHolder#restoreState} and {@link
+     * TransientStateHolder#restoreTransientState} must be called in
+     * order to reinitialize the children to the correct state for the
+     * new row.  All of this action must take place during the
+     * processing of {@link #setRowIndex}.</p>
+
+     * <p>Users should consider enabling this feature for cases where
+     * it is necessary to modify properties of <code>UIData</code>'s
+     * children in a row-specific way.  Note, however, that row-level
+     * state saving/restoring does add overhead.  As such, this feature
+     * should be used judiciously.</p>
+
+     * </div>
+     *
+     *
+     * @since 2.1
+     */
+    
+    public void setRowStatePreserved(boolean preserveComponentState)
+    {
+        getStateHelper().put(PropertyKeys.rowStatePreserved, preserveComponentState);
+    }
+
+
+    // ----------------------------------------------------- StateHolder Methods
+
+
+
+
+    /**
+     * <p><span class="changed_modified_2_2">Return</span> the value of the UIData.  This value must either be
+     * be of type {@link DataModel}, or a type that can be adapted
+     * into a {@link DataModel}.  <code>UIData</code> will automatically
+     * adapt the following types:</p>
+     * <ul>
+     * <li>Arrays</li>
+     * <li><code>java.util.List</code></li>
+     * <li><code>java.sql.ResultSet</code></li>
+     * <li><code>javax.servlet.jsp.jstl.sql.Result</code>
+     * <li class="changed_added_2_2"><code>java.util.Collection</code></li>
+     * </ul>
+     * <p>All other types will be adapted using the {@link ScalarDataModel}
+     * class, which will treat the object as a single row of data.</p>
+     */
+    public Object getValue() {
+
+        return getStateHelper().eval(PropertyKeys.value);
+
+    }
+
+
+    /**
+     * <p>Set the value of the <code>UIData</code>.  This value must either be
+     * be of type {@link DataModel}, or a type that can be adapted into a {@link
+     * DataModel}.</p>
+     *
+     * @param value the new value
+     */
+    public void setValue(Object value) {
+        setDataModel(null);
+        getStateHelper().put(PropertyKeys.value, value);
+
+    }
+
+    // ----------------------------------------------------- UIComponent Methods
+
+
+    /**
+     * <p>If "name" is something other than "value", "var", or "rowIndex", rely
+     * on the superclass conversion from <code>ValueBinding</code> to
+     * <code>ValueExpression</code>.</p>
+     *
+     * @param name    Name of the attribute or property for which to set a
+     *                {@link ValueBinding}
+     * @param binding The {@link ValueBinding} to set, or <code>null</code> to
+     *                remove any currently set {@link ValueBinding}
+     *
+     * @throws IllegalArgumentException if <code>name</code> is one of
+     *                                  <code>id</code>, <code>parent</code>,
+     *                                  <code>var</code>, or <code>rowIndex</code>
+     * @throws NullPointerException     if <code>name</code> is <code>null</code>
+     * @deprecated This has been replaced by {@link #setValueExpression(java.lang.String,
+     *javax.el.ValueExpression)}.
+     */
+    public void setValueBinding(String name, ValueBinding binding) {
+
+        if ("value".equals(name)) {
+            setDataModel(null);
+        } else if ("var".equals(name) || "rowIndex".equals(name)) {
+            throw new IllegalArgumentException();
+        }
+        super.setValueBinding(name, binding);
+
+    }
+
+    /**
+     * <p>Set the {@link ValueExpression} used to calculate the value for the
+     * specified attribute or property name, if any.  In addition, if a {@link
+     * ValueExpression} is set for the <code>value</code> property, remove any
+     * synthesized {@link DataModel} for the data previously bound to this
+     * component.</p>
+     *
+     * @param name    Name of the attribute or property for which to set a
+     *                {@link ValueExpression}
+     * @param binding The {@link ValueExpression} to set, or <code>null</code>
+     *                to remove any currently set {@link ValueExpression}
+     *
+     * @throws IllegalArgumentException if <code>name</code> is one of
+     *                                  <code>id</code>, <code>parent</code>,
+     *                                  <code>var</code>, or <code>rowIndex</code>
+     * @throws NullPointerException     if <code>name</code> is <code>null</code>
+     * @since 1.2
+     */
+    public void setValueExpression(String name, ValueExpression binding) {
+
+        if ("value".equals(name)) {
+            this.model = null;
+        } else if ("var".equals(name) || "rowIndex".equals(name)) {
+            throw new IllegalArgumentException();
+        }
+        super.setValueExpression(name, binding);
+
+    }
+
+    /**
+     * <p>Return a client identifier for this component that includes the
+     * current value of the <code>rowIndex</code> property, if it is not set to
+     * -1.  This implies that multiple calls to <code>getClientId()</code> may
+     * return different results, but ensures that child components can
+     * themselves generate row-specific client identifiers (since {@link UIData}
+     * is a {@link NamingContainer}).</p>
+     *
+     * @throws NullPointerException if <code>context</code> is <code>null</code>
+     */
+    public String getClientId(FacesContext context) {
+
+        if (context == null) {
+            throw new NullPointerException();
+        }
+
+        // If baseClientId and clientIdBuilder are both null, this is the
+        // first time that getClientId() has been called.
+        // If we're not nested within another UIData, then:
+        //   - create a new StringBuilder assigned to clientIdBuilder containing
+        //   our client ID.
+        //   - toString() the builder - this result will be our baseClientId
+        //     for the duration of the component
+        //   - append UINamingContainer.getSeparatorChar() to the builder
+        //  If we are nested within another UIData, then:
+        //   - create an empty StringBuilder that will be used to build
+        //     this instance's ID
+        if (baseClientId == null && clientIdBuilder == null) {
+            if (!isNestedWithinIterator()) {
+                clientIdBuilder = new StringBuilder(super.getClientId(context));
+                baseClientId = clientIdBuilder.toString();
+                baseClientIdLength = (baseClientId.length() + 1);
+                clientIdBuilder.append(UINamingContainer.getSeparatorChar(context));
+                clientIdBuilder.setLength(baseClientIdLength);
+            } else {
+                clientIdBuilder = new StringBuilder();
+            }
+        }
+        int rowIndex = getRowIndex();
+        if (rowIndex >= 0) {
+            String cid;
+            if (!isNestedWithinIterator()) {
+                // we're not nested, so the clientIdBuilder is already
+                // primed with clientID +
+                // UINamingContainer.getSeparatorChar().  Append the
+                // current rowIndex, and toString() the builder.  reset
+                // the builder to it's primed state.
+                cid = clientIdBuilder.append(rowIndex).toString();
+                clientIdBuilder.setLength(baseClientIdLength);
+            } else {
+                // we're nested, so we have to build the ID from scratch
+                // each time.  Reuse the same clientIdBuilder instance
+                // for each call by resetting the length to 0 after
+                // the ID has been computed.
+                cid = clientIdBuilder.append(super.getClientId(context))
+                      .append(UINamingContainer.getSeparatorChar(context)).append(rowIndex)
+                      .toString();
+                clientIdBuilder.setLength(0);
+            }
+            return (cid);
+        } else {
+            if (!isNestedWithinIterator()) {
+                // Not nested and no row available, so just return our baseClientId
+                return (baseClientId);
+            } else {
+                // nested and no row available, return the result of getClientId().
+                // this is necessary as the client ID will reflect the row that
+                // this table represents
+                return super.getClientId(context);
+            }
+        }
+
+    }
+
+    /**
+     * <p>Override behavior from {@link
+     * UIComponentBase#invokeOnComponent} to provide special care for
+     * positioning the data properly before finding the component and
+     * invoking the callback on it.  If the argument
+     * <code>clientId</code> is equal to <code>this.getClientId()</code>
+     * simply invoke the <code>contextCallback</code>, passing the
+     * <code>context</code> argument and <b>this</b> as arguments, and
+     * return <code>true.</code> If the argument <code>clientId</code>
+     * is not equal to <code>this.getClientId()</code>, inspect each of
+     * the facet children of this <code>UIData</code> instance and for
+     * each one, compare its <code>clientId</code> with the argument
+     * <code>clientId</code>.  If there is a match, invoke the
+     * <code>contextCallback</code>, passing the <code>context</code>
+     * argument and <b>this</b> as arguments, and return
+     * <code>true</code>. Otherwise, attempt to extract a rowIndex from
+     * the <code>clientId</code>.  For example, if the argument
+     * <code>clientId</code> was <code>form:data:3:customerHeader</code>
+     * the rowIndex would be <code>3</code>.  Let this value be called
+     * <code>newIndex</code>. The current rowIndex of this instance must
+     * be saved aside and restored before returning in all cases,
+     * regardless of the outcome of the search or if any exceptions are
+     * thrown in the process.</p>
+     *
+     * <p>The implementation of this method must never return <code>true</code>
+     * if setting the rowIndex of this instance to be equal to
+     * <code>newIndex</code> causes this instance to return <code>false</code>
+     * from {@link #isRowAvailable}.</p>
+     *
+     * @throws NullPointerException {@inheritDoc}
+     * @throws FacesException       {@inheritDoc}  Also throws <code>FacesException</code>
+     *                              if any exception is thrown when deriving the
+     *                              rowIndex from the argument <code>clientId</code>.
+     * @since 1.2
+     */
+    public boolean invokeOnComponent(FacesContext context, String clientId,
+                                     ContextCallback callback)
+          throws FacesException {
+        if (null == context || null == clientId || null == callback) {
+            throw new NullPointerException();
+        }
+
+        String myId = super.getClientId(context);
+        boolean found = false;
+        if (clientId.equals(myId)) {
+            try {
+                this.pushComponentToEL(context, compositeParent);
+                callback.invokeContextCallback(context, this);
+                return true;
+            }
+            catch (Exception e) {
+                throw new FacesException(e);
+            }
+            finally {
+                this.popComponentFromEL(context);
+            }
+        }
+
+        // check the facets, if any, of UIData
+        if (this.getFacetCount() > 0) {
+            for (UIComponent c : this.getFacets().values()) {
+                if (clientId.equals(c.getClientId(context))) {
+                    callback.invokeContextCallback(context, c);
+                    return true;
+                }
+            }
+        }
+
+        // check column level facets, if any
+        if (this.getChildCount() > 0) {
+            for (UIComponent column : this.getChildren()) {
+                if (column instanceof UIColumn) {
+                    if (column.getFacetCount() > 0) {
+                        for (UIComponent facet : column.getFacets().values()) {
+                            if (facet.invokeOnComponent(context, clientId, callback)) {
+                                return true;
+                            }
+                        }
+                    }
+                }
+            }
+        }
+
+        /*
+         * Check if we are looking for a component that is part of the 
+         * actual skeleton.
+         */
+        if (this.getChildCount() > 0) {
+            for (UIComponent column : this.getChildren()) {
+                if (column instanceof UIColumn) {
+                    if (column.invokeOnComponent(context, clientId, callback)) {
+                        return true;
+                    }
+                }
+            }
+        }
+
+        int lastSep, newRow, savedRowIndex = this.getRowIndex();
+        try {
+            char sepChar = UINamingContainer.getSeparatorChar(context);
+            // If we need to strip out the rowIndex from our id
+            // PENDING(edburns): is this safe with respect to I18N?
+            if (myId.endsWith(sepChar + Integer.toString(savedRowIndex, 10))) {
+                lastSep = myId.lastIndexOf(sepChar);
+                assert (-1 != lastSep);
+                myId = myId.substring(0, lastSep);
+            }
+
+            // myId will be something like form:outerData for a non-nested table,
+            // and form:outerData:3:data for a nested table.
+            // clientId will be something like form:outerData:3:outerColumn
+            // for a non-nested table.  clientId will be something like
+            // outerData:3:data:3:input for a nested table.
+            if (clientId.startsWith(myId)) {
+                int preRowIndexSep, postRowIndexSep;
+
+                if (-1 != (preRowIndexSep =
+                      clientId.indexOf(sepChar,
+                                       myId.length()))) {
+                    // Check the length
+                    if (++preRowIndexSep < clientId.length()) {
+                        if (-1 != (postRowIndexSep =
+                              clientId.indexOf(sepChar,
+                                               preRowIndexSep + 1))) {
+                            try {
+                                newRow = Integer
+                                      .valueOf(clientId.substring(preRowIndexSep,
+                                                                  postRowIndexSep))
+                                      .intValue();
+                            } catch (NumberFormatException ex) {
+                                // PENDING(edburns): I18N
+                                String message =
+                                      "Trying to extract rowIndex from clientId \'"
+                                      +
+                                      clientId
+                                      + "\' "
+                                      + ex.getMessage();
+                                throw new NumberFormatException(message);
+                            }
+                            this.setRowIndex(newRow);
+                            if (this.isRowAvailable()) {
+                                found = super.invokeOnComponent(context,
+                                                                clientId,
+                                                                callback);
+                            }
+                        }
+                    }
+                }
+            }
+        }
+        catch (FacesException fe) {
+            throw fe;
+        }
+        catch (Exception e) {
+            throw new FacesException(e);
+        }
+        finally {
+            this.setRowIndex(savedRowIndex);
+        }
+        return found;
+    }
+
+
+    /**
+     * <p>Override the default {@link UIComponentBase#queueEvent} processing to
+     * wrap any queued events in a wrapper so that we can reset the current row
+     * index in <code>broadcast()</code>.</p>
+     *
+     * @param event {@link FacesEvent} to be queued
+     *
+     * @throws IllegalStateException if this component is not a descendant of a
+     *                               {@link UIViewRoot}
+     * @throws NullPointerException  if <code>event</code> is <code>null</code>
+     */
+    public void queueEvent(FacesEvent event) {
+
+        super.queueEvent(new WrapperEvent(this, event, getRowIndex()));
+
+    }
+
+
+    /**
+     * <p>Override the default {@link UIComponentBase#broadcast} processing to
+     * unwrap any wrapped {@link FacesEvent} and reset the current row index,
+     * before the event is actually broadcast.  For events that we did not wrap
+     * (in <code>queueEvent()</code>), default processing will occur.</p>
+     *
+     * @param event The {@link FacesEvent} to be broadcast
+     *
+     * @throws AbortProcessingException Signal the JavaServer Faces
+     *                                  implementation that no further
+     *                                  processing on the current event should
+     *                                  be performed
+     * @throws IllegalArgumentException if the implementation class of this
+     *                                  {@link FacesEvent} is not supported by
+     *                                  this component
+     * @throws NullPointerException     if <code>event</code> is <code>null</code>
+     */
+    public void broadcast(FacesEvent event)
+          throws AbortProcessingException {
+
+        if (!(event instanceof WrapperEvent)) {
+            super.broadcast(event);
+            return;
+        }
+        FacesContext context = FacesContext.getCurrentInstance();
+        // Set up the correct context and fire our wrapped event
+        WrapperEvent revent = (WrapperEvent) event;
+        if (isNestedWithinIterator()) {
+            setDataModel(null);
+        }
+        int oldRowIndex = getRowIndex();
+        setRowIndex(revent.getRowIndex());
+        FacesEvent rowEvent = revent.getFacesEvent();
+        UIComponent source = rowEvent.getComponent();
+        UIComponent compositeParent = null;
+        try {
+            if (!UIComponent.isCompositeComponent(source)) {
+                compositeParent = UIComponent.getCompositeComponentParent(source);
+            }
+            if (compositeParent != null) {
+                compositeParent.pushComponentToEL(context, null);
+            }
+            source.pushComponentToEL(context, null);
+            source.broadcast(rowEvent);
+        } finally {
+            source.popComponentFromEL(context);
+            if (compositeParent != null) {
+                compositeParent.popComponentFromEL(context);
+            }
+        }
+        setRowIndex(oldRowIndex);
+
+    }
+
+    /**
+     * <p>In addition to the default behavior, ensure that any saved per-row
+     * state for our child input components is discarded unless it is needed to
+     * rerender the current page with errors.
+     *
+     * @param context FacesContext for the current request
+     *
+     * @throws IOException          if an input/output error occurs while
+     *                              rendering
+     * @throws NullPointerException if <code>context</code> is <code>null</code>
+     */
+    public void encodeBegin(FacesContext context) throws IOException {
+
+        preEncode(context);
+        super.encodeBegin(context);
+
+    }
+
+
+    /**
+     * <p>Override the default {@link UIComponentBase#processDecodes} processing
+     * to perform the following steps.</p> <ul> <li>If the <code>rendered</code>
+     * property of this {@link UIComponent} is <code>false</code>, skip further
+     * processing.</li> <li>Set the current <code>rowIndex</code> to -1.</li>
+     * <li>Call the <code>processDecodes()</code> method of all facets of this
+     * {@link UIData}, in the order determined by a call to
+     * <code>getFacets().keySet().iterator()</code>.</li> <li>Call the
+     * <code>processDecodes()</code> method of all facets of the {@link
+     * UIColumn} children of this {@link UIData}.</li> <li>Iterate over the set
+     * of rows that were included when this component was rendered (i.e. those
+     * defined by the <code>first</code> and <code>rows</code> properties),
+     * performing the following processing for each row: <ul> <li>Set the
+     * current <code>rowIndex</code> to the appropriate value for this row.</li>
+     * <li>If <code>isRowAvailable()</code> returns <code>true</code>, iterate
+     * over the children components of each {@link UIColumn} child of this
+     * {@link UIData} component, calling the <code>processDecodes()</code>
+     * method for each such child.</li> </ul></li> <li>Set the current
+     * <code>rowIndex</code> to -1.</li> <li>Call the <code>decode()</code>
+     * method of this component.</li> <li>If a <code>RuntimeException</code> is
+     * thrown during decode processing, call {@link FacesContext#renderResponse}
+     * and re-throw the exception.</li> </ul>
+     *
+     * @param context {@link FacesContext} for the current request
+     *
+     * @throws NullPointerException if <code>context</code> is <code>null</code>
+     */
+    public void processDecodes(FacesContext context) {
+
+        if (context == null) {
+            throw new NullPointerException();
+        }
+        if (!isRendered()) {
+            return;
+        }
+
+        pushComponentToEL(context, this);
+        preDecode(context);
+        iterate(context, PhaseId.APPLY_REQUEST_VALUES);
+        decode(context);
+        popComponentFromEL(context);
+
+    }
+
+
+    /**
+     * <p>Override the default {@link UIComponentBase#processValidators}
+     * processing to perform the following steps.</p> <ul> <li>If the
+     * <code>rendered</code> property of this {@link UIComponent} is
+     * <code>false</code>, skip further processing.</li> <li>Set the current
+     * <code>rowIndex</code> to -1.</li> <li>Call the <code>processValidators()</code>
+     * method of all facets of this {@link UIData}, in the order determined by a
+     * call to <code>getFacets().keySet().iterator()</code>.</li> <li>Call the
+     * <code>processValidators()</code> method of all facets of the {@link
+     * UIColumn} children of this {@link UIData}.</li> <li>Iterate over the set
+     * of rows that were included when this component was rendered (i.e. those
+     * defined by the <code>first</code> and <code>rows</code> properties),
+     * performing the following processing for each row: <ul> <li>Set the
+     * current <code>rowIndex</code> to the appropriate value for this row.</li>
+     * <li>If <code>isRowAvailable()</code> returns <code>true</code>, iterate
+     * over the children components of each {@link UIColumn} child of this
+     * {@link UIData} component, calling the <code>processValidators()</code>
+     * method for each such child.</li> </ul></li> <li>Set the current
+     * <code>rowIndex</code> to -1.</li> </ul>
+     *
+     * @param context {@link FacesContext} for the current request
+     *
+     * @throws NullPointerException if <code>context</code> is <code>null</code>
+     */
+    public void processValidators(FacesContext context) {
+
+        if (context == null) {
+            throw new NullPointerException();
+        }
+        if (!isRendered()) {
+            return;
+        }
+        pushComponentToEL(context, this);
+        Application app = context.getApplication();
+        app.publishEvent(context, PreValidateEvent.class, this);
+        preValidate(context);
+        iterate(context, PhaseId.PROCESS_VALIDATIONS);
+        app.publishEvent(context, PostValidateEvent.class, this);
+        popComponentFromEL(context);
+
+    }
+
+
+    /**
+     * <p>Override the default {@link UIComponentBase#processUpdates}
+     * processing to perform the following steps.</p>
+     * <ul>
+     * <li>If the <code>rendered</code> property of this {@link UIComponent}
+     *     is <code>false</code>, skip further processing.</li>
+     * <li>Set the current <code>rowIndex</code> to -1.</li>
+     * <li>Call the <code>processUpdates()</code> method of all facets
+     *     of this {@link UIData}, in the order determined
+     *     by a call to <code>getFacets().keySet().iterator()</code>.</li>
+     * <li>Call the <code>processUpdates()</code> method of all facets
+     *     of the {@link UIColumn} children of this {@link UIData}.</li>
+     * <li>Iterate over the set of rows that were included when this
+     *     component was rendered (i.e. those defined by the <code>first</code>
+     *     and <code>rows</code> properties), performing the following
+     *     processing for each row:
+     *     <ul>
+     *     <li>Set the current <code>rowIndex</code> to the appropriate
+     *         value for this row.</li>
+     *     <li>If <code>isRowAvailable()</code> returns <code>true</code>,
+     *         iterate over the children components of each {@link UIColumn}
+     *         child of this {@link UIData} component, calling the
+     *         <code>processUpdates()</code> method for each such child.</li>
+     *     </ul></li>
+     * <li>Set the current <code>rowIndex</code> to -1.</li>
+     * </ul>
+     *
+     * @param context {@link FacesContext} for the current request
+     *
+     * @throws NullPointerException if <code>context</code> is <code>null</code>
+     */
+    public void processUpdates(FacesContext context) {
+
+        if (context == null) {
+            throw new NullPointerException();
+        }
+        if (!isRendered()) {
+            return;
+        }
+
+        pushComponentToEL(context, this);
+        preUpdate(context);
+        iterate(context, PhaseId.UPDATE_MODEL_VALUES);
+        popComponentFromEL(context);
+        // This is not a EditableValueHolder, so no further processing is required
+
+    }
+
+    public String createUniqueId(FacesContext context, String seed) {
+        Integer i = (Integer) getStateHelper().get(PropertyKeys.lastId);
+        int lastId = ((i != null) ? i : 0);
+        getStateHelper().put(PropertyKeys.lastId,  ++lastId);
+        return UIViewRoot.UNIQUE_ID_PREFIX + (seed == null ? lastId : seed);
+    }
+
+    /**
+     * <p class="changed_added_2_0"><span
+     * class="changed_modified_2_0_rev_a">Override</span> the behavior
+     * in {@link UIComponent#visitTree} to handle iteration
+     * correctly.</p>
+     *
+     * <div class="changed_added_2_0">
+
+     * <p>If the {@link UIComponent#isVisitable} method of this instance
+     * returns <code>false</code>, take no action and return.</p>
+
+     * <p>Call {@link UIComponent#pushComponentToEL} and
+     * invoke the visit callback on this <code>UIData</code> instance as
+     * described in {@link UIComponent#visitTree}.  Let the result of
+     * the invoctaion be <em>visitResult</em>.  If <em>visitResult</em>
+     * is {@link VisitResult#COMPLETE}, take no further action and
+     * return <code>true</code>.  Otherwise, determine if we need to
+     * visit our children.  The default implementation calls {@link
+     * VisitContext#getSubtreeIdsToVisit} passing <code>this</code> as
+     * the argument.  If the result of that call is non-empty, let
+     * <em>doVisitChildren</em> be <code>true</code>.  If
+     * <em>doVisitChildren</em> is <code>true</code> and
+     * <em>visitResult</em> is {@link VisitResult#ACCEPT}, take the
+     * following action.<p>
+
+     * <ul>
+
+     * 	  <li><p>If this component has facets, call {@link
+     * 	  UIComponent#getFacets} on this instance and invoke the
+     * 	  <code>values()</code> method.  For each
+     * 	  <code>UIComponent</code> in the returned <code>Map</code>,
+     * 	  call {@link UIComponent#visitTree}.</p></li>
+
+     * 	  <li>
+
+     * <div class="changed_modified_2_0_rev_a">
+
+     *  <p>If this component has children, for each 
+     * 	  <code>UIColumn</code> child:</p>
+     * 
+     *    <p>Call {@link VisitContext#invokeVisitCallback} on that 
+          <code>UIColumn</code> instance.
+     *    If such a call returns <code>true</code>, terminate visiting and 
+          return <code>true</code> from this method.</p>
+     * 
+     *    <p>If the child <code>UIColumn</code> has facets, call
+     *    {@link UIComponent#visitTree} on each one.</p>
+     *
+     *    <p>Take no action on non-<code>UIColumn</code> children.</p>
+     *
+     * </div>
+     * </li>
+     *
+     *    <li>
+
+     * <div class="changed_modified_2_0_rev_a">
+     *
+     * <p>Save aside the result of a call to {@link
+     *    #getRowIndex}.</p>
+
+     *    <p>For each child component of this <code>UIData</code> that is
+     *    also an instance of {@link UIColumn}, 
+     *    </p>
+
+     * 	  <p>Iterate over the rows.</p>
+
+     * </div>
+
+     * <ul>
+
+     * 	  <li><p>Let <em>rowsToProcess</em> be the return from {@link
+     * 	  #getRows}.  </p></li>
+
+     * 	  <li><p>Let <em>rowIndex</em> be the return from {@link
+     * 	  #getFirst} - 1.</p></li>
+
+     * 	  <li><p>While the number of rows processed is less than
+     * 	  <em>rowsToProcess</em>, take the following actions.</p>
+
+     * <p>Call {@link #setRowIndex}, passing the current row index.</p>
+
+     * <p>If {@link #isRowAvailable} returns <code>false</code>, take no
+     * further action and return <code>false</code>.</p>
+     *
+     * <p class="changed_modified_2_0_rev_a">Call {@link
+     * UIComponent#visitTree} on each of the children of this
+     * <code>UIColumn</code> instance.</p>
+
+     *     </li>
+
+     * </ul>
+
+     *    </li>
+
+     * </ul>
+
+     * <p>Call {@link #popComponentFromEL} and restore the saved row
+     * index with a call to {@link #setRowIndex}.</p>
+
+     * <p>Return <code>false</code> to allow the visiting to
+     * continue.</p>
+
+     * </div>
+     *
+     * @param context the <code>VisitContext</code> that provides
+     * context for performing the visit.
+     *
+     * @param callback the callback to be invoked for each node
+     * encountered in the visit.
+
+     * @throws NullPointerException if any of the parameters are
+     * <code>null</code>.
+
+     * 
+     */
+    @Override
+    public boolean visitTree(VisitContext context, 
+                             VisitCallback callback) {
+
+        // First check to see whether we are visitable.  If not
+        // short-circuit out of this subtree, though allow the
+        // visit to proceed through to other subtrees.
+        if (!isVisitable(context))
+            return false;
+
+        FacesContext facesContext = context.getFacesContext();
+        // NOTE: that the visitRows local will be obsolete once the
+        //       appropriate visit hints have been added to the API
+        boolean visitRows = requiresRowIteration(context);
+
+        // Clear out the row index is one is set so that
+        // we start from a clean slate.
+        int oldRowIndex = -1;
+        if (visitRows) {
+            oldRowIndex = getRowIndex();
+            setRowIndex(-1);
+        }
+
+        // Push ourselves to EL
+        pushComponentToEL(facesContext, null);
+
+        try {
+
+            // Visit ourselves.  Note that we delegate to the 
+            // VisitContext to actually perform the visit.
+            VisitResult result = context.invokeVisitCallback(this, callback);
+
+            // If the visit is complete, short-circuit out and end the visit
+            if (result == VisitResult.COMPLETE)
+                return true;
+
+            // Visit children, short-circuiting as necessary
+            // NOTE: that the visitRows parameter will be obsolete once the
+            //       appropriate visit hints have been added to the API
+            if ((result == VisitResult.ACCEPT) && doVisitChildren(context, visitRows)) {
+
+                // First visit facets
+                // NOTE: that the visitRows parameter will be obsolete once the
+                //       appropriate visit hints have been added to the API
+                if (visitFacets(context, callback, visitRows))
+                    return true;
+
+                // Next column facets
+                // NOTE: that the visitRows parameter will be obsolete once the
+                //       appropriate visit hints have been added to the API
+                if (visitColumnsAndColumnFacets(context, callback, visitRows))
+                    return true;
+
+                // And finally, visit rows
+                // NOTE: that the visitRows parameter will be obsolete once the
+                //       appropriate visit hints have been added to the API
+                if (visitRows(context, callback, visitRows))
+                    return true;
+            }
+        }
+        finally {
+            // Clean up - pop EL and restore old row index
+            popComponentFromEL(facesContext);
+            if (visitRows) {
+                setRowIndex(oldRowIndex);
+            }
+        }
+
+        // Return false to allow the visit to continue
+        return false;
+    }
+
+    /**
+     * <p class="changed_added_2_1">Override the base class method to
+     * take special action if the method is being invoked when {@link
+     * StateManager#IS_BUILDING_INITIAL_STATE} is true
+     * <strong>and</strong> the <code>rowStatePreserved</code>
+     * JavaBeans property for this instance is <code>true</code>.</p>
+     *
+     * <p class="changed_modified_2_1">The additional action taken is to
+     * traverse the descendents and save their state without regard to
+     * any particular row value.</p>
+     *
+     * @since 2.1
+     */
+
+
+    @Override
+    public void markInitialState()
+    {
+        if (isRowStatePreserved())
+        {
+            if (getFacesContext().getAttributes().containsKey(StateManager.IS_BUILDING_INITIAL_STATE))
+            {
+                _initialDescendantFullComponentState = saveDescendantInitialComponentStates(getFacesContext(), getChildren().iterator(), false);
+            }
+        }
+        super.markInitialState();
+    }
+
+    private void restoreFullDescendantComponentStates(FacesContext facesContext,
+            Iterator<UIComponent> childIterator, Object state,
+            boolean restoreChildFacets)
+    {
+        Iterator<? extends Object[]> descendantStateIterator = null;
+        while (childIterator.hasNext())
+        {
+            if (descendantStateIterator == null && state != null)
+            {
+                descendantStateIterator = ((Collection<? extends Object[]>) state)
+                        .iterator();
+            }
+            UIComponent component = childIterator.next();
+
+            // reset the client id (see spec 3.1.6)
+            component.setId(component.getId());
+            if (!component.isTransient())
+            {
+                Object childState = null;
+                Object descendantState = null;
+                if (descendantStateIterator != null
+                        && descendantStateIterator.hasNext())
+                {
+                    Object[] object = descendantStateIterator.next();
+                    childState = object[0];
+                    descendantState = object[1];
+                }
+                
+                component.clearInitialState();
+                component.restoreState(facesContext, childState);
+                component.markInitialState();
+                
+                Iterator<UIComponent> childsIterator;
+                if (restoreChildFacets)
+                {
+                    childsIterator = component.getFacetsAndChildren();
+                }
+                else
+                {
+                    childsIterator = component.getChildren().iterator();
+                }
+                restoreFullDescendantComponentStates(facesContext, childsIterator,
+                        descendantState, true);
+            }
+        }
+    }
+
+    private Collection<Object[]> saveDescendantInitialComponentStates(FacesContext facesContext,
+            Iterator<UIComponent> childIterator, boolean saveChildFacets)
+    {
+        Collection<Object[]> childStates = null;
+        while (childIterator.hasNext())
+        {
+            if (childStates == null)
+            {
+                childStates = new ArrayList<Object[]>();
+            }
+
+            UIComponent child = childIterator.next();
+            if (!child.isTransient())
+            {
+                // Add an entry to the collection, being an array of two
+                // elements. The first element is the state of the children
+                // of this component; the second is the state of the current
+                // child itself.
+
+                Iterator<UIComponent> childsIterator;
+                if (saveChildFacets)
+                {
+                    childsIterator = child.getFacetsAndChildren();
+                }
+                else
+                {
+                    childsIterator = child.getChildren().iterator();
+                }
+                Object descendantState = saveDescendantInitialComponentStates(
+                        facesContext, childsIterator, true);
+                Object state = child.saveState(facesContext);
+                childStates.add(new Object[] { state, descendantState });
+            }
+        }
+        return childStates;
+    }
+    
+    private Map<String,Object> saveFullDescendantComponentStates(FacesContext facesContext, Map<String,Object> stateMap,
+            Iterator<UIComponent> childIterator, boolean saveChildFacets)
+    {
+        while (childIterator.hasNext())
+        {
+            UIComponent child = childIterator.next();
+            if (!child.isTransient())
+            {
+                Iterator<UIComponent> childsIterator;
+                if (saveChildFacets)
+                {
+                    childsIterator = child.getFacetsAndChildren();
+                }
+                else
+                {
+                    childsIterator = child.getChildren().iterator();
+                }
+                stateMap = saveFullDescendantComponentStates(facesContext, stateMap,
+                        childsIterator, true);
+                Object state = child.saveState(facesContext);
+                if (state != null)
+                {
+                    if (stateMap == null)
+                    {
+                        stateMap = new HashMap<String,Object>();
+                    }
+                    stateMap.put(child.getClientId(facesContext), state);
+                }
+            }
+        }
+        return stateMap;
+    }
+    
+    private void restoreFullDescendantComponentDeltaStates(FacesContext facesContext,
+            Iterator<UIComponent> childIterator, Object state, Object initialState,
+            boolean restoreChildFacets)
+    {
+        Map<String,Object> descendantStateIterator = null;
+        Iterator<? extends Object[]> descendantFullStateIterator = null;
+        while (childIterator.hasNext())
+        {
+            if (descendantStateIterator == null && state != null)
+            {
+                descendantStateIterator = (Map<String,Object>) state;
+            }
+            if (descendantFullStateIterator == null && initialState != null)
+            {
+                descendantFullStateIterator = ((Collection<? extends Object[]>) initialState).iterator();
+            }
+            UIComponent component = childIterator.next();
+
+            // reset the client id (see spec 3.1.6)
+            component.setId(component.getId());
+            if (!component.isTransient())
+            {
+                Object childInitialState = null;
+                Object descendantInitialState = null;
+                Object childState = null;
+                if (descendantStateIterator != null
+                        && descendantStateIterator.containsKey(component.getClientId(facesContext)))
+                {
+                    //Object[] object = (Object[]) descendantStateIterator.get(component.getClientId(facesContext));
+                    //childState = object[0];
+                    childState = descendantStateIterator.get(component.getClientId(facesContext));
+                }
+                if (descendantFullStateIterator != null
+                        && descendantFullStateIterator.hasNext())
+                {
+                    Object[] object = (Object[]) descendantFullStateIterator.next();
+                    childInitialState = object[0];
+                    descendantInitialState = object[1];
+                }
+                
+                component.clearInitialState();
+                if (childInitialState != null)
+                {
+                    component.restoreState(facesContext, childInitialState);
+                    component.markInitialState();
+                    component.restoreState(facesContext, childState);
+                }
+                else
+                {
+                    component.restoreState(facesContext, childState);
+                    component.markInitialState();
+                }
+                
+                Iterator<UIComponent> childsIterator;
+                if (restoreChildFacets)
+                {
+                    childsIterator = component.getFacetsAndChildren();
+                }
+                else
+                {
+                    childsIterator = component.getChildren().iterator();
+                }
+                restoreFullDescendantComponentDeltaStates(facesContext, childsIterator,
+                        state, descendantInitialState , true);
+            }
+        }
+    }
+
+    private void restoreTransientDescendantComponentStates(FacesContext facesContext, Iterator<UIComponent> childIterator, Map<String, Object> state,
+            boolean restoreChildFacets)
+    {
+        while (childIterator.hasNext())
+        {
+            UIComponent component = childIterator.next();
+
+            // reset the client id (see spec 3.1.6)
+            component.setId(component.getId());
+            if (!component.isTransient())
+            {
+                component.restoreTransientState(facesContext, (state == null) ? null : state.get(component.getClientId(facesContext)));                    
+                
+                Iterator<UIComponent> childsIterator;
+                if (restoreChildFacets)
+                {
+                    childsIterator = component.getFacetsAndChildren();
+                }
+                else
+                {
+                    childsIterator = component.getChildren().iterator();
+                }
+                restoreTransientDescendantComponentStates(facesContext, childsIterator, state, true);
+            }
+        }
+
+    }
+
+    private Map<String, Object> saveTransientDescendantComponentStates(FacesContext facesContext, Map<String, Object> childStates, Iterator<UIComponent> childIterator,
+            boolean saveChildFacets)
+    {
+        while (childIterator.hasNext())
+        {
+            UIComponent child = childIterator.next();
+            if (!child.isTransient())
+            {
+                Iterator<UIComponent> childsIterator;
+                if (saveChildFacets)
+                {
+                    childsIterator = child.getFacetsAndChildren();
+                }
+                else
+                {
+                    childsIterator = child.getChildren().iterator();
+                }
+                childStates = saveTransientDescendantComponentStates(facesContext, childStates, childsIterator, true);
+                Object state = child.saveTransientState(facesContext);
+                if (state != null)
+                {
+                    if (childStates == null)
+                    {
+                        childStates = new HashMap<String, Object>();
+                    }
+                    childStates.put(child.getClientId(facesContext), state);
+                }
+            }
+        }
+        return childStates;
+    }
+
+    @Override
+    public void restoreState(FacesContext context, Object state)
+    {
+        if (state == null)
+        {
+            return;
+        }
+        
+        Object values[] = (Object[]) state;
+        super.restoreState(context, values[0]);
+        Object restoredRowStates = UIComponentBase.restoreAttachedState(context, values[1]);
+        if (restoredRowStates == null)
+        {
+            if (!_rowDeltaStates.isEmpty())
+            {
+                _rowDeltaStates.clear();
+            }
+        }
+        else
+        {
+            _rowDeltaStates = (Map<String, Object>) restoredRowStates;
+        } 
+    }
+
+    private void resetClientIds(UIComponent component) {
+        Iterator<UIComponent> iterator = component.getFacetsAndChildren();
+        while(iterator.hasNext()) {
+            UIComponent child = iterator.next();
+            resetClientIds(child);
+            child.setId(child.getId());
+        }
+    }
+        
+    @Override
+    public Object saveState(FacesContext context)
+    {
+        resetClientIds(this);
+        
+        if (initialStateMarked()) {
+            Object superState = super.saveState(context);
+            
+            if (superState == null && _rowDeltaStates.isEmpty()) {
+                return null;
+            }
+            else {
+                Object values[] = null;
+                Object attachedState = UIComponentBase.saveAttachedState(context, _rowDeltaStates);
+                if (superState != null || attachedState != null) {
+                    values = new Object[] { superState, attachedState };
+                }
+                return values; 
+            }
+        } else {
+            Object values[] = new Object[2];
+            values[0] = super.saveState(context);
+            values[1] = UIComponentBase.saveAttachedState(context, _rowDeltaStates);
+            return values;
+        }
+    }
+
+    // --------------------------------------------------------- Protected Methods
+
+
+    /**
+     * <p>Return the internal {@link DataModel} object representing the data
+     * objects that we will iterate over in this component's rendering.</p>
+     * <p/>
+     * <p>If the model has been cached by a previous call to {@link
+     * #setDataModel}, return it.  Otherwise call {@link #getValue}.  If the
+     * result is null, create an empty {@link ListDataModel} and return it.  If
+     * the result is an instance of {@link DataModel}, return it.  Otherwise,
+     * adapt the result as described in {@link #getValue} and return it.</p>
+     */
+    protected DataModel getDataModel() {
+
+        // Return any previously cached DataModel instance
+        if (this.model != null) {
+            return (model);
+        }
+
+        // Synthesize a DataModel around our current value if possible
+        Object current = getValue();
+        if (current == null) {
+            setDataModel(new ListDataModel(Collections.EMPTY_LIST));
+        } else if (current instanceof DataModel) {
+            setDataModel((DataModel) current);
+        } else if (current instanceof List) {
+            setDataModel(new ListDataModel((List) current));
+        } else if (Object[].class.isAssignableFrom(current.getClass())) {
+            setDataModel(new ArrayDataModel((Object[]) current));
+        } else if (current instanceof ResultSet) {
+            setDataModel(new ResultSetDataModel((ResultSet) current));
+        } else if (current instanceof Result) {
+            setDataModel(new ResultDataModel((Result) current));
+        } else if (current instanceof Collection) {
+            setDataModel(new CollectionDataModel((Collection) current));
+        } else {
+            setDataModel(new ScalarDataModel(current));
+        }
+        return (model);
+
+    }
+
+    /**
+     * <p>Set the internal DataModel.  This <code>UIData</code> instance must
+     * use the given {@link DataModel} as its internal value representation from
+     * now until the next call to <code>setDataModel</code>.  If the given
+     * <code>DataModel</code> is <code>null</code>, the internal
+     * <code>DataModel</code> must be reset in a manner so that the next call to
+     * {@link #getDataModel} causes lazy instantion of a newly refreshed
+     * <code>DataModel</code>.</p>
+     * <p/>
+     * <p>Subclasses might call this method if they either want to restore the
+     * internal <code>DataModel</code> during the <em>Restore View</em> phase or
+     * if they want to explicitly refresh the current <code>DataModel</code> for
+     * the <em>Render Response</em> phase.</p>
+     *
+     * @param dataModel the new <code>DataModel</code> or <code>null</code> to
+     *                  cause the model to be refreshed.
+     */
+
+    protected void setDataModel(DataModel dataModel) {
+        this.model = dataModel;
+    }
+
+    // ---------------------------------------------------- Private Methods
+
+
+    /**
+     * Called by {@link UIData#visitTree} to determine whether or not the
+     * <code>visitTree</code> implementation should visit the rows of UIData
+     * or by manipulating the row index before visiting the components themselves.
+     *
+     * Once we have the appropriate Visit hints for state saving, this method
+     * will become obsolete.
+     *
+     * @param ctx the <code>FacesContext</code> for the current request
+     *
+     * @return true if row index manipulation is required by the visit to this
+     *  UIData instance
+     */
+    private boolean requiresRowIteration(VisitContext ctx) {
+
+        return !ctx.getHints().contains(VisitHint.SKIP_ITERATION); 
+
+    }
+
+
+    // Perform pre-decode initialization work.  Note that this
+    // initialization may be performed either during a normal decode
+    // (ie. processDecodes()) or during a tree visit (ie. visitTree()).
+    private void preDecode(FacesContext context) {
+        setDataModel(null); // Re-evaluate even with server-side state saving
+        Map<String, SavedState> saved =
+              (Map<String, SavedState>) getStateHelper().get(PropertyKeys.saved);
+        if (null == saved || !keepSaved(context)) {
+            //noinspection CollectionWithoutInitialCapacity
+            getStateHelper().remove(PropertyKeys.saved);
+        }
+    }
+
+    // Perform pre-validation initialization work.  Note that this
+    // initialization may be performed either during a normal validation
+    // (ie. processValidators()) or during a tree visit (ie. visitTree()).
+    private void preValidate(FacesContext context) {
+        if (isNestedWithinIterator()) {
+            setDataModel(null);
+        }
+    }
+
+    // Perform pre-update initialization work.  Note that this
+    // initialization may be performed either during normal update
+    // (ie. processUpdates()) or during a tree visit (ie. visitTree()).
+    private void preUpdate(FacesContext context) {
+        if (isNestedWithinIterator()) {
+            setDataModel(null);
+        }
+    }
+
+    // Perform pre-encode initialization work.  Note that this
+    // initialization may be performed either during a normal encode
+    // (ie. encodeBegin()) or during a tree visit (ie. visitTree()).
+    private void preEncode(FacesContext context) {
+        setDataModel(null); // re-evaluate even with server-side state saving
+        if (!keepSaved(context)) {
+            ////noinspection CollectionWithoutInitialCapacity
+            //saved = new HashMap<String, SavedState>();
+            getStateHelper().remove(PropertyKeys.saved);
+        }
+    }
+
+    /**
+     * <p>Perform the appropriate phase-specific processing and per-row
+     * iteration for the specified phase, as follows:
+     * <ul>
+     * <li>Set the <code>rowIndex</code> property to -1, and process the facets
+     *     of this {@link UIData} component exactly once.</li>
+     * <li>Set the <code>rowIndex</code> property to -1, and process the facets
+     *     of the {@link UIColumn} children of this {@link UIData} component
+     *     exactly once.</li>
+     * <li>Iterate over the relevant rows, based on the <code>first</code>
+     *     and <code>row</code> properties, and process the children
+     *     of the {@link UIColumn} children of this {@link UIData} component
+     *     once per row.</li>
+     * </ul>
+     *
+     * @param context {@link FacesContext} for the current request
+     * @param phaseId {@link PhaseId} of the phase we are currently running
+     */
+    private void iterate(FacesContext context, PhaseId phaseId) {
+
+        // Process each facet of this component exactly once
+        setRowIndex(-1);
+        if (getFacetCount() > 0) {
+            for (UIComponent facet : getFacets().values()) {
+                if (phaseId == PhaseId.APPLY_REQUEST_VALUES) {
+                    facet.processDecodes(context);
+                } else if (phaseId == PhaseId.PROCESS_VALIDATIONS) {
+                    facet.processValidators(context);
+                } else if (phaseId == PhaseId.UPDATE_MODEL_VALUES) {
+                    facet.processUpdates(context);
+                } else {
+                    throw new IllegalArgumentException();
+                }
+            }
+        }
+        
+        // collect rendered columns once
+        List<UIColumn> renderedColumns = new ArrayList<UIColumn>(getChildCount());
+        if (getChildCount() > 0) {
+        	for (UIComponent child : getChildren()) {
+        		if (child instanceof UIColumn && child.isRendered()) {
+        			renderedColumns.add((UIColumn)child);
+        		}
+        	}
+        }
+
+        // Process each facet of our child UIColumn components exactly once
+        setRowIndex(-1);
+        for (UIColumn column : renderedColumns) {
+            if (column.getFacetCount() > 0) {
+                for (UIComponent columnFacet : column.getFacets().values()) {
+                    if (phaseId == PhaseId.APPLY_REQUEST_VALUES) {
+                        columnFacet.processDecodes(context);
+                    } else if (phaseId == PhaseId.PROCESS_VALIDATIONS) {
+                        columnFacet.processValidators(context);
+                    } else if (phaseId == PhaseId.UPDATE_MODEL_VALUES) {
+                        columnFacet.processUpdates(context);
+                    } else {
+                        throw new IllegalArgumentException();
+                    }
+                }
+            }
+        }
+
+        // Iterate over our UIColumn children, once per row
+        int processed = 0;
+        int rowIndex = getFirst() - 1;
+        int rows = getRows();
+
+        while (true) {
+
+            // Have we processed the requested number of rows?
+            if ((rows > 0) && (++processed > rows)) {
+                break;
+            }
+
+            // Expose the current row in the specified request attribute
+            setRowIndex(++rowIndex);
+            if (!isRowAvailable()) {
+                break; // Scrolled past the last row
+            }
+
+            // Perform phase-specific processing as required
+            // on the *children* of the UIColumn (facets have
+            // been done a single time with rowIndex=-1 already)
+            for (UIColumn kid : renderedColumns) {
+                if (kid.getChildCount() > 0) {
+                    for (UIComponent grandkid : kid.getChildren()) {
+                        if (!grandkid.isRendered()) {
+                            continue;
+                        }
+                        if (phaseId == PhaseId.APPLY_REQUEST_VALUES) {
+                            grandkid.processDecodes(context);
+                        } else if (phaseId == PhaseId.PROCESS_VALIDATIONS) {
+                            grandkid.processValidators(context);
+                        } else if (phaseId == PhaseId.UPDATE_MODEL_VALUES) {
+                            grandkid.processUpdates(context);
+                        } else {
+                            throw new IllegalArgumentException();
+                        }
+                    }
+                }
+            }
+
+        }
+
+        // Clean up after ourselves
+        setRowIndex(-1);
+
+    }
+
+    // Tests whether we need to visit our children as part of
+    // a tree visit
+    private boolean doVisitChildren(VisitContext context, boolean visitRows) {
+
+        // Just need to check whether there are any ids under this
+        // subtree.  Make sure row index is cleared out since 
+        // getSubtreeIdsToVisit() needs our row-less client id.
+        if (visitRows) {
+            setRowIndex(-1);
+        }
+        Collection<String> idsToVisit = context.getSubtreeIdsToVisit(this);
+        assert(idsToVisit != null);
+
+        // All ids or non-empty collection means we need to visit our children.
+        return (!idsToVisit.isEmpty());
+    }
+
+//    // Performs pre-phase initialization before visiting children
+//    // (if necessary).
+//    private void preVisitChildren(VisitContext visitContext) {
+//
+//        // If EXECUTE_LIFECYCLE hint is set, we need to do
+//        // lifecycle-related initialization before visiting children
+//        if (visitContext.getHints().contains(VisitHint.EXECUTE_LIFECYCLE)) {
+//            FacesContext facesContext = visitContext.getFacesContext();
+//            PhaseId phaseId = facesContext.getCurrentPhaseId();
+//
+//            if (phaseId == PhaseId.APPLY_REQUEST_VALUES)
+//                preDecode(facesContext);
+//            else if (phaseId == PhaseId.PROCESS_VALIDATIONS)
+//                preValidate(facesContext);
+//            else if (phaseId == PhaseId.UPDATE_MODEL_VALUES)
+//                preUpdate(facesContext);
+//            else if (phaseId == PhaseId.RENDER_RESPONSE)
+//                preEncode(facesContext);
+//        }
+//    }
+
+    // Visit each facet of this component exactly once.
+    private boolean visitFacets(VisitContext context,
+                                VisitCallback callback,
+                                boolean visitRows) {
+
+        if (visitRows) {
+            setRowIndex(-1);
+        }
+        if (getFacetCount() > 0) {
+            for (UIComponent facet : getFacets().values()) {
+                if (facet.visitTree(context, callback))
+                    return true;
+            }
+        }
+
+        return false;
+    }
+
+    // Visit each UIColumn and any facets it may have defined exactly once
+    private boolean visitColumnsAndColumnFacets(VisitContext context,
+                                                VisitCallback callback,
+                                                boolean visitRows) {
+        if (visitRows) {
+            setRowIndex(-1);
+        }
+        if (getChildCount() > 0) {
+            for (UIComponent column : getChildren()) {
+                if (column instanceof UIColumn) {
+                    VisitResult result = context.invokeVisitCallback(column, callback); // visit the column directly
+                    if (result == VisitResult.COMPLETE) {
+                        return true;
+                    }
+                    if (column.getFacetCount() > 0) {
+                        for (UIComponent columnFacet : column.getFacets().values()) {
+                            if (columnFacet.visitTree(context, callback)) {
+                                return true;
+                            }
+                        }
+                    }
+                }
+            }
+        }
+
+        return false;
+    }
+
+    // Visit each column and row
+    private boolean visitRows(VisitContext context,
+                              VisitCallback callback,
+                              boolean visitRows) {
+
+        // Iterate over our UIColumn children, once per row
+        int processed = 0;
+        int rowIndex = 0;
+        int rows = 0;
+        if (visitRows) {
+            rowIndex = getFirst() - 1;
+            rows = getRows();
+        }
+
+        while (true) {
+
+            // Have we processed the requested number of rows?
+            if (visitRows) {
+                if ((rows > 0) && (++processed > rows)) {
+                    break;
+                }
+                // Expose the current row in the specified request attribute
+                setRowIndex(++rowIndex);
+                if (!isRowAvailable()) {
+                    break; // Scrolled past the last row
+                }
+            }
+
+            // Visit as required on the *children* of the UIColumn
+            // (facets have been done a single time with rowIndex=-1 already)
+            if (getChildCount() > 0) {
+                for (UIComponent kid : getChildren()) {
+                    if (!(kid instanceof UIColumn)) {
+                        continue;
+                    }
+                    if (kid.getChildCount() > 0) {
+                    for (UIComponent grandkid : kid.getChildren()) {
+                            if (grandkid.visitTree(context, callback)) {
+                                return true;
+                            }
+                        }
+                    }
+                }
+            }
+
+            if (!visitRows) {
+                break;
+            }
+
+        }
+
+        return false;
+    }
+
+
+    /**
+     * <p>Return <code>true</code> if we need to keep the saved
+     * per-child state information.  This will be the case if any of the
+     * following are true:</p>
+     *
+     * <ul>
+     *
+     * <li>there are messages queued with severity ERROR or FATAL.</li>
+     *
+     * <li>this <code>UIData</code> instance is nested inside of another
+     * <code>UIData</code> instance</li>
+     *
+     * </ul>
+     *
+     * @param context {@link FacesContext} for the current request
+     */
+    private boolean keepSaved(FacesContext context) {
+
+        return (contextHasErrorMessages(context) || isNestedWithinIterator());
+
+    }
+
+
+    private Boolean isNestedWithinIterator() {
+        if (isNested == null) {
+            UIComponent parent = this;
+            while (null != (parent = parent.getParent())) {
+                if (parent instanceof UIData || parent.getClass().getName().endsWith("UIRepeat")) {
+                    isNested = Boolean.TRUE;
+                    break;
+                }
+            }
+            if (isNested == null) {
+                isNested = Boolean.FALSE;
+            }
+            return isNested;
+        } else {
+            return isNested;
+        }
+    }
+
+
+    private boolean contextHasErrorMessages(FacesContext context) {
+
+        FacesMessage.Severity sev = context.getMaximumSeverity();
+        return (sev != null && (FacesMessage.SEVERITY_ERROR.compareTo(sev) >= 0));
+
+    }
+
+
+    /**
+     * <p>Restore state information for all descendant components, as described
+     * for <code>setRowIndex()</code>.</p>
+     */
+    private void restoreDescendantState() {
+
+        FacesContext context = getFacesContext();
+        if (getChildCount() > 0) {
+            for (UIComponent kid : getChildren()) {
+                if (kid instanceof UIColumn) {
+                    restoreDescendantState(kid, context);
+                }
+            }
+        }
+
+    }
+
+
+    /**
+     * <p>Restore state information for the specified component and its
+     * descendants.</p>
+     *
+     * @param component Component for which to restore state information
+     * @param context   {@link FacesContext} for the current request
+     */
+    private void restoreDescendantState(UIComponent component,
+                                        FacesContext context) {
+
+        // Reset the client identifier for this component
+        String id = component.getId();
+        component.setId(id); // Forces client id to be reset
+        Map<String, SavedState> saved = (Map<String,SavedState>)
+            getStateHelper().get(PropertyKeys.saved);
+        // Restore state for this component (if it is a EditableValueHolder)
+        if (component instanceof EditableValueHolder) {
+            EditableValueHolder input = (EditableValueHolder) component;
+            String clientId = component.getClientId(context);
+
+            SavedState state = (saved == null ? null : saved.get(clientId));
+            if (state == null) {
+                input.resetValue();
+            } else {
+                input.setValue(state.getValue());
+                input.setValid(state.isValid());
+                input.setSubmittedValue(state.getSubmittedValue());
+                // This *must* be set after the call to setValue(), since
+                // calling setValue() always resets "localValueSet" to true.
+                input.setLocalValueSet(state.isLocalValueSet());
+            }
+        } else if (component instanceof UIForm) {
+            UIForm form = (UIForm) component;
+            String clientId = component.getClientId(context);
+            SavedState state = (saved == null ? null : saved.get(clientId));
+            if (state == null) {
+                // submitted is transient state
+                form.setSubmitted(false);
+            } else {
+                form.setSubmitted(state.getSubmitted());
+            }
+        }
+
+        // Restore state for children of this component
+        if (component.getChildCount() > 0) {
+            for (UIComponent kid : component.getChildren()) {
+                restoreDescendantState(kid, context);
+            }
+        }
+
+        // Restore state for facets of this component
+        if (component.getFacetCount() > 0) {
+            for (UIComponent facet : component.getFacets().values()) {
+                restoreDescendantState(facet, context);
+            }
+        }
+
+    }
+
+
+    /**
+     * <p>Save state information for all descendant components, as described for
+     * <code>setRowIndex()</code>.</p>
+     */
+    private void saveDescendantState() {
+
+        FacesContext context = getFacesContext();
+        if (getChildCount() > 0) {
+            for (UIComponent kid : getChildren()) {
+                if (kid instanceof UIColumn) {
+                    saveDescendantState(kid, context);
+                }
+            }
+        }
+
+    }
+
+
+    /**
+     * <p>Save state information for the specified component and its
+     * descendants.</p>
+     *
+     * @param component Component for which to save state information
+     * @param context   {@link FacesContext} for the current request
+     */
+    private void saveDescendantState(UIComponent component,
+                                     FacesContext context) {
+
+        // Save state for this component (if it is a EditableValueHolder)
+        Map<String, SavedState> saved = (Map<String, SavedState>)
+              getStateHelper().get(PropertyKeys.saved);
+        if (component instanceof EditableValueHolder) {
+            EditableValueHolder input = (EditableValueHolder) component;
+            SavedState state = null;
+            String clientId = component.getClientId(context);
+            if (saved == null) {
+                state = new SavedState();
+            }
+            if (state == null) {
+                state = saved.get(clientId);
+                if (state == null) {
+                    state = new SavedState();
+                }
+            }
+            state.setValue(input.getLocalValue());
+            state.setValid(input.isValid());
+            state.setSubmittedValue(input.getSubmittedValue());
+            state.setLocalValueSet(input.isLocalValueSet());
+            if (state.hasDeltaState()) {
+            	getStateHelper().put(PropertyKeys.saved, clientId, state);
+            } else if (saved != null) {
+            	getStateHelper().remove(PropertyKeys.saved, clientId);
+            }
+        } else if (component instanceof UIForm) {
+            UIForm form = (UIForm) component;
+            String clientId = component.getClientId(context);
+            SavedState state = null;
+            if (saved == null) {
+                state = new SavedState();
+            }
+            if (state == null) {
+                state = saved.get(clientId);
+                if (state == null) {
+                    state = new SavedState();
+                }
+            }
+            state.setSubmitted(form.isSubmitted());
+            if (state.hasDeltaState()) {
+            	getStateHelper().put(PropertyKeys.saved, clientId, state);
+            } else if (saved != null) {
+            	getStateHelper().remove(PropertyKeys.saved, clientId);
+            }
+        }
+
+        // Save state for children of this component
+        if (component.getChildCount() > 0) {
+            for (UIComponent uiComponent : component.getChildren()) {
+                saveDescendantState(uiComponent, context);
+            }
+        }
+
+        // Save state for facets of this component
+        if (component.getFacetCount() > 0) {
+            for (UIComponent facet : component.getFacets().values()) {
+                saveDescendantState(facet, context);
+            }
+        }
+
+    }
+
+}
+ at SuppressWarnings({"SerializableHasSerializationMethods",
+      "NonSerializableFieldInSerializableClass"})
+class SavedState implements Serializable {
+
+    private static final long serialVersionUID = 2920252657338389849L;
+    private Object submittedValue;
+    private boolean submitted;
+
+    Object getSubmittedValue() {
+        return (this.submittedValue);
+    }
+
+    void setSubmittedValue(Object submittedValue) {
+        this.submittedValue = submittedValue;
+    }
+
+    private boolean valid = true;
+
+    boolean isValid() {
+        return (this.valid);
+    }
+
+    void setValid(boolean valid) {
+        this.valid = valid;
+    }
+
+    private Object value;
+
+    Object getValue() {
+        return (this.value);
+    }
+
+    public void setValue(Object value) {
+        this.value = value;
+    }
+
+    private boolean localValueSet;
+
+    boolean isLocalValueSet() {
+        return (this.localValueSet);
+    }
+
+    public void setLocalValueSet(boolean localValueSet) {
+        this.localValueSet = localValueSet;
+    }
+
+    public boolean getSubmitted() {
+        return this.submitted;
+    }
+
+    public void setSubmitted(boolean submitted) {
+        this.submitted = submitted;
+    }
+
+	public boolean hasDeltaState() {
+		return submittedValue != null || value != null || localValueSet
+				|| !valid || submitted;
+	}
+    
+    public String toString() {
+        return ("submittedValue: " + submittedValue +
+                " value: " + value +
+                " localValueSet: " + localValueSet);
+    }
+
+}
+
+// Private class to wrap an event with a row index
+class WrapperEvent extends FacesEvent {
+
+
+    public WrapperEvent(UIComponent component, FacesEvent event, int rowIndex) {
+        super(component);
+        this.event = event;
+        this.rowIndex = rowIndex;
+    }
+
+    private FacesEvent event = null;
+    private int rowIndex = -1;
+
+    public FacesEvent getFacesEvent() {
+        return (this.event);
+    }
+
+    public int getRowIndex() {
+        return (this.rowIndex);
+    }
+
+    public PhaseId getPhaseId() {
+        return (this.event.getPhaseId());
+    }
+
+    public void setPhaseId(PhaseId phaseId) {
+        this.event.setPhaseId(phaseId);
+    }
+
+    public boolean isAppropriateListener(FacesListener listener) {
+        return (false);
+    }
+
+    public void processListener(FacesListener listener) {
+        throw new IllegalStateException();
+    }
+
+
+}
diff --git a/jsf-api/src/main/java/javax/faces/component/UIForm.java b/jsf-api/src/main/java/javax/faces/component/UIForm.java
index f577aea..16d1e20 100644
--- a/jsf-api/src/main/java/javax/faces/component/UIForm.java
+++ b/jsf-api/src/main/java/javax/faces/component/UIForm.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -48,11 +52,11 @@ import javax.faces.event.PreValidateEvent;
 
 
 /**
- * <p><strong>UIForm</strong> is a {@link UIComponent} that represents an
- * input form to be presented to the user, and whose child components represent
- * (among other things) the input fields to be included when the form is
- * submitted.</p>
- * <p/>
+ * <p><strong class="changed_modified_2_1">UIForm</strong> is a {@link
+ * UIComponent} that represents an input form to be presented to the
+ * user, and whose child components represent (among other things) the
+ * input fields to be included when the form is submitted.</p>
+
  * <p>By default, the <code>rendererType</code> property must be set to
  * "<code>javax.faces.Form</code>".  This value can be changed by calling the
  * <code>setRendererType()</code> method.</p>
@@ -89,7 +93,9 @@ public class UIForm extends UIComponentBase implements NamingContainer, UniqueId
         /**
          * <p>Last id vended by {@link UIForm#createUniqueId(javax.faces.context.FacesContext, String)}.</p>
          */
-        lastId
+        lastId,
+        
+        submitted,
     }
 
 
@@ -125,40 +131,47 @@ public class UIForm extends UIComponentBase implements NamingContainer, UniqueId
     /**
      * <p>The form submitted flag for this {@link UIForm}.</p>
      */
-    private boolean submitted = false;
+    //private boolean submitted = false;
 
 
     /**
-     * <p>Returns the current value of the <code>submitted</code>
-     * property.  The default value is <code>false</code>.  See {@link
-     * #setSubmitted} for details.</p>
+     * <p><span class="changed_modified_2_1">Returns</span> the current value
+     * of the <code>submitted</code> property.  The default value is
+     * <code>false</code>.  See {@link #setSubmitted} for details.</p>
+
+     * <p class="changed_modified_2_1">This property must be kept as a
+     * transient property using the {@link
+     * UIComponent#getTransientStateHelper}.</p>
      */
     public boolean isSubmitted() {
 
-        return (this.submitted);
-
+        //return (this.submitted);
+        return (Boolean) getTransientStateHelper().getTransient(PropertyKeys.submitted, false);
     }
 
 
     /**
-     * <p>If <strong>this</strong> <code>UIForm</code> instance (as
-     * opposed to other forms in the page) is experiencing a submit
-     * during this request processing lifecycle, this method must be
-     * called, with <code>true</code> as the argument, during the {@link
+     * <p><span class="changed_modified_2_1">If</span>
+     * <strong>this</strong> <code>UIForm</code> instance (as opposed to
+     * other forms in the page) is experiencing a submit during this
+     * request processing lifecycle, this method must be called, with
+     * <code>true</code> as the argument, during the {@link
      * UIComponent#decode} for this <code>UIForm</code> instance.  If
      * <strong>this</strong> <code>UIForm</code> instance is
      * <strong>not</strong> experiencing a submit, this method must be
      * called, with <code>false</code> as the argument, during the
      * {@link UIComponent#decode} for this <code>UIForm</code>
-     * instance.</p>
-     * <p/>
-     * <p>The value of a <code>UIForm</code>'s submitted property must
-     * not be saved as part of its state.</p>
+     * instance.</p> <p/> <p>The value of a <code>UIForm</code>'s
+     * submitted property must not be saved as part of its state.</p>
+
+     * <p class="changed_modified_2_1">This property must be kept as a
+     * transient property using the {@link
+     * UIComponent#getTransientStateHelper}.</p>
      */
     public void setSubmitted(boolean submitted) {
 
-        this.submitted = submitted;
-
+        //this.submitted = submitted;
+        getTransientStateHelper().putTransient(PropertyKeys.submitted, submitted);
     }
 
     /**
@@ -270,11 +283,38 @@ public class UIForm extends UIComponentBase implements NamingContainer, UniqueId
 
     }
 
+    /**<p class="changed_modified_2_2">Generate an identifier for a component. The identifier
+     * will be prefixed with UNIQUE_ID_PREFIX, and will be unique
+     * within this component-container. Optionally, a unique seed value can
+     * be supplied by component creators which should be
+     * included in the generated unique id.</p>
+     * <p class="changed_added_2_2">
+     * If the <code>prependId</code> property has the value <code>false</code>,
+     * this method must call <code>createUniqueId</code> on the next ancestor
+     * <code>UniqueIdVendor</code>.
+     * </p>
+     *
+     * @param context FacesContext
+     * @param seed an optional seed value - e.g. based on the position of the component in the VDL-template
+     * @return a unique-id in this component-container
+     */
     public String createUniqueId(FacesContext context, String seed) {
-        Integer i = (Integer) getStateHelper().get(PropertyKeys.lastId);
-        int lastId = ((i != null) ? i : 0);
-        getStateHelper().put(PropertyKeys.lastId,  ++lastId);
-        return UIViewRoot.UNIQUE_ID_PREFIX + (seed == null ? lastId : seed);
+        if (isPrependId()) {
+            Integer i = (Integer) getStateHelper().get(PropertyKeys.lastId);
+            int lastId = ((i != null) ? i : 0);
+            getStateHelper().put(PropertyKeys.lastId,  ++lastId);
+            return UIViewRoot.UNIQUE_ID_PREFIX + (seed == null ? lastId : seed);
+        } else {
+            UIComponent ancestorNamingContainer = (getParent() == null) ? null : getParent().getNamingContainer();
+            String uid = null;
+            if (null != ancestorNamingContainer &&
+                    ancestorNamingContainer instanceof UniqueIdVendor) {
+                uid = ((UniqueIdVendor) ancestorNamingContainer).createUniqueId(context, seed);
+            } else {
+                uid = context.getViewRoot().createUniqueId(context, seed);
+            }
+            return uid;
+        }
     }
     
     /**
diff --git a/jsf-api/src/main/java/javax/faces/component/UIGraphic.java b/jsf-api/src/main/java/javax/faces/component/UIGraphic.java
index 2b9a1a1..477b42c 100644
--- a/jsf-api/src/main/java/javax/faces/component/UIGraphic.java
+++ b/jsf-api/src/main/java/javax/faces/component/UIGraphic.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -38,7 +42,6 @@ package javax.faces.component;
 
 
 import javax.el.ValueExpression;
-import javax.faces.context.FacesContext;
 import javax.faces.el.ValueBinding;
 
 
diff --git a/jsf-api/src/main/java/javax/faces/component/UIInput.java b/jsf-api/src/main/java/javax/faces/component/UIInput.java
index f62c028..8bdcd3a 100644
--- a/jsf-api/src/main/java/javax/faces/component/UIInput.java
+++ b/jsf-api/src/main/java/javax/faces/component/UIInput.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -65,15 +69,15 @@ import javax.faces.validator.Validator;
 import javax.faces.validator.ValidatorException;
 
 /**
- * <p><span class="changed_modified_2_0"><strong>UIInput</strong></span>
- * is a {@link UIComponent} that represents a component that both
- * displays output to the user (like {@link UIOutput} components do) and
- * processes request parameters on the subsequent request that need to
- * be decoded.  There are no restrictions on the data type of the local
- * value, or the object referenced by the value binding expression (if
- * any); however, individual {@link javax.faces.render.Renderer}s will
- * generally impose restrictions on the type of data they know how to
- * display.</p> 
+ * <p><span class="changed_modified_2_0 changed_modified_2_0_rev_a
+ * changed_modified_2_2"><strong>UIInput</strong></span> is a {@link
+ * UIComponent} that represents a component that both displays output to
+ * the user (like {@link UIOutput} components do) and processes request
+ * parameters on the subsequent request that need to be decoded.  There
+ * are no restrictions on the data type of the local value, or the
+ * object referenced by the value binding expression (if any); however,
+ * individual {@link javax.faces.render.Renderer}s will generally impose
+ * restrictions on the type of data they know how to display.</p>
  *
  * <p>During the <em>Apply Request Values</em> phase
  * of the request processing lifecycle, the decoded value of this
@@ -176,9 +180,9 @@ public class UIInput extends UIOutput implements EditableValueHolder {
     
     private static final Validator[] EMPTY_VALIDATOR = new Validator[0];
 
-    private Boolean emptyStringIsNull;
+    private transient Boolean emptyStringIsNull;
 
-    private Boolean validateEmptyFields;
+    private transient Boolean validateEmptyFields;
 
     enum PropertyKeys {
         /**
@@ -245,7 +249,7 @@ public class UIInput extends UIOutput implements EditableValueHolder {
     /**
      * <p>The submittedValue value of this {@link UIInput} component.</p>
      */
-    private Object submittedValue = null;
+    private transient Object submittedValue = null;
 
 
     /**
@@ -275,6 +279,19 @@ public class UIInput extends UIOutput implements EditableValueHolder {
 
     }
 
+    /**
+     * <p class="changed_added_2_2">If there is a local value, return it,
+     * otherwise return the result of calling {@code super.getVaue()}.</p>
+     * 
+     * @since 2.2
+     */
+
+    @Override
+    public Object getValue() {
+        return isLocalValueSet() ? getLocalValue() : super.getValue();
+    }
+    
+    @Override
     public void setValue(Object value) {
         super.setValue(value);
         // Mark the local value as set.
@@ -282,16 +299,17 @@ public class UIInput extends UIOutput implements EditableValueHolder {
     }
 
     /**
-     * <p>Convenience method to reset this component's value to the
+     * <p><span class="changed_modified_2_2">Convenience</span> method to reset 
+     * this component's value to the
      * un-initialized state.  This method does the following:</p>
      * <p/>
-     * <p>Call {@link #setValue} passing <code>null</code>.</p>
+     * <p class="changed_modified_2_2">Call {@link UIOutput#setValue}.</p>
      * <p/>
      * <p>Call {@link #setSubmittedValue} passing <code>null</code>.</p>
      * <p/>
-     * <p>Call {@link #setLocalValueSet} passing <code>false</code>.</p>
+     * <p>Clear state for property <code>localValueSet</code>.</p>
      * <p/>
-     * <p>Call {@link #setValid} passing <code>true</code>.</p>
+     * <p>Clear state for property <code>valid</code>.</p>
      * <p/>
      * <p>Upon return from this call if the instance had a
      * <code>ValueBinding</code> associated with it for the "value"
@@ -300,11 +318,12 @@ public class UIInput extends UIOutput implements EditableValueHolder {
      * returned from <code>getValue()</code>.</p>
      */
 
+    @Override
     public void resetValue() {
-        this.setValue(null);
+        super.resetValue();
         this.setSubmittedValue(null);
-        this.setLocalValueSet(false);
-        this.setValid(true);
+        getStateHelper().remove(PropertyKeys.localValueSet);
+        getStateHelper().remove(PropertyKeys.valid);
     }
 
 
@@ -811,8 +830,7 @@ public class UIInput extends UIOutput implements EditableValueHolder {
             FacesMessage message = null;
             try {
                 ve.setValue(context.getELContext(), getLocalValue());
-                setValue(null);
-                setLocalValueSet(false);
+                resetValue();
             } catch (ELException e) {
                 caught = e;
                 String messageStr = e.getMessage();
@@ -865,9 +883,9 @@ public class UIInput extends UIOutput implements EditableValueHolder {
 
 
     /**
-     * <p><span class="changed_modified_2_0">Perform</span> the
-     * following algorithm to validate the local value of this {@link
-     * UIInput}.</p>
+     * <p><span class="changed_modified_2_0
+     * changed_modified_2_2">Perform</span> the following algorithm to
+     * validate the local value of this {@link UIInput}.</p>
 
      * <ul>
 
@@ -907,11 +925,15 @@ public class UIInput extends UIOutput implements EditableValueHolder {
      * <li>If the <code>valid</code> property of this component is still
      * <code>true</code>, retrieve the previous value of the component
      * (with <code>getValue()</code>), store the new local value using
-     * <code>setValue()</code>, and reset the submitted value to
-     * null.  If the local value is different from
-     * the previous value of this component, fire a
-     * {@link ValueChangeEvent} to be broadcast to all interested
+     * <code>setValue()</code>, and reset the submitted value to null 
+     * <span class="changed_added_2_2">with a call to {@link #setSubmittedValue}
+     * passing {@code null} as the argument</span>.
+     * If the local value is different from the previous value of this
+     * component, <span class="changed_modified_2_1">as determined by a
+     * call to {@link #compareValues}</span>, fire a {@link
+     * ValueChangeEvent} to be broadcast to all interested
      * listeners.</li>
+
      * </ul>
      * <p/>
      * <p>Application components implementing {@link UIInput} that wish to
@@ -1177,22 +1199,44 @@ public class UIInput extends UIOutput implements EditableValueHolder {
 
 
     /**
-     * <p>Return <code>true</code> if the new value is different from the
-     * previous value.</p>
+     * <p>Return <code>true</code> if the new value is different from
+     * the previous value.  First compare the two values by passing
+     * <em>value</em> to the <code>equals</code> method on argument
+     * <em>previous</em>.  If that method returns <code>true</code>,
+     * return <code>true</code>.  If that method returns
+     * <code>false</code>, and both arguments implement
+     * <code>java.lang.Comparable</code>, compare the two values by
+     * passing <em>value</em> to the <code>compareTo</code> method on
+     * argument <em>previous</em>.  Return <code>true</code> if this
+     * method returns <code>0</code>, <code>false</code> otherwise.</p>
      *
      * @param previous old value of this component (if any)
      * @param value    new value of this component (if any)
      */
     protected boolean compareValues(Object previous, Object value) {
+        boolean result = true;
 
         if (previous == null) {
-            return (value != null);
+            result = (value != null);
         } else if (value == null) {
-            return (true);
+            result = true;
         } else {
-            return (!(previous.equals(value)));
+	    boolean previousEqualsValue = previous.equals(value);
+	    if (!previousEqualsValue && 
+		previous instanceof Comparable &&
+		value instanceof Comparable) {
+                try {
+                    result = !(0 == ((Comparable) previous).
+                                      compareTo((Comparable) value));
+                } catch (ClassCastException cce) {
+                    // Comparable throws CCE if the types prevent a comparison
+                    result = true;
+                }
+	    } else {
+		result = !previousEqualsValue;
+	    }
         }
-
+        return result;
     }
 
 
@@ -1228,11 +1272,16 @@ public class UIInput extends UIOutput implements EditableValueHolder {
             if (((List) value).isEmpty()) {
                 return (true);
             }
+        } else if (value instanceof Collection) {
+            if (((Collection) value).isEmpty()) {
+                return (true);
+            }
+        } else if ((value instanceof Map) && (((Map) value).isEmpty())) {
+            return true;
         }
         return (false);
     }
 
-
     /**
      * <p>The set of {@link Validator}s associated with this
      * <code>UIComponent</code>.</p>
@@ -1339,28 +1388,25 @@ public class UIInput extends UIOutput implements EditableValueHolder {
 
     // ----------------------------------------------------- StateHolder Methods
 
-
-
-    private Object[] values;
-
+    @Override
     public Object saveState(FacesContext context) {
-
         if (context == null) {
             throw new NullPointerException();
         }
-        if (values == null) {
-            values = new Object[4];
-        }
-
-        values[0] = super.saveState(context);
-        values[1] = emptyStringIsNull;
-        values[2] = validateEmptyFields;
-        values[3] = ((validators != null) ? validators.saveState(context) : null);
-        return (values);
 
+        Object[] result = null;
+        
+        Object superState = super.saveState(context);
+        Object validatorsState = ((validators != null) ? validators.saveState(context) : null);
+        
+        if (superState != null || validatorsState != null) {
+            result = new Object[] { superState, validatorsState};
+        }
+        
+        return (result);
     }
 
-
+    @Override
     public void restoreState(FacesContext context, Object state) {
 
         if (context == null) {
@@ -1370,15 +1416,13 @@ public class UIInput extends UIOutput implements EditableValueHolder {
         if (state == null) {
             return;
         }
-        values = (Object[]) state;
+        Object[] values = (Object[]) state;
         super.restoreState(context, values[0]);
-        emptyStringIsNull = (Boolean) values[1];
-        validateEmptyFields = (Boolean) values[2];
-        if (values[3] != null) {
+        if (values[1] != null) {
             if (validators == null) {
                 validators = new AttachedObjectListHolder<Validator>();
             }
-            validators.restoreState(context, values[3]);
+            validators.restoreState(context, values[1]);
         }
 
     }
diff --git a/jsf-api/src/main/java/javax/faces/component/UIMessage.java b/jsf-api/src/main/java/javax/faces/component/UIMessage.java
index 9875a9a..5945832 100644
--- a/jsf-api/src/main/java/javax/faces/component/UIMessage.java
+++ b/jsf-api/src/main/java/javax/faces/component/UIMessage.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-api/src/main/java/javax/faces/component/UIMessages.java b/jsf-api/src/main/java/javax/faces/component/UIMessages.java
index 06b254e..beb28f5 100644
--- a/jsf-api/src/main/java/javax/faces/component/UIMessages.java
+++ b/jsf-api/src/main/java/javax/faces/component/UIMessages.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-api/src/main/java/javax/faces/component/UINamingContainer.java b/jsf-api/src/main/java/javax/faces/component/UINamingContainer.java
index 7ab034e..c73f488 100644
--- a/jsf-api/src/main/java/javax/faces/component/UINamingContainer.java
+++ b/jsf-api/src/main/java/javax/faces/component/UINamingContainer.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -38,6 +42,8 @@ package javax.faces.component;
 
 import java.util.Collection;
 
+import java.util.logging.Level;
+import java.util.logging.Logger;
 import javax.faces.component.visit.VisitCallback;
 import javax.faces.component.visit.VisitContext;
 import javax.faces.component.visit.VisitResult;
@@ -55,7 +61,9 @@ public class UINamingContainer extends UIComponentBase
 
 
     // ------------------------------------------------------ Manifest Constants
-
+    
+    private static Logger LOGGER = Logger.getLogger("javax.faces.component",
+            "javax.faces.LogStrings");
 
     /**
      * <p>The standard component type for this component.</p>
@@ -120,6 +128,13 @@ public class UINamingContainer extends UIComponentBase
      * @since 2.0
      */
     public static char getSeparatorChar(FacesContext context) {
+        
+        if (null == context) {
+            if (LOGGER.isLoggable(Level.SEVERE)) {
+                LOGGER.log(Level.SEVERE, "UINamingContainer.getSeparatorChar() called with null FacesContext. This indicates a SEREVER error. Returning {0}", NamingContainer.SEPARATOR_CHAR);
+            }
+            return NamingContainer.SEPARATOR_CHAR;
+        }
 
 
         Character separatorChar =
diff --git a/jsf-api/src/main/java/javax/faces/component/UIOutcomeTarget.java b/jsf-api/src/main/java/javax/faces/component/UIOutcomeTarget.java
index c992154..487e516 100644
--- a/jsf-api/src/main/java/javax/faces/component/UIOutcomeTarget.java
+++ b/jsf-api/src/main/java/javax/faces/component/UIOutcomeTarget.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -36,14 +40,9 @@
 
 package javax.faces.component;
 
-import javax.el.ELException;
-import javax.el.ValueExpression;
-import javax.faces.FacesException;
-import javax.faces.context.FacesContext;
-
-
 /**
- * <p class="changed_added_2_0">This component is paired with the
+ * <p class="changed_added_2_0"><span class="changed_modified_2_2">This</span>
+ * component is paired with the
  * <code>javax.faces.Button</code> or <code>javax.faces.Link</code>
  * renderers and encapsulates properties relating to the rendering of
  * outcomes directly to the response.  This enables bookmarkability in
@@ -71,7 +70,8 @@ public class UIOutcomeTarget extends UIOutput {
 
     enum PropertyKeys {
         includeViewParams,
-        outcome
+        outcome,
+        disableClientWindow
     }
 
 
@@ -124,6 +124,31 @@ public class UIOutcomeTarget extends UIOutput {
         getStateHelper().put(PropertyKeys.includeViewParams, includeViewParams);
 
     }
+    
+    /**
+     * <p class="changed_added_2_2">Return whether or not the client window
+     * should be encoded into the target url.</p>
+     *
+     * @since 2.0
+     */
+    public boolean isDisableClientWindow() {
+        return (Boolean) getStateHelper().eval(PropertyKeys.disableClientWindow, false);
+    }
+    
+    /**
+     * <p class="changed_added_2_2">Set whether or not the client window
+     * should be encoded into the target url.</p>
+     * 
+     * @param disableClientWindow if @{code true}, the client window will not be included
+     * in this outcome target.
+     * 
+     * @since 2.2
+     */
+
+    public void setDisableClientWindow(boolean disableClientWindow) {
+        getStateHelper().put(PropertyKeys.disableClientWindow, disableClientWindow);
+    }
+
 
 
     /**
diff --git a/jsf-api/src/main/java/javax/faces/component/UIOutput.java b/jsf-api/src/main/java/javax/faces/component/UIOutput.java
index e89e94f..f8d1556 100644
--- a/jsf-api/src/main/java/javax/faces/component/UIOutput.java
+++ b/jsf-api/src/main/java/javax/faces/component/UIOutput.java
@@ -1,268 +1,303 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package javax.faces.component;
-
-
-import javax.faces.context.FacesContext;
-import javax.faces.convert.Converter;
-
-
-
-/**
- * <p><strong>UIOutput</strong> is a {@link UIComponent} that has a
- * value, optionally retrieved from a model tier bean via a value
- * expression, that is displayed to the user.  The user cannot directly
- * modify the rendered value; it is for display purposes only.</p>
- *
- * <p>During the <em>Render Response</em> phase of the request processing
- * lifecycle, the current value of this component must be
- * converted to a String (if it is not already), according to the following
- * rules:</p>
- * <ul>
- * <li>If the current value is not <code>null</code>, and is not already
- *     a <code>String</code>, locate a {@link Converter} (if any) to use
- *     for the conversion, as follows:
- *     <ul>
- *     <li>If <code>getConverter()</code> returns a non-null {@link Converter},
- *         use that one, otherwise</li>
- *     <li>If <code>Application.createConverter(Class)</code>, passing the
- *         current value's class, returns a non-null {@link Converter},
- *         use that one.</li>
- *     </ul></li>
- * <li>If the current value is not <code>null</code> and a {@link Converter}
- *     was located, call its <code>getAsString()</code> method to perform
- *     the conversion.</li>
- * <li>If the current value is not <code>null</code> but no {@link Converter}
- *     was located, call <code>toString()</code> on the current value to perform
- *     the conversion.</li>
- * </ul>
- *
- * <p>By default, the <code>rendererType</code> property must be set to
- * "<code>javax.faces.Text</code>".  This value can be changed by calling the
- * <code>setRendererType()</code> method.</p>
- */
-
-public class UIOutput extends UIComponentBase
-    implements ValueHolder {
-
-
-    // ------------------------------------------------------ Manifest Constants
-
-
-    /**
-     * <p>The standard component type for this component.</p>
-     */
-    public static final String COMPONENT_TYPE = "javax.faces.Output";
-
-
-    /**
-     * <p>The standard component family for this component.</p>
-     */
-    public static final String COMPONENT_FAMILY = "javax.faces.Output";
-
-
-    enum PropertyKeys {
-        value,
-        converter
-    }
-
-    private Converter converter;
-
-
-    // ------------------------------------------------------------ Constructors
-
-
-    /**
-     * <p>Create a new {@link UIOutput} instance with default property
-     * values.</p>
-     */
-    public UIOutput() {
-
-        super();
-        setRendererType("javax.faces.Text");
-
-    }
-
-
-    // -------------------------------------------------------------- Properties
-
-
-    public String getFamily() {
-
-        return (COMPONENT_FAMILY);
-
-    }
-
-
-    // --------------------------------------- EditableValueHolder Properties
-
-
-    public Converter getConverter() {
-
-        if (this.converter != null) {
-            return (this.converter);
-        }
-        return (Converter) getStateHelper().eval(PropertyKeys.converter);
-
-    }
-
-
-    public void setConverter(Converter converter) {
-
-        clearInitialState();
-        // we don't push the converter to the StateHelper
-        // if it's been explicitly set (i.e. it's not a ValueExpression
-        // reference
-        this.converter = converter;
-
-    }
-
-
-    public Object getLocalValue() {
-
-        return getStateHelper().get(PropertyKeys.value);
-
-    }
-
-
-    public Object getValue() {
-
-        return getStateHelper().eval(PropertyKeys.value);
-
-    }
-
-
-    public void setValue(Object value) {
-
-        getStateHelper().put(PropertyKeys.value, value);
-
-    }
-
-
-    /**
-     * <p>
-     * In addition to the actions taken in {@link UIComponentBase}
-     * when {@link PartialStateHolder#markInitialState()} is called,
-     * check if the installed {@link Converter} is a PartialStateHolder and
-     * if it is, call {@link javax.faces.component.PartialStateHolder#markInitialState()}
-     * on it.
-     * </p>
-     */
-    @Override
-    public void markInitialState() {
-
-        super.markInitialState();
-        Converter c = getConverter();
-        if (c != null && c instanceof PartialStateHolder) {
-            ((PartialStateHolder) c).markInitialState();
-        }
-
-    }
-
-
-    @Override
-    public void clearInitialState() {
-
-        if (initialStateMarked()) {
-            super.clearInitialState();
-            Converter c = getConverter();
-            if (c != null && c instanceof PartialStateHolder) {
-                ((PartialStateHolder) c).clearInitialState();
-            }
-        }
-
-    }
-
-
-    @Override
-    public Object saveState(FacesContext context) {
-
-        if (context == null) {
-            throw new NullPointerException();
-        }
-        Object[] values = (Object[]) super.saveState(context);
-        Object converterState = null;
-        if (converter != null) {
-            if (!initialStateMarked()) {
-                // we saving the full state
-                converterState = saveAttachedState(context, converter);
-            } else {
-                if (converter instanceof StateHolder) {
-                    StateHolder sh = (StateHolder) converter;
-                    if (!sh.isTransient()) {
-                        converterState = ((StateHolder) converter).saveState(context);
-                    }
-                }
-            }
-        }
-        if (converterState != null || values != null) {
-            return new Object[] { values, converterState };
-        }
-        return values;
-
-    }
-
-    
-    @Override
-    public void restoreState(FacesContext context, Object state) {
-
-        if (context == null) {
-            throw new NullPointerException();
-        }
-
-        if (state == null) {
-            return;
-        }
-        Object[] values = (Object[]) state;
-        super.restoreState(context, values[0]);
-        Object converterState = values[1];
-        if (converterState instanceof StateHolderSaver) {
-            // this means full state was saved and as such
-            // overwrite any existing converter with the saved
-            // converter
-            converter = (Converter) restoreAttachedState(context,
-                                                         converterState);
-        } else {
-            // apply any saved state to the existing converter
-            if (converterState != null && converter instanceof StateHolder) {
-                ((StateHolder) converter)
-                      .restoreState(context, converterState);
-            }
-        }
-
-    }
-}
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package javax.faces.component;
+
+
+import javax.faces.context.FacesContext;
+import javax.faces.convert.Converter;
+
+
+
+/**
+ * <p><strong class="changed_modified_2_0_rev_a changed_modified_2_2">UIOutput</strong> is a
+ * {@link UIComponent} that has a value, optionally retrieved from a
+ * model tier bean via a value expression, that is displayed to the
+ * user.  The user cannot directly modify the rendered value; it is for
+ * display purposes only.</p>
+ *
+ * <p>During the <em>Render Response</em> phase of the request processing
+ * lifecycle, the current value of this component must be
+ * converted to a String (if it is not already), according to the following
+ * rules:</p>
+ * <ul>
+ * <li>If the current value is not <code>null</code>, and is not already
+ *     a <code>String</code>, locate a {@link Converter} (if any) to use
+ *     for the conversion, as follows:
+ *     <ul>
+ *     <li>If <code>getConverter()</code> returns a non-null {@link Converter},
+ *         use that one, otherwise</li>
+ *     <li>If <code>Application.createConverter(Class)</code>, passing the
+ *         current value's class, returns a non-null {@link Converter},
+ *         use that one.</li>
+ *     </ul></li>
+ * <li>If the current value is not <code>null</code> and a {@link Converter}
+ *     was located, call its <code>getAsString()</code> method to perform
+ *     the conversion.</li>
+ * <li>If the current value is not <code>null</code> but no {@link Converter}
+ *     was located, call <code>toString()</code> on the current value to perform
+ *     the conversion.</li>
+ * </ul>
+ *
+ * <p>By default, the <code>rendererType</code> property must be set to
+ * "<code>javax.faces.Text</code>".  This value can be changed by calling the
+ * <code>setRendererType()</code> method.</p>
+ */
+
+public class UIOutput extends UIComponentBase
+    implements ValueHolder {
+
+
+    // ------------------------------------------------------ Manifest Constants
+
+
+    /**
+     * <p>The standard component type for this component.</p>
+     */
+    public static final String COMPONENT_TYPE = "javax.faces.Output";
+
+
+    /**
+     * <p>The standard component family for this component.</p>
+     */
+    public static final String COMPONENT_FAMILY = "javax.faces.Output";
+
+    private static final String FORCE_FULL_CONVERTER_STATE = "com.sun.faces.component.UIOutput.forceFullConverterState";
+
+    enum PropertyKeys {
+        value,
+        converter
+    }
+
+    private Converter converter;
+
+
+    // ------------------------------------------------------------ Constructors
+
+
+    /**
+     * <p>Create a new {@link UIOutput} instance with default property
+     * values.</p>
+     */
+    public UIOutput() {
+
+        super();
+        setRendererType("javax.faces.Text");
+
+    }
+
+
+    // -------------------------------------------------------------- Properties
+
+
+    public String getFamily() {
+
+        return (COMPONENT_FAMILY);
+
+    }
+
+
+    // --------------------------------------- EditableValueHolder Properties
+
+
+    public Converter getConverter() {
+
+        if (this.converter != null) {
+            return (this.converter);
+        }
+        return (Converter) getStateHelper().eval(PropertyKeys.converter);
+
+    }
+
+
+    public void setConverter(Converter converter) {
+
+        clearInitialState();
+        // we don't push the converter to the StateHelper
+        // if it's been explicitly set (i.e. it's not a ValueExpression
+        // reference
+        this.converter = converter;
+
+    }
+
+
+    public Object getLocalValue() {
+
+        return getStateHelper().get(PropertyKeys.value);
+
+    }
+
+    /**
+     * <p class="changed_added_2_2">Return the value property.</p>
+     * 
+     * @since 2.2
+     */
+    public Object getValue() {
+
+        return getStateHelper().eval(PropertyKeys.value);
+
+    }
+
+
+    public void setValue(Object value) {
+        getStateHelper().put(PropertyKeys.value, value);
+
+    }
+    
+    /**
+     * <p class="changed_added_2_2">Convenience method to reset this component's value to the
+     * un-initialized state.</p>
+     * 
+     * @since 2.2
+     */
+
+    public void resetValue() {
+        getStateHelper().remove(PropertyKeys.value);
+    }
+
+
+    /**
+     * <p>
+     * In addition to the actions taken in {@link UIComponentBase}
+     * when {@link PartialStateHolder#markInitialState()} is called,
+     * check if the installed {@link Converter} is a PartialStateHolder and
+     * if it is, call {@link javax.faces.component.PartialStateHolder#markInitialState()}
+     * on it.
+     * </p>
+     */
+    @Override
+    public void markInitialState() {
+
+        super.markInitialState();
+        Converter c = getConverter();
+        if (c != null && c instanceof PartialStateHolder) {
+            ((PartialStateHolder) c).markInitialState();
+        }
+
+    }
+
+
+    @Override
+    public void clearInitialState() {
+
+        if (initialStateMarked()) {
+            super.clearInitialState();
+            Converter c = getConverter();
+            if (c != null && c instanceof PartialStateHolder) {
+                ((PartialStateHolder) c).clearInitialState();
+            }
+        }
+
+    }
+
+
+    @Override
+    public Object saveState(FacesContext context) {
+
+        if (context == null) {
+            throw new NullPointerException();
+        }
+        Object converterState = null;
+        if (converter != null) {
+            if (!initialStateMarked() || getAttributes().containsKey(FORCE_FULL_CONVERTER_STATE)) {                
+                /*
+                 * Check if our parent component has its initial state marked
+                 * and we know we don't. That means we are not using the same 
+                 * state saving algorithm. So we are going to ALWAYS force to
+                 * do FSS for the converter.
+                 */
+                if (getParent() != null && getParent().initialStateMarked()) {
+                    getAttributes().put(FORCE_FULL_CONVERTER_STATE, true);
+                    if (converter instanceof PartialStateHolder) {
+                        PartialStateHolder psh = (PartialStateHolder) converter;
+                        psh.clearInitialState();
+                    }
+                }
+                
+                converterState = saveAttachedState(context, converter);
+            } else {
+                if (converter instanceof StateHolder) {
+                    StateHolder sh = (StateHolder) converter;
+                    if (!sh.isTransient()) {
+                        converterState = ((StateHolder) converter).saveState(context);
+                    }
+                }
+            }
+        }
+        
+        Object[] values = (Object[]) super.saveState(context);
+        
+        if (converterState != null || values != null) {
+            return new Object[] { values, converterState };
+        }
+        return values;
+
+    }
+
+    
+    @Override
+    public void restoreState(FacesContext context, Object state) {
+
+        if (context == null) {
+            throw new NullPointerException();
+        }
+
+        if (state == null) {
+            return;
+        }
+        Object[] values = (Object[]) state;
+        super.restoreState(context, values[0]);
+        Object converterState = values[1];
+        if (converterState instanceof StateHolderSaver) {
+            // this means full state was saved and as such
+            // overwrite any existing converter with the saved
+            // converter
+            converter = (Converter) restoreAttachedState(context,
+                                                         converterState);
+        } else {
+            // apply any saved state to the existing converter
+            if (converterState != null && converter instanceof StateHolder) {
+                ((StateHolder) converter)
+                      .restoreState(context, converterState);
+            }
+        }
+
+    }
+}
diff --git a/jsf-api/src/main/java/javax/faces/component/UIPanel.java b/jsf-api/src/main/java/javax/faces/component/UIPanel.java
index 1cb2431..c169ad3 100644
--- a/jsf-api/src/main/java/javax/faces/component/UIPanel.java
+++ b/jsf-api/src/main/java/javax/faces/component/UIPanel.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-api/src/main/java/javax/faces/component/UIParameter.java b/jsf-api/src/main/java/javax/faces/component/UIParameter.java
index 95c45cf..fb76a4e 100644
--- a/jsf-api/src/main/java/javax/faces/component/UIParameter.java
+++ b/jsf-api/src/main/java/javax/faces/component/UIParameter.java
@@ -1,181 +1,185 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package javax.faces.component;
-
-
-
-/**
- * <p><strong>UIParameter</strong> is a {@link UIComponent} that represents
- * an optionally named configuration parameter for a parent component.</p>
- *
- * <p>Parent components should retrieve the value of a parameter by calling
- * <code>getValue()</code>.  In this way, the parameter value can be set
- * directly on the component (via <code>setValue()</code>), or retrieved
- * indirectly via the value binding expression.</p>
- *
- * <p>In some scenarios, it is necessary to provide a parameter name, in
- * addition to the parameter value that is accessible via the
- * <code>getValue()</code> method.
- * {@link javax.faces.render.Renderer}s that support parameter names on their
- * nested {@link UIParameter} child components should document
- * their use of this property.</p>
- *
- */
-
-public class UIParameter extends UIComponentBase {
-
-
-    // ------------------------------------------------------ Manifest Constants
-
-
-    /**
-     * <p>The standard component type for this component.</p>
-     */
-    public static final String COMPONENT_TYPE = "javax.faces.Parameter";
-
-
-    /**
-     * <p>The standard component family for this component.</p>
-     */
-    public static final String COMPONENT_FAMILY = "javax.faces.Parameter";
-
-
-    enum PropertyKeys {
-        name,
-        value,
-        disble
-    }
-
-
-    // ------------------------------------------------------------ Constructors
-
-
-    /**
-     * <p>Create a new {@link UIParameter} instance with default property
-     * values.</p>
-     */
-    public UIParameter() {
-
-        super();
-        setRendererType(null);
-
-    }
-
-
-    // -------------------------------------------------------------- Properties
-
-
-    public String getFamily() {
-
-        return (COMPONENT_FAMILY);
-
-    }
-
-
-    /**
-     * <p>Return the optional parameter name for this parameter.</p>
-     */
-    public String getName() {
-
-        return (String) getStateHelper().eval(PropertyKeys.name);
-
-    }
-
-
-    /**
-     * <p>Set the optional parameter name for this parameter.</p>
-     *
-     * @param name The new parameter name,
-     *  or <code>null</code> for no name
-     */
-    public void setName(String name) {
-
-        getStateHelper().put(PropertyKeys.name, name);
-
-    }
-
-
-
-    /**
-     * <p>Returns the <code>value</code> property of the
-     * <code>UIParameter</code>.</p>
-     */
-    public Object getValue() {
-
-        return getStateHelper().eval(PropertyKeys.value);
-
-    }
-
-
-    /**
-     * <p>Sets the <code>value</code> property of the\
-     * <code>UIParameter</code>.</p>
-     *
-     * @param value the new value
-     */
-    public void setValue(Object value) {
-
-        getStateHelper().put(PropertyKeys.value, value);
-
-    }
-
-    /**
-     * <p class="changed_added_2_0">Return the value of the <code>disable</code>
-     * directive for this component. This directive determines whether the
-     * parameter value should be disabled by assigning it a null value.
-     * If true, the <code>value</code> set on this component is ignored.</p>
-     * @since 2.0
-     */
-    public boolean isDisable() {
-
-        return (Boolean) getStateHelper().eval(PropertyKeys.disble, false);
-
-    }
-
-    /**
-     * <p>Sets the <code>disable</code> property of the <code>UIParameter</code>.</p>
-     * @param disable
-     * @since 2.0
-     */
-    public void setDisable(boolean disable) {
-
-        getStateHelper().put(PropertyKeys.disble, disable);
-
-    }
-
-
-}
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package javax.faces.component;
+
+
+
+/**
+ * <p><strong>UIParameter</strong> is a {@link UIComponent} that represents
+ * an optionally named configuration parameter for a parent component.</p>
+ *
+ * <p>Parent components should retrieve the value of a parameter by calling
+ * <code>getValue()</code>.  In this way, the parameter value can be set
+ * directly on the component (via <code>setValue()</code>), or retrieved
+ * indirectly via the value binding expression.</p>
+ *
+ * <p>In some scenarios, it is necessary to provide a parameter name, in
+ * addition to the parameter value that is accessible via the
+ * <code>getValue()</code> method.
+ * {@link javax.faces.render.Renderer}s that support parameter names on their
+ * nested {@link UIParameter} child components should document
+ * their use of this property.</p>
+ *
+ */
+
+public class UIParameter extends UIComponentBase {
+
+
+    // ------------------------------------------------------ Manifest Constants
+
+
+    /**
+     * <p>The standard component type for this component.</p>
+     */
+    public static final String COMPONENT_TYPE = "javax.faces.Parameter";
+
+
+    /**
+     * <p>The standard component family for this component.</p>
+     */
+    public static final String COMPONENT_FAMILY = "javax.faces.Parameter";
+
+
+    enum PropertyKeys {
+        name,
+        value,
+        disable
+    }
+
+
+    // ------------------------------------------------------------ Constructors
+
+
+    /**
+     * <p>Create a new {@link UIParameter} instance with default property
+     * values.</p>
+     */
+    public UIParameter() {
+
+        super();
+        setRendererType(null);
+
+    }
+
+
+    // -------------------------------------------------------------- Properties
+
+
+    public String getFamily() {
+
+        return (COMPONENT_FAMILY);
+
+    }
+
+
+    /**
+     * <p>Return the optional parameter name for this parameter.</p>
+     */
+    public String getName() {
+
+        return (String) getStateHelper().eval(PropertyKeys.name);
+
+    }
+
+
+    /**
+     * <p>Set the optional parameter name for this parameter.</p>
+     *
+     * @param name The new parameter name,
+     *  or <code>null</code> for no name
+     */
+    public void setName(String name) {
+
+        getStateHelper().put(PropertyKeys.name, name);
+
+    }
+
+
+
+    /**
+     * <p>Returns the <code>value</code> property of the
+     * <code>UIParameter</code>.</p>
+     */
+    public Object getValue() {
+
+        return getStateHelper().eval(PropertyKeys.value);
+
+    }
+
+
+    /**
+     * <p>Sets the <code>value</code> property of the\
+     * <code>UIParameter</code>.</p>
+     *
+     * @param value the new value
+     */
+    public void setValue(Object value) {
+
+        getStateHelper().put(PropertyKeys.value, value);
+
+    }
+
+    /**
+     * <p class="changed_added_2_0">Return the value of the <code>disable</code>
+     * directive for this component. This directive determines whether the
+     * parameter value should be disabled by assigning it a null value.
+     * If true, the <code>value</code> set on this component is ignored.</p>
+     * @since 2.0
+     */
+    public boolean isDisable() {
+
+        return (Boolean) getStateHelper().eval(PropertyKeys.disable, false);
+
+    }
+
+    /**
+     * <p>Sets the <code>disable</code> property of the <code>UIParameter</code>.</p>
+     * @param disable
+     * @since 2.0
+     */
+    public void setDisable(boolean disable) {
+
+        getStateHelper().put(PropertyKeys.disable, disable);
+
+    }
+
+
+}
diff --git a/jsf-api/src/main/java/javax/faces/component/UISelectBoolean.java b/jsf-api/src/main/java/javax/faces/component/UISelectBoolean.java
index 61ccdfe..0884e1b 100644
--- a/jsf-api/src/main/java/javax/faces/component/UISelectBoolean.java
+++ b/jsf-api/src/main/java/javax/faces/component/UISelectBoolean.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-api/src/main/java/javax/faces/component/UISelectItem.java b/jsf-api/src/main/java/javax/faces/component/UISelectItem.java
index 2765179..8e42ae8 100644
--- a/jsf-api/src/main/java/javax/faces/component/UISelectItem.java
+++ b/jsf-api/src/main/java/javax/faces/component/UISelectItem.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -42,18 +46,19 @@ import javax.faces.model.SelectItem;
 
 
 /**
- * <p><strong class="changed_modified_2_0">UISelectItem</strong> is a
- * component that may be nested inside a {@link UISelectMany} or {@link
- * UISelectOne} component, and causes the addition of a {@link
- * SelectItem} instance to the list of available options for the parent
- * component.  The contents of the {@link SelectItem} can be specified
- * in one of the following ways:</p> <ul> <li>The <code>value</code>
- * attribute's value is an instance of {@link SelectItem}.</li> <li>The
- * associated {@link javax.el.ValueExpression} points at a model data
- * item of type {@link SelectItem}.</li> <li>A new {@link SelectItem}
- * instance is synthesized from the values of the
- * <code>itemDescription</code>, <code>itemDisabled</code>,
- * <code>itemLabel</code>, <code>itemEscaped</code>, and
+ * <p><strong class="changed_modified_2_0
+ * changed_modified_2_0_rev_a">UISelectItem</strong> is a component that
+ * may be nested inside a {@link UISelectMany} or {@link UISelectOne}
+ * component, and causes the addition of a {@link SelectItem} instance
+ * to the list of available options for the parent component.  The
+ * contents of the {@link SelectItem} can be specified in one of the
+ * following ways:</p> <ul> <li>The <code>value</code> attribute's value
+ * is an instance of {@link SelectItem}.</li> <li>The associated {@link
+ * javax.el.ValueExpression} points at a model data item of type {@link
+ * SelectItem}.</li> <li>A new {@link SelectItem} instance is
+ * synthesized from the values of the <code>itemDescription</code>,
+ * <code>itemDisabled</code>, <code>itemLabel</code>, <code
+ * class="changed_modified_2_0_rev_a">itemEscaped</code>, and
  * <code>itemValue</code> attributes.</li> </ul>
  */
 
diff --git a/jsf-api/src/main/java/javax/faces/component/UISelectItems.java b/jsf-api/src/main/java/javax/faces/component/UISelectItems.java
index 32bdd1d..668d400 100644
--- a/jsf-api/src/main/java/javax/faces/component/UISelectItems.java
+++ b/jsf-api/src/main/java/javax/faces/component/UISelectItems.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-api/src/main/java/javax/faces/component/UISelectMany.java b/jsf-api/src/main/java/javax/faces/component/UISelectMany.java
index 0c852bc..2b7c766 100644
--- a/jsf-api/src/main/java/javax/faces/component/UISelectMany.java
+++ b/jsf-api/src/main/java/javax/faces/component/UISelectMany.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -40,9 +44,7 @@ package javax.faces.component;
 import java.lang.reflect.Array;
 import java.util.Collection;
 import java.util.Iterator;
-import java.util.List;
 import java.util.NoSuchElementException;
-
 import javax.el.ValueExpression;
 import javax.faces.application.FacesMessage;
 import javax.faces.context.FacesContext;
diff --git a/jsf-api/src/main/java/javax/faces/component/UISelectOne.java b/jsf-api/src/main/java/javax/faces/component/UISelectOne.java
index e0377f5..9c42b28 100644
--- a/jsf-api/src/main/java/javax/faces/component/UISelectOne.java
+++ b/jsf-api/src/main/java/javax/faces/component/UISelectOne.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-api/src/main/java/javax/faces/component/UIViewAction.java b/jsf-api/src/main/java/javax/faces/component/UIViewAction.java
new file mode 100644
index 0000000..742fbef
--- /dev/null
+++ b/jsf-api/src/main/java/javax/faces/component/UIViewAction.java
@@ -0,0 +1,753 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2011, Red Hat, Inc., and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package javax.faces.component;
+
+import java.util.Map;
+import javax.el.MethodExpression;
+import javax.faces.FacesException;
+import javax.faces.application.NavigationHandler;
+import javax.faces.context.FacesContext;
+import javax.faces.context.FacesContextWrapper;
+import javax.faces.el.MethodBinding;
+import javax.faces.event.AbortProcessingException;
+import javax.faces.event.ActionEvent;
+import javax.faces.event.ActionListener;
+import javax.faces.event.FacesEvent;
+import javax.faces.event.PhaseId;
+import javax.faces.event.PreRenderViewEvent;
+import javax.faces.view.ViewMetadata;
+
+/**
+
+ * <p class="changed_added_2_2"><strong>UIViewAction</strong> represents
+ * a method invocation that occurs during the request processing
+ * lifecycle, usually in response to an initial request, as opposed to a
+ * postback.</p>
+
+ * <div class="changed_added_2_2">
+
+ * <p>The {@link javax.faces.view.ViewDeclarationLanguage}
+ * implementation must cause an instance of this component to be placed
+ * in the view for each occurrence of an <code><f:viewAction
+ * /></code> element placed inside of an <code><f:metadata
+ * /></code> element.  The user must place <code><f:metadata
+ * /></code> as a direct child of the <code>UIViewRoot</code>.</p>
+
+ * <p>Because this class implements {@link ActionSource2}, any actions
+ * that one would normally take on a component that implements
+ * <code>ActionSource2</code>, such as {@link UICommand}, are valid for
+ * instances of this class.  Instances of this class participate in the
+ * regular JSF lifecycle, including on Ajax requests.</p>
+
+ * <p>The purpose of this component is to provide a light-weight
+ * front-controller solution for executing code upon the loading of a
+ * JSF view to support the integration of system services, content
+ * retrieval, view management, and navigation. This functionality is
+ * especially useful for non-faces (initial) requests.</p>
+
+ * <p>The most common use case for this component is to take actions
+ * necessary for a particular view, often with the help of one or more
+ * {@link UIViewParameter}s.</p>
+
+ * <p>The {@link NavigationHandler} is consulted after the action is
+ * invoked to carry out the navigation case that matches the action
+ * signature and outcome. If a navigation case is matched that causes
+ * the new viewId to be different from the current viewId, the runtime
+ * must force a redirect to that matched navigation case with different
+ * viewId, regardless of whether or not the matched navigation case with
+ * different viewId called for a redirect.  If the response is marked
+ * complete by the action, the lifecycle advances appropriately.</p>
+
+ * <p>It's important to note that the full component tree is not built
+ * before the UIViewAction components are processed on an non-faces
+ * (initial) request. Rather, the component tree only contains the
+ * {@link ViewMetadata}, an important part of the optimization of this
+ * component and what sets it apart from a {@link PreRenderViewEvent}
+ * listener.</p>
+ *
+ * </div>
+
+ * @since 2.2
+ */
+public class UIViewAction extends UIComponentBase implements ActionSource2 {
+
+    // ------------------------------------------------------ Manifest Constants
+
+    /**
+     * <p>
+     * The standard component type for this component.
+     * </p>
+     */
+    public static final String COMPONENT_TYPE = "javax.faces.ViewAction";
+
+    /**
+     * <p>
+     * The standard component family for this component.
+     * </p>
+     */
+    public static final String COMPONENT_FAMILY = "javax.faces.ViewAction";
+    
+    private static final String UIVIEWACTION_BROADCAST = "javax.faces.ViewAction.broadcast";
+
+    private static final String UIVIEWACTION_EVENT_COUNT = "javax.faces.ViewAction.eventCount";
+    /**
+     * Properties that are tracked by state saving.
+     */
+    enum PropertyKeys {
+
+        onPostback, actionExpression, immediate, phase, renderedAttr("if");
+        private String name;
+
+        PropertyKeys() {
+        }
+
+        PropertyKeys(final String name) {
+            this.name = name;
+        }
+
+        @Override
+        public String toString() {
+            return name != null ? name : super.toString();
+        }
+    }
+
+    // ------------------------------------------------------------ Constructors
+
+    /**
+     * <p>
+     * Create a new {@link UIViewAction} instance with default property values.
+     * </p>
+     */
+    public UIViewAction() {
+        super();
+        setRendererType(null);
+    }
+
+    // -------------------------------------------------------------- Properties
+    @Override
+    public String getFamily() {
+        return COMPONENT_FAMILY;
+    }
+    
+    private void incrementEventCount(FacesContext context) {
+        Map<Object, Object> attrs = context.getAttributes();
+        Integer count = (Integer) attrs.get(UIVIEWACTION_EVENT_COUNT);
+        if (null == count) {
+            attrs.put(UIVIEWACTION_EVENT_COUNT, (Integer)1);
+        } else {
+            attrs.put(UIVIEWACTION_EVENT_COUNT, (Integer)(count + 1));
+        }
+    }
+    
+    private boolean decrementEventCountAndReturnTrueIfZero(FacesContext context) {
+        boolean result = true;
+        Map<Object, Object> attrs = context.getAttributes();
+        Integer count = (Integer) attrs.get(UIVIEWACTION_EVENT_COUNT);
+        if (null != count) {
+            count = (Integer)(count - 1);
+            if (count < 1) {
+                attrs.remove(UIVIEWACTION_EVENT_COUNT);
+                result = true;
+            } else {
+                attrs.put(UIVIEWACTION_EVENT_COUNT, count);
+                result = false;
+            }
+        }
+        
+        return result;
+    }
+
+    /**
+     * {@inheritDoc}
+     *
+     * @since 2.2
+     */
+    @Deprecated
+    public MethodBinding getAction() {
+        MethodBinding result = null;
+        MethodExpression me;
+
+        if (null != (me = getActionExpression())) {
+            result = new MethodBindingMethodExpressionAdapter(me);
+        }
+        return result;
+    }
+
+    /**
+     * {@inheritDoc}
+     *
+     * @since 2.2
+     */
+    @Deprecated
+    @SuppressWarnings("deprecation")
+    public void setAction(final MethodBinding action) {
+    }
+
+    /**
+     * {@inheritDoc}
+     *
+     * @since 2.2
+     */
+    @Deprecated
+    @SuppressWarnings("deprecation")
+    public MethodBinding getActionListener() {
+        throw new UnsupportedOperationException("Not supported.");
+    }
+
+    /**
+     * {@inheritDoc}
+     *
+     * @since 2.2
+     */
+    @Deprecated
+    @SuppressWarnings("deprecation")
+    public void setActionListener(final MethodBinding actionListener) {
+        throw new UnsupportedOperationException("Not supported.");
+    }
+
+    /**
+     * <p class="changed_added_2_2">If the value of the component's
+     * <code>immediate</code> attribute is <code>true</code>, the action
+     * will be invoked during the <em>Apply Request Values</em> JSF
+     * lifecycle phase.  Otherwise, the action will be invoked during
+     * the <em>Invoke Application</em> phase, the default behavior. The
+     * phase can be set explicitly in the <code>phase</code> attribute,
+     * which takes precedence over the <code>immediate</code>
+     * attribute.</p>
+
+     * @since 2.2
+     */
+    public boolean isImmediate() {
+        return (Boolean) getStateHelper().eval(PropertyKeys.immediate, false);
+    }
+
+    /**
+     * {@inheritDoc}
+     *
+     * @since 2.2
+     */
+    public void setImmediate(final boolean immediate) {
+        getStateHelper().put(PropertyKeys.immediate, immediate);
+    }
+
+    /**
+     * <p class="changed_added_2_2">Returns the name of the lifecycle
+     * phase in which the action is to be queued.</p>
+     *
+     * @since 2.2
+     */
+    public String getPhase() {
+        PhaseId myPhaseId = getPhaseId();
+        String result = null;
+        if (null != myPhaseId) {
+            result = myPhaseId.getName();
+        }
+        return result;
+    }
+
+    /**
+     * <p class="changed_added_2_2">Attempt to set the lifecycle phase
+     * in which this instance will queue its {@link ActionEvent}.  Pass
+     * the argument <code>phase</code> to {@link
+     * PhaseId#phaseIdValueOf}.  If the result is not one of the
+     * following values, <code>FacesException</code> must be thrown.</p>
+     *
+     * <ul>
+
+     * <li><p>{@link PhaseId#APPLY_REQUEST_VALUES}</p></li>
+     * <li><p>{@link PhaseId#PROCESS_VALIDATIONS}</p></li>
+     * <li><p>{@link PhaseId#UPDATE_MODEL_VALUES}</p></li>
+     * <li><p>{@link PhaseId#INVOKE_APPLICATION}</p></li>
+
+     * </ul>
+
+     * <p>If set, this value takes precedence over the immediate flag.</p>
+
+     * @since 2.2
+     */
+
+    public void setPhase(final String phase) {
+        PhaseId myPhaseId = PhaseId.phaseIdValueOf(phase);
+        if (PhaseId.ANY_PHASE.equals(myPhaseId) || 
+            PhaseId.RESTORE_VIEW.equals(myPhaseId) || 
+            PhaseId.RENDER_RESPONSE.equals(myPhaseId)) {
+            throw new FacesException("View actions cannot be executed in specified phase: [" + myPhaseId.toString() + "]");
+        }
+        getStateHelper().put(PropertyKeys.phase, myPhaseId);
+    }
+    
+    private void setIsProcessingUIViewActionBroadcast(FacesContext context, boolean value) {
+        Map<Object, Object> attrs = context.getAttributes();
+        
+        if (value) {
+            attrs.put(UIVIEWACTION_BROADCAST, Boolean.TRUE);
+        } else {
+            attrs.remove(UIVIEWACTION_BROADCAST);
+        }
+    }
+
+    /**
+     * <p class="changed_added_2_2">Returns <code>true</code> if the
+     * current request processing lifecycle is in the midst of
+     * processing the broadcast of an event queued during a call to
+     * {@link #decode}.  The implementation of {@link #broadcast} is
+     * responsible for ensuring that calls to this method accurately
+     * reflect this fact.</p>
+     *
+     * @since 2.2
+     * @param context {@link FacesContext} for the current request
+     * 
+     */
+    
+    public static boolean isProcessingBroadcast(FacesContext context) {
+        boolean result = context.getAttributes().containsKey(UIVIEWACTION_BROADCAST);
+        return result;
+    }
+
+    private PhaseId getPhaseId() {
+        PhaseId myPhaseId = (PhaseId) getStateHelper().eval(PropertyKeys.phase);
+        return myPhaseId;
+    }
+
+    /**
+     * {@inheritDoc}
+     *
+     * @since 2.2
+     */
+    @Override
+    public void addActionListener(final ActionListener listener) {
+        addFacesListener(listener);
+    }
+
+    /**
+     * {@inheritDoc}
+     *
+     * @since 2.2
+     */
+    @Override
+    public ActionListener[] getActionListeners() {
+        ActionListener al[] = (ActionListener [])
+        getFacesListeners(ActionListener.class);
+        return (al);
+    }
+
+    /**
+     * {@inheritDoc}
+     *
+     * @since 2.2
+     */
+    @Override
+    public void removeActionListener(final ActionListener listener) {
+        removeFacesListener(listener);
+    }
+
+    /**
+     * {@inheritDoc}
+     *
+     * @since 2.2
+     */
+    @Override
+    public MethodExpression getActionExpression() {
+        return (MethodExpression) getStateHelper().get(PropertyKeys.actionExpression);
+    }
+
+    /**
+     * {@inheritDoc}
+     *
+     * @since 2.2
+     */
+    @Override
+    public void setActionExpression(final MethodExpression actionExpression) {
+        getStateHelper().put(PropertyKeys.actionExpression, actionExpression);
+    }
+
+    /**
+     * <p class="changed_added_2_2">If <code>true</code> this
+     * component will operate on postback.</p>
+
+     * @since 2.2
+     */
+    public boolean isOnPostback() {
+        return (Boolean) getStateHelper().eval(PropertyKeys.onPostback, false);
+    }
+
+    /**
+     * <p class="changed_added_2_2">Controls whether or not this
+     * component operates on postback.</p>
+
+     * @since 2.2
+     */
+    public void setOnPostback(final boolean onPostback) {
+        getStateHelper().put(PropertyKeys.onPostback, onPostback);
+    }
+
+    /**
+     * <p class="changed_added_2_2">Return <code>true</code> if this
+     * component should take the actions specified in the {@link
+     * #decode} method.</p>
+     * 
+     * @since 2.2
+     */
+
+    public boolean isRendered() {
+        return (Boolean) getStateHelper().eval(PropertyKeys.renderedAttr, true);
+    }
+
+    /**
+     * <p class="changed_added_2_2">Sets the <code>if</code> property
+     * of this component.</p>
+     *
+     * @param condition the new value of the property.
+     *
+     * @since 2.2
+     */
+    public void setRendered(final boolean condition) {
+        getStateHelper().put(PropertyKeys.renderedAttr, condition);
+    }
+
+    // ----------------------------------------------------- UIComponent Methods
+
+    /**
+     * <p class="changed_added_2_2">Enable the method invocation
+     * specified by this component instance to return a value that
+     * performs navigation, similar in spirit to {@link
+     * UICommand#broadcast}.</p>
+
+     * <div class="changed_added_2_2">
+
+     * <p>Take no action and return immediately if any of the following
+     * conditions are true.</p>
+
+     * <ul>
+
+     * <li><p>The response has already been marked as complete.</p></li>
+
+     * <li><p>The current <code>UIViewRoot</code> is different from the
+     * event's source's <code>UIViewRoot</code>.</p></li>
+
+     * </ul>
+
+     * <p>Save a local reference to the viewId of the current
+     * <code>UIViewRoot</code>.  For discussion, let this reference be
+     * <em>viewIdBeforeAction</em>.</p>
+
+     * <p>Obtain the {@link ActionListener} from the {@link
+     * javax.faces.application.Application}.  Wrap the current {@link
+     * FacesContext} in an implementation of {@link
+     * javax.faces.context.FacesContextWrapper} that overrides the
+     * {@link FacesContext#renderResponse} method such that it takes no
+     * action.  Set the current <code>FacesContext</code> to be the
+     * <code>FacesContextWrapper</code> instance.  Make it so a call to
+     * {@link #isProcessingBroadcast} on the current FacesContext will
+     * return <code>true</code>.  This is necessary because the {@link
+     * javax.faces.application.NavigationHandler} will call this method
+     * to determine if the navigation is happening as the result of a
+     * <code>UIViewAction</code>.  Invoke {@link
+     * ActionListener#processAction}.  In a <code>finally</code> block,
+     * restore the original <code>FacesContext</code>, make it so a call
+     * to {@link #isProcessingBroadcast} on the current context will
+     * return <code>false</code> and discard the wrapper.</p>
+
+     * <p>If the response has been marked as complete during the
+     * invocation of <code>processAction()</code>, take no further
+     * action and return.  Otherwise, compare
+     * <em>viewIdBeforeAction</em> with the viewId of the
+     * <code>UIViewRoot</code> on the <code>FacesContext</code> after
+     * the invocation of <code>processAction()</code>.  If the two
+     * viewIds are the same and no more <code>UIViewAction</code> events
+     * have been queued by a call to {@link #decode}, call {@link
+     * FacesContext#renderResponse} and return.  It is possible to
+     * detect the case where no more <code>UIViewAction</code> events
+     * have been queued because the number of such events queued has
+     * been noted in the specification for {@link #decode}.  Otherwise,
+     * execute the lifecycle on the new <code>UIViewRoot</code>.</p>
+
+     * </div>
+     * 
+     * @param event {@link FacesEvent} to be broadcast
+     *
+     * @throws AbortProcessingException Signal the JavaServer Faces
+     *  implementation that no further processing on the current event
+     *  should be performed
+     * @throws IllegalArgumentException if the implementation class
+     *  of this {@link FacesEvent} is not supported by this component
+     * @throws NullPointerException if <code>event</code> is
+     * <code>null</code>
+     * 
+     * @since 2.2
+     */
+    @Override
+    public void broadcast(final FacesEvent event) throws AbortProcessingException {
+
+        super.broadcast(event);
+
+        FacesContext context = getFacesContext();
+        if (!(event instanceof ActionEvent)) {
+            throw new IllegalArgumentException();
+        }
+
+        // OPEN QUESTION: should we consider a navigation to the same view as a
+        // no-op navigation?
+
+        // only proceed if the response has not been marked complete and
+        // navigation to another view has not occurred
+        if (!context.getResponseComplete() && (context.getViewRoot() == getViewRootOf(event))) {
+            ActionListener listener = context.getApplication().getActionListener();
+            if (listener != null) {
+                boolean hasMoreViewActionEvents = false;
+                UIViewRoot viewRootBefore = context.getViewRoot();
+                assert(null != viewRootBefore);
+                InstrumentedFacesContext instrumentedContext = null;
+                try {
+                    instrumentedContext = new InstrumentedFacesContext(context);
+                    setIsProcessingUIViewActionBroadcast(context, true);
+                    // defer the call to renderResponse() that happens in
+                    // ActionListener#processAction(ActionEvent)
+                    instrumentedContext.disableRenderResponseControl().set();
+                    listener.processAction((ActionEvent) event);
+                    hasMoreViewActionEvents = !decrementEventCountAndReturnTrueIfZero(context);
+                } finally {
+                    setIsProcessingUIViewActionBroadcast(context, false);
+                    if (null != instrumentedContext) {
+                        instrumentedContext.restore();
+                    }
+                }
+                // if the response is marked complete, the story is over
+                if (!context.getResponseComplete()) {
+                    UIViewRoot viewRootAfter = context.getViewRoot();
+                    assert(null != viewRootAfter);
+
+                    // if the view id changed as a result of navigation,
+                    // then execute the JSF lifecycle for the new view
+                    // id
+                    String viewIdBefore = viewRootBefore.getViewId();
+                    String viewIdAfter = viewRootAfter.getViewId();
+                    assert(null != viewIdBefore && null != viewIdAfter);
+                    boolean viewIdsSame = viewIdBefore.equals(viewIdAfter);
+                    
+                    if (viewIdsSame && !hasMoreViewActionEvents) {
+                        // apply the deferred call (relevant when immediate is true)
+                        context.renderResponse();
+                    }
+                }
+            }
+        }
+    }
+
+    /**
+     * <p class="changed_added_2_2">Override behavior from the
+     * superclass to queue an {@link ActionEvent} that may result in the
+     * invocation of the <code>action</code> or any
+     * <code>actionListener</code>s that may be associated with this
+     * instance.</p>
+
+     * <div class="changed_added_2_2">
+
+     * <p>Take no action if any of the following conditions are true:</p>
+
+     * <ul>
+
+     * 	  <li><p>The current request is a postback and the instance has
+     * been configured to not operate on postback. See {@link #isOnPostback}.</p></li>
+
+     * 	  <li><p>The condition stated in the <code>if</code> property
+     * evaluates to <code>false</code>.  See {@link #isRendered}</p>.</li>
+
+     * </ul>
+
+     * <p>Instantiate an {@link ActionEvent}, passing this component
+     * instance as the source.  Set the <code>phaseId</code> property of
+     * the <code>ActionEvent</code> as follows.</p>
+
+     * <ul>
+
+     * <li><p>If this component instance has been configured with a
+     * specific lifecycle phase with a call to {@link #setPhase} use
+     * that as the <code>phaseId</code></p></li>
+
+     * <li><p>If the value of the <code>immediate</code> property is
+     * true, use {@link PhaseId#APPLY_REQUEST_VALUES}.</p></li>
+
+     * <li><p>Otherwise, use {@link PhaseId#INVOKE_APPLICATION}.
+     * </p></li>
+
+     * </ul>
+
+     * <p>Queue the event with a call to {@link #queueEvent}. Keep track
+     * of the number of events that are queued in this way on this run
+     * through the lifecycle.  This information is necessary during
+     * processing in {@link #broadcast}</code>.</p>
+
+     * </div>
+     * 
+     * @since 2.2
+
+     */
+    @Override
+    public void decode(final FacesContext context) {
+        if (context == null) {
+            throw new NullPointerException();
+        }
+
+        if ((context.isPostback() && !isOnPostback()) || !isRendered()) {
+            return;
+        }
+
+        ActionEvent e = new ActionEvent(this);
+        PhaseId phaseId = getPhaseId();
+        if (phaseId != null) {
+            e.setPhaseId(phaseId);
+        } else if (isImmediate()) {
+            e.setPhaseId(PhaseId.APPLY_REQUEST_VALUES);
+        } else {
+            e.setPhaseId(PhaseId.INVOKE_APPLICATION);
+        }
+        incrementEventCount(context);
+        queueEvent(e);
+    }
+
+    private UIViewRoot getViewRootOf(final FacesEvent e) {
+        UIComponent c = e.getComponent();
+        do {
+            if (c instanceof UIViewRoot) {
+                return (UIViewRoot) c;
+            }
+            c = c.getParent();
+        } while (c != null);
+        return null;
+    }
+
+    /**
+     * A FacesContext delegator that gives us the necessary controls over the FacesContext to allow the execution of the
+     * lifecycle to accomodate the UIViewAction sequence.
+     */
+    private class InstrumentedFacesContext extends FacesContextWrapper {
+
+        private final FacesContext wrapped;
+        private boolean viewRootCleared = false;
+        private boolean renderedResponseControlDisabled = false;
+        private Boolean postback = null;
+
+        public InstrumentedFacesContext(final FacesContext wrapped) {
+            this.wrapped = wrapped;
+        }
+
+        @Override
+        public FacesContext getWrapped() {
+            return wrapped;
+        }
+
+        @Override
+        public UIViewRoot getViewRoot() {
+            if (viewRootCleared) {
+                return null;
+            }
+
+            return wrapped.getViewRoot();
+        }
+
+        @Override
+        public void setViewRoot(final UIViewRoot viewRoot) {
+            viewRootCleared = false;
+            wrapped.setViewRoot(viewRoot);
+        }
+
+        @Override
+        public boolean isPostback() {
+            return postback == null ? wrapped.isPostback() : postback;
+        }
+
+        @Override
+        public void renderResponse() {
+            if (!renderedResponseControlDisabled) {
+                wrapped.renderResponse();
+            }
+        }
+
+        /**
+         * Make it look like we have dispatched a request using the include method.
+         */
+        public InstrumentedFacesContext pushViewIntoRequestMap() {
+            getExternalContext().getRequestMap().put("javax.servlet.include.servlet_path", wrapped.getViewRoot().getViewId());
+            return this;
+        }
+
+        public InstrumentedFacesContext clearPostback() {
+            postback = false;
+            return this;
+        }
+
+        public InstrumentedFacesContext clearViewRoot() {
+            viewRootCleared = true;
+            return this;
+        }
+
+        public InstrumentedFacesContext disableRenderResponseControl() {
+            renderedResponseControlDisabled = true;
+            return this;
+        }
+
+        public void set() {
+            setCurrentInstance(this);
+        }
+
+        public void restore() {
+            setCurrentInstance(wrapped);
+        }
+    }
+}
diff --git a/jsf-api/src/main/java/javax/faces/component/UIViewParameter.java b/jsf-api/src/main/java/javax/faces/component/UIViewParameter.java
index 32e4251..33aa565 100644
--- a/jsf-api/src/main/java/javax/faces/component/UIViewParameter.java
+++ b/jsf-api/src/main/java/javax/faces/component/UIViewParameter.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -37,6 +41,7 @@
 package javax.faces.component;
 
 import java.io.IOException;
+import java.util.Iterator;
 import javax.el.ValueExpression;
 import javax.faces.FactoryFinder;
 import javax.faces.application.FacesMessage;
@@ -46,9 +51,11 @@ import javax.faces.convert.ConverterException;
 import javax.faces.render.RenderKit;
 import javax.faces.render.RenderKitFactory;
 import javax.faces.render.Renderer;
+import javax.faces.validator.RequiredValidator;
+import javax.faces.validator.Validator;
 
 /**
- * <p class="changed_added_2_0"><strong>UIViewParameter</strong> represents a
+ * <p class="changed_added_2_0"><strong class="changed_modified_2_2">UIViewParameter</strong> represents a
  * binding between a request parameter and a model property or {@link UIViewRoot}
  * property. This is a bi-directional binding.</p>
  *
@@ -172,13 +179,15 @@ public class UIViewParameter extends UIInput {
     }
 
     /**
-     * <p class="changed_added_2_0">Assume that the submitted value is
-     * always a string.</p>
+     * <p class="changed_added_2_0"><span class="changed_modified_2_2">Assume</span>
+     * that the submitted value is
+     * always a string, <span class="changed_added_2_2">but the return type
+     * from this method is <code>Object</code>.</span>.</p>
      * @since 2.0
      */
     @Override
-    public String getSubmittedValue() {
-        return (String) getStateHelper().get(PropertyKeys.submittedValue);
+    public Object getSubmittedValue() {
+        return getStateHelper().get(PropertyKeys.submittedValue);
     }
 
     /**
@@ -247,7 +256,7 @@ public class UIViewParameter extends UIInput {
         }
 
         // we have to override since UIInput assumes that a null value means don't check
-        if (getSubmittedValue() == null && isRequired()) {
+        if (getSubmittedValue() == null && myIsRequired()) {
             String requiredMessageStr = getRequiredMessage();
             FacesMessage message;
             if (null != requiredMessageStr) {
@@ -269,7 +278,45 @@ public class UIViewParameter extends UIInput {
             super.processValidators(context);
         }
     }
+    
+    private boolean myIsRequired() {
+        return super.isRequired() || isRequiredViaNestedRequiredValidator();
+    }
 
+    
+    /* JAVASERVERFACES-3058.  Handle the nested requiredValidator case
+     * explicitly in the case of <f:viewParam>.  
+     * 
+     */
+    private boolean isRequiredViaNestedRequiredValidator() {
+        boolean result = false;
+        if (null == validators) {
+            return result;
+        }
+        Iterator<Validator> iter = validators.iterator();
+        while (iter.hasNext()) {
+            if (iter.next() instanceof RequiredValidator) {
+                // See JAVASERVERFACES-2526.  Note that we can assume
+                // that at this point the validator is not disabled, 
+                // so the mere existence of the validator implies it is
+                // enabled.
+                result = true;
+                Object submittedValue = getSubmittedValue();
+                if (submittedValue == null) {
+                    // JAVASERVERFACES-3058 asserts that view parameters 
+                    // should be treated differently than form parameters
+                    // if they are not submitted.  I'm not sure if that's 
+                    // correct, but let's put this in and see how 
+                    // the community responds.
+                    this.setSubmittedValue("");
+                }
+                break;
+            }
+        }
+                
+        return result;
+    }
+    
     /**
      * <p class="changed_added_2_0">Call through to superclass {@link
      * UIInput#updateModel} then take the additional action of pushing
diff --git a/jsf-api/src/main/java/javax/faces/component/UIViewRoot.java b/jsf-api/src/main/java/javax/faces/component/UIViewRoot.java
index b96880d..e0bcf6f 100644
--- a/jsf-api/src/main/java/javax/faces/component/UIViewRoot.java
+++ b/jsf-api/src/main/java/javax/faces/component/UIViewRoot.java
@@ -1,1800 +1,1885 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package javax.faces.component;
-
-
-import javax.el.MethodExpression;
-import javax.faces.FacesException;
-import javax.faces.FactoryFinder;
-import javax.faces.application.ProjectStage;
-import javax.faces.component.visit.VisitResult;
-import javax.faces.context.FacesContext;
-import javax.faces.lifecycle.Lifecycle;
-import javax.faces.lifecycle.LifecycleFactory;
-import javax.faces.webapp.FacesServlet;
-
-import java.io.IOException;
-import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-import java.util.ListIterator;
-import java.util.concurrent.CopyOnWriteArrayList;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-import javax.faces.component.visit.VisitCallback;
-import javax.faces.component.visit.VisitContext;
-import javax.faces.event.*;
-import javax.faces.view.ViewDeclarationLanguage;
-import javax.faces.view.ViewMetadata;
-
-
-/**
- * <p><strong class="changed_modified_2_0"><span
- * class="changed_modified_2_0_rev_a">UIViewRoot</span></strong> is the
- * UIComponent that represents the root of the UIComponent tree.  This
- * component renders markup as the response to Ajax requests.  It also
- * serves as the root of the component tree, and as a place to hang
- * per-view {@link PhaseListener}s.</p>
- *
- * <p>For each of the following lifecycle phase methods:</p>
-
- * <ul>
-
- * <li><p>{@link #processDecodes} </p></li>
-
- * <li><p>{@link #processValidators} </p></li>
-
- * <li><p>{@link #processUpdates} </p></li>
-
- * <li><p>{@link #processApplication} </p></li>
-
- * <li><p>RenderResponse, via {@link #encodeBegin} and {@link
- * #encodeEnd} </p></li>
-
- * </ul>
-
- * <p>Take the following action regarding
- * <code>PhaseListener</code>s.</p>
-
- * <ul>
-
- * <p>Initialize a state flag to <code>false</code>.</p>
-
- * <p>If {@link #getBeforePhaseListener} returns non-<code>null</code>,
- * invoke the listener, passing in the correct corresponding {@link
- * PhaseId} for this phase.</p>
-
- * <p>Upon return from the listener, call {@link
- * FacesContext#getResponseComplete} and {@link
- * FacesContext#getRenderResponse}.  If either return <code>true</code>
- * set the internal state flag to <code>true</code>. </p>
-
- * <p>If or one or more listeners have been added by a call to {@link
- * #addPhaseListener}, invoke the <code>beforePhase</code> method on
- * each one whose {@link PhaseListener#getPhaseId} matches the current
- * phaseId, passing in the same <code>PhaseId</code> as in the previous
- * step.</p>
-
- * <p>Upon return from each listener, call {@link
- * FacesContext#getResponseComplete} and {@link
- * FacesContext#getRenderResponse}.  If either return <code>true</code>
- * set the internal state flag to <code>true</code>. </p>
-
-
- * <p>Execute any processing for this phase if the internal state flag
- * was not set.</p>
-
- * <p>If {@link #getAfterPhaseListener} returns non-<code>null</code>,
- * invoke the listener, passing in the correct corresponding {@link
- * PhaseId} for this phase.</p>
- * <p/>
- * <p>If or one or more listeners have been added by a call to {@link
- * #addPhaseListener}, invoke the <code>afterPhase</code> method on each
- * one whose {@link PhaseListener#getPhaseId} matches the current
- * phaseId, passing in the same <code>PhaseId</code> as in the previous
- * step.</p>
- * <p/>
- * <p/>
- * </ul>
- */
-
-public class UIViewRoot extends UIComponentBase implements UniqueIdVendor {
-
-    // ------------------------------------------------------ Manifest Constants
-
-    public static final String METADATA_FACET_NAME = "javax_faces_metadata";
-    
-    /**
-     * <p class="changed_added_2_0">The key in the value set of the
-     * <em>view metadata BeanDescriptor</em>, the value of which is a 
-     * <code>List<{@link UIViewParameter.Reference}></code>.</p>
-     *
-     * @since 2.0
-     */
-    public static final String VIEW_PARAMETERS_KEY = "javax.faces.component.VIEW_PARAMETERS_KEY";
-    
-    /** <p>The standard component type for this component.</p> */
-    public static final String COMPONENT_TYPE = "javax.faces.ViewRoot";
-
-
-    /** <p>The standard component family for this component.</p> */
-    public static final String COMPONENT_FAMILY = "javax.faces.ViewRoot";
-
-
-    /**
-     * <p>The prefix that will be used for identifiers generated
-     * by the <code>createUniqueId()</code> method.
-     */
-    static public final String UNIQUE_ID_PREFIX = "j_id";
-
-    private static Lifecycle lifecycle;
-
-    private static final Logger LOGGER =
-          Logger.getLogger("javax.faces", "javax.faces.LogStrings");
-
-    private static final String LOCATION_IDENTIFIER_PREFIX = "javax_faces_location_";
-    private static final Map<String,String> LOCATION_IDENTIFIER_MAP =
-          new HashMap<String,String>(6, 1.0f);
-    static {
-        LOCATION_IDENTIFIER_MAP.put("head", LOCATION_IDENTIFIER_PREFIX + "HEAD");
-        LOCATION_IDENTIFIER_MAP.put("form", LOCATION_IDENTIFIER_PREFIX + "FORM");
-        LOCATION_IDENTIFIER_MAP.put("body", LOCATION_IDENTIFIER_PREFIX + "BODY");        
-    }
-
-    enum PropertyKeys {
-        /**
-         * <p>The render kit identifier of the {@link javax.faces.render.RenderKit} associated
-         * wth this view.</p>
-         */
-        renderKitId,
-        /**
-         * <p>The view identifier of this view.</p>
-         */
-        viewId,
-        locale,
-        lastId,
-        beforePhase,
-        afterPhase,
-        phaseListeners,
-        viewScope  // RELEASE_PENDING
-    }
-
-
-    // ------------------------------------------------------------ Constructors
-
-
-    /**
-     * <p>Create a new {@link UIViewRoot} instance with default property
-     * values.</p>
-     */
-    public UIViewRoot() {
-
-        super();
-        setRendererType(null);
-        setId(createUniqueId());
-
-    }
-
-    // ------------------------------------------------------ Instance Variables
-
-
-    /**
-     * <p>Set and cleared during the lifetime of a lifecycle phase.  Has
-     * no meaning between phases.  If <code>true</code>, the lifecycle
-     * processing for the current phase must not take place.</p>
-     */
-    private boolean skipPhase;
-
-    /**
-     * <p>Set and cleared during the lifetime of a lifecycle phase.  Has no
-     * meaning between phases.  If <code>true</code>, the
-     * <code>MethodExpression</code> associated with <code>afterPhase</code>
-     * will not be invoked nor will any PhaseListeners associated with this
-     * UIViewRoot.
-     */
-    private boolean beforeMethodException;
-
-    /**
-     * <p>Set and cleared during the lifetime of a lifecycle phase.  Has no
-     * meaning between phases.
-     */
-    private ListIterator<PhaseListener> phaseListenerIterator;
-
-
-    // -------------------------------------------------------------- Properties
-
-
-    /**
-     * <p class="changed_added_2_0">Return <code>trues</code>.</p>
-     *
-     * @since 2.0
-     */
-    @Override
-    public boolean isInView() {
-
-        return true;
-
-    }
-
-    /**
-     * <p class="changed_added_2_0">Overridden to take no action.</p>
-     *
-     * @since 2.0
-     * @param isInView
-     */
-    @Override
-    public void setInView(boolean isInView) {
-        // no-op
-    }
-
-    /**
-     * @see UIComponent#getFamily()
-     */
-    public String getFamily() {
-
-        return (COMPONENT_FAMILY);
-
-    }
-
-
-    /**
-     * <p>Return the render kit identifier of the {@link
-     * javax.faces.render.RenderKit} associated with this view.  Unless
-     * explicitly set, as in {@link
-     * javax.faces.application.ViewHandler#createView}, the returned
-     * value will be <code>null.</code></p>
-     */
-    public String getRenderKitId() {
-
-        return (String) getStateHelper().eval(PropertyKeys.renderKitId);
-
-    }
-
-
-    /**
-     * <p>Set the render kit identifier of the {@link javax.faces.render.RenderKit}
-     * associated with this view.  This method may be called at any time
-     * between the end of <em>Apply Request Values</em> phase of the
-     * request processing lifecycle (i.e. when events are being broadcast)
-     * and the beginning of the <em>Render Response</em> phase.</p>
-     *
-     * @param renderKitId The new {@link javax.faces.render.RenderKit} identifier,
-     *                    or <code>null</code> to disassociate this view with any
-     *                    specific {@link javax.faces.render.RenderKit} instance
-     */
-    public void setRenderKitId(String renderKitId) {
-
-        getStateHelper().put(PropertyKeys.renderKitId, renderKitId);
-
-    }
-
-
-    /** <p>Return the view identifier for this view.</p> */
-    public String getViewId() {
-
-        return (String) getStateHelper().get(PropertyKeys.viewId);
-
-    }
-
-
-    /**
-     * <p>Set the view identifier for this view.</p>
-     *
-     * @param viewId The new view identifier
-     */
-    public void setViewId(String viewId) {
-        getFacesContext().getAttributes().put("com.sun.faces.viewId", viewId);
-
-
-        getStateHelper().put(PropertyKeys.viewId, viewId);
-
-    }
-
-    // ------------------------------------------------ Event Management Methods
-
-
-    /**
-     * <p>Return the {@link MethodExpression} that will be invoked
-     * before this view is rendered.</p>
-     *
-     * @return the {@link MethodExpression} that will be invoked before
-     *         this view is rendered.
-     * @since 1.2
-     */
-    public MethodExpression getBeforePhaseListener() {
-
-        return (MethodExpression) getStateHelper().get(PropertyKeys.beforePhase);
-    }
-
-    /**
-     * <p><span class="changed_modified_2_0">Allow</span> an arbitrary
-     * method to be called for the "beforePhase" event as the UIViewRoot
-     * runs through its lifecycle.  This method will be called for all
-     * phases except {@link PhaseId#RESTORE_VIEW}.  Unlike a true
-     * {@link PhaseListener}, this approach doesn't allow for only
-     * receiving {@link PhaseEvent}s for a given phase.</p> <p/> <p>The
-     * method must conform to the signature of {@link
-     * PhaseListener#beforePhase}.</p>
-     *
-     * @param newBeforePhase the {@link MethodExpression} that will be
-     *                       invoked before this view is rendered.
-     * @since 1.2
-     */
-    public void setBeforePhaseListener(MethodExpression newBeforePhase) {
-        getStateHelper().put(PropertyKeys.beforePhase, newBeforePhase);
-    }
-
-    /**
-     * <p>Return the {@link MethodExpression} that will be invoked after
-     * this view is rendered.</p>
-     *
-     * @return the {@link MethodExpression} that will be invoked after
-     *         this view is rendered.
-     *
-     * @since 1.2
-     */
-    public MethodExpression getAfterPhaseListener() {
-        return (MethodExpression) getStateHelper().get(PropertyKeys.afterPhase);
-    }
-
-    /**
-     * <p><span class="changed_modified_2_0">Allow</span> an arbitrary
-     * method to be called for the "afterPhase" event as the UIViewRoot
-     * runs through its lifecycle.  This method will be called for all
-     * phases <span class="changed_modified_2_0">including {@link
-     * PhaseId#RESTORE_VIEW}</span>.  Unlike a true {@link
-     * PhaseListener}, this approach doesn't allow for only receiving
-     * {@link PhaseEvent}s for a given phase.</p> <p/> <p>The method
-     * must conform to the signature of {@link
-     * PhaseListener#afterPhase}.</p>
-     *
-     * @param newAfterPhase the {@link MethodExpression} that will be
-     *                      invoked after this view is rendered.
-     *
-     * @since 1.2
-     */
-    public void setAfterPhaseListener(MethodExpression newAfterPhase) {
-        getStateHelper().put(PropertyKeys.afterPhase, newAfterPhase);
-    }
-
-
-    /**
-     * <p>If the argument <code>toRemove</code> is in the list of {@link
-     * PhaseListener}s for this instance, it must be removed.</p>
-     * @param toRemove the {@link PhaseListener} to remove.
-     *
-     * @since 1.2
-     */
-    public void removePhaseListener(PhaseListener toRemove) {
-
-        getStateHelper().remove(PropertyKeys.phaseListeners, toRemove);
-    }
-
-    /**
-     * <p>Add the argument <code>newPhaseListener</code> to the list of
-     * {@link PhaseListener}s on this <code>UIViewRoot</code>.</p>
-     *
-     * @param newPhaseListener the {@link PhaseListener} to add
-     *
-     * @since 1.2
-     */
-    public void addPhaseListener(PhaseListener newPhaseListener) {
-
-        getStateHelper().add(PropertyKeys.phaseListeners, newPhaseListener);
-
-    }
-
-    
-    /**
-     * 
-     * <p class="changed_added_2_0">Return an unmodifiable list of the 
-     * <code>PhaseListener</code> instances attached to this 
-     * <code>UIViewRoot</code> instance.</p>
-     *
-     * @since 2.0
-     */
-    public List<PhaseListener> getPhaseListeners() {
-
-        //noinspection unchecked
-        List<PhaseListener> result = (List<PhaseListener>)
-              getStateHelper().get(PropertyKeys.phaseListeners);
-
-        return ((result != null)
-                ? Collections.unmodifiableList(result)
-                : Collections.unmodifiableList(Collections.<PhaseListener>emptyList()));
-
-    }
-
-    /**
-     * <p class="changed_added_2_0">Add argument <code>component</code>,
-     * which is assumed to represent a resource instance, as a resource
-     * to this view.  A resource instance is rendered by a resource
-     * <code>Renderer</code>, as described in the Standard HTML
-     * RenderKit. The default implementation must call through to
-     * {@link #addComponentResource(javax.faces.context.FacesContext, 
-     * javax.faces.component.UIComponent, java.lang.String)}.</p>
-     *
-     * <div class="changed_added_2_0">
-     * <p>
-     * 
-     * @param context {@link FacesContext} for the current request
-     * @param componentResource The {@link UIComponent} representing a 
-     * {@link javax.faces.application.Resource} instance
-     *
-     * @since 2.0
-     */
-    public void addComponentResource(FacesContext context, UIComponent componentResource) {
-        addComponentResource(context, componentResource, null);
-    }
-
-    /**
-     * <p class="changed_added_2_0">Add argument <code>component</code>,
-     * which is assumed to represent a resource instance, as a resource
-     * to this view.  A resource instance is rendered by a resource
-     * <code>Renderer</code>, as described in the Standard HTML
-     * RenderKit. </p>
-     *
-     * <div class="changed_added_2_0">
-
-     * <p> The <code>component</code> must be added using the following
-     * algorithm:</p>
-
-     * <ul>
-
-     * <li><p>If the <code>target</code> argument is <code>null</code>,
-     * look for a <code>target</code> attribute on the
-     * <code>component</code>.  If there is no <code>target</code>
-     * attribute, set <code>target</code> to be the default value
-     * <code>head</code></p></li>
-
-     * <li><p>Call {@link #getComponentResources} to obtain the child
-     * list for the given target.</p></li>
-     *
-     * <li><p>If the component ID of <code>componentResource</code> matches the
-     * the ID of a resource that has allready been added, remove the old
-     * resource.</p></li>
-
-     * <li><p>Add the <code>component</code> resource to the
-     * list.</p></li>
-
-     * </ul>
-
-     * </div>
-     *  
-     * @param context {@link FacesContext} for the current request
-     * @param componentResource The {@link UIComponent} representing a 
-     * {@link javax.faces.application.Resource} instance 
-     * @param target The name of the facet for which the {@link UIComponent} will be added
-     *
-     * @since 2.0
-     */
-    public void addComponentResource(FacesContext context, UIComponent componentResource, String target) {
-        final Map<String,Object> attributes = componentResource.getAttributes();
-        // look for a target in the component attribute set if arg is not set.
-        if (target == null) {
-            target = (String) attributes.get("target");
-        }
-        if (target == null) {
-            target = "head";
-        }
-        List<UIComponent> facetChildren = getComponentResources(context,
-                                                                target,
-                                                                true);
-        String id = componentResource.getId();
-        if (id != null) {
-            for (UIComponent c : facetChildren) {
-                if (id.equals(c.getId())) {
-                    facetChildren.remove(c);
-                }
-            }
-        }
-        // add the resource to the facet
-        facetChildren.add(componentResource);
-    }
-
-    /**
-     * <p class="changed_added_2_0">Return an unmodifiable
-     * <code>List</code> of {@link UIComponent}s for the provided
-     * <code>target</code> agrument.  Each <code>component</code> in the
-     * <code>List</code> is assumed to represent a resource
-     * instance.</p>
-     *
-     * <div class="changed_added_2_0">
-     * <p>The default implementation must use an algorithm equivalent to the
-     * the following.</p>
-     * <ul>
-     * <li>Locate the facet for the <code>component</code> by calling <code>getFacet()</code> using
-     * <code>target</code> as the argument.</li>
-
-     * <li>If the facet is not found, create the facet by calling
-     * <code>context.getApplication().createComponent().</code> <span
-     * class="changed_modified_2_0_rev_a">The argument to this method
-     * must refer to a component that extends {@link UIPanel} and
-     * overrides the <code>encodeAll()</code> method to take no action.
-     * This is necessary to prevent component resources from being
-     * inadvertently rendered.</span></li>
-
-     * <ul>
-     * <li>Set the <code>id</code> of the facet to be <code>target</code></li>
-     * <li>Add the facet to the facets <code>Map</code> using <code>target</code> as the key</li>
-     * </ul>
-     * <li>return the children of the facet</li>
-     * </ul>
-
-     * </div>
-     *
-     * @param target The name of the facet for which the components will be returned. 
-     *
-     * @return A <code>List</code> of {@link UIComponent} children of
-     * the facet with the name <code>target</code>.  If no children are
-     * found for the facet, return <code>Collections.emptyList()</code>.
-     *
-     * @throws NullPointerException if <code>target</code> or
-     * <code>context</code> is <code>null</code>
-     *
-     * @since 2.0
-     */
-    public List<UIComponent> getComponentResources(FacesContext context, 
-                                                   String target) {
-        if (target == null) {
-            throw new NullPointerException();
-        }
-
-        List<UIComponent> resources = getComponentResources(context,
-                                                            target,
-                                                            false);
-
-        return ((resources != null)
-                ? resources
-                : Collections.<UIComponent>emptyList());
-
-    }
-    
-    /**
-     * <p class="changed_added_2_0">Remove argument <code>component</code>,
-     * which is assumed to represent a resource instance, as a resource
-     * to this view.</p>
-     *
-     * <div class="changed_added_2_0">
-     * <p>
-     * 
-     * @param context {@link FacesContext} for the current request
-     * @param componentResource The {@link UIComponent} representing a 
-     * {@link javax.faces.application.Resource} instance
-     *
-     * @since 2.0
-     */
-    public void removeComponentResource(FacesContext context, UIComponent componentResource) {
-        removeComponentResource(context, componentResource, null);
-    }
-    
-    /**
-     * <p class="changed_added_2_0">Remove argument <code>component</code>,
-     * which is assumed to represent a resource instance, as a resource
-     * to this view.  A resource instance is rendered by a resource
-     * <code>Renderer</code>, as described in the Standard HTML
-     * RenderKit. </p>
-     *
-     * <div class="changed_added_2_0">
-     * <p>
-     * The <code>component</code> must be removed using the following algorithm:
-     * <ul>
-     * <li>If the <code>target</code> argument is <code>null</code>, look for a <code>target</code>
-     * attribute on the <code>component</code>.<br>
-     * If there is no <code>target</code> attribute, set <code>target</code> to be the default value <code>head</code></li>
-     * <li>Call {@link #getComponentResources} to obtain the child list for the
-     * given target.</li>
-     * <li>Remove the <code>component</code> resource from the child list.</li>
-     * </ul>
-     * </p>
-     * </div>
-     *  
-     * @param context {@link FacesContext} for the current request
-     * @param componentResource The {@link UIComponent} representing a 
-     * {@link javax.faces.application.Resource} instance 
-     * @param target The name of the facet for which the {@link UIComponent} will be added
-     *
-     * @since 2.0
-     */
-    public void removeComponentResource(FacesContext context, UIComponent componentResource, String target) {
-
-        final Map<String,Object> attributes = componentResource.getAttributes();
-        // look for a target in the component attribute set if arg is not set.
-        if (target == null) {
-            target = (String) attributes.get("target");
-        }
-        if (target == null) {
-            target = "head";
-        }
-        List<UIComponent> facetChildren = getComponentResources(context,
-                                                                target,
-                                                                false);
-        if (facetChildren != null) {
-            facetChildren.remove(componentResource);
-        }
-
-    }
-
-    /**
-     * <p>An array of Lists of events that have been queued for later
-     * broadcast, with one List for each lifecycle phase.  The list
-     * indices match the ordinals of the PhaseId instances.  This
-     * instance is lazily instantiated.  This list is
-     * <strong>NOT</strong> part of the state that is saved and restored
-     * for this component.</p>
-     */
-    private List<List<FacesEvent>> events = null;
-
-
-    /**
-     * <p>Override the default {@link UIComponentBase#queueEvent} behavior to
-     * accumulate the queued events for later broadcasting.</p>
-     *
-     * @param event {@link FacesEvent} to be queued
-     *
-     * @throws IllegalStateException if this component is not a
-     *                               descendant of a {@link UIViewRoot}
-     * @throws NullPointerException  if <code>event</code>
-     *                               is <code>null</code>
-     */
-    public void queueEvent(FacesEvent event) {
-
-        if (event == null) {
-            throw new NullPointerException();
-        }
-        // We are a UIViewRoot, so no need to check for the ISE
-        if (events == null) {
-            int len = PhaseId.VALUES.size();
-            List<List<FacesEvent>> events = new ArrayList<List<FacesEvent>>(len);
-            for (int i = 0; i < len; i++) {
-                events.add(new ArrayList<FacesEvent>(5));
-            }
-            this.events = events;
-        }
-        events.get(event.getPhaseId().getOrdinal()).add(event);
-    }
-
-
-    /**
-     * <p class="changed_added_2_0">Broadcast any events that have been
-     * queued.  First broadcast events that have been queued for {@link
-     * PhaseId#ANY_PHASE}.  Then broadcast ane events that have been
-     * queued for the current phase.  In both cases, {@link
-     * UIComponent#pushComponentToEL} must be called before the event is
-     * broadcast, and {@link UIComponent#popComponentFromEL} must be
-     * called after the return from the broadcast, even in the case of
-     * an exception.</p>
-     *
-     * @param context {@link FacesContext} for the current request
-     * @param phaseId {@link PhaseId} of the current phase
-
-     * @since 2.0
-     */
-    public void broadcastEvents(FacesContext context, PhaseId phaseId) {
-
-        if (null == events) {
-            // no events have been queued
-            return;
-        }
-        boolean hasMoreAnyPhaseEvents;
-        boolean hasMoreCurrentPhaseEvents;
-
-        List<FacesEvent> eventsForPhaseId =
-             events.get(PhaseId.ANY_PHASE.getOrdinal());
-
-        // keep iterating till we have no more events to broadcast.
-        // This is necessary for events that cause other events to be
-        // queued.  PENDING(edburns): here's where we'd put in a check
-        // to prevent infinite event queueing.
-        do {
-            // broadcast the ANY_PHASE events first
-            if (null != eventsForPhaseId) {
-                // We cannot use an Iterator because we will get
-                // ConcurrentModificationException errors, so fake it
-                while (!eventsForPhaseId.isEmpty()) {
-                    FacesEvent event =
-                          eventsForPhaseId.get(0);
-                    UIComponent source = event.getComponent();
-                    UIComponent compositeParent = null;
-                    try {
-                        if (!UIComponent.isCompositeComponent(source)) {
-                            compositeParent = UIComponent.getCompositeComponentParent(source);
-                        }
-                        if (compositeParent != null) {
-                            compositeParent.pushComponentToEL(context, null);
-                        }
-                        source.pushComponentToEL(context, null);
-                        source.broadcast(event);
-                    } catch (AbortProcessingException e) {
-                        context.getApplication().publishEvent(context,
-                                                              ExceptionQueuedEvent.class,
-                                                              new ExceptionQueuedEventContext(context,
-                                                                                        e,
-                                                                                        source,
-                                                                                        phaseId));
-                    }
-                    finally {
-                        source.popComponentFromEL(context);
-                        if (compositeParent != null) {
-                            compositeParent.popComponentFromEL(context);
-                        }
-                    }
-                    eventsForPhaseId.remove(0); // Stay at current position
-                }
-            }
-
-            // then broadcast the events for this phase.
-            if (null != (eventsForPhaseId = events.get(phaseId.getOrdinal()))) {
-                // We cannot use an Iterator because we will get
-                // ConcurrentModificationException errors, so fake it
-                while (!eventsForPhaseId.isEmpty()) {
-                    FacesEvent event = eventsForPhaseId.get(0);
-                    UIComponent source = event.getComponent();
-                    UIComponent compositeParent = null;
-                    try {
-                        if (!UIComponent.isCompositeComponent(source)) {
-                            compositeParent = getCompositeComponentParent(source);
-                        }
-                        if (compositeParent != null) {
-                            compositeParent.pushComponentToEL(context, null);
-                        }
-                        source.pushComponentToEL(context, null);
-                        source.broadcast(event);
-                    } catch (AbortProcessingException ape) {
-                        // A "return" here would abort remaining events too
-                        context.getApplication().publishEvent(context,
-                                                              ExceptionQueuedEvent.class,
-                                                              new ExceptionQueuedEventContext(context,
-                                                                                        ape,
-                                                                                        source,
-                                                                                        phaseId));
-                    }
-                    finally {
-                        source.popComponentFromEL(context);
-                        if (compositeParent != null) {
-                            compositeParent.popComponentFromEL(context);
-                        }
-                    }
-                    eventsForPhaseId.remove(0); // Stay at current position
-                }
-            }
-
-            // true if we have any more ANY_PHASE events
-            hasMoreAnyPhaseEvents =
-                  (null != (eventsForPhaseId =
-                        events.get(PhaseId.ANY_PHASE.getOrdinal()))) &&
-                        !eventsForPhaseId.isEmpty();
-            // true if we have any more events for the argument phaseId
-            hasMoreCurrentPhaseEvents =
-                  (null != events.get(phaseId.getOrdinal())) &&
-                  !events.get(phaseId.getOrdinal()).isEmpty();
-
-        } while (hasMoreAnyPhaseEvents || hasMoreCurrentPhaseEvents);
-    
-    }
-
-    // ------------------------------------------------ Lifecycle Phase Handlers
-
-
-    private void initState() {
-        skipPhase = false;
-        beforeMethodException = false;
-        //noinspection unchecked
-        List<PhaseListener> listeners =
-              (List<PhaseListener>) getStateHelper().get(PropertyKeys.phaseListeners);
-        phaseListenerIterator =
-              ((listeners != null) ? listeners.listIterator() : null);
-    }
-
-    // avoid creating the PhaseEvent if possible by doing redundant
-    // null checks.
-    private void notifyBefore(FacesContext context, PhaseId phaseId) {
-        if (getBeforePhaseListener() != null || phaseListenerIterator != null) {
-            notifyPhaseListeners(context, phaseId, true);
-        }
-    }
-    
-    // avoid creating the PhaseEvent if possible by doing redundant
-    // null checks.
-    private void notifyAfter(FacesContext context, PhaseId phaseId) {
-        if (getAfterPhaseListener() != null || phaseListenerIterator != null) {
-            notifyPhaseListeners(context, phaseId, false);
-        }
-    }
-
-
-    /**
-     * <p class="changed_added_2_0"><span
-     * class="changed_deleted_2_0_rev_a">The</span> default
-     * implementation must call {@link
-     * UIComponentBase#processRestoreState} from within a
-     * <code>try</code> block.  The <code>try</code> block must have a
-     * <code>finally</code> block that ensures that no {@link
-     * FacesEvent}s remain in the event queue. <a
-     * class="changed_deleted_2_0_rev_a" title="text removed in 2.0 Rev a: and that the this.visitTree is called, passing a ContextCallback that takes the following action: call the processEvent method of the current component. The argument event must be an instance of PostRestoreStateEvent whose component property is the current component in the traversal.">   </a> </p>
-     * @param context the <code>FacesContext</code> for this requets
-     * @param state the opaque state object obtained from the {@link
-     * javax.faces.application.StateManager}
-     */
-    @Override
-    public void processRestoreState(FacesContext context, Object state) {
-
-        // hack to work around older state managers that may not set the
-        // view root early enough
-        if (context.getViewRoot() == null) {
-            context.setViewRoot(this);
-        }
-        super.processRestoreState(context, state);
-
-    }
-    
-
-    /**
-     * <div class="changed_added_2_0">
-     * <p>Perform partial processing by calling
-     * {@link javax.faces.context.PartialViewContext#processPartial} with
-     * {@link PhaseId#APPLY_REQUEST_VALUES} if:
-     * <ul>
-     * <li>{@link javax.faces.context.PartialViewContext#isPartialRequest}
-     * returns <code>true</code> and we don't have a request to process all 
-     * components in the view
-     * ({@link javax.faces.context.PartialViewContext#isExecuteAll} returns
-     * <code>false</code>)</li>
-     * </ul>
-     * Perform full processing by calling 
-     * {@link UIComponentBase#processDecodes} if one of the following 
-     * conditions are met:
-     * <ul>
-     * <li> {@link javax.faces.context.PartialViewContext#isPartialRequest}
-     * returns <code>true</code> and we have a request to process all 
-     * components in the view
-     * ({@link javax.faces.context.PartialViewContext#isExecuteAll} returns
-     * <code>true</code>)</li>
-     * <li>{@link javax.faces.context.PartialViewContext#isPartialRequest}
-     * returns <code>false</code></li>
-     * </ul>
-     * </p>
-     * </div>
-     * <p class="changed_modified_2_0">Override the default 
-     * {@link UIComponentBase#processDecodes} behavior to broadcast any queued 
-     * events after the default processing or partial processing has been 
-     * completed and to clear out any events for later phases if the event 
-     * processing for this phase caused {@link FacesContext#renderResponse} 
-     * or {@link FacesContext#responseComplete} to be called.</p>
-     *
-     * @param context {@link FacesContext} for the request we are processing
-     *
-     * @throws NullPointerException if <code>context</code>
-     *                              is <code>null</code>
-     */
-    @Override
-    public void processDecodes(FacesContext context) {
-        initState();
-        notifyBefore(context, PhaseId.APPLY_REQUEST_VALUES);
-
-        try {
-            if (!skipPhase) {
-                if (context.getPartialViewContext().isPartialRequest() &&
-                    !context.getPartialViewContext().isExecuteAll()) {
-                    context.getPartialViewContext().processPartial(PhaseId.APPLY_REQUEST_VALUES);
-                } else {
-                    super.processDecodes(context);
-                }
-                broadcastEvents(context, PhaseId.APPLY_REQUEST_VALUES);
-            }
-        } finally {
-            clearFacesEvents(context);
-            notifyAfter(context, PhaseId.APPLY_REQUEST_VALUES);
-        }
-    }
-
-    /**
-     * <p><span class="changed_added_2_0">Override</span> the default
-     * {@link UIComponentBase#encodeBegin} behavior.  If
-     * {@link #getBeforePhaseListener} returns non-<code>null</code>,
-     * invoke it, passing a {@link PhaseEvent} for the {@link
-     * PhaseId#RENDER_RESPONSE} phase.  If the internal list populated
-     * by calls to {@link #addPhaseListener} is non-empty, any listeners
-     * in that list must have their {@link PhaseListener#beforePhase}
-     * method called, passing the <code>PhaseEvent</code>.  Any errors
-     * that occur during invocation of any of the the beforePhase
-     * listeners must be logged and swallowed.  After listeners are invoked
-     * call superclass processing.</p>
-     */
-    @Override
-    public void encodeBegin(FacesContext context) throws IOException {
-        initState();
-        notifyBefore(context, PhaseId.RENDER_RESPONSE);
-
-        if (!context.getResponseComplete()) {
-            super.encodeBegin(context);
-        }
-    }
-
-    /** 
-     * <p class="changed_added_2_0">If {@link
-     * javax.faces.context.PartialViewContext#isAjaxRequest} returns 
-     * <code>true</code>, perform partial rendering by calling
-     * {@link javax.faces.context.PartialViewContext#processPartial} with 
-     * {@link PhaseId#RENDER_RESPONSE}.  If {@link
-     * javax.faces.context.PartialViewContext#isAjaxRequest} returns
-     * <code>false</code>, delegate to the parent {@link
-     * javax.faces.component.UIComponentBase#encodeChildren} method.</p>
-     *
-     * @since 2.0
-     */
-    @Override
-    public void encodeChildren(FacesContext context) throws IOException {
-        if (context.getPartialViewContext().isAjaxRequest()) {
-            context.getPartialViewContext().processPartial(PhaseId.RENDER_RESPONSE);
-        } else {
-            super.encodeChildren(context);
-        }
-    }
-
-    /**
-     * <p class="changed_added_2_0"> If {@link #getAfterPhaseListener}
-     * returns non-<code>null</code>, invoke it, passing a {@link
-     * PhaseEvent} for the {@link PhaseId#RENDER_RESPONSE} phase.  Any
-     * errors that occur during invocation of the afterPhase listener
-     * must be logged and swallowed.  If the current view has view
-     * parameters, as indicated by a non-empty and
-     * non-<code>UnsupportedOperationException</code> throwing return
-     * from {@link javax.faces.view.ViewDeclarationLanguage#getViewMetadata(javax.faces.context.FacesContext, String)},
-     * call {@link UIViewParameter#encodeAll} on each parameter.  If
-     * calling <code>getViewParameters()</code> causes
-     * <code>UnsupportedOperationException</code> to be thrown, the
-     * exception must be silently swallowed.</p>
-     */
-    @Override
-    public void encodeEnd(FacesContext context) throws IOException {
-        super.encodeEnd(context);
-        encodeViewParameters(context);
-        notifyAfter(context, PhaseId.RENDER_RESPONSE);               
-    }
-
-    /**
-     * <p class="changed_added_2_0">Call {@link UIComponentBase#getRendersChildren}
-     * If {@link javax.faces.context.PartialViewContext#isAjaxRequest}
-     * returns <code>true</code> this method must return <code>true</code>.</p>
-     *
-     * @since 2.0
-     */
-    @Override
-    public boolean getRendersChildren() {
-        boolean value = super.getRendersChildren();
-        FacesContext context = FacesContext.getCurrentInstance();
-
-        if (context.getPartialViewContext().isAjaxRequest()) {
-            value = true;
-        }
-        return value;
-    }
-
-    /**
-     * <p>Utility method that notifies phaseListeners for the given
-     * phaseId.  Assumes that either or both the MethodExpression or
-     * phaseListeners data structure are non-null.</p>
-     *
-     * @param context   the context for this request
-     * @param phaseId   the {@link PhaseId} of the current phase
-     * @param isBefore, if true, notify beforePhase listeners.  Notify
-     *                  afterPhase listeners otherwise.
-     */
-    private void notifyPhaseListeners(FacesContext context,
-                                      PhaseId phaseId,
-                                      boolean isBefore) {
-        PhaseEvent event = createPhaseEvent(context, phaseId);
-
-        MethodExpression beforePhase = getBeforePhaseListener();
-        MethodExpression afterPhase = getAfterPhaseListener();
-        boolean hasPhaseMethodExpression =
-              (isBefore && (null != beforePhase)) ||
-              (!isBefore && (null != afterPhase) && !beforeMethodException);
-        MethodExpression expression = isBefore ? beforePhase : afterPhase;
-
-        if (hasPhaseMethodExpression) {
-            try {
-                expression.invoke(context.getELContext(), new Object[]{event});
-                skipPhase = context.getResponseComplete() ||
-                            context.getRenderResponse();
-            }
-            catch (Exception e) {
-                if (isBefore) {
-                    beforeMethodException = true;
-                }
-                if (LOGGER.isLoggable(Level.SEVERE)) {
-                    LOGGER.log(Level.SEVERE,
-                               "severe.component.unable_to_process_expression",
-                               new Object[] { expression.getExpressionString(),
-                                              (isBefore ? "beforePhase" : "afterPhase")});
-                }
-                return;
-            }
-        }
-        if (phaseListenerIterator != null && !beforeMethodException) {
-            while ((isBefore)
-                   ? phaseListenerIterator.hasNext()
-                   : phaseListenerIterator.hasPrevious()) {
-                PhaseListener curListener = ((isBefore)
-                                             ? phaseListenerIterator.next()
-                                             : phaseListenerIterator
-                                                   .previous());
-                if (phaseId == curListener.getPhaseId() ||
-                    PhaseId.ANY_PHASE == curListener.getPhaseId()) {
-                    try {
-                        if (isBefore) {
-                            curListener.beforePhase(event);
-                        } else {
-                            curListener.afterPhase(event);
-                        }
-                        skipPhase = context.getResponseComplete() ||
-                                    context.getRenderResponse();
-                    }
-                    catch (Exception e) {
-                        if (isBefore && phaseListenerIterator.hasPrevious()) {
-                            phaseListenerIterator.previous();
-                        }
-                        if (LOGGER.isLoggable(Level.SEVERE)) {
-                            LOGGER.log(Level.SEVERE,
-                                       "severe.component.uiviewroot_error_invoking_phaselistener",
-                                       curListener.getClass().getName());
-                        }
-                        return;
-                    }
-                }
-            }
-        }
-    }
-
-    private static PhaseEvent createPhaseEvent(FacesContext context,
-                                               PhaseId phaseId)
-    throws FacesException {
-
-        if (lifecycle == null) {
-            LifecycleFactory lifecycleFactory = (LifecycleFactory)
-                  FactoryFinder.getFactory(FactoryFinder.LIFECYCLE_FACTORY);
-            String lifecycleId =
-                  context.getExternalContext()
-                        .getInitParameter(FacesServlet.LIFECYCLE_ID_ATTR);
-            if (lifecycleId == null) {
-                lifecycleId = LifecycleFactory.DEFAULT_LIFECYCLE;
-            }
-            lifecycle = lifecycleFactory.getLifecycle(lifecycleId);
-        }
-
-        return (new PhaseEvent(context, phaseId, lifecycle));
-
-    }
-
-
-    /**
-     * <div class="changed_added_2_0">
-     * <p>Perform partial processing by calling
-     * {@link javax.faces.context.PartialViewContext#processPartial} with
-     * {@link PhaseId#PROCESS_VALIDATIONS} if:
-     * <ul>
-     * <li>{@link javax.faces.context.PartialViewContext#isPartialRequest}
-     * returns <code>true</code> and we don't have a request to process all
-     * components in the view
-     * ({@link javax.faces.context.PartialViewContext#isExecuteAll} returns
-     * <code>false</code>)</li>
-     * </ul>
-     * Perform full processing by calling
-     * {@link UIComponentBase#processValidators} if one of the following
-     * conditions are met:
-     * <ul>
-     * <li> {@link javax.faces.context.PartialViewContext#isPartialRequest}
-     * returns <code>true</code> and we have a request to process all
-     * components in the view
-     * ({@link javax.faces.context.PartialViewContext#isExecuteAll} returns
-     * <code>true</code>)</li>
-     * <li>{@link javax.faces.context.PartialViewContext#isPartialRequest}
-     * returns <code>false</code></li>
-     * </ul>
-     * </p>
-     * </div>
-     * <p class="changed_modified_2_0">Override the default 
-     * {@link UIComponentBase#processValidators} behavior to broadcast any 
-     * queued events after the default processing or partial processing has been 
-     * completed and to clear out any events for later phases if the event 
-     * processing for this phase caused {@link FacesContext#renderResponse} or 
-     * {@link FacesContext#responseComplete} to be called.</p>
-     *
-     * @param context {@link FacesContext} for the request we are processing
-     *
-     * @throws NullPointerException if <code>context</code>
-     *                              is <code>null</code>
-     */
-    @Override
-    public void processValidators(FacesContext context) {
-        initState();
-        notifyBefore(context, PhaseId.PROCESS_VALIDATIONS);
-
-        try {
-            if (!skipPhase) {
-                if (context.getPartialViewContext().isPartialRequest() &&
-                    !context.getPartialViewContext().isExecuteAll()) {
-                    context.getPartialViewContext().processPartial(PhaseId.PROCESS_VALIDATIONS);
-                } else {
-                    super.processValidators(context);
-                }
-                broadcastEvents(context, PhaseId.PROCESS_VALIDATIONS);
-            }
-        } finally {
-            clearFacesEvents(context);
-            notifyAfter(context, PhaseId.PROCESS_VALIDATIONS);
-        }
-    }
-
-    /**
-     * <div class="changed_added_2_0">
-     * <p>Perform partial processing by calling
-     * {@link javax.faces.context.PartialViewContext#processPartial} with
-     * {@link PhaseId#UPDATE_MODEL_VALUES} if:
-     * <ul>
-     * <li>{@link javax.faces.context.PartialViewContext#isPartialRequest}
-     * returns <code>true</code> and we don't have a request to process all
-     * components in the view
-     * ({@link javax.faces.context.PartialViewContext#isExecuteAll} returns
-     * <code>false</code>)</li>
-     * </ul>
-     * Perform full processing by calling
-     * {@link UIComponentBase#processUpdates} if one of the following
-     * conditions are met:
-     * <ul>
-     * <li> {@link javax.faces.context.PartialViewContext#isPartialRequest}
-     * returns <code>true</code> and we have a request to process all
-     * components in the view
-     * ({@link javax.faces.context.PartialViewContext#isExecuteAll} returns
-     * <code>true</code>)</li>
-     * <li>{@link javax.faces.context.PartialViewContext#isPartialRequest}
-     * returns <code>false</code></li>
-     * </ul>
-     * </p>
-     *</div>
-     * <p class="changed_modified_2_0">Override the default {@link UIComponentBase}
-     * behavior to broadcast any queued events after the default processing or 
-     * partial processing has been completed and to clear out any events for 
-     * later phases if the event processing for this phase caused 
-     * {@link FacesContext#renderResponse} or
-     * {@link FacesContext#responseComplete} to be called.</p>
-     *
-     * @param context {@link FacesContext} for the request we are processing
-     *
-     * @throws NullPointerException if <code>context</code>
-     *                              is <code>null</code>
-     */
-    @Override
-    public void processUpdates(FacesContext context) {
-        initState();
-        notifyBefore(context, PhaseId.UPDATE_MODEL_VALUES);
-
-        try {
-            if (!skipPhase) {
-                if (context.getPartialViewContext().isPartialRequest() &&
-                    !context.getPartialViewContext().isExecuteAll()) {
-                    context.getPartialViewContext().processPartial(PhaseId.UPDATE_MODEL_VALUES);
-                } else {
-                    super.processUpdates(context);
-                }
-                broadcastEvents(context, PhaseId.UPDATE_MODEL_VALUES);
-            }
-        } finally {
-            clearFacesEvents(context);
-            notifyAfter(context, PhaseId.UPDATE_MODEL_VALUES);
-        }
-    }
-
-    /**
-     * <p>Broadcast any events that have been queued for the <em>Invoke
-     * Application</em> phase of the request processing lifecycle
-     * and to clear out any events for later phases if the event processing
-     * for this phase caused {@link FacesContext#renderResponse} or
-     * {@link FacesContext#responseComplete} to be called.</p>
-     *
-     * @param context {@link FacesContext} for the request we are processing
-     *
-     * @throws NullPointerException if <code>context</code>
-     *                              is <code>null</code>
-     */
-    public void processApplication(FacesContext context) {
-        initState();
-        notifyBefore(context, PhaseId.INVOKE_APPLICATION);
-        try {
-            if (!skipPhase) {
-                // NOTE - no tree walk is performed; this is a UIViewRoot-only operation
-                broadcastEvents(context, PhaseId.INVOKE_APPLICATION);
-            }
-        } finally {
-            clearFacesEvents(context);
-            notifyAfter(context, PhaseId.INVOKE_APPLICATION);
-        }
-    }
-
-
-    // clear out the events if we're skipping to render-response
-    // or if there is a response complete signal.
-    private void clearFacesEvents(FacesContext context) {
-        if (context.getRenderResponse() || context.getResponseComplete()) {
-            if (events != null) {
-                for (List<FacesEvent> eventList : events) {
-                    if (eventList != null) {
-                        eventList.clear();
-                    }
-                }
-                events = null;
-            }
-        }
-    }
-
-    /**
-     * <p>Generate an identifier for a component.  The identifier will
-     * be prefixed with UNIQUE_ID_PREFIX, and will be unique within
-     * this UIViewRoot.</p>
-     */
-    public String createUniqueId() {
-        return createUniqueId(getFacesContext(), null);
-    }
-
-    /**<p>Generate an identifier for a component. The identifier
-     * will be prefixed with UNIQUE_ID_PREFIX, and will be unique
-     * within this UIViewRoot. Optionally, a unique seed value can
-     * be supplied by component creators which should be
-     * included in the generated unique id.</p>
-     *
-     * @param context FacesContext
-     * @param seed an optional seed value - e.g. based on the position of the component in the VDL-template
-     * @return a unique-id in this component-container
-     */
-    public String createUniqueId(FacesContext context, String seed) {
-        if (seed != null) {
-            return UIViewRoot.UNIQUE_ID_PREFIX + seed;
-        } else {
-            Integer i = (Integer) getStateHelper().get(PropertyKeys.lastId);
-            int lastId = ((i != null) ? i : 0);
-            getStateHelper().put(PropertyKeys.lastId,  ++lastId);
-            return UIViewRoot.UNIQUE_ID_PREFIX + lastId;
-        }
-    }
-
-
-    /**
-     * <p>Return the <code>Locale</code> to be used in localizing the
-     * response being created for this view.</p>
-     * <p/>
-     * <p>Algorithm:</p>
-     * <p/>
-     * <p>If we have a <code>locale</code> ivar, return it.  If we have
-     * a value expression for "locale", get its value.  If the value is
-     * <code>null</code>, return the result of calling {@link
-     * javax.faces.application.ViewHandler#calculateLocale}.  If the
-     * value is an instance of <code>java.util.Locale</code> return it.
-     * If the value is a String, convert it to a
-     * <code>java.util.Locale</code> and return it.  If there is no
-     * value expression for "locale", return the result of calling {@link
-     * javax.faces.application.ViewHandler#calculateLocale}.</p>
-     *
-     * @return The current <code>Locale</code> obtained by executing the
-     *         above algorithm.
-     */
-    public Locale getLocale() {
-
-        Object result = getStateHelper().eval(PropertyKeys.locale);
-
-        if (result != null) {
-            Locale locale = null;
-            if (result instanceof Locale) {
-                    locale = (Locale) result;
-            } else if (result instanceof String) {
-                   locale = getLocaleFromString((String) result);
-            }
-            return locale;
-        } else {
-            FacesContext context = getFacesContext();
-            return context.getApplication().getViewHandler().calculateLocale(context);
-        }
-
-    }
-
-
-    // W3C XML specification refers to IETF RFC 1766 for language code
-    // structure, therefore the value for the xml:lang attribute should
-    // be in the form of language or language-country or
-    // language-country-variant.
-
-    private static Locale getLocaleFromString(String localeStr)
-        throws IllegalArgumentException {
-        // length must be at least 2.
-        if (null == localeStr || localeStr.length() < 2) {
-            throw new IllegalArgumentException("Illegal locale String: " +
-                                               localeStr);
-        }
-
-        Locale result = null;
-        String lang = null;
-        String country = null;
-        String variant = null;
-        char[] seps = {
-            '-',
-            '_'
-        };
-        int inputLength = localeStr.length();
-        int i = 0;
-        int j = 0;
-
-        // to have a language, the length must be >= 2
-        if ((inputLength >= 2) &&
-            ((i = indexOfSet(localeStr, seps, 0)) == -1)) {
-            // we have only Language, no country or variant
-            if (2 != localeStr.length()) {
-                throw new
-                    IllegalArgumentException("Illegal locale String: " +
-                                             localeStr);
-            }
-            lang = localeStr.toLowerCase();
-        }
-
-        // we have a separator, it must be either '-' or '_'
-        if (i != -1) {
-            lang = localeStr.substring(0, i);
-            // look for the country sep.
-            // to have a country, the length must be >= 5
-            if ((inputLength >= 5) &&
-                (-1 == (j = indexOfSet(localeStr, seps, i + 1)))) {
-                // no further separators, length must be 5
-                if (inputLength != 5) {
-                    throw new
-                        IllegalArgumentException("Illegal locale String: " +
-                                                 localeStr);
-                }
-                country = localeStr.substring(i + 1);
-            }
-            if (j != -1) {
-                country = localeStr.substring(i + 1, j);
-                // if we have enough separators for language, locale,
-                // and variant, the length must be >= 8.
-                if (inputLength >= 8) {
-                    variant = localeStr.substring(j + 1);
-                } else {
-                    throw new
-                        IllegalArgumentException("Illegal locale String: " +
-                                                 localeStr);
-                }
-            }
-        }
-        if (variant != null && country != null && lang != null) {
-            result = new Locale(lang, country, variant);
-        } else if (lang != null && country != null) {
-            result = new Locale(lang, country);
-        } else if (lang != null) {
-            result = new Locale(lang, "");
-        }
-        return result;
-    }
-
-
-    /**
-     * @param str local string
-     * @param set the substring
-     * @param fromIndex starting index
-     * @return starting at <code>fromIndex</code>, the index of the
-     *         first occurrence of any substring from <code>set</code> in
-     *         <code>toSearch</code>, or -1 if no such match is found
-     */
-    private static int indexOfSet(String str, char[] set, int fromIndex) {
-        int result = -1;
-        for (int i = fromIndex, len = str.length(); i < len; i++) {
-            for (int j = 0, innerLen = set.length; j < innerLen; j++) {
-                if (str.charAt(i) == set[j]) {
-                    result = i;
-                    break;
-                }
-            }
-            if (-1 != result) {
-                break;
-            }
-        }
-        return result;
-    }
-
-    /**
-     * <p>Set the <code>Locale</code> to be used in localizing the
-     * response being created for this view. </p>
-     *
-     * @param locale The new localization Locale
-     */
-    public void setLocale(Locale locale) {
-
-        getStateHelper().put(PropertyKeys.locale, locale);
-        // Make sure to appraise the EL of this switch in Locale.
-        FacesContext.getCurrentInstance().getELContext().setLocale(locale);
-
-    }
-    
-    private Map<String, Object> viewScope = null;
-
-    /**
-     * <p class="changed_added_2_0">This implementation simply calls through to {@link
-     * #getViewMap(boolean)}, passing <code>true</code> as the argument, and
-     * returns the result.</p>
-     * <div class="changed_added_2_0">
-     *
-     * @since 2.0
-     */
-    public Map<String, Object> getViewMap() {
-
-        return getViewMap(true);
-        
-    }
-
-    /**
-     * <p class="changed_added_2_0">Returns a <code>Map</code> that acts as the
-     * interface to the data store that is the "view scope", or, if this
-     * instance does not have such a <code>Map</code> and the
-     * <code>create</code> argument is <code>true</code>, creates one and
-     * returns it.  This map must be instantiated lazily and cached for return
-     * from subsequent calls to this method on this <code>UIViewRoot</code>
-     * instance. {@link javax.faces.application.Application#publishEvent} must
-     * be called, passing {@link PostConstructViewMapEvent}<code>.class</code> as the
-     * first argument and this <code>UIViewRoot</code> instance as the second
-     * argument.</p>
-     *
-     * <p>The returned <code>Map</code> must be implemented such that calling
-     * <code>clear()</code> on the <code>Map</code> causes {@link javax.faces.application.Application#publishEvent} to be
-     * called, passing {@link PreDestroyViewMapEvent}<code>.class</code>
-     * as the first argument and this <code>UIViewRoot</code> instance
-     * as the second argument.</p>
-
-     * <p class="changed_modified_2_0_rev_a">Depending upon application
-     * configuration, objects stored in the view map may need to be
-     * <code>Serializable</code>.  In general, it is a good idea to
-     * ensure that any objects stored in the view map are
-     * <code>Serializable</code>.</p>
-     * 
-     * <p>See {@link FacesContext#setViewRoot} for the specification of when the
-     * <code>clear()</code> method must be called.</p>
-     * <p/>
-     * </div>
-     *
-     * @param create <code>true</code> to create a new <code>Map</code> for this
-     *               instance if necessary; <code>false</code> to return
-     *               <code>null</code> if there's no current <code>Map</code>.
-     *
-     * @since 2.0
-     */
-    public Map<String, Object> getViewMap(boolean create) {
-
-        if (create && viewScope == null) {
-            viewScope = new ViewMap(getFacesContext().getApplication().getProjectStage());
-            getFacesContext().getApplication()
-                  .publishEvent(getFacesContext(),
-                                PostConstructViewMapEvent.class,
-                                this);
-        }
-        return viewScope;
-        
-    }
-
-    Map<Class<? extends SystemEvent>,List<SystemEventListener>> viewListeners;
-
-
-    /**
-     * <p class="changed_added_2_0">Install the listener instance
-     * referenced by argument <code>listener</code> into the
-     * <code>UIViewRoot</code> as a listener for events of type
-     * <code>systemEventClass</code>.</p>
-     *
-     * <p>Note that installed listeners are not maintained as part of the
-     * <code>UIViewRoot</code>'s state.</p>
-     *
-     * @param systemEvent the <code>Class</code> of event for which
-     *  <code>listener</code> must be fired.
-
-     * @param listener the implementation of {@link
-     *  javax.faces.event.SystemEventListener} whose {@link
-     *  javax.faces.event.SystemEventListener#processEvent} method must
-     *  be called when events of type <code>systemEventClass</code> are
-     *  fired.
-     *
-     * @throws <code>NullPointerException</code> if <code>systemEventClass</code>
-     *  or <code>listener</code> are <code>null</code>.
-     *
-     * @since 2.0
-     */
-    public void subscribeToViewEvent(Class<? extends SystemEvent> systemEvent,
-                                     SystemEventListener listener) {
-
-        if (systemEvent == null) {
-            throw new NullPointerException();
-        }
-        if (listener == null) {
-            throw new NullPointerException();
-        }
-        
-        if (viewListeners == null) {
-            viewListeners = new HashMap<Class<? extends SystemEvent>, List<SystemEventListener>>(4, 1.0f);
-        }
-        List<SystemEventListener> listeners = viewListeners.get(systemEvent);
-        if (listeners == null) {
-            listeners = new CopyOnWriteArrayList<SystemEventListener>();
-            viewListeners.put(systemEvent, listeners);
-        }
-        listeners.add(listener);
-
-    }
-
-
-    /**
-     * <p class="changed_added_2_0">Remove the listener instance
-     * referenced by argument <code>listener</code> from the
-     * <code>UIViewRoot</code> as a listener for events of type
-     * <code>systemEventClass</code>.
-     *
-     * @param systemEvent the <code>Class</code> of event for which
-     *  <code>listener</code> must be fired.
-     * @param listener the implementation of {@link
-     *  javax.faces.event.SystemEventListener} whose {@link
-     *  javax.faces.event.SystemEventListener#processEvent} method must
-     *  be called when events of type <code>systemEventClass</code> are
-     *  fired.
-     *
-     * @throws <code>NullPointerException</code> if
-     * <code>systemEventClass</code> or <code>listener</code> are
-     * <code>null</code>.
-     *
-     * @since 2.0
-     */
-    public void unsubscribeFromViewEvent(Class<? extends SystemEvent> systemEvent,
-                                         SystemEventListener listener) {
-
-        if (systemEvent == null) {
-            throw new NullPointerException();
-        }
-        if (listener == null) {
-            throw new NullPointerException();
-        }
-
-        if (viewListeners != null) {
-            List<SystemEventListener> listeners = viewListeners.get(systemEvent);
-            if (listeners != null) {
-                listeners.remove(listener);
-            }
-        }
-
-    }
-
-
-    /**
-     * <p class="changed_added_2_0">Return the
-     * <code>SystemEventListener</code> instances registered on this
-     * <code>UIComponent</code> instance that are interested in events
-     * of type <code>eventClass</code>.</p>
-     *
-     * @param systemEvent the <code>Class</code> of event for which the
-     * listeners must be returned.
-
-     * @throws NullPointerException if argument <code>systemEvent</code>
-     * is <code>null</code>.
-     *
-     * @since 2.0
-     */
-    public List<SystemEventListener> getViewListenersForEventClass(Class<? extends SystemEvent> systemEvent) {
-
-        if (systemEvent == null) {
-            throw new NullPointerException();
-        }
-        if (viewListeners != null) {
-            return viewListeners.get(systemEvent);
-        }
-        return null;
-        
-    }
-    
-
-    private void encodeViewParameters(FacesContext context) {
-
-        ViewDeclarationLanguage vdl = context.getApplication().getViewHandler().
-                    getViewDeclarationLanguage(context, getViewId());
-
-        if (vdl == null) {
-            return;
-        }
-        ViewMetadata metadata = vdl.getViewMetadata(context, getViewId());
-        if (metadata != null) { // perhaps it's not supported
-            Collection<UIViewParameter> params =
-                  ViewMetadata.getViewParameters(this);
-            if (params.isEmpty()) {
-                return;
-            }
-
-            try {
-                for (UIViewParameter param : params) {
-                    param.encodeAll(context);
-                }
-            } catch (IOException e) {
-                // IOException is forced by contract and is not expected to be thrown in this case
-                throw new RuntimeException("Unexpected IOException", e);
-            }
-        }
-    }
-
-    // END TENATIVE
-
-    // ----------------------------------------------------- StateHolder Methods
-
-
-
-    private Object[] values;
-
-    @Override
-    public Object saveState(FacesContext context) {
-
-        if (context == null) {
-            throw new NullPointerException();
-        }
-        if (values == null) {
-            values = new Object[2];
-        }
-
-        values[0] = super.saveState(context);
-        values[1] = saveAttachedState(context, viewScope);
-        return (values);
-
-    }
-
-    @Override
-    public void restoreState(FacesContext context, Object state) {
-
-        if (context == null) {
-            throw new NullPointerException();
-        }
-        if (state == null) {
-            return;
-        }
-        
-        values = (Object[]) state;
-        super.restoreState(context, values[0]);
-        //noinspection unchecked
-        viewScope = (Map<String,Object>) restoreAttachedState(context, values[1]);
-        
-    }
-
-
-    // --------------------------------------------------------- Private Methods
-
-
-    private static String getIdentifier(String target) {
-
-        // check map
-        String id = LOCATION_IDENTIFIER_MAP.get(target);
-        if (id == null) {
-            id = LOCATION_IDENTIFIER_PREFIX + target;
-            LOCATION_IDENTIFIER_MAP.put(target, id);
-        }
-        return id;
-
-    }
-
-
-    @SuppressWarnings({"UnusedDeclaration"})
-    private List<UIComponent> getComponentResources(FacesContext context,
-                                                    String target,
-                                                    boolean create) {
-
-        String location = getIdentifier(target);
-        UIComponent facet = getFacet(location);
-        if (facet == null && create) {
-            // Using an implementation specific component type to prevent
-            // component resources being rendered at the incorrect time if
-            // a caller calls UIViewRoot.encodeAll().
-            facet = context.getApplication().createComponent("javax.faces.ComponentResourceContainer");
-            facet.setId(location);
-            getFacets().put(location, facet);
-        }
-
-        return ((facet != null) ? facet.getChildren() : null);
-
-    }
-    
-
-    private static final class ViewMap extends HashMap<String,Object> {
-
-        private static final long serialVersionUID = -1l;
-
-        private ProjectStage stage;
-
-        
-        // -------------------------------------------------------- Constructors
-
-
-        ViewMap(ProjectStage stage) {
-
-            this.stage = stage;
-
-        }
-
-
-        // ---------------------------------------------------- Methods from Map
-
-
-        @Override
-        public void clear() {
-
-            FacesContext context = FacesContext.getCurrentInstance();
-            context.getApplication().publishEvent(context,
-                                                  PreDestroyViewMapEvent.class,
-                                                  context.getViewRoot());
-            super.clear();
-
-        }
-
-
-        @Override
-        public Object put(String key, Object value) {
-
-            if (value != null && ProjectStage.Development.equals(stage) && !(value instanceof Serializable)) {
-                LOGGER.log(Level.WARNING,
-                           "warning.component.uiviewroot_non_serializable_attribute_viewmap",
-                           new Object[] { key, value.getClass().getName() });
-            }
-            return super.put(key, value);
-
-        }
-
-
-        @Override
-        public void putAll(Map<? extends String,?> m) {
-
-            for (Map.Entry<? extends String,?> entry : m.entrySet()) {
-                String k = entry.getKey();
-                Object v = entry.getValue();
-                this.put(k, v);
-            }
-
-        }
-
-
-    } // END ViewMap
-
-
-}
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package javax.faces.component;
+
+import javax.el.MethodExpression;
+import javax.faces.FacesException;
+import javax.faces.FactoryFinder;
+import javax.faces.application.ProjectStage;
+import javax.faces.component.visit.VisitResult;
+import javax.faces.context.FacesContext;
+import javax.faces.lifecycle.Lifecycle;
+import javax.faces.lifecycle.LifecycleFactory;
+import javax.faces.webapp.FacesServlet;
+import java.io.IOException;
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+import java.util.ListIterator;
+import java.util.concurrent.CopyOnWriteArrayList;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.faces.component.visit.VisitCallback;
+import javax.faces.component.visit.VisitContext;
+import javax.faces.event.*;
+import javax.faces.view.ViewDeclarationLanguage;
+import javax.faces.view.ViewMetadata;
+
+/**
+ * <p><strong class="changed_modified_2_0"><span
+ * class="changed_modified_2_0_rev_a changed_modified_2_1
+ * changed_modified_2_2">UIViewRoot</span></strong> is the UIComponent
+ * that represents the root of the UIComponent tree.  This component
+ * renders markup as the response to Ajax requests.  It also serves as
+ * the root of the component tree, and as a place to hang per-view
+ * {@link PhaseListener}s.</p>
+ *
+ * <p>For each of the following lifecycle phase methods:</p>
+
+ * <ul>
+
+ * <li><p>{@link #processDecodes} </p></li>
+
+ * <li><p>{@link #processValidators} </p></li>
+
+ * <li><p>{@link #processUpdates} </p></li>
+
+ * <li><p>{@link #processApplication} </p></li>
+
+ * <li><p>RenderResponse, via {@link #encodeBegin} and {@link
+ * #encodeEnd} </p></li>
+
+ * </ul>
+
+ * <p>Take the following action regarding
+ * <code>PhaseListener</code>s.</p>
+
+ * <ul>
+
+ * <p>Initialize a state flag to <code>false</code>.</p>
+
+ * <p>If {@link #getBeforePhaseListener} returns non-<code>null</code>,
+ * invoke the listener, passing in the correct corresponding {@link
+ * PhaseId} for this phase.</p>
+
+ * <p>Upon return from the listener, call {@link
+ * FacesContext#getResponseComplete} and {@link
+ * FacesContext#getRenderResponse}.  If either return <code>true</code>
+ * set the internal state flag to <code>true</code>. </p>
+
+ * <p>If or one or more listeners have been added by a call to {@link
+ * #addPhaseListener}, invoke the <code>beforePhase</code> method on
+ * each one whose {@link PhaseListener#getPhaseId} matches the current
+ * phaseId, passing in the same <code>PhaseId</code> as in the previous
+ * step.</p>
+
+ * <p>Upon return from each listener, call {@link
+ * FacesContext#getResponseComplete} and {@link
+ * FacesContext#getRenderResponse}.  If either return <code>true</code>
+ * set the internal state flag to <code>true</code>. </p>
+
+
+ * <p>Execute any processing for this phase if the internal state flag
+ * was not set.</p>
+
+ * <p>If {@link #getAfterPhaseListener} returns non-<code>null</code>,
+ * invoke the listener, passing in the correct corresponding {@link
+ * PhaseId} for this phase.</p>
+ * <p/>
+ * <p>If or one or more listeners have been added by a call to {@link
+ * #addPhaseListener}, invoke the <code>afterPhase</code> method on each
+ * one whose {@link PhaseListener#getPhaseId} matches the current
+ * phaseId, passing in the same <code>PhaseId</code> as in the previous
+ * step.</p>
+ * <p/>
+ * <p/>
+ * </ul>
+ */
+
+public class UIViewRoot extends UIComponentBase implements UniqueIdVendor {
+
+    // ------------------------------------------------------ Manifest Constants
+
+    public static final String METADATA_FACET_NAME = "javax_faces_metadata";
+    
+    /**
+     * <p class="changed_added_2_0">The key in the value set of the
+     * <em>view metadata BeanDescriptor</em>, the value of which is a 
+     * <code>List<{@link UIViewParameter.Reference}></code>.</p>
+     *
+     * @since 2.0
+     */
+    public static final String VIEW_PARAMETERS_KEY = "javax.faces.component.VIEW_PARAMETERS_KEY";
+    
+    /** <p>The standard component type for this component.</p> */
+    public static final String COMPONENT_TYPE = "javax.faces.ViewRoot";
+
+
+    /** <p>The standard component family for this component.</p> */
+    public static final String COMPONENT_FAMILY = "javax.faces.ViewRoot";
+
+
+    /**
+     * <p>The prefix that will be used for identifiers generated
+     * by the <code>createUniqueId()</code> method.
+     */
+    static public final String UNIQUE_ID_PREFIX = "j_id";
+
+    private static Lifecycle lifecycle;
+
+    private static final Logger LOGGER =
+          Logger.getLogger("javax.faces", "javax.faces.LogStrings");
+
+    private static final String LOCATION_IDENTIFIER_PREFIX = "javax_faces_location_";
+    private static final Map<String,String> LOCATION_IDENTIFIER_MAP =
+          new HashMap<String,String>(6, 1.0f);
+    static {
+        LOCATION_IDENTIFIER_MAP.put("head", LOCATION_IDENTIFIER_PREFIX + "HEAD");
+        LOCATION_IDENTIFIER_MAP.put("form", LOCATION_IDENTIFIER_PREFIX + "FORM");
+        LOCATION_IDENTIFIER_MAP.put("body", LOCATION_IDENTIFIER_PREFIX + "BODY");        
+    }
+
+    enum PropertyKeys {
+        /**
+         * <p>The render kit identifier of the {@link javax.faces.render.RenderKit} associated
+         * wth this view.</p>
+         */
+        renderKitId,
+        /**
+         * <p>The view identifier of this view.</p>
+         */
+        viewId,
+        locale,
+        lastId,
+        beforePhase,
+        afterPhase,
+        phaseListeners,
+        resourceLibraryContracts
+    }
+
+    // ------------------------------------------------------------ Constructors
+
+
+    /**
+     * <p>Create a new {@link UIViewRoot} instance with default property
+     * values.</p>
+     */
+    public UIViewRoot() {
+
+        super();
+        setRendererType(null);
+        setId(createUniqueId());
+
+    }
+
+    // ------------------------------------------------------ Instance Variables
+
+
+    /**
+     * <p>Set and cleared during the lifetime of a lifecycle phase.  Has
+     * no meaning between phases.  If <code>true</code>, the lifecycle
+     * processing for the current phase must not take place.</p>
+     */
+    private boolean skipPhase;
+
+    /**
+     * <p>Set and cleared during the lifetime of a lifecycle phase.  Has no
+     * meaning between phases.  If <code>true</code>, the
+     * <code>MethodExpression</code> associated with <code>afterPhase</code>
+     * will not be invoked nor will any PhaseListeners associated with this
+     * UIViewRoot.
+     */
+    private boolean beforeMethodException;
+
+    /**
+     * <p>Set and cleared during the lifetime of a lifecycle phase.  Has no
+     * meaning between phases.
+     */
+    private ListIterator<PhaseListener> phaseListenerIterator;
+
+    // -------------------------------------------------------------- Properties
+
+
+    /**
+     * <p class="changed_added_2_0">Override superclass method to always return 
+     * {@code true} because a {@code UIViewRoot} is 
+     * defined to always be in a view.</p>
+     *
+     * @since 2.0
+     */
+    @Override
+    public boolean isInView() {
+
+        return true;
+
+    }
+
+    /**
+     * <p class="changed_added_2_0">Overridden to take no action.</p>
+     *
+     * @since 2.0
+     * @param isInView
+     */
+    @Override
+    public void setInView(boolean isInView) {
+        // no-op
+    }
+
+    /**
+     * @see UIComponent#getFamily()
+     */
+    public String getFamily() {
+
+        return (COMPONENT_FAMILY);
+
+    }
+
+
+    /**
+     * <p>Return the render kit identifier of the {@link
+     * javax.faces.render.RenderKit} associated with this view.  Unless
+     * explicitly set, as in {@link
+     * javax.faces.application.ViewHandler#createView}, the returned
+     * value will be <code>null.</code></p>
+     */
+    public String getRenderKitId() {
+
+        return (String) getStateHelper().eval(PropertyKeys.renderKitId);
+
+    }
+
+
+    /**
+     * <p>Set the render kit identifier of the {@link javax.faces.render.RenderKit}
+     * associated with this view.  This method may be called at any time
+     * between the end of <em>Apply Request Values</em> phase of the
+     * request processing lifecycle (i.e. when events are being broadcast)
+     * and the beginning of the <em>Render Response</em> phase.</p>
+     *
+     * @param renderKitId The new {@link javax.faces.render.RenderKit} identifier,
+     *                    or <code>null</code> to disassociate this view with any
+     *                    specific {@link javax.faces.render.RenderKit} instance
+     */
+    public void setRenderKitId(String renderKitId) {
+
+        getStateHelper().put(PropertyKeys.renderKitId, renderKitId);
+
+    }
+
+
+    /** <p>Return the view identifier for this view.</p> */
+    public String getViewId() {
+
+        return (String) getStateHelper().get(PropertyKeys.viewId);
+
+    }
+
+
+    /**
+     * <p>Set the view identifier for this view.</p>
+     *
+     * @param viewId The new view identifier
+     */
+    public void setViewId(String viewId) {
+
+        getStateHelper().put(PropertyKeys.viewId, viewId);
+
+    }
+
+    // ------------------------------------------------ Event Management Methods
+
+
+    /**
+     * <p>Return the {@link MethodExpression} that will be invoked
+     * before this view is rendered.</p>
+     *
+     * @return the {@link MethodExpression} that will be invoked before
+     *         this view is rendered.
+     * @since 1.2
+     */
+    public MethodExpression getBeforePhaseListener() {
+
+        return (MethodExpression) getStateHelper().get(PropertyKeys.beforePhase);
+    }
+
+    /**
+     * <p><span class="changed_modified_2_0
+     * changed_modified_2_0_rev_a">Allow</span> an arbitrary method to
+     * be called for the "beforePhase" event as the UIViewRoot runs
+     * through its lifecycle.  This method will be called for all phases
+     * <span class="changed_modified_2_0_rev_a">except {@link
+     * PhaseId#RESTORE_VIEW}.  Unlike a true {@link PhaseListener}, this
+     * approach doesn't allow for only receiving {@link PhaseEvent}s for
+     * a given phase.</span></p>
+
+     * <p>The method must conform to the signature of {@link
+     * PhaseListener#beforePhase}.</p>
+     *
+     * @param newBeforePhase the {@link MethodExpression} that will be
+     *                       invoked before this view is rendered.
+     * @since 1.2
+     */
+    public void setBeforePhaseListener(MethodExpression newBeforePhase) {
+        getStateHelper().put(PropertyKeys.beforePhase, newBeforePhase);
+    }
+
+    /**
+     * <p>Return the {@link MethodExpression} that will be invoked after
+     * this view is rendered.</p>
+     *
+     * @return the {@link MethodExpression} that will be invoked after
+     *         this view is rendered.
+     *
+     * @since 1.2
+     */
+    public MethodExpression getAfterPhaseListener() {
+        return (MethodExpression) getStateHelper().get(PropertyKeys.afterPhase);
+    }
+
+    /**
+     * <p><span class="changed_modified_2_0">Allow</span> an arbitrary
+     * method to be called for the "afterPhase" event as the UIViewRoot
+     * runs through its lifecycle.  This method will be called for all
+     * phases <span class="changed_modified_2_0">including {@link
+     * PhaseId#RESTORE_VIEW}</span>.  Unlike a true {@link
+     * PhaseListener}, this approach doesn't allow for only receiving
+     * {@link PhaseEvent}s for a given phase.</p> <p/> <p>The method
+     * must conform to the signature of {@link
+     * PhaseListener#afterPhase}.</p>
+     *
+     * @param newAfterPhase the {@link MethodExpression} that will be
+     *                      invoked after this view is rendered.
+     *
+     * @since 1.2
+     */
+    public void setAfterPhaseListener(MethodExpression newAfterPhase) {
+        getStateHelper().put(PropertyKeys.afterPhase, newAfterPhase);
+    }
+
+
+    /**
+     * <p>If the argument <code>toRemove</code> is in the list of {@link
+     * PhaseListener}s for this instance, it must be removed.</p>
+     * @param toRemove the {@link PhaseListener} to remove.
+     *
+     * @since 1.2
+     */
+    public void removePhaseListener(PhaseListener toRemove) {
+
+        getStateHelper().remove(PropertyKeys.phaseListeners, toRemove);
+    }
+
+    /**
+     * <p>Add the argument <code>newPhaseListener</code> to the list of
+     * {@link PhaseListener}s on this <code>UIViewRoot</code>.</p>
+     *
+     * @param newPhaseListener the {@link PhaseListener} to add
+     *
+     * @since 1.2
+     */
+    public void addPhaseListener(PhaseListener newPhaseListener) {
+
+        getStateHelper().add(PropertyKeys.phaseListeners, newPhaseListener);
+
+    }
+
+    
+    /**
+     * 
+     * <p class="changed_added_2_0">Return an unmodifiable list of the 
+     * <code>PhaseListener</code> instances attached to this 
+     * <code>UIViewRoot</code> instance.</p>
+     *
+     * @since 2.0
+     */
+    public List<PhaseListener> getPhaseListeners() {
+
+        //noinspection unchecked
+        List<PhaseListener> result = (List<PhaseListener>)
+              getStateHelper().get(PropertyKeys.phaseListeners);
+
+        return ((result != null)
+                ? Collections.unmodifiableList(result)
+                : Collections.unmodifiableList(Collections.<PhaseListener>emptyList()));
+
+    }
+
+    /**
+     * <p class="changed_added_2_0">Add argument <code>component</code>,
+     * which is assumed to represent a resource instance, as a resource
+     * to this view.  A resource instance is rendered by a resource
+     * <code>Renderer</code>, as described in the Standard HTML
+     * RenderKit. The default implementation must call through to
+     * {@link #addComponentResource(javax.faces.context.FacesContext, 
+     * javax.faces.component.UIComponent, java.lang.String)}.</p>
+     *
+     * <div class="changed_added_2_0">
+     * <p>
+     * 
+     * @param context {@link FacesContext} for the current request
+     * @param componentResource The {@link UIComponent} representing a 
+     * {@link javax.faces.application.Resource} instance
+     *
+     * @since 2.0
+     */
+    public void addComponentResource(FacesContext context, UIComponent componentResource) {
+        addComponentResource(context, componentResource, null);
+    }
+
+    /**
+     * <p class="changed_added_2_0">Add argument <code>component</code>,
+     * which is assumed to represent a resource instance, as a resource
+     * to this view.  A resource instance is rendered by a resource
+     * <code>Renderer</code>, as described in the Standard HTML
+     * RenderKit. </p>
+     *
+     * <div class="changed_added_2_0">
+
+     * <p> The <code>component</code> must be added using the following
+     * algorithm:</p>
+
+     * <ul>
+
+     * <li><p>If the <code>target</code> argument is <code>null</code>,
+     * look for a <code>target</code> attribute on the
+     * <code>component</code>.  If there is no <code>target</code>
+     * attribute, set <code>target</code> to be the default value
+     * <code>head</code></p></li>
+
+     * <li><p>Call {@link #getComponentResources} to obtain the child
+     * list for the given target.</p></li>
+     *
+     * <li><p>If the component ID of <code>componentResource</code> matches the
+     * the ID of a resource that has allready been added, remove the old
+     * resource.</p></li>
+
+     * <li><p>Add the <code>component</code> resource to the
+     * list.</p></li>
+
+     * </ul>
+
+     * </div>
+     *  
+     * @param context {@link FacesContext} for the current request
+     * @param componentResource The {@link UIComponent} representing a 
+     * {@link javax.faces.application.Resource} instance 
+     * @param target The name of the facet for which the {@link UIComponent} will be added
+     *
+     * @since 2.0
+     */
+    public void addComponentResource(FacesContext context, UIComponent componentResource, String target) {
+        final Map<String,Object> attributes = componentResource.getAttributes();
+        // look for a target in the component attribute set if arg is not set.
+        if (target == null) {
+            target = (String) attributes.get("target");
+        }
+        if (target == null) {
+            target = "head";
+        }
+        List<UIComponent> facetChildren = getComponentResources(context,
+                                                                target,
+                                                                true);
+        String id = componentResource.getId();
+        if (id != null) {
+            for (UIComponent c : facetChildren) {
+                if (id.equals(c.getId())) {
+                    facetChildren.remove(c);
+                }
+            }
+        }
+        // add the resource to the facet
+        facetChildren.add(componentResource);
+    }
+
+    /**
+     * <p class="changed_added_2_0"><span
+     * class="changed_deleted_2_0_rev_a
+     * changed_modified_2_1">Return</span> an unmodifiable
+     * <code>List</code> of {@link UIComponent}s for the provided
+     * <code>target</code> agrument.  Each <code>component</code> in the
+     * <code>List</code> is assumed to represent a resource
+     * instance.</p>
+     *
+     * <div class="changed_added_2_0">
+     * <p>The default implementation must use an algorithm equivalent to the
+     * the following.</p>
+     * <ul>
+     * <li>Locate the facet for the <code>component</code> by calling <code>getFacet()</code> using
+     * <code>target</code> as the argument.</li>
+
+     * <li>If the facet is not found, create the facet by calling
+     * <code>context.getApplication().createComponent().</code> <span
+     * class="changed_modified_2_0_rev_a">The argument to this method
+     * must refer to a component that extends {@link UIPanel} and
+     * overrides the <code>encodeAll()</code> method to take no action.
+     * This is necessary to prevent component resources from being
+     * inadvertently rendered.</span></li>
+
+     * <ul>
+
+     * <li class="changed_modified_2_1">Set the <code>id</code> of the
+     * facet to be a string created by prepending the literal string
+     * “<code>javax_faces_location_</code>” (without the
+     * quotes) to the value of the <code>target</code> argument</li>
+
+     * <li>Add the facet to the facets <code>Map</code> using <code>target</code> as the key</li>
+     * </ul>
+     * <li>return the children of the facet</li>
+     * </ul>
+
+     * </div>
+     *
+     * @param target The name of the facet for which the components will be returned. 
+     *
+     * @return A <code>List</code> of {@link UIComponent} children of
+     * the facet with the name <code>target</code>.  If no children are
+     * found for the facet, return <code>Collections.emptyList()</code>.
+     *
+     * @throws NullPointerException if <code>target</code> or
+     * <code>context</code> is <code>null</code>
+     *
+     * @since 2.0
+     */
+    public List<UIComponent> getComponentResources(FacesContext context, 
+                                                   String target) {
+        if (target == null) {
+            throw new NullPointerException();
+        }
+
+        List<UIComponent> resources = getComponentResources(context,
+                                                            target,
+                                                            false);
+
+        return ((resources != null)
+                ? resources
+                : Collections.<UIComponent>emptyList());
+
+    }
+    
+    /**
+     * <p class="changed_added_2_0">Remove argument <code>component</code>,
+     * which is assumed to represent a resource instance, as a resource
+     * to this view.</p>
+     *
+     * <div class="changed_added_2_0">
+     * <p>
+     * 
+     * @param context {@link FacesContext} for the current request
+     * @param componentResource The {@link UIComponent} representing a 
+     * {@link javax.faces.application.Resource} instance
+     *
+     * @since 2.0
+     */
+    public void removeComponentResource(FacesContext context, UIComponent componentResource) {
+        removeComponentResource(context, componentResource, null);
+    }
+    
+    /**
+     * <p class="changed_added_2_0">Remove argument <code>component</code>,
+     * which is assumed to represent a resource instance, as a resource
+     * to this view.  A resource instance is rendered by a resource
+     * <code>Renderer</code>, as described in the Standard HTML
+     * RenderKit. </p>
+     *
+     * <div class="changed_added_2_0">
+     * <p>
+     * The <code>component</code> must be removed using the following algorithm:
+     * <ul>
+     * <li>If the <code>target</code> argument is <code>null</code>, look for a <code>target</code>
+     * attribute on the <code>component</code>.<br>
+     * If there is no <code>target</code> attribute, set <code>target</code> to be the default value <code>head</code></li>
+     * <li>Call {@link #getComponentResources} to obtain the child list for the
+     * given target.</li>
+     * <li>Remove the <code>component</code> resource from the child list.</li>
+     * </ul>
+     * </p>
+     * </div>
+     *  
+     * @param context {@link FacesContext} for the current request
+     * @param componentResource The {@link UIComponent} representing a 
+     * {@link javax.faces.application.Resource} instance 
+     * @param target The name of the facet for which the {@link UIComponent} will be added
+     *
+     * @since 2.0
+     */
+    public void removeComponentResource(FacesContext context, UIComponent componentResource, String target) {
+
+        final Map<String,Object> attributes = componentResource.getAttributes();
+        // look for a target in the component attribute set if arg is not set.
+        if (target == null) {
+            target = (String) attributes.get("target");
+        }
+        if (target == null) {
+            target = "head";
+        }
+        List<UIComponent> facetChildren = getComponentResources(context,
+                                                                target,
+                                                                false);
+        if (facetChildren != null) {
+            facetChildren.remove(componentResource);
+        }
+
+    }
+
+    /**
+     * <p>An array of Lists of events that have been queued for later
+     * broadcast, with one List for each lifecycle phase.  The list
+     * indices match the ordinals of the PhaseId instances.  This
+     * instance is lazily instantiated.  This list is
+     * <strong>NOT</strong> part of the state that is saved and restored
+     * for this component.</p>
+     */
+    private List<List<FacesEvent>> events = null;
+
+
+    /**
+     * <p>Override the default {@link UIComponentBase#queueEvent} behavior to
+     * accumulate the queued events for later broadcasting.</p>
+     *
+     * @param event {@link FacesEvent} to be queued
+     *
+     * @throws IllegalStateException if this component is not a
+     *                               descendant of a {@link UIViewRoot}
+     * @throws NullPointerException  if <code>event</code>
+     *                               is <code>null</code>
+     */
+    public void queueEvent(FacesEvent event) {
+
+        if (event == null) {
+            throw new NullPointerException();
+        }
+        // We are a UIViewRoot, so no need to check for the ISE
+        if (events == null) {
+            int len = PhaseId.VALUES.size();
+            List<List<FacesEvent>> events = new ArrayList<List<FacesEvent>>(len);
+            for (int i = 0; i < len; i++) {
+                events.add(new ArrayList<FacesEvent>(5));
+            }
+            this.events = events;
+        }
+        events.get(event.getPhaseId().getOrdinal()).add(event);
+    }
+
+
+    /**
+     * <p class="changed_added_2_0">Broadcast any events that have been
+     * queued.  First broadcast events that have been queued for {@link
+     * PhaseId#ANY_PHASE}.  Then broadcast ane events that have been
+     * queued for the current phase.  In both cases, {@link
+     * UIComponent#pushComponentToEL} must be called before the event is
+     * broadcast, and {@link UIComponent#popComponentFromEL} must be
+     * called after the return from the broadcast, even in the case of
+     * an exception.</p>
+     *
+     * @param context {@link FacesContext} for the current request
+     * @param phaseId {@link PhaseId} of the current phase
+
+     * @since 2.0
+     */
+    public void broadcastEvents(FacesContext context, PhaseId phaseId) {
+
+        if (null == events) {
+            // no events have been queued
+            return;
+        }
+        boolean hasMoreAnyPhaseEvents;
+        boolean hasMoreCurrentPhaseEvents;
+
+        List<FacesEvent> eventsForPhaseId =
+             events.get(PhaseId.ANY_PHASE.getOrdinal());
+
+        // keep iterating till we have no more events to broadcast.
+        // This is necessary for events that cause other events to be
+        // queued.  PENDING(edburns): here's where we'd put in a check
+        // to prevent infinite event queueing.
+        do {
+            // broadcast the ANY_PHASE events first
+            if (null != eventsForPhaseId) {
+                // We cannot use an Iterator because we will get
+                // ConcurrentModificationException errors, so fake it
+                while (!eventsForPhaseId.isEmpty()) {
+                    FacesEvent event =
+                          eventsForPhaseId.get(0);
+                    UIComponent source = event.getComponent();
+                    UIComponent compositeParent = null;
+                    try {
+                        if (!UIComponent.isCompositeComponent(source)) {
+                            compositeParent = UIComponent.getCompositeComponentParent(source);
+                        }
+                        if (compositeParent != null) {
+                            compositeParent.pushComponentToEL(context, null);
+                        }
+                        source.pushComponentToEL(context, null);
+                        source.broadcast(event);
+                    } catch (AbortProcessingException e) {
+                        context.getApplication().publishEvent(context,
+                                                              ExceptionQueuedEvent.class,
+                                                              new ExceptionQueuedEventContext(context,
+                                                                                        e,
+                                                                                        source,
+                                                                                        phaseId));
+                    }
+                    finally {
+                        source.popComponentFromEL(context);
+                        if (compositeParent != null) {
+                            compositeParent.popComponentFromEL(context);
+                        }
+                    }
+                    eventsForPhaseId.remove(0); // Stay at current position
+                }
+            }
+
+            // then broadcast the events for this phase.
+            if (null != (eventsForPhaseId = events.get(phaseId.getOrdinal()))) {
+                // We cannot use an Iterator because we will get
+                // ConcurrentModificationException errors, so fake it
+                while (!eventsForPhaseId.isEmpty()) {
+                    FacesEvent event = eventsForPhaseId.get(0);
+                    UIComponent source = event.getComponent();
+                    UIComponent compositeParent = null;
+                    try {
+                        if (!UIComponent.isCompositeComponent(source)) {
+                            compositeParent = getCompositeComponentParent(source);
+                        }
+                        if (compositeParent != null) {
+                            compositeParent.pushComponentToEL(context, null);
+                        }
+                        source.pushComponentToEL(context, null);
+                        source.broadcast(event);
+                    } catch (AbortProcessingException ape) {
+                        // A "return" here would abort remaining events too
+                        context.getApplication().publishEvent(context,
+                                                              ExceptionQueuedEvent.class,
+                                                              new ExceptionQueuedEventContext(context,
+                                                                                        ape,
+                                                                                        source,
+                                                                                        phaseId));
+                    }
+                    finally {
+                        source.popComponentFromEL(context);
+                        if (compositeParent != null) {
+                            compositeParent.popComponentFromEL(context);
+                        }
+                    }
+                    eventsForPhaseId.remove(0); // Stay at current position
+                }
+            }
+
+            // true if we have any more ANY_PHASE events
+            hasMoreAnyPhaseEvents =
+                  (null != (eventsForPhaseId =
+                        events.get(PhaseId.ANY_PHASE.getOrdinal()))) &&
+                        !eventsForPhaseId.isEmpty();
+            // true if we have any more events for the argument phaseId
+            hasMoreCurrentPhaseEvents =
+                  (null != events.get(phaseId.getOrdinal())) &&
+                  !events.get(phaseId.getOrdinal()).isEmpty();
+
+        } while (hasMoreAnyPhaseEvents || hasMoreCurrentPhaseEvents);
+    
+    }
+
+    // ------------------------------------------------ Lifecycle Phase Handlers
+
+
+    private void initState() {
+        skipPhase = false;
+        beforeMethodException = false;
+        //noinspection unchecked
+        List<PhaseListener> listeners =
+              (List<PhaseListener>) getStateHelper().get(PropertyKeys.phaseListeners);
+        phaseListenerIterator =
+              ((listeners != null) ? listeners.listIterator() : null);
+    }
+
+    // avoid creating the PhaseEvent if possible by doing redundant
+    // null checks.
+    private void notifyBefore(FacesContext context, PhaseId phaseId) {
+        if (getBeforePhaseListener() != null || phaseListenerIterator != null) {
+            notifyPhaseListeners(context, phaseId, true);
+        }
+    }
+    
+    // avoid creating the PhaseEvent if possible by doing redundant
+    // null checks.
+    private void notifyAfter(FacesContext context, PhaseId phaseId) {
+        if (getAfterPhaseListener() != null || phaseListenerIterator != null) {
+            notifyPhaseListeners(context, phaseId, false);
+        }
+    }
+
+
+    /**
+     * <p class="changed_added_2_0"><span
+     * class="changed_deleted_2_0_rev_a">The</span> default
+     * implementation must call {@link
+     * UIComponentBase#processRestoreState} from within a
+     * <code>try</code> block.  The <code>try</code> block must have a
+     * <code>finally</code> block that ensures that no {@link
+     * FacesEvent}s remain in the event queue. <a
+     * class="changed_deleted_2_0_rev_a" title="text removed in 2.0 Rev a: and that the this.visitTree is called, passing a ContextCallback that takes the following action: call the processEvent method of the current component. The argument event must be an instance of PostRestoreStateEvent whose component property is the current component in the traversal.">   </a> </p>
+     * @param context the <code>FacesContext</code> for this requets
+     * @param state the opaque state object obtained from the {@link
+     * javax.faces.application.StateManager}
+     */
+    @Override
+    public void processRestoreState(FacesContext context, Object state) {
+
+        // hack to work around older state managers that may not set the
+        // view root early enough
+        if (context.getViewRoot() == null) {
+            context.setViewRoot(this);
+        }
+        super.processRestoreState(context, state);
+
+    }
+    
+
+    /**
+     * <div class="changed_added_2_0">
+     * <p>Perform partial processing by calling
+     * {@link javax.faces.context.PartialViewContext#processPartial} with
+     * {@link PhaseId#APPLY_REQUEST_VALUES} if:
+     * <ul>
+     * <li>{@link javax.faces.context.PartialViewContext#isPartialRequest}
+     * returns <code>true</code> and we don't have a request to process all 
+     * components in the view
+     * ({@link javax.faces.context.PartialViewContext#isExecuteAll} returns
+     * <code>false</code>)</li>
+     * </ul>
+     * Perform full processing by calling 
+     * {@link UIComponentBase#processDecodes} if one of the following 
+     * conditions are met:
+     * <ul>
+     * <li> {@link javax.faces.context.PartialViewContext#isPartialRequest}
+     * returns <code>true</code> and we have a request to process all 
+     * components in the view
+     * ({@link javax.faces.context.PartialViewContext#isExecuteAll} returns
+     * <code>true</code>)</li>
+     * <li>{@link javax.faces.context.PartialViewContext#isPartialRequest}
+     * returns <code>false</code></li>
+     * </ul>
+     * </p>
+     * </div>
+     * <p class="changed_modified_2_0">Override the default 
+     * {@link UIComponentBase#processDecodes} behavior to broadcast any queued 
+     * events after the default processing or partial processing has been 
+     * completed and to clear out any events for later phases if the event 
+     * processing for this phase caused {@link FacesContext#renderResponse} 
+     * or {@link FacesContext#responseComplete} to be called.</p>
+     *
+     * @param context {@link FacesContext} for the request we are processing
+     *
+     * @throws NullPointerException if <code>context</code>
+     *                              is <code>null</code>
+     */
+    @Override
+    public void processDecodes(FacesContext context) {
+        initState();
+        notifyBefore(context, PhaseId.APPLY_REQUEST_VALUES);
+
+        try {
+            if (!skipPhase) {
+                if (context.getPartialViewContext().isPartialRequest() &&
+                    !context.getPartialViewContext().isExecuteAll()) {
+                    context.getPartialViewContext().processPartial(PhaseId.APPLY_REQUEST_VALUES);
+                } else {
+                    super.processDecodes(context);
+                }
+                broadcastEvents(context, PhaseId.APPLY_REQUEST_VALUES);
+            }
+        } finally {
+            clearFacesEvents(context);
+            notifyAfter(context, PhaseId.APPLY_REQUEST_VALUES);
+        }
+    }
+    
+    /**
+     * <p class="changed_added_2_2">Visit the clientIds and, if the component is 
+     * an instance of {@link EditableValueHolder}, 
+     * call its {@link EditableValueHolder#resetValue} method.  
+     * Use {@link #visitTree} to do the visiting.</p>
+     * 
+     * @since 2.2
+
+     * @param context the {@link FacesContext} for the request we are processing.
+     * @param clientIds The client ids to be visited, on which the described action will be taken.
+     */
+    
+    public void resetValues(FacesContext context, Collection<String> clientIds) {
+        this.visitTree(VisitContext.createVisitContext(context, clientIds, null), 
+                new DoResetValues());
+    }
+
+    private static class DoResetValues implements VisitCallback {
+        @Override
+            public VisitResult visit(VisitContext context, UIComponent target) {
+            if (target instanceof EditableValueHolder) {
+                ((EditableValueHolder)target).resetValue();
+            }
+            return VisitResult.ACCEPT;
+        }
+    }        
+
+    /**
+     * <p><span class="changed_added_2_0">Override</span> the default
+     * {@link UIComponentBase#encodeBegin} behavior.  If
+     * {@link #getBeforePhaseListener} returns non-<code>null</code>,
+     * invoke it, passing a {@link PhaseEvent} for the {@link
+     * PhaseId#RENDER_RESPONSE} phase.  If the internal list populated
+     * by calls to {@link #addPhaseListener} is non-empty, any listeners
+     * in that list must have their {@link PhaseListener#beforePhase}
+     * method called, passing the <code>PhaseEvent</code>.  Any errors
+     * that occur during invocation of any of the the beforePhase
+     * listeners must be logged and swallowed.  After listeners are invoked
+     * call superclass processing.</p>
+     */
+    @Override
+    public void encodeBegin(FacesContext context) throws IOException {
+        initState();
+        notifyBefore(context, PhaseId.RENDER_RESPONSE);
+
+        if (!context.getResponseComplete()) {
+            super.encodeBegin(context);
+        }
+    }
+
+    /** 
+     * <p class="changed_added_2_0">If {@link
+     * javax.faces.context.PartialViewContext#isAjaxRequest} returns 
+     * <code>true</code>, perform partial rendering by calling
+     * {@link javax.faces.context.PartialViewContext#processPartial} with 
+     * {@link PhaseId#RENDER_RESPONSE}.  If {@link
+     * javax.faces.context.PartialViewContext#isAjaxRequest} returns
+     * <code>false</code>, delegate to the parent {@link
+     * javax.faces.component.UIComponentBase#encodeChildren} method.</p>
+     *
+     * @since 2.0
+     */
+    @Override
+    public void encodeChildren(FacesContext context) throws IOException {
+        if (context.getPartialViewContext().isAjaxRequest()) {
+            context.getPartialViewContext().processPartial(PhaseId.RENDER_RESPONSE);
+        } else {
+            super.encodeChildren(context);
+        }
+    }
+
+    /**
+     * <p class="changed_added_2_0"> If {@link #getAfterPhaseListener}
+     * returns non-<code>null</code>, invoke it, passing a {@link
+     * PhaseEvent} for the {@link PhaseId#RENDER_RESPONSE} phase.  Any
+     * errors that occur during invocation of the afterPhase listener
+     * must be logged and swallowed.  If the current view has view
+     * parameters, as indicated by a non-empty and
+     * non-<code>UnsupportedOperationException</code> throwing return
+     * from {@link javax.faces.view.ViewDeclarationLanguage#getViewMetadata(javax.faces.context.FacesContext, String)},
+     * call {@link UIViewParameter#encodeAll} on each parameter.  If
+     * calling <code>getViewParameters()</code> causes
+     * <code>UnsupportedOperationException</code> to be thrown, the
+     * exception must be silently swallowed.</p>
+     */
+    @Override
+    public void encodeEnd(FacesContext context) throws IOException {
+        super.encodeEnd(context);
+        encodeViewParameters(context);
+        notifyAfter(context, PhaseId.RENDER_RESPONSE);               
+    }
+
+    /**
+     * <p class="changed_added_2_0">Call {@link UIComponentBase#getRendersChildren}
+     * If {@link javax.faces.context.PartialViewContext#isAjaxRequest}
+     * returns <code>true</code> this method must return <code>true</code>.</p>
+     *
+     * @since 2.0
+     */
+    @Override
+    public boolean getRendersChildren() {
+        boolean value = super.getRendersChildren();
+        FacesContext context = FacesContext.getCurrentInstance();
+
+        if (context.getPartialViewContext().isAjaxRequest()) {
+            value = true;
+        }
+        return value;
+    }
+    
+    /**
+     * <p>Utility method that notifies phaseListeners for the given
+     * phaseId.  Assumes that either or both the MethodExpression or
+     * phaseListeners data structure are non-null.</p>
+     *
+     * @param context   the context for this request
+     * @param phaseId   the {@link PhaseId} of the current phase
+     * @param isBefore, if true, notify beforePhase listeners.  Notify
+     *                  afterPhase listeners otherwise.
+     */
+    private void notifyPhaseListeners(FacesContext context,
+                                      PhaseId phaseId,
+                                      boolean isBefore) {
+        PhaseEvent event = createPhaseEvent(context, phaseId);
+
+        MethodExpression beforePhase = getBeforePhaseListener();
+        MethodExpression afterPhase = getAfterPhaseListener();
+        boolean hasPhaseMethodExpression =
+              (isBefore && (null != beforePhase)) ||
+              (!isBefore && (null != afterPhase) && !beforeMethodException);
+        MethodExpression expression = isBefore ? beforePhase : afterPhase;
+
+        if (hasPhaseMethodExpression) {
+            try {
+                expression.invoke(context.getELContext(), new Object[]{event});
+                skipPhase = context.getResponseComplete() ||
+                            context.getRenderResponse();
+            }
+            catch (Exception e) {
+                if (isBefore) {
+                    beforeMethodException = true;
+                }
+                if (LOGGER.isLoggable(Level.SEVERE)) {
+                    LOGGER.log(Level.SEVERE,
+                               "severe.component.unable_to_process_expression",
+                               new Object[] { expression.getExpressionString(),
+                                              (isBefore ? "beforePhase" : "afterPhase")});
+                }
+                return;
+            }
+        }
+        if (phaseListenerIterator != null && !beforeMethodException) {
+            while ((isBefore)
+                   ? phaseListenerIterator.hasNext()
+                   : phaseListenerIterator.hasPrevious()) {
+                PhaseListener curListener = ((isBefore)
+                                             ? phaseListenerIterator.next()
+                                             : phaseListenerIterator
+                                                   .previous());
+                if (phaseId == curListener.getPhaseId() ||
+                    PhaseId.ANY_PHASE == curListener.getPhaseId()) {
+                    try {
+                        if (isBefore) {
+                            curListener.beforePhase(event);
+                        } else {
+                            curListener.afterPhase(event);
+                        }
+                        skipPhase = context.getResponseComplete() ||
+                                    context.getRenderResponse();
+                    }
+                    catch (Exception e) {
+                        if (isBefore && phaseListenerIterator.hasPrevious()) {
+                            phaseListenerIterator.previous();
+                        }
+                        if (LOGGER.isLoggable(Level.SEVERE)) {
+                            LOGGER.log(Level.SEVERE,
+                                       "severe.component.uiviewroot_error_invoking_phaselistener",
+                                       curListener.getClass().getName());
+                        }
+                        return;
+                    }
+                }
+            }
+        }
+    }
+
+    private static PhaseEvent createPhaseEvent(FacesContext context,
+                                               PhaseId phaseId)
+    throws FacesException {
+
+        if (lifecycle == null) {
+            LifecycleFactory lifecycleFactory = (LifecycleFactory)
+                  FactoryFinder.getFactory(FactoryFinder.LIFECYCLE_FACTORY);
+            String lifecycleId =
+                  context.getExternalContext()
+                        .getInitParameter(FacesServlet.LIFECYCLE_ID_ATTR);
+            if (lifecycleId == null) {
+                lifecycleId = LifecycleFactory.DEFAULT_LIFECYCLE;
+            }
+            lifecycle = lifecycleFactory.getLifecycle(lifecycleId);
+        }
+
+        return (new PhaseEvent(context, phaseId, lifecycle));
+
+    }
+
+
+    /**
+     * <div class="changed_added_2_0">
+     * <p>Perform partial processing by calling
+     * {@link javax.faces.context.PartialViewContext#processPartial} with
+     * {@link PhaseId#PROCESS_VALIDATIONS} if:
+     * <ul>
+     * <li>{@link javax.faces.context.PartialViewContext#isPartialRequest}
+     * returns <code>true</code> and we don't have a request to process all
+     * components in the view
+     * ({@link javax.faces.context.PartialViewContext#isExecuteAll} returns
+     * <code>false</code>)</li>
+     * </ul>
+     * Perform full processing by calling
+     * {@link UIComponentBase#processValidators} if one of the following
+     * conditions are met:
+     * <ul>
+     * <li> {@link javax.faces.context.PartialViewContext#isPartialRequest}
+     * returns <code>true</code> and we have a request to process all
+     * components in the view
+     * ({@link javax.faces.context.PartialViewContext#isExecuteAll} returns
+     * <code>true</code>)</li>
+     * <li>{@link javax.faces.context.PartialViewContext#isPartialRequest}
+     * returns <code>false</code></li>
+     * </ul>
+     * </p>
+     * </div>
+     * <p class="changed_modified_2_0">Override the default 
+     * {@link UIComponentBase#processValidators} behavior to broadcast any 
+     * queued events after the default processing or partial processing has been 
+     * completed and to clear out any events for later phases if the event 
+     * processing for this phase caused {@link FacesContext#renderResponse} or 
+     * {@link FacesContext#responseComplete} to be called.</p>
+     *
+     * @param context {@link FacesContext} for the request we are processing
+     *
+     * @throws NullPointerException if <code>context</code>
+     *                              is <code>null</code>
+     */
+    @Override
+    public void processValidators(FacesContext context) {
+        initState();
+        notifyBefore(context, PhaseId.PROCESS_VALIDATIONS);
+
+        try {
+            if (!skipPhase) {
+                if (context.getPartialViewContext().isPartialRequest() &&
+                    !context.getPartialViewContext().isExecuteAll()) {
+                    context.getPartialViewContext().processPartial(PhaseId.PROCESS_VALIDATIONS);
+                } else {
+                    super.processValidators(context);
+                }
+                broadcastEvents(context, PhaseId.PROCESS_VALIDATIONS);
+            }
+        } finally {
+            clearFacesEvents(context);
+            notifyAfter(context, PhaseId.PROCESS_VALIDATIONS);
+        }
+    }
+
+    /**
+     * <div class="changed_added_2_0">
+     * <p>Perform partial processing by calling
+     * {@link javax.faces.context.PartialViewContext#processPartial} with
+     * {@link PhaseId#UPDATE_MODEL_VALUES} if:
+     * <ul>
+     * <li>{@link javax.faces.context.PartialViewContext#isPartialRequest}
+     * returns <code>true</code> and we don't have a request to process all
+     * components in the view
+     * ({@link javax.faces.context.PartialViewContext#isExecuteAll} returns
+     * <code>false</code>)</li>
+     * </ul>
+     * Perform full processing by calling
+     * {@link UIComponentBase#processUpdates} if one of the following
+     * conditions are met:
+     * <ul>
+     * <li> {@link javax.faces.context.PartialViewContext#isPartialRequest}
+     * returns <code>true</code> and we have a request to process all
+     * components in the view
+     * ({@link javax.faces.context.PartialViewContext#isExecuteAll} returns
+     * <code>true</code>)</li>
+     * <li>{@link javax.faces.context.PartialViewContext#isPartialRequest}
+     * returns <code>false</code></li>
+     * </ul>
+     * </p>
+     *</div>
+     * <p class="changed_modified_2_0">Override the default {@link UIComponentBase}
+     * behavior to broadcast any queued events after the default processing or 
+     * partial processing has been completed and to clear out any events for 
+     * later phases if the event processing for this phase caused 
+     * {@link FacesContext#renderResponse} or
+     * {@link FacesContext#responseComplete} to be called.</p>
+     *
+     * @param context {@link FacesContext} for the request we are processing
+     *
+     * @throws NullPointerException if <code>context</code>
+     *                              is <code>null</code>
+     */
+    @Override
+    public void processUpdates(FacesContext context) {
+        initState();
+        notifyBefore(context, PhaseId.UPDATE_MODEL_VALUES);
+
+        try {
+            if (!skipPhase) {
+                if (context.getPartialViewContext().isPartialRequest() &&
+                    !context.getPartialViewContext().isExecuteAll()) {
+                    context.getPartialViewContext().processPartial(PhaseId.UPDATE_MODEL_VALUES);
+                } else {
+                    super.processUpdates(context);
+                }
+                broadcastEvents(context, PhaseId.UPDATE_MODEL_VALUES);
+            }
+        } finally {
+            clearFacesEvents(context);
+            notifyAfter(context, PhaseId.UPDATE_MODEL_VALUES);
+        }
+    }
+
+    /**
+     * <p>Broadcast any events that have been queued for the <em>Invoke
+     * Application</em> phase of the request processing lifecycle
+     * and to clear out any events for later phases if the event processing
+     * for this phase caused {@link FacesContext#renderResponse} or
+     * {@link FacesContext#responseComplete} to be called.</p>
+     *
+     * @param context {@link FacesContext} for the request we are processing
+     *
+     * @throws NullPointerException if <code>context</code>
+     *                              is <code>null</code>
+     */
+    public void processApplication(FacesContext context) {
+        initState();
+        notifyBefore(context, PhaseId.INVOKE_APPLICATION);
+        try {
+            if (!skipPhase) {
+                // NOTE - no tree walk is performed; this is a UIViewRoot-only operation
+                broadcastEvents(context, PhaseId.INVOKE_APPLICATION);
+            }
+        } finally {
+            clearFacesEvents(context);
+            notifyAfter(context, PhaseId.INVOKE_APPLICATION);
+        }
+    }
+
+
+    // clear out the events if we're skipping to render-response
+    // or if there is a response complete signal.
+    private void clearFacesEvents(FacesContext context) {
+        if (context.getRenderResponse() || context.getResponseComplete()) {
+            if (events != null) {
+                for (List<FacesEvent> eventList : events) {
+                    if (eventList != null) {
+                        eventList.clear();
+                    }
+                }
+                events = null;
+            }
+        }
+    }
+
+    /**
+     * <p><span class="changed_modified_2_2">Generate</span> an
+     * identifier for a component.  The identifier will be prefixed with
+     * UNIQUE_ID_PREFIX, and will be unique within <span
+     * class="changed_added_2_2">the non-{@link NamingContainer} child
+     * sub-trees of</span> this UIViewRoot.</p>
+     */
+    public String createUniqueId() {
+        return createUniqueId(getFacesContext(), null);
+    }
+
+    /**<p>Generate an identifier for a component. The identifier
+     * will be prefixed with UNIQUE_ID_PREFIX, and will be unique
+     * within this UIViewRoot. Optionally, a unique seed value can
+     * be supplied by component creators which should be
+     * included in the generated unique id.</p>
+     *
+     * @param context FacesContext
+     * @param seed an optional seed value - e.g. based on the position of the component in the VDL-template
+     * @return a unique-id in this component-container
+     */
+    public String createUniqueId(FacesContext context, String seed) {
+        if (seed != null) {
+            return UIViewRoot.UNIQUE_ID_PREFIX + seed;
+        } else {
+            Integer i = (Integer) getStateHelper().get(PropertyKeys.lastId);
+            int lastId = ((i != null) ? i : 0);
+            getStateHelper().put(PropertyKeys.lastId,  ++lastId);
+            return UIViewRoot.UNIQUE_ID_PREFIX + lastId;
+        }
+    }
+
+
+    /**
+     * <p>Return the <code>Locale</code> to be used in localizing the
+     * response being created for this view.</p>
+     * <p/>
+     * <p>Algorithm:</p>
+     * <p/>
+     * <p>If we have a <code>locale</code> ivar, return it.  If we have
+     * a value expression for "locale", get its value.  If the value is
+     * <code>null</code>, return the result of calling {@link
+     * javax.faces.application.ViewHandler#calculateLocale}.  If the
+     * value is an instance of <code>java.util.Locale</code> return it.
+     * If the value is a String, convert it to a
+     * <code>java.util.Locale</code> and return it.  If there is no
+     * value expression for "locale", return the result of calling {@link
+     * javax.faces.application.ViewHandler#calculateLocale}.</p>
+     *
+     * @return The current <code>Locale</code> obtained by executing the
+     *         above algorithm.
+     */
+    public Locale getLocale() {
+
+        Object result = getStateHelper().eval(PropertyKeys.locale);
+
+        if (result != null) {
+            Locale locale = null;
+            if (result instanceof Locale) {
+                    locale = (Locale) result;
+            } else if (result instanceof String) {
+                   locale = getLocaleFromString((String) result);
+            }
+            return locale;
+        } else {
+            FacesContext context = getFacesContext();
+            return context.getApplication().getViewHandler().calculateLocale(context);
+        }
+
+    }
+
+
+    // W3C XML specification refers to IETF RFC 1766 for language code
+    // structure, therefore the value for the xml:lang attribute should
+    // be in the form of language or language-country or
+    // language-country-variant.
+
+    private static Locale getLocaleFromString(String localeStr)
+        throws IllegalArgumentException {
+        // length must be at least 2.
+        if (null == localeStr || localeStr.length() < 2) {
+            throw new IllegalArgumentException("Illegal locale String: " +
+                                               localeStr);
+        }
+
+        Locale result = null;
+        String lang = null;
+        String country = null;
+        String variant = null;
+        char[] seps = {
+            '-',
+            '_'
+        };
+        int inputLength = localeStr.length();
+        int i = 0;
+        int j = 0;
+
+        // to have a language, the length must be >= 2
+        if ((inputLength >= 2) &&
+            ((i = indexOfSet(localeStr, seps, 0)) == -1)) {
+            // we have only Language, no country or variant
+            if (2 != localeStr.length()) {
+                throw new
+                    IllegalArgumentException("Illegal locale String: " +
+                                             localeStr);
+            }
+            lang = localeStr.toLowerCase();
+        }
+
+        // we have a separator, it must be either '-' or '_'
+        if (i != -1) {
+            lang = localeStr.substring(0, i);
+            // look for the country sep.
+            // to have a country, the length must be >= 5
+            if ((inputLength >= 5) &&
+                (-1 == (j = indexOfSet(localeStr, seps, i + 1)))) {
+                // no further separators, length must be 5
+                if (inputLength != 5) {
+                    throw new
+                        IllegalArgumentException("Illegal locale String: " +
+                                                 localeStr);
+                }
+                country = localeStr.substring(i + 1);
+            }
+            if (j != -1) {
+                country = localeStr.substring(i + 1, j);
+                // if we have enough separators for language, locale,
+                // and variant, the length must be >= 8.
+                if (inputLength >= 8) {
+                    variant = localeStr.substring(j + 1);
+                } else {
+                    throw new
+                        IllegalArgumentException("Illegal locale String: " +
+                                                 localeStr);
+                }
+            }
+        }
+        if (variant != null && country != null && lang != null) {
+            result = new Locale(lang, country, variant);
+        } else if (lang != null && country != null) {
+            result = new Locale(lang, country);
+        } else if (lang != null) {
+            result = new Locale(lang, "");
+        }
+        return result;
+    }
+
+
+    /**
+     * @param str local string
+     * @param set the substring
+     * @param fromIndex starting index
+     * @return starting at <code>fromIndex</code>, the index of the
+     *         first occurrence of any substring from <code>set</code> in
+     *         <code>toSearch</code>, or -1 if no such match is found
+     */
+    private static int indexOfSet(String str, char[] set, int fromIndex) {
+        int result = -1;
+        for (int i = fromIndex, len = str.length(); i < len; i++) {
+            for (int j = 0, innerLen = set.length; j < innerLen; j++) {
+                if (str.charAt(i) == set[j]) {
+                    result = i;
+                    break;
+                }
+            }
+            if (-1 != result) {
+                break;
+            }
+        }
+        return result;
+    }
+
+    /**
+     * <p>Set the <code>Locale</code> to be used in localizing the
+     * response being created for this view. </p>
+     *
+     * @param locale The new localization Locale
+     */
+    public void setLocale(Locale locale) {
+
+        getStateHelper().put(PropertyKeys.locale, locale);
+        // Make sure to appraise the EL of this switch in Locale.
+        FacesContext.getCurrentInstance().getELContext().setLocale(locale);
+
+    }
+    
+    /**
+     * <p class="changed_added_2_0">This implementation simply calls through to {@link
+     * #getViewMap(boolean)}, passing <code>true</code> as the argument, and
+     * returns the result.</p>
+     * <div class="changed_added_2_0">
+     *
+     * @since 2.0
+     */
+    public Map<String, Object> getViewMap() {
+
+        return getViewMap(true);
+        
+    }
+
+    /**
+     * <p class="changed_added_2_0"><span class="changed_modified_2_2">Returns</span>
+     * a <code>Map</code> that acts as the
+     * interface to the data store that is the "view scope", or, if this
+     * instance does not have such a <code>Map</code> and the
+     * <code>create</code> argument is <code>true</code>, creates one and
+     * returns it.  This map must be instantiated lazily and cached for return
+     * from subsequent calls to this method on this <code>UIViewRoot</code>
+     * instance. {@link javax.faces.application.Application#publishEvent} must
+     * be called, passing {@link PostConstructViewMapEvent}<code>.class</code> as the
+     * first argument and this <code>UIViewRoot</code> instance as the second
+     * argument.</p>
+     *
+     * <p>The returned <code>Map</code> must be implemented such that calling
+     * <code>clear()</code> on the <code>Map</code> causes {@link javax.faces.application.Application#publishEvent} to be
+     * called, passing {@link PreDestroyViewMapEvent}<code>.class</code>
+     * as the first argument and this <code>UIViewRoot</code> instance
+     * as the second argument.</p>
+
+     * <p class="changed_modified_2_0_rev_a">Depending upon application
+     * configuration, objects stored in the view map may need to be
+     * <code>Serializable</code>.  In general, it is a good idea to
+     * ensure that any objects stored in the view map are
+     * <code>Serializable</code>.</p>
+     * 
+     * <p class="changed_added_2_2">For reasons made clear in {@link javax.faces.view.ViewScoped},
+     * this map must ultimately be stored in the session.  For this reason, a 
+     * {@code true} value for the {@code create} argument will force the 
+     * session to be created with a call to 
+     * {@link javax.faces.context.ExternalContext#getSession(boolean)}.
+     * 
+     * </p>
+     * 
+     * <p>See {@link FacesContext#setViewRoot} for the specification of when the
+     * <code>clear()</code> method must be called.</p>
+     * <p/>
+     * </div>
+     *
+     * @param create <code>true</code> to create a new <code>Map</code> for this
+     *               instance if necessary; <code>false</code> to return
+     *               <code>null</code> if there's no current <code>Map</code>.
+     *
+     * @since 2.0
+     */
+    public Map<String, Object> getViewMap(boolean create) {
+        Map<String, Object> viewMap = (Map<String, Object>) 
+                getTransientStateHelper().getTransient("com.sun.faces.application.view.viewMap");
+
+        if (create && viewMap == null) {
+            viewMap = new ViewMap(getFacesContext().getApplication().getProjectStage());
+            getTransientStateHelper().putTransient("com.sun.faces.application.view.viewMap", viewMap);
+            getFacesContext().getApplication().publishEvent(getFacesContext(), PostConstructViewMapEvent.class, this);
+        }
+        
+        return viewMap;
+    }
+
+    Map<Class<? extends SystemEvent>,List<SystemEventListener>> viewListeners;
+
+
+    /**
+     * <p class="changed_added_2_0">Install the listener instance
+     * referenced by argument <code>listener</code> into the
+     * <code>UIViewRoot</code> as a listener for events of type
+     * <code>systemEventClass</code>.</p>
+     *
+     * <p>Note that installed listeners are not maintained as part of the
+     * <code>UIViewRoot</code>'s state.</p>
+     *
+     * @param systemEvent the <code>Class</code> of event for which
+     *  <code>listener</code> must be fired.
+
+     * @param listener the implementation of {@link
+     *  javax.faces.event.SystemEventListener} whose {@link
+     *  javax.faces.event.SystemEventListener#processEvent} method must
+     *  be called when events of type <code>systemEventClass</code> are
+     *  fired.
+     *
+     * @throws <code>NullPointerException</code> if <code>systemEventClass</code>
+     *  or <code>listener</code> are <code>null</code>.
+     *
+     * @since 2.0
+     */
+    public void subscribeToViewEvent(Class<? extends SystemEvent> systemEvent,
+                                     SystemEventListener listener) {
+
+        if (systemEvent == null) {
+            throw new NullPointerException();
+        }
+        if (listener == null) {
+            throw new NullPointerException();
+        }
+        
+        if (viewListeners == null) {
+            viewListeners = new HashMap<Class<? extends SystemEvent>, List<SystemEventListener>>(4, 1.0f);
+        }
+        List<SystemEventListener> listeners = viewListeners.get(systemEvent);
+        if (listeners == null) {
+            listeners = new CopyOnWriteArrayList<SystemEventListener>();
+            viewListeners.put(systemEvent, listeners);
+        }
+        listeners.add(listener);
+
+    }
+
+
+    /**
+     * <p class="changed_added_2_0">Remove the listener instance
+     * referenced by argument <code>listener</code> from the
+     * <code>UIViewRoot</code> as a listener for events of type
+     * <code>systemEventClass</code>.
+     *
+     * @param systemEvent the <code>Class</code> of event for which
+     *  <code>listener</code> must be fired.
+     * @param listener the implementation of {@link
+     *  javax.faces.event.SystemEventListener} whose {@link
+     *  javax.faces.event.SystemEventListener#processEvent} method must
+     *  be called when events of type <code>systemEventClass</code> are
+     *  fired.
+     *
+     * @throws <code>NullPointerException</code> if
+     * <code>systemEventClass</code> or <code>listener</code> are
+     * <code>null</code>.
+     *
+     * @since 2.0
+     */
+    public void unsubscribeFromViewEvent(Class<? extends SystemEvent> systemEvent,
+                                         SystemEventListener listener) {
+
+        if (systemEvent == null) {
+            throw new NullPointerException();
+        }
+        if (listener == null) {
+            throw new NullPointerException();
+        }
+
+        if (viewListeners != null) {
+            List<SystemEventListener> listeners = viewListeners.get(systemEvent);
+            if (listeners != null) {
+                listeners.remove(listener);
+            }
+        }
+
+    }
+
+
+    /**
+     * <p class="changed_added_2_0">Return the
+     * <code>SystemEventListener</code> instances registered on this
+     * <code>UIComponent</code> instance that are interested in events
+     * of type <code>eventClass</code>.</p>
+     *
+     * @param systemEvent the <code>Class</code> of event for which the
+     * listeners must be returned.
+
+     * @throws NullPointerException if argument <code>systemEvent</code>
+     * is <code>null</code>.
+     *
+     * @since 2.0
+     */
+    public List<SystemEventListener> getViewListenersForEventClass(Class<? extends SystemEvent> systemEvent) {
+
+        if (systemEvent == null) {
+            throw new NullPointerException();
+        }
+        if (viewListeners != null) {
+            return viewListeners.get(systemEvent);
+        }
+        return null;
+        
+    }
+    
+
+    private void encodeViewParameters(FacesContext context) {
+
+        ViewDeclarationLanguage vdl = context.getApplication().getViewHandler().
+                    getViewDeclarationLanguage(context, getViewId());
+
+        if (vdl == null) {
+            return;
+        }
+        ViewMetadata metadata = vdl.getViewMetadata(context, getViewId());
+        if (metadata != null) { // perhaps it's not supported
+            Collection<UIViewParameter> params =
+                  ViewMetadata.getViewParameters(this);
+            if (params.isEmpty()) {
+                return;
+            }
+
+            try {
+                for (UIViewParameter param : params) {
+                    param.encodeAll(context);
+                }
+            } catch (IOException e) {
+                // IOException is forced by contract and is not expected to be thrown in this case
+                throw new RuntimeException("Unexpected IOException", e);
+            }
+        }
+    }
+
+    /**
+
+     * <p class="changed_added_2_2">Restore ViewScope state. This is
+     * needed to allow the use of view scoped beans for EL-expressions
+     * in the template from which the component tree is built.  For
+     * example: <code><ui:include
+     * src="#{viewScopedBean.includeFileName}"/></code>. </p>
+
+     * 
+     * @param context
+     *            current FacesContext.
+     * @param state
+     *            the state object.
+     */
+    public void restoreViewScopeState(FacesContext context, Object state) {
+        if (context == null) {
+            throw new NullPointerException();
+        }
+        if (state == null) {
+            return;
+        }
+
+        values = (Object[]) state;
+        super.restoreState(context, values[0]);
+    }
+
+    // END TENATIVE
+
+    // ----------------------------------------------------- StateHolder Methods
+
+
+
+    private Object[] values;
+
+    @Override
+    public Object saveState(FacesContext context) {
+
+        if (context == null) {
+            throw new NullPointerException();
+        }
+        
+        String viewMapId = (String) getTransientStateHelper().getTransient("com.sun.faces.application.view.viewMapId");        
+        Object superState = super.saveState(context);
+
+        if (superState != null || viewMapId != null) {
+            values = new Object[] {superState, viewMapId};
+        }
+
+        return (values);
+
+    }
+
+    @Override
+    public void restoreState(FacesContext context, Object state) {
+
+        if (context == null) {
+            throw new NullPointerException();
+        }
+        if (state == null) {
+            return;
+        }
+        
+        values = (Object[]) state;
+        
+        if (!context.getAttributes().containsKey("com.sun.faces.application.view.restoreViewScopeOnly")) {
+            super.restoreState(context, values[0]);
+        }
+        
+        String viewMapId = (String) values[1];
+
+        getTransientStateHelper().putTransient("com.sun.faces.application.view.viewMapId", viewMapId);
+
+        Map<String, Object> viewMaps = (Map<String, Object>) context.getExternalContext().
+                getSessionMap().get("com.sun.faces.application.view.activeViewMaps");
+
+        if (viewMaps != null) {
+            Map<String, Object> viewMap = (Map<String, Object>) viewMaps.get(viewMapId);
+            getTransientStateHelper().putTransient("com.sun.faces.application.view.viewMap", viewMap);
+        }
+    }
+        
+
+    // --------------------------------------------------------- Private Methods
+
+
+    private static String getIdentifier(String target) {
+
+        // check map
+        String id = LOCATION_IDENTIFIER_MAP.get(target);
+        if (id == null) {
+            id = LOCATION_IDENTIFIER_PREFIX + target;
+            LOCATION_IDENTIFIER_MAP.put(target, id);
+        }
+        return id;
+
+    }
+
+
+    @SuppressWarnings({"UnusedDeclaration"})
+    private List<UIComponent> getComponentResources(FacesContext context,
+                                                    String target,
+                                                    boolean create) {
+
+        String location = getIdentifier(target);
+        UIComponent facet = getFacet(location);
+        if (facet == null && create) {
+            // Using an implementation specific component type to prevent
+            // component resources being rendered at the incorrect time if
+            // a caller calls UIViewRoot.encodeAll().
+            facet = context.getApplication().createComponent("javax.faces.ComponentResourceContainer");
+            facet.setId(location);
+            getFacets().put(location, facet);
+        }
+
+        return ((facet != null) ? facet.getChildren() : null);
+
+    }
+    
+
+    private static final class ViewMap extends HashMap<String,Object> {
+
+        private static final long serialVersionUID = -1l;
+
+        private ProjectStage stage;
+
+        
+        // -------------------------------------------------------- Constructors
+
+
+        ViewMap(ProjectStage stage) {
+
+            this.stage = stage;
+
+        }
+
+
+        // ---------------------------------------------------- Methods from Map
+
+
+        @Override
+        public void clear() {
+
+            FacesContext context = FacesContext.getCurrentInstance();
+            context.getApplication().publishEvent(context,
+                                                  PreDestroyViewMapEvent.class,
+                                                  context.getViewRoot());
+            super.clear();
+
+        }
+
+
+        @Override
+        public Object put(String key, Object value) {
+
+            if (value != null && ProjectStage.Development.equals(stage) && !(value instanceof Serializable)) {
+                LOGGER.log(Level.WARNING,
+                           "warning.component.uiviewroot_non_serializable_attribute_viewmap",
+                           new Object[] { key, value.getClass().getName() });
+            }
+            return super.put(key, value);
+
+        }
+
+
+        @Override
+        public void putAll(Map<? extends String,?> m) {
+
+            for (Map.Entry<? extends String,?> entry : m.entrySet()) {
+                String k = entry.getKey();
+                Object v = entry.getValue();
+                this.put(k, v);
+            }
+
+        }
+
+
+    } // END ViewMap
+
+
+}
diff --git a/jsf-api/src/main/java/javax/faces/component/UniqueIdVendor.java b/jsf-api/src/main/java/javax/faces/component/UniqueIdVendor.java
index 000ec2a..a940c08 100644
--- a/jsf-api/src/main/java/javax/faces/component/UniqueIdVendor.java
+++ b/jsf-api/src/main/java/javax/faces/component/UniqueIdVendor.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-api/src/main/java/javax/faces/component/UpdateModelException.java b/jsf-api/src/main/java/javax/faces/component/UpdateModelException.java
index 63ea3a0..ea62678 100644
--- a/jsf-api/src/main/java/javax/faces/component/UpdateModelException.java
+++ b/jsf-api/src/main/java/javax/faces/component/UpdateModelException.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-api/src/main/java/javax/faces/component/ValueHolder.java b/jsf-api/src/main/java/javax/faces/component/ValueHolder.java
index 53ec73c..7e3c4da 100644
--- a/jsf-api/src/main/java/javax/faces/component/ValueHolder.java
+++ b/jsf-api/src/main/java/javax/faces/component/ValueHolder.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-api/src/main/java/javax/faces/component/behavior/AjaxBehavior.java b/jsf-api/src/main/java/javax/faces/component/behavior/AjaxBehavior.java
index 3e4de8e..e234d97 100644
--- a/jsf-api/src/main/java/javax/faces/component/behavior/AjaxBehavior.java
+++ b/jsf-api/src/main/java/javax/faces/component/behavior/AjaxBehavior.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -33,7 +37,7 @@
  * only if the new code is made subject to such option by the copyright
  * holder.
  */
- 
+
 package javax.faces.component.behavior;
 
 import java.util.ArrayList;
@@ -57,17 +61,26 @@ import javax.faces.event.AjaxBehaviorListener;
 
 
 /**
- * <p class="changed_added_2_0">An instance of this class is added
- * as a {@link ClientBehavior} to a component using the 
- * {@link javax.faces.component.behavior.ClientBehaviorHolder#addClientBehavior} 
- * contract that components implement.  The presence of this 
- * {@link ClientBehavior} will cause the rendering of JavaScript that 
- * produces an <code>Ajax</code> request using the 
- * specification public JavaScript API when the component is 
- * rendered.</p> 
+ * <p class="changed_added_2_0"><span
+ * class="changed_modified_2_0_rev_a changed_modified_2_2">An</span> instance of this class
+ * is added as a {@link ClientBehavior} to a component using the {@link
+ * javax.faces.component.behavior.ClientBehaviorHolder#addClientBehavior}
+ * contract that components implement.  The presence of this {@link
+ * ClientBehavior} will cause the rendering of JavaScript that produces
+ * an <code>Ajax</code> request using the specification public
+ * JavaScript API when the component is rendered.</p>
+
+ * <p class="changed_modified_2_0_rev_a">If the component is an instance
+ * of {@link javax.faces.component.EditableValueHolder}, Where at all
+ * possible, the component must have the UI register the ajax event when
+ * the initial value is changed, not when focus is lost on the
+ * component.</p>
+
+ * <!-- https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=1219 -->
  *
  * @since 2.0
  */
+
 public class AjaxBehavior extends ClientBehaviorBase {
 
     /**
@@ -80,12 +93,18 @@ public class AjaxBehavior extends ClientBehaviorBase {
 
     private String onerror;
     private String onevent;
+    private String delay;
     private List<String> execute;
     private List<String> render;
     private Boolean disabled;
     private Boolean immediate;
+    private Boolean resetValues;
 
     private Map<String, ValueExpression> bindings;
+    
+    public AjaxBehavior() {
+        
+    }
 
     // ---------------------------------------------------------- Public Methods
     @Override
@@ -203,6 +222,35 @@ public class AjaxBehavior extends ClientBehaviorBase {
 
         clearInitialState();
     }
+    
+    /**
+     * <p class="changed_added_2_2">Returns the delay value, or <code>null</code>
+     * if no value was set.</p>
+     *
+     * @since 2.2
+     */
+    public String getDelay() {
+        return (String) eval(DELAY, delay);
+    }
+
+    /**
+     * <p class="changed_added_2_2">If less than
+     * <em>delay</em> milliseconds elapses between calls to
+     * <em>request()</em> only the most recent one is sent and all other
+     * requests are discarded. The default value of this option is
+     * 300.</code> If the value of <em>delay</em> is the literal string
+     * <code>'none'</code> without the quotes, no delay is used.</p>
+     *
+     * @param delay the ajax delay value
+     *
+     * @since 2.2
+     */
+    public void setDelay(String delay) {
+        this.delay = delay;
+        
+        clearInitialState();
+    }
+    
 
     /**
      * <p class="changed_added_2_0">Return a non-empty
@@ -237,6 +285,33 @@ public class AjaxBehavior extends ClientBehaviorBase {
 
         clearInitialState();
     }
+    
+    /**
+     * <p class="changed_added_2_2">
+     * Return the resetValues status of this behavior.</p>
+     * 
+     * @since 2.2
+     */
+
+    public boolean isResetValues() {
+        Boolean result = (Boolean) eval(RESET_VALUES, resetValues);
+        return ((result != null) ? result : false);
+    }
+
+    /**
+     * <p class="changed_added_2_2">
+     * Set the resetValues status of this behavior.</p>
+     * 
+     * @since 2.2
+     */
+
+    public void setResetValues(boolean resetValues) {
+        this.resetValues = resetValues;
+        
+        clearInitialState();
+    }
+    
+    
 
     /**
      * <p class="changed_added_2_0">Return the disabled status of this behavior.</p>
@@ -264,7 +339,7 @@ public class AjaxBehavior extends ClientBehaviorBase {
 
     /**
      * <p class="changed_added_2_0">Return the immediate status of this 
-     * behaivor.</p>
+     * behavior.</p>
      *
      * @since 2.0
      */
@@ -303,6 +378,18 @@ public class AjaxBehavior extends ClientBehaviorBase {
     }
 
     /**
+     * <p class="changed_added_2_2">Tests whether the resetValues attribute
+     * is specified.  Returns true if the resetValues attribute is specified,
+     * either as a locally set property or as a value expression. 
+     * </p>
+     *
+     * @since 2.2
+     */
+    public boolean isResetValuesSet() {
+        return ((resetValues != null) || (getValueExpression(RESET_VALUES) != null));
+    }
+
+    /**
      * <p class="changed_added_2_0">Returns the {@link ValueExpression}
      * used to calculate the value for the specified property name, if any.
      * </p>
@@ -420,16 +507,18 @@ public class AjaxBehavior extends ClientBehaviorBase {
                 values = new Object[] { superState };
             }
         } else {
-            values = new Object[8];
+            values = new Object[10];
       
             values[0] = superState;
             values[1] = onerror;
             values[2] = onevent;
             values[3] = disabled;
             values[4] = immediate;
-            values[5] = saveList(execute);
-            values[6] = saveList(render);
-            values[7] = saveBindings(context, bindings);
+            values[5] = resetValues;
+            values[6] = delay;
+            values[7] = saveList(execute);
+            values[8] = saveList(render);
+            values[9] = saveBindings(context, bindings);
         }
 
         return values;
@@ -451,9 +540,11 @@ public class AjaxBehavior extends ClientBehaviorBase {
                 onevent = (String)values[2];
                 disabled = (Boolean)values[3];
                 immediate = (Boolean)values[4];
-                execute = restoreList(EXECUTE, values[5]);
-                render = restoreList(RENDER, values[6]);
-                bindings = restoreBindings(context, values[7]);
+                resetValues = (Boolean)values[5];
+                delay = (String)values[6];
+                execute = restoreList(EXECUTE, values[7]);
+                render = restoreList(RENDER, values[8]);
+                bindings = restoreBindings(context, values[9]);
 
                 // If we saved state last time, save state again next time.
                 clearInitialState();
@@ -611,10 +702,14 @@ public class AjaxBehavior extends ClientBehaviorBase {
 
         if (ONEVENT.equals(propertyName)) {
             onevent = (String)value;
+        } else if (DELAY.equals(propertyName)) {
+            delay = (String)value;
         } else if (ONERROR.equals(propertyName)) {
             onerror = (String)value;
         } else if (IMMEDIATE.equals(propertyName)) {
             immediate = (Boolean)value;
+        } else if (RESET_VALUES.equals(propertyName)) {
+            resetValues = (Boolean)value;
         } else if (DISABLED.equals(propertyName)) {
             disabled = (Boolean)value;
         } else if (EXECUTE.equals(propertyName)) {
@@ -710,9 +805,11 @@ public class AjaxBehavior extends ClientBehaviorBase {
     private static final String ONEVENT = "onevent";
     private static final String ONERROR = "onerror";
     private static final String IMMEDIATE = "immediate";
+    private static final String RESET_VALUES = "resetValues";
     private static final String DISABLED = "disabled";
     private static final String EXECUTE = "execute";
     private static final String RENDER = "render";
+    private static final String DELAY = "delay";
 
     // Id keyword constants
     private static String ALL = "@all";
diff --git a/jsf-api/src/main/java/javax/faces/component/behavior/Behavior.java b/jsf-api/src/main/java/javax/faces/component/behavior/Behavior.java
index ba332a1..d3fcf15 100644
--- a/jsf-api/src/main/java/javax/faces/component/behavior/Behavior.java
+++ b/jsf-api/src/main/java/javax/faces/component/behavior/Behavior.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -36,19 +40,8 @@
 
 package javax.faces.component.behavior;
 
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.Set;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
 import javax.faces.component.UIComponent;
-import javax.faces.context.FacesContext;
-import javax.faces.event.AbortProcessingException;
 import javax.faces.event.BehaviorEvent;
-import javax.faces.event.BehaviorListener;
-import javax.faces.render.RenderKit;
 
 /**
  * <p class="changed_added_2_0">The <strong>Behavior</strong> interface is 
@@ -79,7 +72,7 @@ public interface Behavior {
      *
      * @param event The {@link BehaviorEvent} to be broadcast
      *
-     * @throws AbortProcessingException Signal the JavaServer Faces
+     * @throws javax.faces.event.AbortProcessingException Signal the JavaServer Faces
      *  implementation that no further processing on the current event
      *  should be performed
      * @throws IllegalArgumentException if the implementation class
diff --git a/jsf-api/src/main/java/javax/faces/component/behavior/BehaviorBase.java b/jsf-api/src/main/java/javax/faces/component/behavior/BehaviorBase.java
index b24a016..3e59d28 100644
--- a/jsf-api/src/main/java/javax/faces/component/behavior/BehaviorBase.java
+++ b/jsf-api/src/main/java/javax/faces/component/behavior/BehaviorBase.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -92,6 +96,10 @@ public class BehaviorBase implements Behavior, PartialStateHolder {
     public void broadcast(BehaviorEvent event)
         throws AbortProcessingException {
 
+        if (null == event) {
+            throw new NullPointerException();
+        }
+
         if (null != listeners) {
             for (BehaviorListener listener : listeners) {
                 if (event.isAppropriateListener(listener)) {
diff --git a/jsf-api/src/main/java/javax/faces/component/behavior/ClientBehavior.java b/jsf-api/src/main/java/javax/faces/component/behavior/ClientBehavior.java
index 05d28fc..ab25700 100644
--- a/jsf-api/src/main/java/javax/faces/component/behavior/ClientBehavior.java
+++ b/jsf-api/src/main/java/javax/faces/component/behavior/ClientBehavior.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -36,20 +40,9 @@
 
 package javax.faces.component.behavior;
 
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
 import java.util.Set;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
 import javax.faces.component.UIComponent;
 import javax.faces.context.FacesContext;
-import javax.faces.event.AbortProcessingException;
-import javax.faces.event.BehaviorEvent;
-import javax.faces.event.BehaviorListener;
-import javax.faces.render.ClientBehaviorRenderer;
-import javax.faces.render.RenderKit;
 
 /**
  * <p class="changed_added_2_0"><strong>ClientBehavior</strong> is the
diff --git a/jsf-api/src/main/java/javax/faces/component/behavior/ClientBehaviorBase.java b/jsf-api/src/main/java/javax/faces/component/behavior/ClientBehaviorBase.java
index 49c2569..bcede19 100644
--- a/jsf-api/src/main/java/javax/faces/component/behavior/ClientBehaviorBase.java
+++ b/jsf-api/src/main/java/javax/faces/component/behavior/ClientBehaviorBase.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-api/src/main/java/javax/faces/component/behavior/ClientBehaviorContext.java b/jsf-api/src/main/java/javax/faces/component/behavior/ClientBehaviorContext.java
index e3ae748..1d1c762 100644
--- a/jsf-api/src/main/java/javax/faces/component/behavior/ClientBehaviorContext.java
+++ b/jsf-api/src/main/java/javax/faces/component/behavior/ClientBehaviorContext.java
@@ -1,254 +1,258 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- *
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- *
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- *
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- *
- * Contributor(s):
- *
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package javax.faces.component.behavior;
-
-import java.util.Collection;
-import java.util.Collections;
-
-import javax.faces.component.UIComponent;
-import javax.faces.context.FacesContext;
-
-/**
- * <p class="changed_added_2_0"><strong>ClientBehaviorContext</strong>
- * provides context information that may be useful to 
- * {@link javax.faces.component.behavior.ClientBehavior#getScript}
- * implementations.
- * </p>
- *
- * @since 2.0
- */
-public abstract class ClientBehaviorContext {
-	
-    /**
-     * <p class="changed_added_2_0">Creates a ClientBehaviorContext instance.</p>
-     *
-     * @param context the <code>FacesContext</code> for the current request.
-     * @param component the component instance to which the 
-     * <code>ClientBehavior</code> is attached.
-     * @param eventName the name of the behavior event to which the
-     * <code>ClientBehavior</code> is attached.
-     * @param sourceId the id to use as the ClientBehavior's "source".
-     * @param parameters the collection of parameters for submitting
-     * ClientBehaviors to include in the request.
-     * @return a <code>ClientBehaviorContext</code> instance configured with the
-     * provided values.
-     * @throws NullPointerException if <code>context</code>,
-     * <code>component</code> or <code>eventName</code>
-     *  is <code>null</code>
-     *
-     * @since 2.0
-     */
-    public static ClientBehaviorContext createClientBehaviorContext(FacesContext context,
-                                                        UIComponent component,
-                                                        String eventName,
-                                                        String sourceId,
-                                                        Collection<ClientBehaviorContext.Parameter> parameters) {
-
-        return new ClientBehaviorContextImpl(context, component, eventName, sourceId, parameters);
-    }
-
-    /**
-     * <p class="changed_added_2_0">Returns the {@link FacesContext} for 
-     * the current request.</p>
-     *
-     * @since 2.0
-     */
-    abstract public FacesContext getFacesContext();
-
-    /**
-     * <p class="changed_added_2_0">Returns the {@link UIComponent} that is 
-     * requesting the {@link ClientBehavior} script.</p>
-     *
-     * @since 2.0
-     */
-    abstract public UIComponent getComponent();
-
-    /**
-     * <p class="changed_added_2_0">Returns the name of the behavior event 
-     * for which the ClientBehavior script is being requested. </p>
-     *
-     * @since 2.0
-     */
-    abstract public String getEventName();
-
-    /**
-     * <p class="changed_added_2_0">Returns an id for use as the 
-     * {@link ClientBehavior} source.  ClientBehavior implementations that submit back 
-     * to the Faces lifecycle are required to identify which component 
-     * triggered the ClientBehavior-initiated request via the 
-     * <code>javax.faces.source</code> request parameter.  In 
-     * most cases, th source id can be trivially derived from the element 
-     * to which the behavior's client-side script is attached - ie. the 
-     * source id is typically the id of this element.  However, in components 
-     * which produce more complex content, the behavior script may not be able to
-     * determine the correct id to use for the javax.faces.source
-     * value.  The {@link ClientBehaviorContext#getSourceId} method allows the component 
-     * to pass this information into the {@link ClientBehavior#getScript}
-     * implementation.</p>
-     *
-     * @return the id for the behavior's script to use as the "source", or
-     * null if the Behavior's script can identify the source from the DOM.
-     *
-     * @since 2.0
-     */
-    abstract public String getSourceId();
-
-    /**
-     * <p class="changed_added_2_0">Returns parameters that "submitting" 
-     * {@link ClientBehavior} implementations should include when posting back data 
-     * into the Faces lifecycle.  If no parameters are specified, this method
-     * returns an empty (non-null) collection.</p>
-     *
-     * @since 2.0
-     */
-    abstract public Collection<ClientBehaviorContext.Parameter> getParameters();
-
-    // Little static member class that provides a default implementation
-    private static final class ClientBehaviorContextImpl extends ClientBehaviorContext {
-        private FacesContext context;
-        private UIComponent component;
-        private String eventName;
-        private String sourceId;
-        private Collection<ClientBehaviorContext.Parameter> parameters;
-
-        private ClientBehaviorContextImpl(FacesContext context,
-                                    UIComponent component,
-                                    String eventName,
-                                    String sourceId,
-                                    Collection<ClientBehaviorContext.Parameter> parameters) {
-
-            if (null == context) {
-                throw new NullPointerException();
-            }
-
-            if (null == component) {
-                throw new NullPointerException();
-            }
-
-            if (null == eventName) {
-                throw new NullPointerException();
-            }
-
-            this.context = context;
-            this.component = component;
-            this.eventName = eventName;
-            this.sourceId = sourceId;
-
-            this.parameters =  (parameters == null) ? 
-                                   Collections.<ClientBehaviorContext.Parameter>emptyList() : 
-                                   parameters;
-        }        
-
-        @Override
-        public FacesContext getFacesContext() {
-            return context;
-        }
-
-        @Override
-        public UIComponent getComponent() {
-            return component;
-        }
-
-        @Override
-        public String getEventName() {
-            return eventName;
-        }
-
-        @Override
-        public String getSourceId() {
-            return sourceId;
-        }
-
-        @Override
-        public Collection<ClientBehaviorContext.Parameter> getParameters() {
-            return parameters;
-        }
-    }
-
-    /**
-     * <p class="changed_added_2_0"><strong>Parameter</strong> instances
-     * represent name/value pairs that "submitting" ClientBehavior implementations
-     * should include when posting back into the Faces lifecycle.  ClientBehavior
-     * implementations can determine which Parameters to include by calling
-     * ClientBehaviorContext.getParameters().
-     * </p>
-     *
-     * @since 2.0
-     */
-    public static class Parameter {
-
-        private String name;
-        private Object value;
-
-        /**
-         * <p class="changed_added_2_0">Creates a Parameter instance.</p>
-         * @param name the name of the parameter
-         * @param value the value of the parameter
-         * @throws NullPointerException if <code>name</code>
-         * is null.
-         *
-         * @since 2.0
-         */
-        public Parameter(String name, Object value) {
-
-            if (null == name) {
-                throw new NullPointerException();
-            }
-
-            this.name = name;
-            this.value = value;
-        }
-
-        /**
-         * <p class="changed_added_2_0">Returns the Parameter's name.</p>
-         *
-         * @since 2.0
-         */
-        public String getName() {
-            return name;
-        }
-
-        /**
-         * <p class="changed_added_2_0">Returns the Parameter's value.</p>
-         *
-         * @since 2.0
-         */
-        public Object getValue() {
-            return value;
-        }
-    }
-}
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package javax.faces.component.behavior;
+
+import java.util.Collection;
+import java.util.Collections;
+
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+
+/**
+ * <p class="changed_added_2_0"><strong>ClientBehaviorContext</strong>
+ * provides context information that may be useful to 
+ * {@link javax.faces.component.behavior.ClientBehavior#getScript}
+ * implementations.
+ * </p>
+ *
+ * @since 2.0
+ */
+public abstract class ClientBehaviorContext {
+	
+    /**
+     * <p class="changed_added_2_0">Creates a ClientBehaviorContext instance.</p>
+     *
+     * @param context the <code>FacesContext</code> for the current request.
+     * @param component the component instance to which the 
+     * <code>ClientBehavior</code> is attached.
+     * @param eventName the name of the behavior event to which the
+     * <code>ClientBehavior</code> is attached.
+     * @param sourceId the id to use as the ClientBehavior's "source".
+     * @param parameters the collection of parameters for submitting
+     * ClientBehaviors to include in the request.
+     * @return a <code>ClientBehaviorContext</code> instance configured with the
+     * provided values.
+     * @throws NullPointerException if <code>context</code>,
+     * <code>component</code> or <code>eventName</code>
+     *  is <code>null</code>
+     *
+     * @since 2.0
+     */
+    public static ClientBehaviorContext createClientBehaviorContext(FacesContext context,
+                                                        UIComponent component,
+                                                        String eventName,
+                                                        String sourceId,
+                                                        Collection<ClientBehaviorContext.Parameter> parameters) {
+
+        return new ClientBehaviorContextImpl(context, component, eventName, sourceId, parameters);
+    }
+
+    /**
+     * <p class="changed_added_2_0">Returns the {@link FacesContext} for 
+     * the current request.</p>
+     *
+     * @since 2.0
+     */
+    abstract public FacesContext getFacesContext();
+
+    /**
+     * <p class="changed_added_2_0">Returns the {@link UIComponent} that is 
+     * requesting the {@link ClientBehavior} script.</p>
+     *
+     * @since 2.0
+     */
+    abstract public UIComponent getComponent();
+
+    /**
+     * <p class="changed_added_2_0">Returns the name of the behavior event 
+     * for which the ClientBehavior script is being requested. </p>
+     *
+     * @since 2.0
+     */
+    abstract public String getEventName();
+
+    /**
+     * <p class="changed_added_2_0">Returns an id for use as the 
+     * {@link ClientBehavior} source.  ClientBehavior implementations that submit back 
+     * to the Faces lifecycle are required to identify which component 
+     * triggered the ClientBehavior-initiated request via the 
+     * <code>javax.faces.source</code> request parameter.  In 
+     * most cases, th source id can be trivially derived from the element 
+     * to which the behavior's client-side script is attached - ie. the 
+     * source id is typically the id of this element.  However, in components 
+     * which produce more complex content, the behavior script may not be able to
+     * determine the correct id to use for the javax.faces.source
+     * value.  The {@link ClientBehaviorContext#getSourceId} method allows the component 
+     * to pass this information into the {@link ClientBehavior#getScript}
+     * implementation.</p>
+     *
+     * @return the id for the behavior's script to use as the "source", or
+     * null if the Behavior's script can identify the source from the DOM.
+     *
+     * @since 2.0
+     */
+    abstract public String getSourceId();
+
+    /**
+     * <p class="changed_added_2_0">Returns parameters that "submitting" 
+     * {@link ClientBehavior} implementations should include when posting back data 
+     * into the Faces lifecycle.  If no parameters are specified, this method
+     * returns an empty (non-null) collection.</p>
+     *
+     * @since 2.0
+     */
+    abstract public Collection<ClientBehaviorContext.Parameter> getParameters();
+
+    // Little static member class that provides a default implementation
+    private static final class ClientBehaviorContextImpl extends ClientBehaviorContext {
+        private FacesContext context;
+        private UIComponent component;
+        private String eventName;
+        private String sourceId;
+        private Collection<ClientBehaviorContext.Parameter> parameters;
+
+        private ClientBehaviorContextImpl(FacesContext context,
+                                    UIComponent component,
+                                    String eventName,
+                                    String sourceId,
+                                    Collection<ClientBehaviorContext.Parameter> parameters) {
+
+            if (null == context) {
+                throw new NullPointerException();
+            }
+
+            if (null == component) {
+                throw new NullPointerException();
+            }
+
+            if (null == eventName) {
+                throw new NullPointerException();
+            }
+
+            this.context = context;
+            this.component = component;
+            this.eventName = eventName;
+            this.sourceId = sourceId;
+
+            this.parameters =  (parameters == null) ? 
+                                   Collections.<ClientBehaviorContext.Parameter>emptyList() : 
+                                   parameters;
+        }        
+
+        @Override
+        public FacesContext getFacesContext() {
+            return context;
+        }
+
+        @Override
+        public UIComponent getComponent() {
+            return component;
+        }
+
+        @Override
+        public String getEventName() {
+            return eventName;
+        }
+
+        @Override
+        public String getSourceId() {
+            return sourceId;
+        }
+
+        @Override
+        public Collection<ClientBehaviorContext.Parameter> getParameters() {
+            return parameters;
+        }
+    }
+
+    /**
+     * <p class="changed_added_2_0"><strong>Parameter</strong> instances
+     * represent name/value pairs that "submitting" ClientBehavior implementations
+     * should include when posting back into the Faces lifecycle.  ClientBehavior
+     * implementations can determine which Parameters to include by calling
+     * ClientBehaviorContext.getParameters().
+     * </p>
+     *
+     * @since 2.0
+     */
+    public static class Parameter {
+
+        private String name;
+        private Object value;
+
+        /**
+         * <p class="changed_added_2_0">Creates a Parameter instance.</p>
+         * @param name the name of the parameter
+         * @param value the value of the parameter
+         * @throws NullPointerException if <code>name</code>
+         * is null.
+         *
+         * @since 2.0
+         */
+        public Parameter(String name, Object value) {
+
+            if (null == name) {
+                throw new NullPointerException();
+            }
+
+            this.name = name;
+            this.value = value;
+        }
+
+        /**
+         * <p class="changed_added_2_0">Returns the Parameter's name.</p>
+         *
+         * @since 2.0
+         */
+        public String getName() {
+            return name;
+        }
+
+        /**
+         * <p class="changed_added_2_0">Returns the Parameter's value.</p>
+         *
+         * @since 2.0
+         */
+        public Object getValue() {
+            return value;
+        }
+    }
+}
diff --git a/jsf-api/src/main/java/javax/faces/component/behavior/ClientBehaviorHint.java b/jsf-api/src/main/java/javax/faces/component/behavior/ClientBehaviorHint.java
index 0600290..08afa6a 100644
--- a/jsf-api/src/main/java/javax/faces/component/behavior/ClientBehaviorHint.java
+++ b/jsf-api/src/main/java/javax/faces/component/behavior/ClientBehaviorHint.java
@@ -1,56 +1,60 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package javax.faces.component.behavior;
-
-/**
- * <p class="changed_added_2_0">An enum that specifies hints that describes
- * the behavior of ClientBehavior implementations.</p>
- *
- * @see ClientBehavior#getHints ClientBehavior.getHints()
- *
- * @since 2.0
- */
-public enum ClientBehaviorHint {
-
-  /** 
-   * Hint that indicates that ClientBehavior implementation posts back to the
-   * server.  Renderers that normally attach postback-related scripts
-   * may choose to omit such scripts when a submitting ClientBehavior is
-   * present.
-   */
-  SUBMITTING
-}
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package javax.faces.component.behavior;
+
+/**
+ * <p class="changed_added_2_0">An enum that specifies hints that describes
+ * the behavior of ClientBehavior implementations.</p>
+ *
+ * @see ClientBehavior#getHints ClientBehavior.getHints()
+ *
+ * @since 2.0
+ */
+public enum ClientBehaviorHint {
+
+  /** 
+   * Hint that indicates that ClientBehavior implementation posts back to the
+   * server.  Renderers that normally attach postback-related scripts
+   * may choose to omit such scripts when a submitting ClientBehavior is
+   * present.
+   */
+  SUBMITTING
+}
diff --git a/jsf-api/src/main/java/javax/faces/component/behavior/ClientBehaviorHolder.java b/jsf-api/src/main/java/javax/faces/component/behavior/ClientBehaviorHolder.java
index 9c584e8..4372e6a 100644
--- a/jsf-api/src/main/java/javax/faces/component/behavior/ClientBehaviorHolder.java
+++ b/jsf-api/src/main/java/javax/faces/component/behavior/ClientBehaviorHolder.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -38,7 +42,6 @@ package javax.faces.component.behavior;
 
 import java.util.Collection;
 import java.util.List;
-import java.util.Set;
 import java.util.Map;
 
 /**
diff --git a/jsf-api/src/main/java/javax/faces/component/behavior/FacesBehavior.java b/jsf-api/src/main/java/javax/faces/component/behavior/FacesBehavior.java
index 4ea257a..4ca0224 100644
--- a/jsf-api/src/main/java/javax/faces/component/behavior/FacesBehavior.java
+++ b/jsf-api/src/main/java/javax/faces/component/behavior/FacesBehavior.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-api/src/main/java/javax/faces/component/behavior/package.html b/jsf-api/src/main/java/javax/faces/component/behavior/package.html
index f0a9e70..59c222c 100644
--- a/jsf-api/src/main/java/javax/faces/component/behavior/package.html
+++ b/jsf-api/src/main/java/javax/faces/component/behavior/package.html
@@ -1,10 +1,53 @@
 <html>
 <head>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
 <title>Package Description for "javax.faces.component.behavior"</title>
 <body bgcolor="white">
 
-<p><span class="changed_added_2_0">APIs for attaching additional behavior to 
-user interface components.</span></p>
+<p><span class="changed_added_2_0"><span
+class="changed_modified_2_0_rev_a changed_modified_2_2">APIs</span> for attaching additional
+behavior to user interface components.</span></p>
 
 </body>
 </html>
diff --git a/jsf-api/src/main/java/javax/faces/component/html/package.html b/jsf-api/src/main/java/javax/faces/component/html/package.html
index e013c6a..a7a32a0 100644
--- a/jsf-api/src/main/java/javax/faces/component/html/package.html
+++ b/jsf-api/src/main/java/javax/faces/component/html/package.html
@@ -1,8 +1,51 @@
 <html>
 <head>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
 <title>Package Description for "javax.faces.component.html"</title>
 <body bgcolor="white">
-<p>Specialized user interface component classes for HTML.</p>
+<p><span class="changed_modified_2_0_rev_a">Specialized</span> user
+interface component classes for HTML.</p>
 </body>
 </html>
 
diff --git a/jsf-api/src/main/java/javax/faces/component/package.html b/jsf-api/src/main/java/javax/faces/component/package.html
index 41d4819..4d37497 100644
--- a/jsf-api/src/main/java/javax/faces/component/package.html
+++ b/jsf-api/src/main/java/javax/faces/component/package.html
@@ -1,15 +1,57 @@
 <html>
 <head>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
 <title>Package Description for "javax.faces.component"</title>
 <body bgcolor="white">
 
-<p><span class="changed_modified_2_0"><span class="changed_modified_2_0_rev_a">Fundamental</span></span> APIs for user
+<p><span class="changed_modified_2_0"><span class="changed_modified_2_0_rev_a changed_modified_2_1"><span class="changed_modified_2_2">Fundamental</span></span></span> APIs for user
 interface components.</p>
 
 <p>For your convenience here is a UML class diagram of the classes in
 this package.</p>
 
-<img src="UIComponentHierarchy.jpg" />
+<img src="UIComponentHierarchy.jpg"></img>
 
 </body>
 </html>
diff --git a/jsf-api/src/main/java/javax/faces/component/visit/VisitCallback.java b/jsf-api/src/main/java/javax/faces/component/visit/VisitCallback.java
index fe90b14..fd72b9a 100644
--- a/jsf-api/src/main/java/javax/faces/component/visit/VisitCallback.java
+++ b/jsf-api/src/main/java/javax/faces/component/visit/VisitCallback.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-api/src/main/java/javax/faces/component/visit/VisitContext.java b/jsf-api/src/main/java/javax/faces/component/visit/VisitContext.java
index 4d91dfe..a386431 100644
--- a/jsf-api/src/main/java/javax/faces/component/visit/VisitContext.java
+++ b/jsf-api/src/main/java/javax/faces/component/visit/VisitContext.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -37,9 +41,7 @@
 package javax.faces.component.visit;
 
 import java.util.AbstractCollection;
-import java.util.ArrayList;
 import java.util.Collection;
-import java.util.Collections;
 import java.util.Iterator;
 import java.util.Set;
 
diff --git a/jsf-api/src/main/java/javax/faces/component/visit/VisitContextFactory.java b/jsf-api/src/main/java/javax/faces/component/visit/VisitContextFactory.java
index 6fed491..aeaefe1 100644
--- a/jsf-api/src/main/java/javax/faces/component/visit/VisitContextFactory.java
+++ b/jsf-api/src/main/java/javax/faces/component/visit/VisitContextFactory.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -50,6 +54,9 @@ import javax.faces.context.FacesContext;
  */
 public abstract class VisitContextFactory implements FacesWrapper<VisitContextFactory> {
 
+    public VisitContextFactory() {
+    }
+    
     /**
      * <p class="changed_added_2_0">If this factory has been decorated, the 
      * implementation doing the decorating may override this method to provide
diff --git a/jsf-api/src/main/java/javax/faces/component/visit/VisitContextWrapper.java b/jsf-api/src/main/java/javax/faces/component/visit/VisitContextWrapper.java
index 885cddb..0a7acf6 100644
--- a/jsf-api/src/main/java/javax/faces/component/visit/VisitContextWrapper.java
+++ b/jsf-api/src/main/java/javax/faces/component/visit/VisitContextWrapper.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -81,6 +85,7 @@ public abstract class VisitContextWrapper extends VisitContext implements FacesW
         return getWrapped().invokeVisitCallback(component, callback);
     }
 
+    @Override
     public abstract VisitContext getWrapped();
 
     
diff --git a/jsf-api/src/main/java/javax/faces/component/visit/VisitHint.java b/jsf-api/src/main/java/javax/faces/component/visit/VisitHint.java
index 138461d..35797d8 100644
--- a/jsf-api/src/main/java/javax/faces/component/visit/VisitHint.java
+++ b/jsf-api/src/main/java/javax/faces/component/visit/VisitHint.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -37,7 +41,8 @@
 package javax.faces.component.visit;
 
 /**
- * <p class="changed_added_2_0">An enum that specifies hints that impact
+ * <p class="changed_added_2_0"><span class="changed_modified_2_1">An</span>
+ * enum that specifies hints that impact
  * the behavior of a component tree visit.</p>
 
  * @since 2.0
@@ -58,11 +63,20 @@ public enum VisitHint {
    */
   SKIP_TRANSIENT,
 
+  /** 
+   * <p class="changed_added_2_1">Hint that indicates that components
+   * that normally visit children multiple times (eg. <code>UIData</code>)
+   * in an iterative fashion should instead visit each child only one time.</p>
+   * @since 2.1
+   */
+  SKIP_ITERATION,
+
   /**
    * <p class="changed_added_2_0">Hint that indicates that the visit is
    * being performed as part of lifecycle phase execution and as such
    * phase-specific actions (initialization) may be taken.</p>
    * @since 2.0
    */
-  EXECUTE_LIFECYCLE
+  EXECUTE_LIFECYCLE,
+
 }
diff --git a/jsf-api/src/main/java/javax/faces/component/visit/VisitResult.java b/jsf-api/src/main/java/javax/faces/component/visit/VisitResult.java
index 8f36610..51d85be 100644
--- a/jsf-api/src/main/java/javax/faces/component/visit/VisitResult.java
+++ b/jsf-api/src/main/java/javax/faces/component/visit/VisitResult.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-api/src/main/java/javax/faces/component/visit/package.html b/jsf-api/src/main/java/javax/faces/component/visit/package.html
index 0e60f2d..4860015 100644
--- a/jsf-api/src/main/java/javax/faces/component/visit/package.html
+++ b/jsf-api/src/main/java/javax/faces/component/visit/package.html
@@ -1,10 +1,52 @@
 <html>
 <head>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
 <title>Package Description for "javax.faces.component.visit"</title>
 <body bgcolor="white">
 
-<p class="changed_added_2_0">APIs for traversing a user interface
-component view.</p>
+<p class="changed_added_2_0"><span class="changed_modified_2_1 changed_modified_2_2">APIs</span> for
+traversing a user interface component view.</p>
 
 <div class="changed_added_2_0">
 
diff --git a/jsf-api/src/main/java/javax/faces/context/ExceptionHandler.java b/jsf-api/src/main/java/javax/faces/context/ExceptionHandler.java
index 9f39c39..23e1a45 100644
--- a/jsf-api/src/main/java/javax/faces/context/ExceptionHandler.java
+++ b/jsf-api/src/main/java/javax/faces/context/ExceptionHandler.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-api/src/main/java/javax/faces/context/ExceptionHandlerFactory.java b/jsf-api/src/main/java/javax/faces/context/ExceptionHandlerFactory.java
index 3ea4732..f5d43f4 100644
--- a/jsf-api/src/main/java/javax/faces/context/ExceptionHandlerFactory.java
+++ b/jsf-api/src/main/java/javax/faces/context/ExceptionHandlerFactory.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -62,7 +66,9 @@ import javax.faces.FacesWrapper;
 
 public abstract class ExceptionHandlerFactory implements FacesWrapper<ExceptionHandlerFactory> {
 
-
+    public ExceptionHandlerFactory() {
+    }
+    
     /**
      * <p class="changed_added_2_0">If this factory has been decorated, the 
      * implementation doing the decorating may override this method to provide
diff --git a/jsf-api/src/main/java/javax/faces/context/ExceptionHandlerWrapper.java b/jsf-api/src/main/java/javax/faces/context/ExceptionHandlerWrapper.java
index fe1891f..c9f5603 100644
--- a/jsf-api/src/main/java/javax/faces/context/ExceptionHandlerWrapper.java
+++ b/jsf-api/src/main/java/javax/faces/context/ExceptionHandlerWrapper.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -64,6 +68,7 @@ public abstract class ExceptionHandlerWrapper extends ExceptionHandler implement
      * @return the wrapped {@link ExceptionHandler} instance
      * @see javax.faces.FacesWrapper#getWrapped() 
      */
+    @Override
     public abstract ExceptionHandler getWrapped();
 
 
@@ -77,6 +82,7 @@ public abstract class ExceptionHandlerWrapper extends ExceptionHandler implement
      *
      * @see ExceptionHandler#getHandledExceptionQueuedEvent()
      */
+    @Override
     public ExceptionQueuedEvent getHandledExceptionQueuedEvent() {
         return getWrapped().getHandledExceptionQueuedEvent();
     }
@@ -89,6 +95,7 @@ public abstract class ExceptionHandlerWrapper extends ExceptionHandler implement
      *
      * @see javax.faces.context.ExceptionHandler#handle()
      */
+    @Override
     public void handle() throws FacesException {
         getWrapped().handle();
     }
@@ -101,6 +108,7 @@ public abstract class ExceptionHandlerWrapper extends ExceptionHandler implement
      *
      * @see javax.faces.context.ExceptionHandler#isListenerForSource(Object) ()
      */
+    @Override
     public boolean isListenerForSource(Object source) {
         return getWrapped().isListenerForSource(source);
     }
@@ -113,6 +121,7 @@ public abstract class ExceptionHandlerWrapper extends ExceptionHandler implement
      *
      * @see javax.faces.context.ExceptionHandler#processEvent(javax.faces.event.SystemEvent)
      */
+    @Override
     public void processEvent(SystemEvent event) throws AbortProcessingException {
         getWrapped().processEvent(event);
     }
@@ -125,6 +134,7 @@ public abstract class ExceptionHandlerWrapper extends ExceptionHandler implement
      *
      * @see javax.faces.context.ExceptionHandler#getRootCause(Throwable)
      */
+    @Override
     public Throwable getRootCause(Throwable t) {
         return getWrapped().getRootCause(t);
     }
@@ -137,6 +147,7 @@ public abstract class ExceptionHandlerWrapper extends ExceptionHandler implement
      *
      * @see ExceptionHandler#getHandledExceptionQueuedEvents()
      */
+    @Override
     public Iterable<ExceptionQueuedEvent> getHandledExceptionQueuedEvents() {
         return getWrapped().getHandledExceptionQueuedEvents();
     }
@@ -149,6 +160,7 @@ public abstract class ExceptionHandlerWrapper extends ExceptionHandler implement
      *
      * @see ExceptionHandler#getUnhandledExceptionQueuedEvents()
      */
+    @Override
     public Iterable<ExceptionQueuedEvent> getUnhandledExceptionQueuedEvents() {
         return getWrapped().getUnhandledExceptionQueuedEvents();
     }
diff --git a/jsf-api/src/main/java/javax/faces/context/ExternalContext.java b/jsf-api/src/main/java/javax/faces/context/ExternalContext.java
index 9d6d5f4..b47c617 100644
--- a/jsf-api/src/main/java/javax/faces/context/ExternalContext.java
+++ b/jsf-api/src/main/java/javax/faces/context/ExternalContext.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -33,6 +37,7 @@
  * only if the new code is made subject to such option by the copyright
  * holder.
  */
+
 /*
  * Licensed Material - Property of IBM 
  * (C) Copyright IBM Corp. 2002, 2003 - All Rights Reserved.
@@ -51,12 +56,13 @@ import java.net.MalformedURLException;
 import java.net.URL;
 import java.security.Principal;
 import java.util.*;
+import javax.faces.lifecycle.ClientWindow;
 
 
 /**
- * <p><span class="changed_modified_2_0">This</span> class allows the
- * Faces API to be unaware of the nature of its containing application
- * environment.  In particular, this class allows JavaServer Faces based
+ * <p><span class="changed_modified_2_0 changed_modified_2_1 changed_modified_2_2">This</span>
+ * class allows the Faces API to be unaware of the nature of its containing
+ * application environment.  In particular, this class allows JavaServer Faces based
  * appications to run in either a Servlet or a Portlet environment.</p>
  *
  * <p class="changed_modified_2_0">The documentation for this class only
@@ -118,7 +124,7 @@ public abstract class ExternalContext {
     // ---------------------------------------------------------- Public Methods
 
     /**
-     * <p class="changed_added_2_0">Adds the cookie represented by the
+     * <p class="changed_added_2_0"><span class="changed_modified_2_2">Adds</span> the cookie represented by the
      * arguments to the response.</p>
      *
      * <div class="changed_added_2_0">
@@ -195,6 +201,16 @@ public abstract class ExternalContext {
      *
      * </tr>
      *
+     * <tr class="changed_added_2_2">
+     *
+     * <td>httpOnly</td>
+     *
+     * <td>Boolean</td>
+     *
+     * <td>setHttpOnly</td>
+     *
+     * </tr>
+     *
      * </table>
      *
      * <p>The default implementation throws
@@ -234,32 +250,52 @@ public abstract class ExternalContext {
 
 
     /**
-     * <p>Dispatch a request to the specified resource to create output
+     * <p><span class="changed_modified_2_2">Dispatch</span> a request to the specified resource to create output
      * for this response.</p>
      *
      * <p><em>Servlet:</em> This must be accomplished by calling the
      * <code>javax.servlet.ServletContext</code> method
      * <code>getRequestDispatcher(path)</code>, and calling the
      * <code>forward()</code> method on the resulting object.</p>
+     * <p class="changed_added_2_2">If the call to <code>getRequestDisatcher(path)</code> 
+     * returns <code>null</code>, send a<code>ServletResponse SC_NOT_FOUND</code> 
+     * error code.</p>
      *
      * @param path Context relative path to the specified resource,
      *  which must start with a slash ("/") character
      *
      * @throws javax.faces.FacesException thrown if a <code>ServletException</code> occurs
-     * @throws IllegalArgumentException if no request dispatcher
-     *  can be created for the specified path
      * @throws IOException if an input/output error occurs
-     * @throws NullPointerException if <code>path</code>
-     *  is <code>null</code>
      */
     public abstract void dispatch(String path)
 	throws IOException;
 
 
     /**
-     * <p>Return the input URL, after performing any rewriting needed to
+     * <p><span class="changed_modified_2_2">Return</span> the input URL, after performing any rewriting needed to
      * ensure that it will correctly identify an addressable action in the
      * current application.<p>
+     * 
+     * <p class="changed_added_2_2">Encoding the {@link javax.faces.lifecycle.ClientWindow}</p>
+     *
+     * <ul>
+     * 
+     * <p class="changed_added_2_2">Call {@link javax.faces.lifecycle.ClientWindow#isClientWindowRenderModeEnabled(javax.faces.context.FacesContext) }.
+     * If the result is <code>false</code> take no further action and return
+     * the rewritten URL.  If the result is <code>true</code>, call {@link #getClientWindow()}.
+     * If the result is non-<code>null</code>, call {@link javax.faces.lifecycle.ClientWindow#getId()}
+     * and append the id to the query string of the URL, making the necessary
+     * allowances for a pre-existing query string or no query-string.</p>
+     * 
+     * <p>Call {@link javax.faces.lifecycle.ClientWindow#getQueryURLParameters}.
+     * If the result is non-{@code null}, for each parameter in the map, 
+     * unconditionally add that parameter to the URL.</p>
+     * 
+     * <p>The name
+     * of the query string parameter is given by the value of the constant
+     * {@link javax.faces.render.ResponseStateManager#CLIENT_WINDOW_URL_PARAM}.</p>
+     * 
+     * </ul>
      *
      * <p><em>Servlet:</em> This must be the value returned by the
      * <code>javax.servlet.http.HttpServletResponse</code> method
@@ -274,16 +310,16 @@ public abstract class ExternalContext {
     
 
     /**
-     * <p>Return the specified name, after prefixing it with a namespace
-     * that ensures that it will be unique within the context of a
-     * particular page.</p>
+     * <p><span class="changed_modified_2_2">Return</span> the specified
+     * name, after prefixing it with a namespace that ensures that it
+     * will be unique within the context of a particular page.</p>
      *
      * <p><em>Servlet:</em> The input value must be returned unchanged.</p>
      *
      * @param name Name to be encoded
+     * 
+     * <!-- Removed the throws clause in 2.2 -->
      *
-     * @throws NullPointerException if <code>name</code>
-     *  is <code>null</code>
      */
     public abstract String encodeNamespace(String name);
 
@@ -292,7 +328,7 @@ public abstract class ExternalContext {
      * <p>Return the input URL, after performing any rewriting needed to
      * ensure that it will correctly identify an addressable resource in the
      * current application.<p>
-     *
+     * 
      * <p><em>Servlet:</em> This must be the value returned by the
      * <code>javax.servlet.http.HttpServletResponse</code> method
      * <code>encodeURL(url)</code>.</p>
@@ -474,6 +510,37 @@ public abstract class ExternalContext {
         
     }
 
+    /**
+     * 
+     * <p class="changed_added_2_2">Return the name of the container
+     * context for this application.  </p>
+     *
+     * <p class="changed_added_2_2"><em>Servlet:</em>
+     * Return the result of calling
+     * <code>getContextPath()</code> on the
+     * <code>ServletContext</code> instance for this application.</p>
+
+     * <p>It is valid to call this method during application startup or
+     * shutdown.</p>
+     *
+     * <p>The default implementation throws
+     * <code>UnsupportedOperationException</code> and is provided for
+     * the sole purpose of not breaking existing applications that
+     * extend this class.</p>
+     *
+     *
+     * @since 2.2
+     */
+
+    public String getApplicationContextPath() {
+
+        if (defaultExternalContext != null) {
+            return defaultExternalContext.getApplicationContextPath();
+        }
+
+        throw new UnsupportedOperationException();
+        
+    }
 
 
 
@@ -1304,7 +1371,69 @@ public abstract class ExternalContext {
      *  created if there is no session associated with the current request
      */
     public abstract Object getSession(boolean create);
+    
+    /**
+     * <p class="changed_added_2_2">Return the id of the current session
+     * or the empty string if no session has been created and the 
+     * <code>create</code> parameter is <code>false</code>.</p>
+     * 
+     * <div class="changed_added_2_2">
+     *
+     * <p><em>Servlet:</em> If <code>create</code> is true, obtain
+     * a reference to the <code>HttpSession</code> for the current request
+     * (creating the session if necessary) and return its id.  If 
+     * <code>create</code> is <code>false</code>, obtain a reference to the
+     * current session, if one exists, and return its id.  If no session exists,
+     * return the empty string.</p>
+     * 
+     * </div>
+     * 
+     * @since 2.2
+     * 
+     * @param create Flag indicating whether or not a new session should be
+     *  created if there is no session associated with the current request
+     */
+    public String getSessionId(boolean create) {
+        String result = "";
+        if (defaultExternalContext != null) {
+            result = defaultExternalContext.getSessionId(create);
+        } else {
+            throw new UnsupportedOperationException();
+        }
+        return result;
+    }
 
+    /**
+     * <p class="changed_added_2_1">Returns the maximum time interval, in seconds, that
+     * the servlet container will keep this session open between client accesses.
+     * After this interval, the servlet container will invalidate the session.
+     * The maximum time interval can be set with the
+     * {@link #setSessionMaxInactiveInterval} method. </p>
+     *
+     * <p class="changed_added_2_1">A return value of zero or less indicates
+     * that the session will never timeout. </p>
+     *
+     * <p><em>Servlet:</em> This must return the result of calling
+     * <code>getMaxInactiveInterval</code> on the underlying
+     * <code>javax.servlet.http.HttpServletRequest</code> instance.</p>
+     *
+     * <p>The default implementation throws
+     * <code>UnsupportedOperationException</code> and is provided
+     * for the sole purpose of not breaking existing applications that extend
+     * this class.</p>
+     *
+     * @since 2.1
+     */
+    public int getSessionMaxInactiveInterval() {
+        int result = 0;
+        if (defaultExternalContext != null) {
+            result = defaultExternalContext.getSessionMaxInactiveInterval();
+        } else {
+            throw new UnsupportedOperationException();
+        }
+
+        return result;
+    }
 
     /**
      * <p>Return a mutable <code>Map</code> representing the session
@@ -1354,6 +1483,24 @@ public abstract class ExternalContext {
      *
      */
     public abstract Principal getUserPrincipal();
+    
+    
+    /**
+     * <p class="changed_added_2_2">Return the {@link ClientWindow} set in a preceding
+     * call to {@link #setClientWindow}, or <code>null</code> if no such call has
+     * been made.</p>
+     * 
+     * @since 2.2
+     *
+     */
+    public ClientWindow getClientWindow() {
+        if (defaultExternalContext != null) {
+            return defaultExternalContext.getClientWindow();
+        } else {
+            throw new UnsupportedOperationException();
+        }
+        
+    }
 
 
     /**
@@ -1708,6 +1855,51 @@ public abstract class ExternalContext {
 
 
     /**
+     * <p class="changed_added_2_1">Specifies the time, in seconds, between
+     * client requests before the servlet container will invalidate this
+     * session.</p>
+     *
+     * <p class="changed_added_2_1">An interval value of zero or less indicates
+     * that the session should never timeout. </p>
+     *
+     * <p><em>Servlet:</em> This must call
+     * <code>setMaxInactiveInterval</code> on the underlying
+     * <code>javax.servlet.http.HttpServletRequest</code> instance.</p>
+     *
+     * <p>The default implementation throws
+     * <code>UnsupportedOperationException</code> and is provided
+     * for the sole purpose of not breaking existing applications that extend
+     * this class.</p>
+     *
+     * @since 2.1
+     */
+    public void setSessionMaxInactiveInterval(int interval) {
+        if (defaultExternalContext != null) {
+            defaultExternalContext.setSessionMaxInactiveInterval(interval);
+        } else {
+            throw new UnsupportedOperationException();
+        }
+
+    }
+    
+    /**
+     * <p class="changed_added_2_2">Associate this instance with a {@link ClientWindow}.</p>
+     * 
+     * @param window the window with which this instance is associated.
+     * 
+     * @since 2.2
+     */
+    
+    public void setClientWindow(ClientWindow window) {
+        if (defaultExternalContext != null) {
+            defaultExternalContext.setClientWindow(window);
+        } else {
+            throw new UnsupportedOperationException();
+        }
+        
+    }
+
+    /**
      * <p class="changed_added_2_0">Flushes the buffered response content to the
      * client.</p>
      *
@@ -1760,7 +1952,8 @@ public abstract class ExternalContext {
 
     /**
      * <p class="changed_added_2_0">
-     * The purpose of this method is to generate a query string from the collection of Parameter
+     * <span class="changed_modified_2_2">The</span> purpose of this method is 
+     * to generate a query string from the collection of Parameter
      * objects provided by the parameters argument and append that query string to the baseUrl.
      * This method must be able to encode the parameters to a baseUrl that may or may not have
      * existing query parameters. The parameter values should be encoded appropriately for the
@@ -1768,6 +1961,10 @@ public abstract class ExternalContext {
      * href attribute) in a JSF response.  It's possible for an ExternalContext implementation to
      * override this method in any way that would make the URL bookmarkable in that environment.
      * </p>
+     * 
+     * <p class="changed_added_2_2">See {@link #encodeActionURL(java.lang.String)} 
+     * for the required specification of how to encode the {@link javax.faces.lifecycle.ClientWindow}.
+     * </p>
      *
      * <p>
      * The default implementation throws
@@ -1792,12 +1989,16 @@ public abstract class ExternalContext {
     }
 
     /**
-     * The purpose of this method is to generate a query string from the collection of Parameter
+     * <span class="changed_modified_2_2">The</span> purpose of this method is to generate a query string from the collection of Parameter
      * objects provided by the parameters argument and append that query string to the baseUrl.
      * This method must be able to encode the parameters to a baseUrl that may or may not have existing query parameters. The parameter values should be encoded appropriately for the
      * environment so that the resulting URL can be used as the target of a redirect. It's
      * possible for an ExternalContext implementation to override this method to accomodate the
      * definition of redirect for that environment.
+     * 
+     * <p class="changed_added_2_2">See {@link #encodeActionURL(java.lang.String)} 
+     * for the required specification of how to encode the {@link javax.faces.lifecycle.ClientWindow}.
+     * </p>
      *
      * @param baseUrl    The base URL onto which the query string generated by this method will be appended. The URL may contain query parameters.
      * @param parameters The collection of Parameter objects, representing name=value pairs that are used to produce a query string
@@ -1814,11 +2015,16 @@ public abstract class ExternalContext {
     }
 
     /**
-     * <p class="changed_added_2_0">Return the input URL, after performing
+     * <p class="changed_added_2_0"><span class="changed_modified_2_2">Return</span>
+     * the input URL, after performing
      * any rewriting needed to ensure that it can be used in a partial page
      * submission (ajax request) to correctly identify an addressable action
      * in the current application.</p>
      *
+     * <p class="changed_added_2_2">See {@link #encodeActionURL(java.lang.String)} 
+     * for the required specification of how to encode the {@link javax.faces.lifecycle.ClientWindow}.
+     * </p>
+     *
      * <div class="changed_added_2_0">
      *
      * <p><p>
@@ -1845,4 +2051,28 @@ public abstract class ExternalContext {
         throw new UnsupportedOperationException();
     }
 
+     /**
+     * <p class="changed_added_2_1">Returns a boolean indicating whether this request
+     * was made using a secure channel, such as HTTPS.
+     *
+     *
+     * <p><em>Servlet:</em> This must return the result of calling
+     * <code>isSecure</code> on the underlying
+     * <code>javax.servlet.http.HttpServletRequest</code> instance.</p>
+     *
+     * <p>The default implementation throws
+     * <code>UnsupportedOperationException</code> and is provided
+     * for the sole purpose of not breaking existing applications that extend
+     * this class.</p>
+     *
+     * @since 2.1
+     */
+    public boolean isSecure() {
+        if (defaultExternalContext != null) {
+            return defaultExternalContext.isSecure();
+        } else {
+            throw new UnsupportedOperationException();
+        }
+    }
+
 }
diff --git a/jsf-api/src/main/java/javax/faces/context/ExternalContextFactory.java b/jsf-api/src/main/java/javax/faces/context/ExternalContextFactory.java
index f65ee07..fe2624a 100644
--- a/jsf-api/src/main/java/javax/faces/context/ExternalContextFactory.java
+++ b/jsf-api/src/main/java/javax/faces/context/ExternalContextFactory.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -57,6 +61,9 @@ import javax.faces.FacesWrapper;
 
 public abstract class ExternalContextFactory implements FacesWrapper<ExternalContextFactory> {
 
+    public ExternalContextFactory() {
+    }
+
     /**
      * <p class="changed_added_2_0">If this factory has been decorated, the 
      * implementation doing the decorating may override this method to provide
diff --git a/jsf-api/src/main/java/javax/faces/context/ExternalContextWrapper.java b/jsf-api/src/main/java/javax/faces/context/ExternalContextWrapper.java
index 729fc17..3465675 100644
--- a/jsf-api/src/main/java/javax/faces/context/ExternalContextWrapper.java
+++ b/jsf-api/src/main/java/javax/faces/context/ExternalContextWrapper.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -47,10 +51,11 @@ import java.net.MalformedURLException;
 import java.security.Principal;
 
 import javax.faces.FacesWrapper;
+import javax.faces.lifecycle.ClientWindow;
 
 /**
- * <p class="changed_added_2_0">Provides a simple implementation of 
- * {@link ExternalContext} that can
+ * <p class="changed_added_2_0"><span class="changed_modified_2_2">Provides</span>
+ * a simple implementation of {@link ExternalContext} that can
  * be subclassed by developers wishing to provide specialized behavior
  * to an existing {@link ExternalContext} instance.  The default
  * implementation of all methods is to call through to the wrapped
@@ -72,6 +77,7 @@ public abstract class ExternalContextWrapper extends ExternalContext implements
      * @return the wrapped {@link ExternalContext} instance
      * @see javax.faces.FacesWrapper#getWrapped()
      */
+    @Override
     public abstract ExternalContext getWrapped();
 
 
@@ -85,6 +91,7 @@ public abstract class ExternalContextWrapper extends ExternalContext implements
      *
      * @see javax.faces.context.ExternalContext#dispatch(String)
      */
+    @Override
     public void dispatch(String path) throws IOException {
         getWrapped().dispatch(path);
     }
@@ -96,6 +103,7 @@ public abstract class ExternalContextWrapper extends ExternalContext implements
      *
      * @see javax.faces.context.ExternalContext#encodeActionURL(String)
      */
+    @Override
     public String encodeActionURL(String url) {
         return getWrapped().encodeActionURL(url);
     }
@@ -107,10 +115,18 @@ public abstract class ExternalContextWrapper extends ExternalContext implements
      *
      * @see javax.faces.context.ExternalContext#encodeNamespace(String)
      */
+    @Override
     public String encodeNamespace(String name) {
         return getWrapped().encodeNamespace(name);
     }
 
+    /**
+     * <p>The default behavior of this method is to
+     * call {@link ExternalContext#encodePartialActionURL(String)}
+     * on the wrapped {@link ExternalContext} object.</p>
+     *
+     * @see javax.faces.context.ExternalContext#encodePartialActionURL(String)
+     */
     @Override
     public String encodePartialActionURL(String url) {
         return getWrapped().encodePartialActionURL(url);
@@ -124,6 +140,7 @@ public abstract class ExternalContextWrapper extends ExternalContext implements
      *
      * @see javax.faces.context.ExternalContext#encodeResourceURL(String)
      */
+    @Override
     public String encodeResourceURL(String url) {
         return getWrapped().encodeResourceURL(url);
     }
@@ -135,17 +152,33 @@ public abstract class ExternalContextWrapper extends ExternalContext implements
      *
      * @see javax.faces.context.ExternalContext#getApplicationMap()
      */
+    @Override
     public Map<String, Object> getApplicationMap() {
         return getWrapped().getApplicationMap();
     }
 
     /**
+     * <p class="changed_added_2_2">The default behavior of this method is to
+     * call {@link ExternalContext#getApplicationContextPath}
+     * on the wrapped {@link ExternalContext} object.</p>
+     *
+     * @see javax.faces.context.ExternalContext#getApplicationContextPath()
+     */
+    @Override
+    public String getApplicationContextPath() {
+        return getWrapped().getApplicationContextPath();
+    }
+    
+    
+
+    /**
      * <p>The default behavior of this method is to
      * call {@link ExternalContext#getAuthType}
      * on the wrapped {@link ExternalContext} object.</p>
      *
      * @see javax.faces.context.ExternalContext#getAuthType()
      */
+    @Override
     public String getAuthType() {
         return getWrapped().getAuthType();
     }
@@ -157,6 +190,7 @@ public abstract class ExternalContextWrapper extends ExternalContext implements
      *
      * @see javax.faces.context.ExternalContext#getContext()
      */
+    @Override
     public Object getContext() {
         return getWrapped().getContext();
     }
@@ -168,6 +202,7 @@ public abstract class ExternalContextWrapper extends ExternalContext implements
      *
      * @see javax.faces.context.ExternalContext#getInitParameter(String)
      */
+    @Override
     public String getInitParameter(String name) {
         return getWrapped().getInitParameter(name);
     }
@@ -179,6 +214,7 @@ public abstract class ExternalContextWrapper extends ExternalContext implements
      *
      * @see javax.faces.context.ExternalContext#getInitParameterMap()
      */
+    @Override
     public Map getInitParameterMap() {
         return getWrapped().getInitParameterMap();
     }
@@ -190,6 +226,7 @@ public abstract class ExternalContextWrapper extends ExternalContext implements
      *
      * @see javax.faces.context.ExternalContext#getRemoteUser()
      */
+    @Override
     public String getRemoteUser() {
         return getWrapped().getRemoteUser();
     }
@@ -201,6 +238,7 @@ public abstract class ExternalContextWrapper extends ExternalContext implements
      *
      * @see javax.faces.context.ExternalContext#getRequest()
      */
+    @Override
     public Object getRequest() {
         return getWrapped().getRequest();
     }
@@ -212,6 +250,7 @@ public abstract class ExternalContextWrapper extends ExternalContext implements
      *
      * @see javax.faces.context.ExternalContext#getRequestContextPath() 
      */
+    @Override
     public String getRequestContextPath() {
         return getWrapped().getRequestContextPath();
     }
@@ -223,6 +262,7 @@ public abstract class ExternalContextWrapper extends ExternalContext implements
      *
      * @see javax.faces.context.ExternalContext#getRequestCookieMap()
      */
+    @Override
     public Map<String, Object> getRequestCookieMap() {
         return getWrapped().getRequestCookieMap();
     }
@@ -234,6 +274,7 @@ public abstract class ExternalContextWrapper extends ExternalContext implements
      *
      * @see javax.faces.context.ExternalContext#getRequestHeaderMap()
      */
+    @Override
     public Map<String, String> getRequestHeaderMap() {
         return getWrapped().getRequestHeaderMap();
     }
@@ -245,6 +286,7 @@ public abstract class ExternalContextWrapper extends ExternalContext implements
      *
      * @see javax.faces.context.ExternalContext#getRequestHeaderValuesMap()
      */
+    @Override
     public Map<String, String[]> getRequestHeaderValuesMap() {
         return getWrapped().getRequestHeaderValuesMap();
     }
@@ -256,6 +298,7 @@ public abstract class ExternalContextWrapper extends ExternalContext implements
      *
      * @see javax.faces.context.ExternalContext#getRequestLocale() 
      */
+    @Override
     public Locale getRequestLocale() {
         return getWrapped().getRequestLocale();
     }
@@ -267,6 +310,7 @@ public abstract class ExternalContextWrapper extends ExternalContext implements
      *
      * @see javax.faces.context.ExternalContext#getRequestLocales()
      */
+    @Override
     public Iterator<Locale> getRequestLocales() {
         return getWrapped().getRequestLocales();
     }
@@ -278,6 +322,7 @@ public abstract class ExternalContextWrapper extends ExternalContext implements
      *
      * @see javax.faces.context.ExternalContext#getRequestMap() 
      */
+    @Override
     public Map<String, Object> getRequestMap() {
         return getWrapped().getRequestMap();
     }
@@ -289,6 +334,7 @@ public abstract class ExternalContextWrapper extends ExternalContext implements
      *
      * @see javax.faces.context.ExternalContext#getRequestParameterMap()
      */
+    @Override
     public Map<String, String> getRequestParameterMap() {
         return getWrapped().getRequestParameterMap();
     }
@@ -393,15 +439,70 @@ public abstract class ExternalContextWrapper extends ExternalContext implements
     }
 
     /**
+     * <p class="changed_added_2_2">The default behavior of this method is to
+     * call {@link ExternalContext#getSessionId(boolean)}
+     * on the wrapped {@link ExternalContext} object.</p>
+     * 
+     * @since 2.2
+     *
+     * @see javax.faces.context.ExternalContext#getSessionId(boolean)
+     */
+    @Override
+    public String getSessionId(boolean create) {
+        return getWrapped().getSessionId(create);
+    }
+
+    /**
      * <p>The default behavior of this method is to
-     * call {@link ExternalContext#getAuthType}
+     * call {@link ExternalContext#getSessionMap()}
      * on the wrapped {@link ExternalContext} object.</p>
      *
-     * @see javax.faces.context.ExternalContext#getAuthType()
+     * @see javax.faces.context.ExternalContext#getSessionMap()
      */
     public Map<String, Object> getSessionMap() {
         return getWrapped().getSessionMap();
     }
+    
+    /**
+     * <p class="changed_added_2_2">The default behavior of this method is to
+     * call {@link ExternalContext#getSessionMaxInactiveInterval()}
+     * on the wrapped {@link ExternalContext} object.</p>
+     *
+     * @see javax.faces.context.ExternalContext#getSessionMaxInactiveInterval()
+     */
+    @Override
+    public int getSessionMaxInactiveInterval() {
+        return getWrapped().getSessionMaxInactiveInterval();
+    }
+    
+    /**
+     * <p class="changed_added_2_2">The default behavior of this method is to
+     * call {@link ExternalContext#setSessionMaxInactiveInterval(int)}
+     * on the wrapped {@link ExternalContext} object.</p>
+     *
+     * @see javax.faces.context.ExternalContext#setSessionMaxInactiveInterval(int)
+     */
+    @Override
+    public void setSessionMaxInactiveInterval(int interval) {
+        getWrapped().setSessionMaxInactiveInterval(interval);
+    }
+    
+    /**
+     * <p class="changed_added_2_2">The default behavior of this method is to
+     * call {@link ExternalContext#setClientWindow}
+     * on the wrapped {@link ExternalContext} object.</p>
+     * 
+     * @since 2.2
+     * 
+     * @param window the window associated with this request.
+     */
+
+    @Override
+    public void setClientWindow(ClientWindow window) {
+        getWrapped().setClientWindow(window);
+    }
+    
+    
 
     /**
      * <p>The default behavior of this method is to
@@ -410,17 +511,33 @@ public abstract class ExternalContextWrapper extends ExternalContext implements
      *
      * @see javax.faces.context.ExternalContext#getUserPrincipal()
      */
+    @Override
     public Principal getUserPrincipal() {
         return getWrapped().getUserPrincipal();
     }
 
     /**
+     * <p class="changed_added_2_2">The default behavior of this method is to
+     * call {@link ExternalContext#getClientWindow}
+     * on the wrapped {@link ExternalContext} object.</p>
+     * 
+     * @since 2.2
+     *
+     * @see javax.faces.context.ExternalContext#getClientWindow()
+     */
+    @Override
+    public ClientWindow getClientWindow() {
+        return getWrapped().getClientWindow();
+    }
+
+    /**
      * <p>The default behavior of this method is to
      * call {@link ExternalContext#isUserInRole(String)}
      * on the wrapped {@link ExternalContext} object.</p>
      *
      * @see javax.faces.context.ExternalContext#isUserInRole(String)
      */
+    @Override
     public boolean isUserInRole(String role) {
         return getWrapped().isUserInRole(role);
     }
@@ -432,6 +549,7 @@ public abstract class ExternalContextWrapper extends ExternalContext implements
      *
      * @see javax.faces.context.ExternalContext#log(String)
      */
+    @Override
     public void log(String message) {
         getWrapped().log(message);
     }
@@ -443,6 +561,7 @@ public abstract class ExternalContextWrapper extends ExternalContext implements
      *
      * @see javax.faces.context.ExternalContext#log(String, Throwable)
      */
+    @Override
     public void log(String message, Throwable exception) {
         getWrapped().log(message, exception);
     }
@@ -454,6 +573,7 @@ public abstract class ExternalContextWrapper extends ExternalContext implements
      *
      * @see javax.faces.context.ExternalContext#redirect(String)
      */
+    @Override
     public void redirect(String url) throws IOException {
         getWrapped().redirect(url);
     }
@@ -760,6 +880,17 @@ public abstract class ExternalContextWrapper extends ExternalContext implements
     public boolean isResponseCommitted() {
         return getWrapped().isResponseCommitted();
     }
+    
+    /**
+     * <p class="changed_added_2_2">The default behavior of this method is to
+     * call {@link ExternalContext#isSecure}
+     * on the wrapped {@link ExternalContext} object.</p>
+     *
+     */
+    @Override
+    public boolean isSecure() {
+        return getWrapped().isSecure();
+    }
 
     /**
      * <p>The default behavior of this method is to
diff --git a/jsf-api/src/main/java/javax/faces/context/FacesContext.java b/jsf-api/src/main/java/javax/faces/context/FacesContext.java
index 5500b13..9816cc4 100644
--- a/jsf-api/src/main/java/javax/faces/context/FacesContext.java
+++ b/jsf-api/src/main/java/javax/faces/context/FacesContext.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -37,28 +41,33 @@
 package javax.faces.context;
 
 
+import java.util.Collections;
+import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
 
 import javax.faces.application.Application;
 import javax.faces.application.FacesMessage;
 import javax.faces.application.ProjectStage;
 import javax.faces.application.FacesMessage.Severity;
-import javax.faces.component.UIComponent;
 import javax.faces.component.UIViewRoot;
 import javax.faces.render.RenderKit;
 
 import javax.el.ELContext;
+import javax.faces.FactoryFinder;
+import javax.faces.component.UINamingContainer;
 import javax.faces.event.PhaseId;
 
 
 /**
- * <p><strong class="changed_modified_2_0">FacesContext</strong>
- * contains all of the per-request state information related to the
- * processing of a single JavaServer Faces request, and the rendering of
- * the corresponding response.  It is passed to, and potentially
- * modified by, each phase of the request processing lifecycle.</p>
+ * <p><strong class="changed_modified_2_0 changed_modified_2_1
+ * changed_modified_2_2">FacesContext</strong> contains all of the
+ * per-request state information related to the processing of a single
+ * JavaServer Faces request, and the rendering of the corresponding
+ * response.  It is passed to, and potentially modified by, each phase
+ * of the request processing lifecycle.</p>
  *
  * <p>A {@link FacesContext} instance is associated with a particular
  * request at the beginning of request processing, by a call to the
@@ -78,6 +87,30 @@ public abstract class FacesContext {
     @SuppressWarnings({"UnusedDeclaration"})
     private FacesContext defaultFacesContext;
     private boolean processingEvents = true;
+    private boolean isCreatedFromValidFactory = true;
+
+    private static ConcurrentHashMap threadInitContext = new ConcurrentHashMap(2);
+    private static ConcurrentHashMap initContextServletContext = new ConcurrentHashMap(2);
+
+    public FacesContext() {
+        Thread curThread = Thread.currentThread();
+        StackTraceElement[] callstack = curThread.getStackTrace();
+        if (null != callstack) {
+            String declaringClassName = callstack[3].getClassName();
+            try {
+                ClassLoader curLoader = curThread.getContextClassLoader();
+                Class declaringClass = curLoader.loadClass(declaringClassName);
+                if (!FacesContextFactory.class.isAssignableFrom(declaringClass)) {
+                    isCreatedFromValidFactory = false;
+                }
+            } catch (ClassNotFoundException cnfe) {
+
+            }
+        }
+
+    }
+
+
 
     // -------------------------------------------------------------- Properties
 
@@ -134,10 +167,19 @@ public abstract class FacesContext {
         if (defaultFacesContext != null) {
             return defaultFacesContext.getAttributes();
         }
+        if (!isCreatedFromValidFactory) {
+            if (attributesForInvalidFactoryConstruction == null) {
+                attributesForInvalidFactoryConstruction = new HashMap<Object, Object>();
+            }
+            return attributesForInvalidFactoryConstruction;
+        }
         throw new UnsupportedOperationException();
  
     }
 
+    private Map<Object, Object> attributesForInvalidFactoryConstruction;
+
+
     /**
      * <p class="changed_added_2_0">Return the {@link PartialViewContext}
      * for this request.  The {@link PartialViewContext} is used to control 
@@ -158,10 +200,21 @@ public abstract class FacesContext {
         if (defaultFacesContext != null) {
             return defaultFacesContext.getPartialViewContext();
         }
+        if (!isCreatedFromValidFactory) {
+            if (partialViewContextForInvalidFactoryConstruction == null) {
+                PartialViewContextFactory f = (PartialViewContextFactory)
+                      FactoryFinder.getFactory(FactoryFinder.PARTIAL_VIEW_CONTEXT_FACTORY);
+                partialViewContextForInvalidFactoryConstruction = f.getPartialViewContext(FacesContext.getCurrentInstance());
+            }
+            return partialViewContextForInvalidFactoryConstruction;
+        }
         throw new UnsupportedOperationException();
 
     }
 
+    private PartialViewContext partialViewContextForInvalidFactoryConstruction = null;
+
+
 
     /**
      * <p>Return an <code>Iterator</code> over the client identifiers for
@@ -275,7 +328,7 @@ public abstract class FacesContext {
     /**
      * <p>Return the maximum severity level recorded on any
      * {@link javax.faces.application.FacesMessage}s that has been queued, whether or not they are
-     * associated with any specific {@link UIComponent}.  If no such messages
+     * associated with any specific {@link javax.faces.component.UIComponent}.  If no such messages
      * have been queued, return <code>null</code>.</p>
      *
      * @throws IllegalStateException if this method is called after
@@ -375,6 +428,18 @@ public abstract class FacesContext {
      *  this instance has been released
      */
     public abstract Iterator<FacesMessage> getMessages(String clientId);
+    
+    /**
+     * <p class="changed_added_2_2">Return the result of calling {@link
+     * UINamingContainer#getSeparatorChar}, passing <code>this</code> as
+     * the argument.  Note that this enables accessing the value of this
+     * property from the EL expression
+     * <code>#{facesContext.namingContainerSeparatorChar}</code>.</p>
+     */
+
+    public char getNamingContainerSeparatorChar() {
+        return UINamingContainer.getSeparatorChar(this);
+    }
 
 
     /**
@@ -408,6 +473,56 @@ public abstract class FacesContext {
      *  this instance has been released
      */
     public abstract boolean getResponseComplete();
+    
+    
+    /**
+     * <p class="changed_added_2_2">Return the list of resource library 
+     * contracts that have been calculated
+     * to be appropriate for use with this view, or an empty list if there are 
+     * no such resource library contracts.  The list returned by this method
+     * must be immutable.  For backward compatibility with implementations
+     * of the specification prior to when this method was introduced, an
+     * implementation is provided that returns an empty list.  Implementations
+     * compliant with the version in which this method was introduced must
+     * implement this method as specified.</p>
+     * 
+     * @throws IllegalStateException if this method is called after
+     *  this instance has been released
+     *
+     * @since 2.2 
+     */
+    public List<String> getResourceLibraryContracts() {
+        return Collections.emptyList();
+    }
+    
+    /**
+     * <p class="changed_added_2_2">Set the resource library contracts
+     * calculated as valid to use with this view.  The implementation must 
+     * copy the contents of the incoming {@code List} into an immutable 
+     * {@code List} for return from {@link #getResourceLibraryContracts}.
+     * If the argument is {@code null} or empty, the action taken is the same as if
+     * the argument is {@code null}: a subsequent call to {@code getResourceLibraryContracts}
+     * returns {@code null}.  This method may only be called during the 
+     * processing of {@link javax.faces.view.ViewDeclarationLanguage#createView}
+     * and during the VDL tag handler for the tag corresponding to
+     * an instance of {@code UIViewRoot}.  For backward compatibility with implementations
+     * of the specification prior to when this method was introduced, an
+     * implementation is provided that takes no action.  Implementations
+     * compliant with the version in which this method was introduced must
+     * implement this method as specified.
+     * 
+     * </p>
+     * 
+     * @param contracts The new contracts to be returned, as an immutable 
+     * {@code List}. from a subsequent call to {@link #getResourceLibraryContracts}.
+     * 
+     * @throws IllegalStateException if this method is called after
+     *  this instance has been released
+     *
+     */
+    
+    public void setResourceLibraryContracts(List<String> contracts) {
+    }    
 
     /**
      * <p class="changed_added_2_0">Return <code>true</code> if the <code>validationFailed()</code>
@@ -495,11 +610,19 @@ public abstract class FacesContext {
 
 
     /**
-     * <p><span class="changed_modified_2_0">Set</span> the root
-     * component that is associated with this request.  This method can
-     * only be called by the application handler (or a class that the
-     * handler calls), and only during the <em>Invoke Application</em>
-     * phase of the request processing lifecycle.</p>
+     * <p><span class="changed_modified_2_0
+     * changed_modified_2_1">Set</span> the root component that is
+     * associated with this request.
+
+     * <p class="changed_modified_2_1">This method can be called by the
+     * application handler (or a class that the handler calls), during
+     * the <em>Invoke Application</em> phase of the request processing
+     * lifecycle and during the <em>Restore View</em> phase of the
+     * request processing lifecycle (especially when a new root
+     * component is created).  In the present version of the
+     * specification, implementations are not required to enforce this
+     * restriction, though a future version of the specification may
+     * require enforcement.</p>
 
      * <p class="changed_added_2_0">If the current
      * <code>UIViewRoot</code> is non-<code>null</code>, and calling
@@ -539,6 +662,21 @@ public abstract class FacesContext {
      */
     public abstract void addMessage(String clientId, FacesMessage message);
 
+    /**
+     * <p class="changed_added_2_1"> 
+     * Return a flag indicating if the resources associated with this 
+     * <code>FacesContext</code> instance have been released.</p>
+     * @return <code>true</code> if the resources have been released.
+     *
+     * @since 2.1
+     */  
+    public boolean isReleased() {
+        if (defaultFacesContext != null) {
+            return defaultFacesContext.isReleased();
+        }
+
+        throw new UnsupportedOperationException();
+    }
 
     /**
      * <p><span class="changed_modified_2_0">Release</span> any
@@ -652,7 +790,9 @@ public abstract class FacesContext {
         if (defaultFacesContext != null) {
             return defaultFacesContext.getCurrentPhaseId();
         }
-
+        if (!isCreatedFromValidFactory) {
+            return this.currentPhaseIdForInvalidFactoryConstruction;
+        }
         throw new UnsupportedOperationException();
 
     }
@@ -674,12 +814,17 @@ public abstract class FacesContext {
 
         if (defaultFacesContext != null) {
             defaultFacesContext.setCurrentPhaseId(currentPhaseId);
+        } else if (!isCreatedFromValidFactory) {
+            this.currentPhaseIdForInvalidFactoryConstruction = currentPhaseId;
         } else {
             throw new UnsupportedOperationException();
         }
 
     }
 
+    private PhaseId currentPhaseIdForInvalidFactoryConstruction;
+
+
 
     /**
      * <p class="changed_added_2_0">Allows control of wheter or not the runtime
@@ -749,9 +894,13 @@ public abstract class FacesContext {
      * have this designation is undefined.</p>
      */
     public static FacesContext getCurrentInstance() {
+        FacesContext facesContext = instance.get();
 
-        return (instance.get());
+        if (null == facesContext) {
+            facesContext = (FacesContext)threadInitContext.get(Thread.currentThread());
 
+        }
+        return facesContext;
     }
 
 
diff --git a/jsf-api/src/main/java/javax/faces/context/FacesContextFactory.java b/jsf-api/src/main/java/javax/faces/context/FacesContextFactory.java
index 5dda195..eaa3063 100644
--- a/jsf-api/src/main/java/javax/faces/context/FacesContextFactory.java
+++ b/jsf-api/src/main/java/javax/faces/context/FacesContextFactory.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -42,7 +46,7 @@ import javax.faces.lifecycle.Lifecycle;
 
 
 /**
- * <p><strong class="changed_modified_2_0">FacesContextFactory</strong> 
+ * <p><strong class="changed_modified_2_0 changed_modified_2_2">FacesContextFactory</strong> 
  * is a factory object that creates
  * (if needed) and returns new {@link FacesContext} instances, initialized
  * for the processing of the specified request and response objects.
@@ -63,6 +67,9 @@ import javax.faces.lifecycle.Lifecycle;
 
 public abstract class FacesContextFactory implements FacesWrapper<FacesContextFactory> {
 
+    public FacesContextFactory() {
+    }
+
     /**
      * <p class="changed_added_2_0">If this factory has been decorated, the 
      * implementation doing the decorating may override this method to provide
@@ -77,7 +84,7 @@ public abstract class FacesContextFactory implements FacesWrapper<FacesContextFa
     }
 
     /**
-     * <p><span class="changed_modified_2_0">Create</span> (if needed)
+     * <p><span class="changed_modified_2_0 changed_modified_2_2">Create</span> (if needed)
      * and return a {@link FacesContext} instance that is initialized
      * for the processing of the specified request and response objects,
      * utilizing the specified {@link Lifecycle} instance, for this web
@@ -99,6 +106,12 @@ public abstract class FacesContextFactory implements FacesWrapper<FacesContextFa
      * to {@link FacesContext#getExceptionHandler} on the returned
      * <code>FacesContext</code> instance.</p>
      *
+     * <p class="changed_added_2_2">The default implementation must call
+     * {@link javax.faces.lifecycle.ClientWindowFactory#getClientWindow} and make it
+     * so the return from that method is what gets returned from a call
+     * to {@link ExternalContext#getClientWindow()} on the returned
+     * <code>ExternalContext</code> instance.</p>
+     *
      * @param context In servlet environments, the
      * <code>ServletContext</code> that is associated with this web
      * application
diff --git a/jsf-api/src/main/java/javax/faces/context/FacesContextWrapper.java b/jsf-api/src/main/java/javax/faces/context/FacesContextWrapper.java
index 2ef3ce1..9711812 100644
--- a/jsf-api/src/main/java/javax/faces/context/FacesContextWrapper.java
+++ b/jsf-api/src/main/java/javax/faces/context/FacesContextWrapper.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -50,11 +54,12 @@ import javax.faces.application.ProjectStage;
 import javax.el.ELContext;
 
 /**
- * <p>Provides a simple implementation of {@link FacesContext} that can
- * be subclassed by developers wishing to provide specialized behavior
- * to an existing {@link FacesContext} instance.  The default
- * implementation of all methods is to call through to the wrapped
- * {@link FacesContext} instance.</p>
+ * <p><span class="changed_modified_2_1 changed_modified_2_2">Provides</span> a simple
+ * implementation of {@link FacesContext} that can be subclassed by
+ * developers wishing to provide specialized behavior to an existing
+ * {@link FacesContext} instance.  The default implementation of all
+ * methods is to call through to the wrapped {@link FacesContext}
+ * instance.</p>
  *
  * <p>Usage: extend this class and override {@link #getWrapped} to
  * return the instance being wrapping.</p>
@@ -71,6 +76,7 @@ public abstract class FacesContextWrapper extends FacesContext implements FacesW
      * @return the wrapped {@link FacesContext} instance
      * @see javax.faces.FacesWrapper#getWrapped()
      */
+    @Override
     public abstract FacesContext getWrapped();
 
 
@@ -84,6 +90,7 @@ public abstract class FacesContextWrapper extends FacesContext implements FacesW
      *
      * @see javax.faces.context.FacesContext#getApplication()
      */
+    @Override
     public Application getApplication() {
         return getWrapped().getApplication();
     }
@@ -95,6 +102,7 @@ public abstract class FacesContextWrapper extends FacesContext implements FacesW
      *
      * @see FacesContext#getClientIdsWithMessages()
      */
+    @Override
     public Iterator<String> getClientIdsWithMessages() {
         return getWrapped().getClientIdsWithMessages();
     }
@@ -106,6 +114,7 @@ public abstract class FacesContextWrapper extends FacesContext implements FacesW
      *
      * @see javax.faces.context.FacesContext#getExternalContext()
      */
+    @Override
     public ExternalContext getExternalContext() {
         return getWrapped().getExternalContext();
     }
@@ -117,6 +126,7 @@ public abstract class FacesContextWrapper extends FacesContext implements FacesW
      *
      * @see javax.faces.context.FacesContext#getMaximumSeverity()
      */
+    @Override
     public FacesMessage.Severity getMaximumSeverity() {
         return getWrapped().getMaximumSeverity();
     }
@@ -128,6 +138,7 @@ public abstract class FacesContextWrapper extends FacesContext implements FacesW
      *
      * @see javax.faces.context.FacesContext#getMessages()
      */
+    @Override
     public Iterator<FacesMessage> getMessages() {
         return getWrapped().getMessages();
     }
@@ -139,6 +150,7 @@ public abstract class FacesContextWrapper extends FacesContext implements FacesW
      *
      * @see javax.faces.context.FacesContext#getMessages(String)
      */
+    @Override
     public Iterator<FacesMessage> getMessages(String clientId) {
         return getWrapped().getMessages(clientId);
     }
@@ -150,6 +162,7 @@ public abstract class FacesContextWrapper extends FacesContext implements FacesW
      *
      * @see javax.faces.context.FacesContext#getRenderKit()
      */
+    @Override
     public RenderKit getRenderKit() {
         return getWrapped().getRenderKit();
     }
@@ -161,17 +174,43 @@ public abstract class FacesContextWrapper extends FacesContext implements FacesW
      *
      * @see javax.faces.context.FacesContext#getRenderResponse()
      */
+    @Override
     public boolean getRenderResponse() {
         return getWrapped().getRenderResponse();
     }
 
     /**
      * <p>The default behavior of this method is to
+     * call {@link FacesContext#getResourceLibraryContracts}
+     * on the wrapped {@link FacesContext} object.</p>
+     *
+     * @see javax.faces.context.FacesContext#getResourceLibraryContracts
+     */
+    @Override
+    public List<String> getResourceLibraryContracts() {
+        return getWrapped().getResourceLibraryContracts();
+    }
+
+    /**
+     * <p>The default behavior of this method is to
+     * call {@link FacesContext#setResourceLibraryContracts}
+     * on the wrapped {@link FacesContext} object.</p>
+     *
+     * @see javax.faces.context.FacesContext#setResourceLibraryContracts
+     */
+    @Override
+    public void setResourceLibraryContracts(List<String> contracts) {
+        getWrapped().setResourceLibraryContracts(contracts);
+    }
+    
+    /**
+     * <p>The default behavior of this method is to
      * call {@link FacesContext#getResponseComplete()}
      * on the wrapped {@link FacesContext} object.</p>
      *
      * @see javax.faces.context.FacesContext#getResponseComplete()
      */
+    @Override
     public boolean getResponseComplete() {
         return getWrapped().getResponseComplete();
     }
@@ -183,6 +222,7 @@ public abstract class FacesContextWrapper extends FacesContext implements FacesW
      *
      * @see javax.faces.context.FacesContext#getResponseStream()
      */
+    @Override
     public ResponseStream getResponseStream() {
         return getWrapped().getResponseStream();
     }
@@ -194,6 +234,7 @@ public abstract class FacesContextWrapper extends FacesContext implements FacesW
      *
      * @see javax.faces.context.FacesContext#setResponseStream(ResponseStream)
      */
+    @Override
     public void setResponseStream(ResponseStream responseStream) {
         getWrapped().setResponseStream(responseStream);
     }
@@ -205,6 +246,7 @@ public abstract class FacesContextWrapper extends FacesContext implements FacesW
      *
      * @see javax.faces.context.FacesContext#getResponseWriter()
      */
+    @Override
     public ResponseWriter getResponseWriter() {
         return getWrapped().getResponseWriter();
     }
@@ -216,6 +258,7 @@ public abstract class FacesContextWrapper extends FacesContext implements FacesW
      *
      * @see javax.faces.context.FacesContext#setResponseWriter(ResponseWriter)
      */
+    @Override
     public void setResponseWriter(ResponseWriter responseWriter) {
         getWrapped().setResponseWriter(responseWriter);
     }
@@ -227,6 +270,7 @@ public abstract class FacesContextWrapper extends FacesContext implements FacesW
      *
      * @see javax.faces.context.FacesContext#getViewRoot()
      */
+    @Override
     public UIViewRoot getViewRoot() {
         return getWrapped().getViewRoot();
     }
@@ -238,6 +282,7 @@ public abstract class FacesContextWrapper extends FacesContext implements FacesW
      *
      * @see javax.faces.context.FacesContext#setViewRoot(UIViewRoot)
      */
+    @Override
     public void setViewRoot(UIViewRoot root) {
         getWrapped().setViewRoot(root);
     }
@@ -249,17 +294,34 @@ public abstract class FacesContextWrapper extends FacesContext implements FacesW
      *
      * @see javax.faces.context.FacesContext#addMessage(String, FacesMessage)
      */
+    @Override
     public void addMessage(String clientId, FacesMessage message) {
         getWrapped().addMessage(clientId, message);
     }
 
     /**
+     * <p class="changed_added_2_1">The default behavior of this method
+     * is to call {@link FacesContext#isReleased} on the wrapped {@link
+     * FacesContext} object.</p>
+     *
+     * @see javax.faces.context.FacesContext#isReleased
+
+     * @since 2.1
+     */
+    @Override
+    public boolean isReleased() {
+	return getWrapped().isReleased();
+    }
+
+
+    /**
      * <p>The default behavior of this method is to
      * call {@link FacesContext#release()}
      * on the wrapped {@link FacesContext} object.</p>
      *
      * @see javax.faces.context.FacesContext#release()
      */
+    @Override
     public void release() {
         getWrapped().release();
     }
@@ -271,6 +333,7 @@ public abstract class FacesContextWrapper extends FacesContext implements FacesW
      *
      * @see javax.faces.context.FacesContext#renderResponse()
      */
+    @Override
     public void renderResponse() {
         getWrapped().renderResponse();
     }
@@ -282,6 +345,7 @@ public abstract class FacesContextWrapper extends FacesContext implements FacesW
      *
      * @see javax.faces.context.FacesContext#responseComplete()
      */
+    @Override
     public void responseComplete() {
         getWrapped().responseComplete();
     }
@@ -299,6 +363,20 @@ public abstract class FacesContextWrapper extends FacesContext implements FacesW
     }
 
     /**
+     * <p class="changed_added_2_2">The default behavior of this method
+     * is to call {@link FacesContext#getNamingContainerSeparatorChar()}
+     * on the wrapped {@link FacesContext} object.</p>
+     *
+     * @see javax.faces.context.FacesContext#getNamingContainerSeparatorChar()
+     */
+    @Override
+    public char getNamingContainerSeparatorChar() {
+        return getWrapped().getNamingContainerSeparatorChar();
+    }
+    
+    
+
+    /**
      * <p>The default behavior of this method is to
      * call {@link FacesContext#getPartialViewContext()} ()}
      * on the wrapped {@link FacesContext} object.</p>
@@ -394,7 +472,7 @@ public abstract class FacesContextWrapper extends FacesContext implements FacesW
     public PhaseId getCurrentPhaseId() {
         return getWrapped().getCurrentPhaseId();
     }
-
+    
     /**
      * <p>The default behavior of this method is to
      * call {@link FacesContext#setCurrentPhaseId(PhaseId)}
diff --git a/jsf-api/src/main/java/javax/faces/context/Flash.java b/jsf-api/src/main/java/javax/faces/context/Flash.java
index 91eb9fc..450b64a 100644
--- a/jsf-api/src/main/java/javax/faces/context/Flash.java
+++ b/jsf-api/src/main/java/javax/faces/context/Flash.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -37,9 +41,12 @@
 package javax.faces.context;
 
 import java.util.Map;
+import javax.faces.event.PostKeepFlashValueEvent;
+import javax.faces.event.PostPutFlashValueEvent;
 
 /**
- * <p class="changed_added_2_0">The <strong>Flash</strong> concept is
+ * <p class="changed_added_2_0"><span class="changed_modified_2_2">The</span>
+ * <strong>Flash</strong> concept is
  * taken from <a target="_"
  * href="http://api.rubyonrails.com/classes/ActionController/Flash.html">Ruby
  * on Rails</a> and provides a way to pass temporary objects between the
@@ -109,7 +116,7 @@ import java.util.Map;
  *
 <code><pre>
 <html xmlns="http://www.w3.org/1999/xhtml"
-      xmlns:c="http://java.sun.com/jsp/jstl/core">
+      xmlns:c="http://xmlns.jcp.org/jsp/jstl/core">
 <!-- extra code removed -->
   <c:set target="#{flash}" property="foo" value="fooValue" />
 
@@ -119,7 +126,7 @@ import java.util.Map;
  *
 <code><pre>
 <html xmlns="http://www.w3.org/1999/xhtml"
-      xmlns:h="http://java.sun.com/jsf/html">
+      xmlns:h="http://xmlns.jcp.org/jsf/html">
 <!-- extra code removed -->
   <h:outputText value="#{flash.foo}" /> will be "fooValue"
   without the quotes.
@@ -150,8 +157,8 @@ import java.util.Map;
 
 <code><pre>
 <html xmlns="http://www.w3.org/1999/xhtml"
-      xmlns:f="http://java.sun.com/jsf/core"
-      xmlns:h="http://java.sun.com/jsf/html">
+      xmlns:f="http://xmlns.jcp.org/jsf/core"
+      xmlns:h="http://xmlns.jcp.org/jsf/html">
 <f:metadata>
   <f:viewParam name="foo" id="foo" value="#{flash.now.foo}" />
 </f:metadata>
@@ -175,7 +182,14 @@ foo = #{flash.foo}
  */
 public abstract class Flash implements Map<String, Object> {
     
-
+    /** <p class="changed_added_2_2">Because <code>null</code>
+     * values are not allowed as the source for subclasses of <code>EventObject</code>,
+     * such as {@link PostKeepFlashValueEvent} and {@link PostPutFlashValueEvent}, 
+     * this value is substituted for <code>null</code> as the source in the case when a 
+     * <code>null</code> value is put to or kept in the flash.
+     */
+    public static final String NULL_VALUE = "javax.faces.context.Flash.NULL_VALUE";
+    
     /**
      * <p class="changed_added_2_0">Return the value of this JavaBeans
      * property for the flash for this session.  This value determines
@@ -199,7 +213,7 @@ public abstract class Flash implements Map<String, Object> {
      *
 <code><pre>
 <html xmlns="http://www.w3.org/1999/xhtml"
-      xmlns:c="http://java.sun.com/jsp/jstl/core">
+      xmlns:c="http://xmlns.jcp.org/jsp/jstl/core">
 <!-- extra code removed -->
   <c:set target="#{flash}" property="keepMessages" value="true" />
 
@@ -209,7 +223,7 @@ public abstract class Flash implements Map<String, Object> {
      *
 <code><pre>
 <html xmlns="http://www.w3.org/1999/xhtml"
-      xmlns:h="http://java.sun.com/jsf/html">
+      xmlns:h="http://xmlns.jcp.org/jsf/html">
 <!-- extra code removed -->
   <h:messages /> Any messages present on the first page must be displayed on 
   this page.
@@ -277,7 +291,7 @@ public abstract class Flash implements Map<String, Object> {
      *
 <code><pre>
 <html xmlns="http://www.w3.org/1999/xhtml"
-      xmlns:c="http://java.sun.com/jsp/jstl/core">
+      xmlns:c="http://xmlns.jcp.org/jsp/jstl/core">
 <!-- extra code removed -->
   <c:set target="#{flash}" property="redirect" value="true" />
 
@@ -310,7 +324,7 @@ public abstract class Flash implements Map<String, Object> {
      *
 <code><pre>
 <html xmlns="http://www.w3.org/1999/xhtml"
-      xmlns:c="http://java.sun.com/jsp/jstl/core">
+      xmlns:c="http://xmlns.jcp.org/jsp/jstl/core">
 <!-- extra code removed -->
   <c:set target="#{flash.now}" property="bar" value="barValue" />
 
diff --git a/jsf-api/src/main/java/javax/faces/context/FlashFactory.java b/jsf-api/src/main/java/javax/faces/context/FlashFactory.java
new file mode 100644
index 0000000..9b2ae89
--- /dev/null
+++ b/jsf-api/src/main/java/javax/faces/context/FlashFactory.java
@@ -0,0 +1,100 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package javax.faces.context;
+
+import javax.faces.FacesWrapper;
+
+/**
+ * <p><strong class="changed_added_2_2">FlashFactory</strong> is a 
+ * factory object that creates (if needed) and returns {@link Flash}
+ * instances.  Implementations of JavaServer Faces must provide at
+ * least a default implementation of {@link Flash}.</p>
+
+ * <div class="changed_added_2_2">
+ *
+ * <p>There must be one {@link FlashFactory} instance per web
+ * application that is utilizing JavaServer Faces.  This instance can
+ * be acquired, in a portable manner, by calling:</p>
+ * <pre>
+ *   FlashFactory factory = (FlashFactory)
+ *     FactoryFinder.getFactory(FactoryFinder.FLASH_FACTORY);
+ * </pre>
+
+ * <p>The common way to access the flash instance from Java code is
+ * still via {@link ExternalContext#getFlash}.  The common way to access
+ * the flash from Faces views is the implicit EL object "flash".  The
+ * runtime must ensure that the <code>FlashFactory</code> is used to
+ * instantiate the flash.</p>
+
+ * </div>
+ * 
+ * @since 2.2
+ */
+public abstract class FlashFactory implements FacesWrapper<FlashFactory> {
+
+    public FlashFactory() {
+    }
+
+    /**
+     * <p class="changed_added_2_2">If this factory has been decorated, the 
+     * implementation doing the decorating may override this method to provide
+     * access to the implementation being wrapped.  A default implementation
+     * is provided that returns <code>null</code>.</p>
+     * 
+     * @since 2.2
+     */
+    public FlashFactory getWrapped() {
+        return null;
+    }
+    
+    /**
+     * <p class="changed_added_2_2">Create (if needed) and return a
+     * {@link Flash} instance for this web application.</p>
+     * 
+     * @param create <code>true</code> to create a new instance for this request if 
+     * necessary; <code>false</code> to return <code>null</code> if there's no 
+     * instance in the current <code>session</code>.
+     * 
+     * @since 2.2
+     */
+    public abstract Flash getFlash(boolean create);
+    
+}
diff --git a/jsf-api/src/main/java/javax/faces/context/FlashWrapper.java b/jsf-api/src/main/java/javax/faces/context/FlashWrapper.java
new file mode 100644
index 0000000..b2e735b
--- /dev/null
+++ b/jsf-api/src/main/java/javax/faces/context/FlashWrapper.java
@@ -0,0 +1,309 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package javax.faces.context;
+
+import java.util.Collection;
+import java.util.Map;
+import java.util.Set;
+import javax.faces.FacesWrapper;
+
+/**
+ * <p class="changed_added_2_2">Provides a simple implementation of
+ * {@link Flash} that can be subclassed by developers wishing
+ * to provide specialized behavior to an existing {@link
+ * Flash} instance.  The default implementation of all methods
+ * is to call through to the wrapped {@link Flash}.</p>
+ *
+ * <div class="changed_added_2_2">
+ *
+ * <p>Usage: extend this class and override {@link #getWrapped} to
+ * return the instance we are wrapping.</p>
+ *
+ * </div>
+ *
+ * @since 2.2
+ */
+public abstract class FlashWrapper extends Flash implements FacesWrapper<Flash> {
+    @Override
+    public abstract Flash getWrapped();
+
+    /**
+     * <p class="changed_added_2_2">The default behavior of this method
+     * is to call {@link Flash#doPostPhaseActions(FacesContext)} on the
+     * wrapped {@link Flash} object.</p>
+     * 
+     * @since 2.2
+     */
+    @Override
+    public void doPostPhaseActions(FacesContext ctx) {
+        getWrapped().doPostPhaseActions(ctx);
+        
+    }
+
+    /**
+     * <p class="changed_added_2_2">The default behavior of this method
+     * is to call {@link Flash#doPrePhaseActions(FacesContext)} on the
+     * wrapped {@link Flash} object.</p>
+     * 
+     * @since 2.2
+     */
+    @Override
+    public void doPrePhaseActions(FacesContext ctx) {
+        getWrapped().doPrePhaseActions(ctx);
+    }
+
+    /**
+     * <p class="changed_added_2_2">The default behavior of this method
+     * is to call {@link Flash#isKeepMessages()} on the wrapped
+     * {@link Flash} object.</p>
+     * 
+     * @since 2.2
+     */
+    @Override
+    public boolean isKeepMessages() {
+        return getWrapped().isKeepMessages();
+    }
+
+    /**
+     * <p class="changed_added_2_2">The default behavior of this method
+     * is to call {@link Flash#isRedirect()} on the wrapped {@link Flash}
+     * object.</p>
+     * 
+     * @since 2.2
+     */
+    @Override
+    public boolean isRedirect() {
+        return getWrapped().isRedirect();
+    }
+
+    /**
+     * <p class="changed_added_2_2">The default behavior of this method
+     * is to call {@link Flash#keep(String)} on the wrapped {@link Flash}
+     * object.</p>
+     * 
+     * @since 2.2
+     */
+    @Override
+    public void keep(String key) {
+        getWrapped().keep(key);
+    }
+
+    /**
+     * <p class="changed_added_2_2">The default behavior of this method
+     * is to call {@link Flash#putNow(String, Object)} on the wrapped
+     * {@link Flash} object.</p>
+     * 
+     * @since 2.2
+     */
+    @Override
+    public void putNow(String key, Object value) {
+        getWrapped().putNow(key, value);
+    }
+
+    /**
+     * <p class="changed_added_2_2">The default behavior of this method
+     * is to call {@link Flash#setKeepMessages(boolean)} on the wrapped
+     * {@link Flash} object.</p>
+     * 
+     * @since 2.2
+     */
+    @Override
+    public void setKeepMessages(boolean newValue) {
+        getWrapped().setKeepMessages(newValue);
+    }
+
+    /**
+     * <p class="changed_added_2_2">The default behavior of this method
+     * is to call {@link Flash#setRedirect(boolean)} on the wrapped
+     * {@link Flash} object.</p>
+     * 
+     * @since 2.2
+     */
+    @Override
+    public void setRedirect(boolean newValue) {
+        getWrapped().setRedirect(newValue);
+    }
+
+    /**
+     * <p class="changed_added_2_2">The default behavior of this method
+     * is to call {@link Flash#clear()} on the wrapped {@link Flash}
+     * object.</p>
+     * 
+     * @since 2.2
+     */
+    @Override
+    public void clear() {
+        getWrapped().clear();
+    }
+
+    /**
+     * <p class="changed_added_2_2">The default behavior of this method
+     * is to call {@link Flash#containsKey(Object)} on the wrapped
+     * {@link Flash} object.</p>
+     * 
+     * @since 2.2
+     */
+    @Override
+    public boolean containsKey(Object key) {
+        return getWrapped().containsKey(key);
+    }
+
+    /**
+     * <p class="changed_added_2_2">The default behavior of this method
+     * is to call {@link Flash#containsValue(Object)} on the wrapped
+     * {@link Flash} object.</p>
+     * 
+     * @since 2.2
+     */
+    @Override
+    public boolean containsValue(Object value) {
+        return getWrapped().containsValue(value);
+    }
+
+    /**
+     * <p class="changed_added_2_2">The default behavior of this method
+     * is to call {@link Flash#entrySet()} on the wrapped {@link Flash}
+     * object.</p>
+     * 
+     * @since 2.2
+     */
+    @Override
+    public Set<Entry<String, Object>> entrySet() {
+        return getWrapped().entrySet();
+    }
+
+    /**
+     * <p class="changed_added_2_2">The default behavior of this method
+     * is to call {@link Flash#get(Object)} on the wrapped {@link Flash}
+     * object.</p>
+     * 
+     * @since 2.2
+     */
+    @Override
+    public Object get(Object key) {
+        return getWrapped().get(key);
+    }
+
+    /**
+     * <p class="changed_added_2_2">The default behavior of this method
+     * is to call {@link Flash#isEmpty()} on the wrapped {@link Flash}
+     * object.</p>
+     * 
+     * @since 2.2
+     */
+    @Override
+    public boolean isEmpty() {
+        return getWrapped().isEmpty();
+    }
+
+    /**
+     * <p class="changed_added_2_2">The default behavior of this method
+     * is to call {@link Flash#keySet()} on the wrapped {@link Flash}
+     * object.</p>
+     * 
+     * @since 2.2
+     */
+    @Override
+    public Set<String> keySet() {
+        return getWrapped().keySet();
+    }
+
+    /**
+     * <p class="changed_added_2_2">The default behavior of this method
+     * is to call {@link Flash#put} on the wrapped
+     * {@link Flash} object.</p>
+     * 
+     * @since 2.2
+     */
+    @Override
+    public Object put(String key, Object value) {
+        return getWrapped().put(key, value);
+    }
+
+    /**
+     * <p class="changed_added_2_2">The default behavior of this method
+     * is to call {@link Flash#putAll(Map)} on the wrapped
+     * {@link Flash} object.</p>
+     * 
+     * @since 2.2
+     */
+    @Override
+    public void putAll(Map<? extends String, ? extends Object> m) {
+        getWrapped().putAll(m);
+    }
+
+    /**
+     * <p class="changed_added_2_2">The default behavior of this method
+     * is to call {@link Flash#remove(Object)} on the wrapped
+     * {@link Flash} object.</p>
+     * 
+     * @since 2.2
+     */
+    @Override
+    public Object remove(Object key) {
+        return getWrapped().remove(key);
+    }
+
+    /**
+     * <p class="changed_added_2_2">The default behavior of this method
+     * is to call {@link Flash#size()} on the wrapped {@link Flash}
+     * object.</p>
+     * 
+     * @since 2.2
+     */
+    @Override
+    public int size() {
+        return getWrapped().size();
+    }
+
+    /**
+     * <p class="changed_added_2_2">The default behavior of this method
+     * is to call {@link Flash#values()} on the wrapped {@link Flash}
+     * object.</p>
+     * 
+     * @since 2.2
+     */
+    @Override
+    public Collection<Object> values() {
+        return getWrapped().values();
+    }
+    
+}
diff --git a/jsf-api/src/main/java/javax/faces/context/PartialResponseWriter.java b/jsf-api/src/main/java/javax/faces/context/PartialResponseWriter.java
index eca02fd..8ba552e 100644
--- a/jsf-api/src/main/java/javax/faces/context/PartialResponseWriter.java
+++ b/jsf-api/src/main/java/javax/faces/context/PartialResponseWriter.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -38,6 +42,7 @@ package javax.faces.context;
 
 import java.io.IOException;
 import java.util.Map;
+import javax.faces.render.ResponseStateManager;
 
 /**
  * <p class="changed_added_2_0"><strong>PartialResponseWriter</strong>
@@ -50,7 +55,7 @@ import java.util.Map;
  * @since 2.0
  */
 public class PartialResponseWriter extends ResponseWriterWrapper {
-    // True when we need to close a start tag
+    // True when we need to close a changes tag
     //
     private boolean inChanges = false;
 
@@ -61,6 +66,10 @@ public class PartialResponseWriter extends ResponseWriterWrapper {
     // True when we need to close afer insert tag
     //
     private boolean inInsertAfter = false;
+    
+    // True when we need to close an update tag
+    //
+    private boolean inUpdate = false;
 
     ResponseWriter writer;
 
@@ -78,7 +87,7 @@ public class PartialResponseWriter extends ResponseWriterWrapper {
      *
      * @since 2.0
      */
-    public static final String VIEW_STATE_MARKER = "javax.faces.ViewState";
+    public static final String VIEW_STATE_MARKER = ResponseStateManager.VIEW_STATE_PARAM;
 
     /**
      * <p class="changed_added_2_0">Create a <code>PartialResponseWriter</code>.</p>
@@ -113,8 +122,13 @@ public class PartialResponseWriter extends ResponseWriterWrapper {
         if( encoding == null ) {
             encoding = "utf-8";
         }
-        writer.write("<?xml version='1.0' encoding='" + encoding + "'?>\n");
+        writer.writePreamble("<?xml version='1.0' encoding='" + encoding + "'?>\n");
         writer.startElement("partial-response", null);
+        FacesContext ctx = FacesContext.getCurrentInstance();
+        if (null != ctx && null != ctx.getViewRoot()) {
+            String id = ctx.getViewRoot().getContainerClientId(ctx);
+            writer.writeAttribute("id", id, "id");
+        }
     }
 
     /**
@@ -195,6 +209,7 @@ public class PartialResponseWriter extends ResponseWriterWrapper {
      */
     public void startUpdate(String targetId) throws IOException {
         startChangesIfNecessary();
+        inUpdate = true;
         ResponseWriter writer = getWrapped();
         writer.startElement("update", null);
         writer.writeAttribute("id", targetId, null);
@@ -211,6 +226,7 @@ public class PartialResponseWriter extends ResponseWriterWrapper {
         ResponseWriter writer = getWrapped();
         writer.endCDATA();
         writer.endElement("update");
+        inUpdate = false;
     }
 
     /**
@@ -299,7 +315,7 @@ public class PartialResponseWriter extends ResponseWriterWrapper {
      * @since 2.0
      */
     public void startExtension(Map<String, String> attributes) throws IOException {
-        endChangesIfNecessary();
+        startChangesIfNecessary();
         ResponseWriter writer = getWrapped();
         writer.startElement("extension", null);
         if (attributes != null && !attributes.isEmpty()) {
@@ -328,6 +344,7 @@ public class PartialResponseWriter extends ResponseWriterWrapper {
      * @since 2.0
      */
     public void startError(String errorName) throws IOException {
+        endUpdateIfNecessary();
         endChangesIfNecessary();
         ResponseWriter writer = getWrapped();
         writer.startElement("error", null);
@@ -358,6 +375,12 @@ public class PartialResponseWriter extends ResponseWriterWrapper {
             inChanges = true;
         }
     }
+    
+    private void endUpdateIfNecessary() throws IOException {
+        if (inUpdate) {
+            endUpdate();
+        }
+    }
 
     private void endChangesIfNecessary() throws IOException {
         if (inChanges) {
diff --git a/jsf-api/src/main/java/javax/faces/context/PartialViewContext.java b/jsf-api/src/main/java/javax/faces/context/PartialViewContext.java
index fd2abb3..cbcdf2e 100644
--- a/jsf-api/src/main/java/javax/faces/context/PartialViewContext.java
+++ b/jsf-api/src/main/java/javax/faces/context/PartialViewContext.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -41,7 +45,7 @@ import java.util.Collection;
 import javax.faces.event.PhaseId;
 
 /**
- * <p><strong class="changed_added_2_0">PartialViewContext</strong>
+ * <p><strong class="changed_added_2_0 changed_modified_2_2">PartialViewContext</strong>
  * contains methods and properties that pertain to partial request
  * processing and partial response rendering on a view.</p> 
  *
@@ -88,6 +92,17 @@ public abstract class PartialViewContext {
           "javax.faces.partial.execute";
 
     /**
+     * <p class="changed_added_2_2">
+     * If the request parameter named by the value of this constant has 
+     * a parameter value of <code>true</code>, the implementation
+     * must return <code>true</code> from {@link #isResetValues}.</p>
+     *
+     * @since 2.2
+     */
+    public static final String RESET_VALUES_PARAM_NAME =
+          "javax.faces.partial.resetValues";
+
+    /**
      * <p class="changed_added_2_0">
      * The value that when used with {@link #PARTIAL_EXECUTE_PARAM_NAME}
      * or {@link #PARTIAL_RENDER_PARAM_NAME} indicates these phases
@@ -206,6 +221,23 @@ public abstract class PartialViewContext {
      * @since 2.0
      */
     public abstract boolean isRenderAll();
+    
+    
+    /**
+     * <p class="chaged_added_2_2">Return <code>true</code> if
+     * the incoming request has a parameter named by the value of {@link #RESET_VALUES_PARAM_NAME}
+     * and that value is <code>true</code>.  To preserve backward compatibility
+     * with custom implementations that may have extended from an earlier
+     * version of this class, an implementation is provided that returns 
+     * <code>false</code>.  A compliant implementation must override this 
+     * method to take the specified action.</p>
+     * 
+     * @since 2.2
+     */
+    public boolean isResetValues() {
+        return false;
+    }
+    
 
     /**
      * <p class="changed_added_2_0">
diff --git a/jsf-api/src/main/java/javax/faces/context/PartialViewContextFactory.java b/jsf-api/src/main/java/javax/faces/context/PartialViewContextFactory.java
index 04e5649..575d596 100644
--- a/jsf-api/src/main/java/javax/faces/context/PartialViewContextFactory.java
+++ b/jsf-api/src/main/java/javax/faces/context/PartialViewContextFactory.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -59,6 +63,9 @@ import javax.faces.FacesWrapper;
  */
 public abstract class PartialViewContextFactory implements FacesWrapper<PartialViewContextFactory> {
 
+    public PartialViewContextFactory() {
+    }
+
 
     // ----------------------------------------------- Methods from FacesWrapper
 
diff --git a/jsf-api/src/main/java/javax/faces/context/PartialViewContextWrapper.java b/jsf-api/src/main/java/javax/faces/context/PartialViewContextWrapper.java
index 0da3c5c..846b354 100644
--- a/jsf-api/src/main/java/javax/faces/context/PartialViewContextWrapper.java
+++ b/jsf-api/src/main/java/javax/faces/context/PartialViewContextWrapper.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -42,7 +46,8 @@ import javax.faces.FacesWrapper;
 import javax.faces.event.PhaseId;
 
 /**
- * <p>Provides a simple implementation of {@link PartialViewContext} that can
+ * <p class="changed_added_2_0"><span class="changed_modified_2_2">Provides</span> 
+ * a simple implementation of {@link PartialViewContext} that can
  * be subclassed by developers wishing to provide specialized behavior
  * to an existing {@link PartialViewContext} instance.  The default
  * implementation of all methods is to call through to the wrapped
@@ -63,6 +68,7 @@ public abstract class PartialViewContextWrapper extends PartialViewContext imple
      * @return the wrapped {@link PartialViewContext} instance
      * @see javax.faces.FacesWrapper#getWrapped()
      */
+    @Override
     public abstract PartialViewContext getWrapped();
 
 
@@ -76,6 +82,7 @@ public abstract class PartialViewContextWrapper extends PartialViewContext imple
      *
      * @see PartialViewContext#getExecuteIds()
      */
+    @Override
     public Collection<String> getExecuteIds() {
         return getWrapped().getExecuteIds();
     }
@@ -87,6 +94,7 @@ public abstract class PartialViewContextWrapper extends PartialViewContext imple
      *
      * @see PartialViewContext#getRenderIds()
      */
+    @Override
     public Collection<String> getRenderIds() {
         return getWrapped().getRenderIds();
     }
@@ -98,10 +106,23 @@ public abstract class PartialViewContextWrapper extends PartialViewContext imple
      *
      * @see PartialViewContext#getPartialResponseWriter()
      */
+    @Override
     public PartialResponseWriter getPartialResponseWriter() {
         return getWrapped().getPartialResponseWriter();
     }
 
+    /**
+     * <p class="changed_added_2_2">The default behavior of this method is to
+     * call {@link PartialViewContext#setPartialRequest(boolean)}
+     * on the wrapped {@link PartialViewContext} object.</p>
+     *
+     * @see PartialViewContext#setPartialRequest(boolean)
+     */
+    @Override
+    public void setPartialRequest(boolean isPartialRequest) {
+        getWrapped().setPartialRequest(isPartialRequest);
+    }
+    
      /**
      * <p>The default behavior of this method is to
      * call {@link PartialViewContext#isAjaxRequest()}
@@ -109,6 +130,7 @@ public abstract class PartialViewContextWrapper extends PartialViewContext imple
      *
      * @see javax.faces.context.PartialViewContext#isAjaxRequest()
      */
+    @Override
     public boolean isAjaxRequest() {
         return getWrapped().isAjaxRequest();
     }
@@ -120,6 +142,7 @@ public abstract class PartialViewContextWrapper extends PartialViewContext imple
      *
      * @see PartialViewContext#isPartialRequest()
      */
+    @Override
     public boolean isPartialRequest() {
         return getWrapped().isPartialRequest();
     }
@@ -131,6 +154,7 @@ public abstract class PartialViewContextWrapper extends PartialViewContext imple
      *
      * @see PartialViewContext#isExecuteAll()
      */
+    @Override
     public boolean isExecuteAll() {
         return getWrapped().isExecuteAll();
     }
@@ -142,17 +166,31 @@ public abstract class PartialViewContextWrapper extends PartialViewContext imple
      *
      * @see PartialViewContext#isRenderAll()
      */
+    @Override
     public boolean isRenderAll() {
         return getWrapped().isRenderAll();
     }
 
      /**
      * <p>The default behavior of this method is to
+     * call {@link PartialViewContext#isResetValues()}
+     * on the wrapped {@link PartialViewContext} object.</p>
+     *
+     * @see PartialViewContext#isResetValues()
+     */
+    @Override
+    public boolean isResetValues() {
+        return getWrapped().isResetValues();
+    }
+
+     /**
+     * <p>The default behavior of this method is to
      * call {@link PartialViewContext#setRenderAll(boolean)}
      * on the wrapped {@link PartialViewContext} object.</p>
      *
      * @see PartialViewContext#setRenderAll(boolean)
      */
+    @Override
     public void setRenderAll(boolean renderAll) {
         getWrapped().setRenderAll(renderAll);
     }
@@ -164,6 +202,7 @@ public abstract class PartialViewContextWrapper extends PartialViewContext imple
      *
      * @see PartialViewContext#release()
      */
+    @Override
     public void release() {
         getWrapped().release();
     }
@@ -175,6 +214,7 @@ public abstract class PartialViewContextWrapper extends PartialViewContext imple
      *
      * @see PartialViewContext#processPartial(PhaseId)
      */
+    @Override
     public void processPartial(PhaseId phaseId) {
         getWrapped().processPartial(phaseId);
     }
diff --git a/jsf-api/src/main/java/javax/faces/context/ResponseStream.java b/jsf-api/src/main/java/javax/faces/context/ResponseStream.java
index e73d451..c2ed56b 100644
--- a/jsf-api/src/main/java/javax/faces/context/ResponseStream.java
+++ b/jsf-api/src/main/java/javax/faces/context/ResponseStream.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-api/src/main/java/javax/faces/context/ResponseWriter.java b/jsf-api/src/main/java/javax/faces/context/ResponseWriter.java
index f55f27e..d14cbca 100644
--- a/jsf-api/src/main/java/javax/faces/context/ResponseWriter.java
+++ b/jsf-api/src/main/java/javax/faces/context/ResponseWriter.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -43,11 +47,13 @@ import java.io.Writer;
 
 
 /**
- * <p><strong>ResponseWriter</strong> is an abstract class describing an
- * adapter to an underlying output mechanism for character-based output.
- * In addition to the low-level <code>write()</code> methods inherited from
- * <code>java.io.Writer</code>, this class provides utility methods
- * that are useful in producing elements and attributes for markup languages
+ * <p><span
+ * class="changed_modified_2_2"><strong>ResponseWriter</strong></span>
+ * is an abstract class describing an adapter to an underlying output
+ * mechanism for character-based output.  In addition to the low-level
+ * <code>write()</code> methods inherited from
+ * <code>java.io.Writer</code>, this class provides utility methods that
+ * are useful in producing elements and attributes for markup languages
  * like HTML and XML.</p>
  */
 
@@ -99,7 +105,8 @@ public abstract class ResponseWriter extends Writer {
 
 
     /**
-     * <p>Write the start of an element, up to and including the
+     * <p><span class="changed_modified_2_2">Write</span> the start of an element, 
+       up to and including the
      * element name.  Once this method has been called, clients can
      * call the <code>writeAttribute()</code> or
      * <code>writeURIAttribute()</code> methods to add attributes and
@@ -110,10 +117,28 @@ public abstract class ResponseWriter extends Writer {
      * <code>writeText()</code>, <code>endElement()</code>,
      * <code>endDocument()</code>, <code>close()</code>,
      * <code>flush()</code>, or <code>write()</code>.</p>
+     * 
+     * <div class="changed_added_2_2">
+     * 
+     * <p>If the argument component's pass through attributes 
+     * includes an attribute of the name given by the value of the symbolic
+     * constant {@link javax.faces.render.Renderer#PASSTHROUGH_RENDERER_LOCALNAME_KEY},
+     * use that as the element name, instead of the value passed as the first 
+     * parameter to this method.  Care must be taken so that this value
+     * is not also rendered when any other pass through attributes on this component
+     * are rendered.</p>
+     * 
+     * </div>
      *
      * @param name      Name of the element to be started
-     * @param component The {@link UIComponent} (if any) to which
-     *                  this element corresponds
+
+     * @param component The {@link UIComponent} (if any) to which this
+     *                  element corresponds.  <span
+     *                  class="changed_added_2_2"> This component is
+     *                  inspected for its pass through attributes as
+     *                  described in the standard HTML_BASIC {@code
+     *                  RenderKit} specification.</span>
+
      * @throws IOException          if an input/output error occurs
      * @throws NullPointerException if <code>name</code>
      *                              is <code>null</code>
@@ -123,11 +148,22 @@ public abstract class ResponseWriter extends Writer {
 
 
     /**
-     * <p>Write the end of an element, after closing any open element
+     * <p><span class="changed_modified_2_2">Write</span> the end of an element, 
+     * after closing any open element
      * created by a call to <code>startElement()</code>.  Elements must be
      * closed in the inverse order from which they were opened; it is an
      * error to do otherwise.</p>
      *
+     * <div class="changed_added_2_2">
+     * 
+     * <p>If the argument component's pass through attributes 
+     * includes an attribute of the name given by the value of the symbolic
+     * constant {@link javax.faces.render.Renderer#PASSTHROUGH_RENDERER_LOCALNAME_KEY},
+     * use that as the element name, instead of the value passed as the first 
+     * parameter to this method.</p>
+     * 
+     * </div>
+     *
      * @param name Name of the element to be ended
      * @throws IOException          if an input/output error occurs
      * @throws NullPointerException if <code>name</code>
@@ -161,12 +197,19 @@ public abstract class ResponseWriter extends Writer {
 
 
     /**
-     * <p>Write a URI attribute name and corresponding value, after converting
-     * that text to a String (if necessary), and after performing any encoding
-     * appropriate to the markup language being rendered.
-     * This method may only be called after a call to
-     * <code>startElement()</code>, and before the opened element has been
-     * closed.</p>
+     * <p><span class="changed_modified_2_2">Write</span> a URI
+     * attribute name and corresponding value, after converting that
+     * text to a String (if necessary), and after performing any
+     * encoding <span class="changed_modified_2_2">or escaping</span>
+     * appropriate to the markup language being rendered.  <span
+     * class="changed_modified_2_2">When rendering in a WWW environment,
+     * the escaping conventions established in the W3C URI spec document
+     * <<a
+     * href="http://www.w3.org/Addressing/URL/uri-spec.html">http://www.w3.org/Addressing/URL/uri-spec.html</a>>
+     * must be followed.  In particular, spaces ' ' must be encoded as
+     * %20 and not the plus character '+'.</span> This method may only
+     * be called after a call to <code>startElement()</code>, and before
+     * the opened element has been closed.</p>
      *
      * @param name     Attribute name to be added
      * @param value    Attribute value to be added
@@ -222,6 +265,51 @@ public abstract class ResponseWriter extends Writer {
      *                              is <code>null</code>
      */
     public abstract void writeComment(Object comment) throws IOException;
+    
+    
+    /**
+     * <p class="changed_added_2_2">Write a string containing the markup specific
+     * preamble.
+     * No escaping is performed. The default 
+     * implementation simply calls through to {@link #write(java.lang.String)} .</p>
+     * 
+     * <div class="changed_added_2_2">
+     * 
+     * <p>The implementation makes no checks if this is the correct place
+     * in the response to have a preamble, nor does it prevent the preamble
+     * from being written more than once.</p>
+     * 
+     * </div>
+     * 
+     * @since 2.2
+     * @param preamble Text content of the preamble
+     * @throws IOException if an input/output error occurs
+     */
+    public void writePreamble(String preamble) throws IOException {
+        write(preamble);
+    }
+
+    /**
+     * <p class="changed_added_2_2">Write a string containing the markup specific
+     * doctype.
+     * No escaping is performed. The default 
+     * implementation simply calls through to {@link #write(java.lang.String)} .</p>
+     * 
+     * <div class="changed_added_2_2">
+     * 
+     * <p>The implementation makes no checks if this is the correct place
+     * in the response to have a doctype, nor does it prevent the doctype
+     * from being written more than once.</p>
+     * 
+     * </div>
+     * 
+     * @since 2.2
+     * @param doctype Text content of the doctype
+     * @throws IOException if an input/output error occurs
+     */
+    public void writeDoctype(String doctype) throws IOException {
+        write(doctype);
+    }
 
 
     /**
diff --git a/jsf-api/src/main/java/javax/faces/context/ResponseWriterWrapper.java b/jsf-api/src/main/java/javax/faces/context/ResponseWriterWrapper.java
index 4700f8a..63f4a19 100644
--- a/jsf-api/src/main/java/javax/faces/context/ResponseWriterWrapper.java
+++ b/jsf-api/src/main/java/javax/faces/context/ResponseWriterWrapper.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -61,7 +65,7 @@ public abstract class ResponseWriterWrapper extends ResponseWriter implements Fa
      * <p class="changed_modified_2_0">Return the instance that we are wrapping.
      * As of version 2, this method is public.</p>
      */
-
+    @Override
     public abstract ResponseWriter getWrapped();
 
     // -------------------------- Methods from javax.faces.contxt.ResponseWriter
@@ -75,6 +79,7 @@ public abstract class ResponseWriterWrapper extends ResponseWriter implements Fa
      * @see ResponseWriter#getContentType()
      * @since 1.2
      */
+    @Override
     public String getContentType() {
 
         return getWrapped().getContentType();
@@ -90,6 +95,7 @@ public abstract class ResponseWriterWrapper extends ResponseWriter implements Fa
      * @see ResponseWriter#getCharacterEncoding()
      * @since 1.2
      */
+    @Override
     public String getCharacterEncoding() {
 
         return getWrapped().getCharacterEncoding();
@@ -105,6 +111,7 @@ public abstract class ResponseWriterWrapper extends ResponseWriter implements Fa
      * @see ResponseWriter#flush()
      * @since 1.2
      */
+    @Override
     public void flush() throws IOException {
 
         getWrapped().flush();
@@ -120,6 +127,7 @@ public abstract class ResponseWriterWrapper extends ResponseWriter implements Fa
      * @see ResponseWriter#startDocument()
      * @since 1.2
      */
+    @Override
     public void startDocument() throws IOException {
 
         getWrapped().startDocument();
@@ -135,6 +143,7 @@ public abstract class ResponseWriterWrapper extends ResponseWriter implements Fa
      * @see ResponseWriter#endDocument()
      * @since 1.2
      */
+    @Override
     public void endDocument() throws IOException {
 
         getWrapped().endDocument();
@@ -150,6 +159,7 @@ public abstract class ResponseWriterWrapper extends ResponseWriter implements Fa
      * @see ResponseWriter#startElement(String, javax.faces.component.UIComponent)
      * @since 1.2
      */
+    @Override
     public void startElement(String name, UIComponent component)
             throws IOException {
 
@@ -164,6 +174,7 @@ public abstract class ResponseWriterWrapper extends ResponseWriter implements Fa
      * @since 2.0
      * @throws IOException on any read/write error
      */
+    @Override
     public void startCDATA() throws IOException {
         getWrapped().startCDATA();
     }
@@ -175,6 +186,7 @@ public abstract class ResponseWriterWrapper extends ResponseWriter implements Fa
      * @since 2.0
      * @throws IOException on any read/write error
      */
+    @Override
     public void endCDATA() throws IOException {
         getWrapped().endCDATA();
     }
@@ -189,6 +201,7 @@ public abstract class ResponseWriterWrapper extends ResponseWriter implements Fa
      * @since 1.2
      * @throws IOException on any read/write error
      */
+    @Override
     public void endElement(String name) throws IOException {
 
         getWrapped().endElement(name);
@@ -204,6 +217,7 @@ public abstract class ResponseWriterWrapper extends ResponseWriter implements Fa
      * @see ResponseWriter#writeAttribute(String, Object, String)
      * @since 1.2
      */
+    @Override
     public void writeAttribute(String name, Object value, String property)
             throws IOException {
 
@@ -220,6 +234,7 @@ public abstract class ResponseWriterWrapper extends ResponseWriter implements Fa
      * @see ResponseWriter#writeURIAttribute(String, Object, String)
      * @since 1.2
      */
+    @Override
     public void writeURIAttribute(String name, Object value, String property)
             throws IOException {
 
@@ -236,12 +251,38 @@ public abstract class ResponseWriterWrapper extends ResponseWriter implements Fa
      * @see ResponseWriter#writeComment(Object)
      * @since 1.2
      */
+    @Override
     public void writeComment(Object comment) throws IOException {
 
         getWrapped().writeComment(comment);
 
     }
 
+    /**
+     * <p>The default behavior of this method is to
+     * call {@link ResponseWriter#writeDoctype}
+     * on the wrapped {@link ResponseWriter} object.</p>
+     *
+     * @see ResponseWriter#writeDoctype
+     * @since 2.2
+     */
+    @Override
+    public void writeDoctype(String doctype) throws IOException {
+        getWrapped().writeDoctype(doctype);
+    }
+
+    /**
+     * <p>The default behavior of this method is to
+     * call {@link ResponseWriter#writePreamble}
+     * on the wrapped {@link ResponseWriter} object.</p>
+     *
+     * @see ResponseWriter#writePreamble
+     * @since 2.2
+     */
+    @Override
+    public void writePreamble(String preamble) throws IOException {
+        getWrapped().writePreamble(preamble);
+    }
 
     /**
      * <p>The default behavior of this method is to
@@ -251,6 +292,7 @@ public abstract class ResponseWriterWrapper extends ResponseWriter implements Fa
      * @see ResponseWriter#writeText(Object, String)
      * @since 1.2
      */
+    @Override
     public void writeText(Object text, String property) throws IOException {
 
         getWrapped().writeText(text, property);
@@ -266,6 +308,7 @@ public abstract class ResponseWriterWrapper extends ResponseWriter implements Fa
      * @since 1.2
      */
 
+    @Override
     public void writeText(Object text, UIComponent component, String property)
             throws IOException {
         getWrapped().writeText(text, component, property);
@@ -280,6 +323,7 @@ public abstract class ResponseWriterWrapper extends ResponseWriter implements Fa
      * @see ResponseWriter#writeText(char[], int, int)
      * @since 1.2
      */
+    @Override
     public void writeText(char[] text, int off, int len) throws IOException {
 
         getWrapped().writeText(text, off, len);
@@ -295,6 +339,7 @@ public abstract class ResponseWriterWrapper extends ResponseWriter implements Fa
      * @see ResponseWriter#cloneWithWriter(java.io.Writer)
      * @since 1.2
      */
+    @Override
     public ResponseWriter cloneWithWriter(Writer writer) {
 
         return getWrapped().cloneWithWriter(writer);
@@ -313,6 +358,7 @@ public abstract class ResponseWriterWrapper extends ResponseWriter implements Fa
      * @see ResponseWriter#close()
      * @since 1.2
      */
+    @Override
     public void close() throws IOException {
 
         getWrapped().close();
@@ -328,6 +374,7 @@ public abstract class ResponseWriterWrapper extends ResponseWriter implements Fa
      * @see ResponseWriter#write(char[], int, int)
      * @since 1.2
      */
+    @Override
     public void write(char[] cbuf, int off, int len) throws IOException {
 
         getWrapped().write(cbuf, off, len);
diff --git a/jsf-api/src/main/java/javax/faces/context/package.html b/jsf-api/src/main/java/javax/faces/context/package.html
index 0f600f0..9fd89dd 100644
--- a/jsf-api/src/main/java/javax/faces/context/package.html
+++ b/jsf-api/src/main/java/javax/faces/context/package.html
@@ -1,9 +1,52 @@
 <html>
 <head>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
 <title>Package Description for "javax.faces.context"</title>
 </head>
 <body bgcolor="white">
-<p><span class="changed_modified_2_0">Classes</span> and interfaces
+<p><span class="changed_modified_2_0 changed_modified_2_1 changed_modified_2_2">
+Classes</span> and interfaces
 defining per-request state information.  The main class in this package
 is {@link javax.faces.context.FacesContext}, which is the access point
 for all per-request information, as well as the gateway to several other
diff --git a/jsf-api/src/main/java/javax/faces/convert/BigDecimalConverter.java b/jsf-api/src/main/java/javax/faces/convert/BigDecimalConverter.java
index 34d57c3..0db8d5f 100644
--- a/jsf-api/src/main/java/javax/faces/convert/BigDecimalConverter.java
+++ b/jsf-api/src/main/java/javax/faces/convert/BigDecimalConverter.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-api/src/main/java/javax/faces/convert/BigIntegerConverter.java b/jsf-api/src/main/java/javax/faces/convert/BigIntegerConverter.java
index 91b7fe6..2e907f2 100644
--- a/jsf-api/src/main/java/javax/faces/convert/BigIntegerConverter.java
+++ b/jsf-api/src/main/java/javax/faces/convert/BigIntegerConverter.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-api/src/main/java/javax/faces/convert/BooleanConverter.java b/jsf-api/src/main/java/javax/faces/convert/BooleanConverter.java
index 9b919ce..7468c74 100644
--- a/jsf-api/src/main/java/javax/faces/convert/BooleanConverter.java
+++ b/jsf-api/src/main/java/javax/faces/convert/BooleanConverter.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-api/src/main/java/javax/faces/convert/ByteConverter.java b/jsf-api/src/main/java/javax/faces/convert/ByteConverter.java
index 208b6a6..b5e3b84 100644
--- a/jsf-api/src/main/java/javax/faces/convert/ByteConverter.java
+++ b/jsf-api/src/main/java/javax/faces/convert/ByteConverter.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-api/src/main/java/javax/faces/convert/CharacterConverter.java b/jsf-api/src/main/java/javax/faces/convert/CharacterConverter.java
index ff6d89e..ac599dd 100644
--- a/jsf-api/src/main/java/javax/faces/convert/CharacterConverter.java
+++ b/jsf-api/src/main/java/javax/faces/convert/CharacterConverter.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-api/src/main/java/javax/faces/convert/Converter.java b/jsf-api/src/main/java/javax/faces/convert/Converter.java
index f2df8d5..9ccdefb 100644
--- a/jsf-api/src/main/java/javax/faces/convert/Converter.java
+++ b/jsf-api/src/main/java/javax/faces/convert/Converter.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -43,7 +47,7 @@ import javax.faces.context.FacesContext;
 
 
 /**
- * <p><strong class="changed_modified_2_0">Converter</strong> is an
+ * <p><strong class="changed_modified_2_0 changed_modified_2_2">Converter</strong> is an
  * interface describing a Java class that can perform Object-to-String
  * and String-to-Object conversions between model data objects and a
  * String representation of those objects that is suitable for
@@ -129,4 +133,18 @@ public interface Converter {
                               Object value);
 
 
+    /**
+     * <p class="changed_added_2_2">
+     * If this param is set, and calling toLowerCase().equals("true") on a
+     * String representation of its value returns true,
+     * Application.createConverter() must guarantee that the default for the
+     * timezone of all javax.faces.convert.DateTimeConverter instances must
+     * be equal to TimeZone.getDefault() instead of "GMT".
+     * </p>
+     * 
+     * @since 2.0
+     */
+    public static final String DATETIMECONVERTER_DEFAULT_TIMEZONE_IS_SYSTEM_TIMEZONE_PARAM_NAME = 
+            "javax.faces.DATETIMECONVERTER_DEFAULT_TIMEZONE_IS_SYSTEM_TIMEZONE";
+    
 }
diff --git a/jsf-api/src/main/java/javax/faces/convert/ConverterException.java b/jsf-api/src/main/java/javax/faces/convert/ConverterException.java
index 907c571..a598dcb 100644
--- a/jsf-api/src/main/java/javax/faces/convert/ConverterException.java
+++ b/jsf-api/src/main/java/javax/faces/convert/ConverterException.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-api/src/main/java/javax/faces/convert/DateTimeConverter.java b/jsf-api/src/main/java/javax/faces/convert/DateTimeConverter.java
index c1f5c4b..2de2c6b 100644
--- a/jsf-api/src/main/java/javax/faces/convert/DateTimeConverter.java
+++ b/jsf-api/src/main/java/javax/faces/convert/DateTimeConverter.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -49,9 +53,9 @@ import java.util.TimeZone;
 
 
 /**
- * <p>{@link Converter} implementation for <code>java.util.Date</code>
- * values.</p>
- * <p/>
+ * <p><span class="changed_modified_2_0_rev_a">{@link Converter}</span>
+ * implementation for <code>java.util.Date</code> values.</p>
+ *
  * <p>The <code>getAsObject()</code> method parses a String into a
  * <code>java.util.Date</code>, according to the following algorithm:</p>
  * <ul>
diff --git a/jsf-api/src/main/java/javax/faces/convert/DoubleConverter.java b/jsf-api/src/main/java/javax/faces/convert/DoubleConverter.java
index 7d405b3..ae13a17 100644
--- a/jsf-api/src/main/java/javax/faces/convert/DoubleConverter.java
+++ b/jsf-api/src/main/java/javax/faces/convert/DoubleConverter.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-api/src/main/java/javax/faces/convert/EnumConverter.java b/jsf-api/src/main/java/javax/faces/convert/EnumConverter.java
index 745b614..972605c 100644
--- a/jsf-api/src/main/java/javax/faces/convert/EnumConverter.java
+++ b/jsf-api/src/main/java/javax/faces/convert/EnumConverter.java
@@ -1,264 +1,272 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package javax.faces.convert;
-
-
-import javax.faces.component.UIComponent;
-import javax.faces.component.PartialStateHolder;
-import javax.faces.context.FacesContext;
-
-
-/**
- * <p><span class="changed_modified_2_0">{@link Converter}</span> implementation for <code>java.lang.Enum</code>
- * (and enum primitive) values.</p>
- *
- * @since 1.2
- */
-
-public class EnumConverter implements Converter, PartialStateHolder {
-
-    // for StateHolder
-    public EnumConverter() {
-
-    }
-
-    public EnumConverter(Class targetClass) {
-        this.targetClass = (Class<? extends Enum>) targetClass;
-    }
-
-    // ------------------------------------------------------ Manifest Constants
-
-
-    /**
-     * <p>The standard converter id for this converter.</p>
-     */
-    public static final String CONVERTER_ID = "javax.faces.Enum";
-
-    /**
-     * <p>The message identifier of the {@link javax.faces.application.FacesMessage} to be created if
-     * the conversion to <code>Enum</code> fails.  The message format
-     * string for this message may optionally include the following
-     * placeholders:
-     * <ul>
-     * <li><code>{0}</code> replaced by the unconverted value.</li>
-     * <li><code>{1}</code> replaced by one of the enum constants or the empty
-     * string if none can be found.</li>
-     * <li><code>{2}</code> replaced by a <code>String</code> whose value
-     * is the label of the input component that produced this message.</li>
-     * </ul></p>
-     */
-    public static final String ENUM_ID =
-         "javax.faces.converter.EnumConverter.ENUM";
-
-    /**
-     * <p>The message identifier of the {@link javax.faces.application.FacesMessage} to be created if
-     * the conversion to <code>Enum</code> fails and no target class has been
-     * provided.  The message format
-     * string for this message may optionally include the following
-     * placeholders:
-     * <ul>
-     * <li><code>{0}</code> replaced by the unconverted value.</li>
-     * <li><code>{1}</code> replaced by a <code>String</code> whose value
-     * is the label of the input component that produced this message.</li>
-     * </ul></p>
-     */
-    public static final String ENUM_NO_CLASS_ID =
-         "javax.faces.converter.EnumConverter.ENUM_NO_CLASS";
-
-    // ----------------------------------------------------- Converter Methods
-
-    private Class<? extends Enum> targetClass;
-
-
-    /**
-     * <p>Convert the <code>value</code> argument to one of the enum
-     * constants of the class provided in our constructor.  If no
-     * target class argument has been provided to the constructor of
-     * this instance, throw a <code>ConverterException</code>
-     * containing the {@link #ENUM_NO_CLASS_ID} message with proper
-     * parameters.  If the <code>value</code> argument is <code>null</code>
-     * or it  has a length of zero, return <code>null</code>.
-     * Otherwise, perform the equivalent of <code>Enum.valueOf</code> using
-     * target class and <code>value</code> and return the <code>Object</code>.
-     * If the conversion fails, throw a <code>ConverterException</code>
-     * containing the {@link #ENUM_ID} message with proper parameters.
-     * </p>
-     *
-     * @param context   the <code>FacesContext</code> for this request.
-     * @param component the <code>UIComponent</code> to which this value
-     *                  will be applied.
-     * @param value     the String <code>value</code> to be converted to
-     *                  <code>Object</code>.
-     * @throws ConverterException   {@inheritDoc}
-     * @throws NullPointerException {@inheritDoc}
-     */
-    public Object getAsObject(FacesContext context, UIComponent component,
-                              String value) {
-
-        if (context == null || component == null) {
-            throw new NullPointerException();
-        }
-
-        if (targetClass == null) {
-            throw new ConverterException(
-                 MessageFactory.getMessage(context,
-                      ENUM_NO_CLASS_ID,
-                      value,
-                      MessageFactory.getLabel(context,
-                           component)));
-        }
-
-        // If the specified value is null or zero-length, return null
-        if (value == null) {
-            return (null);
-        }
-        value = value.trim();
-        if (value.length() < 1) {
-            return (null);
-        }
-
-        try {
-            return Enum.valueOf(targetClass, value);
-        } catch (IllegalArgumentException iae) {
-            throw new ConverterException(
-                 MessageFactory.getMessage(context,
-                      ENUM_ID,
-                      value,
-                      value,
-                      MessageFactory.getLabel(context,
-                           component)), iae);
-        }
-
-    }
-
-    /**
-     * <p>Convert the enum constant given by the <code>value</code>
-     * argument into a String.  If no target class argument has been
-     * provided to the constructor of this instance, throw a
-     * <code>ConverterException</code> containing the {@link
-     * #ENUM_NO_CLASS_ID} message with proper parameters. If the
-     * <code>value</code> argument is <code>null</code>, return
-     * <code>null</code>.  If the value is an instance of the provided
-     * target class, return its string value by <span
-     * class="changed_added_2_0">casting it to a
-     * <code>java.lang.Enum</code> and returning the result of calling
-     * the <code>name()</code> method.</span> Otherwise, throw a {@link
-     * ConverterException} containing the {@link #ENUM_ID} message with
-     * proper parameters.</p>
-     *
-     * @throws ConverterException   {@inheritDoc}
-     * @throws NullPointerException {@inheritDoc}
-     */
-    public String getAsString(FacesContext context, UIComponent component,
-                              Object value) {
-
-        if (context == null || component == null) {
-            throw new NullPointerException();
-        }
-
-        if (targetClass == null) {
-            throw new ConverterException(
-                 MessageFactory.getMessage(context,
-                      ENUM_NO_CLASS_ID,
-                      value,
-                      MessageFactory.getLabel(context,
-                           component)));
-        }
-
-        // If the specified value is null, return null
-        if (value == null) {
-            return (null);
-        }
-
-        if (targetClass.isInstance(value)) {
-            return ((Enum)value).name();
-        }
-
-        throw new ConverterException(
-             MessageFactory.getMessage(context,
-                  ENUM_ID,
-                  value,
-                  value,
-                  MessageFactory.getLabel(context,
-                       component)));
-    }
-
-    // ----------------------------------------------------------- StateHolder
-
-    public void restoreState(FacesContext facesContext, Object object) {
-        if (facesContext == null) {
-            throw new NullPointerException();
-        }
-        if (object != null) {
-            this.targetClass = (Class<? extends Enum>) object;
-        }
-    }
-
-    public Object saveState(FacesContext facesContext) {
-        if (facesContext == null) {
-            throw new NullPointerException();
-        }
-        if (!initialStateMarked()) {
-            return this.targetClass;
-        }
-        return null;
-    }
-
-    private boolean isTransient = false;
-
-    public void setTransient(boolean b) {
-        isTransient = b;
-    }
-
-    public boolean isTransient() {
-        return isTransient;
-    }
-
-    private boolean initialState;
-
-    public void markInitialState() {
-        initialState = true;
-    }
-
-    public boolean initialStateMarked() {
-        return initialState;
-    }
-
-    public void clearInitialState() {
-        initialState = false;
-    }
-}
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package javax.faces.convert;
+
+
+import javax.faces.component.UIComponent;
+import javax.faces.component.PartialStateHolder;
+import javax.faces.context.FacesContext;
+
+
+/**
+ * <p><span class="changed_modified_2_0
+ * changed_modified_2_0_rev_a">{@link Converter}</span> implementation
+ * for <code>java.lang.Enum</code> (and enum primitive) values.</p>
+ *
+ * @since 1.2
+ */
+
+public class EnumConverter implements Converter, PartialStateHolder {
+
+    // for StateHolder
+    public EnumConverter() {
+
+    }
+
+    public EnumConverter(Class targetClass) {
+        this.targetClass = (Class<? extends Enum>) targetClass;
+    }
+
+    // ------------------------------------------------------ Manifest Constants
+
+
+    /**
+     * <p>The standard converter id for this converter.</p>
+     */
+    public static final String CONVERTER_ID = "javax.faces.Enum";
+
+    /**
+     * <p>The message identifier of the {@link javax.faces.application.FacesMessage} to be created if
+     * the conversion to <code>Enum</code> fails.  The message format
+     * string for this message may optionally include the following
+     * placeholders:
+     * <ul>
+     * <li><code>{0}</code> replaced by the unconverted value.</li>
+     * <li><code>{1}</code> replaced by one of the enum constants or the empty
+     * string if none can be found.</li>
+     * <li><code>{2}</code> replaced by a <code>String</code> whose value
+     * is the label of the input component that produced this message.</li>
+     * </ul></p>
+     */
+    public static final String ENUM_ID =
+         "javax.faces.converter.EnumConverter.ENUM";
+
+    /**
+     * <p>The message identifier of the {@link javax.faces.application.FacesMessage} to be created if
+     * the conversion to <code>Enum</code> fails and no target class has been
+     * provided.  The message format
+     * string for this message may optionally include the following
+     * placeholders:
+     * <ul>
+     * <li><code>{0}</code> replaced by the unconverted value.</li>
+     * <li><code>{1}</code> replaced by a <code>String</code> whose value
+     * is the label of the input component that produced this message.</li>
+     * </ul></p>
+     */
+    public static final String ENUM_NO_CLASS_ID =
+         "javax.faces.converter.EnumConverter.ENUM_NO_CLASS";
+
+    // ----------------------------------------------------- Converter Methods
+
+    private Class<? extends Enum> targetClass;
+
+
+    /**
+     * <p>Convert the <code>value</code> argument to one of the enum
+     * constants of the class provided in our constructor.  If no
+     * target class argument has been provided to the constructor of
+     * this instance, throw a <code>ConverterException</code>
+     * containing the {@link #ENUM_NO_CLASS_ID} message with proper
+     * parameters.  If the <code>value</code> argument is <code>null</code>
+     * or it  has a length of zero, return <code>null</code>.
+     * Otherwise, perform the equivalent of <code>Enum.valueOf</code> using
+     * target class and <code>value</code> and return the <code>Object</code>.
+     * If the conversion fails, throw a <code>ConverterException</code>
+     * containing the {@link #ENUM_ID} message with proper parameters.
+     * </p>
+     *
+     * @param context   the <code>FacesContext</code> for this request.
+     * @param component the <code>UIComponent</code> to which this value
+     *                  will be applied.
+     * @param value     the String <code>value</code> to be converted to
+     *                  <code>Object</code>.
+     * @throws ConverterException   {@inheritDoc}
+     * @throws NullPointerException {@inheritDoc}
+     */
+    public Object getAsObject(FacesContext context, UIComponent component,
+                              String value) {
+
+        if (context == null || component == null) {
+            throw new NullPointerException();
+        }
+
+        if (targetClass == null) {
+            throw new ConverterException(
+                 MessageFactory.getMessage(context,
+                      ENUM_NO_CLASS_ID,
+                      value,
+                      MessageFactory.getLabel(context,
+                           component)));
+        }
+
+        // If the specified value is null or zero-length, return null
+        if (value == null) {
+            return (null);
+        }
+        value = value.trim();
+        if (value.length() < 1) {
+            return (null);
+        }
+
+        try {
+            return Enum.valueOf(targetClass, value);
+        } catch (IllegalArgumentException iae) {
+            throw new ConverterException(
+                 MessageFactory.getMessage(context,
+                      ENUM_ID,
+                      value,
+                      value,
+                      MessageFactory.getLabel(context,
+                           component)), iae);
+        }
+
+    }
+
+    /**
+     * <p>Convert the enum constant given by the <code>value</code>
+     * argument into a String.  If no target class argument has been
+     * provided to the constructor of this instance, throw a
+     * <code>ConverterException</code> containing the {@link
+     * #ENUM_NO_CLASS_ID} message with proper parameters. If the
+     * <code>value</code> argument is <code>null</code>, return
+     * <code>null</code>.  If the value is an instance of the provided
+     * target class, return its string value by <span
+     * class="changed_added_2_0">casting it to a
+     * <code>java.lang.Enum</code> and returning the result of calling
+     * the <code>name()</code> method.</span> Otherwise, throw a {@link
+     * ConverterException} containing the {@link #ENUM_ID} message with
+     * proper parameters.</p>
+     *
+     * @throws ConverterException   {@inheritDoc}
+     * @throws NullPointerException {@inheritDoc}
+     */
+    public String getAsString(FacesContext context, UIComponent component,
+                              Object value) {
+
+        if (context == null || component == null) {
+            throw new NullPointerException();
+        }
+
+        if (targetClass == null) {
+            throw new ConverterException(
+                 MessageFactory.getMessage(context,
+                      ENUM_NO_CLASS_ID,
+                      value,
+                      MessageFactory.getLabel(context,
+                           component)));
+        }
+
+        // If the specified value is null, return null
+        if (value == null) {
+            // FIXSPEC even though the Javadoc states that we need to return 
+            // null the master Converter contract states that a null value 
+            // results in a zero-length string (see JAVASERVERFACES_SPEC_PUBLIC-1217)
+            return "";
+        }
+
+        if (targetClass.isInstance(value)) {
+            return ((Enum)value).name();
+        }
+
+        throw new ConverterException(
+             MessageFactory.getMessage(context,
+                  ENUM_ID,
+                  value,
+                  value,
+                  MessageFactory.getLabel(context,
+                       component)));
+    }
+
+    // ----------------------------------------------------------- StateHolder
+
+    public void restoreState(FacesContext facesContext, Object object) {
+        if (facesContext == null) {
+            throw new NullPointerException();
+        }
+        if (object != null) {
+            this.targetClass = (Class<? extends Enum>) object;
+        }
+    }
+
+    public Object saveState(FacesContext facesContext) {
+        if (facesContext == null) {
+            throw new NullPointerException();
+        }
+        if (!initialStateMarked()) {
+            return this.targetClass;
+        }
+        return null;
+    }
+
+    private boolean isTransient = false;
+
+    public void setTransient(boolean b) {
+        isTransient = b;
+    }
+
+    public boolean isTransient() {
+        return isTransient;
+    }
+
+    private boolean initialState;
+
+    public void markInitialState() {
+        initialState = true;
+    }
+
+    public boolean initialStateMarked() {
+        return initialState;
+    }
+
+    public void clearInitialState() {
+        initialState = false;
+    }
+}
diff --git a/jsf-api/src/main/java/javax/faces/convert/FacesConverter.java b/jsf-api/src/main/java/javax/faces/convert/FacesConverter.java
index 50c09cc..c67d262 100644
--- a/jsf-api/src/main/java/javax/faces/convert/FacesConverter.java
+++ b/jsf-api/src/main/java/javax/faces/convert/FacesConverter.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -43,17 +47,19 @@ import java.lang.annotation.Target;
 import java.lang.annotation.Inherited;
 
 /**
- * <p class="changed_added_2_0">The presence of this annotation on a
- * class automatically registers the class with the runtime as a {@link
- * Converter}.  The value of the {@link #value} attribute is taken to be
- * <em>converter-id</em>, the value of the {@link #forClass} attribute
- * is taken to be <em>converter-for-class</em> and the fully qualified
- * class name of the class to which this annotation is attached is taken
- * to be the <em>converter-class</em>.  The implementation must
- * guarantee that for each class annotated with
- * <code>FacesConverter</code>, found with the algorithm in section JSF.11.5,
- * the proper variant of <code>Application.addConverter()</code> is
- * called.  If <em>converter-id</em> is not the empty string, {@link
+ * <p class="changed_added_2_0"><span
+ * class="changed_modified_2_2">The</span> presence of this annotation
+ * on a class automatically registers the class with the runtime as a
+ * {@link Converter}.  The value of the {@link #value} attribute is
+ * taken to be <em>converter-id</em>, the value of the {@link #forClass}
+ * attribute is taken to be <em>converter-for-class</em> and the fully
+ * qualified class name of the class to which this annotation is
+ * attached is taken to be the <em>converter-class</em>.  The
+ * implementation must guarantee that for each class annotated with
+ * <code>FacesConverter</code>, found with the algorithm in section
+ * JSF.11.5, the proper variant of
+ * <code>Application.addConverter()</code> is called.  If
+ * <em>converter-id</em> is not the empty string, {@link
  * javax.faces.application.Application#addConverter(java.lang.String,java.lang.String)}
  * is called, passing the derived <em>converter-id</em> as the first
  * argument and the derived <em>converter-class</em> as the second
@@ -64,6 +70,26 @@ import java.lang.annotation.Inherited;
  * argument.  The implementation must guarantee that all such calls to
  * <code>addConverter()</code> happen during application startup time
  * and before any requests are serviced.</p>
+
+ * <div class="changed_added_2_2">
+
+ * <p>The preceding text contains an important
+ * subtlety which application users should understand.  It is not
+ * possible to use a single {@code @FacesConverter} annotation to
+ * register a single {@code Converter} implementation both in the {@code
+ * by-class} and the {@code by-converter-id} data structures.  One way
+ * to achieve this result is to put the actual converter logic in an
+ * abstract base class, without a {@code @FacesConverter} annotation,
+ * and derive two sub-classes, each with a {@code @FacesConverter}
+ * annotation.  One sub-class has a {@code value} attribute but no
+ * {@code forClass} attribute, and the other sub-class has the converse.</p>
+
+ * <p>Please see the ViewDeclarationLanguage documentation for {@code
+ * <h:selectManyListBox>} for another important subtlety regarding
+ * converters and collections.</p>
+
+ * </div>
+
  *
  */
 
diff --git a/jsf-api/src/main/java/javax/faces/convert/FloatConverter.java b/jsf-api/src/main/java/javax/faces/convert/FloatConverter.java
index 2aa5c9a..3b99a5b 100644
--- a/jsf-api/src/main/java/javax/faces/convert/FloatConverter.java
+++ b/jsf-api/src/main/java/javax/faces/convert/FloatConverter.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-api/src/main/java/javax/faces/convert/IntegerConverter.java b/jsf-api/src/main/java/javax/faces/convert/IntegerConverter.java
index aacc7ef..c65d209 100644
--- a/jsf-api/src/main/java/javax/faces/convert/IntegerConverter.java
+++ b/jsf-api/src/main/java/javax/faces/convert/IntegerConverter.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-api/src/main/java/javax/faces/convert/LongConverter.java b/jsf-api/src/main/java/javax/faces/convert/LongConverter.java
index 61b7a77..ebea00a 100644
--- a/jsf-api/src/main/java/javax/faces/convert/LongConverter.java
+++ b/jsf-api/src/main/java/javax/faces/convert/LongConverter.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-api/src/main/java/javax/faces/convert/NumberConverter.java b/jsf-api/src/main/java/javax/faces/convert/NumberConverter.java
index 8a3f36f..e1b8b00 100644
--- a/jsf-api/src/main/java/javax/faces/convert/NumberConverter.java
+++ b/jsf-api/src/main/java/javax/faces/convert/NumberConverter.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -51,9 +55,9 @@ import java.util.Locale;
 
 
 /**
- * <p>{@link Converter} implementation for <code>java.lang.Number</code>
- * values.</p>
- * <p/>
+ * <p><span class="changed_modified_2_0_rev_a">{@link Converter}</span>
+ * implementation for <code>java.lang.Number</code> values.</p>
+ *
  * <p>The <code>getAsObject()</code> method parses a String into an
  * <code>java.lang.Double</code> or <code>java.lang.Long</code>, according
  * to the following algorithm:</p>
@@ -578,7 +582,7 @@ public class NumberConverter implements Converter, PartialStateHolder {
                 ValueExpression ve = component.getValueExpression("value");
                 if (ve != null) {
                     Class<?> expectedType = ve.getType(context.getELContext());
-                    if (expectedType.isAssignableFrom(BigDecimal.class)) {
+                    if (expectedType != null && expectedType.isAssignableFrom(BigDecimal.class)) {
                         dParser.setParseBigDecimal(true);
                     }
                 }
diff --git a/jsf-api/src/main/java/javax/faces/convert/ShortConverter.java b/jsf-api/src/main/java/javax/faces/convert/ShortConverter.java
index 61ddde8..6c6fc42 100644
--- a/jsf-api/src/main/java/javax/faces/convert/ShortConverter.java
+++ b/jsf-api/src/main/java/javax/faces/convert/ShortConverter.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-api/src/main/java/javax/faces/convert/package.html b/jsf-api/src/main/java/javax/faces/convert/package.html
index 23ad44f..9075100 100644
--- a/jsf-api/src/main/java/javax/faces/convert/package.html
+++ b/jsf-api/src/main/java/javax/faces/convert/package.html
@@ -1,12 +1,55 @@
 <html>
 <head>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
     <title>Package Description for "javax.faces.convert"</title>
 </head>
 <body bgcolor="white">
 
-<p><span class="changed_modified_2_0">Contains</span> classes and
-interfaces defining converters.  The main class in this package is
-{@link javax.faces.convert.Converter}.</p>
+<p><span class="changed_modified_2_0
+changed_modified_2_0_rev_a changed_modified_2_2">Contains</span> classes and interfaces
+defining converters.  The main class in this package is {@link
+javax.faces.convert.Converter}.</p>
 
 </body>
 </html>
diff --git a/jsf-api/src/main/java/javax/faces/el/CompositeComponentExpressionHolder.java b/jsf-api/src/main/java/javax/faces/el/CompositeComponentExpressionHolder.java
index 560e1bd..be0f97d 100644
--- a/jsf-api/src/main/java/javax/faces/el/CompositeComponentExpressionHolder.java
+++ b/jsf-api/src/main/java/javax/faces/el/CompositeComponentExpressionHolder.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-api/src/main/java/javax/faces/el/EvaluationException.java b/jsf-api/src/main/java/javax/faces/el/EvaluationException.java
index 66a9855..c8bd423 100644
--- a/jsf-api/src/main/java/javax/faces/el/EvaluationException.java
+++ b/jsf-api/src/main/java/javax/faces/el/EvaluationException.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -34,7 +38,6 @@
  * holder.
  */
 
-
 package javax.faces.el;
 
 
diff --git a/jsf-api/src/main/java/javax/faces/el/MethodBinding.java b/jsf-api/src/main/java/javax/faces/el/MethodBinding.java
index 877cd16..729f3cc 100644
--- a/jsf-api/src/main/java/javax/faces/el/MethodBinding.java
+++ b/jsf-api/src/main/java/javax/faces/el/MethodBinding.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -34,7 +38,6 @@
  * holder.
  */
 
-
 package javax.faces.el;
 
 
diff --git a/jsf-api/src/main/java/javax/faces/el/MethodNotFoundException.java b/jsf-api/src/main/java/javax/faces/el/MethodNotFoundException.java
index d93cd55..66f5299 100644
--- a/jsf-api/src/main/java/javax/faces/el/MethodNotFoundException.java
+++ b/jsf-api/src/main/java/javax/faces/el/MethodNotFoundException.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -34,7 +38,6 @@
  * holder.
  */
 
-
 package javax.faces.el;
 
 
diff --git a/jsf-api/src/main/java/javax/faces/el/PropertyNotFoundException.java b/jsf-api/src/main/java/javax/faces/el/PropertyNotFoundException.java
index 3059a99..bf140c9 100644
--- a/jsf-api/src/main/java/javax/faces/el/PropertyNotFoundException.java
+++ b/jsf-api/src/main/java/javax/faces/el/PropertyNotFoundException.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -34,7 +38,6 @@
  * holder.
  */
 
-
 package javax.faces.el;
 
 
diff --git a/jsf-api/src/main/java/javax/faces/el/PropertyResolver.java b/jsf-api/src/main/java/javax/faces/el/PropertyResolver.java
index 7d4b08e..37dd642 100644
--- a/jsf-api/src/main/java/javax/faces/el/PropertyResolver.java
+++ b/jsf-api/src/main/java/javax/faces/el/PropertyResolver.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -34,7 +38,6 @@
  * holder.
  */
 
-
 package javax.faces.el;
 
 
diff --git a/jsf-api/src/main/java/javax/faces/el/ReferenceSyntaxException.java b/jsf-api/src/main/java/javax/faces/el/ReferenceSyntaxException.java
index 6cdb034..8f259f1 100644
--- a/jsf-api/src/main/java/javax/faces/el/ReferenceSyntaxException.java
+++ b/jsf-api/src/main/java/javax/faces/el/ReferenceSyntaxException.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -34,7 +38,6 @@
  * holder.
  */
 
-
 package javax.faces.el;
 
 
diff --git a/jsf-api/src/main/java/javax/faces/el/ValueBinding.java b/jsf-api/src/main/java/javax/faces/el/ValueBinding.java
index 64b5293..dad3226 100644
--- a/jsf-api/src/main/java/javax/faces/el/ValueBinding.java
+++ b/jsf-api/src/main/java/javax/faces/el/ValueBinding.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -34,7 +38,6 @@
  * holder.
  */
 
-
 package javax.faces.el;
 
 
diff --git a/jsf-api/src/main/java/javax/faces/el/VariableResolver.java b/jsf-api/src/main/java/javax/faces/el/VariableResolver.java
index affcf79..2a15229 100644
--- a/jsf-api/src/main/java/javax/faces/el/VariableResolver.java
+++ b/jsf-api/src/main/java/javax/faces/el/VariableResolver.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -34,7 +38,6 @@
  * holder.
  */
 
-
 package javax.faces.el;
 
 
diff --git a/jsf-api/src/main/java/javax/faces/el/package.html b/jsf-api/src/main/java/javax/faces/el/package.html
index 0452691..6e1a58c 100644
--- a/jsf-api/src/main/java/javax/faces/el/package.html
+++ b/jsf-api/src/main/java/javax/faces/el/package.html
@@ -1,5 +1,47 @@
 <html>
 <head>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
 <title>Package Description for "javax.faces.el"</title>
 </head>
 <body bgcolor="white">
diff --git a/jsf-api/src/main/java/javax/faces/event/AbortProcessingException.java b/jsf-api/src/main/java/javax/faces/event/AbortProcessingException.java
index 0dca156..388d382 100644
--- a/jsf-api/src/main/java/javax/faces/event/AbortProcessingException.java
+++ b/jsf-api/src/main/java/javax/faces/event/AbortProcessingException.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -34,7 +38,6 @@
  * holder.
  */
 
-
 package javax.faces.event;
 
 
diff --git a/jsf-api/src/main/java/javax/faces/event/ActionEvent.java b/jsf-api/src/main/java/javax/faces/event/ActionEvent.java
index 1c0cb9b..4549db1 100644
--- a/jsf-api/src/main/java/javax/faces/event/ActionEvent.java
+++ b/jsf-api/src/main/java/javax/faces/event/ActionEvent.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-api/src/main/java/javax/faces/event/ActionListener.java b/jsf-api/src/main/java/javax/faces/event/ActionListener.java
index fcea2c3..97ae75e 100644
--- a/jsf-api/src/main/java/javax/faces/event/ActionListener.java
+++ b/jsf-api/src/main/java/javax/faces/event/ActionListener.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -41,7 +45,7 @@ import javax.faces.component.UIComponent;
 
 
 /**
- * <p><span class="changed_modified_2_0">A</span> listener interface for 
+ * <p><span class="changed_modified_2_0 changed_modified_2_2">A</span> listener interface for 
  * receiving {@link ActionEvent}s.  <span class="changed_added_2_0">An
  * implementation
  * of this interface must be thread-safe.</span>  A class that
@@ -51,7 +55,16 @@ import javax.faces.component.UIComponent;
  */
 
 public interface ActionListener extends FacesListener  {
-
+    
+    /**
+     * <p class="changed_added_2_2">The presence of this component attribute
+     * on an {@link javax.faces.component.ActionSource} component will cause
+     * the default {@code ActionListener} to interpret the value of the 
+     * attribute as the <em>toFlowDocumentId</em> value to pass to
+     * {@link javax.faces.application.NavigationHandler#handleNavigation(javax.faces.context.FacesContext, java.lang.String, java.lang.String, java.lang.String)}.</p>
+     * 
+     */
+    public static final String TO_FLOW_DOCUMENT_ID_ATTR_NAME = "to-flow-document-id";
 
     /**
      * <p>Invoked when the action described by the specified
diff --git a/jsf-api/src/main/java/javax/faces/event/ActionListenerWrapper.java b/jsf-api/src/main/java/javax/faces/event/ActionListenerWrapper.java
new file mode 100644
index 0000000..0861357
--- /dev/null
+++ b/jsf-api/src/main/java/javax/faces/event/ActionListenerWrapper.java
@@ -0,0 +1,72 @@
+
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package javax.faces.event;
+
+import javax.faces.FacesWrapper;
+
+/**
+ * <p class="changed_added_2_2">Provides a simple implementation of
+ * {@link ActionListener} that can be subclassed by developers wishing to
+ * provide specialized behavior to an existing {@link ActionListener}
+ * instance.  The default implementation of all methods is to call
+ * through to the wrapped {@link ActionListener}.</p>
+ *
+ * <div class="changed_added_2_2">
+ *
+ * <p>Usage: extend
+ * this class and override {@link #getWrapped} to return the instance we
+ * are wrapping.</p>
+ *
+ * </div>
+ *
+ * @since 2.2
+ */
+public abstract class ActionListenerWrapper implements ActionListener, FacesWrapper<ActionListener> {
+
+    @Override    
+    public void processAction(ActionEvent event) throws AbortProcessingException {
+        getWrapped().processAction(event);
+    }
+
+    @Override
+    public abstract ActionListener getWrapped();
+    
+}
diff --git a/jsf-api/src/main/java/javax/faces/event/AjaxBehaviorEvent.java b/jsf-api/src/main/java/javax/faces/event/AjaxBehaviorEvent.java
index f9c6671..19e1237 100644
--- a/jsf-api/src/main/java/javax/faces/event/AjaxBehaviorEvent.java
+++ b/jsf-api/src/main/java/javax/faces/event/AjaxBehaviorEvent.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-api/src/main/java/javax/faces/event/AjaxBehaviorListener.java b/jsf-api/src/main/java/javax/faces/event/AjaxBehaviorListener.java
index 0fab8f8..c95eb1a 100644
--- a/jsf-api/src/main/java/javax/faces/event/AjaxBehaviorListener.java
+++ b/jsf-api/src/main/java/javax/faces/event/AjaxBehaviorListener.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-api/src/main/java/javax/faces/event/BehaviorEvent.java b/jsf-api/src/main/java/javax/faces/event/BehaviorEvent.java
index 89f9af8..4d080e8 100644
--- a/jsf-api/src/main/java/javax/faces/event/BehaviorEvent.java
+++ b/jsf-api/src/main/java/javax/faces/event/BehaviorEvent.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -38,7 +42,6 @@ package javax.faces.event;
 
 import javax.faces.component.UIComponent;
 import javax.faces.component.behavior.Behavior;
-import javax.faces.event.FacesEvent;
 
 /**
  * <p><strong class="changed_added_2_0">BehaviorEvent</strong> is
diff --git a/jsf-api/src/main/java/javax/faces/event/BehaviorListener.java b/jsf-api/src/main/java/javax/faces/event/BehaviorListener.java
index 17ee5bc..0cbfe95 100644
--- a/jsf-api/src/main/java/javax/faces/event/BehaviorListener.java
+++ b/jsf-api/src/main/java/javax/faces/event/BehaviorListener.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-api/src/main/java/javax/faces/event/ComponentSystemEvent.java b/jsf-api/src/main/java/javax/faces/event/ComponentSystemEvent.java
index 844f78e..c758eaa 100644
--- a/jsf-api/src/main/java/javax/faces/event/ComponentSystemEvent.java
+++ b/jsf-api/src/main/java/javax/faces/event/ComponentSystemEvent.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -37,10 +41,12 @@
 package javax.faces.event;
 
 import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
 
 /**
  *
- * <p><strong class="changed_added_2_0">ComponentSystemEvent</strong> is
+ * <p><strong class="changed_added_2_0 changed_modified_2_2">
+ * ComponentSystemEvent</strong> is
  * the base class for {@link SystemEvent}s that are specific to a {@link
  * UIComponent} instance.</p>
  *
@@ -69,6 +75,58 @@ public abstract class ComponentSystemEvent extends SystemEvent {
         super(component);
     }
 
+    /**
+     * <p class="changed_added_2_2">Return <code>true</code> if the argument
+     * {@link FacesListener} is an instance of the appropriate listener class that this event
+     * supports.  The default implementation returns true if the listener
+     * is a {@link ComponentSystemEventListener} or if <code>super.isAppropriateListener()</code>
+     * returns true.</p>
+     *
+     * @param listener {@link FacesListener} to evaluate
+     * @since 2.2
+     */
+    @Override
+    public boolean isAppropriateListener(FacesListener listener) {
+        boolean result = (listener instanceof ComponentSystemEventListener);
+        if (!result) {
+            result = super.isAppropriateListener(listener);
+        }
+        return result;
+    }
+
+    /**
+     * <p class="changed_added_2_2">Broadcast this event instance to 
+     * the specified {@link FacesListener} by calling the superclass's
+     * <code>processListener()</code> implementation.</p>
+     *
+     * @param listener {@link FacesListener} to evaluate
+     * @since 2.2
+     */
+    @Override
+    public void processListener(FacesListener listener) {
+        UIComponent c = getComponent();
+        UIComponent cFromStack;
+        boolean didPush = false;
+        FacesContext context = FacesContext.getCurrentInstance();
+        cFromStack = UIComponent.getCurrentComponent(context);
+        if (null == cFromStack) {
+            didPush = true;
+            c.pushComponentToEL(context, null);
+        }
+        try {
+            if (listener instanceof SystemEventListener) {
+                super.processListener(listener);
+            } else if (listener instanceof ComponentSystemEventListener) {
+                ((ComponentSystemEventListener)listener).processEvent(this);
+            }
+        } finally {
+            if (didPush) {
+                c.popComponentFromEL(context);
+            }
+        }
+    }
+    
+    
 
     // -------------------------------------------------------------- Properties
 
diff --git a/jsf-api/src/main/java/javax/faces/event/ComponentSystemEventListener.java b/jsf-api/src/main/java/javax/faces/event/ComponentSystemEventListener.java
index 771b1e9..bffb0a6 100644
--- a/jsf-api/src/main/java/javax/faces/event/ComponentSystemEventListener.java
+++ b/jsf-api/src/main/java/javax/faces/event/ComponentSystemEventListener.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-api/src/main/java/javax/faces/event/EventHierarchy.jpg b/jsf-api/src/main/java/javax/faces/event/EventHierarchy.jpg
index b375ab2..71792e8 100644
Binary files a/jsf-api/src/main/java/javax/faces/event/EventHierarchy.jpg and b/jsf-api/src/main/java/javax/faces/event/EventHierarchy.jpg differ
diff --git a/jsf-api/src/main/java/javax/faces/event/ExceptionQueuedEvent.java b/jsf-api/src/main/java/javax/faces/event/ExceptionQueuedEvent.java
index bd64a53..798db2c 100644
--- a/jsf-api/src/main/java/javax/faces/event/ExceptionQueuedEvent.java
+++ b/jsf-api/src/main/java/javax/faces/event/ExceptionQueuedEvent.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-api/src/main/java/javax/faces/event/ExceptionQueuedEventContext.java b/jsf-api/src/main/java/javax/faces/event/ExceptionQueuedEventContext.java
index 440dbf6..5a133ac 100644
--- a/jsf-api/src/main/java/javax/faces/event/ExceptionQueuedEventContext.java
+++ b/jsf-api/src/main/java/javax/faces/event/ExceptionQueuedEventContext.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-api/src/main/java/javax/faces/event/FacesEvent.java b/jsf-api/src/main/java/javax/faces/event/FacesEvent.java
index 74cc62b..dd3ee4e 100644
--- a/jsf-api/src/main/java/javax/faces/event/FacesEvent.java
+++ b/jsf-api/src/main/java/javax/faces/event/FacesEvent.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-api/src/main/java/javax/faces/event/FacesListener.java b/jsf-api/src/main/java/javax/faces/event/FacesListener.java
index 9cf5e50..e7c209a 100644
--- a/jsf-api/src/main/java/javax/faces/event/FacesListener.java
+++ b/jsf-api/src/main/java/javax/faces/event/FacesListener.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-api/src/main/java/javax/faces/event/ListenerFor.java b/jsf-api/src/main/java/javax/faces/event/ListenerFor.java
index 40f990d..6f0bb17 100644
--- a/jsf-api/src/main/java/javax/faces/event/ListenerFor.java
+++ b/jsf-api/src/main/java/javax/faces/event/ListenerFor.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-api/src/main/java/javax/faces/event/ListenersFor.java b/jsf-api/src/main/java/javax/faces/event/ListenersFor.java
index f569efe..ee41544 100644
--- a/jsf-api/src/main/java/javax/faces/event/ListenersFor.java
+++ b/jsf-api/src/main/java/javax/faces/event/ListenersFor.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -34,7 +38,6 @@
  * holder.
  */
 
-
 package javax.faces.event;
 
 import java.lang.annotation.Retention;
diff --git a/jsf-api/src/main/java/javax/faces/event/MethodExpressionActionListener.java b/jsf-api/src/main/java/javax/faces/event/MethodExpressionActionListener.java
index 7ad9566..ca13232 100644
--- a/jsf-api/src/main/java/javax/faces/event/MethodExpressionActionListener.java
+++ b/jsf-api/src/main/java/javax/faces/event/MethodExpressionActionListener.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -41,16 +45,13 @@ import javax.el.ELException;
 import javax.el.MethodExpression;
 import javax.faces.context.FacesContext;
 import javax.faces.component.StateHolder;
-
-import java.util.logging.Level;
 import java.util.logging.Logger;
-import java.io.StringWriter;
-import java.io.PrintWriter;
 import javax.el.MethodNotFoundException;
 
 /**
- * <p><strong><span
- * class="changed_modified_2_0">MethodExpressionActionListener</span></strong>
+ * <p><strong><span class="changed_modified_2_0
+ * changed_modified_2_0_rev_a
+ * changed_modified_2_2">MethodExpressionActionListener</span></strong>
  * is an {@link ActionListener} that wraps a {@link
  * MethodExpression}. When it receives a {@link ActionEvent}, it
  * executes a method on an object identified by the {@link
@@ -116,68 +117,43 @@ public class MethodExpressionActionListener implements ActionListener,
     // ------------------------------------------------------- Event Method
 
     /**
-     * <p><span class="changed_modified_2_0">Call</span> through to the
-     * {@link MethodExpression} passed in our constructor.  <span
+     * <p><span class="changed_modified_2_0
+     * changed_modified_2_2">Call</span> through to the {@link
+     * MethodExpression} passed in our constructor.  <span
      * class="changed_added_2_0">First, try to invoke the
      * <code>MethodExpression</code> passed to the constructor of this
      * instance, passing the argument {@link ActionEvent} as the
      * argument.  If a {@link MethodNotFoundException} is thrown, call
      * to the zero argument <code>MethodExpression</code> derived from
      * the <code>MethodExpression</code> passed to the constructor of
-     * this instance.  If that fails for any reason, throw an {@link
-     * AbortProcessingException}, including the cause of the
-     * failure.</span></p>
+     * this instance.  <span class="changed_deleted_2_2"><del>If that
+     * fails for any reason, throw an {@link AbortProcessingException},
+     * including the cause of the failure.</del></span></span></p>
      * 
      * @throws NullPointerException {@inheritDoc}     
      * @throws AbortProcessingException {@inheritDoc}     
      */
     public void processAction(ActionEvent actionEvent) throws AbortProcessingException {
 
-        Throwable cause = null;
-        Throwable thrown = null;
         if (actionEvent == null) {
             throw new NullPointerException();
         }
+        
         FacesContext context = FacesContext.getCurrentInstance();
         ELContext elContext = context.getELContext();
+
         try {
-            methodExpressionOneArg.invoke(elContext, new Object[] {actionEvent});
-        } catch (MethodNotFoundException mnfe) {
-          if (null != methodExpressionZeroArg) {
-                try {
-                    // try to invoke a no-arg version
-                    methodExpressionZeroArg.invoke(elContext, new Object[]{});
-                }
-                catch (ELException ee) {
-                    cause = ee.getCause();
-                    thrown = ee;
-                }
-              
-          }
+            try {
+                methodExpressionOneArg.invoke(elContext, new Object[] {actionEvent});
+            } catch (MethodNotFoundException mnfe) {
+                methodExpressionZeroArg.invoke(elContext, new Object[]{});
+            }
         } catch (ELException ee) {
-            cause = ee.getCause();
-            thrown = ee;
-        }
-        if (null != thrown) {
-            if (LOGGER.isLoggable(Level.SEVERE)) {
-                LOGGER.log(Level.SEVERE,
-                           "severe.event.exception_invoking_processaction",
-                           new Object[]{
-                                 cause == null ? thrown.getClass().getName() : cause.getClass().getName(),
-                                 methodExpressionOneArg.getExpressionString(),
-                                 actionEvent.getComponent().getId()
-                           });
-                StringWriter writer = new StringWriter(1024);
-                if (cause == null) {
-                    thrown.printStackTrace(new PrintWriter(writer));
-                } else {
-                    cause.printStackTrace(new PrintWriter(writer));
-                }
-                LOGGER.severe(writer.toString());
+            if (ee.getCause() instanceof AbortProcessingException) {
+                throw (AbortProcessingException) ee.getCause();
+            } else {
+                throw (ELException) ee;
             }
-            throw cause == null ? new AbortProcessingException(thrown.getMessage(), 
-                    thrown) : new AbortProcessingException(thrown.getMessage(), cause);
-            
         }
     }
 
diff --git a/jsf-api/src/main/java/javax/faces/event/MethodExpressionValueChangeListener.java b/jsf-api/src/main/java/javax/faces/event/MethodExpressionValueChangeListener.java
index 728f253..5aab918 100644
--- a/jsf-api/src/main/java/javax/faces/event/MethodExpressionValueChangeListener.java
+++ b/jsf-api/src/main/java/javax/faces/event/MethodExpressionValueChangeListener.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -37,15 +41,15 @@
 package javax.faces.event;
 
 import javax.el.ELContext;
-import javax.el.ELException;
 import javax.el.MethodExpression;
 import javax.el.MethodNotFoundException;
 import javax.faces.context.FacesContext;
 import javax.faces.component.StateHolder;
 
 /**
- * <p><strong><span
- * class="changed_modified_2_0">MethodExpressionValueChangeListener</span></strong>
+ * <p><strong><span class="changed_modified_2_0
+ * changed_modified_2_0_rev_a
+ * changed_modified_2_2">MethodExpressionValueChangeListener</span></strong>
  * is a {@link ValueChangeListener} that wraps a {@link
  * MethodExpression}. When it receives a {@link ValueChangeEvent}, it
  * executes a method on an object identified by the {@link
@@ -111,19 +115,21 @@ public class MethodExpressionValueChangeListener implements ValueChangeListener,
     // ------------------------------------------------------- Event Method
 
     /**
-     * <p><span class="changed_modified_2_0">Call</span> through to the
-     * {@link MethodExpression} passed in our constructor.  <span
-     * class="changed_added_2_0">First, try to invoke the
+     * <p><span
+     * class="changed_modified_2_0 changed_modified_2_2">Call</span>
+     * through to the {@link MethodExpression} passed in our
+     * constructor.  <span class="changed_added_2_0">First, try to
+     * invoke the <code>MethodExpression</code> passed to the
+     * constructor of this instance, passing the argument {@link
+     * ValueChangeEvent} as the argument.  If a {@link
+     * MethodNotFoundException} is thrown, call to the zero argument
+     * <code>MethodExpression</code> derived from the
      * <code>MethodExpression</code> passed to the constructor of this
-     * instance, passing the argument {@link ValueChangeEvent} as the
-     * argument.  If a {@link MethodNotFoundException} is thrown, call
-     * to the zero argument <code>MethodExpression</code> derived from
-     * the <code>MethodExpression</code> passed to the constructor of
-     * this instance.  If that fails for any reason, throw an {@link
-     * AbortProcessingException}, including the cause of the
-     * failure.</span></p>
+     * instance.  <span class="changed_deleted_2_2"><del>If that fails
+     * for any reason, throw an {@link AbortProcessingException},
+     * including the cause of the failure.</del></span></span></p>
      * 
-     * @throws NullPointerException {@inheritDoc}     
+     * @throws NullPointerException if the argument valueChangeEvent is null.
      * @throws AbortProcessingException {@inheritDoc}     
      */ 
     public void processValueChange(ValueChangeEvent valueChangeEvent) throws AbortProcessingException {
@@ -141,17 +147,10 @@ public class MethodExpressionValueChangeListener implements ValueChangeListener,
         } catch (MethodNotFoundException mnf) {
             if (null != methodExpressionZeroArg) {
 
-                try {
-                    // try to invoke a no-arg version
-                    methodExpressionZeroArg.invoke(elContext, new Object[]{});
-                }
-                catch (ELException ee) {
-                    throw new AbortProcessingException(ee.getMessage(), ee.getCause());
-                }
+                // try to invoke a no-arg version
+                methodExpressionZeroArg.invoke(elContext, new Object[]{});
             }
-        } catch (ELException ee) {
-            throw new AbortProcessingException(ee.getMessage(), ee.getCause());
-        }
+        } 
     }
 
 
diff --git a/jsf-api/src/main/java/javax/faces/event/NamedEvent.java b/jsf-api/src/main/java/javax/faces/event/NamedEvent.java
index 4d94254..9d2c8b1 100644
--- a/jsf-api/src/main/java/javax/faces/event/NamedEvent.java
+++ b/jsf-api/src/main/java/javax/faces/event/NamedEvent.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-api/src/main/java/javax/faces/event/PhaseEvent.java b/jsf-api/src/main/java/javax/faces/event/PhaseEvent.java
index 9afc916..dc3882b 100644
--- a/jsf-api/src/main/java/javax/faces/event/PhaseEvent.java
+++ b/jsf-api/src/main/java/javax/faces/event/PhaseEvent.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-api/src/main/java/javax/faces/event/PhaseId.java b/jsf-api/src/main/java/javax/faces/event/PhaseId.java
index 2148859..dd82be0 100644
--- a/jsf-api/src/main/java/javax/faces/event/PhaseId.java
+++ b/jsf-api/src/main/java/javax/faces/event/PhaseId.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -40,10 +44,12 @@ package javax.faces.event;
 import java.util.Arrays;
 import java.util.Collections;
 import java.util.List;
+import javax.faces.FacesException;
 
 
 /**
- * <p>Typesafe enumeration of the legal values that may be returned by the
+ * <p><span class="changed_modified_2_2">Typesafe</span> enumeration of
+ * the legal values that may be returned by the
  * <code>getPhaseId()</code> method of the {@link FacesEvent} interface.
  */
 
@@ -113,6 +119,59 @@ public class PhaseId implements Comparable {
 
         return (String.valueOf(this.phaseName) + ' ' + this.ordinal);
     }
+    
+    /**
+     * <p class="changed_added_2_2">Return the name of this phase.</p>
+     * 
+     * @since 2.2
+     */
+
+    public String getName() {
+        return this.phaseName;
+    }
+
+    /**
+     * <p class="changed_added_2_2">Return a <code>PhaseId</code>
+     * representation of the arcument <code>phase</code>.</p>
+     * 
+     * @param phase the String for which the corresponding
+     * <code>PhaseId</code> should be returned.
+     *
+     * @throws <code>NullPointerException</code> if argument <code>phase</code> is
+     * <code>null</code>.
+     *
+     * @throws <code>FacesException</code> if the <code>PhaseId</code>
+     * corresponding to the argument <code>phase</code> cannot be found.
+     *
+     * @since 2.2
+     */
+    
+    public static PhaseId phaseIdValueOf(String phase) {
+        if (null == phase) {
+            throw new NullPointerException();
+        }
+        PhaseId result = null;
+
+        if (ANY_PHASE_NAME.equals(phase)) {
+            result = PhaseId.ANY_PHASE;
+        } else if (APPLY_REQUEST_VALUES_NAME.equalsIgnoreCase(phase)) {
+            result = PhaseId.APPLY_REQUEST_VALUES;
+        } else if (INVOKE_APPLICATION_NAME.equalsIgnoreCase(phase)) {
+            result = PhaseId.INVOKE_APPLICATION;
+        } else if (PROCESS_VALIDATIONS_NAME.equalsIgnoreCase(phase)) {
+            result = PhaseId.PROCESS_VALIDATIONS;
+        } else if (RENDER_RESPONSE_NAME.equalsIgnoreCase(phase)) {
+            result = PhaseId.RENDER_RESPONSE;
+        } else if (RESTORE_VIEW_NAME.equalsIgnoreCase(phase)) {
+            result = PhaseId.RESTORE_VIEW;
+        } else if (UPDATE_MODEL_VALUES_NAME.equalsIgnoreCase(phase)) {
+            result = PhaseId.UPDATE_MODEL_VALUES;
+        } else {
+            throw new FacesException("Not a valid phase [" + phase + "]");
+        }
+        
+        return result;
+    }
 
 
     // ------------------------------------------------------- Static Variables
diff --git a/jsf-api/src/main/java/javax/faces/event/PhaseListener.java b/jsf-api/src/main/java/javax/faces/event/PhaseListener.java
index 036dc82..285020a 100644
--- a/jsf-api/src/main/java/javax/faces/event/PhaseListener.java
+++ b/jsf-api/src/main/java/javax/faces/event/PhaseListener.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-api/src/main/java/javax/faces/event/PostAddToViewEvent.java b/jsf-api/src/main/java/javax/faces/event/PostAddToViewEvent.java
index bc626f1..83410a5 100644
--- a/jsf-api/src/main/java/javax/faces/event/PostAddToViewEvent.java
+++ b/jsf-api/src/main/java/javax/faces/event/PostAddToViewEvent.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -40,8 +44,9 @@ import javax.faces.component.UIComponent;
 
 /**
  *
- * <p class="changed_added_2_0">When an instance of this event is passed
- * to {@link SystemEventListener#processEvent} or {@link
+ * <p class="changed_added_2_0"><span
+ * class="changed_modified_2_2">When</span> an instance of this event is
+ * passed to {@link SystemEventListener#processEvent} or {@link
  * ComponentSystemEventListener#processEvent}, the listener
  * implementation may assume that the <code>source</code> of this event
  * instance is a {@link UIComponent} instance and that either that
@@ -51,7 +56,7 @@ import javax.faces.component.UIComponent;
  * methods that depend upon the component instance being added into the
  * view.</p>
  *
- * <div class="changed_added_2_0">
+ * <div class="changed_added_2_0 changed_deleted_2_2">
  *
  * <p>The implementation must guarantee that {@link
  * javax.faces.application.Application#publishEvent} is called,
@@ -65,6 +70,35 @@ import javax.faces.component.UIComponent;
  * javax.faces.application.Application#publishEvent} must not be called.</p>
  * 
  * </div>
+
+ * <div class="changed_added_2_2">
+
+ * <p>The implementation must guarantee that {@link
+ * javax.faces.application.Application#publishEvent} is called in the
+ * following cases.</p>
+
+ * 	<ul>
+
+	  <li><p>Upon the initial construction of the view, when each
+	  instance is added to the view.</p></li>
+
+	  <li><p>On a non-initial rendering of the view, if a component
+	  is added to the view by the View Declaration Language
+	  implememtation as a result of changes in evaluation result of
+	  EL expressions referenced by VDL tags such as
+	  <code>c:if</code>, <code>ui:include</code>, and other tags
+	  that dynamically influence the assembly of the view.</p></li>
+
+	  <li><p>If a component is programmatically added to the view
+	  using the Java API directly.  For example, user code manually
+	  adds children using <code>comp.getChildren().add()</code>,
+	  where <code>comp</code> is a <code>UIComponent</code>.
+	  </p></li>
+
+	</ul>
+
+
+ * </div>
  *
  * @since 2.0
  */
diff --git a/jsf-api/src/main/java/javax/faces/event/PostAddToViewNonPDLEvent.java b/jsf-api/src/main/java/javax/faces/event/PostAddToViewNonPDLEvent.java
deleted file mode 100644
index 433506c..0000000
--- a/jsf-api/src/main/java/javax/faces/event/PostAddToViewNonPDLEvent.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package javax.faces.event;
-
-import javax.faces.component.UIComponent;
-
-/**
- *
- * <p>Erroneously added.  Please ignore.</p>
- *
- * @since 2.0
- */
-public class PostAddToViewNonPDLEvent extends PostAddToViewEvent {
-
-    
-
-    public PostAddToViewNonPDLEvent(UIComponent component) {
-        super(component);
-
-    }    
-
-}
diff --git a/jsf-api/src/main/java/javax/faces/event/PostConstructApplicationEvent.java b/jsf-api/src/main/java/javax/faces/event/PostConstructApplicationEvent.java
index 4a3ff9c..d66e03a 100644
--- a/jsf-api/src/main/java/javax/faces/event/PostConstructApplicationEvent.java
+++ b/jsf-api/src/main/java/javax/faces/event/PostConstructApplicationEvent.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -34,7 +38,6 @@
  * holder.
  */
 
-
 package javax.faces.event;
 
 import javax.faces.application.Application;
diff --git a/jsf-api/src/main/java/javax/faces/event/PostConstructCustomScopeEvent.java b/jsf-api/src/main/java/javax/faces/event/PostConstructCustomScopeEvent.java
index 3d1af18..8ac6203 100644
--- a/jsf-api/src/main/java/javax/faces/event/PostConstructCustomScopeEvent.java
+++ b/jsf-api/src/main/java/javax/faces/event/PostConstructCustomScopeEvent.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-api/src/main/java/javax/faces/event/PostConstructViewMapEvent.java b/jsf-api/src/main/java/javax/faces/event/PostConstructViewMapEvent.java
index d6620af..310f6b6 100644
--- a/jsf-api/src/main/java/javax/faces/event/PostConstructViewMapEvent.java
+++ b/jsf-api/src/main/java/javax/faces/event/PostConstructViewMapEvent.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-api/src/main/java/javax/faces/event/PostKeepFlashValueEvent.java b/jsf-api/src/main/java/javax/faces/event/PostKeepFlashValueEvent.java
new file mode 100644
index 0000000..404033c
--- /dev/null
+++ b/jsf-api/src/main/java/javax/faces/event/PostKeepFlashValueEvent.java
@@ -0,0 +1,78 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package javax.faces.event;
+
+import javax.faces.context.Flash;
+
+/**
+ *
+ * <p class="changed_added_2_2">This event must be published by a call
+ * to {@link javax.faces.application.Application#publishEvent} when a value
+ * is kept in the flash.</p>
+ *
+ * @since 2.2
+ */
+public class PostKeepFlashValueEvent extends SystemEvent {
+
+    private static final long serialVersionUID = -7137725846753823862L;
+
+    // ------------------------------------------------------------ Constructors
+
+
+    /**
+     * <p class="changed_added_2_2">Instantiate a new
+     * <code>PostKeepFlashValueEvent</code> that indicates the argument
+     * <code>key</code> was just kept in the flash. If the argument is 
+     * <code>null</code>, the literal {@link Flash#NULL_VALUE} must be passed
+     * to the superclass constructor.</p>
+
+     * @param key the key in the flash that was just kept.
+     *
+     */
+    public PostKeepFlashValueEvent(String key) {
+        super(null == key ? Flash.NULL_VALUE : key);
+    }
+    
+    public String getKey() {
+        return getSource().toString();
+    }
+
+}
diff --git a/jsf-api/src/main/java/javax/faces/event/PostPutFlashValueEvent.java b/jsf-api/src/main/java/javax/faces/event/PostPutFlashValueEvent.java
new file mode 100644
index 0000000..4d98315
--- /dev/null
+++ b/jsf-api/src/main/java/javax/faces/event/PostPutFlashValueEvent.java
@@ -0,0 +1,78 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package javax.faces.event;
+
+import javax.faces.context.Flash;
+
+/**
+ *
+ * <p class="changed_added_2_2">This event must be published by a call
+ * to {@link javax.faces.application.Application#publishEvent} when a value
+ * is stored in the flash.</p>
+ *
+ * @since 2.2
+ */
+public class PostPutFlashValueEvent extends SystemEvent {
+
+    private static final long serialVersionUID = -6422204761759384353L;;
+
+    // ------------------------------------------------------------ Constructors
+
+
+    /**
+     * <p class="changed_added_2_2">Instantiate a new
+     * <code>PostPutFlashValueEvent</code> that indicates the argument
+     * <code>key</code> was just put to the flash. If the argument is 
+     * <code>null</code>, the literal {@link Flash#NULL_VALUE} must be passed
+     * to the superclass constructor.</p>
+
+     * @param key the key in the flash that was just added.
+     *
+     */
+    public PostPutFlashValueEvent(String key) {
+        super(null == key ? Flash.NULL_VALUE : key);
+    }
+    
+    public String getKey() {
+        return getSource().toString();
+    }
+
+}
diff --git a/jsf-api/src/main/java/javax/faces/event/PostRestoreStateEvent.java b/jsf-api/src/main/java/javax/faces/event/PostRestoreStateEvent.java
index 7484efb..a7a10ee 100644
--- a/jsf-api/src/main/java/javax/faces/event/PostRestoreStateEvent.java
+++ b/jsf-api/src/main/java/javax/faces/event/PostRestoreStateEvent.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-api/src/main/java/javax/faces/event/PostValidateEvent.java b/jsf-api/src/main/java/javax/faces/event/PostValidateEvent.java
index da397db..0f083ae 100644
--- a/jsf-api/src/main/java/javax/faces/event/PostValidateEvent.java
+++ b/jsf-api/src/main/java/javax/faces/event/PostValidateEvent.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -33,14 +37,27 @@
  * only if the new code is made subject to such option by the copyright
  * holder.
  */
+
 package javax.faces.event;
 
 import javax.faces.component.UIComponent;
 
 /**
  *
- * <p class="changed_added_2_0"></p>
- *
+ * <p class="changed_added_2_0 changed_added_2_1">When an instance of
+ * this event is passed to {@link SystemEventListener#processEvent} or
+ * {@link ComponentSystemEventListener#processEvent}, the listener
+ * implementation may assume that the <code>source</code> of this event
+ * instance is the {@link UIComponent} instance that is that has just
+ * been validated.</p>
+
+ * <p class="changed_added_2_1">Components with children must publish this
+ * event after processing their child nodes in
+ * {@link UIComponent#processValidators}.  This is especially important for
+ * iterating components such as
+ * <code>UIData</code>, and form components, such as <code>UIForm</code>.
+ * </p>
+
  * @since 2.0
  */
 public class PostValidateEvent extends ComponentSystemEvent {
diff --git a/jsf-api/src/main/java/javax/faces/event/PreClearFlashEvent.java b/jsf-api/src/main/java/javax/faces/event/PreClearFlashEvent.java
new file mode 100644
index 0000000..762e50e
--- /dev/null
+++ b/jsf-api/src/main/java/javax/faces/event/PreClearFlashEvent.java
@@ -0,0 +1,74 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package javax.faces.event;
+
+import java.util.Map;
+
+/**
+ *
+ * <p class="changed_added_2_2">This event must be published by a call
+ * to {@link javax.faces.application.Application#publishEvent} before the flash
+ * is cleared.</p>
+ *
+ * @since 2.2
+ */
+public class PreClearFlashEvent extends SystemEvent {
+
+    private static final long serialVersionUID = -6069648757590884651L;
+
+    // ------------------------------------------------------------ Constructors
+
+
+    /**
+     * <p class="changed_added_2_2">Instantiate a new
+     * <code>PreClearFlashEvent</code> that indicates the argument
+     * <code>key</code> was just put to the flash.</p>
+
+     * @param source Map containing the values about to be cleared  This need not
+     * be the actual {@link javax.faces.context.Flash} instance.
+     *
+     * @throws <code>IllegalArgumentException</code> if the argument is <code>null</code>.
+     */
+    public PreClearFlashEvent(Map<String, Object> source) {
+        super(source);
+    }
+    
+}
diff --git a/jsf-api/src/main/java/javax/faces/event/PreDestroyApplicationEvent.java b/jsf-api/src/main/java/javax/faces/event/PreDestroyApplicationEvent.java
index 4d9a6cc..ca62591 100644
--- a/jsf-api/src/main/java/javax/faces/event/PreDestroyApplicationEvent.java
+++ b/jsf-api/src/main/java/javax/faces/event/PreDestroyApplicationEvent.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-api/src/main/java/javax/faces/event/PreDestroyCustomScopeEvent.java b/jsf-api/src/main/java/javax/faces/event/PreDestroyCustomScopeEvent.java
index e819b15..d26d614 100644
--- a/jsf-api/src/main/java/javax/faces/event/PreDestroyCustomScopeEvent.java
+++ b/jsf-api/src/main/java/javax/faces/event/PreDestroyCustomScopeEvent.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-api/src/main/java/javax/faces/event/PreDestroyViewMapEvent.java b/jsf-api/src/main/java/javax/faces/event/PreDestroyViewMapEvent.java
index 38e3000..db1d4ab 100644
--- a/jsf-api/src/main/java/javax/faces/event/PreDestroyViewMapEvent.java
+++ b/jsf-api/src/main/java/javax/faces/event/PreDestroyViewMapEvent.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-api/src/main/java/javax/faces/event/PreRemoveFlashValueEvent.java b/jsf-api/src/main/java/javax/faces/event/PreRemoveFlashValueEvent.java
new file mode 100644
index 0000000..04a1d9b
--- /dev/null
+++ b/jsf-api/src/main/java/javax/faces/event/PreRemoveFlashValueEvent.java
@@ -0,0 +1,78 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package javax.faces.event;
+
+import javax.faces.context.Flash;
+
+/**
+ *
+ * <p class="changed_added_2_2">This event must be published by a call
+ * to {@link javax.faces.application.Application#publishEvent} when a value
+ * is removed from the flash.</p>
+ *
+ * @since 2.2
+ */
+public class PreRemoveFlashValueEvent extends SystemEvent {
+
+    private static final long serialVersionUID = -82999687346960430L;
+    
+    // ------------------------------------------------------------ Constructors
+
+
+    /**
+     * <p class="changed_added_2_2">Instantiate a new
+     * <code>PreRemoveFlashValueEvent</code> that indicates the argument
+     * <code>key</code> will be removed from the flash. If the argument is 
+     * <code>null</code>, the literal {@link Flash#NULL_VALUE} must be passed
+     * to the superclass constructor.</p>
+
+     * @param key the key in the flash that was just added.
+     *
+     */
+    public PreRemoveFlashValueEvent(String key) {
+        super(null == key ? Flash.NULL_VALUE : key);
+    }
+    
+    public String getKey() {
+        return getSource().toString();
+    }
+
+}
diff --git a/jsf-api/src/main/java/javax/faces/event/PreRemoveFromViewEvent.java b/jsf-api/src/main/java/javax/faces/event/PreRemoveFromViewEvent.java
index 1f5709d..0e5402b 100644
--- a/jsf-api/src/main/java/javax/faces/event/PreRemoveFromViewEvent.java
+++ b/jsf-api/src/main/java/javax/faces/event/PreRemoveFromViewEvent.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-api/src/main/java/javax/faces/event/PreRenderComponentEvent.java b/jsf-api/src/main/java/javax/faces/event/PreRenderComponentEvent.java
index aae3eee..9f546e8 100644
--- a/jsf-api/src/main/java/javax/faces/event/PreRenderComponentEvent.java
+++ b/jsf-api/src/main/java/javax/faces/event/PreRenderComponentEvent.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-api/src/main/java/javax/faces/event/PreRenderViewEvent.java b/jsf-api/src/main/java/javax/faces/event/PreRenderViewEvent.java
index 6fb7045..3301e8d 100644
--- a/jsf-api/src/main/java/javax/faces/event/PreRenderViewEvent.java
+++ b/jsf-api/src/main/java/javax/faces/event/PreRenderViewEvent.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-api/src/main/java/javax/faces/event/PreValidateEvent.java b/jsf-api/src/main/java/javax/faces/event/PreValidateEvent.java
index c96971f..46ee94f 100644
--- a/jsf-api/src/main/java/javax/faces/event/PreValidateEvent.java
+++ b/jsf-api/src/main/java/javax/faces/event/PreValidateEvent.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -40,7 +44,19 @@ import javax.faces.component.UIComponent;
 
 /**
  *
- * <p class="changed_added_2_0"></p>
+ * <p class="changed_added_2_0 changed_added_2_1">When an instance of
+ * this event is passed to {@link SystemEventListener#processEvent} or
+ * {@link ComponentSystemEventListener#processEvent}, the listener
+ * implementation may assume that the <code>source</code> of this event
+ * instance is the {@link UIComponent} instance that is about to be
+ * validated.</p>
+
+ * <p class="changed_added_2_1">Components with children
+ * must publish this event before processing their child nodes in
+ * {@link UIComponent#processValidators}.  This is especially important for
+ * iterating components such as
+ * <code>UIData</code>, and form components, such as <code>UIForm</code>.</p>
+
  *
  * @since 2.0
  */
diff --git a/jsf-api/src/main/java/javax/faces/event/ScopeContext.java b/jsf-api/src/main/java/javax/faces/event/ScopeContext.java
index efb8442..a181830 100644
--- a/jsf-api/src/main/java/javax/faces/event/ScopeContext.java
+++ b/jsf-api/src/main/java/javax/faces/event/ScopeContext.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-api/src/main/java/javax/faces/event/SystemEvent.java b/jsf-api/src/main/java/javax/faces/event/SystemEvent.java
index 3d6a846..7d7b449 100644
--- a/jsf-api/src/main/java/javax/faces/event/SystemEvent.java
+++ b/jsf-api/src/main/java/javax/faces/event/SystemEvent.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -39,8 +43,8 @@ package javax.faces.event;
 import java.util.EventObject;
 
 /**
- * <p><strong class="changed_added_2_0">SystemEvent</strong> is the base
- * class for non-application specific events that can be fired by
+ * <p><strong class="changed_added_2_0 changed_modified_2_2">SystemEvent</strong> 
+ * is the base class for non-application specific events that can be fired by
  * arbitrary objects.</p>
  *
  * @since 2.0
@@ -72,9 +76,11 @@ public abstract class SystemEvent extends EventObject {
 
 
     /**
-     * <p>Return <code>true</code> if this {@link FacesListener} is an
+     * <p><span class="changed_modified_2_2">Return</span> <code>true</code> 
+     * if this {@link FacesListener} is an
      * instance of a the appropriate listener class that this event
-     * supports.</p>
+     * supports. <span class="changed_added_2_2">The default implementation returns true if the listener
+     * is a {@link ComponentSystemEventListener}.</span></p>
      *
      * @param listener {@link FacesListener} to evaluate
      */
diff --git a/jsf-api/src/main/java/javax/faces/event/SystemEventListener.java b/jsf-api/src/main/java/javax/faces/event/SystemEventListener.java
index 72d3afc..04ebd84 100644
--- a/jsf-api/src/main/java/javax/faces/event/SystemEventListener.java
+++ b/jsf-api/src/main/java/javax/faces/event/SystemEventListener.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-api/src/main/java/javax/faces/event/SystemEventListenerHolder.java b/jsf-api/src/main/java/javax/faces/event/SystemEventListenerHolder.java
index 2263664..4e20993 100644
--- a/jsf-api/src/main/java/javax/faces/event/SystemEventListenerHolder.java
+++ b/jsf-api/src/main/java/javax/faces/event/SystemEventListenerHolder.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-api/src/main/java/javax/faces/event/ValueChangeEvent.java b/jsf-api/src/main/java/javax/faces/event/ValueChangeEvent.java
index b9e42f7..21e4e68 100644
--- a/jsf-api/src/main/java/javax/faces/event/ValueChangeEvent.java
+++ b/jsf-api/src/main/java/javax/faces/event/ValueChangeEvent.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-api/src/main/java/javax/faces/event/ValueChangeListener.java b/jsf-api/src/main/java/javax/faces/event/ValueChangeListener.java
index cdab2b5..2de056b 100644
--- a/jsf-api/src/main/java/javax/faces/event/ValueChangeListener.java
+++ b/jsf-api/src/main/java/javax/faces/event/ValueChangeListener.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-api/src/main/java/javax/faces/event/ViewMapListener.java b/jsf-api/src/main/java/javax/faces/event/ViewMapListener.java
index 12dcfdf..ef36aba 100644
--- a/jsf-api/src/main/java/javax/faces/event/ViewMapListener.java
+++ b/jsf-api/src/main/java/javax/faces/event/ViewMapListener.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-api/src/main/java/javax/faces/event/package.html b/jsf-api/src/main/java/javax/faces/event/package.html
index cce1349..8f5bc60 100644
--- a/jsf-api/src/main/java/javax/faces/event/package.html
+++ b/jsf-api/src/main/java/javax/faces/event/package.html
@@ -1,10 +1,53 @@
 <html>
 <head>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
 <title>Package Description for "javax.faces.event"</title>
 </head>
 <body bgcolor="white">
 
-<p><span class="changed_modified_2_0">Interfaces</span> describing
+<p><span class="changed_modified_2_0 changed_modified_2_0_rev_a
+changed_modified_2_1 changed_modified_2_2">Interfaces</span> describing
 events and event listeners, and concrete event implementation classes.
 All events extend from {@link javax.faces.event.FacesEvent} and all
 listeners extend from {@link javax.faces.event.FacesListener}.</p>
diff --git a/jsf-api/src/main/java/javax/faces/flow/Flow.java b/jsf-api/src/main/java/javax/faces/flow/Flow.java
new file mode 100644
index 0000000..e718c6f
--- /dev/null
+++ b/jsf-api/src/main/java/javax/faces/flow/Flow.java
@@ -0,0 +1,247 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package javax.faces.flow;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import javax.el.MethodExpression;
+import javax.faces.application.NavigationCase;
+import javax.faces.lifecycle.ClientWindow;
+
+/**
+ * <p class="changed_added_2_2"><strong>Flow</strong> is the runtime
+ * representation of a Faces Flow.  Once placed into service by the
+ * runtime, an instance of this class is immutable.  The implementation
+ * must be thread-safe because instances will be shared across all
+ * usages of the flow within the application.</p>
+ *
+ *
+ * @since 2.2
+ */
+
+public abstract class Flow {
+    
+    // <editor-fold defaultstate="collapsed" desc="Simple properties">       
+
+
+    /**
+     * <p class="changed_added_2_2">Return the immutable id for this
+     * Flow.  This must be unique within the defining document (such as
+     * an Application Configuration Resources file), but need not be
+     * unique within the entire application.</p>
+
+     * @since 2.2
+     */
+
+    public abstract String getId();
+
+    /**
+     * <p class="changed_added_2_2">Return the immutable application unique 
+     * identifier for the document in which the argument flow is defined.</p>
+
+     * @since 2.2
+     */
+
+    public abstract String getDefiningDocumentId();
+
+    /**
+     * <p class="changed_added_2_2">Return the immutable id for the
+     * default node that should be activated when this flow is
+     * entered.</p>
+     *
+     * @since 2.2
+     */
+    
+    public abstract String getStartNodeId();
+
+    /**
+     * <p class="changed_added_2_2">Return the {@code MethodExpression}
+     * that must be called by the runtime as the last thing that happens
+     * before exiting this flow.  Any {@link FlowScoped} beans declared
+     * for this flow must remain in scope until after control returns
+     * from the method referenced by this {@code MethodExpression}.</p>
+
+     * <div class="changed_added_2_2">
+
+     * </div>
+
+     * @since 2.2
+     */
+
+    public abstract MethodExpression getFinalizer();
+
+    /**
+     * <p class="changed_added_2_2">Return the {@code MethodExpression}
+     * that must be called by the runtime immediately after activating
+     * any {@link FlowScoped} beans declared for this flow.</p>
+
+     * <div class="changed_added_2_2">
+
+     * </div>
+
+     * @since 2.2
+     */
+    public abstract MethodExpression getInitializer();
+    
+    // </editor-fold>
+    
+    // <editor-fold defaultstate="collapsed" desc="Graph properties">       
+
+    /**
+     * <p class="changed_added_2_2">Return an immutable data structure
+     * containing the inbound parameters that have been declared for
+     * this flow.  See {@link FlowHandler#transition} for the
+     * specification of how these parameters are used.  Inbound
+     * parameters are associated with a specific flow instance, while
+     * outbound parameters are associated with a {@link FlowCallNode}
+     * that causes the transition to a new flow.</p>
+
+     * <div class="changed_added_2_2">
+
+     * </div>
+
+     * @since 2.2
+     */
+
+    public abstract Map<String, Parameter> getInboundParameters();
+
+    /**
+     * <p class="changed_added_2_2">Return an immutable data structure
+     * containing all of the view nodes declared for this flow.</p>
+
+     * <div class="changed_added_2_2">
+
+     * </div>
+
+     * @since 2.2
+     */
+    public abstract List<ViewNode> getViews();
+    
+    /**
+     * <p class="changed_added_2_2">Return an immutable data structure
+     * containing all of the return nodes declared for this flow.</p>
+
+     * <div class="changed_added_2_2">
+
+     * </div>
+
+     * @since 2.2
+     */
+    public abstract Map<String,ReturnNode> getReturns();
+    
+    /**
+     * <p class="changed_added_2_2">Return an immutable data structure
+     * containing all of the switch nodes declared for this flow.</p>
+
+     * <div class="changed_added_2_2">
+
+     * </div>
+
+     * @since 2.2
+     */
+    public abstract Map<String,SwitchNode> getSwitches();
+    
+    /**
+     * <p class="changed_added_2_2">Return an immutable data structure
+     * containing all the flow call nodes declared for this flow.</p>
+
+     * <div class="changed_added_2_2">
+
+     * </div>
+
+     * @since 2.2
+     */
+    public abstract Map<String,FlowCallNode> getFlowCalls();
+    
+    /**
+     * <p class="changed_added_2_2">Return the {@link FlowCallNode} that
+     * represents calling the {@code targetFlow} from this flow, or
+     * {@code null} if {@code targetFlow} cannot be reached from this
+     * flow.</p>
+
+     * <div class="changed_added_2_2">
+
+     * </div>
+
+     * @since 2.2
+     */
+    public abstract FlowCallNode getFlowCall(Flow targetFlow);
+
+    /**
+     * <p class="changed_added_2_2">Return an immutable data structure
+     * containing all the method call nodes declared for this flow.</p>
+
+     * <div class="changed_added_2_2">
+
+     * </div>
+
+     * @since 2.2
+     */
+    public abstract List<MethodCallNode> getMethodCalls();
+
+    // </editor-fold>
+    
+    // <editor-fold defaultstate="collapsed" desc="Graph navigation">
+    
+    public abstract FlowNode getNode(String nodeId);
+    
+    public abstract Map<String, Set<NavigationCase>> getNavigationCases();
+    
+    // </editor-fold>
+    
+    // <editor-fold defaultstate="collapsed" desc="Outside interaction">       
+    
+    
+    /**
+     * <p class="changed_added_2_2">Obtain the current {@link
+     * javax.faces.lifecycle.ClientWindow} from the {@link
+     * javax.faces.context.ExternalContext}.  Get the window's id and 
+     * append "_" and the return from {@link #getId}.  Return the result.</p>
+     *
+     * @since 2.2
+     */
+    
+    public abstract String getClientWindowFlowId(ClientWindow curWindow);
+    
+    // </editor-fold>
+
+}
diff --git a/jsf-api/src/main/java/javax/faces/flow/FlowCallNode.java b/jsf-api/src/main/java/javax/faces/flow/FlowCallNode.java
new file mode 100644
index 0000000..a298d5b
--- /dev/null
+++ b/jsf-api/src/main/java/javax/faces/flow/FlowCallNode.java
@@ -0,0 +1,54 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package javax.faces.flow;
+
+import java.util.Map;
+import javax.faces.context.FacesContext;
+
+public abstract class FlowCallNode extends FlowNode {
+    
+    public abstract Map<String, Parameter> getOutboundParameters();
+
+    public abstract String getCalledFlowDocumentId(FacesContext context);
+
+    public abstract String getCalledFlowId(FacesContext context);
+    
+}
diff --git a/jsf-api/src/main/java/javax/faces/flow/FlowHandler.java b/jsf-api/src/main/java/javax/faces/flow/FlowHandler.java
new file mode 100644
index 0000000..0aed28b
--- /dev/null
+++ b/jsf-api/src/main/java/javax/faces/flow/FlowHandler.java
@@ -0,0 +1,471 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package javax.faces.flow;
+
+import java.util.Map;
+import javax.faces.context.FacesContext;
+
+/**
+ * <p class="changed_added_2_2"><strong>FlowHandler</strong> is the main
+ * entry point that enables the runtime to interact with the faces flows
+ * feature.  {@link
+ * javax.faces.application.NavigationHandler} uses this
+ * class when it needs to make navigational decisions related to flows.
+ * The faces flow feature entirely depends on the {@link
+ * javax.faces.lifecycle.ClientWindow} feature and also on CDI.</p>
+ 
+ * <div class="changed_added_2_2">
+
+ * <p><strong>Defining Flows</strong></p>
+
+ * <p>The implementation must support defining faces flows using the
+ * <code><flow-definition></code> element as specified in
+ * the <a target="_"
+ * href="../../../web-facesconfig.html#type_faces-config-flow-definitionType">Application
+ * Configuration Resources XML Schema Definition</a>, or by using the 
+ * {@link javax.faces.flow.builder.FlowBuilder} API.  Additional means
+ * of defining flows may be provided by decorating the {@link
+ * FlowHandlerFactory}.</p>
+
+ * <p><strong>Managing Flows</strong></p>
+
+ * <ul>
+
+ * <p>The singleton instance of this class must be thread safe, and
+ * therefore must not store any per-user state.  Flows are, however,
+ * traversed in a per-user manner, and must be associated with the
+ * current {@link javax.faces.lifecycle.ClientWindow}.  Furthermore,
+ * Flows may be nested.  These requirements strongly suggest managing
+ * the flows with a stack-like runtime data structure, stored in a
+ * per-user fashion and associated with the {@code ClientWindow}.</p>
+
+ * <p><strong>The Flow Graph</strong></p>
+
+ * <p>Prior versions of the specification defined a flow graph but the
+ * only kind of node in the graph was a VDL view.  The Faces Flow
+ * feature currently defines the following node types.</p>
+
+ * <ul>
+
+ * <li><p>View</p>
+
+ * <p>This is the regular JSF VDL View that has been in the
+ * specification since the beginning.</p>
+
+ * </li>
+
+ * <li><p>Switch</p>
+
+ * <p>This is a list of EL expressions.  When control is passed to a
+ * switch node, each expression in the list is evaluated and the first
+ * one that returns {@code true} is used to define the id of the next
+ * node to which control must be passed.  If none of the expressions
+ * evaluates to {@code true}, control passes to the specified default
+ * id.</p>
+
+ * </li>
+
+ * <li><p>Return</p>
+
+ * <p>This node type specifies an outcome that is returned to the
+ * calling flow.</p>
+
+ * </li>
+
+ * <li><p>Method Call</p>
+
+ * <p>This node type allows invocation of arbitrary application logic at
+ * any point in the executiong of the flow.  An outcome can be specified
+ * that will cause a navigation case to be navigated to after the method
+ * has been invoked.</p>
+
+ * </li>
+
+ * <li><p>Faces Flow Call</p>
+
+ * <p>This node type allows one flow to call another flow.  The calling
+ * flow remains active and is not exited until control returns from the
+ * called flow.</p>
+
+ * </li>
+
+ * </ul>
+ * 
+ * <p>Edges in the graph are defined by the existing JSF navigation rule system.</p>
+
+ * <p><strong>Flows and Model Objects</strong></p>
+
+ * <ul>
+
+ * <p>Managed beans annotated with the CDI annotation
+ * {@link FlowScoped} must be instantiated upon a user agent's entry
+ * into the named scope, and must be made available for garbage
+ * collection when the user agent leaves the flow.</p>
+
+ * <p>The <code>flowScope</code> EL implicit object is also
+ * available to store values in the "current" slope.  Values stored in
+ * this scope must be made available for garbage collection when the
+ * user agent leaves the flow.</p>
+
+ * </ul>
+
+ * </div>
+
+ * @since 2.2
+     
+ */ 
+
+public abstract class FlowHandler {
+    
+    
+    /**
+     * <p class="changed_added_2_2">Components that are rendered by <code>Renderers</code>
+     * of component-family <code>javax.faces.OutcomeTarget</code> must use this
+     * constant as the parameter name for a parameter representing the flow id
+     * of the flow that this component will cause to be entered.</p>
+     * 
+     * <p class="changed_added_2_2"></p>
+     * 
+     * @since 2.2
+     */
+    public static final String FLOW_ID_REQUEST_PARAM_NAME = "jffi";
+    
+    /**
+     * <p class="changed_added_2_2">Components that are rendered by <code>Renderers</code>
+     * of component-family <code>javax.faces.OutcomeTarget</code> must use this
+     * constant as the parameter name for a parameter representing the defining document id
+     * of the flow that this component will cause to be entered.</p>
+     * 
+     * @since 2.2
+     */
+    public static final String TO_FLOW_DOCUMENT_ID_REQUEST_PARAM_NAME = "jftfdi";
+    
+    
+    /**
+     * <p class="changed_added_2_2">Components that are rendered by <code>Renderers</code>
+     * of component-family <code>javax.faces.OutcomeTarget</code> must use this
+     * constant as the value of the parameter named by {@link #TO_FLOW_DOCUMENT_ID_REQUEST_PARAM_NAME}
+     * when returning from a flow (without entering another flow) using such a component. </p>
+
+     * @since 2.2
+     */
+    
+    public static final String NULL_FLOW = "javax.faces.flow.NullFlow";
+
+    /**
+     * <p class="changed_added_2_2">Return the {@code Map} that backs
+     * the {@code #{flowScope}} EL implicit object or {@code null}
+     * if no flow is currently active. </p>
+     *
+     * @since 2.2
+     */ 
+    
+    public abstract Map<Object, Object> getCurrentFlowScope();
+    
+    /**
+     * <p class="changed_added_2_2">Return the {@link Flow} whose {@code
+     * id} is equivalent to the argument {@code id}, within the scope of
+     * the argument {@code definingDocument}. </p>
+
+     * @param context the {@code FacesContext} for the current request.
+
+     * @param definingDocumentId An application unique identifier
+     * for the document in which the returned flow is defined.
+
+     * @param id the id of a {@link Flow}, unique within the
+     * scope of the {@code definingDocument}.
+
+     * @throws NullPointerException if any of the parameters are {@code null}
+     *
+     * @since 2.2
+     */ 
+    
+    public abstract Flow getFlow(FacesContext context, String definingDocumentId, String id);
+    
+    /**
+     * <p class="changed_added_2_2">Add the argument {@link Flow} to the
+     * collection of {@code Flow}s known to the current
+     * application.  The implementation must be thread safe.</p>
+
+     * @param context the {@code FacesContext} for the current request.
+
+     * @param toAdd the {@code Flow} to add.
+
+     * @throws NullPointerException if any of the parameters are {@code null}
+     *
+     * @throws IllegalStateException if there is already a flow with the
+     * same {@code id} as the argument {@code Flow} within the scope of
+     * the {@code definingDocument}.  
+
+     * @throws IllegalArgumentException if the {@code id} of the flow to
+     * add is {@code null} or the empty string.
+
+     * @throws IllegalArgumentException if the {@code
+     * definingDocumentId} of the {@code toAdd} is {@code null}.
+
+     * @since 2.2
+     */ 
+    public abstract void addFlow(FacesContext context, Flow toAdd);
+    
+    /**
+     * <p class="changed_added_2_2">Return the currently active {@link
+     * Flow} for the argument {@code FacesContext}, or {@code null} if
+     * no flow is active.  A {@code Flow} must always be associated with
+     * exactly one {@link javax.faces.lifecycle.ClientWindow}, but a
+     * {@code ClientWindow} may have multiple {@code Flow}s.</p>
+     * 
+     * <div class="changed_added_2_2">
+     * 
+     * <p>If {@link #pushReturnMode} had been called with {@code true} as the
+     * argument before invoking this method, return the preceding flow on 
+     * the stack instead of the actual current flow, or {@code null} if there 
+     * is no preceding flow.  Otherwise, return the current flow.</p>
+     * 
+     * </div>
+     *
+     * @param context the {@code FacesContext} for the current request.
+     * 
+     * @throws NullPointerException if any of the parameters are {@code null}
+     *
+     * @since 2.2
+     */
+    public abstract Flow getCurrentFlow(FacesContext context);
+    
+    /**
+     * <p class="changed_added_2_2">Convenience overload that calls {@link FacesContext#getCurrentInstance()}
+     * and then calls through to {@link #getCurrentFlow(javax.faces.context.FacesContext)}. </p>
+     * 
+     * @since 2.2
+     */
+    public Flow getCurrentFlow() {
+        return getCurrentFlow(FacesContext.getCurrentInstance());
+    }
+    
+    /**
+     * <p class="changed_added_2_2">Return the last displayed viewId for the 
+     * current flow, as returned by {@link #getCurrentFlow(javax.faces.context.FacesContext)}, 
+     * or {@code null} if there is no current flow.</p>
+     * 
+     * @param context the {@code FacesContext} for the current request.
+     * 
+     * @throws NullPointerException if {@code context} is {@code null}
+     * 
+     * @since 2.2
+     */
+    
+    public abstract String getLastDisplayedViewId(FacesContext context);
+    
+    /**
+     * <p class="changed_added_2_2">Enable the correct handling of navigation
+     * when processing a return node.  The default {@link javax.faces.application.NavigationHandler}
+     * specification requires calling this method before processing
+     * the navigation rules for the flow return, and calling {@link #popReturnMode}, 
+     * from a {@code finally} block, immediately afterward.</p>
+     * 
+     * @param context the {@code FacesContext} for the current request.
+
+     * @throws NullPointerException if {@code context} is {@code null}.
+     * 
+     * @since 2.2
+     */
+    
+    public abstract void pushReturnMode(FacesContext context);
+
+    /**
+     * <p class="changed_added_2_2">Enable the correct handling of navigation
+     * when processing a return node.  The default {@link javax.faces.application.NavigationHandler}
+     * specification requires calling this method from a {@code finally} block, 
+     * immediately attempting to process the navigation rules in the context
+     * of a flow return.</p>
+     * 
+     * @param context the {@code FacesContext} for the current request.
+
+     * @throws NullPointerException if {@code context} is {@code null}.
+     * 
+     * @since 2.2
+     */
+    
+    public abstract void popReturnMode(FacesContext context);
+    
+    /**
+     * <p class="changed_added_2_2">Perform a transition in the flow
+     * graph for the current user's {@link
+     * javax.faces.lifecycle.ClientWindow}.  Obtain references to the
+     * {@code Flow} instances corresponding to the {@code origin} and
+     * {@code destination} arguments.  If the {@code origin Flow} is
+     * equal to the {@code destination Flow}, take no action and return
+     * {@code null}.  Otherwise, if the {@code outboundCallNode}
+     * argument is non-{@code null} save aside the outbound parameters.
+     * For discussion <strong>evaluatedParams</strong> is a data
+     * structure that stores the evaluated values of any outbound
+     * parameters.  It is necessary to evaluate these values before
+     * popping any flow scopes because the values may refer to scoped
+     * instances that need to be passed to the target flow, but will not
+     * be available once the new scope is activated.  Save aside the
+     * outbound parameters using the following algorithm.</p>
+
+     * <div class="changed_added_2_2">
+
+     * <ul>
+
+     * <p>If the {@code outboundParameters} property of {@code
+     * outboundCallNode} is non-{@code null} and not empty, and the
+     * {@code inboundParameters} property of the target flow is
+     * non-{@code null} and not empty, for each entry in the outbound
+     * parameters whose name matches an entry in the inbound parameters,
+     * evaluate the value of the parameter, and put the evaluated value
+     * into <strong>evaluatedParams</strong> under the corresponding
+     * name.  Otherwise, consider <strong>evaluatedParams</strong> to be
+     * empty.</p>
+
+     * </ul>
+
+     * <p>If the {@code destination Flow} is a sub-flow of the {@code
+     * origin Flow} push the {@code destination Flow} onto the flow data
+     * structure and return {@code the destination Flow}. Otherwise, pop
+     * the current {@code Flow} from the flow data structure.  If the
+     * {@code destination Flow} is non-{@code null}, make the {@code
+     * destination Flow} the current flow, pushing it onto the data
+     * structure.  If <strong>evaluatedParams</strong> is not empty, for
+     * each entry, find the corresponding parameter in the target flow's
+     * inbound parameters and call its {@code setValue} method, passing
+     * the value from <strong>evaluatedParams</strong>.</p>
+     * 
+     * </div>
+     * 
+     * @param context the {@code FacesContext} for the current request.
+
+     * @param sourceFlow the current {@code Flow}, or {@code null} if
+     * there is no source flow.
+     * 
+     * @param targetFlow the destination {@code Flow}, or {@code null}
+     * if there is no destination flow.
+     * 
+     * @param outboundCallNode the flow call node causing this
+     * transition, or {@code null} if this transition is not caused by a
+     * flow call.
+     * 
+     * @param toViewId the viewId of the view being displayed as a result of 
+     * this transition.  This parameter makes it possible to implement {@link #getLastDisplayedViewId}.
+     * 
+     * @throws NullPointerException if {@code context} or {@code toViewId} is {@code null}.
+     *
+
+     * @since 2.2
+     */
+            
+    public abstract void transition(FacesContext context, Flow sourceFlow, 
+                                    Flow targetFlow, 
+                                    FlowCallNode outboundCallNode, String toViewId);
+    
+    /**
+     * <p class="changed_added_2_2">Allow for flow transitions in the
+     * case of components rendered by the renderers from
+     * component-family <code>javax.faces.OutcomeTarget</code>.  These
+     * transitions must happen at the front of the request processing
+     * lifecycle due to the HTTP GET based nature of such components.
+     * Therefore, this method is called from the restore view phase of
+     * the lifecycle.</p>
+
+     * <div class="changed_added_2_2">
+
+     * <p>Let <em>flowId</em> be the value in the request parameter map
+     * for the parameter whose name is given by the value of {@link
+     * #FLOW_ID_REQUEST_PARAM_NAME}.  Let <em>toFlowDocumentId</em> be
+     * the value in the request parameter map for the paramater whose
+     * name is given by the value of {@link
+     * #TO_FLOW_DOCUMENT_ID_REQUEST_PARAM_NAME}.  If
+     * <em>toFlowDocumentId</em> is <code>null</code>, take no action
+     * and return.  Otherwise, let <em>sourceFlow</em> be the return
+     * from {@link #getCurrentFlow(javax.faces.context.FacesContext)}. A
+     * <code>null</code> value indicates there is no current flow, which
+     * will be the case if this navigation is trying to enter a flow. If
+     * <em>flowId</em> is not <code>null</code> and
+     * <em>toFlowDocumentId</em> is <strong>not</strong> equal to the
+     * value of {@link #NULL_FLOW}, let <em>targetFlow</em> be the
+     * result of calling {@link
+     * #getFlow(javax.faces.context.FacesContext, java.lang.String,
+     * java.lang.String)}, passing <em>toFlowDocumentId</em> and
+     * <em>flowId</em> as the last two arguments, respectively.  If the
+     * result is non-<code>null</code>, let <em>flowCallNode</em> be the
+     * return from calling {@link Flow#getFlowCall} on the
+     * <em>sourceFlow</em>, passing <em>targetFlow</em> as the argument.
+     * Otherwise, <em>targetFlow</em> and <em>flowCallNode</em> must
+     * remain <code>null</code>, indicating that this is a flow
+     * return. Call {@link FacesContext#getViewRoot()} and let <em>toViewId</em>
+     * be the the return from calling {@link javax.faces.component.UIViewRoot#getViewId}
+     * on it.</p>
+
+     * <p>Call, {@link #transition}, passing the arguments gathered in
+     * the preceding algorithm.</p>
+     *
+     * </div>
+
+     * @since 2.2
+     * 
+     * @param context the {@code FacesContext} for the current request.
+
+     * @throws NullPointerException if {@code context} is {@code null}.
+     */
+    
+    public abstract void clientWindowTransition(FacesContext context);
+    
+
+    /**
+     * <p class="changed_added_2_2">Return {@code true} if and only if
+     * the flow referenced by the argument {@code definingDocument} and
+     * {@code id} is currently active.</p>
+
+     * @param context the {@code FacesContext} for the current request.
+
+     * @param definingDocument An application unique identifier
+     * for the document in which the returned flow is defined.
+
+     * @param id the id of a {@link Flow}, unique within the
+     * scope of the {@code definingDocument}.
+
+     * @throws NullPointerException if any of the parameters are {@code null}
+     *
+     * @since 2.2
+     */
+    public abstract boolean isActive(FacesContext context, String definingDocument, String id);
+        
+}
diff --git a/jsf-api/src/main/java/javax/faces/flow/FlowHandlerFactory.java b/jsf-api/src/main/java/javax/faces/flow/FlowHandlerFactory.java
new file mode 100644
index 0000000..f7df7c5
--- /dev/null
+++ b/jsf-api/src/main/java/javax/faces/flow/FlowHandlerFactory.java
@@ -0,0 +1,72 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package javax.faces.flow;
+
+import javax.faces.context.FacesContext;
+
+/**
+ * <p class="changed_added_2_2"><strong>FlowHandlerFactory</strong> is
+ * used by the {@link javax.faces.application.Application} to create the
+ * singleton instance of {@link FlowHandler}.</p>
+ * 
+ * @since 2.2
+ */
+public abstract class FlowHandlerFactory {
+
+    public FlowHandlerFactory() {
+    }
+    
+    /**
+     * <p class="changed_added_2_2">Create the singleton instance of
+     * {@link FlowHandler}.</p>
+     * 
+     * @since 2.2
+     */
+    public abstract FlowHandler createFlowHandler(FacesContext context);
+
+
+}
diff --git a/jsf-api/src/main/java/javax/faces/flow/FlowHandlerFactoryWrapper.java b/jsf-api/src/main/java/javax/faces/flow/FlowHandlerFactoryWrapper.java
new file mode 100644
index 0000000..7b702cf
--- /dev/null
+++ b/jsf-api/src/main/java/javax/faces/flow/FlowHandlerFactoryWrapper.java
@@ -0,0 +1,80 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+ * Copyright (c) 2011 Oracle and/or its affiliates. All rights reserved.
+
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package javax.faces.flow;
+
+import javax.faces.context.FacesContext;
+import javax.faces.FacesWrapper;
+
+/**
+ * <p
+ * class="changed_added_2_2"><strong>FlowHandlerFactoryWrapper</strong>
+ * provides a simple implementation of {@link FlowHandlerFactory} that
+ * can be subclassed by developers wishing to provide specialized
+ * behavior to an existing {@link FlowHandlerFactory} instance.  The
+ * default implementation of all methods is to call through to the
+ * wrapped {@link FlowHandlerFactory} instance.</p>
+ *
+ * <p class="changed_added_2_2>Usage: extend this class and override 
+ * {@link #getWrapped} to
+ * return the instance being wrapping.</p>
+ *
+ * @since 2.2
+ */
+public abstract class FlowHandlerFactoryWrapper extends FlowHandlerFactory implements FacesWrapper<FlowHandlerFactory> {
+
+    public FlowHandlerFactoryWrapper() {
+    }
+    
+    /**
+     * <p class="changed_added_2_2">A class that implements this
+     * interface uses this method to return an instance of the class
+     * being wrapped.</p>
+     *
+     * @since 2.2
+     */
+    @Override
+    public abstract FlowHandlerFactory getWrapped();
+
+    @Override
+    public FlowHandler createFlowHandler(FacesContext context) {
+        return getWrapped().createFlowHandler(context);
+    }
+    
+}
diff --git a/jsf-api/src/main/java/javax/faces/flow/FlowHierarchy.jpg b/jsf-api/src/main/java/javax/faces/flow/FlowHierarchy.jpg
new file mode 100644
index 0000000..a3806a6
Binary files /dev/null and b/jsf-api/src/main/java/javax/faces/flow/FlowHierarchy.jpg differ
diff --git a/jsf-api/src/main/java/javax/faces/flow/FlowNode.java b/jsf-api/src/main/java/javax/faces/flow/FlowNode.java
new file mode 100644
index 0000000..c576108
--- /dev/null
+++ b/jsf-api/src/main/java/javax/faces/flow/FlowNode.java
@@ -0,0 +1,56 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package javax.faces.flow;
+
+/**
+ * <p class="changed_added_2_2"><strong>FlowNode</strong> is the base
+ * class for all nodes in a faces flow graph.</p>
+ *
+ *
+ * @since 2.2
+ */
+
+public abstract class FlowNode {
+    
+    public abstract String getId();
+
+    
+}
diff --git a/jsf-api/src/main/java/javax/faces/flow/FlowScoped.java b/jsf-api/src/main/java/javax/faces/flow/FlowScoped.java
new file mode 100644
index 0000000..6b13817
--- /dev/null
+++ b/jsf-api/src/main/java/javax/faces/flow/FlowScoped.java
@@ -0,0 +1,94 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package javax.faces.flow;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Inherited;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+import javax.enterprise.context.NormalScope;
+
+/**
+ * <p class="changed_added_2_2"><strong>FlowScoped</strong> is a CDI
+ * scope that causes the runtime to consider classes with this
+ * annotation to be in the scope of the specified {@link Flow}.  The
+ * implementation must provide an implementation of {@code
+ * javax.enterprise.inject.spi.Extension} that implements the semantics
+ * such that beans with this annotation are created when the user enters
+ * into the specified {@code Flow}, and de-allocated when the user exits
+ * the specified {@code Flow}.  See {@link FlowHandler#transition} for
+ * the specification of flow entry and exit.</p>
+ * 
+ * @since 2.2
+ */
+
+
+ at NormalScope
+ at Inherited
+ at Documented
+ at Target(ElementType.TYPE)
+ at Retention(value = RetentionPolicy.RUNTIME)
+public @interface FlowScoped {
+
+   
+    /**
+     * <p class="changed_added_2_2">Must be equivalent to the {@link
+     * Flow#getId} of a defined flow for this application.</p>
+     *
+     * @since 2.2
+     */
+    String value();
+
+    /**
+     * <p class="changed_added_2_2">If not empty, declare the defining
+     * document id within which the {@link Flow} referenced by {@link
+     * #value} is unique.  If empty the, the runtime assumes that all flow
+     * ids are unique within the scope of the application.</p>
+     *
+     * @since 2.2
+     */
+    
+    String definingDocumentId() default "";
+
+}
diff --git a/jsf-api/src/main/java/javax/faces/flow/MethodCallNode.java b/jsf-api/src/main/java/javax/faces/flow/MethodCallNode.java
new file mode 100644
index 0000000..229fd35
--- /dev/null
+++ b/jsf-api/src/main/java/javax/faces/flow/MethodCallNode.java
@@ -0,0 +1,87 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package javax.faces.flow;
+
+import java.util.List;
+import javax.el.MethodExpression;
+import javax.el.ValueExpression;
+
+/**
+ * <p class="changed_added_2_2">Represents a method call node in the flow graph.
+ * When control passes to a method call node, its {@code MethodExpression} is
+ * invoked, passing any parameters.  Let <em>outcome</em> be the value determined
+ * by the following algorithm.  If there is a {@code null} return from the invocation, 
+ * {@link #getOutcome} is called.  If the result is non-{@code null}, its {@code getValue()} method 
+ * is called and the value is considered to be <em>outcome</em>. If there is a non-{@code null} return,
+ * let it be <em>outcome</em>.  Convert <em>outcome</em> to a String by calling 
+ * its {@code toString} method.  Use <em>outcome</em> to determine the next
+ * node in the flow graph.</p>
+ * 
+ * @since 2.2
+ */
+
+public abstract class MethodCallNode extends FlowNode {
+    
+    /**
+     * <p class="changed_added_2_2">Return the {@code MethodExpression} to be
+     * invoked to when control passes to this node.</p>
+     * 
+     * @since 2.2
+     */
+    public abstract MethodExpression getMethodExpression();
+
+    /**
+     * <p class="changed_added_2_2">Return the {@code outcome} to be
+     * used in the event of a {@code null} return from the method.</p>
+     * 
+     * @since 2.2
+     */
+    public abstract ValueExpression getOutcome();
+    
+    /**
+     * <p class="changed_added_2_2">Return the parameters to be passed
+     * to the method.</p>
+     * 
+     * @since 2.2
+     */
+    public abstract List<Parameter> getParameters();
+
+}
diff --git a/jsf-api/src/main/java/javax/faces/flow/Parameter.java b/jsf-api/src/main/java/javax/faces/flow/Parameter.java
new file mode 100644
index 0000000..2d8af55
--- /dev/null
+++ b/jsf-api/src/main/java/javax/faces/flow/Parameter.java
@@ -0,0 +1,70 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package javax.faces.flow;
+
+import javax.el.ValueExpression;
+
+/**
+ * <p class="changed_added_2_2">Represents a parameter in any of several
+ * places where parameters are needed when processing flows.</p>
+ * 
+ * @since 2.2
+ */
+public abstract class Parameter {
+    
+    /**
+     * <p class="changed_added_2_2">Return the name of the parameter</p>
+     * 
+     * @since 2.2
+     */
+    
+    public abstract String getName();
+
+    /**
+     * <p class="changed_added_2_2">Return a {@code ValueExpression} for the
+     * value of the parameter.  Depending on the context, this expression
+     * may only ever be evaluated in a "get" operation.</p>
+     * 
+     * @since 2.2
+     */
+    public abstract ValueExpression getValue();
+
+}
diff --git a/jsf-api/src/main/java/javax/faces/flow/ReturnNode.java b/jsf-api/src/main/java/javax/faces/flow/ReturnNode.java
new file mode 100644
index 0000000..da32624
--- /dev/null
+++ b/jsf-api/src/main/java/javax/faces/flow/ReturnNode.java
@@ -0,0 +1,64 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package javax.faces.flow;
+
+import javax.faces.context.FacesContext;
+
+/**
+ * <p class="changed_added_2_2">Represents a return node in the flow graph.
+ * When control passes to a return node, its {@link #getFromOutcome} is called
+ * to determine the next node in the flow graph.</p>
+ * 
+ * @since 2.2
+ */
+public abstract class ReturnNode extends FlowNode {
+    
+    /**
+     * <p class="changed_added_2_2">Return the {@code fromOutcome} to be
+     * used when control passes to this return node.</p>
+     * 
+     * @param context the {@link FacesContext} for this request.
+     * @throws NullPointerException if {@code context} is {@code null}.
+     * @since 2.2
+     */
+    public abstract String getFromOutcome(FacesContext context); 
+    
+}
diff --git a/jsf-api/src/main/java/javax/faces/flow/SwitchCase.java b/jsf-api/src/main/java/javax/faces/flow/SwitchCase.java
new file mode 100644
index 0000000..b3fa2e0
--- /dev/null
+++ b/jsf-api/src/main/java/javax/faces/flow/SwitchCase.java
@@ -0,0 +1,69 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package javax.faces.flow;
+
+import javax.faces.context.FacesContext;
+
+/**
+ * <p class="changed_added_2_2">Represents a case within a switch node in the flow graph.
+ * See {@link SwitchNode}.</p>
+ * 
+ * @since 2.2
+ */
+public abstract class SwitchCase {
+    
+    /**
+     * <p class="changed_added_2_2">Return the outcome to be used if {@link #getCondition}
+     * return {@code true}.</p>
+     * 
+     * @since 2.2
+     */
+    public abstract String getFromOutcome();
+
+    /**
+     * <p class="changed_added_2_2">Return {@code true} if this case should be
+     * taken, {@code false} otherwise.</p>
+     * 
+     * @since 2.2
+     */
+    public abstract Boolean getCondition(FacesContext context);
+    
+}
diff --git a/jsf-api/src/main/java/javax/faces/flow/SwitchNode.java b/jsf-api/src/main/java/javax/faces/flow/SwitchNode.java
new file mode 100644
index 0000000..4e17540
--- /dev/null
+++ b/jsf-api/src/main/java/javax/faces/flow/SwitchNode.java
@@ -0,0 +1,74 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package javax.faces.flow;
+
+import java.util.List;
+import javax.faces.context.FacesContext;
+
+/**
+ * <p class="changed_added_2_2">Represents a switch node in the flow graph.
+ * When control passes to a switch node, for each of the {@link SwitchCase}s
+ * returned from {@link #getCases}, call {@link SwitchCase#getCondition}.  If
+ * the return is {@code true}, let the return from {@link SwitchCase#getFromOutcome}
+ * be used to determine where to go next in the flow graph and terminate the traversal.
+ * If none of the cases returned {@code true} let {@link #getDefaultOutcome}
+ * be used to determine where to go next in the flow graph.</p>
+ * 
+ * @since 2.2
+ */
+public abstract class SwitchNode extends FlowNode {
+    
+    
+    /**
+     * <p class="changed_added_2_2">Return the cases in this switch.</p>
+     * 
+     * @since 2.2
+     */
+    public abstract List<SwitchCase> getCases();
+
+    /**
+     * <p class="changed_added_2_2">Return the default outcome in this switch.</p>
+     * 
+     * @since 2.2
+     */
+    public abstract String getDefaultOutcome(FacesContext context);
+    
+}
diff --git a/jsf-api/src/main/java/javax/faces/flow/ViewNode.java b/jsf-api/src/main/java/javax/faces/flow/ViewNode.java
new file mode 100644
index 0000000..8137166
--- /dev/null
+++ b/jsf-api/src/main/java/javax/faces/flow/ViewNode.java
@@ -0,0 +1,62 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package javax.faces.flow;
+
+/**
+ * <p class="changed_added_2_2"><strong>ViewNode</strong> is the class
+ * that represents a VDL view in a faces flow graph.</p>
+ *
+ * @since 2.2
+ */
+
+public abstract class ViewNode extends FlowNode {
+    
+    
+    /**
+     * <p class="changed_added_2_2">Return the immutable VDL document id
+     * for this view node.  This is normally the path to the VDL page
+     * that defines this view node.  This must be unique within the
+     * flow.</p>
+     * @since 2.2
+     */
+    public abstract String getVdlDocumentId();
+
+}
diff --git a/jsf-api/src/main/java/javax/faces/flow/builder/FlowBuilder.java b/jsf-api/src/main/java/javax/faces/flow/builder/FlowBuilder.java
new file mode 100644
index 0000000..31e8345
--- /dev/null
+++ b/jsf-api/src/main/java/javax/faces/flow/builder/FlowBuilder.java
@@ -0,0 +1,278 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package javax.faces.flow.builder;
+
+import javax.el.MethodExpression;
+import javax.el.ValueExpression;
+import javax.faces.flow.Flow;
+
+/**
+ * <p class="changed_added_2_2">A Java language API for building {@link Flow}s. 
+ * This API is semantically identical to the
+ * <code><flow-definition></code> element in the
+ * <a target="_"
+ * href="../../../../web-facesconfig.html#type_faces-config-flow-definitionType">Application
+ * Configuration Resources XML Schema Definition</a>.</p>
+ * 
+ * <div class="changed_added_2_2">
+ * 
+ * <p>Usage example:</p><pre><code>public class FlowA implements Serializable {
+    
+    &#x40;Produces {@link FlowDefinition}
+    public {@link Flow} buildMyFlow(&#x40;{@link FlowBuilderParameter} {@link FlowBuilder} flowBuilder) {
+        String flowId = "flow-a";
+        flowBuilder.id("unique", flowId);
+        flowBuilder.returnNode("taskFlowReturn1").
+                fromOutcome("#{flow_a_Bean.returnValue}");
+        flowBuilder.inboundParameter("param1FromFlowB", "#{flowScope.param1Value}");
+        flowBuilder.inboundParameter("param2FromFlowB", "#{flowScope.param2Value}");
+        flowBuilder.flowCallNode("callB").flowReference("", "flow-b").
+                outboundParameter("param1FromFlowA", "param1Value").
+                outboundParameter("param2FromFlowA", "param2Value");
+        
+        return flowBuilder.getFlow();
+    }
+}
+</code></pre>
+ * 
+ * <p>The runtime must discover all such methods at startup time and ensure that
+ * the returned flows are added to the {@link javax.faces.flow.FlowHandler} using
+ * the {@link javax.faces.flow.FlowHandler#addFlow(javax.faces.context.FacesContext, javax.faces.flow.Flow)} method.</p>
+ * 
+ * </div>
+ *
+ * @since 2.2
+ */
+
+public abstract class FlowBuilder  {
+    
+    /**
+     * <p class="changed_added_2_2">Set the defining document id and flow id
+     * of this flow.</p>
+     * 
+     * @param definingDocumentId The defining document id of this flow, or the 
+     * empty string if this flow does not need a defining document id.
+     * @param id the id of the flow
+     * @throws NullPointerException if any of the parameters are {@code null}
+     * @since 2.2
+     */
+    public abstract FlowBuilder id(String definingDocumentId, String id);
+    
+    /**
+     * <p class="changed_added_2_2">Define a view node in a flow graph.</p>
+     * 
+     * @param viewNodeId Within the flow graph, the id of this view node
+     * @param vdlDocumentId The fully qualified path to the view node within this flow.
+     * @throws NullPointerException if any of the parameters are {@code null}
+     * @since 2.2
+     */
+    
+    /**
+     * <p class="changed_added_2_2">Define a view node in a flow graph.</p>
+     * 
+     * @param viewNodeId Within the flow graph, the id of this view node.  Must
+     * be unique among all nodes in this flow graph.
+     * @param vdlDocumentId The fully qualified path to the view node within this flow.
+     * @throws NullPointerException if any of the parameters are {@code null}
+     * @since 2.2
+     */
+
+    public abstract ViewBuilder viewNode(String viewNodeId, String vdlDocumentId);
+
+    /**
+     * <p class="changed_added_2_2">Define a particular combination of 
+     * conditions that must match for this case to be executed, 
+     * and the view id of the component tree that should be selected next.</p>
+     * 
+     * @since 2.2
+     */
+    public abstract NavigationCaseBuilder navigationCase();
+
+    /**
+     * <p class="changed_added_2_2">Define a particular list of cases that 
+     * will be inspected in the order they are defined to determine where to
+     * go next in the flow graph.  If none of the cases match, the outcome
+     * from the default case is chosen.</p>
+     * 
+     * @param switchNodeId Within the flow graph, the id of this switch node.  Must
+     * be unique among all nodes in this flow graph.
+     *
+     * @throws NullPointerException if any of the parameters are {@code null}
+     * 
+     * @since 2.2
+     * 
+     */
+    public abstract SwitchBuilder switchNode(String switchNodeId);
+    
+    /**
+     * <p class="changed_added_2_2">Define a return node.  This node will cause
+     * the specified outcome to be returned to the calling flow.</p>
+     * 
+     * @param returnNodeId Within the flow graph, the id of this return node.  Must
+     * be unique among all nodes in this flow graph.
+
+     * @throws NullPointerException if any of the parameters are {@code null}
+     * 
+     * @since 2.2
+     */
+    public abstract ReturnBuilder returnNode(String returnNodeId);
+    
+    /**
+     * <p class="changed_added_2_2">Define a method call node.  This node will
+     * cause the specified method to be invoked, passing parameters if necessary.
+     * The return from the method is used as the outcome for where to go next in the
+     * flow.  If the method is a void method, the default outcome is used.</p>
+     * 
+     * @param methodCallNodeId Within the flow graph, the id of this method call node.  Must
+     * be unique among all nodes in this flow graph.
+
+     * @throws NullPointerException if any of the parameters are {@code null}
+     * 
+     * @since 2.2
+     */
+    public abstract MethodCallBuilder methodCallNode(String methodCallNodeId);
+    
+    /**
+     * <p class="changed_added_2_2">Define a flow call node.  This node will
+     * cause the specified flow to be called, passing parameters if necessary.</p>
+     * 
+     * @param flowCallNodeId Within the flow graph, the id of this return node.  Must
+     * be unique among all nodes in this flow graph.
+
+     * @throws NullPointerException if any of the parameters are {@code null}
+     * 
+     * @since 2.2
+     */
+    public abstract FlowCallBuilder flowCallNode(String flowCallNodeId);
+    
+    /**
+     * <p class="changed_added_2_2">A MethodExpression that will be invoked when the flow is entered.</p>
+     * 
+     * @param methodExpression the expression to invoke, must reference a zero-argument method.
+
+     * @throws NullPointerException if any of the parameters are {@code null}
+     * 
+     * @since 2.2
+     */
+    public abstract FlowBuilder initializer(MethodExpression methodExpression);
+    
+    /**
+     * <p class="changed_added_2_2">A MethodExpression that will be invoked when the flow is entered.</p>
+     * 
+     * @param methodExpression the expression to invoke, must reference a zero-argument method.
+
+     * @throws NullPointerException if any of the parameters are {@code null}
+     * 
+     * @since 2.2
+     */
+    public abstract FlowBuilder initializer(String methodExpression);
+    
+    /**
+     * <p class="changed_added_2_2">A MethodExpression that will be invoked when the flow is exited.</p>
+     * 
+     * @param methodExpression the expression to invoke, must reference a zero-argument method.
+
+     * @throws NullPointerException if any of the parameters are {@code null}
+     * 
+     * @since 2.2
+     */
+    public abstract FlowBuilder finalizer(MethodExpression methodExpression);
+    
+    /**
+     * <p class="changed_added_2_2">A MethodExpression that will be invoked when the flow is exited.</p>
+     * 
+     * @param methodExpression the expression to invoke, must reference a zero-argument method.
+
+     * @throws NullPointerException if any of the parameters are {@code null}
+     * 
+     * @since 2.2
+     */
+    public abstract FlowBuilder finalizer(String methodExpression);
+
+    /**
+     * <p class="changed_added_2_2">A parameter that will be populated with 
+     * the value from a correspondingly named outbound parameter from another
+     * flow when this flow is entered from that flow.</p>
+     * 
+     * @param name the parameter name
+     * 
+     * @param expression the {@code ValueExpression} to populate with the inbound
+     * value when the flow is called.
+
+     * @throws NullPointerException if any of the parameters are {@code null}
+     * 
+     * @since 2.2
+     */
+    public abstract FlowBuilder inboundParameter(String name, ValueExpression expression);
+        
+    /**
+     * <p class="changed_added_2_2">A parameter that will be populated with 
+     * the value from a correspondingly named outbound parameter from another
+     * flow when this flow is entered from that flow.</p>
+     * 
+     * @param name the parameter name
+     * 
+     * @param expression the {@code ValueExpression} String to populate with the inbound
+     * value when the flow is called.
+
+     * @throws NullPointerException if any of the parameters are {@code null}
+     * 
+     * @since 2.2
+     */
+    public abstract FlowBuilder inboundParameter(String name, String expression);
+
+    /**
+     * <p class="changed_added_2_2">Called as the last step in flow definition, 
+     * this method must perform any implementation specific initialization
+     * and return the built {@link Flow}. If called more than one time during a 
+     * given flow building process, the second and subsequent invocations must
+     * take no action and return the built flow.</p>
+     * 
+     * @throws IllegalStateException if the {@link #id} method had not been
+     * called prior to this method being called.
+     * 
+     * @since 2.2
+     */
+    public abstract Flow getFlow();
+    
+}
+    
+
diff --git a/jsf-api/src/main/java/javax/faces/flow/builder/FlowBuilderParameter.java b/jsf-api/src/main/java/javax/faces/flow/builder/FlowBuilderParameter.java
new file mode 100644
index 0000000..647c6ad
--- /dev/null
+++ b/jsf-api/src/main/java/javax/faces/flow/builder/FlowBuilderParameter.java
@@ -0,0 +1,67 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package javax.faces.flow.builder;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+import javax.inject.Qualifier;
+import static java.lang.annotation.ElementType.FIELD;
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.ElementType.PARAMETER;
+import static java.lang.annotation.ElementType.TYPE;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+/**
+ * <p class="changed_added_2_2">The presence of this annotation on a CDI producer
+ * method for the {@link FlowDefinition} annotation causes the {@link FlowBuilder}
+ * to be passed to that method.  See {@link FlowBuilder} for a usage example.</p>
+ * 
+ * @since 2.2
+ */
+
+ at Qualifier
+ at Target({ TYPE, METHOD, PARAMETER, FIELD })
+ at Retention(RUNTIME)
+ at Documented
+public @interface FlowBuilderParameter {
+    
+}
diff --git a/jsf-api/src/main/java/javax/faces/flow/builder/FlowCallBuilder.java b/jsf-api/src/main/java/javax/faces/flow/builder/FlowCallBuilder.java
new file mode 100644
index 0000000..0c1b31e
--- /dev/null
+++ b/jsf-api/src/main/java/javax/faces/flow/builder/FlowCallBuilder.java
@@ -0,0 +1,86 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package javax.faces.flow.builder;
+
+import javax.el.ValueExpression;
+
+/**
+ * <p class="changed_added_2_2">Create a flow call node in the current {@link javax.faces.flow.Flow}.</p>
+ * @since 2.2
+ */
+public abstract class FlowCallBuilder implements NodeBuilder {
+    
+    /**
+     * <p class="changed_added_2_2">Define the flow reference of the called flow.</p>
+     * 
+     * @param flowDocumentId the document id of the called flow.  May not be {@code null}, 
+     * but may be the empty string.
+     * @param flowId the id of the called flow.  May not be {@code null}
+     * @throws NullPointerException if any of the parameters are {@code null}
+     * @since 2.2
+     */
+    public abstract FlowCallBuilder flowReference(String flowDocumentId, 
+                                                  String flowId);
+    
+    /**
+     * <p class="changed_added_2_2">Define an outbound parameter for the flow call.</p>
+     * 
+     * @param name the name of the parameter
+     * @param value the value of the parameter
+     * @throws NullPointerException if any of the parameters are {@code null}
+     * @since 2.2
+     */
+    public abstract FlowCallBuilder outboundParameter(String name, ValueExpression value);
+        
+    /**
+     * <p class="changed_added_2_2">Define an outbound parameter for the flow call.</p>
+     * 
+     * @param name the name of the parameter
+     * @param value the value of the parameter
+     * @throws NullPointerException if any of the parameters are {@code null}
+     * @since 2.2
+     */
+    public abstract FlowCallBuilder outboundParameter(String name, String value);
+
+    @Override
+    public abstract FlowCallBuilder markAsStartNode();
+    
+}
diff --git a/jsf-api/src/main/java/javax/faces/flow/builder/FlowDefinition.java b/jsf-api/src/main/java/javax/faces/flow/builder/FlowDefinition.java
new file mode 100644
index 0000000..9d62e1b
--- /dev/null
+++ b/jsf-api/src/main/java/javax/faces/flow/builder/FlowDefinition.java
@@ -0,0 +1,65 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package javax.faces.flow.builder;
+
+
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+import javax.inject.Qualifier;
+
+/**
+ * <p class="changed_added_2_2">The presence of this annotation on a CDI producer
+ * method indicates that the method will produce a flow.  See {@link FlowBuilder}
+ * for a usage example.</p>
+ * 
+ * @since 2.2
+ */
+
+ at Retention(RUNTIME)
+ at Target({ METHOD })
+ at Qualifier
+public @interface FlowDefinition {
+
+
+}
diff --git a/jsf-api/src/main/java/javax/faces/flow/builder/MethodCallBuilder.java b/jsf-api/src/main/java/javax/faces/flow/builder/MethodCallBuilder.java
new file mode 100644
index 0000000..d06ca5d
--- /dev/null
+++ b/jsf-api/src/main/java/javax/faces/flow/builder/MethodCallBuilder.java
@@ -0,0 +1,138 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package javax.faces.flow.builder;
+
+import java.util.List;
+import javax.el.MethodExpression;
+import javax.el.ValueExpression;
+import javax.faces.flow.Parameter;
+
+/**
+ * <p class="changed_added_2_2">Create a method call node in the current {@link javax.faces.flow.Flow}.</p>
+ * @since 2.2
+ */
+public abstract class MethodCallBuilder implements NodeBuilder {
+    
+    /**
+     * <p class="changed_added_2_2">Set the method expression of this method call node.  The method
+     * signature of the argument {@code methodExpression} must match the number and
+     * type of the parameters passed in the {@link #parameters} method.</p>
+     * 
+     * @param methodExpression The {@code MethodExpression} to invoke.
+
+     * @throws NullPointerException if any of the parameters are {@code null}
+     * 
+     * @since 2.2
+     */
+    public abstract MethodCallBuilder expression(MethodExpression methodExpression);
+    
+    /**
+     * <p class="changed_added_2_2">Set the method expression of this method call node.  The method
+     * signature of the argument {@code methodExpression} must match the number and
+     * type of the parameters passed in the {@link #parameters} method.</p>
+     * 
+     * @param methodExpression The {@code MethodExpression} String to invoke.
+
+     * @throws NullPointerException if any of the parameters are {@code null}
+     * 
+     * @since 2.2
+     */
+    public abstract MethodCallBuilder expression(String methodExpression);
+    
+    /**
+     * <p class="changed_added_2_2">Set the method expression of this method call node.  The method
+     * signature of the argument {@code methodExpression} must match the number and
+     * type of the parameters passed in the {@link #parameters} method.</p>
+     * 
+     * @param methodExpression The {@code MethodExpression} to invoke.
+     * @param paramTypes the types of the parameters to the method.
+
+     * @throws NullPointerException if any of the parameters are {@code null}
+     * 
+     * @since 2.2
+     */
+    public abstract MethodCallBuilder expression(String methodExpression, Class [] paramTypes);
+    
+    /**
+     * <p class="changed_added_2_2">Set the parameters of the method call node.</p>
+     * 
+     * @param parameters the parameters to pass to the method when it is invoked.
+
+     * @throws NullPointerException if any of the parameters are {@code null}
+     * 
+     * @since 2.2
+     */
+    public abstract MethodCallBuilder parameters(List<Parameter> parameters);
+    
+    /**
+     * <p class="changed_added_2_2">If the method is a void method, or the
+     * method returns {@code null}, this can be used to specify what value 
+     * should be passed to runtime when the method returns.</p>
+     * 
+     * @param outcome A {@code ValueExpression} String representing 
+     * the default outcome, only used if the method is a void
+     * method or returns {@code null}.
+
+     * @throws NullPointerException if any of the parameters are {@code null}
+     * 
+     * @since 2.2
+     */
+    public abstract MethodCallBuilder defaultOutcome(String outcome);
+    
+    /**
+     * <p class="changed_added_2_2">If the method is a void method, or the
+     * method returns {@code null}, this can be used to specify what value 
+     * should be passed to runtime when the method returns.</p>
+     * 
+     * @param outcome A {@code ValueExpression} representing 
+     * the default outcome, only used if the method is a void
+     * method or returns {@code null}.
+
+     * @throws NullPointerException if any of the parameters are {@code null}
+     * 
+     * @since 2.2
+     */
+    public abstract MethodCallBuilder defaultOutcome(ValueExpression outcome);
+
+    @Override
+    public abstract MethodCallBuilder markAsStartNode();
+    
+}
diff --git a/jsf-api/src/main/java/javax/faces/flow/builder/NavigationCaseBuilder.java b/jsf-api/src/main/java/javax/faces/flow/builder/NavigationCaseBuilder.java
new file mode 100644
index 0000000..faac53d
--- /dev/null
+++ b/jsf-api/src/main/java/javax/faces/flow/builder/NavigationCaseBuilder.java
@@ -0,0 +1,169 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package javax.faces.flow.builder;
+
+import javax.el.ValueExpression;
+
+/**
+ * <p class="changed_added_2_2">Create a navigation case in the current {@link javax.faces.flow.Flow}.</p>
+ * 
+ * @since 2.2
+ */
+public abstract class NavigationCaseBuilder {
+
+    /**
+     * 
+     * <p class="changed_added_2_2">Set the from-view-id of the current navigation case.</p>
+     * 
+     * @param fromViewId the from-view-id
+     * @throws NullPointerException if any of the parameters are {@code null}
+     * @since 2.2
+     */
+
+    public abstract NavigationCaseBuilder fromViewId(String fromViewId);
+    
+    /**
+     * 
+     * <p class="changed_added_2_2">Set the from-action of the current navigation case.</p>
+     * 
+     * @param fromAction the from-action
+     * @throws NullPointerException if any of the parameters are {@code null}
+     * @since 2.2
+     */
+
+    public abstract NavigationCaseBuilder fromAction(String fromAction);
+    
+    /**
+     * 
+     * <p class="changed_added_2_2">Set the from-outcome of the current navigation case.</p>
+     * 
+     * @param fromOutcome the from-outcome
+     * @throws NullPointerException if any of the parameters are {@code null}
+     * @since 2.2
+     */
+
+    public abstract NavigationCaseBuilder fromOutcome(String fromOutcome);
+    
+    /**
+     * 
+     * <p class="changed_added_2_2">Set the to-view-id of the current navigation case.</p>
+     * 
+     * @param toViewId the to-view-id
+     * @throws NullPointerException if any of the parameters are {@code null}
+     * @since 2.2
+     */
+
+    public abstract NavigationCaseBuilder toViewId(String toViewId);
+
+    /**
+     * 
+     * <p class="changed_added_2_2">Set the to-flow-document-id of the current navigation case.</p>
+     * 
+     * @param toFlowDocumentId the to-flow-document-id
+     * @throws NullPointerException if any of the parameters are {@code null}
+     * @since 2.2
+     */
+
+    public abstract NavigationCaseBuilder toFlowDocumentId(String toFlowDocumentId);
+    
+    /**
+     * 
+     * <p class="changed_added_2_2">Set the if of the current navigation case.</p>
+     * 
+     * @param condition the <if>
+     * @throws NullPointerException if any of the parameters are {@code null}
+     * @since 2.2
+     */
+
+    public abstract NavigationCaseBuilder condition(String condition);
+    
+    /**
+     * 
+     * <p class="changed_added_2_2">Set the if of the current navigation case.</p>
+     * 
+     * @param condition the <if>
+     * @throws NullPointerException if any of the parameters are {@code null}
+     * @since 2.2
+     */
+
+    public abstract NavigationCaseBuilder condition(ValueExpression condition);
+    
+    /**
+     * 
+     * <p class="changed_added_2_2">Create a redirect within this navigation case.</p>
+     * 
+     * @since 2.2
+     */
+
+    public abstract RedirectBuilder redirect();
+    
+    /**
+     * 
+     * <p class="changed_added_2_2">Allows populating the redirect with parameters 
+     * and setting the includeViewParams option.</p>
+     * 
+     * @since 2.2
+     */
+    
+    public abstract class RedirectBuilder {
+        
+        /**
+         * <p class="changed_added_2_2">Add a parameter to the redirect.</p>
+         * 
+         * @param name the name of the redirect parameter
+         * @value the value of the redirect parameter.  May not be a {@code ValueExpression}.
+         * @throws NullPointerException if any of the parameters are {@code null}
+         * @since 2.2
+         */
+
+        public abstract RedirectBuilder parameter(String name, String value);
+        
+        /**
+         * <p class="changed_added_2_2">Indicates the current redirect should include view parameters.</p>
+         * 
+         * @since 2.2
+         */
+
+        public abstract RedirectBuilder includeViewParams();
+    
+    }
+    
+}
diff --git a/jsf-api/src/main/java/javax/faces/flow/builder/NodeBuilder.java b/jsf-api/src/main/java/javax/faces/flow/builder/NodeBuilder.java
new file mode 100644
index 0000000..8b03246
--- /dev/null
+++ b/jsf-api/src/main/java/javax/faces/flow/builder/NodeBuilder.java
@@ -0,0 +1,62 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package javax.faces.flow.builder;
+
+/**
+ * <p class="changed_added_2_2">Base interface for building all kinds of flow nodes.</p>
+ * 
+ * @since 2.2
+ */
+
+public interface NodeBuilder {
+    
+    /**
+     * <p class="changed_added_2_2">Mark this node as the start node in the flow.
+     * Any other node that had been marked as the start node will no longer
+     * be the start node.</p>
+     * 
+     * @since 2.2
+     */
+    
+    public NodeBuilder markAsStartNode();
+    
+    
+}
diff --git a/jsf-api/src/main/java/javax/faces/flow/builder/ReturnBuilder.java b/jsf-api/src/main/java/javax/faces/flow/builder/ReturnBuilder.java
new file mode 100644
index 0000000..f39d0bd
--- /dev/null
+++ b/jsf-api/src/main/java/javax/faces/flow/builder/ReturnBuilder.java
@@ -0,0 +1,76 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package javax.faces.flow.builder;
+
+import javax.el.ValueExpression;
+
+/**
+ * <p class="changed_added_2_2">Create a return node in the current {@link javax.faces.flow.Flow}.</p>
+ * @since 2.2
+ */
+public abstract class ReturnBuilder implements NodeBuilder {
+    
+    /**
+     * <p class="changed_added_2_2">Set the outcome of the current return node.</p>
+     * 
+     * @param outcome A {@code ValueExpression} String {@code String} that will be the 
+     * outcome of the return.
+     * @throws NullPointerException if any of the parameters are {@code null}
+     * 
+     * @since 2.2
+     */
+    public abstract ReturnBuilder fromOutcome(String outcome);
+    
+    /**
+     * <p class="changed_added_2_2">Set the outcome of the current return node.</p>
+     * 
+     * @param outcome A {@code ValueExpression} {@code String} that will be the 
+     * outcome of the return.
+     * @throws NullPointerException if any of the parameters are {@code null}
+     * 
+     * @since 2.2
+     */
+    public abstract ReturnBuilder fromOutcome(ValueExpression outcome);
+
+    @Override
+    public abstract ReturnBuilder markAsStartNode();
+        
+}
diff --git a/jsf-api/src/main/java/javax/faces/flow/builder/SwitchBuilder.java b/jsf-api/src/main/java/javax/faces/flow/builder/SwitchBuilder.java
new file mode 100644
index 0000000..ce2f717
--- /dev/null
+++ b/jsf-api/src/main/java/javax/faces/flow/builder/SwitchBuilder.java
@@ -0,0 +1,85 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package javax.faces.flow.builder;
+
+import javax.el.ValueExpression;
+
+/**
+ * <p class="changed_added_2_2">Create a switch node in the current {@link javax.faces.flow.Flow}.</p>
+ * @since 2.2
+ */
+
+public abstract class SwitchBuilder implements NodeBuilder {
+    
+    /**
+     * <p class="changed_added_2_2">Create a switch case in the current switch.</p>
+     * @since 2.2
+     */
+    
+    public abstract SwitchCaseBuilder switchCase();
+    
+    /**
+     * <p class="changed_added_2_2">Set the default outcome of the current switch.</p>
+     * 
+     * @param outcome A {@code ValueExpression} {@code String} that will be the 
+     * default outcome of the switch.
+     * @since 2.2
+     * @throws NullPointerException if any of the parameters are {@code null}
+     * 
+     */
+    
+    public abstract SwitchCaseBuilder defaultOutcome(String outcome);
+    
+    /**
+     * <p class="changed_added_2_2">Set the default outcome of the current switch.</p>
+     * 
+     * @param outcome A {@code ValueExpression} that will be the default outcome of the switch.
+     * @throws NullPointerException if any of the parameters are {@code null}
+     * 
+     * @since 2.2
+     */
+    
+    public abstract SwitchCaseBuilder defaultOutcome(ValueExpression outcome);
+
+    @Override
+    public abstract SwitchBuilder markAsStartNode();
+
+}
diff --git a/jsf-api/src/main/java/javax/faces/flow/builder/SwitchCaseBuilder.java b/jsf-api/src/main/java/javax/faces/flow/builder/SwitchCaseBuilder.java
new file mode 100644
index 0000000..9438e5c
--- /dev/null
+++ b/jsf-api/src/main/java/javax/faces/flow/builder/SwitchCaseBuilder.java
@@ -0,0 +1,99 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package javax.faces.flow.builder;
+
+import javax.el.ValueExpression;
+
+/**
+ * <p class="changed_added_2_2">Create a case in the current switch.</p>
+ * 
+ * @since 2.2
+ */
+public abstract class SwitchCaseBuilder {
+    
+    /**
+     * 
+     * <p class="changed_added_2_2">Create a new case in the current switch.</p>
+     * 
+     * @since 2.2
+     * 
+     */
+    public abstract SwitchCaseBuilder switchCase();
+        
+    /**
+     * 
+     * <p class="changed_added_2_2">Set the if in the previously created switch case.</p>
+     * 
+     * @param expression the {@code ValueExpression} to be evaluated to see if this case
+     * is chosen.
+     * 
+     * @throws NullPointerException if any of the parameters are {@code null}
+     * @since 2.2
+     * 
+     */
+    public abstract SwitchCaseBuilder condition(ValueExpression expression);
+    
+    /**
+     * 
+     * <p class="changed_added_2_2">Set the if in the previously created switch case.</p>
+     * 
+     * @param expression the {@code ValueExpression} String to be evaluated to see if this case
+     * is chosen.
+     * 
+     * @throws NullPointerException if any of the parameters are {@code null}
+     * @since 2.2
+     * 
+     */
+    public abstract SwitchCaseBuilder condition(String expression);
+    
+    /**
+     * 
+     * <p class="changed_added_2_2">Set the outcome in the previously created switch case.</p>
+     * 
+     * @param outcome the outcome to be returned if the condition evaluates to {@code true}.
+     * 
+     * @throws NullPointerException if any of the parameters are {@code null}
+     * @since 2.2
+     * 
+     */
+    public abstract SwitchCaseBuilder fromOutcome(String outcome);
+        
+}
diff --git a/jsf-api/src/main/java/javax/faces/flow/builder/ViewBuilder.java b/jsf-api/src/main/java/javax/faces/flow/builder/ViewBuilder.java
new file mode 100644
index 0000000..6cf31ab
--- /dev/null
+++ b/jsf-api/src/main/java/javax/faces/flow/builder/ViewBuilder.java
@@ -0,0 +1,53 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package javax.faces.flow.builder;
+
+/**
+ * <p class="changed_added_2_2">Create a view node in the current {@link javax.faces.flow.Flow}.</p>
+ * 
+ * @since 2.2
+ */
+public abstract class ViewBuilder implements NodeBuilder {
+
+    @Override
+    public abstract ViewBuilder markAsStartNode();
+
+}
diff --git a/jsf-api/src/main/java/javax/faces/flow/builder/package.html b/jsf-api/src/main/java/javax/faces/flow/builder/package.html
new file mode 100644
index 0000000..e8fdc3a
--- /dev/null
+++ b/jsf-api/src/main/java/javax/faces/flow/builder/package.html
@@ -0,0 +1,54 @@
+<html>
+<head>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<title>Package Description for "javax.faces.flow.builder"</title>
+</head>
+<body bgcolor="white">
+
+<p class="changed_added_2_2"><span>Classes</span> for declaring a Faces
+Flow.  See <code><a href="FlowBuilder.html">FlowBuilder</a></code> and
+its helpers for the normative specification of this feature.</p>
+
+</body>
+</html>
diff --git a/jsf-api/src/main/java/javax/faces/flow/package.html b/jsf-api/src/main/java/javax/faces/flow/package.html
new file mode 100644
index 0000000..090b74f
--- /dev/null
+++ b/jsf-api/src/main/java/javax/faces/flow/package.html
@@ -0,0 +1,54 @@
+<html>
+<head>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<title>Package Description for "javax.faces.flow"</title>
+</head>
+<body bgcolor="white">
+
+<p class="changed_added_2_2"><span>The</span> runtime API for Faces
+Flows.  See <code><a href="FlowHandler.html">FlowHandler</a></code> and
+its helpers for the normative specification of this feature.</p>
+
+</body>
+</html>
diff --git a/jsf-api/src/main/java/javax/faces/lifecycle/ClientWindow.java b/jsf-api/src/main/java/javax/faces/lifecycle/ClientWindow.java
new file mode 100644
index 0000000..620d737
--- /dev/null
+++ b/jsf-api/src/main/java/javax/faces/lifecycle/ClientWindow.java
@@ -0,0 +1,245 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package javax.faces.lifecycle;
+
+import java.util.Map;
+import javax.faces.context.FacesContext;
+import javax.faces.render.ResponseStateManager;
+
+/**
+ * <p class="changed_added_2_2">This class represents a client window,
+ * which may be a browser tab, browser window, browser pop-up, portlet,
+ * or anything else that can display a {@link
+ * javax.faces.component.UIComponent} hierarchy rooted at a {@link
+ * javax.faces.component.UIViewRoot}.</p>
+ * 
+ * <div class="changed_added_2_2">
+
+ * <p>Modes of Operation</p>
+
+ * <ul>
+
+ * <p>none mode</p>
+
+ * <p>The generation of <code>ClientWindow</code> is controlled by the
+ * value of the <code>context-param</code> named by the value of {@link
+ * #CLIENT_WINDOW_MODE_PARAM_NAME}.  If this <code>context-param</code> is
+ * not specified, or its value is "none", no <code>ClientWindow</code>
+ * instances will be generated, and the entire feature is effectively
+ * disabled for the entire application.</p>
+
+ * <p>Other modes</p>
+
+ * <p>To accomadate the widest possible range of implementation choices
+ * to support this feature, explicit names for modes other than "none"
+ * and "url" are not specified.  However, for all values of {@link
+ * #CLIENT_WINDOW_MODE_PARAM_NAME}, the lifetime of a
+ * <code>ClientWindow</code> starts on the first request made by a
+ * particular client window (or tab, or pop-up, etc) to the JSF runtime
+ * and persists as long as that window remains open or the session
+ * expires, whichever comes first.  A client window is always associated
+ * with exactly one <code>UIViewRoot</code> instance at a time, but may
+ * display many different <code>UIViewRoot</code>s during its
+ * lifetime.</p>
+
+ * <p>The <code>ClientWindow</code> instance is associated with the
+ * incoming request during the {@link Lifecycle#attachWindow} method.
+ * This method will cause a new instance of <code>ClientWindow</code> to
+ * be created, assigned an id, and passed to {@link
+ * javax.faces.context.ExternalContext#setClientWindow}.</p>
+
+ * <p>During state saving, regardless of the window id mode, or state
+ * saving mode, for ajax and non-ajax requests, a hidden field must be
+ * written whose name, id and value are given as specified in {@link
+ * javax.faces.render.ResponseStateManager#CLIENT_WINDOW_PARAM}. </p>
+
+ * <p>In addition to the hidden field already described.  The runtime
+ * must ensure that any component that renders a hyperlink that causes
+ * the user agent to send a GET request to the Faces server when it is
+ * clicked has a query parameter with a name and value specified in
+ * {@link ResponseStateManager#CLIENT_WINDOW_URL_PARAM}.  This
+ * requirement is met by several of the "encode" methods on {@link
+ * javax.faces.context.ExternalContext}. See {@link
+ * javax.faces.context.ExternalContext#encodeActionURL(java.lang.String)
+ * } for details.</p>
+
+ * </ul>
+ 
+ * </div>
+ * 
+ * @since 2.2
+ * 
+ */
+
+public abstract class ClientWindow {
+    
+    /**
+     * <p class="changed_added_2_2">The context-param that controls the
+     * operation of the <code>ClientWindow</code> feature.  The runtime
+     * must support the values "none" and "url", without the quotes, but
+     * other values are possible.  If not specified, or the value is not
+     * understood by the implementation, "none" is assumed.</p>
+     *
+     * @since 2.2
+     */
+    public static final String CLIENT_WINDOW_MODE_PARAM_NAME =
+          "javax.faces.CLIENT_WINDOW_MODE";
+    
+    
+    /**
+     * <p class="changed_added_2_2">This method will be called whenever a URL
+     * is generated by the runtime where client window related parameters need
+     * to be inserted into the URL.  This guarantees custom {@code ClientWindow} implementations
+     * that they will have the opportunity to insert any additional client window specific 
+     * information in any case where a URL is generated, such as the rendering
+     * of hyperlinks.  The returned map must be immutable.  The default implementation of this method returns
+     * the empty map.</p>
+     * 
+     * 
+     * @since 2.2
+     * @param context the {@code FacesContext} for this request.
+     * @return {@code null} or a map of parameters to insert into the URL query string.
+     */
+    
+    public abstract Map<String, String> getQueryURLParameters(FacesContext context);
+
+    /**
+     * <p class="changed_added_2_2">Return a String value that uniquely 
+     * identifies this <code>ClientWindow</code>
+     * within the scope of the current session.  See {@link #decode} for the
+     * specification of how to derive this value.</p>
+     * 
+     * @since 2.2
+     */
+    
+    public abstract String getId();
+    
+    /**
+     * <p class="changed_added_2_2">The implementation is responsible
+     * for examining the incoming request and extracting the value that
+     * must be returned from the {@link #getId} method.  If {@link
+     * #CLIENT_WINDOW_MODE_PARAM_NAME} is "none" this method must not be
+     * invoked.  If {@link #CLIENT_WINDOW_MODE_PARAM_NAME} is "url" the
+     * implementation must first look for a request parameter under the
+     * name given by the value of {@link
+     * javax.faces.render.ResponseStateManager#CLIENT_WINDOW_PARAM}.  If
+     * no value is found, look for a request parameter under the name
+     * given by the value of {@link
+     * javax.faces.render.ResponseStateManager#CLIENT_WINDOW_URL_PARAM}.
+     * If no value is found, fabricate an id that uniquely identifies
+     * this <code>ClientWindow</code> within the scope of the current
+     * session.  This value must be made available to return from the
+     * {@link #getId} method.  The value must be suitable for inclusion
+     * as a hidden field or query parameter.  If a value is found,
+     * decrypt it using the key from the session and make it available
+     * for return from {@link #getId}.</p>
+     * 
+     * @param context the {@link FacesContext} for this request.
+     * 
+     * @since 2.2
+     */
+    
+    public abstract void decode(FacesContext context);
+    
+    private static final String PER_USE_CLIENT_WINDOW_URL_QUERY_PARAMETER_DISABLED_KEY = 
+            "javax.faces.lifecycle.ClientWindowRenderModeEnablement";
+    
+    /**
+     * <p class="changed_added_2_2">Components that permit per-use disabling
+     * of the appending of the ClientWindow in generated URLs must call this method
+     * first before rendering those URLs.  The caller must call {@link #enableClientWindowRenderMode(javax.faces.context.FacesContext)}
+     * from a <code>finally</code> block after rendering the URL.  If 
+     * {@link #CLIENT_WINDOW_MODE_PARAM_NAME} is "url" without the quotes, all generated
+     * URLs that cause a GET request must append the ClientWindow by default.
+     * This is specified as a static method because callsites need to access it
+     * without having access to an actual {@code ClientWindow} instance.</p>
+     * 
+     * @param context the {@link FacesContext} for this request.
+     * 
+     * @since 2.2
+     */
+    
+    public void disableClientWindowRenderMode(FacesContext context) {
+        Map<Object, Object> attrMap = context.getAttributes();
+        attrMap.put(PER_USE_CLIENT_WINDOW_URL_QUERY_PARAMETER_DISABLED_KEY, Boolean.TRUE);
+    }
+    
+    /**
+     * <p class="changed_added_2_2">Components that permit per-use disabling
+     * of the appending of the ClientWindow in generated URLs must call this method
+     * first after rendering those URLs.  If 
+     * {@link #CLIENT_WINDOW_MODE_PARAM_NAME} is "url" without the quotes, all generated
+     * URLs that cause a GET request must append the ClientWindow by default.
+     * This is specified as a static method because callsites need to access it
+     * without having access to an actual {@code ClientWindow} instance.</p>
+     * 
+     * @param context the {@link FacesContext} for this request.
+     * 
+     * @since 2.2
+     */
+    
+    public void enableClientWindowRenderMode(FacesContext context) {
+        Map<Object, Object> attrMap = context.getAttributes();
+        attrMap.remove(PER_USE_CLIENT_WINDOW_URL_QUERY_PARAMETER_DISABLED_KEY);
+        
+    }
+    
+    /**
+     * <p class="changed_added_2_2">Methods that append the ClientWindow to generated
+     * URLs must call this method to see if they are permitted to do so.  If 
+     * {@link #CLIENT_WINDOW_MODE_PARAM_NAME} is "url" without the quotes, all generated
+     * URLs that cause a GET request must append the ClientWindow by default.
+     * This is specified as a static method because callsites need to access it
+     * without having access to an actual {@code ClientWindow} instance.</p>
+     * 
+     * @param context the {@link FacesContext} for this request.
+     * 
+     * @since 2.2
+     */
+    
+    public boolean isClientWindowRenderModeEnabled(FacesContext context) {
+        boolean result = false;
+        Map<Object, Object> attrMap = context.getAttributes();
+        result = !attrMap.containsKey(PER_USE_CLIENT_WINDOW_URL_QUERY_PARAMETER_DISABLED_KEY);
+        return result;
+    }
+    
+}
diff --git a/jsf-api/src/main/java/javax/faces/lifecycle/ClientWindowFactory.java b/jsf-api/src/main/java/javax/faces/lifecycle/ClientWindowFactory.java
new file mode 100644
index 0000000..a49aa21
--- /dev/null
+++ b/jsf-api/src/main/java/javax/faces/lifecycle/ClientWindowFactory.java
@@ -0,0 +1,88 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package javax.faces.lifecycle;
+
+import javax.faces.FacesWrapper;
+import javax.faces.context.FacesContext;
+
+/**
+ * <p class="changed_added_2_2">Create {@link ClientWindow} instances based on 
+ * the incoming request.</p>
+ * 
+ * 
+ * @since 2.2
+ */
+public abstract class ClientWindowFactory implements FacesWrapper<ClientWindowFactory> {
+
+    
+    /**
+     * <p class="changed_added_2_2">If this factory has been decorated, the 
+     * implementation doing the decorating may override this method to provide
+     * access to the implementation being wrapped.  A default implementation
+     * is provided that returns <code>null</code>.</p>
+     * 
+     * @since 2.2
+     */
+    
+    @Override
+    public ClientWindowFactory getWrapped() {
+        return null;
+    }
+    
+    /**
+     * <p class="changed_added_2_2">The implementation is responsible
+     * for creating the {@link ClientWindow} instance for this request.
+     * If {@link ClientWindow#CLIENT_WINDOW_MODE_PARAM_NAME}
+     * is "none" or unspecified, this method must return {@code null}.  
+     * If {@link ClientWindow#CLIENT_WINDOW_MODE_PARAM_NAME}
+     * is "url" the implementation must return a <code>ClientWindow</code>
+     * instance that implements the url-mode semantics described in
+     * {@link ClientWindow}.
+     * 
+     * @param context the {@link FacesContext} for this request.
+     * @return the {@link ClientWindow} for this request, or {@code null} 
+     * 
+     * @since 2.2
+     */
+    
+    public abstract ClientWindow getClientWindow(FacesContext context);
+    
+}
diff --git a/jsf-api/src/main/java/javax/faces/lifecycle/ClientWindowWrapper.java b/jsf-api/src/main/java/javax/faces/lifecycle/ClientWindowWrapper.java
new file mode 100644
index 0000000..9109896
--- /dev/null
+++ b/jsf-api/src/main/java/javax/faces/lifecycle/ClientWindowWrapper.java
@@ -0,0 +1,88 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package javax.faces.lifecycle;
+
+import java.util.Map;
+import javax.faces.FacesWrapper;
+import javax.faces.context.FacesContext;
+
+/**
+ * <p class="changed_added_2_2">Wrapper for {@link ClientWindow}</p>
+ * 
+ * @since 2.2
+ */
+public abstract class ClientWindowWrapper extends ClientWindow implements FacesWrapper<ClientWindow> {
+
+    @Override
+    public abstract ClientWindow getWrapped();
+
+    @Override
+    public String getId() {
+        return getWrapped().getId();
+    }
+
+    @Override
+    public Map<String, String> getQueryURLParameters(FacesContext context) {
+        return getWrapped().getQueryURLParameters(context);
+    }
+
+    @Override
+    public void disableClientWindowRenderMode(FacesContext context) {
+        getWrapped().disableClientWindowRenderMode(context);
+    }
+
+    @Override
+    public void enableClientWindowRenderMode(FacesContext context) {
+        getWrapped().enableClientWindowRenderMode(context);
+    }
+
+    @Override
+    public boolean isClientWindowRenderModeEnabled(FacesContext context) {
+        return getWrapped().isClientWindowRenderModeEnabled(context);
+    }
+    
+    @Override
+    public void decode(FacesContext context) {
+        getWrapped().decode(context);
+    }
+
+    
+}
diff --git a/jsf-api/src/main/java/javax/faces/lifecycle/Lifecycle.java b/jsf-api/src/main/java/javax/faces/lifecycle/Lifecycle.java
index 89cdd61..2f3954d 100644
--- a/jsf-api/src/main/java/javax/faces/lifecycle/Lifecycle.java
+++ b/jsf-api/src/main/java/javax/faces/lifecycle/Lifecycle.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -42,7 +46,7 @@ import javax.faces.event.PhaseListener;
 
 
 /**
- * <p><strong>Lifecycle</strong> manages the
+ * <p><strong class="changed_modified_2_2">Lifecycle</strong> manages the
  * processing of the entire lifecycle of a particular JavaServer Faces
  * request.  It is responsible for executing all of the phases that have
  * been defined by the JavaServer Faces Specification, in the specified
@@ -93,6 +97,28 @@ public abstract class Lifecycle {
      *  is <code>null</code>
      */
     public abstract void execute(FacesContext context) throws FacesException;
+    
+    
+    /**
+     * <p class="changed_added_2_2">Create or restore the {@link
+     * ClientWindow} to be used to display the {@link
+     * javax.faces.component.UIViewRoot} for this run through the
+     * lifecycle.  See the class documentation for {@link ClientWindow}
+     * for an overview of the feature.
+     *
+     * If {@link javax.faces.context.ExternalContext#getClientWindow()} returns
+     * null, create a new instance of <code>ClientWindow</code> using the
+     * {@link ClientWindowFactory}.  If the result is non-null, call
+     * {@link ClientWindow#decode(javax.faces.context.FacesContext)} on it. 
+     * Store the new <code>ClientWindow</code> by calling
+     * {@link javax.faces.context.ExternalContext#setClientWindow(javax.faces.lifecycle.ClientWindow)}.</p>
+     * 
+     * 
+     * @since 2.2
+     */
+    
+    public void attachWindow(FacesContext context) {
+    }
 
 
     /**
diff --git a/jsf-api/src/main/java/javax/faces/lifecycle/LifecycleFactory.java b/jsf-api/src/main/java/javax/faces/lifecycle/LifecycleFactory.java
index f719a3b..72af4b4 100644
--- a/jsf-api/src/main/java/javax/faces/lifecycle/LifecycleFactory.java
+++ b/jsf-api/src/main/java/javax/faces/lifecycle/LifecycleFactory.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -60,6 +64,9 @@ import javax.faces.FacesWrapper;
  */
 
 public abstract class LifecycleFactory implements FacesWrapper<LifecycleFactory> {
+
+    public LifecycleFactory() {
+    }
     
     
     /**
diff --git a/jsf-api/src/main/java/javax/faces/lifecycle/LifecycleWrapper.java b/jsf-api/src/main/java/javax/faces/lifecycle/LifecycleWrapper.java
new file mode 100644
index 0000000..dd9b446
--- /dev/null
+++ b/jsf-api/src/main/java/javax/faces/lifecycle/LifecycleWrapper.java
@@ -0,0 +1,99 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package javax.faces.lifecycle;
+
+import javax.faces.FacesException;
+import javax.faces.FacesWrapper;
+import javax.faces.context.FacesContext;
+import javax.faces.event.PhaseListener;
+
+/**
+ * <p class="changed_added_2_2">Provides a simple implementation of
+ * {@link Lifecycle} that can be subclassed by developers wishing to
+ * provide specialized behavior to an existing {@link Lifecycle}
+ * instance.  The default implementation of all methods is to call
+ * through to the wrapped {@link Lifecycle}.</p>
+
+ * <div class="changed_added_2_2"> 
+
+ * <p>Usage: extend this class and override getWrapped() to return the
+ * instance we are wrapping.</p>
+
+ * </div>
+
+ * @since 2.2
+ */
+
+public abstract class LifecycleWrapper extends Lifecycle implements FacesWrapper<Lifecycle> {
+
+    @Override
+    public abstract Lifecycle getWrapped();
+
+    @Override
+    public void addPhaseListener(PhaseListener listener) {
+        getWrapped().addPhaseListener(listener);
+    }
+
+    @Override
+    public void execute(FacesContext context) throws FacesException {
+        getWrapped().execute(context);
+    }
+
+    @Override
+    public PhaseListener[] getPhaseListeners() {
+        return getWrapped().getPhaseListeners();
+    }
+
+    @Override
+    public void removePhaseListener(PhaseListener listener) {
+        getWrapped().removePhaseListener(listener);
+    }
+
+    @Override
+    public void render(FacesContext context) throws FacesException {
+        getWrapped().render(context);
+    }
+
+    @Override
+    public void attachWindow(FacesContext context) {
+        getWrapped().attachWindow(context);
+    }
+}
diff --git a/jsf-api/src/main/java/javax/faces/lifecycle/package.html b/jsf-api/src/main/java/javax/faces/lifecycle/package.html
index e932408..92bed85 100644
--- a/jsf-api/src/main/java/javax/faces/lifecycle/package.html
+++ b/jsf-api/src/main/java/javax/faces/lifecycle/package.html
@@ -1,9 +1,51 @@
 <html>
 <head>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
 <title>Package Description for "javax.faces.lifecycle"</title>
 </head>
 <body bgcolor="white">
-    <p><span class="changed_modified_2_0">Classes</span> and interfaces defining lifecycle management for the
+    <p><span class="changed_modified_2_0 changed_modified_2_2">Classes</span> and interfaces defining lifecycle management for the
 JavaServer Faces implementation.  The main class in this package is
 {@link javax.faces.lifecycle.Lifecycle}.  <code>Lifecycle</code> is the
 gateway to executing the request processing lifecycle.
diff --git a/jsf-api/src/main/java/javax/faces/model/ArrayDataModel.java b/jsf-api/src/main/java/javax/faces/model/ArrayDataModel.java
index d57c7f4..936309f 100644
--- a/jsf-api/src/main/java/javax/faces/model/ArrayDataModel.java
+++ b/jsf-api/src/main/java/javax/faces/model/ArrayDataModel.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -36,10 +40,6 @@
 
 package javax.faces.model;
 
-
-import javax.faces.FacesException;
-
-
 /**
  * <p><strong>ArrayDataModel</strong> is a convenience implementation of
  * {@link DataModel} that wraps an array of Java objects.</p>
@@ -96,7 +96,7 @@ public class ArrayDataModel<E> extends DataModel<E> {
      * than or equal to zero, and less than the length of the array.  Otherwise,
      * return <code>false</code>.</p>
      *
-     * @throws FacesException if an error occurs getting the row availability
+     * @throws javax.faces.FacesException if an error occurs getting the row availability
      */
     public boolean isRowAvailable() {
 
@@ -116,7 +116,7 @@ public class ArrayDataModel<E> extends DataModel<E> {
      * length of the array.  If no <code>wrappedData</code> is available,
      * return -1.</p>
      *
-     * @throws FacesException if an error occurs getting the row count
+     * @throws javax.faces.FacesException if an error occurs getting the row count
      */
     public int getRowCount() {
 
@@ -133,7 +133,7 @@ public class ArrayDataModel<E> extends DataModel<E> {
      * specified by <code>rowIndex</code>.  If no wrapped data is available,
      * return <code>null</code>.</p>
      *
-     * @throws FacesException if an error occurs getting the row data
+     * @throws javax.faces.FacesException if an error occurs getting the row data
      * @throws IllegalArgumentException if now row data is available
      *  at the currently specified row index
      */
@@ -152,7 +152,7 @@ public class ArrayDataModel<E> extends DataModel<E> {
 
 
     /**
-     * @throws FacesException {@inheritDoc}     
+     * @throws javax.faces.FacesException {@inheritDoc}     
      */ 
     public int getRowIndex() {
 
@@ -162,7 +162,7 @@ public class ArrayDataModel<E> extends DataModel<E> {
 
 
     /**
-     * @throws FacesException {@inheritDoc}
+     * @throws javax.faces.FacesException {@inheritDoc}
      * @throws IllegalArgumentException {@inheritDoc}
      */ 
     public void setRowIndex(int rowIndex) {
diff --git a/jsf-api/src/main/java/javax/faces/model/CollectionDataModel.java b/jsf-api/src/main/java/javax/faces/model/CollectionDataModel.java
new file mode 100644
index 0000000..594f7da
--- /dev/null
+++ b/jsf-api/src/main/java/javax/faces/model/CollectionDataModel.java
@@ -0,0 +1,222 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package javax.faces.model;
+
+import java.util.Collection;
+
+
+/**
+ * <p class="changed_added_2_2"><strong>CollectionDataModel</strong> is a convenience 
+ * implementation of {@link DataModel} that wraps an <code>Collection</code> of 
+ * Java objects.</p>
+ */
+
+public class CollectionDataModel<E> extends DataModel<E> {
+    
+
+    // ------------------------------------------------------------ Constructors
+
+
+    /**
+     * <p>Construct a new {@link CollectionDataModel} with no specified
+     * wrapped data.</p>
+     */
+    public CollectionDataModel() {
+
+        this(null);
+
+    }
+
+
+    /**
+     * <p>Construct a new {@link CollectionDataModel} wrapping the specified
+     * list.</p>
+     *
+     * @param collection Collection to be wrapped.
+     */
+    public CollectionDataModel(Collection<E> collection) {
+
+        super();
+        setWrappedData(collection);
+
+    }
+
+
+    // ------------------------------------------------------ Instance Variables
+    
+    // The current row index (zero relative)
+    private int index = -1;
+    
+    private Collection<E> inner;
+    private E[] arrayFromInner;
+
+    // -------------------------------------------------------------- Properties
+
+
+    /**
+     * <p>Return <code>true</code> if there is <code>wrappedData</code>
+     * available, and the current value of <code>rowIndex</code> is greater
+     * than or equal to zero, and less than the size of the list.  Otherwise,
+     * return <code>false</code>.</p>
+     *
+     * @throws javax.faces.FacesException if an error occurs getting the row availability
+     */
+    public boolean isRowAvailable() {
+
+        if (arrayFromInner == null) {
+	    return (false);
+        } else if ((index >= 0) && (index < arrayFromInner.length)) {
+            return (true);
+        } else {
+            return (false);
+        }
+    }
+
+
+    /**
+     * <p>If there is <code>wrappedData</code> available, return the
+     * length of the list.  If no <code>wrappedData</code> is available,
+     * return -1.</p>
+     *
+     * @throws javax.faces.FacesException if an error occurs getting the row count
+     */
+    public int getRowCount() {
+
+        if (arrayFromInner == null) {
+	    return (-1);
+        }
+        return (arrayFromInner.length);
+
+    }
+
+
+    /**
+     * <p>If row data is available, return the array element at the index
+     * specified by <code>rowIndex</code>.  If no wrapped data is available,
+     * return <code>null</code>.</p>
+     *
+     * @throws javax.faces.FacesException if an error occurs getting the row data
+     * @throws IllegalArgumentException if now row data is available
+     *  at the currently specified row index
+     */
+    public E getRowData() {
+        
+        if (arrayFromInner == null) {
+	    return (null);
+        } else if (!isRowAvailable()) {
+            throw new NoRowAvailableException();
+        } else {
+            return (arrayFromInner[index]);
+        }
+        
+    }
+    
+    /**
+     * @throws javax.faces.FacesException {@inheritDoc}     
+     */ 
+    public int getRowIndex() {
+
+        return (index);
+
+    }
+
+
+    /**
+     * @throws javax.faces.FacesException {@inheritDoc}
+     * @throws IllegalArgumentException {@inheritDoc}
+     */ 
+    public void setRowIndex(int rowIndex) {
+
+        if (rowIndex < -1) {
+            throw new IllegalArgumentException();
+        }
+        int old = index;
+        index = rowIndex;
+	if (arrayFromInner == null) {
+	    return;
+	}
+	DataModelListener [] listeners = getDataModelListeners();
+        if ((old != index) && (listeners != null)) {
+            Object rowData = null;
+            if (isRowAvailable()) {
+                rowData = getRowData();
+            }
+            DataModelEvent event =
+                new DataModelEvent(this, index, rowData);
+            int n = listeners.length;
+            for (int i = 0; i < n; i++) {
+		if (null != listeners[i]) {
+		    listeners[i].rowSelected(event);
+		}
+            }
+        }
+
+        
+    }
+
+
+    public Object getWrappedData() {
+
+        return (this.inner);
+
+    }
+
+
+    /**
+     * Set the wrapped data.
+     * 
+     * @param data the wrapped data.
+     * @throws ClassCastException if <code>data</code> is
+     *  non-<code>null</code> and is not a <code>Collection</code>
+     */
+    public void setWrappedData(Object data) {
+        if (data == null) {
+            inner = null;
+            arrayFromInner = null;
+            setRowIndex(-1);
+        } else {
+            inner = (Collection<E>) data;            
+            arrayFromInner = (E[]) new Object[inner.size()];
+            inner.toArray(arrayFromInner);
+            setRowIndex(0);
+        }
+    }
+}
diff --git a/jsf-api/src/main/java/javax/faces/model/DataModel.java b/jsf-api/src/main/java/javax/faces/model/DataModel.java
index ecf5882..dc39484 100644
--- a/jsf-api/src/main/java/javax/faces/model/DataModel.java
+++ b/jsf-api/src/main/java/javax/faces/model/DataModel.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -41,8 +45,6 @@ import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
 import java.util.NoSuchElementException;
-
-import javax.faces.FacesException;
 import javax.faces.component.UIData;
 
 
@@ -89,7 +91,7 @@ public abstract class DataModel<E> implements Iterable<E> {
      * available at the current <code>rowIndex</code>.  If no
      * <code>wrappedData</code> is available, return <code>false</code>.</p>
      *
-     * @throws FacesException if an error occurs getting the row availability
+     * @throws javax.faces.FacesException if an error occurs getting the row availability
      */
     public abstract boolean isRowAvailable();
 
@@ -99,7 +101,7 @@ public abstract class DataModel<E> implements Iterable<E> {
      * {@link DataModel}.  If the number of rows is unknown, or no
      * <code>wrappedData</code> is available, return -1.</p>
      *
-     * @throws FacesException if an error occurs getting the row count
+     * @throws javax.faces.FacesException if an error occurs getting the row count
      */
     public abstract int getRowCount();
 
@@ -109,7 +111,7 @@ public abstract class DataModel<E> implements Iterable<E> {
      * row index.  If no <code>wrappedData</code> is available, return
      * <code>null</code>.</p>
      *
-     * @throws FacesException if an error occurs getting the row data
+     * @throws javax.faces.FacesException if an error occurs getting the row data
      * @throws IllegalArgumentException if now row data is available
      *  at the currently specified row index
      */
@@ -121,7 +123,7 @@ public abstract class DataModel<E> implements Iterable<E> {
      * we are not currently positioned on a row, or no <code>wrappedData</code>
      * is available, return -1.</p>
      *
-     * @throws FacesException if an error occurs getting the row index
+     * @throws javax.faces.FacesException if an error occurs getting the row index
      */
     public abstract int getRowIndex();
 
@@ -144,7 +146,7 @@ public abstract class DataModel<E> implements Iterable<E> {
      *
      * @param rowIndex The new zero-relative index (must be non-negative)
      *
-     * @throws FacesException if an error occurs setting the row index
+     * @throws javax.faces.FacesException if an error occurs setting the row index
      * @throws IllegalArgumentException if <code>rowIndex</code>
      *  is less than -1
      */
diff --git a/jsf-api/src/main/java/javax/faces/model/DataModelEvent.java b/jsf-api/src/main/java/javax/faces/model/DataModelEvent.java
index 534a388..4c66061 100644
--- a/jsf-api/src/main/java/javax/faces/model/DataModelEvent.java
+++ b/jsf-api/src/main/java/javax/faces/model/DataModelEvent.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-api/src/main/java/javax/faces/model/DataModelListener.java b/jsf-api/src/main/java/javax/faces/model/DataModelListener.java
index 5254404..3981b5f 100644
--- a/jsf-api/src/main/java/javax/faces/model/DataModelListener.java
+++ b/jsf-api/src/main/java/javax/faces/model/DataModelListener.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-api/src/main/java/javax/faces/model/ListDataModel.java b/jsf-api/src/main/java/javax/faces/model/ListDataModel.java
index 5d4bf74..3e34305 100644
--- a/jsf-api/src/main/java/javax/faces/model/ListDataModel.java
+++ b/jsf-api/src/main/java/javax/faces/model/ListDataModel.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -38,7 +42,6 @@ package javax.faces.model;
 
 
 import java.util.List;
-import javax.faces.FacesException;
 
 
 /**
@@ -97,7 +100,7 @@ public class ListDataModel<E> extends DataModel<E> {
      * than or equal to zero, and less than the size of the list.  Otherwise,
      * return <code>false</code>.</p>
      *
-     * @throws FacesException if an error occurs getting the row availability
+     * @throws javax.faces.FacesException if an error occurs getting the row availability
      */
     public boolean isRowAvailable() {
 
@@ -117,7 +120,7 @@ public class ListDataModel<E> extends DataModel<E> {
      * length of the list.  If no <code>wrappedData</code> is available,
      * return -1.</p>
      *
-     * @throws FacesException if an error occurs getting the row count
+     * @throws javax.faces.FacesException if an error occurs getting the row count
      */
     public int getRowCount() {
 
@@ -134,7 +137,7 @@ public class ListDataModel<E> extends DataModel<E> {
      * specified by <code>rowIndex</code>.  If no wrapped data is available,
      * return <code>null</code>.</p>
      *
-     * @throws FacesException if an error occurs getting the row data
+     * @throws javax.faces.FacesException if an error occurs getting the row data
      * @throws IllegalArgumentException if now row data is available
      *  at the currently specified row index
      */
@@ -152,7 +155,7 @@ public class ListDataModel<E> extends DataModel<E> {
 
 
     /**
-     * @throws FacesException {@inheritDoc}     
+     * @throws javax.faces.FacesException {@inheritDoc}     
      */ 
     public int getRowIndex() {
 
@@ -162,7 +165,7 @@ public class ListDataModel<E> extends DataModel<E> {
 
 
     /**
-     * @throws FacesException {@inheritDoc}
+     * @throws javax.faces.FacesException {@inheritDoc}
      * @throws IllegalArgumentException {@inheritDoc}
      */ 
     public void setRowIndex(int rowIndex) {
diff --git a/jsf-api/src/main/java/javax/faces/model/NoRowAvailableException.java b/jsf-api/src/main/java/javax/faces/model/NoRowAvailableException.java
index b8f1754..cdcbfb2 100644
--- a/jsf-api/src/main/java/javax/faces/model/NoRowAvailableException.java
+++ b/jsf-api/src/main/java/javax/faces/model/NoRowAvailableException.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -34,7 +38,6 @@
  * holder.
  */
 
-
 package javax.faces.model;
 
 /**
diff --git a/jsf-api/src/main/java/javax/faces/model/ResultDataModel.java b/jsf-api/src/main/java/javax/faces/model/ResultDataModel.java
index 1e86ca4..b7b2672 100644
--- a/jsf-api/src/main/java/javax/faces/model/ResultDataModel.java
+++ b/jsf-api/src/main/java/javax/faces/model/ResultDataModel.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -38,7 +42,6 @@ package javax.faces.model;
 
 
 import java.util.SortedMap;
-import javax.faces.FacesException;
 import javax.servlet.jsp.jstl.sql.Result;
 
 
diff --git a/jsf-api/src/main/java/javax/faces/model/ResultSetDataModel.java b/jsf-api/src/main/java/javax/faces/model/ResultSetDataModel.java
index d7847a1..db4d063 100644
--- a/jsf-api/src/main/java/javax/faces/model/ResultSetDataModel.java
+++ b/jsf-api/src/main/java/javax/faces/model/ResultSetDataModel.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-api/src/main/java/javax/faces/model/ScalarDataModel.java b/jsf-api/src/main/java/javax/faces/model/ScalarDataModel.java
index 5783dea..22154b0 100644
--- a/jsf-api/src/main/java/javax/faces/model/ScalarDataModel.java
+++ b/jsf-api/src/main/java/javax/faces/model/ScalarDataModel.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -36,10 +40,6 @@
 
 package javax.faces.model;
 
-
-import javax.faces.FacesException;
-
-
 /**
  * <p><strong>ScalarDataModel</strong> is a convenience implementation of
  * {@link DataModel} that wraps an individual Java object.</p>
diff --git a/jsf-api/src/main/java/javax/faces/model/SelectItem.java b/jsf-api/src/main/java/javax/faces/model/SelectItem.java
index 51bd832..ca78713 100644
--- a/jsf-api/src/main/java/javax/faces/model/SelectItem.java
+++ b/jsf-api/src/main/java/javax/faces/model/SelectItem.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -43,10 +47,10 @@ import javax.faces.component.UISelectOne;
 
 
 /**
- * <p><strong class="changed_modified_2_0">SelectItem</strong> represents a
- * single <em>item</em> in the list of supported <em>items</em>
- * associated with a {@link UISelectMany} or {@link UISelectOne}
- * component.</p>
+ * <p><strong class="changed_modified_2_0
+ * changed_modified_2_0_rev_a">SelectItem</strong> represents a single
+ * <em>item</em> in the list of supported <em>items</em> associated with
+ * a {@link UISelectMany} or {@link UISelectOne} component.</p>
  */
 
 public class SelectItem implements Serializable {
@@ -301,7 +305,7 @@ public class SelectItem implements Serializable {
     private boolean escape;
 
     /**
-     * <p class="changed_added_2_0">If and only if this returns
+     * <p class="changed_added_2_0_rev_a">If and only if this returns
      * <code>true</code>, the code that renders this select item must
      * escape the label using escaping syntax appropriate to the content
      * type being rendered.  </p>
@@ -313,7 +317,7 @@ public class SelectItem implements Serializable {
     }
 
     /**
-     * <p class="changed_added_2_0">Set the value of the escape
+     * <p class="changed_added_2_0_rev_a">Set the value of the escape
      * property.  See {@link #isEscape}.</p>
      *
      * @since 2.0
diff --git a/jsf-api/src/main/java/javax/faces/model/SelectItemGroup.java b/jsf-api/src/main/java/javax/faces/model/SelectItemGroup.java
index 2fe4dab..b5b3752 100644
--- a/jsf-api/src/main/java/javax/faces/model/SelectItemGroup.java
+++ b/jsf-api/src/main/java/javax/faces/model/SelectItemGroup.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-api/src/main/java/javax/faces/model/package.html b/jsf-api/src/main/java/javax/faces/model/package.html
index a0b13e2..990c246 100644
--- a/jsf-api/src/main/java/javax/faces/model/package.html
+++ b/jsf-api/src/main/java/javax/faces/model/package.html
@@ -1,8 +1,51 @@
 <html>
 <head>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
 <title>Package Description for "javax.faces.model"</title>
 <body bgcolor="white">
-    <p><span class="changed_modified_2_0">Standard</span> model data 
+    <p><span class="changed_modified_2_0
+    changed_modified_2_0_rev_a changed_modified_2_2">Standard</span> model data 
     beans for JavaServer Faces.</p>
 </body>
 </html>
diff --git a/jsf-api/src/main/java/javax/faces/package.html b/jsf-api/src/main/java/javax/faces/package.html
index cd65f41..681d5e9 100644
--- a/jsf-api/src/main/java/javax/faces/package.html
+++ b/jsf-api/src/main/java/javax/faces/package.html
@@ -3,24 +3,50 @@
 <head>
 <!--
 
-  @(#)package.html	1.60 98/01/27
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
-  Copyright 2004 Sun Microsystems, Inc. 901 San Antonio Road, 
-  Palo Alto, California, 94303, U.S.A.  All Rights Reserved.
+    Copyright (c) 2004-2010 Oracle and/or its affiliates. All rights reserved.
 
-  This software is the confidential and proprietary information of Sun
-  Microsystems, Inc. ("Confidential Information").  You shall not
-  disclose such Confidential Information and shall use it only in
-  accordance with the terms of the license agreement you entered into
-  with Sun.
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
 
-  CopyrightVersion 1.2
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 </head>
 <body bgcolor="white">
 
-<span class="changed_modified_2_0">Top</span> level classes for the 
+<span class="changed_modified_2_0 changed_modified_2_1 changed_modified_2_2">Top</span> level classes for the
 JavaServer(tm) Faces API.  The most important
 class in the package is {@link javax.faces.FactoryFinder}, which is the
 mechanism by which users can override many of the key pieces of the
diff --git a/jsf-api/src/main/java/javax/faces/render/ClientBehaviorRenderer.java b/jsf-api/src/main/java/javax/faces/render/ClientBehaviorRenderer.java
index aac343a..035c3d4 100644
--- a/jsf-api/src/main/java/javax/faces/render/ClientBehaviorRenderer.java
+++ b/jsf-api/src/main/java/javax/faces/render/ClientBehaviorRenderer.java
@@ -1,126 +1,130 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package javax.faces.render;
-
-
-import javax.faces.component.UIComponent;
-import javax.faces.component.behavior.ClientBehavior;
-import javax.faces.component.behavior.ClientBehaviorContext;
-import javax.faces.context.FacesContext;
-
-
-/**
- * <p>A <strong class="changed_added_2_0">ClientBehaviorRenderer</strong> produces
- * the client-side script that implements a {@link ClientBehavior}'s client-side 
- * logic.  It can also enqueue server-side {@link javax.faces.event.BehaviorEvent}s that may be
- * processed later by event listeners that have registered an interest.</p> 
- *
- * <p>Individual {@link ClientBehaviorRenderer} instances will be instantiated as 
- * requested during the rendering process, and will remain in existence for the
- * remainder of the lifetime of a web application.  Because each instance
- * may be invoked from more than one request processing thread simultaneously,
- * they MUST be programmed in a thread-safe manner.</p>
- *
- * @since 2.0
- */
-
-public abstract class ClientBehaviorRenderer {
-    
-    
-    // ------------------------------------------------------ Rendering Methods
-
-    /**
-     * <p class="changed_added_2_0">Return the script that implements this
-     * ClientBehavior's client-side logic.  The default implementation returns 
-     * <code>null</code>.</p>
-     *
-     * <p>ClientBehaviorRenderer.getScript() implementations are allowed to return
-     * null to indicate that no script is required for this particular
-     * getScript() call.  For example, a ClientBehaviorRenderer implementation may
-     * return null if the associated ClientBehavior is disabled.
-     * </p>
-     *
-     * @param behaviorContext the {@link ClientBehaviorContext} that provides
-     * properties that might influence this getScript() call.  Note that
-     * ClientBehaviorContext instances are short-lived objects that are only
-     * valid for the duration of the call to getScript().  ClientBehaviorRenderer
-     * implementations must not hold onto references to ClientBehaviorContexts.
-     *
-     * @param behavior the ClientBehavior instance that generates script.
-     *
-     * @return script that provides the client-side behavior, or null
-     * if no script is required.
-     *
-     * @since 2.0
-     *
-     */
-    public String getScript(ClientBehaviorContext behaviorContext, 
-                            ClientBehavior behavior) {
-
-        return null;
-    }
-
-
-    /**
-     * <p class="changed_added_2_0">Decode any new state of this {@link ClientBehavior} 
-     * from the request contained in the specified {@link FacesContext}.</p>
-     *
-     * <p>During decoding, events may be enqueued for later processing
-     * (by event listeners who have registered an interest),  by calling
-     * <code>queueEvent()</code>.</p>
-     *
-     * @param context {@link FacesContext} for the request we are processing
-     * @param component {@link UIComponent} the component associated with this 
-     * {@link javax.faces.component.behavior.Behavior}
-     * @param behavior {@link ClientBehavior} the behavior instance
-     *
-     * @throws NullPointerException if <code>context</code>,
-     *  <code>component</code> <code>behavior</code> is <code>null</code>
-     *
-     * @since 2.0
-     */
-    public void decode(FacesContext context,
-                       UIComponent component,
-                       ClientBehavior behavior) {
-
-        if (null == context || null == component || behavior == null) {
-            throw new NullPointerException();
-        }
-
-    }
-
-}
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package javax.faces.render;
+
+
+import javax.faces.component.UIComponent;
+import javax.faces.component.behavior.ClientBehavior;
+import javax.faces.component.behavior.ClientBehaviorContext;
+import javax.faces.context.FacesContext;
+
+
+/**
+ * <p>A <strong class="changed_added_2_0">ClientBehaviorRenderer</strong> produces
+ * the client-side script that implements a {@link ClientBehavior}'s client-side 
+ * logic.  It can also enqueue server-side {@link javax.faces.event.BehaviorEvent}s that may be
+ * processed later by event listeners that have registered an interest.</p> 
+ *
+ * <p>Individual {@link ClientBehaviorRenderer} instances will be instantiated as 
+ * requested during the rendering process, and will remain in existence for the
+ * remainder of the lifetime of a web application.  Because each instance
+ * may be invoked from more than one request processing thread simultaneously,
+ * they MUST be programmed in a thread-safe manner.</p>
+ *
+ * @since 2.0
+ */
+
+public abstract class ClientBehaviorRenderer {
+    
+    
+    // ------------------------------------------------------ Rendering Methods
+
+    /**
+     * <p class="changed_added_2_0">Return the script that implements this
+     * ClientBehavior's client-side logic.  The default implementation returns 
+     * <code>null</code>.</p>
+     *
+     * <p>ClientBehaviorRenderer.getScript() implementations are allowed to return
+     * null to indicate that no script is required for this particular
+     * getScript() call.  For example, a ClientBehaviorRenderer implementation may
+     * return null if the associated ClientBehavior is disabled.
+     * </p>
+     *
+     * @param behaviorContext the {@link ClientBehaviorContext} that provides
+     * properties that might influence this getScript() call.  Note that
+     * ClientBehaviorContext instances are short-lived objects that are only
+     * valid for the duration of the call to getScript().  ClientBehaviorRenderer
+     * implementations must not hold onto references to ClientBehaviorContexts.
+     *
+     * @param behavior the ClientBehavior instance that generates script.
+     *
+     * @return script that provides the client-side behavior, or null
+     * if no script is required.
+     *
+     * @since 2.0
+     *
+     */
+    public String getScript(ClientBehaviorContext behaviorContext, 
+                            ClientBehavior behavior) {
+
+        return null;
+    }
+
+
+    /**
+     * <p class="changed_added_2_0">Decode any new state of this {@link ClientBehavior} 
+     * from the request contained in the specified {@link FacesContext}.</p>
+     *
+     * <p>During decoding, events may be enqueued for later processing
+     * (by event listeners who have registered an interest),  by calling
+     * <code>queueEvent()</code>.</p>
+     *
+     * @param context {@link FacesContext} for the request we are processing
+     * @param component {@link UIComponent} the component associated with this 
+     * {@link javax.faces.component.behavior.Behavior}
+     * @param behavior {@link ClientBehavior} the behavior instance
+     *
+     * @throws NullPointerException if <code>context</code>,
+     *  <code>component</code> <code>behavior</code> is <code>null</code>
+     *
+     * @since 2.0
+     */
+    public void decode(FacesContext context,
+                       UIComponent component,
+                       ClientBehavior behavior) {
+
+        if (null == context || null == component || behavior == null) {
+            throw new NullPointerException();
+        }
+
+    }
+
+}
diff --git a/jsf-api/src/main/java/javax/faces/render/FacesBehaviorRenderer.java b/jsf-api/src/main/java/javax/faces/render/FacesBehaviorRenderer.java
index 1400ec8..aec3731 100644
--- a/jsf-api/src/main/java/javax/faces/render/FacesBehaviorRenderer.java
+++ b/jsf-api/src/main/java/javax/faces/render/FacesBehaviorRenderer.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-api/src/main/java/javax/faces/render/FacesRenderer.java b/jsf-api/src/main/java/javax/faces/render/FacesRenderer.java
index 651dff8..f5f1704 100644
--- a/jsf-api/src/main/java/javax/faces/render/FacesRenderer.java
+++ b/jsf-api/src/main/java/javax/faces/render/FacesRenderer.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-api/src/main/java/javax/faces/render/RenderKit.java b/jsf-api/src/main/java/javax/faces/render/RenderKit.java
index edbdf4a..3ee115a 100644
--- a/jsf-api/src/main/java/javax/faces/render/RenderKit.java
+++ b/jsf-api/src/main/java/javax/faces/render/RenderKit.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -43,9 +47,7 @@ import javax.faces.context.ResponseStream;
 import java.io.Writer;
 import java.io.OutputStream;
 import java.util.Iterator;
-import java.util.Collection;
 import java.util.Collections;
-import java.util.List;
 import java.util.Set;
 
 
diff --git a/jsf-api/src/main/java/javax/faces/render/RenderKitFactory.java b/jsf-api/src/main/java/javax/faces/render/RenderKitFactory.java
index d8f68e9..53b0a04 100644
--- a/jsf-api/src/main/java/javax/faces/render/RenderKitFactory.java
+++ b/jsf-api/src/main/java/javax/faces/render/RenderKitFactory.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -62,6 +66,9 @@ import javax.faces.context.FacesContext;
  */
 
 public abstract class RenderKitFactory implements FacesWrapper<RenderKitFactory> {
+
+    public RenderKitFactory() {
+    }
     
     /**
      * <p class="changed_added_2_0">If this factory has been decorated, the 
diff --git a/jsf-api/src/main/java/javax/faces/render/RenderKitWrapper.java b/jsf-api/src/main/java/javax/faces/render/RenderKitWrapper.java
index 23eaddc..7b59e5d 100644
--- a/jsf-api/src/main/java/javax/faces/render/RenderKitWrapper.java
+++ b/jsf-api/src/main/java/javax/faces/render/RenderKitWrapper.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -62,6 +66,7 @@ public abstract class RenderKitWrapper extends RenderKit implements FacesWrapper
      * @return the wrapped {@link RenderKit} instance
      * @see javax.faces.FacesWrapper#getWrapped()
      */
+    @Override
     public abstract RenderKit getWrapped();
 
 
diff --git a/jsf-api/src/main/java/javax/faces/render/Renderer.java b/jsf-api/src/main/java/javax/faces/render/Renderer.java
index 10b3709..2eb1d8d 100644
--- a/jsf-api/src/main/java/javax/faces/render/Renderer.java
+++ b/jsf-api/src/main/java/javax/faces/render/Renderer.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -40,12 +44,12 @@ package javax.faces.render;
 import java.io.IOException;
 import java.util.Iterator;
 import javax.faces.component.UIComponent;
-import javax.faces.convert.ConverterException;
 import javax.faces.context.FacesContext;
+import javax.faces.convert.ConverterException;
 
 
 /**
- * <p>A <strong class="changed_modified_2_0">Renderer</strong> converts
+ * <p>A <strong class="changed_modified_2_0 changed_modified_2_2">Renderer</strong> converts
  * the internal representation of {@link UIComponent}s into the output
  * stream (or writer) associated with the response we are creating for a
  * particular request.  Each <code>Renderer</code> knows how to render
@@ -86,6 +90,14 @@ import javax.faces.context.FacesContext;
 
 public abstract class Renderer {
     
+    /**
+     * <p class="changed_added_2_2">The key in the component passthrough
+     * attributes {@code Map} for the localName of the element corresponding to the component.</p>
+     * 
+     * @since 2.2
+     */
+    public static final String PASSTHROUGH_RENDERER_LOCALNAME_KEY = "elementName";
+    
     
     // ------------------------------------------------------ Rendering Methods
 
diff --git a/jsf-api/src/main/java/javax/faces/render/RendererWrapper.java b/jsf-api/src/main/java/javax/faces/render/RendererWrapper.java
new file mode 100644
index 0000000..eded474
--- /dev/null
+++ b/jsf-api/src/main/java/javax/faces/render/RendererWrapper.java
@@ -0,0 +1,108 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package javax.faces.render;
+
+import java.io.IOException;
+import javax.faces.FacesWrapper;
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.convert.ConverterException;
+
+
+/**
+ * <p class="changed_added_2_2">Provides a simple implementation of 
+ * {@link Renderer} that can be subclassed by developers wishing to
+ * provide specialized behavior to an existing {@link Renderer}
+ * instance.  The default implementation of all methods is to call
+ * through to the wrapped {@link Renderer} instance.</p>
+ *
+ * <p class="changed_added_2_2">Usage: extend this class and override 
+ * {@link #getWrapped} to
+ * return the instance being wrapping.</p>
+ *
+ * @since 2.2
+ */
+
+public abstract class RendererWrapper extends Renderer implements FacesWrapper<Renderer> {
+
+    /**
+     * @return the instance we are wrapping
+     */
+    @Override
+    public abstract Renderer getWrapped();
+    
+
+    @Override
+    public String convertClientId(FacesContext context, String clientId) {
+        return getWrapped().convertClientId(context, clientId);
+    }
+    
+    @Override
+    public Object getConvertedValue(FacesContext context, UIComponent component, Object submittedValue) throws ConverterException {
+        return getWrapped().getConvertedValue(context, component, submittedValue);
+    }
+
+    @Override
+    public void decode(FacesContext context, UIComponent component) {
+        getWrapped().decode(context, component);
+    }
+
+    @Override
+    public void encodeBegin(FacesContext context, UIComponent component) throws IOException {
+        getWrapped().encodeBegin(context, component);
+    }
+
+    @Override
+    public void encodeChildren(FacesContext context, UIComponent component) throws IOException {
+        getWrapped().encodeChildren(context, component);
+    }
+
+    @Override
+    public void encodeEnd(FacesContext context, UIComponent component) throws IOException {
+        getWrapped().encodeEnd(context, component);
+    }
+
+    @Override
+    public boolean getRendersChildren() {
+        return getWrapped().getRendersChildren();
+    }
+    
+}
diff --git a/jsf-api/src/main/java/javax/faces/render/ResponseStateManager.java b/jsf-api/src/main/java/javax/faces/render/ResponseStateManager.java
index 7c0a89a..4aae0d7 100644
--- a/jsf-api/src/main/java/javax/faces/render/ResponseStateManager.java
+++ b/jsf-api/src/main/java/javax/faces/render/ResponseStateManager.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -49,7 +53,8 @@ import java.util.logging.Logger;
 
 
 /**
- * <p><strong class="changed_modified_2_0">ResponseStateManager</strong>
+ * <p><strong class="changed_modified_2_0 changed_modified_2_2">
+ * ResponseStateManager</strong>
  * is the helper class to {@link javax.faces.application.StateManager}
  * that knows the specific rendering technology being used to generate
  * the response.  It is a singleton abstract class, vended by the {@link
@@ -71,9 +76,20 @@ public abstract class ResponseStateManager {
             "javax.faces.RenderKitId";
             
     /**
-     * <p><span class="changed_modified_2_0">Implementations</span> must
-     * use this value as the name and id of the client parameter in
-     * which to save the state between requests.</p>
+     * <p><span class="changed_modified_2_0
+     * changed_modified_2_2">Implementations</span> must use this
+     * constant field value as the name of the client parameter in which
+     * to save the state between requests. <span
+     * class="changed_added_2_2">The <code>id</code> attribute must be a
+     * concatenation of the return from {@link
+     * javax.faces.component.UIViewRoot#getContainerClientId}, the
+     * return from {@link
+     * javax.faces.component.UINamingContainer#getSeparatorChar}, this
+     * constant field value, the separator char, and a number that is 
+     * guaranteed to be unique with respect to all the other instances of
+     * this kind of client parameter in the view.</span>
+     * 
+     * </span></p>
 
      * <p class="changed_added_2_0">It is strongly recommend that
      * implementations guard against cross site scripting attacks by at
@@ -84,11 +100,65 @@ public abstract class ResponseStateManager {
      */
 
     public static final String VIEW_STATE_PARAM = "javax.faces.ViewState";
-
-    /*       
-     * <p>Take the argument <code>state</code> and write it into the
+    
+    /**
+     * <p class="changed_added_2_2">The name of the hidden field that
+     * refers to the encoded ClientWindow.  This field is only used if 
+     * {@link javax.faces.lifecycle.ClientWindow#CLIENT_WINDOW_MODE_PARAM_NAME}
+     * is not "none". The <code>id</code> attribute must be a
+     * concatenation of the return from {@link
+     * javax.faces.component.UIViewRoot#getContainerClientId}, the
+     * return from {@link
+     * javax.faces.component.UINamingContainer#getSeparatorChar}, this
+     * constant field value, the separator char, and a number that is 
+     * guaranteed to be unique with respect to all the other instances of
+     * this kind of client parameter in the view.  The value of this parameter 
+     * is the return from {@link javax.faces.lifecycle.ClientWindow#getId}.</p>
+     * 
+     * @since 2.2
+     * 
+     */
+    
+    public static final String CLIENT_WINDOW_PARAM = "javax.faces.ClientWindow";
+    
+    /**
+     * <p class="changed_added_2_2">The name of the URL query parameter for transmitting
+     * the client window id.  This parameter is only used if 
+     * {@link javax.faces.lifecycle.ClientWindow#CLIENT_WINDOW_MODE_PARAM_NAME}
+     * is not "none".  The name of the parameter is given by the constant value 
+     * of this field.  The value of this parameter 
+     * is the return from {@link javax.faces.lifecycle.ClientWindow#getId}.
+     * </p>
+     * 
+     * @since 2.2
+     */
+    
+    public static final String CLIENT_WINDOW_URL_PARAM = "jfwid";
+    
+    /**
+     * <p class="changed_added_2_2">The value of this constant is taken
+     * to be the name of a request parameter whose value is inspected
+     * to verify the safety of an incoming non-postback request with respect
+     * to the currently configured <code>Set</code> of protected views
+     * for this application.</p>
+     * 
+     * @since 2.2
+     */
+    
+    public static final String NON_POSTBACK_VIEW_TOKEN_PARAM = 
+            "javax.faces.Token";
+    
+    /**       
+     * <p><span class="changed_modified_2_2"">Take</span> the argument 
+     * <code>state</code> and write it into the
      * output using the current {@link ResponseWriter}, which must be
      * correctly positioned already.</p>
+     * 
+     * <p class="changed_added_2_2">Call {@link FacesContext#getViewRoot()}.
+     * If {@link javax.faces.component.UIComponent#isTransient()}
+     * returns {@code true}, take implementation specific action so that the 
+     * following call to {@link #isStateless} returns {@code true} and return.
+     * Otherwise, proceed as follows.</p>
      *
      * <p>If the state is to be written out to hidden fields, the
      * implementation must take care to make all necessary character
@@ -97,15 +167,15 @@ public abstract class ResponseStateManager {
      *
      * <p>If the state saving method for this application is {@link
      * javax.faces.application.StateManager#STATE_SAVING_METHOD_CLIENT},
-     * the implementation may encrypt the state to be saved to the
-     * client.  We recommend that the state be unreadable by the client,
-     * and also be tamper evident.  The reference implementation follows
-     * these recommendations.  </p>
+     * the implementation <span class="changed_modified_2_2">must</span> 
+     * encrypt the state to be saved to the
+     * client <span class="changed_modified_2_2">in a tamper evident 
+     * manner</span>.</p>
      *
      * <p>If the state saving method for this application is {@link
      * javax.faces.application.StateManager#STATE_SAVING_METHOD_SERVER},
      * and the current request is an <code>Ajax</code> request
-     * {@link javax.faces.context.PartialViewContext.isAjaxRequest} returns
+     * {@link javax.faces.context.PartialViewContext#isAjaxRequest} returns
      * <code>true</code>), use the current view state identifier if it is
      * available (do not generate a new identifier).</p>
      * 
@@ -116,10 +186,10 @@ public abstract class ResponseStateManager {
      * render kit identifier must not be written if:</p>
      * <ul>
      * <li>it is the default render kit identifier as returned by 
-     * {@link Application#getDefaultRenderKitId()} or</li>
+     * {@link javax.faces.application.Application#getDefaultRenderKitId()} or</li>
      * <li>the render kit identfier is the value of 
-     * <code>RenderKitFactory.HTML_BASIC_RENDER_KIT</code> and 
-     * {@link Application.getDefaultRenderKitId()} returns <code>null</code>.
+     * <code>javax.faces.render.RenderKitFactory.HTML_BASIC_RENDER_KIT</code> and 
+     * {@link javax.faces.application.Application#getDefaultRenderKitId()} returns <code>null</code>.
      * </li>
      * </ul> 
      *
@@ -128,11 +198,29 @@ public abstract class ResponseStateManager {
      * implementation of this method checks if the argument is an
      * instance of <code>SerializedView</code>.  If so, it calls through
      * to {@link
-     * #writeState(javax.faces.context.FacesContext,javax.faces.application.StateManager.SerializedView}.
+     * #writeState(javax.faces.context.FacesContext,javax.faces.application.StateManager.SerializedView)}.
      * If not, it expects the state to be a two element Object array.  It creates 
      * an instance of <code>SerializedView</code> and
      * stores the state as the treeStructure, and passes it to {@link
-     * #writeState(javax.faces.context.FacesContext,javax.faces.application.StateManager.SerializedView}.</p>
+     * #writeState(javax.faces.context.FacesContext,javax.faces.application.StateManager.SerializedView)}.</p>
+     * 
+     * <p class="changed_added_2_2">The {@link
+     * javax.faces.lifecycle.ClientWindow} must be written using these
+     * steps.  Call {@link
+     * javax.faces.context.ExternalContext#getClientWindow}.  If the
+     * result is <code>null</code>, take no further action regarding the
+     * <code>ClientWindow</code>.  If the result is
+     * non-<code>null</code>, write a hidden field whose name is {@link
+     * #CLIENT_WINDOW_PARAM} and whose id is
+     * <code><VIEW_ROOT_CONTAINER_CLIENT_ID><SEP>javax.faces.ClientWindow<SEP><UNIQUE_PER_VIEW_NUMBER></code>
+     * where <SEP> is the currently configured
+     * <code>UINamingContainer.getSeparatorChar()</code>.
+     * <VIEW_ROOT_CONTAINER_CLIENT_ID> is the return from
+     * <code>UIViewRoot.getContainerClientId()</code> on the view from
+     * whence this state originated.  <UNIQUE_PER_VIEW_NUMBER> is
+     * a number that must be unique within this view, but must not be
+     * included in the view state.  The value of the field is implementation
+     * dependent but must uniquely identify this window within the user's session.</p>
      *
      *
      * @since 1.2
@@ -214,12 +302,52 @@ public abstract class ResponseStateManager {
         }
         
     }
-
+    
     /**
-     * <p>The implementation must inspect the current request and return
+     * <p class="changed_added_2_2">If the preceding call to {@link #writeState(javax.faces.context.FacesContext, java.lang.Object)}
+     * was stateless, return {@code true}.  If the preceding call to {@code writeState()} was
+     * stateful, return {@code false}.  Otherwise throw {@code IllegalStateException}.</p>
+     * 
+     * <div class="changed_added_2_2">
+     * 
+     * <p>To preserve backward compatibility
+     * with custom implementations that may have extended from an earlier
+     * version of this class, an implementation is provided that returns 
+     * <code>false</code>.  A compliant implementation must override this 
+     * method to take the specified action.</p>
+     * 
+     * </div>
+     * 
+     * @param context The {@link FacesContext} instance for the current request
+     * @param viewId View identifier of the view to be restored
+     * @throws NullPointerException if the argument {@code context} is {@code null}.
+     * @throws IllegalStateException if this method is invoked and the statefulness
+     * of the preceding call to {@link #writeState(javax.faces.context.FacesContext, java.lang.Object)}
+     * cannot be determined.
+     * 
+     * @since 2.2
+     * 
+     *  
+     */
+    
+    public boolean isStateless(FacesContext context, String viewId) {
+        return false;
+    }
+    
+    /**
+     * <p><span class="changed_modified_2_2">The</span> implementation must 
+     * inspect the current request and return
      * an Object representing the tree structure and component state
      * passed in to a previous invocation of {@link
      * #writeState(javax.faces.context.FacesContext,java.lang.Object)}.</p>
+     * 
+     * <p class="changed_added_2_2">If the state saving method for this 
+     * application is {@link
+     * javax.faces.application.StateManager#STATE_SAVING_METHOD_CLIENT},
+     * <code>writeState()</code> will have encrypted the state in a tamper
+     * evident manner.  If the state fails to decrypt, or decrypts but 
+     * indicates evidence of tampering, a 
+     * {@link javax.faces.application.ProtectedViewException} must be thrown.</p>
      *
      * <p>For backwards compatability with existing
      * <code>ResponseStateManager</code> implementations, the default
@@ -291,7 +419,7 @@ public abstract class ResponseStateManager {
      * previous request to which this request is a postback,
      * <code>false</code> otherwise.</p>
      *
-     * <p>The implementation if this method for the Standard HTML
+     * <p>The implementation of this method for the Standard HTML
      * RenderKit must consult the {@link
      * javax.faces.context.ExternalContext}'s
      * <code>requestParameterMap</code> and return <code>true</code> if
@@ -311,7 +439,6 @@ public abstract class ResponseStateManager {
         return (!context.getExternalContext().getRequestParameterMap().isEmpty());
     }
 
-
     /**
      * <p>
      * Return the specified state as a <code>String</code> without any markup
@@ -328,6 +455,21 @@ public abstract class ResponseStateManager {
     public String getViewState(FacesContext context, Object state) {
         return null;
     }
-
-
+    
+    /**
+     * <p class="changed_added_2_2">Compliant implementations must return a 
+     * cryptographically strong token for use to protect views in this 
+     * application. For backwards compatability with earlier revisions, a
+     * default implementation is provided that simply returns <code>null</code>.
+     * </p>
+     * 
+     * @param context the {@link FacesContext} for the current request
+     * 
+     * @return a cryptographically strong value
+     *
+     * @since 2.2
+     */
+    public String getCryptographicallyStrongTokenFromSession(FacesContext context) {
+        return null;
+    }
 }
diff --git a/jsf-api/src/main/java/javax/faces/render/package.html b/jsf-api/src/main/java/javax/faces/render/package.html
index 77712ba..38d36ac 100644
--- a/jsf-api/src/main/java/javax/faces/render/package.html
+++ b/jsf-api/src/main/java/javax/faces/render/package.html
@@ -1,9 +1,52 @@
 <html>
 <head>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
 <title>Package Description for "javax.faces.render"</title>
 </head>
 <body bgcolor="white">
-<p><span class="changed_modified_2_0">Classes</span> and interfaces
+<p><span class="changed_modified_2_0 changed_modified_2_2">Classes</span> 
+    and interfaces
 defining the rendering model.  The main class in this package is {@link
 javax.faces.render.RenderKit}.  <code>RenderKit</code> vends a set of
 {@link javax.faces.render.Renderer} instances which provide rendering
diff --git a/jsf-api/src/main/java/javax/faces/validator/BeanValidator.java b/jsf-api/src/main/java/javax/faces/validator/BeanValidator.java
index f276bd9..7c032aa 100644
--- a/jsf-api/src/main/java/javax/faces/validator/BeanValidator.java
+++ b/jsf-api/src/main/java/javax/faces/validator/BeanValidator.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -54,8 +58,9 @@ import javax.validation.ValidatorFactory;
 import javax.validation.groups.Default;
 
 /**
- * <p class="changed_added_2_0">A Validator that delegates validation
- * of the bean property to the Bean Validation API.</p>
+ * <p class="changed_added_2_0"><span
+ * class="changed_modified_2_0_rev_a">A Validator</span> that delegates
+ * validation of the bean property to the Bean Validation API.</p>
  * @since 2.0
  */
 public class BeanValidator implements Validator, PartialStateHolder {
@@ -140,19 +145,28 @@ public class BeanValidator implements Validator, PartialStateHolder {
 
     public void setValidationGroups(String validationGroups) {
 
-        clearInitialState();
+        clearInitialState();        
+        String newValidationGroups = validationGroups;
+        
         // treat empty list as null
-        if (validationGroups != null && validationGroups.matches(EMPTY_VALIDATION_GROUPS_PATTERN)) {
-            validationGroups = null;
+        if (newValidationGroups != null && newValidationGroups.matches(EMPTY_VALIDATION_GROUPS_PATTERN)) {
+            newValidationGroups = null;
         }
         
         // only clear cache of validation group classes if value is changing
-        if ((validationGroups == null && this.validationGroups != null) ||
-            (validationGroups != null && !validationGroups.equals(this.validationGroups))) {
-            this.cachedValidationGroups = null;
+        if (newValidationGroups == null && validationGroups != null) {
+            cachedValidationGroups = null;
+        }
+        
+        if (newValidationGroups != null && validationGroups != null && !newValidationGroups.equals(validationGroups)) {
+            cachedValidationGroups = null;
+        }
+        
+        if (newValidationGroups != null && validationGroups == null) {
+            cachedValidationGroups = null;
         }
         
-        this.validationGroups = validationGroups;
+        this.validationGroups = newValidationGroups;
     }
 
     /**
@@ -295,7 +309,7 @@ public class BeanValidator implements Validator, PartialStateHolder {
             return;
         }
         if (isResolvable(valueReference, valueExpression)) {
-            Set<ConstraintViolation> violations = null;
+            Set<ConstraintViolation<?>> violations = null;
             try {
                 //noinspection unchecked
                 violations =
@@ -335,9 +349,7 @@ public class BeanValidator implements Validator, PartialStateHolder {
                 }
                 throw toThrow;
             }
-        } else {
-        }
-        
+        }        
     }
     
     private boolean isResolvable(ValueReference ref, 
diff --git a/jsf-api/src/main/java/javax/faces/validator/DoubleRangeValidator.java b/jsf-api/src/main/java/javax/faces/validator/DoubleRangeValidator.java
index e76eb69..417469c 100644
--- a/jsf-api/src/main/java/javax/faces/validator/DoubleRangeValidator.java
+++ b/jsf-api/src/main/java/javax/faces/validator/DoubleRangeValidator.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -43,9 +47,12 @@ import javax.faces.context.FacesContext;
 import javax.faces.convert.Converter;
 
 /**
- * <p><strong>DoubleRangeValidator</strong> is a {@link Validator} that checks
- * the value of the corresponding component against specified minimum and
- * maximum values.  The following algorithm is implemented:</p>
+ * <p><strong
+ * class="changed_modified_2_0_rev_a">DoubleRangeValidator</strong> is a
+ * {@link Validator} that checks the value of the corresponding
+ * component against specified minimum and maximum values.  The
+ * following algorithm is implemented:</p>
+
  * <ul>
  * <li>If the passed value is <code>null</code>, exit immediately.</li>
  * <li>If the current component value is not a floating point type, or
diff --git a/jsf-api/src/main/java/javax/faces/validator/FacesValidator.java b/jsf-api/src/main/java/javax/faces/validator/FacesValidator.java
index 03b1e1b..587d75e 100644
--- a/jsf-api/src/main/java/javax/faces/validator/FacesValidator.java
+++ b/jsf-api/src/main/java/javax/faces/validator/FacesValidator.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -43,7 +47,8 @@ import java.lang.annotation.Target;
 import java.lang.annotation.Inherited;
 
 /**
- * <p class="changed_added_2_0">The presence of this annotation on a
+ * <p class="changed_added_2_0"><span class="changed_modified_2_2">The</span>
+ * presence of this annotation on a
  * class automatically registers the class with the runtime as a {@link
  * Validator}.  The value of the {@link #value} attribute is taken to be
  * the <em>validator-id</em> and the fully qualified class name of the
@@ -66,14 +71,19 @@ import java.lang.annotation.Inherited;
 public @interface FacesValidator {
 
     /**
-     * <p class="changed_added_2_0">The value of this annotation
+     * <p class="changed_added_2_0"><span class="changed_modified_2_2">The</span> value of this annotation
      * attribute is taken to be the <em>validator-id</em> with which
      * instances of this class of component can be instantiated by
      * calling {@link
-     * javax.faces.application.Application#createValidator(java.lang.String)}.</p>
+     * javax.faces.application.Application#createValidator(java.lang.String)}.
+     * <span class="changed_added_2_2">If no value is specified, or the value is
+     * <code>null</code>, the value is taken to be the return of calling
+     * <code>getSimpleName</code> on the class to which this annotation
+     * is attached and lowercasing the first character.  If more than one
+     * validator with this derived name is found, the results are undefined.</span></p>
      */ 
 
-    String value();
+    String value() default "";
 
     /**
      * <p class="changed_added_2_0">If <code>true</code>, the validator
diff --git a/jsf-api/src/main/java/javax/faces/validator/LengthValidator.java b/jsf-api/src/main/java/javax/faces/validator/LengthValidator.java
index 190bbe6..537463b 100644
--- a/jsf-api/src/main/java/javax/faces/validator/LengthValidator.java
+++ b/jsf-api/src/main/java/javax/faces/validator/LengthValidator.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -43,9 +47,12 @@ import javax.faces.context.FacesContext;
 import javax.faces.convert.Converter;
 
 /**
- * <p><strong>LengthValidator</strong> is a {@link Validator} that checks
- * the number of characters in the String representation of the value of the
- * associated component.  The following algorithm is implemented:</p>
+ * <p><strong
+ * class="changed_modified_2_0_rev_a">LengthValidator</strong> is a
+ * {@link Validator} that checks the number of characters in the String
+ * representation of the value of the associated component.  The
+ * following algorithm is implemented:</p>
+
  * <ul>
  * <li>Convert the passed value to a String, if necessary, by calling its
  * <code>toString()</code> method.</li>
diff --git a/jsf-api/src/main/java/javax/faces/validator/LongRangeValidator.java b/jsf-api/src/main/java/javax/faces/validator/LongRangeValidator.java
index a055337..f6d63d4 100644
--- a/jsf-api/src/main/java/javax/faces/validator/LongRangeValidator.java
+++ b/jsf-api/src/main/java/javax/faces/validator/LongRangeValidator.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -44,9 +48,12 @@ import javax.faces.convert.Converter;
 
 
 /**
- * <p><strong>LongRangeValidator</strong> is a {@link Validator} that checks
- * the value of the corresponding component against specified minimum and
- * maximum values.  The following algorithm is implemented:</p>
+ * <p><strong
+ * class="changed_modified_2_0_rev_a">LongRangeValidator</strong> is a
+ * {@link Validator} that checks the value of the corresponding
+ * component against specified minimum and maximum values.  The
+ * following algorithm is implemented:</p>
+
  * <ul>
  * <li>If the passed value is <code>null</code>, exit immediately.</li>
  * <li>If the current component value is not a floating point type, or
diff --git a/jsf-api/src/main/java/javax/faces/validator/MethodExpressionValidator.java b/jsf-api/src/main/java/javax/faces/validator/MethodExpressionValidator.java
index de95e46..9530543 100644
--- a/jsf-api/src/main/java/javax/faces/validator/MethodExpressionValidator.java
+++ b/jsf-api/src/main/java/javax/faces/validator/MethodExpressionValidator.java
@@ -1,149 +1,199 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package javax.faces.validator;
-
-import javax.el.ELContext;
-import javax.el.ELException;
-import javax.el.MethodExpression;
-import javax.faces.application.FacesMessage;
-import javax.faces.component.StateHolder;
-import javax.faces.component.UIComponent;
-import javax.faces.context.FacesContext;
-
-/**
- * <p><strong>MethodExpressionValidator</strong> is a {@link Validator} that
- * wraps a {@link MethodExpression}, and it performs validation by executing
- * a method on an object identified by the {@link MethodExpression}.</p>
- */
-
-public class MethodExpressionValidator implements Validator, StateHolder {
-
-    // ------------------------------------------------------ Instance Variables
-
-    private MethodExpression methodExpression = null;
-
-    public MethodExpressionValidator() {
-
-        super();
-
-    }
-
-    /**
-     * <p>Construct a {@link Validator} that contains a {@link MethodExpression}.</p>
-     */
-    public MethodExpressionValidator(MethodExpression methodExpression) {
-
-        super();
-        this.methodExpression = methodExpression;
-
-    }
-
-    // ------------------------------------------------------- Validator Methods
-
-    /**
-     * @throws NullPointerException {@inheritDoc}
-     * @throws ValidatorException   {@inheritDoc}
-     */
-    public void validate(FacesContext context,
-                         UIComponent component,
-                         Object value) throws ValidatorException {
-
-        if ((context == null) || (component == null)) {
-            throw new NullPointerException();
-        }
-        if (value != null) {
-            try {
-                ELContext elContext = context.getELContext();
-                methodExpression.invoke(elContext, new Object[]{context, component, value});
-            } catch (ELException ee) {
-                Throwable e = ee.getCause();
-                if (e instanceof ValidatorException) {
-                    throw (ValidatorException) e;
-                }
-                String errInfo = ee.getMessage();
-                FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR,
-                                                        errInfo,
-                                                        errInfo);
-                throw new ValidatorException(message, ee.getCause());
-            }
-        }
-
-    }
-
-    // ----------------------------------------------------- StateHolder Methods
-
-
-    public Object saveState(FacesContext context) {
-        if (context == null) {
-            throw new NullPointerException();
-        }
-        Object values[] = new Object[1];
-        values[0] = methodExpression;
-        return (values);
-
-    }
-
-
-    public void restoreState(FacesContext context, Object state) {
-        if (context == null) {
-            throw new NullPointerException();
-        }
-        if (state == null) {
-            return;
-        }
-        Object values[] = (Object[]) state;
-        methodExpression = (MethodExpression) values[0];
-    }
-
-
-    private boolean transientValue = false;
-
-
-    public boolean isTransient() {
-
-        return (this.transientValue);
-
-    }
-
-
-    public void setTransient(boolean transientValue) {
-
-        this.transientValue = transientValue;
-
-    }
-
-}
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package javax.faces.validator;
+
+import java.util.Map;
+import javax.el.ELContext;
+import javax.el.ELException;
+import javax.el.MethodExpression;
+import javax.faces.component.StateHolder;
+import javax.faces.component.UIComponent;
+import javax.faces.context.ExternalContext;
+import javax.faces.context.FacesContext;
+
+/**
+ * <p><strong
+ * class="changed_modified_2_0_rev_a">MethodExpressionValidator</strong>
+ * is a {@link Validator} that wraps a {@link MethodExpression}, and it
+ * performs validation by executing a method on an object identified by
+ * the {@link MethodExpression}.</p>
+ */
+
+public class MethodExpressionValidator implements Validator, StateHolder {
+
+    private static final String BEANS_VALIDATION_AVAILABLE =
+            "javax.faces.private.BEANS_VALIDATION_AVAILABLE";
+    
+    private static final String VALIDATE_EMPTY_FIELDS_PARAM_NAME = 
+            "javax.faces.VALIDATE_EMPTY_FIELDS";
+    
+    // ------------------------------------------------------ Instance Variables
+
+    private MethodExpression methodExpression = null;
+
+    private Boolean validateEmptyFields;
+    
+    public MethodExpressionValidator() {
+
+        super();
+
+    }
+
+    /**
+     * <p>Construct a {@link Validator} that contains a {@link MethodExpression}.</p>
+     */
+    public MethodExpressionValidator(MethodExpression methodExpression) {
+
+        super();
+        this.methodExpression = methodExpression;
+
+    }
+
+    // ------------------------------------------------------- Validator Methods
+
+    /**
+     * @throws NullPointerException {@inheritDoc}
+     * @throws ValidatorException   {@inheritDoc}
+     */
+    public void validate(FacesContext context,
+                         UIComponent component,
+                         Object value) throws ValidatorException {
+
+        if ((context == null) || (component == null)) {
+            throw new NullPointerException();
+        }
+        if (validateEmptyFields(context) || value != null) {
+            try {
+                ELContext elContext = context.getELContext();
+                methodExpression.invoke(elContext, new Object[]{context, component, value});
+            } catch (ELException ee) {
+                Throwable e = ee.getCause();
+                if (e instanceof ValidatorException) {
+                    throw (ValidatorException) e;
+                } else {
+                    throw ee;
+                }
+            }
+        }
+    }
+
+    // ----------------------------------------------------- StateHolder Methods
+
+
+    public Object saveState(FacesContext context) {
+        if (context == null) {
+            throw new NullPointerException();
+        }
+        Object values[] = new Object[1];
+        values[0] = methodExpression;
+        return (values);
+
+    }
+
+
+    public void restoreState(FacesContext context, Object state) {
+        if (context == null) {
+            throw new NullPointerException();
+        }
+        if (state == null) {
+            return;
+        }
+        Object values[] = (Object[]) state;
+        methodExpression = (MethodExpression) values[0];
+    }
+
+
+    private boolean transientValue = false;
+
+
+    public boolean isTransient() {
+
+        return (this.transientValue);
+
+    }
+
+
+    public void setTransient(boolean transientValue) {
+
+        this.transientValue = transientValue;
+
+    }
+
+    private boolean validateEmptyFields(FacesContext ctx) {
+
+        if (validateEmptyFields == null) {
+            ExternalContext extCtx = ctx.getExternalContext();
+            String val = extCtx.getInitParameter(VALIDATE_EMPTY_FIELDS_PARAM_NAME);
+
+            if (null == val) {
+                val = (String) extCtx.getApplicationMap().get(VALIDATE_EMPTY_FIELDS_PARAM_NAME);
+            }
+            if (val == null || "auto".equals(val)) {
+                validateEmptyFields = isBeansValidationAvailable(ctx);
+            } else {
+                validateEmptyFields = Boolean.valueOf(val);
+            }
+        }
+
+        return validateEmptyFields;
+
+    }
+
+    private boolean isBeansValidationAvailable(FacesContext context) {
+        boolean result = false;
+
+        Map<String,Object> appMap = context.getExternalContext().getApplicationMap();
+        
+        if (appMap.containsKey(BEANS_VALIDATION_AVAILABLE)) {
+            result = (Boolean) appMap.get(BEANS_VALIDATION_AVAILABLE);
+        } else {
+            try {
+                new BeanValidator();
+                appMap.put(BEANS_VALIDATION_AVAILABLE, Boolean.TRUE);
+                result = true;
+            } catch (Throwable t) {
+                appMap.put(BEANS_VALIDATION_AVAILABLE, Boolean.FALSE);
+            }
+        }
+
+        return result;
+    }
+}
diff --git a/jsf-api/src/main/java/javax/faces/validator/RegexValidator.java b/jsf-api/src/main/java/javax/faces/validator/RegexValidator.java
index 0f03a7d..2d632ba 100644
--- a/jsf-api/src/main/java/javax/faces/validator/RegexValidator.java
+++ b/jsf-api/src/main/java/javax/faces/validator/RegexValidator.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -46,9 +50,11 @@ import java.util.regex.PatternSyntaxException;
 import javax.faces.component.PartialStateHolder;
 
 /**
- * <p class="changed_added_2_0">A Validator that checks against a
- * Regular Expression (which is the pattern property).  The pattern must
- * resolve to a String that follows the java.util.regex standards.</p>
+ * <p class="changed_added_2_0"><span
+ * class="changed_modified_2_0_rev_a">A Validator</span> that checks
+ * against a Regular Expression (which is the pattern property).  The
+ * pattern must resolve to a String that follows the java.util.regex
+ * standards.</p>
  * @since 2.0
  */
 public class RegexValidator implements Validator, PartialStateHolder {
diff --git a/jsf-api/src/main/java/javax/faces/validator/RequiredValidator.java b/jsf-api/src/main/java/javax/faces/validator/RequiredValidator.java
index 925e8fb..96cbec7 100644
--- a/jsf-api/src/main/java/javax/faces/validator/RequiredValidator.java
+++ b/jsf-api/src/main/java/javax/faces/validator/RequiredValidator.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -36,7 +40,6 @@
 
 package javax.faces.validator;
 
-import java.util.List;
 import javax.faces.context.FacesContext;
 import javax.faces.component.UIComponent;
 import javax.faces.application.FacesMessage;
@@ -91,4 +94,4 @@ public class RequiredValidator implements Validator {
         }
     }
 
-}
\ No newline at end of file
+}
diff --git a/jsf-api/src/main/java/javax/faces/validator/Validator.java b/jsf-api/src/main/java/javax/faces/validator/Validator.java
index 75ee285..3b85fdd 100644
--- a/jsf-api/src/main/java/javax/faces/validator/Validator.java
+++ b/jsf-api/src/main/java/javax/faces/validator/Validator.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -36,8 +40,6 @@
 
 package javax.faces.validator;
 
-
-import javax.faces.component.StateHolder;
 import javax.faces.component.UIComponent;
 import javax.faces.context.FacesContext;
 import java.util.EventListener;
@@ -67,7 +69,7 @@ import java.util.EventListener;
  * public constructor.  In addition, if the {@link Validator} class
  * wishes to have configuration property values saved and restored with
  * the view, the implementation must also implement {@link
- * StateHolder}.</p>
+ * javax.faces.component.StateHolder}.</p>
 
  * <p class="changed_added_2_0">If the class implementing
  * <code>Validator</code> has a {@link
diff --git a/jsf-api/src/main/java/javax/faces/validator/ValidatorException.java b/jsf-api/src/main/java/javax/faces/validator/ValidatorException.java
index 26ad911..60fb832 100644
--- a/jsf-api/src/main/java/javax/faces/validator/ValidatorException.java
+++ b/jsf-api/src/main/java/javax/faces/validator/ValidatorException.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-api/src/main/java/javax/faces/validator/ValueExpressionAnalyzer.java b/jsf-api/src/main/java/javax/faces/validator/ValueExpressionAnalyzer.java
index 34e8dda..307b588 100644
--- a/jsf-api/src/main/java/javax/faces/validator/ValueExpressionAnalyzer.java
+++ b/jsf-api/src/main/java/javax/faces/validator/ValueExpressionAnalyzer.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-api/src/main/java/javax/faces/validator/ValueReference.java b/jsf-api/src/main/java/javax/faces/validator/ValueReference.java
index 98b8f45..66d21c9 100644
--- a/jsf-api/src/main/java/javax/faces/validator/ValueReference.java
+++ b/jsf-api/src/main/java/javax/faces/validator/ValueReference.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -56,4 +60,4 @@ class ValueReference {
     public String getProperty() {
         return property;
     }
-}
\ No newline at end of file
+}
diff --git a/jsf-api/src/main/java/javax/faces/validator/package.html b/jsf-api/src/main/java/javax/faces/validator/package.html
index d80579e..9f5fa9e 100644
--- a/jsf-api/src/main/java/javax/faces/validator/package.html
+++ b/jsf-api/src/main/java/javax/faces/validator/package.html
@@ -1,9 +1,52 @@
 <html>
 <head>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
     <title>Package Description for "javax.faces.validator"</title>
 </head>
 <body bgcolor="white">
-<p><span class="changed_modified_2_0">Interface</span> defining the
-validator model, and concrete validator implementation classes.</p>
+<p><span class="changed_modified_2_0
+changed_modified_2_0_rev_a changed_modified_2_2">Interface</span> defining the validator
+model, and concrete validator implementation classes.</p>
 </body>
 </html>
diff --git a/jsf-api/src/main/java/javax/faces/view/ActionSource2AttachedObjectHandler.java b/jsf-api/src/main/java/javax/faces/view/ActionSource2AttachedObjectHandler.java
index 2906a86..c80e136 100644
--- a/jsf-api/src/main/java/javax/faces/view/ActionSource2AttachedObjectHandler.java
+++ b/jsf-api/src/main/java/javax/faces/view/ActionSource2AttachedObjectHandler.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-api/src/main/java/javax/faces/view/ActionSource2AttachedObjectTarget.java b/jsf-api/src/main/java/javax/faces/view/ActionSource2AttachedObjectTarget.java
index dd6fcbe..6146375 100644
--- a/jsf-api/src/main/java/javax/faces/view/ActionSource2AttachedObjectTarget.java
+++ b/jsf-api/src/main/java/javax/faces/view/ActionSource2AttachedObjectTarget.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-api/src/main/java/javax/faces/view/AttachedObjectHandler.java b/jsf-api/src/main/java/javax/faces/view/AttachedObjectHandler.java
index 78be372..f63399b 100644
--- a/jsf-api/src/main/java/javax/faces/view/AttachedObjectHandler.java
+++ b/jsf-api/src/main/java/javax/faces/view/AttachedObjectHandler.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -34,14 +38,14 @@
  * holder.
  */
 
-
 package javax.faces.view;
 
 import javax.faces.component.UIComponent;
 import javax.faces.context.FacesContext;
 
 /**
- * <p class="changed_added_2_0">The abstract base interface for a
+ * <p class="changed_added_2_0">The
+ * abstract base interface for a
  * handler representing an <em>attached object</em> in a VDL page.
  * Subinterfaces are provided for the common attached objects that
  * expose {@link javax.faces.component.behavior.Behavior}, {@link
@@ -54,7 +58,7 @@ import javax.faces.context.FacesContext;
  * @since 2.0
  */
 public interface AttachedObjectHandler {
-
+    
     /**
      * <p class="changed_added_2_0">Take the argument
      * <code>parent</code> and apply this attached object to it.  The
diff --git a/jsf-api/src/main/java/javax/faces/view/AttachedObjectTarget.java b/jsf-api/src/main/java/javax/faces/view/AttachedObjectTarget.java
index 8df2bb1..02e10c6 100644
--- a/jsf-api/src/main/java/javax/faces/view/AttachedObjectTarget.java
+++ b/jsf-api/src/main/java/javax/faces/view/AttachedObjectTarget.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -34,7 +38,6 @@
  * holder.
  */
 
-
 package javax.faces.view;
 
 import java.util.List;
diff --git a/jsf-api/src/main/java/javax/faces/view/BehaviorHolderAttachedObjectHandler.java b/jsf-api/src/main/java/javax/faces/view/BehaviorHolderAttachedObjectHandler.java
index fc925ec..5acb125 100644
--- a/jsf-api/src/main/java/javax/faces/view/BehaviorHolderAttachedObjectHandler.java
+++ b/jsf-api/src/main/java/javax/faces/view/BehaviorHolderAttachedObjectHandler.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -36,8 +40,6 @@
 
 package javax.faces.view;
 
-import javax.faces.view.AttachedObjectHandler;
-
 /**
  * <p class="changed_added_2_0">Represent an attached object that is a
  * <code>BehaviorHolder</code> in a VDL page.</p>
diff --git a/jsf-api/src/main/java/javax/faces/view/BehaviorHolderAttachedObjectTarget.java b/jsf-api/src/main/java/javax/faces/view/BehaviorHolderAttachedObjectTarget.java
index 08a0b4e..7f00a12 100644
--- a/jsf-api/src/main/java/javax/faces/view/BehaviorHolderAttachedObjectTarget.java
+++ b/jsf-api/src/main/java/javax/faces/view/BehaviorHolderAttachedObjectTarget.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-api/src/main/java/javax/faces/view/EditableValueHolderAttachedObjectHandler.java b/jsf-api/src/main/java/javax/faces/view/EditableValueHolderAttachedObjectHandler.java
index 33515dc..d8e1229 100644
--- a/jsf-api/src/main/java/javax/faces/view/EditableValueHolderAttachedObjectHandler.java
+++ b/jsf-api/src/main/java/javax/faces/view/EditableValueHolderAttachedObjectHandler.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -34,7 +38,6 @@
  * holder.
  */
 
-
 package javax.faces.view;
 
 /**
diff --git a/jsf-api/src/main/java/javax/faces/view/EditableValueHolderAttachedObjectTarget.java b/jsf-api/src/main/java/javax/faces/view/EditableValueHolderAttachedObjectTarget.java
index a9081a4..afe4a84 100644
--- a/jsf-api/src/main/java/javax/faces/view/EditableValueHolderAttachedObjectTarget.java
+++ b/jsf-api/src/main/java/javax/faces/view/EditableValueHolderAttachedObjectTarget.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -34,7 +38,6 @@
  * holder.
  */
 
-
 package javax.faces.view;
 
 /**
diff --git a/jsf-api/src/main/java/javax/faces/view/Location.java b/jsf-api/src/main/java/javax/faces/view/Location.java
index fa9a951..1a38c2c 100644
--- a/jsf-api/src/main/java/javax/faces/view/Location.java
+++ b/jsf-api/src/main/java/javax/faces/view/Location.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-api/src/main/java/javax/faces/view/StateManagementStrategy.java b/jsf-api/src/main/java/javax/faces/view/StateManagementStrategy.java
index 1315f1c..f9d135a 100644
--- a/jsf-api/src/main/java/javax/faces/view/StateManagementStrategy.java
+++ b/jsf-api/src/main/java/javax/faces/view/StateManagementStrategy.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -40,13 +44,21 @@ import javax.faces.component.UIViewRoot;
 import javax.faces.context.FacesContext;
 
 /**
- * <p class="changed_added_2_0">Encapsulate the saving and restoring of
- * the view to enable the VDL to take over the responsibility for
- * handling this feature. Because {@link
+ * <p class="changed_added_2_0"><span
+ * class="changed_modified_2_2">Encapsulate</span> the saving and
+ * restoring of the view to enable the VDL to take over the
+ * responsibility for handling this feature. Because {@link
  * ViewDeclarationLanguage#getStateManagementStrategy} is required to
  * return <code>null</code> for JSP views and non-<code>null</code> for
  * views authored in Facelets for JSF 2, this specification only applys
  * to Facelets for JSF 2.</p>
+ * 
+ * <p class="changed_added_2_2">Implementations must call
+ * {@link javax.faces.component.UIComponent#visitTree} on the 
+ * {@link javax.faces.component.UIViewRoot} to perform the saving and restoring
+ * of the view in the {@link #saveView} and {@link #restoreView} methods,
+ * respectively.
+ * </p>
  *
  * @since 2.0
  */
@@ -54,10 +66,17 @@ public abstract class StateManagementStrategy {
 
     
     /**
-     * <p class="changed_added_2_0">Return the state of the current view
-     * in an <code>Object</code> that implements
-     * <code>Serializable</code>.  The default implementation must
-     * perform the following algorithm or its semantic equivalent.</p>
+     * <p class="changed_added_2_0"><span
+     * class="changed_modified_2_2">Return</span> the state of the
+     * current view in an <code>Object</code> that implements
+     * <code>Serializable</code> <span class="changed_modified_2_2">and
+     * can be passed to
+     * <code>java.io.ObjectOutputStream.writeObject()</code> without
+     * causing a <code>java.io.NotSerializableException</code> to be
+     * thrown.</span> The default implementation must perform the
+     * following algorithm or its semantic equivalent, <span
+     * class="changed_modified_2_2">explicitly performing all the steps
+     * listed here.</span></p>
      *
      * <div class="changed_added_2_0">
 
@@ -101,22 +120,40 @@ public abstract class StateManagementStrategy {
     public abstract Object saveView(FacesContext context);
     
     /**
-     * <p class="changed_added_2_0">Restore the state of the view with
-     * information in the request.  The default implementation must
+     * <p class="changed_added_2_0"><span
+     * class="changed_modified_2_2">Restore</span> the state of the view
+     * with information in the request.  The default implementation must
      * perform the following algorithm or its semantic equivalent.</p>
      *
      * <div class="changed_added_2_0">
 
      * 	<ol>
 
-	  <li><p>Build the view from the markup.  For all components in
+	  <li>
+
+          <p class="changed_added_2_2">As in the case of restore view on
+          an initial request, the view metadata must be restored and
+          properly handled as well.  Obtain the {@link ViewMetadata} for
+          the current <code>viewId</code>, and from that call {@link
+          ViewMetadata#createMetadataView}.  Store the resultant {@link
+          UIViewRoot} in the {@link FacesContext}. Obtain the state of
+          the <code>UIViewRoot</code> from the state <code>Object</code>
+          returned from {@link
+          javax.faces.render.ResponseStateManager#getState} and pass
+          that to {@link UIViewRoot#restoreViewScopeState}.</p>
+
+
+          <p>Build the view from the markup.  For all components in
 	  the view that do not have an explicitly assigned id in the
 	  markup, the values of those ids must be the same as on an
 	  initial request for this view.  This view will not contain
 	  any components programmatically added during the previous
 	  lifecycle run, and it <b>will</b> contain components that were
 	  programmatically deleted on the previous lifecycle run.  Both
-	  of these cases must be handled.</p></li>
+	  of these cases must be handled.</p>
+
+
+          </li>
 
 	  <li><p>Call {@link
 	  javax.faces.render.ResponseStateManager#getState} to obtain
diff --git a/jsf-api/src/main/java/javax/faces/view/ValueHolderAttachedObjectHandler.java b/jsf-api/src/main/java/javax/faces/view/ValueHolderAttachedObjectHandler.java
index 86ce118..358ae9e 100644
--- a/jsf-api/src/main/java/javax/faces/view/ValueHolderAttachedObjectHandler.java
+++ b/jsf-api/src/main/java/javax/faces/view/ValueHolderAttachedObjectHandler.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -34,7 +38,6 @@
  * holder.
  */
 
-
 package javax.faces.view;
 
 /**
diff --git a/jsf-api/src/main/java/javax/faces/view/ValueHolderAttachedObjectTarget.java b/jsf-api/src/main/java/javax/faces/view/ValueHolderAttachedObjectTarget.java
index 7a34402..12287ab 100644
--- a/jsf-api/src/main/java/javax/faces/view/ValueHolderAttachedObjectTarget.java
+++ b/jsf-api/src/main/java/javax/faces/view/ValueHolderAttachedObjectTarget.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -34,7 +38,6 @@
  * holder.
  */
 
-
 package javax.faces.view;
 
 /**
diff --git a/jsf-api/src/main/java/javax/faces/view/ViewDeclarationLanguage.java b/jsf-api/src/main/java/javax/faces/view/ViewDeclarationLanguage.java
index 9524b4e..62425b9 100644
--- a/jsf-api/src/main/java/javax/faces/view/ViewDeclarationLanguage.java
+++ b/jsf-api/src/main/java/javax/faces/view/ViewDeclarationLanguage.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -39,13 +43,17 @@ package javax.faces.view;
 import java.beans.BeanInfo;
 import java.io.IOException;
 import java.util.List;
+import java.util.Map;
+import java.util.logging.Logger;
 import javax.faces.application.Resource;
+import javax.faces.application.ResourceHandler;
 import javax.faces.component.UIComponent;
 import javax.faces.component.UIViewRoot;
 import javax.faces.context.FacesContext;
 
 /**
- * <p class="changed_added_2_0">The contract that a view declaration
+ * <p class="changed_added_2_0"><span class="changed_modified_2_0_rev_a
+ * changed_modified_2_1 changed_modified_2_2">The</span> contract that a view declaration
  * language must implement to interact with the JSF runtime.  An
  * implementation of this class must be thread-safe.</p>
  *
@@ -62,10 +70,28 @@ import javax.faces.context.FacesContext;
 public abstract class ViewDeclarationLanguage {
 
     /**
+     * <p class="changed_added_2_0">Identifier for the JSP view declaration 
+     * language.</p>
+     *
+     * @since 2.1
+     */
+    public final static String JSP_VIEW_DECLARATION_LANGUAGE_ID =
+        "java.faces.JSP";
+
+    /**
+     * <p class="changed_added_2_0">Identifier for the Facelets view 
+     * declaration language.</p>
+     *
+     * @since 2.1
+     */
+    public final static String FACELETS_VIEW_DECLARATION_LANGUAGE_ID =
+        "java.faces.Facelets";
+
+    /**
      * <p class="changed_added_2_0">Return a reference to the component
      * metadata for the composite component represented by the argument
      * <code>componentResource</code>, or <code>null</code> if the
-     * metadata cannot be found.  See section JSF.7.6.2 for the
+     * metadata cannot be found.  See section JSF.7.7.2 for the
      * specification of the default implementation. JSP implementations
      * must throw <code>UnsupportedOperationException</code>.</p>
      *
@@ -89,7 +115,7 @@ public abstract class ViewDeclarationLanguage {
      * <p class="changed_added_2_0">Return a reference to the view
      * metadata for the view represented by the argument
      * <code>viewId</code>, or <code>null</code> if the metadata cannot
-     * be found.  See section JSF.7.6.2 for the specification of the
+     * be found.  See section JSF.7.7.2 for the specification of the
      * default implementation.  Facelets for JSF 2 implementation must
      * return non-<code>null</code>. JSP implementations must return
      * <code>null</code>.</p>
@@ -110,7 +136,7 @@ public abstract class ViewDeclarationLanguage {
     /**
      * <p class="changed_added_2_0">Take implementation specific action
      * to discover a <code>Resource</code> given the argument
-     * <code>componentResource</code>.  See section JSF.7.6.2 for the
+     * <code>componentResource</code>.  See section JSF.7.7.2 for the
      * specification of the default implementation.  JSP implementations
      * must throw <code>UnsupportedOperationException</code>.</p>
      *
@@ -131,10 +157,10 @@ public abstract class ViewDeclarationLanguage {
     
     
     /**
-     * <p class="changed_added_2_0">Create a <code>UIViewRoot</code>
-     * from the VDL contained in the artifact referenced by the argument
-     * <code>viewId</code>.  See section JSF.7.6.2 for the specification of
-     * the default implementation.</p>
+     * <p class="changed_added_2_0"><span class="changed_modified_2_2">Create</span>
+     * a <code>UIViewRoot</code> from the VDL contained in the artifact referenced by the argument
+     * <code>viewId</code>.  <span class="changed_modified_2_2">See section JSF.7.7.2 for the specification of
+     * the default implementation.</span></p>
      *
      * @param context the <code>FacesContext</code> for this request.
      * @param viewId the identifier of an artifact that contains the VDL
@@ -150,8 +176,42 @@ public abstract class ViewDeclarationLanguage {
                                  String viewId);
     
     /**
+     * <p class="changed_added_2_2">Create a component given a 
+     * {@link ViewDeclarationLanguage} specific
+     * tag library URI and tag name.  The runtime must support this method operating
+     * for the Facelets VDL.
+     * Other kinds of {@code ViewDeclarationLanguage} may be supported but are not
+     * required to be supported. For backward compatibility
+     * with decorated {@code ViewDeclrationLanguage} implementations that do
+     * not override this method, a default implementation is provided that returns
+     * {@code null}.  However, any implementation that is compliant with the
+     * version of the specification in which this method was introduced must
+     * implement this method.
+     * </p>
+     * 
+     * @param context the {@link FacesContext} for this request
+     * @param taglibURI the fully qualified tag library URI that contains the component
+     * @param tagName the name of the tag within that library that exposes the component
+     * @param attributes any name=value pairs that would otherwise have been 
+     * given on the markup that would cause the creation of this component or
+     * {@code null} if no attributes need be given.  
+     * 
+     * @throws NullPointerException if {@code context}, {@code taglibURI}, or 
+     * {@code tagName} are {@code null}
+     * 
+     * @since 2.2
+     */
+    
+    public UIComponent createComponent(FacesContext context, 
+            String taglibURI, String tagName, 
+            Map<String, Object> attributes) {
+        return null;
+    }
+    
+    
+    /**
      * <p class="changed_added_2_0">Restore a <code>UIViewRoot</code>
-     * from a previously created view.  See section JSF.7.6.2 for the
+     * from a previously created view.  See section JSF.7.7.2 for the
      * specification of the default implementation.</p>
      *
      * @param context the <code>FacesContext</code> for this request.
@@ -164,9 +224,10 @@ public abstract class ViewDeclarationLanguage {
 
 
     /**
-     * <p class="changed_added_2_0">Assuming the component metadata for
-     * argument <code>topLevelComponent</code> has been made available
-     * by an earlier call to {@link
+     * <p class="changed_added_2_0"><span
+     * class="changed_modified_2_0_rev_a">Assuming</span> the component
+     * metadata for argument <code>topLevelComponent</code> has been
+     * made available by an earlier call to {@link
      * ViewDeclarationLanguage#getComponentMetadata}, leverage the
      * component metadata for the purpose of re-targeting attached
      * objects from the top level composite component to the individual
@@ -231,14 +292,15 @@ public abstract class ViewDeclarationLanguage {
      *<li><p>If <em>curHandler</em> is an instance of {@link
      *EditableValueHolderAttachedObjectHandler} and <em>curTarget</em>
      *is an instance of {@link EditableValueHolderAttachedObjectTarget},
-     *and <em>curTarget.getName()</em> is equal to
-     *<em>curTargetName</em>, consider it a match.</p></li>
-     *
-     *<li><p>If <em>curHandler</em> is an instance of {@link
-     *ValueHolderAttachedObjectHandler} and <em>curTarget</em> is an
-     *instance of {@link ValueHolderAttachedObjectTarget}, and
+     *<span class="changed_modified_2_0_rev_a">and
      *<em>curTarget.getName()</em> is equal to <em>curTargetName</em>,
-     *consider it a match.</p></li>
+     *consider it a match.</span></p></li>
+     *
+     *<li class="changed_modified_2_0_rev_a"><p>If <em>curHandler</em>
+     *is an instance of {@link ValueHolderAttachedObjectHandler} and
+     *<em>curTarget</em> is an instance of {@link
+     *ValueHolderAttachedObjectTarget}, and <em>curTarget.getName()</em>
+     *is equal to <em>curTargetName</em>, consider it a match.</p></li>
 
      *<li><p>If <em>curHandler</em> is an instance of {@link
      *BehaviorHolderAttachedObjectHandler} and <em>curTarget</em> is an
@@ -263,9 +325,10 @@ public abstract class ViewDeclarationLanguage {
      *</li>
      *</ul>
 
-     * <p>The implementation must support retargeting attached objects
-     * from the top level compsite component to targets that are
-     * composite and non-composite components.</p>
+     * <p class="changed_modified_2_0_rev_a">The implementation must
+     * support retargeting attached objects from the top level compsite
+     * component to targets that are composite and non-composite
+     * components.</p>
      *
      * <p>An implementation is provided that will throw
      * <code>UnsupportedOperationException</code>.  A Faces implementation
@@ -426,12 +489,38 @@ public abstract class ViewDeclarationLanguage {
         // no-op
         
     }
+    
+    /**
+     * <p class="changed_added_2_2">Return the list of resource library
+     * contracts that will be made available for use in the view
+     * specified by the argument {@code viewId}.  If no match is found,
+     * return an empty list.  See section JSF.7.7.2 for the
+     * specification of the default implementation.  For backward
+     * compatibility with prior implementations, an implementation is
+     * provided that returns {@code null}, but any implementation
+     * compliant with the version of the specification in which this
+     * method was introduced must implement it as specified in
+     * JSF.7.7.2. </p>
+     * 
+     * @param context the {@code FacesContext} for this request
+     * @param viewId the view id for which the applicable resource library 
+     * contracts should be calculated.
+     * 
+     * @since 2.2
+     */
+    
+    public List<String> calculateResourceLibraryContracts(FacesContext context,
+            String viewId) {
+        return null;
+    }
+    
 
     /**
-     * <p class="changed_added_2_0">Take any actions specific to this
-     * VDL implementation to cause the argument <code>UIViewRoot</code>
-     * which must have been created via a call to {@link #createView},
-     * to be populated with children.</p>
+     * <p class="changed_added_2_0"><span
+     * class="changed_modified_1">Take</span> any actions specific to
+     * this VDL implementation to cause the argument
+     * <code>UIViewRoot</code> which must have been created via a call
+     * to {@link #createView}, to be populated with children.</p>
 
      * <div class="changed_added_2_0">
 
@@ -457,9 +546,14 @@ public abstract class ViewDeclarationLanguage {
      *
      * </ul>
 
-     * <p>The implementation must take no action if the argument
-     * <code>root</code> already has non-metadata children.  See section
-     * JSF.7.6.2.3 for the view metadata specification.</p>
+     * <p class="changed_modified_2_1">If the <code>root</code> is
+     * already populated with children, the view must still be re-built,
+     * but care must be taken to ensure that the existing components are
+     * correctly paired up with their VDL counterparts in the VDL page.
+     * Also, any system events that would normally be generated during
+     * the adding or removing of components from the view must be
+     * temporarily disabled during the creation of the view and then
+     * re-enabled when the view has been built.</p>
 
      * </div>
 
@@ -474,7 +568,7 @@ public abstract class ViewDeclarationLanguage {
     
     /**
      * <p class="changed_added_2_0">Render a view rooted at
-     * argument<code>view</code>. See section JSF.7.6.2 for the
+     * argument<code>view</code>. See section JSF.7.7.2 for the
      * specification of the default implementation.</p>
      *
      * @param context the <code>FacesContext</code> for this request.
@@ -503,6 +597,45 @@ public abstract class ViewDeclarationLanguage {
 
     public abstract StateManagementStrategy getStateManagementStrategy(FacesContext context,
             String viewId);
-    
 
+
+    /**
+     * <p class="changed_added_2_1"><span class="changed_modified_2_2">Tests</span>
+     * whether a physical resource
+     * corresponding to the specified viewId exists.</p>
+     *
+     * <p class="changed_modified_2_2">The default implementation uses 
+     * {@link javax.faces.application.ResourceHandler#createViewResource}
+     * to locate the physical resource.</p>
+     *
+     * @param context The <code>FacesContext</code> for this request.
+     * @param viewId the view id to test
+     *
+     * @since 2.1
+     */    
+    public boolean viewExists(FacesContext context, 
+                              String viewId) {
+        boolean result = false;
+        ResourceHandler rh = context.getApplication().getResourceHandler();
+        result = null != rh.createViewResource(context, viewId);
+
+        return result;
+    }
+
+    /**
+     * <p class="changed_added_2_1">Returns a non-null String that can be 
+     * used to identify this view declaration language.</p>
+     *
+     * <p>The default implementation returns the fully qualified class name
+     * of the view declaration language implementation.  Subclasses may
+     * override to provide a more meaningful id.</p>
+     *
+     * @since 2.1
+     */
+    public String getId() {
+        return getClass().getName();
+    }
+
+    private static final Logger LOGGER =
+          Logger.getLogger("javax.faces.view", "javax.faces.LogStrings");
 }
diff --git a/jsf-api/src/main/java/javax/faces/view/ViewDeclarationLanguageFactory.java b/jsf-api/src/main/java/javax/faces/view/ViewDeclarationLanguageFactory.java
index fca9fdc..12fe095 100644
--- a/jsf-api/src/main/java/javax/faces/view/ViewDeclarationLanguageFactory.java
+++ b/jsf-api/src/main/java/javax/faces/view/ViewDeclarationLanguageFactory.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -39,10 +43,11 @@ package javax.faces.view;
 import javax.faces.FacesWrapper;
 
 /**
- * <p class="changed_added_2_0"><strong>ViewDeclarationLanguageFactory</strong>
+ * <p class="changed_added_2_0"><strong
+ * class="changed_modified_2_1">ViewDeclarationLanguageFactory</strong>
  * is a factory object that creates (if needed) and returns a new {@link
- * ViewDeclarationLanguage} instance based on the VDL found in a specific
- * view.</p>
+ * ViewDeclarationLanguage} instance based on the VDL found in a
+ * specific view.</p>
  *
  * <div class="changed_added_2_0">
  * 
@@ -63,6 +68,9 @@ import javax.faces.FacesWrapper;
 
 public abstract class ViewDeclarationLanguageFactory implements FacesWrapper<ViewDeclarationLanguageFactory> {
 
+    public ViewDeclarationLanguageFactory() {
+    }
+
 
     /**
      * <p class="changed_added_2_0">If this factory has been decorated, the 
@@ -76,12 +84,14 @@ public abstract class ViewDeclarationLanguageFactory implements FacesWrapper<Vie
 
     
     /**
-     * <p class="changed_added_2_0">Return the
+     * <p class="changed_added_2_0"><span
+     * class="changed_modified_2_1">Return</span> the
      * <code>ViewDeclarationLanguage</code> instance suitable for
      * handling the VDL contained in the page referenced by the argument
      * <code>viewId</code>.  The default implementation must return a
      * valid <code>ViewDeclarationLanguage</code> instance for views
-     * written in either JSP or Facelets for JSF 2.</p>
+     * written in either JSP, Faces XML Views, or Facelets for JSF
+     * 2.</p>
      * 
      * @param viewId the viewId to be inspected for an appropriate 
      * <code>ViewDeclarationLanguage</code> implementation for the VDL used
diff --git a/jsf-api/src/main/java/javax/faces/view/ViewDeclarationLanguageWrapper.java b/jsf-api/src/main/java/javax/faces/view/ViewDeclarationLanguageWrapper.java
new file mode 100644
index 0000000..a8b8431
--- /dev/null
+++ b/jsf-api/src/main/java/javax/faces/view/ViewDeclarationLanguageWrapper.java
@@ -0,0 +1,158 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package javax.faces.view;
+
+
+import java.beans.BeanInfo;
+import java.io.IOException;
+import java.util.List;
+import java.util.Map;
+import javax.faces.FacesWrapper;
+import javax.faces.application.Resource;
+import javax.faces.component.UIComponent;
+import javax.faces.component.UIViewRoot;
+import javax.faces.context.FacesContext;
+
+/**
+ * <p class="changed_added_2_2">Provides a simple implementation of 
+ * {@link ViewDeclarationLanguage} that can
+ * be subclassed by developers wishing to provide specialized behavior
+ * to an existing {@link ViewDeclarationLanguage} instance.  The default
+ * implementation of all methods is to call through to the wrapped
+ * {@link ViewDeclarationLanguage} instance.</p>
+ *
+ * <p class="changed_added_2_2">Usage: extend this class and override 
+ * {@link #getWrapped} to
+ * return the instance being wrapping.</p>
+ *
+ * @since 2.2
+ */
+public abstract class ViewDeclarationLanguageWrapper extends ViewDeclarationLanguage implements FacesWrapper<ViewDeclarationLanguage> {
+
+
+    // ----------------------------------------------- Methods from FacesWrapper
+
+
+    /**
+     * @return the wrapped {@link ViewDeclarationLanguage} instance
+     * @see javax.faces.FacesWrapper#getWrapped()
+     */
+    @Override
+    public abstract ViewDeclarationLanguage getWrapped();
+
+    // ----------------------------------------------- Methods from ViewDeclarationLanguage
+
+
+    @Override
+    public String getId() {
+        return super.getId();
+    }
+
+    @Override
+    public void retargetAttachedObjects(FacesContext context, UIComponent topLevelComponent, List<AttachedObjectHandler> handlers) {
+        getWrapped().retargetAttachedObjects(context, topLevelComponent, handlers);
+    }
+
+    @Override
+    public void retargetMethodExpressions(FacesContext context, UIComponent topLevelComponent) {
+        getWrapped().retargetMethodExpressions(context, topLevelComponent);
+    }
+
+    @Override
+    public boolean viewExists(FacesContext context, String viewId) {
+        return getWrapped().viewExists(context, viewId);
+    }
+
+    @Override
+    public void buildView(FacesContext context, UIViewRoot root) throws IOException {
+        getWrapped().buildView(context, root);
+    }
+
+    @Override
+    public List<String> calculateResourceLibraryContracts(FacesContext context, String viewId) {
+        return getWrapped().calculateResourceLibraryContracts(context, viewId);
+    }
+
+    @Override
+    public UIViewRoot createView(FacesContext context, String viewId) {
+        return getWrapped().createView(context, viewId);
+    }
+
+    @Override
+    public UIComponent createComponent(FacesContext context, String taglibURI, String tagName, Map<String, Object> attributes) {
+        return getWrapped().createComponent(context, taglibURI, tagName, attributes);
+    }
+
+    @Override
+    public BeanInfo getComponentMetadata(FacesContext context, Resource componentResource) {
+        return getWrapped().getComponentMetadata(context, componentResource);
+    }
+
+    @Override
+    public Resource getScriptComponentResource(FacesContext context, Resource componentResource) {
+        return getWrapped().getScriptComponentResource(context, componentResource);
+    }
+
+    @Override
+    public StateManagementStrategy getStateManagementStrategy(FacesContext context, String viewId) {
+        return getWrapped().getStateManagementStrategy(context, viewId);
+    }
+
+    @Override
+    public ViewMetadata getViewMetadata(FacesContext context, String viewId) {
+        return getWrapped().getViewMetadata(context, viewId);
+    }
+
+    @Override
+    public void renderView(FacesContext context, UIViewRoot view) throws IOException {
+        getWrapped().renderView(context, view);
+    }
+
+    @Override
+    public UIViewRoot restoreView(FacesContext context, String viewId) {
+        return getWrapped().restoreView(context, viewId);
+    }
+
+
+
+
+    
+}
diff --git a/jsf-api/src/main/java/javax/faces/view/ViewMetadata.java b/jsf-api/src/main/java/javax/faces/view/ViewMetadata.java
index 9770d35..1ff9451 100644
--- a/jsf-api/src/main/java/javax/faces/view/ViewMetadata.java
+++ b/jsf-api/src/main/java/javax/faces/view/ViewMetadata.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -43,6 +47,7 @@ import java.util.List;
 import javax.faces.component.UIViewParameter;
 import javax.faces.component.UIViewRoot;
 import javax.faces.component.UIComponent;
+import javax.faces.component.UIViewAction;
 import javax.faces.context.FacesContext;
 
 /**
@@ -89,7 +94,7 @@ public abstract class ViewMetadata {
      * metadata from the provided {@link UIViewRoot}.  </p>
      *
      * @param root the {@link UIViewRoot} from which the metadata will
-     * be extracted from
+     * be extracted.
      *
      * @return a <code>Collection</code> of {@link UIViewParameter}
      * instances.  If the view has no metadata, the collection will be
@@ -117,6 +122,61 @@ public abstract class ViewMetadata {
         return params;
 
     }
+    
+    /**
+     * <p class="changed_added_2_2"> Utility method to extract view
+     * metadata from the provided {@link UIViewRoot}.  </p>
+     *
+     * @param root the {@link UIViewRoot} from which the metadata will
+     * be extracted.
+     *
+     * @return a <code>Collection</code> of {@link UIViewAction}
+     * instances.  If the view has no metadata, the collection will be
+     * empty.
+     */
+    public static Collection<UIViewAction> getViewActions(UIViewRoot root) {
+        Collection<UIViewAction> actions;
+        UIComponent metadataFacet = root.getFacet(UIViewRoot.METADATA_FACET_NAME);
+
+        if (metadataFacet == null) {
+            actions = Collections.emptyList();
+        } else {
+            actions = new ArrayList<UIViewAction>();
+            List<UIComponent> children = metadataFacet.getChildren();
+            int len = children.size();
+            for (int i = 0; i < len; i++) {
+                UIComponent c = children.get(i);
+                if (c instanceof UIViewAction) {
+                    actions.add((UIViewAction) c);
+                }
+            }
+        }
+        
+        return actions;
+    }
+    
+    /**
+     * <p class="changed_added_2_2">Utility method to determine if the 
+     * the provided {@link UIViewRoot} has metadata.  The default implementation will 
+     * return true if the provided {@code UIViewRoot} has a facet 
+     * named {@link UIViewRoot#METADATA_FACET_NAME} and that facet has children.
+     * It will return  false otherwise.</p>
+     *
+     * @param root the {@link UIViewRoot} from which the metadata will
+     * be extracted from
+     *
+     * @return true if the view has metadata, false otherwise.
+     */
+    public static boolean hasMetadata(UIViewRoot root) {
+        boolean result = false;
+        
+        UIComponent metadataFacet = root.getFacet(UIViewRoot.METADATA_FACET_NAME);
+        if (null != metadataFacet) {
+            result = 0 < metadataFacet.getChildCount();
+        }
+        
+        return result;
+    }
 
 
 }
diff --git a/jsf-api/src/main/java/javax/faces/view/ViewScoped.java b/jsf-api/src/main/java/javax/faces/view/ViewScoped.java
new file mode 100644
index 0000000..a0fea3b
--- /dev/null
+++ b/jsf-api/src/main/java/javax/faces/view/ViewScoped.java
@@ -0,0 +1,124 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package javax.faces.view;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Inherited;
+import javax.enterprise.context.NormalScope;
+
+/**
+ * <p class="changed_added_2_2">When this annotation, along with {@code
+ * javax.inject.Named} is found on a class, the runtime must place the
+ * bean in a CDI scope such that it remains active as long as {@link
+ * javax.faces.application.NavigationHandler#handleNavigation} does not
+ * cause a navigation to a view with a viewId that is different than the
+ * viewId of the current view. Any injections and notifications required
+ * by CDI and the Java EE platform must occur as usual at the expected
+ * time.</p>
+ * 
+ * <div class="changed_added_2_2">
+
+ * <p>If <code>ProjectStage</code> is not
+ * <code>ProjectStage.Production</code>, verify that the current {@link
+ * javax.faces.component.UIViewRoot} does not have its {@code transient}
+ * property set to {@code true}.  If so, add a <code>FacesMessage</code>
+ * for the current {@code viewId} to the <code>FacesContext</code>
+ * stating {@code @ViewScoped} beans cannot work if the view is marked
+ * as transient.    Also log a <code>Level.WARNING</code> message to the 
+ * log.  If <code>ProjectStage</code> <strong>is</strong>
+ * <code>ProjectStage.Production</code>, do not do this
+ * verification.</p>
+
+ * <p>The bean must be stored in the map returned from 
+ * {@link javax.faces.component.UIViewRoot#getViewMap(boolean)}.</p>
+
+ * <p>Use of this annotation requires that any beans stored in view scope
+ * must be serializable and proxyable as defined in the CDI specification.
+ * </p>
+
+ * <p>The runtime must ensure that any methods on the bean annotated
+ * with {@code PostConstruct} or {@code PreDestroy} are called when the
+ * scope begins and ends, respectively.  Two circumstances can cause the
+ * scope to end.</p>
+
+ * <ul>
+
+ * <li><p>{@link javax.faces.context.FacesContext#setViewRoot} is called
+ * with the new {@code UIViewRoot} being different than the current
+ * one.</p></li>
+
+ * <li><p>The session, that happened to be active when the bean was
+ * created, expires.  If no session existed when the bean was created,
+ * then this circumstance does not apply.</p></li>
+
+ * </ul>
+
+ * <p>In the session expiration case, the runtime must ensure that
+ * {@link javax.faces.context.FacesContext#getCurrentInstance} returns a
+ * valid instance if it is called during the processing of the
+ * {@code @PreDestroy} annotated method.  The set of methods on {@code
+ * FacesContext} that are valid to call in this circumstance is
+ * identical to those documented as "valid to call this method during
+ * application startup or shutdown". On the {@link
+ * javax.faces.context.ExternalContext} returned from that {@code
+ * FacesContext}, all of the methods documented as "valid to call this
+ * method during application startup or shutdown" are valid to call.  In
+ * addition, the method {@link
+ * javax.faces.context.ExternalContext#getSessionMap} is also valid to
+ * call.</p>
+
+ * 
+ * 
+ * </div>
+
+ * @since 2.2
+ */
+ at NormalScope
+ at Inherited
+ at Documented
+ at Target({ElementType.TYPE, ElementType.FIELD, ElementType.METHOD})
+ at Retention(value = RetentionPolicy.RUNTIME)
+public @interface ViewScoped {
+}
diff --git a/jsf-api/src/main/java/javax/faces/view/facelets/AttributeHandler.java b/jsf-api/src/main/java/javax/faces/view/facelets/AttributeHandler.java
index c3a3fc7..8f1b2b2 100644
--- a/jsf-api/src/main/java/javax/faces/view/facelets/AttributeHandler.java
+++ b/jsf-api/src/main/java/javax/faces/view/facelets/AttributeHandler.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -51,6 +55,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+
 package javax.faces.view.facelets;
 
 
diff --git a/jsf-api/src/main/java/javax/faces/view/facelets/BehaviorConfig.java b/jsf-api/src/main/java/javax/faces/view/facelets/BehaviorConfig.java
index 3ed4b69..8ca5db5 100644
--- a/jsf-api/src/main/java/javax/faces/view/facelets/BehaviorConfig.java
+++ b/jsf-api/src/main/java/javax/faces/view/facelets/BehaviorConfig.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -36,8 +40,6 @@
 
 package javax.faces.view.facelets;
 
-import javax.faces.view.facelets.TagConfig;
-
 /**
  * <p class="changed_added_2_0">Convey the id of a behavior declared in
  * a view.</p>
diff --git a/jsf-api/src/main/java/javax/faces/view/facelets/BehaviorHandler.java b/jsf-api/src/main/java/javax/faces/view/facelets/BehaviorHandler.java
index 0b949f8..ef42080 100644
--- a/jsf-api/src/main/java/javax/faces/view/facelets/BehaviorHandler.java
+++ b/jsf-api/src/main/java/javax/faces/view/facelets/BehaviorHandler.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-api/src/main/java/javax/faces/view/facelets/ComponentConfig.java b/jsf-api/src/main/java/javax/faces/view/facelets/ComponentConfig.java
index 158408e..fcd3133 100644
--- a/jsf-api/src/main/java/javax/faces/view/facelets/ComponentConfig.java
+++ b/jsf-api/src/main/java/javax/faces/view/facelets/ComponentConfig.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-api/src/main/java/javax/faces/view/facelets/ComponentHandler.java b/jsf-api/src/main/java/javax/faces/view/facelets/ComponentHandler.java
index 944bb40..71a0431 100644
--- a/jsf-api/src/main/java/javax/faces/view/facelets/ComponentHandler.java
+++ b/jsf-api/src/main/java/javax/faces/view/facelets/ComponentHandler.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -37,19 +41,31 @@
 package javax.faces.view.facelets;
 
 import javax.faces.component.UIComponent;
-import javax.faces.component.UIPanel;
 
 
 /**
- * <p class="changed_added_2_0">Public base class for markup element
- * instances that map to {@link UIComponent} instances in the view.</p>
+ * <p class="changed_added_2_0"><span
+ * class="changed_modified_2_2">Public</span> base class for markup
+ * element instances that map to {@link UIComponent} instances in the
+ * view.</p>
  *
  * <div class="changed_added_2_0">
  *
- * <p>The implementation must guarantee that the <code>apply()</code>
- * method is overridden and takes the following actions, in this order.
- * These actions must only happen the first time this facelet is applied
- * for each user.  Subsequent applications must take no action.</p>
+ * <p><span class="changed_modified_2_2">Instances of this class are
+ * created and passed to {@link
+ * TagHandlerDelegateFactory#createComponentHandlerDelegate} when a tag
+ * corresponding to this particular component is encountered in a
+ * Facelet view.  A custom tag handler for a component, converter,
+ * validator, or behavior must extend from this class.  In this way,
+ * this instance acts as a delegate for the implementation private tag
+ * handler.  Such a subclass may choose to override as many or as few
+ * methods from this base class as desired.  If the subclass wants to
+ * completely override the action of the implementation specific tag for
+ * which this component is the delegate, it must override the
+ * <code>apply()</code> method and make it take the following actions,
+ * in this order.</span> These actions must only happen the first time
+ * this facelet is applied for each user.  Subsequent applications must
+ * take no action.</p>
 
  * <ol>
 
@@ -61,7 +77,7 @@ import javax.faces.component.UIPanel;
 	  applied to the component instance, as specified in the VDLDocs
 	  for this element.  </p></li>
 
-	  <li><p>If project stage is #{@link javax.faces.application.ProjectStage#Development},
+	  <li><p>If project stage is {@link javax.faces.application.ProjectStage#Development},
       Put the {@link javax.faces.view.Location} for this
 	  element into the component attribute <code>Map</code> under
 	  the key given by the value of the symbolic constant {@link
@@ -102,7 +118,33 @@ import javax.faces.component.UIPanel;
 	  </p></li>
 
  * </ol>
- *
+
+ * <div class="changed_added_2_2">
+
+ * <p>A common use case for extending this class is to gain access to
+ * the process by which the Facelets runtime creates component instances
+ * corresponding to markup in a Facelets view. These three methods are
+ * useful in such  cases.<p>
+
+ * <ul>
+
+ * <li><p>To control the instantiation of the <code>UIComponent</code>
+ * instance, subclasses may override {@link #createComponent}.  If
+ * this method is not overridden, the tag handler for which this
+ * instance is the delegate will take the necessary action to
+ * instantiate the <code>UIComponent</code>.</p></li>
+
+ * <li><p>To be notified of creation of the
+ * <code>UIComponent</code>instance, subclasses may override {@link
+ * #onComponentCreated}.</p></li>
+
+ * <li><p>To be notified that the freshly created
+ * <code>UIComponent</code> instance has been populated with children as
+ * a result of execution of child tag handlers, subclasses may override
+ * {@link #onComponentPopulated}.</p></li>
+
+ * </div>
+
  * </div>
  *
  * @since 2.0
@@ -136,6 +178,21 @@ public class ComponentHandler extends DelegatingMetaTagHandler {
     public ComponentConfig getComponentConfig() {
         return this.componentConfig;
     }
+
+    /**
+     * <p class="changed_added_2_2">Subclasses that wish to take over
+     * the task of instantiating the <code>UIComponent</code> instance
+     * corresponding to this tag handler my override this method to do
+     * so.  A <code>null</code> return from this method will cause the
+     * <code>TagHandlerDelegate</code> for instance to create the
+     * component instead.</p>
+     *
+     * @since 2.2
+     */
+    
+    public UIComponent createComponent(FaceletContext ctx) {
+        return null;
+    }
     
     
     /**
diff --git a/jsf-api/src/main/java/javax/faces/view/facelets/CompositeFaceletHandler.java b/jsf-api/src/main/java/javax/faces/view/facelets/CompositeFaceletHandler.java
index 8f3545e..6fcc8fb 100644
--- a/jsf-api/src/main/java/javax/faces/view/facelets/CompositeFaceletHandler.java
+++ b/jsf-api/src/main/java/javax/faces/view/facelets/CompositeFaceletHandler.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -55,9 +59,6 @@
 package javax.faces.view.facelets;
 
 import java.io.IOException;
-
-import javax.el.ELException;
-import javax.faces.FacesException;
 import javax.faces.component.UIComponent;
 
 
diff --git a/jsf-api/src/main/java/javax/faces/view/facelets/ConverterConfig.java b/jsf-api/src/main/java/javax/faces/view/facelets/ConverterConfig.java
index 603ce20..669dc5a 100644
--- a/jsf-api/src/main/java/javax/faces/view/facelets/ConverterConfig.java
+++ b/jsf-api/src/main/java/javax/faces/view/facelets/ConverterConfig.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-api/src/main/java/javax/faces/view/facelets/ConverterHandler.java b/jsf-api/src/main/java/javax/faces/view/facelets/ConverterHandler.java
index d28bae5..b4ebc6b 100644
--- a/jsf-api/src/main/java/javax/faces/view/facelets/ConverterHandler.java
+++ b/jsf-api/src/main/java/javax/faces/view/facelets/ConverterHandler.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-api/src/main/java/javax/faces/view/facelets/DelegatingMetaTagHandler.java b/jsf-api/src/main/java/javax/faces/view/facelets/DelegatingMetaTagHandler.java
index ec1c3b2..1eefa18 100644
--- a/jsf-api/src/main/java/javax/faces/view/facelets/DelegatingMetaTagHandler.java
+++ b/jsf-api/src/main/java/javax/faces/view/facelets/DelegatingMetaTagHandler.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -43,12 +47,14 @@ import javax.faces.FactoryFinder;
 import javax.faces.component.UIComponent;
 
 /**
- * <p class="changed_added_2_0">Enable the JSF implementation to provide
- * the appropriate behavior for the kind of {@link MetaTagHandler}
- * subclass for each kind of element in the view, while providing a
- * base-class from which those wanting to make a Java language custom
- * tag handler can inherit.  The JSF runtime provides the implementation
- * of {@link #getTagHandlerDelegate} for the appropriate subclass.</p>
+ * <p class="changed_added_2_0"><span
+ * class="changed_modified_2_0_rev_a">Enable</span> the JSF
+ * implementation to provide the appropriate behavior for the kind of
+ * {@link MetaTagHandler} subclass for each kind of element in the view,
+ * while providing a base-class from which those wanting to make a Java
+ * language custom tag handler can inherit.  The JSF runtime provides
+ * the implementation of {@link #getTagHandlerDelegate} for the
+ * appropriate subclass.</p>
  */
 
 public abstract class DelegatingMetaTagHandler extends MetaTagHandler {
@@ -115,7 +121,7 @@ public abstract class DelegatingMetaTagHandler extends MetaTagHandler {
     }
     
     /**
-     * <p class="changed_added_2_0">Invoke the <code>apply()</code>
+     * <p class="changed_added_2_0_rev_a">Invoke the <code>apply()</code>
      * method on this instance's {@link TagHandler#nextHandler}.</p>
      *
      * @param ctx the <code>FaceletContext</code> for this view execution
diff --git a/jsf-api/src/main/java/javax/faces/view/facelets/Facelet.java b/jsf-api/src/main/java/javax/faces/view/facelets/Facelet.java
new file mode 100644
index 0000000..ec6d4a7
--- /dev/null
+++ b/jsf-api/src/main/java/javax/faces/view/facelets/Facelet.java
@@ -0,0 +1,94 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ *
+ *
+ * This file incorporates work covered by the following copyright and
+ * permission notice:
+ *
+ * Copyright 2005-2007 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package javax.faces.view.facelets;
+
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import java.io.IOException;
+
+/**
+ * <p><span class="changed_modified_2_2">The</span> parent or root object
+ * in a FaceletHandler composition. The Facelet will take care of
+ * populating the passed UIComponent parent in relation to the
+ * create/restore lifecycle of JSF.</p>
+ * 
+ * @author Jacob Hookom
+ */
+public abstract class Facelet {
+
+    /**
+     * <p><span class="changed_modified_2_2">The</span> passed
+     * UIComponent parent will be populated/restored in accordance with
+     * the <span class="changed_modified_2_2">Facelets chapter in the
+     * spec prose document.</span></p>
+     * 
+     * @param facesContext
+     *            The current FacesContext (Should be the same as
+     *            FacesContext.getInstance())
+     * @param parent
+     *            The UIComponent to populate in a compositional fashion. In
+     *            most cases a Facelet will be base a UIViewRoot.
+     * @throws IOException
+     * @throws FacesException
+     * @throws FaceletException
+     * @throws ELException
+     */
+    public abstract void apply(FacesContext facesContext, UIComponent parent)
+    throws IOException;
+}
diff --git a/jsf-api/src/main/java/javax/faces/view/facelets/FaceletCache.java b/jsf-api/src/main/java/javax/faces/view/facelets/FaceletCache.java
new file mode 100644
index 0000000..7bd86d0
--- /dev/null
+++ b/jsf-api/src/main/java/javax/faces/view/facelets/FaceletCache.java
@@ -0,0 +1,196 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package javax.faces.view.facelets;
+
+import java.io.IOException;
+import java.net.URL;
+
+
+
+/**
+ * <p class="changed_added_2_1">This API defines the facility by which
+ * the Facelets {@link javax.faces.view.ViewDeclarationLanguage}
+ * creates and caches instances of Facelets.</p>
+
+ * <p class="changed_added_2_1">The cache handles two different kinds of
+ * Facelets: View Facelets and View Metadata Facelets.  The former is
+ * the usual Facelet that provides for the construction of a
+ * <code>UIComponent</code> tree.  This kind of Facelet is accessed via
+ * the {@link #getFacelet} and {@link #isFaceletCached} methods. The
+ * latter is a special kind of Facelet that corresponds to {@link
+ * javax.faces.view.ViewDeclarationLanguage#getViewMetadata}.  This kind
+ * of Facelet is accessed via the {@link #getViewMetadataFacelet} and
+ * {@link #isViewMetadataFaceletCached} methods. </p>
+
+ * @since 2.1
+ */
+
+public abstract class FaceletCache<V> {
+
+    /**
+     * <p class="changed_added_2_1">Factory interface for creating
+     * Facelet or View Metadata Facelet instances.</p>
+     */
+    public interface MemberFactory<V> {
+
+	/**
+	 * <p class="changed_added_2_1">Create a Facelet or View
+	 * Metadata Facelet (depending on the type of factory this is)
+	 * for the argument URL.</p>
+
+	 * @param key the <code>URL</code> that will be used as the key
+	 * for the instance being created.
+	 *
+	 * @throws NullPointerException if argument <code>key</code> is
+	 * <code>null</code>.
+	 */
+        public V newInstance(final URL key) throws IOException;
+    }
+
+
+    /**
+     * <p class="changed_added_2_1">Returns a cached Facelet
+     * instance. If no instance is available, it will be created using
+     * the Facelet {@link MemberFactory} and stored in the cache.</p>
+
+     * @param url <code>URL</code> for the Facelet being retrieved
+     * 
+     * @throws NullPointerException if argument <code>url</code> is
+     * <code>null</code>.
+
+     */
+
+    public abstract V getFacelet(URL url) throws IOException;
+
+    /**
+
+     * <p class="changed_added_2_1">Determines whether a cached Facelet
+     * instance exists for this URL.  Returns true if a cached instance
+     * exists, false otherwise</p>
+
+     * @param url <code>URL</code> for the Facelet
+
+     * @throws NullPointerException if argument <code>url</code> is
+     * <code>null</code>.
+
+     */
+
+    public abstract boolean isFaceletCached(URL url);
+
+    /**
+     * <p class="changed_added_2_1">Returns a cached View Metadata
+     * Facelet instance. If no instance is available, it will be created
+     * using the View Metadata Facelet {@link MemberFactory} and stored
+     * in the cache.</p>
+
+     * @param url <code>URL</code> for the View Metadata Facelet being
+     * retrieved
+
+     * @throws NullPointerException if argument <code>url</code> is
+     * <code>null</code>.
+
+     */
+
+    public abstract V getViewMetadataFacelet(URL url) throws IOException;
+
+    /**
+     * <p class="changed_added_2_1">Determines whether a cached View
+     * Metadata Facelet instance exists for this URL.  Returns true if a
+     * cached instance exists, false otherwise</p>
+     * @param url <code>URL</code> for the View Metadata Facelet
+
+     * @throws NullPointerException if argument <code>url</code> is
+     * <code>null</code>.
+     */
+
+    public abstract boolean isViewMetadataFaceletCached(URL url);
+
+
+    /**
+     * <p class="changed_added_2_1">This must be called by the runtime
+     * at startup time, before any requests are serviced, and allows for
+     * the <code>FaceletCache</code> implementation to provide the
+     * {@link MemberFactory} instances that will be used to create
+     * instances of Facelets and View Metadata Facelets. </p>
+     *
+     * @param faceletFactory the {@link MemberFactory} instance that
+     * will be used to create instances of Facelets.
+
+     * @param viewMetadataFaceletFactory the {@link MemberFactory}
+     * instance that will be used to create instances of metadata
+     * Facelets.
+
+     * @throws NullPointerException if either argument is <code>null</code>
+
+     */
+    protected void setMemberFactories(MemberFactory<V> faceletFactory,
+            MemberFactory<V> viewMetadataFaceletFactory) {
+	if (null == faceletFactory || null == viewMetadataFaceletFactory) {
+	    throw new NullPointerException("Neither faceletFactory no viewMetadataFaceletFactory may be null.");
+	}
+
+        this.memberFactory = faceletFactory;
+        this.viewMetadataMemberFactory = viewMetadataFaceletFactory;
+    }
+
+    private MemberFactory<V> memberFactory;
+    private MemberFactory<V> viewMetadataMemberFactory;
+
+
+    /**
+     * <p class="changed_added_2_1">Returns the {@link MemberFactory}
+     * passed to {@link #setMemberFactories} for the purpose of creating
+     * Facelet instance.</p>
+     */
+    protected MemberFactory<V> getMemberFactory() {
+        return memberFactory;
+    }
+
+    /**
+     * <p class="changed_added_2_1">Returns the {@link MemberFactory}
+     * passed to {@link #setMemberFactories} for the purpose of creating
+     * View Metadata Facelet instance.</p>
+     */
+    protected MemberFactory<V> getMetadataMemberFactory() {
+        return viewMetadataMemberFactory;
+    }
+
+}
diff --git a/jsf-api/src/main/java/javax/faces/view/facelets/FaceletCacheFactory.java b/jsf-api/src/main/java/javax/faces/view/facelets/FaceletCacheFactory.java
new file mode 100644
index 0000000..ad85b98
--- /dev/null
+++ b/jsf-api/src/main/java/javax/faces/view/facelets/FaceletCacheFactory.java
@@ -0,0 +1,63 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package javax.faces.view.facelets;
+
+import javax.faces.FacesWrapper;
+
+/**
+ * <p class="changed_added_2_1">Allows customization of the
+ * implementation of {@link FaceletCache}.</p>
+
+ * @since 2.1
+ */
+public abstract class FaceletCacheFactory implements FacesWrapper<FaceletCacheFactory> {
+
+    public FaceletCacheFactory() {
+    }
+
+    public FaceletCacheFactory getWrapped() {
+        return null;
+    }
+
+    public abstract FaceletCache getFaceletCache();
+
+
+}
diff --git a/jsf-api/src/main/java/javax/faces/view/facelets/FaceletContext.java b/jsf-api/src/main/java/javax/faces/view/facelets/FaceletContext.java
index 2fc2197..8a71811 100644
--- a/jsf-api/src/main/java/javax/faces/view/facelets/FaceletContext.java
+++ b/jsf-api/src/main/java/javax/faces/view/facelets/FaceletContext.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -58,11 +62,9 @@ import java.io.IOException;
 import java.net.URL;
 
 import javax.el.ELContext;
-import javax.el.ELException;
 import javax.el.ExpressionFactory;
 import javax.el.FunctionMapper;
 import javax.el.VariableMapper;
-import javax.faces.FacesException;
 import javax.faces.component.UIComponent;
 import javax.faces.context.FacesContext;
 
@@ -78,7 +80,7 @@ public abstract class FaceletContext extends ELContext {
     // The key in the FacesContext attribute map
     // for the FaceletContext instance.
     public static final String FACELET_CONTEXT_KEY = 
-            "com.sun.faces.facelets.FACELET_CONTEXT";
+            "javax.faces.FACELET_CONTEXT";
 
     /**
      * <p class="changed_added_2_0">The current FacesContext bound to
diff --git a/jsf-api/src/main/java/javax/faces/view/facelets/FaceletException.java b/jsf-api/src/main/java/javax/faces/view/facelets/FaceletException.java
index 33d76b9..a1f7e13 100644
--- a/jsf-api/src/main/java/javax/faces/view/facelets/FaceletException.java
+++ b/jsf-api/src/main/java/javax/faces/view/facelets/FaceletException.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-api/src/main/java/javax/faces/view/facelets/FaceletHandler.java b/jsf-api/src/main/java/javax/faces/view/facelets/FaceletHandler.java
index 81639cc..1f42d6c 100644
--- a/jsf-api/src/main/java/javax/faces/view/facelets/FaceletHandler.java
+++ b/jsf-api/src/main/java/javax/faces/view/facelets/FaceletHandler.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -55,9 +59,6 @@
 package javax.faces.view.facelets;
 
 import java.io.IOException;
-
-import javax.el.ELException;
-import javax.faces.FacesException;
 import javax.faces.component.UIComponent;
 
 /**
diff --git a/jsf-api/src/main/java/javax/faces/view/facelets/FaceletsAttachedObjectHandler.java b/jsf-api/src/main/java/javax/faces/view/facelets/FaceletsAttachedObjectHandler.java
index 00109bc..33e969f 100644
--- a/jsf-api/src/main/java/javax/faces/view/facelets/FaceletsAttachedObjectHandler.java
+++ b/jsf-api/src/main/java/javax/faces/view/facelets/FaceletsAttachedObjectHandler.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-api/src/main/java/javax/faces/view/facelets/FaceletsResourceResolver.java b/jsf-api/src/main/java/javax/faces/view/facelets/FaceletsResourceResolver.java
new file mode 100644
index 0000000..884bc3a
--- /dev/null
+++ b/jsf-api/src/main/java/javax/faces/view/facelets/FaceletsResourceResolver.java
@@ -0,0 +1,60 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+ * Copyright (c) 2011 Oracle and/or its affiliates. All rights reserved.
+
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package javax.faces.view.facelets;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Inherited;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * <p class="changed_added_2_2">The presence of this annotation on a
+ * class automatically registers the class with the runtime as a {@link
+ * ResourceResolver}.</p>
+
+ */ 
+
+ at Retention(RetentionPolicy.RUNTIME)
+ at Target(ElementType.TYPE)
+ at Inherited
+public @interface FaceletsResourceResolver {
+    
+}
diff --git a/jsf-api/src/main/java/javax/faces/view/facelets/FacetHandler.java b/jsf-api/src/main/java/javax/faces/view/facelets/FacetHandler.java
index 3ec9d23..ae56d95 100644
--- a/jsf-api/src/main/java/javax/faces/view/facelets/FacetHandler.java
+++ b/jsf-api/src/main/java/javax/faces/view/facelets/FacetHandler.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -51,6 +55,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+
 package javax.faces.view.facelets;
 
 /**
diff --git a/jsf-api/src/main/java/javax/faces/view/facelets/MetaRule.java b/jsf-api/src/main/java/javax/faces/view/facelets/MetaRule.java
index 5038f72..4b60b9b 100644
--- a/jsf-api/src/main/java/javax/faces/view/facelets/MetaRule.java
+++ b/jsf-api/src/main/java/javax/faces/view/facelets/MetaRule.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-api/src/main/java/javax/faces/view/facelets/MetaRuleset.java b/jsf-api/src/main/java/javax/faces/view/facelets/MetaRuleset.java
index 1363b10..8536ed6 100644
--- a/jsf-api/src/main/java/javax/faces/view/facelets/MetaRuleset.java
+++ b/jsf-api/src/main/java/javax/faces/view/facelets/MetaRuleset.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-api/src/main/java/javax/faces/view/facelets/MetaTagHandler.java b/jsf-api/src/main/java/javax/faces/view/facelets/MetaTagHandler.java
index d460fc7..2891e5f 100644
--- a/jsf-api/src/main/java/javax/faces/view/facelets/MetaTagHandler.java
+++ b/jsf-api/src/main/java/javax/faces/view/facelets/MetaTagHandler.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-api/src/main/java/javax/faces/view/facelets/Metadata.java b/jsf-api/src/main/java/javax/faces/view/facelets/Metadata.java
index 155687f..2b3f296 100644
--- a/jsf-api/src/main/java/javax/faces/view/facelets/Metadata.java
+++ b/jsf-api/src/main/java/javax/faces/view/facelets/Metadata.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-api/src/main/java/javax/faces/view/facelets/MetadataTarget.java b/jsf-api/src/main/java/javax/faces/view/facelets/MetadataTarget.java
index 1b6ce48..438cee1 100644
--- a/jsf-api/src/main/java/javax/faces/view/facelets/MetadataTarget.java
+++ b/jsf-api/src/main/java/javax/faces/view/facelets/MetadataTarget.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-api/src/main/java/javax/faces/view/facelets/ResourceResolver.java b/jsf-api/src/main/java/javax/faces/view/facelets/ResourceResolver.java
index 4bfcde1..21b5788 100644
--- a/jsf-api/src/main/java/javax/faces/view/facelets/ResourceResolver.java
+++ b/jsf-api/src/main/java/javax/faces/view/facelets/ResourceResolver.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -57,7 +61,10 @@ package javax.faces.view.facelets;
 import java.net.URL;
 
 /**
- * <p class="changed_added_2_0">Provide a hook to decorate or override
+ * <p class="changed_added_2_0"><span class="changed_deleted_2_2">Deprecated as 
+ * of JSF 2.2.  The same functionality is more correctly provided by
+ * {@link javax.faces.application.ResourceHandler}.</span> Provide
+ * a hook to decorate or override
  * the way that Facelets loads template files.  A default implementation
  * must be provided that satisfies the requirements for loading
  * templates as in Pre-JSF 2.0 Facelets.</p>
@@ -83,6 +90,7 @@ import java.net.URL;
 
  */
 
+ at Deprecated
 public abstract class ResourceResolver {
 
     public static final String FACELETS_RESOURCE_RESOLVER_PARAM_NAME = 
diff --git a/jsf-api/src/main/java/javax/faces/view/facelets/Tag.java b/jsf-api/src/main/java/javax/faces/view/facelets/Tag.java
index 75dc6f5..558f2c5 100644
--- a/jsf-api/src/main/java/javax/faces/view/facelets/Tag.java
+++ b/jsf-api/src/main/java/javax/faces/view/facelets/Tag.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-api/src/main/java/javax/faces/view/facelets/TagAttribute.java b/jsf-api/src/main/java/javax/faces/view/facelets/TagAttribute.java
index 6839be7..f0f6e90 100644
--- a/jsf-api/src/main/java/javax/faces/view/facelets/TagAttribute.java
+++ b/jsf-api/src/main/java/javax/faces/view/facelets/TagAttribute.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -60,8 +64,8 @@ import javax.el.MethodExpression;
 import javax.el.ValueExpression;
 
 /**
- * <p class="changed_added_2_0">Representation of an XML attribute
- * name=value pair on an XML element in a Facelet file.</p>
+ * <p class="changed_added_2_0"><span class="changed_modified_2_2">Representation</span>
+ * of an XML attribute name=value pair on an XML element in a Facelet file.</p>
  * 
  * @since 2.0
  */
@@ -206,6 +210,33 @@ public abstract class TagAttribute {
      * @return true if this attribute is literal
      */
     public abstract boolean isLiteral();
+    
+    /**
+     * <p class="changed_added_2_2">A reference to the Tag for which this class
+     * represents the attributes.  For compatibility with previous implementations,
+     * an implementation is provided that returns {@code null}.</p>
+     * 
+     * @since 2.2
+     * 
+     * @return the {@link Tag} for which this class represents the attributes.
+     */
+    
+    public Tag getTag() {
+        return null;
+    }
 
-
+    /**
+     * <p class="changed_added_2_2">Set a reference to the Tag for which
+     * this class represents the attributes.  The VDL runtime must
+     * ensure that this method is called before any {@link
+     * FaceletHandler}s for this element are instantiated. For
+     * compatibility with previous implementations, a no-op
+     * implementation is provided.</p>
+     * 
+     * @since 2.2
+     * 
+     */
+    public void setTag(Tag tag) {
+        
+    }
 }
diff --git a/jsf-api/src/main/java/javax/faces/view/facelets/TagAttributeException.java b/jsf-api/src/main/java/javax/faces/view/facelets/TagAttributeException.java
index 65fda61..ba102d5 100644
--- a/jsf-api/src/main/java/javax/faces/view/facelets/TagAttributeException.java
+++ b/jsf-api/src/main/java/javax/faces/view/facelets/TagAttributeException.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-api/src/main/java/javax/faces/view/facelets/TagAttributes.java b/jsf-api/src/main/java/javax/faces/view/facelets/TagAttributes.java
index 6a1a5ba..f88dfe8 100644
--- a/jsf-api/src/main/java/javax/faces/view/facelets/TagAttributes.java
+++ b/jsf-api/src/main/java/javax/faces/view/facelets/TagAttributes.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -55,8 +59,8 @@
 package javax.faces.view.facelets;
 
 /**
- * <p class="changed_added_2_0">A set of TagAttributes, usually
- * representing all attributes on a Tag.</p>
+ * <p class="changed_added_2_0"><span class="changed_modified_2_2">A</span> set of 
+ * TagAttributes, usually representing all attributes on a Tag.</p>
  *
  * @since 2.0
  */
@@ -105,5 +109,34 @@ public abstract class TagAttributes {
      * @return a list of Namespaces found in this set
      */
     public abstract String[] getNamespaces();
+    
+    /**
+     * <p class="changed_added_2_2">A reference to the Tag for which this class
+     * represents the attributes.  For compatibility with previous implementations,
+     * an implementation is provided that returns {@code null}.</p>
+     * 
+     * @since 2.2
+     * 
+     * @return the {@link Tag} for which this class represents the attributes.
+     */
+    
+    public Tag getTag() {
+        return null;
+    }
+    
+    /**
+     * <p class="changed_added_2_2">Set a reference to the Tag for which
+     * this class represents the attributes.  The VDL runtime must
+     * ensure that this method is called before any {@link
+     * FaceletHandler}s for this element are instantiated. For
+     * compatibility with previous implementations, a no-op
+     * implementation is provided.</p>
+     * 
+     * @since 2.2
+     * 
+     */
+    public void setTag(Tag tag) {
+        
+    }
 
 }
diff --git a/jsf-api/src/main/java/javax/faces/view/facelets/TagConfig.java b/jsf-api/src/main/java/javax/faces/view/facelets/TagConfig.java
index 7ca6fcd..197982f 100644
--- a/jsf-api/src/main/java/javax/faces/view/facelets/TagConfig.java
+++ b/jsf-api/src/main/java/javax/faces/view/facelets/TagConfig.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-api/src/main/java/javax/faces/view/facelets/TagDecorator.java b/jsf-api/src/main/java/javax/faces/view/facelets/TagDecorator.java
index 7cb1703..c82acea 100644
--- a/jsf-api/src/main/java/javax/faces/view/facelets/TagDecorator.java
+++ b/jsf-api/src/main/java/javax/faces/view/facelets/TagDecorator.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -55,11 +59,495 @@
 package javax.faces.view.facelets;
 
 /**
- * Provides the ability to completely change the Tag before it's processed for
- * compiling with the associated TagHandler.
- * <p />
- * You could take <input type="text" /> and convert it to <h:inputText />
- * before compiling.
+ * <p><span class="changed_modified_2_2">Provides</span> the ability to completely 
+ * change the Tag before it's processed for compiling with the associated 
+ * {@link TagHandler}.</p>
+ * 
+ * <div class="changed_added_2_2">
+ * 
+ * <p>The runtime must provide a default implementation of this interface that
+ * performs the following actions in its {@link #decorate} method.</p>
+ * 
+ * <ul>
+ * 
+ * <li><p>Inspect the attributes of the {@code tag} argument.  If none
+ * of the attributes are declared to be in the {@code
+ * http://xmlns.jcp.org/jsf} namespace, iterate through the list of
+ * {@code TagDecorator} instances created from the values in the {@link
+ * javax.faces.application.ViewHandler#FACELETS_DECORATORS_PARAM_NAME}
+ * {@code context-param}, if any.  For each entry, call its {@link
+ * #decorate} method, passing the argument {@code tag}.  The first such
+ * entry that returns non-{@code null} from its {@link #decorate} method
+ * must cause the iteration to stop.</p></li>
+
+ * <li><p>If one or more of the attributes of the {@code tag} argument
+ * are in the {@code http://xmlns.jcp.org/jsf} namespace, obtain a
+ * reference to <strong>decoratedTag</strong> as described in the
+ * following steps and iterate through the list of {@link TagDecorator}
+ * instances as described in the preceding step, but pass
+ * <strong>decoratedTag</strong> to each call to {@link #decorate}.</p>
+
+ * <ul>
+
+ * <li><p>If the namespace of the tag is any namespace other than the
+ * empty string or {@code http://www.w3.org/1999/xhtml}, throw a {@link
+ * FaceletException}.</p></li>
+
+ * <li><p>Let <strong>localName</strong> be the return from {@link
+ * Tag#getLocalName}.  Use <strong>localName</strong> to identify an
+ * entry in a data structure based on the following table.  Once an
+ * entry has been identified, let <strong>targetTag</strong> be the
+ * value of the "target tag" column for that entry.</p>
+
+ * <table border="1">
+
+ * <tr>
+
+ * <th>localName</th>
+
+ * <th>selector attribute</th>
+
+ * <th>target tag</th>
+
+ * </tr>
+
+ * <tr>
+
+ * <td>a</td>
+
+ * <td>jsf:action</td>
+
+ * <td>h:commandLink</td>
+
+ * </tr>
+
+ * <tr>
+
+ * <td>a</td>
+
+ * <td>jsf:actionListener</td>
+
+ * <td>h:commandLink</td>
+
+ * </tr>
+
+ * <tr>
+
+ * <td>a</td>
+
+ * <td>jsf:value</td>
+
+ * <td>h:outputLink</td>
+
+ * </tr>
+
+ * <tr>
+
+ * <td>a</td>
+
+ * <td>jsf:outcome</td>
+
+ * <td>h:link</td>
+
+ * </tr>
+
+ * <tr>
+
+ * <td>body</td>
+
+ * <td></td>
+
+ * <td>h:body</td>
+
+ * </tr>
+
+ * <tr>
+
+ * <td>button</td>
+
+ * <td></td>
+
+ * <td>h:commandButton</td>
+
+ * </tr>
+
+ * <tr>
+
+ * <td>button</td>
+
+ * <td>jsf:outcome</td>
+
+ * <td>h:button</td>
+
+ * </tr>
+
+ * <tr>
+
+ * <td>form</td>
+
+ * <td></td>
+
+ * <td>h:form</td>
+
+ * </tr>
+
+ * <tr>
+
+ * <td>head</td>
+
+ * <td></td>
+
+ * <td>h:head</td>
+
+ * </tr>
+
+ * <tr>
+
+ * <td>img</td>
+
+ * <td></td>
+
+ * <td>h:graphicImage</td>
+
+ * </tr>
+
+ * <tr>
+
+ * <td>input</td>
+
+ * <td>type="button"</td>
+
+ * <td>h:commandButton</td>
+
+ * </tr>
+
+ * <tr>
+
+ * <td>input</td>
+
+ * <td>type="checkbox"</td>
+
+ * <td>h:selectBooleanCheckbox</td>
+
+ * </tr>
+
+ * <tr>
+
+ * <td>input</td>
+
+ * <td>type="color"</td>
+
+ * <td rowspan="12">h:inputText</td>
+
+ * </tr>
+
+ * <tr>
+
+ * <td>input</td>
+
+ * <td>type="date"</td>
+
+ * </tr>
+
+ * <tr>
+
+ * <td>input</td>
+
+ * <td>type="datetime"</td>
+
+ * </tr>
+
+ * <tr>
+
+ * <td>input</td>
+
+ * <td>type="datetime-local"</td>
+
+ * </tr>
+
+ * <tr>
+
+ * <td>input</td>
+
+ * <td>type="email"</td>
+
+ * </tr>
+
+ * <tr>
+
+ * <td>input</td>
+
+ * <td>type="month"</td>
+
+ * </tr>
+
+ * <tr>
+
+ * <td>input</td>
+
+ * <td>type="number"</td>
+
+ * </tr>
+
+ * <tr>
+
+ * <td>input</td>
+
+ * <td>type="range"</td>
+
+ * </tr>
+
+ * <tr>
+
+ * <td>input</td>
+
+ * <td>type="search"</td>
+
+ * </tr>
+
+ * <tr>
+
+ * <td>input</td>
+
+ * <td>type="time"</td>
+
+ * </tr>
+
+ * <tr>
+
+ * <td>input</td>
+
+ * <td>type="url"</td>
+
+ * </tr>
+
+ * <tr>
+
+ * <td>input</td>
+
+ * <td>type="week"</td>
+
+ * </tr>
+
+ * <tr>
+
+ * <td>input</td>
+
+ * <td>type="file"</td>
+
+ * <td>h:inputFile</td>
+
+ * </tr>
+
+ * <tr>
+
+ * <td>input</td>
+
+ * <td>type="hidden"</td>
+
+ * <td>h:inputHidden</td>
+
+ * </tr>
+
+ * <tr>
+
+ * <td>input</td>
+
+ * <td>type="password"</td>
+
+ * <td>h:inputSecret</td>
+
+ * </tr>
+
+ * <tr>
+
+ * <td>input</td>
+
+ * <td>type="reset"</td>
+
+ * <td>h:commandButton</td>
+
+ * </tr>
+
+ * <tr>
+
+ * <td>input</td>
+
+ * <td>type="submit"</td>
+
+ * <td>h:commandButton</td>
+
+ * </tr>
+
+ * <tr>
+
+ * <td>input</td>
+
+ * <td>type="*"</td>
+
+ * <td>h:inputText</td>
+
+ * </tr>
+ * <tr>
+
+ * <td>label</td>
+
+ * <td></td>
+
+ * <td>h:outputLabel</td>
+
+ * </tr>
+
+ * <tr>
+
+ * <td>link</td>
+
+ * <td></td>
+
+ * <td>h:outputStylesheet</td>
+
+ * </tr>
+
+ * <tr>
+
+ * <td>script</td>
+
+ * <td></td>
+
+ * <td>h:outputScript</td>
+
+ * </tr>
+
+ * <tr>
+
+ * <td>select</td>
+
+ * <td>multiple="*"</td>
+
+ * <td>h:selectManyListbox</td>
+
+ * </tr>
+
+ * <tr>
+
+ * <td>select</td>
+
+ * <td></td>
+
+ * <td>h:selectOneListbox</td>
+
+ * </tr>
+
+ * <tr>
+
+ * <td>textarea</td>
+
+ * <td></td>
+
+ * <td>h:inputTextArea</td>
+
+ * </tr>
+
+ * </table>
+
+ * <p>In the case where there are multiple rows with the same
+ * <strong>localName</strong>, find a matching entry by using the
+ * argument {@code tag}'s attributes and the value from the "selector
+ * attribute" column in the table in the given order. A selector
+ * attribute value of <strong>*</strong> indicates any value. In the
+ * table, a selector attribute name prefixed with <strong>jsf:</strong>
+ * means the tag is treated as if it were in the {@code
+ * http://xmlns.jcp.org/jsf} namespace.  In actual Facelet pages, the
+ * namespace is what matters, not the prefix.</p>
+
+
+ * <p>If no matching entry is found, let
+ * {@code jsf:element} be the value of <strong>targetTag</strong></p>
+
+ * </li>
+
+ * <li><p>Convert all the attributes of the argument {@code tag} as
+ * follows.  First, create a new instance of {@link TagAttribute} with
+ * the following characteristics: location: from the argument {@code
+ * tag}'s location, namespace: {@code
+ * http://xmlns.jcp.org/jsf/passthrough}, local name: value of {@link
+ * javax.faces.render.Renderer#PASSTHROUGH_RENDERER_LOCALNAME_KEY},
+ * qualified name: same as local name with the "p:" prefix, value: from
+ * the argument {@code tag}'s local name.  Let this {@code TagAttribute}
+ * be <strong>elementNameTagAttribute</strong>.</p>
+
+ * <p>For each of argument {@code tag}'s attributes obtain a reference
+ * to a {@link TagAttribute} with the following characteristics.  For
+ * discussion let such an attribute be
+ * <strong>convertedTagAttribute</strong>.</p>
+ 
+ * <ul>
+
+ * <li><p><strong>convertedTagAttribute</strong>'s location: from the
+ * argument {@code tag}'s location.</p></li>
+
+ * <li><p>If the current attribute's namespace is {@code
+ * http://xmlns.jcp.org/jsf}, <strong>convertedTagAttribute</strong>'s
+ * qualified name must be the current attribute's local name and
+ * <strong>convertedTagAttribute</strong>'s namespace must be the empty
+ * string.  This will have the effect of setting the current attribute
+ * as a proper property on the {@code UIComponent} instance represented
+ * by this markup.</li>
+
+ * <li><p>If the current attribute's namespace is empty or different
+ * from the argument {@code tag}'s namespace, let the current attribute
+ * be <strong>convertedTagAttribute</strong>.  This will have the effect
+ * of setting the current attribute as an attribute on the attributes
+ * map of the {@code UIComponent} instance represented by this
+ * markup.</p></li>
+
+ * <li><p>Otherwise, assume the current attribute's namespace is {@code
+ * http://xmlns.jcp.org/jsf/passthrough}.
+ * <strong>ConvertedTagAttribute</strong>'s qualified name is the
+ * current attribute's local name prefixed by "p:".
+ * <strong>convertedTagAttribute</strong>'s namespace must be {@code
+ * http://xmlns.jcp.org/jsf/passthrough}.</p></li>
+
+ * </ul>
+
+ * <p>Create a {@link TagAttributes} instance containing
+ * <strong>elementNameTagAttribute</strong> and all the
+ * <strong>convertedTagAttribute</strong>s.  </p>
+
+ * </li>
+
+ * <li><p>Create a new {@link Tag} instance with the following
+ * characteristics.</p>
+
+ * <p>location: from the argument {@code tag}'s location.</p>
+
+ * <p>namespace: if <strong>targetTag</strong>'s prefix is "h", {@code
+ * http://xmlns.jcp.org/jsf/html}; if <strong>targetTag</strong>'s
+ * prefix is "jsf", {@code http://xmlns.jcp.org/jsf}.</p>
+
+ * <p>local name: the local name from the target tag column.</p>
+
+ * <p>attributes: the {@link TagAttributes} from the preceding step.
+
+ * <p>Let this new {@link Tag} instance be
+ * <strong>convertedTag</strong>.
+
+ * </li>
+
+ * </ul>
+
+ * </li>
+
+ * </ul>
+
+ * <p>The {@link Tag} instance returned from this decoration process
+ * must ultimately be passed to a {@link FaceletHandler} instance as
+ * described in the spec prose document section titled, "Specification
+ * of the ViewDeclarationLanguage Implementation for Facelets for JSF
+ * 2.0". </p>
+ * 
+ * </div>
+ * 
  */
 public interface TagDecorator {
 
diff --git a/jsf-api/src/main/java/javax/faces/view/facelets/TagException.java b/jsf-api/src/main/java/javax/faces/view/facelets/TagException.java
index 7c36aa3..59b6226 100644
--- a/jsf-api/src/main/java/javax/faces/view/facelets/TagException.java
+++ b/jsf-api/src/main/java/javax/faces/view/facelets/TagException.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-api/src/main/java/javax/faces/view/facelets/TagHandler.java b/jsf-api/src/main/java/javax/faces/view/facelets/TagHandler.java
index 3202aaf..2b95e1f 100644
--- a/jsf-api/src/main/java/javax/faces/view/facelets/TagHandler.java
+++ b/jsf-api/src/main/java/javax/faces/view/facelets/TagHandler.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -56,7 +60,8 @@ package javax.faces.view.facelets;
 
 
 /**
- * <p class="changed_added_2_0">Foundation class for
+ * <p class="changed_added_2_0"><span
+ * class="changed_modified_2_0_rev_a">Foundation</span> class for
  * <code>FaceletHandler</code>s associated with a markup element in a
  * Facelet document.  This class introduces the concept of <a
  * href="TagAttribute.html">XML attributes</a> to Facelets.  See the <a
@@ -69,13 +74,13 @@ package javax.faces.view.facelets;
 public abstract class TagHandler implements FaceletHandler {
 
     /**
-     * <p class="changed_added_2_0">See {@link TagConfig#getTagId}.</p>
+     * <p class="changed_added_2_0_rev_a">See {@link TagConfig#getTagId}.</p>
      */
 
     protected final String tagId;
 
     /**
-     * <p class="changed_added_2_0">A reference to the <code>Tag</code>
+     * <p class="changed_added_2_0_rev_a">A reference to the <code>Tag</code>
      * instance corresponding to this <code>TagHandler</code>
      * instance.</p>
      */
@@ -83,7 +88,7 @@ public abstract class TagHandler implements FaceletHandler {
     protected final Tag tag;
 
     /**
-     * <p class="changed_added_2_0">A reference to the
+     * <p class="changed_added_2_0_rev_a">A reference to the
      * <code>FaceletHandler</code> that represents the first nested
      * child of this <code>TagHandler</code> instance.</p>
      */
diff --git a/jsf-api/src/main/java/javax/faces/view/facelets/TagHandlerDelegate.java b/jsf-api/src/main/java/javax/faces/view/facelets/TagHandlerDelegate.java
index 92ff3ea..3b757b1 100644
--- a/jsf-api/src/main/java/javax/faces/view/facelets/TagHandlerDelegate.java
+++ b/jsf-api/src/main/java/javax/faces/view/facelets/TagHandlerDelegate.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -41,7 +45,8 @@ import javax.faces.component.UIComponent;
 
 
 /**
- * <p class="changed_added_2_0">Abstract class that defines methods
+ * <p class="changed_added_2_0"><span class="changed_modified_2_2">Abstract</span>
+ * class that defines methods
  * relating to helping tag handler instances.  This abstraction enables
  * implementation details to be hidden by the JSF implementation while
  * still allowing concrete classes to be defined for extension by
@@ -67,9 +72,18 @@ public abstract class TagHandlerDelegate {
     
 
     /**
-     * <p class="changed_added_2_0">Called by classes that implement
+     * <p class="changed_added_2_0"><span class="changed_modified_2_2">Called</span>
+     * by classes that implement
      * {@link javax.faces.view.facelets.FaceletHandler} in their
      * implementation of <code>apply()</code>.</p>
+     * 
+     * <p class="changed_added_2_2">If the argument {@code comp} is new to the
+     * view, for each tag attribute declared to be in the pass through attribute
+     * namespace, set the name and value of the attribute into the pass through
+     * attributes map of the component.  See {@link UIComponent#getPassThroughAttributes(boolean) }.
+     * See the VDLDocs for the namespace URI of the pass through attribute 
+     * namespace.  Attributes whose value is a {@code ValueExpression}
+     * must remain un-evaluated and stored in the map as {@code ValueExpression} instances.</p>
      *
      * @param ctx the <code>FaceletContext</code> for this request
      *
diff --git a/jsf-api/src/main/java/javax/faces/view/facelets/TagHandlerDelegateFactory.java b/jsf-api/src/main/java/javax/faces/view/facelets/TagHandlerDelegateFactory.java
index 9fb3590..fd80a94 100644
--- a/jsf-api/src/main/java/javax/faces/view/facelets/TagHandlerDelegateFactory.java
+++ b/jsf-api/src/main/java/javax/faces/view/facelets/TagHandlerDelegateFactory.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -36,13 +40,32 @@
 
 package javax.faces.view.facelets;
 
+import javax.faces.FacesWrapper;
+
 /**
- * <p class="changed_added_2_0">Abstract factory for creating instances
- * of {@link TagHandlerDelegate}.</p>
+ * <p class="changed_added_2_0"><span class="changed_modified_2_2">Abstract</span>
+ * factory for creating instances of {@link TagHandlerDelegate}.</p>
  *
  * @since 2.0
  */
-public abstract class TagHandlerDelegateFactory {
+public abstract class TagHandlerDelegateFactory implements FacesWrapper<TagHandlerDelegateFactory> {
+
+    public TagHandlerDelegateFactory() {
+    }
+
+    /**
+     * <p class="changed_added_2_2">If this factory has been decorated, the 
+     * implementation doing the decorating may override this method to provide
+     * access to the implementation being wrapped.  A default implementation
+     * is provided that returns <code>null</code>.</p>
+     * 
+     * @since 2.2
+     */
+
+    @Override
+    public TagHandlerDelegateFactory getWrapped() {
+        return null;
+    }
     
     /**
      * <p class="changed_added_2_0">Create and return a {@link
diff --git a/jsf-api/src/main/java/javax/faces/view/facelets/TextHandler.java b/jsf-api/src/main/java/javax/faces/view/facelets/TextHandler.java
index 1e0dcce..6bd6f79 100644
--- a/jsf-api/src/main/java/javax/faces/view/facelets/TextHandler.java
+++ b/jsf-api/src/main/java/javax/faces/view/facelets/TextHandler.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -51,6 +55,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+
 package javax.faces.view.facelets;
 
 /**
diff --git a/jsf-api/src/main/java/javax/faces/view/facelets/ValidatorConfig.java b/jsf-api/src/main/java/javax/faces/view/facelets/ValidatorConfig.java
index 89653a6..49a44e3 100644
--- a/jsf-api/src/main/java/javax/faces/view/facelets/ValidatorConfig.java
+++ b/jsf-api/src/main/java/javax/faces/view/facelets/ValidatorConfig.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-api/src/main/java/javax/faces/view/facelets/ValidatorHandler.java b/jsf-api/src/main/java/javax/faces/view/facelets/ValidatorHandler.java
index ba92d5e..e8774b8 100644
--- a/jsf-api/src/main/java/javax/faces/view/facelets/ValidatorHandler.java
+++ b/jsf-api/src/main/java/javax/faces/view/facelets/ValidatorHandler.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-api/src/main/java/javax/faces/view/facelets/package.html b/jsf-api/src/main/java/javax/faces/view/facelets/package.html
index 6a387c0..6986708 100644
--- a/jsf-api/src/main/java/javax/faces/view/facelets/package.html
+++ b/jsf-api/src/main/java/javax/faces/view/facelets/package.html
@@ -1,10 +1,53 @@
 <html>
 <head>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
 <title>Package Description for "javax.faces.view.facelets"</title>
 </head>
 <body bgcolor="white">
 
-<p class="changed_added_2_0">This package contains public classes for
+<p class="changed_added_2_0"><span class="changed_modified_2_0_rev_a
+changed_modified_2_1 changed_modified_2_2">This</span> package contains public classes for
 the Java code API of Facelets.  The vast majority of Facelets users have
 no need to access the Java API and can get all their work done using the
 tag-level API.  These classes are provided for users that have a need
diff --git a/jsf-api/src/main/java/javax/faces/view/package.html b/jsf-api/src/main/java/javax/faces/view/package.html
index b476ee9..078f96b 100644
--- a/jsf-api/src/main/java/javax/faces/view/package.html
+++ b/jsf-api/src/main/java/javax/faces/view/package.html
@@ -1,12 +1,55 @@
 <html>
 <head>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
 <title>Package Description for "javax.faces.view"</title>
 </head>
 <body bgcolor="white">
 
-<p class="changed_added_2_0">Classes for defining a View Declaration
-Language (VDL) for authoring JavaServer Faces user interfaces.  The root
-class in this package is <a
+<p class="changed_added_2_0"><span class="changed_modified_2_0_rev_a
+changed_modified_2_1 changed_modified_2_2">Classes</span> for defining a
+View Declaration Language (VDL) for authoring JavaServer Faces user
+interfaces.  The root class in this package is <a
 href="ViewDeclarationLanguageFactory.html"><code>ViewDeclarationLanguageFactory</code>.</a>
 Interfaces and classes required for the Facelets for JSF 2
 implementation are also defined in package <a
diff --git a/jsf-api/src/main/java/javax/faces/webapp/AttributeTag.java b/jsf-api/src/main/java/javax/faces/webapp/AttributeTag.java
index 5c3f17b..b1f1281 100644
--- a/jsf-api/src/main/java/javax/faces/webapp/AttributeTag.java
+++ b/jsf-api/src/main/java/javax/faces/webapp/AttributeTag.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-api/src/main/java/javax/faces/webapp/ConverterELTag.java b/jsf-api/src/main/java/javax/faces/webapp/ConverterELTag.java
index af1e2fe..a994499 100644
--- a/jsf-api/src/main/java/javax/faces/webapp/ConverterELTag.java
+++ b/jsf-api/src/main/java/javax/faces/webapp/ConverterELTag.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-api/src/main/java/javax/faces/webapp/ConverterTag.java b/jsf-api/src/main/java/javax/faces/webapp/ConverterTag.java
index 06e784a..f0d6735 100644
--- a/jsf-api/src/main/java/javax/faces/webapp/ConverterTag.java
+++ b/jsf-api/src/main/java/javax/faces/webapp/ConverterTag.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-api/src/main/java/javax/faces/webapp/FacesServlet.java b/jsf-api/src/main/java/javax/faces/webapp/FacesServlet.java
index 789f2e0..e3534ce 100644
--- a/jsf-api/src/main/java/javax/faces/webapp/FacesServlet.java
+++ b/jsf-api/src/main/java/javax/faces/webapp/FacesServlet.java
@@ -1,345 +1,712 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package javax.faces.webapp;
-
-
-import java.io.IOException;
-import java.util.ResourceBundle;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-import javax.faces.FacesException;
-import javax.faces.FactoryFinder;
-import javax.faces.application.ResourceHandler;
-import javax.faces.context.FacesContext;
-import javax.faces.context.FacesContextFactory;
-import javax.faces.lifecycle.Lifecycle;
-import javax.faces.lifecycle.LifecycleFactory;
-import javax.servlet.Servlet;
-import javax.servlet.ServletConfig;
-import javax.servlet.ServletException;
-import javax.servlet.ServletRequest;
-import javax.servlet.ServletResponse;
-import javax.servlet.UnavailableException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-
-/**
- * <p><strong class="changed_modified_2_0">FacesServlet</strong> is a
- * servlet that manages the request processing lifecycle for web
- * applications that are utilizing JavaServer Faces to construct the
- * user interface.</p>
- */
-
-public final class FacesServlet implements Servlet {
-
-
-    /**
-     * <p>Context initialization parameter name for a comma delimited list
-     * of context-relative resource paths (in addition to
-     * <code>/WEB-INF/faces-config.xml</code> which is loaded automatically
-     * if it exists) containing JavaServer Faces configuration information.</p>
-     */
-    public static final String CONFIG_FILES_ATTR =
-        "javax.faces.CONFIG_FILES";
-
-
-    /**
-     * <p>Context initialization parameter name for the lifecycle identifier
-     * of the {@link Lifecycle} instance to be utilized.</p>
-     */
-    public static final String LIFECYCLE_ID_ATTR =
-        "javax.faces.LIFECYCLE_ID";
-
-
-    /**
-     * The <code>Logger</code> for this class.
-     */
-    private static final Logger LOGGER =
-          Logger.getLogger("javax.faces.webapp", "javax.faces.LogStrings");
-
-
-    /**
-     * <p>Factory for {@link FacesContext} instances.</p>
-     */
-    private FacesContextFactory facesContextFactory = null;
-
-
-    /**
-     * <p>The {@link Lifecycle} instance to use for request processing.</p>
-     */
-    private Lifecycle lifecycle = null;
-
-
-    /**
-     * <p>The <code>ServletConfig</code> instance for this servlet.</p>
-     */
-    private ServletConfig servletConfig = null;
-
-
-    /**
-     * <p>Release all resources acquired at startup time.</p>
-     */
-    public void destroy() {
-
-        facesContextFactory = null;
-        lifecycle = null;
-        servletConfig = null;
-
-    }
-
-
-    /**
-     * <p>Return the <code>ServletConfig</code> instance for this servlet.</p>
-     */
-    public ServletConfig getServletConfig() {
-
-        return (this.servletConfig);
-
-    }
-
-
-    /**
-     * <p>Return information about this Servlet.</p>
-     */
-    public String getServletInfo() {
-
-        return (this.getClass().getName());
-
-    }
-
-
-    /**
-     * <p>Acquire the factory instances we will require.</p>
-     *
-     * @throws ServletException if, for any reason, the startup of
-     * this Faces application failed.  This includes errors in the
-     * config file that is parsed before or during the processing of
-     * this <code>init()</code> method.
-     */
-    public void init(ServletConfig servletConfig) throws ServletException {
-
-        // Save our ServletConfig instance
-        this.servletConfig = servletConfig;
-
-        // Acquire our FacesContextFactory instance
-        try {
-            facesContextFactory = (FacesContextFactory)
-                FactoryFinder.getFactory
-                (FactoryFinder.FACES_CONTEXT_FACTORY);
-        } catch (FacesException e) {
-            ResourceBundle rb = LOGGER.getResourceBundle();
-            String msg = rb.getString("severe.webapp.facesservlet.init_failed");
-            Throwable rootCause = (e.getCause() != null) ? e.getCause() : e;
-            LOGGER.log(Level.SEVERE, msg, rootCause);
-            throw new UnavailableException(msg);
-        }
-
-        // Acquire our Lifecycle instance
-        try {
-            LifecycleFactory lifecycleFactory = (LifecycleFactory)
-                FactoryFinder.getFactory(FactoryFinder.LIFECYCLE_FACTORY);
-            String lifecycleId ;
-
-            // First look in the servlet init-param set
-            if (null == (lifecycleId = servletConfig.getInitParameter(LIFECYCLE_ID_ATTR))) {
-                // If not found, look in the context-param set 
-                lifecycleId = servletConfig.getServletContext().getInitParameter
-                    (LIFECYCLE_ID_ATTR);
-            }
-
-            if (lifecycleId == null) {
-                lifecycleId = LifecycleFactory.DEFAULT_LIFECYCLE;
-            }
-            lifecycle = lifecycleFactory.getLifecycle(lifecycleId);
-        } catch (FacesException e) {
-            Throwable rootCause = e.getCause();
-            if (rootCause == null) {
-                throw e;
-            } else {
-                throw new ServletException(e.getMessage(), rootCause);
-            }
-        }
-
-    }
-
-
-    /**
-     * <p class="changed_modified_2_0">Process an incoming request, and create the
-     * corresponding response according to the following
-     * specification.</p>
-     * 
-     * <div class="changed_modified_2_0">
-     *
-     * <p>If the <code>request</code> and <code>response</code>
-     * arguments to this method are not instances of
-     * <code>HttpServletRequest</code> and
-     * <code>HttpServletResponse</code>, respectively, the results of
-     * invoking this method are undefined.</p>
-     *
-     * <p>This method must respond to requests that start with the
-     * following strings by invoking the <code>sendError</code> method
-     * on the response argument (cast to
-     * <code>HttpServletResponse</code>), passing the code
-     * <code>HttpServletResponse.SC_NOT_FOUND</code> as the
-     * argument. </p>
-     *
-     * <ul>
-     *
-<pre><code>
-/WEB-INF/
-/WEB-INF
-/META-INF/
-/META-INF
-</code></pre>
-     *
-     * </ul>
-     *
-     
-     * <p>If none of the cases described above in the specification for
-     * this method apply to the servicing of this request, the following
-     * action must be taken to service the request.</p>
-
-     * <p>Acquire a {@link FacesContext} instance for this request.</p>
-
-     * <p>Acquire the <code>ResourceHandler</code> for this request by
-     * calling {@link
-     * javax.faces.application.Application#getResourceHandler}.  Call
-     * {@link
-     * javax.faces.application.ResourceHandler#isResourceRequest}.  If
-     * this returns <code>true</code> call {@link
-     * javax.faces.application.ResourceHandler#handleResourceRequest}.
-     * If this returns <code>false</code>, call {@link
-     * javax.faces.lifecycle.Lifecycle#execute} followed by {@link
-     * javax.faces.lifecycle.Lifecycle#render}.  If a {@link
-     * javax.faces.FacesException} is thrown in either case, extract the
-     * cause from the <code>FacesException</code>.  If the cause is
-     * <code>null</code> extract the message from the
-     * <code>FacesException</code>, put it inside of a new
-     * <code>ServletException</code> instance, and pass the
-     * <code>FacesException</code> instance as the root cause, then
-     * rethrow the <code>ServletException</code> instance.  If the cause
-     * is an instance of <code>ServletException</code>, rethrow the
-     * cause.  If the cause is an instance of <code>IOException</code>,
-     * rethrow the cause.  Otherwise, create a new
-     * <code>ServletException</code> instance, passing the message from
-     * the cause, as the first argument, and the cause itself as the
-     * second argument.</p>
-
-     * In a finally block, {@link
-     * javax.faces.context.FacesContext#release} must be called.
-
-     * </div>
-     *
-     * @param request The servlet request we are processing
-     * @param response The servlet response we are creating
-     *
-     * @throws IOException if an input/output error occurs during processing
-     * @throws ServletException if a servlet error occurs during processing
-
-     */
-    public void service(ServletRequest request,
-                        ServletResponse response)
-        throws IOException, ServletException {
-
-        requestStart(((HttpServletRequest) request).getRequestURI()); // V3 Probe hook
-
-        // If prefix mapped, then ensure requests for /WEB-INF are
-        // not processed.
-        String pathInfo = ((HttpServletRequest) request).getPathInfo();
-        if (pathInfo != null) {
-            pathInfo = pathInfo.toUpperCase();
-            if (pathInfo.startsWith("/WEB-INF/")
-                || pathInfo.equals("/WEB-INF")
-                || pathInfo.startsWith("/META-INF/")
-                || pathInfo.equals("/META-INF")) {
-                ((HttpServletResponse) response).
-                      sendError(HttpServletResponse.SC_NOT_FOUND);
-                return;
-            }
-        }    
-        
-        // Acquire the FacesContext instance for this request
-        FacesContext context = facesContextFactory.getFacesContext
-              (servletConfig.getServletContext(), request, response, lifecycle);
-
-        // Execute the request processing lifecycle for this request
-        try {
-            ResourceHandler handler =
-                  context.getApplication().getResourceHandler();
-            if (handler.isResourceRequest(context)) {
-                handler.handleResourceRequest(context);
-            } else {
-                lifecycle.execute(context);
-                lifecycle.render(context);
-            }
-        } catch (FacesException e) {
-            Throwable t = e.getCause();
-            if (t == null) {
-                throw new ServletException(e.getMessage(), e);
-            } else {
-                if (t instanceof ServletException) {
-                    throw ((ServletException) t);
-                } else if (t instanceof IOException) {
-                    throw ((IOException) t);
-                } else {
-                    throw new ServletException(t.getMessage(), t);
-                }
-            }
-        }
-
-        requestEnd(); // V3 Probe hook
-    }
-
-
-    // --------------------------------------------------------- Private Methods
-
-
-    /**
-     * DO NOT REMOVE. Necessary for V3 probe monitoring.
-     */
-    @SuppressWarnings({"UnusedDeclaration"})
-    private void requestStart(String requestUri) { }
-
-
-    /**
-     * DO NOT REMOVE. Necessary for V3 probe monitoring.
-     */
-    private void requestEnd() { }
-
-}
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package javax.faces.webapp;
+
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.EnumSet;
+import java.util.ResourceBundle;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import java.util.Set;
+import java.util.HashSet;
+import java.util.List;
+
+import javax.faces.FacesException;
+import javax.faces.FactoryFinder;
+import javax.faces.application.ResourceHandler;
+import javax.faces.context.FacesContext;
+import javax.faces.context.FacesContextFactory;
+import javax.faces.lifecycle.Lifecycle;
+import javax.faces.lifecycle.LifecycleFactory;
+import javax.servlet.Servlet;
+import javax.servlet.ServletConfig;
+import javax.servlet.ServletException;
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletResponse;
+import javax.servlet.UnavailableException;
+import javax.servlet.annotation.MultipartConfig;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+
+/**
+ * <p><strong class="changed_modified_2_0 changed_modified_2_0_rev_a
+ * changed_modified_2_1 changed_modified_2_2">FacesServlet</strong> is a
+ * servlet that manages the request processing lifecycle for web
+ * applications that are utilizing JavaServer Faces to construct the
+ * user interface.</p>
+ *
+ * <div class="changed_added_2_1">
+ *
+ * <p>If the application is running in a Servlet 3.0 (and beyond)
+ * container, the runtime must provide an implementation of the {@link
+ * javax.servlet.ServletContainerInitializer} interface that declares
+ * the following classes in its {@link
+ * javax.servlet.annotation.HandlesTypes} annotation.</p>
+
+ * <ul>
+ 
+ * <li>{@link javax.faces.application.ResourceDependencies}</li>
+
+ * <li>{@link javax.faces.application.ResourceDependency}</li>
+
+ * <li>javax.faces.bean.ManagedBean</li>
+
+ * <li>{@link javax.faces.component.FacesComponent}</li>
+
+ * <li>{@link javax.faces.component.UIComponent}</li>
+
+ * <li>{@link javax.faces.convert.Converter}</li>
+
+ * <li>{@link javax.faces.convert.FacesConverter}</li>
+
+ * <li>{@link javax.faces.event.ListenerFor}</li>
+
+ * <li>{@link javax.faces.event.ListenersFor}</li>
+
+ * <li>{@link javax.faces.render.FacesBehaviorRenderer}</li>
+
+ * <li>{@link javax.faces.render.Renderer}</li>
+
+ * <li>{@link javax.faces.validator.FacesValidator}</li>
+
+ * <li>{@link javax.faces.validator.Validator}</li>
+
+ * </ul>
+
+ * <p>This servlet must automatically be mapped if it is
+ * <strong>not</strong> explicitly mapped in <code>web.xml</code> or
+ * <code>web-fragment.xml</code> and one or more of the following
+ * conditions are true.</p>
+
+ * <ul>
+
+ * 	  <li><p>A <code>faces-config.xml</code> file is found in
+ * 	  <code>WEB-INF</code> </p></li>
+
+ * 	  <li><p>A <code>faces-config.xml</code> file is found in the
+ * 	  <code>META-INF</code> directory of a jar in the application's
+ * 	  classpath.</p></li>
+
+ * 	  <li><p>A filename ending in <code>.faces-config.xml</code> is
+ * 	  found in the <code>META-INF</code> directory of a jar in the
+ * 	  application's classpath.</p></li>
+
+ * 	  <li><p>The <code>javax.faces.CONFIG_FILES</code> context param
+ * 	  is declared in <code>web.xml</code> or
+ * 	  <code>web-fragment.xml</code>.</p></li>
+
+ *        <li><p>The <code>Set</code> of classes passed to the
+ *        <code>onStartup()</code> method of the
+ *        <code>ServletContainerInitializer</code> implementation is not
+ *        empty.</p></li>
+	
+ * </ul>
+
+ * <p>If the runtime determines that the servlet must be automatically
+ * mapped, it must be mapped to the following
+ * <<code>url-pattern</code>> entries.</p>
+
+ * 	<ul>
+
+ *         <li>/faces</li>
+ *         <li>*.jsf</li>
+ *         <li>*.faces</li>
+
+ *	</ul>
+
+ * </div>
+
+ * <div class="changed_added_2_2">
+ * 
+ * <p>This class must be annotated with {@code javax.servlet.annotation.MultipartConfig}.
+ * This causes the Servlet container in which the JSF implementation is running
+ * to correctly handle multipart form data.</p>
+
+ * <p><strong>Some security considerations relating to this class</strong></p>
+
+ * <p>The topic of web application security is a cross-cutting concern
+ * and every aspect of the specification address it.  However, as with
+ * any framework, the application developer needs to pay careful
+ * attention to security.  Please consider these topics among the rest
+ * of the security concerns for the application.  This is by no means a
+ * complete list of security concerns, and is no substitute for a
+ * thorough application level security review.</p>
+ *
+ * <ul>
+
+ * <p><strong>Prefix mappings and the <code>FacesServlet</code></strong></p>
+
+ * <p>If the <code>FacesServlet</code> is mapped using a prefix
+ * <code><url-pattern></code>, such as
+ * <code><url-pattern>/faces/*</url-pattern></code>,
+ * something must be done to prevent access to the view source without
+ * its first being processed by the <code>FacesServlet</code>.  One
+ * common approach is to apply a <security-constraint> to all
+ * facelet files and flow definition files.  Please see the
+ * <strong>Deployment Descriptor</strong> chapter of the Java Servlet
+ * Specification for more information the use of
+ * <security-constraint>.</p>
+
+ * <p><strong>Allowable HTTP Methods</strong></p>
+
+ * <p>The JSF specification only requires the use of the GET and POST
+ * http methods.  If your web application does not require any other
+ * http methods, such as PUT and DELETE, please consider restricting the
+ * allowable http methods using the <http-method> and
+ * <http-method-omission> elements.  Please see the
+ * <strong>Security</strong> of the Java Servlet Specification for more
+ * information the use of these elements.</p>
+
+
+ * </ul>
+ *
+ * </div>
+ */
+ at MultipartConfig
+public final class FacesServlet implements Servlet {
+
+    /*
+     * A white space separated list of case sensitive HTTP method names
+     * that are allowed to be processed by this servlet. * means allow all
+     */
+    private static final String ALLOWED_HTTP_METHODS_ATTR =
+            "com.sun.faces.allowedHttpMethods";
+    
+    // Http method names must be upper case. http://www.w3.org/Protocols/HTTP/NoteMethodCS.html
+    // List of valid methods in Http 1.1 http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9
+
+    private enum HttpMethod {
+        
+        OPTIONS("OPTIONS"),
+        GET("GET"),
+        HEAD("HEAD"),
+        POST("POST"),
+        PUT("PUT"),
+        DELETE("DELETE"),
+        TRACE("TRACE"),
+        CONNECT("CONNECT");
+        
+        private String name;
+        
+        HttpMethod(String name) {
+            this.name = name;
+        }
+
+        @Override
+        public String toString() {
+            return name;
+        }
+        
+    }
+
+
+    private Set<String> allowedUnknownHttpMethods;
+    private Set<HttpMethod> allowedKnownHttpMethods;
+    final private Set<HttpMethod> defaultAllowedHttpMethods = 
+            EnumSet.range(HttpMethod.OPTIONS, HttpMethod.CONNECT);
+    private Set<HttpMethod> allHttpMethods;
+
+    private boolean allowAllMethods;
+
+    /**
+     * <p>Context initialization parameter name for a comma delimited list
+     * of context-relative resource paths (in addition to
+     * <code>/WEB-INF/faces-config.xml</code> which is loaded automatically
+     * if it exists) containing JavaServer Faces configuration information.</p>
+     */
+    public static final String CONFIG_FILES_ATTR =
+        "javax.faces.CONFIG_FILES";
+
+
+    /**
+     * <p>Context initialization parameter name for the lifecycle identifier
+     * of the {@link Lifecycle} instance to be utilized.</p>
+     */
+    public static final String LIFECYCLE_ID_ATTR =
+        "javax.faces.LIFECYCLE_ID";
+
+
+    /**
+     * The <code>Logger</code> for this class.
+     */
+    private static final Logger LOGGER =
+          Logger.getLogger("javax.faces.webapp", "javax.faces.LogStrings");
+
+
+    /**
+     * <p>Factory for {@link FacesContext} instances.</p>
+     */
+    private FacesContextFactory facesContextFactory = null;
+
+
+    /**
+     * <p>The {@link Lifecycle} instance to use for request processing.</p>
+     */
+    private Lifecycle lifecycle = null;
+
+
+    /**
+     * <p>The <code>ServletConfig</code> instance for this servlet.</p>
+     */
+    private ServletConfig servletConfig = null;
+
+    /**
+     * From GLASSFISH-15632.  If true, the FacesContext instance
+     * left over from startup time has been released.  
+     */
+    private boolean initFacesContextReleased = false;
+    
+
+    /**
+     * <p>Release all resources acquired at startup time.</p>
+     */
+    public void destroy() {
+
+        facesContextFactory = null;
+        lifecycle = null;
+        servletConfig = null;
+        uninitHttpMethodValidityVerification();
+
+    }
+
+
+    /**
+     * <p>Return the <code>ServletConfig</code> instance for this servlet.</p>
+     */
+    public ServletConfig getServletConfig() {
+
+        return (this.servletConfig);
+
+    }
+
+
+    /**
+     * <p>Return information about this Servlet.</p>
+     */
+    public String getServletInfo() {
+
+        return (this.getClass().getName());
+
+    }
+
+
+    /**
+     * <p>Acquire the factory instances we will require.</p>
+     *
+     * @throws ServletException if, for any reason, the startup of
+     * this Faces application failed.  This includes errors in the
+     * config file that is parsed before or during the processing of
+     * this <code>init()</code> method.
+     */
+    public void init(ServletConfig servletConfig) throws ServletException {
+
+        // Save our ServletConfig instance
+        this.servletConfig = servletConfig;
+
+        // Acquire our FacesContextFactory instance
+        try {
+            facesContextFactory = (FacesContextFactory)
+                FactoryFinder.getFactory
+                (FactoryFinder.FACES_CONTEXT_FACTORY);
+        } catch (FacesException e) {
+            ResourceBundle rb = LOGGER.getResourceBundle();
+            String msg = rb.getString("severe.webapp.facesservlet.init_failed");
+            Throwable rootCause = (e.getCause() != null) ? e.getCause() : e;
+            LOGGER.log(Level.SEVERE, msg, rootCause);
+            throw new UnavailableException(msg);
+        }
+
+        // Acquire our Lifecycle instance
+        try {
+            LifecycleFactory lifecycleFactory = (LifecycleFactory)
+                FactoryFinder.getFactory(FactoryFinder.LIFECYCLE_FACTORY);
+            String lifecycleId ;
+
+            // First look in the servlet init-param set
+            if (null == (lifecycleId = servletConfig.getInitParameter(LIFECYCLE_ID_ATTR))) {
+                // If not found, look in the context-param set 
+                lifecycleId = servletConfig.getServletContext().getInitParameter
+                    (LIFECYCLE_ID_ATTR);
+            }
+
+            if (lifecycleId == null) {
+                lifecycleId = LifecycleFactory.DEFAULT_LIFECYCLE;
+            }
+            lifecycle = lifecycleFactory.getLifecycle(lifecycleId);
+            initHttpMethodValidityVerification();
+        } catch (FacesException e) {
+            Throwable rootCause = e.getCause();
+            if (rootCause == null) {
+                throw e;
+            } else {
+                throw new ServletException(e.getMessage(), rootCause);
+            }
+        }
+
+    }
+
+    private void initHttpMethodValidityVerification() {
+
+        assert (null == allowedUnknownHttpMethods);
+        assert (null != defaultAllowedHttpMethods);
+        assert (null == allHttpMethods);
+        allHttpMethods = EnumSet.allOf(HttpMethod.class);
+
+        // Configure our permitted HTTP methods
+
+        allowedUnknownHttpMethods = Collections.emptySet();
+        allowedKnownHttpMethods = defaultAllowedHttpMethods;
+        
+        String[] methods;
+        String allowedHttpMethodsString = servletConfig.getServletContext().getInitParameter(ALLOWED_HTTP_METHODS_ATTR);
+        if (null != allowedHttpMethodsString) {
+            methods = allowedHttpMethodsString.split("\\s+");
+            assert (null != methods); // assuming split always returns a non-null array result
+            allowedUnknownHttpMethods = new HashSet(methods.length);
+            List<String> allowedKnownHttpMethodsStringList = new ArrayList<String>();
+            // validate input against allHttpMethods data structure
+            for (String cur : methods) {
+                if (cur.equals("*")) {
+                    allowAllMethods = true;
+                    allowedUnknownHttpMethods = Collections.emptySet();
+                    return;
+                }
+                boolean isKnownHttpMethod;
+                try {
+                    HttpMethod.valueOf(cur);
+                    isKnownHttpMethod = true;
+                } catch (IllegalArgumentException e) {
+                    isKnownHttpMethod = false;
+                }
+                
+                if (!isKnownHttpMethod) {
+                    if (LOGGER.isLoggable(Level.WARNING)) {
+                        HttpMethod [] values = HttpMethod.values();
+                        Object [] arg = new Object[values.length + 1];
+                        arg[0] = cur;
+                        System.arraycopy(values, HttpMethod.OPTIONS.ordinal(), 
+                                         arg, 1, values.length);
+                        LOGGER.log(Level.WARNING,
+                                "warning.webapp.facesservlet.init_invalid_http_method",
+                                arg);
+                    }
+                    // prevent duplicates
+                    if (!allowedUnknownHttpMethods.contains(cur)) {
+                        allowedUnknownHttpMethods.add(cur);
+                    }
+                } else {
+                    // prevent duplicates
+                    if (!allowedKnownHttpMethodsStringList.contains(cur)) {
+                        allowedKnownHttpMethodsStringList.add(cur);
+                    }
+                }
+            }
+            // Optimally initialize allowedKnownHttpMethods
+            if (5 == allowedKnownHttpMethodsStringList.size()) {
+                allowedKnownHttpMethods = EnumSet.of(
+                        HttpMethod.valueOf(allowedKnownHttpMethodsStringList.get(0)),
+                        HttpMethod.valueOf(allowedKnownHttpMethodsStringList.get(1)),
+                        HttpMethod.valueOf(allowedKnownHttpMethodsStringList.get(2)),
+                        HttpMethod.valueOf(allowedKnownHttpMethodsStringList.get(3)),
+                        HttpMethod.valueOf(allowedKnownHttpMethodsStringList.get(4))
+                        );
+            } else if (4 == allowedKnownHttpMethodsStringList.size()) {
+                allowedKnownHttpMethods = EnumSet.of(
+                        HttpMethod.valueOf(allowedKnownHttpMethodsStringList.get(0)),
+                        HttpMethod.valueOf(allowedKnownHttpMethodsStringList.get(1)),
+                        HttpMethod.valueOf(allowedKnownHttpMethodsStringList.get(2)),
+                        HttpMethod.valueOf(allowedKnownHttpMethodsStringList.get(3))
+                        );
+                
+            } else if (3 == allowedKnownHttpMethodsStringList.size()) {
+                allowedKnownHttpMethods = EnumSet.of(
+                        HttpMethod.valueOf(allowedKnownHttpMethodsStringList.get(0)),
+                        HttpMethod.valueOf(allowedKnownHttpMethodsStringList.get(1)),
+                        HttpMethod.valueOf(allowedKnownHttpMethodsStringList.get(2))
+                        );
+                
+            } else if (2 == allowedKnownHttpMethodsStringList.size()) {
+                allowedKnownHttpMethods = EnumSet.of(
+                        HttpMethod.valueOf(allowedKnownHttpMethodsStringList.get(0)),
+                        HttpMethod.valueOf(allowedKnownHttpMethodsStringList.get(1))
+                        );
+                
+            } else if (1 == allowedKnownHttpMethodsStringList.size()) {
+                allowedKnownHttpMethods = EnumSet.of(
+                        HttpMethod.valueOf(allowedKnownHttpMethodsStringList.get(0))
+                        );
+                
+            } else {
+                List<HttpMethod> restList = 
+                        new ArrayList<HttpMethod>(allowedKnownHttpMethodsStringList.size() - 1);
+                for (int i = 1; i < allowedKnownHttpMethodsStringList.size() - 1; i++) {
+                    restList.add(HttpMethod.valueOf(
+                            allowedKnownHttpMethodsStringList.get(i)
+                            ));
+                }
+                HttpMethod first = HttpMethod.valueOf(allowedKnownHttpMethodsStringList.get(0));
+                HttpMethod [] rest = new HttpMethod[restList.size()];
+                restList.toArray(rest);
+                allowedKnownHttpMethods = EnumSet.of(first, rest);
+                
+            } 
+        }
+    }
+
+    private void uninitHttpMethodValidityVerification() {
+        assert (null != allowedUnknownHttpMethods);
+        assert (null != defaultAllowedHttpMethods);
+        assert (null != allHttpMethods);
+
+        allowedUnknownHttpMethods.clear();
+        allowedUnknownHttpMethods = null;
+        allowedKnownHttpMethods.clear();
+        allowedKnownHttpMethods = null;
+        allHttpMethods.clear();
+        allHttpMethods = null;
+
+    }
+
+
+    /**
+     * <p class="changed_modified_2_0"><span
+     * class="changed_modified_2_2">Process</span> an incoming request,
+     * and create the corresponding response according to the following
+     * specification.</p>
+     * 
+     * <div class="changed_modified_2_0">
+     *
+     * <p>If the <code>request</code> and <code>response</code>
+     * arguments to this method are not instances of
+     * <code>HttpServletRequest</code> and
+     * <code>HttpServletResponse</code>, respectively, the results of
+     * invoking this method are undefined.</p>
+     *
+     * <p>This method must respond to requests that <span
+     * class="changed_modified_2_2">contain</span> the following
+     * strings by invoking the <code>sendError</code> method on the
+     * response argument (cast to <code>HttpServletResponse</code>),
+     * passing the code <code>HttpServletResponse.SC_NOT_FOUND</code> as
+     * the argument. </p>
+     *
+     * <ul>
+     *
+<pre><code>
+/WEB-INF/
+/WEB-INF
+/META-INF/
+/META-INF
+</code></pre>
+     *
+     * </ul>
+     *
+     
+     * <p>If none of the cases described above in the specification for
+     * this method apply to the servicing of this request, the following
+     * action must be taken to service the request.</p>
+
+     * <p>Acquire a {@link FacesContext} instance for this request.</p>
+
+     * <p>Acquire the <code>ResourceHandler</code> for this request by
+     * calling {@link
+     * javax.faces.application.Application#getResourceHandler}.  Call
+     * {@link
+     * javax.faces.application.ResourceHandler#isResourceRequest}.  If
+     * this returns <code>true</code> call {@link
+     * javax.faces.application.ResourceHandler#handleResourceRequest}.
+     * If this returns <code>false</code>, <span
+     * class="changed_added_2_2">call {@link
+     * javax.faces.lifecycle.Lifecycle#attachWindow} followed by </span>
+     * {@link javax.faces.lifecycle.Lifecycle#execute} followed by
+     * {@link javax.faces.lifecycle.Lifecycle#render}.  If a {@link
+     * javax.faces.FacesException} is thrown in either case, extract the
+     * cause from the <code>FacesException</code>.  If the cause is
+     * <code>null</code> extract the message from the
+     * <code>FacesException</code>, put it inside of a new
+     * <code>ServletException</code> instance, and pass the
+     * <code>FacesException</code> instance as the root cause, then
+     * rethrow the <code>ServletException</code> instance.  If the cause
+     * is an instance of <code>ServletException</code>, rethrow the
+     * cause.  If the cause is an instance of <code>IOException</code>,
+     * rethrow the cause.  Otherwise, create a new
+     * <code>ServletException</code> instance, passing the message from
+     * the cause, as the first argument, and the cause itself as the
+     * second argument.</p>
+
+     * <p class="changed_modified_2_0_rev_a">The implementation must
+     * make it so {@link javax.faces.context.FacesContext#release} is
+     * called within a finally block as late as possible in the
+     * processing for the JSF related portion of this request.</p>
+
+     * </div>
+     *
+     * @param req The servlet request we are processing
+     * @param resp The servlet response we are creating
+     *
+     * @throws IOException if an input/output error occurs during processing
+     * @throws ServletException if a servlet error occurs during processing
+
+     */
+    @Override
+    public void service(ServletRequest req,
+                        ServletResponse resp)
+        throws IOException, ServletException {
+        HttpServletRequest request = (HttpServletRequest) req;
+        HttpServletResponse response = (HttpServletResponse) resp;
+
+        requestStart(request.getRequestURI()); // V3 Probe hook
+        
+        if (!isHttpMethodValid(request)) {
+            response.sendError(HttpServletResponse.SC_BAD_REQUEST);
+            return;
+        }
+        if (Thread.currentThread().isInterrupted()) {
+            if (LOGGER.isLoggable(Level.FINER)) {
+                LOGGER.log(Level.FINE, "Thread {0} given to FacesServlet.service() in interrupted state", 
+                        Thread.currentThread().getName());
+            }
+        }
+
+        // If prefix mapped, then ensure requests for /WEB-INF are
+        // not processed.
+        String pathInfo = request.getPathInfo();
+        if (pathInfo != null) {
+            pathInfo = pathInfo.toUpperCase();
+            if (pathInfo.contains("/WEB-INF/")
+                || pathInfo.contains("/WEB-INF")
+                || pathInfo.contains("/META-INF/")
+                || pathInfo.contains("/META-INF")) {
+                response.sendError(HttpServletResponse.SC_NOT_FOUND);
+                return;
+            }
+        }
+
+        if (!initFacesContextReleased) {
+            FacesContext initFacesContext = FacesContext.getCurrentInstance();
+            if (null != initFacesContext) {
+                initFacesContext.release();
+            }
+            initFacesContextReleased = true;
+        }
+        
+        // Acquire the FacesContext instance for this request
+        FacesContext context = facesContextFactory.getFacesContext
+              (servletConfig.getServletContext(), request, response, lifecycle);
+
+        // Execute the request processing lifecycle for this request
+        try {
+            ResourceHandler handler =
+                  context.getApplication().getResourceHandler();
+            if (handler.isResourceRequest(context)) {
+                handler.handleResourceRequest(context);
+            } else {
+                lifecycle.attachWindow(context);
+                lifecycle.execute(context);
+                lifecycle.render(context);
+            }
+        } catch (FacesException e) {
+            Throwable t = e.getCause();
+            if (t == null) {
+                throw new ServletException(e.getMessage(), e);
+            } else {
+                if (t instanceof ServletException) {
+                    throw ((ServletException) t);
+                } else if (t instanceof IOException) {
+                    throw ((IOException) t);
+                } else {
+                    throw new ServletException(t.getMessage(), t);
+                }
+            }
+        }
+        finally {
+            // Release the FacesContext instance for this request
+            context.release();
+        }
+
+        requestEnd(); // V3 Probe hook
+    }
+
+    private boolean isHttpMethodValid(HttpServletRequest request) {
+        boolean result = false;
+        if (allowAllMethods) {
+            result = true;
+        } else {
+            String requestMethodString = request.getMethod();
+            HttpMethod requestMethod = null;
+            boolean isKnownHttpMethod;
+            try {
+                requestMethod = HttpMethod.valueOf(requestMethodString);
+                isKnownHttpMethod = true;
+            } catch (IllegalArgumentException e) {
+                isKnownHttpMethod = false;
+            }
+            if (isKnownHttpMethod) {
+                result = allowedKnownHttpMethods.contains(requestMethod);
+            } else {
+                result = allowedUnknownHttpMethods.contains(requestMethodString);
+            }
+            
+        }
+
+        return result;
+    }
+
+
+    // --------------------------------------------------------- Private Methods
+
+
+    /**
+     * DO NOT REMOVE. Necessary for V3 probe monitoring.
+     */
+    @SuppressWarnings({"UnusedDeclaration"})
+    private void requestStart(String requestUri) { }
+
+
+    /**
+     * DO NOT REMOVE. Necessary for V3 probe monitoring.
+     */
+    private void requestEnd() { }
+    
+    }    
diff --git a/jsf-api/src/main/java/javax/faces/webapp/FacetTag.java b/jsf-api/src/main/java/javax/faces/webapp/FacetTag.java
index 2fc421d..f24e411 100644
--- a/jsf-api/src/main/java/javax/faces/webapp/FacetTag.java
+++ b/jsf-api/src/main/java/javax/faces/webapp/FacetTag.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-api/src/main/java/javax/faces/webapp/PreJsf2ExceptionHandlerFactory.java b/jsf-api/src/main/java/javax/faces/webapp/PreJsf2ExceptionHandlerFactory.java
index c350b8f..8522db6 100644
--- a/jsf-api/src/main/java/javax/faces/webapp/PreJsf2ExceptionHandlerFactory.java
+++ b/jsf-api/src/main/java/javax/faces/webapp/PreJsf2ExceptionHandlerFactory.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -89,6 +93,9 @@ import javax.faces.context.FacesContext;
  */
 public class PreJsf2ExceptionHandlerFactory extends ExceptionHandlerFactory {
 
+    public PreJsf2ExceptionHandlerFactory() {
+    }
+
 
     // ------------------------------------ Methods from ExceptionHandlerFactory
 
diff --git a/jsf-api/src/main/java/javax/faces/webapp/UIComponentBodyTag.java b/jsf-api/src/main/java/javax/faces/webapp/UIComponentBodyTag.java
index 6b279cb..b2d6874 100644
--- a/jsf-api/src/main/java/javax/faces/webapp/UIComponentBodyTag.java
+++ b/jsf-api/src/main/java/javax/faces/webapp/UIComponentBodyTag.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-api/src/main/java/javax/faces/webapp/UIComponentClassicTagBase.java b/jsf-api/src/main/java/javax/faces/webapp/UIComponentClassicTagBase.java
index 7864f54..98c0515 100644
--- a/jsf-api/src/main/java/javax/faces/webapp/UIComponentClassicTagBase.java
+++ b/jsf-api/src/main/java/javax/faces/webapp/UIComponentClassicTagBase.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -45,7 +49,6 @@ import javax.faces.context.FacesContext;
 import javax.servlet.jsp.JspException;
 import javax.servlet.jsp.JspWriter;
 import javax.servlet.jsp.PageContext;
-import javax.servlet.jsp.jstl.core.LoopTag;
 import javax.servlet.jsp.tagext.BodyContent;
 import javax.servlet.jsp.tagext.BodyTag;
 import javax.servlet.jsp.tagext.JspIdConsumer;
@@ -57,9 +60,9 @@ import java.io.Writer;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.HashSet;
-import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
+import java.util.RandomAccess;
 import java.util.Set;
 import java.util.concurrent.atomic.AtomicInteger;
 import java.util.logging.Level;
@@ -110,14 +113,14 @@ import java.util.logging.Level;
  *
  * <code><pre>
 
-    <h:panelGrid style="color:red" border="4" columns="2">
-      CASE 1
-      <h:outputText value="component 1"/>
-      CASE 2
-      <h:outputText value="component 2"/>
-      <f:verbatim>CASE 3</f:verbatim>
-      <c:out value="${pageScope.CASE4}" />
-    </h:panelGrid>
+ <h:panelGrid style="color:red" border="4" columns="2">
+ CASE 1
+ <h:outputText value="component 1"/>
+ CASE 2
+ <h:outputText value="component 2"/>
+ <f:verbatim>CASE 3</f:verbatim>
+ <c:out value="${pageScope.CASE4}" />
+ </h:panelGrid>
 
  * </pre></code>
  *
@@ -128,19 +131,19 @@ import java.util.logging.Level;
  *
  * <code><pre>
 
-<table border="4" style="color:red">
+ <table border="4" style="color:red">
 
-  <tbody>
+ <tbody>
 
-    <tr><td>CASE 1</td></tr> <tr><td>component 1</td></tr>
+ <tr><td>CASE 1</td></tr> <tr><td>component 1</td></tr>
 
-    <tr><td>CASE 2</td> <tr><td>component 2</td></tr>
+ <tr><td>CASE 2</td> <tr><td>component 2</td></tr>
 
-    <tr><td>CASE 3</td> <td>CASE 4</td></tr>
+ <tr><td>CASE 3</td> <td>CASE 4</td></tr>
 
-  </tbody>
+ </tbody>
 
-</table>
+ </table>
 
  * </pre></code>
 
@@ -155,7 +158,7 @@ public abstract class UIComponentClassicTagBase extends UIComponentTagBase imple
      * for the current facesContext will be maintained.</p>
      */
     private static final String COMPONENT_TAG_STACK_ATTR =
-        "javax.faces.webapp.COMPONENT_TAG_STACK";
+            "javax.faces.webapp.COMPONENT_TAG_STACK";
 
     /**
      * <p>The {@link UIComponent} attribute under which we will store a
@@ -163,7 +166,7 @@ public abstract class UIComponentClassicTagBase extends UIComponentTagBase imple
      * created on the previous generation of this page (if any).</p>
      */
     private static final String JSP_CREATED_COMPONENT_IDS =
-        "javax.faces.webapp.COMPONENT_IDS";
+            "javax.faces.webapp.COMPONENT_IDS";
 
 
     /**
@@ -172,7 +175,7 @@ public abstract class UIComponentClassicTagBase extends UIComponentTagBase imple
      * generation of this page (if any).
      */
     private static final String JSP_CREATED_FACET_NAMES =
-        "javax.faces.webapp.FACET_NAMES";
+            "javax.faces.webapp.FACET_NAMES";
 
 
     /**
@@ -180,34 +183,34 @@ public abstract class UIComponentClassicTagBase extends UIComponentTagBase imple
      * IDs of the current translation unit.</p>
      */
     private static final String GLOBAL_ID_VIEW =
-        "javax.faces.webapp.GLOBAL_ID_VIEW";
+            "javax.faces.webapp.GLOBAL_ID_VIEW";
 
     /**
      * <p>The attribute name under which we will store the {@link FacesContext}
      * for this request.</p>
      */
     private static final String CURRENT_FACES_CONTEXT =
-        "javax.faces.webapp.CURRENT_FACES_CONTEXT";
+            "javax.faces.webapp.CURRENT_FACES_CONTEXT";
 
     /**
      * <p>The attribute name under which we will store the {@link UIViewRoot}
      * for this request.</p>
      */
     private static final String CURRENT_VIEW_ROOT =
-        "javax.faces.webapp.CURRENT_VIEW_ROOT";
+            "javax.faces.webapp.CURRENT_VIEW_ROOT";
 
     /**
      * Used as the prefix for ids.  This is necessary to avoid
      * uniqueness conflicts with the transient verbatim components.
      */
     protected static final String UNIQUE_ID_PREFIX =
-	UIViewRoot.UNIQUE_ID_PREFIX + '_';
+            UIViewRoot.UNIQUE_ID_PREFIX + '_';
 
     /**
      * Used to store the previousJspId Map in facesContextScope
      */
     private static final String PREVIOUS_JSP_ID_SET =
-	"javax.faces.webapp.PREVIOUS_JSP_ID_SET";
+            "javax.faces.webapp.PREVIOUS_JSP_ID_SET";
 
     /**
      * This is a <code>Page</code> scoped marker to help us
@@ -217,7 +220,7 @@ public abstract class UIComponentClassicTagBase extends UIComponentTagBase imple
      * to this page context.
      */
     private static final String JAVAX_FACES_PAGECONTEXT_MARKER =
-         "javax.faces.webapp.PAGECONTEXT_MARKER";
+            "javax.faces.webapp.PAGECONTEXT_MARKER";
 
     /**
      * This is a <code>facesContext</code> scoped attribute which contains
@@ -225,7 +228,7 @@ public abstract class UIComponentClassicTagBase extends UIComponentTagBase imple
      * count.
      */
     private static final String JAVAX_FACES_PAGECONTEXT_COUNTER =
-         "javax.faces.webapp.PAGECONTEXT_COUNTER";
+            "javax.faces.webapp.PAGECONTEXT_COUNTER";
 
     // ------------------------------------------------------ Instance Variables
     /**
@@ -316,6 +319,21 @@ public abstract class UIComponentClassicTagBase extends UIComponentTagBase imple
      */
     private boolean isNestedInIterator = false;
 
+    /**
+     * The next child index to get in getChild()
+     */
+    private int _nextChildIndex = 0;
+
+    Map<String, Map<String, UIComponentTagBase>> namingContainerChildIds = null;
+
+    public UIComponentClassicTagBase() {}
+
+    UIComponentClassicTagBase(PageContext pageContext, FacesContext facesContext) {
+        this.pageContext = pageContext;
+        this.context = facesContext;
+    }
+
+
     // --------------------------------------------- Support Methods for Tag
 
     //
@@ -332,9 +350,9 @@ public abstract class UIComponentClassicTagBase extends UIComponentTagBase imple
      */
     protected int getDoStartValue() throws JspException {
 
-	int result = EVAL_BODY_BUFFERED;
+        int result = EVAL_BODY_BUFFERED;
 
-	return result;
+        return result;
     }
 
     /**
@@ -477,11 +495,13 @@ public abstract class UIComponentClassicTagBase extends UIComponentTagBase imple
      * @param componentId Component identifier for the new child,
      *  or <code>null</code> for no explicit identifier
      */
-    private UIComponent createChild(FacesContext context, UIComponent parent,
-                                    String componentId) throws JspException {
+    private UIComponent createChild(
+            FacesContext context,
+            UIComponent parent,
+            UIComponentClassicTagBase parentTag,
+            String componentId) throws JspException {
 
         UIComponent component = createComponent(context, componentId);
-        UIComponentTagBase parentTag = getParentUIComponentClassicTagBase(pageContext);
         int indexOfNextChildTag = parentTag.getIndexOfNextChildTag();
         if (indexOfNextChildTag > parent.getChildCount()) {
             indexOfNextChildTag = parent.getChildCount();
@@ -518,17 +538,76 @@ public abstract class UIComponentClassicTagBase extends UIComponentTagBase imple
      * @param component {@link UIComponent} to be searched
      * @param componentId Component id to search for
      */
-    private static UIComponent getChild(UIComponent component, String componentId) {
+    private static UIComponent getChild(
+            UIComponentClassicTagBase tag, UIComponent component, String componentId)
+    {
+        int childCount = component.getChildCount();
+
+        // we only need to bother to check if we even have children
+        if (childCount > 0)
+        {
+            List<UIComponent> children = component.getChildren();
+
+            // Most Lists implement RandomAccess, so iterate directly rather than creating
+            // and iterator
+            if (children instanceof RandomAccess)
+            {
+                // in the most common case, the first component we are asked for will be the
+                // our first child, the second, our second, etc.  Take advantage of this by
+                // remembering the index to check for the next child.  This changes this code
+                // from O(n^2) for all of the children to O(n)
+                int startIndex;
+
+                if (tag != null)
+                    startIndex = tag._nextChildIndex;
+                else
+                    startIndex = 0;
+
+                // start searching from location remembered from last time
+                for (int i = startIndex; i < childCount; i++)
+                {
+                    UIComponent child = children.get(i);
+
+                    if (componentId.equals(child.getId()))
+                    {
+                        // bump up the index to search next and wrap around
+                        i++;
+
+                        tag._nextChildIndex = (i < childCount) ? i : 0;
+                        return child;
+                    }
+                }
+
+                // handle case where we started past the first item and didn't find our
+                // child.  Now search from the beginning to where we started
+                if (startIndex > 0)
+                {
+                    for (int i = 0; i < startIndex; i++)
+                    {
+                        UIComponent child = children.get(i);
 
-        Iterator<UIComponent> kids = component.getChildren().iterator();
-        while (kids.hasNext()) {
-            UIComponent kid = kids.next();
-            if (componentId.equals(kid.getId())) {
-                return (kid);
+                        if (componentId.equals(child.getId()))
+                        {
+                            i++;
+
+                            tag._nextChildIndex = i;
+                            return child;
+                        }
+                    }
+                }
+            }
+            else
+            {
+                // List doesn't support RandomAccess, do it the iterator way
+                for (UIComponent child : children)
+                {
+                    if (componentId.equals(child.getId()))
+                        return child;
+                }
             }
         }
-        return (null);
 
+        return null;
     }
 
     /**
@@ -579,9 +658,8 @@ public abstract class UIComponentClassicTagBase extends UIComponentTagBase imple
      * <li>Add the new component as a child or facet of its parent</li>
      * </ol>
      */
-    protected UIComponent findComponent(FacesContext context)
-	throws JspException {
-
+    protected UIComponent findComponent(FacesContext context) throws JspException
+    {
         // Step 1 -- Have we already found the relevant component?
         if (component != null) {
             return (component);
@@ -589,59 +667,54 @@ public abstract class UIComponentClassicTagBase extends UIComponentTagBase imple
 
         // Step 2 -- Identify the component that is, or will be, our parent
         UIComponentClassicTagBase parentTag =
-	    getParentUIComponentClassicTagBase(pageContext);
+                _getParentUIComponentClassicTagBase(context.getAttributes());
         UIComponent parentComponent;
         if (parentTag != null) {
             parentComponent = parentTag.getComponentInstance();
         } else {
-	    // Special case.  The component to be found is the
-	    // UIViewRoot.
-	    // see if this is the first time this tag instance is trying
-	    // to be bound to the UIViewRoot
-	    parentComponent = context.getViewRoot();
+            // Special case.  The component to be found is the
+            // UIViewRoot.
+            // see if this is the first time this tag instance is trying
+            // to be bound to the UIViewRoot
+            parentComponent = context.getViewRoot();
             // Has this UIViewRoot instance had a tag bound to it
             // before?
-            if (null ==
-                parentComponent.getAttributes().get(CURRENT_VIEW_ROOT)) {
+            if (null == parentComponent.getAttributes().get(CURRENT_VIEW_ROOT)) {
                 // No it hasn't.
 
                 // make sure setProperties() and setId() are called
                 // once per UIViewRoot instance.
-		try {
-		    setProperties(parentComponent);
-		}
-		catch (FacesException e) {
-		    if (e.getCause() instanceof JspException) {
-			throw ((JspException)e.getCause());
-		    }
-		    throw e;
-		}
+                try {
+                    setProperties(parentComponent);
+                } catch (FacesException e) {
+                    if (e.getCause() instanceof JspException) {
+                        throw ((JspException)e.getCause());
+                    }
+                    throw e;
+                }
 
                 if (null != this.id) {
                     parentComponent.setId(this.id);
+                } else {
+                    assert(null != getFacesJspId());
+                    parentComponent.setId(getFacesJspId());
                 }
-		else {
-		    assert(null != getFacesJspId());
-		    parentComponent.setId(getFacesJspId());
-		}
                 parentComponent.getAttributes().put(CURRENT_VIEW_ROOT,
-                                                    CURRENT_VIEW_ROOT);
+                        CURRENT_VIEW_ROOT);
                 created = true;
-            }
-            else if (hasBinding()) {
-		try {
-		    setProperties(parentComponent);
-		}
-		catch (FacesException e) {
-		    if (e.getCause() instanceof JspException) {
-			throw ((JspException)e.getCause());
-		    }
-		    throw e;
-		}
+            } else if (hasBinding()) {
+                try {
+                    setProperties(parentComponent);
+                } catch (FacesException e) {
+                    if (e.getCause() instanceof JspException) {
+                        throw ((JspException)e.getCause());
+                    }
+                    throw e;
+                }
             }
 
-	    // this is not the first time this tag instance is trying to
-	    // be bound to this UIViewRoot, take no extra action.
+            // this is not the first time this tag instance is trying to
+            // be bound to this UIViewRoot, take no extra action.
 
             component = parentComponent;
             return (component);
@@ -652,6 +725,8 @@ public abstract class UIComponentClassicTagBase extends UIComponentTagBase imple
 
         // Step 4 -- Create or return a facet with the specified name (if any)
         String facetName = getFacetName();
+        boolean created = parentTag.getCreated();
+
         if (facetName != null) {
             component = parentComponent.getFacets().get(facetName);
             if (component == null) {
@@ -659,14 +734,15 @@ public abstract class UIComponentClassicTagBase extends UIComponentTagBase imple
                         newId);
             }
             return (component);
-        }
+        } else {
 
-        // Step 5 -- Create or return a child with the specified id
-        component = getChild(parentComponent, newId);
-        if (component == null) {
-            component = createChild(context, parentComponent, newId);
+            // Step 5 -- Create or return a child with the specified id
+            component = getChild(parentTag, parentComponent, newId);
+            if (component == null) {
+                component = createChild(context, parentComponent, parentTag, newId);
+            }
+            return (component);
         }
-        return (component);
 
     }
 
@@ -680,16 +756,31 @@ public abstract class UIComponentClassicTagBase extends UIComponentTagBase imple
      *
      * @param context <code>PageContext</code> for the current page
      */
-    public static UIComponentClassicTagBase getParentUIComponentClassicTagBase(PageContext context) {
+    public static UIComponentClassicTagBase getParentUIComponentClassicTagBase(PageContext context)
+    {
+        return _getParentUIComponentClassicTagBase(getFacesContext(context));
+    }
 
-        FacesContext facesContext = getFacesContext(context);
-        List list = (List) facesContext.getAttributes()
-              .get(COMPONENT_TAG_STACK_ATTR);
+    private static UIComponentClassicTagBase _getParentUIComponentClassicTagBase(
+            FacesContext facesContext)
+    {
+        return _getParentUIComponentClassicTagBase(facesContext.getAttributes());
+    }
 
-        if (list != null) {
+    private static UIComponentClassicTagBase _getParentUIComponentClassicTagBase(Map<Object, Object> cMap) {
+        List list = null;
+
+        if (cMap != null) {
+            list = (List) cMap.get(COMPONENT_TAG_STACK_ATTR);
+        }
+
+        if (list != null)
+        {
             return ((UIComponentClassicTagBase) list.get(list.size() - 1));
-        } else {
-            return (null);
+        }
+        else
+        {
+            return null;
         }
 
     }
@@ -719,7 +810,7 @@ public abstract class UIComponentClassicTagBase extends UIComponentTagBase imple
     /*
      * Adds argument child to component tree as a child of this component.
      */
-    
+
     void addChildToComponentAndTag(UIComponent child) {
         UIComponent myComponent = this.getComponentInstance();
 
@@ -728,7 +819,7 @@ public abstract class UIComponentClassicTagBase extends UIComponentTagBase imple
             indexOfNextChildTag = myComponent.getChildCount();
         }
         myComponent.getChildren().add(indexOfNextChildTag, child);
-        this.addChild(child);        
+        this.addChild(child);
     }
 
     protected void addFacet(String name) {
@@ -746,9 +837,7 @@ public abstract class UIComponentClassicTagBase extends UIComponentTagBase imple
      * stack, deleting the stack if this was the last entry.</p>
      */
     private void popUIComponentClassicTagBase() {
-        Map<Object, Object> contextMap =
-              context.getAttributes();
-        List list = (List) contextMap.get(COMPONENT_TAG_STACK_ATTR);
+        List list = (List) context.getAttributes().get(COMPONENT_TAG_STACK_ATTR);
 
         // if an exception occurred in a nested  tag,
         //there could be a few tags left in the stack.
@@ -758,7 +847,7 @@ public abstract class UIComponentClassicTagBase extends UIComponentTagBase imple
             uic = (UIComponentClassicTagBase) list.get(idx);
             list.remove(idx);
             if (idx < 1) {
-                contextMap.remove(COMPONENT_TAG_STACK_ATTR);
+                context.getAttributes().remove(COMPONENT_TAG_STACK_ATTR);
                 list = null;
             }
         }
@@ -771,19 +860,62 @@ public abstract class UIComponentClassicTagBase extends UIComponentTagBase imple
      */
     private void pushUIComponentClassicTagBase() {
 
-        Map<Object,Object> contextMap =
-              context.getAttributes();
         List<UIComponentClassicTagBase> list = TypedCollections.dynamicallyCastList((List)
-              contextMap.get(COMPONENT_TAG_STACK_ATTR), UIComponentClassicTagBase.class);
+                context.getAttributes().get(COMPONENT_TAG_STACK_ATTR), UIComponentClassicTagBase.class);
         if (list == null) {
             //noinspection CollectionWithoutInitialCapacity
             list = new ArrayList<UIComponentClassicTagBase>();
-            contextMap.put(COMPONENT_TAG_STACK_ATTR, list);
+            context.getAttributes().put(COMPONENT_TAG_STACK_ATTR, list);
         }
         list.add(this);
 
     }
 
+    /**
+     * Similar to List.indexOf, except that we start searching from a specific index
+     * and then wrap aroud.  For this to be performant, the List should implement
+     * RandomAccess.
+     * @param <T>
+     * @param list List to seatch
+     * @param startIndex index to start searching for value from
+     * @param searchValue Value to search for (null not supported)
+     * @return The index at which the value was first found, or -1 if not found
+     */
+    private static int _indexOfStartingFrom(List<?> list, int startIndex, Object searchValue)
+    {
+        int itemCount = list.size();
+
+        boolean found = false;
+
+        // start searching from location remembered from last time
+        for (int currIndex = startIndex; currIndex < itemCount; currIndex++)
+        {
+            Object currId = list.get(currIndex);
+
+            if ((searchValue == currId) || ((searchValue != null) && searchValue.equals(currId)))
+            {
+                return currIndex;
+            }
+        }
+
+        // handle case where we started past the first item and didn't find the
+        // searchValue.  Now search from the beginning to where we started
+        if (startIndex > 0)
+        {
+            for (int currIndex = 0; currIndex < startIndex; currIndex++)
+            {
+                Object currId = list.get(currIndex);
+
+                if ((searchValue == currId) || ((searchValue != null) && searchValue.equals(currId)))
+                {
+                    return currIndex;
+                }
+            }
+        }
+
+        // didn't find it
+        return -1;
+    }
 
     /**
      * <p>Retrieve from the {@link UIComponent} corresponding to this tag
@@ -794,57 +926,79 @@ public abstract class UIComponentClassicTagBase extends UIComponentTagBase imple
      * but not in the new list.  Save the list as a {@link UIComponent}
      * attribute so that it gets saved as part of the component's state.</p>
      */
-    private void removeOldChildren() {
+    private void removeOldChildren()
+    {
+        Map<String, Object> attributes = component.getAttributes();
+        List<String> currentComponents = createdComponents;
+
+        // Get the old list of created component ids and update the current list as a
+        // component attribute
+        Object oldValue;
+
+        if (currentComponents != null)
+        {
+            oldValue = attributes.put(JSP_CREATED_COMPONENT_IDS, currentComponents);
+            createdComponents = null;
+        }
+        else
+        {
+            oldValue = attributes.remove(JSP_CREATED_COMPONENT_IDS);
+        }
 
         // Remove old children that are no longer present
-        List<String> oldList = TypedCollections.dynamicallyCastList(
-            (List) component.getAttributes().get(JSP_CREATED_COMPONENT_IDS), String.class);
-        if (oldList != null && !oldList.isEmpty()) {
-
-            if (createdComponents != null) {
-
-                // Components not in the new list need to be removed
-                Iterator<String> olds = oldList.iterator();
-                while (olds.hasNext()) {
-                    String old = olds.next();
-                    if (!createdComponents.contains(old)) {
-                        UIComponent child = component.findComponent(old);
-                        // if a component is marked transient, it would have
-                        // been already removed from the child list, but the
-                        // oldList would still have it.  In addition, the component
-                        // might have manually been removed.  So, if findComponent
-                        // isn't successful, don't call remove child (it will NPE)
-                        if ( child != null) {
-                            component.getChildren().remove(child);
+        if (oldValue != null)
+        {
+            List<String> oldList = TypedCollections.dynamicallyCastList((List)oldValue, String.class);
+
+            int oldCount = oldList.size();
+
+            if (oldCount > 0)
+            {
+                if (currentComponents != null)
+                {
+                    int currStartIndex = 0;
+
+                    for (int oldIndex = 0; oldIndex < oldCount; oldIndex++)
+                    {
+                        String oldId = oldList.get(oldIndex);
+
+                        int foundIndex = _indexOfStartingFrom(currentComponents, currStartIndex, oldId);
+
+                        if (foundIndex != -1)
+                        {
+                            currStartIndex = foundIndex + 1;
+                        }
+                        else
+                        {
+                            UIComponent child = component.findComponent(oldId);
+                            // if a component is marked transient, it would have
+                            // been already removed from the child list, but the
+                            // oldList would still have it.  In addition, the component
+                            // might have manually been removed.  So, if findComponent
+                            // isn't successful, don't call remove child (it will NPE)
+                            if ( child != null)
+                            {
+                                component.getChildren().remove(child);
+                            }
                         }
                     }
                 }
-
-            } else {
-
-                // All old components need to be removed
-                Iterator<String> olds = oldList.iterator();
-                while (olds.hasNext()) {
-                    String old = olds.next();
-                    UIComponent child = component.findComponent(old);
-                    if (child != null) {
-                        component.getChildren().remove(child);
+                else
+                {
+                    List<UIComponent> children = component.getChildren();
+
+                    // All old components need to be removed
+                    for (String oldId : oldList)
+                    {
+                        UIComponent child = component.findComponent(oldId);
+                        if (child != null)
+                        {
+                            children.remove(child);
+                        }
                     }
                 }
-
             }
-
-        }
-
-        // Save the current list as a component attribute
-        if (createdComponents != null) {
-            component.getAttributes().put(JSP_CREATED_COMPONENT_IDS,
-                                          createdComponents);
-        } else {
-            component.getAttributes().remove(JSP_CREATED_COMPONENT_IDS);
         }
-        createdComponents = null;
-
     }
 
 
@@ -857,46 +1011,66 @@ public abstract class UIComponentClassicTagBase extends UIComponentTagBase imple
      * list as a {@link UIComponent} attribute so that it gets saved as part
      * of the component's state.</p>
      */
-    private void removeOldFacets() {
+    private void removeOldFacets()
+    {
+        Map<String, Object> attributes = component.getAttributes();
+        List<String> currentComponents = createdFacets;
 
-        // Remove old facets that are no longer present
-        List<String> oldList = TypedCollections.dynamicallyCastList(
-            (List) component.getAttributes().get(JSP_CREATED_FACET_NAMES), String.class);
-        if (oldList != null) {
+        // Get the old list of created component ids and update the current list as a
+        // component attribute
+        Object oldValue;
 
-            if (createdFacets != null) {
+        if (currentComponents != null)
+        {
+            oldValue = attributes.put(JSP_CREATED_FACET_NAMES, currentComponents);
+            createdFacets = null;
+        }
+        else
+        {
+            oldValue = attributes.remove(JSP_CREATED_FACET_NAMES);
+        }
 
-                // Facets not in the new list need to be removed
-                Iterator<String> olds = oldList.iterator();
-                while (olds.hasNext()) {
-                    String old = olds.next();
-                    if (!createdFacets.contains(old)) {
-                        component.getFacets().remove(old);
-                    }
-                }
+        // Remove old children that are no longer present
+        if (oldValue != null)
+        {
+            List<String> oldList = TypedCollections.dynamicallyCastList((List)oldValue, String.class);
 
-            } else {
+            int oldCount = oldList.size();
 
-                // All old facets need to be removed
-                Iterator<String> olds = oldList.iterator();
-                while (olds.hasNext()) {
-                    String old = olds.next();
-                    component.getFacets().remove(old);
-                }
+            if (oldCount > 0)
+            {
+                if (currentComponents != null)
+                {
+                    int currStartIndex = 0;
 
-            }
+                    for (int oldIndex = 0; oldIndex < oldCount; oldIndex++)
+                    {
+                        String oldId = oldList.get(oldIndex);
 
-        }
+                        int foundIndex = _indexOfStartingFrom(currentComponents, currStartIndex, oldId);
 
-        // Save the current list as a component attribute
-        if (createdFacets != null) {
-            component.getAttributes().put(JSP_CREATED_FACET_NAMES,
-                                          createdFacets);
-        } else {
-            component.getAttributes().remove(JSP_CREATED_FACET_NAMES);
+                        if (foundIndex != -1)
+                        {
+                            currStartIndex = foundIndex + 1;
+                        }
+                        else
+                        {
+                            component.getFacets().remove(oldId);
+                        }
+                    }
+                }
+                else
+                {
+                    Map<String, UIComponent> facets = component.getFacets();
+
+                    // All old facets need to be removed
+                    for (String oldId : oldList)
+                    {
+                        facets.remove(oldId);
+                    }
+                }
+            }
         }
-        createdFacets = null;
-
     }
 
     //
@@ -916,10 +1090,10 @@ public abstract class UIComponentClassicTagBase extends UIComponentTagBase imple
         String bodyContentString;
         String trimString;
         if (null != bodyContent &&
-             null != (bodyContentString = bodyContent.getString()) &&
-             0 < (trimString = bodyContent.getString().trim()).length()) {
+                null != (bodyContentString = bodyContent.getString()) &&
+                0 < (trimString = bodyContent.getString().trim()).length()) {
             if (!(trimString.startsWith("<!--") &&
-                 trimString.endsWith("-->"))) {
+                    trimString.endsWith("-->"))) {
                 verbatim = createVerbatimComponent();
                 verbatim.setValue(bodyContentString);
                 bodyContent.clearBody();
@@ -966,15 +1140,15 @@ public abstract class UIComponentClassicTagBase extends UIComponentTagBase imple
      */
 
     protected UIOutput createVerbatimComponent() {
-	assert(null != getFacesContext());
-	UIOutput verbatim;
-	Application application = getFacesContext().getApplication();
-	verbatim = (UIOutput)
-	    application.createComponent("javax.faces.HtmlOutputText");
-	verbatim.setTransient(true);
-	verbatim.getAttributes().put("escape", Boolean.FALSE);
-	verbatim.setId(getFacesContext().getViewRoot().createUniqueId());
-	return verbatim;
+        assert(null != getFacesContext());
+        UIOutput verbatim;
+        Application application = getFacesContext().getApplication();
+        verbatim = (UIOutput)
+                application.createComponent("javax.faces.HtmlOutputText");
+        verbatim.setTransient(true);
+        verbatim.getAttributes().put("escape", Boolean.FALSE);
+        verbatim.setId(getFacesContext().getViewRoot().createUniqueId());
+        return verbatim;
     }
 
     /**
@@ -985,9 +1159,9 @@ public abstract class UIComponentClassicTagBase extends UIComponentTagBase imple
      */
 
     protected void addVerbatimBeforeComponent(
-          UIComponentClassicTagBase parentTag,
-          UIComponent verbatim,
-          UIComponent component) {
+            UIComponentClassicTagBase parentTag,
+            UIComponent verbatim,
+            UIComponent component) {
 
         UIComponent parent = component.getParent();
         if (null == parent) {
@@ -996,19 +1170,19 @@ public abstract class UIComponentClassicTagBase extends UIComponentTagBase imple
 
         List<UIComponent> children = parent.getChildren();
         // EDGE CASE:
-            // Consider CASE 1 or 2 where the component is provided via a
-            // component binding in session or application scope.
-            // The automatically created UIOuput instances for the template text
-            // will already be present.  Check the JSP_CREATED_COMPONENT_IDS attribute,
-            // if present and the number of created components is the same
-            // as the number of children replace at a -1 offset from the current
-            // value of indexOfComponentInParent, otherwise, call add()
+        // Consider CASE 1 or 2 where the component is provided via a
+        // component binding in session or application scope.
+        // The automatically created UIOuput instances for the template text
+        // will already be present.  Check the JSP_CREATED_COMPONENT_IDS attribute,
+        // if present and the number of created components is the same
+        // as the number of children replace at a -1 offset from the current
+        // value of indexOfComponentInParent, otherwise, call add()
         List createdIds = (List)
-              parent.getAttributes().get(JSP_CREATED_COMPONENT_IDS);
+                parent.getAttributes().get(JSP_CREATED_COMPONENT_IDS);
         int indexOfComponentInParent = children.indexOf(component);
         boolean replace =
-              (indexOfComponentInParent > 0 && createdIds != null &&
-              createdIds.size() == children.size());
+                (indexOfComponentInParent > 0 && createdIds != null &&
+                        createdIds.size() == children.size());
         if (replace) {
             UIComponent oldVerbatim = children.get(indexOfComponentInParent - 1);
             if (oldVerbatim instanceof UIOutput && oldVerbatim.isTransient()) {
@@ -1030,27 +1204,27 @@ public abstract class UIComponentClassicTagBase extends UIComponentTagBase imple
      */
 
     protected void addVerbatimAfterComponent(UIComponentClassicTagBase parentTag,
-					   UIComponent verbatim,
-					   UIComponent component) {
-	int indexOfComponentInParent;
-	UIComponent parent = component.getParent();
-
-	// invert the order of this if and the assignment below.  Since this line is
-	// here, it appears an early return is acceptable/desired if parent is null,
-	// and, if it is null, we should probably check for that before we try to
-	// access it.  2006-03-15 jdl
-	if (null == parent) {
-	    return;
-	}
-	List<UIComponent> children = parent.getChildren();
-	indexOfComponentInParent = children.indexOf(component);
-	if (children.size() - 1 == indexOfComponentInParent) {
-	    children.add(verbatim);
-	}
-	else {
-	    children.add(indexOfComponentInParent + 1, verbatim);
-	}
-	parentTag.addChild(verbatim);
+                                             UIComponent verbatim,
+                                             UIComponent component) {
+        int indexOfComponentInParent;
+        UIComponent parent = component.getParent();
+
+        // invert the order of this if and the assignment below.  Since this line is
+        // here, it appears an early return is acceptable/desired if parent is null,
+        // and, if it is null, we should probably check for that before we try to
+        // access it.  2006-03-15 jdl
+        if (null == parent) {
+            return;
+        }
+        List<UIComponent> children = parent.getChildren();
+        indexOfComponentInParent = children.indexOf(component);
+        if (children.size() - 1 == indexOfComponentInParent) {
+            children.add(verbatim);
+        }
+        else {
+            children.add(indexOfComponentInParent + 1, verbatim);
+        }
+        parentTag.addChild(verbatim);
     }
 
     // ------------------------------------------------------------ Tag Methods
@@ -1087,36 +1261,32 @@ public abstract class UIComponentClassicTagBase extends UIComponentTagBase imple
      * @throws JspException if an error occurs
      */
     public int doStartTag() throws JspException {
-	// make sure that these ivars are reset at the beginning of the
-	// lifecycle for this tag.
-	createdComponents = null;
-	createdFacets = null;
-	UIComponent verbatim = null;
+        // make sure that these ivars are reset at the beginning of the
+        // lifecycle for this tag.
+        createdComponents = null;
+        createdFacets = null;
+        UIComponent verbatim = null;
 
         context = getFacesContext();
-	if (null == context) {
-	    // PENDING(edburns): I18N
-	    throw new JspException("Can't find FacesContext");
-	}
+        if (null == context) {
+            // PENDING(edburns): I18N
+            throw new JspException("Can't find FacesContext");
+        }
 
-        parentTag = getParentUIComponentClassicTagBase(pageContext);
-        Map<Object,Object> contextMap = context.getAttributes();
-        Map<String,UIComponentTagBase> componentIds;
-        if (parentTag == null) {
-            // create the map if we're the top level UIComponentTag
-            //noinspection CollectionWithoutInitialCapacity
-            componentIds = new HashMap<String,UIComponentTagBase>();
-            contextMap.put(GLOBAL_ID_VIEW, componentIds);
+        List list = (List) context.getAttributes().get(COMPONENT_TAG_STACK_ATTR);
+        if (list != null) {
+            parentTag = ((UIComponentClassicTagBase) list.get(list.size() - 1));
         } else {
-            componentIds = TypedCollections.dynamicallyCastMap((Map)
-        	contextMap.get(GLOBAL_ID_VIEW), String.class, UIComponentTagBase.class);
+            parentTag = null;
         }
 
+        Map<String,UIComponentTagBase> componentIds;
+
         // If we're not inside of a facet, and if we are inside of a
         // rendersChildren==true component, stuff any template text or
         // custom tag output into a transient component.
         if (null == getFacetName() &&
-            null != parentTag) {
+                null != parentTag) {
             Tag p = this.getParent();
             // If we're not inside a JSP tag or we're not inside
             // a UIComponentTag flush the buffer
@@ -1138,18 +1308,25 @@ public abstract class UIComponentClassicTagBase extends UIComponentTagBase imple
         // creating one if necessary
         component = findComponent(context);
 
-	// if we have a verbatim component, add it after this component.
-	if (null != verbatim) {
-	    addVerbatimBeforeComponent(parentTag,
-				       verbatim, component);
-	}
+        // if we have a verbatim component, add it after this component.
+        if (null != verbatim) {
+            addVerbatimBeforeComponent(parentTag,
+                    verbatim, component);
+        }
 
         Object tagInstance = null;
         String clientId = null;
+
+        if (component instanceof NamingContainer || (parentTag == null)) {
+            namingContainerChildIds = new HashMap<String, Map<String, UIComponentTagBase>>();
+        }
+
         if (this.id != null) {
-            clientId = component.getClientId(context);
-              UIComponentClassicTagBase temp = (UIComponentClassicTagBase)
-                 componentIds.get(clientId);
+            clientId = getId();
+
+            UIComponentClassicTagBase temp = (UIComponentClassicTagBase)
+                    getParentNamingContainerTag().getNamingContainerChildIds().get(clientId);
+
             // According to the JavaDocs for JspIdConsumer tag handlers
             // that implement this interface are not to be pooled, however
             // due to a bug in Jasper this is not the case.
@@ -1161,11 +1338,11 @@ public abstract class UIComponentClassicTagBase extends UIComponentTagBase imple
             // below)
             //noinspection ObjectEquality
             if (temp == this
-                 && !this.getJspId().equals(temp.getJspId())) {
+                    && !this.getJspId().equals(temp.getJspId())) {
                 tagInstance = this;
             } else if (temp != null
-                         && temp != this
-                         && this.getJspId().equals(temp.getJspId())) {
+                    && temp != this
+                    && this.getJspId().equals(temp.getJspId())) {
                 // new instance, same JSP ID - this is the EVAL_BODY_AGAIN case.
                 tagInstance = temp;
             }
@@ -1183,19 +1360,20 @@ public abstract class UIComponentClassicTagBase extends UIComponentTagBase imple
 
                 // assert component ID uniqueness
                 if (clientId != null) {
-                    if (componentIds.containsKey(clientId)) {
+                    if (getParentNamingContainerTag().getNamingContainerChildIds().containsKey(clientId)) {
                         // PENDING i18n
                         StringWriter writer = new StringWriter(128);
                         printTree(context.getViewRoot(), clientId, writer, 0);
                         String msg = "Duplicate component id: '"
-                                     + clientId
-                                     + "', first used in tag: '"
-                                     + componentIds.get(clientId).getClass().getName()
-                                     + "'\n"
-                                     + writer.toString();
+                                + clientId
+                                + "', first used in tag: '"
+                                + getParentNamingContainerTag().getNamingContainerChildIds().get(clientId).getClass().getName()
+
+                                + "'\n"
+                                + writer.toString();
                         throw new JspException(new IllegalStateException(msg));
                     } else {
-                        componentIds.put(clientId, this);
+                        getParentNamingContainerTag().getNamingContainerChildIds().put(clientId, this);
                     }
                 }
             }
@@ -1211,8 +1389,8 @@ public abstract class UIComponentClassicTagBase extends UIComponentTagBase imple
             }
         }
 
-	// Rendering is deferred until after the tree is completely
-	// created
+        // Rendering is deferred until after the tree is completely
+        // created
 
         // Return the appropriate control value
         pushUIComponentClassicTagBase();
@@ -1220,7 +1398,6 @@ public abstract class UIComponentClassicTagBase extends UIComponentTagBase imple
 
     }
 
-
     /**
      *
      * <p>Perform any processing necessary to handle the content
@@ -1261,29 +1438,36 @@ public abstract class UIComponentClassicTagBase extends UIComponentTagBase imple
      *
      * @throws JspException if an error occurs
      */
-    public int doEndTag() throws JspException {
-
+    public int doEndTag() throws JspException
+    {
         // Remove old children and facets as needed
         popUIComponentClassicTagBase();
         removeOldChildren();
         removeOldFacets();
 
+        //If we are at the end tag of a NamingContainer component, reset the Map of ids
+        // for the NamingContainer tag.
+        if (namingContainerChildIds != null) {
+            namingContainerChildIds = null;
+        }
+
         // Render the children (if needed) and  end of the component
         // associated with this tag
-        try {
-	    UIComponent verbatim;
-	    UIComponentClassicTagBase parentTag =
-		getParentUIComponentClassicTagBase(pageContext);
+        try
+        {
+            UIComponent verbatim;
+            UIComponentClassicTagBase parentTag = _getParentUIComponentClassicTagBase(
+                    context.getAttributes());
 
-	    if (null != (verbatim = this.createVerbatimComponentFromBodyContent())) {
+            if (null != (verbatim = this.createVerbatimComponentFromBodyContent())) {
                 component.getChildren().add(verbatim);
-		if (null != parentTag) {
-		    parentTag.addChild(verbatim);
-		}
-	    }
+                if (null != parentTag) {
+                    parentTag.addChild(verbatim);
+                }
+            }
 
-	    // else, we don't render rendersChildren==true
-	    // components here
+            // else, we don't render rendersChildren==true
+            // components here
 
         } catch (Throwable e) {
             throw new JspException(e);
@@ -1292,10 +1476,7 @@ public abstract class UIComponentClassicTagBase extends UIComponentTagBase imple
             context = null;
         }
 
-        // Return the appropriate control value
-        created = false;
-
-	this.release();
+        this.release();
         return (getDoEndValue());
 
     }
@@ -1311,8 +1492,9 @@ public abstract class UIComponentClassicTagBase extends UIComponentTagBase imple
         this.id = null;
         this.facesJspId = null;
         this.created = false;
-	this.bodyContent = null;
+        this.bodyContent = null;
         this.isNestedInIterator = false;
+        _nextChildIndex = 0;
     }
 
     // -------------------------------------------- Support methods for BodyTag
@@ -1376,7 +1558,7 @@ public abstract class UIComponentClassicTagBase extends UIComponentTagBase imple
      */
     public void doInitBody() throws JspException {
 
-        ; // Default implementation does nothing
+        // Default implementation does nothing
 
     }
 
@@ -1390,47 +1572,46 @@ public abstract class UIComponentClassicTagBase extends UIComponentTagBase imple
      */
     public int doAfterBody() throws JspException {
 
-	UIComponent verbatim;
-	UIComponentClassicTagBase parentTag =
-	    getParentUIComponentClassicTagBase(pageContext);
+        UIComponent verbatim;
+        UIComponentClassicTagBase parentTag = _getParentUIComponentClassicTagBase(context.getAttributes());
 
-	// if we are the root tag, or if we are inside of a
-	// rendersChildren==true component
+        // if we are the root tag, or if we are inside of a
+        // rendersChildren==true component
         //noinspection ObjectEquality
         if (this == parentTag ||
-	    (null != parentTag &&
-	     parentTag.getComponentInstance().getRendersChildren())) {
-	    // stuff the template text or custom tag output into a
-	    // transient component
-	    if (null != (verbatim = this.createVerbatimComponentFromBodyContent())) {
-            // EDGE CASE:
-            // Consider CASE 4 where the component is provided via a
-            // component binding in session or application scope.
-            // The verbatim instance will already be present.  If we
-            // add again, the user will get duplicate component ID
-            // errors.  Check the JSP_CREATED_COMPONENT_IDS attribute.  If it is not present, we
-            // need to add the new verbatim child.  If it is present, assume it is a
-            // List and check its size.  If the size of the list is equal to the
-            // number of children currently in the component, replace the replace
-            // the child of this component at the index derived as follows.  If
-            // indexOfChildInParent is 0, replace the child at the 0th index with
-            // the new verbatim child.  Otherwise, replace the child at the
-            // (indexOfChildInParent - 1)th index with the new verbatim child.
-            List createdIds = (List)
-                  component.getAttributes().get(JSP_CREATED_COMPONENT_IDS);
-            if (createdIds != null) {
-                int listIdx = component.getChildCount();
-                if (createdIds.size() == listIdx) {
-                    component.getChildren().set((listIdx - 1), verbatim);
+                (null != parentTag &&
+                        parentTag.getComponentInstance().getRendersChildren())) {
+            // stuff the template text or custom tag output into a
+            // transient component
+            if (null != (verbatim = this.createVerbatimComponentFromBodyContent())) {
+                // EDGE CASE:
+                // Consider CASE 4 where the component is provided via a
+                // component binding in session or application scope.
+                // The verbatim instance will already be present.  If we
+                // add again, the user will get duplicate component ID
+                // errors.  Check the JSP_CREATED_COMPONENT_IDS attribute.  If it is not present, we
+                // need to add the new verbatim child.  If it is present, assume it is a
+                // List and check its size.  If the size of the list is equal to the
+                // number of children currently in the component, replace the replace
+                // the child of this component at the index derived as follows.  If
+                // indexOfChildInParent is 0, replace the child at the 0th index with
+                // the new verbatim child.  Otherwise, replace the child at the
+                // (indexOfChildInParent - 1)th index with the new verbatim child.
+                List createdIds = (List)
+                        component.getAttributes().get(JSP_CREATED_COMPONENT_IDS);
+                if (createdIds != null) {
+                    int listIdx = component.getChildCount();
+                    if (createdIds.size() == listIdx) {
+                        component.getChildren().set((listIdx - 1), verbatim);
+                    } else {
+                        component.getChildren().add(verbatim);
+                    }
                 } else {
                     component.getChildren().add(verbatim);
                 }
-            } else {
-                component.getChildren().add(verbatim);
+                parentTag.addChild(verbatim);
             }
-            parentTag.addChild(verbatim);
         }
-	}
 
         return (getDoAfterBodyValue());
 
@@ -1452,9 +1633,9 @@ public abstract class UIComponentClassicTagBase extends UIComponentTagBase imple
      * UIViewRoot#UNIQUE_ID_PREFIX}.
      */
     public void setId(String id) {
-	if (null != id && id.startsWith(UIViewRoot.UNIQUE_ID_PREFIX)) {
-	    throw new IllegalArgumentException();
-	}
+        if (null != id && id.startsWith(UIViewRoot.UNIQUE_ID_PREFIX)) {
+            throw new IllegalArgumentException();
+        }
 
         this.id = id;
 
@@ -1465,7 +1646,7 @@ public abstract class UIComponentClassicTagBase extends UIComponentTagBase imple
      */
     protected String getId() {
 
-	return (id);
+        return (id);
 
     }
 
@@ -1515,7 +1696,7 @@ public abstract class UIComponentClassicTagBase extends UIComponentTagBase imple
             if (parentTag.isNestedInIterator) {
                 return true;
             }
-             List childComponents = parentTag.createdComponents;
+            List childComponents = parentTag.createdComponents;
             // PENDING: Need to analyze the impact of this look up on pages
             // with several levels of nesting.
             if (childComponents != null) {
@@ -1536,14 +1717,13 @@ public abstract class UIComponentClassicTagBase extends UIComponentTagBase imple
      * @return String <code>id</code> with a counter appended to it.
      */
     private String generateIncrementedId (String componentId) {
-        Map<Object,Object> contextMap = getFacesContext().getAttributes();
-        Integer serialNum = (Integer) contextMap.get(componentId);
+        Integer serialNum = (Integer) context.getAttributes().get(componentId);
         if (null == serialNum) {
             serialNum = 1;
         } else {
             serialNum = serialNum.intValue() + 1;
         }
-        contextMap.put(componentId, serialNum);
+        context.getAttributes().put(componentId, serialNum);
         componentId = componentId + UNIQUE_ID_PREFIX + serialNum.intValue();
         return componentId;
     }
@@ -1561,36 +1741,36 @@ public abstract class UIComponentClassicTagBase extends UIComponentTagBase imple
      * <p>Create the component identifier to be used for this component.</p>
      */
     private String createId(FacesContext context)
-    throws JspException {
+            throws JspException {
 
-	if (this.id == null) {
-	    return getFacesJspId();
-	} else {
+        if (this.id == null) {
+            return getFacesJspId();
+        } else {
             // if this tag happens to be nested within <c:forEach>, jspId
             // will be the same for each iteration. So it is
             // transformed into a unique "id" by appending a counter which gets
             // stored in request scope with jspId as the key for use during next
             // iteration.
-        if (isDuplicateId(this.id)) {
-            if (!isSpecifiedIdUnique(this.id)) {
-                if (isNestedInIterator) {
-                    this.id = generateIncrementedId(this.id);
-                } else {
-                    StringWriter writer = new StringWriter(128);
-                    printTree(context.getViewRoot(), this.id, writer, 0);
-                    String msg = "Component ID '"
-                                 + this.id
-                                 + "' has already been used"
-                                 + " in the view.\n"
-                                 + "See below for the view up to the point of"
-                                 + " the detected error.\n"
-                                 + writer.toString();
-                    throw new JspException(msg);
+            if (isDuplicateId(this.id)) {
+                if (!isSpecifiedIdUnique(this.id)) {
+                    if (isNestedInIterator) {
+                        this.id = generateIncrementedId(this.id);
+                    } else {
+                        StringWriter writer = new StringWriter(128);
+                        printTree(context.getViewRoot(), this.id, writer, 0);
+                        String msg = "Component ID '"
+                                + this.id
+                                + "' has already been used"
+                                + " in the view.\n"
+                                + "See below for the view up to the point of"
+                                + " the detected error.\n"
+                                + writer.toString();
+                        throw new JspException(msg);
+                    }
                 }
             }
+            return (this.id);
         }
-        return (this.id);
-    }
 
     }
 
@@ -1666,18 +1846,19 @@ public abstract class UIComponentClassicTagBase extends UIComponentTagBase imple
         // to check the ID after the tag has been used
         this.jspId = null;
 
-        Map<Object,Object> contextMap =
-             getFacesContext().getAttributes();
-        AtomicInteger aInt = (AtomicInteger) contextMap.get(JAVAX_FACES_PAGECONTEXT_COUNTER);
-        if (aInt == null) {
-            aInt = new AtomicInteger();
-            contextMap.put(JAVAX_FACES_PAGECONTEXT_COUNTER, aInt);
-        }
-
         Integer pcId = (Integer)
-             pageContext.getAttribute(JAVAX_FACES_PAGECONTEXT_MARKER,
-                                      PageContext.PAGE_SCOPE);
+                pageContext.getAttribute(JAVAX_FACES_PAGECONTEXT_MARKER,
+                        PageContext.PAGE_SCOPE);
         if (pcId == null) {
+            if (null == context) {
+                context = FacesContext.getCurrentInstance();
+            }
+            AtomicInteger aInt = (AtomicInteger) context.getAttributes().get(JAVAX_FACES_PAGECONTEXT_COUNTER);
+            if (aInt == null) {
+                aInt = new AtomicInteger();
+                context.getAttributes().put(JAVAX_FACES_PAGECONTEXT_COUNTER, aInt);
+            }
+
             pcId = aInt.incrementAndGet();
             pageContext.setAttribute(JAVAX_FACES_PAGECONTEXT_MARKER, pcId);
         }
@@ -1712,33 +1893,40 @@ public abstract class UIComponentClassicTagBase extends UIComponentTagBase imple
      * this tag instance on this request.
      */
 
-    private void updatePreviousJspIdAndIteratorStatus(String id) {
-        Set<String> previousJspIdSet;
+    private void updatePreviousJspIdAndIteratorStatus(String id)
+    {
+        Set<String> previousJspIdSet = TypedCollections.dynamicallyCastSet((Set)
+                pageContext.getAttribute(PREVIOUS_JSP_ID_SET, PageContext.PAGE_SCOPE), String.class);
+
+        if (null == previousJspIdSet)
+        {
+            previousJspIdSet = new HashSet<String>();
 
-        if (null == (previousJspIdSet = TypedCollections.dynamicallyCastSet((Set)
-            pageContext.getAttribute(PREVIOUS_JSP_ID_SET, PageContext.PAGE_SCOPE), String.class))) {
             //noinspection CollectionWithoutInitialCapacity
-            pageContext.setAttribute(PREVIOUS_JSP_ID_SET,
-                                     previousJspIdSet = new HashSet<String>(),
-                                     PageContext.PAGE_SCOPE);
+            pageContext.setAttribute(PREVIOUS_JSP_ID_SET, previousJspIdSet, PageContext.PAGE_SCOPE);
         }
 
-        // detect the iterator case
-        if (previousJspIdSet.contains(id)) {
-            if (log.isLoggable(Level.FINEST)) {
-                log.log(Level.FINEST, "Id " + id +
-                        " is nested within an iterating tag.");
+        // detect the iterator case, since add will return true if the collection already
+        // contains the id
+        if (previousJspIdSet.add(id))
+        {
+            // id wasn't in Set, so we aren't nested yet
+            isNestedInIterator = false;
+        }
+        else
+        {
+            // the Set didn't change, so we are nested
+            if (log.isLoggable(Level.FINEST))
+            {
+                log.log(Level.FINEST, "Id " + id + " is nested within an iterating tag.");
             }
+
             isNestedInIterator = true;
-        } else {
-            isNestedInIterator = false;
-            previousJspIdSet.add(id);
         }
     }
 
-
     public String getJspId() {
-	return jspId;
+        return jspId;
     }
 
     // ------------------------------------------------------- Abstract methods
@@ -1799,7 +1987,7 @@ public abstract class UIComponentClassicTagBase extends UIComponentTagBase imple
      */
 
     protected abstract UIComponent createComponent(FacesContext context,
-						   String newId) throws JspException;
+                                                   String newId) throws JspException;
 
     /**
      * <p>Return <code>true</code> if this component has a
@@ -1840,10 +2028,13 @@ public abstract class UIComponentClassicTagBase extends UIComponentTagBase imple
 
     }
 
+    private Map getNamingContainerChildIds() {
+        return (this.namingContainerChildIds);
+    }
 
     protected FacesContext getFacesContext() {
 
-	if (context == null) {
+        if (context == null) {
             if (null == (context = (FacesContext)
                     pageContext.getAttribute(CURRENT_FACES_CONTEXT))) {
                 context = FacesContext.getCurrentInstance();
@@ -1856,9 +2047,9 @@ public abstract class UIComponentClassicTagBase extends UIComponentTagBase imple
                 // UIComponentTags in the same page
                 pageContext.setAttribute(CURRENT_FACES_CONTEXT, context);
             }
-	}
+        }
 
-	return (context);
+        return (context);
 
     }
 
@@ -1883,11 +2074,11 @@ public abstract class UIComponentClassicTagBase extends UIComponentTagBase imple
     private static FacesContext getFacesContext(PageContext pageContext) {
 
         FacesContext context = (FacesContext)
-             pageContext.getAttribute(CURRENT_FACES_CONTEXT);
+                pageContext.getAttribute(CURRENT_FACES_CONTEXT);
         if (context == null) {
             context = FacesContext.getCurrentInstance();
             if (context == null) {
-                 throw new RuntimeException("Cannot find FacesContext");
+                throw new RuntimeException("Cannot find FacesContext");
             } else {
                 pageContext.setAttribute(CURRENT_FACES_CONTEXT, context);
             }
@@ -1907,7 +2098,7 @@ public abstract class UIComponentClassicTagBase extends UIComponentTagBase imple
 
         if (duplicateId.equals(root.getId())) {
             indentPrintln(out, "+id: " + root.getId() + "  <===============",
-                          curDepth);
+                    curDepth);
         } else {
             indentPrintln(out, "+id: " + root.getId(), curDepth);
         }
diff --git a/jsf-api/src/main/java/javax/faces/webapp/UIComponentELTag.java b/jsf-api/src/main/java/javax/faces/webapp/UIComponentELTag.java
index ce3ab79..0be04d4 100644
--- a/jsf-api/src/main/java/javax/faces/webapp/UIComponentELTag.java
+++ b/jsf-api/src/main/java/javax/faces/webapp/UIComponentELTag.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-api/src/main/java/javax/faces/webapp/UIComponentTag.java b/jsf-api/src/main/java/javax/faces/webapp/UIComponentTag.java
index e02d64e..49b59e8 100644
--- a/jsf-api/src/main/java/javax/faces/webapp/UIComponentTag.java
+++ b/jsf-api/src/main/java/javax/faces/webapp/UIComponentTag.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-api/src/main/java/javax/faces/webapp/UIComponentTagBase.java b/jsf-api/src/main/java/javax/faces/webapp/UIComponentTagBase.java
index 0f98c2f..7a376ca 100644
--- a/jsf-api/src/main/java/javax/faces/webapp/UIComponentTagBase.java
+++ b/jsf-api/src/main/java/javax/faces/webapp/UIComponentTagBase.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -54,7 +58,7 @@ import java.util.logging.Logger;
 
 public abstract class UIComponentTagBase extends Object implements JspTag {
     
-    protected static Logger log = Logger.getLogger("javax.faces.webapp", 
+    protected static final Logger log = Logger.getLogger("javax.faces.webapp", 
             "javax.faces.LogStrings");
 
     /**
diff --git a/jsf-api/src/main/java/javax/faces/webapp/ValidatorELTag.java b/jsf-api/src/main/java/javax/faces/webapp/ValidatorELTag.java
index 9e3fc7f..7804aa7 100644
--- a/jsf-api/src/main/java/javax/faces/webapp/ValidatorELTag.java
+++ b/jsf-api/src/main/java/javax/faces/webapp/ValidatorELTag.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-api/src/main/java/javax/faces/webapp/ValidatorTag.java b/jsf-api/src/main/java/javax/faces/webapp/ValidatorTag.java
index 7048c17..8ec6311 100644
--- a/jsf-api/src/main/java/javax/faces/webapp/ValidatorTag.java
+++ b/jsf-api/src/main/java/javax/faces/webapp/ValidatorTag.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-api/src/main/java/javax/faces/webapp/package.html b/jsf-api/src/main/java/javax/faces/webapp/package.html
index 51d7205..168108c 100644
--- a/jsf-api/src/main/java/javax/faces/webapp/package.html
+++ b/jsf-api/src/main/java/javax/faces/webapp/package.html
@@ -1,13 +1,55 @@
 <html>
 <head>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
 <title>Package Description for "javax.faces.webapp"</title>
 </head>
 <body bgcolor="white">
 
-<p><span class="changed_modified_2_0">Classes</span> required for
-integration of JavaServer Faces into web applications, including a
-standard servlet, <span class="changed_deleted_2_0">base classes for JSP
-custom component tags, and concrete tag implementations for core
-tags</span>.</p>
+<p><span class="changed_modified_2_0 changed_modified_2_0_rev_a
+changed_modified_2_1 changed_modified_2_2">Classes</span> required for integration of
+JavaServer Faces into web applications, including a standard servlet,
+<span class="changed_deleted_2_0">base classes for JSP custom component
+tags, and concrete tag implementations for core tags</span>.</p>
 </body>
 </html>
diff --git a/jsf-api/src/main/resources/doc-files/speclicense.html b/jsf-api/src/main/resources/doc-files/speclicense.html
new file mode 100644
index 0000000..68fd3e5
--- /dev/null
+++ b/jsf-api/src/main/resources/doc-files/speclicense.html
@@ -0,0 +1,215 @@
+<html>
+<head>
+<title>Specification License</title>
+</head>
+<body>
+Specification: JSR-344 JavaServer Faces ("Specification")
+<br/>
+Version: 2.2
+<br/>
+Status: Public Review
+<br/>
+Release: @build.number@
+<br/>
+
+<br/>
+Copyright © <Year> Oracle America, Inc.
+<br/>
+500 Oracle Parkway
+<br/>
+Redwood City, California 94065, U.S.A.
+<br/>
+<br/>
+All rights reserved.
+<br/>
+
+<p>
+NOTICE
+<br/>
+The Specification is protected by copyright and the information
+described therein may be protected by one or more U.S. patents, foreign
+patents, or pending applications. Except as provided under the
+following license, no part of the Specification may be reproduced in
+any form by any means without the prior written authorization of Oracle
+America, Inc. ("Oracle") and its licensors, if any. Any use of the
+Specification and the information described therein will be governed by
+the terms and conditions of this Agreement.
+</p>
+<p>
+Subject to the terms and conditions of this license, including your
+compliance with Paragraphs 1 and 2 below, Oracle hereby grants you a
+fully-paid, non-exclusive, non-transferable, limited license (without
+the right to sublicense) under Oracle's intellectual property rights
+to:
+<br/>
+1.Review the Specification for the purposes of evaluation. This
+includes: (i) developing implementations of the Specification for your
+internal, non-commercial use; (ii) discussing the Specification with
+any third party; and (iii) excerpting brief portions of the
+Specification in oral or written communications which discuss the
+Specification provided that such excerpts do not in the aggregate
+constitute a significant portion of the Technology.
+<br/>
+2.Distribute implementations of the Specification to third parties for
+their testing and evaluation use, provided that any such
+implementation:
+<br/>
+(i) does not modify, subset, superset or otherwise extend the Licensor
+Name Space, or include any public or protected packages, classes, Java
+interfaces, fields or methods within the Licensor Name Space other than
+those required/authorized by the Specification or Specifications being
+implemented;
+<br/>
+(ii) is clearly and prominently marked with the word "UNTESTED" or
+"EARLY ACCESS" or "INCOMPATIBLE" or "UNSTABLE" or "BETA" in any list of
+available builds and in proximity to every link initiating its
+download, where the list or link is under Licensee's control; and
+<br/>
+(iii) includes the following notice:
+<br/>
+"This is an implementation of an early-draft specification developed
+under the Java Community Process (JCP) and is made available for
+testing and evaluation purposes only. The code is not compatible with
+any specification of the JCP."
+</p>
+<p>
+The grant set forth above concerning your distribution of
+implementations of the specification is contingent upon your agreement
+to terminate development and distribution of your "early draft"
+implementation as soon as feasible following final completion of the
+specification. If you fail to do so, the foregoing grant shall be
+considered null and void.
+</p>
+<p>
+No provision of this Agreement shall be understood to restrict your
+ability to make and distribute to third parties applications written to
+the Specification.
+</p>
+<p>
+Other than this limited license, you acquire no right, title or
+interest in or to the Specification or any other Oracle intellectual
+property, and the Specification may only be used in accordance with the
+license terms set forth herein. This license will expire on the earlier
+of: (a) two (2) years from the date of Release listed above; (b) the
+date on which the final version of the Specification is publicly
+released; or (c) the date on which the Java Specification Request (JSR)
+to which the Specification corresponds is withdrawn. In addition, this
+license will terminate immediately without notice from Oracle if you
+fail to comply with any provision of this license. Upon termination,
+you must cease use of or destroy the Specification.
+</p>
+<p>
+"Licensor Name Space" means the public class or interface declarations
+whose names begin with "java", "javax", "com.oracle" or their
+equivalents in any subsequent naming convention adopted by Oracle
+through the Java Community Process, or any recognized successors or
+replacements thereof
+</p>
+<p>
+TRADEMARKS
+<br/>
+No right, title, or interest in or to any trademarks, service marks, or
+trade names of Oracle or Oracle's licensors is granted hereunder.
+Oracle, the Oracle logo, Java are trademarks or registered trademarks
+of Oracle USA, Inc. in the U.S. and other countries.
+</p>
+<p>
+DISCLAIMER OF WARRANTIES
+<br/>
+THE SPECIFICATION IS PROVIDED "AS IS" AND IS EXPERIMENTAL AND MAY
+CONTAIN DEFECTS OR DEFICIENCIES WHICH CANNOT OR WILL NOT BE CORRECTED
+BY ORACLE. ORACLE MAKES NO REPRESENTATIONS OR WARRANTIES, EITHER
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO, WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT
+THAT THE CONTENTS OF THE SPECIFICATION ARE
+</p>
+<p>
+SUITABLE FOR ANY PURPOSE OR THAT ANY PRACTICE OR IMPLEMENTATION OF SUCH
+CONTENTS WILL NOT INFRINGE ANY THIRD PARTY PATENTS, COPYRIGHTS, TRADE
+SECRETS OR OTHER RIGHTS. This document does not represent any
+commitment to release or implement any portion of the Specification in
+any product.
+</p>
+<p>
+THE SPECIFICATION COULD INCLUDE TECHNICAL INACCURACIES OR TYPOGRAPHICAL
+ERRORS. CHANGES ARE PERIODICALLY ADDED TO THE INFORMATION THEREIN;
+THESE CHANGES WILL BE INCORPORATED INTO NEW VERSIONS OF THE
+SPECIFICATION, IF ANY. ORACLE MAY MAKE IMPROVEMENTS AND/OR CHANGES TO
+THE PRODUCT(S) AND/OR THE PROGRAM(S) DESCRIBED IN THE SPECIFICATION AT
+ANY TIME. Any use of such changes in the Specification will be governed
+by the then-current license for the applicable version of the
+Specification.
+</p>
+<p>
+LIMITATION OF LIABILITY
+<br/>
+TO THE EXTENT NOT PROHIBITED BY LAW, IN NO EVENT WILL ORACLE OR ITS
+LICENSORS BE LIABLE FOR ANY DAMAGES, INCLUDING WITHOUT LIMITATION, LOST
+REVENUE, PROFITS OR DATA, OR FOR SPECIAL, INDIRECT, CONSEQUENTIAL,
+INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE
+THEORY OF LIABILITY, ARISING OUT OF OR RELATED TO ANY FURNISHING,
+PRACTICING, MODIFYING OR ANY USE OF THE SPECIFICATION, EVEN IF ORACLE
+AND/OR ITS LICENSORS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+</p>
+<p>
+You will hold Oracle (and its licensors) harmless from any claims based
+on your use of the Specification for any purposes other than the
+limited right of evaluation as described above, and from any claims
+that later versions or releases of any Specification furnished to you
+are incompatible with the Specification provided to you under this
+license.
+</p>
+<p>
+RESTRICTED RIGHTS LEGEND
+<br/>
+If this Software is being acquired by or on behalf of the U.S.
+Government or by a U.S. Government prime contractor or subcontractor
+(at any tier), then the Government's rights in the Software and
+accompanying documentation shall be only as set forth in this license;
+this is in accordance with 48 C.F.R. 227.7201 through 227.7202-4 (for
+Department of Defense (DoD) acquisitions) and with 48 C.F.R. 2.101 and
+12.212 (for non-DoD acquisitions).
+</p>
+<p>
+REPORT
+<br/>
+You may wish to report any ambiguities, inconsistencies or inaccuracies
+you may find in connection with your evaluation of the Specification
+("Feedback"). To the extent that you provide Oracle with any Feedback,
+you hereby: (i) agree that such Feedback is provided on a
+non-proprietary and non-confidential basis, and (ii) grant Oracle a
+perpetual, non-exclusive, worldwide, fully paid-up, irrevocable
+license, with the right to sublicense through multiple levels of
+sublicensees, to incorporate, disclose, and use without limitation the
+Feedback for any purpose related to the Specification and future
+versions, implementations, and test suites thereof.
+</p>
+<p>
+GENERAL TERMS
+<br/>
+Any action related to this Agreement will be governed by California law
+and controlling U.S. federal law. The U.N. Convention for the
+International Sale of Goods and the choice of law rules of any
+jurisdiction will not apply.
+</p>
+<p>
+The Specification is subject to U.S. export control laws and may be
+subject to export or import regulations in other countries. Licensee
+agrees to comply strictly with all such laws and regulations and
+acknowledges that it has the responsibility to obtain such licenses to
+export, re-export or import as may be required after delivery to
+Licensee.
+</p>
+<p>
+This Agreement is the parties' entire agreement relating to its subject
+matter. It supersedes all prior or contemporaneous oral or written
+communications, proposals, conditions, representations and warranties
+and prevails over any conflicting or additional terms of any quote,
+order, acknowledgment, or other communication between the parties
+relating to its subject matter during the term of this Agreement. No
+modification to this Agreement will be binding, unless in writing and
+signed by an authorized representative of each party.
+</p>
+</body>
+</html>
diff --git a/jsf-api/src/main/resources/jsf-api.css b/jsf-api/src/main/resources/jsf-api.css
index b0f23f9..6e34ce0 100644
--- a/jsf-api/src/main/resources/jsf-api.css
+++ b/jsf-api/src/main/resources/jsf-api.css
@@ -1,3 +1,400 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+body { 
+   color: Black;
+   background-color: White;
+   font-family: Arial, sans-serif;
+   font-size: 10pt;
+   background: url(expert-draft-bg.png); 
+}
+
+/* Horizontal rules */
+hr {
+   color: black;
+}
+/* Document title */
+h1 {
+   font-size: 18pt;
+   letter-spacing: 2px;
+   border-bottom: 1px #ccc solid;
+   padding-top: 5px;
+   padding-bottom: 5px;
+}
+/* Main section headers */
+h2 {
+   font-size: 14pt;
+   letter-spacing: 1px;
+}
+/* Sub-section headers */
+h3, h3 a, h3 span {
+   font-size: 12pt;
+   font-weight: bold;
+   color: black;
+}
+/* Table displaying the properties of the schema components or the
+   schema document itself */
+table.properties th, table.properties th a {
+   color: black;
+   background-color: #F99; /* Pink */
+}
+table.properties td {
+   background-color: #eee; /* Gray */
+}
+
+
+/******** Table of Contents Section ********/
+
+/* Controls for switching between printing and viewing modes */
+div#printerControls {
+   color: #963; /* Orange-brown */
+}
+/* Controls that can collapse or expand all XML Instance
+   Representation and Schema Component Representation boxes */
+div#globalControls {
+   border: 2px solid #999;
+}
+
+
+/******** Schema Document Properties Section ********/
+
+/* Table displaying the namespaces declared in the schema */
+table.namespaces th {
+   background-color: #ccc;
+}
+table.namespaces td {
+   background-color: #eee;
+}
+/* Target namespace of the schema */
+span.targetNS {
+   color: #06C;
+   font-weight: bold;
+}
+
+
+/******** Schema Components' Sections ********/
+
+/* Name of schema component */
+.name {
+   color: #F93; /* Orange */
+}
+
+/* Hierarchy table */
+table.hierarchy {
+   border: 2px solid #999; /* Gray */
+}
+
+/* XML Instance Representation table */
+div.sample div.contents {
+   border: 2px dashed black;
+}
+
+/* Schema Component Representation table */
+div.schemaComponent div.contents {
+   border: 2px black solid;
+}
+
+
+/******** Glossary Section ********/
+
+/* Glossary Terms */
+.glossaryTerm {
+   color: #036; /* Blue */
+}
+
+
+/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
+/* Printer-version styles */
+
+ at media print {
+
+/* Ensures that controls are hidden when printing */
+div#printerControls {
+   visibility: hidden;
+}
+div#globalControls {
+   visibility: hidden;
+}
+#legend {
+   display: none;
+}
+#legendTOC {
+   display: none;
+}
+#glossary {
+   display: none;
+}
+#glossaryTOC {
+   display: none;
+}
+
+}
+
+/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
+/* Base styles */
+
+/******** General ********/
+
+/* Unordered lists */
+ul {
+   margin-left: 1.5em;
+   margin-bottom: 0em;
+}
+/* Tables */
+table {
+   margin-top: 10px;
+   margin-bottom: 10px;
+   margin-left: 2px;
+   margin-right: 2px;
+}
+table th, table td {
+   font-size: 10pt;
+   vertical-align: top;
+   padding-top: 3px;
+   padding-bottom: 3px;
+   padding-left: 10px;
+   padding-right: 10px;
+}
+table th {
+   font-weight: bold;
+   text-align: left;
+}
+/* Table displaying the properties of the schema components or the
+   schema document itself */
+table.properties {
+   width: 90%;
+}
+table.properties th {
+   width: 30%;
+}
+/* Boxes that can make its content appear and disappear*/
+div.box {
+   margin: 1em;
+}
+   /* Box caption */
+div.box span.caption {
+   font-weight: bold;
+}
+   /* Button to open and close the box */
+div.box input.control {
+   width: 1.4em;
+   height: 1.4em;
+   text-align: center;
+   vertical-align: middle;
+   font-size: 11pt;
+}
+   /* Box contents */
+div.box div.contents {
+   margin-top: 3px;
+}
+
+
+/******** Table of Contents Section ********/
+
+/* Controls for switching between printing and viewing modes */
+div#printerControls {
+   white-space: nowrap;
+   font-weight: bold;
+   padding: 5px;
+   margin: 5px;
+}
+/* Controls that can collapse or expand all XML Instance
+   Representation and Schema Component Representation boxes */
+div#globalControls {
+   padding: 10px;
+   margin: 5px;
+}
+
+
+/******** Schema Document Properties Section ********/
+
+/* Table displaying the namespaces declared in the schema */
+table.namespaces th {
+}
+table.namespaces td {
+}
+/* Target namespace of the schema */
+span.targetNS {
+}
+
+
+/******** Schema Components' Sections ********/
+
+/* Name of schema component */
+.name {
+}
+
+/* Hierarchy table */
+table.hierarchy {
+   width: 90%;
+}
+table.hierarchy th {
+   font-weight: normal;
+   font-style: italic;
+   width: 20%;
+}
+table.hierarchy th, table.hierarchy td {
+   padding: 5px;
+}
+
+/* XML Instance Representation table */
+div.sample {
+   width: 90%;
+}
+div.sample div.contents {
+   padding: 5px;
+   font-family: Courier New, sans-serif;
+   font-size: 10pt;
+}
+   /* Normal elements and attributes */
+div.sample div.contents, div.sample div.contents a {
+   color: black;
+}
+   /* Group Headers */
+div.sample div.contents .group, div.sample div.contents .group a {
+   color: #999; /* Light gray */
+}
+   /* Type Information */
+div.sample div.contents .type, div.sample div.contents .type a {
+   color: #999; /* Light gray */
+}
+   /* Occurrence Information */
+div.sample div.contents .occurs, div.sample div.contents .occurs a {
+   color: #999; /* Light gray */
+}
+   /* Fixed values */
+div.sample div.contents .fixed {
+   color: #063; /* Green */
+   font-weight: bold;
+}
+   /* Simple type constraints */
+div.sample div.contents .constraint, div.sample div.contents .constraint a {
+   color: #999; /* Light gray */
+}
+   /* Elements and attributes inherited from base type */
+div.sample div.contents .inherited, div.sample div.contents .inherited a {
+   color: #666; /* Dark gray */
+}
+   /* Elements and attributes added to or changed from base type */
+div.sample div.contents .newFields {
+   font-weight: bold;
+}
+   /* Other type of information */
+div.sample div.contents .other, div.sample div.contents .other a {
+   color: #369; /* Blue */
+   font-style: italic;
+}
+   /* Link to open up window displaying documentation */
+div.sample div.contents a.documentation {
+   text-decoration: none;
+   padding-left: 3px;
+   padding-right: 3px;
+   padding-top: 0px;
+   padding-bottom: 0px;
+   font-weight: bold;
+   font-size: 11pt;
+   background-color: #FFD;
+   color: #069;
+}
+   /* Invert colors when hovering over link to open up window 
+      displaying documentation */
+div.sample div.contents a.documentation:hover {
+   color: #FFD;
+   background-color: #069;
+}
+
+/* Schema Component Representation table */
+div.schemaComponent {
+   width: 90%;
+}
+div.schemaComponent div.contents {
+   font-family: Courier New, sans-serif;
+   font-size: 10pt;
+   padding: 5px;
+}
+   /* Syntax characters */
+div.schemaComponent div.contents {
+   color: #00f; /* blue */
+}
+   /* Element and attribute tags */
+div.schemaComponent div.contents .scTag {
+   color: #933; /* maroon */
+}
+   /* Element and attribute content */
+div.schemaComponent div.contents .scContent, div.schemaComponent div.contents .scContent a {
+   color: black;
+   font-weight: bold;
+}
+   /* Comments */
+div.schemaComponent div.contents .comment {
+   color: #999; /* Light gray */
+}
+
+/******** Legend Section ********/
+
+div#legend table, div#legend div {
+   margin-bottom: 3px;
+}
+div#legend div.hint {
+   color: #999; /* Light gray */
+   width: 90%;
+   margin-left: 1em;
+   margin-bottom: 2em;
+}
+
+
+/******** Glossary Section ********/
+
+/* Glossary Terms */
+.glossaryTerm {
+   font-weight: bold;
+}
+
+
+/******** Footer ********/
+
+.footer {
+   font-size: 8pt;
+}
+
+
 /* Change bars from http://www.geocities.com/hentaihelper/2atimlin.htm */
 
 /* put a red "change" bar in the left margin			*/
@@ -20,7 +417,6 @@
                  border-left-width:thin; border-right:none;
                  border-top:none; border-bottom:none; border-color:red;
                  text-decoration: line-through; }
-*/
 
    .changed_added_2_0_rev_a { cursor: url(changed_added_2_0_rev_a_cursor.cur), auto;
                  background: url(changed_added_2_0_rev_a.png); 
@@ -41,6 +437,66 @@
                  border-top:none; border-bottom:none; border-color:red;
                  text-decoration: line-through; }
 
+   .changed_added_2_1 { cursor: url(changed_added_2_1_cursor.cur), auto;
+                 background: url(changed_added_2_1.png); 
+                 padding-left:0.2em; border-left:solid;
+                 border-left-width:thin; border-right:none;
+                 border-top:none; border-bottom:none; border-color:green }
+
+   .changed_modified_2_1 { cursor: url(changed_modified_2_1_cursor.cur), auto;
+                 background: url(changed_modified_2_1.png); 
+                 padding-left:0.2em; border-left:solid;
+                 border-left-width:thin; border-right:none;
+                 border-top:none; border-bottom:none; border-color:orange }
+
+   .changed_deleted_2_1 { cursor: url(changed_deleted_2_1_cursor.cur), auto;
+                 background: url(changed_deleted_2_1.png); 
+                 padding-left:0.2em; border-left:solid;
+                 border-left-width:thin; border-right:none;
+                 border-top:none; border-bottom:none; border-color:red;
+                 text-decoration: line-through; }
+
+   .changed_added_2_2 { cursor: url(changed_added_2_2_cursor.cur), auto;
+                 background: url(changed_added_2_2.png); 
+                 padding-left:0.2em; border-left:solid;
+                 border-left-width:thin; border-right:none;
+                 border-top:none; border-bottom:none; border-color:green }
+
+   .changed_modified_2_2 { cursor: url(changed_modified_2_2_cursor.cur), auto;
+                 background: url(changed_modified_2_2.png); 
+                 padding-left:0.2em; border-left:solid;
+                 border-left-width:thin; border-right:none;
+                 border-top:none; border-bottom:none; border-color:orange }
+
+   .changed_deleted_2_2 { cursor: url(changed_deleted_2_2_cursor.cur), auto;
+                 background: url(changed_deleted_2_2.png); 
+                 padding-left:0.2em; border-left:solid;
+                 border-left-width:thin; border-right:none;
+                 border-top:none; border-bottom:none; border-color:red;
+                 text-decoration: line-through; }
+*/
+
+
+   .changed_added_2_3 { cursor: url(changed_added_2_3_cursor.cur), auto;
+                 background: url(changed_added_2_3.png); 
+                 padding-left:0.2em; border-left:solid;
+                 border-left-width:thin; border-right:none;
+                 border-top:none; border-bottom:none; border-color:green }
+
+   .changed_modified_2_3 { cursor: url(changed_modified_2_3_cursor.cur), auto;
+                 background: url(changed_modified_2_3.png); 
+                 padding-left:0.2em; border-left:solid;
+                 border-left-width:thin; border-right:none;
+                 border-top:none; border-bottom:none; border-color:orange }
+
+   .changed_deleted_2_3 { cursor: url(changed_deleted_2_3_cursor.cur), auto;
+                 background: url(changed_deleted_2_3.png); 
+                 padding-left:0.2em; border-left:solid;
+                 border-left-width:thin; border-right:none;
+                 border-top:none; border-bottom:none; border-color:red;
+                 text-decoration: line-through; }
+
+
 
 .javadocSection { font-size: large; }
 
@@ -76,3 +532,21 @@ div.syntax a
 	color:black;
 	text-decoration:underline;
 }
+
+/*
+
+a[href^="#type_faces-config-protected-viewsType"], a[href^="#type_faces-config-flow-definitionType"], a[href^="#type_faces-config-flow-definition-switchType"], a[href^="#type_faces-config-flow-definition-switch-defaultType"], a[href^="#type_faces-config-flow-definition-initializerType"], a[href^="#type_faces-config-flow-definition-finalizerType"], a[href^="#type_faces-config-flow-definition-faces-flow-returnType"], a[href^="#type_faces-config-application-resource-library-contracts-contra [...]
+                 background: url(changed_added_2_2.png); 
+                 padding-left:0.2em; border-left:solid;
+                 border-left-width:thin; border-right:none;
+                 border-top:none; border-bottom:none; border-color:green 
+}
+
+a[href^="#type_facelet-taglib-tag-componentType"] { cursor: url(changed_modified_2_2_cursor.cur), auto;
+                 background: url(changed_modified_2_2.png); 
+                 padding-left:0.2em; border-left:solid;
+                 border-left-width:thin; border-right:none;
+                 border-top:none; border-bottom:none; border-color:green 
+}
+
+*/
diff --git a/jsf-api/src/main/resources/jsf.js b/jsf-api/src/main/resources/jsf.js
index 3ddfdfc..31eff62 100644
--- a/jsf-api/src/main/resources/jsf.js
+++ b/jsf-api/src/main/resources/jsf.js
@@ -1,7 +1,7 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 1997-2013 Sun Microsystems, Inc. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
@@ -55,7 +55,7 @@
 
 /**
  @project JSF JavaScript Library
- @version 2.0
+ @version 2.2
  @description This is the standard implementation of the JSF JavaScript Library.
  */
 
@@ -64,22 +64,27 @@
  */
 if (typeof OpenAjax !== "undefined" &&
     typeof OpenAjax.hub.registerLibrary !== "undefined") {
-    OpenAjax.hub.registerLibrary("jsf", "www.sun.com", "2.0", null);
+    OpenAjax.hub.registerLibrary("jsf", "www.sun.com", "2.2", null);
 }
 
 // Detect if this is already loaded, and if loaded, if it's a higher version
-if (!((jsf && jsf.specversion && jsf.specversion > 20000 ) &&
-      (jsf.implversion && jsf.implversion > 2))) {
+if (!((jsf && jsf.specversion && jsf.specversion >= 20000 ) &&
+      (jsf.implversion && jsf.implversion >= 3))) {
 
     /**
-     * The top level global namespace for JavaServer Faces functionality.
+     * <span class="changed_modified_2_2">The top level global namespace
+     * for JavaServer Faces functionality.</span>
+
      * @name jsf
      * @namespace
      */
     var jsf = {};
 
     /**
-     * The namespace for Ajax functionality.
+
+     * <span class="changed_modified_2_2">The namespace for Ajax
+     * functionality.</span>
+
      * @name jsf.ajax
      * @namespace
      * @exec
@@ -89,6 +94,7 @@ if (!((jsf && jsf.specversion && jsf.specversion > 20000 ) &&
         var eventListeners = [];
         var errorListeners = [];
 
+        var delayHandler = null;
         /**
          * Determine if the current browser is part of Microsoft's failed attempt at
          * standards modification.
@@ -107,12 +113,28 @@ if (!((jsf && jsf.specversion && jsf.specversion > 20000 ) &&
         var isIECache;
 
         /**
+         * Determine the version of IE.
+         * @ignore
+         */
+        var getIEVersion = function getIEVersion() {
+            if (typeof IEVersionCache !== "undefined") {
+                return IEVersionCache;
+            }
+            if (/MSIE ([0-9]+)/.test(navigator.userAgent)) {
+                IEVersionCache = parseInt(RegExp.$1);
+            } else {
+                IEVersionCache = -1;
+            }
+            return IEVersionCache;
+        }
+        var IEVersionCache;
+
+        /**
          * Determine if loading scripts into the page executes the script.
          * This is instead of doing a complicated browser detection algorithm.  Some do, some don't.
          * @returns {boolean} does including a script in the dom execute it?
          * @ignore
          */
-        var isAutoExecCache;
         var isAutoExec = function isAutoExec() {
             try {
                 if (typeof isAutoExecCache !== "undefined") {
@@ -139,11 +161,23 @@ if (!((jsf && jsf.specversion && jsf.specversion > 20000 ) &&
                 return isAutoExecCache;
             }
         };
+        var isAutoExecCache;
 
         /**
          * @ignore
          */
-        var getTransport = function getTransport() {
+        var getTransport = function getTransport(context) {
+            var returnVal;
+            // Here we check for encoding type for file upload(s).
+            // This is where we would also include a check for the existence of
+            // input file control for the current form (see hasInputFileControl
+            // function) but IE9 (at least) seems to render controls outside of
+            // form.
+            if (typeof context !== 'undefined' && context !== null &&
+                context.form.enctype === "multipart/form-data") {
+                returnVal = new FrameTransport(context);
+                return returnVal;
+            }
             var methods = [
                 function() {
                     return new XMLHttpRequest();
@@ -156,7 +190,6 @@ if (!((jsf && jsf.specversion && jsf.specversion > 20000 ) &&
                 }
             ];
 
-            var returnVal;
             for (var i = 0, len = methods.length; i < len; i++) {
                 try {
                     returnVal = methods[i]();
@@ -167,8 +200,226 @@ if (!((jsf && jsf.specversion && jsf.specversion > 20000 ) &&
             }
             throw new Error('Could not create an XHR object.');
         };
+        
+        /**
+         * Used for iframe based communication (instead of XHR).
+         * @ignore
+         */
+        var FrameTransport = function FrameTransport(context) {
+            this.context = context;
+            this.frame = null;
+            this.FRAME_ID = "JSFFrameId";
+            this.FRAME_PARTIAL_ID = "Faces-Request";
+            this.partial = null;
+            this.aborted = false;
+            this.responseText = null;
+            this.responseXML = null;
+            this.readyState = 0;
+            this.requestHeader = {};
+            this.status = null;
+            this.method = null;
+            this.url = null;
+            this.requestParams = null;
+        };
+        
+        /**
+         * Extends FrameTransport an adds method functionality.
+         * @ignore
+         */
+        FrameTransport.prototype = {
+            
+            /**
+             *@ignore
+             */
+            setRequestHeader:function(key, value) {
+                if (typeof(value) !== "undefined") {
+                    this.requestHeader[key] = value;  
+                }
+            },
+            
+            /**
+             * Creates the hidden iframe and sets readystate.
+             * @ignore
+             */
+            open:function(method, url, async) {
+                this.method = method;
+                this.url = url;
+                this.async = async;
+                this.frame = document.getElementById(this.FRAME_ID);
+                if (this.frame) {
+                    this.frame.parentNode.removeChild(this.frame);
+                    this.frame = null;
+                }
+                if (!this.frame) {  
+                    if ((!isIE() && !isIE9Plus())) {
+                        this.frame = document.createElement('iframe');
+                        this.frame.src = "about:blank";
+                        this.frame.id = this.FRAME_ID;
+                        this.frame.name = this.FRAME_ID;
+                        this.frame.type = "content";
+                        this.frame.collapsed = "true";
+                        this.frame.style = "visibility:hidden";   
+                        this.frame.width = "0";
+                        this.frame.height = "0";
+                        this.frame.style = "border:0";
+                        this.frame.frameBorder = 0;
+                        document.body.appendChild(this.frame);
+                        this.frame.onload = bind(this, this.callback);
+                    } else {
+                        var div = document.createElement("div");
+                        div.id = "frameDiv";
+                        div.innerHTML = "<iframe id='" + this.FRAME_ID + "' name='" + this.FRAME_ID + "' style='display:none;' src='about:blank' type='content' onload='this.onload_cb();'  ></iframe>";
+                        document.body.appendChild(div);
+                        this.frame = document.getElementById(this.FRAME_ID);
+                        this.frame.onload_cb = bind(this, this.callback);
+                    }
+                }
+                // Create to send "Faces-Request" param with value "partial/ajax"
+                // For iframe approach we are sending as request parameter
+                // For non-iframe (xhr ajax) it is sent in the request header
+                this.partial = document.createElement("input");
+                this.partial.setAttribute("type", "hidden");
+                this.partial.setAttribute("id", this.FRAME_PARTIAL_ID);
+                this.partial.setAttribute("name", this.FRAME_PARTIAL_ID);
+                this.partial.setAttribute("value", "partial/ajax");
+                this.context.form.appendChild(this.partial);
+  
+                this.readyState = 1;                         
+            },
+            
+            /**
+             * Sets the form target to iframe, sets up request parameters
+             * and submits the form.
+             * @ignore
+             */
+            send:function(data) {
+                var evt = {};
+                this.context.form.target = this.frame.name;
+                this.context.form.method = this.method;
+                if (this.url) {
+                    this.context.form.action = this.url;
+                }
+
+                this.readyState = 3;
+
+                this.onreadystatechange(evt);
+                
+                var ddata = decodeURIComponent(data);
+                var dataArray = ddata.split("&");
+                var input;
+                this.requestParams = new Array();
+                for (var i=0; i<dataArray.length; i++) {
+                    var nameValue = dataArray[i].split("=");
+                    if (nameValue[0] === "javax.faces.source" ||
+                        nameValue[0] === "javax.faces.partial.event" ||
+                        nameValue[0] === "javax.faces.partial.execute" ||
+                        nameValue[0] === "javax.faces.partial.render" ||
+                        nameValue[0] === "javax.faces.partial.ajax" ||
+                        nameValue[0] === "javax.faces.behavior.event") {
+                        input = document.createElement("input");
+                        input.setAttribute("type", "hidden");
+                        input.setAttribute("id", nameValue[0]);
+                        input.setAttribute("name", nameValue[0]);
+                        input.setAttribute("value", nameValue[1]);
+                        this.context.form.appendChild(input);
+                        this.requestParams.push(nameValue[0]);
+                    }
+                }
+                this.requestParams.push(this.FRAME_PARTIAL_ID);
+                this.context.form.submit();
+            },
+            
+            /**
+             *@ignore
+             */
+            abort:function() {
+                this.aborted = true; 
+            },
+            
+            /**
+             *@ignore
+             */
+            onreadystatechange:function(evt) {
+                
+            },
+            
+            /**
+             * Extracts response from iframe document, sets readystate.
+             * @ignore
+             */
+            callback: function() {
+                if (this.aborted) {
+                    return;
+                }
+                var iFrameDoc;
+                var docBody;
+                try {
+                    var evt = {};
+                    iFrameDoc = this.frame.contentWindow.document || 
+                        this.frame.contentDocument || this.frame.document;
+                    docBody = iFrameDoc.body || iFrameDoc.documentElement;
+                    this.responseText = docBody.innerHTML;
+                    this.responseXML = iFrameDoc.XMLDocument || iFrameDoc;
+                    this.status = 201;
+                    this.readyState = 4;  
+
+                    this.onreadystatechange(evt);                
+                } finally {
+                    this.cleanupReqParams();
+                }               
+            },
+            
+            /**
+             *@ignore
+             */
+            cleanupReqParams: function() {
+                for (var i=0; i<this.requestParams.length; i++) {
+                    var elements = this.context.form.childNodes;
+                    for (var j=0; j<elements.length; j++) {
+                        if (!elements[j].type === "hidden") {
+                            continue;
+                        }
+                        if (elements[j].name === this.requestParams[i]) {
+                            var node = this.context.form.removeChild(elements[j]);
+                            node = null;                           
+                            break;
+                        }
+                    }   
+                }
+            }
+        };
+        
+       
+        /**
+         *Utility function that binds function to scope.
+         *@ignore
+         */
+        var bind = function(scope, fn) {
+            return function () {
+                fn.apply(scope, arguments);
+            };
+        };
 
         /**
+         * Utility function that determines if a file control exists
+         * for the form.
+         * @ignore
+         */
+        var hasInputFileControl = function(form) {
+            var returnVal = false;
+            var inputs = form.getElementsByTagName("input");
+            if (inputs !== null && typeof inputs !=="undefined") {
+                for (var i=0; i<inputs.length; i++) {
+                    if (inputs[i].type === "file") {
+                        returnVal = true;
+                        break;
+                    }
+                }    
+            }
+            return returnVal;
+        };
+        
+        /**
          * Find instance of passed String via getElementById
          * @ignore
          */
@@ -211,6 +462,33 @@ if (!((jsf && jsf.specversion && jsf.specversion > 20000 ) &&
             }
             return null;
         };
+        
+        /**
+         * Get the form element which encloses the supplied element
+         * identified by the supplied identifier.
+         * @param id - the element id to act against in search
+         * @returns form element representing enclosing form, or null if not found.
+         * @ignore
+         */
+        var getFormForId = function getFormForId(id) {
+            if (id) {
+                var node = document.getElementById(id);
+                while (node) {
+                    if (node.nodeName && (node.nodeName.toLowerCase() == 'form')) {
+                        return node;
+                    }
+                    if (node.form) {
+                        return node.form;
+                    }
+                    if (node.parentNode) {
+                        node = node.parentNode;
+                    } else {
+                        node = null;                     
+                    }
+                }
+            }
+            return null;
+        };
 
         /**
          * Check if a value exists in an array
@@ -238,6 +516,9 @@ if (!((jsf && jsf.specversion && jsf.specversion > 20000 ) &&
             }
             // We have to wrap the call in an anon function because of a firefox bug, where this is incorrectly set
             // We need to explicitly call window.eval because of a Chrome peculiarity
+            /**
+             * @ignore
+             */
             var fn = function() {
                 window.eval.call(window,src);
             };
@@ -256,15 +537,24 @@ if (!((jsf && jsf.specversion && jsf.specversion > 20000 ) &&
             // Regex to find one script, to isolate it's content [2] and attributes [1]
             var findscript = /<script([^>]*)>([\S\s]*?)<\/script>/im;
             // Regex to remove leading cruft
-            var stripStart = /^\s*(<!--)*\s*(\/\/)*\s*(\/\*)*\s*(<!\[CDATA\[)*/;
+            var stripStart = /^\s*(<!--)*\s*(\/\/)*\s*(\/\*)*\s*\n*\**\n*\s*\*.*\n*\s*\*\/(<!\[CDATA\[)*/;
             // Regex to find src attribute
             var findsrc = /src="([\S]*?)"/im;
+            var findtype = /type="([\S]*?)"/im;
             var initialnodes = [];
             var scripts = [];
             initialnodes = str.match(findscripts);
             while (!!initialnodes && initialnodes.length > 0) {
                 var scriptStr = [];
                 scriptStr = initialnodes.shift().match(findscript);
+                // check the type - skip if it not javascript type
+                var type = [];
+                type = scriptStr[1].match(findtype);
+                if ( !!type && type[1]) {
+                    if (type[1] !== "text/javascript") {
+                        continue;
+                    }
+                }
                 var src = [];
                 // check if src specified
                 src = scriptStr[1].match(findsrc);
@@ -299,7 +589,7 @@ if (!((jsf && jsf.specversion && jsf.specversion > 20000 ) &&
          * @ignore
          */
         var loadScript = function loadScript(url) {
-            var xhr = getTransport();
+            var xhr = getTransport(null);
             if (xhr === null) {
                 return "";
             }
@@ -363,12 +653,13 @@ if (!((jsf && jsf.specversion && jsf.specversion > 20000 ) &&
                     // Get scripts from text
                     scripts = stripScripts(src);
                     // Remove scripts from text
-                    src = src.replace(/<script[^>]*>([\S\s]*?)<\/script>/igm,"");
+                    src = src.replace(/<script[^>]*type="text\/javascript"*>([\S\s]*?)<\/script>/igm,"");
                     temp.innerHTML = src;
                 }
             }
 
             replaceNode(temp, element);            
+            cloneAttributes(temp, element);
             runScripts(scripts);
 
         };
@@ -536,6 +827,21 @@ if (!((jsf && jsf.specversion && jsf.specversion > 20000 ) &&
         };
 
         /**
+         * Determine if this current browser is IE9 or greater
+         * @param node
+         * @ignore
+         */
+        var isIE9Plus = function isIE9Plus() {
+            var iev = getIEVersion();
+            if (iev >= 9) {
+                return true;
+            } else {
+                return false;
+            }
+        }
+
+
+        /**
          * Deletes node
          * @param node
          * @ignore
@@ -544,12 +850,12 @@ if (!((jsf && jsf.specversion && jsf.specversion > 20000 ) &&
             if (!node) {
                 return;
             }
-            if (!isIE()) {
+            if (!node.parentNode) {
+                // if there's no parent, there's nothing to do
+                return;
+            }
+            if (!isIE() || (isIE() && isIE9Plus())) {
                 // nothing special required
-                if (!node.parentNode) {
-                    // if there's no parent, there's nothing to do
-                    return;
-                }
                 node.parentNode.removeChild(node);
                 return;
             }
@@ -637,6 +943,7 @@ if (!((jsf && jsf.specversion && jsf.specversion > 20000 ) &&
          * Replace one node with another.  Necessary for handling IE memory leak.
          * @param node
          * @param newNode
+         * @ignore
          */
         var replaceNode = function replaceNode(newNode, node) {
                if(isIE()){
@@ -647,6 +954,53 @@ if (!((jsf && jsf.specversion && jsf.specversion > 20000 ) &&
                }
         };
 
+        /**
+         * @ignore
+         */
+        var propertyToAttribute = function propertyToAttribute(name) {
+            if (name === 'className') {
+                return 'class';
+            } else if (name === 'xmllang') {
+                return 'xml:lang';
+            } else {
+                return name.toLowerCase();
+            }
+        };
+
+        /**
+         * @ignore
+         */
+        var isFunctionNative = function isFunctionNative(func) {
+            return /^\s*function[^{]+{\s*\[native code\]\s*}\s*$/.test(String(func));
+        };
+
+        /**
+         * @ignore
+         */
+        var detectAttributes = function detectAttributes(element) {
+            //test if 'hasAttribute' method is present and its native code is intact
+            //for example, Prototype can add its own implementation if missing
+            if (element.hasAttribute && isFunctionNative(element.hasAttribute)) {
+                return function(name) {
+                    return element.hasAttribute(name);
+                }
+            } else {
+                try {
+                    //when accessing .getAttribute method without arguments does not throw an error then the method is not available
+                    element.getAttribute;
+
+                    var html = element.outerHTML;
+                    var startTag = html.match(/^<[^>]*>/)[0];
+                    return function(name) {
+                        return startTag.indexOf(name + '=') > -1;
+                    }
+                } catch (ex) {
+                    return function(name) {
+                        return element.getAttribute(name);
+                    }
+                }
+            }
+        };
 
         /**
          * copy all attributes from one element to another - except id
@@ -657,58 +1011,104 @@ if (!((jsf && jsf.specversion && jsf.specversion > 20000 ) &&
         var cloneAttributes = function cloneAttributes(target, source) {
 
             // enumerate core element attributes - without 'dir' as special case
-            var coreElementAttributes = ['className', 'title', 'lang', 'xml:lang'];
-
-            // Enumerate additional input element attributes
-            var inputElementAttributes =
-                    [   'name', 'value', 'checked', 'disabled', 'readOnly',
-                        'size', 'maxLength', 'src', 'alt', 'useMap', 'isMap',
-                        'tabIndex', 'accessKey', 'accept', 'type'
-                    ];
+            var coreElementProperties = ['className', 'title', 'lang', 'xmllang'];
+            // enumerate additional input element attributes
+            var inputElementProperties = [
+                'name', 'value', 'size', 'maxLength', 'src', 'alt', 'useMap', 'tabIndex', 'accessKey', 'accept', 'type'
+            ];
+            // enumerate additional boolean input attributes
+            var inputElementBooleanProperties = [
+                'checked', 'disabled', 'readOnly'
+            ];
 
             // Enumerate all the names of the event listeners
             var listenerNames =
-                    [ 'onclick', 'ondblclick', 'onmousedown', 'onmousemove', 'onmouseout',
-                        'onmouseover', 'onmouseup', 'onkeydown', 'onkeypress', 'onkeyup',
-                        'onhelp', 'onblur', 'onfocus', 'onchange', 'onload', 'onunload', 'onabort',
-                        'onreset', 'onselect', 'onsubmit'
-                    ];
-
-            var iIndex, iLength; // for loop variables
-            var attributeName; // name of the attribute to set
-            var newValue, oldValue; // attribute values in each element
-
-            // First, copy over core attributes
-            for (iIndex = 0,iLength = coreElementAttributes.length; iIndex < iLength; iIndex++) {
-                attributeName = coreElementAttributes[iIndex];
-                newValue = source[attributeName];
-                oldValue = target[attributeName];
-                if (oldValue != newValue) {
-                    target[attributeName] = newValue;
-                }
-            }
-
-            // Next, if it's an input, copy those over
-            if (target.nodeName.toLowerCase() === 'input') {
-                for (iIndex = 0,iLength = inputElementAttributes.length; iIndex < iLength; iIndex++) {
-                    attributeName = inputElementAttributes[iIndex];
-                    newValue = source[attributeName];
-                    oldValue = target[attributeName];
+                [ 'onclick', 'ondblclick', 'onmousedown', 'onmousemove', 'onmouseout',
+                    'onmouseover', 'onmouseup', 'onkeydown', 'onkeypress', 'onkeyup',
+                    'onhelp', 'onblur', 'onfocus', 'onchange', 'onload', 'onunload', 'onabort',
+                    'onreset', 'onselect', 'onsubmit'
+                ];
+
+            var sourceAttributeDetector = detectAttributes(source);
+            var targetAttributeDetector = detectAttributes(target);
+
+            var isInputElement = target.nodeName.toLowerCase() === 'input';
+            var propertyNames = isInputElement ? coreElementProperties.concat(inputElementProperties) : coreElementProperties;
+            var isXML = !source.ownerDocument.contentType || source.ownerDocument.contentType == 'text/xml';
+            for (var iIndex = 0, iLength = propertyNames.length; iIndex < iLength; iIndex++) {
+                var propertyName = propertyNames[iIndex];
+                var attributeName = propertyToAttribute(propertyName);
+                if (sourceAttributeDetector(attributeName)) {
+                
+                    //With IE 7 (quirks or standard mode) and IE 8/9 (quirks mode only), 
+                    //you cannot get the attribute using 'class'. You must use 'className'
+                    //which is the same value you use to get the indexed property. The only 
+                    //reliable way to detect this (without trying to evaluate the browser
+                    //mode and version) is to compare the two return values using 'className' 
+                    //to see if they exactly the same.  If they are, then use the property
+                    //name when using getAttribute.
+                    if( attributeName == 'class'){
+                        if( isIE() && (source.getAttribute(propertyName) === source[propertyName]) ){
+                            attributeName = propertyName;
+                        }
+                    }
+
+                    var newValue = isXML ? source.getAttribute(attributeName) : source[propertyName];
+                    var oldValue = target[propertyName];
                     if (oldValue != newValue) {
-                        target[attributeName] = newValue;
+                        target[propertyName] = newValue;
                     }
+                } else {
+                    //setting property to '' seems to be the only cross-browser method for removing an attribute
+                    //avoid setting 'value' property to '' for checkbox and radio input elements because then the
+                    //'value' is used instead of the 'checked' property when the form is serialized by the browser
+                    if (attributeName == "value" && (target.type != 'checkbox' && target.type != 'radio')) {
+                         target[propertyName] = '';
+                    }
+                    target.removeAttribute(attributeName);
+                }
+            }
+
+            var booleanPropertyNames = isInputElement ? inputElementBooleanProperties : [];
+            for (var jIndex = 0, jLength = booleanPropertyNames.length; jIndex < jLength; jIndex++) {
+                var booleanPropertyName = booleanPropertyNames[jIndex];
+                var newBooleanValue = source[booleanPropertyName];
+                var oldBooleanValue = target[booleanPropertyName];
+                if (oldBooleanValue != newBooleanValue) {
+                    target[booleanPropertyName] = newBooleanValue;
                 }
             }
+
             //'style' attribute special case
-            var newStyle = source.getAttribute('style');
-            var oldStyle = target.getAttribute('style');
-            if (newStyle != oldStyle) {
+            if (sourceAttributeDetector('style')) {
+                var newStyle;
+                var oldStyle;
                 if (isIE()) {
-                    target.style.setAttribute('cssText', newStyle, 0);
+                    newStyle = source.style.cssText;
+                    oldStyle = target.style.cssText;
+                    if (newStyle != oldStyle) {
+                        target.style.cssText = newStyle;
+                    }
                 } else {
-                    target.setAttribute('style',newStyle);
+                    newStyle = source.getAttribute('style');
+                    oldStyle = target.getAttribute('style');
+                    if (newStyle != oldStyle) {
+                        target.setAttribute('style', newStyle);
+                    }
                 }
+            } else if (targetAttributeDetector('style')){
+                target.removeAttribute('style');
             }
+
+            // Special case for 'dir' attribute
+            if (!isIE() && source.dir != target.dir) {
+                if (sourceAttributeDetector('dir')) {
+                    target.dir = source.dir;
+                } else if (targetAttributeDetector('dir')) {
+                    target.dir = '';
+                }
+            }
+
             for (var lIndex = 0, lLength = listenerNames.length; lIndex < lLength; lIndex++) {
                 var name = listenerNames[lIndex];
                 target[name] = source[name] ? source[name] : null;
@@ -716,9 +1116,23 @@ if (!((jsf && jsf.specversion && jsf.specversion > 20000 ) &&
                     source[name] = null;
                 }
             }
-            // Special case for 'dir' attribute
-            if (!isIE() && source.dir != target.dir) {
-                target.dir = source.dir ? source.dir : null;
+
+            //clone HTML5 data-* attributes
+            try{
+                var targetDataset = target.dataset;
+                var sourceDataset = source.dataset;
+                if (targetDataset || sourceDataset) {
+                    //cleanup the dataset
+                    for (var tp in targetDataset) {
+                        delete targetDataset[tp];
+                    }
+                    //copy dataset's properties
+                    for (var sp in sourceDataset) {
+                        targetDataset[sp] = sourceDataset[sp];
+                    }
+                }
+            } catch (ex) {
+                //most probably dataset properties are not supported
             }
         };
 
@@ -781,38 +1195,98 @@ if (!((jsf && jsf.specversion && jsf.specversion > 20000 ) &&
         };
 
         /**
+         * Find encoded url field for a given form.
+         * @param form
+         * @ignore
+         */
+        var getEncodedUrlElement = function getEncodedUrlElement(form) {
+            var encodedUrlElement = form['javax.faces.encodedURL'];
+
+            if (encodedUrlElement) {
+                return encodedUrlElement;
+            } else {
+                var formElements = form.elements;
+                for (var i = 0, length = formElements.length; i < length; i++) {
+                    var formElement = formElements[i];
+                    if (formElement.name && (formElement.name.indexOf('javax.faces.encodedURL') >= 0)) {
+                        return formElement;
+                    }
+                }
+            }
+
+            return undefined;
+        };
+
+        /**
+         * Find view state field for a given form.
+         * @param form
+         * @ignore
+         */
+        var getViewStateElement = function getViewStateElement(form) {
+            var viewStateElement = form['javax.faces.ViewState'];
+
+            if (viewStateElement) {
+                return viewStateElement;
+            } else {
+                var formElements = form.elements;
+                for (var i = 0, length = formElements.length; i < length; i++) {
+                    var formElement = formElements[i];
+                    if (formElement.name && (formElement.name.indexOf('javax.faces.ViewState') >= 0)) {
+                        return formElement;
+                    }
+                }
+            }
+
+            return undefined;
+        };
+
+        /**
          * Do update.
          * @param element element to update
          * @param context context of request
          * @ignore
          */
-        var doUpdate = function doUpdate(element, context) {
-            var id, content, markup, state;
-            var stateForm;
+        var doUpdate = function doUpdate(element, context, partialResponseId) {
+            var id, content, markup, state, windowId;
+            var stateForm, windowIdForm;
             var scripts = []; // temp holding value for array of script nodes
 
             id = element.getAttribute('id');
-            if (id === "javax.faces.ViewState") {
+            var viewStateRegex = new RegExp("javax.faces.ViewState" +
+                                            jsf.separatorchar + ".*$");
+            var windowIdRegex = new RegExp("^.*" + jsf.separatorchar + 
+                                           "javax.faces.ClientWindow" +
+                                            jsf.separatorchar + ".*$");
+            if (id.match(viewStateRegex)) {
 
                 state = element.firstChild;
 
                 // Now set the view state from the server into the DOM
                 // but only for the form that submitted the request.
 
-                stateForm = document.getElementById(context.formid);
+                if (typeof context.formid !== 'undefined' && context.formid !== null) {
+                    stateForm = getFormForId(context.formid);
+                } else {
+                    stateForm = getFormForId(context.element.id);
+                }
+
                 if (!stateForm || !stateForm.elements) {
                     // if the form went away for some reason, or it lacks elements 
                     // we're going to just return silently.
                     return;
                 }
-                var field = stateForm.elements["javax.faces.ViewState"];
+                var field = getViewStateElement(stateForm);
                 if (typeof field == 'undefined') {
                     field = document.createElement("input");
                     field.type = "hidden";
                     field.name = "javax.faces.ViewState";
                     stateForm.appendChild(field);
                 }
-                field.value = state.nodeValue;
+                if (typeof state.wholeText !== 'undefined') {
+                    field.value = state.wholeText;
+                } else {
+                    field.value = state.nodeValue;
+                }
 
                 // Now set the view state from the server into the DOM
                 // for any form that is a render target.
@@ -825,14 +1299,64 @@ if (!((jsf && jsf.specversion && jsf.specversion > 20000 ) &&
                             // the form is not the one that caused the submission..
                             var f = document.forms[temp[i]];
                             if (typeof f !== 'undefined' && f !== null && f.id !== context.formid) {
-                                field = f.elements["javax.faces.ViewState"];
+                                field = getViewStateElement(f);
                                 if (typeof field === 'undefined') {
                                     field = document.createElement("input");
                                     field.type = "hidden";
                                     field.name = "javax.faces.ViewState";
                                     f.appendChild(field);
                                 }
-                                field.value = state.nodeValue;
+                                if (typeof state.wholeText !== 'undefined') {
+                                    field.value = state.wholeText;
+                                } else {
+                                    field.value = state.nodeValue;
+                                }
+                            }
+                        }
+                    }
+                }
+                return;
+            } else if (id.match(windowIdRegex)) {
+
+                windowId = element.firstChild;
+
+                // Now set the windowId from the server into the DOM
+                // but only for the form that submitted the request.
+
+                windowIdForm = document.getElementById(context.formid);
+                if (!windowIdForm || !windowIdForm.elements) {
+                    // if the form went away for some reason, or it lacks elements 
+                    // we're going to just return silently.
+                    return;
+                }
+                var field = windowIdForm.elements["javax.faces.ClientWindow"];
+                if (typeof field == 'undefined') {
+                    field = document.createElement("input");
+                    field.type = "hidden";
+                    field.name = "javax.faces.ClientWindow";
+                    windowIdForm.appendChild(field);
+                }
+                field.value = windowId.nodeValue;
+
+                // Now set the windowId from the server into the DOM
+                // for any form that is a render target.
+
+                if (typeof context.render !== 'undefined' && context.render !== null) {
+                    var temp = context.render.split(' ');
+                    for (var i = 0; i < temp.length; i++) {
+                        if (temp.hasOwnProperty(i)) {
+                            // See if the element is a form and
+                            // the form is not the one that caused the submission..
+                            var f = document.forms[temp[i]];
+                            if (typeof f !== 'undefined' && f !== null && f.id !== context.formid) {
+                                field = f.elements["javax.faces.ClientWindow"];
+                                if (typeof field === 'undefined') {
+                                    field = document.createElement("input");
+                                    field.type = "hidden";
+                                    field.name = "javax.faces.ClientWindow";
+                                    f.appendChild(field);
+                                }
+                                field.value = windowId.nodeValue;
                             }
                         }
                     }
@@ -864,7 +1388,7 @@ if (!((jsf && jsf.specversion && jsf.specversion > 20000 ) &&
                         // Get scripts from text
                         scripts = stripScripts(src);
                         // Remove scripts from text
-                        newsrc = src.replace(/<script[^>]*>([\S\s]*?)<\/script>/igm, "");
+                        newsrc = src.replace(/<script[^>]*type="text\/javascript"*>([\S\s]*?)<\/script>/igm, "");
                         elementReplace(getBodyElement(newsrc), docBody);
                         runScripts(scripts);
                     } catch (e) {
@@ -915,7 +1439,7 @@ if (!((jsf && jsf.specversion && jsf.specversion > 20000 ) &&
                         // Get the scripts from the text
                         scripts = stripScripts(html);
                         // Remove scripts from text
-                        html = html.replace(/<script[^>]*>([\S\s]*?)<\/script>/igm,"");
+                        html = html.replace(/<script[^>]*type="text\/javascript"*>([\S\s]*?)<\/script>/igm,"");
                         parserElement.innerHTML = '<table>' + html + '</table>';
                     }
                     var newElement = parserElement.firstChild;
@@ -943,7 +1467,7 @@ if (!((jsf && jsf.specversion && jsf.specversion > 20000 ) &&
                         // Get the scripts from the text
                         scripts = stripScripts(html);
                         // Remove scripts from text
-                        html = html.replace(/<script[^>]*>([\S\s]*?)<\/script>/igm,"");
+                        html = html.replace(/<script[^>]*type="text\/javascript"*>([\S\s]*?)<\/script>/igm,"");
                         parserElement.innerHTML = html;
                     }
                     replaceNode(parserElement.firstChild, d);
@@ -970,28 +1494,40 @@ if (!((jsf && jsf.specversion && jsf.specversion > 20000 ) &&
          * @ignore
          */
         var doInsert = function doInsert(element) {
+            var tablePattern = new RegExp("<\\s*(td|th|tr|tbody|thead|tfoot)", "i");
             var scripts = [];
             var target = $(element.firstChild.getAttribute('id'));
             var parent = target.parentNode;
-            var tempElement = document.createElement('span');
             var html = element.firstChild.firstChild.nodeValue;
+            var isInTable = tablePattern.test(html);
 
-            if (isAutoExec()) {
-                // Create html
-                tempElement.innerHTML = html;
-            } else {
+            if (!isAutoExec())  {
                 // Get the scripts from the text
                 scripts = stripScripts(html);
                 // Remove scripts from text
-                html = html.replace(/<script[^>]*>([\S\s]*?)<\/script>/igm,"");
+                html = html.replace(/<script[^>]*type="text\/javascript"*>([\S\s]*?)<\/script>/igm,"");
+            }
+            var tempElement = document.createElement('div');
+            var newElement = null;
+            if (isInTable)  {
+                tempElement.innerHTML = '<table>' + html + '</table>';
+                newElement = tempElement.firstChild;
+                //some browsers will also create intermediary elements such as table>tbody>tr>td
+                //test for presence of id on the new element since we do not have it directly
+                while ((null !== newElement) && ("" == newElement.id)) {
+                    newElement = newElement.firstChild;
+                }
+            } else {
                 tempElement.innerHTML = html;
+                newElement = tempElement.firstChild;
             }
+
             if (element.firstChild.nodeName === 'after') {
                 // Get the next in the list, to insert before
                 target = target.nextSibling;
             }  // otherwise, this is a 'before' element
             if (!!tempElement.innerHTML) { // check if only scripts were inserted - if so, do nothing here
-                parent.insertBefore(tempElement.firstChild, target);
+                parent.insertBefore(newElement, target);
             }
             runScripts(scripts);
             deleteNode(tempElement);
@@ -1018,24 +1554,41 @@ if (!((jsf && jsf.specversion && jsf.specversion > 20000 ) &&
             for (var i = 0; i < nodes.length; i++) {
                 var name = nodes[i].getAttribute('name');
                 var value = nodes[i].getAttribute('value');
+
+                //boolean attribute handling code for all browsers
+                if (name === 'disabled') {
+                    target.disabled = value === 'disabled' || value === 'true';
+                    return;
+                } else if (name === 'checked') {
+                    target.checked = value === 'checked' || value === 'on' || value === 'true';
+                    return;
+                } else if (name == 'readonly') {
+                    target.readOnly = value === 'readonly' || value === 'true';
+                    return;
+                }
+
                 if (!isIE()) {
-                    target.setAttribute(name, value);
+                    if (name === 'value') {
+                        target.value = value;
+                    } else {
+                        target.setAttribute(name, value);
+                    }
                 } else { // if it's IE, then quite a bit more work is required
                     if (name === 'class') {
-                        name = 'className';
-                        target.setAttribute(name, value, 0);
+                        target.className = value;
                     } else if (name === "for") {
                         name = 'htmlFor';
                         target.setAttribute(name, value, 0);
                     } else if (name === 'style') {
                         target.style.setAttribute('cssText', value, 0);
                     } else if (name.substring(0, 2) === 'on') {
-                        var fn = function(value) {
-                            return function() {
-                                window.execScript(value);
-                            };
-                        }(value);
-                        target.setAttribute(name, fn, 0);
+                        var c = document.body.appendChild(document.createElement('span'));
+                        try {
+                            c.innerHTML = '<span ' + name + '="' + value + '"/>';
+                            target[name] = c.firstChild[name];
+                        } finally {
+                            document.body.removeChild(c);
+                        }
                     } else if (name === 'dir') {
                         if (jsf.getProjectStage() == 'Development') {
                             throw new Error("Cannot set 'dir' attribute in IE");
@@ -1157,15 +1710,14 @@ if (!((jsf && jsf.specversion && jsf.specversion > 20000 ) &&
          * AjaxEngine handles Ajax implementation details.
          * @ignore
          */
-        var AjaxEngine = function AjaxEngine() {
+        var AjaxEngine = function AjaxEngine(context) {
 
             var req = {};                  // Request Object
             req.url = null;                // Request URL
-            req.context = {};              // Context of request and response
+            req.context = context;              // Context of request and response
             req.context.sourceid = null;   // Source of this request
             req.context.onerror = null;    // Error handler for request
             req.context.onevent = null;    // Event handler for request
-            req.context.formid = null;     // Form that's the context for this request
             req.xmlReq = null;             // XMLHttpRequest Object
             req.async = true;              // Default - Asynchronous
             req.parameters = {};           // Parameters For GET or POST
@@ -1177,13 +1729,21 @@ if (!((jsf && jsf.specversion && jsf.specversion > 20000 ) &&
             // entering the queue redundantly.
 
             req.que = Queue;
+            
+            // Get a transport Handle
+            // The transport will be an iframe transport if the form
+            // has multipart encoding type.  This is where we could
+            // handle XMLHttpRequest Level2 as well (perhaps 
+            // something like:  if ('upload' in req.xmlReq)'
+            req.xmlReq = getTransport(context);
 
-            // Get an XMLHttpRequest Handle
-            req.xmlReq = getTransport();
             if (req.xmlReq === null) {
                 return null;
             }
 
+            /**
+             * @ignore
+             */
             function noop() {}
             
             // Set up request/response state callbacks
@@ -1301,10 +1861,14 @@ if (!((jsf && jsf.specversion && jsf.specversion > 20000 ) &&
                         }
                     }
                     req.xmlReq.open(req.method, req.url, req.async);
+                    // note that we are including the charset=UTF-8 as part of the content type (even
+                    // if encodeURIComponent encodes as UTF-8), because with some
+                    // browsers it will not be set in the request.  Some server implementations need to 
+                    // determine the character encoding from the request header content type.
                     if (req.method === "POST") {
                         if (typeof req.xmlReq.setRequestHeader !== 'undefined') {
                             req.xmlReq.setRequestHeader('Faces-Request', 'partial/ajax');
-                            req.xmlReq.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
+                            req.xmlReq.setRequestHeader('Content-type', 'application/x-www-form-urlencoded;charset=UTF-8');
                         }
                         content = req.queryString;
                     }
@@ -1489,7 +2053,10 @@ if (!((jsf && jsf.specversion && jsf.specversion > 20000 ) &&
                 }
             },
             /**
-             * <p>Send an asynchronous Ajax request to the server.
+
+             * <p><span class="changed_modified_2_2">Send</span> an
+             * asynchronous Ajax req uest to the server.
+
              * <p><b>Usage:</b></p>
              * <pre><code>
              * Example showing all optional arguments:
@@ -1541,6 +2108,15 @@ if (!((jsf && jsf.specversion && jsf.specversion > 20000 ) &&
              * <td><code>javax.faces.source</code></td>
              * <td><code>The identifier of the element that triggered this request.</code></td>
              * </tr>
+             * <tr class="changed_added_2_2">
+             * <td><code>javax.faces.ClientWindow</code></td>
+
+             * <td><code>Call jsf.getClientWindow(), passing the current
+             * form.  If the return is non-null, it must be set as the
+             * value of this name/value pair, otherwise, a name/value
+             * pair for client window must not be sent.</code></td>
+
+             * </tr>
              * </table>
              * </li>
              * </ul>
@@ -1574,6 +2150,32 @@ if (!((jsf && jsf.specversion && jsf.specversion > 20000 ) &&
              * </ul>
              * <li>If <code>options.render</code> does not exist do not create and send the
              * post data argument <code>javax.faces.partial.render</code>.</li>
+
+             * <li class="changed_added_2_2">If
+             * <code>options.delay</code> exists let it be the value
+             * <em>delay</em>, for this discussion.  If
+             * <code>options.delay</code> does not exist, or is the
+             * literal string <code>'none'</code>, without the quotes,
+             * no delay is used.  If less than <em>delay</em>
+             * milliseconds elapses between calls to <em>request()</em>
+             * only the most recent one is sent and all other requests
+             * are discarded.</li>
+
+
+             * <li class="changed_added_2_2">If
+             * <code>options.resetValues</code> exists and its value is
+             * <code>true</code>, ensure a post data argument with the
+             * name <code>javax.faces.partial.resetValues</code> and the
+             * value <code>true</code> is sent in addition to the other
+             * post data arguments.  This will cause
+             * <code>UIViewRoot.resetValues()</code> to be called,
+             * passing the value of the "render" attribute.  Note: do
+             * not use any of the <code>@</code> keywords such as
+             * <code>@form</code> or <code>@this</code> with this option
+             * because <code>UIViewRoot.resetValues()</code> does not
+             * descend into the children of the listed components.</li>
+
+
              * <li>Determine additional arguments (if any) from the <code>event</code>
              * argument.  The following name/value pairs may be used from the
              * <code>event</code> object:
@@ -1612,9 +2214,42 @@ if (!((jsf && jsf.specversion && jsf.specversion > 20000 ) &&
              * <code>javax.faces.encodedURL</code> is present in the submitting form, use its
              * value as the <code>posting URL</code>.  Otherwise, use the <code>action</code>
              * property of the <code>form</code> element as the <code>URL</code>.</li>
-             * <li>Send the request as an <code>asynchronous POST</code> using the
-             * <code>posting URL</code> that was determined in the previous step.</li>
+
+             * <li> 
+
+             * <p><span class="changed_modified_2_2">Determine whether
+             * or not the submitting form is using 
+             * <code>multipart/form-data</code> as its
+             * <code>enctype</code> attribute.  If not, send the request
+             * as an <code>asynchronous POST</code> using the
+             * <code>posting URL</code> that was determined in the
+             * previous step.</span> <span
+             * class="changed_added_2_2">Otherwise, send the request
+             * using a multi-part capable transport layer, such as a
+             * hidden inline frame.  Note that using a hidden inline
+             * frame does <strong>not</strong> use
+             * <code>XMLHttpRequest</code>, but the request must be sent
+             * with all the parameters that a JSF
+             * <code>XMLHttpRequest</code> would have been sent with.
+             * In this way, the server side processing of the request
+             * will be identical whether or the request is multipart or
+             * not.</span></p  
+            
+             * <div class="changed_added_2_2">
+
+             * <p>The <code>begin</code>, <code>complete</code>, and
+             * <code>success</code> events must be emulated when using
+             * the multipart transport.  This allows any listeners to
+             * behave uniformly regardless of the multipart or
+             * <code>XMLHttpRequest</code> nature of the transport.</p>
+
+             * </div>
+
+</li>
              * </ul>
+             * Form serialization should occur just before the request is sent to minimize 
+             * the amount of time between the creation of the serialized form data and the 
+             * sending of the serialized form data (in the case of long requests in the queue).
              * Before the request is sent it must be put into a queue to ensure requests
              * are sent in the same order as when they were initiated.  The request callback function
              * must examine the queue and determine the next request to be sent.  The behavior of the
@@ -1665,20 +2300,62 @@ if (!((jsf && jsf.specversion && jsf.specversion > 20000 ) &&
              * <td><code>params</code></td>
              * <td><code>object containing parameters to include in the request</code></td>
              * </tr>
+
+             * <tr class="changed_added_2_2">
+
+             * <td><code>delay</code></td>
+
+             * <td>If less than <em>delay</em> milliseconds elapses
+             * between calls to <em>request()</em> only the most recent
+             * one is sent and all other requests are discarded. If the
+             * value of <em>delay</em> is the literal string
+             * <code>'none'</code> without the quotes, or no delay is
+             * specified, no delay is used. </td>
+
+             * </tr>
+
+             * <tr class="changed_added_2_2">
+
+             * <td><code>resetValues</code></td>
+
+             * <td>If true, ensure a post data argument with the name
+             * javax.faces.partial.resetValues and the value true is
+             * sent in addition to the other post data arguments. This
+             * will cause UIViewRoot.resetValues() to be called, passing
+             * the value of the "render" attribute. Note: do not use any
+             * of the @ keywords such as @form or @this with this option
+             * because UIViewRoot.resetValues() does not descend into
+             * the children of the listed components.</td>
+
+             * </tr>
+
+
              * </table>
              * The <code>options</code> argument is optional.
              * @member jsf.ajax
              * @function jsf.ajax.request
-             * @throws Error if first required argument <code>element</code> is not specified
+
+             * @throws Error if first required argument
+             * <code>element</code> is not specified, or if one or more
+             * of the components in the <code>options.execute</code>
+             * list is a file upload component, but the form's enctype
+             * is not set to <code>multipart/form-data</code>
              */
+
             request: function request(source, event, options) {
 
                 var element, form;   //  Element variables
                 var all, none;
+                
+                var context = {};
 
                 if (typeof source === 'undefined' || source === null) {
                     throw new Error("jsf.ajax.request: source not set");
                 }
+                if(delayHandler) {
+                    clearTimeout(delayHandler);
+                    delayHandler = null;
+                }
 
                 // set up the element based on source
                 if (typeof source === 'string') {
@@ -1693,6 +2370,8 @@ if (!((jsf && jsf.specversion && jsf.specversion > 20000 ) &&
                 if (!element.name) {
                     element.name = element.id;
                 }
+                
+                context.element = element;
 
                 if (typeof(options) === 'undefined' || options === null) {
                     options = {};
@@ -1720,6 +2399,9 @@ if (!((jsf && jsf.specversion && jsf.specversion > 20000 ) &&
                 if (!form) {
                     throw new Error("jsf.ajax.request: Method must be called within a form");
                 }
+                context.form = form;
+                context.formid = form.id;
+                
                 var viewState = jsf.getViewState(form);
 
                 // Set up additional arguments to be used in the request..
@@ -1731,10 +2413,20 @@ if (!((jsf && jsf.specversion && jsf.specversion > 20000 ) &&
 
                 var args = {};
 
-                args["javax.faces.source"] = element.id;
+                var namingContainerId = options["com.sun.faces.namingContainerId"];
+                
+                if (typeof(namingContainerId) === 'undefined' || options === null) {
+                	namingContainerId = "";
+                }                
+
+                args[namingContainerId + "javax.faces.source"] = element.id;
 
                 if (event && !!event.type) {
-                    args["javax.faces.partial.event"] = event.type;
+                    args[namingContainerId + "javax.faces.partial.event"] = event.type;
+                }
+
+                if ("resetValues" in options) {
+                    args[namingContainerId + "javax.faces.partial.resetValues"] = options.resetValues;
                 }
 
                 // If we have 'execute' identifiers:
@@ -1758,11 +2450,11 @@ if (!((jsf && jsf.specversion && jsf.specversion > 20000 ) &&
                         } else {
                             options.execute = "@all";
                         }
-                        args["javax.faces.partial.execute"] = options.execute;
+                        args[namingContainerId + "javax.faces.partial.execute"] = options.execute;
                     }
                 } else {
                     options.execute = element.name + " " + element.id;
-                    args["javax.faces.partial.execute"] = options.execute;
+                    args[namingContainerId + "javax.faces.partial.execute"] = options.execute;
                 }
 
                 if (options.render) {
@@ -1775,51 +2467,77 @@ if (!((jsf && jsf.specversion && jsf.specversion > 20000 ) &&
                         } else {
                             options.render = "@all";
                         }
-                        args["javax.faces.partial.render"] = options.render;
+                        args[namingContainerId + "javax.faces.partial.render"] = options.render;
                     }
                 }
+                var explicitlyDoNotDelay = ((typeof options.delay == 'undefined') || (typeof options.delay == 'string') &&
+                                            (options.delay.toLowerCase() == 'none'));
+                var delayValue;
+                if (typeof options.delay == 'number') {
+                    delayValue = options.delay;
+                } else  {
+                    var converted = parseInt(options.delay);
+                    
+                    if (!explicitlyDoNotDelay && isNaN(converted)) {
+                        throw new Error('invalid value for delay option: ' + options.delay);
+                    }
+                    delayValue = converted;
+                }
 
                 // remove non-passthrough options
                 delete options.execute;
                 delete options.render;
                 delete options.onerror;
                 delete options.onevent;
+                delete options.delay;
+
                 // copy all other options to args
                 for (var property in options) {
                     if (options.hasOwnProperty(property)) {
-                        args[property] = options[property];
+                        if (property != "com.sun.faces.namingContainerId") {
+                            args[namingContainerId + property] = options[property];
+                        }
                     }
                 }
 
-                args["javax.faces.partial.ajax"] = "true";
+                args[namingContainerId + "javax.faces.partial.ajax"] = "true";
                 args["method"] = "POST";
 
                 // Determine the posting url
 
-                var encodedUrlField = form.elements["javax.faces.encodedURL"];
+                var encodedUrlField = getEncodedUrlElement(form);
                 if (typeof encodedUrlField == 'undefined') {
                     args["url"] = form.action;
                 } else {
                     args["url"] = encodedUrlField.value;
                 }
+                var sendRequest = function() {
+                    var ajaxEngine = new AjaxEngine(context);
+                    ajaxEngine.setupArguments(args);
+                    ajaxEngine.queryString = viewState;
+                    ajaxEngine.context.onevent = onevent;
+                    ajaxEngine.context.onerror = onerror;
+                    ajaxEngine.context.sourceid = element.id;
+                    ajaxEngine.context.render = args[namingContainerId + "javax.faces.partial.render"];
+                    ajaxEngine.sendRequest();
+
+                    // null out element variables to protect against IE memory leak
+                    element = null;
+                    form = null;
+                    sendRequest = null;
+                    context = null;
+                };
 
-                var ajaxEngine = new AjaxEngine();
-                ajaxEngine.setupArguments(args);
-                ajaxEngine.queryString = viewState;
-                ajaxEngine.context.onevent = onevent;
-                ajaxEngine.context.onerror = onerror;
-                ajaxEngine.context.sourceid = element.id;
-                ajaxEngine.context.formid = form.id;
-                ajaxEngine.context.render = args["javax.faces.partial.render"];
-                ajaxEngine.sendRequest();
-
-                // null out element variables to protect against IE memory leak
-                element = null;
-                form = null;
+                if (explicitlyDoNotDelay) {
+                    sendRequest();
+                } else {
+                    delayHandler = setTimeout(sendRequest, delayValue);
+                }
 
             },
             /**
-             * <p>Receive an Ajax response from the server.
+             * <p><span class="changed_modified_2_2">Receive</span> an Ajax response 
+             * from the server.
              * <p><b>Usage:</b></p>
              * <pre><code>
              * jsf.ajax.response(request, context);
@@ -1847,20 +2565,67 @@ if (!((jsf && jsf.specversion && jsf.specversion > 20000 ) &&
              * will be updated.  The contents of the <code>CDATA</code> section is the data that 
              * will be used when updating the contents of the DOM element as specified by the
              * <code><update></code> element identifier.
-             * <li>If an <code>update</code> element is found in the response
+             * <li>If an <code><update></code> element is found in the response
              * with the identifier <code>javax.faces.ViewRoot</code>:
              * <pre><code><update id="javax.faces.ViewRoot">
              *    <![CDATA[...]]>
              * </update></code></pre>
              * Update the entire DOM replacing the appropriate <code>head</code> and/or
              * <code>body</code> sections with the content from the response.</li>
-             * <li>If an <code>update</code> element is found in the response with the identifier
+
+             * <li class="changed_modified_2_2">If an
+             * <code><update></code> element is found in the 
+             * response with an identifier containing
              * <code>javax.faces.ViewState</code>:
-             * <pre><code><update id="javax.faces.ViewState">
+
+             * <pre><code><update id="<VIEW_ROOT_CONTAINER_CLIENT_ID><SEP>javax.faces.ViewState<SEP><UNIQUE_PER_VIEW_NUMBER>">
+             *    <![CDATA[...]]>
+             * </update></code></pre>
+
+             * locate and update the submitting form's
+             * <code>javax.faces.ViewState</code> value with the
+             * <code>CDATA</code> contents from the response.
+             * <SEP&gt: is the currently configured
+             * <code>UINamingContainer.getSeparatorChar()</code>.
+             * <VIEW_ROOT_CONTAINER_CLIENT_ID> is the return from
+             * <code>UIViewRoot.getContainerClientId()</code> on the
+             * view from whence this state originated.
+             * <UNIQUE_PER_VIEW_NUMBER> is a number that must be
+             * unique within this view, but must not be included in the
+             * view state.  This requirement is simply to satisfy XML
+             * correctness in parity with what is done in the
+             * corresponding non-partial JSF view.  Locate and update
+             * the <code>javax.faces.ViewState</code> value for all
+             * forms specified in the <code>render</code> target
+             * list.</li>
+
+             * <li class="changed_added_2_2">If an
+             * <code>update</code> element is found in the response with
+             * an identifier containing
+             * <code>javax.faces.ClientWindow</code>:
+
+             * <pre><code><update id="<VIEW_ROOT_CONTAINER_CLIENT_ID><SEP>javax.faces.ClientWindow<SEP><UNIQUE_PER_VIEW_NUMBER>">
              *    <![CDATA[...]]>
              * </update></code></pre>
-             * locate and update the submitting form's <code>javax.faces.ViewState</code> value
-             * with the <code>CDATA</code> contents from the response.</li>
+
+             * locate and update the submitting form's
+             * <code>javax.faces.ClientWindow</code> value with the
+             * <code>CDATA</code> contents from the response.
+             * <SEP&gt: is the currently configured
+             * <code>UINamingContainer.getSeparatorChar()</code>.
+             * <VIEW_ROOT_CONTAINER_CLIENT_ID> is the return from
+             * <code>UIViewRoot.getContainerClientId()</code> on the
+             * view from whence this state originated.             
+             * <UNIQUE_PER_VIEW_NUMBER> is a number that must be
+             * unique within this view, but must not be included in the
+             * view state.  This requirement is simply to satisfy XML
+             * correctness in parity with what is done in the
+             * corresponding non-partial JSF view.  Locate and update
+             * the <code>javax.faces.ClientWindow</code> value for all
+             * forms specified in the <code>render</code> target
+             * list.</li>
+
+
              * <li>If an <code>update</code> element is found in the response with the identifier
              * <code>javax.faces.ViewHead</code>:
              * <pre><code><update id="javax.faces.ViewHead">
@@ -1884,29 +2649,41 @@ if (!((jsf && jsf.specversion && jsf.specversion > 20000 ) &&
              * the <code><update></code> element's <code>CDATA</code> contents.</li>
              * </li>
              * <p><i>Insert Element Processing</i></p>
-             * <li>If an <code><insert></code> element is found in the response with the
-             * attribute <code>before</code>:
-             * <pre><code><insert id="insert id" before="before id">
-             *    <![CDATA[...]]>
+    
+             * <li>If an <code><insert></code> element is found in
+             * the response with a nested <code><before></code>
+             * element:
+            
+             * <pre><code><insert>
+             *     <before id="before id">
+             *        <![CDATA[...]]>
+             *     </before>
              * </insert></code></pre>
+             * 
              * <ul>
-             * <li>Extract this <code><insert></code> element's <code>CDATA</code> contents
+             * <li>Extract this <code><before></code> element's <code>CDATA</code> contents
              * from the response.</li>
              * <li>Find the DOM element whose identifier matches <code>before id</code> and insert
-             * the <code><insert></code> element's <code>CDATA</code> content before
+             * the <code><before></code> element's <code>CDATA</code> content before
              * the DOM element in the document.</li>
              * </ul>
              * </li>
-             * <li>If an <code><insert></code> element is found in the response with the
-             * attribute <code>after</code>:
-             * <pre><code><insert id="insert id" after="after id">
-             *    <![CDATA[...]]>
+             * 
+             * <li>If an <code><insert></code> element is found in 
+             * the response with a nested <code><after></code>
+             * element:
+             * 
+             * <pre><code><insert>
+             *     <after id="after id">
+             *        <![CDATA[...]]>
+             *     </after>
              * </insert></code></pre>
+             * 
              * <ul>
-             * <li>Extract this <code><insert></code> element's <code>CDATA</code> contents
+             * <li>Extract this <code><after></code> element's <code>CDATA</code> contents
              * from the response.</li>
              * <li>Find the DOM element whose identifier matches <code>after id</code> and insert
-             * the <code><insert></code> element's <code>CDATA</code> content after
+             * the <code><after></code> element's <code>CDATA</code> content after
              * the DOM element in the document.</li>
              * </ul>
              * </li>
@@ -1957,6 +2734,10 @@ if (!((jsf && jsf.specversion && jsf.specversion > 20000 ) &&
              * <p><i>Extensions</i></p>
              * <li>The <code><extensions></code> element provides a way for framework
              * implementations to provide their own information.</li>
+             * <p><li>The implementation must check if <script> elements in the response can
+             * be automatically run, as some browsers support this feature and some do not.  
+             * If they can not be run, then scripts should be extracted from the response and
+             * run separately.</li></p> 
              * </ul>
              *
              * </p>
@@ -1995,12 +2776,36 @@ if (!((jsf && jsf.specversion && jsf.specversion > 20000 ) &&
                     return;
                 }
 
-                var responseType = xml.getElementsByTagName("partial-response")[0].firstChild;
+                var partialResponse = xml.getElementsByTagName("partial-response")[0];
+                var partialResponseId = partialResponse.getAttribute("id");
+                var responseType = partialResponse.firstChild;
+
+                for (var i = 0; i < partialResponse.childNodes.length; i++) {
+                    if (partialResponse.childNodes[i].nodeName === "error") {
+                        responseType = partialResponse.childNodes[i];
+                        break;
+                    }
+                }
 
                 if (responseType.nodeName === "error") { // it's an error
-                    var errorName = responseType.firstChild.firstChild.nodeValue;
-                    var errorMessage = responseType.firstChild.nextSibling.firstChild.nodeValue;
+                    var errorName = "";
+                    var errorMessage = "";
+                    
+                    var element = responseType.firstChild;
+                    if (element.nodeName === "error-name") {
+                        if (null != element.firstChild) {
+                            errorName = element.firstChild.nodeValue;
+                        }
+                    }
+                    
+                    element = responseType.firstChild.nextSibling;
+                    if (element.nodeName === "error-message") {
+                        if (null != element.firstChild) {
+                            errorMessage = element.firstChild.nodeValue;
+                        }
+                    }
                     sendError(request, context, "serverError", null, errorName, errorMessage);
+                    sendEvent(request, context, "success");
                     return;
                 }
 
@@ -2023,7 +2828,7 @@ if (!((jsf && jsf.specversion && jsf.specversion > 20000 ) &&
                     for (var i = 0; i < changes.length; i++) {
                         switch (changes[i].nodeName) {
                             case "update":
-                                doUpdate(changes[i], context);
+                                doUpdate(changes[i], context, partialResponseId);
                                 break;
                             case "delete":
                                 doDelete(changes[i]);
@@ -2148,13 +2953,16 @@ if (!((jsf && jsf.specversion && jsf.specversion > 20000 ) &&
         };
         for (var i = 0; i < len; i++) {
             var el = els[i];
+            if (el.name === "") {
+                continue;
+            }
             if (!el.disabled) {
                 switch (el.type) {
-                    case 'text':
-                    case 'password':
-                    case 'hidden':
-                    case 'textarea':
-                        addField(el.name, el.value);
+                    case 'button':
+                    case 'submit':
+                    case 'reset':
+                    case 'image':
+                    case 'file':
                         break;
                     case 'select-one':
                         if (el.selectedIndex >= 0) {
@@ -2171,6 +2979,14 @@ if (!((jsf && jsf.specversion && jsf.specversion > 20000 ) &&
                     case 'checkbox':
                     case 'radio':
                         if (el.checked) {
+                            addField(el.name, el.value || 'on');
+                        }
+                        break;
+                    default:
+                        // this is for any input incl.  text', 'password', 'hidden', 'textarea'
+                        var nodeName = el.nodeName.toLowerCase();
+                        if (nodeName === "input" || nodeName === "select" ||
+                            nodeName === "object" || nodeName === "textarea") { 
                             addField(el.name, el.value);
                         }
                         break;
@@ -2182,6 +2998,130 @@ if (!((jsf && jsf.specversion && jsf.specversion > 20000 ) &&
     };
 
     /**
+     * <p class="changed_added_2_2">Return the windowId of the window
+     * in which the argument form is rendered.</p>
+
+     * @param {optional String|DomNode} node. Determine the nature of
+     * the argument.  If not present, search for the windowId within
+     * <code>document.forms</code>.  If present and the value is a
+     * string, assume the string is a DOM id and get the element with
+     * that id and start the search from there.  If present and the
+     * value is a DOM element, start the search from there.
+
+     * @returns String The windowId of the current window, or null 
+     *  if the windowId cannot be determined.
+
+     * @throws an error if more than one unique WindowId is found.
+
+     * @function jsf.getViewState
+     */
+    jsf.getClientWindow = function(node) {
+        var FORM = "form";
+        var WIN_ID = "javax.faces.ClientWindow";
+
+        /**
+         * Find javax.faces.ClientWindow field for a given form.
+         * @param form
+         * @ignore
+         */
+        var getWindowIdElement = function getWindowIdElement(form) {
+        	var windowIdElement = form['javax.faces.ClientWindow'];
+
+            if (windowIdElement) {
+                return windowIdElement;
+            } else {
+                var formElements = form.elements;
+                for (var i = 0, length = formElements.length; i < length; i++) {
+                    var formElement = formElements[i];
+                    console.log('!@#$ formElement.name=' + formElement.name);
+                    if (formElement.name.indexOf('javax.faces.ClientWindow') >= 0) {
+                        return formElement;
+                    }
+                }
+            }
+
+            return undefined;
+        };
+
+        var fetchWindowIdFromForms = function (forms) {
+            var result_idx = {};
+            var result;
+            var foundCnt = 0;
+            for (var cnt = forms.length - 1; cnt >= 0; cnt--) {
+                var UDEF = 'undefined';
+                var currentForm = forms[cnt];
+                var windowIdElement = getWindowIdElement(currentForm);
+                var windowId = windowIdElement && windowIdElement.value;
+                if (UDEF != typeof windowId) {
+                    if (foundCnt > 0 && UDEF == typeof result_idx[windowId]) throw Error("Multiple different windowIds found in document");
+                    result = windowId;
+                    result_idx[windowId] = true;
+                    foundCnt++;
+                }
+            }
+            return result;
+        }
+
+        /**
+         * @ignore
+         */
+        var getChildForms = function (currentElement) {
+            //Special condition no element we return document forms
+            //as search parameter, ideal would be to
+            //have the viewroot here but the frameworks
+            //can deal with that themselves by using
+            //the viewroot as currentElement
+            if (!currentElement) {
+                return document.forms;
+            }
+            
+            var targetArr = [];
+            if (!currentElement.tagName) return [];
+            else if (currentElement.tagName.toLowerCase() == FORM) {
+                targetArr.push(currentElement);
+                return targetArr;
+            }
+            
+            //if query selectors are supported we can take
+            //a non recursive shortcut
+            if (currentElement.querySelectorAll) {
+                return currentElement.querySelectorAll(FORM);
+            }
+            
+            //old recursive way, due to flakeyness of querySelectorAll
+            for (var cnt = currentElement.childNodes.length - 1; cnt >= 0; cnt--) {
+                var currentChild = currentElement.childNodes[cnt];
+                targetArr = targetArr.concat(getChildForms(currentChild, FORM));
+            }
+            return targetArr;
+        }
+        
+        /**
+         * @ignore
+         */
+        var fetchWindowIdFromURL = function () {
+            var href = window.location.href;
+            var windowId = "windowId";
+            var regex = new RegExp("[\\?&]" + windowId + "=([^&#\\;]*)");
+            var results = regex.exec(href);
+            //initial trial over the url and a regexp
+            if (results != null) return results[1];
+            return null;
+        }
+        
+        //byId ($)
+        var finalNode = (node && (typeof node == "string" || node instanceof String)) ?
+            document.getElementById(node) : (node || null);
+        
+        var forms = getChildForms(finalNode);
+        var result = fetchWindowIdFromForms(forms);
+        return (null != result) ? result : fetchWindowIdFromURL();
+        
+
+    };
+
+
+    /**
      * The namespace for JavaServer Faces JavaScript utilities.
      * @name jsf.util
      * @namespace
@@ -2228,12 +3168,18 @@ if (!((jsf && jsf.specversion && jsf.specversion > 20000 ) &&
     };
 
     /**
+     * <p class="changed_added_2_2">The result of calling
+     * <code>UINamingContainer.getNamingContainerSeparatorChar().</code></p>
+     */
+    jsf.separatorchar = '#{facesContext.namingContainerSeparatorChar}';
+
+    /**
      * <p>An integer specifying the specification version that this file implements.
      * It's format is: rightmost two digits, bug release number, next two digits,
      * minor release number, leftmost digits, major release number.
      * This number may only be incremented by a new release of the specification.</p>
      */
-    jsf.specversion = 20000;
+    jsf.specversion = 22000;
 
     /**
      * <p>An integer specifying the implementation version that this file implements.
diff --git a/jsf-api/src/main/resources/managed-bean-overview.html b/jsf-api/src/main/resources/managed-bean-overview.html
index 2ab44b1..bcd6f37 100644
--- a/jsf-api/src/main/resources/managed-bean-overview.html
+++ b/jsf-api/src/main/resources/managed-bean-overview.html
@@ -3,24 +3,50 @@
 <head>
 <!--
 
-  @(#)package.html	1.60 98/01/27
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
-  Copyright 1998 Sun Microsystems, Inc. 901 San Antonio Road, 
-  Palo Alto, California, 94303, U.S.A.  All Rights Reserved.
+    Copyright (c) 1998-2011 Oracle and/or its affiliates. All rights reserved.
 
-  This software is the confidential and proprietary information of Sun
-  Microsystems, Inc. ("Confidential Information").  You shall not
-  disclose such Confidential Information and shall use it only in
-  accordance with the terms of the license agreement you entered into
-  with Sun.
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
 
-  CopyrightVersion 1.2
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 </head>
 <body bgcolor="white">
 
-<p class="changed_added_2_0">Please see the <a
+<p class="changed_added_2_0"><span class="changed_modified_2_2">Please</span> see the <a
 href="#overview_description">description</a> for the specification of
 managed bean annotations in JSF 2.0.<p>
 
@@ -29,16 +55,12 @@ managed bean annotations in JSF 2.0.<p>
 <p>These javadoc files constitute the “Faces Managed Bean
 Annotation Specification for Containers Conforming to Servlet 2.5 and Beyond”</p>
 
-<p>At the time of this writing, a forthcoming JCP effort is being
-planned to extract the specification for managed beans from JSF and
-place it into its own specification.  To account for this effort and to
-avoid introducing classes into JSF 2.0 that would have to be deprecated
-when this effort is complete, implementations of JSF 2.0 are not
-required to implement the “Faces Managed Bean Annotation
-Specification for Containers Conforming to Servlet 2.5”.  However,
-JSF implementations are strongly encouraged to implement this
-specification, as it provides significant improvements in ease of
-use.</p>
+<p class="changed_added_2_2">The annotations in this package may be
+deprecated in a future version of this specification because they
+duplicate functionality provided by other specifications included in
+JavaEE.  When possible, the corresponding annotations from the
+appropriate Java EE specification should be used in preference to these
+annotations.</p>
 
 <p>The annotations must be processed as specified in section JSF.11.5.1.</p>
 
diff --git a/jsf-api/src/main/resources/mojarra-jsf-api-probe-provider.xml b/jsf-api/src/main/resources/mojarra-jsf-api-probe-provider.xml
index cb01750..a5eb877 100644
--- a/jsf-api/src/main/resources/mojarra-jsf-api-probe-provider.xml
+++ b/jsf-api/src/main/resources/mojarra-jsf-api-probe-provider.xml
@@ -1,51 +1,58 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 2009 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
--->
-<probe-providers>
-    <probe-provider moduleProviderName="glassfish" moduleName="jsf"
-                    probeProviderName="faces-servlet"
-                    class="javax.faces.webapp.FacesServlet">
-        <probe name="requestStart">
-            <method>requestStart</method>
-            <probe-param type="java.lang.String" name="requestUri"/>
-            <return-param type="void"/>
-        </probe>
-        <probe name="requestEnd">
-            <method>requestEnd</method>
-            <return-param type="void"/>
-        </probe>
-    </probe-provider>
-</probe-providers>
\ No newline at end of file
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2009-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<probe-providers>
+    <probe-provider moduleProviderName="glassfish" moduleName="jsf"
+                    probeProviderName="faces-servlet"
+                    class="javax.faces.webapp.FacesServlet">
+        <probe name="requestStart">
+            <method>requestStart</method>
+            <probe-param type="java.lang.String" name="requestUri"/>
+            <return-param type="void"/>
+        </probe>
+        <probe name="requestEnd">
+            <method>requestEnd</method>
+            <return-param type="void"/>
+        </probe>
+    </probe-provider>
+</probe-providers>
diff --git a/jsf-api/src/main/resources/overview.html b/jsf-api/src/main/resources/overview.html
index 5d5be8c..e5526fc 100644
--- a/jsf-api/src/main/resources/overview.html
+++ b/jsf-api/src/main/resources/overview.html
@@ -3,20 +3,46 @@
 <head>
 <!--
 
-  @(#)package.html	1.60 98/01/27
-
-  Copyright 1998 Sun Microsystems, Inc. 901 San Antonio Road, 
-  Palo Alto, California, 94303, U.S.A.  All Rights Reserved.
-
-  This software is the confidential and proprietary information of Sun
-  Microsystems, Inc. ("Confidential Information").  You shall not
-  disclose such Confidential Information and shall use it only in
-  accordance with the terms of the license agreement you entered into
-  with Sun.
-
-  CopyrightVersion 1.2
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1998-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 </head>
 <body bgcolor="white">
 
@@ -26,7 +52,7 @@ Specification.<p>
 
 <p>The Java Server Faces Specification is composed of several documents:</p>
 
-<table border="1">
+<table border="1" width="80%">
 
 <colgroup>
 
@@ -39,7 +65,7 @@ Specification.<p>
 
 <tr>
 
-<th>Specification Document</th>  <th>Available formats</th>
+<th width="75%">Specification Document</th>  <th>Available formats</th>
 
 </tr>
 
@@ -49,16 +75,46 @@ Specification.<p>
 
 <tr class="changed_modified_2_0">
 
-<td><span class="changed_modified_2_0_rev_a">The API Javadocs (this document)</span></td>
+<td><span class="changed_modified_2_0_rev_a changed_modified_2_1 changed_modified_2_2 changed_modified_2_3">The API Javadocs (this document)</span></td>
 
 <td>generated HTML
 </td>
 
 </tr>
 
+<tr class="changed_added_2_2">
+
+<td><span class="changed_added_2_2">faces-config XML Schema Documentation</span></td>
+
+<td><a target="_" href="web-facesconfig.html">generated HTML</a> <a target="_" href="web-facesconfig.xsd">xsd</a>
+</td>
+
+</tr>
+
+<tr class="changed_added_2_2">
+
+<td><span class="changed_added_2_2">facelet-taglibrary XML Schema Documentation</span></td>
+
+<td><a target="_" href="web-facelettaglibrary.html">generated HTML</a> <a target="_" href="web-facelettaglibrary.xsd">xsd</a>
+</td>
+
+</tr>
+
+<tr class="changed_added_2_2">
+
+<td><span class="changed_added_2_2">facelet-partialresponse XML Schema Documentation</span></td>
+
+<td><a target="_" href="web-partialresponse.html">generated HTML</a> <a target="_" href="web-partialresponse.xsd">xsd</a>
+</td>
+
+</tr>
+
+
 <tr class="changed_modified_2_0">
 
-<td>The Standard HTML RenderKit Specification</td>
+<td><span class="changed_modified_2_0_rev_a changed_modified_2_2"><span
+class="changed_modified_2_1">The Standard HTML RenderKit
+Specification</span></span></td>
 
 <td><a target="_" href="../renderkitdocs/index.html">generated HTML</a></td>
 
@@ -75,17 +131,16 @@ Specification.<p>
 
 <tr class="changed_added_2_0">
 
-<td>The Facelets Taglibarydocs (including the new "composite" Facelets
-tag library)</td>
+<td><span class="changed_modified_2_0_rev_a changed_modified_2_1 changed_modified_2_2">The Facelets Taglibarydocs</span></td>
 
 <td><a target="_" href="../vdldocs/facelets/index.html">generated HTML</a>
 </td>
 
 </tr>
 
-<tr class="changed_added_2_0">
+<tr>
 
-<td>The JSDoc for the JavaScript API (including Ajax functionality)</td>
+<td><span class="changed_added_2_0 changed_modified_2_2">The JSDoc for the JavaScript API (including Ajax functionality)</span></td>
 
 <td><a target="_" href="../jsdocs/index.html">generated HTML</a>
 </td>
@@ -95,7 +150,8 @@ tag library)</td>
 
 <tr  class="changed_modified_2_0">
 
-<td><a name="prose_document">The prose document</a></td>
+<td><span class="changed_modified_2_0_rev_a changed_modified_2_1 changed_modified_2_2"><a
+name="prose_document">The prose document (only available in official JCP releases and expert group SNAPSHOTs)</a></span></td>
 
 <td><a target="_" href="../JSF_ at build.number@.pdf">PDF</a></td>
 
@@ -106,7 +162,7 @@ tag library)</td>
 </table>
 
 <p>The following table includes sub-specifications that are not required
-to be implemented for compliance with JSF 2.0.  Implementations are
+to be implemented for compliance with JSF 2.1.  Implementations are
 strongly recommend to implement these specifications to maximize the
 ease of use for the users.</p>
 
@@ -133,7 +189,7 @@ ease of use for the users.</p>
 
 <tr class="changed_added_2_0">
 
-<td>Faces Managed Bean Annotation Specification For Containers Conforming to Servlet 2.5 and Beyond</td>
+<td><span class="changed_modified_2_2">Faces</span> Managed Bean Annotation Specification For Containers Conforming to Servlet 2.5 and Beyond</td>
 
 <td><a target="_" href="../managed-bean-javadocs/index.html">generated HTML</a></td>
 
@@ -153,21 +209,21 @@ the spec prose document for a list of changes.</p>
 
 <tr>
 
-<td class="changed_added_2_0">Added in version 2.0
+<td class="changed_added_2_0 changed_added_2_0_rev_a changed_added_2_2">Added in this version of the spec
 </td>
 
 </tr>
 
 <tr>
 
-<td class="changed_modified_2_0">Modified in version 2.0
+<td class="changed_modified_2_0 changed_modified_2_0_rev_a changed_modified_2_2">Modified in this version of the spec
 </td>
 
 </tr>
 
 <tr>
 
-<td class="changed_deleted_2_0">Deleted or deprecated in version 2.0
+<td class="changed_deleted_2_0 changed_deleted_0_rev_a changed_deleted_2_2">Deleted or deprecated in this version of the spec
 </td>
 
 </tr>
diff --git a/jsf-api/src/test/java/javax/faces/FactoryFinderTestCase.java b/jsf-api/src/test/java/javax/faces/FactoryFinderTestCase.java
deleted file mode 100644
index ad64918..0000000
--- a/jsf-api/src/test/java/javax/faces/FactoryFinderTestCase.java
+++ /dev/null
@@ -1,221 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package javax.faces;
-
-
-import java.io.IOException;
-import java.io.File;
-import java.util.Iterator;
-import java.util.List;
-import junit.framework.TestCase;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-/**
- * <p>Unit tests for {@link UISelectBooleanBase}.</p>
- */
-
-public class FactoryFinderTestCase extends TestCase {
-
-
-    // ------------------------------------------------------------ Constructors
-
-
-    /**
-     * Construct a new instance of this test case.
-     *
-     * @param name Name of the test case
-     */
-    public FactoryFinderTestCase(String name) {
-        super(name);
-    }
-
-    public static String FACTORIES[][] = {
-	{ FactoryFinder.APPLICATION_FACTORY, 
-	  "com.sun.faces.mock.MockApplicationFactory"
-	},
-	{ FactoryFinder.EXTERNAL_CONTEXT_FACTORY, 
-	  "com.sun.faces.mock.MockExternalContextFactory"
-	},
-	{ FactoryFinder.FACES_CONTEXT_FACTORY, 
-	  "com.sun.faces.mock.MockFacesContextFactory"
-	},
-	{ FactoryFinder.LIFECYCLE_FACTORY, 
-	  "com.sun.faces.mock.MockLifecycleFactory"
-	},
-	{ FactoryFinder.RENDER_KIT_FACTORY, 
-	  "com.sun.faces.mock.MockRenderKitFactory"
-	}
-    };
-
-
-    // ---------------------------------------------------- Overall Test Methods
-
-
-    // Set up instance variables required by this test case.
-    public void setUp() throws Exception {
-        super.setUp();
-	for (int i = 0, len = FACTORIES.length; i < len; i++) {
-	    System.getProperties().remove(FACTORIES[i][0]);
-	}
-    }
-
-    
-    // Return the tests included in this test case.
-    public static Test suite() {
-        return (new TestSuite(FactoryFinderTestCase.class));
-    }
-
-
-    // Tear down instance variables required by ths test case
-    public void tearDown() throws Exception {
-        super.tearDown();
-	FactoryFinder.releaseFactories();
-	for (int i = 0, len = FACTORIES.length; i < len; i++) {
-	    System.getProperties().remove(FACTORIES[i][0]);
-	}
-    }
-
-
-    // ------------------------------------------------- Individual Test Methods
-
-    /**
-     * <p>verify that the overrides specified in the faces-config.xml in
-     * the user's webapp take precedence.</p>
-     */
-
-    public void testFacesConfigCase() throws Exception {
-	Object factory = null;
-	Class clazz = null;
-
-	FactoryFinder.releaseFactories();
-	int len, i = 0;
-
-	// simulate the "faces implementation specific" part
-	for (i = 0, len = FACTORIES.length; i < len; i++) {
-	    FactoryFinder.setFactory(FACTORIES[i][0],
-				     FACTORIES[i][1]);
-	}
-
-	// simulate the "WEB-INF/services" part
-	// this is done by the build.xml file
-	
-	// simulate the "webapp faces-config.xml" part
-	FactoryFinder.setFactory(FactoryFinder.FACES_CONTEXT_FACTORY,
-				 "javax.faces.mock.MockFacesContextFactoryExtender2");
-
-	for (i = 0, len = FACTORIES.length; i < len; i++) {
-	    clazz = Class.forName(FACTORIES[i][0]);
-	    factory = FactoryFinder.getFactory(FACTORIES[i][0]);
-	    assertTrue("Factory for " + clazz.getName() + 
-		       " not of expected type.",
-		       clazz.isAssignableFrom(factory.getClass()));
-	    clazz = Class.forName(FACTORIES[i][1]);
-	    assertTrue("Factory " + FACTORIES[i][1] + " not of expected type",
-		       clazz.isAssignableFrom(factory.getClass()));
-
-	}
-	// verify that the delegation works
-	assertTrue(System.getProperty(FACTORIES[2][0]).equals("javax.faces.mock.MockFacesContextFactoryExtender2"));
-	assertTrue(System.getProperty("oldImpl").equals("javax.faces.mock.MockFacesContextFactoryExtender"));
-
-        // Verify IllegalStateException when factory not found 
-	FactoryFinder.releaseFactories();
-	FactoryFinder.setFactory(FACTORIES[0][0], FACTORIES[0][1]);
-	FactoryFinder.setFactory(FACTORIES[1][0], FACTORIES[1][1]);
-	FactoryFinder.setFactory(FACTORIES[2][0], FACTORIES[2][1]);
-	FactoryFinder.setFactory(FACTORIES[4][0], FACTORIES[4][1]);
-        boolean exceptionThrown = false;
-        try {
-            factory = FactoryFinder.getFactory(FACTORIES[3][0]); 
-        } catch(IllegalStateException ise) {
-            exceptionThrown = true;
-        }
-        assertTrue(exceptionThrown);
-
-    }    
-
-    /**
-     * <p>In the absence of webapp faces-config.xml, verify that the
-     * overrides specified in the META-INF/services take precedence.</p>
-     */
-
-    public void testServicesCase() throws Exception {
-	Object factory = null;
-	Class clazz = null;
-
-	FactoryFinder.releaseFactories();
-	int len, i = 0;
-
-	// simulate the "faces implementation specific" part
-	for (i = 0, len = FACTORIES.length; i < len; i++) {
-	    FactoryFinder.setFactory(FACTORIES[i][0],
-				     FACTORIES[i][1]);
-	}
-
-	// simulate the "WEB-INF/services" part
-	// this is done by the build.xml file
-
-	// this testcase omits the "webapp faces-config.xml" simulation
-	
-	for (i = 0, len = FACTORIES.length; i < len; i++) {
-	    clazz = Class.forName(FACTORIES[i][0]);
-	    factory = FactoryFinder.getFactory(FACTORIES[i][0]);
-	    assertTrue("Factory for " + clazz.getName() + 
-		       " not of expected type.",
-		       clazz.isAssignableFrom(factory.getClass()));
-	    clazz = Class.forName(FACTORIES[i][1]);
-	    assertTrue("Factory " + FACTORIES[i][1] + " not of expected type",
-		       clazz.isAssignableFrom(factory.getClass()));
-
-	}
-	// verify that the delegation works
-	assertTrue(System.getProperty(FACTORIES[2][0]).equals("javax.faces.mock.MockFacesContextFactoryExtender"));
-	assertTrue(System.getProperty("oldImpl").equals("com.sun.faces.mock.MockFacesContextFactory"));
-
-
-    }
-
-    // ------------------------------------------- helpers
-    public static void printRelevantSystemProperties() {
-	System.out.println("++++++Relevant System Properties: ");
-	for (int i = 0, len = FACTORIES.length; i < len; i++) {
-	    System.out.println(FACTORIES[i][0] + ": " + 
-			       System.getProperty(FACTORIES[i][0]));
-	}
-    }
-}
diff --git a/jsf-api/src/test/java/javax/faces/FactoryFinderTestCase2.java b/jsf-api/src/test/java/javax/faces/FactoryFinderTestCase2.java
deleted file mode 100644
index ad0dde1..0000000
--- a/jsf-api/src/test/java/javax/faces/FactoryFinderTestCase2.java
+++ /dev/null
@@ -1,129 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package javax.faces;
-
-
-import java.io.IOException;
-import java.io.File;
-import java.util.Iterator;
-import java.util.List;
-import junit.framework.TestCase;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-/**
- * <p>Unit tests for {@link UISelectBooleanBase}.</p>
- */
-
-public class FactoryFinderTestCase2 extends TestCase {
-
-
-    // ------------------------------------------------------------ Constructors
-
-
-    /**
-     * Construct a new instance of this test case.
-     *
-     * @param name Name of the test case
-     */
-    public FactoryFinderTestCase2(String name) {
-        super(name);
-    }
-
-    // ---------------------------------------------------- Overall Test Methods
-
-
-    // Set up instance variables required by this test case.
-    public void setUp() throws Exception {
-        super.setUp();
-	for (int i = 0, len = FactoryFinderTestCase.FACTORIES.length; i < len; i++) {
-	    System.getProperties().remove(FactoryFinderTestCase.FACTORIES[i][0]);
-	}
-    }
-
-    
-    // Return the tests included in this test case.
-    public static Test suite() {
-        return (new TestSuite(FactoryFinderTestCase2.class));
-    }
-
-
-    // Tear down instance variables required by ths test case
-    public void tearDown() throws Exception {
-        super.tearDown();
-	FactoryFinder.releaseFactories();
-	for (int i = 0, len = FactoryFinderTestCase.FACTORIES.length; i < len; i++) {
-	    System.getProperties().remove(FactoryFinderTestCase.FACTORIES[i][0]);
-	}
-    }
-
-
-    // ------------------------------------------------- Individual Test Methods
-    /**
-     * <p>In the absence of webapp faces-config.xml and
-     * META-INF/services, verify that the overrides specified in
-     * the implementation faces-config.xml take precedence.</p>
-     */
-
-    public void testJSFImplCase() throws Exception {
-	Object factory = null;
-	Class clazz = null;
-
-	FactoryFinder.releaseFactories();
-	int len, i = 0;
-	
-	// this testcase only simulates the "faces implementation
-	// specific" part
-
-	for (i = 0, len = FactoryFinderTestCase.FACTORIES.length; i < len; i++) {
-	    FactoryFinder.setFactory(FactoryFinderTestCase.FACTORIES[i][0],
-				     FactoryFinderTestCase.FACTORIES[i][1]);
-	}
-	
-	for (i = 0, len = FactoryFinderTestCase.FACTORIES.length; i < len; i++) {
-	    clazz = Class.forName(FactoryFinderTestCase.FACTORIES[i][0]);
-	    factory = FactoryFinder.getFactory(FactoryFinderTestCase.FACTORIES[i][0]);
-	    assertTrue("Factory for " + clazz.getName() + 
-		       " not of expected type.",
-		       clazz.isAssignableFrom(factory.getClass()));
-	    clazz = Class.forName(FactoryFinderTestCase.FACTORIES[i][1]);
-	    assertTrue("Factory " + FactoryFinderTestCase.FACTORIES[i][1] + " not of expected type",
-		       clazz.isAssignableFrom(factory.getClass()));
-
-	}
-    }
-}
diff --git a/jsf-api/src/test/java/javax/faces/Messages.properties b/jsf-api/src/test/java/javax/faces/Messages.properties
deleted file mode 100644
index 5b7e896..0000000
--- a/jsf-api/src/test/java/javax/faces/Messages.properties
+++ /dev/null
@@ -1,50 +0,0 @@
-#
-# The contents of this file are subject to the terms
-# of the Common Development and Distribution License
-# (the License). You may not use this file except in
-# compliance with the License.
-# 
-# You can obtain a copy of the License at
-# https://javaserverfaces.dev.java.net/CDDL.html or
-# legal/CDDLv1.0.txt. 
-# See the License for the specific language governing
-# permission and limitations under the License.
-# 
-# When distributing Covered Code, include this CDDL
-# Header Notice in each file and include the License file
-# at legal/CDDLv1.0.txt.    
-# If applicable, add the following below the CDDL Header,
-# with the fields enclosed by brackets [] replaced by
-# your own identifying information:
-# "Portions Copyrighted [year] [name of copyright owner]"
-# 
-# [Name of File] [ver.__] [Date]
-# 
-# Copyright 2005 Sun Microsystems Inc. All Rights Reserved
-#
-
-javax.faces.validator.NOT_IN_RANGE=Validation Error: Specified attribute is not between the expected values of {0} and {1}.
-javax.faces.validator.NOT_IN_RANGE_detail=The value must be between {0} and {1}.
-javax.faces.validator.DoubleRangeValidator.NOT_IN_RANGE={2}: Validation Error: Specified attribute is not between the expected values of {0} and {1}.
-javax.faces.validator.DoubleRangeValidator.LIMIT=Validation Error: Specified attribute cannot be converted to proper type.
-javax.faces.validator.DoubleRangeValidator.MAXIMUM=Validation Error: Value is greater than allowable maximum of ''{0}''.
-javax.faces.validator.DoubleRangeValidator.MINIMUM=Validation Error: Value is less than allowable minimum of ''{0}''.
-javax.faces.validator.DoubleRangeValidator.TYPE=Validation Error: Value is not of the correct type.
-javax.faces.validator.LengthValidator.LIMIT=Validation Error: Specified attribute cannot be converted to proper type.
-javax.faces.validator.LengthValidator.MAXIMUM=Validation Error: Value is greater than allowable maximum of ''{0}''.
-javax.faces.validator.LengthValidator.MINIMUM=Validation Error: Value is less than allowable minimum of ''{0}''.
-javax.faces.component.UIInput.CONVERSION={0}: Conversion error during model data update
-javax.faces.component.UIInput.REQUIRED={0}: Validation Error: Value is required.
-javax.faces.component.UISelectOne.INVALID={0}: Validation Error: Value is not valid.
-javax.faces.component.UISelectMany.INVALID={0}: Validation Error: Value is not valid.
-javax.faces.validator.RequiredValidator.FAILED=Validation Error: Value is required.
-javax.faces.validator.LongRangeValidator.LIMIT=Validation Error: Specified attribute cannot be converted to proper type.
-javax.faces.validator.LongRangeValidator.MAXIMUM=Validation Error: Value is greater than allowable maximum of ''{0}''.
-javax.faces.validator.LongRangeValidator.MINIMUM=Validation Error: Value is less than allowable minimum of ''{0}''.
-javax.faces.validator.LongRangeValidator.NOT_IN_RANGE={2}: Validation Error: Specified attribute is not between the expected values of {0} and {1}.
-javax.faces.validator.LongRangeValidator.TYPE=Validation Error: Value is not of the correct type.
-javax.faces.validator.NOT_IN_RANGE_detail=Please re-enter a valid number.
-
-# Test messages for lookups
-buckaroo=banzai
-john=bigboote
diff --git a/jsf-api/src/test/java/javax/faces/TestUtil.java b/jsf-api/src/test/java/javax/faces/TestUtil.java
deleted file mode 100644
index 23d5c93..0000000
--- a/jsf-api/src/test/java/javax/faces/TestUtil.java
+++ /dev/null
@@ -1,207 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package javax.faces;
-
-import java.io.IOException;
-import java.io.PrintStream;
-import java.io.PrintWriter;
-import java.io.StringWriter;
-import java.io.Writer;
-import java.util.Iterator;
-import javax.faces.component.UIComponent;
-import javax.faces.component.ValueHolder;
-import javax.faces.model.SelectItem;
-
-public class TestUtil extends Object {
-
-    public static boolean keepWaiting = true;
-
-    /** 
-     * Usage: <P>
-     *
-     * Place a call to this method in the earliest possible entry point of
-     * your servlet app.  It will cause the app to enter into an infinite
-     * loop, sleeping until the static var keepWaiting is set to false.  The
-     * idea is that you attach your debugger to the servlet, then, set a
-     * breakpont in this method.  When it is hit, you use the debugger to set
-     * the keepWaiting class var to false.
-     */
-
-    public static void waitForDebugger() {
-	while (keepWaiting) {
-	    try {
-		Thread.sleep(5000);
-	    }
-	    catch (InterruptedException e) {
-		System.out.println("DebugUtil.waitForDebugger(): Exception: " + 
-				   e.getMessage());
-	    }
-	}
-    }
-
-    /**
-     * <p>If both args are <code>null</code>, return
-     * <code>true</code>.</p>
-     *
-     * <p>If both args are <code>non-null</code>, return
-     * s1.equals(s2)</p>.
-     *
-     * <p>Otherwise, return <code>false</code>.</p>
-     *
-     */
-
-    public static boolean equalsWithNulls(Object s1, Object s2) {
-	if (null == s1 && null == s2) {
-	    return true;
-	}
-
-	if (null != s1 && null != s2) {
-	    return s1.equals(s2);
-	}
-
-	return false;
-    }
-    
-    private static int curDepth = 0;
-
-    private static void indentPrintln(Writer out, String str) {
-        int i = 0;
-
-        // handle indentation
-        try {
-            for (i = 0; i < curDepth; i++) {
-                out.write("  ");
-            }
-            out.write(str + "\n");
-        } catch (IOException ex) {}
-    }
-
-    /**
-     * Output of printTree() as a String. 
-     * Useful when used with a Logger. For example:
-     *    logger.log(DebugUtil.printTree(root));
-     */
-    public static String printTree(UIComponent root) {
-        StringWriter writer = new StringWriter();
-        printTree(root, writer);
-        return writer.toString();
-    }
-
-    /**
-     * Output of printTree() to a PrintStream. 
-     * Usage:
-     *    DebugUtil.printTree(root, System.out);
-     */
-    public static void printTree(UIComponent root, PrintStream out) {
-        PrintWriter writer = new PrintWriter(out);
-        printTree(root, writer);
-        writer.flush();
-    }
-
-    public static void printTree(UIComponent root, Writer out) {
-        if (null == root) {
-            return;
-        }
-        int i = 0;
-        Object value = null;
-
-/* PENDING
-   indentPrintln(out, "===>Type:" + root.getComponentType());
-*/
-        indentPrintln(out, "id:" + root.getId());
-        indentPrintln(out, "type:" + root.toString());
-
-        Iterator items = null;
-        SelectItem curItem = null;
-        int j = 0;
-        
-        if (root instanceof ValueHolder) {
-            value = ((ValueHolder)root).getValue();
-        }
-        indentPrintln(out, "value= " + value);
-        
-        Iterator<String> it = root.getAttributes().keySet().iterator();
-        if (it != null) {
-            while (it.hasNext()) {
-                String attrValue = null, attrName = it.next();
-                Object attrObj = root.getAttributes().get(attrName);
-                
-                if (null != attrObj) {
-                    // chop off the address since we don't want to print
-                    // out anything that'll vary from invocation to
-                    // invocation
-                    attrValue = attrObj.toString();
-                    int at = 0;
-                    boolean doTruncate = false;
-                    if (-1 == (at = attrValue.indexOf("$"))) {
-                        if (-1 != (at = attrValue.indexOf("@"))) {
-                            doTruncate = true;
-                        }
-                    } else {
-                        doTruncate = true;
-                    }
-                    
-                    if (doTruncate) {
-                        attrValue = attrValue.substring(0, at);
-                    }
-                } else {
-                    attrValue = (String) attrObj;
-                }
-                
-                indentPrintln(out, "attr=" + attrName +
-                        " : " + attrValue);
-            }
-        }
-
-
-        curDepth++;
-        Iterator<UIComponent> componentIter = root.getChildren().iterator();
-        Iterator<UIComponent> facets = root.getFacets().values().iterator();
-        // print all the facets of this component
-        while(facets.hasNext()) {
-            printTree(facets.next(), out);
-        }
-        // print all the children of this component
-        while (componentIter.hasNext()) {
-            printTree(componentIter.next(), out);
-        }
-        curDepth--;
-    }
-
-    
-
-}
diff --git a/jsf-api/src/test/java/javax/faces/component/NamingContainerTestCase.java b/jsf-api/src/test/java/javax/faces/component/NamingContainerTestCase.java
deleted file mode 100644
index 1b333f7..0000000
--- a/jsf-api/src/test/java/javax/faces/component/NamingContainerTestCase.java
+++ /dev/null
@@ -1,589 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package javax.faces.component;
-
-
-import com.sun.faces.mock.MockApplication;
-import junit.framework.TestCase;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-import com.sun.faces.mock.MockExternalContext;
-import com.sun.faces.mock.MockFacesContext;
-import com.sun.faces.mock.MockHttpServletRequest;
-import com.sun.faces.mock.MockHttpServletResponse;
-import com.sun.faces.mock.MockHttpSession;
-import com.sun.faces.mock.MockLifecycle;
-import com.sun.faces.mock.MockRenderKit;
-import com.sun.faces.mock.MockServletConfig;
-import com.sun.faces.mock.MockServletContext;
-import java.util.HashMap;
-import java.util.Map;
-import javax.faces.FactoryFinder;
-import javax.faces.application.ApplicationFactory;
-import javax.faces.render.RenderKit;
-import javax.faces.render.RenderKitFactory;
-
-
-
-/**
- * <p>Unit tests for the {@link NamingContainer} functionality of all the
- * standard component classes.</p>
- */
-
-public class NamingContainerTestCase extends TestCase {
-
-
-    // ------------------------------------------------------ Instance Variables
-
-
-    // The root of the component tree to be tested
-    private UIViewRoot root = null;
-
-    // Mock object instances for our tests
-    protected MockApplication         application = null;
-    protected MockServletConfig       config = null;
-    protected MockExternalContext     externalContext = null;
-    protected MockFacesContext        facesContext = null;
-    protected MockLifecycle           lifecycle = null;
-    protected MockHttpServletRequest  request = null;
-    protected MockHttpServletResponse response = null;
-    protected MockServletContext      servletContext = null;
-    protected MockHttpSession         session = null;
-
-
-
-    // ------------------------------------------------------------ Constructors
-
-
-    // Construct a new instance of this test case.
-    public NamingContainerTestCase(String name) {
-        super(name);
-    }
-
-
-    // ---------------------------------------------------- Overall Test Methods
-
-
-    // Set up instance variables required by this test case.
-    public void setUp() {
-        
-        // Set up Servlet API Objects
-        servletContext = new MockServletContext();
-        servletContext.addInitParameter("appParamName", "appParamValue");
-        servletContext.setAttribute("appScopeName", "appScopeValue");
-        config = new MockServletConfig(servletContext);
-        session = new MockHttpSession();
-        session.setAttribute("sesScopeName", "sesScopeValue");
-        request = new MockHttpServletRequest(session);
-        request.setAttribute("reqScopeName", "reqScopeValue");
-        response = new MockHttpServletResponse();
-
-        // Set up Faces API Objects
-	FactoryFinder.setFactory(FactoryFinder.APPLICATION_FACTORY,
-				 "com.sun.faces.mock.MockApplicationFactory");
-	FactoryFinder.setFactory(FactoryFinder.RENDER_KIT_FACTORY,
-				 "com.sun.faces.mock.MockRenderKitFactory");
-
-        externalContext =
-            new MockExternalContext(servletContext, request, response);
-        lifecycle = new MockLifecycle();
-        facesContext = new MockFacesContext(externalContext, lifecycle);
-        ApplicationFactory applicationFactory = (ApplicationFactory)
-            FactoryFinder.getFactory(FactoryFinder.APPLICATION_FACTORY);
-        application = (MockApplication) applicationFactory.getApplication();
-        facesContext.setApplication(application);
-	root = new UIViewRoot();
-
-	root.setViewId("/viewId");
-        root.setRenderKitId(RenderKitFactory.HTML_BASIC_RENDER_KIT);
-        facesContext.setViewRoot(root);
-        RenderKitFactory renderKitFactory = (RenderKitFactory)
-            FactoryFinder.getFactory(FactoryFinder.RENDER_KIT_FACTORY);
-        RenderKit renderKit = new MockRenderKit();        
-        try {
-            renderKitFactory.addRenderKit(RenderKitFactory.HTML_BASIC_RENDER_KIT,
-                                          renderKit);
-        } catch (IllegalArgumentException e) {
-            ;
-        }
-        Map map = new HashMap();
-        externalContext.setRequestParameterMap(map);
-
-
-        
-
-    }
-
-
-    // Return the tests included in this test case.
-    public static Test suite() {
-
-        return (new TestSuite(NamingContainerTestCase.class));
-
-    }
-
-
-    // Tear down instance variables required by this test case.
-    public void tearDown() {
-
-        root = null;
-
-    }
-
-
-    // ------------------------------------------------- Individual Test Methods
-
-
-    // Test nested NamingContainer callbacks
-    public void testNested() {
-
-        TestNamingContainer a = new TestNamingContainer(); a.setId("a");
-        TestNamingContainer b = new TestNamingContainer(); b.setId("b");
-        TestNamingContainer d = new TestNamingContainer(); d.setId("d");
-        UIPanel e = new UIPanel(); e.setId("e");
-        UIPanel g = new UIPanel(); g.setId("g");
-        a.getChildren().add(b);
-        b.getChildren().add(d);
-        b.getChildren().add(g);
-        d.getChildren().add(e);
-
-        TestNamingContainer.trace(null);
-        assertTrue(a == a.findComponent("a"));
-       
-        TestNamingContainer.trace(null);
-        assertTrue(a == a.findComponent(":a"));
-        
-        TestNamingContainer.trace(null);
-        assertTrue(b == a.findComponent("b"));
-        
-        TestNamingContainer.trace(null);
-        assertTrue(b == a.findComponent(":b"));
-       
-        TestNamingContainer.trace(null);
-        assertTrue(d == a.findComponent("b:d"));
-       
-        TestNamingContainer.trace(null);
-        assertTrue(d == a.findComponent(":b:d"));
-        
-        TestNamingContainer.trace(null);
-        assertTrue(e == a.findComponent("b:d:e"));
-       
-        TestNamingContainer.trace(null);
-        assertTrue(e == a.findComponent(":b:d:e"));
-        
-        TestNamingContainer.trace(null);
-        assertTrue(g == a.findComponent("b:g"));
-        
-        TestNamingContainer.trace(null);
-        assertTrue(g == a.findComponent(":b:g"));        
-
-    }
-    
-    // Test nested NamingContainer callbacks
-    public void testNested2() {
-
-        TestNamingContainer a = new TestNamingContainer(); a.setId("a");
-        TestNamingContainer b = new TestNamingContainer(); b.setId("b");
-        TestNamingContainer d = new TestNamingContainer(); d.setId("b");
-        UIPanel e = new UIPanel(); e.setId("e");
-        UIPanel g = new UIPanel(); g.setId("g");
-        a.getChildren().add(b);
-        b.getChildren().add(d);
-        b.getChildren().add(g);
-        d.getChildren().add(e);
-
-        TestNamingContainer.trace(null);
-        assertTrue(a == a.findComponent("a"));       
-
-        TestNamingContainer.trace(null);
-        assertTrue(a == a.findComponent(":a"));        
-
-        TestNamingContainer.trace(null);
-        assertTrue(b == a.findComponent("b"));        
-
-        TestNamingContainer.trace(null);
-        assertTrue(b == a.findComponent(":b"));       
-
-        TestNamingContainer.trace(null);
-        assertTrue(d == a.findComponent("b:b"));          
-
-        TestNamingContainer.trace(null);
-        assertTrue(d == a.findComponent(":b:b"));         
-
-        TestNamingContainer.trace(null);
-        assertTrue(e == a.findComponent("b:b:e"));       
-
-        TestNamingContainer.trace(null);
-        assertTrue(e == a.findComponent(":b:b:e"));        
-
-        TestNamingContainer.trace(null);
-        assertTrue(g == a.findComponent("b:g"));        
-
-        TestNamingContainer.trace(null);
-        assertTrue(g == a.findComponent(":b:g"));        
-
-    }
-
-
-    // Test standard NamingContainer functionality
-    public void testStandard() {
-
-        // Set up a component hierarchy as follows (component ids in quotes):
-        // "a" - UIViewRoot at head of hierarchy
-        // "a" has children "b" and "c"
-        // "b" has children "d" and "g"
-        // "d" has children "e" and "f"
-        // "c" has children "h" and "i"
-        // Components "b" and "d" implement NamingContainer
-        UIViewRoot a = (UIViewRoot) root; a.setId("a");
-        UIForm b = new UIForm(); b.setId("b");
-        UIPanel c = new UIPanel(); c.setId("c");
-        UINamingContainer d = new UINamingContainer(); d.setId("d");
-        UIPanel e = new UIPanel(); e.setId("e");
-        UIPanel f = new UIPanel(); f.setId("f");
-        UIPanel g = new UIPanel(); g.setId("g");
-        UIPanel h = new UIPanel(); h.setId("h");
-        UIPanel i = new UIPanel(); i.setId("i");
-        a.getChildren().add(b);
-        a.getChildren().add(c);
-        b.getChildren().add(d);
-        b.getChildren().add(g);
-        c.getChildren().add(h);
-        c.getChildren().add(i);
-        d.getChildren().add(e);
-        d.getChildren().add(f);
-
-        // Positive relative searches from "a"
-        assertTrue(a == a.findComponent("a"));
-        assertTrue(b == a.findComponent("b"));
-        assertTrue(c == a.findComponent("c"));
-        assertTrue(d == a.findComponent("b:d"));
-        assertTrue(e == a.findComponent("b:d:e"));
-        assertTrue(f == a.findComponent("b:d:f"));
-        assertTrue(g == a.findComponent("b:g"));
-        assertTrue(h == a.findComponent("h"));
-        assertTrue(i == a.findComponent("i"));
-
-        // Negative relative searches from "a"
-        assertNull(a.findComponent("d"));
-        assertNull(a.findComponent("e"));
-        assertNull(a.findComponent("f"));
-        assertNull(a.findComponent("g"));
-
-        // Positive relative searches from "b"
-        assertTrue(b == b.findComponent("b"));
-        assertTrue(d == b.findComponent("d"));
-        assertTrue(e == b.findComponent("d:e"));
-        assertTrue(f == b.findComponent("d:f"));
-        assertTrue(g == b.findComponent("g"));
-
-        // Negative relative searches from "b"
-        assertNull(b.findComponent("a"));
-        assertNull(b.findComponent("c"));
-        assertNull(b.findComponent("e"));
-        assertNull(b.findComponent("f"));
-        assertNull(b.findComponent("h"));
-        assertNull(b.findComponent("i"));
-
-        // Positive relative searches from "c"
-        assertTrue(a == c.findComponent("a"));
-        assertTrue(b == c.findComponent("b"));
-        assertTrue(c == c.findComponent("c"));
-        assertTrue(d == c.findComponent("b:d"));
-        assertTrue(e == c.findComponent("b:d:e"));
-        assertTrue(f == c.findComponent("b:d:f"));
-        assertTrue(g == c.findComponent("b:g"));
-        assertTrue(h == c.findComponent("h"));
-        assertTrue(i == c.findComponent("i"));
-
-        // Negative relative searches from "c"
-        assertNull(c.findComponent("d"));
-        assertNull(c.findComponent("e"));
-        assertNull(c.findComponent("f"));
-        assertNull(c.findComponent("g"));
-
-        // Positive relative searches from "d"
-        assertTrue(d == d.findComponent("d"));
-        assertTrue(e == d.findComponent("e"));
-        assertTrue(f == d.findComponent("f"));
-
-        // Negative relative searches from "d"
-        assertNull(d.findComponent("a"));
-        assertNull(d.findComponent("b"));
-        assertNull(d.findComponent("c"));
-        assertNull(d.findComponent("g"));
-        assertNull(d.findComponent("h"));
-        assertNull(d.findComponent("i"));
-
-        // Positive relative searches from "e"
-        assertTrue(d == e.findComponent("d"));
-        assertTrue(e == e.findComponent("e"));
-        assertTrue(f == e.findComponent("f"));
-
-        // Negative relative searches from "e"
-        assertNull(e.findComponent("a"));
-        assertNull(e.findComponent("b"));
-        assertNull(e.findComponent("c"));
-        assertNull(e.findComponent("g"));
-        assertNull(e.findComponent("h"));
-        assertNull(e.findComponent("i"));
-
-        // Positive relative searches from "f"
-        assertTrue(d == f.findComponent("d"));
-        assertTrue(e == f.findComponent("e"));
-        assertTrue(f == f.findComponent("f"));
-
-        // Negative relative searches from "f"
-        assertNull(f.findComponent("a"));
-        assertNull(f.findComponent("b"));
-        assertNull(f.findComponent("c"));
-        assertNull(f.findComponent("g"));
-        assertNull(f.findComponent("h"));
-        assertNull(f.findComponent("i"));
-
-        // Positive relative searches from "g"
-        assertTrue(b == g.findComponent("b"));
-        assertTrue(d == g.findComponent("d"));
-        assertTrue(e == g.findComponent("d:e"));
-        assertTrue(f == g.findComponent("d:f"));
-        assertTrue(g == g.findComponent("g"));
-
-        // Negative relative searches from "g"
-        assertNull(g.findComponent("a"));
-        assertNull(g.findComponent("c"));
-        assertNull(g.findComponent("e"));
-        assertNull(g.findComponent("f"));
-        assertNull(g.findComponent("h"));
-        assertNull(g.findComponent("i"));
-
-        // Positive relative searches from "h"
-        assertTrue(a == h.findComponent("a"));
-        assertTrue(b == h.findComponent("b"));
-        assertTrue(c == h.findComponent("c"));
-        assertTrue(d == h.findComponent("b:d"));
-        assertTrue(e == h.findComponent("b:d:e"));
-        assertTrue(f == h.findComponent("b:d:f"));
-        assertTrue(g == h.findComponent("b:g"));
-        assertTrue(h == h.findComponent("h"));
-        assertTrue(i == h.findComponent("i"));
-
-        // Negative relative searches from "h"
-        assertNull(h.findComponent("d"));
-        assertNull(h.findComponent("e"));
-        assertNull(h.findComponent("f"));
-        assertNull(h.findComponent("g"));
-
-        // Positive relative searches from "i"
-        assertTrue(a == i.findComponent("a"));
-        assertTrue(b == i.findComponent("b"));
-        assertTrue(c == i.findComponent("c"));
-        assertTrue(d == i.findComponent("b:d"));
-        assertTrue(e == i.findComponent("b:d:e"));
-        assertTrue(f == i.findComponent("b:d:f"));
-        assertTrue(g == i.findComponent("b:g"));
-        assertTrue(h == i.findComponent("h"));
-        assertTrue(i == i.findComponent("i"));
-
-        // Negative relative searches from "i"
-        assertNull(i.findComponent("d"));
-        assertNull(i.findComponent("e"));
-        assertNull(i.findComponent("f"));
-        assertNull(i.findComponent("g"));
-
-        // Absolute searches from "a"
-        assertTrue(a == a.findComponent(":a"));
-        assertTrue(b == a.findComponent(":b"));
-        assertTrue(c == a.findComponent(":c"));
-        assertTrue(d == a.findComponent(":b:d"));
-        assertTrue(e == a.findComponent(":b:d:e"));
-        assertTrue(f == a.findComponent(":b:d:f"));
-        assertTrue(g == a.findComponent(":b:g"));
-        assertTrue(h == a.findComponent(":h"));
-        assertTrue(i == a.findComponent(":i"));
-
-        // Absolute searches from "b"
-        assertTrue(a == b.findComponent(":a"));
-        assertTrue(b == b.findComponent(":b"));
-        assertTrue(c == b.findComponent(":c"));
-        assertTrue(d == b.findComponent(":b:d"));
-        assertTrue(e == b.findComponent(":b:d:e"));
-        assertTrue(f == b.findComponent(":b:d:f"));
-        assertTrue(g == b.findComponent(":b:g"));
-        assertTrue(h == b.findComponent(":h"));
-        assertTrue(i == b.findComponent(":i"));
-
-        // Absolute searches from "c"
-        assertTrue(a == c.findComponent(":a"));
-        assertTrue(b == c.findComponent(":b"));
-        assertTrue(c == c.findComponent(":c"));
-        assertTrue(d == c.findComponent(":b:d"));
-        assertTrue(e == c.findComponent(":b:d:e"));
-        assertTrue(f == c.findComponent(":b:d:f"));
-        assertTrue(g == c.findComponent(":b:g"));
-        assertTrue(h == c.findComponent(":h"));
-        assertTrue(i == c.findComponent(":i"));
-
-        // Absolute searches from "d"
-        assertTrue(a == d.findComponent(":a"));
-        assertTrue(b == d.findComponent(":b"));
-        assertTrue(c == d.findComponent(":c"));
-        assertTrue(d == d.findComponent(":b:d"));
-        assertTrue(e == d.findComponent(":b:d:e"));
-        assertTrue(f == d.findComponent(":b:d:f"));
-        assertTrue(g == d.findComponent(":b:g"));
-        assertTrue(h == d.findComponent(":h"));
-        assertTrue(i == d.findComponent(":i"));
-
-        // Absolute searches from "e"
-        assertTrue(a == e.findComponent(":a"));
-        assertTrue(b == e.findComponent(":b"));
-        assertTrue(c == e.findComponent(":c"));
-        assertTrue(d == e.findComponent(":b:d"));
-        assertTrue(e == e.findComponent(":b:d:e"));
-        assertTrue(f == e.findComponent(":b:d:f"));
-        assertTrue(g == e.findComponent(":b:g"));
-        assertTrue(h == e.findComponent(":h"));
-        assertTrue(i == e.findComponent(":i"));
-
-        // Absolute searches from "f"
-        assertTrue(a == f.findComponent(":a"));
-        assertTrue(b == f.findComponent(":b"));
-        assertTrue(c == f.findComponent(":c"));
-        assertTrue(d == f.findComponent(":b:d"));
-        assertTrue(e == f.findComponent(":b:d:e"));
-        assertTrue(f == f.findComponent(":b:d:f"));
-        assertTrue(g == f.findComponent(":b:g"));
-        assertTrue(h == f.findComponent(":h"));
-        assertTrue(i == f.findComponent(":i"));
-
-        // Absolute searches from "g"
-        assertTrue(a == g.findComponent(":a"));
-        assertTrue(b == g.findComponent(":b"));
-        assertTrue(c == g.findComponent(":c"));
-        assertTrue(d == g.findComponent(":b:d"));
-        assertTrue(e == g.findComponent(":b:d:e"));
-        assertTrue(f == g.findComponent(":b:d:f"));
-        assertTrue(g == g.findComponent(":b:g"));
-        assertTrue(h == g.findComponent(":h"));
-        assertTrue(i == g.findComponent(":i"));
-
-        // Absolute searches from "h"
-        assertTrue(a == h.findComponent(":a"));
-        assertTrue(b == h.findComponent(":b"));
-        assertTrue(c == h.findComponent(":c"));
-        assertTrue(d == h.findComponent(":b:d"));
-        assertTrue(e == h.findComponent(":b:d:e"));
-        assertTrue(f == h.findComponent(":b:d:f"));
-        assertTrue(g == h.findComponent(":b:g"));
-        assertTrue(h == h.findComponent(":h"));
-        assertTrue(i == h.findComponent(":i"));
-
-        // Absolute searches from "i"
-        assertTrue(a == i.findComponent(":a"));
-        assertTrue(b == i.findComponent(":b"));
-        assertTrue(c == i.findComponent(":c"));
-        assertTrue(d == i.findComponent(":b:d"));
-        assertTrue(e == i.findComponent(":b:d:e"));
-        assertTrue(f == i.findComponent(":b:d:f"));
-        assertTrue(g == i.findComponent(":b:g"));
-        assertTrue(h == i.findComponent(":h"));
-        assertTrue(i == i.findComponent(":i"));
-
-        // Cases that should throw exceptions
-        try {
-            a.findComponent(null);
-            fail("Should have thrown NullPointerException");
-        } catch (NullPointerException ex) {
-            ; // Expected result
-        }
-        try {
-            a.findComponent("a:c:h");
-            fail("Should have thrown IllegalArgumentException");
-        } catch (IllegalArgumentException ex) {
-            ; // Expected result
-        }
-        try {
-            a.findComponent("a:c:i");
-            fail("Should have thrown IllegalArgumentException");
-        } catch (IllegalArgumentException ex) {
-            ; // Expected result
-        }
-        try {
-            a.findComponent(":a:c:h");
-            fail("Should have thrown IllegalArgumentException");
-        } catch (IllegalArgumentException ex) {
-            ; // Expected result
-        }
-        try {
-            a.findComponent(":a:c:i");
-            fail("Should have thrown IllegalArgumentException");
-        } catch (IllegalArgumentException ex) {
-            ; // Expected result
-        }
-        try {
-            a.findComponent("c:h");
-            fail("Should have thrown IllegalArgumentException");
-        } catch (IllegalArgumentException ex) {
-            ; // Expected result
-        }
-        try {
-            a.findComponent("c:i");
-            fail("Should have thrown IllegalArgumentException");
-        } catch (IllegalArgumentException ex) {
-            ; // Expected result
-        }
-        try {
-            a.findComponent(":c:h");
-            fail("Should have thrown IllegalArgumentException");
-        } catch (IllegalArgumentException ex) {
-            ; // Expected result
-        }
-        try {
-            a.findComponent(":c:i");
-            fail("Should have thrown IllegalArgumentException");
-        } catch (IllegalArgumentException ex) {
-            ; // Expected result
-        }
-
-    }
-
-
-    // --------------------------------------------------------- Support Methods
-
-
-}
diff --git a/jsf-api/src/test/java/javax/faces/component/StateHolderSaverTestCase.java b/jsf-api/src/test/java/javax/faces/component/StateHolderSaverTestCase.java
deleted file mode 100644
index 722c1d6..0000000
--- a/jsf-api/src/test/java/javax/faces/component/StateHolderSaverTestCase.java
+++ /dev/null
@@ -1,132 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package javax.faces.component;
-
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.ListIterator;
-import java.util.Map;
-import junit.framework.TestCase;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-import javax.faces.convert.IntegerConverter;
-
-
-public class StateHolderSaverTestCase extends UIComponentBaseTestCase {
-
-
-    // ------------------------------------------------------ Instance Variables
-
-    // ------------------------------------------------------------ Constructors
-
-
-    // Construct a new instance of this test case.
-    public StateHolderSaverTestCase(String name) {
-        super(name);
-    }
-
-
-    // ---------------------------------------------------- Overall Test Methods
-
-    // Return the tests included in this test case.
-    public static Test suite() {
-
-        return (new TestSuite(StateHolderSaverTestCase.class));
-
-    }
-
-    // ------------------------------------------------- Individual Test Methods
-
-    public void testLifecycleManagement() { }
-
-
-    public void testChildrenRecursive() {}
-
-
-    public void testComponentReconnect() {}
-
-
-    public void testComponentRemoval() {}
-
-
-    public void testStateHolder() throws Exception {}
-
-
-    public void testValueBindings() {}
-
-
-    public void testImplementsStateHolder() throws Exception {
-	StateHolderSaver saver = null;
-	UIInput 
-	    postSave,
-	    preSave = new UIInput();
-	preSave.setId("id1");
-	preSave.setRendererType(null);
-	
-	saver = new StateHolderSaver(facesContext, preSave);
-	postSave = (UIInput) saver.restore(facesContext);
-	assertEquals(postSave.getId(), preSave.getId());
-    }
-
-    public void testImplementsSerializable() throws Exception {
-	StateHolderSaver saver = null;
-	String 
-	    preSave = "hello",
-	    postSave = null;
-
-	saver = new StateHolderSaver(facesContext, preSave);
-	postSave = (String) saver.restore(facesContext);
-	assertTrue(preSave.equals(postSave));
-    }
-
-    public void testImplementsNeither() throws Exception {
-	StateHolderSaver saver = null;
-	IntegerConverter  
-	    preSave = new IntegerConverter(),
-	    postSave = null;
-
-	saver = new StateHolderSaver(facesContext, preSave);
-	postSave = (IntegerConverter) saver.restore(facesContext);
-	assertTrue(true); // lack of ClassCastException
-    }
-
-
-}
diff --git a/jsf-api/src/test/java/javax/faces/component/TestActionListener.java b/jsf-api/src/test/java/javax/faces/component/TestActionListener.java
deleted file mode 100644
index eae11dc..0000000
--- a/jsf-api/src/test/java/javax/faces/component/TestActionListener.java
+++ /dev/null
@@ -1,127 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package javax.faces.component;
-
-
-import javax.faces.context.FacesContext;
-import javax.faces.event.ActionEvent;
-import javax.faces.event.ActionListener;
-
-
-/**
- * <p>Test {@link ActionListener} implementation.</p>
- */
-
-public class TestActionListener implements ActionListener, StateHolder {
-
-    public TestActionListener() {
-    }
-
-    public TestActionListener(String id) {
-        this.id = id;
-    }
-
-    private String id = null;
-
-
-    // ----------------------------------------------------------- Pubic Methods
-
-
-    public String getId() {
-        return (this.id);
-    }
-
-    public void processAction(ActionEvent event) {
-        trace(getId() + "@" + event.getPhaseId().toString());
-    }
-
-    public boolean equals(Object otherObj) {
-	if (!(otherObj instanceof TestActionListener)) {
-	    return false;
-	}
-	TestActionListener other = (TestActionListener) otherObj;
-	if ((null != id && null == other.id) ||
-	    (null == id && null != other.id)) {
-	    return false;
-	}
-	boolean idsAreEqual = true;
-	if (null != id) {
-	    idsAreEqual = id.equals(other.id);
-	}
-	return idsAreEqual;
-    }
-	    
-
-    // ---------------------------------------------------- Static Trace Methods
-
-
-    // Accumulated trace log
-    private static StringBuffer trace = new StringBuffer();
-
-    // Append to the current trace log (or clear if null)
-    public static void trace(String text) {
-        if (text == null) {
-            trace.setLength(0);
-        } else {
-            trace.append('/');
-            trace.append(text);
-        }
-    }
-
-    // Retrieve the current trace log
-    public static String trace() {
-        return (trace.toString());
-    }
-
-    //
-    // methods from StateHolder
-    //
-
-    public Object saveState(FacesContext context) {
-	return id;
-    }
-
-    public void restoreState(FacesContext context, Object state) {
-	id = (String) state;
-    }
-
-    public boolean isTransient() { return false;
-    }
-
-    public void setTransient(boolean newT) {}
-
-}
diff --git a/jsf-api/src/test/java/javax/faces/component/TestCommand.java b/jsf-api/src/test/java/javax/faces/component/TestCommand.java
deleted file mode 100644
index 584c983..0000000
--- a/jsf-api/src/test/java/javax/faces/component/TestCommand.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package javax.faces.component;
-
-
-import java.util.List;
-
-
-/**
- * <p>Test {@link UICommand} subclass.</p>
- */
-
-public class TestCommand extends UICommand {
-
-
-    public TestCommand() {
-        super();
-    }
-
-    public TestCommand(String id) {
-        setId(id);
-    }
-
-    /* PENDING(craigmcc) - listeners is private on UIComponentBase now
-    public List[] getListeners() {
-        return (this.listeners);
-    }
-    */
-
-
-}
diff --git a/jsf-api/src/test/java/javax/faces/component/TestCommandActionListener.java b/jsf-api/src/test/java/javax/faces/component/TestCommandActionListener.java
deleted file mode 100644
index b765597..0000000
--- a/jsf-api/src/test/java/javax/faces/component/TestCommandActionListener.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package javax.faces.component;
-
-
-import javax.faces.component.UIComponent;
-import javax.faces.context.FacesContext;
-import javax.faces.event.ActionEvent;
-import javax.faces.event.ActionListener;
-
-
-/**
- * <p>Test implementation of {@link ActionListener}.</p>
- */
-
-public class TestCommandActionListener implements ActionListener {
-
-    protected String actionListenerId = null;
- 
-    public TestCommandActionListener(String actionListenerId) {
-	this.actionListenerId = actionListenerId;
-    }
-    
-    public void processAction(ActionEvent event) {
-        trace(actionListenerId);
-    }
-
-
-    // ---------------------------------------------------- Static Trace Methods
-
-
-    // Accumulated trace log
-    private static StringBuffer trace = new StringBuffer();
-
-    // Append to the current trace log (or clear if null)
-    public static void trace(String text) {
-        if (text == null) {
-            trace.setLength(0);
-        } else {
-            trace.append('/');
-            trace.append(text);
-        }
-    }
-
-    // Retrieve the current trace log
-    public static String trace() {
-        return (trace.toString());
-    }
-
-
-}
diff --git a/jsf-api/src/test/java/javax/faces/component/TestComponent.java b/jsf-api/src/test/java/javax/faces/component/TestComponent.java
deleted file mode 100644
index 1d53139..0000000
--- a/jsf-api/src/test/java/javax/faces/component/TestComponent.java
+++ /dev/null
@@ -1,152 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package javax.faces.component;
-
-
-import java.io.IOException;
-import javax.faces.context.FacesContext;
-import javax.faces.event.FacesEvent;
-
-
-/**
- * <p>Test <code>UIComponent</code> for unit tests.</p>
- */
-
-public class TestComponent extends UIComponentBase {
-
-
-    public TestComponent() {
-        this("test");
-    }
-
-    public TestComponent(String componentId) {
-        super();
-        setId(componentId);
-    }
-
-    public String getComponentType() {
-        return ("TestComponent");
-    }
-
-
-    public String getFamily() {
-        return ("Test");
-    }
-
-
-    // -------------------------------------------------- Trace-Enabled Methods
-
-
-    public void decode(FacesContext context) {
-        trace("d-" + getId());
-        super.decode(context);
-    }
-
-
-    public void encodeBegin(FacesContext context) throws IOException {
-        trace("eB-" + getId());
-        super.encodeBegin(context);
-    }
-
-
-    public void encodeChildren(FacesContext context) throws IOException {
-        trace("eC-" + getId());
-        super.encodeChildren(context);
-    }
-
-
-    public void encodeEnd(FacesContext context) throws IOException {
-        trace("eE-" + getId());
-        super.encodeEnd(context);
-    }
-
-
-    public void updateModel(FacesContext context) {
-        trace("u-" + getId());
-        //        super.updateModel(context);
-    }
-
-
-    public void processDecodes(FacesContext context) {
-        trace("pD-" + getId());
-        super.processDecodes(context);
-    }
-
-
-    public void processValidators(FacesContext context) {
-        trace("pV-" + getId());
-        super.processValidators(context);
-    }
-
-
-    public void processUpdates(FacesContext context) {
-        trace("pU-" + getId());
-        super.processUpdates(context);
-    }
-
-    public void callPushComponent(FacesContext context) {
-        pushComponentToEL(context,null);
-    }
-
-    public void callPopComponent(FacesContext context) {
-        popComponentFromEL(context);
-    }
-
-
-    // --------------------------------------------------- Static Trace Methods
-
-
-    // Accumulated trace log
-    private static StringBuffer trace = new StringBuffer();
-
-    // Append to the current trace log (or clear if null)
-    public static void trace(String text) {
-        if (text == null) {
-            trace.setLength(0);
-        } else {
-            trace.append('/');
-            trace.append(text);
-        }
-    }
-
-    // Retrieve the current trace log
-    public static String trace() {
-        return (trace.toString());
-    }
-
-
-}
diff --git a/jsf-api/src/test/java/javax/faces/component/TestDataActionListener.java b/jsf-api/src/test/java/javax/faces/component/TestDataActionListener.java
deleted file mode 100644
index 5e6b34c..0000000
--- a/jsf-api/src/test/java/javax/faces/component/TestDataActionListener.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package javax.faces.component;
-
-
-import javax.faces.event.ActionEvent;
-import javax.faces.event.ActionListener;
-import javax.faces.context.FacesContext;
-
-
-/**
- * <p>Test {@link ActionListener} implementation.</p>
- */
-
-public class TestDataActionListener implements ActionListener {
-
-
-    // ------------------------------------------------------------ Constructors
-
-
-    public TestDataActionListener() {
-    }
-
-
-    // ---------------------------------------------------------- Public Methods
-
-
-    public void processAction(ActionEvent event) {
-
-        trace(event.getComponent().getClientId
-              (FacesContext.getCurrentInstance()));
-
-    }
-
-
-    // ---------------------------------------------------- Static Trace Methods
-
-
-    // Accumulated trace log
-    private static StringBuffer trace = new StringBuffer();
-
-    // Append to the current trace log (or clear if null)
-    public static void trace(String text) {
-        if (text == null) {
-            trace.setLength(0);
-        } else {
-            trace.append('/');
-            trace.append(text);
-        }
-    }
-
-    // Retrieve the current trace log
-    public static String trace() {
-        return (trace.toString());
-    }
-
-
-}
diff --git a/jsf-api/src/test/java/javax/faces/component/TestDataBean.java b/jsf-api/src/test/java/javax/faces/component/TestDataBean.java
deleted file mode 100644
index 4831eec..0000000
--- a/jsf-api/src/test/java/javax/faces/component/TestDataBean.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package javax.faces.component;
-
-
-import java.io.Serializable;
-
-
-// Test JavaBean for DataMode Tests
-public class TestDataBean implements Serializable {
-
-    private String command;
-    public String getCommand() {
-        return (this.command);
-    }
-    public void setCommand(String command) {
-        this.command = command;
-    }
-
-    private String input;
-    public String getInput() {
-        return (this.input);
-    }
-    public void setInput(String input) {
-        this.input = input;
-    }
-
-    private String output;
-    public String getOutput() {
-        return (this.output);
-    }
-    public void setOutput(String output) {
-        this.output = output;
-    }
-
-}
diff --git a/jsf-api/src/test/java/javax/faces/component/TestDataValidator.java b/jsf-api/src/test/java/javax/faces/component/TestDataValidator.java
deleted file mode 100644
index 0a54d81..0000000
--- a/jsf-api/src/test/java/javax/faces/component/TestDataValidator.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package javax.faces.component;
-
-
-import javax.faces.application.FacesMessage;
-import javax.faces.component.UIComponent;
-import javax.faces.context.FacesContext;
-import javax.faces.validator.Validator;
-import javax.faces.validator.ValidatorException;
-
-
-/**
- * <p>Test {@link Validator} implementation.</p>
- */
-
-public class TestDataValidator implements Validator {
-
-
-    // ------------------------------------------------------------ Constructors
-
-
-    public TestDataValidator() {
-    }
-
-
-    // ---------------------------------------------------------- Public Methods
-
-
-    public void validate(FacesContext context, UIComponent component, Object valueObj) {
-        trace(component.getClientId(context));
-        String value = (String) valueObj;
-        if (value == null) {
-            value = "";
-        }
-        trace(value);
-        if ("bad".equals(value)) {
-            trace("ERROR");
-            throw new ValidatorException(
-                               new FacesMessage(FacesMessage.SEVERITY_ERROR,
-						component.getClientId(context),
-						null));
-        }
-
-    }
-
-
-    // ---------------------------------------------------- Static Trace Methods
-
-
-    // Accumulated trace log
-    private static StringBuffer trace = new StringBuffer();
-
-    // Append to the current trace log (or clear if null)
-    public static void trace(String text) {
-        if (text == null) {
-            trace.setLength(0);
-        } else {
-            trace.append('/');
-            trace.append(text);
-        }
-    }
-
-    // Retrieve the current trace log
-    public static String trace() {
-        return (trace.toString());
-    }
-
-
-}
diff --git a/jsf-api/src/test/java/javax/faces/component/TestDataValueChangeListener.java b/jsf-api/src/test/java/javax/faces/component/TestDataValueChangeListener.java
deleted file mode 100644
index 7d0ea5f..0000000
--- a/jsf-api/src/test/java/javax/faces/component/TestDataValueChangeListener.java
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package javax.faces.component;
-
-
-import javax.faces.event.ValueChangeEvent;
-import javax.faces.event.ValueChangeListener;
-import javax.faces.context.FacesContext;
-
-
-/**
- * <p>Test {@link ValueChangeListener} implementation.</p>
- */
-
-public class TestDataValueChangeListener implements ValueChangeListener {
-
-
-    // ------------------------------------------------------------ Constructors
-
-
-    public TestDataValueChangeListener() {
-    }
-
-
-    // ---------------------------------------------------------- Public Methods
-
-
-    public void processValueChange(ValueChangeEvent event) {
-        trace(event.getComponent().getClientId
-              (FacesContext.getCurrentInstance()));
-        Object oldValue = event.getOldValue();
-        if (oldValue == null) {
-            oldValue = "<<NULL>>";
-        }
-        trace(oldValue.toString());
-        Object newValue = event.getNewValue();
-        if (newValue == null) {
-            newValue = "<<NULL>>";
-        }
-        trace(newValue.toString());
-    }
-
-
-    // ---------------------------------------------------- Static Trace Methods
-
-
-    // Accumulated trace log
-    private static StringBuffer trace = new StringBuffer();
-
-    // Append to the current trace log (or clear if null)
-    public static void trace(String text) {
-        if (text == null) {
-            trace.setLength(0);
-        } else {
-            trace.append('/');
-            trace.append(text);
-        }
-    }
-
-    // Retrieve the current trace log
-    public static String trace() {
-        return (trace.toString());
-    }
-
-
-}
diff --git a/jsf-api/src/test/java/javax/faces/component/TestEvent.java b/jsf-api/src/test/java/javax/faces/component/TestEvent.java
deleted file mode 100644
index 4563b6d..0000000
--- a/jsf-api/src/test/java/javax/faces/component/TestEvent.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package javax.faces.component;
-
-import javax.faces.component.UIComponent;
-import javax.faces.event.FacesEvent;
-import javax.faces.event.FacesListener;
-
-public class TestEvent extends FacesEvent {
-
-    public TestEvent(UIComponent component) {
-        this(component, null);
-    }
-
-    public TestEvent(UIComponent component, String id) {
-        super(component);
-        this.id = id;
-    }
-
-    private String id;
-
-    public String getId() {
-        return (this.id);
-    }
-
-    public  boolean isAppropriateListener(FacesListener listener) {
-        return (listener instanceof TestListener);
-    }
-
-    public void processListener(FacesListener listener) {
-        ((TestListener) listener).processTest(this);
-    }
-
-
-}
diff --git a/jsf-api/src/test/java/javax/faces/component/TestInput.java b/jsf-api/src/test/java/javax/faces/component/TestInput.java
deleted file mode 100644
index 3e0db4a..0000000
--- a/jsf-api/src/test/java/javax/faces/component/TestInput.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package javax.faces.component;
-
-
-import java.util.List;
-
-
-/**
- * <p>Test {@link UIInput} subclass.</p>
- */
-
-public class TestInput extends UIInput {
-
-
-    public TestInput() {
-        super();
-    }
-
-    public TestInput(String id) {
-        setId(id);
-    }
-
-    /* PENDING(craigmcc) - listeners is private on UIComponentBase now
-    public List[] getListeners() {
-        return (this.listeners);
-    }
-    */
-
-    public boolean compareValues(Object previous, Object value) {
-        return (super.compareValues(previous, value));
-    }
-
-
-}
diff --git a/jsf-api/src/test/java/javax/faces/component/TestInputValidator.java b/jsf-api/src/test/java/javax/faces/component/TestInputValidator.java
deleted file mode 100644
index 191701d..0000000
--- a/jsf-api/src/test/java/javax/faces/component/TestInputValidator.java
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package javax.faces.component;
-
-
-import java.util.Collections;
-import java.util.Iterator;
-import javax.faces.component.UIInput;
-import javax.faces.component.UIComponent;
-import javax.faces.component.StateHolder;
-import javax.faces.context.FacesContext;
-import javax.faces.validator.Validator;
-
-
-/**
- * <p>Test implementation of {@link Validator}.</p>
- */
-
-public class TestInputValidator implements Validator {
-
-    protected String validatorId = null;
- 
-    public TestInputValidator(String validatorId) {
-	this.validatorId = validatorId;
-    }
-    
-    public void validate(FacesContext context, UIComponent component, Object value) {
-        trace(validatorId);
-    }
-
-
-    // ---------------------------------------------------- Static Trace Methods
-
-
-    // Accumulated trace log
-    private static StringBuffer trace = new StringBuffer();
-
-    // Append to the current trace log (or clear if null)
-    public static void trace(String text) {
-        if (text == null) {
-            trace.setLength(0);
-        } else {
-            trace.append('/');
-            trace.append(text);
-        }
-    }
-
-    // Retrieve the current trace log
-    public static String trace() {
-        return (trace.toString());
-    }
-
-
-}
diff --git a/jsf-api/src/test/java/javax/faces/component/TestInputValueChangeListener.java b/jsf-api/src/test/java/javax/faces/component/TestInputValueChangeListener.java
deleted file mode 100644
index 907be58..0000000
--- a/jsf-api/src/test/java/javax/faces/component/TestInputValueChangeListener.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package javax.faces.component;
-
-
-import javax.faces.component.UIComponent;
-import javax.faces.context.FacesContext;
-import javax.faces.event.ValueChangeEvent;
-import javax.faces.event.ValueChangeListener;
-
-
-/**
- * <p>Test implementation of {@link ValueChangeListener}.</p>
- */
-
-public class TestInputValueChangeListener implements ValueChangeListener {
-
-    protected String valueChangeListenerId = null;
- 
-    public TestInputValueChangeListener(String valueChangeListenerId) {
-	this.valueChangeListenerId = valueChangeListenerId;
-    }
-    
-    public void processValueChange(ValueChangeEvent event) {
-        trace(valueChangeListenerId);
-    }
-
-
-    // ---------------------------------------------------- Static Trace Methods
-
-
-    // Accumulated trace log
-    private static StringBuffer trace = new StringBuffer();
-
-    // Append to the current trace log (or clear if null)
-    public static void trace(String text) {
-        if (text == null) {
-            trace.setLength(0);
-        } else {
-            trace.append('/');
-            trace.append(text);
-        }
-    }
-
-    // Retrieve the current trace log
-    public static String trace() {
-        return (trace.toString());
-    }
-
-
-}
diff --git a/jsf-api/src/test/java/javax/faces/component/TestListener.java b/jsf-api/src/test/java/javax/faces/component/TestListener.java
deleted file mode 100644
index 61fcdd9..0000000
--- a/jsf-api/src/test/java/javax/faces/component/TestListener.java
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package javax.faces.component;
-
-
-import javax.faces.event.AbortProcessingException;
-import javax.faces.event.FacesListener;
-
-public class TestListener implements FacesListener {
-
-
-    public TestListener(String id,
-                        String fromId, String toId) {
-        this.id = id;
-        this.fromId = fromId; // When an event with this id is received ...
-        this.toId = toId;     // queue an additional event with this id
-    }
-
-
-    public TestListener(String id) {
-        this.id = id;
-    }
-
-    public TestListener(String id, boolean abort) {
-        this.id = id;
-        this.abort = abort;
-    }
-
-
-    private boolean abort = false;
-    private String fromId = null;
-    private String id = null;
-    private String toId = null;
-
-
-    public String getId() {
-        return (this.id);
-    }
-
-    public void processTest(TestEvent event) {
-        if (getId() != null) {
-            trace(getId());
-        }
-        if (event.getId() != null) {
-            trace(event.getId());
-            if (event.getId().equals(fromId)) {
-                event.getComponent().queueEvent
-                    (new TestEvent(event.getComponent(), toId));
-            }
-        }
-        if (abort) {
-            throw new AbortProcessingException();
-        }
-    }
-
-
-    // Accumulated trace log
-    private static StringBuffer trace = new StringBuffer();
-
-    // Append to the current trace log (or clear if null)
-    public static void trace(String text) {
-        if (text == null) {
-            trace.setLength(0);
-        } else {
-            trace.append('/');
-            trace.append(text);
-        }
-    }
-
-    // Retrieve the current trace log
-    public static String trace() {
-        return (trace.toString());
-    }
-
-
-}
diff --git a/jsf-api/src/test/java/javax/faces/component/TestNamingContainer.java b/jsf-api/src/test/java/javax/faces/component/TestNamingContainer.java
deleted file mode 100644
index 9b7224f..0000000
--- a/jsf-api/src/test/java/javax/faces/component/TestNamingContainer.java
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package javax.faces.component;
-
-
-/**
- * <p>Test {@link NamingContainer} implementation with tracing.</p>
- */
-
-public class TestNamingContainer extends UINamingContainer {
-
-
-    // ------------------------------------------------------------ Constructors
-
-
-    public TestNamingContainer() {
-    }
-
-
-    // ---------------------------------------------------------- Public Methods
-
-
-    public UIComponent findComponent(String expr) {
-
-        trace(getId());
-        trace(expr);
-        return (super.findComponent(expr));
-
-    }
-
-
-    // ---------------------------------------------------- Static Trace Methods
-
-
-    // Accumulated trace log
-    private static StringBuffer trace = new StringBuffer();
-
-    // Append to the current trace log (or clear if null)
-    public static void trace(String text) {
-        if (text == null) {
-            trace.setLength(0);
-        } else {
-            trace.append('/');
-            trace.append(text);
-        }
-    }
-
-    // Retrieve the current trace log
-    public static String trace() {
-        return (trace.toString());
-    }
-
-
-}
diff --git a/jsf-api/src/test/java/javax/faces/component/TestSelectMany.java b/jsf-api/src/test/java/javax/faces/component/TestSelectMany.java
deleted file mode 100644
index 85d6369..0000000
--- a/jsf-api/src/test/java/javax/faces/component/TestSelectMany.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package javax.faces.component;
-
-
-import java.util.List;
-
-
-/**
- * <p>Test {@link UISelectMany} subclass.</p>
- */
-
-public class TestSelectMany extends UISelectMany {
-
-
-    public boolean compareValues(Object previous, Object value) {
-        return (super.compareValues(previous, value));
-    }
-
-}
diff --git a/jsf-api/src/test/java/javax/faces/component/TestValidator.java b/jsf-api/src/test/java/javax/faces/component/TestValidator.java
deleted file mode 100644
index 9041181..0000000
--- a/jsf-api/src/test/java/javax/faces/component/TestValidator.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package javax.faces.component;
-
-
-import java.util.Collections;
-import java.util.Iterator;
-import javax.faces.component.UIInput;
-import javax.faces.component.UIComponent;
-import javax.faces.component.StateHolder;
-import javax.faces.context.FacesContext;
-import javax.faces.validator.Validator;
-
-
-/**
- * <p>Test implementation of {@link Validator}.</p>
- */
-
-public class TestValidator implements Validator, StateHolder {
-
-    protected String validateState = null;
- 
-    public TestValidator(String newState) {
-	validateState = newState;
-    }
-    
-    public TestValidator() {}
-
-    public void validate(FacesContext context, UIComponent component, Object value) {
-        ;  // No action taken
-    }
-
-    public boolean equals(Object otherObj) {
-	if (!(otherObj instanceof TestValidator)) {
-	    return false;
-	}
-	TestValidator other = (TestValidator) otherObj;
-	if (!((validateState == null && other.validateState == null) ||
-	    (validateState != null && other.validateState != null))) {
-	    return  false;
-	}
-	if (validateState != null) {
-	    if (!validateState.equals(other.validateState)) {
-		return false;
-	    }
-	}
-	return true;
-    }
-
-    //
-    // methods from StateHolder
-    //
-    
-    public Object saveState(FacesContext context) {
-	return validateState;
-    }
-
-    public void restoreState(FacesContext context, Object state) {
-	validateState = (String) state;
-    }
-
-    public boolean isTransient() { return false;
-    }
-
-    public void setTransient(boolean newT) {}
-
-}
diff --git a/jsf-api/src/test/java/javax/faces/component/TestValueChangeListener.java b/jsf-api/src/test/java/javax/faces/component/TestValueChangeListener.java
deleted file mode 100644
index f0fff9a..0000000
--- a/jsf-api/src/test/java/javax/faces/component/TestValueChangeListener.java
+++ /dev/null
@@ -1,135 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package javax.faces.component;
-
-
-import javax.faces.event.ValueChangeEvent;
-import javax.faces.event.ValueChangeListener;
-import javax.faces.context.FacesContext;
-
-/**
- * <p>Test {@link ValueChangeListener} implementation.</p>
- */
-
-public class TestValueChangeListener implements ValueChangeListener, StateHolder {
-
-    // ------------------------------------------------------------ Constructors
-
-    /**
-     *
-     * Called from state system.
-     */
-    public TestValueChangeListener() {
-    }
-
-
-    public TestValueChangeListener(String id) {
-        this.id = id;
-    }
-
-    private String id = null;
-
-
-    // ----------------------------------------------------------- Pubic Methods
-
-
-    public String getId() {
-        return (this.id);
-    }
-
-    public void processValueChange(ValueChangeEvent event) {
-        trace(getId());
-    }
-
-
-    // ---------------------------------------------------- Static Trace Methods
-
-
-    // Accumulated trace log
-    private static StringBuffer trace = new StringBuffer();
-
-    // Append to the current trace log (or clear if null)
-    public static void trace(String text) {
-        if (text == null) {
-            trace.setLength(0);
-        } else {
-            trace.append('/');
-            trace.append(text);
-        }
-    }
-
-    // Retrieve the current trace log
-    public static String trace() {
-        return (trace.toString());
-    }
-
-    // this needs to be named differently because other test methods
-    // rely on the standard equal method.
-    public boolean isEqual(Object otherObj) {
-	if (!(otherObj instanceof TestValueChangeListener)) {
-	    return false;
-	}
-	TestValueChangeListener other = (TestValueChangeListener) otherObj;
-	if ((null != id && null == other.id) ||
-	    (null == id && null != other.id)) {
-	    return false;
-	}
-	boolean idsAreEqual = true;
-	if (null != id) {
-	    idsAreEqual = id.equals(other.id);
-	}
-	return idsAreEqual;
-    }
-
-    //
-    // methods from StateHolder
-    //
-
-    public Object saveState(FacesContext context) {
-	return id;
-    }
-
-    public void restoreState(FacesContext context, Object state) {
-	id = (String) state;
-    }
-
-    public boolean isTransient() { return false;
-    }
-
-    public void setTransient(boolean newT) {}
-
-}
diff --git a/jsf-api/src/test/java/javax/faces/component/TestValueChangeListenerWithBackReference.java b/jsf-api/src/test/java/javax/faces/component/TestValueChangeListenerWithBackReference.java
deleted file mode 100644
index c762b63..0000000
--- a/jsf-api/src/test/java/javax/faces/component/TestValueChangeListenerWithBackReference.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package javax.faces.component;
-
-
-import javax.faces.context.FacesContext;
-import javax.faces.TestUtil;
-
-/**
- * <p>Test {@link ValueChangeListener} implementation.</p>
- */
-
-public class TestValueChangeListenerWithBackReference extends TestValueChangeListener implements StateHolder {
-
-    // ------------------------------------------------------------ Constructors
-
-    /**
-     *
-     * Called from state system.
-     */
-    public TestValueChangeListenerWithBackReference() {
-    }
-
-
-    public TestValueChangeListenerWithBackReference(String id, 
-						     UIComponent yourComponent) {
-	super(id);
-	this.yourComponent = yourComponent;
-    }
-
-
-    public TestValueChangeListenerWithBackReference(String id) {
-        super(id);
-    }
-
-    private UIComponent yourComponent = null;
-
-
-    // this needs to be named differently because other test methods
-    // rely on the standard equal method.
-    public boolean isEqual(Object otherObj) {
-	if (!(otherObj instanceof TestValueChangeListenerWithBackReference)) {
-	    return false;
-	}
-	TestValueChangeListenerWithBackReference other = 
-	    (TestValueChangeListenerWithBackReference) otherObj;
-	
-	boolean 
-	    superIsEqual = super.isEqual(otherObj),
-	    yourComponentsIdsAreEqual = false;
-	if (null == yourComponent && null == other.yourComponent) {
-	    yourComponentsIdsAreEqual = true;
-	}
-	else if (null != yourComponent && null != other.yourComponent) {
-	    yourComponentsIdsAreEqual = 
-		TestUtil.equalsWithNulls(yourComponent.getId(),
-					 other.yourComponent.getId());
-	}
-	
-	boolean result = superIsEqual && yourComponentsIdsAreEqual;
-	return result;
-    }
-
-    //
-    // methods from StateHolder
-    //
-
-    public void setComponent(UIComponent yourComponent) {
-	this.yourComponent = yourComponent;
-    }
-
-
-
-}
diff --git a/jsf-api/src/test/java/javax/faces/component/UIColumnTestCase.java b/jsf-api/src/test/java/javax/faces/component/UIColumnTestCase.java
deleted file mode 100644
index 93d96f2..0000000
--- a/jsf-api/src/test/java/javax/faces/component/UIColumnTestCase.java
+++ /dev/null
@@ -1,147 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package javax.faces.component;
-
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-
-/**
- * <p>Unit tests for {@link UIColumn}.</p>
- */
-
-public class UIColumnTestCase extends UIComponentBaseTestCase {
-
-
-    // ------------------------------------------------------------ Constructors
-
-
-    /**
-     * Construct a new instance of this test case.
-     *
-     * @param name Name of the test case
-     */
-    public UIColumnTestCase(String name) {
-        super(name);
-    }
-
-
-    // ---------------------------------------------------- Overall Test Methods
-
-
-    // Set up instance variables required by this test case.
-
-    public void setUp() {
-        super.setUp();
-        component = new UIColumn();
-        expectedFamily = UIColumn.COMPONENT_FAMILY;
-        expectedId = null;
-        expectedRendererType = null;
-    }
-
-
-    // Return the tests included in this test case.
-    public static Test suite() {
-        return (new TestSuite(UIColumnTestCase.class));
-    }
-
-
-    // Tear down instance variables required by ths test case
-    public void tearDown() {
-        super.tearDown();
-    }
-
-
-    // ------------------------------------------------- Individual Test Methods
-
-
-    // Test attribute-property transparency
-
-    public void testAttributesTransparency() {
-
-        super.testAttributesTransparency();
-        UIColumn column = (UIColumn) component;
-
-    }
-
-
-    // Suppress lifecycle tests since we do not have a renderer
-    public void testLifecycleManagement() {
-    }
-
-
-    // Test a pristine UIColumn instance
-    public void testPristine() {
-
-        super.testPristine();
-        UIColumn column = (UIColumn) component;
-
-    }
-
-
-    // Test setting properties to invalid values
-    public void testPropertiesInvalid() throws Exception {
-
-        super.testPropertiesInvalid();
-        UIColumn column = (UIColumn) component;
-
-    }
-
-
-    // Test setting properties to valid values
-    public void testPropertiesValid() throws Exception {
-
-        super.testPropertiesValid();
-        UIColumn column = (UIColumn) component;
-
-    }
-
-
-    // --------------------------------------------------------- Support Methods
-
-
-    // Create a pristine component of the type to be used in state holder tests
-
-    protected UIComponent createComponent() {
-        UIComponent component = new UIColumn();
-        component.setRendererType(null);
-        return (component);
-    }
-
-
-}
diff --git a/jsf-api/src/test/java/javax/faces/component/UICommandTestCase.java b/jsf-api/src/test/java/javax/faces/component/UICommandTestCase.java
deleted file mode 100644
index dae7b27..0000000
--- a/jsf-api/src/test/java/javax/faces/component/UICommandTestCase.java
+++ /dev/null
@@ -1,586 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package javax.faces.component;
-
-
-import com.sun.faces.mock.MockExternalContext;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-import javax.faces.FactoryFinder;
-import javax.faces.application.Application;
-import javax.faces.context.FacesContext;
-import javax.faces.el.MethodBinding;
-import javax.faces.event.ActionEvent;
-import javax.faces.event.ActionListener;
-import javax.faces.event.PhaseId;
-import javax.faces.render.RenderKit;
-import javax.faces.render.RenderKitFactory;
-import javax.faces.render.Renderer;
-import java.io.IOException;
-import java.util.HashMap;
-import java.util.Map;
-
-
-/**
- * <p>Unit tests for {@link UICommand}.</p>
- */
-
-public class UICommandTestCase extends UIComponentBaseTestCase {
-
-
-    // ------------------------------------------------------------ Constructors
-
-
-    /**
-     * Construct a new instance of this test case.
-     *
-     * @param name Name of the test case
-     */
-    public UICommandTestCase(String name) {
-        super(name);
-    }
-
-    private static Class actionListenerSignature[] = {ActionEvent.class};
-
-    // ---------------------------------------------------- Overall Test Methods
-
-
-    // Set up instance variables required by this test case.
-
-    public void setUp() {
-        super.setUp();
-        component = new UICommand();
-        expectedFamily = UICommand.COMPONENT_FAMILY;
-        expectedId = null;
-        expectedRendererType = "javax.faces.Button";
-    }
-
-
-    // Return the tests included in this test case.
-    public static Test suite() {
-        return (new TestSuite(UICommandTestCase.class));
-    }
-
-
-    // Tear down instance variables required by ths test case
-    public void tearDown() {
-        super.tearDown();
-    }
-
-
-    // ------------------------------------------------- Individual Test Methods
-
-
-    // Test order of action listener calls with actionListener also
-
-    public void PENDING_FIXME_testActionOrder() throws Exception {
-
-        RenderKitFactory renderKitFactory = (RenderKitFactory)
-                FactoryFinder.getFactory(FactoryFinder.RENDER_KIT_FACTORY);
-        RenderKit renderKit =
-                renderKitFactory.getRenderKit(facesContext,
-                        RenderKitFactory.HTML_BASIC_RENDER_KIT);
-        renderKit.addRenderer(UICommand.COMPONENT_FAMILY,
-                "javax.faces.Button", new ButtonRenderer());
-        UIViewRoot root = facesContext.getApplication().getViewHandler().createView(facesContext, null);
-        root.getChildren().add(component);
-        UICommand command = (UICommand) component;
-        MethodBinding binding = facesContext.getApplication().
-                createMethodBinding("#{l3.processAction}",
-                        actionListenerSignature);
-        MethodBinding actionBinding = facesContext.getApplication().
-                createMethodBinding("#{l4.test}", null);
-        command.setId("command");
-        command.addActionListener(new TestCommandActionListener("l1"));
-        command.addActionListener(new TestCommandActionListener("l2"));
-        command.setActionListener(binding);
-        command.setAction(actionBinding);
-        command.setImmediate(true);
-        request.setAttribute("l3", new TestCommandActionListener("l3"));
-
-        // Override the default action listener to test ordering
-        ActionListener oldDefaultActionListener =
-                facesContext.getApplication().getActionListener();
-        facesContext.getApplication().setActionListener(
-                new TestCommandActionListener("14"));
-        Map map = new HashMap();
-        map.put(command.getClientId(facesContext), "");
-        MockExternalContext econtext =
-                (MockExternalContext) facesContext.getExternalContext();
-        econtext.setRequestParameterMap(map);
-        TestCommandActionListener.trace(null);
-        root.processDecodes(facesContext);
-        assertEquals("/l1/l2/l3/14", TestCommandActionListener.trace());
-
-        // Restore the default action listener
-        facesContext.getApplication().setActionListener(
-                oldDefaultActionListener);
-    }
-
-
-    // Test attribute-property transparency
-    public void testAttributesTransparency() {
-
-        super.testAttributesTransparency();
-        UICommand command = (UICommand) component;
-        Application app = facesContext.getApplication();
-        MethodBinding methodBinding = null;
-
-        assertEquals(command.getValue(),
-                (String) component.getAttributes().get("value"));
-        command.setValue("foo");
-        assertEquals("foo", (String) component.getAttributes().get("value"));
-        command.setValue(null);
-        assertNull((String) component.getAttributes().get("value"));
-        component.getAttributes().put("value", "bar");
-        assertEquals("bar", command.getValue());
-        component.getAttributes().put("value", null);
-        assertNull(command.getValue());
-
-        assertEquals(command.getAction(),
-                (MethodBinding) command.getAttributes().get("action"));
-        command.setAction(methodBinding =
-                app.createMethodBinding("#{foo.bar}", null));
-        assertEquals(methodBinding,
-                (MethodBinding) command.getAttributes().get("action"));
-        command.setAction(null);
-        assertNull((MethodBinding) command.getAttributes().get("action"));
-        methodBinding = app.createMethodBinding("#{bar.baz}", null);
-        command.getAttributes().put("action", methodBinding);
-        assertEquals(methodBinding, command.getAction());
-        command.getAttributes().put("action", null);
-        assertNull(command.getAction());
-
-        assertEquals(command.getActionListener(),
-                (MethodBinding) command.getAttributes().get("actionListener"));
-        methodBinding = app.createMethodBinding("#{foo.yoyo}",
-                actionListenerSignature);
-        command.setActionListener(methodBinding);
-        assertEquals(methodBinding,
-                (MethodBinding) command.getAttributes().get("actionListener"));
-        command.setActionListener(null);
-        assertNull((MethodBinding)
-                command.getAttributes().get("actionListener"));
-        methodBinding = app.createMethodBinding("#{foo.buckaroo}",
-                actionListenerSignature);
-        command.getAttributes().put("actionListener", methodBinding);
-        assertEquals(methodBinding, command.getActionListener());
-        command.getAttributes().put("actionListener", null);
-        assertNull(command.getActionListener());
-
-    }
-
-    // Test event queuing and broadcasting (any phase listeners)
-    public void testEventsGeneric() {
-
-        UICommand command = (UICommand) component;
-        command.setRendererType(null);
-        ActionEvent event = new ActionEvent(command);
-
-        // Register three listeners
-        command.addActionListener
-                (new TestActionListener("AP0"));
-        command.addActionListener
-                (new TestActionListener("AP1"));
-        command.addActionListener
-                (new TestActionListener("AP2"));
-
-        // Fire events and evaluate results
-        TestActionListener.trace(null);
-        UIViewRoot root = facesContext.getApplication().getViewHandler().createView(facesContext, null);
-        root.getChildren().add(command);
-        command.queueEvent(event);
-        root.processDecodes(facesContext);
-        root.processValidators(facesContext);
-        root.processApplication(facesContext);
-        assertEquals("/AP0 at INVOKE_APPLICATION 5/AP1 at INVOKE_APPLICATION 5/AP2 at INVOKE_APPLICATION 5",
-                TestActionListener.trace());
-
-    }
-
-    // Test event queuing and broadcasting (mixed phase listeners)
-    public void testEventsMixed() {
-
-        UICommand command = (UICommand) component;
-        command.setRendererType(null);
-        ActionEvent event = new ActionEvent(command);
-
-        // Register three listeners
-        command.addActionListener
-                (new TestActionListener("ARV"));
-        command.addActionListener
-                (new TestActionListener("PV"));
-        command.addActionListener
-                (new TestActionListener("AP"));
-
-        // Fire events and evaluate results
-        TestActionListener.trace(null);
-        UIViewRoot root = facesContext.getApplication().getViewHandler().createView(facesContext, null);
-        root.getChildren().add(command);
-        command.queueEvent(event);
-        root.processDecodes(facesContext);
-        root.processValidators(facesContext);
-        root.processApplication(facesContext);
-        assertEquals("/ARV at INVOKE_APPLICATION 5/PV at INVOKE_APPLICATION 5/AP at INVOKE_APPLICATION 5",
-                TestActionListener.trace());
-
-    }
-
-    // Test event queuing and broadcasting (mixed phase listeners), with
-    // immediate set.
-    public void testEventsMixedImmediate() {
-
-        UICommand command = (UICommand) component;
-        command.setImmediate(true);
-        command.setRendererType(null);
-        ActionEvent event = new ActionEvent(command);
-
-        // Register three listeners
-        command.addActionListener
-                (new TestActionListener("ARV"));
-        command.addActionListener
-                (new TestActionListener("PV"));
-        command.addActionListener
-                (new TestActionListener("AP"));
-
-        // Fire events and evaluate results
-        TestActionListener.trace(null);
-        UIViewRoot root = facesContext.getApplication().getViewHandler().createView(facesContext, null);
-        root.getChildren().add(command);
-        command.queueEvent(event);
-        root.processDecodes(facesContext);
-        root.processValidators(facesContext);
-        root.processApplication(facesContext);
-        assertEquals("/ARV at APPLY_REQUEST_VALUES 2/PV at APPLY_REQUEST_VALUES 2/AP at APPLY_REQUEST_VALUES 2",
-                TestActionListener.trace());
-
-    }
-
-
-    // Test listener registration and deregistration
-    public void testListeners() {
-
-        TestCommand command = new TestCommand();
-        TestActionListener listener = null;
-
-        command.addActionListener
-                (new TestActionListener("ARV0"));
-        command.addActionListener
-                (new TestActionListener("ARV1"));
-        command.addActionListener
-                (new TestActionListener("PV0"));
-        command.addActionListener
-                (new TestActionListener("PV1"));
-        command.addActionListener
-                (new TestActionListener("PV2"));
-
-        ActionListener listeners[] = command.getActionListeners();
-        assertEquals(5, listeners.length);
-        command.removeActionListener(listeners[2]);
-        listeners = command.getActionListeners();
-        assertEquals(4, listeners.length);
-
-    }
-
-    // Test empty listener list
-    public void testEmptyListeners() {
-
-        TestCommand command = new TestCommand();
-        TestActionListener listener = null;
-
-        //No listeners added, should be empty
-        ActionListener listeners[] = command.getActionListeners();
-        assertEquals(0, listeners.length);
-
-    }
-
-
-    // Suppress lifecycle tests since we do not have a renderer
-    public void testLifecycleManagement() {
-    }
-
-    // Test a pristine UICommand instance
-    public void testPristine() {
-
-        super.testPristine();
-        UICommand command = (UICommand) component;
-
-        assertNull("no value", command.getValue());
-        assertNull("no action", command.getAction());
-        assertNull("no actionListener", command.getActionListener());
-
-    }
-
-
-    // Test setting properties to invalid values
-    public void testPropertiesInvalid() throws Exception {
-
-        super.testPropertiesInvalid();
-        UICommand command = (UICommand) component;
-
-    }
-
-
-    // Test setting properties to valid values
-    public void testPropertiesValid() throws Exception {
-
-        super.testPropertiesValid();
-        UICommand command = (UICommand) component;
-        Application app = facesContext.getApplication();
-
-        // value
-        command.setValue("foo.bar");
-        assertEquals("expected value",
-                "foo.bar", command.getValue());
-        command.setValue(null);
-        assertNull("erased value", command.getValue());
-
-        MethodBinding methodBinding = null;
-
-        command.setAction(methodBinding =
-                app.createMethodBinding("#{foo.bar}", null));
-        assertEquals(methodBinding, command.getAction());
-        command.setAction(null);
-        assertNull(command.getAction());
-
-        methodBinding = app.createMethodBinding("#{foo.yoyo}",
-                actionListenerSignature);
-        command.setActionListener(methodBinding);
-        assertEquals(methodBinding, command.getActionListener());
-        command.setActionListener(null);
-        assertNull(command.getActionListener());
-
-    }
-
-    public void testNestedCommands() {
-        UIViewRoot root = new UIViewRoot();
-        UICommand c1 = new UICommand();
-        UICommand c2 = new UICommand();
-        root.getChildren().add(c1);
-        c2.setImmediate(true);
-        c1.getChildren().add(c2);
-        ActionEvent ae = new ActionEvent(c2);
-        c2.queueEvent(ae);
-        assertTrue(ae.getPhaseId().equals(PhaseId.APPLY_REQUEST_VALUES));
-
-        root = new UIViewRoot();
-        c1 = new UICommand();
-        c2 = new UICommand();
-        root.getChildren().add(c1);
-        c1.setImmediate(true);
-        c2.setImmediate(false);
-        c1.getChildren().add(c2);
-        ae = new ActionEvent(c2);
-        c2.queueEvent(ae);
-        assertTrue(ae.getPhaseId().equals(PhaseId.INVOKE_APPLICATION));
-    }
-
-    public void PENDING_FIXME_testValueBindings() {
-
-        super.testValueBindings();
-        UICommand test = (UICommand) component;
-
-        // "immediate" property
-        request.setAttribute("foo", Boolean.FALSE);
-        boolean initial = test.isImmediate();
-        if (initial) {
-            request.setAttribute("foo", Boolean.FALSE);
-        } else {
-            request.setAttribute("foo", Boolean.TRUE);
-        }
-        test.setValueBinding("immediate", application.createValueBinding("#{foo}"));
-        assertEquals(!initial, test.isImmediate());
-        test.setImmediate(initial);
-        assertEquals(initial, test.isImmediate());
-        assertNotNull(test.getValueBinding("immediate"));
-
-        // "value" property
-        request.setAttribute("foo", "bar");
-        test.setValue(null);
-        assertNull(test.getValue());
-        test.setValueBinding("value", application.createValueBinding("#{foo}"));
-        assertNotNull(test.getValueBinding("value"));
-        assertEquals("bar", test.getValue());
-        test.setValue("baz");
-        assertEquals("baz", test.getValue());
-        test.setValue(null);
-        assertEquals("bar", test.getValue());
-        test.setValueBinding("value", null);
-        assertNull(test.getValueBinding("value"));
-        assertNull(test.getValue());
-
-    }
-
-    public void testGetActionListeners() throws Exception {
-        UICommand command = (UICommand) component;
-        UIViewRoot root = facesContext.getApplication().getViewHandler().createView(facesContext, null);
-        root.getChildren().add(command);
-
-        TestActionListener
-                ta1 = new TestActionListener("ta1"),
-                ta2 = new TestActionListener("ta2");
-
-        command.addActionListener(ta1);
-        command.addActionListener(ta2);
-        ActionListener[] listeners = (ActionListener[])
-                command.getActionListeners();
-        assertEquals(2, listeners.length);
-        TestActionListener[] taListeners = (TestActionListener[])
-                command.getFacesListeners(TestActionListener.class);
-    }
-
-
-    // --------------------------------------------------------- Support Methods
-
-
-    // Check that the properties on the specified components are equal
-
-    protected void checkProperties(UIComponent comp1, UIComponent comp2) {
-        super.checkProperties(comp1, comp2);
-        UICommand c1 = (UICommand) comp1;
-        UICommand c2 = (UICommand) comp2;
-        assertEquals(c1.getAction(), c2.getAction());
-        assertEquals(c1.getActionListener(), c2.getActionListener());
-    }
-
-
-    // Create a pristine component of the type to be used in state holder tests
-    protected UIComponent createComponent() {
-        UIComponent component = new UICommand();
-        component.setRendererType(null);
-        return (component);
-    }
-
-
-    // Populate a pristine component to be used in state holder tests
-    protected void populateComponent(UIComponent component) {
-        super.populateComponent(component);
-        UICommand c = (UICommand) component;
-        Application app = facesContext.getApplication();
-        MethodBinding methodBinding = null;
-
-        c.setAction(methodBinding = app.createMethodBinding("#{foo.bar}",
-                null));
-        c.setActionListener(methodBinding =
-                app.createMethodBinding("#{baz.bop}",
-                        actionListenerSignature));
-    }
-
-
-    protected boolean listenersAreEqual(FacesContext context,
-                                        UICommand comp1,
-                                        UICommand comp2) {
-        ActionListener[] list1 = comp1.getActionListeners();
-        ActionListener[] list2 = comp2.getActionListeners();
-        // make sure they're either both null or both non-null
-        if ((null == list1 && null != list2) ||
-                (null != list1 && null == list2)) {
-            return false;
-        }
-        if (null == list1) {
-            return true;
-        }
-        int j = 0, outerLen = list1.length;
-        boolean result = true;
-        if (outerLen != list2.length) {
-            return false;
-        }
-        for (j = 0; j < outerLen; j++) {
-            result = list1[j].equals(list2[j]);
-            if (!result) {
-                return false;
-            }
-        }
-        return true;
-    }
-
-    // --------------------------------------------------------- Private Classes
-
-
-    // "Button" Renderer
-
-    class ButtonRenderer extends Renderer {
-
-        public void decode(FacesContext context, UIComponent component) {
-
-            if ((context == null) || (component == null)) {
-                throw new NullPointerException();
-            }
-
-            if (!(component instanceof ActionSource)) {
-                return;
-            }
-            String clientId = component.getClientId(context);
-            Map params = context.getExternalContext().getRequestParameterMap();
-            if (params.containsKey(clientId)) {
-                component.queueEvent(new ActionEvent(component));
-            }
-
-        }
-
-        public void encodeBegin(FacesContext context, UIComponent component)
-                throws IOException {
-
-            if ((context == null) || (component == null)) {
-                throw new NullPointerException();
-            }
-
-        }
-
-        public void encodeChildren(FacesContext context, UIComponent component)
-                throws IOException {
-
-            if ((context == null) || (component == null)) {
-                throw new NullPointerException();
-            }
-
-        }
-
-        public void encodeEnd(FacesContext context, UIComponent component)
-                throws IOException {
-
-            if ((context == null) || (component == null)) {
-                throw new NullPointerException();
-            }
-
-        }
-
-    }
-
-
-}
diff --git a/jsf-api/src/test/java/javax/faces/component/UIComponentBaseAttachedStateTestCase.java b/jsf-api/src/test/java/javax/faces/component/UIComponentBaseAttachedStateTestCase.java
deleted file mode 100644
index 1c59eaa..0000000
--- a/jsf-api/src/test/java/javax/faces/component/UIComponentBaseAttachedStateTestCase.java
+++ /dev/null
@@ -1,323 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- *
- * Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
- *
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- *
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- *
- * Contributor(s):
- *
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package javax.faces.component;
-
-import com.sun.faces.mock.MockFacesContext;
-import java.util.HashMap;
-import junit.framework.Test;
-import junit.framework.TestCase;
-import junit.framework.TestSuite;
-
-import javax.faces.context.FacesContext;
-import javax.faces.event.FacesListener;
-import javax.faces.event.ValueChangeListener;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
-import java.util.Stack;
-
-/**
- * @author edburns
- */
-public class UIComponentBaseAttachedStateTestCase extends TestCase {
-
-    private UIComponentBase component;
-    private MockFacesContext facesContext = null;
-
-
-    public UIComponentBaseAttachedStateTestCase(String arg0) {
-        super(arg0);
-    }
-
-    // Return the tests included in this test case.
-    public static Test suite() {
-        return (new TestSuite(UIComponentBaseAttachedStateTestCase.class));
-    }
-
-    public void setUp() throws Exception {
-        super.setUp();
-        component = new UIOutput();
-        facesContext = new MockFacesContext();
-    }
-
-    public void testAttachedObjectsSet() throws Exception {
-        Set<ValueChangeListener> returnedAttachedObjects = null,
-                attachedObjects = new HashSet<ValueChangeListener>();
-        ValueChangeListener toAdd = new TestValueChangeListener();
-        attachedObjects.add(toAdd);
-        toAdd = new TestValueChangeListener();
-        attachedObjects.add(toAdd);
-        toAdd = new TestValueChangeListener();
-        attachedObjects.add(toAdd);
-        Object result = UIComponentBase.saveAttachedState(facesContext, attachedObjects);
-        returnedAttachedObjects = (Set<ValueChangeListener>)
-                UIComponentBase.restoreAttachedState(facesContext, result);
-
-    }
-
-    public void testAttachedObjectsStack() throws Exception {
-        Stack<ValueChangeListener> returnedAttachedObjects = null,
-                attachedObjects = new Stack<ValueChangeListener>();
-        ValueChangeListener toAdd = new TestValueChangeListener();
-        attachedObjects.add(toAdd);
-        toAdd = new TestValueChangeListener();
-        attachedObjects.add(toAdd);
-        toAdd = new TestValueChangeListener();
-        attachedObjects.add(toAdd);
-        Object result = UIComponentBase.saveAttachedState(facesContext, attachedObjects);
-        returnedAttachedObjects = (Stack<ValueChangeListener>)
-                UIComponentBase.restoreAttachedState(facesContext, result);
-    }
-
-    public void testAttachedObjectsMap() throws Exception {
-        Map<String, ValueChangeListener> returnedAttachedObjects = null,
-                attachedObjects = new HashMap<String, ValueChangeListener>();
-        ValueChangeListener toAdd = new TestValueChangeListener();
-        attachedObjects.put("one",toAdd);
-        toAdd = new TestValueChangeListener();
-        attachedObjects.put("two", toAdd);
-        toAdd = new TestValueChangeListener();
-        attachedObjects.put("three", toAdd);
-        Object result = UIComponentBase.saveAttachedState(facesContext, attachedObjects);
-        returnedAttachedObjects = (Map<String, ValueChangeListener>)
-                UIComponentBase.restoreAttachedState(facesContext, result);
-    }
-
-    // Regression test for bug #907
-    public void testAttachedObjectsCount() throws Exception {
-        Set<ValueChangeListener> returnedAttachedObjects = null,
-                attachedObjects = new HashSet<ValueChangeListener>();
-        ValueChangeListener toAdd = new TestValueChangeListener();
-        attachedObjects.add(toAdd);
-        toAdd = new TestValueChangeListener();
-        attachedObjects.add(toAdd);
-        toAdd = new TestValueChangeListener();
-        attachedObjects.add(toAdd);
-        Object result = UIComponentBase.saveAttachedState(facesContext, attachedObjects);
-        returnedAttachedObjects = (Set<ValueChangeListener>)
-                UIComponentBase.restoreAttachedState(facesContext, result);
-        int firstSize = returnedAttachedObjects.size();
-        returnedAttachedObjects = (Set<ValueChangeListener>)
-                UIComponentBase.restoreAttachedState(facesContext, result);
-        int secondSize = returnedAttachedObjects.size();
-        assertEquals(firstSize, secondSize);
-    }
-
-
-    public void testFacesListenerState() {
-
-        UIComponent component = new UIOutput();
-        TestFacesListener listener = new TestFacesListener();
-        listener.setValue("initial");
-        component.addFacesListener(listener);
-        component.markInitialState();
-        assertTrue(component.initialStateMarked());
-        assertTrue(listener.initialStateMarked());
-
-        Object state = component.saveState(facesContext);
-        assertNull(state);
-
-        component = new UIOutput();
-        listener = new TestFacesListener();
-        component.addFacesListener(listener);
-        listener.setValue("initial");
-        component.markInitialState();
-        listener.setValue("newvalue");
-        state = component.saveState(facesContext);
-        assertNotNull(state);
-
-        // verify that state is applied to existing Listener instances.
-        component = new UIOutput();
-        listener = new TestFacesListener();
-        component.addFacesListener(listener);
-        listener.setValue("newinitial");
-        component.restoreState(facesContext, state);
-        assertTrue("newvalue".equals(listener.getValue()));
-
-        // verify listeners are overwritten when using full state saving
-        component = new UIOutput();
-        listener = new TestFacesListener();
-        component.addFacesListener(listener);
-        listener.setValue("initial");
-        state = component.saveState(facesContext);
-        assertNotNull(state);
-        listener.setValue("postsave");
-
-        component.restoreState(facesContext, state);
-        TestFacesListener l = (TestFacesListener) component.getFacesListeners(TestFacesListener.class)[0];
-        assertTrue(l != listener);
-        assertTrue("initial".equals(l.getValue()));
-
-    }
-
-    public void testTransientListenersState() {
-
-        UIComponent output = new UIOutput();
-        output.markInitialState();
-        TestFacesListener l1 = new TestFacesListener();
-        TestFacesListener l2 = new TestFacesListener();
-        TestFacesListener l3 = new TestFacesListener();
-        TestFacesListener l4 = new TestFacesListener();
-        l1.setValue("l1");
-        l2.setValue("l2");
-        l3.setValue("l3");
-        l4.setValue("l4");
-        l2.setTransient(true);
-        l4.setTransient(true);
-
-        output.addFacesListener(l1);
-        output.addFacesListener(l2);
-        output.addFacesListener(l3);
-        output.addFacesListener(l4);
-
-        Object state = output.saveState(facesContext);
-        assertNotNull(state);
-        output = new UIOutput();
-        output.restoreState(facesContext, state);
-        FacesListener[] listeners = output.getFacesListeners(TestFacesListener.class);
-        assertTrue(listeners.length == 2);
-        assertEquals("l1", ((TestFacesListener) listeners[0]).getValue());
-        assertEquals("l3", ((TestFacesListener) listeners[1]).getValue());
-
-        output = new UIOutput();
-        output.markInitialState();
-        output.addFacesListener(l2);
-        state = output.saveState(facesContext);
-        assertNotNull(state);
-        output = new UIOutput();
-        output.restoreState(facesContext, state);
-        listeners = output.getFacesListeners(TestFacesListener.class);
-        assertTrue(listeners.length == 0);
-        
-    }
-
-
-    public void testTransientListenersState2() {
-
-        UIComponent output = new UIOutput();
-        TestFacesListener l1 = new TestFacesListener();
-        TestFacesListener l2 = new TestFacesListener();
-        TestFacesListener l3 = new TestFacesListener();
-        TestFacesListener l4 = new TestFacesListener();
-        l1.setValue("l1");
-        l2.setValue("l2");
-        l3.setValue("l3");
-        l4.setValue("l4");
-        l2.setTransient(true);
-        l4.setTransient(true);
-
-        output.addFacesListener(l1);
-        output.addFacesListener(l2);
-        output.addFacesListener(l3);
-        output.addFacesListener(l4);
-
-        Object state = output.saveState(facesContext);
-        assertNotNull(state);
-        output = new UIOutput();
-        output.restoreState(facesContext, state);
-        FacesListener[] listeners = output.getFacesListeners(TestFacesListener.class);
-        assertTrue(listeners.length == 2);
-        assertEquals("l1", ((TestFacesListener) listeners[0]).getValue());
-        assertEquals("l3", ((TestFacesListener) listeners[1]).getValue());
-
-        output = new UIOutput();
-        output.addFacesListener(l2);
-        state = output.saveState(facesContext);
-        assertNotNull(state);
-        output = new UIOutput();
-        output.restoreState(facesContext, state);
-        listeners = output.getFacesListeners(TestFacesListener.class);
-        assertTrue(listeners.length == 0);
-
-    }
-
-
-    // ---------------------------------------------------------- Nested Classes
-
-
-    public static final class TestFacesListener implements FacesListener, PartialStateHolder {
-
-        private boolean initialState;
-        private String value;
-        private boolean trans;
-
-        public String getValue() {
-            return value;
-        }
-
-        public void setValue(String value) {
-            clearInitialState();
-            this.value = value;
-        }
-
-        public void markInitialState() {
-            initialState = true;
-        }
-
-        public boolean initialStateMarked() {
-            return initialState;
-        }
-
-        public void clearInitialState() {
-            initialState = false;
-        }
-
-        public Object saveState(FacesContext context) {
-
-            return ((!initialState) ? new Object[]{value} : null);
-
-        }
-
-        public void restoreState(FacesContext context, Object state) {
-
-            if (state != null) {
-                Object[] values = (Object[]) state;
-                value = (String) values[0];
-            }
-
-        }
-
-        public boolean isTransient() {
-            return trans;
-        }
-
-        public void setTransient(boolean trans) {
-            this.trans = trans;
-        }
-    }
-
-}
diff --git a/jsf-api/src/test/java/javax/faces/component/UIComponentBaseBehaviorTestCase.java b/jsf-api/src/test/java/javax/faces/component/UIComponentBaseBehaviorTestCase.java
deleted file mode 100644
index bd9ab9a..0000000
--- a/jsf-api/src/test/java/javax/faces/component/UIComponentBaseBehaviorTestCase.java
+++ /dev/null
@@ -1,278 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- *
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- *
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- *
- * Contributor(s):
- *
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package javax.faces.component;
-
-import javax.faces.component.behavior.ClientBehavior;
-import javax.faces.component.behavior.ClientBehaviorContext;
-import javax.faces.component.behavior.ClientBehaviorHint;
-import javax.faces.component.behavior.ClientBehaviorHolder;
-import javax.faces.context.FacesContext;
-import javax.faces.event.BehaviorEvent;
-import java.io.Serializable;
-import java.util.*;
-
-/**
- * <p class="changed_added_2_0">
- * Test case for component behaviors.
- * </p>
- *
- * @since 2.0
- */
-public class UIComponentBaseBehaviorTestCase extends UIComponentTestCase {
-
-    private static final String ONTEST = "ontest";
-    private static final String ONCLICK = "onclick";
-    private static final String ONCHANGE = "onchange";
-    private static final String TEST_FAMILY = "javax.faces.Test";
-    private static final Collection<String> EVENTS = set(ONTEST, ONCLICK, ONCHANGE);
-
-    /**
-     * @author asmirnov
-     */
-    public static class BehaviorComponent extends UIComponentBase implements ClientBehaviorHolder {
-
-
-        /* (non-Javadoc)
-           * @see javax.faces.component.UIComponent#getFamily()
-           */
-        @Override
-        public String getFamily() {
-            return TEST_FAMILY;
-        }
-
-        @Override
-        public Collection<String> getEventNames() {
-            return EVENTS;
-        }
-
-        @Override
-        public String getDefaultEventName() {
-            return ONTEST;
-        }
-
-    }
-
-    @SuppressWarnings("serial")
-    public static class TestBehavior implements ClientBehavior, Serializable {
-
-        private static final Set<ClientBehaviorHint> HINTS =
-                Collections.unmodifiableSet(EnumSet.of(ClientBehaviorHint.SUBMITTING));
-
-        private static int sequence = 0;
-
-        private final int id;
-
-        public TestBehavior() {
-            id = sequence++;
-        }
-
-        public String getRendererType() {
-            return TEST_FAMILY;
-        }
-
-        public Set<ClientBehaviorHint> getHints() {
-            return HINTS;
-        }
-
-        public void broadcast(BehaviorEvent event) {
-        }
-
-        public void decode(FacesContext context, UIComponent component) {
-        }
-
-        public String getScript(ClientBehaviorContext bContext) {
-            return null;
-        }
-
-        @Override
-        public int hashCode() {
-            final int prime = 31;
-            int result = 1;
-            result = prime * result + id;
-            return result;
-        }
-
-        @Override
-        public boolean equals(Object obj) {
-            if (this == obj)
-                return true;
-            if (obj == null)
-                return false;
-            if (getClass() != obj.getClass())
-                return false;
-            TestBehavior other = (TestBehavior) obj;
-            if (id != other.id)
-                return false;
-            return true;
-        }
-
-        @Override
-        public String toString() {
-            return "Behavior #" + id;
-        }
-
-    }
-
-    public UIComponentBaseBehaviorTestCase(String name) {
-        super(name);
-    }
-
-    /* (non-Javadoc)
-      * @see javax.faces.component.UIComponentTestCase#setUp()
-      */
-    public void setUp() {
-        super.setUp();
-    }
-
-    /* (non-Javadoc)
-      * @see javax.faces.component.UIComponentTestCase#tearDown()
-      */
-    public void tearDown() {
-        super.tearDown();
-    }
-
-    /**
-     * Test method for {@link javax.faces.component.UIComponentBase#saveState(javax.faces.context.FacesContext)}.
-     */
-    public void testSaveState() {
-        BehaviorComponent comp = new BehaviorComponent();
-        // Cast component to the interface, to be sure about method definition.
-        ClientBehaviorHolder holder = (ClientBehaviorHolder) comp;
-        TestBehavior behavior = new TestBehavior();
-        holder.addClientBehavior(ONCLICK, behavior);
-        TestBehavior behavior2 = new TestBehavior();
-        holder.addClientBehavior(ONCLICK, behavior2);
-        TestBehavior behavior3 = new TestBehavior();
-        holder.addClientBehavior(ONCHANGE, behavior3);
-        Object state = comp.saveState(facesContext);
-        BehaviorComponent restoredComp = new BehaviorComponent();
-        restoredComp.restoreState(facesContext, state);
-        Map<String, List<ClientBehavior>> behaviors = restoredComp.getClientBehaviors();
-        assertFalse(behaviors.isEmpty());
-        assertTrue(behaviors.containsKey(ONCLICK));
-        assertTrue(behaviors.containsKey(ONCHANGE));
-        assertFalse(behaviors.containsKey(ONTEST));
-        assertEquals(2, behaviors.entrySet().size());
-        assertEquals(2, behaviors.keySet().size());
-        assertEquals(2, behaviors.values().size());
-        assertEquals(2, behaviors.get(ONCLICK).size());
-        assertEquals(1, behaviors.get(ONCHANGE).size());
-        assertEquals(behavior3, behaviors.get(ONCHANGE).get(0));
-        assertEquals(behavior, behaviors.get(ONCLICK).get(0));
-        assertEquals(behavior2, behaviors.get(ONCLICK).get(1));
-
-    }
-
-    public void testNonClientBehaviorHolder() throws Exception {
-        UIInput input = new UIInput();
-        try {
-            input.addClientBehavior(ONTEST, new TestBehavior());
-        } catch (IllegalStateException e) {
-            return;
-        }
-        assertFalse(true);
-    }
-
-    /**
-     * Test method for {@link javax.faces.component.UIComponentBase#addClientBehavior(java.lang.String, javax.faces.component.behavior.Behavior)}.
-     */
-    public void testAddBehavior() {
-        BehaviorComponent comp = new BehaviorComponent();
-        // Cast component to the interface, to be sure about method definition.
-        ClientBehaviorHolder holder = (ClientBehaviorHolder) comp;
-        holder.addClientBehavior(ONCLICK, new TestBehavior());
-        holder.addClientBehavior(ONCLICK, new TestBehavior());
-        holder.addClientBehavior(ONCHANGE, new TestBehavior());
-        try {
-            holder.addClientBehavior("foo", new TestBehavior());
-        } catch (IllegalArgumentException e) {
-            return;
-        }
-        assertFalse(true);
-    }
-
-    /**
-     * Test method for {@link javax.faces.component.UIComponentBase#getEventNames()}.
-     */
-    public void testGetEventNames() {
-        BehaviorComponent comp = new BehaviorComponent();
-        ClientBehaviorHolder holder = (ClientBehaviorHolder) comp;
-        assertEquals(EVENTS, holder.getEventNames());
-    }
-
-    /**
-     * Test method for {@link javax.faces.component.UIComponentBase#getClientBehaviors()}.
-     */
-    public void testGetBehaviors() {
-        BehaviorComponent comp = new BehaviorComponent();
-        // Cast component to the interface, to be sure about method definition.
-        ClientBehaviorHolder holder = (ClientBehaviorHolder) comp;
-        Map<String, List<ClientBehavior>> behaviors = holder.getClientBehaviors();
-        assertTrue(behaviors.isEmpty());
-        assertFalse(behaviors.containsKey(ONCLICK));
-        assertFalse(behaviors.containsValue(new TestBehavior()));
-        assertEquals(0, behaviors.entrySet().size());
-        holder.addClientBehavior(ONCLICK, new TestBehavior());
-        holder.addClientBehavior(ONCLICK, new TestBehavior());
-        holder.addClientBehavior(ONCHANGE, new TestBehavior());
-        assertFalse(behaviors.isEmpty());
-        assertTrue(behaviors.containsKey(ONCLICK));
-        assertTrue(behaviors.containsKey(ONCHANGE));
-        assertFalse(behaviors.containsKey(ONTEST));
-        assertEquals(2, behaviors.entrySet().size());
-        assertEquals(2, behaviors.keySet().size());
-        assertEquals(2, behaviors.values().size());
-        assertEquals(2, behaviors.get(ONCLICK).size());
-        assertEquals(1, behaviors.get(ONCHANGE).size());
-    }
-
-    /**
-     * Test method for {@link javax.faces.component.UIComponentBase#getDefaultEventName()}.
-     */
-    public void testGetDefaultEventName() {
-        BehaviorComponent comp = new BehaviorComponent();
-        // Cast component to the interface, to be sure about method definition.
-        ClientBehaviorHolder holder = (ClientBehaviorHolder) comp;
-        assertEquals(ONTEST, holder.getDefaultEventName());
-    }
-
-    public static <T> Set<T> set(T... ts) {
-        return new HashSet<T>(Arrays.asList(ts));
-    }
-
-
-}
diff --git a/jsf-api/src/test/java/javax/faces/component/UIComponentBaseTestCase.java b/jsf-api/src/test/java/javax/faces/component/UIComponentBaseTestCase.java
deleted file mode 100644
index 260d848..0000000
--- a/jsf-api/src/test/java/javax/faces/component/UIComponentBaseTestCase.java
+++ /dev/null
@@ -1,1872 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package javax.faces.component;
-
-import com.sun.faces.mock.MockValueBinding;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-import javax.el.ValueExpression;
-import javax.faces.FacesException;
-import javax.faces.application.FacesMessage;
-import javax.faces.context.FacesContext;
-import javax.faces.el.ValueBinding;
-import javax.faces.event.*;
-import javax.faces.validator.ValidatorException;
-import java.io.IOException;
-import java.lang.reflect.InvocationTargetException;
-import java.util.*;
-
-
-/**
- * <p>Base unit tests for all {@link UIComponentBase} subclasses.</p>
- */
-
-public class UIComponentBaseTestCase extends UIComponentTestCase {
-
-
-    // ------------------------------------------------------ Instance Variables
-
-
-    // Mock object instances for our tests
-
-
-    // ------------------------------------------------------------ Constructors
-
-
-    /**
-     * Construct a new instance of this test case.
-     *
-     * @param name Name of the test case
-     */
-    public UIComponentBaseTestCase(String name) {
-        super(name);
-    }
-
-
-    // ---------------------------------------------------- Overall Test Methods
-
-
-    // Set up instance variables required by this test case.
-
-    public void setUp() {
-
-        // Set up the component under test
-        super.setUp();
-        component = new TestComponent(expectedId);
-
-    }
-
-
-    // Return the tests included in this test case.
-    public static Test suite() {
-        return (new TestSuite(UIComponentBaseTestCase.class));
-    }
-
-
-    // Tear down instance variables required by ths test case
-    public void tearDown() {
-        externalContext.setRequestParameterMap(null);
-
-        super.tearDown();
-        application = null;
-        config = null;
-        externalContext = null;
-        facesContext = null;
-        lifecycle = null;
-        request = null;
-        response = null;
-        servletContext = null;
-        session = null;
-
-    }
-
-
-    // ------------------------------------------------- Individual Test Methods
-
-
-    // Test lifecycle management methods
-
-    public void testLifecycleManagement() {
-
-        checkLifecycleParentRendered();
-        checkLifecycleParentUnrendered();
-        checkLifecycleSelfRendered();
-        checkLifecycleSelfUnrendered();
-
-
-    }
-
-
-    public void testComponentToFromEL() {
-
-        final String key = UIComponent.CURRENT_COMPONENT;
-        TestComponent c = new TestComponent();
-        facesContext.getAttributes().clear();
-        assertNull(facesContext.getAttributes().get(key));
-        c.pushComponentToEL(facesContext, null);
-        assertTrue(facesContext.getAttributes().get(key) == c);
-        c.popComponentFromEL(facesContext);
-        assertNull(facesContext.getAttributes().get(key));
-
-        // ensure a push/pop seqeunce restores the previous component
-        TestComponent c1 = new TestComponent();
-        facesContext.getAttributes().put(key, c1);
-        c.pushComponentToEL(facesContext, null);
-        assertTrue(facesContext.getAttributes().get(key) == c);
-        c.popComponentFromEL(facesContext);
-        assertTrue(facesContext.getAttributes().get(key) == c1);
-
-    }
-
-
-    public void testComponentToFromEL2() throws Exception {
-
-        final String key = UIComponent.CURRENT_COMPONENT;
-        final FacesContext ctx = facesContext;
-        TestComponent c = new TestComponent();
-        TestComponent c2 = new TestComponent();
-        UIComponent eeo = new UIComponentOverrideEncodeEnd();
-        TestComponent c3 = new TestComponent();
-        UIComponent ebo = new UIComponentOverrideEncodeBegin();
-
-        c.encodeBegin(ctx);
-        assertEquals(UIComponent.getCurrentComponent(ctx), c);
-        c2.encodeBegin(ctx);
-        assertEquals(UIComponent.getCurrentComponent(ctx), c2);
-        c2.encodeEnd(ctx);
-        assertEquals(UIComponent.getCurrentComponent(ctx), c);
-        c.encodeEnd(ctx);
-        assertNull(UIComponent.getCurrentComponent(ctx));
-
-        // sanity check for the case where a component overrides
-        // encodeBegin() without calling super or pushComponentToEL
-        c.encodeBegin(ctx);
-        c2.encodeBegin(ctx);
-        ebo.encodeBegin(ctx);
-        assertEquals(UIComponent.getCurrentComponent(ctx), c2);
-        ebo.encodeEnd(ctx); // if the component wasn't pushed
-        // it shouldn't be popped.
-        assertEquals(UIComponent.getCurrentComponent(ctx), c2);
-        c2.encodeEnd(ctx);
-        assertEquals(UIComponent.getCurrentComponent(ctx), c);
-        c.encodeEnd(ctx);
-        assertNull(UIComponent.getCurrentComponent(ctx));
-
-
-        // sanity check for the case where a component overrides
-        // encodeEnd() without calling super or popComponentFromEL
-        c.encodeBegin(ctx);
-        c2.encodeBegin(ctx);
-        eeo.encodeBegin(ctx);
-        assertEquals(UIComponent.getCurrentComponent(ctx), eeo);
-        eeo.encodeEnd(ctx);
-        // this is ugly.  Because of a component not doing calling
-        // super() or popComponentFromEL, c2 won't be visible
-        // as the current component.
-        assertEquals(UIComponent.getCurrentComponent(ctx), eeo);
-        c2.encodeEnd(ctx);
-        assertEquals(UIComponent.getCurrentComponent(ctx), c);
-        c.encodeEnd(ctx);
-        assertNull(UIComponent.getCurrentComponent(ctx));
-
-        UIComponent eeo2 = new UIComponentOverrideEncodeEnd();
-        c.encodeBegin(ctx);
-        c2.encodeBegin(ctx);
-        eeo.encodeBegin(ctx);
-        assertEquals(UIComponent.getCurrentComponent(ctx), eeo);
-        c3.encodeBegin(ctx);
-        assertEquals(UIComponent.getCurrentComponent(ctx), c3);
-        eeo2.encodeBegin(ctx);
-        assertEquals(UIComponent.getCurrentComponent(ctx), eeo2);
-        eeo2.encodeEnd(ctx);
-        // this is ugly.
-        assertEquals(UIComponent.getCurrentComponent(ctx), eeo2);
-        c3.encodeEnd(ctx);
-        assertEquals(UIComponent.getCurrentComponent(ctx), eeo);
-        eeo.encodeEnd(ctx);
-        // this is ugly.
-        assertEquals(UIComponent.getCurrentComponent(ctx), eeo);
-        c2.encodeEnd(ctx);
-        assertEquals(UIComponent.getCurrentComponent(ctx), c);
-        c.encodeEnd(ctx);
-        assertNull(UIComponent.getCurrentComponent(ctx));
-
-    }
-
-    public void testEncodeChildren() throws Exception {
-        TestComponent.trace(null);
-        UIComponent comp1 = new TestComponent("one");
-        UIComponent comp2 = new TestComponent("two");
-        UIComponent comp3 = new TestComponent("three");
-        UIComponent comp4 = new TestComponent("four");
-
-        comp1.getChildren().add(comp2);
-        comp1.getChildren().add(comp3);
-        comp1.getChildren().add(comp4);
-
-        comp1.encodeChildren(facesContext);
-        System.out.println("Actual:   " + TestComponent.trace());
-        System.out.println("Expected: " + "/eC-one/eB-two/eE-two/eB-three/eE-three/eB-four/eE-four");
-        assertEquals("/eC-one/eB-two/eE-two/eB-three/eE-three/eB-four/eE-four", TestComponent.trace());
-
-    }
-
-
-    // Test recursive adding and removing child trees with ids
-    public void testChildrenRecursive() {
-
-        // Create the components we will need
-        UIComponent testComponent = new TestComponent();
-        UIComponent child1 = new TestComponent("child1");
-        UIComponent child2 = new TestComponent("child2");
-        UIComponent child3 = new TestComponent("child3");
-
-        // Prepare ancestry tree before adding to base component
-        child1.getChildren().add(child2);
-        child2.getChildren().add(child3);
-
-        // Verify that no child ids are visible yet
-        assertNull(testComponent.findComponent("child1"));
-        assertNull(testComponent.findComponent("child2"));
-        assertNull(testComponent.findComponent("child3"));
-
-        // Add the entire tree
-        testComponent.getChildren().add(child1);
-
-        // Verify that all named children get added
-        assertEquals(child1, testComponent.findComponent("child1"));
-        assertEquals(child2, testComponent.findComponent("child2"));
-        assertEquals(child3, testComponent.findComponent("child3"));
-
-        // Remove the entire tree
-        testComponent.getChildren().remove(child1);
-
-        // Verify that child ids are no longer visible
-        assertNull(testComponent.findComponent("child1"));
-        assertNull(testComponent.findComponent("child2"));
-        assertNull(testComponent.findComponent("child3"));
-
-    }
-
-    public void testChildrenAndFacetsWithNullGetParent() throws Exception {
-        TestComponent child = new TestComponent() {
-            public UIComponent getParent() {
-                return null;
-            }
-        };
-        component.getChildren().add(child);
-        assertNull(component.getChildren().get(0).getParent());
-        TestComponent facet = new TestComponent() {
-            public UIComponent getParent() {
-                return null;
-            }
-        };
-        component.getFacets().put("nullParent", facet);
-        assertNull(component.getFacets().get("nullParent").getParent());
-    }
-
-
-    // Test reconnecting a child or facet to a different component
-    public void testComponentReconnect() {
-
-        UIComponent parent1 = new TestComponent();
-        UIComponent parent2 = new TestComponent();
-
-        // Reconnect an existing child as a child
-        checkChildCount(parent1, 0);
-        checkChildCount(parent2, 0);
-        parent1.getChildren().add(component);
-        checkChildCount(parent1, 1);
-        checkChildCount(parent2, 0);
-        checkChildPresent(parent1, component, 0);
-        parent2.getChildren().add(component);
-        checkChildCount(parent1, 0);
-        checkChildCount(parent2, 1);
-        checkChildPresent(parent2, component, 0);
-        parent2.getChildren().clear();
-        checkChildCount(parent1, 0);
-        checkChildCount(parent2, 0);
-
-        // Reconnect an existing child as a facet
-        checkChildCount(parent1, 0);
-        checkFacetCount(parent2, 0);
-        parent1.getChildren().add(component);
-        checkChildCount(parent1, 1);
-        checkFacetCount(parent2, 0);
-        checkChildPresent(parent1, component, 0);
-        parent2.getFacets().put("facet", component);
-        checkChildCount(parent1, 0);
-        checkFacetCount(parent2, 1);
-        checkFacetPresent(parent2, "facet", component);
-        parent2.getFacets().clear();
-        checkChildCount(parent1, 0);
-        checkFacetCount(parent2, 0);
-
-        // Reconnect an existing facet as a child
-        checkFacetCount(parent1, 0);
-        checkChildCount(parent2, 0);
-        parent1.getFacets().put("facet", component);
-        checkFacetCount(parent1, 1);
-        checkChildCount(parent2, 0);
-        checkFacetPresent(parent1, "facet", component);
-        parent2.getChildren().add(component);
-        checkFacetCount(parent1, 0);
-        checkChildCount(parent2, 1);
-        checkChildPresent(parent2, component, 0);
-        parent2.getChildren().clear();
-        checkFacetCount(parent1, 0);
-        checkChildCount(parent2, 0);
-
-    }
-
-
-    // Test removing components from our naming container.
-    public void testComponentRemoval() {
-
-        UIComponent testComponent = new TestComponent();
-        UIComponent child1 = new TestComponent("child1");
-        UIComponent child2 = new TestComponent("child2");
-        UIComponent child3 = new TestComponent("child3");
-        UIComponent child = null;
-
-        //adding children to naming container
-        testComponent.getChildren().add(child1);
-        testComponent.getChildren().add(child2);
-        testComponent.getChildren().add(child3);
-
-        // make sure children are stored in naming container properly
-        Iterator kidItr = null;
-
-        kidItr = testComponent.getFacetsAndChildren();
-
-        child = (UIComponent) kidItr.next();
-        assertTrue(child.equals(child1));
-
-        child = (UIComponent) kidItr.next();
-        assertTrue(child.equals(child2));
-
-        child = (UIComponent) kidItr.next();
-        assertTrue(child.equals(child3));
-
-        //make sure child is removed from component and naming container
-        //pass in a component to remove method
-        testComponent.getChildren().remove(child1);
-
-        kidItr = testComponent.getFacetsAndChildren();
-
-        child = (UIComponent) kidItr.next();
-        assertTrue(child.equals(child2));
-
-        child = (UIComponent) kidItr.next();
-        assertTrue(child.equals(child3));
-
-        //make sure child is removed from component and naming container
-        //pass an index to remove method
-        testComponent.getChildren().remove(0);
-
-        kidItr = testComponent.getFacetsAndChildren();
-
-        child = (UIComponent) kidItr.next();
-        assertTrue(child.equals(child3));
-
-        //make sure child is removed from component and naming container
-        //remove all children
-        testComponent.getChildren().clear();
-
-        kidItr = testComponent.getFacetsAndChildren();
-        assertTrue(!kidItr.hasNext());
-    }
-
-
-    public void testStateHolder() throws Exception {
-
-        // Set up the components we will need
-        UIComponent parent = new TestComponent("root");
-        UIComponent preSave = createComponent();
-        UIComponent facet1 = createComponent();
-        facet1.setId("facet1");
-        preSave.getFacets().put("facet1 key", facet1);
-        UIComponent facet2 = createComponent();
-        facet2.setId("facet2");
-        preSave.getFacets().put("facet2 key", facet2);
-        parent.getChildren().add(preSave);
-        populateComponent(preSave);
-        UIComponent postSave = createComponent();
-
-        // Save and restore state and compare the results
-        Object state = preSave.saveState(facesContext);
-        assertNotNull(state);
-        postSave.restoreState(facesContext, state);
-        checkComponents(preSave, postSave);
-        checkValueBindings(preSave, postSave);
-        checkComponentListeners(preSave, postSave);
-    }
-
-
-    public void testStateHolder2() throws Exception {
-
-        UIComponent c = new UIComponentListener();
-        c.subscribeToEvent(PostAddToViewEvent.class, (ComponentSystemEventListener) c);
-        Object state = c.saveState(facesContext);
-        c = new UIComponentListener();
-        c.pushComponentToEL(facesContext, c);
-        c.restoreState(facesContext, state);
-        c.popComponentFromEL(facesContext);
-        assertTrue(c.getListenersForEventClass(PostAddToViewEvent.class).size() == 1);
-
-    }
-
-
-    public void testValueBindings() {
-
-        UIComponentBase test = (UIComponentBase) component;
-
-        // generic attributes
-        request.setAttribute("foo", "bar");
-        Object result = test.getAttributes().get("childCount");
-        test.getAttributes().clear();
-        assertNull(test.getAttributes().get("baz"));
-        test.setValueBinding("baz", application.createValueBinding("#{foo}"));
-        assertEquals("bar", test.getAttributes().get("baz"));
-        test.getAttributes().put("baz", "bop");
-        assertEquals("bop", test.getAttributes().get("baz"));
-        test.getAttributes().remove("baz");
-        assertEquals("bar", test.getAttributes().get("baz"));
-        test.setValueBinding("baz", null);
-        assertNull(test.getAttributes().get("baz"));
-
-        // "id" property
-        try {
-            test.setValueBinding("id",
-                    application.createValueBinding("#{foo}"));
-            fail("Should have thrown IllegalArgumentException");
-        } catch (IllegalArgumentException e) {
-            ; // Expected response
-        }
-
-        // "parent" property
-        try {
-            test.setValueBinding("parent",
-                    application.createValueBinding("#{foo}"));
-            fail("Should have thrown IllegalArgumentException");
-        } catch (IllegalArgumentException e) {
-            ; // Expected response
-        }
-
-        // "rendered" property
-        request.setAttribute("foo", Boolean.FALSE);
-        boolean initial = test.isRendered();
-        if (initial) {
-            request.setAttribute("foo", Boolean.FALSE);
-        } else {
-            request.setAttribute("foo", Boolean.TRUE);
-        }
-        test.setValueBinding("rendered", application.createValueBinding("#{foo}"));
-        assertEquals(!initial, test.isRendered());
-        test.setRendered(initial);
-        assertEquals(initial, test.isRendered());
-        assertNotNull(test.getValueBinding("rendered"));
-
-        // "rendererType" property
-        request.setAttribute("foo", "bar");
-        test.setRendererType(null);
-        assertNull(test.getRendererType());
-        test.setValueBinding("rendererType", application.createValueBinding("#{foo}"));
-        assertNotNull(test.getValueBinding("rendererType"));
-        assertEquals("bar", test.getRendererType());
-        test.setRendererType("baz");
-        assertEquals("baz", test.getRendererType());
-        test.setRendererType(null);
-        assertEquals("bar", test.getRendererType());
-        test.setValueBinding("rendererType", null);
-        assertNull(test.getValueBinding("rendererType"));
-        assertNull(test.getRendererType());
-
-    }
-
-    public void testValueExpressions() throws Exception {
-
-        UIComponentBase test = (UIComponentBase) component;
-
-        // generic attributes
-        request.setAttribute("foo", "bar");
-        test.getAttributes().clear();
-        assertNull(test.getAttributes().get("baz"));
-        test.setValueExpression("baz", application.getExpressionFactory().createValueExpression(facesContext.getELContext(), "#{foo}", String.class));
-        assertEquals("bar", test.getAttributes().get("baz"));
-        test.getAttributes().put("baz", "bop");
-        assertEquals("bop", test.getAttributes().get("baz"));
-        test.getAttributes().remove("baz");
-        assertEquals("bar", test.getAttributes().get("baz"));
-        test.setValueExpression("baz", null);
-        assertNull(test.getAttributes().get("baz"));
-
-        // "id" property
-        try {
-            test.setValueExpression("id",
-                    application.getExpressionFactory().createValueExpression(facesContext.getELContext(), "#{foo}", String.class));
-            fail("Should have thrown IllegalArgumentException");
-        } catch (IllegalArgumentException e) {
-            ; // Expected response
-        }
-
-        // "parent" property
-        try {
-            test.setValueExpression("parent",
-                    application.getExpressionFactory().createValueExpression(facesContext.getELContext(), "#{foo}", UIComponent.class));
-            fail("Should have thrown IllegalArgumentException");
-        } catch (IllegalArgumentException e) {
-            ; // Expected response
-        }
-
-        // "rendered" property
-        request.setAttribute("foo", Boolean.FALSE);
-        test.setValueExpression("rendered", null);
-        boolean initial = test.isRendered();
-        if (initial) {
-            request.setAttribute("foo", Boolean.FALSE);
-        } else {
-            request.setAttribute("foo", Boolean.TRUE);
-        }
-        test.setValueExpression("rendered", application.getExpressionFactory().createValueExpression(facesContext.getELContext(), "#{foo}", Boolean.class));
-        assertEquals(!initial, test.isRendered());
-        test.setRendered(initial);
-        assertEquals(initial, test.isRendered());
-        assertNotNull(test.getValueExpression("rendered"));
-
-        // "rendererType" property
-        request.setAttribute("foo", "bar");
-        test.setRendererType(null);
-        assertNull(test.getRendererType());
-        test.setValueExpression("rendererType", application.getExpressionFactory().createValueExpression(facesContext.getELContext(), "#{foo}", String.class));
-        assertNotNull(test.getValueExpression("rendererType"));
-        assertEquals("bar", test.getRendererType());
-        test.setRendererType("baz");
-        assertEquals("baz", test.getRendererType());
-        test.setRendererType(null);
-        assertEquals("bar", test.getRendererType());
-        test.setValueExpression("rendererType", null);
-        assertNull(test.getValueExpression("rendererType"));
-        assertNull(test.getRendererType());
-
-    }
-
-    public void testValueExpressionValueBindingIdempotency() throws Exception {
-
-        UIComponentBase test = (UIComponentBase) component;
-
-        request.setAttribute("foo", "bar");
-        test.getAttributes().clear();
-        assertNull(test.getAttributes().get("baz"));
-        ValueBinding binding = null;
-        ValueExpression expression = null;
-
-        binding = application.createValueBinding("#{foo}");
-        test.setValueBinding("baz", binding);
-        expression = test.getValueExpression("baz");
-
-        assertEquals(binding.getExpressionString(),
-                expression.getExpressionString());
-        test.setValueBinding("baz", null);
-
-        expression = application.getExpressionFactory().createValueExpression(facesContext.getELContext(), "#{foo}", String.class);
-        test.setValueExpression("baz", expression);
-        binding = test.getValueBinding("baz");
-        assertEquals(binding.getExpressionString(),
-                expression.getExpressionString());
-        test.setValueBinding("baz", null);
-
-    }
-
-    public void testMethodBindingAdapterBaseException() throws Exception {
-        IllegalThreadStateException itse = new IllegalThreadStateException("The root cause!");
-        AbortProcessingException ape = new CustomAbortProcessingException(itse);
-        InvocationTargetException ite1 = new InvocationTargetException(ape);
-        InvocationTargetException ite2 = new InvocationTargetException(ite1);
-        InvocationTargetException ite3 = new InvocationTargetException(ite2);
-        MethodBindingValueChangeListener mbvcl =
-                new MethodBindingValueChangeListener();
-        Throwable expected =
-                mbvcl.getExpectedCause(AbortProcessingException.class, ite3);
-        assertEquals(expected, ape);
-
-        ValidatorException ve = new ValidatorException(new FacesMessage(),
-                itse);
-        ite1 = new InvocationTargetException(ve);
-        ite2 = new InvocationTargetException(ite1);
-        ite3 = new InvocationTargetException(ite2);
-
-        MethodBindingValidator mbv = new MethodBindingValidator();
-        expected =
-                mbv.getExpectedCause(ValidatorException.class, ite3);
-        assertEquals(expected, ve);
-    }
-
-
-    // --------------------------------------------------------- support Methods
-
-
-    // Check that the attributes on the specified components are equal
-
-    protected void checkAttributes(UIComponent comp1, UIComponent comp2) {
-        assertEquals(comp1.getAttributes(), comp2.getAttributes());
-    }
-
-
-    // Check that the specified components are equal
-    protected void checkComponents(UIComponent comp1, UIComponent comp2) {
-        checkAttributes(comp1, comp2);
-        // checkFacets(comp1, comp2); // Not saved and restored by component
-        checkProperties(comp1, comp2);
-    }
-
-
-    // Check lifecycle processing when parent "rendered" property is "true"
-    private void checkLifecycleParentRendered() {
-
-        // Put our component under test in a tree under a UIViewRoot
-        component.getAttributes().clear();
-        component.getChildren().clear();
-        component.getFacets().clear();
-        component.setRendered(true);
-        UIViewRoot root = facesContext.getApplication().getViewHandler().createView(facesContext, null);
-        UIPanel panel = new UIPanel();
-        panel.setRendered(true);
-        root.getChildren().add(panel);
-        panel.getChildren().add(component);
-
-        // Establish a view with multiple facets and children
-        UIComponent facet1 = new TestComponent("f1");
-        UIComponent facet2 = new TestComponent("f2");
-        UIComponent facet3 = new TestComponent("f3");
-        component.getFacets().put("f1", facet1);
-        component.getFacets().put("f2", facet2);
-        component.getFacets().put("f3", facet3);
-        checkFacetCount(component, 3);
-        UIComponent child1 = new TestComponent("c1");
-        UIComponent child2 = new TestComponent("c2");
-        UIComponent child3 = new TestComponent("c3");
-        component.getChildren().add(child1);
-        component.getChildren().add(child2);
-        component.getChildren().add(child3);
-        checkChildCount(component, 3);
-        UIComponent child2a = new TestComponent("c2a");
-        UIComponent child2b = new TestComponent("c2b");
-        child2.getChildren().add(child2a);
-        child2.getChildren().add(child2b);
-        checkChildCount(child2, 2);
-
-        // Enqueue a single FacesEvent for each component
-        component.queueEvent(new TestEvent(component));
-        component.queueEvent(new TestEvent(facet1));
-        component.queueEvent(new TestEvent(facet2));
-        component.queueEvent(new TestEvent(facet3));
-        component.queueEvent(new TestEvent(child1));
-        component.queueEvent(new TestEvent(child2));
-        component.queueEvent(new TestEvent(child3));
-        component.queueEvent(new TestEvent(child2a));
-        component.queueEvent(new TestEvent(child2b));
-
-        // Test processDecodes()
-        TestComponent.trace(null);
-        component.processDecodes(facesContext);
-        assertEquals("processDecodes",
-                lifecycleTrace("pD", "d"),
-                TestComponent.trace());
-
-        // Test processValidators()
-        TestComponent.trace(null);
-        component.processValidators(facesContext);
-        assertEquals("processValidators",
-                lifecycleTrace("pV", null),
-                TestComponent.trace());
-
-        // Test processUpdates()
-        TestComponent.trace(null);
-        component.processUpdates(facesContext);
-        assertEquals("processUpdates",
-                lifecycleTrace("pU", null),
-                TestComponent.trace());
-
-    }
-
-
-    // Check lifecycle processing when parent "rendered" property is "false"
-    private void checkLifecycleParentUnrendered() {
-
-        // Put our component under test in a tree under a UIViewRoot
-        component.getAttributes().clear();
-        component.getChildren().clear();
-        component.getFacets().clear();
-        component.setRendered(true);
-        UIViewRoot root = facesContext.getApplication().getViewHandler().createView(facesContext, null);
-        UIPanel panel = new UIPanel();
-        panel.setRendered(false);
-        root.getChildren().add(panel);
-        panel.getChildren().add(component);
-
-        // Establish a view with multiple facets and children
-        UIComponent facet1 = new TestComponent("f1");
-        UIComponent facet2 = new TestComponent("f2");
-        UIComponent facet3 = new TestComponent("f3");
-        component.getFacets().put("f1", facet1);
-        component.getFacets().put("f2", facet2);
-        component.getFacets().put("f3", facet3);
-        checkFacetCount(component, 3);
-        UIComponent child1 = new TestComponent("c1");
-        UIComponent child2 = new TestComponent("c2");
-        UIComponent child3 = new TestComponent("c3");
-        component.getChildren().add(child1);
-        component.getChildren().add(child2);
-        component.getChildren().add(child3);
-        checkChildCount(component, 3);
-        UIComponent child2a = new TestComponent("c2a");
-        UIComponent child2b = new TestComponent("c2b");
-        child2.getChildren().add(child2a);
-        child2.getChildren().add(child2b);
-        checkChildCount(child2, 2);
-
-        // Enqueue a single FacesEvent for each component
-        component.queueEvent(new TestEvent(component));
-        component.queueEvent(new TestEvent(facet1));
-        component.queueEvent(new TestEvent(facet2));
-        component.queueEvent(new TestEvent(facet3));
-        component.queueEvent(new TestEvent(child1));
-        component.queueEvent(new TestEvent(child2));
-        component.queueEvent(new TestEvent(child3));
-        component.queueEvent(new TestEvent(child2a));
-        component.queueEvent(new TestEvent(child2b));
-
-        // Test processDecodes()
-        TestComponent.trace(null);
-        component.processDecodes(facesContext);
-        assertEquals("processDecodes",
-                lifecycleTrace("pD", "d"),
-                TestComponent.trace());
-
-        // Test processValidators()
-        TestComponent.trace(null);
-        component.processValidators(facesContext);
-        assertEquals("processValidators",
-                lifecycleTrace("pV", null),
-                TestComponent.trace());
-
-        // Test processUpdates()
-        TestComponent.trace(null);
-        component.processUpdates(facesContext);
-        assertEquals("processUpdates",
-                lifecycleTrace("pU", null),
-                TestComponent.trace());
-
-    }
-
-
-    // Check lifecycle processing when our "rendered" property is "true"
-    private void checkLifecycleSelfRendered() {
-
-        // Put our component under test in a tree under a UIViewRoot
-        component.getAttributes().clear();
-        component.getChildren().clear();
-        component.getFacets().clear();
-        component.setRendered(true);
-        UIViewRoot root = facesContext.getApplication().getViewHandler().createView(facesContext, null);
-        root.getChildren().add(component);
-
-        // Establish a view with multiple facets and children
-        UIComponent facet1 = new TestComponent("f1");
-        UIComponent facet2 = new TestComponent("f2");
-        UIComponent facet3 = new TestComponent("f3");
-        component.getFacets().put("f1", facet1);
-        component.getFacets().put("f2", facet2);
-        component.getFacets().put("f3", facet3);
-        checkFacetCount(component, 3);
-        UIComponent child1 = new TestComponent("c1");
-        UIComponent child2 = new TestComponent("c2");
-        UIComponent child3 = new TestComponent("c3");
-        component.getChildren().add(child1);
-        component.getChildren().add(child2);
-        component.getChildren().add(child3);
-        checkChildCount(component, 3);
-        UIComponent child2a = new TestComponent("c2a");
-        UIComponent child2b = new TestComponent("c2b");
-        child2.getChildren().add(child2a);
-        child2.getChildren().add(child2b);
-        checkChildCount(child2, 2);
-
-        // Enqueue a single FacesEvent for each component
-        component.queueEvent(new TestEvent(component));
-        component.queueEvent(new TestEvent(facet1));
-        component.queueEvent(new TestEvent(facet2));
-        component.queueEvent(new TestEvent(facet3));
-        component.queueEvent(new TestEvent(child1));
-        component.queueEvent(new TestEvent(child2));
-        component.queueEvent(new TestEvent(child3));
-        component.queueEvent(new TestEvent(child2a));
-        component.queueEvent(new TestEvent(child2b));
-
-        // Test processDecodes()
-        TestComponent.trace(null);
-        component.processDecodes(facesContext);
-        assertEquals("processDecodes",
-                lifecycleTrace("pD", "d"),
-                TestComponent.trace());
-
-        // Test processValidators()
-        TestComponent.trace(null);
-        component.processValidators(facesContext);
-        assertEquals("processValidators",
-                lifecycleTrace("pV", null),
-                TestComponent.trace());
-
-        // Test processUpdates()
-        TestComponent.trace(null);
-        component.processUpdates(facesContext);
-        assertEquals("processUpdates",
-                lifecycleTrace("pU", null),
-                TestComponent.trace());
-
-    }
-
-
-    // Check lifecycle processing when our "rendered" property is "false"
-    private void checkLifecycleSelfUnrendered() {
-
-        // Put our component under test in a tree under a UIViewRoot
-        component.getAttributes().clear();
-        component.getChildren().clear();
-        component.getFacets().clear();
-        component.setRendered(false);
-        UIViewRoot root = facesContext.getApplication().getViewHandler().createView(facesContext, null);
-        root.getChildren().add(component);
-
-        // Establish a view with multiple facets and children
-        UIComponent facet1 = new TestComponent("f1");
-        UIComponent facet2 = new TestComponent("f2");
-        UIComponent facet3 = new TestComponent("f3");
-        component.getFacets().put("f1", facet1);
-        component.getFacets().put("f2", facet2);
-        component.getFacets().put("f3", facet3);
-        checkFacetCount(component, 3);
-        UIComponent child1 = new TestComponent("c1");
-        UIComponent child2 = new TestComponent("c2");
-        UIComponent child3 = new TestComponent("c3");
-        component.getChildren().add(child1);
-        component.getChildren().add(child2);
-        component.getChildren().add(child3);
-        checkChildCount(component, 3);
-        UIComponent child2a = new TestComponent("c2a");
-        UIComponent child2b = new TestComponent("c2b");
-        child2.getChildren().add(child2a);
-        child2.getChildren().add(child2b);
-        checkChildCount(child2, 2);
-
-        // Enqueue a single FacesEvent for each component
-        component.queueEvent(new TestEvent(component));
-        component.queueEvent(new TestEvent(facet1));
-        component.queueEvent(new TestEvent(facet2));
-        component.queueEvent(new TestEvent(facet3));
-        component.queueEvent(new TestEvent(child1));
-        component.queueEvent(new TestEvent(child2));
-        component.queueEvent(new TestEvent(child3));
-        component.queueEvent(new TestEvent(child2a));
-        component.queueEvent(new TestEvent(child2b));
-
-        // Test processDecodes()
-        TestComponent.trace(null);
-        component.processDecodes(facesContext);
-        assertEquals("processDecodes",
-                lifecycleTrace("pD", "d"),
-                TestComponent.trace());
-
-        // Test processValidators()
-        TestComponent.trace(null);
-        component.processValidators(facesContext);
-        assertEquals("processValidators",
-                lifecycleTrace("pV", null),
-                TestComponent.trace());
-
-        // Test processUpdates()
-        TestComponent.trace(null);
-        component.processUpdates(facesContext);
-        assertEquals("processUpdates",
-                lifecycleTrace("pU", null),
-                TestComponent.trace());
-
-    }
-
-
-    // Check that the properties on the specified components are equal
-    protected void checkProperties(UIComponent comp1, UIComponent comp2) {
-        assertEquals(comp1.getClientId(facesContext),
-                comp2.getClientId(facesContext));
-        assertEquals(comp1.getId(), comp2.getId());
-        assertEquals(comp1.isRendered(), comp2.isRendered());
-        assertEquals(comp1.getRendererType(), comp2.getRendererType());
-        assertEquals(comp1.getRendersChildren(), comp2.getRendersChildren());
-    }
-
-
-    // Check that the configured ValueBindings got restored
-    protected void checkValueBindings(UIComponent comp1, UIComponent comp2) {
-
-        ValueBinding vb1, vb2;
-
-        vb1 = comp1.getValueBinding("baz");
-        vb2 = comp2.getValueBinding("baz");
-        assertEquals(((MockValueBinding) vb1).ref(),
-                ((MockValueBinding) vb2).ref());
-
-        vb1 = comp1.getValueBinding("bop");
-        vb2 = comp2.getValueBinding("bop");
-        assertEquals(((MockValueBinding) vb1).ref(),
-                ((MockValueBinding) vb2).ref());
-
-    }
-
-
-    protected void checkComponentListeners(UIComponent control, UIComponent toValidate) {
-
-        List<SystemEventListener> lc = control.getListenersForEventClass(PostAddToViewEvent.class);
-        List<SystemEventListener> tvl = toValidate.getListenersForEventClass(PostAddToViewEvent.class);
-        List<SystemEventListener> lc2 = control.getListenersForEventClass(PostConstructViewMapEvent.class);
-        List<SystemEventListener> tvl2 = toValidate.getListenersForEventClass(PostConstructViewMapEvent.class);
-        assertTrue(lc.size() == tvl.size());
-        assertTrue(lc2.size() == tvl2.size());
-
-    }
-
-
-    // Create a pristine component of the type to be used in state holder tests
-    protected UIComponent createComponent() {
-        return (new TestComponent());
-    }
-
-
-    // Populate a pristine component to be used in state holder tests
-    protected void populateComponent(UIComponent component) {
-
-        component.getAttributes().put("foo", "foo value");
-        component.getAttributes().put("bar", "bar value");
-        component.setId("componentId");
-        component.getClientId(facesContext); // Forces evaluation
-        component.setRendered(false);
-        component.setRendererType(null); // Since we have no renderers
-
-        component.setValueBinding("baz",
-                application.createValueBinding("baz.value"));
-        component.setValueBinding("bop",
-                application.createValueBinding("bop.value"));
-        component.subscribeToEvent(PostAddToViewEvent.class,
-                new ComponentListener());
-        component.subscribeToEvent(PostAddToViewEvent.class,
-                new ComponentListener());
-        component.subscribeToEvent(PostConstructViewMapEvent.class,
-                new ComponentListener());
-
-    }
-
-
-    /**
-     * Construct and return a lifecycle method call trace for the specified
-     * method names.
-     *
-     * @param lmethod Name of the lifecycle method under test
-     * @param cmethod Name of the component method that corresponds
-     */
-    protected String lifecycleTrace(String lmethod, String cmethod) {
-        StringBuffer sb = new StringBuffer();
-        lifecycleTrace(lmethod, cmethod, component, sb);
-        return (sb.toString());
-    }
-
-    protected void lifecycleTrace(String lmethod, String cmethod,
-                                  UIComponent component, StringBuffer sb) {
-
-
-        // Append the call for this lifecycle method
-        String id = component.getId();
-        sb.append("/" + lmethod + "-" + id);
-        if (!component.isRendered()) {
-            return;
-        }
-
-        // Append the calls for each facet
-        Iterator names = component.getFacets().keySet().iterator();
-        while (names.hasNext()) {
-            String name = (String) names.next();
-            sb.append("/" + lmethod + "-" + name);
-            if ((cmethod != null) &&
-                    ((UIComponent) component.getFacets().get(name)).isRendered()) {
-                sb.append("/" + cmethod + "-" + name);
-            }
-        }
-
-        // Append the calls for each child
-        Iterator kids = component.getChildren().iterator();
-        while (kids.hasNext()) {
-            UIComponent kid = (UIComponent) kids.next();
-            lifecycleTrace(lmethod, cmethod, kid, sb);
-        }
-
-        // Append the call for this component's component method
-        if ((cmethod != null) && component.isRendered()) {
-            sb.append("/" + cmethod + "-" + id);
-        }
-
-    }
-
-    public void testGetFacetsAndChildren() {
-
-        UIComponent testComponent = new TestComponent();
-        UIComponent child1 = new TestComponent("child1");
-        UIComponent child2 = new TestComponent("child2");
-        UIComponent child3 = new TestComponent("child3");
-        UIComponent facet1 = new TestComponent("facet1");
-        UIComponent facet2 = new TestComponent("facet2");
-        UIComponent facet3 = new TestComponent("facet3");
-
-        testComponent.getChildren().add(child1);
-        testComponent.getChildren().add(child2);
-        testComponent.getChildren().add(child3);
-        testComponent.getFacets().put("facet1", facet1);
-        testComponent.getFacets().put("facet2", facet2);
-        testComponent.getFacets().put("facet3", facet3);
-
-        Iterator iter = testComponent.getFacetsAndChildren();
-        Object cur = null;
-        boolean exceptionThrown = false;
-        assertTrue(iter.hasNext());
-
-        try {
-            iter.remove();
-        }
-        catch (UnsupportedOperationException e) {
-            exceptionThrown = true;
-        }
-        assertTrue(exceptionThrown);
-
-        // facets are returned in an undefined order.
-        cur = iter.next();
-        assertTrue(cur == facet1 || cur == facet2 || cur == facet3);
-        cur = iter.next();
-        assertTrue(cur == facet1 || cur == facet2 || cur == facet3);
-        cur = iter.next();
-        assertTrue(cur == facet1 || cur == facet2 || cur == facet3);
-
-        // followed by components, in the order added
-        cur = iter.next();
-        assertTrue(cur == child1);
-        cur = iter.next();
-        assertTrue(cur == child2);
-        cur = iter.next();
-        assertTrue(cur == child3);
-
-        assertTrue(!iter.hasNext());
-
-    }
-
-    private Object foundComponent = null;
-
-    /**
-     * <p>Build a tree with the following layout.</p>
-     * <code><pre>
-     * root: id: root
-     * <p/>
-     *   form1: id: form1
-     * <p/>
-     *     panel1: id: panel
-     * <p/>
-     *       input1: id: input1
-     * <p/>
-     *       input2: id: input2
-     * <p/>
-     *   form2: id: form2
-     * <p/>
-     *     panel2: id: panel
-     * <p/>
-     *       input3: id: input1
-     * <p/>
-     *       input4: id: input2
-     * </pre></code>
-     *
-     * @return a Map<String, UIComponent>.  The key is the string before the
-     *         first : in the above layout.  The value is the component instance.
-     *         Note that the keys in the map are <b>not</b> the ids.
-     */
-
-    private Map<String, UIComponent> setupInvokeOnComponentTree() {
-        UIViewRoot root = new UIViewRoot();
-        UIForm form1 = new UIForm();
-        UIPanel panel1 = new UIPanel();
-        UIInput input1 = new UIInput();
-        UIInput input2 = new UIInput();
-        UIForm form2 = new UIForm();
-        UIPanel panel2 = new UIPanel();
-        UIInput input3 = new UIInput();
-        UIInput input4 = new UIInput();
-
-        root.setId("root");
-        form1.setId("form1");
-        panel1.setId("panel");
-        input1.setId("input1");
-        input2.setId("input2");
-
-        form2.setId("form2");
-        panel2.setId("panel");
-        input3.setId("input1");
-        input4.setId("input2");
-
-        root.getChildren().add(form1);
-        form1.getChildren().add(panel1);
-        panel1.getChildren().add(input1);
-        panel1.getChildren().add(input2);
-
-        root.getChildren().add(form2);
-        form2.getChildren().add(panel2);
-        panel2.getChildren().add(input3);
-        panel2.getChildren().add(input4);
-        Map<String, UIComponent> result = new HashMap<String, UIComponent>();
-        result.put("root", root);
-        result.put("form1", form1);
-        result.put("panel1", panel1);
-        result.put("input1", input1);
-        result.put("input2", input2);
-        result.put("form2", form2);
-        result.put("panel2", panel2);
-        result.put("input3", input3);
-        result.put("input4", input4);
-
-        return result;
-    }
-
-
-    public void testInvokeOnComponentPositive() throws Exception {
-
-        Map<String, UIComponent> tree = setupInvokeOnComponentTree();
-
-        UIViewRoot root = (UIViewRoot) tree.get("root");
-        UIInput input1 = (UIInput) tree.get("input1");
-
-        foundComponent = null;
-        boolean result = false;
-
-        result = root.invokeOnComponent(facesContext,
-                input1.getClientId(facesContext),
-                new ContextCallback() {
-                    public void invokeContextCallback(FacesContext context, UIComponent component) {
-                        foundComponent = component;
-                    }
-                });
-        assertEquals(input1, foundComponent);
-        assertTrue(result);
-
-    }
-
-    public void testInvokeOnComponentNegative() throws Exception {
-        Map<String, UIComponent> tree = setupInvokeOnComponentTree();
-
-        UIViewRoot root = (UIViewRoot) tree.get("root");
-        UIInput input4 = (UIInput) tree.get("input4");
-
-        foundComponent = null;
-        boolean result = false;
-        boolean exceptionThrown = false;
-
-        // Negative case 0, null pointers
-        exceptionThrown = false;
-        FacesContext nullContext = null;
-        ContextCallback nullCallback = null;
-        try {
-            root.invokeOnComponent(nullContext, "form:input7",
-                    nullCallback);
-        }
-        catch (NullPointerException npe) {
-            exceptionThrown = true;
-        }
-        assertTrue(exceptionThrown);
-
-        exceptionThrown = false;
-        try {
-            root.invokeOnComponent(facesContext, null,
-                    nullCallback);
-        }
-        catch (NullPointerException npe) {
-            exceptionThrown = true;
-        }
-        assertTrue(exceptionThrown);
-
-        exceptionThrown = false;
-        try {
-            root.invokeOnComponent(nullContext, null,
-                    nullCallback);
-        }
-        catch (NullPointerException npe) {
-            exceptionThrown = true;
-        }
-        assertTrue(exceptionThrown);
-
-        // Negative case 1, not found component.
-        result = root.invokeOnComponent(facesContext,
-                "form:input7",
-                new ContextCallback() {
-                    public void invokeContextCallback(FacesContext context, UIComponent component) {
-                        foundComponent = component;
-                    }
-                });
-        assertNull(foundComponent);
-        assertTrue(!result);
-
-        // Negative case 2A, callback throws exception with found component
-        foundComponent = null;
-        result = false;
-        exceptionThrown = false;
-        try {
-            result = root.invokeOnComponent(facesContext,
-                    "form2:input2",
-                    new ContextCallback() {
-                        public void invokeContextCallback(FacesContext context, UIComponent component) {
-                            foundComponent = component;
-                            // When else am I going to get the chance to throw this exception?
-                            throw new IllegalStateException();
-                        }
-                    });
-        } catch (FacesException e) {
-            assertTrue(e.getCause() instanceof IllegalStateException);
-            exceptionThrown = true;
-        }
-        assertTrue(exceptionThrown);
-        assertEquals(foundComponent, input4);
-        assertTrue(!result);
-
-        // Negative case 2B, callback throws exception with not found component
-        foundComponent = null;
-        result = false;
-        exceptionThrown = false;
-        try {
-            result = root.invokeOnComponent(facesContext,
-                    "form2:input6",
-                    new ContextCallback() {
-                        public void invokeContextCallback(FacesContext context, UIComponent component) {
-                            foundComponent = component;
-                            // When else am I going to get the chance to throw this exception?
-                            throw new IllegalStateException();
-                        }
-                    });
-        } catch (FacesException e) {
-            assertTrue(e.getCause() instanceof IllegalStateException);
-            exceptionThrown = true;
-        }
-        assertTrue(!exceptionThrown);
-        assertNull(foundComponent);
-        assertTrue(!result);
-
-
-    }
-
-    public void testInvokeOnComponentWithPrependId() throws Exception {
-        Map<String, UIComponent> tree = setupInvokeOnComponentTree();
-
-        UIViewRoot root = (UIViewRoot) tree.get("root");
-        UIForm truePrependIdForm = (UIForm) tree.get("form1");
-        UIForm falsePrependIdForm = (UIForm) tree.get("form2");
-        UIInput truePrependIdInput = (UIInput) tree.get("input2");
-        UIInput falsePrependIdInput = (UIInput) tree.get("input3");
-
-        truePrependIdForm.setPrependId(true);
-        falsePrependIdForm.setPrependId(false);
-
-        foundComponent = null;
-        boolean result = false;
-        boolean exceptionThrown = false;
-
-        // Case 1, positive find with prependId == true
-        result = root.invokeOnComponent(facesContext,
-                "form1:input2",
-                new ContextCallback() {
-                    public void invokeContextCallback(FacesContext context, UIComponent component) {
-                        foundComponent = component;
-                    }
-                });
-        assertEquals(truePrependIdInput, foundComponent);
-        assertTrue(result);
-
-        // Case 2, negative find with prependId == true
-        foundComponent = null;
-        result = false;
-
-        result = root.invokeOnComponent(facesContext,
-                "form9:input5",
-                new ContextCallback() {
-                    public void invokeContextCallback(FacesContext context, UIComponent component) {
-                        foundComponent = component;
-                    }
-                });
-        assertNull(foundComponent);
-        assertTrue(!result);
-
-        // Case 3, exception positive find with prependId == true
-        foundComponent = null;
-        result = false;
-        exceptionThrown = false;
-        try {
-
-
-            result = root.invokeOnComponent(facesContext,
-                    "form1:input2",
-                    new ContextCallback() {
-                        public void invokeContextCallback(FacesContext context, UIComponent component) {
-                            foundComponent = component;
-                            throw new IllegalStateException();
-                        }
-                    });
-        }
-        catch (FacesException e) {
-            assertTrue(e.getCause() instanceof IllegalStateException);
-            exceptionThrown = true;
-        }
-        assertEquals(truePrependIdInput, foundComponent);
-        assertTrue(!result);
-        assertTrue(exceptionThrown);
-
-        // Case 4, exception negative find with prependId == true
-        foundComponent = null;
-        result = false;
-        exceptionThrown = false;
-        try {
-
-
-            result = root.invokeOnComponent(facesContext,
-                    "formFozzy:inputKermit",
-                    new ContextCallback() {
-                        public void invokeContextCallback(FacesContext context, UIComponent component) {
-                            foundComponent = component;
-                            throw new IllegalStateException();
-                        }
-                    });
-        }
-        catch (FacesException e) {
-            assertTrue(e.getCause() instanceof IllegalStateException);
-            exceptionThrown = true;
-        }
-        assertNull(foundComponent);
-        assertTrue(!result);
-        assertTrue(!exceptionThrown);
-
-        // Case 5, positive find with prependId == false
-        result = root.invokeOnComponent(facesContext,
-                "input1",
-                new ContextCallback() {
-                    public void invokeContextCallback(FacesContext context, UIComponent component) {
-                        foundComponent = component;
-                    }
-                });
-        assertEquals(falsePrependIdInput, foundComponent);
-        assertTrue(result);
-
-        // Case 6, negative find with prependId == false
-        foundComponent = null;
-        result = false;
-
-        result = root.invokeOnComponent(facesContext,
-                "input99",
-                new ContextCallback() {
-                    public void invokeContextCallback(FacesContext context, UIComponent component) {
-                        foundComponent = component;
-                    }
-                });
-        assertNull(foundComponent);
-        assertTrue(!result);
-
-        // Case 3, exception positive find with prependId == false
-        foundComponent = null;
-        result = false;
-        exceptionThrown = false;
-        try {
-
-
-            result = root.invokeOnComponent(facesContext,
-                    "input1",
-                    new ContextCallback() {
-                        public void invokeContextCallback(FacesContext context, UIComponent component) {
-                            foundComponent = component;
-                            throw new IllegalStateException();
-                        }
-                    });
-        }
-        catch (FacesException e) {
-            assertTrue(e.getCause() instanceof IllegalStateException);
-            exceptionThrown = true;
-        }
-        assertEquals(falsePrependIdInput, foundComponent);
-        assertTrue(!result);
-        assertTrue(exceptionThrown);
-
-        // Case 4, exception negative find with prependId == false
-        foundComponent = null;
-        result = false;
-        exceptionThrown = false;
-        try {
-
-
-            result = root.invokeOnComponent(facesContext,
-                    "inputKermit",
-                    new ContextCallback() {
-                        public void invokeContextCallback(FacesContext context, UIComponent component) {
-                            foundComponent = component;
-                            throw new IllegalStateException();
-                        }
-                    });
-        }
-        catch (FacesException e) {
-            assertTrue(e.getCause() instanceof IllegalStateException);
-            exceptionThrown = true;
-        }
-        assertNull(foundComponent);
-        assertTrue(!result);
-        assertTrue(!exceptionThrown);
-
-
-    }
-
-
-    public void testChildrenListAfterAddPublish() {
-
-        Listener listener = new Listener();
-        application.subscribeToEvent(PostAddToViewEvent.class, listener);
-
-        UIComponent c1 = createComponent();
-        c1.setInView(true);
-        UIComponent c2 = createComponent();
-        c2.setInView(true);
-        UIComponent c3 = createComponent();
-        c3.setInView(true);
-
-        c1.getChildren().add(c2);
-        SystemEvent e = listener.getEvent();
-        assertNotNull(e);
-        assertTrue(e.getSource() == c2);
-        assertTrue(((UIComponent) e.getSource()).getParent() == c1);
-        listener.reset();
-        c2.getChildren().add(c3);
-        e = listener.getEvent();
-        assertNotNull(e);
-        assertTrue(e.getSource() == c3);
-        assertTrue(((UIComponent) e.getSource()).getParent() == c2);
-
-        //ensure events are re-published if the event is added
-        listener.reset();
-        c2.getChildren().remove(c3);
-        c1.getChildren().add(c3);
-        e = listener.getEvent();
-        assertNotNull(e);
-        assertTrue(e.getSource() == c3);
-        assertTrue(((UIComponent) e.getSource()).getParent() == c1);
-
-        application.unsubscribeFromEvent(PostAddToViewEvent.class, listener);
-
-    }
-
-    public void testFacetMapAfterAddViewPublish() {
-
-        QueueingListener listener = new QueueingListener();
-        application.subscribeToEvent(PostAddToViewEvent.class, listener);
-
-        UIComponent c1 = createComponent();
-        UIComponent c2 = createComponent();
-        UIComponent c3 = createComponent();
-
-        List<SystemEvent> e = listener.getEvents();
-        Map<String, UIComponent> facets = c1.getFacets();
-        facets.put("c2", c2);
-        assertTrue("Expected Event queue size of 0, found: " + e.size(), e.size() == 0);
-
-        UIViewRoot root = new UIViewRoot();
-        root.getChildren().add(c1);
-        assertTrue("Expected Event queue size of 2, found: " + e.size(), e.size() == 2);
-        assertTrue(e.get(0).getSource() == c1);
-        assertTrue(e.get(1).getSource() == c2);
-
-        // remove c1 from the root and add c3 as a facet to c1 - no events should be
-        // published
-        e.clear();
-        root.getChildren().remove(c1);
-        facets = c1.getFacets();
-        facets.put("c3", c3);
-        assertTrue("Expected Event queue size of 0, found: " + e.size(), e.size() == 0);
-
-        // reorganize the facet structure to ensure nested facets work
-        facets.remove("c3");
-        c2.getFacets().put("c3", c3);
-        root.getChildren().add(c1);
-        assertTrue("Expected Event queue size of 3, found: " + e.size(), e.size() == 3);
-        assertTrue(e.get(0).getSource() == c1);
-        assertTrue(e.get(1).getSource() == c2);
-        assertTrue(e.get(2).getSource() == c3);
-
-        e.clear();
-        // ensure clear() method disconnects the facets from the view
-        facets.clear();
-        c2.getFacets().remove("c3");
-        c2.getFacets().put("c3", c3);
-        assertTrue("Expected Event queue size of 0, found: " + e.size(), e.size() == 0);
-
-        application.unsubscribeFromEvent(PostAddToViewEvent.class, listener);
-
-    }
-
-    public void testChildrenListAfterAddViewPublish() {
-
-        QueueingListener listener = new QueueingListener();
-        application.subscribeToEvent(PostAddToViewEvent.class, listener);
-
-        UIComponent c1 = createComponent();
-        UIComponent c2 = createComponent();
-        UIComponent c3 = createComponent();
-        UIComponent c4 = createComponent();
-        c1.getChildren().add(c2);
-        List<SystemEvent> e = listener.getEvents();
-        assertTrue(e.isEmpty());
-        c2.getChildren().add(c3);
-        assertTrue(e.isEmpty());
-        UIViewRoot root = new UIViewRoot();
-        root.getChildren().add(c1);
-
-        // sub-tree has been added to the view.  Ensure that subsequent additions
-        // to that sub-tree cause the PostAddToViewEvent to fire.
-        c2.getChildren().add(c4);
-        assertTrue("Expected Event queue size of 4, found: " + e.size(), e.size() == 4);
-
-        UIComponent[] comps = {
-                c1, c2, c3, c4
-        };
-        for (int i = 0; i < comps.length; i++) {
-            assertTrue("Index " + i + " invalid", e.get(i).getSource() == comps[i]);
-        }
-
-        // remove c1 and it's children from the subview, then remove and
-        // re-add one of the children in the sub-tree.  No event should
-        // be fired
-        e.clear();
-        root.getChildren().remove(c1);
-        c2.getChildren().remove(c4);
-        c2.getChildren().add(c4);
-        assertTrue("AfterAddToView events queued after a sub-tree was removed from the view, and a child added to the sub-view",
-                e.isEmpty());
-
-        c2.getChildren().remove(c4);
-        c1.getChildren().add(c4);
-        assertTrue("AfterAddToView events queued after a sub-tree was removed from the view, and a child added to the sub-view",
-                e.isEmpty());
-
-        // re-wire c1 as a child of root and ensure all children get re-notified
-        root.getChildren().add(c1);
-        assertTrue("Expected Event queue size of 4, found: " + e.size(), e.size() == 4);
-
-        for (int i = 0; i < comps.length; i++) {
-            assertTrue("Index " + i + " invalid", e.get(i).getSource() == comps[i]);
-        }
-
-        // validate clearing c1's children (effectively removing them from the view
-        // will result in no events being fired of components are added to any of
-        // the disconnected children.
-        // At this point in the test, c2 and c4 are children of c1, and c3
-        // is a child of c2.
-        c1.getChildren().clear();
-        UIComponent temp = createComponent();
-        e.clear();
-        c2.getChildren().add(temp);
-        assertTrue("AfterAddToView events queued after a sub-tree was removed from the view, and a child added to the sub-view",
-                e.isEmpty());
-        c2.getChildren().remove(temp);
-        c3.getChildren().add(temp);
-        assertTrue("AfterAddToView events queued after a sub-tree was removed from the view, and a child added to the sub-view",
-                e.isEmpty());
-        c3.getChildren().remove(temp);
-        c4.getChildren().add(temp);
-        assertTrue("AfterAddToView events queued after a sub-tree was removed from the view, and a child added to the sub-view",
-                e.isEmpty());
-        c4.getChildren().remove(temp);
-
-        // now add c2 and c4 as children of c1.  This should cause three
-        // events to fire
-        c1.getChildren().add(c2);
-        c1.getChildren().add(c4);
-        assertTrue("Expected Event queue size of 3, found: " + e.size(), e.size() == 3);
-
-        UIComponent[] comps2 = {
-                c2, c3, c4
-        };
-        for (int i = 0; i < comps2.length; i++) {
-            assertTrue("Index " + i + " invalid", e.get(i).getSource() == comps2[i]);
-        }
-
-        // validate add(int, UIComponent) fires events
-        e.clear();
-        c1.getChildren().remove(c4);
-        c1.getChildren().add(0, c4);
-
-        assertTrue(c1.getChildren().get(0) == c4);
-        assertTrue(c1.getChildren().get(1) == c2);
-        assertTrue("Expected Event queue size of 1, found: " + e.size(), e.size() == 1);
-        assertTrue(e.get(0).getSource() == c4);
-
-        // validate addAll(Collection<UIComponent>) fires events
-        e.clear();
-        c1.getChildren().clear();
-        List<UIComponent> children = new ArrayList<UIComponent>(2);
-        Collections.addAll(children, c2, c4);
-        c1.getChildren().addAll(children);
-        assertTrue(c1.getChildren().get(0) == c2);
-        assertTrue(c1.getChildren().get(1) == c4);
-        assertTrue("Expected Event queue size of 3, found: " + e.size(), e.size() == 3);
-        assertTrue(e.get(0).getSource() == c2);
-        assertTrue(e.get(2).getSource() == c4);
-
-        // validate addAll(int, Collection<UIComponent>) fires events
-        e.clear();
-        children = new ArrayList<UIComponent>(2);
-        UIComponent t1 = createComponent();
-        UIComponent t2 = createComponent();
-        Collections.addAll(children, t1, t2);
-        c1.getChildren().addAll(0, children);
-        assertTrue(c1.getChildren().get(0) == t1);
-        assertTrue(c1.getChildren().get(1) == t2);
-        assertTrue(c1.getChildren().get(2) == c2);
-        assertTrue(c1.getChildren().get(3) == c4);
-        assertTrue("Expected Event queue size of 2, found: " + e.size(), e.size() == 2);
-        assertTrue(e.get(0).getSource() == t1);
-        assertTrue(e.get(1).getSource() == t2);
-
-        // validate retainAll(Collection<UIComponent> properly disconnects
-        // the components from the view such that events aren't fired
-        // if children are added to them
-        e.clear();
-        List<UIComponent> retained = new ArrayList<UIComponent>(2);
-        Collections.addAll(retained, c2, c4);
-        c1.getChildren().retainAll(retained);
-        assertTrue(c1.getChildren().size() == 2);
-        assertTrue(c1.getChildren().get(0) == c2);
-        assertTrue(c1.getChildren().get(1) == c4);
-        t1.getChildren().add(t2);
-        assertTrue("Expected Event queue size of 0, found: " + e.size(), e.size() == 0);
-
-        // test set(int, UIComponent) properly fires an event if the parent
-        // the component is being added to is wired to the view
-        e.clear();
-        c1.getChildren().set(0, t1);
-        assertTrue(c1.getChildren().size() == 2);
-        assertTrue(c1.getChildren().get(0) == t1);
-        assertTrue(c1.getChildren().get(1) == c4);
-        assertTrue("Expected Event queue size of 2, found: " + e.size(), e.size() == 2);
-        assertTrue(e.get(0).getSource() == t1);
-        assertTrue(e.get(1).getSource() == t2);
-
-        // c2 was removed by the set operation, so ensure it's marked as
-        // having been removed from the view by ensuring events aren't fired.
-        e.clear();
-        UIComponent t3 = createComponent();
-        c2.getChildren().add(t3);
-        assertTrue("Expected Event queue size of 0, found: " + e.size(), e.size() == 0);
-
-        application.unsubscribeFromEvent(PostAddToViewEvent.class, listener);
-
-        // validate Iterator.remove() over c1's children correctly disconnects
-        // the children from the view
-        for (Iterator<UIComponent> i = c1.getChildren().iterator(); i.hasNext();) {
-            i.next();
-            i.remove();
-        }
-
-        // at this point, t1 and c4 should be disconnected meaning adding children
-        // to t1, t2, or c4 should result in no events being fired
-        e.clear();
-        t1.getChildren().add(temp);
-        assertTrue("AfterAddToView events queued after a sub-tree was removed from the view, and a child added to the sub-view",
-                e.isEmpty());
-        t1.getChildren().remove(temp);
-        t2.getChildren().add(temp);
-        assertTrue("AfterAddToView events queued after a sub-tree was removed from the view, and a child added to the sub-view",
-                e.isEmpty());
-        t2.getChildren().remove(temp);
-        c4.getChildren().add(temp);
-        assertTrue("AfterAddToView events queued after a sub-tree was removed from the view, and a child added to the sub-view",
-                e.isEmpty());
-        c4.getChildren().remove(temp);
-
-    }
-
-
-    public void testEncodeBeginPublish() throws Exception {
-
-        Listener listener = new Listener();
-        application.subscribeToEvent(PreRenderComponentEvent.class, listener);
-
-        UIComponent c1 = createComponent();
-        c1.encodeBegin(facesContext);
-        SystemEvent e = listener.getEvent();
-        assertNotNull(e);
-        assertTrue(e.getSource() == c1);
-        listener.reset();
-        c1.encodeChildren(facesContext);
-        assertNull(listener.getEvent());
-        c1.encodeEnd(facesContext);
-        assertNull(listener.getEvent());
-
-        application.unsubscribeFromEvent(PreRenderComponentEvent.class, listener);
-
-    }
-
-
-    // --------------------------------------------------------- Private Classes
-
-
-    public static final class Listener implements SystemEventListener {
-
-        private SystemEvent event;
-
-        public void processEvent(SystemEvent event)
-                throws AbortProcessingException {
-            this.event = event;
-        }
-
-        public boolean isListenerForSource(Object source) {
-            return (source instanceof UIComponent);
-        }
-
-        public SystemEvent getEvent() {
-            return event;
-        }
-
-        public void reset() {
-            event = null;
-        }
-    }
-
-
-    public static final class QueueingListener implements SystemEventListener {
-
-        private List<SystemEvent> events = new ArrayList<SystemEvent>();
-
-        public void processEvent(SystemEvent event)
-                throws AbortProcessingException {
-            events.add(event);
-        }
-
-        public boolean isListenerForSource(Object source) {
-            return (source instanceof UIComponent);
-        }
-
-        public List<SystemEvent> getEvents() {
-            return events;
-        }
-
-        public void reset() {
-            events.clear();
-        }
-    }
-
-
-    public static final class ComponentListener implements ComponentSystemEventListener {
-
-        public void processEvent(ComponentSystemEvent event)
-                throws AbortProcessingException {
-
-        }
-    }
-
-
-    public static final class UIComponentListener extends UIComponentBase implements ComponentSystemEventListener {
-
-        public String getFamily() {
-            return "family";
-        }
-
-        public void processEvent(ComponentSystemEvent event)
-                throws AbortProcessingException {
-        }
-
-    }
-
-
-    public static final class UIComponentOverrideEncodeBegin extends UIComponentBase {
-
-        public String getFamily() {
-            return "UIComponentOverrideEncodeBegin";
-        }
-
-        @Override
-        public void encodeBegin(FacesContext context) throws IOException {
-            // no-op
-        }
-
-    }
-
-
-    public static final class UIComponentOverrideEncodeEnd extends UIComponentBase {
-
-        public String getFamily() {
-            return "UIComponentOverrideEncodeEnd";
-        }
-
-        @Override
-        public void encodeEnd(FacesContext context) throws IOException {
-            // no-op
-        }
-    }
-
-
-    public static final class CustomAbortProcessingException extends AbortProcessingException {
-        public CustomAbortProcessingException() {
-            super();
-        }
-
-        public CustomAbortProcessingException(String message) {
-            super(message);
-        }
-
-        public CustomAbortProcessingException(Throwable cause) {
-            super(cause);
-        }
-
-        public CustomAbortProcessingException(String message, Throwable cause) {
-            super(message, cause);
-        }
-    }
-
-
-}
diff --git a/jsf-api/src/test/java/javax/faces/component/UIComponentTestCase.java b/jsf-api/src/test/java/javax/faces/component/UIComponentTestCase.java
deleted file mode 100644
index 2ca712d..0000000
--- a/jsf-api/src/test/java/javax/faces/component/UIComponentTestCase.java
+++ /dev/null
@@ -1,2140 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package javax.faces.component;
-
-
-import com.sun.faces.mock.*;
-import junit.framework.Test;
-import junit.framework.TestCase;
-import junit.framework.TestSuite;
-
-import javax.faces.FactoryFinder;
-import javax.faces.application.ApplicationFactory;
-import javax.faces.context.FacesContext;
-import javax.faces.event.AbortProcessingException;
-import javax.faces.event.ComponentSystemEvent;
-import javax.faces.event.ComponentSystemEventListener;
-import javax.faces.event.PostValidateEvent;
-import javax.faces.event.PreValidateEvent;
-import javax.faces.render.RenderKit;
-import javax.faces.render.RenderKitFactory;
-import javax.faces.validator.Validator;
-import javax.faces.validator.ValidatorException;
-import java.io.Serializable;
-import java.util.*;
-
-
-/**
- * <p>Base unit tests for all {@link UIComponent} implementation classes.</p>
- */
-
-public class UIComponentTestCase extends TestCase {
-
-
-    // ------------------------------------------------------ Instance Variables
-
-
-    // The component to be tested
-    protected UIComponent component = null;
-
-    // The set of attribute names expected on a pristine component instance
-    protected String expectedAttributes[] = null;
-
-    // The expected component family on a pristine component instance
-    protected String expectedFamily = null;
-
-    // The expected component identifier on a pristine component instance
-    protected String expectedId = null;
-
-    // The expected rendered on a pristine component instance
-    protected boolean expectedRendered = true;
-
-    // The expected rendererType on a pristine component instance
-    protected String expectedRendererType = null;
-
-    // The expected rendersChildren on a pristine component instance
-    protected boolean expectedRendersChildren = false;
-
-    private Map.Entry<String, UIComponent> bogusEntry =
-            new Map.Entry<String, UIComponent>() {
-                public boolean equals(Object r) {
-                    return false;
-                }
-
-                public String getKey() {
-                    return "key";
-                }
-
-                public int hashCode() {
-                    return 0;
-                }
-
-                public UIComponent getValue() {
-                    return null;
-                }
-
-                public UIComponent setValue(UIComponent value) {
-                    return null;
-                }
-
-            };
-
-    // Mock object instances for our tests
-    protected MockApplication application = null;
-    protected MockServletConfig config = null;
-    protected MockExternalContext externalContext = null;
-    protected MockFacesContext facesContext = null;
-    protected MockLifecycle lifecycle = null;
-    protected MockHttpServletRequest request = null;
-    protected MockHttpServletResponse response = null;
-    protected MockServletContext servletContext = null;
-    protected MockHttpSession session = null;
-
-
-    // ------------------------------------------------------------ Constructors
-
-
-    // Construct a new instance of this test case.
-
-    public UIComponentTestCase(String name) {
-        super(name);
-    }
-
-
-    // ---------------------------------------------------- Overall Test Methods
-
-
-    // Set up instance variables required by this test case.
-
-    public void setUp() {
-
-        expectedAttributes = new String[0];
-        expectedFamily = "Test";
-        expectedId = "test";
-        expectedRendered = true;
-        expectedRendererType = null;
-        expectedRendersChildren = false;
-
-        // Set up Servlet API Objects
-        servletContext = new MockServletContext();
-        servletContext.addInitParameter("appParamName", "appParamValue");
-        servletContext.setAttribute("appScopeName", "appScopeValue");
-        config = new MockServletConfig(servletContext);
-        session = new MockHttpSession();
-        session.setAttribute("sesScopeName", "sesScopeValue");
-        request = new MockHttpServletRequest(session);
-        request.setAttribute("reqScopeName", "reqScopeValue");
-        response = new MockHttpServletResponse();
-
-        // Set up Faces API Objects
-        FactoryFinder.setFactory(FactoryFinder.APPLICATION_FACTORY,
-                "com.sun.faces.mock.MockApplicationFactory");
-        FactoryFinder.setFactory(FactoryFinder.RENDER_KIT_FACTORY,
-                "com.sun.faces.mock.MockRenderKitFactory");
-
-        externalContext =
-                new MockExternalContext(servletContext, request, response);
-        Map map = new HashMap();
-        externalContext.setRequestParameterMap(map);
-        lifecycle = new MockLifecycle();
-        facesContext = new MockFacesContext(externalContext, lifecycle);
-        ApplicationFactory applicationFactory = (ApplicationFactory)
-                FactoryFinder.getFactory(FactoryFinder.APPLICATION_FACTORY);
-        application = (MockApplication) applicationFactory.getApplication();
-        facesContext.setApplication(application);
-        UIViewRoot root = facesContext.getApplication().getViewHandler().createView(facesContext, null);
-        root.setViewId("/viewId");
-        facesContext.setViewRoot(root);
-        RenderKitFactory renderKitFactory = (RenderKitFactory)
-                FactoryFinder.getFactory(FactoryFinder.RENDER_KIT_FACTORY);
-        RenderKit renderKit = new MockRenderKit();
-        try {
-            renderKitFactory.addRenderKit(RenderKitFactory.HTML_BASIC_RENDER_KIT,
-                    renderKit);
-        } catch (IllegalArgumentException e) {
-            ;
-        }
-
-        component = new TestComponent(expectedId);
-
-    }
-
-
-    // Return the tests included in this test case.
-    public static Test suite() {
-
-        return (new TestSuite(UIComponentTestCase.class));
-
-    }
-
-
-    // Tear down instance variables required by this test case.
-    public void tearDown() {
-
-        component = null;
-        expectedAttributes = null;
-        expectedFamily = null;
-        expectedId = null;
-        expectedRendered = true;
-        expectedRendererType = null;
-        expectedRendersChildren = false;
-
-    }
-
-
-    // ------------------------------------------------- Individual Test Methods
-
-    public void testValidationEvents() {
-        Listener prelistener = new Listener();
-        Listener postlistener = new Listener();
-        List<String> ldata = new ArrayList<String>();
-        ldata.add("one");
-        UIViewRoot root = new UIViewRoot();
-        root.setId("root");
-        root.subscribeToEvent(PreValidateEvent.class, prelistener);
-        root.subscribeToEvent(PostValidateEvent.class, postlistener);
-        UIOutput out = new UIOutput();
-        out.setId("out");
-        out.subscribeToEvent(PreValidateEvent.class, prelistener);
-        out.subscribeToEvent(PostValidateEvent.class, postlistener);
-        root.getChildren().add(out);
-        UIForm f = new UIForm();
-        f.setSubmitted(true);
-        f.setId("form");
-        f.subscribeToEvent(PreValidateEvent.class, prelistener);
-        f.subscribeToEvent(PostValidateEvent.class, postlistener);
-        root.getChildren().add(f);
-        UIData data = new UIData();
-        data.setId("data");
-        data.subscribeToEvent(PreValidateEvent.class, prelistener);
-        data.subscribeToEvent(PostValidateEvent.class, postlistener);
-        data.setValue(ldata);
-        UIColumn c = new UIColumn();
-        c.setId("column");
-        c.subscribeToEvent(PreValidateEvent.class, prelistener);
-        c.subscribeToEvent(PostValidateEvent.class, postlistener);
-        UIInput in = new UIInput();
-        in.setId("in");
-        in.subscribeToEvent(PreValidateEvent.class, prelistener);
-        in.subscribeToEvent(PostValidateEvent.class, postlistener);
-        in.addValidator(new ValidationSignal());
-        c.getChildren().add(in);
-        data.getChildren().add(c);
-        f.getChildren().add(data);
-        data.setRowIndex(0);
-        UIComponent col = data.getChildren().get(0);
-        ((UIInput) col.getChildren().get(0)).setSubmittedValue("hello");
-        data.setRowIndex(-1);
-        root.processValidators(facesContext);
-        assertEquals("root/out/form/data/in/", "root/out/form/data/in/", prelistener.getResults());
-        assertEquals("out/*/in/data/form/root/", "out/*/in/data/form/root/", postlistener.getResults());
-
-    }
-
-    // Test behavior of Map returned by getAttributes()
-
-    public void testAttributesMap() {
-
-        // Initialize some attributes
-        Map attributes = component.getAttributes();
-        attributes.put("foo", "bar");
-        attributes.put("baz", "bop");
-
-        // Test containsKey()
-        assertTrue(attributes.containsKey("foo"));
-        assertTrue(attributes.containsKey("baz"));
-        assertTrue(!attributes.containsKey("bar"));
-        assertTrue(!attributes.containsKey("bop"));
-        assertTrue(!attributes.containsKey("id")); // Property name
-        assertTrue(!attributes.containsKey("parent")); // Property name
-
-        // Test get()
-        assertEquals("bar", (String) attributes.get("foo"));
-        assertEquals("bop", (String) attributes.get("baz"));
-        assertNull((String) attributes.get("bar"));
-        assertNull((String) attributes.get("bop"));
-        component.setId("oldvalue");
-        assertEquals("oldvalue", (String) attributes.get("id")); // Property
-        component.setRendered(false);
-        assertTrue(!((Boolean) attributes.get("rendered")).booleanValue());
-        component.setRendered(true);
-        assertTrue(((Boolean) attributes.get("rendered")).booleanValue());
-
-        // Test put()
-        try {
-            attributes.put(null, "dummy");
-            fail("Should have thrown NullPointerException");
-        } catch (NullPointerException e) {
-            ; // Expected result
-        }
-        try {
-            attributes.put(new java.util.Date(), "dummy");
-            fail("Should have thrown ClassCastException");
-        } catch (ClassCastException e) {
-            ; // Expected result
-        }
-        try {
-            attributes.put("rendersChildren", null); // Primitive property
-            fail("Should have thrown IllegalArgumentException");
-        } catch (IllegalArgumentException e) {
-            ; // Expected result
-        }
-        try {
-            attributes.put("rendersChildren", Boolean.TRUE); // Write-only
-            fail("Should have thrown IllegalArgumentException");
-        } catch (IllegalArgumentException e) {
-            ; // Expected result
-        }
-        attributes.put("id", "newvalue");
-        assertEquals("newvalue", (String) attributes.get("id"));
-        assertEquals("newvalue", component.getId());
-        attributes.put("rendered", Boolean.TRUE);
-        assertTrue(component.isRendered());
-        attributes.put("rendered", Boolean.FALSE);
-        assertTrue(!component.isRendered());
-
-        // Test remove()
-        attributes.remove("baz");
-        assertTrue(!attributes.containsKey("baz"));
-        assertNull(attributes.get("baz"));
-        try {
-            attributes.remove("id");
-            fail("Should have thrown IllegalArgumentException()");
-        } catch (IllegalArgumentException e) {
-            ; // Expected result
-        }
-
-    }
-
-
-    // Negative tests on attribute methods
-    public void testAttributesNegative() {
-
-        // getAttributes().get() - null
-        try {
-            Object value = component.getAttributes().get(null);
-            fail("should have thrown NullPointerException");
-        } catch (NullPointerException e) {
-            ; // Expected result
-        }
-
-        // getAttributes().put() - null
-        try {
-            component.getAttributes().put(null, "bar");
-            fail("should have thrown NullPointerException");
-        } catch (NullPointerException e) {
-            ; // Expected result
-        }
-
-    }
-
-
-    // Positive tests on attribute methods
-    public void testAttributesPositive() {
-
-        checkAttributeCount(component, expectedAttributes.length);
-        checkAttributeMissing(component, "foo");
-        checkAttributeMissing(component, "baz");
-
-        component.getAttributes().put("foo", "bar");
-        checkAttributeCount(component, expectedAttributes.length + 1);
-        checkAttributePresent(component, "foo", "bar");
-        checkAttributeMissing(component, "baz");
-
-        component.getAttributes().put("baz", "bop");
-        checkAttributeCount(component, expectedAttributes.length + 2);
-        checkAttributePresent(component, "foo", "bar");
-        checkAttributePresent(component, "baz", "bop");
-
-        component.getAttributes().put("baz", "boo");
-        checkAttributeCount(component, expectedAttributes.length + 2);
-        checkAttributePresent(component, "foo", "bar");
-        checkAttributePresent(component, "baz", "boo");
-
-        component.getAttributes().remove("foo");
-        checkAttributeCount(component, expectedAttributes.length + 1);
-        checkAttributeMissing(component, "foo");
-        checkAttributePresent(component, "baz", "boo");
-
-    }
-
-
-    // Test attribute-property transparency
-    public void testAttributesTransparency() {
-
-        assertEquals(component.getChildren(),
-                (List) component.getAttributes().get("children"));
-
-        assertEquals(component.getFacets(),
-                (Map) component.getAttributes().get("facets"));
-
-        assertEquals(component.getId(),
-                (String) component.getAttributes().get("id"));
-
-        assertEquals(component.getParent(),
-                (UIComponent) component.getAttributes().get("parent"));
-
-        assertEquals(component.isRendered(),
-                ((Boolean) component.getAttributes().get("rendered")).
-                        booleanValue());
-        component.setRendered(false);
-        assertEquals(Boolean.FALSE,
-                (Boolean) component.getAttributes().get("rendered"));
-        component.setRendered(true);
-        assertEquals(Boolean.TRUE,
-                (Boolean) component.getAttributes().get("rendered"));
-        component.getAttributes().put("rendered", Boolean.FALSE);
-        assertTrue(!component.isRendered());
-        component.getAttributes().put("rendered", Boolean.TRUE);
-        assertTrue(component.isRendered());
-
-        component.setRendererType("foo");
-        assertEquals("foo",
-                (String) component.getAttributes().get("rendererType"));
-        component.setRendererType(null);
-        assertNull((String) component.getAttributes().get("rendererType"));
-        component.getAttributes().put("rendererType", "bar");
-        assertEquals("bar", component.getRendererType());
-        component.getAttributes().put("rendererType", null);
-        assertNull(component.getRendererType());
-
-        assertEquals(component.getRendersChildren(),
-                ((Boolean) component.getAttributes().
-                        get("rendersChildren")).booleanValue());
-
-    }
-
-
-    // Test getChildren().iterator()
-    public void testChildrenIterator() {
-
-        Iterator kids;
-
-        // Construct components we will need
-        UIComponent comp0 = new TestComponent(null);
-        UIComponent comp1 = new TestComponent("comp1");
-        UIComponent comp2 = new TestComponent("comp2");
-        UIComponent comp3 = new TestComponent("comp3");
-        UIComponent comp4 = new TestComponent("comp4");
-        UIComponent comp5 = new TestComponent("comp5");
-        List comps = new ArrayList();
-        comps.add(comp0);
-        comps.add(comp1);
-        comps.add(comp2);
-        comps.add(comp3);
-        comps.add(comp4);
-        comps.add(comp5);
-
-        // Test hasNext() and next()
-        component.getChildren().clear();
-        component.getChildren().addAll(comps);
-        kids = component.getChildren().iterator();
-        assertTrue(kids.hasNext());
-        assertEquals(comp0, (UIComponent) kids.next());
-        assertEquals(comp1, (UIComponent) kids.next());
-        assertEquals(comp2, (UIComponent) kids.next());
-        assertEquals(comp3, (UIComponent) kids.next());
-        assertEquals(comp4, (UIComponent) kids.next());
-        assertEquals(comp5, (UIComponent) kids.next());
-        assertTrue(!kids.hasNext());
-
-        // Test remove()
-        component.getChildren().clear();
-        component.getChildren().addAll(comps);
-        kids = component.getChildren().iterator();
-        while (kids.hasNext()) {
-            UIComponent kid = (UIComponent) kids.next();
-            if ((kid == comp2) || (kid == comp4)) {
-                kids.remove();
-            }
-        }
-        kids = component.getChildren().iterator();
-        assertTrue(kids.hasNext());
-        assertEquals(comp0, (UIComponent) kids.next());
-        assertEquals(comp1, (UIComponent) kids.next());
-        assertEquals(comp3, (UIComponent) kids.next());
-        assertEquals(comp5, (UIComponent) kids.next());
-        assertTrue(!kids.hasNext());
-
-    }
-
-
-    // Test getChildren().listIterator()
-    public void testChildrenListIterator() {
-
-        ListIterator kids;
-
-        // Construct components we will need
-        UIComponent comp0 = new TestComponent(null);
-        UIComponent comp1 = new TestComponent("comp1");
-        UIComponent comp2 = new TestComponent("comp2");
-        UIComponent comp3 = new TestComponent("comp3");
-        UIComponent comp4 = new TestComponent("comp4");
-        UIComponent comp5 = new TestComponent("comp5");
-        UIComponent comp6 = new TestComponent("comp6");
-        List comps = new ArrayList();
-        comps.add(comp0);
-        comps.add(comp1);
-        comps.add(comp2);
-        comps.add(comp3);
-        comps.add(comp4);
-        comps.add(comp5);
-
-        // Test hasNext(), next(), and nextIndex()
-        component.getChildren().clear();
-        component.getChildren().addAll(comps);
-        kids = component.getChildren().listIterator();
-        assertTrue(kids.hasNext());
-        assertEquals(0, kids.nextIndex());
-        assertEquals(comp0, (UIComponent) kids.next());
-        assertEquals(1, kids.nextIndex());
-        assertEquals(comp1, (UIComponent) kids.next());
-        assertEquals(2, kids.nextIndex());
-        assertEquals(comp2, (UIComponent) kids.next());
-        assertEquals(3, kids.nextIndex());
-        assertEquals(comp3, (UIComponent) kids.next());
-        assertEquals(4, kids.nextIndex());
-        assertEquals(comp4, (UIComponent) kids.next());
-        assertEquals(5, kids.nextIndex());
-        assertEquals(comp5, (UIComponent) kids.next());
-        assertEquals(6, kids.nextIndex());
-        assertTrue(!kids.hasNext());
-
-        // Test hasPrevious(), previous(), and previousIndex()
-        assertTrue(kids.hasPrevious());
-        assertEquals(5, kids.previousIndex());
-        assertEquals(comp5, (UIComponent) kids.previous());
-        assertEquals(4, kids.previousIndex());
-        assertEquals(comp4, (UIComponent) kids.previous());
-        assertEquals(3, kids.previousIndex());
-        assertEquals(comp3, (UIComponent) kids.previous());
-        assertEquals(2, kids.previousIndex());
-        assertEquals(comp2, (UIComponent) kids.previous());
-        assertEquals(1, kids.previousIndex());
-        assertEquals(comp1, (UIComponent) kids.previous());
-        assertEquals(0, kids.previousIndex());
-        assertEquals(comp0, (UIComponent) kids.previous());
-        assertEquals(-1, kids.previousIndex());
-        assertTrue(!kids.hasPrevious());
-
-        // Test remove()
-        component.getChildren().clear();
-        component.getChildren().addAll(comps);
-        kids = component.getChildren().listIterator();
-        while (kids.hasNext()) {
-            UIComponent kid = (UIComponent) kids.next();
-            if ((kid == comp2) || (kid == comp4)) {
-                kids.remove();
-            }
-        }
-        kids = component.getChildren().listIterator();
-        assertTrue(kids.hasNext());
-        assertEquals(comp0, (UIComponent) kids.next());
-        assertEquals(comp1, (UIComponent) kids.next());
-        assertEquals(comp3, (UIComponent) kids.next());
-        assertEquals(comp5, (UIComponent) kids.next());
-        assertTrue(!kids.hasNext());
-
-        // Test set()
-        component.getChildren().clear();
-        component.getChildren().addAll(comps);
-        kids = component.getChildren().listIterator();
-        while (kids.hasNext()) {
-            UIComponent kid = (UIComponent) kids.next();
-            if (kid == comp2) {
-                kids.set(comp6);
-            }
-        }
-        kids = component.getChildren().listIterator();
-        assertTrue(kids.hasNext());
-        assertEquals(0, kids.nextIndex());
-        assertEquals(comp0, (UIComponent) kids.next());
-        assertEquals(1, kids.nextIndex());
-        assertEquals(comp1, (UIComponent) kids.next());
-        assertEquals(2, kids.nextIndex());
-        assertEquals(comp6, (UIComponent) kids.next());
-        assertEquals(3, kids.nextIndex());
-        assertEquals(comp3, (UIComponent) kids.next());
-        assertEquals(4, kids.nextIndex());
-        assertEquals(comp4, (UIComponent) kids.next());
-        assertEquals(5, kids.nextIndex());
-        assertEquals(comp5, (UIComponent) kids.next());
-        assertEquals(6, kids.nextIndex());
-        assertTrue(!kids.hasNext());
-
-        // Test add()
-        component.getChildren().clear();
-        component.getChildren().addAll(comps);
-        kids = component.getChildren().listIterator();
-        while (kids.hasNext()) {
-            UIComponent kid = (UIComponent) kids.next();
-            if (kid == comp2) {
-                kids.add(comp6);
-            }
-        }
-        kids = component.getChildren().listIterator();
-        assertTrue(kids.hasNext());
-        assertEquals(0, kids.nextIndex());
-        assertEquals(comp0, (UIComponent) kids.next());
-        assertEquals(1, kids.nextIndex());
-        assertEquals(comp1, (UIComponent) kids.next());
-        assertEquals(2, kids.nextIndex());
-        assertEquals(comp2, (UIComponent) kids.next());
-        assertEquals(3, kids.nextIndex());
-        assertEquals(comp6, (UIComponent) kids.next());
-        assertEquals(4, kids.nextIndex());
-        assertEquals(comp3, (UIComponent) kids.next());
-        assertEquals(5, kids.nextIndex());
-        assertEquals(comp4, (UIComponent) kids.next());
-        assertEquals(6, kids.nextIndex());
-        assertEquals(comp5, (UIComponent) kids.next());
-        assertEquals(7, kids.nextIndex());
-        assertTrue(!kids.hasNext());
-
-        // Test listIterator(int)
-        component.getChildren().clear();
-        component.getChildren().addAll(comps);
-        kids = component.getChildren().listIterator(2);
-        assertTrue(kids.hasNext());
-        assertTrue(kids.hasPrevious());
-        assertEquals(2, kids.nextIndex());
-        assertEquals(1, kids.previousIndex());
-        assertEquals(comp2, (UIComponent) kids.next());
-        assertEquals(comp3, (UIComponent) kids.next());
-        assertEquals(comp4, (UIComponent) kids.next());
-        assertEquals(comp4, (UIComponent) kids.previous());
-        assertEquals(comp3, (UIComponent) kids.previous());
-        assertEquals(comp2, (UIComponent) kids.previous());
-        assertEquals(comp1, (UIComponent) kids.previous());
-
-        // Test IOB exception for list iterator
-        component.getChildren().clear();
-        component.getChildren().addAll(comps);
-        try {
-            component.getChildren().listIterator(-1);
-            fail("Should throw IndexOutOfBoundsException on index -1");
-        } catch (IndexOutOfBoundsException e) {
-            ;//Expected result
-        }
-
-        try {
-            component.getChildren().listIterator(component.getChildren().size() + 1);
-            fail("Should throw IndexOutOfBoundsException on index = size() + 1");
-        } catch (IndexOutOfBoundsException e) {
-            ;//Expected result
-        }
-
-        //Iterate with list iterator in reverse order
-        int i = component.getChildren().size() - 1;
-        for (ListIterator<UIComponent> li = component.getChildren().listIterator(
-                component.getChildren().size()); li.hasPrevious();) {
-
-            assertEquals(comps.get(i--), li.previous());
-        }
-
-    }
-
-
-    // Negative tests on children methods
-    public void testChidrenNegative() {
-
-        // Construct components we will need
-        UIComponent comp0 = new TestComponent(null);
-        UIComponent comp1 = new TestComponent("comp1");
-        UIComponent comp2 = new TestComponent("comp2");
-        UIComponent comp3 = new TestComponent("comp3");
-
-        // Set up and verify initial state
-        List children = component.getChildren();
-        children.add(comp0);
-        children.add(comp1);
-        children.add(comp2);
-        checkChildCount(component, 3);
-        checkChildPresent(component, comp0, 0);
-        checkChildPresent(component, comp1, 1);
-        checkChildPresent(component, comp2, 2);
-        checkChildMissing(component, comp3);
-
-        // add(Object) - ClassCastException
-        try {
-            children.add("String");
-            fail("Should have thrown ClassCastException");
-        } catch (ClassCastException e) {
-            ; // Expected result
-        }
-        checkChildCount(component, 3);
-        checkChildPresent(component, comp0, 0);
-        checkChildPresent(component, comp1, 1);
-        checkChildPresent(component, comp2, 2);
-        checkChildMissing(component, comp3);
-
-        // add(Object) - NullPointerException
-        try {
-            children.add(null);
-            fail("Should have thrown NullPointerException");
-        } catch (NullPointerException e) {
-            ; // Expected result
-        }
-        checkChildCount(component, 3);
-        checkChildPresent(component, comp0, 0);
-        checkChildPresent(component, comp1, 1);
-        checkChildPresent(component, comp2, 2);
-        checkChildMissing(component, comp3);
-
-        // add(int,Object) - ClassCastException
-        try {
-            children.add(1, "String");
-            fail("Should have thrown ClassCastException");
-        } catch (ClassCastException e) {
-            ; // Expected result
-        }
-        checkChildCount(component, 3);
-        checkChildPresent(component, comp0, 0);
-        checkChildPresent(component, comp1, 1);
-        checkChildPresent(component, comp2, 2);
-        checkChildMissing(component, comp3);
-
-        // add(int,Object) - IndexOutOfBoundsException low
-        try {
-            children.add(-1, comp3);
-            fail("Should have thrown IndexOutOfBoundsException low");
-        } catch (IndexOutOfBoundsException e) {
-            ; // Expected result
-        }
-        checkChildCount(component, 3);
-        checkChildPresent(component, comp0, 0);
-        checkChildPresent(component, comp1, 1);
-        checkChildPresent(component, comp2, 2);
-        checkChildMissing(component, comp3);
-
-        // add(int,Object) - IndexOutOfBoundsException high
-        try {
-            children.add(4, comp3);
-            fail("Should have thrown IndexOutOfBoundsException high");
-        } catch (IndexOutOfBoundsException e) {
-            ; // Expected result
-        }
-        checkChildCount(component, 3);
-        checkChildPresent(component, comp0, 0);
-        checkChildPresent(component, comp1, 1);
-        checkChildPresent(component, comp2, 2);
-        checkChildMissing(component, comp3);
-
-        // add(int,Object) - NullPointerException
-        try {
-            children.add(1, null);
-            fail("Should have thrown NullPointerException");
-        } catch (NullPointerException e) {
-            ; // Expected result
-        }
-        checkChildCount(component, 3);
-        checkChildPresent(component, comp0, 0);
-        checkChildPresent(component, comp1, 1);
-        checkChildPresent(component, comp2, 2);
-        checkChildMissing(component, comp3);
-
-        // set(int,Object) - ClassCastException
-        try {
-            children.set(1, "String");
-            fail("Should have thrown ClassCastException");
-        } catch (ClassCastException e) {
-            ; // Expected result
-        }
-        checkChildCount(component, 3);
-        checkChildPresent(component, comp0, 0);
-        checkChildPresent(component, comp1, 1);
-        checkChildPresent(component, comp2, 2);
-        checkChildMissing(component, comp3);
-
-        // set(int,Object) - IndexOutOfBoundsException low
-        try {
-            children.set(-1, comp3);
-            fail("Should have thrown IndexOutOfBoundsException low");
-        } catch (IndexOutOfBoundsException e) {
-            ; // Expected result
-        }
-        checkChildCount(component, 3);
-        checkChildPresent(component, comp0, 0);
-        checkChildPresent(component, comp1, 1);
-        checkChildPresent(component, comp2, 2);
-        checkChildMissing(component, comp3);
-
-        // set(int,Object) - IndexOutOfBoundsException high
-        try {
-            children.set(4, comp3);
-            fail("Should have thrown IndexOutOfBoundsException high");
-        } catch (IndexOutOfBoundsException e) {
-            ; // Expected result
-        }
-        checkChildCount(component, 3);
-        checkChildPresent(component, comp0, 0);
-        checkChildPresent(component, comp1, 1);
-        checkChildPresent(component, comp2, 2);
-        checkChildMissing(component, comp3);
-
-        // set(int,Object) - NullPointerException
-        try {
-            children.set(1, null);
-            fail("Should have thrown NullPointerException");
-        } catch (NullPointerException e) {
-            ; // Expected result
-        }
-        checkChildCount(component, 3);
-        checkChildPresent(component, comp0, 0);
-        checkChildPresent(component, comp1, 1);
-        checkChildPresent(component, comp2, 2);
-        checkChildMissing(component, comp3);
-
-    }
-
-
-    // Positive tests on children methods
-    public void testChildrenPositive() {
-
-        // Construct components we will need
-        UIComponent comp0 = new TestComponent(null);
-        UIComponent comp1 = new TestComponent("comp1");
-        UIComponent comp2 = new TestComponent("comp2");
-        UIComponent comp3 = new TestComponent("comp3");
-        UIComponent comp4 = new TestComponent("comp4");
-        UIComponent comp5 = new TestComponent("comp5");
-        UIComponent comp6 = new TestComponent("comp6");
-
-        // Verify initial state
-        List children = component.getChildren();
-        checkChildMissing(component, comp0);
-        checkChildCount(component, 0);
-        checkChildMissing(component, comp1);
-        checkChildMissing(component, comp2);
-        checkChildMissing(component, comp3);
-        checkChildMissing(component, comp4);
-        checkChildMissing(component, comp5);
-        checkChildMissing(component, comp6);
-
-        // add(Object)
-        children.add(comp1);
-        checkChildCount(component, 1);
-        checkChildMissing(component, comp0);
-        checkChildPresent(component, comp1, 0);
-        checkChildMissing(component, comp2);
-        checkChildMissing(component, comp3);
-        checkChildMissing(component, comp4);
-        checkChildMissing(component, comp5);
-        checkChildMissing(component, comp6);
-
-        // add(int, Object)
-        children.add(0, comp0);
-        checkChildCount(component, 2);
-        checkChildPresent(component, comp0, 0);
-        checkChildPresent(component, comp1, 1);
-        checkChildMissing(component, comp2);
-        checkChildMissing(component, comp3);
-        checkChildMissing(component, comp4);
-        checkChildMissing(component, comp5);
-        checkChildMissing(component, comp6);
-
-        // addAll(Collection)
-        ArrayList list1 = new ArrayList();
-        list1.add(comp4);
-        list1.add(comp5);
-        children.addAll(list1);
-        checkChildCount(component, 4);
-        checkChildPresent(component, comp0, 0);
-        checkChildPresent(component, comp1, 1);
-        checkChildMissing(component, comp2);
-        checkChildMissing(component, comp3);
-        checkChildPresent(component, comp4, 2);
-        checkChildPresent(component, comp5, 3);
-        checkChildMissing(component, comp6);
-
-        // addAll(int, Collection)
-        ArrayList list2 = new ArrayList();
-        list2.add(comp2);
-        list2.add(comp3);
-        children.addAll(2, list2);
-        checkChildCount(component, 6);
-        checkChildPresent(component, comp0, 0);
-        checkChildPresent(component, comp1, 1);
-        checkChildPresent(component, comp2, 2);
-        checkChildPresent(component, comp3, 3);
-        checkChildPresent(component, comp4, 4);
-        checkChildPresent(component, comp5, 5);
-        checkChildMissing(component, comp6);
-
-        // contains(Object) is tested in checkChildPresent / checkChildMissing
-
-        // containsAll(Collection)
-        assertTrue(children.containsAll(list1));
-        assertTrue(children.containsAll(list2));
-
-        // get(int) is tested in checkChildPresent / checkChildMissing
-
-        // indexOf(Object) is tested in checkChildPresent / checkChildMissing
-
-        // isEmpty() is tested in checkChildCount
-
-        // iterator() is tested in testChildrenIterator
-
-        // listIterator() is tested in testChildrenListIterator
-
-        // toArray(Object[])
-        UIComponent kids[] =
-                (UIComponent[]) children.toArray(new UIComponent[0]);
-        assertEquals(comp0, kids[0]);
-        assertEquals(comp1, kids[1]);
-        assertEquals(comp2, kids[2]);
-        assertEquals(comp3, kids[3]);
-        assertEquals(comp4, kids[4]);
-        assertEquals(comp5, kids[5]);
-
-        // subList(int,int)
-        List subList = children.subList(3, 5);
-        assertEquals(2, subList.size());
-        assertEquals(comp3, (UIComponent) subList.get(0));
-        assertEquals(comp4, (UIComponent) subList.get(1));
-
-        // set(int,Object)
-        children.set(4, comp6);
-        checkChildCount(component, 6);
-        checkChildPresent(component, comp0, 0);
-        checkChildPresent(component, comp1, 1);
-        checkChildPresent(component, comp2, 2);
-        checkChildPresent(component, comp3, 3);
-        checkChildMissing(component, comp4);
-        checkChildPresent(component, comp5, 5);
-        checkChildPresent(component, comp6, 4);
-        assertTrue(!children.containsAll(list1));
-        assertTrue(children.containsAll(list2));
-
-        // remove(int)
-        children.remove(4);
-        checkChildCount(component, 5);
-        checkChildPresent(component, comp0, 0);
-        checkChildPresent(component, comp1, 1);
-        checkChildPresent(component, comp2, 2);
-        checkChildPresent(component, comp3, 3);
-        checkChildMissing(component, comp4);
-        checkChildPresent(component, comp5, 4);
-        checkChildMissing(component, comp6);
-        assertTrue(!children.containsAll(list1));
-        assertTrue(children.containsAll(list2));
-
-        // removeAll(Collection)
-        children.removeAll(list2);
-        checkChildCount(component, 3);
-        checkChildPresent(component, comp0, 0);
-        checkChildPresent(component, comp1, 1);
-        checkChildMissing(component, comp2);
-        checkChildMissing(component, comp3);
-        checkChildMissing(component, comp4);
-        checkChildPresent(component, comp5, 2);
-        checkChildMissing(component, comp6);
-        assertTrue(!children.containsAll(list1));
-        assertTrue(!children.containsAll(list2));
-
-        // retainAll()
-        ArrayList list3 = new ArrayList();
-        list3.add(comp1);
-        list3.add(comp3);
-        list3.add(comp5);
-        children.retainAll(list3);
-        checkChildCount(component, 2);
-        checkChildMissing(component, comp0);
-        checkChildPresent(component, comp1, 0);
-        checkChildMissing(component, comp2);
-        checkChildMissing(component, comp3);
-        checkChildMissing(component, comp4);
-        checkChildPresent(component, comp5, 1);
-        checkChildMissing(component, comp6);
-        assertTrue(!children.containsAll(list3));
-
-        // size() is tested in checkChildCount
-
-        // clear()
-        children.clear();
-        checkChildCount(component, 0);
-        assertNull(comp0.getParent());
-        assertNull(comp1.getParent());
-        assertNull(comp2.getParent());
-        assertNull(comp3.getParent());
-        assertNull(comp4.getParent());
-        assertNull(comp5.getParent());
-        assertNull(comp6.getParent());
-
-    }
-
-
-    // Test replacing a child with a new one that has the same id
-    public void testChidrenReplace() {
-
-        TestComponent child1 = new TestComponent("child");
-        TestComponent child2 = new TestComponent("child");
-
-        checkChildCount(component, 0);
-        component.getChildren().add(child1);
-        checkChildCount(component, 1);
-        checkChildPresent(component, child1, 0);
-        checkChildMissing(component, child2);
-        component.getChildren().set(0, child2);
-        checkChildCount(component, 1);
-        checkChildMissing(component, child1);
-        checkChildPresent(component, child2, 0);
-        component.getChildren().clear();
-        checkChildCount(component, 0);
-
-    }
-
-
-    // Test Set returned by getFacets().entrySet()
-    public void testFacetsMapEntrySet() {
-
-        Map facets;
-        Set matches;
-        Set entrySet;
-        Iterator entries;
-
-        // Construct the pre-load set of facets we will need
-        UIComponent facet1 = new TestComponent("facet1");
-        UIComponent facet2 = new TestComponent("facet2");
-        UIComponent facet3 = new TestComponent("facet3");
-        UIComponent facet4 = new TestComponent("facet4");
-        UIComponent facet5 = new TestComponent("facet5");
-        UIComponent facet6 = new TestComponent("facet6"); // Not normally added
-        Map preload = new HashMap<String, UIComponent>();
-        preload.put("a", facet1);
-        preload.put("b", facet2);
-        preload.put("c", facet3);
-        preload.put("d", facet4);
-        preload.put("e", facet5);
-
-        // Test add()
-        facets = component.getFacets();
-        facets.clear();
-        facets.putAll(preload);
-        entrySet = facets.entrySet();
-        try {
-            entrySet.add(bogusEntry);
-            fail("Should have thrown UnsupportedOperationExcepton");
-        } catch (UnsupportedOperationException e) {
-            ; // Expected result
-        }
-
-        // Test addAll()
-        facets = component.getFacets();
-        facets.clear();
-        facets.putAll(preload);
-        entrySet = facets.entrySet();
-        try {
-            entrySet.addAll(preload.values());
-            fail("Should have thrown UnsupportedOperationExcepton");
-        } catch (UnsupportedOperationException e) {
-            ; // Expected result
-        }
-
-
-        // Test clear()
-        facets = component.getFacets();
-        facets.clear();
-        facets.putAll(preload);
-        entrySet = facets.entrySet();
-        assertEquals(5, facets.size());
-        assertEquals(5, entrySet.size());
-        checkFacetPresent(component, "a", facet1);
-        checkFacetPresent(component, "b", facet2);
-        checkFacetPresent(component, "c", facet3);
-        checkFacetPresent(component, "d", facet4);
-        checkFacetPresent(component, "e", facet5);
-        entrySet.clear();
-        assertEquals(0, facets.size());
-        assertEquals(0, entrySet.size());
-        checkFacetMissing(component, "a", facet1);
-        checkFacetMissing(component, "b", facet2);
-        checkFacetMissing(component, "c", facet3);
-        checkFacetMissing(component, "d", facet4);
-        checkFacetMissing(component, "e", facet5);
-
-        // Test contains()
-        facets = component.getFacets();
-        facets.clear();
-        facets.putAll(preload);
-        entrySet = facets.entrySet();
-        assertTrue(entrySet.contains(new TestMapEntry("a", facet1)));
-        assertTrue(entrySet.contains(new TestMapEntry("b", facet2)));
-        assertTrue(entrySet.contains(new TestMapEntry("c", facet3)));
-        assertTrue(entrySet.contains(new TestMapEntry("d", facet4)));
-        assertTrue(entrySet.contains(new TestMapEntry("e", facet5)));
-        assertTrue(!entrySet.contains(new TestMapEntry("f", facet6)));
-
-        // Test containsAll()
-        facets = component.getFacets();
-        facets.clear();
-        facets.putAll(preload);
-        entrySet = facets.entrySet();
-        matches = new HashSet();
-        matches.add(new TestMapEntry("a", facet1));
-        matches.add(new TestMapEntry("c", facet3));
-        matches.add(new TestMapEntry("d", facet4));
-        assertTrue(entrySet.containsAll(matches));
-        matches = new HashSet();
-        matches.add(new TestMapEntry("a", facet1));
-        matches.add(new TestMapEntry("c", facet3));
-        matches.add(new TestMapEntry("f", facet6));
-        assertTrue(!entrySet.containsAll(matches));
-
-        // Test iterator().hasNext() and iterator().next()
-        facets = component.getFacets();
-        facets.clear();
-        facets.putAll(preload);
-        entrySet = facets.entrySet();
-        matches = new HashSet();
-        entries = entrySet.iterator();
-        while (entries.hasNext()) {
-            matches.add(entries.next());
-        }
-        assertTrue(entrySet.equals(matches));
-
-        // Test iterator().remove()
-        facets = component.getFacets();
-        facets.clear();
-        facets.putAll(preload);
-        entrySet = facets.entrySet();
-        entries = entrySet.iterator();
-        while (entries.hasNext()) {
-            Map.Entry entry = (Map.Entry) entries.next();
-            if ("b".equals(entry.getKey()) || "d".equals(entry.getKey())) {
-                entries.remove();
-            }
-        }
-        assertEquals(3, facets.size());
-        assertEquals(3, entrySet.size());
-        checkFacetPresent(component, "a", facet1);
-        checkFacetMissing(component, "b", facet2);
-        checkFacetPresent(component, "c", facet3);
-        checkFacetMissing(component, "d", facet4);
-        checkFacetPresent(component, "e", facet5);
-
-        // Test iterator() based modify-value
-        facets = component.getFacets();
-        facets.clear();
-        facets.putAll(preload);
-        entrySet = facets.entrySet();
-        entries = entrySet.iterator();
-        while (entries.hasNext()) {
-            Map.Entry entry = (Map.Entry) entries.next();
-            if ("c".equals(entry.getKey())) {
-                entry.setValue(facet6);
-            }
-        }
-        assertEquals(5, facets.size());
-        assertEquals(5, entrySet.size());
-        checkFacetPresent(component, "a", facet1);
-        checkFacetPresent(component, "b", facet2);
-        checkFacetPresent(component, "c", facet6);
-        checkFacetPresent(component, "d", facet4);
-        checkFacetPresent(component, "e", facet5);
-
-        // Test remove()
-        facets = component.getFacets();
-        facets.clear();
-        facets.putAll(preload);
-        entrySet = facets.entrySet();
-        entrySet.remove(new TestMapEntry("c", facet3));
-        assertEquals(4, facets.size());
-        assertEquals(4, entrySet.size());
-        checkFacetPresent(component, "a", facet1);
-        checkFacetPresent(component, "b", facet2);
-        checkFacetMissing(component, "c", facet3);
-        checkFacetPresent(component, "d", facet4);
-        checkFacetPresent(component, "e", facet5);
-
-        // Test removeAll()
-        facets = component.getFacets();
-        facets.clear();
-        facets.putAll(preload);
-        entrySet = facets.entrySet();
-        matches = new HashSet();
-        matches.add(new TestMapEntry("b", facet2));
-        matches.add(new TestMapEntry("d", facet4));
-        entrySet.removeAll(matches);
-        assertEquals(3, facets.size());
-        assertEquals(3, entrySet.size());
-        checkFacetPresent(component, "a", facet1);
-        checkFacetMissing(component, "b", facet2);
-        checkFacetPresent(component, "c", facet3);
-        checkFacetMissing(component, "d", facet4);
-        checkFacetPresent(component, "e", facet5);
-
-        // Test retainAll()
-        facets = component.getFacets();
-        facets.clear();
-        facets.putAll(preload);
-        entrySet = facets.entrySet();
-        matches = new HashSet();
-        matches.add(new TestMapEntry("b", facet2));
-        matches.add(new TestMapEntry("d", facet4));
-        matches.add(new TestMapEntry("f", facet6));
-        entrySet.retainAll(matches);
-        assertEquals(2, facets.size());
-        assertEquals(2, entrySet.size());
-        checkFacetMissing(component, "a", facet1);
-        checkFacetPresent(component, "b", facet2);
-        checkFacetMissing(component, "c", facet3);
-        checkFacetPresent(component, "d", facet4);
-        checkFacetMissing(component, "e", facet5);
-
-    }
-
-
-    // Test Set returned by getFacets().keySet()
-    public void testFacetsMapKeySet() {
-
-        Map facets;
-        Set matches;
-        Set keySet;
-        Iterator keys;
-
-        // Construct the pre-load set of facets we will need
-        UIComponent facet1 = new TestComponent("facet1");
-        UIComponent facet2 = new TestComponent("facet2");
-        UIComponent facet3 = new TestComponent("facet3");
-        UIComponent facet4 = new TestComponent("facet4");
-        UIComponent facet5 = new TestComponent("facet5");
-        UIComponent facet6 = new TestComponent("facet6"); // Not normally added
-        Map preload = new HashMap();
-        preload.put("a", facet1);
-        preload.put("b", facet2);
-        preload.put("c", facet3);
-        preload.put("d", facet4);
-        preload.put("e", facet5);
-
-        // Test add()
-        facets = component.getFacets();
-        facets.clear();
-        facets.putAll(preload);
-        keySet = facets.keySet();
-        try {
-            keySet.add("bogusEntry");
-            fail("Should have thrown UnsupportedOperationExcepton");
-        } catch (UnsupportedOperationException e) {
-            ; // Expected result
-        }
-
-        // Test addAll()
-        facets = component.getFacets();
-        facets.clear();
-        facets.putAll(preload);
-        keySet = facets.keySet();
-        try {
-            keySet.addAll(preload.values());
-            fail("Should have thrown UnsupportedOperationExcepton");
-        } catch (UnsupportedOperationException e) {
-            ; // Expected result
-        }
-
-
-        // Test clear()
-        facets = component.getFacets();
-        facets.clear();
-        facets.putAll(preload);
-        keySet = facets.keySet();
-        assertEquals(5, facets.size());
-        assertEquals(5, keySet.size());
-        checkFacetPresent(component, "a", facet1);
-        checkFacetPresent(component, "b", facet2);
-        checkFacetPresent(component, "c", facet3);
-        checkFacetPresent(component, "d", facet4);
-        checkFacetPresent(component, "e", facet5);
-        keySet.clear();
-        assertEquals(0, facets.size());
-        assertEquals(0, keySet.size());
-        checkFacetMissing(component, "a", facet1);
-        checkFacetMissing(component, "b", facet2);
-        checkFacetMissing(component, "c", facet3);
-        checkFacetMissing(component, "d", facet4);
-        checkFacetMissing(component, "e", facet5);
-
-        // Test contains()
-        facets = component.getFacets();
-        facets.clear();
-        facets.putAll(preload);
-        keySet = facets.keySet();
-        assertTrue(keySet.contains("a"));
-        assertTrue(keySet.contains("b"));
-        assertTrue(keySet.contains("c"));
-        assertTrue(keySet.contains("d"));
-        assertTrue(keySet.contains("e"));
-        assertTrue(!keySet.contains("f"));
-
-        // Test containsAll()
-        facets = component.getFacets();
-        facets.clear();
-        facets.putAll(preload);
-        keySet = facets.keySet();
-        matches = new HashSet();
-        matches.add("a");
-        matches.add("c");
-        matches.add("d");
-        assertTrue(keySet.containsAll(matches));
-        matches = new HashSet();
-        matches.add("a");
-        matches.add("c");
-        matches.add("f");
-        assertTrue(!keySet.containsAll(matches));
-
-        // Test iterator().hasNext() and iterator().next()
-        facets = component.getFacets();
-        facets.clear();
-        facets.putAll(preload);
-        keySet = facets.keySet();
-        matches = new HashSet();
-        keys = keySet.iterator();
-        while (keys.hasNext()) {
-            matches.add(keys.next());
-        }
-        assertTrue(keySet.equals(matches));
-
-        // Test iterator().remove()
-        facets = component.getFacets();
-        facets.clear();
-        facets.putAll(preload);
-        keySet = facets.keySet();
-        keys = keySet.iterator();
-        while (keys.hasNext()) {
-            String key = (String) keys.next();
-            if ("b".equals(key) || "d".equals(key)) {
-                keys.remove();
-            }
-        }
-        assertEquals(3, facets.size());
-        assertEquals(3, keySet.size());
-        checkFacetPresent(component, "a", facet1);
-        checkFacetMissing(component, "b", facet2);
-        checkFacetPresent(component, "c", facet3);
-        checkFacetMissing(component, "d", facet4);
-        checkFacetPresent(component, "e", facet5);
-
-
-        // Test remove()
-        facets = component.getFacets();
-        facets.clear();
-        facets.putAll(preload);
-        keySet = facets.keySet();
-        keySet.remove("c");
-        assertEquals(4, facets.size());
-        assertEquals(4, keySet.size());
-        checkFacetPresent(component, "a", facet1);
-        checkFacetPresent(component, "b", facet2);
-        checkFacetMissing(component, "c", facet3);
-        checkFacetPresent(component, "d", facet4);
-        checkFacetPresent(component, "e", facet5);
-
-        // Test removeAll()
-        facets = component.getFacets();
-        facets.clear();
-        facets.putAll(preload);
-        keySet = facets.keySet();
-        matches = new HashSet();
-        matches.add("b");
-        matches.add("d");
-        keySet.removeAll(matches);
-        assertEquals(3, facets.size());
-        assertEquals(3, keySet.size());
-        checkFacetPresent(component, "a", facet1);
-        checkFacetMissing(component, "b", facet2);
-        checkFacetPresent(component, "c", facet3);
-        checkFacetMissing(component, "d", facet4);
-        checkFacetPresent(component, "e", facet5);
-
-        // Test retainAll()
-        facets = component.getFacets();
-        facets.clear();
-        facets.putAll(preload);
-        keySet = facets.keySet();
-        matches = new HashSet();
-        matches.add("b");
-        matches.add("d");
-        matches.add("f");
-        keySet.retainAll(matches);
-        assertEquals(2, facets.size());
-        assertEquals(2, keySet.size());
-        checkFacetMissing(component, "a", facet1);
-        checkFacetPresent(component, "b", facet2);
-        checkFacetMissing(component, "c", facet3);
-        checkFacetPresent(component, "d", facet4);
-        checkFacetMissing(component, "e", facet5);
-
-    }
-
-
-    // Test Collection returned by getFacets().values()
-    public void testFacetsMapValues() {
-
-        Map facets;
-        Collection matches;
-        Collection values;
-        Iterator vals;
-
-        // Construct the pre-load set of facets we will need
-        UIComponent facet1 = new TestComponent("facet1");
-        UIComponent facet2 = new TestComponent("facet2");
-        UIComponent facet3 = new TestComponent("facet3");
-        UIComponent facet4 = new TestComponent("facet4");
-        UIComponent facet5 = new TestComponent("facet5");
-        UIComponent facet6 = new TestComponent("facet6"); // Not normally added
-        Map preload = new HashMap();
-        preload.put("a", facet1);
-        preload.put("b", facet2);
-        preload.put("c", facet3);
-        preload.put("d", facet4);
-        preload.put("e", facet5);
-
-        // Test add()
-        facets = component.getFacets();
-        facets.clear();
-        facets.putAll(preload);
-        values = facets.values();
-        try {
-            values.add(new TestComponent("facet0"));
-            fail("Should have thrown UnsupportedOperationExcepton");
-        } catch (UnsupportedOperationException e) {
-            ; // Expected result
-        }
-
-        // Test addAll()
-        facets = component.getFacets();
-        facets.clear();
-        facets.putAll(preload);
-        values = facets.values();
-        try {
-            values.addAll(preload.values());
-            fail("Should have thrown UnsupportedOperationExcepton");
-        } catch (UnsupportedOperationException e) {
-            ; // Expected result
-        }
-
-
-        // Test clear()
-        facets = component.getFacets();
-        facets.clear();
-        facets.putAll(preload);
-        values = facets.values();
-        assertEquals(5, facets.size());
-        assertEquals(5, values.size());
-        checkFacetPresent(component, "a", facet1);
-        checkFacetPresent(component, "b", facet2);
-        checkFacetPresent(component, "c", facet3);
-        checkFacetPresent(component, "d", facet4);
-        checkFacetPresent(component, "e", facet5);
-        values.clear();
-        assertEquals(0, facets.size());
-        assertEquals(0, values.size());
-        checkFacetMissing(component, "a", facet1);
-        checkFacetMissing(component, "b", facet2);
-        checkFacetMissing(component, "c", facet3);
-        checkFacetMissing(component, "d", facet4);
-        checkFacetMissing(component, "e", facet5);
-
-        // Test contains()
-        facets = component.getFacets();
-        facets.clear();
-        facets.putAll(preload);
-        values = facets.values();
-        assertTrue(values.contains(facet1));
-        assertTrue(values.contains(facet2));
-        assertTrue(values.contains(facet3));
-        assertTrue(values.contains(facet4));
-        assertTrue(values.contains(facet5));
-        assertTrue(!values.contains(facet6));
-
-        // Test containsAll()
-        facets = component.getFacets();
-        facets.clear();
-        facets.putAll(preload);
-        values = facets.values();
-        matches = new ArrayList();
-        matches.add(facet1);
-        matches.add(facet3);
-        matches.add(facet4);
-        assertTrue(values.containsAll(matches));
-        matches = new ArrayList();
-        matches.add(facet1);
-        matches.add(facet3);
-        matches.add(facet6);
-        assertTrue(!values.containsAll(matches));
-
-        // Test iterator().hasNext() and iterator().next()
-        facets = component.getFacets();
-        facets.clear();
-        facets.putAll(preload);
-        values = facets.values();
-        matches = new ArrayList();
-        vals = values.iterator();
-        while (vals.hasNext()) {
-            matches.add(vals.next());
-        }
-        assertTrue(matches.containsAll(values));
-
-        // Test iterator().remove()
-        facets = component.getFacets();
-        facets.clear();
-        facets.putAll(preload);
-        values = facets.values();
-        vals = values.iterator();
-        while (vals.hasNext()) {
-            UIComponent val = (UIComponent) vals.next();
-            if (facet2.equals(val) || facet4.equals(val)) {
-                vals.remove();
-            }
-        }
-        assertEquals(3, facets.size());
-        assertEquals(3, values.size());
-        checkFacetPresent(component, "a", facet1);
-        checkFacetMissing(component, "b", facet2);
-        checkFacetPresent(component, "c", facet3);
-        checkFacetMissing(component, "d", facet4);
-        checkFacetPresent(component, "e", facet5);
-
-        // Test remove()
-        facets = component.getFacets();
-        facets.clear();
-        facets.putAll(preload);
-        values = facets.values();
-        values.remove(facet3);
-        assertEquals(4, facets.size());
-        assertEquals(4, values.size());
-        checkFacetPresent(component, "a", facet1);
-        checkFacetPresent(component, "b", facet2);
-        checkFacetMissing(component, "c", facet3);
-        checkFacetPresent(component, "d", facet4);
-        checkFacetPresent(component, "e", facet5);
-
-        // Test removeAll()
-        facets = component.getFacets();
-        facets.clear();
-        facets.putAll(preload);
-        values = facets.values();
-        matches = new ArrayList();
-        matches.add(facet2);
-        matches.add(facet4);
-        values.removeAll(matches);
-        assertEquals(3, facets.size());
-        assertEquals(3, values.size());
-        checkFacetPresent(component, "a", facet1);
-        checkFacetMissing(component, "b", facet2);
-        checkFacetPresent(component, "c", facet3);
-        checkFacetMissing(component, "d", facet4);
-        checkFacetPresent(component, "e", facet5);
-
-        // Test retainAll()
-        facets = component.getFacets();
-        facets.clear();
-        facets.putAll(preload);
-        values = facets.values();
-        matches = new ArrayList();
-        matches.add(facet2);
-        matches.add(facet4);
-        matches.add(facet6);
-        values.retainAll(matches);
-        assertEquals(2, facets.size());
-        assertEquals(2, values.size());
-        checkFacetMissing(component, "a", facet1);
-        checkFacetPresent(component, "b", facet2);
-        checkFacetMissing(component, "c", facet3);
-        checkFacetPresent(component, "d", facet4);
-        checkFacetMissing(component, "e", facet5);
-
-    }
-
-
-    // Negative tests on facet methods
-    public void testFacetsNegative() {
-
-        // Construct components we will need
-        UIComponent facet1 = new TestComponent("facet1");
-        UIComponent facet2 = new TestComponent("facet2");
-        UIComponent facet3 = new TestComponent("facet3");
-
-        // Set up and verify initial conditions
-        Map facets = component.getFacets();
-        facets.put("facet1", facet1);
-        facets.put("facet2", facet2);
-        checkFacetCount(component, 2);
-        checkFacetPresent(component, "facet1", facet1);
-        checkFacetPresent(component, "facet2", facet2);
-        checkFacetMissing(component, "facet3", facet3);
-
-        // put(Object,Object) - null first argument
-        try {
-            facets.put(null, facet3);
-            fail("Should have thrown NullPointerException");
-        } catch (NullPointerException e) {
-            ; // Expected result
-        }
-        checkFacetCount(component, 2);
-        checkFacetPresent(component, "facet1", facet1);
-        checkFacetPresent(component, "facet2", facet2);
-        checkFacetMissing(component, "facet3", facet3);
-
-        // put(Object,Object) - null second argument
-        try {
-            facets.put("facet3", null);
-            fail("Should have thrown NullPointerException");
-        } catch (NullPointerException e) {
-            ; // Expected result
-        }
-        checkFacetCount(component, 2);
-        checkFacetPresent(component, "facet1", facet1);
-        checkFacetPresent(component, "facet2", facet2);
-        checkFacetMissing(component, "facet3", facet3);
-
-        // put(Object,Object) - non-String first argument
-        try {
-            facets.put(facet3, facet3);
-            fail("Should have thrown ClassCastException");
-        } catch (ClassCastException e) {
-            ; // Expected result
-        }
-        checkFacetCount(component, 2);
-        checkFacetPresent(component, "facet1", facet1);
-        checkFacetPresent(component, "facet2", facet2);
-        checkFacetMissing(component, "facet3", facet3);
-
-        // put(Object,Object) - non-UIComponent second argument
-        try {
-            facets.put("facet3", "facet3");
-            fail("Should have thrown ClassCastException");
-        } catch (ClassCastException e) {
-            ; // Expected result
-        }
-        checkFacetCount(component, 2);
-        checkFacetPresent(component, "facet1", facet1);
-        checkFacetPresent(component, "facet2", facet2);
-        checkFacetMissing(component, "facet3", facet3);
-
-    }
-
-
-    // Positive tests on facet methods
-    public void testFacetsPositive() {
-
-        // Construct components we will need
-        UIComponent facet1 = new TestComponent("facet1");
-        UIComponent facet2 = new TestComponent("facet2");
-        UIComponent facet3 = new TestComponent("facet3");
-        UIComponent facet4 = new TestComponent("facet4");
-        UIComponent facet5 = new TestComponent("facet5");
-        UIComponent facet6 = new TestComponent("facet6");
-
-        // Verify initial conditions
-        Map facets = component.getFacets();
-        checkFacetCount(component, 0);
-        checkFacetMissing(component, "facet1", facet1);
-        checkFacetMissing(component, "facet2", facet2);
-        checkFacetMissing(component, "facet3", facet3);
-        checkFacetMissing(component, "facet4", facet4);
-        checkFacetMissing(component, "facet5", facet5);
-
-        // containsKey(Object) is tested in checkFacetMissing / checkFacetPresent
-
-        // containsValue(Object) is tested in checkFacetMissing / checkFacetPresent
-
-        // entrySet() is tested in testFacetsMapEntrySet()
-
-        // get(Object) is tested in checkFacetMissing / checkFacetPresent
-
-        // isEmpty() is tested in checkFacetCount
-
-        // keySet() is tested in testFacetsMapKeySet()
-
-        // put(Object,Object)
-        facets.put("facet1", facet1);
-        checkFacetCount(component, 1);
-        checkFacetPresent(component, "facet1", facet1);
-        checkFacetMissing(component, "facet2", facet2);
-        checkFacetMissing(component, "facet3", facet3);
-        checkFacetMissing(component, "facet4", facet4);
-        checkFacetMissing(component, "facet5", facet5);
-
-        // put(Object,Object)
-        facets.put("facet4", facet4);
-        checkFacetCount(component, 2);
-        checkFacetPresent(component, "facet1", facet1);
-        checkFacetMissing(component, "facet2", facet2);
-        checkFacetMissing(component, "facet3", facet3);
-        checkFacetPresent(component, "facet4", facet4);
-        checkFacetMissing(component, "facet5", facet5);
-
-        // putAll(Map)
-        Map map = new HashMap();
-        map.put("facet2", facet2);
-        map.put("facet3", facet3);
-        facets.putAll(map);
-        checkFacetCount(component, 4);
-        checkFacetPresent(component, "facet1", facet1);
-        checkFacetPresent(component, "facet2", facet2);
-        checkFacetPresent(component, "facet3", facet3);
-        checkFacetPresent(component, "facet4", facet4);
-        checkFacetMissing(component, "facet5", facet5);
-
-        // remove(Object)
-        facets.remove("facet3");
-        checkFacetCount(component, 3);
-        checkFacetPresent(component, "facet1", facet1);
-        checkFacetPresent(component, "facet2", facet2);
-        checkFacetMissing(component, "facet3", facet3);
-        checkFacetPresent(component, "facet4", facet4);
-        checkFacetMissing(component, "facet5", facet5);
-
-        // values() is tested in testFacetsMapValues()
-
-        // clear()
-        facets.clear();
-        checkFacetCount(component, 0);
-        checkFacetMissing(component, "facet1", facet1);
-        checkFacetMissing(component, "facet2", facet2);
-        checkFacetMissing(component, "facet3", facet3);
-        checkFacetMissing(component, "facet4", facet4);
-        checkFacetMissing(component, "facet5", facet5);
-
-    }
-
-
-    // Test a pristine UIComponent instance 
-    public void testPristine() {
-
-        // Validate attributes
-        checkAttributeCount(component, expectedAttributes.length);
-        for (int i = 0; i < expectedAttributes.length; i++) {
-            checkAttributePresent(component, expectedAttributes[i], null);
-        }
-
-        // Validate properties
-        assertEquals("expected family",
-                expectedFamily, component.getFamily());
-        assertEquals("expected id",
-                expectedId, component.getId());
-        assertNull("no parent", component.getParent());
-        assertEquals("expected rendered",
-                expectedRendered, component.isRendered());
-        assertEquals("expected rendererType",
-                expectedRendererType, component.getRendererType());
-        assertEquals("expected rendersChildren",
-                expectedRendersChildren, component.getRendersChildren());
-
-        // Validate children and facets
-        checkChildCount(component, 0);
-        checkFacetCount(component, 0);
-        int n = 0;
-        Iterator items = component.getFacetsAndChildren();
-        assertNotNull("iterator returned", items);
-        while (items.hasNext()) {
-            items.next();
-            n++;
-        }
-        assertEquals("facets and children", 0, n);
-
-    }
-
-
-    // Test setting properties to invalid values
-    public void testPropertiesInvalid() throws Exception {
-
-        // id - zero length
-        try {
-            component.setId("");
-            fail("should have thrown IllegalArgumentException");
-        } catch (IllegalArgumentException e) {
-            ; // Expected result
-        }
-
-        // id - leading digits
-        try {
-            component.setId("1abc");
-            fail("should have thrown IllegalArgumentException");
-        } catch (IllegalArgumentException e) {
-            ; // Expected result
-        }
-
-        // id - invalid characters 1
-        try {
-            component.setId("a*c");
-            fail("should have thrown IllegalArgumentException");
-        } catch (IllegalArgumentException e) {
-            ; // Expected result
-        }
-
-        // id - invalid characters 2
-        try {
-            component.setId(" abc");
-            fail("should have thrown IllegalArgumentException");
-        } catch (IllegalArgumentException e) {
-            ; // Expected result
-        }
-
-        // id - invalid characters 3
-        try {
-            component.setId("-abc");
-            fail("should have thrown IllegalArgumentException");
-        } catch (IllegalArgumentException e) {
-            ; // Expected result
-        }
-
-    }
-
-
-    // Test setting properties to valid values
-    public void testPropertiesValid() throws Exception {
-
-        // id - simple name
-        component.setId("foo");
-        assertEquals("expected id",
-                "foo", component.getId());
-
-        // id - complex name
-        component.setId("a123-bcd_e");
-        assertEquals("expected id",
-                "a123-bcd_e", component.getId());
-
-        // parent
-        UIComponent parent = new TestComponent("parent");
-        component.setParent(parent);
-        assertEquals("expected parent",
-                parent, component.getParent());
-
-        // rendered
-        component.setRendered(!expectedRendered);
-        assertEquals("expected rendered",
-                !expectedRendered, component.isRendered());
-
-        // rendererType
-        component.setRendererType("foo");
-        assertEquals("expected rendererType",
-                "foo", component.getRendererType());
-
-    }
-
-
-    // --------------------------------------------------------- Support Methods
-
-
-    // Validate that the specified number of attributes are present.
-
-    protected void checkAttributeCount(UIComponent component, int count) {
-        int result = 0;
-        Iterator names = component.getAttributes().keySet().iterator();
-        while (names.hasNext()) {
-            names.next();
-            result++;
-        }
-        assertEquals("attribute count", count, result);
-    }
-
-
-    // Validate that the specified attribute name is not present
-    protected void checkAttributeMissing(UIComponent component,
-                                         String name) {
-        assertNull("Attribute " + name + " should be missing",
-                component.getAttributes().get(name));
-        Iterator keys = component.getAttributes().keySet().iterator();
-        while (keys.hasNext()) {
-            String key = (String) keys.next();
-            if (name.equals(key)) {
-                fail("Attribute " + name + " should not be in names list");
-            }
-        }
-    }
-
-
-    // Validate that the specified attribute name is present with the
-    // specified value (if value is not null)
-    protected void checkAttributePresent(UIComponent component,
-                                         String name, Object value) {
-        assertNotNull("attribute " + name + " should be present",
-                component.getAttributes().get(name));
-        if (value != null) {
-            assertEquals("attribute " + name + " value should be equal",
-                    value, component.getAttributes().get(name));
-        }
-        Iterator keys = component.getAttributes().keySet().iterator();
-        while (keys.hasNext()) {
-            String key = (String) keys.next();
-            if (name.equals(key)) {
-                if (value != null) {
-                    assertEquals("attribute " + name + " value should match",
-                            value, component.getAttributes().get(name));
-                }
-                return;
-            }
-        }
-        fail("attribute " + name + " should be in name list");
-
-    }
-
-
-    // Validate that the specified number of children are present
-    protected void checkChildCount(UIComponent component, int count) {
-        assertEquals("child count 1", count, component.getChildCount());
-        assertEquals("child count 2",
-                count, component.getChildren().size());
-        assertEquals("child count 3", count, component.getChildCount());
-        if (count == 0) {
-            assertTrue("children empty", component.getChildren().isEmpty());
-        } else {
-            assertTrue("children not empty", !component.getChildren().isEmpty());
-        }
-    }
-
-
-    // Validate that the specified child is not present
-    protected void checkChildMissing(UIComponent component,
-                                     UIComponent child) {
-        assertNull("child " + child + " has no parent",
-                child.getParent());
-        List children = component.getChildren();
-        assertTrue("child " + child + " should not be contained",
-                !children.contains(child));
-        assertEquals("child " + child + " should not be found by indexOf",
-                -1, children.indexOf(child));
-        for (int i = 0; i < children.size(); i++) {
-            if (child.equals((UIComponent) children.get(i)))
-                fail("child " + child + " should be missing");
-        }
-    }
-
-
-    // Validate that the specified child is present at the specified index
-    protected void checkChildPresent(UIComponent component,
-                                     UIComponent child, int index) {
-        List children = component.getChildren();
-        assertTrue("child " + child + " should be contained",
-                children.contains(child));
-        assertEquals("child " + child + " should be found by indexOf",
-                index, children.indexOf(child));
-        UIComponent kid = (UIComponent) children.get(index);
-        assertEquals("child " + child + " should be present",
-                child, kid);
-        assertEquals("child " + child + " has correct parent",
-                component, kid.getParent());
-    }
-
-
-    // Validate that the specified number of facets is present
-    protected void checkFacetCount(UIComponent component, int count) {
-        assertEquals("facet count",
-                count, component.getFacets().size());
-        if (count == 0) {
-            assertTrue("facets empty",
-                    component.getFacets().isEmpty());
-        } else {
-            assertTrue("facets not empty",
-                    !component.getFacets().isEmpty());
-        }
-    }
-
-
-    // Validate that the specified facet is not present
-    protected void checkFacetMissing(UIComponent component,
-                                     String name, UIComponent facet) {
-        assertNull("facet " + name + " has no parent",
-                facet.getParent());
-        Map facets = component.getFacets();
-        assertTrue("facet " + name + " key not present",
-                !facets.containsKey(name));
-        assertTrue("facet " + name + " value not present",
-                !facets.containsValue(facet));
-        assertNull("facet " + name + " key not found by get",
-                facets.get(name));
-        assertNull("facet " + name + " not returned by getFacet(String)",
-                component.getFacet(name));
-        Iterator keys = facets.keySet().iterator();
-        while (keys.hasNext()) {
-            String key = (String) keys.next();
-            if (name.equals(key)) {
-                fail("facet " + name + " found in keys");
-            }
-        }
-        Iterator values = facets.values().iterator();
-        while (values.hasNext()) {
-            UIComponent value = (UIComponent) values.next();
-            if (facet.equals(value)) {
-                fail("facet " + name + " found in values");
-            }
-        }
-    }
-
-
-    // Validate that the specified facet is present
-    protected void checkFacetPresent(UIComponent component,
-                                     String name, UIComponent facet) {
-
-        assertEquals("facet " + name + " has correct parent",
-                component, facet.getParent());
-        Map facets = component.getFacets();
-        assertTrue("facet " + name + " key is present",
-                facets.containsKey(name));
-        assertTrue("facet " + name + " value is present",
-                facets.containsValue(facet));
-        assertEquals("facet " + name + " has correct value",
-                facet, (UIComponent) facets.get(name));
-        assertTrue("facet " + name + " returned by getFacet(String)",
-                facet == component.getFacet(name));
-        boolean found = false;
-        Iterator keys = facets.keySet().iterator();
-        while (keys.hasNext()) {
-            String key = (String) keys.next();
-            if (name.equals(key)) {
-                found = true;
-                break;
-            }
-        }
-        if (!found) {
-            fail("facet " + name + " not found in keys");
-        }
-        found = false;
-        Iterator values = facets.values().iterator();
-        while (values.hasNext()) {
-            UIComponent value = (UIComponent) values.next();
-            if (facet.equals(value)) {
-                found = true;
-                break;
-            }
-        }
-        if (!found) {
-            fail("facet " + name + " not found in values");
-        }
-    }
-
-
-    // --------------------------------------------------------- Private Classes
-
-
-    // Test Implementation of Map.Entry
-
-    private class TestMapEntry implements Map.Entry {
-
-        public TestMapEntry(Object key, Object value) {
-            this.key = key;
-            this.value = value;
-        }
-
-        private Object key;
-        private Object value;
-
-        public boolean equals(Object o) {
-            if (o == null) {
-                return (false);
-            }
-            if (!(o instanceof Map.Entry)) {
-                return (false);
-            }
-            Map.Entry e = (Map.Entry) o;
-            if (key == null) {
-                if (e.getKey() != null) {
-                    return (false);
-                }
-            } else {
-                if (!key.equals(e.getKey())) {
-                    return (false);
-                }
-            }
-            if (value == null) {
-                if (e.getValue() != null) {
-                    return (false);
-                }
-            } else {
-                if (!value.equals(e.getValue())) {
-                    return (false);
-                }
-            }
-            return (true);
-        }
-
-        public Object getKey() {
-            return (key);
-        }
-
-        public Object getValue() {
-            return (value);
-        }
-
-        public int hashCode() {
-            return (((key == null) ? 0 : key.hashCode()) ^
-                    ((value == null) ? 0 : value.hashCode()));
-        }
-
-        public Object setValue(Object value) {
-            Object previous = this.value;
-            this.value = value;
-            return (previous);
-        }
-
-    }
-
-
-    public static class Listener implements ComponentSystemEventListener, Serializable {
-
-        private StringBuilder sb = new StringBuilder();
-
-        public void processEvent(ComponentSystemEvent event)
-              throws AbortProcessingException {
-            UIComponent source = ((UIComponent) event.getSource());
-            Boolean validatorCalled = (Boolean) source.getAttributes().remove("vCalled");
-            if (validatorCalled != null) {
-                sb.append("*/");
-            }
-            sb.append(source.getId()).append('/');
-        }
-
-        public String getResults() {
-            return sb.toString();
-        }
-    }
-
-
-    public static class ValidationSignal implements Validator {
-
-        public void validate(FacesContext context,
-                             UIComponent component,
-                             Object value) throws ValidatorException {
-
-            component.getAttributes().put("vCalled", Boolean.TRUE);
-
-        }
-    }
-
-
-}
diff --git a/jsf-api/src/test/java/javax/faces/component/UIDataHeaderBean.java b/jsf-api/src/test/java/javax/faces/component/UIDataHeaderBean.java
deleted file mode 100644
index a622032..0000000
--- a/jsf-api/src/test/java/javax/faces/component/UIDataHeaderBean.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package javax.faces.component;
-
-
-import javax.faces.context.FacesContext;
-import javax.faces.event.ActionEvent;
-
-
-// Bean used to verify that command and input components in the header facet
-
-// of a column only get processed once, instead of once per row.
-public class UIDataHeaderBean {
-
-
-    private int actionCount = 0;
-
-    public int getActionCount() {
-        return actionCount;
-    }
-
-    private int updateCount = 0;
-
-    public int getUpdateCount() {
-        return updateCount;
-    }
-
-    private int validateCount = 0;
-
-    public int getValidateCount() {
-        return validateCount;
-    }
-
-
-    // Action method for a command in the header facet
-    public void action(ActionEvent event) {
-        actionCount++;
-    }
-
-
-    // Read/write property so that we can count updates
-    private String value = "Initial Value";
-
-    public String getValue() {
-        return value;
-    }
-
-    public void setValue(String value) {
-        this.value = value;
-        updateCount++;
-    }
-
-
-    // Validator method for an input in the header facet
-    public void validate(FacesContext context, UIComponent component,
-                         Object value) {
-        validateCount++;
-    }
-
-
-}
diff --git a/jsf-api/src/test/java/javax/faces/component/UIDataTestCase.java b/jsf-api/src/test/java/javax/faces/component/UIDataTestCase.java
deleted file mode 100644
index 87df0cc..0000000
--- a/jsf-api/src/test/java/javax/faces/component/UIDataTestCase.java
+++ /dev/null
@@ -1,2697 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package javax.faces.component;
-
-
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.IOException;
-import java.io.Reader;
-import java.io.StringWriter;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import javax.faces.FactoryFinder;
-import javax.faces.application.FacesMessage;
-import javax.faces.context.FacesContext;
-import javax.faces.context.ResponseWriter;
-import javax.faces.el.ValueBinding;
-import javax.faces.event.ActionEvent;
-
-import com.sun.faces.mock.MockExternalContext;
-import com.sun.faces.mock.MockResponseWriter;
-
-import javax.faces.FacesException;
-import javax.faces.TestUtil;
-import javax.faces.component.UIComponentBaseTestCase;
-import javax.faces.model.DataModel;
-import javax.faces.model.ListDataModel;
-import javax.faces.render.Renderer;
-import javax.faces.render.RenderKit;
-import javax.faces.render.RenderKitFactory;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-
-/**
- * <p>Unit tests for {@link UIData}.</p>
- */
-
-public class UIDataTestCase extends UIComponentBaseTestCase {
-
-
-    // ------------------------------------------------------------ Constructors
-
-
-    /**
-     * Construct a new instance of this test case.
-     *
-     * @param name Name of the test case
-     */
-    public UIDataTestCase(String name) {
-        super(name);
-    }
-
-
-    // ---------------------------------------------------- Overall Test Methods
-
-
-    // Set up instance variables required by this test case.
-
-    public void setUp() {
-        super.setUp();
-        component = new UIData();
-        expectedFamily = UIData.COMPONENT_FAMILY;
-        expectedId = null;
-        expectedRendererType = "javax.faces.Table";
-        expectedRendersChildren = true;
-        beans = new ArrayList();
-        for (int i = 0; i < 10; i++) {
-            TestDataBean bean = new TestDataBean();
-            bean.setCommand("command" + i);
-            bean.setInput("input" + i);
-            bean.setOutput("output" + i);
-            beans.add(bean);
-        }
-        model = new ListDataModel(beans);
-        assertEquals(10, model.getRowCount());
-        swriter = new StringWriter();
-        facesContext.setResponseWriter(new MockResponseWriter(swriter, null));
-    }
-
-
-    // Return the tests included in this test case.
-    public static Test suite() {
-        return (new TestSuite(UIDataTestCase.class));
-    }
-
-
-    // Tear down instance variables required by ths test case
-    public void tearDown() {
-        super.tearDown();
-        beans = null;
-        model = null;
-        swriter = null;
-    }
-
-
-    // ------------------------------------------------------ Instance Variables
-
-
-    // The list of beans represented by our DataModel instance
-    protected List beans = null;
-
-
-    // The DataModel wrapping our list of beans
-    protected DataModel model = null;
-
-
-    // The StringWriter used to buffer our rendered output
-    protected StringWriter swriter = null;
-
-
-    // ------------------------------------------------- Individual Test Methods
-
-    public void testClearDataModelCache() throws Exception {
-
-        UIData data = (UIData) component;
-        data.setValue(new String[]{"A", "B"});
-        DataModel model = data.getDataModel();
-
-        // setting row index to -1 clears the model cache
-        data.setRowIndex(-1);
-        DataModel model2 = data.getDataModel();
-        System.out.println(model.toString() + ' ' + model2.toString());
-        assertTrue(model != model2);
-
-    }
-
-
-    // Test attribute-property transparency
-    public void testAttributesTransparency() {
-
-        super.testAttributesTransparency();
-        UIData data = (UIData) component;
-
-        assertEquals(data.getValue(),
-                (String) component.getAttributes().get("value"));
-        data.setValue("foo");
-        assertEquals("foo", (String) component.getAttributes().get("value"));
-        data.setValue(null);
-        assertNull((String) component.getAttributes().get("value"));
-        component.getAttributes().put("value", "bar");
-        assertEquals("bar", data.getValue());
-        component.getAttributes().put("value", null);
-        assertNull(data.getValue());
-
-        data.setFirst(6);
-        assertEquals(data.getFirst(),
-                ((Integer) data.getAttributes().get("first")).intValue());
-        data.getAttributes().put("first", new Integer(7));
-        assertEquals(data.getFirst(),
-                ((Integer) data.getAttributes().get("first")).intValue());
-
-        data.setRows(10);
-        assertEquals(data.getRows(),
-                ((Integer) data.getAttributes().get("rows")).intValue());
-        data.getAttributes().put("rows", new Integer(20));
-        assertEquals(data.getRows(),
-                ((Integer) data.getAttributes().get("rows")).intValue());
-
-        assertEquals(data.getVar(),
-                (String) data.getAttributes().get("var"));
-        data.setVar("foo");
-        assertEquals("foo", (String) data.getAttributes().get("var"));
-        data.setVar(null);
-        assertNull((String) data.getAttributes().get("var"));
-        data.getAttributes().put("var", "bar");
-        assertEquals("bar", data.getVar());
-        data.getAttributes().put("var", null);
-        assertNull(data.getVar());
-
-    }
-
-
-    // Suppress lifecycle tests since we do not have a renderer
-    public void testLifecycleManagement() {
-    }
-
-
-    // Test a UIData instance with a pristine DataModel and "var"
-    public void testModelPristine() throws Exception {
-
-        UIData data = (UIData) component;
-        setupModel();
-        assertEquals("correct first", 3, data.getFirst());
-        assertEquals("correct rowCount", beans.size(), data.getRowCount());
-        assertEquals("correct rowIndex", -1, data.getRowIndex());
-        assertEquals("correct rows", 5, data.getRows());
-        assertTrue("correct value", model == (DataModel) data.getValue());
-
-    }
-
-
-    // Test reading the per-row data values
-    public void testModelRead() throws Exception {
-
-        ValueBinding vb = application.createValueBinding("foo");
-        ValueBinding vbCommand = application.createValueBinding("foo.command");
-        ValueBinding vbInput = application.createValueBinding("foo.input");
-        ValueBinding vbOutput = application.createValueBinding("foo.output");
-        UIData data = (UIData) component;
-        setupModel();
-        setupRenderers();
-        setupTree(true);
-
-        for (int i = 0; i < beans.size(); i++) {
-
-            // Set the row index
-            data.setRowIndex(i);
-            assertEquals(i, data.getRowIndex());
-
-            // Validate the row data
-            assertTrue(beans.get(i) == data.getRowData());
-            TestDataBean bean = (TestDataBean) data.getRowData();
-            assertNotNull("Row " + i + " data exists", bean);
-            assertEquals("command" + i, bean.getCommand());
-            assertEquals("input" + i, bean.getInput());
-            assertEquals("output" + i, bean.getOutput());
-
-            // Validate the exposed value
-            Object foo = vb.getValue(facesContext);
-            assertNotNull("Row " + i + " data exposed", foo);
-            assertTrue("Row " + i + " data correct",
-                    foo == bean);
-
-            // Validate value references to the exposed value
-            assertEquals("command" + i, vbCommand.getValue(facesContext));
-            assertEquals("input" + i, vbInput.getValue(facesContext));
-            assertEquals("output" + i, vbOutput.getValue(facesContext));
-
-        }
-
-        data.setRowIndex(-1);
-        Object foo = vb.getValue(facesContext);
-        assertNull("Data object removed", foo);
-
-    }
-
-
-    // Test writing the per-row data values
-    public void testModelWrite() throws Exception {
-
-        ValueBinding vb = application.createValueBinding("foo");
-        ValueBinding vbCommand = application.createValueBinding("foo.command");
-        ValueBinding vbInput = application.createValueBinding("foo.input");
-        ValueBinding vbOutput = application.createValueBinding("foo.output");
-        UIData data = (UIData) component;
-        setupModel();
-        setupRenderers();
-        setupTree(true);
-
-        for (int i = 0; i < beans.size(); i++) {
-
-            // Set the row index (skipping even rows)
-            if ((i % 2) == 0) {
-                continue;
-            }
-            data.setRowIndex(i);
-            assertEquals(i, data.getRowIndex());
-
-            // Validate the row data
-            assertTrue(beans.get(i) == data.getRowData());
-            TestDataBean bean = (TestDataBean) data.getRowData();
-            assertNotNull("Row " + i + " data exists", bean);
-
-            // Validate the exposed value
-            Object foo = vb.getValue(facesContext);
-            assertNotNull("Row " + i + " data exposed", foo);
-            assertTrue("Row " + i + " data correct",
-                    foo == bean);
-
-            // Update via the exposed bean
-            bean.setCommand("command" + i + "A");
-            bean.setInput("input" + i + "B");
-            bean.setOutput("output" + i + "C");
-
-            // Validate updated value references
-            assertEquals("command" + i + "A", vbCommand.getValue(facesContext));
-            assertEquals("input" + i + "B", vbInput.getValue(facesContext));
-            assertEquals("output" + i + "C", vbOutput.getValue(facesContext));
-
-            // Update via value references
-            vbCommand.setValue(facesContext, "command" + i + "D");
-            vbInput.setValue(facesContext, "input" + i + "E");
-            vbOutput.setValue(facesContext, "output" + i + "F");
-
-            // Validate bean properties
-            assertEquals("command" + i + "D", bean.getCommand());
-            assertEquals("input" + i + "E", bean.getInput());
-            assertEquals("output" + i + "F", bean.getOutput());
-
-        }
-
-
-        // Revalidate the entire collection to catch stray updates
-        for (int i = 0; i < beans.size(); i++) {
-            data.setRowIndex(i);
-            assertEquals(i, data.getRowIndex());
-            TestDataBean bean = (TestDataBean) data.getRowData();
-            assertNotNull("Row " + i + " data exists", bean);
-            if ((i % 2) == 0) {
-                assertEquals("command" + i, bean.getCommand());
-                assertEquals("input" + i, bean.getInput());
-                assertEquals("output" + i, bean.getOutput());
-            } else {
-                assertEquals("command" + i + "D", bean.getCommand());
-                assertEquals("input" + i + "E", bean.getInput());
-                assertEquals("output" + i + "F", bean.getOutput());
-            }
-        }
-
-    }
-
-
-    // Test a pristine UIData instance
-    public void testPristine() {
-
-        super.testPristine();
-        UIData data = (UIData) component;
-
-        assertNull("no value", data.getValue());
-        assertEquals("no first", 0, data.getFirst());
-        assertEquals("no rows", 0, data.getRows());
-        assertNull("no var", data.getVar());
-
-    }
-
-
-    // Test setting properties to invalid values
-    public void testPropertiesInvalid() throws Exception {
-
-        super.testPropertiesInvalid();
-        UIData data = (UIData) component;
-
-        try {
-            data.setFirst(-1);
-            fail("Should have thrown IAE");
-        } catch (IllegalArgumentException e) {
-            ; // Expected result
-        }
-
-        try {
-            data.setRows(-1);
-            fail("Should have thrown IAE");
-        } catch (IllegalArgumentException e) {
-            ; // Expected result
-        }
-
-    }
-
-
-    // Test setting properties to valid values
-    public void testPropertiesValid() throws Exception {
-
-        super.testPropertiesValid();
-        UIData data = (UIData) component;
-
-        // value
-        data.setValue("foo.bar");
-        assertEquals("expected value",
-                "foo.bar", data.getValue());
-        data.setValue(null);
-        assertNull("erased value", data.getValue());
-        data.setFirst(0);
-        data.setFirst(11);
-        data.setRows(0);
-        data.setRows(20);
-        data.setVar(null);
-        data.setVar("foo");
-
-    }
-
-
-    // Test request processing lifecycle (successful input)
-    public void testTreeLifecycle() throws Exception {
-
-        ValueBinding vbCommand = application.createValueBinding("foo.command");
-        ValueBinding vbInput = application.createValueBinding("foo.input");
-        ValueBinding vbOutput = application.createValueBinding("foo.output");
-        String before[] =
-                {"input3", "input4", "input5", "input6", "input7"};
-        String after[] =
-                {"input3", "input4A", "input5", "input6B", "input7"};
-        String nulls[] =
-                {null, null, null, null, null};
-
-        // Set up for this test
-        setupModel();
-        setupRenderers();
-        UICommand command = setupTree(true);
-        UIData data = (UIData) component;
-        checkLocalValues(nulls);
-
-        // Set up our fake request parameters (two command invocations)
-        Map params = new HashMap();
-        params.put("data:5:command", "");
-        params.put("data:7:command", "");
-        params.put("data:3:input", "input3");
-        params.put("data:4:input", "input4A");
-        params.put("data:5:input", "input5");
-        params.put("data:6:input", "input6B");
-        params.put("data:7:input", "input7");
-        MockExternalContext econtext =
-                (MockExternalContext) facesContext.getExternalContext();
-        econtext.setRequestParameterMap(params);
-        checkMessages(0);
-
-        // Simulate the Request Processing Lifecycle
-        TestDataActionListener.trace(null);
-        TestDataValidator.trace(null);
-        TestDataValueChangeListener.trace(null);
-        UIViewRoot root = (UIViewRoot) data.getParent();
-
-        //   APPLY REQUEST VALUES
-        command.setImmediate(true);
-        root.processDecodes(facesContext);
-        assertEquals("/data:5:command" +
-                "/data:7:command",
-                TestDataActionListener.trace());
-        assertEquals("", TestDataValidator.trace());
-        assertEquals("", TestDataValueChangeListener.trace());
-        checkMessages(0);
-        checkSubmittedValues(after);
-
-        //   PERFORM VALIDATIONS
-        root.processValidators(facesContext);
-        assertEquals("/data:5:command" +
-                "/data:7:command",
-                TestDataActionListener.trace());
-        assertEquals("/data:3:input/input3" +
-                "/data:4:input/input4A" +
-                "/data:5:input/input5" +
-                "/data:6:input/input6B" +
-                "/data:7:input/input7",
-                TestDataValidator.trace());
-        assertEquals("/data:4:input/input4/input4A" +
-                "/data:6:input/input6/input6B",
-                TestDataValueChangeListener.trace());
-        checkLocalValues(after);
-        checkModelInputs(before);
-        checkMessages(0);
-
-        //   UPDATE MODEL VALUES
-        root.processUpdates(facesContext);
-        assertEquals("/data:5:command" +
-                "/data:7:command",
-                TestDataActionListener.trace());
-        assertEquals("/data:3:input/input3" +
-                "/data:4:input/input4A" +
-                "/data:5:input/input5" +
-                "/data:6:input/input6B" +
-                "/data:7:input/input7",
-                TestDataValidator.trace());
-        assertEquals("/data:4:input/input4/input4A" +
-                "/data:6:input/input6/input6B",
-                TestDataValueChangeListener.trace());
-        checkModelInputs(after);
-        checkMessages(0);
-        checkLocalValues(nulls);
-
-        //   RENDER RESPONSE
-        renderResponse();
-        checkResponse("/javax/faces/component/UIDataTestCase_3.xml");
-        renderResponse();
-        checkResponse("/javax/faces/component/UIDataTestCase_3.xml");
-
-    }
-
-    UIComponent getNamingContainer(UIComponent start) {
-        UIComponent namingContainer = start.getParent();
-        while (namingContainer != null) {
-            if (namingContainer instanceof NamingContainer) {
-                return namingContainer;
-            }
-            namingContainer = namingContainer.getParent();
-        }
-        return null;
-    }
-
-
-    public void testInvokeOnComponent() throws Exception {
-
-        // Set up for this test
-        setupModel();
-        setupRenderers();
-        UIViewRoot viewRoot = facesContext.getApplication().getViewHandler().createView(facesContext, null);
-        viewRoot.setRenderKitId(RenderKitFactory.HTML_BASIC_RENDER_KIT);
-        viewRoot.setViewId("/view");
-        facesContext.setViewRoot(viewRoot);
-
-        UIForm form1 = new UIForm(), form2 = new UIForm();
-        form1.setId("form1");
-        form2.setId("form2");
-        viewRoot.getChildren().add(form1);
-        viewRoot.getChildren().add(form2);
-        setupTree2(form1, true, true);
-
-        // replace the "component" ivar with a new instance.
-        component = new UIData();
-        List beans = new ArrayList();
-
-        for (int i = 0; i < 10; i++) {
-            TestDataBean bean = new TestDataBean();
-            bean.setCommand("command" + i);
-            bean.setInput("input" + i);
-            bean.setOutput("output" + i);
-            beans.add(bean);
-        }
-        DataModel model = new ListDataModel(beans);
-        assertEquals(10, model.getRowCount());
-
-        setupModel();
-        setupTree2(form2, true, true);
-
-        boolean exceptionThrown = false, found = false;
-        // At this point we have two forms, each containing a UIData 
-
-        UIData data1 = (UIData) viewRoot.findComponent("form1:data");
-        UIData data2 = (UIData) viewRoot.findComponent("form2:data");
-        assertNotNull(data1);
-        assertNotNull(data2);
-
-        // Negative case 0, null pointers
-        exceptionThrown = false;
-        FacesContext nullContext = null;
-        ContextCallback nullCallback = null;
-        try {
-            viewRoot.invokeOnComponent(nullContext, "form:input7",
-                    nullCallback);
-        }
-        catch (NullPointerException npe) {
-            exceptionThrown = true;
-        }
-        assertTrue(exceptionThrown);
-
-        exceptionThrown = false;
-        try {
-            viewRoot.invokeOnComponent(facesContext, null,
-                    nullCallback);
-        }
-        catch (NullPointerException npe) {
-            exceptionThrown = true;
-        }
-        assertTrue(exceptionThrown);
-
-        exceptionThrown = false;
-        try {
-            viewRoot.invokeOnComponent(nullContext, null,
-                    nullCallback);
-        }
-        catch (NullPointerException npe) {
-            exceptionThrown = true;
-        }
-        assertTrue(exceptionThrown);
-
-
-        // Case 1, positive invoke on form1:data:commandHeader component of the 4th row
-        found = false;
-        data1.setRowIndex(3);
-        assertEquals(3, data1.getRowIndex());
-        found = viewRoot.invokeOnComponent(facesContext, "form1:data:4:commandHeader",
-                new ContextCallback() {
-
-                    public void invokeContextCallback(FacesContext context,
-                                                      UIComponent component) {
-                        UIData data = (UIData) getNamingContainer(component);
-                        UIForm form = (UIForm) getNamingContainer(data);
-                        assertEquals(4, data.getRowIndex());
-                        assertEquals("form1", form.getId());
-                        assertEquals("commandHeader", component.getId());
-                    }
-                });
-        assertEquals(3, data1.getRowIndex());
-        assertTrue(found);
-
-        // Case 2, positive invoke on form2:data:commandHeader component of the 5th row
-        data2.setRowIndex(4);
-        found = false;
-        assertEquals(4, data2.getRowIndex());
-        found = viewRoot.invokeOnComponent(facesContext, "form2:data:5:commandHeader",
-                new ContextCallback() {
-
-                    public void invokeContextCallback(FacesContext context,
-                                                      UIComponent component) {
-                        UIData data = (UIData) getNamingContainer(component);
-                        UIForm form = (UIForm) getNamingContainer(data);
-                        assertEquals(5, data.getRowIndex());
-                        assertEquals("form2", form.getId());
-                        assertEquals("commandHeader", component.getId());
-                    }
-                });
-        assertEquals(4, data2.getRowIndex());
-        assertTrue(found);
-
-        // Case 3, not found invoke on form2:data:5:yoyodyne
-        data2.setRowIndex(4);
-        found = false;
-        assertEquals(4, data2.getRowIndex());
-        found = viewRoot.invokeOnComponent(facesContext, "form2:data:5:yoyodyne",
-                new ContextCallback() {
-
-                    public void invokeContextCallback(FacesContext context,
-                                                      UIComponent component) {
-                        fail();
-                    }
-                });
-        assertEquals(4, data2.getRowIndex());
-        assertTrue(!found);
-
-        // Case 4, not found due to invalid rowIndex
-        data1.setRowIndex(3);
-        found = false;
-        assertEquals(3, data1.getRowIndex());
-        found = viewRoot.invokeOnComponent(facesContext, "form1:data:999:commandHeader",
-                new ContextCallback() {
-
-                    public void invokeContextCallback(FacesContext context,
-                                                      UIComponent component) {
-                        fail();
-                    }
-                });
-        assertEquals(3, data1.getRowIndex());
-        assertTrue(!found);
-
-        // Case 5, not found due to invalid clientId (too many ':')
-        data2.setRowIndex(6);
-        found = false;
-        exceptionThrown = false;
-        assertEquals(6, data2.getRowIndex());
-        try {
-            found = viewRoot.invokeOnComponent(facesContext, "form2:data::7:commandHeader",
-                    new ContextCallback() {
-
-                        public void invokeContextCallback(FacesContext context,
-                                                          UIComponent component) {
-                            fail();
-                        }
-                    });
-        }
-        catch (FacesException fe) {
-            assertTrue(fe.getCause() instanceof NumberFormatException);
-            exceptionThrown = true;
-        }
-        assertEquals(6, data2.getRowIndex());
-        assertTrue(!found);
-        assertTrue(exceptionThrown);
-
-        // Case 6, not found due to callback throwing Exception
-        found = false;
-        exceptionThrown = true;
-        data1.setRowIndex(3);
-        assertEquals(3, data1.getRowIndex());
-        try {
-            found = viewRoot.invokeOnComponent(facesContext, "form1:data:4:commandHeader",
-                    new ContextCallback() {
-
-                        public void invokeContextCallback(FacesContext context,
-                                                          UIComponent component) {
-                            throw new IllegalStateException();
-                        }
-                    });
-        } catch (FacesException ex) {
-            assertTrue(ex.getCause() instanceof IllegalStateException);
-            exceptionThrown = true;
-        }
-        assertEquals(3, data1.getRowIndex());
-        assertTrue(!found);
-        assertTrue(exceptionThrown);
-
-        // Case 7, positive: ensure UIData-level facets are considered
-        found = false;
-        data1.setRowIndex(3);
-        assertEquals(3, data1.getRowIndex());
-        found = viewRoot.invokeOnComponent(facesContext, "form1:data:uidataHeader",
-                new ContextCallback() {
-
-                    public void invokeContextCallback(FacesContext context,
-                                                      UIComponent component) {
-                        UIData data = (UIData) getNamingContainer(component);
-                        UIForm form = (UIForm) getNamingContainer(data);
-                        assertEquals("form1", form.getId());
-                        assertEquals("uidataHeader", component.getId());
-                    }
-                });
-        assertEquals(3, data1.getRowIndex());
-        assertTrue(found);
-
-        found = false;
-        data1.setRowIndex(3);
-        assertEquals(3, data1.getRowIndex());
-        found = viewRoot.invokeOnComponent(facesContext, "form1:data:uidataFooter",
-                new ContextCallback() {
-
-                    public void invokeContextCallback(FacesContext context,
-                                                      UIComponent component) {
-                        UIData data = (UIData) getNamingContainer(component);
-                        UIForm form = (UIForm) getNamingContainer(data);
-                        assertEquals("form1", form.getId());
-                        assertEquals("uidataFooter", component.getId());
-                    }
-                });
-        assertEquals(3, data1.getRowIndex());
-        assertTrue(found);
-
-
-    }
-
-
-    public void testInvokeOnComponent2() throws Exception {
-
-        setupModel();
-        setupRenderers();
-        UIViewRoot viewRoot = facesContext.getApplication().getViewHandler().createView(facesContext, "/view");
-        viewRoot.setRenderKitId(RenderKitFactory.HTML_BASIC_RENDER_KIT);
-        facesContext.setViewRoot(viewRoot);
-        UIForm form = new UIForm();
-        form.setId("form");
-        viewRoot.getChildren().add(form);
-        UIData data = (UIData) component;
-        data.setId("data3");
-        form.getChildren().add(data);
-        UIColumn column = new UIColumn();
-        data.getChildren().add(column);
-        UIOutput output = new UIOutput();
-        output.setId("test4");
-        column.getChildren().add(output);
-
-        data.setRowIndex(3);
-        assertEquals(3, data.getRowIndex());
-        boolean found = viewRoot.invokeOnComponent(facesContext, "form:data3:4:test4",
-                new ContextCallback() {
-
-                    public void invokeContextCallback(FacesContext context,
-                                                      UIComponent component) {
-                        UIData data = (UIData) getNamingContainer(component);
-                        UIForm form = (UIForm) getNamingContainer(data);
-                        assertEquals(4, data.getRowIndex());
-                        assertEquals("form", form.getId());
-                        assertEquals("test4", component.getId());
-                    }
-                });
-        assertEquals(3, data.getRowIndex());
-        assertTrue(found);
-
-    }
-
-    /**
-     * <p>Test invokeOnComponent on the following tree.</p>
-     * <p/>
-     * <code><pre>
-     * id:null
-     * type:UIViewRoot
-     * <p/>
-     *   id:outerData
-     *   type:UIData
-     * <p/>
-     *     id:outerColumn
-     *     type:UIColumn
-     * <p/>
-     *       id:form1
-     *       type:UIForm
-     * <p/>
-     *         id:data
-     *         type:UIData
-     * <p/>
-     *           id:commandColumn
-     *           type:UIColumn
-     * <p/>
-     *             id:commandFooter
-     *             type:UIOutput
-     * <p/>
-     *             id:commandHeader
-     *             type:UIOutput
-     * <p/>
-     *             id:command
-     *             type:UICommand
-     * <p/>
-     *           id:inputColumn
-     *           type:UIColumn
-     * <p/>
-     *             id:inputFooter
-     *             type:UIOutput
-     * <p/>
-     *             id:inputHeader
-     *             type:UIOutput
-     * <p/>
-     *             id:input
-     *             type:UIInput
-     * <p/>
-     *           id:outputColumn
-     *           type:UIColumn
-     * <p/>
-     *             id:outputFooter
-     *             type:UIOutput
-     * <p/>
-     *             id:outputHeader
-     *             type:UIOutput
-     * <p/>
-     *             id:output
-     *             type:UIOutput
-     * <p/>
-     *           id:constantColumn
-     *           type:UIColumn
-     * <p/>
-     *             id:constantFooter
-     *             type:UIOutput
-     * <p/>
-     *             id:constantHeader
-     *             type:UIOutput
-     * <p/>
-     *             id:constant
-     *             type:UIOutput
-     * <p/>
-     *       id:form2
-     *       type:UIForm
-     * <p/>
-     *         id:data
-     *         type:UIData
-     * <p/>
-     *           id:commandColumn
-     *           type:UIColumn
-     * <p/>
-     *             id:commandFooter
-     *             type:UIOutput
-     * <p/>
-     *             id:commandHeader
-     *             type:UIOutput
-     * <p/>
-     *             id:command
-     *             type:UICommand
-     * <p/>
-     *           id:inputColumn
-     *           type:UIColumn
-     * <p/>
-     *             id:inputFooter
-     *             type:UIOutput
-     * <p/>
-     *             id:inputHeader
-     *             type:UIOutput
-     * <p/>
-     *             id:input
-     *             type:UIInput
-     * <p/>
-     *           id:outputColumn
-     *           type:UIColumn
-     * <p/>
-     *             id:outputFooter
-     *             type:UIOutput
-     * <p/>
-     *             id:outputHeader
-     *             type:UIOutput
-     * <p/>
-     *             id:output
-     *             type:UIOutput
-     * <p/>
-     *           id:constantColumn
-     *           type:UIColumn
-     * <p/>
-     *             id:constantFooter
-     *             type:UIOutput
-     * <p/>
-     *             id:constantHeader
-     *             type:UIOutput
-     * <p/>
-     *             id:constant
-     *             type:UIOutput
-     * </pre></code>
-     */
-
-    public void testInvokeOnComponentNested() throws Exception {
-
-        UIData
-                outer = (UIData) component,
-                inner = new UIData();
-        List innerBeans = new ArrayList();
-        for (int i = 0; i < 3; i++) {
-            TestDataBean bean = new TestDataBean();
-            bean.setCommand("innerCommand" + i);
-            bean.setInput("innerInput" + i);
-            bean.setOutput("innerOutput" + i);
-            innerBeans.add(bean);
-        }
-        DataModel innerDataModel = new ListDataModel(innerBeans);
-
-
-        // set up the model for the outer table.
-        setupModel();
-
-        // set up the tree for the outer data table
-        setupRenderers();
-        UIViewRoot viewRoot = facesContext.getApplication().getViewHandler().createView(facesContext, null);
-        viewRoot.setRenderKitId(RenderKitFactory.HTML_BASIC_RENDER_KIT);
-        viewRoot.setViewId("/view");
-        facesContext.setViewRoot(viewRoot);
-        outer.setId("outerData");
-        viewRoot.getChildren().add(outer);
-
-        UIColumn column = new UIColumn();
-        column.setId("outerColumn");
-        outer.getChildren().add(column);
-
-        // Set up for this test
-        setupModel();
-
-        UIForm form1 = new UIForm(), form2 = new UIForm();
-        form1.setId("form1");
-        form2.setId("form2");
-        column.getChildren().add(form1);
-        column.getChildren().add(form2);
-
-        // replace the "component" ivar with a new instance.
-        component = new UIData();
-        List beans = new ArrayList();
-
-        for (int i = 0; i < 10; i++) {
-            TestDataBean bean = new TestDataBean();
-            bean.setCommand("command" + i);
-            bean.setInput("input" + i);
-            bean.setOutput("output" + i);
-            beans.add(bean);
-        }
-        DataModel model = new ListDataModel(beans);
-        assertEquals(10, model.getRowCount());
-
-        setupModel();
-        setupTree(form1, true, true);
-
-        component = new UIData();
-        beans = new ArrayList();
-
-        for (int i = 0; i < 10; i++) {
-            TestDataBean bean = new TestDataBean();
-            bean.setCommand("command" + i);
-            bean.setInput("input" + i);
-            bean.setOutput("output" + i);
-            beans.add(bean);
-        }
-        model = new ListDataModel(beans);
-        assertEquals(10, model.getRowCount());
-
-        setupModel();
-        setupTree(form2, true, true);
-
-        boolean exceptionThrown = false, found = false;
-        // At this point we have two forms, each containing a UIData
-        UIData outerData = (UIData) viewRoot.findComponent("outerData");
-        UIData data1 = (UIData) viewRoot.findComponent("outerData:form1:data");
-        UIData data2 = (UIData) viewRoot.findComponent("outerData:form2:data");
-        assertNotNull(data1);
-        assertNotNull(data2);
-
-
-        // Case 1, positive invoke on form1:data:commandHeader component of the 4th row
-        found = false;
-        outerData.setRowIndex(1);
-        assertEquals(1, outerData.getRowIndex());
-        data1.setRowIndex(3);
-        assertEquals(3, data1.getRowIndex());
-        found = viewRoot.invokeOnComponent(facesContext, "outerData:2:form1:data:4:commandHeader",
-                new ContextCallback() {
-
-                    public void invokeContextCallback(FacesContext context,
-                                                      UIComponent component) {
-                        UIData data = (UIData) getNamingContainer(component);
-                        UIForm form = (UIForm) getNamingContainer(data);
-                        assertEquals(4, data.getRowIndex());
-                        assertEquals("form1", form.getId());
-                        assertEquals("commandHeader", component.getId());
-                    }
-                });
-        assertEquals(1, outerData.getRowIndex());
-        assertEquals(3, data1.getRowIndex());
-        assertTrue(found);
-
-        // Case 2, positive invoke on form2:data:commandHeader component of the 5th row
-        outerData.setRowIndex(3);
-        assertEquals(3, outerData.getRowIndex());
-        data2.setRowIndex(4);
-        found = false;
-        assertEquals(4, data2.getRowIndex());
-        found = viewRoot.invokeOnComponent(facesContext, "outerData:1:form2:data:5:commandHeader",
-                new ContextCallback() {
-
-                    public void invokeContextCallback(FacesContext context,
-                                                      UIComponent component) {
-                        UIData data = (UIData) getNamingContainer(component);
-                        UIForm form = (UIForm) getNamingContainer(data);
-                        assertEquals(5, data.getRowIndex());
-                        assertEquals("form2", form.getId());
-                        assertEquals("commandHeader", component.getId());
-                    }
-                });
-        assertEquals(3, outerData.getRowIndex());
-        assertEquals(4, data2.getRowIndex());
-        assertTrue(found);
-
-        // Case 3, not found invoke on form2:data:5:yoyodyne
-        outerData.setRowIndex(1);
-        assertEquals(1, outerData.getRowIndex());
-        data2.setRowIndex(4);
-        found = false;
-        assertEquals(4, data2.getRowIndex());
-        found = viewRoot.invokeOnComponent(facesContext, "outerData:2:form2:data:5:yoyodyne",
-                new ContextCallback() {
-
-                    public void invokeContextCallback(FacesContext context,
-                                                      UIComponent component) {
-                        fail();
-                    }
-                });
-        assertEquals(1, outerData.getRowIndex());
-        assertEquals(4, data2.getRowIndex());
-        assertTrue(!found);
-
-        // Case 4, not found due to invalid rowIndex
-        outerData.setRowIndex(1);
-        assertEquals(1, outerData.getRowIndex());
-        data1.setRowIndex(3);
-        found = false;
-        assertEquals(3, data1.getRowIndex());
-        found = viewRoot.invokeOnComponent(facesContext, "outerData:3:form1:data:999:commandHeader",
-                new ContextCallback() {
-
-                    public void invokeContextCallback(FacesContext context,
-                                                      UIComponent component) {
-                        fail();
-                    }
-                });
-        assertEquals(1, outerData.getRowIndex());
-        assertEquals(3, data1.getRowIndex());
-        assertTrue(!found);
-
-        // Case 5, not found due to invalid clientId (too many ':')
-        outerData.setRowIndex(3);
-        assertEquals(3, outerData.getRowIndex());
-        data2.setRowIndex(6);
-        found = false;
-        exceptionThrown = false;
-        assertEquals(6, data2.getRowIndex());
-        try {
-            found = viewRoot.invokeOnComponent(facesContext, "outerData:1:form2:data::7:commandHeader",
-                    new ContextCallback() {
-
-                        public void invokeContextCallback(FacesContext context,
-                                                          UIComponent component) {
-                            fail();
-                        }
-                    });
-        }
-        catch (FacesException fe) {
-            assertTrue(fe.getCause() instanceof NumberFormatException);
-            exceptionThrown = true;
-        }
-        assertEquals(3, outerData.getRowIndex());
-        assertEquals(6, data2.getRowIndex());
-        assertTrue(!found);
-        assertTrue(exceptionThrown);
-
-        // Case 6, not found due to callback throwing Exception
-        found = false;
-        exceptionThrown = true;
-        outerData.setRowIndex(3);
-        assertEquals(3, outerData.getRowIndex());
-        data1.setRowIndex(3);
-        assertEquals(3, data1.getRowIndex());
-        try {
-            found = viewRoot.invokeOnComponent(facesContext, "outerData:1:form1:data:4:commandHeader",
-                    new ContextCallback() {
-
-                        public void invokeContextCallback(FacesContext context,
-                                                          UIComponent component) {
-                            throw new IllegalStateException();
-                        }
-                    });
-        } catch (FacesException ex) {
-            assertTrue(ex.getCause() instanceof IllegalStateException);
-            exceptionThrown = true;
-        }
-        assertEquals(3, outerData.getRowIndex());
-        assertEquals(3, data1.getRowIndex());
-        assertTrue(!found);
-        assertTrue(exceptionThrown);
-
-
-    }
-
-    // Test request processing lifecycle (with controls in header facets)
-    public void PENDING_FIXME_testTreeLifecycleFacets() throws Exception {
-
-        ValueBinding vbCommand = application.createValueBinding("foo.command");
-        ValueBinding vbInput = application.createValueBinding("foo.input");
-        ValueBinding vbOutput = application.createValueBinding("foo.output");
-        String before[] =
-                {"input3", "input4", "input5", "input6", "input7"};
-        String after[] =
-                {"input3", "input4A", "input5", "input6B", "input7"};
-        String nulls[] =
-                {null, null, null, null, null};
-
-        // Instantiate and store a bean used to count calls
-        UIDataHeaderBean hb = new UIDataHeaderBean();
-        facesContext.getExternalContext().getRequestMap().
-                put("hb", hb);
-
-        // Set up for this test
-        setupModel();
-        setupRenderers();
-        UICommand command = setupTree(false); // command and input in headers
-        UIData data = (UIData) component;
-        checkLocalValues(nulls);
-
-        // Set up our fake request parameters (three command invocations)
-        Map params = new HashMap();
-        params.put("data:hcommand", "");
-        params.put("data:5:command", "");
-        params.put("data:7:command", "");
-        params.put("data:hinput", "New Value");
-        params.put("data:3:input", "input3");
-        params.put("data:4:input", "input4A");
-        params.put("data:5:input", "input5");
-        params.put("data:6:input", "input6B");
-        params.put("data:7:input", "input7");
-        MockExternalContext econtext =
-                (MockExternalContext) facesContext.getExternalContext();
-        econtext.setRequestParameterMap(params);
-        checkMessages(0);
-
-        // Simulate the Request Processing Lifecycle
-        TestDataActionListener.trace(null);
-        TestDataValidator.trace(null);
-        TestDataValueChangeListener.trace(null);
-        UIViewRoot root = (UIViewRoot) data.getParent();
-
-        //   APPLY REQUEST VALUES
-        command.setImmediate(true);
-        root.processDecodes(facesContext);
-        assertEquals("/data:5:command" +
-                "/data:7:command",
-                TestDataActionListener.trace());
-        assertEquals("", TestDataValidator.trace());
-        assertEquals("", TestDataValueChangeListener.trace());
-        checkMessages(0);
-        checkSubmittedValues(after);
-
-        //   PERFORM VALIDATIONS
-        root.processValidators(facesContext);
-        assertEquals("/data:5:command" +
-                "/data:7:command",
-                TestDataActionListener.trace());
-        assertEquals("/data:3:input/input3" +
-                "/data:4:input/input4A" +
-                "/data:5:input/input5" +
-                "/data:6:input/input6B" +
-                "/data:7:input/input7",
-                TestDataValidator.trace());
-        assertEquals("/data:4:input/input4/input4A" +
-                "/data:6:input/input6/input6B",
-                TestDataValueChangeListener.trace());
-        checkLocalValues(after);
-        checkModelInputs(before);
-        checkMessages(0);
-
-        //   UPDATE MODEL VALUES
-        root.processUpdates(facesContext);
-        assertEquals("/data:5:command" +
-                "/data:7:command",
-                TestDataActionListener.trace());
-        assertEquals("/data:3:input/input3" +
-                "/data:4:input/input4A" +
-                "/data:5:input/input5" +
-                "/data:6:input/input6B" +
-                "/data:7:input/input7",
-                TestDataValidator.trace());
-        assertEquals("/data:4:input/input4/input4A" +
-                "/data:6:input/input6/input6B",
-                TestDataValueChangeListener.trace());
-        checkModelInputs(after);
-        checkMessages(0);
-        checkLocalValues(nulls);
-        assertEquals("Header input property updated",
-                "New Value", hb.getValue());
-
-        //   RENDER RESPONSE
-        renderResponse();
-        checkResponse("/javax/faces/component/UIDataTestCase_8.xml");
-        renderResponse();
-        checkResponse("/javax/faces/component/UIDataTestCase_8.xml");
-
-        // Check call counts
-        assertEquals("header action called once", 1, hb.getActionCount());
-        assertEquals("header validate called once", 1, hb.getValidateCount());
-        assertEquals("header update called once", 1, hb.getUpdateCount());
-
-    }
-
-
-    // Test request processing lifecycle (modify model in Invoke Application)
-    public void testTreeModify1() throws Exception {
-
-        ValueBinding vbCommand = application.createValueBinding("foo.command");
-        ValueBinding vbInput = application.createValueBinding("foo.input");
-        ValueBinding vbOutput = application.createValueBinding("foo.output");
-        String before[] =
-                {"input3", "input4", "input5", "input6", "input7"};
-        String after[] =
-                {"input3", "input4A", "input5", "input6B", "input7"};
-        String nulls[] =
-                {null, null, null, null, null};
-
-        // Set up for this test
-        setupModel();
-        setupRenderers();
-        UICommand command = setupTree(true);
-        UIData data = (UIData) component;
-        checkLocalValues(nulls);
-
-        // Set up our fake request parameters (two command invocations)
-        Map params = new HashMap();
-        params.put("data:5:command", "");
-        params.put("data:7:command", "");
-        params.put("data:3:input", "input3");
-        params.put("data:4:input", "input4A");
-        params.put("data:5:input", "input5");
-        params.put("data:6:input", "input6B");
-        params.put("data:7:input", "input7");
-        MockExternalContext econtext =
-                (MockExternalContext) facesContext.getExternalContext();
-        econtext.setRequestParameterMap(params);
-        checkMessages(0);
-
-        // Simulate the Request Processing Lifecycle
-        TestDataActionListener.trace(null);
-        TestDataValidator.trace(null);
-        TestDataValueChangeListener.trace(null);
-        UIViewRoot root = (UIViewRoot) data.getParent();
-
-        //   APPLY REQUEST VALUES
-        command.setImmediate(true);
-        root.processDecodes(facesContext);
-        assertEquals("/data:5:command" +
-                "/data:7:command",
-                TestDataActionListener.trace());
-        assertEquals("", TestDataValidator.trace());
-        assertEquals("", TestDataValueChangeListener.trace());
-        checkMessages(0);
-        checkSubmittedValues(after);
-
-        //   PERFORM VALIDATIONS
-        root.processValidators(facesContext);
-        assertEquals("/data:5:command" +
-                "/data:7:command",
-                TestDataActionListener.trace());
-        assertEquals("/data:3:input/input3" +
-                "/data:4:input/input4A" +
-                "/data:5:input/input5" +
-                "/data:6:input/input6B" +
-                "/data:7:input/input7",
-                TestDataValidator.trace());
-        assertEquals("/data:4:input/input4/input4A" +
-                "/data:6:input/input6/input6B",
-                TestDataValueChangeListener.trace());
-        checkLocalValues(after);
-        checkModelInputs(before);
-        checkMessages(0);
-
-        //   UPDATE MODEL VALUES
-        root.processUpdates(facesContext);
-        assertEquals("/data:5:command" +
-                "/data:7:command",
-                TestDataActionListener.trace());
-        assertEquals("/data:3:input/input3" +
-                "/data:4:input/input4A" +
-                "/data:5:input/input5" +
-                "/data:6:input/input6B" +
-                "/data:7:input/input7",
-                TestDataValidator.trace());
-        assertEquals("/data:4:input/input4/input4A" +
-                "/data:6:input/input6/input6B",
-                TestDataValueChangeListener.trace());
-        checkModelInputs(after);
-        checkMessages(0);
-        checkLocalValues(nulls);
-
-        // INVOKE APPLICATION
-        beans.remove(5);
-
-        //   RENDER RESPONSE
-        renderResponse();
-        checkResponse("/javax/faces/component/UIDataTestCase_6.xml");
-        renderResponse();
-        checkResponse("/javax/faces/component/UIDataTestCase_6.xml");
-
-    }
-
-
-    // Test request processing lifecycle (modify model in Apply Request Values)
-    public void testTreeModify2() throws Exception {
-
-        ValueBinding vbCommand = application.createValueBinding("foo.command");
-        ValueBinding vbInput = application.createValueBinding("foo.input");
-        ValueBinding vbOutput = application.createValueBinding("foo.output");
-        String before[] =
-                {"input3", "input4", "input5", "input6", "input7"};
-        String after[] =
-                {"input3", "input4A", "input5", "input6B", "input7"};
-        String nulls[] =
-                {null, null, null, null, null};
-
-        // Set up for this test
-        setupModel();
-        setupRenderers();
-        UICommand command = setupTree(true);
-        UIData data = (UIData) component;
-        checkLocalValues(nulls);
-
-        // Set up our fake request parameters (two command invocations)
-        Map params = new HashMap();
-        params.put("data:5:command", "");
-        params.put("data:7:command", "");
-        params.put("data:3:input", "input3");
-        params.put("data:4:input", "input4A");
-        params.put("data:5:input", "input5");
-        params.put("data:6:input", "input6B");
-        params.put("data:7:input", "input7");
-        MockExternalContext econtext =
-                (MockExternalContext) facesContext.getExternalContext();
-        econtext.setRequestParameterMap(params);
-        checkMessages(0);
-
-        // Simulate the Request Processing Lifecycle
-        TestDataActionListener.trace(null);
-        TestDataValidator.trace(null);
-        TestDataValueChangeListener.trace(null);
-        UIViewRoot root = (UIViewRoot) data.getParent();
-
-        //   APPLY REQUEST VALUES
-        command.setImmediate(true);
-        root.processDecodes(facesContext);
-        assertEquals("/data:5:command" +
-                "/data:7:command",
-                TestDataActionListener.trace());
-        assertEquals("", TestDataValidator.trace());
-        assertEquals("", TestDataValueChangeListener.trace());
-        checkMessages(0);
-        checkSubmittedValues(after);
-
-        beans.remove(5); // Simulate model modification in immediate=true action
-
-        //   PERFORM VALIDATIONS - skipped
-
-        //   UPDATE MODEL VALUES - skipped
-
-        // INVOKE APPLICATION - skipped
-
-        //   RENDER RESPONSE
-        renderResponse();
-        checkResponse("/javax/faces/component/UIDataTestCase_7.xml");
-        renderResponse();
-        checkResponse("/javax/faces/component/UIDataTestCase_7.xml");
-
-    }
-
-
-    // Test rendering the tree and validate the output twice
-    public void testTreeRendering() throws Exception {
-
-        // Set up for this test
-        setupModel();
-        setupRenderers();
-        setupTree(true);
-
-        // Validate the rendered output
-        renderResponse();
-        checkResponse("/javax/faces/component/UIDataTestCase_1.xml");
-        renderResponse();
-        checkResponse("/javax/faces/component/UIDataTestCase_1.xml");
-
-    }
-
-
-    // Test rendering the tree when there are not enough available rows
-    public void testTreeTail() throws Exception {
-
-        // Set up for this test
-        setupModel();
-        setupRenderers();
-        setupTree(true);
-
-        // Validate the rendered output
-        ((UIData) component).setFirst(7);
-        renderResponse();
-        checkResponse("/javax/faces/component/UIDataTestCase_5.xml");
-        renderResponse();
-        checkResponse("/javax/faces/component/UIDataTestCase_5.xml");
-
-    }
-
-
-    // Test updating the tree's per-row values and validate the output twice
-    public void testTreeUpdating() throws Exception {
-
-        ValueBinding vbCommand = application.createValueBinding("foo.command");
-        ValueBinding vbInput = application.createValueBinding("foo.input");
-        ValueBinding vbOutput = application.createValueBinding("foo.output");
-
-        // Set up for this test
-        setupModel();
-        setupRenderers();
-        setupTree(true);
-        UIData data = (UIData) component;
-
-        // Use value references to update certain values directly
-        data.setRowIndex(4);
-        vbCommand.setValue(facesContext, "command4A");
-        vbInput.setValue(facesContext, "input4B");
-        vbOutput.setValue(facesContext, "output4C");
-        data.setRowIndex(6);
-        vbCommand.setValue(facesContext, "command6D");
-        vbInput.setValue(facesContext, "input6E");
-        vbOutput.setValue(facesContext, "output6F");
-        data.setRowIndex(-1);
-
-        // Validate the response (twice)
-        renderResponse();
-        checkResponse("/javax/faces/component/UIDataTestCase_2.xml");
-        renderResponse();
-        checkResponse("/javax/faces/component/UIDataTestCase_2.xml");
-
-    }
-
-
-    // Test request processing lifecycle (validation errors)
-    public void testTreeValidation() throws Exception {
-
-        ValueBinding vbCommand = application.createValueBinding("foo.command");
-        ValueBinding vbInput = application.createValueBinding("foo.input");
-        ValueBinding vbOutput = application.createValueBinding("foo.output");
-        String before[] =
-                {"input3", "input4", "input5", "input6", "input7"};
-
-        // Set up for this test
-        setupModel();
-        setupRenderers();
-        setupTree(true);
-        UIData data = (UIData) component;
-
-        // Set up our fake request parameters (no command invocations)
-        Map params = new HashMap();
-        params.put("data:3:input", "input3A");
-        params.put("data:4:input", "bad");
-        params.put("data:5:input", "input5");
-        params.put("data:6:input", "bad");
-        params.put("data:7:input", "input7B");
-        MockExternalContext econtext =
-                (MockExternalContext) facesContext.getExternalContext();
-        econtext.setRequestParameterMap(params);
-
-        // Simulate the Request Processing Lifecycle
-        TestDataActionListener.trace(null);
-        TestDataValidator.trace(null);
-        TestDataValueChangeListener.trace(null);
-        UIViewRoot root = (UIViewRoot) data.getParent();
-
-        //   APPLY REQUEST VALUES
-        root.processDecodes(facesContext);
-        assertEquals("", TestDataActionListener.trace());
-        assertEquals("", TestDataValidator.trace());
-        assertEquals("", TestDataValueChangeListener.trace());
-        checkMessages(0);
-
-        //   PERFORM VALIDATIONS
-        root.processValidators(facesContext);
-        assertEquals("", TestDataActionListener.trace());
-        assertEquals("/data:3:input/input3A" +
-                "/data:4:input/bad/ERROR" +
-                "/data:5:input/input5" +
-                "/data:6:input/bad/ERROR" +
-                "/data:7:input/input7B",
-                TestDataValidator.trace());
-        assertEquals("/data:3:input/input3/input3A" +
-                "/data:7:input/input7/input7B",
-                TestDataValueChangeListener.trace());
-        checkModelInputs(before);
-        checkMessages(2);
-
-        //   UPDATE MODEL VALUES - skipped due to validation errors
-
-        //   RENDER RESPONSE (twice)
-        renderResponse();
-        checkResponse("/javax/faces/component/UIDataTestCase_4.xml");
-        renderResponse();
-        checkResponse("/javax/faces/component/UIDataTestCase_4.xml");
-
-    }
-
-    public void testNestedTablesWithIds() throws Exception {
-        UIData
-                outer = (UIData) component,
-                inner = new UIData();
-        List innerBeans = new ArrayList();
-        for (int i = 0; i < 3; i++) {
-            TestDataBean bean = new TestDataBean();
-            bean.setCommand("innerCommand" + i);
-            bean.setInput("innerInput" + i);
-            bean.setOutput("innerOutput" + i);
-            innerBeans.add(bean);
-        }
-        DataModel innerDataModel = new ListDataModel(innerBeans);
-
-        // set up the model for the outer table.
-        setupModel();
-
-        // set up the tree for the outer data table
-        UIViewRoot root = facesContext.getApplication().getViewHandler().createView(facesContext, null);
-        root.setRenderKitId(RenderKitFactory.HTML_BASIC_RENDER_KIT);
-        root.setViewId("/view");
-        facesContext.setViewRoot(root);
-        outer.setId("outerData");
-        root.getChildren().add(outer);
-
-        UIColumn column = new UIColumn();
-        column.setId("outerColumn");
-        outer.getChildren().add(column);
-
-
-        component = inner;
-        setupModel();
-        setupTree(column, true, true);
-
-        UIDataHeaderBean hb = new UIDataHeaderBean();
-        facesContext.getExternalContext().getRequestMap().
-                put("hb", hb);
-
-        HashMap foo = new HashMap();
-        foo.put("input", "input");
-        foo.put("output", "output");
-        foo.put("component", "component");
-        request.setAttribute("foo", foo);
-        request.removeAttribute("foo");
-        setupRenderers();
-
-        renderResponse();
-        checkResponse("/javax/faces/component/UIDataTestCase_9_withIds.xml");
-    }
-
-    public void PENDING_FIXME_testNestedTablesWithoutIds() throws Exception {
-        UIData
-                outer = (UIData) component,
-                inner = new UIData();
-        List innerBeans = new ArrayList();
-        for (int i = 0; i < 3; i++) {
-            TestDataBean bean = new TestDataBean();
-            bean.setCommand("innerCommand" + i);
-            bean.setInput("innerInput" + i);
-            bean.setOutput("innerOutput" + i);
-            innerBeans.add(bean);
-        }
-        DataModel innerDataModel = new ListDataModel(innerBeans);
-
-        // set up the model for the outer table.
-        setupModel();
-
-        // set up the tree for the outer data table
-        UIViewRoot root = facesContext.getApplication().getViewHandler().createView(facesContext, null);
-        root.setRenderKitId(RenderKitFactory.HTML_BASIC_RENDER_KIT);
-        root.setViewId("/view");
-        facesContext.setViewRoot(root);
-        root.getChildren().add(outer);
-
-        UIColumn column = new UIColumn();
-        outer.getChildren().add(column);
-
-
-        component = inner;
-        setupModel();
-        setupTree(column, true, false);
-
-        UIDataHeaderBean hb = new UIDataHeaderBean();
-        facesContext.getExternalContext().getRequestMap().
-                put("hb", hb);
-
-        HashMap foo = new HashMap();
-        foo.put("input", "input");
-        foo.put("output", "output");
-        foo.put("component", "component");
-        request.setAttribute("foo", foo);
-        request.removeAttribute("foo");
-        setupRenderers();
-
-        renderResponse();
-        checkResponse("/javax/faces/component/UIDataTestCase_9_withoutIds.xml");
-    }
-
-
-    public void PENDING_FIXME_testValueBindings() {
-
-        super.testValueBindings();
-        UIData test = (UIData) component;
-
-        // "first" property
-        request.setAttribute("foo", new Integer(5));
-        test.setValueBinding("first", application.createValueBinding("#{foo}"));
-        assertEquals(5, test.getFirst());
-        test.setFirst(10);
-        assertEquals(10, test.getFirst());
-        assertNotNull(test.getValueBinding("first"));
-
-        // "rowIndex" property
-        try {
-            request.setAttribute("foo", new Integer(5));
-            test.setValueBinding("rowIndex",
-                    application.createValueBinding("#{foo}"));
-            fail("Should have thrown IllegalArgumentException");
-        } catch (IllegalArgumentException e) {
-            ; // Expected result
-        }
-        request.removeAttribute("foo");
-
-        // "rows" property
-        request.setAttribute("foo", new Integer(5));
-        test.setValueBinding("rows", application.createValueBinding("#{foo}"));
-        assertEquals(5, test.getRows());
-        test.setRows(10);
-        assertEquals(10, test.getRows());
-        assertNotNull(test.getValueBinding("rows"));
-
-        // "value" property
-        request.setAttribute("foo", "bar");
-        test.setValue(null);
-        assertNull(test.getValue());
-        test.setValueBinding("value", application.createValueBinding("#{foo}"));
-        assertNotNull(test.getValueBinding("value"));
-        assertEquals("bar", test.getValue());
-        test.setValue("baz");
-        assertEquals("baz", test.getValue());
-        test.setValue(null);
-        assertEquals("bar", test.getValue());
-        test.setValueBinding("value", null);
-        assertNull(test.getValueBinding("value"));
-        assertNull(test.getValue());
-
-        // "var" property
-        try {
-            request.setAttribute("foo", "bar");
-            test.setValueBinding("var",
-                    application.createValueBinding("#{foo}"));
-            fail("Should have thrown IllegalArgumentException");
-        } catch (IllegalArgumentException e) {
-            ; // Expected result
-        }
-        request.removeAttribute("foo");
-
-    }
-
-
-    // --------------------------------------------------------- Support Methods
-
-
-    // Check that the per-row local values of the input component are correct
-
-    protected void checkLocalValues(String values[]) {
-
-        UIData data = (UIData) component;
-        int first = data.getFirst();
-        for (int i = 0; i < values.length; i++) {
-            data.setRowIndex(i + first);
-            assertTrue("Row " + (i + first) + " available",
-                    data.isRowAvailable());
-            UIInput input = (UIInput) data.findComponent("input");
-            assertNotNull("Row " + (i + first) + " input exists", input);
-            assertEquals("Row " + (i + first) + " input clientId",
-                    "data:" + (i + first) + ":input",
-                    input.getClientId(facesContext));
-            assertEquals("Row " + (i + first) + " input localValue",
-                    values[i],
-                    (String) input.getLocalValue());
-        }
-        data.setRowIndex(-1);
-
-    }
-
-    // Check that the per-row submitted values of the input component are correct
-    protected void checkSubmittedValues(String values[]) {
-
-        UIData data = (UIData) component;
-        int first = data.getFirst();
-        for (int i = 0; i < values.length; i++) {
-            data.setRowIndex(i + first);
-            assertTrue("Row " + (i + first) + " available",
-                    data.isRowAvailable());
-            UIInput input = (UIInput) data.findComponent("input");
-            assertNotNull("Row " + (i + first) + " input exists", input);
-            assertEquals("Row " + (i + first) + " input clientId",
-                    "data:" + (i + first) + ":input",
-                    input.getClientId(facesContext));
-            assertEquals("Row " + (i + first) + " input submittedValue",
-                    values[i],
-                    (String) input.getSubmittedValue());
-        }
-        data.setRowIndex(-1);
-
-    }
-
-
-    // Check that the number of queued messages equals the expected count
-    // and that eacdh of them is of severity ERROR
-    protected void checkMessages(int expected) {
-
-        int n = 0;
-        Iterator messages = facesContext.getMessages();
-        while (messages.hasNext()) {
-            FacesMessage message = (FacesMessage) messages.next();
-            assertEquals("Severity == ERROR",
-                    FacesMessage.SEVERITY_ERROR,
-                    message.getSeverity());
-            n++;
-        }
-        assertEquals("expected message count", expected, n);
-
-    }
-
-
-    // Check the current values of the model objects being rendered
-    protected void checkModelInputs(String values[]) {
-
-        for (int i = 0; i < values.length; i++) {
-            TestDataBean bean = (TestDataBean) beans.get(i + 3);
-            assertEquals("correct input value", values[i], bean.getInput());
-        }
-
-    }
-
-
-    // Check that the properties on the specified components are equal
-    protected void checkProperties(UIComponent comp1, UIComponent comp2) {
-
-        super.checkProperties(comp1, comp2);
-        UIData d1 = (UIData) comp1;
-        UIData d2 = (UIData) comp2;
-        assertEquals(d1.getFirst(), d2.getFirst());
-        assertEquals(d1.getRows(), d2.getRows());
-        assertEquals(d1.getVar(), d2.getVar());
-
-    }
-
-
-    // Check the rendered response against the specified golden resource
-    protected void checkResponse(String resource) throws Exception {
-
-        InputStream stream = this.getClass().getResourceAsStream(resource);
-        Reader reader = new InputStreamReader(stream);
-        String response = swriter.getBuffer().toString();
-        int chars = 0;
-        boolean eof = false;
-        boolean errors = false;
-        int lines = 0;
-        while (true) {
-
-            lines++;
-
-            // Read the next line from the response
-            StringBuffer actual = new StringBuffer();
-            while (true) {
-                if (chars >= response.length()) {
-                    eof = true;
-                    break;
-                }
-                char ch = response.charAt(chars++);
-                if (ch == '<') {
-                    actual.append(ch);
-                    break;
-                }
-            }
-            if (eof) {
-                break;
-            }
-            while (true) {
-                if (chars >= response.length()) {
-                    eof = true;
-                    break;
-                }
-                char ch = response.charAt(chars++);
-                actual.append(ch);
-                if (ch == '>') {
-                    break;
-                }
-            }
-            if (eof) {
-                break;
-            }
-
-            // Read the corresponding line from the resource
-            StringBuffer expect = new StringBuffer();
-            while (true) {
-                int ch = reader.read();
-                if (ch < 0) {
-                    eof = true;
-                    break;
-                }
-                if ((char) ch == '<') {
-                    expect.append((char) ch);
-                    break;
-                }
-            }
-            if (eof) {
-                break;
-            }
-            while (true) {
-                int ch = reader.read();
-                if (ch < 0) {
-                    eof = true;
-                    break;
-                }
-                expect.append((char) ch);
-                if ((char) ch == '>') {
-                    break;
-                }
-            }
-            if (eof) {
-                break;
-            }
-
-            // Compare the expected and actual lines
-            if (!expect.toString().equals(actual.toString())) {
-                errors = true;
-                System.err.println("EXP(" + lines + "): " + expect.toString());
-                System.err.println("ACT(" + lines + "): " + actual.toString());
-            }
-
-        }
-
-        reader.close();
-        assertTrue("no golden resource mismatches", !errors);
-
-    }
-
-
-    // Create a pristine component of the type to be used in state holder tests
-    protected UIComponent createComponent() {
-        UIComponent component = new UIData();
-        component.setRendererType(null);
-        return (component);
-    }
-
-
-    // Populate a pristine component to be used in state holder tests
-    protected void populateComponent(UIComponent component) {
-        super.populateComponent(component);
-        UIData d = (UIData) component;
-        d.setFirst(5);
-        d.setRows(10);
-        d.setVar("foo");
-    }
-
-
-    // Render the entire response tree
-    private void renderResponse() throws IOException {
-        swriter.getBuffer().setLength(0);
-        renderResponse(facesContext.getViewRoot());
-    }
-
-
-    // Render the response tree recursively
-    private void renderResponse(UIComponent component) throws IOException {
-        component.encodeBegin(facesContext);
-        if (component.getRendersChildren()) {
-            component.encodeChildren(facesContext);
-        } else {
-            Iterator kids = component.getChildren().iterator();
-            while (kids.hasNext()) {
-                renderResponse((UIComponent) kids.next());
-            }
-        }
-        component.encodeEnd(facesContext);
-    }
-
-    // Set up the UIData properties for an associated DataModel
-    protected void setupModel() throws Exception {
-        UIData data = (UIData) component;
-        data.setFirst(3);
-        data.setRows(5);
-        data.setVar("foo");
-        data.setValue(model);
-        assertNotNull(data.getValue());
-        assertTrue(model == data.getValue());
-    }
-
-
-    // Set up dummy renderers
-    protected void setupRenderers() throws Exception {
-
-        RenderKitFactory renderKitFactory = (RenderKitFactory)
-                FactoryFinder.getFactory(FactoryFinder.RENDER_KIT_FACTORY);
-        RenderKit renderKit =
-                renderKitFactory.getRenderKit(facesContext,
-                        RenderKitFactory.HTML_BASIC_RENDER_KIT);
-        renderKit.addRenderer(UICommand.COMPONENT_FAMILY,
-                "javax.faces.Button", new ButtonRenderer());
-        renderKit.addRenderer(UIData.COMPONENT_FAMILY,
-                "javax.faces.Table", new TableRenderer());
-        renderKit.addRenderer(UIInput.COMPONENT_FAMILY,
-                "javax.faces.Text", new TextRenderer());
-        renderKit.addRenderer(UIOutput.COMPONENT_FAMILY,
-                "javax.faces.Text", new TextRenderer());
-
-    }
-
-    /* If labels == true the tree looks like this
-
-     * root: viewId: /view
-     *
-     *  data: id: data
-     *
-     *    column: id: commandColumn
-     *
-     *      facets
-     *
-     *	      header: id: commandHeader
-     *
-     *	      footer: id: commandFooter
-     *
-     *      command: id: command value: #{foo.command}
-     *               actionListener: TestDataActionListener()
-     *
-     *    column: id: inputColumn
-     *
-     *      facets:
-     *
-     *        header: id: inputHeader
-     *
-     *        footer: id: inputFooter
-     *
-     *      input: id: input value: #{foo.input} validator: TestDataValidator
-     *             valueChangeListener: TestValueChangeListener:
-     *
-     *    column: id: outputColumn
-     *
-     *      facets:
-     *
-     *        header: id: outputHeader
-     *
-     *        header: id: inputHeader
-     *
-     *       output: id: output: value: #{foo.output}
-     *
-     *    column: id: constantColumn
-     *
-     *      facets:
-     *
-     *        header: id: outputHeader
-     *
-     *        header: id: inputHeader
-     *
-     *      constant: id: constant: value: Constant Value
-     *
-     * If labels == false, the tree looks like
-     * root: viewId: /view
-     *
-     *   data: id: data
-     *
-     *     column: id commandColumn
-     *
-     *       facets:
-     *
-     *         header: UICommand id: commandAction actionListener: #{hb.action}
-     *                 value: Command Action
-     *
-     *         footer: UIOutput id: commandFooter
-     *
-     *       command: id: command value: #{foo.command}
-     *                actionListener: TestDataActionListener()
-     *
-     *     column: id inputColumn
-     *
-     *       facets:
-     *
-     *         header: UIInput id: hinput validator: #{hb.validate}
-     *
-     *                 value: #{hb.value}
-     *
-     *         footer: UIOutput id: inputFooter
-     *
-     *       input: id: input value: #{foo.input} validator: TestDataValidator
-     *              valueChangeListener: TestValueChangeListener:
-     *
-     *     column: id: outputColumn
-     *
-     *       facets:
-     *
-     *         header: id: outputHeader
-     *
-     *         header: id: inputHeader
-     *
-     *       output: id: output: value: #{foo.output}
-     *
-     *    column: id: constantColumn
-     *
-     *      facets:
-     *
-     *        header: id: outputHeader
-     *
-     *        header: id: inputHeader
-     *
-     *      constant: id: constant: value: Constant Value
-     *
-     *
-     *
-     */
-
-    // Set up the component tree corresponding to the data model
-    // labels==true - header facet of command and input contain labels
-    // labels==false - header facet of command and input contain controls
-
-    protected UICommand setupTree(boolean labels) throws Exception {
-        return setupTree(null, labels, true);
-    }
-
-    // Set up the component tree corresponding to the data model
-    // labels==true - header facet of command and input contain labels
-    // labels==false - header facet of command and input contain controls
-    // ids==true hard coded ids
-    // ids==false no ids
-    protected UICommand setupTree(UIComponent root, boolean labels, boolean ids) throws Exception {
-
-        // Attach our UIData to the view root
-        UIData data = (UIData) component;
-        if (ids) {
-            data.setId("data");
-        }
-        if (null == root) {
-            UIViewRoot viewRoot = facesContext.getApplication().getViewHandler().createView(facesContext, null);
-            viewRoot.setRenderKitId(RenderKitFactory.HTML_BASIC_RENDER_KIT);
-            viewRoot.setViewId("/view");
-            facesContext.setViewRoot(viewRoot);
-            root = viewRoot;
-        }
-        root.getChildren().add(data);
-
-        // Set up columns with facets and fields for each property
-        UIColumn column;
-        UICommand command;
-        UIInput input;
-        UIOutput output;
-        UIOutput label;
-        UIOutput constant;
-        UICommand hcommand;
-        UIInput hinput;
-
-        column = new UIColumn();
-        if (ids) {
-            column.setId("commandColumn");
-        }
-        if (labels) {
-            label = new UIOutput();
-            if (ids) {
-                label.setId("commandHeader");
-            }
-            label.setValue("Command Header");
-            column.getFacets().put("header", label);
-        } else {
-            hcommand = new UICommand();
-            if (ids) {
-                hcommand.setId("hcommand");
-            }
-            hcommand.setImmediate(true);
-            hcommand.setActionListener
-                    (application.createMethodBinding
-                            ("#{hb.action}",
-                                    new Class[]{ActionEvent.class}));
-            hcommand.setValue("Command Action");
-            column.getFacets().put("header", hcommand);
-        }
-        label = new UIOutput();
-        if (ids) {
-            label.setId("commandFooter");
-        }
-        label.setValue("Command Footer");
-        column.getFacets().put("footer", label);
-        command = new UICommand();
-        if (ids) {
-            command.setId("command");
-        }
-        command.setValueBinding("value",
-                application.createValueBinding("#{foo.command}"));
-        column.getChildren().add(command);
-        data.getChildren().add(column);
-        command.addActionListener(new TestDataActionListener());
-
-        column = new UIColumn();
-        if (ids) {
-            column.setId("inputColumn");
-        }
-        if (labels) {
-            label = new UIOutput();
-            if (ids) {
-                label.setId("inputHeader");
-            }
-            label.setValue("Input Header");
-            column.getFacets().put("header", label);
-        } else {
-            hinput = new UIInput();
-            if (ids) {
-                hinput.setId("hinput");
-            }
-            hinput.setValidator
-                    (application.createMethodBinding
-                            ("#{hb.validate}",
-                                    new Class[]{FacesContext.class,
-                                            UIComponent.class,
-                                            Object.class}));
-            hinput.setValueBinding
-                    ("value",
-                            application.createValueBinding("#{hb.value}"));
-            column.getFacets().put("header", hinput);
-        }
-        label = new UIOutput();
-        if (ids) {
-            label.setId("inputFooter");
-        }
-        label.setValue("Input Footer");
-        column.getFacets().put("footer", label);
-        input = new UIInput();
-        if (ids) {
-            input.setId("input");
-        }
-        input.setValueBinding("value",
-                application.createValueBinding("#{foo.input}"));
-        column.getChildren().add(input);
-        data.getChildren().add(column);
-        input.addValidator(new TestDataValidator());
-        input.addValueChangeListener(new TestDataValueChangeListener());
-
-        column = new UIColumn();
-        if (ids) {
-            column.setId("outputColumn");
-        }
-        label = new UIOutput();
-        if (ids) {
-            label.setId("outputHeader");
-        }
-        label.setValue("Output Header");
-        column.getFacets().put("header", label);
-        label = new UIOutput();
-        if (ids) {
-            label.setId("outputFooter");
-        }
-        label.setValue("Output Footer");
-        column.getFacets().put("footer", label);
-        output = new UIOutput();
-        if (ids) {
-            output.setId("output");
-        }
-        output.setValueBinding("value",
-                application.createValueBinding("#{foo.output}"));
-        column.getChildren().add(output);
-        data.getChildren().add(column);
-
-        column = new UIColumn();
-        if (ids) {
-            column.setId("constantColumn");
-        }
-        label = new UIOutput();
-        if (ids) {
-            label.setId("constantHeader");
-        }
-        label.setValue("Constant Header");
-        column.getFacets().put("header", label);
-        label = new UIOutput();
-        if (ids) {
-            label.setId("constantFooter");
-        }
-        label.setValue("Constant Footer");
-        column.getFacets().put("footer", label);
-        constant = new UIOutput();
-        if (ids) {
-            constant.setId("constant");
-        }
-        constant.setValue("Constant Value");
-        column.getChildren().add(constant);
-        data.getChildren().add(column);
-
-        return command;
-
-    }
-
-    // Set up the component tree corresponding to the data model
-    // labels==true - header facet of command and input contain labels
-    // labels==false - header facet of command and input contain controls
-    // ids==true hard coded ids
-    // ids==false no ids
-    protected UICommand setupTree2(UIComponent root,
-                                   boolean labels,
-                                   boolean ids) throws Exception {
-
-        // Attach our UIData to the view root
-        UIData data = (UIData) component;
-        if (ids) {
-            data.setId("data");
-        }
-        if (null == root) {
-            UIViewRoot viewRoot = facesContext.getApplication().getViewHandler()
-                    .createView(facesContext, null);
-            viewRoot.setRenderKitId(RenderKitFactory.HTML_BASIC_RENDER_KIT);
-            viewRoot.setViewId("/view");
-            facesContext.setViewRoot(viewRoot);
-            root = viewRoot;
-        }
-        root.getChildren().add(data);
-
-        // setup a UIData-level header and footer
-        UIOutput header = new UIOutput();
-        header.setId("uidataHeader");
-        data.getFacets().put("header", header);
-        header.getClientId(facesContext);
-        UIOutput footer = new UIOutput();
-        footer.setId("uidataFooter");
-        data.getFacets().put("footer", footer);
-        footer.getClientId(facesContext);
-
-        // Set up columns with facets and fields for each property
-        UIColumn column;
-        UICommand command;
-        UIInput input;
-        UIOutput output;
-        UIOutput label;
-        UIOutput constant;
-        UICommand hcommand;
-        UIInput hinput;
-
-        column = new UIColumn();
-        if (ids) {
-            column.setId("commandColumn");
-        }
-        if (labels) {
-            label = new UIOutput();
-            if (ids) {
-                label.setId("commandHeader");
-            }
-            label.setValue("Command Header");
-            column.getFacets().put("header", label);
-        } else {
-            hcommand = new UICommand();
-            if (ids) {
-                hcommand.setId("hcommand");
-            }
-            hcommand.setImmediate(true);
-            hcommand.setActionListener
-                    (application.createMethodBinding
-                            ("#{hb.action}",
-                                    new Class[]{ActionEvent.class}));
-            hcommand.setValue("Command Action");
-            column.getFacets().put("header", hcommand);
-        }
-        label = new UIOutput();
-        if (ids) {
-            label.setId("commandFooter");
-        }
-        label.setValue("Command Footer");
-        column.getFacets().put("footer", label);
-        command = new UICommand();
-        if (ids) {
-            command.setId("command");
-        }
-        command.setValueBinding("value",
-                application.createValueBinding("#{foo.command}"));
-        column.getChildren().add(command);
-        data.getChildren().add(column);
-        command.addActionListener(new TestDataActionListener());
-
-        column = new UIColumn();
-        if (ids) {
-            column.setId("inputColumn");
-        }
-        if (labels) {
-            label = new UIOutput();
-            if (ids) {
-                label.setId("inputHeader");
-            }
-            label.setValue("Input Header");
-            column.getFacets().put("header", label);
-        } else {
-            hinput = new UIInput();
-            if (ids) {
-                hinput.setId("hinput");
-            }
-            hinput.setValidator
-                    (application.createMethodBinding
-                            ("#{hb.validate}",
-                                    new Class[]{FacesContext.class,
-                                            UIComponent.class,
-                                            Object.class}));
-            hinput.setValueBinding
-                    ("value",
-                            application.createValueBinding("#{hb.value}"));
-            column.getFacets().put("header", hinput);
-        }
-        label = new UIOutput();
-        if (ids) {
-            label.setId("inputFooter");
-        }
-        label.setValue("Input Footer");
-        column.getFacets().put("footer", label);
-        input = new UIInput();
-        if (ids) {
-            input.setId("input");
-        }
-        input.setValueBinding("value",
-                application.createValueBinding("#{foo.input}"));
-        column.getChildren().add(input);
-        data.getChildren().add(column);
-        input.addValidator(new TestDataValidator());
-        input.addValueChangeListener(new TestDataValueChangeListener());
-
-        column = new UIColumn();
-        if (ids) {
-            column.setId("outputColumn");
-        }
-        label = new UIOutput();
-        if (ids) {
-            label.setId("outputHeader");
-        }
-        label.setValue("Output Header");
-        column.getFacets().put("header", label);
-        label = new UIOutput();
-        if (ids) {
-            label.setId("outputFooter");
-        }
-        label.setValue("Output Footer");
-        column.getFacets().put("footer", label);
-        output = new UIOutput();
-        if (ids) {
-            output.setId("output");
-        }
-        output.setValueBinding("value",
-                application.createValueBinding("#{foo.output}"));
-        column.getChildren().add(output);
-        data.getChildren().add(column);
-
-        column = new UIColumn();
-        if (ids) {
-            column.setId("constantColumn");
-        }
-        label = new UIOutput();
-        if (ids) {
-            label.setId("constantHeader");
-        }
-        label.setValue("Constant Header");
-        column.getFacets().put("header", label);
-        label = new UIOutput();
-        if (ids) {
-            label.setId("constantFooter");
-        }
-        label.setValue("Constant Footer");
-        column.getFacets().put("footer", label);
-        constant = new UIOutput();
-        if (ids) {
-            constant.setId("constant");
-        }
-        constant.setValue("Constant Value");
-        column.getChildren().add(constant);
-        data.getChildren().add(column);
-
-        return command;
-
-    }
-
-
-    // --------------------------------------------------------- Private Classes
-
-
-    // "Button" Renderer
-
-    class ButtonRenderer extends Renderer {
-
-        public void decode(FacesContext context, UIComponent component) {
-
-            if ((context == null) || (component == null)) {
-                throw new NullPointerException();
-            }
-
-            if (!(component instanceof ActionSource)) {
-                return;
-            }
-            String clientId = component.getClientId(context);
-            Map params = context.getExternalContext().getRequestParameterMap();
-            if (params.containsKey(clientId)) {
-                component.queueEvent(new ActionEvent(component));
-            }
-
-        }
-
-        public void encodeBegin(FacesContext context, UIComponent component)
-                throws IOException {
-
-            if ((context == null) || (component == null)) {
-                throw new NullPointerException();
-            }
-            ResponseWriter writer = context.getResponseWriter();
-            writer.write
-                    ("<button id='" + component.getClientId(context) + "' value='" +
-                            ((UICommand) component).getValue() + "'/>\n");
-
-        }
-
-        public void encodeChildren(FacesContext context, UIComponent component)
-                throws IOException {
-
-            if ((context == null) || (component == null)) {
-                throw new NullPointerException();
-            }
-
-        }
-
-        public void encodeEnd(FacesContext context, UIComponent component)
-                throws IOException {
-
-            if ((context == null) || (component == null)) {
-                throw new NullPointerException();
-            }
-
-        }
-
-    }
-
-
-    // "Table" Renderer
-    class TableRenderer extends Renderer {
-
-        public boolean getRendersChildren() {
-            return true;
-        }
-
-        public void decode(FacesContext context, UIComponent component) {
-
-            if ((context == null) || (component == null)) {
-                throw new NullPointerException();
-            }
-
-        }
-
-        public void encodeBegin(FacesContext context, UIComponent component)
-                throws IOException {
-
-            if ((context == null) || (component == null)) {
-                throw new NullPointerException();
-            }
-            UIData data = (UIData) component;
-            ResponseWriter writer = context.getResponseWriter();
-
-            // Render the beginning of the table
-            data.setRowIndex(-1);
-            String tableId = data.getClientId(context);
-            writer.write
-                    ("<table id='" + tableId + "'>\n");
-            UIComponent header = (UIComponent) data.getFacet("header");
-            if (header != null) {
-                writer.write
-                        ("<table-header id='" + header.getClientId(context) +
-                                "'>\n");
-                encodeRecursive(context, header);
-                writer.write("</table-header>\n");
-            }
-
-            // Render the column headers
-
-
-        }
-
-        public void encodeChildren(FacesContext context, UIComponent component)
-                throws IOException {
-
-            if ((context == null) || (component == null)) {
-                throw new NullPointerException();
-            }
-            UIData data = (UIData) component;
-            ResponseWriter writer = context.getResponseWriter();
-            Iterator kids;
-
-            // Render the column headers
-            kids = data.getChildren().iterator();
-            data.setRowIndex(-1);
-            while (kids.hasNext()) {
-                UIComponent kid = (UIComponent) kids.next();
-                if (!(kid instanceof UIColumn)) {
-                    continue;
-                }
-                UIColumn column = (UIColumn) kid;
-                UIComponent header = column.getFacet("header");
-                if (header != null) {
-                    String headerClientId = header.getClientId(context);
-                    writer.write("<column-header id='" +
-                            headerClientId + "'>\n");
-                    encodeRecursive(context, header);
-                    writer.write("</column-header>\n");
-                }
-            }
-
-            // Render the individual rows
-            int done = 0;
-            int rows = data.getRows();
-            int rowId = data.getFirst() - 1;
-            while (true) {
-                if ((rows > 0) && (++done > rows)) {
-                    break;
-                }
-                data.setRowIndex(++rowId);
-                if (!data.isRowAvailable()) {
-                    break;
-                }
-                writer.write("<table-row rowId='" + rowId + "'>\n");
-                kids = data.getChildren().iterator();
-                while (kids.hasNext()) {
-                    UIComponent kid = (UIComponent) kids.next();
-                    if (!(kid instanceof UIColumn)) {
-                        continue;
-                    }
-                    UIColumn column = (UIColumn) kid;
-                    String columnClientId = column.getClientId(context);
-                    writer.write("<column id='" + columnClientId +
-                            "'>\n");
-                    encodeRecursive(context, column);
-                    writer.write("</column>\n");
-                }
-                writer.write("</table-row>\n");
-            }
-
-            // Render the column footers
-            kids = data.getChildren().iterator();
-            data.setRowIndex(-1);
-            while (kids.hasNext()) {
-                UIComponent kid = (UIComponent) kids.next();
-                if (!(kid instanceof UIColumn)) {
-                    continue;
-                }
-                UIColumn column = (UIColumn) kid;
-                UIComponent footer = column.getFacet("footer");
-                if (footer != null) {
-                    String footerClientId = footer.getClientId(context);
-                    writer.write("<column-footer id='" +
-                            footerClientId + "'>\n");
-                    encodeRecursive(context, footer);
-                    writer.write("</column-footer>\n");
-                }
-            }
-
-        }
-
-        public void encodeEnd(FacesContext context, UIComponent component)
-                throws IOException {
-
-            if ((context == null) || (component == null)) {
-                throw new NullPointerException();
-            }
-            UIData data = (UIData) component;
-            ResponseWriter writer = context.getResponseWriter();
-
-            // Render the ending of the table
-            UIComponent footer = (UIComponent) data.getFacet("footer");
-            if (footer != null) {
-                writer.write
-                        ("<table-footer id='" + footer.getClientId(context) +
-                                "'>\n");
-                encodeRecursive(context, footer);
-                writer.write("</table-footer>\n");
-            }
-            writer.write("</table>\n");
-
-        }
-
-        private void encodeRecursive(FacesContext context,
-                                     UIComponent component)
-                throws IOException {
-
-            component.encodeBegin(context);
-            if (component.getRendersChildren()) {
-                component.encodeChildren(context);
-            } else {
-                Iterator kids = component.getChildren().iterator();
-                while (kids.hasNext()) {
-                    UIComponent kid = (UIComponent) kids.next();
-                    encodeRecursive(context, kid);
-                }
-            }
-            component.encodeEnd(context);
-        }
-
-
-    }
-
-
-    // "Text" Renderer
-    // NOTE - No conversion processing, assumes only Strings!
-    class TextRenderer extends Renderer {
-
-        public void decode(FacesContext context, UIComponent component) {
-
-            if ((context == null) || (component == null)) {
-                throw new NullPointerException();
-            }
-
-            if (!(component instanceof UIInput)) {
-                return;
-            }
-            UIInput input = (UIInput) component;
-            String clientId = input.getClientId(context);
-
-            // Decode incoming request parameters
-            Map params = context.getExternalContext().getRequestParameterMap();
-            if (params.containsKey(clientId)) {
-                input.setSubmittedValue((String) params.get(clientId));
-            }
-        }
-
-        public void encodeBegin(FacesContext context, UIComponent component)
-                throws IOException {
-
-            if ((context == null) || (component == null)) {
-                throw new NullPointerException();
-            }
-
-            Object value;
-            if (component instanceof UIInput) {
-                UIInput input = (UIInput) component;
-                value = input.getSubmittedValue();
-                if (value == null) {
-                    value = input.getValue();
-                }
-            } else {
-                value = ((UIOutput) component).getValue();
-            }
-
-            ResponseWriter writer = context.getResponseWriter();
-            writer.write
-                    ("<text id='" + component.getClientId(context) + "' value='" +
-                            value + "'/>\n");
-
-        }
-
-        public void encodeChildren(FacesContext context, UIComponent component)
-                throws IOException {
-
-            if ((context == null) || (component == null)) {
-                throw new NullPointerException();
-            }
-
-        }
-
-        public void encodeEnd(FacesContext context, UIComponent component)
-                throws IOException {
-
-            if ((context == null) || (component == null)) {
-                throw new NullPointerException();
-            }
-
-        }
-
-    }
-
-
-}
diff --git a/jsf-api/src/test/java/javax/faces/component/UIDataTestCase_1.xml b/jsf-api/src/test/java/javax/faces/component/UIDataTestCase_1.xml
deleted file mode 100644
index dff3f1f..0000000
--- a/jsf-api/src/test/java/javax/faces/component/UIDataTestCase_1.xml
+++ /dev/null
@@ -1,96 +0,0 @@
-<table id='data'>
-<column-header id='data:commandHeader'>
-<text id='data:commandHeader' value='Command Header'/>
-</column-header>
-<column-header id='data:inputHeader'>
-<text id='data:inputHeader' value='Input Header'/>
-</column-header>
-<column-header id='data:outputHeader'>
-<text id='data:outputHeader' value='Output Header'/>
-</column-header>
-<column-header id='data:constantHeader'>
-<text id='data:constantHeader' value='Constant Header'/>
-</column-header>
-<table-row rowId='3'>
-<column id='data:3:commandColumn'>
-<button id='data:3:command' value='command3'/>
-</column>
-<column id='data:3:inputColumn'>
-<text id='data:3:input' value='input3'/>
-</column>
-<column id='data:3:outputColumn'>
-<text id='data:3:output' value='output3'/>
-</column>
-<column id='data:3:constantColumn'>
-<text id='data:3:constant' value='Constant Value'/>
-</column>
-</table-row>
-<table-row rowId='4'>
-<column id='data:4:commandColumn'>
-<button id='data:4:command' value='command4'/>
-</column>
-<column id='data:4:inputColumn'>
-<text id='data:4:input' value='input4'/>
-</column>
-<column id='data:4:outputColumn'>
-<text id='data:4:output' value='output4'/>
-</column>
-<column id='data:4:constantColumn'>
-<text id='data:4:constant' value='Constant Value'/>
-</column>
-</table-row>
-<table-row rowId='5'>
-<column id='data:5:commandColumn'>
-<button id='data:5:command' value='command5'/>
-</column>
-<column id='data:5:inputColumn'>
-<text id='data:5:input' value='input5'/>
-</column>
-<column id='data:5:outputColumn'>
-<text id='data:5:output' value='output5'/>
-</column>
-<column id='data:5:constantColumn'>
-<text id='data:5:constant' value='Constant Value'/>
-</column>
-</table-row>
-<table-row rowId='6'>
-<column id='data:6:commandColumn'>
-<button id='data:6:command' value='command6'/>
-</column>
-<column id='data:6:inputColumn'>
-<text id='data:6:input' value='input6'/>
-</column>
-<column id='data:6:outputColumn'>
-<text id='data:6:output' value='output6'/>
-</column>
-<column id='data:6:constantColumn'>
-<text id='data:6:constant' value='Constant Value'/>
-</column>
-</table-row>
-<table-row rowId='7'>
-<column id='data:7:commandColumn'>
-<button id='data:7:command' value='command7'/>
-</column>
-<column id='data:7:inputColumn'>
-<text id='data:7:input' value='input7'/>
-</column>
-<column id='data:7:outputColumn'>
-<text id='data:7:output' value='output7'/>
-</column>
-<column id='data:7:constantColumn'>
-<text id='data:7:constant' value='Constant Value'/>
-</column>
-</table-row>
-<column-footer id='data:commandFooter'>
-<text id='data:commandFooter' value='Command Footer'/>
-</column-footer>
-<column-footer id='data:inputFooter'>
-<text id='data:inputFooter' value='Input Footer'/>
-</column-footer>
-<column-footer id='data:outputFooter'>
-<text id='data:outputFooter' value='Output Footer'/>
-</column-footer>
-<column-footer id='data:constantFooter'>
-<text id='data:constantFooter' value='Constant Footer'/>
-</column-footer>
-</table>
diff --git a/jsf-api/src/test/java/javax/faces/component/UIDataTestCase_2.xml b/jsf-api/src/test/java/javax/faces/component/UIDataTestCase_2.xml
deleted file mode 100644
index ddadcf2..0000000
--- a/jsf-api/src/test/java/javax/faces/component/UIDataTestCase_2.xml
+++ /dev/null
@@ -1,96 +0,0 @@
-<table id='data'>
-<column-header id='data:commandHeader'>
-<text id='data:commandHeader' value='Command Header'/>
-</column-header>
-<column-header id='data:inputHeader'>
-<text id='data:inputHeader' value='Input Header'/>
-</column-header>
-<column-header id='data:outputHeader'>
-<text id='data:outputHeader' value='Output Header'/>
-</column-header>
-<column-header id='data:constantHeader'>
-<text id='data:constantHeader' value='Constant Header'/>
-</column-header>
-<table-row rowId='3'>
-<column id='data:3:commandColumn'>
-<button id='data:3:command' value='command3'/>
-</column>
-<column id='data:3:inputColumn'>
-<text id='data:3:input' value='input3'/>
-</column>
-<column id='data:3:outputColumn'>
-<text id='data:3:output' value='output3'/>
-</column>
-<column id='data:3:constantColumn'>
-<text id='data:3:constant' value='Constant Value'/>
-</column>
-</table-row>
-<table-row rowId='4'>
-<column id='data:4:commandColumn'>
-<button id='data:4:command' value='command4A'/>
-</column>
-<column id='data:4:inputColumn'>
-<text id='data:4:input' value='input4B'/>
-</column>
-<column id='data:4:outputColumn'>
-<text id='data:4:output' value='output4C'/>
-</column>
-<column id='data:4:constantColumn'>
-<text id='data:4:constant' value='Constant Value'/>
-</column>
-</table-row>
-<table-row rowId='5'>
-<column id='data:5:commandColumn'>
-<button id='data:5:command' value='command5'/>
-</column>
-<column id='data:5:inputColumn'>
-<text id='data:5:input' value='input5'/>
-</column>
-<column id='data:5:outputColumn'>
-<text id='data:5:output' value='output5'/>
-</column>
-<column id='data:5:constantColumn'>
-<text id='data:5:constant' value='Constant Value'/>
-</column>
-</table-row>
-<table-row rowId='6'>
-<column id='data:6:commandColumn'>
-<button id='data:6:command' value='command6D'/>
-</column>
-<column id='data:6:inputColumn'>
-<text id='data:6:input' value='input6E'/>
-</column>
-<column id='data:6:outputColumn'>
-<text id='data:6:output' value='output6F'/>
-</column>
-<column id='data:6:constantColumn'>
-<text id='data:6:constant' value='Constant Value'/>
-</column>
-</table-row>
-<table-row rowId='7'>
-<column id='data:7:commandColumn'>
-<button id='data:7:command' value='command7'/>
-</column>
-<column id='data:7:inputColumn'>
-<text id='data:7:input' value='input7'/>
-</column>
-<column id='data:7:outputColumn'>
-<text id='data:7:output' value='output7'/>
-</column>
-<column id='data:7:constantColumn'>
-<text id='data:7:constant' value='Constant Value'/>
-</column>
-</table-row>
-<column-footer id='data:commandFooter'>
-<text id='data:commandFooter' value='Command Footer'/>
-</column-footer>
-<column-footer id='data:inputFooter'>
-<text id='data:inputFooter' value='Input Footer'/>
-</column-footer>
-<column-footer id='data:outputFooter'>
-<text id='data:outputFooter' value='Output Footer'/>
-</column-footer>
-<column-footer id='data:constantFooter'>
-<text id='data:constantFooter' value='Constant Footer'/>
-</column-footer>
-</table>
diff --git a/jsf-api/src/test/java/javax/faces/component/UIDataTestCase_3.xml b/jsf-api/src/test/java/javax/faces/component/UIDataTestCase_3.xml
deleted file mode 100644
index 184ebc1..0000000
--- a/jsf-api/src/test/java/javax/faces/component/UIDataTestCase_3.xml
+++ /dev/null
@@ -1,96 +0,0 @@
-<table id='data'>
-<column-header id='data:commandHeader'>
-<text id='data:commandHeader' value='Command Header'/>
-</column-header>
-<column-header id='data:inputHeader'>
-<text id='data:inputHeader' value='Input Header'/>
-</column-header>
-<column-header id='data:outputHeader'>
-<text id='data:outputHeader' value='Output Header'/>
-</column-header>
-<column-header id='data:constantHeader'>
-<text id='data:constantHeader' value='Constant Header'/>
-</column-header>
-<table-row rowId='3'>
-<column id='data:3:commandColumn'>
-<button id='data:3:command' value='command3'/>
-</column>
-<column id='data:3:inputColumn'>
-<text id='data:3:input' value='input3'/>
-</column>
-<column id='data:3:outputColumn'>
-<text id='data:3:output' value='output3'/>
-</column>
-<column id='data:3:constantColumn'>
-<text id='data:3:constant' value='Constant Value'/>
-</column>
-</table-row>
-<table-row rowId='4'>
-<column id='data:4:commandColumn'>
-<button id='data:4:command' value='command4'/>
-</column>
-<column id='data:4:inputColumn'>
-<text id='data:4:input' value='input4A'/>
-</column>
-<column id='data:4:outputColumn'>
-<text id='data:4:output' value='output4'/>
-</column>
-<column id='data:4:constantColumn'>
-<text id='data:4:constant' value='Constant Value'/>
-</column>
-</table-row>
-<table-row rowId='5'>
-<column id='data:5:commandColumn'>
-<button id='data:5:command' value='command5'/>
-</column>
-<column id='data:5:inputColumn'>
-<text id='data:5:input' value='input5'/>
-</column>
-<column id='data:5:outputColumn'>
-<text id='data:5:output' value='output5'/>
-</column>
-<column id='data:5:constantColumn'>
-<text id='data:5:constant' value='Constant Value'/>
-</column>
-</table-row>
-<table-row rowId='6'>
-<column id='data:6:commandColumn'>
-<button id='data:6:command' value='command6'/>
-</column>
-<column id='data:6:inputColumn'>
-<text id='data:6:input' value='input6B'/>
-</column>
-<column id='data:6:outputColumn'>
-<text id='data:6:output' value='output6'/>
-</column>
-<column id='data:6:constantColumn'>
-<text id='data:6:constant' value='Constant Value'/>
-</column>
-</table-row>
-<table-row rowId='7'>
-<column id='data:7:commandColumn'>
-<button id='data:7:command' value='command7'/>
-</column>
-<column id='data:7:inputColumn'>
-<text id='data:7:input' value='input7'/>
-</column>
-<column id='data:7:outputColumn'>
-<text id='data:7:output' value='output7'/>
-</column>
-<column id='data:7:constantColumn'>
-<text id='data:7:constant' value='Constant Value'/>
-</column>
-</table-row>
-<column-footer id='data:commandFooter'>
-<text id='data:commandFooter' value='Command Footer'/>
-</column-footer>
-<column-footer id='data:inputFooter'>
-<text id='data:inputFooter' value='Input Footer'/>
-</column-footer>
-<column-footer id='data:outputFooter'>
-<text id='data:outputFooter' value='Output Footer'/>
-</column-footer>
-<column-footer id='data:constantFooter'>
-<text id='data:constantFooter' value='Constant Footer'/>
-</column-footer>
-</table>
diff --git a/jsf-api/src/test/java/javax/faces/component/UIDataTestCase_4.xml b/jsf-api/src/test/java/javax/faces/component/UIDataTestCase_4.xml
deleted file mode 100644
index 2566e8b..0000000
--- a/jsf-api/src/test/java/javax/faces/component/UIDataTestCase_4.xml
+++ /dev/null
@@ -1,96 +0,0 @@
-<table id='data'>
-<column-header id='data:commandHeader'>
-<text id='data:commandHeader' value='Command Header'/>
-</column-header>
-<column-header id='data:inputHeader'>
-<text id='data:inputHeader' value='Input Header'/>
-</column-header>
-<column-header id='data:outputHeader'>
-<text id='data:outputHeader' value='Output Header'/>
-</column-header>
-<column-header id='data:constantHeader'>
-<text id='data:constantHeader' value='Constant Header'/>
-</column-header>
-<table-row rowId='3'>
-<column id='data:3:commandColumn'>
-<button id='data:3:command' value='command3'/>
-</column>
-<column id='data:3:inputColumn'>
-<text id='data:3:input' value='input3A'/>
-</column>
-<column id='data:3:outputColumn'>
-<text id='data:3:output' value='output3'/>
-</column>
-<column id='data:3:constantColumn'>
-<text id='data:3:constant' value='Constant Value'/>
-</column>
-</table-row>
-<table-row rowId='4'>
-<column id='data:4:commandColumn'>
-<button id='data:4:command' value='command4'/>
-</column>
-<column id='data:4:inputColumn'>
-<text id='data:4:input' value='bad'/>
-</column>
-<column id='data:4:outputColumn'>
-<text id='data:4:output' value='output4'/>
-</column>
-<column id='data:4:constantColumn'>
-<text id='data:4:constant' value='Constant Value'/>
-</column>
-</table-row>
-<table-row rowId='5'>
-<column id='data:5:commandColumn'>
-<button id='data:5:command' value='command5'/>
-</column>
-<column id='data:5:inputColumn'>
-<text id='data:5:input' value='input5'/>
-</column>
-<column id='data:5:outputColumn'>
-<text id='data:5:output' value='output5'/>
-</column>
-<column id='data:5:constantColumn'>
-<text id='data:5:constant' value='Constant Value'/>
-</column>
-</table-row>
-<table-row rowId='6'>
-<column id='data:6:commandColumn'>
-<button id='data:6:command' value='command6'/>
-</column>
-<column id='data:6:inputColumn'>
-<text id='data:6:input' value='bad'/>
-</column>
-<column id='data:6:outputColumn'>
-<text id='data:6:output' value='output6'/>
-</column>
-<column id='data:6:constantColumn'>
-<text id='data:6:constant' value='Constant Value'/>
-</column>
-</table-row>
-<table-row rowId='7'>
-<column id='data:7:commandColumn'>
-<button id='data:7:command' value='command7'/>
-</column>
-<column id='data:7:inputColumn'>
-<text id='data:7:input' value='input7B'/>
-</column>
-<column id='data:7:outputColumn'>
-<text id='data:7:output' value='output7'/>
-</column>
-<column id='data:7:constantColumn'>
-<text id='data:7:constant' value='Constant Value'/>
-</column>
-</table-row>
-<column-footer id='data:commandFooter'>
-<text id='data:commandFooter' value='Command Footer'/>
-</column-footer>
-<column-footer id='data:inputFooter'>
-<text id='data:inputFooter' value='Input Footer'/>
-</column-footer>
-<column-footer id='data:outputFooter'>
-<text id='data:outputFooter' value='Output Footer'/>
-</column-footer>
-<column-footer id='data:constantFooter'>
-<text id='data:constantFooter' value='Constant Footer'/>
-</column-footer>
-</table>
diff --git a/jsf-api/src/test/java/javax/faces/component/UIDataTestCase_5.xml b/jsf-api/src/test/java/javax/faces/component/UIDataTestCase_5.xml
deleted file mode 100644
index c660cbf..0000000
--- a/jsf-api/src/test/java/javax/faces/component/UIDataTestCase_5.xml
+++ /dev/null
@@ -1,68 +0,0 @@
-<table id='data'>
-<column-header id='data:commandHeader'>
-<text id='data:commandHeader' value='Command Header'/>
-</column-header>
-<column-header id='data:inputHeader'>
-<text id='data:inputHeader' value='Input Header'/>
-</column-header>
-<column-header id='data:outputHeader'>
-<text id='data:outputHeader' value='Output Header'/>
-</column-header>
-<column-header id='data:constantHeader'>
-<text id='data:constantHeader' value='Constant Header'/>
-</column-header>
-<table-row rowId='7'>
-<column id='data:7:commandColumn'>
-<button id='data:7:command' value='command7'/>
-</column>
-<column id='data:7:inputColumn'>
-<text id='data:7:input' value='input7'/>
-</column>
-<column id='data:7:outputColumn'>
-<text id='data:7:output' value='output7'/>
-</column>
-<column id='data:7:constantColumn'>
-<text id='data:7:constant' value='Constant Value'/>
-</column>
-</table-row>
-<table-row rowId='8'>
-<column id='data:8:commandColumn'>
-<button id='data:8:command' value='command8'/>
-</column>
-<column id='data:8:inputColumn'>
-<text id='data:8:input' value='input8'/>
-</column>
-<column id='data:8:outputColumn'>
-<text id='data:8:output' value='output8'/>
-</column>
-<column id='data:8:constantColumn'>
-<text id='data:8:constant' value='Constant Value'/>
-</column>
-</table-row>
-<table-row rowId='9'>
-<column id='data:9:commandColumn'>
-<button id='data:9:command' value='command9'/>
-</column>
-<column id='data:9:inputColumn'>
-<text id='data:9:input' value='input9'/>
-</column>
-<column id='data:9:outputColumn'>
-<text id='data:9:output' value='output9'/>
-</column>
-<column id='data:9:constantColumn'>
-<text id='data:9:constant' value='Constant Value'/>
-</column>
-</table-row>
-<column-footer id='data:commandFooter'>
-<text id='data:commandFooter' value='Command Footer'/>
-</column-footer>
-<column-footer id='data:inputFooter'>
-<text id='data:inputFooter' value='Input Footer'/>
-</column-footer>
-<column-footer id='data:outputFooter'>
-<text id='data:outputFooter' value='Output Footer'/>
-</column-footer>
-<column-footer id='data:constantFooter'>
-<text id='data:constantFooter' value='Constant Footer'/>
-</column-footer>
-</table>
diff --git a/jsf-api/src/test/java/javax/faces/component/UIDataTestCase_6.xml b/jsf-api/src/test/java/javax/faces/component/UIDataTestCase_6.xml
deleted file mode 100644
index 4d16525..0000000
--- a/jsf-api/src/test/java/javax/faces/component/UIDataTestCase_6.xml
+++ /dev/null
@@ -1,96 +0,0 @@
-<table id='data'>
-<column-header id='data:commandHeader'>
-<text id='data:commandHeader' value='Command Header'/>
-</column-header>
-<column-header id='data:inputHeader'>
-<text id='data:inputHeader' value='Input Header'/>
-</column-header>
-<column-header id='data:outputHeader'>
-<text id='data:outputHeader' value='Output Header'/>
-</column-header>
-<column-header id='data:constantHeader'>
-<text id='data:constantHeader' value='Constant Header'/>
-</column-header>
-<table-row rowId='3'>
-<column id='data:3:commandColumn'>
-<button id='data:3:command' value='command3'/>
-</column>
-<column id='data:3:inputColumn'>
-<text id='data:3:input' value='input3'/>
-</column>
-<column id='data:3:outputColumn'>
-<text id='data:3:output' value='output3'/>
-</column>
-<column id='data:3:constantColumn'>
-<text id='data:3:constant' value='Constant Value'/>
-</column>
-</table-row>
-<table-row rowId='4'>
-<column id='data:4:commandColumn'>
-<button id='data:4:command' value='command4'/>
-</column>
-<column id='data:4:inputColumn'>
-<text id='data:4:input' value='input4A'/>
-</column>
-<column id='data:4:outputColumn'>
-<text id='data:4:output' value='output4'/>
-</column>
-<column id='data:4:constantColumn'>
-<text id='data:4:constant' value='Constant Value'/>
-</column>
-</table-row>
-<table-row rowId='5'>
-<column id='data:5:commandColumn'>
-<button id='data:5:command' value='command6'/>
-</column>
-<column id='data:5:inputColumn'>
-<text id='data:5:input' value='input6B'/>
-</column>
-<column id='data:5:outputColumn'>
-<text id='data:5:output' value='output6'/>
-</column>
-<column id='data:5:constantColumn'>
-<text id='data:5:constant' value='Constant Value'/>
-</column>
-</table-row>
-<table-row rowId='6'>
-<column id='data:6:commandColumn'>
-<button id='data:6:command' value='command7'/>
-</column>
-<column id='data:6:inputColumn'>
-<text id='data:6:input' value='input7'/>
-</column>
-<column id='data:6:outputColumn'>
-<text id='data:6:output' value='output7'/>
-</column>
-<column id='data:6:constantColumn'>
-<text id='data:6:constant' value='Constant Value'/>
-</column>
-</table-row>
-<table-row rowId='7'>
-<column id='data:7:commandColumn'>
-<button id='data:7:command' value='command8'/>
-</column>
-<column id='data:7:inputColumn'>
-<text id='data:7:input' value='input8'/>
-</column>
-<column id='data:7:outputColumn'>
-<text id='data:7:output' value='output8'/>
-</column>
-<column id='data:7:constantColumn'>
-<text id='data:7:constant' value='Constant Value'/>
-</column>
-</table-row>
-<column-footer id='data:commandFooter'>
-<text id='data:commandFooter' value='Command Footer'/>
-</column-footer>
-<column-footer id='data:inputFooter'>
-<text id='data:inputFooter' value='Input Footer'/>
-</column-footer>
-<column-footer id='data:outputFooter'>
-<text id='data:outputFooter' value='Output Footer'/>
-</column-footer>
-<column-footer id='data:constantFooter'>
-<text id='data:constantFooter' value='Constant Footer'/>
-</column-footer>
-</table>
diff --git a/jsf-api/src/test/java/javax/faces/component/UIDataTestCase_7.xml b/jsf-api/src/test/java/javax/faces/component/UIDataTestCase_7.xml
deleted file mode 100644
index c039451..0000000
--- a/jsf-api/src/test/java/javax/faces/component/UIDataTestCase_7.xml
+++ /dev/null
@@ -1,96 +0,0 @@
-<table id='data'>
-<column-header id='data:commandHeader'>
-<text id='data:commandHeader' value='Command Header'/>
-</column-header>
-<column-header id='data:inputHeader'>
-<text id='data:inputHeader' value='Input Header'/>
-</column-header>
-<column-header id='data:outputHeader'>
-<text id='data:outputHeader' value='Output Header'/>
-</column-header>
-<column-header id='data:constantHeader'>
-<text id='data:constantHeader' value='Constant Header'/>
-</column-header>
-<table-row rowId='3'>
-<column id='data:3:commandColumn'>
-<button id='data:3:command' value='command3'/>
-</column>
-<column id='data:3:inputColumn'>
-<text id='data:3:input' value='input3'/>
-</column>
-<column id='data:3:outputColumn'>
-<text id='data:3:output' value='output3'/>
-</column>
-<column id='data:3:constantColumn'>
-<text id='data:3:constant' value='Constant Value'/>
-</column>
-</table-row>
-<table-row rowId='4'>
-<column id='data:4:commandColumn'>
-<button id='data:4:command' value='command4'/>
-</column>
-<column id='data:4:inputColumn'>
-<text id='data:4:input' value='input4'/>
-</column>
-<column id='data:4:outputColumn'>
-<text id='data:4:output' value='output4'/>
-</column>
-<column id='data:4:constantColumn'>
-<text id='data:4:constant' value='Constant Value'/>
-</column>
-</table-row>
-<table-row rowId='5'>
-<column id='data:5:commandColumn'>
-<button id='data:5:command' value='command6'/>
-</column>
-<column id='data:5:inputColumn'>
-<text id='data:5:input' value='input6'/>
-</column>
-<column id='data:5:outputColumn'>
-<text id='data:5:output' value='output6'/>
-</column>
-<column id='data:5:constantColumn'>
-<text id='data:5:constant' value='Constant Value'/>
-</column>
-</table-row>
-<table-row rowId='6'>
-<column id='data:6:commandColumn'>
-<button id='data:6:command' value='command7'/>
-</column>
-<column id='data:6:inputColumn'>
-<text id='data:6:input' value='input7'/>
-</column>
-<column id='data:6:outputColumn'>
-<text id='data:6:output' value='output7'/>
-</column>
-<column id='data:6:constantColumn'>
-<text id='data:6:constant' value='Constant Value'/>
-</column>
-</table-row>
-<table-row rowId='7'>
-<column id='data:7:commandColumn'>
-<button id='data:7:command' value='command8'/>
-</column>
-<column id='data:7:inputColumn'>
-<text id='data:7:input' value='input8'/>
-</column>
-<column id='data:7:outputColumn'>
-<text id='data:7:output' value='output8'/>
-</column>
-<column id='data:7:constantColumn'>
-<text id='data:7:constant' value='Constant Value'/>
-</column>
-</table-row>
-<column-footer id='data:commandFooter'>
-<text id='data:commandFooter' value='Command Footer'/>
-</column-footer>
-<column-footer id='data:inputFooter'>
-<text id='data:inputFooter' value='Input Footer'/>
-</column-footer>
-<column-footer id='data:outputFooter'>
-<text id='data:outputFooter' value='Output Footer'/>
-</column-footer>
-<column-footer id='data:constantFooter'>
-<text id='data:constantFooter' value='Constant Footer'/>
-</column-footer>
-</table>
diff --git a/jsf-api/src/test/java/javax/faces/component/UIDataTestCase_8.xml b/jsf-api/src/test/java/javax/faces/component/UIDataTestCase_8.xml
deleted file mode 100644
index a90679b..0000000
--- a/jsf-api/src/test/java/javax/faces/component/UIDataTestCase_8.xml
+++ /dev/null
@@ -1,96 +0,0 @@
-<table id='data'>
-<column-header id='data:hcommand'>
-<button id='data:hcommand' value='Command Action'/>
-</column-header>
-<column-header id='data:hinput'>
-<text id='data:hinput' value='New Value'/>
-</column-header>
-<column-header id='data:outputHeader'>
-<text id='data:outputHeader' value='Output Header'/>
-</column-header>
-<column-header id='data:constantHeader'>
-<text id='data:constantHeader' value='Constant Header'/>
-</column-header>
-<table-row rowId='3'>
-<column id='data:3:commandColumn'>
-<button id='data:3:command' value='command3'/>
-</column>
-<column id='data:3:inputColumn'>
-<text id='data:3:input' value='input3'/>
-</column>
-<column id='data:3:outputColumn'>
-<text id='data:3:output' value='output3'/>
-</column>
-<column id='data:3:constantColumn'>
-<text id='data:3:constant' value='Constant Value'/>
-</column>
-</table-row>
-<table-row rowId='4'>
-<column id='data:4:commandColumn'>
-<button id='data:4:command' value='command4'/>
-</column>
-<column id='data:4:inputColumn'>
-<text id='data:4:input' value='input4A'/>
-</column>
-<column id='data:4:outputColumn'>
-<text id='data:4:output' value='output4'/>
-</column>
-<column id='data:4:constantColumn'>
-<text id='data:4:constant' value='Constant Value'/>
-</column>
-</table-row>
-<table-row rowId='5'>
-<column id='data:5:commandColumn'>
-<button id='data:5:command' value='command5'/>
-</column>
-<column id='data:5:inputColumn'>
-<text id='data:5:input' value='input5'/>
-</column>
-<column id='data:5:outputColumn'>
-<text id='data:5:output' value='output5'/>
-</column>
-<column id='data:5:constantColumn'>
-<text id='data:5:constant' value='Constant Value'/>
-</column>
-</table-row>
-<table-row rowId='6'>
-<column id='data:6:commandColumn'>
-<button id='data:6:command' value='command6'/>
-</column>
-<column id='data:6:inputColumn'>
-<text id='data:6:input' value='input6B'/>
-</column>
-<column id='data:6:outputColumn'>
-<text id='data:6:output' value='output6'/>
-</column>
-<column id='data:6:constantColumn'>
-<text id='data:6:constant' value='Constant Value'/>
-</column>
-</table-row>
-<table-row rowId='7'>
-<column id='data:7:commandColumn'>
-<button id='data:7:command' value='command7'/>
-</column>
-<column id='data:7:inputColumn'>
-<text id='data:7:input' value='input7'/>
-</column>
-<column id='data:7:outputColumn'>
-<text id='data:7:output' value='output7'/>
-</column>
-<column id='data:7:constantColumn'>
-<text id='data:7:constant' value='Constant Value'/>
-</column>
-</table-row>
-<column-footer id='data:commandFooter'>
-<text id='data:commandFooter' value='Command Footer'/>
-</column-footer>
-<column-footer id='data:inputFooter'>
-<text id='data:inputFooter' value='Input Footer'/>
-</column-footer>
-<column-footer id='data:outputFooter'>
-<text id='data:outputFooter' value='Output Footer'/>
-</column-footer>
-<column-footer id='data:constantFooter'>
-<text id='data:constantFooter' value='Constant Footer'/>
-</column-footer>
-</table>
diff --git a/jsf-api/src/test/java/javax/faces/component/UIDataTestCase_9_withIds.xml b/jsf-api/src/test/java/javax/faces/component/UIDataTestCase_9_withIds.xml
deleted file mode 100644
index a354efa..0000000
--- a/jsf-api/src/test/java/javax/faces/component/UIDataTestCase_9_withIds.xml
+++ /dev/null
@@ -1,502 +0,0 @@
-<table id='outerData'>
-<table-row rowId='3'>
-<column id='outerData:3:outerColumn'>
-<table id='outerData:3:data'>
-<column-header id='outerData:3:data:commandHeader'>
-<text id='outerData:3:data:commandHeader' value='Command Header'/>
-</column-header>
-<column-header id='outerData:3:data:inputHeader'>
-<text id='outerData:3:data:inputHeader' value='Input Header'/>
-</column-header>
-<column-header id='outerData:3:data:outputHeader'>
-<text id='outerData:3:data:outputHeader' value='Output Header'/>
-</column-header>
-<column-header id='outerData:3:data:constantHeader'>
-<text id='outerData:3:data:constantHeader' value='Constant Header'/>
-</column-header>
-<table-row rowId='3'>
-<column id='outerData:3:data:3:commandColumn'>
-<button id='outerData:3:data:3:command' value='command3'/>
-</column>
-<column id='outerData:3:data:3:inputColumn'>
-<text id='outerData:3:data:3:input' value='input3'/>
-</column>
-<column id='outerData:3:data:3:outputColumn'>
-<text id='outerData:3:data:3:output' value='output3'/>
-</column>
-<column id='outerData:3:data:3:constantColumn'>
-<text id='outerData:3:data:3:constant' value='Constant Value'/>
-</column>
-</table-row>
-<table-row rowId='4'>
-<column id='outerData:3:data:4:commandColumn'>
-<button id='outerData:3:data:4:command' value='command4'/>
-</column>
-<column id='outerData:3:data:4:inputColumn'>
-<text id='outerData:3:data:4:input' value='input4'/>
-</column>
-<column id='outerData:3:data:4:outputColumn'>
-<text id='outerData:3:data:4:output' value='output4'/>
-</column>
-<column id='outerData:3:data:4:constantColumn'>
-<text id='outerData:3:data:4:constant' value='Constant Value'/>
-</column>
-</table-row>
-<table-row rowId='5'>
-<column id='outerData:3:data:5:commandColumn'>
-<button id='outerData:3:data:5:command' value='command5'/>
-</column>
-<column id='outerData:3:data:5:inputColumn'>
-<text id='outerData:3:data:5:input' value='input5'/>
-</column>
-<column id='outerData:3:data:5:outputColumn'>
-<text id='outerData:3:data:5:output' value='output5'/>
-</column>
-<column id='outerData:3:data:5:constantColumn'>
-<text id='outerData:3:data:5:constant' value='Constant Value'/>
-</column>
-</table-row>
-<table-row rowId='6'>
-<column id='outerData:3:data:6:commandColumn'>
-<button id='outerData:3:data:6:command' value='command6'/>
-</column>
-<column id='outerData:3:data:6:inputColumn'>
-<text id='outerData:3:data:6:input' value='input6'/>
-</column>
-<column id='outerData:3:data:6:outputColumn'>
-<text id='outerData:3:data:6:output' value='output6'/>
-</column>
-<column id='outerData:3:data:6:constantColumn'>
-<text id='outerData:3:data:6:constant' value='Constant Value'/>
-</column>
-</table-row>
-<table-row rowId='7'>
-<column id='outerData:3:data:7:commandColumn'>
-<button id='outerData:3:data:7:command' value='command7'/>
-</column>
-<column id='outerData:3:data:7:inputColumn'>
-<text id='outerData:3:data:7:input' value='input7'/>
-</column>
-<column id='outerData:3:data:7:outputColumn'>
-<text id='outerData:3:data:7:output' value='output7'/>
-</column>
-<column id='outerData:3:data:7:constantColumn'>
-<text id='outerData:3:data:7:constant' value='Constant Value'/>
-</column>
-</table-row>
-<column-footer id='outerData:3:data:commandFooter'>
-<text id='outerData:3:data:commandFooter' value='Command Footer'/>
-</column-footer>
-<column-footer id='outerData:3:data:inputFooter'>
-<text id='outerData:3:data:inputFooter' value='Input Footer'/>
-</column-footer>
-<column-footer id='outerData:3:data:outputFooter'>
-<text id='outerData:3:data:outputFooter' value='Output Footer'/>
-</column-footer>
-<column-footer id='outerData:3:data:constantFooter'>
-<text id='outerData:3:data:constantFooter' value='Constant Footer'/>
-</column-footer>
-</table>
-</column>
-</table-row>
-<table-row rowId='4'>
-<column id='outerData:4:outerColumn'>
-<table id='outerData:4:data'>
-<column-header id='outerData:4:data:commandHeader'>
-<text id='outerData:4:data:commandHeader' value='Command Header'/>
-</column-header>
-<column-header id='outerData:4:data:inputHeader'>
-<text id='outerData:4:data:inputHeader' value='Input Header'/>
-</column-header>
-<column-header id='outerData:4:data:outputHeader'>
-<text id='outerData:4:data:outputHeader' value='Output Header'/>
-</column-header>
-<column-header id='outerData:4:data:constantHeader'>
-<text id='outerData:4:data:constantHeader' value='Constant Header'/>
-</column-header>
-<table-row rowId='3'>
-<column id='outerData:4:data:3:commandColumn'>
-<button id='outerData:4:data:3:command' value='command3'/>
-</column>
-<column id='outerData:4:data:3:inputColumn'>
-<text id='outerData:4:data:3:input' value='input3'/>
-</column>
-<column id='outerData:4:data:3:outputColumn'>
-<text id='outerData:4:data:3:output' value='output3'/>
-</column>
-<column id='outerData:4:data:3:constantColumn'>
-<text id='outerData:4:data:3:constant' value='Constant Value'/>
-</column>
-</table-row>
-<table-row rowId='4'>
-<column id='outerData:4:data:4:commandColumn'>
-<button id='outerData:4:data:4:command' value='command4'/>
-</column>
-<column id='outerData:4:data:4:inputColumn'>
-<text id='outerData:4:data:4:input' value='input4'/>
-</column>
-<column id='outerData:4:data:4:outputColumn'>
-<text id='outerData:4:data:4:output' value='output4'/>
-</column>
-<column id='outerData:4:data:4:constantColumn'>
-<text id='outerData:4:data:4:constant' value='Constant Value'/>
-</column>
-</table-row>
-<table-row rowId='5'>
-<column id='outerData:4:data:5:commandColumn'>
-<button id='outerData:4:data:5:command' value='command5'/>
-</column>
-<column id='outerData:4:data:5:inputColumn'>
-<text id='outerData:4:data:5:input' value='input5'/>
-</column>
-<column id='outerData:4:data:5:outputColumn'>
-<text id='outerData:4:data:5:output' value='output5'/>
-</column>
-<column id='outerData:4:data:5:constantColumn'>
-<text id='outerData:4:data:5:constant' value='Constant Value'/>
-</column>
-</table-row>
-<table-row rowId='6'>
-<column id='outerData:4:data:6:commandColumn'>
-<button id='outerData:4:data:6:command' value='command6'/>
-</column>
-<column id='outerData:4:data:6:inputColumn'>
-<text id='outerData:4:data:6:input' value='input6'/>
-</column>
-<column id='outerData:4:data:6:outputColumn'>
-<text id='outerData:4:data:6:output' value='output6'/>
-</column>
-<column id='outerData:4:data:6:constantColumn'>
-<text id='outerData:4:data:6:constant' value='Constant Value'/>
-</column>
-</table-row>
-<table-row rowId='7'>
-<column id='outerData:4:data:7:commandColumn'>
-<button id='outerData:4:data:7:command' value='command7'/>
-</column>
-<column id='outerData:4:data:7:inputColumn'>
-<text id='outerData:4:data:7:input' value='input7'/>
-</column>
-<column id='outerData:4:data:7:outputColumn'>
-<text id='outerData:4:data:7:output' value='output7'/>
-</column>
-<column id='outerData:4:data:7:constantColumn'>
-<text id='outerData:4:data:7:constant' value='Constant Value'/>
-</column>
-</table-row>
-<column-footer id='outerData:4:data:commandFooter'>
-<text id='outerData:4:data:commandFooter' value='Command Footer'/>
-</column-footer>
-<column-footer id='outerData:4:data:inputFooter'>
-<text id='outerData:4:data:inputFooter' value='Input Footer'/>
-</column-footer>
-<column-footer id='outerData:4:data:outputFooter'>
-<text id='outerData:4:data:outputFooter' value='Output Footer'/>
-</column-footer>
-<column-footer id='outerData:4:data:constantFooter'>
-<text id='outerData:4:data:constantFooter' value='Constant Footer'/>
-</column-footer>
-</table>
-</column>
-</table-row>
-<table-row rowId='5'>
-<column id='outerData:5:outerColumn'>
-<table id='outerData:5:data'>
-<column-header id='outerData:5:data:commandHeader'>
-<text id='outerData:5:data:commandHeader' value='Command Header'/>
-</column-header>
-<column-header id='outerData:5:data:inputHeader'>
-<text id='outerData:5:data:inputHeader' value='Input Header'/>
-</column-header>
-<column-header id='outerData:5:data:outputHeader'>
-<text id='outerData:5:data:outputHeader' value='Output Header'/>
-</column-header>
-<column-header id='outerData:5:data:constantHeader'>
-<text id='outerData:5:data:constantHeader' value='Constant Header'/>
-</column-header>
-<table-row rowId='3'>
-<column id='outerData:5:data:3:commandColumn'>
-<button id='outerData:5:data:3:command' value='command3'/>
-</column>
-<column id='outerData:5:data:3:inputColumn'>
-<text id='outerData:5:data:3:input' value='input3'/>
-</column>
-<column id='outerData:5:data:3:outputColumn'>
-<text id='outerData:5:data:3:output' value='output3'/>
-</column>
-<column id='outerData:5:data:3:constantColumn'>
-<text id='outerData:5:data:3:constant' value='Constant Value'/>
-</column>
-</table-row>
-<table-row rowId='4'>
-<column id='outerData:5:data:4:commandColumn'>
-<button id='outerData:5:data:4:command' value='command4'/>
-</column>
-<column id='outerData:5:data:4:inputColumn'>
-<text id='outerData:5:data:4:input' value='input4'/>
-</column>
-<column id='outerData:5:data:4:outputColumn'>
-<text id='outerData:5:data:4:output' value='output4'/>
-</column>
-<column id='outerData:5:data:4:constantColumn'>
-<text id='outerData:5:data:4:constant' value='Constant Value'/>
-</column>
-</table-row>
-<table-row rowId='5'>
-<column id='outerData:5:data:5:commandColumn'>
-<button id='outerData:5:data:5:command' value='command5'/>
-</column>
-<column id='outerData:5:data:5:inputColumn'>
-<text id='outerData:5:data:5:input' value='input5'/>
-</column>
-<column id='outerData:5:data:5:outputColumn'>
-<text id='outerData:5:data:5:output' value='output5'/>
-</column>
-<column id='outerData:5:data:5:constantColumn'>
-<text id='outerData:5:data:5:constant' value='Constant Value'/>
-</column>
-</table-row>
-<table-row rowId='6'>
-<column id='outerData:5:data:6:commandColumn'>
-<button id='outerData:5:data:6:command' value='command6'/>
-</column>
-<column id='outerData:5:data:6:inputColumn'>
-<text id='outerData:5:data:6:input' value='input6'/>
-</column>
-<column id='outerData:5:data:6:outputColumn'>
-<text id='outerData:5:data:6:output' value='output6'/>
-</column>
-<column id='outerData:5:data:6:constantColumn'>
-<text id='outerData:5:data:6:constant' value='Constant Value'/>
-</column>
-</table-row>
-<table-row rowId='7'>
-<column id='outerData:5:data:7:commandColumn'>
-<button id='outerData:5:data:7:command' value='command7'/>
-</column>
-<column id='outerData:5:data:7:inputColumn'>
-<text id='outerData:5:data:7:input' value='input7'/>
-</column>
-<column id='outerData:5:data:7:outputColumn'>
-<text id='outerData:5:data:7:output' value='output7'/>
-</column>
-<column id='outerData:5:data:7:constantColumn'>
-<text id='outerData:5:data:7:constant' value='Constant Value'/>
-</column>
-</table-row>
-<column-footer id='outerData:5:data:commandFooter'>
-<text id='outerData:5:data:commandFooter' value='Command Footer'/>
-</column-footer>
-<column-footer id='outerData:5:data:inputFooter'>
-<text id='outerData:5:data:inputFooter' value='Input Footer'/>
-</column-footer>
-<column-footer id='outerData:5:data:outputFooter'>
-<text id='outerData:5:data:outputFooter' value='Output Footer'/>
-</column-footer>
-<column-footer id='outerData:5:data:constantFooter'>
-<text id='outerData:5:data:constantFooter' value='Constant Footer'/>
-</column-footer>
-</table>
-</column>
-</table-row>
-<table-row rowId='6'>
-<column id='outerData:6:outerColumn'>
-<table id='outerData:6:data'>
-<column-header id='outerData:6:data:commandHeader'>
-<text id='outerData:6:data:commandHeader' value='Command Header'/>
-</column-header>
-<column-header id='outerData:6:data:inputHeader'>
-<text id='outerData:6:data:inputHeader' value='Input Header'/>
-</column-header>
-<column-header id='outerData:6:data:outputHeader'>
-<text id='outerData:6:data:outputHeader' value='Output Header'/>
-</column-header>
-<column-header id='outerData:6:data:constantHeader'>
-<text id='outerData:6:data:constantHeader' value='Constant Header'/>
-</column-header>
-<table-row rowId='3'>
-<column id='outerData:6:data:3:commandColumn'>
-<button id='outerData:6:data:3:command' value='command3'/>
-</column>
-<column id='outerData:6:data:3:inputColumn'>
-<text id='outerData:6:data:3:input' value='input3'/>
-</column>
-<column id='outerData:6:data:3:outputColumn'>
-<text id='outerData:6:data:3:output' value='output3'/>
-</column>
-<column id='outerData:6:data:3:constantColumn'>
-<text id='outerData:6:data:3:constant' value='Constant Value'/>
-</column>
-</table-row>
-<table-row rowId='4'>
-<column id='outerData:6:data:4:commandColumn'>
-<button id='outerData:6:data:4:command' value='command4'/>
-</column>
-<column id='outerData:6:data:4:inputColumn'>
-<text id='outerData:6:data:4:input' value='input4'/>
-</column>
-<column id='outerData:6:data:4:outputColumn'>
-<text id='outerData:6:data:4:output' value='output4'/>
-</column>
-<column id='outerData:6:data:4:constantColumn'>
-<text id='outerData:6:data:4:constant' value='Constant Value'/>
-</column>
-</table-row>
-<table-row rowId='5'>
-<column id='outerData:6:data:5:commandColumn'>
-<button id='outerData:6:data:5:command' value='command5'/>
-</column>
-<column id='outerData:6:data:5:inputColumn'>
-<text id='outerData:6:data:5:input' value='input5'/>
-</column>
-<column id='outerData:6:data:5:outputColumn'>
-<text id='outerData:6:data:5:output' value='output5'/>
-</column>
-<column id='outerData:6:data:5:constantColumn'>
-<text id='outerData:6:data:5:constant' value='Constant Value'/>
-</column>
-</table-row>
-<table-row rowId='6'>
-<column id='outerData:6:data:6:commandColumn'>
-<button id='outerData:6:data:6:command' value='command6'/>
-</column>
-<column id='outerData:6:data:6:inputColumn'>
-<text id='outerData:6:data:6:input' value='input6'/>
-</column>
-<column id='outerData:6:data:6:outputColumn'>
-<text id='outerData:6:data:6:output' value='output6'/>
-</column>
-<column id='outerData:6:data:6:constantColumn'>
-<text id='outerData:6:data:6:constant' value='Constant Value'/>
-</column>
-</table-row>
-<table-row rowId='7'>
-<column id='outerData:6:data:7:commandColumn'>
-<button id='outerData:6:data:7:command' value='command7'/>
-</column>
-<column id='outerData:6:data:7:inputColumn'>
-<text id='outerData:6:data:7:input' value='input7'/>
-</column>
-<column id='outerData:6:data:7:outputColumn'>
-<text id='outerData:6:data:7:output' value='output7'/>
-</column>
-<column id='outerData:6:data:7:constantColumn'>
-<text id='outerData:6:data:7:constant' value='Constant Value'/>
-</column>
-</table-row>
-<column-footer id='outerData:6:data:commandFooter'>
-<text id='outerData:6:data:commandFooter' value='Command Footer'/>
-</column-footer>
-<column-footer id='outerData:6:data:inputFooter'>
-<text id='outerData:6:data:inputFooter' value='Input Footer'/>
-</column-footer>
-<column-footer id='outerData:6:data:outputFooter'>
-<text id='outerData:6:data:outputFooter' value='Output Footer'/>
-</column-footer>
-<column-footer id='outerData:6:data:constantFooter'>
-<text id='outerData:6:data:constantFooter' value='Constant Footer'/>
-</column-footer>
-</table>
-</column>
-</table-row>
-<table-row rowId='7'>
-<column id='outerData:7:outerColumn'>
-<table id='outerData:7:data'>
-<column-header id='outerData:7:data:commandHeader'>
-<text id='outerData:7:data:commandHeader' value='Command Header'/>
-</column-header>
-<column-header id='outerData:7:data:inputHeader'>
-<text id='outerData:7:data:inputHeader' value='Input Header'/>
-</column-header>
-<column-header id='outerData:7:data:outputHeader'>
-<text id='outerData:7:data:outputHeader' value='Output Header'/>
-</column-header>
-<column-header id='outerData:7:data:constantHeader'>
-<text id='outerData:7:data:constantHeader' value='Constant Header'/>
-</column-header>
-<table-row rowId='3'>
-<column id='outerData:7:data:3:commandColumn'>
-<button id='outerData:7:data:3:command' value='command3'/>
-</column>
-<column id='outerData:7:data:3:inputColumn'>
-<text id='outerData:7:data:3:input' value='input3'/>
-</column>
-<column id='outerData:7:data:3:outputColumn'>
-<text id='outerData:7:data:3:output' value='output3'/>
-</column>
-<column id='outerData:7:data:3:constantColumn'>
-<text id='outerData:7:data:3:constant' value='Constant Value'/>
-</column>
-</table-row>
-<table-row rowId='4'>
-<column id='outerData:7:data:4:commandColumn'>
-<button id='outerData:7:data:4:command' value='command4'/>
-</column>
-<column id='outerData:7:data:4:inputColumn'>
-<text id='outerData:7:data:4:input' value='input4'/>
-</column>
-<column id='outerData:7:data:4:outputColumn'>
-<text id='outerData:7:data:4:output' value='output4'/>
-</column>
-<column id='outerData:7:data:4:constantColumn'>
-<text id='outerData:7:data:4:constant' value='Constant Value'/>
-</column>
-</table-row>
-<table-row rowId='5'>
-<column id='outerData:7:data:5:commandColumn'>
-<button id='outerData:7:data:5:command' value='command5'/>
-</column>
-<column id='outerData:7:data:5:inputColumn'>
-<text id='outerData:7:data:5:input' value='input5'/>
-</column>
-<column id='outerData:7:data:5:outputColumn'>
-<text id='outerData:7:data:5:output' value='output5'/>
-</column>
-<column id='outerData:7:data:5:constantColumn'>
-<text id='outerData:7:data:5:constant' value='Constant Value'/>
-</column>
-</table-row>
-<table-row rowId='6'>
-<column id='outerData:7:data:6:commandColumn'>
-<button id='outerData:7:data:6:command' value='command6'/>
-</column>
-<column id='outerData:7:data:6:inputColumn'>
-<text id='outerData:7:data:6:input' value='input6'/>
-</column>
-<column id='outerData:7:data:6:outputColumn'>
-<text id='outerData:7:data:6:output' value='output6'/>
-</column>
-<column id='outerData:7:data:6:constantColumn'>
-<text id='outerData:7:data:6:constant' value='Constant Value'/>
-</column>
-</table-row>
-<table-row rowId='7'>
-<column id='outerData:7:data:7:commandColumn'>
-<button id='outerData:7:data:7:command' value='command7'/>
-</column>
-<column id='outerData:7:data:7:inputColumn'>
-<text id='outerData:7:data:7:input' value='input7'/>
-</column>
-<column id='outerData:7:data:7:outputColumn'>
-<text id='outerData:7:data:7:output' value='output7'/>
-</column>
-<column id='outerData:7:data:7:constantColumn'>
-<text id='outerData:7:data:7:constant' value='Constant Value'/>
-</column>
-</table-row>
-<column-footer id='outerData:7:data:commandFooter'>
-<text id='outerData:7:data:commandFooter' value='Command Footer'/>
-</column-footer>
-<column-footer id='outerData:7:data:inputFooter'>
-<text id='outerData:7:data:inputFooter' value='Input Footer'/>
-</column-footer>
-<column-footer id='outerData:7:data:outputFooter'>
-<text id='outerData:7:data:outputFooter' value='Output Footer'/>
-</column-footer>
-<column-footer id='outerData:7:data:constantFooter'>
-<text id='outerData:7:data:constantFooter' value='Constant Footer'/>
-</column-footer>
-</table>
-</column>
-</table-row>
-</table>
diff --git a/jsf-api/src/test/java/javax/faces/component/UIDataTestCase_9_withoutIds.xml b/jsf-api/src/test/java/javax/faces/component/UIDataTestCase_9_withoutIds.xml
deleted file mode 100644
index 31008a3..0000000
--- a/jsf-api/src/test/java/javax/faces/component/UIDataTestCase_9_withoutIds.xml
+++ /dev/null
@@ -1,502 +0,0 @@
-<table id='j_id0'>
-<table-row rowId='3'>
-<column id='j_id0:3:j_id3'>
-<table id='j_id0:3:j_id1'>
-<column-header id='j_id0:3:j_id1:j_id4'>
-<text id='j_id0:3:j_id1:j_id4' value='Command Header'/>
-</column-header>
-<column-header id='j_id0:3:j_id1:j_id5'>
-<text id='j_id0:3:j_id1:j_id5' value='Input Header'/>
-</column-header>
-<column-header id='j_id0:3:j_id1:j_id6'>
-<text id='j_id0:3:j_id1:j_id6' value='Output Header'/>
-</column-header>
-<column-header id='j_id0:3:j_id1:j_id7'>
-<text id='j_id0:3:j_id1:j_id7' value='Constant Header'/>
-</column-header>
-<table-row rowId='3'>
-<column id='j_id0:3:j_id1:3:j_id8'>
-<button id='j_id0:3:j_id1:3:j_id9' value='command3'/>
-</column>
-<column id='j_id0:3:j_id1:3:j_id10'>
-<text id='j_id0:3:j_id1:3:j_id2' value='input3'/>
-</column>
-<column id='j_id0:3:j_id1:3:j_id11'>
-<text id='j_id0:3:j_id1:3:j_id12' value='output3'/>
-</column>
-<column id='j_id0:3:j_id1:3:j_id13'>
-<text id='j_id0:3:j_id1:3:j_id14' value='Constant Value'/>
-</column>
-</table-row>
-<table-row rowId='4'>
-<column id='j_id0:3:j_id1:4:j_id8'>
-<button id='j_id0:3:j_id1:4:j_id9' value='command4'/>
-</column>
-<column id='j_id0:3:j_id1:4:j_id10'>
-<text id='j_id0:3:j_id1:4:j_id2' value='input4'/>
-</column>
-<column id='j_id0:3:j_id1:4:j_id11'>
-<text id='j_id0:3:j_id1:4:j_id12' value='output4'/>
-</column>
-<column id='j_id0:3:j_id1:4:j_id13'>
-<text id='j_id0:3:j_id1:4:j_id14' value='Constant Value'/>
-</column>
-</table-row>
-<table-row rowId='5'>
-<column id='j_id0:3:j_id1:5:j_id8'>
-<button id='j_id0:3:j_id1:5:j_id9' value='command5'/>
-</column>
-<column id='j_id0:3:j_id1:5:j_id10'>
-<text id='j_id0:3:j_id1:5:j_id2' value='input5'/>
-</column>
-<column id='j_id0:3:j_id1:5:j_id11'>
-<text id='j_id0:3:j_id1:5:j_id12' value='output5'/>
-</column>
-<column id='j_id0:3:j_id1:5:j_id13'>
-<text id='j_id0:3:j_id1:5:j_id14' value='Constant Value'/>
-</column>
-</table-row>
-<table-row rowId='6'>
-<column id='j_id0:3:j_id1:6:j_id8'>
-<button id='j_id0:3:j_id1:6:j_id9' value='command6'/>
-</column>
-<column id='j_id0:3:j_id1:6:j_id10'>
-<text id='j_id0:3:j_id1:6:j_id2' value='input6'/>
-</column>
-<column id='j_id0:3:j_id1:6:j_id11'>
-<text id='j_id0:3:j_id1:6:j_id12' value='output6'/>
-</column>
-<column id='j_id0:3:j_id1:6:j_id13'>
-<text id='j_id0:3:j_id1:6:j_id14' value='Constant Value'/>
-</column>
-</table-row>
-<table-row rowId='7'>
-<column id='j_id0:3:j_id1:7:j_id8'>
-<button id='j_id0:3:j_id1:7:j_id9' value='command7'/>
-</column>
-<column id='j_id0:3:j_id1:7:j_id10'>
-<text id='j_id0:3:j_id1:7:j_id2' value='input7'/>
-</column>
-<column id='j_id0:3:j_id1:7:j_id11'>
-<text id='j_id0:3:j_id1:7:j_id12' value='output7'/>
-</column>
-<column id='j_id0:3:j_id1:7:j_id13'>
-<text id='j_id0:3:j_id1:7:j_id14' value='Constant Value'/>
-</column>
-</table-row>
-<column-footer id='j_id0:3:j_id1:j_id15'>
-<text id='j_id0:3:j_id1:j_id15' value='Command Footer'/>
-</column-footer>
-<column-footer id='j_id0:3:j_id1:j_id16'>
-<text id='j_id0:3:j_id1:j_id16' value='Input Footer'/>
-</column-footer>
-<column-footer id='j_id0:3:j_id1:j_id17'>
-<text id='j_id0:3:j_id1:j_id17' value='Output Footer'/>
-</column-footer>
-<column-footer id='j_id0:3:j_id1:j_id18'>
-<text id='j_id0:3:j_id1:j_id18' value='Constant Footer'/>
-</column-footer>
-</table>
-</column>
-</table-row>
-<table-row rowId='4'>
-<column id='j_id0:4:j_id3'>
-<table id='j_id0:4:j_id1'>
-<column-header id='j_id0:4:j_id1:j_id4'>
-<text id='j_id0:4:j_id1:j_id4' value='Command Header'/>
-</column-header>
-<column-header id='j_id0:4:j_id1:j_id5'>
-<text id='j_id0:4:j_id1:j_id5' value='Input Header'/>
-</column-header>
-<column-header id='j_id0:4:j_id1:j_id6'>
-<text id='j_id0:4:j_id1:j_id6' value='Output Header'/>
-</column-header>
-<column-header id='j_id0:4:j_id1:j_id7'>
-<text id='j_id0:4:j_id1:j_id7' value='Constant Header'/>
-</column-header>
-<table-row rowId='3'>
-<column id='j_id0:4:j_id1:3:j_id8'>
-<button id='j_id0:4:j_id1:3:j_id9' value='command3'/>
-</column>
-<column id='j_id0:4:j_id1:3:j_id10'>
-<text id='j_id0:4:j_id1:3:j_id2' value='input3'/>
-</column>
-<column id='j_id0:4:j_id1:3:j_id11'>
-<text id='j_id0:4:j_id1:3:j_id12' value='output3'/>
-</column>
-<column id='j_id0:4:j_id1:3:j_id13'>
-<text id='j_id0:4:j_id1:3:j_id14' value='Constant Value'/>
-</column>
-</table-row>
-<table-row rowId='4'>
-<column id='j_id0:4:j_id1:4:j_id8'>
-<button id='j_id0:4:j_id1:4:j_id9' value='command4'/>
-</column>
-<column id='j_id0:4:j_id1:4:j_id10'>
-<text id='j_id0:4:j_id1:4:j_id2' value='input4'/>
-</column>
-<column id='j_id0:4:j_id1:4:j_id11'>
-<text id='j_id0:4:j_id1:4:j_id12' value='output4'/>
-</column>
-<column id='j_id0:4:j_id1:4:j_id13'>
-<text id='j_id0:4:j_id1:4:j_id14' value='Constant Value'/>
-</column>
-</table-row>
-<table-row rowId='5'>
-<column id='j_id0:4:j_id1:5:j_id8'>
-<button id='j_id0:4:j_id1:5:j_id9' value='command5'/>
-</column>
-<column id='j_id0:4:j_id1:5:j_id10'>
-<text id='j_id0:4:j_id1:5:j_id2' value='input5'/>
-</column>
-<column id='j_id0:4:j_id1:5:j_id11'>
-<text id='j_id0:4:j_id1:5:j_id12' value='output5'/>
-</column>
-<column id='j_id0:4:j_id1:5:j_id13'>
-<text id='j_id0:4:j_id1:5:j_id14' value='Constant Value'/>
-</column>
-</table-row>
-<table-row rowId='6'>
-<column id='j_id0:4:j_id1:6:j_id8'>
-<button id='j_id0:4:j_id1:6:j_id9' value='command6'/>
-</column>
-<column id='j_id0:4:j_id1:6:j_id10'>
-<text id='j_id0:4:j_id1:6:j_id2' value='input6'/>
-</column>
-<column id='j_id0:4:j_id1:6:j_id11'>
-<text id='j_id0:4:j_id1:6:j_id12' value='output6'/>
-</column>
-<column id='j_id0:4:j_id1:6:j_id13'>
-<text id='j_id0:4:j_id1:6:j_id14' value='Constant Value'/>
-</column>
-</table-row>
-<table-row rowId='7'>
-<column id='j_id0:4:j_id1:7:j_id8'>
-<button id='j_id0:4:j_id1:7:j_id9' value='command7'/>
-</column>
-<column id='j_id0:4:j_id1:7:j_id10'>
-<text id='j_id0:4:j_id1:7:j_id2' value='input7'/>
-</column>
-<column id='j_id0:4:j_id1:7:j_id11'>
-<text id='j_id0:4:j_id1:7:j_id12' value='output7'/>
-</column>
-<column id='j_id0:4:j_id1:7:j_id13'>
-<text id='j_id0:4:j_id1:7:j_id14' value='Constant Value'/>
-</column>
-</table-row>
-<column-footer id='j_id0:4:j_id1:j_id15'>
-<text id='j_id0:4:j_id1:j_id15' value='Command Footer'/>
-</column-footer>
-<column-footer id='j_id0:4:j_id1:j_id16'>
-<text id='j_id0:4:j_id1:j_id16' value='Input Footer'/>
-</column-footer>
-<column-footer id='j_id0:4:j_id1:j_id17'>
-<text id='j_id0:4:j_id1:j_id17' value='Output Footer'/>
-</column-footer>
-<column-footer id='j_id0:4:j_id1:j_id18'>
-<text id='j_id0:4:j_id1:j_id18' value='Constant Footer'/>
-</column-footer>
-</table>
-</column>
-</table-row>
-<table-row rowId='5'>
-<column id='j_id0:5:j_id3'>
-<table id='j_id0:5:j_id1'>
-<column-header id='j_id0:5:j_id1:j_id4'>
-<text id='j_id0:5:j_id1:j_id4' value='Command Header'/>
-</column-header>
-<column-header id='j_id0:5:j_id1:j_id5'>
-<text id='j_id0:5:j_id1:j_id5' value='Input Header'/>
-</column-header>
-<column-header id='j_id0:5:j_id1:j_id6'>
-<text id='j_id0:5:j_id1:j_id6' value='Output Header'/>
-</column-header>
-<column-header id='j_id0:5:j_id1:j_id7'>
-<text id='j_id0:5:j_id1:j_id7' value='Constant Header'/>
-</column-header>
-<table-row rowId='3'>
-<column id='j_id0:5:j_id1:3:j_id8'>
-<button id='j_id0:5:j_id1:3:j_id9' value='command3'/>
-</column>
-<column id='j_id0:5:j_id1:3:j_id10'>
-<text id='j_id0:5:j_id1:3:j_id2' value='input3'/>
-</column>
-<column id='j_id0:5:j_id1:3:j_id11'>
-<text id='j_id0:5:j_id1:3:j_id12' value='output3'/>
-</column>
-<column id='j_id0:5:j_id1:3:j_id13'>
-<text id='j_id0:5:j_id1:3:j_id14' value='Constant Value'/>
-</column>
-</table-row>
-<table-row rowId='4'>
-<column id='j_id0:5:j_id1:4:j_id8'>
-<button id='j_id0:5:j_id1:4:j_id9' value='command4'/>
-</column>
-<column id='j_id0:5:j_id1:4:j_id10'>
-<text id='j_id0:5:j_id1:4:j_id2' value='input4'/>
-</column>
-<column id='j_id0:5:j_id1:4:j_id11'>
-<text id='j_id0:5:j_id1:4:j_id12' value='output4'/>
-</column>
-<column id='j_id0:5:j_id1:4:j_id13'>
-<text id='j_id0:5:j_id1:4:j_id14' value='Constant Value'/>
-</column>
-</table-row>
-<table-row rowId='5'>
-<column id='j_id0:5:j_id1:5:j_id8'>
-<button id='j_id0:5:j_id1:5:j_id9' value='command5'/>
-</column>
-<column id='j_id0:5:j_id1:5:j_id10'>
-<text id='j_id0:5:j_id1:5:j_id2' value='input5'/>
-</column>
-<column id='j_id0:5:j_id1:5:j_id11'>
-<text id='j_id0:5:j_id1:5:j_id12' value='output5'/>
-</column>
-<column id='j_id0:5:j_id1:5:j_id13'>
-<text id='j_id0:5:j_id1:5:j_id14' value='Constant Value'/>
-</column>
-</table-row>
-<table-row rowId='6'>
-<column id='j_id0:5:j_id1:6:j_id8'>
-<button id='j_id0:5:j_id1:6:j_id9' value='command6'/>
-</column>
-<column id='j_id0:5:j_id1:6:j_id10'>
-<text id='j_id0:5:j_id1:6:j_id2' value='input6'/>
-</column>
-<column id='j_id0:5:j_id1:6:j_id11'>
-<text id='j_id0:5:j_id1:6:j_id12' value='output6'/>
-</column>
-<column id='j_id0:5:j_id1:6:j_id13'>
-<text id='j_id0:5:j_id1:6:j_id14' value='Constant Value'/>
-</column>
-</table-row>
-<table-row rowId='7'>
-<column id='j_id0:5:j_id1:7:j_id8'>
-<button id='j_id0:5:j_id1:7:j_id9' value='command7'/>
-</column>
-<column id='j_id0:5:j_id1:7:j_id10'>
-<text id='j_id0:5:j_id1:7:j_id2' value='input7'/>
-</column>
-<column id='j_id0:5:j_id1:7:j_id11'>
-<text id='j_id0:5:j_id1:7:j_id12' value='output7'/>
-</column>
-<column id='j_id0:5:j_id1:7:j_id13'>
-<text id='j_id0:5:j_id1:7:j_id14' value='Constant Value'/>
-</column>
-</table-row>
-<column-footer id='j_id0:5:j_id1:j_id15'>
-<text id='j_id0:5:j_id1:j_id15' value='Command Footer'/>
-</column-footer>
-<column-footer id='j_id0:5:j_id1:j_id16'>
-<text id='j_id0:5:j_id1:j_id16' value='Input Footer'/>
-</column-footer>
-<column-footer id='j_id0:5:j_id1:j_id17'>
-<text id='j_id0:5:j_id1:j_id17' value='Output Footer'/>
-</column-footer>
-<column-footer id='j_id0:5:j_id1:j_id18'>
-<text id='j_id0:5:j_id1:j_id18' value='Constant Footer'/>
-</column-footer>
-</table>
-</column>
-</table-row>
-<table-row rowId='6'>
-<column id='j_id0:6:j_id3'>
-<table id='j_id0:6:j_id1'>
-<column-header id='j_id0:6:j_id1:j_id4'>
-<text id='j_id0:6:j_id1:j_id4' value='Command Header'/>
-</column-header>
-<column-header id='j_id0:6:j_id1:j_id5'>
-<text id='j_id0:6:j_id1:j_id5' value='Input Header'/>
-</column-header>
-<column-header id='j_id0:6:j_id1:j_id6'>
-<text id='j_id0:6:j_id1:j_id6' value='Output Header'/>
-</column-header>
-<column-header id='j_id0:6:j_id1:j_id7'>
-<text id='j_id0:6:j_id1:j_id7' value='Constant Header'/>
-</column-header>
-<table-row rowId='3'>
-<column id='j_id0:6:j_id1:3:j_id8'>
-<button id='j_id0:6:j_id1:3:j_id9' value='command3'/>
-</column>
-<column id='j_id0:6:j_id1:3:j_id10'>
-<text id='j_id0:6:j_id1:3:j_id2' value='input3'/>
-</column>
-<column id='j_id0:6:j_id1:3:j_id11'>
-<text id='j_id0:6:j_id1:3:j_id12' value='output3'/>
-</column>
-<column id='j_id0:6:j_id1:3:j_id13'>
-<text id='j_id0:6:j_id1:3:j_id14' value='Constant Value'/>
-</column>
-</table-row>
-<table-row rowId='4'>
-<column id='j_id0:6:j_id1:4:j_id8'>
-<button id='j_id0:6:j_id1:4:j_id9' value='command4'/>
-</column>
-<column id='j_id0:6:j_id1:4:j_id10'>
-<text id='j_id0:6:j_id1:4:j_id2' value='input4'/>
-</column>
-<column id='j_id0:6:j_id1:4:j_id11'>
-<text id='j_id0:6:j_id1:4:j_id12' value='output4'/>
-</column>
-<column id='j_id0:6:j_id1:4:j_id13'>
-<text id='j_id0:6:j_id1:4:j_id14' value='Constant Value'/>
-</column>
-</table-row>
-<table-row rowId='5'>
-<column id='j_id0:6:j_id1:5:j_id8'>
-<button id='j_id0:6:j_id1:5:j_id9' value='command5'/>
-</column>
-<column id='j_id0:6:j_id1:5:j_id10'>
-<text id='j_id0:6:j_id1:5:j_id2' value='input5'/>
-</column>
-<column id='j_id0:6:j_id1:5:j_id11'>
-<text id='j_id0:6:j_id1:5:j_id12' value='output5'/>
-</column>
-<column id='j_id0:6:j_id1:5:j_id13'>
-<text id='j_id0:6:j_id1:5:j_id14' value='Constant Value'/>
-</column>
-</table-row>
-<table-row rowId='6'>
-<column id='j_id0:6:j_id1:6:j_id8'>
-<button id='j_id0:6:j_id1:6:j_id9' value='command6'/>
-</column>
-<column id='j_id0:6:j_id1:6:j_id10'>
-<text id='j_id0:6:j_id1:6:j_id2' value='input6'/>
-</column>
-<column id='j_id0:6:j_id1:6:j_id11'>
-<text id='j_id0:6:j_id1:6:j_id12' value='output6'/>
-</column>
-<column id='j_id0:6:j_id1:6:j_id13'>
-<text id='j_id0:6:j_id1:6:j_id14' value='Constant Value'/>
-</column>
-</table-row>
-<table-row rowId='7'>
-<column id='j_id0:6:j_id1:7:j_id8'>
-<button id='j_id0:6:j_id1:7:j_id9' value='command7'/>
-</column>
-<column id='j_id0:6:j_id1:7:j_id10'>
-<text id='j_id0:6:j_id1:7:j_id2' value='input7'/>
-</column>
-<column id='j_id0:6:j_id1:7:j_id11'>
-<text id='j_id0:6:j_id1:7:j_id12' value='output7'/>
-</column>
-<column id='j_id0:6:j_id1:7:j_id13'>
-<text id='j_id0:6:j_id1:7:j_id14' value='Constant Value'/>
-</column>
-</table-row>
-<column-footer id='j_id0:6:j_id1:j_id15'>
-<text id='j_id0:6:j_id1:j_id15' value='Command Footer'/>
-</column-footer>
-<column-footer id='j_id0:6:j_id1:j_id16'>
-<text id='j_id0:6:j_id1:j_id16' value='Input Footer'/>
-</column-footer>
-<column-footer id='j_id0:6:j_id1:j_id17'>
-<text id='j_id0:6:j_id1:j_id17' value='Output Footer'/>
-</column-footer>
-<column-footer id='j_id0:6:j_id1:j_id18'>
-<text id='j_id0:6:j_id1:j_id18' value='Constant Footer'/>
-</column-footer>
-</table>
-</column>
-</table-row>
-<table-row rowId='7'>
-<column id='j_id0:7:j_id3'>
-<table id='j_id0:7:j_id1'>
-<column-header id='j_id0:7:j_id1:j_id4'>
-<text id='j_id0:7:j_id1:j_id4' value='Command Header'/>
-</column-header>
-<column-header id='j_id0:7:j_id1:j_id5'>
-<text id='j_id0:7:j_id1:j_id5' value='Input Header'/>
-</column-header>
-<column-header id='j_id0:7:j_id1:j_id6'>
-<text id='j_id0:7:j_id1:j_id6' value='Output Header'/>
-</column-header>
-<column-header id='j_id0:7:j_id1:j_id7'>
-<text id='j_id0:7:j_id1:j_id7' value='Constant Header'/>
-</column-header>
-<table-row rowId='3'>
-<column id='j_id0:7:j_id1:3:j_id8'>
-<button id='j_id0:7:j_id1:3:j_id9' value='command3'/>
-</column>
-<column id='j_id0:7:j_id1:3:j_id10'>
-<text id='j_id0:7:j_id1:3:j_id2' value='input3'/>
-</column>
-<column id='j_id0:7:j_id1:3:j_id11'>
-<text id='j_id0:7:j_id1:3:j_id12' value='output3'/>
-</column>
-<column id='j_id0:7:j_id1:3:j_id13'>
-<text id='j_id0:7:j_id1:3:j_id14' value='Constant Value'/>
-</column>
-</table-row>
-<table-row rowId='4'>
-<column id='j_id0:7:j_id1:4:j_id8'>
-<button id='j_id0:7:j_id1:4:j_id9' value='command4'/>
-</column>
-<column id='j_id0:7:j_id1:4:j_id10'>
-<text id='j_id0:7:j_id1:4:j_id2' value='input4'/>
-</column>
-<column id='j_id0:7:j_id1:4:j_id11'>
-<text id='j_id0:7:j_id1:4:j_id12' value='output4'/>
-</column>
-<column id='j_id0:7:j_id1:4:j_id13'>
-<text id='j_id0:7:j_id1:4:j_id14' value='Constant Value'/>
-</column>
-</table-row>
-<table-row rowId='5'>
-<column id='j_id0:7:j_id1:5:j_id8'>
-<button id='j_id0:7:j_id1:5:j_id9' value='command5'/>
-</column>
-<column id='j_id0:7:j_id1:5:j_id10'>
-<text id='j_id0:7:j_id1:5:j_id2' value='input5'/>
-</column>
-<column id='j_id0:7:j_id1:5:j_id11'>
-<text id='j_id0:7:j_id1:5:j_id12' value='output5'/>
-</column>
-<column id='j_id0:7:j_id1:5:j_id13'>
-<text id='j_id0:7:j_id1:5:j_id14' value='Constant Value'/>
-</column>
-</table-row>
-<table-row rowId='6'>
-<column id='j_id0:7:j_id1:6:j_id8'>
-<button id='j_id0:7:j_id1:6:j_id9' value='command6'/>
-</column>
-<column id='j_id0:7:j_id1:6:j_id10'>
-<text id='j_id0:7:j_id1:6:j_id2' value='input6'/>
-</column>
-<column id='j_id0:7:j_id1:6:j_id11'>
-<text id='j_id0:7:j_id1:6:j_id12' value='output6'/>
-</column>
-<column id='j_id0:7:j_id1:6:j_id13'>
-<text id='j_id0:7:j_id1:6:j_id14' value='Constant Value'/>
-</column>
-</table-row>
-<table-row rowId='7'>
-<column id='j_id0:7:j_id1:7:j_id8'>
-<button id='j_id0:7:j_id1:7:j_id9' value='command7'/>
-</column>
-<column id='j_id0:7:j_id1:7:j_id10'>
-<text id='j_id0:7:j_id1:7:j_id2' value='input7'/>
-</column>
-<column id='j_id0:7:j_id1:7:j_id11'>
-<text id='j_id0:7:j_id1:7:j_id12' value='output7'/>
-</column>
-<column id='j_id0:7:j_id1:7:j_id13'>
-<text id='j_id0:7:j_id1:7:j_id14' value='Constant Value'/>
-</column>
-</table-row>
-<column-footer id='j_id0:7:j_id1:j_id15'>
-<text id='j_id0:7:j_id1:j_id15' value='Command Footer'/>
-</column-footer>
-<column-footer id='j_id0:7:j_id1:j_id16'>
-<text id='j_id0:7:j_id1:j_id16' value='Input Footer'/>
-</column-footer>
-<column-footer id='j_id0:7:j_id1:j_id17'>
-<text id='j_id0:7:j_id1:j_id17' value='Output Footer'/>
-</column-footer>
-<column-footer id='j_id0:7:j_id1:j_id18'>
-<text id='j_id0:7:j_id1:j_id18' value='Constant Footer'/>
-</column-footer>
-</table>
-</column>
-</table-row>
-</table>
diff --git a/jsf-api/src/test/java/javax/faces/component/UIFormTestCase.java b/jsf-api/src/test/java/javax/faces/component/UIFormTestCase.java
deleted file mode 100644
index 45f6d21..0000000
--- a/jsf-api/src/test/java/javax/faces/component/UIFormTestCase.java
+++ /dev/null
@@ -1,317 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package javax.faces.component;
-
-
-import java.io.IOException;
-import java.util.Iterator;
-import javax.faces.component.UIComponent;
-import javax.faces.component.UIForm;
-import javax.faces.component.UIViewRoot;
-import javax.faces.component.UIInput;
-import javax.faces.render.RenderKitFactory;
-import junit.framework.TestCase;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-
-/**
- * <p>Unit tests for {@link UIForm}.</p>
- */
-
-public class UIFormTestCase extends UIComponentBaseTestCase {
-
-
-    // ------------------------------------------------------------ Constructors
-
-
-    /**
-     * Construct a new instance of this test case.
-     *
-     * @param name Name of the test case
-     */
-    public UIFormTestCase(String name) {
-        super(name);
-    }
-
-
-    // ---------------------------------------------------- Overall Test Methods
-
-
-    // Set up instance variables required by this test case.
-    public void setUp() {
-        super.setUp();
-        component = new UIForm();
-        expectedFamily = UIForm.COMPONENT_FAMILY;
-        expectedId = null;
-        expectedRendererType = "javax.faces.Form";
-    }
-
-
-    // Return the tests included in this test case.
-    public static Test suite() {
-        return (new TestSuite(UIFormTestCase.class));
-    }
-
-
-    // Tear down instance variables required by ths test case
-    public void tearDown() {
-        super.tearDown();
-    }
-
-
-    // ------------------------------------------------- Individual Test Methods
-
-
-    // Suppress lifecycle tests since we do not have a renderer
-    public void testLifecycleManagement() {
-    }
-
-
-    // Test a pristine UIForm instance
-    public void testPristine() {
-
-        super.testPristine();
-        UIForm form = (UIForm) component;
-
-    }
-
-
-    // Test setting properties to invalid values
-    public void testPropertiesInvalid() throws Exception {
-
-        super.testPropertiesInvalid();
-        UIForm form = (UIForm) component;
-
-    }
-
-
-    // Test setting properties to valid values
-    public void testPropertiesValid() throws Exception {
-
-        super.testPropertiesValid();
-        UIForm form = (UIForm) component;
-
-    }
-
-    // test prependId does the right thing.
-    public void testPrependId() throws Exception {
-
-	UIForm form = null;
-	UIInput input = null;
-    UINamingContainer container = null;
-	UIViewRoot root = null;
-	
-	// Case 1: no user specified id anywhere, isPrependId==true
-	root = new UIViewRoot();
-	form = new UIForm();
-	input = new UIInput();
-	root.setRenderKitId(RenderKitFactory.HTML_BASIC_RENDER_KIT);
-	
-	form.getChildren().add(input);
-	root.getChildren().add(form);
-
-	facesContext.setViewRoot(root);
-
-	assertEquals("Case 1: no user specified id anywhere, isPrependId==true .",
-		     "j_id0:j_id1", input.getClientId(facesContext));
-
-
-	// Case 2: user specified id on form only, isPrependId==true
-	root = new UIViewRoot();
-	form = new UIForm();
-	input = new UIInput();
-	root.setRenderKitId(RenderKitFactory.HTML_BASIC_RENDER_KIT);	
-	form.setId("form");
-
-	form.getChildren().add(input);
-	root.getChildren().add(form);
-
-	facesContext.setViewRoot(root);
-
-	assertEquals("Case 2: user specified id on form only, isPrependId==true .",
-		     "form:j_id0", input.getClientId(facesContext));
-
-	// Case 3: user specified id on input only, isPrependId==true
-	root = new UIViewRoot();
-	form = new UIForm();
-	input = new UIInput();
-	root.setRenderKitId(RenderKitFactory.HTML_BASIC_RENDER_KIT);	
-	input.setId("input");
-
-	form.getChildren().add(input);
-	root.getChildren().add(form);
-
-	facesContext.setViewRoot(root);
-
-	assertEquals("Case 3: user specified id on input only, isPrependId==true .",
-		     "j_id0:input", input.getClientId(facesContext));
-
-	// Case 4: user specified id everywhere, isPrependId==true
-	root = new UIViewRoot();
-	form = new UIForm();
-	input = new UIInput();
-	root.setRenderKitId(RenderKitFactory.HTML_BASIC_RENDER_KIT);	
-	form.setId("form");
-	input.setId("input");
-
-	form.getChildren().add(input);
-	root.getChildren().add(form);
-
-	facesContext.setViewRoot(root);
-
-	assertEquals("Case 4: user specified id everywhere, isPrependId==true .",
-		     "form:input", input.getClientId(facesContext));
-
-	// Case 5: no user specified id anywhere, isPrependId==false
-	root = new UIViewRoot();
-	form = new UIForm();
-	input = new UIInput();
-	root.setRenderKitId(RenderKitFactory.HTML_BASIC_RENDER_KIT);	
-	form.setPrependId(false);
-	form.getChildren().add(input);
-	root.getChildren().add(form);
-
-	facesContext.setViewRoot(root);
-
-	assertEquals("Case 5: no user specified id anywhere, isPrependId==false .",
-		     "j_id0", input.getClientId(facesContext));
-
-
-	// Case 6: user specified id on form only, isPrependId==false
-	root = new UIViewRoot();
-	form = new UIForm();
-	input = new UIInput();
-	root.setRenderKitId(RenderKitFactory.HTML_BASIC_RENDER_KIT);	
-	form.setPrependId(false);
-	form.setId("form");
-
-	form.getChildren().add(input);
-	root.getChildren().add(form);
-
-	facesContext.setViewRoot(root);
-
-	assertEquals("Case 6: user specified id on form only, isPrependId==false .",
-		     "j_id0", input.getClientId(facesContext));
-
-	// Case 7: user specified id on input only, isPrependId==false
-	root = new UIViewRoot();
-	form = new UIForm();
-	input = new UIInput();
-	root.setRenderKitId(RenderKitFactory.HTML_BASIC_RENDER_KIT);	
-	form.setPrependId(false);
-	input.setId("input");
-
-	form.getChildren().add(input);
-	root.getChildren().add(form);
-
-	facesContext.setViewRoot(root);
-
-	assertEquals("Case 7: user specified id on input only, isPrependId==false .",
-		     "input", input.getClientId(facesContext));
-
-	// Case 8: user specified id everywhere, isPrependId==false
-	root = new UIViewRoot();
-	form = new UIForm();
-	input = new UIInput();
-	root.setRenderKitId(RenderKitFactory.HTML_BASIC_RENDER_KIT);	
-	form.setPrependId(false);
-	form.setId("form");
-	input.setId("input");
-
-	form.getChildren().add(input);
-	root.getChildren().add(form);
-
-	facesContext.setViewRoot(root);
-
-	assertEquals("Case 8: user specified id everywhere, isPrependId==false .",
-		     "input", input.getClientId(facesContext));
-
-	// Case 9: UIForm only, no user specified id, isPrependId==true
-	form = new UIForm();
-	assertEquals("Case 9: UIForm only, no user specified id, isPrepend==true",
-		     "j_id0", form.getClientId(facesContext));
-
-	// Case 10: UIForm only, no user specified id, isPrependId==false
-	form = new UIForm();
-	form.setPrependId(false);
-	assertEquals("Case 10: UIForm only, no user specified id, isPrependId==false",
-		     "j_id1", form.getClientId(facesContext));
-    
-    
-    // Case 11: UIForm has a parent NamingContainer, isPrependId==true"
-    root = new UIViewRoot();
-    container = new UINamingContainer();
-    form = new UIForm();
-    input = new UIInput();
-    root.setRenderKitId(RenderKitFactory.HTML_BASIC_RENDER_KIT);    
-    form.setPrependId(true);
-    container.setId("subview");
-    form.setId("form");
-    input.setId("input");
-    
-    form.getChildren().add(input);
-    container.getChildren().add(form);
-    root.getChildren().add(container);
-    
-    facesContext.setViewRoot(root);
-    
-    assertEquals("Case 11: UIForm has a parent NamingContainer, isPrependId==true",
-            "subview:form:input", input.getClientId(facesContext));
-    
-    // Case 12: UIForm has a parent NamingContainer, isPrependId==false
-    form.setPrependId(false);
-    input.setId("input");
-    assertEquals("Case 12: UIForm has a parent NamingContainer, isPrependId==false",
-            "subview:input", input.getClientId(facesContext));
-    
-
-    }
-
-    public void testSaveState() throws Exception {
-        UIForm form = new UIForm();
-        form.getAttributes().put("foo", "bar");
-        form.setPrependId(true);
-        Object state = form.saveState(facesContext);
-        form = new UIForm();
-        form.restoreState(facesContext, state);
-        assertTrue("bar".equals(form.getAttributes().get("foo")));
-        assertTrue(form.isPrependId());
-    }
-
-
-}
diff --git a/jsf-api/src/test/java/javax/faces/component/UIGraphicTestCase.java b/jsf-api/src/test/java/javax/faces/component/UIGraphicTestCase.java
deleted file mode 100644
index 27af5ab..0000000
--- a/jsf-api/src/test/java/javax/faces/component/UIGraphicTestCase.java
+++ /dev/null
@@ -1,230 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package javax.faces.component;
-
-
-import java.io.IOException;
-import java.util.Iterator;
-import javax.faces.el.ValueBinding;
-import junit.framework.TestCase;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-
-/**
- * <p>Unit tests for {@link UIGraphic}.</p>
- */
-
-public class UIGraphicTestCase extends UIComponentBaseTestCase {
-
-
-    // ------------------------------------------------------------ Constructors
-
-
-    /**
-     * Construct a new instance of this test case.
-     *
-     * @param name Name of the test case
-     */
-    public UIGraphicTestCase(String name) {
-        super(name);
-    }
-
-
-    // ---------------------------------------------------- Overall Test Methods
-
-
-    // Set up instance variables required by this test case.
-    public void setUp() {
-        super.setUp();
-        component = new UIGraphic();
-        expectedFamily = UIGraphic.COMPONENT_FAMILY;
-        expectedId = null;
-        expectedRendererType = "javax.faces.Image";
-    }
-
-
-    // Return the tests included in this test case.
-    public static Test suite() {
-        return (new TestSuite(UIGraphicTestCase.class));
-    }
-
-
-    // Tear down instance variables required by ths test case
-    public void tearDown() {
-        super.tearDown();
-    }
-
-
-    // ------------------------------------------------- Individual Test Methods
-
-
-    // Test attribute-property transparency
-    public void testAttributesTransparency() {
-
-        super.testAttributesTransparency();
-        UIGraphic graphic = (UIGraphic) component;
-
-        assertEquals(graphic.getValue(),
-                     (String) component.getAttributes().get("value"));
-        graphic.setValue("foo");
-        assertEquals("foo", (String) component.getAttributes().get("value"));
-        graphic.setValue(null);
-        assertNull((String) component.getAttributes().get("value"));
-        component.getAttributes().put("value", "bar");
-        assertEquals("bar", graphic.getValue());
-        component.getAttributes().put("value", null);
-        assertNull(graphic.getValue());
-
-        assertEquals(graphic.getUrl(),
-                     (String) graphic.getAttributes().get("url"));
-        graphic.setUrl("foo");
-        assertEquals("foo", (String) graphic.getAttributes().get("url"));
-        graphic.setUrl(null);
-        assertNull((String) graphic.getAttributes().get("url"));
-        graphic.getAttributes().put("url", "bar");
-        assertEquals("bar", graphic.getUrl());
-        graphic.getAttributes().put("url", null);
-        assertNull(graphic.getUrl());
-
-    }
-
-
-    // Suppress lifecycle tests since we do not have a renderer
-    public void testLifecycleManagement() {
-    }
-
-    // Test a pristine UIGraphic instance
-    public void testPristine() {
-
-        super.testPristine();
-        UIGraphic graphic = (UIGraphic) component;
-
-        assertNull("no value", graphic.getValue());
-        assertNull("no url", graphic.getUrl());
-
-    }
-
-
-    // Test setting properties to invalid values
-    public void testPropertiesInvalid() throws Exception {
-
-        super.testPropertiesInvalid();
-        UIGraphic graphic = (UIGraphic) component;
-
-    }
-
-
-    // Test setting properties to valid values
-    public void testPropertiesValid() throws Exception {
-
-        super.testPropertiesValid();
-        UIGraphic graphic = (UIGraphic) component;
-
-        // value
-        graphic.setValue("foo.bar");
-        assertEquals("expected value",
-                     "foo.bar", graphic.getValue());
-        graphic.setValue(null);
-        assertNull("erased value", graphic.getValue());
-
-        // Test transparency between "value" and "url" properties
-        graphic.setUrl("foo");
-        assertEquals("foo", (String) graphic.getValue());
-        graphic.setUrl(null);
-        assertNull(graphic.getValue());
-        graphic.setValue("bar");
-        assertEquals("bar", graphic.getUrl());
-        graphic.setValue(null);
-        assertNull(graphic.getUrl());
-
-        // Transparency applies to value bindings as well
-        assertNull(graphic.getValueBinding("url"));
-        assertNull(graphic.getValueBinding("value"));
-        request.setAttribute("foo", "bar");
-        ValueBinding vb = application.createValueBinding("#{foo}");
-        graphic.setValueBinding("url", vb);
-        assertTrue(vb == graphic.getValueBinding("url"));
-        assertTrue(vb == graphic.getValueBinding("value"));
-        graphic.setValueBinding("url", null);
-        assertNull(graphic.getValueBinding("url"));
-        assertNull(graphic.getValueBinding("value"));
-        graphic.setValueBinding("value", vb);
-        assertTrue(vb == graphic.getValueBinding("url"));
-        assertTrue(vb == graphic.getValueBinding("value"));
-        graphic.setValueBinding("url", null);
-        assertNull(graphic.getValueBinding("url"));
-        assertNull(graphic.getValueBinding("value"));
-
-    }
-
-
-    public void PENDING_FIXME_testValueBindings() {
-
-	super.testValueBindings();
-	UIGraphic test = (UIGraphic) component;
-
-	// "value" property
-	request.setAttribute("foo", "bar");
-	test.setValue(null);
-	assertNull(test.getValue());
-	test.setValueBinding("value", application.createValueBinding("#{foo}"));
-	assertNotNull(test.getValueBinding("value"));
-	assertEquals("bar", test.getValue());
-	test.setValue("baz");
-	assertEquals("baz", test.getValue());
-	test.setValue(null);
-	assertEquals("bar", test.getValue());
-	test.setValueBinding("value", null);
-	assertNull(test.getValueBinding("value"));
-	assertNull(test.getValue());
-
-    }
-
-
-    // --------------------------------------------------------- Support Methods
-
-
-    // Create a pristine component of the type to be used in state holder tests
-    protected UIComponent createComponent() {
-        UIComponent component = new UIGraphic();
-        component.setRendererType(null);
-        return (component);
-    }
-
-
-}
diff --git a/jsf-api/src/test/java/javax/faces/component/UIInputAttachedObjectStateTestCase.java b/jsf-api/src/test/java/javax/faces/component/UIInputAttachedObjectStateTestCase.java
deleted file mode 100644
index 8c2c407..0000000
--- a/jsf-api/src/test/java/javax/faces/component/UIInputAttachedObjectStateTestCase.java
+++ /dev/null
@@ -1,173 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- *
- * Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
- *
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- *
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- *
- * Contributor(s):
- *
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package javax.faces.component;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-import junit.framework.TestCase;
-
-import javax.faces.context.FacesContext;
-import javax.faces.validator.LengthValidator;
-import javax.faces.validator.Validator;
-
-import com.sun.faces.mock.MockFacesContext;
-import com.sun.faces.mock.MockApplication;
-
-
-public class UIInputAttachedObjectStateTestCase extends TestCase {
-
-    private MockFacesContext facesContext;
-
-    public UIInputAttachedObjectStateTestCase(String arg0) {
-        super(arg0);
-    }
-
-    // Return the tests included in this test case.
-    public static Test suite() {
-        return (new TestSuite(UIInputAttachedObjectStateTestCase.class));
-    }
-
-    public void setUp() throws Exception {
-        super.setUp();
-        facesContext = new MockFacesContext();
-        facesContext.setApplication(new MockApplication());
-    }
-
-
-    // ------------------------------------------------------------ Test Methods
-
-
-    public void testValidatorState() {
-
-        UIInput input = new UIInput();
-        LengthValidator l1 = new LengthValidator();
-        LengthValidator l2 = new LengthValidator();
-        input.addValidator(l1);
-        input.addValidator(l2);
-        l1.setMinimum(1);
-        l2.setMinimum(2);
-        input.markInitialState();
-        assertTrue(input.initialStateMarked());
-        assertTrue(l1.initialStateMarked());
-        assertTrue(l2.initialStateMarked());
-
-        Object state = input.saveState(facesContext);
-        assertTrue(state instanceof Object[]);
-        assertTrue(((Object[]) state)[3] == null);
-
-        input = new UIInput();
-        l1 = new LengthValidator();
-        l2 = new LengthValidator();
-        input.addValidator(l1);
-        input.addValidator(l2);
-        l1.setMinimum(1);
-        l2.setMinimum(2);
-        input.markInitialState();
-        l2.setMinimum(3);
-        assertTrue(input.initialStateMarked());
-        assertTrue(l1.initialStateMarked());
-        assertTrue(!l2.initialStateMarked());
-        state = input.saveState(facesContext);
-        assertTrue(state instanceof Object[]);
-        Object[] validatorState = (Object[]) ((Object[]) state)[3];
-        assertNotNull(validatorState);
-        assertNull(validatorState[0]);
-        assertNotNull(validatorState[1]);
-        assertTrue(!(validatorState[1] instanceof StateHolderSaver));
-        input = new UIInput();
-        l1 = new LengthValidator();
-        l2 = new LengthValidator();
-        l1.setMinimum(1);
-        l2.setMinimum(2);
-        input.addValidator(l1);
-        input.addValidator(l2);
-        input.restoreState(facesContext, state);
-        assertTrue(l1.getMinimum() == 1);
-        assertTrue(l2.getMinimum() == 3);
-        assertTrue(input.getValidators().length == 2);
-
-        input = new UIInput();
-        l1 = new LengthValidator();
-        l2 = new LengthValidator();
-        input.addValidator(l1);
-        input.addValidator(l2);
-        l1.setMinimum(1);
-        l2.setMinimum(2);
-        input.markInitialState();
-        LengthValidator l3 = new LengthValidator();
-        l3.setMinimum(3);
-        input.addValidator(l3);
-        state = input.saveState(facesContext);
-        assertNotNull(validatorState);
-        assertTrue(state instanceof Object[]);
-        validatorState = (Object[]) ((Object[]) state)[3];
-        assertNotNull(validatorState);
-        assertTrue(validatorState.length == 3);
-        assertNotNull(validatorState[0]);
-        assertNotNull(validatorState[1]);
-        assertNotNull(validatorState[2]);
-        assertTrue(validatorState[0] instanceof StateHolderSaver);
-        assertTrue(validatorState[1] instanceof StateHolderSaver);
-        assertTrue(validatorState[2] instanceof StateHolderSaver);
-
-        input = new UIInput();
-        l1 = new LengthValidator();
-        l2 = new LengthValidator();
-        l3 = new LengthValidator();
-        LengthValidator l4 = new LengthValidator();
-        input.addValidator(l1);
-        input.addValidator(l2);
-        input.addValidator(l3);
-        input.addValidator(l4);
-        l1.setMinimum(100);
-        l2.setMinimum(101);
-        l3.setMinimum(102);
-        l4.setMinimum(103);
-        assertTrue(input.getValidators().length == 4);
-        input.markInitialState();
-        input.restoreState(facesContext, state);
-        assertTrue(input.getValidators().length == 3);
-       
-        Validator[] validators = input.getValidators();
-        for (int i = 0, len = validators.length; i < len; i++) {
-            LengthValidator v = (LengthValidator) validators[i];
-            assertTrue(v.getMinimum() == (i + 1));
-        }
-
-    }
-    
-}
diff --git a/jsf-api/src/test/java/javax/faces/component/UIInputTestCase.java b/jsf-api/src/test/java/javax/faces/component/UIInputTestCase.java
deleted file mode 100644
index bb19c11..0000000
--- a/jsf-api/src/test/java/javax/faces/component/UIInputTestCase.java
+++ /dev/null
@@ -1,682 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package javax.faces.component;
-
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-import javax.faces.application.Application;
-import javax.faces.application.FacesMessage;
-import javax.faces.context.FacesContext;
-import javax.faces.el.MethodBinding;
-import javax.faces.event.PhaseId;
-import javax.faces.event.ValueChangeEvent;
-import javax.faces.event.ValueChangeListener;
-import javax.faces.validator.Validator;
-import java.util.Iterator;
-
-
-/**
- * <p>Unit tests for {@link UIInput}.</p>
- */
-
-public class UIInputTestCase extends UIOutputTestCase {
-
-
-    // ------------------------------------------------------------ Constructors
-
-
-    /**
-     * Construct a new instance of this test case.
-     *
-     * @param name Name of the test case
-     */
-    public UIInputTestCase(String name) {
-        super(name);
-    }
-
-
-    // ---------------------------------------------------- Overall Test Methods
-
-
-    // Set up instance variables required by this test case.
-    public void setUp() {
-        super.setUp();
-        component = new UIInput();
-        expectedFamily = UIInput.COMPONENT_FAMILY;
-        expectedRendererType = "javax.faces.Text";
-    }
-
-
-    // Return the tests included in this test case.
-    public static Test suite() {
-        return (new TestSuite(UIInputTestCase.class));
-    }
-
-
-    // Tear down instance variables required by ths test case
-    public void tearDown() {
-        super.tearDown();
-    }
-
-
-    // ------------------------------------------------- Individual Test Methods
-
-
-    // Test attribute-property transparency
-    public void testAttributesTransparency() {
-
-        super.testAttributesTransparency();
-        UIInput input = (UIInput) component;
-
-        assertEquals(input.getSubmittedValue(),
-                (String) input.getAttributes().get("submittedValue"));
-        input.setSubmittedValue("foo");
-        assertEquals("foo", (String) input.getAttributes().get("submittedValue"));
-        input.setSubmittedValue(null);
-        assertNull((String) input.getAttributes().get("submittedValue"));
-        input.getAttributes().put("submittedValue", "bar");
-        assertEquals("bar", input.getSubmittedValue());
-        input.getAttributes().put("submittedValue", null);
-        assertNull(input.getSubmittedValue());
-
-        input.setRequired(true);
-        assertEquals(Boolean.TRUE,
-                (Boolean) input.getAttributes().get("required"));
-        input.setRequired(false);
-        assertEquals(Boolean.FALSE,
-                (Boolean) input.getAttributes().get("required"));
-        input.getAttributes().put("required", Boolean.TRUE);
-        assertTrue(input.isRequired());
-        input.getAttributes().put("required", Boolean.FALSE);
-        assertTrue(!input.isRequired());
-
-        assertEquals(input.isValid(), true);
-        assertEquals(input.isValid(),
-                ((Boolean) component.getAttributes().get("valid")).
-                        booleanValue());
-        input.setValid(false);
-        assertEquals(input.isValid(),
-                ((Boolean) component.getAttributes().get("valid")).
-                        booleanValue());
-        component.getAttributes().put("valid", Boolean.TRUE);
-        assertEquals(input.isValid(),
-                ((Boolean) component.getAttributes().get("valid")).
-                        booleanValue());
-
-    }
-
-
-    // Test the compareValues() method
-    public void testCompareValues() {
-
-        TestInput input = new TestInput();
-        Object value1a = "foo";
-        Object value1b = "foo";
-        Object value2 = "bar";
-        Object value3 = null;
-
-        assertTrue(!input.compareValues(value1a, value1a));
-        assertTrue(!input.compareValues(value1a, value1b));
-        assertTrue(!input.compareValues(value1b, value1b));
-        assertTrue(!input.compareValues(value2, value2));
-        assertTrue(!input.compareValues(value3, value3));
-
-        assertTrue(input.compareValues(value1a, value2));
-        assertTrue(input.compareValues(value1a, value3));
-        assertTrue(input.compareValues(value2, value3));
-        assertTrue(input.compareValues(value3, value2));
-
-    }
-
-
-    // Test event queuing and broadcasting (any phase listeners)
-    public void testEventsGeneric() {
-
-        UIInput input = (UIInput) component;
-        ValueChangeEvent event = new ValueChangeEvent(input, null, null);
-
-        // Register three listeners
-        input.addValueChangeListener
-                (new TestValueChangeListener("AP0"));
-        input.addValueChangeListener
-                (new TestValueChangeListener("AP1"));
-        input.addValueChangeListener
-                (new TestValueChangeListener("AP2"));
-
-        // Fire events and evaluate results
-        TestValueChangeListener.trace(null);
-        input.broadcast(event);
-        assertEquals("/AP0/AP1/AP2",
-                TestValueChangeListener.trace());
-
-    }
-
-
-    // Test event queuing and broadcasting (mixed phase listeners)
-    public void testEventsMixed() {
-
-        UIInput input = (UIInput) component;
-        input.setRendererType(null);
-        UIViewRoot root = facesContext.getApplication().getViewHandler().createView(facesContext, null);
-        root.getChildren().add(input);
-        ValueChangeEvent event = null;
-
-        // Register three listeners
-        input.addValueChangeListener
-                (new TestValueChangeListener("ARV"));
-        input.addValueChangeListener
-                (new TestValueChangeListener("PV"));
-        input.addValueChangeListener
-                (new TestValueChangeListener("AP"));
-
-        TestValueChangeListener.trace(null);
-        event = new ValueChangeEvent(input, null, null);
-        event.setPhaseId(PhaseId.APPLY_REQUEST_VALUES);
-        input.queueEvent(event);
-
-        event = new ValueChangeEvent(input, null, null);
-        event.setPhaseId(PhaseId.PROCESS_VALIDATIONS);
-        input.queueEvent(event);
-
-        event = new ValueChangeEvent(input, null, null);
-        event.setPhaseId(PhaseId.INVOKE_APPLICATION);
-        input.queueEvent(event);
-
-        // Fire events and evaluate results
-        root.processDecodes(facesContext);
-        root.processValidators(facesContext);
-        root.processApplication(facesContext);
-        assertEquals("/ARV/PV/AP/ARV/PV/AP/ARV/PV/AP",
-                TestValueChangeListener.trace());
-
-    }
-
-    // Test listener registration and deregistration
-    public void testListeners() {
-
-        TestInput input = new TestInput();
-        TestValueChangeListener listener = null;
-
-        input.addValueChangeListener
-                (new TestValueChangeListener("ARV0"));
-        input.addValueChangeListener
-                (new TestValueChangeListener("ARV1"));
-        input.addValueChangeListener
-                (new TestValueChangeListener("PV0"));
-        input.addValueChangeListener
-                (new TestValueChangeListener("PV1"));
-        input.addValueChangeListener
-                (new TestValueChangeListener("PV2"));
-
-        ValueChangeListener listeners[] = input.getValueChangeListeners();
-        assertEquals(5, listeners.length);
-        input.removeValueChangeListener(listeners[2]);
-        listeners = input.getValueChangeListeners();
-        assertEquals(4, listeners.length);
-
-    }
-
-    // Test empty listener list
-    public void testEmptyListeners() {
-
-        TestInput input = new TestInput();
-        TestValueChangeListener listener = null;
-
-        //No listeners added, should be empty
-        ValueChangeListener listeners[] = input.getValueChangeListeners();
-        assertEquals(0, listeners.length);
-
-    }
-
-    // Test a pristine UIInput instance
-    public void testPristine() {
-
-        super.testPristine();
-        UIInput input = (UIInput) component;
-
-        assertNull("no submittedValue", input.getSubmittedValue());
-        assertTrue("not required", !input.isRequired());
-        assertTrue("is valid", input.isValid());
-        assertTrue("is not immediate", !input.isImmediate());
-        assertNull("no validatorBinding", input.getValidator());
-        assertNull("no valueChangeListener", input.getValueChangeListener());
-
-    }
-
-
-    // Test setting properties to invalid values
-    public void testPropertiesInvalid() throws Exception {
-
-        super.testPropertiesInvalid();
-        UIInput input = (UIInput) component;
-
-    }
-
-
-    // Test setting properties to valid values
-    public void testPropertiesValid() throws Exception {
-
-        super.testPropertiesValid();
-        UIInput input = (UIInput) component;
-
-        input.setSubmittedValue("foo");
-        assertEquals("foo", input.getSubmittedValue());
-        input.setSubmittedValue(null);
-        assertNull(input.getSubmittedValue());
-
-        input.setRequired(true);
-        assertTrue(input.isRequired());
-        input.setRequired(false);
-        assertTrue(!input.isRequired());
-
-        input.setValid(false);
-        assertTrue(!input.isValid());
-        input.setValid(true);
-        assertTrue(input.isValid());
-
-        Application app = facesContext.getApplication();
-        MethodBinding methodBinding = null;
-
-        input.setValidator(methodBinding =
-                app.createMethodBinding("#{foo.bar}", null));
-        assertEquals(methodBinding, input.getValidator());
-        input.setValidator(null);
-        assertNull(input.getValidator());
-
-        input.setValueChangeListener(methodBinding =
-                app.createMethodBinding("#{foo.bar}", null));
-        assertEquals(methodBinding, input.getValueChangeListener());
-        input.setValueChangeListener(null);
-        assertNull(input.getValueChangeListener());
-
-    }
-
-
-    // Test updating model values
-    public void testUpdateModel() throws Exception {
-
-        // Set up test bean as a request attribute
-        TestDataBean test = new TestDataBean();
-        test.setCommand("old command");
-        request.setAttribute("test", test);
-
-        // Point at the "command" property
-        UIViewRoot root = facesContext.getApplication().getViewHandler().createView(facesContext, null);
-        root.getChildren().add(component);
-        UIInput input = (UIInput) component;
-        input.setValueBinding
-                ("value",
-                        application.createValueBinding("#{test.command}"));
-        checkMessages(0);
-
-        // Perform update on a valid value
-        input.setValid(true);
-        input.setValue("new command");
-        assertEquals("new command", input.getLocalValue());
-        input.updateModel(facesContext);
-        assertEquals("new command", test.getCommand());
-        assertNull(input.getLocalValue());
-        assertTrue(input.isValid());
-        checkMessages(0);
-        input.resetValue();
-        assertNull(input.getLocalValue());
-        assertEquals("new command", input.getValue());
-        assertNull(input.getSubmittedValue());
-        assertTrue(input.isValid());
-        assertTrue(!input.isLocalValueSet());
-
-        // Skip update on an invalid value
-        input.setValid(false);
-        input.setValue("bad command");
-        assertEquals("bad command", input.getLocalValue());
-        input.updateModel(facesContext);
-        assertEquals("new command", test.getCommand());
-        assertEquals("bad command", input.getLocalValue());
-        assertTrue(!input.isValid());
-        checkMessages(0);
-
-        // Log conversion error on update failure
-        input.setValid(true);
-        input.setValue(new Integer(5));
-        assertEquals(new Integer(5), (Integer) input.getLocalValue());
-        input.updateModel(facesContext);
-        assertEquals("new command", test.getCommand());
-        assertEquals(new Integer(5), (Integer) input.getLocalValue());
-        assertTrue(!input.isValid());
-        checkMessages(1);
-
-        // Perform update on a null value
-        input.setValid(true);
-        input.setValue(null);
-        assertNull(input.getLocalValue());
-        input.updateModel(facesContext);
-        assertNull(test.getCommand());
-        assertNull(input.getLocalValue());
-        assertTrue(input.isValid());
-        checkMessages(1);
-
-    }
-
-
-    // Test order of validator calls with validator also
-    public void testValidateOrder() throws Exception {
-
-        Class validateParams[] = {FacesContext.class, UIComponent.class,
-                Object.class};
-
-        UIViewRoot root = facesContext.getApplication().getViewHandler().createView(facesContext, null);
-        root.getChildren().add(component);
-        UIInput input = (UIInput) component;
-        input.addValidator(new TestInputValidator("v1"));
-        input.addValidator(new TestInputValidator("v2"));
-        Application app = facesContext.getApplication();
-        MethodBinding methodBinding = null;
-
-        input.setValidator(methodBinding =
-                app.createMethodBinding("v3.validate", validateParams));
-        assertEquals(methodBinding, input.getValidator());
-        request.setAttribute("v3", new TestInputValidator("v3"));
-        TestInputValidator.trace(null);
-        setupNewValue(input);
-        root.processValidators(facesContext);
-        assertEquals("/v1/v2/v3", TestInputValidator.trace());
-
-    }
-
-
-    // Test validation of a required field
-    public void testValidateRequired() throws Exception {
-
-        UIViewRoot root = facesContext.getApplication().getViewHandler().createView(facesContext, null);
-        root.getChildren().add(component);
-        UIInput input = (UIInput) component;
-        input.setRequired(true);
-        checkMessages(0);
-
-        input.setValid(true);
-        input.setSubmittedValue("foo");
-        input.validate(facesContext);
-        checkMessages(0);
-        assertTrue(input.isValid());
-
-        input.getAttributes().put("label", "mylabel");
-        input.setValid(true);
-        input.setSubmittedValue("");
-        input.validate(facesContext);
-        checkMessages(1);
-        assertTrue(!input.isValid());
-
-        Iterator messages = facesContext.getMessages();
-        while (messages.hasNext()) {
-            FacesMessage message = (FacesMessage) messages.next();
-            assertTrue(message.getSummary().indexOf("mylabel") >= 0);
-        }
-
-        input.setValid(true);
-        input.setSubmittedValue(null);
-        input.validate(facesContext);
-        // awiner: this was formerly "checkMessages(2)", but a submitted
-        // value of null now explicitly means _do not validate_.
-        checkMessages(1);
-        // awiner: And this next line flipped as well
-        assertTrue(input.isValid());
-    }
-
-
-    // Test that appropriate properties are value binding enabled
-    public void testValueBindings() {
-
-        super.testValueBindings();
-        UIInput test = (UIInput) component;
-
-        // "required" property
-        request.setAttribute("foo", Boolean.FALSE);
-        boolean initial = test.isRequired();
-        if (initial) {
-            request.setAttribute("foo", Boolean.FALSE);
-        } else {
-            request.setAttribute("foo", Boolean.TRUE);
-        }
-        test.setValueBinding("required", application.createValueBinding("#{foo}"));
-        assertEquals(!initial, test.isRequired());
-        test.setRequired(initial);
-        assertEquals(initial, test.isRequired());
-        assertNotNull(test.getValueBinding("required"));
-
-        // "value" property
-        request.setAttribute("foo", "bar");
-        test.setValue(null);
-        assertNull(test.getValue());
-        test.setValueBinding("value", application.createValueBinding("#{foo}"));
-        assertNotNull(test.getValueBinding("value"));
-        assertEquals("bar", test.getValue());
-        test.setValue("baz");
-        assertEquals("baz", test.getValue());
-        test.setValue(null);
-        assertEquals("bar", test.getValue());
-        test.setValueBinding("value", null);
-        assertNull(test.getValueBinding("value"));
-        assertNull(test.getValue());
-
-        // "immediate" property
-        request.setAttribute("foo", Boolean.FALSE);
-        boolean initialImmediate = test.isImmediate();
-        if (initialImmediate) {
-            request.setAttribute("foo", Boolean.FALSE);
-        } else {
-            request.setAttribute("foo", Boolean.TRUE);
-        }
-        test.setValueBinding("immediate", application.createValueBinding("#{foo}"));
-        assertEquals(!initialImmediate, test.isImmediate());
-        test.setImmediate(initialImmediate);
-        assertEquals(initialImmediate, test.isImmediate());
-        assertNotNull(test.getValueBinding("immediate"));
-    }
-
-
-    // Test order of value change calls with valueChangeListener also
-    public void testValueChangeOrder() throws Exception {
-
-        Class signature[] = {ValueChangeEvent.class};
-        Application app = facesContext.getApplication();
-        MethodBinding methodBinding = null;
-
-        UIViewRoot root = facesContext.getApplication().getViewHandler().createView(facesContext, null);
-        root.getChildren().add(component);
-        UIInput input = (UIInput) component;
-        input.addValueChangeListener(new TestInputValueChangeListener("l1"));
-        input.addValueChangeListener(new TestInputValueChangeListener("l2"));
-        input.setValueChangeListener(app.createMethodBinding("l3.processValueChange", signature));
-        request.setAttribute("l3", new TestInputValueChangeListener("l3"));
-        TestInputValueChangeListener.trace(null);
-        setupNewValue(input);
-        root.processValidators(facesContext);
-        assertEquals("/l1/l2/l3", TestInputValueChangeListener.trace());
-
-    }
-
-
-    // Test order of value change calls with valueChangeListener also
-    public void testImmediate() throws Exception {
-
-        Class signature[] = {ValueChangeEvent.class};
-        Application app = facesContext.getApplication();
-        MethodBinding methodBinding = null;
-
-        UIViewRoot root = facesContext.getApplication().getViewHandler().createView(facesContext, null);
-        root.getChildren().add(component);
-        UIInput input = (UIInput) component;
-        input.setImmediate(true);
-        input.addValueChangeListener(new TestInputValueChangeListener("l1"));
-        input.addValueChangeListener(new TestInputValueChangeListener("l2"));
-        input.setValueChangeListener(app.createMethodBinding("l3.processValueChange", signature));
-        request.setAttribute("l3", new TestInputValueChangeListener("l3"));
-        TestInputValueChangeListener.trace(null);
-        setupNewValue(input);
-        root.processValidators(facesContext);
-        // No ValueChangeEvent should get delivered, because
-        // "immediate" processing fires during processDecodes(), not
-        // processValidators()
-        assertEquals("", TestInputValueChangeListener.trace());
-
-    }
-
-    public void testGetValueChangeListeners() throws Exception {
-        UIInput command = (UIInput) component;
-        UIViewRoot root = facesContext.getApplication().getViewHandler().createView(facesContext, null);
-        root.getChildren().add(command);
-
-        TestValueChangeListener
-                ta1 = new TestValueChangeListener("ta1"),
-                ta2 = new TestValueChangeListener("ta2");
-
-        command.addValueChangeListener(ta1);
-        command.addValueChangeListener(ta2);
-        ValueChangeListener[] listeners = (ValueChangeListener[])
-                command.getValueChangeListeners();
-        assertEquals(2, listeners.length);
-        TestValueChangeListener[] taListeners = (TestValueChangeListener[])
-                command.getFacesListeners(TestValueChangeListener.class);
-    }
-
-
-    // --------------------------------------------------------- Support Methods
-
-
-    // Check that the number of queued messages equals the expected count
-    // and that each of them is of severity ERROR
-    protected void checkMessages(int expected) {
-
-        facesContext.getExceptionHandler().handle();
-
-        int n = 0;
-        Iterator messages = facesContext.getMessages();
-        while (messages.hasNext()) {
-            FacesMessage message = (FacesMessage) messages.next();
-            assertEquals("Severity == ERROR",
-                    FacesMessage.SEVERITY_ERROR,
-                    message.getSeverity());
-            n++;
-            // System.err.println(message.getSummary());
-        }
-        assertEquals("expected message count", expected, n);
-
-    }
-
-
-    // Check that the properties on the specified components are equal
-    protected void checkProperties(UIComponent comp1, UIComponent comp2) {
-        super.checkProperties(comp1, comp2);
-        UIInput i1 = (UIInput) comp1;
-        UIInput i2 = (UIInput) comp2;
-        // "submittedValue" is not preserved across state-saves
-        //        assertEquals(i1.getSubmittedValue(), i2.getSubmittedValue());
-        assertEquals(i1.isRequired(), i2.isRequired());
-        assertEquals(i1.isValid(), i2.isValid());
-        assertEquals(i1.getValidator(), i2.getValidator());
-        assertEquals(i1.getValueChangeListener(), i2.getValueChangeListener());
-    }
-
-
-    // Create a pristine component of the type to be used in state holder tests
-    protected UIComponent createComponent() {
-        UIComponent component = new UIInput();
-        component.setRendererType(null);
-        return (component);
-    }
-
-
-    // Populate a pristine component to be used in state holder tests
-    protected void populateComponent(UIComponent component) {
-        super.populateComponent(component);
-        UIInput i = (UIInput) component;
-        i.setSubmittedValue("submittedValue");
-        i.setValid(false);
-        i.setRequired(true);
-        Application app = facesContext.getApplication();
-        MethodBinding methodBinding = null;
-
-        i.setValidator(methodBinding =
-                app.createMethodBinding("#{foo.bar}", null));
-        i.setValueChangeListener(app.createMethodBinding("#{baz.bop}", null));
-    }
-
-
-    protected boolean listenersAreEqual(FacesContext context,
-                                        UIInput comp1,
-                                        UIInput comp2) {
-
-        ValueChangeListener list1[] = comp1.getValueChangeListeners();
-        ValueChangeListener list2[] = comp2.getValueChangeListeners();
-        assertNotNull(list1);
-        assertNotNull(list2);
-        assertEquals(list1.length, list2.length);
-        for (int i = 0; i < list1.length; i++) {
-            assertTrue(list1[i].getClass() == list2[i].getClass());
-        }
-        return true;
-
-    }
-
-
-    protected void setupNewValue(UIInput input) {
-
-        input.setSubmittedValue("foo");
-
-    }
-
-
-    protected boolean validatorsAreEqual(FacesContext context,
-                                         UIInput comp1,
-                                         UIInput comp2) {
-
-        Validator list1[] = comp1.getValidators();
-        Validator list2[] = comp2.getValidators();
-        assertNotNull(list1);
-        assertNotNull(list2);
-        assertEquals(list1.length, list2.length);
-        for (int i = 0; i < list1.length; i++) {
-            assertTrue(list1[i].getClass() == list2[i].getClass());
-        }
-        return (true);
-
-    }
-
-
-}
diff --git a/jsf-api/src/test/java/javax/faces/component/UIOutputAttachedObjectStateTestCase.java b/jsf-api/src/test/java/javax/faces/component/UIOutputAttachedObjectStateTestCase.java
deleted file mode 100644
index 3860874..0000000
--- a/jsf-api/src/test/java/javax/faces/component/UIOutputAttachedObjectStateTestCase.java
+++ /dev/null
@@ -1,153 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- *
- * Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
- *
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- *
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- *
- * Contributor(s):
- *
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package javax.faces.component;
-
-import junit.framework.TestCase;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-import com.sun.faces.mock.MockFacesContext;
-
-import javax.faces.context.FacesContext;
-import javax.faces.convert.DateTimeConverter;
-import javax.faces.convert.Converter;
-
-
-public class UIOutputAttachedObjectStateTestCase extends TestCase {
-
-    private FacesContext facesContext;
-
-    public UIOutputAttachedObjectStateTestCase(String arg0) {
-        super(arg0);
-    }
-
-    // Return the tests included in this test case.
-    public static Test suite() {
-        return (new TestSuite(UIOutputAttachedObjectStateTestCase.class));
-    }
-
-    public void setUp() throws Exception {
-        super.setUp();
-        facesContext = new MockFacesContext();
-    }
-
-    // ------------------------------------------------------------ Test Methods
-
-
-    public void testConverterState() {
-
-        UIOutput output = new UIOutput();
-        DateTimeConverter converter = new DateTimeConverter();
-        converter.setPattern("MM-dd-yy");
-        output.setConverter(converter);
-        output.markInitialState();
-        assertTrue(output.initialStateMarked());
-        assertTrue(converter.initialStateMarked());
-
-        Object result = output.saveState(facesContext);
-        // initial state has been marked an no changes
-        // have occurred, we should have null state.
-        assertNull(result);
-
-        // setup the scenario again, but this time,
-        // update the converter pattern.
-        output = new UIOutput();
-        converter = new DateTimeConverter();
-        converter.setPattern("MM-dd-yy");
-        output.setConverter(converter);
-        output.markInitialState();
-        assertTrue(output.initialStateMarked());
-        assertTrue(converter.initialStateMarked());
-
-        // now tweak the converter
-        converter.setPattern("dd-MM-yy");
-        result = output.saveState(facesContext);
-        assertTrue(result instanceof Object[]);
-        Object[] state = (Object[]) result;
-
-        // state should have a lenght of 2.  The first element
-        // is the state from UIComponentBase, where the second
-        // is the converter state.  The first element in this
-        // case should be null
-        assertTrue(state.length == 2);
-        assertTrue(state[0] == null);
-        assertTrue(state[1] != null);
-
-        output = new UIOutput();
-        converter = new DateTimeConverter();
-        output.setConverter(converter);
-
-        // now validate what we've restored
-        // first, ensure converter is null.  This will
-        // be the case when initialState has been marked
-        // for the component.
-        output.restoreState(facesContext, state);
-        assertTrue(output.getConverter() != null);
-        assertTrue("dd-MM-yy".equals(converter.getPattern()));
-
-        // now validate the case where UIOutput has some event
-        // that adds a converter *after* initial state has been
-        // marked.  This will cause the component to save full
-        // state.
-        output = new UIOutput();
-        output.markInitialState();
-        output.setConverter(converter);
-        assertTrue(!output.initialStateMarked());
-        assertTrue(!converter.initialStateMarked());
-
-        result = output.saveState(facesContext);
-        assertNotNull(result);
-
-        // this time, both elements in the state array will not
-        // be null.  If we call retoreState() on a new component instance
-        // without setting a converter, we should have a new DateTimeConverter
-        // *with* the expected pattern.
-        assertTrue(result instanceof Object[]);
-        state = (Object[]) result;
-        assertTrue(state.length == 2);
-        assertTrue(state[1] instanceof StateHolderSaver);
-        output = new UIOutput();
-        assertNull(output.getConverter());
-        output.restoreState(facesContext, state);
-        Converter c = output.getConverter();
-        assertNotNull(c);
-        assertTrue(c instanceof DateTimeConverter);
-        converter = (DateTimeConverter) c;
-        assertTrue("dd-MM-yy".equals(converter.getPattern()));
-
-    }
-
-}
diff --git a/jsf-api/src/test/java/javax/faces/component/UIOutputTestCase.java b/jsf-api/src/test/java/javax/faces/component/UIOutputTestCase.java
deleted file mode 100644
index c929442..0000000
--- a/jsf-api/src/test/java/javax/faces/component/UIOutputTestCase.java
+++ /dev/null
@@ -1,193 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package javax.faces.component;
-
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-import javax.faces.convert.Converter;
-import javax.faces.convert.DateTimeConverter;
-import javax.faces.convert.LongConverter;
-import javax.faces.convert.ShortConverter;
-
-
-/**
- * <p>Unit tests for {@link UIOutput}.</p>
- */
-
-public class UIOutputTestCase extends ValueHolderTestCaseBase {
-
-
-    // ------------------------------------------------------------ Constructors
-
-
-    /**
-     * Construct a new instance of this test case.
-     *
-     * @param name Name of the test case
-     */
-    public UIOutputTestCase(String name) {
-        super(name);
-    }
-
-
-    // ---------------------------------------------------- Overall Test Methods
-
-
-    // Set up instance variables required by this test case.
-    public void setUp() {
-        super.setUp();
-        component = new UIOutput();
-        expectedFamily = UIOutput.COMPONENT_FAMILY;
-        expectedId = null;
-        expectedRendererType = "javax.faces.Text";
-    }
-
-
-    // Return the tests included in this test case.
-    public static Test suite() {
-        return (new TestSuite(UIOutputTestCase.class));
-    }
-
-
-    // Tear down instance variables required by ths test case
-    public void tearDown() {
-        super.tearDown();
-    }
-
-
-    // ------------------------------------------------- Individual Test Methods
-
-
-    // Test attribute-property transparency
-    public void testAttributesTransparency() {
-
-        super.testAttributesTransparency();
-        UIOutput output = (UIOutput) component;
-
-    }
-
-
-    // Suppress lifecycle tests since we do not have a renderer
-    public void testLifecycleManagement() {
-    }
-
-
-    // Test a pristine UIOutput instance
-    public void testPristine() {
-
-        super.testPristine();
-        UIOutput output = (UIOutput) component;
-
-    }
-
-
-    // Test setting properties to invalid values
-    public void testPropertiesInvalid() throws Exception {
-
-        super.testPropertiesInvalid();
-        UIOutput output = (UIOutput) component;
-
-    }
-
-
-    // Test setting properties to valid values
-    public void testPropertiesValid() throws Exception {
-
-        super.testPropertiesValid();
-        UIOutput output = (UIOutput) component;
-
-    }
-
-
-    public void testValueBindings() {
-
-	super.testValueBindings();
-	UIOutput test = (UIOutput) component;
-
-	// "converter" property
-	request.setAttribute("foo", new LongConverter());
-	test.setConverter(null);
-	assertNull(test.getConverter());
-	test.setValueBinding("converter", application.createValueBinding("#{foo}"));
-	assertNotNull(test.getValueBinding("converter"));
-	assertTrue(test.getConverter() instanceof LongConverter);
-	test.setConverter(new ShortConverter());
-	assertTrue(test.getConverter() instanceof ShortConverter);
-	test.setConverter(null);
-	assertTrue(test.getConverter() instanceof LongConverter);
-	test.setValueBinding("converter", null);
-	assertNull(test.getValueBinding("converter"));
-	assertNull(test.getConverter());
-
-	// "value" property
-	request.setAttribute("foo", "bar");
-	test.setValue(null);
-	assertNull(test.getValue());
-	test.setValueBinding("value", application.createValueBinding("#{foo}"));
-	assertNotNull(test.getValueBinding("value"));
-	assertEquals("bar", test.getValue());
-	test.setValue("baz");
-	assertEquals("baz", test.getValue());
-	test.setValue(null);
-	assertEquals("bar", test.getValue());
-	test.setValueBinding("value", null);
-	assertNull(test.getValueBinding("value"));
-	assertNull(test.getValue());
-
-    }
-
-
-    
-
-
-    
-
-
-    // --------------------------------------------------------- Support Methods
-
-
-    // Create a pristine component of the type to be used in state holder tests
-    protected UIComponent createComponent() {
-        UIComponent component = new UIOutput();
-        component.setRendererType(null);
-        return (component);
-    }
-
-
-}
diff --git a/jsf-api/src/test/java/javax/faces/component/UIPanelTestCase.java b/jsf-api/src/test/java/javax/faces/component/UIPanelTestCase.java
deleted file mode 100644
index 87455aa..0000000
--- a/jsf-api/src/test/java/javax/faces/component/UIPanelTestCase.java
+++ /dev/null
@@ -1,148 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package javax.faces.component;
-
-
-import java.io.IOException;
-import java.util.Iterator;
-import javax.faces.component.UIComponent;
-import javax.faces.component.UIPanel;
-import junit.framework.TestCase;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-
-/**
- * <p>Unit tests for {@link UIPanel}.</p>
- */
-
-public class UIPanelTestCase extends UIComponentBaseTestCase {
-
-
-    // ------------------------------------------------------------ Constructors
-
-
-    /**
-     * Construct a new instance of this test case.
-     *
-     * @param name Name of the test case
-     */
-    public UIPanelTestCase(String name) {
-        super(name);
-    }
-
-
-    // ---------------------------------------------------- Overall Test Methods
-
-
-    // Set up instance variables required by this test case.
-    public void setUp() {
-        super.setUp();
-        component = new UIPanel();
-        expectedFamily = UIPanel.COMPONENT_FAMILY;
-        expectedId = null;
-        expectedRendererType = null;
-        expectedRendersChildren = false;
-    }
-
-
-    // Return the tests included in this test case.
-    public static Test suite() {
-        return (new TestSuite(UIPanelTestCase.class));
-    }
-
-
-    // Tear down instance variables required by ths test case
-    public void tearDown() {
-        super.tearDown();
-    }
-
-
-    // ------------------------------------------------- Individual Test Methods
-
-    // Suppress lifecycle tests since we do not have a renderer
-    public void testLifecycleManagement() {
-    }
-
-    // Test a pristine UIPanel instance
-    public void testPristine() {
-
-        super.testPristine();
-        UIPanel panel = (UIPanel) component;
-
-    }
-
-
-    // Test setting properties to invalid values
-    public void testPropertiesInvalid() throws Exception {
-
-        super.testPropertiesInvalid();
-        UIPanel panel = (UIPanel) component;
-
-    }
-
-
-    // Test setting properties to valid values
-    public void testPropertiesValid() throws Exception {
-
-        super.testPropertiesValid();
-        UIPanel panel = (UIPanel) component;
-
-    }
-
-
-    public void PENDING_FIXME_testValueBindings() {
-
-	super.testValueBindings();
-	UIPanel test = (UIPanel) component;
-
-
-    }
-
-
-    // --------------------------------------------------------- Support Methods
-
-
-    // Create a pristine component of the type to be used in state holder tests
-    protected UIComponent createComponent() {
-        UIComponent component = new UIPanel();
-        component.setRendererType(null);
-        return (component);
-    }
-
-
-}
diff --git a/jsf-api/src/test/java/javax/faces/component/UIParameterTestCase.java b/jsf-api/src/test/java/javax/faces/component/UIParameterTestCase.java
deleted file mode 100644
index 957fbc2..0000000
--- a/jsf-api/src/test/java/javax/faces/component/UIParameterTestCase.java
+++ /dev/null
@@ -1,241 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package javax.faces.component;
-
-
-import java.io.IOException;
-import java.util.Iterator;
-import javax.faces.context.FacesContext;
-import javax.faces.TestUtil;
-import junit.framework.TestCase;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-
-/**
- * <p>Unit tests for {@link UIParameter}.</p>
- */
-
-public class UIParameterTestCase extends UIComponentBaseTestCase {
-
-
-    // ------------------------------------------------------------ Constructors
-
-
-    /**
-     * Construct a new instance of this test case.
-     *
-     * @param name Name of the test case
-     */
-    public UIParameterTestCase(String name) {
-        super(name);
-    }
-
-
-    // ---------------------------------------------------- Overall Test Methods
-
-
-    // Set up instance variables required by this test case.
-    public void setUp() {
-        super.setUp();
-        component = new UIParameter();
-        expectedFamily = UIParameter.COMPONENT_FAMILY;
-        expectedId = null;
-        expectedRendererType = null;
-    }
-
-
-    // Return the tests included in this test case.
-    public static Test suite() {
-        return (new TestSuite(UIParameterTestCase.class));
-    }
-
-
-    // Tear down instance variables required by ths test case
-    public void tearDown() {
-        super.tearDown();
-    }
-
-
-    // ------------------------------------------------- Individual Test Methods
-
-
-    // Test attribute-property transparency
-    public void testAttributesTransparency() {
-
-        super.testAttributesTransparency();
-        UIParameter parameter = (UIParameter) component;
-
-        assertEquals(parameter.getValue(),
-                     (String) component.getAttributes().get("value"));
-        parameter.setValue("foo");
-        assertEquals("foo", (String) component.getAttributes().get("value"));
-        parameter.setValue(null);
-        assertNull((String) component.getAttributes().get("value"));
-        component.getAttributes().put("value", "bar");
-        assertEquals("bar", parameter.getValue());
-        component.getAttributes().put("value", null);
-        assertNull(parameter.getValue());
-
-        assertEquals(parameter.getName(),
-                     (String) parameter.getAttributes().get("name"));
-        parameter.setName("foo");
-        assertEquals("foo", (String) parameter.getAttributes().get("name"));
-        parameter.setName(null);
-        assertNull((String) parameter.getAttributes().get("name"));
-        parameter.getAttributes().put("name", "bar");
-        assertEquals("bar", parameter.getName());
-        parameter.getAttributes().put("name", null);
-        assertNull(parameter.getName());
-
-    }
-
-    // Suppress lifecycle tests since we do not have a renderer
-    public void testLifecycleManagement() {
-    }
-
-    // Test a pristine UIParameter instance
-    public void testPristine() {
-
-        super.testPristine();
-        UIParameter parameter = (UIParameter) component;
-
-        assertNull("no value", parameter.getValue());
-        assertNull("no name", parameter.getName());
-
-    }
-
-
-    // Test setting properties to invalid values
-    public void testPropertiesInvalid() throws Exception {
-
-        super.testPropertiesInvalid();
-        UIParameter parameter = (UIParameter) component;
-
-    }
-
-
-    // Test setting properties to valid values
-    public void testPropertiesValid() throws Exception {
-
-        super.testPropertiesValid();
-        UIParameter parameter = (UIParameter) component;
-
-        // value
-        parameter.setValue("foo.bar");
-        assertEquals("expected value",
-                     "foo.bar", parameter.getValue());
-        parameter.setValue(null);
-        assertNull("erased value", parameter.getValue());
-
-        parameter.setName("foo");
-        assertEquals("foo", parameter.getName());
-        parameter.setName(null);
-        assertNull(parameter.getName());
-
-    }
-
-
-    public void testValueBindings() {
-
-	super.testValueBindings();
-	UIParameter test = (UIParameter) component;
-
-	// "name" property
-	request.setAttribute("foo", "bar");
-	test.setName(null);
-	assertNull(test.getName());
-	test.setValueBinding("name", application.createValueBinding("#{foo}"));
-	assertNotNull(test.getValueBinding("name"));
-	assertEquals("bar", test.getName());
-	test.setName("baz");
-	assertEquals("baz", test.getName());
-	test.setName(null);
-	assertEquals("bar", test.getName());
-	test.setValueBinding("name", null);
-	assertNull(test.getValueBinding("name"));
-	assertNull(test.getName());
-
-	// "value" property
-	request.setAttribute("foo", "bar");
-	test.setValue(null);
-	assertNull(test.getValue());
-	test.setValueBinding("value", application.createValueBinding("#{foo}"));
-	assertNotNull(test.getValueBinding("value"));
-	assertEquals("bar", test.getValue());
-	test.setValue("baz");
-	assertEquals("baz", test.getValue());
-	test.setValue(null);
-	assertEquals("bar", test.getValue());
-	test.setValueBinding("value", null);
-	assertNull(test.getValueBinding("value"));
-	assertNull(test.getValue());
-
-    }
-
-
-    // --------------------------------------------------------- Support Methods
-
-
-    // Check that the properties on the specified components are equal
-    protected void checkProperties(UIComponent comp1, UIComponent comp2) {
-
-        super.checkProperties(comp1, comp2);
-        UIParameter p1 = (UIParameter) comp1;
-        UIParameter p2 = (UIParameter) comp2;
-        assertEquals(p1.getName(), p2.getName());
-
-    }
-
-
-    // Create a pristine component of the type to be used in state holder tests
-    protected UIComponent createComponent() {
-        UIComponent component = new UIParameter();
-        component.setRendererType(null);
-        return (component);
-    }
-
-
-    // Populate a pristine component to be used in state holder tests
-    protected void populateComponent(UIComponent component) {
-        super.populateComponent(component);
-        UIParameter p = (UIParameter) component;
-        p.setName("foo");
-    }
-
-
-}
diff --git a/jsf-api/src/test/java/javax/faces/component/UISelectBooleanTestCase.java b/jsf-api/src/test/java/javax/faces/component/UISelectBooleanTestCase.java
deleted file mode 100644
index 87b4d32..0000000
--- a/jsf-api/src/test/java/javax/faces/component/UISelectBooleanTestCase.java
+++ /dev/null
@@ -1,216 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package javax.faces.component;
-
-
-import java.io.IOException;
-import java.util.Iterator;
-import java.util.List;
-import javax.faces.component.UIComponent;
-import javax.faces.component.UISelectBoolean;
-import javax.faces.el.ValueBinding;
-import junit.framework.TestCase;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-
-/**
- * <p>Unit tests for {@link UISelectBoolean}.</p>
- */
-
-public class UISelectBooleanTestCase extends UIInputTestCase {
-
-
-    // ------------------------------------------------------------ Constructors
-
-
-    /**
-     * Construct a new instance of this test case.
-     *
-     * @param name Name of the test case
-     */
-    public UISelectBooleanTestCase(String name) {
-        super(name);
-    }
-
-
-    // ---------------------------------------------------- Overall Test Methods
-
-
-    // Set up instance variables required by this test case.
-    public void setUp() {
-        super.setUp();
-        component = new UISelectBoolean();
-        expectedFamily = UISelectBoolean.COMPONENT_FAMILY;
-        expectedRendererType = "javax.faces.Checkbox";
-    }
-
-    
-    // Return the tests included in this test case.
-    public static Test suite() {
-        return (new TestSuite(UISelectBooleanTestCase.class));
-    }
-
-
-    // Tear down instance variables required by ths test case
-    public void tearDown() {
-        super.tearDown();
-    }
-
-
-    // ------------------------------------------------- Individual Test Methods
-
-
-    // Test attribute-property transparency
-    public void testAttributesTransparency() {
-
-        super.testAttributesTransparency();
-        UISelectBoolean selectBoolean = (UISelectBoolean) component;
-
-        selectBoolean.setSelected(false);
-        assertEquals(Boolean.FALSE,
-                     (Boolean) selectBoolean.getAttributes().get("selected"));
-        selectBoolean.setSelected(true);
-        assertEquals(Boolean.TRUE,
-                     (Boolean) selectBoolean.getAttributes().get("selected"));
-        selectBoolean.getAttributes().put("selected", Boolean.FALSE);
-        assertTrue(!selectBoolean.isSelected());
-        selectBoolean.getAttributes().put("selected", Boolean.TRUE);
-        assertTrue(selectBoolean.isSelected());
-
-    }
-
-
-    // Test a pristine UISelectBoolean instance
-    public void testPristine() {
-
-        super.testPristine();
-        UISelectBoolean selectBoolean = (UISelectBoolean) component;
-
-        assertTrue("not selected", !selectBoolean.isSelected());
-
-    }
-
-
-    // Test setting properties to invalid values
-    public void testPropertiesInvalid() throws Exception {
-
-        super.testPropertiesInvalid();
-        UISelectBoolean selectBoolean = (UISelectBoolean) component;
-
-    }
-
-
-    // Test setting properties to valid values
-    public void testPropertiesValid() throws Exception {
-
-        super.testPropertiesValid();
-        UISelectBoolean selectBoolean = (UISelectBoolean) component;
-
-        selectBoolean.setSelected(true);
-        assertTrue(selectBoolean.isSelected());
-        assertEquals(Boolean.TRUE,
-                     (Boolean) selectBoolean.getValue());
-        selectBoolean.setSelected(false);
-        assertTrue(!selectBoolean.isSelected());
-        assertEquals(Boolean.FALSE,
-                     (Boolean) selectBoolean.getValue());
-
-        // Test transparency between "value" and "selected" properties
-        selectBoolean.setValue(Boolean.TRUE);
-        assertTrue(selectBoolean.isSelected());
-        selectBoolean.setValue(Boolean.FALSE);
-        assertTrue(!selectBoolean.isSelected());
-        selectBoolean.setValue(null);
-        assertTrue(!selectBoolean.isSelected());
-
-        // Transparency applies to value bindings as well
-        assertNull(selectBoolean.getValueBinding("selected"));
-        assertNull(selectBoolean.getValueBinding("value"));
-        request.setAttribute("foo", Boolean.TRUE);
-        ValueBinding vb = application.createValueBinding("#{foo}");
-        selectBoolean.setValueBinding("selected", vb);
-        assertTrue(vb == selectBoolean.getValueBinding("selected"));
-        assertTrue(vb == selectBoolean.getValueBinding("value"));
-        selectBoolean.setValueBinding("selected", null);
-        assertNull(selectBoolean.getValueBinding("selected"));
-        assertNull(selectBoolean.getValueBinding("value"));
-        selectBoolean.setValueBinding("value", vb);
-        assertTrue(vb == selectBoolean.getValueBinding("selected"));
-        assertTrue(vb == selectBoolean.getValueBinding("value"));
-        selectBoolean.setValueBinding("selected", null);
-        assertNull(selectBoolean.getValueBinding("selected"));
-        assertNull(selectBoolean.getValueBinding("value"));
-
-    }
-
-
-    public void testValueBindings() {
-
-	super.testValueBindings();
-	UISelectBoolean test = (UISelectBoolean) component;
-
-	// "value" property
-	request.setAttribute("foo", "bar");
-	test.setValue(null);
-	assertNull(test.getValue());
-	test.setValueBinding("value", application.createValueBinding("#{foo}"));
-	assertNotNull(test.getValueBinding("value"));
-	assertEquals("bar", test.getValue());
-	test.setValue("baz");
-	assertEquals("baz", test.getValue());
-	test.setValue(null);
-	assertEquals("bar", test.getValue());
-	test.setValueBinding("value", null);
-	assertNull(test.getValueBinding("value"));
-	assertNull(test.getValue());
-
-    }
-
-
-    // --------------------------------------------------------- Support Methods
-
-
-    // Create a pristine component of the type to be used in state holder tests
-    protected UIComponent createComponent() {
-        UIComponent component = new UISelectBoolean();
-        component.setRendererType(null);
-        return (component);
-    }
-
-
-}
diff --git a/jsf-api/src/test/java/javax/faces/component/UISelectItemSub.java b/jsf-api/src/test/java/javax/faces/component/UISelectItemSub.java
deleted file mode 100644
index 3f164d3..0000000
--- a/jsf-api/src/test/java/javax/faces/component/UISelectItemSub.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package javax.faces.component;
-
-
-import javax.faces.component.UISelectItem;
-
-
-// Subclass of UISelectItem to provide a convenience constructor
-
-public class UISelectItemSub extends UISelectItem {
-
-    public UISelectItemSub(String value, String label, String description) {
-        super();
-        setItemValue(value);
-        setItemLabel(label);
-        setItemDescription(description);
-    }
-
-
-}
diff --git a/jsf-api/src/test/java/javax/faces/component/UISelectItemTestCase.java b/jsf-api/src/test/java/javax/faces/component/UISelectItemTestCase.java
deleted file mode 100644
index d034b7e..0000000
--- a/jsf-api/src/test/java/javax/faces/component/UISelectItemTestCase.java
+++ /dev/null
@@ -1,349 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package javax.faces.component;
-
-
-import java.io.IOException;
-import java.util.Iterator;
-import java.util.List;
-import javax.faces.component.UIComponent;
-import javax.faces.component.UISelectItem;
-import javax.faces.context.FacesContext;
-import javax.faces.model.SelectItem;
-import javax.faces.TestUtil;
-import junit.framework.TestCase;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-
-/**
- * <p>Unit tests for {@link UISelectItem}.</p>
- */
-
-public class UISelectItemTestCase extends UIComponentBaseTestCase {
-
-
-    // ------------------------------------------------------------ Constructors
-
-
-    /**
-     * Construct a new instance of this test case.
-     *
-     * @param name Name of the test case
-     */
-    public UISelectItemTestCase(String name) {
-        super(name);
-    }
-
-
-    // ---------------------------------------------------- Overall Test Methods
-
-
-    // Set up instance variables required by this test case.
-    public void setUp() {
-        super.setUp();
-        component = new UISelectItem();
-        expectedFamily = UISelectItem.COMPONENT_FAMILY;
-        expectedId = null;
-        expectedRendererType = null;
-    }
-
-    
-    // Return the tests included in this test case.
-    public static Test suite() {
-        return (new TestSuite(UISelectItemTestCase.class));
-    }
-
-
-    // Tear down instance variables required by ths test case
-    public void tearDown() {
-        super.tearDown();
-    }
-
-
-    // ------------------------------------------------- Individual Test Methods
-    // Suppress lifecycle tests since we do not have a renderer
-    public void testLifecycleManagement() {
-    }
-
-
-    // Test attribute-property transparency
-    public void testAttributesTransparency() {
-
-        super.testAttributesTransparency();
-        UISelectItem selectItem = (UISelectItem) component;
-
-        assertEquals(selectItem.getValue(),
-                     component.getAttributes().get("value"));
-        SelectItem item = new SelectItem("foo");
-        selectItem.setValue(item);
-        assertEquals(item, component.getAttributes().get("value"));
-        selectItem.setValue(null);
-
-        assertNull(component.getAttributes().get("value"));
-        component.getAttributes().put("value", "bar");
-        assertEquals("bar", selectItem.getValue());
-        component.getAttributes().put("value", null);
-        assertNull(selectItem.getValue());
-
-        assertEquals(selectItem.getItemDescription(),
-                     (String) selectItem.getAttributes().get("itemDescription"));
-        selectItem.setItemDescription("foo");
-        assertEquals("foo", (String) selectItem.getAttributes().get("itemDescription"));
-        selectItem.setItemDescription(null);
-        assertNull((String) selectItem.getAttributes().get("itemDescription"));
-        selectItem.getAttributes().put("itemDescription", "bar");
-        assertEquals("bar", selectItem.getItemDescription());
-        selectItem.getAttributes().put("itemDescription", null);
-        assertNull(selectItem.getItemDescription());
-
-        assertEquals(selectItem.isItemDisabled(),
-                     ((Boolean) selectItem.getAttributes().get("itemDisabled")).
-                      booleanValue());
-        selectItem.setItemDisabled(true);
-        assertTrue(((Boolean) selectItem.getAttributes().
-                   get("itemDisabled")).booleanValue());
-        selectItem.setItemDisabled(false);
-        assertFalse(((Boolean) selectItem.getAttributes().
-                    get("itemDisabled")).booleanValue());
-        selectItem.getAttributes().put("itemDisabled", Boolean.FALSE);
-        assertFalse(selectItem.isItemDisabled());
-        selectItem.getAttributes().put("itemDisabled", Boolean.TRUE);
-        assertTrue(selectItem.isItemDisabled());
-
-        assertEquals(selectItem.getItemLabel(),
-                     (String) selectItem.getAttributes().get("itemLabel"));
-        selectItem.setItemLabel("foo");
-        assertEquals("foo", (String) selectItem.getAttributes().get("itemLabel"));
-        selectItem.setItemLabel(null);
-        assertNull((String) selectItem.getAttributes().get("itemLabel"));
-        selectItem.getAttributes().put("itemLabel", "bar");
-        assertEquals("bar", selectItem.getItemLabel());
-        selectItem.getAttributes().put("itemLabel", null);
-        assertNull(selectItem.getItemLabel());
-
-        assertEquals(selectItem.getItemValue(),
-                     (String) selectItem.getAttributes().get("itemValue"));
-        selectItem.setItemValue("foo");
-        assertEquals("foo", (String) selectItem.getAttributes().get("itemValue"));
-        selectItem.setItemValue(null);
-        assertNull((String) selectItem.getAttributes().get("itemValue"));
-        selectItem.getAttributes().put("itemValue", "bar");
-        assertEquals("bar", selectItem.getItemValue());
-        selectItem.getAttributes().put("itemValue", null);
-        assertNull(selectItem.getItemValue());
-
-    }
-
-
-    // Test a pristine UISelectItem instance
-    public void testPristine() {
-
-        super.testPristine();
-        UISelectItem selectItem = (UISelectItem) component;
-
-        assertNull("no value", selectItem.getValue());
-        assertNull("no itemDescription", selectItem.getItemDescription());
-        assertFalse("no itemDisabled", selectItem.isItemDisabled());
-        assertNull("no itemLabel", selectItem.getItemLabel());
-        assertNull("no itemValue", selectItem.getItemValue());
-
-    }
-
-
-    // Test setting properties to invalid values
-    public void testPropertiesInvalid() throws Exception {
-
-        super.testPropertiesInvalid();
-        UISelectItem selectItem = (UISelectItem) component;
-
-    }
-
-
-    // Test setting properties to valid values
-    public void testPropertiesValid() throws Exception {
-
-        super.testPropertiesValid();
-        UISelectItem selectItem = (UISelectItem) component;
-
-        // value
-        SelectItem item = new SelectItem("foo");
-        selectItem.setValue(item);
-        assertEquals("expected value",
-                     item, selectItem.getValue());
-        selectItem.setValue(null);
-        assertNull("erased value", selectItem.getValue());
-
-        selectItem.setItemDescription("foo");
-        assertEquals("foo", selectItem.getItemDescription());
-        selectItem.setItemDescription(null);
-        assertNull(selectItem.getItemDescription());
-
-        selectItem.setItemDisabled(false);
-        assertFalse(selectItem.isItemDisabled());
-        selectItem.setItemDisabled(true);
-        assertTrue(selectItem.isItemDisabled());
-
-        selectItem.setItemLabel("foo");
-        assertEquals("foo", selectItem.getItemLabel());
-        selectItem.setItemLabel(null);
-        assertNull(selectItem.getItemLabel());
-
-        selectItem.setItemValue("foo");
-        assertEquals("foo", selectItem.getItemValue());
-        selectItem.setItemValue(null);
-        assertNull(selectItem.getItemValue());
-
-    }
-
-
-    public void PENDING_FIXME_testValueBindings() {
-
-	super.testValueBindings();
-	UISelectItem test = (UISelectItem) component;
-
-	// "itemDescription" property
-	request.setAttribute("foo", "bar");
-	test.setItemDescription(null);
-	assertNull(test.getItemDescription());
-	test.setValueBinding("itemDescription", application.createValueBinding("#{foo}"));
-	assertNotNull(test.getValueBinding("itemDescription"));
-	assertEquals("bar", test.getItemDescription());
-	test.setItemDescription("baz");
-	assertEquals("baz", test.getItemDescription());
-	test.setItemDescription(null);
-	assertEquals("bar", test.getItemDescription());
-	test.setValueBinding("itemDescription", null);
-	assertNull(test.getValueBinding("itemDescription"));
-	assertNull(test.getItemDescription());
-
-	// "itemDisabled" property
-        assertFalse(test.isItemDisabled());
-	request.setAttribute("foo", Boolean.TRUE);
-	test.setValueBinding("itemDisabled", application.createValueBinding("#{foo}"));
-	assertNotNull(test.getValueBinding("itemDisabled"));
-	assertTrue(test.isItemDisabled());
-        test.setItemDisabled(false);
-        assertFalse(test.isItemDisabled());
-	test.setValueBinding("itemDisabled", null);
-	assertNull(test.getValueBinding("itemDisabled"));
-	assertFalse(test.isItemDisabled());
-
-	// "itemLabel" property
-	request.setAttribute("foo", "bar");
-	test.setItemLabel(null);
-	assertNull(test.getItemLabel());
-	test.setValueBinding("itemLabel", application.createValueBinding("#{foo}"));
-	assertNotNull(test.getValueBinding("itemLabel"));
-	assertEquals("bar", test.getItemLabel());
-	test.setItemLabel("baz");
-	assertEquals("baz", test.getItemLabel());
-	test.setItemLabel(null);
-	assertEquals("bar", test.getItemLabel());
-	test.setValueBinding("itemLabel", null);
-	assertNull(test.getValueBinding("itemLabel"));
-	assertNull(test.getItemLabel());
-
-	// "itemValue" property
-	request.setAttribute("foo", "bar");
-	test.setItemValue(null);
-	assertNull(test.getItemValue());
-	test.setValueBinding("itemValue", application.createValueBinding("#{foo}"));
-	assertNotNull(test.getValueBinding("itemValue"));
-	assertEquals("bar", test.getItemValue());
-	test.setItemValue("baz");
-	assertEquals("baz", test.getItemValue());
-	test.setItemValue(null);
-	assertEquals("bar", test.getItemValue());
-	test.setValueBinding("itemValue", null);
-	assertNull(test.getValueBinding("itemValue"));
-	assertNull(test.getItemValue());
-
-	// "value" property
-	request.setAttribute("foo", "bar");
-	test.setValue(null);
-	assertNull(test.getValue());
-	test.setValueBinding("value", application.createValueBinding("#{foo}"));
-	assertNotNull(test.getValueBinding("value"));
-	assertEquals("bar", test.getValue());
-	test.setValue("baz");
-	assertEquals("baz", test.getValue());
-	test.setValue(null);
-	assertEquals("bar", test.getValue());
-	test.setValueBinding("value", null);
-	assertNull(test.getValueBinding("value"));
-	assertNull(test.getValue());
-
-    }
-
-
-    // --------------------------------------------------------- Support Methods
-
-
-    // Check that the properties on the specified components are equal
-    protected void checkProperties(UIComponent comp1, UIComponent comp2) {
-
-        super.checkProperties(comp1, comp2);
-        UISelectItem si1 = (UISelectItem) comp1;
-        UISelectItem si2 = (UISelectItem) comp2;
-        assertEquals(si1.getItemDescription(), si2.getItemDescription());
-        assertEquals(si1.isItemDisabled(), si2.isItemDisabled());
-        assertEquals(si1.getItemLabel(), si2.getItemLabel());
-        assertEquals(si1.getItemValue(), si2.getItemValue());
-
-    }
-
-
-    // Create a pristine component of the type to be used in state holder tests
-    protected UIComponent createComponent() {
-        UIComponent component = new UISelectItem();
-        component.setRendererType(null);
-        return (component);
-    }
-
-
-    // Populate a pristine component to be used in state holder tests
-    protected void populateComponent(UIComponent component) {
-        super.populateComponent(component);
-        UISelectItem si = (UISelectItem) component;
-        si.setItemDescription("item description");
-        si.setItemLabel("item label");
-        si.setItemValue("item value");
-    }
-
-
-}
diff --git a/jsf-api/src/test/java/javax/faces/component/UISelectItemsTestCase.java b/jsf-api/src/test/java/javax/faces/component/UISelectItemsTestCase.java
deleted file mode 100644
index 26f0622..0000000
--- a/jsf-api/src/test/java/javax/faces/component/UISelectItemsTestCase.java
+++ /dev/null
@@ -1,191 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package javax.faces.component;
-
-
-import java.io.IOException;
-import java.util.Iterator;
-import java.util.List;
-import javax.faces.component.UIComponent;
-import javax.faces.component.UISelectItems;
-import javax.faces.model.SelectItem;
-import junit.framework.TestCase;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-
-/**
- * <p>Unit tests for {@link UISelectItems}.</p>
- */
-
-public class UISelectItemsTestCase extends UIComponentBaseTestCase {
-
-
-    // ------------------------------------------------------------ Constructors
-
-
-    /**
-     * Construct a new instance of this test case.
-     *
-     * @param name Name of the test case
-     */
-    public UISelectItemsTestCase(String name) {
-        super(name);
-    }
-
-
-    // ---------------------------------------------------- Overall Test Methods
-
-
-    // Set up instance variables required by this test case.
-    public void setUp() {
-        super.setUp();
-        component = new UISelectItems();
-        expectedFamily = UISelectItems.COMPONENT_FAMILY;
-        expectedId = null;
-        expectedRendererType = null;
-    }
-
-    
-    // Return the tests included in this test case.
-    public static Test suite() {
-        return (new TestSuite(UISelectItemsTestCase.class));
-    }
-
-
-    // Tear down instance variables required by ths test case
-    public void tearDown() {
-        super.tearDown();
-    }
-
-
-    // ------------------------------------------------- Individual Test Methods
-
-
-    // Test attribute-property transparency
-    public void testAttributesTransparency() {
-
-        super.testAttributesTransparency();
-        UISelectItems selectItems = (UISelectItems) component;
-
-        assertEquals(selectItems.getValue(),
-                     component.getAttributes().get("value"));
-        SelectItem item = new SelectItem("foo");
-        selectItems.setValue(item);
-        assertEquals(item, component.getAttributes().get("value"));
-        selectItems.setValue(null);
-        assertNull(component.getAttributes().get("value"));
-        component.getAttributes().put("value", "bar");
-        assertEquals("bar", selectItems.getValue());
-        component.getAttributes().put("value", null);
-        assertNull(selectItems.getValue());
-
-    }
-    // Suppress lifecycle tests since we do not have a renderer
-    public void testLifecycleManagement() {
-    }
-
-    // Test a pristine UISelectItems instance
-    public void testPristine() {
-
-        super.testPristine();
-        UISelectItems selectItems = (UISelectItems) component;
-        assertNull("no value", selectItems.getValue());
-
-    }
-
-
-    // Test setting properties to invalid values
-    public void testPropertiesInvalid() throws Exception {
-
-        super.testPropertiesInvalid();
-        UISelectItems selectItems = (UISelectItems) component;
-
-    }
-
-
-    // Test setting properties to valid values
-    public void testPropertiesValid() throws Exception {
-
-        super.testPropertiesValid();
-        UISelectItems selectItems = (UISelectItems) component;
-
-        // value
-        SelectItem item = new SelectItem("foo");
-        selectItems.setValue(item);
-        assertEquals("expected value",
-                     item, selectItems.getValue());
-        selectItems.setValue(null);
-        assertNull("erased value", selectItems.getValue());
-    }
-
-
-    public void testValueBindings() {
-
-	super.testValueBindings();
-	UISelectItems test = (UISelectItems) component;
-
-	// "value" property
-	request.setAttribute("foo", "bar");
-	test.setValue(null);
-	assertNull(test.getValue());
-	test.setValueBinding("value", application.createValueBinding("#{foo}"));
-	assertNotNull(test.getValueBinding("value"));
-	assertEquals("bar", test.getValue());
-	test.setValue("baz");
-	assertEquals("baz", test.getValue());
-	test.setValue(null);
-	assertEquals("bar", test.getValue());
-	test.setValueBinding("value", null);
-	assertNull(test.getValueBinding("value"));
-	assertNull(test.getValue());
-
-    }
-
-
-    // --------------------------------------------------------- Support Methods
-
-
-    // Create a pristine component of the type to be used in state holder tests
-    protected UIComponent createComponent() {
-        UIComponent component = new UISelectItems();
-        component.setRendererType(null);
-        return (component);
-    }
-
-
-}
diff --git a/jsf-api/src/test/java/javax/faces/component/UISelectManyTestCase.java b/jsf-api/src/test/java/javax/faces/component/UISelectManyTestCase.java
deleted file mode 100644
index ae521b2..0000000
--- a/jsf-api/src/test/java/javax/faces/component/UISelectManyTestCase.java
+++ /dev/null
@@ -1,707 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package javax.faces.component;
-
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-import javax.faces.application.FacesMessage;
-import javax.faces.el.ValueBinding;
-import javax.faces.model.SelectItem;
-import javax.faces.model.SelectItemGroup;
-import javax.faces.model.ListDataModel;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.HashSet;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.NoSuchElementException;
-
-
-/**
- * <p>Unit tests for {@link UISelectMany}.</p>
- */
-
-public class UISelectManyTestCase extends UIInputTestCase {
-
-
-    // ------------------------------------------------------------ Constructors
-
-
-    /**
-     * Construct a new instance of this test case.
-     *
-     * @param name Name of the test case
-     */
-    public UISelectManyTestCase(String name) {
-        super(name);
-    }
-
-
-    // ---------------------------------------------------- Overall Test Methods
-
-
-    // Set up instance variables required by this test case.
-    public void setUp() {
-        super.setUp();
-        component = new UISelectMany();
-        expectedFamily = UISelectMany.COMPONENT_FAMILY;
-        expectedRendererType = "javax.faces.Listbox";
-    }
-
-    
-    // Return the tests included in this test case.
-    public static Test suite() {
-        return (new TestSuite(UISelectManyTestCase.class));
-    }
-
-
-    // Tear down instance variables required by ths test case
-    public void tearDown() {
-        super.tearDown();
-    }
-
-
-    // ------------------------------------------------- Individual Test Methods
-
-
-    // Test the compareValues() method
-    public void testCompareValues() {
-
-        TestSelectMany selectMany = new TestSelectMany();
-        Object values1a[] = new Object[] { "foo", "bar", "baz" };
-        Object values1b[] = new Object[] { "foo", "baz", "bar" };
-        Object values1c[] = new Object[] { "baz", "foo", "bar" };
-        Object values2[] = new Object[] { "foo", "bar" };
-        Object values3[] = new Object[] { "foo", "bar", "baz", "bop" };
-        Object values4[] = null;
-
-        assertTrue(!selectMany.compareValues(values1a, values1a));
-        assertTrue(!selectMany.compareValues(values1a, values1b));
-        assertTrue(!selectMany.compareValues(values1a, values1c));
-        assertTrue(!selectMany.compareValues(values2, values2));
-        assertTrue(!selectMany.compareValues(values3, values3));
-        assertTrue(!selectMany.compareValues(values4, values4));
-
-        assertTrue(selectMany.compareValues(values1a, values2));
-        assertTrue(selectMany.compareValues(values1a, values3));
-        assertTrue(selectMany.compareValues(values1a, values4));
-        assertTrue(selectMany.compareValues(values2, values3));
-        assertTrue(selectMany.compareValues(values2, values4));
-        assertTrue(selectMany.compareValues(values4, values1a));
-        assertTrue(selectMany.compareValues(values4, values2));
-        assertTrue(selectMany.compareValues(values4, values3));
-
-    }
-
-
-    // Test a pristine UISelectMany instance
-    public void testPristine() {
-
-        super.testPristine();
-        UISelectMany selectMany = (UISelectMany) component;
-
-        assertNull("no selectedValues", selectMany.getSelectedValues());
-
-    }
-
-
-    // Test setting properties to invalid values
-    public void testPropertiesInvalid() throws Exception {
-
-        super.testPropertiesInvalid();
-
-    }
-
-
-    // Test setting properties to valid values
-    public void testPropertiesValid() throws Exception {
-
-        super.testPropertiesValid();
-        UISelectMany selectMany = (UISelectMany) component;
-
-        Object values[] = new Object[] { "foo", "bar" };
-
-        selectMany.setSelectedValues(values);
-        assertEquals(values, selectMany.getSelectedValues());
-        assertEquals(values, selectMany.getValue());
-        selectMany.setSelectedValues(null);
-        assertNull(selectMany.getSelectedValues());
-        assertNull(selectMany.getValue());
-
-        // Test transparency between "value" and "selectedValues" properties
-        selectMany.setValue(values);
-        assertEquals(values, selectMany.getSelectedValues());
-        assertEquals(values, selectMany.getValue());
-        selectMany.setValue(null);
-        assertNull(selectMany.getSelectedValues());
-        assertNull(selectMany.getValue());
-
-        // Transparency applies to value bindings as well
-        assertNull(selectMany.getValueBinding("selectedValues"));
-        assertNull(selectMany.getValueBinding("value"));
-        request.setAttribute("foo", new Object[] { "bar", "baz" });
-        ValueBinding vb = application.createValueBinding("#{foo}");
-        selectMany.setValueBinding("selectedValues", vb);
-        assertTrue(vb == selectMany.getValueBinding("selectedValues"));
-        assertTrue(vb == selectMany.getValueBinding("value"));
-        selectMany.setValueBinding("selectedValues", null);
-        assertNull(selectMany.getValueBinding("selectedValues"));
-        assertNull(selectMany.getValueBinding("value"));
-        selectMany.setValueBinding("value", vb);
-        assertTrue(vb == selectMany.getValueBinding("selectedValues"));
-        assertTrue(vb == selectMany.getValueBinding("value"));
-        selectMany.setValueBinding("selectedValues", null);
-        assertNull(selectMany.getValueBinding("selectedValues"));
-        assertNull(selectMany.getValueBinding("value"));
-
-    }
-
-
-
-    // Test validation of value against the valid list
-    public void testValidation() throws Exception {
-
-        // Put our component under test in a tree under a UIViewRoot
-        UIViewRoot root = facesContext.getApplication().getViewHandler().createView(facesContext, null);
-        root.getChildren().add(component);
-
-        // Add valid options to the component under test
-        UISelectMany selectMany = (UISelectMany) component;
-        selectMany.getChildren().add(new UISelectItemSub("foo", null, null));
-        selectMany.getChildren().add(new UISelectItemSub("bar", null, null));
-        selectMany.getChildren().add(new UISelectItemSub("baz", null, null));
-
-        // Validate two values that are on the list
-        selectMany.setValid(true);
-        selectMany.setSubmittedValue(new Object[] { "foo", "baz" });
-        selectMany.validate(facesContext);
-        assertTrue(selectMany.isValid());
-
-        // Validate one value on the list and one not on the list
-        selectMany.getAttributes().put("label", "mylabel");
-        selectMany.setValid(true);
-        selectMany.setSubmittedValue(new Object[] { "bar", "bop"});
-        selectMany.setRendererType(null); // We don't have any renderers
-        selectMany.validate(facesContext);
-        assertTrue(!selectMany.isValid());
-
-        Iterator messages = facesContext.getMessages();
-        while (messages.hasNext()) {
-            FacesMessage message = (FacesMessage) messages.next();
-            assertTrue(message.getSummary().indexOf("mylabel") >= 0);
-        }
-
-
-    }
-
-
-    // Test validation of component with UISelectItems pointing to map
-    public void testValidation2() throws Exception {
-
-         // Put our component under test in a tree under a UIViewRoot
-        UIViewRoot root = facesContext.getApplication().getViewHandler().createView(facesContext, null);
-        root.getChildren().add(component);
-
-        // Add valid options to the component under test
-        Map<String,String> map = new HashMap<String,String>();
-        map.put("key_foo", "foo");
-        map.put("key_bar", "bar");
-        map.put("key_baz", "baz");
-        UISelectItems items = new UISelectItems();
-        items.setValue(map);
-        UISelectMany selectMany = (UISelectMany) component;
-        selectMany.getChildren().add(items);
-
-        // Validate two values that are on the list
-        selectMany.setValid(true);
-        selectMany.setSubmittedValue(new Object[] { "foo", "baz" });
-        selectMany.validate(facesContext);
-        assertTrue(selectMany.isValid());
-
-        // Validate one value on the list and one not on the list
-        selectMany.setValid(true);
-        selectMany.setSubmittedValue(new Object[] { "bar", "bop"});
-        selectMany.setRendererType(null); // We don't have any renderers
-        selectMany.validate(facesContext);
-        assertTrue(!selectMany.isValid());
-
-    }
-
-
-    // Test validation of component with UISelectItems pointing to Set and the
-    // value of the component is Set
-    public void testValidation3() throws Exception {
-
-        Set<SelectItem> items = new HashSet<SelectItem>();
-        items.add(new SelectItem("foo"));
-        items.add(new SelectItem("bar"));
-        items.add(new SelectItem("baz"));
-        Set<String> submittedValues = new HashSet<String>();
-        submittedValues.add("bar");
-        submittedValues.add("baz");
-        Set<String> invalidValues = new HashSet<String>();
-        invalidValues.add("bar");
-        invalidValues.add("car");
-        testValidateWithCollection(items,
-                                   submittedValues,
-                                   invalidValues);
-
-    }
-
-    // Test validation of component with UISelectItems pointing to List
-    public void testValidation4() throws Exception {
-
-        List<SelectItem> items = new ArrayList<SelectItem>();
-        items.add(new SelectItem("foo"));
-        items.add(new SelectItem("bar"));
-        items.add(new SelectItem("baz"));
-        List<String> submittedValues = new ArrayList<String>();
-        submittedValues.add("bar");
-        submittedValues.add("baz");
-        ArrayList<String> invalidValues = new ArrayList<String>();
-        invalidValues.add("bar");
-        invalidValues.add("car");
-        testValidateWithCollection(items,
-                                   submittedValues,
-                                   invalidValues);
-
-    }
-
-
-    // Test validation of component with UISelectItems pointing to an Array
-    public void testValidation5() throws Exception {
-
-        // Put our component under test in a tree under a UIViewRoot
-        UIViewRoot root = facesContext.getApplication().getViewHandler()
-              .createView(facesContext, null);
-        root.getChildren().add(component);
-
-        // Add valid options to the component under test
-        SelectItem[] itemsArray = {
-              new SelectItem("foo"),
-              new SelectItem("bar"),
-              new SelectItem("baz")
-        };
-        UISelectItems items = new UISelectItems();
-        items.setValue(itemsArray);
-        UISelectMany selectMany = (UISelectMany) component;
-        selectMany.getChildren().add(items);
-
-        selectMany.setValid(true);
-        selectMany.setSubmittedValue(new String[] { "bar", "baz" });
-        selectMany.validate(facesContext);
-        assertTrue(selectMany.isValid());
-
-        // Validate one value on the list and one not on the list
-        selectMany.setValid(true);
-        selectMany.setSubmittedValue(new String[] { "bar", "car" });
-        selectMany.setRendererType(null); // We don't have any renderers
-        selectMany.validate(facesContext);
-        assertTrue(!selectMany.isValid());
-
-    }
-
-
-    private void testValidateWithCollection(Collection<SelectItem> selectItems,
-                                            Object validValues,
-                                            Object invalidValues)
-    throws Exception {
-
-        UIViewRoot root = facesContext.getApplication().getViewHandler().createView(facesContext, null);
-        root.getChildren().add(component);
-
-        UISelectItems itemsComponent = new UISelectItems();
-        itemsComponent.setValue(selectItems);
-        UISelectMany selectMany = (UISelectMany) component;
-        selectMany.setRendererType(null);
-        selectMany.getChildren().add(itemsComponent);
-
-        selectMany.setValue(true);
-        selectMany.setSubmittedValue(validValues);
-        selectMany.validate(facesContext);
-        assertTrue(selectMany.isValid());
-        selectMany.updateModel(facesContext);
-
-        selectMany.setValid(true);
-        selectMany.setSubmittedValue(invalidValues);
-        selectMany.validate(facesContext);
-        assertTrue(!selectMany.isValid());
-
-    }
-
-
-    private String legalValues[] =
-    { "A1", "A2", "A3", "B1", "B2", "B3", "C1", "C2", "C3" };
-
-
-    private String illegalValues[] =
-    { "D1", "D2", "Group A", "Group B", "Group C" };
-
-    // Test validation against a nested list of available options
-    public void testValidateNested() throws Exception {
-
-        // Set up UISelectMany with nested UISelectItems
-        UIViewRoot root = facesContext.getApplication().getViewHandler().createView(facesContext, null);
-        root.getChildren().add(component);
-        UISelectMany selectMany = (UISelectMany) component;
-        UISelectItems selectItems = new UISelectItems();
-        selectItems.setValue(setupOptions());
-        selectMany.getChildren().add(selectItems);
-        selectMany.setRequired(true);
-        checkMessages(0);
-
-        // Verify that all legal values will validate
-        for (int i = 0; i < legalValues.length; i++) {
-            selectMany.setValid(true);
-            selectMany.setSubmittedValue
-                (new Object[] { legalValues[0], legalValues[i] });
-            selectMany.validate(facesContext);
-            assertTrue("Value '" + legalValues[i] + "' found",
-                       selectMany.isValid());
-            checkMessages(0);
-        }
-
-        // Verify that illegal values will not validate
-        for (int i = 0; i < illegalValues.length; i++) {
-            selectMany.setValid(true);
-            selectMany.setSubmittedValue
-                (new Object[] { legalValues[0], illegalValues[i] });
-            selectMany.validate(facesContext);
-            assertTrue("Value '" + illegalValues[i] + "' not found",
-                       !selectMany.isValid());
-            checkMessages(i + 1);
-        }
-
-
-    }
-
-    // Test validation against a nested Set of available options
-    public void testValidateNestedSet() throws Exception {
-
-        // Set up UISelectMany with nested UISelectItems
-        UIViewRoot root = facesContext.getApplication().getViewHandler().createView(facesContext, null);
-        root.getChildren().add(component);
-        UISelectMany selectMany = (UISelectMany) component;
-        UISelectItems selectItems = new UISelectItems();
-        selectItems.setValue(setupOptionsSet());
-        selectMany.getChildren().add(selectItems);
-        selectMany.setRequired(true);
-        checkMessages(0);
-
-        // Verify that all legal values will validate
-        for (int i = 0; i < legalValues.length; i++) {
-            selectMany.setValid(true);
-            selectMany.setSubmittedValue
-                (new Object[] { legalValues[0], legalValues[i] });
-            selectMany.validate(facesContext);
-            assertTrue("Value '" + legalValues[i] + "' found",
-                       selectMany.isValid());
-            checkMessages(0);
-        }
-
-        // Verify that illegal values will not validate
-        for (int i = 0; i < illegalValues.length; i++) {
-            selectMany.setValid(true);
-            selectMany.setSubmittedValue
-                (new Object[] { legalValues[0], illegalValues[i] });
-            selectMany.validate(facesContext);
-            assertTrue("Value '" + illegalValues[i] + "' not found",
-                       !selectMany.isValid());
-            checkMessages(i + 1);
-        }
-
-
-    }
-
-
-    // Test validation of a required field
-    public void testValidateRequired() throws Exception {
-
-        UIViewRoot root = facesContext.getApplication().getViewHandler().createView(facesContext, null);
-        root.getChildren().add(component);
-        UISelectMany selectMany = (UISelectMany) component;
-        selectMany.getChildren().add(new UISelectItemSub("foo", null, null));
-        selectMany.getChildren().add(new UISelectItemSub("bar", null, null));
-        selectMany.getChildren().add(new UISelectItemSub("baz", null, null));
-        selectMany.setRequired(true);
-        checkMessages(0);
-
-        selectMany.setValid(true);
-        selectMany.setSubmittedValue(new Object[] { "foo" });
-        selectMany.validate(facesContext);
-        checkMessages(0);
-        assertTrue(selectMany.isValid());
-
-        selectMany.setValid(true);
-        selectMany.setSubmittedValue(new Object[] { "" });
-        selectMany.validate(facesContext);
-        checkMessages(1);
-        assertTrue(!selectMany.isValid());
-
-        selectMany.setValid(true);
-        selectMany.setSubmittedValue(null);
-	// this execution of validate shouldn't add any messages to the
-	// queue, since a value of null means "don't validate".  This is
-	// different behavior than in previous versions of this
-	// testcase, which expected the UISelectMany.validate() to
-	// operate on the previously validated value, which is not
-	// correct.
-        selectMany.validate(facesContext);
-        checkMessages(1);
-	// since we're setting the submitted value to null, we don't
-	// want validation to occurr, therefore, the valid state of the
-	// componet should be as we left it.
-        assertTrue(selectMany.isValid());
-
-    }
-
-
-    // Test that appropriate properties are value binding enabled
-    public void testValueBindings() {
-
-	super.testValueBindings();
-	UISelectMany test = (UISelectMany) component;
-
-	// "value" property
-	request.setAttribute("foo", "bar");
-	test.setValue(null);
-	assertNull(test.getValue());
-	test.setValueBinding("value", application.createValueBinding("#{foo}"));
-	assertNotNull(test.getValueBinding("value"));
-	assertEquals("bar", test.getValue());
-	test.setValue("baz");
-	assertEquals("baz", test.getValue());
-	test.setValue(null);
-	assertEquals("bar", test.getValue());
-	test.setValueBinding("value", null);
-	assertNull(test.getValueBinding("value"));
-	assertNull(test.getValue());
-
-    }
-
-    public void testSelectItemsIterator() {
-        // sub test 1: non-selectitem at end 
-        UISelectMany selectMany = (UISelectMany) component;
-        selectMany.getChildren().add(new UISelectItemSub("orr", null, null));
-        UIParameter param = new UIParameter();
-        param.setName("param");
-        param.setValue("paramValue");
-        selectMany.getChildren().add(param);
-        selectMany.getChildren().add(new UISelectItemSub("esposito", null, null));
-        Iterator<SelectItem> iter = new SelectItemsIterator(facesContext, selectMany);
-        while (iter.hasNext()) {
-            Object object = iter.next();
-            assertTrue(object instanceof javax.faces.model.SelectItem);
-            assertTrue((((SelectItem)object).getValue().equals("orr")) ||
-                (((SelectItem)object).getValue().equals("esposito")));
-        }
-
-        // sub test 2: non-selectitem in middle
-        selectMany = new UISelectMany();
-        selectMany.getChildren().add(new UISelectItemSub("gretsky", null, null));
-        selectMany.getChildren().add(param);
-        selectMany.getChildren().add(new UISelectItemSub("howe", null, null));
-        iter = new SelectItemsIterator(facesContext, selectMany);
-        while (iter.hasNext()) {
-            Object object = iter.next();
-            assertTrue(object instanceof javax.faces.model.SelectItem);
-            assertTrue((((SelectItem)object).getValue().equals("gretsky")) ||
-                (((SelectItem)object).getValue().equals("howe")));
-        }
-
-        // sub test 3: Empty collection
-        selectMany = new UISelectMany();
-        UISelectItems items = new UISelectItems();
-        items.setValue(Collections.emptyList());
-        selectMany.getChildren().add(items);
-        iter = new SelectItemsIterator(facesContext, selectMany);
-        assertTrue(!iter.hasNext());
-        try {
-            iter.next();
-            assertTrue(false);
-        } catch (NoSuchElementException nsee) {
-            // expected
-        }
-
-
-        // sub test 4: items exposed as generic collection of non-SelectItem
-        //             instances
-        Collection<Integer> cItems = new ArrayList<Integer>(5);
-        Collections.addAll(cItems, 0, 1, 2, 3, 4);
-        selectMany = new UISelectMany();
-        items = new UISelectItems();
-        items.setValue(cItems);
-        selectMany.getChildren().add(items);
-        iter = new SelectItemsIterator(facesContext, selectMany);
-        SelectItem previous = null;
-        for (int i = 0, len = cItems.size(); i < len; i++) {
-            assertTrue(iter.hasNext());
-            SelectItem item = iter.next();
-            assertNotNull(item);
-            assertEquals(i, item.getValue());
-            assertEquals(Integer.toString(i), item.getLabel());
-            assertNull(item.getDescription());
-            assertFalse(item.isDisabled());
-            assertFalse(item.isEscape());
-            if (previous != null) {
-                // using fly-weight pattern make sure we use the same
-                // instance through out the iteration
-                assertTrue(item == previous);
-            }
-            previous = item;
-        }
-        assertFalse(iter.hasNext());
-        try {
-            iter.next();
-            assertTrue(false);
-        } catch (NoSuchElementException nsee) {
-            // expected
-        }
-
-        // sub-test 5: DataModel providing the instances to produce
-        //             SelectItems from
-        selectMany = new UISelectMany();
-        items = new UISelectItems();
-        items.setValue(new ListDataModel<Integer>((List<Integer>) cItems));
-        selectMany.getChildren().add(items);
-        iter = new SelectItemsIterator(facesContext, selectMany);
-        previous = null;
-        for (int i = 0, len = cItems.size(); i < len; i++) {
-            assertTrue(iter.hasNext());
-            SelectItem item = iter.next();
-            assertNotNull(item);
-            assertEquals(i, item.getValue());
-            assertEquals(Integer.toString(i), item.getLabel());
-            assertNull(item.getDescription());
-            assertFalse(item.isDisabled());
-            assertFalse(item.isEscape());
-            if (previous != null) {
-                // using fly-weight pattern make sure we use the same
-                // instance through out the iteration
-                assertTrue(item == previous);
-            }
-            previous = item;
-        }
-        assertFalse(iter.hasNext());
-        try {
-            iter.next();
-            assertTrue(false);
-        } catch (NoSuchElementException nsee) {
-            // expected
-        }
-
-
-    }
-
-
-    // --------------------------------------------------------- Support Methods
-
-
-    // Create a pristine component of the type to be used in state holder tests
-    protected UIComponent createComponent() {
-        UIComponent component = new UISelectMany();
-        component.setRendererType(null);
-        return (component);
-    }
-
-
-    protected void setupNewValue(UIInput input) {
-
-        input.setSubmittedValue(new Object[] { "foo" });
-        UISelectItem si = new UISelectItem();
-        si.setItemValue("foo");
-        si.setItemLabel("foo label");
-        input.getChildren().add(si);
-
-    }
-
-
-    // Create an options list with nested groups
-    protected List setupOptions() {
-        SelectItemGroup group, subgroup;
-        subgroup = new SelectItemGroup("Group C");
-        subgroup.setSelectItems(new SelectItem[]
-            { new SelectItem("C1"),
-              new SelectItem("C2"),
-              new SelectItem("C3") });
-        List options = new ArrayList();
-        options.add(new SelectItem("A1"));
-        group = new SelectItemGroup("Group B");
-        group.setSelectItems(new SelectItem[]
-            { new SelectItem("B1"),
-              subgroup,
-              new SelectItem("B2"),
-              new SelectItem("B3") });
-        
-        options.add(group);
-        options.add(new SelectItem("A2"));
-        options.add(new SelectItem("A3"));
-        return (options);
-    }
-
-    // Create an options list with nested groups
-    protected Set setupOptionsSet() {
-        SelectItemGroup group, subgroup;
-        subgroup = new SelectItemGroup("Group C");
-        subgroup.setSelectItems(new SelectItem[]
-            { new SelectItem("C1"),
-              new SelectItem("C2"),
-              new SelectItem("C3") });
-        Set<SelectItem> options = new HashSet<SelectItem>();
-        options.add(new SelectItem("A1"));
-        group = new SelectItemGroup("Group B");
-        group.setSelectItems(new SelectItem[]
-            { new SelectItem("B1"),
-              subgroup,
-              new SelectItem("B2"),
-              new SelectItem("B3") });
-        options.add(group);
-        options.add(new SelectItem("A2"));
-        options.add(new SelectItem("A3"));
-        return (options);
-    }
-
-
-
-}
diff --git a/jsf-api/src/test/java/javax/faces/component/UISelectOneTestCase.java b/jsf-api/src/test/java/javax/faces/component/UISelectOneTestCase.java
deleted file mode 100644
index badd488..0000000
--- a/jsf-api/src/test/java/javax/faces/component/UISelectOneTestCase.java
+++ /dev/null
@@ -1,461 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package javax.faces.component;
-
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-import javax.faces.application.FacesMessage;
-import javax.faces.model.SelectItem;
-import javax.faces.model.SelectItemGroup;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.HashSet;
-import java.util.Collection;
-import java.util.Collections;
-
-
-/**
- * <p>Unit tests for {@link UISelectOne}.</p>
- */
-
-public class UISelectOneTestCase extends UIInputTestCase {
-
-
-    // ------------------------------------------------------------ Constructors
-
-
-    /**
-     * Construct a new instance of this test case.
-     *
-     * @param name Name of the test case
-     */
-    public UISelectOneTestCase(String name) {
-        super(name);
-    }
-
-
-    // ---------------------------------------------------- Overall Test Methods
-
-
-    // Set up instance variables required by this test case.
-    public void setUp() {
-        super.setUp();
-        component = new UISelectOne();
-        expectedFamily = UISelectOne.COMPONENT_FAMILY;
-        expectedRendererType = "javax.faces.Menu";
-    }
-
-    
-    // Return the tests included in this test case.
-    public static Test suite() {
-        return (new TestSuite(UISelectOneTestCase.class));
-    }
-
-
-    // Tear down instance variables required by ths test case
-    public void tearDown() {
-        super.tearDown();
-    }
-
-
-    // ------------------------------------------------- Individual Test Methods
-
-
-    // Test a pristine UISelectOne instance
-    public void testPristine() {
-
-        super.testPristine();
-        UISelectOne selectOne = (UISelectOne) component;
-
-    }
-
-
-    // Test setting properties to invalid values
-    public void testPropertiesInvalid() throws Exception {
-
-        super.testPropertiesInvalid();
-        UISelectOne selectOne = (UISelectOne) component;
-
-    }
-
-
-    // Test setting properties to valid values
-    public void testPropertiesValid() throws Exception {
-
-        super.testPropertiesValid();
-        UISelectOne selectOne = (UISelectOne) component;
-
-    }
-
-
-    // Test validation of value against the valid list
-    public void testValidation() throws Exception {
-
-        // Put our component under test in a tree under a UIViewRoot
-        UIViewRoot root = facesContext.getApplication().getViewHandler().createView(facesContext, null);
-        root.getChildren().add(component);
-
-        // Add valid options to the component under test
-        UISelectOne selectOne = (UISelectOne) component;
-        selectOne.getChildren().add(new UISelectItemSub("foo", null, null));
-        selectOne.getChildren().add(new UISelectItemSub("bar", null, null));
-        selectOne.getChildren().add(new UISelectItemSub("baz", null, null));
-
-        // Validate a value that is on the list
-        selectOne.setValid(true);
-        selectOne.setSubmittedValue("bar");
-        selectOne.setRendererType(null); // We don't have any renderers
-        selectOne.validate(facesContext);
-        assertTrue(selectOne.isValid());
-
-        // Validate a value that is not on the list
-        selectOne.getAttributes().put("label", "mylabel");
-        selectOne.setValid(true);
-        selectOne.setSubmittedValue("bop");
-        selectOne.validate(facesContext);
-        assertTrue(!selectOne.isValid());
-        Iterator messages = facesContext.getMessages();
-        while (messages.hasNext()) {
-            FacesMessage message = (FacesMessage) messages.next();
-            assertTrue(message.getSummary().indexOf("mylabel") >= 0);
-        }
-    }
-
-    // Test validation of component with UISelectItems pointing to map
-    public void testValidation2() throws Exception {
-
-         // Put our component under test in a tree under a UIViewRoot
-        UIViewRoot root = facesContext.getApplication().getViewHandler().createView(facesContext, null);
-        root.getChildren().add(component);
-
-        // Add valid options to the component under test
-        Map map = new HashMap();
-        map.put("key_foo", "foo");
-        map.put("key_bar", "bar");
-        map.put("key_baz", "baz");
-        UISelectItems items = new UISelectItems();
-        items.setValue(map);
-        UISelectOne selectOne = (UISelectOne) component;
-        selectOne.getChildren().add(items);
-
-        selectOne.setValid(true);
-        selectOne.setSubmittedValue("foo");
-        selectOne.validate(facesContext);
-        assertTrue(selectOne.isValid());
-
-        // Validate one value on the list and one not on the list
-        selectOne.setValid(true);
-        selectOne.setSubmittedValue("car");
-        selectOne.setRendererType(null); // We don't have any renderers
-        selectOne.validate(facesContext);
-        assertTrue(!selectOne.isValid());
-
-    }
-
-
-    // Test validation of component with UISelectItems pointing to Set
-    public void testValidation3() throws Exception {
-
-        Set<SelectItem> items = new HashSet<SelectItem>();
-        items.add(new SelectItem("foo"));
-        items.add(new SelectItem("bar"));
-        items.add(new SelectItem("baz"));
-
-        testValidateWithCollection(items, "bar", "car");
-        
-    }
-
-    // Test validation of component with UISelectItems pointing to List
-    public void testValidation4() throws Exception {
-
-        List<SelectItem> items = new ArrayList<SelectItem>();
-        items.add(new SelectItem("foo"));
-        items.add(new SelectItem("bar"));
-        items.add(new SelectItem("baz"));
-
-        testValidateWithCollection(items, "bar", "car");
-
-    }
-
-
-    // Test validation of component with UISelectItems pointing to an Array
-    public void testValidation5() throws Exception {
-
-         // Put our component under test in a tree under a UIViewRoot
-        UIViewRoot root = facesContext.getApplication().getViewHandler().createView(facesContext, null);
-        root.getChildren().add(component);
-
-        // Add valid options to the component under test
-        SelectItem[] itemsArray = {
-              new SelectItem("foo"),
-              new SelectItem("bar"),
-              new SelectItem("baz")
-        };
-        UISelectItems items = new UISelectItems();
-        items.setValue(itemsArray);
-        UISelectOne selectOne = (UISelectOne) component;
-        selectOne.getChildren().add(items);
-
-        selectOne.setValid(true);
-        selectOne.setSubmittedValue("foo");
-        selectOne.validate(facesContext);
-        assertTrue(selectOne.isValid());
-
-        // Validate one value on the list and one not on the list
-        selectOne.setValid(true);
-        selectOne.setSubmittedValue("car");
-        selectOne.setRendererType(null); // We don't have any renderers
-        selectOne.validate(facesContext);
-        assertTrue(!selectOne.isValid());
-
-    }
-
-
-    private void testValidateWithCollection(Collection<SelectItem> selectItems,
-                                            String validValue,
-                                            String invalidValue)
-    throws Exception {
-
-        UIViewRoot root = facesContext.getApplication().getViewHandler().createView(facesContext, null);
-        root.getChildren().add(component);
-
-        UISelectItems itemsComponent = new UISelectItems();
-        itemsComponent.setValue(selectItems);
-        UISelectOne selectOne = (UISelectOne) component;
-        selectOne.setRendererType(null);
-        selectOne.getChildren().add(itemsComponent);
-
-        selectOne.setValue(true);
-        selectOne.setSubmittedValue(validValue);
-        selectOne.validate(facesContext);
-        assertTrue(selectOne.isValid());
-        selectOne.updateModel(facesContext);
-
-        selectOne.setValid(true);
-        selectOne.setSubmittedValue(invalidValue);
-        selectOne.validate(facesContext);
-        assertTrue(!selectOne.isValid());
-
-    }
-
-
-    private String legalValues[] =
-    { "A1", "A2", "A3", "B1", "B2", "B3", "C1", "C2", "C3" };
-
-
-    private String illegalValues[] =
-    { "D1", "D2", "Group A", "Group B", "Group C" };
-
-    // Test validation against a nested list of available options
-    public void testValidateNested() throws Exception {
-
-        // Set up UISelectOne with nested UISelectItems
-        UIViewRoot root = facesContext.getApplication().getViewHandler().createView(facesContext, null);
-        root.getChildren().add(component);
-        UISelectOne selectOne = (UISelectOne) component;
-        UISelectItems selectItems = new UISelectItems();
-        selectItems.setValue(setupOptions());
-        selectOne.getChildren().add(selectItems);
-        selectOne.setRequired(true);
-        checkMessages(0);
-
-        // Verify that all legal values will validate
-        for (int i = 0; i < legalValues.length; i++) {
-            selectOne.setValid(true);
-            selectOne.setSubmittedValue(legalValues[i]);
-            selectOne.validate(facesContext);
-            assertTrue("Value '" + legalValues[i] + "' found",
-                       selectOne.isValid());
-            checkMessages(0);
-        }
-
-        // Verify that illegal values will not validate
-        for (int i = 0; i < illegalValues.length; i++) {
-            selectOne.setValid(true);
-            selectOne.setSubmittedValue(illegalValues[i]);
-            selectOne.validate(facesContext);
-            assertTrue("Value '" + illegalValues[i] + "' not found",
-                       !selectOne.isValid());
-            checkMessages(i + 1);
-        }
-
-
-    }
-
-
-    // Test validation of a required field
-    public void testValidateRequired() throws Exception {
-
-        UIViewRoot root = facesContext.getApplication().getViewHandler().createView(facesContext, null);
-        root.getChildren().add(component);
-        UISelectOne selectOne = (UISelectOne) component;
-        selectOne.getChildren().add(new UISelectItemSub("foo", null, null));
-        selectOne.getChildren().add(new UISelectItemSub("bar", null, null));
-        selectOne.getChildren().add(new UISelectItemSub("baz", null, null));
-        selectOne.setRequired(true);
-        checkMessages(0);
-
-        selectOne.setValid(true);
-        selectOne.setSubmittedValue("foo");
-        selectOne.validate(facesContext);
-        checkMessages(0);
-        assertTrue(selectOne.isValid());
-
-        selectOne.setValid(true);
-        selectOne.setSubmittedValue("");
-        selectOne.validate(facesContext);
-        checkMessages(1);
-        assertTrue(!selectOne.isValid());
-
-        selectOne.setValid(true);
-        selectOne.setSubmittedValue(null);
-        // awiner: see UIInputTestCase
-        selectOne.validate(facesContext);
-        checkMessages(1);
-        assertTrue(selectOne.isValid());
-
-    }
-
-
-    // Test that appropriate properties are value binding enabled
-    public void PENDING_FIXME_testValueBindings() {
-
-	super.testValueBindings();
-	UISelectOne test = (UISelectOne) component;
-
-	// "value" property
-	request.setAttribute("foo", "bar");
-	test.setValue(null);
-	assertNull(test.getValue());
-	test.setValueBinding("value", application.createValueBinding("#{foo}"));
-	assertNotNull(test.getValueBinding("value"));
-	assertEquals("bar", test.getValue());
-	test.setValue("baz");
-	assertEquals("baz", test.getValue());
-	test.setValue(null);
-	assertEquals("bar", test.getValue());
-	test.setValueBinding("value", null);
-	assertNull(test.getValueBinding("value"));
-	assertNull(test.getValue());
-
-    }
-
-    public void testSelectItemsIterator() {
-        // sub test 1 : non-selectItem at end
-        UISelectOne selectOne = (UISelectOne) component;
-        selectOne.getChildren().add(new UISelectItemSub("orr", null, null));
-        selectOne.getChildren().add(new UISelectItemSub("esposito", null, null));
-        UIParameter param = new UIParameter();
-        param.setName("param");
-        param.setValue("paramValue");
-        selectOne.getChildren().add(param);
-        Iterator iter = new SelectItemsIterator(facesContext, selectOne);
-        while (iter.hasNext()) {
-            Object object = iter.next();
-            assertTrue(object instanceof javax.faces.model.SelectItem);
-            assertTrue((((SelectItem)object).getValue().equals("orr")) || 
-                (((SelectItem)object).getValue().equals("esposito")));
-        }
-
-        // sub test 2: non-selectitem in middle
-        selectOne = new UISelectOne();
-        selectOne.getChildren().add(new UISelectItemSub("gretsky", null, null));
-        selectOne.getChildren().add(param);
-        selectOne.getChildren().add(new UISelectItemSub("howe", null, null));
-        iter = new SelectItemsIterator(facesContext, selectOne);
-        while (iter.hasNext()) {
-            Object object = iter.next();
-            assertTrue(object instanceof javax.faces.model.SelectItem);
-            assertTrue((((SelectItem)object).getValue().equals("gretsky")) || 
-                (((SelectItem)object).getValue().equals("howe")));
-        }
-    }
-
-
-    // --------------------------------------------------------- Support Methods
-
-
-    // Create a pristine component of the type to be used in state holder tests
-    protected UIComponent createComponent() {
-        UIComponent component = new UISelectOne();
-        component.setRendererType(null);
-        return (component);
-    }
-
-
-    protected void setupNewValue(UIInput input) {
-
-        input.setSubmittedValue("foo");
-        UISelectItem si = new UISelectItem();
-        si.setItemValue("foo");
-        si.setItemLabel("foo label");
-        input.getChildren().add(si);
-
-    }
-
-
-    // Create an options list with nested groups
-    protected List setupOptions() {
-        SelectItemGroup group, subgroup;
-        subgroup = new SelectItemGroup("Group C");
-        subgroup.setSelectItems(new SelectItem[]
-            { new SelectItem("C1"),
-              new SelectItem("C2"),
-              new SelectItem("C3") });
-        List options = new ArrayList();
-        options.add(new SelectItem("A1"));
-        group = new SelectItemGroup("Group B");
-        group.setSelectItems(new SelectItem[]
-            { new SelectItem("B1"),
-              subgroup,
-              new SelectItem("B2"),
-              new SelectItem("B3") });
-        options.add(group);
-        options.add(new SelectItem("A2"));
-        options.add(new SelectItem("A3"));
-        return (options);
-    }
-
-
-}
diff --git a/jsf-api/src/test/java/javax/faces/component/UIViewRootTestCase.java b/jsf-api/src/test/java/javax/faces/component/UIViewRootTestCase.java
deleted file mode 100644
index 2687d72..0000000
--- a/jsf-api/src/test/java/javax/faces/component/UIViewRootTestCase.java
+++ /dev/null
@@ -1,1077 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package javax.faces.component;
-
-
-import com.sun.faces.mock.MockRenderKit;
-import java.lang.reflect.Field;
-import java.util.List;
-import java.util.Locale;
-import java.io.IOException;
-import java.util.Map;
-import javax.faces.FactoryFinder;
-import javax.faces.application.Application;
-import javax.faces.event.PhaseEvent;
-import javax.faces.event.PhaseListener;
-import javax.faces.context.FacesContext;
-import javax.faces.event.PhaseId;
-import javax.faces.event.SystemEventListener;
-import javax.faces.event.SystemEvent;
-import javax.faces.event.AbortProcessingException;
-import javax.faces.event.PostConstructViewMapEvent;
-import javax.faces.event.PreDestroyViewMapEvent;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-
-import javax.el.ValueExpression;
-import javax.el.MethodExpression;
-import javax.faces.render.RenderKit;
-import javax.faces.render.RenderKitFactory;
-
-
-/**
- * <p>Test case for the <strong>javax.faces.UIViewRoot</strong>
- * concrete class.</p>
- */
-
-public class UIViewRootTestCase extends UIComponentBaseTestCase {
-
-
-    // ------------------------------------------------------------ Constructors
-
-
-    /**
-     * Construct a new instance of this test case.
-     *
-     * @param name Name of the test case
-     */
-    public UIViewRootTestCase(String name) {
-        super(name);
-    }
-
-
-    // ---------------------------------------------------- Overall Test Methods
-
-
-    /**
-     * Return the tests included in this test suite.
-     */
-    public static Test suite() {
-
-        return (new TestSuite(UIViewRootTestCase.class));
-
-    }
-
-    public static String FACTORIES[][] = {
-	{ FactoryFinder.APPLICATION_FACTORY, 
-	  "com.sun.faces.mock.MockApplicationFactory"
-	},
-	{ FactoryFinder.FACES_CONTEXT_FACTORY, 
-	  "com.sun.faces.mock.MockFacesContextFactory"
-	},
-	{ FactoryFinder.LIFECYCLE_FACTORY, 
-	  "com.sun.faces.mock.MockLifecycleFactory"
-	},
-	{ FactoryFinder.RENDER_KIT_FACTORY, 
-	  "com.sun.faces.mock.MockRenderKitFactory"
-	}
-    };
-
-    public void setUp() {
-        FactoryFinder.releaseFactories();
-	super.setUp();
-	for (int i = 0, len = FACTORIES.length; i < len; i++) {
-	    System.getProperties().remove(FACTORIES[i][0]);
-	}
-
-	FactoryFinder.releaseFactories();
-	int len, i = 0;
-
-	// simulate the "faces implementation specific" part
-	for (i = 0, len = FACTORIES.length; i < len; i++) {
-	    FactoryFinder.setFactory(FACTORIES[i][0],
-				     FACTORIES[i][1]);
-	}
-        
-	UIViewRoot root = facesContext.getApplication().getViewHandler().createView(facesContext, null);
-	root.setViewId("/viewId");
-        facesContext.setViewRoot(root);
-        RenderKitFactory renderKitFactory = (RenderKitFactory)
-            FactoryFinder.getFactory(FactoryFinder.RENDER_KIT_FACTORY);
-        RenderKit renderKit = new MockRenderKit();
-        try {
-            renderKitFactory.addRenderKit(RenderKitFactory.HTML_BASIC_RENDER_KIT,
-                                          renderKit);
-        } catch (IllegalArgumentException e) {
-            ;
-        }
-
-	
-    }
-
-    /**
-     * Tear down instance variables required by this test case.
-     */
-    public void tearDown() {
-
-        component = null;
-
-    }
-
-
-    // ------------------------------------------------- Individual Test Methods
-
-
-    public void testAddGetComponentResources() {
-
-        application.addComponent("javax.faces.ComponentResourceContainer", Container.class.getName());
-        UIViewRoot root = new UIViewRoot();
-        UIOutput resource = new UIOutput();
-
-        // no target argument should result in target being head
-        root.addComponentResource(facesContext, resource);
-        List<UIComponent> components = root.getComponentResources(facesContext, "head");
-        assertNotNull(components);
-        assertTrue(components.size() == 1);
-        assertTrue(components.get(0) == resource);
-        UIOutput resource2 = new UIOutput();
-        root.addComponentResource(facesContext, resource2);
-        assertTrue(components.size() == 2);
-        assertTrue(components.get(1) == resource2);
-        root.addComponentResource(facesContext, resource2, "form");
-        components = root.getComponentResources(facesContext, "form");
-        assertTrue(components.size() == 1);
-        root.addComponentResource(facesContext, resource2, "body");
-        components = root.getComponentResources(facesContext, "body");
-        assertTrue(components.size() == 1);
-
-        // the default implementation masks the facet name values
-        // of head and form to ensure there are no collisions with valid
-        // facets by the name.  Calling UIViewRoot.getFacet("head") or
-        // get("form") will return null.
-        assertNull(root.getFacet("head"));
-        assertNull(root.getFacet("form"));
-        assertNull(root.getFacet("body"));
-        assertNotNull(root.getFacet("javax_faces_location_HEAD"));
-        assertNotNull(root.getFacet("javax_faces_location_FORM"));
-        assertNotNull(root.getFacet("javax_faces_location_BODY"));
-
-        // custom locations will also be masked
-        root.addComponentResource(facesContext, resource2, "gt");
-        assertNotNull(root.getFacet("javax_faces_location_gt"));
-        components = root.getComponentResources(facesContext, "gt");
-        assertTrue(components.size() == 1);
-
-    }
-
-
-    // Test AbortProcessingException support
-    public void testAbortProcessingException() {
-
-        // Register three listeners, with the second one set to abort
-        UIViewRoot root = facesContext.getApplication().getViewHandler().createView(facesContext, null);
-        facesContext.setViewRoot(root);
-        root.addFacesListener
-            (new TestListener("a", false));
-        root.addFacesListener
-            (new TestListener("b", true));
-        root.addFacesListener
-            (new TestListener("c", false));
-
-        // Queue two event and check the results
-        TestListener.trace(null);
-        TestEvent event1 = new TestEvent(root, "1");
-        event1.setPhaseId(PhaseId.APPLY_REQUEST_VALUES);
-        root.queueEvent(event1);
-        TestEvent event2 = new TestEvent(root, "2");
-        event2.setPhaseId(PhaseId.APPLY_REQUEST_VALUES);
-        root.queueEvent(event2);
-        root.processDecodes(facesContext);
-        assertEquals("/a/1/b/1/a/2/b/2", TestListener.trace());
-
-    }
-
-
-    // Test event queuing and dequeuing during broadcasting
-    public void testEventBroadcasting() {
-
-        // Register a listener that will conditionally queue a new event
-        UIViewRoot root = facesContext.getApplication().getViewHandler().createView(facesContext, null);
-        facesContext.setViewRoot(root);
-
-        root.addFacesListener
-            (new TestListener("t", "2", "4"));
-        TestListener.trace(null);
-
-        // Queue some events, including the trigger one
-	TestEvent event = new TestEvent(root, "1");
-	event.setPhaseId(PhaseId.APPLY_REQUEST_VALUES);
-        root.queueEvent(event);
-	event = new TestEvent(root, "2");
-	event.setPhaseId(PhaseId.APPLY_REQUEST_VALUES);
-        root.queueEvent(event);
-	event = new TestEvent(root, "3");
-	event.setPhaseId(PhaseId.APPLY_REQUEST_VALUES);
-        root.queueEvent(event);
-
-        // Simulate the Apply Request Values phase
-        root.processDecodes(facesContext);
-
-        // Validate the results (expect 4th event to also be queued)
-        String expected = "/t/1/t/2/t/3/t/4";
-        assertEquals(expected, TestListener.trace());
-
-    }
-
-
-    // Test event queuing and broadcasting
-    public void testEventQueuing() {
-
-        // Check for correct ifecycle management processing of event broadcast
-        checkEventQueueing(PhaseId.APPLY_REQUEST_VALUES);
-        checkEventQueueing(PhaseId.PROCESS_VALIDATIONS);
-        checkEventQueueing(PhaseId.UPDATE_MODEL_VALUES);
-        checkEventQueueing(PhaseId.INVOKE_APPLICATION);
-        checkEventQueueing(PhaseId.ANY_PHASE);
-
-    }
-
-    public void testLocaleFromVB() throws Exception {
-	UIViewRoot root = facesContext.getApplication().getViewHandler().createView(facesContext, null);
-        facesContext.setViewRoot(root);
-        ValueExpression expression = application.getExpressionFactory().createValueExpression(facesContext.getELContext(),
-											      "#{locale}", Object.class);
-	request.setAttribute("locale", Locale.CHINESE);
-	assertEquals(Locale.getDefault(), root.getLocale());
-	root.setValueExpression("locale", expression);
-	assertEquals(Locale.CHINESE, root.getLocale());
-
-           // test locale from String
-        request.setAttribute("locale", "en");
-        assertEquals(new Locale("en"), root.getLocale());
-        request.setAttribute("locale", "en_IE");
-        assertEquals(new Locale("en", "IE"), root.getLocale());
-        request.setAttribute("locale", "en_IE_EURO");
-        assertEquals(new Locale("en", "IE", "EURO"), root.getLocale());
-        
-    root.setLocale(Locale.CANADA_FRENCH);
-	assertEquals(Locale.CANADA_FRENCH, root.getLocale());
-    }
-
-    public void testUninitializedInstance() throws Exception {
-	UIViewRoot root = facesContext.getApplication().getViewHandler().createView(facesContext, null);
-        facesContext.setViewRoot(root);
-        assertEquals(javax.faces.render.RenderKitFactory.HTML_BASIC_RENDER_KIT,
-		     root.getRenderKitId());
-	assertEquals(Locale.getDefault(), root.getLocale());
-	
-    }
-
-    public void testPhaseMethExpression() throws Exception {
-	UIViewRoot root = facesContext.getApplication().getViewHandler().createView(facesContext, null);
-        facesContext.setViewRoot(root);
-        doTestPhaseMethodExpression(root, false);
-    }
-
-    public void testPhaseMethExpressionSkipping() throws Exception {
-	UIViewRoot root = facesContext.getApplication().getViewHandler().createView(facesContext, null);
-        facesContext.setViewRoot(root);
-	doTestPhaseMethodExpression(root, true);
-    }
-
-    public void testPhaseListener() throws Exception {
-	UIViewRoot root = facesContext.getApplication().getViewHandler().createView(facesContext, null);
-        facesContext.setViewRoot(root);
-	doTestPhaseListener(root, false);
-    }
-
-    public void testPhaseListenerSkipping() throws Exception {
-	UIViewRoot root = facesContext.getApplication().getViewHandler().createView(facesContext, null);
-        facesContext.setViewRoot(root);
-	doTestPhaseListener(root, true);
-    }
-
-    public void testPhaseMethodExpressionAndListener() throws Exception {
-	UIViewRoot root = facesContext.getApplication().getViewHandler().createView(facesContext, null);
-        facesContext.setViewRoot(root);
-	doTestPhaseMethodExpressionAndListener(root, false);
-    }
-
-    public void testPhaseMethodExpressionAndListenerSkipping() throws Exception {
-	UIViewRoot root = facesContext.getApplication().getViewHandler().createView(facesContext, null);
-        facesContext.setViewRoot(root);
-	doTestPhaseMethodExpressionAndListener(root, true);
-    }
-
-    public void testPhaseMethExpressionState() throws Exception {
-	UIViewRoot root = facesContext.getApplication().getViewHandler().createView(facesContext, null);
-        facesContext.setViewRoot(root);
-	Object state = root.saveState(facesContext);
-	root = facesContext.getApplication().getViewHandler().createView(facesContext, null);
-        facesContext.setViewRoot(root);
-	root.restoreState(facesContext, state);
-
-	doTestPhaseMethodExpression(root, false);
-    }
-
-    public void testPhaseListenerState() throws Exception {
-	UIViewRoot root = facesContext.getApplication().getViewHandler().createView(facesContext, null);
-        facesContext.setViewRoot(root);
-	Object state = root.saveState(facesContext);
-	root = facesContext.getApplication().getViewHandler().createView(facesContext, null);
-        facesContext.setViewRoot(root);
-	root.restoreState(facesContext, state);
-
-	doTestPhaseListener(root, false);
-    }
-
-    public void testPhaseMethodExpressionAndListenerState() throws Exception {
-	UIViewRoot root = facesContext.getApplication().getViewHandler().createView(facesContext, null);
-        facesContext.setViewRoot(root);
-	Object state = root.saveState(facesContext);
-	root = facesContext.getApplication().getViewHandler().createView(facesContext, null);
-        facesContext.setViewRoot(root);
-	root.restoreState(facesContext, state);
-
-	doTestPhaseMethodExpressionAndListener(root, false);
-    }
-
-
-    public void testPhaseListenerExceptions() throws Exception {
-        PhaseId[] ids = {
-              PhaseId.APPLY_REQUEST_VALUES,
-              PhaseId.PROCESS_VALIDATIONS,
-              PhaseId.UPDATE_MODEL_VALUES,
-              PhaseId.INVOKE_APPLICATION,
-              PhaseId.RENDER_RESPONSE };
-        Class[] args = new Class[]{PhaseEvent.class};
-        MethodExpression beforeExpression = facesContext.getApplication()
-              .getExpressionFactory()
-              .createMethodExpression(facesContext.getELContext(),
-                                      "#{bean.beforePhase}", null,
-                                      args);
-        MethodExpression afterExpression = facesContext.getApplication()
-              .getExpressionFactory()
-              .createMethodExpression(facesContext.getELContext(),
-                                      "#{bean.afterPhase}", null,
-                                      args);
-        for (PhaseId id : ids) {
-            UIViewRoot root = facesContext.getApplication().getViewHandler().createView(facesContext, null);
-            PhaseListenerBean bean = new PhaseListenerBean(id, true, false);
-            PhaseListenerBean pl1 = new PhaseListenerBean(id);
-            PhaseListenerBean pl2 = new PhaseListenerBean(id);
-            facesContext.getExternalContext().getRequestMap().put("bean", bean);
-            root.setBeforePhaseListener(beforeExpression);
-            root.setAfterPhaseListener(afterExpression);
-            root.addPhaseListener(pl1);
-            root.addPhaseListener(pl2);
-
-            // validate behavior
-            callRightLifecycleMethodGivenPhaseId(root, id);
-            assertTrue(bean.isBeforePhaseCalled());
-            assertTrue(!bean.isAfterPhaseCalled());
-            assertTrue(!pl1.isBeforePhaseCalled());
-            assertTrue(!pl1.isAfterPhaseCalled());
-            assertTrue(!pl2.isBeforePhaseCalled());
-            assertTrue(!pl2.isAfterPhaseCalled());
-
-            // ensure PLs are invoked properly in the case of exceptions
-            root = facesContext.getApplication().getViewHandler().createView(facesContext, null);
-            bean = new PhaseListenerBean(id);
-            pl1 = new PhaseListenerBean(id, true, false);
-            pl2 = new PhaseListenerBean(id);
-            facesContext.getExternalContext().getRequestMap().put("bean", bean);
-            root.setBeforePhaseListener(beforeExpression);
-            root.setAfterPhaseListener(afterExpression);
-            root.addPhaseListener(pl1);
-            root.addPhaseListener(pl2);
-
-            // validate behavior
-            callRightLifecycleMethodGivenPhaseId(root, id);
-            assertTrue(bean.isBeforePhaseCalled());
-            assertTrue(bean.isAfterPhaseCalled());
-            assertTrue(pl1.isBeforePhaseCalled());
-            assertTrue(!pl1.isAfterPhaseCalled());
-            assertTrue(!pl2.isBeforePhaseCalled());
-            assertTrue(!pl2.isAfterPhaseCalled());
-        }
-
-    }
-
-
-	
-    public void doTestPhaseMethodExpression(UIViewRoot root, 
-					 boolean skipping) throws Exception {
-	PhaseSkipTestComponent comp = null;
-	if (skipping) {
-	    comp = new PhaseSkipTestComponent();
-	    root.getChildren().add(comp);
-	    facesContext.responseComplete();
-	}
-	doTestPhaseMethodExpressionWithPhaseId(root, 
-					    PhaseId.APPLY_REQUEST_VALUES);
-	if (skipping) {
-	    assertTrue(!comp.isDecodeCalled());
-	}
-	doTestPhaseMethodExpressionWithPhaseId(root, PhaseId.PROCESS_VALIDATIONS);
-	if (skipping) {
-	    assertTrue(!comp.isProcessValidatorsCalled());
-	}
-	doTestPhaseMethodExpressionWithPhaseId(root, PhaseId.UPDATE_MODEL_VALUES);
-	if (skipping) {
-	    assertTrue(!comp.isProcessUpdatesCalled());
-	}
-	doTestPhaseMethodExpressionWithPhaseId(root, PhaseId.INVOKE_APPLICATION);
-	doTestPhaseMethodExpressionWithPhaseId(root, PhaseId.RENDER_RESPONSE);
-	if (skipping) {
-	    assertTrue(!comp.isEncodeBeginCalled());
-	}
-	
-    }
-
-    public void doTestPhaseMethodExpressionWithPhaseId(UIViewRoot root, 
-						    PhaseId phaseId) throws Exception {
-	PhaseListenerBean phaseListenerBean = new PhaseListenerBean(phaseId);
-	facesContext.getExternalContext().getRequestMap().put("bean",
-							    phaseListenerBean);
-	Class [] args = new Class [] { PhaseEvent.class };
-	MethodExpression 
-	    beforeExpression = facesContext.getApplication().getExpressionFactory().createMethodExpression(facesContext.getELContext(),
-										    "#{bean.beforePhase}", null,
-										    args),
-	    afterExpression = facesContext.getApplication().getExpressionFactory().createMethodExpression(facesContext.getELContext(),
-										   "#{bean.afterPhase}", null, 
-										   args);
-	root.setBeforePhaseListener(beforeExpression);
-	root.setAfterPhaseListener(afterExpression);
-
-	callRightLifecycleMethodGivenPhaseId(root, phaseId);
-
-	assertTrue(phaseListenerBean.isBeforePhaseCalled());
-	assertTrue(phaseListenerBean.isAfterPhaseCalled());
-	
-	
-    }
-
-
-    public void doTestPhaseListener(UIViewRoot root, 
-				    boolean skipping) throws Exception {
-	PhaseSkipTestComponent comp = null;
-	if (skipping) {
-	    comp = new PhaseSkipTestComponent();
-	    root.getChildren().add(comp);
-	    facesContext.responseComplete();
-	}
-	doTestPhaseListenerWithPhaseId(root, 
-					    PhaseId.APPLY_REQUEST_VALUES);
-	if (skipping) {
-	    assertTrue(!comp.isDecodeCalled());
-	}
-	doTestPhaseListenerWithPhaseId(root, PhaseId.PROCESS_VALIDATIONS);
-	if (skipping) {
-	    assertTrue(!comp.isProcessValidatorsCalled());
-	}
-	doTestPhaseListenerWithPhaseId(root, PhaseId.UPDATE_MODEL_VALUES);
-	if (skipping) {
-	    assertTrue(!comp.isProcessUpdatesCalled());
-	}
-	doTestPhaseListenerWithPhaseId(root, PhaseId.INVOKE_APPLICATION);
-	doTestPhaseListenerWithPhaseId(root, PhaseId.RENDER_RESPONSE);
-	if (skipping) {
-	    assertTrue(!comp.isEncodeBeginCalled());
-	}
-
-    }
-
-    public void doTestPhaseListenerWithPhaseId(UIViewRoot root,
-					       PhaseId phaseId) throws Exception {
-	PhaseListenerBean phaseListener = new PhaseListenerBean(phaseId);
-	root.addPhaseListener(phaseListener);
-
-	callRightLifecycleMethodGivenPhaseId(root, phaseId);
-
-	assertTrue(phaseListener.isBeforePhaseCalled());
-	assertTrue(phaseListener.isAfterPhaseCalled());
-	
-	
-    }
-
-
-    public void doTestPhaseMethodExpressionAndListener(UIViewRoot root, 
-						    boolean skipping) throws Exception {
-	PhaseSkipTestComponent comp = null;
-	if (skipping) {
-	    comp = new PhaseSkipTestComponent();
-	    root.getChildren().add(comp);
-	    facesContext.responseComplete();
-	}
-	doTestPhaseMethodExpressionAndListenerWithPhaseId(root, 
-						       PhaseId.APPLY_REQUEST_VALUES);
-	if (skipping) {
-	    assertTrue(!comp.isDecodeCalled());
-	}
-	doTestPhaseMethodExpressionAndListenerWithPhaseId(root, 
-						       PhaseId.PROCESS_VALIDATIONS);
-	if (skipping) {
-	    assertTrue(!comp.isProcessValidatorsCalled());
-	}
-	doTestPhaseMethodExpressionAndListenerWithPhaseId(root, 
-						       PhaseId.UPDATE_MODEL_VALUES);
-	if (skipping) {
-	    assertTrue(!comp.isProcessUpdatesCalled());
-	}
-	doTestPhaseMethodExpressionAndListenerWithPhaseId(root, 
-						       PhaseId.INVOKE_APPLICATION);
-	doTestPhaseMethodExpressionAndListenerWithPhaseId(root, 
-						       PhaseId.RENDER_RESPONSE);
-	if (skipping) {
-	    assertTrue(!comp.isEncodeBeginCalled());
-	}
-
-    }
-
-    public void doTestPhaseMethodExpressionAndListenerWithPhaseId(UIViewRoot root,
-							       PhaseId phaseId) throws Exception {
-	PhaseListenerBean phaseListener = new PhaseListenerBean(phaseId);
-	PhaseListenerBean phaseListenerBean = new PhaseListenerBean(phaseId);
-	facesContext.getExternalContext().getRequestMap().put("bean",
-							    phaseListenerBean);
-	Class [] args = new Class [] { PhaseEvent.class };
-	MethodExpression 
-	    beforeExpression = facesContext.getApplication().getExpressionFactory().createMethodExpression(facesContext.getELContext(),
-													   "#{bean.beforePhase}", null,
-													   args),
-	    afterExpression = facesContext.getApplication().getExpressionFactory().createMethodExpression(facesContext.getELContext(),
-													  "#{bean.afterPhase}", null,
-													  args);
-	root.setBeforePhaseListener(beforeExpression);
-	root.setAfterPhaseListener(afterExpression);
-	root.addPhaseListener(phaseListener);
-
-	callRightLifecycleMethodGivenPhaseId(root, phaseId);
-
-	assertTrue(phaseListenerBean.isBeforePhaseCalled());
-	assertTrue(phaseListenerBean.isAfterPhaseCalled());
-	assertTrue(phaseListener.isBeforePhaseCalled());
-	assertTrue(phaseListener.isAfterPhaseCalled());
-	
-    }
-    
-    private void checkEventQueuesSizes(List<List> events,
-	int applyEventsSize, int valEventsSize, int updateEventsSize, int appEventsSize) {
-        List applyEvents = events.get(PhaseId.APPLY_REQUEST_VALUES.getOrdinal());
-        assertEquals("Apply-Request-Values Event Count", applyEventsSize, applyEvents.size());
-        List valEvents = events.get(PhaseId.PROCESS_VALIDATIONS.getOrdinal());
-        assertEquals("Process-Validations Event Count", valEventsSize, valEvents.size());
-        List updateEvents = events.get(PhaseId.UPDATE_MODEL_VALUES.getOrdinal());
-        assertEquals("Update-Model Event Count", updateEventsSize, updateEvents.size());
-        List appEvents = events.get(PhaseId.INVOKE_APPLICATION.getOrdinal());
-        assertEquals("Invoke-Application Event Count", appEventsSize, appEvents.size());
-    }
-
-    // Test Events List Clearing
-    public void testEventsListClear() {
-        UIViewRoot root = facesContext.getApplication().getViewHandler().createView(facesContext, null);
-        facesContext.setViewRoot(root);
-        TestEvent event1, event2, event3, event4 = null;
-        event1 = new TestEvent(root, "1");
-        event1.setPhaseId(PhaseId.APPLY_REQUEST_VALUES);
-        root.queueEvent(event1);
-        event2 = new TestEvent(root, "2");
-        event2.setPhaseId(PhaseId.PROCESS_VALIDATIONS);
-        root.queueEvent(event2);
-        event3 = new TestEvent(root, "3");
-        event3.setPhaseId(PhaseId.UPDATE_MODEL_VALUES);
-        root.queueEvent(event3);
-        event4 = new TestEvent(root, "4");
-        event4.setPhaseId(PhaseId.INVOKE_APPLICATION);
-        root.queueEvent(event4);
-        final Field fields[] = UIViewRoot.class.getDeclaredFields();
-        Field field = null;
-        List<List> events = null;
-        for (int i = 0; i < fields.length; ++i) {
-            if ("events".equals(fields[i].getName())) {
-                field = fields[i];
-                field.setAccessible(true);
-                try {
-                    events = TypedCollections.dynamicallyCastList((List) field.get(root), List.class);
-                } catch (Exception e) {
-                    assertTrue(false);
-                }
-                break;
-            }
-        }
-        // CASE: renderReponse not set; responseComplete not set;
-        // check for existence of events before processDecodes
-        checkEventQueuesSizes(events, 1, 1, 1, 1);
-        root.processDecodes(facesContext);
-        // there should be no events
-        checkEventQueuesSizes(events, 0, 1, 1, 1);
-                                                                                     
-        // requeue apply request event
-        root.queueEvent(event1);
-        // CASE: renderReponse set;
-        // check for existence of events before processValidators
-        checkEventQueuesSizes(events, 1, 1, 1, 1);
-        facesContext.renderResponse();
-        root.processValidators(facesContext);
-        // there should be no events
-        checkEventQueuesSizes(events, 0, 0, 0, 0);
-
-        // reset FacesContext
-        facesContext.setRenderResponse(false);
-        facesContext.setResponseComplete(false);
-        // requeue all events
-        root.queueEvent(event1);
-        root.queueEvent(event2);
-        root.queueEvent(event3);
-        root.queueEvent(event4);
-        try {
-            events = TypedCollections.dynamicallyCastList((List) field.get(root), List.class);
-        } catch (Exception e) {
-            assertTrue(false);
-        }
-        // CASE: response set;
-        // check for existence of events before processValidators
-        checkEventQueuesSizes(events, 1, 1, 1, 1);
-        facesContext.renderResponse();
-        root.processValidators(facesContext);
-        // there should be no events
-        checkEventQueuesSizes(events, 0, 0, 0, 0);
-
-        // reset FacesContext
-        facesContext.setRenderResponse(false);
-        facesContext.setResponseComplete(false);
-        // requeue all events
-        root.queueEvent(event1);
-        root.queueEvent(event2);
-        root.queueEvent(event3);
-        root.queueEvent(event4);
-        try {
-            events = TypedCollections.dynamicallyCastList((List) field.get(root), List.class);
-        } catch (Exception e) {
-            assertTrue(false);
-        }
-        // CASE: response complete;
-        // check for existence of events before processUpdates
-        checkEventQueuesSizes(events, 1, 1, 1, 1);
-        facesContext.responseComplete();
-        root.processUpdates(facesContext);
-        // there should be no events
-        checkEventQueuesSizes(events, 0, 0, 0, 0);
-
-        // reset FacesContext
-        facesContext.setRenderResponse(false);
-        facesContext.setResponseComplete(false);
-        // requeue all events
-        root.queueEvent(event1);
-        root.queueEvent(event2);
-        root.queueEvent(event3);
-        root.queueEvent(event4);
-        try {
-            events = TypedCollections.dynamicallyCastList((List) field.get(root), List.class);
-        } catch (Exception e) {
-            assertTrue(false);
-        }
-        // CASE: response complete;
-        // check for existence of events before processApplication
-        checkEventQueuesSizes(events, 1, 1, 1, 1);
-        facesContext.responseComplete();
-        root.processApplication(facesContext);
-        // there should be no events
-        checkEventQueuesSizes(events, 0, 0, 0, 0);
-                                                                                     
-        //finally, get the internal events list one more time
-        //to make sure it is null
-        try {
-            events = TypedCollections.dynamicallyCastList((List) field.get(root), List.class);
-        } catch (Exception e) {
-            assertTrue(false);
-        }
-        assertNull("events", events);
-    }
-                                                                             
-
-
-    private void callRightLifecycleMethodGivenPhaseId(UIViewRoot root,
-						      PhaseId phaseId) throws Exception {
-	if (phaseId.getOrdinal() == PhaseId.APPLY_REQUEST_VALUES.getOrdinal()) {
-	    root.processDecodes(facesContext);
-	}
-	else if(phaseId.getOrdinal() == PhaseId.PROCESS_VALIDATIONS.getOrdinal()) {
-	    root.processValidators(facesContext);
-	} else if(phaseId.getOrdinal() == PhaseId.UPDATE_MODEL_VALUES.getOrdinal()) {
-	    root.processUpdates(facesContext);
-	} else if(phaseId.getOrdinal() == PhaseId.INVOKE_APPLICATION.getOrdinal()) {
-	    root.processApplication(facesContext);
-	} else if(phaseId.getOrdinal() == PhaseId.RENDER_RESPONSE.getOrdinal()) {
-	    root.encodeBegin(facesContext);
-	    root.encodeEnd(facesContext);
-	}
-    }
-
-    // --------------------------------------------------------- Support Methods
-
-
-    private void checkEventQueueing(PhaseId phaseId) {
-
-        // NOTE:  Current semantics for ANY_PHASE listeners is that
-        // the event should be delivered exactly once, so the existence
-        // of such a listener does not cause the event to remain queued.
-        // Therefore, the expected string is the same as for any
-        // phase-specific listener, and it should get matched after
-        // Apply Request Values processing since that is first phase
-        // for which events are fired
-
-        // Register an event listener for the specified phase id
-        UIViewRoot root = facesContext.getApplication().getViewHandler().createView(facesContext, null);
-        facesContext.setViewRoot(root);
-	TestEvent event = null;
-        TestListener listener = new TestListener("t");
-        root.addFacesListener(listener);
-
-        // Queue some events to be processed
-	event = new TestEvent(root, "1");
-	event.setPhaseId(phaseId);
-        root.queueEvent(event);
-	event = new TestEvent(root, "2");
-	event.setPhaseId(phaseId);
-        root.queueEvent(event);
-        String expected = "/t/1/t/2";
-
-        // Fire off the relevant lifecycle methods and check expected results
-        TestListener.trace(null);
-        assertEquals("", TestListener.trace());
-        root.processDecodes(facesContext);
-        if (PhaseId.APPLY_REQUEST_VALUES.equals(phaseId) ||
-            PhaseId.ANY_PHASE.equals(phaseId)) {
-            assertEquals(expected, TestListener.trace());
-        } else {
-            assertEquals("", TestListener.trace());
-        }
-        root.processValidators(facesContext);
-        if (PhaseId.PROCESS_VALIDATIONS.equals(phaseId) ||
-            PhaseId.APPLY_REQUEST_VALUES.equals(phaseId) ||
-            PhaseId.APPLY_REQUEST_VALUES.equals(phaseId) ||
-            PhaseId.ANY_PHASE.equals(phaseId)) {
-            assertEquals(expected, TestListener.trace());
-        } else {
-            assertEquals("", TestListener.trace());
-        }
-        root.processUpdates(facesContext);
-        if (PhaseId.UPDATE_MODEL_VALUES.equals(phaseId) ||
-            PhaseId.PROCESS_VALIDATIONS.equals(phaseId) ||
-            PhaseId.APPLY_REQUEST_VALUES.equals(phaseId) ||
-            PhaseId.ANY_PHASE.equals(phaseId)) {
-            assertEquals(expected, TestListener.trace());
-        } else {
-            assertEquals("", TestListener.trace());
-        }
-        root.processApplication(facesContext);
-        assertEquals(expected, TestListener.trace());
-        
-    }
-    
-    // These overrides are necessary because our normal setup
-    // calls releaseFactories, which makes it impossible to get clientIds.
-    
-    public void testInvokeOnComponentPositive() throws Exception {
-        super.setUp();
-        super.testInvokeOnComponentPositive();
-    }
-    
-    public void testInvokeOnComponentNegative() throws Exception {
-        super.setUp();
-        super.testInvokeOnComponentNegative();
-    }
-
-    public void testInvokeOnComponentWithPrependId() throws Exception {
-        super.setUp();
-        super.testInvokeOnComponentWithPrependId();
-    }
-
-
-    @Override
-    public void testChildrenListAfterAddViewPublish() {
-
-        // overridding to do nothing.  UIViewRoot is a special cases
-        // and there should always only be on UIViewRoot in a tree
-        
-    }
-
-    @Override
-    public void testFacetMapAfterAddViewPublish() {
-
-        // overridding to do nothing.  UIViewRoot is a special cases
-        // and there should always only be on UIViewRoot in a tree
-
-    }
-
-    
-    // ensure calling clear() on the ViewMap will
-    // invoke registered listeners.
-    public void testViewMapEventsTest() {
-
-        ViewMapListener listener = new ViewMapListener();
-        Application app = facesContext.getApplication();
-        app.subscribeToEvent(PostConstructViewMapEvent.class,
-                             UIViewRoot.class,
-                             listener);
-        app.subscribeToEvent(PreDestroyViewMapEvent.class,
-                             UIViewRoot.class,
-                             listener);
-        UIViewRoot root = new UIViewRoot();
-        assertTrue(!listener.wasProcessEventInvoked());
-        root.getViewMap();
-        assertTrue(listener.wasProcessEventInvoked());
-        listener.reset();
-        root.getViewMap();
-        assertTrue(!listener.wasProcessEventInvoked());
-        root.getViewMap().clear();
-        assertTrue(listener.wasProcessEventInvoked());
-        listener.reset();
-        root.getViewMap().clear();
-        assertTrue(listener.wasProcessEventInvoked());
-        
-        root = new UIViewRoot();
-        listener.reset();
-        assertTrue(!listener.wasProcessEventInvoked());
-        root.getViewMap(false);
-        assertTrue(!listener.wasProcessEventInvoked());
-
-        app.unsubscribeFromEvent(PostConstructViewMapEvent.class,
-                                 UIViewRoot.class,
-                                 listener);
-        app.unsubscribeFromEvent(PreDestroyViewMapEvent.class,
-                                 UIViewRoot.class,
-                                 listener);
-
-        app.subscribeToEvent(PostConstructViewMapEvent.class,
-                             listener);
-        app.subscribeToEvent(PreDestroyViewMapEvent.class,
-                             listener);
-        listener.reset();
-        root = new UIViewRoot();
-        assertTrue(!listener.wasProcessEventInvoked());
-        root.getViewMap();
-        assertTrue(listener.wasProcessEventInvoked());
-        assertTrue(listener.getPassedEvent() instanceof PostConstructViewMapEvent);
-        listener.reset();
-        root.getViewMap();
-        assertTrue(!listener.wasProcessEventInvoked());
-        root.getViewMap().clear();
-        assertTrue(listener.wasProcessEventInvoked());
-        assertTrue(listener.getPassedEvent() instanceof PreDestroyViewMapEvent);
-        listener.reset();
-        root.getViewMap().clear();
-        assertTrue(listener.getPassedEvent() instanceof PreDestroyViewMapEvent);
-        assertTrue(listener.wasProcessEventInvoked());
-
-    }
-
-    public void testViewMapSaveRestore() throws Exception {
-        UIViewRoot root = new UIViewRoot();
-        Map<String, Object> viewMap = root.getViewMap();
-        viewMap.put("one", "one");
-        Object saved = root.saveState(facesContext);
-        root = new UIViewRoot();
-        root.restoreState(facesContext, saved);
-        viewMap = root.getViewMap();
-        assertEquals("one", viewMap.get("one"));
-    }
-    
-
-    // Check that the properties on the specified components are equal
-    protected void checkProperties(UIComponent comp1, UIComponent comp2) {
-
-        super.checkProperties(comp1, comp2);
-        UIViewRoot vr1 = (UIViewRoot) comp1;
-        UIViewRoot vr2 = (UIViewRoot) comp2;
-        assertEquals(vr2.getRenderKitId(), vr2.getRenderKitId());
-        assertEquals(vr1.getViewId(), vr2.getViewId());
-        assertEquals(vr1.getLocale(), vr2.getLocale());
-
-    }
-
-
-    // Create a pristine component of the type to be used in state holder tests
-    protected UIComponent createComponent() {
-        UIComponent component = new UIViewRoot();
-        component.setRendererType(null);
-        return (component);
-    }
-
-
-    // Populate a pristine component to be used in state holder tests
-    protected void populateComponent(UIComponent component) {
-        super.populateComponent(component);
-        UIViewRoot vr = (UIViewRoot) component;
-        vr.setRenderKitId("foo");
-        vr.setViewId("bar");
-        vr.setLocale(new Locale("fr", "FR"));
-    }
-
-    public static class PhaseListenerBean extends Object
-          implements PhaseListener {
-        private boolean beforePhaseCalled = false;
-        private boolean afterPhaseCalled = false;
-        private PhaseId phaseId = null;
-        private boolean exceptionBefore;
-        private boolean exceptionAfter;
-
-        public PhaseListenerBean(PhaseId phaseId) {
-            this.phaseId = phaseId;
-        }
-
-        public PhaseListenerBean(PhaseId phaseId,
-                                 boolean exceptionBefore,
-                                 boolean exceptionAfter) {
-            this(phaseId);
-            this.exceptionBefore = exceptionBefore;
-            this.exceptionAfter = exceptionAfter;
-        }
-
-        public boolean isBeforePhaseCalled() {
-            return beforePhaseCalled;
-        }
-
-        public boolean isAfterPhaseCalled() {
-            return afterPhaseCalled;
-        }
-
-        public void beforePhase(PhaseEvent e) {
-            beforePhaseCalled = true;
-            if (exceptionBefore) {
-                throw new RuntimeException();
-            }
-        }
-
-        public void afterPhase(PhaseEvent e) {
-            afterPhaseCalled = true;
-            if (exceptionAfter) {
-                throw new RuntimeException();
-            }
-        }
-
-        public PhaseId getPhaseId() {
-            return phaseId;
-        }
-
-    }
-
-    public static class PhaseSkipTestComponent extends UIInput {
-
-	private boolean decodeCalled = false;
-	
-	public void decode(FacesContext context) {
-	    decodeCalled = true;
-	}
-	public boolean isDecodeCalled() { return decodeCalled; }
-
-	private boolean encodeBeginCalled = false;
-
-	public void encodeBegin(FacesContext context) throws IOException {
-	    encodeBeginCalled = true;
-	}
-
-	public boolean isEncodeBeginCalled() { return encodeBeginCalled; }
-
-
-	private boolean processValidatorsCalled = false;
-	
-	public void processValidators(FacesContext context) {
-	    processValidatorsCalled = true;
-	}
-
-	public boolean isProcessValidatorsCalled() { 
-	    return processValidatorsCalled; 
-	}
-
-	private boolean processUpdatesCalled = false;
-
-	public void processUpdates(FacesContext context) {	
-	    processUpdatesCalled = true;
-	}
-
-	public boolean isProcessUpdatesCalled() { 
-	    return processUpdatesCalled; 
-	}
-        
-
-    }
-
-    private static final class ViewMapListener implements SystemEventListener {
-
-        private boolean processEventInvoked;
-        private SystemEvent event;
-
-        public void processEvent(SystemEvent event)
-        throws AbortProcessingException {
-            this.event = event;
-            processEventInvoked = true;
-        }
-
-        public boolean isListenerForSource(Object source) {
-            return (source instanceof UIViewRoot);
-        }
-
-        public boolean wasProcessEventInvoked() {
-            return processEventInvoked;
-        }
-
-        public SystemEvent getPassedEvent() {
-            return event;
-        }
-
-        public void reset() {
-            processEventInvoked = false;
-            event = null;
-        }
-
-    }
-
-    public static class Container extends UIPanel {
-
-        @Override
-        public void encodeAll(FacesContext context) throws IOException {
-
-        }
-    }
-
-}
diff --git a/jsf-api/src/test/java/javax/faces/component/ValueHolderTestCaseBase.java b/jsf-api/src/test/java/javax/faces/component/ValueHolderTestCaseBase.java
deleted file mode 100644
index 334c067..0000000
--- a/jsf-api/src/test/java/javax/faces/component/ValueHolderTestCaseBase.java
+++ /dev/null
@@ -1,359 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package javax.faces.component;
-
-
-import javax.faces.component.html.HtmlInputText;
-import javax.faces.convert.Converter;
-import javax.faces.convert.LongConverter;
-import javax.faces.convert.NumberConverter;
-import javax.faces.convert.ShortConverter;
-
-import java.beans.PropertyDescriptor;
-import java.lang.reflect.Field;
-import java.util.Map;
-import java.util.WeakHashMap;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-
-/**
- * <p>Unit tests for {@link ValueHolder}.  Any test case for a
- * component class that implements {@link ValueHolder} should
- * extend this class.</p>
- */
-
-public abstract class ValueHolderTestCaseBase extends UIComponentBaseTestCase {
-
-
-    // ------------------------------------------------------------ Constructors
-
-
-    /**
-     * Construct a new instance of this test case.
-     *
-     * @param name Name of the test case
-     */
-    public ValueHolderTestCaseBase(String name) {
-        super(name);
-    }
-
-
-    // ---------------------------------------------------- Overall Test Methods
-
-
-    // Set up instance variables required by this test case.
-    public void setUp() {
-        super.setUp();
-        component = new UIOutput();
-        expectedId = null;
-        expectedRendererType = "Text";
-    }
-
-
-    // Return the tests included in this test case.
-    public static Test suite() {
-        return (new TestSuite(ValueHolderTestCaseBase.class));
-    }
-
-
-    // Tear down instance variables required by ths test case
-    public void tearDown() {
-        super.tearDown();
-    }
-
-
-    // ------------------------------------------------- Individual Test Methods
-
-    public void testAttributesTransparencyNonDeterministic() throws Exception {
-	final int numThreads = 30;
-	final Boolean outcomes[] = new Boolean[numThreads];
-	Runnable runnables[] = new Runnable[numThreads];
-        int i = 0;
-        
-        for (i = 0; i < outcomes.length; i++) {
-            outcomes[i] = null;
-        }
-
-	for (i = 0; i < runnables.length; i++) {
-	    runnables[i] = new Runnable() {
-                public void run() {
-                    int threadNum = 0;
-                    try {
-                        threadNum = Integer.valueOf(Thread.currentThread().
-                                getName()).intValue();
-                    } catch (NumberFormatException ex) {
-                        fail("Expected thread name to be an integer");
-                    }
-                    // Even threadNums use HtmlInputText, odd use this component
-                    boolean isEven = (threadNum % 2) == 0;
-                    ValueHolder vh = null;
-                    UIComponent newComp = null;
-                    if (isEven) {
-                        newComp = new HtmlInputText();
-                        vh = (ValueHolder) newComp;
-                    }
-                    else {
-                        try {
-                            newComp = ValueHolderTestCaseBase.this.component.getClass().newInstance();
-                            vh = (ValueHolder) newComp;
-                                    
-                        } catch (IllegalAccessException ex) {
-                            fail("Can't instantiate class of " + ValueHolderTestCaseBase.this.component.getClass().getName());
-                        } catch (InstantiationException ex) {
-                            fail("Can't instantiate class of " + ValueHolderTestCaseBase.this.component.getClass().getName());
-                        }
-                    }
-                    try {
-                        boolean result = doTestAttributesTransparency(vh, newComp);
-                        outcomes[threadNum] = new Boolean(result);
-                    }
-                    catch (Throwable e) {
-                        e.printStackTrace();
-                        outcomes[threadNum] = new Boolean(false);
-                    }
-                }
-            };
-	}
-        clearDescriptors();
-        Thread thread = null;
-        for (i = 0; i < runnables.length; i++) {
-            thread = new Thread(runnables[i], "" + i);
-            thread.start();
-        }
-        
-        // Keep polling the outcomes array until there are no nulls.
-        boolean foundNull = false;
-        while (!foundNull) {
-            for (i = 0; i < outcomes.length; i++) {
-                if (null != outcomes[i]) {
-                    foundNull = true;
-                }
-            }
-            Thread.currentThread().sleep(500);
-        }
-		    
-        for (i = 0; i < outcomes.length; i++) {
-            if (!outcomes[i].booleanValue()) {
-                fail("Thread " + i + " failed");
-            }
-        }
-
-    }
-    
-    private void clearDescriptors() throws Exception {
-        Field descriptorsField = UIComponentBase.class.getDeclaredField("descriptors");
-        descriptorsField.setAccessible(true);
-        WeakHashMap<Class<?>, Map<String, PropertyDescriptor>> descriptors =
-              (WeakHashMap<Class<?>, Map<String, PropertyDescriptor>>) descriptorsField
-                    .get(null);
-        descriptors.clear();        
-    }
-
-    public void testAttributesTransparency() {
-        super.testAttributesTransparency();
-        ValueHolder vh = (ValueHolder) component;
-        doTestAttributesTransparency(vh, component);
-    }
-
-    // Test attribute-property transparency
-    public boolean doTestAttributesTransparency(ValueHolder vh, UIComponent newComp) {
-
-
-        assertEquals(vh.getValue(),
-                     (String) newComp.getAttributes().get("value"));
-        vh.setValue("foo");
-        assertEquals("foo", (String) newComp.getAttributes().get("value"));
-        vh.setValue(null);
-        assertNull((String) newComp.getAttributes().get("value"));
-        newComp.getAttributes().put("value", "bar");
-        assertEquals("bar", vh.getValue());
-        newComp.getAttributes().put("value", null);
-        assertNull(vh.getValue());
-
-        assertEquals(vh.getConverter(),
-                     (String) newComp.getAttributes().get("converter"));
-        vh.setConverter(new LongConverter());
-        assertNotNull((Converter) newComp.getAttributes().get("converter"));
-        assertTrue(newComp.getAttributes().get("converter")
-                   instanceof LongConverter);
-        vh.setConverter(null);
-        assertNull(newComp.getAttributes().get("converter"));
-        newComp.getAttributes().put("converter", new ShortConverter());
-        assertNotNull(vh.getConverter());
-        assertTrue(vh.getConverter() instanceof ShortConverter);
-        newComp.getAttributes().put("converter", null);
-        assertNull(vh.getConverter());
-
-        return true;
-    }
-
-
-    // Suppress lifecycle tests since we do not have a renderer
-    public void testLifecycleManagement() {
-    }
-
-
-    // Test a pristine ValueHolderBase instance
-    public void testPristine() {
-
-        super.testPristine();
-        ValueHolder vh = (ValueHolder) component;
-
-        // Validate properties
-        assertNull("no value", vh.getValue());
-        assertNull("no converter", vh.getConverter());
-
-    }
-
-
-    // Test setting properties to invalid values
-    public void testPropertiesInvalid() throws Exception {
-
-        super.testPropertiesInvalid();
-        ValueHolder vh = (ValueHolder) component;
-
-    }
-
-
-    // Test setting properties to valid values
-    public void testPropertiesValid() throws Exception {
-
-        super.testPropertiesValid();
-        ValueHolder vh = (ValueHolder) component;
-
-        // value
-        vh.setValue("foo.bar");
-        assertEquals("expected value",
-                     "foo.bar", vh.getValue());
-        vh.setValue(null);
-        assertNull("erased value", vh.getValue());
-
-        // converter
-        vh.setConverter(new LongConverter());
-        assertTrue("expected converter",
-                   vh.getConverter() instanceof LongConverter);
-        vh.setConverter(null);
-        assertNull("erased converter", vh.getConverter());
-    }
-
-
-    // --------------------------------------------------------- Support Methods
-
-
-    // Check that the properties of the NumberConverters are equal
-    protected void checkNumberConverter(NumberConverter nc1,
-                                        NumberConverter nc2) {
-
-        assertEquals(nc1.getCurrencyCode(), nc2.getCurrencyCode());
-        assertEquals(nc1.getCurrencySymbol(), nc2.getCurrencySymbol());
-        assertEquals(nc1.isGroupingUsed(), nc2.isGroupingUsed());
-        assertEquals(nc1.isIntegerOnly(), nc2.isIntegerOnly());
-        assertEquals(nc1.getMaxFractionDigits(), nc2.getMaxFractionDigits());
-        assertEquals(nc1.getMaxIntegerDigits(), nc2.getMaxIntegerDigits());
-        assertEquals(nc1.getMinFractionDigits(), nc2.getMinFractionDigits());
-        assertEquals(nc1.getMinIntegerDigits(), nc2.getMinIntegerDigits());
-        assertEquals(nc1.getLocale(), nc2.getLocale());
-        assertEquals(nc1.getPattern(), nc2.getPattern());
-        assertEquals(nc1.getType(), nc2.getType());
-
-    }
-
-
-    // Check that the properties on the specified components are equal
-    protected void checkProperties(UIComponent comp1, UIComponent comp2) {
-
-        super.checkProperties(comp1, comp2);
-        ValueHolder vh1 = (ValueHolder) comp1;
-        ValueHolder vh2 = (ValueHolder) comp2;
-        assertEquals(vh1.getValue(), vh2.getValue());
-        checkNumberConverter((NumberConverter) vh1.getConverter(),
-                             (NumberConverter) vh2.getConverter());
-    }
-
-
-    // Populate a pristine component to be used in state holder tests
-    protected void populateComponent(UIComponent component) {
-
-        super.populateComponent(component);
-        ValueHolder vh = (ValueHolder) component;
-        vh.setValue("component value");
-        vh.setConverter(createNumberConverter());
-
-    }
-
-
-    // Create and configure a NumberConverter
-    protected NumberConverter createNumberConverter() {
-
-        NumberConverter nc = new NumberConverter();
-        nc.setCurrencyCode("USD");
-        nc.setCurrencySymbol("$");
-        nc.setGroupingUsed(false);
-        nc.setIntegerOnly(true);
-        nc.setMaxFractionDigits(2);
-        nc.setMaxIntegerDigits(10);
-        nc.setMinFractionDigits(2);
-        nc.setMinIntegerDigits(5);
-        nc.setType("currency");
-        return (nc);
-
-    }
-
-
-    protected void checkNumberConverters(NumberConverter nc1,
-                               NumberConverter nc2) {
-
-        assertNotNull(nc1);
-        assertNotNull(nc2);
-        assertEquals(nc1.getCurrencyCode(), nc2.getCurrencyCode());
-        assertEquals(nc1.getCurrencySymbol(), nc2.getCurrencySymbol());
-        assertEquals(nc1.isGroupingUsed(), nc2.isGroupingUsed());
-        assertEquals(nc1.isIntegerOnly(), nc2.isIntegerOnly());
-        assertEquals(nc1.getMaxFractionDigits(), nc2.getMaxFractionDigits());
-        assertEquals(nc1.getMaxIntegerDigits(), nc2.getMaxIntegerDigits());
-        assertEquals(nc1.getMinFractionDigits(), nc2.getMinFractionDigits());
-        assertEquals(nc1.getMinIntegerDigits(), nc2.getMinIntegerDigits());
-        assertEquals(nc1.getLocale(), nc2.getLocale());
-        assertEquals(nc1.getPattern(), nc2.getPattern());
-        assertEquals(nc1.getType(), nc2.getType());
-
-    }
-
-
-}
diff --git a/jsf-api/src/test/java/javax/faces/event/PhaseIdTest.java b/jsf-api/src/test/java/javax/faces/event/PhaseIdTest.java
deleted file mode 100644
index 1f06036..0000000
--- a/jsf-api/src/test/java/javax/faces/event/PhaseIdTest.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package javax.faces.event;
-
-import junit.framework.TestCase;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-import java.util.Iterator;
-
-public class PhaseIdTest extends TestCase
-{
-//
-// Protected Constants
-//
-
-//
-// Class Variables
-//
-
-//
-// Instance Variables
-//
-
-// Attribute Instance Variables
-
-// Relationship Instance Variables
-
-//
-// Constructors and Initializers    
-//
-
-public PhaseIdTest()
-{
-    super();
-}
-
-//
-// Class methods
-//
-
-//
-// General Methods
-//
-
-    public void testToString() {
-	Iterator valueIter = PhaseId.VALUES.iterator();
-	String cur = null;
-	while (valueIter.hasNext()) {
-	    cur = (String) valueIter.next().toString();
-	    System.out.println(cur);
-	    assertTrue(cur.length() > 3);
-	}
-	
-    }
-
-} // end of class PhaseIdTest
diff --git a/jsf-api/src/test/java/javax/faces/mock/MockFacesContextFactoryExtender.java b/jsf-api/src/test/java/javax/faces/mock/MockFacesContextFactoryExtender.java
deleted file mode 100644
index bf9e4bf..0000000
--- a/jsf-api/src/test/java/javax/faces/mock/MockFacesContextFactoryExtender.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package javax.faces.mock;
-
-import com.sun.faces.mock.MockFacesContextFactory;
-import javax.faces.FactoryFinder;
-import javax.faces.context.FacesContextFactory;
-
-public class MockFacesContextFactoryExtender extends MockFacesContextFactory {
-    public MockFacesContextFactoryExtender() {}
-    public MockFacesContextFactoryExtender(FacesContextFactory oldImpl) {
-	System.setProperty(FactoryFinder.FACES_CONTEXT_FACTORY, 
-			   this.getClass().getName());
-	System.setProperty("oldImpl", oldImpl.getClass().getName());
-    }
-}
-
diff --git a/jsf-api/src/test/java/javax/faces/mock/MockFacesContextFactoryExtender2.java b/jsf-api/src/test/java/javax/faces/mock/MockFacesContextFactoryExtender2.java
deleted file mode 100644
index 235163e..0000000
--- a/jsf-api/src/test/java/javax/faces/mock/MockFacesContextFactoryExtender2.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package javax.faces.mock;
-
-import com.sun.faces.mock.MockFacesContextFactory;
-import javax.faces.FactoryFinder;
-import javax.faces.context.FacesContextFactory;
-
-public class MockFacesContextFactoryExtender2 extends MockFacesContextFactory {
-    public MockFacesContextFactoryExtender2() {}
-    public MockFacesContextFactoryExtender2(FacesContextFactory oldImpl) {
-	System.setProperty(FactoryFinder.FACES_CONTEXT_FACTORY, 
-			   this.getClass().getName());
-	System.setProperty("oldImpl", oldImpl.getClass().getName());
-    }
-}
-
diff --git a/jsf-api/src/test/java/javax/faces/model/ArrayDataModelTestCase.java b/jsf-api/src/test/java/javax/faces/model/ArrayDataModelTestCase.java
deleted file mode 100644
index e83b196..0000000
--- a/jsf-api/src/test/java/javax/faces/model/ArrayDataModelTestCase.java
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package javax.faces.model;
-
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-
-/**
- * <p>Unit tests for {@link ArrayDataModel}.</p>
- */
-
-public class ArrayDataModelTestCase extends DataModelTestCaseBase {
-
-
-    // ------------------------------------------------------------ Constructors
-
-
-    /**
-     * Construct a new instance of this test case.
-     *
-     * @param name Name of the test case
-     */
-    public ArrayDataModelTestCase(String name) {
-
-        super(name);
-
-    }
-
-
-    // ------------------------------------------------------ Instance Variables
-
-
-    // ---------------------------------------------------- Overall Test Methods
-
-
-    // Set up instance variables required by this test case.
-    public void setUp() throws Exception {
-
-        beans = new TestBean[5];
-        for (int i = 0; i < beans.length; i++) {
-            beans[i] = new TestBean();
-        }
-        configure();
-        model = new ArrayDataModel<TestBean>(beans);
-        super.setUp();
-
-    }
-
-
-    // Return the tests included in this test case.
-    public static Test suite() {
-
-        return (new TestSuite(ArrayDataModelTestCase.class));
-
-    }
-
-
-    // ------------------------------------------------- Individual Test Methods
-
-
-    // ------------------------------------------------------- Protected Methods
-
-
-}
diff --git a/jsf-api/src/test/java/javax/faces/model/DataModelTestCaseBase.java b/jsf-api/src/test/java/javax/faces/model/DataModelTestCaseBase.java
deleted file mode 100644
index 399394f..0000000
--- a/jsf-api/src/test/java/javax/faces/model/DataModelTestCaseBase.java
+++ /dev/null
@@ -1,435 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package javax.faces.model;
-
-
-import java.util.Iterator;
-import java.util.Map;
-import java.util.NoSuchElementException;
-import java.lang.reflect.Method;
-
-import junit.framework.Test;
-import junit.framework.TestCase;
-import junit.framework.TestSuite;
-
-
-/**
- * <p>Abstract base class for {@link DataModel} tests.</p>
- */
-
-public abstract class DataModelTestCaseBase extends TestCase {
-
-
-    // ------------------------------------------------------------ Constructors
-
-
-    /**
-     * Construct a new instance of this test case.
-     *
-     * @param name Name of the test case
-     */
-    public DataModelTestCaseBase(String name) {
-
-        super(name);
-
-    }
-
-
-    // ------------------------------------------------------ Instance Variables
-
-
-    // The array of beans we will be wrapping (must be initialized before setUp)
-    protected TestBean beans[] = new TestBean[0];
-
-
-    // The DataModel we are testing
-    protected DataModel model = null;
-
-
-    // ---------------------------------------------------- Overall Test Methods
-
-
-    // Configure the properties of the beans we will be wrapping
-    protected void configure() {
-
-        for (int i = 0; i < beans.length; i++) {
-            TestBean bean = beans[i];
-            bean.setBooleanProperty((i % 2) == 0);
-            bean.setBooleanSecond(!bean.getBooleanProperty());
-            bean.setByteProperty((byte) i);
-            bean.setDoubleProperty(((double) i) * 100.0);
-            bean.setFloatProperty(((float) i) * ((float) 10.0));
-            bean.setIntProperty(1000 * i);
-            bean.setLongProperty((long) 10000 * (long) i);
-            bean.setStringProperty("This is string " + i);
-        }
-
-    }
-
-
-    // Set up instance variables required by this test case.
-    public void setUp() throws Exception {
-
-        // Subclasses must create "beans", call "configure()", create "model"
-        super.setUp();
-
-    }
-
-
-    // Return the tests included in this test case.
-    public static Test suite() {
-
-        return (new TestSuite(DataModelTestCaseBase.class));
-
-    }
-
-
-    // Tear down instance variables required by ths test case
-    public void tearDown() throws Exception {
-
-        super.tearDown();
-        beans = null;
-        model = null;
-
-    }
-
-
-    // ------------------------------------------------- Individual Test Methods
-
-
-    // Test invalid arguments to listener methods
-    public void testInvalidListeners() throws Exception {
-
-        try {
-            model.addDataModelListener(null);
-            fail("Should have thrown NullPointerException");
-        } catch (NullPointerException e) {
-            // Expected result
-        }
-
-        try {
-            model.removeDataModelListener(null);
-            fail("Should have thrown NullPointerException");
-        } catch (NullPointerException e) {
-            // Expected result
-        }
-
-
-    }
-
-
-    // Test positioning to all rows in ascending order
-    public void testPositionAscending() throws Exception {
-
-        StringBuffer sb = new StringBuffer();
-        model.setRowIndex(-1);
-        model.addDataModelListener(new TestListener());
-        TestListener.trace(null);
-
-        int n = model.getRowCount();
-        for (int i = 0; i < n; i++) {
-            checkRow(i);
-            sb.append("/").append(i);
-        }
-        assertEquals(sb.toString(), TestListener.trace());
-
-    }
-
-
-    // Test positioning to all rows in descending order
-    public void testPositionDescending() throws Exception {
-
-        StringBuffer sb = new StringBuffer();
-        model.setRowIndex(-1);
-        model.addDataModelListener(new TestListener());
-        TestListener.trace(null);
-
-        int n = model.getRowCount();
-        for (int i = (n - 1); i >= 0; i--) {
-            checkRow(i);
-            sb.append("/").append(i);
-        }
-        assertEquals(sb.toString(), TestListener.trace());
-
-    }
-
-
-    // Test a pristine DataModel instance
-    public void testPristine() throws Exception {
-
-        // Unopened instance
-        assertNotNull("beans exists", beans);
-        assertNotNull("model exists", model);
-
-        // Correct row count
-        if (model instanceof ResultSetDataModel) {
-            assertEquals("correct row count", -1, model.getRowCount());
-        } else {
-            assertEquals("correct row count", beans.length,
-                         model.getRowCount());
-        }
-
-        // Correct row index
-        assertEquals("correct row index", 0, model.getRowIndex());
-
-    }
-
-
-    // Test removing listener
-    public void testRemoveListener() throws Exception {
-
-        TestListener listener = new TestListener();
-        TestListener.trace(null);
-        model.addDataModelListener(listener);
-        model.setRowIndex(-1);
-        model.setRowIndex(0);
-        model.setRowIndex(0); // No movement so no event
-        model.setRowIndex(-1);
-        model.removeDataModelListener(listener);
-        model.setRowIndex(0);
-        assertEquals("/-1/0/-1", TestListener.trace());
-
-    }
-
-
-    // Test resetting the wrapped data (should trigger an event
-    public void testReset() throws Exception {
-
-        TestListener listener = new TestListener();
-        TestListener.trace(null);
-        model.addDataModelListener(listener);
-
-        assertEquals(0, model.getRowIndex());
-        model.setWrappedData(model.getWrappedData());
-        assertEquals("/0", TestListener.trace());
-
-    }
-
-
-    // Test row available manipulations
-    public void testRowAvailable() throws Exception {
-
-        // Position to the "no current row" position
-        model.setRowIndex(-1);
-        assertTrue(!model.isRowAvailable());
-
-        // Position to an arbitrarily high row number
-        model.setRowIndex(beans.length);
-        assertTrue(!model.isRowAvailable());
-
-        // Position to a known good row number
-        model.setRowIndex(0);
-        assertTrue(model.isRowAvailable());
-
-    }
-
-
-    // Test the ability to update through the Map returned by getRowData()
-    public void testRowData() throws Exception {
-
-        // Retrieve the row data for row zero
-        model.setRowIndex(0);
-        Object data = model.getRowData();
-        assertNotNull(data);
-
-        // Modify several property values
-        TestBean bean = beans[0];
-        bean.setBooleanProperty(!bean.getBooleanProperty());
-        if (data instanceof Map) {
-            ((Map) data).put("booleanProperty",
-                             bean.getBooleanProperty() ?
-                             Boolean.TRUE : Boolean.FALSE);
-        } else {
-            Method m = data.getClass().getMethod("setBooleanProperty", Boolean.TYPE);
-            m.invoke(data, bean.getBooleanProperty() ? Boolean.TRUE : Boolean.FALSE);
-        }
-        bean.setIntProperty(bean.getIntProperty() + 5);
-        if (data instanceof Map) {
-            ((Map) data).put("intProperty",
-                             bean.getIntProperty());
-        } else {
-            Method m = data.getClass().getMethod("setIntProperty", Integer.TYPE);
-            m.invoke(data, bean.getIntProperty());
-        }
-        bean.setStringProperty(bean.getStringProperty() + "XYZ");
-        if (data instanceof Map) {
-            ((Map) data).put("stringProperty",
-                             bean.getStringProperty() + "XYZ");
-        } else {
-            Method m = data.getClass().getMethod("setStringProperty", String.class);
-            m.invoke(data, bean.getStringProperty());
-        }
-
-        // Ensure that all the modifications flowed through to beans[0]
-        assertEquals(bean.getBooleanProperty(),
-                     beans[0].getBooleanProperty());
-        assertEquals(bean.isBooleanSecond(),
-                     beans[0].isBooleanSecond());
-        assertEquals(bean.getByteProperty(),
-                     beans[0].getByteProperty());
-        assertEquals(bean.getDoubleProperty(),
-                     beans[0].getDoubleProperty(), 0.005);
-        assertEquals(bean.getFloatProperty(),
-                     beans[0].getFloatProperty(), (float) 0.005);
-        assertEquals(bean.getIntProperty(),
-                     beans[0].getIntProperty());
-        assertEquals(bean.getLongProperty(),
-                     beans[0].getLongProperty());
-        assertEquals(bean.getStringProperty(),
-                     beans[0].getStringProperty());
-
-    }
-
-
-    // Test row index manipulations
-    public void testRowIndex() throws Exception {
-
-        assertEquals("correct row index", 0, model.getRowIndex());
-
-        // Positive setRowIndex() tests
-        model.setRowIndex(0);
-        model.setRowIndex(-1);
-
-        // Negative setRowIndex() tests
-        try {
-            model.setRowIndex(-2);
-            fail("Should have thrown IllegalArgumentException");
-        } catch (IllegalArgumentException e) {
-            // Expected result
-        }
-
-    }
-
-    public void testIterator() {
-
-        Iterator iterator = model.iterator();
-        if (!(model instanceof ScalarDataModel)) {
-            for (int i = 0; i < 5; i++) {
-                System.out.println("Index: " + i);
-                assertTrue(iterator.hasNext());
-                assertNotNull(iterator.next());
-            }
-        } else {
-            assertTrue(iterator.hasNext());
-            assertNotNull(iterator.next());
-        }
-
-        assertTrue(!iterator.hasNext());
-        try {
-            iterator.next();
-            assertTrue(false);
-        } catch (NoSuchElementException nsee) {
-            // expected
-        }
-
-    }
-
-
-    // Test resetting the wrapped data to null
-    public void testWrapped() throws Exception {
-
-        model.setWrappedData(null);
-        assertTrue(!model.isRowAvailable());
-        assertEquals(-1, model.getRowCount());
-        assertNull(model.getRowData());
-        assertEquals(-1, model.getRowIndex());
-        assertNull(model.getWrappedData());
-
-
-    }
-
-
-    // ------------------------------------------------------- Protected Methods
-
-
-    protected TestBean data() throws Exception {
-
-        Object data = model.getRowData();
-        assertNotNull(data);
-        assertTrue(data instanceof TestBean);
-        return ((TestBean) data);
-
-    }
-
-
-    protected void checkRow(int i) throws Exception {
-
-        model.setRowIndex(i);
-        String prompt = "Row " + i + " property ";
-        TestBean bean = data();
-        assertNotNull("Row " + i + " data", bean);
-        assertEquals(prompt + "booleanProperty",
-                     beans[i].getBooleanProperty(),
-                     bean.getBooleanProperty());
-        assertEquals(prompt + "booleanSecond",
-                     beans[i].isBooleanSecond(),
-                     bean.isBooleanSecond());
-        assertEquals(prompt + "byteProperty",
-                     beans[i].getByteProperty(),
-                     bean.getByteProperty());
-        assertEquals(prompt + "doubleProperty",
-                     "" + beans[i].getDoubleProperty(),
-                     "" + bean.getDoubleProperty());
-        assertEquals(prompt + "floatProperty",
-                     "" + beans[i].getFloatProperty(),
-                     "" + bean.getFloatProperty());
-        assertEquals(prompt + "intProperty",
-                     beans[i].getIntProperty(),
-                     bean.getIntProperty());
-        assertEquals(prompt + "longProperty",
-                     beans[i].getLongProperty(),
-                     bean.getLongProperty());
-        assertEquals(prompt + "nullProperty",
-                     beans[i].getNullProperty(),
-                     bean.getNullProperty());
-        assertEquals(prompt + "readOnlyProperty",
-                     beans[i].getReadOnlyProperty(),
-                     bean.getReadOnlyProperty());
-        assertEquals(prompt + "shortProperty",
-                     beans[i].getShortProperty(),
-                     bean.getShortProperty());
-        assertEquals(prompt + "stringProperty",
-                     beans[i].getStringProperty(),
-                     bean.getStringProperty());
-        assertEquals(prompt + "writeOnlyProperty",
-                     beans[i].getWriteOnlyPropertyValue(),
-                     bean.getWriteOnlyPropertyValue());
-
-    }
-
-
-}
diff --git a/jsf-api/src/test/java/javax/faces/model/ListDataModelTestCase.java b/jsf-api/src/test/java/javax/faces/model/ListDataModelTestCase.java
deleted file mode 100644
index 9269891..0000000
--- a/jsf-api/src/test/java/javax/faces/model/ListDataModelTestCase.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package javax.faces.model;
-
-
-import java.util.ArrayList;
-import java.util.List;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-
-/**
- * <p>Unit tests for {@link ListDataModel}.</p>
- */
-
-public class ListDataModelTestCase extends DataModelTestCaseBase {
-
-
-    // ------------------------------------------------------------ Constructors
-
-
-    /**
-     * Construct a new instance of this test case.
-     *
-     * @param name Name of the test case
-     */
-    public ListDataModelTestCase(String name) {
-
-        super(name);
-
-    }
-
-
-    // ------------------------------------------------------ Instance Variables
-
-
-    // ---------------------------------------------------- Overall Test Methods
-
-
-    // Set up instance variables required by this test case.
-    public void setUp() throws Exception {
-
-        List<TestBean> list = new ArrayList<TestBean>();
-        for (int i = 0; i < 5; i++) {
-            list.add(new TestBean());
-        }
-        beans = list.toArray(new TestBean[5]);
-        configure();
-        model = new ListDataModel<TestBean>(list);
-        super.setUp();
-
-    }
-
-
-    // Return the tests included in this test case.
-    public static Test suite() {
-
-        return (new TestSuite(ListDataModelTestCase.class));
-
-    }
-
-
-    // ------------------------------------------------- Individual Test Methods
-
-
-    // ------------------------------------------------------- Protected Methods
-
-
-}
diff --git a/jsf-api/src/test/java/javax/faces/model/ResultDataModelTestCase.java b/jsf-api/src/test/java/javax/faces/model/ResultDataModelTestCase.java
deleted file mode 100644
index bdbb243..0000000
--- a/jsf-api/src/test/java/javax/faces/model/ResultDataModelTestCase.java
+++ /dev/null
@@ -1,142 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package javax.faces.model;
-
-
-import java.util.Map;
-import javax.faces.context.FacesContext;
-import com.sun.faces.mock.MockResult;
-import junit.framework.TestCase;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-
-/**
- * <p>Unit tests for {@link ResultDataModel}.</p>
- */
-
-public class ResultDataModelTestCase extends DataModelTestCaseBase {
-
-
-    // ------------------------------------------------------------ Constructors
-
-
-    /**
-     * Construct a new instance of this test case.
-     *
-     * @param name Name of the test case
-     */
-    public ResultDataModelTestCase(String name) {
-
-        super(name);
-
-    }
-
-
-    // ------------------------------------------------------ Instance Variables
-
-
-    // The Result passed to our ResultDataModel
-    protected MockResult result = null;
-
-
-    // ---------------------------------------------------- Overall Test Methods
-
-
-    // Set up instance variables required by this test case.
-    public void setUp() throws Exception {
-
-        beans = new TestBean[5];
-        for (int i = 0; i < beans.length; i++) {
-            beans[i] = new TestBean();
-        }
-        configure();
-        result = new MockResult(beans);
-        model = new ResultDataModel(result);
-        super.setUp();
-
-    }
-
-
-    // Return the tests included in this test case.
-    public static Test suite() {
-
-        return (new TestSuite(ResultDataModelTestCase.class));
-
-    }
-
-
-    // ------------------------------------------------- Individual Test Methods
-
-
-    // ------------------------------------------------------- Protected Methods
-
-
-    protected TestBean data() throws Exception {
-
-        Object data = model.getRowData();
-        assertTrue(data instanceof Map);
-        TestBean bean = new TestBean();
-        Map map = (Map) data;
-
-        bean.setBooleanProperty
-            (((Boolean) map.get("booleanProperty")).booleanValue());
-        bean.setBooleanSecond
-            (((Boolean) map.get("booleanSecond")).booleanValue());
-        bean.setByteProperty
-            (((Byte) map.get("byteProperty")).byteValue());
-        bean.setDoubleProperty
-            (((Double) map.get("doubleProperty")).doubleValue());
-        bean.setFloatProperty
-            (((Float) map.get("floatProperty")).floatValue());
-        bean.setIntProperty
-            (((Integer) map.get("intProperty")).intValue());
-        bean.setLongProperty
-            (((Long) map.get("longProperty")).longValue());
-        bean.setNullProperty((String) map.get("nullProperty"));
-        bean.setShortProperty
-            (((Short) map.get("shortProperty")).shortValue());
-        bean.setStringProperty((String) map.get("stringProperty"));
-        bean.setWriteOnlyProperty
-            ((String) map.get("writeOnlyPropertyValue"));
-
-        return (bean);
-
-    }
-
-
-}
diff --git a/jsf-api/src/test/java/javax/faces/model/ResultSetDataModelTestCase.java b/jsf-api/src/test/java/javax/faces/model/ResultSetDataModelTestCase.java
deleted file mode 100644
index 76bcfd4..0000000
--- a/jsf-api/src/test/java/javax/faces/model/ResultSetDataModelTestCase.java
+++ /dev/null
@@ -1,669 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package javax.faces.model;
-
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import javax.faces.context.FacesContext;
-import com.sun.faces.mock.MockResultSet;
-import com.sun.faces.mock.MockResultSetMetaData;
-import javax.faces.model.DataModel;
-import javax.faces.model.DataModelEvent;
-import javax.faces.model.DataModelListener;
-import junit.framework.TestCase;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-
-/**
- * <p>Unit tests for {@link ArrayDataModel}.</p>
- */
-
-public class ResultSetDataModelTestCase extends DataModelTestCaseBase {
-
-
-    // ------------------------------------------------------------ Constructors
-
-
-    /**
-     * Construct a new instance of this test case.
-     *
-     * @param name Name of the test case
-     */
-    public ResultSetDataModelTestCase(String name) {
-
-        super(name);
-
-    }
-
-
-    // ------------------------------------------------------ Instance Variables
-
-
-    // The ResultSet passed to our ResultSetDataModel
-    protected MockResultSet result = null;
-
-
-    // ---------------------------------------------------- Overall Test Methods
-
-
-    // Set up instance variables required by this test case.
-    public void setUp() throws Exception {
-
-        beans = new TestBean[5];
-        for (int i = 0; i < beans.length; i++) {
-            beans[i] = new TestBean();
-        }
-        configure();
-        result = new MockResultSet(beans);
-        model = new ResultSetDataModel(result);
-        super.setUp();
-
-    }
-
-
-    // Return the tests included in this test case.
-    public static Test suite() {
-
-        return (new TestSuite(ResultSetDataModelTestCase.class));
-
-    }
-
-
-    // ------------------------------------------------- Individual Test Methods
-
-
-    // Test ((Map) getRowData()).containsKey()
-    public void testRowDataContainsKey() throws Exception {
-
-        // Position to row 1 and retrieve the corresponding Map
-        model.setRowIndex(1);
-        assertTrue(model.isRowAvailable());
-        Object data = model.getRowData();
-        assertNotNull(data);
-        assertTrue(data instanceof Map);
-        Map map = (Map) data;
-
-        // Test exact match on column names
-        assertTrue(map.containsKey("booleanProperty"));
-        assertTrue(map.containsKey("booleanSecond"));
-        assertTrue(map.containsKey("byteProperty"));
-        assertTrue(map.containsKey("doubleProperty"));
-        assertTrue(map.containsKey("floatProperty"));
-        assertTrue(map.containsKey("intProperty"));
-        assertTrue(map.containsKey("longProperty"));
-        assertTrue(map.containsKey("stringProperty"));
-
-        // Test inexact match on column names
-        assertTrue(map.containsKey("booleanPROPERTY"));
-        assertTrue(map.containsKey("booleanSECOND"));
-        assertTrue(map.containsKey("bytePROPERTY"));
-        assertTrue(map.containsKey("doublePROPERTY"));
-        assertTrue(map.containsKey("floatPROPERTY"));
-        assertTrue(map.containsKey("intPROPERTY"));
-        assertTrue(map.containsKey("longPROPERTY"));
-        assertTrue(map.containsKey("stringPROPERTY"));
-
-        // Test false return on invalid column names
-        assertTrue(!map.containsKey("foo"));
-        assertTrue(!map.containsKey("FOO"));
-        assertTrue(!map.containsKey("bar"));
-        assertTrue(!map.containsKey("BAR"));
-
-    }
-
-
-    // Test ((Map) getRowData()).containsValue()
-    public void testRowDataContainsValue() throws Exception {
-
-        // Position to row 1 and retrieve the corresponding Map
-        model.setRowIndex(1);
-        assertTrue(model.isRowAvailable());
-        Object data = model.getRowData();
-        assertNotNull(data);
-        assertTrue(data instanceof Map);
-        Map map = (Map) data;
-
-        // Test positive results
-        assertTrue(map.containsValue(Boolean.TRUE));
-        assertTrue(map.containsValue(Boolean.FALSE));
-        assertTrue(map.containsValue(new Byte((byte) 1)));
-        assertTrue(map.containsValue(new Double((double) 100.0)));
-        assertTrue(map.containsValue(new Float((float) 10.0)));
-        assertTrue(map.containsValue(new Integer((int) 1000)));
-        assertTrue(map.containsValue(new Long((long) 10000)));
-        assertTrue(map.containsValue("This is string 1"));
-
-        // Test negative results
-        assertTrue(!map.containsValue("foo"));
-        assertTrue(!map.containsValue(new Integer(654321)));
-
-    }
-
-
-    // Test ((Map) getRowData()).entrySet()
-    public void testRowDataEntrySet() throws Exception {
-
-        // Position to row 1 and retrieve the corresponding Map
-        model.setRowIndex(1);
-        assertTrue(model.isRowAvailable());
-        Object data = model.getRowData();
-        assertNotNull(data);
-        assertTrue(data instanceof Map);
-        Map map = (Map) data;
-        Set set = map.entrySet();
-
-        // Test exact match postive results
-        assertTrue(set.contains
-                   (new TestEntry("booleanProperty",
-                                  Boolean.FALSE)));
-        assertTrue(set.contains
-                   (new TestEntry("booleanSecond",
-                                  Boolean.TRUE)));
-        assertTrue(set.contains
-                   (new TestEntry("byteProperty",
-                                  new Byte((byte) 1))));
-        assertTrue(set.contains
-                   (new TestEntry("doubleProperty",
-                                  new Double((double) 100.0))));
-        assertTrue(set.contains
-                   (new TestEntry("floatProperty",
-                                  new Float((float) 10.0))));
-        assertTrue(set.contains
-                   (new TestEntry("intProperty",
-                                  new Integer((int) 1000))));
-        assertTrue(set.contains
-                   (new TestEntry("longProperty",
-                                  new Long((long) 10000))));
-        assertTrue(set.contains
-                   (new TestEntry("stringProperty", "This is string 1")));
-
-        // Test exact match postive results
-        assertTrue(set.contains
-                   (new TestEntry("booleanPROPERTY",
-                                  Boolean.FALSE)));
-        assertTrue(set.contains
-                   (new TestEntry("booleanSECOND",
-                                  Boolean.TRUE)));
-        assertTrue(set.contains
-                   (new TestEntry("bytePROPERTY",
-                                  new Byte((byte) 1))));
-        assertTrue(set.contains
-                   (new TestEntry("doublePROPERTY",
-                                  new Double((double) 100.0))));
-        assertTrue(set.contains
-                   (new TestEntry("floatPROPERTY",
-                                  new Float((float) 10.0))));
-        assertTrue(set.contains
-                   (new TestEntry("intPROPERTY",
-                                  new Integer((int) 1000))));
-        assertTrue(set.contains
-                   (new TestEntry("longPROPERTY",
-                                  new Long((long) 10000))));
-        assertTrue(set.contains
-                   (new TestEntry("stringPROPERTY", "This is string 1")));
-
-        // Test negative results
-        assertTrue(!set.contains(new TestEntry("foo", "bar")));
-        assertTrue(!set.contains(new TestEntry("FOO", "bar")));
-        assertTrue(!set.contains(new TestEntry("baz", "bop")));
-        assertTrue(!set.contains(new TestEntry("BAZ", "bop")));
-
-        // Test other methods
-        assertTrue(!set.isEmpty());
-
-        // Test updating through the entry set
-        Iterator entries = set.iterator();
-        while (entries.hasNext()) {
-            Map.Entry entry = (Map.Entry) entries.next();
-            if ("stringProperty".equalsIgnoreCase((String) entry.getKey())) {
-                entry.setValue("This is string 1 modified");
-            }
-        }
-        assertEquals("This is string 1 modified",
-                     beans[1].getStringProperty());
-        assertEquals("This is string 1 modified",
-                     (String) map.get("stringProperty"));
-        assertEquals("This is string 1 modified",
-                     (String) map.get("stringPROPERTY"));
-        result.absolute(2); // ResultSet indexing is one-relative
-        assertEquals("This is string 1 modified",
-                     (String) result.getObject("stringProperty"));
-
-
-    }
-
-
-    // Test ((Map) getRowData()).get()
-    public void testRowDataGet() throws Exception {
-
-        // Position to row 1 and retrieve the corresponding Map
-        model.setRowIndex(1);
-        assertTrue(model.isRowAvailable());
-        Object data = model.getRowData();
-        assertNotNull(data);
-        assertTrue(data instanceof Map);
-        Map map = (Map) data;
-
-        // Test exact match on column names
-        assertEquals(Boolean.FALSE,
-                     (Boolean) map.get("booleanProperty"));
-        assertEquals(Boolean.TRUE,
-                     (Boolean) map.get("booleanSecond"));
-        assertEquals(new Byte((byte) 1),
-                     (Byte) map.get("byteProperty"));
-        assertEquals(new Double((double) 100.0),
-                     (Double) map.get("doubleProperty"));
-        assertEquals(new Float((float) 10.0),
-                     (Float) map.get("floatProperty"));
-        assertEquals(new Integer((int) 1000),
-                     (Integer) map.get("intProperty"));
-        assertEquals(new Long((long) 10000),
-                     (Long) map.get("longProperty"));
-        assertEquals("This is string 1",
-                     (String) map.get("stringProperty"));
-
-        // Test inexact match on column names
-        assertEquals(Boolean.FALSE,
-                     (Boolean) map.get("booleanPROPERTY"));
-        assertEquals(Boolean.TRUE,
-                     (Boolean) map.get("booleanSECOND"));
-        assertEquals(new Byte((byte) 1),
-                     (Byte) map.get("bytePROPERTY"));
-        assertEquals(new Double((double) 100.0),
-                     (Double) map.get("doublePROPERTY"));
-        assertEquals(new Float((float) 10.0),
-                     (Float) map.get("floatPROPERTY"));
-        assertEquals(new Integer((int) 1000),
-                     (Integer) map.get("intPROPERTY"));
-        assertEquals(new Long((long) 10000),
-                     (Long) map.get("longPROPERTY"));
-        assertEquals("This is string 1",
-                     (String) map.get("stringPROPERTY"));
-
-        // Test null return on non-existent column names
-        assertNull(map.get("foo"));
-        assertNull(map.get("FOO"));
-        assertNull(map.get("bar"));
-        assertNull(map.get("bar"));
-
-    }
-
-
-    // Test ((Map) getRowData()).keySet()
-    public void testRowDataKeySet() throws Exception {
-
-        // Position to row 1 and retrieve the corresponding Map
-        model.setRowIndex(1);
-        assertTrue(model.isRowAvailable());
-        Object data = model.getRowData();
-        assertNotNull(data);
-        assertTrue(data instanceof Map);
-        Map map = (Map) data;
-        Set set = map.keySet();
-
-        // Test exact match postive results
-        assertTrue(set.contains("booleanProperty"));
-        assertTrue(set.contains("booleanSecond"));
-        assertTrue(set.contains("byteProperty"));
-        assertTrue(set.contains("doubleProperty"));
-        assertTrue(set.contains("floatProperty"));
-        assertTrue(set.contains("intProperty"));
-        assertTrue(set.contains("longProperty"));
-        assertTrue(set.contains("stringProperty"));
-
-        // Test inexact match positive results
-        assertTrue(set.contains("booleanPROPERTY"));
-        assertTrue(set.contains("booleanSECOND"));
-        assertTrue(set.contains("bytePROPERTY"));
-        assertTrue(set.contains("doublePROPERTY"));
-        assertTrue(set.contains("floatPROPERTY"));
-        assertTrue(set.contains("intPROPERTY"));
-        assertTrue(set.contains("longPROPERTY"));
-        assertTrue(set.contains("stringPROPERTY"));
-
-        // Test negative results
-        assertTrue(!set.contains("foo"));
-        assertTrue(!set.contains("FOO"));
-        assertTrue(!set.contains("bar"));
-        assertTrue(!set.contains("BAR"));
-
-        // Test other methods
-        assertTrue(!set.isEmpty());
-
-    }
-
-
-    // Test ((Map) getRowData()).put()
-    public void testRowDataPut() throws Exception {
-
-        // Position to row 1 and retrieve the corresponding Map
-        model.setRowIndex(1);
-        assertTrue(model.isRowAvailable());
-        Object data = model.getRowData();
-        assertNotNull(data);
-        assertTrue(data instanceof Map);
-        Map map = (Map) data;
-
-    }
-
-
-    // Test unsupported operations on ((Map) getRowData())
-    public void testRowDataUnsupported() throws Exception {
-
-        // Position to row 1 and retrieve the corresponding Map
-        model.setRowIndex(1);
-        assertTrue(model.isRowAvailable());
-        Object data = model.getRowData();
-        assertNotNull(data);
-        assertTrue(data instanceof Map);
-        Map map = (Map) data;
-
-        // clear()
-        try {
-            map.clear();
-            fail("Should have thrown UnsupportedOperationException");
-        } catch (UnsupportedOperationException e) {
-            ; // Expected result
-        }
-
-        // entrySet()
-        Set entrySet = map.entrySet();
-        try {
-            entrySet.add(new TestEntry("foo", "bar"));
-            fail("Should have thrown UnsupportedOperationException");
-        } catch (UnsupportedOperationException e) {
-            ; // Expected result
-        }
-        List mapEntries = new ArrayList();
-        mapEntries.add(new TestEntry("foo", "bar"));
-        mapEntries.add(new TestEntry("baz", "bop"));
-        try {
-            entrySet.addAll(mapEntries);
-            fail("Should have thrown UnsupportedOperationException");
-        } catch (UnsupportedOperationException e) {
-            ; // Expected result
-        }
-        try {
-            entrySet.clear();
-            fail("Should have thrown UnsupportedOperationException");
-        } catch (UnsupportedOperationException e) {
-            ; // Expected result
-        }
-        try {
-            Iterator iterator = entrySet.iterator();
-            iterator.next();
-            iterator.remove();
-            fail("Should have thrown UnsupportedOperationException");
-        } catch (UnsupportedOperationException e) {
-            ; // Expected result
-        }
-        try {
-            entrySet.remove(new TestEntry("foo", "bar"));
-            fail("Should have thrown UnsupportedOperationException");
-        } catch (UnsupportedOperationException e) {
-            ; // Expected result
-        }
-        try {
-            entrySet.removeAll(mapEntries);
-            fail("Should have thrown UnsupportedOperationException");
-        } catch (UnsupportedOperationException e) {
-            ; // Expected result
-        }
-        try {
-            entrySet.retainAll(mapEntries);
-            fail("Should have thrown UnsupportedOperationException");
-        } catch (UnsupportedOperationException e) {
-            ; // Expected result
-        }
-
-        // keySet()
-        Set keySet = map.keySet();
-        try {
-            keySet.add("foo");
-            fail("Should have thrown UnsupportedOperationException");
-        } catch (UnsupportedOperationException e) {
-            ; // Expected result
-        }
-        List mapKeys = new ArrayList();
-        mapKeys.add("foo");
-        mapKeys.add("bar");
-        try {
-            keySet.addAll(mapKeys);
-            fail("Should have thrown UnsupportedOperationException");
-        } catch (UnsupportedOperationException e) {
-            ; // Expected result
-        }
-        try {
-            keySet.clear();
-            fail("Should have thrown UnsupportedOperationException");
-        } catch (UnsupportedOperationException e) {
-            ; // Expected result
-        }
-        try {
-            Iterator iterator = keySet.iterator();
-            iterator.next();
-            iterator.remove();
-            fail("Should have thrown UnsupportedOperationException");
-        } catch (UnsupportedOperationException e) {
-            ; // Expected result
-        }
-        try {
-            keySet.remove(new TestEntry("foo", "bar"));
-            fail("Should have thrown UnsupportedOperationException");
-        } catch (UnsupportedOperationException e) {
-            ; // Expected result
-        }
-        try {
-            keySet.removeAll(mapKeys);
-            fail("Should have thrown UnsupportedOperationException");
-        } catch (UnsupportedOperationException e) {
-            ; // Expected result
-        }
-        try {
-            keySet.retainAll(mapKeys);
-            fail("Should have thrown UnsupportedOperationException");
-        } catch (UnsupportedOperationException e) {
-            ; // Expected result
-        }
-
-        // remove()
-        try {
-            map.remove("foo");
-            fail("Should have thrown UnsupportedOperationException");
-        } catch (UnsupportedOperationException e) {
-            ; // Expected result
-        }
-
-        // values()
-        Collection values = map.values();
-        try {
-            values.add("foo");
-            fail("Should have thrown UnsupportedOperationException");
-        } catch (UnsupportedOperationException e) {
-            ; // Expected result
-        }
-        List list = new ArrayList();
-        list.add("foo");
-        list.add("bar");
-        try {
-            values.addAll(list);
-            fail("Should have thrown UnsupportedOperationException");
-        } catch (UnsupportedOperationException e) {
-            ; // Expected result
-        }
-        try {
-            values.clear();
-            fail("Should have thrown UnsupportedOperationException");
-        } catch (UnsupportedOperationException e) {
-            ; // Expected result
-        }
-        try {
-            Iterator iterator = values.iterator();
-            iterator.next();
-            iterator.remove();
-            fail("Should have thrown UnsupportedOperationException");
-        } catch (UnsupportedOperationException e) {
-            ; // Expected result
-        }
-        try {
-            values.remove("foo");
-            fail("Should have thrown UnsupportedOperationException");
-        } catch (UnsupportedOperationException e) {
-            ; // Expected result
-        }
-        try {
-            values.removeAll(list);
-            fail("Should have thrown UnsupportedOperationException");
-        } catch (UnsupportedOperationException e) {
-            ; // Expected result
-        }
-        try {
-            values.retainAll(list);
-            fail("Should have thrown UnsupportedOperationException");
-        } catch (UnsupportedOperationException e) {
-            ; // Expected result
-        }
-
-    }
-
-
-    // Test ((Map) getRowData()).values()
-    public void testRowDataValues() throws Exception {
-
-        // Position to row 1 and retrieve the corresponding Map
-        model.setRowIndex(1);
-        assertTrue(model.isRowAvailable());
-        Object data = model.getRowData();
-        assertNotNull(data);
-        assertTrue(data instanceof Map);
-        Map map = (Map) data;
-        Collection values = map.values();
-
-        // Test positive results
-        assertTrue(values.contains(Boolean.TRUE));
-        assertTrue(values.contains(Boolean.FALSE));
-        assertTrue(values.contains(new Byte((byte) 1)));
-        assertTrue(values.contains(new Double((double) 100.0)));
-        assertTrue(values.contains(new Float((float) 10.0)));
-        assertTrue(values.contains(new Integer((int) 1000)));
-        assertTrue(values.contains(new Long((long) 10000)));
-        assertTrue(values.contains("This is string 1"));
-
-        // Test negative results
-        assertTrue(!values.contains("foo"));
-        assertTrue(!values.contains(new Integer(654321)));
-
-        // Test other methods
-        assertTrue(!values.isEmpty());
-
-    }
-
-
-    // ------------------------------------------------------- Protected Methods
-
-
-    protected TestBean data() throws Exception {
-
-        Object data = model.getRowData();
-        assertTrue(data instanceof Map);
-        TestBean bean = new TestBean();
-        Map map = (Map) data;
-
-        bean.setBooleanProperty
-            (((Boolean) map.get("booleanProperty")).booleanValue());
-        bean.setBooleanSecond
-            (((Boolean) map.get("booleanSecond")).booleanValue());
-        bean.setByteProperty
-            (((Byte) map.get("byteProperty")).byteValue());
-        bean.setDoubleProperty
-            (((Double) map.get("doubleProperty")).doubleValue());
-        bean.setFloatProperty
-            (((Float) map.get("floatProperty")).floatValue());
-        bean.setIntProperty
-            (((Integer) map.get("intProperty")).intValue());
-        bean.setLongProperty
-            (((Long) map.get("longProperty")).longValue());
-        bean.setNullProperty((String) map.get("nullProperty"));
-        bean.setShortProperty
-            (((Short) map.get("shortProperty")).shortValue());
-        bean.setStringProperty((String) map.get("stringProperty"));
-        bean.setWriteOnlyProperty
-            ((String) map.get("writeOnlyPropertyValue"));
-
-        return (bean);
-
-    }
-
-
-    class TestEntry implements Map.Entry {
-
-        public TestEntry(Object key, Object value) {
-            this.key = key;
-            this.value = value;
-        }
-
-        private Object key;
-        private Object value;
-
-        public Object getKey() { return key; }
-        public Object getValue() { return value; }
-        public Object setValue(Object value) {
-            Object previous = this.value;
-            this.value = value;
-            return previous;
-        }
-
-        public boolean equals(Object o) {
-            if (!(o instanceof Map.Entry)) {
-                return (false);
-            }
-            Map.Entry e = (Map.Entry) o;
-            return (key == null ?
-                    e.getKey() == null : key.equals(e.getKey())) &&
-                (value == null ?
-                 e.getValue() == null : value.equals(e.getValue()));
-        }
-        
-    }
-
-}
diff --git a/jsf-api/src/test/java/javax/faces/model/ScalarDataModelTestCase.java b/jsf-api/src/test/java/javax/faces/model/ScalarDataModelTestCase.java
deleted file mode 100644
index 58300b2..0000000
--- a/jsf-api/src/test/java/javax/faces/model/ScalarDataModelTestCase.java
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package javax.faces.model;
-
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-
-/**
- * <p>Unit tests for {@link ScalarDataModel}.</p>
- */
-
-public class ScalarDataModelTestCase extends DataModelTestCaseBase {
-
-
-    // ------------------------------------------------------------ Constructors
-
-
-    /**
-     * Construct a new instance of this test case.
-     *
-     * @param name Name of the test case
-     */
-    public ScalarDataModelTestCase(String name) {
-
-        super(name);
-
-    }
-
-
-    // ------------------------------------------------------ Instance Variables
-
-
-    // ---------------------------------------------------- Overall Test Methods
-
-
-    // Set up instance variables required by this test case.
-    public void setUp() throws Exception {
-
-        beans = new TestBean[1];
-        beans[0] = new TestBean();
-        configure();
-        model = new ScalarDataModel<TestBean>(beans[0]);
-        super.setUp();
-
-    }
-
-
-    // Return the tests included in this test case.
-    public static Test suite() {
-
-        return (new TestSuite(ScalarDataModelTestCase.class));
-
-    }
-
-
-    // ------------------------------------------------- Individual Test Methods
-
-
-    // ------------------------------------------------------- Protected Methods
-
-
-}
diff --git a/jsf-api/src/test/java/javax/faces/model/TestBean.java b/jsf-api/src/test/java/javax/faces/model/TestBean.java
deleted file mode 100644
index 5603089..0000000
--- a/jsf-api/src/test/java/javax/faces/model/TestBean.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package javax.faces.model;
-
-
-/**
- * <p>JavaBean for data model tests.</p>
- */
-
-public class TestBean extends com.sun.faces.mock.model.TestBean {
-
-
-
-}
diff --git a/jsf-api/src/test/java/javax/faces/model/TestListener.java b/jsf-api/src/test/java/javax/faces/model/TestListener.java
deleted file mode 100644
index abcff09..0000000
--- a/jsf-api/src/test/java/javax/faces/model/TestListener.java
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package javax.faces.model;
-
-
-/**
- * <p>Test implementation of DataModelListener.</p>
- */
-
-public class TestListener implements DataModelListener {
-
-
-    // ----------------------------------------------- DataModelListener Methods
-
-
-    public void rowSelected(DataModelEvent event) {
-        Object rowData = event.getRowData();
-        int rowIndex = event.getRowIndex();
-        trace("" + rowIndex);
-        if ((rowIndex >= 0) && (rowData == null)) {
-            throw new IllegalArgumentException("rowIndex=" + rowIndex +
-                                               " but rowData is null");
-        } else if ((rowIndex == -1) && (rowData != null)) {
-            throw new IllegalArgumentException("rowIndex=" + rowIndex +
-                                               " but rowData is not null");
-        } else if (rowIndex < -1) {
-            throw new IllegalArgumentException("rowIndex=" + rowIndex);
-        }
-            
-    }
-
-
-    // ---------------------------------------------------------- Static Methods
-
-
-    private static StringBuffer trace = new StringBuffer();
-
-
-    public static String trace() {
-        return (trace.toString());
-    }
-
-
-    public static void trace(String value) {
-        if (value == null) {
-            trace = new StringBuffer();
-        } else {
-            trace.append("/");
-            trace.append(value);
-        }
-    }
-
-
-}
diff --git a/jsf-api/src/test/java/javax/faces/validator/DoubleRangeValidatorTestCase.java b/jsf-api/src/test/java/javax/faces/validator/DoubleRangeValidatorTestCase.java
deleted file mode 100644
index f6bea20..0000000
--- a/jsf-api/src/test/java/javax/faces/validator/DoubleRangeValidatorTestCase.java
+++ /dev/null
@@ -1,156 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package javax.faces.validator;
-
-
-import java.util.Locale;
-
-import javax.faces.component.UIInput;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-/**
- * <p>Unit tests for {@link DoubleRangeValidator}.</p>
- */
-
-public class DoubleRangeValidatorTestCase extends ValidatorTestCase {
-
-
-    // ------------------------------------------------------------ Constructors
-
-
-    /**
-     * Construct a new instance of this test case.
-     *
-     * @param name Name of the test case
-     */
-    public DoubleRangeValidatorTestCase(String name) {
-        super(name);
-    }
-
-
-    // ---------------------------------------------------- Overall Test Methods
-
-    // Return the tests included in this test case.
-    public static Test suite() {
-        return (new TestSuite(DoubleRangeValidatorTestCase.class));
-    }
-
-
-    // ------------------------------------------------- Individual Test Methods
-
-    public void testLocaleHonored() {
-	DoubleRangeValidator validator = new DoubleRangeValidator();
-	validator.setMinimum(10.1);
-	validator.setMaximum(20.1);
-	boolean exceptionThrown = false;
-	UIInput component = new UIInput();
-	String message;
-	Locale.setDefault(Locale.US);
-	facesContext.getViewRoot().setLocale(Locale.US);
-	
-	try {
-	    validator.validate(facesContext, component, "5.1");
-	    fail("Exception not thrown");
-	}
-	catch (ValidatorException e) {
-	    exceptionThrown = true;
-	    message = e.getMessage();
-	    assertTrue("message: \"" + message + "\" missing localized chars.",
-		       -1 != message.indexOf("10.1"));
-	    assertTrue("message: \"" + message + "\" missing localized chars.",
-		       -1 != message.indexOf("20.1"));
-	}
-	assertTrue(exceptionThrown);
-
-	exceptionThrown = false;
-	Locale.setDefault(Locale.GERMAN);
-	facesContext.getViewRoot().setLocale(Locale.GERMAN);
-
-	try {
-	    validator.validate(facesContext, component, "5");
-	    fail("Exception not thrown");
-	}
-	catch (ValidatorException e) {
-	    exceptionThrown = true;
-	    message = e.getMessage();
-	    assertTrue("message: \"" + message + "\" missing localized chars.",
-		       -1 != message.indexOf("10,1"));
-	    assertTrue("message: \"" + message + "\" missing localized chars.",
-		       -1 != message.indexOf("20,1"));
-	}
-	assertTrue(exceptionThrown);
-
-    }
-
-    public void testHashCode() {
-        DoubleRangeValidator validator1 = new DoubleRangeValidator();
-        DoubleRangeValidator validator2 = new DoubleRangeValidator();
-
-        validator1.setMinimum(10.0d);
-        validator1.setMaximum(15.1d);
-        validator2.setMinimum(10.0d);
-        validator2.setMaximum(15.1d);
-
-        assertTrue(validator1.hashCode() == validator2.hashCode());
-        assertTrue(validator1.hashCode() == validator2.hashCode());
-
-        validator2.setMaximum(15.2d);
-
-        assertTrue(validator1.hashCode() != validator2.hashCode());
-
-        validator1 = new DoubleRangeValidator();
-        validator2 = new DoubleRangeValidator();
-
-        validator1.setMinimum(10.0d);
-        validator2.setMinimum(10.0d);
-
-        assertTrue(validator1.hashCode() == validator2.hashCode());
-        assertTrue(validator1.hashCode() == validator2.hashCode());
-
-        validator1.setMinimum(11.0d);
-
-        assertTrue(validator1.hashCode() != validator2.hashCode());
-
-        validator1.setMinimum(10.0d);
-        validator1.setMaximum(10.1d);
-
-        assertTrue(validator1.hashCode() != validator2.hashCode());
-    }
-
-}
diff --git a/jsf-api/src/test/java/javax/faces/validator/LengthValidatorTestCase.java b/jsf-api/src/test/java/javax/faces/validator/LengthValidatorTestCase.java
deleted file mode 100644
index 5e5de11..0000000
--- a/jsf-api/src/test/java/javax/faces/validator/LengthValidatorTestCase.java
+++ /dev/null
@@ -1,154 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package javax.faces.validator;
-
-
-import java.util.Locale;
-
-import javax.faces.component.UIInput;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-/**
- * <p>Unit tests for {@link LengthValidator}.</p>
- */
-
-public class LengthValidatorTestCase extends ValidatorTestCase {
-
-
-    // ------------------------------------------------------------ Constructors
-
-
-    /**
-     * Construct a new instance of this test case.
-     *
-     * @param name Name of the test case
-     */
-    public LengthValidatorTestCase(String name) {
-        super(name);
-    }
-
-
-    // ---------------------------------------------------- Overall Test Methods
-
-    // Return the tests included in this test case.
-    public static Test suite() {
-        return (new TestSuite(LengthValidatorTestCase.class));
-    }
-
-
-    // ------------------------------------------------- Individual Test Methods
-
-    public void testLocaleHonored() {
-	LengthValidator validator = new LengthValidator();
-	validator.setMinimum(1000);
-	validator.setMaximum(2000);
-	boolean exceptionThrown = false;
-	UIInput component = new UIInput();
-	String message;
-	Locale.setDefault(Locale.US);
-	facesContext.getViewRoot().setLocale(Locale.US);
-	
-	try {
-	    validator.validate(facesContext, component, 
-			       "Not at all long enough");
-	    fail("Exception not thrown");
-	}
-	catch (ValidatorException e) {
-	    exceptionThrown = true;
-	    message = e.getMessage();
-	    assertTrue("message: \"" + message + "\" missing localized chars.",
-		       -1 != message.indexOf("1,000"));
-	}
-	assertTrue(exceptionThrown);
-
-	exceptionThrown = false;
-	Locale.setDefault(Locale.GERMAN);
-	facesContext.getViewRoot().setLocale(Locale.GERMAN);
-
-	try {
-	    validator.validate(facesContext, component, 
-			       "Still not long enough");
-	    fail("Exception not thrown");
-	}
-	catch (ValidatorException e) {
-	    exceptionThrown = true;
-	    message = e.getMessage();
-	    assertTrue("message: \"" + message + "\" missing localized chars.",
-		       -1 != message.indexOf("1.000"));
-	}
-	assertTrue(exceptionThrown);
-
-    }
-
-    public void testHashCode() {
-        LengthValidator validator1 = new LengthValidator();
-        LengthValidator validator2 = new LengthValidator();
-
-        validator1.setMinimum(10);
-        validator1.setMaximum(15);
-        validator2.setMinimum(10);
-        validator2.setMaximum(15);
-
-        assertTrue(validator1.hashCode() == validator2.hashCode());
-        assertTrue(validator1.hashCode() == validator2.hashCode());
-
-        validator2.setMaximum(16);
-
-        assertTrue(validator1.hashCode() != validator2.hashCode());
-
-        validator1 = new LengthValidator();
-        validator2 = new LengthValidator();
-
-        validator1.setMinimum(10);
-        validator2.setMinimum(10);
-
-        assertTrue(validator1.hashCode() == validator2.hashCode());
-        assertTrue(validator1.hashCode() == validator2.hashCode());
-
-        validator1.setMinimum(11);
-
-        assertTrue(validator1.hashCode() != validator2.hashCode());
-
-        validator1.setMinimum(10);
-        validator1.setMaximum(10);
-
-        assertTrue(validator1.hashCode() != validator2.hashCode());
-    }
-
-}
diff --git a/jsf-api/src/test/java/javax/faces/validator/LongRangeValidatorTestCase.java b/jsf-api/src/test/java/javax/faces/validator/LongRangeValidatorTestCase.java
deleted file mode 100644
index 8a25a1c..0000000
--- a/jsf-api/src/test/java/javax/faces/validator/LongRangeValidatorTestCase.java
+++ /dev/null
@@ -1,156 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package javax.faces.validator;
-
-
-import java.util.Locale;
-
-import javax.faces.component.UIInput;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-/**
- * <p>Unit tests for {@link LongRangeValidator}.</p>
- */
-
-public class LongRangeValidatorTestCase extends ValidatorTestCase {
-
-
-    // ------------------------------------------------------------ Constructors
-
-
-    /**
-     * Construct a new instance of this test case.
-     *
-     * @param name Name of the test case
-     */
-    public LongRangeValidatorTestCase(String name) {
-        super(name);
-    }
-
-
-    // ---------------------------------------------------- Overall Test Methods
-
-    // Return the tests included in this test case.
-    public static Test suite() {
-        return (new TestSuite(LongRangeValidatorTestCase.class));
-    }
-
-
-    // ------------------------------------------------- Individual Test Methods
-
-    public void testLocaleHonored() {
-	LongRangeValidator validator = new LongRangeValidator();
-	validator.setMinimum(10100);
-	validator.setMaximum(20100);
-	boolean exceptionThrown = false;
-	UIInput component = new UIInput();
-	String message;
-	Locale.setDefault(Locale.US);
-	facesContext.getViewRoot().setLocale(Locale.US);
-	
-	try {
-	    validator.validate(facesContext, component, "5100");
-	    fail("Exception not thrown");
-	}
-	catch (ValidatorException e) {
-	    exceptionThrown = true;
-	    message = e.getMessage();
-	    assertTrue("message: \"" + message + "\" missing localized chars.",
-		       -1 != message.indexOf("10,100"));
-	    assertTrue("message: \"" + message + "\" missing localized chars.",
-		       -1 != message.indexOf("20,100"));
-	}
-	assertTrue(exceptionThrown);
-
-	exceptionThrown = false;
-	Locale.setDefault(Locale.GERMAN);
-	facesContext.getViewRoot().setLocale(Locale.GERMAN);
-
-	try {
-	    validator.validate(facesContext, component, "5100");
-	    fail("Exception not thrown");
-	}
-	catch (ValidatorException e) {
-	    exceptionThrown = true;
-	    message = e.getMessage();
-	    assertTrue("message: \"" + message + "\" missing localized chars.",
-		       -1 != message.indexOf("10.100"));
-	    assertTrue("message: \"" + message + "\" missing localized chars.",
-		       -1 != message.indexOf("20.100"));
-	}
-	assertTrue(exceptionThrown);
-
-    }
-
-    public void testHashCode() {
-        LongRangeValidator validator1 = new LongRangeValidator();
-        LongRangeValidator validator2 = new LongRangeValidator();
-
-        validator1.setMinimum(10l);
-        validator1.setMaximum(15l);
-        validator2.setMinimum(10l);
-        validator2.setMaximum(15l);
-
-        assertTrue(validator1.hashCode() == validator2.hashCode());
-        assertTrue(validator1.hashCode() == validator2.hashCode());
-
-        validator2.setMaximum(16l);
-
-        assertTrue(validator1.hashCode() != validator2.hashCode());
-
-        validator1 = new LongRangeValidator();
-        validator2 = new LongRangeValidator();
-
-        validator1.setMinimum(10l);
-        validator2.setMinimum(10l);
-
-        assertTrue(validator1.hashCode() == validator2.hashCode());
-        assertTrue(validator1.hashCode() == validator2.hashCode());
-
-        validator1.setMinimum(11l);
-
-        assertTrue(validator1.hashCode() != validator2.hashCode());
-
-        validator1.setMinimum(10l);
-        validator1.setMaximum(11l);
-
-        assertTrue(validator1.hashCode() != validator2.hashCode());
-    }
-
-}
diff --git a/jsf-api/src/test/java/javax/faces/validator/RegexValidatorTestCase.java b/jsf-api/src/test/java/javax/faces/validator/RegexValidatorTestCase.java
deleted file mode 100644
index 5bada19..0000000
--- a/jsf-api/src/test/java/javax/faces/validator/RegexValidatorTestCase.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package javax.faces.validator;
-
-
-import javax.faces.component.UIInput;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-/**
- * <p>Unit tests for {@link RegexValidator}.</p>
- */
-
-public class RegexValidatorTestCase extends ValidatorTestCase {
-
-
-    // ------------------------------------------------------------ Constructors
-
-
-    /**
-     * Construct a new instance of this test case.
-     *
-     * @param name Name of the test case
-     */
-    public RegexValidatorTestCase(String name) {
-        super(name);
-    }
-
-
-    // ---------------------------------------------------- Overall Test Methods
-
-    // Return the tests included in this test case.
-    public static Test suite() {
-        return (new TestSuite(RegexValidatorTestCase.class));
-    }
-
-
-    // ------------------------------------------------- Individual Test Methods
-
-    public void testPatternMatch() {
-        String patternStr = "t.*";
-        RegexValidator validator = new RegexValidator();
-        validator.setPattern(patternStr);
-        UIInput component = new UIInput();
-        String checkme = "test";
-        try {
-            validator.validate(facesContext, component, checkme);
-            assertTrue(true);
-        } catch (ValidatorException ve) {
-            fail("Exception thrown "+ve.getMessage());
-        }
-    }
-
-    public void testPatterMismatch() {
-        String patternStr = "t.*";
-        RegexValidator validator = new RegexValidator();
-        validator.setPattern(patternStr);
-        UIInput component = new UIInput();
-        String checkme = "jest";
-        try {
-            validator.validate(facesContext, component, checkme);
-            fail("Exception not thrown when tested "+checkme+" against "+patternStr);
-        } catch (ValidatorException ve) {
-            String detail = ve.getFacesMessage().getDetail();
-            System.out.println("Detail in test: "+detail);
-            assertTrue(detail.equalsIgnoreCase("Regex pattern of 't.*' not matched"));
-        }
-    }
-}
diff --git a/jsf-api/src/test/java/javax/faces/validator/ValidatorTestCase.java b/jsf-api/src/test/java/javax/faces/validator/ValidatorTestCase.java
deleted file mode 100644
index bb8e37f..0000000
--- a/jsf-api/src/test/java/javax/faces/validator/ValidatorTestCase.java
+++ /dev/null
@@ -1,179 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package javax.faces.validator;
-
-
-import java.io.IOException;
-import java.util.Iterator;
-import java.util.Map;
-import javax.faces.FactoryFinder;
-import javax.faces.application.Application;
-import javax.faces.application.ApplicationFactory;
-import javax.faces.context.FacesContext;
-import javax.faces.el.ValueBinding;
-import javax.faces.event.FacesEvent;
-import com.sun.faces.mock.MockApplication;
-import com.sun.faces.mock.MockExternalContext;
-import com.sun.faces.mock.MockFacesContext;
-import com.sun.faces.mock.MockHttpServletRequest;
-import com.sun.faces.mock.MockHttpServletResponse;
-import com.sun.faces.mock.MockHttpSession;
-import com.sun.faces.mock.MockLifecycle;
-import com.sun.faces.mock.MockRenderKit;
-import com.sun.faces.mock.MockRenderKitFactory;
-import com.sun.faces.mock.MockServletConfig;
-import com.sun.faces.mock.MockServletContext;
-import com.sun.faces.mock.MockValueBinding;
-import javax.faces.TestUtil;
-import javax.faces.render.RenderKit;
-import javax.faces.render.RenderKitFactory;
-import javax.faces.validator.Validator;
-import junit.framework.TestCase;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-import javax.faces.component.UIViewRoot;
-
-/**
- * <p>Base unit tests for all {@link Validator} implementations.</p>
- */
-
-public class ValidatorTestCase extends TestCase {
-
-
-    // ------------------------------------------------------ Instance Variables
-
-
-    // Mock object instances for our tests
-    protected MockApplication         application = null;
-    protected MockServletConfig       config = null;
-    protected MockExternalContext     externalContext = null;
-    protected MockFacesContext        facesContext = null;
-    protected MockLifecycle           lifecycle = null;
-    protected MockHttpServletRequest  request = null;
-    protected MockHttpServletResponse response = null;
-    protected MockServletContext      servletContext = null;
-    protected MockHttpSession         session = null;
-
-
-    // ------------------------------------------------------------ Constructors
-
-
-    /**
-     * Construct a new instance of this test case.
-     *
-     * @param name Name of the test case
-     */
-    public ValidatorTestCase(String name) {
-        super(name);
-    }
-
-
-    // ---------------------------------------------------- Overall Test Methods
-
-
-    // Set up instance variables required by this test case.
-    public void setUp() throws Exception {
-
-        // Set up Servlet API Objects
-        servletContext = new MockServletContext();
-        servletContext.addInitParameter("appParamName", "appParamValue");
-        servletContext.setAttribute("appScopeName", "appScopeValue");
-        config = new MockServletConfig(servletContext);
-        session = new MockHttpSession();
-        session.setAttribute("sesScopeName", "sesScopeValue");
-        request = new MockHttpServletRequest(session);
-        request.setAttribute("reqScopeName", "reqScopeValue");
-        response = new MockHttpServletResponse();
-
-        // Set up Faces API Objects
-	FactoryFinder.setFactory(FactoryFinder.APPLICATION_FACTORY,
-				 "com.sun.faces.mock.MockApplicationFactory");
-	FactoryFinder.setFactory(FactoryFinder.RENDER_KIT_FACTORY,
-				 "com.sun.faces.mock.MockRenderKitFactory");
-
-        externalContext =
-            new MockExternalContext(servletContext, request, response);
-        lifecycle = new MockLifecycle();
-        facesContext = new MockFacesContext(externalContext, lifecycle);
-        ApplicationFactory applicationFactory = (ApplicationFactory)
-            FactoryFinder.getFactory(FactoryFinder.APPLICATION_FACTORY);
-        application = (MockApplication) applicationFactory.getApplication();
-        facesContext.setApplication(application);
-	UIViewRoot root = facesContext.getApplication().getViewHandler().createView(facesContext, null);
-	root.setViewId("/viewId");
-        facesContext.setViewRoot(root);
-        RenderKitFactory renderKitFactory = (RenderKitFactory)
-            FactoryFinder.getFactory(FactoryFinder.RENDER_KIT_FACTORY);
-        RenderKit renderKit = new MockRenderKit();
-        try {
-            renderKitFactory.addRenderKit(RenderKitFactory.HTML_BASIC_RENDER_KIT,
-                                          renderKit);
-        } catch (IllegalArgumentException e) {
-            ;
-        }
-        super.setUp();
-
-    }
-
-
-    // Return the tests included in this test case.
-    public static Test suite() {
-        return (new TestSuite(ValidatorTestCase.class));
-    }
-
-
-    // Tear down instance variables required by ths test case
-    public void tearDown() throws Exception {
-
-        super.tearDown();
-        application = null;
-        config = null;
-        externalContext = null;
-        facesContext = null;
-        lifecycle = null;
-        request = null;
-        response = null;
-        servletContext = null;
-        session = null;
-
-    }
-
-    public void testNoOp() {
-    }
-
-}
diff --git a/jsf-api/src/test/java/javax/faces/webapp/AttributeTagTestCase.java b/jsf-api/src/test/java/javax/faces/webapp/AttributeTagTestCase.java
deleted file mode 100644
index 3ce00e0..0000000
--- a/jsf-api/src/test/java/javax/faces/webapp/AttributeTagTestCase.java
+++ /dev/null
@@ -1,268 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package javax.faces.webapp;
-
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import javax.faces.FactoryFinder;
-import javax.faces.application.Application;
-import javax.faces.application.ApplicationFactory;
-import javax.faces.component.NamingContainer;
-import javax.faces.component.UIComponent;
-import javax.faces.component.UIViewRoot;
-import javax.faces.context.FacesContext;
-import javax.faces.event.FacesEvent;
-import javax.faces.render.RenderKit;
-import javax.faces.render.RenderKitFactory;
-import javax.faces.validator.Validator;
-import javax.servlet.jsp.JspException;
-import javax.servlet.jsp.PageContext;
-import javax.servlet.jsp.tagext.Tag;
-import junit.framework.TestCase;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-import com.sun.faces.mock.MockApplication;
-import com.sun.faces.mock.MockExternalContext;
-import com.sun.faces.mock.MockFacesContext;
-import com.sun.faces.mock.MockHttpServletRequest;
-import com.sun.faces.mock.MockHttpServletResponse;
-import com.sun.faces.mock.MockHttpSession;
-import com.sun.faces.mock.MockJspWriter;
-import com.sun.faces.mock.MockLifecycle;
-import com.sun.faces.mock.MockPageContext;
-import com.sun.faces.mock.MockRenderKit;
-import com.sun.faces.mock.MockRenderKitFactory;
-import com.sun.faces.mock.MockServlet;
-import com.sun.faces.mock.MockServletConfig;
-import com.sun.faces.mock.MockServletContext;
-
-
-/**
- * <p>Unit tests for <code>AttributeTag</code>.</p>
- */
-
-public class AttributeTagTestCase extends TagTestCaseBase {
-
-
-    // ------------------------------------------------------ Instance Variables
-
-
-    protected UIComponentTag ctag = null; // Component tag
-    protected UIComponentTag rtag = null; // Root tag
-
-
-    // ------------------------------------------------------------ Constructors
-
-
-    /**
-     * Construct a new instance of this test case.
-     *
-     * @param name Name of the test case
-     */
-    public AttributeTagTestCase(String name) {
-
-        super(name);
-
-    }
-
-
-    // ---------------------------------------------------- Overall Test Methods
-
-
-    /**
-     * Set up our root and component tags.
-     */
-    public void setUp() throws Exception {
-
-        super.setUp();
-
-        rtag = new TestTag("ROOT", "root") {
-                protected void setProperties(UIComponent component) {
-                }
-            };
-        rtag.setPageContext(this.pageContext);
-        ctag = new TestOutputTag();
-        ctag.setParent(this.rtag);
-        ctag.setPageContext(this.pageContext);
-
-        rtag.doStartTag();
-        ctag.doStartTag();
-
-    }
-
-
-    /**
-     * Return the tests included in this test suite.
-     */
-    public static Test suite() {
-
-        return (new TestSuite(AttributeTagTestCase.class));
-
-    }
-
-
-    /**
-     * Clear our root and component tags.
-     */
-    public void tearDown() throws Exception {
-
-        ctag.doEndTag();
-        rtag.doEndTag();
-
-        ctag = null;
-        rtag = null;
-
-        super.tearDown();
-
-    }
-
-
-    // ------------------------------------------------- Individual Test Methods
-
-
-    // Test literal name and literal value
-    public void testLiteralLiteral() throws Exception {
-
-        UIComponent component = ((UIComponentTag) ctag).getComponentInstance();
-        assertNotNull(component);
-        assertTrue(!component.getAttributes().containsKey("foo"));
-        AttributeTag tag = new AttributeTag();
-        tag.setName("foo");
-        tag.setValue("bar");
-        add(tag);
-        tag.doStartTag();
-        assertEquals("bar",
-                     (String) component.getAttributes().get("foo"));
-        tag.doEndTag();
-        
-    }
-
-    // Test literal name and expression value
-    public void testLiteralExpression() throws Exception {
-
-        UIComponent component = ((UIComponentTag) ctag).getComponentInstance();
-        assertNotNull(component);
-        assertTrue(!component.getAttributes().containsKey("foo"));
-        AttributeTag tag = new AttributeTag();
-        tag.setName("foo");
-        tag.setValue("#{barValue}");
-        add(tag);
-        request.setAttribute("barValue", "bar");
-        tag.doStartTag();
-        assertEquals("bar",
-                     (String) component.getAttributes().get("foo"));
-        tag.doEndTag();
-        
-    }
-
-
-    // Test expression name and literal value
-    public void testExpressionLiteral() throws Exception {
-
-        UIComponent component = ((UIComponentTag) ctag).getComponentInstance();
-        assertNotNull(component);
-        assertTrue(!component.getAttributes().containsKey("foo"));
-        AttributeTag tag = new AttributeTag();
-        tag.setName("#{fooValue}");
-        tag.setValue("bar");
-        add(tag);
-        request.setAttribute("fooValue", "foo");
-        tag.doStartTag();
-        assertEquals("bar",
-                     (String) component.getAttributes().get("foo"));
-        tag.doEndTag();
-        
-    }
-
-
-    // Test expression name and expression value
-    public void testExpressionExpression() throws Exception {
-
-        UIComponent component = ((UIComponentTag) ctag).getComponentInstance();
-        assertNotNull(component);
-        assertTrue(!component.getAttributes().containsKey("foo"));
-        AttributeTag tag = new AttributeTag();
-        tag.setName("#{fooValue}");
-        tag.setValue("#{barValue}");
-        add(tag);
-        request.setAttribute("fooValue", "foo");
-        request.setAttribute("barValue", "bar");
-        tag.doStartTag();
-        assertEquals("bar",
-                     (String) component.getAttributes().get("foo"));
-        tag.doEndTag();
-        
-    }
-
-
-    // Test pre-existing attribute
-    public void testPreExisting() throws Exception {
-
-        UIComponent component = ((UIComponentTag) ctag).getComponentInstance();
-        assertNotNull(component);
-        component.getAttributes().put("foo", "bap");
-        AttributeTag tag = new AttributeTag();
-        tag.setName("foo");
-        tag.setValue("bar");
-        add(tag);
-        tag.doStartTag();
-        assertEquals("bap",
-                     (String) component.getAttributes().get("foo"));
-        tag.doEndTag();
-        
-    }
-
-
-    // ------------------------------------------------------- Protected Methods
-
-
-    // Add the specified AttributeTag to our component tag
-    protected void add(AttributeTag tag) {
-
-        tag.setParent(root);
-        tag.setPageContext(this.pageContext);
-
-    }
-
-
-}
diff --git a/jsf-api/src/test/java/javax/faces/webapp/ConfigAttribute.java b/jsf-api/src/test/java/javax/faces/webapp/ConfigAttribute.java
deleted file mode 100644
index 8e74e21..0000000
--- a/jsf-api/src/test/java/javax/faces/webapp/ConfigAttribute.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package javax.faces.webapp;
-
-
-/**
- * <p>Config Bean for an Attribute.</p>
- */
-public class ConfigAttribute extends ConfigFeature {
-
-    private String attributeClass;
-    public String getAttributeClass() {
-        return (this.attributeClass);
-    }
-    public void setAttributeClass(String attributeClass) {
-        this.attributeClass = attributeClass;
-    }
-
-    private String attributeName;
-    public String getAttributeName() {
-        return (this.attributeName);
-    }
-    public void setAttributeName(String attributeName) {
-        this.attributeName = attributeName;
-    }
-
-}
diff --git a/jsf-api/src/test/java/javax/faces/webapp/ConfigBase.java b/jsf-api/src/test/java/javax/faces/webapp/ConfigBase.java
deleted file mode 100644
index 42a4fd0..0000000
--- a/jsf-api/src/test/java/javax/faces/webapp/ConfigBase.java
+++ /dev/null
@@ -1,144 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package javax.faces.webapp;
-
-
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Map;
-
-
-/**
- * <p>Base bean for parsing configuration information.</p>
- */
-public class ConfigBase {
-
-
-    // ---------------------------------------------------------- <application>
-
-
-    private String actionListener = null;
-    public String getActionListener() {
-        return (this.actionListener);
-    }
-    public void setActionListener(String actionListener) {
-        this.actionListener = actionListener;
-    }
-
-    private String navigationHandler = null;
-    public String getNavigationHandler() {
-        return (this.navigationHandler);
-    }
-    public void setNavigationHandler(String navigationHandler) {
-        this.navigationHandler = navigationHandler;
-    }
-
-    private String propertyResolver = null;
-    public String getPropertyResolver() {
-        return (this.propertyResolver);
-    }
-    public void setPropertyResolver(String propertyResolver) {
-        this.propertyResolver = propertyResolver;
-    }
-
-    private String variableResolver = null;
-    public String getVariableResolver() {
-        return (this.variableResolver);
-    }
-    public void setVariableResolver(String variableResolver) {
-        this.variableResolver = variableResolver;
-    }
-
-
-    // ------------------------------------------------------------ <component>
-
-
-    private Map components = null;
-    public void addComponent(ConfigComponent component) {
-        if (components == null) {
-            components = new HashMap();
-        }
-        components.put(component.getComponentType(), component);
-    }
-    public Map getComponents() {
-        if (components == null) {
-            return (Collections.EMPTY_MAP);
-        } else {
-            return (this.components);
-        }
-    }
-
-
-    // ------------------------------------------------------------ <converter>
-
-
-    private Map converters = null;
-    public void addConverter(ConfigConverter converter) {
-        if (converters == null) {
-            converters = new HashMap();
-        }
-        converters.put(converter.getConverterId(), converter);
-    }
-    public Map getConverters() {
-        if (converters == null) {
-            return (Collections.EMPTY_MAP);
-        } else {
-            return (this.converters);
-        }
-    }
-
-
-    // ------------------------------------------------------------ <validator>
-
-
-    private Map validators = null;
-    public void addValidator(ConfigValidator validator) {
-        if (validators == null) {
-            validators = new HashMap();
-        }
-        validators.put(validator.getValidatorId(), validator);
-    }
-    public Map getValidators() {
-        if (validators == null) {
-            return (Collections.EMPTY_MAP);
-        } else {
-            return (this.validators);
-        }
-    }
-
-
-}
diff --git a/jsf-api/src/test/java/javax/faces/webapp/ConfigComponent.java b/jsf-api/src/test/java/javax/faces/webapp/ConfigComponent.java
deleted file mode 100644
index f38f1eb..0000000
--- a/jsf-api/src/test/java/javax/faces/webapp/ConfigComponent.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package javax.faces.webapp;
-
-
-/**
- * <p>Config Bean for an Component.</p>
- */
-public class ConfigComponent extends ConfigFeature {
-
-    private String componentClass;
-    public String getComponentClass() {
-        return (this.componentClass);
-    }
-    public void setComponentClass(String componentClass) {
-        this.componentClass = componentClass;
-    }
-
-    private String componentType;
-    public String getComponentType() {
-        return (this.componentType);
-    }
-    public void setComponentType(String componentType) {
-        this.componentType = componentType;
-    }
-
-}
diff --git a/jsf-api/src/test/java/javax/faces/webapp/ConfigConverter.java b/jsf-api/src/test/java/javax/faces/webapp/ConfigConverter.java
deleted file mode 100644
index 2085473..0000000
--- a/jsf-api/src/test/java/javax/faces/webapp/ConfigConverter.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package javax.faces.webapp;
-
-
-/**
- * <p>Config Bean for a Converter.</p>
- */
-public class ConfigConverter extends ConfigFeature {
-
-    private String converterId;
-    public String getConverterId() {
-        return (this.converterId);
-    }
-    public void setConverterId(String converterId) {
-        this.converterId = converterId;
-    }
-
-    private String converterClass;
-    public String getConverterClass() {
-        return (this.converterClass);
-    }
-    public void setConverterClass(String converterClass) {
-        this.converterClass = converterClass;
-    }
-
-}
diff --git a/jsf-api/src/test/java/javax/faces/webapp/ConfigFeature.java b/jsf-api/src/test/java/javax/faces/webapp/ConfigFeature.java
deleted file mode 100644
index 568c58c..0000000
--- a/jsf-api/src/test/java/javax/faces/webapp/ConfigFeature.java
+++ /dev/null
@@ -1,119 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package javax.faces.webapp;
-
-
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Map;
-
-
-/**
- * <p>Base bean for configuration beans that have common feature elements.</p>
- */
-public abstract class ConfigFeature {
-
-
-    private Map attributes = null;
-    public void addAttribute(ConfigAttribute attribute) {
-        if (attributes == null) {
-            attributes = new HashMap();
-        }
-        attributes.put(attribute.getAttributeName(), attribute);
-    }
-    public Map getAttributes() {
-        if (attributes == null) {
-            return (Collections.EMPTY_MAP);
-        } else {
-            return (attributes);
-        }
-    }
-
-
-    private String description;
-    public String getDescription() {
-        return (this.description);
-    }
-    public void setDescription(String description) {
-        this.description = description;
-    }
-
-
-    private String displayName;
-    public String getDisplayName() {
-        return (this.displayName);
-    }
-    public void setDisplayName(String displayName) {
-        this.displayName = displayName;
-    }
-
-
-    private String largeIcon;
-    public String getLargeIcon() {
-        return (this.largeIcon);
-    }
-    public void setLargeIcon(String largeIcon) {
-        this.largeIcon = largeIcon;
-    }
-
-
-    private Map properties = null;
-    public void addProperty(ConfigProperty property) {
-        if (properties == null) {
-            properties = new HashMap();
-        }
-        properties.put(property.getPropertyName(), property);
-    }
-    public Map getProperties() {
-        if (properties == null) {
-            return (Collections.EMPTY_MAP);
-        } else {
-            return (properties);
-        }
-    }
-
-
-    private String smallIcon;
-    public String getSmallIcon() {
-        return (this.smallIcon);
-    }
-    public void setSmallIcon(String smallIcon) {
-        this.smallIcon = smallIcon;
-    }
-
-
-}
diff --git a/jsf-api/src/test/java/javax/faces/webapp/ConfigFileTestCase.java b/jsf-api/src/test/java/javax/faces/webapp/ConfigFileTestCase.java
deleted file mode 100644
index a6dfae0..0000000
--- a/jsf-api/src/test/java/javax/faces/webapp/ConfigFileTestCase.java
+++ /dev/null
@@ -1,483 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package javax.faces.webapp;
-
-import java.io.File;
-import java.io.InputStream;
-import java.io.IOException;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import junit.framework.TestCase;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-import org.apache.commons.digester.Digester;
-
-import org.xml.sax.InputSource;
-import com.sun.faces.config.DigesterFactory;
-
-/**
- * <p>Unit tests for Configuration File processing.</p>
- */
-
-public class ConfigFileTestCase extends TestCase {
-
-
-    // The public identifier of our DTD
-    protected String CONFIG_DTD_PUBLIC_ID =
-        "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.0//EN";
-
-
-    // ----------------------------------------------------- Instance Variables
-
-
-    /**
-     * The Digester instance we will use to parse configuration files.
-     */
-    protected Digester digester = null;
-
-
-
-    // ----------------------------------------------------------- Constructors
-
-
-    /**
-     * Construct a new instance of this test case.
-     *
-     * @param name Name of the test case
-     */
-    public ConfigFileTestCase(String name) {
-
-        super(name);
-
-    }
-
-
-    // --------------------------------------------------- Overall Test Methods
-
-
-    /**
-     * Set up instance variables required by this test case.
-     */
-    public void setUp() throws Exception {
-
-        digester = createDigester();
-        configureRules(digester);
-
-    }
-
-
-    /**
-     * Return the tests included in this test suite.
-     */
-    public static Test suite() {
-
-        return (new TestSuite(ConfigFileTestCase.class));
-
-    }
-
-    /**
-     * Tear down instance variables required by this test case.
-     */
-    public void tearDown() {
-
-        digester = null;
-
-    }
-
-
-    // ------------------------------------------------ Individual Test Methods
-
-
-    // Test parsing an empty configuration file
-    public void testEmpty() throws Exception {
-
-        ConfigBase base =
-            parseConfig(relativeURL("test/javax/faces/webapp/config-file-0.xml"));
-        assertNotNull(base);
-
-    }
-
-
-    // Test parsing a full configuration file
-    public void testFull() throws Exception {
-
-        // Retrieve entire configuration metadata instance
-        ConfigBase base =
-            parseConfig(relativeURL("test/javax/faces/webapp/config-file-1.xml"));
-        assertNotNull(base);
-
-        // <application>
-        assertEquals("com.mycompany.MyActionListener",
-                     base.getActionListener());
-        assertEquals("com.mycompany.MyNavigationHandler",
-                     base.getNavigationHandler());
-        assertEquals("com.mycompany.MyPropertyResolver",
-                     base.getPropertyResolver());
-        assertEquals("com.mycompany.MyVariableResolver",
-                     base.getVariableResolver());
-
-        // <component>
-        Map components = base.getComponents();
-        assertNotNull(components);
-        ConfigComponent ccomp1 = (ConfigComponent) components.get("Command");
-        assertNotNull(ccomp1);
-        assertEquals("User Interface Command Component",
-                     ccomp1.getDescription());
-        assertEquals("User Interface Command",
-                     ccomp1.getDisplayName());
-        assertEquals("Command",
-                     ccomp1.getComponentType());
-        assertEquals("javax.faces.component.UICommand",
-                     ccomp1.getComponentClass());
-        assertNull(ccomp1.getLargeIcon());
-        assertNull(ccomp1.getSmallIcon());
-        assertEquals(0, ccomp1.getAttributes().size());
-        assertEquals(0, ccomp1.getProperties().size());
-
-        // <converter>
-        Map converters = base.getConverters();
-        assertNotNull(converters);
-        ConfigConverter cc1 = (ConfigConverter) converters.get("First");
-        assertNotNull(cc1);
-        assertEquals("First Converter Description",
-                     cc1.getDescription());
-        assertEquals("First Converter Display Name",
-                     cc1.getDisplayName());
-        assertEquals("firstConverter.gif",
-                     cc1.getLargeIcon());
-        assertEquals("firstConverter.jpg",
-                     cc1.getSmallIcon());
-        assertEquals("First",
-                     cc1.getConverterId());
-        assertEquals("com.mycompany.MyFirstConverter",
-                     cc1.getConverterClass());
-        assertEquals(1, cc1.getAttributes().size());
-        ConfigAttribute cc1a1 =
-            (ConfigAttribute) cc1.getAttributes().get("attr1");
-        assertNotNull(cc1a1);
-        assertEquals("First Converter Attribute 1 Description",
-                     cc1a1.getDescription());
-        assertEquals("First Converter Attribute 1 Display Name",
-                     cc1a1.getDisplayName());
-        assertNull(cc1a1.getLargeIcon());
-        assertNull(cc1a1.getSmallIcon());
-        assertEquals("attr1",
-                     cc1a1.getAttributeName());
-        assertEquals("java.lang.String",
-                     cc1a1.getAttributeClass());
-        assertEquals(0, cc1.getProperties().size());
-        ConfigConverter cc2 = (ConfigConverter) converters.get("Second");
-        assertNotNull(cc2);
-        assertEquals("Second Converter Description",
-                     cc2.getDescription());
-        assertEquals("Second Converter Display Name",
-                     cc2.getDisplayName());
-        assertEquals("secondConverter.gif",
-                     cc2.getLargeIcon());
-        assertEquals("secondConverter.jpg",
-                     cc2.getSmallIcon());
-        assertEquals("Second",
-                     cc2.getConverterId());
-        assertEquals("com.mycompany.MySecondConverter",
-                     cc2.getConverterClass());
-        assertEquals(0, cc2.getAttributes().size());
-        assertEquals(1, cc2.getProperties().size());
-        ConfigProperty cc2p1 =
-            (ConfigProperty) cc2.getProperties().get("prop1");
-        assertNotNull(cc2p1);
-        assertEquals("Second Converter Property 1 Description",
-                     cc2p1.getDescription());
-        assertEquals("Second Converter Property 1 Display Name",
-                     cc2p1.getDisplayName());
-        assertNull(cc2p1.getLargeIcon());
-        assertNull(cc2p1.getSmallIcon());
-        assertEquals("prop1",
-                     cc2p1.getPropertyName());
-        assertEquals("java.lang.String",
-                     cc2p1.getPropertyClass());
-
-        // <validator>
-        Map validators = base.getValidators();
-        assertNotNull(validators);
-        ConfigValidator cv1 = (ConfigValidator) validators.get("First");
-        assertNotNull(cv1);
-        assertEquals("First Validator Description",
-                     cv1.getDescription());
-        assertEquals("First Validator Display Name",
-                     cv1.getDisplayName());
-        assertEquals("firstValidator.gif",
-                     cv1.getLargeIcon());
-        assertEquals("firstValidator.jpg",
-                     cv1.getSmallIcon());
-        assertEquals("First",
-                     cv1.getValidatorId());
-        assertEquals("com.mycompany.MyFirstValidator",
-                     cv1.getValidatorClass());
-        assertEquals(1, cv1.getAttributes().size());
-        ConfigAttribute cv1a1 =
-            (ConfigAttribute) cv1.getAttributes().get("attr1");
-        assertNotNull(cv1a1);
-        assertEquals("First Validator Attribute 1 Description",
-                     cv1a1.getDescription());
-        assertEquals("First Validator Attribute 1 Display Name",
-                     cv1a1.getDisplayName());
-        assertNull(cv1a1.getLargeIcon());
-        assertNull(cv1a1.getSmallIcon());
-        assertEquals("attr1",
-                     cv1a1.getAttributeName());
-        assertEquals("java.lang.String",
-                     cv1a1.getAttributeClass());
-        assertEquals(0, cv1.getProperties().size());
-        ConfigValidator cv2 = (ConfigValidator) validators.get("Second");
-        assertNotNull(cv2);
-        assertEquals("Second Validator Description",
-                     cv2.getDescription());
-        assertEquals("Second Validator Display Name",
-                     cv2.getDisplayName());
-        assertEquals("secondValidator.gif",
-                     cv2.getLargeIcon());
-        assertEquals("secondValidator.jpg",
-                     cv2.getSmallIcon());
-        assertEquals("Second",
-                     cv2.getValidatorId());
-        assertEquals("com.mycompany.MySecondValidator",
-                     cv2.getValidatorClass());
-        assertEquals(0, cv2.getAttributes().size());
-        assertEquals(1, cv2.getProperties().size());
-        ConfigProperty cv2p1 =
-            (ConfigProperty) cv2.getProperties().get("prop1");
-        assertNotNull(cv2p1);
-        assertEquals("Second Validator Property 1 Description",
-                     cv2p1.getDescription());
-        assertEquals("Second Validator Property 1 Display Name",
-                     cv2p1.getDisplayName());
-        assertNull(cv2p1.getLargeIcon());
-        assertNull(cv2p1.getSmallIcon());
-        assertEquals("prop1",
-                     cv2p1.getPropertyName());
-        assertEquals("java.lang.String",
-                     cv2p1.getPropertyClass());
-
-    }
-
-
-    // Test a pristine Digester instance
-    public void testPristine() {
-    }
-
-
-    // ------------------------------------------------------ Protected Methods
-
-
-    // Create a Digester instance with no rules yet
-    protected Digester createDigester() throws Exception {
-
-        digester = DigesterFactory.newInstance(true).createDigester();        
-        return (digester);
-
-    }
-
-
-    // Configure the matching rules for the specified Digester instance
-    // Rules assume that a ConfigBase bean is pushed on the stack first
-    protected void configureRules(Digester digester) {
-
-        configureRulesApplication(digester);
-        configureRulesConverter(digester);
-        configureRulesComponent(digester);
-        configureRulesValidator(digester);
-
-    }
-
-
-    // Configure the rules for an <application> element
-    protected void configureRulesApplication(Digester digester) {
-
-        digester.addCallMethod("faces-config/application/action-listener",
-                               "setActionListener", 0);
-        digester.addCallMethod("faces-config/application/navigation-handler",
-                               "setNavigationHandler", 0);
-        digester.addCallMethod("faces-config/application/property-resolver",
-                               "setPropertyResolver", 0);
-        digester.addCallMethod("faces-config/application/variable-resolver",
-                               "setVariableResolver", 0);
-
-    }
-
-
-    // Configure the rules for a <attribute> element
-    protected void configureRulesAttribute(Digester digester, String prefix) {
-
-        digester.addObjectCreate(prefix,
-                                 "javax.faces.webapp.ConfigAttribute");
-        digester.addSetNext(prefix,
-                            "addAttribute",
-                            "javax.faces.webapp.ConfigAttribute");
-        configureRulesFeature(digester, prefix);
-        digester.addCallMethod(prefix + "/attribute-name",
-                               "setAttributeName", 0);
-        digester.addCallMethod(prefix + "/attribute-class",
-                               "setAttributeClass", 0);
-
-    }
-
-
-    // Configure the rules for a <component> element
-    protected void configureRulesComponent(Digester digester) {
-
-        String prefix = "faces-config/component";
-
-        digester.addObjectCreate(prefix,
-                                 "javax.faces.webapp.ConfigComponent");
-        digester.addSetNext(prefix,
-                            "addComponent",
-                            "javax.faces.webapp.ConfigComponent");
-        configureRulesFeature(digester, prefix);
-        digester.addCallMethod(prefix + "/component-type",
-                               "setComponentType", 0);
-        digester.addCallMethod(prefix + "/component-class",
-                               "setComponentClass", 0);
-        configureRulesAttribute(digester, prefix + "/attribute");
-        configureRulesProperty(digester, prefix + "/property");
-
-    }
-
-
-    // Configure the rules for a <converter> element
-    protected void configureRulesConverter(Digester digester) {
-
-        String prefix = "faces-config/converter";
-
-        digester.addObjectCreate(prefix,
-                                 "javax.faces.webapp.ConfigConverter");
-        digester.addSetNext(prefix,
-                            "addConverter",
-                            "javax.faces.webapp.ConfigConverter");
-        configureRulesFeature(digester, prefix);
-        digester.addCallMethod(prefix + "/converter-id",
-                               "setConverterId", 0);
-        digester.addCallMethod(prefix + "/converter-class",
-                               "setConverterClass", 0);
-        configureRulesAttribute(digester, prefix + "/attribute");
-        configureRulesProperty(digester, prefix + "/property");
-
-    }
-
-
-    // Configure the generic feature rules for the specified prefix
-    protected void configureRulesFeature(Digester digester, String prefix) {
-
-        digester.addCallMethod(prefix + "/description",
-                               "setDescription", 0);
-        digester.addCallMethod(prefix + "/display-name",
-                               "setDisplayName", 0);
-        digester.addCallMethod(prefix + "/icon/large-icon",
-                               "setLargeIcon", 0);
-        digester.addCallMethod(prefix + "/icon/small-icon",
-                               "setSmallIcon", 0);
-
-    }
-
-
-    // Configure the rules for a <property> element
-    protected void configureRulesProperty(Digester digester, String prefix) {
-
-        digester.addObjectCreate(prefix,
-                                 "javax.faces.webapp.ConfigProperty");
-        digester.addSetNext(prefix,
-                            "addProperty",
-                            "javax.faces.webapp.ConfigProperty");
-        configureRulesFeature(digester, prefix);
-        digester.addCallMethod(prefix + "/property-name",
-                               "setPropertyName", 0);
-        digester.addCallMethod(prefix + "/property-class",
-                               "setPropertyClass", 0);
-
-    }
-
-
-    // Configure the rules for a <validator> element
-    protected void configureRulesValidator(Digester digester) {
-
-        String prefix = "faces-config/validator";
-
-        digester.addObjectCreate(prefix,
-                                 "javax.faces.webapp.ConfigValidator");
-        digester.addSetNext(prefix,
-                            "addValidator",
-                            "javax.faces.webapp.ConfigValidator");
-        configureRulesFeature(digester, prefix);
-        digester.addCallMethod(prefix + "/validator-id",
-                               "setValidatorId", 0);
-        digester.addCallMethod(prefix + "/validator-class",
-                               "setValidatorClass", 0);
-        configureRulesAttribute(digester, prefix + "/attribute");
-        configureRulesProperty(digester, prefix + "/property");
-
-    }
-
-
-    // Parse the configuration file at the specified URL
-    protected ConfigBase parseConfig(URL config) throws Exception {
-
-        digester.clear();
-        digester.push(new ConfigBase());
-        InputSource iso = new InputSource(config.toExternalForm());
-        InputStream ist = config.openStream();
-        iso.setByteStream(ist);
-        ConfigBase base = (ConfigBase) digester.parse(iso);
-        ist.close();
-        return (base);
-
-    }
-
-
-    // Return the URL of the specified path, relative to our base directory
-    protected URL relativeURL(String relativePath) throws Exception {
-
-        File file = new File(System.getProperty("base.dir"), relativePath);
-        return (file.toURL());
-
-    }
-
-
-}
diff --git a/jsf-api/src/test/java/javax/faces/webapp/ConfigProperty.java b/jsf-api/src/test/java/javax/faces/webapp/ConfigProperty.java
deleted file mode 100644
index 62969bd..0000000
--- a/jsf-api/src/test/java/javax/faces/webapp/ConfigProperty.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package javax.faces.webapp;
-
-
-/**
- * <p>Config Bean for an Property.</p>
- */
-public class ConfigProperty extends ConfigFeature {
-
-    private String propertyClass;
-    public String getPropertyClass() {
-        return (this.propertyClass);
-    }
-    public void setPropertyClass(String propertyClass) {
-        this.propertyClass = propertyClass;
-    }
-
-    private String propertyName;
-    public String getPropertyName() {
-        return (this.propertyName);
-    }
-    public void setPropertyName(String propertyName) {
-        this.propertyName = propertyName;
-    }
-
-}
diff --git a/jsf-api/src/test/java/javax/faces/webapp/ConfigValidator.java b/jsf-api/src/test/java/javax/faces/webapp/ConfigValidator.java
deleted file mode 100644
index c5e7dbe..0000000
--- a/jsf-api/src/test/java/javax/faces/webapp/ConfigValidator.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package javax.faces.webapp;
-
-
-/**
- * <p>Config Bean for a Validator.</p>
- */
-public class ConfigValidator extends ConfigFeature {
-
-    private String validatorId;
-    public String getValidatorId() {
-        return (this.validatorId);
-    }
-    public void setValidatorId(String validatorId) {
-        this.validatorId = validatorId;
-    }
-
-    private String validatorClass;
-    public String getValidatorClass() {
-        return (this.validatorClass);
-    }
-    public void setValidatorClass(String validatorClass) {
-        this.validatorClass = validatorClass;
-    }
-
-}
diff --git a/jsf-api/src/test/java/javax/faces/webapp/ConverterTagTestCase.java b/jsf-api/src/test/java/javax/faces/webapp/ConverterTagTestCase.java
deleted file mode 100644
index 43096c2..0000000
--- a/jsf-api/src/test/java/javax/faces/webapp/ConverterTagTestCase.java
+++ /dev/null
@@ -1,214 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package javax.faces.webapp;
-
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import javax.faces.FactoryFinder;
-import javax.faces.application.Application;
-import javax.faces.application.ApplicationFactory;
-import javax.faces.component.ValueHolder;
-import javax.faces.component.NamingContainer;
-import javax.faces.component.UIComponent;
-import javax.faces.component.UIViewRoot;
-import javax.faces.context.FacesContext;
-import javax.faces.convert.Converter;
-import javax.faces.convert.IntegerConverter;
-import javax.faces.event.FacesEvent;
-import javax.faces.render.RenderKit;
-import javax.faces.render.RenderKitFactory;
-import javax.faces.validator.Validator;
-import javax.servlet.jsp.JspException;
-import javax.servlet.jsp.PageContext;
-import javax.servlet.jsp.tagext.Tag;
-import junit.framework.TestCase;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-import com.sun.faces.mock.MockApplication;
-import com.sun.faces.mock.MockExternalContext;
-import com.sun.faces.mock.MockFacesContext;
-import com.sun.faces.mock.MockHttpServletRequest;
-import com.sun.faces.mock.MockHttpServletResponse;
-import com.sun.faces.mock.MockHttpSession;
-import com.sun.faces.mock.MockJspWriter;
-import com.sun.faces.mock.MockLifecycle;
-import com.sun.faces.mock.MockPageContext;
-import com.sun.faces.mock.MockRenderKit;
-import com.sun.faces.mock.MockRenderKitFactory;
-import com.sun.faces.mock.MockServlet;
-import com.sun.faces.mock.MockServletConfig;
-import com.sun.faces.mock.MockServletContext;
-
-
-/**
- * <p>Unit tests for <code>ConverterTag</code>.</p>
- */
-
-public class ConverterTagTestCase extends TagTestCaseBase {
-
-
-    // ------------------------------------------------------ Instance Variables
-
-
-    protected UIComponentTag ctag = null; // Component tag
-    protected UIComponentTag rtag = null; // Root tag
-
-
-    // ------------------------------------------------------------ Constructors
-
-
-    /**
-     * Construct a new instance of this test case.
-     *
-     * @param name Name of the test case
-     */
-    public ConverterTagTestCase(String name) {
-
-        super(name);
-
-    }
-
-
-    // ---------------------------------------------------- Overall Test Methods
-
-
-    /**
-     * Set up our root and component tags.
-     */
-    public void setUp() throws Exception {
-
-        super.setUp();
-
-        rtag = new TestTag("ROOT", "root") {
-                protected void setProperties(UIComponent component) {
-                }
-            };
-        rtag.setPageContext(this.pageContext);
-        ctag = new TestOutputTag();
-        ctag.setParent(this.rtag);
-        ctag.setPageContext(this.pageContext);
-
-        rtag.doStartTag();
-        ctag.doStartTag();
-
-    }
-
-
-    /**
-     * Return the tests included in this test suite.
-     */
-    public static Test suite() {
-
-        return (new TestSuite(ConverterTagTestCase.class));
-
-    }
-
-
-    /**
-     * Clear our root and component tags.
-     */
-    public void tearDown() throws Exception {
-
-        ctag.doEndTag();
-        rtag.doEndTag();
-
-        ctag = null;
-        rtag = null;
-
-        super.tearDown();
-
-    }
-
-
-    // ------------------------------------------------- Individual Test Methods
-
-
-    // Test literal converter id
-    public void testLiteral() throws Exception {
-
-        UIComponent component = ctag.getComponentInstance();
-        assertNotNull(component);
-        assertNull(((ValueHolder) component).getConverter());
-        ConverterTag tag = new ConverterTag();
-        tag.setConverterId("Integer");
-        add(tag);
-        tag.doStartTag();
-        Converter converter = ((ValueHolder) component).getConverter();
-        assertNotNull(converter);
-        assertTrue(converter instanceof IntegerConverter);
-        tag.doEndTag();
-        
-    }
-
-    // Test expression converter id
-    public void testExpression() throws Exception {
-
-        UIComponent component = ctag.getComponentInstance();
-        assertNotNull(component);
-        assertNull(((ValueHolder) component).getConverter());
-        ConverterTag tag = new ConverterTag();
-        tag.setConverterId("#{foo}");
-        add(tag);
-        request.setAttribute("foo", "Integer");
-        tag.doStartTag();
-        Converter converter = ((ValueHolder) component).getConverter();
-        assertNotNull(converter);
-        assertTrue(converter instanceof IntegerConverter);
-        tag.doEndTag();
-        
-    }
-
-
-    // ------------------------------------------------------- Protected Methods
-
-
-    // Add the specified ConverterTag to our component tag
-    protected void add(ConverterTag tag) {
-
-        tag.setParent(ctag);
-        tag.setPageContext(this.pageContext);
-
-    }
-
-
-}
diff --git a/jsf-api/src/test/java/javax/faces/webapp/FacetTagTestCase.java b/jsf-api/src/test/java/javax/faces/webapp/FacetTagTestCase.java
deleted file mode 100644
index 9e2dd21..0000000
--- a/jsf-api/src/test/java/javax/faces/webapp/FacetTagTestCase.java
+++ /dev/null
@@ -1,186 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package javax.faces.webapp;
-
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import javax.faces.FactoryFinder;
-import javax.faces.application.Application;
-import javax.faces.application.ApplicationFactory;
-import javax.faces.component.NamingContainer;
-import javax.faces.component.UIComponent;
-import javax.faces.component.UIOutput;
-import javax.faces.component.UIViewRoot;
-import javax.faces.context.FacesContext;
-import javax.faces.event.FacesEvent;
-import javax.faces.render.RenderKit;
-import javax.faces.render.RenderKitFactory;
-import javax.faces.validator.Validator;
-import javax.servlet.jsp.JspException;
-import javax.servlet.jsp.PageContext;
-import javax.servlet.jsp.tagext.Tag;
-import junit.framework.TestCase;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-import com.sun.faces.mock.MockApplication;
-import com.sun.faces.mock.MockExternalContext;
-import com.sun.faces.mock.MockFacesContext;
-import com.sun.faces.mock.MockHttpServletRequest;
-import com.sun.faces.mock.MockHttpServletResponse;
-import com.sun.faces.mock.MockHttpSession;
-import com.sun.faces.mock.MockJspWriter;
-import com.sun.faces.mock.MockLifecycle;
-import com.sun.faces.mock.MockPageContext;
-import com.sun.faces.mock.MockRenderKit;
-import com.sun.faces.mock.MockRenderKitFactory;
-import com.sun.faces.mock.MockServlet;
-import com.sun.faces.mock.MockServletConfig;
-import com.sun.faces.mock.MockServletContext;
-
-
-/**
- * <p>Unit tests for <code>FacetTag</code>.</p>
- */
-
-public class FacetTagTestCase extends TagTestCaseBase {
-
-
-    // ------------------------------------------------------ Instance Variables
-
-
-    protected UIComponentTag ctag = null; // Component tag
-    protected FacetTag ftag = null;       // Facet tag
-    protected UIComponentTag rtag = null; // Root tag
-
-
-    // ------------------------------------------------------------ Constructors
-
-
-    /**
-     * Construct a new instance of this test case.
-     *
-     * @param name Name of the test case
-     */
-    public FacetTagTestCase(String name) {
-
-        super(name);
-
-    }
-
-
-    // ---------------------------------------------------- Overall Test Methods
-
-
-    /**
-     * Set up our root and component tags.
-     */
-    public void setUp() throws Exception {
-
-        super.setUp();
-
-        rtag = new TestTag("ROOT", "root") {
-                protected void setProperties(UIComponent component) {
-                }
-            };
-        rtag.setPageContext(this.pageContext);
-
-        ftag = new FacetTag();
-        ftag.setPageContext(this.pageContext);
-        ftag.setParent(this.rtag);
-
-        ctag = new TestOutputTag();
-        ctag.setPageContext(this.pageContext);
-        ctag.setParent(this.ftag);
-
-    }
-
-
-    /**
-     * Return the tests included in this test suite.
-     */
-    public static Test suite() {
-
-        return (new TestSuite(FacetTagTestCase.class));
-
-    }
-
-
-    /**
-     * Clear our root and component tags.
-     */
-    public void tearDown() throws Exception {
-
-        ctag = null;
-        ftag = null;
-        rtag = null;
-
-        super.tearDown();
-
-    }
-
-
-    // ------------------------------------------------- Individual Test Methods
-
-
-    // Test literal facet name
-    public void testLiteral() throws Exception {
-
-        rtag.doStartTag();
-        ftag.setName("foo");
-        ftag.doStartTag();
-        ctag.doStartTag();
-
-        UIComponent component = rtag.getComponentInstance();
-        assertNotNull(component);
-        UIComponent facet = component.getFacet("foo");
-        assertNotNull(facet);
-        assertTrue(facet instanceof UIOutput);
-        
-        ctag.doEndTag();
-        ftag.doEndTag();
-        rtag.doEndTag();
-
-    }
-
-
-}
diff --git a/jsf-api/src/test/java/javax/faces/webapp/NamingTag.java b/jsf-api/src/test/java/javax/faces/webapp/NamingTag.java
deleted file mode 100644
index 40769e6..0000000
--- a/jsf-api/src/test/java/javax/faces/webapp/NamingTag.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package javax.faces.webapp;
-
-
-import javax.faces.component.UIComponent;
-
-
-// Test UINamingContainer Tag
-public class NamingTag extends UIComponentTag {
-
-    public String getComponentType() {
-        return ("TestNamingContainer");
-    }
-
-    public String getRendererType() {
-        return (null);
-    }
-
-}
diff --git a/jsf-api/src/test/java/javax/faces/webapp/TagTestCaseBase.java b/jsf-api/src/test/java/javax/faces/webapp/TagTestCaseBase.java
deleted file mode 100644
index d048d7d..0000000
--- a/jsf-api/src/test/java/javax/faces/webapp/TagTestCaseBase.java
+++ /dev/null
@@ -1,191 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package javax.faces.webapp;
-
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import javax.faces.FactoryFinder;
-import javax.faces.application.Application;
-import javax.faces.application.ApplicationFactory;
-import javax.faces.component.NamingContainer;
-import javax.faces.component.UIComponent;
-import javax.faces.component.UIViewRoot;
-import javax.faces.context.FacesContext;
-import javax.faces.event.FacesEvent;
-import javax.faces.render.RenderKit;
-import javax.faces.render.RenderKitFactory;
-import javax.faces.validator.Validator;
-import javax.servlet.jsp.JspException;
-import javax.servlet.jsp.PageContext;
-import javax.servlet.jsp.tagext.Tag;
-import junit.framework.TestCase;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-import com.sun.faces.mock.MockApplication;
-import com.sun.faces.mock.MockExternalContext;
-import com.sun.faces.mock.MockFacesContext;
-import com.sun.faces.mock.MockHttpServletRequest;
-import com.sun.faces.mock.MockHttpServletResponse;
-import com.sun.faces.mock.MockHttpSession;
-import com.sun.faces.mock.MockJspWriter;
-import com.sun.faces.mock.MockLifecycle;
-import com.sun.faces.mock.MockPageContext;
-import com.sun.faces.mock.MockRenderKit;
-import com.sun.faces.mock.MockRenderKitFactory;
-import com.sun.faces.mock.MockServlet;
-import com.sun.faces.mock.MockServletConfig;
-import com.sun.faces.mock.MockServletContext;
-
-
-/**
- * <p>Base unit tests for all UIComponentTag classes.</p>
- */
-
-public class TagTestCaseBase extends TestCase {
-
-
-    // ----------------------------------------------------- Instance Variables
-
-
-    protected MockApplication         application = null;
-    protected MockServletConfig       config = null;
-    protected MockExternalContext     externalContext = null;
-    protected MockFacesContext        facesContext = null;
-    protected MockLifecycle           lifecycle = null;
-    protected MockPageContext         pageContext = null;
-    protected MockHttpServletRequest  request = null;
-    protected MockHttpServletResponse response = null;
-    protected MockServlet             servlet = null;
-    protected MockServletContext      servletContext = null;
-    protected MockHttpSession         session = null;
-
-    protected Tag                     root = null;
-
-
-    // ---------------------------------------------------------- Constructors
-
-
-    /**
-     * Construct a new instance of this test case.
-     *
-     * @param name Name of the test case
-     */
-    public TagTestCaseBase(String name) {
-
-        super(name);
-
-    }
-
-
-    // -------------------------------------------------- Overall Test Methods
-
-
-    /**
-     * Set up instance variables required by this test case.
-     */
-    public void setUp() throws Exception {
-
-        // Set up Servlet API Objects
-        servletContext = new MockServletContext();
-        config = new MockServletConfig(servletContext);
-        servlet = new MockServlet(config);
-        session = new MockHttpSession();
-        request = new MockHttpServletRequest(session);
-        response = new MockHttpServletResponse();
-
-        // Set up JSP API Objects
-        pageContext = new MockPageContext();
-        pageContext.initialize(servlet, request, response, null,
-                               true, 1024, true);
-
-        // Set up Faces API Objects
-	FactoryFinder.setFactory(FactoryFinder.APPLICATION_FACTORY,
-				 "com.sun.faces.mock.MockApplicationFactory");
-	FactoryFinder.setFactory(FactoryFinder.RENDER_KIT_FACTORY,
-				 "com.sun.faces.mock.MockRenderKitFactory");
-        externalContext =
-            new MockExternalContext(servletContext, request, response);
-        externalContext.setRequestParameterMap(new HashMap());
-        lifecycle = new MockLifecycle();
-        facesContext = new MockFacesContext(externalContext, lifecycle);
-        ApplicationFactory applicationFactory = (ApplicationFactory)
-            FactoryFinder.getFactory(FactoryFinder.APPLICATION_FACTORY);
-        application = (MockApplication) applicationFactory.getApplication();
-        facesContext.setApplication(application);
-	UIViewRoot root = facesContext.getApplication().getViewHandler().createView(facesContext, null);
-	root.setViewId("/root");
-        facesContext.setViewRoot(root);
-        RenderKitFactory renderKitFactory = (RenderKitFactory)
-            FactoryFinder.getFactory(FactoryFinder.RENDER_KIT_FACTORY);
-        RenderKit renderKit = new MockRenderKit();
-        try {
-            renderKitFactory.addRenderKit(RenderKitFactory.HTML_BASIC_RENDER_KIT,
-                                          renderKit);
-        } catch (IllegalArgumentException e) {
-            ;
-        }
-
-    }
-
-    /**
-     * Tear down instance variables required by this test case.
-     */
-    public void tearDown() throws Exception {
-
-        application = null;
-        config = null;
-        externalContext = null;
-        facesContext = null;
-        lifecycle = null;
-        pageContext = null;
-        request = null;
-        response = null;
-        servlet = null;
-        servletContext = null;
-        session = null;
-
-        root = null;
-
-    }
-
-}
diff --git a/jsf-api/src/test/java/javax/faces/webapp/TestComponent.java b/jsf-api/src/test/java/javax/faces/webapp/TestComponent.java
deleted file mode 100644
index 7e685ce..0000000
--- a/jsf-api/src/test/java/javax/faces/webapp/TestComponent.java
+++ /dev/null
@@ -1,129 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package javax.faces.webapp;
-
-
-import java.io.IOException;
-import javax.faces.component.UIComponentBase;
-import javax.faces.context.FacesContext;
-import javax.faces.context.ResponseWriter;
-import javax.faces.el.ValueBinding;
-
-
-// Test UIComponent Class
-public class TestComponent extends UIComponentBase {
-
-
-    public TestComponent() {
-        super();
-    }
-
-
-    public TestComponent(String id) {
-        super();
-        setId(id);
-    }
-
-
-    public String getFamily() {
-        return ("Test");
-    }
-
-
-    private String label = null;
-
-    public String getLabel() {
-        if (this.label != null) {
-            return (this.label);
-        }
-        ValueBinding vb = getValueBinding("label");
-        if (vb != null) {
-            return ((String) vb.getValue(getFacesContext()));
-        } else {
-            return (null);
-        }
-    }
-
-    public void setLabel(String label) {
-        this.label = label;
-    }
-
-
-    private boolean rendersChildren = false;
-
-    public boolean getRendersChildren() {
-        return (this.rendersChildren);
-    }
-
-    public void setRendersChildren(boolean rendersChildren) {
-        this.rendersChildren = rendersChildren;
-    }
-
-    public void encodeBegin(FacesContext context) throws IOException {
-        if (!isRendered()) {
-            return;
-        }
-        ResponseWriter writer = context.getResponseWriter();
-        writer.write("/b");
-        String id = getId();
-        if (id != null) {
-            writer.write(id);
-        }
-    }
-
-
-    public void encodeChildren(FacesContext context) throws IOException {
-        if (isRendered()) {
-            super.encodeChildren(context);
-        }
-    }
-
-
-    public void encodeEnd(FacesContext context) throws IOException {
-        if (!isRendered()) {
-            return;
-        }
-        ResponseWriter writer = context.getResponseWriter();
-        writer.write("/e");
-        String id = getId();
-        if (id != null) {
-            writer.write(id);
-        }
-    }
-
-
-}
diff --git a/jsf-api/src/test/java/javax/faces/webapp/TestInputTag.java b/jsf-api/src/test/java/javax/faces/webapp/TestInputTag.java
deleted file mode 100644
index 254b97a..0000000
--- a/jsf-api/src/test/java/javax/faces/webapp/TestInputTag.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package javax.faces.webapp;
-
-
-import javax.faces.component.UIComponent;
-import javax.faces.el.ValueBinding;
-
-
-// Test UIInput Tag
-public class TestInputTag extends UIComponentTag {
-
-    public TestInputTag() {
-        super();
-    }
-
-
-    public TestInputTag(String componentId) {
-        super();
-        setId(componentId);
-    }
-
-    private boolean rendersChildren = false;
-    private boolean rendersChildrenSet = false;
-
-    public void setRendersChildren(boolean rendersChildren) {
-        this.rendersChildren = rendersChildren;
-        this.rendersChildrenSet = true;
-    }
-
-    public void release() {
-        super.release();
-        this.rendersChildrenSet = false;
-    }
-
-    public String getComponentType() {
-        return ("TestInput");
-    }
-
-    public String getRendererType() {
-        return ("TestRenderer");
-    }
-
-
-    protected void setProperties(UIComponent component) {
-        super.setProperties(component);
-        if (rendersChildrenSet) {
-            ((TestComponent) component).setRendersChildren(rendersChildren);
-        }
-    }
-
-
-}
diff --git a/jsf-api/src/test/java/javax/faces/webapp/TestOutputTag.java b/jsf-api/src/test/java/javax/faces/webapp/TestOutputTag.java
deleted file mode 100644
index 6dec8cb..0000000
--- a/jsf-api/src/test/java/javax/faces/webapp/TestOutputTag.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package javax.faces.webapp;
-
-
-import javax.faces.component.UIComponent;
-import javax.faces.el.ValueBinding;
-
-
-// Test UIOutput Tag
-public class TestOutputTag extends UIComponentTag {
-
-    public TestOutputTag() {
-        super();
-    }
-
-
-    public TestOutputTag(String componentId) {
-        super();
-        setId(componentId);
-    }
-
-    private boolean rendersChildren = false;
-    private boolean rendersChildrenSet = false;
-
-    public void setRendersChildren(boolean rendersChildren) {
-        this.rendersChildren = rendersChildren;
-        this.rendersChildrenSet = true;
-    }
-
-    public void release() {
-        super.release();
-        this.rendersChildrenSet = false;
-    }
-
-    public String getComponentType() {
-        return ("TestOutput");
-    }
-
-    public String getRendererType() {
-        return ("TestRenderer");
-    }
-
-
-    protected void setProperties(UIComponent component) {
-        super.setProperties(component);
-        if (rendersChildrenSet) {
-            ((TestComponent) component).setRendersChildren(rendersChildren);
-        }
-    }
-
-
-}
diff --git a/jsf-api/src/test/java/javax/faces/webapp/TestTag.java b/jsf-api/src/test/java/javax/faces/webapp/TestTag.java
deleted file mode 100644
index d57f8b9..0000000
--- a/jsf-api/src/test/java/javax/faces/webapp/TestTag.java
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package javax.faces.webapp;
-
-
-import javax.faces.component.UIComponent;
-import javax.faces.el.ValueBinding;
-
-
-// Test UIComponent Tag
-public class TestTag extends UIComponentTag {
-
-    public TestTag() {
-        super();
-    }
-
-
-    public TestTag(String componentId) {
-        this(componentId, componentId);
-    }
-
-    public TestTag(String componentId, String label) {
-        super();
-        setId(componentId);
-        setLabel(label);
-    }
-
-    private String label = null;
-
-    public void setLabel(String label) {
-        this.label = label;
-    }
-
-    private boolean rendersChildren = false;
-    private boolean rendersChildrenSet = false;
-
-    public void setRendersChildren(boolean rendersChildren) {
-        this.rendersChildren = rendersChildren;
-        this.rendersChildrenSet = true;
-    }
-
-    public void release() {
-        super.release();
-        this.label = null;
-        this.rendersChildrenSet = false;
-    }
-
-    public String getComponentType() {
-        return ("TestComponent");
-    }
-
-    public String getRendererType() {
-        return (null);
-    }
-
-
-    protected void setProperties(UIComponent component) {
-        super.setProperties(component);
-        if (rendersChildrenSet) {
-            ((TestComponent) component).setRendersChildren(rendersChildren);
-        }
-        if (label != null) {
-            if (isValueReference(label)) {
-                ValueBinding vb =
-                    getFacesContext().getApplication().
-		    createValueBinding(label);
-                component.setValueBinding("label", vb);
-            } else {
-                ((TestComponent) component).setLabel(label);
-            }
-        }
-    }
-
-
-}
diff --git a/jsf-api/src/test/java/javax/faces/webapp/UIComponentTagTestCase.java b/jsf-api/src/test/java/javax/faces/webapp/UIComponentTagTestCase.java
deleted file mode 100644
index d4b2ffb..0000000
--- a/jsf-api/src/test/java/javax/faces/webapp/UIComponentTagTestCase.java
+++ /dev/null
@@ -1,578 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package javax.faces.webapp;
-
-
-import java.io.IOException;
-import java.io.Writer;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import javax.faces.FactoryFinder;
-import javax.faces.application.Application;
-import javax.faces.application.ApplicationFactory;
-import javax.faces.component.NamingContainer;
-import javax.faces.component.UIComponent;
-import javax.faces.component.UIViewRoot;
-import javax.faces.context.FacesContext;
-import javax.faces.context.ResponseWriter;
-import javax.faces.event.FacesEvent;
-import javax.faces.render.RenderKit;
-import javax.faces.render.RenderKitFactory;
-import javax.faces.validator.Validator;
-import javax.servlet.jsp.JspException;
-import javax.servlet.jsp.PageContext;
-import javax.servlet.jsp.tagext.Tag;
-import junit.framework.TestCase;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-import com.sun.faces.mock.MockApplication;
-import com.sun.faces.mock.MockExternalContext;
-import com.sun.faces.mock.MockFacesContext;
-import com.sun.faces.mock.MockHttpServletRequest;
-import com.sun.faces.mock.MockHttpServletResponse;
-import com.sun.faces.mock.MockHttpSession;
-import com.sun.faces.mock.MockJspWriter;
-import com.sun.faces.mock.MockLifecycle;
-import com.sun.faces.mock.MockPageContext;
-import com.sun.faces.mock.MockRenderKit;
-import com.sun.faces.mock.MockRenderKitFactory;
-import com.sun.faces.mock.MockServlet;
-import com.sun.faces.mock.MockServletConfig;
-import com.sun.faces.mock.MockServletContext;
-
-
-/**
- * <p>Base unit tests for all UIComponentTag classes.</p>
- */
-
-public class UIComponentTagTestCase extends TagTestCaseBase {
-
-
-    // ----------------------------------------------------- Instance Variables
-
-    protected Map                     tags = new HashMap();
-
-
-    // ---------------------------------------------------------- Constructors
-
-
-    /**
-     * Construct a new instance of this test case.
-     *
-     * @param name Name of the test case
-     */
-    public UIComponentTagTestCase(String name) {
-
-        super(name);
-
-    }
-
-
-    // -------------------------------------------------- Overall Test Methods
-
-
-    /**
-     * Return the tests included in this test suite.
-     */
-    public static Test suite() {
-
-        return (new TestSuite(UIComponentTagTestCase.class));
-
-    }
-
-    /**
-     * <p>Since the JSP tag no longer creates the response writer, we
-     * must do it ourselves.</p>
-     */ 
-
-    public void setUp() throws Exception {
-	super.setUp();
-
-        ResponseWriter writer = facesContext.getResponseWriter();
-        if (writer == null) {
-	    RenderKitFactory renderFactory = (RenderKitFactory)
-		FactoryFinder.getFactory(FactoryFinder.RENDER_KIT_FACTORY);
-	    RenderKit renderKit = 
-		renderFactory.getRenderKit
-                (facesContext, facesContext.getViewRoot().getRenderKitId());
-            writer = 
-		renderKit.createResponseWriter(new Writer() {
-		    public void close() throws IOException {
-			pageContext.getOut().close();
-		    }
-		    public void flush() throws IOException {
-                        // PENDING(craigmcc) - causes problems with includes
-			// pageContext.getOut().flush();
-		    }
-                    public void write(char cbuf) throws IOException {
-			pageContext.getOut().write(cbuf);
-		    }
-		    public void write(char[] cbuf, int off, 
-				      int len) throws IOException {
-			pageContext.getOut().write(cbuf, off, len);
-		    }
-		    public void write(int c) throws IOException {
-			pageContext.getOut().write(c);
-		    }
-		    public void write(String str) throws IOException {
-			pageContext.getOut().write(str);
-		    }
-		    public void write(String str, int off, 
-				      int len) throws IOException {
-			pageContext.getOut().write(str, off, len);
-		    }
-		},
-                                               null,
-            pageContext.getRequest().getCharacterEncoding());
-	    
-            facesContext.setResponseWriter(writer);
-	}
-    }
-
-    /**
-     * Tear down instance variables required by this test case.
-     */
-    public void tearDown() throws Exception {
-        tags.clear();
-	super.tearDown();
-
-    }
-
-
-    // ------------------------------------------------ Individual Test Methods
-
-
-    // Test multiple tag rendering with ids
-    public void testMultipleTagWithId() throws Exception {
-
-        configure("C1", "C2", true, false);
-
-        render();
-        assertEquals("/bA/bB1/eB1/bB2/bC1/eC1/bC2/eC2/eB2/bB3/eB3/eA", text());
-        assertEquals("/ROOT/A-a/B1-b1/B2-b2/C1-c1/C2-c2/B3-b3", tree());
-        verifyB2();
-        reset();
-        render();
-        assertEquals("/bA/bB1/eB1/bB2/bC1/eC1/bC2/eC2/eB2/bB3/eB3/eA", text());
-        assertEquals("/ROOT/A-a/B1-b1/B2-b2/C1-c1/C2-c2/B3-b3", tree());
-        verifyB2();
-
-    }
-
-
-    // Test multiple tag rendering with missing id
-    // Scenario 1 -- both ids missing
-    public void testMultipleTagWithoutId1() throws Exception {
-
-        configure(null, null, true, false);
-
-        render();
-        assertEquals("/bA/bB1/eB1/bB2/b" + UIViewRoot.UNIQUE_ID_PREFIX + "0/e" + UIViewRoot.UNIQUE_ID_PREFIX + "0/b" + UIViewRoot.UNIQUE_ID_PREFIX + "1/e" + UIViewRoot.UNIQUE_ID_PREFIX + "1/eB2/bB3/eB3/eA", text());
-        assertEquals("/ROOT/A-a/B1-b1/B2-b2/" + UIViewRoot.UNIQUE_ID_PREFIX + "0-c1/" + UIViewRoot.UNIQUE_ID_PREFIX + "1-c2/B3-b3", tree());
-        verifyB2();
-
-        reset();
-        render();
-        assertEquals("/bA/bB1/eB1/bB2/b" + UIViewRoot.UNIQUE_ID_PREFIX + "0/e" + UIViewRoot.UNIQUE_ID_PREFIX + "0/b" + UIViewRoot.UNIQUE_ID_PREFIX + "1/e" + UIViewRoot.UNIQUE_ID_PREFIX + "1/eB2/bB3/eB3/eA", text());
-        assertEquals("/ROOT/A-a/B1-b1/B2-b2/" + UIViewRoot.UNIQUE_ID_PREFIX + "0-c1/" + UIViewRoot.UNIQUE_ID_PREFIX + "1-c2/B3-b3", tree());
-        verifyB2();
-
-    }
-
-
-    // Test multiple tag rendering with missing id
-    // Scenario 2 -- first id missing
-    public void testMultipleTagWithoutId2() throws Exception {
-
-        configure(null, "C2", true, false);
-
-        render();
-        assertEquals("/bA/bB1/eB1/bB2/b" + UIViewRoot.UNIQUE_ID_PREFIX + "0/e" + UIViewRoot.UNIQUE_ID_PREFIX + "0/bC2/eC2/eB2/bB3/eB3/eA", text());
-        assertEquals("/ROOT/A-a/B1-b1/B2-b2/" + UIViewRoot.UNIQUE_ID_PREFIX + "0-c1/C2-c2/B3-b3", tree());
-        verifyB2();
-
-        reset();
-        render();
-        assertEquals("/bA/bB1/eB1/bB2/b" + UIViewRoot.UNIQUE_ID_PREFIX + "0/e" + UIViewRoot.UNIQUE_ID_PREFIX + "0/bC2/eC2/eB2/bB3/eB3/eA", text());
-        assertEquals("/ROOT/A-a/B1-b1/B2-b2/" + UIViewRoot.UNIQUE_ID_PREFIX + "0-c1/C2-c2/B3-b3", tree());
-        verifyB2();
-
-    }
-
-
-    // Test multiple tag rendering with missing id
-    // Scenario 3 -- second id missing
-    public void testMultipleTagWithoutId3() throws Exception {
-
-        configure("C1", null, true, false);
-
-        render();
-        assertEquals("/bA/bB1/eB1/bB2/bC1/eC1/b" + UIViewRoot.UNIQUE_ID_PREFIX + "0/e" + UIViewRoot.UNIQUE_ID_PREFIX + "0/eB2/bB3/eB3/eA", text());
-        assertEquals("/ROOT/A-a/B1-b1/B2-b2/C1-c1/" + UIViewRoot.UNIQUE_ID_PREFIX + "0-c2/B3-b3", tree());
-        verifyB2();
-
-        reset();
-        render();
-        assertEquals("/bA/bB1/eB1/bB2/bC1/eC1/b" + UIViewRoot.UNIQUE_ID_PREFIX + "0/e" + UIViewRoot.UNIQUE_ID_PREFIX + "0/eB2/bB3/eB3/eA", text());
-        assertEquals("/ROOT/A-a/B1-b1/B2-b2/C1-c1/" + UIViewRoot.UNIQUE_ID_PREFIX + "0-c2/B3-b3", tree());
-        verifyB2();
-
-    }
-
-
-    // Test a pristine setup environment
-    public void testPristine() {
-
-        assertNotNull(config);
-        assertNotNull(facesContext);
-        assertNotNull(pageContext);
-        assertNotNull(request);
-        assertNotNull(response);
-        assertNotNull(servlet);
-        assertNotNull(servletContext);
-        assertNotNull(session);
-
-        assertNull(root);
-        assertEquals(0, tags.size());
-
-    }
-
-
-    // Test suppressing rendering with rendered=false
-    public void testRenderedFalse() throws Exception {
-
-        configure("C1", "C2", false, false);
-
-        render();
-        assertEquals("/bA/bB1/eB1/bB3/eB3/eA", text());
-        assertEquals("/ROOT/A-a/B1-b1/B2-b2/C1-c1/C2-c2/B3-b3", tree());
-        verifyB2();
-
-        reset();
-        render();
-        assertEquals("/bA/bB1/eB1/bB3/eB3/eA", text());
-        assertEquals("/ROOT/A-a/B1-b1/B2-b2/C1-c1/C2-c2/B3-b3", tree());
-        verifyB2();
-
-    }
-
-
-    // Test a component that takes responsibility for rendering children
-    public void testRendersChildren() throws Exception {
-
-        configure("C1", "C2", true, true);
-
-        render();
-        assertEquals("/bA/bB1/eB1/bB2/eB2/bB3/eB3/eA", text());
-        assertEquals("/ROOT/A-a/B1-b1/B2-b2/C1-c1/C2-c2/B3-b3", tree());
-        verifyB2();
-
-        reset();
-        render();
-        assertEquals("/bA/bB1/eB1/bB2/eB2/bB3/eB3/eA", text());
-        assertEquals("/ROOT/A-a/B1-b1/B2-b2/C1-c1/C2-c2/B3-b3", tree());
-        verifyB2();
-
-    }
-
-
-    // Test single tag rendering with id
-    public void testSingleTagWithId() throws Exception {
-
-        add(null, new TestTag("A", "a"));
-
-        render();
-        assertEquals("/bA/eA", text());
-        assertEquals("/ROOT/A-a", tree());
-
-        reset();
-        render();
-        assertEquals("/bA/eA", text());
-        assertEquals("/ROOT/A-a", tree());
-
-    }
-
-
-    // Test single tag rendering without id
-    public void testSingleTagWithoutId() throws Exception {
-
-        add(null, new TestTag(null, "a"));
-
-        render();
-        assertEquals("/b" + UIViewRoot.UNIQUE_ID_PREFIX + "0/e" + UIViewRoot.UNIQUE_ID_PREFIX + "0", text());
-        assertEquals("/ROOT/" + UIViewRoot.UNIQUE_ID_PREFIX + "0-a", tree());
-
-        reset();
-        render();
-        assertEquals("/b" + UIViewRoot.UNIQUE_ID_PREFIX + "0/e" + UIViewRoot.UNIQUE_ID_PREFIX + "0", text());
-        assertEquals("/ROOT/" + UIViewRoot.UNIQUE_ID_PREFIX + "0-a", tree());
-
-    }
-
-    public void testUniqueId() throws Exception {
-	UIComponentTag tag = new TestTag();
-	boolean exceptionThrown = false;
-	try {
-	    tag.setId(UIViewRoot.UNIQUE_ID_PREFIX + "ha");
-	}
-	catch (IllegalArgumentException e) {
-	    exceptionThrown = true;
-	}
-	assertTrue(exceptionThrown);
-	
-	exceptionThrown = false;
-	try {
-	    tag.setId("ha");
-	}
-	catch (IllegalArgumentException e) {
-	    exceptionThrown = true;
-	}
-	assertTrue(!exceptionThrown);
-
-    }
-
-
-    // Test configuring value bindings instead of literal values
-    public void testValueBindings() throws Exception {
-
-	TestTag tag = new TestTag();
-	tag.setLabel("#{foo}");
-	tag.setRendered("#{bar}");
-	add(root, tag);
-	request.setAttribute("foo", "bap");
-	request.setAttribute("bar", Boolean.FALSE);
-	reset();
-	render();
-
-	UIViewRoot vr = facesContext.getViewRoot();
-	assertEquals(1, vr.getChildren().size());
-	UIComponent component = (UIComponent) vr.getChildren().get(0);
-	assertEquals("bap", ((TestComponent) component).getLabel());
-	assertTrue(!component.isRendered());
-	assertNotNull(component.getValueBinding("label"));
-	assertNotNull(component.getValueBinding("rendered"));
-
-    }
-
-
-    // ------------------------------------------------------ Protected Methods
-
-
-    // Add a new child tag with the specified parent (null==root tag)
-    protected void add(Tag parent, Tag child) {
-
-        if (parent == null) {
-            if (root != null) {
-                throw new IllegalStateException("Root tag already set");
-            }
-	    root = new TestTag("ROOT", "root") {
-		    protected void setProperties(UIComponent component) {
-		    }
-		};
-	    add(root, child);
-	    root.setPageContext(this.pageContext);
-        } else {
-            List children = (List) tags.get(parent);
-            if (children == null) {
-                children = new ArrayList();
-                tags.put(parent, children);
-            }
-            children.add(child);
-            child.setParent(parent);
-        }
-        child.setPageContext(this.pageContext);
-
-    }
-
-
-    // Configure the tree of tags, with specified ids for C1 and C2
-    protected void configure(String id1, String id2,
-                             boolean rendered, boolean children) {
-
-        UIComponentTag a = new TestTag("A", "a");
-        UIComponentTag b2 = new TestTag("B2", "b2");
-        b2.setRendered(rendered ? "true" : "false");
-        ((TestTag) b2).setRendersChildren(children);
-        FacetTag f1 = new FacetTag();
-        f1.setName("header");
-        FacetTag f2 = new FacetTag();
-        f2.setName("footer");
-
-        add(null, a);
-        add(a, new TestTag("B1", "b1"));
-        add(a, b2);
-        add(a, new TestTag("B3", "b3"));
-        add(b2, f1);
-        add(f1, new TestTag("H", "h"));
-        add(b2, new TestTag(id1, "c1"));
-        add(b2, new TestTag(id2, "c2"));
-        add(b2, f2);
-        add(f2, new TestTag("F", "f"));
-
-    }
-
-
-    // Release all tags on the current page
-    protected void release() {
-
-        if (root != null) {
-            release(root);
-            root = null;
-        }
-
-    }
-
-    protected void release(Tag tag) {
-
-        List children = (List) tags.get(tag);
-        if (children != null) {
-            Iterator kids = children.iterator();
-            while (kids.hasNext()) {
-                release((Tag) kids.next());
-            }
-            tags.remove(tag);
-        }
-        tag.setParent(null);
-        tag.setPageContext(null);
-
-    }
-
-
-    // Render the current page by recursively processing all of the tags
-    protected void render() throws JspException {
-
-        if (root != null) {
-            render(root);
-        }
-
-	try {
-	    facesContext.getViewRoot().encodeAll(facesContext);
-	}
-	catch (IOException e) {
-	    throw new JspException(e);
-	}
-
-    }
-
-    protected void render(Tag tag) throws JspException {
-
-        tag.doStartTag();
-        List children = (List) tags.get(tag);
-        if (children != null) {
-            Iterator kids = children.iterator();
-            while (kids.hasNext()) {
-                render((Tag) kids.next());
-            }
-        }
-        tag.doEndTag();
-
-    }
-
-
-    // Reset the output buffer in our fake writer
-    protected void reset() throws IOException {
-
-        pageContext.clearPageScope();
-        pageContext.removeAttribute("javax.faces.webapp.AUTO_INDEX",
-                                    PageContext.REQUEST_SCOPE);
-        MockJspWriter writer = (MockJspWriter) pageContext.getOut();
-        writer.clearBuffer();
-
-    }
-
-
-    // Return a String of all the component ids in treewalk order
-    protected String tree() {
-
-        UIComponent component = facesContext.getViewRoot();
-        StringBuffer sb = new StringBuffer();
-        tree(component, sb);
-        return (sb.toString());
-
-    }
-
-    protected void tree(UIComponent component, StringBuffer sb) {
-
-        sb.append("/");
-        if (component.getId() != null) {
-            sb.append(component.getId());
-        }
-        if (component instanceof TestComponent) {
-            String label = ((TestComponent) component).getLabel();
-            if (label != null) {
-                sb.append("-");
-                sb.append(label);
-            }
-        }
-        Iterator kids = component.getChildren().iterator();
-        while (kids.hasNext()) {
-            tree((UIComponent) kids.next(), sb);
-        }
-
-    }
-
-
-    // Return the rendered text
-    protected String text() {
-
-        MockJspWriter writer = (MockJspWriter) pageContext.getOut();
-        return (writer.getBuffer());
-
-    }
-
-
-    // Verify the characteristics of a component with id "B2"
-    protected void verifyB2() {
-
-        UIComponent b2c = facesContext.getViewRoot().findComponent("B2");
-        assertNotNull("B2 component exists", b2c);
-        assertEquals("B2 component id", "B2", b2c.getId());
-        assertEquals("B2 child count", 2,
-                     b2c.getChildren().size());
-        assertNotNull("B2 header facet",
-                      (UIComponent) b2c.getFacets().get("header"));
-        assertNotNull("B2 footer facet",
-                      (UIComponent) b2c.getFacets().get("footer"));
-
-    }
-
-
-}
diff --git a/jsf-api/src/test/java/javax/faces/webapp/ValidatorTagTestCase.java b/jsf-api/src/test/java/javax/faces/webapp/ValidatorTagTestCase.java
deleted file mode 100644
index 3d1ecde..0000000
--- a/jsf-api/src/test/java/javax/faces/webapp/ValidatorTagTestCase.java
+++ /dev/null
@@ -1,214 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package javax.faces.webapp;
-
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import javax.faces.FactoryFinder;
-import javax.faces.application.Application;
-import javax.faces.application.ApplicationFactory;
-import javax.faces.component.NamingContainer;
-import javax.faces.component.UIComponent;
-import javax.faces.component.EditableValueHolder;
-import javax.faces.component.UIViewRoot;
-import javax.faces.context.FacesContext;
-import javax.faces.event.FacesEvent;
-import javax.faces.render.RenderKit;
-import javax.faces.render.RenderKitFactory;
-import javax.faces.validator.LengthValidator;
-import javax.faces.validator.Validator;
-import javax.servlet.jsp.JspException;
-import javax.servlet.jsp.PageContext;
-import javax.servlet.jsp.tagext.Tag;
-import junit.framework.TestCase;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-import com.sun.faces.mock.MockApplication;
-import com.sun.faces.mock.MockExternalContext;
-import com.sun.faces.mock.MockFacesContext;
-import com.sun.faces.mock.MockHttpServletRequest;
-import com.sun.faces.mock.MockHttpServletResponse;
-import com.sun.faces.mock.MockHttpSession;
-import com.sun.faces.mock.MockJspWriter;
-import com.sun.faces.mock.MockLifecycle;
-import com.sun.faces.mock.MockPageContext;
-import com.sun.faces.mock.MockRenderKit;
-import com.sun.faces.mock.MockRenderKitFactory;
-import com.sun.faces.mock.MockServlet;
-import com.sun.faces.mock.MockServletConfig;
-import com.sun.faces.mock.MockServletContext;
-
-
-/**
- * <p>Unit tests for <code>ValidatorTag</code>.</p>
- */
-
-public class ValidatorTagTestCase extends TagTestCaseBase {
-
-
-    // ------------------------------------------------------ Instance Variables
-
-
-    protected UIComponentTag ctag = null; // Component tag
-    protected UIComponentTag rtag = null; // Root tag
-
-
-    // ------------------------------------------------------------ Constructors
-
-
-    /**
-     * Construct a new instance of this test case.
-     *
-     * @param name Name of the test case
-     */
-    public ValidatorTagTestCase(String name) {
-
-        super(name);
-
-    }
-
-
-    // ---------------------------------------------------- Overall Test Methods
-
-
-    /**
-     * Set up our root and component tags.
-     */
-    public void setUp() throws Exception {
-
-        super.setUp();
-
-        rtag = new TestTag("ROOT", "root") {
-                protected void setProperties(UIComponent component) {
-                }
-            };
-        rtag.setPageContext(this.pageContext);
-        ctag = new TestInputTag();
-        ctag.setParent(this.rtag);
-        ctag.setPageContext(this.pageContext);
-
-        rtag.doStartTag();
-        ctag.doStartTag();
-
-    }
-
-
-    /**
-     * Return the tests included in this test suite.
-     */
-    public static Test suite() {
-
-        return (new TestSuite(ValidatorTagTestCase.class));
-
-    }
-
-
-    /**
-     * Clear our root and component tags.
-     */
-    public void tearDown() throws Exception {
-
-        ctag.doEndTag();
-        rtag.doEndTag();
-
-        ctag = null;
-        rtag = null;
-
-        super.tearDown();
-
-    }
-
-
-    // ------------------------------------------------- Individual Test Methods
-
-
-    // Test literal validator id
-    public void testLiteral() throws Exception {
-
-        UIComponent component = ctag.getComponentInstance();
-        assertNotNull(component);
-        assertEquals(0, ((EditableValueHolder) component).getValidators().length);
-        ValidatorTag tag = new ValidatorTag();
-        tag.setValidatorId("Length");
-        add(tag);
-        tag.doStartTag();
-        Validator validator = ((EditableValueHolder) component).getValidators()[0];
-        assertNotNull(validator);
-        assertTrue(validator instanceof LengthValidator);
-        tag.doEndTag();
-        
-    }
-
-
-    // Test expression validator id
-    public void testExpression() throws Exception {
-
-        UIComponent component = ctag.getComponentInstance();
-        assertNotNull(component);
-        assertEquals(0, ((EditableValueHolder) component).getValidators().length);
-        ValidatorTag tag = new ValidatorTag();
-        tag.setValidatorId("#{foo}");
-        request.setAttribute("foo", "Length");
-        add(tag);
-        tag.doStartTag();
-        Validator validator = ((EditableValueHolder) component).getValidators()[0];
-        assertNotNull(validator);
-        assertTrue(validator instanceof LengthValidator);
-        tag.doEndTag();
-        
-    }
-
-
-    // ------------------------------------------------------- Protected Methods
-
-
-    // Add the specified ValidatorTag to our component tag
-    protected void add(ValidatorTag tag) {
-
-        tag.setParent(ctag);
-        tag.setPageContext(this.pageContext);
-
-    }
-
-
-}
diff --git a/jsf-api/src/test/java/javax/faces/webapp/config-file-0.xml b/jsf-api/src/test/java/javax/faces/webapp/config-file-0.xml
deleted file mode 100644
index 53e1789..0000000
--- a/jsf-api/src/test/java/javax/faces/webapp/config-file-0.xml
+++ /dev/null
@@ -1,44 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-
-<!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
--->
-
-<!-- ========== EMPTY CONFIGURATION FILE ================================== -->
-
-<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd"
-    version="1.2"/>
diff --git a/jsf-api/src/test/java/javax/faces/webapp/config-file-1.xml b/jsf-api/src/test/java/javax/faces/webapp/config-file-1.xml
deleted file mode 100644
index f91aa7b..0000000
--- a/jsf-api/src/test/java/javax/faces/webapp/config-file-1.xml
+++ /dev/null
@@ -1,318 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-
-<!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
--->
-
-<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd"
-    version="1.2">
-
-  <!-- Initial application element with partial values -->
-  <application id="applicationElement">
-    <action-listener>com.mycompany.MyActionListener</action-listener>
-    <variable-resolver>com.mycompany.OldVariableResolver</variable-resolver>
-  </application>
-
-
-  <!-- Second validator -->
-  <validator>
-    <description>Second Validator Description</description>
-    <display-name>Second Validator Display Name</display-name>
-    <icon>
-      <small-icon>secondValidator.jpg</small-icon>
-      <large-icon>secondValidator.gif</large-icon>
-    </icon>
-    <validator-id>Second</validator-id>
-    <validator-class>com.mycompany.MySecondValidator</validator-class>
-    <property>
-      <description>Second Validator Property 1 Description</description>
-      <display-name>Second Validator Property 1 Display Name</display-name>
-      <property-name>prop1</property-name>
-      <property-class>java.lang.String</property-class>
-    </property>
-  </validator>
-
-
-  <!-- First validator -->
-  <validator>
-    <description>First Validator Description</description>
-    <display-name>First Validator Display Name</display-name>
-    <icon>
-      <small-icon>firstValidator.jpg</small-icon>
-      <large-icon>firstValidator.gif</large-icon>
-    </icon>
-    <validator-id>First</validator-id>
-    <validator-class>com.mycompany.MyFirstValidator</validator-class>
-    <attribute>
-      <description>First Validator Attribute 1 Description</description>
-      <display-name>First Validator Attribute 1 Display Name</display-name>
-      <attribute-name>attr1</attribute-name>
-      <attribute-class>java.lang.String</attribute-class>
-    </attribute>
-  </validator>
-
-
-  <!-- First component -->
-  <component>
-    <description>User Interface Command Component</description>
-    <display-name>User Interface Command</display-name>
-    <component-type>Command</component-type>
-    <component-class>javax.faces.component.UICommand</component-class>
-  </component>
-
-
-  <!-- First converter -->
-  <converter>
-    <description>First Converter Description</description>
-    <display-name>First Converter Display Name</display-name>
-    <icon>
-      <small-icon>firstConverter.jpg</small-icon>
-      <large-icon>firstConverter.gif</large-icon>
-    </icon>
-    <converter-id>First</converter-id>
-    <converter-class>com.mycompany.MyFirstConverter</converter-class>
-    <attribute>
-      <description>First Converter Attribute 1 Description</description>
-      <display-name>First Converter Attribute 1 Display Name</display-name>
-      <attribute-name>attr1</attribute-name>
-      <attribute-class>java.lang.String</attribute-class>
-    </attribute>
-  </converter>
-
-
-  <!-- Second application element with overapping values -->
-  <application>
-    <navigation-handler>
-      com.mycompany.MyNavigationHandler
-    </navigation-handler>
-    <property-resolver>com.mycompany.MyPropertyResolver</property-resolver>
-    <variable-resolver>com.mycompany.MyVariableResolver</variable-resolver>
-  </application>
-
-
-  <!-- Second converter -->
-  <converter>
-    <description>Second Converter Description</description>
-    <display-name>Second Converter Display Name</display-name>
-    <icon>
-      <small-icon>secondConverter.jpg</small-icon>
-      <large-icon>secondConverter.gif</large-icon>
-    </icon>
-    <converter-id>Second</converter-id>
-    <converter-class>com.mycompany.MySecondConverter</converter-class>
-    <property>
-      <description>Second Converter Property 1 Description</description>
-      <display-name>Second Converter Property 1 Display Name</display-name>
-      <property-name>prop1</property-name>
-      <property-class>java.lang.String</property-class>
-    </property>
-  </converter>
-
-  <!-- Third converter (by-type) -->
-  <converter>
-    <description>Third Converter Description</description>
-    <display-name>Third Converter Display Name</display-name>
-    <icon>
-      <small-icon>thirdConverter.jpg</small-icon>
-      <large-icon>thirdConverter.gif</large-icon>
-    </icon>
-    <converter-for-class>java.util.Date</converter-for-class>
-    <converter-class>com.mycompany.MyThirdConverter</converter-class>
-    <property>
-      <description>Third Converter Property 1 Description</description>
-      <display-name>Third Converter Property 1 Display Name</display-name>
-      <property-name>prop1</property-name>
-      <property-class>java.lang.String</property-class>
-    </property>
-  </converter>
-
-
-  <!-- First navigation rule (global) -->
-  <navigation-rule>
-    <description>
-      This is the set of rules that provides default navigation
-      independent of the request view.
-    </description>
-    <display-name>Default Navigation Rules</display-name>
-    <!-- Can also be omitted, since this is the default -->
-    <from-view-id> * </from-view-id>
-    <!-- Logout button on every page -->
-    <navigation-case>
-      <from-action>#{UserBean.Logout}</from-action>
-      <to-view-id>/logout.jsp</to-view-id>
-    </navigation-case>
-    <!-- Generic "not logged in" handler -->
-    <navigation-case>
-      <from-outcome>loginRequired</from-outcome>
-      <to-view-id>/must-login-first.jsp</to-view-id>
-      <redirect/>
-    </navigation-case>
-  </navigation-rule>
-
-
-  <!-- Second navigation rule (login page only) -->
-  <navigation-rule>
-    <from-view-id> /login.jsp </from-view-id>
-    <!-- Login action was invoked successfully -->
-    <navigation-case>
-      <from-action>#{UserBean.login}</from-action>
-      <from-outcome>success</from-outcome>
-      <to-view-id>/home.jsp</to-view-id>
-    </navigation-case>
-    <!-- User registration required -->
-    <navigation-case>
-      <from-action>#{UserBean.register}</from-action>
-      <from-outcome>success</from-outcome>
-      <to-view-id>/get-user-info.jsp</to-view-id>
-    </navigation-case>
-    <!-- User registration failed -->
-    <navigation-case>
-      <from-action>#{UserBean.register}</from-action>
-      <from-outcome>duplicate</from-outcome>
-      <to-view-id>/try-another-name.jsp</to-view-id>
-    </navigation-case>
-  </navigation-rule>
-
-
-  <!-- Third navigation rule (more global stuff) -->
-  <navigation-rule>
-    <!-- Omit the request view id this time -->
-    <!-- General search form handling -->
-    <navigation-case>
-      <from-action>#{SearchForm.go}</from-action>
-      <to-view-id>/search-results.jsp</to-view-id>
-    </navigation-case>
-  </navigation-rule>
-
-
-  <!-- Fourth navigation rule (special search handling) -->
-  <navigation-rule>
-    <!-- Search works differently for part of the app -->
-    <from-view-id>/movies/*</from-view-id>
-    <!-- Special search form handling -->
-    <navigation-case>
-      <from-action>#{SearchForm.go}</from-action>
-      <to-view-id>/movies/movie-search-results.jsp</to-view-id>
-    </navigation-case>
-  </navigation-rule>
-
-
-  <!-- First managed bean -->
-  <managed-bean>
-    <!-- Basic information about this bean -->
-    <description>
-      Auto-creates the form handler for new customers into request scope
-      if it is not already present.
-    </description>
-    <display-name>New Customer Form Handler</display-name>
-    <managed-bean-name>NewCustomerFormHandler</managed-bean-name>
-    <managed-bean-class>
-      com.example.formhandler.NewCustomerFormHandler
-    </managed-bean-class>
-    <managed-bean-scope>request</managed-bean-scope>
-    <!-- Managed property initializations -->
-    <managed-property>
-      <property-name>minimumAge</property-name>
-      <value>#{initParam.minimumCustomerAge}</value>
-    </managed-property>
-    <managed-property>
-      <property-name>maximumAge</property-name>
-      <value>65</value>
-    </managed-property>
-    <managed-property>
-      <property-name>nationality</property-name>
-      <null-value/>
-    </managed-property>
-    <managed-property>
-      <property-name>allowableValues</property-name>
-      <!-- Assume the type is java.util.List -->
-      <list-entries>
-        <value-class>java.lang.Integer</value-class>
-        <value>10</value>
-        <value>20</value>
-        <value>60</value>
-      </list-entries>
-    </managed-property>
-    <managed-property>
-      <property-name>firstNames</property-name>
-      <!-- Assume the type is java.util.List or java.lang.String[] -->
-      <list-entries>
-        <value>Thomas</value>
-        <value>#{someOtherBean.someName}</value>
-        <null-value/>
-      </list-entries>
-    </managed-property>
-    <managed-property>
-      <description>
-        Map property with a description.
-      </description>
-      <display-name>Claim Amounts</display-name>
-      <property-name>claimAmounts</property-name>
-      <map-entries>
-        <key-class>java.lang.String</key-class> <!-- Default so redundant -->
-        <value-class>java.lang.Double</value-class>
-        <map-entry>
-          <key>fire</key>
-          <value>1000.00</value>
-        </map-entry>
-        <map-entry>
-          <key>water</key>
-          <value>#{claimConfiguration.waterDamageAmount}</value>
-        </map-entry>
-        <map-entry>
-          <key>earthquake</key>
-          <null-value/>
-        </map-entry>
-      </map-entries>
-    </managed-property>
-  </managed-bean>
-
-
-  <!-- First referenced bean -->
-  <referenced-bean>
-    <description>
-      This element represents a JDBC DataSource that will be
-      initialized through some external means, and made available
-      in some scope (most likely application).
-    </description>
-    <display-name>Database Connection Pool</display-name>
-    <referenced-bean-name>connectionPool</referenced-bean-name>
-    <referenced-bean-class>javax.sql.DataSource</referenced-bean-class>
-  </referenced-bean>
-
-
-</faces-config>
diff --git a/jsf-api/template-src/MethodBindingMethodExpressionAdapter.java b/jsf-api/template-src/MethodBindingMethodExpressionAdapter.java
index 7934f17..67b4bae 100644
--- a/jsf-api/template-src/MethodBindingMethodExpressionAdapter.java
+++ b/jsf-api/template-src/MethodBindingMethodExpressionAdapter.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -33,7 +37,7 @@
  * only if the new code is made subject to such option by the copyright
  * holder.
  */
- 
+
 package @package@;
 
 import java.io.Serializable;
@@ -41,7 +45,6 @@ import java.io.Serializable;
 import javax.faces.component.StateHolder;
 import javax.faces.context.FacesContext;
 import javax.faces.el.EvaluationException;
-import javax.faces.el.ReferenceSyntaxException;
 import javax.faces.el.MethodBinding;
 
 import javax.el.MethodExpression;
diff --git a/jsf-api/template-src/MethodExpressionMethodBindingAdapter.java b/jsf-api/template-src/MethodExpressionMethodBindingAdapter.java
index a279e86..56c7790 100644
--- a/jsf-api/template-src/MethodExpressionMethodBindingAdapter.java
+++ b/jsf-api/template-src/MethodExpressionMethodBindingAdapter.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -33,7 +37,7 @@
  * only if the new code is made subject to such option by the copyright
  * holder.
  */
- 
+
 package @package@;
 
 import javax.el.MethodExpression;
@@ -43,7 +47,6 @@ import javax.el.MethodInfo;
 import javax.faces.el.MethodBinding;
 import javax.faces.context.FacesContext;
 import javax.faces.component.StateHolder;
-import javax.el.ELContext;
 import javax.el.ExpressionFactory;
 import javax.el.ValueExpression;
 
diff --git a/jsf-api/template-src/ValueBindingValueExpressionAdapter.java b/jsf-api/template-src/ValueBindingValueExpressionAdapter.java
index ff2e93e..fc44cf2 100644
--- a/jsf-api/template-src/ValueBindingValueExpressionAdapter.java
+++ b/jsf-api/template-src/ValueBindingValueExpressionAdapter.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -33,7 +37,7 @@
  * only if the new code is made subject to such option by the copyright
  * holder.
  */
- 
+
 package @package@;
 
 import java.io.Serializable;
@@ -42,7 +46,6 @@ import javax.faces.component.StateHolder;
 import javax.faces.context.FacesContext;
 import javax.faces.el.EvaluationException;
 import javax.faces.el.PropertyNotFoundException;
-import javax.faces.el.ReferenceSyntaxException;
 import javax.faces.el.ValueBinding;
 
 import javax.el.ValueExpression;
diff --git a/jsf-api/template-src/ValueExpressionValueBindingAdapter.java b/jsf-api/template-src/ValueExpressionValueBindingAdapter.java
index 380fd26..275d5cd 100644
--- a/jsf-api/template-src/ValueExpressionValueBindingAdapter.java
+++ b/jsf-api/template-src/ValueExpressionValueBindingAdapter.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -33,7 +37,7 @@
  * only if the new code is made subject to such option by the copyright
  * holder.
  */
- 
+
 package @package@;
 
 import javax.el.ValueExpression;
diff --git a/jsf-archetype/README.txt b/jsf-archetype/README.txt
new file mode 100644
index 0000000..7a7d0c8
--- /dev/null
+++ b/jsf-archetype/README.txt
@@ -0,0 +1,122 @@
+JSF Maven archetype Document
+Sheetal Vartak 3/17/2011
+
+Goal
+I have created a new Maven archetype for JSF that contains the following :
+* a web project skeleton with a dependency on Java EE
+* a minimal JSF application to use as a starting point
+
+Archetype contents
+The JSF archetype is made up of:
+* an  archetype descriptor(archetype.xml in directory: src/main/resources/META-INF/maven/). It lists all the files that will be contained in the archetype and categorizes them so they can be processed correctly by the archetype generation mechanism.
+* the prototype files that are copied by the archetype plugin (directory: src/main/resources/archetype-resources/)
+* the prototype pom (pom.xml in: src/main/resources/archetype-resources)
+* a pom for the archetype (pom.xml in the archetype's root directory).The config files listed above get auto generated via the  maven command : create-from-project.Creating the JSF archetype. For the JSF archetype creation, I followed the following steps:
+1> create a dir jsf-archetype
+2> cd jsf-archetype
+Create a hierarchy as follows :
+jsf-archetype
+|------src
+	|----main
+		
+		|----resources
+                        |----archetype-resources
+                                |---src
+                                     |----main
+                                            |----java
+                                                  |--com
+                                                      |--sun
+                                                          |--faces
+                                                                |--hello
+                                                                    |---HelloBean.java
+                                            |----webapp
+                                                    |--resources
+                                                            |---composite
+                                                                    |---simpleCompositeComponent.xhtml
+                                                    |---simpleCompositeComponentUsingPage.xhml
+                                                    |---submit.xhtml
+|------pom.xml
+
+3> Run "mvn  install" from under jsf-archetype/. This installs the archetype in the local maven repository.
+4> Now,  Now that the archetype has been created and installed, you can try it on your local system by using the following commands. First create a new dir for the new project from this archetype. mkdir create-project-from-archetype.
+5> mkdir create-project-from-archetype
+   cd create-project-from-archetype/
+6> mvn archetype:generate -DarchetypeCatalog=local
+
+OR 
+
+after deploying the archetype to a remote repo via "mvn deploy", run the following.
+In this command, you need to specify the full information about the archetype you want to use (its groupId, its artifactId, its version) and the information about the new project you want to create (artifactId and groupId).
+mvn archetype:generate -DarchetypeGroupId=com.sun.faces
+-DarchetypeArtifactId=simple-jsf -DarchetypeVersion=1.0 -DgroupId=simple-jsf
+-DartifactId=simple-jsf -DarchetypeRepository=local
+The project that I created off of the archetype could be easily built and deployed to GF.
+7> Next I tried the following to make sure that the war created gets deployed on GF.
+cd create-project-from-archetype/<new-dir-created>
+mvn clean install .. This creates the jsf-simple-1.0.war
+8> Deploy the war via asadmin deploy jsf-simple-1.0.war
+9> Access http://localhost:8080/jsf-sample-1.0/faces/simpleCompositeComponentUsingPage.xhtml
+
+I have added some ant targets to do what is stated above.
+Please run "ant make-archetype" to perform step 3 and 4.
+
+To deploy the archetype to the maven repo (http://download.java.net/maven/2), run "ant deploy-archetype".
+
+Alternatively, you can make modifications similar to the following to
+the generated pom.xml and simply run mvn deploy in the
+target/generated-sources/archetype directory.
+
+bash-2.05b$ diff -u pom.xml ~/Documents/chaff/pom-generated-from-project.xml
+--- pom.xml	Wed May  4 11:51:26 2011
++++ /home/ejburns/Documents/chaff/pom-generated-from-project.xml	Wed May  4 11:49:40 2011
+@@ -16,6 +16,11 @@
+         <artifactId>archetype-packaging</artifactId>
+         <version>2.0</version>
+       </extension>
++            <extension>
++                <groupId>org.jvnet.wagon-svn</groupId>
++                <artifactId>wagon-svn</artifactId>
++                <version>1.8</version>
++            </extension>
+     </extensions>
+ 
+     <pluginManagement>
+@@ -26,5 +31,24 @@
+         </plugin>
+       </plugins>
+     </pluginManagement>
++
+   </build>
++
++    <distributionManagement>
++      <repository>
++        <uniqueVersion>false</uniqueVersion>
++        <id>java.net-maven2-repository</id>
++        <url>svn:https://svn.java.net/svn/maven2-repository~svn/trunk/repository</url> 
++      </repository>
++    </distributionManagement>
++
++    <repositories>
++        <repository>
++            <id>java.net-maven2-repository</id>
++            <name>Java.net Repository for Maven</name>
++            <url>http://download.java.net/maven/2/</url>
++            <layout>default</layout>
++        </repository>
++    </repositories>
++
+ </project>
+
+This assumes that your ~/.m2/settings.xml file has the following
+information.
+
+  <servers>
+    <server>
+        <id>java.net-maven2-repository</id>
+        <username>your userid</username>
+        <password>your password</password>
+    </server>
+  </servers>
+
+References http://maven.apache.org/guides/mini/guide-creating-archetypes.html
+
diff --git a/jsf-archetype/faces-test-war/create-from-project-2.1/nbactions.xml b/jsf-archetype/faces-test-war/create-from-project-2.1/nbactions.xml
new file mode 100644
index 0000000..3f86879
--- /dev/null
+++ b/jsf-archetype/faces-test-war/create-from-project-2.1/nbactions.xml
@@ -0,0 +1,163 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--><actions>
+        <action>
+            <actionName>debug.test.single</actionName>
+            <goals>
+                <goal>test-compile</goal>
+                <goal>surefire:test</goal>
+            </goals>
+            <properties>
+                <test>${packageClassName}</test>
+                <forkMode>once</forkMode>
+                <maven.surefire.debug>-Xdebug -Xrunjdwp:transport=dt_socket,server=n,address=${jpda.address}</maven.surefire.debug>
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                <jpda.listen>true</jpda.listen>
+                <project.build.finalName>test-${artifactId}</project.build.finalName>
+                <webapp.projectStage>Development</webapp.projectStage>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                <integration.serverPort>8080</integration.serverPort>
+                <integration.serverName>localhost</integration.serverName>
+                <integration.url>http://localhost:8080/test-${artifactId}/</integration.url>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+            </properties>
+        </action>
+        <action>
+            <actionName>test.single</actionName>
+            <goals>
+                <goal>test-compile</goal>
+                <goal>surefire:test</goal>
+            </goals>
+            <properties>
+                <project.build.finalName>test-${artifactId}</project.build.finalName>
+                <integration.serverPort>8080</integration.serverPort>
+                <integration.serverName>localhost</integration.serverName>
+                <integration.url>http://localhost:8080/test-${artifactId}/</integration.url>
+                <test>${packageClassName}</test>
+            </properties>
+        </action>
+        <action>
+            <actionName>build</actionName>
+            <goals>
+                <goal>install</goal>
+            </goals>
+            <properties>
+                <webapp.projectStage>Development</webapp.projectStage>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+            </properties>
+        </action>
+        <action>
+            <actionName>rebuild</actionName>
+            <goals>
+                <goal>clean</goal>
+                <goal>install</goal>
+            </goals>
+            <properties>
+                
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                
+                <webapp.projectStage>Development</webapp.projectStage>
+                
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                
+            </properties>
+        </action>
+        <action>
+            <actionName>build-with-dependencies</actionName>
+            <reactor>also-make</reactor>
+            <goals>
+                <goal>install</goal>
+            </goals>
+            <properties>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                <webapp.projectStage>Development</webapp.projectStage>
+            </properties>
+        </action>
+        <action>
+            <actionName>run</actionName>
+            <goals>
+                <goal>package</goal>
+            </goals>
+            <properties>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                <netbeans.deploy>true</netbeans.deploy>
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                <webapp.projectStage>Development</webapp.projectStage>
+            </properties>
+        </action>
+        <action>
+            <actionName>run.single.deploy</actionName>
+            <goals>
+                <goal>package</goal>
+            </goals>
+            <properties>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                <netbeans.deploy>true</netbeans.deploy>
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                <netbeans.deploy.clientUrlPart>${webpagePath}</netbeans.deploy.clientUrlPart>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                <webapp.projectStage>Development</webapp.projectStage>
+            </properties>
+        </action>
+        <action>
+            <actionName>debug.single.deploy</actionName>
+            <goals>
+                <goal>package</goal>
+            </goals>
+            <properties>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                <netbeans.deploy>true</netbeans.deploy>
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                <netbeans.deploy.debugmode>true</netbeans.deploy.debugmode>
+                <netbeans.deploy.clientUrlPart>${webpagePath}</netbeans.deploy.clientUrlPart>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                <webapp.projectStage>Development</webapp.projectStage>
+            </properties>
+        </action>
+    </actions>
diff --git a/jsf-archetype/faces-test-war/create-from-project-2.1/pom.xml b/jsf-archetype/faces-test-war/create-from-project-2.1/pom.xml
new file mode 100644
index 0000000..e438a83
--- /dev/null
+++ b/jsf-archetype/faces-test-war/create-from-project-2.1/pom.xml
@@ -0,0 +1,306 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  
+  <groupId>com.sun.faces</groupId>
+  <artifactId>faces-2.1-test-war</artifactId>
+  <version>0.1</version>
+  <packaging>war</packaging>
+  <name>Automated Test Depending on JSF 2.1</name>
+  
+  <build>
+    <finalName>test-${project.artifactId}</finalName>
+  </build>
+  
+  <dependencies>
+    <dependency>
+      <groupId>javax.faces</groupId>
+      <artifactId>javax.faces-api</artifactId>
+      <version>2.1</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>javax</groupId>
+      <artifactId>javaee-web-api</artifactId>
+      <version>6.0</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+      <version>4.11</version>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>net.sourceforge.htmlunit</groupId>
+      <artifactId>htmlunit</artifactId>
+      <version>2.10</version>
+      <scope>test</scope>
+    </dependency>
+  </dependencies>
+  
+  <profiles>
+    <profile>
+      <id>faces-test</id>
+      <build>
+        <pluginManagement>
+          <plugins>
+            <plugin>
+              <artifactId>maven-antrun-plugin</artifactId>
+              <version>1.7</version>
+            </plugin>
+            <plugin>
+              <artifactId>maven-assembly-plugin</artifactId>
+              <version>2.2-beta-2</version>
+            </plugin>
+            <plugin>
+              <artifactId>maven-clean-plugin</artifactId>
+              <version>2.2</version>
+            </plugin>
+            <plugin>
+              <artifactId>maven-compiler-plugin</artifactId>
+              <version>3.0</version>
+            </plugin>
+            <plugin>
+              <artifactId>maven-dependency-plugin</artifactId>
+              <version>2.6</version>
+            </plugin>
+            <plugin>
+              <artifactId>maven-deploy-plugin</artifactId>
+              <version>2.4</version>
+            </plugin>
+            <plugin>
+              <artifactId>maven-ear-plugin</artifactId>
+              <version>2.3.1</version>
+            </plugin>
+            <plugin>
+              <artifactId>maven-ejb-plugin</artifactId>
+              <version>2.1</version>
+            </plugin>
+            <plugin>
+              <artifactId>maven-install-plugin</artifactId>
+              <version>2.2</version>
+            </plugin>
+            <plugin>
+              <artifactId>maven-jar-plugin</artifactId>
+              <version>2.2</version>
+            </plugin>
+            <plugin>
+              <artifactId>maven-javadoc-plugin</artifactId>
+              <version>2.5</version>
+            </plugin>
+            <plugin>
+              <artifactId>maven-plugin-plugin</artifactId>
+              <version>2.4.3</version>
+            </plugin>
+            <plugin>
+              <artifactId>maven-rar-plugin</artifactId>
+              <version>2.2</version>
+            </plugin>
+            <plugin>
+              <artifactId>maven-release-plugin</artifactId>
+              <version>2.0-beta-8</version>
+            </plugin>
+            <plugin>
+              <artifactId>maven-failsafe-plugin</artifactId>
+              <version>2.12.4</version>
+            </plugin>
+            <plugin>
+              <artifactId>maven-resources-plugin</artifactId>
+              <version>2.6</version>
+            </plugin>
+            <plugin>
+              <artifactId>maven-site-plugin</artifactId>
+              <version>3.2</version>
+            </plugin>
+            <plugin>
+              <artifactId>maven-source-plugin</artifactId>
+              <version>2.0.4</version>
+            </plugin>
+            <plugin>
+              <artifactId>maven-surefire-plugin</artifactId>
+              <version>2.4.3</version>
+            </plugin>
+            <plugin>
+              <artifactId>maven-surefire-report-plugin</artifactId>
+              <version>2.12.4</version>
+            </plugin>
+            <plugin>
+              <artifactId>maven-war-plugin</artifactId>
+              <version>2.3</version>
+            </plugin>
+          </plugins>
+        </pluginManagement>
+        <plugins>
+          <plugin>
+            <groupId>org.apache.maven.plugins</groupId>
+            <artifactId>maven-compiler-plugin</artifactId>
+            <inherited>true</inherited>
+            <configuration>
+              <source>1.6</source>
+              <target>1.6</target>
+              <encoding>${project.build.sourceEncoding}</encoding>
+            </configuration>
+          </plugin>
+          <plugin>
+            <artifactId>maven-resources-plugin</artifactId>
+            <version>2.6</version>
+            <inherited>true</inherited>
+            <configuration>
+              <encoding>${project.build.sourceEncoding}</encoding>
+            </configuration>
+          </plugin>
+          
+        </plugins>
+        
+      </build>
+
+      <repositories>
+        <repository>
+          <releases>
+            <enabled>false</enabled>
+            <updatePolicy>always</updatePolicy>
+            <checksumPolicy>warn</checksumPolicy>
+          </releases>
+          <snapshots>
+            <updatePolicy>always</updatePolicy>
+            <checksumPolicy>warn</checksumPolicy>
+          </snapshots>
+          <id>non.sonatype.java.net</id>
+          <name>java.net</name>
+          <url>http://download.java.net/maven/2</url>
+        </repository>
+        <repository>
+          <releases>
+            <enabled>false</enabled>
+            <updatePolicy>always</updatePolicy>
+            <checksumPolicy>warn</checksumPolicy>
+          </releases>
+          <snapshots>
+            <updatePolicy>always</updatePolicy>
+            <checksumPolicy>warn</checksumPolicy>
+          </snapshots>
+          <id>java.net.snapshots</id>
+          <name>java.net SNAPSHOTS</name>
+          <url>https://maven.java.net/content/repositories/snapshots</url>
+        </repository>
+        <repository>
+          <snapshots>
+            <enabled>false</enabled>
+          </snapshots>
+          <id>central</id>
+          <name>Maven Repository Switchboard</name>
+          <url>http://repo1.maven.org/maven2</url>
+        </repository>
+      </repositories>
+
+      <pluginRepositories>
+        <pluginRepository>
+          <releases>
+            <updatePolicy>never</updatePolicy>
+          </releases>
+          <snapshots>
+            <enabled>false</enabled>
+          </snapshots>
+          <id>central</id>
+          <name>Maven Plugin Repository</name>
+          <url>http://repo1.maven.org/maven2</url>
+        </pluginRepository>
+      </pluginRepositories>
+      <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+        <webapp.partialStateSaving>true</webapp.partialStateSaving>
+        <webapp.projectStage>Production</webapp.projectStage>
+        <webapp.stateSavingMethod>server</webapp.stateSavingMethod>
+      </properties>
+      
+    </profile>
+
+    <profile>
+      <id>faces-test-run</id>
+      <build>
+        <plugins>
+
+          <plugin>
+            <artifactId>maven-failsafe-plugin</artifactId>
+            <version>2.12.4</version>
+            <executions>
+              <execution>
+                <goals>
+                  <goal>integration-test</goal>
+                  <goal>verify</goal>
+                </goals>
+              </execution>
+            </executions>
+            <inherited>true</inherited>
+            <configuration>
+              <systemPropertyVariables>
+                <integration.serverName>localhost</integration.serverName>
+                <integration.serverPort>8080</integration.serverPort>
+                <integration.serverProtocol>${integration.serverProtocol}</integration.serverProtocol>
+                <integration.url>http://localhost:8080/test-${project.artifactId}/</integration.url>
+                <jsf.version>2.1</jsf.version>
+                <project.build.finalName>test-${project.artifactId}</project.build.finalName>
+              </systemPropertyVariables>
+            </configuration>
+          </plugin>
+          
+        </plugins>
+        
+      </build>
+
+      <properties>
+        <integration.protocol>http</integration.protocol>
+        <integration.serverName>localhost</integration.serverName>
+        <integration.serverPort>8080</integration.serverPort>
+      </properties>
+      
+    </profile>
+
+
+  </profiles>
+    
+
+</project>
diff --git a/jsf-archetype/faces-test-war/create-from-project-2.1/src/main/java/com/sun/faces/test/artifactId/UserBean.java b/jsf-archetype/faces-test-war/create-from-project-2.1/src/main/java/com/sun/faces/test/artifactId/UserBean.java
new file mode 100644
index 0000000..92bcd20
--- /dev/null
+++ b/jsf-archetype/faces-test-war/create-from-project-2.1/src/main/java/com/sun/faces/test/artifactId/UserBean.java
@@ -0,0 +1,92 @@
+package com.sun.faces.test.artifactId;
+
+import java.io.Serializable;
+import java.util.Date;
+import javax.enterprise.context.SessionScoped;
+import javax.faces.application.FacesMessage;
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.validator.ValidatorException;
+import javax.inject.Named;
+
+ at Named
+ at SessionScoped
+public class UserBean implements Serializable {
+    
+    protected String firstName = "Duke";
+    protected String lastName = "Java";
+    protected Date dob;
+    protected String sex = "Unknown";
+    protected String email;
+    protected String serviceLevel = "medium";
+    
+    public UserBean() {}
+
+    public String getFirstName() {
+        return firstName;
+    }
+
+    public void setFirstName(String firstName) {
+        this.firstName = firstName;
+    }
+
+    public String getLastName() {
+        return lastName;
+    }
+
+    public void setLastName(String lastName) {
+        this.lastName = lastName;
+    }
+
+    public Date getDob() {
+        return dob;
+    }
+
+    public void setDob(Date dob) {
+        this.dob = dob;
+    }
+
+    public String getSex() {
+        return sex;
+    }
+
+    public void setSex(String sex) {
+        this.sex = sex;
+    }
+
+    public String getEmail() {
+        return email;
+    }
+
+    public void setEmail(String email) {
+        this.email = email;
+    }
+
+    public String getServiceLevel() {
+        return serviceLevel;
+    }
+
+    public void setServiceLevel(String serviceLevel) {
+        this.serviceLevel = serviceLevel;
+    }
+    
+    public void validateEmail(FacesContext context, UIComponent toValidate,
+            Object value) throws ValidatorException {
+        String emailStr = (String) value;
+        if (-1 == emailStr.indexOf("@")) {
+            FacesMessage message = new FacesMessage("Invalid email address");
+            throw new ValidatorException(message);
+        }
+    }
+
+    public String addConfirmedUser() {
+        // This method would call a database or other service and add the 
+        // confirmed user information.
+        // For now, we just place an informative message in request scope
+        FacesMessage doneMessage = 
+                new FacesMessage("Successfully added new user");
+        FacesContext.getCurrentInstance().addMessage(null, doneMessage);
+        return "done";
+    }
+}
+
diff --git a/jsf-archetype/faces-test-war/create-from-project-2.1/src/main/webapp/WEB-INF/beans.xml b/jsf-archetype/faces-test-war/create-from-project-2.1/src/main/webapp/WEB-INF/beans.xml
new file mode 100644
index 0000000..c782f57
--- /dev/null
+++ b/jsf-archetype/faces-test-war/create-from-project-2.1/src/main/webapp/WEB-INF/beans.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- This file can be an empty text file (0 bytes) -->
+<!-- We're declaring the schema to save you time if you do have to configure 
+   this in the future -->
+<beans xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+   xsi:schemaLocation="
+        http://java.sun.com/xml/ns/javaee 
+        http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
+</beans>
diff --git a/jsf-archetype/faces-test-war/create-from-project-2.1/src/main/webapp/WEB-INF/glassfish-web.xml b/jsf-archetype/faces-test-war/create-from-project-2.1/src/main/webapp/WEB-INF/glassfish-web.xml
new file mode 100644
index 0000000..ab109fa
--- /dev/null
+++ b/jsf-archetype/faces-test-war/create-from-project-2.1/src/main/webapp/WEB-INF/glassfish-web.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
+<glassfish-web-app error-url="">
+  <context-root>/test-${artifactId}</context-root>
+  <class-loader delegate="true"/>
+  <jsp-config>
+    <property name="keepgenerated" value="true">
+      <description>Keep a copy of the generated servlet class' java code.</description>
+    </property>
+  </jsp-config>
+</glassfish-web-app>
diff --git a/jsf-archetype/faces-test-war/create-from-project-2.1/src/main/webapp/WEB-INF/web.xml b/jsf-archetype/faces-test-war/create-from-project-2.1/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..8722f96
--- /dev/null
+++ b/jsf-archetype/faces-test-war/create-from-project-2.1/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>${webapp.projectStage}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
+        <param-value>${webapp.partialStateSaving}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>${webapp.stateSavingMethod}</param-value>
+    </context-param>
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <welcome-file-list>
+        <welcome-file>faces/index.xhtml</welcome-file>
+    </welcome-file-list>
+</web-app>
diff --git a/jsf-archetype/faces-test-war/create-from-project-2.1/src/main/webapp/index.xhtml b/jsf-archetype/faces-test-war/create-from-project-2.1/src/main/webapp/index.xhtml
new file mode 100644
index 0000000..3667969
--- /dev/null
+++ b/jsf-archetype/faces-test-war/create-from-project-2.1/src/main/webapp/index.xhtml
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <head>
+        <title></title>
+    </head>
+    <body>
+        <h:form prependId="false">
+            <h:inputText value="#{userBean.firstName}" />
+            <h:commandButton value="submit" />
+        </h:form>
+    </body>
+</html>
+
diff --git a/jsf-archetype/faces-test-war/create-from-project-2.1/src/test/java/com/sun/faces/test/artifactId/AutomatedTestIT.java b/jsf-archetype/faces-test-war/create-from-project-2.1/src/test/java/com/sun/faces/test/artifactId/AutomatedTestIT.java
new file mode 100644
index 0000000..fd6b39d
--- /dev/null
+++ b/jsf-archetype/faces-test-war/create-from-project-2.1/src/test/java/com/sun/faces/test/artifactId/AutomatedTestIT.java
@@ -0,0 +1,115 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.artifactId;
+
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.assertEquals;
+
+public class AutomatedTestIT {
+    /**
+     * Stores the web URL.
+     */
+    private String webUrl;
+    /**
+     * Stores the web client.
+     */
+    private WebClient webClient;
+
+    /**
+     * Setup before testing.
+     * 
+     * @throws Exception when a serious error occurs.
+     */
+    @BeforeClass
+    public static void setUpClass() throws Exception {
+    }
+
+    /**
+     * Cleanup after testing.
+     * 
+     * @throws Exception when a serious error occurs.
+     */
+    @AfterClass
+    public static void tearDownClass() throws Exception {
+    }
+
+    /**
+     * Setup before testing.
+     */
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    /**
+     * Tear down after testing.
+     */
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testBuilderDefinedFlowWithMethodCall() throws Exception {
+        doTest("start_a");
+    }
+
+    @Test
+    public void testXmlDefinedFlowWithMethodCall() throws Exception {
+        doTest("start_b");
+    }
+
+    public void doTest(String startId) throws Exception {
+        HtmlPage page = webClient.getPage(webUrl);
+
+        assertTrue(page.getBody().asText().indexOf("") != -1);
+        
+    }
+}
diff --git a/jsf-archetype/faces-test-war/create-from-project-2.2/nbactions.xml b/jsf-archetype/faces-test-war/create-from-project-2.2/nbactions.xml
new file mode 100644
index 0000000..3f86879
--- /dev/null
+++ b/jsf-archetype/faces-test-war/create-from-project-2.2/nbactions.xml
@@ -0,0 +1,163 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--><actions>
+        <action>
+            <actionName>debug.test.single</actionName>
+            <goals>
+                <goal>test-compile</goal>
+                <goal>surefire:test</goal>
+            </goals>
+            <properties>
+                <test>${packageClassName}</test>
+                <forkMode>once</forkMode>
+                <maven.surefire.debug>-Xdebug -Xrunjdwp:transport=dt_socket,server=n,address=${jpda.address}</maven.surefire.debug>
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                <jpda.listen>true</jpda.listen>
+                <project.build.finalName>test-${artifactId}</project.build.finalName>
+                <webapp.projectStage>Development</webapp.projectStage>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                <integration.serverPort>8080</integration.serverPort>
+                <integration.serverName>localhost</integration.serverName>
+                <integration.url>http://localhost:8080/test-${artifactId}/</integration.url>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+            </properties>
+        </action>
+        <action>
+            <actionName>test.single</actionName>
+            <goals>
+                <goal>test-compile</goal>
+                <goal>surefire:test</goal>
+            </goals>
+            <properties>
+                <project.build.finalName>test-${artifactId}</project.build.finalName>
+                <integration.serverPort>8080</integration.serverPort>
+                <integration.serverName>localhost</integration.serverName>
+                <integration.url>http://localhost:8080/test-${artifactId}/</integration.url>
+                <test>${packageClassName}</test>
+            </properties>
+        </action>
+        <action>
+            <actionName>build</actionName>
+            <goals>
+                <goal>install</goal>
+            </goals>
+            <properties>
+                <webapp.projectStage>Development</webapp.projectStage>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+            </properties>
+        </action>
+        <action>
+            <actionName>rebuild</actionName>
+            <goals>
+                <goal>clean</goal>
+                <goal>install</goal>
+            </goals>
+            <properties>
+                
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                
+                <webapp.projectStage>Development</webapp.projectStage>
+                
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                
+            </properties>
+        </action>
+        <action>
+            <actionName>build-with-dependencies</actionName>
+            <reactor>also-make</reactor>
+            <goals>
+                <goal>install</goal>
+            </goals>
+            <properties>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                <webapp.projectStage>Development</webapp.projectStage>
+            </properties>
+        </action>
+        <action>
+            <actionName>run</actionName>
+            <goals>
+                <goal>package</goal>
+            </goals>
+            <properties>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                <netbeans.deploy>true</netbeans.deploy>
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                <webapp.projectStage>Development</webapp.projectStage>
+            </properties>
+        </action>
+        <action>
+            <actionName>run.single.deploy</actionName>
+            <goals>
+                <goal>package</goal>
+            </goals>
+            <properties>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                <netbeans.deploy>true</netbeans.deploy>
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                <netbeans.deploy.clientUrlPart>${webpagePath}</netbeans.deploy.clientUrlPart>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                <webapp.projectStage>Development</webapp.projectStage>
+            </properties>
+        </action>
+        <action>
+            <actionName>debug.single.deploy</actionName>
+            <goals>
+                <goal>package</goal>
+            </goals>
+            <properties>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                <netbeans.deploy>true</netbeans.deploy>
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                <netbeans.deploy.debugmode>true</netbeans.deploy.debugmode>
+                <netbeans.deploy.clientUrlPart>${webpagePath}</netbeans.deploy.clientUrlPart>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                <webapp.projectStage>Development</webapp.projectStage>
+            </properties>
+        </action>
+    </actions>
diff --git a/jsf-archetype/faces-test-war/create-from-project-2.2/pom.xml b/jsf-archetype/faces-test-war/create-from-project-2.2/pom.xml
new file mode 100644
index 0000000..9e9d165
--- /dev/null
+++ b/jsf-archetype/faces-test-war/create-from-project-2.2/pom.xml
@@ -0,0 +1,306 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  
+  <groupId>com.sun.faces</groupId>
+  <artifactId>faces-2.2-test-war</artifactId>
+  <version>0.2</version>
+  <packaging>war</packaging>
+  <name>Automated Test Depending on JSF 2.2</name>
+  
+  <build>
+    <finalName>test-${project.artifactId}</finalName>
+  </build>
+  
+  <dependencies>
+    <dependency>
+      <groupId>javax.faces</groupId>
+      <artifactId>javax.faces-api</artifactId>
+      <version>2.2</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>javax</groupId>
+      <artifactId>javaee-web-api</artifactId>
+      <version>6.0</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+      <version>4.11</version>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>net.sourceforge.htmlunit</groupId>
+      <artifactId>htmlunit</artifactId>
+      <version>2.12</version>
+      <scope>test</scope>
+    </dependency>
+  </dependencies>
+  
+  <profiles>
+    <profile>
+      <id>faces-test</id>
+      <build>
+        <pluginManagement>
+          <plugins>
+            <plugin>
+              <artifactId>maven-antrun-plugin</artifactId>
+              <version>1.7</version>
+            </plugin>
+            <plugin>
+              <artifactId>maven-assembly-plugin</artifactId>
+              <version>2.2-beta-2</version>
+            </plugin>
+            <plugin>
+              <artifactId>maven-clean-plugin</artifactId>
+              <version>2.2</version>
+            </plugin>
+            <plugin>
+              <artifactId>maven-compiler-plugin</artifactId>
+              <version>3.0</version>
+            </plugin>
+            <plugin>
+              <artifactId>maven-dependency-plugin</artifactId>
+              <version>2.6</version>
+            </plugin>
+            <plugin>
+              <artifactId>maven-deploy-plugin</artifactId>
+              <version>2.4</version>
+            </plugin>
+            <plugin>
+              <artifactId>maven-ear-plugin</artifactId>
+              <version>2.3.1</version>
+            </plugin>
+            <plugin>
+              <artifactId>maven-ejb-plugin</artifactId>
+              <version>2.1</version>
+            </plugin>
+            <plugin>
+              <artifactId>maven-install-plugin</artifactId>
+              <version>2.2</version>
+            </plugin>
+            <plugin>
+              <artifactId>maven-jar-plugin</artifactId>
+              <version>2.2</version>
+            </plugin>
+            <plugin>
+              <artifactId>maven-javadoc-plugin</artifactId>
+              <version>2.5</version>
+            </plugin>
+            <plugin>
+              <artifactId>maven-plugin-plugin</artifactId>
+              <version>2.4.3</version>
+            </plugin>
+            <plugin>
+              <artifactId>maven-rar-plugin</artifactId>
+              <version>2.2</version>
+            </plugin>
+            <plugin>
+              <artifactId>maven-release-plugin</artifactId>
+              <version>2.0-beta-8</version>
+            </plugin>
+            <plugin>
+              <artifactId>maven-failsafe-plugin</artifactId>
+              <version>2.12.4</version>
+            </plugin>
+            <plugin>
+              <artifactId>maven-resources-plugin</artifactId>
+              <version>2.6</version>
+            </plugin>
+            <plugin>
+              <artifactId>maven-site-plugin</artifactId>
+              <version>3.2</version>
+            </plugin>
+            <plugin>
+              <artifactId>maven-source-plugin</artifactId>
+              <version>2.0.4</version>
+            </plugin>
+            <plugin>
+              <artifactId>maven-surefire-plugin</artifactId>
+              <version>2.4.3</version>
+            </plugin>
+            <plugin>
+              <artifactId>maven-surefire-report-plugin</artifactId>
+              <version>2.12.4</version>
+            </plugin>
+            <plugin>
+              <artifactId>maven-war-plugin</artifactId>
+              <version>2.3</version>
+            </plugin>
+          </plugins>
+        </pluginManagement>
+        <plugins>
+          <plugin>
+            <groupId>org.apache.maven.plugins</groupId>
+            <artifactId>maven-compiler-plugin</artifactId>
+            <inherited>true</inherited>
+            <configuration>
+              <source>1.6</source>
+              <target>1.6</target>
+              <encoding>${project.build.sourceEncoding}</encoding>
+            </configuration>
+          </plugin>
+          <plugin>
+            <artifactId>maven-resources-plugin</artifactId>
+            <version>2.6</version>
+            <inherited>true</inherited>
+            <configuration>
+              <encoding>${project.build.sourceEncoding}</encoding>
+            </configuration>
+          </plugin>
+          
+        </plugins>
+        
+      </build>
+
+      <repositories>
+        <repository>
+          <releases>
+            <enabled>false</enabled>
+            <updatePolicy>always</updatePolicy>
+            <checksumPolicy>warn</checksumPolicy>
+          </releases>
+          <snapshots>
+            <updatePolicy>always</updatePolicy>
+            <checksumPolicy>warn</checksumPolicy>
+          </snapshots>
+          <id>non.sonatype.java.net</id>
+          <name>java.net</name>
+          <url>http://download.java.net/maven/2</url>
+        </repository>
+        <repository>
+          <releases>
+            <enabled>false</enabled>
+            <updatePolicy>always</updatePolicy>
+            <checksumPolicy>warn</checksumPolicy>
+          </releases>
+          <snapshots>
+            <updatePolicy>always</updatePolicy>
+            <checksumPolicy>warn</checksumPolicy>
+          </snapshots>
+          <id>java.net.snapshots</id>
+          <name>java.net SNAPSHOTS</name>
+          <url>https://maven.java.net/content/repositories/snapshots</url>
+        </repository>
+        <repository>
+          <snapshots>
+            <enabled>false</enabled>
+          </snapshots>
+          <id>central</id>
+          <name>Maven Repository Switchboard</name>
+          <url>http://repo1.maven.org/maven2</url>
+        </repository>
+      </repositories>
+
+      <pluginRepositories>
+        <pluginRepository>
+          <releases>
+            <updatePolicy>never</updatePolicy>
+          </releases>
+          <snapshots>
+            <enabled>false</enabled>
+          </snapshots>
+          <id>central</id>
+          <name>Maven Plugin Repository</name>
+          <url>http://repo1.maven.org/maven2</url>
+        </pluginRepository>
+      </pluginRepositories>
+      <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+        <webapp.partialStateSaving>true</webapp.partialStateSaving>
+        <webapp.projectStage>Production</webapp.projectStage>
+        <webapp.stateSavingMethod>server</webapp.stateSavingMethod>
+      </properties>
+      
+    </profile>
+
+    <profile>
+      <id>faces-test-run</id>
+      <build>
+        <plugins>
+
+          <plugin>
+            <artifactId>maven-failsafe-plugin</artifactId>
+            <version>2.12.4</version>
+            <executions>
+              <execution>
+                <goals>
+                  <goal>integration-test</goal>
+                  <goal>verify</goal>
+                </goals>
+              </execution>
+            </executions>
+            <inherited>true</inherited>
+            <configuration>
+              <systemPropertyVariables>
+                <integration.serverName>localhost</integration.serverName>
+                <integration.serverPort>8080</integration.serverPort>
+                <integration.serverProtocol>${integration.serverProtocol}</integration.serverProtocol>
+                <integration.url>http://localhost:8080/test-${project.artifactId}/</integration.url>
+                <jsf.version>2.1</jsf.version>
+                <project.build.finalName>test-${project.artifactId}</project.build.finalName>
+              </systemPropertyVariables>
+            </configuration>
+          </plugin>
+          
+        </plugins>
+        
+      </build>
+
+      <properties>
+        <integration.protocol>http</integration.protocol>
+        <integration.serverName>localhost</integration.serverName>
+        <integration.serverPort>8080</integration.serverPort>
+      </properties>
+      
+    </profile>
+
+
+  </profiles>
+    
+
+</project>
diff --git a/jsf-archetype/faces-test-war/create-from-project-2.2/src/main/java/com/sun/faces/test/artifactId/UserBean.java b/jsf-archetype/faces-test-war/create-from-project-2.2/src/main/java/com/sun/faces/test/artifactId/UserBean.java
new file mode 100644
index 0000000..92bcd20
--- /dev/null
+++ b/jsf-archetype/faces-test-war/create-from-project-2.2/src/main/java/com/sun/faces/test/artifactId/UserBean.java
@@ -0,0 +1,92 @@
+package com.sun.faces.test.artifactId;
+
+import java.io.Serializable;
+import java.util.Date;
+import javax.enterprise.context.SessionScoped;
+import javax.faces.application.FacesMessage;
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.validator.ValidatorException;
+import javax.inject.Named;
+
+ at Named
+ at SessionScoped
+public class UserBean implements Serializable {
+    
+    protected String firstName = "Duke";
+    protected String lastName = "Java";
+    protected Date dob;
+    protected String sex = "Unknown";
+    protected String email;
+    protected String serviceLevel = "medium";
+    
+    public UserBean() {}
+
+    public String getFirstName() {
+        return firstName;
+    }
+
+    public void setFirstName(String firstName) {
+        this.firstName = firstName;
+    }
+
+    public String getLastName() {
+        return lastName;
+    }
+
+    public void setLastName(String lastName) {
+        this.lastName = lastName;
+    }
+
+    public Date getDob() {
+        return dob;
+    }
+
+    public void setDob(Date dob) {
+        this.dob = dob;
+    }
+
+    public String getSex() {
+        return sex;
+    }
+
+    public void setSex(String sex) {
+        this.sex = sex;
+    }
+
+    public String getEmail() {
+        return email;
+    }
+
+    public void setEmail(String email) {
+        this.email = email;
+    }
+
+    public String getServiceLevel() {
+        return serviceLevel;
+    }
+
+    public void setServiceLevel(String serviceLevel) {
+        this.serviceLevel = serviceLevel;
+    }
+    
+    public void validateEmail(FacesContext context, UIComponent toValidate,
+            Object value) throws ValidatorException {
+        String emailStr = (String) value;
+        if (-1 == emailStr.indexOf("@")) {
+            FacesMessage message = new FacesMessage("Invalid email address");
+            throw new ValidatorException(message);
+        }
+    }
+
+    public String addConfirmedUser() {
+        // This method would call a database or other service and add the 
+        // confirmed user information.
+        // For now, we just place an informative message in request scope
+        FacesMessage doneMessage = 
+                new FacesMessage("Successfully added new user");
+        FacesContext.getCurrentInstance().addMessage(null, doneMessage);
+        return "done";
+    }
+}
+
diff --git a/jsf-archetype/faces-test-war/create-from-project-2.2/src/main/webapp/WEB-INF/beans.xml b/jsf-archetype/faces-test-war/create-from-project-2.2/src/main/webapp/WEB-INF/beans.xml
new file mode 100644
index 0000000..c782f57
--- /dev/null
+++ b/jsf-archetype/faces-test-war/create-from-project-2.2/src/main/webapp/WEB-INF/beans.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- This file can be an empty text file (0 bytes) -->
+<!-- We're declaring the schema to save you time if you do have to configure 
+   this in the future -->
+<beans xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+   xsi:schemaLocation="
+        http://java.sun.com/xml/ns/javaee 
+        http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
+</beans>
diff --git a/jsf-archetype/faces-test-war/create-from-project-2.2/src/main/webapp/WEB-INF/glassfish-web.xml b/jsf-archetype/faces-test-war/create-from-project-2.2/src/main/webapp/WEB-INF/glassfish-web.xml
new file mode 100644
index 0000000..ab109fa
--- /dev/null
+++ b/jsf-archetype/faces-test-war/create-from-project-2.2/src/main/webapp/WEB-INF/glassfish-web.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
+<glassfish-web-app error-url="">
+  <context-root>/test-${artifactId}</context-root>
+  <class-loader delegate="true"/>
+  <jsp-config>
+    <property name="keepgenerated" value="true">
+      <description>Keep a copy of the generated servlet class' java code.</description>
+    </property>
+  </jsp-config>
+</glassfish-web-app>
diff --git a/jsf-archetype/faces-test-war/create-from-project-2.2/src/main/webapp/WEB-INF/web.xml b/jsf-archetype/faces-test-war/create-from-project-2.2/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..8722f96
--- /dev/null
+++ b/jsf-archetype/faces-test-war/create-from-project-2.2/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>${webapp.projectStage}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
+        <param-value>${webapp.partialStateSaving}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>${webapp.stateSavingMethod}</param-value>
+    </context-param>
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <welcome-file-list>
+        <welcome-file>faces/index.xhtml</welcome-file>
+    </welcome-file-list>
+</web-app>
diff --git a/jsf-archetype/faces-test-war/create-from-project-2.2/src/main/webapp/index.xhtml b/jsf-archetype/faces-test-war/create-from-project-2.2/src/main/webapp/index.xhtml
new file mode 100644
index 0000000..3667969
--- /dev/null
+++ b/jsf-archetype/faces-test-war/create-from-project-2.2/src/main/webapp/index.xhtml
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <head>
+        <title></title>
+    </head>
+    <body>
+        <h:form prependId="false">
+            <h:inputText value="#{userBean.firstName}" />
+            <h:commandButton value="submit" />
+        </h:form>
+    </body>
+</html>
+
diff --git a/jsf-archetype/faces-test-war/create-from-project-2.2/src/test/java/com/sun/faces/test/artifactId/AutomatedTestIT.java b/jsf-archetype/faces-test-war/create-from-project-2.2/src/test/java/com/sun/faces/test/artifactId/AutomatedTestIT.java
new file mode 100644
index 0000000..fd6b39d
--- /dev/null
+++ b/jsf-archetype/faces-test-war/create-from-project-2.2/src/test/java/com/sun/faces/test/artifactId/AutomatedTestIT.java
@@ -0,0 +1,115 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.artifactId;
+
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.assertEquals;
+
+public class AutomatedTestIT {
+    /**
+     * Stores the web URL.
+     */
+    private String webUrl;
+    /**
+     * Stores the web client.
+     */
+    private WebClient webClient;
+
+    /**
+     * Setup before testing.
+     * 
+     * @throws Exception when a serious error occurs.
+     */
+    @BeforeClass
+    public static void setUpClass() throws Exception {
+    }
+
+    /**
+     * Cleanup after testing.
+     * 
+     * @throws Exception when a serious error occurs.
+     */
+    @AfterClass
+    public static void tearDownClass() throws Exception {
+    }
+
+    /**
+     * Setup before testing.
+     */
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    /**
+     * Tear down after testing.
+     */
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testBuilderDefinedFlowWithMethodCall() throws Exception {
+        doTest("start_a");
+    }
+
+    @Test
+    public void testXmlDefinedFlowWithMethodCall() throws Exception {
+        doTest("start_b");
+    }
+
+    public void doTest(String startId) throws Exception {
+        HtmlPage page = webClient.getPage(webUrl);
+
+        assertTrue(page.getBody().asText().indexOf("") != -1);
+        
+    }
+}
diff --git a/jsf-archetype/faces-test-war/install-to-local-repo.sh b/jsf-archetype/faces-test-war/install-to-local-repo.sh
new file mode 100755
index 0000000..690fe87
--- /dev/null
+++ b/jsf-archetype/faces-test-war/install-to-local-repo.sh
@@ -0,0 +1,18 @@
+#!/bin/sh
+cd create-from-project-2.2
+
+mvn clean archetype:create-from-project
+
+. ../run-after-create-from-project
+
+cd target/generated-sources/archetype
+
+mvn install
+
+NOW=`date '+%Y%m%d-%H%M'`
+
+echo "Execute these steps to test the just-installed archetype: mkdir /tmp/$NOW; cd /tmp/$NOW; mvn archetype:generate -DarchetypeCatalog=local"
+
+echo "Manually inspect the created project in /tmp/$NOW"
+
+
diff --git a/jsf-archetype/faces-test-war/run-after-create-from-project b/jsf-archetype/faces-test-war/run-after-create-from-project
new file mode 100755
index 0000000..3460c41
--- /dev/null
+++ b/jsf-archetype/faces-test-war/run-after-create-from-project
@@ -0,0 +1,29 @@
+# repair the version numbers in the XML prolog of config files
+find target/generated-sources/archetype/target/classes/archetype-resources/src/main/webapp -name "*.xml" -exec perl -pi.bak -e 's/xml version="..version."/xml version="1.0"/g' {} \; -print
+
+find target/generated-sources/archetype/target/classes/archetype-resources -name "nbactions.xml" -exec perl -pi.bak -e 's/xml version="..version."/xml version="1.0"/g' {} \; -print
+
+# repair the version numbers in the XML prolog of XHTML files
+find target/generated-sources/archetype/target/classes/archetype-resources/src/main/webapp -name "*.xhtml" -exec perl -pi.bak -e 's/xml version="..version."/xml version="1.0"/g' {} \; -print
+
+# make it so the <context-root> in glassfish-web.xml gets correctly replaced.
+find target/generated-sources/archetype/target/classes/archetype-resources/src/main/webapp/WEB-INF -name "glassfish-web.xml" -exec perl -pi.bak -e 's/.{symbol_dollar}{artifactId}/\${artifactId}/g' {} \; -print
+
+# make it so the <context-root> in nbactions.xml gets correctly replaced.
+find target/generated-sources/archetype/target/classes/archetype-resources -name "nbactions.xml" -exec perl -pi.bak -e 's/.{symbol_dollar}{artifactId}/\${artifactId}/g' {} \; -print
+
+# make it so the test name in nbactions.xml gets correctly replaced.
+find target/generated-sources/archetype/target/classes/archetype-resources -name "nbactions.xml" -exec perl -pi.bak -e 's/.{symbol_dollar}{packageClassName}/\${artifactId}/g' {} \; -print
+
+# make it so the jpda.address in nbactions.xml gets correctly replaced.
+find target/generated-sources/archetype/target/classes/archetype-resources -name "nbactions.xml" -exec perl -pi.bak -e 's/.{symbol_dollar}{jpda.address}/\${jpda.address}/g' {} \; -print
+
+# make it so the webpagePath in nbactions.xml gets correctly replaced.
+find target/generated-sources/archetype/target/classes/archetype-resources -name "nbactions.xml" -exec perl -pi.bak -e 's/.{symbol_dollar}{webpagePath}/\${webpagePath}/g' {} \; -print
+
+# modify the generated pom that controls deployment of the maven-archetype packaged artifact
+find target/generated-sources/archetype -name pom.xml -maxdepth 1 -exec perl -pi.bak -e 's%<name>faces-test-war-archetype</name>%<name>faces-test-war-archetype</name><distributionManagement><snapshotRepository><id>jvnet-nexus-snapshots</id><name>Java.net Nexus Snapshots Repository</name><url>https://maven.java.net/content/repositories/snapshots/</url></snapshotRepository><repository><id>jvnet-nexus-staging</id><name>Java.net Nexus Staging Repository</name><url>https://maven.java.net/serv [...]
+find target/generated-sources/archetype -name pom.xml -maxdepth 1 -exec perl -pi.bak -e 's%</plugins>%<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-deploy-plugin</artifactId><configuration><updateReleaseInfo>true</updateReleaseInfo></configuration></plugin></plugins>%g' {} \; -print
+
+# remove the backup files
+find . -name "*.bak" -exec rm -f {} \; -print
diff --git a/jsf-archetype/javax.faces-war-embedded-glassfish/apply_to_pom.patch b/jsf-archetype/javax.faces-war-embedded-glassfish/apply_to_pom.patch
new file mode 100644
index 0000000..ab6c673
--- /dev/null
+++ b/jsf-archetype/javax.faces-war-embedded-glassfish/apply_to_pom.patch
@@ -0,0 +1,167 @@
+--- target/generated-sources/archetype/pom_xml.orig	2011-08-27 11:45:04.000000000 -0400
++++ target/generated-sources/archetype/pom.xml	2011-08-27 11:49:14.000000000 -0400
+@@ -9,6 +9,59 @@
+ 
+   <name>javax.faces-war-archetype</name>
+ 
++
++    <description>
++        An archetype that creates a war project that depends on JSF 2.1, and includes a plugin dependency on maven-embedded-glassfish-plugin.
++    </description>
++    <url>http://java.sun.com/javaee/javaserverfaces/</url>
++    <licenses>
++        <license>
++            <name>
++                COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) plus GPL
++            </name>
++            <url>http://glassfish.java.net/nonav/public/CDDL+GPL.html</url>
++            <distribution>repo</distribution>
++        </license>
++    </licenses>
++    <scm>
++        <url>http://java.net/projects/mojarra/sources</url>
++        <connection>scm:svn:https://svn.java.net/svn/mojarra~svn/trunk</connection>
++    </scm>
++    <developers>
++        <developer>
++            <id>edburns</id>
++            <name>Ed Burns</name>
++            <email>edward.burns at oracle.com</email>
++            <organization>Oracle America, Inc.</organization>
++            <roles>
++                <role>project-owner</role>
++            </roles>
++            <timezone>-6</timezone>
++        </developer>
++        <developer>
++            <id>rogerk</id>
++            <name>Roger Kitain</name>
++            <email>roger.kitain at oracle.com</email>
++            <organization>Oracle America, Inc.</organization>
++            <roles>
++                <role>project-owner</role>
++            </roles>
++            <timezone>-6</timezone>
++        </developer>
++    </developers>
++    <distributionManagement>
++      <snapshotRepository>
++        <id>jvnet-nexus-snapshots</id>
++        <name>Java.net Nexus Snapshots Repository</name>
++        <url>https://maven.java.net/content/repositories/snapshots/</url>
++      </snapshotRepository>
++      <repository>
++        <id>jvnet-nexus-staging</id>
++        <name>Java.net Nexus Staging Repository</name>
++        <url>https://maven.java.net/service/local/staging/deploy/maven2/</url>
++      </repository>
++    </distributionManagement>
++
+   <build>
+     <extensions>
+       <extension>
+@@ -17,6 +70,17 @@
+         <version>2.0</version>
+       </extension>
+     </extensions>
++
++        <plugins>
++            <plugin>
++                <groupId>org.apache.maven.plugins</groupId>
++                <artifactId>maven-deploy-plugin</artifactId>
++                <configuration>
++                  <updateReleaseInfo>true</updateReleaseInfo>
++                </configuration>
++            </plugin>
++
++        </plugins>
+ 
+     <pluginManagement>
+       <plugins>
+@@ -27,4 +91,86 @@
+       </plugins>
+     </pluginManagement>
+   </build>
++
++    <issueManagement>
++        <system>issueZilla</system>
++        <url>
++            https://javaserverfaces.dev.java.net/servlets/ProjectIssues
++        </url>
++    </issueManagement>
++    <mailingLists>
++        <mailingList>
++            <name>JSF 2.2 Specification Comments</name>
++            <post>jsr-314-comments at jcp.org</post>
++        </mailingList>
++        <mailingList>
++            <name>Mojarra Implementation Dev List</name>
++            <post>dev at javaserverfaces.dev.java.net</post>
++            <archive>
++                https://javaserverfaces.dev.java.net/servlets/SummarizeList?listName=dev
++            </archive>
++        </mailingList>
++    </mailingLists>
++    <contributors>
++        <contributor>
++            <name>Craig McClanahan</name>
++        </contributor>
++        <contributor>
++            <name>Deepak Gothe</name>
++        </contributor>
++        <contributor>
++            <name>Gregory Murray</name>
++        </contributor>
++        <contributor>
++            <name>Justyna Horwat</name>
++        </contributor>
++        <contributor>
++            <name>Jayashri Visvanathan</name>
++        </contributor>
++        <contributor>
++            <name>Jennifer Ball</name>
++        </contributor>
++        <contributor>
++            <name>Jacob Hookom</name>
++        </contributor>
++        <contributor>
++            <name>Raj Premkumar</name>
++        </contributor>
++        <contributor>
++            <name>Stan Silvert</name>
++        </contributor>
++        <contributor>
++            <name>Mike Youngstrom</name>
++        </contributor>
++        <contributor>
++            <name>Jason Lee</name>
++        </contributor>
++    </contributors>
++    <organization>
++        <name>Oracle America, Inc</name>
++        <url>http://www.oracle.com/</url>
++    </organization>
++    <profiles>
++      <profile>
++        <id>release-sign-artifacts</id>
++        <build>
++          <plugins>
++            <plugin>
++              <groupId>org.apache.maven.plugins</groupId>
++              <artifactId>maven-gpg-plugin</artifactId>
++              <version>1.3</version>
++              <executions>
++                <execution>
++                  <id>sign-artifacts</id>
++                  <phase>verify</phase>
++                  <goals>
++                    <goal>sign</goal>
++                  </goals>
++                </execution>
++              </executions>
++            </plugin>
++          </plugins>
++        </build>
++      </profile>
++    </profiles>
+ </project>
diff --git a/jsf-archetype/javax.faces-war-embedded-glassfish/create-from-project-2.1/move-to-parent-directory-or-delete-build.xml b/jsf-archetype/javax.faces-war-embedded-glassfish/create-from-project-2.1/move-to-parent-directory-or-delete-build.xml
new file mode 100644
index 0000000..7e5f5ca
--- /dev/null
+++ b/jsf-archetype/javax.faces-war-embedded-glassfish/create-from-project-2.1/move-to-parent-directory-or-delete-build.xml
@@ -0,0 +1,95 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<!-- ************ JSF build file ************************************** -->
+<project name="JAVASERVERFACES-i_jsf_xxxx" default="test" basedir=".">
+
+    <property file="../../build.properties"/>
+    <path id="i_jsf_xxxx.classpath">  
+        <path refid="html.classpath" />
+        <pathelement location="${basedir}/i_jsf_xxxx_htmlunit/target/classes"/>
+    </path>
+
+    <import file="${jsf.build.home}/common/ant/common.xml"/>
+
+    <target name="build">
+        <jsf.mvn dir="${basedir}/i_jsf_xxxx_war" goals="install" />
+        <jsf.mvn dir="${basedir}/i_jsf_xxxx_htmlunit" goals="install" />
+    </target>    
+
+    <target name="clean">
+        <jsf.mvn dir="${basedir}/i_jsf_xxxx_htmlunit" goals="clean" />
+        <jsf.mvn dir="${basedir}/i_jsf_xxxx_war" goals="clean" />
+    </target>    
+
+    <target name="install">
+        <deploy.artifact
+              artifact="${basedir}/i_jsf_xxxx_war/target/i_jsf_xxxx_war.war"
+              appName="i_jsf_xxxx_war"/>
+    </target>    
+
+    <target name="remove">
+        <undeploy.artifact
+              artifact="${basedir}/i_jsf_xxxx_war/target/i_jsf_xxxx_war.war"
+              appName="i_jsf_xxxx_war"/>
+    </target>    
+
+    <target name="test" depends="define.scenario.aware.port">
+
+        <jsf.junit context-path="/i_jsf_xxxx_simple_war"
+                 classpath-refid="i_jsf_xxxx.classpath"    
+                 test-results-dir="${regression.test.results.dir}">
+            <tests>
+                <fileset dir="${basedir}/i_jsf_xxxx_htmlunit/target/classes"
+                     includes="com/sun/faces/regression/i_jsf_xxxx/Issuei_jsf_xxxxSimpleTestCase.class"/> 
+            </tests>
+        </jsf.junit>
+
+        <jsf.tester request="/faces/i_jsf_xxxx_war.xhtml"
+                     context-path="/i_jsf_xxxx_war"
+                     classpath-refid="html.classpath"
+                     test-results-dir="${regression.test.results.dir}"
+                     regexp="(?s).*bean:\s*bar.*"/>
+
+    </target>    
+
+</project>
diff --git a/jsf-archetype/javax.faces-war-embedded-glassfish/create-from-project-2.1/pom.xml b/jsf-archetype/javax.faces-war-embedded-glassfish/create-from-project-2.1/pom.xml
new file mode 100644
index 0000000..d6569c9
--- /dev/null
+++ b/jsf-archetype/javax.faces-war-embedded-glassfish/create-from-project-2.1/pom.xml
@@ -0,0 +1,82 @@
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <groupId>javax.faces</groupId>
+    <artifactId>javax.faces-war-embedded-glassfish</artifactId>
+    <version>2.1-SNAPSHOT</version>
+    <packaging>war</packaging>
+    <name>${project.artifactId}</name>
+    <description>
+        A simple project with war packaging that depends on JSF 2.1 and
+        javaee 6, in that order. This archetype includes the use of
+        maven-embedded-glassfish-plugin. To use it, simply invoke
+        mvn package embedded-glassfish:run
+    </description>
+    <url>http://jsf-spec.java.net/</url>
+    <build>
+        <finalName>${project.artifactId}</finalName>
+        <plugins>
+            <plugin>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                    <source>1.6</source>
+                    <target>1.6</target>
+                </configuration>
+            </plugin>
+             <plugin>
+                <groupId>org.glassfish</groupId>
+                <artifactId>maven-embedded-glassfish-plugin</artifactId>
+                <version>3.1.1</version>
+                <configuration>
+                    <app>target/${project.artifactId}.war</app>
+                    <name>${project.artifactId}</name>
+                    <ports>
+                        <http-listener>8080</http-listener>
+                        <https-listener>8181</https-listener>
+                    </ports>
+                </configuration>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>start</goal> <!-- this will run during pre-integration-test phase -->
+                            <goal>deploy</goal> <!-- this will run during pre-integration-test phase -->
+                            <goal>undeploy</goal> <!-- this will run during post-integration-test phase -->
+                            <goal>stop</goal> <!-- this will run during post-integration-test phase -->
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <artifactId>maven-war-plugin</artifactId>
+                <configuration>
+                  <failOnMissingWebXml>false</failOnMissingWebXml>
+                </configuration>
+            </plugin>
+
+        </plugins>
+    </build>
+    <dependencies>
+        <dependency>
+            <groupId>org.glassfish.extras</groupId>
+            <artifactId>glassfish-embedded-all</artifactId>
+            <version>3.1.1</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>javax.faces</groupId>
+            <artifactId>javax.faces-api</artifactId>
+            <version>2.1</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>javax</groupId>
+            <artifactId>javaee-api</artifactId>
+            <version>6.0</version>
+            <scope>provided</scope>
+        </dependency>
+    </dependencies>
+</project>
+
+
diff --git a/jsf-archetype/javax.faces-war-embedded-glassfish/create-from-project-2.1/src/main/java/org/glassfish/javax/faces_war/UserBean.java b/jsf-archetype/javax.faces-war-embedded-glassfish/create-from-project-2.1/src/main/java/org/glassfish/javax/faces_war/UserBean.java
new file mode 100644
index 0000000..b636341
--- /dev/null
+++ b/jsf-archetype/javax.faces-war-embedded-glassfish/create-from-project-2.1/src/main/java/org/glassfish/javax/faces_war/UserBean.java
@@ -0,0 +1,92 @@
+package org.glassfish.javax.faces_war;
+
+import java.io.Serializable;
+import java.util.Date;
+import javax.enterprise.context.SessionScoped;
+import javax.faces.application.FacesMessage;
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.validator.ValidatorException;
+import javax.inject.Named;
+
+ at Named
+ at SessionScoped
+public class UserBean implements Serializable {
+    
+    protected String firstName = "Duke";
+    protected String lastName = "Java";
+    protected Date dob;
+    protected String sex = "Unknown";
+    protected String email;
+    protected String serviceLevel = "medium";
+    
+    public UserBean() {}
+
+    public String getFirstName() {
+        return firstName;
+    }
+
+    public void setFirstName(String firstName) {
+        this.firstName = firstName;
+    }
+
+    public String getLastName() {
+        return lastName;
+    }
+
+    public void setLastName(String lastName) {
+        this.lastName = lastName;
+    }
+
+    public Date getDob() {
+        return dob;
+    }
+
+    public void setDob(Date dob) {
+        this.dob = dob;
+    }
+
+    public String getSex() {
+        return sex;
+    }
+
+    public void setSex(String sex) {
+        this.sex = sex;
+    }
+
+    public String getEmail() {
+        return email;
+    }
+
+    public void setEmail(String email) {
+        this.email = email;
+    }
+
+    public String getServiceLevel() {
+        return serviceLevel;
+    }
+
+    public void setServiceLevel(String serviceLevel) {
+        this.serviceLevel = serviceLevel;
+    }
+    
+    public void validateEmail(FacesContext context, UIComponent toValidate,
+            Object value) throws ValidatorException {
+        String emailStr = (String) value;
+        if (-1 == emailStr.indexOf("@")) {
+            FacesMessage message = new FacesMessage("Invalid email address");
+            throw new ValidatorException(message);
+        }
+    }
+
+    public String addConfirmedUser() {
+        // This method would call a database or other service and add the 
+        // confirmed user information.
+        // For now, we just place an informative message in request scope
+        FacesMessage doneMessage = 
+                new FacesMessage("Successfully added new user");
+        FacesContext.getCurrentInstance().addMessage(null, doneMessage);
+        return "done";
+    }
+}
+
diff --git a/jsf-archetype/javax.faces-war-embedded-glassfish/create-from-project-2.1/src/main/webapp/WEB-INF/beans.xml b/jsf-archetype/javax.faces-war-embedded-glassfish/create-from-project-2.1/src/main/webapp/WEB-INF/beans.xml
new file mode 100644
index 0000000..e69de29
diff --git a/jsf-archetype/javax.faces-war-embedded-glassfish/create-from-project-2.1/src/main/webapp/WEB-INF/web.xml b/jsf-archetype/javax.faces-war-embedded-glassfish/create-from-project-2.1/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..092afaa
--- /dev/null
+++ b/jsf-archetype/javax.faces-war-embedded-glassfish/create-from-project-2.1/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,39 @@
+<?xml version='1.0' encoding='UTF-8'?>
+
+<web-app version="3.0"
+         xmlns="http://java.sun.com/xml/ns/javaee"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+
+    <display-name>mojarra-regression-test</display-name>
+    <description>A simple regression test to make it easier to get your bug fixed. The only reason we need a web.xml is to set the PROJECT_STAGE to Develoment.  If you have a web.xml, then you need to map the FacesServlet.</description>
+
+    <context-param>
+        <description>
+            Tell the runtime where we are in the project development
+            lifecycle.  Valid values are: 
+            Development, UnitTest, SystemTest, or Production.
+            The runtime will display helpful hints to correct common mistakes
+            when the value is Development.
+        </description>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>Development</param-value>
+    </context-param>
+
+    <!-- Faces Servlet -->
+  <servlet>
+    <servlet-name>Faces Servlet</servlet-name>
+    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+    <load-on-startup>1</load-on-startup>
+  </servlet>
+
+   <servlet-mapping>
+       <servlet-name>Faces Servlet</servlet-name>
+       <url-pattern>/faces/*</url-pattern>
+   </servlet-mapping>
+
+   <welcome-file-list>
+     <welcome-file>faces/main.xhtml</welcome-file>
+   </welcome-file-list>
+
+</web-app>
diff --git a/jsf-archetype/javax.faces-war-embedded-glassfish/create-from-project-2.1/src/main/webapp/main.xhtml b/jsf-archetype/javax.faces-war-embedded-glassfish/create-from-project-2.1/src/main/webapp/main.xhtml
new file mode 100644
index 0000000..bbbc4ea
--- /dev/null
+++ b/jsf-archetype/javax.faces-war-embedded-glassfish/create-from-project-2.1/src/main/webapp/main.xhtml
@@ -0,0 +1,14 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+<h:head>
+  <title>A Simple JavaServer Faces 2.0 View</title>
+</h:head>
+<h:body>
+  <h:form>
+      First name: #{userBean.firstName} Last name: #{userBean.lastName}
+    <p><h:commandButton value="submit" /></p>
+  </h:form>
+</h:body>
+</html>
diff --git a/jsf-archetype/javax.faces-war-embedded-glassfish/install-to-local-repo.sh b/jsf-archetype/javax.faces-war-embedded-glassfish/install-to-local-repo.sh
new file mode 100755
index 0000000..a4b9599
--- /dev/null
+++ b/jsf-archetype/javax.faces-war-embedded-glassfish/install-to-local-repo.sh
@@ -0,0 +1,22 @@
+#!/bin/sh
+cd create-from-project-2.1
+
+mvn clean archetype:create-from-project
+
+patch -p0 < ../apply_to_pom.patch 
+
+find target \( -name UserBean.java -or -name web.xml \) -exec perl -pi.bak -e "s/.[\{]groupId[\}]/javax.faces/g" {} \; -print
+
+find . -name "*~" -exec rm -f {} \; -print; find . -name ".*~" -exec rm -f {} \; -print; find . -name ".*.bak" -exec rm -f {} \; -print; find . -name "*backup*" -exec rm -f {} \; -print; find . -name "*.bak" -exec rm -f {} \; -print;
+
+cd target/generated-sources/archetype
+
+mvn install
+
+NOW=`date '+%Y%m%d-%H%M'`
+
+echo "Execute these steps to test the just-installed archetype: mkdir /tmp/$NOW; cd /tmp/$NOW; mvn archetype:generate -DarchetypeCatalog=local"
+
+echo "Manually inspect the created project in /tmp/$NOW"
+
+
diff --git a/jsf-archetype/javax.faces-war/apply_to_pom.patch b/jsf-archetype/javax.faces-war/apply_to_pom.patch
new file mode 100644
index 0000000..b419ae7
--- /dev/null
+++ b/jsf-archetype/javax.faces-war/apply_to_pom.patch
@@ -0,0 +1,113 @@
+--- target/generated-sources/archetype/pom.xml.orig	2013-04-01 11:56:56.000000000 -0400
++++ target/generated-sources/archetype/pom.xml	2013-04-01 11:59:59.000000000 -0400
+@@ -48,6 +48,16 @@
+             </roles>
+             <timezone>-6</timezone>
+         </developer>
++        <developer>
++            <id>mriem</id>
++            <name>Manfred Riem</name>
++            <email>manfred.riem at oracle.com</email>
++            <organization>Oracle America, Inc.</organization>
++            <roles>
++                <role>project-owner</role>
++            </roles>
++            <timezone>-6</timezone>
++        </developer>
+     </developers>
+     <distributionManagement>
+       <snapshotRepository>
+@@ -91,6 +101,93 @@
+       </plugins>
+     </pluginManagement>
+   </build>
++
++     <issueManagement>
++         <system>JIRA</system>
++         <url>
++             http://java.net/jira/browse/JAVASERVERFACES
++         </url>
++     </issueManagement>
++     <mailingLists>
++         <mailingList>
++             <name>JSF 2.2 Specification Comments</name>
++             <post>users at javaserverfaces-spec-public.java.net</post>
++             <archive>
++                 http://jsf-spec.java.net/lists/
++             </archive>
++         </mailingList>
++         <mailingList>
++             <name>Mojarra Implementation Dev List</name>
++             <post>dev at javaserverfaces.java.net</post>
++             <archive>
++                 http://jsf.java.net/lists/
++             </archive>
++         </mailingList>
++     </mailingLists>
++     <contributors>
++         <contributor>
++             <name>Craig McClanahan</name>
++         </contributor>
++         <contributor>
++             <name>Deepak Gothe</name>
++         </contributor>
++         <contributor>
++             <name>Gregory Murray</name>
++         </contributor>
++         <contributor>
++             <name>Justyna Horwat</name>
++         </contributor>
++         <contributor>
++             <name>Jayashri Visvanathan</name>
++         </contributor>
++         <contributor>
++             <name>Jennifer Ball</name>
++         </contributor>
++         <contributor>
++             <name>Jacob Hookom</name>
++         </contributor>
++         <contributor>
++             <name>Raj Premkumar</name>
++         </contributor>
++         <contributor>
++             <name>Stan Silvert</name>
++         </contributor>
++         <contributor>
++             <name>Mike Youngstrom</name>
++         </contributor>
++         <contributor>
++             <name>Jason Lee</name>
++         </contributor>
++     </contributors>
++     <organization>
++         <name>Oracle America, Inc</name>
++         <url>http://www.oracle.com/</url>
++     </organization>
++     <profiles>
++       <profile>
++         <id>release-sign-artifacts</id>
++         <build>
++           <plugins>
++             <plugin>
++               <groupId>org.apache.maven.plugins</groupId>
++               <artifactId>maven-gpg-plugin</artifactId>
++               <version>1.3</version>
++               <executions>
++                 <execution>
++                   <id>sign-artifacts</id>
++                   <phase>verify</phase>
++                   <goals>
++                     <goal>sign</goal>
++                   </goals>
++                 </execution>
++               </executions>
++             </plugin>
++           </plugins>
++         </build>
++       </profile>
++     </profiles>
++
++
+ 
+   <description>A simple project with war packaging that depends on JSF 2.2-SNAPSHOT and 
+         javaee 6, in that order.</description>
diff --git a/jsf-archetype/javax.faces-war/create-from-project-2.1/move-to-parent-directory-or-delete-build.xml b/jsf-archetype/javax.faces-war/create-from-project-2.1/move-to-parent-directory-or-delete-build.xml
new file mode 100644
index 0000000..7e5f5ca
--- /dev/null
+++ b/jsf-archetype/javax.faces-war/create-from-project-2.1/move-to-parent-directory-or-delete-build.xml
@@ -0,0 +1,95 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<!-- ************ JSF build file ************************************** -->
+<project name="JAVASERVERFACES-i_jsf_xxxx" default="test" basedir=".">
+
+    <property file="../../build.properties"/>
+    <path id="i_jsf_xxxx.classpath">  
+        <path refid="html.classpath" />
+        <pathelement location="${basedir}/i_jsf_xxxx_htmlunit/target/classes"/>
+    </path>
+
+    <import file="${jsf.build.home}/common/ant/common.xml"/>
+
+    <target name="build">
+        <jsf.mvn dir="${basedir}/i_jsf_xxxx_war" goals="install" />
+        <jsf.mvn dir="${basedir}/i_jsf_xxxx_htmlunit" goals="install" />
+    </target>    
+
+    <target name="clean">
+        <jsf.mvn dir="${basedir}/i_jsf_xxxx_htmlunit" goals="clean" />
+        <jsf.mvn dir="${basedir}/i_jsf_xxxx_war" goals="clean" />
+    </target>    
+
+    <target name="install">
+        <deploy.artifact
+              artifact="${basedir}/i_jsf_xxxx_war/target/i_jsf_xxxx_war.war"
+              appName="i_jsf_xxxx_war"/>
+    </target>    
+
+    <target name="remove">
+        <undeploy.artifact
+              artifact="${basedir}/i_jsf_xxxx_war/target/i_jsf_xxxx_war.war"
+              appName="i_jsf_xxxx_war"/>
+    </target>    
+
+    <target name="test" depends="define.scenario.aware.port">
+
+        <jsf.junit context-path="/i_jsf_xxxx_simple_war"
+                 classpath-refid="i_jsf_xxxx.classpath"    
+                 test-results-dir="${regression.test.results.dir}">
+            <tests>
+                <fileset dir="${basedir}/i_jsf_xxxx_htmlunit/target/classes"
+                     includes="com/sun/faces/regression/i_jsf_xxxx/Issuei_jsf_xxxxSimpleTestCase.class"/> 
+            </tests>
+        </jsf.junit>
+
+        <jsf.tester request="/faces/i_jsf_xxxx_war.xhtml"
+                     context-path="/i_jsf_xxxx_war"
+                     classpath-refid="html.classpath"
+                     test-results-dir="${regression.test.results.dir}"
+                     regexp="(?s).*bean:\s*bar.*"/>
+
+    </target>    
+
+</project>
diff --git a/jsf-archetype/javax.faces-war/create-from-project-2.1/pom.xml b/jsf-archetype/javax.faces-war/create-from-project-2.1/pom.xml
new file mode 100644
index 0000000..bf17071
--- /dev/null
+++ b/jsf-archetype/javax.faces-war/create-from-project-2.1/pom.xml
@@ -0,0 +1,51 @@
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <groupId>javax.faces</groupId>
+    <artifactId>javax.faces-war</artifactId>
+    <version>2.1</version>
+    <packaging>war</packaging>
+    <name>${project.artifactId}</name>
+    <description>
+        A simple project with war packaging that depends on JSF 2.1 and 
+        javaee 6, in that order.
+    </description>
+    <url>http://jsf-spec.java.net/</url>
+    <build>
+        <finalName>${project.artifactId}</finalName>
+        <plugins>
+            <plugin>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                    <source>1.6</source>
+                    <target>1.6</target>
+                </configuration>
+            </plugin>
+            <plugin>
+                <artifactId>maven-war-plugin</artifactId>
+                <configuration>
+                  <failOnMissingWebXml>false</failOnMissingWebXml>
+                </configuration>
+            </plugin>
+
+        </plugins>
+    </build>
+    <dependencies>
+        <dependency>
+            <groupId>javax.faces</groupId>
+            <artifactId>javax.faces-api</artifactId>
+            <version>2.1</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>javax</groupId>
+            <artifactId>javaee-api</artifactId>
+            <version>6.0</version>
+            <scope>provided</scope>
+        </dependency>
+    </dependencies>
+</project>
+
+
diff --git a/jsf-archetype/javax.faces-war/create-from-project-2.1/src/main/java/org/glassfish/javax/faces_war/UserBean.java b/jsf-archetype/javax.faces-war/create-from-project-2.1/src/main/java/org/glassfish/javax/faces_war/UserBean.java
new file mode 100644
index 0000000..b636341
--- /dev/null
+++ b/jsf-archetype/javax.faces-war/create-from-project-2.1/src/main/java/org/glassfish/javax/faces_war/UserBean.java
@@ -0,0 +1,92 @@
+package org.glassfish.javax.faces_war;
+
+import java.io.Serializable;
+import java.util.Date;
+import javax.enterprise.context.SessionScoped;
+import javax.faces.application.FacesMessage;
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.validator.ValidatorException;
+import javax.inject.Named;
+
+ at Named
+ at SessionScoped
+public class UserBean implements Serializable {
+    
+    protected String firstName = "Duke";
+    protected String lastName = "Java";
+    protected Date dob;
+    protected String sex = "Unknown";
+    protected String email;
+    protected String serviceLevel = "medium";
+    
+    public UserBean() {}
+
+    public String getFirstName() {
+        return firstName;
+    }
+
+    public void setFirstName(String firstName) {
+        this.firstName = firstName;
+    }
+
+    public String getLastName() {
+        return lastName;
+    }
+
+    public void setLastName(String lastName) {
+        this.lastName = lastName;
+    }
+
+    public Date getDob() {
+        return dob;
+    }
+
+    public void setDob(Date dob) {
+        this.dob = dob;
+    }
+
+    public String getSex() {
+        return sex;
+    }
+
+    public void setSex(String sex) {
+        this.sex = sex;
+    }
+
+    public String getEmail() {
+        return email;
+    }
+
+    public void setEmail(String email) {
+        this.email = email;
+    }
+
+    public String getServiceLevel() {
+        return serviceLevel;
+    }
+
+    public void setServiceLevel(String serviceLevel) {
+        this.serviceLevel = serviceLevel;
+    }
+    
+    public void validateEmail(FacesContext context, UIComponent toValidate,
+            Object value) throws ValidatorException {
+        String emailStr = (String) value;
+        if (-1 == emailStr.indexOf("@")) {
+            FacesMessage message = new FacesMessage("Invalid email address");
+            throw new ValidatorException(message);
+        }
+    }
+
+    public String addConfirmedUser() {
+        // This method would call a database or other service and add the 
+        // confirmed user information.
+        // For now, we just place an informative message in request scope
+        FacesMessage doneMessage = 
+                new FacesMessage("Successfully added new user");
+        FacesContext.getCurrentInstance().addMessage(null, doneMessage);
+        return "done";
+    }
+}
+
diff --git a/jsf-archetype/javax.faces-war/create-from-project-2.1/src/main/webapp/WEB-INF/beans.xml b/jsf-archetype/javax.faces-war/create-from-project-2.1/src/main/webapp/WEB-INF/beans.xml
new file mode 100644
index 0000000..e69de29
diff --git a/jsf-archetype/javax.faces-war/create-from-project-2.1/src/main/webapp/WEB-INF/web.xml b/jsf-archetype/javax.faces-war/create-from-project-2.1/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..092afaa
--- /dev/null
+++ b/jsf-archetype/javax.faces-war/create-from-project-2.1/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,39 @@
+<?xml version='1.0' encoding='UTF-8'?>
+
+<web-app version="3.0"
+         xmlns="http://java.sun.com/xml/ns/javaee"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+
+    <display-name>mojarra-regression-test</display-name>
+    <description>A simple regression test to make it easier to get your bug fixed. The only reason we need a web.xml is to set the PROJECT_STAGE to Develoment.  If you have a web.xml, then you need to map the FacesServlet.</description>
+
+    <context-param>
+        <description>
+            Tell the runtime where we are in the project development
+            lifecycle.  Valid values are: 
+            Development, UnitTest, SystemTest, or Production.
+            The runtime will display helpful hints to correct common mistakes
+            when the value is Development.
+        </description>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>Development</param-value>
+    </context-param>
+
+    <!-- Faces Servlet -->
+  <servlet>
+    <servlet-name>Faces Servlet</servlet-name>
+    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+    <load-on-startup>1</load-on-startup>
+  </servlet>
+
+   <servlet-mapping>
+       <servlet-name>Faces Servlet</servlet-name>
+       <url-pattern>/faces/*</url-pattern>
+   </servlet-mapping>
+
+   <welcome-file-list>
+     <welcome-file>faces/main.xhtml</welcome-file>
+   </welcome-file-list>
+
+</web-app>
diff --git a/jsf-archetype/javax.faces-war/create-from-project-2.1/src/main/webapp/main.xhtml b/jsf-archetype/javax.faces-war/create-from-project-2.1/src/main/webapp/main.xhtml
new file mode 100644
index 0000000..bbbc4ea
--- /dev/null
+++ b/jsf-archetype/javax.faces-war/create-from-project-2.1/src/main/webapp/main.xhtml
@@ -0,0 +1,14 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+<h:head>
+  <title>A Simple JavaServer Faces 2.0 View</title>
+</h:head>
+<h:body>
+  <h:form>
+      First name: #{userBean.firstName} Last name: #{userBean.lastName}
+    <p><h:commandButton value="submit" /></p>
+  </h:form>
+</h:body>
+</html>
diff --git a/jsf-archetype/javax.faces-war/create-from-project-2.2-m12/move-to-parent-directory-or-delete-build.xml b/jsf-archetype/javax.faces-war/create-from-project-2.2-m12/move-to-parent-directory-or-delete-build.xml
new file mode 100644
index 0000000..7e5f5ca
--- /dev/null
+++ b/jsf-archetype/javax.faces-war/create-from-project-2.2-m12/move-to-parent-directory-or-delete-build.xml
@@ -0,0 +1,95 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<!-- ************ JSF build file ************************************** -->
+<project name="JAVASERVERFACES-i_jsf_xxxx" default="test" basedir=".">
+
+    <property file="../../build.properties"/>
+    <path id="i_jsf_xxxx.classpath">  
+        <path refid="html.classpath" />
+        <pathelement location="${basedir}/i_jsf_xxxx_htmlunit/target/classes"/>
+    </path>
+
+    <import file="${jsf.build.home}/common/ant/common.xml"/>
+
+    <target name="build">
+        <jsf.mvn dir="${basedir}/i_jsf_xxxx_war" goals="install" />
+        <jsf.mvn dir="${basedir}/i_jsf_xxxx_htmlunit" goals="install" />
+    </target>    
+
+    <target name="clean">
+        <jsf.mvn dir="${basedir}/i_jsf_xxxx_htmlunit" goals="clean" />
+        <jsf.mvn dir="${basedir}/i_jsf_xxxx_war" goals="clean" />
+    </target>    
+
+    <target name="install">
+        <deploy.artifact
+              artifact="${basedir}/i_jsf_xxxx_war/target/i_jsf_xxxx_war.war"
+              appName="i_jsf_xxxx_war"/>
+    </target>    
+
+    <target name="remove">
+        <undeploy.artifact
+              artifact="${basedir}/i_jsf_xxxx_war/target/i_jsf_xxxx_war.war"
+              appName="i_jsf_xxxx_war"/>
+    </target>    
+
+    <target name="test" depends="define.scenario.aware.port">
+
+        <jsf.junit context-path="/i_jsf_xxxx_simple_war"
+                 classpath-refid="i_jsf_xxxx.classpath"    
+                 test-results-dir="${regression.test.results.dir}">
+            <tests>
+                <fileset dir="${basedir}/i_jsf_xxxx_htmlunit/target/classes"
+                     includes="com/sun/faces/regression/i_jsf_xxxx/Issuei_jsf_xxxxSimpleTestCase.class"/> 
+            </tests>
+        </jsf.junit>
+
+        <jsf.tester request="/faces/i_jsf_xxxx_war.xhtml"
+                     context-path="/i_jsf_xxxx_war"
+                     classpath-refid="html.classpath"
+                     test-results-dir="${regression.test.results.dir}"
+                     regexp="(?s).*bean:\s*bar.*"/>
+
+    </target>    
+
+</project>
diff --git a/jsf-archetype/javax.faces-war/create-from-project-2.2-m12/pom.xml b/jsf-archetype/javax.faces-war/create-from-project-2.2-m12/pom.xml
new file mode 100644
index 0000000..d1ddb54
--- /dev/null
+++ b/jsf-archetype/javax.faces-war/create-from-project-2.2-m12/pom.xml
@@ -0,0 +1,69 @@
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <groupId>javax.faces</groupId>
+    <artifactId>javax.faces-war</artifactId>
+    <version>2.2-m12</version>
+    <packaging>war</packaging>
+    <name>${project.artifactId}</name>
+    <description>
+        A simple project with war packaging that depends on JSF 2.2-m12 and 
+        javaee 6, in that order.
+    </description>
+    <url>http://jsf-spec.java.net/</url>
+    <build>
+        <finalName>${project.artifactId}</finalName>
+        <plugins>
+            <plugin>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                    <source>1.6</source>
+                    <target>1.6</target>
+                </configuration>
+            </plugin>
+            <plugin>
+                <artifactId>maven-war-plugin</artifactId>
+                <configuration>
+                  <failOnMissingWebXml>false</failOnMissingWebXml>
+                </configuration>
+            </plugin>
+
+        </plugins>
+    </build>
+    <properties>
+      <spec.snapshot.version>2.2-m12</spec.snapshot.version>
+    </properties>
+    <dependencies>
+        <dependency>
+            <groupId>javax.faces</groupId>
+            <artifactId>javax.faces-api</artifactId>
+            <version>2.2-m12</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>javax</groupId>
+            <artifactId>javaee-api</artifactId>
+            <version>6.0</version>
+            <scope>provided</scope>
+        </dependency>
+    </dependencies>
+
+    <repositories>
+        <repository>
+            <id>java.net-maven2-SNAPSHOT-repository</id>
+            <name>Java.net SNAPSHOT-Repository for Maven</name>
+            <url>https://maven.java.net/content/repositories/snapshots/</url>
+            <layout>default</layout>
+        </repository>
+        <repository>
+            <id>java.net-maven2-repository</id>
+            <name>Java.net Repository for Maven</name>
+            <url>https://maven.java.net/content/repositories/releases/</url>
+            <layout>default</layout>
+        </repository>
+    </repositories>
+</project>
+
+
diff --git a/jsf-archetype/javax.faces-war/create-from-project-2.2-m12/src/main/java/org/glassfish/javax/faces_war/UserBean.java b/jsf-archetype/javax.faces-war/create-from-project-2.2-m12/src/main/java/org/glassfish/javax/faces_war/UserBean.java
new file mode 100644
index 0000000..b636341
--- /dev/null
+++ b/jsf-archetype/javax.faces-war/create-from-project-2.2-m12/src/main/java/org/glassfish/javax/faces_war/UserBean.java
@@ -0,0 +1,92 @@
+package org.glassfish.javax.faces_war;
+
+import java.io.Serializable;
+import java.util.Date;
+import javax.enterprise.context.SessionScoped;
+import javax.faces.application.FacesMessage;
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.validator.ValidatorException;
+import javax.inject.Named;
+
+ at Named
+ at SessionScoped
+public class UserBean implements Serializable {
+    
+    protected String firstName = "Duke";
+    protected String lastName = "Java";
+    protected Date dob;
+    protected String sex = "Unknown";
+    protected String email;
+    protected String serviceLevel = "medium";
+    
+    public UserBean() {}
+
+    public String getFirstName() {
+        return firstName;
+    }
+
+    public void setFirstName(String firstName) {
+        this.firstName = firstName;
+    }
+
+    public String getLastName() {
+        return lastName;
+    }
+
+    public void setLastName(String lastName) {
+        this.lastName = lastName;
+    }
+
+    public Date getDob() {
+        return dob;
+    }
+
+    public void setDob(Date dob) {
+        this.dob = dob;
+    }
+
+    public String getSex() {
+        return sex;
+    }
+
+    public void setSex(String sex) {
+        this.sex = sex;
+    }
+
+    public String getEmail() {
+        return email;
+    }
+
+    public void setEmail(String email) {
+        this.email = email;
+    }
+
+    public String getServiceLevel() {
+        return serviceLevel;
+    }
+
+    public void setServiceLevel(String serviceLevel) {
+        this.serviceLevel = serviceLevel;
+    }
+    
+    public void validateEmail(FacesContext context, UIComponent toValidate,
+            Object value) throws ValidatorException {
+        String emailStr = (String) value;
+        if (-1 == emailStr.indexOf("@")) {
+            FacesMessage message = new FacesMessage("Invalid email address");
+            throw new ValidatorException(message);
+        }
+    }
+
+    public String addConfirmedUser() {
+        // This method would call a database or other service and add the 
+        // confirmed user information.
+        // For now, we just place an informative message in request scope
+        FacesMessage doneMessage = 
+                new FacesMessage("Successfully added new user");
+        FacesContext.getCurrentInstance().addMessage(null, doneMessage);
+        return "done";
+    }
+}
+
diff --git a/jsf-archetype/javax.faces-war/create-from-project-2.2-m12/src/main/webapp/WEB-INF/beans.xml b/jsf-archetype/javax.faces-war/create-from-project-2.2-m12/src/main/webapp/WEB-INF/beans.xml
new file mode 100644
index 0000000..e69de29
diff --git a/jsf-archetype/javax.faces-war/create-from-project-2.2-m12/src/main/webapp/WEB-INF/web.xml b/jsf-archetype/javax.faces-war/create-from-project-2.2-m12/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..092afaa
--- /dev/null
+++ b/jsf-archetype/javax.faces-war/create-from-project-2.2-m12/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,39 @@
+<?xml version='1.0' encoding='UTF-8'?>
+
+<web-app version="3.0"
+         xmlns="http://java.sun.com/xml/ns/javaee"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+
+    <display-name>mojarra-regression-test</display-name>
+    <description>A simple regression test to make it easier to get your bug fixed. The only reason we need a web.xml is to set the PROJECT_STAGE to Develoment.  If you have a web.xml, then you need to map the FacesServlet.</description>
+
+    <context-param>
+        <description>
+            Tell the runtime where we are in the project development
+            lifecycle.  Valid values are: 
+            Development, UnitTest, SystemTest, or Production.
+            The runtime will display helpful hints to correct common mistakes
+            when the value is Development.
+        </description>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>Development</param-value>
+    </context-param>
+
+    <!-- Faces Servlet -->
+  <servlet>
+    <servlet-name>Faces Servlet</servlet-name>
+    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+    <load-on-startup>1</load-on-startup>
+  </servlet>
+
+   <servlet-mapping>
+       <servlet-name>Faces Servlet</servlet-name>
+       <url-pattern>/faces/*</url-pattern>
+   </servlet-mapping>
+
+   <welcome-file-list>
+     <welcome-file>faces/main.xhtml</welcome-file>
+   </welcome-file-list>
+
+</web-app>
diff --git a/jsf-archetype/javax.faces-war/create-from-project-2.2-m12/src/main/webapp/main.xhtml b/jsf-archetype/javax.faces-war/create-from-project-2.2-m12/src/main/webapp/main.xhtml
new file mode 100644
index 0000000..bbbc4ea
--- /dev/null
+++ b/jsf-archetype/javax.faces-war/create-from-project-2.2-m12/src/main/webapp/main.xhtml
@@ -0,0 +1,14 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+<h:head>
+  <title>A Simple JavaServer Faces 2.0 View</title>
+</h:head>
+<h:body>
+  <h:form>
+      First name: #{userBean.firstName} Last name: #{userBean.lastName}
+    <p><h:commandButton value="submit" /></p>
+  </h:form>
+</h:body>
+</html>
diff --git a/jsf-archetype/javax.faces-war/create-from-project-2.2/pom.xml b/jsf-archetype/javax.faces-war/create-from-project-2.2/pom.xml
new file mode 100644
index 0000000..67ab184
--- /dev/null
+++ b/jsf-archetype/javax.faces-war/create-from-project-2.2/pom.xml
@@ -0,0 +1,69 @@
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <groupId>javax.faces</groupId>
+    <artifactId>javax.faces-war</artifactId>
+    <version>2.2</version>
+    <packaging>war</packaging>
+    <name>${project.artifactId}</name>
+    <description>
+        A simple project with war packaging that depends on JSF 2.2 and 
+        javaee 6, in that order.
+    </description>
+    <url>http://jsf-spec.java.net/</url>
+    <build>
+        <finalName>${project.artifactId}</finalName>
+        <plugins>
+            <plugin>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                    <source>1.6</source>
+                    <target>1.6</target>
+                </configuration>
+            </plugin>
+            <plugin>
+                <artifactId>maven-war-plugin</artifactId>
+                <configuration>
+                  <failOnMissingWebXml>false</failOnMissingWebXml>
+                </configuration>
+            </plugin>
+
+        </plugins>
+    </build>
+    <properties>
+      <spec.snapshot.version>2.2</spec.snapshot.version>
+    </properties>
+    <dependencies>
+        <dependency>
+            <groupId>javax.faces</groupId>
+            <artifactId>javax.faces-api</artifactId>
+            <version>${spec.snapshot.version}</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>javax</groupId>
+            <artifactId>javaee-api</artifactId>
+            <version>6.0</version>
+            <scope>provided</scope>
+        </dependency>
+    </dependencies>
+
+    <repositories>
+        <repository>
+            <id>java.net-maven2-SNAPSHOT-repository</id>
+            <name>Java.net SNAPSHOT-Repository for Maven</name>
+            <url>https://maven.java.net/content/repositories/snapshots/</url>
+            <layout>default</layout>
+        </repository>
+        <repository>
+            <id>java.net-maven2-repository</id>
+            <name>Java.net Repository for Maven</name>
+            <url>https://maven.java.net/content/repositories/releases/</url>
+            <layout>default</layout>
+        </repository>
+    </repositories>
+</project>
+
+
diff --git a/jsf-archetype/javax.faces-war/create-from-project-2.2/src/main/java/org/glassfish/javax/faces_war/UserBean.java b/jsf-archetype/javax.faces-war/create-from-project-2.2/src/main/java/org/glassfish/javax/faces_war/UserBean.java
new file mode 100644
index 0000000..b636341
--- /dev/null
+++ b/jsf-archetype/javax.faces-war/create-from-project-2.2/src/main/java/org/glassfish/javax/faces_war/UserBean.java
@@ -0,0 +1,92 @@
+package org.glassfish.javax.faces_war;
+
+import java.io.Serializable;
+import java.util.Date;
+import javax.enterprise.context.SessionScoped;
+import javax.faces.application.FacesMessage;
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.validator.ValidatorException;
+import javax.inject.Named;
+
+ at Named
+ at SessionScoped
+public class UserBean implements Serializable {
+    
+    protected String firstName = "Duke";
+    protected String lastName = "Java";
+    protected Date dob;
+    protected String sex = "Unknown";
+    protected String email;
+    protected String serviceLevel = "medium";
+    
+    public UserBean() {}
+
+    public String getFirstName() {
+        return firstName;
+    }
+
+    public void setFirstName(String firstName) {
+        this.firstName = firstName;
+    }
+
+    public String getLastName() {
+        return lastName;
+    }
+
+    public void setLastName(String lastName) {
+        this.lastName = lastName;
+    }
+
+    public Date getDob() {
+        return dob;
+    }
+
+    public void setDob(Date dob) {
+        this.dob = dob;
+    }
+
+    public String getSex() {
+        return sex;
+    }
+
+    public void setSex(String sex) {
+        this.sex = sex;
+    }
+
+    public String getEmail() {
+        return email;
+    }
+
+    public void setEmail(String email) {
+        this.email = email;
+    }
+
+    public String getServiceLevel() {
+        return serviceLevel;
+    }
+
+    public void setServiceLevel(String serviceLevel) {
+        this.serviceLevel = serviceLevel;
+    }
+    
+    public void validateEmail(FacesContext context, UIComponent toValidate,
+            Object value) throws ValidatorException {
+        String emailStr = (String) value;
+        if (-1 == emailStr.indexOf("@")) {
+            FacesMessage message = new FacesMessage("Invalid email address");
+            throw new ValidatorException(message);
+        }
+    }
+
+    public String addConfirmedUser() {
+        // This method would call a database or other service and add the 
+        // confirmed user information.
+        // For now, we just place an informative message in request scope
+        FacesMessage doneMessage = 
+                new FacesMessage("Successfully added new user");
+        FacesContext.getCurrentInstance().addMessage(null, doneMessage);
+        return "done";
+    }
+}
+
diff --git a/jsf-archetype/javax.faces-war/create-from-project-2.2/src/main/webapp/WEB-INF/beans.xml b/jsf-archetype/javax.faces-war/create-from-project-2.2/src/main/webapp/WEB-INF/beans.xml
new file mode 100644
index 0000000..e69de29
diff --git a/jsf-archetype/javax.faces-war/create-from-project-2.2/src/main/webapp/WEB-INF/web.xml b/jsf-archetype/javax.faces-war/create-from-project-2.2/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..092afaa
--- /dev/null
+++ b/jsf-archetype/javax.faces-war/create-from-project-2.2/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,39 @@
+<?xml version='1.0' encoding='UTF-8'?>
+
+<web-app version="3.0"
+         xmlns="http://java.sun.com/xml/ns/javaee"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+
+    <display-name>mojarra-regression-test</display-name>
+    <description>A simple regression test to make it easier to get your bug fixed. The only reason we need a web.xml is to set the PROJECT_STAGE to Develoment.  If you have a web.xml, then you need to map the FacesServlet.</description>
+
+    <context-param>
+        <description>
+            Tell the runtime where we are in the project development
+            lifecycle.  Valid values are: 
+            Development, UnitTest, SystemTest, or Production.
+            The runtime will display helpful hints to correct common mistakes
+            when the value is Development.
+        </description>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>Development</param-value>
+    </context-param>
+
+    <!-- Faces Servlet -->
+  <servlet>
+    <servlet-name>Faces Servlet</servlet-name>
+    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+    <load-on-startup>1</load-on-startup>
+  </servlet>
+
+   <servlet-mapping>
+       <servlet-name>Faces Servlet</servlet-name>
+       <url-pattern>/faces/*</url-pattern>
+   </servlet-mapping>
+
+   <welcome-file-list>
+     <welcome-file>faces/main.xhtml</welcome-file>
+   </welcome-file-list>
+
+</web-app>
diff --git a/jsf-archetype/javax.faces-war/create-from-project-2.2/src/main/webapp/main.xhtml b/jsf-archetype/javax.faces-war/create-from-project-2.2/src/main/webapp/main.xhtml
new file mode 100644
index 0000000..bbbc4ea
--- /dev/null
+++ b/jsf-archetype/javax.faces-war/create-from-project-2.2/src/main/webapp/main.xhtml
@@ -0,0 +1,14 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+<h:head>
+  <title>A Simple JavaServer Faces 2.0 View</title>
+</h:head>
+<h:body>
+  <h:form>
+      First name: #{userBean.firstName} Last name: #{userBean.lastName}
+    <p><h:commandButton value="submit" /></p>
+  </h:form>
+</h:body>
+</html>
diff --git a/jsf-archetype/javax.faces-war/install-to-local-repo.sh b/jsf-archetype/javax.faces-war/install-to-local-repo.sh
new file mode 100755
index 0000000..18d9953
--- /dev/null
+++ b/jsf-archetype/javax.faces-war/install-to-local-repo.sh
@@ -0,0 +1,22 @@
+#!/bin/sh
+cd create-from-project-2.2
+
+mvn clean archetype:create-from-project
+
+patch -p0 < ../apply_to_pom.patch 
+
+find target \( -name UserBean.java -or -name web.xml \) -exec perl -pi.bak -e "s/.[\{]groupId[\}]/javax.faces/g" {} \; -print
+
+find . -name "*~" -exec rm -f {} \; -print; find . -name ".*~" -exec rm -f {} \; -print; find . -name ".*.bak" -exec rm -f {} \; -print; find . -name "*backup*" -exec rm -f {} \; -print; find . -name "*.bak" -exec rm -f {} \; -print;
+
+cd target/generated-sources/archetype
+
+mvn install
+
+NOW=`date '+%Y%m%d-%H%M'`
+
+echo "Execute these steps to test the just-installed archetype: mkdir /tmp/$NOW; cd /tmp/$NOW; mvn archetype:generate -DarchetypeCatalog=local"
+
+echo "Manually inspect the created project in /tmp/$NOW"
+
+
diff --git a/jsf-archetype/simple-jsf/pom.xml b/jsf-archetype/simple-jsf/pom.xml
new file mode 100644
index 0000000..a24014c
--- /dev/null
+++ b/jsf-archetype/simple-jsf/pom.xml
@@ -0,0 +1,12 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+
+  <groupId>com.sun.faces</groupId>
+  <artifactId>simple-jsf</artifactId>
+  <version>1.0</version>
+  <packaging>jar</packaging>
+</project>
+
+
+
diff --git a/jsf-archetype/simple-jsf/src/main/resources/META-INF/maven/archetype.xml b/jsf-archetype/simple-jsf/src/main/resources/META-INF/maven/archetype.xml
new file mode 100644
index 0000000..767d688
--- /dev/null
+++ b/jsf-archetype/simple-jsf/src/main/resources/META-INF/maven/archetype.xml
@@ -0,0 +1,13 @@
+<archetype xmlns="http://maven.apache.org/plugins/maven-archetype-plugin/archetype/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://maven.apache.org/plugins/maven-archetype-plugin/archetype/1.0.0 http://maven.apache.org/xsd/archetype-1.0.0.xsd">
+  <id>simple-jsf</id>
+  <sources>
+    <source>src/main/java/com/sun/faces/hello/HelloBean.java</source>
+  </sources>
+  <resources>
+    <resource>src/main/webapp/resources/composite/simpleCompositeComponent.xhtml</resource>
+    <resource>src/main/webapp/simpleCompositeComponentUsingPage.xhtml</resource>
+    <resource>src/main/webapp/submit.xhtml</resource>
+    <resource>src/main/webapp/WEB-INF/web.xml</resource>
+  </resources>
+</archetype>
diff --git a/jsf-archetype/simple-jsf/src/main/resources/archetype-resources/pom.xml b/jsf-archetype/simple-jsf/src/main/resources/archetype-resources/pom.xml
new file mode 100644
index 0000000..33d5c85
--- /dev/null
+++ b/jsf-archetype/simple-jsf/src/main/resources/archetype-resources/pom.xml
@@ -0,0 +1,75 @@
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <groupId>${groupId}</groupId>
+    <artifactId>${artifactId}</artifactId>
+    <version>${version}</version>
+    <packaging>war</packaging>
+    <build>
+        <plugins>
+            <plugin>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                    <source>1.6</source>
+                    <target>1.6</target>
+                </configuration>
+            </plugin>
+            <plugin>
+                <artifactId>maven-dependency-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <phase>install</phase>
+                                    
+                        <configuration>
+                            <outputDirectory>${basedir}/target/lib</outputDirectory>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+
+        </plugins>
+        <extensions>
+            <extension>
+                <groupId>org.jvnet.wagon-svn</groupId>
+                <artifactId>wagon-svn</artifactId>
+                <version>1.12</version>
+            </extension>
+        </extensions>
+    </build>
+    <dependencies>
+        <dependency>
+            <groupId>javax.faces</groupId>
+            <artifactId>jsf-api</artifactId>
+            <version>2.1</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>javax</groupId>
+            <artifactId>javaee-api</artifactId>
+            <version>6.0</version>
+            <scope>provided</scope>
+        </dependency>
+    </dependencies>
+
+
+    <distributionManagement>
+        <repository>
+            <uniqueVersion>false</uniqueVersion>
+            <id>java.net-maven2-repository</id>
+            <url>java-net:/maven2-repository~svn/trunk/repository/</url>
+        </repository>
+    </distributionManagement>
+
+    <repositories>
+        <repository>
+            <id>java.net</id>
+            <name>java.net</name>
+            <url>http://download.java.net/maven/2</url>
+            <layout>default</layout>
+        </repository>
+    </repositories>
+</project>
+
+
diff --git a/jsf-archetype/simple-jsf/src/main/resources/archetype-resources/src/main/java/com/sun/faces/hello/HelloBean.java b/jsf-archetype/simple-jsf/src/main/resources/archetype-resources/src/main/java/com/sun/faces/hello/HelloBean.java
new file mode 100644
index 0000000..2c8085e
--- /dev/null
+++ b/jsf-archetype/simple-jsf/src/main/resources/archetype-resources/src/main/java/com/sun/faces/hello/HelloBean.java
@@ -0,0 +1,67 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.ApplicationScoped;
+
+ at ManagedBean(name = "hello", eager = true)
+ at ApplicationScoped
+public class HelloBean {
+    String fname;
+    public HelloBean() {
+        System.out.println("HelloBean instantiated");
+    }
+    public String getMessage() {
+        return "Hello " + fname + ", Good Morning!";
+    }
+    public String getFname() {
+        return fname;
+    }
+    public  void setFname(String name) {
+        this.fname = name;
+    }
+
+
+    public String getNextAction() {
+        return "/submit.xhtml";
+    }
+}
diff --git a/jsf-archetype/simple-jsf/src/main/resources/archetype-resources/src/main/webapp/WEB-INF/web.xml b/jsf-archetype/simple-jsf/src/main/resources/archetype-resources/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..c023cb6
--- /dev/null
+++ b/jsf-archetype/simple-jsf/src/main/resources/archetype-resources/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
+    <description>JSF Archetype</description>
+    <display-name>JSF Archetype</display-name>
+    <!-- Validate the Application Configuration Resources -->
+    <context-param>
+        <param-name>com.sun.faces.validateXml</param-name>
+        <param-value>true</param-value>
+    </context-param>
+    <context-param>
+        <param-name>facelets.VIEW_MAPPINGS</param-name>
+        <param-value>/resources/composite/*;*.xhtml;*.view.xml</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>Development</param-value>
+    </context-param>
+    <jsp-config>
+        <jsp-property-group>
+            <url-pattern>*.jspx</url-pattern>
+            <is-xml>true</is-xml>
+        </jsp-property-group>
+    </jsp-config>
+    <!-- Faces Servlet -->
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup> 1 </load-on-startup>
+    </servlet>
+    <!-- Faces Servlet Mapping -->
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>*.faces</url-pattern>
+    </servlet-mapping>
+    <env-entry>
+        <env-entry-name>welcomeMessage</env-entry-name>
+        <env-entry-type>java.lang.String</env-entry-type>
+        <env-entry-value>Hello World from env-entry!</env-entry-value>
+    </env-entry>
+</web-app>
diff --git a/jsf-archetype/simple-jsf/src/main/resources/archetype-resources/src/main/webapp/resources/composite/simpleCompositeComponent.xhtml b/jsf-archetype/simple-jsf/src/main/resources/archetype-resources/src/main/webapp/resources/composite/simpleCompositeComponent.xhtml
new file mode 100644
index 0000000..4519bb9
--- /dev/null
+++ b/jsf-archetype/simple-jsf/src/main/resources/archetype-resources/src/main/webapp/resources/composite/simpleCompositeComponent.xhtml
@@ -0,0 +1,15 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:cc="http://java.sun.com/jsf/composite"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <!-- INTERFACE -->
+    <cc:interface>
+        <cc:attribute preferred="true" name="value" type="String"/>
+    </cc:interface>
+
+    <!-- IMPLEMENTATION -->
+    <cc:implementation>
+        <h:inputText  value="#{cc.attrs.value}"/>
+    </cc:implementation>
+</html>
diff --git a/jsf-archetype/simple-jsf/src/main/resources/archetype-resources/src/main/webapp/simpleCompositeComponentUsingPage.xhtml b/jsf-archetype/simple-jsf/src/main/resources/archetype-resources/src/main/webapp/simpleCompositeComponentUsingPage.xhtml
new file mode 100644
index 0000000..5a37ecc
--- /dev/null
+++ b/jsf-archetype/simple-jsf/src/main/resources/archetype-resources/src/main/webapp/simpleCompositeComponentUsingPage.xhtml
@@ -0,0 +1,19 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:mycc="http://java.sun.com/jsf/composite/composite">
+    <h:head>
+        <title>Facelet Title</title>
+    </h:head>
+    <h:body>
+        Hello from JSF
+        <h:messages/>
+        <h:form>
+            username :
+            <mycc:simpleCompositeComponent value="#{hello.fname}"/> <br/>
+            <h:commandButton value="submit" action="#{hello.getNextAction}"/>
+        </h:form>
+    </h:body>
+</html>
diff --git a/jsf-archetype/simple-jsf/src/main/resources/archetype-resources/src/main/webapp/submit.xhtml b/jsf-archetype/simple-jsf/src/main/resources/archetype-resources/src/main/webapp/submit.xhtml
new file mode 100644
index 0000000..287a429
--- /dev/null
+++ b/jsf-archetype/simple-jsf/src/main/resources/archetype-resources/src/main/webapp/submit.xhtml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html
+        PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"
+        xmlns:h="http://java.sun.com/jsf/html">
+<head>
+    <title>Hello</title>
+</head>
+<body>
+<h:form id="form">
+
+ <h:outputText id="string"
+                 value="#{hello.message}"/>
+</h:form>
+</body>
+</html>
\ No newline at end of file
diff --git a/jsf-demo/ajax-component/README.txt b/jsf-demo/ajax-component/README.txt
new file mode 100644
index 0000000..005a498
--- /dev/null
+++ b/jsf-demo/ajax-component/README.txt
@@ -0,0 +1,16 @@
+This demo, the basic-ajax demo, is a collection of small example programs that have
+been placed into a demo framework.
+
+The best way to understand the demo is to simply run it - there are links in the
+home page to each example, as well as the code backing each example.
+
+The following examples are part of this demo:
+
+switchlist in page - a simple example of two lists that communicate.  Building block for other demos
+switchlist with ajax - converting switchlist in page to use ajax.
+switchlist component - making switchlist in page into a component
+switchlist ajax component - a full component that uses ajax.
+editable text - display text which can be edited when clicked.
+poll - a component which performs a periodic request to the server from the client
+YUI Calendar - a JSF component which wraps a YUI Calendar widget
+busy status - component which displays an image when an ajax request is active
\ No newline at end of file
diff --git a/jsf-demo/ajax-component/build.xml b/jsf-demo/ajax-component/build.xml
new file mode 100644
index 0000000..006a596
--- /dev/null
+++ b/jsf-demo/ajax-component/build.xml
@@ -0,0 +1,120 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project name="ajax-component" default="build" basedir=".">
+   
+
+    <property file="${user.home}/build.properties"/> 
+    <property file="../../build.properties"/>
+    <import file="${jsf.build.home}/common/ant/common.xml"/>
+    
+    <!-- Configure the context path for this application -->
+    <property name="context.path" value="/ajax-component"/>
+    <property name="example" value="ajax-component"/>
+    <property name="build" value="${basedir}/build"/>   
+
+    <path id="classpath">
+        <pathelement location="${javax.faces-api.jar}"/>
+        <pathelement location="${javax.faces.jar}"/>       
+        <pathelement location="${build}/WEB-INF/classes"/>
+        <path refid="compile.classpath"/>
+    </path>
+    
+    <target name="init">
+        <tstamp/>
+    </target>
+
+    <target name="clean">
+        <delete dir="${build}"/>
+        <delete dir="${context.path}"/>
+    </target>    
+
+    <target name="prepare" depends="init"
+            description="Create build directories.">
+        <mkdir dir="${build}/${example}/"/>
+        <mkdir dir="${build}/${example}/WEB-INF"/>
+        <mkdir dir="${build}/${example}/WEB-INF/classes"/>
+    </target>
+
+    <target name="build" depends="prepare"
+            description="Compile Java files and copy static files.">
+         <jsf.javac srcdir="src"
+                   destdir="${build}/${example}/WEB-INF/classes">
+            <classpath>
+                <path refid="classpath"/>
+            </classpath>
+        </jsf.javac>
+        <copy todir="${build}/${example}/WEB-INF">
+            <fileset dir="src/main/webapp/WEB-INF">
+                <include name="*.xml"/>
+                <include name="*.xhtml"/>
+            </fileset>
+        </copy>
+        <copy todir="${build}/${example}/WEB-INF/classes">
+            <fileset dir="src"/>
+        </copy>
+
+        <copy todir="${build}/${example}/">
+            <fileset dir="src/main/webapp">
+                <include name="*.html"/>
+                <include name="*.xhtml"/>
+                <include name="*.gif"/>
+                <include name="*.jpg"/>
+                <include name="*.jsp"/>
+                <include name="*.xml"/>
+            </fileset>
+        </copy>
+        <copy todir="${build}/${example}/resources">
+            <fileset dir="src/main/webapp/resources"/>
+        </copy>
+        
+        <jsf.war basedir="${build}"
+                 archive-name="${example}"
+                 webxml="${build}/${example}/WEB-INF/web.xml">
+            <archive-elements>
+                <zipfileset dir="${build}/${example}"/>
+            </archive-elements>
+        </jsf.war>
+    </target>
+
+</project>
+
diff --git a/jsf-demo/ajax-component/pom.xml b/jsf-demo/ajax-component/pom.xml
new file mode 100644
index 0000000..569c0e1
--- /dev/null
+++ b/jsf-demo/ajax-component/pom.xml
@@ -0,0 +1,191 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+    <modelVersion>4.0.0</modelVersion>
+    <groupId>com.sun.faces</groupId>
+    <artifactId>ajax-component</artifactId>
+    <packaging>war</packaging>
+    <name>${project.artifactId}</name>
+    <url>https://mojarra.dev.java.net/</url>
+    <description>Example App</description>
+    <version>1.0</version>
+
+    <build>
+        <defaultGoal>package</defaultGoal>
+        <sourceDirectory>src/main/java</sourceDirectory>
+        <finalName>${project.artifactId}</finalName>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>RELEASE</version>
+                <configuration>
+                    <source>1.5</source>
+                    <target>1.5</target>
+                </configuration>
+            </plugin>
+            <plugin>
+                <artifactId>maven-antrun-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <phase>compile</phase>
+                        <configuration>
+                            <tasks>
+                                <copy todir="${project.build.outputDirectory}">
+                                    <fileset dir="src/main/java"/>
+                                </copy>
+                            </tasks>
+                        </configuration>
+                        <goals>
+                            <goal>run</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+
+    <repositories>
+        <repository>
+            <id>java.net.m2</id>
+            <name>java.net m2 repo</name>
+            <url>http://download.java.net/maven/2</url>
+        </repository>
+       <repository>
+            <id>glassfish-repo-archive</id>
+            <name>Nexus repository collection for Glassfish</name>
+            <url>http://maven.glassfish.org/content/groups/glassfish</url>
+        </repository>
+        <repository>
+            <id>ibiblio.mirrors</id>
+            <url>http://mirrors.ibiblio.org/pub/mirrors/maven2</url>
+        </repository>
+        <repository>
+            <id>codehaus</id>
+            <name>codehaus</name>
+            <url>http://repository.codehaus.org</url>
+        </repository>
+    </repositories>
+
+    <dependencies>
+        <dependency>
+            <groupId>javax.faces</groupId>
+            <artifactId>jsf-api</artifactId>
+            <version>2.0</version>
+            <scope>provided</scope>
+        </dependency>
+
+        <!--
+          Uncomment these dependencies and comment out the one above to use
+          a simple servlet container instead of a Java EE Application Server
+        <dependency>
+            <groupId>com.sun.faces</groupId>
+            <artifactId>jsf-api</artifactId>
+            <version>[2.0.1,)</version>
+        </dependency>
+        <dependency>
+            <groupId>com.sun.faces</groupId>
+            <artifactId>jsf-impl</artifactId>
+            <version>[2.0.1,)</version>
+        </dependency>
+        <dependency>
+            <groupId>javax.servlet</groupId>
+            <artifactId>servlet-api</artifactId>
+            <version>2.5</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>javax.servlet.jsp</groupId>
+            <artifactId>jsp-api</artifactId>
+            <version>2.1</version>
+            <scope>provided</scope>
+        </dependency>
+         <dependency>
+             <groupId>javax.servlet.jsp.jstl</groupId>
+             <artifactId>jstl-api</artifactId>
+             <version>1.2</version>
+         </dependency>
+        <dependency>
+            <groupId>org.glassfish.web</groupId>
+            <artifactId>jstl-impl</artifactId>
+            <version>1.2</version>
+        </dependency>
+        -->
+
+    </dependencies>
+    <reporting>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-project-info-reports-plugin</artifactId>
+                <reportSets>
+                    <reportSet/>
+                </reportSets>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                    <source>1.5</source>
+                    <target>1.5</target>
+                </configuration>
+            </plugin>
+        </plugins>
+    </reporting>
+    <profiles>
+        <profile>
+            <id>default</id>
+            <!-- Tests are disabled by default.  See the test profile -->
+            <activation>
+                <activeByDefault>true</activeByDefault>
+            </activation>
+            <properties>
+                <maven.test.skip>true</maven.test.skip>
+            </properties>
+        </profile>
+    </profiles>
+</project>
+
diff --git a/jsf-demo/ajax-component/src/main/java/dataholding/Count.java b/jsf-demo/ajax-component/src/main/java/dataholding/Count.java
new file mode 100644
index 0000000..457dcf4
--- /dev/null
+++ b/jsf-demo/ajax-component/src/main/java/dataholding/Count.java
@@ -0,0 +1,69 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package dataholding;
+
+import javax.faces.event.ActionEvent;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.SessionScoped;
+import java.io.Serializable;
+
+ at ManagedBean(name = "count")
+ at SessionScoped
+public class Count implements Serializable {
+
+    private static final long serialVersionUID = 6499154494910177344L;
+
+    Integer count = 0;
+    Integer count2 = 0;
+
+    public Integer getCount() {
+        return count++;
+    }
+
+    public Integer getCount2() {
+        return count2++;
+    }
+
+    @SuppressWarnings({"UnusedDeclaration"})
+    public void reset(ActionEvent ae) {
+        count = 0;
+    }
+}
diff --git a/jsf-demo/ajax-component/src/main/java/dataholding/DateHolder.java b/jsf-demo/ajax-component/src/main/java/dataholding/DateHolder.java
new file mode 100644
index 0000000..b818a19
--- /dev/null
+++ b/jsf-demo/ajax-component/src/main/java/dataholding/DateHolder.java
@@ -0,0 +1,74 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package dataholding;
+
+import java.io.Serializable;
+import java.util.Date;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.SessionScoped;
+
+ at ManagedBean(name="date")
+ at SessionScoped
+public class DateHolder implements Serializable {
+
+    private static final long serialVersionUID = 6499154494910177344L;
+
+
+    Date date1;
+    Date date2;
+
+    public void setDate1(Date date) {
+        date1 = date;
+    }
+
+    public Date getDate1() {
+        return date1;
+    }
+
+    public void setDate2(Date date) {
+        date2 = date;
+    }
+
+    public Date getDate2() {
+        return date2;
+    }
+
+}
diff --git a/jsf-demo/ajax-component/src/main/java/dataholding/StringHolder.java b/jsf-demo/ajax-component/src/main/java/dataholding/StringHolder.java
new file mode 100644
index 0000000..fe9b4fd
--- /dev/null
+++ b/jsf-demo/ajax-component/src/main/java/dataholding/StringHolder.java
@@ -0,0 +1,76 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package dataholding;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.SessionScoped;
+import java.io.Serializable;
+
+ at ManagedBean(name = "stringholder")
+ at SessionScoped
+public class StringHolder implements Serializable {
+
+    private static final long serialVersionUID = -2988876386472612330L;
+    private String str = "Text Edit Magic";
+    private String delayString = "";
+
+    public void setStr(String str) {
+        this.str = str;
+    }
+
+    public String getStr() {
+        return str;
+    }
+
+    public String getDelayString() {
+        return delayString;
+    }
+
+    public void setDelayString(String delayString) {
+        try {
+            Thread.sleep(2000);
+        } catch (Exception e) {
+            // do nothing
+        }
+        
+        this.delayString = delayString;
+    }
+}
diff --git a/jsf-demo/ajax-component/src/main/java/switchlist/DemoResourceBean.java b/jsf-demo/ajax-component/src/main/java/switchlist/DemoResourceBean.java
new file mode 100644
index 0000000..6bd5c4d
--- /dev/null
+++ b/jsf-demo/ajax-component/src/main/java/switchlist/DemoResourceBean.java
@@ -0,0 +1,326 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package switchlist;
+
+import java.util.Collection;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.ApplicationScoped;
+import javax.faces.context.FacesContext;
+import javax.faces.FacesException;
+import javax.annotation.PostConstruct;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+
+import org.w3c.dom.Document;
+import org.w3c.dom.NodeList;
+import org.w3c.dom.Node;
+
+/**
+ * This bean is responsible for building the metadata used in generating the
+ * demo index page.
+ */
+ at ManagedBean(name = "demoBean", eager = true)
+ at ApplicationScoped
+public class DemoResourceBean {
+
+    /**
+     * The path and filename to the demo metadata descriptor.
+     */
+    private static final String DEMO_DESCRIPTOR = "/WEB-INF/demo.xml";
+
+
+    /**
+     * List of <code>DemoBean</code>s for this application instance.
+     */
+    private List<DemoBean> demoBeans;
+
+
+    // ---------------------------------------------------------- Public Methods
+
+
+    /**
+     * @return a <code>Collection</code> of <code>DemoBeans</code> for this
+     *  application.
+     */
+    public Collection<DemoBean> getDemoBeans() {
+
+        return demoBeans;
+
+    }
+
+
+    // --------------------------------------------------------- Private Methods
+
+
+    /**
+     * @return a non-validating, non-namespace aware <code>DocumentBuilder</code>
+     * @throws Exception if the DocumentBuilder cannot be obtained
+     */
+    private DocumentBuilder getBuilder() throws Exception {
+
+        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
+        dbf.setValidating(false);
+        dbf.setNamespaceAware(false);
+        return dbf.newDocumentBuilder();
+
+    }
+
+
+    /**
+     * @return the <code>Document</code> based off the content found within
+     *  {@link #DEMO_DESCRIPTOR}
+     * @throws Exception if an error occurs parsing {@link #DEMO_DESCRIPTOR}
+     */
+    private Document getDemoMetadata() throws Exception {
+
+        FacesContext ctx = FacesContext.getCurrentInstance();
+        DocumentBuilder builder = getBuilder();
+        return builder.parse(ctx.getExternalContext().getResourceAsStream(DEMO_DESCRIPTOR));
+
+    }
+
+
+    /**
+     * <p>
+     * This method is responsible for constructing the <code>DemoBean</code>
+     * instances based on the parsed content of {@link #DEMO_DESCRIPTOR}.
+     * </p>
+     * <p>
+     * This method will be called by the JSF managed bean facility before the
+     * bean is automatically pushed to the application scope when the
+     * application starts.
+     * </p>
+     */
+    @SuppressWarnings({"UnusedDeclaration"})
+    @PostConstruct
+    private void buildDemoMetaData()  {
+
+        try {
+            Document d = getDemoMetadata();
+            ArrayList<DemoBean> beans = new ArrayList<DemoBean>();
+            NodeList demoElements = d.getElementsByTagName("demo");
+            for (int i = 0, len = demoElements.getLength(); i < len; i++) {
+                DemoBean b = processDemo(demoElements.item(i));
+                if (b != null) {
+                    beans.add(b);
+                }
+            }
+            beans.trimToSize();
+            demoBeans = beans;
+        } catch (Exception e) {
+            throw new FacesException("Unable to initialize demo", e);
+        }
+
+    }
+
+
+    /**
+     * @param demoNode node representing the <demo> element.
+     * @return a new <code>DemoBean</code> instance based off the provided
+     *  <code>Node</code> and it's children.
+     */
+    private DemoBean processDemo(Node demoNode) {
+
+        NodeList children = demoNode.getChildNodes();
+        String name = null;
+        String page = null;
+        ArrayList<DemoSourceInfo> sourceInfo = new ArrayList<DemoSourceInfo>();
+        for (int i = 0, len = children.getLength(); i < len; i++) {
+            Node n = children.item(i);
+            if ("name".equals(n.getNodeName())) {
+                name = getNodeText(n);
+            } else if ("page".equals(n.getNodeName())) {
+                page = getNodeText(n);
+            } else if ("sources".equals(n.getNodeName())) {
+                NodeList sources = n.getChildNodes();
+                for (int j = 0, jlen = sources.getLength(); j < jlen; j++) {
+                    Node s = sources.item(j);
+                    DemoSourceInfo info = createDemoSourceInfo(s);
+                    if (info != null) {
+                        sourceInfo.add(createDemoSourceInfo(s));
+                    }
+                }
+            }
+        }
+
+        sourceInfo.trimToSize();
+
+        if (name != null && page != null && !sourceInfo.isEmpty()) {
+            return new DemoBean(name, page, sourceInfo);
+        }
+        return null;
+
+    }
+
+
+    /**
+     * @param sourceInfo node representing the <sources> element.
+     * @return a new <code>DemoSourceInfo</code> instance based off the provided
+     *  <code>Node</code> and it's children.
+     */
+    private DemoSourceInfo createDemoSourceInfo(Node sourceInfo) {
+
+        NodeList children = sourceInfo.getChildNodes();
+        String label = null;
+        String path = null;
+        for (int i = 0, len = children.getLength(); i < len; i++) {
+            Node n = children.item(i);
+            if ("label".equals(n.getNodeName())) {
+                label = getNodeText(n);
+            } else if ("path".equals(n.getNodeName())) {
+                path = getNodeText(n);
+            }
+        }
+
+        if (label != null && path != null) {
+            return new DemoSourceInfo(label, path);
+        }
+        return null;
+
+    }
+
+
+    /**
+     * @param node target <code>Node</code>
+     * @return the textual value of the <code>Node</code>
+     */
+    private String getNodeText(Node node) {
+
+        String res = null;
+        if (node != null) {
+            res = node.getTextContent();
+            if (res != null) {
+                res = res.trim();
+            }
+        }
+
+        return ((res != null && res.length() != 0) ? res : null);
+
+    }
+
+
+    // ---------------------------------------------------------- Nested Classes
+
+
+    public static final class DemoBean {
+
+        private List<DemoSourceInfo> sourceInfo;
+        private String demoName;
+        private String page;
+
+
+        DemoBean(String demoName, String page, List<DemoSourceInfo> sourceInfo) {
+
+            this.demoName = demoName;
+            this.page = page;
+            this.sourceInfo = sourceInfo;
+
+        }
+
+
+        // ------------------------------------------------------ Public Methods
+
+
+        public String getDemoName() {
+
+            return demoName;
+
+        }
+
+
+        public String getPage() {
+
+            return page;
+
+        }
+
+
+        public List<DemoSourceInfo> getSourceInfo() {
+
+            return sourceInfo;
+
+        }
+
+
+    } // END DemoBean
+
+
+    public static final class DemoSourceInfo  {
+
+
+        private String label;
+        private String sourceFilePath;
+
+
+        // -------------------------------------------------------- Constructors
+
+
+        DemoSourceInfo(String label, String sourceFilePath) {
+
+            this.label = label;
+            this.sourceFilePath = sourceFilePath;
+
+        }
+
+
+        // ------------------------------------------------------ Public Methods
+
+
+        public String getLabel() {
+
+            return label;
+
+        }
+
+
+        public String getSourceFilePath() {
+
+            return sourceFilePath;
+
+        }
+
+
+    } // END DemoSourceInfo
+
+}
diff --git a/jsf-demo/ajax-component/src/main/java/switchlist/Functions.java b/jsf-demo/ajax-component/src/main/java/switchlist/Functions.java
new file mode 100644
index 0000000..b9e9bfd
--- /dev/null
+++ b/jsf-demo/ajax-component/src/main/java/switchlist/Functions.java
@@ -0,0 +1,102 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package switchlist;
+
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.StringWriter;
+import java.io.BufferedReader;
+import java.io.PrintWriter;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import javax.faces.context.ExternalContext;
+import javax.faces.context.FacesContext;
+
+/**
+ * EL Functions.
+ */
+public class Functions {
+
+    private static final Logger LOGGER = Logger.getLogger(Functions.class.getName());
+
+
+    // ---------------------------------------------------------- Public Methods
+
+
+    /**
+     * <p>
+     * Write the file content to the current ResponseWriter.
+     * </p>
+     *
+     * @param ctx the <code>FacesContext</code> for the current request
+     * @param file the file to display
+     */
+    public static void writeSource(FacesContext ctx, String file) {
+
+        // PENDING - add logic to colorize key words/XML elements?
+
+        ExternalContext extCtx = ctx.getExternalContext();
+        BufferedReader r =
+              new BufferedReader(
+                    new InputStreamReader(extCtx.getResourceAsStream(file)));
+        StringWriter w = new StringWriter();
+        PrintWriter pw = new PrintWriter(w);
+
+        try {
+            int lineNumber = 1;
+            for (String s = r.readLine(); s != null; s = r.readLine()) {
+                pw.format("%3s", Integer.toString(lineNumber++));
+                pw.write(": ");
+                pw.write(s);
+                pw.write('\n');
+            }
+            ctx.getResponseWriter().writeText(w.toString(), null);
+        } catch (IOException ioe) {
+            if (LOGGER.isLoggable(Level.SEVERE)) {
+                LOGGER.log(Level.SEVERE,
+                           ioe.toString(),
+                           ioe);
+            }
+        }
+
+    }
+}
diff --git a/jsf-demo/ajax-component/src/main/java/switchlist/ListHolder.java b/jsf-demo/ajax-component/src/main/java/switchlist/ListHolder.java
new file mode 100644
index 0000000..9bd04c8
--- /dev/null
+++ b/jsf-demo/ajax-component/src/main/java/switchlist/ListHolder.java
@@ -0,0 +1,53 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package switchlist;
+
+import java.util.Map;
+
+public interface ListHolder {
+
+    public String[] getList();
+
+    public void setList(String[] list);
+
+    public Map<String, String> getItems();
+
+}
diff --git a/jsf-demo/ajax-component/src/main/java/switchlist/ListHolder1.java b/jsf-demo/ajax-component/src/main/java/switchlist/ListHolder1.java
new file mode 100644
index 0000000..2f2bc26
--- /dev/null
+++ b/jsf-demo/ajax-component/src/main/java/switchlist/ListHolder1.java
@@ -0,0 +1,77 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+ package switchlist;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.SessionScoped;
+import java.io.Serializable;
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+
+ at ManagedBean(name="listholder1")
+ at SessionScoped
+public class ListHolder1 implements ListHolder, Serializable {
+
+    private static final long serialVersionUID = -4047970327214634942L;
+
+    String[] list = null;
+    Map<String, String> items = new LinkedHashMap<String, String>();
+
+    {
+        items.put("one", "one");
+        items.put("two", "two");
+        items.put("three", "three");
+        items.put("four", "four");
+    }
+
+    public String[] getList() {
+        return list;
+    }
+
+    public void setList(String[] list) {
+        this.list = list;
+    }
+
+    public Map<String, String> getItems() {
+        return items;
+    }
+}
diff --git a/jsf-demo/ajax-component/src/main/java/switchlist/ListHolder2.java b/jsf-demo/ajax-component/src/main/java/switchlist/ListHolder2.java
new file mode 100644
index 0000000..b992c29
--- /dev/null
+++ b/jsf-demo/ajax-component/src/main/java/switchlist/ListHolder2.java
@@ -0,0 +1,78 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package switchlist;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.SessionScoped;
+import java.io.Serializable;
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+
+ at ManagedBean(name="listholder2")
+ at SessionScoped
+public class ListHolder2 implements ListHolder, Serializable {
+
+    private static final long serialVersionUID = -4047970327214634942L;
+
+    String[] list = null;
+    Map<String, String> items = new LinkedHashMap<String, String>();
+
+    {
+        items.put("five", "five");
+        items.put("six", "six");
+        items.put("seven", "seven");
+        items.put("eight", "eight");
+    }
+
+    public String[] getList() {
+        return list;
+    }
+
+    public void setList(String[] list) {
+        this.list = list;
+    }
+
+    public Map<String, String> getItems() {
+        return items;
+    }
+
+}
diff --git a/jsf-demo/ajax-component/src/main/java/switchlist/SwitchlistBean.java b/jsf-demo/ajax-component/src/main/java/switchlist/SwitchlistBean.java
new file mode 100644
index 0000000..6e52238
--- /dev/null
+++ b/jsf-demo/ajax-component/src/main/java/switchlist/SwitchlistBean.java
@@ -0,0 +1,111 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package switchlist;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.SessionScoped;
+import javax.faces.event.ActionEvent;
+import java.util.Map;
+import java.util.LinkedHashMap;
+import java.io.Serializable;
+
+
+ at ManagedBean(name="switchlist")
+ at SessionScoped
+public class SwitchlistBean implements Serializable {
+
+    private static final long serialVersionUID = -6301210065157592489L;
+
+    private Map<String, String> items1 = new LinkedHashMap<String, String>();
+    private Map<String, String> items2 = new LinkedHashMap<String, String>();
+    private String[] list1 = null;
+    private String[] list2 = null;
+
+    {   items1.put("one", "one");
+        items1.put("two", "two");
+        items1.put("three", "three");
+        items1.put("four", "four");     }
+
+    {   items2.put("five", "five");
+        items2.put("six", "six");
+        items2.put("seven", "seven");
+        items2.put("eight", "eight");   }
+
+    public void move1to2(ActionEvent ae) {
+        if (list1 != null && list1.length > 0) {
+            for (String item : list1 ) {
+                items2.put(item, items1.remove(item));
+            }
+        }
+    }
+
+    public void move2to1(ActionEvent ae) {
+        if (list2 != null && list2.length > 0) {
+            for (String item : list2 ) {
+                items1.put(item, items2.remove(item));
+            }
+        }
+    }
+
+    public String[] getList1() {
+        return list1;
+    }
+
+    public void setList1(String list[]) {
+        this.list1 = list;
+    }
+
+    public String[] getList2() {
+        return list2;
+    }
+
+    public void setList2(String list[]) {
+        this.list2 = list;
+    }
+
+    public Map getItems1() {
+        return items1;    
+    }
+
+    public Map getItems2() {
+        return items2;
+    }
+}
diff --git a/jsf-demo/ajax-component/src/main/java/switchlist/SwitchlistController.java b/jsf-demo/ajax-component/src/main/java/switchlist/SwitchlistController.java
new file mode 100644
index 0000000..329aeaa
--- /dev/null
+++ b/jsf-demo/ajax-component/src/main/java/switchlist/SwitchlistController.java
@@ -0,0 +1,101 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package switchlist;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.RequestScoped;
+import java.util.Map;
+import java.io.Serializable;
+
+ at ManagedBean
+ at RequestScoped
+public class SwitchlistController implements Serializable {
+
+    private static final long serialVersionUID = -4002627066189080830L;
+
+    ListHolder listholder1, listholder2;
+
+    public String m1_2() {
+        String[] list1 = listholder1.getList();
+        Map<String, String> items2 = listholder2.getItems();
+        Map<String, String> items1 = listholder1.getItems();
+        if (list1 != null && list1.length > 0) {
+            for (String item : list1) {
+                items2.put(item, items1.remove(item));
+            }
+        }
+        return null;
+    }
+
+    public String m2_1() {
+        String[] list2 = listholder2.getList();
+        Map<String, String> items2 = listholder2.getItems();
+        Map<String, String> items1 = listholder1.getItems();
+        if (list2 != null && list2.length > 0) {
+            for (String item : list2) {
+                items1.put(item, items2.remove(item));
+            }
+        }
+        return null;
+    }
+
+    public String m1_2(ListHolder listholder1, ListHolder listholder2) {
+        this.listholder1 = listholder1;
+        this.listholder2 = listholder2;
+        return m1_2();
+    }
+
+    public String m2_1(ListHolder listholder1, ListHolder listholder2) {
+        this.listholder1 = listholder1;
+        this.listholder2 = listholder2;
+        return m2_1();
+    }
+
+
+    public void setListHolder1(ListHolder listholder1) {
+        this.listholder1 = listholder1;
+    }
+
+    public void setListHolder2(ListHolder listholder2) {
+        this.listholder2 = listholder2;
+    }
+
+}
diff --git a/jsf-demo/ajax-component/src/main/webapp/WEB-INF/demo.xml b/jsf-demo/ajax-component/src/main/webapp/WEB-INF/demo.xml
new file mode 100644
index 0000000..1bdcbce
--- /dev/null
+++ b/jsf-demo/ajax-component/src/main/webapp/WEB-INF/demo.xml
@@ -0,0 +1,262 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<demo-info>
+
+    <demo>
+        <name>Switchlist In-Page Example</name>
+        <page>switchlistPage.jsf</page>
+        <sources>
+            <source>
+                <label>JSF Page</label>
+                <path>/switchlistPage.xhtml</path>
+            </source>
+            <source>
+                <label>CSS</label>
+                <path>/resources/switchlist.css</path>
+            </source>
+            <source>
+                <label>Backing Bean</label>
+                <path>/WEB-INF/classes/switchlist/SwitchlistBean.java</path>
+            </source>
+        </sources>
+    </demo>
+
+    <!-- =================================================================== -->
+
+    <demo>
+        <name>Switchlist with Ajax Tag</name>
+        <page>switchlistAjaxTag.jsf</page>
+        <sources>
+            <source>
+                <label>JSF Page</label>
+                <path>/switchlistAjaxTag.xhtml</path>
+            </source>
+            <source>
+                <label>CSS</label>
+                <path>/resources/switchlist.css</path>
+            </source>
+            <source>
+                <label>Managed Bean</label>
+                <path>/WEB-INF/classes/switchlist/SwitchlistBean.java</path>
+            </source>
+        </sources>
+    </demo>
+
+    <!-- =================================================================== -->
+
+    <demo>
+        <name>Switchlist Component</name>
+        <page>switchlistComponent.jsf</page>
+        <sources>
+            <source>
+                <label>JSF Page</label>
+                <path>/switchlistComponent.xhtml</path>
+            </source>
+            <source>
+                <label>Component CSS</label>
+                <path>/resources/switchlist/switchlist.css</path>
+            </source>
+            <source>
+                <label>Component xhtml</label>
+                <path>/resources/switchlist/switchlist.xhtml</path>
+            </source>
+            <source>
+                <label>Managed Bean</label>
+                <path>/WEB-INF/classes/switchlist/SwitchlistBean.java</path>
+            </source>
+        </sources>
+    </demo>
+
+    <!-- =================================================================== -->
+
+    <demo>
+        <name>Switchlist Ajax Component</name>
+        <page>switchlistAjaxComponent.jsf</page>
+        <sources>
+            <source>
+                <label>JSF Page</label>
+                <path>/switchlistAjaxComponent.xhtml</path>
+            </source>
+            <source>
+                <label>Component CSS</label>
+                <path>/resources/switchlistajax/switchlist.css</path>
+            </source>
+            <source>
+                <label>Component xhtml</label>
+                <path>/resources/switchlistajax/switchlist.xhtml</path>
+            </source>
+            <source>
+                <label>Interface</label>
+                <path>/WEB-INF/classes/switchlist/ListHolder.java</path>
+            </source>
+            <source>
+                <label>Managed Bean</label>
+                <path>/WEB-INF/classes/switchlist/ListHolder1.java</path>
+            </source>
+            <source>
+                <label>Managed Bean</label>
+                <path>/WEB-INF/classes/switchlist/ListHolder2.java</path>
+            </source>
+            <source>
+                <label>Controller Bean</label>
+                <path>/WEB-INF/classes/switchlist/SwitchlistController.java</path>
+            </source>
+        </sources>
+    </demo>
+
+    <!-- =================================================================== -->
+
+    <demo>
+        <name>Editable Text Component</name>
+        <page>edittext.jsf</page>
+        <sources>
+            <source>
+                <label>JSF Page</label>
+                <path>/edittext.xhtml</path>
+            </source>
+            <source>
+                <label>Component CSS</label>
+                <path>/resources/editText/styles.css</path>
+            </source>
+            <source>
+                <label>Component xhtml</label>
+                <path>/resources/editText/editText.xhtml</path>
+            </source>
+            <source>
+                <label>Component JavaScript</label>
+                <path>/resources/editText/editText.js</path>
+            </source>
+            <source>
+                <label>Managed Bean</label>
+                <path>/WEB-INF/classes/dataholding/StringHolder.java</path>
+            </source>
+        </sources>
+    </demo>
+
+    <!-- =================================================================== -->
+
+    <demo>
+        <name>Poll via Request Component</name>
+        <page>poll.jsf</page>
+        <sources>
+            <source>
+                <label>JSF Page</label>
+                <path>/poll.xhtml</path>
+            </source>
+            <source>
+                <label>Component xhtml</label>
+                <path>/resources/poll/poll.xhtml</path>
+            </source>
+            <source>
+                <label>Component JavaScript</label>
+                <path>/resources/poll/poll.js</path>
+            </source>
+            <source>
+                <label>Component xhtml</label>
+                <path>/resources/poll/polltag.xhtml</path>
+            </source>
+            <source>
+                <label>Component JavaScript</label>
+                <path>/resources/poll/polltag.js</path>
+            </source>
+            <source>
+                <label>Managed Bean</label>
+                <path>/WEB-INF/classes/dataholding/Count.java</path>
+            </source>
+        </sources>
+    </demo>
+
+
+    <!-- =================================================================== -->
+
+    <demo>
+        <name>YUI Calendar Component</name>
+        <page>yuical.jsf</page>
+        <sources>
+            <source>
+                <label>JSF Page</label>
+                <path>/yuical.xhtml</path>
+            </source>
+            <source>
+                <label>Component xhtml</label>
+                <path>/resources/yuical/yuical.xhtml</path>
+            </source>
+            <source>
+                <label>Component JavaScript</label>
+                <path>/resources/yuical/calendar.js</path>
+            </source>
+            <source>
+                <label>Managed Bean</label>
+                <path>/WEB-INF/classes/dataholding/DateHolder.java</path>
+            </source>
+        </sources>
+    </demo>
+
+
+    <!-- =================================================================== -->
+
+    <demo>
+        <name>Busy Status Component</name>
+        <page>busystatus.jsf</page>
+        <sources>
+            <source>
+                <label>JSF Page</label>
+                <path>/busystatus.xhtml</path>
+            </source>
+            <source>
+                <label>Component xhtml</label>
+                <path>/resources/busystatus/busystatus.xhtml</path>
+            </source>
+            <source>
+                <label>Component JavaScript</label>
+                <path>/resources/busystatus/busystatus.js</path>
+            </source>
+            <source>
+                <label>Managed Bean</label>
+                <path>/WEB-INF/classes/dataholding/StringHolder.java</path>
+            </source>
+        </sources>
+    </demo>
+
+</demo-info>
diff --git a/jsf-demo/ajax-component/src/main/webapp/WEB-INF/demotag-taglib.xml b/jsf-demo/ajax-component/src/main/webapp/WEB-INF/demotag-taglib.xml
new file mode 100644
index 0000000..2638a4d
--- /dev/null
+++ b/jsf-demo/ajax-component/src/main/webapp/WEB-INF/demotag-taglib.xml
@@ -0,0 +1,59 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<facelet-taglib xmlns="http://java.sun.com/xml/ns/javaee"
+              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+              xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facelettaglibrary_2_0.xsd"
+              version="2.0">
+
+    <namespace>
+        https://javaserverfaces.dev.java.net/demo/demotag
+    </namespace>
+
+    <function>
+        <function-name>writeSource</function-name>
+        <function-class>switchlist.Functions</function-class>
+        <function-signature>void writeSource(javax.faces.context.FacesContext,java.lang.String)</function-signature>
+    </function>
+
+</facelet-taglib>
diff --git a/jsf-demo/ajax-component/src/main/webapp/WEB-INF/demotemplate.xhtml b/jsf-demo/ajax-component/src/main/webapp/WEB-INF/demotemplate.xhtml
new file mode 100644
index 0000000..b28e106
--- /dev/null
+++ b/jsf-demo/ajax-component/src/main/webapp/WEB-INF/demotemplate.xhtml
@@ -0,0 +1,61 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xml:lang="en" lang="en">
+<h:head>
+     <h:outputStylesheet name="stylesheet.css"/>
+    <title>${title}</title>
+</h:head>
+
+<h:body>
+<div id="container">
+<ui:insert name="content"/>
+</div>
+</h:body>
+</html>
diff --git a/jsf-demo/ajax-component/src/main/webapp/WEB-INF/web.xml b/jsf-demo/ajax-component/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..7c58fe1
--- /dev/null
+++ b/jsf-demo/ajax-component/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,81 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<web-app version="2.5"
+         xmlns="http://java.sun.com/xml/ns/javaee"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" >
+    
+    <display-name>JavaServer Faces Template Demo Sample Application</display-name>
+    <description>
+        JavaServer Faces Switchlist Demo Sample Application
+    </description>
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>server</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>Development</param-value>
+    </context-param>
+
+    <context-param>
+        <param-name>javax.faces.FACELETS_LIBRARIES</param-name>
+        <param-value>/WEB-INF/demotag-taglib.xml</param-value>
+    </context-param>
+
+    <!-- Faces Servlet -->
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup> 1 </load-on-startup>
+    </servlet>
+
+
+    <!-- Faces Servlet Mapping -->
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>*.jsf</url-pattern>
+    </servlet-mapping>
+
+</web-app>
diff --git a/jsf-demo/ajax-component/src/main/webapp/busystatus.xhtml b/jsf-demo/ajax-component/src/main/webapp/busystatus.xhtml
new file mode 100644
index 0000000..33ce324
--- /dev/null
+++ b/jsf-demo/ajax-component/src/main/webapp/busystatus.xhtml
@@ -0,0 +1,66 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ez="http://java.sun.com/jsf/composite/busystatus">
+<h:head>
+    <title>Busy Busy</title>
+</h:head>
+<h:body>
+    <h:form id="busyForm">
+        <h:inputText id="in" value="#{stringholder.delayString}">
+            <f:ajax render="out"/>
+        </h:inputText><ez:busystatus id="busy" for="busyForm:in" /><br/>
+        <h:outputText id="out" value="#{stringholder.delayString}"/><br/>
+        <h:commandButton type="button" value="Click Me"/>
+    </h:form>
+    <p>
+        <h:outputLink value="http://weblogs.java.net/blog/driscoll/archive/2009/09/02/busy-status-indicator-jsf-2">
+            Blog discussing this example</h:outputLink>
+     </p>
+
+</h:body>
+</html>
diff --git a/jsf-demo/ajax-component/src/main/webapp/displaysource.xhtml b/jsf-demo/ajax-component/src/main/webapp/displaysource.xhtml
new file mode 100644
index 0000000..c7b3791
--- /dev/null
+++ b/jsf-demo/ajax-component/src/main/webapp/displaysource.xhtml
@@ -0,0 +1,62 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:d="https://javaserverfaces.dev.java.net/demo/demotag"
+      xml:lang="en" lang="en">
+<head>
+    <title>Source: #{param.file}</title>
+</head>
+<body>
+    <h3>Source code for:  #{param.file}</h3>
+
+    <hr/>
+
+    <pre>
+#{d:writeSource(facesContext, param.file)}
+    </pre>
+
+</body>
+</html>
diff --git a/jsf-demo/ajax-component/src/main/webapp/edittext.xhtml b/jsf-demo/ajax-component/src/main/webapp/edittext.xhtml
new file mode 100644
index 0000000..8000fe2
--- /dev/null
+++ b/jsf-demo/ajax-component/src/main/webapp/edittext.xhtml
@@ -0,0 +1,64 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:ez="http://java.sun.com/jsf/composite/editText">
+<h:head>
+    <title>Editable Text Example</title>
+</h:head>
+<h:body>
+        <h1>Editable Text Example</h1>
+        <h:form id="form1">
+                <ez:editText id="editText1" value="#{stringholder.str}"/>
+            <br/>
+                <h:commandButton value="reload"/>
+            <h:messages/>
+        </h:form>
+        <p>
+        <h:outputLink value="http://weblogs.java.net/blog/driscoll/archive/2008/11/another_jsf_20_1.html">
+            Blog discussing this example</h:outputLink>
+        </p>
+</h:body>
+</html>
diff --git a/jsf-demo/ajax-component/src/main/webapp/home.xhtml b/jsf-demo/ajax-component/src/main/webapp/home.xhtml
new file mode 100644
index 0000000..455c83f
--- /dev/null
+++ b/jsf-demo/ajax-component/src/main/webapp/home.xhtml
@@ -0,0 +1,106 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xml:lang="en" lang="en">
+<head>
+    <title>Should Not Be Displayed</title>
+</head>
+<body>   <!-- template="/WEB-INF/demotemplate.xhtml" -->
+<ui:composition  template="/WEB-INF/demotemplate.xhtml" >
+    <ui:param name="title" value="JavaServer Faces 2.0 Ajax Component Demo"/>
+    <ui:define name="content">
+        <table id="demo-table" border="1" cellpadding="1">
+            <caption>
+                ${title}
+            </caption>
+            <thead>
+                <tr>
+                    <th>Demo Name</th>
+                    <th>Related Source Files</th>
+                    <th>Execute</th>
+                </tr>
+            </thead>
+            <tbody>
+                <ui:repeat var="demo" value="#{demoBean.demoBeans}">
+                    <tr>
+                        <td>
+                            <h:outputText value="#{demo.demoName}"/>
+                        </td>
+                        <td>
+                            <table>
+                                <ui:repeat var="sourceInfo" value="#{demo.sourceInfo}">
+                                <tr>
+                                        <td>
+                                            <h:outputText value="#{sourceInfo.label}: "/>
+                                        </td>
+                                        <td>
+                                            <h:outputLink value="displaysource.jsf">
+                                            <h:outputText value="#{sourceInfo.sourceFilePath}"/>
+                                                <f:param name="file" value="#{sourceInfo.sourceFilePath}"/>
+                                            </h:outputLink>
+                                        </td>
+                                    </tr>
+                                </ui:repeat>
+                            </table>
+                        </td>
+                        <td align="center">
+                            <h:outputLink value="#{demo.page}">
+                                <h:graphicImage style="border:none"
+                                                alt="Execute"
+                                                name="images/execute.gif"/>
+                            </h:outputLink>
+                        </td>
+                    </tr>
+                </ui:repeat>
+            </tbody>
+        </table>
+    </ui:define>
+</ui:composition>
+</body>
+</html>
diff --git a/jsf-demo/ajax-component/src/main/webapp/index.html b/jsf-demo/ajax-component/src/main/webapp/index.html
new file mode 100644
index 0000000..723727a
--- /dev/null
+++ b/jsf-demo/ajax-component/src/main/webapp/index.html
@@ -0,0 +1,49 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<html>
+    <head>
+        <meta http-equiv="Refresh" content="0;url=home.jsf">
+    </head>
+    <body>
+    </body>
+</html>
diff --git a/jsf-demo/ajax-component/src/main/webapp/poll.xhtml b/jsf-demo/ajax-component/src/main/webapp/poll.xhtml
new file mode 100644
index 0000000..813dcdf
--- /dev/null
+++ b/jsf-demo/ajax-component/src/main/webapp/poll.xhtml
@@ -0,0 +1,86 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:ez="http://java.sun.com/jsf/composite/poll">
+<h:head>
+    <title>Should Be Ignored</title>
+</h:head>
+<body>
+
+<ui:composition template="/WEB-INF/demotemplate.xhtml">
+    <ui:param name="title" value="Basic Composite Component - Output"/>
+    <ui:define name="content">
+
+        <h2>${title}</h2>
+
+        <h:form id="form">
+
+            <div id="cc" class="grayBox" style="border: 1px solid #090;">
+                <!-- begin composite component usage -->
+
+                Count:<br/>
+                <h:outputText id="target" value="#{count.count}"/><br/>
+                <ez:polltag id="poll" interval="200" timeout="5000" render=":form:target"/>
+                <h:outputText id="target2" value="#{count.count2}"/>
+                <ez:poll id="poll2" interval="1000" timeout="10000" render="form:target2"/>
+                <!-- end composite component usage -->
+            </div>
+
+            <p><h:commandButton value="reload"/></p>
+            <h:messages/>
+        </h:form>
+        <p>
+        <h:outputLink value="http://weblogs.java.net/blog/driscoll/archive/2009/07/a_tale_of_two_c.html">
+            Blog discussing this example</h:outputLink>
+        </p>
+
+    </ui:define>
+</ui:composition>
+
+</body>
+</html>
diff --git a/jsf-demo/ajax-component/src/main/webapp/resources/busystatus/busystatus.js b/jsf-demo/ajax-component/src/main/webapp/resources/busystatus/busystatus.js
new file mode 100644
index 0000000..b48d7bf
--- /dev/null
+++ b/jsf-demo/ajax-component/src/main/webapp/resources/busystatus/busystatus.js
@@ -0,0 +1,58 @@
+/*
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+ Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
+
+ The contents of this file are subject to the terms of either the GNU
+ General Public License Version 2 only ("GPL") or the Common Development
+ and Distribution License("CDDL") (collectively, the "License").  You
+ may not use this file except in compliance with the License. You can obtain
+ a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
+ or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ language governing permissions and limitations under the License.
+
+ When distributing the software, include this License Header Notice in each
+ file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
+ Sun designates this particular file as subject to the "Classpath" exception
+ as provided by Sun in the GPL Version 2 section of the License file that
+ accompanied this code.  If applicable, add the following below the License
+ Header, with the fields enclosed by brackets [] replaced by your own
+ identifying information: "Portions Copyrighted [year]
+ [name of copyright owner]"
+
+ Contributor(s):
+
+ If you wish your version of this file to be governed by only the CDDL or
+ only the GPL Version 2, indicate your decision by adding "[Contributor]
+ elects to include this software in this distribution under the [CDDL or GPL
+ Version 2] license."  If you don't indicate a single choice of license, a
+ recipient has the option to distribute your version of this file under
+ either the CDDL, the GPL Version 2 or to extend the choice of license to
+ its licensees as provided above.  However, if you add GPL Version 2 code
+ and therefore, elected the GPL Version 2 license, then the option applies
+ only if the new code is made subject to such option by the copyright
+ holder.
+*/
+
+if (!window["busystatusdemo"]) {
+    var busystatusdemo = {};
+}
+busystatusdemo.onStatusChange = function onStatusChange(data) {
+    var status = data.status;
+    var componentID = busystatusdemo[data.source.id];
+    if (!componentID) {  // if there's no request to listen for this one component, then leave
+        return;
+    }
+    var element = document.getElementById(componentID);
+    if (status === "begin") { // turn on busy indicator
+        element.style.display = "inline";
+    } else {  // turn off busy indicator, on either "complete" or "success"
+        element.style.display = "none";
+    }
+};
+
+jsf.ajax.addOnEvent(busystatusdemo.onStatusChange);
+
+busystatusdemo.init =  function init(componentID, forValue) {
+    busystatusdemo[forValue] = componentID;
+};
diff --git a/jsf-demo/ajax-component/src/main/webapp/resources/busystatus/busystatus.xhtml b/jsf-demo/ajax-component/src/main/webapp/resources/busystatus/busystatus.xhtml
new file mode 100644
index 0000000..a80bff1
--- /dev/null
+++ b/jsf-demo/ajax-component/src/main/webapp/resources/busystatus/busystatus.xhtml
@@ -0,0 +1,75 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:composite="http://java.sun.com/jsf/composite">
+<head>
+    <title>This will not be present in rendered output</title>
+</head>
+
+<body>
+
+<composite:interface name="busyStatus"
+                     displayName="Busy Status Component"
+                     shortDescription="Busy Status Component">
+    <composite:attribute name="for" required="true" type="String"/>
+</composite:interface>
+
+<composite:implementation>
+    <h:outputScript name="jsf.js" library="javax.faces" target="head"/>
+    <h:outputScript name="busystatus/busystatus.js" target="head"/>
+    <script type="text/javascript">
+        busystatusdemo.init("#{cc.clientId}", "#{cc.attrs.for}");
+    </script>
+    <span id="#{cc.clientId}" style="display:none;">
+        <h:graphicImage id="busyindicator" height="15" width="15" name="busystatus/spinner3-greenie.gif"/>
+    </span>
+</composite:implementation>
+
+</body>
+
+</html>
diff --git a/jsf-demo/ajax-component/src/main/webapp/resources/busystatus/spinner3-greenie.gif b/jsf-demo/ajax-component/src/main/webapp/resources/busystatus/spinner3-greenie.gif
new file mode 100644
index 0000000..9351497
Binary files /dev/null and b/jsf-demo/ajax-component/src/main/webapp/resources/busystatus/spinner3-greenie.gif differ
diff --git a/jsf-demo/ajax-component/src/main/webapp/resources/editText/editText.js b/jsf-demo/ajax-component/src/main/webapp/resources/editText/editText.js
new file mode 100644
index 0000000..4e63dc3
--- /dev/null
+++ b/jsf-demo/ajax-component/src/main/webapp/resources/editText/editText.js
@@ -0,0 +1,99 @@
+/*
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+ Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
+
+ The contents of this file are subject to the terms of either the GNU
+ General Public License Version 2 only ("GPL") or the Common Development
+ and Distribution License("CDDL") (collectively, the "License").  You
+ may not use this file except in compliance with the License. You can obtain
+ a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
+ or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ language governing permissions and limitations under the License.
+
+ When distributing the software, include this License Header Notice in each
+ file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
+ Sun designates this particular file as subject to the "Classpath" exception
+ as provided by Sun in the GPL Version 2 section of the License file that
+ accompanied this code.  If applicable, add the following below the License
+ Header, with the fields enclosed by brackets [] replaced by your own
+ identifying information: "Portions Copyrighted [year]
+ [name of copyright owner]"
+
+ Contributor(s):
+
+ If you wish your version of this file to be governed by only the CDDL or
+ only the GPL Version 2, indicate your decision by adding "[Contributor]
+ elects to include this software in this distribution under the [CDDL or GPL
+ Version 2] license."  If you don't indicate a single choice of license, a
+ recipient has the option to distribute your version of this file under
+ either the CDDL, the GPL Version 2 or to extend the choice of license to
+ its licensees as provided above.  However, if you add GPL Version 2 code
+ and therefore, elected the GPL Version 2 license, then the option applies
+ only if the new code is made subject to such option by the copyright
+ holder.
+*/
+
+if (!window["edittextdemo"]) {
+    var edittextdemo = {};
+}
+
+edittextdemo.init = function init(componentID, initialValue) {
+    edittextdemo[componentID] = initialValue;
+};
+
+edittextdemo.toggle = function toggle(idOn, idOff) {
+    try {
+        var elementon = document.getElementById(idOn);
+        var elementoff = document.getElementById(idOff);
+        elementon.style.display = "inline";
+        elementoff.style.display = "none";
+    } catch (ex) {
+        alert(ex);
+    }
+};
+
+edittextdemo.submitButton = function submitButton(componentID, event) {
+    try {
+        var edit1 = componentID + ':edit1';
+        var edit2 = componentID + ':edit2';
+        edittextdemo.toggle(edit1, edit2);
+
+        var link = componentID + ':editLink';
+        var input = componentID + ':editInput';
+        var subButton = componentID + ':submit';
+        var exec = subButton + ' ' + input;
+        var rend = input + ' ' + link;
+        jsf.ajax.request(document.getElementById(subButton), event, {execute: exec, render: rend});
+        edittextdemo[componentID] = document.getElementById(input).value;
+    } catch (ex) {
+        alert(ex);
+    }
+    return false;
+};
+
+edittextdemo.cancelButton = function cancelButton(componentID) {
+    try {
+        var edit1 = componentID + ':edit1';
+        var edit2 = componentID + ':edit2';
+        edittextdemo.toggle(edit1, edit2);
+        var input = componentID + ':editInput';
+        document.getElementById(input).value = edittextdemo[componentID];
+    } catch (ex) {
+        alert(ex);
+    }
+    return false;
+};
+
+edittextdemo.linkClick = function linkClick(componentID) {
+    try {
+        var edit1 = componentID + ':edit1';
+        var edit2 = componentID + ':edit2';
+        var editInput = componentID + ':editInput';
+        edittextdemo.toggle(edit2, edit1);
+        document.getElementById(editInput).focus();
+    } catch (ex) {
+        alert(ex);
+    }
+    return false;
+};
diff --git a/jsf-demo/ajax-component/src/main/webapp/resources/editText/editText.xhtml b/jsf-demo/ajax-component/src/main/webapp/resources/editText/editText.xhtml
new file mode 100644
index 0000000..428741d
--- /dev/null
+++ b/jsf-demo/ajax-component/src/main/webapp/resources/editText/editText.xhtml
@@ -0,0 +1,87 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:composite="http://java.sun.com/jsf/composite">
+<head>
+    <title>This will not be present in rendered output</title>
+</head>
+
+<body>
+
+<composite:interface name="editText"
+                     displayName="Editable Text Component"
+                     shortDescription="Editable Text Component">
+    <composite:attribute name="value" required="true" type="String"/>
+</composite:interface>
+
+<composite:implementation>
+    <h:outputScript name="jsf.js" library="javax.faces" target="head"/>
+    <h:outputScript name="editText/editText.js" target="head" />
+    <script type="text/javascript">
+        edittextdemo.init("#{cc.clientId}", "#{cc.attrs.value}");
+    </script>
+    <h:outputStylesheet name="editText/styles.css"/>
+    <span id="#{cc.clientId}">
+    <h:panelGroup id="edit1">
+        <h:outputLink id="editLink" title="Click to edit" styleClass="editLink"
+                      onclick="return edittextdemo.linkClick('#{cc.clientId}');"
+                >#{cc.attrs.value}</h:outputLink>
+    </h:panelGroup>
+    <h:panelGroup id="edit2" style="display:none;">
+        <h:inputText id="editInput" value="#{cc.attrs.value}" styleClass="editInput"/>
+        <h:commandButton value="Submit" id="submit"
+                         onclick="return edittextdemo.submitButton('#{cc.clientId}', event);"/>
+        <h:commandButton value="Cancel" id="cancel"
+                         onclick="return edittextdemo.cancelButton('#{cc.clientId}');"/>
+    </h:panelGroup>
+    </span>
+</composite:implementation>
+
+</body>
+
+</html>
diff --git a/jsf-demo/ajax-component/src/main/webapp/resources/editText/styles.css b/jsf-demo/ajax-component/src/main/webapp/resources/editText/styles.css
new file mode 100644
index 0000000..021899a
--- /dev/null
+++ b/jsf-demo/ajax-component/src/main/webapp/resources/editText/styles.css
@@ -0,0 +1,54 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+.editClass {
+    font-size: medium;
+    font-style: normal;
+    font-family: Arial, sans-serif;
+}
+.editLink {
+    font-size: medium;
+    font-style: normal;
+    font-family: Arial, sans-serif;
+}
+a.editLink:link {text-decoration: none}
+a.editLink:visited {text-decoration: none}
+a.editLink:active {text-decoration: none}
+a.editLink:hover {text-decoration: none; background-color: #eeee11;}
diff --git a/jsf-demo/ajax-component/src/main/webapp/resources/images/execute.gif b/jsf-demo/ajax-component/src/main/webapp/resources/images/execute.gif
new file mode 100644
index 0000000..f64d70f
Binary files /dev/null and b/jsf-demo/ajax-component/src/main/webapp/resources/images/execute.gif differ
diff --git a/jsf-demo/ajax-component/src/main/webapp/resources/poll/poll.js b/jsf-demo/ajax-component/src/main/webapp/resources/poll/poll.js
new file mode 100644
index 0000000..3e676c4
--- /dev/null
+++ b/jsf-demo/ajax-component/src/main/webapp/resources/poll/poll.js
@@ -0,0 +1,84 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License. You can obtain
+ * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
+ * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
+ * Sun designates this particular file as subject to the "Classpath" exception
+ * as provided by Sun in the GPL Version 2 section of the License file that
+ * accompanied this code.  If applicable, add the following below the License
+ * Header, with the fields enclosed by brackets [] replaced by your own
+ * identifying information: "Portions Copyrighted [year]
+ * [name of copyright owner]"
+ *
+ * Contributor(s):
+ *
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+
+if (!window.jsfdemo) {
+    var jsfdemo = {};
+}
+
+if (!jsfdemo.poll) {
+    jsfdemo.poll = {};
+}
+
+if (!jsfdemo.poll.init) {
+    jsfdemo.poll.init = function init(id, inc, to, exe, rend) {
+        var componentID = id;
+        var increment = inc;
+        var timeout = to;
+        var elapsed = 0;
+        var token = null;
+        var execute = exe;
+        var render = rend;
+
+        // If increment isn't set, or it's less than some reasonable value (50) default to 200ms
+        if (isNaN(increment) || increment <= 50) {
+            increment = 200;
+        }
+        // If timeout isn't set, default to no timeout
+        if (isNaN(timeout) || timeout == 0) {
+            timeout = -1;
+        }
+
+        var poll = function poll() {
+            jsf.ajax.request(componentID, null, {execute: execute, render: render});
+            if (timeout != -1) {
+                // Not an accurate timeout - but simple to compute
+                elapsed += increment;
+                if (elapsed > timeout) {
+                    window.clearInterval(token);
+                }
+            }
+        };
+
+        token = window.setInterval(poll, increment);
+
+        return function cancelPoll(data) {
+            if (data.source.id == componentID) {
+                window.clearInterval(token);
+            }
+        }
+    }
+}
diff --git a/jsf-demo/ajax-component/src/main/webapp/resources/poll/poll.xhtml b/jsf-demo/ajax-component/src/main/webapp/resources/poll/poll.xhtml
new file mode 100644
index 0000000..e819fc1
--- /dev/null
+++ b/jsf-demo/ajax-component/src/main/webapp/resources/poll/poll.xhtml
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"      
+      xmlns:cc="http://java.sun.com/jsf/composite">
+<head/>
+<body>
+<cc:interface>
+    <cc:attribute name="interval" required="true" type="java.lang.Integer"/>
+    <cc:attribute name="timeout" required="false" type="java.lang.Integer"/>
+    <cc:attribute name="execute" required="false" type="java.lang.String"/>
+    <cc:attribute name="render" required="false" type="java.lang.String"/>
+</cc:interface>
+<cc:implementation>
+    <span id="#{cc.clientId}">
+        <h:outputScript name="jsf.js" library="javax.faces" target="head"/>
+        <h:outputScript name="poll/poll.js" target="head" />
+    </span>
+    <script type="text/javascript">
+        /* <![CDATA[ */
+        jsf.ajax.addOnError(jsfdemo.poll.init("#{cc.clientId}","#{cc.attrs.interval}", "#{cc.attrs.timeout}", "#{cc.attrs.execute}", "#{cc.attrs.render}"));
+        /* ]]> */
+    </script>
+</cc:implementation>
+</body>
+</html>
diff --git a/jsf-demo/ajax-component/src/main/webapp/resources/poll/polltag.js b/jsf-demo/ajax-component/src/main/webapp/resources/poll/polltag.js
new file mode 100644
index 0000000..3a7d2cd
--- /dev/null
+++ b/jsf-demo/ajax-component/src/main/webapp/resources/poll/polltag.js
@@ -0,0 +1,84 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License. You can obtain
+ * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
+ * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
+ * Sun designates this particular file as subject to the "Classpath" exception
+ * as provided by Sun in the GPL Version 2 section of the License file that
+ * accompanied this code.  If applicable, add the following below the License
+ * Header, with the fields enclosed by brackets [] replaced by your own
+ * identifying information: "Portions Copyrighted [year]
+ * [name of copyright owner]"
+ *
+ * Contributor(s):
+ *
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+
+if (!window.jsfdemo) {
+    var jsfdemo = {};
+}
+
+if (!jsfdemo.polltag) {
+    jsfdemo.polltag = {};
+}
+
+if (!jsfdemo.polltag.init) {
+    jsfdemo.polltag.init = function init(id, inc, to) {
+        var componentID = id;
+        var increment = inc;
+        var timeout = to;
+        var elapsed = 0;
+        var token = null;
+
+        // If increment isn't set, or it's less than some reasonable value (50) default to 200ms
+        if (isNaN(increment) || increment <= 50) {
+            increment = 200;
+        }
+        // If timeout isn't set, default to no timeout
+        if (isNaN(timeout) || timeout == 0) {
+            timeout = -1;
+        }
+
+        var poll = function poll() {
+            var hiddenID = componentID + ":" + "hidden";
+            var hidden = document.getElementById(hiddenID);
+            hidden.click();  // this executes the ajax request
+            if (timeout != -1) {
+                // Not an accurate timeout - but simple to compute
+                elapsed += increment;
+                if (elapsed > timeout) {
+                    window.clearInterval(token);
+                }
+            }
+        }
+
+        token = window.setInterval(poll, increment);
+
+        return function cancelPoll(data) {
+            if (data.source.id == componentID + ":" + "hidden") {
+                window.clearInterval(token);
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/jsf-demo/ajax-component/src/main/webapp/resources/poll/polltag.xhtml b/jsf-demo/ajax-component/src/main/webapp/resources/poll/polltag.xhtml
new file mode 100644
index 0000000..d78332a
--- /dev/null
+++ b/jsf-demo/ajax-component/src/main/webapp/resources/poll/polltag.xhtml
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"      
+      xmlns:cc="http://java.sun.com/jsf/composite">
+<head/>
+<body>
+<cc:interface>
+    <cc:attribute name="interval" required="true" type="java.lang.Integer"/>
+    <cc:attribute name="timeout" required="false" type="java.lang.Integer"/>
+    <cc:attribute name="execute" required="false" type="java.lang.String"/>
+    <cc:attribute name="render" required="false" type="java.lang.String"/>
+</cc:interface>
+<cc:implementation>
+    <span id="#{cc.clientId}">
+    <h:outputScript name="poll/polltag.js" target="head" />
+        <h:commandButton id="hidden" type="button" style="display: none;">
+            <f:ajax execute="#{cc.attrs.execute}" render="#{cc.attrs.render}"/>
+        </h:commandButton>
+    </span>
+    <script type="text/javascript">
+        jsf.ajax.addOnError(jsfdemo.polltag.init("#{cc.clientId}","#{cc.attrs.interval}", "#{cc.attrs.timeout}"));
+    </script>
+</cc:implementation>
+</body>
+</html>
diff --git a/jsf-demo/ajax-component/src/main/webapp/resources/switchlist.css b/jsf-demo/ajax-component/src/main/webapp/resources/switchlist.css
new file mode 100644
index 0000000..855364d
--- /dev/null
+++ b/jsf-demo/ajax-component/src/main/webapp/resources/switchlist.css
@@ -0,0 +1,56 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+.switchlist {
+    font-size: medium;
+    font-family: Arial, sans-serif;
+    height: 150px;
+    width: 100px;
+}
+.switchlistButtons {
+    width: 55px;
+    display: inline-block;
+    margin-top: 50px;
+    vertical-align: top;
+}
+.switchlistButton {
+    width: 50px;
+    height: 25px;
+}
diff --git a/jsf-demo/ajax-component/src/main/webapp/resources/switchlist/switchlist.css b/jsf-demo/ajax-component/src/main/webapp/resources/switchlist/switchlist.css
new file mode 100644
index 0000000..855364d
--- /dev/null
+++ b/jsf-demo/ajax-component/src/main/webapp/resources/switchlist/switchlist.css
@@ -0,0 +1,56 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+.switchlist {
+    font-size: medium;
+    font-family: Arial, sans-serif;
+    height: 150px;
+    width: 100px;
+}
+.switchlistButtons {
+    width: 55px;
+    display: inline-block;
+    margin-top: 50px;
+    vertical-align: top;
+}
+.switchlistButton {
+    width: 50px;
+    height: 25px;
+}
diff --git a/jsf-demo/ajax-component/src/main/webapp/resources/switchlist/switchlist.xhtml b/jsf-demo/ajax-component/src/main/webapp/resources/switchlist/switchlist.xhtml
new file mode 100644
index 0000000..d118074
--- /dev/null
+++ b/jsf-demo/ajax-component/src/main/webapp/resources/switchlist/switchlist.xhtml
@@ -0,0 +1,82 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:cc="http://java.sun.com/jsf/composite">
+<head>
+    <title>This will not be present in rendered output</title>
+</head>
+<body>
+<cc:interface name="switchlist"
+                     displayName="Switchlist Component"
+                     shortDescription="A basic example of the composite component feature">
+
+    <cc:attribute name="selected1" required="true"/>
+    <cc:attribute name="selected2" required="true"/>
+    <cc:attribute name="items1" required="true"/>
+    <cc:attribute name="items2" required="true"/>
+    <cc:attribute name="move1to2" targets="move1to2" required="true" method-signature="void f1(javax.faces.event.ActionEvent)" />
+    <cc:attribute name="move2to1" targets="move2to1" required="true" method-signature="void f2(javax.faces.event.ActionEvent)" />
+</cc:interface>
+
+<cc:implementation>
+    <h:outputStylesheet name="switchlist/switchlist.css"/>
+    <div id="#{cc.clientId}">
+    <h:selectManyListbox value="#{cc.attrs.selected1}" styleClass="switchlist">
+        <f:selectItems value="#{cc.attrs.items1}"/>
+    </h:selectManyListbox>
+    <h:panelGroup id="buttonGroup" styleClass="switchlistButtons">    
+    <h:commandButton id="move1to2" value=">>" actionListener="#{cc.attrs.move1to2}" styleClass="switchlistButton"/>
+    <h:commandButton id="move2to1" value="<<" actionListener="#{cc.attrs.move2to1}" styleClass="switchlistButton"/>
+    </h:panelGroup>
+    <h:selectManyListbox value="#{cc.attrs.selected2}" styleClass="switchlist">
+        <f:selectItems value="#{cc.attrs.items2}"/>
+    </h:selectManyListbox>
+    </div>
+</cc:implementation>
+</body>
+</html>
diff --git a/jsf-demo/ajax-component/src/main/webapp/resources/switchlistajax/switchlist.css b/jsf-demo/ajax-component/src/main/webapp/resources/switchlistajax/switchlist.css
new file mode 100644
index 0000000..855364d
--- /dev/null
+++ b/jsf-demo/ajax-component/src/main/webapp/resources/switchlistajax/switchlist.css
@@ -0,0 +1,56 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+.switchlist {
+    font-size: medium;
+    font-family: Arial, sans-serif;
+    height: 150px;
+    width: 100px;
+}
+.switchlistButtons {
+    width: 55px;
+    display: inline-block;
+    margin-top: 50px;
+    vertical-align: top;
+}
+.switchlistButton {
+    width: 50px;
+    height: 25px;
+}
diff --git a/jsf-demo/ajax-component/src/main/webapp/resources/switchlistajax/switchlist.xhtml b/jsf-demo/ajax-component/src/main/webapp/resources/switchlistajax/switchlist.xhtml
new file mode 100644
index 0000000..c442421
--- /dev/null
+++ b/jsf-demo/ajax-component/src/main/webapp/resources/switchlistajax/switchlist.xhtml
@@ -0,0 +1,94 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:cc="http://java.sun.com/jsf/composite">
+<head>
+    <title>This will not be present in rendered output</title>
+</head>
+<body>
+<cc:interface name="switchlist"
+              displayName="Switchlist Component"
+              shortDescription="A basic example of the composite component feature">
+
+    <cc:attribute name="listholder1" required="true">
+        <cc:attribute name="list" required="true"/>
+        <cc:attribute name="items" required="true"/>
+    </cc:attribute>
+    <cc:attribute name="listholder2" required="true">
+        <cc:attribute name="list" required="true"/>
+        <cc:attribute name="items" required="true"/>
+    </cc:attribute>
+</cc:interface>
+
+<cc:implementation>
+    <h:outputStylesheet name="switchlist/switchlist.css"/>
+    <div id="#{cc.clientId}">
+    <h:selectManyListbox id="list1" value="#{cc.attrs.listholder1.list}" styleClass="switchlist">
+        <f:selectItems value="#{cc.attrs.listholder1.items}"/>
+    </h:selectManyListbox>
+    <h:panelGroup id="buttonGroup" styleClass="switchlistButtons">
+        <h:commandButton id="move1to2" value=">>" action="#{switchlistController.m1_2}"
+                         styleClass="switchlistButton">
+            <f:setPropertyActionListener value="#{cc.attrs.listholder1}" target="#{switchlistController.listHolder1}"/>
+            <f:setPropertyActionListener value="#{cc.attrs.listholder2}" target="#{switchlistController.listHolder2}"/>
+            <f:ajax execute="@this list1" render="list1 list2"/>
+        </h:commandButton>
+        <h:commandButton id="move2to1" value="<<" action="#{switchlistController.m2_1}"
+                         styleClass="switchlistButton">
+            <f:setPropertyActionListener value="#{cc.attrs.listholder1}" target="#{switchlistController.listHolder1}"/>
+            <f:setPropertyActionListener value="#{cc.attrs.listholder2}" target="#{switchlistController.listHolder2}"/>
+            <f:ajax execute="@this list2" render="list1 list2"/>
+        </h:commandButton>
+    </h:panelGroup>
+    <h:selectManyListbox id="list2" value="#{cc.attrs.listholder2.list}" styleClass="switchlist">
+        <f:selectItems value="#{cc.attrs.listholder2.items}"/>
+    </h:selectManyListbox>
+    </div>
+</cc:implementation>
+</body>
+</html>
diff --git a/jsf-demo/ajax-component/src/main/webapp/resources/yuical/calendar.js b/jsf-demo/ajax-component/src/main/webapp/resources/yuical/calendar.js
new file mode 100644
index 0000000..49cc9ba
--- /dev/null
+++ b/jsf-demo/ajax-component/src/main/webapp/resources/yuical/calendar.js
@@ -0,0 +1,121 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License. You can obtain
+ * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
+ * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
+ * Sun designates this particular file as subject to the "Classpath" exception
+ * as provided by Sun in the GPL Version 2 section of the License file that
+ * accompanied this code.  If applicable, add the following below the License
+ * Header, with the fields enclosed by brackets [] replaced by your own
+ * identifying information: "Portions Copyrighted [year]
+ * [name of copyright owner]"
+ *
+ * Contributor(s):
+ *
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+
+if (typeof demo == "undefined" && !demo) {
+    var demo = {};
+}
+
+if (typeof demo.calendar == "undefined" && !demo.calendar) {
+    demo.calendar = {};
+}
+
+if (typeof demo.calendar.contextMap === "undefined" && !demo.calendar.contextMap) {
+    demo.calendar.contextMap = [];
+}
+
+demo.calendar.init = function init(context, render) {
+
+    // record the render attribute, if applied
+    demo.calendar.contextMap[context] = render;
+
+    demo.calendar.loader = new YAHOO.util.YUILoader({
+        base: "http://ajax.googleapis.com/ajax/libs/yui/2.7.0/build/",
+        require: ["calendar"],
+        loadOptional: false,
+        combine: false,
+        filter: "RAW",
+        allowRollup: false,
+        onSuccess: function() {
+            try {
+                demo.calendar.cal1 = new YAHOO.widget.Calendar("demo.calendar.cal1", context+":calContainer");
+                demo.calendar.cal1.render();
+                demo.calendar.cal1.selectEvent.subscribe(demo.calendar.handleSelect, demo.calendar.cal1, true);
+            } catch (e) {
+                alert(e);
+            }
+        },
+        // should a failure occur, the onFailure function will be executed
+        onFailure: function(o) {
+            alert("error: " + YAHOO.lang.dump(o));
+        }
+
+    });
+
+    //
+    // Calculate the dependency and insert the required scripts and css resources
+    // into the document
+    demo.calendar.loader.insert();
+}
+
+demo.calendar.handleSelect = function handleSelect(type, args, obj) {
+
+    if (type === "select") {
+        var calId = obj.containerId;
+        var index = calId.indexOf(":") + 1;
+        var tmpindex = calId.substring(index).indexOf(":") + 1;
+        // keep looking until you get the last child index
+        while (tmpindex !== 0) {
+            index += tmpindex;
+            tmpindex = calId.substr(index).indexOf(":") + 1;
+        }
+        var containerId = calId.substring(0,index - 1);
+        var dateId = containerId + ":" + "date";
+        var dates = args[0];
+        var date = dates[0];
+        var year = date[0], month = date[1], day = date[2];
+
+        var txtDate = document.getElementById(dateId);
+        txtDate.value = month + "/" + day + "/" + year;
+
+        var render = demo.calendar.contextMap[containerId];
+        try {
+            // if a render is defined for the component, then include it.
+            if (typeof render !== "undefined" && render ) {
+                jsf.ajax.request(dateId,null,{
+                    render: render,
+                    execute: dateId
+                })
+            } else {
+                jsf.ajax.request(dateId,null,{
+                    execute: dateId
+                })
+            }
+        } catch (e) {
+            alert(e);
+        }
+    }
+}
diff --git a/jsf-demo/ajax-component/src/main/webapp/resources/yuical/yuical.xhtml b/jsf-demo/ajax-component/src/main/webapp/resources/yuical/yuical.xhtml
new file mode 100644
index 0000000..356f867
--- /dev/null
+++ b/jsf-demo/ajax-component/src/main/webapp/resources/yuical/yuical.xhtml
@@ -0,0 +1,77 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:composite="http://java.sun.com/jsf/composite">
+    <head>
+        <title>This will not be present in rendered output</title>
+    </head>
+    <body>
+
+        <composite:interface name="yuical"
+                             displayName="YUI Cal Component"
+                             shortDescription="YUI Calendar Component">
+            <composite:attribute name="value" required="true" type="java.util.Date"/>
+            <composite:attribute name="render" required="false" type="java.lang.String"/>
+        </composite:interface>
+
+        <composite:implementation>
+            <h:outputScript name="jsf.js" library="javax.faces" target="head" />
+            <h:outputScript name="yuical/calendar.js" target="head" />
+
+            <h:panelGrid class="yui-skin-sam" id="holdingContainer">
+                <h:panelGroup layout="block" id="calContainer"/>
+                <h:inputHidden id="date" value="#{cc.attrs.value}">
+                    <f:convertDateTime pattern="MM/dd/yyyy"/>
+                </h:inputHidden>
+            </h:panelGrid>
+            <script type="text/javascript">
+                demo.calendar.init("#{cc.clientId}", "#{cc.attrs.render}");
+            </script>
+        </composite:implementation>
+    </body>
+</html>
diff --git a/jsf-demo/ajax-component/src/main/webapp/switchlistAjaxComponent.xhtml b/jsf-demo/ajax-component/src/main/webapp/switchlistAjaxComponent.xhtml
new file mode 100644
index 0000000..3f0e1b2
--- /dev/null
+++ b/jsf-demo/ajax-component/src/main/webapp/switchlistAjaxComponent.xhtml
@@ -0,0 +1,62 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ez="http://java.sun.com/jsf/composite/switchlistajax">
+<h:head>
+    <title>Switchlist Example</title>
+</h:head>
+<h:body>
+        <h1>Switchlist Example</h1>
+        <h:form id="form1">
+            <ez:switchlist id="switchlist"
+                           listholder1="#{listholder1}" listholder2="#{listholder2}"/>
+            <br/>
+            <h:commandButton value="reload" type="submit"/>
+            <h:messages/>
+        </h:form>
+</h:body>
+</html>
diff --git a/jsf-demo/ajax-component/src/main/webapp/switchlistAjaxTag.xhtml b/jsf-demo/ajax-component/src/main/webapp/switchlistAjaxTag.xhtml
new file mode 100644
index 0000000..61cdf42
--- /dev/null
+++ b/jsf-demo/ajax-component/src/main/webapp/switchlistAjaxTag.xhtml
@@ -0,0 +1,76 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+<h:head>
+    <title>Switchlist Tag Example</title>
+</h:head>
+<h:body>
+    <h1>Switchlist Tag Example</h1>
+    <h:outputStylesheet name="switchlist.css"/>
+        <h:form id="form1">
+            <h:selectManyListbox id="list1" value="#{switchlist.list1}" styleClass="switchlist">
+                <f:selectItems value="#{switchlist.items1}"/>
+            </h:selectManyListbox>
+            <h:panelGroup id="buttonGroup" styleClass="switchlistButtons">
+            <h:commandButton id="button1" value=">>"
+                             actionListener="#{switchlist.move1to2}" styleClass="switchlistButton">
+                <f:ajax execute="@this list1" render="list1 list2"/>
+                </h:commandButton>
+            <h:commandButton id="button2" value="<<"
+                             actionListener="#{switchlist.move2to1}" styleClass="switchlistButton">
+                <f:ajax execute="@this list2" render="list1 list2"/>
+                </h:commandButton>
+            </h:panelGroup>
+            <h:selectManyListbox id="list2" value="#{switchlist.list2}" styleClass="switchlist">
+                <f:selectItems value="#{switchlist.items2}"/>
+            </h:selectManyListbox>
+            <br/>
+                <h:commandButton value="reload" type="submit"/>
+            <h:messages/>
+        </h:form>
+</h:body>
+</html>
diff --git a/jsf-demo/ajax-component/src/main/webapp/switchlistComponent.xhtml b/jsf-demo/ajax-component/src/main/webapp/switchlistComponent.xhtml
new file mode 100644
index 0000000..486ac99
--- /dev/null
+++ b/jsf-demo/ajax-component/src/main/webapp/switchlistComponent.xhtml
@@ -0,0 +1,63 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ez="http://java.sun.com/jsf/composite/switchlist">
+<h:head>
+    <title>Switchlist Example</title>
+</h:head>
+<h:body>
+        <h1>Switchlist Example</h1>
+        <h:form id="form1">
+             <ez:switchlist id="switchlist" selected1="#{switchlist.list1}" selected2="#{switchlist.list2}"
+                     items1="#{switchlist.items1}" items2="#{switchlist.items2}"
+                     move1to2="#{switchlist.move1to2}" move2to1="#{switchlist.move2to1}"/>
+            <br/>
+            <h:commandButton value="reload" type="submit"/>
+            <h:messages/>
+        </h:form>
+</h:body>
+</html>
diff --git a/jsf-demo/ajax-component/src/main/webapp/switchlistPage.xhtml b/jsf-demo/ajax-component/src/main/webapp/switchlistPage.xhtml
new file mode 100644
index 0000000..02d5c4e
--- /dev/null
+++ b/jsf-demo/ajax-component/src/main/webapp/switchlistPage.xhtml
@@ -0,0 +1,70 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+<h:head>
+    <title>Switchlist Example</title>
+</h:head>
+<h:body>
+        <h1>Switchlist Example</h1>
+        <h:form id="form1">
+            <h:outputStylesheet name="switchlist.css"/>
+            <h:selectManyListbox value="#{switchlist.list1}" styleClass="switchlist">
+                <f:selectItems value="#{switchlist.items1}"/>
+            </h:selectManyListbox>
+            <h:panelGroup id="buttonGroup" styleClass="switchlistButtons">
+                <h:commandButton value=">>" actionListener="#{switchlist.move1to2}" styleClass="switchlistButton" />
+                <h:commandButton value="<<" actionListener="#{switchlist.move2to1}" styleClass="switchlistButton" />
+            </h:panelGroup>
+            <h:selectManyListbox value="#{switchlist.list2}" styleClass="switchlist">
+                <f:selectItems value="#{switchlist.items2}"/>
+            </h:selectManyListbox>
+            <br/>
+            <h:commandButton value="reload" type="submit"/>
+            <h:messages/>
+        </h:form>
+</h:body>
+</html>
diff --git a/jsf-demo/ajax-component/src/main/webapp/switchlistPageUnstyled.xhtml b/jsf-demo/ajax-component/src/main/webapp/switchlistPageUnstyled.xhtml
new file mode 100644
index 0000000..97d6ac5
--- /dev/null
+++ b/jsf-demo/ajax-component/src/main/webapp/switchlistPageUnstyled.xhtml
@@ -0,0 +1,69 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+<h:head>
+    <title>Switchlist Example</title>
+</h:head>
+<h:body>
+        <h1>Switchlist Example</h1>
+        <h:form id="form1">
+            <h:selectManyListbox value="#{switchlist.list1}">
+                <f:selectItems value="#{switchlist.items1}"/>
+            </h:selectManyListbox>
+            <h:panelGroup id="buttonGroup">
+                <h:commandButton value=">>" actionListener="#{switchlist.move1to2}" />
+                <h:commandButton value="<<" actionListener="#{switchlist.move2to1}" />
+            </h:panelGroup>
+            <h:selectManyListbox value="#{switchlist.list2}">
+                <f:selectItems value="#{switchlist.items2}"/>
+            </h:selectManyListbox>
+            <br/>
+            <h:commandButton value="reload" type="submit"/>
+            <h:messages/>
+        </h:form>
+</h:body>
+</html>
diff --git a/jsf-demo/ajax-component/src/main/webapp/yuical.xhtml b/jsf-demo/ajax-component/src/main/webapp/yuical.xhtml
new file mode 100644
index 0000000..a2cfc02
--- /dev/null
+++ b/jsf-demo/ajax-component/src/main/webapp/yuical.xhtml
@@ -0,0 +1,85 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:ez="http://java.sun.com/jsf/composite/yuical">
+    <h:head>
+        <script type="text/javascript"
+        src="http://ajax.googleapis.com/ajax/libs/yui/2.7.0/build/yuiloader/yuiloader.js"></script>
+        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
+        <title>YUI Calendar Demo</title>
+    </h:head>
+    <h:body>
+        <h:form id="form">
+            <h1>Select the date</h1>
+            <ez:yuical id="cal1" value="#{date.date1}" render="form:out1"/>
+            <h:outputText id="out1" value="#{date.date1}">
+                <f:convertDateTime pattern="MM/dd/yyyy"/>
+            </h:outputText>
+            <h1>Select the Second date</h1>
+            <ez:yuical id="cal2" value="#{date.date2}" render="form:out2"/>
+            <h:outputText id="out2" value="#{date.date2}">
+                <f:convertDateTime pattern="MM/dd/yyyy"/>
+            </h:outputText>
+        </h:form>
+        <h:form>
+            <h:outputText id="out1" value="#{date.date1}">
+                <f:convertDateTime pattern="MM/dd/yyyy"/>
+            </h:outputText>
+            <br/>
+            <h:outputText id="out2" value="#{date.date2}">
+                <f:convertDateTime pattern="MM/dd/yyyy"/>
+            </h:outputText>
+            <br/>
+            <h:commandButton value="reload"/>
+            <br/>
+            <h:outputLink value="http://weblogs.java.net/blog/driscoll/archive/2009/08/making_a_yui_ca_1.html">
+                Blog discussion of this example
+            </h:outputLink>
+
+        </h:form>
+    </h:body>
+</html>
diff --git a/jsf-demo/archive/README.txt b/jsf-demo/archive/README.txt
new file mode 100644
index 0000000..d1412a2
--- /dev/null
+++ b/jsf-demo/archive/README.txt
@@ -0,0 +1,7 @@
+This directory is for archived demos.
+
+These are demos which, while still valid and working, now demonstrate code which for
+various reasons is no longer considered best practice.
+
+At the time of this directory's creation, the main reason to retire a demo is it's
+use of JSP.
\ No newline at end of file
diff --git a/jsf-demo/archive/carstore/build.xml b/jsf-demo/archive/carstore/build.xml
new file mode 100644
index 0000000..51a170b
--- /dev/null
+++ b/jsf-demo/archive/carstore/build.xml
@@ -0,0 +1,191 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project name="carstore" default="build" basedir=".">
+    
+    <property file="${user.home}/build.properties"/>
+    <property file="../../../build.properties"/>
+    <import file="${jsf.build.home}/common/ant/common.xml"/>
+
+    <!-- Configure the context path for this application -->
+    <property name="example" value="jsf-cardemo"/>
+    <property name="context.path" value="/${example}"/>
+    <property name="build" value="${basedir}/build"/>
+    <property name="build.javadocs" value="${build}/${example}/javadocs"/>
+
+    <!-- The base directory for demo apps -->
+    <property name="jsf-demo.lib" value="../lib"/>
+
+    <property name="demo-components.jar"
+              value="${jsf-demo.lib}/ui.jar"/>
+
+    <!-- Configure properties to access the Manager application -->
+    <property name="url" value="http://localhost:${container.port}/manager"/>
+
+    <!-- Location dependent jars -->
+    <property name="jsf-demo.lib" value="../lib"/>
+
+
+    <path id="classpath">        
+        <pathelement location="${javax.faces-api.jar}"/>
+        <pathelement location="${javax.faces.jar}"/>
+        <pathelement location="${demo-components.jar}"/>     
+        <pathelement location="${jsf-demo.lib}/ui.jar"/>     
+        <pathelement location="${build}/WEB-INF/classes"/>
+        <path refid="compile.classpath"/>
+    </path>
+    
+    <target name="clean">
+        <delete dir="${build}"/>
+        <delete dir="${context.path}"/>
+    </target>
+    
+    <target name="init" depends="check.changes">
+        <tstamp/>
+    </target>
+
+    <target name="check.changes">
+        <uptodate property="skip.build"
+                  targetfile="${build}/last-build">
+            <srcfiles dir="${basedir}">
+                <include name="src/**/*.*"/>
+                <include name="conf/**/*.*"/>
+                <include name="web/**/*.*"/>
+            </srcfiles>
+        </uptodate>
+    </target>
+    
+    <target name="prepare" depends="init"
+            description="Create build directories.">
+        <mkdir dir="${build}/${example}/"/>
+        <mkdir dir="${build}/${example}/WEB-INF"/>
+        <mkdir dir="${build}/${example}/WEB-INF/classes"/>
+        <mkdir dir="${build}/${example}/WEB-INF/lib"/>
+        <mkdir dir="${build}/${example}/javadocs"/>
+    </target>
+
+    <target name="javadoc_check">
+        <uptodate property="javadoc.notrequired"
+                  targetfile="${build.javadocs}/packages.html">
+            <srcfiles dir="src/java" includes="**/*.java,**/*.html"/>
+        </uptodate>
+    </target>
+
+    <target name="javadocs" depends="prepare, javadoc_check"
+            unless="javadoc.notrequired"
+            description="Create the JavaDocs">
+
+        <!-- replace the @context.path@ tokens with the proper value -->
+        <mkdir dir="build/javadoc-src"/>
+        <filter token="context.path" value="${context.path}"/>
+        <copy todir="build/javadoc-src" filtering="true">
+            <fileset dir="src/java" includes="**/*.java,**/*.html"/>
+        </copy>
+
+        <javadoc destdir="${build.javadocs}"
+                 windowtitle="${example}"
+                 doctitle="${example}"
+                 bottom="Copyright © 2004 Sun Microsystems, Inc. All Rights Reserved.">
+           <link offline="true"
+                 href="http://java.sun.com/javase/6/docs/api/package-list"
+                 packagelistloc="${jsf.build.home}/common/ant/package-list" />
+                 
+            <fileset dir="build/javadoc-src">
+                <include name="**/*.java"/>
+            </fileset>
+            <classpath refid="classpath"/>
+        </javadoc>
+    </target>   
+
+    <target name="build" depends="prepare,javadocs"
+            description="Compile Java files and copy static files.">
+         <jsf.javac srcdir="src"
+                   destdir="${build}/${example}/WEB-INF/classes">
+            <classpath>
+                <path refid="classpath"/>
+            </classpath>
+        </jsf.javac>
+        <copy todir="${build}/${example}/WEB-INF">
+            <fileset dir="web/WEB-INF">
+                <include name="*.xml"/>
+            </fileset>
+        </copy>
+        <copy todir="${build}/${example}/WEB-INF">
+            <fileset dir="web/WEB-INF">
+                <include name="*.tld"/>
+            </fileset>
+        </copy>
+
+        <copy todir="${build}/${example}/WEB-INF/lib" file="${demo-components.jar}" />
+        <copy todir="${build}/${example}/">
+            <fileset dir="web">
+                <include name="**/*.html"/>
+                <include name="**/*.gif"/>
+                <include name="**/*.jpg"/>
+                <include name="**/*.jsp"/>
+                <include name="**/*.css"/>
+                <include name="**/*.xml"/>
+            </fileset>
+        </copy>
+        <copy todir="${build}/${example}/WEB-INF/classes/carstore">
+            <fileset dir="src/java/carstore">
+                <include name="**/*.properties"/>
+            </fileset>
+            <fileset dir="src/java/carstore">
+                <include name="**/*.xml"/>
+            </fileset>
+
+        </copy>
+
+        <jsf.war basedir="${build}"
+                 archive-name="${example}"
+                 webxml="${build}/${example}/WEB-INF/web.xml">
+            <archive-elements>
+                <zipfileset dir="${build}/${example}"/>
+                <zipfileset file="../lib/ui.jar"
+                            prefix="WEB-INF/lib"/>
+            </archive-elements>
+        </jsf.war>    
+    </target>
+   
+</project>
+
diff --git a/jsf-demo/archive/carstore/src/java/carstore/CarBean.java b/jsf-demo/archive/carstore/src/java/carstore/CarBean.java
new file mode 100644
index 0000000..6e946a5
--- /dev/null
+++ b/jsf-demo/archive/carstore/src/java/carstore/CarBean.java
@@ -0,0 +1,589 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package carstore;
+
+import javax.faces.application.Application;
+import javax.faces.application.FacesMessage;
+import javax.faces.component.UIComponent;
+import javax.faces.component.UIInput;
+import javax.faces.component.UISelectItems;
+import javax.faces.component.ValueHolder;
+import javax.faces.context.FacesContext;
+import javax.faces.convert.Converter;
+import javax.faces.model.SelectItem;
+
+import java.util.ArrayList;
+import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.MissingResourceException;
+import java.util.ResourceBundle;
+import java.util.List;
+import java.util.Collection;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+/**
+ * <p>This bean encapsulates a car model, including pricing and package
+ * choices.  The system allows the user to customize the properties of
+ * this bean with the help of the {@link CarCustomizer}.</p>
+ * <p/>
+ * <h3>Data Access</h3>
+ * <p/>
+ * <p>This is the only bean in the system that has complicated access to
+ * the persistent store of data.  In the present implementation, this
+ * persistent store is in <code>ResourceBundle</code> instances.</p>
+ * <p/>
+ * <p>There are three data source <code>ResourceBundle</code> files
+ * used:</p>
+ * <p/>
+ * <ol>
+ * <p/>
+ * <li><p><code><ModelName></code></p>
+ * <p/>
+ * <p>This contains the localized content for this model.  There
+ * is a variant of this file for each supported locale, for
+ * example, <code>Jalopy_de.properties</code></p>
+ * <p/>
+ * </li>
+ * <p/>
+ * <li><p><code><Common_properties></code></p>
+ * <p/>
+ * <p>This contains the localized content common to all
+ * models.</p>
+ * <p/>
+ * </li>
+ * <p/>
+ * <li><p><code><ModelName_options></code></p>
+ * <p/>
+ * <p>This contains the non-localized content for this model,
+ * including the non-localized options.  There is only one
+ * variant of this file for all locales for example,
+ * <code>Jalopy_options.properties</code></p>
+ * <p/>
+ * </li>
+ * <p/>
+ * </ol>
+ * <p/>
+ * <p>All files conform to the following convention:</p>
+ * <p/>
+ * <code><pre>
+ * key
+ * key_componentType
+ * key_valueType
+ * </pre></code>
+ * <p/>
+ * <p>Where <code>key</code> is the name of an attribute of this car.
+ * For example, <code>basePrice</code>, or <code>description</code>.
+ * <code>key_componentType</code> is the component type of the
+ * <code>UIComponent</code> subclass to be used to represent this
+ * attribute in the page, for example <code>SelectManyMenu</code>.
+ * <code>key_valueType</code> is the data type of the value of the
+ * <code>UIComponent</code>, for example <code>java.lang.Integer</code>.
+ * For all non-String valueTypes.</p>
+ * <p/>
+ * <p>When the bean is instantiated, we load both of the above
+ * properties files and iterate over the keys in each one.  For each
+ * key, we look at the <code>componentType</code> and ask the
+ * <code>Application</code> to create a component of that type.  We
+ * store that <code>UIComponent</code> instance in our
+ * <code>components</code> <code>Map</code> under the name
+ * <code>key</code>.  We look at the <code>valueType</code> for the
+ * <code>key</code>.  For non <code>java.lang.String</code> types, we
+ * ask the <code>Application</code> for a <code>Converter</code>
+ * instance for that class.  If found, we use it to convert the value
+ * for the <code>key</code> to the appropriate type and store that as
+ * the <code>value</code> of the <code>UIComponent</code> instance.</p>
+ */
+
+public class CarBean {
+
+    private static final Logger LOGGER = Logger.getLogger("carstore");
+
+    /**
+     * <p>The message identifier of the Message to be created if
+     * the conversion fails.  The message format string for this
+     * message may optionally include a <code>{0}</code>
+     * placeholder, which will be replaced by the object and value.</p>
+     */
+    public static final String CONVERTER_ERROR_MESSAGE_ID =
+          "carstore.Converter_Error";
+
+    //
+    // Relationship Instance Variables
+    //
+
+    /** Localized labels */
+
+    private ResourceBundle resources = null;
+
+    /** Price data */
+    private ResourceBundle priceData = null;
+
+    /**
+     * Keys: String attribute name, such as engine. Values: UIComponent
+     * for the attribute
+     */
+
+    private Map<String, UIComponent> components = null;
+
+    /**
+     * Keys: String attribute name, such as engine. Values: String value
+     * of the component named by key in our components Map.
+     */
+
+    private Map<String,Object> attributes = null;
+
+    // 
+    // Constructors
+    //
+
+    public CarBean() {
+        this.init(CarStore.DEFAULT_MODEL_PROPERTIES);
+    }
+
+
+    public CarBean(String bundleName) {
+        this.init(bundleName);
+    }
+
+
+    /**
+     * <p>Initialize our components <code>Map</code> as described in the
+     * class documentation.</p>
+     * <p/>
+     * <p>Create a wrapper <code>Map</code> around the components
+     * <code>Map</code> that exposes the String converted value of each
+     * component.</p>
+     * 
+     * @param bundleName the resource bundle name
+     */
+    private void init(String bundleName) {
+        FacesContext context = FacesContext.getCurrentInstance();       
+
+        components = new HashMap<String, UIComponent>();
+
+        // load the labels
+        resources =
+              ResourceBundle.getBundle(CarStore.CARSTORE_PREFIX +
+                                       ".bundles.Resources",
+                                       context.getViewRoot().getLocale());
+
+        // load the prices
+        priceData = ResourceBundle.getBundle(CarStore.CARSTORE_PREFIX +
+                                             ".bundles.OptionPrices");
+
+        // populate the locale-specific information
+        if (LOGGER.isLoggable(Level.FINE)) {
+            LOGGER.fine("Loading bundle: " + bundleName + ".");
+        }
+        ResourceBundle data = ResourceBundle.getBundle(bundleName,
+                                        context.getViewRoot().getLocale());
+        if (LOGGER.isLoggable(Level.FINE)) {
+            LOGGER.fine("Bundle " + bundleName +
+                        " loaded. Reading properties...");
+        }
+        initComponentsFromProperties(context, data);
+        if (LOGGER.isLoggable(Level.FINE)) {
+            LOGGER.fine("done.");
+        }
+
+        // populate the non-locale-specific information common to all cars
+        if (LOGGER.isLoggable(Level.FINE)) {
+            LOGGER.fine("Loading bundle: Common_options.");
+        }
+        data = ResourceBundle.getBundle(CarStore.CARSTORE_PREFIX +
+                                        ".bundles.Common_options");
+        if (LOGGER.isLoggable(Level.FINE)) {
+            LOGGER.fine("Bundle Common_options loaded. Reading properties...");
+        }
+        initComponentsFromProperties(context, data);
+        if (LOGGER.isLoggable(Level.FINE)) {
+            LOGGER.fine("done.");
+        }
+
+        // populate the non-locale-specific information specific to each car
+        if (LOGGER.isLoggable(Level.FINE)) {
+            LOGGER.fine("Loading bundle: " + bundleName + "_options.");
+        }
+        data = ResourceBundle.getBundle(bundleName + "_options");
+        if (LOGGER.isLoggable(Level.FINE)) {
+            LOGGER.fine("Bundle " + bundleName +
+                        "_options loaded. Reading properties...");
+        }
+        initComponentsFromProperties(context, data);
+        if (LOGGER.isLoggable(Level.FINE)) {
+            LOGGER.fine("done.");
+        }
+
+        // create a read-only Map exposing the values of all of our
+        // components.
+        attributes =
+            new Map() {
+                public void clear() {
+                    CarBean.this.components.clear();
+                }
+
+
+                public boolean containsKey(Object key) {
+                    return CarBean.this.components.containsKey(key);
+                }
+
+
+                public boolean containsValue(Object value) {
+                    throw new UnsupportedOperationException();
+                }
+
+
+                public java.util.Set<Map.Entry<String,Object>> entrySet() {
+                    throw new UnsupportedOperationException();
+                }
+
+
+                public boolean equals(Object o) {
+                    throw new UnsupportedOperationException();
+                }
+
+
+                public Object get(Object key) {
+                    UIComponent component;
+                    Converter converter = null;
+                    Object result = null;
+                    if (null == key) {
+                        return null;
+                    }
+                    if (null != (component = 
+                        CarBean.this.components.get(key))) {
+                        // if this component can have a Converter
+                        if (component instanceof ValueHolder) {
+                            // try to get it
+                            converter = ((ValueHolder) component).
+                                getConverter();
+                            result = ((ValueHolder) component).getValue();
+                        }
+
+                        // if we do have a value
+                        if (null != result) {
+                            // and we do have a converter
+                            if (null != converter) {
+                                // convert the value to String
+                                result = converter.
+                                    getAsString(FacesContext.
+                                                getCurrentInstance(),
+                                                component, result);
+                            }
+                        }
+                    }
+                    return result;
+                }
+
+
+                public int hashCode() {
+                    return CarBean.this.components.hashCode();
+                }
+
+
+                public boolean isEmpty() {
+                    return CarBean.this.components.isEmpty();
+                }
+
+
+                public java.util.Set<String> keySet() {
+                    return CarBean.this.components.keySet();
+                }
+
+
+                public Object put(Object k, Object v) {
+                    throw new UnsupportedOperationException();
+                }
+
+
+                public void putAll(Map t) {
+                    throw new UnsupportedOperationException();
+                }
+
+
+                public Object remove(Object k) {
+                    throw new UnsupportedOperationException();
+                }
+
+
+                public int size() {
+                    return CarBean.this.components.size();
+                }
+
+
+                public Collection<Object> values() {
+                    ArrayList<Object> result = 
+                          new ArrayList<Object>(this.size());
+                    for (Object o : keySet()) {
+                        result.add(get(o));
+                    }
+                    return result;
+                }
+            };
+
+
+    }
+
+
+    /**
+     * <p>For each entry in data, create component and cause it to be
+     * populated with values.</p>
+     * @param context the <code>FacesContext</code> for the current request
+     * @param data a ResourceBundle
+     */
+    private void initComponentsFromProperties(FacesContext context,
+                                              ResourceBundle data) {
+
+        // populate the map
+        for (Enumeration<String> keys = data.getKeys(); keys.hasMoreElements();) {
+
+            String key = keys.nextElement();
+            if (key == null) {
+                continue;
+            }
+            // skip secondary keys.
+            if (key.contains("_")) {
+                continue;
+            }
+            String value = data.getString(key);
+            String componentType = data.getString(key + "_componentType");
+            String valueType = data.getString(key + "_valueType");
+            if (LOGGER.isLoggable(Level.FINE)) {
+                LOGGER.fine("populating map for " + key + "\n" +
+                            "\n\tvalue: " + value +
+                            "\n\tcomponentType: " + componentType +
+                            "\n\tvalueType: " + valueType);
+            }
+            // create the component for this componentType
+            UIComponent component =
+                  context.getApplication().createComponent(componentType);
+            populateComponentWithValue(context, component, componentType,
+                                       value, valueType);
+            components.put(key, component);
+        }
+    }
+
+
+    /**
+     * <p>populate the argument component with values, being sensitive
+     * to the possible multi-nature of the values, and to the type of
+     * the values.</p>
+     * @param context the <code>FacesContext</code> for the current request
+     * @param component the <code>UIComponent</code> to populate
+     * @param componentType the component type
+     * @param value the value
+     * @param valueType the value type
+     */
+    private void populateComponentWithValue(FacesContext context,
+                                            UIComponent component,
+                                            String componentType,
+                                            String value, 
+                                            String valueType) {
+        Application application = context.getApplication();
+        Converter converter = null;
+
+        // if we need a converter, and can have a converter
+        if (!"java.lang.String".equals(valueType) &&
+            component instanceof ValueHolder) {
+            // if so create it,
+            try {
+                converter =
+                      application.createConverter(CarStore.loadClass(valueType,
+                                                                     this));
+                // add it to our component,
+                ((ValueHolder) component).setConverter(converter);
+            } catch (ClassNotFoundException cne) {
+                FacesMessage errMsg = MessageFactory.getMessage(
+                      CONVERTER_ERROR_MESSAGE_ID,
+                      valueType);
+                throw new IllegalStateException(errMsg.getSummary());
+            }
+
+        }
+
+        // if this component is a SelectOne or SelectMany, take special action
+        if (isMultiValue(componentType)) {
+            // create a UISelectItems instance
+            UISelectItems items = new UISelectItems();
+            items.setValue(parseStringIntoArrayList(value, converter));
+            // add it to the component
+            component.getChildren().add(items);
+        } else {
+            // we have a single value
+            if (null != converter) {
+                component.getAttributes().put("value",
+                                              converter.getAsObject(context,
+                                                                    component,
+                                                                    value));
+            } else {
+                component.getAttributes().put("value", value);
+            }
+        }
+    }   
+
+    /**
+     * Determines if the component type is a SelectMany or SelectOne.
+     * @param componentType the component type
+     * @return true of the componentType starts with SelectMany or SelectOne
+     */
+    private boolean isMultiValue(String componentType) {
+        if (null == componentType) {
+            return false;
+        }
+        return (componentType.startsWith("javax.faces.SelectMany") ||
+                componentType.startsWith("javax.faces.SelectOne"));
+    }
+
+
+    /*
+     * Tokenizes the passed in String which is a comma separated string of
+     * option values that serve as keys into the main resources file.
+     * For example, optionStr could be "Disc,Drum", which corresponds to
+     * brake options available for the chosen car. This String is tokenized
+     * and used as key into the main resource file to get the localized option
+     * values and stored in the passed in ArrayList.
+     */
+
+    /**
+     * <p>Tokenizes the passed in String which is a comma separated string of
+     * option values that serve as keys into the main resources file.
+     * For example, optionStr could be "Disc,Drum", which corresponds to
+     * brake options available for the chosen car. This String is tokenized
+     * and used as key into the main resource file to get the localized option
+     * values and stored in the passed in ArrayList.</p>
+     *
+     * @param value a comma separated String of values
+     * @param converter currently ignored
+     * @return a <code>List</code> of <code>SelectItem</code> instances
+     *  parsed from <code>value</code>
+     */
+    public List<SelectItem> parseStringIntoArrayList(String value,
+                                         Converter converter) {
+
+        if (value == null) {
+            return null;
+        }
+
+        String[] splitOptions = value.split(",");
+        ArrayList<SelectItem> optionsList =
+              new ArrayList<SelectItem>((splitOptions.length) + 1);
+        for (String optionKey : splitOptions) {
+            String optionLabel;
+            try {
+                optionLabel = resources.getString(optionKey);
+            } catch (MissingResourceException e) {
+                // if we can't find a hit, the key is the label
+                optionLabel = optionKey;
+            }
+
+            if (null != converter) {
+                // PENDING deal with the converter case
+            } else {
+                optionsList.add(new SelectItem(optionKey, optionLabel));
+            }
+        }
+        return optionsList;
+    }
+
+
+    public String updatePricing() {
+        getCurrentPrice();
+        return null;
+    }
+
+
+    public Integer getCurrentPrice() {
+        // go through our options and try to get the prices
+        int sum = (Integer) ((ValueHolder) getComponents().get("basePrice")).
+              getValue();
+
+        for (Object o : getComponents().keySet()) {
+
+            String key = (String) o;
+            UIComponent component = (UIComponent) getComponents().get(key);
+            Object value = component.getAttributes().get("value");
+            if (null == value || (!(component instanceof UIInput))) {
+                continue;
+            }
+
+            // if the value is a String, see if we have priceData for it
+            if (value instanceof String) {
+                try {
+                    sum +=
+                          Integer.valueOf(priceData.getString((String) value));
+                } catch (NumberFormatException e) {
+                    // do nothing
+                }
+            }
+            // if the value is a Boolean, look up the price by name
+            else if (value instanceof Boolean &&
+                     (Boolean) value) {
+                try {
+                    sum +=
+                          Integer.valueOf(priceData.getString(key));
+                } catch (NumberFormatException e) {
+                    // do nothing
+                }
+            } else if (value instanceof Number) {
+                sum += ((Number) value).intValue();
+            }
+        }
+        Integer result = sum;
+        // store the new price into the component for currentPrice
+        ((ValueHolder) getComponents().get("currentPrice")).
+              setValue(result);
+        return result;
+    }
+
+
+    public Map getComponents() {
+        return components;
+    }
+
+
+    public Map<String,Object> getAttributes() {
+        return attributes;
+    }
+
+
+}
diff --git a/jsf-demo/archive/carstore/src/java/carstore/CarCustomizer.java b/jsf-demo/archive/carstore/src/java/carstore/CarCustomizer.java
new file mode 100644
index 0000000..fadfd0c
--- /dev/null
+++ b/jsf-demo/archive/carstore/src/java/carstore/CarCustomizer.java
@@ -0,0 +1,165 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package carstore;
+
+import javax.faces.component.UIComponent;
+import javax.faces.component.ValueHolder;
+import javax.faces.context.FacesContext;
+import javax.faces.convert.Converter;
+
+import java.util.Enumeration;
+import java.util.ResourceBundle;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+
+/**
+ * <p>A helper class that customizes a CarBean for a set of options
+ * in a package.</p>
+ * <p/>
+ * <p>This class reads its settings from a Properties file</p>
+ */
+
+public class CarCustomizer {
+
+    private static final Logger LOGGER = Logger.getLogger("carstore");
+
+    //
+    // Relationship Instance Variables
+    //
+
+    private ResourceBundle bundle = null;
+
+
+    public CarCustomizer() {
+        this.init(CarStore.DEFAULT_PACKAGE_PROPERTIES);
+    }
+
+
+    public CarCustomizer(String bundleName) {
+        this.init(bundleName);
+    }
+
+
+    private void init(String bundleName) {
+
+        if (LOGGER.isLoggable(Level.FINE)) {
+            LOGGER.fine("Loading bundle: " + bundleName + ".");
+        }
+        bundle = ResourceBundle.getBundle(bundleName);
+    }
+
+
+    private String buttonStyle = null;
+
+
+    public String getButtonStyle() {
+        return buttonStyle;
+    }
+
+
+    public void setButtonStyle(String newButtonStyle) {
+        buttonStyle = newButtonStyle;
+    }
+
+
+    public void customizeCar(CarBean toCustomize) {
+
+        FacesContext context = FacesContext.getCurrentInstance();
+        String disabledStr;
+        String curSetting;
+        UIComponent component;
+        Converter converter;
+        Object valueToSet;
+
+        for (Enumeration keys = bundle.getKeys(); keys.hasMoreElements();) {
+
+            String key = (String) keys.nextElement();
+            // skip null and secondary keys.
+            if (key == null || -1 != key.indexOf('_')) {
+                continue;
+            }
+            // skip null values
+            if (null == (curSetting = bundle.getString(key))) {
+                continue;
+            }
+
+            // skip null components
+            if (null ==
+                (component =
+                      (UIComponent) toCustomize.getComponents().get(key))) {
+                continue;
+            }
+
+            // handle the disabled setting, if necessary
+            Boolean disabled = null;
+            try {
+                if (null !=
+                    (disabledStr = bundle.getString(key + "_disabled"))) {
+                    disabled = Boolean.valueOf(disabledStr);
+                }
+            } catch (Throwable e) {
+                // do nothing
+            }
+            if (null != disabled) {
+                component.getAttributes().put("disabled", disabled);
+            }
+
+            // set the value
+            // If the component can and does have a converter
+            if (component instanceof ValueHolder &&
+                (null != (converter =
+                      ((ValueHolder) component).getConverter()))) {
+                valueToSet = converter.getAsObject(context, component,
+                                                   curSetting);
+            } else {
+                valueToSet = curSetting;
+            }
+
+            if (component instanceof ValueHolder) {
+                ((ValueHolder) component).setValue(valueToSet);
+            }
+        }
+    }
+}
+	
+	
+	
diff --git a/jsf-demo/archive/carstore/src/java/carstore/CarStore.java b/jsf-demo/archive/carstore/src/java/carstore/CarStore.java
new file mode 100644
index 0000000..fc18864
--- /dev/null
+++ b/jsf-demo/archive/carstore/src/java/carstore/CarStore.java
@@ -0,0 +1,324 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package carstore;
+
+import javax.faces.context.FacesContext;
+import javax.faces.event.ActionEvent;
+
+import java.util.HashMap;
+import java.util.Locale;
+import java.util.Map;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import com.sun.javaee.blueprints.components.ui.components.AreaSelectedEvent;
+
+/**
+ * <p>This is the main bean for the application.  It maintains a
+ * <code>Map</code> of {@link CarBean} instances, keyed by model name,
+ * and a <code>Map</code> of {@link CarCustomizer} instances, keyed by
+ * package name.  The <code>CarBean</code> instances in the model
+ * <code>Map</code> are accessed from several pages, as described
+ * below.</p>
+ * <p/>
+ * <p>Several pages in the application use this bean as the target of
+ * method reference and value reference expressions.</p>
+ * <p/>
+ * <ul>
+ * <p/>
+ * <li><p>The "chooseLocale" page uses <code>actionListener</code>
+ * attributes to point to the {@link #chooseLocaleFromMap} and {@link
+ * #chooseLocaleFromLink} methods.</p></li>
+ * <p/>
+ * <li><p>The "storeFront" page uses value binding expressions to pull
+ * information about four of the known car models in the store.</p></li>
+ * <p/>
+ * <li><p>The "carDetail" page uses value binding expressions to pull
+ * information about the currently chosen model.  It also uses the
+ * <code>action</code> attribute to convey the user's package
+ * choices.</p></li>
+ * <p/>
+ * <li><p>The "confirmChoices" page uses value binding expressions to
+ * pull the user's choices from the currently chosen model.</p></li>
+ * <p/>
+ * </ul>
+ */
+
+public class CarStore {
+
+    private static final Logger LOGGER = Logger.getLogger("carstore");
+
+    static final String CARSTORE_PREFIX = "carstore";
+
+    static final String DEFAULT_MODEL = "Jalopy";
+
+    static final String DEFAULT_PACKAGE = "Custom";
+
+    static final String DEFAULT_MODEL_PROPERTIES = CARSTORE_PREFIX +
+                                                   ".bundles." + DEFAULT_MODEL;
+
+    static final String DEFAULT_PACKAGE_PROPERTIES = CARSTORE_PREFIX
+                                                     +
+                                                     ".bundles."
+                                                     + DEFAULT_PACKAGE;
+
+    // 
+    // Relationship Instance Variables
+    // 
+
+    /**
+     * <p>The locales to be selected for each hotspot, keyed by the
+     * alternate text for that area.</p>
+     */
+    private Map<String, Locale> locales = null;
+
+    /** <p>The currently selected car model.</p> */
+
+    private String currentModelName = DEFAULT_MODEL;
+
+    /**
+     * <p>The car models we offer.</p>
+     * <p/>
+     * <p>Keys: Strings that happen to correspond to the name of the
+     * packages.</p>
+     * <p/>
+     * <p>Values: CarBean instances</p>
+     */
+    private Map<String, CarBean> carModels = null;
+
+    /**
+     * <p>Keys: Strings that happen to correspond to the name of the
+     * Properties file for the car (without the package prefix).</p>
+     * <p/>
+     * <p>Values: CarBeanCustomizer instances</p>
+     */
+
+    private Map<String, CarCustomizer> carCustomizers = null;
+
+
+    public CarStore() {
+        if (LOGGER.isLoggable(Level.FINE)) {
+            LOGGER.fine("Creating main CarStore bean");
+            LOGGER.fine("Populating locale map");
+        }
+        locales = new HashMap<String, Locale>(4);
+        locales.put("NAmerica", Locale.ENGLISH);
+        locales.put("SAmerica", new Locale("es", "es"));
+        locales.put("Germany", Locale.GERMAN);
+        locales.put("France", Locale.FRENCH);
+    }
+
+    // 
+    // ActionListener handlers
+    //
+
+    public void chooseLocaleFromMap(ActionEvent actionEvent) {
+        AreaSelectedEvent event = (AreaSelectedEvent) actionEvent;
+        String current = event.getMapComponent().getCurrent();
+        FacesContext context = FacesContext.getCurrentInstance();
+        context.getViewRoot().setLocale(locales.get(current));
+        resetMaps();
+    }
+
+
+    public void chooseLocaleFromLink(ActionEvent event) {
+        String current = event.getComponent().getId();
+        FacesContext context = FacesContext.getCurrentInstance();
+        context.getViewRoot().setLocale(locales.get(current));
+        resetMaps();
+    }
+
+
+    private void resetMaps() {
+        if (null != carModels) {
+            carModels.clear();
+            carModels = null;
+        }
+        if (null != carCustomizers) {
+            carCustomizers.clear();
+            carCustomizers = null;
+        }
+    }
+
+
+    public void choosePackage(ActionEvent event) {
+        String packageName = event.getComponent().getId();
+        choosePackage(packageName);
+    }
+
+
+    public void choosePackage(String packageName) {
+        CarCustomizer packageCustomizer = carCustomizers.get(packageName);
+        packageCustomizer.customizeCar(getCurrentModel());
+        getCurrentModel().getCurrentPrice();
+
+        // HERE IS WHERE WE UPDATE THE BUTTON STYLE!
+
+        // go through all the available packages and set the button
+        // style accordingly.
+        for (String curName : carCustomizers.keySet()) {
+            packageCustomizer = carCustomizers.get(curName);
+            if (curName.equals(packageName)) {
+                packageCustomizer.setButtonStyle("package-selected");
+            } else {
+                packageCustomizer.setButtonStyle("package-unselected");
+            }
+        }
+    }
+
+    // 
+    // action handlers
+    // 
+
+    public String storeFrontJalopyPressed() {
+        setCurrentModelName("Jalopy");
+        return "carDetail";
+    }
+
+
+    public String storeFrontRoadsterPressed() {
+        setCurrentModelName("Roadster");
+        return "carDetail";
+    }
+
+
+    public String storeFrontLuxuryPressed() {
+        setCurrentModelName("Luxury");
+        return "carDetail";
+    }
+
+
+    public String storeFrontSUVPressed() {
+        setCurrentModelName("SUV");
+        return "carDetail";
+    }
+
+
+    public String buyCurrentCar() {
+        getCurrentModel().getCurrentPrice();
+        return "confirmChoices";
+    }
+
+    //
+    // Accessors
+    // 
+
+    public CarBean getCurrentModel() {
+        return carModels.get(getCurrentModelName());
+    }
+
+
+    public Map getModels() {
+        if (null == carModels) {
+            carModels = new HashMap<String, CarBean>(4);
+            if (LOGGER.isLoggable(Level.FINE)) {
+                LOGGER.fine("Populating carModel map");
+            }
+            carModels.put(DEFAULT_MODEL,
+                          new CarBean(DEFAULT_MODEL_PROPERTIES));
+            carModels.put("Roadster",
+                          new CarBean(CARSTORE_PREFIX + ".bundles.Roadster"));
+            carModels.put("Luxury", new CarBean(CARSTORE_PREFIX +
+                                                ".bundles.Luxury"));
+            carModels.put("SUV", new CarBean(CARSTORE_PREFIX +
+                                             ".bundles.SUV"));
+        }
+
+        return carModels;
+    }
+
+
+    public Map getCustomizers() {
+        getModels();
+        if (null == carCustomizers) {
+            carCustomizers = new HashMap<String, CarCustomizer>(4);
+            if (LOGGER.isLoggable(Level.FINE)) {
+                LOGGER.fine("Populating carCustomizers map");
+            }
+            carCustomizers.put("Custom", new CarCustomizer(CARSTORE_PREFIX +
+                                                           ".bundles.Custom"));
+            carCustomizers.put("Standard",
+                               new CarCustomizer(CARSTORE_PREFIX +
+                                                 ".bundles.Standard"));
+            carCustomizers.put("Performance",
+                               new CarCustomizer(CARSTORE_PREFIX +
+                                                 ".bundles.Performance"));
+            carCustomizers.put("Deluxe",
+                               new CarCustomizer(CARSTORE_PREFIX +
+                                                 ".bundles.Deluxe"));
+            choosePackage("Custom");
+        }
+        return carCustomizers;
+    }
+
+    //
+    // private methods
+    // 
+
+    private String getCurrentModelName() {
+        return currentModelName;
+    }
+
+
+    private void setCurrentModelName(String newName) {
+        currentModelName = newName;
+    }
+
+    // package private util methods
+
+    static Class loadClass(String name,
+                           Object fallbackClass) throws ClassNotFoundException {
+        ClassLoader loader = getCurrentLoader(fallbackClass);
+        return loader.loadClass(name);
+    }
+
+
+    static ClassLoader getCurrentLoader(Object fallbackClass) {
+        ClassLoader loader =
+              Thread.currentThread().getContextClassLoader();
+        if (loader == null) {
+            loader = fallbackClass.getClass().getClassLoader();
+        }
+        return loader;
+    }
+
+
+}
diff --git a/jsf-demo/archive/carstore/src/java/carstore/CreditCardConverter.java b/jsf-demo/archive/carstore/src/java/carstore/CreditCardConverter.java
new file mode 100644
index 0000000..126b530
--- /dev/null
+++ b/jsf-demo/archive/carstore/src/java/carstore/CreditCardConverter.java
@@ -0,0 +1,149 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package carstore;
+
+
+import javax.faces.application.FacesMessage;
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.convert.Converter;
+import javax.faces.convert.ConverterException;
+
+/**
+ * CreditCardConverter Class accepts a Credit Card Number of type String
+ * and strips blanks and <oode>"-"</code> if any from it. It also formats the
+ * CreditCardNumber such a blank space separates every four characters.
+ * Blanks and <oode>"-"</code> characters are the expected demiliters
+ * that could be used as part of a CreditCardNumber.
+ */
+public class CreditCardConverter implements Converter {
+
+    /**
+     * <p>The message identifier of the Message to be created if
+     * the conversion fails.  The message format string for this
+     * message may optionally include a <code>{0}</code> and
+     * <code>{1}</code> placeholders, which
+     * will be replaced by the object and value.</p>
+     */
+    public static final String CONVERSION_ERROR_MESSAGE_ID =
+          "carstore.Conversion_Error";
+    
+
+    /**
+     * <p>Parses the credit card number and strips any whitespace or 
+     * <code>"-"</code> characters from it.</p>
+     * @param context the <code>FacesContext</code> of the current request
+     * @param component the component associated with the value
+     * @param newValue the new value
+     * @return the credit card number less any whitespace or <code>"-"<code>
+     *  characters
+     * @throws ConverterException if the value cannot be converted
+     */
+    public Object getAsObject(FacesContext context, 
+                              UIComponent component,
+                              String newValue) throws ConverterException {
+
+        if (newValue == null) {
+            return newValue;
+        }
+        // Since this is only a String to String conversion, this conversion 
+        // does not throw ConverterException.
+        String convertedValue = newValue.trim();
+        if (((convertedValue.indexOf('-')) != -1) ||
+            ((convertedValue.indexOf(' ')) != -1)) {
+            char[] input = convertedValue.toCharArray();
+            StringBuilder buffer = new StringBuilder(50);
+            for (char anInput : input) {
+                buffer.append(anInput);
+            }
+            convertedValue = buffer.toString();
+        }
+        // System.out.println("Converted value " + convertedValue);
+        return convertedValue;
+    }
+   
+    /**
+     * <p>Formats the value by inserting space after every four characters
+     * for better readability if they don't already exist. In the process
+     * converts any <code>"-"</code> characters into blanks for consistency.</p>
+     * @param context the <code>FacesContext</code> of the current request
+     * @param component the component associated with the value
+     * @param value the value to convert
+     * @return a formatted credit card number
+     * @throws ConverterException if the value cannot be converted
+     */
+    public String getAsString(FacesContext context, UIComponent component,
+                              Object value) throws ConverterException {
+
+        if (value == null) {
+            return null;
+        }
+        // value must be of the type that can be cast to a String.
+        String inputVal = null;
+        try {
+            inputVal = (String) value;
+        } catch (ClassCastException ce) {
+            FacesMessage errMsg = MessageFactory.getMessage(
+                  CONVERSION_ERROR_MESSAGE_ID,
+                  value,
+                  inputVal);
+            throw new ConverterException(errMsg.getSummary());
+        }
+
+        // insert spaces after every four characters for better    
+        // readability if it doesn't already exist.   
+        char[] input = inputVal.toCharArray();
+        StringBuilder buffer = new StringBuilder(50);
+        for (int i = 0; i < input.length; ++i) {
+            if ((i % 4) == 0 && i != 0) {
+                if (input[i] != ' ' || input[i] != '-') {
+                    buffer.append(' ');
+                    // if there any "-"'s convert them to blanks.
+                } else if (input[i] == '-') {
+                    buffer.append(' ');
+                }
+            }
+            buffer.append(input[i]);
+        }
+        // System.out.println("Formatted value " + convertedValue);
+        return buffer.toString();
+    }
+}
diff --git a/jsf-demo/archive/carstore/src/java/carstore/CustomerBean.java b/jsf-demo/archive/carstore/src/java/carstore/CustomerBean.java
new file mode 100644
index 0000000..af8e6d8
--- /dev/null
+++ b/jsf-demo/archive/carstore/src/java/carstore/CustomerBean.java
@@ -0,0 +1,197 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package carstore;
+
+import javax.faces.context.FacesContext;
+import javax.faces.model.SelectItem;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.ResourceBundle;
+
+public class CustomerBean {
+
+
+    private String firstName = null;
+    private String middleInitial = null;
+    private String lastName = null;
+    private String mailingAddress = null;
+    private String city = null;
+    private String state = null;
+    private String zip = null;
+    private String month = null;
+    private String year = null;
+
+
+    public CustomerBean() {
+        super();
+    }
+
+
+    protected Collection<SelectItem> titleOptions = null;
+
+
+    public Collection getTitleOptions() {
+        titleOptions = new ArrayList<SelectItem>(3);
+        ResourceBundle rb = ResourceBundle.getBundle(
+              "carstore.bundles.Resources",
+              (FacesContext.getCurrentInstance().getViewRoot().getLocale()));
+        String titleStr = (String) rb.getObject("mrLabel");
+        titleOptions.add(new SelectItem(titleStr, titleStr,
+                                        titleStr));
+        titleStr = (String) rb.getObject("mrsLabel");
+        titleOptions.add(new SelectItem(titleStr, titleStr,
+                                        titleStr));
+        titleStr = (String) rb.getObject("msLabel");
+        titleOptions.add(new SelectItem(titleStr, titleStr,
+                                        titleStr));
+
+        return titleOptions;
+    }
+
+
+    public void setTitleOptions(Collection<SelectItem> newOptions) {
+        titleOptions = new ArrayList<SelectItem>(newOptions);
+    }
+
+
+    String title = null;
+
+
+    public void setCurrentTitle(String newTitle) {
+        title = newTitle;
+    }
+
+
+    public String getCurrentTitle() {
+        return title;
+    }
+
+
+    public void setFirstName(String first) {
+        firstName = first;
+    }
+
+
+    public String getFirstName() {
+        return firstName;
+    }
+
+
+    public void setMiddleInitial(String mI) {
+        middleInitial = mI;
+    }
+
+
+    public String getMiddleInitial() {
+        return middleInitial;
+    }
+
+
+    public void setLastName(String last) {
+        lastName = last;
+    }
+
+
+    public String getLastName() {
+        return lastName;
+    }
+
+
+    public void setMailingAddress(String mA) {
+        mailingAddress = mA;
+    }
+
+
+    public String getMailingAddress() {
+        return mailingAddress;
+    }
+
+
+    public void setCity(String cty) {
+        city = cty;
+    }
+
+
+    public String getCity() {
+        return city;
+    }
+
+
+    public void setState(String sT) {
+        state = sT;
+    }
+
+
+    public String getState() {
+        return state;
+    }
+
+
+    public void setZip(String zipCode) {
+        zip = zipCode;
+    }
+
+
+    public String getZip() {
+        return zip;
+    }
+
+
+    public void setMonth(String mth) {
+        month = mth;
+    }
+
+
+    public String getMonth() {
+        return month;
+    }
+
+
+    public void setYear(String yr) {
+        year = yr;
+    }
+
+
+    public String getYear() {
+        return year;
+    }
+}
diff --git a/jsf-demo/archive/carstore/src/java/carstore/FirstNameChanged.java b/jsf-demo/archive/carstore/src/java/carstore/FirstNameChanged.java
new file mode 100644
index 0000000..f66a2e3
--- /dev/null
+++ b/jsf-demo/archive/carstore/src/java/carstore/FirstNameChanged.java
@@ -0,0 +1,66 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package carstore;
+
+import javax.faces.context.FacesContext;
+import javax.faces.event.AbortProcessingException;
+import javax.faces.event.PhaseId;
+import javax.faces.event.ValueChangeEvent;
+import javax.faces.event.ValueChangeListener;
+
+public class FirstNameChanged implements ValueChangeListener {
+
+    public void processValueChange(ValueChangeEvent event)
+          throws AbortProcessingException {
+        if (null != event.getNewValue()) {
+            FacesContext.getCurrentInstance().getExternalContext()
+                  .getSessionMap()
+                  .put("firstName", event.getNewValue());
+        }
+    }
+
+
+    public PhaseId getPhaseId() {
+        return PhaseId.ANY_PHASE;
+    }
+
+}
+    
diff --git a/jsf-demo/archive/carstore/src/java/carstore/FormatValidator.java b/jsf-demo/archive/carstore/src/java/carstore/FormatValidator.java
new file mode 100644
index 0000000..38d6390
--- /dev/null
+++ b/jsf-demo/archive/carstore/src/java/carstore/FormatValidator.java
@@ -0,0 +1,294 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package carstore;
+
+import javax.el.ValueExpression;
+import javax.faces.application.FacesMessage;
+import javax.faces.component.StateHolder;
+import javax.faces.component.UIComponent;
+import javax.faces.component.UIOutput;
+import javax.faces.context.FacesContext;
+import javax.faces.validator.Validator;
+import javax.faces.validator.ValidatorException;
+
+import java.util.ArrayList;
+
+
+/**
+ * <p><strong>FormatValidator</strong> is a Validator that checks
+ * the validity of String representation of the value of the
+ * associated component against a list of specified patterns.</p>
+ * <ul>
+ * <li>Call getValue() to retrieve the current value of the component.
+ * If it is <code>null</code>, exit immediately.  (If null values
+ * should not be allowed, a RequiredValidator can be configured
+ * to check for this case.)</li>
+ * <li><code>formatPattern</code> is a <code>|</code> separated string
+ * of allowed patterns. </li>
+ * <li> This validator uses the following rules to match a value against a
+ * pattern.
+ * <li> if the matching pattern has a "A", then corresponding character
+ * in input value should be a letter.
+ * <li> if the matching pattern has a "9", then corresponding character
+ * in input value should be a number.
+ * <li> if the matching pattern has a "#", then corresponding character
+ * in input value should be a number or  a letter.
+ * <li> Any other character must match literally.
+ * </ul> </ul>
+ * <p/>
+ * Validators have to be Serializable, so you can't maintain a reference to
+ * a java.sql.Connection or javax.sql.DataSource inside this class in case
+ * you need to hook upto the database or some other back end resource.
+ * One approach would be to use JNDI-based data source lookups or do
+ * this verification in the business tier.
+ */
+
+public class FormatValidator implements Validator, StateHolder {
+
+    // ----------------------------------------------------- Manifest Constants
+
+    /**
+     * <p>The message identifier of the Message to be created if
+     * the validation fails.  The message format string for this
+     * message may optionally include a <code>{0}</code> placeholder, which
+     * will be replaced by list of format patterns.</p>
+     */
+    public static final String FORMAT_INVALID_MESSAGE_ID =
+          "carstore.Format_Invalid";
+
+    private ArrayList<String> formatPatternsList;
+
+
+    //
+    // Constructors and Initializers    
+    //
+    public FormatValidator() {
+        super();
+    }
+
+    // 
+    // General Methods
+    //
+    /**
+     * <code>|</code> separated String of format patterns
+     * that this validator must match against.
+     */
+    private ValueExpression formatPatterns = null;
+
+
+    /* <p>Return the format patterns that the validator supports. */
+
+    /**
+     * @return the configured format patterns
+     */
+    public ValueExpression getFormatPatterns() {
+
+        return (this.formatPatterns);
+
+    }
+
+
+    /**
+     * <p>Set the format patterns that the validator support..</p>
+     *
+     * @param formatPatterns <code>|</code> separated String of format patterns
+     *                       that this validator must match against.
+     */
+    public void setFormatPatterns(ValueExpression formatPatterns) {
+
+        this.formatPatterns = formatPatterns;
+        parseFormatPatterns();
+    }
+
+
+    /**
+     * Parses the <code>formatPatterns</code> into validPatterns
+     * <code>ArrayList</code>. The delimiter must be "|".
+     */
+    public void parseFormatPatterns() {
+        String evalPatterns = (String)
+              formatPatterns
+                    .getValue(FacesContext.getCurrentInstance().getELContext());
+        if (evalPatterns == null || evalPatterns.length() == 0) {
+            return;
+        }
+        String[] patterns = evalPatterns.split("\\|");
+        if (formatPatternsList != null) {
+            return;
+        } else {
+            formatPatternsList = new ArrayList<String>(patterns.length);
+        }
+        for (String pattern : patterns) {
+            formatPatternsList.add(pattern);
+        }
+    }
+
+
+    //
+    // Methods from Validator
+    //
+    public void validate(FacesContext context, UIComponent component,
+                         Object toValidate) {
+        boolean valid = false;
+        String value;
+        if ((context == null) || (component == null)) {
+            throw new NullPointerException();
+        }
+        if (!(component instanceof UIOutput)) {
+            return;
+        }
+
+        if (null == formatPatternsList || null == toValidate) {
+            return;
+        }
+
+        value = toValidate.toString();
+        // validate the value against the list of valid patterns.
+        for (String aFormatPatternsList : formatPatternsList) {
+            valid = isFormatValid((aFormatPatternsList), value);
+            if (valid) {
+                break;
+            }
+        }
+        if (!valid) {
+            FacesMessage errMsg = MessageFactory.getMessage(context,
+                                                            FORMAT_INVALID_MESSAGE_ID,
+                                                            formatPatterns);
+            throw new ValidatorException(errMsg);
+        }
+    }
+
+
+    /* Returns true if the value matches one of the valid patterns. */
+
+    /**
+     * <p>Returns true if the value matches one of the valid patterns.</p>
+     * @param pattern the 'control' pattern
+     * @param value the value to match
+     * @return true if the value matches the pattern
+     */
+    protected boolean isFormatValid(String pattern, String value) {
+        boolean valid = true;
+        // if there is no pattern to match then value is valid
+        if (pattern == null || pattern.length() == 0) {
+            return true;
+        }
+        // if the value is null or a zero length string return false.
+        if (value == null || value.length() == 0) {
+            return false;
+        }
+        // if the length of the value is not equal to the length of the
+        // pattern string then the value is not valid.
+        if (value.length() != pattern.length()) {
+            return false;
+        }
+        value = value.trim();
+        // rules for matching. 
+        // 1. if the matching pattern has a "A", then corresponding character
+        // in the value should a letter.
+        // 2. if the matching pattern has a "9", then corresponding character
+        // in the value should a number
+        // 3. if the matching pattern has a "#", then corresponding character
+        // in the value should a number or a letter
+        // 4.. any other character must match literally.
+        char[] input = value.toCharArray();
+        char[] fmtpattern = pattern.toCharArray();
+        for (int i = 0; i < fmtpattern.length; ++i) {
+            if (fmtpattern[i] == 'A') {
+                if (!(Character.isLetter(input[i]))) {
+                    valid = false;
+                }
+            } else if (fmtpattern[i] == '9') {
+                if (!(Character.isDigit(input[i]))) {
+                    valid = false;
+                }
+            } else if (fmtpattern[i] == '#') {
+                if ((!(Character.isDigit(input[i]))) &&
+                    (!(Character.isLetter(input[i])))) {
+                    valid = false;
+                }
+            } else {
+                if (!(fmtpattern[i] == input[i])) {
+                    valid = false;
+                }
+            }
+        }
+        return valid;
+
+    }
+
+
+    public Object saveState(FacesContext context) {
+        if (context == null) {
+            throw new NullPointerException();
+        }
+        Object values[] = new Object[2];
+        values[0] = formatPatterns;
+        values[1] = formatPatternsList;
+        return (values);
+    }
+
+
+    public void restoreState(FacesContext context, Object state) {
+        if (context == null) {
+            throw new NullPointerException();
+        }
+        if (state == null) {
+            return;
+        }
+        Object values[] = (Object[]) state;
+        formatPatterns = (ValueExpression) values[0];
+        formatPatternsList = (ArrayList<String>) values[1];
+    }
+
+
+    private boolean transientValue = false;
+
+
+    public boolean isTransient() {
+        return (this.transientValue);
+    }
+
+
+    public void setTransient(boolean transientValue) {
+        this.transientValue = transientValue;
+    }
+}
diff --git a/jsf-demo/archive/carstore/src/java/carstore/FormatValidatorTag.java b/jsf-demo/archive/carstore/src/java/carstore/FormatValidatorTag.java
new file mode 100644
index 0000000..193dd8f
--- /dev/null
+++ b/jsf-demo/archive/carstore/src/java/carstore/FormatValidatorTag.java
@@ -0,0 +1,85 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package carstore;
+
+
+import javax.el.ValueExpression;
+import javax.faces.context.FacesContext;
+import javax.faces.validator.Validator;
+import javax.faces.webapp.ValidatorELTag;
+import javax.servlet.jsp.JspException;
+
+/**
+ * FormatValidatorTag is the tag handler class for FormatValidator tag,
+ * <code>format_validator</code>.
+ */
+
+public class FormatValidatorTag extends ValidatorELTag {
+
+    private static final String VALIDATOR_ID = "FormatValidator";
+    protected ValueExpression formatPatterns = null;
+
+
+    public FormatValidatorTag() {
+        super();
+    }
+
+
+    public ValueExpression getFormatPatterns() {
+        return formatPatterns;
+    }
+
+
+    public void setFormatPatterns(ValueExpression formatPatterns) {
+        this.formatPatterns = formatPatterns;
+    }
+
+    protected Validator createValidator() throws JspException {
+        FormatValidator result =
+              (FormatValidator) FacesContext.getCurrentInstance()
+                    .getApplication()
+                    .createValidator(VALIDATOR_ID);
+
+        result.setFormatPatterns(formatPatterns);
+        return result;
+    }
+
+} // end of class FormatValidatorTag
diff --git a/jsf-demo/archive/carstore/src/java/carstore/MessageFactory.java b/jsf-demo/archive/carstore/src/java/carstore/MessageFactory.java
new file mode 100644
index 0000000..c71e3a2
--- /dev/null
+++ b/jsf-demo/archive/carstore/src/java/carstore/MessageFactory.java
@@ -0,0 +1,221 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package carstore;
+
+import javax.faces.application.Application;
+import javax.faces.application.FacesMessage;
+import javax.faces.context.FacesContext;
+
+import java.text.MessageFormat;
+import java.util.Locale;
+import java.util.MissingResourceException;
+import java.util.ResourceBundle;
+
+/**
+ * <p>supported filters: <code>package</code> and
+ * <code>protection</code>.</p>
+ */
+
+public class MessageFactory {
+
+    private static final Object[] EMPTY_ARGS = new Object[0];
+
+
+    private MessageFactory() {
+    }
+
+
+    public static String substituteParams(Locale locale,
+                                          String msgtext,
+                                          Object... params) {
+        String localizedStr = null;
+
+        if (params == null || msgtext == null) {
+            return msgtext;
+        }
+        StringBuffer b = new StringBuffer(100);
+        MessageFormat mf = new MessageFormat(msgtext);
+        if (locale != null) {
+            mf.setLocale(locale);
+            b.append(mf.format(params));
+            localizedStr = b.toString();
+        }
+        return localizedStr;
+    }    
+
+    /**
+     * <p>This version of getMessage() is used by Sun's JSF implementation
+     * for localizing implementation specific messages
+     * @param messageId the message ID
+     * @param params substitution params
+     * @return a localized <code>FacesMessage</code>
+     */
+    public static FacesMessage getMessage(String messageId, Object... params) {
+        Locale locale;
+        FacesContext context = FacesContext.getCurrentInstance();
+        // context.getViewRoot() may not have been initialized at this point.
+        if (context != null && context.getViewRoot() != null) {
+            locale = context.getViewRoot().getLocale();
+            if (locale == null) {
+                locale = Locale.getDefault();
+            }
+        } else {
+            locale = Locale.getDefault();
+        }
+
+        return getMessage(locale, messageId, params);
+    }
+
+
+    public static FacesMessage getMessage(Locale locale,
+                                          String messageId,
+                                          Object... params) {
+        String summary = null;
+        String detail = null;
+        String bundleName;
+        ResourceBundle bundle = null;
+
+        // see if we have a user-provided bundle
+        if (null != (bundleName = getApplication().getMessageBundle())) {
+            if (null !=
+                (bundle =
+                      ResourceBundle.getBundle(bundleName, locale,
+                                               getCurrentLoader(bundleName)))) {
+                // see if we have a hit
+                try {
+                    summary = bundle.getString(messageId);
+                } catch (MissingResourceException e) {
+                    // log message
+                }
+            }
+        }
+
+        // we couldn't find a summary in the user-provided bundle
+        if (null == summary) {
+            // see if we have a summary in the app provided bundle
+            bundle = ResourceBundle.getBundle(FacesMessage.FACES_MESSAGES,
+                                              locale,
+                                              getCurrentLoader(bundleName));
+            if (null == bundle) {
+                throw new NullPointerException();
+            }
+            // see if we have a hit
+            try {
+                summary = bundle.getString(messageId);
+            } catch (MissingResourceException e) {
+                // log message
+            }
+        }
+
+        // we couldn't find a summary anywhere!  Return null
+        if (null == summary) {
+            return null;
+        }
+
+        // At this point, we have a summary and a bundle.
+        if (null == summary || null == bundle) {
+            throw new NullPointerException();
+        }
+        summary = substituteParams(locale, summary, params);
+
+        try {
+            detail = substituteParams(locale,
+                                      bundle.getString(messageId + "_detail"),
+                                      params);
+        } catch (MissingResourceException e) {
+            // log message
+        }
+
+        return (new FacesMessage(summary, detail));
+    }
+
+
+    //
+    // Methods from MessageFactory
+    // 
+    public static FacesMessage getMessage(FacesContext context,
+                                          String messageId) {
+        return getMessage(context, messageId, EMPTY_ARGS);
+    }
+
+
+    public static FacesMessage getMessage(FacesContext context,
+                                          String messageId,
+                                          Object... params) {
+        if (context == null || messageId == null) {
+            throw new NullPointerException(
+                  "One or more parameters could be null");
+        }
+        Locale locale;
+        // viewRoot may not have been initialized at this point.
+        if (context.getViewRoot() != null) {
+            locale = context.getViewRoot().getLocale();
+        } else {
+            locale = Locale.getDefault();
+        }
+        if (null == locale) {
+            throw new NullPointerException();
+        }
+        FacesMessage message = getMessage(locale, messageId, params);
+        if (message != null) {
+            return message;
+        }
+        locale = Locale.getDefault();
+        return (getMessage(locale, messageId, params));
+    }
+
+
+    protected static Application getApplication() {
+        return (FacesContext.getCurrentInstance().getApplication());
+    }
+
+
+    protected static ClassLoader getCurrentLoader(Object fallbackClass) {
+        ClassLoader loader =
+              Thread.currentThread().getContextClassLoader();
+        if (loader == null) {
+            loader = fallbackClass.getClass().getClassLoader();
+        }
+        return loader;
+    }
+
+
+} // end of class MessageFactory
diff --git a/jsf-demo/archive/carstore/src/java/carstore/bundles/Common_options.properties b/jsf-demo/archive/carstore/src/java/carstore/bundles/Common_options.properties
new file mode 100644
index 0000000..ffb302d
--- /dev/null
+++ b/jsf-demo/archive/carstore/src/java/carstore/bundles/Common_options.properties
@@ -0,0 +1,63 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 2005-2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
+# this file contains the non-localized set of options common to all cars
+
+sunroof=false
+sunroof_componentType=javax.faces.SelectBoolean
+sunroof_valueType=java.lang.Boolean
+cruisecontrol=false
+cruisecontrol_componentType=javax.faces.SelectBoolean
+cruisecontrol_valueType=java.lang.Boolean
+keylessentry=false
+keylessentry_componentType=javax.faces.SelectBoolean
+keylessentry_valueType=java.lang.Boolean
+securitySystem=false
+securitySystem_componentType=javax.faces.SelectBoolean
+securitySystem_valueType=java.lang.Boolean
+skiRack=false
+skiRack_componentType=javax.faces.SelectBoolean
+skiRack_valueType=java.lang.Boolean
+towPackage=false
+towPackage_componentType=javax.faces.SelectBoolean
+towPackage_valueType=java.lang.Boolean
+gps=false
+gps_componentType=javax.faces.SelectBoolean
+gps_valueType=java.lang.Boolean
diff --git a/jsf-demo/archive/carstore/src/java/carstore/bundles/Custom.properties b/jsf-demo/archive/carstore/src/java/carstore/bundles/Custom.properties
new file mode 100644
index 0000000..ab98041
--- /dev/null
+++ b/jsf-demo/archive/carstore/src/java/carstore/bundles/Custom.properties
@@ -0,0 +1,61 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 2005-2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
+sunroof=false
+sunroof_disabled=false
+cruisecontrol=false
+cruisecontrol_disabled=false
+keylessentry=false
+keylessentry_disabled=false
+securitySystem=false
+securitySystem_disabled=false
+skirack=false
+skirack_disabled=false
+towPackage=false
+towPackage_disabled=false
+gps=false
+gps_disabled=false
+
+engine=V4
+brake=Disc
+suspension=Regular
+speaker=4
+audio=Standard
+transmission=Manual
diff --git a/jsf-demo/archive/carstore/src/java/carstore/bundles/Deluxe.properties b/jsf-demo/archive/carstore/src/java/carstore/bundles/Deluxe.properties
new file mode 100644
index 0000000..3867465
--- /dev/null
+++ b/jsf-demo/archive/carstore/src/java/carstore/bundles/Deluxe.properties
@@ -0,0 +1,61 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 2005-2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
+sunroof=true
+sunroof_disabled=false
+cruisecontrol=true
+cruisecontrol_disabled=false
+keylessentry=true
+keylessentry_disabled=false
+securitySystem=true
+securitySystem_disabled=false
+skirack=true
+skirack_disabled=false
+towPackage=true
+towPackage_disabled=false
+gps=true
+gps_disabled=false
+
+engine=V8
+brake=Drum
+suspension=Regular
+speaker=6
+audio=Premium
+transmission=Auto
diff --git a/jsf-demo/archive/carstore/src/java/carstore/bundles/Jalopy.properties b/jsf-demo/archive/carstore/src/java/carstore/bundles/Jalopy.properties
new file mode 100644
index 0000000..1e6795d
--- /dev/null
+++ b/jsf-demo/archive/carstore/src/java/carstore/bundles/Jalopy.properties
@@ -0,0 +1,48 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 2005-2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
+# this file contains the localized content for the Jalopy 
+
+title=Duke's Stripped-Down Jalopy
+title_componentType=javax.faces.Output
+title_valueType=java.lang.String
+description=If you're the type who doesn't care what anyone thinks, this is the car for you. Strictly for point-a-to-point-b types.
+description_componentType=javax.faces.Output
+description_valueType=java.lang.String
diff --git a/jsf-demo/archive/carstore/src/java/carstore/bundles/Jalopy_de.properties b/jsf-demo/archive/carstore/src/java/carstore/bundles/Jalopy_de.properties
new file mode 100644
index 0000000..fdbe665
--- /dev/null
+++ b/jsf-demo/archive/carstore/src/java/carstore/bundles/Jalopy_de.properties
@@ -0,0 +1,48 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 2005-2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
+# this file contains the localized content for the Jalopy 
+
+title=Dukes alte Kiste
+title_componentType=javax.faces.Output
+title_valueType=java.lang.String
+description=Wenn Sie der Typ von Mensch sind, den es nicht k\u00fcmmert, was jeder denkt, dann ist dies genau der richtige Wagen f\u00fcr Sie! Gedacht f\u00fcr Punkt-A-Nach-Punkt-B Typen. 
+description_componentType=javax.faces.Output
+description_valueType=java.lang.String
diff --git a/jsf-demo/archive/carstore/src/java/carstore/bundles/Jalopy_es.properties b/jsf-demo/archive/carstore/src/java/carstore/bundles/Jalopy_es.properties
new file mode 100644
index 0000000..9cb055b
--- /dev/null
+++ b/jsf-demo/archive/carstore/src/java/carstore/bundles/Jalopy_es.properties
@@ -0,0 +1,48 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 2005-2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
+# this file contains the localized content for the Jalopy 
+
+title=El cacharro de Duke
+title_componentType=javax.faces.Output
+title_valueType=java.lang.String
+description=Este es el carro para ti si tu eres el tipo de persona de que no le importa lo que otros opinion de ti.
+description_componentType=javax.faces.Output
+description_valueType=java.lang.String
diff --git a/jsf-demo/archive/carstore/src/java/carstore/bundles/Jalopy_fr.properties b/jsf-demo/archive/carstore/src/java/carstore/bundles/Jalopy_fr.properties
new file mode 100644
index 0000000..27a059f
--- /dev/null
+++ b/jsf-demo/archive/carstore/src/java/carstore/bundles/Jalopy_fr.properties
@@ -0,0 +1,48 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 2005-2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
+# this file contains the localized content for the Jalopy 
+
+title=La coccinelle de Duke
+title_componentType=javax.faces.Output
+title_valueType=java.lang.String
+description=Si l\u2019opinion des autres ne vous d\u00e9range pas, c\u2019est l\u2019automobile qu\u2019il vous faut.  Id\u00e9al pous vous permettre d\u2019aller du point A au point B.
+description_componentType=javax.faces.Output
+description_valueType=java.lang.String
diff --git a/jsf-demo/archive/carstore/src/java/carstore/bundles/Jalopy_options.properties b/jsf-demo/archive/carstore/src/java/carstore/bundles/Jalopy_options.properties
new file mode 100644
index 0000000..5b6f484
--- /dev/null
+++ b/jsf-demo/archive/carstore/src/java/carstore/bundles/Jalopy_options.properties
@@ -0,0 +1,73 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 2005-2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
+# this file contains the non-localized set of options for the Jalopy
+
+basePrice=10750
+basePrice_componentType=javax.faces.Output
+basePrice_valueType=java.lang.Integer
+currentPrice=10750
+currentPrice_componentType=javax.faces.Output
+currentPrice_valueType=java.lang.Integer
+brake=Disc,Drum
+brake_componentType=javax.faces.SelectOne
+brake_valueType=java.lang.String
+suspension=Performance,Regular
+suspension_componentType=javax.faces.SelectOne
+suspension_valueType=java.lang.String
+audio=Standard,Premium
+audio_componentType=javax.faces.SelectOne
+audio_valueType=java.lang.String
+transmission=Auto,Manual
+transmission_componentType=javax.faces.SelectOne
+transmission_valueType=java.lang.String
+image=/images/200x168_Jalopy.jpg
+image_componentType=javax.faces.Graphic
+image_valueType=java.lang.String
+imageSmall=/images/150x126_Jalopy.jpg
+imageSmall_componentType=javax.faces.Graphic
+imageSmall_valueType=java.lang.String
+engine=V4,V6
+engine_componentType=javax.faces.SelectOne
+engine_valueType=java.lang.String
+speaker=4,6
+speaker_componentType=javax.faces.SelectOne
+speaker_valueType=java.lang.String
+
diff --git a/jsf-demo/archive/carstore/src/java/carstore/bundles/Luxury.properties b/jsf-demo/archive/carstore/src/java/carstore/bundles/Luxury.properties
new file mode 100644
index 0000000..86a9790
--- /dev/null
+++ b/jsf-demo/archive/carstore/src/java/carstore/bundles/Luxury.properties
@@ -0,0 +1,49 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 2005-2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
+# this file contains the localized content for the Luxury
+
+
+title=Duke's Vulgar Luxury Car
+title_componentType=javax.faces.Output
+title_valueType=java.lang.String
+description=Those Joneses next door have everything, don't they? Well, show them that you're the one pulling in the big bucks by driving up in this loaded chassis.
+description_componentType=javax.faces.Output
+description_valueType=java.lang.String
diff --git a/jsf-demo/archive/carstore/src/java/carstore/bundles/Luxury_de.properties b/jsf-demo/archive/carstore/src/java/carstore/bundles/Luxury_de.properties
new file mode 100644
index 0000000..30ec226
--- /dev/null
+++ b/jsf-demo/archive/carstore/src/java/carstore/bundles/Luxury_de.properties
@@ -0,0 +1,49 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 2005-2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
+# this file contains the localized content for the Luxury
+
+title=Dukes geschmacklose Luxus-Limosine
+title_componentType=javax.faces.Output
+title_valueType=java.lang.String
+description=Diese Meiers von nebenan haben Alles, nicht war? Nun, zeigen Sie denen mal, dass bei Ihnen der Rubel rollt und fahren Sie mit diesem \u00fcberladenen Chassis vorbei.
+description_componentType=javax.faces.Output
+description_valueType=java.lang.String
+
diff --git a/jsf-demo/archive/carstore/src/java/carstore/bundles/Luxury_es.properties b/jsf-demo/archive/carstore/src/java/carstore/bundles/Luxury_es.properties
new file mode 100644
index 0000000..c7b0061
--- /dev/null
+++ b/jsf-demo/archive/carstore/src/java/carstore/bundles/Luxury_es.properties
@@ -0,0 +1,49 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 2005-2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
+# this file contains the localized content for the Luxury
+
+title=El carro delujo de Duke.
+title_componentType=javax.faces.Output
+title_valueType=java.lang.String
+description=Los vecinos Delgados tienen de todo, cierto? Bien tu les puedes ense\u00f1ar de que ganas mas dinero cuando compres y manejes este carro.
+description_componentType=javax.faces.Output
+description_valueType=java.lang.String
+
diff --git a/jsf-demo/archive/carstore/src/java/carstore/bundles/Luxury_fr.properties b/jsf-demo/archive/carstore/src/java/carstore/bundles/Luxury_fr.properties
new file mode 100644
index 0000000..27a6d3c
--- /dev/null
+++ b/jsf-demo/archive/carstore/src/java/carstore/bundles/Luxury_fr.properties
@@ -0,0 +1,49 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 2005-2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don\u2019t indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
+# this file contains the localized content for the Luxury
+
+title=La luxueuse de Duke
+title_componentType=javax.faces.Output
+title_valueType=java.lang.String
+description=Les Lamotte font l\u2019envie de tous parce qu\u2019ils possedent tout? C\u2019est maintenant votre chance d\u2019attirer les regards d�s que vous serez au volant de cette voiture sublime.
+description_componentType=javax.faces.Output
+description_valueType=java.lang.String
+
diff --git a/jsf-demo/archive/carstore/src/java/carstore/bundles/Luxury_options.properties b/jsf-demo/archive/carstore/src/java/carstore/bundles/Luxury_options.properties
new file mode 100644
index 0000000..e6fb96c
--- /dev/null
+++ b/jsf-demo/archive/carstore/src/java/carstore/bundles/Luxury_options.properties
@@ -0,0 +1,72 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 2005-2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
+# this file contains the non-localized set of options for the Luxury
+
+basePrice=20700
+basePrice_componentType=javax.faces.Output
+basePrice_valueType=java.lang.Integer
+currentPrice=20700
+currentPrice_componentType=javax.faces.Output
+currentPrice_valueType=java.lang.Integer
+image=/images/200x168_Luxury.jpg
+image_componentType=javax.faces.Graphic
+image_valueType=java.lang.String
+imageSmall=/images/150x126_Luxury.jpg
+imageSmall_componentType=javax.faces.Graphic
+imageSmall_valueType=java.lang.String
+brake=Disc,Drum
+brake_componentType=javax.faces.SelectOne
+brake_valueType=java.lang.String
+suspension=Performance,Regular
+suspension_componentType=javax.faces.SelectOne
+suspension_valueType=java.lang.String
+audio=Standard,Premium
+audio_componentType=javax.faces.SelectOne
+audio_valueType=java.lang.String
+transmission=Auto,Manual
+transmission_componentType=javax.faces.SelectOne
+transmission_valueType=java.lang.String
+engine=V4,V6,V8
+engine_componentType=javax.faces.SelectOne
+engine_valueType=java.lang.String
+speaker=4,6
+speaker_componentType=javax.faces.SelectOne
+speaker_valueType=java.lang.String
diff --git a/jsf-demo/archive/carstore/src/java/carstore/bundles/Messages.properties b/jsf-demo/archive/carstore/src/java/carstore/bundles/Messages.properties
new file mode 100644
index 0000000..96e297f
--- /dev/null
+++ b/jsf-demo/archive/carstore/src/java/carstore/bundles/Messages.properties
@@ -0,0 +1,43 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 2005-2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
+carstore.Format_Invalid=Input must match one of the following patterns {0}
+carstore.Conversion_Error=Conversion Error setting value '{0}' for '{1}'
+carstore.Converter_Error=Converter Not Found for identifier: '{0}'
diff --git a/jsf-demo/archive/carstore/src/java/carstore/bundles/Messages_de.properties b/jsf-demo/archive/carstore/src/java/carstore/bundles/Messages_de.properties
new file mode 100644
index 0000000..aa44d9c
--- /dev/null
+++ b/jsf-demo/archive/carstore/src/java/carstore/bundles/Messages_de.properties
@@ -0,0 +1,43 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 2005-2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
+carstore.Format_Invalid=Eingang mu\u00df eins der folgenden Muster zusammenbringen {0}
+carstore.Conversion_Error=Konvertierungs-Fehler: Wert '{0}' f\u00fcr Modell '{1}'
+carstore.Converter_Error=Konverter gefunden nicht f�r Bezeichner: '{0}'
diff --git a/jsf-demo/archive/carstore/src/java/carstore/bundles/Messages_es.properties b/jsf-demo/archive/carstore/src/java/carstore/bundles/Messages_es.properties
new file mode 100644
index 0000000..6b93ef1
--- /dev/null
+++ b/jsf-demo/archive/carstore/src/java/carstore/bundles/Messages_es.properties
@@ -0,0 +1,43 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 2005-2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
+carstore.Format_Invalid=La entrada debe emparejar uno de los patrones siguientes {0}
+carstore.Conversion_Error=Error de conversion en el valor puesto '{0}' del modelo '{1}'
+carstore.Converter_Error=Convertidor no encontrado para el identificador: '{0}'
diff --git a/jsf-demo/archive/carstore/src/java/carstore/bundles/Messages_fr.properties b/jsf-demo/archive/carstore/src/java/carstore/bundles/Messages_fr.properties
new file mode 100644
index 0000000..3459731
--- /dev/null
+++ b/jsf-demo/archive/carstore/src/java/carstore/bundles/Messages_fr.properties
@@ -0,0 +1,43 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 2005-2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
+carstore.Format_Invalid=L\u2019entr\u00e9 doit assortir un des mod\u2019les suivants {0}
+carstore.Conversion_Error=Erreur de conversion quand la valeur \u00ab{0}\u00bb est commise pour le mod\u00e9le \u00ab{1}\u00bb
+carstore.Converter_Error=Convertisseur non trouv� pour la marque: \u00ab{0}\u00bb
diff --git a/jsf-demo/archive/carstore/src/java/carstore/bundles/OptionPrices.properties b/jsf-demo/archive/carstore/src/java/carstore/bundles/OptionPrices.properties
new file mode 100644
index 0000000..6dfdb18
--- /dev/null
+++ b/jsf-demo/archive/carstore/src/java/carstore/bundles/OptionPrices.properties
@@ -0,0 +1,61 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 2005-2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
+V4=100
+V6=200
+V8=300
+Disc=100
+Drum=200
+Regular=150
+Performance=300
+4=100
+6=200
+Standard=100
+Premium=200
+Auto=300
+Manual=200
+sunroof=100
+cruisecontrol=150
+keylessentry=100
+skirack=200
+securitySystem=100
+skiRack=200
+towPackage=200
+gps=200
diff --git a/jsf-demo/archive/carstore/src/java/carstore/bundles/Performance.properties b/jsf-demo/archive/carstore/src/java/carstore/bundles/Performance.properties
new file mode 100644
index 0000000..104be75
--- /dev/null
+++ b/jsf-demo/archive/carstore/src/java/carstore/bundles/Performance.properties
@@ -0,0 +1,61 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 2005-2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
+sunroof=true
+sunroof_disabled=true
+cruisecontrol=true
+cruisecontrol_disabled=true
+keylessentry=true
+keylessentry_disabled=true
+securitySystem=false
+securitySystem_disabled=true
+skirack=true
+skirack_disabled=true
+towPackage=true
+towPackage_disabled=true
+gps=false
+gps_disabled=true
+
+engine=V8
+brake=Drum
+suspension=Performance
+speaker=6
+audio=Premium
+transmission=Manual
diff --git a/jsf-demo/archive/carstore/src/java/carstore/bundles/Resources.properties b/jsf-demo/archive/carstore/src/java/carstore/bundles/Resources.properties
new file mode 100644
index 0000000..9e3bb59
--- /dev/null
+++ b/jsf-demo/archive/carstore/src/java/carstore/bundles/Resources.properties
@@ -0,0 +1,121 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 2005-2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
+#
+# Resources common to the entire app.
+#
+
+moreButton=More
+
+chooseLocale=Choose Your Preferred Locale From the Map
+
+chooseCar=Which car would you like to buy?
+
+carDetails=Here are the details for your car.
+
+basePriceLabel=Base Price
+yourPriceLabel=Your Price 
+OptionsPackages=Options and Packages
+
+Package=Package
+Custom=Custom
+Deluxe=Deluxe
+
+Engine=Engine
+
+Brakes=Brakes
+Disc=disc
+Drum=drum
+
+Suspension=Suspension
+Regular=regular
+Performance=performance
+
+Speakers=Speakers
+
+Audio=Audio
+Standard=Standard
+Premium=premium
+
+Transmission=Transmission
+Auto=auto
+Manual=manual
+
+OtherOptions=Other Options
+
+sunroofLabel=Sunroof
+cruiseLabel=Cruise Control
+keylessLabel=Keyless Entry
+securityLabel=Security System
+skiRackLabel=Ski Rack
+towPkgLabel=Tow Package
+gpsLabel=GPS
+buy=Buy
+back=Back
+buyLabel=Thanks for stopping by!
+
+recalculate=Recalculate
+buyTitle=You have chosen the following options:
+configureButton=Reconfigure
+customerTitle=Please fill in your name and address.
+
+titleLabel=Title
+mrLabel=Mr.
+msLabel=Ms.
+mrsLabel=Mrs.
+firstLabel=First Name
+middleLabel=Middle Initial
+lastLabel=Last Name
+mailingLabel=Mailing Address
+cityLabel=City
+stateLabel=State
+zipLabel=Zip Code
+ccNumberLabel=Credit Card Number
+monthLabel=Expiry Date
+finishButton=Finish
+errorLabel=An Error Happened!
+thanksLabel=Thanks, {0}, for using CarStore! Your car will ship soon.
+
+outputMessageKey=bundle param 0: {0} bundle param: 1 {1} bundle param: 2 {2}
+
+english=English
+german=German
+spanish=Spanish
+french=French
diff --git a/jsf-demo/archive/carstore/src/java/carstore/bundles/Resources_de.properties b/jsf-demo/archive/carstore/src/java/carstore/bundles/Resources_de.properties
new file mode 100644
index 0000000..213a780
--- /dev/null
+++ b/jsf-demo/archive/carstore/src/java/carstore/bundles/Resources_de.properties
@@ -0,0 +1,118 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 2005-2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
+carDetails=Here are the details for your car.
+
+moreButton=Mehr
+
+chooseLocale=W\u00e4hlen Sie Ihren bevorzugten Standort aus der Karte.
+
+basePriceLabel=Basis-Preis
+yourPriceLabel=Ihr Preis 
+OptionsPackages=Optionen und Pakete
+
+Package=Package
+Custom=Kundenspezifisch
+Deluxe=Deluxe
+
+Engine=Motor
+
+Brakes=Bremsen
+Disc=Scheibenbremse
+Drum=Trommelbremse
+
+Suspension=Aufh\u00e4ngung
+Regular=regul\u00e4r
+Performance=Leistung
+ 
+Speakers=Lautsprecher
+
+Audio=Audio
+Standard=Standard 
+Premium=Premium
+
+Transmission=Getriebe
+Auto=automatisch
+Manual=manuell
+
+OtherOptions=Andere Optionen
+
+sunroofLabel=Sonnendach
+cruiseLabel=Tempomat
+keylessLabel=Zentralverriegelung mit Fernbedienung
+securityLabel=Sicherheits-System
+skiRackLabel=Ski-Tr\u00e4ger
+towPkgLabel=Abschleppkabel
+gpsLabel=GPS
+buy=Kaufen
+back=Zur\u00fck
+buyLabel=Vielen Dank!
+
+recalculate=berechnen
+buyTitle=Sie haben die folgenden Optionen gew\u00e4hlt:
+configureButton=Neu Konfigurieren
+customerTitle=Bitte f\u00fcllen Sie Name und Adresse aus.
+
+titleLabel=Titel
+mrLabel=Herr
+msLabel=Frau 
+mrsLabel=Fr\u00e4ulein
+firstLabel=Vorname
+middleLabel=Mittlerer Initial
+lastLabel=Nachname
+mailingLabel=Adresse 
+cityLabel=Stadt
+stateLabel=Bundesstaat
+zipLabel=Postleizahl
+ccNumberLabel=Keditkarten-Nummer
+monthLabel=G\u00fcltig bis 
+finishButton=Ende
+errorLabel=Es ist ein Fehler aufgetreten! 
+thanksLabel=Vielen Dank, {0}, dass Sie die CarStore benutzt haben! Ihr Wagen wird bald geliefert...
+
+outputMessageKey=bundle param 0: {0} bundle param: 1 {1} bundle param: 2 {2}
+
+stockLabel=Traurig, ist Sonne-Dach f\u00FCr Jalopy momentan nicht vorr\u00E4tig.\ 
+chooseCar=Which car would you like to buy?
+
+english=English
+german=Deutsch
+spanish=Espanol
+french=Francais
diff --git a/jsf-demo/archive/carstore/src/java/carstore/bundles/Resources_en.properties b/jsf-demo/archive/carstore/src/java/carstore/bundles/Resources_en.properties
new file mode 100644
index 0000000..9e3bb59
--- /dev/null
+++ b/jsf-demo/archive/carstore/src/java/carstore/bundles/Resources_en.properties
@@ -0,0 +1,121 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 2005-2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
+#
+# Resources common to the entire app.
+#
+
+moreButton=More
+
+chooseLocale=Choose Your Preferred Locale From the Map
+
+chooseCar=Which car would you like to buy?
+
+carDetails=Here are the details for your car.
+
+basePriceLabel=Base Price
+yourPriceLabel=Your Price 
+OptionsPackages=Options and Packages
+
+Package=Package
+Custom=Custom
+Deluxe=Deluxe
+
+Engine=Engine
+
+Brakes=Brakes
+Disc=disc
+Drum=drum
+
+Suspension=Suspension
+Regular=regular
+Performance=performance
+
+Speakers=Speakers
+
+Audio=Audio
+Standard=Standard
+Premium=premium
+
+Transmission=Transmission
+Auto=auto
+Manual=manual
+
+OtherOptions=Other Options
+
+sunroofLabel=Sunroof
+cruiseLabel=Cruise Control
+keylessLabel=Keyless Entry
+securityLabel=Security System
+skiRackLabel=Ski Rack
+towPkgLabel=Tow Package
+gpsLabel=GPS
+buy=Buy
+back=Back
+buyLabel=Thanks for stopping by!
+
+recalculate=Recalculate
+buyTitle=You have chosen the following options:
+configureButton=Reconfigure
+customerTitle=Please fill in your name and address.
+
+titleLabel=Title
+mrLabel=Mr.
+msLabel=Ms.
+mrsLabel=Mrs.
+firstLabel=First Name
+middleLabel=Middle Initial
+lastLabel=Last Name
+mailingLabel=Mailing Address
+cityLabel=City
+stateLabel=State
+zipLabel=Zip Code
+ccNumberLabel=Credit Card Number
+monthLabel=Expiry Date
+finishButton=Finish
+errorLabel=An Error Happened!
+thanksLabel=Thanks, {0}, for using CarStore! Your car will ship soon.
+
+outputMessageKey=bundle param 0: {0} bundle param: 1 {1} bundle param: 2 {2}
+
+english=English
+german=German
+spanish=Spanish
+french=French
diff --git a/jsf-demo/archive/carstore/src/java/carstore/bundles/Resources_es.properties b/jsf-demo/archive/carstore/src/java/carstore/bundles/Resources_es.properties
new file mode 100644
index 0000000..4df7835
--- /dev/null
+++ b/jsf-demo/archive/carstore/src/java/carstore/bundles/Resources_es.properties
@@ -0,0 +1,189 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 2005-2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
+carDetails=Here are the details for your car.
+
+moreButton=M\u00e1s
+
+
+
+chooseLocale=Escoje tu sitio favorito del mapa 
+
+
+
+basePriceLabel=Precio base
+
+yourPriceLabel=Tu precio 
+
+OptionsPackages=Paquete de opci\u00f3nes
+
+
+
+Custom=personalizado a tu gusto
+
+Deluxe=delujo
+
+Package=paquete
+
+
+
+Engine=Motor
+
+
+
+Brakes=Frenos
+
+Disc=Disco de frenos
+
+Drum=Tambor de frenos
+
+
+
+Suspension=suspensi\u00f3n
+
+Regular=Regular
+
+Performance=Redimiento
+
+
+
+Speakers=Bocinas
+
+
+
+Audio=Equipo de sonido
+
+Standard=Est\u00e1ndar
+
+Premium=Superior
+
+
+
+Transmission=Transmisi\u00f3n
+
+Auto=Transmisi\u00f3n   Automatica
+
+Manual=Transmisi\u00f3n  Manual
+
+
+
+OtherOptions=Otras opci\u00f3nes
+
+
+
+sunroofLabel=techo corredizo
+
+cruiseLabel=control de velocidad constante
+
+keylessLabel=sistema de entrada sin llaves a control remoto
+
+securityLabel=Sistema de seguridad
+
+skiRackLabel=Porta esquis
+
+towPkgLabel=Paquete para remolque
+
+gpsLabel=Sistema de posicionamiento global
+
+buy=Comprar
+back=Regresar
+
+buyLabel=Gracias por visitamos!
+
+
+
+recalculate=Calcular de nuevo
+
+buyTitle=Tu has escojido las siguientes opci\u00f3nes: 
+
+configureButton=Reconfigurar
+
+customerTitle=Por favor complete su nombre y direcci\u00f3n.
+
+
+
+titleLabel=T\u00edtulo
+
+mrLabel=Se\u00f1or
+
+msLabel=Srta.
+
+mrsLabel=Sra.
+
+firstLabel=Primer Nombre
+
+middleLabel=Segundo Nombre
+
+lastLabel=Apellido
+
+mailingLabel=Dirrecci\u00f3n
+
+cityLabel=Ciudad
+
+stateLabel=Estado
+
+zipLabel=C\u00f3digo postal
+
+ccNumberLabel=Numero de carta de cr\u00e9dito
+
+monthLabel=Fecha de expiraci\u00f3n
+
+finishButton=Terminar
+
+errorLabel=Un error de sucedio
+
+thanksLabel=Gracias, {0}, para usar CarStore! Tu carro enviado pronto.
+
+
+
+outputMessageKey=bundle param 0: {0} bundle param: 1 {1} bundle param: 2 {2}
+
+
+
+
+
+
+stockLabel=Apesadumbrada, la azotea del sol para Jalopy est\u00E1 actualmente fuera de acci\u00F3n.\ 
+chooseCar=Which car would you like to buy?
+
+english=English
+german=Deutsch
+spanish=Espanol
+french=Francais
diff --git a/jsf-demo/archive/carstore/src/java/carstore/bundles/Resources_fr.properties b/jsf-demo/archive/carstore/src/java/carstore/bundles/Resources_fr.properties
new file mode 100644
index 0000000..b75c446
--- /dev/null
+++ b/jsf-demo/archive/carstore/src/java/carstore/bundles/Resources_fr.properties
@@ -0,0 +1,118 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 2005-2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
+carDetails=Here are the details for your car.
+
+moreButton=Plus
+
+chooseLocale=Choisissez votre locale pr\u00e9f\u00e9r\u00e9e avec la carte g\u00e9ographique
+
+basePriceLabel=Prix de Base
+yourPriceLabel=Votre Prix 
+OptionsPackages=Options
+
+Package=Pack
+Custom=Sp\u00e9cifique
+Deluxe=Grand Confort
+
+Engine=Moteur
+
+Brakes=Freins
+Disc=disque
+Drum=tambour
+
+Suspension=Suspension
+Regular=r\u00e9gulier
+Performance=performance
+
+Speakers=Hauts-parleurs
+
+Audio=Audio
+Standard=standard
+Premium=premium
+
+Transmission=Transmission
+Auto=automatique
+Manual=manuelle
+
+OtherOptions=Autres Options
+
+sunroofLabel=Toit Ouvrant
+cruiseLabel=R\u00e9gulateur de Vitesse
+keylessLabel=Entr\u00e9e sans clef
+securityLabel=Syst\u00e8me de s\u00e9curit\u00e9
+skiRackLabel=Porte Skis
+towPkgLabel=Remorquage
+gpsLabel=Syst\u00e8me de navigation par satellite
+buy=Acheter
+back=retourner
+buyLabel=Merci de nous visiter!
+
+recalculate=Recalculer
+buyTitle=Vous avez s\u00e9lectionn\u00e9 les options suivantes:
+configureButton=Reconfigurer
+customerTitle=S.V.P., sp\u00e9cifiez votre nom et adresse.
+
+titleLabel=Titre
+mrLabel=M.
+msLabel=Mlle
+mrsLabel=Mme
+firstLabel=Pr\u00e9nom
+middleLabel=Initiale
+lastLabel=Nom de Famille
+mailingLabel=Adresse
+cityLabel=Ville
+stateLabel=Province
+zipLabel=Code Postal
+ccNumberLabel=Num\u00e9ro de carte de cr\u00e9dit
+monthLabel=Date d\u2019expiration
+finishButton=Terminer
+errorLabel=Il s\u2019est produit une erreur!
+thanksLabel=Merci d utiliser, {0}, D\u00e9moVoiture! Votre automobile arrivera bient\u00f4t.
+
+outputMessageKey=bundle param 0: {0} bundle param: 1 {1} bundle param: 2 {2}
+
+stockLabel=D\u00E9sol\u00E9, le toit du soleil pour Jalopy est actuellement hors des actions.\ 
+chooseCar=Which car would you like to buy?
+
+english=English
+german=Deutsch
+spanish=Espanol
+french=Francais
diff --git a/jsf-demo/archive/carstore/src/java/carstore/bundles/Roadster.properties b/jsf-demo/archive/carstore/src/java/carstore/bundles/Roadster.properties
new file mode 100644
index 0000000..c524047
--- /dev/null
+++ b/jsf-demo/archive/carstore/src/java/carstore/bundles/Roadster.properties
@@ -0,0 +1,48 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 2005-2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
+# this file contains the localized content for the Roadster
+
+title=Duke's MLC Roadster
+title_componentType=javax.faces.Output
+title_valueType=java.lang.String
+description=Getting on in years? Need to make one last-ditch grasp at youth?  You'll feel 20 years younger when step behind the wheel of this baby.
+description_componentType=javax.faces.Output
+description_valueType=java.lang.String
diff --git a/jsf-demo/archive/carstore/src/java/carstore/bundles/Roadster_de.properties b/jsf-demo/archive/carstore/src/java/carstore/bundles/Roadster_de.properties
new file mode 100644
index 0000000..5bd98ae
--- /dev/null
+++ b/jsf-demo/archive/carstore/src/java/carstore/bundles/Roadster_de.properties
@@ -0,0 +1,49 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 2005-2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
+# this file contains the localized content for the Roadster
+
+title=Duke's MLC Roadster
+title_componentType=javax.faces.Output
+title_valueType=java.lang.String
+description=Kommen Sie in die Jahre? Wollen Sie nicht noch mal nach der Jugend greifen? Sie f\u00fchlen sich 20 Jahre j\u00fcnger, wenn Sie sich hinter das Lenkrad dieses Babies setzen.
+destcription_componentType=javax.faces.Output
+destcription_valueType=java.lang.String
+
diff --git a/jsf-demo/archive/carstore/src/java/carstore/bundles/Roadster_es.properties b/jsf-demo/archive/carstore/src/java/carstore/bundles/Roadster_es.properties
new file mode 100644
index 0000000..b69ad43
--- /dev/null
+++ b/jsf-demo/archive/carstore/src/java/carstore/bundles/Roadster_es.properties
@@ -0,0 +1,46 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 2005-2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
+title=El coche MLC de Duke.
+title_componentType=javax.faces.Output
+title_valueType=java.lang.String
+description=Te sientes como que los a\u00f1os se estan acumulando? Te quieres sentir como adolecente de Nuevo? Tu te vas a sentir como un nuevo joven una vez mas te montes en  este autom\u00d3vil.
+description_componentType=javax.faces.Output
+description_valueType=java.lang.String
diff --git a/jsf-demo/archive/carstore/src/java/carstore/bundles/Roadster_fr.properties b/jsf-demo/archive/carstore/src/java/carstore/bundles/Roadster_fr.properties
new file mode 100644
index 0000000..70919ad
--- /dev/null
+++ b/jsf-demo/archive/carstore/src/java/carstore/bundles/Roadster_fr.properties
@@ -0,0 +1,48 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 2005-2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
+title=La sportive de Duke
+
+title_componentType=javax.faces.Output
+title_valueType=java.lang.String
+description=On vieillit? On aimerait revivre cette jeunesse pass\u00e9e? Rajeunissez de 20 ans au volant de cette petite merveille.
+description_componentType=javax.faces.Output
+description_valueType=java.lang.String
+
diff --git a/jsf-demo/archive/carstore/src/java/carstore/bundles/Roadster_options.properties b/jsf-demo/archive/carstore/src/java/carstore/bundles/Roadster_options.properties
new file mode 100644
index 0000000..2eecbff
--- /dev/null
+++ b/jsf-demo/archive/carstore/src/java/carstore/bundles/Roadster_options.properties
@@ -0,0 +1,73 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 2005-2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
+# this file contains the non-localized set of options for the Roadster
+
+
+basePrice=15700
+basePrice_componentType=javax.faces.Output
+basePrice_valueType=java.lang.Integer
+currentPrice=15700
+currentPrice_componentType=javax.faces.Output
+currentPrice_valueType=java.lang.Integer
+image=/images/200x168_Roadster.jpg
+image_componentType=javax.faces.Graphic
+image_valueType=java.lang.String
+imageSmall=/images/150x126_Roadster.jpg
+imageSmall_componentType=javax.faces.Graphic
+imageSmall_valueType=java.lang.String
+brake=Disc,Drum
+brake_componentType=javax.faces.SelectOne
+brake_valueType=java.lang.String
+suspension=Performance,Regular
+suspension_componentType=javax.faces.SelectOne
+suspension_valueType=java.lang.String
+audio=Standard,Premium
+audio_componentType=javax.faces.SelectOne
+audio_valueType=java.lang.String
+transmission=Auto,Manual
+transmission_componentType=javax.faces.SelectOne
+transmission_valueType=java.lang.String
+engine=V4,V6,V8
+engine_componentType=javax.faces.SelectOne
+engine_valueType=java.lang.String
+speaker=4,6
+speaker_componentType=javax.faces.SelectOne
+speaker_valueType=java.lang.String
diff --git a/jsf-demo/archive/carstore/src/java/carstore/bundles/SUV.properties b/jsf-demo/archive/carstore/src/java/carstore/bundles/SUV.properties
new file mode 100644
index 0000000..c47c6d1
--- /dev/null
+++ b/jsf-demo/archive/carstore/src/java/carstore/bundles/SUV.properties
@@ -0,0 +1,49 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 2005-2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
+# this file contains the localized content for the SUV
+
+
+title=Duke's Bloated SUV
+title_componentType=javax.faces.Output
+title_valueType=java.lang.String
+description=Sometimes you can never be high enough or big enough compared to the car next to you. And those newborns come out bigger every time. Get the SUV that will hold everything and scare the begeezes out of everyone on the road.
+description_componentType=javax.faces.Output
+description_valueType=java.lang.String
diff --git a/jsf-demo/archive/carstore/src/java/carstore/bundles/SUV_de.properties b/jsf-demo/archive/carstore/src/java/carstore/bundles/SUV_de.properties
new file mode 100644
index 0000000..8cbeed4
--- /dev/null
+++ b/jsf-demo/archive/carstore/src/java/carstore/bundles/SUV_de.properties
@@ -0,0 +1,49 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 2005-2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
+# this file contains the localized content for the SUV
+
+title=Dukes aufgeblasener Gel\u00e4ndewagen
+title_componentType=javax.faces.Output
+title_valueType=java.lang.String
+description=Manchmal k\u00f6nnen Sie niemels hoch oder gro\u00df genug sein, verglichen mit dem Wagen neben Ihnen. Und diese Welpen kommen jedesmal gr\u00fc\u00dfer raus. Nehmen Sie diesen Gel\u00e4ndewagen, der allem standh\u00e4lt und jeden auf der Stra\u00dfe beeindruckt.
+description_componentType=javax.faces.Output
+description_valueType=java.lang.String
+
diff --git a/jsf-demo/archive/carstore/src/java/carstore/bundles/SUV_es.properties b/jsf-demo/archive/carstore/src/java/carstore/bundles/SUV_es.properties
new file mode 100644
index 0000000..24f72ce
--- /dev/null
+++ b/jsf-demo/archive/carstore/src/java/carstore/bundles/SUV_es.properties
@@ -0,0 +1,49 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 2005-2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
+# this file contains the localized content for the SUV
+
+title=El enorme carro SUV de Duke
+title_componentType=javax.faces.Output
+title_valueType=java.lang.String
+description=Hay muchas veces de que uno nunca puede tener un carro mas grande de que el carro ala par de uno. Compra el SUV mas grande para poder poner todas las cosas que quiras y asustar a todos que se aproximen a tu SUV.
+description_componentType=javax.faces.Output
+description_valueType=java.lang.String
+
diff --git a/jsf-demo/archive/carstore/src/java/carstore/bundles/SUV_fr.properties b/jsf-demo/archive/carstore/src/java/carstore/bundles/SUV_fr.properties
new file mode 100644
index 0000000..aa20f4b
--- /dev/null
+++ b/jsf-demo/archive/carstore/src/java/carstore/bundles/SUV_fr.properties
@@ -0,0 +1,49 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 2005-2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
+# this file contains the localized content for the SUV
+
+title=Le SUV de Duke
+title_componentType=javax.faces.Output
+title_valueType=java.lang.String
+description=Que ce soit en hauteur ou en grosseur, vous voulez surpasser toutes les voitures sur la route? Les rejetons grandissent trop vite? Vous devez vous procurer ce v\u00e9hicule utilitaire qui regorge d\u2019espace pour asseoir tout le monde confortablement en plus de demander le respect de quiconque s\u2019aventure sur la route avec vous.
+description_componentType=javax.faces.Output
+description_valueType=java.lang.String
+
diff --git a/jsf-demo/archive/carstore/src/java/carstore/bundles/SUV_options.properties b/jsf-demo/archive/carstore/src/java/carstore/bundles/SUV_options.properties
new file mode 100644
index 0000000..caa033d
--- /dev/null
+++ b/jsf-demo/archive/carstore/src/java/carstore/bundles/SUV_options.properties
@@ -0,0 +1,72 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 2005-2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
+# this file contains the non-localized set of options for the SUV
+
+basePrice=25000
+basePrice_componentType=javax.faces.Output
+basePrice_valueType=java.lang.Integer
+currentPrice=25000
+currentPrice_componentType=javax.faces.Output
+currentPrice_valueType=java.lang.Integer
+image=/images/200x168_SUV.jpg
+image_componentType=javax.faces.Graphic
+image_valueType=java.lang.String
+imageSmall=/images/150x126_SUV.jpg
+imageSmall_componentType=javax.faces.Graphic
+imageSmall_valueType=java.lang.String
+brake=Disc,Drum
+brake_componentType=javax.faces.SelectOne
+brake_valueType=java.lang.String
+suspension=Performance,Regular
+suspension_componentType=javax.faces.SelectOne
+suspension_valueType=java.lang.String
+audio=Standard,Premium
+audio_componentType=javax.faces.SelectOne
+audio_valueType=java.lang.String
+transmission=Auto,Manual
+transmission_componentType=javax.faces.SelectOne
+transmission_valueType=java.lang.String
+engine=V4,V6,V8
+engine_componentType=javax.faces.SelectOne
+engine_valueType=java.lang.String
+speaker=4,6
+speaker_componentType=javax.faces.SelectOne
+speaker_valueType=java.lang.String
diff --git a/jsf-demo/archive/carstore/src/java/carstore/bundles/Standard.properties b/jsf-demo/archive/carstore/src/java/carstore/bundles/Standard.properties
new file mode 100644
index 0000000..58874cf
--- /dev/null
+++ b/jsf-demo/archive/carstore/src/java/carstore/bundles/Standard.properties
@@ -0,0 +1,61 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 2005-2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
+sunroof=true
+sunroof_disabled=true
+cruisecontrol=true
+cruisecontrol_disabled=true
+keylessentry=true
+keylessentry_disabled=true
+securitySystem=false
+securitySystem_disabled=true
+skirack=true
+skirack_disabled=true
+towPackage=false
+towPackage_disabled=true
+gps=false
+gps_disabled=true
+
+engine=V4
+brake=Disc
+suspension=Regular
+speaker=4
+audio=Standard
+transmission=Auto
diff --git a/jsf-demo/archive/carstore/src/java/carstore/package.html b/jsf-demo/archive/carstore/src/java/carstore/package.html
new file mode 100644
index 0000000..58712ea
--- /dev/null
+++ b/jsf-demo/archive/carstore/src/java/carstore/package.html
@@ -0,0 +1,84 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2004-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+</head>
+
+<body bgcolor="white">
+
+<p>CarStore is a moderately complex demonstration of JavaServer Faces
+    technology. Please consult the tutorial for more detailed information
+    on the concepts required to build applications with JavaServer Faces
+    technology. Below we use whiteboard diagrams to illustrate the ease
+    with which a web application can be designed, and how that design can be
+    easily cast into a Faces application.</p>
+
+<h3>Page Flow</h3>
+
+<p>Here's a quick diagram of page flow through the application.</p>
+
+<p><img src="@context.path@/javadocs/flow.jpg"/></p>
+
+<p>Each box corresponds to a JSP page. The arrows correspond to the
+    <b>supported</b> flow from page to page, either with buttons in the
+    page, or with the browser navigation buttons.</p>
+
+<h3>Supporting Beans</h3>
+
+<p>We then overlay the beans required to back the JSP pages.</p>
+
+<p><img src="@context.path@/javadocs/beans.jpg"/></p>
+
+<p>See the JavaDocs for each bean to see what it does.</p>
+
+<h3>Back End Data</h3>
+
+<p>Finally, we add the back end data. In this simple application, the
+    data is read from <code>java.util.ResourceBundle</code> instances, but
+    it could just as well come from a database.</p>
+
+<p><img src="@context.path@/javadocs/data.jpg"/></p>
+
+</body>
+</html>
diff --git a/jsf-demo/archive/carstore/web/WEB-INF/carstore.tld b/jsf-demo/archive/carstore/web/WEB-INF/carstore.tld
new file mode 100644
index 0000000..a5724dc
--- /dev/null
+++ b/jsf-demo/archive/carstore/web/WEB-INF/carstore.tld
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<taglib xmlns="http://java.sun.com/xml/ns/javaee"
+        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd"
+        version="2.1">
+
+    <!-- ============== Tag Library Description Elements ============= -->
+    <description>
+        This tag library contains tags used by the CarStore application.
+    </description>
+    <tlib-version>1.2</tlib-version>
+    <short-name>cs</short-name>
+    <uri>https://javaserverfaces.dev.java.net/demo/carstore</uri>
+
+    <!-- ===================== ImageMap tags ====================== -->
+    <tag>
+        <description>
+            Defines the format-validator tag, with the
+            tag-handler class, carstore.FormatValidatorTag. This tag
+            must be nested inside a UI component tag. The value of the
+            UI component whose tag encloses the format_validator tag
+            is validated against the format patterns defined by the
+            formatPatterns attribute.
+        </description>
+        <name>format_validator</name>
+        <tag-class>carstore.FormatValidatorTag</tag-class>
+        <body-content>empty</body-content>
+        <attribute>
+            <description>
+                Defines the format patterns to use to validate the data of
+                the UI component, whose tag encloses the format_validator
+                tag.
+            </description>
+            <name>formatPatterns</name>
+            <required>true</required>
+            <deferred-value>
+                <type>java.lang.String</type>
+            </deferred-value>
+        </attribute>
+    </tag>
+</taglib>
diff --git a/jsf-demo/archive/carstore/web/WEB-INF/faces-config.xml b/jsf-demo/archive/carstore/web/WEB-INF/faces-config.xml
new file mode 100644
index 0000000..2ffb996
--- /dev/null
+++ b/jsf-demo/archive/carstore/web/WEB-INF/faces-config.xml
@@ -0,0 +1,374 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!-- =========== FULL CONFIGURATION FILE ================================== -->
+
+<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
+              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+              xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd"
+              version="1.2">
+
+    <application>
+        <message-bundle>carstore.bundles.Messages</message-bundle>
+        <locale-config>
+            <default-locale>en</default-locale>
+            <supported-locale>de</supported-locale>
+            <supported-locale>fr</supported-locale>
+            <supported-locale>es</supported-locale>
+        </locale-config>
+    </application>
+
+    <!-- Validator -->
+    <validator>
+        <description>
+            Registers the concrete Validator implementation,
+            carstore.FormatValidator with the validator
+            identifier, FormatValidator.
+        </description>
+        <validator-id>FormatValidator</validator-id>
+        <validator-class>carstore.FormatValidator</validator-class>
+        <attribute>
+            <description>
+                List of format patterns separated by '|'. The validator
+                compares these patterns against the data entered in a
+                component that has this validator registered on it.
+            </description>
+            <attribute-name>formatPatterns</attribute-name>
+            <attribute-class>java.lang.String</attribute-class>
+        </attribute>
+    </validator>
+
+    <!-- converter -->
+    <converter>
+        <description>
+            Registers the concrete Converter implementation,
+            carstore.CreditCardConverter using the ID,
+            creditCardConverter.
+        </description>
+        <converter-id>creditCardConverter</converter-id>
+        <converter-class>carstore.CreditCardConverter</converter-class>
+    </converter>
+
+    <!-- =================== Initialize Image Map Hotspot Data ============== -->
+
+    <managed-bean>
+        <description>
+            Causes the default VariableResolver implementation to instantiate
+            the
+            managed bean, NA of the class, ImageArea in application
+            scope if the bean does not already exist in any scope and initialize
+            the
+            shape, alt, and coords properties with the values specified by the
+            managed-property elements.
+        </description>
+        <managed-bean-name>NA</managed-bean-name>
+        <managed-bean-class>
+            com.sun.javaee.blueprints.components.ui.model.ImageArea
+        </managed-bean-class>
+        <managed-bean-scope>application</managed-bean-scope>
+        <managed-property>
+            <description>
+                Initializes the shape property of the managed bean, NA with the
+                value,
+                poly.
+            </description>
+            <property-name>shape</property-name>
+            <value>poly</value>
+        </managed-property>
+        <managed-property>
+            <description>
+                Initializes the alt property of the managed bean, NA with the
+                value,
+                NAmerica.
+            </description>
+            <property-name>alt</property-name>
+            <value>NAmerica</value>
+        </managed-property>
+        <managed-property>
+            <description>
+                Initializes the coords property of the managed bean, NA with the
+                value
+                specified by the value element.
+            </description>
+            <property-name>coords</property-name>
+            <value>
+                53,109,1,110,2,167,19,168,52,149,67,164,67,165,68,167,70,168,72,170,74,172,75,174,77,175,79,177,81,179,80,179,77,179,81,179,81,178,80,178,82,211,28,238,15,233,15,242,31,252,36,247,36,246,32,239,89,209,92,216,93,216,100,216,103,218,113,217,116,224,124,221,128,230,163,234,185,189,178,177,162,188,143,173,79,173,73,163,79,157,64,142,54,139,53,109
+            </value>
+        </managed-property>
+    </managed-bean>
+
+    <managed-bean>
+        <description>
+            Causes the default VariableResolver implementation to instantiate
+            the
+            managed bean, SA of the class, ImageArea in application
+            scope if the bean does not already exist in any scope and initialize
+            the
+            shape, alt, and coords properties with the values specified by the
+            managed-property elements.
+        </description>
+        <managed-bean-name>SA</managed-bean-name>
+        <managed-bean-class>
+            com.sun.javaee.blueprints.components.ui.model.ImageArea
+        </managed-bean-class>
+        <managed-bean-scope>application</managed-bean-scope>
+        <managed-property>
+            <description>
+                Initializes the shape property of the managed bean, SA with the
+                value,
+                poly.
+            </description>
+            <property-name>shape</property-name>
+            <value>poly</value>
+        </managed-property>
+        <managed-property>
+            <description>
+                Initializes the alt property of the managed bean, SA with the
+                value,
+                SAmerica.
+            </description>
+            <property-name>alt</property-name>
+            <value>SAmerica</value>
+        </managed-property>
+        <managed-property>
+            <description>
+                Initializes the coords property of the managed bean, SA with the
+                value
+                specified by the value element.
+            </description>
+            <property-name>coords</property-name>
+            <value>
+                89,217,95,228,100,234,107,239,109,240,109,237,106,231,110,234,113,240,115,246,118,250,125,254,131,256,135,255,140,257,146,263,151,269,157,271,160,273,159,279,157,287,156,294,163,315,168,324,172,329,173,338,172,351,169,368,168,379,167,388,165,399,165,408,170,415,177,420,183,420,183,415,180,408,180,405,186,400,186,395,186,391,188,388,190,384,193,382,196,379,199,377,201,374,201,371,201,366,197,362,197,358,198,354,199,351,199,347,197,344,196,340,194,337,191,335,191,332,194,33 [...]
+            </value>
+        </managed-property>
+    </managed-bean>
+
+    <managed-bean>
+        <description>
+            Causes the default VariableResolver implementation to instantiate
+            the
+            managed bean, gerA of the class, ImageArea in application
+            scope if the bean does not already exist in any scope and initialize
+            the
+            shape, alt, and coords properties with the values specified by the
+            managed-property elements.
+        </description>
+        <managed-bean-name>gerA</managed-bean-name>
+        <managed-bean-class>
+            com.sun.javaee.blueprints.components.ui.model.ImageArea
+        </managed-bean-class>
+        <managed-bean-scope>application</managed-bean-scope>
+        <managed-property>
+            <description>
+                Initializes the shape property of the managed bean, gerA with
+                the value
+                poly.
+            </description>
+            <property-name>shape</property-name>
+            <value>poly</value>
+        </managed-property>
+        <managed-property>
+            <description>
+                Initializes the alt property of the managed bean, gerA with the
+                value
+                Germany.
+            </description>
+            <property-name>alt</property-name>
+            <value>Germany</value>
+        </managed-property>
+        <managed-property>
+            <description>
+                Initializes the coords property of the managed bean, gerA with
+                the value
+                specified by the value element.
+            </description>
+            <property-name>coords</property-name>
+            <value>
+                324,163,323,170,322,172,320,173,320,175,321,176,321,177,321,179,321,180,319,180,318,180,317,182,316,183,315,181,314,181,313,181,312,181,311,180,310,177,310,177,307,176,307,173,307,172,308,170,309,169,309,167,309,166,311,165,311,163,311,161,312,159,314,159,316,160,316,162,318,162,319,162
+            </value>
+        </managed-property>
+    </managed-bean>
+
+    <managed-bean>
+        <description>
+            Causes the default VariableResolver implementation to instantiate
+            the
+            managed bean, fraA of the class, ImageArea in application
+            scope if the bean does not already exist in any scope and initialize
+            the
+            shape, alt, and coords properties with the values specified by the
+            managed-property elements.
+        </description>
+        <managed-bean-name>fraA</managed-bean-name>
+        <managed-bean-class>
+            com.sun.javaee.blueprints.components.ui.model.ImageArea
+        </managed-bean-class>
+        <managed-bean-scope>application</managed-bean-scope>
+        <managed-property>
+            <description>
+                Initializes the shape property of the managed bean, fraA with
+                the value
+                shape.
+            </description>
+            <property-name>shape</property-name>
+            <value>poly</value>
+        </managed-property>
+        <managed-property>
+            <description>
+                Initializes the alt property of the managed bean, fraA with the
+                value
+                France.
+            </description>
+            <property-name>alt</property-name>
+            <value>France</value>
+        </managed-property>
+        <managed-property>
+            <description>
+                Initializes the coords property of the managed bean, fraA with
+                the value
+                specified by the value element.
+            </description>
+            <property-name>coords</property-name>
+            <value>
+                312,178,308,182,310,184,310,187,310,189,309,191,307,192,305,192,304,192,304,193,303,195,302,195,300,194,299,194,297,194,295,193,295,191,295,189,294,186,293,184,292,182,291,181,289,180,288,178,288,176,289,175,292,175,293,176,294,174,296,174,297,174,299,174,299,172,300,170,302,170,304,172,306,173,308,173,310,174
+            </value>
+        </managed-property>
+    </managed-bean>
+
+    <!-- =================== Business Logic Beans ============== -->
+
+    <managed-bean>
+        <description>
+            Causes the default VariableResolver implementation to instantiate
+            the managed bean, CustomerBean of the class, carstore.CustomerBean
+            in session scope if the bean does not already exist in any scope.
+        </description>
+        <managed-bean-name>customer</managed-bean-name>
+        <managed-bean-class>carstore.CustomerBean</managed-bean-class>
+        <managed-bean-scope>session</managed-bean-scope>
+    </managed-bean>
+
+    <managed-bean>
+        <description>
+            The main backing file mean
+        </description>
+        <managed-bean-name>carstore</managed-bean-name>
+        <managed-bean-class>carstore.CarStore</managed-bean-class>
+        <managed-bean-scope>session</managed-bean-scope>
+    </managed-bean>
+
+    <navigation-rule>
+        <from-view-id>/chooseLocale.jsp</from-view-id>
+        <navigation-case>
+            <description>
+                Any action on chooseLocale should cause navigation to
+                storeFront.jsp
+            </description>
+            <from-outcome>storeFront</from-outcome>
+            <to-view-id>/storeFront.jsp</to-view-id>
+        </navigation-case>
+    </navigation-rule>
+
+    <navigation-rule>
+        <from-view-id>/storeFront.jsp</from-view-id>
+        <navigation-case>
+            <description>
+                Any action that returns "carDetail" on storeFront.jsp should
+                cause navigation to carDetail.jsp
+            </description>
+            <from-outcome>carDetail</from-outcome>
+            <to-view-id>/carDetail.jsp</to-view-id>
+        </navigation-case>
+    </navigation-rule>
+
+    <navigation-rule>
+        <from-view-id>/carDetail.jsp</from-view-id>
+        <navigation-case>
+            <description>
+                Any action that returns "confirmChoices" on carDetail.jsp should
+                cause navigation to confirmChoices.jsp
+            </description>
+            <from-outcome>confirmChoices</from-outcome>
+            <to-view-id>/confirmChoices.jsp</to-view-id>
+        </navigation-case>
+    </navigation-rule>
+
+    <navigation-rule>
+        <from-view-id>/confirmChoices.jsp</from-view-id>
+        <navigation-case>
+            <description>
+                Any action that returns "carDetail" on confirmChoices.jsp should
+                cause navigation to carDetail.jsp
+            </description>
+            <from-outcome>carDetail</from-outcome>
+            <to-view-id>/carDetail.jsp</to-view-id>
+        </navigation-case>
+    </navigation-rule>
+
+    <navigation-rule>
+        <from-view-id>/confirmChoices.jsp</from-view-id>
+        <navigation-case>
+            <description>
+                Any action that returns "customerInfo" on confirmChoices.jsp
+                should
+                cause navigation to customerInfo.jsp
+            </description>
+            <from-outcome>customerInfo</from-outcome>
+            <to-view-id>/customerInfo.jsp</to-view-id>
+        </navigation-case>
+    </navigation-rule>
+
+    <navigation-rule>
+        <from-view-id>/customerInfo.jsp</from-view-id>
+        <navigation-case>
+            <description>
+                Any action that returns "finish" on customerInfo.jsp should
+                cause navigation to finish.jsp
+            </description>
+            <from-outcome>finish</from-outcome>
+            <to-view-id>/finish.jsp</to-view-id>
+        </navigation-case>
+    </navigation-rule>
+
+
+</faces-config>
diff --git a/jsf-demo/archive/carstore/web/WEB-INF/web.xml b/jsf-demo/archive/carstore/web/WEB-INF/web.xml
new file mode 100644
index 0000000..c142a86
--- /dev/null
+++ b/jsf-demo/archive/carstore/web/WEB-INF/web.xml
@@ -0,0 +1,146 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<web-app version="2.5"
+         xmlns="http://java.sun.com/xml/ns/javaee"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
+
+    <display-name>Car Store</display-name>
+    <description>Buy a car.</description>
+
+    <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.externalizeJavaScript</param-name>
+        <param-value>true</param-value>
+    </context-param>
+
+    <context-param>
+        <description>
+            Set this flag to true if you want the JavaServer Faces
+            Reference Implementation to validate the XML in your
+            faces-config.xml resources against the DTD. Default
+            value is false.
+        </description>
+        <param-name>com.sun.faces.validateXml</param-name>
+        <param-value>true</param-value>
+    </context-param>
+
+    <!--
+         PENDING: set to false because demo-components.jar has
+         components that can only be created in the context of
+         a current request.
+    -->
+    <context-param>
+        <description>
+            Set this flag to true if you want the JavaServer Faces
+            Reference Implementation to verify that all of the application
+            objects you have configured (components, converters,
+            renderers, and validators) can be successfully created.
+            Default value is false.
+        </description>
+        <param-name>com.sun.faces.verifyObjects</param-name>
+        <param-value>false</param-value>
+    </context-param>
+
+    <!-- Faces Servlet -->
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+
+
+    <!-- Faces Servlet Mapping -->
+    <!-- 
+
+         This mapping identifies a jsp page as having JSF content.  If a
+         request comes to the server for foo.faces, the container will
+         send the request to the FacesServlet, which will expect a
+         corresponding foo.jsp page to exist containing the content.
+
+    -->
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>*.faces</url-pattern>
+    </servlet-mapping>
+
+    <security-constraint>
+        <!-- This security constraint illustrates how JSP pages 
+             with JavaServer Faces components can be protected from
+             being accessed without going through the Faces Servlet.
+             The security constraint ensures that the Faces Servlet will
+             be used or the pages will not be processed. -->
+        <display-name>Restrict access to JSP pages</display-name>
+        <web-resource-collection>
+            <web-resource-name>
+                Restrict access to JSP pages
+            </web-resource-name>
+            <url-pattern>/bottomMatter.jsp</url-pattern>
+            <url-pattern>/carDetail.jsp</url-pattern>
+            <url-pattern>/chooseLocale.jsp</url-pattern>
+            <url-pattern>/confirmChoices.jsp</url-pattern>
+            <url-pattern>/customerInfo.jsp</url-pattern>
+            <url-pattern>/finish.jsp</url-pattern>
+            <url-pattern>/optionsPanel.jsp</url-pattern>
+            <url-pattern>/storeFront.jsp</url-pattern>
+        </web-resource-collection>
+        <auth-constraint>
+            <description>
+                With no roles defined, no access granted
+            </description>
+        </auth-constraint>
+    </security-constraint>
+
+    <!-- Enable encryption for client side state saving -->
+    <env-entry>
+        <env-entry-name>com.sun.faces.ClientStateSavingPassword</env-entry-name>
+        <env-entry-type>java.lang.String</env-entry-type>
+        <env-entry-value>password</env-entry-value>
+    </env-entry>
+
+</web-app>
diff --git a/jsf-demo/archive/carstore/web/bottomMatter.jsp b/jsf-demo/archive/carstore/web/bottomMatter.jsp
new file mode 100644
index 0000000..bc59d35
--- /dev/null
+++ b/jsf-demo/archive/carstore/web/bottomMatter.jsp
@@ -0,0 +1,51 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<%@ page contentType="text/html" language="java" %>
+<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
+<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %>
+
+
+<h:outputLink value="javadocs">
+    Documentation for this demo
+</h:outputLink>
+
diff --git a/jsf-demo/archive/carstore/web/carDetail.jsp b/jsf-demo/archive/carstore/web/carDetail.jsp
new file mode 100644
index 0000000..4fc2ead
--- /dev/null
+++ b/jsf-demo/archive/carstore/web/carDetail.jsp
@@ -0,0 +1,119 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
+
+
+<html>
+
+<head>
+    <meta http-equiv="Content-Type" content="text/html;CHARSET=iso-8859-1">
+    <title>CarStore</title>
+    <link rel="stylesheet" type="text/css"
+          href="${pageContext.request.contextPath}/stylesheet.css">
+</head>
+
+<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
+<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+
+<f:loadBundle basename="carstore.bundles.Resources" var="bundle"/>
+
+<body bgcolor="white">
+
+<f:view>
+
+    <h:form>
+
+
+        <!-- non-option details -->
+
+        <h:panelGrid columns="1"
+                     summary="#{bundle.carDetails}"
+                     title="#{bundle.carDetails}">
+
+            <h:graphicImage url="/images/cardemo.jpg"/>
+
+            <h:graphicImage
+                    binding="#{carstore.currentModel.components.image}"/>
+
+            <h:outputText styleClass="subtitlebig"
+                          binding="#{carstore.currentModel.components.title}"/>
+
+            <h:outputText
+                    binding="#{carstore.currentModel.components.description}"/>
+
+            <h:panelGrid columns="2">
+
+                <h:outputText styleClass="subtitle"
+                              value="#{bundle.basePriceLabel}"/>
+
+                <h:outputText
+                        binding="#{carstore.currentModel.components.basePrice}"/>
+
+                <h:outputText styleClass="subtitle"
+                              value="#{bundle.yourPriceLabel}"/>
+
+                <h:outputText value="#{carstore.currentModel.currentPrice}"/>
+
+            </h:panelGrid>
+
+            <h:commandButton action="#{carstore.buyCurrentCar}"
+                             value="#{bundle.buy}"/>
+
+        </h:panelGrid>
+
+        <jsp:include page="optionsPanel.jsp"/>
+
+        <h:commandButton value="#{bundle.recalculate}"
+                         action="#{carstore.currentModel.updatePricing}"/>
+
+        <h:commandButton action="#{carstore.buyCurrentCar}"
+                         value="#{bundle.buy}"/>
+
+    </h:form>
+
+    <jsp:include page="bottomMatter.jsp"/>
+
+</f:view>
+</body>
+
+</html>
diff --git a/jsf-demo/archive/carstore/web/chooseLocale.jsp b/jsf-demo/archive/carstore/web/chooseLocale.jsp
new file mode 100644
index 0000000..6709bbc
--- /dev/null
+++ b/jsf-demo/archive/carstore/web/chooseLocale.jsp
@@ -0,0 +1,186 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
+
+<html>
+<head>
+    <title>CarStore</title>
+    <link rel="stylesheet" type="text/css"
+          href="${pageContext.request.contextPath}/stylesheet.css">
+</head>
+
+<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
+<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+<%@ taglib uri="http://java.sun.com/blueprints/ee5/components/ui" prefix="d" %>
+
+<f:loadBundle basename="carstore.bundles.Resources" var="bundle"/>
+
+<f:view>
+<h:form>
+
+    <h:panelGrid columns="1"
+                 footerClass="form-footer"
+                 headerClass="form-header"
+                 styleClass="main-background"
+                 columnClasses="single-column"
+                 summary="#{bundle.chooseLocale}"
+                 title="#{bundle.chooseLocale}">
+
+        <h:graphicImage url="/images/cardemo.jpg"/>
+
+        <h:outputText styleClass="maintitle"
+                      value="#{bundle.chooseLocale}"/>
+
+        <h:graphicImage id="mapImage" url="/images/world.jpg"
+                        alt="#{bundle.chooseLocale}"
+                        usemap="#worldMap"/>
+
+        <d:map id="worldMap" current="NAmericas" immediate="true"
+               action="storeFront"
+               actionListener="#{carstore.chooseLocaleFromMap}">
+            <d:area id="NAmerica" value="#{NA}"
+                    onmouseover="/images/world_namer.jpg"
+                    onmouseout="/images/world.jpg"
+                    targetImage="mapImage"/>
+            <d:area id="SAmerica" value="#{SA}"
+                    onmouseover="/images/world_samer.jpg"
+                    onmouseout="/images/world.jpg"
+                    targetImage="mapImage"/>
+            <d:area id="Germany" value="#{gerA}"
+                    onmouseover="/images/world_germany.jpg"
+                    onmouseout="/images/world.jpg"
+                    targetImage="mapImage"/>
+            <d:area id="France" value="#{fraA}"
+                    onmouseover="/images/world_france.jpg"
+                    onmouseout="/images/world.jpg"
+                    targetImage="mapImage"/>
+        </d:map>
+
+    </h:panelGrid>
+
+</h:form>
+
+<h:form>
+
+    <!-- For non graphical browsers -->
+
+    <p>Example of <code>commandLink</code></p>
+
+    <h:panelGrid id="links" columns="4"
+                 summary="#{bundle.chooseLocale}"
+                 title="#{bundle.chooseLocale}">
+
+        <h:commandLink id="NAmerica" action="storeFront"
+                       actionListener="#{carstore.chooseLocaleFromLink}">
+
+            <h:outputText value="#{bundle.english}"/>
+
+        </h:commandLink>
+
+        <h:commandLink id="Germany" action="storeFront"
+                       actionListener="#{carstore.chooseLocaleFromLink}">
+
+            <h:outputText value="#{bundle.german}"/>
+
+        </h:commandLink>
+
+        <h:commandLink id="France" action="storeFront"
+                       actionListener="#{carstore.chooseLocaleFromLink}">
+
+            <h:outputText value="#{bundle.french}"/>
+
+        </h:commandLink>
+
+        <h:commandLink id="SAmerica" action="storeFront"
+                       actionListener="#{carstore.chooseLocaleFromLink}">
+
+            <h:outputText value="#{bundle.spanish}"/>
+
+        </h:commandLink>
+
+    </h:panelGrid>
+
+</h:form>
+
+<h:form>
+
+    <p>Example of <code>commandButton</code></p>
+
+    <h:panelGrid id="buttons" columns="4"
+                 summary="#{bundle.chooseLocale}"
+                 title="#{bundle.chooseLocale}">
+
+        <h:commandButton id="NAmerica" action="storeFront"
+                         value="#{bundle.english}"
+                         actionListener="#{carstore.chooseLocaleFromLink}">
+
+        </h:commandButton>
+
+        <h:commandButton id="Germany" action="storeFront"
+                         value="#{bundle.german}"
+                         actionListener="#{carstore.chooseLocaleFromLink}">
+
+        </h:commandButton>
+
+        <h:commandButton id="France" action="storeFront"
+                         value="#{bundle.french}"
+                         actionListener="#{carstore.chooseLocaleFromLink}">
+
+        </h:commandButton>
+
+        <h:commandButton id="SAmerica" action="storeFront"
+                         value="#{bundle.spanish}"
+                         actionListener="#{carstore.chooseLocaleFromLink}">
+
+        </h:commandButton>
+
+    </h:panelGrid>
+
+
+</h:form>
+
+<jsp:include page="bottomMatter.jsp"/>
+
+</f:view>
+
+</html>
diff --git a/jsf-demo/archive/carstore/web/confirmChoices.jsp b/jsf-demo/archive/carstore/web/confirmChoices.jsp
new file mode 100644
index 0000000..01cb2c1
--- /dev/null
+++ b/jsf-demo/archive/carstore/web/confirmChoices.jsp
@@ -0,0 +1,165 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
+
+<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
+<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+
+<html>
+
+<head>
+    <title>Welcome to CarStore</title>
+    <link rel="stylesheet" type="text/css"
+          href="${pageContext.request.contextPath}/stylesheet.css">
+</head>
+
+<body bgcolor="white">
+
+<f:loadBundle basename="carstore.bundles.Resources" var="bundle"/>
+<f:view>
+<h:form>
+
+    <h:panelGrid id="mainPanel" columns="1" footerClass="subtitle"
+                 styleClass="medium" columnClasses="medium">
+
+        <h:graphicImage url="/images/cardemo.jpg"/>
+        <h:outputText binding="#{carstore.currentModel.components.title}"/>
+
+        <h:panelGrid columns="2" footerClass="subtitle"
+                     headerClass="subtitlebig" styleClass="medium"
+                     columnClasses="subtitle,medium">
+
+            <f:facet name="header">
+                <h:outputText value="#{bundle.buyTitle}"/>
+            </f:facet>
+
+            <h:outputText value="#{bundle.Engine}"/>
+
+            <h:outputText
+                    value="#{carstore.currentModel.attributes.engine}"/>
+
+            <h:outputText value="#{bundle.Brakes}"/>
+
+            <h:outputText
+                    value="#{carstore.currentModel.attributes.brake}"/>
+
+            <h:outputText value="#{bundle.Suspension}"/>
+
+            <h:outputText
+                    value="#{carstore.currentModel.attributes.suspension}"/>
+
+            <h:outputText value="#{bundle.Speakers}"/>
+
+            <h:outputText
+                    value="#{carstore.currentModel.attributes.speaker}"/>
+
+            <h:outputText value="#{bundle.Audio}"/>
+
+            <h:outputText
+                    value="#{carstore.currentModel.attributes.audio}"/>
+
+            <h:outputText value="#{bundle.Transmission}"/>
+
+            <h:outputText
+                    value="#{carstore.currentModel.attributes.transmission}"/>
+
+            <h:outputText value="#{bundle.sunroofLabel}"/>
+
+            <h:outputText
+                    value="#{carstore.currentModel.attributes.sunroof}"/>
+
+            <h:outputText value="#{bundle.cruiseLabel}"/>
+
+            <h:outputText
+                    value="#{carstore.currentModel.attributes.cruisecontrol}"/>
+
+            <h:outputText value="#{bundle.keylessLabel}"/>
+
+            <h:outputText
+                    value="#{carstore.currentModel.attributes.keylessentry}"/>
+
+            <h:outputText value="#{bundle.securityLabel}"/>
+
+            <h:outputText
+                    value="#{carstore.currentModel.attributes.securitySystem}"/>
+
+            <h:outputText value="#{bundle.skiRackLabel}"/>
+
+            <h:outputText
+                    value="#{carstore.currentModel.attributes.skiRack}"/>
+
+            <h:outputText value="#{bundle.towPkgLabel}"/>
+
+            <h:outputText
+                    value="#{carstore.currentModel.attributes.towPackage}"/>
+
+            <h:outputText value="#{bundle.gpsLabel}"/>
+
+            <h:outputText value="#{carstore.currentModel.attributes.gps}"/>
+
+            <f:facet name="footer">
+                <h:panelGroup>
+                    <h:outputText value="#{bundle.yourPriceLabel}"/>
+                     
+                    <h:outputText
+                            value="#{carstore.currentModel.currentPrice}"/>
+                </h:panelGroup>
+            </f:facet>
+
+        </h:panelGrid>
+
+        <h:panelGroup>
+            <h:commandButton value="#{bundle.buy}" action="customerInfo"
+                             title="#{bundle.buy}"/>
+            <h:commandButton value="#{bundle.back}" action="carDetail"
+                             title="#{bundle.back}"/>
+        </h:panelGroup>
+
+    </h:panelGrid>
+</h:form>
+<jsp:include page="bottomMatter.jsp"/>
+</f:view>
+
+</body>
+</html>
+
diff --git a/jsf-demo/archive/carstore/web/customerInfo.jsp b/jsf-demo/archive/carstore/web/customerInfo.jsp
new file mode 100644
index 0000000..8426a11
--- /dev/null
+++ b/jsf-demo/archive/carstore/web/customerInfo.jsp
@@ -0,0 +1,226 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
+
+<html>
+<head>
+    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+    <title>Customer Details</title>
+    <link rel="stylesheet" type="text/css"
+          href="${pageContext.request.contextPath}/stylesheet.css">
+
+    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
+    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+    <%@ taglib uri="https://javaserverfaces.dev.java.net/demo/carstore"
+               prefix="cs" %>
+</head>
+
+<body>
+
+<f:loadBundle basename="carstore.bundles.Resources" var="bundle"/>
+
+<f:view>
+<h:form>
+
+<h:panelGrid id="mainPanel" columns="1" footerClass="subtitle"
+             headerClass="subtitlebig" styleClass="medium"
+             columnClasses="medium">
+
+<h:graphicImage url="/images/cardemo.jpg"/>
+
+<h:outputText value="#{bundle.customerTitle}"/>
+
+<h:panelGrid id="subPanel" columns="3" footerClass="medium"
+             headerClass="subtitlebig" styleClass="medium"
+             columnClasses="medium">
+
+<h:outputText value="#{bundle.titleLabel}"/>
+<h:selectOneMenu id="title" value="#{customer.currentTitle}">
+    <f:selectItems value="#{customer.titleOptions}"/>
+</h:selectOneMenu>
+<h:outputText value=""/>
+
+<h:outputText value="#{bundle.firstLabel}"/>
+<h:inputText id="firstName" value="#{customer.firstName}" required="true">
+    <f:valueChangeListener type="carstore.FirstNameChanged"/>
+</h:inputText>
+<h:message styleClass="validationMessage" for="firstName"/>
+
+<h:outputText value="#{bundle.middleLabel}"/>
+<h:inputText id="middleInitial" size="1" maxlength="1"
+             value="#{customer.middleInitial}">
+</h:inputText>
+<h:message styleClass="validationMessage" for="middleInitial"/>
+
+<h:outputText value="#{bundle.lastLabel}"/>
+<h:inputText value="#{customer.lastName}"/>
+<h:outputText value=""/>
+
+<h:outputText value="#{bundle.mailingLabel}"/>
+<h:inputText value="#{customer.mailingAddress}"/>
+<h:outputText value=""/>
+
+<h:outputText value="#{bundle.cityLabel}"/>
+<h:inputText value="#{customer.city}"/>
+<h:outputText value=""/>
+
+<h:outputText value="#{bundle.stateLabel}"/>
+<h:selectOneMenu value="#{customer.state}">
+
+    <f:selectItem itemValue="AL" itemLabel="AL"/>
+    <f:selectItem itemValue="AK" itemLabel="AK"/>
+    <f:selectItem itemValue="AZ" itemLabel="AZ"/>
+    <f:selectItem itemValue="AR" itemLabel="AR"/>
+    <f:selectItem itemValue="CA" itemLabel="CA"/>
+    <f:selectItem itemValue="CO" itemLabel="CO"/>
+    <f:selectItem itemValue="CT" itemLabel="CT"/>
+    <f:selectItem itemValue="DE" itemLabel="DE"/>
+    <f:selectItem itemValue="FL" itemLabel="FL"/>
+    <f:selectItem itemValue="GA" itemLabel="GA"/>
+
+    <f:selectItem itemValue="HI" itemLabel="HI"/>
+    <f:selectItem itemValue="ID" itemLabel="ID"/>
+    <f:selectItem itemValue="IL" itemLabel="IL"/>
+    <f:selectItem itemValue="IN" itemLabel="IN"/>
+    <f:selectItem itemValue="IA" itemLabel="IA"/>
+    <f:selectItem itemValue="KS" itemLabel="KS"/>
+    <f:selectItem itemValue="KY" itemLabel="KY"/>
+    <f:selectItem itemValue="LA" itemLabel="LA"/>
+    <f:selectItem itemValue="ME" itemLabel="ME"/>
+    <f:selectItem itemValue="MD" itemLabel="MD"/>
+
+    <f:selectItem itemValue="MA" itemLabel="MA"/>
+    <f:selectItem itemValue="MI" itemLabel="MI"/>
+    <f:selectItem itemValue="MN" itemLabel="MN"/>
+    <f:selectItem itemValue="MO" itemLabel="MO"/>
+    <f:selectItem itemValue="MT" itemLabel="MT"/>
+    <f:selectItem itemValue="NE" itemLabel="NE"/>
+    <f:selectItem itemValue="NV" itemLabel="NV"/>
+    <f:selectItem itemValue="NH" itemLabel="NH"/>
+    <f:selectItem itemValue="NJ" itemLabel="NJ"/>
+    <f:selectItem itemValue="NM" itemLabel="NM"/>
+
+    <f:selectItem itemValue="MY" itemLabel="MY"/>
+    <f:selectItem itemValue="NC" itemLabel="NC"/>
+    <f:selectItem itemValue="ND" itemLabel="ND"/>
+    <f:selectItem itemValue="OH" itemLabel="OH"/>
+    <f:selectItem itemValue="OK" itemLabel="OK"/>
+    <f:selectItem itemValue="OR" itemLabel="OR"/>
+    <f:selectItem itemValue="PA" itemLabel="PA"/>
+    <f:selectItem itemValue="RI" itemLabel="RI"/>
+    <f:selectItem itemValue="SC" itemLabel="SC"/>
+    <f:selectItem itemValue="SD" itemLabel="SD"/>
+
+    <f:selectItem itemValue="TN" itemLabel="TN"/>
+    <f:selectItem itemValue="TX" itemLabel="TX"/>
+    <f:selectItem itemValue="UT" itemLabel="UT"/>
+    <f:selectItem itemValue="VT" itemLabel="VT"/>
+    <f:selectItem itemValue="VA" itemLabel="VA"/>
+    <f:selectItem itemValue="WA" itemLabel="WA"/>
+    <f:selectItem itemValue="WV" itemLabel="WV"/>
+    <f:selectItem itemValue="WI" itemLabel="WI"/>
+    <f:selectItem itemValue="WY" itemLabel="WY"/>
+</h:selectOneMenu>
+<h:outputText value=""/>
+
+<h:outputText value="#{bundle.zipLabel}"/>
+<h:inputText id="zip"
+             value="#{customer.zip}"
+             size="10" required="true">
+    <cs:format_validator formatPatterns="99999|99999-9999|### ###"/>
+</h:inputText>
+<h:message styleClass="validationMessage" for="zip"/>
+
+<h:outputText value="#{bundle.ccNumberLabel}"/>
+<h:inputText id="ccno" size="16"
+             converter="creditCardConverter" required="true">
+    <cs:format_validator
+            formatPatterns="9999999999999999|9999 9999 9999 9999|9999-9999-9999-9999"/>
+</h:inputText>
+<h:message styleClass="validationMessage" for="ccno"/>
+
+<h:outputText value="#{bundle.monthLabel}"/>
+<h:panelGrid id="monthYearPanel" columns="2" footerClass="medium"
+             headerClass="medium" styleClass="medium" columnClasses="medium">
+    <h:selectOneMenu value="#{customer.month}">
+        <f:selectItem itemValue="01" itemLabel="01"/>
+        <f:selectItem itemValue="02" itemLabel="02"/>
+        <f:selectItem itemValue="03" itemLabel="03"/>
+        <f:selectItem itemValue="04" itemLabel="04"/>
+        <f:selectItem itemValue="05" itemLabel="05"/>
+        <f:selectItem itemValue="06" itemLabel="06"/>
+        <f:selectItem itemValue="07" itemLabel="07"/>
+        <f:selectItem itemValue="08" itemLabel="08"/>
+        <f:selectItem itemValue="09" itemLabel="09"/>
+        <f:selectItem itemValue="10" itemLabel="10"/>
+        <f:selectItem itemValue="11" itemLabel="11"/>
+        <f:selectItem itemValue="12" itemLabel="12"/>
+    </h:selectOneMenu>
+
+    <h:selectOneMenu value="#{customer.year}">
+        <f:selectItem itemValue="2002" itemLabel="2002"/>
+        <f:selectItem itemValue="2003" itemLabel="2003"/>
+        <f:selectItem itemValue="2004" itemLabel="2004"/>
+        <f:selectItem itemValue="2005" itemLabel="2005"/>
+        <f:selectItem itemValue="2006" itemLabel="2006"/>
+        <f:selectItem itemValue="2007" itemLabel="2007"/>
+        <f:selectItem itemValue="2008" itemLabel="2008"/>
+    </h:selectOneMenu>
+</h:panelGrid>
+<h:outputText value=""/>
+
+</h:panelGrid>
+
+<h:commandButton value="#{bundle.finishButton}" action="finish"/>
+
+<h:graphicImage id="duke" url="/images/duke.gif"/>
+
+<h:outputText value="#{bundle.buyLabel}"/>
+
+</h:panelGrid>
+
+</h:form>
+</f:view>
+</body>
+</html>
+
diff --git a/jsf-demo/archive/carstore/web/finish.jsp b/jsf-demo/archive/carstore/web/finish.jsp
new file mode 100644
index 0000000..598fc23
--- /dev/null
+++ b/jsf-demo/archive/carstore/web/finish.jsp
@@ -0,0 +1,76 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
+
+<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
+<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+
+<html>
+
+<head>
+    <title>Welcome to CarStore</title>
+    <link rel="stylesheet" type="text/css"
+          href="${pageContext.request.contextPath}/stylesheet.css">
+</head>
+
+<body bgcolor="white">
+<f:loadBundle basename="carstore.bundles.Resources" var="bundle"/>
+<f:view>
+    <h:form>
+        <h:graphicImage url="/images/cardemo.jpg"/>
+
+        <h:panelGrid id="thanksPanel" columns="1" footerClass="subtitle"
+                     headerClass="subtitlebig" styleClass="medium"
+                     columnClasses="subtitle,medium">
+            <f:facet name="header">
+                <h:outputFormat title="thanks" value="#{bundle.thanksLabel}">
+                    <f:param value="#{sessionScope.firstName}"/>
+                </h:outputFormat>
+            </f:facet>
+        </h:panelGrid>
+
+    </h:form>
+    <jsp:include page="bottomMatter.jsp"/>
+</f:view>
+</body>
+</html>
diff --git a/jsf-demo/archive/carstore/web/images/150x126_Jalopy.jpg b/jsf-demo/archive/carstore/web/images/150x126_Jalopy.jpg
new file mode 100644
index 0000000..634a1d0
Binary files /dev/null and b/jsf-demo/archive/carstore/web/images/150x126_Jalopy.jpg differ
diff --git a/jsf-demo/archive/carstore/web/images/150x126_Luxury.jpg b/jsf-demo/archive/carstore/web/images/150x126_Luxury.jpg
new file mode 100644
index 0000000..f14c5d2
Binary files /dev/null and b/jsf-demo/archive/carstore/web/images/150x126_Luxury.jpg differ
diff --git a/jsf-demo/archive/carstore/web/images/150x126_Roadster.jpg b/jsf-demo/archive/carstore/web/images/150x126_Roadster.jpg
new file mode 100644
index 0000000..6e3fbd7
Binary files /dev/null and b/jsf-demo/archive/carstore/web/images/150x126_Roadster.jpg differ
diff --git a/jsf-demo/archive/carstore/web/images/150x126_SUV.jpg b/jsf-demo/archive/carstore/web/images/150x126_SUV.jpg
new file mode 100644
index 0000000..410cce7
Binary files /dev/null and b/jsf-demo/archive/carstore/web/images/150x126_SUV.jpg differ
diff --git a/jsf-demo/archive/carstore/web/images/200x168_Jalopy.jpg b/jsf-demo/archive/carstore/web/images/200x168_Jalopy.jpg
new file mode 100644
index 0000000..676e315
Binary files /dev/null and b/jsf-demo/archive/carstore/web/images/200x168_Jalopy.jpg differ
diff --git a/jsf-demo/archive/carstore/web/images/200x168_Luxury.jpg b/jsf-demo/archive/carstore/web/images/200x168_Luxury.jpg
new file mode 100644
index 0000000..75caff8
Binary files /dev/null and b/jsf-demo/archive/carstore/web/images/200x168_Luxury.jpg differ
diff --git a/jsf-demo/archive/carstore/web/images/200x168_Roadster.jpg b/jsf-demo/archive/carstore/web/images/200x168_Roadster.jpg
new file mode 100644
index 0000000..a39563d
Binary files /dev/null and b/jsf-demo/archive/carstore/web/images/200x168_Roadster.jpg differ
diff --git a/jsf-demo/archive/carstore/web/images/200x168_SUV.jpg b/jsf-demo/archive/carstore/web/images/200x168_SUV.jpg
new file mode 100644
index 0000000..f965df6
Binary files /dev/null and b/jsf-demo/archive/carstore/web/images/200x168_SUV.jpg differ
diff --git a/jsf-demo/archive/carstore/web/images/BuyBtn.gif b/jsf-demo/archive/carstore/web/images/BuyBtn.gif
new file mode 100644
index 0000000..20836f2
Binary files /dev/null and b/jsf-demo/archive/carstore/web/images/BuyBtn.gif differ
diff --git a/jsf-demo/archive/carstore/web/images/FinishBtn.gif b/jsf-demo/archive/carstore/web/images/FinishBtn.gif
new file mode 100644
index 0000000..9b27797
Binary files /dev/null and b/jsf-demo/archive/carstore/web/images/FinishBtn.gif differ
diff --git a/jsf-demo/archive/carstore/web/images/MoreBtn.gif b/jsf-demo/archive/carstore/web/images/MoreBtn.gif
new file mode 100644
index 0000000..2c2a9b8
Binary files /dev/null and b/jsf-demo/archive/carstore/web/images/MoreBtn.gif differ
diff --git a/jsf-demo/archive/carstore/web/images/cardemo.jpg b/jsf-demo/archive/carstore/web/images/cardemo.jpg
new file mode 100644
index 0000000..dd35ad2
Binary files /dev/null and b/jsf-demo/archive/carstore/web/images/cardemo.jpg differ
diff --git a/jsf-demo/archive/carstore/web/images/current.gif b/jsf-demo/archive/carstore/web/images/current.gif
new file mode 100644
index 0000000..22d2985
Binary files /dev/null and b/jsf-demo/archive/carstore/web/images/current.gif differ
diff --git a/jsf-ri/web/test/resources/nvLibrary/images/duke-nv.gif b/jsf-demo/archive/carstore/web/images/duke.gif
similarity index 100%
copy from jsf-ri/web/test/resources/nvLibrary/images/duke-nv.gif
copy to jsf-demo/archive/carstore/web/images/duke.gif
diff --git a/jsf-demo/archive/carstore/web/images/world.jpg b/jsf-demo/archive/carstore/web/images/world.jpg
new file mode 100644
index 0000000..171cc90
Binary files /dev/null and b/jsf-demo/archive/carstore/web/images/world.jpg differ
diff --git a/jsf-demo/archive/carstore/web/images/world_france.jpg b/jsf-demo/archive/carstore/web/images/world_france.jpg
new file mode 100644
index 0000000..64402f8
Binary files /dev/null and b/jsf-demo/archive/carstore/web/images/world_france.jpg differ
diff --git a/jsf-demo/archive/carstore/web/images/world_germany.jpg b/jsf-demo/archive/carstore/web/images/world_germany.jpg
new file mode 100644
index 0000000..4f377d5
Binary files /dev/null and b/jsf-demo/archive/carstore/web/images/world_germany.jpg differ
diff --git a/jsf-demo/archive/carstore/web/images/world_namer.jpg b/jsf-demo/archive/carstore/web/images/world_namer.jpg
new file mode 100644
index 0000000..46a9d7a
Binary files /dev/null and b/jsf-demo/archive/carstore/web/images/world_namer.jpg differ
diff --git a/jsf-demo/archive/carstore/web/images/world_samer.jpg b/jsf-demo/archive/carstore/web/images/world_samer.jpg
new file mode 100644
index 0000000..38416ac
Binary files /dev/null and b/jsf-demo/archive/carstore/web/images/world_samer.jpg differ
diff --git a/jsf-demo/archive/carstore/web/index.jsp b/jsf-demo/archive/carstore/web/index.jsp
new file mode 100644
index 0000000..65fce25
--- /dev/null
+++ b/jsf-demo/archive/carstore/web/index.jsp
@@ -0,0 +1,52 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
+
+<html>
+<head>
+</head>
+
+<body>
+<jsp:forward page="chooseLocale.faces"/>
+</body>
+</html>
diff --git a/jsf-demo/archive/carstore/web/javadocs/beans.jpg b/jsf-demo/archive/carstore/web/javadocs/beans.jpg
new file mode 100644
index 0000000..c51b9ce
Binary files /dev/null and b/jsf-demo/archive/carstore/web/javadocs/beans.jpg differ
diff --git a/jsf-demo/archive/carstore/web/javadocs/data.jpg b/jsf-demo/archive/carstore/web/javadocs/data.jpg
new file mode 100644
index 0000000..432d7e7
Binary files /dev/null and b/jsf-demo/archive/carstore/web/javadocs/data.jpg differ
diff --git a/jsf-demo/archive/carstore/web/javadocs/flow.jpg b/jsf-demo/archive/carstore/web/javadocs/flow.jpg
new file mode 100644
index 0000000..6033236
Binary files /dev/null and b/jsf-demo/archive/carstore/web/javadocs/flow.jpg differ
diff --git a/jsf-demo/archive/carstore/web/optionsPanel.jsp b/jsf-demo/archive/carstore/web/optionsPanel.jsp
new file mode 100644
index 0000000..c074ef4
--- /dev/null
+++ b/jsf-demo/archive/carstore/web/optionsPanel.jsp
@@ -0,0 +1,166 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<%@ page contentType="text/html" language="java" %>
+<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
+<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %>
+
+
+<h:panelGrid>
+
+    <h:outputText value="#{bundle.OptionsPackages}"/>
+
+    <!-- options package chooser -->
+
+    <h:panelGrid columns="4">
+
+        <h:commandButton id="Custom" value="#{bundle.Custom}"
+                         styleClass="#{carstore.customizers.Custom.buttonStyle}"
+                         actionListener="#{carstore.choosePackage}"/>
+
+        <h:commandButton id="Standard" value="#{bundle.Standard}"
+                         styleClass="#{carstore.customizers.Standard.buttonStyle}"
+                         actionListener="#{carstore.choosePackage}"/>
+
+        <h:commandButton id="Performance" value="#{bundle.Performance}"
+                         styleClass="#{carstore.customizers.Performance.buttonStyle}"
+                         actionListener="#{carstore.choosePackage}"/>
+
+        <h:commandButton id="Deluxe" value="#{bundle.Deluxe}"
+                         styleClass="#{carstore.customizers.Deluxe.buttonStyle}"
+                         actionListener="#{carstore.choosePackage}"/>
+
+    </h:panelGrid>
+
+</h:panelGrid>
+
+<h:panelGrid columns="2">
+
+    <h:outputText value="#{bundle.Engine}"
+                  styleClass="optionLabel"/>
+
+    <h:selectOneMenu styleClass="optionValue"
+                     binding="#{carstore.currentModel.components.engine}"/>
+
+    <h:outputText value="#{bundle.Brakes}"
+                  styleClass="optionLabel"/>
+
+    <h:selectOneRadio styleClass="optionValue"
+                      binding="#{carstore.currentModel.components.brake}"/>
+
+    <h:outputText value="#{bundle.Suspension}"
+                  styleClass="optionLabel"/>
+
+    <h:selectOneMenu styleClass="optionValue"
+                     binding="#{carstore.currentModel.components.suspension}"/>
+
+    <h:outputText value="#{bundle.Speakers}"
+                  styleClass="optionLabel"/>
+
+    <h:selectOneRadio styleClass="optionValue"
+                      binding="#{carstore.currentModel.components.speaker}"/>
+
+    <h:outputText value="#{bundle.Audio}"
+                  styleClass="optionLabel"/>
+
+    <h:selectOneRadio styleClass="optionValue"
+                      binding="#{carstore.currentModel.components.audio}"/>
+
+    <h:outputText value="#{bundle.Transmission}"
+                  styleClass="optionLabel"/>
+
+    <h:selectOneMenu styleClass="optionValue"
+                     binding="#{carstore.currentModel.components.transmission}"/>
+
+</h:panelGrid>
+
+<h:outputText value="#{bundle.OtherOptions}"
+              styleClass="optionLabel"/>
+
+<h:panelGrid columns="6">
+
+    <h:selectBooleanCheckbox title="#{bundle.sunroofLabel}"
+                             binding="#{carstore.currentModel.components.sunroof}">
+    </h:selectBooleanCheckbox>
+
+    <h:outputText value="#{bundle.sunroofLabel}"/>
+
+    <h:selectBooleanCheckbox title="#{bundle.cruiseLabel}"
+                             binding="#{carstore.currentModel.components.cruisecontrol}">
+    </h:selectBooleanCheckbox>
+
+    <h:outputText value="#{bundle.cruiseLabel}"/>
+
+    <h:selectBooleanCheckbox title="#{bundle.keylessLabel}"
+                             binding="#{carstore.currentModel.components.keylessentry}">
+    </h:selectBooleanCheckbox>
+
+    <h:outputText value="#{bundle.keylessLabel}"/>
+
+    <h:selectBooleanCheckbox
+            title="#{bundle.securityLabel}"
+            binding="#{carstore.currentModel.components.securitySystem}">
+    </h:selectBooleanCheckbox>
+
+    <h:outputText value="#{bundle.securityLabel}"/>
+
+    <h:selectBooleanCheckbox title="#{bundle.skiRackLabel}"
+                             binding="#{carstore.currentModel.components.skiRack}">
+    </h:selectBooleanCheckbox>
+
+    <h:outputText value="#{bundle.skiRackLabel}"/>
+
+    <h:selectBooleanCheckbox title="#{bundle.towPkgLabel}"
+                             binding="#{carstore.currentModel.components.towPackage}">
+    </h:selectBooleanCheckbox>
+
+    <h:outputText value="#{bundle.towPkgLabel}"/>
+
+    <h:selectBooleanCheckbox title="#{bundle.gpsLabel}"
+                             binding="#{carstore.currentModel.components.gps}">
+    </h:selectBooleanCheckbox>
+
+    <h:outputText value="#{bundle.gpsLabel}"/>
+
+</h:panelGrid>
+
+
diff --git a/jsf-demo/archive/carstore/web/storeFront.jsp b/jsf-demo/archive/carstore/web/storeFront.jsp
new file mode 100644
index 0000000..469b1df
--- /dev/null
+++ b/jsf-demo/archive/carstore/web/storeFront.jsp
@@ -0,0 +1,138 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<html>
+
+<head>
+    <title>Welcome to CarStore</title>
+    <link rel="stylesheet" type="text/css"
+          href="${pageContext.request.contextPath}/stylesheet.css">
+</head>
+<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
+<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+
+<body bgcolor="white">
+
+<f:loadBundle basename="carstore.bundles.Resources" var="bundle"/>
+
+<f:view>
+
+    <h:form>
+
+        <h:graphicImage url="/images/cardemo.jpg"/>
+
+        <h:panelGrid columns="2"
+                     footerClass="form-footer"
+                     headerClass="form-header"
+                     styleClass="top-table"
+                     columnClasses="single-column"
+                     summary="#{bundle.chooseCar}"
+                     title="#{bundle.chooseCar}">
+
+            <h:panelGrid columns="2"
+                         styleClass="storeFrontCar">
+
+                <!-- Jalopy -->
+                <h:graphicImage
+                        binding="#{carstore.models.Jalopy.components.imageSmall}"/>
+                <h:outputText styleClass="subtitlebig"
+                              value="#{carstore.models.Jalopy.attributes.title}"/>
+                <h:outputText
+                        value="#{carstore.models.Jalopy.attributes.description}"/>
+                <h:commandButton
+                        action="#{carstore.storeFrontJalopyPressed}"
+                        value="#{bundle.moreButton}">
+                </h:commandButton>
+
+                <!-- Roadster -->
+                <h:graphicImage
+                        binding="#{carstore.models.Roadster.components.imageSmall}"/>
+                <h:outputText styleClass="subtitlebig"
+                              value="#{carstore.models.Roadster.attributes.title}"/>
+                <h:outputText
+                        value="#{carstore.models.Roadster.attributes.description}"/>
+                <h:commandButton
+                        action="#{carstore.storeFrontRoadsterPressed}"
+                        value="#{bundle.moreButton}">
+                </h:commandButton>
+
+            </h:panelGrid>
+
+            <h:panelGrid columns="2"
+                         styleClass="storeFrontCar">
+
+                <!-- Luxury -->
+                <h:graphicImage
+                        binding="#{carstore.models.Luxury.components.imageSmall}"/>
+                <h:outputText styleClass="subtitlebig"
+                              value="#{carstore.models.Luxury.attributes.title}"/>
+                <h:outputText
+                        value="#{carstore.models.Luxury.attributes.description}"/>
+                <h:commandButton
+                        action="#{carstore.storeFrontLuxuryPressed}"
+                        value="#{bundle.moreButton}">
+                </h:commandButton>
+
+                <!-- SUV -->
+                <h:graphicImage
+                        binding="#{carstore.models.SUV.components.imageSmall}"/>
+                <h:outputText styleClass="subtitlebig"
+                              value="#{carstore.models.SUV.attributes.title}"/>
+                <h:outputText
+                        value="#{carstore.models.SUV.attributes.description}"/>
+                <h:commandButton action="#{carstore.storeFrontSUVPressed}"
+                                 value="#{bundle.moreButton}">
+                </h:commandButton>
+
+            </h:panelGrid>
+
+        </h:panelGrid>
+
+    </h:form>
+
+    <jsp:include page="bottomMatter.jsp"/>
+
+</f:view>
+
+</body>
+
+</html>
diff --git a/jsf-demo/archive/carstore/web/stylesheet.css b/jsf-demo/archive/carstore/web/stylesheet.css
new file mode 100644
index 0000000..6cd8b2b
--- /dev/null
+++ b/jsf-demo/archive/carstore/web/stylesheet.css
@@ -0,0 +1,171 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+body {
+    font-family: Arial, Helvetica, sans-serif;
+    font-size: 12px;
+}
+
+td {
+    font-family: Arial, Helvetica, sans-serif;
+    font-size: 12px;
+}
+
+th {
+    font-family: Arial, Helvetica, sans-serif;
+    font-size: 12px;
+}
+
+.bodystyle {
+    font-family: Arial, Helvetica, sans-serif;
+    font-size: 12px;
+}
+
+.small {
+    font-family: Arial, Helvetica, sans-serif;
+    font-size: 9px;
+}
+
+.medium {
+    font-family: Arial, Helvetica, sans-serif;
+    font-size: 12px;
+}
+
+.maintitle {
+    font-family: Arial, Helvetica, sans-serif;
+    font-size: 14px;
+    color: #330066;
+}
+
+.subtitle {
+    font-family: Arial, Helvetica, sans-serif;
+    font-size: 12px;
+    color: #93B629;
+}
+
+.subtitlebig {
+    font-family: Arial, Helvetica, sans-serif;
+    font-size: 16px;
+    color: #93B629;
+    padding-top: 10px;
+    padding-bottom: 10px;
+}
+
+.big {
+    font-family: Arial, Helvetica, sans-serif;
+    font-size: 16px;
+}
+
+.xbig {
+    font-family: Arial, Helvetica, sans-serif;
+    font-size: 24px;
+}
+
+.expanded {
+    font-family: Arial, Helvetica, sans-serif;
+    font-size: 12px;
+    line-height: 24px;
+    letter-spacing: 2px;
+}
+
+.justified {
+    font-family: Arial, Helvetica, sans-serif;
+    text-align: justify;
+}
+
+.footer {
+    font-family: "Times New Roman", Times, serif;
+    font-size: 9px;
+    color: #999999;
+}
+
+.box1 {
+    padding: 3px;
+    border-width: medium;
+    border-style: solid;
+    border-color: #CCCCCC #666666 #666666 #CCCCCC;
+}
+
+.box2 {
+    font-style: italic;
+    word-spacing: 2pt;
+    padding: 3px;
+    border: 1px solid;
+}
+
+.align-left {
+    text-align: left;
+}
+
+.panel-background {
+    background-color: #7171A5;
+    border: 5px outset #71A5A5;
+    border-collapse: collapse;
+    font-family: sans-serif;
+    font-size: 14pt;
+    padding: 10px;
+}
+
+.package-selected {
+    background-color: #93B629;
+}
+
+.package-unselected {
+    background-color: #C0C0C0;
+}
+
+.option-unselected {
+    background-color: #FFFFFF;
+}
+
+.top-table {
+    padding: 0;
+    border: 0;
+    width: 660px;
+}
+
+.storeFrontCar {
+    padding: 0;    
+    border: 0;
+}
+
+.validationMessage {
+    color: red;
+}
diff --git a/jsf-demo/archive/components/build.xml b/jsf-demo/archive/components/build.xml
new file mode 100644
index 0000000..8ac7989
--- /dev/null
+++ b/jsf-demo/archive/components/build.xml
@@ -0,0 +1,160 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project name="components" default="build" basedir=".">
+
+    <property file="${user.home}/build.properties"/>
+    <property file="../../../build.properties"/>
+    <import file="${jsf.build.home}/common/ant/common.xml"/>
+
+
+    <!-- Configure the context path for this application -->
+    <property name="context.path" value="/jsf-components"/>
+    <property name="example" value="jsf-components"/>
+    <property name="webapp" value="jsf-components"/>
+    <property name="build" value="${basedir}/build"/>
+
+
+    <!-- The base directory for demo apps -->
+    <property name="jsf-demo.lib" value="../lib"/>
+
+    <property name="ui.jar" value="${jsf-demo.lib}/ui.jar"/>
+    <property name="ui-src.jar" value="${jsf-demo.lib}/ui-src.jar"/>
+
+    <path id="classpath">
+        <pathelement location="${ui.jar}"/>
+        <pathelement location="${javax.faces-api.jar}"/>
+        <pathelement location="${javax.faces.jar}"/>
+        <pathelement location="${build}/WEB-INF/classes"/>
+        <path refid="compile.classpath"/>
+    </path>
+
+    <target name="init" depends="check.changes">
+        <tstamp/>
+    </target>
+
+    <target name="check.changes">
+        <uptodate property="skip.build"
+                  targetfile="${build}/last-build">
+            <srcfiles dir="${basedir}">
+                <include name="src/**/*.*"/>
+                <include name="conf/**/*.*"/>
+                <include name="web/**/*.*"/>
+            </srcfiles>
+        </uptodate>
+    </target>
+
+    <target name="clean">
+        <delete dir="${build}"/>
+        <delete dir="${context.path}"/>
+        <delete file="${basedir}/last-build"/>
+    </target>
+
+    <target name="prepare" depends="init"
+            description="Create build directories.">
+        <mkdir dir="${build}"/>
+        <mkdir dir="${build}/${webapp}"/>
+        <mkdir dir="${build}/classes"/>
+        <mkdir dir="${build}/classes/${webapp}"/>
+        <mkdir dir="${build}/${webapp}/src/java/components"/>
+        <mkdir dir="${build}/${webapp}/src/java/demo"/>
+        <mkdir dir="${build}/${webapp}/WEB-INF/lib"/>
+        <mkdir dir="${build}/${webapp}/WEB-INF/classes"/>
+    </target>
+
+    <target name="build" unless="skip.build" depends="prepare"
+            description="Compile Java files for components, not webapp.">
+        <touch file="${build}/last-build"/>
+
+        <copy todir="${build}/${webapp}/WEB-INF/lib" file="${ui.jar}"/>
+         <jsf.javac srcdir="src"
+                   destdir="${build}/${example}/WEB-INF/classes">
+            <classpath>
+                <path refid="classpath"/>
+            </classpath>
+        </jsf.javac>
+
+        <copy todir="${build}/${webapp}/WEB-INF">
+            <fileset dir="web/WEB-INF">
+                <include name="web.xml"/>
+            </fileset>
+        </copy>
+
+        <!-- copy over the properties -->
+        <copy todir="${build}/${webapp}/WEB-INF/classes/">
+            <fileset dir="src/java">
+                <include name="**/*.properties"/>
+            </fileset>
+        </copy>
+
+        <!-- copy the java source to the webapp for viewing by the user -->
+        <unjar dest="${build}/${webapp}/src/java/components"
+               src="${ui-src.jar}"/>
+        <copy todir="${build}/${webapp}/src/java/demo">
+            <fileset dir="src/java/demo"
+                     excludes="src/java/demo/model/CalendarBean.java"/>
+        </copy>
+        <copy todir="${build}/${webapp}/WEB-INF"
+              file="web/WEB-INF/tlds/demo.tld"/>
+
+        <copy todir="${build}/${webapp}">
+            <fileset dir="web">
+                <include name="**/*.html"/>
+                <include name="**/*.gif"/>
+                <include name="**/*.jpg"/>
+                <include name="**/*.jsp"/>
+                <include name="**/*.css"/>
+                <include name="**/*.xml"/>
+            </fileset>
+        </copy>
+
+        <jsf.war basedir="${build}"
+                 archive-name="${example}"
+                 webxml="${build}/${example}/WEB-INF/web.xml">
+            <archive-elements>
+                <zipfileset dir="${build}/${example}"/>
+            </archive-elements>
+        </jsf.war>
+
+    </target>    
+</project>
+
diff --git a/jsf-demo/archive/components/src/java/demo/model/ChartBean.java b/jsf-demo/archive/components/src/java/demo/model/ChartBean.java
new file mode 100644
index 0000000..3ebc0cb
--- /dev/null
+++ b/jsf-demo/archive/components/src/java/demo/model/ChartBean.java
@@ -0,0 +1,135 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package demo.model;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import com.sun.javaee.blueprints.components.ui.model.ChartItem;
+
+public class ChartBean {
+
+    // Bar Chart Properties -------------------------
+
+    public static final int VERTICAL = 0;
+    public static final int HORIZONTAL = 1;
+
+    private int orientation = VERTICAL;
+
+    public int getOrientation() {
+        return orientation;
+    }
+
+    public void setOrientation(int orientation) {
+        this.orientation = orientation;
+    }
+
+    // ----------------------------------------------
+
+    private int columns = 0;
+
+    public int getColumns() {
+        return columns;
+    }
+
+    public void setColumns(int columns) {
+        this.columns = columns;
+    }
+
+    private ArrayList chartItems = null;
+
+    public Collection getChartItems() {
+        return chartItems;
+    }
+
+    private String title = null;
+
+    public String getTitle() {
+        return title;
+    }
+
+    public void setTitle(String title) {
+        this.title = title;
+    }
+
+    private int scale = 10;
+
+    public int getScale() {
+        return scale;
+    }
+
+    public void setScale(int scale) {
+        this.scale = scale;
+    }
+
+    private int width = 400;
+
+    public int getWidth() {
+        return width;
+    }
+
+    public void setWidth(int width) {
+        this.width = width;
+    }
+
+    private int height = 300;
+
+    public int getHeight() {
+        return height;
+    }
+
+    public void setHeight(int height) {
+        this.height = height;
+    }
+
+    public ChartBean() {
+
+        setWidth(400);
+        setHeight(300);
+        setColumns(2);
+        setOrientation(ChartBean.HORIZONTAL);
+
+        chartItems = new ArrayList(columns);
+        chartItems.add(new ChartItem("one", 10, "red"));
+        chartItems.add(new ChartItem("two", 20, "blue"));
+
+    }
+}
diff --git a/jsf-demo/archive/components/src/java/demo/model/CustomerBean.java b/jsf-demo/archive/components/src/java/demo/model/CustomerBean.java
new file mode 100644
index 0000000..8e390a4
--- /dev/null
+++ b/jsf-demo/archive/components/src/java/demo/model/CustomerBean.java
@@ -0,0 +1,132 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package demo.model;
+
+
+import java.io.Serializable;
+
+
+/** <p>JavaBean represented the data for an individual customer.</p> */
+
+public class CustomerBean implements Serializable {
+
+
+    public CustomerBean() {
+        this(null, null, null, 0.0);
+    }
+
+
+    public CustomerBean(String accountId, String name,
+                        String symbol, double totalSales) {
+        this.accountId = accountId;
+        this.name = name;
+        this.symbol = symbol;
+        this.totalSales = totalSales;
+    }
+
+
+    private String accountId = null;
+
+
+    public String getAccountId() {
+        return (this.accountId);
+    }
+
+
+    public void setAccountId(String accountId) {
+        this.accountId = accountId;
+    }
+
+
+    private String name = null;
+
+
+    public String getName() {
+        return (this.name);
+    }
+
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+
+    private String symbol = null;
+
+
+    public String getSymbol() {
+        return (this.symbol);
+    }
+
+
+    public void setSymbol(String symbol) {
+        this.symbol = symbol;
+    }
+
+
+    private double totalSales = 0.0;
+
+
+    public double getTotalSales() {
+        return (this.totalSales);
+    }
+
+
+    public void setTotalSales(double totalSales) {
+        this.totalSales = totalSales;
+    }
+
+
+    public String toString() {
+        StringBuffer sb = new StringBuffer("CustomerBean[accountId=");
+        sb.append(accountId);
+        sb.append(",name=");
+        sb.append(name);
+        sb.append(",symbol=");
+        sb.append(symbol);
+        sb.append(",totalSales=");
+        sb.append(totalSales);
+        sb.append("]");
+        return (sb.toString());
+    }
+
+
+}
diff --git a/jsf-demo/archive/components/src/java/demo/model/GraphBean.java b/jsf-demo/archive/components/src/java/demo/model/GraphBean.java
new file mode 100644
index 0000000..e613e3e
--- /dev/null
+++ b/jsf-demo/archive/components/src/java/demo/model/GraphBean.java
@@ -0,0 +1,226 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package demo.model;
+
+import javax.faces.event.ActionEvent;
+
+import java.util.Iterator;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import com.sun.javaee.blueprints.components.ui.components.GraphComponent;
+import com.sun.javaee.blueprints.components.ui.model.Graph;
+import com.sun.javaee.blueprints.components.ui.model.Node;
+
+/** <p>Backing file bean for TreeControl demo.</p> */
+
+public class GraphBean {
+
+    private static Logger LOGGER = Logger.getLogger("demo.model");    
+    
+    Graph menuGraph = null;
+    Graph treeGraph = null;
+
+
+    public GraphBean() {
+    }
+
+
+    public Graph getMenuGraph() {
+        // Construct a preconfigured customer list lazily.
+        if (menuGraph == null) {
+            Node root = new Node("Menu 2", "Menu", null, null, false, true);
+            menuGraph = new Graph(root);
+
+            Node file = new Node("File", "File 2", "/demo-test.faces", null,
+                                 true, true);
+            root.addChild(file);
+            file.addChild(
+                  new Node("File-New", "New 2", "/demo-test.faces", null, true,
+                           false));
+            file.addChild(
+                  new Node("File-Open",
+                           "Open 2",
+                           "/demo-test.faces",
+                           null,
+                           true,
+                           false));
+            Node close = new Node("File-Close", "Close 2", "/demo-test.faces",
+                                  null, false, false);
+            file.addChild(close);
+            file.addChild(
+                  new Node("File-Exit",
+                           "Exit 2",
+                           "/demo-test.faces",
+                           null,
+                           true,
+                           false));
+
+            Node edit = new Node("Edit", "Edit 2", "/demo-test.faces", null,
+                                 true, false);
+            root.addChild(edit);
+            edit.addChild(
+                  new Node("Edit-Cut", "Cut 2", "/demo-test.faces", null, true,
+                           false));
+            edit.addChild(
+                  new Node("Edit-Copy",
+                           "Copy 2",
+                           "/demo-test.faces",
+                           null,
+                           true,
+                           false));
+            edit.addChild(
+                  new Node("Edit-Paste", "Paste 2", "/demo-test.faces", null,
+                           false, false));
+
+            menuGraph.setSelected(close);
+        }
+        return menuGraph;
+    }
+
+
+    public void setMenuGraph(Graph newMenuGraph) {
+        this.menuGraph = newMenuGraph;
+    }
+
+
+    public Graph getTreeGraph() {
+        // Construct a preconfigured Graph lazily.
+        if (treeGraph == null) {
+            Node root = new Node("Menu 4", "Menu 4", null, null, false, true);
+            treeGraph = new Graph(root);
+
+            Node file = new Node("File", "File 4", "/demo-test.faces", null,
+                                 true, true);
+            root.addChild(file);
+            file.addChild(
+                  new Node("File-New", "New 4", "/demo-test.faces", null, true,
+                           false));
+            file.addChild(
+                  new Node("File-Open",
+                           "Open 4",
+                           "/demo-test.faces",
+                           null,
+                           true,
+                           false));
+            Node close = new Node("File-Close", "Close 4", "/demo-test.faces",
+                                  null, false, false);
+            file.addChild(close);
+            file.addChild(
+                  new Node("File-Exit",
+                           "Exit 4",
+                           "/demo-test.faces",
+                           null,
+                           true,
+                           false));
+
+            Node edit = new Node("Edit", "Edit 4", "/demo-test.faces", null,
+                                 true, false);
+            root.addChild(edit);
+            edit.addChild(
+                  new Node("Edit-Cut", "Cut 4", "/demo-test.faces", null, true,
+                           false));
+            edit.addChild(
+                  new Node("Edit-Copy",
+                           "Copy 4",
+                           "/demo-test.faces",
+                           null,
+                           true,
+                           false));
+            edit.addChild(
+                  new Node("Edit-Paste", "Paste 4", "/demo-test.faces", null,
+                           false, false));
+
+            treeGraph.setSelected(close);
+        }
+        return treeGraph;
+    }
+
+
+    public void setTreeGraph(Graph newTreeGraph) {
+        this.treeGraph = newTreeGraph;
+    }
+
+
+    /*
+     * Processes the event queued on the graph component when a particular
+     * node in the tree control is to be expanded or collapsed.
+     */
+    public void processGraphEvent(ActionEvent event) {
+        if (LOGGER.isLoggable(Level.FINE)) {
+            LOGGER.fine("TRACE: GraphBean.processGraphEvent ");
+        }
+        Graph graph = null;
+        GraphComponent component = (GraphComponent) event.getSource();
+        String path = (String) component.getAttributes().get("path");
+
+        // Acquire the root node of the graph representing the menu
+        graph = (Graph) component.getValue();
+        if (graph == null) {
+            if (LOGGER.isLoggable(Level.SEVERE)) {
+                LOGGER.severe("ERROR: Graph could not located in scope ");
+            }
+        }
+        // Toggle the expanded state of this node
+        Node node = graph.findNode(path);
+        if (node == null) {
+            if (LOGGER.isLoggable(Level.SEVERE)) {
+                LOGGER.severe("ERROR: Node " + path + "could not be located. ");
+            }
+            return;
+        }
+        boolean current = node.isExpanded();
+        node.setExpanded(!current);
+        if (!current) {
+            Node parent = node.getParent();
+            if (parent != null) {
+                Iterator kids = parent.getChildren();
+                while (kids.hasNext()) {
+                    Node kid = (Node) kids.next();
+                    if (kid != node) {
+                        kid.setExpanded(false);
+                    }
+                }
+            }
+        }
+    }
+
+}
diff --git a/jsf-demo/archive/components/src/java/demo/model/ProcessBean.java b/jsf-demo/archive/components/src/java/demo/model/ProcessBean.java
new file mode 100644
index 0000000..42ada7f
--- /dev/null
+++ b/jsf-demo/archive/components/src/java/demo/model/ProcessBean.java
@@ -0,0 +1,95 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package demo.model;
+
+import java.util.Random;
+
+public class ProcessBean {
+
+    public ProcessBean() {
+    }
+
+    private int percentage = 0;
+    private int increment = 10;
+
+    public int getPercentage() {
+        if (100 < percentage) {
+            percentage = 0 - increment;
+        }
+        return percentage += increment;
+    }
+
+    /**
+     * Getter for property randomPercentage.
+     *
+     * @return Value of property randomPercentage.
+     */
+    public int getRandomPercentage() {
+
+        return random.nextInt(101);
+    }
+
+    private Random random = new Random();
+
+    /** Holds value of property pollInterval. */
+    private int pollInterval = 250;
+
+    /**
+     * Getter for property pollInterval.
+     *
+     * @return Value of property pollInterval.
+     */
+    public int getPollInterval() {
+
+        return this.pollInterval;
+    }
+
+    /**
+     * Setter for property pollInterval.
+     *
+     * @param pollInterval New value of property pollInterval.
+     */
+    public void setPollInterval(int pollInterval) {
+
+        this.pollInterval = pollInterval;
+    }
+
+}
diff --git a/jsf-demo/archive/components/src/java/demo/model/RepeaterBean.java b/jsf-demo/archive/components/src/java/demo/model/RepeaterBean.java
new file mode 100644
index 0000000..c2029de
--- /dev/null
+++ b/jsf-demo/archive/components/src/java/demo/model/RepeaterBean.java
@@ -0,0 +1,426 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package demo.model;
+
+
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
+import javax.faces.application.FacesMessage;
+import javax.faces.component.UIComponent;
+import javax.faces.component.UIData;
+import javax.faces.component.UIInput;
+import javax.faces.component.UISelectBoolean;
+import javax.faces.context.FacesContext;
+import javax.faces.event.ActionEvent;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+
+/** <p>Backing file bean for <code>/repeater.jsp</code> demo.</p> */
+
+public class RepeaterBean {
+
+
+    @PostConstruct public void postConstruct() {
+        System.out.printf("postConstruct Called\n");
+    }
+
+
+    @PreDestroy public void preDestroy() {
+        System.out.printf("preDestroy Called\n");
+    }
+
+    // -------------------------------------------------------- Bound Components
+
+
+    /** <p>The <code>accountId</code> field for the current row.</p> */
+    private UIInput accountId = null;
+
+
+    public UIInput getAccountId() {
+        return accountId;
+    }
+
+
+    public void setAccountId(UIInput accountId) {
+        this.accountId = accountId;
+    }
+
+
+    /** <p>The <code>checked</code> field for the current row.</p> */
+    private UISelectBoolean checked = null;
+
+
+    public UISelectBoolean getChecked() {
+        return checked;
+    }
+
+
+    public void setChecked(UISelectBoolean checked) {
+        this.checked = checked;
+    }
+
+
+    /** <p>The <code>created</code> field for the current row.</p> */
+    private UISelectBoolean created = null;
+
+
+    public UISelectBoolean getCreated() {
+        return created;
+    }
+
+
+    public void setCreated(UISelectBoolean created) {
+        this.created = created;
+    }
+
+
+    /** <p>The <code>UIData</code> component representing the entire table.</p> */
+    private UIData data = null;
+
+
+    public UIData getData() {
+        return data;
+    }
+
+
+    public void setData(UIData data) {
+        this.data = data;
+    }
+
+    // --------------------------------------------------- Calculated Properties
+
+
+    /** <p>Return the customer list containing the data backing this demo.</p> */
+    public List<CustomerBean> getCustomers() {
+
+        List<CustomerBean> list = (List<CustomerBean>)
+              FacesContext.getCurrentInstance().getExternalContext().
+                    getSessionMap().get("list");
+        if (list == null) {
+            list = new ArrayList<CustomerBean>();
+            list.add(new CustomerBean("123456", "Alpha Beta Company",
+                                      "ABC", 1234.56));
+            list.add(new CustomerBean("445566", "General Services, Ltd.",
+                                      "GS", 33.33));
+            list.add(new CustomerBean("654321", "Summa Cum Laude, Inc.",
+                                      "SCL", 76543.21));
+            list.add(new CustomerBean("333333", "Yabba Dabba Doo", "YDD",
+                                      333.33));
+            for (int i = 10; i < 20; i++) {
+                list.add(new CustomerBean("8888" + i,
+                                          "Customer " + i,
+                                          "CU" + i,
+                                          ((double) i) * 10.0));
+            }
+            FacesContext.getCurrentInstance().getExternalContext().
+                  getSessionMap().put("list", list);
+        }
+        return (list);
+
+    }
+
+
+    /** <p>Return a calculated label for the per-row button.</p> */
+    public String getPressLabel() {
+
+        return ("Account " + accountId.getValue());
+
+    }
+
+    // --------------------------------------------------------- Action Handlers
+
+
+    /** <p>Acknowledge that a row-specific link was clicked.</p> */
+    public String click() {
+
+        append("Link clicked for account " + accountId.getValue());
+        clear();
+        return (null);
+
+    }
+
+    public void clickAction(ActionEvent e) {
+        UIComponent link = e.getComponent();
+        String key = (String) link.getAttributes().get("key");
+        append("Link clicked for account " + accountId.getValue());
+        append("actionEvent occurred " + key);
+        clear();
+
+    }
+
+
+    /**
+     * <p>Create a new empty row to be filled in for a new record
+     * in the database.</p>
+     */
+    public String create() {
+
+        append("CREATE NEW ROW button pressed");
+        clear();
+
+        // Add a new row to the table
+        List<CustomerBean> list = getCustomers();
+        if (list != null) {
+            CustomerBean customer = new CustomerBean();
+            list.add(customer);
+            int index = data.getRowIndex();
+            data.setRowIndex(list.size() - 1);
+            created.setSelected(true);
+            data.setRowIndex(index);
+        }
+
+        // Position so that the new row is visible if necessary
+        scroll(list.size());
+        return (null);
+
+    }
+
+
+    /** <p>Delete any customers who have been checked from the list.</p> */
+    public String delete() {
+
+        append("DELETE CHECKED button pressed");
+
+        // Delete customers for whom the checked field is selected
+        List removes = new ArrayList();
+        int n = data.getRowCount();
+        for (int i = 0; i < n; i++) {
+            data.setRowIndex(i);
+            if (checked.isSelected()) {
+                removes.add(data.getRowData());
+                checked.setSelected(false);
+                created.setSelected(false);
+            }
+        }
+        if (removes.size() > 0) {
+            List<CustomerBean> list = getCustomers();
+            Iterator remove = removes.iterator();
+            while (remove.hasNext()) {
+                list.remove(remove.next());
+            }
+        }
+
+        clear();
+        return (null);
+    }
+
+
+    /** <p>Scroll directly to the first page.</p> */
+    public String first() {
+
+        append("FIRST PAGE button pressed");
+        scroll(0);
+        return (null);
+
+    }
+
+
+    /** <p>Scroll directly to the last page.</p> */
+    public String last() {
+
+        append("LAST PAGE button pressed");
+        scroll(count() - 1);
+        return (null);
+
+    }
+
+
+    /** <p>Scroll forwards to the next page.</p> */
+    public String next() {
+
+        append("NEXT PAGE button pressed");
+        int first = data.getFirst();
+        scroll(first + data.getRows());
+        return (null);
+
+    }
+
+
+    /** <p>Acknowledge that a row-specific button was pressed.</p> */
+    public String press() {
+
+        append("Button pressed for account " + accountId.getValue());
+        clear();
+        return (null);
+
+    }
+
+
+    /** <p>Scroll backwards to the previous page.</p> */
+    public String previous() {
+
+        append("PREVIOUS PAGE button pressed");
+        int first = data.getFirst();
+        scroll(first - data.getRows());
+        return (null);
+
+    }
+
+
+    /** <p>Handle a "reset" button by clearing local component values.</p> */
+    public String reset() {
+
+        append("RESET CHANGES button pressed");
+        clear();
+        return (null);
+
+    }
+
+
+    /**
+     * <p>Save any changes to the underlying database.  In a real application
+     * this would need to distinguish between inserts and updates, based on
+     * the state of the "created" property.</p>
+     */
+    public String update() {
+
+        append("SAVE CHANGES button pressed");
+        ; // Save to database as necessary
+        clear();
+        created();
+        return (null);
+
+    }
+
+    // --------------------------------------------------------- Private Methods
+
+
+    /**
+     * <p>Append an informational message to the set of messages that will
+     * be rendered when this view is redisplayed.</p>
+     *
+     * @param message Message text to be added
+     */
+    private void append(String message) {
+
+        FacesContext context = FacesContext.getCurrentInstance();
+        context.addMessage(null,
+                           new FacesMessage(FacesMessage.SEVERITY_INFO,
+                                            message, null));
+
+    }
+
+
+    /** <p>Clear the checked state for all customers.</p> */
+    private void clear() {
+
+        int n = count();
+        for (int i = 0; i < n; i++) {
+            data.setRowIndex(i);
+            checked.setSelected(false);
+        }
+
+    }
+
+
+    /** <p>Return the actual row count from our underlying data model.</p> */
+    private int count() {
+
+        int n = data.getRowCount();
+        if (n >= 0) {
+            return (n);
+        }
+        n = -1;
+        while (true) {
+            data.setRowIndex(n++);
+            if (!data.isRowAvailable()) {
+                break;
+            }
+        }
+        return (n);
+
+    }
+
+
+    /** <p>Clear the created state of all customers.</p> */
+    private void created() {
+
+        int n = count();
+        for (int i = 0; i < n; i++) {
+            data.setRowIndex(i);
+            created.setSelected(false);
+        }
+
+    }
+
+
+    /**
+     * <p>Return an <code>Iterator</code> over the customer list, if any;
+     * otherwise return <code>null</code>.</p>
+     */
+    private Iterator<CustomerBean> iterator() {
+
+        List<CustomerBean> list = getCustomers();
+        if (list != null) {
+            return (list.iterator());
+        } else {
+            return (null);
+        }
+
+    }
+
+
+    /**
+     * <p>Scroll to the page that contains the specified row number.</p>
+     *
+     * @param row Desired row number
+     */
+    private void scroll(int row) {
+
+        int rows = data.getRows();
+        if (rows < 1) {
+            return; // Showing entire table already
+        }
+        if (row < 0) {
+            data.setFirst(0);
+        } else if (row >= count()) {
+            data.setFirst(count() - 1);
+        } else {
+            data.setFirst(row - (row % rows));
+        }
+
+    }
+
+
+}
diff --git a/jsf-demo/archive/components/src/java/demo/model/Resource.properties b/jsf-demo/archive/components/src/java/demo/model/Resource.properties
new file mode 100644
index 0000000..7df0763
--- /dev/null
+++ b/jsf-demo/archive/components/src/java/demo/model/Resource.properties
@@ -0,0 +1,42 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 2005-2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
+welcomeLabel=Welcome to JavaServer Faces
+outputMessageKey=bundle param 0: {0} bundle param: 1 {1} bundle param: 2 {2}
diff --git a/jsf-demo/archive/components/src/java/demo/model/Resources.properties b/jsf-demo/archive/components/src/java/demo/model/Resources.properties
new file mode 100644
index 0000000..27dbe77
--- /dev/null
+++ b/jsf-demo/archive/components/src/java/demo/model/Resources.properties
@@ -0,0 +1,54 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 2005-2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
+welcomeLabel=Welcome to JavaServer Faces
+outputMessageKey=bundle param 0: {0} bundle param: 1 {1} bundle param: 2 {2}
+
+calendar.enterDate=Enter Date
+calendar.sampleDate=(format is {0,date,short} • for {1,date,long})
+
+
+calendar.title=JSF Demo • Calendar
+
+calendar.dateProcessed=Date processed: {0,date,full}
+
+calendar.submit=Submit
+
+backToHomePage=Back to Home Page
diff --git a/jsf-demo/archive/components/src/java/demo/model/Resources_de.properties b/jsf-demo/archive/components/src/java/demo/model/Resources_de.properties
new file mode 100644
index 0000000..aa672c9
--- /dev/null
+++ b/jsf-demo/archive/components/src/java/demo/model/Resources_de.properties
@@ -0,0 +1,55 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 2005-2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
+welcomeLabel=Wilkommen en JavaServer Faces
+outputMessageKey=bundle param 0: {0} bundle param: 1 {1} bundle param: 2 {2}
+
+
+calendar.sampleDate=({0,date,short} • {1,date,long})
+
+calendar.enterDate=Ach ze daten
+
+calendar.title=Demonstration JSF • Calendrier
+
+calendar.dateProcessed=Date processed: {0,date,full}
+
+calendar.submit=Submit
+
+backToHomePage=Back to Home Page
diff --git a/jsf-demo/archive/components/src/java/demo/model/Resources_en.properties b/jsf-demo/archive/components/src/java/demo/model/Resources_en.properties
new file mode 100644
index 0000000..d877a31
--- /dev/null
+++ b/jsf-demo/archive/components/src/java/demo/model/Resources_en.properties
@@ -0,0 +1,55 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 2005-2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
+welcomeLabel=Welcome to JavaServer Faces
+outputMessageKey=bundle param 0: {0} bundle param: 1 {1} bundle param: 2 {2}
+
+
+calendar.enterDate=Enter Date
+
+calendar.sampleDate=(entry format is {0,date,short} • for {1,date,long})
+
+calendar.title=JSF Demo • Calendar
+
+calendar.dateProcessed=Date processed: {0,date,full}
+
+calendar.submit=Submit
+
+backToHomePage=Back to Home Page
diff --git a/jsf-demo/archive/components/src/java/demo/model/Resources_es.properties b/jsf-demo/archive/components/src/java/demo/model/Resources_es.properties
new file mode 100644
index 0000000..5bcb161
--- /dev/null
+++ b/jsf-demo/archive/components/src/java/demo/model/Resources_es.properties
@@ -0,0 +1,55 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 2005-2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
+welcomeLabel=Bienvenido a JavaServer Faces
+outputMessageKey=bundle param 0: {0} bundle param: 1 {1} bundle param: 2 {2}
+
+
+calendar.sampleDate=({0,date,short} • {1,date,long})
+
+calendar.enterDate=entero datp
+
+calendar.title=Demonstration JSF • Calendrier
+
+calendar.dateProcessed=Date processed: {0,date,full}
+
+calendar.submit=Submit
+
+backToHomePage=Back to Home Page
diff --git a/jsf-demo/archive/components/src/java/demo/model/Resources_fi.properties b/jsf-demo/archive/components/src/java/demo/model/Resources_fi.properties
new file mode 100644
index 0000000..f9be637
--- /dev/null
+++ b/jsf-demo/archive/components/src/java/demo/model/Resources_fi.properties
@@ -0,0 +1,55 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 2005-2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
+welcomeLabel=JavaServer Faces Tervetuloa
+outputMessageKey=bundle param 0: {0} bundle param: 1 {1} bundle param: 2 {2}
+
+
+calendar.sampleDate=({0,date,short} • {1,date,long})
+
+calendar.enterDate=jing datrf
+
+calendar.title=Demonstration JSF • Calendrier
+
+calendar.dateProcessed=Date processed: {0,date,full}
+
+calendar.submit=Submit
+
+backToHomePage=Back to Home Page
diff --git a/jsf-demo/archive/components/src/java/demo/model/Resources_fr.properties b/jsf-demo/archive/components/src/java/demo/model/Resources_fr.properties
new file mode 100644
index 0000000..abf339b
--- /dev/null
+++ b/jsf-demo/archive/components/src/java/demo/model/Resources_fr.properties
@@ -0,0 +1,55 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 2005-2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
+welcomeLabel=Bienvenue en JavaServer Faces
+outputMessageKey=bundle param 0: {0} bundle param: 1 {1} bundle param: 2 {2}
+
+
+calendar.sampleDate=(format est {0,date,short} pour {1,date,long})
+
+calendar.enterDate=Entrez la date
+
+calendar.title=Demonstration JSF • Calendrier
+
+calendar.dateProcessed=Date soumise: {0,date,full}
+
+calendar.submit=Soumettre
+
+backToHomePage=Retourner a la page principale
diff --git a/jsf-demo/archive/components/src/java/demo/model/ResultSetBean.java b/jsf-demo/archive/components/src/java/demo/model/ResultSetBean.java
new file mode 100644
index 0000000..7e58853
--- /dev/null
+++ b/jsf-demo/archive/components/src/java/demo/model/ResultSetBean.java
@@ -0,0 +1,179 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package demo.model;
+
+import javax.faces.component.UIComponent;
+import javax.faces.component.UIData;
+import javax.faces.context.FacesContext;
+import javax.faces.event.ActionEvent;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+
+/** <p>Backing file bean for <code>ResultSet</code> demo.</p> */
+
+public class ResultSetBean {
+
+    private static Logger LOGGER = Logger.getLogger("demo.model");
+    
+    private List<CustomerBean> list = null;
+
+
+    public ResultSetBean() {
+    }
+
+
+    public List<CustomerBean> getList() {
+        // Construct a preconfigured customer list lazily.
+        if (list == null) {
+            list = new ArrayList<CustomerBean>();
+            for (int i = 0; i < 1000; i++) {
+                list.add(new CustomerBean(Integer.toString(i),
+                                          "name_" + Integer.toString(i),
+                                          "symbol_" + Integer.toString(i), i));
+            }
+        }
+        return list;
+    }
+
+
+    public void setList(List<CustomerBean> newlist) {
+        this.list = newlist;
+    }
+
+    // -------------------------------------------------------- Bound Components
+
+    /** <p>The <code>UIData</code> component representing the entire table.</p> */
+    private UIData data = null;
+
+
+    public UIData getData() {
+        return data;
+    }
+
+
+    public void setData(UIData data) {
+        this.data = data;
+    }
+
+    // ---------------------------------------------------------- Action Methods
+
+
+    /** <p>Scroll directly to the first page.</p> */
+    public String first() {
+        scroll(0);
+        return (null);
+
+    }
+
+
+    /** <p>Scroll directly to the last page.</p> */
+    public String last() {
+        scroll(data.getRowCount() - 1);
+        return (null);
+
+    }
+
+
+    /** <p>Scroll forwards to the next page.</p> */
+    public String next() {
+        int first = data.getFirst();
+        scroll(first + data.getRows());
+        return (null);
+
+    }
+
+
+    /** <p>Scroll backwards to the previous page.</p> */
+    public String previous() {
+        int first = data.getFirst();
+        scroll(first - data.getRows());
+        return (null);
+
+    }
+
+
+    /**
+     * <p>Scroll to the page that contains the specified row number.</p>
+     *
+     * @param row Desired row number
+     */
+    public void scroll(int row) {
+
+        int rows = data.getRows();
+        if (rows < 1) {
+            return; // Showing entire table already
+        }
+        if (row < 0) {
+            data.setFirst(0);
+        } else if (row >= data.getRowCount()) {
+            data.setFirst(data.getRowCount() - 1);
+        } else {
+            data.setFirst(row - (row % rows));
+        }
+
+    }
+
+
+    /**
+     * Handles the ActionEvent generated as a result of clicking on a
+     * link that points a particular page in the result-set.
+     */
+    public void processScrollEvent(ActionEvent event) {
+        int currentRow = 1;
+        if (LOGGER.isLoggable(Level.FINE)) {
+            LOGGER.fine("TRACE: ResultSetBean.processScrollEvent ");
+        }
+        FacesContext context = FacesContext.getCurrentInstance();
+        UIComponent component = event.getComponent();
+        Integer curRow = (Integer) component.getAttributes().get("currentRow");
+        if (curRow != null) {
+            currentRow = curRow.intValue();
+        }
+        // scroll to the appropriate page in the ResultSet.
+        scroll(currentRow);
+    }
+
+
+}
diff --git a/jsf-demo/archive/components/src/java/demo/taglib/EscapeHtmlTag.java b/jsf-demo/archive/components/src/java/demo/taglib/EscapeHtmlTag.java
new file mode 100644
index 0000000..f090c49
--- /dev/null
+++ b/jsf-demo/archive/components/src/java/demo/taglib/EscapeHtmlTag.java
@@ -0,0 +1,207 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ *
+ *
+ * This file incorporates work covered by the following copyright and
+ * permission notice:
+ *
+ * Copyright 2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package demo.taglib;
+
+import javax.servlet.jsp.JspException;
+import javax.servlet.jsp.JspTagException;
+import javax.servlet.jsp.tagext.BodyTagSupport;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.OutputStream;
+import java.io.OutputStreamWriter;
+import java.io.Reader;
+import java.io.StringReader;
+import java.io.Writer;
+
+/**
+ * <p>Tag handler for <escapeHtml>
+ *
+ * @author Pierre Delisle
+ * @version $Revision: 1.5 $ $Date: 2007/04/27 22:00:25 $
+ */
+public class EscapeHtmlTag extends BodyTagSupport {
+
+    //*********************************************************************
+    // Instance variables
+
+    private Reader reader;
+    private Writer writer;
+
+    //*********************************************************************
+    // Constructors
+
+    public EscapeHtmlTag() {
+        super();
+        init();
+    }
+
+
+    private void init() {
+        reader = null;
+        writer = null;
+    }
+
+    //*********************************************************************
+    // Tag's properties
+
+    /** Tag's 'reader' attribute */
+    public void setReader(Reader reader) {
+        this.reader = reader;
+    }
+
+
+    /** Tag's 'writer' attribute */
+    public void setWriter(Writer writer) {
+        this.writer = writer;
+    }
+
+    //*********************************************************************
+    // TagSupport methods
+
+    public int doEndTag() throws JspException {
+        Reader in;
+        Writer out;
+
+        if (reader == null) {
+            String bcs = getBodyContent().getString().trim();
+            if (bcs == null || bcs.equals("")) {
+                throw new JspTagException("In <escapeHtml>, 'reader' " +
+                                          "not specified and no non-whitespace content inside the tag.");
+            }
+            in = castToReader(bcs);
+        } else {
+            in = reader;
+        }
+
+        if (writer == null) {
+            out = pageContext.getOut();
+        } else {
+            out = writer;
+        }
+
+        transform(in, out);
+        return EVAL_PAGE;
+    }
+
+
+    /** Releases any resources we may have (or inherit) */
+    public void release() {
+        super.release();
+        init();
+    }
+
+    //*********************************************************************
+    // Tag's scific behavior methods
+
+    /** Transform */
+    public void transform(Reader reader, Writer writer)
+          throws JspException {
+        int c;
+        try {
+            writer.write("<pre>");
+            while ((c = reader.read()) != -1) {
+                if (c == '<') {
+                    writer.write("<");
+                } else if (c == '>') {
+                    writer.write(">");
+                } else {
+                    writer.write(c);
+                }
+            }
+            writer.write("</pre>");
+        } catch (IOException ex) {
+            throw new JspException("EscapeHtml: " +
+                                   "error copying chars", ex);
+        }
+    }
+
+    //*********************************************************************
+    // Utility methods   
+
+
+    public static Reader castToReader(Object obj) throws JspException {
+        if (obj instanceof InputStream) {
+            return new InputStreamReader((InputStream) obj);
+        } else if (obj instanceof Reader) {
+            return (Reader) obj;
+        } else if (obj instanceof String) {
+            return new StringReader((String) obj);
+        }
+        throw new JspException("Invalid type '" + obj.getClass().getName() +
+                               "' for castToReader()");
+    }
+
+
+    public static Writer castToWriter(Object obj) throws JspException {
+        if (obj instanceof OutputStream) {
+            return new OutputStreamWriter((OutputStream) obj);
+        } else if (obj instanceof Writer) {
+            return (Writer) obj;
+            /*@@@
+        } else if (obj instanceof String) {
+            return new StringWriter();
+             */
+        }
+        throw new JspException("Invalid type '" + obj.getClass().getName() +
+                               "' for castToWriter()");
+    }
+
+}
diff --git a/jsf-demo/archive/components/web/ShowSource.jsp b/jsf-demo/archive/components/web/ShowSource.jsp
new file mode 100644
index 0000000..1c293cc
--- /dev/null
+++ b/jsf-demo/archive/components/web/ShowSource.jsp
@@ -0,0 +1,80 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<!--
+  Displays the content of the file specified in request
+  parameter "filename".
+  <%-- Warning!  Can be used to retrieve the source code for
+       any file in the 'standard-examples' application.
+       It is not advisable to insert any sensitive code
+       (even as an experiment) into this application --%>
+-->
+
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+<%@ taglib prefix="ex" uri="/WEB-INF/demo.tld" %>
+
+<%-- 
+  Let's get back the URL as a String so we can use it to
+  demonstrate "c:import"
+--%>
+<% pageContext.setAttribute("filepath",
+     application.
+       getResource(request.getParameter("filename")).toExternalForm()); %>
+<% pageContext.setAttribute("filename", request.getParameter("filename")); %>
+
+<html>
+<head>
+  <title>JSTL: Source code for <c:out value="${filename}"/></title>
+</head>
+<body bgcolor="#FFFFFF">
+<h3>Source code for:  <c:out value="${filename}"/></h3>
+
+<hr>
+
+<c:import varReader="reader" url="${filepath}">
+  <ex:escapeHtml reader="${reader}"/>
+</c:import>
+<hr>
+</body>
+</html>
diff --git a/jsf-demo/archive/components/web/WEB-INF/faces-config.xml b/jsf-demo/archive/components/web/WEB-INF/faces-config.xml
new file mode 100644
index 0000000..3fc71fe
--- /dev/null
+++ b/jsf-demo/archive/components/web/WEB-INF/faces-config.xml
@@ -0,0 +1,308 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd"
+    version="1.2">
+
+  <!-- =================== Initialize Image Map Hotspot Data ============== -->
+
+  <managed-bean>
+    <managed-bean-name>imageMap</managed-bean-name>
+    <managed-bean-class>com.sun.javaee.blueprints.components.ui.model.ImageMap </managed-bean-class>
+    <managed-bean-scope> session </managed-bean-scope>
+  </managed-bean>
+
+  <managed-bean>
+    <description>
+      Causes the default VariableResolver implementation to instantiate the 
+      managed bean, NA of the class, com.sun.javaee.blueprints.components.ui.model.ImageArea in application 
+      scope if the bean does not already exist in any scope and initialize the
+      shape, alt, and coords properties with the values specified by the
+      managed-property elements.
+    </description>
+    <managed-bean-name> NA </managed-bean-name>
+    <managed-bean-class>com.sun.javaee.blueprints.components.ui.model.ImageArea </managed-bean-class>
+    <managed-bean-scope> application </managed-bean-scope>
+    <managed-property>
+      <description>
+        Initializes the shape property of the managed bean, NA with the value, 
+        poly.
+      </description>
+      <property-name>shape</property-name>
+      <value>poly</value>
+    </managed-property>
+    <managed-property>
+      <description>
+        Initializes the alt property of the managed bean, NA with the value, 
+        NAmerica.
+      </description>
+      <property-name>alt</property-name>
+      <value>NAmerica</value>
+    </managed-property>
+    <managed-property>
+      <description>
+        Initializes the coords property of the managed bean, NA with the value 
+        specified by the value element.
+      </description>
+      <property-name>coords</property-name>
+      <value>
+        6,15,6,28,2,30,6,34,13,28,17,28,25,35,25,44,37,45,45,46,45,48,48,49,48,44,60,35,55,21,48,16,6,15
+      </value>
+    </managed-property>
+  </managed-bean>
+
+  <managed-bean>
+     <description>
+      Causes the default VariableResolver implementation to instantiate the 
+      managed bean, SA of the class, com.sun.javaee.blueprints.components.ui.model.ImageArea in application 
+      scope if the bean does not already exist in any scope and initialize the
+      shape, alt, and coords properties with the values specified by the
+      managed-property elements.
+    </description>
+    <managed-bean-name>SA</managed-bean-name>
+    <managed-bean-class>com.sun.javaee.blueprints.components.ui.model.ImageArea</managed-bean-class>
+    <managed-bean-scope>application</managed-bean-scope>
+    <managed-property>
+      <description>
+        Initializes the shape property of the managed bean, SA with the value 
+        poly.
+      </description>
+      <property-name>shape</property-name>
+      <value>poly</value>
+    </managed-property>
+    <managed-property>
+      <description>
+        Initializes the alt property of the managed bean, SA with the value 
+        SAmerica.
+      </description>
+      <property-name>alt</property-name>
+      <value>SAmerica</value>
+    </managed-property>
+    <managed-property>
+      <description>
+        Initializes the coords property of the managed bean, SA with the value 
+        specified by the value element.
+      </description>
+      <property-name>coords</property-name>
+      <value>
+        29,44,49,71,49,91,54,91,73,63,57,52,46,51,39,45
+      </value>
+    </managed-property>
+  </managed-bean>
+
+  <managed-bean>
+     <description>
+      Causes the default VariableResolver implementation to instantiate the 
+      managed bean, finA of the class, com.sun.javaee.blueprints.components.ui.model.ImageArea in application 
+      scope if the bean does not already exist in any scope and initialize the
+      shape, alt, and coords properties with the values specified by the
+      managed-property elements.
+    </description>
+    <managed-bean-name>finA</managed-bean-name>
+    <managed-bean-class>com.sun.javaee.blueprints.components.ui.model.ImageArea</managed-bean-class>
+    <managed-bean-scope>application</managed-bean-scope>
+    <managed-property>
+      <description>
+        Initializes the shape property of the managed bean, finA with the value 
+        poly.
+      </description>
+      <property-name>shape</property-name>
+      <value>poly</value>
+    </managed-property>
+    <managed-property>
+      <description>
+        Initializes the alt property of the managed bean, finA with the value 
+        Finland.
+      </description>
+      <property-name>alt</property-name>
+      <value>Finland</value>
+    </managed-property>
+    <managed-property>
+      <description>
+        Initializes the coords property of the managed bean, finA with the value 
+        specified by the value element.
+      </description>
+      <property-name>coords</property-name>
+      <value>
+        97,17,94,21,97,29,102,29,101,18,97,17
+      </value>
+    </managed-property>
+  </managed-bean>
+
+  <managed-bean>
+     <description>
+      Causes the default VariableResolver implementation to instantiate the 
+      managed bean, gerA of the class, com.sun.javaee.blueprints.components.ui.model.ImageArea in application 
+      scope if the bean does not already exist in any scope and initialize the
+      shape, alt, and coords properties with the values specified by the
+      managed-property elements.
+    </description>
+    <managed-bean-name> gerA </managed-bean-name>
+    <managed-bean-class>com.sun.javaee.blueprints.components.ui.model.ImageArea </managed-bean-class>
+    <managed-bean-scope> application </managed-bean-scope>
+    <managed-property>
+      <description>
+        Initializes the shape property of the managed bean, gerA with the value 
+        poly.
+      </description>
+      <property-name>shape</property-name>
+      <value>poly</value>
+    </managed-property>
+    <managed-property>
+      <description>
+        Initializes the alt property of the managed bean, gerA with the value 
+        Germany.
+      </description>
+      <property-name>alt</property-name>
+      <value>Germany</value>
+    </managed-property>
+    <managed-property>
+      <description>
+        Initializes the coords property of the managed bean, gerA with the value 
+        specified by the value element.
+      </description>
+      <property-name>coords</property-name>
+      <value>
+        90,28,96,28,96,39,90,39,90,28
+      </value>
+    </managed-property>
+  </managed-bean>
+
+  <managed-bean>
+     <description>
+      Causes the default VariableResolver implementation to instantiate the 
+      managed bean, fraA of the class, com.sun.javaee.blueprints.components.ui.model.ImageArea in application 
+      scope if the bean does not already exist in any scope and initialize the
+      shape, alt, and coords properties with the values specified by the
+      managed-property elements.
+    </description>
+    <managed-bean-name> fraA </managed-bean-name>
+    <managed-bean-class>com.sun.javaee.blueprints.components.ui.model.ImageArea </managed-bean-class>
+    <managed-bean-scope> application </managed-bean-scope>
+    <managed-property>
+      <description>
+        Initializes the shape property of the managed bean, fraA with the value 
+        poly.
+      </description>
+      <property-name>shape</property-name>
+      <value>poly</value>
+    </managed-property>
+    <managed-property>
+      <description>
+        Initializes the alt property of the managed bean, fraA with the value 
+        France.
+      </description>
+      <property-name>alt</property-name>
+      <value>France</value>
+    </managed-property>
+    <managed-property>
+      <description>
+        Initializes the coords property of the managed bean, fraA with the value 
+        specified by the value element.
+      </description>
+      <property-name>coords</property-name>
+      <value>
+        84,31,84,39,90,39,90,30,84,31
+      </value>
+    </managed-property>
+  </managed-bean>
+  
+  <managed-bean>
+    <managed-bean-name>process</managed-bean-name>
+    <managed-bean-class>demo.model.ProcessBean</managed-bean-class>
+    <managed-bean-scope>session</managed-bean-scope>
+  </managed-bean>
+  
+  <managed-bean>
+    <managed-bean-name>RepeaterBean</managed-bean-name>
+    <managed-bean-class>demo.model.RepeaterBean</managed-bean-class>
+    <managed-bean-scope>request</managed-bean-scope>
+  </managed-bean>
+
+  <managed-bean>
+    <managed-bean-name>ResultSetBean</managed-bean-name>
+    <managed-bean-class>demo.model.ResultSetBean</managed-bean-class>
+    <managed-bean-scope>session</managed-bean-scope>
+  </managed-bean>
+  
+  <managed-bean>
+    <managed-bean-name>GraphBean</managed-bean-name>
+    <managed-bean-class>demo.model.GraphBean</managed-bean-class>
+    <managed-bean-scope>session</managed-bean-scope>
+  </managed-bean>  
+
+  <managed-bean>
+    <managed-bean-name>ChartBean</managed-bean-name>
+    <managed-bean-class>demo.model.ChartBean</managed-bean-class>
+    <managed-bean-scope>session</managed-bean-scope>
+  </managed-bean>
+
+  <navigation-rule>
+    <from-view-id>/progressbar.jsp</from-view-id>
+    <navigation-case>
+      <from-outcome>start</from-outcome>
+      <to-view-id>/wait.jsp</to-view-id>
+    </navigation-case>
+  </navigation-rule>
+  
+  <navigation-rule>
+    <from-view-id>/wait.jsp</from-view-id>
+    <navigation-case>
+       <from-outcome>complete</from-outcome>
+      <to-view-id>/complete.jsp</to-view-id>
+    </navigation-case>
+  </navigation-rule>
+  
+  <navigation-rule>
+    <from-view-id>/complete.jsp</from-view-id>
+    <navigation-case>
+       <from-outcome>progressbar</from-outcome>
+      <to-view-id>/progressbar.jsp</to-view-id>
+    </navigation-case>
+  </navigation-rule>  
+
+
+
+</faces-config>
diff --git a/jsf-demo/archive/components/web/WEB-INF/tlds/demo.tld b/jsf-demo/archive/components/web/WEB-INF/tlds/demo.tld
new file mode 100644
index 0000000..0bccdc5
--- /dev/null
+++ b/jsf-demo/archive/components/web/WEB-INF/tlds/demo.tld
@@ -0,0 +1,79 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE taglib
+  PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
+  "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
+
+
+<taglib>
+
+  <!-- ============== Tag Library Description Elements ============= -->
+  <tlib-version>0.03</tlib-version>
+  <jsp-version>1.2</jsp-version>
+  <short-name>Demo Taglib</short-name>
+  <uri>components_demo_taglibrary</uri>
+  <description>
+    This tag library contains any tags needed to showcase the demo components
+  </description>
+
+  <tag>
+    <name>escapeHtml</name>
+    <tag-class>demo.taglib.EscapeHtmlTag</tag-class>
+    <body-content>JSP</body-content>
+    <attribute>
+        <name>reader</name>
+        <required>false</required>
+        <rtexprvalue>true</rtexprvalue>
+        <type>java.io.Reader</type>
+    </attribute>  
+    <attribute>
+        <name>writer</name>
+        <required>false</required>
+        <rtexprvalue>true</rtexprvalue>
+        <type>java.io.Writer</type>
+    </attribute>  
+  </tag>
+
+
+</taglib>
diff --git a/jsf-demo/archive/components/web/WEB-INF/web.xml b/jsf-demo/archive/components/web/WEB-INF/web.xml
new file mode 100644
index 0000000..a9f53cd
--- /dev/null
+++ b/jsf-demo/archive/components/web/WEB-INF/web.xml
@@ -0,0 +1,138 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<web-app version="2.5"
+         xmlns="http://java.sun.com/xml/ns/javaee"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" >
+    
+  <display-name>JavaServer Faces Custom Components</display-name>
+  <description>
+        JavaServer Faces Custom Components
+    </description>
+  <context-param>
+    <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+    <param-value>client</param-value>
+  </context-param>
+  <context-param>
+    <param-name>tree.control.images</param-name>
+    <param-value>/images</param-value>
+  </context-param>
+  <context-param>
+      <description>
+            Set this flag to true if you want the JavaServer Faces
+            Reference Implementation to validate the XML in your
+            faces-config.xml resources against the DTD.  Default
+            value is false.
+        </description>
+    <param-name>com.sun.faces.validateXml</param-name>
+    <param-value>true</param-value>    
+  </context-param>
+  <!--
+         PENDING:  MapComponent and GraphComponent currently add
+         a default listener in their constructor, which can only
+         succeed if there is a FacesContext for the current request.
+    -->
+  <context-param>
+      <description>
+            Set this flag to true if you want the JavaServer Faces
+            Reference Implementation to verify that all of the application
+            objects you have configured (components, converters,
+            renderers, and validators) can be successfully created.
+            Default value is false.
+        </description>
+    <param-name>com.sun.faces.verifyObjects</param-name>
+    <param-value>false</param-value>
+    
+  </context-param>
+  <servlet>
+    <servlet-name>Faces Servlet</servlet-name>
+    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+    <load-on-startup> 1 </load-on-startup>
+  </servlet>
+  <!-- Chart Servlet -->
+  <servlet>
+    <servlet-name>ChartServlet</servlet-name>
+    <servlet-class>com.sun.javaee.blueprints.components.ui.renderkit.ChartServlet</servlet-class>
+  </servlet>
+  <!-- Faces Servlet Mapping -->
+  <servlet-mapping>
+    <servlet-name>Faces Servlet</servlet-name>
+    <url-pattern>*.faces</url-pattern>
+  </servlet-mapping>
+  <servlet-mapping>
+    <servlet-name>Faces Servlet</servlet-name>
+    <url-pattern>/faces/*</url-pattern>
+  </servlet-mapping>
+  <servlet-mapping>
+    <servlet-name>ChartServlet</servlet-name>
+    <url-pattern>/ChartServlet</url-pattern>
+  </servlet-mapping>
+  <!-- Welcome File List -->
+  <welcome-file-list>
+    <welcome-file>index.jsp</welcome-file>
+  </welcome-file-list>
+  <security-constraint>
+    <!-- This security constraint illustrates how JSP pages
+             with JavaServer Faces components can be protected from
+             being accessed without going through the Faces Servlet.
+             The security constraint ensures that the Faces Servlet will
+             be used or the pages will not be processed. -->
+    <display-name>Restrict access to JSP pages</display-name>
+    <web-resource-collection>
+      <web-resource-name>
+                Restrict access to JSP pages
+            </web-resource-name>
+      <url-pattern>/imagemap.jsp</url-pattern>
+      <url-pattern>/menu.jsp</url-pattern>
+      <url-pattern>/repeater.jsp</url-pattern>
+      <url-pattern>/result-set.jsp</url-pattern>
+      <url-pattern>/tabbedpanes.jsp</url-pattern>
+    </web-resource-collection>
+    <auth-constraint>
+      <description>
+                    With no roles defined, no access granted
+                </description>
+    </auth-constraint>
+  </security-constraint>
+</web-app>
diff --git a/jsf-demo/archive/components/web/ajaxValidator.jsp b/jsf-demo/archive/components/web/ajaxValidator.jsp
new file mode 100644
index 0000000..52012cb
--- /dev/null
+++ b/jsf-demo/archive/components/web/ajaxValidator.jsp
@@ -0,0 +1,92 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
+<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+<%@ taglib uri="http://java.sun.com/blueprints/ee5/components/ui" prefix="d" %>
+
+<f:view>
+
+<html>
+<head>
+
+<title>AJAX validator</title>
+</head>
+<body>
+
+      <h:form>
+      
+        <p>Call a server side validator using AJAX.  Display the
+        result when the onblur event happens.</p>
+        
+        <p>Enter a string greater than three characters.  Validation is
+        fired on the "onkeypress" event.</p>
+      
+        <p><d:ajaxValidator messageId="input1" eventHook="onkeypress">
+          <h:inputText>
+            <f:validateLength minimum="3" />
+          </h:inputText>
+        </d:ajaxValidator></p>
+        
+        <span id="input1" style="color:red"></span>
+        
+        <p>Enter a date in all numeric format, like this: 12/12/1995.
+        Validation is fired on the "onblur" event.</p>
+        
+        <p><d:ajaxValidator messageId="input2">
+          <h:inputText>
+            <f:convertDateTime dateStyle="short"/>
+          </h:inputText>
+        </d:ajaxValidator></p>
+        
+        <span id="input2" style="color:blue"></span>
+        
+        <p><h:commandButton value="reload"/></p>
+
+<p><a href='<%= request.getContextPath() + "/index.jsp" %>'>Back</a> to home page.
+</p>
+        
+      </h:form>
+</f:view>
+
+</body>
+</html>
diff --git a/jsf-demo/archive/components/web/chart.jsp b/jsf-demo/archive/components/web/chart.jsp
new file mode 100644
index 0000000..82b01eb
--- /dev/null
+++ b/jsf-demo/archive/components/web/chart.jsp
@@ -0,0 +1,202 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<%@ taglib uri="http://java.sun.com/jsf/core"  prefix="f" %>
+<%@ taglib uri="http://java.sun.com/jsf/html"  prefix="h" %>
+<%@ taglib uri="http://java.sun.com/blueprints/ee5/components/ui" prefix="d" %>
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<f:view>
+<html>
+<head>
+  <title>Chart Example</title>
+</head>
+<body bgcolor="white">
+
+<h:form>
+       
+     <hr>
+     <table> 
+      <tr>
+         <th align="left"><h:outputText value="Vertical Bar Chart with data specifed via JSP" /></th>
+      </tr> 
+      <tr> 
+      <td>
+      <d:chart width="300" height="300" title="Employee Number By Department" xlabel="Departments" ylabel="Employees">
+         <d:chartItem itemLabel="Eng" itemValue="200" itemColor="red" />
+         <d:chartItem itemLabel="Mktg" itemValue="400" itemColor="green" />
+         <d:chartItem itemLabel="Sales" itemValue="250" itemColor="blue" />
+         <d:chartItem itemLabel="R&D" itemValue="350" itemColor="orange" />
+         <d:chartItem itemLabel="HR" itemValue="450" itemColor="cyan" />
+      </d:chart> 
+      </td>
+      <td>
+      <table>
+      <tr>
+         <th align="left"><h:outputText value="Horizontal Bar Chart with data specifed via JSP" /></th>
+      </tr>
+      <tr>
+      <td>
+      <d:chart width="300" height="300" type="bar" orientation="horizontal" 
+         title="Employee Number By Department" xlabel="Employees" ylabel="Departments">
+         <d:chartItem itemLabel="Eng" itemValue="200" itemColor="red" />
+         <d:chartItem itemLabel="Mktg" itemValue="400" itemColor="green" />
+         <d:chartItem itemLabel="Sales" itemValue="250" itemColor="blue" />
+         <d:chartItem itemLabel="R&D" itemValue="350" itemColor="orange" />
+         <d:chartItem itemLabel="HR" itemValue="450" itemColor="cyan" />
+      </d:chart>
+      </td>
+      </tr>
+      <tr>
+         <th align="left"><h:outputText value="Pie Chart with data specifed via JSP" /></th>
+
+      </tr>
+      <tr>
+     <td>
+     <d:chart width="400" height="200" type="pie" 
+         title="Employee Number By Department">
+         <d:chartItem itemLabel="Eng" itemValue="200" itemColor="red" />
+         <d:chartItem itemLabel="Mktg" itemValue="400" itemColor="green" />
+         <d:chartItem itemLabel="Sales" itemValue="600" itemColor="blue" />
+         <d:chartItem itemLabel="R&D" itemValue="700" itemColor="orange" />
+         <d:chartItem itemLabel="HR" itemValue="800" itemColor="cyan" />
+     </d:chart> </td>
+     </tr>
+      </table>
+      <td>
+      </tr> 
+    </table>
+
+</h:form>
+</f:view>
+
+  <hr>
+  <a href='<%= request.getContextPath() + "/index.jsp" %>'>Back</a> to home page.
+
+<h1>How to Use this Component</h1>
+
+<p>This component generates different types of charts like Bar and Pie.
+</p>
+
+<h2>JSP Attributes</h2>
+
+<table border="1">
+
+<tr>
+<th>JSP Attribute Name
+</th>
+<th>What it Does
+</th>
+</tr>
+
+<tr>
+
+<td><code>width</code>
+</td>
+<td>
+A value binding expression or a literal value corresponding to the width of the chart.
+</td>
+</tr>
+
+<tr>
+<td><code>height</code>
+</td>
+<td>A value binding expression or a literal value corresponding to the height of the chart.
+</td>
+</tr>
+
+<tr>
+<td><code>orientation</code></td>
+<td>A value binding expression or a literal value corresponding to the orientation of the chart.
+This attribute applies to bar charts only. Valid values are "horizontal" and "vertical".
+Default orientation is "vertical".
+</td>
+</tr>
+
+<tr>
+<td><code>title</code></td>
+<td>A value binding expression or a literal value corresponding to the title of the chart.
+</td>
+</tr>
+
+<tr>
+<td><code>xlabel</code></td>
+<td>A value binding expression or a literal value that represents the label for x-axis.
+</td>
+</tr>
+
+<tr>
+<td><code>ylabel</code></td>
+<td>A value binding expression or a literal value that represents the label for y-axis.
+</td>
+</tr>
+
+<tr>
+<td><code>type</code></td>
+<td>A value binding expression or a literal value that specifies what type of chart to generate.
+Supported types are "bar" and "pie". Default type is "bar".
+</td>
+</tr>
+
+</table>
+
+<h2>How to specify data for chart</h2>
+
+<p>Chart can be described using an array of <code>ChartItem</code> specified in the model or it can be described using <code>JSP</code> tags.</p>
+
+<h3>Described From JSP</h3>
+
+<p>The <code>chart</code> tag consists of multiple <code>chartItem</code> tags.  
+Each <code>chartItem</code> tag corresponds to a single column of the chart. 
+The <code>chartItem</code> tag supports attributes like itemLabel, itemColor and itemValue
+which can be literal value or a valueBinding expression that points to a ChartItem.</p>
+
+<h3>Described From Model</h3>
+
+<p>The <code>value</code> attribute specified on a chart tag refers to an array of <code>ChartItem</code>. 
+Each element of the array represents a single column of the chart.</p>
+
+<hr>
+<a href='<%= request.getContextPath() + "/index.jsp" %>'>Back</a> to home page.
+</body>
+</html>
+
diff --git a/jsf-demo/archive/components/web/complete.jsp b/jsf-demo/archive/components/web/complete.jsp
new file mode 100644
index 0000000..58100b8
--- /dev/null
+++ b/jsf-demo/archive/components/web/complete.jsp
@@ -0,0 +1,66 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
+<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+
+<f:view>
+
+<html>
+<head>
+
+<title>Page that is shown after the long running task is complete.</title>
+</head>
+<body>
+
+  <h:form id="form">
+
+  <p>This page is shown after the long running process completes</p>
+  
+  <p><h:commandButton action="progressbar" value="Start Over" /></p>
+  
+  
+</h:form>
+</f:view>
+
+</body>
+</html>
diff --git a/jsf-demo/archive/components/web/demo-test.jsp b/jsf-demo/archive/components/web/demo-test.jsp
new file mode 100644
index 0000000..fb934b5
--- /dev/null
+++ b/jsf-demo/archive/components/web/demo-test.jsp
@@ -0,0 +1,71 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<HTML>
+    <HEAD> <TITLE> JSF Basic Components Test Page </TITLE> </HEAD>
+
+    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
+    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+
+    <H3> JavaServer Faces custom components test page </H3>
+    <hr>
+
+       <f:view>
+        <h:form id="demotestForm" >
+
+            <table> 
+            <tr> 
+              <td> <h:outputText id="testLabel" value="JavaServer Faces custom components test page..." /> </td>
+            </tr>
+
+          </TR>
+           <td> <a href='<%= request.getContextPath() + "/menu.faces" %>'>Back</a> </td>
+          </TR>
+
+          </table>
+
+
+        </h:form>
+     </f:view>
+</HTML>
diff --git a/jsf-demo/archive/components/web/imagemap.jsp b/jsf-demo/archive/components/web/imagemap.jsp
new file mode 100644
index 0000000..c5fcaa1
--- /dev/null
+++ b/jsf-demo/archive/components/web/imagemap.jsp
@@ -0,0 +1,188 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
+<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+<%@ taglib uri="http://java.sun.com/blueprints/ee5/components/ui" prefix="d" %>
+
+<f:view>
+
+<html>
+<head>
+<title>Welcome to JavaServer Faces</title>
+</head>
+<body>
+
+  <f:loadBundle basename="demo.model.Resources" var="mapBundle"/>
+  <h:form>
+  <table>
+
+    <tr><td>
+      <h:outputText  id="welcomeLabel" 
+                                    value="#{mapBundle.welcomeLabel}" />
+    </td></tr>
+
+    <tr><td>
+
+      <h:graphicImage id="mapImage"
+                      url="/images/world.gif"
+                   usemap="#worldMap"/>
+
+      <d:map           id="worldMap"
+        actionListener="#{imageMap.processAreaSelected}"
+                immediate="true"
+                  current="NAmericas">
+
+        <d:area        id="NAmericas"
+                 value="#{NA}"
+              onmouseover="/images/world_namer.gif"
+               onmouseout="/images/world.gif"
+               targetImage="mapImage"/>
+
+        <d:area        id="SAmericas"
+                 value="#{SA}"
+              onmouseover="/images/world_samer.gif"
+               onmouseout="/images/world.gif"
+               targetImage="mapImage"/>
+
+        <d:area        id="Finland"
+                 value="#{finA}"
+              onmouseover="/images/world_finland.gif"
+               onmouseout="/images/world.gif"
+               targetImage="mapImage"/>
+
+        <d:area        id="Germany"
+                 value="#{gerA}"
+              onmouseover="/images/world_germany.gif"
+               onmouseout="/images/world.gif"
+               targetImage="mapImage"/>
+
+        <d:area        id="France"
+                 value="#{fraA}"
+              onmouseover="/images/world_france.gif"
+               onmouseout="/images/world.gif"
+               targetImage="mapImage"/>
+
+      </d:map>
+
+    </td></tr>
+
+  </table>
+
+<hr>
+
+
+<a href='<%= request.getContextPath() + "/index.jsp" %>'>Back</a> to home page.
+
+<h1>How to Use this Component</h1>
+
+<p>This component renders a clickable image map of the world and regions
+can be selected to change the locale.</p>
+
+<p>You can mouse over and click on some parts of the world that speak
+U.S. English, French, German, Finnish, and Latin American Spanish.  This
+will cause the appropriate Locale to be set into the application,
+causing the proper ResourceBundle lookup.</p>
+
+<h1>Custom Tags / Components</h1>
+
+<p>The <code>MapComponent</code> component is driven by the <code>map</code>
+tag, and it keeps track of the the selected area on the map.  It determines
+the selected area from the incoming request, and fires an
+<code>AreaSelectedEvent</code> whenever the selected area is changed.  <code>AreaSelectedEvent</code>
+is an <code>ActionEvent</code>.  A method binding reference expression tag attribute is 
+used to reference a method in the backing file bean (imagemap), and that 
+method listens for action events.  The listener method <code>processAreaSelected</code>,
+receives the <code>ActionEvent</code> and sets the locale accordingly.
+
+<p>The <code>AreaComponent</code> component is driven by the <code>area</code>
+tag. It uses Javascript events to visually show the selected area, and it sends
+the identifier of the selected area as part of the request.  This tag must be
+nested within an <code><d:map></code> tag.</p>
+
+<h2>JSP Attributes</h2>
+
+<p>Attributes described below apply to map tag.
+Attributes can represent values directly or point to them via value binding
+expressions except for actionListener attribute that points to a
+method reference. 
+
+<table border="1">
+
+<tr>
+<th>JSP Attribute Name</th>
+<th>What it Does</th>
+</tr>
+
+<tr>
+<td><code>actionListener</code></td>
+<td>Method binding reference that refers to a method that sets the locale
+    from information contained in the <code>AreaSelectedEvent</code>.
+</td>
+</tr>
+
+<tr>
+<td><code>immediate</code>
+</td>
+<td>A flag indicating that the default ActionListener should execute
+      immediately (that is, during the Apply Request Values phase of the
+      request processing lifecycle, instead of waiting for Invoke
+      Application phase). The default value of this property must be false.
+</td>
+</tr>
+
+<tr>
+<td><code>current</code></td>
+<td>This refers to the current selected area on the map.
+</td>
+</tr>
+
+</table>
+
+<hr>
+
+</body>
+</html>
+</h:form>
+</f:view>
diff --git a/jsf-demo/archive/components/web/images/arrow-left.gif b/jsf-demo/archive/components/web/images/arrow-left.gif
new file mode 100644
index 0000000..8b0dbcc
Binary files /dev/null and b/jsf-demo/archive/components/web/images/arrow-left.gif differ
diff --git a/jsf-demo/archive/components/web/images/arrow-right.gif b/jsf-demo/archive/components/web/images/arrow-right.gif
new file mode 100644
index 0000000..954803d
Binary files /dev/null and b/jsf-demo/archive/components/web/images/arrow-right.gif differ
diff --git a/jsf-demo/archive/components/web/images/code.gif b/jsf-demo/archive/components/web/images/code.gif
new file mode 100644
index 0000000..93af2cd
Binary files /dev/null and b/jsf-demo/archive/components/web/images/code.gif differ
diff --git a/jsf-ri/web/test/resources/nvLibrary/images/duke-nv.gif b/jsf-demo/archive/components/web/images/duke.gif
similarity index 100%
copy from jsf-ri/web/test/resources/nvLibrary/images/duke-nv.gif
copy to jsf-demo/archive/components/web/images/duke.gif
diff --git a/jsf-demo/archive/components/web/images/execute.gif b/jsf-demo/archive/components/web/images/execute.gif
new file mode 100644
index 0000000..f64d70f
Binary files /dev/null and b/jsf-demo/archive/components/web/images/execute.gif differ
diff --git a/jsf-demo/archive/components/web/images/folder_16_pad.gif b/jsf-demo/archive/components/web/images/folder_16_pad.gif
new file mode 100644
index 0000000..67702a1
Binary files /dev/null and b/jsf-demo/archive/components/web/images/folder_16_pad.gif differ
diff --git a/jsf-demo/archive/components/web/images/handledownlast.gif b/jsf-demo/archive/components/web/images/handledownlast.gif
new file mode 100644
index 0000000..7badb68
Binary files /dev/null and b/jsf-demo/archive/components/web/images/handledownlast.gif differ
diff --git a/jsf-demo/archive/components/web/images/handledownmiddle.gif b/jsf-demo/archive/components/web/images/handledownmiddle.gif
new file mode 100644
index 0000000..5b3cfed
Binary files /dev/null and b/jsf-demo/archive/components/web/images/handledownmiddle.gif differ
diff --git a/jsf-demo/archive/components/web/images/handlerightlast.gif b/jsf-demo/archive/components/web/images/handlerightlast.gif
new file mode 100644
index 0000000..e9d0a92
Binary files /dev/null and b/jsf-demo/archive/components/web/images/handlerightlast.gif differ
diff --git a/jsf-demo/archive/components/web/images/handlerightmiddle.gif b/jsf-demo/archive/components/web/images/handlerightmiddle.gif
new file mode 100644
index 0000000..02eff2b
Binary files /dev/null and b/jsf-demo/archive/components/web/images/handlerightmiddle.gif differ
diff --git a/jsf-demo/archive/components/web/images/linelastnode.gif b/jsf-demo/archive/components/web/images/linelastnode.gif
new file mode 100644
index 0000000..e0ff2f0
Binary files /dev/null and b/jsf-demo/archive/components/web/images/linelastnode.gif differ
diff --git a/jsf-demo/archive/components/web/images/linemiddlenode.gif b/jsf-demo/archive/components/web/images/linemiddlenode.gif
new file mode 100644
index 0000000..009f29b
Binary files /dev/null and b/jsf-demo/archive/components/web/images/linemiddlenode.gif differ
diff --git a/jsf-demo/archive/components/web/images/linevertical.gif b/jsf-demo/archive/components/web/images/linevertical.gif
new file mode 100644
index 0000000..fdec15b
Binary files /dev/null and b/jsf-demo/archive/components/web/images/linevertical.gif differ
diff --git a/jsf-demo/archive/components/web/images/world.gif b/jsf-demo/archive/components/web/images/world.gif
new file mode 100644
index 0000000..ee4a5f5
Binary files /dev/null and b/jsf-demo/archive/components/web/images/world.gif differ
diff --git a/jsf-demo/archive/components/web/images/world_finland.gif b/jsf-demo/archive/components/web/images/world_finland.gif
new file mode 100644
index 0000000..f967da8
Binary files /dev/null and b/jsf-demo/archive/components/web/images/world_finland.gif differ
diff --git a/jsf-demo/archive/components/web/images/world_france.gif b/jsf-demo/archive/components/web/images/world_france.gif
new file mode 100644
index 0000000..68609f3
Binary files /dev/null and b/jsf-demo/archive/components/web/images/world_france.gif differ
diff --git a/jsf-demo/archive/components/web/images/world_germany.gif b/jsf-demo/archive/components/web/images/world_germany.gif
new file mode 100644
index 0000000..173c3e5
Binary files /dev/null and b/jsf-demo/archive/components/web/images/world_germany.gif differ
diff --git a/jsf-demo/archive/components/web/images/world_namer.gif b/jsf-demo/archive/components/web/images/world_namer.gif
new file mode 100644
index 0000000..0fa85ed
Binary files /dev/null and b/jsf-demo/archive/components/web/images/world_namer.gif differ
diff --git a/jsf-demo/archive/components/web/images/world_samer.gif b/jsf-demo/archive/components/web/images/world_samer.gif
new file mode 100644
index 0000000..4592de4
Binary files /dev/null and b/jsf-demo/archive/components/web/images/world_samer.gif differ
diff --git a/jsf-demo/archive/components/web/index.jsp b/jsf-demo/archive/components/web/index.jsp
new file mode 100644
index 0000000..065fd0c
--- /dev/null
+++ b/jsf-demo/archive/components/web/index.jsp
@@ -0,0 +1,261 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<html>
+<head>
+<title>Demonstration Components Home Page</title>
+<style type="text/css" media="screen">
+TD { text-align: center }
+</style>
+</head>
+<body bgcolor="white">
+
+<%
+  pageContext.removeAttribute("graph", PageContext.SESSION_SCOPE);
+  pageContext.removeAttribute("list", PageContext.SESSION_SCOPE);
+%>
+
+<p>Here is a small gallery of custom components built from JavaServer
+Faces technology.</p>
+
+
+<table border="1">
+
+<tr>
+
+<th>Component Content</th> 
+
+<th>View JSP Source</th> 
+
+<th>View Java Source</th> 
+
+<th>Execute JSP</th></tr>
+
+<tr>
+<td>Image Map
+</td>
+
+<td><a href="ShowSource.jsp?filename=/imagemap.jsp"><img src="images/code.gif" width="24" height="24" border="0"></a>
+</td>
+
+<td>
+<a href="ShowSource.jsp?filename=/src/java/components/java/com/sun/javaee/blueprints/components/ui/components/AreaComponent.java">com/sun/javaee/blueprints/components/ui/components/AreaComponent.java</a><br />
+<a href="ShowSource.jsp?filename=/src/java/components/java/com/sun/javaee/blueprints/components/ui/components/AreaSelectedEvent.java">com/sun/javaee/blueprints/components/ui/components/AreaSelectedEvent.java</a><br />
+<a href="ShowSource.jsp?filename=/src/java/components/java/com/sun/javaee/blueprints/components/ui/components/AreaSelectedListener.java">com/sun/javaee/blueprints/components/ui/components/AreaSelectedListener.java</a><br />
+<a href="ShowSource.jsp?filename=/src/java/components/java/com/sun/javaee/blueprints/components/ui/components/MapComponent.java">com/sun/javaee/blueprints/components/ui/components/MapComponent.java</a><br />
+<a href="ShowSource.jsp?filename=/src/java/components/java/com/sun/javaee/blueprints/components/ui/model/ImageArea.java">com/sun/javaee/blueprints/components/ui/model/ImageArea.java</a><br />
+<a href="ShowSource.jsp?filename=/src/java/components/java/com/sun/javaee/blueprints/components/ui/renderkit/AreaRenderer.java">com/sun/javaee/blueprints/components/ui/renderkit/AreaRenderer.java</a><br />
+<a href="ShowSource.jsp?filename=/src/java/components/java/com/sun/javaee/blueprints/components/ui/renderkit/MapRenderer.java">com/sun/javaee/blueprints/components/ui/renderkit/MapRenderer.java</a><br />
+<a href="ShowSource.jsp?filename=/src/java/components/java/com/sun/javaee/blueprints/components/ui/taglib/AreaTag.java">com/sun/javaee/blueprints/components/ui/taglib/AreaTag.java</a><br />
+<a href="ShowSource.jsp?filename=/src/java/components/java/com/sun/javaee/blueprints/components/ui/taglib/MapTag.java">com/sun/javaee/blueprints/components/ui/taglib/MapTag.java</a><br />
+
+
+
+</td>
+
+<td><a href="imagemap.faces"><img src="images/execute.gif" width="24" height="24" border="0"></a>
+</td>
+
+</tr>
+
+
+<tr>
+
+<td>Menu or Tree
+</td>
+
+<td><a href="ShowSource.jsp?filename=/menu.jsp"><img src="images/code.gif" width="24" height="24" border="0"></a></td>
+
+<td>
+
+<a href="ShowSource.jsp?filename=/src/java/components/java/com/sun/javaee/blueprints/components/ui/taglib/GraphMenuBarTag.java">com/sun/javaee/blueprints/components/ui/taglib/GraphMenuBarTag.java</a><br />
+<a href="ShowSource.jsp?filename=/src/java/components/java/com/sun/javaee/blueprints/components/ui/taglib/GraphMenuNodeTag.java">com/sun/javaee/blueprints/components/ui/taglib/GraphMenuNodeTag.java</a><br />
+<a href="ShowSource.jsp?filename=/src/java/components/java/com/sun/javaee/blueprints/components/ui/taglib/GraphMenuTreeTag.java">com/sun/javaee/blueprints/components/ui/taglib/GraphMenuTreeTag.java</a><br />
+<a href="ShowSource.jsp?filename=/src/java/components/java/com/sun/javaee/blueprints/components/ui/taglib/GraphTreeNodeTag.java">com/sun/javaee/blueprints/components/ui/taglib/GraphTreeNodeTag.java</a><br />
+<a href="ShowSource.jsp?filename=/src/java/components/java/com/sun/javaee/blueprints/components/ui/components/GraphComponent.java">com/sun/javaee/blueprints/components/ui/components/GraphComponent.java</a><br />
+<a href="ShowSource.jsp?filename=/src/java/components/java/com/sun/javaee/blueprints/components/ui/model/Graph.java">com/sun/javaee/blueprints/components/ui/model/Graph.java</a><br />
+<a href="ShowSource.jsp?filename=/src/java/components/java/com/sun/javaee/blueprints/components/ui/model/Node.java">com/sun/javaee/blueprints/components/ui/model/Node.java</a><br />
+<a href="ShowSource.jsp?filename=/src/java/components/java/com/sun/javaee/blueprints/components/ui/renderkit/MenuBarRenderer.java">com/sun/javaee/blueprints/components/ui/renderkit/MenuBarRenderer.java</a><br />
+<a href="ShowSource.jsp?filename=/src/java/components/java/com/sun/javaee/blueprints/components/ui/renderkit/MenuTreeRenderer.java">com/sun/javaee/blueprints/components/ui/renderkit/MenuTreeRenderer.java</a><br />
+<a href="ShowSource.jsp?filename=/src/java/demo/model/GraphBean.java">demo/model/GraphBean.java</a>
+</td>
+
+<td><a href="menu.faces"><img src="images/execute.gif" width="24" height="24" border="0"></a>
+</td>
+
+</tr>
+
+<tr>
+
+<td>Repeater
+</td>
+
+<td><a href="ShowSource.jsp?filename=/repeater.jsp"><img src="images/code.gif" width="24" height="24" border="0"></a>
+</td>
+
+<td>
+<a href="ShowSource.jsp?filename=/src/java/components/java/com/sun/javaee/blueprints/components/ui/taglib/DataRepeaterTag.java">com/sun/javaee/blueprints/components/ui/taglib/DataRepeaterTag.java</a><br />
+<a href="ShowSource.jsp?filename=/src/java/components/java/com/sun/javaee/blueprints/components/ui/renderkit/RepeaterRenderer.java">com/sun/javaee/blueprints/components/ui/renderkit/RepeaterRenderer.java</a><br />
+<a href="ShowSource.jsp?filename=/src/java/demo/model/RepeaterBean.java">demo/model/RepeaterBean.java</a><br />
+</td>
+
+<td><a href="repeater.faces"><img src="images/execute.gif" width="24" height="24" border="0"></a>
+</td>
+
+</tr>
+
+<tr>
+
+<td>Scroller
+</td>
+
+<td><a href="ShowSource.jsp?filename=/result-set.jsp"><img src="images/code.gif" width="24" height="24" border="0"></a>
+</td>
+
+<td>
+<a href="ShowSource.jsp?filename=/src/java/components/java/com/sun/javaee/blueprints/components/ui/taglib/ScrollerTag.java">com/sun/javaee/blueprints/components/ui/taglib/ScrollerTag.java</a><br />
+<a href="ShowSource.jsp?filename=/src/java/components/java/com/sun/javaee/blueprints/components/ui/components/ScrollerComponent.java">com/sun/javaee/blueprints/components/ui/components/ScrollerComponent.java</a><br />
+<a href="ShowSource.jsp?filename=/src/java/demo/model/ResultSetBean.java">demo/model/ResultSetBean.java</a>
+</td>
+
+<td><a href="result-set.faces"><img src="images/execute.gif" width="24" height="24" border="0"></a>
+</td>
+
+</tr>
+
+<tr>
+
+<td>Tabbed Pane
+</td>
+
+<td><a href="ShowSource.jsp?filename=/tabbedpanes.jsp"><img src="images/code.gif" width="24" height="24" border="0"></a>
+</td>
+
+<td>
+<a href="ShowSource.jsp?filename=/src/java/components/java/com/sun/javaee/blueprints/components/ui/taglib/PaneTabTag.java">com/sun/javaee/blueprints/components/ui/taglib/PaneTabTag.java</a><br />
+<a href="ShowSource.jsp?filename=/src/java/components/java/com/sun/javaee/blueprints/components/ui/taglib/PaneTabLabelTag.java">com/sun/javaee/blueprints/components/ui/taglib/PaneTabLabelTag.java</a><br />
+<a href="ShowSource.jsp?filename=/src/java/components/java/com/sun/javaee/blueprints/components/ui/taglib/PaneTabbedTag.java">com/sun/javaee/blueprints/components/ui/taglib/PaneTabbedTag.java</a><br />
+<a href="ShowSource.jsp?filename=/src/java/components/java/com/sun/javaee/blueprints/components/ui/components/PaneComponent.java">com/sun/javaee/blueprints/components/ui/components/PaneComponent.java</a><br />
+<a href="ShowSource.jsp?filename=/src/java/components/java/com/sun/javaee/blueprints/components/ui/components/PaneSelectedEvent.java">com/sun/javaee/blueprints/components/ui/components/PaneSelectedEvent.java</a><br />
+<a href="ShowSource.jsp?filename=/src/java/components/java/com/sun/javaee/blueprints/components/ui/renderkit/TabLabelRenderer.java">com/sun/javaee/blueprints/components/ui/renderkit/TabLabelRenderer.java</a><br />
+<a href="ShowSource.jsp?filename=/src/java/components/java/com/sun/javaee/blueprints/components/ui/renderkit/TabRenderer.java">com/sun/javaee/blueprints/components/ui/renderkit/TabRenderer.java</a><br />
+<a href="ShowSource.jsp?filename=/src/java/components/java/com/sun/javaee/blueprints/components/ui/renderkit/TabbedRenderer.java">com/sun/javaee/blueprints/components/ui/renderkit/TabbedRenderer.java</a><br />
+</td>
+
+<td><a href="tabbedpanes.faces"><img src="images/execute.gif" width="24" height="24" border="0"></a>
+</td>
+
+</tr>
+
+<tr>
+
+<td>Chart
+</td>
+
+<td><a href="ShowSource.jsp?filename=/chart.jsp"><img src="images/code.gif" width="24" height="24" border="0"></a></td>
+
+<td>
+
+<a href="ShowSource.jsp?filename=/src/java/components/java/com/sun/javaee/blueprints/components/ui/taglib/ChartTag.java">com/sun/javaee/blueprints/components/ui/taglib/ChartTag.java</a><br />
+<a href="ShowSource.jsp?filename=/src/java/components/java/com/sun/javaee/blueprints/components/ui/taglib/ChartItemTag.java">com/sun/javaee/blueprints/components/ui/taglib/ChartItemTag.java</a><br />
+<a href="ShowSource.jsp?filename=/src/java/components/java/com/sun/javaee/blueprints/components/ui/components/ChartComponent.java">com/sun/javaee/blueprints/components/ui/components/ChartComponent.java</a><br />
+<a href="ShowSource.jsp?filename=/src/java/components/java/com/sun/javaee/blueprints/components/ui/components/ChartItemComponent.java">com/sun/javaee/blueprints/components/ui/components/ChartItemComponent.java</a><br />
+<a href="ShowSource.jsp?filename=/src/java/components/java/com/sun/javaee/blueprints/components/ui/renderkit/ChartServlet.java">com/sun/javaee/blueprints/components/ui/renderkit/ChartServlet.java</a><br />
+<a href="ShowSource.jsp?filename=/src/java/components/java/com/sun/javaee/blueprints/components/ui/model/ChartItem.java">com/sun/javaee/blueprints/components/ui/model/ChartItem.java</a><br />
+<a href="ShowSource.jsp?filename=/src/java/demo/model/ChartBean.java">demo/model/ChartBean.java</a>
+</td>
+
+<td><a href="chart.faces"><img src="images/execute.gif" width="24" height="24" border="0"></a>
+</td>
+
+</tr>
+
+<tr>
+
+<td>AJAX Progress Bar
+</td>
+
+<td><a href="ShowSource.jsp?filename=/progressbar.jsp"><img src="images/code.gif" width="24" height="24" border="0"></a></td>
+
+<td>
+
+<a href="ShowSource.jsp?filename=/src/java/components/java/com/sun/javaee/blueprints/components/ui/renderkit/AjaxPhaseListener.java">com/sun/javaee/blueprints/components/ui/renderkit/AjaxPhaseListener.java</a><br />
+<a href="ShowSource.jsp?filename=/src/java/components/java/com/sun/javaee/blueprints/components/ui/components/ProgressBarComponent.java">com/sun/javaee/blueprints/components/ui/components/ProgressBarComponent.java</a><br />
+<a href="ShowSource.jsp?filename=/src/java/components/java/com/sun/javaee/blueprints/components/ui/renderkit/ProgressBarRenderer.java">com/sun/javaee/blueprints/components/ui/renderkit/ProgressBarRenderer.java</a><br />
+<a href="ShowSource.jsp?filename=/src/java/components/java/com/sun/javaee/blueprints/components/ui/taglib/ProgressBarTag.java">com/sun/javaee/blueprints/components/ui/taglib/ProgressBarTag.java</a><br />
+<a href="ShowSource.jsp?filename=/wait.jsp">wait.jsp</a><br />
+<a href="ShowSource.jsp?filename=/complete.jsp">complete.jsp</a><br />
+</td>
+
+<td><a href="progressbar.faces"><img src="images/execute.gif" width="24" height="24" border="0"></a>
+</td>
+
+</tr>
+
+<tr>
+
+<td>AJAX Validator
+</td>
+
+<td><a href="ShowSource.jsp?filename=/ajaxValidator.jsp"><img src="images/code.gif" width="24" height="24" border="0"></a></td>
+
+<td>
+
+<a href="ShowSource.jsp?filename=/src/java/components/java/com/sun/javaee/blueprints/components/ui/components/AjaxValidatorComponent.java">com/sun/javaee/blueprints/components/ui/components/AjaxValidatorComponent.java
+</a><br />
+<a href="ShowSource.jsp?filename=/src/java/components/java/com/sun/javaee/blueprints/components/ui/components/AjaxValidatorPhaseListener.java">com/sun/javaee/blueprints/components/ui/components/AjaxValidatorPhaseListener.java</a><br />
+<a href="ShowSource.jsp?filename=/src/java/components/java/com/sun/javaee/blueprints/components/ui/taglib/AjaxValidatorTag.java">com/sun/javaee/blueprints/components/ui/taglib/AjaxValidatorTag.java</a><br />
+<a href="ShowSource.jsp?filename=/src/java/components/java/com/sun/javaee/blueprints/components/ui/renderkit/AjaxPhaseListener.java">com/sun/javaee/blueprints/components/ui/renderkit/AjaxPhaseListener.java</a><br />
+</td>
+
+<td><a href="ajaxValidator.faces"><img src="images/execute.gif" width="24" height="24" border="0"></a>
+</td>
+
+</tr>
+
+
+</table>
+
+</body>
+</head>
diff --git a/jsf-demo/archive/components/web/menu.jsp b/jsf-demo/archive/components/web/menu.jsp
new file mode 100644
index 0000000..fb33242
--- /dev/null
+++ b/jsf-demo/archive/components/web/menu.jsp
@@ -0,0 +1,227 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<%@ taglib uri="http://java.sun.com/jsf/core"   prefix="f" %>
+<%@ taglib uri="http://java.sun.com/jsf/html"   prefix="h" %>
+<%@ taglib uri="http://java.sun.com/blueprints/ee5/components/ui" prefix="d" %>
+
+<f:view>
+<html>
+<head>
+<title>Demonstration Components - Menu</title>
+</head>
+<body bgcolor="white">
+
+<h:form >
+
+<d:stylesheet path="/tree-control-test.css"/>
+
+Render graph as a menu bar (graph retrieved from model):<br>
+<d:graph_menubar id="menu2" value="#{GraphBean.menuGraph}" 
+    selectedClass="tree-control-selected"
+    unselectedClass="tree-control-unselected" immediate="true"/>
+
+<hr>
+Render graph as a menu bar (graph specified via JSP):<br>
+<d:graph_menubar id="menu3" selectedClass="tree-control-selected"
+      unselectedClass="tree-control-unselected" immediate="true">
+    <d:graph_menunode  name="Menu" label="Menu 3" >
+        <d:graph_menunode  name="File" label="File 3" expanded="true">
+            <d:graph_menunode  name="File-New" label="New 3" action="demo-test.faces" />
+            <d:graph_menunode  name="File-Open" label="Open 3" action="demo-test.faces" />
+            <d:graph_menunode  name="File-Close" label="Close 3" enabled="false" />
+            <d:graph_menunode  name="File-Exit" label="Exit 3" action="demo-test.faces" />
+        </d:graph_menunode>
+
+       <d:graph_menunode  name="Edit" label="Edit 3" >
+           <d:graph_menunode  name="Edit-Cut" label="Cut 3" action="demo-test.faces"/>
+           <d:graph_menunode  name="Edit-Copy" label="Copy 3" action="demo-test.faces" />
+           <d:graph_menunode  name="Edit-Paste" label="Paste 3" enabled="false" />
+       </d:graph_menunode>
+   </d:graph_menunode>
+</d:graph_menubar>
+
+<hr>
+Render graph as a tree control (graph retrieved from model):<br>
+<d:graph_menutree id="menu4" value="#{GraphBean.treeGraph}" styleClass="tree-control"
+     selectedClass="tree-control-selected" 
+     unselectedClass="tree-control-unselected" immediate="true"/>
+<hr>
+Render graph as a tree control (graph specified via JSP):<br>
+<d:graph_menutree id="menu5" selectedClass="tree-control-selected"
+    unselectedClass="tree-control-unselected" styleClass="tree-control" 
+    immediate="true">
+    <d:graph_treenode  name="Menu" label="Menu 5" enabled="false" 
+         expanded="true">
+
+        <d:graph_treenode  name="File" label="File 5"
+             icon="folder_16_pad.gif" enabled="false">
+
+            <d:graph_treenode  name="File-New" label="New 5"
+                icon="folder_16_pad.gif" action="demo-test.faces"/>
+            <d:graph_treenode  name="File-Open" label="Open 5"
+                icon="folder_16_pad.gif" action="/demo-test.faces" />
+            <d:graph_treenode  name="File-Close" label="Close 5" enabled="false"
+                icon="folder_16_pad.gif" />
+            <d:graph_treenode  name="File-Exit" label="Exit 5"
+                icon="folder_16_pad.gif" action="demo-test.faces" />
+       </d:graph_treenode>
+
+       <d:graph_treenode  name="Edit" label="Edit 5" 
+           icon="folder_16_pad.gif" expanded="true" enabled="false"> 
+
+           <d:graph_treenode  name="Edit-Cut" label="Cut 5" 
+               icon="folder_16_pad.gif" action="demo-test.faces"/>
+           <d:graph_treenode  name="Edit-Copy" label="Copy 5"
+               icon="folder_16_pad.gif" action="demo-test.faces" />
+           <d:graph_treenode  name="Edit-Paste" label="Paste 5" enabled="false" 
+               icon="folder_16_pad.gif" />
+       </d:graph_treenode>
+   </d:graph_treenode>
+</d:graph_menutree>
+
+<hr>
+</h:form>
+<a href='<%= request.getContextPath() + "/index.jsp" %>'>Back</a> to home page.
+
+<h1>How to Use this Component</h1>
+
+<p>This component renders a <code>Graph</code> as either a menu bar or a tree control.  
+The <code>Graph</code> can be specified as model data, or it can be specified in 
+<code>JSP</code>.</p>
+
+<h2>JSP Attributes</h2>
+
+<p>Attributes described below apply to graph_menubar tag as well as graph_tree tag 
+since they are just two different visual representations of the Graph Component.
+Attributes can represent values directly or point to them via value binding
+expressions except for actionListener attribute that points to a 
+method reference. This component allows the user to define CSS classes via JSP 
+attributes that are output in the rendered markup.  This makes it possible to 
+produce highly customizable output. You can compare the rendered source of this 
+page, using the "View Source" feature of your browser, with 
+<a href="ShowSource.jsp?filename=/menu.jsp">the JSP source</A> for this page.</p>
+
+<table border="1">
+
+<tr>
+<th>JSP Attribute Name</th>
+<th>What it Does</th>
+</tr>
+
+<tr>
+<td><code>selectedClass</code></td>
+<td>A style sheet class which controls the display attributes of the selected 
+menu bar or tree element.  This is used to distinguish the selected portion from 
+the other unselected portions.</td>
+</tr>
+<tr>
+
+<td><code>unselectedClass</code></td>
+<td>A style sheet class which controls the display attributes of an unselected menu bar or tree element.  This is used to distinguish an unselected portion from a selected portion.</
+<td>
+</tr>
+
+<tr>
+<td><code>immediate</code>
+</td>
+<td>A flag indicating that the default ActionListener should execute
+      immediately (that is, during the Apply Request Values phase of the 
+      request processing lifecycle, instead of waiting for Invoke 
+      Application phase). The default value of this property must be false.
+</td>
+</tr>
+
+<tr>
+<td><code>styleClass</code></td>
+<td>The CSS style <code>class</code> to be applied to the entire menu/tree.
+</td>
+</tr>
+
+<tr>
+<td><code>value</code></td>
+<td>Value Binding reference expression that points to a Graph in scoped namespace.
+</td>
+</tr>
+
+<tr>
+<td><code>actionListener</code></td>
+<td>Method binding reference to handle tree expansion and contraction events.
+</td>
+</tr>
+
+</table>
+
+<h2>Menu Bar</h2>
+
+<p>The menu bar can be described from a <code>Graph</code> specified in the model or it can be described from <code>JSP</code> tags.</p>
+
+<h3>Described From JSP</h3>
+
+<p>The <code>graph_menubar</code> tag consists of multiple <code>graph_menunode</code> tags.  Each <code>graph_menunode</code> tag corresponds to an item on the menu bar, and you can nest <code>graph_menunode</code> tags within each other.  The <code>graph_menunode</code> tag has attributes that control the visual aspects of the node, and it has an <code>action</code> attribute that can be used to specify a context-relative URL for when the node is selected.  Refer to the tag library des [...]
+
+<h3>Described From Model</h3>
+
+<p>The <code>graph_menubar</code> tag refers to a <code>Graph</code> model component through the <code>valueRef</code> attribute.  The <code>Graph</code> model component consists of multiple <code>Node</code> components.  Each <code>Node</code> component describes an item on the menu bar.</p>
+
+<h2>Tree Control</h2>
+
+<p>The tree control can be described from a <code>Graph</code> specified in the model or it can be described from <code>JSP</code> tags.</p>
+
+<h3>Described From JSP</h3>
+
+<p>The <code>graph_menutree</code> tag consists of multiple <code>graph_treenode</code> tags.  Each <code>graph_treenode</code> tag corresponds to a node in the tree, and you can nest <code>graph_treenode</code> tags within each other.  The <code>graph_treenode</code> tag has attributes that control the visual aspects of the node, and it has an <code>action</code> attribute that can be used to specify a context-relative URL for when the node is selected.  Refer to the tag library descrip [...]
+
+<h3>Described From Model</h3>
+
+<p>The <code>graph_menutree</code> tag refers to a <code>Graph</code> model component through the <code>valueRef</code> attribute.  The <code>Graph</code> model component consists of multiple <code>Node</code> components.  Each <code>Node</code> component describes an item in the tree.</p>
+
+ 
+<hr>
+
+<a href='<%= request.getContextPath() + "/index.jsp" %>'>Back</a> to home page.
+
+</body>
+</html>
+</f:view>
diff --git a/jsf-demo/archive/components/web/progressbar.jsp b/jsf-demo/archive/components/web/progressbar.jsp
new file mode 100644
index 0000000..fe5df5a
--- /dev/null
+++ b/jsf-demo/archive/components/web/progressbar.jsp
@@ -0,0 +1,69 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
+<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+<%@ taglib uri="http://java.sun.com/blueprints/ee5/components/ui" prefix="d" %>
+
+<f:view>
+
+<html>
+<head>
+
+<title>AJAX enabled Progress Bar</title>
+</head>
+<body>
+
+  <h:form id="form">
+  
+  <p>A simple page that has a button that kicks off a long-running 
+  process.</p>
+  
+  <p><h:commandButton value="Start" action="start" /></p>
+
+<p><a href='<%= request.getContextPath() + "/index.jsp" %>'>Back</a> to home page.</p>
+
+  </h:form>
+</f:view>
+
+</body>
+</html>
diff --git a/jsf-demo/archive/components/web/repeater.jsp b/jsf-demo/archive/components/web/repeater.jsp
new file mode 100644
index 0000000..c64c0cd
--- /dev/null
+++ b/jsf-demo/archive/components/web/repeater.jsp
@@ -0,0 +1,304 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<%@ taglib uri="http://java.sun.com/jsf/core"  prefix="f" %>
+<%@ taglib uri="http://java.sun.com/jsf/html"  prefix="h" %>
+<%@ taglib uri="http://java.sun.com/blueprints/ee5/components/ui" prefix="d" %>
+
+<f:view>
+<html>
+<head>
+  <title>Demonstration Components - Repeater Renderer</title>
+</head>
+<body>
+
+<h:messages        globalOnly="true"/>
+
+<h:form id="myform">
+
+  <d:data_repeater         id="table"
+                      binding="#{RepeaterBean.data}"
+	                 rows="5"
+                        value="#{RepeaterBean.customers}"
+                          var="customer">
+
+    <f:facet             name="header">
+      <h:outputText    value="Customer List"/>
+    </f:facet>
+
+    <h:column>
+      <%-- Visible checkbox for selection --%>
+      <h:selectBooleanCheckbox
+                           id="checked"
+                      binding="#{RepeaterBean.checked}"/>
+      <%-- Invisible checkbox for "created" flag --%>
+      <h:selectBooleanCheckbox
+                           id="created"
+                      binding="#{RepeaterBean.created}"
+                     rendered="false"/>
+    </h:column>
+
+    <h:column>
+      <f:facet           name="header">
+        <h:outputText  value="Account Id"/>
+      </f:facet>
+      <h:inputText        id="accountId"
+                      binding="#{RepeaterBean.accountId}"
+                     required="true"
+                         size="6"
+                        value="#{customer.accountId}">
+      </h:inputText>
+      <h:message          for="accountId"/>
+    </h:column>
+
+    <h:column>
+      <f:facet           name="header">
+        <h:outputText  value="Customer Name"/>
+      </f:facet>
+      <h:inputText        id="name"
+                     required="true"
+                         size="50"
+                        value="#{customer.name}">
+      </h:inputText>
+      <h:message          for="name"/>
+    </h:column>
+
+    <h:column>
+      <f:facet           name="header">
+        <h:outputText  value="Symbol"/>
+      </f:facet>
+      <h:inputText        id="symbol"
+                     required="true"
+                         size="6"
+                        value="#{customer.symbol}">
+        <f:validateLength
+                      maximum="6"
+                      minimum="2"/>
+      </h:inputText>
+      <h:message          for="symbol"/>
+    </h:column>
+
+    <h:column>
+      <f:facet           name="header">
+        <h:outputText  value="Total Sales"/>
+      </f:facet>
+      <h:outputText       id="totalSales"
+                        value="#{customer.totalSales}">
+        <f:convertNumber
+                         type="currency"/>
+      </h:outputText>
+    </h:column>
+
+    <h:column>
+      <f:facet           name="header">
+        <h:outputText  value="Commands"/>
+      </f:facet>
+      <h:commandButton    id="press"
+                    action="#{RepeaterBean.press}"
+                    immediate="true"
+                        value="#{RepeaterBean.pressLabel}"
+                         type="SUBMIT"/>
+      <h:commandLink id="click"
+                    actionListener="#{RepeaterBean.clickAction}"
+                    immediate="true">
+        <f:attribute name="key" value="#{customer.accountId}" />
+        <h:outputText
+                        value="Click"/>
+      </h:commandLink>
+    </h:column>
+
+  </d:data_repeater>
+
+  <h:commandButton        id="create"
+                    action="#{RepeaterBean.create}"
+                    immediate="false"
+                        value="Create New Row"
+                         type="SUBMIT"/>
+
+  <h:commandButton        id="delete"
+                    action="#{RepeaterBean.delete}"
+                    immediate="false"
+                        value="Delete Checked"
+                         type="SUBMIT"/>
+
+  <h:commandButton        id="first"
+                    action="#{RepeaterBean.first}"
+                    immediate="true"
+                        value="First Page"
+                         type="SUBMIT"/>
+
+  <h:commandButton        id="last"
+                    action="#{RepeaterBean.last}"
+                    immediate="true"
+                        value="Last Page"
+                         type="SUBMIT"/>
+
+  <h:commandButton        id="next"
+                    action="#{RepeaterBean.next}"
+                    immediate="true"
+                        value="Next Page"
+                         type="SUBMIT"/>
+
+  <h:commandButton        id="previous"
+                    action="#{RepeaterBean.previous}"
+                    immediate="true"
+                        value="Prev Page"
+                         type="SUBMIT"/>
+
+  <h:commandButton        id="reset"
+                    action="#{RepeaterBean.reset}"
+                    immediate="true"
+                        value="Reset Changes"
+                         type="SUBMIT"/>
+
+  <h:commandButton        id="update"
+                    action="#{RepeaterBean.update}"
+                    immediate="false"
+                        value="Save Changes"
+                         type="SUBMIT"/>
+
+</h:form>
+
+<hr>
+<p><a href='<%= request.getContextPath() + "/" %>'>Back</a> to home page.</p>
+
+<h1>How to Use this Component</h1>
+
+<p>This tag uses the standard <code>UIData</code> component, coupled with
+a custom <em>javax.faces.render.Renderer</em> implementation
+(<a href="ShowSource.jsp?filename=/src/components/renderkit/RepeaterRenderer.java">RepeaterRenderer.java</a>)
+that takes advantage of the fact that <code>UIData</code> automatically manages
+the iteration of the rows in the underlying data model.  At the same time, this
+class can serve as the basis for your own <em>Renderer</em> implementation if
+you wish to customize the output.  The following information describes the
+behavior of the default implementation.</p>
+
+<h2>JSP Attributes</h2>
+
+<table border="1">
+
+<tr>
+  <th>JSP Attribute Name</th>
+  <th>What it Does</th>
+</tr>
+
+<tr>
+  <td><code>component</code></td>
+  <td>
+    <p>Value binding expression to link this <code>UIData</code> component
+    to a property in your backing file bean.</p>
+  </td>
+</tr>
+
+<tr>
+  <td><code>first</code></td>
+  <td>
+    <p>Zero-relative row number of the first row to be displayed.  If not
+    specified, the default value is zero (i.e. the first row of the
+    underlying data model).</p>
+  </td>
+</tr>
+
+<tr>
+  <td><code>id</code></td>
+  <td>
+    <p>Component identifier of this component.</p>
+  </td>
+</tr>
+
+<tr>
+  <td><code>rendered</code></td>
+  <td>
+    <p>Boolean flag indicating whether or not this component should be
+    rendered.  If not specified, the default value is <code>true</code>.</p>
+  </td>
+</tr>
+
+<tr>
+  <td><code>rows</code></td>
+  <td>
+    <p>The maximum number of rows to be displayed, or zero to display
+    the entire table.  If not specified, the default value is zero.</p>
+  </td>
+</tr>
+
+<tr>
+  <td><code>styleClass</code></td>
+  <td>
+    <p>CSS style class to use for the entire table.</p>
+  </td>
+</tr>
+
+<tr>
+  <td><code>value</code></td>
+  <td>
+    <p>Value reference expression pointing at one of the following:</p>
+    <ul>
+    <li>An instance of <em>javax.faces.model.DataModel</em>.</li>
+    <li>An array of JavaBeans.</li>
+    <li>A <em>List</em> of JavaBeans.</li>
+    <li>An instance of <em>java.sql.ResultSet</em> (or RowSet).</li>
+    <li>An instance of <em>javax.servlet.jsp.jstl.sql.Result</em>.</li>
+    <li>A single JavaBean (which will be treated as a one-row table.</li>
+    </ul>
+  </td>
+</tr>
+
+<tr>
+  <td><code>var</code></td>
+  <td>
+    <p>Name of the request scope attribute under which to expose an object
+    that represents the data for the row identified by <code>rowIndex</code>.
+    </p>
+  </td>
+</tr>
+
+</table>
+
+<hr>
+<p><a href='<%= request.getContextPath() + "/" %>'>Back</a> to home page.</p>
+
+</body>
+</html>
+</f:view>
diff --git a/jsf-demo/archive/components/web/result-set.css b/jsf-demo/archive/components/web/result-set.css
new file mode 100644
index 0000000..cc14b79
--- /dev/null
+++ b/jsf-demo/archive/components/web/result-set.css
@@ -0,0 +1,148 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+.form-background { 
+  background-color: #7171A5;
+  border: 5px outset #71A5A5;
+  border-collapse: collapse;
+  font-family: sans-serif;
+  font-size: 14pt;
+  padding: 10px;
+}
+
+.form-footer { 
+  color: #FFFFFF;
+  font-size: 75%;
+  text-align: center;
+}
+
+.form-header { 
+  background-color: #A5A5A5;
+  color: #FFFFFF;
+  font-weight: bold;
+  text-align: center;
+}
+
+.form-prompt {
+  color: #FFFFFF;
+  margin: 3px 5px 3px 15px;
+  text-align: right;
+}
+
+.form-field {
+  text-align: left;
+}
+
+.form-row-even { 
+}
+
+.form-row-odd { 
+  background-color: #717171;
+}
+
+
+.list-background { 
+  background-color: #7171A5;
+  border: 5px outset #71A5A5;
+  border-collapse: collapse;
+  font-family: sans-serif;
+  font-size: 14pt;
+  padding: 10px;
+  width: 100%;
+}
+
+.list-column-center { 
+  text-align: center;
+  width: 15%;
+}
+
+.list-column-left {
+  text-align: left;
+  width: 70%;
+}
+
+.list-column-right {
+  text-align: right;
+  width: 15%;
+}
+
+.list-header { 
+  background-color: #A5A5A5;
+  color: #FFFFFF;
+  font-weight: bold;
+  text-align: center;
+}
+
+.list-row-even { 
+}
+
+.list-row-odd { 
+  background-color: #717171;
+}
+
+
+.tabbed-pane { 
+  background-color: #999999;
+  font-family: sans-serif;
+  font-size: 12pt;
+  padding: 5px;
+  width: 100%;
+}
+
+.tabbed-content { 
+  background-color: #CCCCCC;
+  color: #000000;
+}
+
+.tabbed-selected {
+  background-color: #CCCCCC;
+  border: 2px 5px 0px 5px;
+  color: #FFFFFF;
+  font-weight: bold;
+  text-align: center;
+}
+
+.tabbed-unselected {
+  background-color: #9999CC;
+  border: 2px 5px 0px 5px;
+  color: #000000;
+  text-align: center;
+}
+
diff --git a/jsf-demo/archive/components/web/result-set.jsp b/jsf-demo/archive/components/web/result-set.jsp
new file mode 100644
index 0000000..eb13aec
--- /dev/null
+++ b/jsf-demo/archive/components/web/result-set.jsp
@@ -0,0 +1,255 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+
+<%@ taglib uri="http://java.sun.com/jsf/core"  prefix="f" %>
+<%@ taglib uri="http://java.sun.com/jsf/html"  prefix="h" %>
+<%@ taglib uri="http://java.sun.com/blueprints/ee5/components/ui" prefix="d" %>
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<f:view>
+<html>
+<head>
+  <title>Result Set Example</title>
+  <link rel="stylesheet" type="text/css"
+       href='<%= request.getContextPath() + "/result-set.css" %>'>
+</head>
+<body bgcolor="white">
+
+<h:form>  
+
+Rendered via Faces components:
+
+  <h:dataTable columnClasses="list-column-center,list-column-center,
+                               list-column-center, list-column-center"
+                  headerClass="list-header"
+                   rowClasses="list-row-even,list-row-odd"
+                   styleClass="list-background"
+                           id="table"
+                         rows="20"
+                      binding="#{ResultSetBean.data}"
+                        value="#{ResultSetBean.list}"
+                          var="customer">
+
+    <h:column>
+      <f:facet           name="header">
+        <h:outputText  value="Account Id"/>
+      </f:facet>
+      <h:outputText        id="accountId"
+                     value="#{customer.accountId}"/>
+    </h:column>
+
+    <h:column>
+      <f:facet           name="header">
+        <h:outputText  value="Customer Name"/>
+      </f:facet>
+      <h:outputText        id="name" value="#{customer.name}"/>
+    </h:column>
+
+    <h:column>
+      <f:facet           name="header">
+        <h:outputText  value="Symbol"/>
+      </f:facet>
+      <h:outputText        id="symbol"
+                     value="#{customer.symbol}"/>
+    </h:column>
+
+    <h:column>
+      <f:facet           name="header">
+        <h:outputText  value="Total Sales"/>
+      </f:facet>
+      <h:outputText       id="totalSales"
+                     value="#{customer.totalSales}"/>
+    </h:column>
+
+  </h:dataTable>
+
+  <d:scroller navFacetOrientation="NORTH" for="table" 
+          actionListener="#{ResultSetBean.processScrollEvent}">
+      <f:facet name="header">
+        <h:panelGroup>
+          <h:outputText value="Account Id"/>
+          <h:outputText value="Customer Name"/>
+          <h:outputText value="Symbol"/>
+          <h:outputText value="Total Sales"/>
+        </h:panelGroup>
+      </f:facet>
+
+      <f:facet name="next">
+        <h:panelGroup>
+          <h:outputText value="Next"/>
+          <h:graphicImage url="/images/arrow-right.gif" />
+        </h:panelGroup>
+      </f:facet>
+
+      <f:facet name="previous">
+        <h:panelGroup>
+          <h:outputText value="Previous"/>
+          <h:graphicImage url="/images/arrow-left.gif" />
+        </h:panelGroup>
+      </f:facet>
+
+      <f:facet name="number">
+         <!-- You can put a panel here if you like -->
+      </f:facet>
+
+      <f:facet name="current">
+        <h:panelGroup>
+          <h:graphicImage url="/images/duke.gif" />
+        </h:panelGroup>
+      </f:facet>
+  </d:scroller>
+</h:form>
+
+  <hr>
+  <a href='<%= request.getContextPath() + "/index.jsp" %>'>Back</a> to home page.
+
+<h1>How to Use this Component</h1>
+
+<p>This component produces a search engine style scroller that facilitates
+   easy navigation over results that span across several pages.
+</p>
+
+<h2>JSP Attributes</h2>
+
+<p>This component relies on the presence of a data grid to display the results
+   in the form of a table. You can compare the
+rendered source of this page, using the "View Source" feature of your
+browser, with <a href="ShowSource.jsp?filename=/result-set.jsp">the JSP
+source</A> for this page.</p>
+
+<table border="1">
+
+<tr>
+<th>JSP Attribute Name
+</th>
+<th>What it Does
+</th>
+</tr>
+
+<tr>
+
+<td><code>navFacetOrientation</code>
+</td>
+
+<td>"NORTH", "SOUTH", "EAST", or "WEST".  This attribute tells where to
+put the number that means "skip to page N in the result set" in relation
+the facet.
+</td>
+</tr>
+
+<tr>
+<td><code>forValue</code>
+</td>
+<td>The data grid component for which this acts as a scroller.
+</td>
+</tr>
+
+<tr>
+<td><code>actionListener</code></td>
+<td>Method binding reference to handle an action event generated as a result of 
+    clicking on a link that points a particular page in the result-set.
+</td>
+</tr>
+</table>
+
+<h2>Facets</h2>
+
+<p>You can define Facets for each of the following elements of the
+result set component.</p>
+
+<table border="1">
+<tr>
+<th>Facet Name
+</th>
+<th>What it Does
+</th>
+</tr>
+
+<tr>
+<td><code>next</code>
+</td>
+
+<td>If present, this facet is output as the "Next" widget.  If absent,
+the word "Next" is used.
+</td>
+</tr>
+
+<tr>
+<td><code>previous</code>
+</td>
+<td>If present, this facet is output as the "Previous" widget.  If absent,
+the word "Previous" is used.
+</td>
+</tr>
+
+
+<tr>
+<td><code>number</code>
+</td>
+
+<td>If present, this facet is output, leveraging the
+<code>navFacetOrientation</code> attribute, to represent "skip to page N
+in the result set".
+</td>
+
+</tr>
+
+<tr>
+<td><code>current</code>
+</td>
+
+<td>If present, this facet is output, leveraging the
+<code>navFacetOrientation</code> attribute, to represent the "current
+page" in the result set.
+</td>
+
+</tr>
+</table>
+
+<hr>
+<a href='<%= request.getContextPath() + "/index.jsp" %>'>Back</a> to home page.
+</body>
+</html>
+</f:view>
diff --git a/jsf-demo/archive/components/web/stylesheet.css b/jsf-demo/archive/components/web/stylesheet.css
new file mode 100644
index 0000000..cc14b79
--- /dev/null
+++ b/jsf-demo/archive/components/web/stylesheet.css
@@ -0,0 +1,148 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+.form-background { 
+  background-color: #7171A5;
+  border: 5px outset #71A5A5;
+  border-collapse: collapse;
+  font-family: sans-serif;
+  font-size: 14pt;
+  padding: 10px;
+}
+
+.form-footer { 
+  color: #FFFFFF;
+  font-size: 75%;
+  text-align: center;
+}
+
+.form-header { 
+  background-color: #A5A5A5;
+  color: #FFFFFF;
+  font-weight: bold;
+  text-align: center;
+}
+
+.form-prompt {
+  color: #FFFFFF;
+  margin: 3px 5px 3px 15px;
+  text-align: right;
+}
+
+.form-field {
+  text-align: left;
+}
+
+.form-row-even { 
+}
+
+.form-row-odd { 
+  background-color: #717171;
+}
+
+
+.list-background { 
+  background-color: #7171A5;
+  border: 5px outset #71A5A5;
+  border-collapse: collapse;
+  font-family: sans-serif;
+  font-size: 14pt;
+  padding: 10px;
+  width: 100%;
+}
+
+.list-column-center { 
+  text-align: center;
+  width: 15%;
+}
+
+.list-column-left {
+  text-align: left;
+  width: 70%;
+}
+
+.list-column-right {
+  text-align: right;
+  width: 15%;
+}
+
+.list-header { 
+  background-color: #A5A5A5;
+  color: #FFFFFF;
+  font-weight: bold;
+  text-align: center;
+}
+
+.list-row-even { 
+}
+
+.list-row-odd { 
+  background-color: #717171;
+}
+
+
+.tabbed-pane { 
+  background-color: #999999;
+  font-family: sans-serif;
+  font-size: 12pt;
+  padding: 5px;
+  width: 100%;
+}
+
+.tabbed-content { 
+  background-color: #CCCCCC;
+  color: #000000;
+}
+
+.tabbed-selected {
+  background-color: #CCCCCC;
+  border: 2px 5px 0px 5px;
+  color: #FFFFFF;
+  font-weight: bold;
+  text-align: center;
+}
+
+.tabbed-unselected {
+  background-color: #9999CC;
+  border: 2px 5px 0px 5px;
+  color: #000000;
+  text-align: center;
+}
+
diff --git a/jsf-demo/archive/components/web/tabbedpanes.jsp b/jsf-demo/archive/components/web/tabbedpanes.jsp
new file mode 100644
index 0000000..f8ad234
--- /dev/null
+++ b/jsf-demo/archive/components/web/tabbedpanes.jsp
@@ -0,0 +1,224 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<%@ page import="java.util.Date" %>
+<%@ taglib uri="http://java.sun.com/jsf/core"   prefix="f" %>
+<%@ taglib uri="http://java.sun.com/jsf/html"   prefix="h" %>
+<%@ taglib uri="http://java.sun.com/blueprints/ee5/components/ui" prefix="d" %>
+
+<%
+
+    // Construct a preconfigured Date in session scope
+    Date date = (Date)
+      pageContext.getAttribute("date", PageContext.SESSION_SCOPE);
+    if (date == null) {
+      date = new Date();
+      pageContext.setAttribute("date", date,
+                               PageContext.SESSION_SCOPE);
+    }
+
+%>
+
+
+<f:view>
+<html>
+<head>
+  <title>Demonstration Components - Tabbed Panes</title>
+</head>
+<body bgcolor="white">
+
+<h:form>
+     <d:stylesheet path="/stylesheet.css"/>
+Powered by Faces components:
+
+<d:pane_tabbed id="tabcontrol"
+        paneClass="tabbed-pane"
+     contentClass="tabbed-content"
+    selectedClass="tabbed-selected"
+  unselectedClass="tabbed-unselected">
+
+  <d:pane_tab id="first">
+
+    <f:facet name="label">
+      <d:pane_tablabel label="T a b 1" commandName="first" />
+    </f:facet>
+
+    <h:panelGroup>
+      <h:outputText value="This is the first pane with the date set to: "/>
+      <h:outputText value="#{sessionScope.date}">
+          <f:convertDateTime dateStyle="medium"/>
+      </h:outputText>
+    </h:panelGroup>
+
+  </d:pane_tab>
+
+  <d:pane_tab id="second">
+
+    <f:facet name="label">
+      <d:pane_tablabel image="images/duke.gif" commandName="second"/>
+    </f:facet>
+
+    <h:panelGroup>
+      <h:outputText value="Hi folks!  My name is 'Duke'.  Here's a sample of some of the components you can build:"/>
+    </h:panelGroup>
+    <h:panelGroup>
+      <h:commandButton value="button"/>&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp
+      <h:selectBooleanCheckbox value="true"/>&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp
+      <h:selectOneRadio layout="pageDirection" border="1" value="nextMonth">
+        <f:selectItem itemValue="nextDay" itemLabel="Next Day"/>
+        <f:selectItem itemValue="nextWeek" itemLabel="Next Week"  />
+        <f:selectItem itemValue="nextMonth" itemLabel="Next Month" />
+      </h:selectOneRadio>
+      <h:selectOneListbox id="appleQuantity" title="Select Quantity"
+        tabindex="20" value="4" >
+        <f:selectItem  itemDisabled="true" itemValue="0" itemLabel="0"/>
+        <f:selectItem  itemValue="1" itemLabel="One" />
+        <f:selectItem  itemValue="2" itemLabel="Two" />
+        <f:selectItem  itemValue="3" itemLabel="Three" />
+        <f:selectItem  itemValue="4" itemLabel="Four" />
+      </h:selectOneListbox>
+    </h:panelGroup>
+
+  </d:pane_tab>
+
+  <d:pane_tab id="third">
+
+    <f:facet name="label">
+      <d:pane_tablabel label="T a b 3" commandName="third"/>
+    </f:facet>
+
+ 
+    <jsp:include page="tabbedpanes3.jsp"/>
+
+  </d:pane_tab>
+
+</d:pane_tabbed>
+
+<hr>
+</h:form>
+<a href='<%= request.getContextPath() + "/index.jsp" %>'>Back</a> to home page.
+
+<h1>How to Use this Component</h1>
+
+<p>This component produces a tabbed pane user interface.</p>
+
+<h2>JSP Attributes</h2>
+
+<p>This component allows the user to define CSS classes via JSP attributes that are output in the rendered markup.  This makes it possible to produce highly customizable output.  You can compare the rendered source of this page, using the "View Source" feature of your browser, with <a href="ShowSource.jsp?filename=/tabbedpanes.jsp">the JSP source</A> for this page.</p>
+
+<table border="1">
+
+<tr>
+<th>JSP Attribute Name</th>
+<th>What it Does</th>
+</tr>
+
+<tr>
+
+<td><code>paneClass</code></td>
+
+<td>A style sheet class which controls the display attributes of the outer border and tabs of the control.</td>
+
+</tr>
+
+<tr>
+
+<td><code>contentClass</code></td>
+
+<td>A style sheet class which controls the display attributes of the selected child pane contents.</td>
+
+</tr>
+
+<tr>
+
+<td><code>selectedClass</code></td>
+
+<td>A style sheet class which controls the display attributes of the select tab label.  This is used to distinguish the selected tab from the other unselected tabs.</td>
+
+</tr>
+
+<tr>
+
+<td><code>unselectedClass</code></td>
+
+<td>A style sheet class which controls the display attributes of an unselected tab label.  This is used to distinguish an unselected tab from a selected tab.</td>
+
+</tr>
+
+</table>
+
+<h2>Tab Controls</h2>
+
+<p><p>The pane control consists of multiple <code>pane_tab</code> tags, and each one corresponds to the individual tabbed panes of the control.  You can optionally indicate that a tab is initially selected with the <code>selected</code> attribute of this tag.  You must specify a unique <code>id</code> attribute for each <code>pane_tab</code> tag.
+
+<h2>Facets</h2>
+
+<p>Each <code>pane_tab</code> tag contains the label for the tabbed pane, as well as the content. You can define Facets for the tab labels for each of the panes.</p>
+
+<table border="1">
+
+<tr>
+<th>Facet Name</th>
+<th>What it Does</th>
+</tr>
+
+<tr>
+
+<td><code>label</code>
+</td>
+
+<td>This should be a <code>pane_tablabel</code> tag which has either a <code>label</code> or <code>image</code> attribute and a <code>commandName</code> attribute.  This element is rendered as a button, so <code>commandName</code> is required. The <code>image</code> attribute references an image that will appear on the face of the button.  The <code>label</code> attribute is the label for the button.  This facet should be nested within a <code>pane_tab</code> tag.</td>
+
+</tr>
+
+</table>
+
+<hr>
+
+<a href='<%= request.getContextPath() + "/index.jsp" %>'>Back</a> to home page.
+
+</body>
+</html>
+
+</f:view>
diff --git a/jsf-demo/archive/components/web/tabbedpanes3.jsp b/jsf-demo/archive/components/web/tabbedpanes3.jsp
new file mode 100644
index 0000000..c6ceb41
--- /dev/null
+++ b/jsf-demo/archive/components/web/tabbedpanes3.jsp
@@ -0,0 +1,54 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<%@ taglib uri="http://java.sun.com/jsf/core"   prefix="f" %>
+<%@ taglib uri="http://java.sun.com/jsf/html"   prefix="h" %>
+
+    <h:panelGroup>
+      <h:outputText value="This is the third pane with the date set to: "/>
+      <h:outputText value="#{sessionScope.date}">
+          <f:convertDateTime dateStyle="full"/>
+      </h:outputText>
+    </h:panelGroup>
+
diff --git a/jsf-demo/archive/components/web/tree-control-test.css b/jsf-demo/archive/components/web/tree-control-test.css
new file mode 100644
index 0000000..bc65db2
--- /dev/null
+++ b/jsf-demo/archive/components/web/tree-control-test.css
@@ -0,0 +1,59 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+.tree-control {
+  font-family: verdana, geneva, helvetica, arial, sans-serif;
+  font-size: 100%;
+  line-height: 1.0;
+}
+
+.tree-control-selected {
+  color: red;
+  font-weight: bold;
+  text-decoration: none;
+}
+
+.tree-control-unselected {
+  color: green;
+  font-style: normal;
+  font-weight: normal;
+  text-decoration: none;
+}
+
diff --git a/jsf-demo/archive/components/web/wait.jsp b/jsf-demo/archive/components/web/wait.jsp
new file mode 100644
index 0000000..de774b0
--- /dev/null
+++ b/jsf-demo/archive/components/web/wait.jsp
@@ -0,0 +1,74 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
+<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+<%@ taglib uri="http://java.sun.com/blueprints/ee5/components/ui" prefix="d" %>
+
+<f:view>
+
+<html>
+<head>
+
+<title>AJAX enabled Button and Progress Bar</title>
+</head>
+<body>
+
+  <h:form id="form">
+  <table>
+
+    <tr><td><d:progressBar id="progressBar" 
+                           value="#{process.percentage}" 
+                           interval="#{process.pollInterval}" 
+                           action="complete" />
+        </td> <td> </td></tr>
+        
+  </table>
+  
+  <p>For a detailed description of this component, please see <a href="https://bpcatalog.dev.java.net/ajax/progress-bar-jsf/">the blueprints
+  catalog entry</a>.</p>
+
+</h:form>
+</f:view>
+
+</body>
+</html>
diff --git a/jsf-demo/archive/guessNumber/build.xml b/jsf-demo/archive/guessNumber/build.xml
new file mode 100644
index 0000000..4c6fda9
--- /dev/null
+++ b/jsf-demo/archive/guessNumber/build.xml
@@ -0,0 +1,132 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project name="guessNumber" default="build" basedir=".">
+
+    <property file="${user.home}/build.properties"/>
+    <property file="../../../build.properties"/>
+    <import file="${jsf.build.home}/common/ant/common.xml"/>
+
+    <!-- Configure the context path for this application -->
+    <property name="context.path" value="/jsf-guessNumber"/>
+    <property name="example" value="jsf-guessNumber"/>
+    <property name="build" value="${basedir}/build"/>
+
+    <path id="classpath">
+        <pathelement location="${javax.faces-api.jar}"/>
+        <pathelement location="${javax.faces.jar}"/>
+        <pathelement location="${build}/${example}/WEB-INF/classes"/>
+        <path refid="compile.classpath"/>
+    </path>
+
+    <target name="init" depends="check.changes">
+        <tstamp/>
+    </target>
+
+    <target name="check.changes">
+        <uptodate property="skip.build"
+                  targetfile="${build}/last-build">
+            <srcfiles dir="${basedir}">
+                <include name="src/**/*.*"/>
+                <include name="conf/**/*.*"/>
+                <include name="web/**/*.*"/>
+            </srcfiles>
+        </uptodate>
+    </target>
+
+    <target name="clean">
+        <delete dir="${build}"/>
+        <delete dir="${context.path}"/>
+    </target>
+
+
+    <target name="prepare" depends="init"
+            description="Create build directories.">
+        <mkdir dir="${build}/${example}"/>
+        <mkdir dir="${build}/${example}/WEB-INF"/>
+        <mkdir dir="${build}/${example}/WEB-INF/classes"/>
+        <mkdir dir="${build}/${example}/WEB-INF/lib"/>
+    </target>
+
+
+    <target name="build" unless="skip.build" depends="prepare"
+            description="Compile Java files and copy static files.">
+        <touch file="${build}/last-build"/>
+         <jsf.javac srcdir="src"
+                   destdir="${build}/${example}/WEB-INF/classes">
+            <classpath>
+                <path refid="classpath"/>
+            </classpath>
+        </jsf.javac>
+        <copy todir="${build}/${example}/WEB-INF">
+            <fileset dir="web/WEB-INF">
+                <include name="*.xml"/>
+            </fileset>          
+        </copy>
+
+        <copy todir="${build}/${example}/">
+            <fileset dir="web">
+                <include name="resources/**"/>
+                <include name="*.html"/>
+                <include name="*.gif"/>
+                <include name="*.jpg"/>
+                <include name="*.jsp"/>
+                <include name="*.xml"/>
+            </fileset>
+        </copy>
+        <copy todir="${build}/${example}/WEB-INF/classes/${example}">
+            <fileset dir="web">
+                <include name="*properties"/>
+            </fileset>
+        </copy>
+
+        <jsf.war basedir="${build}"
+                 archive-name="${example}"
+                 webxml="${build}/${example}/WEB-INF/web.xml">
+            <archive-elements>
+                <zipfileset dir="${build}/${example}"/>
+            </archive-elements>
+        </jsf.war>
+    </target>
+
+</project>
+
diff --git a/jsf-demo/archive/guessNumber/src/java/guessNumber/MessageFactory.java b/jsf-demo/archive/guessNumber/src/java/guessNumber/MessageFactory.java
new file mode 100644
index 0000000..6677767
--- /dev/null
+++ b/jsf-demo/archive/guessNumber/src/java/guessNumber/MessageFactory.java
@@ -0,0 +1,351 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package guessNumber;
+
+import javax.el.ValueExpression;
+import javax.faces.FactoryFinder;
+import javax.faces.application.Application;
+import javax.faces.application.ApplicationFactory;
+import javax.faces.application.FacesMessage;
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+
+import java.text.MessageFormat;
+import java.util.Locale;
+import java.util.MissingResourceException;
+import java.util.ResourceBundle;
+
+/**
+ * <p>supported filters: <code>package</code> and
+ * <code>protection</code>.</p>
+ */
+
+public class MessageFactory extends Object {
+    //
+    // Protected Constants
+    //
+
+    //
+    // Class Variables
+    //
+
+    //
+    // Instance Variables
+    //
+
+    // Attribute Instance Variables
+
+    // Relationship Instance Variables
+
+    //
+    // Constructors and Initializers    
+    //
+
+    private MessageFactory() {
+    }
+
+    //
+    // Class methods
+    //
+
+    //
+    // General Methods
+    //
+
+    /**
+     * This version of getMessage() is used in the RI for localizing RI
+     * specific messages.
+     */
+
+    public static FacesMessage getMessage(String messageId, Object params[]) {
+        Locale locale = null;
+        FacesContext context = FacesContext.getCurrentInstance();
+        // context.getViewRoot() may not have been initialized at this point.
+        if (context != null && context.getViewRoot() != null) {
+            locale = context.getViewRoot().getLocale();
+            if (locale == null) {
+                locale = Locale.getDefault();
+            }
+        } else {
+            locale = Locale.getDefault();
+        }
+
+        return getMessage(locale, messageId, params);
+    }
+
+    public static FacesMessage getMessage(Locale locale, String messageId,
+                                          Object params[]) {
+        FacesMessage result = null;
+        String
+              summary = null,
+              detail = null,
+              bundleName = null;
+        ResourceBundle bundle = null;
+
+        // see if we have a user-provided bundle
+        if (null != (bundleName = getApplication().getMessageBundle())) {
+            if (null !=
+                (bundle =
+                      ResourceBundle.getBundle(bundleName, locale,
+                                               getCurrentLoader(bundleName)))) {
+                // see if we have a hit
+                try {
+                    summary = bundle.getString(messageId);
+                    detail = bundle.getString(messageId + "_detail");
+                }
+                catch (MissingResourceException e) {
+                }
+            }
+        }
+
+        // we couldn't find a summary in the user-provided bundle
+        if (null == summary) {
+            // see if we have a summary in the app provided bundle
+            bundle = ResourceBundle.getBundle(FacesMessage.FACES_MESSAGES,
+                                              locale,
+                                              getCurrentLoader(bundleName));
+            if (null == bundle) {
+                throw new NullPointerException();
+            }
+            // see if we have a hit
+            try {
+                summary = bundle.getString(messageId);
+                detail = bundle.getString(messageId + "_detail");
+            }
+            catch (MissingResourceException e) {
+            }
+        }
+
+        // we couldn't find a summary anywhere!  Return null
+        if (null == summary) {
+            return null;
+        }
+
+        if (null == summary || null == bundle) {
+            throw new NullPointerException(" summary " + summary + " bundle " +
+                                           bundle);
+        }
+        // At this point, we have a summary and a bundle.
+        // 
+        return (new BindingFacesMessage(locale, summary, detail, params));
+    }
+
+
+    //
+    // Methods from MessageFactory
+    // 
+    public static FacesMessage getMessage(FacesContext context,
+                                          String messageId) {
+        return getMessage(context, messageId, null);
+    }
+
+    public static FacesMessage getMessage(FacesContext context,
+                                          String messageId,
+                                          Object params[]) {
+        if (context == null || messageId == null) {
+            throw new NullPointerException(" context "
+                                           + context
+                                           + " messageId "
+                                           +
+                                           messageId);
+        }
+        Locale locale = null;
+        // viewRoot may not have been initialized at this point.
+        if (context != null && context.getViewRoot() != null) {
+            locale = context.getViewRoot().getLocale();
+        } else {
+            locale = Locale.getDefault();
+        }
+        if (null == locale) {
+            throw new NullPointerException(" locale " + locale);
+        }
+        FacesMessage message = getMessage(locale, messageId, params);
+        if (message != null) {
+            return message;
+        }
+        locale = Locale.getDefault();
+        return (getMessage(locale, messageId, params));
+    }
+
+    public static FacesMessage getMessage(FacesContext context,
+                                          String messageId,
+                                          Object param0) {
+        return getMessage(context, messageId, new Object[]{param0});
+    }
+
+    public static FacesMessage getMessage(FacesContext context,
+                                          String messageId,
+                                          Object param0, Object param1) {
+        return getMessage(context, messageId, new Object[]{param0, param1});
+    }
+
+    public static FacesMessage getMessage(FacesContext context,
+                                          String messageId,
+                                          Object param0, Object param1,
+                                          Object param2) {
+        return getMessage(context, messageId,
+                          new Object[]{param0, param1, param2});
+    }
+
+    public static FacesMessage getMessage(FacesContext context,
+                                          String messageId,
+                                          Object param0, Object param1,
+                                          Object param2, Object param3) {
+        return getMessage(context, messageId,
+                          new Object[]{param0, param1, param2, param3});
+    }
+
+    // Gets the "label" property from the component.
+
+    public static Object getLabel(FacesContext context,
+                                  UIComponent component) {
+        Object o = component.getAttributes().get("label");
+        if (o == null) {
+            o = component.getValueExpression("label");
+        }
+        // Use the "clientId" if there was no label specified.
+        if (o == null) {
+            o = component.getClientId(context);
+        }
+        return o;
+    }
+
+    protected static Application getApplication() {
+        FacesContext context = FacesContext.getCurrentInstance();
+        if (context != null) {
+            return (FacesContext.getCurrentInstance().getApplication());
+        }
+        ApplicationFactory afactory = (ApplicationFactory)
+              FactoryFinder.getFactory(FactoryFinder.APPLICATION_FACTORY);
+        return (afactory.getApplication());
+    }
+
+    protected static ClassLoader getCurrentLoader(Object fallbackClass) {
+        ClassLoader loader =
+              Thread.currentThread().getContextClassLoader();
+        if (loader == null) {
+            loader = fallbackClass.getClass().getClassLoader();
+        }
+        return loader;
+    }
+
+    /**
+     * This class overrides FacesMessage to provide the evaluation
+     * of binding expressions in addition to Strings.
+     * It is often the case, that a binding expression may reference
+     * a localized property value that would be used as a
+     * substitution parameter in the message.  For example:
+     * <code>#{bundle.userLabel}</code>
+     * "bundle" may not be available until the page is rendered.
+     * The "late" binding evaluation in <code>getSummary</code> and
+     * <code>getDetail</code> allow the expression to be evaluated
+     * when that property is available.
+     */
+    static class BindingFacesMessage extends FacesMessage {
+        BindingFacesMessage(
+              Locale locale,
+              String messageFormat,
+              String detailMessageFormat,
+              // array of parameters, both Strings and ValueExpressions
+              Object[] parameters) {
+
+            super(messageFormat, detailMessageFormat);
+            this.locale = locale;
+            this.parameters = parameters;
+            if (parameters != null) {
+                resolvedParameters = new Object[parameters.length];
+            }
+        }
+
+        public String getSummary() {
+            String pattern = super.getSummary();
+            resolveBindings();
+            return getFormattedString(pattern, resolvedParameters);
+        }
+
+        public String getDetail() {
+            String pattern = super.getDetail();
+            resolveBindings();
+            return getFormattedString(pattern, resolvedParameters);
+        }
+
+        private void resolveBindings() {
+            FacesContext context = null;
+            if (parameters != null) {
+                for (int i = 0; i < parameters.length; i++) {
+                    Object o = parameters[i];
+                    if (o instanceof ValueExpression) {
+                        if (context == null) {
+                            context = FacesContext.getCurrentInstance();
+                        }
+                        o = ((ValueExpression) o)
+                              .getValue(context.getELContext());
+                    }
+                    // to avoid 'null' appearing in message
+                    if (o == null) {
+                        o = "";
+                    }
+                    resolvedParameters[i] = o;
+                }
+            }
+        }
+
+        private String getFormattedString(String msgtext, Object[] params) {
+            String localizedStr = null;
+
+            if (params == null || msgtext == null) {
+                return msgtext;
+            }
+            StringBuffer b = new StringBuffer(100);
+            MessageFormat mf = new MessageFormat(msgtext);
+            if (locale != null) {
+                mf.setLocale(locale);
+                b.append(mf.format(params));
+                localizedStr = b.toString();
+            }
+            return localizedStr;
+        }
+
+        private Locale locale;
+        private Object[] parameters;
+        private Object[] resolvedParameters;
+    }
+} // end of class MessageFactory
diff --git a/jsf-demo/archive/guessNumber/src/java/guessNumber/UserNumberBean.java b/jsf-demo/archive/guessNumber/src/java/guessNumber/UserNumberBean.java
new file mode 100644
index 0000000..1ebd5b9
--- /dev/null
+++ b/jsf-demo/archive/guessNumber/src/java/guessNumber/UserNumberBean.java
@@ -0,0 +1,227 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package guessNumber;
+
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.validator.LongRangeValidator;
+import javax.faces.validator.ValidatorException;
+
+import java.util.Random;
+
+
+public class UserNumberBean {
+
+    Integer userNumber = null;
+    Integer randomInt = null;
+    String response = null;
+
+
+    public UserNumberBean() {
+        Random randomGR = new Random();
+        if (maximumSet && minimumSet) {
+            randomInt = new Integer( randomGR.nextInt((maximum - minimum) + 1) + minimum );
+        } else {
+            randomInt = new Integer(randomGR.nextInt(10) + 1);
+        }
+        System.out.println("Duke's number: " + randomInt);
+    }
+
+
+    public void setUserNumber(Integer user_number) {
+        userNumber = user_number;
+        System.out.println("Set userNumber " + userNumber);
+    }
+
+
+    public Integer getUserNumber() {
+        System.out.println("get userNumber " + userNumber);
+        return userNumber;
+    }
+
+
+    public String getResponse() {
+
+        if (userNumber != null && userNumber.compareTo(randomInt) == 0) {
+            return "Yay! You got it!";
+        } else if (userNumber == null) {
+            return "Sorry, " + userNumber +
+                   " is incorrect. Try a larger number.";
+        } else {
+            int num = userNumber.intValue();
+            if (num > randomInt.intValue()) {
+                return "Sorry, " + userNumber +
+                       " is incorrect. Try a smaller number.";
+            } else {
+                return "Sorry, " + userNumber +
+                       " is incorrect. Try a larger number.";
+            }
+        }
+    }
+
+
+    protected String[] status = null;
+
+
+    public String[] getStatus() {
+        return status;
+    }
+
+
+    public void setStatus(String[] newStatus) {
+        status = newStatus;
+    }
+
+
+    private int maximum = 0;
+    private boolean maximumSet = false;
+
+
+    public int getMaximum() {
+        return (this.maximum);
+    }
+
+
+    public void setMaximum(int maximum) {
+        this.maximum = maximum;
+        this.maximumSet = true;
+    }
+
+
+    private int minimum = 0;
+    private boolean minimumSet = false;
+
+
+    public int getMinimum() {
+        return (this.minimum);
+    }
+
+
+    public void setMinimum(int minimum) {
+        this.minimum = minimum;
+        this.minimumSet = true;
+    }
+
+
+    public void validate(FacesContext context,
+                         UIComponent component,
+                         Object value) throws ValidatorException {
+
+        if ((context == null) || (component == null)) {
+            throw new NullPointerException();
+        }
+        if (value != null) {
+            try {
+                int converted = intValue(value);
+                if (maximumSet &&
+                    (converted > maximum)) {
+                    if (minimumSet) {
+                        throw new ValidatorException(
+                              MessageFactory.getMessage
+                                    (context,
+                                     LongRangeValidator.NOT_IN_RANGE_MESSAGE_ID,
+                                     new Object[]{
+                                           new Integer(minimum),
+                                           new Integer(maximum),
+                                           MessageFactory.getLabel(context,
+                                                                   component)
+                                     }));
+
+                    } else {
+                        throw new ValidatorException(
+                              MessageFactory.getMessage
+                                    (context,
+                                     LongRangeValidator.MAXIMUM_MESSAGE_ID,
+                                     new Object[]{
+                                           new Integer(maximum),
+                                           MessageFactory.getLabel(context,
+                                                                   component)
+                                     }));
+                    }
+                }
+                if (minimumSet &&
+                    (converted < minimum)) {
+                    if (maximumSet) {
+                        throw new ValidatorException(MessageFactory.getMessage
+                              (context,
+                               LongRangeValidator.NOT_IN_RANGE_MESSAGE_ID,
+                               new Object[]{
+                                     new Double(minimum),
+                                     new Double(maximum),
+                                     MessageFactory.getLabel(context, component)
+                               }));
+
+                    } else {
+                        throw new ValidatorException(
+                              MessageFactory.getMessage
+                                    (context,
+                                     LongRangeValidator.MINIMUM_MESSAGE_ID,
+                                     new Object[]{
+                                           new Integer(minimum),
+                                           MessageFactory.getLabel(context,
+                                                                   component)
+                                     }));
+                    }
+                }
+            } catch (NumberFormatException e) {
+                throw new ValidatorException(
+                      MessageFactory.getMessage
+                            (context, LongRangeValidator.TYPE_MESSAGE_ID,
+                             new Object[]{MessageFactory.getLabel(context,
+                                                                  component)}));
+            }
+        }
+
+    }
+
+
+    private int intValue(Object attributeValue)
+          throws NumberFormatException {
+
+        if (attributeValue instanceof Number) {
+            return (((Number) attributeValue).intValue());
+        } else {
+            return (Integer.parseInt(attributeValue.toString()));
+        }
+
+    }
+
+}
diff --git a/jsf-demo/archive/guessNumber/web/WEB-INF/faces-config.xml b/jsf-demo/archive/guessNumber/web/WEB-INF/faces-config.xml
new file mode 100644
index 0000000..297150c
--- /dev/null
+++ b/jsf-demo/archive/guessNumber/web/WEB-INF/faces-config.xml
@@ -0,0 +1,115 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd"
+    version="1.2">
+
+  <application>
+    <locale-config>
+      <default-locale>en</default-locale>
+      <supported-locale>de</supported-locale>
+      <supported-locale>fr</supported-locale>
+      <supported-locale>es</supported-locale>
+    </locale-config>
+  </application>
+  
+  <navigation-rule>
+    <description>
+        The decision rule used by the NavigationHandler to
+        determine which view must be displayed after the
+        current view, greeting.jsp is processed.
+    </description>
+    <from-view-id>/greeting.jsp</from-view-id>
+    <navigation-case>
+        <description>
+            Indicates to the NavigationHandler that the response.jsp
+            view must be displayed if the Action referenced by a 
+            UICommand component on the greeting.jsp view returns 
+            the outcome "success".
+        </description>
+      <from-outcome>success</from-outcome>
+      <to-view-id>/response.jsp</to-view-id>
+    </navigation-case>
+  </navigation-rule>
+
+  <navigation-rule>
+   <description>
+        The decision rules used by the NavigationHandler to
+        determine which view must be displayed after the
+        current view, response.jsp is processed.
+    </description>
+    <from-view-id>/response.jsp</from-view-id>
+    <navigation-case>
+        <description>
+            Indicates to the NavigationHandler that the greeting.jsp
+            view must be displayed if the Action referenced by a 
+            UICommand component on the response.jsp view returns 
+            the outcome "success".
+        </description>
+        <from-outcome>success</from-outcome>
+      <to-view-id>/greeting.jsp</to-view-id>
+    </navigation-case>
+  </navigation-rule>
+
+  <managed-bean>
+    <description>
+      The "backing file" bean that backs up the guessNumber webapp
+    </description>
+    <managed-bean-name>UserNumberBean</managed-bean-name>
+    <managed-bean-class>guessNumber.UserNumberBean</managed-bean-class>
+    <managed-bean-scope>session</managed-bean-scope>
+    <managed-property>
+      <property-name>minimum</property-name>
+      <property-class>int</property-class>
+      <value>1</value>
+    </managed-property>
+    <managed-property>
+      <property-name>maximum</property-name>
+      <property-class>int</property-class>
+      <value>10</value>
+    </managed-property>
+  </managed-bean>
+
+</faces-config>
diff --git a/jsf-demo/archive/guessNumber/web/WEB-INF/web.xml b/jsf-demo/archive/guessNumber/web/WEB-INF/web.xml
new file mode 100644
index 0000000..133cf0d
--- /dev/null
+++ b/jsf-demo/archive/guessNumber/web/WEB-INF/web.xml
@@ -0,0 +1,106 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<web-app version="2.5"
+         xmlns="http://java.sun.com/xml/ns/javaee"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
+
+    <display-name>JavaServer Faces Guess Number Sample Application
+    </display-name>
+    <description>
+        JavaServer Faces Guess Number Sample Application
+    </description>
+
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>client</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>Development</param-value>
+    </context-param>
+
+    <jsp-config>
+        <jsp-property-group>
+            <url-pattern>*.jsp</url-pattern>
+            <is-xml>true</is-xml>
+        </jsp-property-group>
+    </jsp-config>
+
+    <!-- Faces Servlet -->
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+
+
+    <!-- Faces Servlet Mapping -->
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/guess/*</url-pattern>
+    </servlet-mapping>
+
+    <security-constraint>
+        <!-- This security constraint illustrates how JSP pages 
+with JavaServer Faces components can be protected from
+being accessed without going through the Faces Servlet.
+The security constraint ensures that the Faces Servlet will
+be used or the pages will not be processed. -->
+        <display-name>Restrict access to JSP pages</display-name>
+        <web-resource-collection>
+            <web-resource-name>
+                Restrict access to JSP pages
+            </web-resource-name>
+            <url-pattern>/greeting.jsp</url-pattern>
+            <url-pattern>/response.jsp</url-pattern>
+        </web-resource-collection>
+        <auth-constraint>
+            <description>
+                With no roles defined, no access granted
+            </description>
+        </auth-constraint>
+    </security-constraint>
+
+</web-app>
diff --git a/jsf-demo/archive/guessNumber/web/greeting.jsp b/jsf-demo/archive/guessNumber/web/greeting.jsp
new file mode 100644
index 0000000..c757396
--- /dev/null
+++ b/jsf-demo/archive/guessNumber/web/greeting.jsp
@@ -0,0 +1,87 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:jsp="http://java.sun.com/JSP/Page"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xml:lang="en" lang="en">
+<jsp:output doctype-root-element="html"
+            doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN"
+            doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"/>
+<jsp:directive.page contentType="application/xhtml+xml; charset=UTF-8"/>
+<head>
+    <title>Hello</title>
+</head>
+<body bgcolor="white">
+<f:view>
+    <h:form id="helloForm">
+        <h2>Hi. My name is Duke. I'm thinking of a number from
+            <h:outputText lang="en_US" value="#{UserNumberBean.minimum}"/>
+            to
+            <h:outputText value="#{UserNumberBean.maximum}"/>
+            . Can you guess
+            it?
+        </h2>
+
+        <h:graphicImage id="waveImg" url="#{resource['images/wave.med.gif']}"/>
+        <h:inputText id="userNo" label="User Number"
+                     value="#{UserNumberBean.userNumber}"
+                     validator="#{UserNumberBean.validate}"/>
+        <h:commandButton id="submit" action="success" value="Submit"/>
+        <p/>
+        <h:message showSummary="true" showDetail="false"
+                   style="color: red; font-family: 'New Century Schoolbook', serif; font-style: oblique; text-decoration: overline"
+                   id="errors1" for="userNo"/>
+
+    </h:form>
+</f:view>
+
+<p>
+    <a href="http://validator.w3.org/check?uri=referer"><img
+          src="http://www.w3.org/Icons/valid-xhtml10"
+          alt="Valid XHTML 1.0!" height="31" width="88"/></a>
+</p>
+</body>
+</html>  
diff --git a/jsf-demo/archive/guessNumber/web/index.jsp b/jsf-demo/archive/guessNumber/web/index.jsp
new file mode 100644
index 0000000..2b0d7e3
--- /dev/null
+++ b/jsf-demo/archive/guessNumber/web/index.jsp
@@ -0,0 +1,69 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:jsp="http://java.sun.com/JSP/Page"
+      xml:lang="en" lang="en">
+<jsp:output doctype-root-element="html"
+            doctype-public="-//W3C//DTD XHTML 1.0 Trasitional//EN"
+            doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"/>
+<jsp:directive.page contentType="application/xhtml+xml; charset=UTF-8"/>
+<head>
+</head>
+<body>
+
+<!--  
+
+This page allows the user to go to the context-path and get redirected
+to the front page of the app.  For example,
+http://localhost:8080/jsf-carstore/.  Note that we use "*.jsf" as the
+page mapping.  Doing so allows us to just name our pages as "*.jsp",
+refer to them as "*.jsf" and know that they will be properly picked up
+by the container.
+
+-->
+
+<jsp:forward page="guess/greeting.jsp"/>
+</body>
+</html>
diff --git a/jsf-demo/archive/guessNumber/web/resources/images/wave.med.gif b/jsf-demo/archive/guessNumber/web/resources/images/wave.med.gif
new file mode 100644
index 0000000..70b7cff
Binary files /dev/null and b/jsf-demo/archive/guessNumber/web/resources/images/wave.med.gif differ
diff --git a/jsf-demo/archive/guessNumber/web/response.jsp b/jsf-demo/archive/guessNumber/web/response.jsp
new file mode 100644
index 0000000..3d02ac2
--- /dev/null
+++ b/jsf-demo/archive/guessNumber/web/response.jsp
@@ -0,0 +1,78 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:jsp="http://java.sun.com/JSP/Page"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xml:lang="en" lang="en">
+<jsp:output doctype-root-element="html"
+            doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN"
+            doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"/>
+<jsp:directive.page contentType="application/xhtml+xml; charset=UTF-8"/>
+<head>
+    <title>Guess The Number</title>
+</head>
+<body bgcolor="white">
+<f:view>
+    <h:form id="responseForm">
+        <h:graphicImage id="waveImg" url="#{resource['images/wave.med.gif']}"/>
+        <h2>
+            <h:outputText id="result" lang="en"
+                          value="#{UserNumberBean.response}"/>
+        </h2>
+        <h:commandButton id="back" value="Back" action="success"/>
+        <p/>
+
+    </h:form>
+</f:view>
+
+<p>
+    <a href="http://validator.w3.org/check?uri=referer"><img
+          src="http://www.w3.org/Icons/valid-xhtml10"
+          alt="Valid XHTML 1.0!" height="31" width="88"/></a>
+</p>
+
+</body>
+</html>
diff --git a/jsf-demo/archive/helloDuke/build.xml b/jsf-demo/archive/helloDuke/build.xml
new file mode 100644
index 0000000..aa227dd
--- /dev/null
+++ b/jsf-demo/archive/helloDuke/build.xml
@@ -0,0 +1,131 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project name="helloDuke" default="build" basedir=".">
+
+
+    <property file="${user.home}/build.properties"/>
+    <property file="../../../build.properties"/>
+    <import file="${jsf.build.home}/common/ant/common.xml"/>
+
+    <!-- Configure the context path for this application -->
+    <property name="context.path" value="/helloDuke"/>
+    <property name="example" value="helloDuke"/>
+    <property name="build" value="${basedir}/build"/>  
+
+    <path id="classpath">       
+        <pathelement location="${javax.faces-api.jar}"/>
+        <pathelement location="${javax.faces.jar}"/>       
+        <pathelement location="${build}/WEB-INF/classes"/>
+        <path refid="compile.classpath"/>
+    </path>
+    
+    <target name="init" depends="check.changes">
+        <tstamp/>
+    </target>
+
+    <target name="check.changes">
+        <uptodate property="skip.build"
+                  targetfile="${build}/last-build">
+            <srcfiles dir="${basedir}">
+                <include name="src/**/*.*"/>
+                <include name="conf/**/*.*"/>
+                <include name="web/**/*.*"/>
+            </srcfiles>
+        </uptodate>
+    </target>
+
+    <target name="clean">
+        <delete dir="${build}"/>
+        <delete dir="${context.path}"/>
+    </target>    
+
+   <target name="prepare" depends="init"
+            description="Create build directories.">
+        <mkdir dir="${build}/${example}"/>
+        <mkdir dir="${build}/${example}/WEB-INF"/>
+        <mkdir dir="${build}/${example}/WEB-INF/classes"/>
+        <mkdir dir="${build}/${example}/WEB-INF/lib"/>
+    </target>
+
+
+    <target name="build" unless="skip.build" depends="prepare"
+            description="Compile Java files and copy static files.">
+        <touch file="${build}/last-build"/>
+        <jsf.javac srcdir="src"
+                   destdir="${build}/${example}/WEB-INF/classes">
+            <classpath>
+                <path refid="classpath"/>
+            </classpath>
+        </jsf.javac>
+        <copy todir="${build}/${example}/WEB-INF">
+            <fileset dir="web/WEB-INF">
+                <include name="*.xml"/>
+            </fileset>
+        </copy>
+
+        <copy todir="${build}/${example}/">
+            <fileset dir="web">
+                <include name="*.html"/>
+                <include name="*.gif"/>
+                <include name="*.jpg"/>
+                <include name="*.jsp"/>
+                <include name="*.xml"/>
+            </fileset>
+        </copy>
+        <copy todir="${build}/${example}/WEB-INF/classes/${example}">
+            <fileset dir="web">
+                <include name="*properties"/>
+            </fileset>
+        </copy>
+
+        <jsf.war basedir="${build}"
+                 archive-name="${example}"
+                 webxml="${build}/${example}/WEB-INF/web.xml">
+            <archive-elements>
+                <zipfileset dir="${build}/${example}"/>
+            </archive-elements>
+        </jsf.war>
+    </target>
+
+</project> 
+ 
diff --git a/jsf-demo/archive/helloDuke/src/helloDuke/UserNameBean.java b/jsf-demo/archive/helloDuke/src/helloDuke/UserNameBean.java
new file mode 100644
index 0000000..6111169
--- /dev/null
+++ b/jsf-demo/archive/helloDuke/src/helloDuke/UserNameBean.java
@@ -0,0 +1,64 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package helloDuke;
+
+public class UserNameBean {
+
+    String userName = null;
+
+
+    public UserNameBean() {
+        System.out.println("Model Object Created");
+    }
+
+
+    public void setUserName(String user_name) {
+        userName = user_name;
+        System.out.println("Set userName " + userName);
+    }
+
+
+    public String getUserName() {
+        System.out.println("get userName " + userName);
+        return userName;
+    }
+
+}
diff --git a/jsf-demo/archive/helloDuke/web/WEB-INF/faces-config.xml b/jsf-demo/archive/helloDuke/web/WEB-INF/faces-config.xml
new file mode 100644
index 0000000..4934bef
--- /dev/null
+++ b/jsf-demo/archive/helloDuke/web/WEB-INF/faces-config.xml
@@ -0,0 +1,78 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd"
+    version="1.2">
+
+
+  <!-- Tell Duke your name -->
+  <navigation-rule>
+    <from-view-id>/greeting.jsp</from-view-id>
+    <navigation-case>
+      <from-outcome>success</from-outcome>
+      <to-view-id>/response.jsp</to-view-id>
+    </navigation-case>
+  </navigation-rule>
+
+  <!-- Return to greeting page -->
+  <navigation-rule>
+    <from-view-id>/response.jsp</from-view-id>
+    <navigation-case>
+      <from-outcome>success</from-outcome>
+      <to-view-id>/greeting.jsp</to-view-id>
+    </navigation-case>
+  </navigation-rule>
+
+  <managed-bean>
+    <description>
+      The "backing file" bean that backs up the helloDuke webapp
+    </description>
+    <managed-bean-name>UserNameBean</managed-bean-name>
+    <managed-bean-class>helloDuke.UserNameBean</managed-bean-class>
+    <managed-bean-scope>session</managed-bean-scope>
+  </managed-bean>
+
+
+</faces-config>
diff --git a/jsf-demo/archive/helloDuke/web/WEB-INF/web.xml b/jsf-demo/archive/helloDuke/web/WEB-INF/web.xml
new file mode 100644
index 0000000..c931cd1
--- /dev/null
+++ b/jsf-demo/archive/helloDuke/web/WEB-INF/web.xml
@@ -0,0 +1,73 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<web-app version="2.5"
+         xmlns="http://java.sun.com/xml/ns/javaee"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" >
+    
+    <display-name>JavaServer Faces Hello Duke Sample Application</display-name>
+    <description>
+        JavaServer Faces Hello Duke Sample Application
+    </description>
+
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>server</param-value>
+    </context-param>
+    
+    <!-- Faces Servlet -->
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup> 1 </load-on-startup>
+    </servlet>
+
+
+    <!-- Faces Servlet Mapping -->
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+
+</web-app>
diff --git a/jsf-demo/archive/helloDuke/web/greeting.jsp b/jsf-demo/archive/helloDuke/web/greeting.jsp
new file mode 100644
index 0000000..5701b94
--- /dev/null
+++ b/jsf-demo/archive/helloDuke/web/greeting.jsp
@@ -0,0 +1,61 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<HTML>
+<HEAD><title>Hello</title></HEAD>
+<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
+<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+<body bgcolor="white">
+<h2>My name is Duke. What is yours?</h2>
+<f:view>
+    <h:form id="helloForm">
+        <h:graphicImage id="waveImg" url="/wave.med.gif"/>
+        <h:inputText id="username"
+                     value="#{UserNameBean.userName}"/>
+        <h:commandButton id="submit" action="success" value="Submit"
+                         type="submit"/>
+        <br>
+        <h:commandLink id="shortcut" a
+    </h:form>
+</f:view>
+</body>
+</HTML>  
diff --git a/jsf-demo/archive/helloDuke/web/index.html b/jsf-demo/archive/helloDuke/web/index.html
new file mode 100644
index 0000000..37c5095
--- /dev/null
+++ b/jsf-demo/archive/helloDuke/web/index.html
@@ -0,0 +1,58 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
+<html>
+<head>
+   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+   <meta name="GENERATOR" content="Mozilla/4.75 [en] (WinNT; U) [Netscape]">
+   <title>index</title>
+</head>
+<body>
+<br>
+
+<P>Click <a href="faces/greeting.jsp">here</a> to say hello to Duke. </P>
+
+<br>
+<hr WIDTH="100%">
+</body>
+</html>
diff --git a/jsf-demo/archive/helloDuke/web/response.jsp b/jsf-demo/archive/helloDuke/web/response.jsp
new file mode 100644
index 0000000..7acf789
--- /dev/null
+++ b/jsf-demo/archive/helloDuke/web/response.jsp
@@ -0,0 +1,57 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<HTML>
+<HEAD><title>Hello</title></HEAD>
+<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
+<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+<body bgcolor="white">
+<f:view>
+    <h:form id="responseform">
+        <h:graphicImage id="waveImg" url="/wave.med.gif"/>
+        <h2>Hi, <h:outputText id="userLabel" value="#{UserNameBean.userName}"/></h2>
+        <h:commandButton id="back" value="Back" action="success"/>
+        <p/>
+    </h:form>
+</f:view>
+</body>
+</HTML>  
diff --git a/jsf-demo/archive/helloDuke/web/wave.med.gif b/jsf-demo/archive/helloDuke/web/wave.med.gif
new file mode 100644
index 0000000..70b7cff
Binary files /dev/null and b/jsf-demo/archive/helloDuke/web/wave.med.gif differ
diff --git a/jsf-demo/archive/j2meDemo/build.properties.sample b/jsf-demo/archive/j2meDemo/build.properties.sample
new file mode 100644
index 0000000..10441a5
--- /dev/null
+++ b/jsf-demo/archive/j2meDemo/build.properties.sample
@@ -0,0 +1,89 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 2005-2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
+# -----------------------------------------------------------------------------
+# build.properties.sample
+#
+# This is an example "build.properties" file, used to customize building the
+# sample app for your local environment.  It defines the location of all 
+# external modules that the sample app depends on.  
+#
+# Copy this file to "build.properties" in the top-level source directory, 
+# and customize it as needed.
+#
+# After you are done editing the file, run "ant" in the same directory as
+# the build.xml file to build the Character Demo.
+#
+# Do display current property setting run the ant command: "ant props"
+#
+# -----------------------------------------------------------------------------
+
+# ----- Default Paths for Dependent Packages -----
+
+# These path values are based on a SJSAS 8.0 PE install. 
+
+# If you are running SJSAS 8.0 PE you will only need to modify the "base.path"
+# property to point to your SJSAS 8.0 PE installation.
+
+# If you are not running SJSAS 8.0 PE you will need to customize all runtime
+# dependency jar file paths to your specific installation.
+
+base.path=<SJSAS_HOME>
+
+commons-beanutils.jar=${base.path}/lib/appserv-rt.jar
+commons-collections.jar=${base.path}/lib/appserv-rt.jar
+commons-digester.jar=${base.path}/lib/appserv-rt.jar
+commons-logging.jar=${base.path}/lib/appserv-rt.jar
+jsf-impl.jar=${base.path}/lib/jsf-impl.jar
+jstl.jar=${base.path}/lib/appserv-jstl.jar
+servlet.jar=${base.path}/lib/j2ee.jar
+standard.jar=${base.path}/lib/appserv-jstl.jar
+
+# ----- Web Application Jar Bundling -----
+
+# Uncomment the following property if you want to bundle all dependent 
+# jars into the web application. 
+
+# If you are running in the Sun Java Systems Application Server 8.0 PE
+# environment or any other environment where JSF 1.0 and dependencies are
+# is already bundled, you do not need to bundle any of the run-time jar files
+# in your web application.
+
+# build.standalone=true
diff --git a/jsf-demo/archive/j2meDemo/build.xml b/jsf-demo/archive/j2meDemo/build.xml
new file mode 100644
index 0000000..494ff93
--- /dev/null
+++ b/jsf-demo/archive/j2meDemo/build.xml
@@ -0,0 +1,144 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project name="j2meDemo" default="build" basedir=".">
+
+    <property file="${user.home}/build.properties"/>
+    <property file="../../../build.properties"/>
+    <import file="${jsf.build.home}/common/ant/common.xml"/>
+
+
+    <!-- Configure the context path for this application -->
+    <property name="context.path" value="/jsf-j2meDemo"/>
+    <property name="example" value="jsf-j2meDemo"/>
+    <property name="build" value="${basedir}/build"/>
+    <property name="dist" value="${basedir}/docs"/>
+    <property name="bundleName" value="article"/>   
+
+    <path id="classpath">      
+        <pathelement location="${javax.faces-api.jar}"/>
+        <pathelement location="${javax.faces.jar}"/>      
+        <pathelement location="${build}/${example}/WEB-INF/classes"/>
+        <path refid="compile.classpath"/>
+    </path>
+   
+    <target name="init" depends="check.changes">
+        <tstamp/>
+    </target>
+
+    <target name="check.changes">
+        <uptodate property="skip.build"
+                  targetfile="${build}/last-build">
+            <srcfiles dir="${basedir}">
+                <include name="src/**/*.*"/>
+                <include name="conf/**/*.*"/>
+                <include name="web/**/*.*"/>
+            </srcfiles>
+        </uptodate>
+    </target>
+
+    <target name="clean">
+        <delete dir="${build}"/>
+        <delete dir="${context.path}"/>
+    </target>    
+
+    <target name="prepare" depends="init"
+            description="Create build directories.">
+        <mkdir dir="${build}/${example}"/>
+        <mkdir dir="${build}/${example}/WEB-INF"/>
+        <mkdir dir="${build}/${example}/WEB-INF/classes"/>
+        <mkdir dir="${build}/${example}/WEB-INF/lib"/>
+    </target>    
+
+    <target name="build" unless="skip.build" depends="prepare"
+            description="Compile Java files and copy static files.">
+        <touch file="${build}/last-build"/>
+         <jsf.javac srcdir="src"
+                   destdir="${build}/${example}/WEB-INF/classes">
+            <classpath>
+                <path refid="classpath"/>
+            </classpath>
+        </jsf.javac>
+        <copy todir="${build}/${example}/WEB-INF">
+            <fileset dir="web/WEB-INF">
+                <include name="*.xml"/>
+            </fileset>
+        </copy>
+        <copy todir="${build}/${example}/WEB-INF/classes/j2meDemo">
+            <fileset dir="src/java/j2meDemo">
+                <include name="**/*.properties"/>
+            </fileset>
+        </copy>
+        <copy todir="${build}/${example}/WEB-INF">
+            <fileset dir="web/WEB-INF/tlds">
+                <include name="*.tld"/>
+            </fileset>
+        </copy>
+
+
+        <copy todir="${build}/${example}/">
+            <fileset dir="web">
+                <include name="*.css"/>
+                <include name="*.html"/>
+                <include name="*.gif"/>
+                <include name="**/*.jpg"/>
+                <include name="*.jsp"/>
+                <include name="*.xml"/>
+            </fileset>
+        </copy>
+        <copy todir="${build}/${example}/WEB-INF/classes/${example}">
+            <fileset dir="web">
+                <include name="*properties"/>
+            </fileset>
+        </copy>
+
+        <jsf.war basedir="${build}"
+                 archive-name="${example}"
+                 webxml="${build}/${example}/WEB-INF/web.xml">
+            <archive-elements>
+                <zipfileset dir="${build}/${example}"/>
+            </archive-elements>
+        </jsf.war>
+    </target>   
+
+</project>
+
diff --git a/jsf-demo/archive/j2meDemo/midlet/AbstractMIDlet.java b/jsf-demo/archive/j2meDemo/midlet/AbstractMIDlet.java
new file mode 100644
index 0000000..557f983
--- /dev/null
+++ b/jsf-demo/archive/j2meDemo/midlet/AbstractMIDlet.java
@@ -0,0 +1,54 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+import java.util.Hashtable; 
+import javax.microedition.lcdui.CommandListener; 
+import javax.microedition.midlet.MIDlet; 
+
+/**
+ * A generic abstraction of a MIDlet.  Add common methods
+ * as necessary.
+ */
+public abstract class AbstractMIDlet extends MIDlet 
+    implements CommandListener { 
+
+    protected void connectionCompleted(Hashtable response) {};
+}
+
diff --git a/jsf-demo/archive/j2meDemo/midlet/ConnectionManager.java b/jsf-demo/archive/j2meDemo/midlet/ConnectionManager.java
new file mode 100644
index 0000000..2bb0ab3
--- /dev/null
+++ b/jsf-demo/archive/j2meDemo/midlet/ConnectionManager.java
@@ -0,0 +1,252 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+import java.io.IOException; 
+import java.io.InputStream; 
+import java.io.OutputStream; 
+import java.io.UnsupportedEncodingException; 
+import java.util.Enumeration; 
+import java.util.Hashtable; 
+
+import javax.microedition.io.Connector; 
+import javax.microedition.io.HttpConnection; 
+import javax.microedition.midlet.MIDlet;
+
+/**
+ * Class used to managed Http connection activity - used 
+ * by MIDlets to communicate to a server.
+ *
+ * Thanks to web resources for much of this code.
+ */
+
+public class ConnectionManager implements Runnable { 
+    private String url; 
+    private String urlPrefix = "http://localhost:8080/jsf-j2meDemo/"; 
+    private Hashtable request; 
+    private Hashtable response; 
+    private String sessionCookie; 
+    private boolean busy = false; 
+    private AbstractMIDlet midlet = null;
+
+
+    public ConnectionManager(AbstractMIDlet midlet) {
+        this.midlet = midlet;
+	String containerPort = System.getProperty("container.port");
+	if (null == containerPort || 0 == containerPort.length()) {
+	    containerPort = "8080";
+	}
+	urlPrefix = "http://localhost:" + containerPort + "/jsf-j2meDemo/"; 
+    }
+
+    public synchronized void run() { 
+        try { 
+            for (;;) { 
+                while (!busy) 
+                wait(); 
+                try { 
+                    byte[] data = post(); 
+                    response = decode(data); 
+                } catch (IOException ex) { 
+                    ex.printStackTrace(); 
+                } 
+                busy = false; 
+                midlet.connectionCompleted(response); 
+            } 
+        } catch (InterruptedException ie) {} 
+    } 
+
+    public synchronized void connect(String url, Hashtable request) { 
+        this.url = url; 
+        this.request = request; 
+        if (busy) return; 
+        busy = true; 
+        notify(); 
+    } 
+    private void urlEncode(String s, OutputStream out) 
+        throws IOException { 
+        byte[] bytes = s.getBytes("UTF8"); 
+        for (int i = 0; i < bytes.length; i++) { 
+            byte b = bytes[i]; 
+            if (b == ' ') { 
+                out.write('+'); 
+            } else if ('0' <= b && b <= '9' 
+                || 'A' <= b && b <= 'Z' 
+                || 'a' <= b && b <= 'z' 
+                || "-_.!~*'(),".indexOf(b) >= 0) { 
+                out.write(b); 
+            } else { 
+                out.write('%'); 
+                int b1 = (b & 0xF0) >> 4; 
+                out.write((b1 < 10 ? '0' : 'a' - 10) + b1); 
+                int b2 = b & 0xF; 
+                out.write((b2 < 10 ? '0' : 'a' - 10) + b2); 
+            } 
+        } 
+    } 
+
+    private boolean isspace(byte b) { 
+        return " \n\r\t".indexOf(b) >= 0; 
+    } 
+
+    private Hashtable decode(byte[] data) { 
+        if (data == null) return null; 
+        Hashtable table = new Hashtable(); 
+        try { 
+            int start = 0; 
+            for (;;) { 
+                while (start < data.length && isspace(data[start])) 
+                    start++; 
+                if (start >= data.length) return table; 
+                int end = start + 1; 
+                int count = 0; 
+                while (end < data.length && data[end] != '=') end++; 
+                String key = new String(data, start, end - start, "ASCII"); 
+                start = end + 1; 
+                end = start; 
+                while (end < data.length && !isspace(data[end])) { 
+                    count++; 
+                    if (data[end] == '%') end += 3; else end++; 
+                } 
+                byte[] b = new byte[count]; 
+                int k = start; 
+                int c = 0; 
+                while (k < end) { 
+                    if (data[k] == '%') { 
+                        int h = data[k + 1]; 
+                        if (h >= 'a') h = h - 'a' + 10; 
+                        else if (h >= 'A') h = h - 'A' + 10; 
+                        else h = h - '0'; 
+                        int l = data[k + 2]; 
+                        if (l >= 'a') l = l - 'a' + 10; 
+                        else if (l >= 'A') l = l - 'A' + 10; 
+                        else l = l - '0'; 
+                        b[c] = (byte) ((h << 4) + l); 
+                        k += 3; 
+                    } else if (data[k] == '+') { 
+                        b[c] = ' '; 
+                        k++; 
+                    } else {
+                        b[c] = data[k]; 
+                        k++; 
+                    } 
+                    c++; 
+                } 
+                String value = new String(b, "UTF8"); 
+                table.put(key, value); 
+                start = end + 1; 
+            } 
+        } catch (UnsupportedEncodingException ex) { 
+        }
+        return table; 
+    } 
+
+    private byte[] post() throws IOException { 
+        HttpConnection conn = null; 
+        byte[] data = null; 
+        try { 
+            conn = (HttpConnection) Connector.open(urlPrefix + url); 
+            conn.setRequestMethod(HttpConnection.POST); 
+            conn.setRequestProperty("User-Agent", 
+                "Profile/MIDP-2.0 Configuration/CLDC-1.0"); 
+            conn.setRequestProperty("Content-Language", "en-US"); 
+            conn.setRequestProperty("Content-Type", 
+                "application/x-www-form-urlencoded"); 
+            if (sessionCookie != null) 
+                conn.setRequestProperty("Cookie", sessionCookie); 
+                OutputStream out = conn.openOutputStream(); 
+                if (request != null) { 
+                    Enumeration keys = request.keys(); 
+                    while (keys.hasMoreElements()) { 
+                        String key = (String) keys.nextElement(); 
+                        String value = (String) request.get(key); 
+                        urlEncode(key, out); 
+                        out.write('='); 
+                        urlEncode(value, out); 
+                        if (keys.hasMoreElements()) out.write('&'); 
+                    } 
+                } 
+                int rc = conn.getResponseCode(); 
+                if (rc != HttpConnection.HTTP_OK) 
+                    throw new IOException("HTTP response code: " + rc); 
+                InputStream in = conn.openInputStream(); 
+                // Read the session ID--it's the first cookie 
+                String cookie = conn.getHeaderField("Set-cookie"); 
+                if (cookie != null) { 
+                    int semicolon = cookie.indexOf(';'); 
+                    sessionCookie = cookie.substring(0, semicolon); 
+                } 
+                // Get the length and process the data 
+                int len = (int) conn.getLength(); 
+                int actual = 0; 
+                int bytesread = 0 ; 
+                if (len > 0) { 
+                    data = new byte[len]; 
+                    while ((bytesread != len) && (actual != -1)) { 
+                        actual = in.read(data, bytesread, len - bytesread); 
+                        if (actual != -1) bytesread += actual; 
+                    } 
+                } else { 
+                    final int BLOCKSIZE = 1024; 
+                    data = new byte[BLOCKSIZE]; 
+                    while (actual != -1) { 
+                        if (bytesread == data.length) { 
+                            byte[] bigger = new byte[data.length + BLOCKSIZE]; 
+                            System.arraycopy(data, 0, bigger, 0, data.length); 
+                            data = bigger; 
+                        } 
+                        actual = in.read(data, bytesread, 
+                        data.length - bytesread); 
+                        if (actual != -1) bytesread += actual; 
+                    } 
+                    if (bytesread < data.length) { 
+                    byte[] smaller = new byte[bytesread]; 
+                    System.arraycopy(data, 0, smaller, 0, bytesread); 
+                    data = smaller; 
+                } 
+            } 
+        } catch (ClassCastException e) { 
+            throw new IOException("Not an HTTP URL"); 
+        } finally { 
+            if (conn != null) conn.close(); 
+        } 
+        return data; 
+    } 
+} 
+
diff --git a/jsf-demo/archive/j2meDemo/midlet/TicTacToeMIDlet.java b/jsf-demo/archive/j2meDemo/midlet/TicTacToeMIDlet.java
new file mode 100644
index 0000000..2ef1b87
--- /dev/null
+++ b/jsf-demo/archive/j2meDemo/midlet/TicTacToeMIDlet.java
@@ -0,0 +1,343 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+import java.util.Hashtable; 
+import javax.microedition.lcdui.Canvas; 
+import javax.microedition.lcdui.Choice; 
+import javax.microedition.lcdui.ChoiceGroup; 
+import javax.microedition.lcdui.Command; 
+import javax.microedition.lcdui.CommandListener; 
+import javax.microedition.lcdui.Display; 
+import javax.microedition.lcdui.Displayable; 
+import javax.microedition.lcdui.Form; 
+import javax.microedition.lcdui.Graphics; 
+import javax.microedition.lcdui.StringItem; 
+import javax.microedition.midlet.MIDlet; 
+
+/**
+ * This class implements the old "tic tac toe" game
+ * on a client device.
+ */
+public class TicTacToeMIDlet extends AbstractMIDlet 
+    implements CommandListener { 
+    private Display display; 
+    private StringItem position; 
+    private ChoiceGroup boardSize; 
+    private StringItem message; 
+    private StringItem result; 
+    private Command exitCommand; 
+    private Command startCommand; 
+    private Command selectCommand; 
+    private Command sizeSelectCommand; 
+    private Command continueCommand; 
+    private Command newGameCommand; 
+    private BoardCanvas board; 
+    private Form startForm; 
+    private Form sizeForm; 
+    private Form messageForm; 
+    private Form waitForm; 
+    private Form gameOverForm; 
+    private String webform; 
+    private ConnectionManager connectionMgr; 
+    private Thread connectionThread; 
+
+    // ------ Standard MIDlet methods -----------------------------
+
+    public void startApp() { 
+        display = Display.getDisplay(this); 
+        exitCommand = new Command("Exit", Command.EXIT, 1); 
+        createStartForm(); 
+        createSizeForm();
+        createBoardCanvas(); 
+        createGameOverForm();
+        connectionMgr = new ConnectionManager(this);
+        connectionThread = new Thread(connectionMgr);
+        connectionThread.start();
+        waitForm = new Form("Waiting...");
+        display.setCurrent(startForm); 
+    } 
+
+    public void pauseApp() {} 
+
+    public void destroyApp(boolean unconditional) {} 
+
+    // ------ Create Display Objects ------------------------------
+ 
+    public void createStartForm() { 
+        startForm = new Form("Start"); 
+        startForm.setTitle("Welcome"); 
+        startForm.append("Start the TicTacToe Game"); 
+        startCommand = new Command("Start", Command.OK, 0); 
+        startForm.addCommand(startCommand); 
+        startForm.addCommand(exitCommand); 
+        startForm.setCommandListener(this); 
+    } 
+
+    public void createSizeForm() { 
+        sizeForm = new Form("Size"); 
+        sizeForm.setTitle("Game Board Size Selection");
+        sizeForm.append("Choose a board size:");
+        boardSize = new ChoiceGroup("Size", Choice.EXCLUSIVE);
+        sizeForm.append(boardSize);
+        sizeSelectCommand = new Command("Select", Command.OK, 0);
+        sizeForm.addCommand(sizeSelectCommand);
+        sizeForm.addCommand(exitCommand);
+        sizeForm.setCommandListener(this); 
+    }
+
+    public void createBoardCanvas() { 
+        board = new BoardCanvas(); 
+        board.setTitle("Game Board"); 
+        selectCommand = new Command("Select", Command.OK, 0); 
+        board.addCommand(selectCommand); 
+        board.setCommandListener(this); 
+    } 
+
+    public void createMessageForm() { 
+        messageForm = new Form("Message"); 
+        message = new StringItem("", null); 
+        messageForm.append(message); 
+        continueCommand = new Command("Continue", Command.OK, 0); 
+        messageForm.addCommand(continueCommand); 
+        messageForm.addCommand(exitCommand); 
+        messageForm.setCommandListener(this); 
+    } 
+
+    public void createGameOverForm() { 
+        gameOverForm = new Form("Game Over"); 
+        result = new StringItem("", null); 
+        gameOverForm.append(result); 
+        newGameCommand = new Command("New Game", Command.OK, 0); 
+        gameOverForm.addCommand(newGameCommand); 
+        gameOverForm.addCommand(exitCommand); 
+        gameOverForm.setCommandListener(this); 
+    } 
+
+    /**
+     * The standard listener method for MIDlet commands..
+     */
+    public void commandAction(Command c, Displayable s) { 
+        if (c == startCommand) {
+            doStart(); 
+        } else if (c == sizeSelectCommand) {
+            doSizeSelect();
+        } else if (c == selectCommand) {
+            doSelect();
+        } else if (c == newGameCommand) {
+            notifyDestroyed();
+            doNewGame();
+        } else if (c == exitCommand) notifyDestroyed(); 
+    } 
+
+    // ------ Connection Methods --------------------------------
+ 
+    public void connect(String url, Hashtable request) {
+        display.setCurrent(waitForm);
+        connectionMgr.connect(url, request);
+    }
+                                                                                
+    public void connectionCompleted(Hashtable response) {
+        webform = (String) response.get("form");
+        if (webform.equals("start")) {
+            displayStart(response);
+        } else if (webform.equals("play")) {
+            displayPlay(response);
+        } else if ((webform.equals("won")) ||
+            (webform.equals("lost")) ||
+            (webform.equals("draw"))) {
+            displayGameOver(response);
+        }
+    }
+
+    // ------ Helper Methods 
+
+    private void doStart() { 
+        connect("start.faces", null);
+    } 
+
+    private void doSizeSelect() {
+        Hashtable request = new Hashtable();
+        request.put("boardsize", boardSize.getString(
+            boardSize.getSelectedIndex()));
+        request.put("form", "start");
+        request.put("submit", "");
+        connect("start.faces", request);
+    }
+
+    private void doSelect() {
+        Hashtable request = new Hashtable();
+        request.put("board", board.getString());
+        request.put("form", "play");
+        request.put("submit", "");
+        connect("play.faces", request);
+    }
+
+    private void doNewGame() {
+        Hashtable request = new Hashtable();
+        request.put("form", webform);
+        request.put("newgame", "");
+        connect(webform + ".faces", request);
+    }
+
+    private void displayStart(Hashtable response) { 
+        // Display the choice group from response data....
+        String name = "boardsize";
+        String value = (String) response.get(name);
+        String label = null;
+        int i = 0;
+        boardSize.deleteAll();
+        while ((label = (String) response.get(name + ".label." + i)) != null) {
+            boardSize.append(label, null);
+            if (label.equals(value)) {
+                boardSize.setSelectedIndex(i, true);
+            }
+            i++;
+        }
+        display.setCurrent(sizeForm); 
+    } 
+
+    private void displayPlay(Hashtable response) {
+        board.parse((String) response.get("board")); 
+        String msg = (String) response.get("messages.board"); 
+        if (msg != null) { 
+            message.setText(msg); 
+            display.setCurrent(messageForm); 
+            return; 
+        } 
+        display.setCurrent(board); 
+    }
+
+    private void displayGameOver(Hashtable response) { 
+        result.setText((String) response.get("result")); 
+        display.setCurrent(gameOverForm); 
+    } 
+} 
+
+/**
+ * Canvas used for displaying and manipulating the game board.
+ */
+class BoardCanvas extends Canvas { 
+    public static final int SELECTED = 1; 
+    public static final int TAKEN = 2; 
+    private int[][] positions;
+    private int rows = 0;
+    private int columns = 0;
+    private int currentRow = 0; 
+    private int currentColumn = 0; 
+    public void parse(String layout) { 
+        for (int i = 0; i < layout.length(); i++) {
+            if (layout.charAt(i) == ' ') {
+                rows = i;
+                break;
+            }
+        }
+        columns = rows;
+        positions = new int[rows][columns];
+
+        int n = 0; 
+        for (int i = 0; i < rows; i++) { 
+            for (int j = 0; j < columns; j++) { 
+                char c = layout.charAt(n); 
+                n++; 
+                positions[i][j] = c - '0'; 
+            } 
+            n++; 
+        } 
+    } 
+    public String getString() { 
+        return "" + (char) ('A' + currentRow) + (1 + currentColumn); 
+    } 
+    public void paint(Graphics g) { 
+        int width = getWidth(); 
+        int height = getHeight(); 
+        int oldColor = g.getColor(); 
+        g.setColor(0xFFFFFF); 
+        g.fillRect(0, 0, width, height); 
+        g.setColor(oldColor); 
+        int cellWidth = width / (columns + 2); 
+        int cellHeight = height / (rows + 2); 
+        int cellSize = Math.min(cellWidth, cellHeight); 
+        for (int i = 0; i <= rows; i++) { 
+            int y = (i + 1) * cellSize; 
+            g.drawLine(cellSize, y, (columns + 1) * cellSize, y); 
+        } 
+        for (int j = 0; j <= columns; j++) { 
+            int x = (j + 1) * cellSize; 
+            g.drawLine(x, cellSize, x, (rows + 1) * cellSize); 
+        } 
+        for (int i = 0; i < rows; i++) { 
+            int y = (i + 1) * cellSize; 
+            for (int j = 0; j < columns; j++) { 
+                int x = (j + 1) * cellSize; 
+                int p = positions[i][j]; 
+                if ((p & SELECTED) != 0) 
+                    g.drawRect(x+6, y+6, cellSize-12, cellSize-12); 
+                if ((p & TAKEN) != 0) { 
+                    if (p == (TAKEN | SELECTED)) { 
+                        oldColor = g.getColor(); 
+                        g.setColor(0xFFFFFF); 
+                    } 
+                    g.drawLine(x, y, x + cellSize, y + cellSize); 
+                    g.drawLine(x + cellSize, y, x, y + cellSize); 
+                    if (p == (TAKEN | SELECTED)) g.setColor(oldColor); 
+                } 
+            } 
+        } 
+        int x = (currentColumn + 1) * cellSize; 
+        int y = (currentRow + 1) * cellSize; 
+        g.drawRect(x - 1, y - 1, cellSize + 2, cellSize + 2); 
+    } 
+
+    public void keyPressed(int keyCode) { 
+        int gameAction = getGameAction(keyCode); 
+
+        if (gameAction == LEFT) { 
+            currentColumn = (currentColumn + columns - 1) % columns; 
+        } else if (gameAction == RIGHT) { 
+            currentColumn = (currentColumn + 1) % columns; 
+        } else if (gameAction == UP) { 
+            currentRow = (currentRow + rows - 1) % rows; 
+        } else if (gameAction == DOWN) { 
+            currentRow = (currentRow + 1) % rows; 
+        } 
+        repaint(); 
+    } 
+}
+
diff --git a/jsf-demo/archive/j2meDemo/src/java/j2meDemo/messages.properties b/jsf-demo/archive/j2meDemo/src/java/j2meDemo/messages.properties
new file mode 100644
index 0000000..c370e06
--- /dev/null
+++ b/jsf-demo/archive/j2meDemo/src/java/j2meDemo/messages.properties
@@ -0,0 +1,43 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
+won=Great job - you beat the machine!
+lost=Sorry, better luck next time!
+draw=Wow! What a game.  Looks like a draw.
diff --git a/jsf-demo/archive/j2meDemo/src/java/j2meDemo/model/Game.java b/jsf-demo/archive/j2meDemo/src/java/j2meDemo/model/Game.java
new file mode 100644
index 0000000..31a9535
--- /dev/null
+++ b/jsf-demo/archive/j2meDemo/src/java/j2meDemo/model/Game.java
@@ -0,0 +1,65 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package j2meDemo.model;
+
+public class Game {
+    private GameBoard board;
+
+    public Game() {
+        initialize();
+    }
+
+    public GameBoard getBoard() {
+        return board;
+    }
+
+    public void setBoard(GameBoard board) {
+        this.board = board;
+    }
+
+    public String initialize() {
+        board = new GameBoard();
+        board.setRows(3);
+        board.setColumns(3);
+        board.initialize();
+        return "setup";
+    }
+}
diff --git a/jsf-demo/archive/j2meDemo/src/java/j2meDemo/model/GameBoard.java b/jsf-demo/archive/j2meDemo/src/java/j2meDemo/model/GameBoard.java
new file mode 100644
index 0000000..fe9a4b3
--- /dev/null
+++ b/jsf-demo/archive/j2meDemo/src/java/j2meDemo/model/GameBoard.java
@@ -0,0 +1,227 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package j2meDemo.model;
+
+import javax.faces.model.SelectItem;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Random;
+
+public class GameBoard {
+    public static final int CLIENT_PLAYER = 1;
+    public static final int SERVER_PLAYER = 2;
+    public static final int DRAW = 3;
+
+    private static Random generator = new Random();
+    private static final int[] BOARD_SIZES = {3, 4, 5, 6};
+    private int rows;
+    private int columns;
+    private int currentRow;
+    private int currentColumn;
+    private int[][] positions;
+
+    // PROPERTY: rows
+    public void setRows(int newValue) {
+        rows = newValue;
+    }
+
+    public int getRows() {
+        return rows;
+    }
+
+    // PROPERTY: columns
+    public void setColumns(int newValue) {
+        columns = newValue;
+    }
+
+    public int getColumns() {
+        return columns;
+    }
+
+    public void initialize() {
+        positions = new int[rows][columns];
+    }
+
+    public List getBoardSizes() {
+        List boardSizes = new ArrayList();
+        for (int i = 0; i < BOARD_SIZES.length; i++) {
+            String label = "" + BOARD_SIZES[i];
+            boardSizes.add(new SelectItem(label, label, null));
+        }
+        return boardSizes;
+    }
+
+    public int getCellValue(int i, int j) {
+        if (positions == null) {
+            return 0;
+        }
+        if (0 <= i && i < rows && 0 <= j && j < columns) {
+            return positions[i][j];
+        } else {
+            return 0;
+        }
+    }
+
+    public void setCurrent(String pos) {
+        if (pos == null || pos.length() < 2) {
+            throw new IllegalArgumentException();
+        }
+        int r = pos.charAt(0) - 'A';
+        int c = Integer.parseInt(pos.substring(1)) - 1;
+        if (r < 0 || r >= rows || c < 0 || c >= columns) {
+            throw new IllegalArgumentException();
+        }
+        currentRow = r;
+        currentColumn = c;
+    }
+
+    // the client "manual" move
+    public boolean move() {
+        boolean validMove = false;
+        if (positions == null) {
+            return validMove;
+        }
+        if (getCellValue(currentRow, currentColumn) == 0) {
+            positions[currentRow][currentColumn] |= CLIENT_PLAYER;
+            validMove = true;
+        }
+        return validMove;
+    }
+
+    // the server "automated" move
+    public void randomMove() {
+        // pick a random cell that hasn't yet been taken 
+        while (true) {
+            int m = generator.nextInt(rows);
+            int n = generator.nextInt(columns);
+            if (positions[m][n] == 0) {
+                positions[m][n] |= SERVER_PLAYER;
+                break;
+            }
+        }
+    }
+
+    /**
+     * Returns an integer corresponding to the winning player if
+     * there is one.  If there is no winning player, zero will
+     * be returned.  If the game is complete with no winner,
+     * DRAW (a value 3) will be returned (indicating draw).
+     */
+    public int gameComplete() {
+        // check for consecutive row entries..
+        for (int i = 0; i < rows; i++) {
+            boolean same = true;
+            int playerType = getCellValue(i, 0);
+            for (int j = 0; j < columns; j++) {
+                if ((getCellValue(i, j) == playerType) && (playerType > 0)) {
+                    continue;
+                } else {
+                    same = false;
+                    break;
+                }
+            }
+            if (same == true) {
+                return playerType;
+            }
+        }
+        // check for consecutive column entries..
+        for (int j = 0; j < columns; j++) {
+            boolean same = true;
+            int playerType = getCellValue(0, j);
+            for (int i = 0; i < rows; i++) {
+                if ((getCellValue(i, j) == playerType) && (playerType > 0)) {
+                    continue;
+                } else {
+                    same = false;
+                    break;
+                }
+            }
+            if (same == true) {
+                return playerType;
+            }
+        }
+
+        // check for consecutive diagonal entries..
+        boolean same = true;
+        int playerType = getCellValue(0, 0);
+        for (int i = 0; i < rows; i++) {
+            if ((getCellValue(i, i) == playerType) && (playerType > 0)) {
+                continue;
+            } else {
+                same = false;
+                break;
+            }
+        }
+        if (same) {
+            return playerType;
+        }
+        same = true;
+        int j = 0;
+        playerType = getCellValue(rows - 1, j);
+        for (int i = rows - 1; i >= 0; i--) {
+            if ((getCellValue(i, j) == playerType) && (playerType > 0)) {
+                j++;
+                continue;
+            } else {
+                same = false;
+                break;
+            }
+        }
+        if (same) {
+            return playerType;
+        }
+        // check for draw (all squares occupied)..
+        boolean full = true;
+        for (int i = 0; i < rows; i++) {
+            for (j = 0; j < columns; j++) {
+                if (getCellValue(i, j) == 0) {
+                    full = false;
+                    break;
+                }
+            }
+        }
+        if (full) {
+            return DRAW;
+        }
+        return 0;
+    }
+}
diff --git a/jsf-demo/archive/j2meDemo/src/java/j2meDemo/model/SetupForm.java b/jsf-demo/archive/j2meDemo/src/java/j2meDemo/model/SetupForm.java
new file mode 100644
index 0000000..285135c
--- /dev/null
+++ b/jsf-demo/archive/j2meDemo/src/java/j2meDemo/model/SetupForm.java
@@ -0,0 +1,109 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package j2meDemo.model;
+
+import javax.faces.component.UISelectOne;
+
+public class SetupForm {
+    private String size = "3";
+    private String position = "";
+    private UISelectOne boardSize;
+    private GameBoard gameBoard;
+
+    // PROPERTY: size
+    public String getSize() {
+/*
+      if (battleGround.getAvailableSizes().size() > 0)
+         size = ((SelectItem) 
+            battleGround.getAvailableSizes().get(0)).getLabel();
+*/
+        return size;
+    }
+
+    public void setSize(String newSize) {
+        this.size = newSize;
+    }
+
+    public String getPosition() {
+        return position;
+    }
+
+    public void setPosition(String newPosition) {
+        this.position = newPosition;
+    }
+
+    public UISelectOne getBoardSize() {
+        return boardSize;
+    }
+
+    public void setBoardSize(UISelectOne boardSize) {
+        this.boardSize = boardSize;
+    }
+
+    public void setGameBoard(GameBoard newGameBoard) {
+        this.gameBoard = newGameBoard;
+    }
+
+    public String play() {
+        // client moves
+        if (!gameBoard.move()) {
+            return "play";
+        }
+        if (gameBoard.gameComplete() == gameBoard.CLIENT_PLAYER) {
+            return "won";
+        } else if (gameBoard.gameComplete() == gameBoard.DRAW) {
+            return "draw";
+        }
+        // server moves
+        gameBoard.randomMove();
+        if (gameBoard.gameComplete() == gameBoard.SERVER_PLAYER) {
+            return "lost";
+        } else if (gameBoard.gameComplete() == gameBoard.DRAW) {
+            return "draw";
+        }
+        // we're not done yet...
+        return "play";
+    }
+
+    public String submit() {
+        return "play";
+    }
+}
diff --git a/jsf-demo/archive/j2meDemo/src/java/j2meDemo/renderkit/ChoiceRenderer.java b/jsf-demo/archive/j2meDemo/src/java/j2meDemo/renderkit/ChoiceRenderer.java
new file mode 100644
index 0000000..1963121
--- /dev/null
+++ b/jsf-demo/archive/j2meDemo/src/java/j2meDemo/renderkit/ChoiceRenderer.java
@@ -0,0 +1,117 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package j2meDemo.renderkit;
+
+import javax.faces.component.EditableValueHolder;
+import javax.faces.component.UIComponent;
+import javax.faces.component.ValueHolder;
+import javax.faces.context.FacesContext;
+import javax.faces.context.ResponseWriter;
+import javax.faces.model.SelectItem;
+import javax.faces.render.Renderer;
+
+import java.io.IOException;
+import java.net.URLEncoder;
+import java.util.List;
+import java.util.Map;
+
+import j2meDemo.util.Util;
+
+public class ChoiceRenderer extends Renderer {
+    public void encodeEnd(FacesContext context, UIComponent component)
+          throws IOException {
+        ResponseWriter writer = context.getResponseWriter();
+        EditableValueHolder input = (EditableValueHolder) component;
+        String id = component.getId();
+        List items = Util.getSelectItems(component);
+        String value = input.getValue().toString();
+        String label = findLabel(items, value);
+        writer.write(id + "=" + URLEncoder.encode(label, "UTF8") + "\n");
+        for (int i = 0; i < items.size(); i++) {
+            SelectItem item = (SelectItem) items.get(i);
+            writer.write(id
+                         + ".label."
+                         + i
+                         + "="
+                         + URLEncoder.encode(item.getLabel(), "UTF8")
+                         + "\n");
+        }
+    }
+
+    public void decode(FacesContext context, UIComponent component) {
+        if (context == null || component == null) {
+            return;
+        }
+
+        String id = component.getId();
+        Map requestMap
+              = context.getExternalContext().getRequestParameterMap();
+        if (requestMap.containsKey(id)
+            && component instanceof ValueHolder) {
+            String label = (String) requestMap.get(id);
+            List items = Util.getSelectItems(component);
+            Object value = findValue(items, label);
+            ((ValueHolder) component).setValue(value);
+        }
+    }
+
+    private static Object findValue(List list, String label) {
+        for (int i = 0; i < list.size(); i++) {
+            SelectItem item = (SelectItem) list.get(i);
+            if (item.getLabel().equals(label)) {
+                return item.getValue();
+            }
+        }
+        return null;
+    }
+
+    private static String findLabel(List list, Object value) {
+        for (int i = 0; i < list.size(); i++) {
+            SelectItem item = (SelectItem) list.get(i);
+            if (item.getValue().equals(value)) {
+                return item.getLabel();
+            }
+        }
+        return null;
+    }
+}
+
+
diff --git a/jsf-demo/archive/j2meDemo/src/java/j2meDemo/renderkit/CommandRenderer.java b/jsf-demo/archive/j2meDemo/src/java/j2meDemo/renderkit/CommandRenderer.java
new file mode 100644
index 0000000..aff9431
--- /dev/null
+++ b/jsf-demo/archive/j2meDemo/src/java/j2meDemo/renderkit/CommandRenderer.java
@@ -0,0 +1,63 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package j2meDemo.renderkit;
+
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.event.ActionEvent;
+import javax.faces.render.Renderer;
+
+import java.util.Map;
+
+public class CommandRenderer extends Renderer {
+    public void decode(FacesContext context, UIComponent component) {
+        if (context == null || component == null) {
+            return;
+        }
+
+        String id = component.getId();
+        Map requestMap
+              = context.getExternalContext().getRequestParameterMap();
+        if (requestMap.containsKey(id)) {
+            component.queueEvent(new ActionEvent(component));
+        }
+    }
+}
diff --git a/jsf-demo/archive/j2meDemo/src/java/j2meDemo/renderkit/FormRenderer.java b/jsf-demo/archive/j2meDemo/src/java/j2meDemo/renderkit/FormRenderer.java
new file mode 100644
index 0000000..6ead637
--- /dev/null
+++ b/jsf-demo/archive/j2meDemo/src/java/j2meDemo/renderkit/FormRenderer.java
@@ -0,0 +1,89 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package j2meDemo.renderkit;
+
+import javax.faces.application.FacesMessage;
+import javax.faces.component.UIComponent;
+import javax.faces.component.UIForm;
+import javax.faces.context.FacesContext;
+import javax.faces.context.ResponseWriter;
+import javax.faces.render.Renderer;
+
+import java.io.IOException;
+import java.net.URLEncoder;
+import java.util.Iterator;
+import java.util.Map;
+
+public class FormRenderer extends Renderer {
+    public void encodeBegin(FacesContext context,
+                            UIComponent component) throws IOException {
+        ResponseWriter writer = context.getResponseWriter();
+        writer.write("form=" + component.getId() + "\n");
+
+        Iterator ids = context.getClientIdsWithMessages();
+        while (ids.hasNext()) {
+            String id = (String) ids.next();
+            Iterator messages = context.getMessages(id);
+            String msg = null;
+            while (messages.hasNext()) {
+                FacesMessage m = (FacesMessage) messages.next();
+                if (msg == null) {
+                    msg = m.getSummary();
+                } else {
+                    msg = msg + "," + m.getSummary();
+                }
+            }
+            if (msg != null) {
+                writer.write("messages");
+                if (id != null) {
+                    writer.write("." + id);
+                }
+                writer.write("=" + URLEncoder.encode(msg, "UTF8") + "\n");
+            }
+        }
+    }
+
+    public void decode(FacesContext context, UIComponent component) {
+        Map map = context.getExternalContext().getRequestParameterMap();
+        ((UIForm) component).setSubmitted(
+              component.getId().equals(map.get("form")));
+    }
+}
diff --git a/jsf-demo/archive/j2meDemo/src/java/j2meDemo/renderkit/GameBoardRenderer.java b/jsf-demo/archive/j2meDemo/src/java/j2meDemo/renderkit/GameBoardRenderer.java
new file mode 100644
index 0000000..89fdbf0
--- /dev/null
+++ b/jsf-demo/archive/j2meDemo/src/java/j2meDemo/renderkit/GameBoardRenderer.java
@@ -0,0 +1,144 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package j2meDemo.renderkit;
+
+import javax.faces.application.FacesMessage;
+import javax.faces.component.UIComponent;
+import javax.faces.component.UIInput;
+import javax.faces.component.ValueHolder;
+import javax.faces.context.FacesContext;
+import javax.faces.context.ResponseWriter;
+import javax.faces.render.Renderer;
+
+import java.io.IOException;
+import java.util.Map;
+
+import j2meDemo.model.GameBoard;
+
+/**
+ * This renderer generates a "string" representaton of
+ * game board positions (encode).
+ * When decoding, the renderer reconfigures the board size
+ * (if necessary) and sets current coordinates from client.
+ */
+public class GameBoardRenderer extends Renderer {
+    /**
+     * Examine the "cells" on the game board and produce a string
+     * indicating what cells have been visited (marked) by either player.
+     * Each row in the string is seperated by "+".  For example, a
+     * standard tic tac toe board would be rendered as:
+     * 000+010+200   (1-player1  2-player2).
+     * The client device can easily parse this information to
+     * graphically represent it.
+     */
+    public void encodeBegin(FacesContext context, UIComponent component)
+          throws IOException {
+        ResponseWriter writer = context.getResponseWriter();
+        String id = component.getId();
+        Object value = ((ValueHolder) component).getValue();
+        GameBoard board = (GameBoard) value;
+        writer.write(id + "=");
+
+        // go through all cells and write their values to the 
+        // response stream.
+        for (int i = 0; i < board.getRows(); i++) {
+            if (i > 0) {
+                writer.write("+");
+            }
+            for (int j = 0; j < board.getColumns(); j++) {
+                int cellValue = board.getCellValue(i, j);
+                boolean visited = false;
+                if (((cellValue & GameBoard.CLIENT_PLAYER) != 0) ||
+                    ((cellValue & GameBoard.SERVER_PLAYER) != 0)) {
+                    visited = true;
+                }
+                if (visited) {
+                    writer.write('0' + cellValue);
+                } else {
+                    writer.write('0');
+                }
+            }
+        }
+    }
+
+    /**
+     * Reconfigure the size of the game board (if necessary),
+     * and record current coordinates coming from the client
+     * device.
+     */
+    public void decode(FacesContext context, UIComponent component) {
+        if (context == null || component == null) {
+            return;
+        }
+
+        UIInput input = (UIInput) component;
+        String id = input.getId();
+        Object value = input.getValue();
+        GameBoard board = (GameBoard) value;
+
+        input.setValue(value);
+
+        Map parameters = context.getExternalContext().getRequestParameterMap();
+        String boardSize = (String) parameters.get("boardsize");
+        if (boardSize != null) {
+            int size = new Integer(boardSize).intValue();
+            if (board.getRows() != size) {
+                board.setRows(new Integer(boardSize).intValue());
+                board.setColumns(new Integer(boardSize).intValue());
+                board.initialize();
+            }
+        }
+        String coords = (String) parameters.get(id);
+        if (coords == null) {
+            return;
+        }
+
+        try {
+            board.setCurrent(coords);
+        } catch (Exception ex) {
+            input.setValid(false);
+            context.addMessage(id, new FacesMessage(FacesMessage.SEVERITY_ERROR,
+                                                    "Invalid position",
+                                                    "The position that you specified is invalid"));
+        }
+    }
+}
+
diff --git a/jsf-demo/archive/j2meDemo/src/java/j2meDemo/renderkit/TextRenderer.java b/jsf-demo/archive/j2meDemo/src/java/j2meDemo/renderkit/TextRenderer.java
new file mode 100644
index 0000000..eb7e5b6
--- /dev/null
+++ b/jsf-demo/archive/j2meDemo/src/java/j2meDemo/renderkit/TextRenderer.java
@@ -0,0 +1,76 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package j2meDemo.renderkit;
+
+import javax.faces.component.UIComponent;
+import javax.faces.component.ValueHolder;
+import javax.faces.context.FacesContext;
+import javax.faces.context.ResponseWriter;
+import javax.faces.render.Renderer;
+
+import java.io.IOException;
+import java.net.URLEncoder;
+import java.util.Map;
+
+public class TextRenderer extends Renderer {
+    public void encodeBegin(FacesContext context, UIComponent component)
+          throws IOException {
+        ResponseWriter writer = context.getResponseWriter();
+        String id = component.getId();
+        String value = "" + ((ValueHolder) component).getValue();
+        writer.write(id + "=" + URLEncoder.encode(value, "UTF8") + "\n");
+    }
+
+    public void decode(FacesContext context, UIComponent component) {
+        if (context == null || component == null) {
+            return;
+        }
+
+        String id = component.getId();
+        Map requestMap
+              = context.getExternalContext().getRequestParameterMap();
+        if (requestMap.containsKey(id)
+            && component instanceof ValueHolder) {
+            String newValue = (String) requestMap.get(id);
+            ((ValueHolder) component).setValue(newValue);
+        }
+    }
+}
diff --git a/jsf-demo/archive/j2meDemo/src/java/j2meDemo/taglib/CommandTag.java b/jsf-demo/archive/j2meDemo/src/java/j2meDemo/taglib/CommandTag.java
new file mode 100644
index 0000000..48f9b49
--- /dev/null
+++ b/jsf-demo/archive/j2meDemo/src/java/j2meDemo/taglib/CommandTag.java
@@ -0,0 +1,51 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package j2meDemo.taglib;
+
+public class CommandTag extends J2meComponentTag {
+    public String getComponentType() {
+        return "javax.faces.Command";
+    }
+
+    public String getRendererType() {
+        return "j2meDemo.renderkit.Command";
+    }
+}
diff --git a/jsf-demo/archive/j2meDemo/src/java/j2meDemo/taglib/FormTag.java b/jsf-demo/archive/j2meDemo/src/java/j2meDemo/taglib/FormTag.java
new file mode 100644
index 0000000..5a94613
--- /dev/null
+++ b/jsf-demo/archive/j2meDemo/src/java/j2meDemo/taglib/FormTag.java
@@ -0,0 +1,51 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package j2meDemo.taglib;
+
+public class FormTag extends J2meComponentTag {
+    public String getComponentType() {
+        return "javax.faces.Form";
+    }
+
+    public String getRendererType() {
+        return "j2meDemo.renderkit.Form";
+    }
+}
diff --git a/jsf-demo/archive/j2meDemo/src/java/j2meDemo/taglib/GameBoardTag.java b/jsf-demo/archive/j2meDemo/src/java/j2meDemo/taglib/GameBoardTag.java
new file mode 100644
index 0000000..5f605ee
--- /dev/null
+++ b/jsf-demo/archive/j2meDemo/src/java/j2meDemo/taglib/GameBoardTag.java
@@ -0,0 +1,82 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package j2meDemo.taglib;
+
+import javax.faces.application.Application;
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.el.ValueBinding;
+import javax.faces.webapp.UIComponentTag;
+
+public class GameBoardTag extends UIComponentTag {
+    private String value;
+
+    public void setValue(String newValue) {
+        value = newValue;
+    }
+
+    public void setProperties(UIComponent component) {
+        super.setProperties(component);
+
+        if (value != null) {
+            if (isValueReference(value)) {
+                FacesContext context = FacesContext.getCurrentInstance();
+                Application application = context.getApplication();
+                ValueBinding vb = application.createValueBinding(value);
+                component.setValueBinding("value", vb);
+            } else {
+                component.getAttributes().put("value", value);
+            }
+        }
+    }
+
+    public void release() {
+        value = null;
+    }
+
+    public String getRendererType() {
+        return "j2meDemo.renderkit.GameBoard";
+    }
+
+    public String getComponentType() {
+        return "j2meDemo.renderkit.GameBoard";
+    }
+}
diff --git a/jsf-demo/archive/j2meDemo/src/java/j2meDemo/taglib/InputTag.java b/jsf-demo/archive/j2meDemo/src/java/j2meDemo/taglib/InputTag.java
new file mode 100644
index 0000000..18acb32
--- /dev/null
+++ b/jsf-demo/archive/j2meDemo/src/java/j2meDemo/taglib/InputTag.java
@@ -0,0 +1,52 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package j2meDemo.taglib;
+
+
+public class InputTag extends J2meComponentTag {
+    public String getComponentType() {
+        return "javax.faces.Input";
+    }
+
+    public String getRendererType() {
+        return "j2meDemo.renderkit.Text";
+    }
+}
diff --git a/jsf-demo/archive/j2meDemo/src/java/j2meDemo/taglib/J2meComponentTag.java b/jsf-demo/archive/j2meDemo/src/java/j2meDemo/taglib/J2meComponentTag.java
new file mode 100644
index 0000000..189f290
--- /dev/null
+++ b/jsf-demo/archive/j2meDemo/src/java/j2meDemo/taglib/J2meComponentTag.java
@@ -0,0 +1,92 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package j2meDemo.taglib;
+
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.el.MethodBinding;
+import javax.faces.el.ValueBinding;
+import javax.faces.webapp.UIComponentTag;
+
+import j2meDemo.util.Util;
+
+/** Top level tag handler class for other tags. */
+public abstract class J2meComponentTag extends UIComponentTag {
+    private String value;
+    private String action;
+
+    public void setValue(String newValue) {
+        value = newValue;
+    }
+
+    public void setAction(String newValue) {
+        action = newValue;
+    }
+
+    public void setProperties(UIComponent component) {
+        super.setProperties(component);
+
+        if (value != null) {
+            if (isValueReference(value)) {
+                ValueBinding vb = Util.getValueBinding(value);
+                component.setValueBinding("value", vb);
+            } else {
+                component.getAttributes().put("value", value);
+            }
+        }
+
+        if (action != null) {
+            if (isValueReference(action)) {
+                MethodBinding mb = FacesContext.getCurrentInstance().
+                      getApplication().createMethodBinding(action, null);
+                component.getAttributes().put("action", mb);
+            } else {
+                MethodBinding mb = Util.createConstantMethodBinding(action);
+                component.getAttributes().put("action", mb);
+            }
+        }
+    }
+
+    public void release() {
+        value = null;
+        action = null;
+    }
+}
diff --git a/jsf-demo/archive/j2meDemo/src/java/j2meDemo/taglib/OutputTag.java b/jsf-demo/archive/j2meDemo/src/java/j2meDemo/taglib/OutputTag.java
new file mode 100644
index 0000000..3a9a3bf
--- /dev/null
+++ b/jsf-demo/archive/j2meDemo/src/java/j2meDemo/taglib/OutputTag.java
@@ -0,0 +1,52 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package j2meDemo.taglib;
+
+
+public class OutputTag extends J2meComponentTag {
+    public String getComponentType() {
+        return "javax.faces.Output";
+    }
+
+    public String getRendererType() {
+        return "j2meDemo.renderkit.Text";
+    }
+}
diff --git a/jsf-demo/archive/j2meDemo/src/java/j2meDemo/taglib/SelectOneTag.java b/jsf-demo/archive/j2meDemo/src/java/j2meDemo/taglib/SelectOneTag.java
new file mode 100644
index 0000000..82acf91
--- /dev/null
+++ b/jsf-demo/archive/j2meDemo/src/java/j2meDemo/taglib/SelectOneTag.java
@@ -0,0 +1,52 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package j2meDemo.taglib;
+
+
+public class SelectOneTag extends J2meComponentTag {
+    public String getComponentType() {
+        return "javax.faces.SelectOne";
+    }
+
+    public String getRendererType() {
+        return "j2meDemo.renderkit.Choice";
+    }
+}
diff --git a/jsf-demo/archive/j2meDemo/src/java/j2meDemo/util/ConstantMethodBinding.java b/jsf-demo/archive/j2meDemo/src/java/j2meDemo/util/ConstantMethodBinding.java
new file mode 100644
index 0000000..ab92120
--- /dev/null
+++ b/jsf-demo/archive/j2meDemo/src/java/j2meDemo/util/ConstantMethodBinding.java
@@ -0,0 +1,96 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+// BuildComponentFromTagImpl.java
+
+package j2meDemo.util;
+
+import javax.faces.component.StateHolder;
+import javax.faces.context.FacesContext;
+import javax.faces.el.MethodBinding;
+
+public class ConstantMethodBinding extends MethodBinding
+      implements StateHolder {
+
+    private String outcome = null;
+
+
+    public ConstantMethodBinding() {
+    }
+
+
+    public ConstantMethodBinding(String yourOutcome) {
+        outcome = yourOutcome;
+    }
+
+
+    public Object invoke(FacesContext context, Object params[]) {
+        return outcome;
+    }
+
+
+    public Class getType(FacesContext context) {
+        return String.class;
+    }
+
+    // ----------------------------------------------------- StateHolder Methods
+
+    public Object saveState(FacesContext context) {
+        return outcome;
+    }
+
+
+    public void restoreState(FacesContext context, Object state) {
+        outcome = (String) state;
+    }
+
+
+    private boolean transientFlag = false;
+
+
+    public boolean isTransient() {
+        return (this.transientFlag);
+    }
+
+
+    public void setTransient(boolean transientFlag) {
+        this.transientFlag = transientFlag;
+    }
+}
diff --git a/jsf-demo/archive/j2meDemo/src/java/j2meDemo/util/Util.java b/jsf-demo/archive/j2meDemo/src/java/j2meDemo/util/Util.java
new file mode 100644
index 0000000..0226f89
--- /dev/null
+++ b/jsf-demo/archive/j2meDemo/src/java/j2meDemo/util/Util.java
@@ -0,0 +1,404 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+// Util.java
+
+package j2meDemo.util;
+
+import javax.faces.FactoryFinder;
+import javax.faces.application.Application;
+import javax.faces.application.ApplicationFactory;
+import javax.faces.component.UIComponent;
+import javax.faces.component.UISelectItem;
+import javax.faces.component.UISelectItems;
+import javax.faces.context.FacesContext;
+import javax.faces.el.MethodBinding;
+import javax.faces.el.ValueBinding;
+import javax.faces.model.SelectItem;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+
+/**
+ * <B>Util</B> is a class which houses common functionality used by
+ * other classes.
+ *
+ */
+
+public class Util extends Object {
+
+//
+// Protected Constants
+//
+
+//
+// Class Variables
+//
+
+    /**
+     * This array contains attributes that have a boolean value in JSP,
+     * but have have no value in HTML.  For example "disabled" or
+     * "readonly". <P>
+     *
+     * @see renderBooleanPassthruAttributes
+     */
+
+    private static String booleanPassthruAttributes[] = {
+          "disabled",
+          "readonly",
+          "ismap"
+    };
+
+    /**
+     * This array contains attributes whose value is just rendered
+     * straight to the content.  This array should only contain
+     * attributes that require no interpretation by the Renderer.  If an
+     * attribute requires interpretation by a Renderer, it should be
+     * removed from this array.<P>
+     *
+     * @see renderPassthruAttributes
+     */
+    private static String passthruAttributes[] = {
+          "accesskey",
+          "alt",
+          "cols",
+          "height",
+          "lang",
+          "longdesc",
+          "maxlength",
+          "onblur",
+          "onchange",
+          "onclick",
+          "ondblclick",
+          "onfocus",
+          "onkeydown",
+          "onkeypress",
+          "onkeyup",
+          "onload",
+          "onmousedown",
+          "onmousemove",
+          "onmouseout",
+          "onmouseover",
+          "onmouseup",
+          "onreset",
+          "onselect",
+          "onsubmit",
+          "onunload",
+          "rows",
+          "size",
+          "tabindex",
+          //"class",   PENDING(rlubke)  revisit this for JSFA105
+          "title",
+          "style",
+          "width",
+          "dir",
+          "rules",
+          "frame",
+          "border",
+          "cellspacing",
+          "cellpadding",
+          "summary",
+          "bgcolor",
+          "usemap",
+          "enctype",
+          "accept-charset",
+          "accept",
+          "target",
+          "onsubmit",
+          "onreset"
+    };
+
+    private static long id = 0;
+
+//
+// Instance Variables
+//
+
+// Attribute Instance Variables
+
+// Relationship Instance Variables
+
+//
+// Constructors and Initializers    
+//
+
+    private Util() {
+        throw new IllegalStateException();
+    }
+
+//
+// Class methods
+//
+
+    public static Class loadClass(String name) throws ClassNotFoundException {
+        ClassLoader loader =
+              Thread.currentThread().getContextClassLoader();
+        if (loader == null) {
+            return Class.forName(name);
+        } else {
+            return loader.loadClass(name);
+        }
+    }
+
+
+    /**
+     * Generate a new identifier currently used to uniquely identify
+     * components.
+     */
+    public static synchronized String generateId() {
+        if (id == Long.MAX_VALUE) {
+            id = 0;
+        } else {
+            id++;
+        }
+        return Long.toHexString(id);
+    }
+
+
+    /**
+     * Return a Locale instance using the following algorithm: <P>
+     * <p/>
+     * <UL>
+     * <p/>
+     * <LI>
+     * <p/>
+     * If this component instance has an attribute named "bundle",
+     * interpret it as a model reference to a LocalizationContext
+     * instance accessible via FacesContext.getModelValue().
+     * <p/>
+     * </LI>
+     * <p/>
+     * <LI>
+     * <p/>
+     * If FacesContext.getModelValue() returns a LocalizationContext
+     * instance, return its Locale.
+     * <p/>
+     * </LI>
+     * <p/>
+     * <LI>
+     * <p/>
+     * If FacesContext.getModelValue() doesn't return a
+     * LocalizationContext, return the FacesContext's Locale.
+     * <p/>
+     * </LI>
+     * <p/>
+     * </UL>
+     */
+
+    public static Locale
+    getLocaleFromContextOrComponent(FacesContext context,
+                                    UIComponent component) {
+        Locale result = null;
+        String bundleName = null, bundleAttr = "bundle";
+
+        // verify our component has the proper attributes for bundle.
+        if (null !=
+            (bundleName = (String) component.getAttributes().get(bundleAttr))) {
+            // verify there is a Locale for this modelReference
+            javax.servlet.jsp.jstl.fmt.LocalizationContext locCtx = null;
+            if (null != (locCtx =
+                  (javax.servlet.jsp.jstl.fmt.LocalizationContext)
+                        (Util.getValueBinding(bundleName)).getValue(context))) {
+                result = locCtx.getLocale();
+            }
+        }
+        if (null == result) {
+            result = context.getViewRoot().getLocale();
+        }
+
+        return result;
+    }
+
+
+    /**
+     * Render any boolean "passthru" attributes.
+     * <p/>
+     *
+     * @see passthruAttributes
+     */
+
+    public static String renderBooleanPassthruAttributes(FacesContext context,
+                                                         UIComponent component) {
+        int i = 0, len = booleanPassthruAttributes.length;
+        String value;
+        boolean thisIsTheFirstAppend = true;
+        StringBuffer renderedText = new StringBuffer();
+
+        for (i = 0; i < len; i++) {
+            if (null != (value = (String)
+                  component.getAttributes().get(booleanPassthruAttributes[i])))
+            {
+                if (thisIsTheFirstAppend) {
+                    // prepend ' '
+                    renderedText.append(' ');
+                    thisIsTheFirstAppend = false;
+                }
+                if (Boolean.valueOf(value).booleanValue()) {
+                    renderedText.append(booleanPassthruAttributes[i] + ' ');
+                }
+            }
+        }
+
+        return renderedText.toString();
+    }
+
+
+    /**
+     * Render any "passthru" attributes, where we simply just output the
+     * raw name and value of the attribute.  This method is aware of the
+     * set of HTML4 attributes that fall into this bucket.  Examples are
+     * all the javascript attributes, alt, rows, cols, etc.  <P>
+     *
+     * @return the rendererd attributes as specified in the component.
+     *         Padded with leading and trailing ' '.  If there are no passthru
+     *         attributes in the component, return the empty String.
+     *
+     * @see passthruAttributes
+     */
+
+    public static String renderPassthruAttributes(FacesContext context,
+                                                  UIComponent component) {
+        int i = 0, len = passthruAttributes.length;
+        String value;
+        boolean thisIsTheFirstAppend = true;
+        StringBuffer renderedText = new StringBuffer();
+
+        for (i = 0; i < len; i++) {
+            if (null != (value = (String)
+                  component.getAttributes().get(passthruAttributes[i]))) {
+                if (thisIsTheFirstAppend) {
+                    // prepend ' '
+                    renderedText.append(' ');
+                    thisIsTheFirstAppend = false;
+                }
+                renderedText.append(passthruAttributes[i] + "=\"" + value +
+                                    "\" ");
+            }
+        }
+
+        return renderedText.toString();
+    }
+
+
+    public static ValueBinding getValueBinding(String valueRef) {
+        ApplicationFactory af = (ApplicationFactory)
+              FactoryFinder.getFactory(FactoryFinder.APPLICATION_FACTORY);
+        Application a = af.getApplication();
+        return (a.createValueBinding(valueRef));
+    }
+
+
+    public static MethodBinding createConstantMethodBinding(String outcome) {
+        return new ConstantMethodBinding(outcome);
+    }
+
+    public static List getSelectItems(UIComponent component) {
+        ArrayList list = new ArrayList();
+        Iterator children = component.getChildren().iterator();
+        while (children.hasNext()) {
+            UIComponent child = (UIComponent) children.next();
+
+            if (child instanceof UISelectItem) {
+                Object value = ((UISelectItem) child).getValue();
+                if (value == null) {
+                    UISelectItem item = (UISelectItem) child;
+                    list.add(new SelectItem(item.getItemValue(),
+                                            item.getItemLabel(),
+                                            item.getItemDescription(),
+                                            item.isItemDisabled()));
+                } else if (value instanceof SelectItem) {
+                    list.add(value);
+                }
+            } else if (child instanceof UISelectItems) {
+                Object value = ((UISelectItems) child).getValue();
+                if (value instanceof SelectItem) {
+                    list.add(value);
+                } else if (value instanceof SelectItem[]) {
+                    list.addAll(Arrays.asList((SelectItem[]) value));
+                } else if (value instanceof Collection) {
+                    list.addAll((Collection) value);
+                } else if (value instanceof Map) {
+                    Iterator entries = ((Map) value).entrySet().iterator();
+                    while (entries.hasNext()) {
+                        Map.Entry entry = (Map.Entry) entries.next();
+
+                        list.add(new SelectItem(entry.getKey(),
+                                                "" + entry.getValue()));
+                    }
+                }
+            }
+        }
+        return list;
+    }
+
+    public static boolean componentIsDisabledOrReadonly(UIComponent component) {
+        Object disabledOrReadonly = null;
+        boolean result = false;
+        if (null !=
+            (disabledOrReadonly = component.getAttributes().get("disabled"))) {
+            if (disabledOrReadonly instanceof String) {
+                result = ((String) disabledOrReadonly).equalsIgnoreCase("true");
+            } else {
+                result = disabledOrReadonly.equals(Boolean.TRUE);
+            }
+        }
+        if ((result == false) &&
+            null !=
+            (disabledOrReadonly = component.getAttributes().get("readonly"))) {
+            if (disabledOrReadonly instanceof String) {
+                result = ((String) disabledOrReadonly).equalsIgnoreCase("true");
+            } else {
+                result = disabledOrReadonly.equals(Boolean.TRUE);
+            }
+        }
+
+        return result;
+    }
+
+//
+// General Methods
+//
+
+} // end of class Util
diff --git a/jsf-demo/archive/j2meDemo/web/WEB-INF/faces-config.xml b/jsf-demo/archive/j2meDemo/web/WEB-INF/faces-config.xml
new file mode 100644
index 0000000..f10c06e
--- /dev/null
+++ b/jsf-demo/archive/j2meDemo/web/WEB-INF/faces-config.xml
@@ -0,0 +1,150 @@
+<?xml version="1.0"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd"
+    version="1.2">
+
+   <navigation-rule>
+      <from-view-id>/start.jsp</from-view-id>
+      <navigation-case>
+         <from-outcome>start</from-outcome>
+         <to-view-id>/start.jsp</to-view-id>
+      </navigation-case>
+      <navigation-case>
+         <from-outcome>play</from-outcome>
+         <to-view-id>/play.jsp</to-view-id>
+      </navigation-case>
+   </navigation-rule>
+   <navigation-rule>
+      <from-view-id>/play.jsp</from-view-id>
+      <navigation-case>
+         <from-outcome>won</from-outcome>
+         <to-view-id>/won.jsp</to-view-id>
+      </navigation-case>
+      <navigation-case>
+         <from-outcome>lost</from-outcome>
+         <to-view-id>/lost.jsp</to-view-id>
+      </navigation-case>
+      <navigation-case>
+         <from-outcome>draw</from-outcome>
+         <to-view-id>/draw.jsp</to-view-id>
+      </navigation-case>
+   </navigation-rule>
+   <navigation-rule>
+      <from-view-id>/won.jsp</from-view-id>
+      <navigation-case>
+         <from-outcome>start</from-outcome>
+         <to-view-id>/start.jsp</to-view-id>
+      </navigation-case>
+   </navigation-rule>
+   <navigation-rule>
+      <from-view-id>/lost.jsp</from-view-id>
+      <navigation-case>
+         <from-outcome>start</from-outcome>
+         <to-view-id>/start.jsp</to-view-id>
+      </navigation-case>
+   </navigation-rule>
+   <navigation-rule>
+      <from-view-id>/draw.jsp</from-view-id>
+      <navigation-case>
+         <from-outcome>start</from-outcome>
+         <to-view-id>/start.jsp</to-view-id>
+      </navigation-case>
+   </navigation-rule>
+
+   <component>
+      <component-type>j2meDemo.renderkit.GameBoard</component-type>
+      <component-class>javax.faces.component.UIInput</component-class>
+   </component>
+
+   <render-kit>
+      <renderer>
+         <component-family>javax.faces.Command</component-family>
+         <renderer-type>j2meDemo.renderkit.Command</renderer-type>
+         <renderer-class>j2meDemo.renderkit.CommandRenderer</renderer-class>
+      </renderer>
+      <renderer>
+         <component-family>javax.faces.Form</component-family>
+         <renderer-type>j2meDemo.renderkit.Form</renderer-type>
+         <renderer-class>j2meDemo.renderkit.FormRenderer</renderer-class>
+      </renderer>
+      <renderer>
+         <component-family>javax.faces.Input</component-family>
+         <renderer-type>j2meDemo.renderkit.GameBoard</renderer-type>
+         <renderer-class>j2meDemo.renderkit.GameBoardRenderer</renderer-class>
+      </renderer>
+      <renderer>
+         <component-family>javax.faces.Input</component-family>
+         <renderer-type>j2meDemo.renderkit.Text</renderer-type>
+         <renderer-class>j2meDemo.renderkit.TextRenderer</renderer-class>
+      </renderer>
+      <renderer>
+         <component-family>javax.faces.Output</component-family>
+         <renderer-type>j2meDemo.renderkit.Text</renderer-type>
+         <renderer-class>j2meDemo.renderkit.TextRenderer</renderer-class>
+      </renderer>
+      <renderer>
+         <component-family>javax.faces.SelectOne</component-family>
+         <renderer-type>j2meDemo.renderkit.Choice</renderer-type>
+         <renderer-class>j2meDemo.renderkit.ChoiceRenderer</renderer-class>
+      </renderer>
+   </render-kit>
+   
+   <managed-bean> 
+      <managed-bean-name>game</managed-bean-name>
+      <managed-bean-class>j2meDemo.model.Game</managed-bean-class> 
+      <managed-bean-scope>session</managed-bean-scope> 
+   </managed-bean>
+   <managed-bean> 
+      <managed-bean-name>setupform</managed-bean-name>
+      <managed-bean-class>j2meDemo.model.SetupForm</managed-bean-class> 
+      <managed-bean-scope>session</managed-bean-scope> 
+      <managed-property>
+         <property-name>gameBoard</property-name>
+         <value>#{game.board}</value>
+      </managed-property>
+   </managed-bean>
+
+</faces-config>
diff --git a/jsf-demo/archive/j2meDemo/web/WEB-INF/tlds/j2meDemo.tld b/jsf-demo/archive/j2meDemo/web/WEB-INF/tlds/j2meDemo.tld
new file mode 100644
index 0000000..3e6c82e
--- /dev/null
+++ b/jsf-demo/archive/j2meDemo/web/WEB-INF/tlds/j2meDemo.tld
@@ -0,0 +1,126 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE taglib
+  PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
+  "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
+<taglib>
+   <tlib-version>0.03</tlib-version>
+   <jsp-version>1.2</jsp-version>
+   <short-name>j2medemo</short-name>
+   <uri>j2meDemotaglibrary_1.1</uri>
+   <description>
+      This tag library contains tags for the faces/j2me demo.
+   </description>   
+   <tag>
+      <name>form</name>
+      <tag-class>j2meDemo.taglib.FormTag</tag-class>
+      <attribute> 
+         <name>id</name>
+      </attribute>
+   </tag>
+   <tag>
+      <name>input</name>
+      <tag-class>j2meDemo.taglib.InputTag</tag-class>
+      <attribute> 
+         <name>id</name>
+      </attribute>
+      <attribute> 
+         <name>value</name> 
+      </attribute> 
+      <attribute> 
+         <name>validator</name> 
+      </attribute> 
+   </tag>
+   <tag>
+      <name>output</name>
+      <tag-class>j2meDemo.taglib.OutputTag</tag-class>
+      <attribute> 
+         <name>id</name>
+      </attribute>
+      <attribute> 
+         <name>value</name> 
+      </attribute> 
+   </tag>
+   <tag>
+      <name>selectOne</name>
+      <tag-class>j2meDemo.taglib.SelectOneTag</tag-class>
+      <attribute> 
+         <name>id</name>
+      </attribute>
+      <attribute> 
+         <name>binding</name>
+      </attribute>
+      <attribute> 
+         <name>value</name> 
+      </attribute> 
+   </tag>
+   <tag>
+      <name>command</name>
+      <tag-class>j2meDemo.taglib.CommandTag</tag-class>
+      <attribute> 
+         <name>id</name>
+      </attribute>
+      <attribute> 
+         <name>action</name> 
+      </attribute> 
+   </tag>
+
+   <tag>
+      <name>board</name>
+      <tag-class>j2meDemo.taglib.GameBoardTag</tag-class>
+      <attribute>
+         <name>id</name>
+      </attribute>
+      <attribute>
+         <name>value</name>
+      </attribute>
+      <attribute>
+         <name>own</name>
+      </attribute>
+      <attribute>
+         <name>validator</name>
+      </attribute>
+   </tag>
+
+</taglib>
diff --git a/jsf-demo/archive/j2meDemo/web/WEB-INF/web.xml b/jsf-demo/archive/j2meDemo/web/WEB-INF/web.xml
new file mode 100755
index 0000000..2002b20
--- /dev/null
+++ b/jsf-demo/archive/j2meDemo/web/WEB-INF/web.xml
@@ -0,0 +1,70 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<web-app version="2.5"
+         xmlns="http://java.sun.com/xml/ns/javaee"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" >
+
+   <context-param>
+      <param-name>javax.faces.CONFIG_FILES</param-name>
+      <param-value>
+         /WEB-INF/faces-config.xml
+      </param-value>
+   </context-param>
+
+    <!-- Faces Servlet -->
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+
+
+    <!-- Faces Servlet Mapping -->
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>*.faces</url-pattern>
+    </servlet-mapping>
+
+</web-app>
diff --git a/jsf-demo/archive/j2meDemo/web/draw.jsp b/jsf-demo/archive/j2meDemo/web/draw.jsp
new file mode 100644
index 0000000..62efe26
--- /dev/null
+++ b/jsf-demo/archive/j2meDemo/web/draw.jsp
@@ -0,0 +1,53 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+<%@ taglib uri="/WEB-INF/j2meDemo.tld" prefix="j2medemo" %>
+<f:view>
+   <f:loadBundle basename="j2meDemo.messages" var="msgs"/>
+   <j2medemo:form id="draw">
+      <j2medemo:output id="result" value="#{msgs.draw}"/>   
+      <j2medemo:command id="newgame" action="#{game.initialize}"/>
+   </j2medemo:form>
+</f:view>
diff --git a/jsf-demo/archive/j2meDemo/web/lost.jsp b/jsf-demo/archive/j2meDemo/web/lost.jsp
new file mode 100644
index 0000000..7b6db87
--- /dev/null
+++ b/jsf-demo/archive/j2meDemo/web/lost.jsp
@@ -0,0 +1,53 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+<%@ taglib uri="/WEB-INF/j2meDemo.tld" prefix="j2medemo" %>
+<f:view>
+   <f:loadBundle basename="j2meDemo.messages" var="msgs"/>
+   <j2medemo:form id="lost">
+      <j2medemo:output id="result" value="#{msgs.lost}"/>   
+      <j2medemo:command id="newgame" action="#{game.initialize}"/>
+   </j2medemo:form>
+</f:view>
diff --git a/jsf-demo/archive/j2meDemo/web/play.jsp b/jsf-demo/archive/j2meDemo/web/play.jsp
new file mode 100644
index 0000000..c147260
--- /dev/null
+++ b/jsf-demo/archive/j2meDemo/web/play.jsp
@@ -0,0 +1,52 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+<%@ taglib uri="/WEB-INF/j2meDemo.tld" prefix="j2medemo" %>
+<f:view>
+   <j2medemo:form id="play">
+      <j2medemo:board id="board" value="#{game.board}" />
+      <j2medemo:command id="submit" action="#{setupform.play}"/>
+   </j2medemo:form>
+</f:view>
diff --git a/jsf-demo/archive/j2meDemo/web/start.jsp b/jsf-demo/archive/j2meDemo/web/start.jsp
new file mode 100644
index 0000000..132ecb3
--- /dev/null
+++ b/jsf-demo/archive/j2meDemo/web/start.jsp
@@ -0,0 +1,57 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+<%@ taglib uri="/WEB-INF/j2meDemo.tld" prefix="j2medemo" %>
+<f:view>
+   <j2medemo:form id="start">
+      <j2medemo:board id="board" value="#{game.board}" />
+      <j2medemo:selectOne id="boardsize"
+            binding="#{setupform.boardSize}"
+            value="#{setupform.size}">
+         <f:selectItems value="#{game.board.boardSizes}"/>
+      </j2medemo:selectOne>
+      <j2medemo:command id="submit" action="#{setupform.submit}"/>
+   </j2medemo:form>
+</f:view>
diff --git a/jsf-demo/archive/j2meDemo/web/stylesheet.css b/jsf-demo/archive/j2meDemo/web/stylesheet.css
new file mode 100644
index 0000000..b31d211
--- /dev/null
+++ b/jsf-demo/archive/j2meDemo/web/stylesheet.css
@@ -0,0 +1,71 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+.list-background {
+  background-color: #8AA9D3;
+  border: 5px;
+  border-collapse: collapse;
+  font-family: sans-serif;
+  font-size: 14pt;
+  padding: 10px;
+  width: 90%;
+}
+
+.list-column-center {
+  text-align: center;
+  width: 15%;
+}
+
+.list-header {
+  background-color: #DA825B;
+  color: #FFFFFF;
+  font-weight: bold;
+  text-align: center;
+}
+
+.inputList-background {
+  background-color: #8AA9D3;
+  border: 1px;
+  border-collapse: collapse;
+  font-family: sans-serif;
+  font-size: 8pt;
+  padding: 15px;
+  width: 40%;
+}
diff --git a/jsf-demo/archive/j2meDemo/web/won.jsp b/jsf-demo/archive/j2meDemo/web/won.jsp
new file mode 100644
index 0000000..26ddb0b
--- /dev/null
+++ b/jsf-demo/archive/j2meDemo/web/won.jsp
@@ -0,0 +1,53 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+<%@ taglib uri="/WEB-INF/j2meDemo.tld" prefix="j2medemo" %>
+<f:view>
+   <f:loadBundle basename="j2meDemo.messages" var="msgs"/>
+   <j2medemo:form id="won">
+      <j2medemo:output id="result" value="#{msgs.won}"/>   
+      <j2medemo:command id="newgame" action="#{game.initialize}"/>
+   </j2medemo:form>
+</f:view>
diff --git a/jsf-demo/archive/mojarra_ext/build.xml b/jsf-demo/archive/mojarra_ext/build.xml
new file mode 100644
index 0000000..71a83ff
--- /dev/null
+++ b/jsf-demo/archive/mojarra_ext/build.xml
@@ -0,0 +1,124 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project name="mojarra_ext" default="build" basedir=".">
+   
+
+    <property file="${user.home}/build.properties"/> 
+    <property file="../../../build.properties"/>
+    <import file="${jsf.build.home}/common/ant/common.xml"/>
+    
+    <!-- Configure the context path for this application -->
+    <property name="context.path" value="/mojarra_ext"/>
+    <property name="example" value="mojarra_ext"/>
+    <property name="build" value="${basedir}/build"/>   
+
+    <!-- Location dependent jars -->
+    <property name="jsf-demo.lib" value="../lib"/>
+
+
+    <path id="classpath">       
+        <pathelement location="${javax.faces-api.jar}"/>
+        <pathelement location="${javax.faces.jar}"/>       
+        <pathelement location="${build}/WEB-INF/classes"/>
+        <pathelement location="${jsf-demo.lib}/ui.jar"/>
+        <path refid="compile.classpath"/>
+    </path>
+    
+    <target name="init">
+        <tstamp/>
+    </target>
+
+    <target name="clean">
+        <delete dir="${build}"/>
+        <delete dir="${context.path}"/>
+    </target>    
+
+    <target name="prepare" depends="init"
+            description="Create build directories.">
+        <mkdir dir="${build}/${example}/"/>
+        <mkdir dir="${build}/${example}/WEB-INF"/>
+        <mkdir dir="${build}/${example}/WEB-INF/classes"/>
+        <mkdir dir="${build}/${example}/WEB-INF/lib"/>
+    </target>       
+
+    <target name="build" depends="prepare"
+            description="Compile Java files and copy static files.">
+         <jsf.javac srcdir="src"
+                   destdir="${build}/${example}/WEB-INF/classes">
+            <classpath>
+                <path refid="classpath"/>
+            </classpath>
+        </jsf.javac>
+        <copy todir="${build}/${example}/WEB-INF">
+            <fileset dir="web/WEB-INF">
+                <include name="*.xml"/>
+            </fileset>
+        </copy>
+
+        <copy todir="${build}/${example}/">
+            <fileset dir="web">
+                <include name="*.html"/>
+                <include name="*.gif"/>
+                <include name="*.jpg"/>
+                <include name="*.jsp"/>
+                <include name="*.xhtml"/>
+                <include name="*.xml"/>
+            </fileset>
+        </copy>
+        <copy todir="${build}/${example}/WEB-INF/classes/mojarra_ext">
+            <fileset dir="web">
+                <include name="*properties"/>
+            </fileset>
+        </copy>
+        
+        <jsf.war basedir="${build}"
+                 archive-name="${example}"
+                 webxml="${build}/${example}/WEB-INF/web.xml">
+            <archive-elements>
+                <zipfileset dir="${build}/${example}"/>
+            </archive-elements>
+        </jsf.war>
+    </target>
+
+</project>
+
diff --git a/jsf-demo/archive/mojarra_ext/src/java/mojarra_ext/BackingBean.java b/jsf-demo/archive/mojarra_ext/src/java/mojarra_ext/BackingBean.java
new file mode 100644
index 0000000..4be885b
--- /dev/null
+++ b/jsf-demo/archive/mojarra_ext/src/java/mojarra_ext/BackingBean.java
@@ -0,0 +1,59 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package mojarra_ext;
+
+/**
+ * A simple state-saving backing bean - just saves a simple string
+ * @author driscoll
+ */
+public class BackingBean {
+
+    private String sample;
+
+    public String getSample() {
+        return sample;
+    }
+
+    public void setSample(String sample) {
+        this.sample = sample;
+    }
+
+}
diff --git a/jsf-demo/archive/mojarra_ext/web/WEB-INF/faces-config.xml b/jsf-demo/archive/mojarra_ext/web/WEB-INF/faces-config.xml
new file mode 100644
index 0000000..5a814d8
--- /dev/null
+++ b/jsf-demo/archive/mojarra_ext/web/WEB-INF/faces-config.xml
@@ -0,0 +1,82 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!-- =========== FULL CONFIGURATION FILE ================================== -->
+<faces-config version="2.0"
+    xmlns="http://java.sun.com/xml/ns/javaee" 
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd">
+    <navigation-rule>
+        <from-view-id>/welcome.jsp</from-view-id>
+        <navigation-case>
+            <from-outcome>landing</from-outcome>
+            <to-view-id>/landing.jsp</to-view-id>
+        </navigation-case>
+    </navigation-rule>
+    <navigation-rule>
+        <from-view-id>/landing.jsp</from-view-id>
+        <navigation-case>
+            <from-outcome>back</from-outcome>
+            <to-view-id>/welcome.jsp</to-view-id>
+        </navigation-case>
+    </navigation-rule>
+    <navigation-rule>
+        <from-view-id>/welcome.xhtml</from-view-id>
+        <navigation-case>
+            <from-outcome>landing</from-outcome>
+            <to-view-id>/landing.xhtml</to-view-id>
+        </navigation-case>
+    </navigation-rule>
+    <navigation-rule>
+        <from-view-id>/landing.xhtml</from-view-id>
+        <navigation-case>
+            <from-outcome>back</from-outcome>
+            <to-view-id>/welcome.xhtml</to-view-id>
+        </navigation-case>
+    </navigation-rule>
+    <managed-bean>
+        <managed-bean-name>BackingBean</managed-bean-name>
+        <managed-bean-class>mojarra_ext.BackingBean</managed-bean-class>
+        <managed-bean-scope>session</managed-bean-scope>
+    </managed-bean>
+</faces-config>
diff --git a/jsf-demo/archive/mojarra_ext/web/WEB-INF/web.xml b/jsf-demo/archive/mojarra_ext/web/WEB-INF/web.xml
new file mode 100644
index 0000000..eda77c2
--- /dev/null
+++ b/jsf-demo/archive/mojarra_ext/web/WEB-INF/web.xml
@@ -0,0 +1,77 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<web-app version="2.5"
+         xmlns="http://java.sun.com/xml/ns/javaee"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" >
+    
+    <display-name>Mojarra Extensions Demo Sample Application</display-name>
+    <description>
+        Mojarra Extensions Demo Sample Application
+    </description>
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>server</param-value>
+    </context-param>
+
+
+    <!-- Faces Servlet -->
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup> 1 </load-on-startup>
+    </servlet>
+
+
+    <!-- Faces Servlet Mapping -->
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    
+        <welcome-file-list>
+        <welcome-file>faces/welcome.jsp</welcome-file>
+        </welcome-file-list>
+
+</web-app>
diff --git a/jsf-demo/archive/mojarra_ext/web/landing.jsp b/jsf-demo/archive/mojarra_ext/web/landing.jsp
new file mode 100644
index 0000000..e469d27
--- /dev/null
+++ b/jsf-demo/archive/mojarra_ext/web/landing.jsp
@@ -0,0 +1,78 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+
+<%@page contentType="text/html"%>
+<%@page pageEncoding="UTF-8"%>
+<%@taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
+<%@taglib prefix="h" uri="http://java.sun.com/jsf/html"%>
+<%@taglib prefix="mj" uri="http://mojarra.dev.java.net/mojarra_ext"%>
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+"http://www.w3.org/TR/html4/loose.dtd">
+
+<html>
+    <head>
+        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+        <title>Credit Card Demo</title>
+    </head>
+    <body>
+        <f:view>
+            <h:form id="credit_card_form">
+                <h2><h:outputText value="Credit Card Demo"/></h2>
+                <p>Enter a valid credit card number</p>
+                <p>Hint: 4111 1111 1111 1111 is a valid number</p>
+                <h:inputText id="sampleCreditCard" value="#{BackingBean.sample}" required="true" >
+                    <mj:creditcardValidator />
+                </h:inputText>
+                <h:message id="creditcardError" for="sampleCreditCard"/>
+                <br/>
+                <h:commandButton id="submit" action="back" value="Back" />
+                <mj:focus for="credit_card_form:sampleCreditCard"/>
+            </h:form>
+        </f:view>
+        
+        
+    </body>
+</html>
diff --git a/jsf-demo/archive/mojarra_ext/web/landing.xhtml b/jsf-demo/archive/mojarra_ext/web/landing.xhtml
new file mode 100644
index 0000000..e91251a
--- /dev/null
+++ b/jsf-demo/archive/mojarra_ext/web/landing.xhtml
@@ -0,0 +1,75 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:mj="http://mojarra.dev.java.net/mojarra_ext"
+      xml:lang="en" lang="en">
+    <head>
+        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+        <title>Credit Card Demo</title>
+    </head>
+    <body>
+        <f:view>
+            <h:form id="credit_card_form">
+                <h2><h:outputText value="Credit Card Demo"/></h2>
+                <p>Enter a valid credit card number</p>
+                <p>Hint: 4111 1111 1111 1111 is a valid number</p>
+                <h:inputText id="sampleCreditCard" value="#{BackingBean.sample}" required="true" >
+                    <mj:creditcardValidator />
+                </h:inputText>
+                <h:message id="creditcardError" for="sampleCreditCard"/>
+                <br/>
+                <h:commandButton id="submit" action="back" value="Back" />
+                <mj:focus for="credit_card_form:sampleCreditCard"/>
+            </h:form>
+        </f:view>
+        
+        
+    </body>
+</html>
diff --git a/jsf-demo/archive/mojarra_ext/web/welcome.jsp b/jsf-demo/archive/mojarra_ext/web/welcome.jsp
new file mode 100644
index 0000000..5373d82
--- /dev/null
+++ b/jsf-demo/archive/mojarra_ext/web/welcome.jsp
@@ -0,0 +1,76 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+
+<%@page contentType="text/html"%>
+<%@page pageEncoding="UTF-8"%>
+
+<%@taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
+<%@taglib prefix="h" uri="http://java.sun.com/jsf/html"%>
+<%@taglib prefix="mj" uri="http://mojarra.dev.java.net/mojarra_ext"%>
+
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+"http://www.w3.org/TR/html4/loose.dtd">
+
+<html>
+    <head>
+        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+        <title>Test Regex Validator</title>
+    </head>
+    <body>
+        <f:view>
+            <h:form id="regex_form">
+                <h1><h:outputText value="Test Regex Validator" /></h1>
+                <p>Enter Any word starting with t</p>
+                <h:inputText id="sampleRegex" value="#{BackingBean.sample}" required="true" >
+                    <mj:regexValidator pattern="t.*" />
+                </h:inputText>
+                <h:message id="regexError" for="sampleRegex" showDetail="true" showSummary="false"/><br/>
+                <h:commandButton id="submit" action="landing" value="Go" />
+                <mj:focus for="regex_form:sampleRegex"/>
+            </h:form>
+        </f:view>
+    </body>
+</html>
diff --git a/jsf-demo/archive/mojarra_ext/web/welcome.xhtml b/jsf-demo/archive/mojarra_ext/web/welcome.xhtml
new file mode 100644
index 0000000..44bf0f1
--- /dev/null
+++ b/jsf-demo/archive/mojarra_ext/web/welcome.xhtml
@@ -0,0 +1,71 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:mj="http://mojarra.dev.java.net/mojarra_ext"
+      xml:lang="en" lang="en">
+    <head>
+        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+        <title>Test Regex Validator</title>
+    </head>
+    <body>
+        <f:view>
+            <h:form id="regex_form">
+                <h1><h:outputText value="Test Regex Validator" /></h1>
+                <p>Enter Any word starting with t</p>
+                <h:inputText id="sampleRegex" value="#{BackingBean.sample}" required="true" >
+                    <mj:regexValidator pattern="t.*" />
+                </h:inputText>
+                <h:message id="regexError" for="sampleRegex" showDetail="true" showSummary="false"/><br/>
+                <h:commandButton id="submit" action="landing" value="Go" />
+                <mj:focus for="regex_form:sampleRegex"/>
+            </h:form>
+        </f:view>
+    </body>
+</html>
diff --git a/jsf-demo/archive/nonjsp/build.xml b/jsf-demo/archive/nonjsp/build.xml
new file mode 100644
index 0000000..37bddac
--- /dev/null
+++ b/jsf-demo/archive/nonjsp/build.xml
@@ -0,0 +1,133 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project name="nonjsp" default="build" basedir=".">
+
+
+    <property file="${user.home}/build.properties"/>
+    <property file="../../../build.properties"/>
+    <import file="${jsf.build.home}/common/ant/common.xml"/>
+
+    <!-- Configure the context path for this application -->
+    <property name="context.path" value="/jsf-nonjsp"/>
+    <property name="example" value="jsf-nonjsp"/>
+    <property name="build" value="${basedir}/build"/>  
+
+    <path id="classpath">       
+        <pathelement location="${javax.faces-api.jar}"/>
+        <pathelement location="${javax.faces.jar}"/>       
+        <pathelement location="${build}/WEB-INF/classes"/>
+        <path refid="compile.classpath"/>
+    </path>
+    
+    <target name="init" depends="check.changes">
+        <tstamp/>
+    </target>
+
+    <target name="check.changes">
+        <uptodate property="skip.build"
+                  targetfile="${build}/last-build">
+            <srcfiles dir="${basedir}">
+                <include name="src/**/*.*"/>
+                <include name="conf/**/*.*"/>
+                <include name="web/**/*.*"/>
+            </srcfiles>
+        </uptodate>
+    </target>
+
+    <target name="clean">
+        <delete dir="${build}"/>
+        <delete dir="${context.path}"/>
+    </target>    
+
+   <target name="prepare" depends="init"
+            description="Create build directories.">
+        <mkdir dir="${build}/${example}"/>
+        <mkdir dir="${build}/${example}/WEB-INF"/>
+        <mkdir dir="${build}/${example}/WEB-INF/classes"/>
+        <mkdir dir="${build}/${example}/WEB-INF/lib"/>
+    </target>
+
+
+    <target name="build" unless="skip.build" depends="prepare"
+            description="Compile Java files and copy static files.">
+        <touch file="${build}/last-build"/>
+        <jsf.javac srcdir="src"
+                   destdir="${build}/${example}/WEB-INF/classes">
+            <classpath>
+                <path refid="classpath"/>
+            </classpath>
+        </jsf.javac>
+        <copy todir="${build}/${example}/WEB-INF">
+            <fileset dir="web/WEB-INF">
+                <include name="*.xml"/>
+            </fileset>
+        </copy>
+
+        <copy todir="${build}/${example}/">
+            <fileset dir="web">
+                <include name="*.html"/>
+                <include name="*.gif"/>
+                <include name="*.jpg"/>
+                <include name="*.jsp"/>
+                <include name="*.xml"/>
+            </fileset>
+        </copy>
+        <copy todir="${build}/${example}/WEB-INF/classes/${example}">
+            <fileset dir="web">
+                <include name="*properties"/>
+            </fileset>
+        </copy>
+
+        <jsf.war basedir="${build}"
+                 archive-name="${example}"
+                 webxml="${build}/${example}/WEB-INF/web.xml">
+            <archive-elements>
+                <zipfileset dir="${build}/${example}"/>
+            </archive-elements>
+        </jsf.war>
+    </target>
+
+</project> 
+ 
+
+
diff --git a/jsf-demo/archive/nonjsp/src/java/nonjsp/application/BuildComponentFromTag.java b/jsf-demo/archive/nonjsp/src/java/nonjsp/application/BuildComponentFromTag.java
new file mode 100644
index 0000000..76c4002
--- /dev/null
+++ b/jsf-demo/archive/nonjsp/src/java/nonjsp/application/BuildComponentFromTag.java
@@ -0,0 +1,85 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+// BuildComponentFromTag.java
+
+package nonjsp.application;
+
+import javax.faces.component.UIComponent;
+
+import org.xml.sax.Attributes;
+
+/**
+ * An instance of this class knows how to build a UIComponent instance
+ * from a JSP tag.  This allows locating this knowledge near the tag
+ * handlers.  <P>
+ * <p/>
+ * The implementation must be modified if the tags change. <P>
+ * <p/>
+ * Copy of com.sun.faces.tree.BuildComponentFromTag in order to remove
+ * demo dependancy on RI.
+ * <p/>
+ * <B>Lifetime And Scope</B> <P>
+ * <p/>
+ * Has the same scope as the ViewEngine instance.  The ViewEngine has a
+ * BuildComponentFromTag instance. <P>
+ *
+ */
+
+public interface BuildComponentFromTag {
+
+    public UIComponent createComponentForTag(String shortTagName);
+
+
+    public boolean tagHasComponent(String shortTagName);
+
+
+    public boolean isNestedComponentTag(String shortTagName);
+
+
+    public void handleNestedComponentTag(UIComponent parent,
+                                         String shortTagName, Attributes attrs);
+
+
+    public void applyAttributesToComponentInstance(UIComponent child,
+                                                   Attributes attrs);
+
+} // end of interface BuildComponentFromTag
+
diff --git a/jsf-demo/archive/nonjsp/src/java/nonjsp/application/BuildComponentFromTagImpl.java b/jsf-demo/archive/nonjsp/src/java/nonjsp/application/BuildComponentFromTagImpl.java
new file mode 100644
index 0000000..b41608b
--- /dev/null
+++ b/jsf-demo/archive/nonjsp/src/java/nonjsp/application/BuildComponentFromTagImpl.java
@@ -0,0 +1,448 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+// BuildComponentFromTagImpl.java
+
+package nonjsp.application;
+
+import javax.faces.component.UICommand;
+import javax.faces.component.UIComponent;
+import javax.faces.component.UISelectOne;
+import javax.faces.el.MethodBinding;
+
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.util.Hashtable;
+
+import org.apache.commons.beanutils.PropertyUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.xml.sax.Attributes;
+
+import nonjsp.util.Util;
+
+/**
+ * <B>BuildComponentFromTagImpl</B> is a class ...
+ * <p/>
+ * Copy of com.sun.faces.tree.BuildComponentFromTagImpl in order to remove
+ * demo dependancy on RI.
+ *
+ */
+
+public class BuildComponentFromTagImpl extends Object
+      implements BuildComponentFromTag {
+
+    //
+    // Protected Constants
+    //
+
+    protected static String PARENT = "faces.parent:";
+
+    protected static String PARENT_SELECTONE = PARENT +
+                                               "javax.faces.UISelectOne";
+
+    /**
+     * stores model value of the form temporarily to support implicit mapping
+     * of components to properties in the bean.
+     */
+    protected static String FORM_MODELREF = "faces.FORM_MODELREF";
+
+    protected static Log log = LogFactory.getLog(
+          BuildComponentFromTagImpl.class);
+
+    //
+    // Class Variables
+    //
+
+    //
+    // Instance Variables
+    //
+
+    // Attribute Instance Variables
+
+    // Relationship Instance Variables
+
+    /** Store the mapping between shortTagName and component class */
+
+    protected Hashtable classMap;
+
+    //
+    // Constructors and Initializers    
+    //
+
+    public BuildComponentFromTagImpl() {
+        super();
+        initializeClassMap();
+    }
+
+    //
+    // Class methods
+    //
+
+    //
+    // General Methods
+    //
+
+    /** This is a total RAD hack. */
+
+    private void initializeClassMap() {
+        classMap = new Hashtable(30);
+        // PENDING(edburns): read this from a persistent store
+        classMap.put("Form", "javax.faces.component.UIForm");
+        classMap.put("Command_Button", "javax.faces.component.UICommand");
+        classMap.put("Command_Link", "javax.faces.component.UICommand");
+        classMap.put("SelectBoolean_Checkbox",
+                     "javax.faces.component.UISelectBoolean");
+        classMap.put("RadioGroup", "javax.faces.component.UISelectOne");
+        classMap.put("SelectOne_Radio", PARENT_SELECTONE);
+        classMap.put("SelectOne_Listbox", "javax.faces.component.UISelectOne");
+        classMap.put("SelectOne_Option", PARENT_SELECTONE);
+        classMap.put("Output_Text", "javax.faces.component.UIOutput");
+        classMap.put("TextEntry_Input", "javax.faces.component.UIInput");
+        classMap.put("TextEntry_Secret", "javax.faces.component.UIInput");
+        classMap.put("TextEntry_TextArea", "javax.faces.component.UIInput");
+        classMap.put("Errors", "javax.faces.component.UIOutput");
+    }
+
+
+    protected boolean isSupportedTag(String shortTagName) {
+        return (null != classMap.get(shortTagName));
+    }
+
+
+    /**
+     * @return the property name in the UIComponent class that corresponds to
+     *         the attrName.
+     */
+    private String mapAttrNameToPropertyName(String attrName) {
+        if (null == attrName) {
+            return attrName;
+        }
+
+        if (attrName.equals("converter")) {
+            attrName = "converterReference";
+        }
+
+        if (attrName.equals("selectedValueModel")) {
+            attrName = "selectedModelReference";
+        }
+        return attrName;
+    }
+
+
+    /**
+     * @return the property name in the UIComponent class that corresponds to
+     *         the attrName.
+     */
+    private boolean attrRequiresSpecialTreatment(String attrName) {
+        boolean result = false;
+
+        if (null == attrName) {
+            return result;
+        }
+
+        if (attrName.equals("valueChangeListener") ||
+            attrName.equals("actionListener") ||
+            attrName.equals("action") ||
+            attrName.equals("required") ||
+            attrName.equals("format") ||
+            attrName.equals("rangeMaximum") ||
+            attrName.equals("lengthMaximum") ||
+            attrName.equals("value")) {
+            result = true;
+        }
+        return result;
+    }
+
+
+    private void handleSpecialAttr(UIComponent child, String attrName,
+                                   String attrValue)
+          throws IllegalAccessException,
+          IllegalArgumentException,
+          InvocationTargetException,
+          NoSuchMethodException {
+
+        Class[] stringArg = {String.class};
+        Method attrMethod = null;
+        Object objValue = attrValue;
+
+        if (attrName.equals("valueChangeListener")) {
+            try {
+                attrMethod =
+                      child.getClass().getMethod("addValueChangeListener",
+                                                 stringArg);
+            } catch (SecurityException e) {
+                log.trace("handleSpecialAttr: " + e);
+            }
+        } else if (attrName.equals("actionListener")) {
+            try {
+                attrMethod =
+                      child.getClass()
+                            .getMethod("addActionListener", stringArg);
+            } catch (SecurityException e) {
+                log.trace("handleSpecialAttr: " + e);
+            }
+        } else if (attrName.equals("action")) {
+            try {
+                Class[] mbArgs = {MethodBinding.class};
+                attrMethod = child.getClass().getMethod("setAction",
+                                                        mbArgs);
+                objValue = new ConstantMethodBinding(attrValue);
+            } catch (SecurityException e) {
+                log.trace("handleSpecialAttr: " + e);
+            }
+        } else if ((child instanceof UICommand) && attrName.equals("value")) {
+            ((UICommand) child).setValue(attrValue);
+            return;
+        }
+
+        Object[] args = {objValue};
+        if (null != attrMethod) {
+            attrMethod.invoke(child, args);
+        }
+    }
+
+    // 
+    // Methods from BuildComponentFromTag
+    //
+
+
+    public UIComponent createComponentForTag(String shortTagName) {
+        UIComponent result = null;
+        if (!tagHasComponent(shortTagName)) {
+            return result;
+        }
+
+        String className = (String) classMap.get(shortTagName);
+        Class componentClass;
+
+        // PENDING(edburns): this can be way optimized
+        try {
+            componentClass = Util.loadClass(className);
+            result = (UIComponent) componentClass.newInstance();
+        } catch (IllegalAccessException iae) {
+            throw new RuntimeException("Can't create instance for " +
+                                       className + ": " + iae.getMessage());
+        } catch (InstantiationException ie) {
+            throw new RuntimeException("Can't create instance for " +
+                                       className + ": " + ie.getMessage());
+        } catch (ClassNotFoundException e) {
+            throw new RuntimeException("Can't find class for " +
+                                       className + ": " + e.getMessage());
+        }
+
+        return result;
+    }
+
+
+    public boolean tagHasComponent(String shortTagName) {
+        boolean result = false;
+        String value;
+
+        // Return true if the classMap has an entry for shortTagName, and
+        // the entry does not start with the string PARENT.
+
+        if (null != (value = (String) classMap.get(shortTagName))) {
+            result = 0 != value.indexOf(PARENT);
+        }
+        return result;
+    }
+
+
+    public boolean isNestedComponentTag(String shortTagName) {
+        boolean result = false;
+        String value;
+
+        // Return true if the classMap has an entry for shortTagName, and
+        // the entry DOES start with the string PARENT.
+
+        if (null != (value = (String) classMap.get(shortTagName))) {
+            result = 0 == value.indexOf(PARENT);
+        }
+        return result;
+    }
+
+
+    public void handleNestedComponentTag(UIComponent parent,
+                                         String shortTagName,
+                                         Attributes attrs) {
+
+        if (null == parent || null == shortTagName || null == attrs) {
+            return;
+        }
+        String val = (String) classMap.get(shortTagName);
+        if (null == val || (0 != val.indexOf(PARENT))) {
+            return;
+        }
+
+        // At this point, we know that we are in a nested tag.
+
+        // PENDING(edburns): check that parent is really the correct parent
+        // for this shortTagName, for now, it's just UISelectOne
+
+        UISelectOne uiSelectOne = (UISelectOne) parent;
+
+        int attrLen, i = 0;
+        String attrName, attrValue;
+        String itemLabel = null, itemValue = null, itemDesc = null;
+        boolean checked = false;
+
+        attrLen = attrs.getLength();
+        for (i = 0; i < attrLen; i++) {
+            attrName = mapAttrNameToPropertyName(attrs.getLocalName(i));
+            attrValue = attrs.getValue(i);
+
+            if (attrName.equals("value")) {
+                itemValue = attrValue;
+            }
+            if (attrName.equals("label")) {
+                itemLabel = attrValue;
+            }
+            if (attrName.equals("description")) {
+                itemDesc = attrValue;
+            }
+            if ((attrName.equals("checked") || attrName.equals("selected")) &&
+                attrValue.equals("true")) {
+                checked = true;
+            }
+        }
+
+        /********** PENDING(edburns): Fix this for non-jsp example
+         SelectItem [] oldItems = (SelectItem []) uiSelectOne.getItems();
+         SelectItem [] newItems = null;
+
+         if (null != oldItems) {
+         newItems = new SelectItem[oldItems.length + 1];
+         System.arraycopy(oldItems, 0, newItems, 0, oldItems.length);
+         newItems[oldItems.length] = new SelectItem(itemValue, itemLabel,
+         itemDesc);
+         }
+         else {
+         newItems = new SelectItem[1];
+         newItems[0] = new SelectItem(itemValue, itemLabel, itemDesc);
+         }
+
+         uiSelectOne.setItems(newItems);
+         // if it is checked, make sure the model knows about it.
+         // we should update selectedValue only if it is null
+         // in the model bean otherwise we would be overwriting
+         // the value in model bean, losing any earlier updates.
+         if (checked && null == uiSelectOne.getSelectedValue()) {
+         uiSelectOne.setSelectedValue(itemValue);
+         }
+         ***************/
+    }
+
+
+    public void applyAttributesToComponentInstance(UIComponent child,
+                                                   Attributes attrs) {
+        int attrLen, i = 0;
+        String attrName, attrValue;
+
+        attrLen = attrs.getLength();
+        for (i = 0; i < attrLen; i++) {
+            attrName = mapAttrNameToPropertyName(attrs.getLocalName(i));
+            attrValue = attrs.getValue(i);
+
+            // First, try to set it as a bean property
+            try {
+                PropertyUtils.setNestedProperty(child, attrName, attrValue);
+            } catch (NoSuchMethodException e) {
+                // If that doesn't work, see if it requires special
+                // treatment
+                try {
+                    if (attrRequiresSpecialTreatment(attrName)) {
+                        handleSpecialAttr(child, attrName, attrValue);
+                    } else {
+                        // If that doesn't work, this will.
+                        child.getAttributes().put(attrName, attrValue);
+                    }
+                } catch (IllegalAccessException innerE) {
+                    innerE.printStackTrace();
+                    log.trace(innerE.getMessage());
+                } catch (IllegalArgumentException innerE) {
+                    innerE.printStackTrace();
+                    log.trace(innerE.getMessage());
+                } catch (InvocationTargetException innerE) {
+                    innerE.printStackTrace();
+                    log.trace(innerE.getMessage());
+                } catch (NoSuchMethodException innerE) {
+                    innerE.printStackTrace();
+                    log.trace(innerE.getMessage());
+                }
+            } catch (IllegalArgumentException e) {
+                try {
+                    if (attrRequiresSpecialTreatment(attrName)) {
+                        handleSpecialAttr(child, attrName, attrValue);
+                    } else {
+                        // If that doesn't work, this will.
+                        child.getAttributes().put(attrName, attrValue);
+                    }
+                } catch (IllegalAccessException innerE) {
+                    innerE.printStackTrace();
+                    log.trace(innerE.getMessage());
+                } catch (IllegalArgumentException innerE) {
+                    innerE.printStackTrace();
+                    log.trace(innerE.getMessage());
+                } catch (InvocationTargetException innerE) {
+                    innerE.printStackTrace();
+                    log.trace(innerE.getMessage());
+                } catch (NoSuchMethodException innerE) {
+                    innerE.printStackTrace();
+                    log.trace(innerE.getMessage());
+                }
+            } catch (InvocationTargetException e) {
+                e.printStackTrace();
+                log.trace(e.getMessage());
+            } catch (IllegalAccessException e) {
+                e.printStackTrace();
+                log.trace(e.getMessage());
+            }
+        }
+
+        // cleanup: make sure we have the necessary required attributes
+        if (child.getId() == null) {
+            String gId = "foo" + Util.generateId();
+            child.setId(gId);
+        }
+
+    }
+
+} // end of class BuildComponentFromTagImpl
diff --git a/jsf-demo/archive/nonjsp/src/java/nonjsp/application/ConstantMethodBinding.java b/jsf-demo/archive/nonjsp/src/java/nonjsp/application/ConstantMethodBinding.java
new file mode 100644
index 0000000..38ef94e
--- /dev/null
+++ b/jsf-demo/archive/nonjsp/src/java/nonjsp/application/ConstantMethodBinding.java
@@ -0,0 +1,96 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+// BuildComponentFromTagImpl.java
+
+package nonjsp.application;
+
+import javax.faces.component.StateHolder;
+import javax.faces.context.FacesContext;
+import javax.faces.el.MethodBinding;
+
+public class ConstantMethodBinding extends MethodBinding
+      implements StateHolder {
+
+    private String outcome = null;
+
+
+    public ConstantMethodBinding() {
+    }
+
+
+    public ConstantMethodBinding(String yourOutcome) {
+        outcome = yourOutcome;
+    }
+
+
+    public Object invoke(FacesContext context, Object params[]) {
+        return outcome;
+    }
+
+
+    public Class getType(FacesContext context) {
+        return String.class;
+    }
+
+    // ----------------------------------------------------- StateHolder Methods
+
+    public Object saveState(FacesContext context) {
+        return outcome;
+    }
+
+
+    public void restoreState(FacesContext context, Object state) {
+        outcome = (String) state;
+    }
+
+
+    private boolean transientFlag = false;
+
+
+    public boolean isTransient() {
+        return (this.transientFlag);
+    }
+
+
+    public void setTransient(boolean transientFlag) {
+        this.transientFlag = transientFlag;
+    }
+}
diff --git a/jsf-demo/archive/nonjsp/src/java/nonjsp/application/XmlDialectProvider.java b/jsf-demo/archive/nonjsp/src/java/nonjsp/application/XmlDialectProvider.java
new file mode 100644
index 0000000..1552d00
--- /dev/null
+++ b/jsf-demo/archive/nonjsp/src/java/nonjsp/application/XmlDialectProvider.java
@@ -0,0 +1,67 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+// XmlDialectProvider.java
+
+package nonjsp.application;
+
+import org.apache.commons.digester.RuleSetBase;
+
+/**
+ * <B>XmlDialectProvider</B> encapsulates the Xml Dialect specific
+ * logic required for creating a tree of UIComponent instances from an
+ * Xml file. <P>
+ *
+ */
+public interface XmlDialectProvider {
+
+    /** @return the Digester rule set for use in this implementation */
+
+    public RuleSetBase getRuleSet();
+
+
+    /**
+     * @return the file suffix for files of this Xml type.  For example
+     *         ".xul" or ".uiml".
+     */
+
+    public String getSuffix();
+
+} // end of interface XmlDialectProvider
diff --git a/jsf-demo/archive/nonjsp/src/java/nonjsp/application/XmlXulRuleSet.java b/jsf-demo/archive/nonjsp/src/java/nonjsp/application/XmlXulRuleSet.java
new file mode 100644
index 0000000..35d2a44
--- /dev/null
+++ b/jsf-demo/archive/nonjsp/src/java/nonjsp/application/XmlXulRuleSet.java
@@ -0,0 +1,281 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+// XmlXulRuleSet.java
+
+package nonjsp.application;
+
+import javax.faces.component.UIComponent;
+import javax.faces.component.UIForm;
+import javax.faces.component.UIOutput;
+
+import org.apache.commons.digester.AbstractObjectCreationFactory;
+import org.apache.commons.digester.Digester;
+import org.apache.commons.digester.Rule;
+import org.apache.commons.digester.RuleSetBase;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.xml.sax.Attributes;
+import org.xml.sax.helpers.AttributesImpl;
+
+import nonjsp.util.Util;
+
+/**
+ * <p>The set of Digester rules required to parse a Faces Xul (Xml)
+ * configuration file.
+ */
+public class XmlXulRuleSet extends RuleSetBase {
+
+    // Log instance for this class
+    protected static Log log = LogFactory.getLog(XmlXulRuleSet.class);
+
+    private BuildComponentFromTag buildComponent = null;
+
+
+    /**
+     * Constructor sets Faces modules needed for building
+     * UIComponent instances.
+     */
+    public XmlXulRuleSet(BuildComponentFromTag bc) {
+        buildComponent = bc;
+    }
+
+
+    /**
+     * <p>Add the set of Rule instances defined in this RuleSet to the
+     * specified <code>Digester</code> instance.
+     *
+     * @param digester Digester instance to which the new Rule instances
+     *                 should be added.
+     */
+    public void addRuleInstances(Digester digester) {
+
+        digester.addCallMethod("*/page-url", "setPageUrl", 0);
+
+        digester.addObjectCreate("*/window", "javax.faces.component.UIForm");
+
+        digester.addObjectCreate("*/label", "javax.faces.component.UIOutput");
+
+        digester.addObjectCreate("*/textbox", "javax.faces.component.UIInput");
+
+        digester.addObjectCreate("*/checkbox",
+                                 "javax.faces.component.UISelectBoolean");
+
+        digester.addObjectCreate("*/radiogroup",
+                                 "javax.faces.component.UISelectOne");
+
+        digester.addObjectCreate("*/menupopup",
+                                 "javax.faces.component.UISelectOne");
+
+        digester.addObjectCreate("*/link", "javax.faces.component.UICommand");
+
+        /* 
+         * Button no longer needs an ActionRule that creates a default
+         * ActionListener because the API's UICommandBase now installs
+         * a default ActionListener
+         */
+        digester.addObjectCreate("*/button", "javax.faces.component.UICommand");
+
+        digester.addObjectCreate("*/image", "javax.faces.component.UIGraphic");
+
+        digester.addFactoryCreate("*/uicomponent", new UIComponentFactory());
+
+        ComponentRule cRule = new ComponentRule();
+        cRule.setBuildComponent(buildComponent);
+        digester.addRule("*/window", cRule);
+        digester.addRule("*/label", cRule);
+        digester.addRule("*/textbox", cRule);
+        digester.addRule("*/checkbox", cRule);
+        digester.addRule("*/radiogroup", cRule);
+        digester.addRule("*/menupopup", cRule);
+        digester.addRule("*/link", cRule);
+        digester.addRule("*/button", cRule);
+        digester.addRule("*/image", cRule);
+
+        ComponentNestedRule cnRule = new ComponentNestedRule();
+        cnRule.setBuildComponent(buildComponent);
+        digester.addRule("*/radio", cnRule);
+        digester.addRule("*/menuitem", cnRule);
+    }
+
+}
+
+final class UIComponentFactory extends AbstractObjectCreationFactory {
+
+    public Object createObject(Attributes attributes) {
+        Class cClass = null;
+        UIComponent c = null;
+
+        // Identify the name of the class to instantiate
+        String className = attributes.getValue("class");
+        String id = attributes.getValue("id");
+        String value = attributes.getValue("value");
+
+        // Instantiate the new object and return it
+        try {
+            cClass = Util.loadClass(className);
+            c = (UIComponent) cClass.newInstance();
+        } catch (ClassNotFoundException cnf) {
+            throw new RuntimeException("Class Not Found:" + cnf.getMessage());
+        } catch (InstantiationException ie) {
+            throw new RuntimeException("Class Instantiation Exception:" +
+                                       ie.getMessage());
+        } catch (IllegalAccessException ia) {
+            throw new RuntimeException("Illegal Access Exception:" +
+                                       ia.getMessage());
+        }
+
+        c.setId(id);
+        if (c instanceof UIOutput) {
+            ((UIOutput) c).setValue(value);
+        }
+        return c;
+    }
+}
+
+final class ComponentRule extends Rule {
+
+    // Log instance for this class
+    protected static Log log = LogFactory.getLog(ComponentRule.class);
+
+    private BuildComponentFromTag bc;
+    private UIComponent root;
+
+
+    public ComponentRule() {
+        super();
+        root = null;
+    }
+
+
+    /**
+     * This method is invoked when the beginning of the matched
+     * Xml element is encountered ;
+     *
+     * @param attributes The element's attribute list
+     */
+    public void begin(Attributes attributes) throws Exception {
+        UIComponent uic = (UIComponent) digester.peek();
+        if (log.isTraceEnabled()) {
+            log.trace("component: " + uic.getId());
+        }
+        AttributesImpl attrs = new AttributesImpl(attributes);
+        for (int i = 0; i < attrs.getLength(); i++) {
+            String qName = attributes.getQName(i);
+            attrs.setLocalName(i, qName);
+            attrs.setValue(i, attributes.getValue(qName));
+            if (log.isTraceEnabled()) {
+                log.trace(
+                      "ComponentRule: qName: " + qName + " value: " +
+                      attributes.getValue(qName));
+            }
+        }
+        bc.applyAttributesToComponentInstance(uic, attrs);
+
+        if (root == null) {
+            root = (UIComponent) digester.peek(digester.getCount() - 1);
+        }
+        root.getChildren().add(uic);
+
+        //If component is a form, make it the root so that children will be
+        //added to it
+        if (uic instanceof UIForm) {
+            root = uic;
+        }
+    }
+
+
+    /**
+     * This method is invoked when the end of the matched
+     * Xml element is encountered ;
+     *
+     * @param attributes The element's attribute list
+     */
+    public void end(String namespace, String name) {
+        //Reset the root
+        UIComponent uic = (UIComponent) digester.peek();
+        if (uic instanceof UIForm) {
+            root = (UIComponent) digester.peek(digester.getCount() - 1);
+        }
+    }
+
+
+    public void setBuildComponent(BuildComponentFromTag bc) {
+        this.bc = bc;
+    }
+}
+
+/**
+ * This processing rule translates nested element names and values
+ * (as in Faces "SelectOne" component items.
+ * The attributes are set on the UIComponent instance.
+ */
+final class ComponentNestedRule extends Rule {
+
+    private BuildComponentFromTag bc;
+
+
+    public ComponentNestedRule() {
+        super();
+    }
+
+
+    /**
+     * This method is invoked when the beginning of the matched
+     * Xml element is encountered (in this case "property");
+     *
+     * @param attributes The element's attribute list
+     */
+    public void begin(Attributes attributes) throws Exception {
+        UIComponent uic = (UIComponent) digester.peek();
+        AttributesImpl attrs = new AttributesImpl(attributes);
+        for (int i = 0; i < attrs.getLength(); i++) {
+            String qName = attributes.getQName(i);
+            attrs.setLocalName(i, qName);
+            attrs.setValue(i, attributes.getValue(qName));
+        }
+        bc.handleNestedComponentTag(uic, "SelectOne_Option", attrs);
+    }
+
+
+    public void setBuildComponent(BuildComponentFromTag bc) {
+        this.bc = bc;
+    }
+}
diff --git a/jsf-demo/archive/nonjsp/src/java/nonjsp/application/XulDialectProvider.java b/jsf-demo/archive/nonjsp/src/java/nonjsp/application/XulDialectProvider.java
new file mode 100644
index 0000000..028dd71
--- /dev/null
+++ b/jsf-demo/archive/nonjsp/src/java/nonjsp/application/XulDialectProvider.java
@@ -0,0 +1,105 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+// XulDialectProvider.java
+
+package nonjsp.application;
+
+
+import org.apache.commons.digester.RuleSetBase;
+
+/**
+ * <B>XulDialectProvider</B> is a class that encapsulates the Xul Dialect
+ * specific logic required for creating a tree of UIComponent instances
+ * from an Xml file. <P>
+ *
+ */
+public class XulDialectProvider extends Object implements XmlDialectProvider {
+
+    //
+    // Protected Constants
+    //
+
+    //
+    // Class Variables
+    //
+
+    //
+    // Instance Variables
+    //
+
+    // Attribute Instance Variables
+
+    // Relationship Instance Variables
+
+    //
+    // Constructors and Initializers    
+    //
+
+    public XulDialectProvider() {
+        super();
+    }
+
+    //
+    // Class methods
+    //
+
+    //
+    // General Methods
+    //
+
+    //
+    // Methods from XmlDialectProvider
+    //
+
+    public RuleSetBase getRuleSet() {
+        RuleSetBase result = null;
+
+        result = new XmlXulRuleSet(new BuildComponentFromTagImpl());
+
+        return result;
+    }
+
+
+    public String getSuffix() {
+        return ".xul";
+    }
+
+} // end of class XulDialectProvider
diff --git a/jsf-demo/archive/nonjsp/src/java/nonjsp/application/XulViewHandlerImpl.java b/jsf-demo/archive/nonjsp/src/java/nonjsp/application/XulViewHandlerImpl.java
new file mode 100644
index 0000000..0fda9f3
--- /dev/null
+++ b/jsf-demo/archive/nonjsp/src/java/nonjsp/application/XulViewHandlerImpl.java
@@ -0,0 +1,434 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+// XulViewHandlerImpl.java 
+
+package nonjsp.application;
+
+import javax.faces.FacesException;
+import javax.faces.FactoryFinder;
+import javax.faces.application.ViewHandler;
+import javax.faces.component.UIComponent;
+import javax.faces.component.UIViewRoot;
+import javax.faces.context.FacesContext;
+import javax.faces.context.ResponseWriter;
+import javax.faces.render.RenderKit;
+import javax.faces.render.RenderKitFactory;
+import javax.servlet.RequestDispatcher;
+import javax.servlet.ServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URL;
+import java.util.Enumeration;
+import java.util.Iterator;
+import java.util.Locale;
+import java.util.Map;
+
+import org.apache.commons.digester.Digester;
+import org.apache.commons.digester.RuleSetBase;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.commons.logging.impl.SimpleLog;
+
+import nonjsp.util.RIConstants;
+
+
+/**
+ * <B>XulViewHandlerImpl</B> is the Xul non-JSP ViewHandler implementation
+ *
+ * @see javax.faces.application.ViewHandler
+ */
+public class XulViewHandlerImpl extends ViewHandler {
+
+    // Log instance for this class
+    protected static Log log = LogFactory.getLog(XulViewHandlerImpl.class);
+    protected static final String CHAR_ENCODING = "ISO-8859-1";
+    protected static final String CONTENT_TYPE = "text/html";
+
+    //PENDING(rogerk) maybe config file?
+    /** Should we use a validating XML parser to read the configuration file? */
+    protected boolean validate = false;
+
+    /**
+     * The set of public identifiers, and corresponding resource names, for
+     * the versions of the configuration file DTDs that we know about.  There
+     * <strong>MUST</strong> be an even number of Strings in this list!
+     * Only used if you are validating against DTD.
+     * Could be read from config file instead.
+     */
+    protected String registrations[] = {
+          "-//UIT//DTD UIML 2.0 Draft//EN",
+          "UIML2_0d.dtd"
+    };
+
+
+    // Relationship Instance Variables
+    protected XmlDialectProvider dialectProvider = null;
+
+
+    public XulViewHandlerImpl() {
+        super();
+        dialectProvider = new XulDialectProvider();
+    }
+
+
+    // Render the components
+    public void renderView(FacesContext context,
+                           UIViewRoot viewToRender) throws IOException,
+          FacesException {
+
+        if (context == null || viewToRender == null) {
+            throw new NullPointerException("RenderView: FacesContext is null");
+        }
+
+        RequestDispatcher requestDispatcher = null;
+
+        log.trace("Determine View Identifier And Build View...");
+        String viewId = viewToRender.getViewId();
+
+        HttpServletResponse response = (HttpServletResponse)
+              (context.getExternalContext().getResponse());
+        log.trace("Set ResponseWriter in FacesContext");
+
+        RenderKitFactory factory = (RenderKitFactory)
+              FactoryFinder.getFactory(FactoryFinder.RENDER_KIT_FACTORY);
+        RenderKit renderKit = factory.getRenderKit(context,
+                                                   RenderKitFactory.HTML_BASIC_RENDER_KIT);
+
+        ResponseWriter writer = renderKit.createResponseWriter(
+              response.getWriter(), CONTENT_TYPE, CHAR_ENCODING);
+        context.setResponseWriter(writer);
+        response.setContentType(CONTENT_TYPE);
+
+        log.trace("Call encode methods on components");
+        createHeader(context);
+        renderResponse(context);
+        createFooter(context);
+
+        log.trace("Save the view and locale in the session");
+        Map sessionMap = getSessionMap(context);
+        sessionMap.put(RIConstants.REQUEST_LOCALE,
+                       context.getViewRoot().getLocale());
+        sessionMap.put(javax.faces.render.ResponseStateManager.VIEW_STATE_PARAM,
+                       context.getViewRoot());
+
+    }
+
+
+    public UIViewRoot restoreView(FacesContext context, String viewId) {
+        if (context == null) {
+            throw new NullPointerException("RestoreView: FacesContext is null");
+        }
+
+        if (log.isTraceEnabled()) {
+            log.trace("viewId: " + viewId);
+        }
+        UIViewRoot root = null;
+        InputStream viewInput = null;
+        RuleSetBase ruleSet = null;
+
+        root = new UIViewRoot();
+        root.setRenderKitId(RenderKitFactory.HTML_BASIC_RENDER_KIT);
+
+        if (null == viewId) {
+            // PENDING(edburns): need name for default view
+            // PENDING(rogerk) : what to specify for page url
+            // (last parameter)????
+            root.setViewId("default");
+            context.setViewRoot(root);
+            Locale locale = calculateLocale(context);
+            root.setLocale(locale);
+            return root;
+        }
+
+        try {
+            viewInput =
+                  context.getExternalContext().getResourceAsStream(viewId);
+            if (null == viewInput) {
+                throw new NullPointerException();
+            }
+        } catch (Throwable e) {
+            throw new FacesException("Can't get stream for " + viewId, e);
+        }
+
+        // PENDING(edburns): can this digester instance be maintained as an
+        // ivar?
+
+        Digester digester = new Digester();
+
+        // SimpleLog implements the Log interface (from commons.logging).
+        // This replaces deprecated "Digester.setDebug" method.
+        // PENDING(rogerk) Perhaps the logging level should be configurable..
+        // For debugging, you can set the log level to
+        // "SimpleLog.LOG_LEVEL_DEBUG".
+        //
+        SimpleLog sLog = new SimpleLog("digesterLog");
+        sLog.setLevel(SimpleLog.LOG_LEVEL_ERROR);
+        digester.setLogger(sLog);
+
+        digester.setNamespaceAware(true);
+
+        digester.setValidating(validate);
+
+        ruleSet = dialectProvider.getRuleSet();
+
+        digester.addRuleSet(ruleSet);
+
+        if (validate) {
+            for (int i = 0; i < registrations.length; i += 2) {
+                URL url = this.getClass().getResource(registrations[i + 1]);
+                if (url != null) {
+                    digester.register(registrations[i], url.toString());
+                }
+            }
+        }
+
+        digester.push(root);
+        try {
+            root = (UIViewRoot) digester.parse(viewInput);
+        } catch (Throwable e) {
+            throw new FacesException("Can't parse stream for " + viewId, e);
+        }
+
+        //Print view for debugging
+        if (log.isDebugEnabled()) {
+            printView(root);
+        }
+
+        root.setViewId(viewId);
+        context.setViewRoot(root);
+
+        return root;
+    }
+
+
+    public UIViewRoot createView(FacesContext context, String viewId) {
+        if (context == null) {
+            throw new NullPointerException("CreateView: FacesContext is null");
+        }
+
+        return restoreView(context, viewId);
+    }
+
+
+    public String getActionURL(FacesContext context, String viewId) {
+        if (viewId.charAt(0) != '/') {
+            throw new IllegalArgumentException(
+                  "Illegal view ID " + viewId + ". the ID must begin with '/'");
+        }
+        // PENDING(edburns): do a more complete implementation that
+        // deals with the vagaries of prefix and suffix mapping.  For
+        // now , just slap "/faces" onto the front.
+        if (!viewId.startsWith("/faces")) {
+            viewId = "/faces" + viewId;
+        }
+        return context.getExternalContext().getRequestContextPath() + viewId;
+    }
+
+
+    public String getResourceURL(FacesContext context, String path) {
+        if (path.startsWith("/")) {
+            return context.getExternalContext().getRequestContextPath() + path;
+        } else {
+            return (path);
+        }
+    }
+
+
+    // Create the header components for this page
+    private void createHeader(FacesContext context) throws IOException {
+
+        ResponseWriter writer = context.getResponseWriter();
+
+        writer.startElement("html", null);
+        writer.writeText("\n", null);
+        writer.startElement("head", null);
+        writer.writeText("\n", null);
+        writer.startElement("title", null);
+        writer.writeText(context.getExternalContext().getRequestContextPath(),
+                         null);
+        writer.endElement("title");
+        writer.writeText("\n", null);
+        writer.endElement("head");
+        writer.writeText("\n", null);
+        writer.startElement("body", null);
+        writer.writeText("\n", null);
+    }
+
+
+    // Create the footer components for this page
+    private void createFooter(FacesContext context) throws IOException {
+
+        ResponseWriter writer = context.getResponseWriter();
+
+        writer.endElement("body");
+        writer.writeText("\n", null);
+        writer.endElement("html");
+        writer.writeText("\n", null);
+    }
+
+
+    // Render the response content for the completed page
+    private void renderResponse(FacesContext context) throws IOException {
+
+        UIComponent root = context.getViewRoot();
+        if (log.isTraceEnabled()) {
+            log.trace(
+                  "Rendering " + root + " with " + root.getChildCount() +
+                  " children");
+        }
+        renderResponse(context, root);
+
+    }
+
+
+    // Render the response content for an individual component
+    private void renderResponse(FacesContext context, UIComponent component)
+          throws IOException {
+
+        if (log.isTraceEnabled()) {
+            log.trace("Render Begin: " + component.getId());
+        }
+        component.encodeBegin(context);
+        if (component.getRendersChildren()) {
+            component.encodeChildren(context);
+        } else {
+            Iterator kids = component.getChildren().iterator();
+            while (kids.hasNext()) {
+                renderResponse(context, (UIComponent) kids.next());
+            }
+        }
+        if (log.isTraceEnabled()) {
+            log.trace("Render End: " + component.getId());
+        }
+        component.encodeEnd(context);
+
+    }
+
+
+    private Map getSessionMap(FacesContext context) {
+        if (context == null) {
+            context = FacesContext.getCurrentInstance();
+        }
+        Map sessionMap = context.getExternalContext().getSessionMap();
+        if (sessionMap == null) {
+            context.getExternalContext().getSession(true);
+            sessionMap = context.getExternalContext().getSessionMap();
+        }
+        return sessionMap;
+    }
+
+
+    private void printView(UIComponent uic) {
+        Iterator kids = uic.getChildren().iterator();
+        while (kids.hasNext()) {
+            printView((UIComponent) kids.next());
+        }
+        log.debug("VIEW: " + uic.getId());
+    }
+
+
+    public void writeState(FacesContext context) throws IOException {
+    }
+
+
+    public Locale calculateLocale(FacesContext context) {
+        Locale result = null;
+        // determine the locales that are acceptable to the client based on the 
+        // Accept-Language header and the find the best match among the 
+        // supported locales specified by the client.
+        Enumeration e = ((ServletRequest)
+              context.getExternalContext().getRequest()).getLocales();
+        while (e.hasMoreElements()) {
+            Locale perf = (Locale) e.nextElement();
+            result = findMatch(context, perf);
+            if (result != null) {
+                break;
+            }
+        }
+        // no match is found.
+        if (result == null) {
+            if (context.getApplication().getDefaultLocale() == null) {
+                result = Locale.getDefault();
+            } else {
+                result = context.getApplication().getDefaultLocale();
+            }
+        }
+        return result;
+    }
+
+
+    public String calculateRenderKitId(FacesContext context) {
+        return null;
+    }
+
+
+    /**
+     * Attempts to find a matching locale based on <code>perf></code> and
+     * list of supported locales, using the matching algorithm
+     * as described in JSTL 8.3.2.
+     */
+    protected Locale findMatch(FacesContext context, Locale perf) {
+        Locale result = null;
+        Iterator it = context.getApplication().getSupportedLocales();
+        while (it.hasNext()) {
+            Locale supportedLocale = (Locale) it.next();
+
+            if (perf.equals(supportedLocale)) {
+                // exact match
+                result = supportedLocale;
+                break;
+            } else {
+                // Make sure the preferred locale doesn't have  country set, when 
+                // doing a language match, For ex., if the preferred locale is
+                // "en-US", if one of supported locales is "en-UK", even though 
+                // its language matches that of the preferred locale, we must 
+                // ignore it.
+                if (perf.getLanguage().equals(supportedLocale.getLanguage()) &&
+                    supportedLocale.getCountry().equals("")) {
+                    result = supportedLocale;
+                }
+            }
+        }
+        return result;
+    }
+} 
diff --git a/jsf-demo/archive/nonjsp/src/java/nonjsp/lifecycle/XulServletContextListener.java b/jsf-demo/archive/nonjsp/src/java/nonjsp/lifecycle/XulServletContextListener.java
new file mode 100644
index 0000000..754b92a
--- /dev/null
+++ b/jsf-demo/archive/nonjsp/src/java/nonjsp/lifecycle/XulServletContextListener.java
@@ -0,0 +1,114 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+// XulServletContextListener.java
+
+package nonjsp.lifecycle;
+
+import javax.faces.FactoryFinder;
+import javax.faces.application.Application;
+import javax.faces.application.ApplicationFactory;
+import javax.faces.application.ViewHandler;
+import javax.servlet.ServletContextEvent;
+import javax.servlet.ServletContextListener;
+
+import nonjsp.application.XulViewHandlerImpl;
+
+/**
+ * <B>XulServletContextListener</B> is a class that sets the
+ * XulViewHandler to be the default ViewHandler for the web
+ * application.
+ * <p/>
+ * <B>Lifetime And Scope</B> <P>
+ *
+ */
+
+public class XulServletContextListener implements ServletContextListener {
+
+    //
+    // Protected Constants
+    //
+
+    //
+    // Class Variables
+    //
+
+    //
+    // Instance Variables
+    //
+
+    // Attribute Instance Variables
+
+    // Relationship Instance Variables
+
+    //
+    // Constructors and Initializers    
+    //
+
+    public XulServletContextListener() {
+    }
+
+    //
+    // Class methods
+    //
+
+    //
+    // General Methods
+    //
+
+    //
+    // Methods from ServletContextListener
+    //
+
+    public void contextInitialized(ServletContextEvent event) {
+        //Set the ViewHandler to the Xul implementation
+        ViewHandler handler = new XulViewHandlerImpl();
+        ApplicationFactory factory = (ApplicationFactory)
+              FactoryFinder.getFactory(FactoryFinder.APPLICATION_FACTORY);
+        Application application =
+              factory.getApplication();
+        application.setViewHandler(handler);
+    }
+
+
+    public void contextDestroyed(ServletContextEvent e) {
+    }
+
+} // end of class XulServletContextListener
diff --git a/jsf-demo/archive/nonjsp/src/java/nonjsp/taglib/EscapeHtmlTag.java b/jsf-demo/archive/nonjsp/src/java/nonjsp/taglib/EscapeHtmlTag.java
new file mode 100644
index 0000000..8066f48
--- /dev/null
+++ b/jsf-demo/archive/nonjsp/src/java/nonjsp/taglib/EscapeHtmlTag.java
@@ -0,0 +1,209 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ *
+ *
+ * This file incorporates work covered by the following copyright and
+ * permission notice:
+ *
+ * Copyright 2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package nonjsp.taglib;
+
+import javax.servlet.jsp.JspException;
+import javax.servlet.jsp.JspTagException;
+import javax.servlet.jsp.tagext.BodyTagSupport;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.OutputStream;
+import java.io.OutputStreamWriter;
+import java.io.Reader;
+import java.io.StringReader;
+import java.io.Writer;
+
+import org.apache.taglibs.standard.lang.support.ExpressionEvaluatorManager;
+
+/**
+ * <p>Tag handler for <escapeHtml>
+ *
+ * @author Pierre Delisle
+ * @version $Revision: 1.5 $ $Date: 2007/04/27 22:00:36 $
+ */
+public class EscapeHtmlTag extends BodyTagSupport {
+
+    //*********************************************************************
+    // Instance variables
+
+    private Reader reader;
+    private Writer writer;
+
+    //*********************************************************************
+    // Constructors
+
+    public EscapeHtmlTag() {
+        super();
+        init();
+    }
+
+
+    private void init() {
+        reader = null;
+        writer = null;
+    }
+
+    //*********************************************************************
+    // Tag's properties
+
+    /** Tag's 'reader' attribute */
+    public void setReader(Reader reader) {
+        this.reader = reader;
+    }
+
+
+    /** Tag's 'writer' attribute */
+    public void setWriter(Writer writer) {
+        this.writer = writer;
+    }
+
+    //*********************************************************************
+    // TagSupport methods
+
+    public int doEndTag() throws JspException {
+        Reader in;
+        Writer out;
+
+        if (reader == null) {
+            String bcs = getBodyContent().getString().trim();
+            if (bcs == null || bcs.equals("")) {
+                throw new JspTagException("In <escapeHtml>, 'reader' " +
+                                          "not specified and no non-whitespace content inside the tag.");
+            }
+            in = castToReader(bcs);
+        } else {
+            in = reader;
+        }
+
+        if (writer == null) {
+            out = pageContext.getOut();
+        } else {
+            out = writer;
+        }
+
+        transform(in, out);
+        return EVAL_PAGE;
+    }
+
+
+    /** Releases any resources we may have (or inherit) */
+    public void release() {
+        super.release();
+        init();
+    }
+
+    //*********************************************************************
+    // Tag's scific behavior methods
+
+    /** Transform */
+    public void transform(Reader reader, Writer writer)
+          throws JspException {
+        int c;
+        try {
+            writer.write("<pre>");
+            while ((c = reader.read()) != -1) {
+                if (c == '<') {
+                    writer.write("<");
+                } else if (c == '>') {
+                    writer.write(">");
+                } else {
+                    writer.write(c);
+                }
+            }
+            writer.write("</pre>");
+        } catch (IOException ex) {
+            throw new JspException("EscapeHtml: " +
+                                   "error copying chars", ex);
+        }
+    }
+
+    //*********************************************************************
+    // Utility methods   
+
+
+    public static Reader castToReader(Object obj) throws JspException {
+        if (obj instanceof InputStream) {
+            return new InputStreamReader((InputStream) obj);
+        } else if (obj instanceof Reader) {
+            return (Reader) obj;
+        } else if (obj instanceof String) {
+            return new StringReader((String) obj);
+        }
+        throw new JspException("Invalid type '" + obj.getClass().getName() +
+                               "' for castToReader()");
+    }
+
+
+    public static Writer castToWriter(Object obj) throws JspException {
+        if (obj instanceof OutputStream) {
+            return new OutputStreamWriter((OutputStream) obj);
+        } else if (obj instanceof Writer) {
+            return (Writer) obj;
+            /*@@@
+        } else if (obj instanceof String) {
+            return new StringWriter();
+             */
+        }
+        throw new JspException("Invalid type '" + obj.getClass().getName() +
+                               "' for castToWriter()");
+    }
+
+}
diff --git a/jsf-demo/archive/nonjsp/src/java/nonjsp/util/RIConstants.java b/jsf-demo/archive/nonjsp/src/java/nonjsp/util/RIConstants.java
new file mode 100644
index 0000000..25c7f8f
--- /dev/null
+++ b/jsf-demo/archive/nonjsp/src/java/nonjsp/util/RIConstants.java
@@ -0,0 +1,65 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package nonjsp.util;
+
+import javax.faces.render.RenderKitFactory;
+
+/**
+ * This class contains literal strings used throughout the Faces RI.
+ * <p/>
+ * Based on com.sun.faces.RIConstants
+ *
+ * @see com.sun.faces.RIConstants
+ */
+public class RIConstants {
+
+    /** Used to add uniqueness to the names. */
+    public final static String FACES_PREFIX = "com.sun.faces.";
+
+    public final static String HTML_BASIC_RENDER_KIT = FACES_PREFIX
+                                                       +
+                                                       RenderKitFactory
+                                                             .HTML_BASIC_RENDER_KIT;
+
+    public final static String FACES_VIEW = FACES_PREFIX + "VIEW";
+    public final static String REQUEST_LOCALE = FACES_PREFIX + "LOCALE";
+
+}
diff --git a/jsf-demo/archive/nonjsp/src/java/nonjsp/util/Util.java b/jsf-demo/archive/nonjsp/src/java/nonjsp/util/Util.java
new file mode 100644
index 0000000..3c63bcf
--- /dev/null
+++ b/jsf-demo/archive/nonjsp/src/java/nonjsp/util/Util.java
@@ -0,0 +1,117 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+// Util.java
+
+package nonjsp.util;
+
+/**
+ * <B>Util</B> is a class ...
+ * <p/>
+ * Copy of com.sun.faces.util.Util in order to remove
+ * demo dependancy on RI.
+ * <p/>
+ * <p/>
+ * <B>Lifetime And Scope</B> <P>
+ *
+ * @see    com.sun.faces.util.Util
+ */
+
+public class Util extends Object {
+
+//
+// Protected Constants
+//
+
+//
+// Class Variables
+//
+
+    private static long id = 0;
+
+//
+// Instance Variables
+//
+
+// Attribute Instance Variables
+
+// Relationship Instance Variables
+
+//
+// Constructors and Initializers    
+//
+
+    private Util() {
+        throw new IllegalStateException();
+    }
+
+//
+// Class methods
+//
+
+    public static Class loadClass(String name) throws ClassNotFoundException {
+        ClassLoader loader =
+              Thread.currentThread().getContextClassLoader();
+        if (loader == null) {
+            return Class.forName(name);
+        } else {
+            return loader.loadClass(name);
+        }
+    }
+
+
+    /**
+     * Generate a new identifier currently used to uniquely identify
+     * components.
+     */
+    public static synchronized String generateId() {
+        if (id == Long.MAX_VALUE) {
+            id = 0;
+        } else {
+            id++;
+        }
+        return Long.toHexString(id);
+    }
+
+//
+// General Methods
+//
+
+} // end of class Util
diff --git a/jsf-demo/archive/nonjsp/web/ShowSource.jsp b/jsf-demo/archive/nonjsp/web/ShowSource.jsp
new file mode 100644
index 0000000..d80f3f2
--- /dev/null
+++ b/jsf-demo/archive/nonjsp/web/ShowSource.jsp
@@ -0,0 +1,80 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<!--
+  Displays the content of the file specified in request
+  parameter "filename".
+  <%-- Warning!  Can be used to retrieve the source code for
+       any file in the 'standard-examples' application.
+       It is not advisable to insert any sensitive code
+       (even as an experiment) into this application --%>
+-->
+
+<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
+<%@ taglib prefix="ex" uri="/WEB-INF/nonjsp.tld" %>
+
+<%-- 
+  Let's get back the URL as a String so we can use it to
+  demonstrate "c:import"
+--%>
+<% pageContext.setAttribute("filepath",
+     application.
+       getResource(request.getParameter("filename")).toExternalForm()); %>
+<% pageContext.setAttribute("filename", request.getParameter("filename")); %>
+
+<html>
+<head>
+  <title>JSTL: Source code for <c:out value="${filename}"/></title>
+</head>
+<body bgcolor="#FFFFFF">
+<h3>Source code for:  <c:out value="${filename}"/></h3>
+
+<hr>
+
+<c:import varReader="reader" url="${filepath}">
+  <ex:escapeHtml reader="${reader}"/>
+</c:import>
+<hr>
+</body>
+</html>
diff --git a/jsf-demo/archive/nonjsp/web/WEB-INF/faces-config.xml b/jsf-demo/archive/nonjsp/web/WEB-INF/faces-config.xml
new file mode 100644
index 0000000..971289e
--- /dev/null
+++ b/jsf-demo/archive/nonjsp/web/WEB-INF/faces-config.xml
@@ -0,0 +1,57 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd"
+    version="1.2">
+    
+    <navigation-rule>
+        <from-view-id>/helloDuke.xul</from-view-id>
+            <!-- Navigation Rules -->
+            <navigation-case>
+                <from-outcome>success</from-outcome>
+                <to-view-id>/hi.xul</to-view-id>
+            </navigation-case>
+    </navigation-rule>
+</faces-config>
diff --git a/jsf-demo/archive/nonjsp/web/WEB-INF/tlds/nonjsp.tld b/jsf-demo/archive/nonjsp/web/WEB-INF/tlds/nonjsp.tld
new file mode 100644
index 0000000..9a7388f
--- /dev/null
+++ b/jsf-demo/archive/nonjsp/web/WEB-INF/tlds/nonjsp.tld
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+
+
+<!DOCTYPE taglib
+  PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
+  "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
+
+
+<taglib>
+
+  <!-- ============== Tag Library Description Elements ============= -->
+  <tlib-version>0.03</tlib-version>
+  <jsp-version>1.2</jsp-version>
+  <short-name>Demo Taglib</short-name>
+  <uri>taglibrary</uri>
+  <description>
+    This tag library contains tag needed to help display source. 
+  </description>
+
+  <tag>
+    <name>escapeHtml</name>
+    <tag-class>nonjsp.taglib.EscapeHtmlTag</tag-class>
+    <body-content>JSP</body-content>
+    <attribute>
+        <name>reader</name>
+        <required>false</required>
+        <rtexprvalue>true</rtexprvalue>
+        <type>java.io.Reader</type>
+    </attribute>  
+    <attribute>
+        <name>writer</name>
+        <required>false</required>
+        <rtexprvalue>true</rtexprvalue>
+        <type>java.io.Writer</type>
+    </attribute>  
+  </tag>
+
+
+</taglib>
diff --git a/jsf-demo/archive/nonjsp/web/WEB-INF/web.xml b/jsf-demo/archive/nonjsp/web/WEB-INF/web.xml
new file mode 100755
index 0000000..1c8db5b
--- /dev/null
+++ b/jsf-demo/archive/nonjsp/web/WEB-INF/web.xml
@@ -0,0 +1,88 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<web-app version="2.5"
+         xmlns="http://java.sun.com/xml/ns/javaee"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" >
+    
+    <display-name>JavaServer Faces Non-JSP Sample Application</display-name>
+    <description>
+        JavaServer Faces Non-JSP Sample Application
+    </description>
+
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>server</param-value>
+    </context-param>
+    
+    <context-param>
+        <param-name>javax.faces.application.CONFIG_FILES</param-name>
+        <param-value>/WEB-INF/faces-config.xml</param-value>
+    </context-param>
+
+    <context-param>
+        <param-name>com.sun.faces.validateXml</param-name>
+        <param-value>true</param-value>
+    </context-param>
+
+    <!-- Xul Listener -->
+    <listener>
+        <listener-class>nonjsp.lifecycle.XulServletContextListener</listener-class>
+    </listener>
+
+    <!-- Faces Servlet -->
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup> 1 </load-on-startup>
+    </servlet>
+
+
+    <!-- Faces Servlet Mapping -->
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+
+</web-app>
diff --git a/jsf-demo/archive/nonjsp/web/helloDuke.xul b/jsf-demo/archive/nonjsp/web/helloDuke.xul
new file mode 100644
index 0000000..9459c67
--- /dev/null
+++ b/jsf-demo/archive/nonjsp/web/helloDuke.xul
@@ -0,0 +1,54 @@
+<?xml version="1.0"?> <!-- -*- Mode: HTML -*- -->
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<page>
+
+<window id="HelloDuke">
+
+<image id="duke" url="/images/wave.med.gif" />
+
+<button id="hello" action="success" value="Submit"/>
+
+</window>
+
+</page>
diff --git a/jsf-demo/archive/nonjsp/web/hi.xul b/jsf-demo/archive/nonjsp/web/hi.xul
new file mode 100644
index 0000000..02256ed
--- /dev/null
+++ b/jsf-demo/archive/nonjsp/web/hi.xul
@@ -0,0 +1,52 @@
+<?xml version="1.0"?> <!-- -*- Mode: HTML -*- -->
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<page>
+
+<window id="HelloDuke">
+
+<label id="hiLabel" value="Duke says 'Hi!'" />
+
+</window>
+
+</page>
diff --git a/jsf-demo/archive/nonjsp/web/images/code.gif b/jsf-demo/archive/nonjsp/web/images/code.gif
new file mode 100644
index 0000000..93af2cd
Binary files /dev/null and b/jsf-demo/archive/nonjsp/web/images/code.gif differ
diff --git a/jsf-demo/archive/nonjsp/web/images/execute.gif b/jsf-demo/archive/nonjsp/web/images/execute.gif
new file mode 100644
index 0000000..f64d70f
Binary files /dev/null and b/jsf-demo/archive/nonjsp/web/images/execute.gif differ
diff --git a/jsf-demo/archive/nonjsp/web/images/wave.med.gif b/jsf-demo/archive/nonjsp/web/images/wave.med.gif
new file mode 100644
index 0000000..70b7cff
Binary files /dev/null and b/jsf-demo/archive/nonjsp/web/images/wave.med.gif differ
diff --git a/jsf-demo/archive/nonjsp/web/index.jsp b/jsf-demo/archive/nonjsp/web/index.jsp
new file mode 100644
index 0000000..05e1154
--- /dev/null
+++ b/jsf-demo/archive/nonjsp/web/index.jsp
@@ -0,0 +1,171 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
+<html>
+<head>
+   <title>Non-JSP Examples</title>
+</head>
+<body>
+<h1>Non-JSP Examples</h1>
+
+<p>
+
+<h2>Overview:</h2>
+
+<p>
+This is a collection of examples written in XUL demonstrating 
+the usage of different Java Server Faces components. These components
+are rendered by the Java Server Faces framework and are not dependent
+on a JSP container<br><br>
+These examples are important because they are a technology demonstrator
+showing that the Java Server Faces framework can be used and rendered 
+independently of a JSP container.
+</p>
+
+<h2>How this Non-JSP Web Application works:</h2>
+<p>
+<ol>
+  <li>
+    This web application works by first creating a 
+    <code>XulServletContextListener</code>.<br>
+    This context listener creates a new <code>XulViewHandler</code> 
+    when the context is initialized and makes it the default 
+    View Handler.
+  </li>
+  <li>
+    The <code>XulViewHandler</code> handles how the XUL view is rendered. It goes through the following steps in order to render the page:
+    <ul>
+      <li>
+        <b>Parsing Xml Rule Set</b><br>
+        A Rule Set is created which maps the XUL elements to Java Server
+        Faces objects. The XUL page is then parsed using this Rule Set
+        and a tree of Java Server Faces objects is created.
+      </li>
+      <li>
+        <b>Setting the Tree</b><br>
+        The object tree that is created is set within the FacesContext
+        along with the appropriate ResponseWriter and ContentType.
+      </li>
+      <li>
+        <b>Call component encode methods</b><br>
+        The response is rendered by traversing the tree and calling the
+        individual object's encode methods.
+      </li>
+      <li>
+        <b>Saving the state</b><br>
+        The tree is saved in the session to allow for navigation between
+        different XUL pages. This allows ActionEvents such as the
+        demo's <code>ButtonAction</code> to be written.<br>
+        During the parsing phase an ActionRule was written that creates an
+        ActionListener on an object. The ActionListener implementation
+        class then handles the event. In the <code>ButtonAction</code>
+        case the event handler redirects to another XUL page.
+      </li>
+    </ul>
+  </li>
+</ol>
+
+<p>
+<hr>
+
+<table BORDER=0 CELLSPACING=5 WIDTH="85%" >
+  <tr VALIGN=TOP>
+    <td>Simple Label Example </td>
+
+    <td VALIGN=TOP WIDTH="30%">
+      <a href="faces/label.xul">
+        <img SRC="images/execute.gif" HSPACE=4 BORDER=0 align=TOP>
+      </a>
+      <a href="faces/label.xul">Execute</a>
+    </td>
+
+    <td WIDTH="30%">
+      <a href="ShowSource.jsp?filename=/label.xul">
+        <img SRC="images/code.gif" HSPACE=4 BORDER=0 height=24 width=24 align=TOP>
+      </a>
+      <a href="ShowSource.jsp?filename=/label.xul">Source</a>
+    </td>
+  </tr>
+
+  <tr VALIGN=TOP>
+    <td>Text Field Example </td>
+
+    <td VALIGN=TOP WIDTH="30%">
+      <a href="faces/textField.xul">
+        <img SRC="images/execute.gif" HSPACE=4 BORDER=0 align=TOP>
+      </a>
+      <a href="faces/textField.xul">Execute</a>
+    </td>
+
+    <td WIDTH="30%">
+      <a href="ShowSource.jsp?filename=/textField.xul">
+        <img SRC="images/code.gif" HSPACE=4 BORDER=0 height=24 width=24 align=TOP>
+      </a>
+      <a href="ShowSource.jsp?filename=/textField.xul">Source</a>
+    </td>
+  </tr>
+
+  <tr VALIGN=TOP>
+    <td>Hello Duke Example </td>
+
+    <td VALIGN=TOP WIDTH="30%">
+      <a href="faces/helloDuke.xul">
+        <img SRC="images/execute.gif" HSPACE=4 BORDER=0 align=TOP>
+      </a>
+      <a href="faces/helloDuke.xul">Execute</a>
+    </td>
+
+    <td WIDTH="30%">
+      <a href="ShowSource.jsp?filename=/helloDuke.xul">
+        <img SRC="images/code.gif" HSPACE=4 BORDER=0 height=24 width=24 align=TOP>
+      </a>
+      <a href="ShowSource.jsp?filename=/helloDuke.xul">Source</a>
+    </td>
+  </tr>
+
+</table>
+
+</body>
+</html>
diff --git a/jsf-demo/archive/nonjsp/web/label.xul b/jsf-demo/archive/nonjsp/web/label.xul
new file mode 100644
index 0000000..5deba41
--- /dev/null
+++ b/jsf-demo/archive/nonjsp/web/label.xul
@@ -0,0 +1,52 @@
+<?xml version="1.0"?> <!-- -*- Mode: HTML -*- -->
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<page>
+
+<window id="label">
+
+<label id="simpleLabel" value="A simple label" />
+
+</window>
+
+</page>
diff --git a/jsf-demo/archive/nonjsp/web/textField.xul b/jsf-demo/archive/nonjsp/web/textField.xul
new file mode 100644
index 0000000..58d3804
--- /dev/null
+++ b/jsf-demo/archive/nonjsp/web/textField.xul
@@ -0,0 +1,59 @@
+<?xml version="1.0"?> <!-- -*- Mode: HTML -*- -->
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<page>
+
+<window id="textFields">
+
+<label id="userLabel" value="UserName" />
+<textbox id="userName" value="default" />
+
+<label id="pwdLabel" value="Password" />
+<textbox id="password" type="password" />
+
+<label id="addrLabel" value="Address" />
+<textbox id="address" multiline="true" />
+
+</window>
+
+</page>
diff --git a/jsf-demo/archive/renderkits/README b/jsf-demo/archive/renderkits/README
new file mode 100644
index 0000000..04efa1e
--- /dev/null
+++ b/jsf-demo/archive/renderkits/README
@@ -0,0 +1,29 @@
+============================================================ 
+Building, Deploying And Running The Multiple Renderkits Demo
+============================================================ 
+
+REQUIREMENTS:
+
+ - Mozilla browser with SVG support - Firefox - the demo uses
+   XMLHttpRequest.  Until there is better SVG support in Firefox,
+   you should use the "next generation" Firefox builds - under the 
+   "deerpark" project.  
+   See: http://www.mozilla.org/projects/svg/faq.html
+   And here is where you can get a deer park alpha 2 build:
+       http://www.mozilla.org/projects/deerpark/releases/alpha2.html
+   
+ - JSP 1.2 container
+
+BUILDING:
+ - See https://javaserverfaces.dev.java.net/faq.html#Code_build
+
+DEPLOYING:
+ - For Glassfish:
+       - autodeploy the war: copy jsf-demo/renderkits/build/jsf-renderkits.war to
+             the <glassfish home>/domains/domain1/autodeploy directory.
+
+RUNNING:
+ - Fire up your browser and enter:
+    http://<hostname>:<port>/jsf-renderkits
+   where <hostName> is the host where the server is running
+   and <port> is the port for requests.
diff --git a/jsf-demo/archive/renderkits/build.xml b/jsf-demo/archive/renderkits/build.xml
new file mode 100644
index 0000000..0e9b707
--- /dev/null
+++ b/jsf-demo/archive/renderkits/build.xml
@@ -0,0 +1,170 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project name="renderkits" default="build" basedir=".">
+
+    <property file="${user.home}/build.properties"/>
+    <property file="../../../build.properties"/>
+    <import file="${jsf.build.home}/common/ant/common.xml"/>
+
+    <!-- Configure the context path for this application -->
+    <property name="context.path" value="/jsf-renderkits"/>
+    <property name="example" value="jsf-renderkits"/>
+    <property name="webapp" value="jsf-renderkits"/>
+    <property name="build" value="${basedir}/build"/>
+
+    <!-- The base directory for demo apps -->
+    <property name="jsf-demo.lib" value="../lib"/>
+
+    <path id="classpath">
+        <pathelement location="${javax.faces-api.jar}"/>
+        <pathelement location="${build}/WEB-INF/classes"/>
+        <path refid="compile.classpath"/>
+    </path>
+
+    <target name="init" depends="check.changes">
+        <tstamp/>
+    </target>
+
+    <target name="check.changes">
+        <uptodate property="skip.build"
+                  targetfile="${build}/last-build">
+            <srcfiles dir="${basedir}">
+                <include name="src/**/*.*"/>
+                <include name="conf/**/*.*"/>
+                <include name="web/**/*.*"/>
+            </srcfiles>
+        </uptodate>
+    </target>
+
+    <target name="clean">
+        <delete dir="${build}"/>
+        <delete dir="${context.path}"/>
+        <delete file="${basedir}/last-build"/>
+    </target>   
+
+    <target name="prepare" depends="init"
+            description="Create build directories.">
+        <mkdir dir="${build}"/>
+        <mkdir dir="${build}/${webapp}"/>
+        <mkdir dir="${build}/classes"/>
+        <mkdir dir="${build}/classes/${webapp}"/>
+        <mkdir dir="${build}/classes/renderkits"/>
+        <mkdir dir="${build}/classes/renderkits/META-INF"/>
+        <mkdir dir="${build}/${webapp}/src/java/renderkits"/>
+        <mkdir dir="${build}/${webapp}/src/java/demo"/>
+        <mkdir dir="${build}/${webapp}/src/script"/>
+        <mkdir dir="${build}/${webapp}/WEB-INF/lib"/>
+        <mkdir dir="${build}/${webapp}/WEB-INF/classes"/>
+    </target>       
+
+    <target name="build" unless="skip.build" depends="prepare"
+            description="Compile Java files for components, not webapp.">
+        <touch file="${build}/last-build"/>
+
+       <jsf.javac srcdir="src/java"
+                   destdir="${build}/${example}/WEB-INF/classes">
+            <classpath>
+                <path refid="classpath"/>
+            </classpath>
+        </jsf.javac>        
+
+        <copy todir="${build}/${webapp}/WEB-INF">
+            <fileset dir="web/WEB-INF">
+                <include name="web.xml"/>
+            </fileset>
+        </copy>
+
+        <!-- copy over the properties -->
+        <copy todir="${build}/${webapp}/WEB-INF/classes/">
+            <fileset dir="src/java">
+                <include name="**/*.properties"/>
+            </fileset>         
+        </copy>  
+        
+        <copy todir="${build}/${webapp}/WEB-INF" 
+              file="src/conf/faces-config.xml"/>
+
+        <!-- copy the java source to the webapp for viewing by the user -->
+        <copy todir="${build}/${webapp}/src/java/renderkits">
+            <fileset dir="src/java/renderkits"/>
+        </copy>
+        <copy todir="${build}/${webapp}/src/java/demo">
+            <fileset dir="src/java/demo"/>
+        </copy>
+        <copy todir="${build}/${webapp}/WEB-INF"
+              file="web/WEB-INF/tlds/svg.tld"/>
+        <copy todir="${build}/${webapp}/WEB-INF"
+              file="web/WEB-INF/tlds/xul.tld"/>
+
+        <!-- copy the script files to the webapp for viewing by the user -->
+        <copy todir="${build}/${webapp}/src/script">
+            <fileset dir="src/script"/>
+        </copy>
+        <copy todir="${build}/${webapp}">
+            <fileset dir="src/script"/>
+        </copy>
+
+        <copy todir="${build}/${webapp}">
+            <fileset dir="web">
+                <include name="**/*.html"/>
+                <include name="**/*.gif"/>
+                <include name="**/*.jpg"/>
+                <include name="**/*.jsp"/>
+                <include name="**/*.css"/>
+                <include name="**/*.xml"/>
+                <include name="**/*.es"/>
+            </fileset>
+        </copy>     
+
+       <jsf.war basedir="${build}"
+                 archive-name="${example}"
+                 webxml="${build}/${example}/WEB-INF/web.xml">
+            <archive-elements>
+                <zipfileset dir="${build}/${example}"/>
+            </archive-elements>
+        </jsf.war>
+
+    </target>
+    
+</project>
+
diff --git a/jsf-demo/archive/renderkits/src/conf/faces-config.xml b/jsf-demo/archive/renderkits/src/conf/faces-config.xml
new file mode 100644
index 0000000..ae9d420
--- /dev/null
+++ b/jsf-demo/archive/renderkits/src/conf/faces-config.xml
@@ -0,0 +1,369 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
+              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+              xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd"
+              version="1.2">
+
+    <application>
+        <locale-config>
+            <default-locale>en</default-locale>
+            <supported-locale>de</supported-locale>
+            <supported-locale>fr</supported-locale>
+            <supported-locale>es</supported-locale>
+        </locale-config>
+    </application>
+
+    <component>
+        <component-type>Rectangle</component-type>
+        <component-class>renderkits.components.svg.Rectangle</component-class>
+    </component>
+    <component>
+        <component-type>Line</component-type>
+        <component-class>renderkits.components.svg.Line</component-class>
+    </component>
+
+    <render-kit>
+        <render-kit-id>SVG</render-kit-id>
+        <render-kit-class>
+            renderkits.renderkit.svg.SVGRenderKit</render-kit-class>
+        <renderer>
+            <component-family>javax.faces.Form</component-family>
+            <renderer-type>renderkit.svg.Form</renderer-type>
+            <renderer-class>
+                renderkits.renderkit.svg.FormRenderer</renderer-class>
+        </renderer>
+        <renderer>
+            <component-family>javax.faces.Command</component-family>
+            <renderer-type>renderkit.svg.Button</renderer-type>
+            <renderer-class>
+                renderkits.renderkit.svg.ButtonRenderer</renderer-class>
+        </renderer>
+        <renderer>
+            <component-family>javax.faces.Output</component-family>
+            <renderer-type>renderkit.svg.Text</renderer-type>
+            <renderer-class>
+                renderkits.renderkit.svg.TextRenderer</renderer-class>
+        </renderer>
+        <renderer>
+            <component-family>Rectangle</component-family>
+            <renderer-type>renderkit.svg.Rectangle</renderer-type>
+            <renderer-class>
+                renderkits.renderkit.svg.RectangleRenderer</renderer-class>
+        </renderer>
+        <renderer>
+            <component-family>Line</component-family>
+            <renderer-type>renderkit.svg.Line</renderer-type>
+            <renderer-class>
+                renderkits.renderkit.svg.LineRenderer</renderer-class>
+        </renderer>
+    </render-kit>
+
+    <render-kit>
+        <render-kit-id>XUL</render-kit-id>
+        <render-kit-class>
+            renderkits.renderkit.xul.XULRenderKit</render-kit-class>
+        <renderer>
+            <component-family>javax.faces.Form</component-family>
+            <renderer-type>renderkit.xul.Form</renderer-type>
+            <renderer-class>
+                renderkits.renderkit.xul.FormRenderer</renderer-class>
+        </renderer>
+        <renderer>
+            <component-family>javax.faces.Command</component-family>
+            <renderer-type>renderkit.xul.Button</renderer-type>
+            <renderer-class>
+                renderkits.renderkit.xul.ButtonRenderer</renderer-class>
+        </renderer>
+        <renderer>
+            <component-family>javax.faces.Output</component-family>
+            <renderer-type>renderkit.xul.Label</renderer-type>
+            <renderer-class>
+                renderkits.renderkit.xul.LabelRenderer</renderer-class>
+        </renderer>
+        <renderer>
+            <component-family>javax.faces.Output</component-family>
+            <renderer-type>renderkit.xul.Text</renderer-type>
+            <renderer-class>
+                renderkits.renderkit.xul.TextRenderer</renderer-class>
+        </renderer>
+        <renderer>
+            <component-family>javax.faces.Panel</component-family>
+            <renderer-type>renderkit.xul.Grid</renderer-type>
+            <renderer-class>
+                renderkits.renderkit.xul.GridRenderer</renderer-class>
+        </renderer>
+        <renderer>
+            <component-family>javax.faces.Panel</component-family>
+            <renderer-type>renderkit.xul.Group</renderer-type>
+            <renderer-class>
+                renderkits.renderkit.xul.GroupRenderer</renderer-class>
+        </renderer>
+    </render-kit>
+
+    <navigation-rule>
+        <description>
+            The decision rule used by the NavigationHandler to
+            determine which view must be displayed after the
+            current view, html.jsp is processed.
+        </description>
+        <from-view-id>*</from-view-id>
+        <navigation-case>
+            <description>
+                Indicates to the NavigationHandler that the svg.jsp
+                view must be displayed if the Action referenced by a
+                UICommand component on the html.jsp view returns
+                the outcome "success".
+            </description>
+            <from-outcome>xul-main</from-outcome>
+            <to-view-id>/html.jsp</to-view-id>
+        </navigation-case>
+    </navigation-rule>
+
+    <navigation-rule>
+        <description>
+            The decision rule used by the NavigationHandler to
+            determine which view must be displayed after the
+            current view, html.jsp is processed.
+        </description>
+        <from-view-id>/html.jsp</from-view-id>
+        <navigation-case>
+            <description>
+                Indicates to the NavigationHandler that the svg.jsp
+                view must be displayed if the Action referenced by a
+                UICommand component on the html.jsp view returns
+                the outcome "success".
+            </description>
+            <from-outcome>success</from-outcome>
+            <to-view-id>/svg.jsp</to-view-id>
+        </navigation-case>
+    </navigation-rule>
+
+    <navigation-rule>
+        <description>
+            The decision rule used by the NavigationHandler to
+            determine which view must be displayed after the
+            current view, svg.jsp is processed.
+        </description>
+        <from-view-id>/svg.jsp</from-view-id>
+        <navigation-case>
+            <description>
+                Indicates to the NavigationHandler that the html.jsp
+                view must be displayed if the Action referenced by a
+                UICommand component on the svg.jsp view returns
+                the outcome "success".
+            </description>
+            <from-outcome>success</from-outcome>
+            <to-view-id>/html.jsp</to-view-id>
+        </navigation-case>
+        <navigation-case>
+            <description>
+                Indicates to the NavigationHandler that the xul-restore.jsp
+                view must be displayed if the Action referenced by a
+                UICommand component on the svg.jsp view returns
+                the outcome "xul-restore".
+            </description>
+            <from-outcome>xul-restore</from-outcome>
+            <to-view-id>/xul-restore.jsp</to-view-id>
+        </navigation-case>
+        <navigation-case>
+            <description>
+                Indicates to the NavigationHandler that the xul-apply.jsp
+                view must be displayed if the Action referenced by a
+                UICommand component on the svg.jsp view returns
+                the outcome "xul-apply".
+            </description>
+            <from-outcome>xul-apply</from-outcome>
+            <to-view-id>/xul-apply.jsp</to-view-id>
+        </navigation-case>
+        <navigation-case>
+            <description>
+                Indicates to the NavigationHandler that the xul-valid.jsp
+                view must be displayed if the Action referenced by a
+                UICommand component on the svg.jsp view returns
+                the outcome "xul-valid".
+            </description>
+            <from-outcome>xul-valid</from-outcome>
+            <to-view-id>/xul-valid.jsp</to-view-id>
+        </navigation-case>
+        <navigation-case>
+            <description>
+                Indicates to the NavigationHandler that the xul-update.jsp
+                view must be displayed if the Action referenced by a
+                UICommand component on the svg.jsp view returns
+                the outcome "xul-update".
+            </description>
+            <from-outcome>xul-update</from-outcome>
+            <to-view-id>/xul-update.jsp</to-view-id>
+        </navigation-case>
+        <navigation-case>
+            <description>
+                Indicates to the NavigationHandler that the xul-invoke.jsp
+                view must be displayed if the Action referenced by a
+                UICommand component on the svg.jsp view returns
+                the outcome "xul-invoke".
+            </description>
+            <from-outcome>xul-invoke</from-outcome>
+            <to-view-id>/xul-invoke.jsp</to-view-id>
+        </navigation-case>
+        <navigation-case>
+            <description>
+                Indicates to the NavigationHandler that the xul-render.jsp
+                view must be displayed if the Action referenced by a
+                UICommand component on the svg.jsp view returns
+                the outcome "xul-render".
+            </description>
+            <from-outcome>xul-render</from-outcome>
+            <to-view-id>/xul-render.jsp</to-view-id>
+        </navigation-case>
+    </navigation-rule>
+    <navigation-rule>
+        <description>
+            The decision rule used by the NavigationHandler to
+            determine which view must be displayed after the
+            current view, xul-restore.jsp is processed.
+        </description>
+        <from-view-id>/xul-restore.jsp</from-view-id>
+        <navigation-case>
+            <description>
+                Indicates to the NavigationHandler that the svg.jsp
+                view must be displayed if the Action referenced by a
+                UICommand component on the xul-restore.jsp view returns
+                the outcome "xul-back".
+            </description>
+            <from-outcome>xul-back</from-outcome>
+            <to-view-id>/svg.jsp</to-view-id>
+        </navigation-case>
+    </navigation-rule>
+    <navigation-rule>
+        <description>
+            The decision rule used by the NavigationHandler to
+            determine which view must be displayed after the
+            current view, xul-apply.jsp is processed.
+        </description>
+        <from-view-id>/xul-apply.jsp</from-view-id>
+        <navigation-case>
+            <description>
+                Indicates to the NavigationHandler that the svg.jsp
+                view must be displayed if the Action referenced by a
+                UICommand component on the xul-apply.jsp view returns
+                the outcome "xul-back".
+            </description>
+            <from-outcome>xul-back</from-outcome>
+            <to-view-id>/svg.jsp</to-view-id>
+        </navigation-case>
+    </navigation-rule>
+    <navigation-rule>
+        <description>
+            The decision rule used by the NavigationHandler to
+            determine which view must be displayed after the
+            current view, xul-valid.jsp is processed.
+        </description>
+        <from-view-id>/xul-valid.jsp</from-view-id>
+        <navigation-case>
+            <description>
+                Indicates to the NavigationHandler that the svg.jsp
+                view must be displayed if the Action referenced by a
+                UICommand component on the xul-valid.jsp view returns
+                the outcome "xul-back".
+            </description>
+            <from-outcome>xul-back</from-outcome>
+            <to-view-id>/svg.jsp</to-view-id>
+        </navigation-case>
+    </navigation-rule>
+    <navigation-rule>
+        <description>
+            The decision rule used by the NavigationHandler to
+            determine which view must be displayed after the
+            current view, xul-update.jsp is processed.
+        </description>
+        <from-view-id>/xul-update.jsp</from-view-id>
+        <navigation-case>
+            <description>
+                Indicates to the NavigationHandler that the svg.jsp
+                view must be displayed if the Action referenced by a
+                UICommand component on the xul-update.jsp view returns
+                the outcome "xul-back".
+            </description>
+            <from-outcome>xul-back</from-outcome>
+            <to-view-id>/svg.jsp</to-view-id>
+        </navigation-case>
+    </navigation-rule>
+    <navigation-rule>
+        <description>
+            The decision rule used by the NavigationHandler to
+            determine which view must be displayed after the
+            current view, xul-invoke.jsp is processed.
+        </description>
+        <from-view-id>/xul-invoke.jsp</from-view-id>
+        <navigation-case>
+            <description>
+                Indicates to the NavigationHandler that the svg.jsp
+                view must be displayed if the Action referenced by a
+                UICommand component on the xul-invoke.jsp view returns
+                the outcome "xul-back".
+            </description>
+            <from-outcome>xul-back</from-outcome>
+            <to-view-id>/svg.jsp</to-view-id>
+        </navigation-case>
+    </navigation-rule>
+    <navigation-rule>
+        <description>
+            The decision rule used by the NavigationHandler to
+            determine which view must be displayed after the
+            current view, xul-render.jsp is processed.
+        </description>
+        <from-view-id>/xul-render.jsp</from-view-id>
+        <navigation-case>
+            <description>
+                Indicates to the NavigationHandler that the svg.jsp
+                view must be displayed if the Action referenced by a
+                UICommand component on the xul-render.jsp view returns
+                the outcome "xul-back".
+            </description>
+            <from-outcome>xul-back</from-outcome>
+            <to-view-id>/svg.jsp</to-view-id>
+        </navigation-case>
+    </navigation-rule>
+</faces-config>
diff --git a/jsf-demo/archive/renderkits/src/java/demo/model/Resources.properties b/jsf-demo/archive/renderkits/src/java/demo/model/Resources.properties
new file mode 100644
index 0000000..bd41133
--- /dev/null
+++ b/jsf-demo/archive/renderkits/src/java/demo/model/Resources.properties
@@ -0,0 +1,91 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
+background1=This demo demonstrates the use of multiple <i>RenderKits</i> in a JSF application.\n  The demo application consists of three <i>RenderKits</i>: <i>Standard HTML RenderKit,  SVG RenderKit,  XUL RenderKit</i> - used to render their respective markups.  The markup for the page you are viewing has been produced with the <i>Standard HTML RenderKit</i>.
+background2=The theme of the demo is the JSF <i>Lifecycle</i>. The <i>SVG</i> page will display a diagram of the JSF <i>Lifecycle</i> phases.  Pressing any of the buttons on the lower left corner of the diagram, produces an animation that shows how a <i>request</i> flows through each of the JSF <i>Lifecycle</i> phases.   The <i>SVG</i> markup for the <i>SVG</i> page is produced from an <i>SVGRenderKit</i>.  Pressing on any of the <i>Lifecycle</i> phase boxes, performs an <i>HTTP post</i> [...]
+
+detail1=The <i>HTTP post</i> mechanism is built into <i>HTML</i> (it happens when a form submit occurs).  Markup languages such as <i>SVG</i> or <i>XUL</i> do not have the built in <i>HTTP post</i> mechanism.  <i>JavaScript</i> is used to register an event handler, (<i>onclick</i> for example), so that when the graphic representation of the button is pressed, an event is triggered.  The <i>onclick</i> event handler collects the form input data, builds a <i>post data</i> string, and sends [...]
+restoreHeader=Restore View Phase
+restoreCaption=Restore View Detail 
+restoreDescription1=Examine the <html:i>FacesContext</html:i> instance for the current request. If it already contains a <html:i>UIViewRoot</html:i>:
+restoreDescription2=<html:ul><html:li>Set the locale on this UIViewRoot to the value from the request's locale.</html:li></html:ul>
+restoreDescription3=Derive the <html:i>view identifier</html:i> from the request.
+restoreDescription4=Determine if the request is a <html:i>postback</html:i>.
+restoreDescription5=If the request is a <html:i>postback</html:i>, restore the view using the <html:i>view identifier</html:i>.
+restoreDescription6=If the request is not a <html:i>postback</html:i>:
+restoreDescription7=<html:ul><html:li>create a new view using the <html:i>view identifier</html:i>.</html:li><html:li>set the FacesContext.renderResponse indicator - this will signal that control should transfer to Render Response Phase.</html:li></html:ul>
+restoreDescription8=Store the restored or created view in the FacesContext.
+
+applyHeader=Apply Request Values Phase
+applyCaption=Apply Request Detail 
+applyDescription1=The purpose of the <html:i>Apply Request Values</html:i> phase of the request processing lifecycle is to give each component the opportunity to update its current state from the information included in the current request (parameters, headers, cookies, and so on).
+applyDescription2=During the <html:i>Apply Request Values</html:i> phase, each component's <html:i>decode</html:i> method is called.  For <html:i>UIInput</html:i> components, data conversion occurs. 
+applyDescription3=During the decoding of request values, some components perform special processing, including:
+applyDescription4=<html:ul><html:li>Components that implement ActionSource (such as UICommand), which recognize that they were activated, will queue an <html:b>ActionEvent</html:b>. The event will be delivered at the end of <html:i>Apply Request Values</html:i> phase, or at the end of <html:i>Invoke Application</html:i> phase, depending upon the state of the immediate property on the activated component.</html:li></html:ul>
+applyDescription5=<html:ul><html:li>Components that implement <html:b>EditableValueHolder</html:b> (such as UIInput), and whose <html:b>immediate</html:b> property is set to <html:b>true</html:b>, will cause the conversion and validation processing (including the potential to fire <html:b>ValueChangeEvent</html:b> events) that normally happens during <html:i>Process Validations</html:i> phase to occur during <html:i>Apply Request Values</html:i> phase instead.</html:li></html:ul>
+applyDescription6=At the end of this phase, all <html:b>EditableValueHolder</html:b> components in the component tree will have been updated with new submitted values included in this request (or enough data to reproduce incorrect input will have been stored, if there were conversion errors). In addition, conversion and validation will have been performed on <html:b>EditableValueHolder</html:b> components whose <html:b>immediate</html:b> property is set to <html:b>true</html:b>. Conversi [...]
+
+validHeader=Process Validations Phase
+validCaption=Process Validations Detail 
+validDescription1=As part of the creation of the view for this request, zero or more <html:b>Validator</html:b> instances may have been registered for each component. In addition, component classes themselves may implement validation logic in their <html:i>validate()</html:i> methods.
+validDescription2=During the <html:i>Process Validations</html:i> phase, each component's <html:i>processValidators()</html:i> method is called. Note that <html:b>EditableValueHolder</html:b> components whose <html:b>immediate</html:b> property is set to <html:b>true</html:b> will have had their conversion and validation processing performed during <html:i>Apply Request Values</html:i> phase. 
+validDescription3=During the processing of validations, events may have been queued by the components and/or Validators whose <html:i>validate()</html:i> method was invoked.
+validDescription4=At the end of this phase, all conversions and configured validations will have been completed. Conversions and Validations that failed will have caused messages to be enqueued via calls to the <html:i>addMessage()</html:i> method of the <html:i>FacesContext</html:i> instance for the current request, and the <html:b>valid</html:b> property on the corresponding components will have been set to <html:b>false</html:b>.
+
+updateHeader=Update Model Values Phase
+updateCaption=Update Model Values Detail 
+updateDescription1=If this phase of the request processing lifecycle is reached, it is assumed that the incoming request is syntactically and semantically valid (according to the validations that were performed), that the local value of every component in the component tree has been updated, and that it is now appropriate to update the application's model data in preparation for performing any application events that have been enqueued.
+updateDescription2=During the <html:i>Update Model Values</html:i> phase, each component's <html:i>processUpdates()</html:i> method is called.
+updateDescription3=During the processing of model updates, events may have been queued by the components whose <html:i>updateModel()</html:i> method was invoked.
+updateDescription4=At the end of this phase, all appropriate model data objects will have had their values updated to match the local value of the corresponding component, and the component local values will have been cleared.
+
+invokeHeader=Invoke Applications Phase
+invokeCaption=Invoke Applications Detail 
+invokeDescription1=If this phase of the request processing lifecycle is reached, it is assumed that all model updates have been completed, and any remaining event broadcast to the application needs to be performed.  The <html:i>processApplication()</html:i> method of the <html:i>UIViewRoot</html:i> instance is called, and this method will broadcast any queued events that specify a phase identifier of <html:b>PhaseId.INVOKE_APPLICATION</html:b>.
+invokeDescription2=The default <html:i>ActionListener</html:i> for the application will recieve the event(s) and invoke the application's <html:i>NavigationHandler</html:i>.  The application's <html:i>NavigationHandler</html:i> will determine the next view to be visited.
+invokeDescription3=Advanced applications (or application frameworks) may replace the default <html:i>ActionListener</html:i> instance by calling the <html:i>setActionListener()</html:i> method on the <html:i>Application</html:i> instance for this application.
+
+renderHeader=Render Response Phase
+renderCaption=Render Response Detail 
+renderDescription1=This phase accomplishes two things: 
+renderDescription2=<html:ul><html:li>Causes the response to be rendered to the client.</html:li> <html:li>Causes the state of the response to be saved for processing on subsequent requests.</html:li></html:ul>
+renderDescription3=The reason for bundling both of these responsibilities into this phase is that in JSP applications, the act of rendering the response may cause the view to be built, as the page renders. Thus, we can t save the state until the view is built, and we have to save the state before sending the response to the client to enable saving the state in the client.
+renderDescription4=JSF supports a range of approaches that JSF implementations may utilize in creating the response text that corresponds to the contents of the response view, including:
+renderDescription5=<html:ul><html:li>Deriving all of the response content directly from the results of the encoding methods (on either the components or the corresponding renderers) that are called.</html:li><html:li>Interleaving the results of component encoding with content that is dynamically generated by application programming logic.</html:li><html:li>Interleaving the results of component encoding with content that is copied from a static template resource.</html:li></html:ul>
diff --git a/jsf-demo/archive/renderkits/src/java/renderkits/components/svg/Line.java b/jsf-demo/archive/renderkits/src/java/renderkits/components/svg/Line.java
new file mode 100644
index 0000000..aae2c12
--- /dev/null
+++ b/jsf-demo/archive/renderkits/src/java/renderkits/components/svg/Line.java
@@ -0,0 +1,69 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package renderkits.components.svg;
+
+
+/**
+ * <p>{@link Line} is a JavaServer Faces component that renders
+ * a <code>SVG</code> markup for a rectangle.</p>
+ */
+
+public class Line extends Shape {
+
+    /** <p>The standard component type for this component.</p> */
+    public static final String COMPONENT_TYPE = "Line";
+
+
+    /** <p>The standard component family for this component.</p> */
+    public static final String COMPONENT_FAMILY = "Line";
+
+    public Line() {
+        super();
+    }
+
+
+    /** <p>Return the component family for this component. */
+    public String getFamily() {
+
+        return (COMPONENT_FAMILY);
+
+    }
+}
diff --git a/jsf-demo/archive/renderkits/src/java/renderkits/components/svg/Rectangle.java b/jsf-demo/archive/renderkits/src/java/renderkits/components/svg/Rectangle.java
new file mode 100644
index 0000000..f9ba996
--- /dev/null
+++ b/jsf-demo/archive/renderkits/src/java/renderkits/components/svg/Rectangle.java
@@ -0,0 +1,69 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package renderkits.components.svg;
+
+
+/**
+ * <p>{@link Rectangle} is a JavaServer Faces component that renders
+ * a <code>SVG</code> markup for a rectangle.</p>
+ */
+
+public class Rectangle extends Shape {
+
+    /** <p>The standard component type for this component.</p> */
+    public static final String COMPONENT_TYPE = "Rectangle";
+
+
+    /** <p>The standard component family for this component.</p> */
+    public static final String COMPONENT_FAMILY = "Rectangle";
+
+    public Rectangle() {
+        super();
+    }
+
+
+    /** <p>Return the component family for this component. */
+    public String getFamily() {
+
+        return (COMPONENT_FAMILY);
+
+    }
+}
diff --git a/jsf-demo/archive/renderkits/src/java/renderkits/components/svg/Shape.java b/jsf-demo/archive/renderkits/src/java/renderkits/components/svg/Shape.java
new file mode 100644
index 0000000..ffe4d6f
--- /dev/null
+++ b/jsf-demo/archive/renderkits/src/java/renderkits/components/svg/Shape.java
@@ -0,0 +1,52 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package renderkits.components.svg;
+
+import javax.faces.component.UIOutput;
+
+
+/** <B>Shape</B> is a base class for <code>SVG</code> shapes. */
+
+public abstract class Shape extends UIOutput {
+
+
+}
+
diff --git a/jsf-demo/archive/renderkits/src/java/renderkits/renderkit/SerializedView.java b/jsf-demo/archive/renderkits/src/java/renderkits/renderkit/SerializedView.java
new file mode 100644
index 0000000..6e454c3
--- /dev/null
+++ b/jsf-demo/archive/renderkits/src/java/renderkits/renderkit/SerializedView.java
@@ -0,0 +1,66 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package renderkits.renderkit;
+
+import java.io.Serializable;
+
+/**
+ * <p>Convenience struct for encapsulating tree structure and
+ * component state.</p>
+ */
+public class SerializedView extends Object implements Serializable {
+    private Object structure = null;
+    private Object state = null;
+
+    public SerializedView(Object newStructure, Object newState) {
+        structure = newStructure;
+        state = newState;
+    }
+
+    public Object getStructure() {
+        return structure;
+    }
+
+    public Object getState() {
+        return state;
+    }
+}
+
diff --git a/jsf-demo/archive/renderkits/src/java/renderkits/renderkit/svg/BaseRenderer.java b/jsf-demo/archive/renderkits/src/java/renderkits/renderkit/svg/BaseRenderer.java
new file mode 100644
index 0000000..6954448
--- /dev/null
+++ b/jsf-demo/archive/renderkits/src/java/renderkits/renderkit/svg/BaseRenderer.java
@@ -0,0 +1,91 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package renderkits.renderkit.svg;
+
+import javax.faces.component.UIComponent;
+import javax.faces.component.UIViewRoot;
+import javax.faces.context.FacesContext;
+import javax.faces.context.ResponseWriter;
+import javax.faces.render.Renderer;
+
+import java.io.IOException;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import renderkits.util.Util;
+
+/**
+ * <B>BaseRenderer</B> is a base class for implementing renderers
+ * for <code>SVGRenderKit</code>.
+ */
+
+public abstract class BaseRenderer extends Renderer {
+
+    protected static Logger logger =
+          Util.getLogger(Util.FACES_LOGGER + Util.RENDERKIT_LOGGER);
+
+    /** @return true if this renderer should render an id attribute. */
+    protected boolean shouldWriteIdAttribute(UIComponent component) {
+        String id;
+        return (null != (id = component.getId()) &&
+                !id.startsWith(UIViewRoot.UNIQUE_ID_PREFIX));
+    }
+
+    protected void writeIdAttributeIfNecessary(FacesContext context,
+                                               ResponseWriter writer,
+                                               UIComponent component) {
+        String id;
+        if (shouldWriteIdAttribute(component)) {
+            try {
+                writer.writeAttribute("id", component.getClientId(context),
+                                      "id");
+            } catch (IOException e) {
+                if (logger.isLoggable(Level.WARNING)) {
+                    // PENDING I18N
+                    logger.warning("Can't write ID attribute" + e.getMessage());
+                }
+            }
+        }
+    }
+
+
+}
+
diff --git a/jsf-demo/archive/renderkits/src/java/renderkits/renderkit/svg/ButtonRenderer.java b/jsf-demo/archive/renderkits/src/java/renderkits/renderkit/svg/ButtonRenderer.java
new file mode 100644
index 0000000..f00ccf0
--- /dev/null
+++ b/jsf-demo/archive/renderkits/src/java/renderkits/renderkit/svg/ButtonRenderer.java
@@ -0,0 +1,267 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+// ButtonRenderer.java
+
+package renderkits.renderkit.svg;
+
+import javax.faces.component.UICommand;
+import javax.faces.component.UIComponent;
+import javax.faces.component.UIForm;
+import javax.faces.context.FacesContext;
+import javax.faces.context.ResponseWriter;
+import javax.faces.event.ActionEvent;
+
+import java.io.IOException;
+import java.util.Map;
+import java.util.logging.Level;
+
+/**
+ * <B>ButtonRenderer</B> is a class that renders the current value of
+ * <code>UICommand<code> as a Button.
+ */
+
+public class ButtonRenderer extends BaseRenderer {
+
+    //
+    // Protected Constants
+    //
+
+    //
+    // Class Variables
+    //
+    private static final String FORM_HAS_COMMAND_LINK_ATTR =
+          "com.sun.faces.FORM_HAS_COMMAND_LINK_ATTR";
+
+    private static final String NO_COMMAND_LINK_FOUND_VALUE =
+          "com.sun.faces.NO_COMMAND_LINK_FOUND";
+
+    //
+    // Instance Variables
+    //
+
+    // Attribute Instance Variables
+
+    // Relationship Instance Variables
+
+    //
+    // Constructors and Initializers    
+    //
+
+    //
+    // Class methods
+    //
+
+    //
+    // General Methods
+    //
+
+    //
+    // Methods From Renderer
+    //
+
+    public void decode(FacesContext context, UIComponent component) {
+        if (context == null || component == null) {
+            // PENDING - i18n
+            throw new NullPointerException("'context' and/or 'component is null");
+        }
+        if (logger.isLoggable(Level.FINER)) {
+            logger.log(Level.FINER,
+                       "Begin decoding component " + component.getId());
+        }
+
+        // Was our command the one that caused this submission?
+        String clientId = component.getClientId(context);
+        Map<String, String> requestParameterMap = context.getExternalContext()
+              .getRequestParameterMap();
+        if (requestParameterMap.get(clientId) == null) {
+            return;
+        }
+
+        ActionEvent actionEvent = new ActionEvent(component);
+        component.queueEvent(actionEvent);
+
+        if (logger.isLoggable(Level.FINER)) {
+            logger.log(Level.FINER, "This command resulted in " +
+                                    "form submission  ActionEvent queued " +
+                                    actionEvent);
+        }
+        if (logger.isLoggable(Level.FINER)) {
+            logger.log(Level.FINER, "End decoding component " +
+                                    component.getId());
+        }
+        return;
+    }
+
+
+    public void encodeBegin(FacesContext context, UIComponent component)
+          throws IOException {
+        if (context == null || component == null) {
+            // PENDING - i18n
+            throw new NullPointerException(
+                  "'context' and/or 'component' is null");
+        }
+        if (logger.isLoggable(Level.FINER)) {
+            logger.log(Level.FINER, "Begin encoding component " +
+                                    component.getId());
+        }
+        // suppress rendering if "rendered" property on the component is
+        // false.
+        if (!component.isRendered()) {
+            if (logger.isLoggable(Level.FINER)) {
+                logger.log(Level.FINER, "End encoding component "
+                                        +
+                                        component.getId()
+                                        + " since rendered attribute "
+                                        +
+                                        "is set to false ");
+            }
+            return;
+        }
+
+        ResponseWriter writer = context.getResponseWriter();
+
+        // for text with rect positioning..
+        int dxi = 0, dyi = 0, xi = 0, yi = 0, heighti = 0;
+
+        String label = "";
+        Object value = ((UICommand) component).getValue();
+        if (value != null) {
+            label = value.toString();
+        }
+        writer.startElement("g", component);
+        writeIdAttributeIfNecessary(context, writer, component);
+
+        String type = (String) component.getAttributes().get("type");
+        if (type != null && type.equals("submit")) {
+            UIComponent root = context.getViewRoot();
+            UIComponent myForm = component;
+            while (!(myForm instanceof UIForm) && root != myForm) {
+                myForm = myForm.getParent();
+            }
+            String formMethodName = myForm.getClientId(context) + "_post(evt)";
+            writer.writeAttribute("onclick", formMethodName, "onclick");
+        } else {
+            String onclick = (String) component.getAttributes().get("onclick");
+            if (onclick != null) {
+                writer.writeAttribute("onclick", onclick, "onclick");
+            }
+        }
+        writer.writeText("\n    ", null);
+        writer.startElement("rect", component);
+        String width = (String) component.getAttributes().get("width");
+        if (width != null) {
+            writer.writeAttribute("width", width, "width");
+        }
+        String height = (String) component.getAttributes().get("height");
+        if (height != null) {
+            heighti = Integer.parseInt(height);
+            writer.writeAttribute("height", height, "height");
+        }
+        String x = (String) component.getAttributes().get("x");
+        if (x != null) {
+            xi = Integer.parseInt(x);
+            writer.writeAttribute("x", x, "x");
+        }
+        String y = (String) component.getAttributes().get("y");
+        if (y != null) {
+            yi = Integer.parseInt(y);
+            writer.writeAttribute("y", y, "y");
+        }
+        String dx = (String) component.getAttributes().get("dx");
+        if (dx != null) {
+            dxi = Integer.parseInt(dx);
+        }
+        String dy = (String) component.getAttributes().get("dy");
+        if (dy != null) {
+            dyi = Integer.parseInt(dy);
+        }
+        String rx = (String) component.getAttributes().get("rx");
+        if (rx != null) {
+            writer.writeAttribute("rx", rx, "rx");
+        }
+        String ry = (String) component.getAttributes().get("ry");
+        if (ry != null) {
+            writer.writeAttribute("ry", ry, "ry");
+        }
+        String style = (String) component.getAttributes().get("style");
+        if (style != null) {
+            writer.writeAttribute("style", style, "style");
+        }
+        writer.endElement("rect");
+        writer.writeText("\n    ", null);
+        int tx = xi + dxi;
+        int ty = yi + heighti - dyi;
+        writer.startElement("text", component);
+        writer.writeAttribute("x", new Integer(tx), null);
+        writer.writeAttribute("y", new Integer(ty), null);
+        writer.writeAttribute("text-anchor", "middle", null);
+        String labelStyle =
+              (String) component.getAttributes().get("labelStyle");
+        if (labelStyle != null) {
+            writer.writeAttribute("style", labelStyle, "labelStyle");
+        }
+        writer.writeText(label, null);
+        writer.endElement("text");
+        writer.writeText("\n", null);
+
+        if (logger.isLoggable(Level.FINER)) {
+            logger.log(Level.FINER, "End encoding component " +
+                                    component.getId());
+        }
+    }
+
+    public void encodeEnd(FacesContext context, UIComponent component)
+          throws IOException {
+        if (context == null || component == null) {
+            // PENDING - i18n
+            throw new NullPointerException(
+                  "'context' and/or 'component' is null");
+        }
+        ResponseWriter writer = context.getResponseWriter();
+        writer.endElement("g");
+        writer.writeText("\n", null);
+    }
+
+    //
+    // General Methods
+    //
+
+} // end of class ButtonRenderer
diff --git a/jsf-demo/archive/renderkits/src/java/renderkits/renderkit/svg/FormRenderer.java b/jsf-demo/archive/renderkits/src/java/renderkits/renderkit/svg/FormRenderer.java
new file mode 100644
index 0000000..f5ad31a
--- /dev/null
+++ b/jsf-demo/archive/renderkits/src/java/renderkits/renderkit/svg/FormRenderer.java
@@ -0,0 +1,297 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+// FormRenderer.java
+
+package renderkits.renderkit.svg;
+
+import javax.faces.FactoryFinder;
+import javax.faces.component.UIComponent;
+import javax.faces.component.UIForm;
+import javax.faces.context.FacesContext;
+import javax.faces.context.ResponseWriter;
+import javax.faces.lifecycle.Lifecycle;
+import javax.faces.lifecycle.LifecycleFactory;
+import javax.faces.webapp.FacesServlet;
+import javax.servlet.ServletContext;
+
+import java.io.IOException;
+import java.util.Map;
+import java.util.logging.Level;
+
+/**
+ * <B>FormRenderer</B> is a class that renders a <code>UIForm<code> as a Form.
+ * This class specifically renders <code>SVG</code> markup - a <code><g></code>
+ * element.  The element is rendered with the necessary attributes to facilitate
+ * a form submission.
+ */
+
+public class FormRenderer extends BaseRenderer {
+
+    private Lifecycle lifecycle = null;
+
+    private static final String RENDERED_SCRIPT = "demo.RENDERED_SCRIPT";
+
+    //
+    // Protected Constants
+    //
+
+    //
+    // Class Variables
+    //
+
+    //
+    // Instance Variables
+    //
+
+    // Attribute Instance Variables
+
+    // Relationship Instance Variables
+
+    //
+    // Constructors and Initializers    
+    //
+
+    public FormRenderer() {
+        super();
+    }
+
+    //
+    // Class methods
+    //
+
+    //
+    // General Methods
+    //
+
+    //
+    // Methods From Renderer
+    //
+
+    /**
+     * Determine if this form caused the submission.
+     * Install a <code>PhaseListener</code> that will listen for
+     * <code>XMLHttpRequest(s)</code>.
+     *
+     * @see ResponsePhaseListener
+     */
+    public void decode(FacesContext context, UIComponent component) {
+        // Was our form the one that was submitted?  If so, we need to set
+        // the indicator accordingly..
+        //
+        String clientId = component.getClientId(context);
+        if (logger.isLoggable(Level.FINER)) {
+            logger.log(Level.FINER,
+                       "Begin decoding component " + component.getId());
+        }
+        Map<String, String> requestParameterMap = context.getExternalContext()
+              .getRequestParameterMap();
+        if (requestParameterMap.containsKey(clientId)) {
+            ((UIForm) component).setSubmitted(true);
+        } else {
+            ((UIForm) component).setSubmitted(false);
+        }
+        if (logger.isLoggable(Level.FINER)) {
+            logger.log(Level.FINER,
+                       "End decoding component " + component.getId());
+        }
+        getLifecycle(context).addPhaseListener(new ResponsePhaseListener());
+    }
+
+
+    /** Render the starting <code><g></code> element. */
+    public void encodeBegin(FacesContext context, UIComponent component)
+          throws IOException {
+        String styleClass = null;
+
+        if (context == null || component == null) {
+            //PENDING - i18n
+            throw new NullPointerException(
+                  "'context' and/or 'component' is null");
+        }
+        if (logger.isLoggable(Level.FINER)) {
+            logger.log(Level.FINER, "Begin encoding component " +
+                                    component.getId());
+        }
+        // suppress rendering if "rendered" property on the component is
+        // false.
+        if (!component.isRendered()) {
+            if (logger.isLoggable(Level.FINER)) {
+                logger.log(Level.FINER, "Begin encoding component " +
+                                        component.getId() + " since " +
+                                        "rendered attribute is set to false ");
+            }
+            return;
+        }
+        ResponseWriter writer = context.getResponseWriter();
+
+        // Only render the main script elements once per request.
+        if (!context.getExternalContext().getRequestMap()
+              .containsKey(RENDERED_SCRIPT)) {
+            context.getExternalContext().getRequestMap().put(RENDERED_SCRIPT,
+                                                             Boolean.TRUE);
+            writer.startElement("script", component);
+            writer.writeAttribute("xlink:href",
+                                  context.getExternalContext()
+                                        .getRequestContextPath()
+                                  + "/src/script/http-svg.es", null);
+            writer.endElement("script");
+            writer.writeText("\n", null);
+            writer.startElement("script", component);
+            writer.writeAttribute("xlink:href",
+                                  context.getExternalContext()
+                                        .getRequestContextPath()
+                                  + "/src/script/lifecycle.es", null);
+            writer.endElement("script");
+            writer.writeText("\n", null);
+        }
+
+        writer.startElement("g", component);
+        writer.writeAttribute("id", component.getClientId(context), "clientId");
+        writer.writeAttribute("method", "post", null);
+        writer.writeAttribute("action", getActionStr(context), null);
+        String acceptcharset = null;
+        if (null != (acceptcharset = (String)
+              component.getAttributes().get("acceptcharset"))) {
+            writer.writeAttribute("accept-charset", acceptcharset,
+                                  "acceptcharset");
+        }
+
+        writer.writeText("\n", null);
+    }
+
+
+    /**
+     * <p>Return the value to be rendered as the <code>action</code> attribute
+     * of the form generated for this component.</p>
+     *
+     * @param context FacesContext for the response we are creating
+     */
+    private String getActionStr(FacesContext context) {
+        String viewId = context.getViewRoot().getViewId();
+        String actionURL =
+              context.getApplication().getViewHandler().
+                    getActionURL(context, viewId);
+        return (context.getExternalContext().encodeActionURL(actionURL));
+    }
+
+
+    /**
+     * Render the necessary <code>ECMAScript</code> to facilitate a
+     * form submission.  Render the closing <code><g></code> element.
+     */
+    public void encodeEnd(FacesContext context, UIComponent component)
+          throws IOException {
+        if (context == null || component == null) {
+            //PENDING - i18n
+            throw new NullPointerException(
+                  "'context' and/or 'component' is null");
+        }
+        // suppress rendering if "rendered" property on the component is
+        // false.
+        if (!component.isRendered()) {
+            if (logger.isLoggable(Level.FINER)) {
+                logger.log(Level.FINER, "End encoding component " +
+                                        component.getId() + " since " +
+                                        "rendered attribute is set to false ");
+            }
+            return;
+        }
+
+        context.getApplication().getViewHandler().writeState(context);
+
+        // Render the end tag for form
+        ResponseWriter writer = context.getResponseWriter();
+        writer.endElement("g");
+        writer.writeText("\n", null);
+        if (logger.isLoggable(Level.FINER)) {
+            logger.log(Level.FINER, "End encoding component " +
+                                    component.getId());
+        }
+
+        buildPost(context, component);
+    }
+
+    /** Helper method to render the <code>ECMAScript</code>. */
+    private void buildPost(FacesContext context, UIComponent component)
+          throws IOException {
+        ResponseWriter writer = context.getResponseWriter();
+        writer.startElement("script", component);
+        writer.writeText("<![CDATA[\n", null);
+        String formMethodName = component.getClientId(context) + "_post";
+        String formMethodText = "function " + formMethodName + "(evt) {\n";
+
+        // write out global variables
+
+        writer.writeText(formMethodText, null);
+        writer.writeText("  var control = evt.target;\n", null);
+        writer.writeText("  var form = getForm(control);\n", null);
+        writer.writeText("  var postData = getPostData(form, control);\n",
+                         null);
+        writer.writeText("  var url = \"", null);
+        writer.writeText(getActionStr(context), null);
+        writer.writeText("\";\n", null);
+        writer.writeText("  sendRequest(url, postData);\n", null);
+        writer.writeText("}\n", null);
+        writer.writeText("//]]>\n", null);
+        writer.endElement("script");
+    }
+
+    /** Helper method used to install <code>PhaseListener</code>. */
+    private Lifecycle getLifecycle(FacesContext context) {
+        if (null != lifecycle) {
+            return lifecycle;
+        }
+        LifecycleFactory lifecycleFactory = (LifecycleFactory)
+              FactoryFinder.getFactory(FactoryFinder.LIFECYCLE_FACTORY);
+        String lifecycleId =
+              ((ServletContext) context.getExternalContext().getContext())
+                    .getInitParameter
+                          (FacesServlet.LIFECYCLE_ID_ATTR);
+        if (lifecycleId == null) {
+            lifecycleId = LifecycleFactory.DEFAULT_LIFECYCLE;
+        }
+        lifecycle = lifecycleFactory.getLifecycle(lifecycleId);
+
+        return lifecycle;
+    }
+
+
+} // end of class FormRenderer
diff --git a/jsf-demo/archive/renderkits/src/java/renderkits/renderkit/svg/LineRenderer.java b/jsf-demo/archive/renderkits/src/java/renderkits/renderkit/svg/LineRenderer.java
new file mode 100644
index 0000000..2eba841
--- /dev/null
+++ b/jsf-demo/archive/renderkits/src/java/renderkits/renderkit/svg/LineRenderer.java
@@ -0,0 +1,166 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+// LineRenderer.java
+
+package renderkits.renderkit.svg;
+
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.context.ResponseWriter;
+
+import java.io.IOException;
+import java.util.logging.Level;
+
+/**
+ * <B>LineRenderer</B> is a class that renders an <code>SVG</code>
+ * Line.
+ */
+
+public class LineRenderer extends BaseRenderer {
+
+    //
+    // Protected Constants
+    //
+
+    //
+    // Class Variables
+    //
+    //
+    // Instance Variables
+    //
+
+    // Attribute Instance Variables
+
+    // Relationship Instance Variables
+
+    //
+    // Constructors and Initializers    
+    //
+
+    //
+    // Class methods
+    //
+
+    //
+    // General Methods
+    //
+
+    //
+    // Methods From Renderer
+    //
+
+    public void decode(FacesContext context, UIComponent component) {
+        if (context == null || component == null) {
+            // PENDING - i18n
+            throw new NullPointerException("'context' and/or 'component is null");
+        }
+    }
+
+    public void encodeBegin(FacesContext context, UIComponent component)
+          throws IOException {
+        if (context == null || component == null) {
+            // PENDING - i18n
+            throw new NullPointerException(
+                  "'context' and/or 'component' is null");
+        }
+        if (logger.isLoggable(Level.FINER)) {
+            logger.log(Level.FINER, "Begin encoding component " +
+                                    component.getId());
+        }
+        // suppress rendering if "rendered" property on the component is
+        // false.
+        if (!component.isRendered()) {
+            if (logger.isLoggable(Level.FINER)) {
+                logger.log(Level.FINER, "End encoding component "
+                                        +
+                                        component.getId()
+                                        + " since rendered attribute "
+                                        +
+                                        "is set to false ");
+            }
+            return;
+        }
+
+        ResponseWriter writer = context.getResponseWriter();
+
+        writer.startElement("line", component);
+        writeIdAttributeIfNecessary(context, writer, component);
+        String x1 = (String) component.getAttributes().get("x1");
+        if (x1 != null) {
+            writer.writeAttribute("x1", x1, "x1");
+        }
+        String y1 = (String) component.getAttributes().get("y1");
+        if (y1 != null) {
+            writer.writeAttribute("y1", y1, "y1");
+        }
+        String x2 = (String) component.getAttributes().get("x2");
+        if (x2 != null) {
+            writer.writeAttribute("x2", x2, "x2");
+        }
+        String y2 = (String) component.getAttributes().get("y2");
+        if (y2 != null) {
+            writer.writeAttribute("y2", y2, "y2");
+        }
+        String style = (String) component.getAttributes().get("style");
+        if (style != null) {
+            writer.writeAttribute("style", style, "style");
+        }
+        writer.writeText("\n    ", null);
+    }
+
+    public void encodeEnd(FacesContext context, UIComponent component)
+          throws IOException {
+        if (context == null || component == null) {
+            // PENDING - i18n
+            throw new NullPointerException(
+                  "'context' and/or 'component' is null");
+        }
+        ResponseWriter writer = context.getResponseWriter();
+
+        writer.endElement("line");
+        writer.writeText("\n", null);
+    }
+
+    //
+    // General Methods
+    //
+
+} // end of class LineRenderer
diff --git a/jsf-demo/archive/renderkits/src/java/renderkits/renderkit/svg/RectangleRenderer.java b/jsf-demo/archive/renderkits/src/java/renderkits/renderkit/svg/RectangleRenderer.java
new file mode 100644
index 0000000..054172f
--- /dev/null
+++ b/jsf-demo/archive/renderkits/src/java/renderkits/renderkit/svg/RectangleRenderer.java
@@ -0,0 +1,184 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+// RectangleRenderer.java
+
+package renderkits.renderkit.svg;
+
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.context.ResponseWriter;
+
+import java.io.IOException;
+import java.util.logging.Level;
+
+/**
+ * <B>RectangleRenderer</B> is a class that renders an <code>SVG</code>
+ * Rectangle.
+ */
+
+public class RectangleRenderer extends BaseRenderer {
+
+    //
+    // Protected Constants
+    //
+
+    //
+    // Class Variables
+    //
+    //
+    // Instance Variables
+    //
+
+    // Attribute Instance Variables
+
+    // Relationship Instance Variables
+
+    //
+    // Constructors and Initializers    
+    //
+
+    //
+    // Class methods
+    //
+
+    //
+    // General Methods
+    //
+
+    //
+    // Methods From Renderer
+    //
+
+    public void decode(FacesContext context, UIComponent component) {
+        if (context == null || component == null) {
+            // PENDING - i18n
+            throw new NullPointerException("'context' and/or 'component is null");
+        }
+    }
+
+
+    public void encodeBegin(FacesContext context, UIComponent component)
+          throws IOException {
+        if (context == null || component == null) {
+            // PENDING - i18n
+            throw new NullPointerException(
+                  "'context' and/or 'component' is null");
+        }
+        if (logger.isLoggable(Level.FINER)) {
+            logger.log(Level.FINER, "Begin encoding component " +
+                                    component.getId());
+        }
+        // suppress rendering if "rendered" property on the component is
+        // false.
+        if (!component.isRendered()) {
+            if (logger.isLoggable(Level.FINER)) {
+                logger.log(Level.FINER, "End encoding component "
+                                        +
+                                        component.getId()
+                                        + " since rendered attribute "
+                                        +
+                                        "is set to false ");
+            }
+            return;
+        }
+
+        ResponseWriter writer = context.getResponseWriter();
+
+        writer.startElement("g", component);
+        writer.writeText("\n    ", null);
+        writer.startElement("rect", component);
+        writeIdAttributeIfNecessary(context, writer, component);
+        String width = (String) component.getAttributes().get("width");
+        if (width != null) {
+            writer.writeAttribute("width", width, "width");
+        }
+        String height = (String) component.getAttributes().get("height");
+        if (height != null) {
+            writer.writeAttribute("height", height, "height");
+        }
+        String x = (String) component.getAttributes().get("x");
+        if (x != null) {
+            writer.writeAttribute("x", x, "x");
+        }
+        String y = (String) component.getAttributes().get("y");
+        if (y != null) {
+            writer.writeAttribute("y", y, "y");
+        }
+        String rx = (String) component.getAttributes().get("rx");
+        if (rx != null) {
+            writer.writeAttribute("rx", rx, "rx");
+        }
+        String ry = (String) component.getAttributes().get("ry");
+        if (ry != null) {
+            writer.writeAttribute("ry", ry, "ry");
+        }
+        String style = (String) component.getAttributes().get("style");
+        if (style != null) {
+            writer.writeAttribute("style", style, "style");
+        }
+        String onclick = (String) component.getAttributes().get("onclick");
+        if (onclick != null) {
+            writer.writeAttribute("onclick", onclick, "onclick");
+        }
+
+        writer.writeText("\n    ", null);
+    }
+
+    public void encodeEnd(FacesContext context, UIComponent component)
+          throws IOException {
+        if (context == null || component == null) {
+            // PENDING - i18n
+            throw new NullPointerException(
+                  "'context' and/or 'component' is null");
+        }
+        ResponseWriter writer = context.getResponseWriter();
+
+        writer.endElement("rect");
+        writer.writeText("\n    ", null);
+        writer.endElement("g");
+        writer.writeText("\n", null);
+    }
+
+    //
+    // General Methods
+    //
+
+} // end of class RectangleRenderer
diff --git a/jsf-demo/archive/renderkits/src/java/renderkits/renderkit/svg/ResponsePhaseListener.java b/jsf-demo/archive/renderkits/src/java/renderkits/renderkit/svg/ResponsePhaseListener.java
new file mode 100644
index 0000000..c09d651
--- /dev/null
+++ b/jsf-demo/archive/renderkits/src/java/renderkits/renderkit/svg/ResponsePhaseListener.java
@@ -0,0 +1,93 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package renderkits.renderkit.svg;
+
+import javax.faces.context.FacesContext;
+import javax.faces.event.PhaseEvent;
+import javax.faces.event.PhaseId;
+import javax.faces.event.PhaseListener;
+import javax.servlet.http.HttpServletResponse;
+
+import java.util.Map;
+
+/**
+ * This <code>PhaseListener</code> executes after Invoke Applications
+ * Phase of the request processing lifecycle.  It detects the presence
+ * of an <code>XMLHttpRequest</code> and:
+ * <ul><li>grabs the request URI from the request (this will be the
+ * URI of the new uocoming view) and adds it to the response;</li>
+ * </ul>
+ */
+public class ResponsePhaseListener implements PhaseListener {
+
+    private static final String XML_HTTP = "XML-HTTP";
+    private static final String VIEW_URI = "VIEW-URI";
+
+    public ResponsePhaseListener() {
+    }
+
+    public void afterPhase(PhaseEvent event) {
+        // Disregard requests that are not XMLHttpRequest(s) 
+        Map<String, String> requestHeaderMap =
+              event.getFacesContext().getExternalContext().
+                    getRequestHeaderMap();
+        if (requestHeaderMap.get(XML_HTTP) == null) {
+            return;
+        }
+        // If we're dealing with an XMLHttpRequest...
+        // Get the URI and stuff it in the response header.
+        FacesContext context = event.getFacesContext();
+        String viewId = context.getViewRoot().getViewId();
+        String actionURL = context.getApplication().getViewHandler()
+              .getActionURL(context, viewId);
+        HttpServletResponse response =
+              (HttpServletResponse) context.getExternalContext().getResponse();
+        response.setHeader("Cache-Control", "no-cache");
+        response.setHeader(VIEW_URI, actionURL);
+    }
+
+    public void beforePhase(PhaseEvent event) {
+    }
+
+    public PhaseId getPhaseId() {
+        return PhaseId.INVOKE_APPLICATION;
+    }
+}
diff --git a/jsf-demo/archive/renderkits/src/java/renderkits/renderkit/svg/SVGRenderKit.java b/jsf-demo/archive/renderkits/src/java/renderkits/renderkit/svg/SVGRenderKit.java
new file mode 100644
index 0000000..2c0aae1
--- /dev/null
+++ b/jsf-demo/archive/renderkits/src/java/renderkits/renderkit/svg/SVGRenderKit.java
@@ -0,0 +1,284 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package renderkits.renderkit.svg;
+
+import javax.faces.context.FacesContext;
+import javax.faces.context.ResponseStream;
+import javax.faces.context.ResponseWriter;
+import javax.faces.render.RenderKit;
+import javax.faces.render.Renderer;
+import javax.faces.render.ResponseStateManager;
+
+import java.io.IOException;
+import java.io.OutputStream;
+import java.io.Writer;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * <p><B>SVGRenderKit</B> is a class that houses a collection of <code>SVG</code>
+ * renderers.  It also creates the <code>ResponseWriter</code> used to write
+ * <code>SVG</code> markup.</p>
+ */
+public class SVGRenderKit extends RenderKit {
+
+//
+// Protected Constants
+//
+
+//
+// Class Variables
+//
+
+//
+// Instance Variables
+//
+    // used for ResponseWriter creation;
+    private static String SVG_CONTENT_TYPE = "image/svg+xml";
+    private static String APPLICATION_XML_CONTENT_TYPE = "application/xml";
+    private static String TEXT_XML_CONTENT_TYPE = "text/xml";
+    private static String ALL_MEDIA = "*/*";
+
+    private static String CHAR_ENCODING = "ISO-8859-1";
+    private static String CONTENT_TYPE_IS_SVG = "ContentTypeIsSVG";
+//
+// Ivars used during actual client lifetime
+//
+
+// Relationship Instance Variables
+
+    /**
+     * Keys are String renderer family.  Values are HashMaps.  Nested
+     * HashMap keys are Strings for the rendererType, and values are the
+     * Renderer instances themselves.
+     */
+
+    private HashMap<String, HashMap<Object, Renderer>> rendererFamilies;
+
+    private ResponseStateManager responseStateManager = null;
+//
+// Constructors and Initializers    
+//
+
+    public SVGRenderKit() {
+        super();
+        rendererFamilies = new HashMap<String, HashMap<Object, Renderer>>();
+    }
+
+    //
+    // Class methods
+    //
+
+    //
+    // General Methods
+    //
+
+    //
+    // Methods From RenderKit
+    //
+
+    public void addRenderer(String family, String rendererType,
+                            Renderer renderer) {
+        if (family == null || rendererType == null || renderer == null) {
+            // PENDING - i18n
+            String message = "Argument Error: One or more parameters are null.";
+            message = message + " family " + family + " rendererType " +
+                      rendererType + " renderer " + renderer;
+            throw new NullPointerException(message);
+
+        }
+        HashMap<Object, Renderer> renderers = null;
+
+        synchronized (rendererFamilies) {
+            if (null == (renderers = rendererFamilies.get(family))) {
+                rendererFamilies
+                      .put(family, renderers = new HashMap<Object, Renderer>());
+            }
+            renderers.put(rendererType, renderer);
+        }
+    }
+
+
+    public Renderer getRenderer(String family, String rendererType) {
+
+        if (rendererType == null || family == null) {
+            // PENDING - i18n
+            String message = "Argument Error: One or more parameters are null.";
+            message = message + " family " + family + " rendererType " +
+                      rendererType;
+            throw new NullPointerException(message);
+        }
+
+        HashMap<Object, Renderer> renderers = null;
+        Renderer renderer = null;
+
+        if (null != (renderers = rendererFamilies.get(family))) {
+            renderer = renderers.get(rendererType);
+        }
+
+        return renderer;
+    }
+
+
+    public synchronized ResponseStateManager getResponseStateManager() {
+        if (responseStateManager == null) {
+            responseStateManager = new SVGResponseStateManager();
+        }
+        return responseStateManager;
+    }
+
+
+    public ResponseWriter createResponseWriter(Writer writer,
+                                               String desiredContentTypeList,
+                                               String characterEncoding) {
+        if (writer == null) {
+            return null;
+        }
+        String contentType = null;
+        FacesContext context = FacesContext.getCurrentInstance();
+
+        String [] supportedTypes =
+              {SVG_CONTENT_TYPE, APPLICATION_XML_CONTENT_TYPE,
+               TEXT_XML_CONTENT_TYPE};
+        String [] desiredTypes = null;
+
+        // Obtain the desired content type list
+        // first crack is the passed in list
+        if (null == desiredContentTypeList) {
+            // second crack is the response content type
+            desiredContentTypeList =
+                  context.getExternalContext().getResponseContentType();
+        }
+        if (null == desiredContentTypeList) {
+            // third crack is the Accept header.
+            desiredContentTypeList = (String)
+                  context.getExternalContext().getRequestHeaderMap()
+                        .get("Accept");
+        }
+        // fourth, default to image/svg+xml 
+        if (null == desiredContentTypeList ||
+            desiredContentTypeList.equals(ALL_MEDIA)) {
+            desiredContentTypeList = SVG_CONTENT_TYPE;
+        }
+
+        if (null != desiredContentTypeList) {
+            Map<String, Object> requestMap =
+                  context.getExternalContext().getRequestMap();
+
+            desiredTypes = contentTypeSplit(desiredContentTypeList);
+            String curContentType = null, curDesiredType = null;
+
+            // For each entry in the desiredTypes array, look for a match in 
+            // the supportedTypes array
+            for (int i = 0; i < desiredTypes.length; i++) {
+                curDesiredType = desiredTypes[i];
+                for (int j = 0; j < supportedTypes.length; j++) {
+                    curContentType = supportedTypes[j].trim();
+                    if (-1 != curDesiredType.indexOf(curContentType)) {
+                        contentType = curDesiredType;
+                        break;
+                    }
+                }
+                if (null != contentType) {
+                    break;
+                }
+            }
+            // If none of the contentTypes about which we know was in
+            // desiredContentTypeList
+            if (null == contentType) {
+                // PENDING - i18n
+                throw new IllegalArgumentException("Unrecognized Content Type.");
+            }
+        } else {
+            // there was no argument contentType list, or Accept header
+            contentType = SVG_CONTENT_TYPE;
+        }
+
+        if (characterEncoding == null) {
+            characterEncoding = CHAR_ENCODING;
+        }
+
+        return new SVGResponseWriter(writer, contentType, characterEncoding);
+    }
+
+    private String[] contentTypeSplit(String contentTypeString) {
+        String [] result = contentTypeString.split(",");
+        for (int i = 0; i < result.length; i++) {
+            int semicolon = result[i].indexOf(";");
+            if (-1 != semicolon) {
+                result[i] = result[i].substring(0, semicolon);
+            }
+        }
+        return result;
+    }
+
+
+    public ResponseStream createResponseStream(OutputStream out) {
+        final OutputStream output = out;
+        return new ResponseStream() {
+            public void write(int b) throws IOException {
+                output.write(b);
+            }
+
+
+            public void write(byte b[]) throws IOException {
+                output.write(b);
+            }
+
+
+            public void write(byte b[], int off, int len) throws IOException {
+                output.write(b, off, len);
+            }
+
+
+            public void flush() throws IOException {
+                output.flush();
+            }
+
+
+            public void close() throws IOException {
+                output.close();
+            }
+        };
+    }
+
+} // end of class SVGRenderKit
+
diff --git a/jsf-demo/archive/renderkits/src/java/renderkits/renderkit/svg/SVGResponseStateManager.java b/jsf-demo/archive/renderkits/src/java/renderkits/renderkit/svg/SVGResponseStateManager.java
new file mode 100644
index 0000000..8613107
--- /dev/null
+++ b/jsf-demo/archive/renderkits/src/java/renderkits/renderkit/svg/SVGResponseStateManager.java
@@ -0,0 +1,332 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package renderkits.renderkit.svg;
+
+import javax.faces.FacesException;
+import javax.faces.application.StateManager;
+import javax.faces.context.FacesContext;
+import javax.faces.context.ResponseWriter;
+import javax.faces.render.ResponseStateManager;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.util.Map;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import java.util.zip.GZIPInputStream;
+import java.util.zip.GZIPOutputStream;
+
+import renderkits.renderkit.SerializedView;
+import renderkits.util.Base64;
+import renderkits.util.ByteArrayGuard;
+import renderkits.util.Util;
+
+/**
+ * <p><strong>SVGResponseStateManager</strong> is the helper class to
+ * {@link javax.faces.application.StateManager} that knows the specific
+ * rendering technology being used to generate the response.  This class
+ * will write out state using hidden <code>SVG <text></code> elements.
+ */
+public class SVGResponseStateManager extends ResponseStateManager {
+
+    //
+    // Protected Constants
+    //
+
+    // Log instance for this class
+    private static final Logger logger =
+          Util.getLogger(Util.FACES_LOGGER + Util.RENDERKIT_LOGGER);
+
+    private static final String FACES_VIEW_STATE =
+          "com.sun.faces.FACES_VIEW_STATE";
+
+    private static final String COMPRESS_STATE_PARAM =
+          "com.sun.faces.COMPRESS_STATE";
+    //
+    // Class Variables
+    //
+
+    //
+    // Instance Variables
+    //
+    private Boolean compressStateSet = null;
+    private ByteArrayGuard byteArrayGuard = null;
+
+    //
+    // Ivars used during actual client lifetime
+    //
+
+    // Relationship Instance Variables
+
+    //
+    // Constructors and Initializers    
+    //
+
+    public SVGResponseStateManager() {
+        super();
+        byteArrayGuard = new ByteArrayGuard();
+    }
+
+    //
+    // Class methods
+    //
+
+    //
+    // General Methods
+    //
+
+    //
+    // Methods From ResponseStateManager
+    //
+
+    public Object getState(FacesContext context, String viewId) {
+        Object stateArray[] = {getTreeStructure(context, viewId),
+                               getComponentState(context)};
+        return stateArray;
+    }
+
+    public boolean isPostback(FacesContext context) {
+        boolean result = context.getExternalContext().getRequestParameterMap().
+              containsKey(javax.faces.render.ResponseStateManager.VIEW_STATE_PARAM);
+        return result;
+    }
+
+    public void writeState(FacesContext context,
+                           Object state) throws IOException {
+        SerializedView view = null;
+        if (state instanceof SerializedView) {
+            view = (SerializedView) state;
+        } else {
+            if (state instanceof Object[]) {
+                Object[] stateArray = (Object[]) state;
+                if (2 == stateArray.length) {
+                    StateManager stateManager =
+                          context.getApplication().getStateManager();
+                    view = new SerializedView(stateArray[0],
+                                              stateArray[1]);
+                } else {
+                    //PENDING - I18N
+                    if (logger.isLoggable(Level.SEVERE)) {
+                        logger.log(Level.SEVERE,
+                                   "State is not an expected array of length 2.");
+                    }
+                    throw new IOException(
+                          "State is not an expected array of length 2.");
+                }
+            } else {
+                //PENDING - I18N
+                if (logger.isLoggable(Level.SEVERE)) {
+                    logger.log(Level.SEVERE,
+                               "State is not an expected array of length 2.");
+                }
+                throw new IOException(
+                      "State is not an expected array of length 2.");
+            }
+        }
+        writeState(context, view);
+    }
+
+    private void writeState(FacesContext context, SerializedView view)
+          throws IOException {
+        String hiddenField = null;
+        StateManager stateManager = context.getApplication().getStateManager();
+        ResponseWriter writer = context.getResponseWriter();
+
+        writer.startElement("text", context.getViewRoot());
+        writer.writeAttribute("name",
+                              javax.faces.render.ResponseStateManager.VIEW_STATE_PARAM,
+                              null);
+        writer.writeAttribute("id",
+                              javax.faces.render.ResponseStateManager.VIEW_STATE_PARAM,
+                              null);
+
+
+        if (stateManager.isSavingStateInClient(context)) {
+            GZIPOutputStream zos = null;
+            ObjectOutputStream oos = null;
+            boolean compress = isCompressStateSet(context);
+
+            ByteArrayOutputStream bos = new ByteArrayOutputStream();
+            if (compress) {
+                if (logger.isLoggable(Level.FINE)) {
+                    logger.fine("Compressing state before saving..");
+                }
+                zos = new GZIPOutputStream(bos);
+                oos = new ObjectOutputStream(zos);
+            } else {
+                oos = new ObjectOutputStream(bos);
+            }
+            oos.writeObject(view.getStructure());
+            oos.writeObject(view.getState());
+            oos.close();
+            if (compress) {
+                zos.close();
+            }
+
+            byte[] securedata = byteArrayGuard.encrypt(context,
+                                                       bos.toByteArray());
+            bos.close();
+            String valueToWrite = (new String(Base64.encode(securedata),
+                                              "ISO-8859-1"));
+            writer.writeAttribute("value", valueToWrite, null);
+            writer.writeAttribute("visibility", "hidden", "visibility");
+            writer.writeText(valueToWrite, null);
+        } else {
+            writer.writeAttribute("value", view.getStructure(), null);
+            writer.writeAttribute("visibility", "hidden", "visibility");
+            writer.writeText(view.getStructure(), null);
+        }
+        writer.endElement("text");
+        writer.writeText("\n", null);
+
+        // write this out regardless of state saving mode
+        // Only write it out if there is a default render kit Identifier specified,
+        // and this render kit identifier is not the default.
+        String result = context.getApplication().getDefaultRenderKitId();
+        if ((null != result && !result.equals("SVG")) || result == null) {
+            writer.startElement("text", context.getViewRoot());
+            writer.writeAttribute("name",
+                                  ResponseStateManager.RENDER_KIT_ID_PARAM,
+                                  "name");
+            writer.writeAttribute("id",
+                                  ResponseStateManager.RENDER_KIT_ID_PARAM,
+                                  "id");
+            writer.writeAttribute("value", "SVG", "value");
+            writer.writeAttribute("visibility", "hidden", "visibility");
+            writer.writeText("SVG", null);
+            writer.endElement("text");
+            writer.writeText("\n", null);
+        }
+    }
+
+    private Object getComponentState(FacesContext context) {
+        // requestMap is a local variable so we don't need to synchronize
+        Map<String, Object> requestMap =
+              context.getExternalContext().getRequestMap();
+        Object state = requestMap.get(FACES_VIEW_STATE);
+        // null out the temporary attribute, since we don't need it anymore.
+        requestMap.remove(FACES_VIEW_STATE);
+        return state;
+    }
+
+    private Object getTreeStructure(FacesContext context,
+                                    String treeId) {
+        StateManager stateManager = context.getApplication().getStateManager();
+
+        Map<String, String> requestParamMap = context.getExternalContext()
+              .getRequestParameterMap();
+
+        String viewString = requestParamMap.get(
+              javax.faces.render.ResponseStateManager.VIEW_STATE_PARAM);
+        Object structure = null;
+        if (viewString == null) {
+            return null;
+        }
+
+        if (stateManager.isSavingStateInClient(context)) {
+            Object state = null;
+            ByteArrayInputStream bis = null;
+            GZIPInputStream gis = null;
+            ObjectInputStream ois = null;
+            boolean compress = isCompressStateSet(context);
+
+            try {
+                byte[] bytes = byteArrayGuard.decrypt(context,
+                                                      (Base64.decode(viewString.getBytes())));
+                bis = new ByteArrayInputStream(bytes);
+                if (isCompressStateSet(context)) {
+                    if (logger.isLoggable(Level.FINE)) {
+                        logger.fine("Deflating state before restoring..");
+                    }
+                    gis = new GZIPInputStream(bis);
+                    ois = new ObjectInputStream(gis);
+                } else {
+                    ois = new ObjectInputStream(bis);
+                }
+                structure = ois.readObject();
+                state = ois.readObject();
+                Map<String, Object> requestMap =
+                      context.getExternalContext().getRequestMap();
+                // store the state object temporarily in request scope
+                // until it is processed by getComponentState
+                // which resets it.
+                requestMap.put(FACES_VIEW_STATE, state);
+                bis.close();
+                if (compress) {
+                    gis.close();
+                }
+                ois.close();
+            } catch (java.io.OptionalDataException ode) {
+                logger.log(Level.SEVERE, ode.getMessage(), ode);
+                throw new FacesException(ode);
+            } catch (java.lang.ClassNotFoundException cnfe) {
+                logger.log(Level.SEVERE, cnfe.getMessage(), cnfe);
+                throw new FacesException(cnfe);
+            } catch (java.io.IOException iox) {
+                logger.log(Level.SEVERE, iox.getMessage(), iox);
+                throw new FacesException(iox);
+            }
+        } else {
+            structure = viewString;
+        }
+        return structure;
+    }
+
+    private boolean isCompressStateSet(FacesContext context) {
+        if (null != compressStateSet) {
+            return compressStateSet.booleanValue();
+        }
+        compressStateSet = Boolean.TRUE;
+
+        String compressStateParam = context.getExternalContext().
+              getInitParameter(COMPRESS_STATE_PARAM);
+        if (compressStateParam != null) {
+            compressStateSet = Boolean.valueOf(compressStateParam);
+        }
+        return compressStateSet.booleanValue();
+    }
+
+
+} // end of class SVGResponseStateManager
+
diff --git a/jsf-demo/archive/renderkits/src/java/renderkits/renderkit/svg/SVGResponseWriter.java b/jsf-demo/archive/renderkits/src/java/renderkits/renderkit/svg/SVGResponseWriter.java
new file mode 100644
index 0000000..2c5258a
--- /dev/null
+++ b/jsf-demo/archive/renderkits/src/java/renderkits/renderkit/svg/SVGResponseWriter.java
@@ -0,0 +1,553 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package renderkits.renderkit.svg;
+
+import javax.faces.FacesException;
+import javax.faces.component.UIComponent;
+import javax.faces.context.ResponseWriter;
+
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.io.Writer;
+
+import renderkits.util.Util;
+
+
+/**
+ * <p><strong>SVGResponseWriter</strong> is an <code>SVG</code> specific implementation
+ * of the <code>ResponseWriter</code> abstract class.
+ */
+public class SVGResponseWriter extends ResponseWriter {
+
+    // Content Type for this Writer.
+    //
+    private String contentType = "image/svg+xml";
+
+    // Character encoding of that Writer - this may be null
+    // if the encoding isn't known.
+    //
+    private String encoding = null;
+
+    // Writer to use for output;
+    //
+    private Writer writer = null;
+
+    // True when we need to close a start tag
+    //
+    private boolean closeStart;
+
+    // True when we shouldn't be escaping output (basically,
+    // inside of <script> and <style> elements).
+    //
+    private boolean dontEscape;
+
+    // Internal buffer used when outputting properly escaped information
+    // using Util class.
+    //
+    private char[] buffer = new char[1028];
+    private char[] charHolder = new char[1];
+
+
+    /**
+     * Constructor sets the <code>ResponseWriter</code> and
+     * encoding.
+     *
+     * @param writer      the <code>ResponseWriter</code>
+     * @param contentType the content type.
+     * @param encoding    the character encoding.
+     *
+     * @throws if the encoding is not recognized.
+     */
+    public SVGResponseWriter(Writer writer, String contentType, String encoding)
+          throws FacesException {
+        this.writer = writer;
+
+        if (null != contentType) {
+            this.contentType = contentType;
+        }
+        this.encoding = encoding;
+
+        // Check the character encoding
+        try {
+            Util.validateEncoding(encoding);
+        } catch (UnsupportedEncodingException e) {
+            // PENDING i18n
+            throw new IllegalArgumentException(
+                  "Unrecognized Character Encoding.");
+        }
+    }
+
+
+    /** @return the content type for this ResponseWriter. */
+    public String getContentType() {
+        return contentType;
+    }
+
+
+    /**
+     * @return the character encoding, such as "ISO-8859-1" for this
+     *         ResponseWriter.  Refer to:
+     *         <a href="http://www.iana.org/assignments/character-sets">theIANA</a>
+     *         for a list of character encodings.
+     */
+    public String getCharacterEncoding() {
+        return encoding;
+    }
+
+
+    /**
+     * <p>Write the text that should begin a response.</p>
+     *
+     * @throws IOException if an input/output error occurs
+     */
+    public void startDocument() throws IOException {
+        // do nothing;
+    }
+
+
+    /** Output the text for the end of a document. */
+    public void endDocument() throws IOException {
+        writer.flush();
+    }
+
+
+    /**
+     * Flush any buffered output to the contained writer.
+     *
+     * @throws IOException if an input/output error occurs.
+     */
+    public void flush() throws IOException {
+        // close any previously started element, if necessary
+        closeStartIfNecessary();
+    }
+
+
+    /**
+     * <p>Write the start of an element, up to and including the
+     * element name.  Clients call <code>writeAttribute()</code> or
+     * <code>writeURIAttribute()</code> methods to add attributes after
+     * calling this method.
+     *
+     * @param name                Name of the starting element
+     * @param componentForElement The UIComponent instance that applies to this
+     *                            element.  This argument may be <code>null</code>.
+     *
+     * @throws IOException          if an input/output error occurs
+     * @throws NullPointerException if <code>name</code>
+     *                              is <code>null</code>
+     */
+    public void startElement(String name, UIComponent componentForElement)
+          throws IOException {
+        if (name == null) {
+            // PENDING i18n
+            throw new NullPointerException(
+                  "Argument Error: One or more parameters are null.");
+        }
+        closeStartIfNecessary();
+        char firstChar = name.charAt(0);
+        if ((firstChar == 's') ||
+            (firstChar == 'S')) {
+            if ("script".equalsIgnoreCase(name) ||
+                "style".equalsIgnoreCase(name)) {
+                dontEscape = true;
+            }
+        }
+
+
+        writer.write("<");
+        writer.write(name);
+        closeStart = true;
+    }
+
+
+    // PENDING - This is a very naive implementaiton
+
+        public void startCDATA() throws IOException {
+            dontEscape = true;
+            writer.write("!<CDATA[[");
+        }
+        public void endCDATA() throws IOException {
+            writer.write("]]>");
+            dontEscape = false;
+        }
+
+    
+    /**
+     * <p>Write the end of an element. This method will first
+     * close any open element created by a call to
+     * <code>startElement()</code>.
+     *
+     * @param name Name of the element to be ended
+     *
+     * @throws IOException          if an input/output error occurs
+     * @throws NullPointerException if <code>name</code>
+     *                              is <code>null</code>
+     */
+    public void endElement(String name) throws IOException {
+        if (name == null) {
+            // PENDING - i18n
+            throw new NullPointerException(
+                  "Argument Error: One or more parameters are null.");
+        }
+
+        // always turn escaping back on once an element ends
+        dontEscape = false;
+        // See if we need to close the start of the last element
+        if (closeStart) {
+            writer.write(">");
+            closeStart = false;
+        }
+
+        writer.write("</");
+        writer.write(name);
+        writer.write(">");
+    }
+
+
+    /**
+     * <p>Write a properly escaped attribute name and the corresponding
+     * value.  The value text will be converted to a String if
+     * necessary.  This method may only be called after a call to
+     * <code>startElement()</code>, and before the opened element has been
+     * closed.</p>
+     *
+     * @param name                  Attribute name to be added
+     * @param value                 Attribute value to be added
+     * @param componentPropertyName The name of the component property to
+     *                              which this attribute argument applies.  This argument may be
+     *                              <code>null</code>.
+     *
+     * @throws IllegalStateException if this method is called when there
+     *                               is no currently open element
+     * @throws IOException           if an input/output error occurs
+     * @throws NullPointerException  if <code>name</code> is <code>null</code>
+     */
+    public void writeAttribute(String name, Object value,
+                               String componentPropertyName)
+          throws IOException {
+        if (name == null) {
+            // PENDING i18n
+            throw new NullPointerException(
+                  "Argument Error: One or more parameters are null.");
+        }
+        if (value == null) {
+            return;
+        }
+
+        Class valueClass = value.getClass();
+
+        // Output Boolean values specially
+        if (valueClass == Boolean.class) {
+            if (Boolean.TRUE.equals(value)) {
+                //PENDING (horwat) using String as a result of
+                //Tomcat char writer ArrayIndexOutOfBoundsException (3584)
+                writer.write(" ");
+                writer.write(name);
+            } else {
+                // Don't write anything for "false" booleans
+            }
+        } else {
+            writer.write(" ");
+            writer.write(name);
+            writer.write("=\"");
+
+            // write the attribute value
+            Util.writeAttribute(writer, buffer, value.toString());
+            writer.write("\"");
+        }
+    }
+
+
+    /**
+     * <p>Write a properly encoded URI attribute name and the corresponding
+     * value. The value text will be converted to a String if necessary).
+     * This method may only be called after a call to
+     * <code>startElement()</code>, and before the opened element has been
+     * closed.</p>
+     *
+     * @param name                  Attribute name to be added
+     * @param value                 Attribute value to be added
+     * @param componentPropertyName The name of the component property to
+     *                              which this attribute argument applies.  This argument may be
+     *                              <code>null</code>.
+     *
+     * @throws IllegalStateException if this method is called when there
+     *                               is no currently open element
+     * @throws IOException           if an input/output error occurs
+     * @throws NullPointerException  if <code>name</code> or
+     *                               <code>value</code> is <code>null</code>
+     */
+    public void writeURIAttribute(String name, Object value,
+                                  String componentPropertyName)
+          throws IOException {
+        if (name == null || value == null) {
+            // PENDING i18n
+            throw new NullPointerException(
+                  "Argument Error: One or more parameters are null.");
+        }
+
+        writer.write(" ");
+        writer.write(name);
+        writer.write("=\"");
+
+        String strValue = value.toString(); //TODO: Use converter for value?
+        writer.write(' ');
+        writer.write(name);
+        writer.write("=\"" + strValue + "\"");
+    }
+
+
+    /**
+     * <p>Write a comment string containing the specified text.
+     * The text will be converted to a String if necessary.
+     * If there is an open element that has been created by a call
+     * to <code>startElement()</code>, that element will be closed
+     * first.</p>
+     *
+     * @param comment Text content of the comment
+     *
+     * @throws IOException          if an input/output error occurs
+     * @throws NullPointerException if <code>comment</code>
+     *                              is <code>null</code>
+     */
+    public void writeComment(Object comment) throws IOException {
+        if (comment == null) {
+            // PENDING i18n
+            throw new NullPointerException(
+                  "Argument Error: One or more parameters are null.");
+        }
+        closeStartIfNecessary();
+        writer.write("<!-- ");
+        writer.write(comment.toString());
+        writer.write(" -->");
+    }
+
+
+    /**
+     * <p>Write a properly escaped object. The object will be converted
+     * to a String if necessary.  If there is an open element
+     * that has been created by a call to <code>startElement()</code>,
+     * that element will be closed first.</p>
+     *
+     * @param text                  Text to be written
+     * @param componentPropertyName The name of the component property to
+     *                              which this text argument applies.  This argument may be <code>null</code>.
+     *
+     * @throws IOException          if an input/output error occurs
+     * @throws NullPointerException if <code>text</code>
+     *                              is <code>null</code>
+     */
+    public void writeText(Object text, String componentPropertyName)
+          throws IOException {
+        if (text == null) {
+            // PENDING i18n
+            throw new NullPointerException(
+                  "Argument Error: One or more parameters are null.");
+        }
+        closeStartIfNecessary();
+        if (dontEscape) {
+            writer.write(text.toString());
+        } else {
+            Util.writeText(writer, buffer, text.toString());
+        }
+    }
+
+
+    /**
+     * <p>Write a properly escaped single character, If there
+     * is an open element that has been created by a call to
+     * <code>startElement()</code>, that element will be closed first.</p>
+     * <p/>
+     * <p>All angle bracket occurrences in the argument must be escaped
+     * using the &gt; &lt; syntax.</p>
+     *
+     * @param text Text to be written
+     *
+     * @throws IOException if an input/output error occurs
+     */
+    public void writeText(char text) throws IOException {
+        closeStartIfNecessary();
+        if (dontEscape) {
+            writer.write(text);
+        } else {
+            charHolder[0] = text;
+            Util.writeText(writer, buffer, charHolder);
+        }
+    }
+
+
+    /**
+     * <p>Write properly escaped text from a character array.
+     * The output from this command is identical to the invocation:
+     * <code>writeText(c, 0, c.length)</code>.
+     * If there is an open element that has been created by a call to
+     * <code>startElement()</code>, that element will be closed first.</p>
+     * </p>
+     * <p/>
+     * <p>All angle bracket occurrences in the argument must be escaped
+     * using the &gt; &lt; syntax.</p>
+     *
+     * @param text Text to be written
+     *
+     * @throws IOException          if an input/output error occurs
+     * @throws NullPointerException if <code>text</code>
+     *                              is <code>null</code>
+     */
+    public void writeText(char text[]) throws IOException {
+        if (text == null) {
+            // PENDING i18n
+            throw new NullPointerException(
+                  "Argument Error: One or more parameters are null.");
+        }
+        closeStartIfNecessary();
+        if (dontEscape) {
+            writer.write(text);
+        } else {
+            Util.writeText(writer, buffer, text);
+        }
+    }
+
+
+    /**
+     * <p>Write properly escaped text from a character array.
+     * If there is an open element that has been created by a call
+     * to <code>startElement()</code>, that element will be closed
+     * first.</p>
+     * <p/>
+     * <p>All angle bracket occurrences in the argument must be escaped
+     * using the &gt; &lt; syntax.</p>
+     *
+     * @param text Text to be written
+     * @param off  Starting offset (zero-relative)
+     * @param len  Number of characters to be written
+     *
+     * @throws IndexOutOfBoundsException if the calculated starting or
+     *                                   ending position is outside the bounds of the character array
+     * @throws IOException               if an input/output error occurs
+     * @throws NullPointerException      if <code>text</code>
+     *                                   is <code>null</code>
+     */
+    public void writeText(char text[], int off, int len)
+          throws IOException {
+        if (text == null) {
+            // PENDING i18n
+            throw new NullPointerException(
+                  "Argument Error: One or more parameters are null.");
+        }
+        if (off < 0 || off > text.length || len < 0 || len > text.length) {
+            throw new IndexOutOfBoundsException();
+        }
+        closeStartIfNecessary();
+        if (dontEscape) {
+            writer.write(text, off, len);
+        } else {
+            Util.writeText(writer, buffer, text, off, len);
+        }
+    }
+
+
+    /**
+     * <p>Create a new instance of this <code>ResponseWriter</code> using
+     * a different <code>Writer</code>.
+     *
+     * @param writer The <code>Writer</code> that will be used to create
+     *               another <code>ResponseWriter</code>.
+     */
+    public ResponseWriter cloneWithWriter(Writer writer) {
+        try {
+            return new SVGResponseWriter(writer, getContentType(),
+                                         getCharacterEncoding());
+        } catch (FacesException e) {
+            // This should never happen
+            throw new IllegalStateException();
+        }
+    }
+
+
+    /**
+     * This method automatically closes a previous element (if not
+     * already closed).
+     */
+    private void closeStartIfNecessary() throws IOException {
+        if (closeStart) {
+            writer.write(">");
+            closeStart = false;
+        }
+    }
+
+
+    /** Methods From <code>java.io.Writer</code> */
+
+    public void close() throws IOException {
+        closeStartIfNecessary();
+        writer.close();
+    }
+
+
+    public void write(char cbuf) throws IOException {
+        closeStartIfNecessary();
+        writer.write(cbuf);
+    }
+
+
+    public void write(char[] cbuf, int off, int len) throws IOException {
+        closeStartIfNecessary();
+        writer.write(cbuf, off, len);
+    }
+
+
+    public void write(int c) throws IOException {
+        closeStartIfNecessary();
+        writer.write(c);
+    }
+
+
+    public void write(String str) throws IOException {
+        closeStartIfNecessary();
+        writer.write(str);
+    }
+
+
+    public void write(String str, int off, int len) throws IOException {
+        closeStartIfNecessary();
+        writer.write(str, off, len);
+    }
+}
diff --git a/jsf-demo/archive/renderkits/src/java/renderkits/renderkit/svg/TextRenderer.java b/jsf-demo/archive/renderkits/src/java/renderkits/renderkit/svg/TextRenderer.java
new file mode 100644
index 0000000..25bdf8d
--- /dev/null
+++ b/jsf-demo/archive/renderkits/src/java/renderkits/renderkit/svg/TextRenderer.java
@@ -0,0 +1,213 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package renderkits.renderkit.svg;
+
+import javax.faces.FactoryFinder;
+import javax.faces.application.Application;
+import javax.faces.application.ApplicationFactory;
+import javax.faces.component.UIComponent;
+import javax.faces.component.UIOutput;
+import javax.faces.component.ValueHolder;
+import javax.faces.context.FacesContext;
+import javax.faces.context.ResponseWriter;
+import javax.faces.convert.Converter;
+import javax.faces.convert.ConverterException;
+
+import java.io.IOException;
+import java.util.logging.Level;
+
+
+/** <p>Render a <code>UIOutput</code> as a text label.</p> */
+
+public class TextRenderer extends BaseRenderer {
+
+    // ------------------------------------------------------- Renderer Methods
+
+
+    public void encodeEnd(FacesContext context, UIComponent component)
+          throws IOException {
+
+        ResponseWriter writer = context.getResponseWriter();
+
+        if (component instanceof UIOutput) {
+
+            UIOutput output = (UIOutput) component;
+
+            writer.write("<text");
+            writeIdAttributeIfNecessary(context, writer, component);
+            String x = (String) component.getAttributes().get("x");
+            if (x != null) {
+                writer.writeAttribute("x", x, "x");
+            }
+            String y = (String) component.getAttributes().get("y");
+            if (y != null) {
+                writer.writeAttribute("y", y, "y");
+            }
+            String dx = (String) component.getAttributes().get("dx");
+            if (dx != null) {
+                writer.writeAttribute("dx", dx, "dx");
+            }
+            String dy = (String) component.getAttributes().get("dy");
+            if (dy != null) {
+                writer.writeAttribute("dy", dy, "dy");
+            }
+            String rotate = (String) component.getAttributes().get("rotate");
+            if (rotate != null) {
+                writer.writeAttribute("rotate", rotate, "rotate");
+            }
+            String textLength =
+                  (String) component.getAttributes().get("textLength");
+            if (textLength != null) {
+                writer.writeAttribute("textLength", textLength, "textLength");
+            }
+            String textAdjust =
+                  (String) component.getAttributes().get("textAdjust");
+            if (textAdjust != null) {
+                writer.writeAttribute("textAdjust", textAdjust, "textAdjust");
+            }
+            String style = (String) component.getAttributes().get("style");
+            if (style != null) {
+                writer.writeAttribute("style", style, "style");
+            }
+            writer.write(">");
+            writer.write(getCurrentValue(context, output));
+            writer.write("</text>");
+            writer.writeText("\n", null);
+
+        }
+
+    }
+
+    private String getCurrentValue(FacesContext context,
+                                   UIComponent component) {
+        String currentValue = null;
+        Object currentObj = getValue(component);
+        if (currentObj != null) {
+            currentValue = getFormattedValue(context, component, currentObj);
+        }
+        return currentValue;
+    }
+
+    private String getFormattedValue(FacesContext context,
+                                     UIComponent component,
+                                     Object currentValue)
+          throws ConverterException {
+
+        String result = null;
+        Converter converter = null;
+
+        // If there is a converter attribute, use it to to ask application
+        // instance for a converter with this identifer.
+
+        if (component instanceof ValueHolder) {
+            converter = ((ValueHolder) component).getConverter();
+        }
+
+        // if value is null and no converter attribute is specified, then
+        // return a zero length String.
+        if (converter == null && currentValue == null) {
+            return "";
+        }
+        if (converter == null) {
+            // Do not look for "by-type" converters for Strings
+            if (currentValue instanceof String) {
+                return (String) currentValue;
+            }
+
+            // if converter attribute set, try to acquire a converter
+            // using its class type.
+
+            Class converterType = currentValue.getClass();
+            converter = getConverterForClass(converterType);
+
+            // if there is no default converter available for this identifier,
+            // assume the model type to be String.
+            if (converter == null && currentValue != null) {
+                result = currentValue.toString();
+                return result;
+            }
+        }
+
+        if (converter != null) {
+            result = converter.getAsString(context, component, currentValue);
+
+            return result;
+        } else {
+            // throw converter exception if no converter can be
+            // identified
+            Object [] params = {
+                  currentValue,
+                  "null Converter"
+            };
+
+            throw new ConverterException("No converter could be identified.");
+        }
+    }
+
+    private Converter getConverterForClass(Class converterClass) {
+        if (converterClass == null) {
+            return null;
+        }
+        try {
+            ApplicationFactory aFactory =
+                  (ApplicationFactory) FactoryFinder.getFactory(
+                        FactoryFinder.APPLICATION_FACTORY);
+            Application application = aFactory.getApplication();
+            return (application.createConverter(converterClass));
+        } catch (Exception e) {
+            return (null);
+        }
+    }
+
+    private Object getValue(UIComponent component) {
+        if (component instanceof ValueHolder) {
+            Object value = ((ValueHolder) component).getValue();
+            if (logger.isLoggable(Level.FINE)) {
+                logger.fine("component.getValue() returned " + value);
+            }
+            return value;
+        }
+
+        return null;
+    }
+
+
+} 
diff --git a/jsf-demo/archive/renderkits/src/java/renderkits/renderkit/xul/BaseRenderer.java b/jsf-demo/archive/renderkits/src/java/renderkits/renderkit/xul/BaseRenderer.java
new file mode 100644
index 0000000..482c13c
--- /dev/null
+++ b/jsf-demo/archive/renderkits/src/java/renderkits/renderkit/xul/BaseRenderer.java
@@ -0,0 +1,324 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package renderkits.renderkit.xul;
+
+import javax.faces.component.NamingContainer;
+import javax.faces.component.UIComponent;
+import javax.faces.component.UIInput;
+import javax.faces.component.UIViewRoot;
+import javax.faces.component.ValueHolder;
+import javax.faces.context.FacesContext;
+import javax.faces.context.ResponseWriter;
+import javax.faces.convert.Converter;
+import javax.faces.convert.ConverterException;
+import javax.faces.render.Renderer;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import renderkits.util.Util;
+
+/**
+ * <B>BaseRenderer</B> is a base class for implementing renderers
+ * for <code>SVGRenderKit</code>.
+ */
+
+public abstract class BaseRenderer extends Renderer {
+
+
+    protected static Logger logger =
+          Util.getLogger(Util.FACES_LOGGER + Util.RENDERKIT_LOGGER);
+
+    /** @return true if this renderer should render an id attribute. */
+    protected boolean shouldWriteIdAttribute(UIComponent component) {
+        String id;
+        return (null != (id = component.getId()) &&
+                !id.startsWith(UIViewRoot.UNIQUE_ID_PREFIX));
+    }
+
+    protected void writeIdAttributeIfNecessary(FacesContext context,
+                                               ResponseWriter writer,
+                                               UIComponent component) {
+        String id;
+        if (shouldWriteIdAttribute(component)) {
+            try {
+                writer.writeAttribute("id", component.getClientId(context),
+                                      "id");
+            } catch (IOException e) {
+                if (logger.isLoggable(Level.WARNING)) {
+                    // PENDING I18N
+                    logger.warning("Can't write ID attribute" + e.getMessage());
+                }
+            }
+        }
+    }
+
+    /**
+     * Gets value to be rendered and formats it if required. Sets to empty
+     * string if value is null.
+     */
+    protected String getCurrentValue(FacesContext context,
+                                     UIComponent component) {
+
+        if (component instanceof UIInput) {
+            Object submittedValue = ((UIInput) component).getSubmittedValue();
+            if (submittedValue != null) {
+                return (String) submittedValue;
+            }
+        }
+
+        String currentValue = null;
+        Object currentObj = getValue(component);
+        if (currentObj != null) {
+            currentValue = getFormattedValue(context, component, currentObj);
+        }
+        return currentValue;
+    }
+
+    /**
+     * Renderers override this method in case output value needs to be
+     * formatted
+     */
+    protected String getFormattedValue(FacesContext context,
+                                       UIComponent component,
+                                       Object currentValue)
+          throws ConverterException {
+
+        String result = null;
+        // formatting is supported only for components that support
+        // converting value attributes.
+        if (!(component instanceof ValueHolder)) {
+            if (currentValue != null) {
+                result = currentValue.toString();
+            }
+            return result;
+        }
+
+        Converter converter = null;
+
+        // If there is a converter attribute, use it to to ask application
+        // instance for a converter with this identifer.
+        converter = ((ValueHolder) component).getConverter();
+
+        // if value is null and no converter attribute is specified, then
+        // return a zero length String.
+        if (converter == null && currentValue == null) {
+            return "";
+        }
+        if (converter == null) {
+            // Do not look for "by-type" converters for Strings
+            if (currentValue instanceof String) {
+                return (String) currentValue;
+            }
+
+            // if converter attribute set, try to acquire a converter
+            // using its class type.
+
+            Class converterType = currentValue.getClass();
+            converter = Util.getConverterForClass(converterType);
+
+            // if there is no default converter available for this identifier,
+            // assume the model type to be String.
+            if (converter == null) {
+                result = currentValue.toString();
+                return result;
+            }
+        }
+
+        return converter.getAsString(context, component, currentValue);
+
+    }
+
+    protected Object getValue(UIComponent component) {
+        if (component instanceof ValueHolder) {
+            Object value = ((ValueHolder) component).getValue();
+            if (logger.isLoggable(Level.FINE)) {
+                logger.fine("component.getValue() returned " + value);
+            }
+            return value;
+        }
+
+        return null;
+    }
+
+    /**
+     * Locates the component identified by <code>forComponent</code>
+     *
+     * @param forComponent - the component to search for
+     * @param component    - the starting point in which to begin the search
+     *
+     * @return the component with the the <code>id</code that matches
+     *         <code>forComponent</code> otheriwse null if no match is found.
+     */
+    private UIComponent getForComponent(FacesContext context,
+                                        String forComponent,
+                                        UIComponent component) {
+        if (null == forComponent || forComponent.length() == 0) {
+            return null;
+        }
+
+        UIComponent result = null;
+        UIComponent currentParent = component;
+        try {
+            // Check the naming container of the current
+            // component for component identified by
+            // 'forComponent'
+            while (currentParent != null) {
+                // If the current component is a NamingContainer,
+                // see if it contains what we're looking for.
+                result = currentParent.findComponent(forComponent);
+                if (result != null) {
+                    break;
+                }
+                // if not, start checking further up in the view
+                currentParent = currentParent.getParent();
+            }
+            // no hit from above, scan for a NamingContainer
+            // that contains the component we're looking for from the root.
+            if (result == null) {
+                result =
+                      findUIComponentBelow(context.getViewRoot(), forComponent);
+            }
+        } catch (Throwable t) {
+            //PENDING i18n
+            throw new RuntimeException("Component not found:" + forComponent);
+        }
+        // log a message if we were unable to find the specified
+        // component (probably a misconfigured 'for' attribute
+        if (result == null) {
+            if (logger.isLoggable(Level.WARNING)) {
+                //PENDING i18n
+                logger.warning("Component not found in view:" + forComponent);
+            }
+        }
+        return result;
+    }
+
+
+    /**
+     * <p>Recursively searches for {@link NamingContainer}s from the
+     * given start point looking for the component with the <code>id</code>
+     * specified by <code>forComponent</code>.
+     *
+     * @param startPoint   - the starting point in which to begin the search
+     * @param forComponent - the component to search for
+     *
+     * @return the component with the the <code>id</code that matches
+     *         <code>forComponent</code> otheriwse null if no match is found.
+     */
+    protected UIComponent findUIComponentBelow(UIComponent startPoint,
+                                               String forComponent) {
+        UIComponent retComp = null;
+        List<UIComponent> children = startPoint.getChildren();
+        for (int i = 0, size = children.size(); i < size; i++) {
+            UIComponent comp = children.get(i);
+
+            if (comp instanceof NamingContainer) {
+                retComp = comp.findComponent(forComponent);
+            }
+
+            if (retComp == null) {
+                if (comp.getChildCount() > 0) {
+                    retComp = findUIComponentBelow(comp, forComponent);
+                }
+            }
+
+            if (retComp != null) {
+                break;
+            }
+        }
+        return retComp;
+    }
+
+    /**
+     * <p>Return an Iterator over the children of the specified
+     * component, selecting only those that have a
+     * <code>rendered</code> property of <code>true</code>.</p>
+     *
+     * @param component <code>UIComponent</code> for which to extract children
+     */
+    protected Iterator<UIComponent> getChildren(UIComponent component) {
+
+        List<UIComponent> results = new ArrayList<UIComponent>();
+        Iterator<UIComponent> kids = component.getChildren().iterator();
+        while (kids.hasNext()) {
+            UIComponent kid = kids.next();
+            if (kid.isRendered()) {
+                results.add(kid);
+            }
+        }
+        return (results.iterator());
+
+    }
+
+    /**
+     * <p>Render nested child components by invoking the encode methods
+     * on those components, but only when the <code>rendered</code>
+     * property is <code>true</code>.</p>
+     */
+    protected void encodeRecursive(FacesContext context, UIComponent component)
+          throws IOException {
+
+        // suppress rendering if "rendered" property on the component is
+        // false.
+        if (!component.isRendered()) {
+            return;
+        }
+
+        // Render this component and its children recursively
+        component.encodeBegin(context);
+        if (component.getRendersChildren()) {
+            component.encodeChildren(context);
+        } else {
+            Iterator<UIComponent> kids = getChildren(component);
+            while (kids.hasNext()) {
+                UIComponent kid = kids.next();
+                encodeRecursive(context, kid);
+            }
+        }
+        component.encodeEnd(context);
+    }
+}
+
diff --git a/jsf-demo/archive/renderkits/src/java/renderkits/renderkit/xul/ButtonRenderer.java b/jsf-demo/archive/renderkits/src/java/renderkits/renderkit/xul/ButtonRenderer.java
new file mode 100644
index 0000000..a70c98f
--- /dev/null
+++ b/jsf-demo/archive/renderkits/src/java/renderkits/renderkit/xul/ButtonRenderer.java
@@ -0,0 +1,226 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+// ButtonRenderer.java
+
+package renderkits.renderkit.xul;
+
+import javax.faces.component.UICommand;
+import javax.faces.component.UIComponent;
+import javax.faces.component.UIForm;
+import javax.faces.context.FacesContext;
+import javax.faces.context.ResponseWriter;
+import javax.faces.event.ActionEvent;
+
+import java.io.IOException;
+import java.util.Map;
+import java.util.logging.Level;
+
+import renderkits.util.Util;
+
+/**
+ * <B>ButtonRenderer</B> is a class that renders the current value of
+ * <code>UICommand<code> as a Button.
+ */
+
+public class ButtonRenderer extends BaseRenderer {
+
+    //
+    // Protected Constants
+    //
+
+    //
+    // Class Variables
+    //
+    private static final String FORM_HAS_COMMAND_LINK_ATTR =
+          "com.sun.faces.FORM_HAS_COMMAND_LINK_ATTR";
+
+    private static final String NO_COMMAND_LINK_FOUND_VALUE =
+          "com.sun.faces.NO_COMMAND_LINK_FOUND";
+
+    //
+    // Instance Variables
+    //
+
+    // Attribute Instance Variables
+
+    // Relationship Instance Variables
+
+    //
+    // Constructors and Initializers    
+    //
+
+    //
+    // Class methods
+    //
+
+    //
+    // General Methods
+    //
+
+    //
+    // Methods From Renderer
+    //
+
+    public void decode(FacesContext context, UIComponent component) {
+        if (context == null || component == null) {
+            // PENDING - i18n
+            throw new NullPointerException("'context' and/or 'component is null");
+        }
+        if (logger.isLoggable(Level.FINER)) {
+            logger.log(Level.FINER,
+                       "Begin decoding component " + component.getId());
+        }
+
+        // If the component is disabled, do not change the value of the
+        // component, since its state cannot be changed.
+        if (Util.componentIsDisabledOnReadonly(component)) {
+            if (logger.isLoggable(Level.FINE)) {
+                logger.fine("No decoding necessary since the component " +
+                            component.getId() + " is disabled");
+            }
+            return;
+        }
+
+        // Was our command the one that caused this submission?
+        String clientId = component.getClientId(context);
+        Map<String, String> requestParameterMap = context.getExternalContext()
+              .getRequestParameterMap();
+        String value = requestParameterMap.get(clientId);
+        if (value == null) {
+            if (requestParameterMap.get(clientId + ".x") == null &&
+                requestParameterMap.get(clientId + ".y") == null) {
+                return;
+            }
+        }
+
+        ActionEvent actionEvent = new ActionEvent(component);
+        component.queueEvent(actionEvent);
+
+        if (logger.isLoggable(Level.FINE)) {
+            logger.fine("This command resulted in form submission " +
+                        " ActionEvent queued " + actionEvent);
+        }
+        if (logger.isLoggable(Level.FINER)) {
+            logger.log(Level.FINER,
+                       "End decoding component " + component.getId());
+        }
+        return;
+    }
+
+
+    public void encodeBegin(FacesContext context, UIComponent component)
+          throws IOException {
+        if (context == null || component == null) {
+            // PENDING - i18n
+            throw new NullPointerException(
+                  "'context' and/or 'component' is null");
+        }
+        if (logger.isLoggable(Level.FINER)) {
+            logger.log(Level.FINER,
+                       "Begin encoding component " + component.getId());
+        }
+        // suppress rendering if "rendered" property on the component is
+        // false.
+        if (!component.isRendered()) {
+            if (logger.isLoggable(Level.FINER)) {
+                logger.log(Level.FINER,
+                           "End encoding component " + component.getId() +
+                           " since rendered attribute is set to false ");
+            }
+            return;
+        }
+
+        ResponseWriter writer = context.getResponseWriter();
+
+        // for text with rect positioning..
+        int dxi = 0, dyi = 0, xi = 0, yi = 0, heighti = 0;
+
+        String label = "";
+        Object value = ((UICommand) component).getValue();
+        if (value != null) {
+            label = value.toString();
+        }
+        writer.startElement("button", component);
+        writeIdAttributeIfNecessary(context, writer, component);
+        writer.writeAttribute("label", label, "label");
+
+        String type = (String) component.getAttributes().get("type");
+        if (type != null && type.equals("submit")) {
+            UIComponent root = context.getViewRoot();
+            UIComponent myForm = component;
+            while (!(myForm instanceof UIForm) && root != myForm) {
+                myForm = myForm.getParent();
+            }
+            String formMethodName =
+                  myForm.getClientId(context) + "_post(event)";
+            writer.writeAttribute("onclick", formMethodName, "onclick");
+        } else {
+            String onclick = (String) component.getAttributes().get("onclick");
+            if (onclick != null) {
+                writer.writeAttribute("onclick", onclick, "onclick");
+            }
+        }
+        writer.writeText("\n", null);
+
+
+        if (logger.isLoggable(Level.FINER)) {
+            logger.log(Level.FINER,
+                       "End encoding component " + component.getId());
+        }
+    }
+
+    public void encodeEnd(FacesContext context, UIComponent component)
+          throws IOException {
+        if (context == null || component == null) {
+            // PENDING - i18n
+            throw new NullPointerException(
+                  "'context' and/or 'component' is null");
+        }
+        ResponseWriter writer = context.getResponseWriter();
+        writer.endElement("button");
+        writer.writeText("\n", null);
+    }
+
+    //
+    // General Methods
+    //
+
+} // end of class ButtonRenderer
diff --git a/jsf-demo/archive/renderkits/src/java/renderkits/renderkit/xul/FormRenderer.java b/jsf-demo/archive/renderkits/src/java/renderkits/renderkit/xul/FormRenderer.java
new file mode 100644
index 0000000..acc1474
--- /dev/null
+++ b/jsf-demo/archive/renderkits/src/java/renderkits/renderkit/xul/FormRenderer.java
@@ -0,0 +1,293 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+// FormRenderer.java
+
+package renderkits.renderkit.xul;
+
+import javax.faces.FactoryFinder;
+import javax.faces.component.UIComponent;
+import javax.faces.component.UIForm;
+import javax.faces.context.FacesContext;
+import javax.faces.context.ResponseWriter;
+import javax.faces.lifecycle.Lifecycle;
+import javax.faces.lifecycle.LifecycleFactory;
+import javax.faces.webapp.FacesServlet;
+import javax.servlet.ServletContext;
+
+import java.io.IOException;
+import java.util.Map;
+import java.util.logging.Level;
+
+/**
+ * <B>FormRenderer</B> is a class that renders a <code>UIForm<code> as a Form.
+ * This class specifically renders <code>XUL</code> markup - a <code><g></code>
+ * element.  The element is rendered with the necessary attributes to facilitate
+ * a form submission.
+ */
+
+public class FormRenderer extends BaseRenderer {
+
+    private Lifecycle lifecycle = null;
+
+    private static final String RENDERED_SCRIPT = "demo.RENDERED_SCRIPT";
+
+    //
+    // Protected Constants
+    //
+
+    //
+    // Class Variables
+    //
+
+    //
+    // Instance Variables
+    //
+
+    // Attribute Instance Variables
+
+    // Relationship Instance Variables
+
+    //
+    // Constructors and Initializers    
+    //
+
+    public FormRenderer() {
+        super();
+    }
+
+    //
+    // Class methods
+    //
+
+    //
+    // General Methods
+    //
+
+    //
+    // Methods From Renderer
+    //
+
+    /**
+     * Determine if this form caused the submission.
+     * Install a <code>PhaseListener</code> that will listen for
+     * <code>XMLHttpRequest(s)</code>.
+     *
+     * @see renderkits.renderkit.svg.ResponsePhaseListener
+     */
+    public void decode(FacesContext context, UIComponent component) {
+        // Was our form the one that was submitted?  If so, we need to set
+        // the indicator accordingly..
+        //
+        String clientId = component.getClientId(context);
+        if (logger.isLoggable(Level.FINER)) {
+            logger.log(Level.FINER,
+                       "Begin decoding component " + component.getId());
+        }
+        Map<String, String> requestParameterMap = context.getExternalContext()
+              .getRequestParameterMap();
+        if (requestParameterMap.containsKey(clientId)) {
+            ((UIForm) component).setSubmitted(true);
+        } else {
+            ((UIForm) component).setSubmitted(false);
+        }
+        if (logger.isLoggable(Level.FINER)) {
+            logger.log(Level.FINER,
+                       "End decoding component " + component.getId());
+        }
+
+        getLifecycle(context).addPhaseListener(new ResponsePhaseListener());
+    }
+
+
+    /** Render the starting <code><g></code> element. */
+    public void encodeBegin(FacesContext context, UIComponent component)
+          throws IOException {
+        String styleClass = null;
+
+        if (context == null || component == null) {
+            //PENDING - i18n
+            throw new NullPointerException(
+                  "'context' and/or 'component' is null");
+        }
+        if (logger.isLoggable(Level.FINER)) {
+            logger.log(Level.FINER,
+                       "Begin encoding component " + component.getId());
+        }
+        // suppress rendering if "rendered" property on the component is
+        // false.
+        if (!component.isRendered()) {
+            if (logger.isLoggable(Level.FINER)) {
+                logger.log(Level.FINER, "End encoding component " +
+                                        component.getId() + " since " +
+                                        "rendered attribute is set to false ");
+            }
+            return;
+        }
+        ResponseWriter writer = context.getResponseWriter();
+
+        writer.startElement("window", component);
+        writer.writeAttribute("xmlns:html",
+                              "http://www.w3.org/1999/xhtml",
+                              null);
+        writer.writeAttribute("xmlns",
+                              "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul",
+                              null);
+        writer.writeAttribute("id", component.getClientId(context), "clientId");
+        writer.writeAttribute("method", "post", null);
+        writer.writeAttribute("action", getActionStr(context), null);
+        String acceptcharset = null;
+        if (null != (acceptcharset = (String)
+              component.getAttributes().get("acceptcharset"))) {
+            writer.writeAttribute("accept-charset", acceptcharset,
+                                  "acceptcharset");
+        }
+
+        writer.writeText("\n", null);
+
+        // Only render the main script element once per request.
+        if (!context.getExternalContext().getRequestMap()
+              .containsKey(RENDERED_SCRIPT)) {
+            context.getExternalContext().getRequestMap().put(RENDERED_SCRIPT,
+                                                             Boolean.TRUE);
+            writer.startElement("script", component);
+            writer.writeAttribute("src",
+                                  context.getExternalContext()
+                                        .getRequestContextPath()
+                                  + "/src/script/http-xul.es", null);
+            writer.endElement("script");
+        }
+    }
+
+
+    /**
+     * <p>Return the value to be rendered as the <code>action</code> attribute
+     * of the form generated for this component.</p>
+     *
+     * @param context FacesContext for the response we are creating
+     */
+    private String getActionStr(FacesContext context) {
+        String viewId = context.getViewRoot().getViewId();
+        String actionURL =
+              context.getApplication().getViewHandler().
+                    getActionURL(context, viewId);
+        return (context.getExternalContext().encodeActionURL(actionURL));
+    }
+
+
+    /**
+     * Render the necessary <code>ECMAScript</code> to facilitate a
+     * form submission.  Render the closing <code><g></code> element.
+     */
+    public void encodeEnd(FacesContext context, UIComponent component)
+          throws IOException {
+        if (context == null || component == null) {
+            //PENDING - i18n
+            throw new NullPointerException(
+                  "'context' and/or 'component' is null");
+        }
+        // suppress rendering if "rendered" property on the component is
+        // false.
+        if (!component.isRendered()) {
+            if (logger.isLoggable(Level.FINER)) {
+                logger.log(Level.FINER, "End encoding component " +
+                                        component.getId() + " since " +
+                                        "rendered attribute is set to false ");
+            }
+            return;
+        }
+
+        context.getApplication().getViewHandler().writeState(context);
+
+        // Render the end tag for form
+        ResponseWriter writer = context.getResponseWriter();
+        buildPost(context, component);
+        writer.endElement("window");
+        writer.writeText("\n", null);
+        if (logger.isLoggable(Level.FINER)) {
+            logger.log(Level.FINER, "End encoding component " +
+                                    component.getId());
+        }
+    }
+
+    /** Helper method to render the <code>ECMAScript</code>. */
+    private void buildPost(FacesContext context, UIComponent component)
+          throws IOException {
+        ResponseWriter writer = context.getResponseWriter();
+        writer.startElement("script", component);
+        String formMethodName = component.getClientId(context) + "_post";
+        String formMethodText = "function " + formMethodName + "(event) {\n";
+
+        // write out global variables
+
+        writer.writeText(formMethodText, null);
+        writer.writeText("  var control = event.target;\n", null);
+        writer.writeText("  var form = getForm(control);\n", null);
+        writer.writeText("  var postData = getPostData(form, control);\n",
+                         null);
+        writer.writeText("  var url = \"", null);
+        writer.writeText(getActionStr(context), null);
+        writer.writeText("\";\n", null);
+        writer.writeText("  sendRequest(url, postData);\n", null);
+        writer.writeText("}\n", null);
+        writer.endElement("script");
+    }
+
+    /** Helper method used to install <code>PhaseListener</code>. */
+    private Lifecycle getLifecycle(FacesContext context) {
+        if (null != lifecycle) {
+            return lifecycle;
+        }
+        LifecycleFactory lifecycleFactory = (LifecycleFactory)
+              FactoryFinder.getFactory(FactoryFinder.LIFECYCLE_FACTORY);
+        String lifecycleId =
+              ((ServletContext) context.getExternalContext().getContext())
+                    .getInitParameter
+                          (FacesServlet.LIFECYCLE_ID_ATTR);
+        if (lifecycleId == null) {
+            lifecycleId = LifecycleFactory.DEFAULT_LIFECYCLE;
+        }
+        lifecycle = lifecycleFactory.getLifecycle(lifecycleId);
+
+        return lifecycle;
+    }
+
+
+} // end of class FormRenderer
diff --git a/jsf-demo/archive/renderkits/src/java/renderkits/renderkit/xul/GridRenderer.java b/jsf-demo/archive/renderkits/src/java/renderkits/renderkit/xul/GridRenderer.java
new file mode 100644
index 0000000..29f3f21
--- /dev/null
+++ b/jsf-demo/archive/renderkits/src/java/renderkits/renderkit/xul/GridRenderer.java
@@ -0,0 +1,343 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package renderkits.renderkit.xul;
+
+
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.context.ResponseWriter;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.logging.Level;
+
+/**
+ * <B>GridRenderer</B> is a class that renders <code>UIPanel</code> component
+ * as a "Grid".
+ */
+
+public class GridRenderer extends BaseRenderer {
+
+    //
+    // Protected Constants
+    //
+
+    //
+    // Class Variables
+    //
+
+    //
+    // Instance Variables
+    //
+
+    // Attribute Instance Variables
+
+    // Relationship Instance Variables
+
+    //
+    // Constructors and Initializers    
+    //
+
+    public GridRenderer() {
+        super();
+    }
+
+    //
+    // Class methods
+    //
+
+    //
+    // General Methods
+    //
+
+    //
+    // Methods From Renderer
+    //
+
+    public boolean getRendersChildren() {
+        return true;
+    }
+
+
+    public void encodeBegin(FacesContext context, UIComponent component)
+          throws IOException {
+
+        if (context == null || component == null) {
+            // PENDING - i18n
+            throw new NullPointerException("'context' and/or 'component is null");
+        }
+
+        if (logger.isLoggable(Level.FINER)) {
+            logger.log(Level.FINER, "Begin encoding component " +
+                                    component.getId());
+        }
+
+        // suppress rendering if "rendered" property on the component is
+        // false.
+        if (!component.isRendered()) {
+            if (logger.isLoggable(Level.FINE)) {
+                logger.fine("End encoding component "
+                            + component.getId() + " since " +
+                            "rendered attribute is set to false ");
+            }
+            return;
+        }
+
+        // Render the beginning of this panel
+        ResponseWriter writer = context.getResponseWriter();
+        writer.writeText("\n", null);
+        writer.startElement("grid", component);
+        writeIdAttributeIfNecessary(context, writer, component);
+        String styleClass =
+              (String) component.getAttributes().get("styleClass");
+        if (styleClass != null) {
+            writer.writeAttribute("class", styleClass, "styleClass");
+        }
+        writer.writeText("\n", null);
+
+        writer.startElement("columns", component);
+        writer.writeText("\n", null);
+        int columns = getColumnCount(component);
+        for (int i = 0; i < columns; i++) {
+            writer.startElement("column", component);
+            writer.endElement("column");
+            writer.writeText("\n", null);
+        }
+        writer.endElement("columns");
+        writer.writeText("\n", null);
+        writer.startElement("rows", component);
+        writer.writeText("\n", null);
+    }
+
+
+    public void encodeChildren(FacesContext context, UIComponent component)
+          throws IOException {
+
+        if (context == null || component == null) {
+            // PENDING - i18n
+            throw new NullPointerException("'context' and/or 'component is null");
+        }
+        if (logger.isLoggable(Level.FINER)) {
+            logger.log(Level.FINER,
+                       "Begin encoding children " + component.getId());
+        }
+
+        // suppress rendering if "rendered" property on the component is
+        // false.
+        if (!component.isRendered()) {
+            if (logger.isLoggable(Level.FINE)) {
+                logger.fine("End encoding component " +
+                            component.getId() + " since " +
+                            "rendered attribute is set to false ");
+            }
+            return;
+        }
+
+        // Set up the variables we will need
+        ResponseWriter writer = context.getResponseWriter();
+        int columns = getColumnCount(component);
+        String columnClasses[] = getColumnClasses(component);
+        int columnStyle = 0;
+        int columnStyles = columnClasses.length;
+        String rowClasses[] = getRowClasses(component);
+        int rowStyle = 0;
+        int rowStyles = rowClasses.length;
+        boolean open = false;
+        Iterator<UIComponent> kids = null;
+        int i = 0;
+
+        // Render our children, starting a new row as needed
+
+        if (null != (kids = getChildren(component))) {
+            while (kids.hasNext()) {
+                UIComponent child = kids.next();
+                if ((i % columns) == 0) {
+                    if (open) {
+                        writer.endElement("row");
+                        writer.writeText("\n", null);
+                        open = false;
+                    }
+                    writer.startElement("row", component);
+                    if (rowStyles > 0) {
+                        writer.writeAttribute("class", rowClasses[rowStyle++],
+                                              "rowClasses");
+                        if (rowStyle >= rowStyles) {
+                            rowStyle = 0;
+                        }
+                    }
+                    writer.writeText("\n", null);
+                    open = true;
+                    columnStyle = 0;
+                }
+                writer.startElement("box", component);
+                writer.writeText("\n", null);
+                if (columnStyles > 0) {
+                    try {
+                        writer.writeAttribute("class",
+                                              columnClasses[columnStyle++],
+                                              "columns");
+                    } catch (ArrayIndexOutOfBoundsException e) {
+                    }
+                    if (columnStyle >= columnStyles) {
+                        columnStyle = 0;
+                    }
+                }
+                encodeRecursive(context, child);
+                writer.endElement("box");
+                writer.writeText("\n", null);
+                i++;
+            }
+        }
+        if (open) {
+            writer.endElement("row");
+            writer.writeText("\n", null);
+        }
+        writer.writeText("\n", null);
+        if (logger.isLoggable(Level.FINER)) {
+            logger.log(Level.FINER,
+                       "End encoding children " + component.getId());
+        }
+    }
+
+
+    public void encodeEnd(FacesContext context, UIComponent component)
+          throws IOException {
+
+        if (context == null || component == null) {
+            // PENDING - i18n
+            throw new NullPointerException("'context' and/or 'component is null");
+        }
+
+        // suppress rendering if "rendered" property on the component is
+        // false.
+        if (!component.isRendered()) {
+            if (logger.isLoggable(Level.FINE)) {
+                logger.fine("End encoding component " +
+                            component.getId() + " since " +
+                            "rendered attribute is set to false ");
+            }
+            return;
+        }
+        // Render the ending of this panel
+        ResponseWriter writer = context.getResponseWriter();
+        writer.endElement("rows");
+        writer.writeText("\n", null);
+        writer.endElement("grid");
+        writer.writeText("\n", null);
+        if (logger.isLoggable(Level.FINER)) {
+            logger.log(Level.FINER,
+                       "End encoding component " + component.getId());
+        }
+    }
+
+    /**
+     * Returns an array of stylesheet classes to be applied to
+     * each column in the list in the order specified. Every column may or
+     * may not have a stylesheet
+     */
+    private String[] getColumnClasses(UIComponent component) {
+        String values = (String) component.getAttributes().get("columnClasses");
+        if (values == null) {
+            return (new String[0]);
+        }
+        values = values.trim();
+        ArrayList<String> list = new ArrayList<String>();
+        while (values.length() > 0) {
+            int comma = values.indexOf(",");
+            if (comma >= 0) {
+                list.add(values.substring(0, comma).trim());
+                values = values.substring(comma + 1);
+            } else {
+                list.add(values.trim());
+                values = "";
+            }
+        }
+        String results[] = new String[list.size()];
+        return (list.toArray(results));
+    }
+
+
+    /**
+     * Returns number of columns of the grid converting the value
+     * specified to int if necessary.
+     */
+    private int getColumnCount(UIComponent component) {
+        int count;
+        Object value = component.getAttributes().get("columns");
+        if ((value != null) && (value instanceof Integer)) {
+            count = (Integer) value;
+        } else {
+            count = 2;
+        }
+        if (count < 1) {
+            count = 1;
+        }
+        return (count);
+    }
+
+
+    /**
+     * Returns an array of stylesheet classes to be applied to
+     * each row in the list in the order specified. Every row may or
+     * may not have a stylesheet
+     */
+    private String[] getRowClasses(UIComponent component) {
+        String values = (String) component.getAttributes().get("rowClasses");
+        if (values == null) {
+            return (new String[0]);
+        }
+        values = values.trim();
+        ArrayList<String> list = new ArrayList<String>();
+        while (values.length() > 0) {
+            int comma = values.indexOf(",");
+            if (comma >= 0) {
+                list.add(values.substring(0, comma).trim());
+                values = values.substring(comma + 1);
+            } else {
+                list.add(values.trim());
+                values = "";
+            }
+        }
+        String results[] = new String[list.size()];
+        return (list.toArray(results));
+    }
+}
diff --git a/jsf-demo/archive/renderkits/src/java/renderkits/renderkit/xul/GroupRenderer.java b/jsf-demo/archive/renderkits/src/java/renderkits/renderkit/xul/GroupRenderer.java
new file mode 100644
index 0000000..db3c0c7
--- /dev/null
+++ b/jsf-demo/archive/renderkits/src/java/renderkits/renderkit/xul/GroupRenderer.java
@@ -0,0 +1,205 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package renderkits.renderkit.xul;
+
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.context.ResponseWriter;
+
+import java.io.IOException;
+import java.util.Iterator;
+import java.util.logging.Level;
+
+/**
+ * Arbitrary grouping "renderer" that simply renders its children
+ * recursively in the <code>encodeEnd()</code> method.
+ *
+ */
+public class GroupRenderer extends BaseRenderer {
+
+    //
+    // Protected Constants
+    //
+
+    //
+    // Class Variables
+    //
+
+    //
+    // Instance Variables
+    //
+
+    // Attribute Instance Variables
+
+    // Relationship Instance Variables
+
+    //
+    // Constructors and Initializers    
+    //
+
+    public GroupRenderer() {
+        super();
+    }
+
+    //
+    // Class methods
+    //
+
+    //
+    // General Methods
+    //
+
+    //
+    // Methods From Renderer
+    //
+
+    public boolean getRendersChildren() {
+        return true;
+    }
+
+
+    public void encodeBegin(FacesContext context, UIComponent component)
+          throws IOException {
+        if (logger.isLoggable(Level.FINER)) {
+            logger.log(Level.FINER, "Begin encoding component " +
+                                    component.getId());
+        }
+        // suppress rendering if "rendered" property on the component is
+        // false.
+        if (!component.isRendered()) {
+            if (logger.isLoggable(Level.FINE)) {
+                logger.fine("End encoding component " +
+                            component.getId() + " since " +
+                            "rendered attribute is set to false ");
+            }
+            return;
+        }
+
+        String
+              style = (String) component.getAttributes().get("style"),
+              styleClass = (String) component.getAttributes().get("styleClass"),
+              captionClass =
+                    (String) component.getAttributes().get("captionClass"),
+              captionLabel =
+                    (String) component.getAttributes().get("captionLabel");
+        ResponseWriter writer = context.getResponseWriter();
+
+        writer.writeText("\n", null);
+        writer.startElement("groupbox", component);
+        writeIdAttributeIfNecessary(context, writer, component);
+        if (styleClass != null) {
+            writer.writeAttribute("class", styleClass, "styleClass");
+        }
+        if (style != null) {
+            writer.writeAttribute("style", style, "style");
+        }
+        if (captionLabel != null) {
+            writer.writeText("\n", null);
+            writer.startElement("caption", component);
+            writer.writeAttribute("label", captionLabel, "captionLabel");
+            if (captionClass != null) {
+                writer.writeAttribute("class", captionClass, "captionClass");
+            }
+            writer.endElement("caption");
+        }
+        writer.writeText("\n", null);
+    }
+
+
+    public void encodeChildren(FacesContext context, UIComponent component)
+          throws IOException {
+        if (logger.isLoggable(Level.FINER)) {
+            logger.log(Level.FINER,
+                       "Begin encoding children " + component.getId());
+        }
+        // suppress rendering if "rendered" property on the component is
+        // false.
+        if (!component.isRendered()) {
+            if (logger.isLoggable(Level.FINE)) {
+                logger.fine("End encoding component " +
+                            component.getId() + " since " +
+                            "rendered attribute is set to false ");
+            }
+            return;
+        }
+
+        // Render our children recursively
+        Iterator kids = getChildren(component);
+        while (kids.hasNext()) {
+            encodeRecursive(context, (UIComponent) kids.next());
+        }
+        if (logger.isLoggable(Level.FINER)) {
+            logger.log(Level.FINER,
+                       "End encoding children " + component.getId());
+        }
+
+    }
+
+
+    public void encodeEnd(FacesContext context, UIComponent component)
+          throws IOException {
+        if (context == null || component == null) {
+            // PENDING - i18n
+            throw new NullPointerException("'context' and/or 'component is null");
+        }
+
+        // suppress rendering if "rendered" property on the component is
+        // false.
+        if (!component.isRendered()) {
+            if (logger.isLoggable(Level.FINE)) {
+                logger.fine("End encoding component " +
+                            component.getId() + " since " +
+                            "rendered attribute is set to false ");
+            }
+            return;
+        }
+
+        ResponseWriter writer = context.getResponseWriter();
+        writer.endElement("groupbox");
+        writer.writeText("\n", null);
+
+        if (logger.isLoggable(Level.FINER)) {
+            logger.log(Level.FINER, "End encoding component " +
+                                    component.getId());
+        }
+
+    }
+}
diff --git a/jsf-demo/archive/renderkits/src/java/renderkits/renderkit/xul/LabelRenderer.java b/jsf-demo/archive/renderkits/src/java/renderkits/renderkit/xul/LabelRenderer.java
new file mode 100644
index 0000000..bafe68b
--- /dev/null
+++ b/jsf-demo/archive/renderkits/src/java/renderkits/renderkit/xul/LabelRenderer.java
@@ -0,0 +1,316 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+// LabelRenderer.java
+
+package renderkits.renderkit.xul;
+
+import javax.faces.component.NamingContainer;
+import javax.faces.component.UIComponent;
+import javax.faces.component.UINamingContainer;
+import javax.faces.context.FacesContext;
+import javax.faces.context.ResponseWriter;
+
+import java.io.IOException;
+import java.util.logging.Level;
+
+/** <p><B>LabelRenderer</B> renders Label element.<p>. */
+public class LabelRenderer extends BaseRenderer {
+
+    //
+    // Protected Constants
+    //
+    //
+    // Class Variables
+    //
+
+    //
+    // Instance Variables
+    //
+    private static final String RENDER_END_ELEMENT =
+          "com.sun.faces.RENDER_END_ELEMENT";
+    // Attribute Instance Variables
+
+    // Relationship Instance Variables
+
+    //
+    // Constructors and Initializers    
+    //
+
+    public LabelRenderer() {
+        super();
+    }
+
+    //
+    // Class methods
+    //
+
+    //
+    // General Methods
+    //
+
+    //
+    // Methods From Renderer
+    //
+
+    public void encodeBegin(FacesContext context, UIComponent component)
+          throws IOException {
+
+        if (context == null || component == null) {
+            // PENDING - i18n
+            throw new NullPointerException("'context' and/or 'component is null");
+        }
+
+        if (logger.isLoggable(Level.FINER)) {
+            logger.log(Level.FINER,
+                       "Begin decoding component " + component.getId());
+        }
+        ResponseWriter writer = null;
+        String forValue = null;
+        String styleClass = (String)
+              component.getAttributes().get("styleClass");
+
+        // suppress rendering if "rendered" property on the component is
+        // false.
+        if (!component.isRendered()) {
+            if (logger.isLoggable(Level.FINE)) {
+                logger.fine("End encoding component " +
+                            component.getId() + " since " +
+                            "rendered attribute is set to false ");
+            }
+            return;
+        }
+        writer = context.getResponseWriter();
+
+        UIComponent forComponent = null;
+        String forClientId = null;
+        forValue = (String) component.getAttributes().get("for");
+        if (forValue != null) {
+            forComponent = getForComponent(context, forValue, component);
+            if (forComponent == null) {
+                // it could that the component hasn't been created yet. So
+                // construct the clientId for component.
+                forClientId = getForComponentClientId(component, context,
+                                                      forValue);
+            } else {
+                forClientId = forComponent.getClientId(context);
+            }
+        }
+
+        // set a temporary attribute on the component to indicate that
+        // label end element needs to be rendered.
+        component.getAttributes().put(RENDER_END_ELEMENT, "yes");
+        writer.writeText("\n", null);
+        writer.startElement("box", component);
+        String boxClass = (String)
+              component.getAttributes().get("boxClass");
+        if (boxClass != null) {
+            writer.writeAttribute("class", boxClass, "boxClass");
+        }
+        String boxStyle = (String)
+              component.getAttributes().get("boxStyle");
+        if (boxStyle != null) {
+            writer.writeAttribute("style", boxStyle, "boxStyle");
+        }
+        String pack = (String)
+              component.getAttributes().get("pack");
+        if (pack != null) {
+            writer.writeAttribute("pack", pack, "pack");
+        }
+        writer.writeText("\n", null);
+        writer.startElement("label", component);
+        writeIdAttributeIfNecessary(context, writer, component);
+        if (forClientId != null) {
+            writer.writeAttribute("control", forClientId, "control");
+        }
+
+        String style = (String)
+              component.getAttributes().get("style");
+        if (null != style) {
+            writer.writeAttribute("style", style, "style");
+        }
+        if (null != styleClass) {
+            writer.writeAttribute("class", styleClass, "styleClass");
+        }
+
+        // render the curentValue as label text if specified.
+        String value = getCurrentValue(context, component);
+        if (logger.isLoggable(Level.FINE)) {
+            logger.fine("Value to be rendered " + value);
+        }
+        if (value != null && value.length() != 0) {
+            boolean escape = true;
+            Object val = null;
+            if (null != (val = component.getAttributes().get("escape"))) {
+                if (val instanceof Boolean) {
+                    escape = ((Boolean) val).booleanValue();
+                } else if (val instanceof String) {
+                    try {
+                        escape =
+                              Boolean.valueOf((String) val).booleanValue();
+                    } catch (Throwable e) {
+                    }
+                }
+            }
+            writer.writeAttribute("value", value, "value");
+        }
+        writer.flush();
+    }
+
+
+    public void encodeEnd(FacesContext context, UIComponent component)
+          throws IOException {
+
+        if (context == null || component == null) {
+            // PENDING - i18n
+            throw new NullPointerException("'context' and/or 'component is null");
+        }
+
+        // render label end element if RENDER_END_ELEMENT is set.
+        String render = (String) component.getAttributes().get(
+              RENDER_END_ELEMENT);
+        if ("yes".equals(render)) {
+            component.getAttributes().remove(RENDER_END_ELEMENT);
+            ResponseWriter writer = context.getResponseWriter();
+            writer.endElement("label");
+            writer.writeText("\n", null);
+            writer.endElement("box");
+        }
+        if (logger.isLoggable(Level.FINER)) {
+            logger.log(Level.FINER,
+                       "End encoding component " + component.getId());
+        }
+    }
+
+    /**
+     * Builds and returns the clientId of the component that is
+     * represented by the forValue. Since the component has not been created
+     * yet, invoking <code>getClientId(context)</code> is not possible.
+     *
+     * @param component UIComponent that represents the label
+     * @param context   FacesContext for this request
+     * @param forValue  String representing the "id" of the component
+     *                  that this label represents.
+     *
+     * @return String clientId of the component represented by the forValue.
+     */
+    private String getForComponentClientId(UIComponent component,
+                                           FacesContext context,
+                                           String forValue) {
+        String result = null;
+        // ASSUMPTION: The component for which this acts as the label
+        // as well ths label component are part of the same form.
+        // locate the nearest NamingContainer and get its clientId.
+        UIComponent parent = component.getParent();
+        while (parent != null) {
+            if (parent instanceof NamingContainer) {
+                break;
+            }
+            parent = parent.getParent();
+        }
+        if (parent == null) {
+            if (logger.isLoggable(Level.WARNING)) {
+                logger.warning("component " + component.getId() +
+                               " must be enclosed inside a form ");
+            }
+            return result;
+        }
+        String parentClientId = parent.getClientId(context);
+        // prepend the clientId of the nearest container to the forValue.
+        result = parentClientId + UINamingContainer.getSeparatorChar(context) + forValue;
+        return result;
+    }
+
+    /**
+     * Locates the component identified by <code>forComponent</code>
+     *
+     * @param forComponent - the component to search for
+     * @param component    - the starting point in which to begin the search
+     *
+     * @return the component with the the <code>id</code that matches
+     *         <code>forComponent</code> otheriwse null if no match is found.
+     */
+    private UIComponent getForComponent(FacesContext context,
+                                        String forComponent,
+                                        UIComponent component) {
+        if (null == forComponent || forComponent.length() == 0) {
+            return null;
+        }
+
+        UIComponent result = null;
+        UIComponent currentParent = component;
+        try {
+            // Check the naming container of the current
+            // component for component identified by
+            // 'forComponent'
+            while (currentParent != null) {
+                // If the current component is a NamingContainer,
+                // see if it contains what we're looking for.
+                result = currentParent.findComponent(forComponent);
+                if (result != null) {
+                    break;
+                }
+                // if not, start checking further up in the view
+                currentParent = currentParent.getParent();
+            }
+            // no hit from above, scan for a NamingContainer
+            // that contains the component we're looking for from the root.
+            if (result == null) {
+                result =
+                      findUIComponentBelow(context.getViewRoot(), forComponent);
+            }
+        } catch (Throwable t) {
+            //PENDING i18n
+            throw new RuntimeException("Component not found:" + forComponent);
+        }
+        // log a message if we were unable to find the specified
+        // component (probably a misconfigured 'for' attribute
+        if (result == null) {
+            if (logger.isLoggable(Level.WARNING)) {
+                //PENDING i18n
+                logger.warning("Component not found in view:" + forComponent);
+            }
+        }
+        return result;
+    }
+
+    // The testcase for this class is TestRenderResponsePhase.java
+
+} // end of class LabelRenderer
diff --git a/jsf-demo/archive/renderkits/src/java/renderkits/renderkit/xul/ResponsePhaseListener.java b/jsf-demo/archive/renderkits/src/java/renderkits/renderkit/xul/ResponsePhaseListener.java
new file mode 100644
index 0000000..0caddeb
--- /dev/null
+++ b/jsf-demo/archive/renderkits/src/java/renderkits/renderkit/xul/ResponsePhaseListener.java
@@ -0,0 +1,93 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package renderkits.renderkit.xul;
+
+import javax.faces.context.FacesContext;
+import javax.faces.event.PhaseEvent;
+import javax.faces.event.PhaseId;
+import javax.faces.event.PhaseListener;
+import javax.servlet.http.HttpServletResponse;
+
+import java.util.Map;
+
+/**
+ * This <code>PhaseListener</code> executes after Invoke Applications
+ * Phase of the request processing lifecycle.  It detects the presence
+ * of an <code>XMLHttpRequest</code> and:
+ * <ul><li>grabs the request URI from the request (this will be the
+ * URI of the new uocoming view) and adds it to the response;</li>
+ * </ul>
+ */
+public class ResponsePhaseListener implements PhaseListener {
+
+    private static final String XML_HTTP = "XML-HTTP";
+    private static final String VIEW_URI = "VIEW-URI";
+
+    public ResponsePhaseListener() {
+    }
+
+    public void afterPhase(PhaseEvent event) {
+        // Disregard requests that are not XMLHttpRequest(s) 
+        Map<String, String> requestHeaderMap =
+              event.getFacesContext().getExternalContext().
+                    getRequestHeaderMap();
+        if (requestHeaderMap.get(XML_HTTP) == null) {
+            return;
+        }
+        // If we're dealing with an XMLHttpRequest...
+        // Get the URI and stuff it in the response header.
+        FacesContext context = event.getFacesContext();
+        String viewId = context.getViewRoot().getViewId();
+        String actionURL = context.getApplication().getViewHandler()
+              .getActionURL(context, viewId);
+        HttpServletResponse response =
+              (HttpServletResponse) context.getExternalContext().getResponse();
+        response.setHeader("Cache-Control", "no-cache");
+        response.setHeader(VIEW_URI, actionURL);
+    }
+
+    public void beforePhase(PhaseEvent event) {
+    }
+
+    public PhaseId getPhaseId() {
+        return PhaseId.INVOKE_APPLICATION;
+    }
+}
diff --git a/jsf-demo/archive/renderkits/src/java/renderkits/renderkit/xul/TextRenderer.java b/jsf-demo/archive/renderkits/src/java/renderkits/renderkit/xul/TextRenderer.java
new file mode 100644
index 0000000..60b011f
--- /dev/null
+++ b/jsf-demo/archive/renderkits/src/java/renderkits/renderkit/xul/TextRenderer.java
@@ -0,0 +1,173 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+// TextRenderer.java
+
+package renderkits.renderkit.xul;
+
+import javax.faces.component.UIComponent;
+import javax.faces.component.UIInput;
+import javax.faces.component.UIOutput;
+import javax.faces.context.FacesContext;
+import javax.faces.context.ResponseWriter;
+
+import java.io.IOException;
+
+/**
+ * <B>TextRenderer</B> is a class that renders the current value of
+ * <code>UIInput<code> or <code>UIOutput<code> component as a input field or
+ * static text.
+ */
+public class TextRenderer extends BaseRenderer {
+
+    //
+    // Protected Constants
+    //
+
+    //
+    // Class Variables
+    //
+
+    //
+    // Instance Variables
+    //
+
+    // Attribute Instance Variables
+
+    // Relationship Instance Variables
+
+    //
+    // Constructors and Initializers    
+    //
+
+    public TextRenderer() {
+        super();
+    }
+
+    //
+    // Class methods
+    //
+
+    //
+    // General Methods
+    //
+
+    //
+    // Methods From Renderer
+    //
+
+    public void encodeBegin(FacesContext context, UIComponent component)
+          throws IOException {
+        if (context == null || component == null) {
+            // PENDING - i18n
+            throw new NullPointerException("'context' and/or 'component is null");
+        }
+    }
+
+
+    public void encodeEnd(FacesContext context, UIComponent component)
+          throws IOException {
+
+        ResponseWriter writer = context.getResponseWriter();
+        boolean
+              shouldWriteIdAttribute = false,
+              isOutput = false;
+
+        String
+              style = (String) component.getAttributes().get("style"),
+              styleClass = (String) component.getAttributes().get("styleClass");
+        if (component instanceof UIInput) {
+            writer.startElement("textbox", component);
+            writeIdAttributeIfNecessary(context, writer, component);
+            writer.writeAttribute("type", "text", null);
+            writer.writeAttribute("name", (component.getClientId(context)),
+                                  "clientId");
+
+            // render default text specified
+            String currentValue = getCurrentValue(context, component);
+            if (currentValue != null) {
+                writer.writeAttribute("value", currentValue, "value");
+            }
+            if (null != styleClass) {
+                writer.writeAttribute("class", styleClass, "styleClass");
+            }
+            if (null != style) {
+                writer.writeAttribute("style", style, "style");
+            }
+
+            writer.endElement("textbox");
+
+        } else if (isOutput = (component instanceof UIOutput)) {
+            writer.writeText("\n", null);
+            writer.startElement("description", component);
+            writeIdAttributeIfNecessary(context, writer, component);
+            if (null != styleClass) {
+                writer.writeAttribute("class", styleClass, "styleClass");
+            }
+            if (null != style) {
+                writer.writeAttribute("style", style, "style");
+            }
+            String currentValue = getCurrentValue(context, component);
+            if (currentValue != null) {
+                Object val = null;
+                boolean escape = true;
+                if (null != (val = component.getAttributes().get("escape"))) {
+                    if (val instanceof Boolean) {
+                        escape = ((Boolean) val).booleanValue();
+                    } else if (val instanceof String) {
+                        try {
+                            escape =
+                                  Boolean.valueOf((String) val).booleanValue();
+                        } catch (Throwable e) {
+                        }
+                    }
+                }
+                if (escape) {
+                    writer.writeText(currentValue, "value");
+                } else {
+                    writer.write(currentValue);
+                }
+            }
+            writer.endElement("description");
+        }
+    }
+} // end of class TextRenderer
+
+
diff --git a/jsf-demo/archive/renderkits/src/java/renderkits/renderkit/xul/XULRenderKit.java b/jsf-demo/archive/renderkits/src/java/renderkits/renderkit/xul/XULRenderKit.java
new file mode 100644
index 0000000..e5cca02
--- /dev/null
+++ b/jsf-demo/archive/renderkits/src/java/renderkits/renderkit/xul/XULRenderKit.java
@@ -0,0 +1,280 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package renderkits.renderkit.xul;
+
+import javax.faces.context.FacesContext;
+import javax.faces.context.ResponseStream;
+import javax.faces.context.ResponseWriter;
+import javax.faces.render.RenderKit;
+import javax.faces.render.Renderer;
+import javax.faces.render.ResponseStateManager;
+
+import java.io.IOException;
+import java.io.OutputStream;
+import java.io.Writer;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * <p><B>XULRenderKit</B> is a class that houses a collection of <code>XUL</code>
+ * renderers.  It also creates the <code>ResponseWriter</code> used to write
+ * <code>XUL</code> markup.</p>
+ */
+public class XULRenderKit extends RenderKit {
+
+//
+// Protected Constants
+//
+
+//
+// Class Variables
+//
+
+//
+// Instance Variables
+//
+    // used for ResponseWriter creation;
+    private static String XUL_CONTENT_TYPE = "application/vnd.mozilla.xul+xml";
+    private static String ALL_MEDIA = "*/*";
+
+    private static String CHAR_ENCODING = "ISO-8859-1";
+    private static String CONTENT_TYPE_IS_XUL = "ContentTypeIsXUL";
+//
+// Ivars used during actual client lifetime
+//
+
+// Relationship Instance Variables
+
+    /**
+     * Keys are String renderer family.  Values are HashMaps.  Nested
+     * HashMap keys are Strings for the rendererType, and values are the
+     * Renderer instances themselves.
+     */
+
+    private HashMap<String, HashMap<Object, Renderer>> rendererFamilies;
+
+    private ResponseStateManager responseStateManager = null;
+//
+// Constructors and Initializers    
+//
+
+    public XULRenderKit() {
+        super();
+        rendererFamilies = new HashMap<String, HashMap<Object, Renderer>>();
+    }
+
+    //
+    // Class methods
+    //
+
+    //
+    // General Methods
+    //
+
+    //
+    // Methods From RenderKit
+    //
+
+    public void addRenderer(String family, String rendererType,
+                            Renderer renderer) {
+        if (family == null || rendererType == null || renderer == null) {
+            // PENDING - i18n
+            String message = "Argument Error: One or more parameters are null.";
+            message = message + " family " + family + " rendererType " +
+                      rendererType + " renderer " + renderer;
+            throw new NullPointerException(message);
+
+        }
+        HashMap<Object, Renderer> renderers = null;
+
+        synchronized (rendererFamilies) {
+            if (null == (renderers = (HashMap) rendererFamilies.get(family))) {
+                rendererFamilies
+                      .put(family, renderers = new HashMap<Object, Renderer>());
+            }
+            renderers.put(rendererType, renderer);
+        }
+    }
+
+
+    public Renderer getRenderer(String family, String rendererType) {
+
+        if (rendererType == null || family == null) {
+            // PENDING - i18n
+            String message = "Argument Error: One or more parameters are null.";
+            message = message + " family " + family + " rendererType " +
+                      rendererType;
+            throw new NullPointerException(message);
+        }
+
+        HashMap<Object, Renderer> renderers = null;
+        Renderer renderer = null;
+
+        if (null != (renderers = (HashMap) rendererFamilies.get(family))) {
+            renderer = (Renderer) renderers.get(rendererType);
+        }
+
+        return renderer;
+    }
+
+
+    public synchronized ResponseStateManager getResponseStateManager() {
+        if (responseStateManager == null) {
+            responseStateManager = new XULResponseStateManager();
+        }
+        return responseStateManager;
+    }
+
+
+    public ResponseWriter createResponseWriter(Writer writer,
+                                               String desiredContentTypeList,
+                                               String characterEncoding) {
+        if (writer == null) {
+            return null;
+        }
+        String contentType = null;
+        FacesContext context = FacesContext.getCurrentInstance();
+
+        String [] supportedTypes = {XUL_CONTENT_TYPE};
+        String [] desiredTypes = null;
+
+        // Obtain the desired content type list
+        // first crack is the passed in list
+        if (null == desiredContentTypeList) {
+            // second crack is the response content type
+            desiredContentTypeList =
+                  context.getExternalContext().getResponseContentType();
+        }
+        if (null == desiredContentTypeList) {
+            // third crack is the Accept header.
+            desiredContentTypeList = (String)
+                  context.getExternalContext().getRequestHeaderMap()
+                        .get("Accept");
+        }
+        // fourth, default to "application/vnd.mozilla.xul+xml" 
+        if (null == desiredContentTypeList ||
+            desiredContentTypeList.equals(ALL_MEDIA)) {
+            desiredContentTypeList = XUL_CONTENT_TYPE;
+        }
+
+        if (null != desiredContentTypeList) {
+            Map<String, Object> requestMap =
+                  context.getExternalContext().getRequestMap();
+
+            desiredTypes = contentTypeSplit(desiredContentTypeList);
+            String curContentType = null, curDesiredType = null;
+
+            // For each entry in the desiredTypes array, look for a match in 
+            // the supportedTypes array
+            for (int i = 0; i < desiredTypes.length; i++) {
+                curDesiredType = desiredTypes[i];
+                for (int j = 0; j < supportedTypes.length; j++) {
+                    curContentType = supportedTypes[j].trim();
+                    if (-1 != curDesiredType.indexOf(curContentType)) {
+                        contentType = curDesiredType;
+                        break;
+                    }
+                }
+                if (null != contentType) {
+                    break;
+                }
+            }
+            // If none of the contentTypes about which we know was in
+            // desiredContentTypeList
+            if (null == contentType) {
+                // PENDING - i18n
+                throw new IllegalArgumentException("Unrecognized Content Type.");
+            }
+        } else {
+            // there was no argument contentType list, or Accept header
+            contentType = XUL_CONTENT_TYPE;
+        }
+
+        if (characterEncoding == null) {
+            characterEncoding = CHAR_ENCODING;
+        }
+
+        return new XULResponseWriter(writer, contentType, characterEncoding);
+    }
+
+    private String[] contentTypeSplit(String contentTypeString) {
+        String [] result = contentTypeString.split(",");
+        for (int i = 0; i < result.length; i++) {
+            int semicolon = result[i].indexOf(";");
+            if (-1 != semicolon) {
+                result[i] = result[i].substring(0, semicolon);
+            }
+        }
+        return result;
+    }
+
+
+    public ResponseStream createResponseStream(OutputStream out) {
+        final OutputStream output = out;
+        return new ResponseStream() {
+            public void write(int b) throws IOException {
+                output.write(b);
+            }
+
+
+            public void write(byte b[]) throws IOException {
+                output.write(b);
+            }
+
+
+            public void write(byte b[], int off, int len) throws IOException {
+                output.write(b, off, len);
+            }
+
+
+            public void flush() throws IOException {
+                output.flush();
+            }
+
+
+            public void close() throws IOException {
+                output.close();
+            }
+        };
+    }
+
+} // end of class XULRenderKit
+
diff --git a/jsf-demo/archive/renderkits/src/java/renderkits/renderkit/xul/XULResponseStateManager.java b/jsf-demo/archive/renderkits/src/java/renderkits/renderkit/xul/XULResponseStateManager.java
new file mode 100644
index 0000000..94ff10b
--- /dev/null
+++ b/jsf-demo/archive/renderkits/src/java/renderkits/renderkit/xul/XULResponseStateManager.java
@@ -0,0 +1,332 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package renderkits.renderkit.xul;
+
+import javax.faces.FacesException;
+import javax.faces.application.StateManager;
+import javax.faces.context.FacesContext;
+import javax.faces.context.ResponseWriter;
+import javax.faces.render.ResponseStateManager;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.util.Map;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import java.util.zip.GZIPInputStream;
+import java.util.zip.GZIPOutputStream;
+
+import renderkits.renderkit.SerializedView;
+import renderkits.util.Base64;
+import renderkits.util.ByteArrayGuard;
+import renderkits.util.Util;
+
+/**
+ * <p><strong>XULResponseStateManager</strong> is the helper class to
+ * {@link javax.faces.application.StateManager} that knows the specific
+ * rendering technology being used to generate the response.  This class
+ * will write out state using hidden <code>XUL <text></code> elements.
+ */
+public class XULResponseStateManager extends ResponseStateManager {
+
+    //
+    // Protected Constants
+    //
+
+    // Log instance for this class
+    private static final Logger logger =
+          Util.getLogger(Util.FACES_LOGGER + Util.RENDERKIT_LOGGER);
+
+    private static final String FACES_VIEW_STATE =
+          "com.sun.faces.FACES_VIEW_STATE";
+
+    private static final String COMPRESS_STATE_PARAM =
+          "com.sun.faces.COMPRESS_STATE";
+    //
+    // Class Variables
+    //
+
+    //
+    // Instance Variables
+    //
+    private Boolean compressStateSet = null;
+    private ByteArrayGuard byteArrayGuard = null;
+
+    //
+    // Ivars used during actual client lifetime
+    //
+
+    // Relationship Instance Variables
+
+    //
+    // Constructors and Initializers    
+    //
+
+    public XULResponseStateManager() {
+        super();
+        byteArrayGuard = new ByteArrayGuard();
+    }
+
+    //
+    // Class methods
+    //
+
+    //
+    // General Methods
+    //
+
+    //
+    // Methods From ResponseStateManager
+    //
+
+    public Object getState(FacesContext context, String viewId) {
+        Object stateArray[] = {getTreeStructure(context, viewId),
+                               getComponentState(context)};
+        return stateArray;
+    }
+
+    public boolean isPostback(FacesContext context) {
+        boolean result = context.getExternalContext().getRequestParameterMap().
+              containsKey(javax.faces.render.ResponseStateManager.VIEW_STATE_PARAM);
+        return result;
+    }
+
+    public void writeState(FacesContext context,
+                           Object state) throws IOException {
+        SerializedView view = null;
+        if (state instanceof SerializedView) {
+            view = (SerializedView) state;
+        } else {
+            if (state instanceof Object[]) {
+                Object[] stateArray = (Object[]) state;
+                if (2 == stateArray.length) {
+                    StateManager stateManager =
+                          context.getApplication().getStateManager();
+                    view = new SerializedView(stateArray[0],
+                                              stateArray[1]);
+                } else {
+                    //PENDING - I18N
+                    if (logger.isLoggable(Level.SEVERE)) {
+                        logger.log(Level.SEVERE,
+                                   "State is not an expected array of length 2.");
+                    }
+                    throw new IOException(
+                          "State is not an expected array of length 2.");
+                }
+            } else {
+                //PENDING - I18N
+                if (logger.isLoggable(Level.SEVERE)) {
+                    logger.log(Level.SEVERE,
+                               "State is not an expected array of length 2.");
+                }
+                throw new IOException(
+                      "State is not an expected array of length 2.");
+            }
+        }
+        writeState(context, view);
+    }
+
+    private void writeState(FacesContext context, SerializedView view)
+          throws IOException {
+        StateManager stateManager = context.getApplication().getStateManager();
+        ResponseWriter writer = context.getResponseWriter();
+
+        writer.startElement("textbox", context.getViewRoot());
+        writer.writeAttribute("name",
+                              javax.faces.render.ResponseStateManager.VIEW_STATE_PARAM,
+                              null);
+        writer.writeAttribute("id",
+                              javax.faces.render.ResponseStateManager.VIEW_STATE_PARAM,
+                              null);
+
+
+        if (stateManager.isSavingStateInClient(context)) {
+            GZIPOutputStream zos = null;
+            ObjectOutputStream oos = null;
+            boolean compress = isCompressStateSet(context);
+
+            ByteArrayOutputStream bos = new ByteArrayOutputStream();
+            if (compress) {
+                if (logger.isLoggable(Level.FINE)) {
+                    logger.fine("Compressing state before saving..");
+                }
+                zos = new GZIPOutputStream(bos);
+                oos = new ObjectOutputStream(zos);
+            } else {
+                oos = new ObjectOutputStream(bos);
+            }
+            oos.writeObject(view.getStructure());
+            oos.writeObject(view.getState());
+            oos.close();
+            if (compress) {
+                zos.close();
+            }
+            byte[] securedata = byteArrayGuard.encrypt(context,
+                                                       bos.toByteArray());
+            bos.close();
+            String valueToWrite = (new String(Base64.encode(securedata),
+                                              "ISO-8859-1"));
+            writer.writeAttribute("value", valueToWrite, null);
+            writer.writeAttribute("hidden", "true", "hidden");
+            writer.writeText(valueToWrite, null);
+        } else {
+            writer.writeAttribute("value", view.getStructure(), null);
+            writer.writeAttribute("hidden", "true", "hidden");
+            writer.writeText(view.getStructure(), null);
+        }
+        writer.endElement("textbox");
+        writer.writeText("\n", null);
+
+        // write this out regardless of state saving mode
+        // Only write it out if there is a default render kit Identifier specified,
+        // and this render kit identifier is not the default.
+        String result = context.getApplication().getDefaultRenderKitId();
+        if ((null != result && !result.equals("XUL")) || result == null) {
+            writer.startElement("textbox", context.getViewRoot());
+            writer.writeAttribute("name",
+                                  ResponseStateManager.RENDER_KIT_ID_PARAM,
+                                  "name");
+            writer.writeAttribute("id",
+                                  ResponseStateManager.RENDER_KIT_ID_PARAM,
+                                  "id");
+            writer.writeAttribute("value", "XUL", "value");
+            writer.writeAttribute("hidden", "true", "hidden");
+            writer.writeText("XUL", null);
+            writer.endElement("textbox");
+            writer.writeText("\n", null);
+        }
+    }
+
+    private Object getComponentState(FacesContext context) {
+        // requestMap is a local variable so we don't need to synchronize
+        Map<String, Object> requestMap =
+              context.getExternalContext().getRequestMap();
+        Object state = requestMap.get(FACES_VIEW_STATE);
+        // null out the temporary attribute, since we don't need it anymore.
+        requestMap.remove(FACES_VIEW_STATE);
+        return state;
+    }
+
+    private Object getTreeStructure(FacesContext context,
+                                    String treeId) {
+        StateManager stateManager = context.getApplication().getStateManager();
+
+
+        Map<String, String> requestParamMap = context.getExternalContext()
+              .getRequestParameterMap();
+
+
+        String viewString = requestParamMap.get(
+              javax.faces.render.ResponseStateManager.VIEW_STATE_PARAM);
+        Object structure = null;
+        if (viewString == null) {
+            return null;
+        }
+
+        if (stateManager.isSavingStateInClient(context)) {
+            Object state = null;
+            ByteArrayInputStream bis = null;
+            GZIPInputStream gis = null;
+            ObjectInputStream ois = null;
+            boolean compress = isCompressStateSet(context);
+
+            try {
+                byte[] bytes = byteArrayGuard.decrypt(context,
+                                                      (Base64.decode(viewString.getBytes())));
+                bis = new ByteArrayInputStream(bytes);
+                if (isCompressStateSet(context)) {
+                    if (logger.isLoggable(Level.FINE)) {
+                        logger.fine("Deflating state before restoring..");
+                    }
+                    gis = new GZIPInputStream(bis);
+                    ois = new ObjectInputStream(gis);
+                } else {
+                    ois = new ObjectInputStream(bis);
+                }
+                structure = ois.readObject();
+                state = ois.readObject();
+                Map<String, Object> requestMap =
+                      context.getExternalContext().getRequestMap();
+                // store the state object temporarily in request scope
+                // until it is processed by getComponentState
+                // which resets it.
+                requestMap.put(FACES_VIEW_STATE, state);
+                bis.close();
+                if (compress) {
+                    gis.close();
+                }
+                ois.close();
+            } catch (java.io.OptionalDataException ode) {
+                logger.log(Level.SEVERE, ode.getMessage(), ode);
+                throw new FacesException(ode);
+            } catch (java.lang.ClassNotFoundException cnfe) {
+                logger.log(Level.SEVERE, cnfe.getMessage(), cnfe);
+                throw new FacesException(cnfe);
+            } catch (java.io.IOException iox) {
+                logger.log(Level.SEVERE, iox.getMessage(), iox);
+                throw new FacesException(iox);
+            }
+        } else {
+            structure = viewString;
+        }
+        return structure;
+    }
+
+    private boolean isCompressStateSet(FacesContext context) {
+        if (null != compressStateSet) {
+            return compressStateSet.booleanValue();
+        }
+        compressStateSet = Boolean.TRUE;
+
+        String compressStateParam = context.getExternalContext().
+              getInitParameter(COMPRESS_STATE_PARAM);
+        if (compressStateParam != null) {
+            compressStateSet = Boolean.valueOf(compressStateParam);
+        }
+        return compressStateSet.booleanValue();
+    }
+
+
+} // end of class XULResponseStateManager
+
diff --git a/jsf-demo/archive/renderkits/src/java/renderkits/renderkit/xul/XULResponseWriter.java b/jsf-demo/archive/renderkits/src/java/renderkits/renderkit/xul/XULResponseWriter.java
new file mode 100644
index 0000000..bde407c
--- /dev/null
+++ b/jsf-demo/archive/renderkits/src/java/renderkits/renderkit/xul/XULResponseWriter.java
@@ -0,0 +1,552 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package renderkits.renderkit.xul;
+
+import javax.faces.FacesException;
+import javax.faces.component.UIComponent;
+import javax.faces.context.ResponseWriter;
+
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.io.Writer;
+
+import renderkits.util.Util;
+
+
+/**
+ * <p><strong>XULResponseWriter</strong> is an <code>XUL</code> specific implementation
+ * of the <code>ResponseWriter</code> abstract class.
+ */
+public class XULResponseWriter extends ResponseWriter {
+
+    // Content Type for this Writer.
+    //
+    private String contentType = "application/vnd.mozilla.xul+xml";
+
+    // Character encoding of that Writer - this may be null
+    // if the encoding isn't known.
+    //
+    private String encoding = null;
+
+    // Writer to use for output;
+    //
+    private Writer writer = null;
+
+    // True when we need to close a start tag
+    //
+    private boolean closeStart;
+
+    // True when we shouldn't be escaping output (basically,
+    // inside of <script> and <style> elements).
+    //
+    private boolean dontEscape;
+
+    // Internal buffer used when outputting properly escaped information
+    // using Util class.
+    //
+    private char[] buffer = new char[1028];
+    private char[] charHolder = new char[1];
+
+
+    /**
+     * Constructor sets the <code>ResponseWriter</code> and
+     * encoding.
+     *
+     * @param writer      the <code>ResponseWriter</code>
+     * @param contentType the content type.
+     * @param encoding    the character encoding.
+     *
+     * @throws if the encoding is not recognized.
+     */
+    public XULResponseWriter(Writer writer, String contentType, String encoding)
+          throws FacesException {
+        this.writer = writer;
+
+        if (null != contentType) {
+            this.contentType = contentType;
+        }
+        this.encoding = encoding;
+
+        // Check the character encoding
+        try {
+            Util.validateEncoding(encoding);
+        } catch (UnsupportedEncodingException e) {
+            // PENDING i18n
+            throw new IllegalArgumentException(
+                  "Unrecognized Character Encoding.");
+        }
+    }
+
+
+    /** @return the content type for this ResponseWriter. */
+    public String getContentType() {
+        return contentType;
+    }
+
+
+    /**
+     * @return the character encoding, such as "ISO-8859-1" for this
+     *         ResponseWriter.  Refer to:
+     *         <a href="http://www.iana.org/assignments/character-sets">theIANA</a>
+     *         for a list of character encodings.
+     */
+    public String getCharacterEncoding() {
+        return encoding;
+    }
+
+
+    /**
+     * <p>Write the text that should begin a response.</p>
+     *
+     * @throws IOException if an input/output error occurs
+     */
+    public void startDocument() throws IOException {
+        // do nothing;
+    }
+
+
+    /** Output the text for the end of a document. */
+    public void endDocument() throws IOException {
+        writer.flush();
+    }
+
+
+    /**
+     * Flush any buffered output to the contained writer.
+     *
+     * @throws IOException if an input/output error occurs.
+     */
+    public void flush() throws IOException {
+        // close any previously started element, if necessary
+        closeStartIfNecessary();
+    }
+
+
+    /**
+     * <p>Write the start of an element, up to and including the
+     * element name.  Clients call <code>writeAttribute()</code> or
+     * <code>writeURIAttribute()</code> methods to add attributes after
+     * calling this method.
+     *
+     * @param name                Name of the starting element
+     * @param componentForElement The UIComponent instance that applies to this
+     *                            element.  This argument may be <code>null</code>.
+     *
+     * @throws IOException          if an input/output error occurs
+     * @throws NullPointerException if <code>name</code>
+     *                              is <code>null</code>
+     */
+    public void startElement(String name, UIComponent componentForElement)
+          throws IOException {
+        if (name == null) {
+            // PENDING i18n
+            throw new NullPointerException(
+                  "Argument Error: One or more parameters are null.");
+        }
+        closeStartIfNecessary();
+        char firstChar = name.charAt(0);
+        if ((firstChar == 's') ||
+            (firstChar == 'S')) {
+            if ("script".equalsIgnoreCase(name) ||
+                "style".equalsIgnoreCase(name)) {
+                dontEscape = true;
+            }
+        }
+
+        //PENDING (horwat) using String as a result of Tomcat char writer
+        //         ArrayIndexOutOfBoundsException (3584)
+        writer.write("<");
+        writer.write(name);
+        closeStart = true;
+    }
+
+
+    /**
+     * <p>Write the end of an element. This method will first
+     * close any open element created by a call to
+     * <code>startElement()</code>.
+     *
+     * @param name Name of the element to be ended
+     *
+     * @throws IOException          if an input/output error occurs
+     * @throws NullPointerException if <code>name</code>
+     *                              is <code>null</code>
+     */
+    public void endElement(String name) throws IOException {
+        if (name == null) {
+            // PENDING - i18n
+            throw new NullPointerException(
+                  "Argument Error: One or more parameters are null.");
+        }
+
+        // always turn escaping back on once an element ends
+        dontEscape = false;
+        // See if we need to close the start of the last element
+        if (closeStart) {
+            writer.write(">");
+            closeStart = false;
+        }
+
+        writer.write("</");
+        writer.write(name);
+        writer.write(">");
+    }
+
+    // PENDING - This is a very naive implementaiton
+
+    public void startCDATA() throws IOException {
+        dontEscape = true;
+        writer.write("!<CDATA[[");
+    }
+    public void endCDATA() throws IOException {
+        writer.write("]]>");
+        dontEscape = false;
+    }
+
+    /**
+     * <p>Write a properly escaped attribute name and the corresponding
+     * value.  The value text will be converted to a String if
+     * necessary.  This method may only be called after a call to
+     * <code>startElement()</code>, and before the opened element has been
+     * closed.</p>
+     *
+     * @param name                  Attribute name to be added
+     * @param value                 Attribute value to be added
+     * @param componentPropertyName The name of the component property to
+     *                              which this attribute argument applies.  This argument may be
+     *                              <code>null</code>.
+     *
+     * @throws IllegalStateException if this method is called when there
+     *                               is no currently open element
+     * @throws IOException           if an input/output error occurs
+     * @throws NullPointerException  if <code>name</code> is <code>null</code>
+     */
+    public void writeAttribute(String name, Object value,
+                               String componentPropertyName)
+          throws IOException {
+        if (name == null) {
+            // PENDING i18n
+            throw new NullPointerException(
+                  "Argument Error: One or more parameters are null.");
+        }
+        if (value == null) {
+            return;
+        }
+
+        Class valueClass = value.getClass();
+
+        // Output Boolean values specially
+        if (valueClass == Boolean.class) {
+            if (Boolean.TRUE.equals(value)) {
+                //PENDING (horwat) using String as a result of
+                //Tomcat char writer ArrayIndexOutOfBoundsException (3584)
+                writer.write(" ");
+                writer.write(name);
+            } else {
+                // Don't write anything for "false" booleans
+            }
+        } else {
+            writer.write(" ");
+            writer.write(name);
+            writer.write("=\"");
+
+            // write the attribute value
+            Util.writeAttribute(writer, buffer, value.toString());
+            writer.write("\"");
+        }
+    }
+
+
+    /**
+     * <p>Write a properly encoded URI attribute name and the corresponding
+     * value. The value text will be converted to a String if necessary).
+     * This method may only be called after a call to
+     * <code>startElement()</code>, and before the opened element has been
+     * closed.</p>
+     *
+     * @param name                  Attribute name to be added
+     * @param value                 Attribute value to be added
+     * @param componentPropertyName The name of the component property to
+     *                              which this attribute argument applies.  This argument may be
+     *                              <code>null</code>.
+     *
+     * @throws IllegalStateException if this method is called when there
+     *                               is no currently open element
+     * @throws IOException           if an input/output error occurs
+     * @throws NullPointerException  if <code>name</code> or
+     *                               <code>value</code> is <code>null</code>
+     */
+    public void writeURIAttribute(String name, Object value,
+                                  String componentPropertyName)
+          throws IOException {
+        if (name == null || value == null) {
+            // PENDING i18n
+            throw new NullPointerException(
+                  "Argument Error: One or more parameters are null.");
+        }
+
+        writer.write(" ");
+        writer.write(name);
+        writer.write("=\"");
+
+        String strValue = value.toString(); //TODO: Use converter for value?
+        writer.write(' ');
+        writer.write(name);
+        writer.write("=\"" + strValue + "\"");
+    }
+
+
+    /**
+     * <p>Write a comment string containing the specified text.
+     * The text will be converted to a String if necessary.
+     * If there is an open element that has been created by a call
+     * to <code>startElement()</code>, that element will be closed
+     * first.</p>
+     *
+     * @param comment Text content of the comment
+     *
+     * @throws IOException          if an input/output error occurs
+     * @throws NullPointerException if <code>comment</code>
+     *                              is <code>null</code>
+     */
+    public void writeComment(Object comment) throws IOException {
+        if (comment == null) {
+            // PENDING i18n
+            throw new NullPointerException(
+                  "Argument Error: One or more parameters are null.");
+        }
+        closeStartIfNecessary();
+        writer.write("<!-- ");
+        writer.write(comment.toString());
+        writer.write(" -->");
+    }
+
+
+    /**
+     * <p>Write a properly escaped object. The object will be converted
+     * to a String if necessary.  If there is an open element
+     * that has been created by a call to <code>startElement()</code>,
+     * that element will be closed first.</p>
+     *
+     * @param text                  Text to be written
+     * @param componentPropertyName The name of the component property to
+     *                              which this text argument applies.  This argument may be <code>null</code>.
+     *
+     * @throws IOException          if an input/output error occurs
+     * @throws NullPointerException if <code>text</code>
+     *                              is <code>null</code>
+     */
+    public void writeText(Object text, String componentPropertyName)
+          throws IOException {
+        if (text == null) {
+            // PENDING i18n
+            throw new NullPointerException(
+                  "Argument Error: One or more parameters are null.");
+        }
+        closeStartIfNecessary();
+        if (dontEscape) {
+            writer.write(text.toString());
+        } else {
+            Util.writeText(writer, buffer, text.toString());
+        }
+    }
+
+
+    /**
+     * <p>Write a properly escaped single character, If there
+     * is an open element that has been created by a call to
+     * <code>startElement()</code>, that element will be closed first.</p>
+     * <p/>
+     * <p>All angle bracket occurrences in the argument must be escaped
+     * using the &gt; &lt; syntax.</p>
+     *
+     * @param text Text to be written
+     *
+     * @throws IOException if an input/output error occurs
+     */
+    public void writeText(char text) throws IOException {
+        closeStartIfNecessary();
+        if (dontEscape) {
+            writer.write(text);
+        } else {
+            charHolder[0] = text;
+            Util.writeText(writer, buffer, charHolder);
+        }
+    }
+
+
+    /**
+     * <p>Write properly escaped text from a character array.
+     * The output from this command is identical to the invocation:
+     * <code>writeText(c, 0, c.length)</code>.
+     * If there is an open element that has been created by a call to
+     * <code>startElement()</code>, that element will be closed first.</p>
+     * </p>
+     * <p/>
+     * <p>All angle bracket occurrences in the argument must be escaped
+     * using the &gt; &lt; syntax.</p>
+     *
+     * @param text Text to be written
+     *
+     * @throws IOException          if an input/output error occurs
+     * @throws NullPointerException if <code>text</code>
+     *                              is <code>null</code>
+     */
+    public void writeText(char text[]) throws IOException {
+        if (text == null) {
+            // PENDING i18n
+            throw new NullPointerException(
+                  "Argument Error: One or more parameters are null.");
+        }
+        closeStartIfNecessary();
+        if (dontEscape) {
+            writer.write(text);
+        } else {
+            Util.writeText(writer, buffer, text);
+        }
+    }
+
+
+    /**
+     * <p>Write properly escaped text from a character array.
+     * If there is an open element that has been created by a call
+     * to <code>startElement()</code>, that element will be closed
+     * first.</p>
+     * <p/>
+     * <p>All angle bracket occurrences in the argument must be escaped
+     * using the &gt; &lt; syntax.</p>
+     *
+     * @param text Text to be written
+     * @param off  Starting offset (zero-relative)
+     * @param len  Number of characters to be written
+     *
+     * @throws IndexOutOfBoundsException if the calculated starting or
+     *                                   ending position is outside the bounds of the character array
+     * @throws IOException               if an input/output error occurs
+     * @throws NullPointerException      if <code>text</code>
+     *                                   is <code>null</code>
+     */
+    public void writeText(char text[], int off, int len)
+          throws IOException {
+        if (text == null) {
+            // PENDING i18n
+            throw new NullPointerException(
+                  "Argument Error: One or more parameters are null.");
+        }
+        if (off < 0 || off > text.length || len < 0 || len > text.length) {
+            throw new IndexOutOfBoundsException();
+        }
+        closeStartIfNecessary();
+        if (dontEscape) {
+            writer.write(text, off, len);
+        } else {
+            Util.writeText(writer, buffer, text, off, len);
+        }
+    }
+
+
+    /**
+     * <p>Create a new instance of this <code>ResponseWriter</code> using
+     * a different <code>Writer</code>.
+     *
+     * @param writer The <code>Writer</code> that will be used to create
+     *               another <code>ResponseWriter</code>.
+     */
+    public ResponseWriter cloneWithWriter(Writer writer) {
+        try {
+            return new XULResponseWriter(writer, getContentType(),
+                                         getCharacterEncoding());
+        } catch (FacesException e) {
+            // This should never happen
+            throw new IllegalStateException();
+        }
+    }
+
+
+    /**
+     * This method automatically closes a previous element (if not
+     * already closed).
+     */
+    private void closeStartIfNecessary() throws IOException {
+        if (closeStart) {
+            writer.write(">");
+            closeStart = false;
+        }
+    }
+
+
+    /** Methods From <code>java.io.Writer</code> */
+
+    public void close() throws IOException {
+        closeStartIfNecessary();
+        writer.close();
+    }
+
+
+    public void write(char cbuf) throws IOException {
+        closeStartIfNecessary();
+        writer.write(cbuf);
+    }
+
+
+    public void write(char[] cbuf, int off, int len) throws IOException {
+        closeStartIfNecessary();
+        writer.write(cbuf, off, len);
+    }
+
+
+    public void write(int c) throws IOException {
+        closeStartIfNecessary();
+        writer.write(c);
+    }
+
+
+    public void write(String str) throws IOException {
+        closeStartIfNecessary();
+        writer.write(str);
+    }
+
+
+    public void write(String str, int off, int len) throws IOException {
+        closeStartIfNecessary();
+        writer.write(str, off, len);
+    }
+}
diff --git a/jsf-demo/archive/renderkits/src/java/renderkits/taglib/svg/CommandButtonTag.java b/jsf-demo/archive/renderkits/src/java/renderkits/taglib/svg/CommandButtonTag.java
new file mode 100644
index 0000000..46ad5be
--- /dev/null
+++ b/jsf-demo/archive/renderkits/src/java/renderkits/taglib/svg/CommandButtonTag.java
@@ -0,0 +1,514 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package renderkits.taglib.svg;
+
+import javax.faces.component.UIComponent;
+import javax.faces.event.MethodExpressionActionListener;
+import javax.faces.webapp.UIComponentELTag;
+import javax.servlet.jsp.JspException;
+
+
+public final class CommandButtonTag extends UIComponentELTag {
+
+
+    // Setter Methods
+    // PROPERTY: action
+    private javax.el.MethodExpression action;
+
+    public void setAction(javax.el.MethodExpression action) {
+        this.action = action;
+    }
+
+    // PROPERTY: actionListener
+    private javax.el.MethodExpression actionListener;
+
+    public void setActionListener(javax.el.MethodExpression actionListener) {
+        this.actionListener = actionListener;
+    }
+
+    // PROPERTY: x
+    private javax.el.ValueExpression x;
+
+    public void setX(javax.el.ValueExpression x) {
+        this.x = x;
+    }
+
+    // PROPERTY: y
+    private javax.el.ValueExpression y;
+
+    public void setY(javax.el.ValueExpression y) {
+        this.y = y;
+    }
+
+    // PROPERTY: dx 
+    private javax.el.ValueExpression dx;
+
+    public void setDx(javax.el.ValueExpression dx) {
+        this.dx = dx;
+    }
+
+    // PROPERTY: dy 
+    private javax.el.ValueExpression dy;
+
+    public void setDy(javax.el.ValueExpression dy) {
+        this.dy = dy;
+    }
+
+    // PROPERTY: height 
+    private javax.el.ValueExpression height;
+
+    public void setHeight(javax.el.ValueExpression height) {
+        this.height = height;
+    }
+
+    // PROPERTY: immediate
+    private javax.el.ValueExpression immediate;
+
+    public void setImmediate(javax.el.ValueExpression immediate) {
+        this.immediate = immediate;
+    }
+
+    // PROPERTY: label 
+    private javax.el.ValueExpression label;
+
+    public void setLabel(javax.el.ValueExpression label) {
+        this.label = label;
+    }
+
+    // PROPERTY: onactivate
+    private javax.el.ValueExpression onactivate;
+
+    public void setOnactivate(javax.el.ValueExpression onactivate) {
+        this.onactivate = onactivate;
+    }
+
+    // PROPERTY: onclick
+    private javax.el.ValueExpression onclick;
+
+    public void setOnclick(javax.el.ValueExpression onclick) {
+        this.onclick = onclick;
+    }
+
+    // PROPERTY: onfocusin
+    private javax.el.ValueExpression onfocusin;
+
+    public void setOnfocusin(javax.el.ValueExpression onfocusin) {
+        this.onfocusin = onfocusin;
+    }
+
+    // PROPERTY: onfocusout
+    private javax.el.ValueExpression onfocusout;
+
+    public void setOnfocusout(javax.el.ValueExpression onfocusout) {
+        this.onfocusout = onfocusout;
+    }
+
+    // PROPERTY: onmousedown
+    private javax.el.ValueExpression onmousedown;
+
+    public void setOnmousedown(javax.el.ValueExpression onmousedown) {
+        this.onmousedown = onmousedown;
+    }
+
+    // PROPERTY: onmousemove
+    private javax.el.ValueExpression onmousemove;
+
+    public void setOnmousemove(javax.el.ValueExpression onmousemove) {
+        this.onmousemove = onmousemove;
+    }
+
+    // PROPERTY: onmouseout
+    private javax.el.ValueExpression onmouseout;
+
+    public void setOnmouseout(javax.el.ValueExpression onmouseout) {
+        this.onmouseout = onmouseout;
+    }
+
+    // PROPERTY: onmouseover
+    private javax.el.ValueExpression onmouseover;
+
+    public void setOnmouseover(javax.el.ValueExpression onmouseover) {
+        this.onmouseover = onmouseover;
+    }
+
+    // PROPERTY: onmouseup
+    private javax.el.ValueExpression onmouseup;
+
+    public void setOnmouseup(javax.el.ValueExpression onmouseup) {
+        this.onmouseup = onmouseup;
+    }
+
+    // PROPERTY: rx 
+    private javax.el.ValueExpression rx;
+
+    public void setRx(javax.el.ValueExpression rx) {
+        this.rx = rx;
+    }
+
+    // PROPERTY: ry 
+    private javax.el.ValueExpression ry;
+
+    public void setRy(javax.el.ValueExpression ry) {
+        this.ry = ry;
+    }
+
+    // PROPERTY: style
+    private javax.el.ValueExpression style;
+
+    public void setStyle(javax.el.ValueExpression style) {
+        this.style = style;
+    }
+
+    // PROPERTY: styleClass
+    private javax.el.ValueExpression styleClass;
+
+    public void setStyleClass(javax.el.ValueExpression styleClass) {
+        this.styleClass = styleClass;
+    }
+
+    // PROPERTY: labelStyle
+    private javax.el.ValueExpression labelStyle;
+
+    public void setLabelStyle(javax.el.ValueExpression labelStyle) {
+        this.labelStyle = labelStyle;
+    }
+
+    // PROPERTY: type
+    private javax.el.ValueExpression type;
+
+    public void setType(javax.el.ValueExpression type) {
+        this.type = type;
+    }
+
+    // PROPERTY: value
+    private javax.el.ValueExpression value;
+
+    public void setValue(javax.el.ValueExpression value) {
+        this.value = value;
+    }
+
+    // PROPERTY: width 
+    private javax.el.ValueExpression width;
+
+    public void setWidth(javax.el.ValueExpression width) {
+        this.width = width;
+    }
+
+    // General Methods
+    public String getRendererType() {
+        return "renderkit.svg.Button";
+    }
+
+    public String getComponentType() {
+        return "javax.faces.Command";
+    }
+
+    protected void setProperties(UIComponent component) {
+        super.setProperties(component);
+        javax.faces.component.UICommand command = null;
+        try {
+            command = (javax.faces.component.UICommand) component;
+        } catch (ClassCastException cce) {
+            throw new IllegalStateException("Component "
+                                            + component.toString()
+                                            + " not expected type.  Expected: javax.faces.component.UICommand.  Perhaps you're missing a tag?");
+        }
+
+        if (action != null) {
+            command.setActionExpression(action);
+        }
+        if (actionListener != null) {
+            command.addActionListener(new MethodExpressionActionListener(
+                  actionListener));
+        }
+        if (x != null) {
+            if (!x.isLiteralText()) {
+                command.setValueExpression("x", x);
+            } else {
+                command.getAttributes().put("x", x.getExpressionString());
+            }
+        }
+        if (y != null) {
+            if (!y.isLiteralText()) {
+                command.setValueExpression("y", y);
+            } else {
+                command.getAttributes().put("y", y.getExpressionString());
+            }
+        }
+        if (dx != null) {
+            if (!dx.isLiteralText()) {
+                command.setValueExpression("dx", dx);
+            } else {
+                command.getAttributes().put("dx", dx.getExpressionString());
+            }
+        }
+        if (dy != null) {
+            if (!dy.isLiteralText()) {
+                command.setValueExpression("dy", dy);
+            } else {
+                command.getAttributes().put("dy", dy.getExpressionString());
+            }
+        }
+        if (height != null) {
+            if (!height.isLiteralText()) {
+                command.setValueExpression("height", height);
+            } else {
+                command.getAttributes()
+                      .put("height", height.getExpressionString());
+            }
+        }
+        if (immediate != null) {
+            if (!immediate.isLiteralText()) {
+                command.setValueExpression("immediate", immediate);
+            } else {
+                command.setImmediate(java.lang.Boolean
+                      .valueOf(immediate.getExpressionString()).booleanValue());
+            }
+        }
+        if (label != null) {
+            if (!label.isLiteralText()) {
+                command.setValueExpression("label", label);
+            } else {
+                command.getAttributes()
+                      .put("label", label.getExpressionString());
+            }
+        }
+        if (onactivate != null) {
+            if (!onactivate.isLiteralText()) {
+                command.setValueExpression("onactivate", onactivate);
+            } else {
+                command.getAttributes()
+                      .put("onactivate", onactivate.getExpressionString());
+            }
+        }
+        if (onclick != null) {
+            if (!onclick.isLiteralText()) {
+                command.setValueExpression("onclick", onclick);
+            } else {
+                command.getAttributes()
+                      .put("onclick", onclick.getExpressionString());
+            }
+        }
+        if (onfocusin != null) {
+            if (!onfocusin.isLiteralText()) {
+                command.setValueExpression("onfocusin", onfocusin);
+            } else {
+                command.getAttributes()
+                      .put("onfocusin", onfocusin.getExpressionString());
+            }
+        }
+        if (onfocusout != null) {
+            if (!onfocusout.isLiteralText()) {
+                command.setValueExpression("onfocusout", onfocusout);
+            } else {
+                command.getAttributes()
+                      .put("onfocusout", onfocusout.getExpressionString());
+            }
+        }
+        if (onmousedown != null) {
+            if (!onmousedown.isLiteralText()) {
+                command.setValueExpression("onmousedown", onmousedown);
+            } else {
+                command.getAttributes()
+                      .put("onmousedown", onmousedown.getExpressionString());
+            }
+        }
+        if (onmousemove != null) {
+            if (!onmousemove.isLiteralText()) {
+                command.setValueExpression("onmousemove", onmousemove);
+            } else {
+                command.getAttributes()
+                      .put("onmousemove", onmousemove.getExpressionString());
+            }
+        }
+        if (onmouseout != null) {
+            if (!onmouseout.isLiteralText()) {
+                command.setValueExpression("onmouseout", onmouseout);
+            } else {
+                command.getAttributes()
+                      .put("onmouseout", onmouseout.getExpressionString());
+            }
+        }
+        if (onmouseover != null) {
+            if (!onmouseover.isLiteralText()) {
+                command.setValueExpression("onmouseover", onmouseover);
+            } else {
+                command.getAttributes()
+                      .put("onmouseover", onmouseover.getExpressionString());
+            }
+        }
+        if (onmouseup != null) {
+            if (!onmouseup.isLiteralText()) {
+                command.setValueExpression("onmouseup", onmouseup);
+            } else {
+                command.getAttributes()
+                      .put("onmouseup", onmouseup.getExpressionString());
+            }
+        }
+        if (rx != null) {
+            if (!rx.isLiteralText()) {
+                command.setValueExpression("rx", rx);
+            } else {
+                command.getAttributes().put("rx", rx.getExpressionString());
+            }
+        }
+        if (ry != null) {
+            if (!ry.isLiteralText()) {
+                command.setValueExpression("ry", ry);
+            } else {
+                command.getAttributes().put("ry", ry.getExpressionString());
+            }
+        }
+        if (style != null) {
+            if (!style.isLiteralText()) {
+                command.setValueExpression("style", style);
+            } else {
+                command.getAttributes()
+                      .put("style", style.getExpressionString());
+            }
+        }
+        if (styleClass != null) {
+            if (!styleClass.isLiteralText()) {
+                command.setValueExpression("styleClass", styleClass);
+            } else {
+                command.getAttributes()
+                      .put("styleClass", styleClass.getExpressionString());
+            }
+        }
+        if (labelStyle != null) {
+            if (!labelStyle.isLiteralText()) {
+                command.setValueExpression("labelStyle", labelStyle);
+            } else {
+                command.getAttributes()
+                      .put("labelStyle", labelStyle.getExpressionString());
+            }
+        }
+        if (type != null) {
+            if (!type.isLiteralText()) {
+                command.setValueExpression("type", type);
+            } else {
+                command.getAttributes().put("type", type.getExpressionString());
+            }
+        }
+        if (value != null) {
+            if (!value.isLiteralText()) {
+                command.setValueExpression("value", value);
+            } else {
+                command.setValue(value.getExpressionString());
+            }
+        }
+        if (width != null) {
+            if (!width.isLiteralText()) {
+                command.setValueExpression("width", width);
+            } else {
+                command.getAttributes()
+                      .put("width", width.getExpressionString());
+            }
+        }
+    }
+
+    // Methods From TagSupport
+    public int doStartTag() throws JspException {
+        try {
+            return super.doStartTag();
+        } catch (Exception e) {
+            Throwable root = e;
+            while (root.getCause() != null) {
+                root = root.getCause();
+            }
+            throw new JspException(root);
+        }
+    }
+
+    public int doEndTag() throws JspException {
+        try {
+            return super.doEndTag();
+        } catch (Exception e) {
+            Throwable root = e;
+            while (root.getCause() != null) {
+                root = root.getCause();
+            }
+            throw new JspException(root);
+        }
+    }
+
+    // RELEASE
+    public void release() {
+        super.release();
+
+        // component properties
+        this.action = null;
+        this.actionListener = null;
+        this.immediate = null;
+        this.value = null;
+
+        // rendered attributes
+        this.x = null;
+        this.y = null;
+        this.dx = null;
+        this.dy = null;
+        this.height = null;
+        this.label = null;
+        this.onactivate = null;
+        this.onclick = null;
+        this.onfocusin = null;
+        this.onfocusout = null;
+        this.onmousedown = null;
+        this.onmousemove = null;
+        this.onmouseout = null;
+        this.onmouseover = null;
+        this.onmouseup = null;
+        this.rx = null;
+        this.ry = null;
+        this.style = null;
+        this.styleClass = null;
+        this.labelStyle = null;
+        this.type = null;
+        this.width = null;
+    }
+
+    public String getDebugString() {
+        String result =
+              "id: " + this.getId() + " class: " + this.getClass().getName();
+        return result;
+    }
+
+}
diff --git a/jsf-demo/archive/renderkits/src/java/renderkits/taglib/svg/FormTag.java b/jsf-demo/archive/renderkits/src/java/renderkits/taglib/svg/FormTag.java
new file mode 100644
index 0000000..785d7ea
--- /dev/null
+++ b/jsf-demo/archive/renderkits/src/java/renderkits/taglib/svg/FormTag.java
@@ -0,0 +1,290 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package renderkits.taglib.svg;
+
+import javax.faces.component.UIComponent;
+import javax.faces.webapp.UIComponentELTag;
+import javax.servlet.jsp.JspException;
+
+
+public final class FormTag extends UIComponentELTag {
+
+
+    // Setter Methods
+    // PROPERTY: prependId
+    private javax.el.ValueExpression prependId;
+
+    public void setPrependId(javax.el.ValueExpression prependId) {
+        this.prependId = prependId;
+    }
+
+    // PROPERTY: accept
+    private javax.el.ValueExpression accept;
+
+    public void setAccept(javax.el.ValueExpression accept) {
+        this.accept = accept;
+    }
+
+    // PROPERTY: acceptcharset
+    private javax.el.ValueExpression acceptcharset;
+
+    public void setAcceptcharset(javax.el.ValueExpression acceptcharset) {
+        this.acceptcharset = acceptcharset;
+    }
+
+    // PROPERTY: enctype
+    private javax.el.ValueExpression enctype;
+
+    public void setEnctype(javax.el.ValueExpression enctype) {
+        this.enctype = enctype;
+    }
+
+    // PROPERTY: onclick
+    private javax.el.ValueExpression onclick;
+
+    public void setOnclick(javax.el.ValueExpression onclick) {
+        this.onclick = onclick;
+    }
+
+    // PROPERTY: onmousedown
+    private javax.el.ValueExpression onmousedown;
+
+    public void setOnmousedown(javax.el.ValueExpression onmousedown) {
+        this.onmousedown = onmousedown;
+    }
+
+    // PROPERTY: onmousemove
+    private javax.el.ValueExpression onmousemove;
+
+    public void setOnmousemove(javax.el.ValueExpression onmousemove) {
+        this.onmousemove = onmousemove;
+    }
+
+    // PROPERTY: onmouseout
+    private javax.el.ValueExpression onmouseout;
+
+    public void setOnmouseout(javax.el.ValueExpression onmouseout) {
+        this.onmouseout = onmouseout;
+    }
+
+    // PROPERTY: onmouseover
+    private javax.el.ValueExpression onmouseover;
+
+    public void setOnmouseover(javax.el.ValueExpression onmouseover) {
+        this.onmouseover = onmouseover;
+    }
+
+    // PROPERTY: onmouseup
+    private javax.el.ValueExpression onmouseup;
+
+    public void setOnmouseup(javax.el.ValueExpression onmouseup) {
+        this.onmouseup = onmouseup;
+    }
+
+    // PROPERTY: style
+    private javax.el.ValueExpression style;
+
+    public void setStyle(javax.el.ValueExpression style) {
+        this.style = style;
+    }
+
+    // General Methods
+    public String getRendererType() {
+        return "renderkit.svg.Form";
+    }
+
+    public String getComponentType() {
+        return "javax.faces.Form";
+    }
+
+    protected void setProperties(UIComponent component) {
+        super.setProperties(component);
+        javax.faces.component.UIForm form = null;
+        try {
+            form = (javax.faces.component.UIForm) component;
+        } catch (ClassCastException cce) {
+            throw new IllegalStateException("Component "
+                                            + component.toString()
+                                            + " not expected type.  Expected: javax.faces.component.UIForm.  Perhaps you're missing a tag?");
+        }
+
+        if (prependId != null) {
+            if (!prependId.isLiteralText()) {
+                form.setValueExpression("prependId", prependId);
+            } else {
+                form.setPrependId(java.lang.Boolean
+                      .valueOf(prependId.getExpressionString()).booleanValue());
+            }
+        }
+
+        if (accept != null) {
+            if (!accept.isLiteralText()) {
+                form.setValueExpression("accept", accept);
+            } else {
+                form.getAttributes()
+                      .put("accept", accept.getExpressionString());
+            }
+        }
+        if (acceptcharset != null) {
+            if (!acceptcharset.isLiteralText()) {
+                form.setValueExpression("acceptcharset", acceptcharset);
+            } else {
+                form.getAttributes().put("acceptcharset",
+                                         acceptcharset.getExpressionString());
+            }
+        }
+        if (enctype != null) {
+            if (!enctype.isLiteralText()) {
+                form.setValueExpression("enctype", enctype);
+            } else {
+                form.getAttributes()
+                      .put("enctype", enctype.getExpressionString());
+            }
+        }
+        if (onclick != null) {
+            if (!onclick.isLiteralText()) {
+                form.setValueExpression("onclick", onclick);
+            } else {
+                form.getAttributes()
+                      .put("onclick", onclick.getExpressionString());
+            }
+        }
+        if (onmousedown != null) {
+            if (!onmousedown.isLiteralText()) {
+                form.setValueExpression("onmousedown", onmousedown);
+            } else {
+                form.getAttributes()
+                      .put("onmousedown", onmousedown.getExpressionString());
+            }
+        }
+        if (onmousemove != null) {
+            if (!onmousemove.isLiteralText()) {
+                form.setValueExpression("onmousemove", onmousemove);
+            } else {
+                form.getAttributes()
+                      .put("onmousemove", onmousemove.getExpressionString());
+            }
+        }
+        if (onmouseout != null) {
+            if (!onmouseout.isLiteralText()) {
+                form.setValueExpression("onmouseout", onmouseout);
+            } else {
+                form.getAttributes()
+                      .put("onmouseout", onmouseout.getExpressionString());
+            }
+        }
+        if (onmouseover != null) {
+            if (!onmouseover.isLiteralText()) {
+                form.setValueExpression("onmouseover", onmouseover);
+            } else {
+                form.getAttributes()
+                      .put("onmouseover", onmouseover.getExpressionString());
+            }
+        }
+        if (onmouseup != null) {
+            if (!onmouseup.isLiteralText()) {
+                form.setValueExpression("onmouseup", onmouseup);
+            } else {
+                form.getAttributes()
+                      .put("onmouseup", onmouseup.getExpressionString());
+            }
+        }
+        if (style != null) {
+            if (!style.isLiteralText()) {
+                form.setValueExpression("style", style);
+            } else {
+                form.getAttributes().put("style", style.getExpressionString());
+            }
+        }
+    }
+
+    // Methods From TagSupport
+    public int doStartTag() throws JspException {
+        try {
+            return super.doStartTag();
+        } catch (Exception e) {
+            Throwable root = e;
+            while (root.getCause() != null) {
+                root = root.getCause();
+            }
+            throw new JspException(root);
+        }
+    }
+
+    public int doEndTag() throws JspException {
+        try {
+            return super.doEndTag();
+        } catch (Exception e) {
+            Throwable root = e;
+            while (root.getCause() != null) {
+                root = root.getCause();
+            }
+            throw new JspException(root);
+        }
+    }
+
+    // RELEASE
+    public void release() {
+        super.release();
+
+        // component properties
+        this.prependId = null;
+
+        // rendered attributes
+        this.accept = null;
+        this.acceptcharset = null;
+        this.enctype = null;
+        this.onclick = null;
+        this.onmousedown = null;
+        this.onmousemove = null;
+        this.onmouseout = null;
+        this.onmouseover = null;
+        this.onmouseup = null;
+        this.style = null;
+    }
+
+    public String getDebugString() {
+        String result =
+              "id: " + this.getId() + " class: " + this.getClass().getName();
+        return result;
+    }
+
+}
diff --git a/jsf-demo/archive/renderkits/src/java/renderkits/taglib/svg/LineTag.java b/jsf-demo/archive/renderkits/src/java/renderkits/taglib/svg/LineTag.java
new file mode 100644
index 0000000..230b47c
--- /dev/null
+++ b/jsf-demo/archive/renderkits/src/java/renderkits/taglib/svg/LineTag.java
@@ -0,0 +1,314 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package renderkits.taglib.svg;
+
+import javax.faces.component.UIComponent;
+import javax.faces.webapp.UIComponentELTag;
+import javax.servlet.jsp.JspException;
+
+
+public final class LineTag extends UIComponentELTag {
+
+
+    // PROPERTY: onclick
+    private javax.el.ValueExpression onclick;
+
+    public void setOnclick(javax.el.ValueExpression onclick) {
+        this.onclick = onclick;
+    }
+
+    // PROPERTY: onfocusin
+    private javax.el.ValueExpression onfocusin;
+
+    public void setOnfocusin(javax.el.ValueExpression onfocusin) {
+        this.onfocusin = onfocusin;
+    }
+
+    // PROPERTY: onfocusout
+    private javax.el.ValueExpression onfocusout;
+
+    public void setOnfocusout(javax.el.ValueExpression onfocusout) {
+        this.onfocusout = onfocusout;
+    }
+
+    // PROPERTY: onmousedown
+    private javax.el.ValueExpression onmousedown;
+
+    public void setOnmousedown(javax.el.ValueExpression onmousedown) {
+        this.onmousedown = onmousedown;
+    }
+
+    // PROPERTY: onmousemove
+    private javax.el.ValueExpression onmousemove;
+
+    public void setOnmousemove(javax.el.ValueExpression onmousemove) {
+        this.onmousemove = onmousemove;
+    }
+
+    // PROPERTY: onmouseout
+    private javax.el.ValueExpression onmouseout;
+
+    public void setOnmouseout(javax.el.ValueExpression onmouseout) {
+        this.onmouseout = onmouseout;
+    }
+
+    // PROPERTY: onmouseover
+    private javax.el.ValueExpression onmouseover;
+
+    public void setOnmouseover(javax.el.ValueExpression onmouseover) {
+        this.onmouseover = onmouseover;
+    }
+
+    // PROPERTY: onmouseup
+    private javax.el.ValueExpression onmouseup;
+
+    public void setOnmouseup(javax.el.ValueExpression onmouseup) {
+        this.onmouseup = onmouseup;
+    }
+
+    // PROPERTY: style
+    private javax.el.ValueExpression style;
+
+    public void setStyle(javax.el.ValueExpression style) {
+        this.style = style;
+    }
+
+    // PROPERTY: x1
+    private javax.el.ValueExpression x1;
+
+    public void setX1(javax.el.ValueExpression x1) {
+        this.x1 = x1;
+    }
+
+    // PROPERTY: y1
+    private javax.el.ValueExpression y1;
+
+    public void setY1(javax.el.ValueExpression y1) {
+        this.y1 = y1;
+    }
+
+    // PROPERTY: x2
+    private javax.el.ValueExpression x2;
+
+    public void setX2(javax.el.ValueExpression x2) {
+        this.x2 = x2;
+    }
+
+    // PROPERTY: y2
+    private javax.el.ValueExpression y2;
+
+    public void setY2(javax.el.ValueExpression y2) {
+        this.y2 = y2;
+    }
+
+    // General Methods
+    public String getRendererType() {
+        return "renderkit.svg.Line";
+    }
+
+    public String getComponentType() {
+        return "Line";
+    }
+
+    protected void setProperties(UIComponent component) {
+        super.setProperties(component);
+        renderkits.components.svg.Line line = null;
+        try {
+            line = (renderkits.components.svg.Line) component;
+        } catch (ClassCastException cce) {
+            throw new IllegalStateException("Component "
+                                            + component.toString()
+                                            + " not expected type.  Expected: renderkits.components.svg.Line.  Perhaps you're missing a tag?");
+        }
+
+        if (onclick != null) {
+            if (!onclick.isLiteralText()) {
+                line.setValueExpression("onclick", onclick);
+            } else {
+                line.getAttributes()
+                      .put("onclick", onclick.getExpressionString());
+            }
+        }
+        if (onfocusin != null) {
+            if (!onfocusin.isLiteralText()) {
+                line.setValueExpression("onfocusin", onfocusin);
+            } else {
+                line.getAttributes()
+                      .put("onfocusin", onfocusin.getExpressionString());
+            }
+        }
+        if (onfocusout != null) {
+            if (!onfocusout.isLiteralText()) {
+                line.setValueExpression("onfocusout", onfocusout);
+            } else {
+                line.getAttributes()
+                      .put("onfocusout", onfocusout.getExpressionString());
+            }
+        }
+        if (onmousedown != null) {
+            if (!onmousedown.isLiteralText()) {
+                line.setValueExpression("onmousedown", onmousedown);
+            } else {
+                line.getAttributes()
+                      .put("onmousedown", onmousedown.getExpressionString());
+            }
+        }
+        if (onmousemove != null) {
+            if (!onmousemove.isLiteralText()) {
+                line.setValueExpression("onmousemove", onmousemove);
+            } else {
+                line.getAttributes()
+                      .put("onmousemove", onmousemove.getExpressionString());
+            }
+        }
+        if (onmouseout != null) {
+            if (!onmouseout.isLiteralText()) {
+                line.setValueExpression("onmouseout", onmouseout);
+            } else {
+                line.getAttributes()
+                      .put("onmouseout", onmouseout.getExpressionString());
+            }
+        }
+        if (onmouseover != null) {
+            if (!onmouseover.isLiteralText()) {
+                line.setValueExpression("onmouseover", onmouseover);
+            } else {
+                line.getAttributes()
+                      .put("onmouseover", onmouseover.getExpressionString());
+            }
+        }
+        if (onmouseup != null) {
+            if (!onmouseup.isLiteralText()) {
+                line.setValueExpression("onmouseup", onmouseup);
+            } else {
+                line.getAttributes()
+                      .put("onmouseup", onmouseup.getExpressionString());
+            }
+        }
+        if (style != null) {
+            if (!style.isLiteralText()) {
+                line.setValueExpression("style", style);
+            } else {
+                line.getAttributes().put("style", style.getExpressionString());
+            }
+        }
+        if (x1 != null) {
+            if (!x1.isLiteralText()) {
+                line.setValueExpression("x1", x1);
+            } else {
+                line.getAttributes().put("x1", x1.getExpressionString());
+            }
+        }
+        if (y1 != null) {
+            if (!y1.isLiteralText()) {
+                line.setValueExpression("y1", y1);
+            } else {
+                line.getAttributes().put("y1", y1.getExpressionString());
+            }
+        }
+        if (x2 != null) {
+            if (!x2.isLiteralText()) {
+                line.setValueExpression("x2", x2);
+            } else {
+                line.getAttributes().put("x2", x2.getExpressionString());
+            }
+        }
+        if (y2 != null) {
+            if (!y2.isLiteralText()) {
+                line.setValueExpression("y2", y2);
+            } else {
+                line.getAttributes().put("y2", y2.getExpressionString());
+            }
+        }
+    }
+
+    // Methods From TagSupport
+    public int doStartTag() throws JspException {
+        try {
+            return super.doStartTag();
+        } catch (Exception e) {
+            Throwable root = e;
+            while (root.getCause() != null) {
+                root = root.getCause();
+            }
+            throw new JspException(root);
+        }
+    }
+
+    public int doEndTag() throws JspException {
+        try {
+            return super.doEndTag();
+        } catch (Exception e) {
+            Throwable root = e;
+            while (root.getCause() != null) {
+                root = root.getCause();
+            }
+            throw new JspException(root);
+        }
+    }
+
+    // RELEASE
+    public void release() {
+        super.release();
+
+        // rendered attributes
+        this.onclick = null;
+        this.onfocusin = null;
+        this.onfocusout = null;
+        this.onmousedown = null;
+        this.onmousemove = null;
+        this.onmouseout = null;
+        this.onmouseover = null;
+        this.onmouseup = null;
+        this.style = null;
+        this.x1 = null;
+        this.y1 = null;
+        this.x2 = null;
+        this.y2 = null;
+    }
+
+    public String getDebugString() {
+        String result =
+              "id: " + this.getId() + " class: " + this.getClass().getName();
+        return result;
+    }
+
+}
diff --git a/jsf-demo/archive/renderkits/src/java/renderkits/taglib/svg/OutputTextTag.java b/jsf-demo/archive/renderkits/src/java/renderkits/taglib/svg/OutputTextTag.java
new file mode 100644
index 0000000..53dec8a
--- /dev/null
+++ b/jsf-demo/archive/renderkits/src/java/renderkits/taglib/svg/OutputTextTag.java
@@ -0,0 +1,312 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package renderkits.taglib.svg;
+
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.convert.Converter;
+import javax.faces.webapp.UIComponentELTag;
+import javax.servlet.jsp.JspException;
+
+/*
+* ******* GENERATED CODE - DO NOT EDIT *******
+*/
+
+
+public final class OutputTextTag extends UIComponentELTag {
+
+
+    // Setter Methods
+    // PROPERTY: converter
+    private javax.el.ValueExpression converter;
+
+    public void setConverter(javax.el.ValueExpression converter) {
+        this.converter = converter;
+    }
+
+    // PROPERTY: value
+    private javax.el.ValueExpression value;
+
+    public void setValue(javax.el.ValueExpression value) {
+        this.value = value;
+    }
+
+    // PROPERTY: escape
+    private javax.el.ValueExpression escape;
+
+    public void setEscape(javax.el.ValueExpression escape) {
+        this.escape = escape;
+    }
+
+    // PROPERTY: style
+    private javax.el.ValueExpression style;
+
+    public void setStyle(javax.el.ValueExpression style) {
+        this.style = style;
+    }
+
+    // PROPERTY: styleClass
+    private javax.el.ValueExpression styleClass;
+
+    public void setStyleClass(javax.el.ValueExpression styleClass) {
+        this.styleClass = styleClass;
+    }
+
+    // PROPERTY: x
+    private javax.el.ValueExpression x;
+
+    public void setX(javax.el.ValueExpression x) {
+        this.x = x;
+    }
+
+    // PROPERTY: y
+    private javax.el.ValueExpression y;
+
+    public void setY(javax.el.ValueExpression y) {
+        this.y = y;
+    }
+
+    // PROPERTY: dx
+    private javax.el.ValueExpression dx;
+
+    public void setDx(javax.el.ValueExpression dx) {
+        this.dx = dx;
+    }
+
+    // PROPERTY: dy
+    private javax.el.ValueExpression dy;
+
+    public void setDy(javax.el.ValueExpression dy) {
+        this.dy = dy;
+    }
+
+    // PROPERTY: textAnchor 
+    private javax.el.ValueExpression textAnchor;
+
+    public void setTextAnchor(javax.el.ValueExpression textAnchor) {
+        this.textAnchor = textAnchor;
+    }
+
+    // PROPERTY: rotate 
+    private javax.el.ValueExpression rotate;
+
+    public void setRotate(javax.el.ValueExpression rotate) {
+        this.rotate = rotate;
+    }
+
+    // PROPERTY: textLength 
+    private javax.el.ValueExpression textLength;
+
+    public void setTextLength(javax.el.ValueExpression textLength) {
+        this.textLength = textLength;
+    }
+
+    // PROPERTY: textAdjust 
+    private javax.el.ValueExpression textAdjust;
+
+    public void setTextAdjust(javax.el.ValueExpression textAdjust) {
+        this.textAdjust = textAdjust;
+    }
+
+    // General Methods
+    public String getRendererType() {
+        return "renderkit.svg.Text";
+    }
+
+    public String getComponentType() {
+        return "javax.faces.Output";
+    }
+
+    protected void setProperties(UIComponent component) {
+        super.setProperties(component);
+        javax.faces.component.UIOutput output = null;
+        try {
+            output = (javax.faces.component.UIOutput) component;
+        } catch (ClassCastException cce) {
+            throw new IllegalStateException("Component "
+                                            + component.toString()
+                                            + " not expected type.  Expected: javax.faces.component.UIOutput.  Perhaps you're missing a tag?");
+        }
+
+        if (converter != null) {
+            if (!converter.isLiteralText()) {
+                output.setValueExpression("converter", converter);
+            } else {
+                Converter conv = FacesContext.getCurrentInstance()
+                      .getApplication()
+                      .createConverter(converter.getExpressionString());
+                output.setConverter(conv);
+            }
+        }
+
+        if (value != null) {
+            if (!value.isLiteralText()) {
+                output.setValueExpression("value", value);
+            } else {
+                output.setValue(value.getExpressionString());
+            }
+        }
+
+        if (escape != null) {
+            if (!escape.isLiteralText()) {
+                output.setValueExpression("escape", escape);
+            } else {
+                output.getAttributes().put("escape",
+                                           java.lang.Boolean.valueOf(escape.getExpressionString()));
+            }
+        }
+        if (style != null) {
+            if (!style.isLiteralText()) {
+                output.setValueExpression("style", style);
+            } else {
+                output.getAttributes()
+                      .put("style", style.getExpressionString());
+            }
+        }
+        if (styleClass != null) {
+            if (!styleClass.isLiteralText()) {
+                output.setValueExpression("styleClass", styleClass);
+            } else {
+                output.getAttributes()
+                      .put("styleClass", styleClass.getExpressionString());
+            }
+        }
+        if (x != null) {
+            if (!x.isLiteralText()) {
+                output.setValueExpression("x", x);
+            } else {
+                output.getAttributes().put("x", x.getExpressionString());
+            }
+        }
+        if (y != null) {
+            if (!y.isLiteralText()) {
+                output.setValueExpression("y", y);
+            } else {
+                output.getAttributes().put("y", y.getExpressionString());
+            }
+        }
+        if (dx != null) {
+            if (!dx.isLiteralText()) {
+                output.setValueExpression("dx", dx);
+            } else {
+                output.getAttributes().put("dx", dx.getExpressionString());
+            }
+        }
+        if (dy != null) {
+            if (!dy.isLiteralText()) {
+                output.setValueExpression("dy", dy);
+            } else {
+                output.getAttributes().put("dy", dy.getExpressionString());
+            }
+        }
+        if (textAnchor != null) {
+            if (!textAnchor.isLiteralText()) {
+                output.setValueExpression("textAnchor", textAnchor);
+            } else {
+                output.getAttributes()
+                      .put("textAnchor", textAnchor.getExpressionString());
+            }
+        }
+        if (rotate != null) {
+            if (!rotate.isLiteralText()) {
+                output.setValueExpression("rotate", rotate);
+            } else {
+                output.getAttributes()
+                      .put("rotate", rotate.getExpressionString());
+            }
+        }
+        if (textLength != null) {
+            if (!textLength.isLiteralText()) {
+                output.setValueExpression("textLength", textLength);
+            } else {
+                output.getAttributes()
+                      .put("textLength", textLength.getExpressionString());
+            }
+        }
+
+    }
+
+    // Methods From TagSupport
+    public int doStartTag() throws JspException {
+        try {
+            return super.doStartTag();
+        } catch (Exception e) {
+            Throwable root = e;
+            while (root.getCause() != null) {
+                root = root.getCause();
+            }
+            throw new JspException(root);
+        }
+    }
+
+    public int doEndTag() throws JspException {
+        try {
+            return super.doEndTag();
+        } catch (Exception e) {
+            Throwable root = e;
+            while (root.getCause() != null) {
+                root = root.getCause();
+            }
+            throw new JspException(root);
+        }
+    }
+
+    // RELEASE
+    public void release() {
+        super.release();
+
+        // component properties
+        this.converter = null;
+        this.value = null;
+
+        // rendered attributes
+        this.escape = null;
+        this.style = null;
+        this.styleClass = null;
+    }
+
+    public String getDebugString() {
+        String result =
+              "id: " + this.getId() + " class: " + this.getClass().getName();
+        return result;
+    }
+
+}
diff --git a/jsf-demo/archive/renderkits/src/java/renderkits/taglib/svg/RectangleTag.java b/jsf-demo/archive/renderkits/src/java/renderkits/taglib/svg/RectangleTag.java
new file mode 100644
index 0000000..a077d09
--- /dev/null
+++ b/jsf-demo/archive/renderkits/src/java/renderkits/taglib/svg/RectangleTag.java
@@ -0,0 +1,348 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package renderkits.taglib.svg;
+
+import javax.faces.component.UIComponent;
+import javax.faces.webapp.UIComponentELTag;
+import javax.servlet.jsp.JspException;
+
+
+public final class RectangleTag extends UIComponentELTag {
+
+
+    // PROPERTY: height 
+    private javax.el.ValueExpression height;
+
+    public void setHeight(javax.el.ValueExpression height) {
+        this.height = height;
+    }
+
+    // PROPERTY: onclick
+    private javax.el.ValueExpression onclick;
+
+    public void setOnclick(javax.el.ValueExpression onclick) {
+        this.onclick = onclick;
+    }
+
+    // PROPERTY: onfocusin
+    private javax.el.ValueExpression onfocusin;
+
+    public void setOnfocusin(javax.el.ValueExpression onfocusin) {
+        this.onfocusin = onfocusin;
+    }
+
+    // PROPERTY: onfocusout
+    private javax.el.ValueExpression onfocusout;
+
+    public void setOnfocusout(javax.el.ValueExpression onfocusout) {
+        this.onfocusout = onfocusout;
+    }
+
+    // PROPERTY: onmousedown
+    private javax.el.ValueExpression onmousedown;
+
+    public void setOnmousedown(javax.el.ValueExpression onmousedown) {
+        this.onmousedown = onmousedown;
+    }
+
+    // PROPERTY: onmousemove
+    private javax.el.ValueExpression onmousemove;
+
+    public void setOnmousemove(javax.el.ValueExpression onmousemove) {
+        this.onmousemove = onmousemove;
+    }
+
+    // PROPERTY: onmouseout
+    private javax.el.ValueExpression onmouseout;
+
+    public void setOnmouseout(javax.el.ValueExpression onmouseout) {
+        this.onmouseout = onmouseout;
+    }
+
+    // PROPERTY: onmouseover
+    private javax.el.ValueExpression onmouseover;
+
+    public void setOnmouseover(javax.el.ValueExpression onmouseover) {
+        this.onmouseover = onmouseover;
+    }
+
+    // PROPERTY: onmouseup
+    private javax.el.ValueExpression onmouseup;
+
+    public void setOnmouseup(javax.el.ValueExpression onmouseup) {
+        this.onmouseup = onmouseup;
+    }
+
+    // PROPERTY: rx 
+    private javax.el.ValueExpression rx;
+
+    public void setRx(javax.el.ValueExpression rx) {
+        this.rx = rx;
+    }
+
+    // PROPERTY: ry 
+    private javax.el.ValueExpression ry;
+
+    public void setRy(javax.el.ValueExpression ry) {
+        this.ry = ry;
+    }
+
+    // PROPERTY: style
+    private javax.el.ValueExpression style;
+
+    public void setStyle(javax.el.ValueExpression style) {
+        this.style = style;
+    }
+
+    // PROPERTY: width 
+    private javax.el.ValueExpression width;
+
+    public void setWidth(javax.el.ValueExpression width) {
+        this.width = width;
+    }
+
+    // PROPERTY: x
+    private javax.el.ValueExpression x;
+
+    public void setX(javax.el.ValueExpression x) {
+        this.x = x;
+    }
+
+    // PROPERTY: y
+    private javax.el.ValueExpression y;
+
+    public void setY(javax.el.ValueExpression y) {
+        this.y = y;
+    }
+
+
+    // General Methods
+    public String getRendererType() {
+        return "renderkit.svg.Rectangle";
+    }
+
+    public String getComponentType() {
+        return "Rectangle";
+    }
+
+    protected void setProperties(UIComponent component) {
+        super.setProperties(component);
+        renderkits.components.svg.Rectangle rectangle = null;
+        try {
+            rectangle = (renderkits.components.svg.Rectangle) component;
+        } catch (ClassCastException cce) {
+            throw new IllegalStateException("Component "
+                                            + component.toString()
+                                            + " not expected type.  Expected: renderkits.components.svg.Rectangle.  Perhaps you're missing a tag?");
+        }
+
+        if (height != null) {
+            if (!height.isLiteralText()) {
+                rectangle.setValueExpression("height", height);
+            } else {
+                rectangle.getAttributes()
+                      .put("height", height.getExpressionString());
+            }
+        }
+        if (onclick != null) {
+            if (!onclick.isLiteralText()) {
+                rectangle.setValueExpression("onclick", onclick);
+            } else {
+                rectangle.getAttributes()
+                      .put("onclick", onclick.getExpressionString());
+            }
+        }
+        if (onfocusin != null) {
+            if (!onfocusin.isLiteralText()) {
+                rectangle.setValueExpression("onfocusin", onfocusin);
+            } else {
+                rectangle.getAttributes()
+                      .put("onfocusin", onfocusin.getExpressionString());
+            }
+        }
+        if (onfocusout != null) {
+            if (!onfocusout.isLiteralText()) {
+                rectangle.setValueExpression("onfocusout", onfocusout);
+            } else {
+                rectangle.getAttributes()
+                      .put("onfocusout", onfocusout.getExpressionString());
+            }
+        }
+        if (onmousedown != null) {
+            if (!onmousedown.isLiteralText()) {
+                rectangle.setValueExpression("onmousedown", onmousedown);
+            } else {
+                rectangle.getAttributes()
+                      .put("onmousedown", onmousedown.getExpressionString());
+            }
+        }
+        if (onmousemove != null) {
+            if (!onmousemove.isLiteralText()) {
+                rectangle.setValueExpression("onmousemove", onmousemove);
+            } else {
+                rectangle.getAttributes()
+                      .put("onmousemove", onmousemove.getExpressionString());
+            }
+        }
+        if (onmouseout != null) {
+            if (!onmouseout.isLiteralText()) {
+                rectangle.setValueExpression("onmouseout", onmouseout);
+            } else {
+                rectangle.getAttributes()
+                      .put("onmouseout", onmouseout.getExpressionString());
+            }
+        }
+        if (onmouseover != null) {
+            if (!onmouseover.isLiteralText()) {
+                rectangle.setValueExpression("onmouseover", onmouseover);
+            } else {
+                rectangle.getAttributes()
+                      .put("onmouseover", onmouseover.getExpressionString());
+            }
+        }
+        if (onmouseup != null) {
+            if (!onmouseup.isLiteralText()) {
+                rectangle.setValueExpression("onmouseup", onmouseup);
+            } else {
+                rectangle.getAttributes()
+                      .put("onmouseup", onmouseup.getExpressionString());
+            }
+        }
+        if (rx != null) {
+            if (!rx.isLiteralText()) {
+                rectangle.setValueExpression("rx", rx);
+            } else {
+                rectangle.getAttributes().put("rx", rx.getExpressionString());
+            }
+        }
+        if (ry != null) {
+            if (!ry.isLiteralText()) {
+                rectangle.setValueExpression("ry", ry);
+            } else {
+                rectangle.getAttributes().put("ry", ry.getExpressionString());
+            }
+        }
+        if (style != null) {
+            if (!style.isLiteralText()) {
+                rectangle.setValueExpression("style", style);
+            } else {
+                rectangle.getAttributes()
+                      .put("style", style.getExpressionString());
+            }
+        }
+        if (width != null) {
+            if (!width.isLiteralText()) {
+                rectangle.setValueExpression("width", width);
+            } else {
+                rectangle.getAttributes()
+                      .put("width", width.getExpressionString());
+            }
+        }
+        if (x != null) {
+            if (!x.isLiteralText()) {
+                rectangle.setValueExpression("x", x);
+            } else {
+                rectangle.getAttributes().put("x", x.getExpressionString());
+            }
+        }
+        if (y != null) {
+            if (!y.isLiteralText()) {
+                rectangle.setValueExpression("y", y);
+            } else {
+                rectangle.getAttributes().put("y", y.getExpressionString());
+            }
+        }
+    }
+
+    // Methods From TagSupport
+    public int doStartTag() throws JspException {
+        try {
+            return super.doStartTag();
+        } catch (Exception e) {
+            Throwable root = e;
+            while (root.getCause() != null) {
+                root = root.getCause();
+            }
+            throw new JspException(root);
+        }
+    }
+
+    public int doEndTag() throws JspException {
+        try {
+            return super.doEndTag();
+        } catch (Exception e) {
+            Throwable root = e;
+            while (root.getCause() != null) {
+                root = root.getCause();
+            }
+            throw new JspException(root);
+        }
+    }
+
+    // RELEASE
+    public void release() {
+        super.release();
+
+        // rendered attributes
+        this.height = null;
+        this.onclick = null;
+        this.onfocusin = null;
+        this.onfocusout = null;
+        this.onmousedown = null;
+        this.onmousemove = null;
+        this.onmouseout = null;
+        this.onmouseover = null;
+        this.onmouseup = null;
+        this.rx = null;
+        this.ry = null;
+        this.style = null;
+        this.width = null;
+        this.x = null;
+        this.y = null;
+    }
+
+    public String getDebugString() {
+        String result =
+              "id: " + this.getId() + " class: " + this.getClass().getName();
+        return result;
+    }
+
+}
diff --git a/jsf-demo/archive/renderkits/src/java/renderkits/taglib/xul/CommandButtonTag.java b/jsf-demo/archive/renderkits/src/java/renderkits/taglib/xul/CommandButtonTag.java
new file mode 100644
index 0000000..ee1da05
--- /dev/null
+++ b/jsf-demo/archive/renderkits/src/java/renderkits/taglib/xul/CommandButtonTag.java
@@ -0,0 +1,376 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package renderkits.taglib.xul;
+
+import javax.faces.component.UIComponent;
+import javax.faces.event.MethodExpressionActionListener;
+import javax.faces.webapp.UIComponentELTag;
+import javax.servlet.jsp.JspException;
+
+
+public final class CommandButtonTag extends UIComponentELTag {
+
+
+    // Setter Methods
+    // PROPERTY: action
+    private javax.el.MethodExpression action;
+
+    public void setAction(javax.el.MethodExpression action) {
+        this.action = action;
+    }
+
+    // PROPERTY: actionListener
+    private javax.el.MethodExpression actionListener;
+
+    public void setActionListener(javax.el.MethodExpression actionListener) {
+        this.actionListener = actionListener;
+    }
+
+    // PROPERTY: immediate
+    private javax.el.ValueExpression immediate;
+
+    public void setImmediate(javax.el.ValueExpression immediate) {
+        this.immediate = immediate;
+    }
+
+    // PROPERTY: label 
+    private javax.el.ValueExpression label;
+
+    public void setLabel(javax.el.ValueExpression label) {
+        this.label = label;
+    }
+
+    // PROPERTY: onclick
+    private javax.el.ValueExpression onclick;
+
+    public void setOnclick(javax.el.ValueExpression onclick) {
+        this.onclick = onclick;
+    }
+
+    // PROPERTY: oncommand
+    private javax.el.ValueExpression oncommand;
+
+    public void setOnactivate(javax.el.ValueExpression oncommand) {
+        this.oncommand = oncommand;
+    }
+
+    // PROPERTY: onfocusin
+    private javax.el.ValueExpression onfocusin;
+
+    public void setOnfocusin(javax.el.ValueExpression onfocusin) {
+        this.onfocusin = onfocusin;
+    }
+
+    // PROPERTY: onfocusout
+    private javax.el.ValueExpression onfocusout;
+
+    public void setOnfocusout(javax.el.ValueExpression onfocusout) {
+        this.onfocusout = onfocusout;
+    }
+
+    // PROPERTY: onmousedown
+    private javax.el.ValueExpression onmousedown;
+
+    public void setOnmousedown(javax.el.ValueExpression onmousedown) {
+        this.onmousedown = onmousedown;
+    }
+
+    // PROPERTY: onmousemove
+    private javax.el.ValueExpression onmousemove;
+
+    public void setOnmousemove(javax.el.ValueExpression onmousemove) {
+        this.onmousemove = onmousemove;
+    }
+
+    // PROPERTY: onmouseout
+    private javax.el.ValueExpression onmouseout;
+
+    public void setOnmouseout(javax.el.ValueExpression onmouseout) {
+        this.onmouseout = onmouseout;
+    }
+
+    // PROPERTY: onmouseover
+    private javax.el.ValueExpression onmouseover;
+
+    public void setOnmouseover(javax.el.ValueExpression onmouseover) {
+        this.onmouseover = onmouseover;
+    }
+
+    // PROPERTY: onmouseup
+    private javax.el.ValueExpression onmouseup;
+
+    public void setOnmouseup(javax.el.ValueExpression onmouseup) {
+        this.onmouseup = onmouseup;
+    }
+
+    // PROPERTY: style
+    private javax.el.ValueExpression style;
+
+    public void setStyle(javax.el.ValueExpression style) {
+        this.style = style;
+    }
+
+    // PROPERTY: styleClass
+    private javax.el.ValueExpression styleClass;
+
+    public void setStyleClass(javax.el.ValueExpression styleClass) {
+        this.styleClass = styleClass;
+    }
+
+    // PROPERTY: type
+    private javax.el.ValueExpression type;
+
+    public void setType(javax.el.ValueExpression type) {
+        this.type = type;
+    }
+
+    // PROPERTY: value
+    private javax.el.ValueExpression value;
+
+    public void setValue(javax.el.ValueExpression value) {
+        this.value = value;
+    }
+
+    // General Methods
+    public String getRendererType() {
+        return "renderkit.xul.Button";
+    }
+
+    public String getComponentType() {
+        return "javax.faces.Command";
+    }
+
+    protected void setProperties(UIComponent component) {
+        super.setProperties(component);
+        javax.faces.component.UICommand command = null;
+        try {
+            command = (javax.faces.component.UICommand) component;
+        } catch (ClassCastException cce) {
+            throw new IllegalStateException("Component "
+                                            + component.toString()
+                                            + " not expected type.  Expected: javax.faces.component.UICommand.  Perhaps you're missing a tag?");
+        }
+
+        if (action != null) {
+            command.setActionExpression(action);
+        }
+        if (actionListener != null) {
+            command.addActionListener(new MethodExpressionActionListener(
+                  actionListener));
+        }
+        if (immediate != null) {
+            if (!immediate.isLiteralText()) {
+                command.setValueExpression("immediate", immediate);
+            } else {
+                command.setImmediate(java.lang.Boolean
+                      .valueOf(immediate.getExpressionString()).booleanValue());
+            }
+        }
+        if (label != null) {
+            if (!label.isLiteralText()) {
+                command.setValueExpression("label", label);
+            } else {
+                command.getAttributes()
+                      .put("label", label.getExpressionString());
+            }
+        }
+        if (oncommand != null) {
+            if (!oncommand.isLiteralText()) {
+                command.setValueExpression("oncommand", oncommand);
+            } else {
+                command.getAttributes()
+                      .put("oncommand", oncommand.getExpressionString());
+            }
+        }
+        if (onclick != null) {
+            if (!onclick.isLiteralText()) {
+                command.setValueExpression("onclick", onclick);
+            } else {
+                command.getAttributes()
+                      .put("onclick", onclick.getExpressionString());
+            }
+        }
+        if (onfocusin != null) {
+            if (!onfocusin.isLiteralText()) {
+                command.setValueExpression("onfocusin", onfocusin);
+            } else {
+                command.getAttributes()
+                      .put("onfocusin", onfocusin.getExpressionString());
+            }
+        }
+        if (onfocusout != null) {
+            if (!onfocusout.isLiteralText()) {
+                command.setValueExpression("onfocusout", onfocusout);
+            } else {
+                command.getAttributes()
+                      .put("onfocusout", onfocusout.getExpressionString());
+            }
+        }
+        if (onmousedown != null) {
+            if (!onmousedown.isLiteralText()) {
+                command.setValueExpression("onmousedown", onmousedown);
+            } else {
+                command.getAttributes()
+                      .put("onmousedown", onmousedown.getExpressionString());
+            }
+        }
+        if (onmousemove != null) {
+            if (!onmousemove.isLiteralText()) {
+                command.setValueExpression("onmousemove", onmousemove);
+            } else {
+                command.getAttributes()
+                      .put("onmousemove", onmousemove.getExpressionString());
+            }
+        }
+        if (onmouseout != null) {
+            if (!onmouseout.isLiteralText()) {
+                command.setValueExpression("onmouseout", onmouseout);
+            } else {
+                command.getAttributes()
+                      .put("onmouseout", onmouseout.getExpressionString());
+            }
+        }
+        if (onmouseover != null) {
+            if (!onmouseover.isLiteralText()) {
+                command.setValueExpression("onmouseover", onmouseover);
+            } else {
+                command.getAttributes()
+                      .put("onmouseover", onmouseover.getExpressionString());
+            }
+        }
+        if (onmouseup != null) {
+            if (!onmouseup.isLiteralText()) {
+                command.setValueExpression("onmouseup", onmouseup);
+            } else {
+                command.getAttributes()
+                      .put("onmouseup", onmouseup.getExpressionString());
+            }
+        }
+        if (style != null) {
+            if (!style.isLiteralText()) {
+                command.setValueExpression("style", style);
+            } else {
+                command.getAttributes()
+                      .put("style", style.getExpressionString());
+            }
+        }
+        if (styleClass != null) {
+            if (!styleClass.isLiteralText()) {
+                command.setValueExpression("styleClass", styleClass);
+            } else {
+                command.getAttributes()
+                      .put("styleClass", styleClass.getExpressionString());
+            }
+        }
+        if (type != null) {
+            if (!type.isLiteralText()) {
+                command.setValueExpression("type", type);
+            } else {
+                command.getAttributes().put("type", type.getExpressionString());
+            }
+        }
+        if (value != null) {
+            if (!value.isLiteralText()) {
+                command.setValueExpression("value", value);
+            } else {
+                command.setValue(value.getExpressionString());
+            }
+        }
+    }
+
+    // Methods From TagSupport
+    public int doStartTag() throws JspException {
+        try {
+            return super.doStartTag();
+        } catch (Exception e) {
+            Throwable root = e;
+            while (root.getCause() != null) {
+                root = root.getCause();
+            }
+            throw new JspException(root);
+        }
+    }
+
+    public int doEndTag() throws JspException {
+        try {
+            return super.doEndTag();
+        } catch (Exception e) {
+            Throwable root = e;
+            while (root.getCause() != null) {
+                root = root.getCause();
+            }
+            throw new JspException(root);
+        }
+    }
+
+    // RELEASE
+    public void release() {
+        super.release();
+
+        // component properties
+        this.action = null;
+        this.actionListener = null;
+        this.immediate = null;
+        this.value = null;
+
+        // rendered attributes
+        this.label = null;
+        this.onclick = null;
+        this.oncommand = null;
+        this.onfocusin = null;
+        this.onfocusout = null;
+        this.onmousedown = null;
+        this.onmousemove = null;
+        this.onmouseout = null;
+        this.onmouseover = null;
+        this.onmouseup = null;
+        this.style = null;
+        this.styleClass = null;
+        this.type = null;
+    }
+
+    public String getDebugString() {
+        String result =
+              "id: " + this.getId() + " class: " + this.getClass().getName();
+        return result;
+    }
+
+}
diff --git a/jsf-demo/archive/renderkits/src/java/renderkits/taglib/xul/FormTag.java b/jsf-demo/archive/renderkits/src/java/renderkits/taglib/xul/FormTag.java
new file mode 100644
index 0000000..8f22c74
--- /dev/null
+++ b/jsf-demo/archive/renderkits/src/java/renderkits/taglib/xul/FormTag.java
@@ -0,0 +1,290 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package renderkits.taglib.xul;
+
+import javax.faces.component.UIComponent;
+import javax.faces.webapp.UIComponentELTag;
+import javax.servlet.jsp.JspException;
+
+
+public final class FormTag extends UIComponentELTag {
+
+
+    // Setter Methods
+    // PROPERTY: prependId
+    private javax.el.ValueExpression prependId;
+
+    public void setPrependId(javax.el.ValueExpression prependId) {
+        this.prependId = prependId;
+    }
+
+    // PROPERTY: accept
+    private javax.el.ValueExpression accept;
+
+    public void setAccept(javax.el.ValueExpression accept) {
+        this.accept = accept;
+    }
+
+    // PROPERTY: acceptcharset
+    private javax.el.ValueExpression acceptcharset;
+
+    public void setAcceptcharset(javax.el.ValueExpression acceptcharset) {
+        this.acceptcharset = acceptcharset;
+    }
+
+    // PROPERTY: enctype
+    private javax.el.ValueExpression enctype;
+
+    public void setEnctype(javax.el.ValueExpression enctype) {
+        this.enctype = enctype;
+    }
+
+    // PROPERTY: onclick
+    private javax.el.ValueExpression onclick;
+
+    public void setOnclick(javax.el.ValueExpression onclick) {
+        this.onclick = onclick;
+    }
+
+    // PROPERTY: onmousedown
+    private javax.el.ValueExpression onmousedown;
+
+    public void setOnmousedown(javax.el.ValueExpression onmousedown) {
+        this.onmousedown = onmousedown;
+    }
+
+    // PROPERTY: onmousemove
+    private javax.el.ValueExpression onmousemove;
+
+    public void setOnmousemove(javax.el.ValueExpression onmousemove) {
+        this.onmousemove = onmousemove;
+    }
+
+    // PROPERTY: onmouseout
+    private javax.el.ValueExpression onmouseout;
+
+    public void setOnmouseout(javax.el.ValueExpression onmouseout) {
+        this.onmouseout = onmouseout;
+    }
+
+    // PROPERTY: onmouseover
+    private javax.el.ValueExpression onmouseover;
+
+    public void setOnmouseover(javax.el.ValueExpression onmouseover) {
+        this.onmouseover = onmouseover;
+    }
+
+    // PROPERTY: onmouseup
+    private javax.el.ValueExpression onmouseup;
+
+    public void setOnmouseup(javax.el.ValueExpression onmouseup) {
+        this.onmouseup = onmouseup;
+    }
+
+    // PROPERTY: style
+    private javax.el.ValueExpression style;
+
+    public void setStyle(javax.el.ValueExpression style) {
+        this.style = style;
+    }
+
+    // General Methods
+    public String getRendererType() {
+        return "renderkit.xul.Form";
+    }
+
+    public String getComponentType() {
+        return "javax.faces.Form";
+    }
+
+    protected void setProperties(UIComponent component) {
+        super.setProperties(component);
+        javax.faces.component.UIForm form = null;
+        try {
+            form = (javax.faces.component.UIForm) component;
+        } catch (ClassCastException cce) {
+            throw new IllegalStateException("Component "
+                                            + component.toString()
+                                            + " not expected type.  Expected: javax.faces.component.UIForm.  Perhaps you're missing a tag?");
+        }
+
+        if (prependId != null) {
+            if (!prependId.isLiteralText()) {
+                form.setValueExpression("prependId", prependId);
+            } else {
+                form.setPrependId(java.lang.Boolean
+                      .valueOf(prependId.getExpressionString()).booleanValue());
+            }
+        }
+
+        if (accept != null) {
+            if (!accept.isLiteralText()) {
+                form.setValueExpression("accept", accept);
+            } else {
+                form.getAttributes()
+                      .put("accept", accept.getExpressionString());
+            }
+        }
+        if (acceptcharset != null) {
+            if (!acceptcharset.isLiteralText()) {
+                form.setValueExpression("acceptcharset", acceptcharset);
+            } else {
+                form.getAttributes().put("acceptcharset",
+                                         acceptcharset.getExpressionString());
+            }
+        }
+        if (enctype != null) {
+            if (!enctype.isLiteralText()) {
+                form.setValueExpression("enctype", enctype);
+            } else {
+                form.getAttributes()
+                      .put("enctype", enctype.getExpressionString());
+            }
+        }
+        if (onclick != null) {
+            if (!onclick.isLiteralText()) {
+                form.setValueExpression("onclick", onclick);
+            } else {
+                form.getAttributes()
+                      .put("onclick", onclick.getExpressionString());
+            }
+        }
+        if (onmousedown != null) {
+            if (!onmousedown.isLiteralText()) {
+                form.setValueExpression("onmousedown", onmousedown);
+            } else {
+                form.getAttributes()
+                      .put("onmousedown", onmousedown.getExpressionString());
+            }
+        }
+        if (onmousemove != null) {
+            if (!onmousemove.isLiteralText()) {
+                form.setValueExpression("onmousemove", onmousemove);
+            } else {
+                form.getAttributes()
+                      .put("onmousemove", onmousemove.getExpressionString());
+            }
+        }
+        if (onmouseout != null) {
+            if (!onmouseout.isLiteralText()) {
+                form.setValueExpression("onmouseout", onmouseout);
+            } else {
+                form.getAttributes()
+                      .put("onmouseout", onmouseout.getExpressionString());
+            }
+        }
+        if (onmouseover != null) {
+            if (!onmouseover.isLiteralText()) {
+                form.setValueExpression("onmouseover", onmouseover);
+            } else {
+                form.getAttributes()
+                      .put("onmouseover", onmouseover.getExpressionString());
+            }
+        }
+        if (onmouseup != null) {
+            if (!onmouseup.isLiteralText()) {
+                form.setValueExpression("onmouseup", onmouseup);
+            } else {
+                form.getAttributes()
+                      .put("onmouseup", onmouseup.getExpressionString());
+            }
+        }
+        if (style != null) {
+            if (!style.isLiteralText()) {
+                form.setValueExpression("style", style);
+            } else {
+                form.getAttributes().put("style", style.getExpressionString());
+            }
+        }
+    }
+
+    // Methods From TagSupport
+    public int doStartTag() throws JspException {
+        try {
+            return super.doStartTag();
+        } catch (Exception e) {
+            Throwable root = e;
+            while (root.getCause() != null) {
+                root = root.getCause();
+            }
+            throw new JspException(root);
+        }
+    }
+
+    public int doEndTag() throws JspException {
+        try {
+            return super.doEndTag();
+        } catch (Exception e) {
+            Throwable root = e;
+            while (root.getCause() != null) {
+                root = root.getCause();
+            }
+            throw new JspException(root);
+        }
+    }
+
+    // RELEASE
+    public void release() {
+        super.release();
+
+        // component properties
+        this.prependId = null;
+
+        // rendered attributes
+        this.accept = null;
+        this.acceptcharset = null;
+        this.enctype = null;
+        this.onclick = null;
+        this.onmousedown = null;
+        this.onmousemove = null;
+        this.onmouseout = null;
+        this.onmouseover = null;
+        this.onmouseup = null;
+        this.style = null;
+    }
+
+    public String getDebugString() {
+        String result =
+              "id: " + this.getId() + " class: " + this.getClass().getName();
+        return result;
+    }
+
+}
diff --git a/jsf-demo/archive/renderkits/src/java/renderkits/taglib/xul/OutputLabelTag.java b/jsf-demo/archive/renderkits/src/java/renderkits/taglib/xul/OutputLabelTag.java
new file mode 100644
index 0000000..e30c636
--- /dev/null
+++ b/jsf-demo/archive/renderkits/src/java/renderkits/taglib/xul/OutputLabelTag.java
@@ -0,0 +1,472 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package renderkits.taglib.xul;
+
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.convert.Converter;
+import javax.faces.webapp.UIComponentELTag;
+import javax.servlet.jsp.JspException;
+
+/*
+* ******* GENERATED CODE - DO NOT EDIT *******
+*/
+
+
+public final class OutputLabelTag extends UIComponentELTag {
+
+
+    // Setter Methods
+    // PROPERTY: converter
+    private javax.el.ValueExpression converter;
+
+    public void setConverter(javax.el.ValueExpression converter) {
+        this.converter = converter;
+    }
+
+    // PROPERTY: value
+    private javax.el.ValueExpression value;
+
+    public void setValue(javax.el.ValueExpression value) {
+        this.value = value;
+    }
+
+    // PROPERTY: accesskey
+    private javax.el.ValueExpression accesskey;
+
+    public void setAccesskey(javax.el.ValueExpression accesskey) {
+        this.accesskey = accesskey;
+    }
+
+    // PROPERTY: boxClass 
+    private javax.el.ValueExpression boxClass;
+
+    public void setBoxClass(javax.el.ValueExpression boxClass) {
+        this.boxClass = boxClass;
+    }
+
+    // PROPERTY: boxStyle
+    private javax.el.ValueExpression boxStyle;
+
+    public void setBoxStyle(javax.el.ValueExpression boxStyle) {
+        this.boxStyle = boxStyle;
+    }
+
+    // PROPERTY: escape
+    private javax.el.ValueExpression escape;
+
+    public void setEscape(javax.el.ValueExpression escape) {
+        this.escape = escape;
+    }
+
+    // PROPERTY: for
+    private javax.el.ValueExpression _for;
+
+    public void setFor(javax.el.ValueExpression _for) {
+        this._for = _for;
+    }
+
+    // PROPERTY: onblur
+    private javax.el.ValueExpression onblur;
+
+    public void setOnblur(javax.el.ValueExpression onblur) {
+        this.onblur = onblur;
+    }
+
+    // PROPERTY: onclick
+    private javax.el.ValueExpression onclick;
+
+    public void setOnclick(javax.el.ValueExpression onclick) {
+        this.onclick = onclick;
+    }
+
+    // PROPERTY: ondblclick
+    private javax.el.ValueExpression ondblclick;
+
+    public void setOndblclick(javax.el.ValueExpression ondblclick) {
+        this.ondblclick = ondblclick;
+    }
+
+    // PROPERTY: onfocus
+    private javax.el.ValueExpression onfocus;
+
+    public void setOnfocus(javax.el.ValueExpression onfocus) {
+        this.onfocus = onfocus;
+    }
+
+    // PROPERTY: onkeydown
+    private javax.el.ValueExpression onkeydown;
+
+    public void setOnkeydown(javax.el.ValueExpression onkeydown) {
+        this.onkeydown = onkeydown;
+    }
+
+    // PROPERTY: onkeypress
+    private javax.el.ValueExpression onkeypress;
+
+    public void setOnkeypress(javax.el.ValueExpression onkeypress) {
+        this.onkeypress = onkeypress;
+    }
+
+    // PROPERTY: onkeyup
+    private javax.el.ValueExpression onkeyup;
+
+    public void setOnkeyup(javax.el.ValueExpression onkeyup) {
+        this.onkeyup = onkeyup;
+    }
+
+    // PROPERTY: onmousedown
+    private javax.el.ValueExpression onmousedown;
+
+    public void setOnmousedown(javax.el.ValueExpression onmousedown) {
+        this.onmousedown = onmousedown;
+    }
+
+    // PROPERTY: onmousemove
+    private javax.el.ValueExpression onmousemove;
+
+    public void setOnmousemove(javax.el.ValueExpression onmousemove) {
+        this.onmousemove = onmousemove;
+    }
+
+    // PROPERTY: onmouseout
+    private javax.el.ValueExpression onmouseout;
+
+    public void setOnmouseout(javax.el.ValueExpression onmouseout) {
+        this.onmouseout = onmouseout;
+    }
+
+    // PROPERTY: onmouseover
+    private javax.el.ValueExpression onmouseover;
+
+    public void setOnmouseover(javax.el.ValueExpression onmouseover) {
+        this.onmouseover = onmouseover;
+    }
+
+    // PROPERTY: onmouseup
+    private javax.el.ValueExpression onmouseup;
+
+    public void setOnmouseup(javax.el.ValueExpression onmouseup) {
+        this.onmouseup = onmouseup;
+    }
+
+    // PROPERTY: pack 
+    private javax.el.ValueExpression pack;
+
+    public void setPack(javax.el.ValueExpression pack) {
+        this.pack = pack;
+    }
+
+    // PROPERTY: style
+    private javax.el.ValueExpression style;
+
+    public void setStyle(javax.el.ValueExpression style) {
+        this.style = style;
+    }
+
+    // PROPERTY: styleClass
+    private javax.el.ValueExpression styleClass;
+
+    public void setStyleClass(javax.el.ValueExpression styleClass) {
+        this.styleClass = styleClass;
+    }
+
+    // General Methods
+    public String getRendererType() {
+        return "renderkit.xul.Label";
+    }
+
+    public String getComponentType() {
+        return "javax.faces.Output";
+    }
+
+    protected void setProperties(UIComponent component) {
+        super.setProperties(component);
+        javax.faces.component.UIOutput output = null;
+        try {
+            output = (javax.faces.component.UIOutput) component;
+        } catch (ClassCastException cce) {
+            throw new IllegalStateException("Component "
+                                            + component.toString()
+                                            + " not expected type.  Expected: javax.faces.component.UIOutput.  Perhaps you're missing a tag?");
+        }
+
+        if (converter != null) {
+            if (!converter.isLiteralText()) {
+                output.setValueExpression("converter", converter);
+            } else {
+                Converter conv = FacesContext.getCurrentInstance()
+                      .getApplication()
+                      .createConverter(converter.getExpressionString());
+                output.setConverter(conv);
+            }
+        }
+
+        if (value != null) {
+            if (!value.isLiteralText()) {
+                output.setValueExpression("value", value);
+            } else {
+                output.setValue(value.getExpressionString());
+            }
+        }
+
+        if (accesskey != null) {
+            if (!accesskey.isLiteralText()) {
+                output.setValueExpression("accesskey", accesskey);
+            } else {
+                output.getAttributes()
+                      .put("accesskey", accesskey.getExpressionString());
+            }
+        }
+        if (boxClass != null) {
+            if (!boxClass.isLiteralText()) {
+                output.setValueExpression("boxClass", boxClass);
+            } else {
+                output.getAttributes()
+                      .put("boxClass", boxClass.getExpressionString());
+            }
+        }
+        if (boxStyle != null) {
+            if (!boxStyle.isLiteralText()) {
+                output.setValueExpression("boxStyle", boxStyle);
+            } else {
+                output.getAttributes()
+                      .put("boxStyle", boxStyle.getExpressionString());
+            }
+        }
+        if (escape != null) {
+            if (!escape.isLiteralText()) {
+                output.setValueExpression("escape", escape);
+            } else {
+                output.getAttributes().put("escape",
+                                           java.lang.Boolean.valueOf(escape.getExpressionString()));
+            }
+        }
+        if (_for != null) {
+            if (!_for.isLiteralText()) {
+                output.setValueExpression("__for", _for);
+            } else {
+                output.getAttributes().put("for", _for.getExpressionString());
+            }
+        }
+        if (onblur != null) {
+            if (!onblur.isLiteralText()) {
+                output.setValueExpression("onblur", onblur);
+            } else {
+                output.getAttributes()
+                      .put("onblur", onblur.getExpressionString());
+            }
+        }
+        if (onclick != null) {
+            if (!onclick.isLiteralText()) {
+                output.setValueExpression("onclick", onclick);
+            } else {
+                output.getAttributes()
+                      .put("onclick", onclick.getExpressionString());
+            }
+        }
+        if (ondblclick != null) {
+            if (!ondblclick.isLiteralText()) {
+                output.setValueExpression("ondblclick", ondblclick);
+            } else {
+                output.getAttributes()
+                      .put("ondblclick", ondblclick.getExpressionString());
+            }
+        }
+        if (onfocus != null) {
+            if (!onfocus.isLiteralText()) {
+                output.setValueExpression("onfocus", onfocus);
+            } else {
+                output.getAttributes()
+                      .put("onfocus", onfocus.getExpressionString());
+            }
+        }
+        if (onkeydown != null) {
+            if (!onkeydown.isLiteralText()) {
+                output.setValueExpression("onkeydown", onkeydown);
+            } else {
+                output.getAttributes()
+                      .put("onkeydown", onkeydown.getExpressionString());
+            }
+        }
+        if (onkeypress != null) {
+            if (!onkeypress.isLiteralText()) {
+                output.setValueExpression("onkeypress", onkeypress);
+            } else {
+                output.getAttributes()
+                      .put("onkeypress", onkeypress.getExpressionString());
+            }
+        }
+        if (onkeyup != null) {
+            if (!onkeyup.isLiteralText()) {
+                output.setValueExpression("onkeyup", onkeyup);
+            } else {
+                output.getAttributes()
+                      .put("onkeyup", onkeyup.getExpressionString());
+            }
+        }
+        if (onmousedown != null) {
+            if (!onmousedown.isLiteralText()) {
+                output.setValueExpression("onmousedown", onmousedown);
+            } else {
+                output.getAttributes()
+                      .put("onmousedown", onmousedown.getExpressionString());
+            }
+        }
+        if (onmousemove != null) {
+            if (!onmousemove.isLiteralText()) {
+                output.setValueExpression("onmousemove", onmousemove);
+            } else {
+                output.getAttributes()
+                      .put("onmousemove", onmousemove.getExpressionString());
+            }
+        }
+        if (onmouseout != null) {
+            if (!onmouseout.isLiteralText()) {
+                output.setValueExpression("onmouseout", onmouseout);
+            } else {
+                output.getAttributes()
+                      .put("onmouseout", onmouseout.getExpressionString());
+            }
+        }
+        if (onmouseover != null) {
+            if (!onmouseover.isLiteralText()) {
+                output.setValueExpression("onmouseover", onmouseover);
+            } else {
+                output.getAttributes()
+                      .put("onmouseover", onmouseover.getExpressionString());
+            }
+        }
+        if (onmouseup != null) {
+            if (!onmouseup.isLiteralText()) {
+                output.setValueExpression("onmouseup", onmouseup);
+            } else {
+                output.getAttributes()
+                      .put("onmouseup", onmouseup.getExpressionString());
+            }
+        }
+        if (pack != null) {
+            if (!pack.isLiteralText()) {
+                output.setValueExpression("pack", pack);
+            } else {
+                output.getAttributes().put("pack", pack.getExpressionString());
+            }
+        }
+        if (style != null) {
+            if (!style.isLiteralText()) {
+                output.setValueExpression("style", style);
+            } else {
+                output.getAttributes()
+                      .put("style", style.getExpressionString());
+            }
+        }
+        if (styleClass != null) {
+            if (!styleClass.isLiteralText()) {
+                output.setValueExpression("styleClass", styleClass);
+            } else {
+                output.getAttributes()
+                      .put("styleClass", styleClass.getExpressionString());
+            }
+        }
+    }
+
+    // Methods From TagSupport
+    public int doStartTag() throws JspException {
+        try {
+            return super.doStartTag();
+        } catch (Exception e) {
+            Throwable root = e;
+            while (root.getCause() != null) {
+                root = root.getCause();
+            }
+            throw new JspException(root);
+        }
+    }
+
+    public int doEndTag() throws JspException {
+        try {
+            return super.doEndTag();
+        } catch (Exception e) {
+            Throwable root = e;
+            while (root.getCause() != null) {
+                root = root.getCause();
+            }
+            throw new JspException(root);
+        }
+    }
+
+    // RELEASE
+    public void release() {
+        super.release();
+
+        // component properties
+        this.converter = null;
+        this.value = null;
+
+        // rendered attributes
+        this.boxClass = null;
+        this.boxStyle = null;
+        this.escape = null;
+        this._for = null;
+        this.onblur = null;
+        this.onclick = null;
+        this.ondblclick = null;
+        this.onfocus = null;
+        this.onkeydown = null;
+        this.onkeypress = null;
+        this.onkeyup = null;
+        this.onmousedown = null;
+        this.onmousemove = null;
+        this.onmouseout = null;
+        this.onmouseover = null;
+        this.onmouseup = null;
+        this.pack = null;
+        this.style = null;
+        this.styleClass = null;
+    }
+
+    public String getDebugString() {
+        String result =
+              "id: " + this.getId() + " class: " + this.getClass().getName();
+        return result;
+    }
+
+}
diff --git a/jsf-demo/archive/renderkits/src/java/renderkits/taglib/xul/OutputTextTag.java b/jsf-demo/archive/renderkits/src/java/renderkits/taglib/xul/OutputTextTag.java
new file mode 100644
index 0000000..f569ddd
--- /dev/null
+++ b/jsf-demo/archive/renderkits/src/java/renderkits/taglib/xul/OutputTextTag.java
@@ -0,0 +1,202 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package renderkits.taglib.xul;
+
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.convert.Converter;
+import javax.faces.webapp.UIComponentELTag;
+import javax.servlet.jsp.JspException;
+
+/*
+* ******* GENERATED CODE - DO NOT EDIT *******
+*/
+
+
+public final class OutputTextTag extends UIComponentELTag {
+
+
+    // Setter Methods
+    // PROPERTY: converter
+    private javax.el.ValueExpression converter;
+
+    public void setConverter(javax.el.ValueExpression converter) {
+        this.converter = converter;
+    }
+
+    // PROPERTY: value
+    private javax.el.ValueExpression value;
+
+    public void setValue(javax.el.ValueExpression value) {
+        this.value = value;
+    }
+
+    // PROPERTY: escape
+    private javax.el.ValueExpression escape;
+
+    public void setEscape(javax.el.ValueExpression escape) {
+        this.escape = escape;
+    }
+
+    // PROPERTY: style
+    private javax.el.ValueExpression style;
+
+    public void setStyle(javax.el.ValueExpression style) {
+        this.style = style;
+    }
+
+    // PROPERTY: styleClass
+    private javax.el.ValueExpression styleClass;
+
+    public void setStyleClass(javax.el.ValueExpression styleClass) {
+        this.styleClass = styleClass;
+    }
+
+    // General Methods
+    public String getRendererType() {
+        return "renderkit.xul.Text";
+    }
+
+    public String getComponentType() {
+        return "javax.faces.Output";
+    }
+
+    protected void setProperties(UIComponent component) {
+        super.setProperties(component);
+        javax.faces.component.UIOutput output = null;
+        try {
+            output = (javax.faces.component.UIOutput) component;
+        } catch (ClassCastException cce) {
+            throw new IllegalStateException("Component "
+                                            + component.toString()
+                                            + " not expected type.  Expected: javax.faces.component.UIOutput.  Perhaps you're missing a tag?");
+        }
+
+        if (converter != null) {
+            if (!converter.isLiteralText()) {
+                output.setValueExpression("converter", converter);
+            } else {
+                Converter conv = FacesContext.getCurrentInstance()
+                      .getApplication()
+                      .createConverter(converter.getExpressionString());
+                output.setConverter(conv);
+            }
+        }
+
+        if (value != null) {
+            if (!value.isLiteralText()) {
+                output.setValueExpression("value", value);
+            } else {
+                output.setValue(value.getExpressionString());
+            }
+        }
+        if (escape != null) {
+            if (!escape.isLiteralText()) {
+                output.setValueExpression("escape", escape);
+            } else {
+                output.getAttributes().put("escape",
+                                           java.lang.Boolean.valueOf(escape.getExpressionString()));
+            }
+        }
+        if (style != null) {
+            if (!style.isLiteralText()) {
+                output.setValueExpression("style", style);
+            } else {
+                output.getAttributes()
+                      .put("style", style.getExpressionString());
+            }
+        }
+        if (styleClass != null) {
+            if (!styleClass.isLiteralText()) {
+                output.setValueExpression("styleClass", styleClass);
+            } else {
+                output.getAttributes()
+                      .put("styleClass", styleClass.getExpressionString());
+            }
+        }
+    }
+
+    // Methods From TagSupport
+    public int doStartTag() throws JspException {
+        try {
+            return super.doStartTag();
+        } catch (Exception e) {
+            Throwable root = e;
+            while (root.getCause() != null) {
+                root = root.getCause();
+            }
+            throw new JspException(root);
+        }
+    }
+
+    public int doEndTag() throws JspException {
+        try {
+            return super.doEndTag();
+        } catch (Exception e) {
+            Throwable root = e;
+            while (root.getCause() != null) {
+                root = root.getCause();
+            }
+            throw new JspException(root);
+        }
+    }
+
+    // RELEASE
+    public void release() {
+        super.release();
+
+        // component properties
+        this.converter = null;
+        this.value = null;
+
+        // rendered attributes
+        this.escape = null;
+        this.style = null;
+        this.styleClass = null;
+    }
+
+    public String getDebugString() {
+        String result =
+              "id: " + this.getId() + " class: " + this.getClass().getName();
+        return result;
+    }
+
+}
diff --git a/jsf-demo/archive/renderkits/src/java/renderkits/taglib/xul/PanelGridTag.java b/jsf-demo/archive/renderkits/src/java/renderkits/taglib/xul/PanelGridTag.java
new file mode 100644
index 0000000..ce16e50
--- /dev/null
+++ b/jsf-demo/archive/renderkits/src/java/renderkits/taglib/xul/PanelGridTag.java
@@ -0,0 +1,389 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package renderkits.taglib.xul;
+
+import javax.faces.component.UIComponent;
+import javax.faces.webapp.UIComponentELTag;
+import javax.servlet.jsp.JspException;
+
+/*
+* ******* GENERATED CODE - DO NOT EDIT *******
+*/
+
+
+public final class PanelGridTag extends UIComponentELTag {
+
+
+    // Setter Methods
+    // PROPERTY: bgcolor
+    private javax.el.ValueExpression bgcolor;
+
+    public void setBgcolor(javax.el.ValueExpression bgcolor) {
+        this.bgcolor = bgcolor;
+    }
+
+    // PROPERTY: border
+    private javax.el.ValueExpression border;
+
+    public void setBorder(javax.el.ValueExpression border) {
+        this.border = border;
+    }
+
+    // PROPERTY: columnClasses
+    private javax.el.ValueExpression columnClasses;
+
+    public void setColumnClasses(javax.el.ValueExpression columnClasses) {
+        this.columnClasses = columnClasses;
+    }
+
+    // PROPERTY: columns
+    private javax.el.ValueExpression columns;
+
+    public void setColumns(javax.el.ValueExpression columns) {
+        this.columns = columns;
+    }
+
+    // PROPERTY: onclick
+    private javax.el.ValueExpression onclick;
+
+    public void setOnclick(javax.el.ValueExpression onclick) {
+        this.onclick = onclick;
+    }
+
+    // PROPERTY: ondblclick
+    private javax.el.ValueExpression ondblclick;
+
+    public void setOndblclick(javax.el.ValueExpression ondblclick) {
+        this.ondblclick = ondblclick;
+    }
+
+    // PROPERTY: onkeydown
+    private javax.el.ValueExpression onkeydown;
+
+    public void setOnkeydown(javax.el.ValueExpression onkeydown) {
+        this.onkeydown = onkeydown;
+    }
+
+    // PROPERTY: onkeypress
+    private javax.el.ValueExpression onkeypress;
+
+    public void setOnkeypress(javax.el.ValueExpression onkeypress) {
+        this.onkeypress = onkeypress;
+    }
+
+    // PROPERTY: onkeyup
+    private javax.el.ValueExpression onkeyup;
+
+    public void setOnkeyup(javax.el.ValueExpression onkeyup) {
+        this.onkeyup = onkeyup;
+    }
+
+    // PROPERTY: onmousedown
+    private javax.el.ValueExpression onmousedown;
+
+    public void setOnmousedown(javax.el.ValueExpression onmousedown) {
+        this.onmousedown = onmousedown;
+    }
+
+    // PROPERTY: onmousemove
+    private javax.el.ValueExpression onmousemove;
+
+    public void setOnmousemove(javax.el.ValueExpression onmousemove) {
+        this.onmousemove = onmousemove;
+    }
+
+    // PROPERTY: onmouseout
+    private javax.el.ValueExpression onmouseout;
+
+    public void setOnmouseout(javax.el.ValueExpression onmouseout) {
+        this.onmouseout = onmouseout;
+    }
+
+    // PROPERTY: onmouseover
+    private javax.el.ValueExpression onmouseover;
+
+    public void setOnmouseover(javax.el.ValueExpression onmouseover) {
+        this.onmouseover = onmouseover;
+    }
+
+    // PROPERTY: onmouseup
+    private javax.el.ValueExpression onmouseup;
+
+    public void setOnmouseup(javax.el.ValueExpression onmouseup) {
+        this.onmouseup = onmouseup;
+    }
+
+    // PROPERTY: rowClasses
+    private javax.el.ValueExpression rowClasses;
+
+    public void setRowClasses(javax.el.ValueExpression rowClasses) {
+        this.rowClasses = rowClasses;
+    }
+
+    // PROPERTY: style
+    private javax.el.ValueExpression style;
+
+    public void setStyle(javax.el.ValueExpression style) {
+        this.style = style;
+    }
+
+    // PROPERTY: styleClass
+    private javax.el.ValueExpression styleClass;
+
+    public void setStyleClass(javax.el.ValueExpression styleClass) {
+        this.styleClass = styleClass;
+    }
+
+    // General Methods
+    public String getRendererType() {
+        return "renderkit.xul.Grid";
+    }
+
+    public String getComponentType() {
+        return "javax.faces.Panel";
+    }
+
+    protected void setProperties(UIComponent component) {
+        super.setProperties(component);
+        javax.faces.component.UIPanel panel = null;
+        try {
+            panel = (javax.faces.component.UIPanel) component;
+        } catch (ClassCastException cce) {
+            throw new IllegalStateException("Component "
+                                            + component.toString()
+                                            + " not expected type.  Expected: javax.faces.component.UIPanel.  Perhaps you're missing a tag?");
+        }
+
+        if (bgcolor != null) {
+            if (!bgcolor.isLiteralText()) {
+                panel.setValueExpression("bgcolor", bgcolor);
+            } else {
+                panel.getAttributes()
+                      .put("bgcolor", bgcolor.getExpressionString());
+            }
+        }
+        if (border != null) {
+            if (!border.isLiteralText()) {
+                panel.setValueExpression("border", border);
+            } else {
+                panel.getAttributes().put("border",
+                                          java.lang.Integer.valueOf(border.getExpressionString()));
+            }
+        }
+        if (columnClasses != null) {
+            if (!columnClasses.isLiteralText()) {
+                panel.setValueExpression("columnClasses", columnClasses);
+            } else {
+                panel.getAttributes().put("columnClasses",
+                                          columnClasses.getExpressionString());
+            }
+        }
+        if (columns != null) {
+            if (!columns.isLiteralText()) {
+                panel.setValueExpression("columns", columns);
+            } else {
+                panel.getAttributes().put("columns",
+                                          java.lang.Integer.valueOf(columns.getExpressionString()));
+            }
+        }
+        if (onclick != null) {
+            if (!onclick.isLiteralText()) {
+                panel.setValueExpression("onclick", onclick);
+            } else {
+                panel.getAttributes()
+                      .put("onclick", onclick.getExpressionString());
+            }
+        }
+        if (ondblclick != null) {
+            if (!ondblclick.isLiteralText()) {
+                panel.setValueExpression("ondblclick", ondblclick);
+            } else {
+                panel.getAttributes()
+                      .put("ondblclick", ondblclick.getExpressionString());
+            }
+        }
+        if (onkeydown != null) {
+            if (!onkeydown.isLiteralText()) {
+                panel.setValueExpression("onkeydown", onkeydown);
+            } else {
+                panel.getAttributes()
+                      .put("onkeydown", onkeydown.getExpressionString());
+            }
+        }
+        if (onkeypress != null) {
+            if (!onkeypress.isLiteralText()) {
+                panel.setValueExpression("onkeypress", onkeypress);
+            } else {
+                panel.getAttributes()
+                      .put("onkeypress", onkeypress.getExpressionString());
+            }
+        }
+        if (onkeyup != null) {
+            if (!onkeyup.isLiteralText()) {
+                panel.setValueExpression("onkeyup", onkeyup);
+            } else {
+                panel.getAttributes()
+                      .put("onkeyup", onkeyup.getExpressionString());
+            }
+        }
+        if (onmousedown != null) {
+            if (!onmousedown.isLiteralText()) {
+                panel.setValueExpression("onmousedown", onmousedown);
+            } else {
+                panel.getAttributes()
+                      .put("onmousedown", onmousedown.getExpressionString());
+            }
+        }
+        if (onmousemove != null) {
+            if (!onmousemove.isLiteralText()) {
+                panel.setValueExpression("onmousemove", onmousemove);
+            } else {
+                panel.getAttributes()
+                      .put("onmousemove", onmousemove.getExpressionString());
+            }
+        }
+        if (onmouseout != null) {
+            if (!onmouseout.isLiteralText()) {
+                panel.setValueExpression("onmouseout", onmouseout);
+            } else {
+                panel.getAttributes()
+                      .put("onmouseout", onmouseout.getExpressionString());
+            }
+        }
+        if (onmouseover != null) {
+            if (!onmouseover.isLiteralText()) {
+                panel.setValueExpression("onmouseover", onmouseover);
+            } else {
+                panel.getAttributes()
+                      .put("onmouseover", onmouseover.getExpressionString());
+            }
+        }
+        if (onmouseup != null) {
+            if (!onmouseup.isLiteralText()) {
+                panel.setValueExpression("onmouseup", onmouseup);
+            } else {
+                panel.getAttributes()
+                      .put("onmouseup", onmouseup.getExpressionString());
+            }
+        }
+        if (rowClasses != null) {
+            if (!rowClasses.isLiteralText()) {
+                panel.setValueExpression("rowClasses", rowClasses);
+            } else {
+                panel.getAttributes()
+                      .put("rowClasses", rowClasses.getExpressionString());
+            }
+        }
+        if (style != null) {
+            if (!style.isLiteralText()) {
+                panel.setValueExpression("style", style);
+            } else {
+                panel.getAttributes().put("style", style.getExpressionString());
+            }
+        }
+        if (styleClass != null) {
+            if (!styleClass.isLiteralText()) {
+                panel.setValueExpression("styleClass", styleClass);
+            } else {
+                panel.getAttributes()
+                      .put("styleClass", styleClass.getExpressionString());
+            }
+        }
+    }
+
+    // Methods From TagSupport
+    public int doStartTag() throws JspException {
+        try {
+            return super.doStartTag();
+        } catch (Exception e) {
+            Throwable root = e;
+            while (root.getCause() != null) {
+                root = root.getCause();
+            }
+            throw new JspException(root);
+        }
+    }
+
+    public int doEndTag() throws JspException {
+        try {
+            return super.doEndTag();
+        } catch (Exception e) {
+            Throwable root = e;
+            while (root.getCause() != null) {
+                root = root.getCause();
+            }
+            throw new JspException(root);
+        }
+    }
+
+    // RELEASE
+    public void release() {
+        super.release();
+
+        // component properties
+
+        // rendered attributes
+        this.bgcolor = null;
+        this.border = null;
+        this.columnClasses = null;
+        this.columns = null;
+        this.onclick = null;
+        this.ondblclick = null;
+        this.onkeydown = null;
+        this.onkeypress = null;
+        this.onkeyup = null;
+        this.onmousedown = null;
+        this.onmousemove = null;
+        this.onmouseout = null;
+        this.onmouseover = null;
+        this.onmouseup = null;
+        this.rowClasses = null;
+        this.style = null;
+        this.styleClass = null;
+    }
+
+    public String getDebugString() {
+        String result =
+              "id: " + this.getId() + " class: " + this.getClass().getName();
+        return result;
+    }
+
+}
diff --git a/jsf-demo/archive/renderkits/src/java/renderkits/taglib/xul/PanelGroupTag.java b/jsf-demo/archive/renderkits/src/java/renderkits/taglib/xul/PanelGroupTag.java
new file mode 100644
index 0000000..87a923e
--- /dev/null
+++ b/jsf-demo/archive/renderkits/src/java/renderkits/taglib/xul/PanelGroupTag.java
@@ -0,0 +1,180 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package renderkits.taglib.xul;
+
+import javax.faces.component.UIComponent;
+import javax.faces.webapp.UIComponentELTag;
+import javax.servlet.jsp.JspException;
+
+/*
+* ******* GENERATED CODE - DO NOT EDIT *******
+*/
+
+
+public final class PanelGroupTag extends UIComponentELTag {
+
+
+    // PROPERTY: captionClass 
+    private javax.el.ValueExpression captionClass;
+
+    public void setCaptionClass(javax.el.ValueExpression captionClass) {
+        this.captionClass = captionClass;
+    }
+
+    // PROPERTY: captionLabel 
+    private javax.el.ValueExpression captionLabel;
+
+    public void setCaptionLabel(javax.el.ValueExpression captionLabel) {
+        this.captionLabel = captionLabel;
+    }
+
+    // PROPERTY: style
+    private javax.el.ValueExpression style;
+
+    public void setStyle(javax.el.ValueExpression style) {
+        this.style = style;
+    }
+
+    // PROPERTY: styleClass
+    private javax.el.ValueExpression styleClass;
+
+    public void setStyleClass(javax.el.ValueExpression styleClass) {
+        this.styleClass = styleClass;
+    }
+
+
+    // General Methods
+    public String getRendererType() {
+        return "renderkit.xul.Group";
+    }
+
+    public String getComponentType() {
+        return "javax.faces.Panel";
+    }
+
+    protected void setProperties(UIComponent component) {
+        super.setProperties(component);
+        javax.faces.component.UIPanel panel = null;
+        try {
+            panel = (javax.faces.component.UIPanel) component;
+        } catch (ClassCastException cce) {
+            throw new IllegalStateException("Component "
+                                            + component.toString()
+                                            + " not expected type.  Expected: javax.faces.component.UIPanel.  Perhaps you're missing a tag?");
+        }
+
+        if (captionClass != null) {
+            if (!captionClass.isLiteralText()) {
+                panel.setValueExpression("captionClass", captionClass);
+            } else {
+                panel.getAttributes()
+                      .put("captionClass", captionClass.getExpressionString());
+            }
+        }
+        if (captionLabel != null) {
+            if (!captionLabel.isLiteralText()) {
+                panel.setValueExpression("captionLabel", captionLabel);
+            } else {
+                panel.getAttributes()
+                      .put("captionLabel", captionLabel.getExpressionString());
+            }
+        }
+        if (style != null) {
+            if (!style.isLiteralText()) {
+                panel.setValueExpression("style", style);
+            } else {
+                panel.getAttributes().put("style", style.getExpressionString());
+            }
+        }
+        if (styleClass != null) {
+            if (!styleClass.isLiteralText()) {
+                panel.setValueExpression("styleClass", styleClass);
+            } else {
+                panel.getAttributes()
+                      .put("styleClass", styleClass.getExpressionString());
+            }
+        }
+    }
+
+    // Methods From TagSupport
+    public int doStartTag() throws JspException {
+        try {
+            return super.doStartTag();
+        } catch (Exception e) {
+            Throwable root = e;
+            while (root.getCause() != null) {
+                root = root.getCause();
+            }
+            throw new JspException(root);
+        }
+    }
+
+    public int doEndTag() throws JspException {
+        try {
+            return super.doEndTag();
+        } catch (Exception e) {
+            Throwable root = e;
+            while (root.getCause() != null) {
+                root = root.getCause();
+            }
+            throw new JspException(root);
+        }
+    }
+
+    // RELEASE
+    public void release() {
+        super.release();
+
+        // component properties
+
+        // rendered attributes
+        this.captionClass = null;
+        this.captionLabel = null;
+        this.style = null;
+        this.styleClass = null;
+    }
+
+    public String getDebugString() {
+        String result =
+              "id: " + this.getId() + " class: " + this.getClass().getName();
+        return result;
+    }
+}
diff --git a/jsf-demo/archive/renderkits/src/java/renderkits/util/Base64.java b/jsf-demo/archive/renderkits/src/java/renderkits/util/Base64.java
new file mode 100644
index 0000000..b7e860e
--- /dev/null
+++ b/jsf-demo/archive/renderkits/src/java/renderkits/util/Base64.java
@@ -0,0 +1,389 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ *
+ *
+ * This file incorporates work covered by the following copyright and
+ * permission notice:
+ *
+ * Copyright 2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package renderkits.util;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.OutputStreamWriter;
+import java.io.UnsupportedEncodingException;
+
+/**
+ * <p>Base64 encoder and decoder.</p>
+ * <p/>
+ * This class provides encoding/decoding methods for
+ * the Base64 encoding as defined by RFC 2045,
+ * N. Freed and N. Borenstein.
+ * RFC 2045: Multipurpose Internet Mail Extensions (MIME)
+ * Part One: Format of Internet Message Bodies. Reference
+ * 1996. Available at: http://www.ietf.org/rfc/rfc2045.txt
+ * </p>
+ *
+ * @@author Jeffrey Rodriguez
+ * @@version $Revision: 1.4 $ $Date: 2007/04/27 22:00:40 $
+ */
+public final class Base64 {
+
+    static protected final String DEFAULT_CHAR_ENCODING = "ISO-8859-1";
+    static private final int BASELENGTH = 255;
+    static private final int LOOKUPLENGTH = 64;
+    static private final int TWENTYFOURBITGROUP = 24;
+    static private final int EIGHTBIT = 8;
+    static private final int SIXTEENBIT = 16;
+    static private final int SIXBIT = 6;
+    static private final int FOURBYTE = 4;
+    static private final int SIGN = -128;
+    static private final byte PAD = (byte) '=';
+    static private final byte[] EMPTY_BYTE_ARRAY = new byte[0];
+    static private byte[] base64Alphabet = new byte[BASELENGTH];
+    static private byte[] lookUpBase64Alphabet = new byte[LOOKUPLENGTH];
+
+
+    static {
+
+        for (int i = 0; i < BASELENGTH; i++) {
+            base64Alphabet[i] = -1;
+        }
+        for (int i = 'Z'; i >= 'A'; i--) {
+            base64Alphabet[i] = (byte) (i - 'A');
+        }
+        for (int i = 'z'; i >= 'a'; i--) {
+            base64Alphabet[i] = (byte) (i - 'a' + 26);
+        }
+
+        for (int i = '9'; i >= '0'; i--) {
+            base64Alphabet[i] = (byte) (i - '0' + 52);
+        }
+
+        base64Alphabet['+'] = 62;
+        base64Alphabet['/'] = 63;
+
+        for (int i = 0; i <= 25; i++) {
+            lookUpBase64Alphabet[i] = (byte) ('A' + i);
+        }
+
+        for (int i = 26, j = 0; i <= 51; i++, j++) {
+            lookUpBase64Alphabet[i] = (byte) ('a' + j);
+        }
+
+        for (int i = 52, j = 0; i <= 61; i++, j++) {
+            lookUpBase64Alphabet[i] = (byte) ('0' + j);
+        }
+        lookUpBase64Alphabet[62] = (byte) '+';
+        lookUpBase64Alphabet[63] = (byte) '/';
+
+    }
+
+    //
+    // Constructors and Initializers
+    //
+    private Base64() {
+
+        throw new IllegalStateException();
+
+    }
+
+
+    public static boolean isBase64(String isValidString) {
+        return (isBase64(isValidString.getBytes()));
+    }
+
+
+    public static boolean isBase64(byte octect) {
+        // Should we ignore white space?
+        return (octect == PAD || base64Alphabet[octect] != -1);
+    }
+
+
+    public static boolean isBase64(byte[] arrayOctect) {
+        int length = arrayOctect.length;
+        if (length == 0) {
+            return true;
+        }
+        for (int i = 0; i < length; i++) {
+            if (!Base64.isBase64(arrayOctect[i])) {
+                return false;
+            }
+        }
+        return true;
+    }
+
+
+    /**
+     * Encodes hex octects into Base64
+     *
+     * @@param binaryData Array containing binaryData
+     * @@return Base64-encoded array
+     */
+    public static byte[] encode(byte[] binaryData) {
+        if (binaryData == null) {
+            binaryData = EMPTY_BYTE_ARRAY;
+        }
+
+        int lengthDataBits = binaryData.length * EIGHTBIT;
+        int fewerThan24bits = lengthDataBits % TWENTYFOURBITGROUP;
+        int numberTriplets = lengthDataBits / TWENTYFOURBITGROUP;
+        byte encodedData[] = null;
+
+
+        if (fewerThan24bits != 0) //data not divisible by 24 bit
+        {
+            encodedData = new byte[(numberTriplets + 1) * 4];
+        } else // 16 or 8 bit
+        {
+            encodedData = new byte[numberTriplets * 4];
+        }
+
+        byte k = 0, l = 0, b1 = 0, b2 = 0, b3 = 0;
+
+        int encodedIndex = 0;
+        int dataIndex = 0;
+        int i = 0;
+        for (i = 0; i < numberTriplets; i++) {
+
+            dataIndex = i * 3;
+            b1 = binaryData[dataIndex];
+            b2 = binaryData[dataIndex + 1];
+            b3 = binaryData[dataIndex + 2];
+
+            l = (byte) (b2 & 0x0f);
+            k = (byte) (b1 & 0x03);
+
+            encodedIndex = i * 4;
+            byte val1 = ((b1 & SIGN) == 0) ?
+                        (byte) (b1 >> 2) : (byte) ((b1) >> 2 ^ 0xc0);
+
+            byte val2 = ((b2 & SIGN) == 0) ?
+                        (byte) (b2 >> 4) : (byte) ((b2) >> 4 ^ 0xf0);
+            byte val3 = ((b3 & SIGN) == 0) ?
+                        (byte) (b3 >> 6) : (byte) ((b3) >> 6 ^ 0xfc);
+
+            encodedData[encodedIndex] = lookUpBase64Alphabet[val1];
+            encodedData[encodedIndex + 1] =
+                  lookUpBase64Alphabet[val2 | (k << 4)];
+            encodedData[encodedIndex + 2] =
+                  lookUpBase64Alphabet[(l << 2) | val3];
+            encodedData[encodedIndex + 3] = lookUpBase64Alphabet[b3 & 0x3f];
+        }
+
+        // form integral number of 6-bit groups
+        dataIndex = i * 3;
+        encodedIndex = i * 4;
+        if (fewerThan24bits == EIGHTBIT) {
+            b1 = binaryData[dataIndex];
+            k = (byte) (b1 & 0x03);
+            byte val1 = ((b1 & SIGN) == 0) ?
+                        (byte) (b1 >> 2) : (byte) ((b1) >> 2 ^ 0xc0);
+            encodedData[encodedIndex] = lookUpBase64Alphabet[val1];
+            encodedData[encodedIndex + 1] = lookUpBase64Alphabet[k << 4];
+            encodedData[encodedIndex + 2] = PAD;
+            encodedData[encodedIndex + 3] = PAD;
+        } else if (fewerThan24bits == SIXTEENBIT) {
+            b1 = binaryData[dataIndex];
+            b2 = binaryData[dataIndex + 1];
+            l = (byte) (b2 & 0x0f);
+            k = (byte) (b1 & 0x03);
+
+            byte val1 = ((b1 & SIGN) == 0) ?
+                        (byte) (b1 >> 2) : (byte) ((b1) >> 2 ^ 0xc0);
+            byte val2 = ((b2 & SIGN) == 0) ?
+                        (byte) (b2 >> 4) : (byte) ((b2) >> 4 ^ 0xf0);
+
+            encodedData[encodedIndex] = lookUpBase64Alphabet[val1];
+            encodedData[encodedIndex + 1] =
+                  lookUpBase64Alphabet[val2 | (k << 4)];
+            encodedData[encodedIndex + 2] = lookUpBase64Alphabet[l << 2];
+            encodedData[encodedIndex + 3] = PAD;
+        }
+        return encodedData;
+    }
+
+
+    /**
+     * Returns the base64 encoding of String.  First the String is
+     * converted to byte[], using the character encoding of
+     * <code>ISO-8859-1</code>.
+     *
+     * @@param data String of data to convert
+     * @@return Base64-encoded String
+     */
+    public static String encode(String data) {
+        try {
+            return encode(data, DEFAULT_CHAR_ENCODING);
+        } catch (UnsupportedEncodingException uee) {
+            throw new IllegalStateException(uee.toString());
+        }
+    }
+
+
+    /**
+     * Returns the base64 encoding of String (by first converting to
+     * byte[], using the specified <code>charEncoding</code>).  The
+     * return value is also a String.  The Default
+     * <code>codeEncoding</chode> is <code>ISO-8859-1</code>.
+     *
+     * @@param data String of data to convert
+     * @@param charEncoding the character encoding to use when converting
+     * a String to a byte[]
+     * @@return Base64-encoded String
+     */
+    public static String encode(String data, String charEncoding)
+          throws UnsupportedEncodingException {
+
+        // Check arguments
+        if (data == null) {
+            data = "";
+        }
+        if (charEncoding == null) {
+            charEncoding = DEFAULT_CHAR_ENCODING;
+        }
+
+        // Convert to byte[]
+        ByteArrayOutputStream bos = new ByteArrayOutputStream();
+        OutputStreamWriter osw = new OutputStreamWriter(bos, charEncoding);
+        try {
+            osw.write(data);
+        } catch (IOException ioe) {
+            throw new RuntimeException(ioe.toString());
+        }
+
+        // Encode
+        byte[] encodedData = encode(bos.toByteArray());
+
+        // Convert to String
+        if (encodedData == null) {
+            return "";
+        }
+        bos = new ByteArrayOutputStream(encodedData.length);
+        try {
+            bos.write(encodedData);
+        } catch (IOException ioe) {
+            throw new RuntimeException(ioe.toString());
+        }
+
+        return bos.toString(charEncoding);
+    }
+
+
+    /**
+     * Decodes Base64 data into octects
+     *
+     * @@param binaryData Byte array containing Base64 data
+     * @@return Array containing decoded data.
+     */
+    public static byte[] decode(byte[] base64Data) {
+        // Should we throw away anything not in base64Data ?
+
+        // handle the edge case, so we don't have to worry about it later
+        if (base64Data.length == 0) {
+            return EMPTY_BYTE_ARRAY;
+        }
+
+        int numberQuadruple = base64Data.length / FOURBYTE;
+        byte decodedData[] = null;
+        byte b1 = 0, b2 = 0, b3 = 0, b4 = 0, marker0 = 0, marker1 = 0;
+
+        int encodedIndex = 0;
+        int dataIndex = 0;
+        {
+            // this block sizes the output array properly - rlw
+            int lastData = base64Data.length;
+            // ignore the '=' padding
+            while (base64Data[lastData - 1] == PAD) {
+                if (--lastData == 0) {
+                    return EMPTY_BYTE_ARRAY;
+                }
+            }
+            decodedData = new byte[lastData - numberQuadruple];
+        }
+
+        for (int i = 0; i < numberQuadruple; i++) {
+            dataIndex = i * 4;
+            marker0 = base64Data[dataIndex + 2];
+            marker1 = base64Data[dataIndex + 3];
+
+            b1 = base64Alphabet[base64Data[dataIndex]];
+            b2 = base64Alphabet[base64Data[dataIndex + 1]];
+
+            if (marker0 != PAD && marker1 != PAD) {
+                //No PAD e.g 3cQl
+                b3 = base64Alphabet[marker0];
+                b4 = base64Alphabet[marker1];
+
+                decodedData[encodedIndex] = (byte) (b1 << 2 | b2 >> 4);
+                decodedData[encodedIndex + 1] =
+                      (byte) (((b2 & 0xf) << 4) | ((b3 >> 2) & 0xf));
+                decodedData[encodedIndex + 2] = (byte) (b3 << 6 | b4);
+            } else if (marker0 == PAD) {
+                //Two PAD e.g. 3c[Pad][Pad]
+                decodedData[encodedIndex] = (byte) (b1 << 2 | b2 >> 4);
+            } else if (marker1 == PAD) {
+                //One PAD e.g. 3cQ[Pad]
+                b3 = base64Alphabet[marker0];
+
+                decodedData[encodedIndex] = (byte) (b1 << 2 | b2 >> 4);
+                decodedData[encodedIndex + 1] =
+                      (byte) (((b2 & 0xf) << 4) | ((b3 >> 2) & 0xf));
+            }
+            encodedIndex += 3;
+        }
+        return decodedData;
+    }
+
+}
+
diff --git a/jsf-demo/archive/renderkits/src/java/renderkits/util/ByteArrayGuard.java b/jsf-demo/archive/renderkits/src/java/renderkits/util/ByteArrayGuard.java
new file mode 100644
index 0000000..bb62d7a
--- /dev/null
+++ b/jsf-demo/archive/renderkits/src/java/renderkits/util/ByteArrayGuard.java
@@ -0,0 +1,393 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package renderkits.util;
+
+import javax.crypto.Cipher;
+import javax.crypto.Mac;
+import javax.crypto.SecretKeyFactory;
+import javax.crypto.spec.DESedeKeySpec;
+import javax.crypto.spec.IvParameterSpec;
+import javax.crypto.spec.SecretKeySpec;
+import javax.faces.context.FacesContext;
+
+import java.security.Key;
+import java.security.MessageDigest;
+import java.security.SecureRandom;
+import java.util.Arrays;
+import java.util.Map;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+/**
+ * This utility class provides services to encrypt or decrypt a byte array.
+ * The algorithm used to encrypt byte array is 3DES with CBC
+ * The algorithm used to create the message authentication code (MAC) is SHA1
+ * <p/>
+ * Original author Inderjeet Singh, J2EE Blue Prints Team. Modified to suit JSF
+ * needs.
+ */
+public class ByteArrayGuard {
+    public static final int DEFAULT_KEY_LENGTH = 24;
+    public static final int DEFAULT_MAC_LENGTH = 20;
+    public static final int DEFAULT_IV_LENGTH = 8;
+
+    public static final String SESSION_KEY_FOR_PASSWORD =
+          "com.sun.faces.clientside-state.password-key";
+    public static final int DEFAULT_PASSWORD_LENGTH = 24;
+
+    // Log instance for this class
+    private static Logger logger;
+
+    static {
+        logger = Util.getLogger(Util.FACES_LOGGER);
+    }
+
+    /**
+     * @param ps the password strategy to create password for encryption and decryption
+     *           uses default values for the length of the encryption key, MAC key, and
+     *           the initialization vector
+     *
+     * @see DEFAULT_KEY_LENGTH
+     * @see DEFAULT_MAC_LENGTH
+     * @see DEFAULT_IV_LENGTH
+     */
+    public ByteArrayGuard() {
+        this(DEFAULT_KEY_LENGTH, DEFAULT_MAC_LENGTH, DEFAULT_IV_LENGTH);
+    }
+
+    /**
+     * @param keyLength the length of the key used for encryption
+     * @param macLength the length of the message authentication used
+     * @param ivLength  length of the initialization vector used by the block cipher
+     * @param
+     */
+    public ByteArrayGuard(int keyLength, int macLength, int ivLength) {
+        this.keyLength = keyLength;
+        this.macLength = macLength;
+        this.ivLength = ivLength;
+    }
+
+    /**
+     * Encrypts the specified plaindata using the specified password. It also
+     * stores the MAC and the IV in the output. The 20-byte MAC is stored
+     * first, followed by the 8-byte IV, followed by the encrypted
+     * contents of the file.
+     *
+     * @param context   FacesContext for this request
+     * @param plaindata The plain text that needs to be encrypted
+     *
+     * @return The encrypted contents
+     */
+    public byte[] encrypt(FacesContext context, byte[] plaindata) {
+        try {
+            // generate a key that can be used for encryption from the 
+            // supplied password
+            byte[] rawKey =
+                  convertPasswordToKey(getPasswordToSecureState(context));
+            // choose block encryption algorithm
+            Cipher cipher = getBlockCipherForEncryption(rawKey);
+            // encrypt the plaintext
+            byte[] encdata = cipher.doFinal(plaindata);
+            // choose mac algorithm
+            Mac mac = getMac(rawKey);
+            // generate MAC for the initialization vector of the cipher
+            byte[] iv = cipher.getIV();
+            mac.update(iv);
+            // generate MAC for the encrypted data
+            mac.update(encdata);
+            // generate MAC
+            byte[] macBytes = mac.doFinal();
+
+            // concat byte arrays for MAC, IV, and encrypted data
+            // Note that the order is important here. MAC and IV are
+            // of fixed length and need to appear before the encrypted data
+            // for easy extraction while decrypting.
+            byte[] tmp = concatBytes(macBytes, iv);
+            byte[] securedata = concatBytes(tmp, encdata);
+            return securedata;
+        } catch (Exception e) {
+            if (logger.isLoggable(Level.SEVERE)) {
+                logger.log(Level.SEVERE, e.getMessage(), e.getCause());
+            }
+            throw new RuntimeException(e);
+        }
+    }
+
+    /**
+     * Decrypts the specified byte array using the specified password, and
+     * generates an inputstream from it. The file must be encrypted by the
+     * above method for encryption. The method also verifies the MAC. It
+     * uses the IV present in the file for decryption.
+     *
+     * @param context    Faces Context for this request
+     * @param securedata The encrypted data (including mac and initialization
+     *                   vector) that needs to be decrypted
+     *
+     * @return A byte array containing the decrypted contents
+     */
+    public byte[] decrypt(FacesContext context, byte[] securedata) {
+        try {
+            // Extract MAC
+            byte[] macBytes = new byte[macLength];
+            System.arraycopy(securedata, 0, macBytes, 0, macBytes.length);
+            // Extract initialization vector used for encryption
+            byte[] iv = new byte[ivLength];
+            System.arraycopy(securedata, macBytes.length, iv, 0, iv.length);
+
+            // Extract encrypted data
+            byte[] encdata =
+                  new byte[securedata.length - macBytes.length - iv.length];
+            System.arraycopy(securedata,
+                             macBytes.length + iv.length,
+                             encdata,
+                             0,
+                             encdata.length);
+
+            // verify MAC by regenerating it and comparing it with the received value
+            byte[] rawKey =
+                  convertPasswordToKey(getPasswordToSecureState(context));
+            Mac mac = getMac(rawKey);
+            mac.update(iv);
+            mac.update(encdata);
+            byte[] macBytesCalculated = mac.doFinal();
+            if (Arrays.equals(macBytes, macBytesCalculated)) {
+                // decrypt data only if the MAC was valid
+                Cipher cipher = getBlockCipherForDecryption(rawKey, iv);
+                byte[] plaindata = cipher.doFinal(encdata);
+                return plaindata;
+            } else {
+                if (logger.isLoggable(Level.WARNING)) {
+                    // PENDING (visvan) localize
+                    logger.warning("ERROR: MAC did not verify!");
+                }
+                return null;
+            }
+        } catch (Exception e) {
+            if (logger.isLoggable(Level.SEVERE)) {
+                logger.log(Level.SEVERE, e.getMessage(), e.getCause());
+            }
+            throw new RuntimeException(e);
+        }
+    }
+
+    /**
+     * This method provides a password to be used for encryption/decryption of
+     * client-side state.
+     */
+    private String getPasswordToSecureState(FacesContext context) {
+        Map sessionMap = context.getExternalContext().getSessionMap();
+        if (sessionMap == null) {
+            // Setting it to an arbitrary value. As long as the same value is used
+            // by both serializer and deserializer, the encryption will work. 
+            // However, the encryption will be useless since this arbitrary 
+            // value can be guessed by an attacker.
+            // PENDING (visvan) localize
+            if (logger.isLoggable(Level.WARNING)) {
+                logger.warning(
+                      "Key to retrieve password from session could not " +
+                      "be found. Using default value. This will enable " +
+                      "the encryption and decryption to work, but the " +
+                      "client-side state saving method is NO longer secure.");
+            }
+            password = "easy-to-guess-password";
+        } else {
+            password = (String) sessionMap.get(SESSION_KEY_FOR_PASSWORD);
+            if (password == null) {
+                password = (String)
+                      ByteArrayGuard.getRandomString(DEFAULT_PASSWORD_LENGTH);
+                sessionMap.put(SESSION_KEY_FOR_PASSWORD, password);
+            }
+        }
+        return password;
+    }
+
+    /**
+     * This method converts the specified password into a key in a
+     * deterministic manner. The key is then usable for creating ciphers
+     * and MACs.
+     *
+     * @return a byte array containing a key based on the specified
+     *         password. The length of the returned byte array is KEY_LENGTH.
+     */
+    private byte[] convertPasswordToKey(byte[] password) {
+        try {
+            MessageDigest md = MessageDigest.getInstance("SHA");
+            byte[] seed = md.digest(password);
+
+            SecureRandom random = SecureRandom.getInstance("SHA1PRNG");
+            random.setSeed(seed);
+
+            byte[] rawkey = new byte[keyLength];
+            random.nextBytes(rawkey);
+            return rawkey;
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+    /**
+     * A convenience alias to the above method which takes a string as
+     * the password.
+     */
+    private byte[] convertPasswordToKey(String password) {
+        return convertPasswordToKey(password.getBytes());
+    }
+
+    /**
+     * @param rawKey must be 24 bytes in length.
+     *
+     * @return a 3DES block cipher to be used for encryption based on the
+     *         specified key
+     */
+    private Cipher getBlockCipherForEncryption(byte[] rawKey) {
+        try {
+            SecretKeyFactory keygen = SecretKeyFactory.getInstance("DESede");
+            DESedeKeySpec keyspec = new DESedeKeySpec(rawKey);
+            Key key = keygen.generateSecret(keyspec);
+            Cipher cipher = Cipher.getInstance("DESede/CBC/PKCS5Padding");
+            byte[] iv = new byte[ivLength];
+            getPRNG().nextBytes(iv);
+            IvParameterSpec ivspec = new IvParameterSpec(iv);
+            cipher.init(Cipher.ENCRYPT_MODE, key, ivspec, getPRNG());
+            return cipher;
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+    private static Cipher getBlockCipherForDecryption(byte[] rawKey, byte[]
+          iv) {
+        try {
+            SecretKeyFactory keygen = SecretKeyFactory.getInstance("DESede");
+            DESedeKeySpec keyspec = new DESedeKeySpec(rawKey);
+            Key key = keygen.generateSecret(keyspec);
+            Cipher cipher = Cipher.getInstance("DESede/CBC/PKCS5Padding");
+            IvParameterSpec ivspec = new IvParameterSpec(iv);
+            cipher.init(Cipher.DECRYPT_MODE, key, ivspec, getPRNG());
+            return cipher;
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+    private Mac getMac(byte[] rawKey) {
+        try {
+            Mac mac = Mac.getInstance("HmacSHA1");
+            SecretKeySpec key =
+                  new SecretKeySpec(rawKey, 0, macLength, "HmacSHA1");
+            mac.init(key);
+            return mac;
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+    /**
+     * Generates a cryptographically random string
+     *
+     * @param size the desired length of the string
+     */
+    static String getRandomString(int size) {
+        byte[] data = new byte[size];
+        getPRNG().nextBytes(data);
+        return new String(data);
+    }
+
+    private static int getRandomInt() {
+        byte[] data = new byte[4];
+        getPRNG().nextBytes(data);
+        return data[0] + data[1] * 256 + data[2] * 65536 + data[3] * 16777216;
+    }
+
+    private static SecureRandom getPRNG() {
+        try {
+            if (prng == null) {
+                prng = SecureRandom.getInstance("SHA1PRNG");
+            }
+            return prng;
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+    private static String getHexString(byte[] b) {
+        StringBuffer buf = new StringBuffer(b.length);
+        for (int i = 0; i < b.length; ++i) {
+            byte2hex(b[i], buf);
+        }
+        return buf.toString();
+    }
+
+    /**
+     * This method concatenates two byte arrays
+     *
+     * @param array1 first byte array to be concatenated
+     * @param array2 second byte array to be concatenated
+     *
+     * @return a byte array of array1||array2
+     */
+    private static byte[] concatBytes(byte[] array1, byte[] array2) {
+        byte[] cBytes = new byte[array1.length + array2.length];
+        try {
+            System.arraycopy(array1, 0, cBytes, 0, array1.length);
+            System.arraycopy(array2, 0, cBytes, array1.length, array2.length);
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
+        return cBytes;
+    }
+
+    /** Converts a byte to hex digit and writes to the supplied buffer */
+    private static void byte2hex(byte b, StringBuffer buf) {
+        char[] hexChars = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
+                           'A', 'B', 'C', 'D', 'E', 'F'};
+        int high = ((b & 0xf0) >> 4);
+        int low = (b & 0x0f);
+        buf.append(hexChars[high]);
+        buf.append(hexChars[low]);
+    }
+
+    private int keyLength;
+    private int macLength;
+    private int ivLength;
+    private String password = null;
+    private static SecureRandom prng = null;
+}
diff --git a/jsf-demo/archive/renderkits/src/java/renderkits/util/Util.java b/jsf-demo/archive/renderkits/src/java/renderkits/util/Util.java
new file mode 100644
index 0000000..b195957
--- /dev/null
+++ b/jsf-demo/archive/renderkits/src/java/renderkits/util/Util.java
@@ -0,0 +1,498 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package renderkits.util;
+
+import javax.faces.FactoryFinder;
+import javax.faces.application.Application;
+import javax.faces.application.ApplicationFactory;
+import javax.faces.component.UIComponent;
+import javax.faces.convert.Converter;
+
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.io.Writer;
+import java.util.logging.Logger;
+
+public class Util extends Object {
+
+    //
+    // Private/Protected Constants
+    //
+    public static final String FACES_LOGGER = "javax.enterprise.resource.jsf.";
+    public static final String RENDERKIT_LOGGER = "renderkit";
+    public static final String TAGLIB_LOGGER = "taglib";
+
+
+    public static final String FACES_LOG_STRINGS =
+          "com.sun.faces.LogStrings";
+
+    // Log instance for this class
+    private static Logger logger;
+
+    static {
+        logger = getLogger(FACES_LOGGER);
+    }
+
+    public static Logger getLogger(String loggerName) {
+        return Logger.getLogger(loggerName, FACES_LOG_STRINGS);
+    }
+
+    /** Utility method for determining if a component is 'disabled' or 'readonly' */
+    public static boolean componentIsDisabledOnReadonly(UIComponent component) {
+        Object disabledOrReadonly = null;
+        boolean result = false;
+        if (null !=
+            (disabledOrReadonly = component.getAttributes().get("disabled"))) {
+            if (disabledOrReadonly instanceof String) {
+                result = ((String) disabledOrReadonly).equalsIgnoreCase("true");
+            } else {
+                result = disabledOrReadonly.equals(Boolean.TRUE);
+            }
+        }
+        if ((result == false) &&
+            null !=
+            (disabledOrReadonly = component.getAttributes().get("readonly"))) {
+            if (disabledOrReadonly instanceof String) {
+                result = ((String) disabledOrReadonly).equalsIgnoreCase("true");
+            } else {
+                result = disabledOrReadonly.equals(Boolean.TRUE);
+            }
+        }
+
+        return result;
+    }
+
+    public static Converter getConverterForClass(Class converterClass) {
+        if (converterClass == null) {
+            return null;
+        }
+        try {
+            ApplicationFactory aFactory =
+                  (ApplicationFactory) FactoryFinder.getFactory(
+                        FactoryFinder.APPLICATION_FACTORY);
+            Application application = aFactory.getApplication();
+            return (application.createConverter(converterClass));
+        } catch (Exception e) {
+            return (null);
+        }
+    }
+
+
+    //----------------------------------------------------------
+    // The following is used to verify encodings
+    //----------------------------------------------------------
+    //
+    static public void validateEncoding(String encoding)
+          throws UnsupportedEncodingException {
+        if (encoding != null) {
+            // Try creating a string off of the default encoding
+            new String(encodingTestBytes, encoding);
+        }
+    }
+
+    // Private array used simply to verify character encodings
+    static private final byte[] encodingTestBytes = new byte[]{(byte) 65};
+
+    /**
+     * Write a string attribute.  Note that this code
+     * is duplicated below for character arrays - change both
+     * places if you make any changes!!!
+     */
+    static public void writeAttribute(Writer out,
+                                      char[] buff,
+                                      String text) throws IOException {
+        int buffLength = buff.length;
+        int buffIndex = 0;
+
+        int length = text.length();
+        for (int i = 0; i < length; i++) {
+            char ch = text.charAt(i);
+
+            // Tilde or less...
+            if (ch < 0xA0) {
+                // If "?" or over, no escaping is needed (this covers
+                // most of the Latin alphabet)
+                if (ch >= 0x3f) {
+                    buffIndex = addToBuffer(out, buff, buffIndex,
+                                            buffLength, ch);
+                } else if (ch >= 0x27) { // If above "'"...
+                    // If between "'" and ";", no escaping is needed
+                    if (ch < 0x3c) {
+                        buffIndex = addToBuffer(out, buff, buffIndex,
+                                                buffLength, ch);
+                        // Note - "<" isn't escaped in attributes, as per
+                        // HTML spec
+                    } else if (ch == '>') {
+                        buffIndex = flushBuffer(out, buff, buffIndex);
+
+                        out.write(">");
+                    } else {
+                        buffIndex = addToBuffer(out, buff, buffIndex,
+                                                buffLength, ch);
+                    }
+                } else {
+                    if (ch == '&') {
+                        buffIndex = flushBuffer(out, buff, buffIndex);
+
+                        // HTML 4.0, section B.7.1: ampersands followed by
+                        // an open brace don't get escaped
+                        if ((i + 1 < length) && (text.charAt(i + 1) == '{')) {
+                            out.write(ch);
+                        } else {
+                            out.write("&");
+                        }
+                    } else if (ch == '"') {
+                        buffIndex = flushBuffer(out, buff, buffIndex);
+
+                        out.write(""");
+                    } else {
+                        buffIndex = addToBuffer(out, buff, buffIndex,
+                                                buffLength, ch);
+                    }
+                }
+            } else {
+                buffIndex = flushBuffer(out, buff, buffIndex);
+
+                // Double-byte characters to encode.
+                // PENDING: when outputting to an encoding that
+                // supports double-byte characters (UTF-8, for example),
+                // we should not be encoding
+                _writeDecRef(out, ch);
+            }
+        }
+
+        flushBuffer(out, buff, buffIndex);
+    }
+
+    static public void writeAttribute(Writer out,
+                                      char[] buffer,
+                                      char[] text) throws IOException {
+        writeAttribute(out, buffer, text, 0, text.length);
+    }
+
+    /**
+     * Write a character array attribute.  Note that this code
+     * is duplicated above for string - change both places if you make
+     * any changes!!!
+     */
+    static public void writeAttribute(Writer out,
+                                      char[] buff,
+                                      char[] text,
+                                      int start,
+                                      int length) throws IOException {
+        int buffLength = buff.length;
+        int buffIndex = 0;
+
+        int end = start + length;
+        for (int i = start; i < end; i++) {
+            char ch = text[i];
+
+            // Tilde or less...
+            if (ch < 0xA0) {
+                // If "?" or over, no escaping is needed (this covers
+                // most of the Latin alphabet)
+                if (ch >= 0x3f) {
+                    buffIndex = addToBuffer(out, buff, buffIndex,
+                                            buffLength, ch);
+                } else if (ch >= 0x27) { // If above "'"...
+                    if (ch < 0x3c) {
+                        // If between "'" and ";", no escaping is needed
+                        buffIndex = addToBuffer(out, buff, buffIndex,
+                                                buffLength, ch);
+                        // Note - "<" isn't escaped in attributes, as per HTML spec
+                    } else if (ch == '>') {
+                        buffIndex = flushBuffer(out, buff, buffIndex);
+
+                        out.write(">");
+                    } else {
+                        buffIndex = addToBuffer(out, buff, buffIndex,
+                                                buffLength, ch);
+                    }
+                } else {
+                    if (ch == '&') {
+                        buffIndex = flushBuffer(out, buff, buffIndex);
+
+                        // HTML 4.0, section B.7.1: ampersands followed by
+                        // an open brace don't get escaped
+                        if ((i + 1 < end) && (text[i + 1] == '{')) {
+                            out.write(ch);
+                        } else {
+                            out.write("&");
+                        }
+                    } else if (ch == '"') {
+                        buffIndex = flushBuffer(out, buff, buffIndex);
+
+                        out.write(""");
+                    } else {
+                        buffIndex = addToBuffer(out, buff, buffIndex,
+                                                buffLength, ch);
+                    }
+                }
+            } else {
+                buffIndex = flushBuffer(out, buff, buffIndex);
+
+                // Double-byte characters to encode.
+                // PENDING: when outputting to an encoding that
+                // supports double-byte characters (UTF-8, for example),
+                // we should not be encoding
+                _writeDecRef(out, ch);
+            }
+        }
+
+        flushBuffer(out, buff, buffIndex);
+    }
+
+    //-------------------------------------------------
+    // The following methods include the handling of
+    // escape characters....
+    //-------------------------------------------------
+
+    static public void writeText(Writer out,
+                                 char[] buffer,
+                                 char[] text) throws IOException {
+        writeText(out, buffer, text, 0, text.length);
+    }
+
+
+    /**
+     * Write char array text.  Note that this code is duplicated below
+     * for Strings - change both places if you make any changes!!!
+     */
+    static public void writeText(Writer out,
+                                 char[] buff,
+                                 char[] text,
+                                 int start,
+                                 int length) throws IOException {
+        int buffLength = buff.length;
+        int buffIndex = 0;
+
+        int end = start + length;
+        for (int i = start; i < end; i++) {
+            char ch = text[i];
+
+            // Tilde or less...
+            if (ch < 0xA0) {
+                // If "?" or over, no escaping is needed (this covers
+                // most of the Latin alphabet)
+                if (ch >= 0x3f) {
+                    buffIndex = addToBuffer(out, buff, buffIndex,
+                                            buffLength, ch);
+                } else if (ch >= 0x27) { // If above "'"...
+                    // If between "'" and ";", no escaping is needed
+                    if (ch < 0x3c) {
+                        buffIndex = addToBuffer(out, buff, buffIndex,
+                                                buffLength, ch);
+                    } else if (ch == '<') {
+                        buffIndex = flushBuffer(out, buff, buffIndex);
+
+                        out.write("<");
+                    } else if (ch == '>') {
+                        buffIndex = flushBuffer(out, buff, buffIndex);
+
+                        out.write(">");
+                    } else {
+                        buffIndex = addToBuffer(out, buff, buffIndex,
+                                                buffLength, ch);
+                    }
+                } else {
+                    if (ch == '&') {
+                        buffIndex = flushBuffer(out, buff, buffIndex);
+
+                        out.write("&");
+                    } else {
+                        buffIndex = addToBuffer(out, buff, buffIndex,
+                                                buffLength, ch);
+                    }
+                }
+            } else {
+                // Double-byte characters to encode.
+                // PENDING: when outputting to an encoding that
+                // supports double-byte characters (UTF-8, for example),
+                // we should not be encoding
+                buffIndex = flushBuffer(out, buff, buffIndex);
+                _writeDecRef(out, ch);
+            }
+        }
+
+        flushBuffer(out, buff, buffIndex);
+    }
+
+
+    /**
+     * Write String text.  Note that this code is duplicated above for
+     * character arrays - change both places if you make any changes!!!
+     */
+    static public void writeText(Writer out,
+                                 char[] buff,
+                                 String text) throws IOException {
+        int buffLength = buff.length;
+        int buffIndex = 0;
+
+        int length = text.length();
+
+        for (int i = 0; i < length; i++) {
+            char ch = text.charAt(i);
+
+            // Tilde or less...
+            if (ch < 0xA0) {
+                // If "?" or over, no escaping is needed (this covers
+                // most of the Latin alphabet)
+                if (ch >= 0x3f) {
+                    buffIndex = addToBuffer(out, buff, buffIndex,
+                                            buffLength, ch);
+                } else if (ch >= 0x27) {  // If above "'"...
+                    // If between "'" and ";", no escaping is needed
+                    if (ch < 0x3c) {
+                        buffIndex = addToBuffer(out, buff, buffIndex,
+                                                buffLength, ch);
+                    } else if (ch == '<') {
+                        buffIndex = flushBuffer(out, buff, buffIndex);
+                        out.write("<");
+                    } else if (ch == '>') {
+                        buffIndex = flushBuffer(out, buff, buffIndex);
+                        out.write(">");
+                    } else {
+                        buffIndex = addToBuffer(out, buff, buffIndex,
+                                                buffLength, ch);
+                    }
+                } else {
+                    if (ch == '&') {
+                        buffIndex = flushBuffer(out, buff, buffIndex);
+
+                        out.write("&");
+                    } else {
+                        buffIndex = addToBuffer(out, buff, buffIndex,
+                                                buffLength, ch);
+                    }
+                }
+            } else {
+                // Double-byte characters to encode.
+                // PENDING: when outputting to an encoding that
+                // supports double-byte characters (UTF-8, for example),
+                // we should not be encoding
+                buffIndex = flushBuffer(out, buff, buffIndex);
+                _writeDecRef(out, ch);
+            }
+        }
+
+        flushBuffer(out, buff, buffIndex);
+    }
+
+    /**
+     * Writes a character as a decimal escape.  Hex escapes are smaller than
+     * the decimal version, but Netscape didn't support hex escapes until
+     * 4.7.4.
+     */
+    static private void _writeDecRef(Writer out, char ch) throws IOException {
+        if (ch == '\u20ac') {
+            out.write("€");
+            return;
+        }
+        out.write("&#");
+        // Formerly used String.valueOf().  This version tests out
+        // about 40% faster in a microbenchmark (and on systems where GC is
+        // going gonzo, it should be even better)
+        int i = (int) ch;
+        if (i > 10000) {
+            out.write('0' + (i / 10000));
+            i = i % 10000;
+            out.write('0' + (i / 1000));
+            i = i % 1000;
+            out.write('0' + (i / 100));
+            i = i % 100;
+            out.write('0' + (i / 10));
+            i = i % 10;
+            out.write('0' + i);
+        } else if (i > 1000) {
+            out.write('0' + (i / 1000));
+            i = i % 1000;
+            out.write('0' + (i / 100));
+            i = i % 100;
+            out.write('0' + (i / 10));
+            i = i % 10;
+            out.write('0' + i);
+        } else {
+            out.write('0' + (i / 100));
+            i = i % 100;
+            out.write('0' + (i / 10));
+            i = i % 10;
+            out.write('0' + i);
+        }
+
+        out.write(';');
+    }
+
+    /**
+     * Flush the contents of the buffer to the output stream
+     * and return the reset buffer index
+     */
+    private static int flushBuffer(Writer out,
+                                   char[] buffer,
+                                   int bufferIndex) throws IOException {
+        if (bufferIndex > 0) {
+            out.write(buffer, 0, bufferIndex);
+        }
+
+        return 0;
+    }
+
+    /**
+     * Add a character to the buffer, flushing the buffer if the buffer is
+     * full, and returning the new buffer index
+     */
+    private static int addToBuffer(Writer out,
+                                   char[] buffer,
+                                   int bufferIndex,
+                                   int bufferLength,
+                                   char ch) throws IOException {
+        if (bufferIndex >= bufferLength) {
+            out.write(buffer, 0, bufferIndex);
+            bufferIndex = 0;
+        }
+
+        buffer[bufferIndex] = ch;
+
+        return bufferIndex + 1;
+    }
+
+
+}
+
diff --git a/jsf-demo/archive/renderkits/src/script/http-svg.es b/jsf-demo/archive/renderkits/src/script/http-svg.es
new file mode 100644
index 0000000..4429d4c
--- /dev/null
+++ b/jsf-demo/archive/renderkits/src/script/http-svg.es
@@ -0,0 +1,158 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 2005-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+var g_url = null;
+var g_request = null;
+
+
+/**
+ * Process the response - extract the the 'action' attribute value from
+ * the response and use that to cause the rendering of the next view.
+ * If any errors are encountered, the current view is re-rendered.
+ *
+ * Note that this string parsing does not need to occur if we can get
+ * the response back as XML - in which case we can more readily find
+ * the 'action' attribute value.  Curretnly, if the next view to be
+ * rendered is an HTML page, the response content-type is "text/html". 
+ */  
+function processResponse() {
+    var request = getXMLHttpRequest();
+    if (request.readyState == 4) {
+        if (request.status == 200) {
+            var action = request.getResponseHeader("VIEW-URI");
+            window.location.href = action;
+            return;
+        }
+   }
+}
+
+/**
+ * Get an instance of request object.
+ */
+function getXMLHttpRequest() {
+  if (!g_request) {
+    if (window.XMLHttpRequest) {
+      g_request = new XMLHttpRequest();
+    } else if (window.ActiveXObject) {
+      isIE = true;
+      g_request = new ActiveXObject("Microsoft.XMLHTTP");
+    }
+  }
+  return (g_request); 
+}
+
+/**
+ * Send the request (as a POST).
+ */
+function sendRequest(url, postData) {
+  g_url= url;
+  var request = getXMLHttpRequest();
+  request.open("POST", url, true);
+  request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
+  request.setRequestHeader("XML-HTTP", "XML-HTTP");
+  request.onreadystatechange = processResponse; 
+  request.send(postData);
+}
+
+/**
+ * Retrieve a control's 'form' element.  The control's 'form' element
+ * is identified as having an 'action' attribute.
+ */ 
+function getForm(control) {
+    var form = null;
+    var namespaceURI = control.namespaceURI;
+    var parent = control.parentNode;
+    while (parent != null && parent.nodeType == 1) {
+        if (parent.namespaceURI == namespaceURI &&
+            parent.localName == "g" &&
+            parent.getAttribute("action") != null) {
+            form = parent;
+            break;
+        }
+        parent = parent.parentNode;
+    }
+    return form;
+}
+
+/**
+ * Collect all input field data for the current form, and create a 
+ * 'post data' string (used to submit to a server);  Input data is 
+ * identified as as 'text' elements that have a 'value' attribute.
+ */
+function getPostData(form, control) {
+    /*
+     * Add the control that caused the submission, and the form..
+     */
+    var formValues = new Array();
+    formValues[0] = new Object();
+    formValues[0].id = control.parentNode.id;
+    formValues[0].value = control.parentNode.id;
+    formValues[1] = new Object();
+    formValues[1].id = form.id;
+    formValues[1].value = form.id;
+
+    var child = form.firstChild;
+    while (child != null) {
+        if (child.nodeType == 1 && 
+            child.localName == "text" &&
+            child.getAttribute("value") != null) {
+            var len = formValues.length;
+            formValues[len] = new Object();
+            formValues[len].id = child.id;
+            formValues[len].value = child.getAttribute("value");
+        }
+        child = child.nextSibling;
+    }
+    var postData = ""; 
+    var viewStateRegex = new RegExp("javax.faces.ViewState:.*$");
+    for (var i=0; i<formValues.length; i++) {
+
+        if (formValues[i].id.match(viewStateRegex)) {
+            var re = new RegExp("\\+", "g");
+            var val = formValues[i].value;
+            formValues[i].value = val.replace(re, "\%2B");
+        } 
+        postData += formValues[i].id + "=" + formValues[i].value; 
+        if (i != formValues.length-1) {
+            postData += "&";
+        }
+    }
+    return postData;
+}
diff --git a/jsf-demo/archive/renderkits/src/script/http-xul.es b/jsf-demo/archive/renderkits/src/script/http-xul.es
new file mode 100644
index 0000000..f7ee680
--- /dev/null
+++ b/jsf-demo/archive/renderkits/src/script/http-xul.es
@@ -0,0 +1,157 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 2005-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+var g_url = null;
+var g_request = null;
+
+
+/**
+ * Process the response - extract the the 'action' attribute value from
+ * the response and use that to cause the rendering of the next view.
+ * If any errors are encountered, the current view is re-rendered.
+ *
+ * Note that this string parsing does not need to occur if we can get
+ * the response back as XML - in which case we can more readily find
+ * the 'action' attribute value.  Curretnly, if the next view to be
+ * rendered is an HTML page, the response content-type is "text/html". 
+ */  
+function processResponse() {
+    var request = getXMLHttpRequest();
+    if (request.readyState == 4) {
+        if (request.status == 200) {
+            var action = request.getResponseHeader("VIEW-URI");
+            window.location.href = action;
+            return;
+        }
+   }
+}
+
+/**
+ * Get an instance of request object.
+ */
+function getXMLHttpRequest() {
+  if (!g_request) {
+    if (window.XMLHttpRequest) {
+      g_request = new XMLHttpRequest();
+    } else if (window.ActiveXObject) {
+      isIE = true;
+      g_request = new ActiveXObject("Microsoft.XMLHTTP");
+    }
+  }
+  return (g_request); 
+}
+
+/**
+ * Send the request (as a POST).
+ */
+function sendRequest(url, postData) {
+  g_url= url;
+  var request = getXMLHttpRequest();
+  request.open("POST", url, true);
+  request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
+  request.setRequestHeader("XML-HTTP", "XML-HTTP");
+  request.onreadystatechange = processResponse; 
+  request.send(postData);
+}
+
+/**
+ * Retrieve a control's 'form' element.  The control's 'form' element
+ * is identified as having an 'action' attribute.
+ */ 
+function getForm(control) {
+    var form = null;
+    var namespaceURI = control.namespaceURI;
+    var parent = control.parentNode;
+    while (parent != null && parent.nodeType == 1) {
+        if (parent.namespaceURI == namespaceURI &&
+            parent.localName == "window" &&
+            parent.getAttribute("action") != null) {
+            form = parent;
+            break;
+        }
+        parent = parent.parentNode;
+    }
+    return form;
+}
+
+/**
+ * Collect all input field data for the current form, and create a 
+ * 'post data' string (used to submit to a server);  Input data is 
+ * identified as as 'text' elements that have a 'value' attribute.
+ */
+function getPostData(form, control) {
+    /*
+     * Add the control that caused the submission, and the form..
+     */
+    var formValues = new Array();
+    formValues[0] = new Object();
+    formValues[0].id = control.id;
+    formValues[0].value = control.id;
+    formValues[1] = new Object();
+    formValues[1].id = form.id;
+    formValues[1].value = form.id;
+
+    var child = form.firstChild;
+    while (child != null) {
+        if (child.nodeType == 1 && 
+            child.localName == "textbox" &&
+            child.getAttribute("value") != null) {
+            var len = formValues.length;
+            formValues[len] = new Object();
+            formValues[len].id = child.id;
+            formValues[len].value = child.getAttribute("value");
+        }
+        child = child.nextSibling;
+    }
+    var postData = ""; 
+    var viewStateRegex = new RegExp("javax.faces.ViewState:.*$");
+    for (var i=0; i<formValues.length; i++) {
+        if (formValues[i].id.match(viewStateRegex)) {
+            var re = new RegExp("\\+", "g");
+            var val = formValues[i].value;
+            formValues[i].value = val.replace(re, "\%2B");
+        }
+        postData += formValues[i].id + "=" + formValues[i].value; 
+        if (i != formValues.length-1) {
+            postData += "&";
+        }
+    }
+    return postData;
+}
diff --git a/jsf-demo/archive/renderkits/src/script/lifecycle.es b/jsf-demo/archive/renderkits/src/script/lifecycle.es
new file mode 100644
index 0000000..26944b7
--- /dev/null
+++ b/jsf-demo/archive/renderkits/src/script/lifecycle.es
@@ -0,0 +1,333 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 2005-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+/**
+ * Global Variables
+ */
+    var delay = 5;
+    var timer;
+    var posX;
+    var posY;
+    var deltaX;
+    var deltaY;
+    var toX;
+    var toY;
+    var coordinates;
+    var idx;
+    var toggle = "stop";
+    var vertical = "false";
+    var convalError = "false";
+    var initialRequest = "false";
+    var postback = "false";
+
+    /**
+     * 'Initial request' simulation
+     */ 
+    function initialMove() {
+        resetDemo();
+        initialRequest = "true";
+        coordinates = new Array(155, 270, 25, 270);
+        idx = 0;
+        posX = 25;
+        posY = 120;
+        deltaX = 2;
+        deltaY = 2;
+        setGraphicInfo();
+        toX = 160;
+        toY = 120;
+        clearInterval(timer);
+        timer = setInterval("moveControlPoints()", delay);
+    }
+
+    /**
+     * 'Postback' simulation
+     */
+    function postbackMove() {
+        resetDemo();
+        postback = "true";
+        coordinates = new Array(780, 275, 25, 270);
+        idx = 0;
+        posX = 25;
+        posY = 120;
+        deltaX = 2;
+        deltaY = 2;
+        setGraphicInfo();
+        toX = 780;
+        toY = 120;
+        clearInterval(timer);
+        timer = setInterval("moveControlPoints()", delay);
+    }
+
+    /**
+     * 'Validation error' simulation
+     */
+    function postbackConValMove() {
+        resetDemo();
+        postback = "true";
+        coordinates = new Array(660, 200, 170, 200, 170, 270, 25, 270);
+        idx = 0;
+        posX = 25;
+        posY = 120;
+        deltaX = 2;
+        deltaY = 2;
+        setGraphicInfo();
+        toX = 660;
+        toY = 120;
+        clearInterval(timer);
+        timer = setInterval("moveControlPoints()", delay);
+        convalError = "true";
+    }
+
+    /**
+     * Dynamically update 'request' symbol coordinates to
+     * give the appearance of motion.
+     */
+    function setGraphicInfo() {
+        var rect = window.document.getElementById("form:request");
+        rect.setAttribute("x", posX);
+        rect.setAttribute("y", posY);
+        if (vertical == "true") {
+            rect.setAttribute("width", "10");
+            rect.setAttribute("height", "15");
+        } else {
+            rect.setAttribute("width", "15");
+            rect.setAttribute("height", "10");
+        }
+
+        if (posX == 660 && posY == 120 && convalError == "true") {
+            showConValError();
+            var messagePanel = window.document.getElementById("form:messagePanel");
+            messagePanel.setAttribute("style", "stroke:red; fill:#f0e68c; visibility:visible");
+            var msg1 = window.document.getElementById("form:msg1");
+            msg1.firstChild.nodeValue = "Process Validations Phase:";
+            msg1.setAttribute("style", "stroke:red; fill:none; visibility:visible");
+            var msg2 = window.document.getElementById("form:msg2");
+            msg2.firstChild.nodeValue = "1. validation error transpired..  ";
+            msg2.setAttribute("style", "stroke:red; fill:none; visibility:visible");
+            var msg3 = window.document.getElementById("form:msg3");
+             msg3.firstChild.nodeValue = "2. render response signal set";
+            msg3.setAttribute("style", "stroke:red; fill:none; visibility:visible");
+        }
+        if (posX == 105 && posY == 120) {
+            var messagePanel = window.document.getElementById("form:messagePanel");
+            messagePanel.setAttribute("style", "stroke:red; fill:#f0e68c; visibility:visible");
+            var msg1 = window.document.getElementById("form:msg1");
+            msg1.firstChild.nodeValue = "Restore View Phase:";
+            msg1.setAttribute("style", "stroke:red; fill:none; visibility:visible");
+            if (initialRequest == "true") {
+                var msg2 = window.document.getElementById("form:msg2");
+                msg2.firstChild.nodeValue = "1. new view root created";
+                msg2.setAttribute("style", "stroke:red; fill:none; visibility:visible");
+                var msg3 = window.document.getElementById("form:msg3");
+                msg3.firstChild.nodeValue = "2. render response signal set";
+                msg3.setAttribute("style", "stroke:red; fill:none; visibility:visible");
+                initialRequest == "false";
+            } else {
+                var msg2 = window.document.getElementById("form:msg2");
+                msg2.firstChild.nodeValue = "1. existing view restored";
+                msg2.setAttribute("style", "stroke:red; fill:none; visibility:visible");
+            }
+        } else if ((posX >= 100 && posX <= 200) && (posY >= 250 && posY <= 300)) {
+            clearMessages();
+            var messagePanel = window.document.getElementById("form:messagePanel");
+            messagePanel.setAttribute("style", "stroke:red; fill:#f0e68c; visibility:visible");
+            var msg1 = window.document.getElementById("form:msg1");
+            msg1.firstChild.nodeValue = "Render Response Phase:";
+            msg1.setAttribute("style", "stroke:red; fill:none; visibility:visible");
+            var msg2 = window.document.getElementById("form:msg2");
+            msg2.firstChild.nodeValue = "1. component view created";
+            msg2.setAttribute("style", "stroke:red; fill:none; visibility:visible");
+            var msg3 = window.document.getElementById("form:msg3");
+            msg3.firstChild.nodeValue = "2. renderers generate markup";
+            msg3.setAttribute("style", "stroke:red; fill:none; visibility:visible");
+        } else if (posX == 355 && posY == 120) {
+            clearMessages();
+            var messagePanel = window.document.getElementById("form:messagePanel");
+            messagePanel.setAttribute("style", "stroke:red; fill:#f0e68c; visibility:visible");
+            var msg1 = window.document.getElementById("form:msg1");
+            msg1.firstChild.nodeValue = "Apply Request Values Phase:";
+            msg1.setAttribute("style", "stroke:red; fill:none; visibility:visible");
+            var msg2 = window.document.getElementById("form:msg2");
+            msg2.firstChild.nodeValue = "1. request parameter values propogated to component local values..  ";
+            msg2.setAttribute("style", "stroke:red; fill:none; visibility:visible");
+            var msg3 = window.document.getElementById("form:msg3");
+            msg3.firstChild.nodeValue = "2. ActionEvent(s) queued for Command components.. ";
+            msg3.setAttribute("style", "stroke:red; fill:none; visibility:visible");
+        } else if (posX == 605 && posY == 120) {
+            clearMessages();
+            var messagePanel = window.document.getElementById("form:messagePanel");
+            messagePanel.setAttribute("style", "stroke:red; fill:#f0e68c; visibility:visible");
+            var msg1 = window.document.getElementById("form:msg1");
+            msg1.firstChild.nodeValue = "Process Validations Phase:";
+            msg1.setAttribute("style", "stroke:red; fill:none; visibility:visible");
+            var msg2 = window.document.getElementById("form:msg2");
+            msg2.firstChild.nodeValue = "1. validators are invoked..  ";
+            msg2.setAttribute("style", "stroke:red; fill:none; visibility:visible");
+            var msg3 = window.document.getElementById("form:msg3");
+            msg3.firstChild.nodeValue = "2. ValueChangeEvent(s) queued for valid values.. ";
+            msg3.setAttribute("style", "stroke:red; fill:none; visibility:visible");
+        } else if ((posX >= 600 && posX <= 720) && (posY >= 250 && posY <= 300)) {
+            clearMessages();
+            var messagePanel = window.document.getElementById("form:messagePanel");
+            messagePanel.setAttribute("style", "stroke:red; fill:#f0e68c; visibility:visible");
+            var msg1 = window.document.getElementById("form:msg1");
+            msg1.firstChild.nodeValue = "Update Model Values Phase:";
+            msg1.setAttribute("style", "stroke:red; fill:none; visibility:visible");
+            var msg2 = window.document.getElementById("form:msg2");
+            msg2.firstChild.nodeValue = "1. component values propogated to model objects..  ";
+            msg2.setAttribute("style", "stroke:red; fill:none; visibility:visible");
+        } else if ((posX >= 350 && posX <= 470) && (posY >= 250 && posY <= 300)) {
+            clearMessages();
+            var messagePanel = window.document.getElementById("form:messagePanel");
+            messagePanel.setAttribute("style", "stroke:red; fill:#f0e68c; visibility:visible");
+            var msg1 = window.document.getElementById("form:msg1");
+            msg1.firstChild.nodeValue = "Invoke Applications Phase:";
+            msg1.setAttribute("style", "stroke:red; fill:none; visibility:visible");
+            var msg2 = window.document.getElementById("form:msg2");
+            msg2.firstChild.nodeValue = "1. application events handled..  ";
+            msg2.setAttribute("style", "stroke:red; fill:none; visibility:visible");
+            var msg3 = window.document.getElementById("form:msg3");
+            msg3.firstChild.nodeValue = "2. next view is determined.. ";
+            msg3.setAttribute("style", "stroke:red; fill:none; visibility:visible");
+        }
+
+    }
+
+    /**
+     * Calculate coordinates
+     */
+    function moveControlPoints() {
+        if (posX < toX) {
+            posX = posX + deltaX;
+            if (posX >= toX) {
+                posX = toX;
+            }
+            vertical = "false";
+        } else if (posX > toX) {
+            posX = posX - deltaX;
+            if (posX <= toX) {
+                posX = toX;
+            }
+            vertical = "false";
+        }
+        if (posY < toY) {
+            posY = posY + deltaY;
+            if (posY >= toY) {
+                posY = toY;
+            }
+            vertical = "true";
+        } else if (posY > toY) {
+            posY = posY - deltaY;
+            if (posY <= toY) {
+                posY = toY;
+            }
+            vertical = "true";
+        }
+        setGraphicInfo();
+        if (posX == toX && posY == toY) {
+            clearInterval(timer);
+            toX = coordinates[idx];
+            idx++;
+            toY= coordinates[idx];
+            idx++;
+            timer = setInterval("moveControlPoints()", delay);
+        }
+    }
+
+    /**
+     * Stop/Restore 
+     */
+    function stopMovement() {
+        clearInterval(timer);
+        if (toggle == "stop") {
+            toggle = "resume";
+            timer = setInterval("moveControlPoints()", delay);
+        } else if (toggle == "resume") {
+            toggle = "stop";
+            clearInterval(timer);
+        }
+    }
+
+    /**
+     * Reset Demo
+     */
+    function resetDemo() {
+        clearInterval(timer);
+        clearErrorPaths();
+        clearMessages();
+        var request = window.document.getElementById("form:request");
+        request.setAttribute("x", "25");
+        request.setAttribute("y", "125");
+        initialRequest = "false";
+        postback = "false";
+    }
+
+
+    function showConValError() {
+        var convalError1 = window.document.getElementById("form:convalError1");
+        convalError1.setAttribute("style", "stroke:red; fill: none; stroke-dasharray:9,5; visibility:visible");
+        var convalError2 = window.document.getElementById("form:convalError2");
+        convalError2.setAttribute("style", "stroke:red; fill: none; stroke-dasharray:9,5; visibility:visible");
+        var convalError3 = window.document.getElementById("form:convalError3");
+        convalError3.setAttribute("style", "stroke:red; fill: none; stroke-dasharray:9,5; visibility:visible");
+    }
+                                                                                                                         
+    function clearErrorPaths() {
+        var convalError1 = window.document.getElementById("form:convalError1");
+        convalError1.setAttribute("style", "stroke:red; fill: none; stroke-dasharray:9,5; visibility:hidden");
+        var convalError2 = window.document.getElementById("form:convalError2");
+        convalError2.setAttribute("style", "stroke:red; fill: none; stroke-dasharray:9,5; visibility:hidden");
+        var convalError3 = window.document.getElementById("form:convalError3");
+        convalError3.setAttribute("style", "stroke:red; fill: none; stroke-dasharray:9,5; visibility:hidden");
+    }
+
+    function clearMessages() {
+        var messagePanel = window.document.getElementById("form:messagePanel");
+        messagePanel.setAttribute("style", "stroke:red; fill:#f0e68c; visibility:hidden");
+        var msg1 = window.document.getElementById("form:msg1");
+        msg1.setAttribute("style", "stroke:red; fill: none; visibility:hidden");
+        var msg2 = window.document.getElementById("form:msg2");
+        msg2.setAttribute("style", "stroke:red; fill: none; visibility:hidden");
+        var msg3 = window.document.getElementById("form:msg3");
+        msg3.setAttribute("style", "stroke:red; fill: none; visibility:hidden");
+    }
+
+        
+
diff --git a/jsf-demo/archive/renderkits/web/WEB-INF/tlds/svg.tld b/jsf-demo/archive/renderkits/web/WEB-INF/tlds/svg.tld
new file mode 100644
index 0000000..60b51ad
--- /dev/null
+++ b/jsf-demo/archive/renderkits/web/WEB-INF/tlds/svg.tld
@@ -0,0 +1,1468 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<taglib xsi:schemaLocation="http://java.sun.com/xml/ns/javaee web-jsptaglibrary_2_1.xsd"
+xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.1">
+                                                                                       
+<!-- ============== Tag Library Description Elements ============= -->
+                                                                                       
+    <description>
+        This tag library contains JavaServer Faces component tags for all
+        UIComponent + SVG RenderKit Renderer combinations defined in the
+        JavaServer Faces Specification.
+    </description>
+    <tlib-version>
+        1.2
+    </tlib-version>
+    <short-name>
+       g 
+    </short-name>
+    <uri>
+        http://java.sun.com/jsf/svg
+    </uri>
+
+    <tag>
+        <description>
+            <![CDATA[<p>Renders an SVG "input" element.</p>
+                                                                                       
+            <p>Decode Behavior</p>
+                                                                                       
+            <ul>
+            <p>Obtain the <code>Map</code> from the "requestParameterMap"
+            property of the <code>ExternalContext</code>.  If the value in the
+            <code>Map</code> for the value of the "clientId" property of the
+            component is <code>null</code>, create a String by concatenating
+            the value of the "clientId" property of the component with the
+            String ".x" (without the quotes).  Create another String in the
+            same manner, but concatenate ".y" (without the quotes).  If
+            <code>null</code> is the value in the <code>Map</code> for both
+            Strings, return from <code>decode()</code>.  If the value in the
+            <code>Map</code> for the value of the "clientId" property of the
+            component is not <code>null</code>, get the value of the "type"
+            attribute, and convert it to lower case.  If the result is equal
+            to the String "reset" (without the quotes), return from
+            <code>decode()</code>.  Otherwise, create a
+            <code>javax.faces.event.ActionEvent</code> around the component,
+            and pass it to the <code>queueEvent()</code> method of the
+            component, which must be an instance of
+            <code>UICommand</code>.</p>
+            </ul>
+
+            <p>Encode Behavior</p>
+                                                                                       
+            <ul>
+                                                                                       
+            <p>Render the clientId of the component as the value of the
+            "name" attribute.  Render the current value of the component as
+            the value of the "value" attribute. If "image" attribute is specified
+            render it as the value of the "src" attribute after passing it
+            to the <code>getResourceURL()</code> method of the <code>ViewHandler</code>            for this application, and passing the result through the
+            <code>encodeResourceURL()</code> method of the
+            <code>ExternalContext</code>.If the "styleClass" attribute
+            is specified, render its value as the value of the "class"
+            attribute.</p>
+                                                                                       
+            </ul>]]>
+        </description>
+
+        <name>
+            commandButton
+        </name>
+        <tag-class>
+            renderkits.taglib.svg.CommandButtonTag
+        </tag-class>
+        <body-content>
+            JSP
+        </body-content>
+
+        <attribute>
+            <description>
+                <![CDATA[MethodBinding representing the application action to invoke when
+                this component is activated by the user.  The expression must
+                evaluate to a public method that takes no parameters, and returns
+                a String (the logical outcome) which is passed to the
+                NavigationHandler for this application.]]>
+            </description>
+            <name>
+                action
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-method>
+                <method-signature>
+                    java.lang.String action()
+                </method-signature>
+            </deferred-method>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[MethodBinding representing an action listener method that 
+                will be notified when this component is activated by the user.  The
+                expression must evaluate to a public method that takes an
+                ActionEvent parameter, with a return type of void.]]>
+            </description>
+            <name>
+                actionListener
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-method>
+                <method-signature>
+                    void actionListener(javax.faces.event.ActionEvent)
+                </method-signature>
+            </deferred-method>
+        </attribute>
+        <attribute>
+            <description>
+                The ValueExpression linking this component to a property in a 
+                backing bean
+            </description>
+            <name>
+                binding
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    javax.faces.component.UIComponent
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+              X position of the button.
+            </description>
+            <name>
+                x
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+              Y position of the button.
+            </description>
+            <name>
+                y 
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+              X offset for text anchor within the button.
+            </description>
+            <name>
+                dx
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+              Y offset for text anchor within the button.
+            </description>
+            <name>
+                dy
+            </name>
+            <required>
+                false 
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+              The rendered height of this component in pixels.
+            </description>
+            <name>
+                height
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[The component identifier for this component.  This value must
+                be unique within the closest parent component that is a naming
+                container.]]>
+            </description>
+            <name>
+                id
+            </name>
+            <required>
+                false
+            </required>
+            <rtexprvalue>
+                false
+            </rtexprvalue>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Flag indicating that, if this component is activated by 
+                the user, notifications should be delivered to interested listeners 
+                and actions immediately (that is, during Apply Request Values phase) 
+                rather than waiting until Invoke Application phase.]]>
+            </description>
+            <name>
+                immediate
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    boolean
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[A localized user presentable name for this component.]]>
+            </description>
+            <name>
+                label
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Javascript code executed when an element is activated, 
+                for instance, thru a mouse click or a keypress. A numerical 
+                argument is provided to give an indication of the type of 
+                activation that occurs: 1 for a simple activation (e.g. a 
+                simple click or Enter), 2 for hyperactivation (for instance a 
+                double click or Shift Enter).]]>
+            </description>
+            <name>
+                onactivate
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Javascript code executed when a pointer button is
+                clicked over this element.]]>
+            </description>
+            <name>
+                onclick
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Javascript code executed when this element receives
+                keyboard focus.]]>
+            </description>
+            <name>
+                onfocusin
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Javascript code executed when this element loses 
+                keyboard focus.]]>
+            </description>
+            <name>
+                onfocusout
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Javascript code executed when a pointer button is
+                pressed down over this element.]]>
+            </description>
+            <name>
+                onmousedown
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Javascript code executed when the pointing device is 
+                moved while it is over this element.]]>
+            </description>
+            <name>
+                onmousemove
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Javascript code executed when the pointing device is
+                moved onto this element.]]>
+            </description>
+            <name>
+                onmouseover
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Javascript code executed when the pointing device is
+                moved away from this element.]]>
+            </description>
+            <name>
+                onmouseout
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Javascript code executed when a pointer button is
+                released over this element.]]>
+            </description>
+            <name>
+                onmouseup
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Flag indicating whether or not this component should be 
+                rendered (during Render Response Phase), or processed on any 
+                subsequent form submit.  The default value for this property is 
+                true.]]>
+            </description>
+            <name>
+                rendered
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    boolean
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <name>rx</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+              X radius of rounded corners on the button.
+            </description>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <name>ry</name>
+            <required>false</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+              Y radius of rounded corners on the button.
+            </description>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Style(s) to be applied when this component is rendered.]]>    
+            </description>
+            <name>
+                style
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Space-separated list of CSS style class(es) to be applied whenthis element is rendered.  This value must be passed through as the "class" attribute on generated markup.]]>
+            </description>
+            <name>
+                styleClass
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Style(s) to be applied to this component's label.]]>
+            </description>
+            <name>
+                labelStyle
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Type of button to create.  Valid values are "submit".]]>
+            </description>
+            <name>
+                type
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[The current value of this component.]]>
+            </description>
+            <name>
+                value
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.Object
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[The rendered width of this component in pixels.]]>
+            </description>
+            <name>
+                width
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+    </tag>
+
+    <tag>
+        <description>
+            <![CDATA[<p>Renders an HTML "form" element.</p>
+                                                                                       
+            <p>Decode Behavior</p>
+                                                                                       
+            <ul>
+                                                                                       
+            <p>Obtain the <code>Map</code> from the "requestParameterMap"
+            property of the <code>ExternalContext</code>.  If the map contains
+            an entry for the "clientId" of this <code>UIForm</code> component,
+            call <code>setSubmitted(true)</code> on the form, otherwise call
+            <code>setSubmitted(false)</code> on the form.</p>
+                                                                                       
+            </ul>
+                                                                                       
+                                                                                       
+                                                                                       
+            <p>Encode Behavior</p>
+                                                                                       
+            <ul>
+                                                                                       
+            <p>The value of the "method" attribute must be "post".  The value
+            of the "action" attribute must be the result of passing the view
+            identifier of the current view to the <code>getActionURL()</code>
+            method of the <code>ViewHandler</code> for this application, then
+            passing that String to the <code>encodeActionURL()</code> method
+            on the <code>ExternalContext</code>.  If the "styleClass"
+            attribute is specified, render its value as the value of the
+            "class" attribute.  Call <code>ViewHandler.writeState()</code>
+            before the the close of the "form" element.  Render all the
+            necessary hidden fields for all commandLink instances in the page
+            just before the close of the "form" element.</p>
+                                                                                       
+            </ul>]]>
+        </description>
+        <name>
+            form
+        </name>
+        <tag-class>
+            renderkits.taglib.svg.FormTag
+        </tag-class>
+        <body-content>
+            JSP
+        </body-content>
+        <attribute>
+            <description>
+                <![CDATA[The component identifier for this component.  This value must
+be
+                unique within the closest parent component that is a naming
+                container.]]>
+            </description>
+            <name>
+                id
+            </name>
+            <required>
+                false
+            </required>
+            <rtexprvalue>
+                false
+            </rtexprvalue>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Flag indicating whether or not this form should prepend its id                to its descendent's id during the clientId generation process.
+                If this flag is not set, the default value is true.]]>
+            </description>
+            <name>
+                prependId
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    boolean
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Flag indicating whether or not this component should be rendered
+                (during Render Response Phase), or processed on any subsequent
+                form submit.  The default value for this property is true.]]>
+            </description>
+            <name>
+                rendered
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    boolean
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[List of content types that a server processing this form
+                will handle correctly]]>
+            </description>
+            <name>
+                accept
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[List of character encodings for input data
+                that are accepted by the server processing
+                this form.]]>
+            </description>
+            <name>
+                acceptcharset
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Content type used to submit the form to the server.  If not
+                specified, the default value is
+                "application/x-www-form-urlencoded".]]>
+            </description>
+            <name>
+                enctype
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Javascript code executed when a pointer button is
+                clicked over this element.]]>
+            </description>
+            <name>
+                onclick
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Javascript code executed when a pointer button is
+                pressed down over this element.]]>
+            </description>
+            <name>
+                onmousedown
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Javascript code executed when a pointer button is
+                moved within this element.]]>
+            </description>
+            <name>
+                onmousemove
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Javascript code executed when a pointer button is
+                moved away from this element.]]>
+            </description>
+            <name>
+                onmouseout
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Javascript code executed when a pointer button is
+                moved onto this element.]]>
+            </description>
+            <name>
+                onmouseover
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Javascript code executed when a pointer button is
+                released over this element.]]>
+            </description>
+            <name>
+                onmouseup
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[CSS style(s) to be applied when this component is rendered.]]>            </description>
+            <name>
+                style
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                The ValueExpression linking this component to a property in a backing bean
+            </description>
+            <name>
+                binding
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    javax.faces.component.UIComponent
+                </type>
+            </deferred-value>
+        </attribute>
+    </tag>
+    <tag>
+        <name>
+            outputText
+        </name>
+        <tag-class>
+            renderkits.taglib.svg.OutputTextTag
+        </tag-class>
+        <body-content>
+            JSP
+        </body-content>
+        <attribute>
+            <description>
+                <![CDATA[Converter instance registered with this component.]]>
+            </description>
+            <name>
+                converter
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    javax.faces.convert.Converter
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[The component identifier for this component.  This value must be
+                unique within the closest parent component that is a naming
+                container.]]>
+            </description>
+            <name>
+                id
+            </name>
+            <required>
+                false
+            </required>
+            <rtexprvalue>
+                true
+            </rtexprvalue>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Flag indicating whether or not this component should be rendered
+                (during Render Response Phase), or processed on any subsequent
+                form submit.  The default value for this property is true.]]>
+            </description>
+            <name>
+                rendered
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    boolean
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[The current value of this component.]]>
+            </description>
+            <name>
+                value
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.Object
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Flag indicating that characters that are sensitive
+                in XML markup must be escaped.  This flag
+                is set to "true" by default.]]>
+            </description>
+            <name>
+                escape
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    boolean
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[CSS style(s) to be applied when this component is rendered.]]>
+            </description>
+            <name>
+                style
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Space-separated list of CSS style class(es) to be applied when
+                this element is rendered.  This value must be passed through
+                as the "class" attribute on generated markup.]]>
+            </description>
+            <name>
+                styleClass
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+              <![CDATA[x coordinate for lower left corner of text string.]]>
+            </description>
+            <name>
+                x
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+              <![CDATA[y coordinate for lower left corner of text string.]]>
+            </description>
+            <name>
+               y 
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+              <![CDATA[Shifts along the x axis for characters in the <text> 
+                element that includes this attribute.]]>
+            </description>
+            <name>
+               dx 
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+              <![CDATA[Shifts along the y axis for characters in the <text>
+                element that includes this attribute.]]>
+            </description>
+            <name>
+               dy
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+              <![CDATA[Defines how to align the text in relation to the (x,y) coordinate.]]>
+            </description>
+            <name>
+               textAnchor 
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+              <![CDATA[Rotation about the current text position. Can be used 
+                instead of the transform=rotate() attribute to rotate text.]]>
+            </description>
+            <name>
+              rotate 
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+              <![CDATA[Author's computation of the length of the text string. 
+                Used to calculate adjustments when exact positioning is necessary.]]>
+            </description>
+            <name>
+                textLength 
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+              <![CDATA[This attribute has two options - "spacing" and "spacingAndGlyphs".
+                 The former (spacing) will adjust the spacing between glyphs but will not 
+                 stretch or squeeze the glyphs themselves. spacingAndGlyphs 
+                 (as the name states) will adjust both spacing between glyphs and glyph size.]]>
+            </description>
+            <name>
+                lengthAdjust
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                The ValueExpression linking this component to a property in a backing bean
+            </description>
+            <name>
+                binding
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    javax.faces.component.UIComponent
+                </type>
+            </deferred-value>
+        </attribute>
+    </tag>
+    <tag>
+        <name>
+            rectangle 
+        </name>
+        <tag-class>
+            renderkits.taglib.svg.RectangleTag
+        </tag-class>
+        <body-content>
+            JSP
+        </body-content>
+        <attribute>
+            <description>
+                <![CDATA[The component identifier for this component.  This value must
+                be unique within the closest parent component that is a naming
+                container.]]>
+            </description>
+            <name>
+                id
+            </name>
+            <required>
+                false
+            </required>
+            <rtexprvalue>
+                false
+            </rtexprvalue>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Javascript code executed when a pointer button is
+                clicked over this element.]]>
+            </description>
+            <name>
+                onclick
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Flag indicating whether or not this component should be rendered
+                (during Render Response Phase), or processed on any subsequent
+                form submit.  The default value for this property is true.]]>
+            </description>
+            <name>
+                rendered
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    boolean
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+              <![CDATA[x coordinate for upper left corner of rectangle.]]>
+            </description>
+            <name>
+                x
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+              <![CDATA[y coordinate for upper left corner of rectangle.]]>
+            </description>
+            <name>
+                y 
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+              <![CDATA[The height of the rectangle.]]>
+            </description>
+            <name>
+                height 
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+              <![CDATA[The width of the rectangle.]]>
+            </description>
+            <name>
+                width 
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+              <![CDATA[Used to produce rounded rectangle edge.]]>
+            </description>
+            <name>
+                rx
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+              <![CDATA[Used to produce rounded rectangle edge.]]>
+            </description>
+            <name>
+                ry
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Style(s) to be applied when this component is rendered.]]>
+            </description>
+            <name>
+                style
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+    </tag>
+    <tag>
+        <name>
+            line 
+        </name>
+        <tag-class>
+            renderkits.taglib.svg.LineTag
+        </tag-class>
+        <body-content>
+            JSP
+        </body-content>
+        <attribute>
+            <description>
+                <![CDATA[The component identifier for this component.  This value must
+                be unique within the closest parent component that is a naming
+                container.]]>
+            </description>
+            <name>
+                id
+            </name>
+            <required>
+                false
+            </required>
+            <rtexprvalue>
+                false
+            </rtexprvalue>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Flag indicating whether or not this component should be rendered
+                (during Render Response Phase), or processed on any subsequent
+                form submit.  The default value for this property is true.]]>
+            </description>
+            <name>
+                rendered
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    boolean
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+              <![CDATA[Starting x coordinate for line.]]>
+            </description>
+            <name>
+                x1
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+              <![CDATA[Ending x coordinate for line.]]>
+            </description>
+            <name>
+                x2
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+              <![CDATA[Starting y coordinate for line.]]>
+            </description>
+            <name>
+                y1
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+              <![CDATA[Ending y coordinate for line.]]>
+            </description>
+            <name>
+                y2
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Style(s) to be applied when this component is rendered.]]>
+            </description>
+            <name>
+                style
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+    </tag>
+</taglib>
diff --git a/jsf-demo/archive/renderkits/web/WEB-INF/tlds/xul.tld b/jsf-demo/archive/renderkits/web/WEB-INF/tlds/xul.tld
new file mode 100644
index 0000000..34b7b5a
--- /dev/null
+++ b/jsf-demo/archive/renderkits/web/WEB-INF/tlds/xul.tld
@@ -0,0 +1,1920 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<taglib xsi:schemaLocation="http://java.sun.com/xml/ns/javaee web-jsptaglibrary_2_1.xsd"
+xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.1">
+                                                                                       
+<!-- ============== Tag Library Description Elements ============= -->
+                                                                                       
+    <description>
+        This tag library contains JavaServer Faces component tags for all
+        UIComponent + XUL RenderKit Renderer combinations defined in the
+        JavaServer Faces Specification.
+    </description>
+    <tlib-version>
+        1.2
+    </tlib-version>
+    <short-name>
+        x 
+    </short-name>
+    <uri>
+        http://java.sun.com/jsf/xul
+    </uri>
+
+    <tag>
+        <description>
+            <![CDATA[<p>Renders an XUL "input" element.</p>
+                                                                                       
+            <p>Decode Behavior</p>
+                                                                                       
+            <ul>
+            <p>Obtain the <code>Map</code> from the "requestParameterMap"
+            property of the <code>ExternalContext</code>.  If the value in the
+            <code>Map</code> for the value of the "clientId" property of the
+            component is <code>null</code>, create a String by concatenating
+            the value of the "clientId" property of the component with the
+            String ".x" (without the quotes).  Create another String in the
+            same manner, but concatenate ".y" (without the quotes).  If
+            <code>null</code> is the value in the <code>Map</code> for both
+            Strings, return from <code>decode()</code>.  If the value in the
+            <code>Map</code> for the value of the "clientId" property of the
+            component is not <code>null</code>, get the value of the "type"
+            attribute, and convert it to lower case.  If the result is equal
+            to the String "reset" (without the quotes), return from
+            <code>decode()</code>.  Otherwise, create a
+            <code>javax.faces.event.ActionEvent</code> around the component,
+            and pass it to the <code>queueEvent()</code> method of the
+            component, which must be an instance of
+            <code>UICommand</code>.</p>
+            </ul>
+
+            <p>Encode Behavior</p>
+                                                                                       
+            <ul>
+                                                                                       
+            <p>Render the clientId of the component as the value of the
+            "name" attribute.  Render the current value of the component as
+            the value of the "value" attribute. If "image" attribute is specified
+            render it as the value of the "src" attribute after passing it
+            to the <code>getResourceURL()</code> method of the <code>ViewHandler</code> for this application, 
+            and passing the result through the
+            <code>encodeResourceURL()</code> method of the
+            <code>ExternalContext</code>.If the "styleClass" attribute
+            is specified, render its value as the value of the "class"
+            attribute.</p>
+                                                                                       
+            </ul>]]>
+        </description>
+
+        <name>
+            commandButton
+        </name>
+        <tag-class>
+            renderkits.taglib.xul.CommandButtonTag
+        </tag-class>
+        <body-content>
+            JSP
+        </body-content>
+
+        <attribute>
+            <description>
+                <![CDATA[MethodBinding representing the application action to invoke when
+                this component is activated by the user.  The expression must
+                evaluate to a public method that takes no parameters, and returns
+                a String (the logical outcome) which is passed to the
+                NavigationHandler for this application.]]>
+            </description>
+            <name>
+                action
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-method>
+                <method-signature>
+                    java.lang.String action()
+                </method-signature>
+            </deferred-method>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[MethodBinding representing an action listener method that 
+                will be notified when this component is activated by the user.  The
+                expression must evaluate to a public method that takes an
+                ActionEvent parameter, with a return type of void.]]>
+            </description>
+            <name>
+                actionListener
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-method>
+                <method-signature>
+                    void actionListener(javax.faces.event.ActionEvent)
+                </method-signature>
+            </deferred-method>
+        </attribute>
+        <attribute>
+            <description>
+                The ValueExpression linking this component to a property in a 
+                backing bean
+            </description>
+            <name>
+                binding
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    javax.faces.component.UIComponent
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[The component identifier for this component.  This value must
+                be unique within the closest parent component that is a naming
+                container.]]>
+            </description>
+            <name>
+                id
+            </name>
+            <required>
+                false
+            </required>
+            <rtexprvalue>
+                false
+            </rtexprvalue>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Flag indicating that, if this component is activated by 
+                the user, notifications should be delivered to interested listeners 
+                and actions immediately (that is, during Apply Request Values phase) 
+                rather than waiting until Invoke Application phase.]]>
+            </description>
+            <name>
+                immediate
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    boolean
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[A localized user presentable name for this component.]]>
+            </description>
+            <name>
+                label
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Javascript code executed when a pointer button is
+                clicked over this element.]]>
+            </description>
+            <name>
+                onclick
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Javascript code executed when a pointer button is
+                clicked over this element.]]>
+            </description>
+            <name>
+                oncommand
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Javascript code executed when this element receives
+                keyboard focus.]]>
+            </description>
+            <name>
+                onfocusin
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Javascript code executed when this element loses 
+                keyboard focus.]]>
+            </description>
+            <name>
+                onfocusout
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Javascript code executed when a pointer button is
+                pressed down over this element.]]>
+            </description>
+            <name>
+                onmousedown
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Javascript code executed when the pointing device is 
+                moved while it is over this element.]]>
+            </description>
+            <name>
+                onmousemove
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Javascript code executed when the pointing device is
+                moved onto this element.]]>
+            </description>
+            <name>
+                onmouseover
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Javascript code executed when the pointing device is
+                moved away from this element.]]>
+            </description>
+            <name>
+                onmouseout
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Javascript code executed when a pointer button is
+                released over this element.]]>
+            </description>
+            <name>
+                onmouseup
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Flag indicating whether or not this component should be 
+                rendered (during Render Response Phase), or processed on any 
+                subsequent form submit.  The default value for this property is 
+                true.]]>
+            </description>
+            <name>
+                rendered
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    boolean
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Style(s) to be applied when this component is rendered.]]>    
+            </description>
+            <name>
+                style
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Type of button to create.  Valid values are "submit".]]>
+            </description>
+            <name>
+                type
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[The current value of this component.]]>
+            </description>
+            <name>
+                value
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.Object
+                </type>
+            </deferred-value>
+        </attribute>
+    </tag>
+
+    <tag>
+        <description>
+            <![CDATA[<p>Renders an HTML "form" element.</p>
+                                                                                       
+            <p>Decode Behavior</p>
+                                                                                       
+            <ul>
+                                                                                       
+            <p>Obtain the <code>Map</code> from the "requestParameterMap"
+            property of the <code>ExternalContext</code>.  If the map contains
+            an entry for the "clientId" of this <code>UIForm</code> component,
+            call <code>setSubmitted(true)</code> on the form, otherwise call
+            <code>setSubmitted(false)</code> on the form.</p>
+                                                                                       
+            </ul>
+                                                                                       
+                                                                                       
+                                                                                       
+            <p>Encode Behavior</p>
+                                                                                       
+            <ul>
+                                                                                       
+            <p>The value of the "method" attribute must be "post".  The value
+            of the "action" attribute must be the result of passing the view
+            identifier of the current view to the <code>getActionURL()</code>
+            method of the <code>ViewHandler</code> for this application, then
+            passing that String to the <code>encodeActionURL()</code> method
+            on the <code>ExternalContext</code>.  If the "styleClass"
+            attribute is specified, render its value as the value of the
+            "class" attribute.  Call <code>ViewHandler.writeState()</code>
+            before the the close of the "form" element.  Render all the
+            necessary hidden fields for all commandLink instances in the page
+            just before the close of the "form" element.</p>
+                                                                                       
+            </ul>]]>
+        </description>
+        <name>
+            form
+        </name>
+        <tag-class>
+            renderkits.taglib.xul.FormTag
+        </tag-class>
+        <body-content>
+            JSP
+        </body-content>
+        <attribute>
+            <description>
+                <![CDATA[The component identifier for this component.  This value must
+be
+                unique within the closest parent component that is a naming
+                container.]]>
+            </description>
+            <name>
+                id
+            </name>
+            <required>
+                false
+            </required>
+            <rtexprvalue>
+                false
+            </rtexprvalue>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Flag indicating whether or not this form should prepend its id                to its descendent's id during the clientId generation process.
+                If this flag is not set, the default value is true.]]>
+            </description>
+            <name>
+                prependId
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    boolean
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Flag indicating whether or not this component should be rendered
+                (during Render Response Phase), or processed on any subsequent
+                form submit.  The default value for this property is true.]]>
+            </description>
+            <name>
+                rendered
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    boolean
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[List of content types that a server processing this form
+                will handle correctly]]>
+            </description>
+            <name>
+                accept
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[List of character encodings for input data
+                that are accepted by the server processing
+                this form.]]>
+            </description>
+            <name>
+                acceptcharset
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Content type used to submit the form to the server.  If not
+                specified, the default value is
+                "application/x-www-form-urlencoded".]]>
+            </description>
+            <name>
+                enctype
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Javascript code executed when a pointer button is
+                clicked over this element.]]>
+            </description>
+            <name>
+                onclick
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Javascript code executed when a pointer button is
+                pressed down over this element.]]>
+            </description>
+            <name>
+                onmousedown
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Javascript code executed when a pointer button is
+                moved within this element.]]>
+            </description>
+            <name>
+                onmousemove
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Javascript code executed when a pointer button is
+                moved away from this element.]]>
+            </description>
+            <name>
+                onmouseout
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Javascript code executed when a pointer button is
+                moved onto this element.]]>
+            </description>
+            <name>
+                onmouseover
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Javascript code executed when a pointer button is
+                released over this element.]]>
+            </description>
+            <name>
+                onmouseup
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[CSS style(s) to be applied when this component is rendered.]]>            </description>
+            <name>
+                style
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                The ValueExpression linking this component to a property in a backing bean
+            </description>
+            <name>
+                binding
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    javax.faces.component.UIComponent
+                </type>
+            </deferred-value>
+        </attribute>
+    </tag>
+
+    <tag>
+        <description>
+            <![CDATA[Renders a XUL "label" element.  Render the current value
+            of the component as label text if it is specified. If a "for" attribute is
+            specified, find the component specified by the value of the "for"
+            attribute, and render its client id as the value of the "for" attribute.
+            If "styleClass" attribute is specified, render its value as the value
+            of the "class" attribute.]]>
+        </description>
+        <name>
+            outputLabel
+        </name>
+        <tag-class>
+            renderkits.taglib.xul.OutputLabelTag
+        </tag-class>
+        <body-content>
+            JSP
+        </body-content>
+        <attribute>
+            <description>
+                <![CDATA[Converter instance registered with this component.]]>
+            </description>
+            <name>
+                converter
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    javax.faces.convert.Converter
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[The component identifier for this component.  This value must be
+                unique within the closest parent component that is a naming
+                container.]]>
+            </description>
+            <name>
+                id
+            </name>
+            <required>
+                false
+            </required>
+            <rtexprvalue>
+                true
+            </rtexprvalue>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Flag indicating whether or not this component should be rendered
+                (during Render Response Phase), or processed on any subsequent
+                form submit.  The default value for this property is true.]]>
+            </description>
+            <name>
+                rendered
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    boolean
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[The current value of this component.]]>
+            </description>
+            <name>
+                value
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.Object
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Access key that, when pressed, transfers focus
+                to this element.]]>
+            </description>
+            <name>
+                accesskey
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[CSS style(s) to be applied to the containing "box" 
+                element when this component is rendered.]]>
+            </description>
+            <name>
+                boxStyle
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Space-separated list of CSS style class(es) to be applied to
+                the containing "box" element when this element is rendered.  
+                This value must be passed through as the "class" attribute 
+                on generated markup.]]>
+            </description>
+            <name>
+                boxClass
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Client identifier of the component for which this element
+                is a label.  This attribute is rendered as a XUL "control"
+                attribute.]]>
+            </description>
+            <name>
+                for
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Javascript code executed when a pointer button is
+                clicked over this element.]]>
+            </description>
+            <name>
+                onclick
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Javascript code executed when a pointer button is
+                double clicked over this element.]]>
+            </description>
+            <name>
+                ondblclick
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Javascript code executed when this element receives focus.]]>
+            </description>
+            <name>
+                onfocus
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Javascript code executed when a key is
+                pressed down over this element.]]>
+            </description>
+            <name>
+                onkeydown
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Javascript code executed when a key is
+                pressed and released over this element.]]>
+            </description>
+            <name>
+                onkeypress
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Javascript code executed when a key is
+                released over this element.]]>
+            </description>
+            <name>
+                onkeyup
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Javascript code executed when a pointer button is
+                pressed down over this element.]]>
+            </description>
+            <name>
+                onmousedown
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Javascript code executed when a pointer button is
+                moved within this element.]]>
+            </description>
+            <name>
+                onmousemove
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Javascript code executed when a pointer button is
+                moved away from this element.]]>
+            </description>
+            <name>
+                onmouseout
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Javascript code executed when a pointer button is
+                moved onto this element.]]>
+            </description>
+            <name>
+                onmouseover
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Javascript code executed when a pointer button is
+                released over this element.]]>
+            </description>
+            <name>
+                onmouseup
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Specifies where this label component will be 
+                placed in the containing "box" element.]]>
+            </description>
+            <name>
+                pack
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[CSS style(s) to be applied when this component is rendered.]]>
+            </description>
+            <name>
+                style
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Space-separated list of CSS style class(es) to be applied when
+                this element is rendered.  This value must be passed through
+                as the "class" attribute on generated markup.]]>
+            </description>
+            <name>
+                styleClass
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+    </tag>
+
+    <tag>
+        <description>
+            <![CDATA[Renders a XUL "label" element.  Render the current value
+            of the component as label text if it is specified. If a "for" attribute is
+            specified, find the component specified by the value of the "for"
+            attribute, and render its client id as the value of the "for" attribute.
+            If "styleClass" attribute is specified, render its value as the value
+            of the "class" attribute.]]>
+        </description>
+        <name>
+            outputLabel
+        </name>
+        <tag-class>
+            renderkits.taglib.xul.OutputLabelTag
+        </tag-class>
+        <body-content>
+            JSP
+        </body-content>
+        <attribute>
+            <description>
+                <![CDATA[Converter instance registered with this component.]]>
+            </description>
+            <name>
+                converter
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    javax.faces.convert.Converter
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[The component identifier for this component.  This value must be
+                unique within the closest parent component that is a naming
+                container.]]>
+            </description>
+            <name>
+                id
+            </name>
+            <required>
+                false
+            </required>
+            <rtexprvalue>
+                true
+            </rtexprvalue>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Flag indicating whether or not this component should be rendered
+                (during Render Response Phase), or processed on any subsequent
+                form submit.  The default value for this property is true.]]>
+            </description>
+            <name>
+                rendered
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    boolean
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[The current value of this component.]]>
+            </description>
+            <name>
+                value
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.Object
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Access key that, when pressed, transfers focus
+                to this element.]]>
+            </description>
+            <name>
+                accesskey
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Client identifier of the component for which this element
+                is a label.  This attribute is rendered as a XUL "control"
+                attribute.]]>
+            </description>
+            <name>
+                for
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Space-separated list of CSS style class(es) to be applied when
+                this element is rendered.  This value must be passed through
+                as the "class" attribute on generated markup.]]>
+            </description>
+            <name>
+                styleClass
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+    </tag>
+     <tag>
+        <description>
+            <![CDATA[Renders a XUL "description" element.  If the
+            "styleClass" attribute is present, render its value as the value
+            of the "class" attribute.  If the "style" attribute is present,
+            pass it thru.  If the "escape" attribute is not present, or it is
+            present and its value is "true" all angle brackets should be
+            converted to the ampersand xx semicolon syntax when rendering the
+            value of the "value" attribute as the value of the component.  If
+            the "escape" attribute is present and is "false" the value of the
+            component should be rendered as text without escaping.]]>
+        </description>
+        <name>
+            outputText
+        </name>
+        <tag-class>
+            renderkits.taglib.xul.OutputTextTag
+        </tag-class>
+        <body-content>
+            JSP
+        </body-content>
+        <attribute>
+            <description>
+                <![CDATA[Converter instance registered with this component.]]>
+            </description>
+            <name>
+                converter
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    javax.faces.convert.Converter
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[The component identifier for this component.  This value must be
+                unique within the closest parent component that is a naming
+                container.]]>
+            </description>
+            <name>
+                id
+            </name>
+            <required>
+                false
+            </required>
+            <rtexprvalue>
+                true
+            </rtexprvalue>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Flag indicating whether or not this component should be rendered
+                (during Render Response Phase), or processed on any subsequent
+                form submit.  The default value for this property is true.]]>
+            </description>
+            <name>
+                rendered
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    boolean
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[The current value of this component.]]>
+            </description>
+            <name>
+                value
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.Object
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Flag indicating that characters that are sensitive
+                in HTML and XML markup must be escaped.  This flag
+                is set to "true" by default.]]>
+            </description>
+            <name>
+                escape
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    boolean
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[CSS style(s) to be applied when this component is rendered.]]>
+            </description>
+            <name>
+                style
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Space-separated list of CSS style class(es) to be applied when
+                this element is rendered.  This value must be passed through
+                as the "class" attribute on generated markup.]]>
+            </description>
+            <name>
+                styleClass
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                The ValueExpression linking this component to a property in a backing bean
+            </description>
+            <name>
+                binding
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    javax.faces.component.UIComponent
+                </type>
+            </deferred-value>
+        </attribute>
+    </tag>
+    <tag>
+        <name>
+            panelGrid 
+        </name>
+        <description>
+            <![CDATA[Renders a XUL "grid" element.]]>
+        </description>
+        <tag-class>
+            renderkits.taglib.xul.PanelGridTag
+        </tag-class>
+        <body-content>
+            JSP
+        </body-content>
+        <attribute>
+            <description>
+                <![CDATA[The component identifier for this component.  This value must be
+                unique within the closest parent component that is a naming
+                container.]]>
+            </description>
+            <name>
+                id
+            </name>
+            <required>
+                false
+            </required>
+            <rtexprvalue>
+                true
+            </rtexprvalue>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Flag indicating whether or not this component should be rendered
+                (during Render Response Phase), or processed on any subsequent
+                form submit.  The default value for this property is true.]]>
+            </description>
+            <name>
+                rendered
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    boolean
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Name or code of the background color for this table.]]>
+            </description>
+            <name>
+                bgcolor
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Width (in pixels) of the border to be drawn
+                around this table.]]>
+            </description>
+            <name>
+                border
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    int
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Comma-delimited list of CSS style classes that will be applied
+                to the columns of this table.  A space separated list of
+                classes may also be specified for any individual column.  If
+                the number of elements in this list is less than the number of
+                columns specified in the "columns" attribute, no "class"
+                attribute is output for each column greater than the number of
+                elements in the list.  If the number of elements in the list
+                is greater than the number of columns specified in the
+                "columns" attribute, the elements at the posisiton in the list
+                after the value of the "columns" attribute are ignored.]]>
+            </description>
+            <name>
+                columnClasses
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[The number of columns to render before
+                starting a new row.]]>
+            </description>
+            <name>
+                columns
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    int
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Javascript code executed when a pointer button is
+                clicked over this element.]]>
+            </description>
+            <name>
+                onclick
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Javascript code executed when a pointer button is
+                double clicked over this element.]]>
+            </description>
+            <name>
+                ondblclick
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Javascript code executed when a key is
+                pressed down over this element.]]>
+            </description>
+            <name>
+                onkeydown
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Javascript code executed when a key is
+                pressed and released over this element.]]>
+            </description>
+            <name>
+                onkeypress
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Javascript code executed when a key is
+                released over this element.]]>
+            </description>
+            <name>
+                onkeyup
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Javascript code executed when a pointer button is
+                pressed down over this element.]]>
+            </description>
+            <name>
+                onmousedown
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Javascript code executed when a pointer button is
+                moved within this element.]]>
+            </description>
+            <name>
+                onmousemove
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Javascript code executed when a pointer button is
+                moved away from this element.]]>
+            </description>
+            <name>
+                onmouseout
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Javascript code executed when a pointer button is
+                moved onto this element.]]>
+            </description>
+            <name>
+                onmouseover
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Javascript code executed when a pointer button is
+                released over this element.]]>
+            </description>
+            <name>
+                onmouseup
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Comma-delimited list of CSS style classes that will be applied
+                to the rows of this table.  A space separated list of classes
+                may also be specified for any individual row.  Thes styles are
+                applied, in turn, to each row in the table.  For example, if
+                the list has two elements, the first style class in the list
+                is applied to the first row, the second to the second row, the
+                first to the third row, the second to the fourth row, etc.  In
+                other words, we keep iterating through the list until we reach
+                the end, and then we start at the beginning again.]]>
+            </description>
+            <name>
+                rowClasses
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[CSS style(s) to be applied when this component is rendered.]]>
+            </description>
+            <name>
+                style
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Space-separated list of CSS style class(es) to be applied when
+                this element is rendered.  This value must be passed through
+                as the "class" attribute on generated markup.]]>
+            </description>
+            <name>
+                styleClass
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                The ValueExpression linking this component to a property in a backing bean
+            </description>
+            <name>
+                binding
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    javax.faces.component.UIComponent
+                </type>
+            </deferred-value>
+        </attribute>
+    </tag>
+    <tag>
+        <description>
+            <![CDATA[Renders a XUL groupbox element.]]>
+        </description>
+        <name>
+            panelGroup
+        </name>
+        <tag-class>
+            renderkits.taglib.xul.PanelGroupTag
+        </tag-class>
+        <body-content>
+            JSP
+        </body-content>
+        <attribute>
+            <description>
+                <![CDATA[The component identifier for this component.  This value must be
+                unique within the closest parent component that is a naming
+                container.]]>
+            </description>
+            <name>
+                id
+            </name>
+            <required>
+                false
+            </required>
+            <rtexprvalue>
+                true
+            </rtexprvalue>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Flag indicating whether or not this component should be rendered
+                (during Render Response Phase), or processed on any subsequent
+                form submit.  The default value for this property is true.]]>
+            </description>
+            <name>
+                rendered
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    boolean
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[The XUL caption element label for this groupbox element.]]>
+            </description>
+            <name>
+                captionLabel
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Space-separated list of CSS style class(es) to be applied when
+                the XUL caption element is rendered.  This value must be passed through
+                as the "class" property on generated markup.]]>
+            </description>
+            <name>
+                captionClass
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[CSS style(s) to be applied when this component is rendered.]]>
+            </description>
+            <name>
+                style
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Space-separated list of CSS style class(es) to be applied when
+                this element is rendered.  This value must be passed through
+                as the "class" property on generated markup.]]>
+            </description>
+            <name>
+                styleClass
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                The ValueExpression linking this component to a property in a backing bean
+            </description>
+            <name>
+                binding
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    javax.faces.component.UIComponent
+                </type>
+            </deferred-value>
+        </attribute>
+    </tag>
+</taglib>
diff --git a/jsf-demo/archive/renderkits/web/WEB-INF/web.xml b/jsf-demo/archive/renderkits/web/WEB-INF/web.xml
new file mode 100644
index 0000000..38bfab3
--- /dev/null
+++ b/jsf-demo/archive/renderkits/web/WEB-INF/web.xml
@@ -0,0 +1,117 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<web-app version="2.5"
+         xmlns="http://java.sun.com/xml/ns/javaee"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" >
+
+    <display-name>JavaServer Faces Multiple RenderKit Sample  Application</display-name>
+    <description>
+        JavaServer Faces Multiple RenderKit Sample Application
+    </description>
+
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>server</param-value>
+    </context-param>
+
+    <context-param>
+        <description>
+            Set this flag to true if you want the JavaServer Faces
+            Reference Implementation to validate the XML in your
+            faces-config.xml resources against the DTD.  Default
+            value is false.
+        </description>
+        <param-name>com.sun.faces.validateXml</param-name>
+        <param-value>true</param-value>        
+    </context-param>
+
+    <context-param>
+        <description>
+            Set this flag to true if you want the JavaServer Faces
+            Reference Implementation to verify that all of the application
+            objects you have configured (components, converters,
+            renderers, and validators) can be successfully created.
+            Default value is false.
+        </description>
+        <param-name>com.sun.faces.verifyObjects</param-name>
+        <param-value>true</param-value>        
+    </context-param>
+
+    <!-- Faces Servlet -->
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup> 1 </load-on-startup>
+    </servlet>
+
+
+    <!-- Faces Servlet Mapping -->
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/render/*</url-pattern>
+    </servlet-mapping>
+
+    <security-constraint>
+	 <!-- This security constraint illustrates how JSP pages 
+             with JavaServer Faces components can be protected from
+             being accessed without going through the Faces Servlet.
+             The security constraint ensures that the Faces Servlet will
+             be used or the pages will not be processed. -->
+	<display-name>Restrict access to JSP pages</display-name>
+	<web-resource-collection>
+            <web-resource-name>
+		Restrict access to JSP pages
+            </web-resource-name>
+	    <url-pattern>/greeting.jsp</url-pattern>
+	    <url-pattern>/response.jsp</url-pattern>
+	</web-resource-collection>
+	<auth-constraint>
+	    <description>
+		With no roles defined, no access granted
+	    </description>
+	</auth-constraint>
+    </security-constraint>
+
+</web-app>
diff --git a/jsf-demo/archive/renderkits/web/html.css b/jsf-demo/archive/renderkits/web/html.css
new file mode 100644
index 0000000..81c9559
--- /dev/null
+++ b/jsf-demo/archive/renderkits/web/html.css
@@ -0,0 +1,42 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+.headerClass {font-size:24pt;color:blue;}
+.sectionClass {font-size:20pt;}
diff --git a/jsf-demo/archive/renderkits/web/html.jsp b/jsf-demo/archive/renderkits/web/html.jsp
new file mode 100644
index 0000000..43953ca
--- /dev/null
+++ b/jsf-demo/archive/renderkits/web/html.jsp
@@ -0,0 +1,79 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<%@ page contentType="text/html"%>
+
+<HTML>
+<HEAD>
+<link rel="stylesheet" type="text/css"
+            href='<%= request.getContextPath() + "/html.css" %>'>
+</HEAD>
+<body bgcolor="#c1cdc1">
+
+    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
+    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+
+       <f:view renderKitId="HTML_BASIC" >  
+          <f:loadBundle basename="demo.model.Resources" var="phaseBundle"/>
+          <h:form id="form">
+              <h:outputText styleClass="headerClass" value="Multiple RenderKits Demo" />
+              <h:panelGrid columns="1">
+                 <h:outputText styleClass="sectionClass" value="Background" />
+              </h:panelGrid>
+              <h:panelGrid columns="1">
+                 <h:outputText value="#{phaseBundle.background1}" escape="false" />
+                 <h:graphicImage url="/lifecycle-pages.gif" />
+                 <h:outputText value="#{phaseBundle.background2}" escape="false" />
+              </h:panelGrid>
+              <h:panelGrid columns="1">
+                 <h:outputText styleClass="sectionClass" value="Design Detail" />
+                 <h:outputText value="#{phaseBundle.detail1}" escape="false" />
+                 <h:graphicImage url="/life-demo.gif" />
+                 <h:commandButton type="submit" value="Next" action="success" />
+              </h:panelGrid>
+          </h:form>
+       </f:view>
+
+</body>
+</HTML>
diff --git a/jsf-demo/archive/renderkits/web/index.jsp b/jsf-demo/archive/renderkits/web/index.jsp
new file mode 100644
index 0000000..318b930
--- /dev/null
+++ b/jsf-demo/archive/renderkits/web/index.jsp
@@ -0,0 +1,63 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
+
+<html>
+<head>
+</head>
+<body>
+
+<!--  
+
+This page allows the user to go to the context-path and get redirected
+to the front page of the app.  For example,
+http://localhost:8080/jsf-renderkits/.  Note that we use "*.jsf" as the
+page mapping.  Doing so allows us to just name our pages as "*.jsp",
+refer to them as "*.jsf" and know that they will be properly picked up
+by the container.
+
+-->
+
+<jsp:forward page="render/html.jsp" />
+</body>
+</html>
diff --git a/jsf-demo/archive/renderkits/web/life-demo.gif b/jsf-demo/archive/renderkits/web/life-demo.gif
new file mode 100644
index 0000000..f6b82ee
Binary files /dev/null and b/jsf-demo/archive/renderkits/web/life-demo.gif differ
diff --git a/jsf-demo/archive/renderkits/web/lifecycle-pages.gif b/jsf-demo/archive/renderkits/web/lifecycle-pages.gif
new file mode 100644
index 0000000..3086ad5
Binary files /dev/null and b/jsf-demo/archive/renderkits/web/lifecycle-pages.gif differ
diff --git a/jsf-demo/archive/renderkits/web/svg.jsp b/jsf-demo/archive/renderkits/web/svg.jsp
new file mode 100644
index 0000000..ccf6349
--- /dev/null
+++ b/jsf-demo/archive/renderkits/web/svg.jsp
@@ -0,0 +1,166 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<?xml version="1.0"?>
+
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
+         "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+
+
+
+<%@ page contentType="image/svg+xml"%>
+<%@ taglib uri="http://java.sun.com/jsf/svg" prefix="g" %>
+<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+                                                                                       
+<svg xmlns="http://www.w3.org/2000/svg"
+     xmlns:xlink="http://www.w3.org/1999/xlink">
+    <style type="text/css">
+      rect:hover {fill-opacity:0.3;}
+    </style>
+
+    <f:view renderKitId="SVG" >  
+        <g:form id="form">
+           <g:outputText x="100" y="50" textAnchor="middle" value="JSF Request Processing Lifecycle"
+                         style="stroke:black; stroke-width:0.5; fill:none; font-size:32pt;" />
+
+           <!-- Restore View Graphic -->
+
+           <g:line id="toRestore" x1="25" y1="125" x2="100" y2="125" style="stroke:black; fill:none;" />
+           <g:commandButton id="restore" width="120" height="50" x="100" y="100" type="submit"
+              action="xul-restore" style="stroke:black; fill:#8470ff;" >
+              <g:outputText x="130" y="120" textAnchor="middle" value="Restore" />
+              <g:outputText x="135" y="140" textAnchor="middle" value="View" />
+           </g:commandButton>
+
+           <!-- Apply Request Values Graphic -->
+
+           <g:line id="toApply" x1="220" y1="125" x2="350" y2="125" style="stroke:black; fill:none;" />
+           <g:commandButton id="apply" width="120" height="50" x="350" y="100" type="submit"
+              action="xul-apply" style="stroke:black; fill:#8470ff;" >
+              <g:outputText x="360" y="120" textAnchor="middle" value="Apply Request" />
+              <g:outputText x="385" y="140" textAnchor="middle" value="Values" />
+           </g:commandButton>
+
+           <!-- Process Validation Graphic -->
+
+           <g:line id="toVal" x1="470" y1="125" x2="600" y2="125" style="stroke: black; fill:none;" />
+           <g:commandButton id="validation" width="120" height="50" x="600" y="100" type="submit"
+              action="xul-valid" style="stroke:black; fill:#8470ff;" >
+              <g:outputText x="630" y="120" textAnchor="middle" value="Process" />
+              <g:outputText x="625" y="140" textAnchor="middle" value="Validations" />
+           </g:commandButton>
+
+           <!-- Update Model Values Graphic -->
+
+           <g:line id="toUpdate1" x1="720" y1="125" x2="785" y2="125" style="stroke: black; fill: none;" />
+           <g:line id="toUpdate2" x1="785" y1="125" x2="785" y2="275" style="stroke: black; fill: none;" />
+           <g:line id="toUpdate3" x1="785" y1="275" x2="720" y2="275" style="stroke: black; fill: none;" />
+           <g:commandButton id="update" width="120" height="50" x="600" y="250" type="submit"
+              action="xul-update" style="stroke:black; fill:#8470ff;" >
+              <g:outputText x="610" y="270" textAnchor="middle" value="Update Model" />
+              <g:outputText x="635" y="290" textAnchor="middle" value="Values" />
+           </g:commandButton>
+
+           <!-- Invoke Applications Graphic -->
+
+           <g:line id="toApp" x1="600" y1="275" x2="470" y2="275" style="stroke: black; fill: none;" />
+           <g:commandButton id="invoke" width="120" height="50" x="350" y="250" type="submit"
+              action="xul-invoke" style="stroke:black; fill:#8470ff;" >
+              <g:outputText x="380" y="270" textAnchor="middle" value="Invoke" />
+              <g:outputText x="370" y="290" textAnchor="middle" value="Applications" />
+           </g:commandButton>
+
+           <!-- Render Response Graphic -->
+
+           <g:line id="toRender" x1="350" y1="275" x2="220" y2="275" style="stroke: black; fill: none;" />
+           <g:commandButton id="render" width="120" height="50" x="100" y="250" type="submit"
+              action="xul-render" style="stroke:black; fill:#8470ff;" >
+              <g:outputText x="130" y="270" textAnchor="middle" value="Render" />
+              <g:outputText x="125" y="290" textAnchor="middle" value="Response" />
+           </g:commandButton>
+
+           <g:line id="toResponse" x1="100" y1="275" x2="25" y2="275" style="stroke: black; fill: none;" />
+           <g:line id="toRender1" x1="160" y1="150" x2="160" y2="250" style="stroke: black; fill: none;" />
+           <g:line id="convalError1" x1="660" y1="150" x2="660" y2="200" 
+                   style="stroke:red; fill: none; stroke-dasharray:9,5; visibility:hidden" />
+           <g:line id="convalError2" x1="660" y1="200" x2="170" y2="200" 
+                   style="stroke:red; fill: none; stroke-dasharray:9,5; visibility:hidden" />
+           <g:line id="convalError3" x1="170" y1="200" x2="170" y2="250" 
+                   style="stroke:red; fill: none; stroke-dasharray:9,5; visibility:hidden" />
+
+           <!-- The small "request" symbol -->
+
+           <g:rectangle id="request" x="25" y="120" rx="5" ry="5" width="15" height="10" style="fill: #8470ff;"/>
+
+           <!-- Buttons -->
+
+           <g:rectangle id="controlPanel" x="25" y="340" width="310" height="170" style="stroke:black;fill:#778889;" />
+
+           <g:commandButton id="initial" width="140" height="30" x="35" y="350" rx="5" ry="5" dx="68" dy="12"
+                     style="stroke:black; fill:silver;" value="Initial Request" onclick="initialMove()"/>
+
+           <g:commandButton id="postback" width="140" height="30" x="35" y="390" rx="5" ry="5" dx="70" dy="9"
+                     style="stroke:black; fill:silver;" value="Postback" onclick="postbackMove()"/>
+
+           <g:commandButton id="postbackVal" width="140" height="30" x="185" y="350" rx="5" ry="5" dx="70" dy="9"
+                     style="stroke:black; fill:silver;" value="Validation Error" 
+                     onclick="postbackConValMove()"/>
+
+           <g:commandButton id="postbackUpd" width="140" height="30" x="185" y="390" rx="5" ry="5" dx="70" dy="9"
+                     style="stroke:black; fill:silver;" value="Conversion Error" onclick="postbackConValMove()"/>
+
+           <g:commandButton id="stop" width="140" height="30" x="35" y="430" rx="5" ry="5" dx="68" dy="10"
+                     style="stroke:black; fill:#ff4500;" value="Stop/Resume" onclick="stopMovement()"/>
+
+           <g:commandButton id="reset" width="140" height="30" x="185" y="430" rx="5" ry="5" dx="68" dy="10"
+                     style="stroke:black; fill:#ff4500;" value="Reset Demo" onclick="resetDemo()"/>
+
+           <g:commandButton id="back" width="140" height="30" x="105" y="470" rx="5" ry="5" dx="68" dy="10"
+                     style="stroke:black; fill:silver;" value="Main" type="submit" action="success" />
+
+           <g:rectangle id="messagePanel" x="350" y="340" width="510" height="170" style="stroke:black;fill:#f0e68c; visibility:hidden" />
+           <g:outputText id="msg1" x="370" y="370" value="marker" style="visibility:hidden" />
+           <g:outputText id="msg2" x="380" y="390" value="marker" style="visibility:hidden" />
+           <g:outputText id="msg3" x="390" y="410" value="marker" style="visibility:hidden" />
+       </g:form>
+    </f:view>
+</svg>
diff --git a/jsf-demo/archive/renderkits/web/xul-apply.jsp b/jsf-demo/archive/renderkits/web/xul-apply.jsp
new file mode 100644
index 0000000..37db2aa
--- /dev/null
+++ b/jsf-demo/archive/renderkits/web/xul-apply.jsp
@@ -0,0 +1,80 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<?xml version="1.0"?>
+
+
+
+
+<!DOCTYPE window>
+
+<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
+<?xml-stylesheet href='<%= request.getContextPath() + "/xul.css" %>' type="text/css"?>
+
+<%@ page contentType="application/vnd.mozilla.xul+xml"%>
+<%@ taglib uri="http://java.sun.com/jsf/xul" prefix="x" %>
+<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+
+<f:view renderKitId="XUL">
+   <f:loadBundle basename="demo.model.Resources" var="phaseBundle"/>
+   <x:form id="form">
+      <x:outputLabel boxClass="header" pack="center" styleClass="header" value="#{phaseBundle.applyHeader}"/>
+
+      <x:panelGroup styleClass="groupboxClass" captionLabel="#{phaseBundle.applyCaption}" 
+          captionClass="captionClass" >
+         <x:panelGroup styleClass="groupboxDetailClass">
+            <x:outputText styleClass="info" value="#{phaseBundle.applyDescription1}" escape="false" />
+            <x:outputText styleClass="info" value="#{phaseBundle.applyDescription2}" escape="false" />
+            <x:outputText styleClass="info" value="#{phaseBundle.applyDescription3}" escape="false" />
+            <x:outputText styleClass="info" value="#{phaseBundle.applyDescription4}" escape="false" />
+            <x:outputText styleClass="info" value="#{phaseBundle.applyDescription5}" escape="false" />
+            <x:outputText styleClass="info" value="#{phaseBundle.applyDescription6}" escape="false" />
+         </x:panelGroup>
+      </x:panelGroup>
+
+      <x:panelGrid columns="2">
+         <x:commandButton id="back" value="Back" action="xul-back" type="submit"/>
+         <x:commandButton id="main" value="Main" action="xul-main" type="submit"/>
+      </x:panelGrid>
+      
+   </x:form>
+</f:view>
diff --git a/jsf-demo/archive/renderkits/web/xul-invoke.jsp b/jsf-demo/archive/renderkits/web/xul-invoke.jsp
new file mode 100644
index 0000000..1fe8a00
--- /dev/null
+++ b/jsf-demo/archive/renderkits/web/xul-invoke.jsp
@@ -0,0 +1,77 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<?xml version="1.0"?>
+
+
+
+
+<!DOCTYPE window>
+
+<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
+<?xml-stylesheet href='<%= request.getContextPath() + "/xul.css" %>' type="text/css"?>
+
+<%@ page contentType="application/vnd.mozilla.xul+xml"%>
+<%@ taglib uri="http://java.sun.com/jsf/xul" prefix="x" %>
+<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+
+<f:view renderKitId="XUL">
+   <f:loadBundle basename="demo.model.Resources" var="phaseBundle"/>
+   <x:form id="form">
+      <x:outputLabel boxClass="header" pack="center" styleClass="header" value="#{phaseBundle.invokeHeader}"/>
+
+      <x:panelGroup styleClass="groupboxClass" captionLabel="#{phaseBundle.invokeCaption}" 
+          captionClass="captionClass" >
+         <x:panelGroup styleClass="groupboxDetailClass">
+            <x:outputText styleClass="info" value="#{phaseBundle.invokeDescription1}" escape="false" />
+            <x:outputText styleClass="info" value="#{phaseBundle.invokeDescription2}" escape="false" />
+            <x:outputText styleClass="info" value="#{phaseBundle.invokeDescription3}" escape="false" />
+         </x:panelGroup>
+      </x:panelGroup>
+
+      <x:panelGrid columns="2">
+         <x:commandButton id="back" value="Back" action="xul-back" type="submit"/>
+         <x:commandButton id="main" value="Main" action="xul-main" type="submit"/>
+      </x:panelGrid>
+      
+   </x:form>
+</f:view>
diff --git a/jsf-demo/archive/renderkits/web/xul-render.jsp b/jsf-demo/archive/renderkits/web/xul-render.jsp
new file mode 100644
index 0000000..4f123be
--- /dev/null
+++ b/jsf-demo/archive/renderkits/web/xul-render.jsp
@@ -0,0 +1,79 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<?xml version="1.0"?>
+
+
+
+
+<!DOCTYPE window>
+
+<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
+<?xml-stylesheet href='<%= request.getContextPath() + "/xul.css" %>' type="text/css"?>
+
+<%@ page contentType="application/vnd.mozilla.xul+xml"%>
+<%@ taglib uri="http://java.sun.com/jsf/xul" prefix="x" %>
+<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+
+<f:view renderKitId="XUL">
+   <f:loadBundle basename="demo.model.Resources" var="phaseBundle"/>
+   <x:form id="form">
+      <x:outputLabel boxClass="header" pack="center" styleClass="header" value="#{phaseBundle.renderHeader}"/>
+
+      <x:panelGroup styleClass="groupboxClass" captionLabel="#{phaseBundle.renderCaption}" 
+          captionClass="captionClass" >
+         <x:panelGroup styleClass="groupboxDetailClass">
+            <x:outputText styleClass="info" value="#{phaseBundle.renderDescription1}" escape="false" />
+            <x:outputText styleClass="info" value="#{phaseBundle.renderDescription2}" escape="false" />
+            <x:outputText styleClass="info" value="#{phaseBundle.renderDescription3}" escape="false" />
+            <x:outputText styleClass="info" value="#{phaseBundle.renderDescription4}" escape="false" />
+            <x:outputText styleClass="info" value="#{phaseBundle.renderDescription5}" escape="false" />
+         </x:panelGroup>
+      </x:panelGroup>
+
+      <x:panelGrid columns="2">
+         <x:commandButton id="back" value="Back" action="xul-back" type="submit"/>
+         <x:commandButton id="main" value="Main" action="xul-main" type="submit"/>
+      </x:panelGrid>
+      
+   </x:form>
+</f:view>
diff --git a/jsf-demo/archive/renderkits/web/xul-restore.jsp b/jsf-demo/archive/renderkits/web/xul-restore.jsp
new file mode 100644
index 0000000..a3ad8cd
--- /dev/null
+++ b/jsf-demo/archive/renderkits/web/xul-restore.jsp
@@ -0,0 +1,81 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<?xml version="1.0"?>
+
+
+
+
+<!DOCTYPE window>
+
+<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
+<?xml-stylesheet href='<%= request.getContextPath() + "/xul.css" %>' type="text/css"?>
+
+<%@ page contentType="application/vnd.mozilla.xul+xml"%>
+<%@ taglib uri="http://java.sun.com/jsf/xul" prefix="x" %>
+<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+
+<f:view renderKitId="XUL">
+   <f:loadBundle basename="demo.model.Resources" var="phaseBundle"/>
+   <x:form id="form">
+      <x:outputLabel boxClass="header" pack="center" styleClass="header" value="#{phaseBundle.restoreHeader}"/>
+
+      <x:panelGroup styleClass="groupboxClass" captionLabel="#{phaseBundle.restoreCaption}" 
+          captionClass="captionClass" >
+         <x:panelGroup styleClass="groupboxDetailClass" >
+            <x:outputText styleClass="info" value="#{phaseBundle.restoreDescription1}" escape="false" />
+            <x:outputText styleClass="info" value="#{phaseBundle.restoreDescription2}" escape="false" />
+            <x:outputText styleClass="info" value="#{phaseBundle.restoreDescription3}" escape="false" />
+            <x:outputText styleClass="info" value="#{phaseBundle.restoreDescription4}" escape="false" />
+            <x:outputText styleClass="info" value="#{phaseBundle.restoreDescription5}" escape="false" />
+            <x:outputText styleClass="info" value="#{phaseBundle.restoreDescription6}" escape="false" />
+            <x:outputText styleClass="info" value="#{phaseBundle.restoreDescription7}" escape="false" />
+         </x:panelGroup>
+      </x:panelGroup>
+
+      <x:panelGrid columns="2">
+         <x:commandButton id="back" value="Back" action="xul-back" type="submit"/>
+         <x:commandButton id="main" value="Main" action="xul-main" type="submit"/>
+      </x:panelGrid>
+      
+   </x:form>
+</f:view>
diff --git a/jsf-demo/archive/renderkits/web/xul-update.jsp b/jsf-demo/archive/renderkits/web/xul-update.jsp
new file mode 100644
index 0000000..c8d77f1
--- /dev/null
+++ b/jsf-demo/archive/renderkits/web/xul-update.jsp
@@ -0,0 +1,78 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<?xml version="1.0"?>
+
+
+
+
+<!DOCTYPE window>
+
+<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
+<?xml-stylesheet href='<%= request.getContextPath() + "/xul.css" %>' type="text/css"?>
+
+<%@ page contentType="application/vnd.mozilla.xul+xml"%>
+<%@ taglib uri="http://java.sun.com/jsf/xul" prefix="x" %>
+<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+
+<f:view renderKitId="XUL">
+   <f:loadBundle basename="demo.model.Resources" var="phaseBundle"/>
+   <x:form id="form">
+      <x:outputLabel boxClass="header" pack="center" styleClass="header" value="#{phaseBundle.updateHeader}"/>
+
+      <x:panelGroup styleClass="groupboxClass" captionLabel="#{phaseBundle.updateCaption}" 
+          captionClass="captionClass" >
+         <x:panelGroup styleClass="groupboxDetailClass">
+            <x:outputText styleClass="info" value="#{phaseBundle.updateDescription1}" escape="false" />
+            <x:outputText styleClass="info" value="#{phaseBundle.updateDescription2}" escape="false" />
+            <x:outputText styleClass="info" value="#{phaseBundle.updateDescription3}" escape="false" />
+            <x:outputText styleClass="info" value="#{phaseBundle.updateDescription4}" escape="false" />
+         </x:panelGroup>
+      </x:panelGroup>
+
+      <x:panelGrid columns="2">
+         <x:commandButton id="back" value="Back" action="xul-back" type="submit"/>
+         <x:commandButton id="main" value="Main" action="xul-main" type="submit"/>
+      </x:panelGrid>
+      
+   </x:form>
+</f:view>
diff --git a/jsf-demo/archive/renderkits/web/xul-valid.jsp b/jsf-demo/archive/renderkits/web/xul-valid.jsp
new file mode 100644
index 0000000..a3b8b3b
--- /dev/null
+++ b/jsf-demo/archive/renderkits/web/xul-valid.jsp
@@ -0,0 +1,78 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<?xml version="1.0"?>
+
+
+
+
+<!DOCTYPE window>
+
+<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
+<?xml-stylesheet href='<%= request.getContextPath() + "/xul.css" %>' type="text/css"?>
+
+<%@ page contentType="application/vnd.mozilla.xul+xml"%>
+<%@ taglib uri="http://java.sun.com/jsf/xul" prefix="x" %>
+<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+
+<f:view renderKitId="XUL">
+   <f:loadBundle basename="demo.model.Resources" var="phaseBundle"/>
+   <x:form id="form">
+      <x:outputLabel boxClass="header" pack="center" styleClass="header" value="#{phaseBundle.validHeader}"/>
+
+      <x:panelGroup styleClass="groupboxClass" captionLabel="#{phaseBundle.validCaption}" 
+          captionClass="captionClass" >
+         <x:panelGroup styleClass="groupboxDetailClass">
+            <x:outputText styleClass="info" value="#{phaseBundle.validDescription1}" escape="false" />
+            <x:outputText styleClass="info" value="#{phaseBundle.validDescription2}" escape="false" />
+            <x:outputText styleClass="info" value="#{phaseBundle.validDescription3}" escape="false" />
+            <x:outputText styleClass="info" value="#{phaseBundle.validDescription4}" escape="false" />
+         </x:panelGroup>
+      </x:panelGroup>
+
+      <x:panelGrid columns="2">
+         <x:commandButton id="back" value="Back" action="xul-back" type="submit"/>
+         <x:commandButton id="main" value="Main" action="xul-main" type="submit"/>
+      </x:panelGrid>
+      
+   </x:form>
+</f:view>
diff --git a/jsf-demo/archive/renderkits/web/xul.css b/jsf-demo/archive/renderkits/web/xul.css
new file mode 100644
index 0000000..44b2632
--- /dev/null
+++ b/jsf-demo/archive/renderkits/web/xul.css
@@ -0,0 +1,48 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+box.header { border:2px solid red; }
+label.header {font-size:24pt;color:blue;text-align:center;}
+
+.groupboxClass {border:2px solid blue}
+.groupboxDetailClass {height:350px; overflow:auto;}
+.captionClass {font-size:14pt;}
+.info {font-size:12pt;}
+
diff --git a/jsf-demo/archive/standard/build.xml b/jsf-demo/archive/standard/build.xml
new file mode 100644
index 0000000..90235a6
--- /dev/null
+++ b/jsf-demo/archive/standard/build.xml
@@ -0,0 +1,132 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project name="standard" default="build" basedir=".">
+
+    <property file="${user.home}/build.properties"/>
+    <property file="../../../build.properties"/>
+    <import file="${jsf.build.home}/common/ant/common.xml"/>
+
+    <!-- Configure the context path for this application -->
+    <property name="context.path" value="/jsf-standard"/>
+    <property name="example" value="jsf-standard"/>
+    <property name="build" value="${basedir}/build"/>
+
+    <path id="classpath">
+        <pathelement location="${javax.faces-api.jar}"/>
+        <pathelement location="${javax.faces.jar}"/>
+        <pathelement location="${build}/${example}/WEB-INF/classes"/>
+        <path refid="compile.classpath"/>
+    </path>
+
+    <target name="init" depends="check.changes">
+        <tstamp/>
+    </target>
+
+    <target name="check.changes">
+        <uptodate property="skip.build"
+                  targetfile="${build}/last-build">
+            <srcfiles dir="${basedir}">
+                <include name="src/**/*.*"/>
+                <include name="conf/**/*.*"/>
+                <include name="web/**/*.*"/>
+            </srcfiles>
+        </uptodate>
+    </target>
+
+    <target name="clean">
+        <delete dir="${build}"/>
+        <delete dir="${context.path}"/>
+    </target>
+
+
+    <target name="prepare" depends="init"
+            description="Create build directories.">
+        <mkdir dir="${build}/${example}"/>
+        <mkdir dir="${build}/${example}/WEB-INF"/>
+        <mkdir dir="${build}/${example}/WEB-INF/classes"/>
+        <mkdir dir="${build}/${example}/WEB-INF/lib"/>
+    </target>
+
+
+    <target name="build" unless="skip.build" depends="prepare"
+            description="Compile Java files and copy static files.">
+        <touch file="${build}/last-build"/>
+         <jsf.javac srcdir="src"
+                   destdir="${build}/${example}/WEB-INF/classes">
+            <classpath>
+                <path refid="classpath"/>
+            </classpath>
+        </jsf.javac>
+        <copy todir="${build}/${example}/WEB-INF">
+            <fileset dir="web/WEB-INF">
+                <include name="*.xml"/>
+            </fileset>
+        </copy>
+
+        <copy todir="${build}/${example}/">
+            <fileset dir="web">
+                <include name="*.html"/>
+                <include name="*.gif"/>
+                <include name="*.jpg"/>
+                <include name="*.jsp"/>
+                <include name="*.css"/>
+                <include name="*.xml"/>
+            </fileset>
+        </copy>
+        <copy todir="${build}/${example}/WEB-INF/classes">
+            <fileset dir="src">
+                <include name="**/*properties"/>
+            </fileset>
+        </copy>
+
+        <jsf.war basedir="${build}"
+                 archive-name="${example}"
+                 webxml="${build}/${example}/WEB-INF/web.xml">
+            <archive-elements>
+                <zipfileset dir="${build}/${example}"/>
+            </archive-elements>
+        </jsf.war>
+    </target>
+
+</project>
+
diff --git a/jsf-demo/archive/standard/src/standard/CustomerBean.java b/jsf-demo/archive/standard/src/standard/CustomerBean.java
new file mode 100644
index 0000000..2e21f6b
--- /dev/null
+++ b/jsf-demo/archive/standard/src/standard/CustomerBean.java
@@ -0,0 +1,138 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package standard;
+
+
+import java.io.Serializable;
+
+
+/**
+ * <p>JavaBean represented the data for an individual customer.</p>
+ *
+ */
+
+public class CustomerBean implements Serializable {
+
+
+    public CustomerBean() {
+        this(null, null, null, 0.0);
+    }
+
+
+    public CustomerBean(String accountId, String name,
+                        String symbol, double totalSales) {
+        System.out.println("Created CustomerBean");
+        this.accountId = accountId;
+        this.name = name;
+        this.symbol = symbol;
+        this.totalSales = totalSales;
+    }
+
+
+    private String accountId = null;
+
+
+    public String getAccountId() {
+        return (this.accountId);
+    }
+
+
+    public void setAccountId(String accountId) {
+        this.accountId = accountId;
+    }
+
+
+    private String name = null;
+
+
+    public String getName() {
+        return (this.name);
+    }
+
+
+    public void setName(String name) {
+        System.err.println("setName(" + accountId + "," + this.name +
+                           "," + name);
+        this.name = name;
+    }
+
+
+    private String symbol = null;
+
+
+    public String getSymbol() {
+        return (this.symbol);
+    }
+
+
+    public void setSymbol(String symbol) {
+        this.symbol = symbol;
+    }
+
+
+    private double totalSales = 0.0;
+
+
+    public double getTotalSales() {
+        return (this.totalSales);
+    }
+
+
+    public void setTotalSales(double totalSales) {
+        this.totalSales = totalSales;
+    }
+
+
+    public String toString() {
+        StringBuffer sb = new StringBuffer("CustomerBean[accountId=");
+        sb.append(accountId);
+        sb.append(",name=");
+        sb.append(name);
+        sb.append(",symbol=");
+        sb.append(symbol);
+        sb.append(",totalSales=");
+        sb.append(totalSales);
+        sb.append("]");
+        return (sb.toString());
+    }
+
+
+}
diff --git a/jsf-demo/archive/standard/src/standard/DataModelBean.java b/jsf-demo/archive/standard/src/standard/DataModelBean.java
new file mode 100644
index 0000000..26f5fb4
--- /dev/null
+++ b/jsf-demo/archive/standard/src/standard/DataModelBean.java
@@ -0,0 +1,169 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package standard;
+
+
+import javax.faces.component.UISelectOne;
+import javax.faces.model.DataModel;
+import javax.faces.model.ListDataModel;
+import javax.faces.model.SelectItem;
+
+import java.util.ArrayList;
+import java.util.List;
+
+
+/** <p>Backing file class for <code>DataModel.jsp</code>.</p> */
+
+public class DataModelBean {
+
+    // ------------------------------------------------------------ Constructors
+
+
+    /**
+     * <p>Initialize the select component's value so that the first customer
+     * is marked as selected the very first time we execute.</p>
+     */
+    public DataModelBean() {
+
+        // System.err.println("DataModelBean:  precreating select component");
+        accountId = new UISelectOne();
+        accountId.setId("accountId");
+        accountId.setValue("0");
+
+    }
+
+    // -------------------------------------------------------- Bound Components
+
+
+    /** <p>The <code>accountId</code> field for the current row.</p> */
+    private UISelectOne accountId = null;
+
+
+    public UISelectOne getAccountId() {
+        // System.err.println("getAccountId(): returning " + accountId);
+        return accountId;
+    }
+
+
+    public void setAccountId(UISelectOne accountId) {
+        // System.err.println("setAccountId(): setting " + accountId);
+        this.accountId = accountId;
+    }
+
+    // -------------------------------------------------------------- Properties
+
+
+    private List accountIds = null;
+
+
+    /**
+     * <p>Return an array of <code>SelectItem</code>s representing the
+     * account identifiers of all our customers.</p>
+     */
+    public List getAccountIds() {
+        if (accountIds == null) {
+            // System.err.println("getAccountIds(): creating list");
+            getCustomers();
+            accountIds = new ArrayList();
+            int n = list.size();
+            for (int i = 0; i < n; i++) {
+                accountIds.add(new SelectItem
+                      ("" + i,
+                       ((CustomerBean) list.get(i)).getAccountId(),
+                       null));
+            }
+        }
+        // System.err.println("getAccountIds(): returning list");
+        return (accountIds);
+    }
+
+
+    private DataModel customers = null;
+    private List list = null;
+
+
+    /** <p>Return a <code>DataModel</code> containing our customer list.</p> */
+    public DataModel getCustomers() {
+        if (list == null) {
+            // System.err.println("getCustomers(): creating list");
+            list = new ArrayList();
+            list.add(new CustomerBean
+                  ("123456", "Alpha Beta Company", "ABC", 1234.56));
+            list.add(new CustomerBean
+                  ("445566", "General Services, Ltd.", "GS", 33.33));
+            list.add(new CustomerBean
+                  ("654321", "Summa Cum Laude, Inc.", "SCL", 76543.21));
+            list.add(new CustomerBean
+                  ("333333", "Yabba Dabba Doo", "YDD", 333.33));
+            for (int i = 10; i < 20; i++) {
+                list.add(new CustomerBean("8888" + i,
+                                          "Customer " + i,
+                                          "CU" + i,
+                                          ((double) i) * 10.0));
+            }
+        }
+        if (customers == null) {
+            // System.err.println("getCustomers(): creating DataModel");
+            customers = new ListDataModel(list);
+        }
+        // System.err.println("getCustomers(): returning DataModel");
+        return (customers);
+    }
+
+    // --------------------------------------------------------- Action Handlers
+
+
+    /** <p>Select the customer whose account id was specified.</p> */
+    public String select() {
+
+        String value = (String) getAccountId().getValue();
+        // System.err.println("select(" + value + ")");
+        int rowIndex = Integer.parseInt(value);
+        // System.err.println("setting rowIndex to " + rowIndex);
+        getCustomers().setRowIndex(rowIndex);
+        return (null); // Stay on the same page
+
+    }
+
+    // --------------------------------------------------------- Private Methods
+
+
+}
diff --git a/jsf-demo/archive/standard/src/standard/DefaultListener.java b/jsf-demo/archive/standard/src/standard/DefaultListener.java
new file mode 100644
index 0000000..c1070f5
--- /dev/null
+++ b/jsf-demo/archive/standard/src/standard/DefaultListener.java
@@ -0,0 +1,74 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package standard;
+
+import javax.faces.context.FacesContext;
+import javax.faces.el.ValueBinding;
+import javax.faces.event.AbortProcessingException;
+import javax.faces.event.ActionEvent;
+import javax.faces.event.ActionListener;
+
+
+/**
+ * Set a request parameter telling me which UIComponent was actuated
+ *
+ */
+
+public class DefaultListener extends Object implements ActionListener {
+
+    public void processAction(ActionEvent event)
+          throws AbortProcessingException {
+        System.out.println("DefaultListener.processAction");
+        // PENDING(edburns): make sure getComponentId() returns a copy
+        // so we don't leak UIComponent instances.
+        String id = event.getComponent().getId();
+        FacesContext context = FacesContext.getCurrentInstance();
+        ValueBinding vb = context.getApplication().createValueBinding(
+              "#{model.hasComponent}");
+        vb.setValue(context, "true");
+        vb =
+              context.getApplication().createValueBinding(
+                    "#{model.whichComponent}");
+        vb.setValue(context, id);
+    }
+
+
+}
diff --git a/jsf-demo/archive/standard/src/standard/ListBean.java b/jsf-demo/archive/standard/src/standard/ListBean.java
new file mode 100644
index 0000000..857c2c5
--- /dev/null
+++ b/jsf-demo/archive/standard/src/standard/ListBean.java
@@ -0,0 +1,61 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package standard;
+
+import java.util.ArrayList;
+
+/**
+ * <p>JavaBean to represent a list of customer bean.</p>
+ *
+ */
+
+public class ListBean extends ArrayList {
+
+    public ListBean() {
+        System.out.println("Created ListBean");
+        add(new CustomerBean("123456", "Alpha Beta Company", "ABC", 1234.56));
+        add(new CustomerBean("445566", "General Services, Ltd.", "GS", 33.33));
+        add(
+              new CustomerBean("654321", "Summa Cum Laude, Inc.", "SCL",
+                               76543.21));
+        add(new CustomerBean("333333", "Yabba Dabba Doo", "YDD", 333.33));
+    }
+}
diff --git a/jsf-demo/archive/standard/src/standard/LogValueChangedListener.java b/jsf-demo/archive/standard/src/standard/LogValueChangedListener.java
new file mode 100644
index 0000000..b554445
--- /dev/null
+++ b/jsf-demo/archive/standard/src/standard/LogValueChangedListener.java
@@ -0,0 +1,83 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package standard;
+
+
+import javax.faces.context.FacesContext;
+import javax.faces.event.ValueChangeEvent;
+import javax.faces.event.ValueChangeListener;
+
+
+/** <p>Log the occurrence of this event.</p> */
+
+public class LogValueChangedListener implements ValueChangeListener {
+
+    // --------------------------------------------- ValueChangeListener Methods
+
+    /**
+     * <p>Log the event.</p>
+     *
+     * @param event {@link ValueChangeEvent} that is being processed
+     */
+    public void processValueChange(ValueChangeEvent event) {
+
+        FacesContext context = FacesContext.getCurrentInstance();
+        append(context, "ValueChangeEvent(" +
+                        event.getComponent().getClientId(context) + "," +
+                        event.getOldValue() + "," + event.getNewValue() + ")");
+
+    }
+
+
+    private void append(FacesContext context, String value) {
+
+        String message = (String)
+              context.getExternalContext().getRequestMap().get("message");
+        if (message == null) {
+            message = "";
+        }
+        message += "<li>" + value + "</li>";
+        context.getExternalContext().getRequestMap().put("message", message);
+
+    }
+
+
+}
diff --git a/jsf-demo/archive/standard/src/standard/LoginBean.java b/jsf-demo/archive/standard/src/standard/LoginBean.java
new file mode 100644
index 0000000..03a76d4
--- /dev/null
+++ b/jsf-demo/archive/standard/src/standard/LoginBean.java
@@ -0,0 +1,508 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package standard;
+
+import javax.faces.model.SelectItem;
+import javax.faces.model.SelectItemGroup;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Date;
+
+public class LoginBean {
+
+    private static final String defaultOptions[] = {
+          "pinto",
+          "black",
+          "garbanzo",
+          "green",
+          "string",
+          "coffee",
+          "baked"
+    };
+
+    private static final SelectItem options1[] = {
+          new SelectItem("pinto", "pinto", "pinto"),
+          new SelectItem("black", "black", "black"),
+          new SelectItem("garbanzo", "garbanzo", "garbanzo")
+    };
+
+    private static final SelectItem options2[] = {
+          new SelectItem("green", "green", "green"),
+          new SelectItem("string", "string", "string"),
+          new SelectItem("coffee", "coffee", "coffee"),
+          new SelectItem("baked", "baked", "baked")
+    };
+
+    Long[] longOptions = {new Long(1001), new Long(1002), new Long(1003)};
+    Boolean booleanOptions[] = {
+          new Boolean(true), new Boolean(false),
+          new Boolean(false)
+    };
+
+    ArrayList longList = new ArrayList(3);
+    ArrayList booleanList = new ArrayList(3);
+    ArrayList stringList = new ArrayList(3);
+    Long[] currentLongOptions = null;
+    String[] currentStringOptions = null;
+    Boolean currentBooleanOption = null;
+    //  Long currentLongOption = null;
+    long currentLongOption = 1002;
+
+    private double doubleVal;
+    private ArrayList options = null;
+    private ArrayList optionsGroup = null;
+
+    private String currentOption = defaultOptions[4];
+    private Date date = new Date(System.currentTimeMillis());
+    private String currentShipment = "nextMonth";
+    private char charVal = 'e';
+    private int intVal;
+    private float floatVal;
+    private short shortVal;
+    private long longVal = 2000;
+    private byte byteVal;
+    private String stringVal;
+    private Date time;
+
+    private String userName = "joebob";
+    private String password = null;
+    private String address = null;
+    private Boolean validUser = null;
+    private Integer pin = null;
+
+    private SelectItem nextWeek = null;
+    private SelectItem nextMonth = null;
+    private SelectItem nextDay = null;
+
+    SelectItemGroup group1 = null;
+    SelectItemGroup group2 = null;
+
+
+    public LoginBean() {
+        System.out.println("Model Object Created");
+        options = new ArrayList(defaultOptions.length);
+        int i = 0;
+        for (i = 0; i < defaultOptions.length; i++) {
+            options.add(new SelectItem(defaultOptions[i], defaultOptions[i],
+                                       defaultOptions[i]));
+        }
+
+        optionsGroup = new ArrayList(2);
+        group1 = new SelectItemGroup("coffee1", null, true, options1);
+        group2 = new SelectItemGroup("coffee2", null, true, options2);
+        optionsGroup.add(group1);
+        optionsGroup.add(group2);
+
+        currentStringOptions = new String[2];
+        for (i = 0; i < defaultOptions.length; i++) {
+            stringList.add(new SelectItem(defaultOptions[i],
+                                          (defaultOptions[i].toString()),
+                                          "stringOptions"));
+        }
+
+        System.out.println("SETTING CURRENT OPTIONS IN CONSTRUCTOR...");
+
+        currentStringOptions[0] = defaultOptions[3];
+        currentStringOptions[1] = defaultOptions[4];
+
+        for (i = 0; i < longOptions.length; i++) {
+            longList.add(new SelectItem(longOptions[i],
+                                        (longOptions[i].toString()),
+                                        "longOption"));
+        }
+
+        for (i = 0; i < booleanOptions.length; i++) {
+            booleanList.add(new SelectItem(booleanOptions[i],
+                                           ("booleanOption" + i),
+                                           "booleanOption"));
+        }
+        currentLongOptions = new Long[2];
+        currentLongOptions[0] = longOptions[0];
+        currentLongOptions[1] = longOptions[1];
+        //   currentLongOption = longOptions[1];
+        currentBooleanOption = booleanOptions[0];
+
+        System.out.println("Populated options");
+
+    }
+
+
+    public void setUserName(String user_name) {
+        userName = user_name;
+        System.out.println("Set userName " + userName);
+    }
+
+
+    public String getUserName() {
+        System.out.println("get userName " + userName);
+        return userName;
+    }
+
+
+    public void setPin(Integer _pin) {
+        this.pin = _pin;
+        System.out.println("Set pin " + pin);
+    }
+
+
+    public Integer getPin() {
+        System.out.println("get pin " + pin);
+        return pin;
+    }
+
+
+    public void setPassword(String pwd) {
+        password = pwd;
+        System.out.println("set Password " + password);
+    }
+
+
+    public String getPassword() {
+        System.out.println("get Password " + password);
+        return password;
+    }
+
+
+    public void setAddress(String addr) {
+        address = addr;
+        System.out.println("Set Address " + address);
+    }
+
+
+    public String getAddress() {
+        System.out.println("get Address " + address);
+        return address;
+    }
+
+
+    public void setValidUser(Boolean valid_user) {
+        validUser = valid_user;
+        System.out.println("Set validUser " + validUser);
+    }
+
+
+    public Boolean getValidUser() {
+        System.out.println("get validUser " + validUser);
+        return validUser;
+    }
+
+
+    public void setDouble(double newDoubleVal) {
+        doubleVal = newDoubleVal;
+    }
+
+
+    public double getDouble() {
+        return doubleVal;
+    }
+
+
+    public int getInt() {
+        return intVal;
+    }
+
+
+    public void setInt(int newIntVal) {
+        intVal = newIntVal;
+    }
+
+
+    public float getFloat() {
+        return floatVal;
+    }
+
+
+    public void setFloat(float newFloatVal) {
+        floatVal = newFloatVal;
+    }
+
+
+    public short getShort() {
+        return shortVal;
+    }
+
+
+    public void setShort(short newShortVal) {
+        shortVal = newShortVal;
+    }
+
+
+    public long getLong() {
+        return longVal;
+    }
+
+
+    public void setLong(long newLongVal) {
+        longVal = newLongVal;
+    }
+
+
+    public char getChar() {
+        return charVal;
+    }
+
+
+    public void setChar(char newCharVal) {
+        charVal = newCharVal;
+    }
+
+
+    public byte getByte() {
+        return byteVal;
+    }
+
+
+    public void setByte(byte newByteVal) {
+        byteVal = newByteVal;
+    }
+
+
+    public String getString() {
+        return stringVal;
+    }
+
+
+    public void setString(String newStringVal) {
+        stringVal = newStringVal;
+    }
+
+
+    public Collection getOptions() {
+        return options;
+    }
+
+
+    public void setOptions(Collection newOptions) {
+        options = new ArrayList(newOptions);
+    }
+
+
+    public Collection getOptionsGroup() {
+        return optionsGroup;
+    }
+
+
+    public void setOptionsGroup(Collection newGroupOptions) {
+        optionsGroup = new ArrayList(newGroupOptions);
+    }
+
+
+    public String getCurrentOption() {
+        System.out.println("get current option " + currentOption.toString());
+        return currentOption;
+    }
+
+
+    public void setCurrentOption(String newCurrentOption) {
+        currentOption = newCurrentOption;
+        System.out.println("set current option " + currentOption.toString());
+    }
+
+
+    public Boolean getCurrentBooleanOption() {
+        System.out.println(
+              "get currentBooleanOption " + currentBooleanOption.toString());
+        return currentBooleanOption;
+    }
+
+
+    public void setCurrentBooleanOption(Boolean newBooleanOption) {
+        currentBooleanOption = newBooleanOption;
+        System.out.println(
+              "set currentBooleanOption " + currentBooleanOption.toString());
+    }
+
+
+    public long getCurrentLongOption() {
+        //   System.out.println("get currentLongOption " + currentLongOption.toString());
+        return currentLongOption;
+    }
+
+
+    public void setCurrentLongOption(long newLongOption) {
+        currentLongOption = newLongOption;
+        // System.out.println("set currentLongOption " + currentLongOption.toString());
+    }
+
+
+    public String[] getCurrentOptions() {
+        System.out.println("get current options");
+        return currentStringOptions;
+    }
+
+
+    public void setCurrentOptions(String[] newCurrentOptions) {
+        currentStringOptions = newCurrentOptions;
+        System.out.println("set current options");
+    }
+
+
+    public Long[] getCurrentLongOptions() {
+        System.out.println("get currentLongOptions");
+        return currentLongOptions;
+    }
+
+
+    public void setCurrentLongOptions(Long[] newCurrentOptions) {
+        currentLongOptions = newCurrentOptions;
+        System.out.println("set currentLongOptions");
+    }
+
+
+    public Date getDate() {
+        return date;
+    }
+
+
+    public void setDate(Date newDate) {
+        date = newDate;
+    }
+
+
+    public Date getTime() {
+        return time;
+    }
+
+
+    public void setTime(Date newTime) {
+        time = newTime;
+    }
+
+
+    protected Date dateTime;
+
+
+    public Date getDateTime() {
+        return dateTime;
+    }
+
+
+    public void setDateTime(Date newDateTime) {
+        dateTime = newDateTime;
+    }
+
+
+    protected Float floater = new Float(3.141592);
+
+
+    public Float getFloater() {
+        return floater;
+    }
+
+
+    public void setFloater(Float newFloater) {
+        floater = newFloater;
+    }
+
+
+    protected String imagePath = null;
+
+
+    public String getImagePath() {
+        return imagePath;
+    }
+
+
+    public void setImagePath(String newImagePath) {
+        imagePath = newImagePath;
+    }
+
+
+    public SelectItem getNextWeek() {
+        return new SelectItem("nextWeek", "nextWeek", "nextWeek");
+    }
+
+
+    public void setNextWeek(SelectItem newNextWeek) {
+        nextWeek = newNextWeek;
+    }
+
+
+    public SelectItem getNextDay() {
+        return new SelectItem("nextDay", "nextDay", "nextDay");
+    }
+
+
+    public void setNextDay(SelectItem newNextDay) {
+        nextDay = newNextDay;
+    }
+
+
+    public SelectItem getNextMonth() {
+        return new SelectItem("nextMonth", "nextMonth", "nextMonth");
+    }
+
+
+    public void setNextMonth(SelectItem newNextMonth) {
+        nextMonth = newNextMonth;
+    }
+
+
+    public String getCurrentShipment() {
+        return currentShipment;
+    }
+
+
+    public void setCurrentShipment(String shipment) {
+        currentShipment = shipment;
+    }
+
+
+    public Collection getLongList() {
+        return longList;
+    }
+
+
+    public void setLongList(Collection newLongOptions) {
+        longList = new ArrayList(newLongOptions);
+    }
+
+
+    public Collection getBooleanList() {
+        return booleanList;
+    }
+
+
+    public void setBooleanList(Collection newBooleanOptions) {
+        booleanList = new ArrayList(newBooleanOptions);
+    }
+}
diff --git a/jsf-demo/archive/standard/src/standard/LoginForm.java b/jsf-demo/archive/standard/src/standard/LoginForm.java
new file mode 100755
index 0000000..4cf3def
--- /dev/null
+++ b/jsf-demo/archive/standard/src/standard/LoginForm.java
@@ -0,0 +1,104 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package standard;
+
+
+import javax.faces.application.FacesMessage;
+import javax.faces.component.UIInput;
+import javax.faces.context.FacesContext;
+
+
+/** <p>Backing Bean for a username and password login form.</p> */
+
+public class LoginForm {
+
+    // -------------------------------------------------------------- Components
+
+
+    private UIInput password = null;
+
+
+    public UIInput getPassword() {
+        return (this.password);
+    }
+
+
+    public void setPassword(UIInput password) {
+        this.password = password;
+    }
+
+
+    private UIInput username = null;
+
+
+    public UIInput getUsername() {
+        return (this.username);
+    }
+
+
+    public void setUsername(UIInput username) {
+        this.username = username;
+    }
+
+    // ---------------------------------------------------------------- Handlers
+
+
+    // Validate the attempted login
+    public String login() {
+
+        String username = (String) this.username.getValue();
+        String password = (String) this.password.getValue();
+        if ("user".equals(username) && "pass".equals(password)) {
+            return ("success");
+        } else {
+            FacesContext context = FacesContext.getCurrentInstance();
+            context.addMessage
+                  (this.username.getClientId(context),
+                   new FacesMessage(FacesMessage.SEVERITY_ERROR,
+                                    "Invalid username or password, please retry",
+                                    null));
+            return (null);
+        }
+
+    }
+
+
+}
diff --git a/jsf-demo/archive/standard/src/standard/ModelBean.java b/jsf-demo/archive/standard/src/standard/ModelBean.java
new file mode 100644
index 0000000..a09773b
--- /dev/null
+++ b/jsf-demo/archive/standard/src/standard/ModelBean.java
@@ -0,0 +1,194 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package standard;
+
+import java.util.Date;
+
+
+/**
+ * Simple bean for Model value demonstration.
+ *
+ */
+
+public class ModelBean {
+
+    //
+    // Properties
+    //
+
+    protected String label = "Label from Model";
+
+
+    public String getLabel() {
+        return label;
+    }
+
+
+    public void setLabel(String label) {
+        this.label = label;
+    }
+
+
+    protected Date date1 = new Date(System.currentTimeMillis());
+
+
+    public Date getDate1() {
+        return date1;
+    }
+
+
+    public void setDate1(Date newDate) {
+        date1 = newDate;
+    }
+
+
+    protected Date date2 = new Date(System.currentTimeMillis());
+
+
+    public Date getDate2() {
+        return date2;
+    }
+
+
+    public void setDate2(Date newDate) {
+        date2 = newDate;
+        System.out.println("date2: " + date2);
+    }
+
+
+    protected Date date3 = new Date(System.currentTimeMillis());
+
+
+    public Date getDate3() {
+        return date3;
+    }
+
+
+    public void setDate3(Date newDate) {
+        date3 = newDate;
+    }
+
+
+    protected Date date4 = new Date(System.currentTimeMillis());
+
+
+    public Date getDate4() {
+        return date4;
+    }
+
+
+    public void setDate4(Date newDate) {
+        date4 = newDate;
+    }
+
+
+    protected Date time;
+
+
+    public Date getTime() {
+        return time;
+    }
+
+
+    public void setTime(Date newTime) {
+        time = newTime;
+    }
+
+
+    protected Date dateTime;
+
+
+    public Date getDateTime() {
+        return dateTime;
+    }
+
+
+    public void setDateTime(Date newDateTime) {
+        dateTime = newDateTime;
+    }
+
+
+    protected String hasComponent = null;
+
+
+    public String getHasComponent() {
+        return hasComponent;
+    }
+
+
+    public void setHasComponent(String newHasComponent) {
+        hasComponent = newHasComponent;
+    }
+
+
+    protected String whichComponent = null;
+
+
+    public String getWhichComponent() {
+        return whichComponent;
+    }
+
+
+    public void setWhichComponent(String newWhich) {
+        whichComponent = newWhich;
+    }
+
+    //
+    // Actions
+    // 
+
+    public String defaultAction() {
+
+        // back end application logic goes here.
+        return "success";
+
+    }
+
+
+    public String postbackAction() {
+
+        // back end application logic goes here.
+        return null;
+
+    }
+
+
+}
diff --git a/jsf-demo/archive/standard/src/standard/MyPhaseListener.java b/jsf-demo/archive/standard/src/standard/MyPhaseListener.java
new file mode 100644
index 0000000..2be10d2
--- /dev/null
+++ b/jsf-demo/archive/standard/src/standard/MyPhaseListener.java
@@ -0,0 +1,69 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package standard;
+
+
+import javax.faces.event.PhaseEvent;
+import javax.faces.event.PhaseId;
+import javax.faces.event.PhaseListener;
+
+
+/** <p>Debugging implementation of <code>PhaseListener</code>.</p> */
+
+public class MyPhaseListener implements PhaseListener {
+
+
+    public PhaseId getPhaseId() {
+        return (PhaseId.ANY_PHASE);
+    }
+
+
+    public void afterPhase(PhaseEvent event) {
+        System.out.println("afterPhase(" + event.getPhaseId() + ")");
+    }
+
+
+    public void beforePhase(PhaseEvent event) {
+        System.out.println("beforePhase(" + event.getPhaseId() + ")");
+    }
+
+
+}
diff --git a/jsf-demo/archive/standard/src/standard/Resources.properties b/jsf-demo/archive/standard/src/standard/Resources.properties
new file mode 100644
index 0000000..ec4845c
--- /dev/null
+++ b/jsf-demo/archive/standard/src/standard/Resources.properties
@@ -0,0 +1,46 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 2005-2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
+standardRenderKitSubmitLabel=Submit This Form
+standardRenderKitPostbackLabel=Submit and Re-View This Form
+linkLabel=Link to Thank You Page
+imageurl=/duke.gif
+resetButton=This is a reset Button
+outputMessageKey=bundle param 0: {0} bundle param: 1 {1} bundle param: 2 {2}
diff --git a/jsf-demo/archive/standard/src/standard/Resources_de.properties b/jsf-demo/archive/standard/src/standard/Resources_de.properties
new file mode 100644
index 0000000..b80e22c
--- /dev/null
+++ b/jsf-demo/archive/standard/src/standard/Resources_de.properties
@@ -0,0 +1,46 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 2005-2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
+standardRenderKitSubmitLabel=Reichen Sie Diese Form Ein
+standardRenderKitPostbackLabel=Reichen and gucken noch einmal an dieses Form
+linkLabel=Link zu Danke-Seite
+resetButton=das ist ein Reset-Button
+imageurl=/duke.gif
+outputMessageKey=bundle param 0: {0} bundle param: 1 {1} bundle param: 2 {2}
diff --git a/jsf-demo/archive/standard/src/standard/Resources_en_US.properties b/jsf-demo/archive/standard/src/standard/Resources_en_US.properties
new file mode 100644
index 0000000..ec4845c
--- /dev/null
+++ b/jsf-demo/archive/standard/src/standard/Resources_en_US.properties
@@ -0,0 +1,46 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 2005-2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
+standardRenderKitSubmitLabel=Submit This Form
+standardRenderKitPostbackLabel=Submit and Re-View This Form
+linkLabel=Link to Thank You Page
+imageurl=/duke.gif
+resetButton=This is a reset Button
+outputMessageKey=bundle param 0: {0} bundle param: 1 {1} bundle param: 2 {2}
diff --git a/jsf-demo/archive/standard/src/standard/SelectItemsData.java b/jsf-demo/archive/standard/src/standard/SelectItemsData.java
new file mode 100644
index 0000000..10fbbcf
--- /dev/null
+++ b/jsf-demo/archive/standard/src/standard/SelectItemsData.java
@@ -0,0 +1,166 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package standard;
+
+
+import javax.faces.model.SelectItem;
+import javax.faces.model.SelectItemGroup;
+
+import java.util.ArrayList;
+import java.util.List;
+
+
+/**
+ * <p>This class provides collections of <code>SelectItem</code> instances
+ * that are useful in use cases for the <code>UISelectMany</code> and
+ * <code>UISelectOne</code> components.</p>
+ */
+
+public class SelectItemsData {
+
+    // --------------------------------------------------------- Data Properties
+
+
+    private List disableds;
+
+
+    // Return a set of items where all even-numbered items are disabled
+    public List getDisableds() {
+
+        if (disableds == null) {
+            disableds = new ArrayList();
+            disableds.add(new SelectItem("A0", "Item A0", "", true));
+            disableds.add(new SelectItem("A1", "Item A1", "", false));
+            disableds.add(new SelectItem("A2", "Item A2", "", true));
+            disableds.add(new SelectItem("A3", "Item A3", "", false));
+            disableds.add(new SelectItem("A4", "Item A4", "", true));
+            disableds.add(new SelectItem("A5", "Item A5", "", false));
+        }
+        return (disableds);
+
+    }
+
+
+    private List nesteds;
+
+
+    // Return a set of nested items were even-numbered items in the primary
+    // group are disabled, and odd-numbered items in the secondary group
+    public List getNesteds() {
+
+        if (nesteds == null) {
+            System.out.println("Creating primary");
+            SelectItem primary[] = new SelectItem[3];
+            primary[0] = new SelectItem("P0", "Item P0", "", true);
+            primary[1] = new SelectItem("P1", "Item P1", "", false);
+            primary[2] = new SelectItem("P2", "Item P2", "", true);
+            System.out.println("Creating secondary");
+            SelectItem secondary[] = new SelectItem[3];
+            secondary[0] = new SelectItem("S0", "Item S0", "", false);
+            secondary[1] = new SelectItem("S1", "Item S1", "", true);
+            secondary[2] = new SelectItem("S2", "Item S2", "", false);
+            nesteds = new ArrayList();
+            System.out.println("Creating nesteds");
+            nesteds.add(new SelectItemGroup
+                  ("Primary", "", false, primary));
+            nesteds.add(new SelectItemGroup
+                  ("Secondary", "", true, secondary));
+            System.out.println("Returning nesteds");
+        }
+        return (nesteds);
+
+    }
+
+    // -------------------------------------------------------- Value Properties
+
+
+    private String disabled;
+
+
+    public String getDisabled() {
+        return disabled;
+    }
+
+
+    public void setDisabled(String disabled) {
+        this.disabled = disabled;
+    }
+
+
+    private String nested;
+
+
+    public String getNested() {
+        return nested;
+    }
+
+
+    public void setNested(String nested) {
+        this.nested = nested;
+    }
+
+
+    private String[] disabledSelected;
+
+
+    public String[] getDisabledSelected() {
+        return disabledSelected;
+    }
+
+
+    public void setDisabledSelected(String[] disabledSelected) {
+        this.disabledSelected = disabledSelected;
+    }
+
+
+    private String[] nestedSelected;
+
+
+    public String[] getNestedSelected() {
+        return nestedSelected;
+    }
+
+
+    public void setNestedSelected(String[] nested) {
+        this.nestedSelected = nestedSelected;
+    }
+
+}
diff --git a/jsf-demo/archive/standard/src/standard/SelectManyBean.java b/jsf-demo/archive/standard/src/standard/SelectManyBean.java
new file mode 100644
index 0000000..db0daf3
--- /dev/null
+++ b/jsf-demo/archive/standard/src/standard/SelectManyBean.java
@@ -0,0 +1,318 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package standard;
+
+
+import javax.faces.model.SelectItem;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.HashMap;
+
+
+/**
+ * <p>This class provides options lists and values for <code>UISelectMany</code>
+ * tests.</p>
+ */
+
+public class SelectManyBean implements Serializable {
+
+    // ------------------------------------------------------------- Constructor
+
+
+    public SelectManyBean() {
+        System.out.println("SelectManyBean()");
+    }
+
+    // ---------------------------------------------------------- Current Values
+
+
+    private int intValuesArray[] = new int[]{2, 4, 6};
+
+    public int[] getIntValuesArray() {
+        System.out.print("getIntValuesArray(");
+        if (intValuesArray != null) {
+            for (int i = 0; i < intValuesArray.length; i++) {
+                System.out.print("" + intValuesArray[i] + ",");
+            }
+        }
+        System.out.println(")");
+        return (this.intValuesArray);
+    }
+
+    public void setIntValuesArray(int intValuesArray[]) {
+        System.out.print("setIntValuesArray(");
+        if (intValuesArray != null) {
+            for (int i = 0; i < intValuesArray.length; i++) {
+                System.out.print("" + intValuesArray[i] + ",");
+            }
+        }
+        System.out.println(")");
+        this.intValuesArray = intValuesArray;
+    }
+
+
+    private Integer integerValuesArray[] = new Integer[]
+          {
+                new Integer(3),
+                new Integer(5),
+                new Integer(7),
+          };
+
+    public Integer[] getIntegerValuesArray() {
+        System.out.print("getIntegerValuesArray(");
+        if (integerValuesArray != null) {
+            for (int i = 0; i < intValuesArray.length; i++) {
+                System.out.print("" + integerValuesArray[i] + ",");
+            }
+        }
+        System.out.println(")");
+        return (this.integerValuesArray);
+    }
+
+    public void setIntegerValuesArray(Integer integerValuesArray[]) {
+        System.out.print("setIntegerValuesArray(");
+        if (integerValuesArray != null) {
+            for (int i = 0; i < intValuesArray.length; i++) {
+                System.out.print("" + integerValuesArray[i] + ",");
+            }
+        }
+        System.out.println(")");
+        this.integerValuesArray = integerValuesArray;
+    }
+
+
+    private List integerValuesList = new ArrayList();
+
+    {
+        integerValuesList.add(new Integer(1));
+        integerValuesList.add(new Integer(3));
+        integerValuesList.add(new Integer(5));
+    }
+
+    public List getIntegerValuesList() {
+        System.out.print("getIntegerValuesList(");
+        if (integerValuesList != null) {
+            for (int i = 0; i < integerValuesList.size(); i++) {
+                System.out.print(integerValuesList.get(i) + ",");
+            }
+        }
+        System.out.println(")");
+        return (this.integerValuesList);
+    }
+
+    public void setIntegerValuesList(List integerValuesList) {
+        System.out.print("setIntegerValuesList(");
+        if (integerValuesList != null) {
+            for (int i = 0; i < integerValuesList.size(); i++) {
+                System.out.print(integerValuesList.get(i) + ",");
+            }
+        }
+        System.out.println(")");
+        this.integerValuesList = integerValuesList;
+    }
+
+
+    private String stringValuesArray[] = new String[]
+          {
+                "String 4",
+                "String 6",
+                "String 8",
+          };
+
+    public String[] getStringValuesArray() {
+        System.out.print("getStringValuesArray(");
+        if (stringValuesArray != null) {
+            for (int i = 0; i < stringValuesArray.length; i++) {
+                System.out.print(stringValuesArray[i] + ",");
+            }
+        }
+        System.out.println(")");
+        return (this.stringValuesArray);
+    }
+
+    public void setStringValuesArray(String stringValuesArray[]) {
+        System.out.print("setStringValuesArray(");
+        if (stringValuesArray != null) {
+            for (int i = 0; i < stringValuesArray.length; i++) {
+                System.out.print(stringValuesArray[i] + ",");
+            }
+        }
+        System.out.println(")");
+        this.stringValuesArray = stringValuesArray;
+    }
+
+
+    private List stringValuesList = new ArrayList();
+
+    {
+        stringValuesList.add("String 3");
+        stringValuesList.add("String 6");
+        stringValuesList.add("String 9");
+    }
+
+    public List getStringValuesList() {
+        System.out.print("getStringValuesList(");
+        if (stringValuesList != null) {
+            for (int i = 0; i < stringValuesList.size(); i++) {
+                System.out.print(stringValuesList.get(i) + ",");
+            }
+        }
+        System.out.println(")");
+        return (this.stringValuesList);
+    }
+
+    public void setStringValuesList(List stringValuesList) {
+        System.out.print("setStringValuesList(");
+        if (stringValuesList != null) {
+            for (int i = 0; i < stringValuesList.size(); i++) {
+                System.out.print(stringValuesList.get(i) + ",");
+            }
+        }
+        System.out.println(")");
+        this.stringValuesList = stringValuesList;
+    }
+
+    public Map getStringValuesMap() {
+        Map m = new HashMap();
+        String[] vals = {
+             "String 1",
+             "String 2",
+             "String 3",
+             "String 4" };
+        for (String s : vals) {
+            m.put(s, s);    
+        }
+        return m;
+    }
+    
+    String[] selectedMapValues;  
+    public void setSelectedMapValues(String[] values) {
+        selectedMapValues = values;
+    }
+   
+    public String[] getSelectedMapValues() {
+       return selectedMapValues;
+    }
+
+    private SelectManyRegistered registeredArray[] =
+          new SelectManyRegistered[]
+                {new SelectManyRegistered("foo"),
+                 new SelectManyRegistered("baz"),
+                };
+
+    public SelectManyRegistered[] getRegisteredArray() {
+        return (this.registeredArray);
+    }
+
+    public void setRegisteredArray(SelectManyRegistered registeredArray[]) {
+        this.registeredArray = registeredArray;
+    }
+
+
+    private SelectManyUnregistered unregisteredArray[] =
+          new SelectManyUnregistered[]
+                {new SelectManyUnregistered("foo"),
+                 new SelectManyUnregistered("baz"),
+                };
+
+    public SelectManyUnregistered[] getUnregisteredArray() {
+        return (this.unregisteredArray);
+    }
+
+    public void setUnregisteredArray(
+          SelectManyUnregistered unregisteredArray[]) {
+        this.unregisteredArray = unregisteredArray;
+    }
+
+    // ----------------------------------------------------------- Options Lists
+
+
+    public SelectItem[] getIntOptions() {
+        SelectItem items[] = new SelectItem[10];
+        for (int i = 0; i < items.length; i++) {
+            items[i] = new SelectItem(new Integer(i), "Option " + i);
+        }
+        return (items);
+    }
+
+
+    public SelectItem[] getIntegerOptions() {
+        SelectItem items[] = new SelectItem[10];
+        for (int i = 0; i < items.length; i++) {
+            items[i] = new SelectItem(new Integer(i), "Option " + i);
+        }
+        return (items);
+    }
+
+
+    public SelectItem[] getStringOptions() {
+        SelectItem items[] = new SelectItem[10];
+        for (int i = 0; i < items.length; i++) {
+            items[i] = new SelectItem("String " + i, "Option " + i);
+        }
+        return (items);
+    }
+
+
+    public SelectItem[] getRegisteredOptions() {
+        SelectItem items[] = new SelectItem[4];
+        items[0] = new SelectItem(new SelectManyRegistered("foo"));
+        items[1] = new SelectItem(new SelectManyRegistered("bar"));
+        items[2] = new SelectItem(new SelectManyRegistered("baz"));
+        items[3] = new SelectItem(new SelectManyRegistered("bop"));
+        return (items);
+    }
+
+
+    public SelectItem[] getUnregisteredOptions() {
+        SelectItem items[] = new SelectItem[4];
+        items[0] = new SelectItem(new SelectManyUnregistered("foo"));
+        items[1] = new SelectItem(new SelectManyUnregistered("bar"));
+        items[2] = new SelectItem(new SelectManyUnregistered("baz"));
+        items[3] = new SelectItem(new SelectManyUnregistered("bop"));
+        return (items);
+    }
+
+
+}
diff --git a/jsf-demo/archive/standard/src/standard/SelectManyConverter.java b/jsf-demo/archive/standard/src/standard/SelectManyConverter.java
new file mode 100644
index 0000000..ff6a0f0
--- /dev/null
+++ b/jsf-demo/archive/standard/src/standard/SelectManyConverter.java
@@ -0,0 +1,70 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package standard;
+
+
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.convert.Converter;
+
+
+public class SelectManyConverter implements Converter {
+
+
+    public Object getAsObject(FacesContext context, UIComponent component,
+                              String value) {
+
+        return (new SelectManyRegistered(value));
+
+    }
+
+
+    public String getAsString(FacesContext context, UIComponent component,
+                              Object value) {
+
+        return (((SelectManyRegistered) value).getName());
+
+    }
+
+
+}
+
+
diff --git a/jsf-demo/archive/standard/src/standard/SelectManyRegistered.java b/jsf-demo/archive/standard/src/standard/SelectManyRegistered.java
new file mode 100644
index 0000000..0eecc63
--- /dev/null
+++ b/jsf-demo/archive/standard/src/standard/SelectManyRegistered.java
@@ -0,0 +1,81 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package standard;
+
+
+import java.io.Serializable;
+
+
+/**
+ * <p>Test bean for valid options of a SelectMany that are not strings,
+ * and for which a converter has been registered.</p>
+ */
+
+public class SelectManyRegistered implements Serializable {
+
+    public SelectManyRegistered() {
+        this("NONE");
+    }
+
+    public SelectManyRegistered(String name) {
+        this.name = name;
+    }
+
+    private String name;
+
+    public String getName() {
+        return (this.name);
+    }
+
+    public boolean equals(Object o) {
+        if (o instanceof SelectManyRegistered) {
+            return (getName().equals(((SelectManyRegistered) o).getName()));
+        } else {
+            return (false);
+        }
+    }
+
+    public String toString() {
+        return (getName());
+    }
+
+
+}
diff --git a/jsf-demo/archive/standard/src/standard/SelectManyUnregistered.java b/jsf-demo/archive/standard/src/standard/SelectManyUnregistered.java
new file mode 100644
index 0000000..cffc435
--- /dev/null
+++ b/jsf-demo/archive/standard/src/standard/SelectManyUnregistered.java
@@ -0,0 +1,81 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package standard;
+
+
+import java.io.Serializable;
+
+
+/**
+ * <p>Test bean for valid options of a SelectMany that are not strings,
+ * and for which no converter has been registered.</p>
+ */
+
+public class SelectManyUnregistered implements Serializable {
+
+    public SelectManyUnregistered() {
+        this("NONE");
+    }
+
+    public SelectManyUnregistered(String name) {
+        this.name = name;
+    }
+
+    private String name;
+
+    public String getName() {
+        return (this.name);
+    }
+
+    public boolean equals(Object o) {
+        if (o instanceof SelectManyUnregistered) {
+            return (getName().equals(((SelectManyUnregistered) o).getName()));
+        } else {
+            return (false);
+        }
+    }
+
+    public String toString() {
+        return (getName());
+    }
+
+
+}
diff --git a/jsf-demo/archive/standard/src/standard/UIDataBean.java b/jsf-demo/archive/standard/src/standard/UIDataBean.java
new file mode 100644
index 0000000..0d4dfde
--- /dev/null
+++ b/jsf-demo/archive/standard/src/standard/UIDataBean.java
@@ -0,0 +1,477 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package standard;
+
+
+import javax.faces.component.UIData;
+import javax.faces.component.UIInput;
+import javax.faces.component.UISelectBoolean;
+import javax.faces.context.FacesContext;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+
+/** <p>Backing file bean for <code>/UIData.jsp</code> demo.</p> */
+
+public class UIDataBean {
+
+    // -------------------------------------------------------- Bound Components
+
+
+    /** <p>The <code>accountId</code> field for the current row.</p> */
+    private UIInput accountId = null;
+
+
+    public UIInput getAccountId() {
+        return accountId;
+    }
+
+
+    public void setAccountId(UIInput accountId) {
+        this.accountId = accountId;
+    }
+
+
+    /** <p>The <code>checked</code> field for the current row.</p> */
+    private UISelectBoolean checked = null;
+
+
+    public UISelectBoolean getChecked() {
+        return checked;
+    }
+
+
+    public void setChecked(UISelectBoolean checked) {
+        this.checked = checked;
+    }
+
+
+    /** <p>The <code>created</code> field for the current row.</p> */
+    private UISelectBoolean created = null;
+
+
+    public UISelectBoolean getCreated() {
+        return created;
+    }
+
+
+    public void setCreated(UISelectBoolean created) {
+        this.created = created;
+    }
+
+
+    /** <p>The <code>UIData</code> component representing the entire table.</p> */
+    private UIData data = null;
+
+
+    public UIData getData() {
+        return data;
+    }
+
+
+    public void setData(UIData data) {
+        this.data = data;
+    }
+
+    // --------------------------------------------------- Calculated Properties
+
+
+    /** <p>Return a customized label for the "Click" link.</p> */
+    public String getClickLabel() {
+
+        return ("Click");
+        /* Causes NPE because data is not initialized yet?
+        CustomerBean customer = (CustomerBean) data.getRowData();
+        if (customer != null) {
+            return ("Click " + customer.getAccountId());
+        } else {
+            return ("Click");
+        }
+        */
+
+    }
+
+
+    /** <p>Return a customized label for the "Press" button.</p> */
+    public String getPressLabel() {
+
+        return ("Press");
+        /* Causes NPE because data is not initialized yet?
+        CustomerBean customer = (CustomerBean) data.getRowData();
+        if (customer != null) {
+            return ("Press " + customer.getAccountId());
+        } else {
+            return ("Press");
+        }
+        */
+
+    }
+
+    // --------------------------------------------------------- Action Handlers
+
+
+    /** <p>Acknowledge that a row-specific link was clicked.</p> */
+    public String click() {
+
+        FacesContext context = FacesContext.getCurrentInstance();
+        append("click(rowIndex=" + data.getRowIndex() +
+               ",accountId=" +
+               accountId.getValue() + ")");
+        CustomerBean customer = (CustomerBean) context.getExternalContext()
+              .getRequestMap().get("customer");
+        System.out.println("accountId: " + customer.getAccountId());
+        context.getExternalContext().getSessionMap().put("customer", customer);
+        clear();
+        return ("click");
+
+    }
+
+
+    /**
+     * <p>Create a new empty row to be filled in for a new record
+     * in the database.</p>
+     */
+    public String create() {
+
+        append("create()");
+        clear();
+
+        // Add a new row to the table
+        List list = list();
+        if (list != null) {
+            CustomerBean customer = new CustomerBean();
+            list.add(customer);
+            int index = data.getRowIndex();
+            data.setRowIndex(list.size() - 1);
+            created.setSelected(true);
+            data.setRowIndex(index);
+        }
+
+        // Position so that the new row is visible if necessary
+        scroll(list.size());
+        return (null);
+
+    }
+
+
+    /**
+     * <p>Delete any customers who have been checked from the list
+     * (Immediate Mode).</p>
+     */
+    public String deleteImmediate() {
+
+        append("delete()");
+
+        // Delete customers for whom the checked field is selected
+        List removes = new ArrayList();
+        int n = data.getRowCount();
+        for (int i = 0; i < n; i++) {
+            data.setRowIndex(i);
+            System.out.println(
+                  "delete(accountId=" + accountId.getValue() + ",checked=" +
+                  checked.getSubmittedValue() +
+                  ")");
+            if ("true".equals(checked.getSubmittedValue())) {
+                removes.add(data.getRowData());
+                checked.setSelected(false);
+                created.setSelected(false);
+            }
+        }
+        if (removes.size() > 0) {
+            List list = list();
+            Iterator remove = removes.iterator();
+            while (remove.hasNext()) {
+                list.remove(remove.next());
+            }
+        }
+
+        clear();
+
+        return (null);
+    }
+
+
+    /**
+     * <p>Delete any customers who have been checked from the list
+     * (Deferred Mode).</p>
+     */
+    public String deleteDeferred() {
+
+        append("delete()");
+
+        // Delete customers for whom the checked field is selected
+        List removes = new ArrayList();
+        int n = data.getRowCount();
+        for (int i = 0; i < n; i++) {
+            data.setRowIndex(i);
+            System.out.println(
+                  "delete(accountId=" + accountId.getValue() + ",checked=" +
+                  checked.isSelected() +
+                  ")");
+            if (checked.isSelected()) {
+                removes.add(data.getRowData());
+                checked.setSelected(false);
+                created.setSelected(false);
+            }
+        }
+        if (removes.size() > 0) {
+            List list = list();
+            Iterator remove = removes.iterator();
+            while (remove.hasNext()) {
+                list.remove(remove.next());
+            }
+        }
+
+        clear();
+
+        return (null);
+    }
+
+
+    /** <p>Scroll directly to the first page.</p> */
+    public String first() {
+
+        append("first()");
+        scroll(0);
+        return (null);
+
+    }
+
+
+    /** <p>Acknowledge that the footer button was pressed.</p> */
+    public String footer() {
+
+        FacesContext context = FacesContext.getCurrentInstance();
+        append("footer()");
+        clear();
+        return (null);
+
+    }
+
+
+    /** <p>Acknowledge that the header button was pressed.</p> */
+    public String header() {
+
+        FacesContext context = FacesContext.getCurrentInstance();
+        append("header()");
+        clear();
+        return (null);
+
+    }
+
+
+    /** <p>Scroll directly to the last page.</p> */
+    public String last() {
+
+        append("last()");
+        scroll(data.getRowCount() - 1);
+        return (null);
+
+    }
+
+
+    /** <p>Scroll forwards to the next page.</p> */
+    public String next() {
+
+        append("next()");
+        int first = data.getFirst();
+        scroll(first + data.getRows());
+        return (null);
+
+    }
+
+
+    /** <p>Acknowledge that a row-specific button was pressed.</p> */
+    public String press() {
+
+        FacesContext context = FacesContext.getCurrentInstance();
+        append("press(rowIndex=" + data.getRowIndex() +
+               ",accountId=" +
+               accountId.getValue() + ")");
+        clear();
+        return (null);
+
+    }
+
+
+    /** <p>Scroll backwards to the previous page.</p> */
+    public String previous() {
+
+        append("previous()");
+        int first = data.getFirst();
+        scroll(first - data.getRows());
+        return (null);
+
+    }
+
+
+    /** <p>Handle a "reset" button by clearing local component values.</p> */
+    public String reset() {
+
+        append("reset()");
+        clear();
+        return (null);
+
+    }
+
+
+    /**
+     * <p>Save any changes to the underlying database.  In a real application
+     * this would need to distinguish between inserts and updates, based on
+     * the state of the "created" property.</p>
+     */
+    public String update() {
+
+        append("update()");
+        ; // Save to database as necessary
+        clear();
+        created();
+        return (null);
+
+    }
+
+    // --------------------------------------------------------- Private Methods
+
+
+    /**
+     * <p>Append the specified text to the message request attribute, creating
+     * this attribute if necessary.</p>
+     *
+     * @param text Text to be appended
+     */
+    private void append(String text) {
+
+        //        System.out.println("APPEND:  " + text);
+        FacesContext context = FacesContext.getCurrentInstance();
+        String message = (String)
+              context.getExternalContext().getRequestMap().get("message");
+        if (message == null) {
+            message = "";
+        }
+        message += "<li>" + text + "</li>";
+        context.getExternalContext().getRequestMap().put("message", message);
+
+    }
+
+
+    /** <p>Clear the checked state for all customers.</p> */
+    private void clear() {
+
+        append("clear()");
+        int n = data.getRowCount();
+        for (int i = 0; i < n; i++) {
+            data.setRowIndex(i);
+            checked.setSelected(false);
+        }
+
+    }
+
+
+    /** <p>Clear the created state of all customers.</p> */
+    private void created() {
+
+        append("created()");
+        int n = data.getRowCount();
+        for (int i = 0; i < n; i++) {
+            data.setRowIndex(i);
+            created.setSelected(false);
+        }
+
+    }
+
+
+    /**
+     * <p>Return an <code>Iterator</code> over the customer list, if any;
+     * otherwise return <code>null</code>.</p>
+     */
+    private Iterator iterator() {
+
+        List list = list();
+        if (list != null) {
+            return (list.iterator());
+        } else {
+            return (null);
+        }
+
+    }
+
+
+    /**
+     * <p>Return the <code>List</code> containing our customers, if any;
+     * otherwise, return <code>null</code>.</p>
+     */
+    private List list() {
+
+        List list = (List)
+              FacesContext.getCurrentInstance().getExternalContext().
+                    getSessionMap().get("list");
+        return (list);
+
+    }
+
+
+    /**
+     * <p>Scroll to the page that contains the specified row number.</p>
+     *
+     * @param row Desired row number
+     */
+    private void scroll(int row) {
+
+        int rows = data.getRows();
+        if (rows < 1) {
+            append("scroll(" + row + ") showing entire table already");
+            return; // Showing entire table already
+        }
+        if (row < 0) {
+            data.setFirst(0);
+        } else if (row >= data.getRowCount()) {
+            data.setFirst(data.getRowCount() - 1);
+        } else {
+            data.setFirst(row - (row % rows));
+        }
+        append("scroll(" + row + "), first=" + data.getFirst());
+
+    }
+
+
+}
diff --git a/jsf-demo/archive/standard/web/DataModel.jsp b/jsf-demo/archive/standard/web/DataModel.jsp
new file mode 100644
index 0000000..c92c637
--- /dev/null
+++ b/jsf-demo/archive/standard/web/DataModel.jsp
@@ -0,0 +1,108 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<%@ page import="standard.CustomerBean" %>
+<%@ page import="java.util.ArrayList" %>
+<%@ page import="java.util.List" %>
+<%@ taglib uri="http://java.sun.com/jsf/core"  prefix="f" %>
+<%@ taglib uri="http://java.sun.com/jsf/html"  prefix="h" %>
+
+<f:view>
+<html>
+<head>
+  <title>DataModel</title>
+  <link rel="stylesheet" type="text/css"
+       href='<%= request.getContextPath() + "/stylesheet.css" %>'>
+</head>
+<body>
+
+  <h:form id="myform">
+
+    <h:panelGrid   columnClasses="form-prompt,form-field"
+                          columns="2"
+                       styleClass="form-background">
+
+      <h:outputText        value="Account Id:"/>
+
+      <h:selectOneMenu        id="accountId"
+                          binding="#{DataModelBean.accountId}">
+           <f:selectItems   value="#{DataModelBean.accountIds}"/>
+      </h:selectOneMenu>
+
+      <h:commandButton action="#{DataModelBean.select}"
+                            value="Select"/>
+
+    </h:panelGrid>
+
+    <h:panelGrid   columnClasses="form-prompt,form-field"
+                          columns="2"
+                       styleClass="form-background">
+
+      <h:outputText        value="Account Id:"/>
+
+      <h:outputText        value="#{DataModelBean.customers.rowData.accountId}"/>
+
+      <h:outputText        value="Customer Name:"/>
+
+      <h:outputText        value="#{DataModelBean.customers.rowData.name}"/>
+
+      <h:outputText        value="Stock Symbol:"/>
+
+      <h:outputText        value="#{DataModelBean.customers.rowData.symbol}"/>
+
+      <h:outputText        value="Total Sales:"/>
+
+      <h:outputText        value="#{DataModelBean.customers.rowData.totalSales}"/>
+
+    </h:panelGrid>
+
+  </h:form>
+
+  <hr>
+  <p><a href='<%= request.getContextPath() + "/" %>'>Back</a>
+  to home page.</p>
+
+</body>
+</html>
+</f:view>
diff --git a/jsf-demo/archive/standard/web/Standard_Thanks.jsp b/jsf-demo/archive/standard/web/Standard_Thanks.jsp
new file mode 100644
index 0000000..a69a8cd
--- /dev/null
+++ b/jsf-demo/archive/standard/web/Standard_Thanks.jsp
@@ -0,0 +1,79 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<HTML>
+    <HEAD> <TITLE> JSF Standard RenderKit Demo - Thank You Page</TITLE> </HEAD>
+
+    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
+    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+
+    <H3> Standard RenderKit Thank You Page </H3>
+    <hr>
+
+       <f:view>
+        <h:form id="standardForm" >
+ 
+            <table> 
+
+           <c:if test="${model.hasComponent == 'true'}">
+
+            <tr> 
+              <td>The actuated component 
+                  was <h:outputText id="actuated"
+                               value="#{model.whichComponent}"/>. </td>
+            </tr>
+
+        </c:if>
+
+          </TR>
+            <td><a href='<%= request.getContextPath() + "/" %>'>
+                Back To RenderKit Demo</a></td>
+          </TR>
+
+          </table>
+
+        </h:form>
+     </f:view>
+</HTML>
diff --git a/jsf-demo/archive/standard/web/UICommand.jsp b/jsf-demo/archive/standard/web/UICommand.jsp
new file mode 100644
index 0000000..4169ed9
--- /dev/null
+++ b/jsf-demo/archive/standard/web/UICommand.jsp
@@ -0,0 +1,94 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+  <head>
+    <title>UICommand</title>
+  </head>
+
+  <body>
+
+    <h1>UICommand</h1>
+
+    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
+
+     <f:loadBundle basename="standard.Resources" var="standardBundle"/>
+
+     <f:view>  
+
+       <p>Form is rendered after this.</p>
+     
+       <h:form id="standardRenderKitForm" 
+                  >
+
+         <h:commandButton id="standardRenderKitSubmit" 
+             action="#{model.defaultAction}"
+             value="#{standardBundle.standardRenderKitSubmitLabel}">
+         </h:commandButton>
+
+         <table width="100%" border="1" cellpadding="3" cellspacing="3">
+
+<!-- Each included page should have table rows for the appropriate widget. -->
+
+           <%@ include file="table_header.jsp" %>
+
+           <%@ include file="command_link_row.jsp" %>
+           <%@ include file="command_button_row.jsp" %>
+
+         </table>
+
+         <h:commandButton id="standardRenderKitSubmit1"
+             action="#{model.defaultAction}"
+             value="#{standardBundle.standardRenderKitSubmitLabel}">
+         </h:commandButton>
+
+       </h:form>
+
+     </f:view>   
+
+
+  </body>
+</html>
diff --git a/jsf-demo/archive/standard/web/UIData.jsp b/jsf-demo/archive/standard/web/UIData.jsp
new file mode 100644
index 0000000..19af3b8
--- /dev/null
+++ b/jsf-demo/archive/standard/web/UIData.jsp
@@ -0,0 +1,294 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<%@ page import="standard.CustomerBean" %>
+<%@ page import="java.util.ArrayList" %>
+<%@ page import="java.util.List" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsf/core"  prefix="f" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt"  prefix="fmt" %>
+<%@ taglib uri="http://java.sun.com/jsf/html"  prefix="h" %>
+
+<%
+  // Construct a preconfigured customer list in session scope
+  List list = (List)
+    pageContext.getAttribute("list", PageContext.SESSION_SCOPE);
+  if (list == null) {
+    list = new ArrayList();
+    list.add(new CustomerBean("123456", "Alpha Beta Company", "ABC", 1234.56));
+    list.add(new CustomerBean("445566", "General Services, Ltd.", "GS", 33.33));
+    list.add(new CustomerBean("654321", "Summa Cum Laude, Inc.", "SCL", 76543.21));
+    list.add(new CustomerBean("333333", "Yabba Dabba Doo", "YDD",  333.33));
+    for (int i = 10; i < 20; i++) {
+      list.add(new CustomerBean("8888" + i,
+                                "Customer " + i,
+                                "CU" + i,
+                                ((double) i) * 10.0));
+    }
+    pageContext.setAttribute("list", list,
+                             PageContext.SESSION_SCOPE);
+  }
+%>
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<f:view>
+<html>
+<head>
+  <title>UIData</title>
+  <link rel="stylesheet" type="text/css"
+       href='<%= request.getContextPath() + "/stylesheet.css" %>'>
+</head>
+<body>
+
+  <h1>UIData</h1>
+
+  <c:if test="${not empty message}">
+    The following events and <code>UIDataBean</code> activities were performed:
+    <ul><c:out value="${message}" escapeXml="false"/></ul>
+    <hr>
+  </c:if>
+
+  <h:form id="standardRenderKitForm">
+
+  <h:dataTable columnClasses="list-column-center,
+                               list-column-center, list-column-left,
+                               list-column-center, list-column-right,
+                               list-column-center"
+                      binding="#{UIDataBean.data}"
+                  footerClass="list-footer"
+                  headerClass="list-header"
+                           id="table"
+	                 rows="5"
+                   rowClasses="list-row-even, list-row-odd"
+                   styleClass="list-background"
+                        value="#{list}"
+                          var="customer">
+
+    <f:facet             name="header">
+      <h:outputText    value="Overall Table Header"/>
+    </f:facet>
+
+    <f:facet             name="footer">
+      <h:outputText    value="Overall Table Footer"/>
+    </f:facet>
+
+    <h:column>
+      <%-- Visible checkbox for selection --%>
+      <h:selectBooleanCheckbox
+                           id="checked"
+                      binding="#{UIDataBean.checked}"/>
+      <%-- Invisible checkbox for "created" flag --%>
+      <h:selectBooleanCheckbox
+                           id="created"
+                      binding="#{UIDataBean.created}"
+                     rendered="false"/>
+    </h:column>
+
+    <h:column>
+      <f:facet           name="header">
+        <h:outputText  value="Account Id"/>
+      </f:facet>
+      <f:facet           name="footer">
+        <h:outputText  value="A.I. Footer"/>
+      </f:facet>
+      <h:inputText        id="accountId"
+                      binding="#{UIDataBean.accountId}"
+                     required="true"
+                         size="6"
+                        value="#{customer.accountId}">
+        <f:valueChangeListener
+                         type="standard.LogValueChangedListener"/>
+      </h:inputText>
+      <h:message          for="accountId"/>
+    </h:column>
+
+    <h:column>
+      <f:facet           name="header">
+        <h:outputText  value="Customer Name"/>
+      </f:facet>
+      <f:facet           name="footer">
+        <h:outputText  value="C.N. Footer"/>
+      </f:facet>
+      <h:inputText        id="name"
+                     required="true"
+                         size="50"
+                        value="#{customer.name}">
+        <f:valueChangeListener
+                         type="standard.LogValueChangedListener"/>
+      </h:inputText>
+      <h:message          for="name"/>
+    </h:column>
+
+    <h:column>
+      <f:facet           name="header">
+        <h:outputText  value="Symbol"/>
+      </f:facet>
+      <f:facet           name="footer">
+        <h:outputText  value="S. Footer"/>
+      </f:facet>
+      <h:inputText        id="symbol"
+                     required="true"
+                         size="6"
+                        value="#{customer.symbol}">
+        <f:validateLength
+                      maximum="6"
+                      minimum="2"/>
+        <f:valueChangeListener
+                         type="standard.LogValueChangedListener"/>
+      </h:inputText>
+      <h:message          for="symbol"/>
+    </h:column>
+
+    <h:column>
+      <f:facet           name="header">
+        <h:outputText  value="Total Sales"/>
+      </f:facet>
+      <f:facet           name="footer">
+        <h:outputText  value="T.S. Footer"/>
+      </f:facet>
+      <h:outputText       id="totalSales"
+                        value="#{customer.totalSales}">
+        <f:convertNumber type="currency"/>
+      </h:outputText>
+    </h:column>
+
+    <h:column>
+      <f:facet           name="header">
+        <h:commandButton  id="headerButton"
+                       action="#{UIDataBean.header}"
+                    immediate="true"
+                        value="Header"
+                         type="SUBMIT"/>
+      </f:facet>
+      <f:facet           name="footer">
+        <h:commandButton  id="footerButton"
+                       action="#{UIDataBean.footer}"
+                    immediate="true"
+                        value="Footer"
+                         type="SUBMIT"/>
+      </f:facet>
+      <h:commandButton    id="press"
+                    action="#{UIDataBean.press}"
+                    immediate="true"
+                        value="#{UIDataBean.pressLabel}"
+                         type="SUBMIT"/>
+      <h:commandLink id="click"
+                    action="#{UIDataBean.click}"
+                    immediate="true">
+        <h:outputText
+                        value="#{UIDataBean.clickLabel}"/>
+      </h:commandLink>
+    </h:column>
+
+  </h:dataTable>
+
+  <h:commandButton        id="create1"
+                    action="#{UIDataBean.create}"
+                    immediate="true"
+                        value="Create New Row (immediate=true)"
+                         type="SUBMIT"/>
+
+  <h:commandButton        id="create2"
+                    action="#{UIDataBean.create}"
+                    immediate="false"
+                        value="Create New Row (immediate=false)"
+                         type="SUBMIT"/>
+
+  <h:commandButton        id="delete1"
+                    action="#{UIDataBean.deleteImmediate}"
+                    immediate="true"
+                        value="Delete Checked (immediate=true)"
+                         type="SUBMIT"/>
+
+  <h:commandButton        id="delete2"
+                    action="#{UIDataBean.deleteDeferred}"
+                    immediate="false"
+                        value="Delete Checked (immediate=false)"
+                         type="SUBMIT"/>
+
+  <h:commandButton        id="first"
+                    action="#{UIDataBean.first}"
+                    immediate="true"
+                        value="First Page"
+                         type="SUBMIT"/>
+
+  <h:commandButton        id="last"
+                    action="#{UIDataBean.last}"
+                    immediate="true"
+                        value="Last Page"
+                         type="SUBMIT"/>
+
+  <h:commandButton        id="next"
+                    action="#{UIDataBean.next}"
+                    immediate="true"
+                        value="Next Page"
+                         type="SUBMIT"/>
+
+  <h:commandButton        id="previous"
+                    action="#{UIDataBean.previous}"
+                    immediate="true"
+                        value="Prev Page"
+                         type="SUBMIT"/>
+
+  <h:commandButton        id="reset"
+                    action="#{UIDataBean.reset}"
+                    immediate="true"
+                        value="Reset Changes"
+                         type="SUBMIT"/>
+
+  <h:commandButton        id="update"
+                    action="#{UIDataBean.update}"
+                    immediate="false"
+                        value="Save Changes"
+                         type="SUBMIT"/>
+
+  </h:form>
+
+  <hr>
+  <p><a href='<%= request.getContextPath() + "/" %>'>Back</a>
+  to home page.</p>
+
+</body>
+</html>
+</f:view>
diff --git a/jsf-demo/archive/standard/web/UIDataClick.jsp b/jsf-demo/archive/standard/web/UIDataClick.jsp
new file mode 100644
index 0000000..78a8253
--- /dev/null
+++ b/jsf-demo/archive/standard/web/UIDataClick.jsp
@@ -0,0 +1,97 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<%@ taglib uri="http://java.sun.com/jsf/core"  prefix="f" %>
+<%@ taglib uri="http://java.sun.com/jsf/html"  prefix="h" %>
+
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<f:view>
+<html>
+<head>
+  <title>UIDataClick</title>
+  <link rel="stylesheet" type="text/css"
+       href='<%= request.getContextPath() + "/stylesheet.css" %>'>
+</head>
+<body>
+
+  <h1>UIDataClick</h1>
+
+  <h:form id="standardRenderKitForm">
+
+    <table>
+<tr>
+
+<td>AccountId
+</td>
+
+<td>    <h:outputText value="#{customer.accountId}" /></td>
+
+</tr>
+
+<tr>
+<td>Name
+</td>
+<td>    <h:outputText value="#{customer.name}" /></td>
+
+</tr>
+
+<tr>
+<td>Symbol
+</td>
+<td>    <h:outputText value="#{customer.symbol}" /></td>
+
+</tr>
+
+<tr>
+<td>Total Sales
+</td>
+<td>    <h:outputText value="#{customer.totalSales}" /></td>
+
+</tr>
+
+
+  </h:form>
+
+</f:view>
diff --git a/jsf-demo/archive/standard/web/UIGraphic.jsp b/jsf-demo/archive/standard/web/UIGraphic.jsp
new file mode 100644
index 0000000..da4c7dc
--- /dev/null
+++ b/jsf-demo/archive/standard/web/UIGraphic.jsp
@@ -0,0 +1,95 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+  <head>
+    <title>UIGraphic</title>
+  </head>
+
+  <body>
+
+    <h1>UIGraphic</h1>
+
+    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
+
+     <f:loadBundle basename="standard.Resources" var="standardBundle"/>
+     <jsp:useBean id="LoginBean" class="standard.LoginBean" scope="session">
+       <jsp:setProperty name="LoginBean" property="imagePath" 
+                        value="duke.gif"/> 
+     </jsp:useBean>
+
+     <f:view>  
+
+       <p>Form is rendered after this.</p>
+     
+       <h:form id="standardRenderKitForm" >
+
+         <h:commandButton id="standardRenderKitSubmit" action="success"
+             value="#{standardBundle.standardRenderKitSubmitLabel}">
+         </h:commandButton>
+
+         <table width="100%" border="1" cellpadding="3" cellspacing="3">
+
+<!-- Each included page should have table rows for the appropriate widget. -->
+
+           <%@ include file="table_header.jsp" %>
+
+           <%@ include file="graphic_image_row.jsp" %>
+
+         </table>
+
+         <h:commandButton id="standardRenderKitSubmit1" 
+             action="success"
+             value="#{standardBundle.standardRenderKitSubmitLabel}">
+         </h:commandButton>
+
+       </h:form>
+
+     </f:view>   
+
+
+  </body>
+</html>
diff --git a/jsf-demo/archive/standard/web/UIInput.jsp b/jsf-demo/archive/standard/web/UIInput.jsp
new file mode 100644
index 0000000..85f87b0
--- /dev/null
+++ b/jsf-demo/archive/standard/web/UIInput.jsp
@@ -0,0 +1,117 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+  <head>
+    <title>UIInput</title>
+  </head>
+
+  <body>
+
+    <h1>UIInput</h1>
+
+    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
+    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+
+     <f:loadBundle basename="standard.Resources" var="standardBundle"/>
+
+     <f:view>  
+
+       <p>Form is rendered after this.</p>
+     
+       <h:form id="standardRenderKitForm" >
+
+         <h:commandButton id="standardRenderKitSubmit" 
+             action="#{model.postbackAction}"
+             value="#{standardBundle.standardRenderKitPostbackLabel}">
+         </h:commandButton>
+
+         <table width="100%" border="1" cellpadding="3" cellspacing="3">
+
+<!-- Each included page should have table rows for the appropriate widget. -->
+
+           <%@ include file="table_header.jsp" %>
+
+           <%@ include file="input_date_row.jsp" %>
+
+           <%@ include file="input_text_row.jsp" %>
+
+           <%@ include file="input_secret_row.jsp" %>
+
+           <%@ include file="input_textarea_row.jsp" %>
+
+           <%@ include file="input_datetime_row.jsp" %>
+
+           <%@ include file="input_time_row.jsp" %>
+  
+           <%@ include file="input_number_row.jsp" %>
+
+           <%@ include file="input_hidden_row.jsp" %>
+
+<tr>
+<td><b>Errors:</b>
+</td>
+
+<td>
+		<h:messages id="globalErrors" />
+</td>
+
+</tr>
+
+         </table>
+
+         <h:commandButton id="standardRenderKitSubmit1" 
+             action="#{model.postbackAction}"
+             value="#{standardBundle.standardRenderKitPostbackLabel}">
+         </h:commandButton>
+
+       </h:form>
+
+     </f:view>   
+
+
+  </body>
+</html>
diff --git a/jsf-demo/archive/standard/web/UIOutput.jsp b/jsf-demo/archive/standard/web/UIOutput.jsp
new file mode 100644
index 0000000..8b9a2a6
--- /dev/null
+++ b/jsf-demo/archive/standard/web/UIOutput.jsp
@@ -0,0 +1,115 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+  <head>
+    <title>UIOutput</title>
+  </head>
+
+  <body>
+
+    <h1>UIOutput</h1>
+
+    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
+
+     <f:loadBundle basename="standard.Resources" var="standardBundle"/>
+
+     <jsp:useBean id="LoginBean" class="standard.LoginBean" scope="session" />
+
+     <f:view>  
+
+       <p>Form is rendered after this.</p>
+     
+       <h:form id="standardRenderKitForm" 
+                  >
+
+         <h:commandButton id="standardRenderKitSubmit" 
+             action="success"
+             value="#{standardBundle.standardRenderKitSubmitLabel}">
+         </h:commandButton>
+
+         <table width="100%" border="1" cellpadding="3" cellspacing="3">
+
+<!-- Each included page should have table rows for the appropriate widget. -->
+
+           <%@ include file="table_header.jsp" %>
+
+           <%@ include file="output_date_row.jsp" %>
+
+           <%@ include file="output_datetime_row.jsp" %>
+
+           <%@ include file="output_message_row.jsp" %>
+
+           <%@ include file="output_number_row.jsp" %>
+
+           <%@ include file="output_text_row.jsp" %>
+
+           <%@ include file="output_time_row.jsp" %>
+
+<tr>
+<td><b>Errors:</b>
+</td>
+
+<td>
+		<h:messages id="globalErrors" />
+</td>
+
+</tr>
+
+         </table>
+
+         <h:commandButton id="standardRenderKitSubmit1" 
+             action="success"
+             value="#{standardBundle.standardRenderKitSubmitLabel}">
+         </h:commandButton>
+
+       </h:form>
+
+     </f:view>   
+
+
+  </body>
+</html>
diff --git a/jsf-demo/archive/standard/web/UIPanel.jsp b/jsf-demo/archive/standard/web/UIPanel.jsp
new file mode 100644
index 0000000..8f0086a
--- /dev/null
+++ b/jsf-demo/archive/standard/web/UIPanel.jsp
@@ -0,0 +1,88 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
+<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<f:view>  
+<html>
+
+  <head>
+    <title>UIPanel</title>
+    <link rel="stylesheet" type="text/css"
+       href='<%= request.getContextPath() + "/stylesheet.css" %>'>
+  </head>
+
+  <body>
+
+    <h1>UIPanel</h1>
+
+    <fmt:setBundle basename="standard.Resources"
+                      scope="session"
+                        var="standardBundle"/>
+
+
+         <table width="100%" border="1" cellpadding="3" cellspacing="3">
+
+<!-- Each included page should have table rows for the appropriate widget. -->
+
+           <%@ include file="table_header.jsp" %>
+
+           <%@ include file="panel_grid_row.jsp" %>
+
+<%--
+           <%@ include file="panelGroup_row.jsp" %>
+--%>
+
+         </table>
+
+  <hr>
+  <p><a href='<%= request.getContextPath() + "/" %>'>Back</a>
+  to home page.</p>
+
+</body>
+</html>
+</f:view>
diff --git a/jsf-demo/archive/standard/web/UISelectBoolean.jsp b/jsf-demo/archive/standard/web/UISelectBoolean.jsp
new file mode 100644
index 0000000..0feb4ab
--- /dev/null
+++ b/jsf-demo/archive/standard/web/UISelectBoolean.jsp
@@ -0,0 +1,94 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+  <head>
+    <title>UISelectBoolean</title>
+  </head>
+
+  <body>
+
+    <h1>UISelectBoolean</h1>
+
+    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
+
+     <f:loadBundle basename="standard.Resources" var="standardBundle"/>
+
+     <jsp:useBean id="LoginBean" class="standard.LoginBean" scope="session" />
+     <f:view>  
+
+       <p>Form is rendered after this.</p>
+     
+       <h:form id="standardRenderKitForm" 
+                  >
+
+         <h:commandButton id="standardRenderKitSubmit" 
+            action="success"
+             value="#{standardBundle.standardRenderKitSubmitLabel}">
+         </h:commandButton>
+
+         <table width="100%" border="1" cellpadding="3" cellspacing="3">
+
+<!-- Each included page should have table rows for the appropriate widget. -->
+
+           <%@ include file="table_header.jsp" %>
+
+           <%@ include file="selectboolean_checkbox_row.jsp" %>
+
+         </table>
+
+         <h:commandButton id="standardRenderKitSubmit1" 
+             action="success"
+             value="#{standardBundle.standardRenderKitSubmitLabel}">
+         </h:commandButton>
+
+       </h:form>
+
+     </f:view>   
+
+
+  </body>
+</html>
diff --git a/jsf-demo/archive/standard/web/UISelectMany.jsp b/jsf-demo/archive/standard/web/UISelectMany.jsp
new file mode 100644
index 0000000..b6b1e43
--- /dev/null
+++ b/jsf-demo/archive/standard/web/UISelectMany.jsp
@@ -0,0 +1,101 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+
+    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
+
+
+<html>
+  <head>
+    <title>UISelectMany</title>
+  </head>
+
+  <body>
+
+    <h1>UISelectMany</h1>
+
+     <f:loadBundle basename="standard.Resources" var="standardBundle"/>
+
+     <jsp:useBean id="LoginBean" class="standard.LoginBean" scope="session" />
+     <f:view>  
+
+       <p>Form is rendered after this.</p>
+     
+       <h:form id="standardRenderKitForm">
+
+         <h:commandButton id="standardRenderKitSubmit" 
+             action="success"
+             value="#{standardBundle.standardRenderKitSubmitLabel}">
+         </h:commandButton>
+
+         <table width="100%" border="1" cellpadding="3" cellspacing="3">
+
+<!-- Each included page should have table rows for the appropriate widget. -->
+
+           <%@ include file="table_header.jsp" %>
+
+           <%@ include file="selectmany_menu_row.jsp" %>
+
+           <%@ include file="selectmany_listbox_row.jsp" %>
+
+           <%@ include file="selectmany_checkbox_row.jsp" %>
+
+           <%@ include file="selectmany_nonstring_row.jsp" %>
+
+         </table>
+
+         <h:commandButton id="standardRenderKitSubmit1" 
+             action="success"
+             value="#{standardBundle.standardRenderKitSubmitLabel}">
+         </h:commandButton>
+
+       </h:form>
+
+     </f:view>   
+
+
+  </body>
+</html>
diff --git a/jsf-demo/archive/standard/web/UISelectOne.jsp b/jsf-demo/archive/standard/web/UISelectOne.jsp
new file mode 100644
index 0000000..266236f
--- /dev/null
+++ b/jsf-demo/archive/standard/web/UISelectOne.jsp
@@ -0,0 +1,99 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+  <head>
+    <title>UISelectOne</title>
+  </head>
+
+  <body>
+
+    <h1>UISelectOne</h1>
+
+    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
+
+     <f:loadBundle basename="standard.Resources" var="standardBundle"/>
+
+     <jsp:useBean id="LoginBean" class="standard.LoginBean" scope="session" />
+     <f:view>  
+
+       <p>Form is rendered after this.</p>
+     
+       <h:form id="standardRenderKitForm" 
+                  >
+
+         <h:commandButton id="standardRenderKitSubmit" 
+             action="success"
+             value="#{standardBundle.standardRenderKitSubmitLabel}">
+         </h:commandButton>
+
+         <table width="100%" border="1" cellpadding="3" cellspacing="3">
+
+<!-- Each included page should have table rows for the appropriate widget. -->
+
+           <%@ include file="table_header.jsp" %>
+
+           <%@ include file="selectone_listbox_row.jsp" %>
+
+           <%@ include file="selectone_menu_row.jsp" %>
+
+           <%@ include file="selectone_radio_row.jsp" %>
+
+
+         </table>
+
+         <h:commandButton id="standardRenderKitSubmit1" 
+             action="success"
+            value="#{standardBundle.standardRenderKitSubmitLabel}">
+         </h:commandButton>
+
+       </h:form>
+
+     </f:view>   
+
+
+  </body>
+</html>
diff --git a/jsf-demo/archive/standard/web/WEB-INF/NavigationConfig.xml b/jsf-demo/archive/standard/web/WEB-INF/NavigationConfig.xml
new file mode 100644
index 0000000..0af26e0
--- /dev/null
+++ b/jsf-demo/archive/standard/web/WEB-INF/NavigationConfig.xml
@@ -0,0 +1,88 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<navigation>
+
+    <!-- Rules StandardRenderKit Demo -->
+
+    <rule>
+        <page>/UICommand.jsp</page>
+        <outcome>success</outcome>
+        <select>/StandardRenderKit.html</select>
+    </rule>
+    <rule>
+        <page>/UIGraphic.jsp</page>
+        <outcome>success</outcome>
+        <select>/StandardRenderKit.html</select>
+    </rule>
+    <rule>
+        <page>/UIInput.jsp</page>
+        <outcome>success</outcome>
+        <select>/StandardRenderKit.html</select>
+    </rule>
+    <rule>
+        <page>/UIOutput.jsp</page>
+        <outcome>success</outcome>
+        <select>/StandardRenderKit.html</select>
+    </rule>
+    <rule>
+        <page>/UIPanel.jsp</page>
+        <outcome>success</outcome>
+        <select>/StandardRenderKit.html</select>
+    </rule>
+    <rule>
+        <page>/UISelectBoolean.jsp</page>
+        <outcome>success</outcome>
+        <select>/StandardRenderKit.html</select>
+    </rule>
+    <rule>
+        <page>/UISelectMany.jsp</page>
+        <outcome>success</outcome>
+        <select>/StandardRenderKit.html</select>
+    </rule>
+    <rule>
+        <page>/UISelectOne.jsp</page>
+        <outcome>success</outcome>
+        <select>/StandardRenderKit.html</select>
+    </rule>
+
+</navigation>
diff --git a/jsf-demo/archive/standard/web/WEB-INF/faces-config.xml b/jsf-demo/archive/standard/web/WEB-INF/faces-config.xml
new file mode 100644
index 0000000..5ace1f2
--- /dev/null
+++ b/jsf-demo/archive/standard/web/WEB-INF/faces-config.xml
@@ -0,0 +1,132 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd"
+    version="1.2">
+
+<!--
+  <lifecycle>
+    <phase-listener>standard.MyPhaseListener</phase-listener>
+  </lifecycle>
+-->
+
+  <converter>
+    <converter-for-class>standard.SelectManyRegistered</converter-for-class>
+    <converter-class>standard.SelectManyConverter</converter-class>
+  </converter>
+
+  <managed-bean>
+    <managed-bean-name>model</managed-bean-name>
+    <managed-bean-class>standard.ModelBean</managed-bean-class>
+    <managed-bean-scope>session</managed-bean-scope>
+  </managed-bean>
+
+  <managed-bean>
+    <managed-bean-name>DataModelBean</managed-bean-name>
+    <managed-bean-class>standard.DataModelBean</managed-bean-class>
+    <managed-bean-scope>session</managed-bean-scope>
+  </managed-bean>
+
+  <managed-bean>
+    <managed-bean-name>LoginBean</managed-bean-name>
+    <managed-bean-class>standard.LoginBean</managed-bean-class>
+    <managed-bean-scope>session</managed-bean-scope>
+  </managed-bean>
+
+  <managed-bean>
+    <managed-bean-name>LoginForm</managed-bean-name>
+    <managed-bean-class>standard.LoginForm</managed-bean-class>
+    <managed-bean-scope>request</managed-bean-scope>
+  </managed-bean>
+
+  <managed-bean>
+    <managed-bean-name>UIDataBean</managed-bean-name>
+    <managed-bean-class>standard.UIDataBean</managed-bean-class>
+    <managed-bean-scope>session</managed-bean-scope>
+  </managed-bean>
+
+  <managed-bean>
+    <managed-bean-name>SelectItemsData</managed-bean-name>
+    <managed-bean-class>standard.SelectItemsData</managed-bean-class>
+    <managed-bean-scope>request</managed-bean-scope>
+  </managed-bean>
+
+  <managed-bean>
+    <managed-bean-name>SelectManyBean</managed-bean-name>
+    <managed-bean-class>standard.SelectManyBean</managed-bean-class>
+    <managed-bean-scope>session</managed-bean-scope>
+  </managed-bean>
+
+  <navigation-rule>
+    <from-view-id> * </from-view-id>
+    <navigation-case>
+      <description>If the action "success", goto
+      Standard_Thanks.jsp</description> 
+      <display-name>The Generic Rule</display-name> 
+      <from-outcome>success</from-outcome>
+      <to-view-id>/Standard_Thanks.jsp</to-view-id>
+    </navigation-case>
+  </navigation-rule>
+
+  <navigation-rule>
+    <from-view-id>/UIInput.jsp</from-view-id>
+    <navigation-case>
+      <description>If the action returns "success", goto
+      UIInput.jsp</description> 
+      <display-name>The Generic Rule</display-name>
+      <from-outcome>success</from-outcome>
+      <to-view-id>/UIInput.jsp</to-view-id>
+    </navigation-case>
+  </navigation-rule>
+
+  <navigation-rule>
+    <from-view-id>/UIData.jsp</from-view-id>
+    <navigation-case>
+      <from-outcome>click</from-outcome>
+      <to-view-id>/UIDataClick.jsp</to-view-id>
+    </navigation-case>
+  </navigation-rule>
+
+</faces-config>
diff --git a/jsf-demo/archive/standard/web/WEB-INF/web.xml b/jsf-demo/archive/standard/web/WEB-INF/web.xml
new file mode 100755
index 0000000..65b61ce
--- /dev/null
+++ b/jsf-demo/archive/standard/web/WEB-INF/web.xml
@@ -0,0 +1,91 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<web-app version="2.5"
+         xmlns="http://java.sun.com/xml/ns/javaee"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" >
+    
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>server</param-value>
+    </context-param>
+
+    <context-param>
+        <description>
+            Set this flag to true if you want the JavaServer Faces
+            Reference Implementation to validate the XML in your
+            faces-config.xml resources against the DTD.  Default
+            value is false.
+        </description>
+        <param-name>com.sun.faces.validateXml</param-name>
+        <param-value>true</param-value>
+        
+    </context-param>
+
+    <context-param>
+        <description>
+            Set this flag to true if you want the JavaServer Faces
+            Reference Implementation to verify that all of the application
+            objects you have configured (components, converters,
+            renderers, and validators) can be successfully created.
+            Default value is false.
+        </description>
+        <param-name>com.sun.faces.verifyObjects</param-name>
+        <param-value>true</param-value>        
+    </context-param>
+
+    <!-- Faces Servlet -->
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+
+
+    <!-- Faces Servlet Mapping -->
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+</web-app>
diff --git a/jsf-demo/archive/standard/web/command_button_row.jsp b/jsf-demo/archive/standard/web/command_button_row.jsp
new file mode 100644
index 0000000..3966dd8
--- /dev/null
+++ b/jsf-demo/archive/standard/web/command_button_row.jsp
@@ -0,0 +1,164 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+           <tr>
+
+             <td>
+
+               <h:outputText id="commandButton1Label"
+                     value="commandButton with hard coded label"/>
+
+             </td>
+
+             <td>
+
+               <h:commandButton id="commandButton1" action="success"
+                   value="commandButton with hard coded label">
+                 <f:actionListener type="standard.DefaultListener"/>
+               </h:commandButton>
+
+              </td>
+
+            </tr>
+
+           <tr>
+
+             <td>
+
+               <h:outputText id="commandButton6_label"
+                     value="commandButton with label from model"/>
+
+             </td>
+
+             <td>
+
+               <h:commandButton id="commandButton6" action="success"
+                   value="#{model.label}">
+                 <f:actionListener type="standard.DefaultListener"/>
+               </h:commandButton>
+
+              </td>
+
+            </tr>
+
+            <tr>
+
+             <td>
+
+               <h:outputText id="commandButton2Label"
+                     value="commandButton with image from bundle "/>
+
+             </td>
+
+             <td>
+                  <h:commandButton id="commandButton2" 
+                      tabindex="50" accesskey="B"
+                      action="success"
+                      image="#{standardBundle.imageurl}">
+                 <f:actionListener type="standard.DefaultListener"/>
+               </h:commandButton>
+
+              </td>
+
+            </tr>
+
+           <tr>
+
+             <td>
+
+               <h:outputText id="commandButton3Label"
+                     value="commandButton reset type"/>
+
+             </td>
+
+             <td>
+                 <h:commandButton id="resetButton" action="success"
+                     type="reset" value="#{standardBundle.resetButton}">
+                 <f:actionListener type="standard.DefaultListener"/>
+               </h:commandButton>
+
+              </td>
+
+            </tr>
+
+            <tr>
+
+             <td>
+
+               <h:outputText id="commandButton4Label"
+                     value="commandButton push type and disabled"/>
+
+             </td>
+
+             <td>
+                 <h:commandButton id="pushButton"
+                     title="button is disabled" type="button" 
+                     disabled = "true" action="success"
+                     value="This is a disabled push button">
+                 <f:actionListener type="standard.DefaultListener"/>
+               </h:commandButton>
+
+              </td>
+
+            </tr>
+
+		    
+            <tr>
+
+             <td>
+
+               <h:outputText id="commandButton5Label"
+                     value="commandButton image type"/>
+
+             </td>
+
+             <td>
+                  <h:commandButton id="button5" action="success"
+                      title="click to submit form" image="duke.gif">
+                 <f:actionListener type="standard.DefaultListener"/>
+               </h:commandButton>
+              </td>
+
+            </tr>
+
diff --git a/jsf-demo/archive/standard/web/command_link_row.jsp b/jsf-demo/archive/standard/web/command_link_row.jsp
new file mode 100644
index 0000000..5744acc
--- /dev/null
+++ b/jsf-demo/archive/standard/web/command_link_row.jsp
@@ -0,0 +1,148 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+
+           <tr>
+
+             <td>
+
+               <h:outputText id="commandLink1Label"
+                     value="commandLink with hard coded label"/>
+
+             </td>
+
+             <td>
+
+	       <h:commandLink id="commandLink1" action="success">
+                 <f:verbatim>Submit Form</f:verbatim>
+                 <f:actionListener type="standard.DefaultListener"/>
+               </h:commandLink>
+
+             </td>
+
+            </tr>
+
+           <tr>
+
+             <td>
+
+               <h:outputText id="commandLink2Label" 
+                     value="commandLink using the model for the label"/>
+
+             </td>
+
+             <td>
+
+	      <h:commandLink id="valueRefLink" action="success">
+                 <h:outputText value="#{model.label}"/>
+                 <f:actionListener type="standard.DefaultListener"/>
+              </h:commandLink>
+
+             </td>
+
+            </tr>
+
+           <tr>
+
+             <td>
+
+               <h:outputText id="commandLink3Label" 
+                     value="commandLink using ResourceBundle for the label"/>
+
+             </td>
+
+             <td>
+
+	      <h:commandLink id="resBundleLableLink" action="success">
+                 <h:outputText 
+                  value="#{standardBundle.standardRenderKitSubmitLabel}"/>
+                 <f:actionListener type="standard.DefaultListener"/>
+               </h:commandLink>
+
+             </td>
+
+            </tr>
+
+           <tr>
+
+             <td>
+
+               <h:outputText id="commandLink4Label" 
+                     value="commandLink as an image"/>
+
+             </td>
+
+             <td>
+
+	      <h:commandLink id="imageLink" action="success">
+                 <h:graphicImage url="/duke.gif"/>
+                 <f:actionListener type="standard.DefaultListener"/>
+               </h:commandLink>
+
+
+             </td>
+
+            </tr>
+
+           <tr>
+
+             <td>
+
+               <h:outputText id="commandLink5Label" 
+                     value="commandLink using ResourceBundle for image path"/>
+
+             </td>
+
+             <td>
+
+	      <h:commandLink id="imageResourceBundleLink" action="success">
+                 <h:graphicImage  
+                  url="#{standardBundle.imageurl}" />
+                 <f:actionListener type="standard.DefaultListener"/>
+               </h:commandLink>
+
+
+             </td>
+
+            </tr>
diff --git a/jsf-ri/web/test/resources/nvLibrary/images/duke-nv.gif b/jsf-demo/archive/standard/web/duke.gif
similarity index 100%
copy from jsf-ri/web/test/resources/nvLibrary/images/duke-nv.gif
copy to jsf-demo/archive/standard/web/duke.gif
diff --git a/jsf-demo/archive/standard/web/graphic_image_row.jsp b/jsf-demo/archive/standard/web/graphic_image_row.jsp
new file mode 100644
index 0000000..67e7181
--- /dev/null
+++ b/jsf-demo/archive/standard/web/graphic_image_row.jsp
@@ -0,0 +1,108 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+           <tr>
+
+             <td>
+
+               <h:outputText id="outputGraphic1Label"
+                     value="output_graphic with hard coded image"/>
+
+             </td>
+
+             <td>
+
+               <h:graphicImage id="outputGraphic1" url="duke.gif" 
+	                            alt="output_graphic with hard coded image"
+                                 title="output_graphic with hard coded image"
+               />
+
+             </td>
+
+            </tr>
+
+           <tr>
+
+             <td>
+
+               <h:outputText id="outputGraphic2Label" 
+                     value="output_graphic with localized image"/>
+
+             </td>
+
+             <td>
+
+               <h:graphicImage id="outputGraphic2" 
+                                    url="#{standardBundle.imageurl}"
+	                            alt="output_graphic with localized image"
+                                title="output_graphic with localized image"
+               />
+
+
+             </td>
+
+            </tr>
+
+
+           <tr>
+
+             <td>
+
+               <h:outputText id="outputGraphic3Label" 
+                     value="output_graphic with path from model"/>
+
+             </td>
+
+             <td>
+
+               <h:graphicImage id="outputGraphic3" 
+	                            value="#{LoginBean.imagePath}"
+	                            alt="output_graphic with path from model"
+                                title="output_graphic with path from model"
+               />
+
+             </td>
+
+            </tr>
+
diff --git a/jsf-demo/archive/standard/web/index.jsp b/jsf-demo/archive/standard/web/index.jsp
new file mode 100644
index 0000000..de56a27
--- /dev/null
+++ b/jsf-demo/archive/standard/web/index.jsp
@@ -0,0 +1,94 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+  <head>
+    <title>JavaServer Faces 1.0 Standard RenderKit Demo</title>
+  </head>
+
+  <body>
+
+<%
+  pageContext.removeAttribute("list");
+%>
+
+    <h1>JavaServer Faces 1.0 Standard RenderKit Demo</h1>
+
+	<ul>
+
+	  <li><p><a href="faces/UICommand.jsp">UICommand</a>
+	  </p></li>
+
+	  <li><p><a href="faces/UIData.jsp">UIData</a>
+	  </p></li>
+
+	  <li><p><a href="faces/UIGraphic.jsp">UIGraphic</a>
+	  </p></li>
+
+	  <li><p><a href="faces/UIInput.jsp">UIInput</a>
+	  </p></li>
+
+	  <li><p><a href="faces/UIOutput.jsp">UIOutput</a>
+          </p></li>
+
+	  <li><p><a href="faces/UIPanel.jsp">UIPanel</a>
+	  </p></li>
+
+	  <li><p><a href="faces/UISelectBoolean.jsp">UISelectBoolean</a>
+	  </p></li>
+
+	  <li><p><a href="faces/UISelectMany.jsp">UISelectMany</a>
+	  </p></li>
+
+	  <li><p><a href="faces/UISelectOne.jsp">UISelectOne</a>
+	  </p></li>
+
+	  <li><p><a href="faces/DataModel.jsp">DataModel</a>
+	  </p></li>
+
+	</ul>
+
+  </body>
+</html>
diff --git a/jsf-demo/archive/standard/web/input_date_row.jsp b/jsf-demo/archive/standard/web/input_date_row.jsp
new file mode 100644
index 0000000..2ec8e91
--- /dev/null
+++ b/jsf-demo/archive/standard/web/input_date_row.jsp
@@ -0,0 +1,168 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+           <tr>
+
+             <td>
+               <h:outputLabel id="date1id" for="inputDate1">
+               <h:outputText id="inputDate1Label" 
+                     value="input_date medium readonly"/>
+               </h:outputLabel>
+
+             </td>
+
+
+             <td>
+
+               <h:inputText id="inputDate1" 
+                                 value="#{model.date1}"
+                                 readonly="true"
+                                 size="10" maxlength="20"
+                                 alt="input_date medium readonly"
+                                 accesskey="D" 
+                               title="input_date medium readonly">
+                   <f:convertDateTime type="date" dateStyle="medium"/>
+               </h:inputText>
+
+
+             </td>
+
+            </tr>
+
+           <tr>
+
+             <td>
+
+               <h:outputText id="inputDate2Label" 
+                     value="input_date medium"/>
+
+             </td>
+
+
+             <td>
+
+               <h:inputText id="inputDate2"
+                                 value="#{model.date2}"
+                                 alt="input_date medium"
+                                  title="input_date medium">
+                   <f:convertDateTime type="date" dateStyle="medium"/>
+               </h:inputText>
+
+
+             </td>
+
+	      <td>
+
+		<h:message id="inputDate2Errors" 
+			  for="inputDate2" />
+
+	      </td>
+
+            </tr>
+
+           <tr>
+
+             <td>
+
+               <h:outputText id="inputDate3Label" 
+                     value="input_date short"/>
+
+             </td>
+
+
+             <td>
+
+               <h:inputText id="inputDate3" 
+                                 value="#{model.date3}"
+                                 size="10"
+                                 alt="input_date short"
+                                  title="input_date short">
+                   <f:convertDateTime type="date" dateStyle="short"/>
+               </h:inputText>
+
+
+             </td>
+
+	      <td>
+
+		<h:message id="inputDate3Errors" 
+			  for="inputDate3" />
+
+	      </td>
+
+            </tr>
+
+           <tr>
+
+             <td>
+
+               <h:outputText id="inputDate4Label" 
+                     value="input_date long"/>
+
+             </td>
+
+
+             <td>
+
+               <h:inputText id="inputDate4" 
+                                 value="#{model.date4}"
+                                 size="20" maxlength="40"
+                                 alt="input_date long"
+                                 accesskey="d"
+                               title="input_date long">
+                   <f:convertDateTime type="date" dateStyle="long"/>
+               </h:inputText>
+
+
+             </td>
+
+	      <td>
+
+		<h:message id="inputDate4Errors" 
+			  for="inputDate4" />
+
+	      </td>
+
+            </tr>
+
diff --git a/jsf-demo/archive/standard/web/input_datetime_row.jsp b/jsf-demo/archive/standard/web/input_datetime_row.jsp
new file mode 100644
index 0000000..2e7fb75
--- /dev/null
+++ b/jsf-demo/archive/standard/web/input_datetime_row.jsp
@@ -0,0 +1,75 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+           <tr>
+
+             <td>
+
+               <h:outputText id="inputDatetime2Label"
+                     value="input_datetime pattern"/>
+
+             </td>
+
+
+             <td>
+
+               <h:inputText id="inputDatetime2" 
+                                 value="Wed, Aug 21, 2002 AD at 10:57:00 AM" 
+                                 size="30" 
+                                 alt="input_datetime pattern"
+                               title="input_datetime pattern">
+                   <f:convertDateTime pattern="EEE, MMM d, yyyy G 'at' hh:mm:ss a"/>
+              </h:inputText>
+
+             </td>
+
+	      <td>
+
+		<h:message id="inputDatetime2Errors" 
+		        for="inputDatetime2" />
+
+	      </td>
+
+            </tr>
+
diff --git a/jsf-demo/archive/standard/web/input_hidden_row.jsp b/jsf-demo/archive/standard/web/input_hidden_row.jsp
new file mode 100644
index 0000000..dc734ef
--- /dev/null
+++ b/jsf-demo/archive/standard/web/input_hidden_row.jsp
@@ -0,0 +1,107 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+            <tr>
+              <td><b><h:outputText id="dateconvertLabel"
+                         value="Date [MMM DD, YYYY Format]: " /></b></td>
+              <td><h:inputHidden id="datetextHidden" value="#{LoginBean.date}">
+                      <f:convertDateTime type="date"/>
+                  </h:inputHidden></td>
+              <td><h:message id="dateErr"
+                      for="datetextHidden"/> </td>
+            </tr>
+            <tr>
+              <td><b><h:outputText id="timeconvertLabel"
+                         value="Time [HH:MI:SS (AM/PM) Format]: " /></b></td>
+              <td><h:inputHidden id="timetextHidden" 
+                      value="#{LoginBean.time}">
+                      <f:convertDateTime type="time" /> 
+                  </h:inputHidden></td>
+              <td><h:message id="timeErr"
+                      for="timetextHidden"/> </td>
+            </tr>
+            <tr>
+              <td><b><h:outputText id="datetimeconvertLabel"
+                         value="Date/Time [MMM DD, YYYY HH:MI:SS (AM/PM) Format]: " /></b></td>
+              <td><h:inputHidden id="datetimetextHidden" 
+                      value="#{LoginBean.dateTime}">
+                      <f:convertDateTime type="both"/>
+                  </h:inputHidden></td>
+              <td><h:message id="datetimeErr"
+                      for="datetimetextHidden"/> </td>
+            </tr>
+            <tr>
+              <td><b><h:outputText id="boolconvertLabel"
+                         value="Boolean [true/false]: " /></b></td>
+              <td><h:inputHidden id="booltextHidden" value="false"/></td>
+            </tr>
+            <tr>
+                <td><b><h:outputText id="currencylabel"
+                           value="Currency Format:"/></b></td>
+                <td>
+                    <h:inputHidden id="currencyinputHidden"
+                        value="#{LoginBean.double}">                        
+                        <f:convertNumber type="currency"/>
+                    </h:inputHidden>
+                </td>
+            </tr>
+            <tr>
+                <td><b><h:outputText id="percentlabel"
+                           value="Percent Format:"/></b></td>
+                <td>
+                    <h:inputHidden id="percentinputHidden" value="54%">
+                        <f:convertNumber type="percent"/>
+                    </h:inputHidden>
+                </td>
+            </tr>
+            <tr>
+                <td><b><h:outputText id="patternlabel"
+                           value="Pattern Format [####]:"/></b></td>
+                <td>
+                    <h:inputHidden id="patterninputHidden"
+                        value="1999.65">
+                        <f:convertNumber pattern="####"/>
+                    </h:inputHidden>
+                </td>
+            </tr>
diff --git a/jsf-demo/archive/standard/web/input_number_row.jsp b/jsf-demo/archive/standard/web/input_number_row.jsp
new file mode 100644
index 0000000..52e2044
--- /dev/null
+++ b/jsf-demo/archive/standard/web/input_number_row.jsp
@@ -0,0 +1,197 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+           <tr>
+
+             <td>
+
+               <h:outputText id="inputNumber1Label"
+                     value="input_number number readonly"/>
+
+             </td>
+
+
+             <td>
+
+               <h:inputText id="inputNumber1" 
+                                 value="1239989.6079" 
+                                 readonly="true"
+                                 size="10" maxlength="20"
+                                 alt="input_number number readonly"
+                                 accesskey="N"
+                               title="input_number number readonly">
+                   <f:convertNumber type="number"/>
+               </h:inputText>
+                           
+
+             </td>
+             <td>
+
+             <h:message id="inputNumber1Errors"
+                          for="inputNumber1" />
+
+             </td>
+            </tr>
+
+           <tr>
+
+             <td>
+
+               <h:outputText id="inputNumber2Label" 
+                     value="input_number currency"/>
+
+             </td>
+
+
+             <td>
+
+               <h:inputText id="inputTest2" value="#{LoginBean.long}">
+                   <f:convertNumber type="currency" currencySymbol="EUR"/>
+                  
+               </h:inputText>
+             </td>
+
+	      <td>
+
+		<h:message id="inputNumber2Errors" 
+			  for="inputNumber2" />
+
+	      </td>
+
+            </tr>
+
+           <tr>
+
+             <td>
+
+               <h:outputText id="inputNumber3Label" 
+                     value="input_number percent "/>
+
+             </td>
+
+
+             <td>
+
+               <h:inputText id="inputNumber3" 
+                                 value="45%" 
+                                 size="10"
+                                 alt="input_number percent"
+                                  title="input_number percent">
+                   <f:convertNumber type="percent"/>
+              </h:inputText>
+
+             </td>
+
+	      <td>
+
+		<h:message id="inputNumber3Errors" 
+			  for="inputNumber3" />
+
+	      </td>
+
+            </tr>
+
+           <tr>
+
+             <td>
+
+               <h:outputText id="inputNumber4Label" 
+                     value="input_number PATTERN "/>
+
+             </td>
+
+
+             <td>
+
+               <h:inputText id="inputNumber4" 
+                                 value="9999.987651" 
+                                 size="20" maxlength="40"
+                                 alt="input_number PATTERN "
+                                 accesskey="d"
+                               title="input_number PATTERN">
+                   <f:convertNumber pattern="####"/>
+               </h:inputText>
+             </td>
+
+	      <td>
+
+		<h:message id="inputNumber4Errors" 
+			  for="inputNumber4" />
+
+	      </td>
+
+            </tr>
+
+            <tr>
+
+             <td>
+
+               <h:outputText id="inputNumber5Label"
+                     value="input_number integer with valueRef"/>
+
+             </td>
+
+
+             <td>
+
+               <h:inputText id="inputNumber5" 
+                                 size="2" maxlength="10"
+                                 alt="input_number integer with valueRef"
+                                 accesskey="d"
+                               title="input_number integer with valueRef">
+                   <f:convertNumber integerOnly="true"/>
+               </h:inputText>
+                               
+             </td>
+
+              <td>
+
+                <h:message id="inputNumber5Errors"
+                          for="inputNumber5" />
+
+              </td>
+
+            </tr>
+
+
diff --git a/jsf-demo/archive/standard/web/input_secret_row.jsp b/jsf-demo/archive/standard/web/input_secret_row.jsp
new file mode 100644
index 0000000..d6513d6
--- /dev/null
+++ b/jsf-demo/archive/standard/web/input_secret_row.jsp
@@ -0,0 +1,159 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+           <tr>
+
+             <td>
+
+               <h:outputText id="inputSecret1Label"
+                     value="inputSecret readonly"/>
+
+             </td>
+
+
+             <td>
+
+               <h:inputSecret id="inputSecret1" 
+                                 value="Text Value 1" 
+                                 readonly="true"
+                                 size="12" maxlength="20"
+                                 alt="inputSecret readonly"
+                                 accesskey="D" 
+                                 title="inputSecret readonly"/>
+
+
+             </td>
+
+            </tr>
+
+           <tr>
+
+             <td>
+
+               <h:outputText id="inputSecret2Label" 
+                     value="inputSecret"/>
+
+             </td>
+
+
+             <td>
+
+               <h:inputSecret id="inputSecret2"
+                                 value="Text Value 2" 
+                                 alt="inputSecret"
+                                  title="inputSecret"/>
+
+
+             </td>
+
+	      <td>
+
+		<h:message id="inputSecret2Errors" 
+			  for="inputSecret2" />
+
+	      </td>
+
+            </tr>
+
+           <tr>
+
+             <td>
+
+               <h:outputText id="inputSecret3Label" 
+                     value="inputSecret"/>
+
+             </td>
+
+
+             <td>
+
+               <h:inputSecret id="inputSecret3"
+                                 value="Text Value 3" 
+                                 size="12"
+                                 alt="inputSecret"
+                                  title="inputSecret"/>
+
+
+             </td>
+
+	      <td>
+
+		<h:message id="inputSecret3Errors" 
+			  for="inputSecret3" />
+
+	      </td>
+
+            </tr>
+
+           <tr>
+
+             <td>
+
+               <h:outputText id="inputSecret4Label" 
+                     value="inputSecret"/>
+
+             </td>
+
+
+             <td>
+
+               <h:inputSecret id="inputSecret4" 
+                                 value="Text Value 4" 
+                                 size="20" maxlength="40"
+                                 alt="inputSecret"
+                                 accesskey="d"
+                               title="inputSecret"/>
+
+
+             </td>
+
+	      <td>
+
+		<h:message id="inputSecret4Errors" 
+			  for="inputSecret4" />
+
+	      </td>
+
+            </tr>
+
diff --git a/jsf-demo/archive/standard/web/input_text_row.jsp b/jsf-demo/archive/standard/web/input_text_row.jsp
new file mode 100644
index 0000000..4adb769
--- /dev/null
+++ b/jsf-demo/archive/standard/web/input_text_row.jsp
@@ -0,0 +1,159 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+           <tr>
+
+             <td>
+
+               <h:outputText id="inputText1Label"
+                     value="inputText readonly"/>
+
+             </td>
+
+
+             <td>
+
+               <h:inputText id="inputText1" 
+                                 value="Text Value 1" 
+                                 readonly="true"
+                                 size="12" maxlength="20"
+                                 alt="inputText readonly"
+                                 accesskey="D" 
+                                 title="inputText readonly"/>
+
+
+             </td>
+
+            </tr>
+
+           <tr>
+
+             <td>
+
+               <h:outputText id="inputText2Label" 
+                     value="inputText"/>
+
+             </td>
+
+
+             <td>
+
+               <h:inputText id="inputText2"
+                                 value="Text Value 2" 
+                                 alt="inputText"
+                                  title="inputText"/>
+
+
+             </td>
+
+	      <td>
+
+		<h:message id="inputText2Errors" 
+			  for="inputText2" />
+
+	      </td>
+
+            </tr>
+
+           <tr>
+
+             <td>
+
+               <h:outputText id="inputText3Label" 
+                     value="inputText"/>
+
+             </td>
+
+
+             <td>
+
+               <h:inputText id="inputText3"
+                                 value="Text Value 3" 
+                                 size="12"
+                                 alt="inputText"
+                                  title="inputText"/>
+
+
+             </td>
+
+	      <td>
+
+		<h:message id="inputText3Errors" 
+			  for="inputText3" />
+
+	      </td>
+
+            </tr>
+
+           <tr>
+
+             <td>
+
+               <h:outputText id="inputText4Label" 
+                     value="inputText"/>
+
+             </td>
+
+
+             <td>
+
+               <h:inputText id="inputText4" 
+                                 value="Text Value 4" 
+                                 size="20" maxlength="40"
+                                 alt="inputText"
+                                 accesskey="d"
+                               title="inputText"/>
+
+
+             </td>
+
+	      <td>
+
+		<h:message id="inputText4Errors" 
+			  for="inputText4" />
+
+	      </td>
+
+            </tr>
+
diff --git a/jsf-demo/archive/standard/web/input_textarea_row.jsp b/jsf-demo/archive/standard/web/input_textarea_row.jsp
new file mode 100644
index 0000000..93cb61b
--- /dev/null
+++ b/jsf-demo/archive/standard/web/input_textarea_row.jsp
@@ -0,0 +1,153 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+           <tr>
+
+             <td>
+
+               <h:outputText id="inputTextarea1Label"
+                     value="inputTextarea readonly "/>
+
+             </td>
+
+
+             <td>
+
+               <h:inputTextarea id="inputTextarea1" 
+                                 value="initial text"
+                                 readonly="true"
+                                 rows="5" cols="20"
+                                 accesskey="D" 
+                                 title="inputTextarea readonly"/>
+
+
+             </td>
+
+            </tr>
+
+           <tr>
+
+             <td>
+
+               <h:outputText id="inputTextarea2Label" 
+                     value="inputTextarea"/>
+
+             </td>
+
+
+             <td>
+
+               <h:inputTextarea id="inputTextarea2"
+                                 rows="5" cols="20"
+                                  title="inputTextarea"/>
+
+
+             </td>
+
+	      <td>
+
+		<h:message id="inputTextarea2Errors" 
+			  for="inputTextarea2" />
+
+	      </td>
+
+            </tr>
+
+           <tr>
+
+             <td>
+
+               <h:outputText id="inputTextarea3Label" 
+                     value="inputTextarea"/>
+
+             </td>
+
+
+             <td>
+
+               <h:inputTextarea id="inputTextarea3"
+                                 rows="5" cols="20"
+                                  title="inputTextarea"/>
+
+
+             </td>
+
+	      <td>
+
+		<h:message id="inputTextarea3Errors" 
+			  for="inputTextarea3" />
+
+	      </td>
+
+            </tr>
+
+           <tr>
+
+             <td>
+
+               <h:outputText id="inputTextarea4_label" 
+                     value="inputTextarea"/>
+
+             </td>
+
+
+             <td>
+
+               <h:inputTextarea id="inputTextarea4" 
+                                 rows="5" cols="20"
+                                 accesskey="d"
+                               title="inputTextarea"/>
+
+
+             </td>
+
+	      <td>
+
+		<h:message id="inputTextarea4Errors" 
+			  for="inputTextarea4" />
+
+	      </td>
+
+            </tr>
+
diff --git a/jsf-demo/archive/standard/web/input_time_row.jsp b/jsf-demo/archive/standard/web/input_time_row.jsp
new file mode 100644
index 0000000..4d11bea
--- /dev/null
+++ b/jsf-demo/archive/standard/web/input_time_row.jsp
@@ -0,0 +1,101 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+           <tr>
+
+             <td>
+
+               <h:outputText id="inputTime1Label"
+                     value="input_time medium readonly"/>
+
+             </td>
+
+
+             <td>
+
+               <h:inputText id="inputTime1" 
+                                 value="10:00:01 PM" 
+                                 readonly="true"
+                                 size="10" maxlength="20"
+                                 alt="input_time medium readonly"
+                                 accesskey="D" 
+                               title="input_time medium readonly">
+                   <f:convertDateTime type="time" timeStyle="medium"/>
+               </h:inputText>
+
+
+             </td>
+
+            </tr>
+
+           <tr>
+
+             <td>
+
+               <h:outputText id="inputTime2Label" 
+                     value="input_time long "/>
+
+             </td>
+
+
+             <td>
+
+               <h:inputText id="inputTime2"                                  
+                                 value="9:57:00 AM PST"
+                                 alt="input_time long"
+                               title="input_time long">
+                   <f:convertDateTime type="time" timeStyle="long"/>
+               </h:inputText>
+
+             </td>
+
+	      <td>
+
+		<h:message id="inputTime2Errors" 
+		        for="inputTime2" />
+
+	      </td>
+
+            </tr>
+
diff --git a/jsf-demo/archive/standard/web/output_date_row.jsp b/jsf-demo/archive/standard/web/output_date_row.jsp
new file mode 100644
index 0000000..89d2d9f
--- /dev/null
+++ b/jsf-demo/archive/standard/web/output_date_row.jsp
@@ -0,0 +1,150 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+           <tr>
+
+             <td>
+
+               <h:outputText id="outputDate3Label"
+                     value="output_date short"/>
+
+             </td>
+
+
+             <td>
+
+               <h:outputText id="outputDate3" value="#{LoginBean.date}">
+                   <f:convertDateTime dateStyle="short" type="date"/>
+               </h:outputText>
+
+
+             </td>
+
+	      <td>
+
+		<h:message id="outputDate3Errors" 
+			  for="outputDate3" />
+
+	      </td>
+
+            </tr>
+
+           <tr>
+
+             <td>
+               <h:outputLabel id="date1id" for="output_date1">
+               <h:outputText id="outputDate1Label" 
+                     value="output_date medium"/>
+               </h:outputLabel>
+
+             </td>
+
+
+             <td>
+
+               <h:outputText id="outputDate1" value="#{LoginBean.date}">
+                   <f:convertDateTime dateStyle="medium" type="date"/>
+               </h:outputText>
+
+
+             </td>
+
+            </tr>
+
+           <tr>
+
+             <td>
+
+               <h:outputText id="outputDate4Label" 
+                     value="output_date long"/>
+
+             </td>
+
+
+             <td>
+
+               <h:outputText id="outputDate4" value="#{LoginBean.date}">
+                  <f:convertDateTime type="date" dateStyle="long"/>
+               </h:outputText>
+
+
+             </td>
+
+	      <td>
+
+		<h:message id="outputDate4Errors" 
+			  for="outputDate4" />
+
+	      </td>
+
+            </tr>
+
+           <tr>
+
+             <td>
+
+               <h:outputText id="outputDate2Label" 
+                     value="output_date FULL"/>
+
+             </td>
+
+
+             <td>
+
+               <h:outputText id="outputDate2" value="#{LoginBean.date}">
+                   <f:convertDateTime type="date" dateStyle="full"/>
+               </h:outputText>
+
+
+             </td>
+
+	      <td>
+
+		<h:message id="outputDate2Errors" 
+			  for="outputDate2" />
+
+	      </td>
+
+            </tr>
+
diff --git a/jsf-demo/archive/standard/web/output_datetime_row.jsp b/jsf-demo/archive/standard/web/output_datetime_row.jsp
new file mode 100644
index 0000000..f331a06
--- /dev/null
+++ b/jsf-demo/archive/standard/web/output_datetime_row.jsp
@@ -0,0 +1,95 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+           <tr>
+
+             <td>
+
+               <h:outputText id="outputDatetime2Label"
+                     value="output_datetime pattern"/>
+
+             </td>
+
+
+             <td>
+
+               <h:outputText id="outputDatetime2" value="#{LoginBean.date}">
+                   <f:convertDateTime pattern="EEE, MMM d, yyyy G 'at' hh:mm:ss a"/>
+              </h:outputText>
+
+             </td>
+
+	      <td>
+
+		<h:message id="outputDatetime2Errors" 
+		        for="outputDatetime2" />
+
+	      </td>
+
+            </tr>
+
+           <tr>
+
+             <td>
+
+               <h:outputText id="outputDatetime3Label" 
+                     value="output_datetime dateStyle=short timeStyle=full"/>
+             <td>
+
+               <h:outputText id="outputDatetime3" value="#{LoginBean.date}">
+                   <f:convertDateTime type="both" timeStyle="full" dateStyle="short"/>
+               </h:outputText>
+
+
+             </td>
+
+	      <td>
+
+		<h:message id="outputDatetime3Errors" 
+		        for="outputDatetime2" />
+
+	      </td>
+
+            </tr>
+
diff --git a/jsf-demo/archive/standard/web/output_message_row.jsp b/jsf-demo/archive/standard/web/output_message_row.jsp
new file mode 100644
index 0000000..55c98e4
--- /dev/null
+++ b/jsf-demo/archive/standard/web/output_message_row.jsp
@@ -0,0 +1,91 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+           <tr>
+
+             <td>
+
+               <h:outputText id="outputMessage2Label"
+                     value="outputFormat value parameter substitution"/>
+
+             </td>
+
+
+             <td>
+
+              <h:outputFormat id="userMsg" value="Param 0: {0} Param 1: {1} Param 2: {2} " >
+                  <f:param value="#{LoginBean.date}"/>
+                  <f:param  value="param 2"/>
+                  <f:param  value="param 3"/>
+              </h:outputFormat>
+
+
+             </td>
+
+            </tr>
+
+           <tr>
+
+             <td>
+
+               <h:outputText id="outputMessage1Label" 
+                     value="outputFormat bundle parameter substitution"/>
+
+             </td>
+
+
+             <td>
+
+              <h:outputFormat id="userMsg1" 
+	          value="#{standardBundle.outputMessageKey}">
+                  <f:param value="#{LoginBean.date}"/>
+                  <f:param value="param 5"/>
+                  <f:param value="param 6"/>
+              </h:outputFormat>
+
+
+             </td>
+
+            </tr>
+
diff --git a/jsf-demo/archive/standard/web/output_number_row.jsp b/jsf-demo/archive/standard/web/output_number_row.jsp
new file mode 100644
index 0000000..fdfbc3b
--- /dev/null
+++ b/jsf-demo/archive/standard/web/output_number_row.jsp
@@ -0,0 +1,171 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+           <tr>
+
+             <td>
+
+               <h:outputText id="outputNumber1Label"
+                     value="output_number number"/>
+
+             </td>
+
+
+             <td>
+
+               <h:outputText id="outputNumber1" value="#{LoginBean.floater}"/>
+
+             </td>
+             <td>
+
+             <h:message id="outputNumber1Errors"
+                          for="outputNumber1" />
+
+             </td>
+            </tr>
+
+           <tr>
+
+             <td>
+
+               <h:outputText id="outputNumber2Label" 
+                     value="output_number currency"/>
+
+             </td>
+
+
+             <td>
+
+               <h:outputText id="outputNumber2" value="#{LoginBean.floater}">
+                   <f:convertNumber type="currency"/>
+               </h:outputText>
+             </td>
+
+	      <td>
+
+		<h:message id="outputNumber2Errors" 
+			  for="outputNumber2" />
+
+	      </td>
+
+            </tr>
+
+           <tr>
+
+             <td>
+
+               <h:outputText id="outputNumber3Label" 
+                     value="output_number percent"/>
+
+             </td>
+
+
+             <td>
+
+               <h:outputText id="outputNumber3" value="#{LoginBean.floater}">
+                   <f:convertNumber type="percent"/>
+               </h:outputText>
+
+             </td>
+
+	      <td>
+
+		<h:message id="outputNumber3Errors" 
+			  for="outputNumber3" />
+
+	      </td>
+
+            </tr>
+
+           <tr>
+
+             <td>
+
+               <h:outputText id="outputNumber4Label" 
+                     value="output_number PATTERN "/>
+
+             </td>
+
+
+             <td>
+
+               <h:outputText id="outputNumber4" value="#{LoginBean.floater}">
+                   <f:convertNumber pattern="####"/>
+               </h:outputText>
+             </td>
+
+	      <td>
+
+		<h:message id="outputNumber4Errors" 
+			  for="outputNumber4" />
+
+	      </td>
+
+            </tr>
+
+            <tr>
+
+             <td>
+
+               <h:outputText id="outputNumber5Label"
+                     value="output_number integer with valueRef"/>
+
+             </td>
+
+
+             <td>
+
+               <h:outputText id="outputNumber5" value="#{LoginBean.char}"/>
+             </td>
+
+              <td>
+
+                <h:message id="outputNumber5Errors"
+                          for="outputNumber5" />
+
+              </td>
+
+            </tr>
+
+
diff --git a/jsf-demo/archive/standard/web/output_text_row.jsp b/jsf-demo/archive/standard/web/output_text_row.jsp
new file mode 100644
index 0000000..5d854c5
--- /dev/null
+++ b/jsf-demo/archive/standard/web/output_text_row.jsp
@@ -0,0 +1,113 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+           <tr>
+
+             <td>
+
+               <h:outputText id="outputText1Label"
+                     value="outputText"/>
+
+             </td>
+
+
+             <td>
+
+               <h:outputText id="outputText1" 
+                       value="#{LoginBean.userName}"/>
+
+
+             </td>
+
+            </tr>
+
+           <tr>
+
+             <td>
+
+               <h:outputText id="outputText0Label" 
+                     value="outputText with outputClass"/>
+
+             </td>
+
+
+             <td>
+
+               <h:outputText id="outputText0" 
+                       styleClass="outputText0"
+                       value="#{LoginBean.userName}"/>
+
+
+             </td>
+
+            </tr>
+
+
+           <tr>
+
+             <td>
+
+               <h:outputText id="outputText2Label" 
+                     value="outputText from bundle"/>
+
+             </td>
+
+
+             <td>
+
+               <h:outputText id="outputText2"
+                                  value="#{standardBundle.linkLabel}"/>
+
+
+             </td>
+
+	      <td>
+
+		<h:message id="outputText2Errors" 
+			  for="outputText2" />
+
+	      </td>
+
+            </tr>
+
diff --git a/jsf-demo/archive/standard/web/output_time_row.jsp b/jsf-demo/archive/standard/web/output_time_row.jsp
new file mode 100644
index 0000000..596425a
--- /dev/null
+++ b/jsf-demo/archive/standard/web/output_time_row.jsp
@@ -0,0 +1,92 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+           <tr>
+
+             <td>
+
+               <h:outputText id="outputTime1Label"
+                     value="output_time medium readonly"/>
+
+             </td>
+
+
+             <td>
+
+               <h:outputText id="outputTime1" value="#{LoginBean.date}">
+                   <f:convertDateTime type="time" timeStyle="medium"/>
+               </h:outputText>
+
+
+             </td>
+
+            </tr>
+
+           <tr>
+
+             <td>
+
+               <h:outputText id="outputTime2Label" 
+                     value="output_time long "/>
+
+             </td>
+
+
+             <td>
+
+               <h:outputText id="outputTime2" value="#{LoginBean.date}">
+                   <f:convertDateTime type="time" timeStyle="long"/>
+               </h:outputText>
+
+             </td>
+
+	      <td>
+
+		<h:message id="outputTime2Errors" 
+		        for="outputTime2" />
+
+	      </td>
+
+            </tr>
+
diff --git a/jsf-demo/archive/standard/web/panel_grid_row.jsp b/jsf-demo/archive/standard/web/panel_grid_row.jsp
new file mode 100644
index 0000000..7ee7977
--- /dev/null
+++ b/jsf-demo/archive/standard/web/panel_grid_row.jsp
@@ -0,0 +1,185 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+           <tr>
+
+             <td>
+               <h:outputText id="foo"
+                     value="Grid with hardcoded values"/>
+             </td>
+                   
+
+             <td>
+
+               <h:form id="form1">
+
+                  <h:panelGrid  columns="3" 
+                                  border="1"
+                             cellpadding="3"
+                             cellspacing="3"
+                                 summary="Grid with hardcoded HTML styles"
+                                   title="Grid with hardcoded HTML styles" >
+
+                    <f:facet        name="header">
+                      <h:panelGroup>
+                        <h:outputText
+                                   value="Logon "/>
+                        <h:outputText
+                                   value="Form"/>
+                      </h:panelGroup>
+                    </f:facet>
+
+                    <h:outputText value="Username:"/>
+
+                    <h:inputText     id="username1"
+                                   value="username"
+                                required="true"/>
+
+                    <h:message for="form1:username1"/>
+
+                    <h:outputText value="Password:"/>
+
+                    <h:inputSecret   id="password1"
+                                   value="password"
+                                required="true"/>
+
+                    <h:message for="form1:password1"/>
+
+                    <h:commandButton id="submit1"
+                               action="#{LoginForm.login}"
+                                    type="SUBMIT"
+                                   value="Login"/>
+
+                    <h:commandButton id="reset1"
+                                    type="RESET"
+                                   value="Reset"/>
+
+                    <h:outputText value=""/>
+
+                    <f:facet         name="footer">
+                      <h:outputText
+                                    value="Enter username and password to login"/>
+                    </f:facet>
+
+                </h:panelGrid>
+ 
+               </h:form>
+
+             </td>
+
+            </tr>
+
+            <tr>
+
+              <td>
+                 <h:outputText id="panel4Label"
+                       value="Grid with CSS stylesheets"/>
+             </td>
+
+
+             <td>
+             
+               <h:form id="form2">
+
+                  <h:panelGrid  columns="3"
+                             footerClass="form-footer"
+                             headerClass="form-header"
+                              styleClass="form-background"
+                           columnClasses="form-prompt,form-field"
+                                 summary="Grid with CSS stylesheet styles"
+                                   title="Grid with CSS stylesheet styles" >
+
+                    <f:facet        name="header">
+                      <h:panelGroup>
+                        <h:outputText
+                                   value="Logon "/>
+                        <h:outputText
+                                   value="Form"/>
+                      </h:panelGroup>
+                    </f:facet>
+
+                    <h:outputText value="Username:"/>
+
+                    <h:inputText     id="username2"
+                                 binding="#{LoginForm.username}"
+                                required="true"/>
+
+                    <h:message for="form2:username2"/>
+
+                    <h:outputText value="Password:"/>
+
+                    <h:inputSecret   id="password2"
+                                 binding="#{LoginForm.password}"
+                                required="true"/>
+
+                    <h:message for="form2:password2"/>
+
+                    <h:commandButton id="submit2"
+                               action="#{LoginForm.login}"
+                                    type="SUBMIT"
+                                   value="Login"/>
+
+                    <h:commandButton id="reset2"
+                                    type="RESET"
+                                   value="Reset"/>
+
+                    <h:outputText value=""/>
+
+                    <f:facet         name="footer">
+                      <h:panelGroup   id="footerGroup">
+                        <h:outputText
+                                    value="Enter username and password "/>
+                        <h:outputText
+                                    value="to login"/>
+                      </h:panelGroup>
+                    </f:facet>
+
+                  </h:panelGrid>
+ 
+                </h:form>
+
+              </td>
+
+            </tr>
+
diff --git a/jsf-demo/archive/standard/web/selectboolean_checkbox_row.jsp b/jsf-demo/archive/standard/web/selectboolean_checkbox_row.jsp
new file mode 100644
index 0000000..5299eca
--- /dev/null
+++ b/jsf-demo/archive/standard/web/selectboolean_checkbox_row.jsp
@@ -0,0 +1,124 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+           <tr>
+
+             <td>
+
+               <h:outputText id="checkbox1Label"
+                     value="checkbox disabled "/>
+
+             </td>
+
+
+             <td>
+
+               <h:selectBooleanCheckbox id="checkbox1" 
+                                 value="#{LoginBean.validUser}"
+                                 disabled="true"
+                                 accesskey="C" 
+                               title="checkbox disabled" />
+
+                                <h:outputText 
+                                      id="checkboxLabel1" 
+                           value="checkbox disabled"/>
+
+             </td>
+
+            </tr>
+
+            <tr>
+
+             <td>
+
+               <h:outputText id="checkbox3LabelModel"
+                     value="checkbox with valueRef "/>
+
+             </td>
+
+
+             <td>
+
+               <h:selectBooleanCheckbox id="checkbox3"
+                                 value="#{LoginBean.validUser}"
+                                 accesskey="C" 
+                               title="checkbox with valueRef " />
+
+                                <h:outputText
+                                      id="checkboxLabelModel"
+                           value="checkbox with valueRef"/>
+
+             </td>
+
+             <td>
+
+                <h:message id="checkbox3Errors"
+                          for="checkbox3" />
+
+              </td
+
+            </tr>
+
+             <tr>
+
+             <td>
+
+               <h:outputText id="checkbox4Label"
+                     value="checkbox with label from JSP"/>
+
+             </td>
+
+
+             <td>
+
+               <h:selectBooleanCheckbox id="checkbox4"
+                                 accesskey="C" 
+                               title="checkbox with label from JSP" />
+
+                   <h:outputText id="checkboxLabelJsp" 
+                               value="checkbox with label from JSP " />
+
+             </td>
+
+            </tr>
diff --git a/jsf-demo/archive/standard/web/selectmany_checkbox_row.jsp b/jsf-demo/archive/standard/web/selectmany_checkbox_row.jsp
new file mode 100644
index 0000000..0963eff
--- /dev/null
+++ b/jsf-demo/archive/standard/web/selectmany_checkbox_row.jsp
@@ -0,0 +1,161 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+					<tr>
+						<td>Multi-select checkbox:</td>
+						<td><h:selectManyCheckbox id="ManyApples3">
+							<f:selectItem itemValue="0" itemLabel="zero" />
+							<f:selectItem itemValue="1" itemLabel="one" />
+							<f:selectItem itemValue="2" itemLabel="two" />
+							<f:selectItem itemValue="3" itemLabel="three" />
+							<f:selectItem itemValue="4" itemLabel="four" />
+							<f:selectItem itemValue="5" itemLabel="five" />
+							<f:selectItem itemValue="6" itemLabel="six" />
+							<f:selectItem itemValue="7" itemLabel="seven" />
+							<f:selectItem itemValue="8" itemLabel="eight" />
+							<f:selectItem itemValue="9" itemLabel="nine" />
+						</h:selectManyCheckbox></td>
+                                                <td><h:message id="Error1" for="ManyApples3"/></td>
+					</tr>
+					<tr>
+						<td>Multi-select checkbox [Vertical]:</td>
+						<td><h:selectManyCheckbox id="ManyApples4" 
+						  layout="pageDirection">
+							<f:selectItem itemValue="0" itemLabel="zero" />
+							<f:selectItem itemValue="1" itemLabel="one" />
+							<f:selectItem itemValue="2" itemLabel="two" />
+							<f:selectItem itemValue="3" itemLabel="three" />
+							<f:selectItem itemValue="4" itemLabel="four" />
+							<f:selectItem itemValue="5" itemLabel="five" />
+							<f:selectItem itemValue="6" itemLabel="six" />
+							<f:selectItem itemValue="7" itemLabel="seven" />
+							<f:selectItem itemValue="8" itemLabel="eight" />
+							<f:selectItem itemValue="9" itemLabel="nine" />
+						</h:selectManyCheckbox></td>
+                                                <td><h:message id="Error2" for="ManyApples4"/></td>
+					</tr>
+					<tr>
+						<td>Multi-select checklistmodel:</td>
+						<td><h:selectManyCheckbox id="checklistmodel"
+							value="#{LoginBean.currentOptions}">
+							<f:selectItems id="checklistmodelitems"
+								value="#{LoginBean.options}" />
+						</h:selectManyCheckbox></td>
+                                                <td><h:message id="Error3" for="checklistmodel"/></td>
+					</tr>
+
+
+					<tr>
+						<td>Multi-select checklistmodel with options of the type java.lang.Long:</td>
+						<td><h:selectManyCheckbox id="checkLonglistmodel"
+							value="#{LoginBean.currentLongOptions}">
+                                                 
+							<f:selectItems id="checkLonglistmodelitems"
+								value="#{LoginBean.longList}" />
+						</h:selectManyCheckbox></td>
+                                                <td><h:message id="Error4" for="checkLonglistmodel"/></td>
+					</tr>
+
+
+<tr>
+
+  <td>
+    <h:outputText             id="checklistmodelGroupLabel"
+                           value="Multi-select checkbox list:"/>
+  </td>
+
+  <td>
+    <h:selectManyCheckbox     id="checklistmodelGroup"
+                           value="#{LoginBean.currentOptions}">
+      <f:selectItems          id="checklistmodelitemsGroup"
+                           value="#{LoginBean.optionsGroup}" />
+    </h:selectManyCheckbox>
+  </td>
+
+  <td>
+    <h:message                id="Error5" for="checklistmodelGroup"/>
+  </td>
+
+</tr>
+
+<tr>
+
+  <td>
+    <h:outputText             id="disabledsCheckboxLabel"
+                           value="Checkboxes with even numbered options disabled"/>
+  </td>
+
+  <td>
+    <h:selectManyCheckbox     id="disabledsCheckbox"
+                           value="#{SelectItemsData.disabledSelected}">
+      <f:selectItems       value="#{SelectItemsData.disableds}"/>
+    </h:selectManyCheckbox>
+  </td>
+
+  <td>
+    <h:message               for="disabledsCheckbox"/>
+  </td>
+
+</tr>
+
+
+<tr>
+
+  <td>
+    <h:outputText             id="nestedsCheckboxLabel"
+                           value="Checkboxes with nested options"/>
+  </td>
+
+  <td>
+    <h:selectManyCheckbox     id="nestedsCheckbox" layout="pageDirection"
+                           value="#{SelectItemsData.nestedSelected}">
+      <f:selectItems       value="#{SelectItemsData.nesteds}"/>
+    </h:selectManyCheckbox>
+  </td>
+
+  <td>
+    <h:message               for="nestedsCheckbox"/>
+  </td>
+
+</tr>
diff --git a/jsf-demo/archive/standard/web/selectmany_listbox_row.jsp b/jsf-demo/archive/standard/web/selectmany_listbox_row.jsp
new file mode 100644
index 0000000..4440838
--- /dev/null
+++ b/jsf-demo/archive/standard/web/selectmany_listbox_row.jsp
@@ -0,0 +1,119 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+				<tr>
+					<td>Multi-select listbox:</td>
+					<td><h:selectManyListbox id="ManyApples2">
+						<f:selectItem itemValue="0" itemLabel="zero" />
+						<f:selectItem itemValue="1" itemLabel="one" />
+						<f:selectItem itemValue="2" itemLabel="two" />
+						<f:selectItem itemValue="3" itemLabel="three" />
+						<f:selectItem itemValue="4" itemLabel="four"  />
+						<f:selectItem itemValue="5" itemLabel="five" />
+						<f:selectItem itemValue="6" itemLabel="six" />
+						<f:selectItem itemValue="7" itemLabel="seven" />
+						<f:selectItem itemValue="8" itemLabel="eight" />
+						<f:selectItem itemValue="9" itemLabel="nine" />
+					</h:selectManyListbox></td>
+				</tr>
+				<tr>
+					<td>Multi-select listmodel:</td>
+					<td><h:selectManyListbox id="listmodel"
+						value="#{LoginBean.currentOptions}">
+						<f:selectItems id="listmodelitems"
+							value="#{LoginBean.options}" />
+					</h:selectManyListbox></td>
+				</tr>
+
+                                <tr>
+					<td>Multi-select listmodel with options of type java.lang.Long:</td>
+					<td><h:selectManyListbox id="longlistmodel"
+						value="#{LoginBean.currentLongOptions}">
+						<f:selectItems id="longlistmodelitems"
+							value="#{LoginBean.longList}" />
+					</h:selectManyListbox></td>
+				</tr>
+
+                                <tr>
+					<td>Multi-select listmodel Group:</td>
+					<td><h:selectManyListbox id="listmodelGroup"
+						value="#{LoginBean.currentOptions}">
+						<f:selectItems id="listmodelitemsGroup"
+							value="#{LoginBean.optionsGroup}" />
+					</h:selectManyListbox></td>
+				</tr>
+
+
+<tr>
+
+  <td>
+    <h:outputText             id="disabledsListboxLabel"
+                           value="Listbox with even numbered options disabled"/>
+  </td>
+
+  <td>
+    <h:selectManyListbox      id="disabledsListbox"
+                           value="#{SelectItemsData.disabledSelected}">
+      <f:selectItems       value="#{SelectItemsData.disableds}"/>
+    </h:selectManyListbox>
+  </td>
+
+</tr>
+
+
+<tr>
+
+  <td>
+    <h:outputText             id="nestedsListboxLabel"
+                           value="Listbox with nested options"/>
+  </td>
+
+  <td>
+    <h:selectManyListbox      id="nestedsListbox"
+                           value="#{SelectItemsData.nestedSelected}">
+      <f:selectItems       value="#{SelectItemsData.nesteds}"/>
+    </h:selectManyListbox>
+  </td>
+
+</tr>
diff --git a/jsf-demo/archive/standard/web/selectmany_menu_row.jsp b/jsf-demo/archive/standard/web/selectmany_menu_row.jsp
new file mode 100644
index 0000000..5c7e627
--- /dev/null
+++ b/jsf-demo/archive/standard/web/selectmany_menu_row.jsp
@@ -0,0 +1,118 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+				<tr>
+					<td>Multi-select menu:</td>
+					<td><h:selectManyMenu id="ManyApples" >
+						<f:selectItem itemValue="0" itemLabel="zero" />
+						<f:selectItem itemValue="1" itemLabel="one" />
+						<f:selectItem itemValue="2" itemLabel="two" />
+						<f:selectItem itemValue="3" itemLabel="three" />
+						<f:selectItem itemValue="4" itemLabel="four"  />
+						<f:selectItem itemValue="5" itemLabel="five" />
+						<f:selectItem itemValue="6" itemLabel="six" />
+						<f:selectItem itemValue="7" itemLabel="seven" />
+						<f:selectItem itemValue="8" itemLabel="eight" />
+						<f:selectItem itemValue="9" itemLabel="nine" />
+					</h:selectManyMenu></td>
+				</tr>
+				<tr>
+					<td>Multi-select menumodel:</td>
+					<td><h:selectManyMenu id="menumodel" >
+						<f:selectItems id="menumodelitems"
+							value="#{LoginBean.options}" />
+					</h:selectManyMenu></td>
+				</tr>
+
+                                <tr>
+					<td>Multi-select menumodel with options of the type java.lang.Long:</td>
+					<td><h:selectManyMenu id="menuLongmodel"
+                                               value="#{LoginBean.currentLongOptions}">
+                                               
+						<f:selectItems id="menumodelonglitems"
+							value="#{LoginBean.longList}" />
+					</h:selectManyMenu></td>
+				</tr>
+
+                                <tr>
+					<td>Multi-select menumodel Group:</td>
+					<td><h:selectManyMenu id="listGroup"
+                                                value="#{LoginBean.currentOptions}">
+						<f:selectItems id="menumodelitemsGroup"
+							value="#{LoginBean.optionsGroup}" />
+					</h:selectManyMenu></td>
+				</tr>
+
+<tr>
+
+  <td>
+    <h:outputText             id="disabledsMenuLabel"
+                           value="Listbox with even numbered options disabled"/>
+  </td>
+
+  <td>
+    <h:selectManyMenu         id="disabledsMenu"
+                           value="#{SelectItemsData.disabledSelected}">
+      <f:selectItems       value="#{SelectItemsData.disableds}"/>
+    </h:selectManyMenu>
+  </td>
+
+</tr>
+
+
+<tr>
+
+  <td>
+    <h:outputText             id="nestedsMenuLabel"
+                           value="Listbox with nested options"/>
+  </td>
+
+  <td>
+    <h:selectManyMenu         id="nestedsMenu"
+                           value="#{SelectItemsData.nestedSelected}">
+      <f:selectItems       value="#{SelectItemsData.nesteds}"/>
+    </h:selectManyMenu>
+  </td>
+
+</tr>
diff --git a/jsf-demo/archive/standard/web/selectmany_nonstring_row.jsp b/jsf-demo/archive/standard/web/selectmany_nonstring_row.jsp
new file mode 100644
index 0000000..a7afb27
--- /dev/null
+++ b/jsf-demo/archive/standard/web/selectmany_nonstring_row.jsp
@@ -0,0 +1,176 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+
+<tr>
+  <td>Multi-select with int[] values</td>
+  <td>
+    <h:selectManyListbox
+                       id="nonstringIntArray"
+                    value="#{SelectManyBean.intValuesArray}">
+      <f:selectItems
+                    value="#{SelectManyBean.intOptions}"/>
+    </h:selectManyListbox>
+  </td>
+  <td>
+    <h:message        for="nonstringIntArray"/>
+  </td>
+</tr>
+
+
+<tr>
+  <td>Multi-select with Integer[] values</td>
+  <td>
+    <h:selectManyListbox
+                       id="nonstringIntegerArray"
+                    value="#{SelectManyBean.integerValuesArray}">
+      <f:selectItems
+                    value="#{SelectManyBean.integerOptions}"/>
+    </h:selectManyListbox>
+  </td>
+  <td>
+    <h:message        for="nonstringIntegerArray"/>
+  </td>
+</tr>
+
+
+<%-- Fails the validate() test for valid values
+<tr>
+  <td>Multi-select with List-of-Integer values</td>
+  <td>
+    <h:selectManyListbox
+                       id="nonstringIntegerList"
+                    value="#{SelectManyBean.integerValuesList}">
+      <f:selectItems
+                    value="#{SelectManyBean.integerOptions}"/>
+    </h:selectManyListbox>
+  </td>
+  <td>
+    <h:message        for="nonstringIntegerList"/>
+  </td>
+</tr>
+--%>
+
+
+<tr>
+  <td>Multi-select with String[] values</td>
+  <td>
+    <h:selectManyListbox
+                       id="nonstringStringArray"
+                    value="#{SelectManyBean.stringValuesArray}">
+      <f:selectItems
+                    value="#{SelectManyBean.stringOptions}"/>
+    </h:selectManyListbox>
+  </td>
+  <td>
+    <h:message        for="nonstringStringArray"/>
+  </td>
+</tr>
+
+
+<tr>
+  <td>Multi-select with List-of-String values</td>
+  <td>
+    <h:selectManyListbox
+                       id="nonstringStringList"
+                    value="#{SelectManyBean.stringValuesList}">
+      <f:selectItems
+                    value="#{SelectManyBean.stringOptions}"/>
+    </h:selectManyListbox>
+  </td>
+  <td>
+    <h:message        for="nonstringStringList"/>
+  </td>
+</tr>
+
+
+<tr>
+  <td>Multi-select with Map values</td>
+  <td>
+    <h:selectManyListbox
+                       id="nonstringStringMap"
+                    value="#{SelectManyBean.selectedMapValues}">
+      <f:selectItems
+                    value="#{SelectManyBean.stringValuesMap}"/>
+    </h:selectManyListbox>
+  </td>
+  <td>
+    <h:message        for="nonstringStringMap"/>
+  </td>
+</tr>
+
+<tr>
+  <td>Multi-select with array of registered object values</td>
+  <td>
+    <h:selectManyListbox
+                       id="registeredArray"
+                    value="#{SelectManyBean.registeredArray}">
+      <f:selectItems
+                    value="#{SelectManyBean.registeredOptions}"/>
+    </h:selectManyListbox>
+  </td>
+  <td>
+    <h:message        for="registeredArray"/>
+  </td>
+</tr>
+
+
+<%-- Fails with conversion errors on form submit
+<tr>
+  <td>Multi-select with array of unregistered object values</td>
+  <td>
+    <h:selectManyListbox
+                       id="unregisteredArray"
+                    value="#{SelectManyBean.unregisteredArray}">
+      <f:selectItems
+                    value="#{SelectManyBean.unregisteredOptions}"/>
+    </h:selectManyListbox>
+  </td>
+  <td>
+    <h:message        for="unregisteredArray"/>
+  </td>
+</tr>
+--%>
+
+
diff --git a/jsf-demo/archive/standard/web/selectone_listbox_row.jsp b/jsf-demo/archive/standard/web/selectone_listbox_row.jsp
new file mode 100644
index 0000000..49ac995
--- /dev/null
+++ b/jsf-demo/archive/standard/web/selectone_listbox_row.jsp
@@ -0,0 +1,156 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+           <tr>
+
+             <td>
+                 <h:outputText id="quantityLabel" value="Option list from JSP" />
+
+             </td>
+
+
+             <td>
+<%-- PENDING: accesskey not recognized
+                 <h:selectOneListbox id="appleQuantity" 
+                     title="Select Quantity"
+                     accesskey="N" tabindex="20" >
+--%>
+                 <h:selectOneListbox id="appleQuantity" 
+                     title="Select Quantity"
+                     tabindex="20" >
+
+                <f:selectItem  itemDisabled="true" itemValue="0" itemLabel="0"/>
+                <f:selectItem  itemValue="1" itemLabel="1" />
+                <f:selectItem  itemValue="2" itemLabel="2" />
+                <f:selectItem  itemValue="3" itemLabel="3" />
+                <f:selectItem  itemValue="4" itemLabel="4" />
+                <f:selectItem  itemValue="5" itemLabel="5" />
+                <f:selectItem  itemValue="6" itemLabel="6" />
+                <f:selectItem  itemValue="7" itemLabel="7" />
+                <f:selectItem  itemValue="8" itemLabel="8" />
+                <f:selectItem  itemValue="9" itemLabel="9" />
+
+              </h:selectOneListbox>
+
+             </td>
+
+            </tr>
+
+            <tr>
+
+             <td>
+                 <h:outputText id="optionLabel"
+                   value="Listbox with Kinds of Beans from Model Object" />
+
+             </td>
+
+
+             <td>
+                <h:selectOneListbox id="Listbox"
+                             value="#{LoginBean.currentOption}">
+
+                <f:selectItems id="listboxOptions"
+                                   value="#{LoginBean.options}"/>
+
+              </h:selectOneListbox>
+
+             </td>
+
+            </tr>
+
+            <tr>
+
+             <td>
+                 <h:outputText id="longoptionLabel"
+                   value="Listbox with options of the type java.lang.Long" />
+
+             </td>
+
+
+             <td>
+                <h:selectOneListbox id="longListbox" 
+                             value="#{LoginBean.currentLongOption}">
+                    
+                <f:selectItems id="listboxLongOptions"
+                                   value="#{LoginBean.longList}"/>
+
+              </h:selectOneListbox>
+
+             </td>
+
+            </tr>
+
+
+<tr>
+
+  <td>
+    <h:outputText             id="disabledsListboxLabel"
+                           value="Listbox with even numbered options disabled"/>
+  </td>
+
+  <td>
+    <h:selectOneListbox       id="disabledsListbox"
+                           value="#{SelectItemsData.disabled}">
+      <f:selectItems       value="#{SelectItemsData.disableds}"/>
+    </h:selectOneListbox>
+  </td>
+
+</tr>
+
+
+<tr>
+
+  <td>
+    <h:outputText             id="nestedsListboxLabel"
+                           value="Listbox with nested options"/>
+  </td>
+
+  <td>
+    <h:selectOneListbox       id="nestedsListbox"
+                           value="#{SelectItemsData.nested}">
+      <f:selectItems       value="#{SelectItemsData.nesteds}"/>
+    </h:selectOneListbox>
+  </td>
+
+</tr>
diff --git a/jsf-demo/archive/standard/web/selectone_menu_row.jsp b/jsf-demo/archive/standard/web/selectone_menu_row.jsp
new file mode 100644
index 0000000..5dd856d
--- /dev/null
+++ b/jsf-demo/archive/standard/web/selectone_menu_row.jsp
@@ -0,0 +1,102 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+				<tr>
+					<td>Single-select menu:</td>
+					<td><h:selectOneMenu id="HockeyHeroes">
+						<f:selectItem itemValue="10" itemLabel="Guy Lafleur" />
+						<f:selectItem itemValue="99" itemLabel="Wayne Gretzky" />
+						<f:selectItem itemValue="4" itemLabel="Bobby Orr"  />
+						<f:selectItem itemValue="2" itemLabel="Brad Park" />
+						<f:selectItem itemValue="9" itemLabel="Gordie Howe" />
+					</h:selectOneMenu></td>
+				</tr>
+				<tr>
+					<td>Single-select menu - modelType String:</td>
+					<td><h:selectOneMenu id="oneMenumodel">
+						<f:selectItems id="oneMenumodelItems"
+							value="#{LoginBean.options}" />
+					</h:selectOneMenu></td>
+				</tr>
+
+                                <tr>
+					<td>Single-select menumodel - modelType Boolean:</td>
+					<td><h:selectOneMenu id="oneLongMenumodel"  
+                                             value="#{LoginBean.currentBooleanOption}">
+						<f:selectItems id="oneLongMenumodelItems"
+							value="#{LoginBean.booleanList}" />
+					</h:selectOneMenu></td>
+				</tr>
+<tr>
+
+  <td>
+    <h:outputText             id="disabledsMenuLabel"
+                           value="Menu with even numbered options disabled"/>
+  </td>
+
+  <td>
+    <h:selectOneMenu          id="disabledsMenu"
+                           value="#{SelectItemsData.disabled}">
+      <f:selectItems       value="#{SelectItemsData.disableds}"/>
+    </h:selectOneMenu>
+  </td>
+
+</tr>
+
+
+<tr>
+
+  <td>
+    <h:outputText             id="nestedsMenuLabel"
+                           value="Menu with nested options"/>
+  </td>
+
+  <td>
+    <h:selectOneMenu          id="nestedsMenu"
+                           value="#{SelectItemsData.nested}">
+      <f:selectItems       value="#{SelectItemsData.nesteds}"/>
+    </h:selectOneMenu>
+  </td>
+
+</tr>
diff --git a/jsf-demo/archive/standard/web/selectone_radio_row.jsp b/jsf-demo/archive/standard/web/selectone_radio_row.jsp
new file mode 100644
index 0000000..ca92379
--- /dev/null
+++ b/jsf-demo/archive/standard/web/selectone_radio_row.jsp
@@ -0,0 +1,189 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+           <tr>
+
+             <td>
+
+                 <h:outputText id="shipmentLabel" 
+                     value="Radio with hard-coded options laid out horizontally" />
+             </td>
+
+
+             <td>
+                 <h:selectOneRadio id="shipType" layout="lineDirection" 
+                    value="nextDay" tabindex="30" title="shipType">
+                <f:selectItem itemValue="nextDay" itemLabel="Next Day"/>
+                <f:selectItem itemValue="nextWeek" itemLabel="Next Week" />
+                <f:selectItem itemValue="nextMonth" itemLabel="Next Month"/>
+                </h:selectOneRadio>
+
+             </td>
+
+            </tr>
+
+            <tr>
+
+             <td>
+                 <h:outputText id="verticalLabel" 
+                     value="Radio with hard-coded options laid out vertically" />
+
+             </td>
+
+
+             <td>
+                <h:selectOneRadio id="verticalRadio" layout="pageDirection" border="1" >
+                  <f:selectItem itemValue="nextDay" itemLabel="Next Day"/>
+                  <f:selectItem itemValue="nextWeek" itemLabel="Next Week"  />
+                  <f:selectItem itemValue="nextMonth" itemLabel="Next Month" />
+
+                </h:selectOneRadio>
+
+             </td>
+
+            </tr>
+
+             <tr>
+
+             <td>
+                 <h:outputText id="modelLabel" value="Radio with options from model " />
+
+             </td>
+
+
+             <td>
+                 <h:selectOneRadio id="radioFromModel"
+                       value="#{LoginBean.currentOption}"
+                       title="options come from model">
+
+                 <f:selectItems id="radioOptions" value="#{LoginBean.options}"/>
+                </h:selectOneRadio>
+
+             </td>
+
+            </tr>
+
+             <tr>
+
+             <td>
+                 <h:outputText id="modelLongLabel" value="Radio with options 
+                     from model of type java.lang.Long" />
+
+             </td>
+
+
+             <td>
+                 <h:selectOneRadio id="radioLongOptions"
+                       value="#{LoginBean.currentLongOption}"
+                       title="options come from model">
+                 
+                <f:selectItems id="longItemOptions" value="#{LoginBean.longList}"/>
+                </h:selectOneRadio>
+
+             </td>
+
+            </tr>
+
+            <tr>
+	         <td>Single-select radiomodel - modelType Boolean:</td>
+	         <td><h:selectOneRadio id="oneLongradiomodel"
+                            value="#{LoginBean.currentBooleanOption}">
+                           
+		         <f:selectItems id="oneRadiomodelitems"
+				value="#{LoginBean.booleanList}" />
+		    </h:selectOneRadio></td>
+	   </tr>
+
+           <tr>
+
+             <td>
+                 <h:outputText value="Radio with optionGroups from model " />
+
+             </td>
+
+
+             <td>
+                 <h:selectOneRadio id="radioFromModelGroup"
+                       value="#{LoginBean.currentOption}"
+                       title="options come from model">
+
+                 <f:selectItems id="radioOptionsGroup" value="#{LoginBean.optionsGroup}"/>
+                </h:selectOneRadio>
+
+             </td>
+
+            </tr>
+
+<tr>
+
+  <td>
+    <h:outputText             id="disabledsRadioLabel"
+                           value="Radio Buttons with even numbered options disabled"/>
+  </td>
+
+  <td>
+    <h:selectOneRadio         id="disabledsRadio"
+                           value="#{SelectItemsData.disabled}">
+      <f:selectItems       value="#{SelectItemsData.disableds}"/>
+    </h:selectOneRadio>
+  </td>
+
+</tr>
+
+
+<tr>
+
+  <td>
+    <h:outputText             id="nestedsRadioLabel" 
+                           value="Radio Buttons with nested options"/>
+  </td>
+
+  <td>
+    <h:selectOneRadio         id="nestedsRadio" layout="pageDirection"
+                           value="#{SelectItemsData.nested}">
+      <f:selectItems       value="#{SelectItemsData.nesteds}"/>
+    </h:selectOneRadio>
+  </td>
+
+</tr>
diff --git a/jsf-demo/archive/standard/web/stylesheet.css b/jsf-demo/archive/standard/web/stylesheet.css
new file mode 100644
index 0000000..0f622d3
--- /dev/null
+++ b/jsf-demo/archive/standard/web/stylesheet.css
@@ -0,0 +1,155 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+.form-background { 
+  background-color: #7171A5;
+  border: 5px outset #71A5A5;
+  border-collapse: collapse;
+  font-family: sans-serif;
+  font-size: 14pt;
+  padding: 10px;
+}
+
+.form-footer { 
+  color: #FFFFFF;
+  font-size: 75%;
+  text-align: center;
+}
+
+.form-header { 
+  background-color: #A5A5A5;
+  color: #FFFFFF;
+  font-weight: bold;
+  text-align: center;
+}
+
+.form-prompt {
+  color: #FFFFFF;
+  margin: 3px 5px 3px 15px;
+  text-align: right;
+}
+
+.form-field {
+  text-align: left;
+}
+
+.form-row-even { 
+}
+
+.form-row-odd { 
+  background-color: #717171;
+}
+
+
+.list-background { 
+  background-color: #7171A5;
+  border: 5px outset #71A5A5;
+  border-collapse: collapse;
+  font-family: sans-serif;
+  font-size: 14pt;
+  padding: 10px;
+  width: 100%;
+}
+
+.list-column-center { 
+  text-align: center;
+  width: 15%;
+}
+
+.list-column-left {
+  text-align: left;
+  width: 70%;
+}
+
+.list-column-right {
+  text-align: right;
+  width: 15%;
+}
+
+.list-footer { 
+  background-color: #A5A5A5;
+  color: #FFFFFF;
+  font-weight: bold;
+  text-align: center;
+}
+
+.list-header { 
+  background-color: #A5A5A5;
+  color: #FFFFFF;
+  font-weight: bold;
+  text-align: center;
+}
+
+.list-row-even { 
+}
+
+.list-row-odd { 
+  background-color: #717171;
+}
+
+
+.tabbed-pane { 
+  background-color: #999999;
+  font-family: sans-serif;
+  font-size: 12pt;
+  padding: 5px;
+  width: 100%;
+}
+
+.tabbed-content { 
+  background-color: #CCCCCC;
+  color: #000000;
+}
+
+.tabbed-selected {
+  background-color: #CCCCCC;
+  border: 2px 5px 0px 5px;
+  color: #FFFFFF;
+  font-weight: bold;
+  text-align: center;
+}
+
+.tabbed-unselected {
+  background-color: #9999CC;
+  border: 2px 5px 0px 5px;
+  color: #000000;
+  text-align: center;
+}
+
diff --git a/jsf-demo/archive/standard/web/table_header.jsp b/jsf-demo/archive/standard/web/table_header.jsp
new file mode 100644
index 0000000..e523bfc
--- /dev/null
+++ b/jsf-demo/archive/standard/web/table_header.jsp
@@ -0,0 +1,68 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<tr>
+
+  <th>
+
+    <h:outputText id="column1Header" 
+                   value="Use Case Description"/>
+
+  </th>
+
+  <th>
+
+    <h:outputText id="column2Header" 
+                   value="Rendered Content"/>
+
+  </th>
+
+  <th>
+
+    <h:outputText id="column3Header" 
+                   value="Validation/Conversion Errors"/>
+
+  </th>
+
+</tr>
diff --git a/jsf-demo/archive/webtier-sample/README b/jsf-demo/archive/webtier-sample/README
new file mode 100644
index 0000000..3179ef4
--- /dev/null
+++ b/jsf-demo/archive/webtier-sample/README
@@ -0,0 +1,21 @@
+
+   BUIDLING
+   -------------------
+      - See https://javaserverfaces.dev.java.net/faq.html#Code_build
+
+   DEPLOYING
+   -------------------
+       - If using Glassfish:
+           Copy jsf-demo/webtier-sample/build/webtier-sample.war to
+           the domains/domain1/autodeploy directory.
+       - If using another container:
+           See the container's documentation.
+
+   RUNNING
+   -------------------
+       - Issue a request: http://<hostname>:<port>/webtier-sample
+         where <hostname> is the host on which the container is running
+         and <port> is the port number on which the container is listening
+         for HTTP requests.
+
+
diff --git a/jsf-demo/archive/webtier-sample/build.xml b/jsf-demo/archive/webtier-sample/build.xml
new file mode 100644
index 0000000..5367a4a
--- /dev/null
+++ b/jsf-demo/archive/webtier-sample/build.xml
@@ -0,0 +1,132 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project name="webtier-sample" default="build" basedir=".">
+
+    <property file="${user.home}/build.properties"/>
+    <property file="../../../build.properties"/>
+    <import file="${jsf.build.home}/common/ant/common.xml"/>
+
+    <!-- Configure the context path for this application -->
+    <property name="context.path" value="/webtier-sample"/>
+    <property name="example" value="webtier-sample"/>
+    <property name="build" value="${basedir}/build"/>
+
+    <path id="classpath">
+        <pathelement location="${javax.faces-api.jar}"/>
+        <pathelement location="${javax.faces.jar}"/>
+        <pathelement location="${build}/${example}/WEB-INF/classes"/>
+        <path refid="compile.classpath"/>
+    </path>
+
+    <target name="init" depends="check.changes">
+        <tstamp/>
+    </target>
+
+    <target name="check.changes">
+        <uptodate property="skip.build"
+                  targetfile="${build}/last-build">
+            <srcfiles dir="${basedir}">
+                <include name="src/**/*.*"/>
+                <include name="conf/**/*.*"/>
+                <include name="web/**/*.*"/>
+            </srcfiles>
+        </uptodate>
+    </target>
+
+    <target name="clean">
+        <delete dir="${build}"/>
+        <delete dir="${context.path}"/>
+    </target>
+
+
+    <target name="prepare" depends="init"
+            description="Create build directories.">
+        <mkdir dir="${build}/${example}"/>
+        <mkdir dir="${build}/${example}/WEB-INF"/>
+        <mkdir dir="${build}/${example}/WEB-INF/classes"/>
+        <mkdir dir="${build}/${example}/WEB-INF/lib"/>
+    </target>
+
+
+    <target name="build" unless="skip.build" depends="prepare"
+            description="Compile Java files and copy static files.">
+        <touch file="${build}/last-build"/>
+         <jsf.javac srcdir="src"
+                   destdir="${build}/${example}/WEB-INF/classes">
+            <classpath>
+                <path refid="classpath"/>
+            </classpath>
+        </jsf.javac>
+        <copy todir="${build}/${example}/WEB-INF">
+            <fileset dir="web/WEB-INF">
+                <include name="**/*"/>
+            </fileset>
+        </copy>
+
+        <copy todir="${build}/${example}/">
+            <fileset dir="web">
+                <include name="*.html"/>
+                <include name="*.gif"/>
+                <include name="*.jpg"/>
+                <include name="*.jsp"/>
+                <include name="*.xml"/>
+                <include name="*.txt"/>
+            </fileset>
+        </copy>
+        <copy todir="${build}/${example}/WEB-INF/classes/${example}">
+            <fileset dir="web">
+                <include name="*properties"/>
+            </fileset>
+        </copy>
+
+        <jsf.war basedir="${build}"
+                 archive-name="${example}"
+                 webxml="${build}/${example}/WEB-INF/web.xml">
+            <archive-elements>
+                <zipfileset dir="${build}/${example}"/>
+            </archive-elements>
+        </jsf.war>
+    </target>
+
+</project>
+
diff --git a/jsf-demo/archive/webtier-sample/src/java/webtiersample/BookBean.java b/jsf-demo/archive/webtier-sample/src/java/webtiersample/BookBean.java
new file mode 100644
index 0000000..5193a04
--- /dev/null
+++ b/jsf-demo/archive/webtier-sample/src/java/webtiersample/BookBean.java
@@ -0,0 +1,98 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package webtiersample;
+
+import javax.faces.application.FacesMessage;
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.validator.ValidatorException;
+
+
+public class BookBean {
+
+    private String title;
+    private String author;
+    private String isbn;
+    private double price;
+    private int quantity;
+
+    public BookBean(String title, String author, String isbn, double price) {
+        this.title = title;
+        this.author = author;
+        this.isbn = isbn;
+        this.price = price;
+    }
+
+    public String getTitle() {
+        return title;
+    }
+
+    public String getAuthor() {
+        return author;
+    }
+
+    public String getIsbn() {
+        return isbn;
+    }
+
+    public double getPrice() {
+        return price;
+    }
+
+    public int getQuantity() {
+        return quantity;
+    }
+
+    public void setQuantity(int quantity) {
+        this.quantity = quantity;
+    }
+
+    public void validateQuantity(FacesContext context,
+                                 UIComponent component,
+                                 Object value) {        
+        int q = (Integer) value;
+        if (q < 0) {
+            throw new ValidatorException(
+                new FacesMessage("Quantity must be zero or greater."));                   
+        }
+    }
+}
+
diff --git a/jsf-demo/archive/webtier-sample/src/java/webtiersample/BooksBean.java b/jsf-demo/archive/webtier-sample/src/java/webtiersample/BooksBean.java
new file mode 100644
index 0000000..dd4b4ac
--- /dev/null
+++ b/jsf-demo/archive/webtier-sample/src/java/webtiersample/BooksBean.java
@@ -0,0 +1,83 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package webtiersample;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+
+public class BooksBean {
+
+    private List<BookBean> books;    
+
+
+    public BooksBean() {
+        books = new ArrayList<BookBean>();
+        books.add(new BookBean("Harry Potter and the Sorcerer's Stone",
+                                "J.K. Rowling",
+                                "10009001",
+                                12.99));
+        books.add(new BookBean("Dune",
+                                "Frank Herbert",
+                                "98111012",
+                                15.99));
+        books.add(new BookBean("The Hitchhiker's Guide to the Galaxy",
+                                "Douglas Adams",
+                                "11001199",
+                                13.99));
+    }    
+
+
+    public List<BookBean> getBooks() {
+        return books;
+    }    
+    
+    public double getTotalCost() {
+        double cost = 0.0;
+        for (Iterator<BookBean> i = books.iterator(); i.hasNext(); ) {
+            BookBean book = i.next();
+            cost += (book.getQuantity() * book.getPrice());     
+        }
+        
+        return cost;
+    }      
+}
diff --git a/jsf-demo/archive/webtier-sample/src/java/webtiersample/ColorELResolver.java b/jsf-demo/archive/webtier-sample/src/java/webtiersample/ColorELResolver.java
new file mode 100644
index 0000000..cc8f597
--- /dev/null
+++ b/jsf-demo/archive/webtier-sample/src/java/webtiersample/ColorELResolver.java
@@ -0,0 +1,239 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ *
+ *
+ * This file incorporates work covered by the following copyright and
+ * permission notice:
+ *
+ * Copyright 2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package webtiersample;
+
+import javax.el.ELContext;
+import javax.el.ELException;
+import javax.el.ELResolver;
+import javax.el.PropertyNotWritableException;
+
+import java.beans.FeatureDescriptor;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Iterator;
+import java.util.List;
+
+/**
+ * Introduces a new ${Color} implicit object and resolves properties
+ * on that object.
+ * 
+ * <p>Features include:
+ * <ul>
+ *   <li>Look up common colors by name, e.g. ${Color.MintCream}</li>
+ *   <li>Look up colors by hex, e.g. ${Color["#f0f0f0"]}</li>   
+ *   <li>Retrieve brigter and darker colors, e.g. 
+ *       ${Color.AliceBlue.darker.hex}</li>
+ * </ul>
+ * </p>
+ * 
+ * @author Mark Roth
+ */
+public class ColorELResolver 
+    extends ELResolver
+{
+    public Object getValue(ELContext context, Object base, Object property)
+        throws ELException
+    {
+        if(context == null) throw new NullPointerException();
+        
+        Object result = null;
+
+        if (base == null) {
+            // Resolving first variable (e.g. ${Color}).  
+            // We only handle "Color"
+            String propertyName = (String) property;
+            if ("Color".equals(propertyName)) {
+                result = new ColorImplicitObject();
+                context.setPropertyResolved(true);
+            }
+        } else if (base instanceof ColorImplicitObject) {
+            // Resolving a property on ${Color}
+
+            String colorName = property.toString();
+
+            if (colorName.startsWith("#")) {
+                // Handle ${Color['#f0f0f0']}
+                result = ColorImplicitObject.fromHex(colorName);
+                context.setPropertyResolved(true);
+            } else {
+                // Handle ${Color.MintCream}
+                result = ColorImplicitObject.fromName(colorName);
+                context.setPropertyResolved(true);
+            }
+
+        } 
+        
+        return result;
+    }
+
+    public Class getType(ELContext context, Object base, Object property)
+        throws ELException
+    {
+        Class result = null;
+        
+        if(context == null) throw new NullPointerException();
+        
+        if(base == null) {
+            // We don't handle setting top-level implicit objects.
+        }
+        else if(base instanceof ColorImplicitObject
+                  || base instanceof ColorImplicitObject.ColorRGB) {
+            // None of the properties of the ${Color} implicit object 
+            // or ColorRGB are ever writable 
+            context.setPropertyResolved(true);
+        }
+       
+        // The rest is handled by BeanELResolver, etc.
+        
+        return result;
+    }
+
+    public void setValue(ELContext context, Object base, Object property,
+                         Object value)
+        throws ELException {
+        if (context == null) {
+            throw new NullPointerException();
+        }
+
+        if (base == null && "Color".equals(property)) {
+            throw new PropertyNotWritableException();
+        } else if (base instanceof ColorImplicitObject
+                     || base instanceof ColorImplicitObject.ColorRGB) {
+            // None of the properties of the ${Color} implicit object 
+            // or ColorRGB are ever writable.
+            throw new PropertyNotWritableException();
+        } 
+    }
+
+    public boolean isReadOnly(ELContext context, Object base, 
+        Object property)
+        throws ELException
+    {
+        boolean result = true;
+
+        if (context == null) {
+            throw new NullPointerException();
+        }
+
+        if (base == null) {
+            // We don't handle setting top-level implicit objects.
+        } else if (base instanceof ColorImplicitObject
+                     || base instanceof ColorImplicitObject.ColorRGB) {
+            // None of the properties of the ${Color} implicit object 
+            // or ColorRGB are ever writable.
+            result = true;
+            context.setPropertyResolved(true);
+        } 
+
+        return result;
+    }
+
+    public Iterator getFeatureDescriptors(ELContext context, Object base) {
+        Iterator result = null;
+
+        if (context == null) {
+            throw new NullPointerException();
+        }
+
+        if (base == null) {
+            FeatureDescriptor desc = new FeatureDescriptor();
+            desc.setName("Color");
+            desc.setDisplayName("Color");            
+            desc.setValue(ELResolver.TYPE, ColorImplicitObject.class);
+            desc.setValue(ELResolver.RESOLVABLE_AT_DESIGN_TIME, false);
+            result = Arrays.asList(new FeatureDescriptor[] { desc }).iterator();
+        } else if (base instanceof ColorImplicitObject) {
+            // Return all color names
+            List<FeatureDescriptor> descList = 
+                new ArrayList<FeatureDescriptor>();
+            for (Iterator<String> i = ColorImplicitObject.colorNameIterator();
+                 i.hasNext(); ) {
+                String colorName = i.next();
+                FeatureDescriptor desc = new FeatureDescriptor();
+                desc.setName(colorName);
+                desc.setDisplayName(colorName);
+                desc.setValue(ELResolver.TYPE, String.class);
+                desc.setValue(ELResolver.RESOLVABLE_AT_DESIGN_TIME, false);
+                descList.add(desc);
+            }
+            result = descList.iterator();          
+        } 
+
+        // BeanELResolver will add to this iterator with the bean properties.
+
+        return result;
+    }
+
+    public Class getCommonPropertyType(ELContext context,
+                                                Object base)
+    {
+        Class result = null;
+
+        if (base == null) {
+            // Resolving first variable (e.g. ${Color}).  
+            // We only handle "Color"
+            result = String.class;
+        } else if (base instanceof ColorImplicitObject) {
+            // We handle either integers or strings, so return Object
+            result = Object.class;
+        } 
+
+        return result;
+    }
+}
diff --git a/jsf-demo/archive/webtier-sample/src/java/webtiersample/ColorImplicitObject.java b/jsf-demo/archive/webtier-sample/src/java/webtiersample/ColorImplicitObject.java
new file mode 100644
index 0000000..7517578
--- /dev/null
+++ b/jsf-demo/archive/webtier-sample/src/java/webtiersample/ColorImplicitObject.java
@@ -0,0 +1,231 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ *
+ *
+ * This file incorporates work covered by the following copyright and
+ * permission notice:
+ *
+ * Copyright 2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package webtiersample;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.StringTokenizer;
+
+/**
+ * Implicit object that ${Color} resolves to.
+ *
+ * @author Mark Roth
+ */
+public class ColorImplicitObject {
+
+    /**
+     * Set of colors by name
+     */
+    private static HashMap<String,ColorRGB> colorNames = null;
+
+    /**
+     * Returns a color from an HTML-style hex String, e.g. #f0f0f0
+     */
+    public static ColorRGB fromHex(String hex) {
+        return fromColor(java.awt.Color.decode(hex));
+    }
+
+    /**
+     * Returns a color from a java.awt.Color object.
+     */
+    public static ColorRGB fromColor(java.awt.Color color) {
+        return new ColorRGB(color.getRed(), color.getGreen(), color.getBlue());
+    }
+
+    /**
+     * Returns a color from a name.  Uses the resource rgb.txt to load color
+     * names.
+     */
+    public static ColorRGB fromName(String name) {
+        if (colorNames == null) {
+            loadColorNames();
+        }
+        return colorNames.get(name);
+    }
+
+    public String toString() {
+        return "Color Implicit Object";
+    }
+
+    /**
+     * Package-scope method to get list of all color names
+     */
+    static Iterator<String> colorNameIterator() {
+        if (colorNames == null) {
+            loadColorNames();
+        }
+        return colorNames.keySet().iterator();
+    }
+
+    /**
+     * Loads colors from resource rgb.txt and converts them to instances of
+     * ColorRGB.
+     */
+    private synchronized static void loadColorNames() {
+        if (colorNames == null) {
+            colorNames = new HashMap<String, ColorRGB>();
+            try {
+                BufferedReader in = new BufferedReader(new InputStreamReader(
+                    ColorImplicitObject.class.getResourceAsStream(
+                        "/webtiersample/rgb.txt")));
+                String line;
+                while ((line = in.readLine()) != null) {
+                    if (!line.startsWith("!")) {
+                        String colorText = line.substring(0, 12);
+                        String colorName = line.substring(12).trim();
+                        StringTokenizer st = new StringTokenizer(
+                            colorText, " ");
+                        int red = Integer.parseInt(st.nextToken().trim());
+                        int green = Integer.parseInt(st.nextToken().trim());
+                        int blue = Integer.parseInt(st.nextToken().trim());
+                        colorNames.put(colorName, new ColorRGB(red, green,
+                                                               blue));
+                    }
+                }
+                in.close();
+            }
+            catch (IOException e) {
+                throw new RuntimeException("Could not load rgb.txt", e);
+            }
+        }
+    }    
+
+    public static class ColorRGB {
+        
+        private int red;
+        private int green;
+        private int blue;
+
+        public ColorRGB(int red, int green, int blue) {
+           
+            // Handle low or high values robustly.
+            if (red < 0) {
+                red = 0;
+            }
+            if (red > 255) {
+                red = 255;
+            }
+            this.red = red;
+            
+            if (green < 0) {
+                green = 0;
+            }
+            if (green > 255) {
+                green = 255;
+            }
+            this.green = green;
+            
+            if (blue < 0) {
+                blue = 0;
+            }
+            if (blue > 255) {
+                blue = 255;
+            }
+            this.blue = blue;                        
+        }
+
+        public int getRed() {
+            return red;
+        }
+       
+        public int getGreen() {
+            return green;
+        }
+       
+        public int getBlue() {
+            return blue;
+        }
+       
+        public java.awt.Color getColor() {
+            return new java.awt.Color(red, green, blue);
+        }
+
+        public ColorRGB getDarker() {
+            java.awt.Color darkerColor = getColor().darker();
+            return fromColor(darkerColor);
+        }
+
+        public ColorRGB getBrighter() {
+            java.awt.Color brighterColor = getColor().brighter();
+            return fromColor(brighterColor);
+        }
+
+        public String getHex() {
+            return "#" + toHex(getRed()) + toHex(green) +
+                   toHex(blue);
+        }
+
+        private String toHex(int i) {
+            String result;
+            if (i < 16) {
+                result = "0" + Integer.toHexString(i);
+            } else {
+                result = Integer.toHexString(i);
+            }
+            return result;
+        }
+
+        public String toString() {
+            return "Color(" + red + ", " + green + ", " + blue + ')';
+        }
+    }
+}
diff --git a/jsf-demo/archive/webtier-sample/src/java/webtiersample/InstallColorListener.java b/jsf-demo/archive/webtier-sample/src/java/webtiersample/InstallColorListener.java
new file mode 100644
index 0000000..1f05887
--- /dev/null
+++ b/jsf-demo/archive/webtier-sample/src/java/webtiersample/InstallColorListener.java
@@ -0,0 +1,89 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ *
+ *
+ * This file incorporates work covered by the following copyright and
+ * permission notice:
+ *
+ * Copyright 2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package webtiersample;
+
+import javax.servlet.ServletContext;
+import javax.servlet.ServletContextEvent;
+import javax.servlet.ServletContextListener;
+import javax.servlet.jsp.JspApplicationContext;
+import javax.servlet.jsp.JspFactory;
+
+/**
+ * This <code>ServletContextListener</code> will install the 
+ * {@link ColorELResolver}.
+ * 
+ * @author Mark Roth
+ */
+public class InstallColorListener implements ServletContextListener {
+    
+    public void contextInitialized(ServletContextEvent evt) {
+        
+        ServletContext context = evt.getServletContext();
+                      
+        // Register the ColorELResolver with the JspApplicationContext.
+        JspApplicationContext jspContext =
+            JspFactory.getDefaultFactory().getJspApplicationContext(context);
+        jspContext.addELResolver(new ColorELResolver());                
+
+    }
+
+    public void contextDestroyed(ServletContextEvent evt) {
+    }
+    
+}
diff --git a/jsf-demo/archive/webtier-sample/web/WEB-INF/classes/webtiersample/rgb.txt b/jsf-demo/archive/webtier-sample/web/WEB-INF/classes/webtiersample/rgb.txt
new file mode 100644
index 0000000..62eb896
--- /dev/null
+++ b/jsf-demo/archive/webtier-sample/web/WEB-INF/classes/webtiersample/rgb.txt
@@ -0,0 +1,753 @@
+! $Xorg: rgb.txt,v 1.3 2000/08/17 19:54:00 cpqbld Exp $
+255 250 250		snow
+248 248 255		ghost white
+248 248 255		GhostWhite
+245 245 245		white smoke
+245 245 245		WhiteSmoke
+220 220 220		gainsboro
+255 250 240		floral white
+255 250 240		FloralWhite
+253 245 230		old lace
+253 245 230		OldLace
+250 240 230		linen
+250 235 215		antique white
+250 235 215		AntiqueWhite
+255 239 213		papaya whip
+255 239 213		PapayaWhip
+255 235 205		blanched almond
+255 235 205		BlanchedAlmond
+255 228 196		bisque
+255 218 185		peach puff
+255 218 185		PeachPuff
+255 222 173		navajo white
+255 222 173		NavajoWhite
+255 228 181		moccasin
+255 248 220		cornsilk
+255 255 240		ivory
+255 250 205		lemon chiffon
+255 250 205		LemonChiffon
+255 245 238		seashell
+240 255 240		honeydew
+245 255 250		mint cream
+245 255 250		MintCream
+240 255 255		azure
+240 248 255		alice blue
+240 248 255		AliceBlue
+230 230 250		lavender
+255 240 245		lavender blush
+255 240 245		LavenderBlush
+255 228 225		misty rose
+255 228 225		MistyRose
+255 255 255		white
+  0   0   0		black
+ 47  79  79		dark slate gray
+ 47  79  79		DarkSlateGray
+ 47  79  79		dark slate grey
+ 47  79  79		DarkSlateGrey
+105 105 105		dim gray
+105 105 105		DimGray
+105 105 105		dim grey
+105 105 105		DimGrey
+112 128 144		slate gray
+112 128 144		SlateGray
+112 128 144		slate grey
+112 128 144		SlateGrey
+119 136 153		light slate gray
+119 136 153		LightSlateGray
+119 136 153		light slate grey
+119 136 153		LightSlateGrey
+190 190 190		gray
+190 190 190		grey
+211 211 211		light grey
+211 211 211		LightGrey
+211 211 211		light gray
+211 211 211		LightGray
+ 25  25 112		midnight blue
+ 25  25 112		MidnightBlue
+  0   0 128		navy
+  0   0 128		navy blue
+  0   0 128		NavyBlue
+100 149 237		cornflower blue
+100 149 237		CornflowerBlue
+ 72  61 139		dark slate blue
+ 72  61 139		DarkSlateBlue
+106  90 205		slate blue
+106  90 205		SlateBlue
+123 104 238		medium slate blue
+123 104 238		MediumSlateBlue
+132 112 255		light slate blue
+132 112 255		LightSlateBlue
+  0   0 205		medium blue
+  0   0 205		MediumBlue
+ 65 105 225		royal blue
+ 65 105 225		RoyalBlue
+  0   0 255		blue
+ 30 144 255		dodger blue
+ 30 144 255		DodgerBlue
+  0 191 255		deep sky blue
+  0 191 255		DeepSkyBlue
+135 206 235		sky blue
+135 206 235		SkyBlue
+135 206 250		light sky blue
+135 206 250		LightSkyBlue
+ 70 130 180		steel blue
+ 70 130 180		SteelBlue
+176 196 222		light steel blue
+176 196 222		LightSteelBlue
+173 216 230		light blue
+173 216 230		LightBlue
+176 224 230		powder blue
+176 224 230		PowderBlue
+175 238 238		pale turquoise
+175 238 238		PaleTurquoise
+  0 206 209		dark turquoise
+  0 206 209		DarkTurquoise
+ 72 209 204		medium turquoise
+ 72 209 204		MediumTurquoise
+ 64 224 208		turquoise
+  0 255 255		cyan
+224 255 255		light cyan
+224 255 255		LightCyan
+ 95 158 160		cadet blue
+ 95 158 160		CadetBlue
+102 205 170		medium aquamarine
+102 205 170		MediumAquamarine
+127 255 212		aquamarine
+  0 100   0		dark green
+  0 100   0		DarkGreen
+ 85 107  47		dark olive green
+ 85 107  47		DarkOliveGreen
+143 188 143		dark sea green
+143 188 143		DarkSeaGreen
+ 46 139  87		sea green
+ 46 139  87		SeaGreen
+ 60 179 113		medium sea green
+ 60 179 113		MediumSeaGreen
+ 32 178 170		light sea green
+ 32 178 170		LightSeaGreen
+152 251 152		pale green
+152 251 152		PaleGreen
+  0 255 127		spring green
+  0 255 127		SpringGreen
+124 252   0		lawn green
+124 252   0		LawnGreen
+  0 255   0		green
+127 255   0		chartreuse
+  0 250 154		medium spring green
+  0 250 154		MediumSpringGreen
+173 255  47		green yellow
+173 255  47		GreenYellow
+ 50 205  50		lime green
+ 50 205  50		LimeGreen
+154 205  50		yellow green
+154 205  50		YellowGreen
+ 34 139  34		forest green
+ 34 139  34		ForestGreen
+107 142  35		olive drab
+107 142  35		OliveDrab
+189 183 107		dark khaki
+189 183 107		DarkKhaki
+240 230 140		khaki
+238 232 170		pale goldenrod
+238 232 170		PaleGoldenrod
+250 250 210		light goldenrod yellow
+250 250 210		LightGoldenrodYellow
+255 255 224		light yellow
+255 255 224		LightYellow
+255 255   0		yellow
+255 215   0 		gold
+238 221 130		light goldenrod
+238 221 130		LightGoldenrod
+218 165  32		goldenrod
+184 134  11		dark goldenrod
+184 134  11		DarkGoldenrod
+188 143 143		rosy brown
+188 143 143		RosyBrown
+205  92  92		indian red
+205  92  92		IndianRed
+139  69  19		saddle brown
+139  69  19		SaddleBrown
+160  82  45		sienna
+205 133  63		peru
+222 184 135		burlywood
+245 245 220		beige
+245 222 179		wheat
+244 164  96		sandy brown
+244 164  96		SandyBrown
+210 180 140		tan
+210 105  30		chocolate
+178  34  34		firebrick
+165  42  42		brown
+233 150 122		dark salmon
+233 150 122		DarkSalmon
+250 128 114		salmon
+255 160 122		light salmon
+255 160 122		LightSalmon
+255 165   0		orange
+255 140   0		dark orange
+255 140   0		DarkOrange
+255 127  80		coral
+240 128 128		light coral
+240 128 128		LightCoral
+255  99  71		tomato
+255  69   0		orange red
+255  69   0		OrangeRed
+255   0   0		red
+255 105 180		hot pink
+255 105 180		HotPink
+255  20 147		deep pink
+255  20 147		DeepPink
+255 192 203		pink
+255 182 193		light pink
+255 182 193		LightPink
+219 112 147		pale violet red
+219 112 147		PaleVioletRed
+176  48  96		maroon
+199  21 133		medium violet red
+199  21 133		MediumVioletRed
+208  32 144		violet red
+208  32 144		VioletRed
+255   0 255		magenta
+238 130 238		violet
+221 160 221		plum
+218 112 214		orchid
+186  85 211		medium orchid
+186  85 211		MediumOrchid
+153  50 204		dark orchid
+153  50 204		DarkOrchid
+148   0 211		dark violet
+148   0 211		DarkViolet
+138  43 226		blue violet
+138  43 226		BlueViolet
+160  32 240		purple
+147 112 219		medium purple
+147 112 219		MediumPurple
+216 191 216		thistle
+255 250 250		snow1
+238 233 233		snow2
+205 201 201		snow3
+139 137 137		snow4
+255 245 238		seashell1
+238 229 222		seashell2
+205 197 191		seashell3
+139 134 130		seashell4
+255 239 219		AntiqueWhite1
+238 223 204		AntiqueWhite2
+205 192 176		AntiqueWhite3
+139 131 120		AntiqueWhite4
+255 228 196		bisque1
+238 213 183		bisque2
+205 183 158		bisque3
+139 125 107		bisque4
+255 218 185		PeachPuff1
+238 203 173		PeachPuff2
+205 175 149		PeachPuff3
+139 119 101		PeachPuff4
+255 222 173		NavajoWhite1
+238 207 161		NavajoWhite2
+205 179 139		NavajoWhite3
+139 121	 94		NavajoWhite4
+255 250 205		LemonChiffon1
+238 233 191		LemonChiffon2
+205 201 165		LemonChiffon3
+139 137 112		LemonChiffon4
+255 248 220		cornsilk1
+238 232 205		cornsilk2
+205 200 177		cornsilk3
+139 136 120		cornsilk4
+255 255 240		ivory1
+238 238 224		ivory2
+205 205 193		ivory3
+139 139 131		ivory4
+240 255 240		honeydew1
+224 238 224		honeydew2
+193 205 193		honeydew3
+131 139 131		honeydew4
+255 240 245		LavenderBlush1
+238 224 229		LavenderBlush2
+205 193 197		LavenderBlush3
+139 131 134		LavenderBlush4
+255 228 225		MistyRose1
+238 213 210		MistyRose2
+205 183 181		MistyRose3
+139 125 123		MistyRose4
+240 255 255		azure1
+224 238 238		azure2
+193 205 205		azure3
+131 139 139		azure4
+131 111 255		SlateBlue1
+122 103 238		SlateBlue2
+105  89 205		SlateBlue3
+ 71  60 139		SlateBlue4
+ 72 118 255		RoyalBlue1
+ 67 110 238		RoyalBlue2
+ 58  95 205		RoyalBlue3
+ 39  64 139		RoyalBlue4
+  0   0 255		blue1
+  0   0 238		blue2
+  0   0 205		blue3
+  0   0 139		blue4
+ 30 144 255		DodgerBlue1
+ 28 134 238		DodgerBlue2
+ 24 116 205		DodgerBlue3
+ 16  78 139		DodgerBlue4
+ 99 184 255		SteelBlue1
+ 92 172 238		SteelBlue2
+ 79 148 205		SteelBlue3
+ 54 100 139		SteelBlue4
+  0 191 255		DeepSkyBlue1
+  0 178 238		DeepSkyBlue2
+  0 154 205		DeepSkyBlue3
+  0 104 139		DeepSkyBlue4
+135 206 255		SkyBlue1
+126 192 238		SkyBlue2
+108 166 205		SkyBlue3
+ 74 112 139		SkyBlue4
+176 226 255		LightSkyBlue1
+164 211 238		LightSkyBlue2
+141 182 205		LightSkyBlue3
+ 96 123 139		LightSkyBlue4
+198 226 255		SlateGray1
+185 211 238		SlateGray2
+159 182 205		SlateGray3
+108 123 139		SlateGray4
+202 225 255		LightSteelBlue1
+188 210 238		LightSteelBlue2
+162 181 205		LightSteelBlue3
+110 123 139		LightSteelBlue4
+191 239 255		LightBlue1
+178 223 238		LightBlue2
+154 192 205		LightBlue3
+104 131 139		LightBlue4
+224 255 255		LightCyan1
+209 238 238		LightCyan2
+180 205 205		LightCyan3
+122 139 139		LightCyan4
+187 255 255		PaleTurquoise1
+174 238 238		PaleTurquoise2
+150 205 205		PaleTurquoise3
+102 139 139		PaleTurquoise4
+152 245 255		CadetBlue1
+142 229 238		CadetBlue2
+122 197 205		CadetBlue3
+ 83 134 139		CadetBlue4
+  0 245 255		turquoise1
+  0 229 238		turquoise2
+  0 197 205		turquoise3
+  0 134 139		turquoise4
+  0 255 255		cyan1
+  0 238 238		cyan2
+  0 205 205		cyan3
+  0 139 139		cyan4
+151 255 255		DarkSlateGray1
+141 238 238		DarkSlateGray2
+121 205 205		DarkSlateGray3
+ 82 139 139		DarkSlateGray4
+127 255 212		aquamarine1
+118 238 198		aquamarine2
+102 205 170		aquamarine3
+ 69 139 116		aquamarine4
+193 255 193		DarkSeaGreen1
+180 238 180		DarkSeaGreen2
+155 205 155		DarkSeaGreen3
+105 139 105		DarkSeaGreen4
+ 84 255 159		SeaGreen1
+ 78 238 148		SeaGreen2
+ 67 205 128		SeaGreen3
+ 46 139	 87		SeaGreen4
+154 255 154		PaleGreen1
+144 238 144		PaleGreen2
+124 205 124		PaleGreen3
+ 84 139	 84		PaleGreen4
+  0 255 127		SpringGreen1
+  0 238 118		SpringGreen2
+  0 205 102		SpringGreen3
+  0 139	 69		SpringGreen4
+  0 255	  0		green1
+  0 238	  0		green2
+  0 205	  0		green3
+  0 139	  0		green4
+127 255	  0		chartreuse1
+118 238	  0		chartreuse2
+102 205	  0		chartreuse3
+ 69 139	  0		chartreuse4
+192 255	 62		OliveDrab1
+179 238	 58		OliveDrab2
+154 205	 50		OliveDrab3
+105 139	 34		OliveDrab4
+202 255 112		DarkOliveGreen1
+188 238 104		DarkOliveGreen2
+162 205	 90		DarkOliveGreen3
+110 139	 61		DarkOliveGreen4
+255 246 143		khaki1
+238 230 133		khaki2
+205 198 115		khaki3
+139 134	 78		khaki4
+255 236 139		LightGoldenrod1
+238 220 130		LightGoldenrod2
+205 190 112		LightGoldenrod3
+139 129	 76		LightGoldenrod4
+255 255 224		LightYellow1
+238 238 209		LightYellow2
+205 205 180		LightYellow3
+139 139 122		LightYellow4
+255 255	  0		yellow1
+238 238	  0		yellow2
+205 205	  0		yellow3
+139 139	  0		yellow4
+255 215	  0		gold1
+238 201	  0		gold2
+205 173	  0		gold3
+139 117	  0		gold4
+255 193	 37		goldenrod1
+238 180	 34		goldenrod2
+205 155	 29		goldenrod3
+139 105	 20		goldenrod4
+255 185	 15		DarkGoldenrod1
+238 173	 14		DarkGoldenrod2
+205 149	 12		DarkGoldenrod3
+139 101	  8		DarkGoldenrod4
+255 193 193		RosyBrown1
+238 180 180		RosyBrown2
+205 155 155		RosyBrown3
+139 105 105		RosyBrown4
+255 106 106		IndianRed1
+238  99	 99		IndianRed2
+205  85	 85		IndianRed3
+139  58	 58		IndianRed4
+255 130	 71		sienna1
+238 121	 66		sienna2
+205 104	 57		sienna3
+139  71	 38		sienna4
+255 211 155		burlywood1
+238 197 145		burlywood2
+205 170 125		burlywood3
+139 115	 85		burlywood4
+255 231 186		wheat1
+238 216 174		wheat2
+205 186 150		wheat3
+139 126 102		wheat4
+255 165	 79		tan1
+238 154	 73		tan2
+205 133	 63		tan3
+139  90	 43		tan4
+255 127	 36		chocolate1
+238 118	 33		chocolate2
+205 102	 29		chocolate3
+139  69	 19		chocolate4
+255  48	 48		firebrick1
+238  44	 44		firebrick2
+205  38	 38		firebrick3
+139  26	 26		firebrick4
+255  64	 64		brown1
+238  59	 59		brown2
+205  51	 51		brown3
+139  35	 35		brown4
+255 140 105		salmon1
+238 130	 98		salmon2
+205 112	 84		salmon3
+139  76	 57		salmon4
+255 160 122		LightSalmon1
+238 149 114		LightSalmon2
+205 129	 98		LightSalmon3
+139  87	 66		LightSalmon4
+255 165	  0		orange1
+238 154	  0		orange2
+205 133	  0		orange3
+139  90	  0		orange4
+255 127	  0		DarkOrange1
+238 118	  0		DarkOrange2
+205 102	  0		DarkOrange3
+139  69	  0		DarkOrange4
+255 114	 86		coral1
+238 106	 80		coral2
+205  91	 69		coral3
+139  62	 47		coral4
+255  99	 71		tomato1
+238  92	 66		tomato2
+205  79	 57		tomato3
+139  54	 38		tomato4
+255  69	  0		OrangeRed1
+238  64	  0		OrangeRed2
+205  55	  0		OrangeRed3
+139  37	  0		OrangeRed4
+255   0	  0		red1
+238   0	  0		red2
+205   0	  0		red3
+139   0	  0		red4
+255  20 147		DeepPink1
+238  18 137		DeepPink2
+205  16 118		DeepPink3
+139  10	 80		DeepPink4
+255 110 180		HotPink1
+238 106 167		HotPink2
+205  96 144		HotPink3
+139  58  98		HotPink4
+255 181 197		pink1
+238 169 184		pink2
+205 145 158		pink3
+139  99 108		pink4
+255 174 185		LightPink1
+238 162 173		LightPink2
+205 140 149		LightPink3
+139  95 101		LightPink4
+255 130 171		PaleVioletRed1
+238 121 159		PaleVioletRed2
+205 104 137		PaleVioletRed3
+139  71	 93		PaleVioletRed4
+255  52 179		maroon1
+238  48 167		maroon2
+205  41 144		maroon3
+139  28	 98		maroon4
+255  62 150		VioletRed1
+238  58 140		VioletRed2
+205  50 120		VioletRed3
+139  34	 82		VioletRed4
+255   0 255		magenta1
+238   0 238		magenta2
+205   0 205		magenta3
+139   0 139		magenta4
+255 131 250		orchid1
+238 122 233		orchid2
+205 105 201		orchid3
+139  71 137		orchid4
+255 187 255		plum1
+238 174 238		plum2
+205 150 205		plum3
+139 102 139		plum4
+224 102 255		MediumOrchid1
+209  95 238		MediumOrchid2
+180  82 205		MediumOrchid3
+122  55 139		MediumOrchid4
+191  62 255		DarkOrchid1
+178  58 238		DarkOrchid2
+154  50 205		DarkOrchid3
+104  34 139		DarkOrchid4
+155  48 255		purple1
+145  44 238		purple2
+125  38 205		purple3
+ 85  26 139		purple4
+171 130 255		MediumPurple1
+159 121 238		MediumPurple2
+137 104 205		MediumPurple3
+ 93  71 139		MediumPurple4
+255 225 255		thistle1
+238 210 238		thistle2
+205 181 205		thistle3
+139 123 139		thistle4
+  0   0   0		gray0
+  0   0   0		grey0
+  3   3   3		gray1
+  3   3   3		grey1
+  5   5   5		gray2
+  5   5   5		grey2
+  8   8   8		gray3
+  8   8   8		grey3
+ 10  10  10 		gray4
+ 10  10  10 		grey4
+ 13  13  13 		gray5
+ 13  13  13 		grey5
+ 15  15  15 		gray6
+ 15  15  15 		grey6
+ 18  18  18 		gray7
+ 18  18  18 		grey7
+ 20  20  20 		gray8
+ 20  20  20 		grey8
+ 23  23  23 		gray9
+ 23  23  23 		grey9
+ 26  26  26 		gray10
+ 26  26  26 		grey10
+ 28  28  28 		gray11
+ 28  28  28 		grey11
+ 31  31  31 		gray12
+ 31  31  31 		grey12
+ 33  33  33 		gray13
+ 33  33  33 		grey13
+ 36  36  36 		gray14
+ 36  36  36 		grey14
+ 38  38  38 		gray15
+ 38  38  38 		grey15
+ 41  41  41 		gray16
+ 41  41  41 		grey16
+ 43  43  43 		gray17
+ 43  43  43 		grey17
+ 46  46  46 		gray18
+ 46  46  46 		grey18
+ 48  48  48 		gray19
+ 48  48  48 		grey19
+ 51  51  51 		gray20
+ 51  51  51 		grey20
+ 54  54  54 		gray21
+ 54  54  54 		grey21
+ 56  56  56 		gray22
+ 56  56  56 		grey22
+ 59  59  59 		gray23
+ 59  59  59 		grey23
+ 61  61  61 		gray24
+ 61  61  61 		grey24
+ 64  64  64 		gray25
+ 64  64  64 		grey25
+ 66  66  66 		gray26
+ 66  66  66 		grey26
+ 69  69  69 		gray27
+ 69  69  69 		grey27
+ 71  71  71 		gray28
+ 71  71  71 		grey28
+ 74  74  74 		gray29
+ 74  74  74 		grey29
+ 77  77  77 		gray30
+ 77  77  77 		grey30
+ 79  79  79 		gray31
+ 79  79  79 		grey31
+ 82  82  82 		gray32
+ 82  82  82 		grey32
+ 84  84  84 		gray33
+ 84  84  84 		grey33
+ 87  87  87 		gray34
+ 87  87  87 		grey34
+ 89  89  89 		gray35
+ 89  89  89 		grey35
+ 92  92  92 		gray36
+ 92  92  92 		grey36
+ 94  94  94 		gray37
+ 94  94  94 		grey37
+ 97  97  97 		gray38
+ 97  97  97 		grey38
+ 99  99  99 		gray39
+ 99  99  99 		grey39
+102 102 102 		gray40
+102 102 102 		grey40
+105 105 105 		gray41
+105 105 105 		grey41
+107 107 107 		gray42
+107 107 107 		grey42
+110 110 110 		gray43
+110 110 110 		grey43
+112 112 112 		gray44
+112 112 112 		grey44
+115 115 115 		gray45
+115 115 115 		grey45
+117 117 117 		gray46
+117 117 117 		grey46
+120 120 120 		gray47
+120 120 120 		grey47
+122 122 122 		gray48
+122 122 122 		grey48
+125 125 125 		gray49
+125 125 125 		grey49
+127 127 127 		gray50
+127 127 127 		grey50
+130 130 130 		gray51
+130 130 130 		grey51
+133 133 133 		gray52
+133 133 133 		grey52
+135 135 135 		gray53
+135 135 135 		grey53
+138 138 138 		gray54
+138 138 138 		grey54
+140 140 140 		gray55
+140 140 140 		grey55
+143 143 143 		gray56
+143 143 143 		grey56
+145 145 145 		gray57
+145 145 145 		grey57
+148 148 148 		gray58
+148 148 148 		grey58
+150 150 150 		gray59
+150 150 150 		grey59
+153 153 153 		gray60
+153 153 153 		grey60
+156 156 156 		gray61
+156 156 156 		grey61
+158 158 158 		gray62
+158 158 158 		grey62
+161 161 161 		gray63
+161 161 161 		grey63
+163 163 163 		gray64
+163 163 163 		grey64
+166 166 166 		gray65
+166 166 166 		grey65
+168 168 168 		gray66
+168 168 168 		grey66
+171 171 171 		gray67
+171 171 171 		grey67
+173 173 173 		gray68
+173 173 173 		grey68
+176 176 176 		gray69
+176 176 176 		grey69
+179 179 179 		gray70
+179 179 179 		grey70
+181 181 181 		gray71
+181 181 181 		grey71
+184 184 184 		gray72
+184 184 184 		grey72
+186 186 186 		gray73
+186 186 186 		grey73
+189 189 189 		gray74
+189 189 189 		grey74
+191 191 191 		gray75
+191 191 191 		grey75
+194 194 194 		gray76
+194 194 194 		grey76
+196 196 196 		gray77
+196 196 196 		grey77
+199 199 199 		gray78
+199 199 199 		grey78
+201 201 201 		gray79
+201 201 201 		grey79
+204 204 204 		gray80
+204 204 204 		grey80
+207 207 207 		gray81
+207 207 207 		grey81
+209 209 209 		gray82
+209 209 209 		grey82
+212 212 212 		gray83
+212 212 212 		grey83
+214 214 214 		gray84
+214 214 214 		grey84
+217 217 217 		gray85
+217 217 217 		grey85
+219 219 219 		gray86
+219 219 219 		grey86
+222 222 222 		gray87
+222 222 222 		grey87
+224 224 224 		gray88
+224 224 224 		grey88
+227 227 227 		gray89
+227 227 227 		grey89
+229 229 229 		gray90
+229 229 229 		grey90
+232 232 232 		gray91
+232 232 232 		grey91
+235 235 235 		gray92
+235 235 235 		grey92
+237 237 237 		gray93
+237 237 237 		grey93
+240 240 240 		gray94
+240 240 240 		grey94
+242 242 242 		gray95
+242 242 242 		grey95
+245 245 245 		gray96
+245 245 245 		grey96
+247 247 247 		gray97
+247 247 247 		grey97
+250 250 250 		gray98
+250 250 250 		grey98
+252 252 252 		gray99
+252 252 252 		grey99
+255 255 255 		gray100
+255 255 255 		grey100
+169 169 169		dark grey
+169 169 169		DarkGrey
+169 169 169		dark gray
+169 169 169		DarkGray
+0     0 139		dark blue
+0     0 139		DarkBlue
+0   139 139		dark cyan
+0   139 139		DarkCyan
+139   0 139		dark magenta
+139   0 139		DarkMagenta
+139   0   0		dark red
+139   0   0		DarkRed
+144 238 144		light green
+144 238 144		LightGreen
diff --git a/jsf-demo/archive/webtier-sample/web/WEB-INF/faces-config.xml b/jsf-demo/archive/webtier-sample/web/WEB-INF/faces-config.xml
new file mode 100644
index 0000000..1fb69b9
--- /dev/null
+++ b/jsf-demo/archive/webtier-sample/web/WEB-INF/faces-config.xml
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
+              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+              xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd"
+              version="1.2">
+    
+    <managed-bean>
+        <managed-bean-name>BooksBean</managed-bean-name>
+        <managed-bean-class>webtiersample.BooksBean</managed-bean-class> 
+        <managed-bean-scope>session</managed-bean-scope>
+    </managed-bean>       
+    
+</faces-config>
diff --git a/jsf-demo/archive/webtier-sample/web/WEB-INF/web.xml b/jsf-demo/archive/webtier-sample/web/WEB-INF/web.xml
new file mode 100644
index 0000000..6459076
--- /dev/null
+++ b/jsf-demo/archive/webtier-sample/web/WEB-INF/web.xml
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<web-app version="2.5"
+         xmlns="http://java.sun.com/xml/ns/javaee"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" >
+    
+    <listener>
+        <listener-class>webtiersample.InstallColorListener</listener-class>      
+    </listener>
+    
+    <servlet>
+        <servlet-name>FacesServlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+    </servlet>
+    
+    <servlet-mapping>
+        <servlet-name>FacesServlet</servlet-name>
+        <url-pattern>*.jsf</url-pattern>
+    </servlet-mapping>
+</web-app>
diff --git a/jsf-demo/archive/webtier-sample/web/index.jsp b/jsf-demo/archive/webtier-sample/web/index.jsp
new file mode 100644
index 0000000..dd74fee
--- /dev/null
+++ b/jsf-demo/archive/webtier-sample/web/index.jsp
@@ -0,0 +1,49 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<html>
+    <head></head>
+
+    <body>
+        <jsp:forward page="webtiersample.jsf"/>
+    </body>
+</html>
diff --git a/jsf-demo/archive/webtier-sample/web/webtiersample.jsp b/jsf-demo/archive/webtier-sample/web/webtiersample.jsp
new file mode 100644
index 0000000..84aa3ab
--- /dev/null
+++ b/jsf-demo/archive/webtier-sample/web/webtiersample.jsp
@@ -0,0 +1,136 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
+<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %>
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+<html>
+    <head>
+        <title>Simple Webtier Sample</title>
+        <style type="text/css">
+            .standard {
+                background-color: ${Color.linen.hex};
+            }
+            .evenRow {
+                background-color: ${Color.ivory.hex};
+            }
+            .oddRow { 
+                background-color: ${Color.LightGrey.hex};
+            }
+            fieldset {                
+                border: #26a solid 1px;
+                background-color: ${Color.snow.hex};
+            }
+            table {
+                margin: auto;
+            }
+            body {
+                background-color: ${Color.OldLace.hex};
+            }
+        </style>
+    </head>
+    <body>                   
+  
+        <f:view>  
+            <h:form id="form">
+                <fieldset class="centerSet">
+                    <legend>Sample Output</legend>
+
+                    <table border="1">
+                        <c:forTokens items="Title,Author,ISBN,Price,Quantity"
+                                     delims=","
+                                     var="headerValue">
+                            <th class="standard">${headerValue}</th>
+                        </c:forTokens>
+                        
+                        <c:forEach items="#{BooksBean.books}" var="book"
+                                   varStatus="stat">
+
+                            <tr class="${(stat.index % 2) == 0 ? "evenRow" : "oddRow"}">
+                                <td>
+                                    <h:outputText id="title"
+                                                  value="#{book.title}"/>
+                                </td>
+                                <td>
+                                    <h:outputText id="author"
+                                                  value="#{book.author}"/>
+                                </td>
+                                <td>
+                                    <h:outputText id="isbn"
+                                                  value="#{book.isbn}"/>
+                                </td>
+                                <td>
+                                    <h:outputText id="price"
+                                                  value="#{book.price}"/>
+                                </td>
+                                <td>
+                                    <h:inputText id="quantity" 
+                                                 size="3"
+                                                 value="#{book.quantity}"
+                                                 validator="#{book.validateQuantity}"/>                                                                                                                
+                                </td>                            
+                            </tr>
+
+                        </c:forEach>
+                            <tr class="standard">
+                                <td colspan="5" >
+                                    Total Cost: <h:outputText id="totalCost"
+                                                              value="#{BooksBean.totalCost}">
+                                                   <f:convertNumber minFractionDigits="2" maxFractionDigits="2" />
+                                                </h:outputText>
+                                </td>
+                            </tr>
+                            <tr class="standard">
+                                <td colspan="5" >
+                                    <h:commandButton id="update" 
+                                                     type="submit"
+                                                     value="Update"/>                            
+                                </td>
+                            </tr>
+                    </table>  
+                    <h:messages showSummary="true"/>
+                </fieldset>
+            </h:form>
+        </f:view>
+    </body>
+</html>
diff --git a/jsf-demo/basic-ajax/README.txt b/jsf-demo/basic-ajax/README.txt
new file mode 100644
index 0000000..824b572
--- /dev/null
+++ b/jsf-demo/basic-ajax/README.txt
@@ -0,0 +1,14 @@
+This demo, the basic-ajax demo, is a collection of small example programs that have
+been placed into a demo framework.
+
+The best way to understand the demo is to simply run it - there are links in the
+home page to each example, as well as the code backing each example.
+
+The following examples are part of this demo:
+
+count - simple example of using Ajax to update a field in the page
+echo1 - simple example of using Ajax to update a field, with external JavaScript
+echo2 - using an ajax tag to do the same thing as echo1
+hidenshow - how to handle rendered=false
+redirect - using Ajax to redirect to a new page
+listener - using event and listener on an f:ajax tag
diff --git a/jsf-demo/basic-ajax/build.xml b/jsf-demo/basic-ajax/build.xml
new file mode 100644
index 0000000..c81d4f1
--- /dev/null
+++ b/jsf-demo/basic-ajax/build.xml
@@ -0,0 +1,125 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project name="basic-ajax" default="build" basedir=".">
+   
+
+    <property file="${user.home}/build.properties"/> 
+    <property file="../../build.properties"/>
+    <import file="${jsf.build.home}/common/ant/common.xml"/>
+    
+    <!-- Configure the context path for this application -->
+    <property name="context.path" value="/basic-ajax"/>
+    <property name="example" value="basic-ajax"/>
+    <property name="build" value="${basedir}/build"/>   
+
+    <path id="classpath">       
+        <pathelement location="${javax.faces-api.jar}"/>
+        <pathelement location="${javax.faces.jar}"/>       
+        <pathelement location="${build}/WEB-INF/classes"/>
+        <path refid="compile.classpath"/>
+    </path>
+    
+    <target name="init">
+        <tstamp/>
+    </target>
+
+    <target name="clean">
+        <delete dir="${build}"/>
+        <delete dir="${context.path}"/>
+    </target>    
+
+    <target name="prepare" depends="init"
+            description="Create build directories.">
+        <mkdir dir="${build}/${example}/"/>
+        <mkdir dir="${build}/${example}/WEB-INF"/>
+        <mkdir dir="${build}/${example}/WEB-INF/classes"/>
+        <mkdir dir="${build}/${example}/WEB-INF/lib"/>
+    </target>       
+
+    <target name="build" depends="prepare"
+            description="Compile Java files and copy static files.">
+         <jsf.javac srcdir="src"
+                   destdir="${build}/${example}/WEB-INF/classes">
+            <classpath>
+                <path refid="classpath"/>
+            </classpath>
+        </jsf.javac>
+        <copy todir="${build}/${example}/WEB-INF">
+            <fileset dir="web/WEB-INF">
+                <include name="*.xml"/>
+                <include name="*.xhtml"/>
+            </fileset>
+        </copy>
+        <copy todir="${build}/${example}/WEB-INF/classes">
+            <fileset dir="src"/>
+        </copy>
+
+        <copy todir="${build}/${example}/">
+            <fileset dir="web">
+                <include name="*.html"/>
+                <include name="*.xhtml"/>
+                <include name="*.gif"/>
+                <include name="*.jpg"/>
+                <include name="*.jsp"/>
+                <include name="*.xml"/>
+            </fileset>
+        </copy>
+        <copy todir="${build}/${example}/WEB-INF/classes/templateDemo">
+            <fileset dir="web">
+                <include name="*properties"/>
+            </fileset>
+        </copy>
+       <copy todir="${build}/${example}/resources">
+            <fileset dir="web/resources"/>
+        </copy>
+        <jsf.war basedir="${build}"
+                 archive-name="${example}"
+                 webxml="${build}/${example}/WEB-INF/web.xml">
+            <archive-elements>
+                <zipfileset dir="${build}/${example}"/>
+            </archive-elements>
+        </jsf.war>
+    </target>
+
+</project>
+
diff --git a/jsf-demo/basic-ajax/pom.xml b/jsf-demo/basic-ajax/pom.xml
new file mode 100644
index 0000000..59a6c49
--- /dev/null
+++ b/jsf-demo/basic-ajax/pom.xml
@@ -0,0 +1,191 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+    <modelVersion>4.0.0</modelVersion>
+    <groupId>com.sun.faces</groupId>
+    <artifactId>basic-ajax</artifactId>
+    <packaging>war</packaging>
+    <name>${project.artifactId}</name>
+    <url>https://mojarra.dev.java.net/</url>
+    <description>Example App</description>
+    <version>1.0</version>
+
+    <build>
+        <defaultGoal>package</defaultGoal>
+        <sourceDirectory>src/main/java</sourceDirectory>
+        <finalName>${project.artifactId}</finalName>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>RELEASE</version>
+                <configuration>
+                    <source>1.5</source>
+                    <target>1.5</target>
+                </configuration>
+            </plugin>
+            <plugin>
+                <artifactId>maven-antrun-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <phase>compile</phase>
+                        <configuration>
+                            <tasks>
+                                <copy todir="${project.build.outputDirectory}">
+                                    <fileset dir="src/main/java"/>
+                                </copy>
+                            </tasks>
+                        </configuration>
+                        <goals>
+                            <goal>run</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+
+    <repositories>
+        <repository>
+            <id>java.net.m2</id>
+            <name>java.net m2 repo</name>
+            <url>http://download.java.net/maven/2</url>
+        </repository>
+       <repository>
+            <id>glassfish-repo-archive</id>
+            <name>Nexus repository collection for Glassfish</name>
+            <url>http://maven.glassfish.org/content/groups/glassfish</url>
+        </repository>
+        <repository>
+            <id>ibiblio.mirrors</id>
+            <url>http://mirrors.ibiblio.org/pub/mirrors/maven2</url>
+        </repository>
+        <repository>
+            <id>codehaus</id>
+            <name>codehaus</name>
+            <url>http://repository.codehaus.org</url>
+        </repository>
+    </repositories>
+
+    <dependencies>
+        <dependency>
+            <groupId>javax.faces</groupId>
+            <artifactId>jsf-api</artifactId>
+            <version>2.0</version>
+            <scope>provided</scope>
+        </dependency>
+
+        <!--
+          Uncomment these dependencies and comment out the one above to use
+          a simple servlet container instead of a Java EE Application Server
+        <dependency>
+            <groupId>com.sun.faces</groupId>
+            <artifactId>jsf-api</artifactId>
+            <version>[2.0.1,)</version>
+        </dependency>
+        <dependency>
+            <groupId>com.sun.faces</groupId>
+            <artifactId>jsf-impl</artifactId>
+            <version>[2.0.1,)</version>
+        </dependency>
+        <dependency>
+            <groupId>javax.servlet</groupId>
+            <artifactId>servlet-api</artifactId>
+            <version>2.5</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>javax.servlet.jsp</groupId>
+            <artifactId>jsp-api</artifactId>
+            <version>2.1</version>
+            <scope>provided</scope>
+        </dependency>
+         <dependency>
+             <groupId>javax.servlet.jsp.jstl</groupId>
+             <artifactId>jstl-api</artifactId>
+             <version>1.2</version>
+         </dependency>
+        <dependency>
+            <groupId>org.glassfish.web</groupId>
+            <artifactId>jstl-impl</artifactId>
+            <version>1.2</version>
+        </dependency>
+        -->
+
+    </dependencies>
+    <reporting>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-project-info-reports-plugin</artifactId>
+                <reportSets>
+                    <reportSet/>
+                </reportSets>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                    <source>1.5</source>
+                    <target>1.5</target>
+                </configuration>
+            </plugin>
+        </plugins>
+    </reporting>
+    <profiles>
+        <profile>
+            <id>default</id>
+            <!-- Tests are disabled by default.  See the test profile -->
+            <activation>
+                <activeByDefault>true</activeByDefault>
+            </activation>
+            <properties>
+                <maven.test.skip>true</maven.test.skip>
+            </properties>
+        </profile>
+    </profiles>
+</project>
+
diff --git a/jsf-demo/basic-ajax/src/main/java/basicajax/Count.java b/jsf-demo/basic-ajax/src/main/java/basicajax/Count.java
new file mode 100644
index 0000000..543d76b
--- /dev/null
+++ b/jsf-demo/basic-ajax/src/main/java/basicajax/Count.java
@@ -0,0 +1,64 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package basicajax;
+
+import javax.faces.event.ActionEvent;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.SessionScoped;
+import java.io.Serializable;
+
+ at ManagedBean(name = "count")
+ at SessionScoped
+public class Count implements Serializable {
+
+    private static final long serialVersionUID = 6499154494910177344L;    
+
+    Integer count = 0;
+
+    public Integer getCount() {
+        return count++;
+    }
+
+    @SuppressWarnings({"UnusedDeclaration"})
+    public void reset(ActionEvent ae) {
+        count = 0;
+    }
+}
diff --git a/jsf-demo/basic-ajax/src/main/java/basicajax/DemoResourceBean.java b/jsf-demo/basic-ajax/src/main/java/basicajax/DemoResourceBean.java
new file mode 100644
index 0000000..349467a
--- /dev/null
+++ b/jsf-demo/basic-ajax/src/main/java/basicajax/DemoResourceBean.java
@@ -0,0 +1,330 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package basicajax;
+
+import java.util.Collection;
+import java.util.ArrayList;
+import java.util.List;
+import java.io.Serializable;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.ApplicationScoped;
+import javax.faces.context.FacesContext;
+import javax.faces.FacesException;
+import javax.annotation.PostConstruct;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+
+import org.w3c.dom.Document;
+import org.w3c.dom.NodeList;
+import org.w3c.dom.Node;
+
+/**
+ * This bean is responsible for building the metadata used in generating the
+ * demo index page.
+ */
+ at ManagedBean(name = "demoBean", eager = true)
+ at ApplicationScoped
+public class DemoResourceBean implements Serializable {
+    
+    private static final long serialVersionUID = 6392120974203756551L;
+
+
+    /**
+     * The path and filename to the demo metadata descriptor.
+     */
+    private static final String DEMO_DESCRIPTOR = "/WEB-INF/demo.xml";
+
+
+    /**
+     * List of <code>DemoBean</code>s for this application instance.
+     */
+    private List<DemoBean> demoBeans;
+
+
+    // ---------------------------------------------------------- Public Methods
+
+
+    /**
+     * @return a <code>Collection</code> of <code>DemoBeans</code> for this
+     *  application.
+     */
+    public Collection<DemoBean> getDemoBeans() {
+
+        return demoBeans;
+
+    }
+
+
+    // --------------------------------------------------------- Private Methods
+
+
+    /**
+     * @return a non-validating, non-namespace aware <code>DocumentBuilder</code>
+     * @throws Exception if the DocumentBuilder cannot be obtained
+     */
+    private DocumentBuilder getBuilder() throws Exception {
+
+        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
+        dbf.setValidating(false);
+        dbf.setNamespaceAware(false);
+        return dbf.newDocumentBuilder();
+
+    }
+
+
+    /**
+     * @return the <code>Document</code> based off the content found within
+     *  {@link #DEMO_DESCRIPTOR}
+     * @throws Exception if an error occurs parsing {@link #DEMO_DESCRIPTOR}
+     */
+    private Document getDemoMetadata() throws Exception {
+
+        FacesContext ctx = FacesContext.getCurrentInstance();
+        DocumentBuilder builder = getBuilder();
+        return builder.parse(ctx.getExternalContext().getResourceAsStream(DEMO_DESCRIPTOR));
+
+    }
+
+
+    /**
+     * <p>
+     * This method is responsible for constructing the <code>DemoBean</code>
+     * instances based on the parsed content of {@link #DEMO_DESCRIPTOR}.
+     * </p>
+     * <p>
+     * This method will be called by the JSF managed bean facility before the
+     * bean is automatically pushed to the application scope when the
+     * application starts.
+     * </p>
+     */
+    @SuppressWarnings({"UnusedDeclaration"})
+    @PostConstruct
+    private void buildDemoMetaData()  {
+
+        try {
+            Document d = getDemoMetadata();
+            ArrayList<DemoBean> beans = new ArrayList<DemoBean>();
+            NodeList demoElements = d.getElementsByTagName("demo");
+            for (int i = 0, len = demoElements.getLength(); i < len; i++) {
+                DemoBean b = processDemo(demoElements.item(i));
+                if (b != null) {
+                    beans.add(b);
+                }
+            }
+            beans.trimToSize();
+            demoBeans = beans;
+        } catch (Exception e) {
+            throw new FacesException("Unable to initialize demo", e);
+        }
+
+    }
+
+
+    /**
+     * @param demoNode node representing the <demo> element.
+     * @return a new <code>DemoBean</code> instance based off the provided
+     *  <code>Node</code> and it's children.
+     */
+    private DemoBean processDemo(Node demoNode) {
+
+        NodeList children = demoNode.getChildNodes();
+        String name = null;
+        String page = null;
+        ArrayList<DemoSourceInfo> sourceInfo = new ArrayList<DemoSourceInfo>();
+        for (int i = 0, len = children.getLength(); i < len; i++) {
+            Node n = children.item(i);
+            if ("name".equals(n.getNodeName())) {
+                name = getNodeText(n);
+            } else if ("page".equals(n.getNodeName())) {
+                page = getNodeText(n);
+            } else if ("sources".equals(n.getNodeName())) {
+                NodeList sources = n.getChildNodes();
+                for (int j = 0, jlen = sources.getLength(); j < jlen; j++) {
+                    Node s = sources.item(j);
+                    DemoSourceInfo info = createDemoSourceInfo(s);
+                    if (info != null) {
+                        sourceInfo.add(createDemoSourceInfo(s));
+                    }
+                }
+            }
+        }
+
+        sourceInfo.trimToSize();
+
+        if (name != null && page != null && !sourceInfo.isEmpty()) {
+            return new DemoBean(name, page, sourceInfo);
+        }
+        return null;
+
+    }
+
+
+    /**
+     * @param sourceInfo node representing the <sources> element.
+     * @return a new <code>DemoSourceInfo</code> instance based off the provided
+     *  <code>Node</code> and it's children.
+     */
+    private DemoSourceInfo createDemoSourceInfo(Node sourceInfo) {
+
+        NodeList children = sourceInfo.getChildNodes();
+        String label = null;
+        String path = null;
+        for (int i = 0, len = children.getLength(); i < len; i++) {
+            Node n = children.item(i);
+            if ("label".equals(n.getNodeName())) {
+                label = getNodeText(n);
+            } else if ("path".equals(n.getNodeName())) {
+                path = getNodeText(n);
+            }
+        }
+
+        if (label != null && path != null) {
+            return new DemoSourceInfo(label, path);
+        }
+        return null;
+
+    }
+
+
+    /**
+     * @param node target <code>Node</code>
+     * @return the textual value of the <code>Node</code>
+     */
+    private String getNodeText(Node node) {
+
+        String res = null;
+        if (node != null) {
+            res = node.getTextContent();
+            if (res != null) {
+                res = res.trim();
+            }
+        }
+
+        return ((res != null && res.length() != 0) ? res : null);
+
+    }
+
+
+    // ---------------------------------------------------------- Nested Classes
+
+
+    public static final class DemoBean {
+
+        private List<DemoSourceInfo> sourceInfo;
+        private String demoName;
+        private String page;
+
+
+        DemoBean(String demoName, String page, List<DemoSourceInfo> sourceInfo) {
+
+            this.demoName = demoName;
+            this.page = page;
+            this.sourceInfo = sourceInfo;
+
+        }
+
+
+        // ------------------------------------------------------ Public Methods
+
+
+        public String getDemoName() {
+
+            return demoName;
+
+        }
+
+
+        public String getPage() {
+
+            return page;
+
+        }
+
+
+        public List<DemoSourceInfo> getSourceInfo() {
+
+            return sourceInfo;
+
+        }
+
+
+    } // END DemoBean
+
+
+    public static final class DemoSourceInfo  {
+
+
+        private String label;
+        private String sourceFilePath;
+
+
+        // -------------------------------------------------------- Constructors
+
+
+        DemoSourceInfo(String label, String sourceFilePath) {
+
+            this.label = label;
+            this.sourceFilePath = sourceFilePath;
+
+        }
+
+
+        // ------------------------------------------------------ Public Methods
+
+
+        public String getLabel() {
+
+            return label;
+
+        }
+
+
+        public String getSourceFilePath() {
+
+            return sourceFilePath;
+
+        }
+
+
+    } // END DemoSourceInfo
+
+}
diff --git a/jsf-demo/basic-ajax/src/main/java/basicajax/Echo.java b/jsf-demo/basic-ajax/src/main/java/basicajax/Echo.java
new file mode 100644
index 0000000..afdcb13
--- /dev/null
+++ b/jsf-demo/basic-ajax/src/main/java/basicajax/Echo.java
@@ -0,0 +1,71 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package basicajax;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.SessionScoped;
+import javax.faces.event.ActionEvent;
+import java.io.Serializable;
+
+ at ManagedBean(name = "echo")
+ at SessionScoped
+public class Echo implements Serializable {
+
+
+    private static final long serialVersionUID = 8301865434469950945L;
+
+    String str = "hello";
+    
+
+    public String getStr() {
+        return str;
+    }
+
+    public void setStr(String str) {
+        this.str = str;
+    }
+
+    @SuppressWarnings({"UnusedDeclaration"})
+    public void reset(ActionEvent ae) {
+        str = "";
+    }
+
+}
diff --git a/jsf-demo/basic-ajax/src/main/java/basicajax/Functions.java b/jsf-demo/basic-ajax/src/main/java/basicajax/Functions.java
new file mode 100644
index 0000000..ce3163d
--- /dev/null
+++ b/jsf-demo/basic-ajax/src/main/java/basicajax/Functions.java
@@ -0,0 +1,103 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package basicajax;
+
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.StringWriter;
+import java.io.BufferedReader;
+import java.io.PrintWriter;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import javax.faces.context.ExternalContext;
+import javax.faces.context.FacesContext;
+
+/**
+ * EL Functions.
+ */
+public class Functions {
+
+    private static final Logger LOGGER = Logger.getLogger(Functions.class.getName());
+
+
+    // ---------------------------------------------------------- Public Methods
+
+
+    /**
+     * <p>
+     * Write the file content to the current ResponseWriter.
+     * </p>
+     *
+     * @param ctx the <code>FacesContext</code> for the current request
+     * @param file the file to display
+     */
+    public static void writeSource(FacesContext ctx, String file) {
+
+        // PENDING - add logic to colorize key words/XML elements?
+        // PENDING - add logic to strip licence header
+
+        ExternalContext extCtx = ctx.getExternalContext();
+        BufferedReader r =
+              new BufferedReader(
+                    new InputStreamReader(extCtx.getResourceAsStream(file)));
+        StringWriter w = new StringWriter();
+        PrintWriter pw = new PrintWriter(w);
+
+        try {
+            int lineNumber = 1;
+            for (String s = r.readLine(); s != null; s = r.readLine()) {
+                pw.format("%3s", Integer.toString(lineNumber++));
+                pw.write(": ");
+                pw.write(s);
+                pw.write('\n');
+            }
+            ctx.getResponseWriter().writeText(w.toString(), null);
+        } catch (IOException ioe) {
+            if (LOGGER.isLoggable(Level.SEVERE)) {
+                LOGGER.log(Level.SEVERE,
+                           ioe.toString(),
+                           ioe);
+            }
+        }
+
+    }
+}
diff --git a/jsf-demo/basic-ajax/src/main/java/basicajax/HideNShow.java b/jsf-demo/basic-ajax/src/main/java/basicajax/HideNShow.java
new file mode 100644
index 0000000..671000e
--- /dev/null
+++ b/jsf-demo/basic-ajax/src/main/java/basicajax/HideNShow.java
@@ -0,0 +1,66 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package basicajax;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.SessionScoped;
+import javax.faces.event.ActionEvent;
+import java.io.Serializable;
+
+ at ManagedBean(name = "hidenshow")
+ at SessionScoped
+public class HideNShow implements Serializable {
+
+
+    private static final long serialVersionUID = -7299773608161438216L;
+
+    Boolean render = false;
+    
+    public Boolean getRender() {
+        return render;
+    }
+
+    @SuppressWarnings({"UnusedDeclaration"})
+    public void toggle(ActionEvent ae) {
+        render = !render;
+    }
+
+}
diff --git a/jsf-demo/basic-ajax/src/main/java/basicajax/ListenerBean.java b/jsf-demo/basic-ajax/src/main/java/basicajax/ListenerBean.java
new file mode 100644
index 0000000..732f333
--- /dev/null
+++ b/jsf-demo/basic-ajax/src/main/java/basicajax/ListenerBean.java
@@ -0,0 +1,77 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package basicajax;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.ViewScoped;
+import javax.faces.event.AjaxBehaviorEvent;
+
+ at ManagedBean(name="listenBean")
+ at ViewScoped
+public class ListenerBean {
+
+    private String hello = "Hello";
+
+    private int length = hello.length();
+
+    private int eventCount = 0;
+
+    public String getHello() {
+        return hello;
+    }
+
+    public void setHello(String hello) {
+        this.hello = hello;
+    }
+
+    public int getLength() {
+        return length;
+    }
+
+    public int getEventCount() {
+        return eventCount;
+    }
+
+    public void update(AjaxBehaviorEvent event) {
+        length = hello.length();
+        eventCount++;
+    }
+}
diff --git a/jsf-demo/basic-ajax/src/main/java/basicajax/RedirectBean.java b/jsf-demo/basic-ajax/src/main/java/basicajax/RedirectBean.java
new file mode 100644
index 0000000..001fc3c
--- /dev/null
+++ b/jsf-demo/basic-ajax/src/main/java/basicajax/RedirectBean.java
@@ -0,0 +1,85 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package basicajax;
+
+import javax.faces.bean.RequestScoped;
+import javax.faces.bean.ManagedBean;
+import javax.faces.context.FacesContext;
+import javax.faces.context.ExternalContext;
+import javax.faces.FacesException;
+import javax.faces.application.ViewHandler;
+import javax.faces.event.ValueChangeEvent;
+import java.io.IOException;
+
+ at ManagedBean
+ at RequestScoped
+public class RedirectBean {
+
+    public String redirect() {
+
+        FacesContext ctx = FacesContext.getCurrentInstance();
+        ExternalContext extContext = ctx.getExternalContext();
+        String url = extContext.encodeActionURL(ctx.getApplication().getViewHandler().getActionURL(ctx, "/redirecttarget1.xhtml"));
+        try {
+            extContext.redirect(url);
+        } catch (IOException ioe) {
+            throw new FacesException(ioe);
+        }
+        return null;
+    }
+
+    public void redirectPage(ValueChangeEvent evt) {
+
+        FacesContext ctx = FacesContext.getCurrentInstance();
+        ExternalContext extContext = ctx.getExternalContext();
+        ViewHandler viewHandler =  ctx.getApplication().getViewHandler();
+                
+        String newurl = (String) evt.getNewValue();
+
+        String url = viewHandler.getActionURL(ctx, newurl);
+
+        try {
+            extContext.redirect(url);
+        } catch (IOException ioe) {
+            throw new FacesException(ioe);
+        }
+    }
+}
diff --git a/jsf-demo/basic-ajax/src/main/webapp/WEB-INF/basicajax-taglib.xml b/jsf-demo/basic-ajax/src/main/webapp/WEB-INF/basicajax-taglib.xml
new file mode 100644
index 0000000..452c86e
--- /dev/null
+++ b/jsf-demo/basic-ajax/src/main/webapp/WEB-INF/basicajax-taglib.xml
@@ -0,0 +1,65 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<facelet-taglib xmlns="http://java.sun.com/xml/ns/javaee"
+              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+              xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facelettaglibrary_2_0.xsd"
+              version="2.0">
+
+    <namespace>
+        https://javaserverfaces.dev.java.net/demo/basic-ajax
+    </namespace>
+<!--
+    <tag>
+        <tag-name>greet</tag-name>
+        <handler-clas>declarativeajax.GreetBehaviorHandler</handler-class>
+    </tag>
+-->
+
+    <function>
+        <function-name>writeSource</function-name>
+        <function-class>basicajax.Functions</function-class>
+        <function-signature>void writeSource(javax.faces.context.FacesContext,java.lang.String)</function-signature>
+    </function>
+
+</facelet-taglib>
diff --git a/jsf-demo/basic-ajax/src/main/webapp/WEB-INF/demo.xml b/jsf-demo/basic-ajax/src/main/webapp/WEB-INF/demo.xml
new file mode 100644
index 0000000..2a79603
--- /dev/null
+++ b/jsf-demo/basic-ajax/src/main/webapp/WEB-INF/demo.xml
@@ -0,0 +1,173 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<demo-info>
+
+    <demo>
+        <name>Simple JSF Ajax Count Page</name>
+        <page>count.jsf</page>
+        <sources>
+            <source>
+                <label>JSF Page</label>
+                <path>/count.xhtml</path>
+            </source>
+            <source>
+                <label>Managed Bean</label>
+                <path>/WEB-INF/classes/basicajax/Count.java</path>
+            </source>
+        </sources>
+    </demo>
+
+    <!-- =================================================================== -->
+
+    <demo>
+        <name>Show and Hide Demo</name>
+        <page>hidenshow.jsf</page>
+        <sources>
+            <source>
+                <label>JSF Page</label>
+                <path>/hidenshow.xhtml</path>
+            </source>
+            <source>
+                <label>Managed Bean</label>
+                <path>/WEB-INF/classes/basicajax/HideNShow.java</path>
+            </source>
+        </sources>
+    </demo>
+
+    <!-- =================================================================== -->
+
+    <demo>
+        <name>First Echo Demo</name>
+        <page>echo1.jsf</page>
+        <sources>
+            <source>
+                <label>JSF Page</label>
+                <path>/echo1.xhtml</path>
+            </source>
+            <source>
+                <label>Backing Javascript</label>
+                <path>/resources/javascript/echo1.js</path>
+            </source>
+            <source>
+                <label>Managed Bean</label>
+                <path>/WEB-INF/classes/basicajax/Echo.java</path>
+            </source>
+        </sources>
+    </demo>
+
+    <!-- =================================================================== -->
+
+    <demo>
+        <name>Second Echo Demo</name>
+        <page>echo2.jsf</page>
+        <sources>
+            <source>
+                <label>JSF Page</label>
+                <path>/echo2.xhtml</path>
+            </source>
+            <source>
+                <label>Managed Bean</label>
+                <path>/WEB-INF/classes/basicajax/Echo.java</path>
+            </source>
+        </sources>
+    </demo>
+
+    <!-- =================================================================== -->
+
+    <demo>
+        <name>Redirect Demo</name>
+        <page>redirect.jsf</page>
+        <sources>
+            <source>
+                <label>JSF Page</label>
+                <path>/redirect.xhtml</path>
+            </source>
+            <source>
+                <label>Target Page (1 of 3)</label>
+                <path>/redirecttarget1.xhtml</path>
+            </source>
+            <source>
+                <label>Managed Bean</label>
+                <path>/WEB-INF/classes/basicajax/RedirectBean.java</path>
+            </source>
+        </sources>
+    </demo>
+
+    <!-- =================================================================== -->
+
+    <demo>
+        <name>Listener Demo</name>
+        <page>listener.jsf</page>
+        <sources>
+            <source>
+                <label>JSF Page</label>
+                <path>/listener.xhtml</path>
+            </source>
+            <source>
+                <label>Managed Bean</label>
+                <path>/WEB-INF/classes/basicajax/ListenerBean.java</path>
+            </source>
+        </sources>
+    </demo>
+    <!-- =================================================================== -->
+
+    <demo>
+        <name>Aggregation Demo</name>
+        <page>aggregate.jsf</page>
+        <sources>
+            <source>
+                <label>JSF Page</label>
+                <path>/aggregate.xhtml</path>
+            </source>
+            <source>
+                <label>Backing Javascript</label>
+                <path>/resources/javascript/aggregate.js</path>
+            </source>
+            <source>
+                <label>Managed Bean</label>
+                <path>/WEB-INF/classes/basicajax/Echo.java</path>
+            </source>
+        </sources>
+    </demo>
+</demo-info>
diff --git a/jsf-demo/basic-ajax/src/main/webapp/WEB-INF/demotemplate.xhtml b/jsf-demo/basic-ajax/src/main/webapp/WEB-INF/demotemplate.xhtml
new file mode 100644
index 0000000..1fe6c5b
--- /dev/null
+++ b/jsf-demo/basic-ajax/src/main/webapp/WEB-INF/demotemplate.xhtml
@@ -0,0 +1,61 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xml:lang="en" lang="en">
+<h:head>
+     <h:outputStylesheet name="stylesheet.css"/>
+    <title>${title}</title>
+</h:head>
+
+<body>
+<div id="container">
+<ui:insert name="content"/>
+</div>
+</body>
+</html>
diff --git a/jsf-demo/basic-ajax/src/main/webapp/WEB-INF/web.xml b/jsf-demo/basic-ajax/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..c3ae0e1
--- /dev/null
+++ b/jsf-demo/basic-ajax/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,89 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<web-app version="2.5"
+         xmlns="http://java.sun.com/xml/ns/javaee"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" >
+    
+    <display-name>Basic Ajax</display-name>
+    <description>
+        JavaServer Faces Basic Ajax Demo Sample Application
+    </description>
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>server</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>Development</param-value>
+    </context-param>
+
+    <context-param>
+        <param-name>javax.faces.FACELETS_LIBRARIES</param-name>
+        <param-value>/WEB-INF/basicajax-taglib.xml</param-value>
+    </context-param>
+
+    <!-- Faces Servlet -->
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+    </servlet>
+
+
+    <!-- Faces Servlet Mapping -->
+
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>*.jsf</url-pattern>
+    </servlet-mapping>
+
+    <!-- Welcome File Configuration -->
+
+    <welcome-file-list>
+        <welcome-file>index.html</welcome-file>
+    </welcome-file-list>
+
+</web-app>
+
+
diff --git a/jsf-demo/basic-ajax/src/main/webapp/aggregate.xhtml b/jsf-demo/basic-ajax/src/main/webapp/aggregate.xhtml
new file mode 100644
index 0000000..7a5e3bc
--- /dev/null
+++ b/jsf-demo/basic-ajax/src/main/webapp/aggregate.xhtml
@@ -0,0 +1,74 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+<f:view contentType="text/html; charset=iso-8859-1"/>
+<h:head>
+    <title>Ajax Aggregation</title>
+</h:head>
+<h:body>
+    <h:form id="form1" prependId="false">
+        <h:outputScript name="jsf.js" library="javax.faces" target="head"/>
+        <h:outputScript name="javascript/aggregate.js" target="head"/>
+
+        Output: <h:outputText id="out1" value="#{echo.str}"/>
+        <br/>
+        Input: <h:inputText id="in2" value="#{echo.str}" autocomplete="off"
+                            onkeyup="aggregate('out1 in1', this)"/>
+        <br/>
+        Status:
+        <br/>
+        <textarea id="status" rows="10" cols="50" readonly="readonly"/>
+    </h:form>
+    <hr/>
+    <p>
+        <a href="http://weblogs.java.net/blog/driscoll/archive/2009/10/19/request-aggregation-jsf-2-ajax">
+            Blog discussing this example.
+        </a>
+    </p>
+</h:body>
+</html>
diff --git a/jsf-demo/basic-ajax/src/main/webapp/count.xhtml b/jsf-demo/basic-ajax/src/main/webapp/count.xhtml
new file mode 100644
index 0000000..a19f356
--- /dev/null
+++ b/jsf-demo/basic-ajax/src/main/webapp/count.xhtml
@@ -0,0 +1,73 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+<h:head>
+    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
+    <title>Ajax</title>
+</h:head>
+<h:body>
+    <h:form id="form1" prependId="false">
+        <h:outputScript name="jsf.js" library="javax.faces" target="head"/>
+        <h:outputText id="out1" value="#{count.count}"/>
+        <br/>
+        <!-- Increment the counter on the server, and the client -->
+        <h:commandButton id="button1" value="Count"
+                         onclick="jsf.ajax.request(this, event, {execute: this.id, render: 'out1'}); return false;"/>
+        <br/>
+        <!-- Resets the counter, doesn't refresh the page -->
+        <h:commandButton id="reset" value="reset"
+                            onclick="jsf.ajax.request(this, event, {execute:'reset', render: 'out1'}); return false;"
+                            actionListener="#{count.reset}"/>
+        <h:messages/>
+    </h:form>
+    <p>
+        <h:outputLink value="http://weblogs.java.net/blog/driscoll/archive/2008/11/a_simple_ajax_j.html">
+            Blog discussing this example.
+        </h:outputLink>
+    </p>
+</h:body>
+</html>
+
diff --git a/jsf-demo/basic-ajax/src/main/webapp/displaysource.xhtml b/jsf-demo/basic-ajax/src/main/webapp/displaysource.xhtml
new file mode 100644
index 0000000..15819d3
--- /dev/null
+++ b/jsf-demo/basic-ajax/src/main/webapp/displaysource.xhtml
@@ -0,0 +1,62 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:d="https://javaserverfaces.dev.java.net/demo/basic-ajax"
+      xml:lang="en" lang="en">
+<head>
+    <title>Source: #{param.file}</title>
+</head>
+<body>
+    <h3>Source code for:  #{param.file}</h3>
+
+    <hr/>
+
+    <pre>
+#{d:writeSource(facesContext, param.file)}
+    </pre>
+
+</body>
+</html>
diff --git a/jsf-demo/basic-ajax/src/main/webapp/echo1.xhtml b/jsf-demo/basic-ajax/src/main/webapp/echo1.xhtml
new file mode 100644
index 0000000..b854789
--- /dev/null
+++ b/jsf-demo/basic-ajax/src/main/webapp/echo1.xhtml
@@ -0,0 +1,76 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+<f:view contentType="text/html; charset=iso-8859-1"/>
+<h:head>
+    <title>Ajax Echo</title>
+</h:head>
+<h:body>
+    <h:form id="form1">    <!-- Note that unlike previous examples, prependid='true' -->
+        <h:outputScript name="jsf.js" library="javax.faces" target="head"/>
+        <h:outputScript name="javascript/echo1.js" target="head"/>
+
+        Output: <h:outputText id="out1" value="#{echo.str}"/>
+        <br/>
+        Input: <h:inputText id="in1" value="#{echo.str}"/>
+        <!-- Increment the counter on the server, and the client -->
+        <br/>
+        <h:commandButton id="button1" value="Echo"
+                         onclick="return buttonpush('form1:out1 form1:in1', 'form1:button1 form1:in1', this, event);"/>
+        <br/>
+        <!-- Resets the string, refreshes the form, but not the page -->
+        <h:commandButton id="reset" value="reset"
+                            onclick="return resetpush(this, event);"
+                            actionListener="#{echo.reset}"/>
+        <!-- Reloads the page, doesn't reset the string -->
+        <h:commandButton id="reload" value="reload"/>
+        <h:messages/>
+    </h:form>
+
+</h:body>
+</html>
diff --git a/jsf-demo/basic-ajax/src/main/webapp/echo2.xhtml b/jsf-demo/basic-ajax/src/main/webapp/echo2.xhtml
new file mode 100644
index 0000000..df5dcb7
--- /dev/null
+++ b/jsf-demo/basic-ajax/src/main/webapp/echo2.xhtml
@@ -0,0 +1,73 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+<f:view contentType="text/html; charset=iso-8859-1"/>
+<h:head>
+    <title>Ajax</title>
+</h:head>
+<h:body>
+    <h:form id="form1">    <!-- Note that unlike previous examples, prependid='true' -->
+        Output: <h:outputText id="out1" value="#{echo.str}"/>
+        <br/>
+        Input: <h:inputText id="in1" autocomplete="off" value="#{echo.str}">
+            <f:ajax render="out1"/>
+        </h:inputText>
+        <br/>
+        <!-- A no-op button, just to lose the focus from "in1" -->
+        <h:commandButton id="button1" value="Echo" type="button"/>
+        <br/>
+        <!-- Resets the string, refreshes the form, but not the page -->
+        <h:commandButton id="reset" value="reset" actionListener="#{echo.reset}">
+            <f:ajax render="@form" />
+        </h:commandButton>
+        <!-- Reloads the page, doesn't reset the string -->
+        <h:commandButton id="reload" value="reload"/>
+        <h:messages/>
+    </h:form>
+</h:body>
+</html>
diff --git a/jsf-demo/basic-ajax/src/main/webapp/hidenshow.xhtml b/jsf-demo/basic-ajax/src/main/webapp/hidenshow.xhtml
new file mode 100644
index 0000000..b6606ad
--- /dev/null
+++ b/jsf-demo/basic-ajax/src/main/webapp/hidenshow.xhtml
@@ -0,0 +1,77 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+<f:view contentType="text/html"/>
+<h:head>
+    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
+    <title>Ajax</title>
+</h:head>
+<h:body>
+    <h:form id="form1" prependId="false">
+        <h:outputScript name="jsf.js" library="javax.faces" target="head"/>
+
+        <h2>Show / Hide based on backing bean</h2>
+        <!-- Note we're using a PanelGroup - this is because if rendered=false,
+             ajax renders will *fail*, since the unrendered component will
+             not be in page -->
+        <h:panelGroup id="pg1">
+            <h:outputText id="out1" value="Show" rendered="#{hidenshow.render}"/>
+        </h:panelGroup>
+        <br/>
+        <h:commandButton id="button1" value="Show/Hide"
+                         onclick="jsf.ajax.request(this, event, {execute: 'button1', render: 'pg1'}); return false;"
+                         actionListener="#{hidenshow.toggle}"/>
+        <br/>
+        <h:outputText value="Reload entire page: "/>
+        <h:commandButton id="reload" value="reload"/>
+        <h:messages/>
+    </h:form>
+
+</h:body>
+</html>
+
diff --git a/jsf-demo/basic-ajax/src/main/webapp/home.xhtml b/jsf-demo/basic-ajax/src/main/webapp/home.xhtml
new file mode 100644
index 0000000..4d7bb09
--- /dev/null
+++ b/jsf-demo/basic-ajax/src/main/webapp/home.xhtml
@@ -0,0 +1,106 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xml:lang="en" lang="en">
+<head>
+    <title>Should Not Be Displayed</title>
+</head>
+<body>   <!-- template="/WEB-INF/demotemplate.xhtml" -->
+<ui:composition  template="/WEB-INF/demotemplate.xhtml" >
+    <ui:param name="title" value="JavaServer Faces 2.0 Basic Ajax Demo"/>
+    <ui:define name="content">
+        <table id="demo-table" border="1" cellpadding="1">
+            <caption>
+                ${title}
+            </caption>
+            <thead>
+                <tr>
+                    <th>Demo Name</th>
+                    <th>Related Source Files</th>
+                    <th>Execute</th>
+                </tr>
+            </thead>
+            <tbody>
+                <ui:repeat var="demo" value="#{demoBean.demoBeans}">
+                    <tr>
+                        <td>
+                            <h:outputText value="#{demo.demoName}"/>
+                        </td>
+                        <td>
+                            <table>
+                                <ui:repeat var="sourceInfo" value="#{demo.sourceInfo}">
+                                <tr>
+                                        <td>
+                                            <h:outputText value="#{sourceInfo.label}: "/>
+                                        </td>
+                                        <td>
+                                            <h:outputLink value="displaysource.jsf">
+                                            <h:outputText value="#{sourceInfo.sourceFilePath}"/>
+                                                <f:param name="file" value="#{sourceInfo.sourceFilePath}"/>
+                                            </h:outputLink>
+                                        </td>
+                                    </tr>
+                                </ui:repeat>
+                            </table>
+                        </td>
+                        <td align="center">
+                            <h:outputLink value="#{demo.page}">
+                                <h:graphicImage style="border:none"
+                                                alt="Execute"
+                                                name="images/execute.gif"/>
+                            </h:outputLink>
+                        </td>
+                    </tr>
+                </ui:repeat>
+            </tbody>
+        </table>
+    </ui:define>
+</ui:composition>
+</body>
+</html>
diff --git a/jsf-demo/basic-ajax/src/main/webapp/index.html b/jsf-demo/basic-ajax/src/main/webapp/index.html
new file mode 100644
index 0000000..caaf203
--- /dev/null
+++ b/jsf-demo/basic-ajax/src/main/webapp/index.html
@@ -0,0 +1,47 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<html>
+<head>
+<meta http-equiv="Refresh" content="0;url=home.jsf">
+</head>
+</html>
diff --git a/jsf-demo/basic-ajax/src/main/webapp/listener.xhtml b/jsf-demo/basic-ajax/src/main/webapp/listener.xhtml
new file mode 100644
index 0000000..d3d05a7
--- /dev/null
+++ b/jsf-demo/basic-ajax/src/main/webapp/listener.xhtml
@@ -0,0 +1,70 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+<f:view contentType="text/html; charset=iso-8859-1"/>
+    <h:head><title>Ajax Tag Event and Listener Demo</title></h:head>
+    <h:body>
+        <h:form id="form">
+            <br/>
+            Echo test: <h:outputText id="out" value="#{listenBean.hello}"/>
+            <br/>
+            String Length: <h:outputText id="count" value="#{listenBean.length}"/>
+            <br/>
+            <h:inputText id="in" value="#{listenBean.hello}" autocomplete="off">
+                <f:ajax event="keyup" render="out count eventcount" listener="#{listenBean.update}"/>
+            </h:inputText>
+            <br/>
+            Event count: <h:outputText id="eventcount" value="#{listenBean.eventCount}"/>
+        </h:form>
+        <hr/>
+        <p>
+            <a href="http://weblogs.java.net/blog/driscoll/archive/2009/09/26/ajax-tag-events-and-listeners">
+                Blog discussing this example.
+            </a>
+        </p>
+    </h:body>
+</html>
+
diff --git a/jsf-demo/basic-ajax/src/main/webapp/redirect.xhtml b/jsf-demo/basic-ajax/src/main/webapp/redirect.xhtml
new file mode 100644
index 0000000..d8aa04d
--- /dev/null
+++ b/jsf-demo/basic-ajax/src/main/webapp/redirect.xhtml
@@ -0,0 +1,66 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+<f:view contentType="text/html; charset=iso-8859-1"/>
+<h:head>
+    <title>Ajax Redirect</title>
+</h:head>
+<h:body>
+    <h1>Ajax Redirect</h1>
+    <h:form id="form">
+        <h:selectOneMenu valueChangeListener="#{redirectBean.redirectPage}">
+            <f:selectItem itemLabel="Pick One" noSelectionOption="true" />
+            <f:selectItem itemValue="/redirecttarget1.xhtml" itemLabel="Page 1"/>
+            <f:selectItem itemValue="/redirecttarget2.xhtml" itemLabel="Page 2"/>
+            <f:selectItem itemValue="/redirecttarget3.xhtml" itemLabel="Page 3"/>
+            <f:ajax/>
+        </h:selectOneMenu>
+    </h:form>
+</h:body>
+</html>
diff --git a/jsf-demo/basic-ajax/src/main/webapp/redirecttarget1.xhtml b/jsf-demo/basic-ajax/src/main/webapp/redirecttarget1.xhtml
new file mode 100644
index 0000000..2f6d42b
--- /dev/null
+++ b/jsf-demo/basic-ajax/src/main/webapp/redirecttarget1.xhtml
@@ -0,0 +1,58 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+<f:view contentType="text/html; charset=iso-8859-1"/>
+<head>
+    <title>Redirect Target</title>
+</head>
+<body>
+<h1><h:outputText id="redirect" value="Redirect Target 1"/></h1>
+<p><h:form><h:commandButton value="Go Back" action="redirect"/></h:form></p>
+</body>
+</html>
diff --git a/jsf-demo/basic-ajax/src/main/webapp/redirecttarget2.xhtml b/jsf-demo/basic-ajax/src/main/webapp/redirecttarget2.xhtml
new file mode 100644
index 0000000..cfc927a
--- /dev/null
+++ b/jsf-demo/basic-ajax/src/main/webapp/redirecttarget2.xhtml
@@ -0,0 +1,58 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+<f:view contentType="text/html; charset=iso-8859-1"/>
+<head>
+    <title>Redirect Target</title>
+</head>
+<body>
+<h1><h:outputText id="redirect" value="Redirect Target 2"/></h1>
+<p><h:form><h:commandButton value="Go Back" action="redirect"/></h:form></p>
+</body>
+</html>
diff --git a/jsf-demo/basic-ajax/src/main/webapp/redirecttarget3.xhtml b/jsf-demo/basic-ajax/src/main/webapp/redirecttarget3.xhtml
new file mode 100644
index 0000000..dba2d5c
--- /dev/null
+++ b/jsf-demo/basic-ajax/src/main/webapp/redirecttarget3.xhtml
@@ -0,0 +1,58 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+<f:view contentType="text/html; charset=iso-8859-1"/>
+<head>
+    <title>Redirect Target</title>
+</head>
+<body>
+<h1><h:outputText id="redirect" value="Redirect Target 3"/></h1>
+<p><h:form><h:commandButton value="Go Back" action="redirect"/></h:form></p>
+</body>
+</html>
diff --git a/jsf-demo/basic-ajax/src/main/webapp/resources/images/execute.gif b/jsf-demo/basic-ajax/src/main/webapp/resources/images/execute.gif
new file mode 100644
index 0000000..f64d70f
Binary files /dev/null and b/jsf-demo/basic-ajax/src/main/webapp/resources/images/execute.gif differ
diff --git a/jsf-demo/basic-ajax/src/main/webapp/resources/javascript/aggregate.js b/jsf-demo/basic-ajax/src/main/webapp/resources/javascript/aggregate.js
new file mode 100644
index 0000000..e667b81
--- /dev/null
+++ b/jsf-demo/basic-ajax/src/main/webapp/resources/javascript/aggregate.js
@@ -0,0 +1,65 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+var increment = 1000; //  1 sec timeout, only to show results.  Should be more like 50ms
+var token;
+function aggregate(target, element) {
+    window.clearTimeout(token);
+    addStatusMessage("cleared request, requeued");
+    var send = function send() {
+        jsf.ajax.request(element, null, {render: target});
+    };
+    token = window.setTimeout(send, increment);
+}
+
+function addStatusMessage(message) {
+    var statusElement = document.getElementById("status");
+    var status = statusElement.value;
+    var now = new Date();
+    var timestamp = now.getHours() + ':' + now.getMinutes() + ':' + now.getSeconds();
+    status = timestamp + ' ' + message + '\n' + status;
+    statusElement.value = status;
+}
+
+jsf.ajax.addOnEvent(function(data) {
+    if (data.status === "begin") {
+        addStatusMessage("request sent");
+    }
+});
diff --git a/jsf-demo/basic-ajax/src/main/webapp/resources/javascript/echo1.js b/jsf-demo/basic-ajax/src/main/webapp/resources/javascript/echo1.js
new file mode 100644
index 0000000..f9f057f
--- /dev/null
+++ b/jsf-demo/basic-ajax/src/main/webapp/resources/javascript/echo1.js
@@ -0,0 +1,61 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+// Javascript for Basic Ajax Example
+
+function buttonpush(target, exec, element, event) {
+    try {
+        jsf.ajax.request(element, event, {execute: exec, render: target});
+    } catch (ex) {
+        // Handle errors here
+        alert(ex);
+    }
+    return false;
+} 
+
+function resetpush(element, event) {
+    try {
+        jsf.ajax.request(element, event, {execute: element.id});
+    } catch (ex) {
+        // Handle errors here
+        alert(ex);
+    }
+    return false;
+}
diff --git a/jsf-demo/basic-ezcomp/README.txt b/jsf-demo/basic-ezcomp/README.txt
new file mode 100644
index 0000000..9efa6fc
--- /dev/null
+++ b/jsf-demo/basic-ezcomp/README.txt
@@ -0,0 +1,16 @@
+This demo, the basic-ezcomp demo, is a collection of small example programs that have
+been placed into a demo framework.
+
+The best way to understand the demo is to simply run it - there are links in the
+home page to each example, as well as the code backing each example.
+
+The following examples are part of this demo:
+
+out - create a simple component that outputs text with a yellow background
+inout - a simple component that accepts input
+contract - using a bean as an attribute value
+spinner - basic spinner component
+spinnerStyled - adding styling to the spinner component
+spinnerFinal - making the spinner work if you use it multiple times in a page
+nav - component that navigates to a new page
+actionListener - component that takes an f:actionListener child
diff --git a/jsf-demo/basic-ezcomp/build.xml b/jsf-demo/basic-ezcomp/build.xml
new file mode 100644
index 0000000..57d2600
--- /dev/null
+++ b/jsf-demo/basic-ezcomp/build.xml
@@ -0,0 +1,121 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project name="basic-ezcomp" default="build" basedir=".">
+
+
+    <!-- <property file="${user.home}/build.properties"/> -->
+    <property file="../../build.properties"/>
+    <import file="${jsf.build.home}/common/ant/common.xml"/>
+
+    <!-- Configure the context path for this application -->
+    <property name="context.path" value="/basic-ezcomp"/>
+    <property name="example" value="basic-ezcomp"/>
+    <property name="build" value="${basedir}/build"/>
+
+
+    <path id="classpath">
+        <pathelement location="${javax.faces-api.jar}"/>
+        <pathelement location="${javax.faces.jar}"/>
+        <pathelement location="${build}/WEB-INF/classes"/>
+        <path refid="compile.classpath"/>
+    </path>
+
+    <target name="init">
+        <tstamp/>
+    </target>
+
+    <target name="clean">
+        <delete dir="${build}"/>
+        <delete dir="${context.path}"/>
+    </target>
+
+    <target name="prepare" depends="init"
+            description="Create build directories.">
+        <mkdir dir="${build}/${example}/"/>
+        <mkdir dir="${build}/${example}/WEB-INF"/>
+        <mkdir dir="${build}/${example}/WEB-INF/classes"/>
+    </target>
+
+    <target name="build" depends="prepare"
+            description="Compile Java files and copy static files.">
+        <jsf.javac srcdir="src"
+                   destdir="${build}/${example}/WEB-INF/classes">
+            <classpath>
+                <path refid="classpath"/>
+            </classpath>
+        </jsf.javac>
+        <copy todir="${build}/${example}/WEB-INF">
+            <fileset dir="src/main/webapp/WEB-INF">
+                <include name="*.xml"/>
+                <include name="*.xhtml"/>
+            </fileset>
+        </copy>
+        <copy todir="${build}/${example}/WEB-INF/classes">
+            <fileset dir="src"/>
+        </copy>
+
+        <copy todir="${build}/${example}/">
+            <fileset dir="src/main/webapp">
+                <include name="*.html"/>
+                <include name="*.xhtml"/>
+                <include name="*.gif"/>
+                <include name="*.jpg"/>
+                <include name="*.jsp"/>
+                <include name="*.xml"/>
+            </fileset>
+        </copy>
+        <copy todir="${build}/${example}/resources">
+            <fileset dir="src/main/webapp/resources"/>
+        </copy>
+        
+        <jsf.war basedir="${build}"
+                 archive-name="${example}"
+                 webxml="${build}/${example}/WEB-INF/web.xml">
+            <archive-elements>
+                <zipfileset dir="${build}/${example}"/>
+            </archive-elements>
+        </jsf.war>
+    </target>
+
+</project>
+
diff --git a/jsf-demo/basic-ezcomp/pom.xml b/jsf-demo/basic-ezcomp/pom.xml
new file mode 100644
index 0000000..4502a3a
--- /dev/null
+++ b/jsf-demo/basic-ezcomp/pom.xml
@@ -0,0 +1,191 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+    <modelVersion>4.0.0</modelVersion>
+    <groupId>com.sun.faces</groupId>
+    <artifactId>basic-ezcomp</artifactId>
+    <packaging>war</packaging>
+    <name>${project.artifactId}</name>
+    <url>https://mojarra.dev.java.net/</url>
+    <description>Example App</description>
+    <version>1.0</version>
+
+    <build>
+        <defaultGoal>package</defaultGoal>
+        <sourceDirectory>src/main/java</sourceDirectory>
+        <finalName>${project.artifactId}</finalName>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>RELEASE</version>
+                <configuration>
+                    <source>1.5</source>
+                    <target>1.5</target>
+                </configuration>
+            </plugin>
+            <plugin>
+                <artifactId>maven-antrun-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <phase>compile</phase>
+                        <configuration>
+                            <tasks>
+                                <copy todir="${project.build.outputDirectory}">
+                                    <fileset dir="src/main/java"/>
+                                </copy>
+                            </tasks>
+                        </configuration>
+                        <goals>
+                            <goal>run</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+
+    <repositories>
+        <repository>
+            <id>java.net.m2</id>
+            <name>java.net m2 repo</name>
+            <url>http://download.java.net/maven/2</url>
+        </repository>
+       <repository>
+            <id>glassfish-repo-archive</id>
+            <name>Nexus repository collection for Glassfish</name>
+            <url>http://maven.glassfish.org/content/groups/glassfish</url>
+        </repository>
+        <repository>
+            <id>ibiblio.mirrors</id>
+            <url>http://mirrors.ibiblio.org/pub/mirrors/maven2</url>
+        </repository>
+        <repository>
+            <id>codehaus</id>
+            <name>codehaus</name>
+            <url>http://repository.codehaus.org</url>
+        </repository>
+    </repositories>
+
+    <dependencies>
+        <dependency>
+            <groupId>javax.faces</groupId>
+            <artifactId>jsf-api</artifactId>
+            <version>2.0</version>
+            <scope>provided</scope>
+        </dependency>
+
+        <!--
+          Uncomment these dependencies and comment out the one above to use
+          a simple servlet container instead of a Java EE Application Server
+        <dependency>
+            <groupId>com.sun.faces</groupId>
+            <artifactId>jsf-api</artifactId>
+            <version>[2.0.1,)</version>
+        </dependency>
+        <dependency>
+            <groupId>com.sun.faces</groupId>
+            <artifactId>jsf-impl</artifactId>
+            <version>[2.0.1,)</version>
+        </dependency>
+        <dependency>
+            <groupId>javax.servlet</groupId>
+            <artifactId>servlet-api</artifactId>
+            <version>2.5</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>javax.servlet.jsp</groupId>
+            <artifactId>jsp-api</artifactId>
+            <version>2.1</version>
+            <scope>provided</scope>
+        </dependency>
+         <dependency>
+             <groupId>javax.servlet.jsp.jstl</groupId>
+             <artifactId>jstl-api</artifactId>
+             <version>1.2</version>
+         </dependency>
+        <dependency>
+            <groupId>org.glassfish.web</groupId>
+            <artifactId>jstl-impl</artifactId>
+            <version>1.2</version>
+        </dependency>
+        -->
+
+    </dependencies>
+    <reporting>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-project-info-reports-plugin</artifactId>
+                <reportSets>
+                    <reportSet/>
+                </reportSets>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                    <source>1.5</source>
+                    <target>1.5</target>
+                </configuration>
+            </plugin>
+        </plugins>
+    </reporting>
+    <profiles>
+        <profile>
+            <id>default</id>
+            <!-- Tests are disabled by default.  See the test profile -->
+            <activation>
+                <activeByDefault>true</activeByDefault>
+            </activation>
+            <properties>
+                <maven.test.skip>true</maven.test.skip>
+            </properties>
+        </profile>
+    </profiles>
+</project>
+
diff --git a/jsf-demo/basic-ezcomp/src/main/java/ezcomp/ActionCaller.java b/jsf-demo/basic-ezcomp/src/main/java/ezcomp/ActionCaller.java
new file mode 100644
index 0000000..7d3124b
--- /dev/null
+++ b/jsf-demo/basic-ezcomp/src/main/java/ezcomp/ActionCaller.java
@@ -0,0 +1,64 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package ezcomp;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.RequestScoped;
+import javax.faces.context.FacesContext;
+import javax.faces.event.ActionEvent;
+import javax.faces.event.ActionListener;
+
+
+ at ManagedBean(name="actionBean")
+ at RequestScoped
+public class ActionCaller implements ActionListener {
+
+    public ActionListener getListener() {
+        return new ActionCaller();
+    }
+
+    public void processAction(ActionEvent e) {
+        FacesContext context = FacesContext.getCurrentInstance();
+        context.getExternalContext().getRequestMap().put("actionCalled",
+                Boolean.TRUE.toString());
+    }
+
+}
diff --git a/jsf-demo/basic-ezcomp/src/main/java/ezcomp/DemoResourceBean.java b/jsf-demo/basic-ezcomp/src/main/java/ezcomp/DemoResourceBean.java
new file mode 100644
index 0000000..c7b5cc0
--- /dev/null
+++ b/jsf-demo/basic-ezcomp/src/main/java/ezcomp/DemoResourceBean.java
@@ -0,0 +1,326 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package ezcomp;
+
+import java.util.Collection;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.ApplicationScoped;
+import javax.faces.context.FacesContext;
+import javax.faces.FacesException;
+import javax.annotation.PostConstruct;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+
+import org.w3c.dom.Document;
+import org.w3c.dom.NodeList;
+import org.w3c.dom.Node;
+
+/**
+ * This bean is responsible for building the metadata used in generating the
+ * demo index page.
+ */
+ at ManagedBean(name="demoBean",eager=true)
+ at ApplicationScoped
+public class DemoResourceBean {
+
+    /**
+     * The path and filename to the demo metadata descriptor.
+     */
+    private static final String DEMO_DESCRIPTOR = "/WEB-INF/demo.xml";
+
+
+    /**
+     * List of <code>DemoBean</code>s for this application instance.
+     */
+    private List<DemoBean> demoBeans;
+
+
+    // ---------------------------------------------------------- Public Methods
+
+
+    /**
+     * @return a <code>Collection</code> of <code>DemoBeans</code> for this
+     *  application.
+     */
+    public Collection<DemoBean> getDemoBeans() {
+
+        return demoBeans;
+
+    }
+
+
+    // --------------------------------------------------------- Private Methods
+
+
+    /**
+     * @return a non-validating, non-namespace aware <code>DocumentBuilder</code>
+     * @throws Exception if the DocumentBuilder cannot be obtained
+     */
+    private DocumentBuilder getBuilder() throws Exception {
+
+        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
+        dbf.setValidating(false);
+        dbf.setNamespaceAware(false);
+        return dbf.newDocumentBuilder();
+
+    }
+
+
+    /**
+     * @return the <code>Document</code> based off the content found within
+     *  {@link #DEMO_DESCRIPTOR}
+     * @throws Exception if an error occurs parsing {@link #DEMO_DESCRIPTOR}
+     */
+    private Document getDemoMetadata() throws Exception {
+
+        FacesContext ctx = FacesContext.getCurrentInstance();
+        DocumentBuilder builder = getBuilder();
+        return builder.parse(ctx.getExternalContext().getResourceAsStream(DEMO_DESCRIPTOR));
+
+    }
+
+
+    /**
+     * <p>
+     * This method is responsible for constructing the <code>DemoBean</code>
+     * instances based on the parsed content of {@link #DEMO_DESCRIPTOR}.
+     * </p>
+     * <p>
+     * This method will be called by the JSF managed bean facility before the
+     * bean is automatically pushed to the application scope when the
+     * application starts.
+     * </p>
+     */
+    @SuppressWarnings({"UnusedDeclaration"})
+    @PostConstruct
+    private void buildDemoMetaData()  {
+
+        try {
+            Document d = getDemoMetadata();
+            ArrayList<DemoBean> beans = new ArrayList<DemoBean>();
+            NodeList demoElements = d.getElementsByTagName("demo");
+            for (int i = 0, len = demoElements.getLength(); i < len; i++) {
+                DemoBean b = processDemo(demoElements.item(i));
+                if (b != null) {
+                    beans.add(b);
+                }
+            }
+            beans.trimToSize();
+            demoBeans = beans;
+        } catch (Exception e) {
+            throw new FacesException("Unable to initialize demo", e);
+        }
+
+    }
+
+
+    /**
+     * @param demoNode node representing the <demo> element.
+     * @return a new <code>DemoBean</code> instance based off the provided
+     *  <code>Node</code> and it's children.
+     */
+    private DemoBean processDemo(Node demoNode) {
+
+        NodeList children = demoNode.getChildNodes();
+        String name = null;
+        String page = null;
+        ArrayList<DemoSourceInfo> sourceInfo = new ArrayList<DemoSourceInfo>();
+        for (int i = 0, len = children.getLength(); i < len; i++) {
+            Node n = children.item(i);
+            if ("name".equals(n.getNodeName())) {
+                name = getNodeText(n);
+            } else if ("page".equals(n.getNodeName())) {
+                page = getNodeText(n);
+            } else if ("sources".equals(n.getNodeName())) {
+                NodeList sources = n.getChildNodes();
+                for (int j = 0, jlen = sources.getLength(); j < jlen; j++) {
+                    Node s = sources.item(j);
+                    DemoSourceInfo info = createDemoSourceInfo(s);
+                    if (info != null) {
+                        sourceInfo.add(createDemoSourceInfo(s));
+                    }
+                }
+            }
+        }
+
+        sourceInfo.trimToSize();
+
+        if (name != null && page != null && !sourceInfo.isEmpty()) {
+            return new DemoBean(name, page, sourceInfo);
+        }
+        return null;
+
+    }
+
+
+    /**
+     * @param sourceInfo node representing the <sources> element.
+     * @return a new <code>DemoSourceInfo</code> instance based off the provided
+     *  <code>Node</code> and it's children.
+     */
+    private DemoSourceInfo createDemoSourceInfo(Node sourceInfo) {
+
+        NodeList children = sourceInfo.getChildNodes();
+        String label = null;
+        String path = null;
+        for (int i = 0, len = children.getLength(); i < len; i++) {
+            Node n = children.item(i);
+            if ("label".equals(n.getNodeName())) {
+                label = getNodeText(n);
+            } else if ("path".equals(n.getNodeName())) {
+                path = getNodeText(n);
+            }
+        }
+
+        if (label != null && path != null) {
+            return new DemoSourceInfo(label, path);
+        }
+        return null;
+
+    }
+
+
+    /**
+     * @param node target <code>Node</code>
+     * @return the textual value of the <code>Node</code>
+     */
+    private String getNodeText(Node node) {
+
+        String res = null;
+        if (node != null) {
+            res = node.getTextContent();
+            if (res != null) {
+                res = res.trim();
+            }
+        }
+
+        return ((res != null && res.length() != 0) ? res : null);
+
+    }
+
+
+    // ---------------------------------------------------------- Nested Classes
+
+
+    public static final class DemoBean {
+
+        private List<DemoSourceInfo> sourceInfo;
+        private String demoName;
+        private String page;
+
+
+        DemoBean(String demoName, String page, List<DemoSourceInfo> sourceInfo) {
+
+            this.demoName = demoName;
+            this.page = page;
+            this.sourceInfo = sourceInfo;
+
+        }
+
+
+        // ------------------------------------------------------ Public Methods
+
+
+        public String getDemoName() {
+
+            return demoName;
+
+        }
+
+
+        public String getPage() {
+
+            return page;
+            
+        }
+
+
+        public List<DemoSourceInfo> getSourceInfo() {
+
+            return sourceInfo;
+
+        }
+
+
+    } // END DemoBean
+
+
+    public static final class DemoSourceInfo  {
+
+
+        private String label;
+        private String sourceFilePath;
+
+
+        // -------------------------------------------------------- Constructors
+
+
+        DemoSourceInfo(String label, String sourceFilePath) {
+
+            this.label = label;
+            this.sourceFilePath = sourceFilePath;
+
+        }
+
+
+        // ------------------------------------------------------ Public Methods
+
+
+        public String getLabel() {
+
+            return label;
+
+        }
+
+
+        public String getSourceFilePath() {
+
+            return sourceFilePath;
+
+        }
+
+
+    } // END DemoSourceInfo
+
+}
diff --git a/jsf-demo/basic-ezcomp/src/main/java/ezcomp/Functions.java b/jsf-demo/basic-ezcomp/src/main/java/ezcomp/Functions.java
new file mode 100644
index 0000000..6bb327e
--- /dev/null
+++ b/jsf-demo/basic-ezcomp/src/main/java/ezcomp/Functions.java
@@ -0,0 +1,102 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package ezcomp;
+
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.StringWriter;
+import java.io.BufferedReader;
+import java.io.PrintWriter;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import javax.faces.context.ExternalContext;
+import javax.faces.context.FacesContext;
+
+/**
+ * EL Functions.
+ */
+public class Functions {
+
+    private static final Logger LOGGER = Logger.getLogger(Functions.class.getName());
+
+
+    // ---------------------------------------------------------- Public Methods
+
+
+    /**
+     * <p>
+     * Write the file content to the current ResponseWriter.
+     * </p>
+     *
+     * @param ctx the <code>FacesContext</code> for the current request
+     * @param file the file to display
+     */
+    public static void writeSource(FacesContext ctx, String file) {
+
+        // PENDING - add logic to colorize key words/XML elements?
+        
+        ExternalContext extCtx = ctx.getExternalContext();
+        BufferedReader r =
+              new BufferedReader(
+                    new InputStreamReader(extCtx.getResourceAsStream(file)));
+        StringWriter w = new StringWriter();
+        PrintWriter pw = new PrintWriter(w);
+
+        try {
+            int lineNumber = 1;
+            for (String s = r.readLine(); s != null; s = r.readLine()) {
+                pw.format("%3s", Integer.toString(lineNumber++));
+                pw.write(": ");
+                pw.write(s);
+                pw.write('\n');
+            }
+            ctx.getResponseWriter().writeText(w.toString(), null);
+        } catch (IOException ioe) {
+            if (LOGGER.isLoggable(Level.SEVERE)) {
+                LOGGER.log(Level.SEVERE,
+                           ioe.toString(),
+                           ioe);
+            }
+        }
+        
+    }
+}
diff --git a/jsf-demo/basic-ezcomp/src/main/java/ezcomp/InOutBean.java b/jsf-demo/basic-ezcomp/src/main/java/ezcomp/InOutBean.java
new file mode 100644
index 0000000..2d3243b
--- /dev/null
+++ b/jsf-demo/basic-ezcomp/src/main/java/ezcomp/InOutBean.java
@@ -0,0 +1,95 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package ezcomp;
+
+import java.util.logging.Logger;
+import java.util.logging.Level;
+import java.io.Serializable;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.SessionScoped;
+
+/**
+ * Managed Bean for the inout composite component demo.
+ */
+
+ at ManagedBean(name = "inout")
+ at SessionScoped
+public class InOutBean implements Serializable {
+
+    private static final long serialVersionUID = -5980327949241062555L;
+
+    private static final Logger LOGGER =
+          Logger.getLogger(InOutBean.class.getName());
+
+    private String value = "Hello World!";
+
+
+    // ---------------------------------------------------------- Public Methods
+
+
+    public void setValue(String value) {
+
+        if (LOGGER.isLoggable(Level.INFO)) {
+            LOGGER.log(Level.INFO,
+                       "[InOutBean::setValue]: {0}",
+                       value);
+        }
+
+        this.value = value;
+
+    }
+
+    
+    public String getValue() {
+
+        if (LOGGER.isLoggable(Level.INFO)) {
+            LOGGER.log(Level.INFO,
+                       "[InOutBean::getValue]: {0}",
+                       value);
+        }
+
+        return value;
+
+    }
+
+
+}
diff --git a/jsf-demo/basic-ezcomp/src/main/java/ezcomp/MultiNumberHolder.java b/jsf-demo/basic-ezcomp/src/main/java/ezcomp/MultiNumberHolder.java
new file mode 100644
index 0000000..873a249
--- /dev/null
+++ b/jsf-demo/basic-ezcomp/src/main/java/ezcomp/MultiNumberHolder.java
@@ -0,0 +1,72 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package ezcomp;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.SessionScoped;
+import java.io.Serializable;
+
+ at ManagedBean(name="multinumber")
+ at SessionScoped
+public class MultiNumberHolder implements Serializable {
+
+    private static final long serialVersionUID = 6733229187968502934L;
+
+    private Integer i1 = 1;
+    private Integer i2 = 2;
+
+    public void setNumber1(Integer i) {
+        this.i1 = i;
+    }
+
+    public Integer getNumber1() {
+        return i1;
+    }
+
+    public void setNumber2(Integer i) {
+        this.i2 = i;
+    }
+
+    public Integer getNumber2() {
+        return i2;
+    }
+
+}
diff --git a/jsf-demo/basic-ezcomp/src/main/java/ezcomp/NavigationHandler.java b/jsf-demo/basic-ezcomp/src/main/java/ezcomp/NavigationHandler.java
new file mode 100644
index 0000000..dbe3174
--- /dev/null
+++ b/jsf-demo/basic-ezcomp/src/main/java/ezcomp/NavigationHandler.java
@@ -0,0 +1,75 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package ezcomp;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.RequestScoped;
+import java.io.Serializable;
+
+
+ at ManagedBean(name="navigation")
+ at RequestScoped
+public class NavigationHandler implements Serializable {
+
+    private static final long serialVersionUID = -3311984234775408121L;
+
+    private String target = "index";
+
+    public String getTarget() {
+        return target;
+    }
+
+    public void setTarget(String target) {
+        this.target = target;
+    }
+
+    public String goNav() {
+        return target;
+    }
+
+    public String goNav1() {
+        return "nav1";
+    }
+
+    public String goNav2() {
+        return "nav2";
+    }
+}
diff --git a/jsf-demo/basic-ezcomp/src/main/java/ezcomp/NumberHolder.java b/jsf-demo/basic-ezcomp/src/main/java/ezcomp/NumberHolder.java
new file mode 100644
index 0000000..9c41388
--- /dev/null
+++ b/jsf-demo/basic-ezcomp/src/main/java/ezcomp/NumberHolder.java
@@ -0,0 +1,62 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package ezcomp;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.SessionScoped;
+import java.io.Serializable;
+
+ at ManagedBean(name="number")
+ at SessionScoped
+public class NumberHolder implements Serializable {
+
+    private static final long serialVersionUID = -3487327247765235989L;
+
+    private Integer i = 0;
+
+    public void setNumber(Integer i) {
+        this.i = i;
+    }
+
+    public Integer getNumber() {
+        return i;
+    }
+}
diff --git a/jsf-demo/basic-ezcomp/src/main/webapp/WEB-INF/demo.xml b/jsf-demo/basic-ezcomp/src/main/webapp/WEB-INF/demo.xml
new file mode 100644
index 0000000..76f123e
--- /dev/null
+++ b/jsf-demo/basic-ezcomp/src/main/webapp/WEB-INF/demo.xml
@@ -0,0 +1,223 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<demo-info>
+
+    <demo>
+        <name>Simple Out</name>
+        <page>out.jsf</page>
+        <sources>
+            <source>
+                <label>Using Page</label>
+                <path>/out.xhtml</path>
+            </source>
+            <source>
+                <label>Composite Component</label>
+                <path>/resources/simpleout/out.xhtml</path>
+            </source>
+        </sources>
+    </demo>
+
+    <!-- =================================================================== -->
+
+    <demo>
+        <name>Simple In/Out</name>
+        <page>inout.jsf</page>
+        <sources>
+            <source>
+                <label>Using Page</label>
+                <path>/inout.xhtml</path>
+            </source>
+            <source>
+                <label>Composite Component</label>
+                <path>/resources/simpleinout/inout.xhtml</path>
+            </source>
+            <source>
+                <label>Managed Bean</label>
+                <path>/WEB-INF/classes/ezcomp/InOutBean.java</path>
+            </source>
+        </sources>
+    </demo>
+
+    <!-- =================================================================== -->
+
+    <demo>
+        <name>Simple Contract Usage</name>
+        <page>contract.jsf</page>
+        <sources>
+            <source>
+                <label>Using Page</label>
+                <path>/contract.xhtml</path>
+            </source>
+            <source>
+                <label>Composite Component</label>
+                <path>/resources/simplecontract/double.xhtml</path>
+            </source>
+            <source>
+                <label>Managed Bean</label>
+                <path>/WEB-INF/classes/ezcomp/MultiNumberHolder.java</path>
+            </source>
+        </sources>
+    </demo>
+
+        <!-- =================================================================== -->
+
+    <demo>
+        <name>Spinner Component</name>
+        <page>spinner.jsf</page>
+        <sources>
+            <source>
+                <label>Using Page</label>
+                <path>/spinner.xhtml</path>
+            </source>
+            <source>
+                <label>Composite Component</label>
+                <path>/resources/spinner/spinner.xhtml</path>
+            </source>
+            <source>
+                <label>Managed Bean</label>
+                <path>/WEB-INF/classes/ezcomp/NumberHolder.java</path>
+            </source>
+        </sources>
+    </demo>
+    <!-- =================================================================== -->
+
+<demo>
+    <name>Styled Spinner Component</name>
+    <page>spinnerStyled.jsf</page>
+    <sources>
+        <source>
+            <label>Using Page</label>
+            <path>/spinnerStyled.xhtml</path>
+        </source>
+        <source>
+            <label>Composite Component</label>
+            <path>/resources/spinnerStyled/spinner.xhtml</path>
+        </source>
+        <source>
+            <label>Composite Component CSS</label>
+            <path>/resources/spinnerStyled/spinner.css</path>
+        </source>
+        <source>
+            <label>Managed Bean</label>
+            <path>/WEB-INF/classes/ezcomp/NumberHolder.java</path>
+        </source>
+    </sources>
+</demo>
+
+    <!-- =================================================================== -->
+
+<demo>
+    <name>Final Spinner Component</name>
+    <page>spinnerFinal.jsf</page>
+    <sources>
+        <source>
+            <label>Using Page</label>
+            <path>/spinnerFinal.xhtml</path>
+        </source>
+        <source>
+            <label>Composite Component</label>
+            <path>/resources/spinnerFinal/spinner.xhtml</path>
+        </source>
+        <source>
+            <label>Composite Component CSS</label>
+            <path>/resources/spinnerFinal/spinner.css</path>
+        </source>
+        <source>
+            <label>Composite Component JS</label>
+            <path>/resources/spinnerFinal/spinner.js</path>
+        </source>
+        <source>
+            <label>Managed Bean</label>
+            <path>/WEB-INF/classes/ezcomp/MultiNumberHolder.java</path>
+        </source>
+    </sources>
+</demo>
+
+    <!-- =================================================================== -->
+
+<demo>
+    <name>Navigation Component</name>
+    <page>nav1.jsf</page>
+    <sources>
+        <source>
+            <label>Initial Using Page</label>
+            <path>/nav1.xhtml</path>
+        </source>
+        <source>
+            <label>Second Using Page</label>
+            <path>/nav2.xhtml</path>
+        </source>
+        <source>
+            <label>Composite Component</label>
+            <path>/resources/navbutton/nav.xhtml</path>
+        </source>
+        <source>
+            <label>Navigation Handler</label>
+            <path>/WEB-INF/classes/ezcomp/NavigationHandler.java</path>
+        </source>
+    </sources>
+</demo>
+
+    <!-- =================================================================== -->
+
+<demo>
+    <name>Action Listener</name>
+    <page>actionListener.jsf</page>
+    <sources>
+        <source>
+            <label>Initial Using Page</label>
+            <path>/actionListener.xhtml</path>
+        </source>
+        <source>
+            <label>Composite Component</label>
+            <path>/resources/action/actionButton.xhtml</path>
+        </source>
+        <source>
+            <label>Action Listener</label>
+            <path>/WEB-INF/classes/ezcomp/ActionCaller.java</path>
+        </source>
+    </sources>
+</demo>
+
+</demo-info>
diff --git a/jsf-demo/basic-ezcomp/src/main/webapp/WEB-INF/demotemplate.xhtml b/jsf-demo/basic-ezcomp/src/main/webapp/WEB-INF/demotemplate.xhtml
new file mode 100644
index 0000000..9934dc9
--- /dev/null
+++ b/jsf-demo/basic-ezcomp/src/main/webapp/WEB-INF/demotemplate.xhtml
@@ -0,0 +1,61 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xml:lang="en" lang="en">
+<h:head>
+    <h:outputStylesheet name="css/styles.css"/>
+    <title>${title}</title>
+</h:head>
+
+<body>
+<div id="container">
+<ui:insert name="content"/>
+</div>
+</body>
+</html>
diff --git a/jsf-demo/basic-ezcomp/src/main/webapp/WEB-INF/ezcomp-taglib.xml b/jsf-demo/basic-ezcomp/src/main/webapp/WEB-INF/ezcomp-taglib.xml
new file mode 100644
index 0000000..7c56f62
--- /dev/null
+++ b/jsf-demo/basic-ezcomp/src/main/webapp/WEB-INF/ezcomp-taglib.xml
@@ -0,0 +1,58 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<facelet-taglib xmlns="http://java.sun.com/xml/ns/javaee"
+              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+              xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facelettaglibrary_2_0.xsd"
+              version="2.0">
+
+    <namespace>
+        https://javaserverfaces.dev.java.net/demo/basic-ezcomp
+    </namespace>
+
+    <function>
+        <function-name>writeSource</function-name>
+        <function-class>ezcomp.Functions</function-class>
+        <function-signature>void writeSource(javax.faces.context.FacesContext,java.lang.String)</function-signature>
+    </function>
+
+</facelet-taglib>
diff --git a/jsf-demo/basic-ezcomp/src/main/webapp/WEB-INF/web.xml b/jsf-demo/basic-ezcomp/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..bb30b8c
--- /dev/null
+++ b/jsf-demo/basic-ezcomp/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,90 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<web-app version="2.5"
+         xmlns="http://java.sun.com/xml/ns/javaee"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
+
+    <display-name>basic-ezcomp</display-name>
+    <description>
+        JavaServer Faces 2.0 Composite Component Demo
+    </description>
+
+    <!-- Context Init Params -->
+
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>server</param-value>
+    </context-param>
+
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>Development</param-value>
+    </context-param>
+
+    <context-param>
+        <param-name>javax.faces.FACELETS_LIBRARIES</param-name>
+        <param-value>/WEB-INF/ezcomp-taglib.xml</param-value>
+    </context-param>
+
+    <!-- Servlet Definitions/Mappings -->
+
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+    </servlet>
+
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>*.jsf</url-pattern>
+    </servlet-mapping>
+
+
+    <!-- Welcome File Configuration -->
+
+    <welcome-file-list>
+        <welcome-file>index.html</welcome-file>
+    </welcome-file-list>
+
+</web-app>
diff --git a/jsf-demo/basic-ezcomp/src/main/webapp/actionListener.xhtml b/jsf-demo/basic-ezcomp/src/main/webapp/actionListener.xhtml
new file mode 100644
index 0000000..53ead84
--- /dev/null
+++ b/jsf-demo/basic-ezcomp/src/main/webapp/actionListener.xhtml
@@ -0,0 +1,76 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:ez="http://java.sun.com/jsf/composite/action">
+<f:view contentType="text/html"/>
+<h:head>
+<title>Sample from webtier forum 20081125</title>
+<style type="text/css">
+.grayBox { padding: 8px; margin: 10px 0; border: 1px solid #CCC; background-color: #f9f9f9;  }
+</style>
+
+</h:head>
+
+<h:body>
+
+<h:form>
+
+  <div id="cc" class="grayBox" style="border: 1px solid #090;">
+
+    <ez:actionButton id="loginPanelInConsumingPage" model="#{bean}">
+      <f:actionListener for="abutton" binding="#{actionBean.listener}"/>
+    </ez:actionButton>
+
+   <p>actionCalled: #{actionCalled}</p>
+
+  </div>
+
+</h:form>
+
+</h:body>
+
+</html>
diff --git a/jsf-demo/basic-ezcomp/src/main/webapp/contract.xhtml b/jsf-demo/basic-ezcomp/src/main/webapp/contract.xhtml
new file mode 100644
index 0000000..1934055
--- /dev/null
+++ b/jsf-demo/basic-ezcomp/src/main/webapp/contract.xhtml
@@ -0,0 +1,79 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:ez="http://java.sun.com/jsf/composite/simplecontroller">
+<head>
+    <title>Should Be Ignored</title>
+</head>
+<body>
+
+<ui:composition template="/WEB-INF/demotemplate.xhtml">
+    <ui:param name="title" value="Basic Composite Component - Contract"/>
+    <ui:define name="content">
+
+        <h2>${title}</h2>
+
+        <h:form>
+
+            <div id="cc" class="grayBox" style="border: 1px solid #090;">
+                <!-- begin composite component usage -->
+
+                <ez:double contract="#{multinumber}"/>
+
+                <!-- end composite component usage -->
+            </div>
+
+            <p><h:commandButton value="reload" action="controller"/></p>
+            <h:messages/>
+        </h:form>
+
+    </ui:define>
+</ui:composition>
+
+</body>
+</html>
diff --git a/jsf-demo/basic-ezcomp/src/main/webapp/displaysource.xhtml b/jsf-demo/basic-ezcomp/src/main/webapp/displaysource.xhtml
new file mode 100644
index 0000000..c47a56f
--- /dev/null
+++ b/jsf-demo/basic-ezcomp/src/main/webapp/displaysource.xhtml
@@ -0,0 +1,62 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:d="https://javaserverfaces.dev.java.net/demo/basic-ezcomp"
+      xml:lang="en" lang="en">
+<head>
+    <title>Source: #{param.file}</title>
+</head>
+<body>
+    <h3>Source code for:  #{param.file}</h3>
+
+    <hr/>
+
+    <pre>
+#{d:writeSource(facesContext, param.file)}
+    </pre>
+
+</body>
+</html>
diff --git a/jsf-demo/basic-ezcomp/src/main/webapp/index.html b/jsf-demo/basic-ezcomp/src/main/webapp/index.html
new file mode 100644
index 0000000..24bbeb6
--- /dev/null
+++ b/jsf-demo/basic-ezcomp/src/main/webapp/index.html
@@ -0,0 +1,47 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<html>
+<head>
+    <meta http-equiv="Refresh" content="0;url=index.jsf">
+</head>
+</html>
diff --git a/jsf-demo/basic-ezcomp/src/main/webapp/index.xhtml b/jsf-demo/basic-ezcomp/src/main/webapp/index.xhtml
new file mode 100644
index 0000000..5fe222d
--- /dev/null
+++ b/jsf-demo/basic-ezcomp/src/main/webapp/index.xhtml
@@ -0,0 +1,106 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xml:lang="en" lang="en">
+<head>
+    <title>Should Not Be Displayed</title>
+</head>
+<body>
+<ui:composition template="/WEB-INF/demotemplate.xhtml">
+    <ui:param name="title" value="JavaServer Faces 2.0 Composite Component Demo"/>
+    <ui:define name="content">
+        <table id="demo-table" border="1" cellpadding="1">
+            <caption>
+                ${title}
+            </caption>
+            <thead>
+                <tr>
+                    <th>Demo Name</th>
+                    <th>Related Source Files</th>
+                    <th>Execute</th>
+                </tr>
+            </thead>
+            <tbody>
+                <ui:repeat var="demo" value="#{demoBean.demoBeans}">
+                    <tr>
+                        <td>
+                            <h:outputText value="#{demo.demoName}"/>
+                        </td>
+                        <td>
+                            <table>
+                                <ui:repeat var="sourceInfo" value="#{demo.sourceInfo}">
+                                <tr>
+                                        <td>
+                                            <h:outputText value="#{sourceInfo.label}: "/>
+                                        </td>
+                                        <td>
+                                            <h:outputLink value="displaysource.jsf">
+                                            <h:outputText value="#{sourceInfo.sourceFilePath}"/>
+                                                <f:param name="file" value="#{sourceInfo.sourceFilePath}"/>
+                                            </h:outputLink>
+                                        </td>
+                                    </tr>
+                                </ui:repeat>
+                            </table>
+                        </td>
+                        <td align="center">
+                            <h:outputLink value="#{demo.page}">
+                                <h:graphicImage style="border:none"
+                                                alt="Execute"
+                                                name="images/execute.gif"/>
+                            </h:outputLink>
+                        </td>
+                    </tr>
+                </ui:repeat>
+            </tbody>
+        </table>
+    </ui:define>
+</ui:composition>
+</body>
+</html>
diff --git a/jsf-demo/basic-ezcomp/src/main/webapp/inout.xhtml b/jsf-demo/basic-ezcomp/src/main/webapp/inout.xhtml
new file mode 100644
index 0000000..c7ea5f8
--- /dev/null
+++ b/jsf-demo/basic-ezcomp/src/main/webapp/inout.xhtml
@@ -0,0 +1,78 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:ez="http://java.sun.com/jsf/composite/simpleinout">
+<head>
+    <title>Should Be Ignored</title>
+</head>
+<body>
+<ui:composition template="/WEB-INF/demotemplate.xhtml">
+    <ui:param name="title" value="Basic Composite Component - Input/Output"/>
+    <ui:define name="content">
+        <h2>${title}</h2>
+
+        <h:form>
+            <div id="cc" class="grayBox" style="border: 1px solid #090;">
+                <!-- begin composite component usage -->
+
+                Enter text: <ez:inout value="#{inout.value}"/>
+
+                <!-- end composite component usage -->
+            </div>
+            <p>
+                <h:commandButton value="reload"/>
+                <h:commandButton id="submit" action="inout2" value="Submit"
+                                 type="submit"/>
+            </p>
+            <h:messages/>
+        </h:form>
+    </ui:define>
+</ui:composition>
+
+</body>
+</html>
diff --git a/jsf-demo/basic-ezcomp/src/main/webapp/inout2.xhtml b/jsf-demo/basic-ezcomp/src/main/webapp/inout2.xhtml
new file mode 100644
index 0000000..fbfe079
--- /dev/null
+++ b/jsf-demo/basic-ezcomp/src/main/webapp/inout2.xhtml
@@ -0,0 +1,70 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+<head>
+    <title>Should Be Ignored</title>
+</head>
+<body>
+
+<ui:composition template="/WEB-INF/demotemplate.xhtml">
+    <ui:param name="title" value="Basic Composite Component - Input/Output"/>
+    <ui:define name="content">
+        <h:form>
+            You Said: <h:outputText value="#{inout.value}"/>
+
+            <p><h:commandButton id="back" action="inout" value="Go Back"
+                                type="submit"/>
+            </p>
+            <h:messages/>
+        </h:form>
+    </ui:define>
+</ui:composition>
+
+</body>
+</html>
diff --git a/jsf-demo/basic-ezcomp/src/main/webapp/nav1.xhtml b/jsf-demo/basic-ezcomp/src/main/webapp/nav1.xhtml
new file mode 100644
index 0000000..7821927
--- /dev/null
+++ b/jsf-demo/basic-ezcomp/src/main/webapp/nav1.xhtml
@@ -0,0 +1,79 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:ez="http://java.sun.com/jsf/composite/navbutton">
+<head>
+    <title>Should Be Ignored</title>
+</head>
+<body>
+<ui:composition template="/WEB-INF/demotemplate.xhtml">
+    <ui:param name="title" value="Basic Composite Component - Navigation"/>
+    <ui:define name="content">
+        <h2>${title}</h2>
+
+        <h:form>
+            <div id="cc" class="grayBox" style="border: 1px solid #090;">
+                <h1> Page 1</h1>
+                <!-- begin composite component usage -->
+
+                <ez:nav action="#{navigation.goNav2}"/>
+                
+                <!-- end composite component usage -->
+            </div>
+            <p>
+                <h:commandButton value="reload"/>
+                <h:commandButton id="submit" action="index" value="Go Home"
+                                 type="submit"/>
+            </p>
+            <h:messages/>
+        </h:form>
+    </ui:define>
+</ui:composition>
+
+</body>
+</html>
diff --git a/jsf-demo/basic-ezcomp/src/main/webapp/nav2.xhtml b/jsf-demo/basic-ezcomp/src/main/webapp/nav2.xhtml
new file mode 100644
index 0000000..a23a07e
--- /dev/null
+++ b/jsf-demo/basic-ezcomp/src/main/webapp/nav2.xhtml
@@ -0,0 +1,79 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:ez="http://java.sun.com/jsf/composite/navbutton">
+<head>
+    <title>Should Be Ignored</title>
+</head>
+<body>
+<ui:composition template="/WEB-INF/demotemplate.xhtml">
+    <ui:param name="title" value="Basic Composite Component - Navigation"/>
+    <ui:define name="content">
+        <h2>${title}</h2>
+
+        <h:form>
+            <div id="cc" class="grayBox" style="border: 1px solid #090;">
+                <!-- begin composite component usage -->
+                <h1> Page 2</h1>
+
+                <h:commandButton id="nav2" action="#{navigation.goNav1}" value="nav1" type="submit"/>
+
+                <!-- end composite component usage -->
+            </div>
+            <p>
+                <h:commandButton value="reload"/>
+                <h:commandButton id="submit" action="index" value="Go Home"
+                                 type="submit"/>
+            </p>
+            <h:messages/>
+        </h:form>
+    </ui:define>
+</ui:composition>
+
+</body>
+</html>
diff --git a/jsf-demo/basic-ezcomp/src/main/webapp/out.xhtml b/jsf-demo/basic-ezcomp/src/main/webapp/out.xhtml
new file mode 100644
index 0000000..a2dec0a
--- /dev/null
+++ b/jsf-demo/basic-ezcomp/src/main/webapp/out.xhtml
@@ -0,0 +1,83 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:ez="http://java.sun.com/jsf/composite/simpleout">
+<head>
+    <title>Should Be Ignored</title>
+</head>
+<body>
+
+<ui:composition template="/WEB-INF/demotemplate.xhtml">
+    <ui:param name="title" value="Basic Composite Component - Output"/>
+    <ui:define name="content">
+
+        <h2>${title}</h2>
+
+        <h:form>
+
+            <div id="cc" class="grayBox" style="border: 1px solid #090;">
+                <!-- begin composite component usage -->
+
+                <ez:out value="Test Value"/>
+
+                <!-- end composite component usage -->
+            </div>
+
+            <p><h:commandButton value="reload"/></p>
+            <h:messages/>
+        </h:form>
+        <p>
+        <h:outputLink value="http://weblogs.java.net/blog/driscoll/archive/2008/11/writing_a_simpl.html">
+            Blog discussing this example</h:outputLink>
+        </p>
+
+    </ui:define>
+</ui:composition>
+
+</body>
+</html>
diff --git a/jsf-demo/basic-ezcomp/src/main/webapp/resources/action/actionButton.xhtml b/jsf-demo/basic-ezcomp/src/main/webapp/resources/action/actionButton.xhtml
new file mode 100644
index 0000000..c74fbd6
--- /dev/null
+++ b/jsf-demo/basic-ezcomp/src/main/webapp/resources/action/actionButton.xhtml
@@ -0,0 +1,67 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:composite="http://java.sun.com/jsf/composite">
+<head>
+
+<title>Not present in rendered output</title>
+
+</head>
+
+<body>
+
+<composite:interface>
+  <composite:actionSource name="abutton" />
+</composite:interface>
+
+<composite:implementation>
+      <h:commandButton id="abutton" value="Click Me" />
+</composite:implementation>
+
+</body>
+
+</html>
diff --git a/jsf-demo/basic-ezcomp/src/main/webapp/resources/css/spinnerStyled.xhtml b/jsf-demo/basic-ezcomp/src/main/webapp/resources/css/spinnerStyled.xhtml
new file mode 100644
index 0000000..da6b2c9
--- /dev/null
+++ b/jsf-demo/basic-ezcomp/src/main/webapp/resources/css/spinnerStyled.xhtml
@@ -0,0 +1,68 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ez="http://java.sun.com/jsf/composite/spinnerStyled">
+<h:head>
+    <title>Spinner Example</title>
+</h:head>
+<h:body><h1>Spinner Example</h1>
+    <h:outputStylesheet name="css/spinnerStyled.css"/>
+        <h:form id="form1" prependId="false">
+            <ez:spinner value="#{number.number}" increment="10" id="spinner" />
+            <br/>
+            <h:outputText value="Last number submitted: #{number.number}" />
+            <br/>
+                <h:commandButton value="reload" type="submit"/>
+            <h:messages/>
+        </h:form>
+    <p>
+    <h:outputLink value="http://weblogs.java.net/blog/driscoll/archive/2008/11/jsf_20_adding_s_1.html">
+        Blog discussing this example</h:outputLink>
+    </p>
+    
+</h:body>
+</html>
diff --git a/jsf-demo/basic-ezcomp/src/main/webapp/resources/css/styles.css b/jsf-demo/basic-ezcomp/src/main/webapp/resources/css/styles.css
new file mode 100644
index 0000000..00e607b
--- /dev/null
+++ b/jsf-demo/basic-ezcomp/src/main/webapp/resources/css/styles.css
@@ -0,0 +1,74 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+#container {
+    width: 800px;
+    margin: auto
+}
+
+#demo-table {
+    font-family: "Lucida Sans Unicode", "Lucida Grande", Sans-Serif;
+    font-size: 12px;
+    background: #fff;
+    margin-top: 45px;
+    width: 100%;
+    border-collapse: collapse;
+    text-align: left;
+}
+
+#demo-table th {
+    font-size: 14px;
+    font-weight: bold;
+    color: #039;
+    padding: 10px 8px;
+    border-bottom: 2px solid #6678b1;
+}
+
+#demo-table td {    
+    color: #669;
+    padding: 6px 8px;
+}
+
+.grayBox {
+    padding: 8px;
+    margin: 10px 0;
+    border: 1px solid #CCC;
+    background-color: #f9f9f9;
+}
diff --git a/jsf-demo/basic-ezcomp/src/main/webapp/resources/images/execute.gif b/jsf-demo/basic-ezcomp/src/main/webapp/resources/images/execute.gif
new file mode 100644
index 0000000..f64d70f
Binary files /dev/null and b/jsf-demo/basic-ezcomp/src/main/webapp/resources/images/execute.gif differ
diff --git a/jsf-demo/basic-ezcomp/src/main/webapp/resources/navbutton/nav.xhtml b/jsf-demo/basic-ezcomp/src/main/webapp/resources/navbutton/nav.xhtml
new file mode 100644
index 0000000..ea25427
--- /dev/null
+++ b/jsf-demo/basic-ezcomp/src/main/webapp/resources/navbutton/nav.xhtml
@@ -0,0 +1,62 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:composite="http://java.sun.com/jsf/composite">
+<head>
+    <title>This will not be present in rendered output</title>
+</head>
+<body>
+<composite:interface>
+    <composite:attribute name="action" targets="navbutton" required="true" method-signature="String f1()" /> 
+</composite:interface>
+
+<composite:implementation>
+   <h:commandButton id="navbutton" action="#{cc.attrs.action}" value="NavButton" type="submit" />
+</composite:implementation>
+</body>
+</html>
diff --git a/jsf-demo/basic-ezcomp/src/main/webapp/resources/simplecontract/double.xhtml b/jsf-demo/basic-ezcomp/src/main/webapp/resources/simplecontract/double.xhtml
new file mode 100644
index 0000000..a19cff3
--- /dev/null
+++ b/jsf-demo/basic-ezcomp/src/main/webapp/resources/simplecontract/double.xhtml
@@ -0,0 +1,76 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:cc="http://java.sun.com/jsf/composite">
+<head>
+
+<title>This will not be present in rendered output</title>
+
+</head>
+
+<body>
+
+<cc:interface name="double"
+                     displayName="Contract Component"
+                     shortDescription="A basic example of using a bean's contract">
+   <cc:attribute name="contract" required="true">
+        <cc:attribute name="number1" required="true"/>
+        <cc:attribute name="number2" required="true"/>
+   </cc:attribute>
+</cc:interface>
+
+<cc:implementation>
+    <h:inputText value="#{cc.attrs.contract.number1}"/>
+    <br/>
+    <h:inputText value="#{cc.attrs.contract.number2}"/>
+    <br/>
+</cc:implementation>
+
+</body>
+
+</html>
diff --git a/jsf-demo/basic-ezcomp/src/main/webapp/resources/simpleinout/inout.xhtml b/jsf-demo/basic-ezcomp/src/main/webapp/resources/simpleinout/inout.xhtml
new file mode 100644
index 0000000..8eb9543
--- /dev/null
+++ b/jsf-demo/basic-ezcomp/src/main/webapp/resources/simpleinout/inout.xhtml
@@ -0,0 +1,72 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:composite="http://java.sun.com/jsf/composite">
+<head>
+
+<title>This will not be present in rendered output</title>
+
+</head>
+
+<body>
+
+<composite:interface name="inout"
+                     displayName="Very Basic Input Component"
+                     shortDescription="A basic example of the composite component feature">
+
+    <composite:attribute name="value" required="true" type="String"/>
+
+</composite:interface>
+
+<composite:implementation>
+    <h:inputText id="yellowInput" value="#{cc.attrs.value}" style="background-color: yellow"/>
+</composite:implementation>
+
+</body>
+
+</html>
diff --git a/jsf-demo/basic-ezcomp/src/main/webapp/resources/simpleout/out.xhtml b/jsf-demo/basic-ezcomp/src/main/webapp/resources/simpleout/out.xhtml
new file mode 100644
index 0000000..78f66ad
--- /dev/null
+++ b/jsf-demo/basic-ezcomp/src/main/webapp/resources/simpleout/out.xhtml
@@ -0,0 +1,70 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:composite="http://java.sun.com/jsf/composite">
+<head>
+
+<title>This will not be present in rendered output</title>
+
+</head>
+
+<body>
+
+<composite:interface>
+    <composite:attribute name="value" required="false"/>
+</composite:interface>
+
+<composite:implementation>
+
+    <h:outputText value="#{cc.attrs.value}" style="background-color: yellow"/>
+    
+</composite:implementation>
+
+</body>
+
+</html>
diff --git a/jsf-demo/basic-ezcomp/src/main/webapp/resources/spinner/spinner.xhtml b/jsf-demo/basic-ezcomp/src/main/webapp/resources/spinner/spinner.xhtml
new file mode 100644
index 0000000..0d3171a
--- /dev/null
+++ b/jsf-demo/basic-ezcomp/src/main/webapp/resources/spinner/spinner.xhtml
@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:composite="http://java.sun.com/jsf/composite">
+<head/>
+<body>
+<composite:interface> 
+    <composite:attribute name="value" required="true" type="String"/>
+    <composite:attribute name="increment" required="false" type="Integer"/>
+</composite:interface>
+<composite:implementation>
+    <span id="#{cc.clientId}">
+    <script type="text/javascript">
+        function changeNumber(amount) {
+            var increment = Number("#{cc.attrs.increment}");
+            if (isNaN(increment) || increment == 0 ) {
+                increment = 1;
+            }
+            var entry = document.getElementById("#{cc.clientId}"+":"+"number");
+            entry.value = Number(entry.value) + (amount * increment);
+            return false;
+        }
+    </script>
+    <h:inputText id="number" value="#{cc.attrs.value}"/>
+    <h:commandButton id="bigback" value="<<" onclick="return changeNumber(-10);"/>
+    <h:commandButton id="back" value="<" onclick="return changeNumber(-1);"/>
+    <h:commandButton id="forward" value=">" onclick="return changeNumber(1);"/>
+    <h:commandButton id="bigforward" value=">>" onclick="return changeNumber(10);"/>
+    </span>
+</composite:implementation>
+</body>
+</html>
diff --git a/jsf-demo/basic-ezcomp/src/main/webapp/resources/spinnerFinal/spinner.css b/jsf-demo/basic-ezcomp/src/main/webapp/resources/spinnerFinal/spinner.css
new file mode 100644
index 0000000..9360162
--- /dev/null
+++ b/jsf-demo/basic-ezcomp/src/main/webapp/resources/spinnerFinal/spinner.css
@@ -0,0 +1,54 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+.spinnerText {
+    text-align: right;
+}
+
+.spinnerButtons {
+    width: 35px;
+    display: inline-block;
+    vertical-align: middle;
+}
+
+.spinnerButton {
+    width: 30px;
+    height: 20px;
+}
diff --git a/jsf-demo/basic-ezcomp/src/main/webapp/resources/spinnerFinal/spinner.js b/jsf-demo/basic-ezcomp/src/main/webapp/resources/spinnerFinal/spinner.js
new file mode 100644
index 0000000..ae5bb67
--- /dev/null
+++ b/jsf-demo/basic-ezcomp/src/main/webapp/resources/spinnerFinal/spinner.js
@@ -0,0 +1,58 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+if (!window["spinnerIncrement"]) {
+    var spinnerIncrement = {};
+}
+function init(componentID, increment) {
+    spinnerIncrement[componentID] = Number(increment);
+    if (isNaN(spinnerIncrement[componentID]) || spinnerIncrement[componentID] == 0 ) {
+        spinnerIncrement[componentID]= 1;
+    }
+}
+
+function changeNumber(componentID, amount) {
+    var entry = document.getElementById(componentID+":"+"number");
+    var val = Number(entry.value);
+    if (isNaN(val)) { val = 0; }
+    entry.value = val + (amount * spinnerIncrement[componentID]);
+    return false;
+}
+
diff --git a/jsf-demo/basic-ezcomp/src/main/webapp/resources/spinnerFinal/spinner.xhtml b/jsf-demo/basic-ezcomp/src/main/webapp/resources/spinnerFinal/spinner.xhtml
new file mode 100644
index 0000000..184da2b
--- /dev/null
+++ b/jsf-demo/basic-ezcomp/src/main/webapp/resources/spinnerFinal/spinner.xhtml
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:cc="http://java.sun.com/jsf/composite">
+<head/>
+<body>
+<cc:interface>
+    <cc:attribute name="value" required="true" type="java.lang.Integer"/>
+    <cc:attribute name="increment" required="false" type="java.lang.Integer"/>
+</cc:interface>
+<cc:implementation>
+    <span id="#{cc.clientId}">
+    <h:outputStylesheet name="spinnerFinal/spinner.css" />
+    <h:outputScript name="spinnerFinal/spinner.js" target="head" />
+    <script type="text/javascript">
+        init("#{cc.clientId}","#{cc.attrs.increment}");
+    </script>
+    <h:inputText id="number" value="#{cc.attrs.value}" styleClass="spinnerText"/>
+    <h:panelGroup id="spinnerButtonPanel" styleClass="spinnerButtons">
+        <h:commandButton id="forward"  value="ʌ" styleClass="spinnerButton"
+                         onclick="return changeNumber('#{cc.clientId}',1);" />
+        <h:commandButton id="back" value="v" styleClass="spinnerButton"
+                         onclick="return changeNumber('#{cc.clientId}',-1);" />
+    </h:panelGroup>
+    </span>
+</cc:implementation>
+</body>
+</html>
diff --git a/jsf-demo/basic-ezcomp/src/main/webapp/resources/spinnerStyled/spinner.css b/jsf-demo/basic-ezcomp/src/main/webapp/resources/spinnerStyled/spinner.css
new file mode 100644
index 0000000..9360162
--- /dev/null
+++ b/jsf-demo/basic-ezcomp/src/main/webapp/resources/spinnerStyled/spinner.css
@@ -0,0 +1,54 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+.spinnerText {
+    text-align: right;
+}
+
+.spinnerButtons {
+    width: 35px;
+    display: inline-block;
+    vertical-align: middle;
+}
+
+.spinnerButton {
+    width: 30px;
+    height: 20px;
+}
diff --git a/jsf-demo/basic-ezcomp/src/main/webapp/resources/spinnerStyled/spinner.xhtml b/jsf-demo/basic-ezcomp/src/main/webapp/resources/spinnerStyled/spinner.xhtml
new file mode 100644
index 0000000..eb645dd
--- /dev/null
+++ b/jsf-demo/basic-ezcomp/src/main/webapp/resources/spinnerStyled/spinner.xhtml
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:composite="http://java.sun.com/jsf/composite">
+<head/>
+<body>
+<composite:interface> 
+    <composite:attribute name="value" required="true" />
+    <composite:attribute name="increment" required="false" />
+</composite:interface>
+<composite:implementation>
+    <span id="#{cc.clientId}">
+    <h:outputStylesheet name="spinnerStyled/spinner.css" />
+    <h:inputText id="number" value="#{cc.attrs.value}" styleClass="spinnerText"/>
+    <h:panelGroup id="spinnerButtonPanel" styleClass="spinnerButtons">
+        <h:commandButton id="forward"  value="ʌ"  onclick="return changeNumber(1);" styleClass="spinnerButton"/>
+        <h:commandButton id="back" value="v" onclick="return changeNumber(-1);" styleClass="spinnerButton" />
+    </h:panelGroup>
+    <script type="text/javascript">
+        function changeNumber(amount) {
+            var increment = Number("#{cc.attrs.increment}");
+            if (isNaN(increment) || increment == 0 ) { increment = 1; }
+            var entry = document.getElementById("#{cc.clientId}"+":"+"number");
+            var val = Number(entry.value);
+            if (isNaN(val)) { val = 0; }
+            entry.value = val + (amount * increment);
+            return false;
+        }
+    </script>
+    </span>
+</composite:implementation>
+</body>
+</html>
diff --git a/jsf-demo/basic-ezcomp/src/main/webapp/resources/spinnerStyled/spinnerStyled.css b/jsf-demo/basic-ezcomp/src/main/webapp/resources/spinnerStyled/spinnerStyled.css
new file mode 100644
index 0000000..b4bada1
--- /dev/null
+++ b/jsf-demo/basic-ezcomp/src/main/webapp/resources/spinnerStyled/spinnerStyled.css
@@ -0,0 +1,43 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+.spinnerText {
+    width: 60px;
+}
diff --git a/jsf-demo/basic-ezcomp/src/main/webapp/spinner.xhtml b/jsf-demo/basic-ezcomp/src/main/webapp/spinner.xhtml
new file mode 100644
index 0000000..96578ab
--- /dev/null
+++ b/jsf-demo/basic-ezcomp/src/main/webapp/spinner.xhtml
@@ -0,0 +1,65 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ez="http://java.sun.com/jsf/composite/spinner">
+<h:head>
+    <title>Spinner Example</title>
+</h:head>
+<h:body><h1>Spinner Example</h1>
+        <h:form id="form1" prependId="false">
+            <ez:spinner value="#{number.number}" increment="10"/><br/>
+            <h:outputText value="Last number submitted: #{number.number}" /><br/>
+            <h:commandButton value="reload" type="submit"/><br/>
+            <h:messages/>
+        </h:form>
+    <p>
+    <h:outputLink value="http://weblogs.java.net/blog/driscoll/archive/2008/11/jsf_20_writing_1.html">
+        Blog discussing this example</h:outputLink>
+    </p>
+    
+</h:body>
+</html>
diff --git a/jsf-demo/basic-ezcomp/src/main/webapp/spinnerFinal.xhtml b/jsf-demo/basic-ezcomp/src/main/webapp/spinnerFinal.xhtml
new file mode 100644
index 0000000..ac2e4bf
--- /dev/null
+++ b/jsf-demo/basic-ezcomp/src/main/webapp/spinnerFinal.xhtml
@@ -0,0 +1,73 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ez="http://java.sun.com/jsf/composite/spinnerFinal">
+<h:head>
+    <title>Spinner Example</title>
+</h:head>
+<h:body><h1>Spinner Example</h1>
+    <h:outputStylesheet name="css/spinnerStyled.css"/>
+        <h:form id="form1">
+            <h2>Spinner 1</h2>
+            <ez:spinner value="#{multinumber.number1}" increment="1" id="spinner1" />
+            <br/>
+            <h:outputText value="Last number submitted: #{multinumber.number1}" />
+            <br/>
+            <h2>Spinner 2</h2>
+            <ez:spinner value="#{multinumber.number2}" increment="10" id="spinner2" />
+            <br/>
+            <h:outputText value="Last number submitted: #{multinumber.number2}" />
+            <br/>
+            <h:commandButton value="reload" type="submit"/>
+            <h:messages/>
+        </h:form>
+    <p>
+    <h:outputLink value="http://weblogs.java.net/blog/driscoll/archive/2008/11/jsf_20_writing.html">
+        Blog discussing this example</h:outputLink>
+    </p>
+</h:body>
+</html>
diff --git a/jsf-demo/basic-ezcomp/src/main/webapp/spinnerStyled.xhtml b/jsf-demo/basic-ezcomp/src/main/webapp/spinnerStyled.xhtml
new file mode 100644
index 0000000..85d2390
--- /dev/null
+++ b/jsf-demo/basic-ezcomp/src/main/webapp/spinnerStyled.xhtml
@@ -0,0 +1,65 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ez="http://java.sun.com/jsf/composite/spinnerStyled">
+<h:head>
+    <title>Styled Spinner Example</title>
+</h:head>
+<h:body><h1>Styled Spinner Example</h1>
+        <h:form id="form1" prependId="false">
+            <ez:spinner value="#{number.number}" increment="10"/><br/>
+            <h:outputText value="Last number submitted: #{number.number}" /><br/>
+            <h:commandButton value="reload" type="submit"/><br/>
+            <h:messages/>
+        </h:form>
+    <p>
+    <h:outputLink value="http://weblogs.java.net/blog/2008/11/09/jsf-20-adding-styles-spinner-component">
+        Blog discussing this example</h:outputLink>
+    </p>
+    
+</h:body>
+</html>
diff --git a/jsf-demo/bean-validator/README.txt b/jsf-demo/bean-validator/README.txt
new file mode 100644
index 0000000..4ec4cf6
--- /dev/null
+++ b/jsf-demo/bean-validator/README.txt
@@ -0,0 +1,15 @@
+This demo, the bean-validator demo, demonstrates the use of Bean Validation (JSR 303)
+with JSF.  This demo assumes it will be run against an EE6 complaint container, such
+as Glassfish V3.
+
+This demo contains several JSR 303 constraints which are applied to the model
+(in this case, JSF managed beans).  
+
+When JSR 303 is present on the classpath, JSF will automatically add a validator
+to each EditableValueHolder that will interact with any defined constraints on the
+model bound to said EditableValueHolder.  
+
+One other item to note here is that this demo dynamically enables/disables
+these bean validators based on the current view being displayed.  See the Facelet
+templates for details on how this is accomplished.
+
diff --git a/jsf-demo/bean-validator/build.xml b/jsf-demo/bean-validator/build.xml
new file mode 100644
index 0000000..9a00e9a
--- /dev/null
+++ b/jsf-demo/bean-validator/build.xml
@@ -0,0 +1,144 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project name="beanvalidation" default="build" basedir=".">
+   
+    <property file="${user.home}/build.properties"/> 
+    <property file="../../build.properties"/>
+    <import file="${jsf.build.home}/common/ant/common.xml"/>
+    
+    <!-- Configure the context path for this application -->
+    <property name="context.path" value="/beanvalidation"/>
+    <property name="example" value="beanvalidation"/>
+    <property name="build" value="${basedir}/build"/>   
+
+    <path id="classpath">       
+        <pathelement location="${javax.faces-api.jar}"/>
+        <pathelement location="${javax.faces.jar}"/>
+        <pathelement location="${build}/WEB-INF/classes"/>
+        <path refid="compile.classpath"/>
+       <fileset dir="${api.dir}" >
+          <include name="bean*.jar" />
+       </fileset> 
+    </path>
+    
+    <target name="init">
+        <tstamp/>
+    </target>
+
+    <target name="clean">
+        <delete dir="${build}"/>
+        <delete dir="${context.path}"/>
+    </target>    
+
+    <target name="prepare" depends="init"
+            description="Create build directories.">
+        <mkdir dir="${build}/${example}/"/>
+        <mkdir dir="${build}/${example}/WEB-INF"/>
+        <mkdir dir="${build}/${example}/WEB-INF/classes"/>
+        <mkdir dir="${build}/${example}/WEB-INF/lib"/>
+    </target>       
+
+    <target name="build" depends="prepare"
+            description="Compile Java files and copy static files.">
+         <jsf.javac srcdir="src/main/java"
+                   destdir="${build}/${example}/WEB-INF/classes">
+            <classpath>
+                <path refid="classpath"/>
+            </classpath>
+        </jsf.javac>
+        <copy todir="${build}/${example}/WEB-INF/classes">
+            <fileset dir="src/main/java">
+                <include name="**/*.java"/>
+            </fileset>
+            <fileset dir="src/main/resources">
+                <include name="**/*.properties"/>
+            </fileset>
+        </copy>
+        <copy todir="${build}/${example}/WEB-INF">
+            <fileset dir="src/main/webapp/WEB-INF">
+                <include name="web.xml"/>
+                <include name="faces-config.xml"/>
+            </fileset>
+        </copy>
+
+        <copy todir="${build}/${example}/">
+            <fileset dir="src/main/webapp">
+                <include name="**/*.xhtml"/>
+                <include name="*.html"/>
+                <include name="*.gif"/>
+                <include name="*.jpg"/>
+                <include name="*.jsp"/>
+                <include name="*.xml"/>
+            </fileset>
+        </copy>
+        <copy todir="${build}/${example}/WEB-INF/classes/${example}">
+            <fileset dir="src/main/webapp">
+                <include name="*properties"/>
+            </fileset>
+        </copy>
+        
+        <jsf.war basedir="${build}"
+                 archive-name="${example}"
+                 webxml="${build}/${example}/WEB-INF/web.xml">
+            <archive-elements>
+                <zipfileset dir="${build}/${example}"/>
+            </archive-elements>
+        </jsf.war>
+    </target>
+
+    <target name="deploy"
+            description="Deploy the demo application">
+        <deploy.artifact artifact="${build}/${example}.war"
+                         appName="${example}"/>
+    </target>
+
+    <target name="undeploy"
+            description="Undeploy the demo application">
+        <undeploy.artifact artifact="${build}/${example}.war"
+                           appName="${example}"/>
+    </target>
+
+
+</project>
+
diff --git a/jsf-demo/bean-validator/pom.xml b/jsf-demo/bean-validator/pom.xml
new file mode 100644
index 0000000..4d5e63c
--- /dev/null
+++ b/jsf-demo/bean-validator/pom.xml
@@ -0,0 +1,195 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2009-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+    <modelVersion>4.0.0</modelVersion>
+    <groupId>com.sun.faces</groupId>
+    <artifactId>bean-validator</artifactId>
+    <packaging>war</packaging>
+    <name>${project.artifactId}</name>
+    <url>https://mojarra.dev.java.net/</url>
+    <description>Beans Validation+JSF Example App</description>
+    <version>1.0</version>
+
+    <build>
+        <defaultGoal>package</defaultGoal>
+        <sourceDirectory>src/main/java</sourceDirectory>
+        <finalName>${project.artifactId}</finalName>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>3.1</version>
+                <configuration>
+                    <source>1.5</source>
+                    <target>1.5</target>
+                </configuration>
+            </plugin>
+            <plugin>
+                <artifactId>maven-antrun-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <phase>compile</phase>
+                        <configuration>
+                            <tasks>
+                                <copy todir="${project.build.outputDirectory}">
+                                    <fileset dir="src/main/java"/>
+                                </copy>
+                            </tasks>
+                        </configuration>
+                        <goals>
+                            <goal>run</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+
+    <repositories>
+        <repository>
+            <id>java.net.m2</id>
+            <name>java.net m2 repo</name>
+            <url>http://download.java.net/maven/2</url>
+        </repository>
+       <repository>
+            <id>glassfish-repo-archive</id>
+            <name>Nexus repository collection for Glassfish</name>
+            <url>http://maven.glassfish.org/content/groups/glassfish</url>
+        </repository>
+        <repository>
+            <id>ibiblio.mirrors</id>
+            <url>http://mirrors.ibiblio.org/pub/mirrors/maven2</url>
+        </repository>
+        <repository>
+            <id>codehaus</id>
+            <name>codehaus</name>
+            <url>http://repository.codehaus.org</url>
+        </repository>
+        <repository>
+            <id>jboss</id>
+            <name>jboss</name>
+            <url>http://repository.jboss.org/maven2</url>
+        </repository>
+    </repositories>
+
+    <dependencies>
+      <dependency>
+        <groupId>javax</groupId>
+        <artifactId>javaee-api</artifactId>
+        <version>7.0</version>
+        <scope>provided</scope>
+      </dependency>
+
+        <!--
+          Uncomment these dependencies and comment out the one above to use
+          a simple servlet container instead of a Java EE Application Server
+        <dependency>
+            <groupId>com.sun.faces</groupId>
+            <artifactId>jsf-api</artifactId>
+            <version>[2.0.1,)</version>
+        </dependency>
+        <dependency>
+            <groupId>com.sun.faces</groupId>
+            <artifactId>jsf-impl</artifactId>
+            <version>[2.0.1,)</version>
+        </dependency>
+        <dependency>
+            <groupId>javax.servlet</groupId>
+            <artifactId>servlet-api</artifactId>
+            <version>2.5</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>javax.servlet.jsp</groupId>
+            <artifactId>jsp-api</artifactId>
+            <version>2.1</version>
+            <scope>provided</scope>
+        </dependency>
+         <dependency>
+             <groupId>javax.servlet.jsp.jstl</groupId>
+             <artifactId>jstl-api</artifactId>
+             <version>1.2</version>
+         </dependency>
+        <dependency>
+            <groupId>org.glassfish.web</groupId>
+            <artifactId>jstl-impl</artifactId>
+            <version>1.2</version>
+        </dependency>
+        -->
+    </dependencies>
+    <reporting>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-project-info-reports-plugin</artifactId>
+                <reportSets>
+                    <reportSet/>
+                </reportSets>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                    <source>1.5</source>
+                    <target>1.5</target>
+                </configuration>
+            </plugin>
+        </plugins>
+    </reporting>
+    <profiles>
+        <profile>
+            <id>default</id>
+            <!-- Tests are disabled by default.  See the test profile -->
+            <activation>
+                <activeByDefault>true</activeByDefault>
+            </activation>
+            <properties>
+                <maven.test.skip>true</maven.test.skip>
+            </properties>
+        </profile>
+    </profiles>
+</project>
+
diff --git a/jsf-demo/bean-validator/src/main/java/beanvalidation/DefaultValidatorsReport.java b/jsf-demo/bean-validator/src/main/java/beanvalidation/DefaultValidatorsReport.java
new file mode 100644
index 0000000..e7d8b7f
--- /dev/null
+++ b/jsf-demo/bean-validator/src/main/java/beanvalidation/DefaultValidatorsReport.java
@@ -0,0 +1,69 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package beanvalidation;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.annotation.PostConstruct;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.RequestScoped;
+import javax.faces.context.FacesContext;
+
+ at RequestScoped
+ at ManagedBean
+public class DefaultValidatorsReport {
+
+    private List<String> validatorIds;
+
+    @PostConstruct
+    public void onCreate() {
+        validatorIds = new ArrayList<String>();
+        FacesContext ctx = FacesContext.getCurrentInstance();
+        for (String validatorId : ctx.getApplication().getDefaultValidatorInfo()
+              .keySet()) {
+            validatorIds.add(validatorId);
+        }
+    }
+
+    public List<String> getValidatorIds() {
+        return validatorIds;
+    }
+}
diff --git a/jsf-demo/bean-validator/src/main/java/beanvalidation/UserBean.java b/jsf-demo/bean-validator/src/main/java/beanvalidation/UserBean.java
new file mode 100644
index 0000000..7d40bb4
--- /dev/null
+++ b/jsf-demo/bean-validator/src/main/java/beanvalidation/UserBean.java
@@ -0,0 +1,156 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package beanvalidation;
+
+import beanvalidation.constraints.CreditCard;
+import beanvalidation.constraints.Email;
+import beanvalidation.groups.Order;
+import beanvalidation.groups.Personal;
+
+import java.io.Serializable;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.SessionScoped;
+import javax.validation.constraints.NotNull;
+import javax.validation.constraints.Pattern;
+import javax.validation.constraints.Size;
+import javax.validation.groups.Default;
+
+ at SessionScoped
+ at ManagedBean(name = "user")
+public class UserBean implements Serializable {
+    private String lastName;
+    private String firstName;
+    private String emailAddress;
+    private String streetAddress;
+    private String city;
+    private String state;
+    private String zipCode;
+    private String creditCard;
+
+    @NotNull(groups = Order.class)
+    @Size(min = 1, message = "{validator.notEmpty}", groups = Order.class)
+    @CreditCard(groups = Order.class)
+    public String getCreditCard() {
+        return creditCard;
+    }
+
+    public void setCreditCard(String creditCard) {
+        this.creditCard = creditCard;
+    }
+
+    @NotNull(groups = Order.class)
+    @Size(min = 1, message = "{validator.notEmpty}", groups = Order.class)
+    public String getCity() {
+        return city;
+    }
+
+    public void setCity(String city) {
+        this.city = city;
+    }
+
+    @NotNull
+    @Size(min = 1, message = "{validator.notEmpty}")
+    @Email
+    public String getEmailAddress() {
+        return emailAddress;
+    }
+
+    public void setEmailAddress(String emailAddress) {
+        this.emailAddress = emailAddress;
+    }
+
+    @NotNull(groups = {Default.class, Personal.class})
+    @Size(min = 1,
+          message = "{validator.notEmpty}",
+          groups = {Default.class, Personal.class})
+    public String getFirstName() {
+        return firstName;
+    }
+
+    public void setFirstName(String firstName) {
+        this.firstName = firstName;
+    }
+
+    @NotNull(groups = {Default.class, Personal.class})
+    @Size(min = 1,
+          message = "{validator.notEmpty}",
+          groups = {Default.class, Personal.class})
+    public String getLastName() {
+        return lastName;
+    }
+
+    public void setLastName(String lastName) {
+        this.lastName = lastName;
+    }
+
+    @NotNull(groups = Order.class)
+    @Size(min = 1, message = "{validator.notEmpty}", groups = Order.class)
+    public String getState() {
+        return state;
+    }
+
+    public void setState(String state) {
+        this.state = state;
+    }
+
+    @NotNull(groups = Order.class)
+    @Size(min = 1, message = "{validator.notEmpty}", groups = Order.class)
+    public String getStreetAddress() {
+        return streetAddress;
+    }
+
+    public void setStreetAddress(String streetAddress) {
+        this.streetAddress = streetAddress;
+    }
+
+    @NotNull(groups = Order.class)
+    @Pattern(regexp = "[0-9]+",
+             message = "{validator.numbers}",
+             groups = Order.class)
+    @Size(min = 5, max = 5, groups = Order.class)
+    public String getZipCode() {
+        return zipCode;
+    }
+
+    public void setZipCode(String zipCode) {
+        this.zipCode = zipCode;
+    }
+}
diff --git a/jsf-demo/bean-validator/src/main/java/beanvalidation/constraints/CreditCard.java b/jsf-demo/bean-validator/src/main/java/beanvalidation/constraints/CreditCard.java
new file mode 100644
index 0000000..09619ae
--- /dev/null
+++ b/jsf-demo/bean-validator/src/main/java/beanvalidation/constraints/CreditCard.java
@@ -0,0 +1,65 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package beanvalidation.constraints;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+import javax.validation.Constraint;
+import javax.validation.Payload;
+
+ at Documented
+ at Constraint(validatedBy = CreditCardConstraintValidator.class)
+ at Target({ElementType.METHOD, ElementType.FIELD})
+ at Retention(RetentionPolicy.RUNTIME)
+public @interface CreditCard {
+    // message string should be {constraint.creditCard}
+
+    String message() default "{validator.creditCard}";
+
+    //CreditCardVendor vendor default ANY;
+
+    Class<?>[] groups() default {};
+
+    Class<? extends Payload>[] payload() default {};
+}
diff --git a/jsf-demo/bean-validator/src/main/java/beanvalidation/constraints/CreditCardConstraintValidator.java b/jsf-demo/bean-validator/src/main/java/beanvalidation/constraints/CreditCardConstraintValidator.java
new file mode 100644
index 0000000..9df4344
--- /dev/null
+++ b/jsf-demo/bean-validator/src/main/java/beanvalidation/constraints/CreditCardConstraintValidator.java
@@ -0,0 +1,95 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package beanvalidation.constraints;
+
+import java.util.regex.Pattern;
+import javax.validation.ConstraintValidator;
+import javax.validation.ConstraintValidatorContext;
+
+/**
+ * Valid a credit card number using the standard LUHN check. Implementation borrowed from Mojarra's
+ * CreditCardValidator.
+ */
+public class CreditCardConstraintValidator
+      implements ConstraintValidator<CreditCard, String> {
+
+    private Pattern basicSyntaxPattern;
+
+    public void initialize(CreditCard parameters) {
+        basicSyntaxPattern = Pattern.compile("^[0-9\\ \\-]*$");
+    }
+
+    public boolean isValid(String value, ConstraintValidatorContext ctxt) {
+        if (value == null || value.length() == 0) {
+            return true;
+        }
+
+        if (!basicSyntaxPattern.matcher(value).matches()) {
+            return false;
+        }
+
+        return luhnCheck(stripNonDigits(value));
+    }
+
+    private String stripNonDigits(String s) {
+        return s.replaceAll(" ", "").replaceAll("-", "");
+    }
+
+
+    private boolean luhnCheck(String number) {
+        int sum = 0;
+
+        boolean timestwo = false;
+        for (int i = number.length() - 1; i >= 0; i--) {
+            int n = Integer.parseInt(number.substring(i, i + 1));
+            if (timestwo) {
+                n *= 2;
+                if (n > 9) {
+                    n = (n % 10) + 1;
+                }
+            }
+            sum += n;
+            timestwo = !timestwo;
+        }
+        return sum % 10 == 0;
+    }
+
+}
diff --git a/jsf-demo/bean-validator/src/main/java/beanvalidation/constraints/Email.java b/jsf-demo/bean-validator/src/main/java/beanvalidation/constraints/Email.java
new file mode 100644
index 0000000..406ccd1
--- /dev/null
+++ b/jsf-demo/bean-validator/src/main/java/beanvalidation/constraints/Email.java
@@ -0,0 +1,63 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package beanvalidation.constraints;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+import javax.validation.Constraint;
+import javax.validation.Payload;
+
+ at Documented
+ at Constraint(validatedBy = EmailConstraintValidator.class)
+ at Target({ElementType.METHOD, ElementType.FIELD})
+ at Retention(RetentionPolicy.RUNTIME)
+public @interface Email {
+    // message string should be {constraint.email}
+
+    String message() default "{validator.email}";
+
+    Class<?>[] groups() default {};
+
+    Class<? extends Payload>[] payload() default {};
+}
diff --git a/jsf-demo/bean-validator/src/main/java/beanvalidation/constraints/EmailConstraintValidator.java b/jsf-demo/bean-validator/src/main/java/beanvalidation/constraints/EmailConstraintValidator.java
new file mode 100644
index 0000000..c4bacfe
--- /dev/null
+++ b/jsf-demo/bean-validator/src/main/java/beanvalidation/constraints/EmailConstraintValidator.java
@@ -0,0 +1,66 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package beanvalidation.constraints;
+
+import java.util.regex.Pattern;
+import javax.validation.ConstraintValidator;
+import javax.validation.ConstraintValidatorContext;
+
+public class EmailConstraintValidator
+      implements ConstraintValidator<Email, String> {
+
+    private Pattern pattern;
+
+    public void initialize(Email parameters) {
+        // credit goes to http://www.regular-expressions.info/email.html
+        pattern = Pattern.compile("^[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,4}$",
+                                  Pattern.CASE_INSENSITIVE);
+    }
+
+    public boolean isValid(String value, ConstraintValidatorContext ctxt) {
+        if (value == null || value.length() == 0) {
+            return true;
+        }
+
+        return pattern.matcher(value).matches();
+    }
+
+}
diff --git a/jsf-demo/bean-validator/src/main/java/beanvalidation/groups/Order.java b/jsf-demo/bean-validator/src/main/java/beanvalidation/groups/Order.java
new file mode 100644
index 0000000..d6007d6
--- /dev/null
+++ b/jsf-demo/bean-validator/src/main/java/beanvalidation/groups/Order.java
@@ -0,0 +1,45 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package beanvalidation.groups;
+
+public interface Order {
+
+}
diff --git a/jsf-demo/bean-validator/src/main/java/beanvalidation/groups/Personal.java b/jsf-demo/bean-validator/src/main/java/beanvalidation/groups/Personal.java
new file mode 100644
index 0000000..53aa322
--- /dev/null
+++ b/jsf-demo/bean-validator/src/main/java/beanvalidation/groups/Personal.java
@@ -0,0 +1,45 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package beanvalidation.groups;
+
+public interface Personal {
+
+}
diff --git a/jsf-demo/bean-validator/src/main/resources/FacesMessages.properties b/jsf-demo/bean-validator/src/main/resources/FacesMessages.properties
new file mode 100644
index 0000000..f90223b
--- /dev/null
+++ b/jsf-demo/bean-validator/src/main/resources/FacesMessages.properties
@@ -0,0 +1,75 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
+ # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ # 
+ # Copyright 2009 Sun Microsystems, Inc. All rights reserved.
+ # 
+ # The contents of this file are subject to the terms of either the GNU
+ # General Public License Version 2 only ("GPL") or the Common Development
+ # and Distribution License("CDDL") (collectively, the "License").  You
+ # may not use this file except in compliance with the License. You can obtain
+ # a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
+ # or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ # language governing permissions and limitations under the License.
+ # 
+ # When distributing the software, include this License Header Notice in each
+ # file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
+ # Sun designates this particular file as subject to the "Classpath" exception
+ # as provided by Sun in the GPL Version 2 section of the License file that
+ # accompanied this code.  If applicable, add the following below the License
+ # Header, with the fields enclosed by brackets [] replaced by your own
+ # identifying information: "Portions Copyrighted [year]
+ # [name of copyright owner]"
+ # 
+ # Contributor(s):
+ # 
+ # If you wish your version of this file to be governed by only the CDDL or
+ # only the GPL Version 2, indicate your decision by adding "[Contributor]
+ # elects to include this software in this distribution under the [CDDL or GPL
+ # Version 2] license."  If you don't indicate a single choice of license, a
+ # recipient has the option to distribute your version of this file under
+ # either the CDDL, the GPL Version 2 or to extend the choice of license to
+ # its licensees as provided above.  However, if you add GPL Version 2 code
+ # and therefore, elected the GPL Version 2 license, then the option applies
+ # only if the new code is made subject to such option by the copyright
+ # holder.
+
+javax.faces.validator.BeanValidator.MESSAGE={1}: {0}
diff --git a/jsf-demo/bean-validator/src/main/resources/Messages.properties b/jsf-demo/bean-validator/src/main/resources/Messages.properties
new file mode 100644
index 0000000..45e6222
--- /dev/null
+++ b/jsf-demo/bean-validator/src/main/resources/Messages.properties
@@ -0,0 +1,76 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
+ # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ # 
+ # Copyright 2009 Sun Microsystems, Inc. All rights reserved.
+ # 
+ # The contents of this file are subject to the terms of either the GNU
+ # General Public License Version 2 only ("GPL") or the Common Development
+ # and Distribution License("CDDL") (collectively, the "License").  You
+ # may not use this file except in compliance with the License. You can obtain
+ # a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
+ # or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ # language governing permissions and limitations under the License.
+ # 
+ # When distributing the software, include this License Header Notice in each
+ # file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
+ # Sun designates this particular file as subject to the "Classpath" exception
+ # as provided by Sun in the GPL Version 2 section of the License file that
+ # accompanied this code.  If applicable, add the following below the License
+ # Header, with the fields enclosed by brackets [] replaced by your own
+ # identifying information: "Portions Copyrighted [year]
+ # [name of copyright owner]"
+ # 
+ # Contributor(s):
+ # 
+ # If you wish your version of this file to be governed by only the CDDL or
+ # only the GPL Version 2, indicate your decision by adding "[Contributor]
+ # elects to include this software in this distribution under the [CDDL or GPL
+ # Version 2] license."  If you don't indicate a single choice of license, a
+ # recipient has the option to distribute your version of this file under
+ # either the CDDL, the GPL Version 2 or to extend the choice of license to
+ # its licensees as provided above.  However, if you add GPL Version 2 code
+ # and therefore, elected the GPL Version 2 license, then the option applies
+ # only if the new code is made subject to such option by the copyright
+ # holder.
+
+javax.faces.validator.BeanValidator.MESSAGE={1}: {0}
+javax.faces.validator.BeanValidator.MESSAGE_detail={0}
diff --git a/jsf-demo/bean-validator/src/main/resources/ValidationMessages_en.properties b/jsf-demo/bean-validator/src/main/resources/ValidationMessages_en.properties
new file mode 100644
index 0000000..bf5a8fc
--- /dev/null
+++ b/jsf-demo/bean-validator/src/main/resources/ValidationMessages_en.properties
@@ -0,0 +1,84 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
+ # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ # 
+ # Copyright 2009 Sun Microsystems, Inc. All rights reserved.
+ # 
+ # The contents of this file are subject to the terms of either the GNU
+ # General Public License Version 2 only ("GPL") or the Common Development
+ # and Distribution License("CDDL") (collectively, the "License").  You
+ # may not use this file except in compliance with the License. You can obtain
+ # a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
+ # or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ # language governing permissions and limitations under the License.
+ # 
+ # When distributing the software, include this License Header Notice in each
+ # file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
+ # Sun designates this particular file as subject to the "Classpath" exception
+ # as provided by Sun in the GPL Version 2 section of the License file that
+ # accompanied this code.  If applicable, add the following below the License
+ # Header, with the fields enclosed by brackets [] replaced by your own
+ # identifying information: "Portions Copyrighted [year]
+ # [name of copyright owner]"
+ # 
+ # Contributor(s):
+ # 
+ # If you wish your version of this file to be governed by only the CDDL or
+ # only the GPL Version 2, indicate your decision by adding "[Contributor]
+ # elects to include this software in this distribution under the [CDDL or GPL
+ # Version 2] license."  If you don't indicate a single choice of license, a
+ # recipient has the option to distribute your version of this file under
+ # either the CDDL, the GPL Version 2 or to extend the choice of license to
+ # its licensees as provided above.  However, if you add GPL Version 2 code
+ # and therefore, elected the GPL Version 2 license, then the option applies
+ # only if the new code is made subject to such option by the copyright
+ # holder.
+
+validator.notNull=may not be null
+validator.size=size must be between {min} and {max}
+validator.length=length must be between {min} and {max}
+validator.notEmpty=may not be empty
+validator.pattern=must match "{regex}"
+validator.min=must be greater than or equal to {value}
+validator.max=must be less than or equal to {value}
+validator.email=must be a valid e-mail address
+validator.creditCard=must be a valid credit card number
+validator.numbers=must only contain numbers
diff --git a/jsf-demo/bean-validator/src/main/resources/ValidationMessages_fr.properties b/jsf-demo/bean-validator/src/main/resources/ValidationMessages_fr.properties
new file mode 100644
index 0000000..e71130f
--- /dev/null
+++ b/jsf-demo/bean-validator/src/main/resources/ValidationMessages_fr.properties
@@ -0,0 +1,84 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
+ # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ # 
+ # Copyright 2009 Sun Microsystems, Inc. All rights reserved.
+ # 
+ # The contents of this file are subject to the terms of either the GNU
+ # General Public License Version 2 only ("GPL") or the Common Development
+ # and Distribution License("CDDL") (collectively, the "License").  You
+ # may not use this file except in compliance with the License. You can obtain
+ # a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
+ # or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ # language governing permissions and limitations under the License.
+ # 
+ # When distributing the software, include this License Header Notice in each
+ # file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
+ # Sun designates this particular file as subject to the "Classpath" exception
+ # as provided by Sun in the GPL Version 2 section of the License file that
+ # accompanied this code.  If applicable, add the following below the License
+ # Header, with the fields enclosed by brackets [] replaced by your own
+ # identifying information: "Portions Copyrighted [year]
+ # [name of copyright owner]"
+ # 
+ # Contributor(s):
+ # 
+ # If you wish your version of this file to be governed by only the CDDL or
+ # only the GPL Version 2, indicate your decision by adding "[Contributor]
+ # elects to include this software in this distribution under the [CDDL or GPL
+ # Version 2] license."  If you don't indicate a single choice of license, a
+ # recipient has the option to distribute your version of this file under
+ # either the CDDL, the GPL Version 2 or to extend the choice of license to
+ # its licensees as provided above.  However, if you add GPL Version 2 code
+ # and therefore, elected the GPL Version 2 license, then the option applies
+ # only if the new code is made subject to such option by the copyright
+ # holder.
+
+validator.notNull=may not be null
+validator.size=size must be between {min} and {max}
+validator.length=length must be between {min} and {max}
+validator.notEmpty=mai de ne pas \u00EAtre vide
+validator.pattern=must match "{regex}"
+validator.min=must be greater than or equal to {value}
+validator.max=must be less than or equal to {value}
+validator.email=must be a valid e-mail address
+validator.creditCard=must be a valid credit card number
+validator.numbers=must only contain numbers
diff --git a/jsf-demo/bean-validator/src/main/webapp/WEB-INF/faces-config.xml b/jsf-demo/bean-validator/src/main/webapp/WEB-INF/faces-config.xml
new file mode 100644
index 0000000..9a3f411
--- /dev/null
+++ b/jsf-demo/bean-validator/src/main/webapp/WEB-INF/faces-config.xml
@@ -0,0 +1,72 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
+        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
+        version="2.0">
+
+    <application>
+        <message-bundle>Messages</message-bundle>
+        <!-- If you don't define a <default-validators> element in any configuration file and Bean Validation is present, javax.faces.Bean will be added automatically as a default validator -->
+        <!-- Include an empty <default-validators> in the configuration file with the highest precedence to disable default validators -->
+        <!--
+        <default-validators>
+            <validator-id>javax.faces.Bean</validator-id>
+        </default-validators>
+        -->
+        <!-- Set your browser language to French to activate French validation error messages -->
+        <locale-config>
+            <supported-locale>en</supported-locale>
+            <supported-locale>fr</supported-locale>
+        </locale-config>
+    </application>
+
+    <navigation-rule>
+        <navigation-case>
+            <from-outcome>success</from-outcome>
+            <to-view-id>/confirmation.xhtml</to-view-id>
+        </navigation-case>
+    </navigation-rule>
+
+</faces-config>
diff --git a/jsf-demo/bean-validator/src/main/webapp/WEB-INF/fragments/form.xhtml b/jsf-demo/bean-validator/src/main/webapp/WEB-INF/fragments/form.xhtml
new file mode 100644
index 0000000..4a59f09
--- /dev/null
+++ b/jsf-demo/bean-validator/src/main/webapp/WEB-INF/fragments/form.xhtml
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<ui:composition xmlns="http://www.w3.org/1999/xhtml"
+    xmlns:ui="http://java.sun.com/jsf/facelets"
+    xmlns:f="http://java.sun.com/jsf/core"
+    xmlns:h="http://java.sun.com/jsf/html">
+
+            <h:panelGrid columns="2">
+                First name
+                <h:inputText id="firstName" value="#{user.firstName}" label="First name"/>
+                Last name
+                <h:inputText id="lastName" value="#{user.firstName}" label="Last name"/>
+                Email address
+                <h:inputText id="emailAddress" value="#{user.emailAddress}" label="Email address">
+                    <f:validateBean validationGroups="javax.validation.groups.Default"/>
+                </h:inputText>
+                Street address
+                <h:inputText id="streetAddress" value="#{user.streetAddress}" label="Street address"/>
+                City
+                <h:inputText id="city" value="#{user.city}" label="City"/>
+                State
+                <h:inputText id="state" value="#{user.state}" label="State"/>
+                Zip code
+                <h:inputText id="zipCode" value="#{user.zipCode}" label="Zip code"/>
+                Credit card *
+                <h:inputText id="creditCard" value="#{user.creditCard}" label="Credit card">
+                    <f:validateBean disabled="true"/>
+                </h:inputText>
+            </h:panelGrid>
+            <p>* Can alternatively be provided over the phone.</p>
+            <h:commandButton action="success" value="Submit"/>
+
+</ui:composition>
diff --git a/jsf-demo/bean-validator/src/main/webapp/WEB-INF/web.xml b/jsf-demo/bean-validator/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..4503bfc
--- /dev/null
+++ b/jsf-demo/bean-validator/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<web-app version="2.5"
+         xmlns="http://java.sun.com/xml/ns/javaee"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" >
+    
+    <display-name>JavaServer Faces "Bean Validation" Sample Application</display-name>
+    <description>
+        JavaServer Faces "Bean Validation" Sample Application
+    </description>
+
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>Development</param-value>
+    </context-param>
+
+    <!-- Faces Servlet -->
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+
+    <!-- Faces Servlet Mapping -->
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>*.xhtml</url-pattern>
+    </servlet-mapping>
+
+    <welcome-file-list>
+        <welcome-file>home.xhtml</welcome-file>
+    </welcome-file-list>
+    
+</web-app>
diff --git a/jsf-demo/bean-validator/src/main/webapp/confirmation.xhtml b/jsf-demo/bean-validator/src/main/webapp/confirmation.xhtml
new file mode 100644
index 0000000..fe42b41
--- /dev/null
+++ b/jsf-demo/bean-validator/src/main/webapp/confirmation.xhtml
@@ -0,0 +1,55 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+    xmlns:ui="http://java.sun.com/jsf/facelets"
+    xmlns:f="http://java.sun.com/jsf/core"
+    xmlns:h="http://java.sun.com/jsf/html">
+    <f:view>
+    <body>
+        <h1>Validation Passed!</h1>
+        <p><h:outputLink value="home.xhtml">Back to home</h:outputLink></p>
+    </body>
+    </f:view>
+</html>
diff --git a/jsf-demo/bean-validator/src/main/webapp/creditCard.xhtml b/jsf-demo/bean-validator/src/main/webapp/creditCard.xhtml
new file mode 100644
index 0000000..de211ed
--- /dev/null
+++ b/jsf-demo/bean-validator/src/main/webapp/creditCard.xhtml
@@ -0,0 +1,72 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+    xmlns:ui="http://java.sun.com/jsf/facelets"
+    xmlns:f="http://java.sun.com/jsf/core"
+    xmlns:h="http://java.sun.com/jsf/html">
+    <f:view>
+    <body>
+        <h1>Validate Credit Card</h1>
+        <p>Enter a credit card number and see if it passes the LUHN check. Spaces and hyphens are accepted.</p>
+        <h:messages style="color: red;" globalOnly="true"/>
+        <h:form id="creditCardForm">
+            <h:panelGrid columns="3">
+                Credit card number, for example: 4340609378368160. (See <a href="http://bradconte.com/cc_generator">this number generator</a>).
+                <h:inputText id="creditCard" value="#{user.creditCard}">
+                    <f:validateBean validationGroups="beanvalidation.groups.Order"/>
+                </h:inputText>
+                <h:messages for="creditCard" style="color: red;" showDetail="true" showSummary="false"/>
+                Zip code
+                <h:inputText id="zipCode" value="#{user.zipCode}">
+                    <f:validateBean validationGroups="beanvalidation.groups.Order"/>
+                </h:inputText>
+                <h:messages for="zipCode" style="color: red;" showDetail="true" showSummary="false"/>
+            </h:panelGrid>
+            <h:commandButton action="success" value="Check"/>
+        </h:form>
+        <p><h:outputLink value="home.xhtml">Back to home</h:outputLink></p>
+    </body>
+    </f:view>
+</html>
diff --git a/jsf-demo/bean-validator/src/main/webapp/home.xhtml b/jsf-demo/bean-validator/src/main/webapp/home.xhtml
new file mode 100644
index 0000000..42e1cc7
--- /dev/null
+++ b/jsf-demo/bean-validator/src/main/webapp/home.xhtml
@@ -0,0 +1,76 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+    xmlns:ui="http://java.sun.com/jsf/facelets"
+    xmlns:c="http://java.sun.com/jsp/jstl/core"
+    xmlns:f="http://java.sun.com/jsf/core"
+    xmlns:h="http://java.sun.com/jsf/html">
+    <f:view>
+    <body>
+        <h1>Bean Validation Demo</h1>
+        <p>This example demonstrates the Bean Validation integration with JSF.</p>
+        <p>The form data is stored in a session-scoped managed bean for demonstation purposes. Erase the JSESSIONID cookie in your browser to reset the state.</p>
+        <h2>Sample Forms</h2>
+        <ul>
+            <li><h:outputLink value="register.xhtml">Registration Form</h:outputLink></li>
+            <li><h:outputLink value="placeOrder.xhtml">Place Order Form</h:outputLink></li>
+            <li><h:outputLink value="creditCard.xhtml">Credit Card Number Check</h:outputLink></li>
+        </ul>
+        <h2>Default Validator Ids</h2>
+        <c:choose>
+            <c:when test="#{not empty defaultValidatorsReport.validatorIds}">
+        <ol>
+        <ui:repeat var="_id" value="#{defaultValidatorsReport.validatorIds}">
+            <li>#{_id}</li>
+        </ui:repeat>
+        </ol>
+            </c:when>
+            <c:otherwise>
+                <p style="font-style: italic;">There are no default validators registered.</p>
+            </c:otherwise>
+        </c:choose>
+    </body>
+    </f:view>
+</html>
diff --git a/jsf-demo/bean-validator/src/main/webapp/placeOrder.xhtml b/jsf-demo/bean-validator/src/main/webapp/placeOrder.xhtml
new file mode 100644
index 0000000..a7393f0
--- /dev/null
+++ b/jsf-demo/bean-validator/src/main/webapp/placeOrder.xhtml
@@ -0,0 +1,62 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+    xmlns:ui="http://java.sun.com/jsf/facelets"
+    xmlns:f="http://java.sun.com/jsf/core"
+    xmlns:h="http://java.sun.com/jsf/html">
+    <f:view>
+    <body>
+        <h1>Place Order Form</h1>
+        <p>The address information is now required. Otherwise, where are we going to ship this order?</p>
+        <h:messages style="color: red;"/>
+        <h:form>
+            <f:validateBean validationGroups="beanvalidation.groups.Personal , beanvalidation.groups.Order">
+            <ui:include src="/WEB-INF/fragments/form.xhtml"/>
+            </f:validateBean>
+        </h:form>
+        <p><h:outputLink value="home.xhtml">Back to home</h:outputLink></p>
+    </body>
+    </f:view>
+</html>
diff --git a/jsf-demo/bean-validator/src/main/webapp/register.xhtml b/jsf-demo/bean-validator/src/main/webapp/register.xhtml
new file mode 100644
index 0000000..182227c
--- /dev/null
+++ b/jsf-demo/bean-validator/src/main/webapp/register.xhtml
@@ -0,0 +1,60 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+    xmlns:ui="http://java.sun.com/jsf/facelets"
+    xmlns:f="http://java.sun.com/jsf/core"
+    xmlns:h="http://java.sun.com/jsf/html">
+    <f:view>
+    <body>
+        <h1>Registration Form</h1>
+        <p>The address information is not required on this form. It's for collection purposes only. Only the barebones "personal" information is required.</p>
+        <h:messages style="color: red;"/>
+        <h:form>
+            <ui:include src="/WEB-INF/fragments/form.xhtml"/>
+        </h:form>
+        <p><h:outputLink value="home.xhtml">Back to home</h:outputLink></p>
+    </body>
+    </f:view>
+</html>
diff --git a/jsf-demo/build-tests.xml b/jsf-demo/build-tests.xml
new file mode 100644
index 0000000..c193a24
--- /dev/null
+++ b/jsf-demo/build-tests.xml
@@ -0,0 +1,242 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project name="JSF Demo unit tests" default="main" basedir=".">
+
+    <!-- Test Properties -->
+    <property file="${user.home}/build.properties"/>
+    <property file="../build.properties"/>
+    <import file="${jsf.build.home}/common/ant/common.xml"/>
+
+    <property name="build" value="${basedir}/test/build"/>
+    <property name="customscope.context.path" value="/custom-bean-scope"/>
+    <property name="guessNumber.context.path" value="/jsf-guessNumber"/>
+    <property name="components.context.path" value="/jsf-components"/>
+    <property name="cardemo.context.path" value="/jsf-cardemo"/>
+    <property name="tree-visit.context.path" value="/tree-visit"/>
+    <property name="viewExpired.context.path" value="/viewExpired"/>
+    <property name="mojarra_ext.context.path" value="/mojarra_ext"/>
+    <property name="mapping-extension.context.path"
+              value="/jsf-mappingDemo-extension"/>
+    <property name="mapping-prefix.context.path"
+              value="/jsf-mappingDemo-prefix"/>
+    <!-- Default value for debugging arguments is no.  Override in
+         build.properties -->
+
+
+    <!-- Demo WAR files -->
+    <property name="custom-bean-scope.war"
+              value="${basedir}/custom-bean-scope/build/custom-bean-scope.war"/>
+    <property name="components.war"
+              value="${basedir}/components/build/jsf-components.war"/>
+    <property name="guessNumber.war"
+              value="${basedir}/guessNumber/build/jsf-guessNumber.war"/>
+    <property name="cardemo.war"
+              value="${basedir}/archive/carstore/build/jsf-cardemo.war"/>
+    <property name="mojarra_ext.war"
+              value="${basedir}/archive/mojarra_ext/build/mojarra_ext.war"/>
+    <property name="mapping-extension.war"
+              value="${basedir}/test/mappingDemo/build/jsf-mappingDemo-extension.war"/>
+    <property name="mapping-prefix.war"
+              value="${basedir}/test/mappingDemo/build/jsf-mappingDemo-prefix.war"/>
+    <property name="tree-visit.war"
+              value="${basedir}/sandbox/tree-visit/build/tree-visit.war"/>
+    <property name="viewExpired.war"
+              value="${basedir}/viewExpired/build/viewExpired.war"/>
+    <property name="test.results.dir" value="${basedir}/testresults"/>
+
+    <property name="appserver.domain" value="domain1"/>
+
+    <path id="classpath">
+        <pathelement location="${javax.faces-api.jar}"/>
+        <pathelement location="${build}/classes"/>
+        <path refid="htmlunit.compile.classpath"/>
+        <path refid="compile.classpath"/>
+    </path>
+
+    <path id="run.classpath">
+        <path refid="htmlunit.runtime.classpath"/>
+        <pathelement location="${build}/classes"/>
+        <!-- Include this to have access to the ResourceBundles for carstore -->
+        <pathelement location="archive/carstore/src"/>
+    </path>
+
+    <target name="init" depends="check.changes">
+        <tstamp/>
+    </target>
+
+    <target name="check.changes">
+        <uptodate property="skip.build"
+                  targetfile="${build}/last-build">
+            <srcfiles dir="${basedir}">
+                <include name="test/**/*.*"/>
+            </srcfiles>
+        </uptodate>
+    </target>
+
+    <target name="prepare" depends="init"
+            description="Create build directories.">
+        <mkdir dir="${build}/classes"/>
+    </target>
+
+    <macrodef name="run-tests">
+        <attribute name="context-path"/>
+        <attribute name="demo-name"/>
+        <attribute name="demo-war"/>
+        <attribute name="tests"/> 
+        <sequential>
+            <undeploy.artifact artifact="@{demo-war}"
+                               appName="@{demo-name}"/>
+            <deploy.artifact artifact="@{demo-war}"
+                               appName="@{demo-name}"/>
+            <jsf.junit context-path="@{context-path}"
+                       classpath-refid="run.classpath"
+                       test-results-dir="${test.results.dir}">
+                <tests>
+                    <fileset dir="test/tests">
+                        <include name="**/@{tests}/**Test*.java"/>
+                    </fileset>
+                </tests>
+            </jsf.junit>
+            <undeploy.artifact artifact="@{demo-war}"
+                               appName="@{demo-name}"/>
+        </sequential>
+    </macrodef>
+
+
+    <target name="build.test" unless="skip.build"
+            description="Compile Java files." depends="prepare">
+        <touch file="${build}/last-build"/>
+        <jsf.javac srcdir="test"
+                   destdir="${build}/classes">
+            <classpath>
+                <path refid="classpath"/>
+            </classpath>
+        </jsf.javac>
+    </target>
+
+
+
+    <target name="test" depends="build,build.test"
+            description="Runs all of available demo unit tests">
+        <delete dir="${test.results.dir}"/>
+        <mkdir dir="${test.results.dir}"/>
+
+        <!-- Broken
+        <run-tests demo-war="${components.war}" 
+                   demo-name="jsf-components"
+                   tests="components"
+                   context-path="${components.context.path}"/>
+                   -->
+
+        <!-- Broken due to bug in V3
+         <run-tests demo-war="${guessNumber.war}" 
+                   demo-name="jsf-guessNumber"
+                   tests="guessNumber"
+                   context-path="${guessNumber.context.path}"/>
+                   -->
+        
+        <!-- Need to reevaluate how to do this since
+             the single test is against both WARs
+         <run-tests demo-war="${mapping-prefix.war}" 
+                   demo-name="mapping-prefix"
+                   context-path="${mapping-prefix.context.path}"/>
+        
+         <run-tests demo-war="${mapping-extension.war}" 
+                   demo-name="mapping-extension"
+                   context-path="${mapping-extension.context.path}"/>
+        -->
+
+        <copy todir="${build}/classes">
+            <fileset dir="archive/carstore/src/java">
+                <include name="**/*.properties"/>
+            </fileset>
+        </copy>
+
+        <run-tests demo-war="${tree-visit.war}"
+                   demo-name="tree-visit"
+                   tests="treevisit"
+                   context-path="${tree-visit.context.path}"/>
+
+        <run-tests demo-war="${viewExpired.war}"
+                   demo-name="viewExpired"
+                   tests="viewExpired"
+                   context-path="${viewExpired.context.path}"/>
+
+        <run-tests demo-war="${cardemo.war}"
+                   demo-name="jsf-cardemo"
+                   tests="cardemo"
+                   context-path="${cardemo.context.path}"/>
+
+        <run-tests demo-war="${mojarra_ext.war}"
+                   demo-name="mojarra_ext"
+                   tests="mojarra_ext"
+                   context-path="${mojarra_ext.context.path}"/>
+
+        <run-tests demo-war="${custom-bean-scope.war}"
+                   demo-name="custom-bean-scope"
+                   tests="customscope"
+                   context-path="${customscope.context.path}"/>
+
+    </target>
+
+    <target name="clean">
+        <ant target="clean" dir="custom-bean-scope" inheritAll="false"/>
+        <ant target="clean" dir="archive/guessNumber" inheritAll="false"/>
+        <ant target="clean" dir="sandbox/tree-visit" inheritAll="false"/>
+        <ant target="clean" dir="viewExpired" inheritAll="false"/>
+        <ant target="clean" dir="archive/carstore" inheritAll="false"/>
+        <ant target="clean" dir="archive/mojarra_ext" inheritAll="false"/>
+    </target>
+
+    <target name="build">
+        <ant dir="custom-bean-scope" inheritAll="false" />
+        <ant dir="sandbox/tree-visit" inheritAll="false" />
+        <ant dir="viewExpired" inheritAll="false" />
+        <ant dir="archive/carstore" inheritAll="false" />
+        <ant dir="archive/mojarra_ext" inheritAll="false" />        
+    </target>
+
+    <target name="main" depends="build,test,clean">
+    </target>
+
+</project>
diff --git a/jsf-demo/build.xml b/jsf-demo/build.xml
new file mode 100644
index 0000000..384b6f5
--- /dev/null
+++ b/jsf-demo/build.xml
@@ -0,0 +1,422 @@
+<?xml version="1.0"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!-- ************ JSF build file ************************************** -->
+
+<project name="jsf-demo" default="main" basedir=".">
+
+    <!-- ************ Per user local properties ******************************* -->
+
+    <property file="${user.home}/build.properties"/>
+    <property file="../build.properties"/>
+    <import file="${jsf.build.home}/common/ant/common.xml"/>
+
+
+    <!-- ************ Where are we building into? ***************************** -->
+
+    <!-- The base directory for compilation targets -->
+
+    <property name="Name" value="JavaServer Faces"/>
+    <property name="name" value="jsf-demo"/>
+    <property name="javaserverfaces-spec-eg.dir" 
+              value="${jsf.build.home}/../javaserverfaces-spec-eg-trunk"/>
+
+    <property name="build.home" value="${basedir}/build"/>
+
+    <!-- The base directory for distribution targets -->
+    <property name="dist.home" value="${basedir}/dist"/>
+
+
+    <!-- Use LICENSE.txt for FCS release. -->
+    <property name="license" value="LICENSE.TXT"/>
+
+    <target name="clean">
+
+        <delete file="mojarra-${impl.version}.zip"/>
+        <delete file="glassfish-jsf-${impl.version}.jar"/>
+        <delete dir="${dist.home}"/>
+        <delete dir="${basedir}/test/build"/>
+        <ant target="clean" antfile="build-tests.xml"/>
+    </target>
+
+
+    <target name="test" depends="main,run.test">
+        <ant target="clean" antfile="build-tests.xml"/>
+    </target>
+
+
+    <target name="run.test">
+        <ant target="test" antfile="build-tests.xml"/>
+    </target>
+
+    <target name="prepare.build">
+        <mkdir dir="archive/lib"/>
+    </target>
+
+    <target name="copyDemoSource" depends="copyJars">
+        <echo>copy the necessary samples</echo>
+         <copy todir="${dist.home}/samples/basic-ezcomp" includeEmptyDirs="false">
+            <fileset dir="${basedir}/basic-ezcomp" excludes="build.xml,build/**"/>
+         </copy>
+         <copy todir="${dist.home}/samples/basic-ajax" includeEmptyDirs="false">
+            <fileset dir="${basedir}/basic-ajax" excludes="build.xml,build/**"/>
+         </copy>
+        <copy todir="${dist.home}/samples/ajax-component" includeEmptyDirs="false">
+           <fileset dir="${basedir}/ajax-component" excludes="build.xml,build/**"/>
+        </copy>
+         <copy todir="${dist.home}/samples/guessNumber" includeEmptyDirs="false">
+            <fileset dir="${basedir}/guessNumber" excludes="build.xml,build/**"/>
+         </copy>
+         <copy todir="${dist.home}/samples/custom-bean-scope" includeEmptyDirs="false">
+            <fileset dir="${basedir}/custom-bean-scope" excludes="build.xml,build/**"/>
+         </copy>
+        <copy todir="${dist.home}/samples/bean-validator" includeEmptyDirs="false">
+           <fileset dir="${basedir}/bean-validator" excludes="build.xml,build/**"/>
+        </copy>
+        <copy todir="${dist.home}/samples/custom-tag" includeEmptyDirs="false">
+           <fileset dir="${basedir}/custom-tag" excludes="build.xml,build/**"/>
+        </copy>
+        <copy todir="${dist.home}/samples/helloworld" includeEmptyDirs="false">
+           <fileset dir="${basedir}/helloworld" excludes="build.xml,build/**"/>
+        </copy>
+        <copy todir="${dist.home}/samples/viewExpired" includeEmptyDirs="false">
+           <fileset dir="${basedir}/viewExpired" excludes="build.xml,build/**"/>
+        </copy>
+    </target>
+
+
+    <target name="copyJars" depends="prepare.dist">
+        <copy file="${javax.faces.jar}" todir="${dist.home}/lib"/>
+    </target>
+
+    <!-- target for building standalone JSF distribution -->
+    <target name="dist" depends="copyDemoSource,main">
+        <echo>create the zip file</echo>
+        <move todir="${basedir}/mojarra-${impl.version}">
+            <fileset dir="dist"/>
+        </move>
+        <zip zipfile="mojarra-${impl.version}.zip">
+            <fileset dir="${basedir}"
+                     includes="mojarra-${impl.version}/**"/>
+        </zip>
+        <move todir="dist">
+            <fileset dir="${basedir}/mojarra-${impl.version}"/>
+        </move>
+
+        <echo>Creating Special JAR for GlassFish</echo>
+        <mkdir dir="${basedir}/tmp"/>
+        <jsf.manifested.jar jarfile="${basedir}/tmp/javax.faces.jar"
+                            basedir="${jsf.build.home}/jsf-ri/build/classes"
+                            extension-name="com.sun.faces"/>
+        <jar jarfile="glassfish-jsf-${impl.version}.jar">
+            <fileset dir="${basedir}/tmp" includes="javax.faces.jar"/>
+            <fileset dir="${jsf.build.home}/jsf-api/build/lib" includes="javax.faces-api.jar"/>
+        </jar>             
+        <delete dir="${basedir}/tmp"/>
+    </target>
+
+
+    <target name="prepare.dist">
+      <generate.documentation />
+    </target>
+
+   <target name="test.spec-eg-dir-available">
+       <available type="dir" file="${javaserverfaces-spec-eg.dir}"
+                  property="spec-eg-dir-available" />
+   </target>
+
+   <target name="copy.spec.pdf" if="spec-eg-dir-available">
+       <echo message="Copying PDF spec for build: ${build.number} from ${javaserverfaces-spec-eg.dir} to ${spec.snapshot.dir}" />
+       <copy todir="${dist.home}/docs" flatten="true">
+
+         <fileset dir="${javaserverfaces-spec-eg.dir}">
+
+           <include name="**/*${build.number}*.pdf" />
+
+         </fileset>
+
+       </copy>
+
+   </target>
+
+    <target name="generate.documentatation.given.documentation.version">
+      <generate.documentation version="${documentation.version}" />
+    </target>
+
+   <target name="get.pdf" depends="test.spec-eg-dir-available">
+        <antcall target="copy.spec.pdf" />
+   </target>
+
+
+    <macrodef name="generate.documentation">
+      <attribute name="version" default="${impl.version}" />
+      <sequential>
+        <mkdir dir="${dist.home}"/>
+        <mkdir dir="${dist.home}/docs"/>
+        <mkdir dir="${dist.home}/samples"/>
+        <mkdir dir="${dist.home}/renderkitdocs"/>
+
+        <echo>Handle the top level files</echo>
+        <copy file="${impl.dir}/${license}" todir="${dist.home}"/>
+        <copy file="${impl.dir}/LICENSE-APACHE.txt" todir="${dist.home}"/>
+        <copy file="${impl.dir}/THIRDPARTYLICENSEREADME.txt"
+              todir="${dist.home}"/>
+        <copy todir="${dist.home}/lib">
+            <fileset dir="${api.dir}/build/lib" includes="*.jar"/>
+        </copy>
+        <ant dir="${api.dir}"
+             antfile="build.xml"
+             inheritall="false"
+             target="facesdoc"/>
+        <copy todir="${dist.home}/renderkitdocs">
+            <fileset dir="${api.dir}/build/generate/facesdoc"/>
+        </copy>
+        <zip zipfile="${dist.home}/docs/renderkitdocs-${impl.version}.zip">
+           <fileset dir="${dist.home}" includes="renderkitdocs/**"/>
+        </zip>
+        <antcall target="api.javadocs"/>
+        <antcall target="api.jsdocs"/>
+        <antcall target="ri.vdldocs"/>
+        <antcall target="get.pdf" />
+        <if>
+          <available file="${dist.home}/docs/JSF_${build.number}.pdf" />
+          <then>
+            <property name="styleAttributeForPdf" value="display:block" />
+          </then>
+          <else>
+            <property name="styleAttributeForPdf" value="display:none" />
+          </else>
+        </if>
+        <!--
+           rlubke: commented out for now since release notes are 
+                   maintained live at https://javaserverfaces.dev.java.net/nonav/rlnotes/<version>
+
+        <antcall target="copydocs"/>
+        -->
+        <delete dir="${dist.home}/renderkitdocs"/>
+        <delete dir="${dist.home}/vdldocs"/>
+        <delete dir="${dist.home}/javadocs"/>
+        <delete dir="${dist.home}/managed-bean-javadocs" />
+        <delete dir="${dist.home}/jsdocs" />
+        <unzip src="${dist.home}/docs/javadocs-${impl.version}.zip" dest="${dist.home}/docs" />
+        <unzip src="${dist.home}/docs/jsdocs-${impl.version}.zip" dest="${dist.home}/docs" />
+        <unzip src="${dist.home}/docs/renderkitdocs-${impl.version}.zip" dest="${dist.home}/docs" />
+        <unzip src="${dist.home}/docs/vdldocs-${impl.version}.zip" dest="${dist.home}/docs" />
+        <delete file="${dist.home}/docs/javadocs-${impl.version}.zip" />
+        <delete file="${dist.home}/docs/jsdocs-${impl.version}.zip" />
+        <delete file="${dist.home}/docs/renderkitdocs-${impl.version}.zip" />
+        <delete file="${dist.home}/docs/vdldocs-${impl.version}.zip" />
+        <echoxml file="${dist.home}/docs/doclist.html">
+            <html>
+            <head>
+               <title>Mojarra ${impl.version} Documentation</title>
+                <style>
+                    .navbar {
+                    display: block;
+                    background: #507c9a;
+                    padding: 9px 7px 5px 7px;
+                    }
+                    .navbar UL {
+                    display: inline;
+                    margin-left: 0px;
+                    padding-left: 0px;
+                    }
+                    .navbar UL LI {
+                    display: inline;
+                    margin-left: 0px;
+                    border-left: 1px solid #FFF;
+                    padding-left: 5px;
+                    }
+                    .navbar UL LI.first {
+                    border-left: none;
+                    }
+                    .navbar A {
+                    font-weight:normal;
+                    color:#CCDAE3;
+                    text-decoration: none;
+                    }
+                    .navbar A:hover {
+                    text-decoration: underline;
+                    }
+                    .navbar A:visited {
+                    font-weight:normal;
+                    color:#FFF;
+                    }
+                    .navbar UL LI A SPAN.active {
+                    font-weight: bold;
+                    color:#FFF;
+                    }
+                </style>
+            </head>
+                <body>
+                <div class="navbar" align="center">
+                    <ul>
+                        <li class="first"><a href="javadocs/index.html" target="loc">JSF API Documentation</a></li>
+                        <li><a href="managed-bean-javadocs/index.html" target="loc">JSF Managed Bean Documentation</a></li>
+                        <li><a href="vdldocs/facelets/index.html" target="loc">Facelets Tag Documentation</a></li>
+                        <li><a href="vdldocs/jsp/index.html" target="loc">JSP Tag Documentation</a></li>
+                        <li><a href="renderkitdocs/index.html" target="loc">Renderkit Documentation</a></li>
+                        <li><a href="jsdocs/index.html" target="loc">Javascript Documentation</a></li>
+                        <li><a href="JSF_${build.number}.pdf" style="${styleAttributeForPdf}" target="loc">Spec PDF Document</a></li>
+                    </ul>
+                </div>
+                </body>
+            </html>
+        </echoxml>
+        <echoxml file="${dist.home}/docs/index.html">
+            <html>
+            <head>
+               <title>Mojarra ${impl.version} Documentation</title>
+            </head>
+            <frameset cols="100%">
+              <frameset rows="8%, 92%">
+                  <frame src="doclist.html" />
+                  <frame name="loc" />
+              </frameset>
+
+            </frameset>
+            </html>
+        </echoxml>
+        <zip basedir="${dist.home}/docs" excludes="*.zip" destfile="${dist.home}/mojarra-@{version}-documentation.zip" />
+        <delete dir="${dist.home}/docs/renderkitdocs"/>
+        <delete dir="${dist.home}/docs/vdldocs"/>
+        <delete dir="${dist.home}/docs/javadocs"/>
+        <delete dir="${dist.home}/docs/managed-bean-javadocs" />
+        <delete dir="${dist.home}/docs/jsdocs" />
+        <delete file="${dist.home}/docs/index.html" />
+        <delete file="${dist.home}/docs/doclist.html" />
+        <copy file="${dist.home}/mojarra-@{version}-documentation.zip" todir="${dist.home}/docs" />
+      </sequential>
+    </macrodef>
+
+    <target name="api.javadocs">
+
+        <echo>Build the API Javadocs</echo>
+        <ant dir="${api.dir}"
+             antfile="build.xml" target="javadocs"/>
+        <ant dir="${api.dir}"
+             antfile="build.xml" target="copy.xsddoc"/>
+        <echo>Copy the API Javadocs to the dist</echo>
+        <filter token="build.number" value="${build.number}" />
+        <copy todir="${dist.home}/javadocs" filtering="true">
+            <fileset dir="${api.dir}/build/javadocs"/>
+        </copy>
+        <copy todir="${dist.home}/managed-bean-javadocs" filtering="true">
+            <fileset dir="${api.dir}/build/managed-bean-javadocs"/>
+        </copy>
+        <zip zipfile="${dist.home}/docs/javadocs-${impl.version}.zip">
+           <fileset dir="${dist.home}" includes="javadocs/**"/>
+           <fileset dir="${dist.home}" includes="managed-bean-javadocs/**"/>
+        </zip>
+
+    </target>
+
+    <target name="api.jsdocs">
+            <!-- Create the jsdocs distribution -->
+        <mkdir dir="${dist.home}/jsdocs/symbols" />
+        <copy todir="${dist.home}/jsdocs/symbols">
+           <fileset dir="${api.dir}/doc">
+             <include name="changed*.png" />
+             <include name="expert*.png" />
+             <include name="changed*.cur" />
+           </fileset>
+        </copy>
+        <!-- Couldn't get the dashdashtemplate option to work.  
+             Just copy the darn .css in.  -->
+        <move file="${jsdoc.home}/jsdoc-toolkit/templates/jsdoc/static/default.css" 
+              tofile="${jsdoc.home}/jsdoc-toolkit/templates/jsdoc/static/default_css.orig" />
+        <copy file="${api.dir}/doc/jsdoc-template/static/default.css"
+              tofile="${jsdoc.home}/jsdoc-toolkit/templates/jsdoc/static/default.css" />
+
+        <java fork="true" jar="${jsdoc.home}/jsdoc-toolkit/jsrun.jar">
+                    <arg line="${jsdoc.home}/jsdoc-toolkit/app/run.js"/>
+                    <arg line="-a"/>
+                    <arg line="-d=${dist.home}/jsdocs"/>
+                    <arg line="-t=${jsdoc.home}/jsdoc-toolkit/templates/jsdoc"/>
+                    <arg value="${basedir}/../jsf-api/src/main/resources/jsf.js"/>
+        </java>
+        <move file="${jsdoc.home}/jsdoc-toolkit/templates/jsdoc/static/default_css.orig"
+              tofile="${jsdoc.home}/jsdoc-toolkit/templates/jsdoc/static/default.css" />
+              
+
+        <zip zipfile="${dist.home}/docs/jsdocs-${impl.version}.zip">
+            <fileset dir="${dist.home}" includes="jsdocs/**"/>
+        </zip>
+
+    </target>
+
+    <target name="ri.vdldocs">
+
+        <echo>Build the vdldocs</echo>
+        <ant inheritAll="false" dir="${impl.dir}"
+             antfile="build.xml" target="vdldocs"/>
+        <echo>Copy the Javadocs to the dist</echo>
+        <copy todir="${dist.home}/vdldocs">
+            <fileset dir="${impl.dir}/build/vdldocs"/>
+        </copy>
+        <zip zipfile="${dist.home}/docs/vdldocs-${impl.version}.zip">
+           <fileset dir="${dist.home}" includes="vdldocs/**"/>
+        </zip>
+
+    </target>
+
+
+    <target name="copydocs"
+            description="Copy necessary files from docs directory to dist.home">
+        <mkdir dir="${dist.home}"/>
+        <mkdir dir="${dist.home}/docs"/>
+        <mkdir dir="${dist.home}/docs/style"/>
+        <copy todir="${dist.home}/docs">
+            <fileset dir="${impl.dir}/docs"
+                     includes="index.html,samples.html,ReleaseNotes.html"/>
+        </copy>
+        <copy todir="${dist.home}/docs/style">
+            <fileset dir="${impl.dir}/docs/style" includes="default.css"/>
+        </copy>
+    </target>
+
+
+    <target name="main" depends="prepare.build">
+    </target>
+
+</project>
diff --git a/jsf-demo/custom-bean-scope/README.txt b/jsf-demo/custom-bean-scope/README.txt
new file mode 100644
index 0000000..69b822f
--- /dev/null
+++ b/jsf-demo/custom-bean-scope/README.txt
@@ -0,0 +1,6 @@
+This demo, the custom-bean-scope demo, demonstrates the use of custom
+'managed-bean-scope'.
+
+The easiest way to understand the demo is to deploy
+and run it, and then review the source code, particularly, the
+CustomScopeELResolver.
diff --git a/jsf-demo/custom-bean-scope/build.xml b/jsf-demo/custom-bean-scope/build.xml
new file mode 100644
index 0000000..19c0b16
--- /dev/null
+++ b/jsf-demo/custom-bean-scope/build.xml
@@ -0,0 +1,135 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project name="custom-bean-scope" default="build" basedir=".">
+
+    <property file="${user.home}/build.properties"/>
+    <property file="../../build.properties"/>
+    <import file="${jsf.build.home}/common/ant/common.xml"/>
+
+    <!-- Configure the context path for this application -->
+    <property name="context.path" value="/custom-bean-scope"/>
+    <property name="example" value="custom-bean-scope"/>
+    <property name="build" value="${basedir}/build"/>
+
+    <path id="classpath">
+        <pathelement location="${javax.faces-api.jar}"/>
+        <pathelement location="${javax.faces.jar}"/>
+        <pathelement location="${build}/${example}/WEB-INF/classes"/>
+        <path refid="compile.classpath"/>
+    </path>
+
+    <target name="init" depends="check.changes">
+        <tstamp/>
+    </target>
+
+    <target name="check.changes">
+        <uptodate property="skip.build"
+                  targetfile="${build}/last-build">
+            <srcfiles dir="${basedir}">
+                <include name="src/**/*.*"/>
+                <include name="conf/**/*.*"/>
+                <include name="web/**/*.*"/>
+            </srcfiles>
+        </uptodate>
+    </target>
+
+    <target name="clean">
+        <delete dir="${build}"/>
+        <delete dir="${context.path}"/>
+    </target>
+
+
+    <target name="prepare" depends="init"
+            description="Create build directories.">
+        <mkdir dir="${build}/${example}"/>
+        <mkdir dir="${build}/${example}/WEB-INF"/>
+        <mkdir dir="${build}/${example}/WEB-INF/classes"/>
+        <mkdir dir="${build}/${example}/WEB-INF/lib"/>
+    </target>
+
+
+    <target name="build" unless="skip.build" depends="prepare"
+            description="Compile Java files and copy static files.">
+        <touch file="${build}/last-build"/>
+         <jsf.javac srcdir="src"
+                   destdir="${build}/${example}/WEB-INF/classes">
+            <classpath>
+                <path refid="classpath"/>
+            </classpath>
+        </jsf.javac>
+        <copy todir="${build}/${example}/WEB-INF">
+            <fileset dir="src/main/webapp/WEB-INF">
+                <include name="*.xml"/>
+            </fileset>          
+        </copy>
+
+        <copy todir="${build}/${example}/">
+            <fileset dir="src/main/webapp">
+                <include name="resources/**"/>
+                <include name="*.html"/>
+                <include name="*.gif"/>
+                <include name="*.jpg"/>
+                <include name="*.xhtml"/>
+                <include name="*.xml"/>
+            </fileset>
+        </copy>
+        <copy todir="${build}/${example}/WEB-INF/classes/${example}">
+            <fileset dir="src/main/webapp">
+                <include name="*properties"/>
+            </fileset>
+        </copy>
+        <copy todir="${build}/${example}/WEB-INF/classes">
+            <fileset dir="src/main/java"/>
+        </copy>
+
+        <jsf.war basedir="${build}"
+                 archive-name="${example}"
+                 webxml="${build}/${example}/WEB-INF/web.xml">
+            <archive-elements>
+                <zipfileset dir="${build}/${example}"/>
+            </archive-elements>
+        </jsf.war>
+    </target>
+
+</project>
+
diff --git a/jsf-demo/custom-bean-scope/pom.xml b/jsf-demo/custom-bean-scope/pom.xml
new file mode 100644
index 0000000..4ecaf49
--- /dev/null
+++ b/jsf-demo/custom-bean-scope/pom.xml
@@ -0,0 +1,191 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2009-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+    <modelVersion>4.0.0</modelVersion>
+    <groupId>com.sun.faces</groupId>
+    <artifactId>custom-bean-scope</artifactId>
+    <packaging>war</packaging>
+    <name>${project.artifactId}</name>
+    <url>https://mojarra.dev.java.net/</url>
+    <description>Custom Bean Scope Example Application</description>
+    <version>1.0</version>
+
+    <build>
+        <defaultGoal>package</defaultGoal>
+        <sourceDirectory>src/main/java</sourceDirectory>
+        <finalName>${project.artifactId}</finalName>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>RELEASE</version>
+                <configuration>
+                    <source>1.5</source>
+                    <target>1.5</target>
+                </configuration>
+            </plugin>
+            <plugin>
+                <artifactId>maven-antrun-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <phase>compile</phase>
+                        <configuration>
+                            <tasks>
+                                <copy todir="${project.build.outputDirectory}">
+                                    <fileset dir="src/main/java"/>
+                                </copy>
+                            </tasks>
+                        </configuration>
+                        <goals>
+                            <goal>run</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+
+    <repositories>
+        <repository>
+            <id>java.net.m2</id>
+            <name>java.net m2 repo</name>
+            <url>http://download.java.net/maven/2</url>
+        </repository>
+       <repository>
+            <id>glassfish-repo-archive</id>
+            <name>Nexus repository collection for Glassfish</name>
+            <url>http://maven.glassfish.org/content/groups/glassfish</url>
+        </repository>
+        <repository>
+            <id>ibiblio.mirrors</id>
+            <url>http://mirrors.ibiblio.org/pub/mirrors/maven2</url>
+        </repository>
+        <repository>
+            <id>codehaus</id>
+            <name>codehaus</name>
+            <url>http://repository.codehaus.org</url>
+        </repository>
+
+    </repositories>
+
+    <dependencies>
+        <dependency>
+            <groupId>javax</groupId>
+            <artifactId>javaee-api</artifactId>
+            <version>6.0</version>
+            <scope>provided</scope>
+        </dependency>
+
+        <!--
+          Uncomment these dependencies and comment out the one above to use
+          a simple servlet container instead of a Java EE Application Server
+        <dependency>
+            <groupId>com.sun.faces</groupId>
+            <artifactId>jsf-api</artifactId>
+            <version>[2.0.1,)</version>
+        </dependency>
+        <dependency>
+            <groupId>com.sun.faces</groupId>
+            <artifactId>jsf-impl</artifactId>
+            <version>[2.0.1,)</version>
+        </dependency>
+        <dependency>
+            <groupId>javax.servlet</groupId>
+            <artifactId>servlet-api</artifactId>
+            <version>2.5</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>javax.servlet.jsp</groupId>
+            <artifactId>jsp-api</artifactId>
+            <version>2.1</version>
+            <scope>provided</scope>
+        </dependency>
+         <dependency>
+             <groupId>javax.servlet.jsp.jstl</groupId>
+             <artifactId>jstl-api</artifactId>
+             <version>1.2</version>
+         </dependency>
+        <dependency>
+            <groupId>org.glassfish.web</groupId>
+            <artifactId>jstl-impl</artifactId>
+            <version>1.2</version>
+        </dependency>
+        -->
+    </dependencies>
+    <reporting>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-project-info-reports-plugin</artifactId>
+                <reportSets>
+                    <reportSet/>
+                </reportSets>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                    <source>1.5</source>
+                    <target>1.5</target>
+                </configuration>
+            </plugin>
+        </plugins>
+    </reporting>
+    <profiles>
+        <profile>
+            <id>default</id>
+            <!-- Tests are disabled by default.  See the test profile -->
+            <activation>
+                <activeByDefault>true</activeByDefault>
+            </activation>
+            <properties>
+                <maven.test.skip>true</maven.test.skip>
+            </properties>
+        </profile>
+    </profiles>
+</project>
+
diff --git a/jsf-demo/custom-bean-scope/src/main/java/customscope/Bean.java b/jsf-demo/custom-bean-scope/src/main/java/customscope/Bean.java
new file mode 100644
index 0000000..4bc6d37
--- /dev/null
+++ b/jsf-demo/custom-bean-scope/src/main/java/customscope/Bean.java
@@ -0,0 +1,92 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 2009-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package customscope;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.CustomScoped;
+import javax.faces.context.FacesContext;
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
+
+/**
+ * Simple bean that lives in <code>customScope</code>.
+ */
+ at ManagedBean
+ at CustomScoped(value="#{customScope}")
+public class Bean {
+
+    public String getValue() { return "Resolved"; }
+
+
+    // ------------------------------------------------------- Lifecycle Methods
+
+
+    @PostConstruct
+    public void postConstruct() {
+
+        FacesContext ctx = FacesContext.getCurrentInstance();
+        ctx.getExternalContext().getRequestMap().put("postConstructStatus", "Invoked");
+
+    }
+
+
+    @PreDestroy
+    public void preDestroy() {
+
+        FacesContext ctx = FacesContext.getCurrentInstance();
+        ctx.getExternalContext().getRequestMap().put("preDestroyStatus", "Invoked");
+
+    }
+
+
+    // ---------------------------------------------------------- Public Methods
+
+
+    public String destroyScope() {
+
+        FacesContext ctx = FacesContext.getCurrentInstance();
+        CustomScopeELResolver.destroyScope(ctx);
+        return null;
+
+    }
+
+    
+}
diff --git a/jsf-demo/custom-bean-scope/src/main/java/customscope/CustomScopeELResolver.java b/jsf-demo/custom-bean-scope/src/main/java/customscope/CustomScopeELResolver.java
new file mode 100644
index 0000000..334a4e0
--- /dev/null
+++ b/jsf-demo/custom-bean-scope/src/main/java/customscope/CustomScopeELResolver.java
@@ -0,0 +1,197 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 2009-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package customscope;
+
+import javax.el.ELResolver;
+import javax.el.ELContext;
+import javax.el.PropertyNotFoundException;
+import javax.faces.context.FacesContext;
+import javax.faces.application.Application;
+import javax.faces.event.ScopeContext;
+import javax.faces.event.PostConstructCustomScopeEvent;
+import javax.faces.event.PreDestroyCustomScopeEvent;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Collections;
+import java.util.concurrent.ConcurrentHashMap;
+import java.beans.FeatureDescriptor;
+
+/**
+ * This ELResolver handles the resolution of entities within a custom EL scope
+ * called <code>customScope</code>.
+ */
+public class CustomScopeELResolver extends ELResolver {
+
+    private static final String SCOPE_NAME = "customScope";
+
+
+    // ------------------------------------------------- Methods From ELResolver
+
+
+    public Object getValue(ELContext elContext, Object base, Object property) {
+        if (property == null) {
+            throw new PropertyNotFoundException();
+        }
+        if (base == null && SCOPE_NAME.equals(property.toString())) {
+            // explicit scope lookup request
+            CustomScope customScope = getScope(elContext);
+            elContext.setPropertyResolved(true);
+            return customScope;
+        } else if (base != null && base instanceof CustomScope) {
+            // We're dealing with the custom scope that has been explicity referenced
+            // by an expression.  'property' will be the name of some entity
+            // within the scope.
+            return lookup(elContext, (CustomScope) base, property.toString());
+        } 
+        return null;
+    }
+
+    public Class<?> getType(ELContext elContext, Object base, Object property) {
+        return Object.class;
+    }
+
+    public void setValue(ELContext elContext, Object base, Object property, Object value) {
+        // this scope isn't writable in the strict sense, so do nothing.
+    }
+
+    public boolean isReadOnly(ELContext elContext, Object base, Object property) {
+        return true;
+    }
+
+    public Iterator<FeatureDescriptor> getFeatureDescriptors(ELContext elContext, Object base) {
+        return Collections.<FeatureDescriptor>emptyList().iterator();
+    }
+
+    public Class<?> getCommonPropertyType(ELContext elContext, Object base) {
+        if (base != null) {
+            return null;
+        }
+        return String.class;
+    }
+
+
+    // ---------------------------------------------------------- Public Methods
+
+
+    public static void destroyScope(FacesContext ctx) {
+
+        Map<String,Object> sessionMap = ctx.getExternalContext().getSessionMap();
+        CustomScope customScope = (CustomScope) sessionMap.remove(SCOPE_NAME);
+        customScope.notifyDestroy();
+
+    }
+
+
+    // --------------------------------------------------------- Private Methods
+
+
+    private CustomScope getScope(ELContext elContext) {
+
+        FacesContext ctx = (FacesContext) elContext.getContext(FacesContext.class);
+        Map<String,Object> sessionMap = ctx.getExternalContext().getSessionMap();
+        CustomScope customScope = (CustomScope) sessionMap.get(SCOPE_NAME);
+        if (customScope == null) {
+            customScope = new CustomScope(ctx.getApplication());
+            sessionMap.put(SCOPE_NAME, customScope);
+            customScope.notifyCreate();
+        }
+        return customScope;
+
+    }
+
+    
+    private Object lookup(ELContext elContext,
+                          CustomScope scope,
+                          String key) {
+
+        Object value = scope.get(key);
+        elContext.setPropertyResolved(value != null);
+        return value;
+
+    }
+
+
+    // ---------------------------------------------------------- Nested Classes
+
+    private static final class CustomScope extends ConcurrentHashMap<String,Object> {
+
+        private Application application;
+
+        // -------------------------------------------------------- Constructors
+
+
+        private CustomScope(Application application) {
+            this.application = application;
+        }
+
+
+        // ------------------------------------------------------ Public Methods
+
+
+        /**
+         * Publishes <code>PostConstructCustomScopeEvent</code> to notify
+         * interested parties that this scope is now available.
+         */
+        public void notifyCreate() {
+
+            ScopeContext context = new ScopeContext(SCOPE_NAME, this);
+            application.publishEvent(FacesContext.getCurrentInstance(), PostConstructCustomScopeEvent.class, context);
+
+        }
+
+
+        /**
+         * Publishes <code>PreDestroyCustomScopeEvent</code> to notify
+         * interested parties that this scope is being destroyed.
+         */
+        public void notifyDestroy() {
+
+            // notify interested parties that this scope is being
+            // destroyed
+            ScopeContext scopeContext = new ScopeContext(SCOPE_NAME,
+                                                         this);
+            application.publishEvent(FacesContext.getCurrentInstance(), PreDestroyCustomScopeEvent.class,
+                                     scopeContext);
+
+        }
+
+    }
+}
diff --git a/jsf-demo/custom-bean-scope/src/main/webapp/WEB-INF/faces-config.xml b/jsf-demo/custom-bean-scope/src/main/webapp/WEB-INF/faces-config.xml
new file mode 100644
index 0000000..4458b97
--- /dev/null
+++ b/jsf-demo/custom-bean-scope/src/main/webapp/WEB-INF/faces-config.xml
@@ -0,0 +1,55 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2009-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!-- =========== FULL CONFIGURATION FILE ================================== -->
+
+<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
+              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+              xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
+              version="2.0">
+
+    <application>
+        <el-resolver>customscope.CustomScopeELResolver</el-resolver>
+    </application>
+
+</faces-config>
diff --git a/jsf-demo/custom-bean-scope/src/main/webapp/WEB-INF/web.xml b/jsf-demo/custom-bean-scope/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..7c21113
--- /dev/null
+++ b/jsf-demo/custom-bean-scope/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,72 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2009-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<web-app version="2.5"
+         xmlns="http://java.sun.com/xml/ns/javaee"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
+
+    <display-name>
+        Custom Managed Bean Scope Sample Application
+    </display-name>
+
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>Development</param-value>
+    </context-param>
+
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+    </servlet>
+
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>*.xhtml</url-pattern>
+    </servlet-mapping>
+
+    <welcome-file-list>
+        <welcome-file>custom.xhtml</welcome-file>
+    </welcome-file-list>
+
+</web-app>
diff --git a/jsf-demo/custom-bean-scope/src/main/webapp/custom.xhtml b/jsf-demo/custom-bean-scope/src/main/webapp/custom.xhtml
new file mode 100644
index 0000000..6ec9e85
--- /dev/null
+++ b/jsf-demo/custom-bean-scope/src/main/webapp/custom.xhtml
@@ -0,0 +1,101 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2009-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+<f:view contentType="text/html; charset=iso-8859-1"/>
+<head>
+    <title>Custom Scope Example</title>
+</head>
+<body>
+    <p>
+        Result of expression evaluation referencing the custom scoped bean (\#{bean.value}): <span id="create" style="color:red">#{bean.value}</span>
+    </p>
+    
+    <p>
+        Result of expression evaluation with the custom scope explicity referenced (\#{customScope.bean.value}): <span id="scopeReference" style="color:red">#{customScope.bean.value}</span>
+    </p>
+
+    <p>
+        Show that \#{bean.value} is still referencable after the bean has been created: <span id="nonCreate" style="color:red">#{bean.value}</span>
+    </p>
+
+    <p>
+        <h:form id="form">
+            <h:commandButton id="reload" value="Reload" />
+            <h:commandButton id="destroy" value="Destroy Custom Scope" action="#{bean.destroyScope}"/>
+        </h:form>
+    </p>
+    <h:panelGrid id="grid" columns="2" style="border-style:solid">
+        <f:facet name="header">
+            <h:outputText value="PostConstruct/PreDestory Invocation Status" />
+        </f:facet>
+        <h:outputText value="PostConstruct" />
+        <h:outputText value="#{requestScope.postConstructStatus}"/>
+        <h:outputText value="PreDestroy" />
+        <h:outputText value="#{requestScope.preDestroyStatus}"/>
+    </h:panelGrid>
+
+<hr />
+<p>
+    Demo Notes
+</p>
+    <ul>
+        <li>In all cases, the three expressions above should show the expression
+            as <span style="Color:red">Resolved</span></li>
+        <li>On the initial render, the <em>PostConstruct</em> status show show a
+            value. However, since this scope is tied to the session, clicking
+            the reload button should clear that status
+        </li>
+        <li>If the destroy button pushed, both the <em>PostConstruct</em> and
+            <em>PreDestroy</em> status should have a value. This is because the
+            scope is destroyed, and then recreated when the view is re-rendered.
+        </li>
+    </ul>
+
+</body>
+</html>
diff --git a/jsf-demo/custom-tag/README.txt b/jsf-demo/custom-tag/README.txt
new file mode 100644
index 0000000..111b8c0
--- /dev/null
+++ b/jsf-demo/custom-tag/README.txt
@@ -0,0 +1,42 @@
+
+This demo is designed to show you how to create a custom component written in Java with JSF 2.
+
+It includes the changes in web.xml needed to add the custom-taglib.xml file:
+
+     <context-param>
+        <param-name>javax.faces.FACELETS_LIBRARIES</param-name>
+        <param-value>/WEB-INF/custom-taglib.xml</param-value>
+    </context-param>
+
+ The custom-taglib.xml itself is very simple, and only contains a single tag:
+
+    <namespace>http://javaserverfaces.dev.java.net/demo/custom-taglib</namespace>
+    <tag>
+        <tag-name>adiv</tag-name>
+        <component>
+            <component-type>ajaxawarediv</component-type>
+        </component>
+    </tag>
+
+ The namespace definition in the above file is referred to in the using page's namespace, like this:
+
+ <html xmlns="http://www.w3.org/1999/xhtml"
+       xmlns:h="http://java.sun.com/jsf/html"
+       xmlns:f="http://java.sun.com/jsf/core"
+       xmlns:cu="http://javaserverfaces.dev.java.net/demo/custom-taglib">
+
+Then, you use that namespace to specify the tag:
+
+            <cu:adiv id="customId">
+                <f:ajax render="eventcount" listener="#{data.updateEventCount}"/>
+            </cu:adiv>
+
+Then, you need to name the Component to be the same as the component-type, above:
+
+ at FacesComponent(value = "ajaxawarediv")
+public class AjaxAwareDiv extends UIComponentBase implements ClientBehaviorHolder {
+
+
+We've also added the ability for the component to detect the f:ajax tag, and act on it.
+Most of the code in AjaxAwareDiv.java is concerned with f:ajax detection.
+
diff --git a/jsf-demo/custom-tag/build.xml b/jsf-demo/custom-tag/build.xml
new file mode 100644
index 0000000..57bc702
--- /dev/null
+++ b/jsf-demo/custom-tag/build.xml
@@ -0,0 +1,120 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project name="helloworld" default="build" basedir=".">
+   
+
+    <property file="${user.home}/build.properties"/> 
+    <property file="../../build.properties"/>
+    <import file="${jsf.build.home}/common/ant/common.xml"/>
+    
+    <!-- Configure the context path for this application -->
+    <property name="context.path" value="/helloworld"/>
+    <property name="example" value="helloworld"/>
+    <property name="build" value="${basedir}/build"/>
+    <property name="lib" value="${basedir}/lib"/>
+
+    <path id="classpath">       
+        <pathelement location="${javax.faces-api.jar}"/>
+        <pathelement location="${javax.faces.jar}"/>       
+        <pathelement location="${build}/WEB-INF/classes"/>
+        <path refid="compile.classpath"/>
+    </path>
+    
+    <target name="init">
+        <tstamp/>
+    </target>
+
+    <target name="clean">
+        <delete dir="${build}"/>
+        <delete dir="${lib}"/>
+        <delete dir="${context.path}"/>
+    </target>    
+    
+    <target name="prepare" depends="init"
+            description="Create build directories.">
+        <mkdir dir="${build}/${example}/"/>
+        <mkdir dir="${build}/${example}/WEB-INF"/>
+        <mkdir dir="${build}/${example}/WEB-INF/classes"/>
+        <mkdir dir="${build}/${example}/WEB-INF/lib"/>
+    </target>       
+
+    <target name="build" depends="prepare"
+            description="Compile Java files and copy static files.">
+         <jsf.javac srcdir="src"
+                   destdir="${build}/${example}/WEB-INF/classes">
+            <classpath>
+                <path refid="classpath"/>
+            </classpath>
+        </jsf.javac>
+        <copy todir="${build}/${example}/WEB-INF">
+            <fileset dir="src/main/webapp/WEB-INF">
+                <include name="*.xml"/>
+            </fileset>
+        </copy>
+
+        <copy todir="${build}/${example}/">
+            <fileset dir="src/main/webapp">
+                <include name="*.html"/>
+                <include name="*.gif"/>
+                <include name="*.jpg"/>
+                <include name="*.jsp"/>
+                <include name="*.xml"/>
+                <include name="*.xhtml"/>
+            </fileset>
+        </copy>
+        <copy todir="${build}/${example}/WEB-INF/classes/facelet-guessNumber">
+            <fileset dir="src/main/webapp">
+                <include name="*properties"/>
+            </fileset>
+        </copy>
+     
+        <jsf.war basedir="${build}"
+                 archive-name="${example}"
+                 webxml="${build}/${example}/WEB-INF/web.xml">
+            <archive-elements>
+                <zipfileset dir="${build}/${example}"/>
+            </archive-elements>
+        </jsf.war>
+    </target>
+</project>
+
diff --git a/jsf-demo/custom-tag/pom.xml b/jsf-demo/custom-tag/pom.xml
new file mode 100644
index 0000000..b98083c
--- /dev/null
+++ b/jsf-demo/custom-tag/pom.xml
@@ -0,0 +1,173 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+    <modelVersion>4.0.0</modelVersion>
+    <groupId>com.sun.faces</groupId>
+    <artifactId>custom-tag</artifactId>
+    <packaging>war</packaging>
+    <name>${project.artifactId}</name>
+    <url>https://mojarra.dev.java.net/</url>
+    <description>Example App</description>
+    <version>1.0</version>
+
+    <build>
+        <defaultGoal>package</defaultGoal>
+        <sourceDirectory>src/main/java</sourceDirectory>
+        <finalName>${project.artifactId}</finalName>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>RELEASE</version>
+                <configuration>
+                    <source>1.5</source>
+                    <target>1.5</target>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+
+    <repositories>
+        <repository>
+            <id>java.net.m2</id>
+            <name>java.net m2 repo</name>
+            <url>http://download.java.net/maven/2</url>
+        </repository>
+       <repository>
+            <id>glassfish-repo-archive</id>
+            <name>Nexus repository collection for Glassfish</name>
+            <url>http://maven.glassfish.org/content/groups/glassfish</url>
+        </repository>
+        <repository>
+            <id>ibiblio.mirrors</id>
+            <url>http://mirrors.ibiblio.org/pub/mirrors/maven2</url>
+        </repository>
+        <repository>
+            <id>codehaus</id>
+            <name>codehaus</name>
+            <url>http://repository.codehaus.org</url>
+        </repository>
+    </repositories>
+
+    <dependencies>
+        <dependency>
+            <groupId>javax.faces</groupId>
+            <artifactId>jsf-api</artifactId>
+            <version>2.0</version>
+            <scope>provided</scope>
+        </dependency>
+
+        <!--
+          Uncomment these dependencies and comment out the one above to use
+          a simple servlet container instead of a Java EE Application Server
+        <dependency>
+            <groupId>com.sun.faces</groupId>
+            <artifactId>jsf-api</artifactId>
+            <version>[2.0.1,)</version>
+        </dependency>
+        <dependency>
+            <groupId>com.sun.faces</groupId>
+            <artifactId>jsf-impl</artifactId>
+            <version>[2.0.1,)</version>
+        </dependency>
+        <dependency>
+            <groupId>javax.servlet</groupId>
+            <artifactId>servlet-api</artifactId>
+            <version>2.5</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>javax.servlet.jsp</groupId>
+            <artifactId>jsp-api</artifactId>
+            <version>2.1</version>
+            <scope>provided</scope>
+        </dependency>
+         <dependency>
+             <groupId>javax.servlet.jsp.jstl</groupId>
+             <artifactId>jstl-api</artifactId>
+             <version>1.2</version>
+         </dependency>
+        <dependency>
+            <groupId>org.glassfish.web</groupId>
+            <artifactId>jstl-impl</artifactId>
+            <version>1.2</version>
+        </dependency>
+        -->
+
+    </dependencies>
+    <reporting>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-project-info-reports-plugin</artifactId>
+                <reportSets>
+                    <reportSet/>
+                </reportSets>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                    <source>1.5</source>
+                    <target>1.5</target>
+                </configuration>
+            </plugin>
+        </plugins>
+    </reporting>
+    <profiles>
+        <profile>
+            <id>default</id>
+            <!-- Tests are disabled by default.  See the test profile -->
+            <activation>
+                <activeByDefault>true</activeByDefault>
+            </activation>
+            <properties>
+                <maven.test.skip>true</maven.test.skip>
+            </properties>
+        </profile>
+    </profiles>
+</project>
+
diff --git a/jsf-demo/custom-tag/src/main/java/customtag/AjaxAwareDiv.java b/jsf-demo/custom-tag/src/main/java/customtag/AjaxAwareDiv.java
new file mode 100644
index 0000000..2014316
--- /dev/null
+++ b/jsf-demo/custom-tag/src/main/java/customtag/AjaxAwareDiv.java
@@ -0,0 +1,123 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package customtag;
+
+import java.io.IOException;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+import javax.faces.component.FacesComponent;
+import javax.faces.component.UIComponentBase;
+import javax.faces.component.behavior.ClientBehavior;
+import javax.faces.component.behavior.ClientBehaviorContext;
+import javax.faces.component.behavior.ClientBehaviorHolder;
+import javax.faces.context.ExternalContext;
+import javax.faces.context.FacesContext;
+import javax.faces.context.ResponseWriter;
+
+ at FacesComponent(value = "ajaxawarediv")
+public class AjaxAwareDiv extends UIComponentBase implements ClientBehaviorHolder {
+
+
+    @Override
+    public String getFamily() {
+        return "custom";
+    }
+
+    @Override
+    public void encodeEnd(FacesContext context) throws IOException {
+
+        ClientBehaviorContext behaviorContext =
+                ClientBehaviorContext.createClientBehaviorContext(context,
+                this, "click", getClientId(context), null);
+
+        ResponseWriter responseWriter = context.getResponseWriter();
+        responseWriter.startElement("div", null);
+        responseWriter.writeAttribute("id",getClientId(context),"id");
+        responseWriter.writeAttribute("name", getClientId(context),"clientId");
+        Map<String,List<ClientBehavior>> behaviors = getClientBehaviors();
+        if (behaviors.containsKey("click") ) {
+            String click = behaviors.get("click").get(0).getScript(behaviorContext);
+            responseWriter.writeAttribute("onclick", click, null);
+        }
+        responseWriter.write("Hey! Click me! I'm a clickable div!");
+        responseWriter.endElement("div");
+    }
+
+
+    @Override
+    public void decode(FacesContext context) {
+        Map<String, List<ClientBehavior>> behaviors = getClientBehaviors();
+        if (behaviors.isEmpty()) {
+            return;
+        }
+
+        ExternalContext external = context.getExternalContext();
+        Map<String, String> params = external.getRequestParameterMap();
+        String behaviorEvent = params.get("javax.faces.behavior.event");
+
+        if (behaviorEvent != null) {
+            List<ClientBehavior> behaviorsForEvent = behaviors.get(behaviorEvent);
+
+            if (behaviors.size() > 0) {
+                String behaviorSource = params.get("javax.faces.source");
+               String clientId = getClientId(context);
+               if (behaviorSource != null && behaviorSource.equals(clientId)) {
+                   for (ClientBehavior behavior: behaviorsForEvent) {
+                       behavior.decode(context, this);
+                   }
+               }
+            }
+        }
+    }
+
+    @Override
+    public Collection<String> getEventNames() {
+        return Arrays.asList("click");
+    }
+
+    @Override
+    public String getDefaultEventName() {
+        return "click";
+    }
+}
+
diff --git a/jsf-demo/custom-tag/src/main/java/customtag/MyCustomComponentBean.java b/jsf-demo/custom-tag/src/main/java/customtag/MyCustomComponentBean.java
new file mode 100644
index 0000000..153b29f
--- /dev/null
+++ b/jsf-demo/custom-tag/src/main/java/customtag/MyCustomComponentBean.java
@@ -0,0 +1,91 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package customtag;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.ViewScoped;
+import javax.faces.event.AjaxBehaviorEvent;
+
+/**
+ *
+ * @author netdance
+ */
+ at ManagedBean(name="data")
+ at ViewScoped
+public class MyCustomComponentBean {
+
+    private String hello = "Hello";
+
+    private int count = hello.length();
+
+    private int eventCount = 0;
+
+    /**
+     * @return the hello
+     */
+    public String getHello() {
+        return hello;
+    }
+
+    /**
+     * @param hello the hello to set
+     */
+    public void setHello(String hello) {
+        this.hello = hello;
+    }
+
+    public int getCount() {
+        return count;
+    }
+
+    public int getEventCount() {
+        return eventCount;
+    }
+
+    public void update(AjaxBehaviorEvent event) {
+        count = hello.length();
+        eventCount++;
+    }
+
+    public void updateEventCount(AjaxBehaviorEvent event) {
+        eventCount++;
+    }
+}
diff --git a/jsf-demo/custom-tag/src/main/webapp/WEB-INF/custom-taglib.xml b/jsf-demo/custom-tag/src/main/webapp/WEB-INF/custom-taglib.xml
new file mode 100644
index 0000000..5e60643
--- /dev/null
+++ b/jsf-demo/custom-tag/src/main/webapp/WEB-INF/custom-taglib.xml
@@ -0,0 +1,54 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<facelet-taglib xmlns="http://java.sun.com/xml/ns/javaee"
+              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+              xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facelettaglibrary_2_0.xsd"
+              version="2.0">
+    <namespace>http://javaserverfaces.dev.java.net/demo/custom-taglib</namespace>
+    <tag>
+        <tag-name>adiv</tag-name>
+        <component>
+            <component-type>ajaxawarediv</component-type>
+        </component>
+    </tag>
+</facelet-taglib>
diff --git a/jsf-demo/custom-tag/src/main/webapp/WEB-INF/web.xml b/jsf-demo/custom-tag/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..2ae863c
--- /dev/null
+++ b/jsf-demo/custom-tag/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,78 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE web-app PUBLIC
+  "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
+  "http://java.sun.com/dtd/web-app_2_3.dtd">
+<web-app>
+    <display-name>Facelets Tutorial</display-name>
+    <description>Ajax Aware Custom Component</description>
+    <!-- Change to "Production" when you are ready to deploy -->
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>Development</param-value>
+    </context-param>
+
+    <!-- Add the custom taglibrary -->
+     <context-param>
+        <param-name>javax.faces.FACELETS_LIBRARIES</param-name>
+        <param-value>/WEB-INF/custom-taglib.xml</param-value>
+    </context-param>
+
+    <!-- Faces Servlet -->
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+
+    <!-- Faces Servlet Mapping -->
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <!-- welcome file mapping -->
+    <welcome-file-list>
+        <welcome-file>faces/index.xhtml</welcome-file>
+    </welcome-file-list>
+</web-app>
diff --git a/jsf-demo/custom-tag/src/main/webapp/index.xhtml b/jsf-demo/custom-tag/src/main/webapp/index.xhtml
new file mode 100644
index 0000000..1909c73
--- /dev/null
+++ b/jsf-demo/custom-tag/src/main/webapp/index.xhtml
@@ -0,0 +1,75 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:cu="http://javaserverfaces.dev.java.net/demo/custom-taglib">
+
+    <f:view contentType="text/html"/>
+    <h:head><title>Ajax Aware Custom Component Demo</title></h:head>
+    <h:body>
+        <h:form id="form">
+            <br/>
+            Echo test: <h:outputText id="out" value="#{data.hello}"/>
+            <br/>
+            String Length: <h:outputText id="count" value="#{data.count}"/>
+            <br/>
+            <h:inputText id="in" value="#{data.hello}" autocomplete="off">
+                <f:ajax event="keyup" render="out count eventcount" listener="#{data.update}"/>
+            </h:inputText>
+            <br/>
+            Event count: <h:outputText id="eventcount" value="#{data.eventCount}"/>
+            <br/><br/>
+            <cu:adiv id="customId">
+                <f:ajax render="eventcount" listener="#{data.updateEventCount}"/>
+            </cu:adiv>
+        </h:form>
+
+        <p><a href="http://weblogs.java.net/blog/driscoll/archive/2009/10/09/jsf-2-custom-java-components-and-ajax-behaviors">Blog discussing this example</a></p>
+
+    </h:body>
+</html>
+
diff --git a/jsf-demo/demo.iml b/jsf-demo/demo.iml
new file mode 100644
index 0000000..33baf34
--- /dev/null
+++ b/jsf-demo/demo.iml
@@ -0,0 +1,810 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module relativePaths="true" type="JAVA_MODULE" version="4">
+  <component name="FacetManager">
+    <facet type="web" name="templateDemo">
+      <configuration>
+        <descriptors>
+          <deploymentDescriptor name="web.xml" url="file://$MODULE_DIR$/templateDemo/web/WEB-INF/web.xml" />
+        </descriptors>
+        <webroots>
+          <root url="file://$MODULE_DIR$/templateDemo/web" relative="/" />
+        </webroots>
+        <sourceRoots>
+          <root url="file://$MODULE_DIR$/ajax-queue/src/main/java" />
+          <root url="file://$MODULE_DIR$/ajax-request/src/main/java" />
+          <root url="file://$MODULE_DIR$/carstore/src/java" />
+          <root url="file://$MODULE_DIR$/characterCombat/src" />
+          <root url="file://$MODULE_DIR$/components/src/java" />
+          <root url="file://$MODULE_DIR$/ezcomp00/src/main/java" />
+          <root url="file://$MODULE_DIR$/ezcomp01/src/main/java" />
+          <root url="file://$MODULE_DIR$/ezcomp02/src/main/java" />
+          <root url="file://$MODULE_DIR$/guessNumber/src/java" />
+          <root url="file://$MODULE_DIR$/guessNumber2.0/src/java" />
+          <root url="file://$MODULE_DIR$/head-body/src/main/java" />
+          <root url="file://$MODULE_DIR$/helloDuke/src" />
+          <root url="file://$MODULE_DIR$/helloFacelet/src" />
+          <root url="file://$MODULE_DIR$/j2meDemo/midlet" />
+          <root url="file://$MODULE_DIR$/j2meDemo/src/java" />
+          <root url="file://$MODULE_DIR$/mojarra_ext/src/java" />
+          <root url="file://$MODULE_DIR$/nonjsp/src/java" />
+          <root url="file://$MODULE_DIR$/renderkits/src/java" />
+          <root url="file://$MODULE_DIR$/standard/src" />
+          <root url="file://$MODULE_DIR$/stock/src/main/java" />
+          <root url="file://$MODULE_DIR$/test/mappingDemo/src" />
+          <root url="file://$MODULE_DIR$/test/tests" />
+          <root url="file://$MODULE_DIR$/webtier-sample/src/java" />
+        </sourceRoots>
+      </configuration>
+    </facet>
+    <facet type="web" name="j2meDemo">
+      <configuration>
+        <descriptors>
+          <deploymentDescriptor name="web.xml" url="file://$MODULE_DIR$/archive/j2meDemo/web/WEB-INF/web.xml" />
+        </descriptors>
+        <webroots>
+          <root url="file://$MODULE_DIR$/j2meDemo/web" relative="/" />
+        </webroots>
+        <sourceRoots>
+          <root url="file://$MODULE_DIR$/ajax-queue/src/main/java" />
+          <root url="file://$MODULE_DIR$/ajax-request/src/main/java" />
+          <root url="file://$MODULE_DIR$/carstore/src/java" />
+          <root url="file://$MODULE_DIR$/characterCombat/src" />
+          <root url="file://$MODULE_DIR$/components/src/java" />
+          <root url="file://$MODULE_DIR$/ezcomp00/src/main/java" />
+          <root url="file://$MODULE_DIR$/ezcomp01/src/main/java" />
+          <root url="file://$MODULE_DIR$/ezcomp02/src/main/java" />
+          <root url="file://$MODULE_DIR$/guessNumber/src/java" />
+          <root url="file://$MODULE_DIR$/guessNumber2.0/src/java" />
+          <root url="file://$MODULE_DIR$/head-body/src/main/java" />
+          <root url="file://$MODULE_DIR$/helloDuke/src" />
+          <root url="file://$MODULE_DIR$/helloFacelet/src" />
+          <root url="file://$MODULE_DIR$/j2meDemo/midlet" />
+          <root url="file://$MODULE_DIR$/j2meDemo/src/java" />
+          <root url="file://$MODULE_DIR$/mojarra_ext/src/java" />
+          <root url="file://$MODULE_DIR$/nonjsp/src/java" />
+          <root url="file://$MODULE_DIR$/renderkits/src/java" />
+          <root url="file://$MODULE_DIR$/standard/src" />
+          <root url="file://$MODULE_DIR$/stock/src/main/java" />
+          <root url="file://$MODULE_DIR$/test/mappingDemo/src" />
+          <root url="file://$MODULE_DIR$/test/tests" />
+          <root url="file://$MODULE_DIR$/webtier-sample/src/java" />
+        </sourceRoots>
+      </configuration>
+    </facet>
+    <facet type="web" name="ajax-request">
+      <configuration>
+        <descriptors>
+          <deploymentDescriptor name="web.xml" url="file://$MODULE_DIR$/sandbox/ajax-request/src/main/webapp/WEB-INF/web.xml" />
+        </descriptors>
+        <webroots>
+          <root url="file://$MODULE_DIR$/ajax-request/src/main/webapp" relative="/" />
+        </webroots>
+        <sourceRoots>
+          <root url="file://$MODULE_DIR$/ajax-queue/src/main/java" />
+          <root url="file://$MODULE_DIR$/ajax-request/src/main/java" />
+          <root url="file://$MODULE_DIR$/carstore/src/java" />
+          <root url="file://$MODULE_DIR$/characterCombat/src" />
+          <root url="file://$MODULE_DIR$/components/src/java" />
+          <root url="file://$MODULE_DIR$/ezcomp00/src/main/java" />
+          <root url="file://$MODULE_DIR$/ezcomp01/src/main/java" />
+          <root url="file://$MODULE_DIR$/ezcomp02/src/main/java" />
+          <root url="file://$MODULE_DIR$/guessNumber/src/java" />
+          <root url="file://$MODULE_DIR$/guessNumber2.0/src/java" />
+          <root url="file://$MODULE_DIR$/head-body/src/main/java" />
+          <root url="file://$MODULE_DIR$/helloDuke/src" />
+          <root url="file://$MODULE_DIR$/helloFacelet/src" />
+          <root url="file://$MODULE_DIR$/j2meDemo/midlet" />
+          <root url="file://$MODULE_DIR$/j2meDemo/src/java" />
+          <root url="file://$MODULE_DIR$/mojarra_ext/src/java" />
+          <root url="file://$MODULE_DIR$/nonjsp/src/java" />
+          <root url="file://$MODULE_DIR$/renderkits/src/java" />
+          <root url="file://$MODULE_DIR$/standard/src" />
+          <root url="file://$MODULE_DIR$/stock/src/main/java" />
+          <root url="file://$MODULE_DIR$/test/mappingDemo/src" />
+          <root url="file://$MODULE_DIR$/test/tests" />
+          <root url="file://$MODULE_DIR$/webtier-sample/src/java" />
+        </sourceRoots>
+      </configuration>
+    </facet>
+    <facet type="web" name="ezcomp02">
+      <configuration>
+        <descriptors>
+          <deploymentDescriptor name="web.xml" url="file://$MODULE_DIR$/sandbox/ezcomp02/src/main/webapp/WEB-INF/web.xml" />
+        </descriptors>
+        <webroots>
+          <root url="file://$MODULE_DIR$/ezcomp02/src/main/webapp" relative="/" />
+        </webroots>
+        <sourceRoots>
+          <root url="file://$MODULE_DIR$/ajax-queue/src/main/java" />
+          <root url="file://$MODULE_DIR$/ajax-request/src/main/java" />
+          <root url="file://$MODULE_DIR$/carstore/src/java" />
+          <root url="file://$MODULE_DIR$/characterCombat/src" />
+          <root url="file://$MODULE_DIR$/components/src/java" />
+          <root url="file://$MODULE_DIR$/ezcomp00/src/main/java" />
+          <root url="file://$MODULE_DIR$/ezcomp01/src/main/java" />
+          <root url="file://$MODULE_DIR$/ezcomp02/src/main/java" />
+          <root url="file://$MODULE_DIR$/guessNumber/src/java" />
+          <root url="file://$MODULE_DIR$/guessNumber2.0/src/java" />
+          <root url="file://$MODULE_DIR$/head-body/src/main/java" />
+          <root url="file://$MODULE_DIR$/helloDuke/src" />
+          <root url="file://$MODULE_DIR$/helloFacelet/src" />
+          <root url="file://$MODULE_DIR$/j2meDemo/midlet" />
+          <root url="file://$MODULE_DIR$/j2meDemo/src/java" />
+          <root url="file://$MODULE_DIR$/mojarra_ext/src/java" />
+          <root url="file://$MODULE_DIR$/nonjsp/src/java" />
+          <root url="file://$MODULE_DIR$/renderkits/src/java" />
+          <root url="file://$MODULE_DIR$/standard/src" />
+          <root url="file://$MODULE_DIR$/stock/src/main/java" />
+          <root url="file://$MODULE_DIR$/test/mappingDemo/src" />
+          <root url="file://$MODULE_DIR$/test/tests" />
+          <root url="file://$MODULE_DIR$/webtier-sample/src/java" />
+        </sourceRoots>
+      </configuration>
+    </facet>
+    <facet type="web" name="head-body">
+      <configuration>
+        <descriptors>
+          <deploymentDescriptor name="web.xml" url="file://$MODULE_DIR$/sandbox/head-body/src/main/webapp/WEB-INF/web.xml" />
+        </descriptors>
+        <webroots>
+          <root url="file://$MODULE_DIR$/head-body/src/main/webapp" relative="/" />
+        </webroots>
+        <sourceRoots>
+          <root url="file://$MODULE_DIR$/ajax-queue/src/main/java" />
+          <root url="file://$MODULE_DIR$/ajax-request/src/main/java" />
+          <root url="file://$MODULE_DIR$/carstore/src/java" />
+          <root url="file://$MODULE_DIR$/characterCombat/src" />
+          <root url="file://$MODULE_DIR$/components/src/java" />
+          <root url="file://$MODULE_DIR$/ezcomp00/src/main/java" />
+          <root url="file://$MODULE_DIR$/ezcomp01/src/main/java" />
+          <root url="file://$MODULE_DIR$/ezcomp02/src/main/java" />
+          <root url="file://$MODULE_DIR$/guessNumber/src/java" />
+          <root url="file://$MODULE_DIR$/guessNumber2.0/src/java" />
+          <root url="file://$MODULE_DIR$/head-body/src/main/java" />
+          <root url="file://$MODULE_DIR$/helloDuke/src" />
+          <root url="file://$MODULE_DIR$/helloFacelet/src" />
+          <root url="file://$MODULE_DIR$/j2meDemo/midlet" />
+          <root url="file://$MODULE_DIR$/j2meDemo/src/java" />
+          <root url="file://$MODULE_DIR$/mojarra_ext/src/java" />
+          <root url="file://$MODULE_DIR$/nonjsp/src/java" />
+          <root url="file://$MODULE_DIR$/renderkits/src/java" />
+          <root url="file://$MODULE_DIR$/standard/src" />
+          <root url="file://$MODULE_DIR$/stock/src/main/java" />
+          <root url="file://$MODULE_DIR$/test/mappingDemo/src" />
+          <root url="file://$MODULE_DIR$/test/tests" />
+          <root url="file://$MODULE_DIR$/webtier-sample/src/java" />
+        </sourceRoots>
+      </configuration>
+    </facet>
+    <facet type="web" name="nonjsp">
+      <configuration>
+        <descriptors>
+          <deploymentDescriptor name="web.xml" url="file://$MODULE_DIR$/archive/nonjsp/web/WEB-INF/web.xml" />
+        </descriptors>
+        <webroots>
+          <root url="file://$MODULE_DIR$/nonjsp/web" relative="/" />
+        </webroots>
+        <sourceRoots>
+          <root url="file://$MODULE_DIR$/ajax-queue/src/main/java" />
+          <root url="file://$MODULE_DIR$/ajax-request/src/main/java" />
+          <root url="file://$MODULE_DIR$/carstore/src/java" />
+          <root url="file://$MODULE_DIR$/characterCombat/src" />
+          <root url="file://$MODULE_DIR$/components/src/java" />
+          <root url="file://$MODULE_DIR$/ezcomp00/src/main/java" />
+          <root url="file://$MODULE_DIR$/ezcomp01/src/main/java" />
+          <root url="file://$MODULE_DIR$/ezcomp02/src/main/java" />
+          <root url="file://$MODULE_DIR$/guessNumber/src/java" />
+          <root url="file://$MODULE_DIR$/guessNumber2.0/src/java" />
+          <root url="file://$MODULE_DIR$/head-body/src/main/java" />
+          <root url="file://$MODULE_DIR$/helloDuke/src" />
+          <root url="file://$MODULE_DIR$/helloFacelet/src" />
+          <root url="file://$MODULE_DIR$/j2meDemo/midlet" />
+          <root url="file://$MODULE_DIR$/j2meDemo/src/java" />
+          <root url="file://$MODULE_DIR$/mojarra_ext/src/java" />
+          <root url="file://$MODULE_DIR$/nonjsp/src/java" />
+          <root url="file://$MODULE_DIR$/renderkits/src/java" />
+          <root url="file://$MODULE_DIR$/standard/src" />
+          <root url="file://$MODULE_DIR$/stock/src/main/java" />
+          <root url="file://$MODULE_DIR$/test/mappingDemo/src" />
+          <root url="file://$MODULE_DIR$/test/tests" />
+          <root url="file://$MODULE_DIR$/webtier-sample/src/java" />
+        </sourceRoots>
+      </configuration>
+    </facet>
+    <facet type="web" name="guessNumber2.0">
+      <configuration>
+        <descriptors>
+          <deploymentDescriptor name="web.xml" url="file://$MODULE_DIR$/guessNumber/src/main/webapp/WEB-INF/web.xml" />
+        </descriptors>
+        <webroots>
+          <root url="file://$MODULE_DIR$/guessNumber2.0/web" relative="/" />
+        </webroots>
+        <sourceRoots>
+          <root url="file://$MODULE_DIR$/ajax-queue/src/main/java" />
+          <root url="file://$MODULE_DIR$/ajax-request/src/main/java" />
+          <root url="file://$MODULE_DIR$/carstore/src/java" />
+          <root url="file://$MODULE_DIR$/characterCombat/src" />
+          <root url="file://$MODULE_DIR$/components/src/java" />
+          <root url="file://$MODULE_DIR$/ezcomp00/src/main/java" />
+          <root url="file://$MODULE_DIR$/ezcomp01/src/main/java" />
+          <root url="file://$MODULE_DIR$/ezcomp02/src/main/java" />
+          <root url="file://$MODULE_DIR$/guessNumber/src/java" />
+          <root url="file://$MODULE_DIR$/guessNumber2.0/src/java" />
+          <root url="file://$MODULE_DIR$/head-body/src/main/java" />
+          <root url="file://$MODULE_DIR$/helloDuke/src" />
+          <root url="file://$MODULE_DIR$/helloFacelet/src" />
+          <root url="file://$MODULE_DIR$/j2meDemo/midlet" />
+          <root url="file://$MODULE_DIR$/j2meDemo/src/java" />
+          <root url="file://$MODULE_DIR$/mojarra_ext/src/java" />
+          <root url="file://$MODULE_DIR$/nonjsp/src/java" />
+          <root url="file://$MODULE_DIR$/renderkits/src/java" />
+          <root url="file://$MODULE_DIR$/standard/src" />
+          <root url="file://$MODULE_DIR$/stock/src/main/java" />
+          <root url="file://$MODULE_DIR$/test/mappingDemo/src" />
+          <root url="file://$MODULE_DIR$/test/tests" />
+          <root url="file://$MODULE_DIR$/webtier-sample/src/java" />
+        </sourceRoots>
+      </configuration>
+    </facet>
+    <facet type="web" name="guessNumber">
+      <configuration>
+        <descriptors>
+          <deploymentDescriptor name="web.xml" url="file://$MODULE_DIR$/archive/guessNumber/web/WEB-INF/web.xml" />
+        </descriptors>
+        <webroots>
+          <root url="file://$MODULE_DIR$/guessNumber/web" relative="/" />
+        </webroots>
+        <sourceRoots>
+          <root url="file://$MODULE_DIR$/ajax-queue/src/main/java" />
+          <root url="file://$MODULE_DIR$/ajax-request/src/main/java" />
+          <root url="file://$MODULE_DIR$/carstore/src/java" />
+          <root url="file://$MODULE_DIR$/characterCombat/src" />
+          <root url="file://$MODULE_DIR$/components/src/java" />
+          <root url="file://$MODULE_DIR$/ezcomp00/src/main/java" />
+          <root url="file://$MODULE_DIR$/ezcomp01/src/main/java" />
+          <root url="file://$MODULE_DIR$/ezcomp02/src/main/java" />
+          <root url="file://$MODULE_DIR$/guessNumber/src/java" />
+          <root url="file://$MODULE_DIR$/guessNumber2.0/src/java" />
+          <root url="file://$MODULE_DIR$/head-body/src/main/java" />
+          <root url="file://$MODULE_DIR$/helloDuke/src" />
+          <root url="file://$MODULE_DIR$/helloFacelet/src" />
+          <root url="file://$MODULE_DIR$/j2meDemo/midlet" />
+          <root url="file://$MODULE_DIR$/j2meDemo/src/java" />
+          <root url="file://$MODULE_DIR$/mojarra_ext/src/java" />
+          <root url="file://$MODULE_DIR$/nonjsp/src/java" />
+          <root url="file://$MODULE_DIR$/renderkits/src/java" />
+          <root url="file://$MODULE_DIR$/standard/src" />
+          <root url="file://$MODULE_DIR$/stock/src/main/java" />
+          <root url="file://$MODULE_DIR$/test/mappingDemo/src" />
+          <root url="file://$MODULE_DIR$/test/tests" />
+          <root url="file://$MODULE_DIR$/webtier-sample/src/java" />
+        </sourceRoots>
+      </configuration>
+    </facet>
+    <facet type="web" name="helloDuke">
+      <configuration>
+        <descriptors>
+          <deploymentDescriptor name="web.xml" url="file://$MODULE_DIR$/archive/helloDuke/web/WEB-INF/web.xml" />
+        </descriptors>
+        <webroots>
+          <root url="file://$MODULE_DIR$/helloDuke/web" relative="/" />
+        </webroots>
+        <sourceRoots>
+          <root url="file://$MODULE_DIR$/ajax-queue/src/main/java" />
+          <root url="file://$MODULE_DIR$/ajax-request/src/main/java" />
+          <root url="file://$MODULE_DIR$/carstore/src/java" />
+          <root url="file://$MODULE_DIR$/characterCombat/src" />
+          <root url="file://$MODULE_DIR$/components/src/java" />
+          <root url="file://$MODULE_DIR$/ezcomp00/src/main/java" />
+          <root url="file://$MODULE_DIR$/ezcomp01/src/main/java" />
+          <root url="file://$MODULE_DIR$/ezcomp02/src/main/java" />
+          <root url="file://$MODULE_DIR$/guessNumber/src/java" />
+          <root url="file://$MODULE_DIR$/guessNumber2.0/src/java" />
+          <root url="file://$MODULE_DIR$/head-body/src/main/java" />
+          <root url="file://$MODULE_DIR$/helloDuke/src" />
+          <root url="file://$MODULE_DIR$/helloFacelet/src" />
+          <root url="file://$MODULE_DIR$/j2meDemo/midlet" />
+          <root url="file://$MODULE_DIR$/j2meDemo/src/java" />
+          <root url="file://$MODULE_DIR$/mojarra_ext/src/java" />
+          <root url="file://$MODULE_DIR$/nonjsp/src/java" />
+          <root url="file://$MODULE_DIR$/renderkits/src/java" />
+          <root url="file://$MODULE_DIR$/standard/src" />
+          <root url="file://$MODULE_DIR$/stock/src/main/java" />
+          <root url="file://$MODULE_DIR$/test/mappingDemo/src" />
+          <root url="file://$MODULE_DIR$/test/tests" />
+          <root url="file://$MODULE_DIR$/webtier-sample/src/java" />
+        </sourceRoots>
+      </configuration>
+    </facet>
+    <facet type="web" name="characterCombat">
+      <configuration>
+        <descriptors>
+          <deploymentDescriptor name="web.xml" url="file://$MODULE_DIR$/archive/characterCombat/web/WEB-INF/web.xml" />
+        </descriptors>
+        <webroots>
+          <root url="file://$MODULE_DIR$/characterCombat/web" relative="/" />
+        </webroots>
+        <sourceRoots>
+          <root url="file://$MODULE_DIR$/ajax-queue/src/main/java" />
+          <root url="file://$MODULE_DIR$/ajax-request/src/main/java" />
+          <root url="file://$MODULE_DIR$/carstore/src/java" />
+          <root url="file://$MODULE_DIR$/characterCombat/src" />
+          <root url="file://$MODULE_DIR$/components/src/java" />
+          <root url="file://$MODULE_DIR$/ezcomp00/src/main/java" />
+          <root url="file://$MODULE_DIR$/ezcomp01/src/main/java" />
+          <root url="file://$MODULE_DIR$/ezcomp02/src/main/java" />
+          <root url="file://$MODULE_DIR$/guessNumber/src/java" />
+          <root url="file://$MODULE_DIR$/guessNumber2.0/src/java" />
+          <root url="file://$MODULE_DIR$/head-body/src/main/java" />
+          <root url="file://$MODULE_DIR$/helloDuke/src" />
+          <root url="file://$MODULE_DIR$/helloFacelet/src" />
+          <root url="file://$MODULE_DIR$/j2meDemo/midlet" />
+          <root url="file://$MODULE_DIR$/j2meDemo/src/java" />
+          <root url="file://$MODULE_DIR$/mojarra_ext/src/java" />
+          <root url="file://$MODULE_DIR$/nonjsp/src/java" />
+          <root url="file://$MODULE_DIR$/renderkits/src/java" />
+          <root url="file://$MODULE_DIR$/standard/src" />
+          <root url="file://$MODULE_DIR$/stock/src/main/java" />
+          <root url="file://$MODULE_DIR$/test/mappingDemo/src" />
+          <root url="file://$MODULE_DIR$/test/tests" />
+          <root url="file://$MODULE_DIR$/webtier-sample/src/java" />
+        </sourceRoots>
+      </configuration>
+    </facet>
+    <facet type="web" name="helloworld">
+      <configuration>
+        <descriptors>
+          <deploymentDescriptor name="web.xml" url="file://$MODULE_DIR$/helloworld/src/main/webapp/WEB-INF/web.xml" />
+        </descriptors>
+        <webroots>
+          <root url="file://$MODULE_DIR$/helloFacelet/web" relative="/" />
+        </webroots>
+        <sourceRoots>
+          <root url="file://$MODULE_DIR$/guessNumber2.0/src/java" />
+          <root url="file://$MODULE_DIR$/head-body/src/main/java" />
+          <root url="file://$MODULE_DIR$/stock/src/main/java" />
+          <root url="file://$MODULE_DIR$/test/mappingDemo/src" />
+          <root url="file://$MODULE_DIR$/test/tests" />
+        </sourceRoots>
+      </configuration>
+    </facet>
+    <facet type="web" name="carstore">
+      <configuration>
+        <descriptors>
+          <deploymentDescriptor name="web.xml" url="file://$MODULE_DIR$/archive/carstore/web/WEB-INF/web.xml" />
+        </descriptors>
+        <webroots>
+          <root url="file://$MODULE_DIR$/carstore/web" relative="/" />
+        </webroots>
+        <sourceRoots>
+          <root url="file://$MODULE_DIR$/ajax-queue/src/main/java" />
+          <root url="file://$MODULE_DIR$/ajax-request/src/main/java" />
+          <root url="file://$MODULE_DIR$/carstore/src/java" />
+          <root url="file://$MODULE_DIR$/characterCombat/src" />
+          <root url="file://$MODULE_DIR$/components/src/java" />
+          <root url="file://$MODULE_DIR$/ezcomp00/src/main/java" />
+          <root url="file://$MODULE_DIR$/ezcomp01/src/main/java" />
+          <root url="file://$MODULE_DIR$/ezcomp02/src/main/java" />
+          <root url="file://$MODULE_DIR$/guessNumber/src/java" />
+          <root url="file://$MODULE_DIR$/guessNumber2.0/src/java" />
+          <root url="file://$MODULE_DIR$/head-body/src/main/java" />
+          <root url="file://$MODULE_DIR$/helloDuke/src" />
+          <root url="file://$MODULE_DIR$/helloFacelet/src" />
+          <root url="file://$MODULE_DIR$/j2meDemo/midlet" />
+          <root url="file://$MODULE_DIR$/j2meDemo/src/java" />
+          <root url="file://$MODULE_DIR$/mojarra_ext/src/java" />
+          <root url="file://$MODULE_DIR$/nonjsp/src/java" />
+          <root url="file://$MODULE_DIR$/renderkits/src/java" />
+          <root url="file://$MODULE_DIR$/standard/src" />
+          <root url="file://$MODULE_DIR$/stock/src/main/java" />
+          <root url="file://$MODULE_DIR$/test/mappingDemo/src" />
+          <root url="file://$MODULE_DIR$/test/tests" />
+          <root url="file://$MODULE_DIR$/webtier-sample/src/java" />
+        </sourceRoots>
+      </configuration>
+    </facet>
+    <facet type="web" name="ajax-queue">
+      <configuration>
+        <descriptors>
+          <deploymentDescriptor name="web.xml" url="file://$MODULE_DIR$/sandbox/ajax-queue/src/main/webapp/WEB-INF/web.xml" />
+        </descriptors>
+        <webroots>
+          <root url="file://$MODULE_DIR$/ajax-queue/src/main/webapp" relative="/" />
+        </webroots>
+        <sourceRoots>
+          <root url="file://$MODULE_DIR$/ajax-queue/src/main/java" />
+          <root url="file://$MODULE_DIR$/ajax-request/src/main/java" />
+          <root url="file://$MODULE_DIR$/carstore/src/java" />
+          <root url="file://$MODULE_DIR$/characterCombat/src" />
+          <root url="file://$MODULE_DIR$/components/src/java" />
+          <root url="file://$MODULE_DIR$/ezcomp00/src/main/java" />
+          <root url="file://$MODULE_DIR$/ezcomp01/src/main/java" />
+          <root url="file://$MODULE_DIR$/ezcomp02/src/main/java" />
+          <root url="file://$MODULE_DIR$/guessNumber/src/java" />
+          <root url="file://$MODULE_DIR$/guessNumber2.0/src/java" />
+          <root url="file://$MODULE_DIR$/head-body/src/main/java" />
+          <root url="file://$MODULE_DIR$/helloDuke/src" />
+          <root url="file://$MODULE_DIR$/helloFacelet/src" />
+          <root url="file://$MODULE_DIR$/j2meDemo/midlet" />
+          <root url="file://$MODULE_DIR$/j2meDemo/src/java" />
+          <root url="file://$MODULE_DIR$/mojarra_ext/src/java" />
+          <root url="file://$MODULE_DIR$/nonjsp/src/java" />
+          <root url="file://$MODULE_DIR$/renderkits/src/java" />
+          <root url="file://$MODULE_DIR$/standard/src" />
+          <root url="file://$MODULE_DIR$/stock/src/main/java" />
+          <root url="file://$MODULE_DIR$/test/mappingDemo/src" />
+          <root url="file://$MODULE_DIR$/test/tests" />
+          <root url="file://$MODULE_DIR$/webtier-sample/src/java" />
+        </sourceRoots>
+      </configuration>
+    </facet>
+    <facet type="web" name="ezcomp00">
+      <configuration>
+        <descriptors>
+          <deploymentDescriptor name="web.xml" url="file://$MODULE_DIR$/ezcomp00/src/main/webapp/WEB-INF/web.xml" />
+        </descriptors>
+        <webroots>
+          <root url="file://$MODULE_DIR$/ezcomp00/src/main/webapp" relative="/" />
+        </webroots>
+        <sourceRoots>
+          <root url="file://$MODULE_DIR$/ajax-queue/src/main/java" />
+          <root url="file://$MODULE_DIR$/ajax-request/src/main/java" />
+          <root url="file://$MODULE_DIR$/carstore/src/java" />
+          <root url="file://$MODULE_DIR$/characterCombat/src" />
+          <root url="file://$MODULE_DIR$/components/src/java" />
+          <root url="file://$MODULE_DIR$/ezcomp00/src/main/java" />
+          <root url="file://$MODULE_DIR$/ezcomp01/src/main/java" />
+          <root url="file://$MODULE_DIR$/ezcomp02/src/main/java" />
+          <root url="file://$MODULE_DIR$/guessNumber/src/java" />
+          <root url="file://$MODULE_DIR$/guessNumber2.0/src/java" />
+          <root url="file://$MODULE_DIR$/head-body/src/main/java" />
+          <root url="file://$MODULE_DIR$/helloDuke/src" />
+          <root url="file://$MODULE_DIR$/helloFacelet/src" />
+          <root url="file://$MODULE_DIR$/j2meDemo/midlet" />
+          <root url="file://$MODULE_DIR$/j2meDemo/src/java" />
+          <root url="file://$MODULE_DIR$/mojarra_ext/src/java" />
+          <root url="file://$MODULE_DIR$/nonjsp/src/java" />
+          <root url="file://$MODULE_DIR$/renderkits/src/java" />
+          <root url="file://$MODULE_DIR$/standard/src" />
+          <root url="file://$MODULE_DIR$/stock/src/main/java" />
+          <root url="file://$MODULE_DIR$/test/mappingDemo/src" />
+          <root url="file://$MODULE_DIR$/test/tests" />
+          <root url="file://$MODULE_DIR$/webtier-sample/src/java" />
+        </sourceRoots>
+      </configuration>
+    </facet>
+    <facet type="web" name="ezcomp01">
+      <configuration>
+        <descriptors>
+          <deploymentDescriptor name="web.xml" url="file://$MODULE_DIR$/ezcomp01/src/main/webapp/WEB-INF/web.xml" />
+        </descriptors>
+        <webroots>
+          <root url="file://$MODULE_DIR$/ezcomp01/src/main/webapp" relative="/" />
+        </webroots>
+        <sourceRoots>
+          <root url="file://$MODULE_DIR$/ajax-queue/src/main/java" />
+          <root url="file://$MODULE_DIR$/ajax-request/src/main/java" />
+          <root url="file://$MODULE_DIR$/carstore/src/java" />
+          <root url="file://$MODULE_DIR$/characterCombat/src" />
+          <root url="file://$MODULE_DIR$/components/src/java" />
+          <root url="file://$MODULE_DIR$/ezcomp00/src/main/java" />
+          <root url="file://$MODULE_DIR$/ezcomp01/src/main/java" />
+          <root url="file://$MODULE_DIR$/ezcomp02/src/main/java" />
+          <root url="file://$MODULE_DIR$/guessNumber/src/java" />
+          <root url="file://$MODULE_DIR$/guessNumber2.0/src/java" />
+          <root url="file://$MODULE_DIR$/head-body/src/main/java" />
+          <root url="file://$MODULE_DIR$/helloDuke/src" />
+          <root url="file://$MODULE_DIR$/helloFacelet/src" />
+          <root url="file://$MODULE_DIR$/j2meDemo/midlet" />
+          <root url="file://$MODULE_DIR$/j2meDemo/src/java" />
+          <root url="file://$MODULE_DIR$/mojarra_ext/src/java" />
+          <root url="file://$MODULE_DIR$/nonjsp/src/java" />
+          <root url="file://$MODULE_DIR$/renderkits/src/java" />
+          <root url="file://$MODULE_DIR$/standard/src" />
+          <root url="file://$MODULE_DIR$/stock/src/main/java" />
+          <root url="file://$MODULE_DIR$/test/mappingDemo/src" />
+          <root url="file://$MODULE_DIR$/test/tests" />
+          <root url="file://$MODULE_DIR$/webtier-sample/src/java" />
+        </sourceRoots>
+      </configuration>
+    </facet>
+    <facet type="web" name="stock">
+      <configuration>
+        <descriptors>
+          <deploymentDescriptor name="web.xml" url="file://$MODULE_DIR$/sandbox/stock/src/main/webapp/WEB-INF/web.xml" />
+        </descriptors>
+        <webroots>
+          <root url="file://$MODULE_DIR$/stock/src/main/webapp" relative="/" />
+        </webroots>
+        <sourceRoots>
+          <root url="file://$MODULE_DIR$/ajax-queue/src/main/java" />
+          <root url="file://$MODULE_DIR$/ajax-request/src/main/java" />
+          <root url="file://$MODULE_DIR$/carstore/src/java" />
+          <root url="file://$MODULE_DIR$/characterCombat/src" />
+          <root url="file://$MODULE_DIR$/components/src/java" />
+          <root url="file://$MODULE_DIR$/ezcomp00/src/main/java" />
+          <root url="file://$MODULE_DIR$/ezcomp01/src/main/java" />
+          <root url="file://$MODULE_DIR$/ezcomp02/src/main/java" />
+          <root url="file://$MODULE_DIR$/guessNumber/src/java" />
+          <root url="file://$MODULE_DIR$/guessNumber2.0/src/java" />
+          <root url="file://$MODULE_DIR$/head-body/src/main/java" />
+          <root url="file://$MODULE_DIR$/helloDuke/src" />
+          <root url="file://$MODULE_DIR$/helloFacelet/src" />
+          <root url="file://$MODULE_DIR$/j2meDemo/midlet" />
+          <root url="file://$MODULE_DIR$/j2meDemo/src/java" />
+          <root url="file://$MODULE_DIR$/mojarra_ext/src/java" />
+          <root url="file://$MODULE_DIR$/nonjsp/src/java" />
+          <root url="file://$MODULE_DIR$/renderkits/src/java" />
+          <root url="file://$MODULE_DIR$/standard/src" />
+          <root url="file://$MODULE_DIR$/stock/src/main/java" />
+          <root url="file://$MODULE_DIR$/test/mappingDemo/src" />
+          <root url="file://$MODULE_DIR$/test/tests" />
+          <root url="file://$MODULE_DIR$/webtier-sample/src/java" />
+        </sourceRoots>
+      </configuration>
+    </facet>
+    <facet type="web" name="ezcomp03">
+      <configuration>
+        <descriptors>
+          <deploymentDescriptor name="web.xml" url="file://$MODULE_DIR$/sandbox/ezcomp03/src/main/webapp/WEB-INF/web.xml" />
+        </descriptors>
+        <webroots>
+          <root url="file://$MODULE_DIR$/ezcomp03/src/main/webapp" relative="/" />
+        </webroots>
+        <sourceRoots>
+          <root url="file://$MODULE_DIR$/ajax-queue/src/main/java" />
+          <root url="file://$MODULE_DIR$/ajax-request/src/main/java" />
+          <root url="file://$MODULE_DIR$/carstore/src/java" />
+          <root url="file://$MODULE_DIR$/characterCombat/src" />
+          <root url="file://$MODULE_DIR$/components/src/java" />
+          <root url="file://$MODULE_DIR$/ezcomp00/src/main/java" />
+          <root url="file://$MODULE_DIR$/ezcomp01/src/main/java" />
+          <root url="file://$MODULE_DIR$/ezcomp02/src/main/java" />
+          <root url="file://$MODULE_DIR$/guessNumber/src/java" />
+          <root url="file://$MODULE_DIR$/guessNumber2.0/src/java" />
+          <root url="file://$MODULE_DIR$/head-body/src/main/java" />
+          <root url="file://$MODULE_DIR$/helloDuke/src" />
+          <root url="file://$MODULE_DIR$/helloFacelet/src" />
+          <root url="file://$MODULE_DIR$/j2meDemo/midlet" />
+          <root url="file://$MODULE_DIR$/j2meDemo/src/java" />
+          <root url="file://$MODULE_DIR$/mojarra_ext/src/java" />
+          <root url="file://$MODULE_DIR$/nonjsp/src/java" />
+          <root url="file://$MODULE_DIR$/renderkits/src/java" />
+          <root url="file://$MODULE_DIR$/standard/src" />
+          <root url="file://$MODULE_DIR$/stock/src/main/java" />
+          <root url="file://$MODULE_DIR$/test/mappingDemo/src" />
+          <root url="file://$MODULE_DIR$/test/tests" />
+          <root url="file://$MODULE_DIR$/webtier-sample/src/java" />
+        </sourceRoots>
+      </configuration>
+    </facet>
+    <facet type="web" name="renderkits">
+      <configuration>
+        <descriptors>
+          <deploymentDescriptor name="web.xml" url="file://$MODULE_DIR$/archive/renderkits/web/WEB-INF/web.xml" />
+        </descriptors>
+        <webroots>
+          <root url="file://$MODULE_DIR$/renderkits/web" relative="/" />
+        </webroots>
+        <sourceRoots>
+          <root url="file://$MODULE_DIR$/ajax-queue/src/main/java" />
+          <root url="file://$MODULE_DIR$/ajax-request/src/main/java" />
+          <root url="file://$MODULE_DIR$/carstore/src/java" />
+          <root url="file://$MODULE_DIR$/characterCombat/src" />
+          <root url="file://$MODULE_DIR$/components/src/java" />
+          <root url="file://$MODULE_DIR$/ezcomp00/src/main/java" />
+          <root url="file://$MODULE_DIR$/ezcomp01/src/main/java" />
+          <root url="file://$MODULE_DIR$/ezcomp02/src/main/java" />
+          <root url="file://$MODULE_DIR$/guessNumber/src/java" />
+          <root url="file://$MODULE_DIR$/guessNumber2.0/src/java" />
+          <root url="file://$MODULE_DIR$/head-body/src/main/java" />
+          <root url="file://$MODULE_DIR$/helloDuke/src" />
+          <root url="file://$MODULE_DIR$/helloFacelet/src" />
+          <root url="file://$MODULE_DIR$/j2meDemo/midlet" />
+          <root url="file://$MODULE_DIR$/j2meDemo/src/java" />
+          <root url="file://$MODULE_DIR$/mojarra_ext/src/java" />
+          <root url="file://$MODULE_DIR$/nonjsp/src/java" />
+          <root url="file://$MODULE_DIR$/renderkits/src/java" />
+          <root url="file://$MODULE_DIR$/standard/src" />
+          <root url="file://$MODULE_DIR$/stock/src/main/java" />
+          <root url="file://$MODULE_DIR$/test/mappingDemo/src" />
+          <root url="file://$MODULE_DIR$/test/tests" />
+          <root url="file://$MODULE_DIR$/webtier-sample/src/java" />
+        </sourceRoots>
+      </configuration>
+    </facet>
+    <facet type="web" name="components">
+      <configuration>
+        <descriptors>
+          <deploymentDescriptor name="web.xml" url="file://$MODULE_DIR$/archive/components/web/WEB-INF/web.xml" />
+        </descriptors>
+        <webroots>
+          <root url="file://$MODULE_DIR$/components/web" relative="/" />
+        </webroots>
+        <sourceRoots>
+          <root url="file://$MODULE_DIR$/ajax-queue/src/main/java" />
+          <root url="file://$MODULE_DIR$/ajax-request/src/main/java" />
+          <root url="file://$MODULE_DIR$/carstore/src/java" />
+          <root url="file://$MODULE_DIR$/characterCombat/src" />
+          <root url="file://$MODULE_DIR$/components/src/java" />
+          <root url="file://$MODULE_DIR$/ezcomp00/src/main/java" />
+          <root url="file://$MODULE_DIR$/ezcomp01/src/main/java" />
+          <root url="file://$MODULE_DIR$/ezcomp02/src/main/java" />
+          <root url="file://$MODULE_DIR$/guessNumber/src/java" />
+          <root url="file://$MODULE_DIR$/guessNumber2.0/src/java" />
+          <root url="file://$MODULE_DIR$/head-body/src/main/java" />
+          <root url="file://$MODULE_DIR$/helloDuke/src" />
+          <root url="file://$MODULE_DIR$/helloFacelet/src" />
+          <root url="file://$MODULE_DIR$/j2meDemo/midlet" />
+          <root url="file://$MODULE_DIR$/j2meDemo/src/java" />
+          <root url="file://$MODULE_DIR$/mojarra_ext/src/java" />
+          <root url="file://$MODULE_DIR$/nonjsp/src/java" />
+          <root url="file://$MODULE_DIR$/renderkits/src/java" />
+          <root url="file://$MODULE_DIR$/standard/src" />
+          <root url="file://$MODULE_DIR$/stock/src/main/java" />
+          <root url="file://$MODULE_DIR$/test/mappingDemo/src" />
+          <root url="file://$MODULE_DIR$/test/tests" />
+          <root url="file://$MODULE_DIR$/webtier-sample/src/java" />
+        </sourceRoots>
+      </configuration>
+    </facet>
+    <facet type="web" name="standard">
+      <configuration>
+        <descriptors>
+          <deploymentDescriptor name="web.xml" url="file://$MODULE_DIR$/archive/standard/web/WEB-INF/web.xml" />
+        </descriptors>
+        <webroots>
+          <root url="file://$MODULE_DIR$/standard/web" relative="/" />
+        </webroots>
+        <sourceRoots>
+          <root url="file://$MODULE_DIR$/ajax-queue/src/main/java" />
+          <root url="file://$MODULE_DIR$/ajax-request/src/main/java" />
+          <root url="file://$MODULE_DIR$/carstore/src/java" />
+          <root url="file://$MODULE_DIR$/characterCombat/src" />
+          <root url="file://$MODULE_DIR$/components/src/java" />
+          <root url="file://$MODULE_DIR$/ezcomp00/src/main/java" />
+          <root url="file://$MODULE_DIR$/ezcomp01/src/main/java" />
+          <root url="file://$MODULE_DIR$/ezcomp02/src/main/java" />
+          <root url="file://$MODULE_DIR$/guessNumber/src/java" />
+          <root url="file://$MODULE_DIR$/guessNumber2.0/src/java" />
+          <root url="file://$MODULE_DIR$/head-body/src/main/java" />
+          <root url="file://$MODULE_DIR$/helloDuke/src" />
+          <root url="file://$MODULE_DIR$/helloFacelet/src" />
+          <root url="file://$MODULE_DIR$/j2meDemo/midlet" />
+          <root url="file://$MODULE_DIR$/j2meDemo/src/java" />
+          <root url="file://$MODULE_DIR$/mojarra_ext/src/java" />
+          <root url="file://$MODULE_DIR$/nonjsp/src/java" />
+          <root url="file://$MODULE_DIR$/renderkits/src/java" />
+          <root url="file://$MODULE_DIR$/standard/src" />
+          <root url="file://$MODULE_DIR$/stock/src/main/java" />
+          <root url="file://$MODULE_DIR$/test/mappingDemo/src" />
+          <root url="file://$MODULE_DIR$/test/tests" />
+          <root url="file://$MODULE_DIR$/webtier-sample/src/java" />
+        </sourceRoots>
+      </configuration>
+    </facet>
+    <facet type="web" name="webtier-sample">
+      <configuration>
+        <descriptors>
+          <deploymentDescriptor name="web.xml" url="file://$MODULE_DIR$/archive/webtier-sample/web/WEB-INF/web.xml" />
+        </descriptors>
+        <webroots>
+          <root url="file://$MODULE_DIR$/webtier-sample/web" relative="/" />
+        </webroots>
+        <sourceRoots>
+          <root url="file://$MODULE_DIR$/ajax-queue/src/main/java" />
+          <root url="file://$MODULE_DIR$/ajax-request/src/main/java" />
+          <root url="file://$MODULE_DIR$/carstore/src/java" />
+          <root url="file://$MODULE_DIR$/characterCombat/src" />
+          <root url="file://$MODULE_DIR$/components/src/java" />
+          <root url="file://$MODULE_DIR$/ezcomp00/src/main/java" />
+          <root url="file://$MODULE_DIR$/ezcomp01/src/main/java" />
+          <root url="file://$MODULE_DIR$/ezcomp02/src/main/java" />
+          <root url="file://$MODULE_DIR$/guessNumber/src/java" />
+          <root url="file://$MODULE_DIR$/guessNumber2.0/src/java" />
+          <root url="file://$MODULE_DIR$/head-body/src/main/java" />
+          <root url="file://$MODULE_DIR$/helloDuke/src" />
+          <root url="file://$MODULE_DIR$/helloFacelet/src" />
+          <root url="file://$MODULE_DIR$/j2meDemo/midlet" />
+          <root url="file://$MODULE_DIR$/j2meDemo/src/java" />
+          <root url="file://$MODULE_DIR$/mojarra_ext/src/java" />
+          <root url="file://$MODULE_DIR$/nonjsp/src/java" />
+          <root url="file://$MODULE_DIR$/renderkits/src/java" />
+          <root url="file://$MODULE_DIR$/standard/src" />
+          <root url="file://$MODULE_DIR$/stock/src/main/java" />
+          <root url="file://$MODULE_DIR$/test/mappingDemo/src" />
+          <root url="file://$MODULE_DIR$/test/tests" />
+          <root url="file://$MODULE_DIR$/webtier-sample/src/java" />
+        </sourceRoots>
+      </configuration>
+    </facet>
+    <facet type="web" name="mojarra_ext">
+      <configuration>
+        <descriptors>
+          <deploymentDescriptor name="web.xml" url="file://$MODULE_DIR$/archive/mojarra_ext/web/WEB-INF/web.xml" />
+        </descriptors>
+        <webroots>
+          <root url="file://$MODULE_DIR$/mojarra_ext/web" relative="/" />
+        </webroots>
+        <sourceRoots>
+          <root url="file://$MODULE_DIR$/ajax-queue/src/main/java" />
+          <root url="file://$MODULE_DIR$/ajax-request/src/main/java" />
+          <root url="file://$MODULE_DIR$/carstore/src/java" />
+          <root url="file://$MODULE_DIR$/characterCombat/src" />
+          <root url="file://$MODULE_DIR$/components/src/java" />
+          <root url="file://$MODULE_DIR$/ezcomp00/src/main/java" />
+          <root url="file://$MODULE_DIR$/ezcomp01/src/main/java" />
+          <root url="file://$MODULE_DIR$/ezcomp02/src/main/java" />
+          <root url="file://$MODULE_DIR$/guessNumber/src/java" />
+          <root url="file://$MODULE_DIR$/guessNumber2.0/src/java" />
+          <root url="file://$MODULE_DIR$/head-body/src/main/java" />
+          <root url="file://$MODULE_DIR$/helloDuke/src" />
+          <root url="file://$MODULE_DIR$/helloFacelet/src" />
+          <root url="file://$MODULE_DIR$/j2meDemo/midlet" />
+          <root url="file://$MODULE_DIR$/j2meDemo/src/java" />
+          <root url="file://$MODULE_DIR$/mojarra_ext/src/java" />
+          <root url="file://$MODULE_DIR$/nonjsp/src/java" />
+          <root url="file://$MODULE_DIR$/renderkits/src/java" />
+          <root url="file://$MODULE_DIR$/standard/src" />
+          <root url="file://$MODULE_DIR$/stock/src/main/java" />
+          <root url="file://$MODULE_DIR$/test/mappingDemo/src" />
+          <root url="file://$MODULE_DIR$/test/tests" />
+          <root url="file://$MODULE_DIR$/webtier-sample/src/java" />
+        </sourceRoots>
+      </configuration>
+    </facet>
+  </component>
+  <component name="NewModuleRootManager" inherit-compiler-output="true">
+    <exclude-output />
+    <content url="file://$MODULE_DIR$">
+      <sourceFolder url="file://$MODULE_DIR$/sandbox/OpenAjaxBridge/src" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/sandbox/ajax-queue/src/main/java" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/sandbox/ajax-request/src/main/java" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/sandbox/ajax-tag/src/main/java" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/archive/carstore/src/java" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/archive/characterCombat/src" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/archive/components/src/java" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/sandbox/ezcomp00/src/main/java" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/sandbox/ezcomp02/src/main/java" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/archive/guessNumber/src/java" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/archive/helloDuke/src" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/archive/j2meDemo/midlet" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/archive/j2meDemo/src/java" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/sandbox/jsf-forum/src/java" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/archive/mojarra_ext/src/java" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/archive/nonjsp/src/java" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/archive/renderkits/src/java" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/sandbox/scrumtoys2009/eclipseProject/src/main/java" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/archive/standard/src" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/test/mappingDemo/src" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/test/tests" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/archive/webtier-sample/src/java" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/basic-ajax/src/main/java" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/viewExpired/src/main/java" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/basic-ezcomp/src/main/java" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/ajax-component/src/main/java" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/helloworld/src/main/java" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/guessNumber/src/main/java" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/ifnavigation/src/main/java" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/bean-validator/src/main/java" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/custom-bean-scope/src/main/java" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/custom-tag/src/main/java" isTestSource="false" />
+      <excludeFolder url="file://$MODULE_DIR$/test/build" />
+    </content>
+    <orderEntry type="library" name="GROOVY" level="application" />
+    <orderEntry type="inheritedJdk" />
+    <orderEntry type="sourceFolder" forTests="false" />
+    <orderEntry type="library" name="mojarra-build" level="project" />
+    <orderEntry type="module-library">
+      <library>
+        <CLASSES>
+          <root url="jar://$APPLICATION_HOME_DIR$/lib/javaee.jar!/" />
+        </CLASSES>
+        <JAVADOC />
+        <SOURCES />
+      </library>
+    </orderEntry>
+    <orderEntry type="module" module-name="impl" exported="" />
+  </component>
+</module>
+
diff --git a/jsf-demo/guessNumber/README.txt b/jsf-demo/guessNumber/README.txt
new file mode 100644
index 0000000..512b4f5
--- /dev/null
+++ b/jsf-demo/guessNumber/README.txt
@@ -0,0 +1,3 @@
+
+This demo shows how to use resources to create a client side validator tag, and use it
+within a page.
\ No newline at end of file
diff --git a/jsf-demo/guessNumber/build.xml b/jsf-demo/guessNumber/build.xml
new file mode 100644
index 0000000..79e578c
--- /dev/null
+++ b/jsf-demo/guessNumber/build.xml
@@ -0,0 +1,132 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project name="guessNumber2.0" default="build" basedir=".">
+
+    <property file="${user.home}/build.properties"/>
+    <property file="../../build.properties"/>
+    <import file="${jsf.build.home}/common/ant/common.xml"/>
+
+    <!-- Configure the context path for this application -->
+    <property name="context.path" value="/jsf-guessNumber"/>
+    <property name="example" value="jsf-guessNumber2.0"/>
+    <property name="build" value="${basedir}/build"/>
+
+    <path id="classpath">
+        <pathelement location="${javax.faces-api.jar}"/>
+        <pathelement location="${javax.faces.jar}"/>
+        <pathelement location="${build}/${example}/WEB-INF/classes"/>
+        <path refid="compile.classpath"/>
+    </path>
+
+    <target name="init" depends="check.changes">
+        <tstamp/>
+    </target>
+
+    <target name="check.changes">
+        <uptodate property="skip.build"
+                  targetfile="${build}/last-build">
+            <srcfiles dir="${basedir}">
+                <include name="src/**/*.*"/>
+                <include name="conf/**/*.*"/>
+                <include name="web/**/*.*"/>
+            </srcfiles>
+        </uptodate>
+    </target>
+
+    <target name="clean">
+        <delete dir="${build}"/>
+        <delete dir="${context.path}"/>
+    </target>
+
+
+    <target name="prepare" depends="init"
+            description="Create build directories.">
+        <mkdir dir="${build}/${example}"/>
+        <mkdir dir="${build}/${example}/WEB-INF"/>
+        <mkdir dir="${build}/${example}/WEB-INF/classes"/>
+        <mkdir dir="${build}/${example}/WEB-INF/lib"/>
+    </target>
+
+
+    <target name="build" unless="skip.build" depends="prepare"
+            description="Compile Java files and copy static files.">
+        <touch file="${build}/last-build"/>
+         <jsf.javac srcdir="src"
+                   destdir="${build}/${example}/WEB-INF/classes">
+            <classpath>
+                <path refid="classpath"/>
+            </classpath>
+        </jsf.javac>
+        <copy todir="${build}/${example}/WEB-INF">
+            <fileset dir="src/main/webapp/WEB-INF">
+                <include name="*.xml"/>
+            </fileset>          
+        </copy>
+
+        <copy todir="${build}/${example}/">
+            <fileset dir="src/main/webapp">
+                <include name="resources/**"/>
+                <include name="*.html"/>
+                <include name="*.gif"/>
+                <include name="*.jpg"/>
+                <include name="*.xhtml"/>
+                <include name="*.xml"/>
+            </fileset>
+        </copy>
+        <copy todir="${build}/${example}/WEB-INF/classes/${example}">
+            <fileset dir="src/main/webapp">
+                <include name="*properties"/>
+            </fileset>
+        </copy>
+
+        <jsf.war basedir="${build}"
+                 archive-name="${example}"
+                 webxml="${build}/${example}/WEB-INF/web.xml">
+            <archive-elements>
+                <zipfileset dir="${build}/${example}"/>
+            </archive-elements>
+        </jsf.war>
+    </target>
+
+</project>
+
diff --git a/jsf-demo/guessNumber/pom.xml b/jsf-demo/guessNumber/pom.xml
new file mode 100644
index 0000000..466fbea
--- /dev/null
+++ b/jsf-demo/guessNumber/pom.xml
@@ -0,0 +1,163 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+    <modelVersion>4.0.0</modelVersion>
+    <groupId>com.sun.faces</groupId>
+    <artifactId>guessNumber</artifactId>
+    <packaging>war</packaging>
+    <name>${project.artifactId}</name>
+    <url>https://mojarra.dev.java.net/</url>
+    <description>Example App</description>
+    <version>1.0</version>
+
+    <build>
+        <defaultGoal>package</defaultGoal>
+        <sourceDirectory>src/main/java</sourceDirectory>
+        <finalName>${project.artifactId}</finalName>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>2.3.2</version>
+                <configuration>
+                    <source>1.5</source>
+                    <target>1.5</target>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+
+    <repositories>
+        <repository>
+            <id>java.net.m2</id>
+            <name>java.net m2 repo</name>
+            <url>http://download.java.net/maven/2</url>
+        </repository>
+       <repository>
+            <id>glassfish-repo-archive</id>
+            <name>Nexus repository collection for Glassfish</name>
+            <url>http://maven.glassfish.org/content/groups/glassfish</url>
+        </repository>
+        <repository>
+            <id>ibiblio.mirrors</id>
+            <url>http://mirrors.ibiblio.org/pub/mirrors/maven2</url>
+        </repository>
+        <repository>
+            <id>codehaus</id>
+            <name>codehaus</name>
+            <url>http://repository.codehaus.org</url>
+        </repository>
+    </repositories>
+
+    <dependencies>
+        <dependency>
+            <groupId>javax.faces</groupId>
+            <artifactId>javax.faces-api</artifactId>
+            <version>2.2</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>javax</groupId>
+            <artifactId>javaee-web-api</artifactId>
+            <version>6.0</version>
+            <scope>provided</scope>
+        </dependency>
+
+        <!--
+          Uncomment these dependencies and comment out the one above to use
+          a simple servlet container instead of a Java EE Application Server
+        <dependency>
+            <groupId>com.sun.faces</groupId>
+            <artifactId>jsf-api</artifactId>
+            <version>[2.0.1,)</version>
+        </dependency>
+        <dependency>
+            <groupId>com.sun.faces</groupId>
+            <artifactId>jsf-impl</artifactId>
+            <version>[2.0.1,)</version>
+        </dependency>
+        <dependency>
+            <groupId>javax.servlet</groupId>
+            <artifactId>servlet-api</artifactId>
+            <version>2.5</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>javax.servlet.jsp</groupId>
+            <artifactId>jsp-api</artifactId>
+            <version>2.1</version>
+            <scope>provided</scope>
+        </dependency>
+         <dependency>
+             <groupId>javax.servlet.jsp.jstl</groupId>
+             <artifactId>jstl-api</artifactId>
+             <version>1.2</version>
+         </dependency>
+        <dependency>
+            <groupId>org.glassfish.web</groupId>
+            <artifactId>jstl-impl</artifactId>
+            <version>1.2</version>
+        </dependency>
+        -->
+
+    </dependencies>
+    <profiles>
+        <profile>
+            <id>default</id>
+            <!-- Tests are disabled by default.  See the test profile -->
+            <activation>
+                <activeByDefault>true</activeByDefault>
+            </activation>
+            <properties>
+                <maven.test.skip>true</maven.test.skip>
+            </properties>
+        </profile>
+    </profiles>
+    <properties>
+        <netbeans.hint.deploy.server>gfv3ee6</netbeans.hint.deploy.server>
+    </properties>
+</project>
+
diff --git a/jsf-demo/guessNumber/src/main/java/guessnumber/ClientSideValidator.java b/jsf-demo/guessNumber/src/main/java/guessnumber/ClientSideValidator.java
new file mode 100644
index 0000000..ca61fa7
--- /dev/null
+++ b/jsf-demo/guessNumber/src/main/java/guessnumber/ClientSideValidator.java
@@ -0,0 +1,116 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package guessnumber;
+
+import java.text.MessageFormat;
+import java.io.Serializable;
+
+import javax.faces.application.FacesMessage;
+import javax.faces.application.ResourceDependency;
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.validator.Validator;
+import javax.faces.validator.ValidatorException;
+import javax.faces.validator.FacesValidator;
+
+/**
+ * <p>This validator splits the work between the client and the server.</p>
+ *
+ * <p>This Validator, when processed by the runtime, will cause an external
+ * script reference to be generated in the head refering to <code>js/validator.js</code>
+ * (by viture of the @ResourceDepedency annotation associated with this Validator).
+ * Additionally, this Validator is a <code>ComponentSystemEventListener</code>,
+ * and as such when it's processed by the <code>ClientSideValidatorHandler</code>,
+ * this Validator will be registered as a listener to its associated input
+ * component listening for <code>BeforeRenderEvents</code>.  When the event
+ * is triggered and this listener is invoked, the validator will add an
+ * <code>onmouseout</code> event to be rendered by the output component.</p>
+ */
+ at FacesValidator(value="ClientSideValidator")
+ at ResourceDependency(name="js/validator.js")
+ at SuppressWarnings("unused")
+public class ClientSideValidator implements Validator,
+                                            Serializable {
+
+    private static final long serialVersionUID = -5174092316834520806L;
+    
+    private int minimum;
+    private int maximum;
+
+
+    public Integer getMinimum() {
+        return minimum;
+    }
+
+    public void setMinimum(Integer minimum) {
+        this.minimum = minimum;
+    }
+
+    public Integer getMaximum() {
+        return maximum;
+    }
+
+    public void setMaximum(Integer maximum) {
+        this.maximum = maximum;
+    }
+
+    public void validate(FacesContext context,
+                         UIComponent component,
+                         Object value) throws ValidatorException {
+
+        if ((context == null) || (component == null)) {
+            throw new NullPointerException();
+        }
+        int converted = ((Number) value).intValue();
+        if ((converted > maximum) || (converted < minimum)) {
+            String message = MessageFormat
+                  .format("Validation Error: {0} is not within the range of {1} and {2}",
+                          converted, minimum, maximum);
+            FacesMessage facesMessage =
+                  new FacesMessage(FacesMessage.SEVERITY_ERROR,
+                                   message,
+                                   message);
+            throw new ValidatorException(facesMessage);
+        }
+
+    }
+
+}
diff --git a/jsf-demo/guessNumber/src/main/java/guessnumber/ClientSideValidatorHandler.java b/jsf-demo/guessNumber/src/main/java/guessnumber/ClientSideValidatorHandler.java
new file mode 100644
index 0000000..b54ce01
--- /dev/null
+++ b/jsf-demo/guessNumber/src/main/java/guessnumber/ClientSideValidatorHandler.java
@@ -0,0 +1,95 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package guessnumber;
+
+import java.io.IOException;
+
+import java.io.Serializable;
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.event.AbortProcessingException;
+import javax.faces.event.ComponentSystemEvent;
+import javax.faces.event.ComponentSystemEventListener;
+import javax.faces.event.PreRenderComponentEvent;
+
+import javax.faces.view.facelets.FaceletContext;
+import javax.faces.view.facelets.ValidatorConfig;
+import javax.faces.view.facelets.ValidatorHandler;
+
+
+/**
+ * <p>A custom ValidateHandler that registers the created Validator as
+ * a listener for the <code>PreRenderComponentEvent</code> so that the Validator
+ * can take custom action upon the rendering of the parent component.</p>
+ *
+ * NOTE:  These APIs <em>WILL</em> be changing so if you write similar code,
+ * expect breakage when the next EDR comes out.
+ */
+public class ClientSideValidatorHandler extends ValidatorHandler {
+
+    public ClientSideValidatorHandler(ValidatorConfig config) {
+        super(config);
+    }
+
+
+    @Override
+    public void apply(FaceletContext ctx, UIComponent parent) throws IOException {
+        super.apply(ctx, parent);
+
+        // only process if it's been created
+        if (parent.getParent() == null) {
+            parent.subscribeToEvent(PreRenderComponentEvent.class,
+                                    new PreRenderListener());
+        }
+    }
+    
+    
+    public static class PreRenderListener implements ComponentSystemEventListener, Serializable {
+        private static final long serialVersionUID = 0L;
+        public void processEvent(ComponentSystemEvent event)
+                throws AbortProcessingException {
+            UIComponent c = (UIComponent) event.getSource();
+            c.getAttributes().put("onmouseout", "validate('" + c.getClientId(FacesContext.getCurrentInstance()) + "')");
+        }
+    }
+
+    
+}
diff --git a/jsf-demo/guessNumber/src/main/java/guessnumber/UserNumberBean.java b/jsf-demo/guessNumber/src/main/java/guessnumber/UserNumberBean.java
new file mode 100644
index 0000000..a22e700
--- /dev/null
+++ b/jsf-demo/guessNumber/src/main/java/guessnumber/UserNumberBean.java
@@ -0,0 +1,157 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package guessnumber;
+
+import java.text.MessageFormat;
+import java.util.Random;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import java.io.Serializable;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.Resource;
+import javax.inject.Named;
+import javax.enterprise.context.SessionScoped;
+
+/**
+ * <p>This bean is used to track the user's guesses.</p>
+ */
+ at Named
+ at SessionScoped
+ at SuppressWarnings("unused")
+public class UserNumberBean implements Serializable {
+
+    private static final long serialVersionUID = 7288057381787349138L;
+    private static final Logger LOGGER = Logger.getLogger("guessnumber");
+    
+
+    // ----------------------------------------------------- Injected Properties
+
+
+    @Resource(name="maximum")
+    private Integer maximum;
+
+    @Resource(name="minimum")
+    private Integer minimum;
+
+
+    // -------------------------------------------------------------- Properties
+
+    private enum Response {
+        Correct("Yay! You got it!"),
+        Larger("Sorry, {0} is incorrect.  Try a larger number."),
+        Smaller("Sorry, {0} is incorrect. Try a smaller number.");
+
+        private String msg;
+        Response(String msg) {
+            this.msg = msg;
+        }
+
+        String getMessage(Object... params) {
+            return MessageFormat.format(msg, params);
+        }
+    }
+
+    private Integer userNumber;
+    private int randomInt;
+    private String greeting;
+
+
+    // ---------------------------------------------------------- Public Methods
+
+    public String getGreeting() {
+        return greeting;
+    }
+
+    public void setUserNumber(Integer userNumber) {
+        this.userNumber = userNumber;
+    }
+
+    public Integer getUserNumber() {
+        return userNumber;
+    }
+
+    public Integer getMinimum() {
+        return minimum;
+    }
+
+    public Integer getMaximum() {
+        return maximum;
+    }
+
+    public String getResponse() {
+
+        int comp = userNumber.compareTo(randomInt);
+        if (comp == 0) {
+            return Response.Correct.getMessage();
+        } else if (comp < 0) {
+            return Response.Larger.getMessage(userNumber);
+        } else {
+            return Response.Smaller.getMessage(userNumber);
+        }
+
+    }
+
+
+    // --------------------------------------------------------- Private Methods
+
+
+    @SuppressWarnings({"UnusedDeclaration"})
+    @PostConstruct
+    private void construct() {
+
+        Random random = new Random();
+        // Pick a number between minimum and maximum, inclusive
+        randomInt = random.nextInt((maximum - minimum) + 1 ) + minimum;
+        if (LOGGER.isLoggable(Level.INFO)) {
+            LOGGER.log(Level.INFO,
+                       MessageFormat.format("Duke''s number: {0}", randomInt));
+        }
+
+        greeting = "Hi!  My name is Duke.  I'm thinking of a number between "
+                   + minimum
+                   + " and "
+                   + maximum
+                   + ".  Can you guess it?";
+
+    }
+
+}
diff --git a/jsf-demo/guessNumber/src/main/webapp/WEB-INF/beans.xml b/jsf-demo/guessNumber/src/main/webapp/WEB-INF/beans.xml
new file mode 100644
index 0000000..e69de29
diff --git a/jsf-demo/guessNumber/src/main/webapp/WEB-INF/glassfish-web.xml b/jsf-demo/guessNumber/src/main/webapp/WEB-INF/glassfish-web.xml
new file mode 100644
index 0000000..13e0059
--- /dev/null
+++ b/jsf-demo/guessNumber/src/main/webapp/WEB-INF/glassfish-web.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
+<glassfish-web-app error-url="">
+  <class-loader delegate="true"/>
+  <jsp-config>
+    <property name="keepgenerated" value="true">
+      <description>Keep a copy of the generated servlet class' java code.</description>
+    </property>
+  </jsp-config>
+</glassfish-web-app>
diff --git a/jsf-demo/guessNumber/src/main/webapp/WEB-INF/guessnumber.taglib.xml b/jsf-demo/guessNumber/src/main/webapp/WEB-INF/guessnumber.taglib.xml
new file mode 100644
index 0000000..940ef3a
--- /dev/null
+++ b/jsf-demo/guessNumber/src/main/webapp/WEB-INF/guessnumber.taglib.xml
@@ -0,0 +1,59 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<facelet-taglib xmlns="http://java.sun.com/xml/ns/javaee"
+              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+              xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facelettaglibary_2_0.xsd"
+              version="2.0">
+    <namespace>http://java.sun.com/jsf/demo/guessnumber</namespace>
+    <tag>
+        <tag-name>validator</tag-name>
+        <validator>
+            <validator-id>ClientSideValidator</validator-id>
+            <handler-class>guessnumber.ClientSideValidatorHandler
+            </handler-class>
+            <validator-extension>
+                <foo>bar</foo>
+            </validator-extension>
+        </validator>
+    </tag>
+</facelet-taglib>
diff --git a/jsf-demo/guessNumber/src/main/webapp/WEB-INF/web.xml b/jsf-demo/guessNumber/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..87b1395
--- /dev/null
+++ b/jsf-demo/guessNumber/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,102 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<web-app version="2.5"
+         xmlns="http://java.sun.com/xml/ns/javaee"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
+
+    <display-name>
+        JavaServer Faces 2.0 Guess Number Sample Application
+    </display-name>
+
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>client</param-value>
+    </context-param>
+
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>Development</param-value>
+    </context-param>
+
+    <context-param>
+        <param-name>com.sun.faces.resourceUpdateCheckPeriod</param-name>
+        <param-value>-1</param-value>
+    </context-param>
+
+    <context-param>
+           <param-name>javax.faces.FACELETS_LIBRARIES</param-name>
+           <param-value>/WEB-INF/guessnumber.taglib.xml</param-value>
+    </context-param>
+
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+    </servlet>
+
+
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/guess/*</url-pattern>
+    </servlet-mapping>
+
+    <env-entry>
+        <description>Minimum Guess</description>
+        <env-entry-name>minimum</env-entry-name>
+        <env-entry-type>java.lang.Integer</env-entry-type>
+        <env-entry-value>1</env-entry-value>
+    </env-entry>
+
+    <env-entry>
+        <description>Maximum Guess</description>
+        <env-entry-name>maximum</env-entry-name>
+        <env-entry-type>java.lang.Integer</env-entry-type>
+        <env-entry-value>10</env-entry-value>
+    </env-entry>
+
+    <welcome-file-list>
+        <welcome-file>guess/greeting.xhtml</welcome-file>
+    </welcome-file-list>
+
+</web-app>
diff --git a/jsf-demo/guessNumber/src/main/webapp/greeting.xhtml b/jsf-demo/guessNumber/src/main/webapp/greeting.xhtml
new file mode 100644
index 0000000..1972894
--- /dev/null
+++ b/jsf-demo/guessNumber/src/main/webapp/greeting.xhtml
@@ -0,0 +1,100 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:gn="http://java.sun.com/jsf/demo/guessnumber">
+<f:view contentType="text/html"/>
+<h:head>
+    <title>GuessNumber 2.0</title>
+</h:head>
+<h:body bgcolor="white">
+    <h:form id="helloForm">
+        <h2>
+            #{userNumberBean.greeting}
+        </h2>
+        <img src="#{resource['images/wave.med.gif']}" alt="Hello!"/>
+        <h:inputText id="userNo" label="User Number" required="true"
+                     value="#{userNumberBean.userNumber}">
+            <gn:validator minimum="#{userNumberBean.minimum}"
+                          maximum="#{userNumberBean.maximum}"/>
+            <f:convertNumber type="number" integerOnly="true"/>
+        </h:inputText>
+        <h:commandButton id="submit" action="response?faces-redirect=true" value="Guess!"/>
+        <p/>
+        <h:outputStylesheet name="css/styles.css"/>
+        <h:message showSummary="true" showDetail="false"
+                   errorClass="error"
+                   id="errors1" for="userNo"/>
+
+    </h:form>
+
+    <hr/>
+    <p id="about">
+        Take a quick look at the Facelet page.  Notice that there is no script
+        or link references as children of <h:head>.  These resources
+        leverage the new event system introduced in JSF 2.0.
+    </p>
+    <p>
+        The script resource is generated when the Validator is added to the
+        UIInput.  The external stylesheet reference is referenced by Facelet tag
+        within the form, but is utimately rendered in the head.
+    </p>
+    <p>
+        Now, enter a non-digit character into the input field and change focus.
+        Notice a JS Alert is present stating the input is not correct.
+        The inputText definition in the Facelet page has no onmouseout definiton,
+        but the generated source does.  This is accomplished by the custom Validator
+        listening for a BeforeRenderEvent being triggered by the inputText component.
+        When the Validator listener method is invoked, it adds the necessary javascript
+        information to the input component.
+    </p>
+    <p>
+        The resource system is put to work in other ways as well.  Notice that in
+        the Facelet pages, the image URLs are generated via expressions instead of
+        graphicImage components. 
+    </p>
+</h:body>
+</html>  
diff --git a/jsf-demo/guessNumber/src/main/webapp/resources/css/styles.css b/jsf-demo/guessNumber/src/main/webapp/resources/css/styles.css
new file mode 100644
index 0000000..d11a463
--- /dev/null
+++ b/jsf-demo/guessNumber/src/main/webapp/resources/css/styles.css
@@ -0,0 +1,50 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+span.error {
+    color: red;
+    font-family: 'New Century Schoolbook', serif;
+    font-style: oblique;
+    text-decoration: overline
+}
+
+p {
+    width:50%
+}
diff --git a/jsf-demo/guessNumber/src/main/webapp/resources/images/wave.med.gif b/jsf-demo/guessNumber/src/main/webapp/resources/images/wave.med.gif
new file mode 100644
index 0000000..70b7cff
Binary files /dev/null and b/jsf-demo/guessNumber/src/main/webapp/resources/images/wave.med.gif differ
diff --git a/jsf-demo/guessNumber/src/main/webapp/resources/js/validator.js b/jsf-demo/guessNumber/src/main/webapp/resources/js/validator.js
new file mode 100644
index 0000000..52e215a
--- /dev/null
+++ b/jsf-demo/guessNumber/src/main/webapp/resources/js/validator.js
@@ -0,0 +1,46 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+function validate(refid) {
+    var input = document.getElementById(refid);
+    if (isNaN(input.value)) {
+        alert("Input is not a number");
+    }
+}
diff --git a/jsf-demo/guessNumber/src/main/webapp/response.xhtml b/jsf-demo/guessNumber/src/main/webapp/response.xhtml
new file mode 100644
index 0000000..2692f14
--- /dev/null
+++ b/jsf-demo/guessNumber/src/main/webapp/response.xhtml
@@ -0,0 +1,65 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+<f:view contentType="text/html"/>
+<h:head>
+    <title>GuessNumber 2.0</title>
+</h:head>
+<h:body bgcolor="white">
+    <h:form id="responseForm">
+        <img src="#{resource['images/wave.med.gif']}" alt="Hello!"/>
+
+        <h2>
+            #{userNumberBean.response}
+        </h2>
+        <p><h:commandButton id="back" value="Back" action="greeting?faces-redirect=true"/></p>
+        <p><h:link outcome="/greeting.xhtml" fragment="about" value="Read"/>#{' '}about how this game leverages features in JSF 2.</p>
+
+    </h:form>
+</h:body>
+</html>
diff --git a/jsf-demo/helloworld/README.txt b/jsf-demo/helloworld/README.txt
new file mode 100644
index 0000000..8034936
--- /dev/null
+++ b/jsf-demo/helloworld/README.txt
@@ -0,0 +1,11 @@
+This is a very basic JSF program, designed to show you how to set one up.
+
+To compile it, run maven 2.  Install the resulting war to your application server.
+
+There are two pages: hello and response, and a single resource, wave.med.gif.
+There is also a single configuration file, web.xml, and a single Java file, HelloBean.java.
+
+HelloBean holds a single property, name.
+
+The hello.xhtml page requests that the user enter a name, which is stored in the bean.
+When the button is pressed, the response page is displayed, displaying the name entered.
\ No newline at end of file
diff --git a/jsf-demo/helloworld/build.xml b/jsf-demo/helloworld/build.xml
new file mode 100644
index 0000000..57bc702
--- /dev/null
+++ b/jsf-demo/helloworld/build.xml
@@ -0,0 +1,120 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project name="helloworld" default="build" basedir=".">
+   
+
+    <property file="${user.home}/build.properties"/> 
+    <property file="../../build.properties"/>
+    <import file="${jsf.build.home}/common/ant/common.xml"/>
+    
+    <!-- Configure the context path for this application -->
+    <property name="context.path" value="/helloworld"/>
+    <property name="example" value="helloworld"/>
+    <property name="build" value="${basedir}/build"/>
+    <property name="lib" value="${basedir}/lib"/>
+
+    <path id="classpath">       
+        <pathelement location="${javax.faces-api.jar}"/>
+        <pathelement location="${javax.faces.jar}"/>       
+        <pathelement location="${build}/WEB-INF/classes"/>
+        <path refid="compile.classpath"/>
+    </path>
+    
+    <target name="init">
+        <tstamp/>
+    </target>
+
+    <target name="clean">
+        <delete dir="${build}"/>
+        <delete dir="${lib}"/>
+        <delete dir="${context.path}"/>
+    </target>    
+    
+    <target name="prepare" depends="init"
+            description="Create build directories.">
+        <mkdir dir="${build}/${example}/"/>
+        <mkdir dir="${build}/${example}/WEB-INF"/>
+        <mkdir dir="${build}/${example}/WEB-INF/classes"/>
+        <mkdir dir="${build}/${example}/WEB-INF/lib"/>
+    </target>       
+
+    <target name="build" depends="prepare"
+            description="Compile Java files and copy static files.">
+         <jsf.javac srcdir="src"
+                   destdir="${build}/${example}/WEB-INF/classes">
+            <classpath>
+                <path refid="classpath"/>
+            </classpath>
+        </jsf.javac>
+        <copy todir="${build}/${example}/WEB-INF">
+            <fileset dir="src/main/webapp/WEB-INF">
+                <include name="*.xml"/>
+            </fileset>
+        </copy>
+
+        <copy todir="${build}/${example}/">
+            <fileset dir="src/main/webapp">
+                <include name="*.html"/>
+                <include name="*.gif"/>
+                <include name="*.jpg"/>
+                <include name="*.jsp"/>
+                <include name="*.xml"/>
+                <include name="*.xhtml"/>
+            </fileset>
+        </copy>
+        <copy todir="${build}/${example}/WEB-INF/classes/facelet-guessNumber">
+            <fileset dir="src/main/webapp">
+                <include name="*properties"/>
+            </fileset>
+        </copy>
+     
+        <jsf.war basedir="${build}"
+                 archive-name="${example}"
+                 webxml="${build}/${example}/WEB-INF/web.xml">
+            <archive-elements>
+                <zipfileset dir="${build}/${example}"/>
+            </archive-elements>
+        </jsf.war>
+    </target>
+</project>
+
diff --git a/jsf-demo/helloworld/pom.xml b/jsf-demo/helloworld/pom.xml
new file mode 100644
index 0000000..fde8367
--- /dev/null
+++ b/jsf-demo/helloworld/pom.xml
@@ -0,0 +1,173 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+    <modelVersion>4.0.0</modelVersion>
+    <groupId>com.sun.faces</groupId>
+    <artifactId>helloworld</artifactId>
+    <packaging>war</packaging>
+    <name>${project.artifactId}</name>
+    <url>https://mojarra.dev.java.net/</url>
+    <description>Example App</description>
+    <version>1.0</version>
+
+    <build>
+        <defaultGoal>package</defaultGoal>
+        <sourceDirectory>src/main/java</sourceDirectory>
+        <finalName>${project.artifactId}</finalName>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>2.3.2</version>
+                <configuration>
+                    <source>1.5</source>
+                    <target>1.5</target>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+
+    <repositories>
+        <repository>
+            <id>java.net.m2</id>
+            <name>java.net m2 repo</name>
+            <url>http://download.java.net/maven/2</url>
+        </repository>
+       <repository>
+            <id>glassfish-repo-archive</id>
+            <name>Nexus repository collection for Glassfish</name>
+            <url>http://maven.glassfish.org/content/groups/glassfish</url>
+        </repository>
+        <repository>
+            <id>ibiblio.mirrors</id>
+            <url>http://mirrors.ibiblio.org/pub/mirrors/maven2</url>
+        </repository>
+        <repository>
+            <id>codehaus</id>
+            <name>codehaus</name>
+            <url>http://repository.codehaus.org</url>
+        </repository>
+    </repositories>
+
+    <dependencies>
+        <dependency>
+            <groupId>javax.faces</groupId>
+            <artifactId>jsf-api</artifactId>
+            <version>2.0</version>
+            <scope>provided</scope>
+        </dependency>
+
+        <!--
+          Uncomment these dependencies and comment out the one above to use
+          a simple servlet container instead of a Java EE Application Server
+        <dependency>
+            <groupId>com.sun.faces</groupId>
+            <artifactId>jsf-api</artifactId>
+            <version>[2.0.1,)</version>
+        </dependency>
+        <dependency>
+            <groupId>com.sun.faces</groupId>
+            <artifactId>jsf-impl</artifactId>
+            <version>[2.0.1,)</version>
+        </dependency>
+        <dependency>
+            <groupId>javax.servlet</groupId>
+            <artifactId>servlet-api</artifactId>
+            <version>2.5</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>javax.servlet.jsp</groupId>
+            <artifactId>jsp-api</artifactId>
+            <version>2.1</version>
+            <scope>provided</scope>
+        </dependency>
+         <dependency>
+             <groupId>javax.servlet.jsp.jstl</groupId>
+             <artifactId>jstl-api</artifactId>
+             <version>1.2</version>
+         </dependency>
+        <dependency>
+            <groupId>org.glassfish.web</groupId>
+            <artifactId>jstl-impl</artifactId>
+            <version>1.2</version>
+        </dependency>
+        -->
+
+    </dependencies>
+    <reporting>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-project-info-reports-plugin</artifactId>
+                <reportSets>
+                    <reportSet/>
+                </reportSets>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                    <source>1.5</source>
+                    <target>1.5</target>
+                </configuration>
+            </plugin>
+        </plugins>
+    </reporting>
+    <profiles>
+        <profile>
+            <id>default</id>
+            <!-- Tests are disabled by default.  See the test profile -->
+            <activation>
+                <activeByDefault>true</activeByDefault>
+            </activation>
+            <properties>
+                <maven.test.skip>true</maven.test.skip>
+            </properties>
+        </profile>
+    </profiles>
+</project>
+
diff --git a/jsf-demo/helloworld/src/main/java/helloworld/HelloBean.java b/jsf-demo/helloworld/src/main/java/helloworld/HelloBean.java
new file mode 100644
index 0000000..735ddb4
--- /dev/null
+++ b/jsf-demo/helloworld/src/main/java/helloworld/HelloBean.java
@@ -0,0 +1,57 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package helloworld;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.SessionScoped;
+import java.io.Serializable;
+
+ at ManagedBean
+ at SessionScoped
+public class HelloBean implements Serializable {
+
+   private String name;
+
+   public String getName() { return name;}
+   
+   public void setName(String name) { this.name = name; }
+   
+}
diff --git a/jsf-demo/helloworld/src/main/webapp/WEB-INF/web.xml b/jsf-demo/helloworld/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..743c29b
--- /dev/null
+++ b/jsf-demo/helloworld/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,82 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE web-app PUBLIC
+  "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
+  "http://java.sun.com/dtd/web-app_2_3.dtd">
+<web-app>
+    <display-name>Facelets Tutorial</display-name>
+    <description>Number Guess Game</description>
+    <!-- Change to "Production" when you are ready to deploy -->
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>Development</param-value>
+    </context-param>
+
+    <context-param>
+        <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
+        <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>
+
+    <!-- Faces Servlet -->
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+
+    <!-- Faces Servlet Mapping -->
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <!-- welcome file mapping -->
+    <welcome-file-list>
+        <welcome-file>faces/hello.xhtml</welcome-file>
+    </welcome-file-list>
+</web-app>
diff --git a/jsf-demo/helloworld/src/main/webapp/hello.xhtml b/jsf-demo/helloworld/src/main/webapp/hello.xhtml
new file mode 100644
index 0000000..c067304
--- /dev/null
+++ b/jsf-demo/helloworld/src/main/webapp/hello.xhtml
@@ -0,0 +1,59 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:f="http://java.sun.com/jsf/core"      
+      xmlns:h="http://java.sun.com/jsf/html">
+    <f:view contentType="text/html"/>
+    <h:head>
+        <title>Hello World!</title>
+    </h:head>
+    <h:body bgcolor="white">
+        <h2>My name is Duke.  What is yours?</h2>
+        <h:form id="helloForm" >
+            <h:graphicImage id="waveImg" url="#{resource['wave.med.gif']}" />
+            <h:inputText id="username" value="#{helloBean.name}"/>
+            <h:commandButton id="submit" action="response" value="Submit"/>
+        </h:form>
+    </h:body>
+</html>
diff --git a/jsf-demo/helloworld/src/main/webapp/resources/wave.med.gif b/jsf-demo/helloworld/src/main/webapp/resources/wave.med.gif
new file mode 100644
index 0000000..70b7cff
Binary files /dev/null and b/jsf-demo/helloworld/src/main/webapp/resources/wave.med.gif differ
diff --git a/jsf-demo/helloworld/src/main/webapp/response.xhtml b/jsf-demo/helloworld/src/main/webapp/response.xhtml
new file mode 100644
index 0000000..eac03e5
--- /dev/null
+++ b/jsf-demo/helloworld/src/main/webapp/response.xhtml
@@ -0,0 +1,56 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:f="http://java.sun.com/jsf/core"      
+      xmlns:h="http://java.sun.com/jsf/html">
+<f:view contentType="text/html; charset=iso-8859-1"/>
+<head><title>Response</title></head>
+<body>
+    <h:form id="responseform">
+    <h:graphicImage id="waveImg" url="#{resource['wave.med.gif']}" />
+    <h2>Hi, #{helloBean.name}</h2>
+      <h:commandButton id="back" value="Back" action="hello" />
+    </h:form>
+</body>
+</html>
diff --git a/jsf-demo/ifnavigation/README.txt b/jsf-demo/ifnavigation/README.txt
new file mode 100644
index 0000000..17af5c4
--- /dev/null
+++ b/jsf-demo/ifnavigation/README.txt
@@ -0,0 +1,2 @@
+This demo demonstrates the use of the navigation-case within a faces-config.xml file.
+See that file for the example navigation-case that uses if statements to choose what view to display.
diff --git a/jsf-demo/ifnavigation/build.xml b/jsf-demo/ifnavigation/build.xml
new file mode 100644
index 0000000..7166587
--- /dev/null
+++ b/jsf-demo/ifnavigation/build.xml
@@ -0,0 +1,133 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project name="ifnavigation" default="build" basedir=".">
+   
+
+    <property file="${user.home}/build.properties"/> 
+    <property file="../../build.properties"/>
+    <import file="${jsf.build.home}/common/ant/common.xml"/>
+    
+    <!-- Configure the context path for this application -->
+    <property name="context.path" value="/ifnavigation"/>
+    <property name="example" value="ifnavigation"/>
+    <property name="build" value="${basedir}/build"/>   
+
+    <path id="classpath">       
+        <pathelement location="${javax.faces-api.jar}"/>
+        <pathelement location="${javax.faces.jar}"/>       
+        <pathelement location="${build}/WEB-INF/classes"/>
+        <path refid="compile.classpath"/>
+    </path>
+    
+    <target name="init">
+        <tstamp/>
+    </target>
+
+    <target name="clean">
+        <delete dir="${build}"/>
+        <delete dir="${context.path}"/>
+    </target>    
+
+    <target name="prepare" depends="init"
+            description="Create build directories.">
+        <mkdir dir="${build}/${example}/"/>
+        <mkdir dir="${build}/${example}/WEB-INF"/>
+        <mkdir dir="${build}/${example}/WEB-INF/classes"/>
+        <mkdir dir="${build}/${example}/WEB-INF/lib"/>
+    </target>       
+
+    <target name="build" depends="prepare"
+            description="Compile Java files and copy static files.">
+         <jsf.javac srcdir="src"
+                   destdir="${build}/${example}/WEB-INF/classes">
+            <classpath>
+                <path refid="classpath"/>
+            </classpath>
+        </jsf.javac>
+        <copy todir="${build}/${example}/WEB-INF">
+            <fileset dir="src/main/webapp/WEB-INF">
+                <include name="web.xml"/>
+                <include name="faces-config.xml"/>
+            </fileset>
+        </copy>
+
+        <copy todir="${build}/${example}/">
+            <fileset dir="src/main/webapp">
+                <include name="*.xhtml"/>
+                <include name="*.html"/>
+                <include name="*.gif"/>
+                <include name="*.jpg"/>
+                <include name="*.jsp"/>
+                <include name="*.xml"/>
+            </fileset>
+        </copy>
+        <copy todir="${build}/${example}/WEB-INF/classes/${example}">
+            <fileset dir="src/main/webapp">
+                <include name="*properties"/>
+            </fileset>
+        </copy>
+        
+        <jsf.war basedir="${build}"
+                 archive-name="${example}"
+                 webxml="${build}/${example}/WEB-INF/web.xml">
+            <archive-elements>
+                <zipfileset dir="${build}/${example}"/>
+            </archive-elements>
+        </jsf.war>
+    </target>
+
+    <target name="deploy"
+            description="Deploy the demo application">
+        <deploy.artifact artifact="${build}/${example}.war"
+                         appName="${example}"/>
+    </target>
+
+    <target name="undeploy"
+            description="Undeploy the demo application">
+        <undeploy.artifact artifact="${build}/${example}.war"
+                           appName="${example}"/>
+    </target>
+
+
+</project>
+
diff --git a/jsf-demo/ifnavigation/pom.xml b/jsf-demo/ifnavigation/pom.xml
new file mode 100644
index 0000000..984611b
--- /dev/null
+++ b/jsf-demo/ifnavigation/pom.xml
@@ -0,0 +1,173 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+    <modelVersion>4.0.0</modelVersion>
+    <groupId>com.sun.faces</groupId>
+    <artifactId>ifnavigation</artifactId>
+    <packaging>war</packaging>
+    <name>${project.artifactId}</name>
+    <url>https://mojarra.dev.java.net/</url>
+    <description>Example App</description>
+    <version>1.0</version>
+
+    <build>
+        <defaultGoal>package</defaultGoal>
+        <sourceDirectory>src/main/java</sourceDirectory>
+        <finalName>${project.artifactId}</finalName>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>RELEASE</version>
+                <configuration>
+                    <source>1.5</source>
+                    <target>1.5</target>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+
+    <repositories>
+        <repository>
+            <id>java.net.m2</id>
+            <name>java.net m2 repo</name>
+            <url>http://download.java.net/maven/2</url>
+        </repository>
+       <repository>
+            <id>glassfish-repo-archive</id>
+            <name>Nexus repository collection for Glassfish</name>
+            <url>http://maven.glassfish.org/content/groups/glassfish</url>
+        </repository>
+        <repository>
+            <id>ibiblio.mirrors</id>
+            <url>http://mirrors.ibiblio.org/pub/mirrors/maven2</url>
+        </repository>
+        <repository>
+            <id>codehaus</id>
+            <name>codehaus</name>
+            <url>http://repository.codehaus.org</url>
+        </repository>
+    </repositories>
+
+    <dependencies>
+        <dependency>
+            <groupId>javax.faces</groupId>
+            <artifactId>jsf-api</artifactId>
+            <version>2.0</version>
+            <scope>provided</scope>
+        </dependency>
+
+        <!--
+          Uncomment these dependencies and comment out the one above to use
+          a simple servlet container instead of a Java EE Application Server
+        <dependency>
+            <groupId>com.sun.faces</groupId>
+            <artifactId>jsf-api</artifactId>
+            <version>[2.0.1,)</version>
+        </dependency>
+        <dependency>
+            <groupId>com.sun.faces</groupId>
+            <artifactId>jsf-impl</artifactId>
+            <version>[2.0.1,)</version>
+        </dependency>
+        <dependency>
+            <groupId>javax.servlet</groupId>
+            <artifactId>servlet-api</artifactId>
+            <version>2.5</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>javax.servlet.jsp</groupId>
+            <artifactId>jsp-api</artifactId>
+            <version>2.1</version>
+            <scope>provided</scope>
+        </dependency>
+         <dependency>
+             <groupId>javax.servlet.jsp.jstl</groupId>
+             <artifactId>jstl-api</artifactId>
+             <version>1.2</version>
+         </dependency>
+        <dependency>
+            <groupId>org.glassfish.web</groupId>
+            <artifactId>jstl-impl</artifactId>
+            <version>1.2</version>
+        </dependency>
+        -->
+
+    </dependencies>
+    <reporting>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-project-info-reports-plugin</artifactId>
+                <reportSets>
+                    <reportSet/>
+                </reportSets>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                    <source>1.5</source>
+                    <target>1.5</target>
+                </configuration>
+            </plugin>
+        </plugins>
+    </reporting>
+    <profiles>
+        <profile>
+            <id>default</id>
+            <!-- Tests are disabled by default.  See the test profile -->
+            <activation>
+                <activeByDefault>true</activeByDefault>
+            </activation>
+            <properties>
+                <maven.test.skip>true</maven.test.skip>
+            </properties>
+        </profile>
+    </profiles>
+</project>
+
diff --git a/jsf-demo/ifnavigation/src/main/java/ifnavigation/NumberGuess.java b/jsf-demo/ifnavigation/src/main/java/ifnavigation/NumberGuess.java
new file mode 100644
index 0000000..4d0ae0f
--- /dev/null
+++ b/jsf-demo/ifnavigation/src/main/java/ifnavigation/NumberGuess.java
@@ -0,0 +1,142 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package ifnavigation;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.SessionScoped;
+import java.util.List;
+import java.util.Random;
+import java.util.ArrayList;
+import java.io.Serializable;
+
+ at ManagedBean
+ at SessionScoped
+ at SuppressWarnings("unused")
+public class NumberGuess implements Serializable {
+
+    private static final long serialVersionUID = 0L;
+
+    private boolean started = false;
+
+    private int upperBound;
+
+    private int lowerBound;
+
+    private int maxGuesses;
+
+    private int guessAttempts;
+
+    private int randomNumber;
+
+    private Integer currentGuess;
+
+    private List<Integer> possibleGuesses;
+
+    public NumberGuess() {
+    }
+
+    public void begin() {
+        randomNumber = new Random().nextInt(10) + 1;
+        currentGuess = null;
+        guessAttempts = 0;
+        maxGuesses = 5;
+        started = true;
+        upperBound = 10;
+        lowerBound = 1;
+        updatePossibleGuesses();
+    }
+
+    public void guess() {
+        if (currentGuess > randomNumber) {
+             upperBound = currentGuess - 1;
+        }
+        if (currentGuess < randomNumber) {
+             lowerBound = currentGuess + 1;
+        }
+
+        updatePossibleGuesses();
+        guessAttempts++;
+    }
+
+    public boolean isCorrect() {
+        return currentGuess != null && randomNumber == currentGuess;
+    }   
+
+    public Integer getCurrentGuess() {
+        return currentGuess;
+    }
+
+    public void setCurrentGuess(Integer guess) {
+        this.currentGuess = guess;
+    }
+    
+    public List<Integer> getPossibleGuesses() {
+        return possibleGuesses;
+    }   
+    
+    public boolean isStarted() {
+        return started;
+    }
+
+    public int getGuessAttempts() {
+        return guessAttempts;
+    }
+
+    public boolean isGuessesExhausted() {
+        return guessAttempts == maxGuesses;
+    }
+
+    public int getRemainingGuesses() {
+        return maxGuesses - guessAttempts;
+    }
+
+    public String getViewIdForIncorrectGuess() {
+        return isGuessesExhausted() ? "/gameover.xhtml" : "/guess.xhtml";
+    }
+
+    protected void updatePossibleGuesses() {
+        List<Integer> l = new ArrayList<Integer>();
+        for (int i = lowerBound; i <= upperBound; i++) {
+            l.add(i);
+        }
+        possibleGuesses = l;
+    }
+}
diff --git a/jsf-demo/ifnavigation/src/main/webapp/WEB-INF/faces-config.xml b/jsf-demo/ifnavigation/src/main/webapp/WEB-INF/faces-config.xml
new file mode 100644
index 0000000..afc43e6
--- /dev/null
+++ b/jsf-demo/ifnavigation/src/main/webapp/WEB-INF/faces-config.xml
@@ -0,0 +1,78 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
+        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
+        version="2.0">
+
+    <navigation-rule>
+        <!--<from-view-id>/home.xhtml</from-view-id>-->
+        <from-view-id>*</from-view-id>
+        <navigation-case>
+            <from-action>#{numberGuess.begin}</from-action>
+            <if>#{numberGuess.started}</if>
+            <to-view-id>/guess.xhtml</to-view-id>
+        </navigation-case>
+    </navigation-rule>
+
+    <!-- short-circuit rules allow the conditions to work like if, else if, else if -->
+    <navigation-rule>
+        <from-view-id>/guess.xhtml</from-view-id>
+        <navigation-case>
+            <from-action>#{numberGuess.guess}</from-action>
+            <if>#{numberGuess.correct}</if>
+            <to-view-id>/gameover.xhtml</to-view-id>
+        </navigation-case>
+        <navigation-case>
+            <from-action>#{numberGuess.guess}</from-action>
+            <if>#{not numberGuess.correct}</if>
+            <to-view-id>#{numberGuess.viewIdForIncorrectGuess}</to-view-id>
+        </navigation-case>
+        <navigation-case>
+            <from-action>#{numberGuess.guess}</from-action>
+            <to-view-id>/shouldNotGetHere.xhtml</to-view-id>
+        </navigation-case>
+    </navigation-rule>
+
+</faces-config>
diff --git a/jsf-demo/ifnavigation/src/main/webapp/WEB-INF/web.xml b/jsf-demo/ifnavigation/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..50fa369
--- /dev/null
+++ b/jsf-demo/ifnavigation/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,88 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<web-app version="2.5"
+         xmlns="http://java.sun.com/xml/ns/javaee"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" >
+    
+    <display-name>JavaServer Faces "If Navigation" Sample Application</display-name>
+    <description>
+        JavaServer Faces "If Navigation" Sample Application
+    </description>
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>server</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>Development</param-value>
+    </context-param>
+    <context-param>
+        <description>
+            Set this flag to true if you want the JavaServer Faces
+            Reference Implementation to validate the XML in your
+            faces-config.xml resources against the DTD.  Default
+            value is false.
+        </description>
+        <param-name>com.sun.faces.validateXml</param-name>
+        <param-value>true</param-value>
+    </context-param>
+
+    <!-- Faces Servlet -->
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+
+    <!-- Faces Servlet Mapping -->
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>*.jsf</url-pattern>
+    </servlet-mapping>
+
+    <welcome-file-list>
+        <welcome-file>home.jsf</welcome-file>
+    </welcome-file-list>
+</web-app>
diff --git a/jsf-demo/ifnavigation/src/main/webapp/gameover.xhtml b/jsf-demo/ifnavigation/src/main/webapp/gameover.xhtml
new file mode 100644
index 0000000..dc7c4bc
--- /dev/null
+++ b/jsf-demo/ifnavigation/src/main/webapp/gameover.xhtml
@@ -0,0 +1,70 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+    xmlns:ui="http://java.sun.com/jsf/facelets"
+    xmlns:f="http://java.sun.com/jsf/core"
+    xmlns:h="http://java.sun.com/jsf/html">
+ 
+<f:view contentType="text/html"/>
+    <h:head>
+        <title>Gave Over</title>
+    </h:head>
+    <h:body>
+        <h:panelGroup rendered="#{numberGuess.correct}">
+            <h2>You won!</h2>
+            <p>Congratulations! You won. Want to test your luck again?</p>
+        </h:panelGroup>
+
+        <h:panelGroup rendered="#{not numberGuess.correct}">
+            <h2>Game over!</h2>
+            <p>You exhausted your guess attempts. Want to give it another shot?</p>
+        </h:panelGroup>
+
+        <h:form id="beginForm">
+            <h:commandButton id="begin" action="#{numberGuess.begin}" value="Begin"/>
+        </h:form>
+
+    </h:body>
+</html>
diff --git a/jsf-demo/ifnavigation/src/main/webapp/guess.xhtml b/jsf-demo/ifnavigation/src/main/webapp/guess.xhtml
new file mode 100644
index 0000000..3eaf627
--- /dev/null
+++ b/jsf-demo/ifnavigation/src/main/webapp/guess.xhtml
@@ -0,0 +1,66 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+    xmlns:ui="http://java.sun.com/jsf/facelets"
+    xmlns:f="http://java.sun.com/jsf/core"
+    xmlns:h="http://java.sun.com/jsf/html">
+ 
+    <f:view contentType="text/html"/>
+    <h:head>
+        <title>Guess</title>
+    </h:head>
+    <h:body>
+        <h2>Make your guess</h2>
+
+        <p>You have #{numberGuess.remainingGuesses} remaining #{numberGuess.remainingGuesses == 1 ? 'guesses' : 'guess'}.</p>
+
+        <h:form id="guessForm">
+            <h:selectOneMenu value="#{numberGuess.currentGuess}">
+                <f:selectItems value="#{numberGuess.possibleGuesses}" var="number" itemValue="#{number}"/>
+            </h:selectOneMenu>
+            <h:commandButton action="#{numberGuess.guess}" value="Guess"/>
+        </h:form>
+    </h:body>
+</html>
diff --git a/jsf-demo/ifnavigation/src/main/webapp/home.xhtml b/jsf-demo/ifnavigation/src/main/webapp/home.xhtml
new file mode 100644
index 0000000..1f22116
--- /dev/null
+++ b/jsf-demo/ifnavigation/src/main/webapp/home.xhtml
@@ -0,0 +1,60 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+    xmlns:ui="http://java.sun.com/jsf/facelets"
+    xmlns:f="http://java.sun.com/jsf/core"
+    xmlns:h="http://java.sun.com/jsf/html">
+ 
+<f:view contentType="text/html"/>
+    <h:head>
+        <title>Begin</title>
+    </h:head>
+    <h:body>
+        <h2>Are you ready to play?</h2>
+        <h:form id="beginForm">
+            <h:commandButton id="begin" action="#{numberGuess.begin}" value="Begin"/>
+        </h:form>
+    </h:body>
+</html>
diff --git a/jsf-demo/pom.xml b/jsf-demo/pom.xml
new file mode 100644
index 0000000..178a2df
--- /dev/null
+++ b/jsf-demo/pom.xml
@@ -0,0 +1,87 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <groupId>com.sun.faces.demo</groupId>
+    <artifactId>demos</artifactId>
+    <packaging>pom</packaging>
+    <version>2.2.0-SNAPSHOT</version>
+    <name>Mojarra JSF Demos</name>
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>2.3.2</version>
+                <configuration>
+                    <source>1.5</source>
+                    <target>1.5</target>
+                    <encoding>${project.build.sourceEncoding}</encoding>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+    <modules>
+        <module>ajax-component</module>
+        <module>basic-ajax</module>
+        <module>basic-ezcomp</module>
+        <module>bean-validator</module>
+        <module>custom-bean-scope</module>
+        <module>custom-tag</module>
+        <module>guessNumber</module>
+        <module>helloworld</module>
+        <module>ifnavigation</module>
+        <module>viewExpired</module>
+    <module>flow_and_contract</module>
+  </modules>
+    <profiles>
+        <profile>
+            <id>sandbox</id>
+            <modules>
+                <module>sandbox</module>
+            </modules>
+        </profile>
+    </profiles>
+    <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
\ No newline at end of file
diff --git a/jsf-demo/sandbox/OpenAjaxBridge/README b/jsf-demo/sandbox/OpenAjaxBridge/README
new file mode 100644
index 0000000..1e86e0d
--- /dev/null
+++ b/jsf-demo/sandbox/OpenAjaxBridge/README
@@ -0,0 +1,10 @@
+OpenAjax is a vendor independant standard for, among other things, sending
+events within the client.
+
+See http://openajax.org for more information.
+
+This demo shows that it's trivially easy to bridge between the JSF event and
+error passing mechanism, and OpenAjax.  There's a composite component, under
+web/resources/openajaxbridge, which can be placed in a page (as the first
+component, preferably), which will intercept all JSF events and errors and
+republish them on the OpenAjax hub.
\ No newline at end of file
diff --git a/jsf-demo/sandbox/OpenAjaxBridge/build.xml b/jsf-demo/sandbox/OpenAjaxBridge/build.xml
new file mode 100644
index 0000000..0b42ab9
--- /dev/null
+++ b/jsf-demo/sandbox/OpenAjaxBridge/build.xml
@@ -0,0 +1,123 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project name="OpenAjaxBridge" default="build" basedir=".">
+   
+
+    <property file="${user.home}/build.properties"/> 
+    <property file="../../../build.properties"/>
+    <import file="${jsf.build.home}/common/ant/common.xml"/>
+    
+    <!-- Configure the context path for this application -->
+    <property name="context.path" value="/OpenAjaxBridge"/>
+    <property name="example" value="OpenAjaxBridge"/>
+    <property name="build" value="${basedir}/build"/>
+
+    <!-- Location dependent jars -->
+    <property name="jsf-demo.lib" value="../lib"/>
+
+    <path id="classpath">       
+        <pathelement location="${javax.faces-api.jar}"/>
+        <pathelement location="${javax.faces.jar}"/>       
+        <pathelement location="${build}/WEB-INF/classes"/>
+        <pathelement location="${jsf-demo.lib}/ui.jar"/>
+        <path refid="compile.classpath"/>
+    </path>
+    
+    <target name="init">
+        <tstamp/>
+    </target>
+
+    <target name="clean">
+        <delete dir="${build}"/>
+        <delete dir="${context.path}"/>
+    </target>    
+    
+    <target name="prepare" depends="init"
+            description="Create build directories.">
+        <mkdir dir="${build}/${example}/"/>
+        <mkdir dir="${build}/${example}/WEB-INF"/>
+        <mkdir dir="${build}/${example}/WEB-INF/classes"/>
+        <mkdir dir="${build}/${example}/WEB-INF/lib"/>
+    </target>       
+
+    <target name="build" depends="prepare"
+            description="Compile Java files and copy static files.">
+         <jsf.javac srcdir="src"
+                   destdir="${build}/${example}/WEB-INF/classes">
+            <classpath>
+                <path refid="classpath"/>
+            </classpath>
+        </jsf.javac>
+        <copy todir="${build}/${example}/WEB-INF">
+            <fileset dir="web/WEB-INF">
+                <include name="*.xml"/>
+            </fileset>
+        </copy>
+        <copy todir="${build}/${example}/WEB-INF/classes">
+            <fileset dir="src"/>
+        </copy>
+
+        <copy todir="${build}/${example}/">
+            <fileset dir="web">
+                <include name="*.html"/>
+                <include name="*.gif"/>
+                <include name="*.jpg"/>
+                <include name="*.jsp"/>
+                <include name="*.xml"/>
+                <include name="*.xhtml"/>
+            </fileset>
+        </copy>
+        <copy todir="${build}/${example}/resources">
+            <fileset dir="web/resources"/>
+        </copy>
+     
+        <jsf.war basedir="${build}"
+                 archive-name="${example}"
+                 webxml="${build}/${example}/WEB-INF/web.xml">
+            <archive-elements>
+                <zipfileset dir="${build}/${example}"/>
+            </archive-elements>
+        </jsf.war>
+    </target>
+</project>
+
diff --git a/jsf-demo/sandbox/OpenAjaxBridge/src/openajaxbridge/Count.java b/jsf-demo/sandbox/OpenAjaxBridge/src/openajaxbridge/Count.java
new file mode 100644
index 0000000..0376ea2
--- /dev/null
+++ b/jsf-demo/sandbox/OpenAjaxBridge/src/openajaxbridge/Count.java
@@ -0,0 +1,59 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package openajaxbridge;
+
+import javax.faces.event.ActionEvent;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.SessionScoped;
+
+ at ManagedBean(name = "openajaxcount")
+ at SessionScoped
+public class Count {
+    Integer count = 0;
+
+    public Integer getCount() {
+        return count++;
+    }
+
+    public void reset(ActionEvent ae) {
+        count = 0;
+    }
+}
diff --git a/jsf-demo/sandbox/OpenAjaxBridge/web/WEB-INF/web.xml b/jsf-demo/sandbox/OpenAjaxBridge/web/WEB-INF/web.xml
new file mode 100644
index 0000000..2188364
--- /dev/null
+++ b/jsf-demo/sandbox/OpenAjaxBridge/web/WEB-INF/web.xml
@@ -0,0 +1,89 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2005-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<web-app version="2.5"
+         xmlns="http://java.sun.com/xml/ns/javaee"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
+
+    <display-name>CompRes Blank Facelets App</display-name>
+    <description>CompRes Blank Facelets App</description>
+
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>server</param-value>
+    </context-param>
+    <context-param>
+	<param-name>javax.faces.DEFAULT_SUFFIX</param-name>
+	<param-value>.xhtml</param-value>
+    </context-param>
+    <context-param>
+        <param-name>facelets.DEVELOPMENT</param-name>
+        <param-value>true</param-value>
+    </context-param>
+
+    <context-param>
+        <description>
+            Set this flag to true if you want the JavaServer Faces
+            Reference Implementation to validate the XML in your
+            faces-config.xml resources against the DTD. Default
+            value is false.
+        </description>
+        <param-name>com.sun.faces.validateXml</param-name>
+        <param-value>true</param-value>
+    </context-param>
+
+    <!-- Faces Servlet -->
+  <servlet>
+    <servlet-name>Faces Servlet</servlet-name>
+    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+    <load-on-startup>1</load-on-startup>
+  </servlet>
+
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+        <url-pattern>*.jsf</url-pattern>
+    </servlet-mapping>
+
+</web-app>
diff --git a/jsf-demo/sandbox/OpenAjaxBridge/web/count.xhtml b/jsf-demo/sandbox/OpenAjaxBridge/web/count.xhtml
new file mode 100644
index 0000000..3e99ccc
--- /dev/null
+++ b/jsf-demo/sandbox/OpenAjaxBridge/web/count.xhtml
@@ -0,0 +1,77 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:oa="http://java.sun.com/jsf/composite/openajaxbridge" >
+<h:head>
+    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
+    <title>OpenAjax Bridge Demo</title>
+</h:head>
+<h:body>
+    <oa:bridge/>    
+    <h:form id="form1" prependId="false">
+        <h:outputScript name="status.js" target="head" />
+        <h:outputText id="out1" value="#{openajaxcount.count}"/>
+        <br/>
+        <!-- Increment the counter on the server, and the client -->
+        <h:commandButton id="button1" value="Count"
+                         onclick="jsf.ajax.request(this, event, {execute: this.id, render: 'out1'}); return false;"/>
+        <br/>
+        <!-- Resets the counter, doesn't refresh the page -->
+        <h:commandButton id="reset" value="reset"
+                        onclick="jsf.ajax.request(this, event, {execute:'reset', render: 'out1'}); return false;"
+                        actionListener="#{openajaxcount.reset}"/>
+        <h:messages/>
+    </h:form>
+
+    <p/>
+    <h3> Status:</h3>
+    <p>
+        <textarea id="statusArea" cols="40" rows="10" readonly="readonly" />
+    </p>
+
+</h:body>
+</html>
+
diff --git a/jsf-demo/sandbox/OpenAjaxBridge/web/index.html b/jsf-demo/sandbox/OpenAjaxBridge/web/index.html
new file mode 100644
index 0000000..d80046a
--- /dev/null
+++ b/jsf-demo/sandbox/OpenAjaxBridge/web/index.html
@@ -0,0 +1,47 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<html>
+<head>
+    <meta http-equiv="Refresh" content="0;url=count.jsf">
+</head>
+</html>
diff --git a/jsf-demo/sandbox/OpenAjaxBridge/web/resources/openajaxbridge/OpenAjax.js b/jsf-demo/sandbox/OpenAjaxBridge/web/resources/openajaxbridge/OpenAjax.js
new file mode 100644
index 0000000..dcb4970
--- /dev/null
+++ b/jsf-demo/sandbox/OpenAjaxBridge/web/resources/openajaxbridge/OpenAjax.js
@@ -0,0 +1,237 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ *
+ *
+ * This file incorporates work covered by the following copyright and
+ * permission notice:
+ *
+ *      Copyright 2006-2008 OpenAjax Alliance
+ *
+ * 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.
+ */
+
+/*******************************************************************************
+ * OpenAjax.js
+ *
+ * Reference implementation of the OpenAjax Hub, as specified by OpenAjax Alliance.
+ * Specification is under development at: 
+ *
+ *   http://www.openajax.org/member/wiki/OpenAjax_Hub_Specification
+ *
+ * Copyright 2006-2008 OpenAjax Alliance
+ *
+ * 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.
+ *
+ ******************************************************************************/
+
+// prevent re-definition of the OpenAjax object
+if (!window["OpenAjax"]) {
+    OpenAjax = new function() {
+        var t = true;
+        var f = false;
+        var g = window;
+        var libs;
+        var ooh = "org.openajax.hub.";
+
+        var h = {};
+        this.hub = h;
+        h.implementer = "http://openajax.org";
+        h.implVersion = "1.0";
+        h.specVersion = "1.0";
+        h.implExtraData = {};
+        libs = {};
+        h.libraries = libs;
+
+        h.registerLibrary = function(prefix, nsURL, version, extra) {
+            libs[prefix] = {
+                prefix: prefix,
+                namespaceURI: nsURL,
+                version: version,
+                extraData: extra
+            };
+            this.publish(ooh + "registerLibrary", libs[prefix]);
+        }
+        h.unregisterLibrary = function(prefix) {
+            this.publish(ooh + "unregisterLibrary", libs[prefix]);
+            delete libs[prefix];
+        }
+
+        h._subscriptions = { c:{}, s:[] };
+        h._cleanup = [];
+        h._subIndex = 0;
+        h._pubDepth = 0;
+
+        h.subscribe = function(name, callback, scope, subscriberData, filter)
+        {
+            if (!scope) {
+                scope = window;
+            }
+            var handle = name + "." + this._subIndex;
+            var sub = { scope: scope, cb: callback, fcb: filter, data: subscriberData, sid: this._subIndex++, hdl: handle };
+            var path = name.split(".");
+            this._subscribe(this._subscriptions, path, 0, sub);
+            return handle;
+        }
+
+        h.publish = function(name, message)
+        {
+            var path = name.split(".");
+            this._pubDepth++;
+            this._publish(this._subscriptions, path, 0, name, message);
+            this._pubDepth--;
+            if ((this._cleanup.length > 0) && (this._pubDepth == 0)) {
+                for (var i = 0; i < this._cleanup.length; i++)
+                    this.unsubscribe(this._cleanup[i].hdl);
+                delete(this._cleanup);
+                this._cleanup = [];
+            }
+        }
+
+        h.unsubscribe = function(sub)
+        {
+            var path = sub.split(".");
+            var sid = path.pop();
+            this._unsubscribe(this._subscriptions, path, 0, sid);
+        }
+
+        h._subscribe = function(tree, path, index, sub)
+        {
+            var token = path[index];
+            if (index == path.length)
+                tree.s.push(sub);
+            else {
+                if (typeof tree.c == "undefined")
+                    tree.c = {};
+                if (typeof tree.c[token] == "undefined") {
+                    tree.c[token] = { c: {}, s: [] };
+                    this._subscribe(tree.c[token], path, index + 1, sub);
+                }
+                else
+                    this._subscribe(tree.c[token], path, index + 1, sub);
+            }
+        }
+
+        h._publish = function(tree, path, index, name, msg) {
+            if (typeof tree != "undefined") {
+                var node;
+                if (index == path.length) {
+                    node = tree;
+                } else {
+                    this._publish(tree.c[path[index]], path, index + 1, name, msg);
+                    this._publish(tree.c["*"], path, index + 1, name, msg);
+                    node = tree.c["**"];
+                }
+                if (typeof node != "undefined") {
+                    var callbacks = node.s;
+                    var max = callbacks.length;
+                    for (var i = 0; i < max; i++) {
+                        if (callbacks[i].cb) {
+                            var sc = callbacks[i].scope;
+                            var cb = callbacks[i].cb;
+                            var fcb = callbacks[i].fcb;
+                            var d = callbacks[i].data;
+                            if (typeof cb == "string") {
+                                // get a function object
+                                cb = sc[cb];
+                            }
+                            if (typeof fcb == "string") {
+                                // get a function object
+                                fcb = sc[fcb];
+                            }
+                            if ((!fcb) ||
+                                (fcb.call(sc, name, msg, d))) {
+                                cb.call(sc, name, msg, d);
+                            }
+                        }
+                    }
+                }
+            }
+        }
+
+        h._unsubscribe = function(tree, path, index, sid) {
+            if (typeof tree != "undefined") {
+                if (index < path.length) {
+                    var childNode = tree.c[path[index]];
+                    this._unsubscribe(childNode, path, index + 1, sid);
+                    if (childNode.s.length == 0) {
+                        for (var x in childNode.c)
+                            return;
+                        delete tree.c[path[index]];
+                    }
+                    return;
+                }
+                else {
+                    var callbacks = tree.s;
+                    var max = callbacks.length;
+                    for (var i = 0; i < max; i++)
+                        if (sid == callbacks[i].sid) {
+                            if (this._pubDepth > 0) {
+                                callbacks[i].cb = null;
+                                this._cleanup.push(callbacks[i]);
+                            }
+                            else
+                                callbacks.splice(i, 1);
+                            return;
+                        }
+                }
+            }
+        }
+
+    };
+    
+    // Register the OpenAjax Hub itself as a library.
+    OpenAjax.hub.registerLibrary("OpenAjax", "http://openajax.org/hub", "1.0", {});
+
+}
diff --git a/jsf-demo/sandbox/OpenAjaxBridge/web/resources/openajaxbridge/bridge.js b/jsf-demo/sandbox/OpenAjaxBridge/web/resources/openajaxbridge/bridge.js
new file mode 100644
index 0000000..5361e8e
--- /dev/null
+++ b/jsf-demo/sandbox/OpenAjaxBridge/web/resources/openajaxbridge/bridge.js
@@ -0,0 +1,57 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+var openajaxbridge = {};
+
+openajaxbridge.eventUpdate = function eventUpdate(data) {
+    try {
+    OpenAjax.hub.publish("jsf.event", data);
+    } catch (ex) { alert(ex); }
+};
+
+openajaxbridge.errorUpdate = function errorUpdate(data) {
+    try {
+    OpenAjax.hub.publish("jsf.error",data);
+    } catch (ex) { alert(ex); }
+};
+
+// Setup the statusUpdate function to hear all events on the page
+jsf.ajax.addOnEvent(openajaxbridge.eventUpdate);
+jsf.ajax.addOnError(openajaxbridge.errorUpdate);
diff --git a/jsf-demo/sandbox/OpenAjaxBridge/web/resources/openajaxbridge/bridge.xhtml b/jsf-demo/sandbox/OpenAjaxBridge/web/resources/openajaxbridge/bridge.xhtml
new file mode 100644
index 0000000..8482ea3
--- /dev/null
+++ b/jsf-demo/sandbox/OpenAjaxBridge/web/resources/openajaxbridge/bridge.xhtml
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:composite="http://java.sun.com/jsf/composite">
+<head/>
+<body>
+<composite:interface> 
+</composite:interface>
+<composite:implementation>
+    <h:outputScript name="openajaxbridge/OpenAjax.js" target="head" />
+    <h:outputScript name="jsf.js" library="javax.faces" target="head"/>
+    <h:outputScript name="openajaxbridge/bridge.js" target="head" />
+</composite:implementation>
+</body>
+</html>
diff --git a/jsf-demo/sandbox/OpenAjaxBridge/web/resources/status.js b/jsf-demo/sandbox/OpenAjaxBridge/web/resources/status.js
new file mode 100644
index 0000000..dcc9d29
--- /dev/null
+++ b/jsf-demo/sandbox/OpenAjaxBridge/web/resources/status.js
@@ -0,0 +1,55 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+var statusUpdate = function statusUpdate(name, data) {
+    var statusArea = document.getElementById("statusArea");
+    var text = statusArea.value;
+    text = text + "Name: "+data.source.id;
+    if (name === "jsf.event") {
+        text = text +" Event: "+data.status+"\n";
+    } else if (name === "jsf.error") {  
+        text = text + " Error: "+data.status+"\n";
+    }
+    statusArea.value = text;
+};
+
+// Setup the statusUpdate function to hear all events on the page
+OpenAjax.hub.subscribe("jsf.event",statusUpdate);
+OpenAjax.hub.subscribe("jsf.error",statusUpdate);
diff --git a/jsf-demo/sandbox/README.txt b/jsf-demo/sandbox/README.txt
new file mode 100644
index 0000000..6c21044
--- /dev/null
+++ b/jsf-demo/sandbox/README.txt
@@ -0,0 +1,7 @@
+The demo sandbox directory is for all demos that are currently under development,
+that may eventually be released at some time in the future as a demo.
+
+Please do not move a demo out of the sandbox until it is ready for release to end users.
+
+It is anticipated that some sandboxed demos may never be released - in that case, they should
+either be moved to the archive directory (if they are useful for testing), or deleted.
diff --git a/jsf-demo/sandbox/ajax-queue/build.xml b/jsf-demo/sandbox/ajax-queue/build.xml
new file mode 100644
index 0000000..c00de73
--- /dev/null
+++ b/jsf-demo/sandbox/ajax-queue/build.xml
@@ -0,0 +1,121 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project name="ajax-queue" default="build" basedir=".">
+
+
+    <property file="${user.home}/build.properties"/>
+    <property file="../../../build.properties"/>
+    <import file="${jsf.build.home}/common/ant/common.xml"/>
+
+    <!-- Configure the context path for this application -->
+    <property name="context.path" value="/ajax-queue"/>
+    <property name="example" value="ajax-queue"/>
+    <property name="build" value="${basedir}/build"/>
+
+    <path id="classpath">       
+        <pathelement location="${javax.faces-api.jar}"/>
+        <pathelement location="${javax.faces.jar}"/>
+        <path refid="compile.classpath"/>
+    </path>
+    
+    <target name="init">
+        <tstamp/>
+    </target>
+
+    <target name="clean">
+        <delete dir="${build}"/>
+    </target>    
+
+   <target name="prepare" depends="init"
+            description="Create build directories.">
+        <mkdir dir="${build}/${example}"/>
+        <mkdir dir="${build}/${example}/WEB-INF"/>
+        <mkdir dir="${build}/${example}/WEB-INF/classes"/>
+    </target>
+
+
+    <target name="build" depends="prepare"
+            description="Compile Java files and copy static files.">
+        <touch file="${build}/last-build"/>
+        <jsf.javac srcdir="src/main/java"
+                   destdir="${build}/${example}/WEB-INF/classes">
+            <classpath>
+                <path refid="classpath"/>
+            </classpath>
+        </jsf.javac>
+        <copy todir="${build}/${example}/WEB-INF">
+            <fileset dir="src/main/webapp/WEB-INF">
+                <include name="*.xml"/>
+                <include name="*.tld"/>
+            </fileset>
+        </copy>
+
+        <copy todir="${build}/${example}/">
+            <fileset dir="src/main/webapp">
+                <include name="*.html"/>
+                <include name="*.xhtml"/>
+                <include name="*.gif"/>
+                <include name="*.jpg"/>
+                <include name="*.jsp"/>
+                <include name="*.xml"/>
+            </fileset>
+        </copy>
+        <copy todir="${build}/${example}/WEB-INF/classes/ajaxqueue/bundles">
+            <fileset dir="src/main/java/ajaxqueue/bundles"/>
+        </copy>
+        
+        <copy todir="${build}/${example}/resources">
+            <fileset dir="src/main/webapp/resources"/>
+        </copy>
+
+        <jsf.war basedir="${build}"
+                 archive-name="${example}"
+                 webxml="${build}/${example}/WEB-INF/web.xml">
+            <archive-elements>
+                <zipfileset dir="${build}/${example}"/>
+            </archive-elements>
+        </jsf.war>
+    </target>
+
+</project> 
+ 
diff --git a/jsf-demo/sandbox/ajax-queue/pom.xml b/jsf-demo/sandbox/ajax-queue/pom.xml
new file mode 100644
index 0000000..213db72
--- /dev/null
+++ b/jsf-demo/sandbox/ajax-queue/pom.xml
@@ -0,0 +1,165 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>com.sun.faces.extensions</groupId>
+  <artifactId>ajax-queue</artifactId>
+  <packaging>war</packaging>
+  <name>ajax-queue</name>
+  <url>https://mojarra.dev.java.net/</url>
+  <description>Ajax Queue JSF Demo</description>
+  <version>0.1</version>
+
+  <scm>
+    <connection>scm:svn:http://jsf-extensions.dev.java.net/svn/jsf-extensions/trunk</connection>
+    <developerConnection>scm:svn:https://jsf-extensions.dev.java.net/svn/jsf-extensions/trunk</developerConnection>
+    <url>https://jsf-extensions.dev.java.net/source/browse/jsf-extensions/</url>
+  </scm>
+
+  <build>
+    <defaultGoal>install</defaultGoal>
+    <sourceDirectory>src/main/java</sourceDirectory>
+    <resources>
+      <resource>
+        <directory>src/main/resources</directory>
+        <targetPath>resources</targetPath>
+        <includes>
+            <include>*.taglib.xml</include>
+            <include>faces-config.xml</include>
+            <include>*.js</include>
+        </includes>
+     </resource>
+   </resources>
+    <finalName>ajax-queue</finalName>
+    <plugins>
+       <plugin>
+         <artifactId>maven-antrun-plugin</artifactId>
+         <executions>
+           <execution>
+             <id>source</id>
+             <phase>generate-resources</phase>
+             <configuration>
+               <tasks>
+                 <echo message="Copying properties files to WEB-INF/classes" />
+                 <copy todir="target/${project.build.finalName}/WEB-INF/classes">
+                   <fileset dir="src/main/java">
+                     <include name="**/*.properties" />
+                   </fileset>
+                 </copy>
+               </tasks>
+             </configuration>
+             <goals>
+               <goal>run</goal>
+             </goals>
+           </execution>
+         </executions>
+       </plugin>
+
+            <plugin>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>RELEASE</version>
+                <configuration>
+                    <source>1.5</source>
+                    <target>1.5</target>
+                </configuration>
+            </plugin>
+        </plugins>
+  </build>
+
+
+  <repositories>
+    <repository>
+      <snapshots />
+      <id>codecaus</id>
+      <name>codehaus</name>
+      <url>http://repository.codehaus.org</url>
+    </repository>
+    <repository>
+      <snapshots />
+      <id>java.net</id>
+      <name>Java.net Maven 1.x Repository for external projects</name>
+      <url>https://maven-repository.dev.java.net/nonav/repository</url>
+      <layout>legacy</layout>
+    </repository>
+    <repository>
+      <snapshots />
+      <id>java.net.shared</id>
+      <name>Java.net Maven 1.x Repository for glassfish dependencies</name>
+      <url>http://download.java.net/javaee5/external/shared</url>
+      <layout>legacy</layout>
+    </repository>
+    <repository>
+      <snapshots />
+      <id>ibiblio</id>
+      <url>http://www.ibiblio.org/maven2/</url>
+    </repository>
+  </repositories>
+
+  <dependencies>
+        <dependency>
+            <groupId>javax</groupId>
+            <artifactId>javaee-api</artifactId>
+            <version>6.0</version>
+            <scope>provided</scope>
+        </dependency>
+  </dependencies>
+  <reporting>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-project-info-reports-plugin</artifactId>
+        <reportSets><reportSet /></reportSets>
+      </plugin>
+       <plugin>
+         <groupId>org.apache.maven.plugins</groupId>
+         <artifactId>maven-compiler-plugin</artifactId>
+         <configuration>
+           <source>1.5</source>
+           <target>1.5</target>
+         </configuration>
+       </plugin>
+    </plugins>
+  </reporting>
+
+</project>
diff --git a/jsf-demo/sandbox/ajax-queue/src/main/java/ajaxqueue/QueueBean.java b/jsf-demo/sandbox/ajax-queue/src/main/java/ajaxqueue/QueueBean.java
new file mode 100644
index 0000000..f85b326
--- /dev/null
+++ b/jsf-demo/sandbox/ajax-queue/src/main/java/ajaxqueue/QueueBean.java
@@ -0,0 +1,69 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package ajaxqueue;
+
+import javax.faces.event.ActionEvent;
+import javax.faces.bean.ManagedBean;
+
+import java.util.Random;
+import java.io.Serializable;
+
+/**
+ * <p>This simple bean conains one <code>ActionEvent</code>
+ * handler to simulate random processing times for 
+ * requests on the server.
+ * <p/>
+ *
+ */
+ at ManagedBean(name="queuebean")
+public class QueueBean implements Serializable {
+
+    private static final long serialVersionUID = 4785983579173204451L;
+
+    public void process(ActionEvent ae) {
+        Random generator2 = new Random(System.currentTimeMillis());
+        int delay = generator2.nextInt(6001) + 1;
+        try {
+            Thread.sleep(delay);
+        } catch (Exception e) {
+        }
+    }
+}
diff --git a/jsf-demo/sandbox/ajax-queue/src/main/java/ajaxqueue/bundles/Resources.properties b/jsf-demo/sandbox/ajax-queue/src/main/java/ajaxqueue/bundles/Resources.properties
new file mode 100644
index 0000000..c981a43
--- /dev/null
+++ b/jsf-demo/sandbox/ajax-queue/src/main/java/ajaxqueue/bundles/Resources.properties
@@ -0,0 +1,41 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
+instructions=The <b>Ajax Requests</b> area represent individual Ajax requests that can be fired by clicking the green images.  Each click fires a <br> <i>jsf.ajax.request</i>.  A <i>JSF managed bean</i> on the server causes a random sleep time (4 seconds or less) to simulate <br> different processing times for each request.  The JSF 2.0 Ajax request queue on the client uses the <i>observer</i> pattern to "record" queue events as they happen.<br>The demo JavaScript on the client includes  [...]
diff --git a/jsf-demo/sandbox/ajax-queue/src/main/java/ajaxqueue/bundles/Resources_en.properties b/jsf-demo/sandbox/ajax-queue/src/main/java/ajaxqueue/bundles/Resources_en.properties
new file mode 100644
index 0000000..c981a43
--- /dev/null
+++ b/jsf-demo/sandbox/ajax-queue/src/main/java/ajaxqueue/bundles/Resources_en.properties
@@ -0,0 +1,41 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
+instructions=The <b>Ajax Requests</b> area represent individual Ajax requests that can be fired by clicking the green images.  Each click fires a <br> <i>jsf.ajax.request</i>.  A <i>JSF managed bean</i> on the server causes a random sleep time (4 seconds or less) to simulate <br> different processing times for each request.  The JSF 2.0 Ajax request queue on the client uses the <i>observer</i> pattern to "record" queue events as they happen.<br>The demo JavaScript on the client includes  [...]
diff --git a/jsf-demo/sandbox/ajax-queue/src/main/webapp/WEB-INF/faces-config.xml b/jsf-demo/sandbox/ajax-queue/src/main/webapp/WEB-INF/faces-config.xml
new file mode 100644
index 0000000..9876214
--- /dev/null
+++ b/jsf-demo/sandbox/ajax-queue/src/main/webapp/WEB-INF/faces-config.xml
@@ -0,0 +1,61 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!-- =========== FULL CONFIGURATION FILE ================================== -->
+
+<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
+              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+              xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
+              version="2.0">
+
+    <application>
+        <locale-config>
+            <default-locale>en</default-locale>
+        </locale-config>
+        <resource-bundle>
+            <base-name>ajaxqueue.bundles.Resources</base-name>
+            <var>bundle</var>
+        </resource-bundle>
+    </application>
+
+</faces-config>
diff --git a/jsf-demo/sandbox/ajax-queue/src/main/webapp/WEB-INF/web.xml b/jsf-demo/sandbox/ajax-queue/src/main/webapp/WEB-INF/web.xml
new file mode 100755
index 0000000..0485ab8
--- /dev/null
+++ b/jsf-demo/sandbox/ajax-queue/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,86 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2005-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<web-app version="2.5"
+         xmlns="http://java.sun.com/xml/ns/javaee"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
+
+    <display-name>CompRes Blank Facelets App</display-name>
+    <description>CompRes Blank Facelets App</description>
+
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>server</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.DEFAULT_SUFFIX</param-name>
+        <param-value>.xhtml</param-value>
+    </context-param>
+
+
+    <context-param>
+        <description>
+            Set this flag to true if you want the JavaServer Faces
+            Reference Implementation to validate the XML in your
+            faces-config.xml resources against the DTD. Default
+            value is false.
+        </description>
+        <param-name>com.sun.faces.validateXml</param-name>
+        <param-value>true</param-value>
+    </context-param>
+
+    <!-- Faces Servlet -->
+  <servlet>
+    <servlet-name>Faces Servlet</servlet-name>
+    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+    <load-on-startup>1</load-on-startup>
+  </servlet>
+
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+        <url-pattern>*.jsf</url-pattern>
+    </servlet-mapping>
+
+</web-app>
diff --git a/jsf-demo/sandbox/ajax-queue/src/main/webapp/home.xhtml b/jsf-demo/sandbox/ajax-queue/src/main/webapp/home.xhtml
new file mode 100644
index 0000000..a10d79a
--- /dev/null
+++ b/jsf-demo/sandbox/ajax-queue/src/main/webapp/home.xhtml
@@ -0,0 +1,250 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:aj="https://javaserverfaces.dev.java.net/demo/ajax"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+<f:view contentType="text/html"/>
+
+<h:head>
+    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
+    <title>Ajax</title>
+</h:head>
+
+
+<h:body>
+
+<h:form id="form1" prependId="false">
+
+    <h:panelGrid styleClass="title-panel">
+        <h:panelGrid columns="2" cellpadding="20">
+            <h:outputText value="a j a x R e q u e s t" styleClass="title-panel-text"/>
+            <h:outputText value="Q u e u e" styleClass="title-panel-text"/>
+        </h:panelGrid>
+        <h:outputText value="Powered By JavaServer Faces 2.0 " styleClass="title-panel-subtext"/>
+    </h:panelGrid>
+
+    <h:outputScript name="jsf.js" library="javax.faces" target="head"/>
+    <h:outputScript name="ui.js"/> 
+    <h:outputStylesheet name="stylesheet.css" />
+
+    <h:panelGrid border="1">
+        <f:facet name="header">
+            <h:outputText value="Instructions" styleClass="keytitle"/>
+        </f:facet>
+        <h:outputText value="#{bundle.instructions}" escape="false"/>
+    </h:panelGrid>
+
+    <h:panelGrid columns="2" cellspacing="5">
+    <h:panelGrid id="board1" columns="6" border="1">
+        <f:facet name="header">
+            <h:outputText value="Ajax Requests" styleClass="keytitle"/>
+        </f:facet>
+        <h:panelGrid>
+            <h:commandButton id="_0" image="resources/button2.gif" style="height:50px;width:50px;"
+                onclick="return buttonpush('_0', this, event);"
+                actionListener ="#{queuebean.process}"/>
+            <h:panelGrid cellpadding="5">
+                <h:outputText value="_0"/>
+            </h:panelGrid>
+        </h:panelGrid>
+        <h:panelGrid>
+            <h:commandButton id="_1" image="resources/button2.gif" style="height:50px;width:50px;"
+                onclick="return buttonpush('_1', this, event);"
+                actionListener ="#{queuebean.process}"/>
+            <h:panelGrid cellpadding="5">
+                <h:outputText value="_1"/>
+            </h:panelGrid>
+        </h:panelGrid>
+        <h:panelGrid>
+            <h:commandButton id="_2" image="resources/button2.gif" style="height:50px;width:50px;"
+                onclick="return buttonpush('_2', this, event);"
+                actionListener ="#{queuebean.process}"/>
+            <h:panelGrid cellpadding="5">
+                <h:outputText value="_2"/>
+            </h:panelGrid>
+        </h:panelGrid>
+        <h:panelGrid>
+            <h:commandButton id="_3" image="resources/button2.gif" style="height:50px;width:50px;"
+                onclick="return buttonpush('_3', this, event);"
+                actionListener ="#{queuebean.process}"/>
+            <h:panelGrid cellpadding="5">
+                <h:outputText value="_3"/>
+            </h:panelGrid>
+        </h:panelGrid>
+        <h:panelGrid>
+            <h:commandButton id="_4" image="resources/button2.gif" style="height:50px;width:50px;"
+                onclick="return buttonpush('_4', this, event);"
+                actionListener ="#{queuebean.process}"/>
+            <h:panelGrid cellpadding="5">
+                <h:outputText value="_4"/>
+            </h:panelGrid>
+        </h:panelGrid>
+        <h:panelGrid>
+            <h:commandButton id="_5" image="resources/button2.gif" style="height:50px;width:50px;"
+                onclick="return buttonpush('_5', this, event);"
+                actionListener ="#{queuebean.process}"/>
+            <h:panelGrid cellpadding="5">
+                <h:outputText value="_5"/>
+            </h:panelGrid>
+        </h:panelGrid>
+        <h:panelGrid>
+            <h:commandButton id="_6" image="resources/button2.gif" style="height:50px;width:50px;"
+                onclick="return buttonpush('_6', this, event);"
+                actionListener ="#{queuebean.process}"/>
+            <h:panelGrid cellpadding="5">
+                <h:outputText value="_6"/>
+            </h:panelGrid>
+        </h:panelGrid>
+        <h:panelGrid>
+            <h:commandButton id="_7" image="resources/button2.gif" style="height:50px;width:50px;"
+                onclick="return buttonpush('_7', this, event);"
+                actionListener ="#{queuebean.process}"/>
+            <h:panelGrid cellpadding="5">
+                <h:outputText value="_7"/>
+            </h:panelGrid>
+        </h:panelGrid>
+        <h:panelGrid>
+            <h:commandButton id="_8" image="resources/button2.gif" style="height:50px;width:50px;"
+                onclick="return buttonpush('_8', this, event);"
+                actionListener ="#{queuebean.process}"/>
+            <h:panelGrid cellpadding="5">
+                <h:outputText value="_8"/>
+            </h:panelGrid>
+        </h:panelGrid>
+        <h:panelGrid>
+            <h:commandButton id="_9" image="resources/button2.gif" style="height:50px;width:50px;"
+                onclick="return buttonpush('_9', this, event);"
+                actionListener ="#{queuebean.process}"/>
+            <h:panelGrid cellpadding="5">
+                <h:outputText value="_9"/>
+            </h:panelGrid>
+        </h:panelGrid>
+        <h:panelGrid>
+            <h:commandButton id="_10" image="resources/button2.gif" style="height:50px;width:50px;"
+                onclick="return buttonpush('_10', this, event);"
+                actionListener ="#{queuebean.process}"/>
+            <h:panelGrid cellpadding="5">
+                <h:outputText value="_10"/>
+            </h:panelGrid>
+        </h:panelGrid>
+        <h:panelGrid>
+            <h:commandButton id="_11" image="resources/button2.gif" style="height:50px;width:50px;"
+                onclick="return buttonpush('_11', this, event);"
+                actionListener ="#{queuebean.process}"/>
+            <h:panelGrid cellpadding="5">
+                <h:outputText value="_11"/>
+            </h:panelGrid>
+        </h:panelGrid>
+        <h:panelGrid>
+            <h:commandButton id="_12" image="resources/button2.gif" style="height:50px;width:50px;"
+                onclick="return buttonpush('_12', this, event);"
+                actionListener ="#{queuebean.process}"/>
+            <h:panelGrid cellpadding="5">
+                <h:outputText value="_12"/>
+            </h:panelGrid>
+        </h:panelGrid>
+        <h:panelGrid>
+            <h:commandButton id="_13" image="resources/button2.gif" style="height:50px;width:50px;"
+                onclick="return buttonpush('_13', this, event);"
+                actionListener ="#{queuebean.process}"/>
+            <h:panelGrid cellpadding="5">
+                <h:outputText value="_13"/>
+            </h:panelGrid>
+        </h:panelGrid>
+        <h:panelGrid>
+            <h:commandButton id="_14" image="resources/button2.gif" style="height:50px;width:50px;"
+                onclick="return buttonpush('_14', this, event);"
+                actionListener ="#{queuebean.process}"/>
+            <h:panelGrid cellpadding="5">
+                <h:outputText value="_14"/>
+            </h:panelGrid>
+        </h:panelGrid>
+        <h:panelGrid>
+            <h:commandButton id="_15" image="resources/button2.gif" style="height:50px;width:50px;"
+                onclick="return buttonpush('_15', this, event);"
+                actionListener ="#{queuebean.process}"/>
+            <h:panelGrid cellpadding="5">
+                <h:outputText value="_15"/>
+            </h:panelGrid>
+        </h:panelGrid>
+        <h:panelGrid>
+            <h:commandButton id="_16" image="resources/button2.gif" style="height:50px;width:50px;"
+                onclick="return buttonpush('_16', this, event);"
+                actionListener ="#{queuebean.process}"/>
+            <h:panelGrid cellpadding="5">
+                <h:outputText value="_16"/>
+            </h:panelGrid>
+        </h:panelGrid>
+        <h:panelGrid>
+            <h:commandButton id="_17" image="resources/button2.gif" style="height:50px;width:50px;"
+                onclick="return buttonpush('_17', this, event);"
+                actionListener ="#{queuebean.process}"/>
+            <h:panelGrid cellpadding="5">
+                <h:outputText value="_17"/>
+            </h:panelGrid>
+        </h:panelGrid>
+    </h:panelGrid>
+
+    <h:panelGrid>
+        <f:facet name="header">
+            <h:outputText value="Request Queue" styleClass="keytitle"/>
+        </f:facet>
+        <table id="queuetable" border="1">
+        <tr id="tr1">
+        </tr> 
+        </table>
+    </h:panelGrid>
+    </h:panelGrid>
+
+</h:form>
+     <p>
+     <h3> Status:</h3>
+    <textarea id="statusArea" cols="40" rows="10" readonly="readonly" />
+    </p>
+
+</h:body>
+
+</html>
diff --git a/jsf-demo/sandbox/ajax-queue/src/main/webapp/index.html b/jsf-demo/sandbox/ajax-queue/src/main/webapp/index.html
new file mode 100644
index 0000000..241e09e
--- /dev/null
+++ b/jsf-demo/sandbox/ajax-queue/src/main/webapp/index.html
@@ -0,0 +1,47 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<html>
+<header>
+<meta http-equiv="Refresh" content="0;url=home.jsf">
+</header>
+</html>
diff --git a/jsf-demo/sandbox/ajax-queue/src/main/webapp/resources/bgblack18.jpg b/jsf-demo/sandbox/ajax-queue/src/main/webapp/resources/bgblack18.jpg
new file mode 100644
index 0000000..dfc6174
Binary files /dev/null and b/jsf-demo/sandbox/ajax-queue/src/main/webapp/resources/bgblack18.jpg differ
diff --git a/jsf-demo/sandbox/ajax-queue/src/main/webapp/resources/button2.gif b/jsf-demo/sandbox/ajax-queue/src/main/webapp/resources/button2.gif
new file mode 100644
index 0000000..7556d06
Binary files /dev/null and b/jsf-demo/sandbox/ajax-queue/src/main/webapp/resources/button2.gif differ
diff --git a/jsf-demo/sandbox/ajax-queue/src/main/webapp/resources/button3.gif b/jsf-demo/sandbox/ajax-queue/src/main/webapp/resources/button3.gif
new file mode 100644
index 0000000..3f1e02b
Binary files /dev/null and b/jsf-demo/sandbox/ajax-queue/src/main/webapp/resources/button3.gif differ
diff --git a/jsf-demo/sandbox/ajax-queue/src/main/webapp/resources/stylesheet.css b/jsf-demo/sandbox/ajax-queue/src/main/webapp/resources/stylesheet.css
new file mode 100644
index 0000000..20cacfc
--- /dev/null
+++ b/jsf-demo/sandbox/ajax-queue/src/main/webapp/resources/stylesheet.css
@@ -0,0 +1,98 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+.title-panel {
+    background-image: url('bgblack18.jpg.jsf');
+    height: 80px;
+    width: 900px;
+}
+
+.title-panel-text {
+    color: white;
+    font-family: 'Georgia','Times New Roman','times',serif;
+    font-size: 24px;
+    font-weight: bold;
+}
+
+.title-panel-subtext {
+    color: white;
+    font-family: 'Georgia','Times New Roman','times',serif;
+    font-size: 14px;
+    font-style: italic
+}
+
+body {
+    font-family: Arial, Helvetica, sans-serif;
+    font-size: 12px;
+}
+
+.panel-input-border {
+    border: 2px outset blue;
+    background-color: #e0eeee;
+}
+
+.panel-data-border {
+    border: 3px outset blue;
+    background-color: #e0eeee;
+}
+
+.keytitle {
+    font-family: Arial, Helvetica, sans-serif;
+    font-size: 16px;
+    color: #330066;
+}
+
+.ticker {
+    position: relative;
+    visibility: hidden;
+    font-size: 16px;
+}
+
+.serialize-border {
+    border: 4px outset red;
+}
+
+.queueCell {
+    background-color: #00ffff;
+}
+
+.currentCell {
+    background-color: #ffff00;
+}
diff --git a/jsf-demo/sandbox/ajax-queue/src/main/webapp/resources/ui.js b/jsf-demo/sandbox/ajax-queue/src/main/webapp/resources/ui.js
new file mode 100644
index 0000000..019625a
--- /dev/null
+++ b/jsf-demo/sandbox/ajax-queue/src/main/webapp/resources/ui.js
@@ -0,0 +1,86 @@
+var disabledImage = 'resources/button3.gif';
+var enabledImage = 'resources/button2.gif';
+
+
+var errorMsg = function errorMsg(data) {
+    alert("Error: "+data.status);
+};
+
+var msg = function msg(data) {
+    if (data.status === 'begin') {
+        activeCell(document.createTextNode(data.source.id));
+    } else if (data.status === 'complete') {
+        removeCell(document.createTextNode(data.source.id));
+    }
+};
+
+
+function buttonpush(buttonName, element, event) {
+    var button = document.getElementById(buttonName);
+    if (!button.disabled) {
+        button.src = disabledImage;
+        button.disabled = true;
+    }
+    try {
+        addCell(document.createTextNode(buttonName));
+        jsf.ajax.request(element, event, {execute: buttonName, render: buttonName, onevent: msg, onerror: errorMsg});
+    } catch (ex) {
+        // Handle programming errors here
+        alert(ex);
+    }
+    return false;
+} 
+
+function addCell(cellData) {
+    var cell = document.getElementById("tr1").insertCell(0);
+    cell.setAttribute("height", "50px");
+    cell.setAttribute("width", "50px");
+    cell.innerHTML = cellData.nodeValue;
+    cell.className = "queueCell";
+}
+
+function activeCell(cellData) {
+    var row = document.getElementById("tr1");
+    var cells = row.getElementsByTagName("td");
+    if (typeof cells != 'undefined' || cells != null) {
+        for (var i=0; i<cells.length; i++) {
+            if (cells[i].firstChild.nodeValue == cellData.nodeValue) {
+                cells[i].className = "currentCell";
+                break;
+            }
+        }
+    }
+}
+
+function removeCell(cellData) {
+    var row = document.getElementById("tr1");
+    var cells = row.getElementsByTagName("td");
+    if (typeof cells != 'undefined' || cells != null) {
+        for (var i=0; i<cells.length; i++) {
+            if (cells[i].firstChild.nodeValue == cellData.nodeValue) {
+                row.deleteCell(i);
+                var button = document.getElementById(cellData.nodeValue);
+                button.disabled = false;
+                button.src = enabledImage;
+                break;
+            }
+        }
+    }
+}
+
+
+var statusUpdate = function statusUpdate(data) {
+    var statusArea = document.getElementById("statusArea");
+    var text = statusArea.value;
+    text = text + "Name: "+data.source.id;
+    if (data.type === "event") {
+        text = text +" Event: "+data.status+"\n";
+    } else {  // otherwise, it's an error
+        text = text + " Error: "+data.status+"\n";
+    }
+    statusArea.value = text;
+};
+
+// Setup the statusUpdate function to hear all events on the page
+jsf.ajax.addOnEvent(statusUpdate);
+jsf.ajax.addOnError(statusUpdate);
diff --git a/jsf-demo/sandbox/ajax-request/build.xml b/jsf-demo/sandbox/ajax-request/build.xml
new file mode 100644
index 0000000..5e97cb0
--- /dev/null
+++ b/jsf-demo/sandbox/ajax-request/build.xml
@@ -0,0 +1,132 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project name="ajax-request" default="build" basedir=".">
+
+
+    <property file="${user.home}/build.properties"/>
+    <property file="../../../build.properties"/>
+    <import file="${jsf.build.home}/common/ant/common.xml"/>
+
+    <!-- Configure the context path for this application -->
+    <property name="context.path" value="/ajax-request"/>
+    <property name="example" value="ajax-request"/>
+    <property name="build" value="${basedir}/build"/>
+
+    <path id="classpath">       
+        <pathelement location="${javax.faces-api.jar}"/>
+        <pathelement location="${javax.faces.jar}"/>
+        <path refid="compile.classpath"/>
+    </path>
+    
+    <target name="init" depends="check.changes">
+        <tstamp/>
+    </target>
+
+    <target name="check.changes">
+        <uptodate property="skip.build"
+                  targetfile="${build}/last-build">
+            <srcfiles dir="${basedir}">
+                <include name="src/**/*.*"/>
+            </srcfiles>
+        </uptodate>
+    </target>
+
+    <target name="clean">
+        <delete dir="${build}"/>
+    </target>    
+
+   <target name="prepare" depends="init"
+            description="Create build directories.">
+        <mkdir dir="${build}/${example}"/>
+        <mkdir dir="${build}/${example}/WEB-INF"/>
+        <mkdir dir="${build}/${example}/WEB-INF/classes"/>
+    </target>
+
+
+    <target name="build" unless="skip.build" depends="prepare"
+            description="Compile Java files and copy static files.">
+        <touch file="${build}/last-build"/>
+        <jsf.javac srcdir="src/main/java"
+                   destdir="${build}/${example}/WEB-INF/classes">
+            <classpath>
+                <path refid="classpath"/>
+            </classpath>
+        </jsf.javac>
+        <copy todir="${build}/${example}/WEB-INF">
+            <fileset dir="src/main/webapp/WEB-INF">
+                <include name="*.tld"/>
+                <include name="*.xml"/>
+            </fileset>
+        </copy>
+
+        <copy todir="${build}/${example}/">
+            <fileset dir="src/main/webapp">
+                <include name="*.xhtml"/>
+                <include name="*.html"/>
+                <include name="*.gif"/>
+                <include name="*.jpg"/>
+                <include name="*.jsp"/>
+                <include name="*.xml"/>
+            </fileset>
+        </copy>
+        <copy todir="${build}/${example}/WEB-INF/classes/ajaxrequest">
+            <fileset dir="src/main/java/ajaxrequest">
+                <include name="*properties"/>
+            </fileset>
+        </copy>
+        
+        <copy todir="${build}/${example}/resources">
+            <fileset dir="src/main/webapp/resources"/>
+        </copy>
+
+        <jsf.war basedir="${build}"
+                 archive-name="${example}"
+                 webxml="${build}/${example}/WEB-INF/web.xml">
+            <archive-elements>
+                <zipfileset dir="${build}/${example}"/>
+            </archive-elements>
+        </jsf.war>
+    </target>
+
+</project> 
+ 
diff --git a/jsf-demo/sandbox/ajax-request/pom.xml b/jsf-demo/sandbox/ajax-request/pom.xml
new file mode 100644
index 0000000..b676e5c
--- /dev/null
+++ b/jsf-demo/sandbox/ajax-request/pom.xml
@@ -0,0 +1,165 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>com.sun.faces.extensions</groupId>
+  <artifactId>ajax-request</artifactId>
+  <packaging>war</packaging>
+  <name>ajax-request</name>
+  <url>https://mojarra.dev.java.net/</url>
+  <description>Ajax Request JSF Demo</description>
+  <version>0.1</version>
+
+  <scm>
+    <connection>scm:svn:http://jsf-extensions.dev.java.net/svn/jsf-extensions/trunk</connection>
+    <developerConnection>scm:svn:https://jsf-extensions.dev.java.net/svn/jsf-extensions/trunk</developerConnection>
+    <url>https://jsf-extensions.dev.java.net/source/browse/jsf-extensions/</url>
+  </scm>
+
+  <build>
+    <defaultGoal>install</defaultGoal>
+    <sourceDirectory>src/main/java</sourceDirectory>
+    <resources>
+      <resource>
+        <directory>src/main/resources</directory>
+        <targetPath>resources</targetPath>
+        <includes>
+            <include>*.taglib.xml</include>
+            <include>faces-config.xml</include>
+            <include>*.js</include>
+        </includes>
+     </resource>
+   </resources>
+    <finalName>ajax-request</finalName>
+    <plugins>
+       <plugin>
+         <artifactId>maven-antrun-plugin</artifactId>
+         <executions>
+           <execution>
+             <id>source</id>
+             <phase>generate-resources</phase>
+             <configuration>
+               <tasks>
+                 <echo message="Copying properties files to WEB-INF/classes" />
+                 <copy todir="target/${project.build.finalName}/WEB-INF/classes">
+                   <fileset dir="src/main/java">
+                     <include name="**/*.properties" />
+                   </fileset>
+                 </copy>
+               </tasks>
+             </configuration>
+             <goals>
+               <goal>run</goal>
+             </goals>
+           </execution>
+         </executions>
+       </plugin>
+
+            <plugin>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>RELEASE</version>
+                <configuration>
+                    <source>1.5</source>
+                    <target>1.5</target>
+                </configuration>
+            </plugin>
+        </plugins>
+  </build>
+
+
+  <repositories>
+    <repository>
+      <snapshots />
+      <id>codecaus</id>
+      <name>codehaus</name>
+      <url>http://repository.codehaus.org</url>
+    </repository>
+    <repository>
+      <snapshots />
+      <id>java.net</id>
+      <name>Java.net Maven 1.x Repository for external projects</name>
+      <url>https://maven-repository.dev.java.net/nonav/repository</url>
+      <layout>legacy</layout>
+    </repository>
+    <repository>
+      <snapshots />
+      <id>java.net.shared</id>
+      <name>Java.net Maven 1.x Repository for glassfish dependencies</name>
+      <url>http://download.java.net/javaee5/external/shared</url>
+      <layout>legacy</layout>
+    </repository>
+    <repository>
+      <snapshots />
+      <id>ibiblio</id>
+      <url>http://www.ibiblio.org/maven2/</url>
+    </repository>
+  </repositories>
+
+  <dependencies>
+        <dependency>
+            <groupId>javax</groupId>
+            <artifactId>javaee-api</artifactId>
+            <version>6.0</version>
+            <scope>provided</scope>
+        </dependency>
+  </dependencies>
+  <reporting>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-project-info-reports-plugin</artifactId>
+        <reportSets><reportSet /></reportSets>
+      </plugin>
+       <plugin>
+         <groupId>org.apache.maven.plugins</groupId>
+         <artifactId>maven-compiler-plugin</artifactId>
+         <configuration>
+           <source>1.5</source>
+           <target>1.5</target>
+         </configuration>
+       </plugin>
+    </plugins>
+  </reporting>
+
+</project>
diff --git a/jsf-demo/sandbox/ajax-request/src/main/java/ajaxrequest/Bean.java b/jsf-demo/sandbox/ajax-request/src/main/java/ajaxrequest/Bean.java
new file mode 100644
index 0000000..0727ec1
--- /dev/null
+++ b/jsf-demo/sandbox/ajax-request/src/main/java/ajaxrequest/Bean.java
@@ -0,0 +1,149 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package ajaxrequest;
+
+import javax.faces.component.UICommand;
+import javax.faces.component.UIComponent;
+import javax.faces.component.UIForm;
+import javax.faces.component.UIOutput;
+import javax.faces.component.UIPanel;
+import javax.faces.component.UISelectBoolean;
+import javax.faces.component.UIViewRoot;
+import javax.faces.context.FacesContext;
+import javax.faces.event.ActionEvent;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Random;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import java.io.Serializable;
+
+/**
+ * <p>This bean has the methods that are used to illustrate
+ *  the <code>JSF 2.0 ajaxRequest</code> event.  * <p/>
+ *
+ */
+
+public class Bean implements Serializable {
+
+    private static final long serialVersionUID = 4987827757077958133L;
+
+    private static final Logger LOGGER = Logger.getLogger("ajaxrequest");
+    
+    //
+    // Relationship Instance Variables
+    //
+    
+    private Map<String, String> options = null;
+
+    //
+    // Constructors
+    //
+    
+    public Bean() {
+        loadOptions();
+    }
+    
+    private String fireOptions = null;
+    
+    public void setFireOptions(String fireOptions) {
+        this.fireOptions = fireOptions;
+    }
+    
+    public String getFireOptions() {
+        return fireOptions;
+    }
+    
+    public void getOptions(ActionEvent ae) {
+        UICommand command = (UICommand)ae.getComponent();
+        fireOptions = (String)options.get(command.getId());
+        displayOptions();
+    }
+    
+    public void reset(ActionEvent ae) {
+        FacesContext context = FacesContext.getCurrentInstance();
+        UIForm form = (UIForm)context.getViewRoot().findComponent("form");
+        if (form != null) {
+            UIComponent component = form.findComponent("_0");
+            setInitialRender(component);
+        }
+        fireOptions = null;
+    }
+    
+    private void loadOptions() {
+        options = new HashMap<String, String>();
+        options.put("ajax1", "{execute:'@this _1',render:'@form'}");
+        options.put("ajax2", "{execute:'ajax2 _6 _10',render:'form'}");
+        options.put("ajax3", "{execute:'ajax3 _5',render:'form'}");
+        options.put("ajax4", "{execute:'ajax4 _4 _9',render:'@form'}");
+        options.put("ajax5", "{execute:'ajax5',render:'_1'}");
+        options.put("ajax6", "{execute:'ajax6',render:'_6'}");
+        options.put("ajax7", "{execute:'@this _10',render:'_5'}");
+        options.put("ajax8", "{execute:'@this _1 _2 _3 _4',render:'_1 _2 _3 _4'}"); 
+        options.put("ajax9", "{execute:'@all',render:'@all'}"); 
+        options.put("ajax10", "{execute:'@none',render:'@all'}"); 
+        options.put("ajax11", "{execute:'@all',render:'@none'}"); 
+    }
+    
+    private void displayOptions() {
+        FacesContext context = FacesContext.getCurrentInstance();
+        UIForm form = (UIForm)context.getViewRoot().findComponent("form");
+        UIComponent component = form.findComponent("optionsTitle");
+        component.setRendered(true);
+        component = form.findComponent("fireOptions");
+        component.setRendered(true);
+    }
+    
+    private void setInitialRender(UIComponent component) {
+        Iterator<UIComponent> kids = component.getChildren().iterator();
+        while (kids.hasNext()) {
+            UIComponent kid = kids.next();
+            setInitialRender(kid);
+        }
+        if (component.getAttributes().get("styleClass") != null) {
+            component.getAttributes().remove("styleClass");
+        }
+    }
+}
diff --git a/jsf-demo/sandbox/ajax-request/src/main/java/ajaxrequest/Button.java b/jsf-demo/sandbox/ajax-request/src/main/java/ajaxrequest/Button.java
new file mode 100644
index 0000000..2155561
--- /dev/null
+++ b/jsf-demo/sandbox/ajax-request/src/main/java/ajaxrequest/Button.java
@@ -0,0 +1,89 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package ajaxrequest;
+
+import java.io.IOException;
+import java.util.List;
+
+import javax.faces.component.UICommand;
+import javax.faces.context.FacesContext;
+
+
+/**
+ * <p><strong>Button</strong> is a {@link UIComponent} that manages the
+ * layout of its child components.</p>
+ */
+
+public class Button extends UICommand {
+    
+    public static final String COMPONENT_TYPE = "ajaxrequest.Button";
+    
+    // ------------------------------------------------------------ Constructors
+    
+    /**
+     * <p>Create a new {@link Button} instance with default property
+     * values.</p>
+     */
+    public Button() {
+        setRendererType("javax.faces.Button");
+    }
+    
+    public void decode(FacesContext context) {
+        super.decode(context);
+        getAttributes().put("styleClass", "execute");
+    }
+    
+    public void encodeBegin(FacesContext context) throws IOException {
+        String style = (String)getAttributes().get("styleClass");
+        if (style == null) {
+            getAttributes().put("styleClass", "initial-render");
+        } else {
+            if (style.equals("execute")) {
+                getAttributes().put("styleClass", "execute-render");
+            } else if (style.equals("execute-norender")) {
+                getAttributes().put("styleClass", "execute-norender");
+            } else {
+                getAttributes().put("styleClass", "render");
+            }
+        }
+        super.encodeBegin(context);
+    }
+}
diff --git a/jsf-demo/sandbox/ajax-request/src/main/java/ajaxrequest/Panel.java b/jsf-demo/sandbox/ajax-request/src/main/java/ajaxrequest/Panel.java
new file mode 100644
index 0000000..2d531b7
--- /dev/null
+++ b/jsf-demo/sandbox/ajax-request/src/main/java/ajaxrequest/Panel.java
@@ -0,0 +1,83 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package ajaxrequest;
+
+import java.io.IOException;
+import java.util.List;
+
+import javax.faces.component.UIPanel;
+import javax.faces.context.FacesContext;
+
+public class Panel extends UIPanel {
+    
+    public static final String COMPONENT_TYPE = "ajaxrequest.Panel";
+    
+    // ------------------------------------------------------------ Constructors
+    
+    /**
+     * <p>Create a new {@link Panel} instance with default property
+     * values.</p>
+     */
+    public Panel() {
+        setRendererType("javax.faces.Grid");
+    }
+    
+    public void decode(FacesContext context) {
+        super.decode(context);
+        getAttributes().put("styleClass", "execute");
+    }
+    
+    public void encodeBegin(FacesContext context) throws IOException {
+        String style = (String)getAttributes().get("styleClass");
+        if (style == null) {
+            getAttributes().put("styleClass", "initial-render");
+        } else {
+            if (style.equals("execute")) {
+                getAttributes().put("styleClass", "execute-render");
+            } else if (style.equals("execute-norender")) {
+                getAttributes().put("styleClass", "execute-norender");
+            } else {
+                getAttributes().put("styleClass", "render");
+            }
+        }
+        super.encodeBegin(context);
+    }
+}
diff --git a/jsf-demo/sandbox/ajax-request/src/main/java/ajaxrequest/RequestPhaseListener.java b/jsf-demo/sandbox/ajax-request/src/main/java/ajaxrequest/RequestPhaseListener.java
new file mode 100644
index 0000000..977fcec
--- /dev/null
+++ b/jsf-demo/sandbox/ajax-request/src/main/java/ajaxrequest/RequestPhaseListener.java
@@ -0,0 +1,114 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package ajaxrequest;
+
+import java.util.Iterator;
+
+import javax.faces.component.UIComponent;
+import javax.faces.component.UIForm;
+import javax.faces.context.FacesContext;
+import javax.faces.event.PhaseEvent;
+import javax.faces.event.PhaseId;
+import javax.faces.event.PhaseListener;
+
+/**
+ * This <code>PhaseListener</code> executes before Apply Request Values 
+ * Phase of the request processing lifecycle.  
+ */
+public class RequestPhaseListener implements PhaseListener {
+
+
+    public RequestPhaseListener() {
+    }
+
+    public void afterPhase(PhaseEvent event) {
+    }
+
+    public void beforePhase(PhaseEvent event) {
+        FacesContext context = event.getFacesContext();
+        if (context.getPartialViewContext().getExecuteIds().isEmpty()) {
+            context.getPartialViewContext().getExecuteIds().add("ajax10");
+        }
+        if (context.getPartialViewContext().getRenderIds().isEmpty()) {
+            context.getPartialViewContext().getRenderIds().add("form");
+            UIForm form = (UIForm)context.getViewRoot().findComponent("form");
+            if (form != null) {
+                UIComponent component = form.findComponent("_0");
+                setInitialRender(component);
+            }
+        }
+        if (context.getPartialViewContext().isExecuteAll() &&
+            context.getPartialViewContext().getRenderIds().isEmpty()) {
+            context.getPartialViewContext().getRenderIds().add("form");
+            UIForm form = (UIForm)context.getViewRoot().findComponent("form");
+            if (form != null) {
+                UIComponent component = form.findComponent("_0");
+                setExecuteNoRender(component);
+            }
+        }
+
+    }
+
+    public PhaseId getPhaseId() {
+        return PhaseId.APPLY_REQUEST_VALUES;
+    }
+
+    private void setExecuteNoRender(UIComponent component) {
+        Iterator<UIComponent> kids = component.getChildren().iterator();
+        while (kids.hasNext()) {
+            UIComponent kid = kids.next();
+            setExecuteNoRender(kid);
+        }
+        component.getAttributes().put("styleClass", "execute-norender");
+    }
+
+    private void setInitialRender(UIComponent component) {
+        Iterator<UIComponent> kids = component.getChildren().iterator();
+        while (kids.hasNext()) {
+            UIComponent kid = kids.next();
+            setInitialRender(kid);
+        }
+        if (component.getAttributes().get("styleClass") != null) {
+            component.getAttributes().remove("styleClass");
+        }
+    }
+
+}
diff --git a/jsf-demo/sandbox/ajax-request/src/main/java/ajaxrequest/Resources.properties b/jsf-demo/sandbox/ajax-request/src/main/java/ajaxrequest/Resources.properties
new file mode 100644
index 0000000..4cab04e
--- /dev/null
+++ b/jsf-demo/sandbox/ajax-request/src/main/java/ajaxrequest/Resources.properties
@@ -0,0 +1,41 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
+instructions=The <b>View</b> area is a view of PanelGrid and CommandButton components. Initially, each of these components has a green border, meaning that all these components have gone through the initial render phase of the lifecycle. <p>Each of the <i>ajaxRequest</i> buttons causes a different <i>jsf.ajax.request</i> event to occur, affecting one or more components in the view. The color of a component may change color depending on what lifecycle phase the component was processed.<p> [...]
diff --git a/jsf-demo/sandbox/ajax-request/src/main/webapp/META-INF/context.xml b/jsf-demo/sandbox/ajax-request/src/main/webapp/META-INF/context.xml
new file mode 100644
index 0000000..3441ef8
--- /dev/null
+++ b/jsf-demo/sandbox/ajax-request/src/main/webapp/META-INF/context.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<Context path="/jsf-fire-ajax-transaction"/>
diff --git a/jsf-demo/sandbox/ajax-request/src/main/webapp/WEB-INF/demo.taglib.xml b/jsf-demo/sandbox/ajax-request/src/main/webapp/WEB-INF/demo.taglib.xml
new file mode 100644
index 0000000..9665c05
--- /dev/null
+++ b/jsf-demo/sandbox/ajax-request/src/main/webapp/WEB-INF/demo.taglib.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE facelet-taglib PUBLIC
+  "-//Sun Microsystems, Inc.//DTD Facelet Taglib 1.0//EN"
+  "http://java.sun.com/dtd/facelet-taglib_1_0.dtd">
+
+<facelet-taglib>
+    <namespace>https://javaserverfaces.dev.java.net/demo/ajaxrequest</namespace>
+    <tag>
+        <tag-name>commandButton</tag-name>
+        <component>
+            <component-type>ajaxrequest.Button</component-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>panelGrid</tag-name>
+        <component>
+            <component-type>ajaxrequest.Panel</component-type>
+        </component>
+    </tag>
+</facelet-taglib>
+
diff --git a/jsf-demo/sandbox/ajax-request/src/main/webapp/WEB-INF/faces-config.xml b/jsf-demo/sandbox/ajax-request/src/main/webapp/WEB-INF/faces-config.xml
new file mode 100644
index 0000000..2591038
--- /dev/null
+++ b/jsf-demo/sandbox/ajax-request/src/main/webapp/WEB-INF/faces-config.xml
@@ -0,0 +1,76 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!-- =========== FULL CONFIGURATION FILE ================================== -->
+
+<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
+              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+              xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
+              version="2.0">
+    
+  <lifecycle>
+    <phase-listener>ajaxrequest.RequestPhaseListener</phase-listener>
+  </lifecycle>
+
+    <component>
+        <component-type>ajaxrequest.Panel</component-type>
+        <component-class>ajaxrequest.Panel</component-class>
+    </component>
+    
+    <component>
+        <component-type>ajaxrequest.Button</component-type>
+        <component-class>ajaxrequest.Button</component-class>
+    </component>
+    
+    <!-- managed beans  -->
+
+    <managed-bean>
+        <description>
+            The main backing file mean
+        </description>
+        <managed-bean-name>bean</managed-bean-name>
+        <managed-bean-class>ajaxrequest.Bean</managed-bean-class>
+        <managed-bean-scope>session</managed-bean-scope>
+    </managed-bean>
+    
+</faces-config>
diff --git a/jsf-demo/sandbox/ajax-request/src/main/webapp/WEB-INF/web.xml b/jsf-demo/sandbox/ajax-request/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..49ce59a
--- /dev/null
+++ b/jsf-demo/sandbox/ajax-request/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,105 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<web-app version="2.5"
+         xmlns="http://java.sun.com/xml/ns/javaee"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
+
+    <display-name></display-name>
+    <description></description>
+
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>server</param-value>
+    </context-param>
+
+    <context-param>
+        <param-name>javax.faces.DEFAULT_SUFFIX</param-name>
+        <param-value>.xhtml</param-value>
+    </context-param>
+    <context-param>
+        <param-name>facelets.DEVELOPMENT</param-name>
+        <param-value>true</param-value>
+    </context-param>
+
+    <context-param>
+        <description>
+            Set this flag to true if you want the JavaServer Faces
+            Reference Implementation to validate the XML in your
+            faces-config.xml resources against the DTD. Default
+            value is false.
+        </description>
+        <param-name>com.sun.faces.validateXml</param-name>
+        <param-value>true</param-value>
+    </context-param>
+
+    <context-param>
+        <param-name>javax.faces.FACELETS_LIBRARIES</param-name>
+        <param-value>/WEB-INF/demo.taglib.xml</param-value>
+    </context-param>
+
+    <!-- Faces Servlet -->
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+
+
+    <!-- Faces Servlet Mapping -->
+    <!-- 
+
+         This mapping identifies a jsp page as having JSF content.  If a
+         request comes to the server for foo.faces, the container will
+         send the request to the FacesServlet, which will expect a
+         corresponding foo.jsp page to exist containing the content.
+
+    -->
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+        <url-pattern>*.jsf</url-pattern>
+    </servlet-mapping>
+
+</web-app>
diff --git a/jsf-demo/sandbox/ajax-request/src/main/webapp/ajaxrequest.xhtml b/jsf-demo/sandbox/ajax-request/src/main/webapp/ajaxrequest.xhtml
new file mode 100644
index 0000000..cac54ed
--- /dev/null
+++ b/jsf-demo/sandbox/ajax-request/src/main/webapp/ajaxrequest.xhtml
@@ -0,0 +1,97 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ar="https://javaserverfaces.dev.java.net/demo/ajaxrequest"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+
+<ui:composition>
+
+<h:panelGrid border="1" columns="2" cellspacing="10" headerClass="keytitle"> 
+    <f:facet name="header">
+        <h:outputText value="Command"/>
+    </f:facet>
+    <h:commandButton id="ajax1" value="ajaxRequest [ajax1]"
+                     onclick="jsf.ajax.request(this, event, {execute:'@this _1',render:'@form'}); return false;"
+                     actionListener="#{bean.getOptions}"/>  
+    <h:commandButton id="ajax2" value="ajaxRequest [ajax2]"
+                     onclick="jsf.ajax.request(this, event, {execute:'ajax2 _6 _10',render:'form'}); return false;"
+                     actionListener="#{bean.getOptions}"/> 
+    <h:commandButton id="ajax3" value="ajaxRequest [ajax3]"
+                     onclick="jsf.ajax.request(this, event, {execute:'ajax3 _5',render:'form'}); return false;"
+                     actionListener="#{bean.getOptions}"/> 
+    <h:commandButton id="ajax4" value="ajaxRequest [ajax4]"
+                     onclick="jsf.ajax.request(this, event, {execute:'ajax4 _4 _9',render:'form'}); return false;"
+                     actionListener="#{bean.getOptions}"/>
+    <h:commandButton id="ajax5" value="ajaxRequest [ajax5]"
+                     onclick="jsf.ajax.request(this, event,
+                         {execute:'ajax5',render:'_1 optionsTitle fireOptions'}); return false;"
+                     actionListener="#{bean.getOptions}"/>
+    <h:commandButton id="ajax6" value="ajaxRequest [ajax6]"
+                     onclick="jsf.ajax.request(this, event,
+                         {execute:'ajax6',render:'_6 optionsTitle fireOptions'}); return false;"
+                     actionListener="#{bean.getOptions}"/>
+    <h:commandButton id="ajax7" value="ajaxRequest [ajax7]"
+                     onclick="jsf.ajax.request(this, event,
+                         {execute:'@this _10',render:'_5 optionsTitle fireOptions'}); return false;"
+                     actionListener="#{bean.getOptions}"/> 
+    <h:commandButton id="ajax8" value="ajaxRequest [ajax8]"
+                     onclick="jsf.ajax.request(this, event,
+                         {execute:'@this _1 _2 _3 _4',render:'_1 _2 _3 _4 optionsTitle fireOptions'}); return false;"
+                     actionListener="#{bean.getOptions}"/> 
+    <h:commandButton id="ajax9" value="ajaxRequest [ajax9]"
+                     onclick="jsf.ajax.request(this, event, {execute:'@all',render:'@all'}); return false;"
+                     actionListener="#{bean.getOptions}"/>  
+    <h:commandButton id="ajax10" value="ajaxRequest [ajax10]"
+                     onclick="jsf.ajax.request(this, event, {execute:'@none',render:'@all'}); return false;"
+                     actionListener="#{bean.getOptions}"/>  
+    <h:commandButton id="ajax11" value="ajaxRequest [ajax11]"
+                     onclick="jsf.ajax.request(this, event, {execute:'@all',render:'@none'}); return false;"
+                     actionListener="#{bean.getOptions}"/>  
+</h:panelGrid>
+
+
+</ui:composition>
+
+</html>
diff --git a/jsf-demo/sandbox/ajax-request/src/main/webapp/colorKey.xhtml b/jsf-demo/sandbox/ajax-request/src/main/webapp/colorKey.xhtml
new file mode 100644
index 0000000..48abafc
--- /dev/null
+++ b/jsf-demo/sandbox/ajax-request/src/main/webapp/colorKey.xhtml
@@ -0,0 +1,85 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ar="https://javaserverfaces.dev.java.net/demo/ajaxrequest"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+
+<ui:composition>
+
+<f:loadBundle basename="ajaxrequest.Resources" var="bundle"/>
+<h:panelGrid cellspacing="30" columns="2">
+    <h:panelGrid border="1">
+        <f:facet name="header">
+            <h:outputText value="Color Key" styleClass="keytitle"/>
+        </f:facet>
+        <h:panelGrid columns="3">
+            <h:panelGrid styleClass="initial-render">
+                <f:facet name="header">
+                    <h:outputText value="Initial Render" styleClass="keytitle"/>
+                </f:facet>
+            </h:panelGrid>
+            <h:panelGrid styleClass="execute">
+                <f:facet name="header">
+                    <h:outputText value="Execute Phase" styleClass="keytitle"/>
+                </f:facet>
+            </h:panelGrid>
+            <h:panelGrid styleClass="render">
+                <f:facet name="header">
+                    <h:outputText value="Render Phase" styleClass="keytitle"/>
+                </f:facet>
+            </h:panelGrid>
+        </h:panelGrid>
+    </h:panelGrid>
+    <h:panelGrid border="1">
+        <f:facet name="header">
+            <h:outputText value="Instructions" styleClass="keytitle"/>
+        </f:facet>
+        <h:outputText value="#{bundle.instructions}" escape="false"/>
+    </h:panelGrid>
+</h:panelGrid>
+
+</ui:composition>
+
+</html>
diff --git a/jsf-demo/sandbox/ajax-request/src/main/webapp/componentMap.xhtml b/jsf-demo/sandbox/ajax-request/src/main/webapp/componentMap.xhtml
new file mode 100644
index 0000000..2fbc334
--- /dev/null
+++ b/jsf-demo/sandbox/ajax-request/src/main/webapp/componentMap.xhtml
@@ -0,0 +1,83 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ar="https://javaserverfaces.dev.java.net/demo/ajaxrequest"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+
+<ui:composition>
+
+<h:panelGrid border="1" headerClass="keytitle">
+    <f:facet name="header">
+        <h:outputText value="View"/>
+    </f:facet>
+
+    <ar:panelGrid id="_0" border="1" columns="5">
+        <f:facet name="header">
+            <h:outputText value="_0"/>
+        </f:facet>
+        <ar:commandButton id="_1" value="_1" style="height:40px;width:40px;"/>
+        <ar:commandButton id="_2" value="_2" style="height:40px;width:40px;"/>
+        <ar:commandButton id="_3" value="_3" style="height:40px;width:40px;"/>
+        <ar:commandButton id="_4" value="_4" style="height:40px;width:40px;"/>
+        <ar:panelGrid id="_5" border="1" columns="2">
+            <f:facet name="header">
+                <h:outputText value="_5"/>
+            </f:facet>
+            <ar:panelGrid id="_6" border="1">
+                <f:facet name="header">
+                    <h:outputText value="_6"/>
+                </f:facet>
+                <ar:commandButton id="_7" value="_7" style="height:40px;width:40px;"/>
+                <ar:commandButton id="_8" value="_8" style="height:40px;width:40px;"/>
+            </ar:panelGrid>
+            <ar:commandButton id="_9" value="_9" style="height:40px;width:40px;"/>
+            <ar:commandButton id="_10" value="_10" style="height:40px;width:40px;"/>
+        </ar:panelGrid>
+    </ar:panelGrid>
+</h:panelGrid>
+
+</ui:composition>
+
+</html>
diff --git a/jsf-demo/sandbox/ajax-request/src/main/webapp/home.xhtml b/jsf-demo/sandbox/ajax-request/src/main/webapp/home.xhtml
new file mode 100644
index 0000000..8899dc9
--- /dev/null
+++ b/jsf-demo/sandbox/ajax-request/src/main/webapp/home.xhtml
@@ -0,0 +1,90 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ar="https://javaserverfaces.dev.java.net/demo/ajaxrequest"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+<f:view contentType="text/html"/>
+
+<h:head>
+    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
+    <title>Ajax Request</title>
+</h:head>
+
+<h:body>
+
+    <h:form id="form" prependId="false">
+        <h:panelGrid styleClass="title-panel">
+            <h:outputText value="a j a x R e q u e s t" styleClass="title-panel-text"/>
+            <h:outputText value="Powered By JavaServer Faces 2.0 " styleClass="title-panel-subtext"/> 
+        </h:panelGrid>
+
+        <ui:include src="colorKey.xhtml"/>
+
+        <h:panelGrid columns="3" cellspacing="30">
+            <ui:include src="ajaxrequest.xhtml"/>
+            <ui:include src="componentMap.xhtml"/>
+            <h:panelGrid border="1" columns="2" cellspacing="40">
+                <h:commandButton id="reset" value="reset"
+                    onclick="jsf.ajax.request(this, event, {execute:'reset',render:'form'}); return false;"
+                    actionListener="#{bean.reset}"/>
+                <h:panelGrid columns="2">
+                    <h:panelGrid id="optionsTitle">
+                        <h:outputText value="Options: " styleClass="options-prompt"/>
+                    </h:panelGrid>
+                    <h:panelGrid id="fireOptions">
+                        <h:outputText value="#{bean.fireOptions}" styleClass="options"/>
+                    </h:panelGrid>
+                </h:panelGrid>
+           </h:panelGrid>
+       </h:panelGrid>
+
+       <h:outputStylesheet name="stylesheet.css" />
+       <h:outputScript library="javax.faces" name="jsf.js" target="head"/>
+   </h:form>
+
+</h:body>
+
+</html>
diff --git a/jsf-demo/sandbox/ajax-request/src/main/webapp/index.html b/jsf-demo/sandbox/ajax-request/src/main/webapp/index.html
new file mode 100644
index 0000000..241e09e
--- /dev/null
+++ b/jsf-demo/sandbox/ajax-request/src/main/webapp/index.html
@@ -0,0 +1,47 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<html>
+<header>
+<meta http-equiv="Refresh" content="0;url=home.jsf">
+</header>
+</html>
diff --git a/jsf-demo/sandbox/ajax-request/src/main/webapp/resources/redwaveani.gif b/jsf-demo/sandbox/ajax-request/src/main/webapp/resources/redwaveani.gif
new file mode 100644
index 0000000..8cb5fda
Binary files /dev/null and b/jsf-demo/sandbox/ajax-request/src/main/webapp/resources/redwaveani.gif differ
diff --git a/jsf-demo/sandbox/ajax-request/src/main/webapp/resources/stylesheet.css b/jsf-demo/sandbox/ajax-request/src/main/webapp/resources/stylesheet.css
new file mode 100644
index 0000000..8cd3c14
--- /dev/null
+++ b/jsf-demo/sandbox/ajax-request/src/main/webapp/resources/stylesheet.css
@@ -0,0 +1,252 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+.title-panel {
+    background-image: url(redwaveani.gif.jsf);
+    height: 80px;
+    width: 1380;
+}
+
+.title-panel-text {
+    color: white;
+    font-family: 'Georgia','Times New Roman','times',serif;
+    font-size: 24px;
+    font-weight: bold;
+}
+
+.title-panel-subtext {
+    color: white;
+    font-family: 'Georgia','Times New Roman','times',serif;
+    font-size: 14px;
+    font-style: italic
+}
+
+body {
+    font-family: Arial, Helvetica, sans-serif;
+    font-size: 12px;
+}
+
+td {
+    font-family: Arial, Helvetica, sans-serif;
+    font-size: 12px;
+}
+
+th {
+    font-family: Arial, Helvetica, sans-serif;
+    font-size: 12px;
+}
+
+.bodystyle {
+    font-family: Arial, Helvetica, sans-serif;
+    font-size: 12px;
+}
+
+.small {
+    font-family: Arial, Helvetica, sans-serif;
+    font-size: 9px;
+}
+
+.medium {
+    font-family: Arial, Helvetica, sans-serif;
+    font-size: 12px;
+}
+
+.maintitle {
+    font-family: Arial, Helvetica, sans-serif;
+    font-size: 14px;
+    color: #330066;
+}
+
+.subtitle {
+    font-family: Arial, Helvetica, sans-serif;
+    font-size: 12px;
+    color: #93B629;
+}
+
+.subtitlebig {
+    font-family: Arial, Helvetica, sans-serif;
+    font-size: 16px;
+    color: #93B629;
+    padding-top: 10;
+    padding-bottom: 10;
+}
+
+.big {
+    font-family: Arial, Helvetica, sans-serif;
+    font-size: 16px;
+}
+
+.xbig {
+    font-family: Arial, Helvetica, sans-serif;
+    font-size: 24px;
+}
+
+.expanded {
+    font-family: Arial, Helvetica, sans-serif;
+    font-size: 12px;
+    line-height: 24px;
+    letter-spacing: 2px;
+}
+
+.justified {
+    font-family: Arial, Helvetica, sans-serif;
+    text-align: justify;
+}
+
+.footer {
+    font-family: "Times New Roman", Times, serif;
+    font-size: 9px;
+    color: #999999;
+}
+
+.box1 {
+    padding: 3px;
+    border-width: medium;
+    border-style: solid;
+    border-color: #CCCCCC #666666 #666666 #CCCCCC;
+}
+
+.box2 {
+    font-style: italic;
+    word-spacing: 2pt;
+    padding: 3px;
+    border: 1px solid;
+}
+
+.align-left {
+    text-align: left;
+}
+
+.control-panel-border {
+    border: 5px outset red;
+}
+
+.x-button-border {
+    border: 3px outset blue;
+}
+
+.o-button-border {
+    border: 3px outset red;
+}
+
+.win-button-border {
+    border: 3px outset yellow;
+}
+
+.execute {
+    background-color: #bfefff;
+}
+
+.render {
+    border: 3px outset red;
+}
+
+.initial-render {
+    border: 3px outset green;
+}
+
+.execute-render {
+    border: 3px outset red;
+    background-color: #bfefff;
+}
+
+.execute-norender {
+    border: 3px outset green;
+    background-color: #bfefff;
+}
+
+.keytitle {
+    font-family: Arial, Helvetica, sans-serif;
+    font-size: 16px;
+    color: #330066;
+}
+
+.options-prompt {
+    font-family: Arial, Helvetica, sans-serif;
+    font-size: 16px;
+    color: blue;
+}
+.options {
+    font-family: Arial, Helvetica, sans-serif;
+    font-size: 16px;
+    color: red;
+}
+
+
+.panel-border {
+    border: 2px outset blue;
+    background-color: #c1cdcd;
+}
+
+.panel-background {
+    background-color: #7171A5;
+    border: 5px outset #71A5A5;
+    border-collapse: collapse;
+    font-family: sans-serif;
+    font-size: 14pt;
+    padding: 10px;
+}
+
+.package-selected {
+    background-color: #93B629;
+}
+
+.package-unselected {
+    background-color: #C0C0C0;
+}
+
+.option-unselected {
+    background-color: #FFFFFF;
+}
+
+.top-table {
+    padding: 0;
+    border: 0;
+    width: 660px;
+}
+
+.storeFrontCar {
+    padding: 0;    
+    border: 0;
+}
+
+.validationMessage {
+    color: red;
+}
diff --git a/jsf-demo/sandbox/ajax-tag/build.xml b/jsf-demo/sandbox/ajax-tag/build.xml
new file mode 100644
index 0000000..4d63e53
--- /dev/null
+++ b/jsf-demo/sandbox/ajax-tag/build.xml
@@ -0,0 +1,119 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project name="ajax-tag" default="build" basedir=".">
+
+
+    <property file="${user.home}/build.properties"/>
+    <property file="../../../build.properties"/>
+    <import file="${jsf.build.home}/common/ant/common.xml"/>
+
+    <!-- Configure the context path for this application -->
+    <property name="context.path" value="/ajax-tag"/>
+    <property name="example" value="ajax-tag"/>
+    <property name="build" value="${basedir}/build"/>
+
+    <path id="classpath">       
+        <pathelement location="${javax.faces-api.jar}"/>
+        <pathelement location="${javax.faces.jar}"/>
+        <path refid="compile.classpath"/>
+    </path>
+
+    <target name="clean">
+        <delete dir="${build}"/>
+    </target>    
+
+   <target name="prepare"
+            description="Create build directories.">
+        <mkdir dir="${build}/${example}"/>
+        <mkdir dir="${build}/${example}/WEB-INF"/>
+        <mkdir dir="${build}/${example}/WEB-INF/classes"/>
+    </target>
+
+
+    <target name="build" unless="skip.build" depends="prepare"
+            description="Compile Java files and copy static files.">
+        <touch file="${build}/last-build"/>
+        <jsf.javac srcdir="src/main/java"
+                   destdir="${build}/${example}/WEB-INF/classes">
+            <classpath>
+                <path refid="classpath"/>
+            </classpath>
+        </jsf.javac>
+        <copy todir="${build}/${example}/WEB-INF">
+            <fileset dir="src/main/webapp/WEB-INF">
+                <include name="*.tld"/>
+                <include name="*.xml"/>
+            </fileset>
+        </copy>
+
+        <copy todir="${build}/${example}/">
+            <fileset dir="src/main/webapp">
+                <include name="*.xhtml"/>
+                <include name="*.html"/>
+                <include name="*.gif"/>
+                <include name="*.jpg"/>
+                <include name="*.jsp"/>
+                <include name="*.xml"/>
+            </fileset>
+        </copy>
+        <copy todir="${build}/${example}/WEB-INF/classes">
+            <fileset dir="src/main/java">
+                <include name="*properties"/>
+            </fileset>
+        </copy>
+        
+        <copy todir="${build}/${example}/resources">
+            <fileset dir="src/main/webapp/resources"/>
+        </copy>
+
+        <jsf.war basedir="${build}"
+                 archive-name="${example}"
+                 webxml="${build}/${example}/WEB-INF/web.xml">
+            <archive-elements>
+                <zipfileset dir="${build}/${example}"/>
+            </archive-elements>
+        </jsf.war>
+    </target>
+
+</project> 
+ 
diff --git a/jsf-demo/sandbox/ajax-tag/pom.xml b/jsf-demo/sandbox/ajax-tag/pom.xml
new file mode 100644
index 0000000..65cf136
--- /dev/null
+++ b/jsf-demo/sandbox/ajax-tag/pom.xml
@@ -0,0 +1,165 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>com.sun.faces.extensions</groupId>
+  <artifactId>declarative-ajax</artifactId>
+  <packaging>war</packaging>
+  <name>declarative-ajax</name>
+  <url>https://mojarra.dev.java.net/</url>
+  <description>Ajax Request JSF Demo</description>
+  <version>0.1</version>
+
+  <scm>
+    <connection>scm:svn:http://jsf-extensions.dev.java.net/svn/jsf-extensions/trunk</connection>
+    <developerConnection>scm:svn:https://jsf-extensions.dev.java.net/svn/jsf-extensions/trunk</developerConnection>
+    <url>https://jsf-extensions.dev.java.net/source/browse/jsf-extensions/</url>
+  </scm>
+
+  <build>
+    <defaultGoal>install</defaultGoal>
+    <sourceDirectory>src/main/java</sourceDirectory>
+    <resources>
+      <resource>
+        <directory>src/main/resources</directory>
+        <targetPath>resources</targetPath>
+        <includes>
+            <include>*.taglib.xml</include>
+            <include>faces-config.xml</include>
+            <include>*.js</include>
+        </includes>
+     </resource>
+   </resources>
+    <finalName>declarative-ajax</finalName>
+    <plugins>
+       <plugin>
+         <artifactId>maven-antrun-plugin</artifactId>
+         <executions>
+           <execution>
+             <id>source</id>
+             <phase>generate-resources</phase>
+             <configuration>
+               <tasks>
+                 <echo message="Copying properties files to WEB-INF/classes" />
+                 <copy todir="target/${project.build.finalName}/WEB-INF/classes">
+                   <fileset dir="src/main/java">
+                     <include name="**/*.properties" />
+                   </fileset>
+                 </copy>
+               </tasks>
+             </configuration>
+             <goals>
+               <goal>run</goal>
+             </goals>
+           </execution>
+         </executions>
+       </plugin>
+
+            <plugin>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>RELEASE</version>
+                <configuration>
+                    <source>1.5</source>
+                    <target>1.5</target>
+                </configuration>
+            </plugin>
+        </plugins>
+  </build>
+
+
+  <repositories>
+    <repository>
+      <snapshots />
+      <id>codecaus</id>
+      <name>codehaus</name>
+      <url>http://repository.codehaus.org</url>
+    </repository>
+    <repository>
+      <snapshots />
+      <id>java.net</id>
+      <name>Java.net Maven 1.x Repository for external projects</name>
+      <url>https://maven-repository.dev.java.net/nonav/repository</url>
+      <layout>legacy</layout>
+    </repository>
+    <repository>
+      <snapshots />
+      <id>java.net.shared</id>
+      <name>Java.net Maven 1.x Repository for glassfish dependencies</name>
+      <url>http://download.java.net/javaee5/external/shared</url>
+      <layout>legacy</layout>
+    </repository>
+    <repository>
+      <snapshots />
+      <id>ibiblio</id>
+      <url>http://www.ibiblio.org/maven2/</url>
+    </repository>
+  </repositories>
+
+  <dependencies>
+        <dependency>
+            <groupId>javax</groupId>
+            <artifactId>javaee-api</artifactId>
+            <version>6.0</version>
+            <scope>provided</scope>
+        </dependency>
+  </dependencies>
+  <reporting>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-project-info-reports-plugin</artifactId>
+        <reportSets><reportSet /></reportSets>
+      </plugin>
+       <plugin>
+         <groupId>org.apache.maven.plugins</groupId>
+         <artifactId>maven-compiler-plugin</artifactId>
+         <configuration>
+           <source>1.5</source>
+           <target>1.5</target>
+         </configuration>
+       </plugin>
+    </plugins>
+  </reporting>
+
+</project>
diff --git a/jsf-demo/sandbox/ajax-tag/src/main/java/declarativeajax/GreetBehavior.java b/jsf-demo/sandbox/ajax-tag/src/main/java/declarativeajax/GreetBehavior.java
new file mode 100644
index 0000000..e8505b8
--- /dev/null
+++ b/jsf-demo/sandbox/ajax-tag/src/main/java/declarativeajax/GreetBehavior.java
@@ -0,0 +1,123 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package declarativeajax;
+
+
+import javax.faces.context.FacesContext;
+import javax.faces.component.behavior.ClientBehaviorBase;
+import javax.faces.component.behavior.ClientBehaviorContext;
+import javax.faces.component.behavior.FacesBehavior;
+
+
+/**
+ * <p>A trivial Behavior implementation that shows a greeting to the
+ * user when invoked.</p>
+ */
+ at FacesBehavior(value="custom.behavior.Greet")
+public class GreetBehavior extends ClientBehaviorBase {
+
+    public GreetBehavior() {}
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getScript(ClientBehaviorContext behaviorContext) {
+
+        String name = (this.name == null) ? "World" : this.name;
+
+        StringBuilder builder = new StringBuilder(19 + name.length());
+        builder.append("alert('Hello, ");
+        builder.append(name);
+        builder.append("!');");
+
+        return builder.toString();
+    }
+
+    @Override
+    public Object saveState(FacesContext context) {
+
+        if (context == null) {
+            throw new NullPointerException();
+        }
+        if (initialStateMarked()) {
+            Object superState = super.saveState(context);
+            if (superState == null) {
+                return null;
+            } else {
+                return new Object[] { superState };
+            }
+        } else {
+            Object[] values = new Object[2];
+      
+            values[0] = super.saveState(context);
+            values[1] = name;
+
+            return values;
+        }
+
+    }
+
+
+    @Override
+    public void restoreState(FacesContext context, Object state) {
+
+        if (context == null) {
+            throw new NullPointerException();
+        }
+
+        if (state == null) {
+            return;
+        }
+        Object[] values = (Object[]) state;
+        super.restoreState(context, values[0]);
+        if (values.length == 2) {
+            name = (String)values[1];
+        }
+
+    }
+
+    private String name;
+}
diff --git a/jsf-demo/sandbox/ajax-tag/src/main/java/declarativeajax/TagBean.java b/jsf-demo/sandbox/ajax-tag/src/main/java/declarativeajax/TagBean.java
new file mode 100644
index 0000000..d9456d2
--- /dev/null
+++ b/jsf-demo/sandbox/ajax-tag/src/main/java/declarativeajax/TagBean.java
@@ -0,0 +1,318 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package declarativeajax;
+
+import javax.faces.component.UIComponent;
+import javax.faces.component.UIForm;
+import javax.faces.component.UIInput;
+import javax.faces.component.UIOutput;
+import javax.faces.component.UIPanel;
+import javax.faces.component.UISelectMany;
+import javax.faces.component.html.HtmlInputText;
+import javax.faces.component.html.HtmlSelectOneMenu;
+import javax.faces.context.ExternalContext;
+import javax.faces.context.FacesContext;
+import javax.faces.context.PartialViewContext;
+import javax.faces.event.ActionEvent;
+import javax.faces.event.AjaxBehaviorEvent;
+import javax.faces.event.ValueChangeEvent;
+import javax.faces.model.SelectItem;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.SessionScoped;
+
+import java.io.Serializable;
+import java.util.Arrays;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+/**
+ * <p>This bean has the methods that are used to illustrate
+ *  the <code>JSF 2.0 declarative ajax</code>.  * <p/>
+ *
+ */
+
+ at ManagedBean(name="ajaxtagbean")
+ at SessionScoped
+public class TagBean implements Serializable {
+    
+    private static final long serialVersionUID = 1962330230278633796L;
+
+    private static final Logger LOGGER = Logger.getLogger("declarativeajax");
+    
+    //
+    // Relationship Instance Variables
+    //
+
+    private Map<String,String> stateMap = null;
+
+    private List stateOptions = null;
+
+    // Status message to display in response to action events
+    private List<StatusMessage> statusMessages= new ArrayList<StatusMessage>();
+
+    //
+    // Constructors
+    //
+    
+    public TagBean() {
+        stateMap = new HashMap<String,String>();
+        stateMap.put("CA", "California");
+        stateMap.put("CT", "Connecticut");
+        stateMap.put("MA", "Massachusetts");
+        stateMap.put("NJ", "New Jersey");
+        stateMap.put("NY", "New York");
+
+        stateOptions = new ArrayList();
+        stateOptions.add(new SelectItem("CA","CA","CA"));
+        stateOptions.add(new SelectItem("CT","CT","CT"));
+        stateOptions.add(new SelectItem("MA","MA","MA"));
+        stateOptions.add(new SelectItem("NJ","NJ","NJ"));
+        stateOptions.add(new SelectItem("NY","NY","NY"));
+
+    }
+
+    public Collection getStateOptions() {
+        return stateOptions;
+    }
+
+
+    public void setStateOptions(Collection newOptions) {
+        stateOptions = new ArrayList(newOptions);
+    }
+
+    public void beanAction(ActionEvent event) {
+        FacesContext context = FacesContext.getCurrentInstance();
+        UIForm form = (UIForm)context.getViewRoot().findComponent("form1");
+        UIInput name = (UIInput)form.findComponent("name");
+        name.setValue("");
+        UIInput address = (UIInput)form.findComponent("address");
+        address.setValue("");
+        UIInput city = (UIInput)form.findComponent("city");
+        city.setValue("");
+        UIInput zip = (UIInput)form.findComponent("zip");
+        zip.setValue("");
+    }
+
+    public void displayState(ValueChangeEvent event) {
+        String state = (String)((HtmlSelectOneMenu)event.getComponent()).getValue();
+        FacesContext context = FacesContext.getCurrentInstance();
+        UIForm form = (UIForm)context.getViewRoot().findComponent("form1");
+        UIOutput output = (UIOutput)form.findComponent("stateout");
+        output.setValue((String)stateMap.get(state));
+    }
+
+    public void displayText(ValueChangeEvent event) {
+        String text = (String)((UIInput)event.getComponent()).getValue();
+        String label = (String)((UIInput)event.getComponent()).getAttributes().get("label"); 
+        FacesContext context = FacesContext.getCurrentInstance();
+        UIForm form = (UIForm)context.getViewRoot().findComponent("form1");
+        UIOutput output = null;
+        if ((label!=null)&&label.equals("Name")) {
+            output = (UIOutput)form.findComponent("nameout");
+            output.setValue("You entered: "+text);
+        } else if ((label!=null)&&label.equals("Address")) {
+            output = (UIOutput)form.findComponent("addressout");
+            output.setValue("You entered: "+text);
+        } else if ((label!=null)&&label.equals("City")) {
+            output = (UIOutput)form.findComponent("cityout");
+            output.setValue("You entered: "+text);
+        } else if ((label!=null)&&label.equals("Zip")) {
+            output = (UIOutput)form.findComponent("zipout");
+            output.setValue("You entered: "+text);
+        }
+    }
+
+    public void displayRadio(ValueChangeEvent event) {
+        String text = (String)((UIInput)event.getComponent()).getValue();
+        FacesContext context = FacesContext.getCurrentInstance();
+        UIForm form = (UIForm)context.getViewRoot().findComponent("form1");
+        UIOutput output = null;
+        if (text.equals("Java")) {
+            output = (UIOutput)form.findComponent("softwareLang");
+            output.setValue("Great choice!");
+        } else if (text.equals("C#")) {
+            output = (UIOutput)form.findComponent("softwareLang");
+            output.setValue("Pretty similar to Java..");
+        } else if (text.equals("C++")) {
+            output = (UIOutput)form.findComponent("softwareLang");
+            output.setValue("Great lower level OO language..");
+        } else if (text.equals("C")) {
+            output = (UIOutput)form.findComponent("softwareLang");
+            output.setValue("When you need a nice device driver...");
+        }
+    }
+
+    public void displayList(ValueChangeEvent event) {
+        String text = (String)((UIInput)event.getComponent()).getValue();
+        FacesContext context = FacesContext.getCurrentInstance();
+        UIForm form = (UIForm)context.getViewRoot().findComponent("form1");
+        UIOutput output = null;
+        if (text.equals("10")) {
+            output = (UIOutput)form.findComponent("out1");
+            output.setValue("Really?");
+        } else if (text.equals("8")) {
+            output = (UIOutput)form.findComponent("out1");
+            output.setValue("Are you sure?");
+        } else if (text.equals("all")) {
+            output = (UIOutput)form.findComponent("out1");
+            output.setValue("Correct!");
+        }
+    }
+
+    // Returns a Collection of ids for testing execute/render binding.
+    public Collection<String> getMultipleIds() {
+        return MULTIPLE_IDS;
+    }
+
+    // Used to test binding execute/render lists to String value expression
+    public String getThisKeyword() {
+        return "@this";
+    }
+
+    public void processBehavior(AjaxBehaviorEvent event) {
+        addStatusMessage("AjaxBehaviorEvent");
+    }
+
+    public void processAction(ActionEvent event) {
+        addStatusMessage("ActionEvent");
+    }
+
+    public void processValueChange(ValueChangeEvent event) {
+        addStatusMessage("ValueChangeEvent");
+    }
+
+    public void addStatusMessage(String messageType) {
+        FacesContext context = FacesContext.getCurrentInstance();
+        ExternalContext external = context.getExternalContext();
+        Map<String, String> params = external.getRequestParameterMap();
+        String source = params.get("javax.faces.source");
+        String partialEvent = params.get("javax.faces.partial.event");
+        String behaviorEvent = params.get("javax.faces.behavior.event");
+
+        StringBuilder builder = new StringBuilder();
+        builder.append("source='");
+        builder.append(source);
+        builder.append("', partial event='");
+        builder.append(partialEvent);
+        builder.append("', behavior event='");
+        builder.append(behaviorEvent);
+        builder.append("'");
+
+        String messageDetails = builder.toString();
+
+        String phase = context.getCurrentPhaseId().toString();
+
+        StatusMessage message = new StatusMessage(statusMessages.size(),
+                                                  messageType,
+                                                  messageDetails,
+                                                  phase);
+        statusMessages.add(message);
+
+        updateStatusTable(context);
+    }
+
+    public void resetStatusMessages(ActionEvent event) {
+
+        statusMessages.clear();
+
+        FacesContext context = FacesContext.getCurrentInstance();
+        updateStatusTable(context);
+    }
+
+    public void updateStatusTable(FacesContext context) {
+        PartialViewContext partial = context.getPartialViewContext();
+
+        if (partial != null) {
+            partial.getRenderIds().add("form1:statusTable");
+        }
+    }
+
+
+    public List<StatusMessage> getStatusMessages() {
+        return statusMessages;
+    }
+
+    public static class StatusMessage {
+
+        private int count;
+        private String type;
+        private String details;
+        private String phase;
+
+        public StatusMessage(int count,
+                             String type,
+                             String details,
+                             String phase) {
+            this.count = count;
+            this.type = type;
+            this.details = details;
+            this.phase = phase;
+        }
+
+        public int getCount() {
+            return count;
+        }
+
+        public String getType() {
+            return type;
+        }
+
+        public String getPhase() {
+            return phase;
+        }
+
+        public String getDetails() {
+            return details;
+        }
+    }
+
+    // Some ids for testing execute/render binding
+    private static Collection<String> MULTIPLE_IDS = 
+        Arrays.asList("@this", "formKeyword", "thisKeyword", "noneKeyword");
+}
diff --git a/jsf-demo/sandbox/ajax-tag/src/main/webapp/META-INF/context.xml b/jsf-demo/sandbox/ajax-tag/src/main/webapp/META-INF/context.xml
new file mode 100644
index 0000000..3441ef8
--- /dev/null
+++ b/jsf-demo/sandbox/ajax-tag/src/main/webapp/META-INF/context.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<Context path="/jsf-fire-ajax-transaction"/>
diff --git a/jsf-demo/sandbox/ajax-tag/src/main/webapp/WEB-INF/behavior-taglib.xml b/jsf-demo/sandbox/ajax-tag/src/main/webapp/WEB-INF/behavior-taglib.xml
new file mode 100644
index 0000000..7ebfc59
--- /dev/null
+++ b/jsf-demo/sandbox/ajax-tag/src/main/webapp/WEB-INF/behavior-taglib.xml
@@ -0,0 +1,58 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<facelet-taglib xmlns="http://java.sun.com/xml/ns/javaee"
+              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+              xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facelettaglibrary_2_0.xsd"
+              version="2.0">
+    <namespace>http://javaserverfaces.dev.java.net/demo/behavior</namespace>
+
+    <tag>
+        <tag-name>greet</tag-name>
+        <behavior>
+           <behavior-id>custom.behavior.Greet</behavior-id>
+        </behavior>
+    </tag>
+
+</facelet-taglib>
+
diff --git a/jsf-demo/sandbox/ajax-tag/src/main/webapp/WEB-INF/web.xml b/jsf-demo/sandbox/ajax-tag/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..2b4cd6b
--- /dev/null
+++ b/jsf-demo/sandbox/ajax-tag/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,106 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<web-app version="2.5"
+         xmlns="http://java.sun.com/xml/ns/javaee"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
+
+    <display-name></display-name>
+    <description></description>
+
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>server</param-value>
+    </context-param>
+
+    <context-param>
+        <param-name>javax.faces.DEFAULT_SUFFIX</param-name>
+        <param-value>.xhtml</param-value>
+    </context-param>
+
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>Development</param-value>
+    </context-param>
+
+     <context-param>
+        <param-name>javax.faces.FACELETS_LIBRARIES</param-name>
+        <param-value>/WEB-INF/behavior-taglib.xml</param-value>
+    </context-param>
+
+    <context-param>
+        <description>
+            Set this flag to true if you want the JavaServer Faces
+            Reference Implementation to validate the XML in your
+            faces-config.xml resources against the DTD. Default
+            value is false.
+        </description>
+        <param-name>com.sun.faces.validateXml</param-name>
+        <param-value>true</param-value>
+    </context-param>
+
+    <!-- Faces Servlet -->
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+
+
+    <!-- Faces Servlet Mapping -->
+    <!-- 
+
+         This mapping identifies a jsp page as having JSF content.  If a
+         request comes to the server for foo.faces, the container will
+         send the request to the FacesServlet, which will expect a
+         corresponding foo.jsp page to exist containing the content.
+
+    -->
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+        <url-pattern>*.jsf</url-pattern>
+    </servlet-mapping>
+
+</web-app>
diff --git a/jsf-demo/sandbox/ajax-tag/src/main/webapp/home.xhtml b/jsf-demo/sandbox/ajax-tag/src/main/webapp/home.xhtml
new file mode 100644
index 0000000..9a4f661
--- /dev/null
+++ b/jsf-demo/sandbox/ajax-tag/src/main/webapp/home.xhtml
@@ -0,0 +1,797 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:be="http://javaserverfaces.dev.java.net/demo/behavior">
+
+<f:view contentType="text/html"/>
+
+<h:head>
+    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
+    <title>Ajax Request</title>
+
+    <script type="text/javascript">
+        function statusUpdate(data) {
+
+            text = "Name: "+ data.source.id;
+            if (data.type === "event") {
+                text = text + ", Event: " + data.name;
+            } else {
+                text = text + ", Error: " + data.name;
+            }
+
+            window.status = text;
+        }
+    </script>
+
+</h:head>
+
+<h:body>
+
+<!-- Ajaxify Individual Controls -->
+
+    <h:form id="form1" >
+
+       <h:panelGrid columns="5">
+
+       <h:commandButton id="nonAjax" 
+                        value="Non-Ajax" 
+                        actionListener="#{ajaxtagbean.processAction}"/>
+
+       <h:commandButton id="singleAjax"
+                        value="Ajax"
+                        actionListener="#{ajaxtagbean.processAction}">
+           <f:ajax listener="#{ajaxtagbean.processBehavior}"/>
+       </h:commandButton>
+
+       <h:commandButton id="greet" 
+                        value="Greet"
+                        actionListener="#{ajaxtagbean.processAction}">
+           <be:greet/>
+       </h:commandButton>
+
+       <h:commandButton id="doubleGreet" 
+                        value="Double Greet"
+                        actionListener="#{ajaxtagbean.processAction}">
+           <be:greet/>
+           <be:greet name="Joe"/>
+       </h:commandButton>
+
+       <h:commandButton id="greetAndAjax" 
+                        value="Greet and Ajax"
+                        actionListener="#{ajaxtagbean.processAction}">
+           <be:greet/>
+           <f:ajax listener="#{ajaxtagbean.processBehavior}"/>
+       </h:commandButton>
+
+       <f:ajax listener="#{ajaxtagbean.processBehavior}">
+          <h:commandButton id="wrapped" 
+                           value="Wrapped Button"
+                           actionListener="#{ajaxtagbean.processAction}"/>
+          <h:commandButton id="wrappedRender" 
+                           value="Wrapped Button, Local Ajax"
+                           actionListener="#{ajaxtagbean.processAction}">
+              <f:ajax render="out" listener="#{ajaxtagbean.processBehavior}"/>
+          </h:commandButton>
+          <h:commandButton id="wrappedDisabled" 
+                           value="Wrapped Button, Local Disabled Ajax"
+                           actionListener="#{ajaxtagbean.processAction}">
+              <f:ajax disabled="true" listener="#{ajaxtagbean.processBehavior}"/>
+          </h:commandButton>
+          <h:commandButton id="wrappedGreet" 
+                           value="Wrapped Button, Local Greet"
+                           actionListener="#{ajaxtagbean.processAction}">
+              <be:greet/>
+          </h:commandButton>
+       </f:ajax>
+
+       <h:commandButton id="ajaxParams" 
+                        value="Ajax With Params"
+                        actionListener="#{ajaxtagbean.processAction}">
+           <f:ajax listener="#{ajaxtagbean.processBehavior}"/>
+           <f:param name="foo" value="Hello"/>
+           <f:param name="bar" value="Goodbye"/>
+           <f:param name="foobar" value="#{null}"/>
+           <f:param name="#{null}" value="should_not_be_present"/>
+       </h:commandButton>
+
+       <h:commandButton id="nonAjaxParams" 
+                        value="Non-Ajax With Params"
+                        actionListener="#{ajaxtagbean.processAction}">
+           <f:param name="foo" value="Hello"/>
+           <f:param name="bar" value="Goodbye"/>
+           <f:param name="foobar" value="#{null}"/>
+           <f:param name="#{null}" value="should_not_be_present"/>
+       </h:commandButton>
+
+       <h:commandButton id="nonAjaxParamsHandler" 
+                        value="Non-Ajax With Params With User Handler"
+                        onclick="alert('Hello from onclick')"
+                        actionListener="#{ajaxtagbean.processAction}">
+           <f:param name="foo" value="Hello"/>
+           <f:param name="bar" value="Goodbye"/>
+           <f:param name="foobar" value="#{null}"/>
+           <f:param name="#{null}" value="should_not_be_present"/>
+       </h:commandButton>
+
+       <h:commandButton id="greetParams"
+                        value="Greet With Params"
+                        actionListener="#{ajaxtagbean.processAction}">
+           <be:greet/>
+           <f:param name="foo" value="Hello"/>
+           <f:param name="bar" value="Goodbye"/>
+           <f:param name="foobar" value="#{null}"/>
+           <f:param name="#{null}" value="should_not_be_present"/>
+       </h:commandButton>
+
+       <h:commandButton id="status" 
+                        value="Ajax With OnEvent"
+                        actionListener="#{ajaxtagbean.processAction}">
+           <f:ajax onevent="statusUpdate" 
+                   onerror="statusUpdate"
+                   listener="#{ajaxtagbean.processBehavior}"/>
+       </h:commandButton>
+
+       <h:commandButton id="mouseOver" 
+                        value="MouseOver Ajax"
+                        actionListener="#{ajaxtagbean.processAction}">
+           <f:ajax listener="#{ajaxtagbean.processBehavior}"/>
+           <f:ajax event="mouseover" listener="#{ajaxtagbean.processBehavior}"/>
+       </h:commandButton>
+
+       <h:commandButton id="mouseOverJavaScript" 
+                        value="MouseOver JavaScript Ajax"
+                        actionListener="#{ajaxtagbean.processAction}"
+                        onclick="jsf.ajax.request(this,event);return false;"
+                        onmouseover="jsf.ajax.request(this,event)"/>
+
+       <h:commandButton id="disabledButton" 
+                        value="Disabled Button With Enabled Ajax"
+                        actionListener="#{ajaxtagbean.processAction}"
+                        disabled="true">
+           <f:ajax listener="#{ajaxtagbean.processBehavior}"/>
+           <f:ajax event="mouseover" listener="#{ajaxtagbean.processBehavior}"/>
+       </h:commandButton>
+
+       <h:commandButton id="disabledAjax" 
+                        value="Enabled Button With Disabled Ajax"
+                        actionListener="#{ajaxtagbean.processAction}">
+           <f:ajax disabled="true" listener="#{ajaxtagbean.processBehavior}"/>
+           <f:ajax event="mouseover" 
+                   disabled="true" 
+                   listener="#{ajaxtagbean.processBehavior}"/>
+       </h:commandButton>
+
+       <h:commandButton id="immediateAjax" 
+                        value="Immediate Ajax"
+                        actionListener="#{ajaxtagbean.processAction}">
+           <f:ajax immediate="true" listener="#{ajaxtagbean.processBehavior}"/>
+       </h:commandButton>
+
+       <h:commandButton id="immediateButton" 
+                        value="Immediate Button"
+                        actionListener="#{ajaxtagbean.processAction}"
+                        immediate="true">
+           <f:ajax listener="#{ajaxtagbean.processBehavior}"/>
+       </h:commandButton>
+
+       <h:commandButton id="immediateButtonNonImmediateAjax" 
+                        value="Immediate Button With Non-Immediate Ajax"
+                        actionListener="#{ajaxtagbean.processAction}"
+                        immediate="true">
+           <f:ajax immediate="false" listener="#{ajaxtagbean.processBehavior}"/>
+       </h:commandButton>
+
+       <h:commandButton value="No Id Ajax"
+                        actionListener="#{ajaxtagbean.processAction}">
+           <f:ajax listener="#{ajaxtagbean.processBehavior}"/>
+       </h:commandButton>
+
+       <h:commandButton value="No Id JavaScript Ajax"
+                        onclick="jsf.ajax.request(this,event);return false;"
+                        actionListener="#{ajaxtagbean.processAction}"/>
+
+       <h:commandButton value="No Id Non-Ajax"
+                        actionListener="#{ajaxtagbean.processAction}"/>
+
+       <h:commandButton id="allKeyword"
+                        value="@all"
+                        actionListener="#{ajaxtagbean.processAction}">
+           <f:ajax execute="@all" 
+                   render="@all"
+                   listener="#{ajaxtagbean.processBehavior}"/>
+       </h:commandButton>
+
+       <h:commandButton id="formKeyword"
+                        value="@form"
+                        actionListener="#{ajaxtagbean.processAction}">
+           <f:ajax execute="@form" 
+                   render="@form"
+                   listener="#{ajaxtagbean.processBehavior}"/>
+       </h:commandButton>
+
+       <h:commandButton id="thisKeyword"
+                        value="@this"
+                        actionListener="#{ajaxtagbean.processAction}">
+           <f:ajax execute="@this" 
+                   render="@this"
+                   listener="#{ajaxtagbean.processBehavior}"/>
+       </h:commandButton>
+
+       <h:commandButton id="noneKeyword"
+                        value="@none"
+                        actionListener="#{ajaxtagbean.processAction}">
+           <f:ajax execute="@none" 
+                   render="@none"
+                   listener="#{ajaxtagbean.processBehavior}"/>
+       </h:commandButton>
+
+       <h:commandButton id="multipleIds"
+                        value="Multiple Ids"
+                        actionListener="#{ajaxtagbean.processAction}">
+           <f:ajax execute="@this noneKeyword thisKeyword formKeyword" 
+                   render="@this noneKeyword thisKeyword formKeyword"
+                   listener="#{ajaxtagbean.processBehavior}"/>
+       </h:commandButton>
+
+       <h:commandButton id="multipleIdsExpression"
+                        value="Multiple Ids Expression"
+                        actionListener="#{ajaxtagbean.processAction}">
+           <f:ajax execute="#{ajaxtagbean.multipleIds}" 
+                   render="#{ajaxtagbean.multipleIds}" 
+                   listener="#{ajaxtagbean.processBehavior}"/>
+       </h:commandButton>
+
+       <h:commandButton id="multipleIdsStringExpression"
+                        value="Multiple Ids String Expression"
+                        actionListener="#{ajaxtagbean.processAction}">
+           <f:ajax execute="noneKeyword #{ajaxtagbean.thisKeyword} formKeyword" 
+                   render="noneKeyword #{ajaxtagbean.thisKeyword} formKeyword"
+                   listener="#{ajaxtagbean.processBehavior}"/>
+       </h:commandButton>
+
+       </h:panelGrid>
+
+       <h:panelGrid columns="5">
+
+       <h:commandLink id="nonAjaxLink" 
+                        value="Non-Ajax" 
+                        actionListener="#{ajaxtagbean.processAction}"/>
+
+       <h:commandLink id="singleAjaxLink"
+                        value="Ajax"
+                        actionListener="#{ajaxtagbean.processAction}">
+           <f:ajax listener="#{ajaxtagbean.processBehavior}"/>
+       </h:commandLink>
+
+       <h:commandLink id="greetLink" 
+                        value="Greet"
+                        actionListener="#{ajaxtagbean.processAction}">
+           <be:greet/>
+       </h:commandLink>
+
+       <h:commandLink id="doubleGreetLink" 
+                        value="Double Greet"
+                        actionListener="#{ajaxtagbean.processAction}">
+           <be:greet/>
+           <be:greet name="Joe"/>
+       </h:commandLink>
+
+       <h:commandLink id="greetAndAjaxLink" 
+                        value="Greet and Ajax"
+                        actionListener="#{ajaxtagbean.processAction}">
+           <be:greet/>
+           <f:ajax listener="#{ajaxtagbean.processBehavior}"/>
+       </h:commandLink>
+
+       <f:ajax listener="#{ajaxtagbean.processBehavior}">
+          <h:commandLink id="wrappedLink" 
+                           value="Wrapped Link"
+                           actionListener="#{ajaxtagbean.processAction}"/>
+          <h:commandLink id="wrappedRenderLink" 
+                           value="Wrapped Link, Local Ajax"
+                           actionListener="#{ajaxtagbean.processAction}">
+              <f:ajax render="out" listener="#{ajaxtagbean.processBehavior}"/>
+          </h:commandLink>
+          <h:commandLink id="wrappedDisabledLink" 
+                           value="Wrapped Link, Local Disabled Ajax"
+                           actionListener="#{ajaxtagbean.processAction}">
+              <f:ajax disabled="true" listener="#{ajaxtagbean.processBehavior}"/>
+          </h:commandLink>
+          <h:commandLink id="wrappedGreetLink" 
+                           value="Wrapped Link, Local Greet"
+                           actionListener="#{ajaxtagbean.processAction}">
+              <be:greet/>
+          </h:commandLink>
+       </f:ajax>
+
+       <h:commandLink id="ajaxParamsLink" 
+                        value="Ajax With Params"
+                        actionListener="#{ajaxtagbean.processAction}">
+           <f:ajax listener="#{ajaxtagbean.processBehavior}"/>
+           <f:param name="foo" value="Hello"/>
+           <f:param name="bar" value="Goodbye"/>
+           <f:param name="foobar" value="#{null}"/>
+           <f:param name="#{null}" value="should_not_be_present"/>
+       </h:commandLink>
+
+       <h:commandLink id="nonAjaxParamsLink" 
+                        value="Non-Ajax With Params"
+                        actionListener="#{ajaxtagbean.processAction}">
+           <f:param name="foo" value="Hello"/>
+           <f:param name="bar" value="Goodbye"/>
+           <f:param name="foobar" value="#{null}"/>
+           <f:param name="#{null}" value="should_not_be_present"/>
+       </h:commandLink>
+
+       <h:commandLink id="nonAjaxParamsHandlerLink" 
+                        value="Non-Ajax With Params With User Handler"
+                        onclick="alert('Hello from onclick')"
+                        actionListener="#{ajaxtagbean.processAction}">
+           <f:param name="foo" value="Hello"/>
+           <f:param name="bar" value="Goodbye"/>
+           <f:param name="foobar" value="#{null}"/>
+           <f:param name="#{null}" value="should_not_be_present"/>
+       </h:commandLink>
+
+       <h:commandLink id="greetParamsLink"
+                        value="Greet With Params"
+                        actionListener="#{ajaxtagbean.processAction}">
+           <be:greet/>
+           <f:param name="foo" value="Hello"/>
+           <f:param name="bar" value="Goodbye"/>
+           <f:param name="foobar" value="#{null}"/>
+           <f:param name="#{null}" value="should_not_be_present"/>
+       </h:commandLink>
+
+       <h:commandLink id="statusLink" 
+                        value="Ajax With OnEvent"
+                        actionListener="#{ajaxtagbean.processAction}">
+           <f:ajax onevent="statusUpdate" 
+                   onerror="statusUpdate"
+                   listener="#{ajaxtagbean.processBehavior}"/>
+       </h:commandLink>
+
+       <h:commandLink id="mouseOverLink" 
+                        value="MouseOver Ajax"
+                        actionListener="#{ajaxtagbean.processAction}">
+           <f:ajax listener="#{ajaxtagbean.processBehavior}"/>
+           <f:ajax event="mouseover" listener="#{ajaxtagbean.processBehavior}"/>
+       </h:commandLink>
+
+       <h:commandLink id="mouseOverJavaScriptLink" 
+                        value="MouseOver JavaScript Ajax"
+                        actionListener="#{ajaxtagbean.processAction}"
+                        onclick="jsf.ajax.request(this,event);return false;"
+                        onmouseover="jsf.ajax.request(this,event)"/>
+
+       <h:commandLink id="disabledLinkLink" 
+                        value="Disabled Link With Enabled Ajax"
+                        actionListener="#{ajaxtagbean.processAction}"
+                        disabled="true">
+           <f:ajax listener="#{ajaxtagbean.processBehavior}"/>
+           <f:ajax event="mouseover" listener="#{ajaxtagbean.processBehavior}"/>
+       </h:commandLink>
+
+       <h:commandLink id="disabledAjaxLink" 
+                        value="Enabled Link With Disabled Ajax"
+                        actionListener="#{ajaxtagbean.processAction}">
+           <f:ajax disabled="true" listener="#{ajaxtagbean.processBehavior}"/>
+           <f:ajax event="mouseover" 
+                   disabled="true" 
+                   listener="#{ajaxtagbean.processBehavior}"/>
+       </h:commandLink>
+
+       <h:commandLink id="immediateAjaxLink" 
+                        value="Immediate Ajax"
+                        actionListener="#{ajaxtagbean.processAction}">
+           <f:ajax immediate="true" listener="#{ajaxtagbean.processBehavior}"/>
+       </h:commandLink>
+
+       <h:commandLink id="immediateLink" 
+                        value="Immediate Link"
+                        actionListener="#{ajaxtagbean.processAction}"
+                        immediate="true">
+           <f:ajax listener="#{ajaxtagbean.processBehavior}"/>
+       </h:commandLink>
+
+       <h:commandLink id="immediateLinkNonImmediateAjax" 
+                        value="Immediate Link With Non-Immediate Ajax"
+                        actionListener="#{ajaxtagbean.processAction}"
+                        immediate="true">
+           <f:ajax immediate="false" listener="#{ajaxtagbean.processBehavior}"/>
+       </h:commandLink>
+
+       <h:commandLink value="No Id Ajax"
+                        actionListener="#{ajaxtagbean.processAction}">
+           <f:ajax listener="#{ajaxtagbean.processBehavior}"/>
+       </h:commandLink>
+
+       <h:commandLink value="No Id JavaScript Ajax"
+                        onclick="jsf.ajax.request(this,event);return false;"
+                        actionListener="#{ajaxtagbean.processAction}"/>
+
+       <h:commandLink value="No Id Non-Ajax"
+                        actionListener="#{ajaxtagbean.processAction}"/>
+
+       <h:commandLink id="allKeywordLink"
+                        value="@all"
+                        actionListener="#{ajaxtagbean.processAction}">
+           <f:ajax execute="@all" 
+                   render="@all"
+                   listener="#{ajaxtagbean.processBehavior}"/>
+       </h:commandLink>
+
+       <h:commandLink id="formKeywordLink"
+                        value="@form"
+                        actionListener="#{ajaxtagbean.processAction}">
+           <f:ajax execute="@form" 
+                   render="@form"
+                   listener="#{ajaxtagbean.processBehavior}"/>
+       </h:commandLink>
+
+       <h:commandLink id="thisKeywordLink"
+                        value="@this"
+                        actionListener="#{ajaxtagbean.processAction}">
+           <f:ajax execute="@this" 
+                   render="@this"
+                   listener="#{ajaxtagbean.processBehavior}"/>
+       </h:commandLink>
+
+       <h:commandLink id="noneKeywordLink"
+                        value="@none"
+                        actionListener="#{ajaxtagbean.processAction}">
+           <f:ajax execute="@none" 
+                   render="@none"
+                   listener="#{ajaxtagbean.processBehavior}"/>
+       </h:commandLink>
+
+       <h:commandLink id="multipleIdsLink"
+                        value="Multiple Ids"
+                        actionListener="#{ajaxtagbean.processAction}">
+           <f:ajax execute="@this noneKeyword thisKeyword formKeyword" 
+                   render="@this noneKeyword thisKeyword formKeyword"
+                   listener="#{ajaxtagbean.processBehavior}"/>
+       </h:commandLink>
+
+       <h:commandLink id="multipleIdsExpressionLink"
+                        value="Multiple Ids Expression"
+                        actionListener="#{ajaxtagbean.processAction}">
+           <f:ajax execute="#{ajaxtagbean.multipleIds}" 
+                   render="#{ajaxtagbean.multipleIds}" 
+                   listener="#{ajaxtagbean.processBehavior}"/>
+       </h:commandLink>
+
+       <h:commandLink id="multipleIdsStringExpressionLink"
+                        value="Multiple Ids String Expression"
+                        actionListener="#{ajaxtagbean.processAction}">
+           <f:ajax execute="noneKeyword #{ajaxtagbean.thisKeyword} formKeyword" 
+                   render="noneKeyword #{ajaxtagbean.thisKeyword} formKeyword"
+                   listener="#{ajaxtagbean.processBehavior}"/>
+       </h:commandLink>
+
+       </h:panelGrid>
+
+       <h:panelGrid columns="5">
+
+       <h:inputText id="nonAjaxInput" 
+                        value="Non-Ajax" 
+                        valueChangeListener="#{ajaxtagbean.processValueChange}"/>
+
+       <h:inputText id="singleAjaxInput"
+                        value="Ajax"
+                        valueChangeListener="#{ajaxtagbean.processValueChange}">
+           <f:ajax listener="#{ajaxtagbean.processBehavior}"/>
+       </h:inputText>
+
+       <h:inputText id="greetInput" 
+                        value="Greet"
+                        valueChangeListener="#{ajaxtagbean.processValueChange}">
+           <be:greet/>
+       </h:inputText>
+
+       <h:inputText id="doubleGreetInput" 
+                        value="Double Greet"
+                        valueChangeListener="#{ajaxtagbean.processValueChange}">
+           <be:greet/>
+           <be:greet name="Joe"/>
+       </h:inputText>
+
+       <h:inputText id="greetAndAjaxInput" 
+                        value="Greet and Ajax"
+                        valueChangeListener="#{ajaxtagbean.processValueChange}">
+           <be:greet/>
+           <f:ajax listener="#{ajaxtagbean.processBehavior}"/>
+       </h:inputText>
+
+       <f:ajax listener="#{ajaxtagbean.processBehavior}">
+          <h:inputText id="wrappedInput" 
+                           value="Wrapped Input"
+                           valueChangeListener="#{ajaxtagbean.processValueChange}"/>
+          <h:inputText id="wrappedRenderInput" 
+                           value="Wrapped Input, Local Ajax"
+                           valueChangeListener="#{ajaxtagbean.processValueChange}">
+              <f:ajax render="out" listener="#{ajaxtagbean.processBehavior}"/>
+          </h:inputText>
+          <h:inputText id="wrappedDisabledInput" 
+                           value="Wrapped Input, Local Disabled Ajax"
+                           valueChangeListener="#{ajaxtagbean.processValueChange}">
+              <f:ajax disabled="true" listener="#{ajaxtagbean.processBehavior}"/>
+          </h:inputText>
+          <h:inputText id="wrappedGreetInput" 
+                           value="Wrapped Input, Local Greet"
+                           valueChangeListener="#{ajaxtagbean.processValueChange}">
+              <be:greet/>
+          </h:inputText>
+       </f:ajax>
+
+       <h:inputText id="ajaxParamsInput" 
+                        value="Ajax With Params"
+                        valueChangeListener="#{ajaxtagbean.processValueChange}">
+           <f:ajax listener="#{ajaxtagbean.processBehavior}"/>
+           <f:param name="foo" value="Hello"/>
+           <f:param name="bar" value="Goodbye"/>
+           <f:param name="foobar" value="#{null}"/>
+           <f:param name="#{null}" value="should_not_be_present"/>
+       </h:inputText>
+
+       <h:inputText id="statusInput" 
+                        value="Ajax With OnEvent"
+                        valueChangeListener="#{ajaxtagbean.processValueChange}">
+           <f:ajax onevent="statusUpdate" 
+                   onerror="statusUpdate"
+                   listener="#{ajaxtagbean.processBehavior}"/>
+       </h:inputText>
+
+       <h:inputText id="mouseOverInput" 
+                        value="MouseOver Ajax"
+                        valueChangeListener="#{ajaxtagbean.processValueChange}">
+           <f:ajax listener="#{ajaxtagbean.processBehavior}"/>
+           <f:ajax event="mouseover" listener="#{ajaxtagbean.processBehavior}"/>
+       </h:inputText>
+
+       <h:inputText id="mouseOverJavaScriptInput" 
+                        value="MouseOver JavaScript Ajax"
+                        valueChangeListener="#{ajaxtagbean.processValueChange}"
+                        onchange="jsf.ajax.request(this,event);return false;"
+                        onmouseover="jsf.ajax.request(this,event)"/>
+
+       <h:inputText id="disabledInput" 
+                        value="Disabled Input With Enabled Ajax"
+                        valueChangeListener="#{ajaxtagbean.processValueChange}"
+                        disabled="true">
+           <f:ajax listener="#{ajaxtagbean.processBehavior}"/>
+           <f:ajax event="mouseover" listener="#{ajaxtagbean.processBehavior}"/>
+       </h:inputText>
+
+       <h:inputText id="disabledAjaxInput" 
+                        value="Enabled Input With Disabled Ajax"
+                        valueChangeListener="#{ajaxtagbean.processValueChange}">
+           <f:ajax disabled="true" listener="#{ajaxtagbean.processBehavior}"/>
+           <f:ajax event="mouseover" 
+                   disabled="true" 
+                   listener="#{ajaxtagbean.processBehavior}"/>
+       </h:inputText>
+
+       <h:inputText id="immediateAjaxInput" 
+                        value="Immediate Ajax"
+                        valueChangeListener="#{ajaxtagbean.processValueChange}">
+           <f:ajax immediate="true" listener="#{ajaxtagbean.processBehavior}"/>
+       </h:inputText>
+
+       <h:inputText id="immediateInput" 
+                        value="Immediate Input"
+                        valueChangeListener="#{ajaxtagbean.processValueChange}"
+                        immediate="true">
+           <f:ajax listener="#{ajaxtagbean.processBehavior}"/>
+       </h:inputText>
+
+       <h:inputText id="immediateInputNonImmediateAjax" 
+                        value="Immediate Input With Non-Immediate Ajax"
+                        valueChangeListener="#{ajaxtagbean.processValueChange}"
+                        immediate="true">
+           <f:ajax immediate="false" listener="#{ajaxtagbean.processBehavior}"/>
+       </h:inputText>
+
+
+       <h:inputText value="No Id Ajax"
+                    valueChangeListener="#{ajaxtagbean.processValueChange}">
+           <f:ajax listener="#{ajaxtagbean.processBehavior}"/>
+       </h:inputText>
+
+       <h:inputText value="No Id JavaScript Ajax"
+                    valueChangeListener="#{ajaxtagbean.processValueChange}"
+                    onchange="jsf.ajax.request(this,event)"/>
+
+       <h:inputText id="allKeywordInput"
+                        value="@all"
+                        valueChangeListener="#{ajaxtagbean.processValueChange}">
+           <f:ajax execute="@all" 
+                   render="@all"
+                   listener="#{ajaxtagbean.processBehavior}"/>
+       </h:inputText>
+
+       <h:inputText id="formKeywordInput"
+                        value="@form"
+                        valueChangeListener="#{ajaxtagbean.processValueChange}">
+           <f:ajax execute="@form" 
+                   render="@form"
+                   listener="#{ajaxtagbean.processBehavior}"/>
+       </h:inputText>
+
+       <h:inputText id="thisKeywordInput"
+                        value="@this"
+                        valueChangeListener="#{ajaxtagbean.processValueChange}">
+           <f:ajax execute="@this" 
+                   render="@this"
+                   listener="#{ajaxtagbean.processBehavior}"/>
+       </h:inputText>
+
+       <h:inputText id="noneKeywordInput"
+                        value="@none"
+                        valueChangeListener="#{ajaxtagbean.processValueChange}">
+           <f:ajax execute="@none" 
+                   render="@none"
+                   listener="#{ajaxtagbean.processBehavior}"/>
+       </h:inputText>
+
+       <h:inputText id="multipleIdsInput"
+                        value="Multiple Ids"
+                        valueChangeListener="#{ajaxtagbean.processValueChange}">
+           <f:ajax execute="@this noneKeyword thisKeyword formKeyword" 
+                   render="@this noneKeyword thisKeyword formKeyword"
+                   listener="#{ajaxtagbean.processBehavior}"/>
+       </h:inputText>
+
+       <h:inputText id="multipleIdsExpressionInput"
+                        value="Multiple Ids Expression"
+                        valueChangeListener="#{ajaxtagbean.processValueChange}">
+           <f:ajax execute="#{ajaxtagbean.multipleIds}" 
+                   render="#{ajaxtagbean.multipleIds}" 
+                   listener="#{ajaxtagbean.processBehavior}"/>
+       </h:inputText>
+
+       <h:inputText id="multipleIdsStringExpressionInput"
+                        value="Multiple Ids String Expression"
+                        valueChangeListener="#{ajaxtagbean.processValueChange}">
+           <f:ajax execute="noneKeyword #{ajaxtagbean.thisKeyword} formKeyword" 
+                   render="noneKeyword #{ajaxtagbean.thisKeyword} formKeyword"
+                   listener="#{ajaxtagbean.processBehavior}"/>
+       </h:inputText>
+
+       </h:panelGrid> 
+
+       <h:panelGrid>
+           <be:greet event="dblclick"/>
+           <h:outputText value="Panel Grid with Double Click Greet"/>
+       </h:panelGrid>
+
+       <h:panelGrid ondblclick="alert('Hello from user handler')">
+           <be:greet event="dblclick"/>
+           <h:outputText value="Panel Grid with Double Click User Handler and Greet"/>
+       </h:panelGrid>
+
+       <h:panelGrid>
+           <be:greet event="click"/>
+           <be:greet event="dblclick"/>
+           <h:outputText value="Panel Grid with Both Click And Double Click Greet"/>
+       </h:panelGrid>
+
+       <h:panelGrid onclick="alert('Hello from onclick user handler')"
+                    ondblclick="alert('Hello from ondblclick user handler')">
+           <be:greet event="click"/>
+           <be:greet event="dblclick"/>
+           <h:outputText value="Panel Grid with Both Click And Double Click Greet And User Handlers"/>
+       </h:panelGrid>
+
+       <h:panelGrid columns="3">
+           <f:ajax event="action" listener="#{ajaxtagbean.processBehavior}">
+               <f:ajax event="valueChange" listener="#{ajaxtagbean.processBehavior}">
+                   <h:commandButton id="wrappingAjax" 
+                                    value="Wrapping Ajax"
+                                    actionListener="#{ajaxtagbean.processAction}"/>
+                   <h:commandLink id="wrappingAjaxLink" 
+                                  value="Wrapping Ajax"
+                                  actionListener="#{ajaxtagbean.processAction}"/>
+                   <h:inputText id="wrappingAjaxInput"
+                                value="WrappingAjax"
+                                valueChangeListener="#{ajaxtagbean.processValueChange}"/>
+               </f:ajax>
+           </f:ajax>
+       </h:panelGrid>
+
+       <h:outputText id="out"/>
+
+       <h:dataTable value="#{ajaxtagbean.statusMessages}" 
+                    var="message" 
+                    id="statusTable"
+                    border="1">
+           <h:column>
+               <f:facet name="header">
+                   <h:outputText value="Count"/>
+               </f:facet>
+    
+               <h:outputText value="#{message.count}"/>
+           </h:column>
+
+           <h:column>
+               <f:facet name="header">
+                   <h:outputText value="Type"/>
+               </f:facet>
+    
+               <h:outputText value="#{message.type}"/>
+           </h:column>
+
+           <h:column>
+               <f:facet name="header">
+                   <h:outputText value="Phase"/>
+               </f:facet>
+    
+               <h:outputText value="#{message.phase}"/>
+           </h:column>
+
+           <h:column>
+               <f:facet name="header">
+                   <h:outputText value="Details"/>
+               </f:facet>
+    
+               <h:outputText value="#{message.details}"/>
+           </h:column>
+
+       </h:dataTable>
+
+       <h:commandButton value="Reset Status Messages" id="resetMessages"
+                        actionListener="#{ajaxtagbean.resetStatusMessages}">
+           <f:ajax/>
+       </h:commandButton>
+    
+
+       <h:outputStylesheet name="stylesheet.css" />
+   </h:form>
+
+</h:body>
+
+</html>
diff --git a/jsf-demo/sandbox/ajax-tag/src/main/webapp/index.html b/jsf-demo/sandbox/ajax-tag/src/main/webapp/index.html
new file mode 100644
index 0000000..241e09e
--- /dev/null
+++ b/jsf-demo/sandbox/ajax-tag/src/main/webapp/index.html
@@ -0,0 +1,47 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<html>
+<header>
+<meta http-equiv="Refresh" content="0;url=home.jsf">
+</header>
+</html>
diff --git a/jsf-demo/sandbox/ajax-tag/src/main/webapp/resources/anim-star-bkgrnd.gif b/jsf-demo/sandbox/ajax-tag/src/main/webapp/resources/anim-star-bkgrnd.gif
new file mode 100644
index 0000000..a87b109
Binary files /dev/null and b/jsf-demo/sandbox/ajax-tag/src/main/webapp/resources/anim-star-bkgrnd.gif differ
diff --git a/jsf-demo/sandbox/ajax-tag/src/main/webapp/resources/stylesheet.css b/jsf-demo/sandbox/ajax-tag/src/main/webapp/resources/stylesheet.css
new file mode 100644
index 0000000..d95c065
--- /dev/null
+++ b/jsf-demo/sandbox/ajax-tag/src/main/webapp/resources/stylesheet.css
@@ -0,0 +1,247 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+.title-panel {
+    background-image: url(anim-star-bkgrnd.gif.jsf);
+    height: 80px;
+    width: 1380;
+}
+
+.title-panel-text {
+    color: white;
+    font-family: 'Georgia','Times New Roman','times',serif;
+    font-size: 24px;
+    font-weight: bold;
+}
+
+.title-panel-subtext {
+    color: white;
+    font-family: 'Georgia','Times New Roman','times',serif;
+    font-size: 14px;
+    font-style: italic
+}
+
+body {
+    font-family: Arial, Helvetica, sans-serif;
+    font-size: 12px;
+}
+
+td {
+    font-family: Arial, Helvetica, sans-serif;
+    font-size: 12px;
+}
+
+th {
+    font-family: Arial, Helvetica, sans-serif;
+    font-size: 12px;
+}
+
+.bodystyle {
+    font-family: Arial, Helvetica, sans-serif;
+    font-size: 12px;
+}
+
+.small {
+    font-family: Arial, Helvetica, sans-serif;
+    font-size: 9px;
+}
+
+.medium {
+    font-family: Arial, Helvetica, sans-serif;
+    font-size: 12px;
+}
+
+.maintitle {
+    font-family: Arial, Helvetica, sans-serif;
+    font-size: 14px;
+    color: #330066;
+}
+
+.subtitle {
+    font-family: Arial, Helvetica, sans-serif;
+    font-size: 12px;
+    color: #93B629;
+}
+
+.subtitlebig {
+    font-family: Arial, Helvetica, sans-serif;
+    font-size: 16px;
+    color: #93B629;
+    padding-top: 10;
+    padding-bottom: 10;
+}
+
+.big {
+    font-family: Arial, Helvetica, sans-serif;
+    font-size: 16px;
+}
+
+.xbig {
+    font-family: Arial, Helvetica, sans-serif;
+    font-size: 24px;
+}
+
+.expanded {
+    font-family: Arial, Helvetica, sans-serif;
+    font-size: 12px;
+    line-height: 24px;
+    letter-spacing: 2px;
+}
+
+.justified {
+    font-family: Arial, Helvetica, sans-serif;
+    text-align: justify;
+}
+
+.footer {
+    font-family: "Times New Roman", Times, serif;
+    font-size: 9px;
+    color: #999999;
+}
+
+.box1 {
+    padding: 3px;
+    border-width: medium;
+    border-style: solid;
+    border-color: #CCCCCC #666666 #666666 #CCCCCC;
+}
+
+.box2 {
+    font-style: italic;
+    word-spacing: 2pt;
+    padding: 3px;
+    border: 1px solid;
+}
+
+.align-left {
+    text-align: left;
+}
+
+.control-panel-border {
+    border: 5px outset red;
+}
+
+.x-button-border {
+    border: 3px outset blue;
+}
+
+.o-button-border {
+    border: 3px outset red;
+}
+
+.win-button-border {
+    border: 3px outset yellow;
+}
+
+.execute {
+    background-color: #bfefff;
+}
+
+.render {
+    border: 3px outset red;
+}
+
+.initial-render {
+    border: 3px outset green;
+}
+
+.execute-render {
+    border: 3px outset red;
+    background-color: #bfefff;
+}
+
+.keytitle {
+    font-family: Arial, Helvetica, sans-serif;
+    font-size: 16px;
+    color: #330066;
+}
+
+.options-prompt {
+    font-family: Arial, Helvetica, sans-serif;
+    font-size: 16px;
+    color: blue;
+}
+.options {
+    font-family: Arial, Helvetica, sans-serif;
+    font-size: 16px;
+    color: red;
+}
+
+
+.panel-border {
+    border: 2px outset blue;
+    background-color: #c1cdcd;
+}
+
+.panel-background {
+    background-color: #7171A5;
+    border: 5px outset #71A5A5;
+    border-collapse: collapse;
+    font-family: sans-serif;
+    font-size: 14pt;
+    padding: 10px;
+}
+
+.package-selected {
+    background-color: #93B629;
+}
+
+.package-unselected {
+    background-color: #C0C0C0;
+}
+
+.option-unselected {
+    background-color: #FFFFFF;
+}
+
+.top-table {
+    padding: 0;
+    border: 0;
+    width: 660px;
+}
+
+.storeFrontCar {
+    padding: 0;    
+    border: 0;
+}
+
+.validationMessage {
+    color: red;
+}
diff --git a/jsf-demo/sandbox/cc-metadata/pom.xml b/jsf-demo/sandbox/cc-metadata/pom.xml
new file mode 100644
index 0000000..7f78dbf
--- /dev/null
+++ b/jsf-demo/sandbox/cc-metadata/pom.xml
@@ -0,0 +1,205 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+    <modelVersion>4.0.0</modelVersion>
+    <groupId>jsf2</groupId>
+    <artifactId>cc-metadata</artifactId>
+    <packaging>war</packaging>
+    <name>${project.artifactId}</name>
+    <url>https://mojarra.dev.java.net/</url>
+    <description>Example App</description>
+    <version>1.0</version>
+
+    <build>
+        <defaultGoal>install</defaultGoal>
+        <sourceDirectory>src/main/java</sourceDirectory>
+        <finalName>jsf2-${project.artifactId}</finalName>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>RELEASE</version>
+                <configuration>
+                    <source>1.5</source>
+                    <target>1.5</target>
+                </configuration>
+            </plugin>
+        </plugins>
+        <extensions>
+            <extension>
+                <groupId>org.jvnet.wagon-svn</groupId>
+                <artifactId>wagon-svn</artifactId>
+                <version>1.8</version>
+            </extension>
+        </extensions>
+
+    </build>
+
+    <repositories>
+        <repository>
+            <snapshots/>
+            <id>ibiblio.mirrors</id>
+            <url>http://mirrors.ibiblio.org/pub/mirrors/maven2</url>
+        </repository>
+        <repository>
+            <snapshots/>
+            <id>codehaus</id>
+            <name>codehaus</name>
+            <url>http://repository.codehaus.org</url>
+        </repository>
+        <repository>
+            <id>jboss</id>
+            <url>http://repository.jboss.org/maven2</url>
+        </repository>
+        <repository>
+            <snapshots/>
+            <id>java.net.m2</id>
+            <name>java.net m2 repo</name>
+            <url>http://download.java.net/maven/2</url>
+        </repository>
+    </repositories>
+
+    <dependencies>
+
+        <dependency>
+            <groupId>javax</groupId>
+            <artifactId>javaee-api</artifactId>
+            <version>6.0</version>
+            <scope>provided</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <version>4.4</version>
+            <scope>test</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>net.sourceforge.htmlunit</groupId>
+            <artifactId>htmlunit</artifactId>
+            <version>2.4</version>
+            <scope>test</scope>
+            <exclusions>
+                <exclusion>
+                    <groupId>javax.xml</groupId>
+                    <artifactId>jsr173</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+
+        <dependency>
+            <groupId>commons-codec</groupId>
+            <artifactId>commons-codec</artifactId>
+            <version>1.3</version>
+            <scope>test</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>commons-httpclient</groupId>
+            <artifactId>commons-httpclient</artifactId>
+            <version>3.1</version>
+            <scope>test</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>commons-logging</groupId>
+            <artifactId>commons-logging</artifactId>
+            <version>1.1.1</version>
+            <scope>test</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>org.w3c.css</groupId>
+            <artifactId>sac</artifactId>
+            <version>1.3</version>
+            <scope>test</scope>
+        </dependency>
+
+    </dependencies>
+    <reporting>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-project-info-reports-plugin</artifactId>
+                <reportSets>
+                    <reportSet/>
+                </reportSets>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                    <source>1.5</source>
+                    <target>1.5</target>
+                </configuration>
+            </plugin>
+        </plugins>
+    </reporting>
+    <profiles>
+        <profile>
+            <id>default</id>
+            <!-- Tests are disabled by default.  See the test profile -->
+            <activation>
+                <activeByDefault>true</activeByDefault>
+            </activation>
+            <properties>
+                <maven.test.skip>true</maven.test.skip>
+            </properties>
+        </profile>
+        <profile>
+            <id>test</id>
+            <!-- To activate this profile, and allow tests to run, do this:
+        mvn -o -Ptest test -->
+        </profile>
+
+    </profiles>
+    <properties>
+        <netbeans.hint.deploy.server>gfv3ee6</netbeans.hint.deploy.server>
+    </properties>
+
+</project>
+
diff --git a/jsf-demo/sandbox/cc-metadata/profiles.xml b/jsf-demo/sandbox/cc-metadata/profiles.xml
new file mode 100644
index 0000000..f8d11ec
--- /dev/null
+++ b/jsf-demo/sandbox/cc-metadata/profiles.xml
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<profilesXml xmlns="http://maven.apache.org/PROFILES/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://maven.apache.org/PROFILES/1.0.0 http://maven.apache.org/xsd/profiles-1.0.0.xsd">
+    <profiles>
+        <profile>
+            <id>netbeans-private</id>
+            <activation>
+                <property>
+                    <name>netbeans.execution</name>
+                    <value>true</value>
+                </property>
+            </activation>
+            <properties>
+                <netbeans.deployment.server.id>[/Users/edburns/Documents/Projects/JavaEE/workareas/glassfishv3-target/glassfish]deployer:gfv3ee6:localhost:4848</netbeans.deployment.server.id>
+            </properties>
+        </profile>
+    </profiles>
+</profilesXml>
diff --git a/jsf-demo/sandbox/cc-metadata/src/main/java/jsf2/CompositeComponentMetadataUtils.java b/jsf-demo/sandbox/cc-metadata/src/main/java/jsf2/CompositeComponentMetadataUtils.java
new file mode 100644
index 0000000..86b5646
--- /dev/null
+++ b/jsf-demo/sandbox/cc-metadata/src/main/java/jsf2/CompositeComponentMetadataUtils.java
@@ -0,0 +1,136 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package jsf2;
+
+import java.beans.BeanDescriptor;
+import java.beans.BeanInfo;
+import java.beans.FeatureDescriptor;
+import java.beans.PropertyDescriptor;
+import java.io.IOException;
+import java.util.Enumeration;
+import java.util.List;
+import java.util.Map;
+import javax.el.ValueExpression;
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.context.ResponseWriter;
+import javax.faces.view.AttachedObjectTarget;
+
+public class CompositeComponentMetadataUtils {
+
+    /**
+     * <p>Use the composite component metadata specification
+     * in section JSF.3.6.2.1 to print out the metadata to
+     * the argument writer.</p>
+     * @throws IOException
+     */
+
+    public static void writeMetadata(BeanInfo metadata, 
+            ResponseWriter writer) throws IOException{
+
+        // Print out the top level BeanDescriptor stuff.
+        BeanDescriptor descriptor = metadata.getBeanDescriptor();
+        writeFeatureDescriptor("composite-component-BeanDescriptor", descriptor,
+                writer);
+        writeFeatureDescriptorValues(
+                "composite-component-BeanDescriptor", descriptor,
+                writer);
+        PropertyDescriptor attributes[] = metadata.getPropertyDescriptors();
+        for (PropertyDescriptor cur : attributes) {
+            writeFeatureDescriptor("composite-component-attribute", cur,
+                    writer);
+            writeFeatureDescriptorValues("composite-component-attribute", cur,
+                    writer);
+        }
+    }
+
+    public static void writeFeatureDescriptor(String prefix,
+            FeatureDescriptor fd, ResponseWriter writer) throws IOException {
+
+        writer.write(prefix + "-name:" +
+                fd.getName() + "\n");
+        writer.write(prefix + "-displayName:" +
+                fd.getDisplayName() + "\n");
+        writer.write(prefix + "-shortDescription:" +
+                fd.getShortDescription() + "\n");
+        writer.write(prefix + "-expert:" +
+                fd.isExpert() + "\n");
+        writer.write(prefix + "-hidden:" +
+                fd.isHidden() + "\n");
+        writer.write(prefix + "-preferred:" +
+                fd.isPreferred() + "\n");
+
+    }
+
+    public static void writeFeatureDescriptorValues(String prefix,
+            FeatureDescriptor fd, ResponseWriter writer) throws IOException {
+
+        Enumeration<String> extraValues = fd.attributeNames();
+        String curName;
+        while (extraValues.hasMoreElements()) {
+            curName = extraValues.nextElement();
+            if (curName.equals(AttachedObjectTarget.ATTACHED_OBJECT_TARGETS_KEY)) {
+                List<AttachedObjectTarget> attachedObjects =
+                        (List<AttachedObjectTarget>) fd.getValue(curName);
+                for (AttachedObjectTarget curTarget : attachedObjects) {
+                    writer.write(prefix + "-attached-object-" + curTarget.getName() + "\n");
+                }
+            } else if (curName.equals(UIComponent.FACETS_KEY)) {
+                Map<String, PropertyDescriptor> facets =
+                        (Map<String, PropertyDescriptor>) fd.getValue(curName);
+                for (String cur : facets.keySet()) {
+                    String facetPrefix = prefix + "-facet-" + cur;
+                    writeFeatureDescriptor(facetPrefix, facets.get(cur),
+                            writer);
+                    writeFeatureDescriptorValues(facetPrefix,
+                            facets.get(cur), writer);
+                }
+            } else {
+                ValueExpression ve = (ValueExpression) fd.getValue(curName);
+                writer.write(prefix + "-extra-attribute-" + curName + ": " +
+                        ve.getValue(FacesContext.getCurrentInstance().getELContext())
+                        + "\n");
+            }
+        }
+    }
+
+
+}
diff --git a/jsf-demo/sandbox/cc-metadata/src/main/java/jsf2/PrintMetadata.java b/jsf-demo/sandbox/cc-metadata/src/main/java/jsf2/PrintMetadata.java
new file mode 100644
index 0000000..80bc8c2
--- /dev/null
+++ b/jsf-demo/sandbox/cc-metadata/src/main/java/jsf2/PrintMetadata.java
@@ -0,0 +1,81 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package jsf2;
+
+import java.beans.BeanInfo;
+import java.io.IOException;
+import javax.faces.FacesException;
+import javax.faces.application.Resource;
+import javax.faces.component.FacesComponent;
+import javax.faces.component.UIOutput;
+import javax.faces.context.FacesContext;
+import javax.faces.context.ResponseWriter;
+import javax.faces.view.ViewDeclarationLanguage;
+
+ at FacesComponent(value="jsf2.PrintMetadata")
+public class PrintMetadata extends UIOutput {
+
+    @Override
+    public void encodeAll(FacesContext context) throws IOException {
+        ResponseWriter writer = context.getResponseWriter();
+        String
+                viewName,
+                libraryName,
+                resourceName;
+
+        try {
+            viewName = this.getAttributes().get("viewName").toString();
+            libraryName = this.getAttributes().get("libraryName").toString();
+            resourceName = this.getAttributes().get("resourceName").toString();
+        } catch (NullPointerException e) {
+            throw new FacesException("Must supply viewName, libraryName and resourceName attributes");
+        }
+
+        ViewDeclarationLanguage vdl = context.getApplication().
+                getViewHandler().getViewDeclarationLanguage(context, viewName);
+        Resource compositeComponentResource = context.getApplication().getResourceHandler().createResource(resourceName, libraryName);
+
+        BeanInfo metadata = vdl.getComponentMetadata(context, compositeComponentResource);
+
+        CompositeComponentMetadataUtils.writeMetadata(metadata, writer);
+
+    }
+}
diff --git a/jsf-demo/sandbox/cc-metadata/src/main/webapp/WEB-INF/classes/META-INF/cc-metadata.taglib.xml b/jsf-demo/sandbox/cc-metadata/src/main/webapp/WEB-INF/classes/META-INF/cc-metadata.taglib.xml
new file mode 100644
index 0000000..4f477da
--- /dev/null
+++ b/jsf-demo/sandbox/cc-metadata/src/main/webapp/WEB-INF/classes/META-INF/cc-metadata.taglib.xml
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<facelet-taglib  xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
+   xmlns='http://java.sun.com/xml/ns/javaee'
+   xsi:schemaLocation='http://java.sun.com/xml/ns/javaee web-facelettaglibrary_2_0.xsd' 
+   version="2.0">
+    <namespace>http://mojarra.dev.java.net/cc-metadata</namespace>
+    <tag>
+        <tag-name>printMetadata</tag-name>
+        <component>
+            <component-type>jsf2.PrintMetadata</component-type>
+        </component>
+<!-- these are advisory and not enforced by the runtime -->
+        <attribute>
+            <name>viewName</name>
+            <required>true</required>
+        </attribute>
+        <attribute>
+            <name>libraryName</name>
+            <required>true</required>
+        </attribute>
+        <attribute>
+            <name>resourceName</name>
+            <required>true</required>
+        </attribute>
+    </tag>
+
+</facelet-taglib>
diff --git a/jsf-demo/sandbox/cc-metadata/src/main/webapp/WEB-INF/web.xml b/jsf-demo/sandbox/cc-metadata/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..fa01080
--- /dev/null
+++ b/jsf-demo/sandbox/cc-metadata/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
+
+    <display-name>cc-metadata</display-name>
+    <description>cc-metadata</description>
+
+    <context-param>
+        <description>
+            Tell the runtime where we are in the project development
+            lifecycle.  Valid values are:
+            Development, UnitTest, SystemTest, or Production.
+            The runtime will display helpful hints to correct common mistakes
+            when the value is Development.
+        </description>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>Development</param-value>
+    </context-param>
+
+
+
+
+
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <welcome-file-list>
+     <welcome-file>faces/main.xhtml</welcome-file>
+   </welcome-file-list>
+
+</web-app>
diff --git a/jsf-demo/sandbox/cc-metadata/src/main/webapp/main.xhtml b/jsf-demo/sandbox/cc-metadata/src/main/webapp/main.xhtml
new file mode 100644
index 0000000..fb4b583
--- /dev/null
+++ b/jsf-demo/sandbox/cc-metadata/src/main/webapp/main.xhtml
@@ -0,0 +1,78 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:my="http://java.sun.com/jsf/composite/cc"
+      xmlns:meta="http://mojarra.dev.java.net/cc-metadata">
+<h:head>
+  <title>A Simple JavaServer Faces 2.0 View</title>
+<style type="text/css">
+.grayBox { padding: 8px; margin: 10px 0; border: 1px solid #CCC; background-color: #f9f9f9;  }
+</style>
+
+</h:head>
+<h:body>
+  <h:form>
+
+    <p>Composite Component usage:</p>
+
+<div id="cc" class="grayBox" style="border: 1px solid #090;">
+<p><my:myComponent loginAction="#{userBean.loginAction}" /></p>
+</div>
+
+<h2>Metadata for This Composite Component</h2>
+
+<div id="cc" class="grayBox" style="border: 1px solid #090;">
+    <pre>
+    <meta:printMetadata viewName="main.xhtml" libraryName="cc"
+                        resourceName="myComponent.xhtml"/>
+    </pre>
+</div>
+
+
+    <p><h:commandButton value="submit" /></p>
+  </h:form>
+</h:body>
+</html>
diff --git a/jsf-demo/sandbox/cc-metadata/src/main/webapp/resources/cc/myComponent.xhtml b/jsf-demo/sandbox/cc-metadata/src/main/webapp/resources/cc/myComponent.xhtml
new file mode 100644
index 0000000..fe8a92b
--- /dev/null
+++ b/jsf-demo/sandbox/cc-metadata/src/main/webapp/resources/cc/myComponent.xhtml
@@ -0,0 +1,187 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:fmd="http://java.sun.com/xml/ns/javaee/faces/design-time-metadata"
+      xmlns:cc="http://java.sun.com/jsf/composite">
+<head>
+
+<title>Not present in rendered output</title>
+
+</head>
+
+<body>
+
+<cc:interface
+    name="component"
+    displayName="A really fancy composite component"
+    expert="true"
+    hidden="false"
+    preferred="true"
+    shortDescription="This component has all the supported metadata."
+    extraTopLevelAttribute="Whatever I want here">
+
+<!-- start top level attributes -->
+
+  <cc:attribute
+    name="model"
+    required="true"
+    displayName="model"
+    expert="false"
+    hidden="false"
+    preferred="true"
+    shortDescription="The model for this component"
+    extraTopLevelAttribute="Whatever I want here">
+    <cc:extension>
+      <fmd:expert>true</fmd:expert>
+    </cc:extension>
+    <cc:attribute
+      name="userid"
+      default="guest"
+      displayName="User Id"
+      expert="false"
+      hidden="false"
+      preferred="true"
+      shortDescription="The model must have a userid property"/>
+    <cc:attribute
+      name="password"
+      default="guest"
+      displayName="Password"
+      expert="false"
+      hidden="false"
+      preferred="true"
+      shortDescription="The model must have a password property"/>
+  </cc:attribute>
+
+  <cc:attribute name="useridLabel" default="Userid:" />
+
+  <cc:attribute name="passwordLabel" default="Password:" />
+
+  <cc:attribute name="loginButtonLabel" default="Login" />
+
+  <cc:attribute name="loginAction" method-signature="java.lang.String f()"
+    required="true" />
+
+<!-- end top level attributes -->
+
+<!-- start facets -->
+
+  <cc:facet
+    name="header"
+    displayName="The header facet for the fancy component"
+    expert="true"
+    hidden="false"
+    preferred="false"
+    shortDescription="If you want a header, this is where you put it"
+    anotherExtraAttribute="Lots of metadata" />
+
+  <cc:facet
+    name="footer"
+    displayName="The footer facet for the fancy component"
+    expert="true"
+    hidden="false"
+    preferred="false"
+    shortDescription="If you want a footer, this is where you put it"
+    anotherExtraAttribute="Lots of metadata" />
+
+<!-- end facets -->
+
+<!-- start attached objects -->
+
+  <cc:editableValueHolder
+    name="userid"
+    displayName="Userid field"
+    expert="true"
+    hidden="false"
+    preferred="false"
+    shortDescription="Attach a converter or validator here, if you like"
+    someExtraMetadata="userid metadata" />
+
+  <cc:editableValueHolder
+    name="password"
+    displayName="Password field"
+    expert="true"
+    hidden="false"
+    preferred="false"
+    shortDescription="Attach a converter or validator here, if you like"
+    someExtraMetadata="password metadata" />
+
+  <cc:actionSource
+    name="login"
+    displayName="Login button"
+    expert="true"
+    hidden="false"
+    preferred="false"
+    shortDescription="Attach an actionListener here, if you like"
+    someExtraMetadata="login metadata" />
+
+<!-- end attached objects -->
+
+</cc:interface>
+
+<cc:implementation>
+
+  <cc:renderFacet name="header" />
+
+  <p><h:outputLabel for="#{cc.clientId}:userid"
+                    value="#{cc.attrs.useridLabel}" />
+     <h:inputText id="userid" /></p>
+
+  <p><h:outputLabel for="#{cc.clientId}:password"
+                    value="#{cc.attrs.passwordLabel}" />
+     <h:inputText id="password" /></p>
+
+  <p><h:commandButton value="#{cc.attrs.loginButtonLabel}"
+                      action="#{cc.attrs.loginAction}" /></p>
+
+  <cc:renderFacet name="footer" />
+
+
+</cc:implementation>
+
+</body>
+
+</html>
diff --git a/jsf-demo/sandbox/custom-tag/build.xml b/jsf-demo/sandbox/custom-tag/build.xml
new file mode 100644
index 0000000..41c1f4b
--- /dev/null
+++ b/jsf-demo/sandbox/custom-tag/build.xml
@@ -0,0 +1,113 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!-- You may freely edit this file. See commented blocks below for -->
+<!-- some examples of how to customize the build. -->
+<!-- (If you delete it and reopen the project it will be recreated.) -->
+<!-- By default, only the Clean and Build commands use this build script. -->
+<!-- Commands such as Run, Debug, and Test only use this build script if -->
+<!-- the Compile on Save feature is turned off for the project. -->
+<!-- You can turn off the Compile on Save (or Deploy on Save) setting -->
+<!-- in the project's Project Properties dialog box.-->
+<project name="jsf2-facelet-custom-tag" default="default" basedir=".">
+    <description>Builds, tests, and runs the project jsf2-facelet-custom-tag.</description>
+    <import file="nbproject/build-impl.xml"/>
+    <!--
+
+    There exist several targets which are by default empty and which can be 
+    used for execution of your tasks. These targets are usually executed 
+    before and after some main targets. They are: 
+
+      -pre-init:                 called before initialization of project properties 
+      -post-init:                called after initialization of project properties 
+      -pre-compile:              called before javac compilation 
+      -post-compile:             called after javac compilation 
+      -pre-compile-single:       called before javac compilation of single file
+      -post-compile-single:      called after javac compilation of single file
+      -pre-compile-test:         called before javac compilation of JUnit tests
+      -post-compile-test:        called after javac compilation of JUnit tests
+      -pre-compile-test-single:  called before javac compilation of single JUnit test
+      -post-compile-test-single: called after javac compilation of single JUunit test
+      -pre-dist:                 called before archive building 
+      -post-dist:                called after archive building 
+      -post-clean:               called after cleaning build products 
+      -pre-run-deploy:           called before deploying
+      -post-run-deploy:          called after deploying
+
+    Example of pluging an obfuscator after the compilation could look like 
+
+        <target name="-post-compile">
+            <obfuscate>
+                <fileset dir="${build.classes.dir}"/>
+            </obfuscate>
+        </target>
+
+    For list of available properties check the imported 
+    nbproject/build-impl.xml file. 
+
+
+    Other way how to customize the build is by overriding existing main targets.
+    The target of interest are: 
+
+      init-macrodef-javac:    defines macro for javac compilation
+      init-macrodef-junit:   defines macro for junit execution
+      init-macrodef-debug:    defines macro for class debugging
+      do-dist:                archive building
+      run:                    execution of project 
+      javadoc-build:          javadoc generation 
+
+    Example of overriding the target for project execution could look like 
+
+        <target name="run" depends="<PROJNAME>-impl.jar">
+            <exec dir="bin" executable="launcher.exe">
+                <arg file="${dist.jar}"/>
+            </exec>
+        </target>
+
+    Notice that overridden target depends on jar target and not only on 
+    compile target as regular run target does. Again, for list of available 
+    properties which you can use check the target you are overriding in 
+    nbproject/build-impl.xml file. 
+
+    -->
+</project>
diff --git a/jsf-demo/sandbox/custom-tag/pom.xml b/jsf-demo/sandbox/custom-tag/pom.xml
new file mode 100644
index 0000000..c4a7c7d
--- /dev/null
+++ b/jsf-demo/sandbox/custom-tag/pom.xml
@@ -0,0 +1,149 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+    <modelVersion>4.0.0</modelVersion>
+    <groupId>com.sun.faces</groupId>
+    <artifactId>custom-tag</artifactId>
+    <packaging>war</packaging>
+    <name>${project.artifactId}</name>
+    <url>https://mojarra.dev.java.net/</url>
+    <description>Example App</description>
+    <version>1.0</version>
+
+    <build>
+        <defaultGoal>package</defaultGoal>
+        <sourceDirectory>src/main/java</sourceDirectory>
+        <finalName>${project.artifactId}</finalName>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>2.3.2</version>
+                <configuration>
+                    <source>1.5</source>
+                    <target>1.5</target>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+
+    <repositories>
+        <repository>
+            <snapshots/>
+            <id>ibiblio.mirrors</id>
+            <url>http://mirrors.ibiblio.org/pub/mirrors/maven2</url>
+        </repository>
+        <repository>
+            <snapshots/>
+            <id>codehaus</id>
+            <name>codehaus</name>
+            <url>http://repository.codehaus.org</url>
+        </repository>
+        <repository>
+            <snapshots/>
+            <id>java.net.m2</id>
+            <name>java.net m2 repo</name>
+            <url>http://download.java.net/maven/2</url>
+        </repository>
+    </repositories>
+
+    <dependencies>
+        <dependency>
+            <groupId>javax.faces</groupId>
+            <artifactId>jsf-api</artifactId>
+            <version>2.0</version>
+            <scope>provided</scope>
+        </dependency>
+
+        <!--
+          Uncomment these two dependencies and comment out the one above to use
+          a simple servlet container instead of a Java EE Application Server
+        <dependency>
+            <groupId>com.sun.faces</groupId>
+            <artifactId>jsf-api</artifactId>
+            <version>2.0.0</version>
+        </dependency>
+        <dependency>
+            <groupId>com.sun.faces</groupId>
+            <artifactId>jsf-impl</artifactId>
+            <version>2.0.0</version>
+        </dependency>
+        -->
+
+    </dependencies>
+    <reporting>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-project-info-reports-plugin</artifactId>
+                <reportSets>
+                    <reportSet/>
+                </reportSets>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                    <source>1.5</source>
+                    <target>1.5</target>
+                </configuration>
+            </plugin>
+        </plugins>
+    </reporting>
+    <profiles>
+        <profile>
+            <id>default</id>
+            <!-- Tests are disabled by default.  See the test profile -->
+            <activation>
+                <activeByDefault>true</activeByDefault>
+            </activation>
+            <properties>
+                <maven.test.skip>true</maven.test.skip>
+            </properties>
+        </profile>
+    </profiles>
+</project>
+
diff --git a/jsf-demo/sandbox/custom-tag/src/main/java/com/sun/faces/facelets/custom/CustomComponentHandler1.java b/jsf-demo/sandbox/custom-tag/src/main/java/com/sun/faces/facelets/custom/CustomComponentHandler1.java
new file mode 100644
index 0000000..737729c
--- /dev/null
+++ b/jsf-demo/sandbox/custom-tag/src/main/java/com/sun/faces/facelets/custom/CustomComponentHandler1.java
@@ -0,0 +1,54 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.facelets.custom;
+
+import javax.faces.view.facelets.ComponentConfig;
+import javax.faces.view.facelets.ComponentHandler;
+
+public class CustomComponentHandler1 extends ComponentHandler {
+
+    public CustomComponentHandler1(ComponentConfig config) {
+        super(config);
+    }
+
+    
+
+}
diff --git a/jsf-demo/sandbox/custom-tag/src/main/java/com/sun/faces/facelets/custom/CustomComponentHandler2.java b/jsf-demo/sandbox/custom-tag/src/main/java/com/sun/faces/facelets/custom/CustomComponentHandler2.java
new file mode 100644
index 0000000..de7858b
--- /dev/null
+++ b/jsf-demo/sandbox/custom-tag/src/main/java/com/sun/faces/facelets/custom/CustomComponentHandler2.java
@@ -0,0 +1,64 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.facelets.custom;
+
+import javax.faces.component.UIComponent;
+import javax.faces.view.facelets.ComponentConfig;
+import javax.faces.view.facelets.ComponentHandler;
+import javax.faces.view.facelets.FaceletContext;
+
+public class CustomComponentHandler2 extends ComponentHandler {
+
+    public CustomComponentHandler2(ComponentConfig config) {
+        super(config);
+    }
+
+    @Override
+    public void onComponentCreated(FaceletContext ctx, UIComponent c, UIComponent parent) {
+        super.onComponentCreated(ctx, c, parent);
+    }
+
+    @Override
+    public void onComponentPopulated(FaceletContext ctx, UIComponent c, UIComponent parent) {
+        super.onComponentPopulated(ctx, c, parent);
+    }
+
+}
diff --git a/jsf-demo/sandbox/custom-tag/src/main/java/com/sun/faces/facelets/custom/CustomComponentHandler3.java b/jsf-demo/sandbox/custom-tag/src/main/java/com/sun/faces/facelets/custom/CustomComponentHandler3.java
new file mode 100644
index 0000000..0bbfa78
--- /dev/null
+++ b/jsf-demo/sandbox/custom-tag/src/main/java/com/sun/faces/facelets/custom/CustomComponentHandler3.java
@@ -0,0 +1,87 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.facelets.custom;
+
+import java.io.IOException;
+import javax.faces.component.UIComponent;
+import javax.faces.view.facelets.ComponentConfig;
+import javax.faces.view.facelets.ComponentHandler;
+import javax.faces.view.facelets.FaceletContext;
+import javax.faces.view.facelets.MetaRuleset;
+import javax.faces.view.facelets.TagHandlerDelegate;
+
+public class CustomComponentHandler3 extends ComponentHandler {
+
+    public CustomComponentHandler3(ComponentConfig config) {
+        super(config);
+    }
+
+    @Override
+    public void onComponentCreated(FaceletContext ctx, UIComponent c, UIComponent parent) {
+        super.onComponentCreated(ctx, c, parent);
+    }
+
+    @Override
+    public void onComponentPopulated(FaceletContext ctx, UIComponent c, UIComponent parent) {
+        super.onComponentPopulated(ctx, c, parent);
+    }
+
+    @Override
+    protected TagHandlerDelegate getTagHandlerDelegate() {
+        final TagHandlerDelegate parent = super.getTagHandlerDelegate();
+        TagHandlerDelegate result = new TagHandlerDelegate() {
+
+            @Override
+            public MetaRuleset createMetaRuleset(Class type) {
+                return parent.createMetaRuleset(type);
+            }
+
+            @Override
+            public void apply(FaceletContext ctx, UIComponent comp) throws IOException {
+                parent.apply(ctx, comp);
+            }
+        };
+        return result;
+    }
+
+
+
+}
diff --git a/jsf-demo/sandbox/custom-tag/src/main/java/com/sun/faces/facelets/custom/CustomValidatorHandler.java b/jsf-demo/sandbox/custom-tag/src/main/java/com/sun/faces/facelets/custom/CustomValidatorHandler.java
new file mode 100644
index 0000000..dbf6ccf
--- /dev/null
+++ b/jsf-demo/sandbox/custom-tag/src/main/java/com/sun/faces/facelets/custom/CustomValidatorHandler.java
@@ -0,0 +1,77 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.facelets.custom;
+
+import java.io.IOException;
+import javax.faces.component.UIComponent;
+import javax.faces.view.facelets.FaceletContext;
+import javax.faces.view.facelets.MetaRuleset;
+import javax.faces.view.facelets.TagHandlerDelegate;
+import javax.faces.view.facelets.ValidatorConfig;
+import javax.faces.view.facelets.ValidatorHandler;
+
+public class CustomValidatorHandler extends ValidatorHandler {
+
+    public CustomValidatorHandler(ValidatorConfig config) {
+        super(config);
+    }
+
+    @Override
+    protected TagHandlerDelegate getTagHandlerDelegate() {
+        final TagHandlerDelegate parent = super.getTagHandlerDelegate();
+        TagHandlerDelegate result = new TagHandlerDelegate() {
+
+            @Override
+            public MetaRuleset createMetaRuleset(Class type) {
+                return parent.createMetaRuleset(type);
+            }
+
+            @Override
+            public void apply(FaceletContext ctx, UIComponent comp) throws IOException {
+                parent.apply(ctx, comp);
+            }
+        };
+        return result;
+    }
+
+
+
+}
diff --git a/jsf-demo/sandbox/custom-tag/src/main/webapp/WEB-INF/classes/META-INF/custom.taglib.xml b/jsf-demo/sandbox/custom-tag/src/main/webapp/WEB-INF/classes/META-INF/custom.taglib.xml
new file mode 100644
index 0000000..08eb3f7
--- /dev/null
+++ b/jsf-demo/sandbox/custom-tag/src/main/webapp/WEB-INF/classes/META-INF/custom.taglib.xml
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<facelet-taglib xmlns="http://java.sun.com/xml/ns/javaee"
+              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+              xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facelettaglibrary_2_0.xsd"
+              version="2.0">
+    <namespace>http://mojarra.dev.java.net/custom</namespace>
+    <tag>
+        <tag-name>custom1</tag-name>
+        <component>
+            <component-type>javax.faces.Input</component-type>
+            <renderer-type>javax.faces.Text</renderer-type>
+            <handler-class>com.sun.faces.facelets.custom.CustomComponentHandler1</handler-class>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>custom2</tag-name>
+        <component>
+            <component-type>javax.faces.Input</component-type>
+            <renderer-type>javax.faces.Text</renderer-type>
+            <handler-class>com.sun.faces.facelets.custom.CustomComponentHandler2</handler-class>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>custom3</tag-name>
+        <component>
+            <component-type>javax.faces.Input</component-type>
+            <renderer-type>javax.faces.Text</renderer-type>
+            <handler-class>com.sun.faces.facelets.custom.CustomComponentHandler3</handler-class>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>validator</tag-name>
+        <validator>
+            <validator-id>javax.faces.Required</validator-id>
+            <handler-class>com.sun.faces.facelets.custom.CustomValidatorHandler</handler-class>
+        </validator>
+    </tag>
+
+
+</facelet-taglib>
diff --git a/jsf-demo/sandbox/custom-tag/src/main/webapp/WEB-INF/web.xml b/jsf-demo/sandbox/custom-tag/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..abedb77
--- /dev/null
+++ b/jsf-demo/sandbox/custom-tag/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>Development</param-value>
+    </context-param>
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <session-config>
+        <session-timeout>
+            30
+        </session-timeout>
+    </session-config>
+    <welcome-file-list>
+        <welcome-file>faces/index.xhtml</welcome-file>
+    </welcome-file-list>
+</web-app>
diff --git a/jsf-demo/sandbox/custom-tag/src/main/webapp/index.xhtml b/jsf-demo/sandbox/custom-tag/src/main/webapp/index.xhtml
new file mode 100644
index 0000000..88b0b68
--- /dev/null
+++ b/jsf-demo/sandbox/custom-tag/src/main/webapp/index.xhtml
@@ -0,0 +1,60 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:custom="http://mojarra.dev.java.net/custom">
+<h:head><title>Test binary custom tag handler</title></h:head>
+
+<h:body><h:panelGrid columns="1">
+
+  <custom:custom1/>
+  <custom:custom2/>
+  <custom:custom3/>
+  <custom:custom3><custom:validator/></custom:custom3>
+   
+</h:panelGrid></h:body>
+
+</html>
+
diff --git a/jsf-demo/sandbox/demo-standalone/build.properties.sample b/jsf-demo/sandbox/demo-standalone/build.properties.sample
new file mode 100644
index 0000000..f866732
--- /dev/null
+++ b/jsf-demo/sandbox/demo-standalone/build.properties.sample
@@ -0,0 +1,62 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 2005-2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
+# -------------------------------------
+#  Compile dependencies    
+#    Servlet (version 2.5)
+#    JSP (version 2.1)
+#    JSTL (version 1.2)
+# -------------------------------------
+compile.classpath=
+
+# -------------------------------------
+#  packaged.libs
+#    specifies a comma-separated list
+#    of fully qualified JAR files that
+#    will be included with the packaged
+#    WAR files.  This is useful for the 
+#    case where the target container doesn't
+#    include the required dependencies 
+#    for Sun's JSF implementation.
+#
+#    If the container already has the necessary dependencies,
+#    then leave this property blank.
+# ---------------------------------------
+packaged.libs=
diff --git a/jsf-demo/sandbox/demo-standalone/build.xml b/jsf-demo/sandbox/demo-standalone/build.xml
new file mode 100644
index 0000000..6452f6b
--- /dev/null
+++ b/jsf-demo/sandbox/demo-standalone/build.xml
@@ -0,0 +1,111 @@
+<?xml version="1.0"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project name="jsf-demo" default="main" basedir=".">
+
+    <taskdef resource="net/sf/antcontrib/antlib.xml"/>
+    
+    <property file="build.properties"/>
+    <property name="javax.faces-api.jar" value="../lib/javax.faces-api.jar"/>
+    <property name="javax.faces.jar" value="../lib/javax.faces.jar"/>
+    <property name="ui.jar" value="${basedir}/ui.jar"/>   
+        
+        
+    <target name="main">
+        <build-sample sample-name="jsf-cardemo" sample-dir="cardemo"/>
+        <build-sample sample-name="jsf-guessNumber" sample-dir="guessNumber"/>
+        <build-sample sample-name="jsf-nonjsp" sample-dir="nonjsp"/>
+        <build-sample sample-name="jsf-components" sample-dir="components"/>
+        <build-sample sample-name="jsf-renderkits" sample-dir="renderkits"/>
+        <build-sample sample-name="webtier-sample" sample-dir="webtier-sample"/>
+    </target>    
+
+    <macrodef name="build-sample">
+        <attribute name="sample-name"/>
+        <attribute name="sample-dir"/>
+        
+        <sequential>
+            <echo>
+                
+--------------- Building @{sample-name} ----------------
+                
+            </echo>
+            <mkdir dir="@{sample-dir}/build/classes"/>
+            <javac srcdir="@{sample-dir}/src"
+                   destdir="@{sample-dir}/build/classes">
+                <classpath>
+                    <pathelement location="${javax.faces-api.jar}"/>
+                    <pathelement location="${javax.faces.jar}"/>
+                    <pathelement location="${ui.jar}"/>
+                    <pathelement path="${compile.classpath}"/>
+                </classpath>
+            </javac>
+            <jar update="true" destfile="${basedir}/@{sample-name}.war">
+                <zipfileset dir="@{sample-dir}/web"/>
+                <zipfileset dir="@{sample-dir}/build/classes"
+                            prefix="WEB-INF/classes"/>
+                <zipfileset dir="@{sample-dir}/src"
+                            includes="**/*.properties"/>
+                <zipfileset file="${ui.jar}"
+                            prefix="WEB-INF/lib"/>                
+            </jar>
+            <if>
+                <isset property="${packaged.libs}"/>
+                <then>
+                    <echo message="Packing dependent libraries"/>
+                    <for list="${javax.faces.jar},${javax.faces-api.jar},${packaged.libs}"
+                         param="jar">
+                        <sequential>
+                            <jar destfile="${basedir}/@{sample-name}.war"
+                                 update="true">
+                                <zipfileset file="@{jar}" prefix="WEB-INF/lib"/>
+                            </jar>
+                        </sequential>
+                    </for>
+                </then>
+            </if>  
+            <delete dir="@{sample-dir}/build/classes"/>
+        </sequential>
+    </macrodef>
+    
+</project>
diff --git a/jsf-demo/sandbox/ezcomp00/build.xml b/jsf-demo/sandbox/ezcomp00/build.xml
new file mode 100644
index 0000000..212be91
--- /dev/null
+++ b/jsf-demo/sandbox/ezcomp00/build.xml
@@ -0,0 +1,129 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project name="ezcomp00" default="build" basedir=".">
+
+
+    <property file="${user.home}/build.properties"/>
+    <property file="../../build.properties"/>
+    <import file="${jsf.build.home}/common/ant/common.xml"/>
+
+    <!-- Configure the context path for this application -->
+    <property name="context.path" value="/ezcomp00"/>
+    <property name="example" value="ezcomp00"/>
+    <property name="build" value="${basedir}/build"/>
+
+    <path id="classpath">       
+        <pathelement location="${javax.faces-api.jar}"/>
+        <pathelement location="${javax.faces.jar}"/>
+        <path refid="compile.classpath"/>
+    </path>
+    
+    <target name="init" depends="check.changes">
+        <tstamp/>
+    </target>
+
+    <target name="check.changes">
+        <uptodate property="skip.build"
+                  targetfile="${build}/last-build">
+            <srcfiles dir="${basedir}">
+                <include name="src/**/*.*"/>
+            </srcfiles>
+        </uptodate>
+    </target>
+
+    <target name="clean">
+        <delete dir="${build}"/>
+    </target>    
+
+   <target name="prepare" depends="init"
+            description="Create build directories.">
+        <mkdir dir="${build}/${example}"/>
+        <mkdir dir="${build}/${example}/WEB-INF"/>
+        <mkdir dir="${build}/${example}/WEB-INF/classes"/>
+    </target>
+
+
+    <target name="build" unless="skip.build" depends="prepare"
+            description="Compile Java files and copy static files.">
+        <touch file="${build}/last-build"/>
+
+        <jsf.javac srcdir="src/main/java"
+                   destdir="${build}/${example}/WEB-INF/classes">
+            <classpath>
+                <path refid="classpath"/>
+            </classpath>
+        </jsf.javac>
+
+        <copy todir="${build}/${example}/WEB-INF">
+            <fileset dir="src/main/webapp/WEB-INF">
+                <include name="*.tld"/>
+                <include name="*.xml"/>
+            </fileset>
+        </copy>
+
+        <copy todir="${build}/${example}/">
+            <fileset dir="src/main/webapp">
+                <include name="*.xhtml"/>
+                <include name="*.html"/>
+                <include name="*.gif"/>
+                <include name="*.jpg"/>
+                <include name="*.jsp"/>
+                <include name="*.xml"/>
+            </fileset>
+        </copy>
+        
+        <copy todir="${build}/${example}/resources">
+            <fileset dir="src/main/webapp/resources"/>
+        </copy>
+
+        <jsf.war basedir="${build}"
+                 archive-name="${example}"
+                 webxml="${build}/${example}/WEB-INF/web.xml">
+            <archive-elements>
+                <zipfileset dir="${build}/${example}"/>
+            </archive-elements>
+        </jsf.war>
+    </target>
+
+</project> 
+ 
diff --git a/jsf-demo/sandbox/ezcomp00/pom.xml b/jsf-demo/sandbox/ezcomp00/pom.xml
new file mode 100644
index 0000000..1431a75
--- /dev/null
+++ b/jsf-demo/sandbox/ezcomp00/pom.xml
@@ -0,0 +1,136 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>com.sun.faces</groupId>
+  <artifactId>jsf-ezcomp00</artifactId>
+  <packaging>war</packaging>
+  <name>jsf-ezcomp00</name>
+  <url>https://mojarra.dev.java.net/</url>
+  <description>Ezcomp00 sample app</description>
+  <version>0.1</version>
+
+  <build>
+    <defaultGoal>install</defaultGoal>
+    <sourceDirectory>src/main/java</sourceDirectory>
+    <resources>
+      <resource>
+        <directory>src/main/resources</directory>
+        <targetPath>resources</targetPath>
+        <includes>
+            <include>*.taglib.xml</include>
+            <include>faces-config.xml</include>
+            <include>*.js</include>
+        </includes>
+     </resource>
+   </resources>
+    <finalName>jsf-ezcomp00</finalName>
+    <plugins>
+            <plugin>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>RELEASE</version>
+                <configuration>
+                    <source>1.5</source>
+                    <target>1.5</target>
+                </configuration>
+            </plugin>
+        </plugins>
+  </build>
+
+
+  <repositories>
+    <repository>
+      <snapshots />
+      <id>codecaus</id>
+      <name>codehaus</name>
+      <url>http://repository.codehaus.org</url>
+    </repository>
+    <repository>
+      <snapshots />
+      <id>java.net</id>
+      <name>Java.net Maven 1.x Repository for external projects</name>
+      <url>https://maven-repository.dev.java.net/nonav/repository</url>
+      <layout>legacy</layout>
+    </repository>
+    <repository>
+      <snapshots />
+      <id>java.net.shared</id>
+      <name>Java.net Maven 1.x Repository for glassfish dependencies</name>
+      <url>http://download.java.net/javaee5/external/shared</url>
+      <layout>legacy</layout>
+    </repository>
+    <repository>
+      <snapshots />
+      <id>ibiblio</id>
+      <url>http://www.ibiblio.org/maven2/</url>
+    </repository>
+  </repositories>
+
+  <dependencies>
+    <dependency>
+      <groupId>com.sun.faces</groupId>
+      <artifactId>jsf-api</artifactId>
+      <version>2.0.0-SNAPSHOT</version>
+      <scope>provided</scope>
+    </dependency>
+  </dependencies>
+  <reporting>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-project-info-reports-plugin</artifactId>
+        <reportSets><reportSet /></reportSets>
+      </plugin>
+       <plugin>
+         <groupId>org.apache.maven.plugins</groupId>
+         <artifactId>maven-compiler-plugin</artifactId>
+         <configuration>
+           <source>1.5</source>
+           <target>1.5</target>
+         </configuration>
+       </plugin>
+    </plugins>
+  </reporting>
+
+</project>
diff --git a/jsf-demo/sandbox/ezcomp02/build.xml b/jsf-demo/sandbox/ezcomp02/build.xml
new file mode 100644
index 0000000..74398ba
--- /dev/null
+++ b/jsf-demo/sandbox/ezcomp02/build.xml
@@ -0,0 +1,145 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project name="ezcomp02" default="build" basedir=".">
+
+
+    <property file="${user.home}/build.properties"/>
+    <property file="../../../build.properties"/>
+    <import file="${jsf.build.home}/common/ant/common.xml"/>
+
+    <!-- Configure the context path for this application -->
+    <property name="context.path" value="/ezcomp02"/>
+    <property name="example" value="ezcomp02"/>
+    <property name="build" value="${basedir}/build"/>
+
+    <path id="classpath">       
+        <pathelement location="${javax.faces-api.jar}"/>
+        <pathelement location="${javax.faces.jar}"/>
+        <path refid="compile.classpath"/>
+    </path>
+    
+    <target name="init" depends="check.changes">
+        <tstamp/>
+    </target>
+
+    <target name="check.changes">
+        <uptodate property="skip.build"
+                  targetfile="${build}/last-build">
+            <srcfiles dir="${basedir}">
+                <include name="src/**/*.*"/>
+            </srcfiles>
+        </uptodate>
+    </target>
+
+    <target name="clean">
+        <delete dir="${build}"/>
+    </target>    
+
+   <target name="prepare" depends="init"
+            description="Create build directories.">
+        <mkdir dir="${build}/${example}"/>
+        <mkdir dir="${build}/${example}/WEB-INF"/>
+        <mkdir dir="${build}/${example}/WEB-INF/classes"/>
+    </target>
+
+
+    <target name="build" unless="skip.build" depends="prepare"
+            description="Compile Java files and copy static files.">
+        <touch file="${build}/last-build"/>
+
+        <jsf.javac srcdir="src/main/java"
+                   destdir="${build}/${example}/WEB-INF/classes">
+            <classpath>
+                <path refid="classpath"/>
+            </classpath>
+        </jsf.javac>
+
+        <copy todir="${build}/${example}/WEB-INF">
+            <fileset dir="src/main/webapp/WEB-INF">
+                <include name="*.tld"/>
+                <include name="*.xml"/>
+            </fileset>
+        </copy>
+
+        <copy todir="${build}/${example}/">
+            <fileset dir="src/main/webapp">
+                <include name="*.xhtml"/>
+                <include name="*.html"/>
+                <include name="*.gif"/>
+                <include name="*.jpg"/>
+                <include name="*.jsp"/>
+                <include name="*.xml"/>
+            </fileset>
+        </copy>
+        
+        <copy todir="${build}/${example}/resources">
+            <fileset dir="src/main/webapp/resources"/>
+        </copy>
+        <copy todir="${build}/${example}/WEB-INF/groovy">
+            <fileset dir="src/main/webapp/WEB-INF/groovy"/>
+        </copy>
+
+        <jsf.war basedir="${build}"
+                 archive-name="${example}"
+                 webxml="${build}/${example}/WEB-INF/web.xml">
+            <archive-elements>
+                <zipfileset dir="${build}/${example}"/>
+            </archive-elements>
+        </jsf.war>
+    </target>
+
+    <target name="install">
+        <deploy.artifact
+              artifact="${basedir}/target/jsf-ezcomp02.war"
+              appName="jsf-ezcomp02"/>
+    </target>    
+
+    <target name="remove">
+        <undeploy.artifact
+              artifact="${basedir}/target/jsf-ezcomp02.war"
+              appName="jsf-ezcomp02"/>
+    </target>    
+
+
+</project> 
+ 
diff --git a/jsf-demo/sandbox/ezcomp02/pom.xml b/jsf-demo/sandbox/ezcomp02/pom.xml
new file mode 100644
index 0000000..ce46303
--- /dev/null
+++ b/jsf-demo/sandbox/ezcomp02/pom.xml
@@ -0,0 +1,141 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>com.sun.faces</groupId>
+  <artifactId>jsf-ezcomp02</artifactId>
+  <packaging>war</packaging>
+  <name>jsf-ezcomp02</name>
+  <url>https://mojarra.dev.java.net/</url>
+  <description>Ezcomp02 sample app</description>
+  <version>0.1</version>
+
+  <build>
+    <defaultGoal>install</defaultGoal>
+    <sourceDirectory>src/main/java</sourceDirectory>
+    <resources>
+      <resource>
+        <directory>src/main/resources</directory>
+        <targetPath>resources</targetPath>
+        <includes>
+            <include>*.taglib.xml</include>
+            <include>faces-config.xml</include>
+            <include>*.js</include>
+        </includes>
+     </resource>
+   </resources>
+    <finalName>jsf-ezcomp02</finalName>
+    <plugins>
+            <plugin>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>2.3.1</version>
+                <configuration>
+                    <source>1.5</source>
+                    <target>1.5</target>
+                </configuration>
+            </plugin>
+        </plugins>
+  </build>
+
+
+  <repositories>
+    <repository>
+      <id>maven2-repository.dev.java.net</id>
+      <name>Java.net Repository for Maven</name>
+      <url>http://download.java.net/maven/2</url>
+    </repository>
+    <repository>
+      <snapshots />
+      <id>codecaus</id>
+      <name>codehaus</name>
+      <url>http://repository.codehaus.org</url>
+    </repository>
+    <repository>
+      <snapshots />
+      <id>java.net</id>
+      <name>Java.net Maven 1.x Repository for external projects</name>
+      <url>https://maven-repository.dev.java.net/nonav/repository</url>
+      <layout>legacy</layout>
+    </repository>
+    <repository>
+      <snapshots />
+      <id>java.net.shared</id>
+      <name>Java.net Maven 1.x Repository for glassfish dependencies</name>
+      <url>http://download.java.net/javaee5/external/shared</url>
+      <layout>legacy</layout>
+    </repository>
+    <repository>
+      <snapshots />
+      <id>ibiblio</id>
+      <url>http://www.ibiblio.org/maven2/</url>
+    </repository>
+  </repositories>
+
+  <dependencies>   
+    <dependency>
+      <groupId>javax</groupId>
+      <artifactId>javaee-api</artifactId>
+      <version>6.0</version>
+      <scope>provided</scope>
+    </dependency>
+  </dependencies>
+  <reporting>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-project-info-reports-plugin</artifactId>
+        <reportSets><reportSet /></reportSets>
+      </plugin>
+       <plugin>
+         <groupId>org.apache.maven.plugins</groupId>
+         <artifactId>maven-compiler-plugin</artifactId>
+         <configuration>
+           <source>1.5</source>
+           <target>1.5</target>
+         </configuration>
+       </plugin>
+    </plugins>
+  </reporting>
+
+</project>
diff --git a/jsf-demo/sandbox/ezcomp02/src/main/java/ezcomp/componentWithBackingJavaClass.java b/jsf-demo/sandbox/ezcomp02/src/main/java/ezcomp/componentWithBackingJavaClass.java
new file mode 100644
index 0000000..7e52b57
--- /dev/null
+++ b/jsf-demo/sandbox/ezcomp02/src/main/java/ezcomp/componentWithBackingJavaClass.java
@@ -0,0 +1,55 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package ezcomp;
+
+import javax.faces.component.UIComponentBase;
+
+
+public class componentWithBackingJavaClass extends UIComponentBase {
+
+    @Override
+    public String getFamily() {
+        return "javax.faces.NamingContainer";
+    }
+    
+    
+
+}
diff --git a/jsf-demo/sandbox/ezcomp02/src/main/webapp/WEB-INF/composite-test.taglib.xml b/jsf-demo/sandbox/ezcomp02/src/main/webapp/WEB-INF/composite-test.taglib.xml
new file mode 100644
index 0000000..5a710d8
--- /dev/null
+++ b/jsf-demo/sandbox/ezcomp02/src/main/webapp/WEB-INF/composite-test.taglib.xml
@@ -0,0 +1,52 @@
+<?xml version="1.0"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE facelet-taglib PUBLIC
+  "-//Sun Microsystems, Inc.//DTD Facelet Taglib 1.0//EN"
+  "http://java.sun.com/dtd/facelet-taglib_1_0.dtd">
+
+<facelet-taglib>
+    <namespace>http://domain.com/path</namespace>
+    <composite-library-name>compositeTest</composite-library-name>
+</facelet-taglib>
+
diff --git a/jsf-demo/sandbox/ezcomp02/src/main/webapp/WEB-INF/faces-config.xml b/jsf-demo/sandbox/ezcomp02/src/main/webapp/WEB-INF/faces-config.xml
new file mode 100644
index 0000000..22a5837
--- /dev/null
+++ b/jsf-demo/sandbox/ezcomp02/src/main/webapp/WEB-INF/faces-config.xml
@@ -0,0 +1,82 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!-- =========== FULL CONFIGURATION FILE ================================== -->
+
+<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
+              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+              xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
+              version="2.0">
+
+  <managed-bean>
+    <managed-bean-name>bean</managed-bean-name>
+    <managed-bean-class>
+      model.Bean
+    </managed-bean-class>
+    <managed-bean-scope>session</managed-bean-scope>
+  </managed-bean>
+
+    <navigation-rule>
+        <from-view-id>/index.xhtml</from-view-id>
+        <navigation-case>
+            <from-outcome>login</from-outcome>
+            <to-view-id>/page2.xhtml</to-view-id>
+        </navigation-case>
+        <navigation-case>
+            <from-outcome>cancel</from-outcome>
+            <to-view-id>/page2.xhtml</to-view-id>
+        </navigation-case>
+    </navigation-rule>
+
+    <navigation-rule>
+        <from-view-id>/page2.xhtml</from-view-id>
+        <navigation-case>
+            <from-outcome>back</from-outcome>
+            <to-view-id>/index.xhtml</to-view-id>
+        </navigation-case>
+    </navigation-rule>
+
+
+  
+
+</faces-config>
diff --git a/jsf-demo/sandbox/ezcomp02/src/main/webapp/WEB-INF/groovy/model/Bean.groovy b/jsf-demo/sandbox/ezcomp02/src/main/webapp/WEB-INF/groovy/model/Bean.groovy
new file mode 100644
index 0000000..80d021c
--- /dev/null
+++ b/jsf-demo/sandbox/ezcomp02/src/main/webapp/WEB-INF/groovy/model/Bean.groovy
@@ -0,0 +1,106 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package model;
+
+import javax.faces.context.FacesContext;
+import javax.faces.event.AbortProcessingException;
+import javax.faces.event.ActionEvent;
+import javax.faces.event.ActionListener;
+import javax.faces.event.ValueChangeEvent;
+import javax.faces.event.ValueChangeListener;
+
+public class Bean implements ActionListener, ValueChangeListener {
+    
+    private String requestKey = "Hello World!";
+
+    public void setRequestKey(String message) {
+        this.requestKey = message;
+    }
+    
+    public String getRequestKey() {
+        return requestKey;
+    }
+    
+    public String loginAction() {
+        return "login";
+    }
+
+    public String backAction() {
+        return "back";
+    }
+
+    public ActionListener getLoginEventListener() {
+        return this;
+    }
+    
+    public ValueChangeListener getUseridValueChangeListener() {
+        Bean other = new Bean();
+        other.setRequestKey("useridValueChangeListener");
+        return ((ValueChangeListener) other);
+    }
+
+    public ValueChangeListener getPasswordValueChangeListener() {
+        Bean other = new Bean();
+        other.setRequestKey("passwordValueChangeListener");
+        return ((ValueChangeListener) other);
+    }
+
+    public ValueChangeListener getAllInputsListener() {
+        Bean other = new Bean();
+        other.setRequestKey("allInputsValueChangeListener");
+        return ((ValueChangeListener) other);
+    }
+
+
+    public void processValueChange(ValueChangeEvent arg0) throws AbortProcessingException {
+        FacesContext.getCurrentInstance().getExternalContext().getRequestMap().
+                put(getRequestKey(), Boolean.TRUE);
+    }
+    
+    
+
+    public void processAction(ActionEvent event) {
+        FacesContext.getCurrentInstance().getExternalContext().getRequestMap().
+                put("loginEventCalled", Boolean.TRUE);
+        
+    }
+
+}
diff --git a/jsf-demo/sandbox/ezcomp02/src/main/webapp/WEB-INF/web.xml b/jsf-demo/sandbox/ezcomp02/src/main/webapp/WEB-INF/web.xml
new file mode 100755
index 0000000..9570fed
--- /dev/null
+++ b/jsf-demo/sandbox/ezcomp02/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,128 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<web-app version="2.5"
+         xmlns="http://java.sun.com/xml/ns/javaee"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
+
+    <display-name>CompRes Blank Facelets App</display-name>
+    <description>CompRes Blank Facelets App</description>
+
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>server</param-value>
+    </context-param>
+
+    <context-param>
+        <param-name>javax.faces.validator.DISABLE_DEFAULT_BEAN_VALIDATOR</param-name>
+        <param-value>true</param-value>
+    </context-param>
+
+    <context-param>
+        <param-name>com.sun.faces.enableGroovyScripting</param-name>
+        <param-value>true</param-value>
+    </context-param>
+
+    <context-param>
+	<param-name>javax.faces.DEFAULT_SUFFIX</param-name>
+	<param-value>.xhtml</param-value>
+    </context-param>
+    <context-param>
+        <param-name>facelets.DEVELOPMENT</param-name>
+        <param-value>true</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>Development</param-value>
+    </context-param>
+    <context-param>
+	<param-name>javax.faces.FACELETS_LIBRARIES</param-name>
+	<param-value>/WEB-INF/composite-test.taglib.xml</param-value>
+    </context-param>
+
+
+
+    <context-param>
+        <description>
+            Set this flag to true if you want the JavaServer Faces
+            Reference Implementation to validate the XML in your
+            faces-config.xml resources against the DTD. Default
+            value is false.
+        </description>
+        <param-name>com.sun.faces.validateXml</param-name>
+        <param-value>true</param-value>
+    </context-param>
+
+    <!-- Faces Servlet -->
+  <servlet>
+    <servlet-name>Faces Servlet</servlet-name>
+    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+    <load-on-startup>1</load-on-startup>
+  </servlet>
+
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+        <url-pattern>*.jsf</url-pattern>
+    </servlet-mapping>
+
+    <filter>
+	<filter-name>GroovyFilter</filter-name>
+	<filter-class>com.sun.faces.scripting.GroovySupportFilter</filter-class>
+    </filter>
+    <filter-mapping>
+	 <filter-name>GroovyFilter</filter-name>
+	 <url-pattern>/*</url-pattern>
+	 <dispatcher>REQUEST</dispatcher>
+	 <dispatcher>FORWARD</dispatcher>
+	 <dispatcher>INCLUDE</dispatcher>
+	 <dispatcher>ERROR</dispatcher>
+    </filter-mapping>
+
+    <welcome-file-list>
+        <welcome-file>index.jsf</welcome-file>
+    </welcome-file-list>
+
+
+</web-app>
diff --git a/jsf-demo/sandbox/ezcomp02/src/main/webapp/index.html b/jsf-demo/sandbox/ezcomp02/src/main/webapp/index.html
new file mode 100644
index 0000000..b351829
--- /dev/null
+++ b/jsf-demo/sandbox/ezcomp02/src/main/webapp/index.html
@@ -0,0 +1,47 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<html>
+<header>
+<meta http-equiv="Refresh" content="0;url=index.jsf">
+</header>
+</html>
diff --git a/jsf-demo/sandbox/ezcomp02/src/main/webapp/index.xhtml b/jsf-demo/sandbox/ezcomp02/src/main/webapp/index.xhtml
new file mode 100644
index 0000000..a770c02
--- /dev/null
+++ b/jsf-demo/sandbox/ezcomp02/src/main/webapp/index.xhtml
@@ -0,0 +1,107 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:ez="http://java.sun.com/jsf/composite/ezcomp"
+      xmlns:ct="http://domain.com/path">
+<h:head>
+<title>A more complex composite component demo than ezcomp</title>
+<style type="text/css">
+.grayBox { padding: 8px; margin: 10px 0; border: 1px solid #CCC; background-color: #f9f9f9;  }
+</style>
+
+</h:head>
+
+<h:body>
+
+<p>Login Panel Component</p>
+
+
+  <ui:debug hotkey="p" rendered="true"/>
+
+<h:form>
+
+  <div id="cc" class="grayBox" style="border: 1px solid #090;">
+
+    <ez:loginPanel id="loginPanel" usernameLabel="Username" pinLabel="PIN" 
+                   loginLabel="Login" model="#{bean}" 
+                   action="#{bean.loginAction}">
+
+      <f:valueChangeListener for="usernameInput"
+			     binding="#{bean.useridValueChangeListener}" />
+      <f:valueChangeListener for="pinInput"
+			     binding="#{bean.passwordValueChangeListener}" />
+      <f:valueChangeListener for="allInputs"
+			     binding="#{bean.allInputsListener}" />
+
+      <f:actionListener for="loginEvent" 
+                        binding="#{bean.loginEventListener}" />
+
+    </ez:loginPanel>
+
+  </div>
+
+<p><h:commandButton value="reload" /></p>
+
+<div id="cc" class="grayBox" style="border: 1px solid #090;">
+
+  <ct:foo />
+
+</div>
+
+  <div id="cc" class="grayBox" style="border: 1px solid #090;">
+
+    <ez:componentWithBackingJavaClass />
+
+  </div>
+
+
+
+</h:form>
+
+</h:body>
+
+</html>
diff --git a/jsf-demo/sandbox/ezcomp02/src/main/webapp/page2.xhtml b/jsf-demo/sandbox/ezcomp02/src/main/webapp/page2.xhtml
new file mode 100644
index 0000000..5e8deab
--- /dev/null
+++ b/jsf-demo/sandbox/ezcomp02/src/main/webapp/page2.xhtml
@@ -0,0 +1,89 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+<f:view contentType="text/html"/>
+
+<h:head>
+    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
+    <title>Page2</title>
+</h:head>
+
+<h:body>
+
+<h1>Page2</h1>
+
+<h:form prependId="false">
+
+  <p>This will be true if the groovy component was called: <h:outputText
+  value="${groovyCalled}" />.</p>
+
+  <p>This will have a value if the retargeted actionListener for
+  loginEvent was called: <h:outputText value="${loginEventCalled}"
+  />.</p>
+
+  <p>This will be true if the retargeted valueChangeListener for the
+  userid field was called: <h:outputText
+  value="${useridValueChangeListener}" />.</p>
+
+  <p>This will be true if the retargeted valueChangeListener for the
+  pin field was called: <h:outputText
+  value="${passwordValueChangeListener}" />.</p>
+
+  <p>This will be true if the retargeted valueChangeListener for 
+  allInputs was called: <h:outputText
+  value="${allInputsValueChangeListener}" />.</p>
+
+
+
+  <h:commandButton value="back" action="#{bean.backAction}" />
+
+</h:form>
+
+
+</h:body>
+
+</html>
diff --git a/jsf-demo/sandbox/ezcomp02/src/main/webapp/resources/compositeTest/foo.xhtml b/jsf-demo/sandbox/ezcomp02/src/main/webapp/resources/compositeTest/foo.xhtml
new file mode 100644
index 0000000..c9514e4
--- /dev/null
+++ b/jsf-demo/sandbox/ezcomp02/src/main/webapp/resources/compositeTest/foo.xhtml
@@ -0,0 +1,69 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:composite="http://java.sun.com/jsf/composite">
+<head>
+
+<title>Not present in rendered output</title>
+
+</head>
+
+<body>
+
+<composite:interface componentType="javax.faces.NamingContainer">
+</composite:interface>
+
+<composite:implementation>
+
+  <p>This is the composite component whose resource library name is
+  declared in a taglib file.</p>
+
+</composite:implementation>
+
+</body>
+
+</html>
diff --git a/jsf-demo/sandbox/ezcomp02/src/main/webapp/resources/ezcomp/LoginProductName.png b/jsf-demo/sandbox/ezcomp02/src/main/webapp/resources/ezcomp/LoginProductName.png
new file mode 100644
index 0000000..9b0ba51
Binary files /dev/null and b/jsf-demo/sandbox/ezcomp02/src/main/webapp/resources/ezcomp/LoginProductName.png differ
diff --git a/jsf-demo/sandbox/ezcomp02/src/main/webapp/resources/ezcomp/colorAndMedia.css b/jsf-demo/sandbox/ezcomp02/src/main/webapp/resources/ezcomp/colorAndMedia.css
new file mode 100644
index 0000000..2170460
--- /dev/null
+++ b/jsf-demo/sandbox/ezcomp02/src/main/webapp/resources/ezcomp/colorAndMedia.css
@@ -0,0 +1,1111 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+/* CSS Document */
+
+body {
+	color:#000;}
+
+a:link, a:visited {
+	color:#003399;
+	text-decoration:none;
+}
+a:hover {
+	color:#003399;
+	text-decoration:underline;
+}
+
+/* SKIP NAVIGATION LINK */
+.SkpWht_sun4 {
+	background-color:#FFFFFF;
+}
+.SkpMedGry1_sun4 {
+	background-color:#E5E9ED
+}
+/*---*/
+
+/* ADDREMOVE [originalName: ADD-REMOVE-IDIOM]*/
+
+.AddRmvLbl_sun4 {
+	color:#000;
+}
+
+.AddRmvLbl2_sun4 {
+  background: #f7f8fb url(#{resource['ezcomp:add-rem_header.gif']}) repeat-x top;
+	border-top: 1px solid #a4aaaf;
+	border-right: 1px solid #a4aaaf;
+	border-bottom: 1px solid #686b6e;
+	border-left: 1px solid #a4aaaf;
+}
+
+.AddRmvLbl2_sun4, .AddRmvLbl2ReadOnly_sun4 {
+	color:#000;
+}
+
+/*---*/
+/* BREADCRUMBS */
+.BcmWhtDiv_sun4 {
+	background-color:#FFF;
+}
+.BcmGryDiv_sun4 {
+	background-color:#E5E9ED;
+}
+a.BcmLnk_sun4:link, a.BcmLnk_sun4:visited, a.BcmLnk_sun4:hover, .BcmSep_sun4 {
+	color:#003399;
+}
+a.BcmLnk_sun4:link, a.BcmLnk_sun4:visited {
+	text-decoration:none;
+}
+a.BcmLnk_sun4:hover {
+	text-decoration:underline;
+}
+/*---*/
+
+/* BUTTONS */
+
+.Btn1_sun4, .Btn1Mni_sun4 {
+  background:#ABD2EB url(#{resource['ezcomp:primary-enabled.gif']}) repeat-x top;
+	border-top-color:#6C8197;
+	border-right-color:#4E647A;
+	border-bottom-color:#263E5A;
+	border-left-color:#4E647A;
+}
+
+.Btn1Hov_sun4, .Btn1MniHov_sun4 {
+  background:#E2F1FF url(#{resource['ezcomp:primary-roll.gif']}) repeat-x top;
+	border-top-color:#6D8197;
+	border-right-color:#475D75;
+	border-bottom-color:#273E5A;
+	border-left-color:#475D75;
+}
+
+.Btn2_sun4, .Btn2Mni_sun4, .Btn2Hov_sun4, .Btn2MniHov_sun4 {
+	border-top-color:#83858C;
+	border-right-color:#62656B;
+	border-bottom-color:#44464C;
+	border-left-color:#62656B;
+}
+
+.Btn2_sun4, .Btn2Mni_sun4 {
+  background:#E0E3EB url(#{resource['ezcomp:secondary-enabled.gif']}) repeat-x top;
+}
+
+.Btn2Hov_sun4, .Btn2MniHov_sun4 {
+  background: #F4F7FE url(#{resource['ezcomp:secondary-roll.gif']}) repeat-x top;
+}
+
+
+
+.Btn1Dis_sun4, .Btn1MniDis_sun4 {
+  background:#BAC4D1 url(#{resource['ezcomp:primary-disabled.gif']}) repeat-x top;
+	color:#777E86;
+	border-top-color:#B5BDC6;
+	border-right-color:#A7AFB8;
+	border-bottom-color:#99A0A8;
+	border-left-color:#A7AFB8;
+}
+
+.Btn2Dis_sun4, .Btn2MniDis_sun4 {
+  background:#D1D4DB url(#{resource['ezcomp:secondary-disabled.gif']}) repeat-x top;
+	color:#7C7D82;
+	border-top-color:#CCCDD0;
+	border-right-color:#BEBFC2;
+	border-bottom-color:#AEAFB2;
+	border-left-color:#BEBFC2;
+}
+
+.Btn1Hov_sun4, .Btn1MniHov_sun4, .Btn2Hov_sun4, .Btn2MniHov_sun4 {
+	cursor:pointer;
+}
+.MstDiv_sun4 .Btn1_sun4, .MstDiv_sun4 .Btn1Mni_sun4, .MstDiv_sun4 .Btn2_sun4, .MstDiv_sun4 .Btn2Mni_sun4, .MstDiv_sun4 .Btn1Hov_sun4, .MstDiv_sun4 .Btn1MniHov_sun4, .MstDiv_sun4 .Btn2Hov_sun4, .MstDiv_sun4 .Btn2MniHov_sun4,
+.mastheadButton_4_sun4 a:link, .mastheadButton_4_sun4 a:visited, .mastheadButton_4_sun4 a:hover {
+	color:#FFF;
+	vertical-align:middle;
+}.MstDiv_sun4 .Btn1_sun4, .MstDiv_sun4 .Btn1Mni_sun4, .MstDiv_sun4 .Btn2_sun4, .MstDiv_sun4 .Btn2Mni_sun4,
+.mastheadButton_4_sun4 a:link, .mastheadButton_4_sun4 a:visited {
+  background:#7595AB url(#{resource['ezcomp:masthead_button.gif']}) repeat-x bottom;
+}.mastheadButton_4_sun4 a:link, .mastheadButton_4_sun4 a:visited, .mastheadButton_4_sun4 a:hover {
+	text-decoration:none;
+}
+.mastheadButton_4_sun4 a:hover,
+.MstDiv_sun4 .Btn1Hov_sun4, .MstDiv_sun4 .Btn1MniHov_sun4, .MstDiv_sun4 .Btn2Hov_sun4, .MstDiv_sun4 .Btn2MniHov_sun4 {
+  background:#99B0C4 url(#{resource['ezcomp:masthead_button_over.gif']}) repeat-x bottom;
+}
+
+.mastheadButton_4_sun4 {
+	background-color:#374154;
+	border-top-color:#4a5467;
+	border-right-color:#374154;
+	border-left-color:#374154;
+	border-bottom-color:#7ea0b8;
+}
+/*---*/
+/* SCHEDULER [originalName: DATE AND TIME]*/
+.DatCalDiv_sun4 {
+	border-left-color: #5F6466;
+	border-right-color:#5F6466;
+	border-bottom-color:#5F6466;
+}
+.DatSelTopMiddle_sun4 {
+	background-color:#3D6079;
+	border-top-color:#5F6466;
+}
+
+.DatSelContent_sun4 {
+	border-left-color: #5F6466;
+	border-right-color:#5F6466;
+  background:#3D6079 url(#{resource['ezcomp:header-short.gif']}) bottom left repeat-x;
+	color:#FFFFFF;
+}
+
+.DatCalDiv_sun4 {
+	border-left-color: #5F6466;
+	border-right-color:#5F6466;
+	border-bottom-color:#5F6466;
+}
+
+.DatCalDiv_sun4, .DatCalTbl_sun4 th {
+	background-color:#E3E7EA;
+}
+
+.DatCalTbl_sun4 th {
+	border-color:#E3E7EA;
+}
+
+.DatCalTbl_sun4 td {
+	border-color:#E1E5E8;
+}
+
+.DatDayHdrTxt_sun4, .DatZonTxt_sun4 {
+	color:#000000;
+}
+.DatZonTxt_sun4 {
+	color:#707277;
+}
+.DatLblTxt_sun4 {
+	color:#666;
+}
+
+a.DatLnk_sun4:link, a.DatLnk_sun4:visited {
+	color:#000000;
+	background-color:#fff;
+	text-decoration:none;
+	border-color:#fff;
+}
+
+a.DatLnk_sun4:hover {
+	text-decoration:underline;
+	border-color:#fff;
+}
+
+a.DatBldLnk_sun4:link, a.DatBldLnk_sun4:visited {
+	color:#000000;
+	background-color:#90B7D0;
+	border-top-color:#242E34;
+	border-right-color:#90B7D0;
+	border-bottom-color:#90B7D0;
+	border-left-color:#242E34;
+	text-decoration:none;
+}
+
+a.DatBldLnk_sun4:hover {
+	text-decoration:underline;
+}
+
+a.DatCurLnk_sun4:link, a.DatCurLnk_sun4:visited {
+	color:#000;
+	background-color:#fff;
+	text-decoration:none;
+	border-color:#fff;
+}
+
+a.DatCurLnk_sun4:hover {
+	text-decoration:underline;
+	border-color:#fff;
+}
+
+a.DatOthLnk_sun4 {
+	color:#000;
+	background-color:#ECF0F3;
+	text-decoration:none;
+	border-color:#ECF0F3;
+}
+
+a.DatOthLnk_sun4:hover {
+	text-decoration:underline;
+}
+
+a.DatOthBldLnk_sun4:link, a.DatOthBldLnk_sun4:visited {
+	color:#000000;
+	background-color:#90B7D0;
+	border-top-color:#242E34;
+	border-right-color:#90B7D0;
+	border-bottom-color:#90B7D0;
+	border-left-color:#242E34;
+	text-decoration:none;
+}
+
+a.DatOthBldLnk_sun4:hover {
+	text-decoration:underline;
+}
+/*---*/
+
+/*CALENDAR */
+.CalPopDiv_sun4 {
+  background:transparent url(#{resource['ezcomp:calpop_dropshadow.png']}) bottom right no-repeat;
+}
+.CalPopDiv_sun4  a.DatCurLnk_sun4:hover, .CalPopDiv_sun4  a.DatLnk_sun4:hover, .CalPopDiv_sun4 a.DatBldLnk_sun4:hover, .CalPopDiv_sun4 a.DatOthBldLnk_sun4:hover {
+	text-decoration:underline;
+}
+.CalPopDiv_sun4 .DatCalDiv_sun4 {
+	background-color:#E5E9ED;
+}
+.CalPopDiv_sun4 a.DatOthLnk_sun4 {
+	background-color:#E5E9ED;
+	border-color:#E5E9ED;
+}
+.CalPopDiv_sun4 a.DatOthLnk_sun4:hover {
+	text-decoration:underline;
+}
+.DatCalDiv_sun4, .DatCalTbl_sun4 th {
+	background-color:#E3E7EA;
+}
+.CalPopDiv_sun4 .DatCalTbl_sun4 {
+	border-color:#D6DCE1;
+}
+.CalPopDiv_sun4 .DatCalTbl_sun4 td {
+	border-color:#D6DCE1;
+}
+.CalPopDiv_sun4 .DatCalTbl_sun4 th {
+	border-color:#D6DCE1;
+	background-color:#E5E9ED;
+}
+.CalPopDiv_sun4 a.CalPopClsLnk_sun4:link, .CalPopDiv_sun4 a.CalPopClsLnk_sun4:active {
+	color:#333;
+	border-color:#A8B8C3;
+	text-decoration:none;
+}
+.CalPopDiv_sun4 a.CalPopClsLnk_sun4:hover {
+	text-decoration:underline;
+}
+.CalPopDiv_sun4 .CalPopFtrDiv_sun4 {
+  background:#EEF1F4 url(#{resource['ezcomp:calpop_footer_grad.gif']}) bottom left repeat-x;
+}
+.CalPopDiv_sun4 .CurDayTxt_sun4 {
+	color:#333;
+}
+/*---*/
+
+/* FILE CHOOSER */
+.ChoLblTxt_sun4 {
+	color:#5F6466;
+}
+.ChoSrvTxt_sun4 {
+	color:#333;
+}
+.ChoHr_sun4 {
+	background-color: #98a0a5;
+}
+.ChoLstHdr_sun4 {
+  background: #f7f8fb url(#{resource['ezcomp:column_hdr_gradient.gif']}) repeat-x top;
+	border-top: 1px solid #9ca4aa;
+	border-bottom: 1px none #686b6e;
+	border-left: 1px solid #9ca4aa;
+	border-right: 1px solid #9ca4aa;
+}
+.ChoLstHdr_sun4 .ChoSizeHdr_sun4 {
+	border-right: 1px solid #ced0d3;
+	border-left: 1px solid #ced0d3;
+}
+
+/*---*/
+/* PAGEALERT [originalName: FULL ALERTS]*/
+.FulAlrtHdrTxt_sun4, .FulAlrtMsgTxt_sun4 {
+	color:#000;
+}
+/* INLINE ALERT */
+.inlineAlert_4_sun4 .topLeftCorner_sun4 {
+  background:transparent url(#{resource['ezcomp:alertbackground_top_left.gif']}) no-repeat;
+}
+.inlineAlert_4_sun4 .topMiddle_sun4 {
+  background:transparent url(#{resource['ezcomp:alertbackground_top.gif']}) top repeat-x;
+}
+.inlineAlert_4_sun4 .topRightCorner_sun4 {
+  background:transparent url(#{resource['ezcomp:alertbackground_top_right.gif']}) no-repeat;
+}
+.inlineAlert_4_sun4 .middleRow_sun4 {
+	background-color:#FFF7C8;
+}
+.inlineAlert_4_sun4 .leftMiddle_sun4 {
+  background:#FFF7C8 url(#{resource['ezcomp:alertbackground_middle.gif']}) top left repeat-x;
+	border-left-color:#EDE18D;
+} 
+.inlineAlert_4_sun4 .middle_sun4 {
+  background:#FFF7C8 url(#{resource['ezcomp:alertbackground_middle.gif']}) top left repeat-x;
+} 
+.inlineAlert_4_sun4 .middle_sun4 .details_sun4 a {
+	color:#003399;
+	text-decoration:none;
+}
+.inlineAlert_4_sun4 .middle_sun4 .details_sun4 a:hover {
+	text-decoration:underline;
+}
+.inlineAlert_4_sun4 .rightMiddle_sun4 {
+  background:#FFF7C8 url(#{resource['ezcomp:alertbackground_middle.gif']}) top left repeat-x;
+	border-right-color:#EDE18D;
+}
+.inlineAlert_4_sun4 .bottomLeftCorner_sun4 {
+  background:transparent url(#{resource['ezcomp:alertbackground_bottom_left.gif']}) no-repeat;
+}
+.inlineAlert_4_sun4 .bottomMiddle_sun4 {
+	background-color:#FFF7C8;
+	border-bottom-color:#E6DDA2;
+}
+.inlineAlert_4_sun4 .bottomRightCorner_sun4 {
+  background:transparent url(#{resource['ezcomp:alertbackground_bottom_right.gif']}) no-repeat;}
+/*---*/
+
+/* HELP WINDOW */
+body.HlpBdy_sun4 {
+	background-color:#FFF;
+	color:#000000;
+	border-left-color:#A8B0B5;
+}
+.HlpMstTtlBdy_sun4 {
+	background-color:#E5E9ED;
+}
+.HlpBtnDiv_sun4 {
+  background:#E5E9ED url(#{resource['ezcomp:background_border_bottom.gif']}) bottom left repeat-x;
+}
+/*---*/
+
+/* HELPINLINE [originalName: INLINE HELP]*/
+.inlinePageHelp_sun4, .inlineFieldHelp_sun4 {
+	color:#707277;
+}
+ .inlinePageHelp_sun4 a, a.HlpPgeLnk_sun4:link, a.HlpPgeLnk_sun4:visited, a.HlpFldLnk_sun4:link, a.HlpFldLnk_sun4:visited {
+	color:#003399;
+	text-decoration:none;
+}
+.inlinePageHelp_sun4 a:hover, a.HlpPgeLnk_sun4:hover, a.HlpFldLnk_sun4:hover {
+	color:#003399;
+	text-decoration:underline;
+}
+/*---*/
+
+/* CHECKBOXES AND RADIO BUTTONS */
+.CbDis_sun4, .RbDis_sun4 {
+	color:#848687;
+}
+/*---*/
+
+/* LABEL [originalName: GENERIC FIELD LABELS]*/
+
+.LblLev1Txt_sun4, .LblLev2Txt_sun4, .LblLev2smTxt_sun4 .LblLev3Txt_sun4 {
+	color:#000000;
+}
+.LblLev1TxtDis_sun4, .LblLev2TxtDis_sun4, .LblLev2smTxtDis_sun4, .LblLev3TxtDis_sun4 {
+	color:#7E7E7E;
+}
+.LblRqdDiv_sun4 {
+	color:#707277;
+}
+
+/*---*/
+/* LEFT PANE HELP */
+.LftHlpMst_sun4 {
+	background:#E5E9ED;
+}
+.LftHlpHlp_sun4 {
+  background:#E5E9ED url(#{resource['ezcomp:left-pane-background.gif']}) left top repeat-x;
+}
+.LftHlpBdy_sun4 {
+	background-color:#FFFFFF;
+}
+.LftHlpBtm_sun4, .LftHlpBtnBtm_sun4 {
+	background-color:#E5E9ED;
+}
+.LftHlpTxt_sun4, .LftHlpHlp_sun4, .LftHlpBdy_sun4 {
+	color:#000000;
+}
+.LftHlpBdy_sun4, .LftHlpBtm_sun4, .LftHlpBtnBtm_sun4, .LftHlpMst_sun4 {
+	border-color:#A8B0B5;
+}
+/*---*/
+/* LISTS */
+/* Regular List */
+.Lst_sun4, .LstMno_sun4 {
+  background:#FFFFFF url(#{resource['ezcomp:bg_gradient.gif']}) repeat-x top;
+}
+.LstDis_sun4, .LstMnoDis_sun4 {
+  background:#EAEDF0 url(#{resource['ezcomp:bg_gradient_disabled.gif']}) repeat-x top;
+}
+.Lst_sun4, .LstDis_sun4, .LstMno_sun4, .LstMnoDis_sun4 {
+	border-top-color:#686B6E;
+	border-right-color:#CDCDCF;
+	border-bottom-color:#CDCDCF;
+	border-left-color:#CDCDCF;
+}
+.Lst_sun4, .LstOpt_sun4, .LstOptSel_sun4, .LstOptGrp_sun4, .LstMno_sun4, .LstMno_sun4 .LstOptGrp_sun4 {
+	color:#333;
+}
+.LstOptSep_sun4, .LstOptDis_sun4 {
+	color:#848687;
+}
+.LstDis_sun4, .LstDis_sun4 option, .LstDis_sun4 .LstOptGrp_sun4, .LstMnoDis_sun4, .LstMnoDis_sun4 option, .LstMnoDis_sun4 .LstOptGrp_sun4 {
+	background-color:#EAEDF0;
+	color:#848687;
+}
+/*---*/
+
+/* MESSAGE AND MESSAGE GROUPS */
+.MsgFldSumTxt_sun4 {
+    color:#C00;
+}
+.MsgFldTxt_sun4 {
+    color:#C00;
+}
+.MsgGrpTbl_sun4 {
+    border:solid 1px #C00;
+    margin-top:10px;
+}
+.MsgGrpTbl_sun4 td {
+    background-color:#FAEDED;
+}
+.MsgGrpTblTtl_sun4 {
+    color:#000;
+    background-color:#FAEDED;
+}
+.MsgGrpDiv_sun4 ul {
+    color:#C00;
+    list-style-type:square;
+}
+.MsgGrpSumTxt_sun4 {
+    color:#000;
+}
+.MsgGrpTxt_sun4 {
+    color:#333;
+}
+/*---*/
+
+/* PROPERTY SHEET */
+/* [check overwrite classes on css_ie55up.css] */
+.ConLin_sun4 {
+	margin:10px 0 10px 10px;
+	background-color:#92A2AA;
+	width:100%;
+}
+.ConFldSetLgdDiv_sun4, .ConSubSecTtlTxt_sun4, .ConFldSetLgd_sun4 {
+	color:#000000;
+}
+.ConDefTxt_sun4, .ConRqdTxt_sun4 {
+	color:#707277;
+}
+.ConErrLblTxt_sun4 {
+	color:#C00;
+}
+.ConWrnLblTxt_sun4 {
+	color:#C90;
+}
+a.JmpLnk_sun4, a.JmpTopLnk_sun4 {
+	color:#003399;
+}
+a.JmpLnk_sun4:link, a.JmpLnk_sun4:visited {
+	text-decoration:none;
+	vertical-align:top;
+}
+a.JmpLnk_sun4:hover {
+	text-decoration:underline;
+	vertical-align:top;
+}
+a.JmpTopLnk_sun4:link, a.JmpTopLnk_sun4:visited {
+	text-decoration:none;
+}
+a.JmpTopLnk_sun4:hover {
+	text-decoration:underline;
+}
+/*---*/
+/* CONTENTPAGETITLE [originalName: PAGE TITLE]*/
+.TtlLin_sun4 {
+	background-color:#81939B;
+}
+span.TtlTxt_sun4, h1.TtlTxt_sun4 {
+	color:#000;
+}
+.TtlVewLbl_sun4 {
+	color:#5F6466;
+}
+/*---*/
+/* TABSET [originalName: LEVEL TABS]*/
+.Tab1Div_sun4, .Tab1Div_sun4 .Tab1TblSpcTd_sun4 {
+  background:#E5E9ED url(#{resource['ezcomp:background_border_bottom.gif']}) left bottom repeat-x;
+} 
+a.Tab1Lnk_sun4:link, a.Tab1Lnk_sun4:visited  {
+	color:#000;
+	text-decoration:none;
+}
+a.Tab1Lnk_sun4:hover {
+	text-decoration:underline;
+}
+.Tab1Div_sun4 td {
+	border-color: #80929B;
+  background:#FCFFFF url(#{resource['ezcomp:level1_deselect.jpg']}) left top repeat-x;
+}.Tab1Tbl2New_sun4 .Tab1SelTxtLeft_sun4 {
+  background-image:url(#{resource['ezcomp:level1_selected-left.jpg']});
+}.Tab1Tbl2New_sun4 .Tab1SelTxtNew_sun4{
+  background-image:url(#{resource['ezcomp:level1_selected-right.jpg']});
+}
+.Tab1TblNew_sun4 .Tab1TblSelTd_sun4 {
+	background-color:#FFFFFF ;
+  background-image:url(#{resource['ezcomp:level1_selected-1lvl.jpg']});
+}
+.Tab1Tbl2New_sun4 .Tab1TblSelTd_sun4, .Tab1Tbl3New_sun4 .Tab1TblSelTd_sun4 {
+	background-color:#EEF0F4;
+  background-image:url(#{resource['ezcomp:level1_selected-middle.jpg']});
+}
+/* LEVEL 2 TABS */
+.Tab2Div_sun4 {
+  background:#F1F3F6 url(#{resource['ezcomp:background_border_bottom.gif']}) left bottom repeat-x;
+}
+a.Tab2Lnk_sun4:link, a.Tab2Lnk_sun4:visited {
+	color:#000;
+	text-decoration:none;
+}
+a.Tab2Lnk_sun4:hover {
+	text-decoration:underline;
+}
+.Tab2Div_sun4 td {
+	border-color:#80929B;
+  background:#FCFFFF url(#{resource['ezcomp:level2_deselect.jpg']}) left top repeat-x;
+}.Tab2Tbl3New_sun4 .Tab2SelTxtLeft_sun4 {
+  background-image:url(#{resource['ezcomp:level2_selected-left.jpg']});
+}.Tab2Tbl3New_sun4 .Tab2SelTxt_sun4 {
+  background-image:url(#{resource['ezcomp:level2_selected-right.jpg']});
+}.Tab2TblNew_sun4 .Tab2TblSelTd_sun4 {
+  border-color:#80929B;	background-image:url(#{resource['ezcomp:level2_selected.gif']});
+}.Tab2Tbl3New_sun4 .Tab2TblSelTd_sun4 {
+	border-color:#80929B;
+  background:#F8F9FB url(#{resource['ezcomp:level2_selected-middle.jpg']}) left top repeat-x;
+}
+.Tab2Div_sun4 {
+	padding:6px 0px 0px 10px;
+}
+.Tab2Div_sun4 table {
+	border-collapse:collapse;
+}
+.Tab2Div_sun4 td.Tab2TblSelTd_sun4 {
+	border-bottom:none;
+}
+/* LEVEL 3 TABS*/
+.Tab3Div_sun4 {
+  background:#F8F9FA url(#{resource['ezcomp:background_border_bottom.gif']}) right bottom repeat-x;
+}
+.Tab3Div_sun4 td {
+	border-color:#80929B;
+}
+.Tab3Div_sun4 table {
+	border-collapse:collapse;
+}
+a.Tab3Lnk_sun4:link,a.Tab3Lnk_sun4:visited {
+	color:#000;
+	text-decoration:none;
+}
+a.Tab3Lnk_sun4:hover {
+	text-decoration:underline;
+}
+table.Tab3TblNew_sun4 {
+	background-color:#E2E7EA;
+}
+table.Tab3TblNew_sun4 td {
+	border-bottom-color:#80929B;
+  background:#FCFFFF url(#{resource['ezcomp:level3_deselect.jpg']}) left top repeat-x;
+}.Tab3TblNew_sun4 td.Tab3TblSelTd_sun4 {
+	border-color:#80929B;
+  background:#FFFFFF url(#{resource['ezcomp:level3_selected.jpg']}) left top repeat-x;
+}
+/* MINI-TABS */
+.MniTabDiv_sun4 {
+  background:#E5E9ED url(#{resource['ezcomp:background_border_bottom.gif']}) bottom left repeat-x;
+}
+table.MniTabTbl_sun4 td {
+	border-color:#80929B;
+  background:#FCFFFF url(#{resource['ezcomp:minitab_deselect.jpg']}) left top repeat-x;
+}
+a.MniTabLnk_sun4:link,a.MniTabLnk_sun4:visited {
+	color:#000;
+	text-decoration:none;
+}
+a.MniTabLnk_sun4:hover {
+	text-decoration:underline;
+}
+.MniTabSelTxt_sun4 {
+	color:#000;
+	text-decoration:none;
+}
+table.MniTabTbl_sun4 td.MniTabTblSelTd_sun4 {
+  background:#FFFFFF url(#{resource['ezcomp:minitab_selected.jpg']}) left top repeat-x;
+	border-color:#80929B;
+}
+/* MINI-TABS - LIGHTWEIGHT */
+.TabGrp_sun4 .TabGrpBox_sun4 {
+	border-color:#80929B;
+}
+.TabGrp_sun4 .MniTabDiv_sun4 {
+	background-color:transparent;
+  background-image:url(#{resource['ezcomp:background_border_bottom.gif']});
+}
+/*---*/
+/* TEXT AND PASSWORD FIELDS */
+
+.TxtFld_sun4, .TxtAra_sun4 {
+  background:#FFFFFF url(#{resource['ezcomp:bg_gradient.gif']}) repeat-x top;
+}
+
+.TxtFldDis_sun4, .TxtAraDis_sun4 {
+  background:#EAEDF0 url(#{resource['ezcomp:bg_gradient_disabled.gif']}) repeat-x top;
+	color:#7E7E7E;
+}
+
+.TxtFld_sun4Sel {
+  background:#A0BBD8 url(#{resource['ezcomp:bg_gradient_selected.gif']}) repeat-x top;
+}
+
+.TxtFld_sun4, .TxtFldDis_sun4, .TxtAra_sun4, .TxtAraDis_sun4 {
+	border-top-color:#9D9FA1;
+	border-right-color:#AEAFB0;
+	border-bottom-color:#B9B9BA;
+	border-left-color:#AEAFB0;
+}
+
+/*---*/
+
+/* MENUS */
+
+.MnuJmpOptGrp_sun4, .MnuStdOptGrp_sun4 {color:#000;}
+
+.MnuStdOpt_sun4, .MnuStdOptSel_sun4, .MnuStd_sun4 {color:#333;}
+
+.MnuJmpOpt_sun4, .MnuJmpOpt_sun4:hover, .MnuJmp_sun4 {color:#0A3A9C;}
+
+.MnuJmpOptSep_sun4, .MnuJmpOptDis_sun4, .MnuStdOptSep_sun4, .MnuStdOptDis_sun4, .MnuJmpDis_sun4, .MnuStdDis_sun4 {
+	color:#848687;
+	border-top-color:#9D9FA1;
+	border-right-color:#AEAFB0;
+	border-bottom-color:#B9B9BA;
+	border-left-color:#AEAFB0;
+}
+
+.MnuJmpOpt_sun4:hover {text-decoration:underline;}
+
+.MnuJmp_sun4, .MnuStd_sun4 {
+  background:#FFFFFF url(#{resource['ezcomp:bg_gradient.gif']}) repeat-x top;
+	border-top-color:#9D9FA1;
+	border-right-color:#AEAFB0;
+	border-bottom-color:#B9B9BA;
+	border-left-color:#AEAFB0;
+}
+
+.MnuJmpOptSel_sun4 {font-weight:normal;}
+
+.MnuJmpOptGrp_sun4, .MnuStdOptGrp_sun4 {font-weight:normal;font-style:normal;}
+
+/*---*/
+
+/* MASTHEAD */
+
+span.MstLbl_sun4, span.MstTxt_sun4, span.MstUsrRole_sun4, span.MstAlmDwnTxt_sun4, span.MstAlmCrtTxt_sun4, span.MstAlmMajTxt_sun4, span.MstAlmMinTxt_sun4,
+a.MstUsrLnk_sun4:link, a.MstUsrLnk_sun4:visited, a.MstAlmLnk_sun4:link, a.MstAlmLnk_sun4:visited, a.MstPrgLnk_sun4:link, a.MstPrgLnk_sun4:visited {
+	color:#FFFFFF;
+}
+
+a.MstUsrLnk_sun4:hover, a.MstAlmLnk_sun4:hover, a.MstPrgLnk_sun4:hover,
+a.MstUsrLnk_sun4:link, a.MstUsrLnk_sun4:visited, a.MstAlmLnk_sun4:link, a.MstAlmLnk_sun4:visited, a.MstPrgLnk_sun4:link, a.MstPrgLnk_sun4:visited {
+	text-decoration:underline;
+}
+
+.MstBdy_sun4 {
+	background-color:#5B87A5;
+}
+
+.MstTblEnd_sun4 {
+	background-color:#5B87A5;
+}
+.MstTblBot_sun4 .hrule_sun4{
+	border-top-color:#3E637E;
+	background-color:#7196B0;
+}	
+
+.MstDiv_sun4 {
+  background:#5B87A5 url(#{resource['ezcomp:masthead-background.jpg']}) top left repeat-x;
+	border-color:#000000;
+}
+.MstSec_sun4 {
+  background:#5B87A5 url(#{resource['ezcomp:sec-masthead-background.jpg']}) top left repeat-x;
+	border-color:#000000;
+}
+.MstFooter_sun4 {
+	background-color:#5B87A5;
+	border-color:#000000;
+}
+
+a.MstLnk_sun4:hover, a.MstLnkLft_sun4:hover, a.MstLnkRt_sun4:hover, a.MstLnkCen_sun4:hover {
+	background-color:#EAF9FF;
+  background-image:url(#{resource['ezcomp:masthead_link_roll.gif']});
+}
+
+a.MstLnk_sun4:link, a.MstLnk_sun4:visited, a.MstLnkLft_sun4:link, a.MstLnkLft_sun4:visited, a.MstLnkRt_sun4:link, a.MstLnkRt_sun4:visited, a.MstLnkCen_sun4:link, a.MstLnkCen_sun4:visited {
+	background-color:#D9E6EC;
+  background-image:url(#{resource['ezcomp:masthead_link_enabled.gif']});
+	color:#000;
+	text-decoration:none;
+	border-top-color:#2D3C46;
+	border-bottom-color:#0E1418;
+	border-left-color:#1C262D;
+}
+
+a.MstLnk_sun4:link, a.MstLnk_sun4:visited, a.MstLnkRt_sun4:link, a.MstLnkRt_sun4:visited {
+	border-right-color:#1C262D;
+}
+/*---*/
+/* TABLE [originalName: ACTION TABLE] */
+.Tbl_sun4 {
+	border-color:#A0A3A5;
+	border-top-color:#35556A;
+	background-color:#E5E9ED;
+	color:#000;
+}
+table.Tbl_sun4 td, table.Tbl_sun4 th {border-color:#CAD0D2;	background-color:#fff;}
+/* Table Caption/Title */
+table.Tbl_sun4 caption.TblTtlTxt_sun4 {
+	color:#fff;
+  background:#36586F url(#{resource['ezcomp:table_titlebar_gradient.gif']}) bottom left repeat-x;
+}
+caption.TblTtlTxt_sun4 span.TblTtlMsgSpn_sun4 {color:#fff;}
+/* Action Bar */
+table.Tbl_sun4 td.TblActTdLst_sun4 {border-top-color:#e5e5e5;background-color:#E5E9ED;}
+table.Tbl_sun4 td.TblActTd_sun4 {background-color:#E5E9ED;} 
+/* Selection Column - Headers */
+table.Tbl_sun4 th.TblColHdrSel_sun4 {border-top-color:#81939B;border-left-color:#81939B;border-bottom-color:#81939B;background-color:#f8f8f9;}
+table.Tbl_sun4 th.TblColHdrSrtSel_sun4 {
+  background:#f8f8f9  url(#{resource['ezcomp:column_hdr_sort_gradient.gif']}) left bottom repeat-x;
+	border-top-color:#959aa5;
+	border-left-color:#959aa5;
+	border-bottom-color:#828da4;
+}
+table.Tbl_sun4 th.TblColHdrSel_sun4 a.TblHdrLnk_sun4:link, table.Tbl_sun4 th.TblColHdrSel_sun4 a.TblHdrLnk_sun4:visited, table.Tbl_sun4 th.TblColHdrSel_sun4 a.TblHdrLnk_sun4:hover   {background-color:#fff;text-decoration:none;}
+table.Tbl_sun4 th.TblColHdrSrtSel_sun4 a.TblHdrImgLnk_sun4:link, table.Tbl_sun4 th.TblColHdrSrtSel_sun4 a.TblHdrImgLnk_sun4:visited {border-left-color:#C7C8CA;color:#336699;text-decoration:none;}
+table.Tbl_sun4 th.TblColHdrSrtSel_sun4 a.TblHdrImgLnk_sun4:hover {color:#003399;}
+table.Tbl_sun4 th.TblColHdrSrtSel_sun4 a.TblHdrLnk_sun4:link,table.Tbl_sun4  th.TblColHdrSrtSel_sun4 a.TblHdrLnk_sun4:visited {color:#000000;text-decoration:none;}
+table.Tbl_sun4 th.TblColHdrSel_sun4 a.TblHdrLnk_sun4:link,
+table.Tbl_sun4 th.TblColHdrSel_sun4 a.TblHdrLnk_sun4:visited {background:#f8f8f9 url(#{resource['ezcomp:column_hdr_gradient.gif']}) repeat-x left bottom;}
+table.Tbl_sun4 th.TblColHdrSel_sun4 a.TblHdrLnk_sun4:hover {background:#fdfefe url(#{resource['ezcomp:column_hdr_hov_gradient.gif']}) repeat-x left bottom;}
+table.Tbl_sun4 th.TblColHdrSrtSel_sun4 a.TblHdrImgLnk_sun4:hover {background-color:#f8f8f9; background-image:url(#{resource['ezcomp:column_hdr_sort_hov_gradient.gif']});}
+table.Tbl_sun4 th.TblColHdrSrtSel_sun4 a.TblHdrImgLnk_sun4:hover {background-repeat:repeat-x;background-position:left bottom;}
+table.Tbl_sun4 th.TblColHdrSrtSel_sun4 a.TblHdrLnk_sun4:hover {background-color:#f8f8f9; background-image:url(#{resource['ezcomp:column_hdr_sort_hov_gradient.gif']});}
+table.Tbl_sun4 th.TblColHdrSrtSel_sun4 a.TblHdrLnk_sun4:hover {background-repeat:repeat-x;background-position:left bottom;}
+table.Tbl_sun4 th.TblColHdrSrtSel_sun4 a.TblHdrImgLnk_sun4:link, th.TblColHdrSrtSel_sun4 a.TblHdrImgLnk_sun4:visited {background:none;}
+table.Tbl_sun4 th.TblColHdrSrtSel_sun4 a.TblHdrLnk_sun4:link, th.TblColHdrSrtSel_sun4 a.TblHdrLnk_sun4:visited {background:none;}
+/* Selection Column - Cells */
+table.Tbl_sun4 td.TblTdSel_sun4 {background-color:#FFFFFF;}
+table.Tbl_sun4 td.TblTdSrtSel_sun4 {background-color:#e5e9ed;}
+/* Regular Column Headers */
+table.Tbl_sun4 th.TblColHdr_sun4 {border-color:#81939B;background-color:#FFFFFF;}
+table.Tbl_sun4 .TblHdrTxt_sun4 {color:#000000;text-decoration:none;background:#f8f8f9 url(#{resource['ezcomp:column_hdr_gradient.gif']}) repeat-x left bottom;}
+table.Tbl_sun4 a.TblHdrLnk_sun4:link, table.Tbl_sun4 a.TblHdrLnk_sun4:visited {background-color:#f8f8f9;background-position:left bottom;color:#000000;text-decoration:none; background-image:url(#{resource['ezcomp:column_hdr_gradient.gif']});}
+table.Tbl_sun4 a.TblHdrLnk_sun4:link, table.Tbl_sun4 a.TblHdrLnk_sun4:visited {background-repeat:repeat-x;background-position:left bottom;}
+table.Tbl_sun4 a.TblHdrLnk_sun4:hover {color:#000000;text-decoration:underline;background-color:#fdfefe; background-image:url(#{resource['ezcomp:column_hdr_hov_gradient.gif']});}
+table.Tbl_sun4 a.TblHdrLnk_sun4:hover {background-repeat:repeat-x;background-position:left bottom;}
+table.Tbl_sun4 a.TblHdrImgLnk_sun4:link, table.Tbl_sun4 a.TblHdrImgLnk_sun4:visited {background-color:#f8f8f9;color:#336699;text-decoration:none;border-left-color:#DBE0E3; background-image:url(#{resource['ezcomp:column_hdr_gradient.gif']});}
+table.Tbl_sun4 a.TblHdrImgLnk_sun4:link, table.Tbl_sun4 a.TblHdrImgLnk_sun4:visited {background-repeat:repeat-x;background-position:left bottom;}
+table.Tbl_sun4 a.TblHdrImgLnk_sun4:hover {color:#336699; background-image:url(#{resource['ezcomp:column_hdr_hov_gradient.gif']});}
+table.Tbl_sun4 a.TblHdrImgLnk_sun4:hover {background-repeat:repeat-x;background-position:left bottom;}
+table.TblHdrTbl_sun4 {background:none;}
+table.TblHdrTbl_sun4 td {background:none;}
+/* Current Sort Column */
+table.Tbl_sun4 th.TblColHdrSrt_sun4 {
+	border-color:#81939B;
+  background:#f8f8f9  url(#{resource['ezcomp:column_hdr_sort_gradient.gif']}) left bottom repeat-x; 	
+}
+table.Tbl_sun4 th.TblColHdrSrt_sun4 a.TblHdrLnk_sun4:link, table.Tbl_sun4 th.TblColHdrSrt_sun4 a.TblHdrLnk_sun4:visited {color:#000000;text-decoration:none;}
+table.Tbl_sun4 th.TblColHdrSrt_sun4 a.TblHdrImgLnk_sun4:link, table.Tbl_sun4 th.TblColHdrSrt_sun4 a.TblHdrImgLnk_sun4:visited {color:#336699;border-left-color:#C7C8CA;text-decoration:none;}
+table.Tbl_sun4 th.TblColHdrSrt_sun4 a.TblHdrLnk_sun4:hover {
+	color:#000000;
+	text-decoration:underline;
+	background-color:#f8f8f9;
+  background-image:url(#{resource['ezcomp:column_hdr_sort_hov_gradient.gif']});
+	background-position:left bottom;
+	background-repeat:repeat-x;
+}
+table.Tbl_sun4 th.TblColHdrSrt_sun4 a.TblHdrImgLnk_sun4:hover {
+	color:#003399;
+	background-color:#f8f8f9;
+  background-image:url(#{resource['ezcomp:column_hdr_sort_hov_gradient.gif']});
+	background-repeat:repeat-x;
+	background-position:left bottom;
+}
+
+table.Tbl_sun4 span.TblColHdrSrtDis_sun4 {
+	color:#000000;
+	text-decoration:none;
+	border-left-color:#C7C8CA;
+	background:none;
+}
+table.Tbl_sun4 span.TblColHdrSelDis_sun4 {
+	background-color:#f8f8f9;
+	color:#000000;
+	text-decoration:none;
+	border-left-color:#DBE0E3;
+  background-image:url(#{resource['ezcomp:column_hdr_gradient.gif']});
+	background-repeat:repeat-x;
+	background-position:left bottom;
+}
+table.Tbl_sun4 th.TblColHdrSrt_sun4 table.TblHdrTbl_sun4 {background:none;}
+table.Tbl_sun4 th.TblColHdrSrt_sun4 a.TblHdrLnk_sun4:link, table.Tbl_sun4 th.TblColHdrSrt_sun4 a.TblHdrLnk_sun4:visited {background:none;}
+table.Tbl_sun4 th.TblColHdrSrt_sun4 a.TblHdrImgLnk_sun4:link, table.Tbl_sun4 th.TblColHdrSrt_sun4 a.TblHdrImgLnk_sun4:visited {background:none;border-left-color:#C7C8CA;}
+/* Multi-Column Headers */ 
+table.Tbl_sun4 th.TblMultColHdr_sun4 {border-left-color:#81939B;border-bottom-color:#81939B;background-color:#fff;}
+.TblMultHdrTxt_sun4 {color:#000000;}
+table.Tbl_sun4 th.TblMultHdr_sun4 {background-color:#fff;border-top-color:#81939B;border-left-color:#81939B;}
+table.Tbl_sun4 th.TblMultColHdr_sun4 a.TblHdrLnk_sun4:link, table.Tbl_sun4 th.TblMultColHdr_sun4 a.TblHdrLnk_sun4:visited {color:#000000;text-decoration:none;}
+table.Tbl_sun4 th.TblMultColHdr_sun4 a.TblHdrLnk_sun4:hover {text-decoration:underline;}
+table.Tbl_sun4 th.TblMultColHdrSrt_sun4 {border-left-color:#CAD0D2;border-bottom-color:#81939B;background-color:#E2E4E9;background-image:url(#{resource['ezcomp:mult_column_hdr_sort_gradient.gif']});background-repeat:repeat-x}
+table.Tbl_sun4 th.TblMultColHdrSrt_sun4 a.TblHdrLnk_sun4:link, table.Tbl_sun4 th.TblMultColHdrSrt_sun4 a.TblHdrLnk_sun4:visited {background:none;color:#000000;text-decoration:none;}
+table.Tbl_sun4 th.TblMultColHdrSrt_sun4 a.TblHdrLnk_sun4:hover {background-color:#f8f8f9; color:#000000;text-decoration:underline; background-image:url(#{resource['ezcomp:column_hdr_sort_hov_gradient.gif']});}
+table.Tbl_sun4 th.TblMultColHdrSrt_sun4 a.TblHdrImgLnk_sun4:link, table.Tbl_sun4 th.TblMultColHdrSrt_sun4 a.TblHdrImgLnk_sun4:visited {background:none;color:#336699;text-decoration:none;border-left-color:#C7C8CA;}
+table.Tbl_sun4 th.TblMultColHdrSrt_sun4 a.TblHdrImgLnk_sun4:hover {background-color:#f8f8f9;color:#003399; background-image:url(#{resource['ezcomp:column_hdr_sort_hov_gradient.gif']});}
+/* Sorted Cells */
+table.Tbl_sun4 .TblTdSrt_sun4 {background-color:#e5e9ed;}
+table.Tbl_sun4 .TblColFtrSpc_sun4 {border-bottom-color:#CAD0D2;border-top-color:#E5E9ED;background-color:#fff;} 
+/* Spacer Colums */
+table.Tbl_sun4 th.TblTdSpc_sun4 {border-color:#81939B;;background-color:#fff;}
+/* Alarm Cells */
+table.Tbl_sun4 .TblTdAlm_sun4, table.Tbl_sun4 .TblTdSrtAlm_sun4 {background-color:#FFFEE7;}
+/*Other Table Content Styles*/
+table.Tbl_sun4 a:link, table.Tbl_sun4 a:visited {color:#003399;text-decoration:none;}
+table.Tbl_sun4 a:hover {color:#003399;text-decoration:underline;}
+.TblMsgTxt_sun4 {color:#000000;}
+/* Mouseover and Row Selection Styles */
+table.Tbl_sun4 tr.TblSelRow_sun4 td, table.Tbl_sun4 tr.TblSelRow_sun4 th {background-color:#90B7D0;}
+/*Table Sub-Grouping */
+table.Tbl_sun4 .TblGrpRow_sun4 {
+	border-left-color:#CAD0D2;
+   	border-bottom-color:#CAD0D2;
+   	border-top-color:#E5E9ED;
+  background:#fff url(#{resource['ezcomp:grouprow_gradient.gif']}) left bottom repeat-x; 
+}	
+.TblGrpTxt_sun4 {color:#000000;text-decoration:none;}
+.TblGrpTxt_sun4 {color:#000000;margin:0px 3px;}
+table.Tbl_sun4 .TblGrpMsgTxt_sun4 {color:#000000;}
+/* Table Footers */
+/* Table Column-level Footer */
+table.Tbl_sun4 .TblColFtr_sun4 {border-bottom-color:#CAD0D2;border-top-color:#E5E9ED;background-color:#fff;} 
+table.Tbl_sun4 .TblColFtrSrt_sun4 {background-color:#e5e9ed;border-bottom-color:#CAD0D2;border-top-color:#E5E9ED;}
+.TblColFtrTxt_sun4 {color:#000000;}
+/* Table Overall Footer */ 
+table.Tbl_sun4 td.TblFtrRow_sun4 {background-color:#E5E9ED;}
+table.Tbl_sun4 .TblFtrRowTxt_sun4 {color:#000000;}
+table.Tbl_sun4 .TblFtrLft_sun4 {color:#000000;}
+/*Table Group Column-Level Footer */
+table.Tbl_sun4 .TblGrpColFtr_sun4 {border-bottom-color:#CAD0D2;background-color:#fff;}
+table.Tbl_sun4 .TblGrpColFtrSrt_sun4 {border-bottom-color:#CAD0D2;background-color:#e5e9ed;}
+.TblGrpFtrRowTxt_sun4 {color:#000000;}
+/* Embedded Table Panels */
+table.Tbl_sun4 td.TblPnlTd_sun4 {background-color:#E5E9ED;}
+.TblPnlLytDiv_sun4 {border-top-color:#A3AAAC;}
+.TblPnlShd3Div_sun4 {}
+.TblPnlShd2Div_sun4 {}
+.TblPnlShd1Div_sun4 {
+	border-top-color:#4c4f53 ;
+	border-right-color:#76797C;
+	border-bottom-color:#8C8F91;
+	border-left-color:#76797C;
+}
+.TblPnlDiv_sun4 {
+	background-color:#FFFFFF;
+	border-top:1px solid #CBCCCD;
+}
+.TblPnlBtnDiv_sun4 {
+   border-top-color:#81939B;
+} 
+.TblPnlTtl_sun4 {color:#000000;}
+.TblCstFltMnu_sun4 {background-color:#90B7D0;color:#003399;border-right-color:#AEAFB0;border-bottom-color:#B9B9BA;}
+table.Tbl_sun4 div.TblPnlDiv_sun4 td {background:transparent;}
+.TblPnlCnt_sun4 {background:none;}
+.TblPnlHlpTxt_sun4 {
+  background:#DBE5ED url(#{resource['ezcomp:tipbackground.gif']}) top left repeat-x;
+   border-top-color:#758B9B;
+   border-right-color:#9CB6C7;
+   border-bottom-color:#CADDED;
+   border-left-color:#9CB6C7;
+} 
+/*---*/
+
+/* LIGHTWEIGHT TABLE DESIGN */
+table.TblLt_sun4 {background-color:#fff;color:#000000;}
+/* Table Caption/Title */
+table.TblLt_sun4 caption.TblTtlTxt_sun4 {color:#000000;background:none;}
+table.TblLt_sun4 caption.TblTtlTxt_sun4 span.TblTtlMsgSpn {color:#000000;}
+/* Action Bar */
+table.TblLt_sun4 td.TblActTd_sun4 {background-color:#E5E9ED;border-color:#e5e5e5;}
+table.TblLt_sun4 td.TblActTdLst_sun4 {background-color:#E5E9ED;border-color:#e5e5e5;}
+/* Selection Column - Headers */
+table.TblLt_sun4 th.TblColHdrSel_sun4 {border-top-color:#81939B; border-left-color:#81939B; border-bottom-color:#81939B; background-color:#FFFFFF;}
+table.TblLt_sun4 th.TblColHdrSrtSel_sun4 {background-color:#f8f8f9 ;border-top-color:#959aa5;border-left-color:#959aa5;border-bottom-color:#828da4; background-image:url(#{resource['ezcomp:lite_column_hdr_sort_gradient.gif']})}
+table.TblLt_sun4 th.TblColHdrSel_sun4 a.TblHdrLnk_sun4:link {background-color:#f8f8f9;background-image:url(#{resource['ezcomp:lite_column_hdr_gradient.gif']});background-position:left bottom}
+table.TblLt_sun4 th.TblColHdrSel_sun4 a.TblHdrLnk_sun4:visited {background-color:#f8f8f9;background-image:url(#{resource['ezcomp:lite_column_hdr_gradient.gif']});background-position:left bottom}
+table.TblLt_sun4 th.TblColHdrSel_sun4 a.TblHdrLnk_sun4:hover {background-color:#fdfefe; background-image:url(#{resource['ezcomp:lite_column_hdr_hov_gradient.gif']});background-position:left bottom}
+table.TblLt_sun4 th.TblColHdrSrtSel_sun4 a.TblHdrImgLnk_sun4:hover {background-color:#f1f3f7; background-image:url(#{resource['ezcomp:lite_column_hdr_sort_hov_gradient.gif']});background-position:left top}
+table.TblLt_sun4 th.TblColHdrSrtSel_sun4 a.TblHdrLnk_sun4:hover {background-color:#f1f3f7; background-image:url(#{resource['ezcomp:lite_column_hdr_sort_hov_gradient.gif']});background-position:left top}
+/* Regular Column Headers */
+table.TblLt_sun4 th.TblColHdr_sun4 {border-top-color:#81939B;border-left-color:#81939B;border-bottom-color:#81939B;background-color:#E6EBEF;}
+table.TblLt_sun4 table.TblHdrTbl_sun4 td {background:none;}
+table.TblLt_sun4 a.TblHdrLnk_sun4:link, table.TblLt_sun4 a.TblHdrLnk_sun4:visited {background-color:#f8f8f9;background-position:left bottom;color:#000000;text-decoration:none; background-image:url(#{resource['ezcomp:lite_column_hdr_gradient.gif']});background-position:left bottom;}
+table.TblLt_sun4 a.TblHdrLnk_sun4:hover {color:#000000;text-decoration:underline;background-color:#fdfefe; background-image:url(#{resource['ezcomp:lite_column_hdr_hov_gradient.gif']});background-position:left bottom;}
+table.TblLt_sun4 a.TblHdrImgLnk_sun4:link, table.TblLt_sun4 a.TblHdrImgLnk_sun4:visited {background-color:#f8f8f9;border-left-color:#DBE0E3;color:#336699;text-decoration:none; background-image:url(#{resource['ezcomp:lite_column_hdr_gradient.gif']});background-position:left bottom;}
+table.TblLt_sun4 a.TblHdrImgLnk_sun4:hover {background-color:#fdfefe; color:#336699; background-image:url(#{resource['ezcomp:lite_column_hdr_hov_gradient.gif']});background-position:left bottom;}
+table.TblLt_sun4 span.TblColHdrSelDis_sun4 {border-left-color:#DBE0E3;background-color:#f8f8f9;color:#000000;text-decoration:none; background-image:url(#{resource['ezcomp:lite_column_hdr_gradient.gif']});background-position:left bottom;}
+table.TblLt_sun4 .TblHdrTxt_sun4 {background-color:#f8f8f9;color:#000000;text-decoration:none;background-image:url(#{resource['ezcomp:lite_column_hdr_gradient.gif']});background-position:left bottom;}
+/* Current Sort Column */
+table.TblLt_sun4 th.TblColHdrSrt_sun4 {border-top-color:#81939B;border-left-color:#81939B;border-bottom-color:#81939B;background-color:#f8f8f9; background-image:url(#{resource['ezcomp:lite_column_hdr_sort_gradient.gif']})}
+table.TblLt_sun4 th.TblColHdrSrt_sun4 a.TblHdrLnk_sun4:hover {background-color:#f1f3f7; color:#000000;text-decoration:underline; background-image:url(#{resource['ezcomp:lite_column_hdr_sort_hov_gradient.gif']});}
+table.TblLt_sun4 th.TblColHdrSrt_sun4 a.TblHdrImgLnk_sun4:link, table.Tbl_sun4 th.TblColHdrSrt_sun4 a.TblHdrImgLnk_sun4:visited {border-left-color:#C7C8CA; color:#336699; text-decoration:none;}
+table.TblLt_sun4 th.TblColHdrSrt_sun4 a.TblHdrImgLnk_sun4:hover {background-color:#f1f3f7; color:#003399; background-image:url(#{resource['ezcomp:lite_column_hdr_sort_hov_gradient.gif']});}
+/* Multi-Column Headers */
+table.TblLt_sun4 th.TblMultColHdr_sun4 {border-left-color:#81939B;border-bottom-color:#81939B;background-color:#E6EBEF;}
+table.TblLt_sun4 th.TblMultHdr_sun4 {border-top-color:#81939B;border-left-color:#81939B;background-color:#E6EBEF;}
+table.TblLt_sun4 th.TblMultColHdrSrt_sun4 a.TblHdrLnk_sun4:hover {background-color:#f1f3f7;color:#000000;text-decoration:underline; background-image:url(#{resource['ezcomp:lite_column_hdr_sort_hov_gradient.gif']});}
+table.TblLt_sun4 th.TblMultColHdrSrt_sun4 a.TblHdrImgLnk_sun4:hover {background-color:#f1f3f7;color:#003399; background-image:url(#{resource['ezcomp:lite_column_hdr_sort_hov_gradient.gif']});}
+/*Table Sub-Grouping */
+table.TblLt_sun4 .TblGrpRow_sun4 {background-color:#FFFFFF;border-left-color:#CAD0D2;
+   	border-bottom-color:#CAD0D2;
+   	border-top-color:#E5E9ED;}
+/* Table Footers */ 
+table.TblLt_sun4 td.TblFtrRow_sun4 {background-color:#fff;}
+table.TblLt_sun4 .TblFtrRowTxt_sun4 {color:#5F6466;}
+table.TblLt_sun4 .TblColFtr_sun4 {border-bottom-color:#a8b2b6;border-top-color:#A9ADB5;background-color:#fff;} 
+table.TblLt_sun4 .TblColFtrSrt_sun4 {background-color:#e5e9ed;border-bottom-color:#a8b2b6;border-top-color:#A9ADB5;}
+table.TblLt_sun4 .TblColFtrSpc_sun4 {border-bottom-color:#a8b2b6; border-top-color:#A9ADB5; background-color:#fff;} 
+/*---*/
+
+/* TREE */
+.TreTtl_sun4 {
+	color:#000;
+}
+.Tree_sun4 {
+	background-color:#fff;
+}
+a.TreeLink_sun4:link, a.TreeLink_sun4:visited {
+	color:#003399;
+	text-decoration:none;
+}
+a.TreeLink_sun4:hover {
+	color:#003399;
+	text-decoration:underline;
+}
+a.TreeParentLink_sun4:link, a.TreeParentLink_sun4:visited {
+	color:#003399;
+	text-decoration:none;
+}
+a.TreeParentLink_sun4:hover {
+	color:#003399;
+	text-decoration:underline;
+}
+a.TreeSelLink_sun4:link, a.TreeSelLink_sun4:visited {
+	color:#000;
+	text-decoration:none;
+}
+a.TreeSelLink_sun4:hover {
+	color:#000;
+	text-decoration:underline;
+}
+.TreeRootRow_sun4, .TreeRootRowHeader_sun4 {
+	background-color:#e5e9ed;
+}
+.TreeSelRow_sun4, .TreeRootSelRow  {
+	background-color:#90b7d0;
+}
+.TreeSelText_sun4 {
+	color:#000;
+}
+.TreeContent_sun4 a:link, .TreeContent_sun4 a:visited {
+	color:#000;
+	text-decoration:none;
+}
+/*---*/
+
+/* VERSION DIALOG */
+.VrsBdy_sun4, .VrsMgn_sun4, .VrsBtnBdy_sun4 {
+	background-color:#D2DBE4;
+}
+.VrsHdrTxt_sun4, .VrsTxt_sun4 {
+	color:#000000;
+}
+.VrsMstBdy_sun4 {
+  background:#FFFFFF url(#{resource['ezcomp:version_brand.jpg']}) no-repeat;
+}
+/*---*/
+/* WIZARD */
+.WizTtlBar_sun4 {
+  background:#5B87A5 url(#{resource['ezcomp:sec-masthead-background.jpg']}) top left repeat-x;
+	border-color:#000000;
+	color:#FFFFFF;
+}
+.WizBar_sun4 {
+        background-color:#E5E9ED;
+        border-bottom-color:#80929B;
+}
+.WizBdy_sun4 {
+	border-left-color:#98A0A5;
+}
+.WizBtm_sun4 {
+	background-color:#E5E9ED;
+	border-top-color:#98A0A5;
+}.WizHlpDiv_sun4 {
+  background:#E5E9ED url(#{resource['ezcomp:left-pane-background.gif']}) left top repeat-x;
+}
+.WizSubTtlDiv_sun4, .WizStpsPnTtlDiv_sun4, .WizTtl_sun4 .TtlLin_sun4 {}
+a.WizStpLnk_sun4 {
+	color:#003399;
+	text-decoration:none;
+}
+a.WizStpLnk_sun4:hover {
+	text-decoration:underline;
+}
+/*---*/
diff --git a/jsf-demo/sandbox/ezcomp02/src/main/webapp/resources/ezcomp/commontaskssection.css b/jsf-demo/sandbox/ezcomp02/src/main/webapp/resources/ezcomp/commontaskssection.css
new file mode 100644
index 0000000..f6f17dc
--- /dev/null
+++ b/jsf-demo/sandbox/ezcomp02/src/main/webapp/resources/ezcomp/commontaskssection.css
@@ -0,0 +1,262 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+/* LAYOUT */
+.commonTaskSection_4_sun4 {
+	width: 100%;
+}
+.commonTaskSection_4_sun4 .TskScnTpBx_sun4 .header_sun4 {
+	margin: 17px 0px 0px 20px;
+}
+.commonTaskSection_4_sun4 .TskScnTpBx_sun4 .help_sun4 {
+	margin: 3px 0 23px 21px;
+}
+.commonTaskGroup_4_sun4 {
+	margin:0 0 20px 20px;
+}
+.commonTaskSection_4_sun4 .header_sun4 {
+	padding-bottom: 5px;
+	display: block;
+}
+.commonTask_4_sun4 {
+	margin:0 22px 20px;
+}
+.commonTaskGroup_4_sun4 .commonTask_4_sun4 {
+	margin:0 0 2px 0;
+}
+.commonTask_4_sun4 .left_sun4 {
+	border-top-style:solid;
+	border-top-width:1px;
+	border-bottom-style:solid;
+	border-bottom-width:1px;
+	border-left-style:solid;
+	border-left-width:1px;
+}
+.commonTask_4_sun4 .center_sun4 {
+	border-top-style:solid;
+	border-top-width:1px;
+	border-bottom-style:solid;
+	border-bottom-width:1px;
+}
+.commonTask_4_sun4 .right_sun4 {
+	border-top-style:solid;
+	border-top-width:1px;
+	border-bottom-style:solid;
+	border-bottom-width:1px;
+	border-right-style:solid;
+	border-right-width:1px;
+}
+.commonTask_4_sun4 a.TskScnTxtBg_sun4,.commonTask_4_sun4  a.TskScnTxtBgOvr_sun4 {
+	display: block;
+	position: relative;
+	width: 100%;
+	min-height:21px;
+}
+.commonTask_4_sun4 .infoPanel_sun4 {
+	border-style:solid;
+	border-width:1px;
+	position:absolute;
+	height: 20em;
+	width: 10em;
+	z-index:2;
+}
+.commonTask_4_sun4 .infoPanel_sun4 .closeButton_sun4 {
+	float: right;
+}
+.commonTask_4_sun4 .infoPanel_sun4 .info_sun4 {
+	padding: 0 18px 0 0;
+	margin: 21px 3px 15px 12px;
+	height:14.2em;
+	overflow:auto;
+}
+.commonTask_4_sun4 .infoPanel_sun4 .more_sun4 {
+	height:1.5em;
+	margin:5px 5px 0 5px;
+	border-top-style:solid;
+	border-top-width:1px;
+	padding:2px 0 0 5px;
+	overflow:hidden;
+}
+.commonTask_4_sun4 .bullet_sun4 {
+	margin-right:.4em;
+}
+.commonTask_4_sun4 a.TskScnTxtBg_sun4, .commonTask_4_sun4 a.TskScnTxtBgOvr_sun4 {
+	border-left-style:solid;
+	border-left-width:1px;
+}
+.commonTask_4_sun4 .TskScnTskPdng_sun4 {
+	padding: 0px 7px;
+	display: block;
+	padding-top: 4px;
+	padding-bottom: 3px;
+}
+.commonTask_4_sun4 .TskScnTskLftBtm_sun4, .commonTask_4_sun4 .TskScnTskLftTp_sun4, .commonTask_4_sun4 .TskScnTskRghtBtm_sun4, .commonTask_4_sun4 .TskScnTskRghtTp_sun4 {
+	position: absolute;
+	width: 8px;
+	height: 11px;
+	cursor: pointer;
+	background-position: top left;
+	background-repeat: no-repeat;
+}
+.commonTask_4_sun4 .TskScnTskLftBtm_sun4 {
+	bottom: -1px;
+	left: -1px;
+}     
+.commonTask_4_sun4 .TskScnTskLftTp_sun4 {
+	top: -1px;
+	left: -1px;
+}             
+.commonTask_4_sun4 .TskScnTskRghtBtm_sun4 {
+	bottom: -1px;
+	right: 0px;
+	z-index:1;
+}     
+.commonTask_4_sun4 .TskScnTskRghtTp_sun4 {
+	position: absolute;
+	top: -1px;
+	right: 0px;
+	z-index:1;
+} 
+.commonTask_4_sun4 .TskScnTskRghtBrdr_sun4 {
+	display: block;
+	position: absolute;
+	height: 100%;
+	right: 0px;
+	width: 1px;
+	cursor: pointer;
+}
+/*---*/
+
+/* COLOR AND MEDIA */
+.commonTaskbgColor_sun4 {
+	background:#B6C6D6
+}
+.commonTaskSection_4_sun4 {
+  background:#B6C6D6 url(#{resource['ezcomp:bkgrnd.gif']}) right top repeat-x;
+}
+.commonTaskSection_4_sun4 .TskScnTpBx_sun4 {
+  background:url(#{resource['ezcomp:s-curve.gif']}) bottom left repeat-x;
+}
+.commonTaskSection_4_sun4 .header_sun4, .commonTaskSection_4_sun4 .help_sun4, .commonTaskGroup_4_sun4 .header_sun4 {
+	color: #4B5E6A;
+}
+.commonTask_4_sun4 .left_sun4 {
+	border-top-color:#AEB3B8;
+	border-bottom-color:#AEB3B8;
+	border-left-color:#AEB3B8;
+}
+.commonTask_4_sun4 .center_sun4 {
+	border-top-color:#AABCC8;
+	border-bottom-color:#AABCC8;
+}
+.commonTask_4_sun4 .right_sun4 {
+	background-color: #99B3C0;
+	border-top-color:#AABCC8;
+	border-bottom-color:#AABCC8;
+	border-right-color:#AABCC8;
+}
+.commonTask_4_sun4 .background_sun4 {
+  background: #9AB2BF url(#{resource['ezcomp:gradation-grey.gif']}) right top repeat-x;
+}
+.commonTask_4_sun4 a.TskScnTxtBg_sun4 {
+	border-left-color:#AABCC8;
+}
+.commonTask_4_sun4 a.TskScnTxtBg_sun4:link,.commonTask_4_sun4  a.TskScnTxtBg_sun4:visited {
+  background: #E2E7EA url(#{resource['ezcomp:grad1.gif']}) right top repeat-x;
+	color:#333333;
+}
+.commonTask_4_sun4 a.TskScnTxtBg_sun4:hover {
+  background:#4581B3 url(#{resource['ezcomp:grad2.gif']}) right top repeat-x;
+	color:#FFF;
+}
+.commonTask_4_sun4 .infoPanel_sun4 {
+	border-color: #AABCC8;
+	background-color: #F4F6F7;
+}
+.commonTask_4_sun4 .infoPanel_sun4 .more_sun4 {
+	border-top-color:#CFD7D9;
+}
+.commonTask_4_sun4 .infoPanel_sun4 .more_sun4 a:link, .commonTask_4_sun4 .infoPanel_sun4 .more_sun4 a:visited, .commonTask_4_sun4 .infoPanel_sun4 .more_sun4 a:hover {
+	color:#003399;
+}
+.commonTask_4_sun4 .infoPanel_sun4 .more_sun4 a:link, .commonTask_4_sun4 .infoPanel_sun4 .more_sun4 a:visited, .commonTask_4_sun4 a.TskScnTxtBg_sun4, .commonTask_4_sun4 a.TskScnTxtBgOvr_sun4 {
+	text-decoration:none;
+}
+.commonTask_4_sun4 .infoPanel_sun4 .more_sun4 a:hover {
+	text-decoration:underline;
+}
+.commonTask_4_sun4 .infoPanel_sun4 .header_sun4 {
+	color:#666666;
+}
+.commonTask_4_sun4 .TskScnTskLftBtm_sun4 {
+  background-image: url(#{resource['ezcomp:leftBottom.gif']});
+}     
+.commonTask_4_sun4 .TskScnTskLftTp_sun4 {
+  background-image: url(#{resource['ezcomp:leftTop.gif']});
+}             
+.commonTask_4_sun4 .TskScnTskRghtBtm_sun4 {
+  background-image: url(#{resource['ezcomp:rightBottom.gif']});
+}     
+.commonTask_4_sun4 .TskScnTskRghtTp_sun4 {
+  background-image: url(#{resource['ezcomp:rightTop.gif']});
+} 
+.commonTask_4_sun4 .TskScnTskRghtBrdr_sun4 {
+	background-color: #AABCC8;
+}
+/*---*/
+
+/* TYPOGRAPHY */
+.commonTaskSection_4_sun4 .header_sun4 {
+	font-size:1.8em;
+}
+.commonTaskGroup_4_sun4 .header_sun4 {
+	font-size: 1.3em;
+}
+.commonTask_4_sun4 .infoPanel_sun4 .header_sun4, .commonTaskSection_4_sun4 .help_sun4 {
+	font-size:1.2em;
+}
+.commonTask_4_sun4 .TskScnTskPdng_sun4, .commonTask_4_sun4 .infoPanel_sun4 .content_sun4,.commonTask_4_sun4 .infoPanel_sun4 .more_sun4 a:link,
+.commonTask_4_sun4 .infoPanel_sun4 .more_sun4 a:visited, .commonTask_4_sun4 .infoPanel_sun4 .more_sun4 a:hover {
+	font-size: 1.1em;
+} 
+.commonTaskSection_4_sun4 .header_sun4, .commonTaskGroup_4_sun4 .header_sun4, .commonTask_4_sun4 .infoPanel_sun4 .header_sun4 {
+	font-weight: bold;
+}
+
diff --git a/jsf-demo/sandbox/ezcomp02/src/main/webapp/resources/ezcomp/componentWithBackingJavaClass.xhtml b/jsf-demo/sandbox/ezcomp02/src/main/webapp/resources/ezcomp/componentWithBackingJavaClass.xhtml
new file mode 100644
index 0000000..2cf77e2
--- /dev/null
+++ b/jsf-demo/sandbox/ezcomp02/src/main/webapp/resources/ezcomp/componentWithBackingJavaClass.xhtml
@@ -0,0 +1,69 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:composite="http://java.sun.com/jsf/composite">
+<head>
+
+<title>Not present in rendered output</title>
+
+</head>
+
+<body>
+
+<composite:interface>
+</composite:interface>
+
+<composite:implementation>
+
+  <p>This composite component has a <em>composite component root</em> that
+  comes from a java class</p>
+
+</composite:implementation>
+
+</body>
+
+</html>
diff --git a/jsf-demo/sandbox/ezcomp02/src/main/webapp/resources/ezcomp/css_master.css b/jsf-demo/sandbox/ezcomp02/src/main/webapp/resources/ezcomp/css_master.css
new file mode 100644
index 0000000..f85bed2
--- /dev/null
+++ b/jsf-demo/sandbox/ezcomp02/src/main/webapp/resources/ezcomp/css_master.css
@@ -0,0 +1,47 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+ at import url(#{resource['this:layout.css']});
+ at import url(#{resource['this:typography.css']});
+ at import url(#{resource['this:colorAndMedia.css']});
+
+ at import url(#{resource['this:table2.css']});
+ at import url(#{resource['this:commontaskssection.css']});
+ at import url(#{resource['this:progressBar.css']});
diff --git a/jsf-demo/sandbox/ezcomp02/src/main/webapp/resources/ezcomp/css_ns6up.css b/jsf-demo/sandbox/ezcomp02/src/main/webapp/resources/ezcomp/css_ns6up.css
new file mode 100644
index 0000000..5bb72ec
--- /dev/null
+++ b/jsf-demo/sandbox/ezcomp02/src/main/webapp/resources/ezcomp/css_ns6up.css
@@ -0,0 +1,863 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+/* GLOBAL STYLES */
+BODY, TH, TD, P, DIV, SPAN, INPUT, SELECT, TEXTAREA, FORM, B, STRONG, I, U, H1, H2, H3, H4, H5, H6, 
+ DL, DD, DT, UL, LI, OL, OPTION, OPTGROUP, A {font-family:sans-serif;font-size:12px}
+H1 {font-family:sans-serif;font-weight:bold;font-size:18px}
+H2 {font-family:sans-serif;font-weight:bold;font-size:15px}
+H3, H4 {font-family:sans-serif;font-weight:bold;font-size:12px}
+H5, H6 {font-family:sans-serif;font-weight:bold;font-size:11px}
+.DefBdy {color:#333;background-color:#FFF;margin:0px}
+a:link {color:#003399;text-decoration:none}
+a:visited {color:#003399;text-decoration:none}
+a:hover {color:#003399;text-decoration:underline}
+.ConMgn {margin:0px 10px}
+
+
+/* ADD-REMOVE-IDIOM */
+.AddRmvLbl {color:#5F6466;font-weight:bold;padding-bottom:3px}
+.AddRmvLbl2 {color:#333;padding-bottom:3px}
+table.AddRmvBtnTbl .Btn1 {width:100%}
+table.AddRmvBtnTbl .Btn1Hov {width:100%}
+table.AddRmvBtnTbl .Btn1Dis {width:100%}
+table.AddRmvBtnTbl .Btn2 {width:100%}
+table.AddRmvBtnTbl .Btn2Hov {width:100%}
+table.AddRmvBtnTbl .Btn2Dis {width:100%}
+.AddRmvVrtFst {margin:5px 0px 10px 0px;min-width:90px}
+.AddRmvVrtWin {margin:5px 0px 10px 5px;min-width:90px}
+.AddRmvVrtBwn {margin:5px 0px 10px 10px;min-width:90px}
+.AddRmvHrzWin {margin-top:3px;min-width:100px}
+.AddRmvHrzBwn {margin-top:8px;min-width:100px}
+
+
+/* ALERTS - FULL PAGE */
+.FulAlrtHdrDiv {margin:7px 10px 5px 37px}
+.FulAlrtHdrTxt {color:#000;font-weight:bold} 
+.FulAlrtMsgDiv {margin:5px 10px 0px 37px}
+.FulAlrtFrmDiv {margin:10px 10px 5px 37px}
+.FulAlrtMsgTxt {color:#000}
+
+
+/* ALERTS - INLINE */
+.AlrtErrTxt {color:#000;font-weight:bold;vertical-align:middle;font-size:14px;text-align:center}
+.AlrtWrnTxt {color:#000;font-weight:bold;vertical-align:middle;font-size:14px;text-align:center}
+.AlrtInfTxt {color:#000;font-weight:bold;vertical-align:middle;font-size:14px;text-align:center}
+.AlrtLnkDiv {padding-top:3px;text-align:left}
+a.AlrtLnk:link, a.AlrtLnk:visited {color:#003399;text-decoration:none}
+a.AlrtLnk:hover {color:#003399;text-decoration:underline}
+/* new styles */
+.AlrtTbl {background-color:#FFFFCC;border:solid 1px #e1e1a7;padding:7px 15px}
+.AlrtErrTxt img {vertical-align:text-bottom;margin-right:6px}
+.AlrtWrnTxt img {vertical-align:text-bottom;margin-right:6px}
+.AlrtInfTxt img {vertical-align:middle;margin-right:6px}
+.AlrtMsgTxt {padding-top:6px;color:#000;text-align:left;}
+.logErr .AlrtTbl {background-color:#FFFFCC;border:solid 1px #e1e1a7;padding:7px 15px;margin-left:15px;text-align:left}
+
+
+/* BREADCRUMBS */
+.BcmWhtDiv {background-color:#FFF;margin:10px 10px 0px 10px}
+.BcmGryDiv {background-color:#D2D9E1;margin:8px 10px 7px 10px}
+.BcmGryTbl {background-color:#D2D9E1}
+a.BcmLnk:link, a.BcmLnk:visited {color:#003399;text-decoration:none}
+a.BcmLnk:hover {color:#003399;text-decoration:underline}
+.BcmTxt {color:#000;font-weight:normal}
+.BcmSep {color:#666}
+
+
+/* BUTTONS */
+.Btn1 {background-image:url(#{resource['ezcomp:primary-enabled.gif']});background-color:#BAD7ED;color:#000;border-top:solid 1px #4982A3;border-left:solid 1px #266386;border-right:solid 1px #266386;border-bottom:solid 1px #026EA4}
+.Btn1Hov {background-image:url(#{resource['ezcomp:primary-roll.gif']});background-color:#C5E7FF;color:#000;border-top:solid 1px #499EC8;border-left:solid 1px #2686B6;border-right:solid 1px #2686B6;border-bottom:solid 1px #00192B}
+.Btn1Def {background-image:url(#{resource['ezcomp:primary-enabled.gif']});background-color:#BAD7ED;color:#000;border-top:solid 1px #4982A3;border-left:solid 1px #266386;border-right:solid 1px #266386;border-bottom:solid 1px #026EA4}
+.Btn1DefHov {background-image:url(#{resource['ezcomp:primary-roll.gif']});background-color:#C5E7FF;color:#000;border-top:solid 1px #499EC8;border-left:solid 1px #2686B6;border-right:solid 1px #2686B6;border-bottom:solid 1px #00192B}
+.Btn1Mni {background-image:url(#{resource['ezcomp:primary-mini-enabled.gif']});background-color:#BAD7ED;color:#000;border-top:solid 1px #4982A3;border-left:solid 1px #266386;border-right:solid 1px #266386;border-bottom:solid 1px #024368}
+.Btn1MniHov {background-image:url(#{resource['ezcomp:primary-mini-roll.gif']});background-color:#C5E7FF;color:#000;border-top:solid 1px #499EC8;border-left:solid 1px #2686B6;border-right:solid 1px #2686B6;border-bottom:solid 1px #026EA4}
+.Btn2 {background-image:url(#{resource['ezcomp:secondary-enabled.gif']});background-color:#D9E6EC;color:#000;border-top:solid 1px #6F787F;border-left:solid 1px #4E555A;border-right:solid 1px #4E555A;border-bottom:solid 1px #2D3235}
+.Btn2Hov {background-image:url(#{resource['ezcomp:secondary-roll.gif']});background-color:#EAF9FF;color:#000;border-top:solid 1px #6F97B2;border-left:solid 1px #4E7C9C;border-right:solid 1px #4E7C9C;border-bottom:solid 1px #2D6086}
+.Btn2Mni {background-image:url(#{resource['ezcomp:secondary-mini-enabled.gif']});background-color:#D9E6EC;color:#000;border-top:solid 1px #6F787F;border-left:solid 1px #4E555A;border-right:solid 1px #4E555A;border-bottom:solid 1px #2D3235}
+.Btn2MniHov {background-image:url(#{resource['ezcomp:secondary-mini-roll.gif']});background-color:#EAF9FF;color:#000;border-top:solid 1px #6F97B2;border-left:solid 1px #4E7C9C;border-right:solid 1px #4E7C9C;border-bottom:solid 1px #2D6086}
+.Btn1Dis, .Btn1DefDis, .Btn2Dis, .Btn1MniDis, .Btn2MniDis {background-color:#E1E4E5;color:#848687;border:solid 1px #8C8E8F}
+/*<<<<<<<<<<<<<<<<<<<<------------>>>>>>>>>>>>>>>>>>>>*/
+.Btn1, .Btn1Hov, .Btn1Def, .Btn1DefHov, .Btn1Mni, .Btn1MniHov, .Btn2Mni, .Btn2MniHov, .Btn2, .Btn2Hov {background-repeat:repeat-x;background-position:center center}
+.Btn1, .Btn1Hov, .Btn1Dis, .Btn1Def, .Btn1DefHov, .Btn1DefDis, .Btn2, .Btn2Hov, .Btn2Dis {font-size:12px;padding:1px 8px}
+.Btn1Mni, .Btn1MniHov, .Btn1MniDis, .Btn2Mni, .Btn2MniHov, .Btn2MniDis {font-size:10px;padding:0px 5px}
+.Btn1Hov, .Btn1MniHov, .Btn1DefHov, .Btn2Hov, .Btn2MniHov {cursor:pointer}
+/* for arrays where buttons need to be of equal width */
+.BtnTbl .Btn1, .BtnTbl .Btn1Hov, .BtnTbl .Btn1Dis, .BtnTbl .Btn1Def, .BtnTbl .Btn1DefHov, .BtnTbl .Btn1DefDis, .BtnTbl .Btn2, .BtnTbl .Btn2Hov, .BtnTbl .Btn2Dis {width:100%;margin:0px}
+.BtnAryDiv {margin:5px 8px}
+/*revised borders for masthead  */
+.MstDiv .Btn1, .MstDiv .Btn1Mni, .MstDiv .Btn1Def {border-top:solid 1px #213F52;border-left:solid 1px #142A38;border-right:solid 1px #142A38;border-bottom:solid 1px #091821;vertical-align:middle}
+.MstDiv .Btn1Hov, .MstDiv .Btn1MniHov, .MstDiv .Btn1DefHov {border-top:solid 1px #213F52;border-left:solid 1px #142A38;border-right:solid 1px #142A38;border-bottom:solid 1px #091821;vertical-align:middle}
+.MstDiv .Btn2, .MstDiv .Btn2Mni {border-top:solid 1px #2D3C46;border-left:solid 1px #1C262D;border-right:solid 1px #1C262D;border-bottom:solid 1px #0E1418;vertical-align:middle}
+.MstDiv .Btn2Hov, .MstDiv .Btn2MniHov {border-top:solid 1px #2D3C46;border-left:solid 1px #1C262D;border-right:solid 1px #1C262D;border-bottom:solid 1px #0E1418;vertical-align:middle}
+/*---*/
+
+
+/* CHECKBOXES AND RADIO BUTTONS */
+.CbDis, .RbDis {background-color:#E1E4E5;color:#848687}
+.Cb {}
+.Rb {}
+/*---*/
+
+
+/* EDITABLE LIST */
+.EdtLstAddLblDiv {padding-top:2px}
+table.EdtLstAddTbl td {padding:5px 0px;white-space:nowrap;vertical-align:top}
+.EdtLstRmvLblDiv {padding-top:7px}
+table.EdtLstRmvTbl td {padding:5px 0px;white-space:nowrap;vertical-align:top}
+
+
+/* FILE CHOOSER */
+.ChoLblTxt {color:#5F6466;font-weight:bold}
+.ChoSrvTxt {color:#333}
+
+
+/* HELP WINDOW */
+.HlpStpTab {margin:0px 0px 5px 0px;background:#FFF;border-top:#fff 1px solid}
+.HlpBtnDiv {margin:5px 10px 4px;vertical-align:middle}
+.HlpTtlDiv {margin:15px 0px 0px 10px}
+.HlpSchDiv {margin:5px 5px 5px 10px}
+.HlpRltDiv {margin-top:6px}
+.HlpIdxDiv {margin:5px 5px 5px 10px}
+body.HlpBdy {background-color:#FFF;color:#333;margin:10px}
+body.HlpBdy h1 {font-family:sans-serif;margin-bottom:-3px;font-weight:bold;font-size:16px}
+body.HlpBdy h2 {font-family:sans-serif;margin-bottom:-5px;font-weight:bold;font-size:14px}
+body.HlpBdy h3 {font-family:sans-serif;margin-bottom:-5px;font-weight:bold;font-size:13px}
+body.HlpBdy h4 {font-family:sans-serif;margin-bottom:-5px;font-weight:bold;font-size:12px}
+body.HlpBdy h5, H6 {font-family:sans-serif;margin-bottom:-5px;font-weight:bold;font-size:11px}
+body.HlpBdy a:link {color:#003399;text-decoration:underline}
+body.HlpBdy a:visited {color:#336699;text-decoration:underline}
+body.HlpBdy a:hover {color:#003399;text-decoration:underline}
+/* New Styles */
+.HlpBtnNavBdy {border-top:#fff 1px solid;background-color:#D9E1E4;background-image:url(#{resource['ezcomp:help_btnnav_gradient.jpg']});background-repeat:repeat-x;background-position:left top;margin:0px}
+.HlpMstTtlBdy {background-color:#D9E1E4;margin:0px}
+/* Used for interim help solution */
+.help-body {background-color:#FFF;color:#000}
+.help-body a:link  {color:#003399;text-decoration:underline}
+.help-body a:active {color:#003399;text-decoration:underline}
+.help-body a:hover  {color:#336699;text-decoration:underline}
+.help-body a:visited {color:#336699;text-decoration:underline}
+.help-header-1 {color:#333;font-weight:bold;margin:8px 0px 3px;font-size:18px}
+.help-header-2 {color:#333;font-weight:bold;margin:8px 0px 3px;font-size:15px}
+.help-header-3 {color:#333;font-weight:bold;margin:8px 0px 3px}
+.help-table-header-row {background-color:#CCC}
+a.help-toc-link:link, a.help-toc-link:active {color:#003399;text-decoration:underline}
+a.help-toc-link:hover, a.help-toc-link:visited {color:#336699;text-decoration:underline}
+a.help-return-link:link, a.help-return-link:active {color:#003399;text-decoration:underline}
+a.help-return-link:hover, a.help-return-link:visited {color:#336699;text-decoration:underline}
+
+
+/* INLINE HELP  */
+.HlpPgeTxt {color:#333}
+.HlpFldTxt {font-size:11px;color:#333;padding-top:2px}
+a.HlpPgeLnk:link, a.HlpPgeLnk:visited {color:#003399;text-decoration:none}
+a.HlpPgeLnk:hover {color:#003399;text-decoration:underline}
+a.HlpFldLnk:link, a.HlpFldLnk:visited {color:#003399;text-decoration:none;font-size:11px}
+a.HlpFldLnk:hover {color:#003399;text-decoration:underline;font-size:11px}
+
+
+/* LABELS */
+.LblLev1Txt {color:#5F6466;font-weight:bold;font-size:16px}
+.LblLev2Txt {color:#5F6466;font-weight:bold}
+.LblLev3Txt {color:#333}
+.LblRqdDiv {color:#333}
+
+
+/* LEFT PANE HELP */
+.LftHlpMst {position:fixed;width:100%;height:55px;background:#FFF}
+.LftHlpHlp {position:fixed;left:0px;right:70%;top:55px;bottom:0px;background:#F0F1F3;background-image:url(#{resource['ezcomp:left_pane_grad.jpg']});background-repeat:repeat-x;background-position:left top;color:#333;overflow:auto}
+.LftHlpBdy {position:fixed;left:30%;right:0px;top:55px;bottom:0px;background-color:#FFF;color:#333;border-left:#CCC 1px solid;overflow:auto}
+.LftHlpDiv {margin:15px 10px 5px}
+.LftHlpTxt {color:#333}
+
+
+/* LISTS */
+/* Regular List */
+.Lst {border-bottom-color:#666;border-right-color:#666}
+.Lst, .LstOpt, .LstOptSel, .LstOptGrp {color:#333}
+.LstOptSep, .LstOptDis {color:#848687}
+/* Contextual Selector for Disabled Appearance */
+.LstDis {border-bottom-color:#666;border-right-color:#666}
+.LstDis, .LstDis option, .LstDis .LstOptGrp {background-color:#E1E4E5;color:#848687}
+/* Monospace Version */
+.LstMno {border-bottom-color:#666;border-right-color:#666}
+.LstMno, .LstMno .LstOptGrp {color:#333}
+/* Contextual Selector for Disabled Monospace Version */
+.LstMnoDis, .LstMnoDis option, .LstMnoDis .LstOptGrp {background-color:#E1E4E5;color:#848687}
+/*<<<<<<<<<<<<<<<<<<<<------------>>>>>>>>>>>>>>>>>>>>*/
+/* Regular List */
+.LstOptGrp {font-weight:normal;font-style:normal}
+/* Contextual Selector for Disabled Appearance */
+.LstDis .LstOptGrp {font-weight:normal;font-style:normal}
+/* Monospace Version */
+.LstMno, .LstMno option, .LstMno .LstOptGrp {font-family:monospace}
+.LstMno .LstOptGrp {font-weight:normal;font-style:normal}
+/* Contextual Selector for Disabled Monospace Version */
+.LstMnoDis, .LstMnoDis option, .LstMnoDis .LstOptGrp  {font-family:monospace}
+.LstMnoDis .LstOptGrp {font-weight:normal;font-style:normal}
+/*---*/
+
+
+/* LOCKHART LAUNCH PAGE */
+.LncMgn {margin:0px 10px 10px 10px}
+.LncTbl {background-color:#FFF;margin-top:5px}
+.LncCbDiv {padding:0px 3px 5px 0px}
+.LncHdr {font-weight:normal;color:#7F8391;font-size:18px}
+.LncHdrTd {padding:15px 5px 2px 0px;border-bottom:solid 1px #7F8391}
+.LncAppBox {padding:6px 8px 0px 0px}
+.LncAppTd {}
+.LncApp {}
+.LncTxt {color:#333;padding:0px 0px 3px 2px}
+a.LncLnk:link, a.LncLnk:visited {color:#003399;text-decoration:none}
+a.LncLnk:hover {color:#003399;text-decoration:underline}
+
+
+/* LOCKHART LOGIN */
+.logLblSvrNam {margin:0px 0px 5px 15px}
+.logTxtSvrNam {margin:0px 0px 5px 10px}
+.LogUsrLbl {margin:4px 0px 6px 15px}
+.LogUsrNam {margin:4px 0px 6px 10px}
+.logLbl {margin:0px 0px 3px 15px}
+.logInp {margin:0px 0px 3px 10px}
+.logLblLst {margin:0px 0px 10px 15px}
+.logInpLst {margin:0px 0px 10px 10px}
+.logBtn {margin:0px 0px 7px 10px}
+.logHlp {margin:0px 15px 7px 10px}
+.logErr {margin:5px 15px 5px 0px}
+.logCpy {width :720px;margin:5px 0px 50px;vertical-align:top}
+.logTxtCpy {font-size:10px;color:#fff;vertical-align:top}
+/* New Styles */
+.LogBdy {background-color:#4A5C69;margin:0px}
+.LogTopBnd {background-color:#4A5C69}
+.LogCntTd {background-color:#fff;padding-top:120px;}
+.LogBotBnd {background-color:#4A5C69}
+.LogMidBnd {background-color:#D4DCE1}
+
+
+/* MASTHEAD */
+span.MstLbl, span.MstTxt, span.MstUsrRole, span.MstAlmDwnTxt, span.MstAlmCrtTxt, span.MstAlmMajTxt, span.MstAlmMinTxt {color:#eef0f2}
+a.MstUsrLnk:link, a.MstUsrLnk:visited, a.MstAlmLnk:link, a.MstAlmLnk:visited, a.MstPrgLnk:link, a.MstPrgLnk:visited {color:#eef0f2;text-decoration:underline}
+a.MstUsrLnk:hover, a.MstAlmLnk:hover, a.MstPrgLnk:hover {text-decoration:underline}
+.MstBdy {background-color:#5A6C76}
+.MstTblEnd {background-color:#5A6C76;background-image:url(#{resource['ezcomp:masthead-sun-background.jpg']})}
+.MstDiv {background-color:#495B67;background-image:url(#{resource['ezcomp:masthead-background.jpg']})}
+.MstSecTbl {background-color:#4A5C6A;background-image:url(#{resource['ezcomp:sec-masthead-background.jpg']})}
+a.MstLnk:link, a.MstLnk:visited {background-color:#D9E6EC;color:#000;text-decoration:none;border-top:solid 1px #2D3C46;border-left:solid 1px #1C262D;border-right:solid 1px #1C262D;border-bottom:solid 1px #0E1418;background-image:url(#{resource['ezcomp:masthead_link_enabled.gif']})}
+a.MstLnk:hover {background-color:#EAF9FF;background-image:url(#{resource['ezcomp:masthead_link_roll.gif']})}
+a.MstLnkLft:link, a.MstLnkLft:visited {background-color:#D9E6EC;color:#000;text-decoration:none;border-top:solid 1px #2D3C46;border-left:solid 1px #1C262D;border-bottom:solid 1px #0E1418; background-image:url(#{resource['ezcomp:masthead_link_enabled.gif']})}
+a.MstLnkLft:hover {background-color:#EAF9FF;background-image:url(#{resource['ezcomp:masthead_link_roll.gif']})}
+a.MstLnkRt:link, a.MstLnkRt:visited {background-color:#D9E6EC;color:#000;text-decoration:none;border-top:solid 1px #2D3C46;border-left:solid 1px #1C262D;border-right:solid 1px #1C262D;border-bottom:solid 1px #0E1418;background-image:url(#{resource['ezcomp:masthead_link_enabled.gif']})}
+a.MstLnkRt:hover {background-color:#EAF9FF; background-image:url(#{resource['ezcomp:masthead_link_roll.gif']})}
+a.MstLnkCen:link, a.MstLnkCen:visited {background-color:#D9E6EC;color:#000;text-decoration:none;border-top:solid 1px #2D3C46;border-left:solid 1px #1C262D;border-bottom:solid 1px #0E1418; background-image:url(#{resource['ezcomp:masthead_link_enabled.gif']})}
+a.MstLnkCen:hover {background-color:#EAF9FF;background-image:url(#{resource['ezcomp:masthead_link_roll.gif']})}
+/*<<<<<<<<<<<<<<<<<<<<------------>>>>>>>>>>>>>>>>>>>>*/
+span.MstLbl, span.MstTxt, span.MstUsrRole {font-weight:normal}
+td.MstTdTtl {padding:0px 10px 0px 10px;vertical-align:top;white-space:nowrap}
+td.MstTdAlm {vertical-align:top;padding:7px 0px 3px}
+td.MstTdLogo {vertical-align:top;padding:6px 13px 8px 20px}
+div.MstDivTtl {padding-top:4px}
+div.MstDivSecTtl {padding:10px 10px 5px}
+div.MstDivUsr {padding-top:5px}
+div.MstTmeDiv, div.MstAlmDiv, div.MstStatDiv {padding:0px 15px 5px}
+div.MstStatDiv img {margin-top:-5px}
+a.MstLnk:link, a.MstLnk:visited {background-repeat:repeat-x;background-position:center center;padding:2px 10px 1px;text-transform:uppercase;font-size:10px;vertical-align:middle}
+a.MstLnk:hover {background-repeat:repeat-x;background-position:center center}
+.MstSpcImg {display:none}
+.MstBdy {margin:0px}
+.MstDiv {background-repeat:repeat-x;background-position:left top}
+.MstTblTop td {padding:6px 10px 4px}
+.MstTblTop img {vertical-align:middle}
+.MstTblEnd {background-repeat:repeat-x;background-position:left top;text-align:right;padding:1px 10px}
+.MstSecTbl {background-repeat:repeat-x;background-position:left top}
+a.MstLnkLft:link, a.MstLnkLft:visited {background-repeat:repeat-x;background-position:center center;padding:2px 10px 1px;text-transform:uppercase;font-size:10px;vertical-align:middle;white-space:nowrap}
+a.MstLnkLft:hover {background-repeat:repeat-x;background-position:center center}
+a.MstLnkRt:link, a.MstLnkRt:visited {background-repeat:repeat-x;background-position:center center;padding:2px 10px 1px;text-transform:uppercase;font-size:10px;vertical-align:middle;white-space:nowrap}
+a.MstLnkRt:hover {background-repeat:repeat-x;background-position:center center}
+a.MstLnkCen:link, a.MstLnkCen:visited {background-repeat:repeat-x;background-position:center center;padding:2px 10px 1px;text-transform:uppercase;font-size:10px;vertical-align:middle;white-space:nowrap}
+a.MstLnkCen:hover {background-repeat:repeat-x;background-position:center center}
+.MstTblBot  {}
+/*---*/
+/* archived mast styles */
+table.MstTbl {}
+td.MstTdBnd {}
+.MstDivSch {}
+div.MstDivAlmRow {padding:0px 15px 4px;vertical-align:text-bottom}
+div.MstDivAlmBotRow {padding:0px 15px 5px;vertical-align:text-bottom}
+div.MstDivPrgRow {padding:8px 15px 4px;vertical-align:text-top}
+
+
+/* MENUS */
+.MnuJmpOptGrp, .MnuStdOptGrp {color:#000}
+.MnuStdOpt, .MnuStdOptSel, .MnuStd {color:#333}
+.MnuJmpOptSep, .MnuJmpOptDis, .MnuStdOptSep, .MnuStdOptDis, .MnuJmpDis, .MnuStdDis {color:#848687}
+.MnuJmp {color:#003399;border-bottom-color:#666;border-right-color:#666}
+.MnuJmpDis, .MnuStdDis {background-color:#E1E4E5;color:#848687}
+.MnuJmpOpt, .MnuJmpOpt:hover {color:#003399}
+.MnuJmpOpt:hover {text-decoration:underline}
+.MnuStd {border-bottom-color:#666;border-right-color:#666}
+/*<<<<<<<<<<<<<<<<<<<<------------>>>>>>>>>>>>>>>>>>>>*/
+.MnuJmpOptSel {font-weight:normal}
+.MnuJmpOptGrp, .MnuStdOptGrp {font-weight:normal;font-style:normal}
+/*---*/
+
+
+/* PAGE TITLE */
+.TtlTxtDiv {margin:15px 0px 0px 10px} 
+.TtlTxtDiv img {vertical-align:text-bottom;margin-right:5px} 
+.TtlLin {background-color:#d0d7da}
+span.TtlTxt {color:#000;font-size:16px;font-weight:bold}
+h1.TtlTxt {color:#000;font-size:16px;font-weight:bold;margin:0px}
+.TtlActDiv {margin:8px 10px 0px 10px}
+.TtlHlpDiv {margin:5px 10px 0px 10px}
+.TtlVewDiv {margin:8px 10px 0px 10px}
+.TtlVewLbl {color:#5F6466;font-weight:bold}
+.TtlBtnDiv {margin:0px 8px 0px 10px}
+.TtlBtnBtmDiv {padding:10px 8px 0px 10px}
+
+
+/* PROGRESS BAR */
+.PrgOutBar {position:relative;height:14px;background-color:#f2f3f4;border:solid 1px #666;margin-top:10px}
+.Tbl .PrgOutBar {position:relative;height:14px;background-color:#f2f3f4;border:solid 1px #666;margin:-1px 0px 2px}
+.PrgInBar {position:absolute;top:1px;left:1px;height:12px;background-color:#a1c4d4;font-size:1px}
+.PrgInBarBak {background-color:#f2f3f4;position:absolute;top:1px;left:1px;height:12px;font-size:1px}
+.PrgBarMsgTxt {margin-top:10px;color:#333}
+.PrgBarPctTxt {margin-top:10px;color:#333}
+.PrgBarLog {margin-top:20px;}
+.PrgBarDtlLbl {margin:15px 0px 3px;}
+.PrgBarDtlLst {margin:0px;}
+.PrgBarCb {margin-top:20px;}
+.PrgBarBtnDiv {margin-top:10px;color:#333}
+.PrgBarBtnTbl td {padding-right:15px}
+/* progress dialog with steps */
+.PrgStpMst {position:fixed;width:100%;height:55px;background:#495B67}
+.PrgStpTtl {position:fixed;width:100%;height:36px;top:55px;right:0;bottom:auto;left:0;background-color:#D9E1E4}
+.PrgStpLft {position:fixed;width:30%;height:auto;top:91px;bottom:41px;background:#fff;color:#333;overflow:auto;padding-top:15px}
+.PrgStpBdy {position:fixed;width:70%;height:auto;top:91px;right:0px;bottom:41px;left:30%;background-color:#FFF;color:#333;border-left:#CCC 1px solid;overflow:auto}
+.PrgStpBtn {position:fixed;height:auto;top:auto;right:0px;bottom:0px;left:0px;background-color:#fff;color:#333;padding:0px 10px}
+.PrgStpBtnDiv {border-top:#CCC 1px solid;text-align:right;padding:10px 0px}
+.PrgStpSubTtlDiv {padding:12px 0px 0px 10px;}
+.PrgStpSubTtlTxt {color:#333;font-weight:bold;font-size:15px}
+.PrgStpTbl {background-color:#fff}
+.PrgStpNumDiv {margin:0px 5px 20px 22px}
+.PrgStpArwDiv {margin:0px 5px 20px 1px}
+.PrgStpTxtDiv {margin:0px 10px 20px 0px}
+.PrgStpTxt {color:#333;font-weight:normal}
+.PrgStpCurTxt {color:#333;font-weight:bold;vertical-align:top}
+.PrgStpTtl .TtlTxtDiv {margin:8px 0px 5px 10px} 
+.PrgStpTtl .TtlBtnDiv {margin:8px 10px 5px 10px} 
+
+
+/* PROPERTIES PAGES */
+.ConLin {border-right:solid 10px #FFF;background-color:#d0d7da}
+.ConFldSetDiv {margin:7px 10px 0px}
+.ConFldSet {}
+.ConFldSetLgd {}
+.ConFldSetLgdDiv {color:#5F6466;font-size:16px;font-weight:bold;margin-bottom:10px}
+.ConSubSecTtlTxt {margin:15px 0px 0px 15px;color:#5F6466;font-size:16px;font-weight:bold}
+.ConSubSecDiv {padding:0px 10px 5px 0px}
+.ConTblCl1Div {margin:8px 10px 0px 15px}
+.ConTblCl2Div {margin:7px 10px 0px 0px}
+.ConEmbTblCl1Div {margin:6px 10px 0px 30px}
+.ConEmbTblCl2Div {margin:3px 10px 0px 0px}
+.ConJmpScnDiv {margin:8px 10px 0px 0px}
+.ConJmpLnkDiv {margin:7px 25px 0px 26px;text-indent:-16px}
+.ConRqdDiv {text-align:right;margin:5px 10px 5px 0px}
+.ConDefTxt {color:#333}
+.ConRqdTxt {color:#333}
+.ConJmpTopDiv {margin:15px 10px 15px 10px}
+.ConErrLblTxt {color:#C00;font-weight:bold}
+.ConWrnLblTxt {color:#C90;font-weight:bold}
+.ConEmbTblCl1Div input[type=checkbox] {margin-left:-5px;vertical-align:middle}
+.ConEmbTblCl1Div input[type=radio] {margin-left:-5px;vertical-align:middle}
+div.ConTblCl2Div input {vertical-align:middle} 
+div.ConTblCl2Div select {vertical-align:middle} 
+a.JmpLnk:link, a.JmpLnk:visited {color:#003399;text-decoration:none;vertical-align:top}
+a.JmpLnk:hover {color:#003399;text-decoration:underline;vertical-align:top}
+a.JmpTopLnk:link, a.JmpTopLnk:visited {color:#003399;text-decoration:none}
+a.JmpTopLnk:hover {color:#003399;text-decoration:underline}
+
+
+/* SCHEDULER */
+a.DatLnk:link, a.DatLnk:visited {color:#003399;background-color:#fff;text-decoration:none;border:solid 1px #fff;display:block;padding:5px 0px 3px}
+a.DatLnk:hover {text-decoration:underline;border:solid 1px #fff;font-weight:bold}
+a.DatBldLnk:link, a.DatBldLnk:visited {color:#003399;background-color:#CBDCAF;padding:5px 0px 3px;border:solid 1px #CBDCAF;text-decoration:none;font-weight:bold;display:block}
+a.DatBldLnk:hover {text-decoration:underline}
+a.DatOthLnk:link, a.DatOthLnk:visited {color:#003399;background-color:#E9EBEC;text-decoration:none;padding:5px 0px 3px;border:solid 1px #E9EBEC;display:block}
+a.DatOthLnk:hover {text-decoration:underline;border:solid 1px #E9EBEC;font-weight:bold}
+a.DatOthBldLnk:link, a.DatOthBldLnk:visited {color:#003399;background-color:#CBDCAF;padding:5px 0px 3px;border:solid 1px #CBDCAF;text-decoration:none;font-weight:bold;display:block}
+a.DatOthBldLnk:hover {text-decoration:underline}
+.DatSelDiv {background-image:url(#{resource['ezcomp:date_time_gradient.jpg']});background-repeat:repeat-x;background-color:#71838D;text-align:center;color:#fff;border-top:solid 1px #71838D;border-left:solid 1px #71838D;border-right:solid 1px #71838D;-moz-border-radius-topleft:8px;-moz-border-radius-topright:8px;background-position:3px 3px;padding:4px 6px 5px 4px}
+.DatSelDiv input {padding-top:1px}
+.DatSelDiv select {margin:0px 1px}
+.DatCalDiv {background-color:#bec7cc;text-align:center;padding:2px 2px 2px 3px}
+.DatDayHdrTxt {color:#333;font-weight:normal;padding:2px 0px;display:block}
+.DatLblTxt {color:#666;font-weight:bold}
+.DatZonTxt {color:#333}
+.DatCalTbl {border-collapse:collapse}
+.DatCalTbl td {border:1px solid #bec7cc;width:29px}
+.DatCalTbl th {border:1px solid #bec7cc;width:29px;background-color:#bec7cc}
+
+
+/* SKIP NAVIGATION LINK */	
+.SkpWht {background-color:#FFF;height:0px}
+.SkpMedGry1 {background-color:#708290;height:0px}
+
+
+/* TABLE */
+table.Tbl {background-color:#BEC7CC;color:#333;width:100%;padding:6px;border-right:none;border-bottom:none;empty-cells:show}
+.TblMgn {margin:0px 10px}
+table.Tbl td {border-right:solid 1px #BEC7CC;border-bottom:solid 1px #BEC7CC;border-left:none;border-top:none;padding:4px 5px 1px 5px;background-color:#fff}
+table.Tbl th {border-right:solid 1px #BEC7CC;border-bottom:solid 1px #BEC7CC;border-left:none;border-top:none;padding:3px 5px 1px 5px;background-color:#fff;font-weight:normal}
+.TblTdLyt {} 
+.TblTtlTxt {background-image:url(#{resource['ezcomp:gradtblttl.jpg']});background-repeat:repeat-x;background-color:#71838D;text-align:left;color:#fff;padding:3px 10px;font-weight:bold;font-size:14px;border-top:solid 1px #71838D;border-left:solid 1px #71838D;border-right:solid 1px #71838D;-moz-border-radius-topleft:8px;-moz-border-radius-topright:8px;background-position:3px 3px}
+table.Tbl td.TblActTd {border-right:none;border-bottom:none;background-color:#BEC7CC;padding:0px 0px 6px 0px;vertical-align:middle} 
+/* new style */
+table.Tbl td.TblActTdLst {border-right:none;border-bottom:none;border-top:solid 1px #e5e5e5;background-color:#BEC7CC;padding:6px 0px 2px 0px;vertical-align:middle} 
+.TblActLbl {color:#333;font-weight:bold}
+table.Tbl td.TblTdLst {border-bottom:1px solid #81939B}
+table.Tbl th.TblTdLst {border-bottom:1px solid #81939B}
+table.Tbl td.TblTdCl1 {border-left:1px solid #81939B}
+table.Tbl th.TblTdCl1 {border-left:1px solid #81939B}
+table.Tbl td.TblTdCl1Lst {border-bottom:1px solid #81939B;border-left:1px solid #81939B}
+table.Tbl th.TblTdCl1Lst {border-bottom:1px solid #81939B;border-left:1px solid #81939B}
+table.Tbl th.TblColHdr {vertical-align:bottom;padding:0px;border-top:1px solid #81939B;border-right:1px solid #81939B;border-bottom:1px solid #81939B;background-color:#fff}
+table.Tbl th.TblColHdrCl1 {vertical-align:bottom;padding:0px;border:1px solid #81939B;background-color:#fff}
+.TblHdrTxt {display:block;background-image:url(#{resource['ezcomp:gradtblhdr.gif']});background-repeat:repeat-x;background-color:#fff;background-position:left bottom;text-align:left;color:#333;text-decoration:none;font-weight:bold;padding:4px 5px 3px;min-height:12px}
+table.Tbl th.TblColHdrSrt {vertical-align:bottom;padding:0px;border:1px solid #81939B;background-image:url(#{resource['ezcomp:gradtblhdrsrt.gif']});background-repeat:repeat-x;background-color:#E2E4E9;background-position:left top}
+table.Tbl td.TblTdSrt {background-color:#E9EBEC}
+table.Tbl th.TblTdSrt {background-color:#E9EBEC}
+table.Tbl td.TblTdSrtLst {background-color:#E9EBEC;border-bottom:1px solid #81939B}
+table.Tbl th.TblTdSrtLst {background-color:#E9EBEC;border-bottom:1px solid #81939B}
+table.Tbl th.TblColHdrSrtCl1 {vertical-align:bottom;padding:0px;border:1px solid #81939B;background-image:url(#{resource['ezcomp:gradtblhdrsrt.gif']});background-repeat:repeat-x;background-color:#E2E4E9;background-position:left top}
+table.Tbl td.TblTdSrtCl1 {background-color:#E9EBEC;border-left:1px solid #81939B}
+table.Tbl th.TblTdSrtCl1 {background-color:#E9EBEC;border-left:1px solid #81939B}
+table.Tbl td.TblTdSrtCl1Lst {background-color:#E9EBEC;border-bottom:1px solid #81939B;border-left:1px solid #81939B}
+table.Tbl th.TblTdSrtCl1Lst {background-color:#E9EBEC;border-bottom:1px solid #81939B;border-left:1px solid #81939B}
+table.Tbl th.TblColHdrSrtSelCl1 {text-align:center;background-image:url(#{resource['ezcomp:gradtblhdrsrt.gif']});background-repeat:repeat-x;background-color:#E2E4E9;background-position:left top;border-right:1px solid #828da4;border-top:1px solid #959aa5;border-left:1px solid #959aa5;border-bottom:solid 1px #828da4;padding:2px 5px 0px}
+table.Tbl td.TblTdSrtSelCl1 {text-align:center;vertical-align:top;border-left:1px solid #81939B;background-color:#E9EBEC;padding:0px}
+table.Tbl td.TblTdSrtSelCl1Lst {text-align:center;vertical-align:top;border-bottom:1px solid #81939B;border-left:1px solid #959aa5;background-color:#E9EBEC;padding:0px}
+table.Tbl th.TblColHdrSel {text-align:center;background-image:url(#{resource['ezcomp:gradtblhdr.gif']});background-repeat:repeat-x;background-color:#fff;background-position:left bottom;border-right:1px solid #d2d3d8;border-top:1px solid #959aa5;border-left:1px solid #959aa5;border-bottom:solid 1px #828da4;padding:2px 5px 0px}
+table.Tbl td.TblTdSel {text-align:center;vertical-align:top;border-left:1px solid #81939B;background-color:#fff;padding:0px}
+table.Tbl td.TblTdSelLst {text-align:center;vertical-align:top;border-left:1px solid #81939B;background-color:#fff;border-bottom:1px solid #81939B;border-left:1px solid #81939B;padding:0px}
+table.Tbl td.TblTdSpc {}
+table.Tbl th.TblTdSpc {vertical-align:bottom;padding:0px;border-top:1px solid #81939B;border-right:1px solid #81939B;border-bottom:1px solid #81939B;background-color:#fff}
+table.Tbl td.TblTdSpcLst {border-bottom:1px solid #81939B}
+table.Tbl td.TblTdAlm {background-color:#FFFEE7}
+table.Tbl th.TblTdAlm {background-color:#FFFEE7}
+table.Tbl td.TblTdAlmCl1 {background-color:#FFFEE7;border-left:1px solid #81939B}
+table.Tbl th.TblTdAlmCl1 {background-color:#FFFEE7;border-left:1px solid #81939B}
+table.Tbl td.TblTdAlmLst {background-color:#FFFEE7;border-bottom:1px solid #81939B}
+table.Tbl th.TblTdAlmLst {background-color:#FFFEE7;border-bottom:1px solid #81939B}
+table.Tbl td.TblTdAlmCl1Lst {background-color:#FFFEE7;border-bottom:1px solid #81939B;border-left:1px solid #81939B}
+table.Tbl th.TblTdAlmCl1Lst {background-color:#FFFEE7;border-bottom:1px solid #81939B;border-left:1px solid #81939B}
+table.Tbl td.TblTdSrtAlm {background-color:#FFFEE7}
+table.Tbl th.TblTdSrtAlm {background-color:#FFFEE7}
+table.Tbl td.TblTdSrtAlmLst {background-color:#FFFEE7;border-bottom:1px solid #81939B}
+table.Tbl th.TblTdSrtAlmLst {background-color:#FFFEE7;border-bottom:1px solid #81939B}
+table.TblHdrTbl {background:none;width:100%;border:none}
+th.TblColHdrSrt table.TblHdrTbl {background:none;width:100%;border:none}
+th.TblColHdrSrtCl1 table.TblHdrTbl {background:none;width:100%;border:none}
+table.TblHdrTbl td {border:none;padding:0px;vertical-align:bottom;background:none;width:100%}
+a.TblHdrLnk:link, a.TblHdrLnk:visited {display:block;text-align:left;background-image:url(#{resource['ezcomp:gradtblhdr.gif']});background-repeat:repeat-x;background-color:#fff;background-position:left bottom;color:#333;text-decoration:none;font-weight:bold;padding:3px 0px 3px 5px}
+a.TblHdrLnk:hover {color:#333;text-decoration:underline;text-align:left;font-weight:bold}
+th.TblColHdrSrt a.TblHdrLnk:link {background:none;display:block;text-align:left;color:#333;text-decoration:none;font-weight:bold;padding:3px 0px 3px 5px}
+th.TblColHdrSrt a.TblHdrLnk:visited {background:none;display:block;text-align:left;color:#333;text-decoration:none;font-weight:bold;padding:3px 0px 3px 5px}
+th.TblColHdrSrt a.TblHdrLnk:hover {color:#333;text-decoration:underline;text-align:left;font-weight:bold}
+th.TblColHdrSrtCl1 a.TblHdrLnk:link {background:none;display:block;text-align:left;color:#333;text-decoration:none;font-weight:bold;padding:3px 0px 3px 5px}
+th.TblColHdrSrtCl1 a.TblHdrLnk:visited {background:none;display:block;text-align:left;color:#333;text-decoration:none;font-weight:bold;padding:3px 0px 3px 5px}
+th.TblColHdrSrtCl1 a.TblHdrLnk:hover {color:#333;text-decoration:underline;text-align:left;font-weight:bold}
+table.TblHdrTbl img {margin-bottom:3px;padding-right:5px;padding-left:5px}
+a.TblNavLnk:link, a.TblNavLnk:visited {color:#003399;text-decoration:none}
+a.TblNavLnk:hover {color:#003399;text-decoration:underline}
+a.TblActLnk:link, a.TblActLnk:visited {color:#003399;text-decoration:none}
+a.TblActLnk:hover {color:#003399;text-decoration:underline}
+.TblMsgTxt {color:#333}
+.TblPgnTxtBld {color:#5F6466;font-weight:bold}
+.TblPgnTxt {color:#333}
+/* css hooks for row mouseover and selection */
+table.Tbl tr.TblSelRow td {}
+table.Tbl tr.TblSelRow th {}
+table.Tbl tr.TblHovRow td {}
+table.Tbl tr.TblHovRow th {}
+
+
+/* TABSET - OLD STYLE TAB NAVIGATION */
+a.Tab1NotSelLnk:link, a.Tab1NotSelLnk:visited {font-weight:bold;color:#003399;text-decoration:none}
+a.Tab1NotSelLnk:hover {text-decoration:underline}
+span.Tab1SelTxt {font-weight:bold;color:#333;text-decoration:none}
+a.TabNotSelLnk:link, a.TabNotSelLnk:visited {color:#003399;text-decoration:none}
+a.TabNotSelLnk:hover {text-decoration:underline}
+span.TabSelTxt {font-weight:bold;color:#333;text-decoration:none}
+/* Level 1 Tab Navigation */
+div.Tab1 {background-color:#CCC}
+table.Tab1Tbl {background-color:#CCC}
+td.Tab1TdSel {background-color:#FFF;min-width:90px}
+td.Tab1TdNotSel {background-color:#E5E5E5;min-width:90px}
+div.Tab1DivSel {padding-left:10px;padding-top:5px;padding-bottom:3px}
+div.Tab1DivNotSel {padding-left:7px;padding-right:3px;padding-bottom:2px;border-left:3px solid #E5E5E5;border-top:3px solid #E5E5E5;border-right:3px solid #E5E5E5}
+td.Tab1Gtr {background-color:#CCC}
+/* Level 2 Tab Navigation */
+div.Tab2 {background-color:#FFF}
+table.Tab2Tbl {background-color:#FFF}
+td.Tab2LinBak {background-color:#CCC}
+div.Tab2Sel {padding-top:3px;padding-bottom:1px}
+div.Tab2NotSel {padding-top:4px;padding-bottom:2px}
+/* Level 3 Tab Navigation */
+div.Tab3 {background-color:#FFF}
+table.Tab3Tbl {background-color:#FFF}
+
+/* TABSET [originalName: LEVEL TABS]*/
+.Tab1Div {background-color:#D2D9E1; background-image:url(#{resource['ezcomp:level1_background.jpg']})} 
+a.Tab1Lnk:link, a.Tab1Lnk:visited  {color:#000;text-decoration:none}
+a.Tab1Lnk:hover {text-decoration:underline}
+.Tab1Div td {background-color:#A3ADB6;border:solid 1px #8f989f; background-image:url(#{resource['ezcomp:level1_deselect.jpg']})}
+.Tab1Div td.Tab1TblSpcTd {background-color:#D2D9E1; background-image:url(#{resource['ezcomp:level1_background.jpg']})}
+.Tab1Div div.Tab1SelTxtNew {color:#000}
+table.Tab1TblNew td.Tab1TblSelTd {background-color:#FFF; background-image:url(#{resource['ezcomp:level1_selected-1lev.jpg']})}
+table.Tab1Tbl2New td.Tab1TblSelTd, table.Tab1Tbl3New td.Tab1TblSelTd {background-color:#E4ECEF; background-image:url(#{resource['ezcomp:level1_selected.jpg']})}
+/* LEVEL 2 TABS */
+.Tab2Div {background-color:#E2EAED; background-image:url(#{resource['ezcomp:level2_background.jpg']})}
+a.Tab2Lnk:link, a.Tab2Lnk:visited{color:#000;text-decoration:none}
+a.Tab2Lnk:hover {text-decoration:underline}
+.Tab2Div td {background-color:#C4CBD1;border:solid 1px #8f989f; background-image:url(#{resource['ezcomp:level2_deselect.jpg']})}
+.Tab2Div div.Tab2SelTxt {color:#000}
+table.Tab2TblNew td.Tab2TblSelTd {background-color:#F2F4F3;border-left:solid 1px #8f989f;border-right:solid 1px #8f989f;border-top:solid 1px #8f989f; background-image:url(#{resource['ezcomp:level3_selected.jpg']})}
+table.Tab2Tbl3New td.Tab2TblSelTd {background-color:#FBFCFE;border-left:solid 1px #8f989f;border-right:solid 1px #8f989f;border-top:solid 1px #8f989f; background-image:url(#{resource['ezcomp:level2_selected.jpg']})}
+/* LEVEL 3 TABS*/
+.Tab3Div {background-color:#E2E7EA; background-image:url(#{resource['ezcomp:level3_background.gif']})}
+a.Tab3Lnk:link,a.Tab3Lnk:visited {color:#333;background:#E2E7EA;text-decoration:none}
+a.Tab3Lnk:hover {text-decoration:underline}
+table.Tab3TblNew {background-color:#E2E7EA}
+table.Tab3TblNew td {border-bottom:solid 1px #8f989f}
+table.Tab3TblNew div.Tab3SelTxt {color:#000}
+table.Tab3TblNew td.Tab3TblSelTd {border-left:solid 1px #8f989f;border-right:solid 1px #8f989f;border-top:1px solid #8f989f;background-color:#F0F1F3; background-image:url(#{resource['ezcomp:level3_selected.jpg']})}
+/* Hide Styles */
+.Tab1Div td.hidden, .Tab2Div td.hidden, .Tab3Div td.hidden {display:none}
+/*<<<<<<<<<<<<<<<<<<<<------------>>>>>>>>>>>>>>>>>>>>*/
+.Tab1Div {background-repeat:repeat-x;background-position:left bottom;padding:6px 10px 0px} 
+a.Tab1Lnk:link, a.Tab1Lnk:visited  {display:block;padding:8px 15px 7px;font-weight:bold;text-align:center}
+.Tab1Div table {border-collapse:collapse}
+.Tab1Div td {background-repeat:repeat-x;background-position:left top}
+.Tab1Div td.Tab1TblSpcTd {background-repeat:repeat-x;background-position:left bottom;border:none}
+.Tab1Div td.Tab1TblSelTd {background-repeat:repeat-x;background-position:left top;border-bottom:none}
+.Tab1Div div.Tab1SelTxtNew {display:block;padding:8px 15px 7px;font-weight:bold;text-align:center}
+.Tab1Div td a.TabPad {padding:8px 20px 7px}
+.Tab1Div td.Tab1TblSelTd div.TabPad {padding:8px 20px 7px}
+/* LEVEL 2 TABS */
+.Tab2Div {background-repeat:repeat-x;background-position:left bottom;padding:6px 0px 0px 10px}
+a.Tab2Lnk:link, a.Tab2Lnk:visited{display:block;padding:5px 15px 4px;text-align:center}
+.Tab2Div table {border-collapse:collapse}
+.Tab2Div td {background-repeat:repeat-x;background-position:left top}
+.Tab2Div div.Tab2SelTxt {display:block;padding:5px 15px 4px;font-weight:normal;text-align:center}
+.Tab2Div td.Tab2TblSelTd {border-bottom:none;background-repeat:repeat-x;background-position:left bottom}
+.Tab2Div td a.TabPad {padding:5px 20px 4px}
+.Tab2Div td.Tab2TblSelTd div.TabPad {padding:5px 20px 4px}
+/* LEVEL 3 TABS*/
+.Tab3Div {padding:6px 0px 0px 10px;background-repeat:repeat-x;background-position:right bottom}
+a.Tab3Lnk:link,a.Tab3Lnk:visited {display:block;padding:4px 15px 3px;text-align:center}
+table.Tab3TblNew div.Tab3SelTxt {font-weight:normal;padding:4px 15px 3px;text-align:center}
+table.Tab3TblNew td.Tab3TblSelTd {border-bottom:none;background-repeat:repeat-x;background-position:left bottom}
+.Tab3Div td a.TabPad {padding:5px 20px 4px}
+.Tab3Div td.Tab3TblSelTd div.TabPad {padding:5px 20px 4px}
+/*---*/
+/* TABS-MINI */
+.MniTabDiv {background-color:#D9E1E4; background-image:url(#{resource['ezcomp:minitab_background.jpg']})}
+table.MniTabTbl td {background-color:#C4CBD1;border:solid 1px #8f989f; background-image:url(#{resource['ezcomp:minitab_deselect.jpg']})}
+a.MniTabLnk:link,a.MniTabLnk:visited {color:#000;text-decoration:none}
+.MniTabSelTxt {color:#000;text-decoration:none}
+table.MniTabTbl td.MniTabTblSelTd {background-color:#F2F4F3;border-left:solid 1px #8f989f;border-right:solid 1px #8f989f;border-top:solid 1px #8f989f; background-image:url(#{resource['ezcomp:minitab_selected.jpg']})}
+.MniTabDiv td.hidden {display:none}
+/*<<<<<<<<<<<<<<<<<<<<------------>>>>>>>>>>>>>>>>>>>>*/
+.MniTabDiv {background-repeat:repeat-x;background-position: bottom left;padding:7px 0px 0px 10px}
+table.MniTabTbl {border-collapse:collapse}
+table.MniTabTbl td {background-repeat:repeat-x;background-position:left top}
+a.MniTabLnk:link,a.MniTabLnk:visited {display:block;padding:5px 15px 4px;font-size:12px;text-decoration:none}
+a.MniTabLnk:hover {text-decoration:underline}
+.MniTabSelTxt {display:block;padding:5px 15px 4px;font-size:12px;text-decoration:none}
+table.MniTabTbl td.MniTabTblSelTd {border-bottom:none;background-repeat:repeat-x;background-position:left bottom}
+/*---*/
+
+
+/* TEXT AND PASSWORD FIELDS */
+.TxtFld {border-top:solid 2px #848484;border-left:solid 2px #848484;border-bottom:solid 2px #ccc;border-right:solid 2px #ccc}
+.TxtFldDis {background-color:#E1E4E5;color:#848687;border-top:solid 2px #848484;border-left:solid 2px #848484;border-bottom:solid 2px #ccc;border-right:solid 2px #ccc}
+/*<<<<<<<<<<<<<<<<<<<<------------>>>>>>>>>>>>>>>>>>>>*/
+.TxtFld, .TxtFldDis {padding-left:2px}
+/*---*/
+
+
+/* TEXTAREAS */ 
+.TxtAra {border-top:solid 2px #848484;border-left:solid 2px #848484;border-bottom:solid 2px #ccc;border-right:solid 2px #ccc}
+.TxtAraDis {background-color:#E1E4E5;color:#848687;border-top:solid 2px #848484;border-left:solid 2px #848484;border-bottom:solid 2px #ccc;border-right:solid 2px #ccc}
+/*<<<<<<<<<<<<<<<<<<<<------------>>>>>>>>>>>>>>>>>>>>*/
+.TxtAra, .TxtAraDis {padding-left:2px}
+/*---*/
+
+
+/* TREE */
+a.TreParLnk:link, a.TreParLnk:visited {color:#003399;text-decoration:none;font-weight:bold}
+a.TreParLnk:hover {color:#003399;text-decoration:underline;font-weight:bold}
+a.TreLnk:link, a.TreLnk:visited {color:#003399;text-decoration:none}
+a.TreLnk:hover {color:#003399;text-decoration:underline}
+.TreSelTxt {color:#000;font-weight:bold}
+a.TreSelLnk:link, a.TreSelLnk:visited {color:#000;text-decoration:none;font-weight:bold}
+a.TreSelLnk:hover {color:#000;text-decoration:underline;font-weight:bold}
+.TreLnkSpc {margin-left:3px}
+.TreRotRow {background-color:#D2D9E1}
+tr.TreSelRow td {background-color:#CBDCAF}
+.TreImg {padding-top:2px;padding-bottom:1px} 
+.TreTbl {background-color:#fff}
+.TreBdy {color:#000;background-color:#fff;margin:0px}
+.TreTtl {color:#000;font-weight:bold}
+/* white version */
+tr.TreWhtSelRow td {background-color:#CBDCAF}
+.TreWhtTbl {background-color:#FFF}
+.TreWhtBdy {color:#000;background-color:#FFF;margin:0px}
+
+
+/* VERSION DIALOG */
+.VrsMgn {width:100%;height:100%;position:absolute;background-color:#D4DCE1;overflow:auto}
+.VrsHdrTxt {color:#333;font-weight:bold;margin:20px 25px 7px;font-size:15px} 
+.VrsTxt {color:#000;margin:0px 25px 10px}
+.VrsBtnAryDiv {text-align:right;margin:20px 15px 0px 0px}
+ /* New Styles */
+.VrsMstBdy {background-color:#FFF;background-image:url(#{resource['ezcomp:version_brand.jpg']});background-repeat:no-repeat}
+.VrsBtnBdy {background-color:#D4DCE1}
+.VrsPrdDiv {padding:30px 0px 0px 195px}
+.VrsLgoTd {text-align:right;vertical-align:top;padding:5px 10px 0px 10px}
+.VrsPrdTd {vertical-align:top}
+/* Archived Version Styles */
+.VrsLin {}
+
+
+/* WIZARD */
+.WizMst {background:#495B67}
+.WizTtl {background-color:#D9E1E4}
+.WizStp {color:#333;border-top:#fff 1px solid}
+.WizBdy {color:#333;border-left:#CCC 1px solid;border-top:#fff 1px solid; background-image:url(#{resource['ezcomp:wizbdy_minitab_background.jpg']})}
+.WizBtn {background:#FFF;border-left:#CCC 1px solid}
+.WizStpTab, .WizStpTbl, .WizStp, WizBdy {background-color:#fff}
+.WizStpTxt, .WizStpCurTxt, .WizHlpTxt, .WizSubTtlTxt, .WizSubStpTtlTxt, .WizCntHlpTxt {color:#333}
+.WizSubTtlDiv, .WizTtl .TtlLin {background-color:#D9E1E4}
+.WizSubTtlDiv {background-image:url(#{resource['ezcomp:minitab_background.jpg']})}
+a.WizStpLnk:link, a.WizStpLnk:visited {color:#003399;text-decoration:none}
+a.WizStpLnk:hover {color:#003399;text-decoration:underline}
+/*<<<<<<<<<<<<<<<<<<<<------------>>>>>>>>>>>>>>>>>>>>*/
+.WizMst {position:fixed;width:100%;height:55px;top:0;right:0;bottom:auto;left:0}
+.WizTtl {position:fixed;width:100%;height:36px;top:55px;right:0;bottom:auto;left:0}
+.WizStp {position:fixed;width:30%;height:auto;top:91px;right:auto;bottom:0px;left:0px;overflow:auto}
+.WizBdy {position:fixed;width:auto;height:auto;top:91px;right:0;bottom:55px;left:30%;overflow:auto;background-repeat:no-repeat;background-position:top right;padding-top:30px}
+.WizBtn {position:fixed;width:auto;height:50px;top:auto;right:0;bottom:5px;left:30%}
+.WizStpNumDiv {margin:0px 5px 20px 22px}
+.WizStpArwDiv {margin:0px 5px 20px 1px}
+.WizStpTxtDiv {margin:0px 10px 20px 0px}
+.WizStpTxt {font-weight:normal}
+.WizStpCurTxt {font-weight:bold;vertical-align:top}
+.WizHlpDiv {margin:15px 10px 5px 10px}
+.WizSubTtlDiv {position:absolute;width:auto;height:auto;top:0px;right:0;left:0;padding:7px 0px 7px 10px;background-repeat:repeat-x;background-position:left bottom}
+.WizSubTtlTxt {font-weight:bold;font-size:15px}
+.WizSubStpTtlDiv {padding:2px 0px 0px 10px}
+.WizSubStpTtlTxt {font-weight:bold;font-size:12px}
+.WizCntHlpTxt {margin:15px 10px 10px 10px}
+.WizBtnDiv {margin:20px 10px 10px 10px}
+.WizTtl .TtlTxtDiv {margin:10px 0px 3px 10px} 
+/*---*/
+
+
+/* ---------------------------------------------*/
+/* ---------------------------------------------*/
+/* THESE ARE OLD 1.0 STYLES -- DO NOT USE  for 2.0 */
+/* ---------------------------------------------*/
+/* ---------------------------------------------*/
+/* INTERNET EXPLORER 5+ FOR WINDOWS & NETSCAPE 6 STYLE SHEET */
+/* Last Updated 06/17/2002 */
+.masthead-body {background-color:#669}
+.masthead-background {background-color:#669}
+.masthead-title-row {background-color:#000}
+.masthead-separator-row {background-color:#FFF}
+.masthead-bottom-row {background-color:#669}
+.masthead-text {color:#FFF}
+.masthead-role-text {color:#FFF;font-weight:bold}
+.masthead-server-text {color:#FFF;font-weight:bold}
+a.masthead-link:link, a.masthead-link:visited {color:#FFF;text-decoration:none}
+a.masthead-link:hover {color:#FFF;text-decoration:underline}
+a.masthead-link:active {color:#F00;text-decoration:underline}
+.masthead-link-divider {color:#F90}
+.secondary-masthead-title {color:#FFF;font-size:1.25em;font-weight:bold;margin:5px 10px}
+.copyright-text {color:#999;font-size:.9em}
+.copyright-separator {background-color:#CCC}
+a.plugin-link:link, a.plugin-link:visited {font-weight:bold;color:#669;text-decoration:underline}
+a.plugin-link:active {font-weight:bold;color:#F00;text-decoration:underline}
+.plugin-description-text {color:#000}
+.tree-body {background-color:#FFF;color:#000} 
+a.tree-node-link:link, a.tree-node-link:visited, a.tree-node-link:active {color:#000;text-decoration:none}
+.global-tab-unselected {background-color:#99C;text-align:center}
+a.global-tab-link:link, a.global-tab-link:visited {color:#FFF;font-weight:bold;text-decoration:none;background-color:#99C}
+a.global-tab-link:hover {color:#FFF;font-weight:bold;text-decoration:underline;background-color:#99C}
+a.global-tab-link:active {color:#F00;text-decoration:underline}
+.global-tab-selected {background-color:#FFC;text-align:center}
+.global-tab-text {color:#000;font-weight:bold;background-color:#FFC}
+.global-tab-sec-back  {background-color:#FFC}
+.global-tab-sec-divider {color:#F90;margin:2px 0px}
+a.global-tab-sec-link:link, a.global-tab-sec-link:visited {margin:2px 0px;color:#000;background-color:#FFC;text-decoration:none}
+a.global-tab-sec-link:hover {margin:2px 0px;color:#000;background-color:#FFC;text-decoration:underline}
+a.global-tab-sec-link:active {margin:2px 0px;color:#F00;text-decoration:underline}
+.global-tab-sec-text {margin:2px 0px;color:#000;background-color:#FFC;font-weight:bold}
+.local-tab-back  {background-color:#CCC}
+.local-tab-unselected {background-color:#999;text-align:center}
+a.local-tab-link:link, a.local-tab-link:visited {color:#000;font-weight:bold;text-decoration:none;background-color:#999}
+a.local-tab-link:hover {color:#000;font-weight:bold;text-decoration:underline;background-color:#999}
+a.local-tab-link:active {color:#F00;text-decoration:underline}
+.local-tab-selected {background-color:#FFF;text-align:center}
+.local-tab-text {color:#000;font-weight:bold;background-color:#FFF}
+.local-tab-sec-back  {background-color:#FFF}
+.local-tab-sec-divider {color:#000;margin:4px 0px}
+a.local-tab-sec-link:link, a.local-tab-sec-link:visited {margin:4px 0px;color:#000;background-color:#FFF;text-decoration:underline}
+a.local-tab-sec-link:hover {margin:4px 0px;color:#000;background-color:#FFF;text-decoration:underline}
+a.local-tab-sec-link:active {margin:4px 0px;color:#F00;text-decoration:underline}
+.local-tab-sec-text {margin:4px 0px;color:#000;background-color:#FFF;font-weight:bold}
+.breadcrumb-row  {background-color:#CCC}
+.breadcrumb-text  {color:#000;font-weight:bold;margin:3px 10px}
+a.breadcrumb-link:link, a.breadcrumb-link:visited {color:#000;font-weight:normal;text-decoration:underline}
+a.breadcrumb-link:active {color:#F00;text-decoration:underline}
+.content-layout {margin:0px 10px}
+.button-frame-enabled {background-color:#000}
+.button-content-enabled {background-color:#CCC;cursor:pointer;cursor:hand}
+.button-link-enabled-text {color:#000;margin:1px 0px;font-weight:bold}
+a.button-link:link, a.button-link:visited {color:#000;background-color:#CCC;text-decoration:none}
+a.button-link:active {color:#000;background-color:#999;text-decoration:none}
+.button-frame-disabled {background-color:#999}
+.button-content-disabled {background-color:#CCC}
+.button-link-disabled-text {color:#999;margin:1px 0px;font-weight:bold}
+.mini-button-frame-enabled {background-color:#000}
+.mini-button-content-enabled {background-color:#CCC;cursor:pointer;cursor:hand}
+.mini-button-link-enabled-text {color:#000;font-size:.9em;margin:1px 0px;font-weight:bold}
+a.mini-button-link:link, a.mini-button-link:visited {color:#000;background-color:#CCC;text-decoration:none}
+a.mini-button-link:active {color:#000;background-color:#999;text-decoration:none}
+.mini-button-frame-disabled {background-color:#999}
+.mini-button-content-disabled {background-color:#CCC}
+.mini-button-link-disabled-text {color:#999;font-size:.9em;margin:1px 0px;font-weight:bold}
+.table-title-text {color:#000;font-weight:bold;margin:0px 5px 2px 0px}
+.table-frame {background-color:#99C}
+.table-content {background-color:#FFF}
+.table-header-row {background-color:#99C}
+.table-sort-row {background-color:#CCF}
+.table-separator-row {background-color:#CCC}
+.table-header-text {color:#FFF;font-weight:bold;margin:2px 5px 2px 10px}
+.table-label-text { color:#000;margin:3px 5px 3px 10px}
+.table-normal-text {color:#000;margin:3px 5px 3px 10px}
+.table-status-ok-text {color:#000;margin:3px 5px 3px 10px}
+.table-status-critical-text {color:#000;margin:3px 5px 3px 10px}
+.table-status-major-text {color:#000;margin:3px 5px 3px 10px}
+.table-status-minor-text {color:#000;margin:3px 5px 3px 10px}
+.table-strong-text {color:#000;margin:3px 5px 3px 10px;font-weight:bold}
+.sort-row-margin {margin:0px 5px 0px 10px}
+.select-all-margin {margin:2px}
+.table-navlink-text {color:#669;margin:3px 5px 3px 10px}
+a.table-navlink:link, a.table-navlink:visited {color:#669;text-decoration:underline}
+a.table-navlink:active {color:#F00;text-decoration:underline}
+.table-actlink-text {color:#99C;margin:3px 5px 3px 10px;font-weight:bold}
+a.table-actlink:link, a.table-actlink:visited {font-weight:normal;color:#669;text-decoration:underline}
+a.table-actlink:active {font-weight:normal;color:#F00;text-decoration:underline}
+.table-vertpag-label-text {color:#000;font-weight:bold}
+.table-vertpag-pages-text {color:#000}
+.table-vertpag-title-text {color:#000;font-weight:normal}
+.alert-error-frame {background-color:#C00}
+.alert-error-content {background-color:#FFF}
+.alert-warning-frame {background-color:#FC0}
+.alert-warning-content {background-color:#FFF}
+.alert-info-frame {background-color:#99C}
+.alert-info-content {background-color:#FFF}
+.alert-header-text {color:#000;font-weight:bold;margin:0px 0px 5px 0px}
+.alert-normal-text {color:#000}
+.alert-mono-text {color:#000;font-family:monospace}
+.alert-strong-text {color:#000;font-weight:bold}
+a.alert-link:link, a.alert-link:visited {color:#669;text-decoration:underline}
+a.alert-link:active {color:#F00;text-decoration:underline}
+.properties-jumpto-text {color:#000}
+.properties-level1-label-text {color:#000;margin:20px 0px 0px 0px;font-weight:bold}
+.properties-level2-label-text {color:#000;margin:20px 0px 5px 20px;font-weight:bold}
+.properties-level3-label-text {color:#000;margin:0px 0px 0px 40px}
+.properties-separator {background-color:#CCC}
+.properties-normal-text {color:#000}
+.properties-required {color:#00F}
+.wizard-title-text {color:#FFF;margin:5px;font-size:1.25em;font-weight:bold}
+.wizard-steps-body  {background-color:#FFF;color:#000}
+.wizard-contents-body {background-color:#FFF;color:#000}
+.wizard-navigation-body {background-color:#FFF;color:#000}
+.wizard-steps-title-text {color:#000;font-weight:bold}
+.wizard-steps-divider {background-color:#000}
+.wizard-step-text {color:#000}
+.wizard-help-text {color:#000;margin:3px 0px}
+.wizard-step-current-text {color:#000;font-weight:bold}
+a.wizard-step-link:link, a.wizard-step-link:visited {color:#669;text-decoration:underline}
+a.wizard-step-link:active {color:#F00;text-decoration:underline}
+.wizard-content-title-text {color:#000;font-weight:bold;margin:3px 5px}
+.wizard-content-title-row  {background-color:#CCC}
+.wizard-content-instr-text {color:#000}
+.wizard-content-label-text {color:#000}
+.wizard-tab-frame-forward {background-color:#000}
+.wizard-tab-content-forward {background-color:#FFF}
+.wizard-tab-link-forward-text {color:#000;font-weight:bold;text-decoration:none}
+.wizard-tab-frame-back {background-color:#666}
+.wizard-tab-content-back {background-color:#CCC}
+a.wizard-tab-link:link, a.wizard-tab-link:visited {color:#000;font-weight:bold;text-decoration:none}
+a.wizard-tab-link:active  {color:#000;font-weight:bold;background-color:#999;text-decoration:none}
+.help-text {color:#000} 
+a.help-link:link, a.help-link:visited {color:#000;text-decoration:underline}
+a.help-link:active {color:#F00;text-decoration:underline} 
+.help-small-text {color:#000;font-size:.9em} 
+a.help-small-link:link, a.help-link:visited {color:#000;text-decoration:underline}
+a.help-small-link:active {color:#F00;text-decoration:underline} 
+.date-time-day-header {color:#000;font-weight:bold}
+.date-time-help-text {color:#000;font-size:.9em} 
+.date-time-label-text  {color:#000} 
+a.date-time-link:link, a.date-time-link:visited {color:#000;text-decoration:underline}
+a.date-time-link:active {color:#F00;text-decoration:underline}
+a.date-time-other-link:link, a.date-time-other-link:visited {color:#999;text-decoration:underline}
+a.date-time-other-link:active {color:#F00;text-decoration:underline}
+a.date-time-mark-link:link, a.date-time-mark-link:visited {color:#000;font-weight:bold;text-decoration:underline}
+a.date-time-mark-link:active {color:#F00;text-decoration:underline}
+.chooser-server-header {color:#000;font-weight:bold}
+.chooser-server-text {color:#000}
+.chooser-label-text {color:#000}
+select.chooser-list {font-family:monospace}
+option.chooser-folder-text {color:#000;font-family:monospace}
+option.chooser-file-text {color:#666;font-family:monospace}
diff --git a/jsf-demo/sandbox/ezcomp02/src/main/webapp/resources/ezcomp/dot.gif b/jsf-demo/sandbox/ezcomp02/src/main/webapp/resources/ezcomp/dot.gif
new file mode 100644
index 0000000..1d11fa9
Binary files /dev/null and b/jsf-demo/sandbox/ezcomp02/src/main/webapp/resources/ezcomp/dot.gif differ
diff --git a/jsf-demo/sandbox/ezcomp02/src/main/webapp/resources/ezcomp/gradlogbot.jpg b/jsf-demo/sandbox/ezcomp02/src/main/webapp/resources/ezcomp/gradlogbot.jpg
new file mode 100644
index 0000000..bd9a3c7
Binary files /dev/null and b/jsf-demo/sandbox/ezcomp02/src/main/webapp/resources/ezcomp/gradlogbot.jpg differ
diff --git a/jsf-demo/sandbox/ezcomp02/src/main/webapp/resources/ezcomp/gradlogsides.jpg b/jsf-demo/sandbox/ezcomp02/src/main/webapp/resources/ezcomp/gradlogsides.jpg
new file mode 100644
index 0000000..097c6d7
Binary files /dev/null and b/jsf-demo/sandbox/ezcomp02/src/main/webapp/resources/ezcomp/gradlogsides.jpg differ
diff --git a/jsf-demo/sandbox/ezcomp02/src/main/webapp/resources/ezcomp/layout.css b/jsf-demo/sandbox/ezcomp02/src/main/webapp/resources/ezcomp/layout.css
new file mode 100644
index 0000000..73526f0
--- /dev/null
+++ b/jsf-demo/sandbox/ezcomp02/src/main/webapp/resources/ezcomp/layout.css
@@ -0,0 +1,1573 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+/* CSS Document */
+
+body {
+	margin:0;
+}
+.form_sun4 {
+	margin:0;
+}
+.hidden_sun4 {
+	display:none;
+}
+
+.clear_sun4 {
+	clear:both;
+}
+.float_sun4 {
+	float:left;
+}
+
+.ConMgn_sun4 {
+	margin:0px 10px;
+}
+/*---*/
+/* SKIP NAVIGATION LINK */
+.SkpWht_sun4, .SkpMedGry1_sun4 {
+	height:0px;
+}
+/*---*/
+/* ADDREMOVE [originalName: ADD-REMOVE-IDIOM]*/
+.AddRmvBtnTbl_sun4 .Btn1_sun4, .AddRmvBtnTbl_sun4 .Btn1Hov_sun4, .AddRmvBtnTbl_sun4 .Btn1Dis_sun4,
+.AddRmvBtnTbl_sun4 .Btn2_sun4, .AddRmvBtnTbl_sun4 .Btn2Hov_sun4, .AddRmvBtnTbl_sun4 .Btn2Dis_sun4 {
+	width:100%;
+	margin:0px;
+}
+.AddRmvVrtDiv_sun4 .Btn1_sun4, .AddRmvVrtDiv_sun4 .Btn1Hov_sun4, .AddRmvVrtDiv_sun4 .Btn1Dis_sun4,
+.AddRmvVrtDiv_sun4 .Btn2_sun4, .AddRmvVrtDiv_sun4 .Btn2Hov_sun4, .AddRmvVrtDiv_sun4 .Btn2Dis_sun4 {
+	width:9em;
+	margin:0px;
+}
+.AddRmvBtnTbl_sun4 {
+	margin-top:1.6em;
+}
+.AddRmvVrtFst_sun4 {
+	margin:5px 0px 10px 5px;
+	float:left;
+}
+.AddRmvVrtWin_sun4 {
+	margin:5px 0px 10px 5px;
+	float:left;
+}
+.AddRmvVrtBwn_sun4 {
+	margin:5px 0px 10px 10px;
+	float:left;
+}
+.AddRmvHrzWin_sun4 {
+	margin-top:3px;
+	min-width:100px;
+}
+.AddRmvHrzBwn_sun4 {
+	margin-top:8px;
+	min-width:100px;
+}
+.AddRmvHrzDiv_sun4 {
+	margin:5px 7px 10px 0px; 
+}
+.AddRmvVrtDiv_sun4 {
+	clear:left;
+}
+.AddRmvHrzLst_sun4 {
+	clear:both;
+}
+.AddRmvVrtBtn_sun4 {
+	width:120px;
+}
+.AddRmvLbl_sun4 {
+	margin-left: 0px;
+}
+.AddRmvLbl2_sun4 {
+	padding-left: 5px;
+	display: block;
+}
+.AddRmvLbl2ReadOnly_sun4 {
+	padding-left: 0px;
+}
+.AddRmvLbl2_sun4, .AddRmvLbl2ReadOnly_sun4 {
+	height: 1.6em; 
+}
+/*---*/
+
+/* BREADCRUMBS */
+.BcmWhtDiv_sun4 {
+	margin:10px 10px 0px 10px;
+}
+.BcmGryDiv_sun4 {
+	padding:13px 10px 10px 10px;
+}
+.BcmSep_sun4 {
+	margin:0px 5px;
+}
+/*---*/
+
+/* CHECKBOXES AND RADIO BUTTONS */
+.RbSpn_sun4 input {
+	vertical-align: -1px;
+}
+.CbSpn_sun4 input {
+	vertical-align: -1px;
+}
+.RbLbl_sun4, .RbLblDis_sun4 {
+	vertical-align: 1px;
+}
+.CbLbl_sun4, .CbLblDis_sun4 {
+	vertical-align: 4px;
+}
+.RbImg_sun4, .RbImgDis_sun4 {
+	vertical-align: -5px
+}
+.CbImg_sun4, .CbImgDis_sun4 {
+	vertical-align: -3px
+}
+.CbGrp_sun4 td, .RbGrp_sun4 td {
+	text-align: left;
+}
+.CbGrp_sun4 label, .RbGrp_sun4 label {
+	vertical-align: 6px;
+}
+/*---*/
+
+/* EDITABLE LIST */
+/* [check overwrite classes on ie.css] */
+.EdtLstTbl_sun4 .EdtLstAddLblTd_sun4 {
+	padding:2px 10px 0px 0px;
+}
+.EdtLstTbl_sun4 .EdtLstRmvLblTd_sun4 {
+	padding:6px 10px 0px 0px;
+	vertical-align:top;
+}
+.EdtLstTbl_sun4 .EdtLstAddTxtTd_sun4 {
+	padding:2px 14px 0px 0px;
+	vertical-align:top;
+	margin-top: 3px;
+}
+.EdtLstTbl_sun4 .EdtLstRmvLstTd_sun4 {
+	padding:2px 10px 1px 0px;
+	vertical-align:top;
+}
+.EdtLstTbl_sun4 .EdtLstRmvLstTd_sun4 .Lst_sun4,
+.EdtLstTbl_sun4 .EdtLstRmvLstTd_sun4 .LstDis_sun4 {
+	margin-bottom: 3px;
+}
+.EdtLstTbl_sun4 .EdtLstAddTxtTd_sun4 .TxtFld_sun4,
+.EdtLstTbl_sun4 .EdtLstAddTxtTd_sun4 .TxtFldDis_sun4 {
+	height: 1.3em;
+}
+.EdtLstTbl_sun4 .EdtLstAddBtnTd_sun4 {
+	padding:2px 10px 0px 0px;
+	vertical-align:top;
+	width:100px;
+}
+.EdtLstTbl_sun4 .EdtLstRmvBtnTd_sun4 {
+	padding:2px 10px 1px 0px;
+	vertical-align:top;
+	width:100px;
+}
+.EdtLstTbl_sun4 .EdtLstBtnWin_sun4 {
+	margin-top:3px;
+}
+.EdtLstTbl_sun4 .EdtLstBtnBwn_sun4 {
+	margin-top:9px;
+}
+.EdtLstTbl_sun4 .TxtFld_sun4, .EdtLstTbl_sun4 .TxtFldDis_sun4,
+.EdtLstTbl_sun4 .Btn1_sun4, .EdtLstTbl_sun4 .Btn1Hov_sun4, .EdtLstTbl_sun4 .Btn1Dis_sun4,
+.EdtLstTbl_sun4 .Btn2_sun4, .EdtLstTbl_sun4 .Btn2Hov_sun4, .EdtLstTbl_sun4 .Btn2Dis_sun4 {
+	width:100%;
+	margin:0px;
+}
+/*---*/
+
+/* BUTTONS */
+.Btn1_sun4, .Btn1Hov_sun4, .Btn1Mni_sun4, .Btn1MniHov_sun4, .Btn2_sun4, .Btn2Hov_sun4, .Btn2Mni_sun4, .Btn2MniHov_sun4, .Btn1Dis_sun4, .Btn2Dis_sun4, .Btn1MniDis_sun4, .Btn2MniDis_sun4 {
+	border-style:solid;
+	border-width:1px;
+}
+.Btn1_sun4, .Btn1Hov_sun4, .Btn1Mni_sun4, .Btn1MniHov_sun4, .Btn2Mni_sun4, .Btn2MniHov_sun4, .Btn2_sun4, .Btn2Hov_sun4 {
+	background-repeat:repeat-x;
+	background-position:center center;
+}
+.Btn1_sun4, .Btn1Hov_sun4, .Btn1Dis_sun4, .Btn1Mni_sun4, .Btn1MniHov_sun4, .Btn1MniDis_sun4, .Btn2_sun4, .Btn2Hov_sun4, .Btn2Dis_sun4, .Btn2Mni_sun4, .Btn2MniHov_sun4, .Btn2MniDis_sun4 {
+	padding:0 5px 1px 5px;
+	margin:0 2px 0 1px;
+}
+
+/* for arrays where buttons need to be of equal width */
+.BtnTbl_sun4 .Btn1_sun4, .BtnTbl_sun4 .Btn1Hov_sun4, .BtnTbl_sun4 .Btn1Dis_sun4, .BtnTbl_sun4 .Btn2_sun4, .BtnTbl_sun4 .Btn2Hov_sun4, .BtnTbl_sun4 .Btn2Dis_sun4 {
+	width:100%;
+	margin:0px
+}
+.BtnAryDiv_sun4 {
+	margin:5px 8px;
+}
+/*revised borders for masthead  */
+.MstDiv_sun4 .Btn1_sun4, .MstDiv_sun4 .Btn1Mni_sun4, .MstDiv_sun4 .Btn1Hov_sun4, .MstDiv_sun4 .Btn1MniHov_sun4, .MstDiv_sun4 .Btn2_sun4, .MstDiv_sun4 .Btn2Mni_sun4, .MstDiv_sun4 .Btn2Hov_sun4, .MstDiv_sun4 .Btn2MniHov_sun4 {
+	border-width:0;
+	vertical-align:middle;
+	margin:0;
+	padding-bottom:1px;
+}
+.mastheadButton_4_sun4 a:link, .mastheadButton_4_sun4 a:visited, .mastheadButton_4_sun4 a:hover {
+	padding:1px 7px 1px 9px;
+}
+.mastheadButton_4_sun4 {
+	display:inline;
+	border-style:solid;
+	border-top-width:1px;
+	border-right-width:0;
+	border-bottom-width:1px;
+	border-left-width:0;
+	margin:0;
+	padding:0 1px 2px 1px;
+	text-align:center;
+}
+/*---*/
+
+/* FILE CHOOSER */
+/* [check overwrite classes on ie.css] */
+.ChoNavBtnGrpDiv_sun4 {
+	float: left;
+	margin-top: 5px;
+	margin-bottom: 5px;
+}
+.ChoImgBtn_sun4 {
+	padding-right: 6px;
+}
+.ChoSortByDiv_sun4 {
+	margin-top: 5px;
+	margin-bottom: 11px;
+	float: right;
+}
+.ChoFltHlpDiv_sun4 {
+	float: left;
+	margin-bottom: 5px;
+	margin-left: 7em;
+}
+.ChoSortByDiv_sun4 .LblLev2Txt_sun4 {
+	padding-right: 5px;
+}
+.ChoMultiHlpDiv_sun4 {
+	float: left;
+	margin-top: 0px;
+	margin-bottom: 0px;
+}
+.ChoLev2Div_sun4 {
+	float: left;
+	width: 7em;
+}
+.ChoLookinDiv_sun4 {
+	float: left;
+	margin-top: 2px;
+	margin-bottom: 2px;
+}
+.ChoFltDiv_sun4 {
+	float: left;
+	margin-top: 2px;
+	margin-bottom: 2px;
+}
+.ChoSelFileDiv_sun4 {
+	float: left;
+	margin-top: 8px;
+	margin-bottom: 7px;
+}
+.ChoSelFileLev2Div_sun4 {
+	float: left;
+	width: 8.7em;
+}
+.ChoSrvDiv_sun4 {
+	float: left;
+	margin-top: 10px;
+	margin-bottom: 2px;
+}
+.ChoFltDiv_sun4 .TxtFld_sun4, .ChoLookinDiv_sun4 .TxtFld_sun4, .ChoSelFileDiv_sun4 .TxtFld_sun4, .ChoSrvDiv_sun4 .ChoSrvTxt_sun4, .ChoFltHlpDiv_sun4 .inlineFieldHelp_sun4 {
+	margin-left: 10px;
+}
+.ChoLookinDiv_sun4 .TxtFld_sun4, .ChoSelFileDiv_sun4 .TxtFld_sun4 {
+	width: 32em;
+}
+.ChoFltHlpDiv_sun4 .inlineFieldHelp_sun4 {
+	padding-top: 4px;
+}
+.ChoLstHdr_sun4 {
+	margin-bottom: 0px;
+	height: 1.6em;
+	line-height: 1.6em;
+}
+.ChoLstHdr_sun4 .ChoNameHdr_sun4 {
+	height: 1.6em;
+	padding-left: 5px;
+	width: 56%;
+	float: left;
+}
+.ChoLstHdr_sun4 .ChoSizeHdr_sun4 {
+	height: 1.6em;
+	padding-left: 5px;
+	width: 16%;
+	float: left;
+}
+.ChoLstHdr_sun4 .ChoDateTimeHdr_sun4 {
+	height: 1.6em;
+	padding-left: 5px;
+	float: left;
+}
+.ChoLstDiv_sun4 .LstMno_sun4 {
+	margin-bottom: 0;
+}
+/*---*/
+
+/* HELP WINDOW */
+.HlpStpTab_sun4 {
+	margin:0px 0px 5px 0px;
+}
+.HlpTtlDiv_sun4 {
+	margin:15px 0px 0px 10px;
+}
+.HlpSchDiv_sun4, .HlpIdxDiv_sun4 {
+	margin:5px 5px 5px 10px;
+}
+.HlpRltDiv_sun4 {
+	margin-top:6px;
+}
+body.HlpBdy_sun4 {
+	border-left-style:solid;
+	border-left-width:1px;
+	padding:10px;
+}
+body.HlpBdy_sun4 h1 {
+	margin-bottom:-3px;
+}
+body.HlpBdy_sun4 h2, body.HlpBdy_sun4 h3, body.HlpBdy_sun4 h4, body.HlpBdy_sun4 h5, H6 {
+	margin-bottom:-5px;
+}
+.HlpBtnDiv_sun4 {
+	padding:7px 10px 1px 0;
+	vertical-align:middle;
+}
+/*---*/
+
+/* PAGEALERT [originalName: FULL ALERTS]*/
+.FulAlrtHdrDiv_sun4 {
+	margin:7px 10px 5px 37px;
+}
+.FulAlrtMsgDiv_sun4 {
+	margin:5px 10px 0px 37px;
+}
+.FulAlrtFrmDiv_sun4 {
+	margin:10px 10px 5px 37px;
+}
+/*---*/
+/* INLINE ALERT */
+.inlineAlert_4_sun4 {
+	margin:0 20px 0 20px;
+	text-align:center;
+}
+.inlineAlert_4_sun4 table {
+	display: inline;	
+}
+.inlineAlert_4_sun4 .topLeftCorner_sun4, .inlineAlert_4_sun4 .topRightCorner_sun4, .inlineAlert_4_sun4 .bottomLeftCorner_sun4, .inlineAlert_4_sun4 .bottomRightCorner_sun4 {
+	width:8px;
+	height:8px;
+}
+.inlineAlert_4_sun4 .topMiddle_sun4 {
+	height:8px;
+}
+.inlineAlert_4_sun4 .leftMiddle_sun4 {
+	width:7px;
+	vertical-align:top;
+	border-left-style:solid;
+	border-left-width:1px;
+} 
+.inlineAlert_4_sun4 .middle_sun4 {
+	padding:0 13px;
+}
+.inlineAlert_4_sun4 .middle_sun4 .header_sun4{
+	vertical-align:middle;
+	text-align:center;
+}
+.inlineAlert_4_sun4 .middle_sun4 .header_sun4 img{
+	vertical-align:middle;
+	padding:0 4px 0 0;
+}
+.inlineAlert_4_sun4 .middle_sun4  .header_sun4 .label_sun4{
+	vertical-align:middle;
+}
+.inlineAlert_4_sun4 .middle_sun4 .details_sun4 {
+	margin:7px 0 0 0;
+	vertical-align:middle;
+	text-align:center;
+}
+.inlineAlert_4_sun4 .middle_sun4 .details_sun4 img{
+	padding:0 1px 0 10px;
+}
+.inlineAlert_4_sun4 .rightMiddle_sun4 {
+	width:7px;
+	vertical-align:top;
+	border-right-style:solid;
+	border-right-width:1px;
+}
+.inlineAlert_4_sun4 .bottomMiddle_sun4 {
+	height:7px;
+	border-bottom-style:solid;
+	border-bottom-width:1px;
+}
+/*---*/
+/* LEFT PANE HELP */
+.LftHlpHlp_sun4 {
+	position:absolute;
+	top:0px;
+	right:70%;
+	bottom:34px;
+	left:0px;
+	overflow:auto;
+}
+.LftHlpBdy_sun4 {
+	position:absolute;
+	top:0px;
+	bottom:34px;
+	left:30%;
+	right:0px;
+	overflow:auto;
+	border-left:1px solid;
+}
+.LftHlpDiv_sun4 {
+	margin:15px 10px 5px;
+}
+.LftHlpBtm_sun4 {
+	position:absolute;
+	bottom:0px;
+	border-top:1px solid;
+	padding:0 13px 0 30%;
+	height:33px;
+}
+.LftHlpBtnBtm_sun4 {
+	float:right;
+	margin: 7px 0 8px;
+	padding: 0 0 0 13px;
+	text-align:right;
+}
+/*---*/
+/* LISTS */
+.Lst_sun4, .LstDis_sun4, .LstMno_sun4, .LstMnoDis_sun4 {
+	border-width:1px;
+	border-style:solid;
+}
+.LstAln_sun4 {
+	vertical-align:top;
+	padding-right:5px;
+} 
+/*---*/
+/* HELPINLINE [originalName: INLINE HELP]*/
+.inlineFieldHelp_sun4 {
+	padding:2px 0 0 0;
+}
+/*---*/
+
+/* PROPERTY SHEET */
+.LblRqdDiv_sun4 {
+	line-height:1.0em;
+}
+.ConFldSetDiv_sun4 {
+	margin:7px 10px 0px;
+}
+.ConFldSetLgdDiv_sun4 {
+	margin-bottom:10px;
+	line-height:1.1em;
+}
+.ConSubSecDiv_sun4 {
+	padding:0px 10px 5px 0px;
+}
+.ConTblCl1Div_sun4 {
+	margin:8px 6px 0px 15px;
+}
+.ConTblCl2Div_sun4 {
+	margin:8px 6px 0px 0px;
+	padding:1px 0 0 0;
+}
+.ConEmbTblCl1Div_sun4 {
+	margin:6px 10px 0px 30px;
+}
+.ConEmbTblCl2Div_sun4 {
+	margin:3px 10px 0px 0px;
+}
+.ConJmpScnDiv_sun4 {
+	margin:17px 10px 0px 0;
+}
+.ConJmpLnkDiv_sun4 {
+	margin:0 25px 0 10px;
+}
+.ConRqdDiv_sun4 {
+	text-align:right;
+	margin:5px 10px 5px 0px;
+}
+.ConJmpTopDiv_sun4 {
+	line-height:.7em;
+	margin:15px 10px 10px 10px;
+}
+.ConEmbTblCl1Div_sun4 input[type=checkbox], .ConEmbTblCl1Div_sun4 input[type=radio] {
+	margin-left:-5px;
+	vertical-align:middle;
+}
+div.ConTblCl2Div_sun4 input, div.ConTblCl2Div_sun4 select {
+	vertical-align:middle;
+} 
+div.ConTblCl2Div_sun4 .CbSpn_sun4 input[type=checkbox] {
+	 margin-top:-8px;
+}
+.ConFldSetLgdDiv_sun4 {
+	margin-bottom:10px;
+}
+.ConSubSecTtlTxt_sun4 {
+	margin:15px 0px 0px 15px;
+}
+/*---*/
+/* CONTENTPAGETITLE [originalName: PAGE TITLE]*/
+.TtlTxtDiv_sun4 {
+	margin:12px 0px 0px 10px;
+} 
+.TtlTxtDiv_sun4 img {
+	vertical-align:text-bottom;
+	margin-right:5px;
+} 
+.TtlTxt_sun4 {
+	margin:0px;
+}
+
+.TtlActDiv_sun4, .TtlVewDiv_sun4  {
+	margin:8px 10px 0px 10px;
+}
+.TtlHlpDiv_sun4 {
+	margin:5px 10px 0px 10px;
+}
+.TtlBtnDiv_sun4 {
+	margin:0px 8px 0px 10px;
+}
+.TtlBtnBtmDiv_sun4 {
+	padding:10px 8px 0px 10px;
+}
+/*---*/
+
+/* SCHEDULER [originalName: DATE AND TIME]*/
+.DatCalDiv_sun4 {
+	border-right-width:1px;
+	border-right-style:solid;
+	border-bottom-width:1px;
+	border-bottom-style:solid;
+	border-left-width:1px;
+	border-left-style:solid;
+	text-align:center;
+	padding:2px 0 0 0;
+	clear:both;
+}
+.DatCalDiv_sun4 .DatSelDiv_sun4 {
+	float:left;
+	clear:right;
+}
+.DatCalDiv_sun4 .DatCalLeft_sun4 {
+	float:left;
+	clear:none;
+}
+
+.DatCalDiv_sun4 .DatCalLeft_sun4 img {
+	vertical-align:middle;
+}
+.DatCalDiv_sun4 .DatCalLeft_sun4 select {
+	margin:2px 1px 2px 2px;
+	vertical-align:top;
+}
+
+.DatCalDiv_sun4 .DatCalRight_sun4 {
+	float:right;
+	clear:right;
+}
+.DatCalDiv_sun4 .DatCalRight_sun4 select {
+	margin:2px 1px 2px 0;
+	vertical-align:top;
+}
+
+.DatCalDiv_sun4 .DatCalDiv_sun4 {
+	border:0;
+	padding:0;
+	margin:0 2px 2px 3px;
+}
+.DatCalDiv_sun4 .DatCalDiv_sun4 table, .DatCalTbl_sun4 {
+	border-collapse:collapse;
+}
+a.DatLnk_sun4:link, a.DatLnk_sun4:visited, a.DatLnk_sun4:hover, a.DatBldLnk_sun4:link, a.DatBldLnk_sun4:visited, a.DatCurLnk_sun4:link, a.DatCurLnk_sun4:visited,
+a.DatCurLnk_sun4:hover, a.DatOthLnk_sun4:link, a.DatOthLnk_sun4:visited, a.DatOthLnk_sun4:hover, a.DatOthBldLnk_sun4:link, a.DatOthBldLnk_sun4:visited,
+.DatCalTbl_sun4 td, .DatCalTbl_sun4 th {
+	border-style:solid;
+	border-width:1px;
+}
+a.DatLnk_sun4:link, a.DatLnk_sun4:visited {
+	display:block;
+	padding:5px 0px 3px;
+}
+a.DatBldLnk_sun4:link, a.DatBldLnk_sun4:visited {
+	display:block;
+	padding:5px 0px 3px;
+}
+a.DatCurLnk_sun4:link, a.DatCurLnk_sun4:visited {
+	display:block;
+	padding:5px 0px 3px;
+}
+a.DatOthLnk_sun4:link, a.DatOthLnk_sun4:visited {
+	display:block;
+	padding:5px 0px 3px;
+}
+a.DatOthBldLnk_sun4:link, a.DatOthBldLnk_sun4:visited {
+	display:block;
+	padding:5px 0px 3px;
+}
+.DateSelContainer_sun4 {
+	border-top-style:solid;
+	border-left-style:solid;
+	border-right-style:solid;
+	border-top-width:1px;
+	border-left-width:1px;
+	border-right-width:1px;
+}
+.DatSelTopMiddle_sun4 {
+	border-top-width:1px;
+	border-top-style:solid;
+	height:4px;
+}
+.DatSelContent_sun4 {
+	border-right-width:1px;
+	border-right-style:solid;
+	border-left-width:1px;
+	border-left-style:solid;
+	padding:0 0 6px 8px;
+	line-height:.9em;
+}
+.DatSelDiv_sun4 {
+	text-align:left;
+	padding:0 1px
+}
+.DatSelDiv_sun4 span {
+	/* no attributes specified */
+}
+.DatSelDiv_sun4 input {
+	padding-top:1px;
+}
+.DatDayHdrTxt_sun4 {
+	display:block;
+	padding:2px 0px;
+}
+.DatCalTbl_sun4 td, .DatCalTbl_sun4 th {
+	width:29px;
+}
+.DatFieldTable_sun4 td {
+	padding:1px 0;
+}
+/*---*/
+/*CALENDAR */
+.CalPopDiv_sun4 {
+	padding:0 4px 0 0;
+	display:block;
+	position:relative;
+	float:left;
+	top:0;
+	left:0;
+}
+.CalPopDiv_sun4 .DatCalDiv_sun4 {
+	position:relative;
+	top: -3px;	
+	padding:0 0 0 0;
+	margin-bottom:0;
+}
+.CalPopShdDiv_sun4 {
+	display:none;
+	position:absolute;
+	z-index:1000;
+	margin:-9px 0 0 -22px;
+	width:20em;
+}
+.CalPopShd2Div_sun4 {
+}
+.CalPopDiv_sun4 .DatSelContent_sun4 {
+	border-right-width:1px;
+	border-right-style:solid;
+	border-left-width:1px;
+	border-left-style:solid;
+	position:relative;
+	float:left;
+	top: -3px;
+	left:0;
+	padding:0 0 3px 0;
+}
+.CalPopDiv_sun4 .DatCalTbl_sun4 {
+	border-left-style:solid;
+	border-left-width:1px;
+	border-right-style:solid;
+	border-right-width:1px;
+}
+.CalPopDiv_sun4 .DatCalTbl_sun4 th {
+	border-bottom-style:solid;
+	border-bottom-width:1px;
+	border-left:none;
+	border-right:none;
+	border-top-style:solid;
+	border-top-width:1px;
+}
+.CalPopDiv_sun4 .DatCalTbl_sun4 td.CalPopFtr_sun4, .CalPopDiv_sun4 .CalPopFtr_sun4Div_sun4 {
+	border:0;
+}
+.CalPopDiv_sun4  a.DatCurLnk_sun4:link, .CalPopDiv_sun4 a.DatCurLnk_sun4:visited,.CalPopDiv_sun4  a.DatLnk_sun4:link,.CalPopDiv_sun4 a.DatLnk_sun4:visited,.CalPopDiv_sun4 a.DatBldLnk_sun4:link,.CalPopDiv_sun4 a.DatBldLnk_sun4:visited,
+.CalPopDiv_sun4 a.DatOthLnk_sun4:link,.CalPopDiv_sun4 a.DatOthLnk_sun4:visited,.CalPopDiv_sun4 a.DatOthBldLnk_sun4:link,.CalPopDiv_sun4 a.DatOthBldLnk_sun4:visited {
+	display:block;
+	padding:2px 0px 2px;
+}
+.CalPopDiv_sun4 .DatSelDiv_sun4 {
+	margin:0 0 5px 0;
+	text-align:left;
+	padding: 2px 1px 0 0;
+}
+.CalPopDiv_sun4 .DatDayHdrTxt_sun4 {
+	display:block;
+	padding:2px 0px;
+}
+.CalPopDiv_sun4 .DatCalTbl_sun4 {
+	border-collapse:collapse;
+}
+.CalPopDiv_sun4 .DatCalTbl_sun4 td, .CalPopDiv_sun4 .DatCalTbl_sun4 th {
+	width:25px;
+}
+.CalPopDiv_sun4 .DatCalTbl_sun4 th {
+	padding-top:2px;
+}
+.CalPopDiv_sun4 .DatSelContent_sun4 .closeBtn_sun4 {
+	display:block;
+	float:right;
+	margin: 0 3px 0 0;
+}
+.CalPopDiv_sun4 .DatSelContent_sun4 .DatSelDate_sun4 {
+	float:left;
+	line-height:.9em;
+	padding:3px 0 3px 8px;
+}
+.CalPopDiv_sun4 .DatCalTbl_sun4 td.CalPopFtr_sun4 {
+	width:auto;
+}
+.CalPopDiv_sun4 .CalPopFtrDiv_sun4 {
+	float:left;
+	width:100%;
+}
+.CalPopDiv_sun4 .CurDayTxt_sun4 {
+	float:left;
+	clear:right;
+	padding:4px 0px 4px 4px;
+}
+.CalPopFldLbl_sun4 {
+	display:block;
+	margin-right:8px;
+	padding-top:3px;
+}
+.CalPopFldImg_sun4 img {
+	margin-left:5px;
+}
+/* Override pluto portal server rule */
+.CalRootTbl_sun4 {
+	width: auto;
+ }
+/*---*/
+
+
+/* TEXT, TEXTAREAS AND PASSWORD FIELDS */
+.TxtFld_sun4, .TxtFldDis_sun4, .TxtAra_sun4, .TxtAraDis_sun4 {
+	border-style:solid;
+	border-width:1px;
+	padding:1px 0 0 2px;
+}
+.TxtAra_sun4, .TxtAraDis_sun4 {
+	padding-left:2px;
+}
+/*---*/
+
+/* MENUS */
+.MnuJmpOpt_sun4:hover {text-decoration:underline;}
+.MnuJmp_sun4, .MnuStd_sun4, .MnuJmp_sun4Dis, .MnuStdDis_sun4 {
+
+	border-width:1px;
+
+	border-style:solid;
+}
+.MnuJmpOptSel_sun4 {font-weight:normal;}
+.MnuJmpOptGrp_sun4, .MnuStdOptGrp_sun4 {font-weight:normal;font-style:normal;}
+/*---*/
+
+/* MASTHEAD */
+a.MstLnk_sun4:link, a.MstLnk_sun4:visited, a.MstLnkRt_sun4:link, a.MstLnkRt_sun4:visited {
+	border-width:1px;
+	border-style:solid;
+}
+a.MstLnkLft_sun4:link, a.MstLnkLft_sun4:visited, a.MstLnkCen_sun4:link, a.MstLnkCen_sun4:visited {
+	border-top-width:1px;
+	border-top-style:solid;
+	border-bottom-width:1px;
+	border-bottom-style:solid;
+	border-left-width:1px;
+	border-left-style:solid;
+}
+td.MstTdTtl_sun4 {
+	padding:0px 10px 0px 10px;
+	vertical-align:top;
+	white-space:nowrap;
+}
+td.MstTdAlm_sun4 {
+	vertical-align:top;
+}
+td.MstTdLogo_sun4 {
+	vertical-align:top;
+	padding:6px 13px 8px 20px;
+}
+div.MstDivTtl_sun4 {
+	padding-top:4px;
+}
+.MstFooter_sun4 {
+	padding:3px 10px 3px 0;
+	border-style:solid;
+	border-width:1px;
+	min-width:590px;
+}
+.MstSec_sun4 {
+	height:54px;
+	border-style:solid;
+	border-width:1px;
+	min-width:600px;
+}
+.MstSec_sun4 div {
+	padding:15px 0 16px 0;
+	vertical-align:middle;
+}
+.MstSec_sun4 td {
+	padding:0 10px;
+}
+div.MstDivUsr_sun4 {
+	padding:4px 0 0 0;
+}
+.MstLbl_sun4, .MstTxt_sun4, 
+.MstUsrLnk_sun4, .MstAlmLnk_sun4, 
+span.MstAlmDwnTxt_sun4, span.MstAlmCrtTxt_sun4,
+span.MstAlmMajTxt_sun4, span.MstAlmMinTxt_sun4 {
+	vertical-align:top;
+	line-height:1.0em;
+}
+a.MstLnk_sun4:link, a.MstLnk_sun4:visited {
+	background-repeat:repeat-x;
+	background-position:center center;
+	padding:2px 10px 1px;
+	vertical-align:middle
+}
+a.MstLnk_sun4:hover,a.MstLnkLft_sun4:hover, a.MstLnkRt_sun4:hover, a.MstLnkCen_sun4:hover {
+	background-repeat:repeat-x;
+	background-position:center center;
+}
+.MstSpcImg_sun4 {
+	display:none;
+}
+.MstBdy_sun4 {
+	margin:0px;
+}
+.MstDiv_sun4 {
+	border-style:solid;
+	border-width:1px;
+	min-width:600px;
+}
+.MstTblTop_sun4 td {
+	padding:6px 10px 4px;
+}
+.MstTblTop_sun4 .TxtFld_sun4, .MstTblTop_sun4 .MnuStd_sun4 {
+	margin:0 6px 0 0;
+	vertical-align:middle;
+}
+.MstTblTop_sun4 img {
+	vertical-align:middle;
+}
+.MstTblEnd_sun4 {
+	background-repeat:repeat-x;
+	background-position:left top;
+}
+.MstTblEnd_sun4  td {
+	padding:1px 0 2px 0;
+}
+td.MstTblEnd_sun4 {
+	padding-left:10px;
+}
+.MstTblBot_sun4 .hrule_sun4 {
+	margin:0 0 1px 0;
+	border-top-style:solid;
+	border-top-width:1px;
+	height:1px;
+}	
+.MstStatDiv_sun4 a, .MstTmeDiv_sun4 span, .MstAlmDiv_sun4 a {
+	vertical-align:top;
+	line-height:1.0em;
+}
+a.MstLnkLft_sun4:link, a.MstLnkLft_sun4:visited, a.MstLnkRt_sun4:link, a.MstLnkRt_sun4:visited, a.MstLnkCen_sun4:link, a.MstLnkCen_sun4:visited {
+	background-repeat:repeat-x;
+	background-position:center center;
+	padding:2px 10px 1px;
+	vertical-align:middle;
+	white-space:nowrap;
+}
+
+/*---*/
+
+/* TABSET [originalName: LEVEL TABS]*/
+.Tab1Div_sun4 td {
+	border-style:solid;
+	border-width:1px;
+}
+.Tab1Div_sun4 {
+	padding:6px 10px 0px;
+} 
+a.Tab1Lnk_sun4:link, a.Tab1Lnk_sun4:visited  {
+	display:block;
+	padding:8px 15px 7px;
+	text-align:center;
+}
+.Tab1Div_sun4 table {
+	border-collapse:collapse;
+}
+.Tab1Div_sun4 td.Tab1TblSpcTd_sun4 {
+	border:none;
+}
+.Tab1Div_sun4 td.Tab1TblSelTd_sun4 {
+	background-repeat:repeat-x;
+	background-position:left top;
+	border-bottom:none;
+}
+.Tab1Div_sun4 .Tab1SelTxtLeft_sun4 {
+	position: absolute;
+	width: 2px;
+	height: 2.8em;
+	background-position: top left;
+	background-repeat: no-repeat;
+}
+.Tab1Div_sun4 .Tab1SelTxtNew_sun4 {
+	display:block;
+	padding:8px 13px 7px;
+	text-align:center;
+	background-position: top right;
+	background-repeat: no-repeat;
+}
+.Tab1Div_sun4 td a.TabPad_sun4 {
+	padding:8px 20px 7px;
+}
+.Tab1Div_sun4 td.Tab1TblSelTd_sun4 div.TabPad_sun4 {
+	padding:8px 20px 7px;
+}
+/* LEVEL 2 TABS */
+.Tab2Div_sun4 td {
+	border-style:solid;
+	border-width:1px;
+}
+table.Tab2TblNew_sun4 td.Tab2TblSelTd_sun4 {
+	border-top-width:1px;
+	border-top-style:solid;
+	border-right-width:1px;
+	border-right-style:solid;
+	border-left-width:1px;
+	border-left-style:solid;
+}
+table.Tab2Tbl3New_sun4 td.Tab2TblSelTd_sun4 {
+	border-top-width:1px;
+	border-top-style:solid;
+	border-right-width:1px;
+	border-right-style:solid;
+	border-left-width:1px;
+	border-left-style:solid;
+}
+.Tab2Div_sun4 {
+	padding:6px 0px 0px 10px;
+}
+a.Tab2Lnk_sun4:link, a.Tab2Lnk_sun4:visited {
+	display:block;
+	padding:5px 15px 4px;
+	text-align:center;
+}
+.Tab2Div_sun4 table {
+	border-collapse:collapse;
+}
+.Tab2Div_sun4 .Tab2SelTxtLeft_sun4 {
+	position: absolute;
+	width: 2px;
+	height: 2.1em;
+	background-position: top left;
+	background-repeat: no-repeat;
+}
+.Tab2Div_sun4 .Tab2SelTxt_sun4 {
+	display:block;
+	padding:5px 15px 4px;
+	text-align:center;
+	background-position: top right;
+	background-repeat: no-repeat;
+}
+.Tab2Div_sun4 td.Tab2TblSelTd_sun4 {
+	border-bottom:none;
+}
+.Tab2Div_sun4 td a.TabPad_sun4, .Tab2Div_sun4 td.Tab2TblSelTd_sun4 div.TabPad_sun4 {
+	padding:5px 20px 4px;
+}
+/* LEVEL 3 TABS*/
+.Tab3Div_sun4 {
+	padding:6px 0px 0px 10px;
+}
+.Tab3Div_sun4 td {
+	border-style:solid;
+	border-width:1px;
+}
+a.Tab3Lnk_sun4:link,a.Tab3Lnk_sun4:visited {
+	display:block;
+	padding:4px 15px 3px;
+	text-align:center;
+}
+table.Tab3TblNew_sun4 td {
+	border-bottom-style:solid;
+	border-bottom-width:1px;
+}
+table.Tab3TblNew_sun4 div.Tab3SelTxt_sun4 {
+	padding:4px 15px 3px;
+	text-align:center;
+}
+table.Tab3TblNew_sun4 td.Tab3TblSelTd_sun4 {
+	border-top-width:1px;
+	border-top-style:solid;
+	border-right-width:1px;
+	border-right-style:solid;
+	border-left-width:1px;
+	border-left-style:solid;
+	border-bottom:none;
+}
+.Tab3Div_sun4 td a.TabPad_sun4, .Tab3Div_sun4 td.Tab3TblSelTd_sun4 div.TabPad_sun4 {
+	padding:5px 20px 4px;
+}
+/* Hide Styles */
+.Tab1Div_sun4 td.hidden_sun4, .Tab2Div_sun4 td.hidden_sun4, .Tab3Div_sun4 td.hidden_sun4 {
+	display:none;
+}
+/* MINI-TABS */
+.MniTabDiv_sun4 {
+	padding:7px 0px 0px 10px;
+}
+.MniTabDiv_sun4 td.hidden_sun4 {
+	display:none;
+}
+table.MniTabTbl_sun4 {
+	border-collapse:collapse;
+}
+table.MniTabTbl_sun4 td {
+	border-style:solid;
+	border-width:1px;
+}
+a.MniTabLnk_sun4:link,a.MniTabLnk_sun4:visited {
+	display:block;
+	padding:5px 15px 4px;
+}
+table.MniTabTbl_sun4 td.MniTabTblSelTd_sun4 {
+	border-top-width:1px;
+	border-top-style:solid;
+	border-right-width:1px;
+	border-right-style:solid;
+	border-left-width:1px;
+	border-left-style:solid;
+	border-bottom:none;
+}
+.MniTabSelTxt_sun4 {
+	display:block;
+	padding:5px 15px 4px;
+}
+/* MINI-TABS - LIGHTWEIGHT */
+.TabGrp_sun4 .TabGrpBox_sun4 {
+	border-right-width:1px;
+	border-right-style:solid;
+	border-bottom-width:1px;
+	border-bottom-style:solid;
+	border-left-width:1px;
+	border-left-style:solid;
+	border-top:none;
+	padding:10px;
+}
+.TabGrp_sun4 a.MniTabLnk_sun4:link, .TabGrp_sun4 a.MniTabLnk_sun4:visited, .TabGrp_sun4 .MniTabSelTxt_sun4 {
+	padding:4px 10px 3px;
+}
+.TabGrp_sun4 .MniTabDiv_sun4 td.hidden_sun4 {
+	display:none;
+}
+
+/*---*/
+/* TABLE [originalName: ACTION TABLE] */
+table.Tbl_sun4 {
+	border-style:solid;
+	border-width:1px;
+	padding:6px;
+	width:100%;
+	empty-cells:show;
+}
+table.Tbl_sun4 td, table.Tbl_sun4 th {
+	border-right:none;
+	border-top:none;
+	padding:3px 5px 1px 5px;
+	border-left-style:solid;
+	border-left-width:1px;
+	border-bottom-style:solid;
+	border-bottom-width:1px; 
+	margin:0;
+}
+/* Table Caption/Title */
+table.Tbl_sun4 caption.TblTtlTxt_sun4 {
+	text-align:left;
+	background-position:3px 3px;
+	-moz-border-radius-topleft:5px;
+	-moz-border-radius-topright:5px;
+	padding:3px 10px 2px 10px;
+}
+.TblTtlTxtSpn_sun4 {
+	padding:0;
+	float:left;
+}
+.TblTtlMsgSpn_sun4 {
+	padding:0 0 0 3px;
+	float:right;
+}
+/* Action Bar */
+table.Tbl_sun4 td.TblActTdLst_sun4 {border-top-style:solid; border-top-width:1px;} 
+table.Tbl_sun4 td.TblActTd_sun4 {border-left:none;border-bottom:none;padding:0px 0px 6px 0px;vertical-align:middle;} 
+table.Tbl_sun4 td.TblActTdLst_sun4 {border-left:none;border-bottom:none;padding:6px 0px 2px 0px;vertical-align:middle;} 
+.TblPgnTxtBld_sun4 {margin:0px 5px 0px 10px;}
+.TblPgnTxt_sun4 {margin:0px 3px 0px 3px;}
+.TblPgnLftBtn_sun4 {margin:0px;}
+.TblPgnRtBtn_sun4 {margin-right:10px;}
+.TblPgnGoBtn_sun4 {margin-right:8px;}
+/* Selection Column - Headers */
+table.Tbl_sun4 th.TblColHdrSel_sun4 {border-top-width:1px; border-top-style:solid;border-left-width:1px; border-left-style:solid; border-bottom-width:1px; border-bottom-style:solid;vertical-align:bottom;padding:0;}
+table.Tbl_sun4 th.TblColHdrSel_sun4 a.TblHdrLnk_sun4:link {display:block;padding:3px 0px;}
+table.Tbl_sun4 th.TblColHdrSel_sun4 a.TblHdrLnk_sun4:visited {display:block;padding:3px 0px;}
+table.Tbl_sun4 th.TblColHdrSrtSel_sun4 {border-top-width:1px; border-top-style:solid;border-left-width:1px; border-left-style:solid; border-bottom-width:1px; border-bottom-style:solid; text-align:center;border-right:none;padding:0px;vertical-align:bottom;}
+table.Tbl_sun4 th.TblColHdrSrtSel_sun4 a.TblHdrImgLnk_sun4:link, table.Tbl_sun4 th.TblColHdrSrtSel_sun4 a.TblHdrImgLnk_sun4:visited {border-left-width:1px; border-left-style:solid;}
+table.Tbl_sun4 th.TblColHdrSrtSel_sun4 a.TblHdrImgLnk_sun4:link, th.TblColHdrSrtSel_sun4 a.TblHdrImgLnk_sun4:visited {display:block;text-align:left;padding-bottom:1px;width:21px;}
+table.Tbl_sun4 th.TblColHdrSrtSel_sun4 a.TblHdrImgLnk_sun4:hover {width:21px;}
+table.Tbl_sun4 th.TblColHdrSrtSel_sun4 a.TblHdrLnk_sun4:link, th.TblColHdrSrtSel_sun4 a.TblHdrLnk_sun4:visited {display:block;padding:3px 0px 2px;}
+/* Selection Column - Cells */
+table.Tbl_sun4 td.TblTdSel_sun4, table.Tbl_sun4 td.TblTdSrtSel_sun4 {text-align:center;vertical-align:middle;padding:0px 3px;}
+/* Regular Column Headers */
+table.Tbl_sun4 th.TblColHdr_sun4 {border-top-width:1px; border-top-style:solid;border-left-width:1px; border-left-style:solid; border-bottom-width:1px; border-bottom-style:solid; vertical-align:bottom;padding:0;}
+table.Tbl_sun4 a.TblHdrImgLnk_sun4:link, table.Tbl_sun4 a.TblHdrImgLnk_sun4:visited {border-left-width:1px; border-left-style:solid;}
+.TblHdrTxt_sun4 {display:block;padding:4px 5px 3px;min-height:11px;}
+table.TblHdrTbl_sun4 {width:100%;border:0;height:1.7em;}
+table.TblHdrTbl_sun4 td, table.TblHdrTbl_sun4 th {border:0;padding:0;vertical-align:bottom;width:100%;}
+table.TblHdrTbl_sun4 img {margin:0;padding-right:5px;padding-left:5px;}
+table.Tbl_sun4 a.TblHdrLnk_sun4:link, table.Tbl_sun4 a.TblHdrLnk_sun4:visited {display:block;padding:3px 0 3px 5px;}
+table.Tbl_sun4 a.TblHdrImgLnk_sun4:link, table.Tbl_sun4 a.TblHdrImgLnk_sun4:visited {display:block;white-space:nowrap;padding:4px 2px 2px 0px;width:21px;}
+table.Tbl_sun4 a.TblHdrImgLnk_sun4:hover {white-space:nowrap;width:21px;}
+table.Tbl_sun4 a.TblHdrImgLnk_sun4 img {padding-right:2px;}
+/* Current Sort Column */
+table.Tbl_sun4 th.TblColHdrSrt_sun4 {border-top-width:1px; border-top-style:solid;border-left-width:1px; border-left-style:solid; border-bottom-width:1px; border-bottom-style:solid;}
+table.Tbl_sun4 th.TblColHdrSrt_sun4 a.TblHdrImgLnk_sun4:link, table.Tbl_sun4 th.TblColHdrSrt_sun4 a.TblHdrImgLnk_sun4:visited {border-left-width:1px; border-left-style:solid;}
+table.Tbl_sun4 span.TblColHdrSrtDis_sun4 {border-left-width:1px; border-left-style:solid;}
+table.Tbl_sun4 span.TblColHdrSelDis_sun4 {border-left-width:1px; border-left-style:solid;}
+table.Tbl_sun4 th.TblColHdrSrt_sun4 {vertical-align:bottom;padding:0px;}
+table.Tbl_sun4 th.TblColHdrSrt_sun4 table.TblHdrTbl_sun4 {width:100%;border:none;}
+table.Tbl_sun4 th.TblColHdrSrt_sun4 a.TblHdrLnk_sun4:link, table.Tbl_sun4 th.TblColHdrSrt_sun4 a.TblHdrLnk_sun4:visited {display:block;padding:4px 5px 3px 5px;}
+table.Tbl_sun4 th.TblColHdrSrt_sun4 a.TblHdrImgLnk_sun4:link, table.Tbl_sun4 th.TblColHdrSrt_sun4 a.TblHdrImgLnk_sun4:visited {display:block;border-left-style:solid;border-left-width:1px;padding-bottom:1px;width:21px;}
+table.Tbl_sun4 .TblHdrSrtNum_sun4 {margin-left:-1px;width:21px;}
+table.Tbl_sun4 span.TblColHdrSrtDis_sun4 {display:block;text-align:left;padding:0px 2px 0px 0px;}
+table.Tbl_sun4 span.TblColHdrSrtDis_sun4 img, span.TblColHdrSelDis_sun4 img {padding-right:2px;}
+table.Tbl_sun4 span.TblColHdrSelDis_sun4 {display:block;white-space:nowrap;padding:4px 2px 2px 0px;width:21px;}
+/* Multi-Column Headers */ 
+table.Tbl_sun4 th.TblMultColHdr_sun4 {border-top:none;border-left-style:solid;border-left-width:1px;border-bottom-style:solid; border-bottom-width:1px;padding:0px;margin:0px;vertical-align:bottom}
+table.Tbl_sun4 th.TblMultHdr_sun4 {
+	border-bottom:none;
+	border-top-width:1px;
+	border-top-style:solid;
+	border-left-width:1px;
+	border-left-style:solid;
+	text-align:center;
+	padding:0 5px;
+}
+table.Tbl_sun4 th.TblMultColHdr_sun4 a.TblHdrLnk_sun4:link, table.Tbl_sun4 th.TblMultColHdr_sun4 a.TblHdrLnk_sun4:visited {border-top:none;}
+table.Tbl_sun4 th.TblMultColHdr_sun4 a.TblHdrLnk_sun4:link img, table.Tbl_sun4 th.TblMultColHdr_sun4 a.TblHdrLnk_sun4:visited img, table.Tbl_sun4 th.TblMultColHdr_sun4 .TblHdrTxt_sun4 img, table.Tbl_sun4 th.TblMultColHdrSrt_sun4 a.TblHdrLnk_sun4:link img, table.Tbl_sun4 th.TblMultColHdrSrt_sun4 a.TblHdrLnk_sun4:visited img {margin:1px 0px}
+table.Tbl_sun4 th.TblMultColHdr_sun4 a.TblHdrLnk_sun4:hover {border-top:none;}
+table.Tbl_sun4 th.TblMultColHdrSrt_sun4 {border-top:none;border-left-width:1px; border-left-style:solid; border-bottom-width:1px; border-bottom-style:solid;padding:0px;margin:0px;vertical-align:bottom;}
+table.Tbl_sun4 th.TblMultColHdrSrt_sun4 a.TblHdrImgLnk_sun4:link, table.Tbl_sun4 th.TblMultColHdrSrt_sun4 a.TblHdrImgLnk_sun4:visited {border-left-width:1px; border-left-style:solid;}
+/* Sorted Cells */
+table.Tbl_sun4 .TblColFtrSpc_sun4 {border-left:none;border-bottom-style:solid; border-bottom-width:1px;border-top-width:2px; border-top-style:solid;} 
+table.Tbl_sun4 .TblColFtrSpc_sun4 {padding:4px 5px 1px 5px;} 
+/* Spacer Colums */
+table.Tbl_sun4 th.TblTdSpc_sun4 {border-top-width:1px; border-top-style:solid;border-left:none; border-bottom-width:1px; border-bottom-style:solid;vertical-align:bottom;padding:0;}
+table.Tbl_sun4 td.TblTdSpc_sun4 { border-left:none }
+/*Table Sub-Grouping */
+table.Tbl_sun4 .TblGrpRow_sun4 {border-left-style:solid;border-left-width:1px;border-bottom-style:solid; border-bottom-width:1px;border-top-width:2px;border-top-style:solid;}
+table.Tbl_sun4 .TblGrpRow_sun4 {vertical-align:bottom;padding:3px 5px 4px 3px;}
+table.Tbl_sun4 .TblGrpLft_sun4 input {margin:2px 1px 1px 2px}
+table.Tbl_sun4 .TblGrpLft_sun4 {float:left;}
+table.Tbl_sun4 .TblGrpCbImg_sun4 img {margin-left:-4px;margin-bottom:-3px;}
+table.Tbl_sun4 .TblGrpRt_sun4 {float:right;}
+table.Tbl_sun4 .TblGrpRow_sun4 {vertical-align:bottom;min-height:12px;padding:4px 5px 3px;}
+/* Table Footers */
+/* Table Column-level Footer */
+table.Tbl_sun4 .TblColFtr_sun4 {border-bottom-style:solid;border-bottom-width:1px;border-top-width:2px;border-top-style:solid;} 
+table.Tbl_sun4 .TblColFtrSrt_sun4 {border-bottom-style:solid;border-bottom-width:1px;border-top-width:2px;border-top-style:solid;}
+/*Table Group Column-Level Footer */
+table.Tbl_sun4 .TblGrpColFtr_sun4 {border-bottom-style:solid;border-bottom-width:1px;}
+table.Tbl_sun4 .TblGrpColFtrSrt_sun4 {border-bottom-style:solid;border-bottom-width:1px;}
+table.Tbl_sun4 .TblColFtr_sun4 {padding:4px 5px 1px 5px;} 
+/* Embedded Table Panels */
+.TblPnlLytDiv_sun4 {border-top-width:1px; border-top-style:solid;}
+.TblPnlShd1Div_sun4 {}
+.TblPnlDiv_sun4 {}
+.TblMgn_sun4 {margin:0px 10px;}
+/*Other Table Content Styles*/
+table.Tbl_sun4 .TblTdLyt_sun4 img, table.Tbl_sun4 .TblTdSrt_sun4 img, table.Tbl_sun4 .TblTdAlm_sun4 img,  table.Tbl_sun4 .TblTdSrtAlm_sun4 img {vertical-align:middle;margin-bottom:2px}
+table.Tbl_sun4 .TblTdSel_sun4 img, table.Tbl_sun4 .TblTdSrtSel_sun4 img {vertical-align:middle;margin:3px 0px 0px 8px;}
+.TblTdLyt_sun4 {} 
+/* Mouseover and Row Selection Styles */
+table.Tbl_sun4 tr.TblHovRow_sun4 td {}
+table.Tbl_sun4 tr.TblHovRow_sun4 th {}
+/* Table Overall Footer */ 
+table.Tbl_sun4 td.TblFtrRow_sun4 {padding:6px 3px 3px 0px;border-left:none;border-bottom:none;vertical-align:middle;text-align:center;}
+table.Tbl_sun4 .TblFtrLft_sun4 {float:left;}
+table.Tbl_sun4 .TblFtrMsgSpn_sun4 {float:right;}
+/* Table Group Overall Footer */
+table.Tbl_sun4 .TblGrpFtrRow_sun4 {padding:4px 5px 3px;}
+/* Embedded Table Panels */
+table.Tbl_sun4 td.TblPnlTd_sun4 {border:none;padding:0px;vertical-align:middle;}
+.TblPnlLytDiv_sun4 {display:none;padding:4px 0px;margin-left:-3px;}
+.TblPnlShd3Div_sun4 {}
+.TblPnlShd2Div_sun4 {}
+.TblPnlShd1Div_sun4 {
+	border-width:1px;
+	border-style:solid;
+	margin: 0 0 10px 0;
+}
+.TblPnlDiv_sun4 {
+	border-top-width:1px;
+	border-top-style:solid;
+	padding:1px 15px 1px 15px;
+}
+table.Tbl_sun4 div.TblPnlDiv_sun4 td {border:none;padding-left:0px;}
+.TblPnlTtl_sun4 {
+	margin:8px 0 0 0;
+	padding:0 0px 5px;
+}
+.TblPnlBtnDiv_sun4 {
+	text-align:left;
+	margin:10px 0;
+	padding-top:8px;
+	margin-right:3px;
+	border-top-width:1px;
+       	border-top-style:solid;
+}
+.TblPnlHlpTxt_sun4 {
+	margin:10px 0;
+	padding:7px 12px;
+        border-style:solid;
+   	border-width:1px;
+	white-space:normal;
+   	-moz-border-radius-topleft:5px;
+   	-moz-border-radius-topright:5px;
+   	-moz-border-radius-bottomleft:5px;
+   	-moz-border-radius-bottomright:5px; 
+}
+.TblPnlSrtTbl_sun4 td {padding:3px;}
+/* For when appearing in titledbox*/
+.TtldBoxInrDiv_sun4 .TblMgn_sun4 {margin:0px;}
+/*---*/
+
+/* LIGHTWEIGHT TABLE DESIGN */
+/* Table Caption/Title 
+table.Tbl_sun4 .TblLt_sun4 .TblTtlTxt_sun4 {
+	padding:5px 5px 5px 0px;
+}
+.TblLt_sun4 .TblTtlTxt_sun4 .TblTtlMsgSpn_sun4 {
+	margin-top:1px;
+}*/
+/*---*/
+/* LIGHTWEIGHT TABLE DESIGN */
+table.TblLt_sun4 {width:100%;padding:0px;border-bottom:none;empty-cells:show;border-collapse:collapse;}
+/* Table Caption/Title */
+table.TblLt_sun4 caption.TblTtlTxt_sun4 {text-align:left;padding:5px 5px 5px 0px;border:none;}
+table.TblLt_sun4 caption.TblTtlTxt_sun4 span.TblTtlTxtSpn_sun4 {float:left;}
+table.TblLt_sun4 caption.TblTtlTxt_sun4 span.TblTtlMsgSpn_sun4 {float:right;margin-top:1px}
+/* Action Bar */
+table.TblLt_sun4 td.TblActTd_sun4 {padding:8px 5px;vertical-align:middle;border-style:solid;border-width:1px;}
+table.TblLt_sun4 td.TblActTdLst_sun4 {padding:5px 5px;vertical-align:middle;border-style:solid;border-width:1px;}
+/* Selection Column - Headers */
+table.TblLt_sun4 th.TblColHdrSel_sun4 {border-top-width:1px; border-top-style:solid;border-left-width:1px; border-left-style:solid;border-bottom-width:1px; border-bottom-style:solid;}
+table.TblLt_sun4 th.TblColHdrSrtSel_sun4 {border-top-width:1px; border-top-style:solid;border-left-width:1px; border-left-style:solid;border-bottom-width:1px; border-bottom-style:solid;}
+/* Regular Column Headers */
+table.TblLt_sun4 th.TblColHdr_sun4 {border-top-width:1px; border-top-style:solid;border-left-width:1px; border-left-style:solid;border-bottom-width:1px; border-bottom-style:solid;}
+table.TblLt_sun4 table.TblHdrTbl_sun4 td {border:none;padding:0px;margin:0px;vertical-align:bottom;width:100%;}
+table.TblLt_sun4 a.TblHdrLnk_sun4:link, table.TblLt_sun4 a.TblHdrLnk_sun4:visited {padding:5px 5px 3px;min-height:12px;}
+table.TblLt_sun4 a.TblHdrImgLnk_sun4:link, table.TblLt_sun4 a.TblHdrImgLnk_sun4:visited {border-left-width:1px; border-left-style:solid;}
+table.TblLt_sun4 span.TblColHdrSelDis_sun4 {border-left-width:1px; border-left-style:solid;}
+/* Current Sort Column */
+table.TblLt_sun4 th.TblColHdrSrt_sun4 {border-top-width:1px; border-top-style:solid;border-left-width:1px; border-left-style:solid;border-bottom-width:1px; border-bottom-style:solid;}
+table.TblLt_sun4 th.TblColHdrSrt_sun4 a.TblHdrImgLnk_sun4:link, table.Tbl_sun4 th.TblColHdrSrt_sun4 a.TblHdrImgLnk_sun4:visited {border-left-width:1px; border-left-style:solid;}
+/* Multi-Column Headers */
+table.TblLt_sun4 th.TblMultColHdr_sun4 {border-top:none;border-left-width:1px; border-left-style:solid;border-bottom-width:1px; border-bottom-style:solid;padding:0px;margin:0px;vertical-align:bottom;}
+table.TblLt_sun4 th.TblMultHdr_sun4 {border-bottom:none;border-top-width:1px; border-top-style:solid;border-left-width:1px; border-left-style:solid;text-align:center;padding:4px 5px;}
+/*Table Sub-Grouping */
+table.TblLt_sun4 .TblGrpRow_sun4 {border-left-width:1px; border-left-style:solid; border-top-width:3px; border-top-style:double;padding:4px 5px 3px;}
+/* Table Footers */ 
+table.TblLt_sun4 td.TblFtrRow_sun4 {padding:6px 5px 3px;border:none;vertical-align:middle;text-align:center;border-left:none;border-right:none;}
+table.TblLt_sun4 .TblColFtr_sun4 {border-bottom-width:1px; border-bottom-style:solid;border-top-width:3px; border-top-style:double;} 
+table.TblLt_sun4 .TblColFtrSrt_sun4 {border-bottom-width:1px; border-bottom-style:solid;border-top-width:3px; border-top-style:double;}
+table.TblLt_sun4 .TblColFtrSpc_sun4 {border-left:none;border-bottom-width:1px; border-bottom-style:solid; border-top-width:3px; border-top-style:double;}
+/* Embedded Table Panels */
+table.TblLt_sun4 td.TblPnlTd_sun4 {padding-left:10px;border-top:none;border-bottom:none}
+/*---*/
+
+/* TREE */
+.TreBdy_sun4 {	
+	margin:0px;
+}
+
+.Tree_sun4 {
+	/*	width:500px;*/
+}
+
+.TreeImg_sun4 {	
+	padding-top:2px;
+	padding-bottom:1px;
+}
+
+.TreeImgHeight_sun4 {
+	display:inline;	
+	line-height:22px;
+}
+
+.TreeContent_sun4 {
+	display:inline;	
+	vertical-align:middle;	
+	padding-left:5px;
+	white-space:nowrap;
+}
+
+.TreeLinkSpace_sun4 {
+	margin-left:3px;
+}
+
+.TreeRootRow_sun4, .TreeRootSelRow_sun4 {
+	height:28px;
+}
+
+.TreeRootRowHeader_sun4 {
+	height:9px;}
+
+.TreeRow_sun4 {
+	white-space:nowrap;
+	clear:both;
+}
+
+.TreeRow_sun4 .float_sun4 {
+	padding-left:5px;
+}
+
+.TreeRootRow_sun4 .float_sun4, .TreeRootSelRow_sun4 .float_sun4 {	padding-left:7px;
+
+}
+
+.TreeSelRow_sun4 {
+	white-space:nowrap;
+}
+
+.TreeSelRow_sun4 .float_sun4 {
+	padding-left:5px;
+}
+
+/*---*/
+/* VERSION DIALOG */
+.VrsMstBdy_sun4 {
+	float:left;
+	clear:right;
+	width:100%;
+	clear:both;
+	height:109px;
+}
+.VrsBdy_sun4 {
+	position:absolute;
+	top:0px;
+	bottom:0px;
+}
+.VrsMgn_sun4 {
+	clear:both;
+	width:100%;
+	overflow:auto;
+}
+.VrsTxt_sun4 {
+	margin:0px 25px 10px;
+}
+.VrsBtnAryDiv_sun4 {
+	text-align:right;
+	padding:10px 15px;
+	width:auto;
+	height:auto;
+}
+.VrsPrdDiv_sun4 {
+	padding:30px 0px 0px 195px;
+}
+.VrsLgoDiv_sun4 {
+	padding:5px 0 0 0;
+}
+.VrsPrdTd_sun4 {
+	float:left;
+	clear:none;
+	vertical-align:top;
+	padding:10px 0px 0px 5px;
+}
+.VrsLgoTd_sun4 {
+	float:right;
+	clear:right;
+	text-align:right;
+	vertical-align:top;
+	padding:12px 10px 0px 10px;
+}
+.VrsHdrTxt_sun4 {
+	margin:20px 25px 7px;
+}
+/*---*/
+/* WIZARD */
+.WizBar_sun4 {
+	height:30px;
+	border-bottom-style:solid;
+	border-bottom-width:1px;
+}
+.WizStpTab_sun4 {
+	position:relative;
+}
+.WizTtlBar_sun4 {
+	position:relative;
+	height:41px;
+	border-bottom-style:solid;
+	border-bottom-width:1px;
+	line-height:41px;
+	padding:0 0 0 15px;
+}
+.WizStp_sun4 {
+	position:absolute;
+	top:72px;
+	right:70%;
+	bottom:34px;
+	left:0px;
+	overflow:auto;
+	padding:18px 10px 0 4px;
+}
+.WizHlpDiv_sun4 {
+	position:absolute;
+	top:73px;
+	right:70%;
+	bottom:34px;
+	left:0px;
+	overflow:auto;
+	padding:15px 10px 0 10px;
+}
+.WizBdy_sun4 {
+	position:absolute;
+	top:72px;
+	bottom:34px;
+	left:30%;
+	right:0px;
+	overflow:auto;
+	border-left-style:solid;
+	border-left-width:1px;
+	padding:18px 10px 0 15px;
+}
+.WizBtm_sun4 {
+	position:absolute;
+	bottom:0px;
+	border-top-style:solid;
+	border-top-width:1px;
+	padding:0 13px 0 30%;
+	height:33px;
+}
+.WizBtnBtm_sun4 {
+	float:right;
+	margin: 7px 0 8px;
+	padding: 0 0 0 13px;
+	text-align:right;
+}
+.WizBtnBtm_sun4 .left_sun4 {
+	float:left;
+	clear:none;
+}
+.WizBtnBtm_sun4 .right_sun4 {
+	float:right;
+	clear:none;
+}
+.WizStpNumDiv_sun4 {
+	margin:0 5px 20px 15px;
+}
+.WizStpArwDiv_sun4 {
+	margin:0 5px 20px 0;
+}
+.WizStpArwDiv_sun4 span {
+	vertical-align:middle;
+}
+.WizStpArwDiv_sun4 img {
+	vertical-align:middle;
+	padding:0 1px 0 0;
+}
+.WizStpTxtDiv_sun4 {
+	margin:0 0 20px 4px;
+}
+.WizStpCurTxt_sun4 {
+	vertical-align:top;
+}
+.WizSubTtlDiv_sun4 {
+	margin:0 0 20px 0;
+}
+.WizStpTitle_sun4 {
+	padding:4px 0 21px 10px;
+}
+.WizSubStpTtlDiv_sun4 {
+	padding:2px 0 0 10px;
+}
+.WizCntHlpTxt_sun4 {
+	margin:0 0 20px 0;
+}
+.WizTtl_sun4 .TtlTxtDiv_sun4 {
+	margin:10px 0 3px 10px;
+} 
+.WizStpsPnTtlDiv_sun4 {
+	padding:7px 0 7px 10px;
+}
+/*---*/
diff --git a/jsf-demo/sandbox/ezcomp02/src/main/webapp/resources/ezcomp/login-backimage.jpg b/jsf-demo/sandbox/ezcomp02/src/main/webapp/resources/ezcomp/login-backimage.jpg
new file mode 100644
index 0000000..1d45ce9
Binary files /dev/null and b/jsf-demo/sandbox/ezcomp02/src/main/webapp/resources/ezcomp/login-backimage.jpg differ
diff --git a/jsf-demo/sandbox/ezcomp02/src/main/webapp/resources/ezcomp/loginPanel.groovy b/jsf-demo/sandbox/ezcomp02/src/main/webapp/resources/ezcomp/loginPanel.groovy
new file mode 100644
index 0000000..f36b378
--- /dev/null
+++ b/jsf-demo/sandbox/ezcomp02/src/main/webapp/resources/ezcomp/loginPanel.groovy
@@ -0,0 +1,75 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+import javax.faces.component.UINamingContainer;
+import javax.faces.component.ValueHolder;
+import javax.faces.context.FacesContext;
+import javax.faces.application.ResourceDependencies;
+import javax.faces.application.ResourceDependency;
+
+ at ResourceDependencies( [
+  @ResourceDependency(library="this", name="css_master.css"),
+  @ResourceDependency(library="this", name="layout.css"),
+  @ResourceDependency(library="this", name="typography.css"),
+  @ResourceDependency(library="this", name="colorAndMedia.css"),
+  @ResourceDependency(library="this", name="table2.css"),
+  @ResourceDependency(library="this", name="commontaskssection.css"),
+  @ResourceDependency(library="this", name="progressBar.css"),
+  @ResourceDependency(library="this", name="css_ns6up.css")
+                       ])
+public class loginPanel extends UINamingContainer {
+    
+    public void processUpdates(FacesContext context) {
+        
+        ValueHolder username = this.findComponent("usernameInput");
+        ValueHolder password = this.findComponent("pinInput");
+        
+        context.getExternalContext().getRequestMap().put("groovyCalled", 
+                                                         username.getValue());
+
+        super.processUpdates(context);
+
+    } 
+    
+    public String getFamily() {
+        return "javax.faces.NamingContainer";
+    }
+    
+}
diff --git a/jsf-demo/sandbox/ezcomp02/src/main/webapp/resources/ezcomp/loginPanel.properties b/jsf-demo/sandbox/ezcomp02/src/main/webapp/resources/ezcomp/loginPanel.properties
new file mode 100644
index 0000000..dd0ae6d
--- /dev/null
+++ b/jsf-demo/sandbox/ezcomp02/src/main/webapp/resources/ezcomp/loginPanel.properties
@@ -0,0 +1,41 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
+localizedText=This is the localized text for the composite component.
diff --git a/jsf-demo/sandbox/ezcomp02/src/main/webapp/resources/ezcomp/loginPanel.xhtml b/jsf-demo/sandbox/ezcomp02/src/main/webapp/resources/ezcomp/loginPanel.xhtml
new file mode 100644
index 0000000..924219e
--- /dev/null
+++ b/jsf-demo/sandbox/ezcomp02/src/main/webapp/resources/ezcomp/loginPanel.xhtml
@@ -0,0 +1,116 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:composite="http://java.sun.com/jsf/composite">
+<head>
+
+<title>Not present in rendered output</title>
+
+</head>
+
+<body>
+
+<composite:interface name="loginPanel" 
+                     displayName="Very Simple Login Panel" 
+                     preferred="true"
+                     expert="false"
+                     shortDescription="An illustration of the composite component feature">
+
+  <composite:attribute name="usernameLabel" default="Username" />
+  <composite:attribute name="pinLabel" default="PIN" />
+  <composite:attribute name="loginLabel" default="Login" />
+  <composite:attribute name="model" required="true"/>
+  <composite:attribute name="action" method-signature="java.lang.Object action()" targets="loginEvent"/>
+
+
+  <composite:editableValueHolder name="usernameInput" />
+  <composite:editableValueHolder name="pinInput" />
+  <composite:editableValueHolder name="allInputs" targets="usernameInput pinInput" />
+  <composite:actionSource name="loginEvent" />
+
+</composite:interface>
+
+<composite:implementation>
+
+  <ui:decorate template="loginPanelTemplate.xhtml">
+
+    <ui:define name="usernameInput">
+
+      <h:inputText id="usernameInput" />
+
+    </ui:define>
+
+    <ui:define name="pinInput">
+
+      <h:inputText id="pinInput" />
+
+    </ui:define>
+
+    <ui:define name="loginEvent">
+
+      <h:commandButton id="loginEvent" value="#{cc.attrs.loginLabel}" 
+                 onkeypress="javascript: submitenter(event, 'loginButton', Login');" 
+                 onclick="javascript: submitAndDisable(this, 'Login');" 
+                 onfocus="javascript: if (this.disabled==0) this.className='Btn1Hov'" 
+                 onblur="javascript: if (this.disabled==0) this.className='Btn1'" 
+                 onmouseout="javascript: if (this.disabled==0) this.className='Btn1'" 
+                 onmouseover="javascript: if (this.disabled==0) this.className='Btn1Hov'" 
+                 tabindex="3" 
+                 title="Log In to Sun Java System Application Server" 
+                 class="Btn1">
+      </h:commandButton>
+
+
+    </ui:define>
+
+  </ui:decorate>
+
+</composite:implementation>
+
+</body>
+
+</html>
diff --git a/jsf-demo/sandbox/ezcomp02/src/main/webapp/resources/ezcomp/loginPanelTemplate.xhtml b/jsf-demo/sandbox/ezcomp02/src/main/webapp/resources/ezcomp/loginPanelTemplate.xhtml
new file mode 100644
index 0000000..1c9caa0
--- /dev/null
+++ b/jsf-demo/sandbox/ezcomp02/src/main/webapp/resources/ezcomp/loginPanelTemplate.xhtml
@@ -0,0 +1,153 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:composite="http://java.sun.com/jsf/composite">
+
+<head>
+
+<title>
+This does not appear
+</title>
+
+</head> 
+
+<body>
+
+<ui:composition>
+
+<p>#{cc.resourceBundleMap.localizedText}</p>
+
+    <table border="0" cellpadding="0" cellspacing="0" align="center" title="">
+	<tr><td width="50%">
+<img id="sun_image5" src="#{resource['this:dot.gif']}" alt="" height="1" width="1" border="0" />	    </td><td><img id="sun_image7" src="#{resource['this:dot.gif']}" alt="" height="1" width="728" border="0" />	    </td><td width="50%"><img id="sun_image9" src="#{resource['this:dot.gif']}" alt="" height="1" width="1" border="0" />
+	    </td>
+	</tr>
+	<tr class="LogTopBnd"><td><img src="#{resource['this:gradlogtop.jpg']}" width="1" height="30" border="0" />
+        </td>
+	    <td valign="middle" nowrap="nowrap">
+
+<img id="sun_image11" src="#{resource['this:dot.gif']}" alt="" height="30" width="1" border="0" />
+	    </td>
+	    <td></td>
+	</tr>
+            <tr><td class="LogMidBnd"></td>
+	    <td class="LogCntTd" style="background-image: url(#{resource['this:login-backimage.jpg']});background-repeat:no-repeat;background-position:left top;" align="center" valign="middle">
+		<table border="0" background="#{resource['this:dot.gif']}" cellpadding="0" cellspacing="0" width="100%" title="">
+		    <tr><td width="260">
+<img id="sun_image13" src="#{resource['this:dot.gif']}" alt="" height="245" width="260" border="0" />
+			</td>
+
+			<td width="415" bgcolor="#FFFFFF" valign="top" align="left"> 
+<img id="sun_image15" src="#{resource['this:LoginProductName.png']}" alt="Application Server Administration Console" height="42" width="318" border="0" />
+			    <table border="0" cellspacing="0" cellpadding="0">
+				<tr><td> </td>
+				    <td></td></tr>
+				<tr><td nowrap="nowrap"><div class="logLbl">
+					 <span class="LblLev2Txt">
+<label id="sun_label17" for="Login.username" class="LblLev2Txt_sun4">
+<h:outputText value="#{cc.attrs.usernameLabel}" />
+</label>
+					</span></div></td>
+
+				    <td><div class="logInp">
+
+<ui:insert name="usernameInput" />
+
+
+</div></td></tr>
+				<tr><td nowrap="nowrap"><div class="logLblLst">
+					 <span class="LblLev2Txt">
+<label id="sun_label19" for="Login.pin" class="LblLev2Txt_sun4">
+<h:outputText value="#{cc.attrs.pinLabel}" />
+</label>
+					</span></div></td>
+				    <td><div class="logInpLst"> 
+
+<ui:insert name="pinInput" />
+
+
+</div></td></tr>
+				<tr><td><img id="sun_image22" src="#{resource['this:dot.gif']}" alt="" height="15" width="1" border="0" />
+				    </td>
+
+				    <td>  
+			    <table border="0">
+				<tr><td><div class="logBtn">
+
+<ui:insert name="loginEvent" />
+
+					</div>
+				    </td></tr></table>
+				</td></tr>
+			    <tr><td> </td></tr>
+
+			    <tr><td>
+<img id="sun_image25" src="#{resource['this:dot.gif']}" alt="" height="33" width="1" border="0" />
+				</td>
+				<td> </td></tr>
+			</table>
+		    </td>
+
+		    <td> </td></tr>
+	    </table>
+	</td>
+
+	<td class="LogMidBnd" 
+	    style="background-image: url(#{resource['this:gradlogsides.jpg']});background-repeat:repeat-x;background-position:left top;">
+	     </td></tr>
+    <tr class="LogBotBnd" style="background-image: url(#{resource['this:gradlogbot.jpg']});background-repeat:repeat-x;background-position:left top;">
+	<td> </td>
+	<td> </td>
+	<td> </td></tr>
+
+</table>
+
+</ui:composition>
+
+</body>
+
+</html>
diff --git a/jsf-demo/sandbox/ezcomp02/src/main/webapp/resources/ezcomp/primary-enabled.gif b/jsf-demo/sandbox/ezcomp02/src/main/webapp/resources/ezcomp/primary-enabled.gif
new file mode 100644
index 0000000..1bfdd0a
Binary files /dev/null and b/jsf-demo/sandbox/ezcomp02/src/main/webapp/resources/ezcomp/primary-enabled.gif differ
diff --git a/jsf-demo/sandbox/ezcomp02/src/main/webapp/resources/ezcomp/primary-roll.gif b/jsf-demo/sandbox/ezcomp02/src/main/webapp/resources/ezcomp/primary-roll.gif
new file mode 100644
index 0000000..ded404c
Binary files /dev/null and b/jsf-demo/sandbox/ezcomp02/src/main/webapp/resources/ezcomp/primary-roll.gif differ
diff --git a/jsf-demo/sandbox/ezcomp02/src/main/webapp/resources/ezcomp/progressBar.css b/jsf-demo/sandbox/ezcomp02/src/main/webapp/resources/ezcomp/progressBar.css
new file mode 100644
index 0000000..94f0763
--- /dev/null
+++ b/jsf-demo/sandbox/ezcomp02/src/main/webapp/resources/ezcomp/progressBar.css
@@ -0,0 +1,146 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+/* LAYOUT */
+.progressBar_4_sun4 {
+	margin:12px 11px;
+}
+.progressBar_4_sun4 .operationLabel_sun4 {
+	margin:0 0 9px 1px;
+	line-height:1.0;
+}
+.progressBar_4_sun4 .barContainer_sun4 {
+	display:block;
+	float:left;
+	position:relative;
+	margin-bottom:6px;
+	padding:.09em;
+	border-style:solid;
+	border-width:1px;
+	width:16.9em;
+}
+.progressBar_4_sun4 .barDeterminate_sun4, .progressBar_4_sun4 .barIndeterminate_sun4, .progressBar_4_sun4 .barIndeterminatePaused_sun4 {
+	width:48%;
+	height:.8em;
+}
+.progressBar_4_sun4 .failure_sun4{
+	
+	float:left;
+	margin-bottom:7px;
+	padding:1px;
+	width:17.1em;
+}
+.progressBar_4_sun4 .failureLabel_sun4 {
+	color:#C00;
+	padding:0 0 0 1.3em;
+	line-height:1.0;
+}
+.progressBar_4_sun4 .barIndeterminate_sun4, .progressBar_4_sun4 .barIndeterminatePaused_sun4{
+	width:100%
+}
+.progressBar_4_sun4 .barLabel_sun4 {
+	position:absolute;
+	line-height:.9;
+	top:.09em;
+	left:0;
+	width:16.9em;
+	height:.9em;
+	text-align:right;
+}
+.progressBar_4_sun4 .statusLabel_sun4 {
+	padding:0 0 0 1px ;
+	line-height:1.0;
+	width:16.9em;
+	margin-bottom:20px;
+}
+.progressBar_4_sun4 .buttonsBottom_sun4 {
+	margin: 11px 0 20px -1px;
+}
+.progressBar_4_sun4 .buttonsRight_sun4 {
+	float:left;
+	clear:right;
+	margin: -2px 0 0 0;
+	padding-left:.9em;
+}
+.progressBar_4_sun4 .log_sun4 {
+	margin:20px 0;
+}
+.progressBar_4_sun4 .busy_sun4 {
+	margin:10px;
+}
+/*---*/
+
+/* TYPOGRAPHY */
+.progressBar_4_sun4 {
+	font-size:1.0em;
+}
+.progressBar_4_sun4 .operationLabel_sun4, .progressBar_4_sun4 .failureLabel_sun4 {
+	font-weight:bold;
+}
+/*---*/
+/* COLOR AND MEDIA */
+.progressBar_4_sun4 {
+	border-color:#F1F1F1;
+}
+.progressBar_4_sun4 .barContainer_sun4 {
+	background-color:#F2F3F4;
+	border-color:#666664;
+}
+.progressBar_4_sun4 .barIndeterminatePaused_sun4 {
+  background: #A0CCE7 url(#{resource['ezcomp:still-indeterminate.gif']}) repeat-x top;
+}
+.progressBar_4_sun4 .barIndeterminate_sun4 {
+  background: #A0CCE7 url(#{resource['ezcomp:indeterminate.gif']}) repeat-x top;
+}
+.progressBar_4_sun4 .barDeterminate_sun4 {
+  background: #A0CCE7 url(#{resource['ezcomp:reg-slice.gif']}) repeat-x top;
+}
+.progressBar_4_sun4 .failure_sun4 {
+  background-image:url(#{resource['ezcomp:failed_small.gif']});
+	background-position:top left;
+	background-repeat:no-repeat;
+}
+.progressBar_4_sun4 .failureLabel_sun4 {
+	color:#CC0000;
+}
+.progressBar_4_sun4 .checkboxContainer_sun4 label {
+	cursor:pointer;
+}
+/*---*/
diff --git a/jsf-demo/sandbox/ezcomp02/src/main/webapp/resources/ezcomp/table2.css b/jsf-demo/sandbox/ezcomp02/src/main/webapp/resources/ezcomp/table2.css
new file mode 100644
index 0000000..c102341
--- /dev/null
+++ b/jsf-demo/sandbox/ezcomp02/src/main/webapp/resources/ezcomp/table2.css
@@ -0,0 +1,138 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+/* Top level div tag */
+.Tbl2_sun4 {
+  /* Styles from old table */
+  -moz-border-radius-topleft:5px; 
+  -moz-border-radius-topright:5px;
+  border-style:solid;
+  border-width:1px;
+  border-color:#A0A3A5; 
+  border-top-color:#35556A; 
+  background-color:#E5E9ED; 
+  color:#000;
+}
+
+/* Title */ 
+.Tbl2Ttl_sun4 {
+  border-bottom-style:solid; 
+  border-bottom-width:1px;
+
+  /* Styles from old table */
+  color:#fff; 
+  background:#36586F url(#{resource['ezcomp:table_titlebar_gradient.gif']}) bottom left repeat-x;
+  text-align:left; 
+  background-position:5px 5px; 
+  padding:3px 10px 2px 10px;
+  -moz-border-radius-topleft:5px; 
+  -moz-border-radius-topright:5px;
+}
+
+/* Margin */
+.Tbl2Mgn_sun4 {
+  padding:6px;
+}
+
+/* Actions */
+.Tbl2Act_sun4 {
+  /* Styles from old table */
+  vertical-align:middle;
+}
+
+/* Outer div to capture absolutely positioned header/footer */
+.Tbl2Grps_sun4 {
+  position: relative;
+  padding-bottom: 2.9em; /* Must be dynamic */
+  padding-top: 3.1em; /* Must be dynamic */
+  width: 100%; /* Required for IE */
+}
+
+/* Inner div enabling table to scroll */
+.Tbl2Grp_sun4 {
+  overflow: auto;
+}
+
+/* Group header */
+.Tbl2GrpHdr_sun4 {
+  position: absolute;
+  top: 7px;
+  left: 0px;
+}
+.Tbl2GrpHdr_sun4 th {
+  min-height:1.5em;
+}
+.Tbl2GrpHdrTxt_sun4 {
+  float: left;
+}
+.Tbl2GrpHdrRowsTxt_sun4 {
+  float: right;
+}
+
+/* Column header */
+.Tbl2ColHdr_sun4 {
+  position: absolute;
+  top: 1.95em; /* Must be dynamic */
+  left: 0px;
+}
+.Tbl2ColHdr_sun4 th {
+  text-align: left;
+  min-height:1.5em;
+}
+
+/* Column footer */
+.Tbl2ColFtr_sun4 {
+  position: absolute;
+  bottom: 1.35em; /* Must be dynamic */
+  left: 0px;
+}
+.Tbl2ColFtr_sun4 td {
+  min-height:1.5em;
+}
+
+/* Group footer */
+.Tbl2GrpFtr_sun4 {
+  position: absolute;
+  bottom: 0px;
+  left: 0px;
+}
+.Tbl2GrpFtr_sun4 td {
+  min-height:1.5em;
+}
diff --git a/jsf-demo/sandbox/ezcomp02/src/main/webapp/resources/ezcomp/typography.css b/jsf-demo/sandbox/ezcomp02/src/main/webapp/resources/ezcomp/typography.css
new file mode 100644
index 0000000..8b6ce9c
--- /dev/null
+++ b/jsf-demo/sandbox/ezcomp02/src/main/webapp/resources/ezcomp/typography.css
@@ -0,0 +1,389 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+/* CSS Document */
+
+body {
+	font-family:Arial, Helvetica, sans-serif;
+	font-size:70%;
+}
+TABLE, TH, TD, P, DIV, SPAN, INPUT, BUTTON, SELECT, TEXTAREA, FORM, B, STRONG, LABEL, I, U, H1, H2, H3, H4, H5, H6, DL, DD, DT, UL, LI, OL, OPTION, OPTGROUP, A {
+	font-size:100%;
+}
+H1, H2, H3, H4, H5, H6 {
+	font-weight:bold;
+}
+H1 {
+	font-size:1.7em;
+}
+H2 {
+	font-size:1.4em;
+}
+H3 {
+	font-size:1.3em;
+}
+H4 {
+	font-size:1.2em;
+}
+H5, H6 {
+	font-size:1.0em;
+}
+input, select {
+	font-size:1.0em;
+}
+strong {
+	font-size:1.0em;
+	font-weight:bold;
+}
+
+/* ADDREMOVE [originalName: ADD-REMOVE-IDIOM]*/
+.AddRmvLbl_sun4, .AddRmvLbl2_sun4 {
+	font-size:1.0em;
+	font-weight:bold;
+}
+/*---*/
+
+/* BREADCRUMBS */
+a.BcmLnk_sun4 {
+	font-size:1.0em;
+}
+/*---*/
+
+/* BUTTONS */
+.Btn1_sun4, .Btn1Hov_sun4, .Btn1Dis_sun4, .Btn2_sun4, .Btn2Hov_sun4, .Btn2Dis_sun4, .Btn1Mni_sun4, .Btn1MniHov_sun4, .Btn1MniDis_sun4, .Btn2Mni_sun4, .Btn2MniHov_sun4, .Btn2MniDis_sun4 {
+	font-size:1.0em;
+}
+/*---*/
+
+/* FILE CHOOSER */
+.ChoLstHdr_sun4 {
+	font-size:1.0em;
+	font-weight: bold;
+}
+.ChoSrvTxt_sun4 {
+	font-size:1.0em;
+}
+/*---*/
+
+/* PAGEALERT [originalName: FULL ALERTS]*/
+.FulAlrtHdrTxt_sun4, .FulAlrtMsgTxt_sun4 {
+	font-size:1.0em;
+}
+.FulAlrtHdrTxt_sun4 {
+	font-weight:bold;
+} 
+/*---*/
+
+/* INLINE ALERT */
+.inlineAlert_4_sun4 .middle_sun4 .details_sun4 {
+	font-size:1.0em;
+}
+.inlineAlert_4_sun4 .middle_sun4 .header_sun4 .label_sun4 {
+	font-size:1.2em;
+	font-weight:bold;
+}
+/*---*/
+
+/* HELP WINDOW */
+body.HlpBdy_sun4 h1, body.HlpBdy_sun4 h2, body.HlpBdy_sun4 h3, body.HlpBdy_sun4 h4, body.HlpBdy_sun4 h5, body.HlpBdy_sun4 h6 {
+	font-family:sans-serif;
+	font-weight:bold;
+}
+body.HlpBdy_sun4 h1 {
+	font-size:1.5em;
+}
+body.HlpBdy_sun4 h2 {
+	font-size:1.3em;
+}
+body.HlpBdy_sun4 h3 {
+	font-size:1.2em;
+}
+body.HlpBdy_sun4 h4 {
+	font-size:1.1em;
+}
+body.HlpBdy_sun4 h5, H6 {
+	font-size:1.0em;
+}
+/*---*/
+
+/* HELPINLINE [originalName: INLINE HELP] */
+.inlineFieldHelp_sun4, a.HlpFldLnk_sun4 {
+	font-size:1.0em;
+}
+/*---*/
+
+/* EDITABLE LIST */
+table.EdtLstTbl_sun4 td.EdtLstRmvLblTd_sun4 span.LblLev2Txt_sun4,
+table.EdtLstTbl_sun4 td.EdtLstAddLblTd_sun4 span.LblLev2Txt_sun4 {
+	font-weight: bold;
+	font-size:1.0em;
+}
+/*---*/
+/* LABEL [originalName: GENERIC FIELD LABELS]*/
+
+.LblLev2Txt_sun4, .LblLev2smTxt_sun4, .LblRqdDiv_sun4, .LblLev3Txt_sun4, .LblLev3TxtDis_sun4 {
+	font-size:1.0em;
+}
+.LblLev1Txt_sun4 {
+	font-size:1.3em;
+}
+.LblLev1Txt_sun4, .LblLev2Txt_sun4, .LblLev2smTxt_sun4,
+.LblLev1TxtDis_sun4, .LblLev2TxtDis_sun4, .LblLev2smTxtDis_sun4, .LblLev3Txt_sun4, .LblLev3TxtDis_sun4 {
+	font-weight:bold;
+}
+/*---*/
+
+/* LEFT PANE HELP */
+.LftHlpDiv_sun4 {
+	font-size:1.0em;
+}
+/*---*/
+
+/* LISTS */
+.LstOptSel_sun4, 
+.LstOptSep_sun4, 
+.LstOptGrp_sun4, 
+.LstDis_sun4 .LstOptGrp_sun4 {
+	font-size:1.0em;
+}
+
+/* Use fixed font size in listboxes with mono-spaced fonts */
+.LstMno_sun4 .LstOptGrp_sun4, 
+.LstMnoDis_sun4 .LstOptGrp_sun4, 
+.LstMno_sun4, 
+.LstMno_sun4 option, 
+.LstMno_sun4 .LstOptGrp_sun4, 
+.LstMnoDis_sun4, 
+.LstMnoDis_sun4 option, 
+.LstMnoDis_sun4 .LstOptGrp_sun4  {
+	font-size:11px;
+}
+
+.LstOptGrp_sun4, .LstDis_sun4 .LstOptGrp_sun4, .LstMno_sun4 .LstOptGrp_sun4, .LstMnoDis_sun4 .LstOptGrp_sun4 {
+	font-weight:normal;
+	font-style:normal;
+}
+.LstMno_sun4, .LstMno_sun4 option, .LstMno_sun4 .LstOptGrp_sun4, .LstMnoDis_sun4, .LstMnoDis_sun4 option, .LstMnoDis_sun4 .LstOptGrp_sun4  {
+	font-family:monospace;
+}
+/*---*/
+
+/* PROPERTY SHEET */
+.ConFldSetLgdDiv_sun4 {
+	font-size:1.1em;
+}
+.ConSubSecTtlTxt_sun4 {
+	font-size:1.5em;
+	font-weight:bold;
+}
+.ConFldSetLgdDiv_sun4, .ConErrLblTxt_sun4, .ConWrnLblTxt_sun4 {
+	font-weight:bold;
+}
+.ConJmpTopDiv_sun4, a.JmpLnk_sun4 {
+	font-size:1.0em;
+}
+/*---*/
+
+/* CONTENTPAGETITLE [originalName: PAGE TITLE]*/
+.TtlVewLbl_sun4 {
+	font-weight:bold;
+}
+.TtlTxt_sun4 {
+	font-size:1.5em;
+	font-weight:bold;
+}
+/*---*/
+
+/* TEXTAREA*/
+.TxtAra_sun4, .TxtAraDis_sun4 {
+	font-family:Arial, Helvetica, sans-serif;
+	font-size:1.0em;
+}
+/*---*/
+
+/* TABSET [originalName: LEVEL TABS]*/
+.Tab1Div_sun4, .Tab2Div_sun4, .Tab3Div_sun4, .MniTabDiv_sun4, .TabGrpBox_sun4 {
+	font-size:1.0em;
+}
+.Tab1Div_sun4, .Tab2Div_sun4, .Tab3Div_sun4, .MniTabDiv_sun4 {
+	font-weight:bold;
+}
+/*---*/
+
+/* SCHEDULER/POPUP CALENDAR*/
+a.DatLnk_sun4:hover, a.DatOthLnk_sun4:hover, .DatLblTxt_sun4, a.DatBldLnk_sun4:link, a.DatBldLnk_sun4:visited, a.DatCurLnk_sun4:link,
+ a.DatCurLnk_sun4:visited, a.DatCurLnk_sun4:hover, a.DatOthBldLnk_sun4:link, a.DatOthBldLnk_sun4:visited, .DatSelContent_sun4 {
+	font-weight:bold;
+}
+.DatDayHdrTxt_sun4 {
+	font-weight:normal;
+}
+a.DatLnk_sun4, a.DatBldLnk_sun4, a.DatOthLnk_sun4, a.DatOthBldLnk_sun4, a.DatCurLnk_sun4, .DatDayHdrTxt_sun4, .DatSelContent_sun4 {
+	font-size:1.1em;
+}
+.DatZonTxt_sun4 {
+	font-size:1.0em;
+}
+.CalPopDiv_sun4 a.DatLnk_sun4, .CalPopDiv_sun4 a.DatBldLnk_sun4, .CalPopDiv_sun4 a.DatOthLnk_sun4, .CalPopDiv_sun4 a.DatOthBldLnk_sun4,
+.CalPopDiv_sun4 a.DatCurLnk_sun4, .CalPopDiv_sun4 .DatDayHdrTxt_sun4, .CalPopDiv_sun4 .DatSelContent_sun4 {
+	font-size:1.0em;
+}
+.CalPopDiv_sun4  a.DatCurLnk_sun4:link,.CalPopDiv_sun4 a.DatCurLnk_sun4:visited, .CalPopDiv_sun4 a.DatBldLnk_sun4:link,.CalPopDiv_sun4 a.DatBldLnk_sun4:visited,
+.CalPopDiv_sun4 a.DatOthBldLnk_sun4:link,.CalPopDiv_sun4 a.DatOthBldLnk_sun4:visited, .CalPopDiv_sun4 .DatDayHdrTxt_sun4 {
+	font-weight:bold;
+}
+/*---*/
+
+/* MASTHEAD */
+span.MstLbl_sun4, span.MstUsrRole_sun4 {
+	font-weight:bold;
+	font-size:1.0em;
+}
+span.MstTxt_sun4 {
+	font-weight:normal;
+	font-size:1.0em;
+}
+a.MstPrgLnk_sun4, a.MstAlmLnk_sun4 {
+	font-size:1.0em;
+	font-weight:bold;
+}
+/*---*/
+
+/* TABLE [originalName: ACTION TABLE] */
+.TblTtlTxt_sun4 {
+	font-size:1.0em;
+	font-weight:bold;
+}
+.TblTtlMsgSpn_sun4 {
+	font-weight:normal;
+}
+.TblHdrTxt_sun4, .TblMultHdrTxt_sun4, .TblGrpTxt_sun4 {
+	font-weight:bold;
+}
+table.Tbl_sun4 th {font-weight:normal}
+table.Tbl_sun4 th.TblMultColHdr_sun4 a.TblHdrLnk_sun4:link, table.Tbl_sun4 th.TblMultColHdr_sun4 a.TblHdrLnk_sun4:visited {font-weight:normal;}
+table.Tbl_sun4 th.TblMultColHdr_sun4 .TblHdrTxt_sun4 {font-weight:normal;}
+table.Tbl_sun4 th.TblMultColHdrSrt_sun4 a.TblHdrLnk_sun4:link, table.Tbl_sun4 th.TblMultColHdrSrt_sun4 a.TblHdrLnk_sun4:visited {font-weight:normal;}
+.TblActLbl_sun4 {font-weight:bold;}
+table.Tbl_sun4 th.TblColHdrSrtSel_sun4 a.TblHdrImgLnk_sun4:link, th.TblColHdrSrtSel_sun4 a.TblHdrImgLnk_sun4:visited {font-weight:bold;}
+table.Tbl_sun4 a.TblHdrLnk_sun4:link, table.Tbl_sun4 a.TblHdrLnk_sun4:visited {font-weight:bold;}
+table.Tbl_sun4 a.TblHdrLnk_sun4:hover {font-weight:bold;}
+table.Tbl_sun4 th.TblColHdrSrt_sun4 a.TblHdrLnk_sun4:link, table.Tbl_sun4 th.TblColHdrSrt_sun4 a.TblHdrLnk_sun4:visited {font-weight:bold;}
+table.Tbl_sun4 th.TblColHdrSrt_sun4 a.TblHdrLnk_sun4:hover {font-weight:bold;}
+table.Tbl_sun4 th.TblColHdrSrt_sun4 a.TblHdrImgLnk_sun4:link, table.Tbl_sun4 th.TblColHdrSrt_sun4 a.TblHdrImgLnk_sun4:visited {font-weight:bold;}
+table.Tbl_sun4 .TblHdrSrtNum_sun4 {font-size:.9em;font-weight:normal;}
+.TblGrpTxt_sun4 {font-weight:bold;}
+.TblColFtrTxt_sun4 {font-weight:bold;}
+table.Tbl_sun4 .TblFtrRowTxt_sun4 {font-weight:bold;}
+table.Tbl_sun4 .TblFtrLft_sun4 {font-weight:bold;}
+.TblGrpColFtrTxt_sun4 {font-weight:bold;}
+.TblGrpFtrRowTxt_sun4 {font-weight:bold;}
+.TblPnlTtl_sun4 {
+	font-size:1.2em;
+	font-weight:bold;
+}
+.TblPnlHlpTxt_sun4 {font-size:1.0em;}
+/*---*/
+
+/* LIGHTWEIGHT TABLE DESIGN */
+/* Table Caption/Title */
+table.TblLt_sun4 caption.TblTtlTxt_sun4 {font-weight:bold;font-size:1.0em;}
+table.TblLt_sun4 caption.TblTtlTxt_sun4 span.TblTtlTxtSpn_sun4 {font-weight:bold;font-size:1.0em;}
+table.TblLt_sun4 caption.TblTtlTxt_sun4 span.TblTtlMsgSpn_sun4 {font-weight:normal;font-size:1.0em;}
+/* Table Footers */ 
+table.TblLt_sun4 .TblFtrRowTxt_sun4 {font-weight:normal;}
+/*---*/
+
+/* TREE */
+.Tree_sun4 {
+	font-size:1.0em;
+}
+.TreTtl_sun4 {
+	font-weight:bold;
+}
+a.TreeParentLink_sun4:link, a.TreeParentLink_sun4:visited {
+	font-weight:bold;
+}
+a.TreeParentLink_sun4:hover {
+	font-weight:bold;
+}
+a.TreeSelLink_sun4:link, a.TreeSelLink_sun4:visited {
+	font-weight:bold;
+}
+a.TreeSelLink_sun4:hover {
+	font-weight:bold;
+}
+.TreeSelText_sun4 {
+	font-weight:bold;
+}
+/*---*/
+
+/* VERSION DIALOG */
+.VrsHdrTxt_sun4 {
+	font-size:1.3em;
+	font-weight:bold;
+} 
+.VrsTxt_sun4 {
+	font-size:1.1em;
+} 
+/*---*/
+
+/* WIZARD */
+.WizStpTitle_sun4, .WizStpTxt_sun4, .WizHlpTxt_sun4, .WizStpCurTxt_sun4, a.WizStpLnk_sun4, .WizSubStpTtlTxt_sun4, .WizCntHlpTxt_sun4 {
+	font-size:1.0em;
+}
+.WizTtlBar_sun4 {
+	font-size:1.3em;
+	font-weight:bold;
+}
+.WizStpTxt_sun4 {
+	font-weight:normal;
+}
+.WizStpTitle_sun4 {
+        font-weight:bold;
+}
+.WizSubStpTtlTxt_sun4, .WizStpCurTxt_sun4 {
+	font-weight:bold;
+}
+.WizSubTtlTxt_sun4 {
+	font-weight:bold;
+	font-size:1.4em;
+}
+/*---*/
diff --git a/jsf-demo/sandbox/ezcomp03/README.txt b/jsf-demo/sandbox/ezcomp03/README.txt
new file mode 100644
index 0000000..fd15f43
--- /dev/null
+++ b/jsf-demo/sandbox/ezcomp03/README.txt
@@ -0,0 +1 @@
+This demo requires the Java EE APIs.
\ No newline at end of file
diff --git a/jsf-demo/sandbox/ezcomp03/build.xml b/jsf-demo/sandbox/ezcomp03/build.xml
new file mode 100644
index 0000000..67a88b9
--- /dev/null
+++ b/jsf-demo/sandbox/ezcomp03/build.xml
@@ -0,0 +1,132 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project name="ezcomp03" default="build" basedir=".">
+
+
+    <property file="${user.home}/build.properties"/>
+    <property file="../../build.properties"/>
+    <import file="${jsf.build.home}/common/ant/common.xml"/>
+
+    <!-- Configure the context path for this application -->
+    <property name="context.path" value="/ezcomp03"/>
+    <property name="example" value="ezcomp03"/>
+    <property name="build" value="${basedir}/build"/>
+
+    <path id="classpath">       
+        <pathelement location="${javax.faces-api.jar}"/>
+        <pathelement location="${javax.faces.jar}"/>
+        <path refid="compile.classpath"/>
+    </path>
+    
+    <target name="init" depends="check.changes">
+        <tstamp/>
+    </target>
+
+    <target name="check.changes">
+        <uptodate property="skip.build"
+                  targetfile="${build}/last-build">
+            <srcfiles dir="${basedir}">
+                <include name="src/**/*.*"/>
+            </srcfiles>
+        </uptodate>
+    </target>
+
+    <target name="clean">
+        <delete dir="${build}"/>
+    </target>    
+
+   <target name="prepare" depends="init"
+            description="Create build directories.">
+        <mkdir dir="${build}/${example}"/>
+        <mkdir dir="${build}/${example}/WEB-INF"/>
+        <mkdir dir="${build}/${example}/WEB-INF/classes"/>
+    </target>
+
+
+    <target name="build" unless="skip.build" depends="prepare"
+            description="Compile Java files and copy static files.">
+        <touch file="${build}/last-build"/>
+
+        <jsf.javac srcdir="src/main/java"
+                   destdir="${build}/${example}/WEB-INF/classes">
+            <classpath>
+                <path refid="classpath"/>
+            </classpath>
+        </jsf.javac>
+
+        <copy todir="${build}/${example}/WEB-INF">
+            <fileset dir="src/main/webapp/WEB-INF">
+                <include name="*.tld"/>
+                <include name="*.xml"/>
+            </fileset>
+        </copy>
+
+        <copy todir="${build}/${example}/">
+            <fileset dir="src/main/webapp">
+                <include name="*.xhtml"/>
+                <include name="*.html"/>
+                <include name="*.gif"/>
+                <include name="*.jpg"/>
+                <include name="*.jsp"/>
+                <include name="*.xml"/>
+            </fileset>
+        </copy>
+        
+        <copy todir="${build}/${example}/resources">
+            <fileset dir="src/main/webapp/resources"/>
+        </copy>
+        <copy todir="${build}/${example}/WEB-INF/groovy">
+            <fileset dir="src/main/webapp/WEB-INF/groovy"/>
+        </copy>
+
+        <jsf.war basedir="${build}"
+                 archive-name="${example}"
+                 webxml="${build}/${example}/WEB-INF/web.xml">
+            <archive-elements>
+                <zipfileset dir="${build}/${example}"/>
+            </archive-elements>
+        </jsf.war>
+    </target>
+
+</project> 
+ 
diff --git a/jsf-demo/sandbox/ezcomp03/pom.xml b/jsf-demo/sandbox/ezcomp03/pom.xml
new file mode 100644
index 0000000..6396c21
--- /dev/null
+++ b/jsf-demo/sandbox/ezcomp03/pom.xml
@@ -0,0 +1,142 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>com.sun.faces</groupId>
+  <artifactId>jsf-ezcomp03</artifactId>
+  <packaging>war</packaging>
+  <name>jsf-ezcomp03</name>
+  <url>https://mojarra.dev.java.net/</url>
+  <description>Ezcomp03 sample app</description>
+  <version>0.1</version>
+
+  <build>
+    <defaultGoal>install</defaultGoal>
+    <sourceDirectory>src/main/java</sourceDirectory>
+    <resources>
+      <resource>
+        <directory>src/main/resources</directory>
+        <targetPath>resources</targetPath>
+        <includes>
+            <include>*.taglib.xml</include>
+            <include>faces-config.xml</include>
+            <include>*.js</include>
+        </includes>
+     </resource>
+   </resources>
+    <finalName>jsf-ezcomp03</finalName>
+    <plugins>
+            <plugin>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>RELEASE</version>
+                <configuration>
+                    <source>1.5</source>
+                    <target>1.5</target>
+                </configuration>
+            </plugin>
+        </plugins>
+  </build>
+
+
+  <repositories>
+    <repository>
+      <snapshots />
+      <id>codecaus</id>
+      <name>codehaus</name>
+      <url>http://repository.codehaus.org</url>
+    </repository>
+    <repository>
+      <snapshots />
+      <id>java.net</id>
+      <name>Java.net Maven 1.x Repository for external projects</name>
+      <url>https://maven-repository.dev.java.net/nonav/repository</url>
+      <layout>legacy</layout>
+    </repository>
+    <repository>
+      <snapshots />
+      <id>java.net.shared</id>
+      <name>Java.net Maven 1.x Repository for glassfish dependencies</name>
+      <url>http://download.java.net/javaee5/external/shared</url>
+      <layout>legacy</layout>
+    </repository>
+    <repository>
+      <snapshots />
+      <id>ibiblio</id>
+      <url>http://www.ibiblio.org/maven2/</url>
+    </repository>
+  </repositories>
+
+  <dependencies>    
+    <dependency>
+      <groupId>com.sun.faces</groupId>
+      <artifactId>jsf-api</artifactId>
+      <version>2.0.0-SNAPSHOT</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+            <groupId>javaee</groupId>
+            <artifactId>javaee-api</artifactId>
+            <version>6-SNAPSHOT</version>
+            <scope>provided</scope>
+        </dependency>
+  </dependencies>
+  <reporting>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-project-info-reports-plugin</artifactId>
+        <reportSets><reportSet /></reportSets>
+      </plugin>
+       <plugin>
+         <groupId>org.apache.maven.plugins</groupId>
+         <artifactId>maven-compiler-plugin</artifactId>
+         <configuration>
+           <source>1.5</source>
+           <target>1.5</target>
+         </configuration>
+       </plugin>
+    </plugins>
+  </reporting>
+
+</project>
diff --git a/jsf-demo/sandbox/ezcomp03/src/main/webapp/WEB-INF/composite-test.taglib.xml b/jsf-demo/sandbox/ezcomp03/src/main/webapp/WEB-INF/composite-test.taglib.xml
new file mode 100644
index 0000000..5a710d8
--- /dev/null
+++ b/jsf-demo/sandbox/ezcomp03/src/main/webapp/WEB-INF/composite-test.taglib.xml
@@ -0,0 +1,52 @@
+<?xml version="1.0"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE facelet-taglib PUBLIC
+  "-//Sun Microsystems, Inc.//DTD Facelet Taglib 1.0//EN"
+  "http://java.sun.com/dtd/facelet-taglib_1_0.dtd">
+
+<facelet-taglib>
+    <namespace>http://domain.com/path</namespace>
+    <composite-library-name>compositeTest</composite-library-name>
+</facelet-taglib>
+
diff --git a/jsf-demo/sandbox/ezcomp03/src/main/webapp/WEB-INF/faces-config.xml b/jsf-demo/sandbox/ezcomp03/src/main/webapp/WEB-INF/faces-config.xml
new file mode 100644
index 0000000..22a5837
--- /dev/null
+++ b/jsf-demo/sandbox/ezcomp03/src/main/webapp/WEB-INF/faces-config.xml
@@ -0,0 +1,82 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!-- =========== FULL CONFIGURATION FILE ================================== -->
+
+<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
+              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+              xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
+              version="2.0">
+
+  <managed-bean>
+    <managed-bean-name>bean</managed-bean-name>
+    <managed-bean-class>
+      model.Bean
+    </managed-bean-class>
+    <managed-bean-scope>session</managed-bean-scope>
+  </managed-bean>
+
+    <navigation-rule>
+        <from-view-id>/index.xhtml</from-view-id>
+        <navigation-case>
+            <from-outcome>login</from-outcome>
+            <to-view-id>/page2.xhtml</to-view-id>
+        </navigation-case>
+        <navigation-case>
+            <from-outcome>cancel</from-outcome>
+            <to-view-id>/page2.xhtml</to-view-id>
+        </navigation-case>
+    </navigation-rule>
+
+    <navigation-rule>
+        <from-view-id>/page2.xhtml</from-view-id>
+        <navigation-case>
+            <from-outcome>back</from-outcome>
+            <to-view-id>/index.xhtml</to-view-id>
+        </navigation-case>
+    </navigation-rule>
+
+
+  
+
+</faces-config>
diff --git a/jsf-demo/sandbox/ezcomp03/src/main/webapp/WEB-INF/groovy/model/Bean.groovy b/jsf-demo/sandbox/ezcomp03/src/main/webapp/WEB-INF/groovy/model/Bean.groovy
new file mode 100644
index 0000000..80d021c
--- /dev/null
+++ b/jsf-demo/sandbox/ezcomp03/src/main/webapp/WEB-INF/groovy/model/Bean.groovy
@@ -0,0 +1,106 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package model;
+
+import javax.faces.context.FacesContext;
+import javax.faces.event.AbortProcessingException;
+import javax.faces.event.ActionEvent;
+import javax.faces.event.ActionListener;
+import javax.faces.event.ValueChangeEvent;
+import javax.faces.event.ValueChangeListener;
+
+public class Bean implements ActionListener, ValueChangeListener {
+    
+    private String requestKey = "Hello World!";
+
+    public void setRequestKey(String message) {
+        this.requestKey = message;
+    }
+    
+    public String getRequestKey() {
+        return requestKey;
+    }
+    
+    public String loginAction() {
+        return "login";
+    }
+
+    public String backAction() {
+        return "back";
+    }
+
+    public ActionListener getLoginEventListener() {
+        return this;
+    }
+    
+    public ValueChangeListener getUseridValueChangeListener() {
+        Bean other = new Bean();
+        other.setRequestKey("useridValueChangeListener");
+        return ((ValueChangeListener) other);
+    }
+
+    public ValueChangeListener getPasswordValueChangeListener() {
+        Bean other = new Bean();
+        other.setRequestKey("passwordValueChangeListener");
+        return ((ValueChangeListener) other);
+    }
+
+    public ValueChangeListener getAllInputsListener() {
+        Bean other = new Bean();
+        other.setRequestKey("allInputsValueChangeListener");
+        return ((ValueChangeListener) other);
+    }
+
+
+    public void processValueChange(ValueChangeEvent arg0) throws AbortProcessingException {
+        FacesContext.getCurrentInstance().getExternalContext().getRequestMap().
+                put(getRequestKey(), Boolean.TRUE);
+    }
+    
+    
+
+    public void processAction(ActionEvent event) {
+        FacesContext.getCurrentInstance().getExternalContext().getRequestMap().
+                put("loginEventCalled", Boolean.TRUE);
+        
+    }
+
+}
diff --git a/jsf-demo/sandbox/ezcomp03/src/main/webapp/WEB-INF/web.xml b/jsf-demo/sandbox/ezcomp03/src/main/webapp/WEB-INF/web.xml
new file mode 100755
index 0000000..fe805c4
--- /dev/null
+++ b/jsf-demo/sandbox/ezcomp03/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,118 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<web-app version="2.5"
+         xmlns="http://java.sun.com/xml/ns/javaee"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
+
+    <display-name>CompRes Blank Facelets App</display-name>
+    <description>CompRes Blank Facelets App</description>
+
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>server</param-value>
+    </context-param>
+
+    <context-param>
+        <param-name>com.sun.faces.enableGroovyScripting</param-name>
+        <param-value>true</param-value>
+    </context-param>
+
+    <context-param>
+	<param-name>javax.faces.DEFAULT_SUFFIX</param-name>
+	<param-value>.xhtml</param-value>
+    </context-param>
+    <context-param>
+        <param-name>facelets.DEVELOPMENT</param-name>
+        <param-value>true</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>Development</param-value>
+    </context-param>
+    <context-param>
+	<param-name>javax.faces.FACELETS_LIBRARIES</param-name>
+	<param-value>/WEB-INF/composite-test.taglib.xml</param-value>
+    </context-param>
+
+
+
+    <context-param>
+        <description>
+            Set this flag to true if you want the JavaServer Faces
+            Reference Implementation to validate the XML in your
+            faces-config.xml resources against the DTD. Default
+            value is false.
+        </description>
+        <param-name>com.sun.faces.validateXml</param-name>
+        <param-value>true</param-value>
+    </context-param>
+
+    <!-- Faces Servlet -->
+  <servlet>
+    <servlet-name>Faces Servlet</servlet-name>
+    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+    <load-on-startup>1</load-on-startup>
+  </servlet>
+
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+        <url-pattern>*.jsf</url-pattern>
+    </servlet-mapping>
+
+    <filter>
+	<filter-name>GroovyFilter</filter-name>
+	<filter-class>com.sun.faces.scripting.GroovySupportFilter</filter-class>
+    </filter>
+    <filter-mapping>
+	 <filter-name>GroovyFilter</filter-name>
+	 <url-pattern>/*</url-pattern>
+	 <dispatcher>REQUEST</dispatcher>
+	 <dispatcher>FORWARD</dispatcher>
+	 <dispatcher>INCLUDE</dispatcher>
+	 <dispatcher>ERROR</dispatcher>
+    </filter-mapping>
+
+</web-app>
diff --git a/jsf-demo/sandbox/ezcomp03/src/main/webapp/index.html b/jsf-demo/sandbox/ezcomp03/src/main/webapp/index.html
new file mode 100644
index 0000000..b351829
--- /dev/null
+++ b/jsf-demo/sandbox/ezcomp03/src/main/webapp/index.html
@@ -0,0 +1,47 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<html>
+<header>
+<meta http-equiv="Refresh" content="0;url=index.jsf">
+</header>
+</html>
diff --git a/jsf-demo/sandbox/ezcomp03/src/main/webapp/index.xhtml b/jsf-demo/sandbox/ezcomp03/src/main/webapp/index.xhtml
new file mode 100644
index 0000000..62f5640
--- /dev/null
+++ b/jsf-demo/sandbox/ezcomp03/src/main/webapp/index.xhtml
@@ -0,0 +1,100 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:ez="http://java.sun.com/jsf/composite/ezcomp"
+      xmlns:ct="http://domain.com/path">
+<h:head>
+<title>A more complex composite component demo than ezcomp</title>
+<style type="text/css">
+.grayBox { padding: 8px; margin: 10px 0; border: 1px solid #CCC; background-color: #f9f9f9;  }
+</style>
+
+</h:head>
+
+<h:body>
+
+<p>Login Panel Component</p>
+
+
+  <ui:debug hotkey="p" rendered="true"/>
+
+<h:form>
+
+  <div id="cc" class="grayBox" style="border: 1px solid #090;">
+
+    <ez:loginPanel id="loginPanel" usernameLabel="Username" pinLabel="PIN" 
+                   loginLabel="Login" model="#{bean}">
+
+      <f:valueChangeListener for="usernameInput"
+			     binding="#{bean.useridValueChangeListener}" />
+      <f:valueChangeListener for="pinInput"
+			     binding="#{bean.passwordValueChangeListener}" />
+      <f:valueChangeListener for="allInputs"
+			     binding="#{bean.allInputsListener}" />
+
+      <f:actionListener for="loginEvent" 
+                        binding="#{bean.loginEventListener}" />
+
+    </ez:loginPanel>
+
+  </div>
+
+<p><h:commandButton value="reload" /></p>
+
+<div id="cc" class="grayBox" style="border: 1px solid #090;">
+
+  <ct:foo />
+
+</div>
+
+
+
+</h:form>
+
+</h:body>
+
+</html>
diff --git a/jsf-demo/sandbox/ezcomp03/src/main/webapp/page2.xhtml b/jsf-demo/sandbox/ezcomp03/src/main/webapp/page2.xhtml
new file mode 100644
index 0000000..5e8deab
--- /dev/null
+++ b/jsf-demo/sandbox/ezcomp03/src/main/webapp/page2.xhtml
@@ -0,0 +1,89 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+<f:view contentType="text/html"/>
+
+<h:head>
+    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
+    <title>Page2</title>
+</h:head>
+
+<h:body>
+
+<h1>Page2</h1>
+
+<h:form prependId="false">
+
+  <p>This will be true if the groovy component was called: <h:outputText
+  value="${groovyCalled}" />.</p>
+
+  <p>This will have a value if the retargeted actionListener for
+  loginEvent was called: <h:outputText value="${loginEventCalled}"
+  />.</p>
+
+  <p>This will be true if the retargeted valueChangeListener for the
+  userid field was called: <h:outputText
+  value="${useridValueChangeListener}" />.</p>
+
+  <p>This will be true if the retargeted valueChangeListener for the
+  pin field was called: <h:outputText
+  value="${passwordValueChangeListener}" />.</p>
+
+  <p>This will be true if the retargeted valueChangeListener for 
+  allInputs was called: <h:outputText
+  value="${allInputsValueChangeListener}" />.</p>
+
+
+
+  <h:commandButton value="back" action="#{bean.backAction}" />
+
+</h:form>
+
+
+</h:body>
+
+</html>
diff --git a/jsf-demo/sandbox/ezcomp03/src/main/webapp/resources/compositeTest/foo.xhtml b/jsf-demo/sandbox/ezcomp03/src/main/webapp/resources/compositeTest/foo.xhtml
new file mode 100644
index 0000000..268ce2e
--- /dev/null
+++ b/jsf-demo/sandbox/ezcomp03/src/main/webapp/resources/compositeTest/foo.xhtml
@@ -0,0 +1,69 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:composite="http://java.sun.com/jsf/composite">
+<head>
+
+<title>Not present in rendered output</title>
+
+</head>
+
+<body>
+
+<composite:interface >
+</composite:interface>
+
+<composite:implementation>
+
+  <p>This is the composite component whose resource library name is
+  declared in a taglib file.</p>
+
+</composite:implementation>
+
+</body>
+
+</html>
diff --git a/jsf-demo/sandbox/ezcomp03/src/main/webapp/resources/ezcomp/LoginProductName.png b/jsf-demo/sandbox/ezcomp03/src/main/webapp/resources/ezcomp/LoginProductName.png
new file mode 100644
index 0000000..9b0ba51
Binary files /dev/null and b/jsf-demo/sandbox/ezcomp03/src/main/webapp/resources/ezcomp/LoginProductName.png differ
diff --git a/jsf-demo/sandbox/ezcomp03/src/main/webapp/resources/ezcomp/colorAndMedia.css b/jsf-demo/sandbox/ezcomp03/src/main/webapp/resources/ezcomp/colorAndMedia.css
new file mode 100644
index 0000000..2170460
--- /dev/null
+++ b/jsf-demo/sandbox/ezcomp03/src/main/webapp/resources/ezcomp/colorAndMedia.css
@@ -0,0 +1,1111 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+/* CSS Document */
+
+body {
+	color:#000;}
+
+a:link, a:visited {
+	color:#003399;
+	text-decoration:none;
+}
+a:hover {
+	color:#003399;
+	text-decoration:underline;
+}
+
+/* SKIP NAVIGATION LINK */
+.SkpWht_sun4 {
+	background-color:#FFFFFF;
+}
+.SkpMedGry1_sun4 {
+	background-color:#E5E9ED
+}
+/*---*/
+
+/* ADDREMOVE [originalName: ADD-REMOVE-IDIOM]*/
+
+.AddRmvLbl_sun4 {
+	color:#000;
+}
+
+.AddRmvLbl2_sun4 {
+  background: #f7f8fb url(#{resource['ezcomp:add-rem_header.gif']}) repeat-x top;
+	border-top: 1px solid #a4aaaf;
+	border-right: 1px solid #a4aaaf;
+	border-bottom: 1px solid #686b6e;
+	border-left: 1px solid #a4aaaf;
+}
+
+.AddRmvLbl2_sun4, .AddRmvLbl2ReadOnly_sun4 {
+	color:#000;
+}
+
+/*---*/
+/* BREADCRUMBS */
+.BcmWhtDiv_sun4 {
+	background-color:#FFF;
+}
+.BcmGryDiv_sun4 {
+	background-color:#E5E9ED;
+}
+a.BcmLnk_sun4:link, a.BcmLnk_sun4:visited, a.BcmLnk_sun4:hover, .BcmSep_sun4 {
+	color:#003399;
+}
+a.BcmLnk_sun4:link, a.BcmLnk_sun4:visited {
+	text-decoration:none;
+}
+a.BcmLnk_sun4:hover {
+	text-decoration:underline;
+}
+/*---*/
+
+/* BUTTONS */
+
+.Btn1_sun4, .Btn1Mni_sun4 {
+  background:#ABD2EB url(#{resource['ezcomp:primary-enabled.gif']}) repeat-x top;
+	border-top-color:#6C8197;
+	border-right-color:#4E647A;
+	border-bottom-color:#263E5A;
+	border-left-color:#4E647A;
+}
+
+.Btn1Hov_sun4, .Btn1MniHov_sun4 {
+  background:#E2F1FF url(#{resource['ezcomp:primary-roll.gif']}) repeat-x top;
+	border-top-color:#6D8197;
+	border-right-color:#475D75;
+	border-bottom-color:#273E5A;
+	border-left-color:#475D75;
+}
+
+.Btn2_sun4, .Btn2Mni_sun4, .Btn2Hov_sun4, .Btn2MniHov_sun4 {
+	border-top-color:#83858C;
+	border-right-color:#62656B;
+	border-bottom-color:#44464C;
+	border-left-color:#62656B;
+}
+
+.Btn2_sun4, .Btn2Mni_sun4 {
+  background:#E0E3EB url(#{resource['ezcomp:secondary-enabled.gif']}) repeat-x top;
+}
+
+.Btn2Hov_sun4, .Btn2MniHov_sun4 {
+  background: #F4F7FE url(#{resource['ezcomp:secondary-roll.gif']}) repeat-x top;
+}
+
+
+
+.Btn1Dis_sun4, .Btn1MniDis_sun4 {
+  background:#BAC4D1 url(#{resource['ezcomp:primary-disabled.gif']}) repeat-x top;
+	color:#777E86;
+	border-top-color:#B5BDC6;
+	border-right-color:#A7AFB8;
+	border-bottom-color:#99A0A8;
+	border-left-color:#A7AFB8;
+}
+
+.Btn2Dis_sun4, .Btn2MniDis_sun4 {
+  background:#D1D4DB url(#{resource['ezcomp:secondary-disabled.gif']}) repeat-x top;
+	color:#7C7D82;
+	border-top-color:#CCCDD0;
+	border-right-color:#BEBFC2;
+	border-bottom-color:#AEAFB2;
+	border-left-color:#BEBFC2;
+}
+
+.Btn1Hov_sun4, .Btn1MniHov_sun4, .Btn2Hov_sun4, .Btn2MniHov_sun4 {
+	cursor:pointer;
+}
+.MstDiv_sun4 .Btn1_sun4, .MstDiv_sun4 .Btn1Mni_sun4, .MstDiv_sun4 .Btn2_sun4, .MstDiv_sun4 .Btn2Mni_sun4, .MstDiv_sun4 .Btn1Hov_sun4, .MstDiv_sun4 .Btn1MniHov_sun4, .MstDiv_sun4 .Btn2Hov_sun4, .MstDiv_sun4 .Btn2MniHov_sun4,
+.mastheadButton_4_sun4 a:link, .mastheadButton_4_sun4 a:visited, .mastheadButton_4_sun4 a:hover {
+	color:#FFF;
+	vertical-align:middle;
+}.MstDiv_sun4 .Btn1_sun4, .MstDiv_sun4 .Btn1Mni_sun4, .MstDiv_sun4 .Btn2_sun4, .MstDiv_sun4 .Btn2Mni_sun4,
+.mastheadButton_4_sun4 a:link, .mastheadButton_4_sun4 a:visited {
+  background:#7595AB url(#{resource['ezcomp:masthead_button.gif']}) repeat-x bottom;
+}.mastheadButton_4_sun4 a:link, .mastheadButton_4_sun4 a:visited, .mastheadButton_4_sun4 a:hover {
+	text-decoration:none;
+}
+.mastheadButton_4_sun4 a:hover,
+.MstDiv_sun4 .Btn1Hov_sun4, .MstDiv_sun4 .Btn1MniHov_sun4, .MstDiv_sun4 .Btn2Hov_sun4, .MstDiv_sun4 .Btn2MniHov_sun4 {
+  background:#99B0C4 url(#{resource['ezcomp:masthead_button_over.gif']}) repeat-x bottom;
+}
+
+.mastheadButton_4_sun4 {
+	background-color:#374154;
+	border-top-color:#4a5467;
+	border-right-color:#374154;
+	border-left-color:#374154;
+	border-bottom-color:#7ea0b8;
+}
+/*---*/
+/* SCHEDULER [originalName: DATE AND TIME]*/
+.DatCalDiv_sun4 {
+	border-left-color: #5F6466;
+	border-right-color:#5F6466;
+	border-bottom-color:#5F6466;
+}
+.DatSelTopMiddle_sun4 {
+	background-color:#3D6079;
+	border-top-color:#5F6466;
+}
+
+.DatSelContent_sun4 {
+	border-left-color: #5F6466;
+	border-right-color:#5F6466;
+  background:#3D6079 url(#{resource['ezcomp:header-short.gif']}) bottom left repeat-x;
+	color:#FFFFFF;
+}
+
+.DatCalDiv_sun4 {
+	border-left-color: #5F6466;
+	border-right-color:#5F6466;
+	border-bottom-color:#5F6466;
+}
+
+.DatCalDiv_sun4, .DatCalTbl_sun4 th {
+	background-color:#E3E7EA;
+}
+
+.DatCalTbl_sun4 th {
+	border-color:#E3E7EA;
+}
+
+.DatCalTbl_sun4 td {
+	border-color:#E1E5E8;
+}
+
+.DatDayHdrTxt_sun4, .DatZonTxt_sun4 {
+	color:#000000;
+}
+.DatZonTxt_sun4 {
+	color:#707277;
+}
+.DatLblTxt_sun4 {
+	color:#666;
+}
+
+a.DatLnk_sun4:link, a.DatLnk_sun4:visited {
+	color:#000000;
+	background-color:#fff;
+	text-decoration:none;
+	border-color:#fff;
+}
+
+a.DatLnk_sun4:hover {
+	text-decoration:underline;
+	border-color:#fff;
+}
+
+a.DatBldLnk_sun4:link, a.DatBldLnk_sun4:visited {
+	color:#000000;
+	background-color:#90B7D0;
+	border-top-color:#242E34;
+	border-right-color:#90B7D0;
+	border-bottom-color:#90B7D0;
+	border-left-color:#242E34;
+	text-decoration:none;
+}
+
+a.DatBldLnk_sun4:hover {
+	text-decoration:underline;
+}
+
+a.DatCurLnk_sun4:link, a.DatCurLnk_sun4:visited {
+	color:#000;
+	background-color:#fff;
+	text-decoration:none;
+	border-color:#fff;
+}
+
+a.DatCurLnk_sun4:hover {
+	text-decoration:underline;
+	border-color:#fff;
+}
+
+a.DatOthLnk_sun4 {
+	color:#000;
+	background-color:#ECF0F3;
+	text-decoration:none;
+	border-color:#ECF0F3;
+}
+
+a.DatOthLnk_sun4:hover {
+	text-decoration:underline;
+}
+
+a.DatOthBldLnk_sun4:link, a.DatOthBldLnk_sun4:visited {
+	color:#000000;
+	background-color:#90B7D0;
+	border-top-color:#242E34;
+	border-right-color:#90B7D0;
+	border-bottom-color:#90B7D0;
+	border-left-color:#242E34;
+	text-decoration:none;
+}
+
+a.DatOthBldLnk_sun4:hover {
+	text-decoration:underline;
+}
+/*---*/
+
+/*CALENDAR */
+.CalPopDiv_sun4 {
+  background:transparent url(#{resource['ezcomp:calpop_dropshadow.png']}) bottom right no-repeat;
+}
+.CalPopDiv_sun4  a.DatCurLnk_sun4:hover, .CalPopDiv_sun4  a.DatLnk_sun4:hover, .CalPopDiv_sun4 a.DatBldLnk_sun4:hover, .CalPopDiv_sun4 a.DatOthBldLnk_sun4:hover {
+	text-decoration:underline;
+}
+.CalPopDiv_sun4 .DatCalDiv_sun4 {
+	background-color:#E5E9ED;
+}
+.CalPopDiv_sun4 a.DatOthLnk_sun4 {
+	background-color:#E5E9ED;
+	border-color:#E5E9ED;
+}
+.CalPopDiv_sun4 a.DatOthLnk_sun4:hover {
+	text-decoration:underline;
+}
+.DatCalDiv_sun4, .DatCalTbl_sun4 th {
+	background-color:#E3E7EA;
+}
+.CalPopDiv_sun4 .DatCalTbl_sun4 {
+	border-color:#D6DCE1;
+}
+.CalPopDiv_sun4 .DatCalTbl_sun4 td {
+	border-color:#D6DCE1;
+}
+.CalPopDiv_sun4 .DatCalTbl_sun4 th {
+	border-color:#D6DCE1;
+	background-color:#E5E9ED;
+}
+.CalPopDiv_sun4 a.CalPopClsLnk_sun4:link, .CalPopDiv_sun4 a.CalPopClsLnk_sun4:active {
+	color:#333;
+	border-color:#A8B8C3;
+	text-decoration:none;
+}
+.CalPopDiv_sun4 a.CalPopClsLnk_sun4:hover {
+	text-decoration:underline;
+}
+.CalPopDiv_sun4 .CalPopFtrDiv_sun4 {
+  background:#EEF1F4 url(#{resource['ezcomp:calpop_footer_grad.gif']}) bottom left repeat-x;
+}
+.CalPopDiv_sun4 .CurDayTxt_sun4 {
+	color:#333;
+}
+/*---*/
+
+/* FILE CHOOSER */
+.ChoLblTxt_sun4 {
+	color:#5F6466;
+}
+.ChoSrvTxt_sun4 {
+	color:#333;
+}
+.ChoHr_sun4 {
+	background-color: #98a0a5;
+}
+.ChoLstHdr_sun4 {
+  background: #f7f8fb url(#{resource['ezcomp:column_hdr_gradient.gif']}) repeat-x top;
+	border-top: 1px solid #9ca4aa;
+	border-bottom: 1px none #686b6e;
+	border-left: 1px solid #9ca4aa;
+	border-right: 1px solid #9ca4aa;
+}
+.ChoLstHdr_sun4 .ChoSizeHdr_sun4 {
+	border-right: 1px solid #ced0d3;
+	border-left: 1px solid #ced0d3;
+}
+
+/*---*/
+/* PAGEALERT [originalName: FULL ALERTS]*/
+.FulAlrtHdrTxt_sun4, .FulAlrtMsgTxt_sun4 {
+	color:#000;
+}
+/* INLINE ALERT */
+.inlineAlert_4_sun4 .topLeftCorner_sun4 {
+  background:transparent url(#{resource['ezcomp:alertbackground_top_left.gif']}) no-repeat;
+}
+.inlineAlert_4_sun4 .topMiddle_sun4 {
+  background:transparent url(#{resource['ezcomp:alertbackground_top.gif']}) top repeat-x;
+}
+.inlineAlert_4_sun4 .topRightCorner_sun4 {
+  background:transparent url(#{resource['ezcomp:alertbackground_top_right.gif']}) no-repeat;
+}
+.inlineAlert_4_sun4 .middleRow_sun4 {
+	background-color:#FFF7C8;
+}
+.inlineAlert_4_sun4 .leftMiddle_sun4 {
+  background:#FFF7C8 url(#{resource['ezcomp:alertbackground_middle.gif']}) top left repeat-x;
+	border-left-color:#EDE18D;
+} 
+.inlineAlert_4_sun4 .middle_sun4 {
+  background:#FFF7C8 url(#{resource['ezcomp:alertbackground_middle.gif']}) top left repeat-x;
+} 
+.inlineAlert_4_sun4 .middle_sun4 .details_sun4 a {
+	color:#003399;
+	text-decoration:none;
+}
+.inlineAlert_4_sun4 .middle_sun4 .details_sun4 a:hover {
+	text-decoration:underline;
+}
+.inlineAlert_4_sun4 .rightMiddle_sun4 {
+  background:#FFF7C8 url(#{resource['ezcomp:alertbackground_middle.gif']}) top left repeat-x;
+	border-right-color:#EDE18D;
+}
+.inlineAlert_4_sun4 .bottomLeftCorner_sun4 {
+  background:transparent url(#{resource['ezcomp:alertbackground_bottom_left.gif']}) no-repeat;
+}
+.inlineAlert_4_sun4 .bottomMiddle_sun4 {
+	background-color:#FFF7C8;
+	border-bottom-color:#E6DDA2;
+}
+.inlineAlert_4_sun4 .bottomRightCorner_sun4 {
+  background:transparent url(#{resource['ezcomp:alertbackground_bottom_right.gif']}) no-repeat;}
+/*---*/
+
+/* HELP WINDOW */
+body.HlpBdy_sun4 {
+	background-color:#FFF;
+	color:#000000;
+	border-left-color:#A8B0B5;
+}
+.HlpMstTtlBdy_sun4 {
+	background-color:#E5E9ED;
+}
+.HlpBtnDiv_sun4 {
+  background:#E5E9ED url(#{resource['ezcomp:background_border_bottom.gif']}) bottom left repeat-x;
+}
+/*---*/
+
+/* HELPINLINE [originalName: INLINE HELP]*/
+.inlinePageHelp_sun4, .inlineFieldHelp_sun4 {
+	color:#707277;
+}
+ .inlinePageHelp_sun4 a, a.HlpPgeLnk_sun4:link, a.HlpPgeLnk_sun4:visited, a.HlpFldLnk_sun4:link, a.HlpFldLnk_sun4:visited {
+	color:#003399;
+	text-decoration:none;
+}
+.inlinePageHelp_sun4 a:hover, a.HlpPgeLnk_sun4:hover, a.HlpFldLnk_sun4:hover {
+	color:#003399;
+	text-decoration:underline;
+}
+/*---*/
+
+/* CHECKBOXES AND RADIO BUTTONS */
+.CbDis_sun4, .RbDis_sun4 {
+	color:#848687;
+}
+/*---*/
+
+/* LABEL [originalName: GENERIC FIELD LABELS]*/
+
+.LblLev1Txt_sun4, .LblLev2Txt_sun4, .LblLev2smTxt_sun4 .LblLev3Txt_sun4 {
+	color:#000000;
+}
+.LblLev1TxtDis_sun4, .LblLev2TxtDis_sun4, .LblLev2smTxtDis_sun4, .LblLev3TxtDis_sun4 {
+	color:#7E7E7E;
+}
+.LblRqdDiv_sun4 {
+	color:#707277;
+}
+
+/*---*/
+/* LEFT PANE HELP */
+.LftHlpMst_sun4 {
+	background:#E5E9ED;
+}
+.LftHlpHlp_sun4 {
+  background:#E5E9ED url(#{resource['ezcomp:left-pane-background.gif']}) left top repeat-x;
+}
+.LftHlpBdy_sun4 {
+	background-color:#FFFFFF;
+}
+.LftHlpBtm_sun4, .LftHlpBtnBtm_sun4 {
+	background-color:#E5E9ED;
+}
+.LftHlpTxt_sun4, .LftHlpHlp_sun4, .LftHlpBdy_sun4 {
+	color:#000000;
+}
+.LftHlpBdy_sun4, .LftHlpBtm_sun4, .LftHlpBtnBtm_sun4, .LftHlpMst_sun4 {
+	border-color:#A8B0B5;
+}
+/*---*/
+/* LISTS */
+/* Regular List */
+.Lst_sun4, .LstMno_sun4 {
+  background:#FFFFFF url(#{resource['ezcomp:bg_gradient.gif']}) repeat-x top;
+}
+.LstDis_sun4, .LstMnoDis_sun4 {
+  background:#EAEDF0 url(#{resource['ezcomp:bg_gradient_disabled.gif']}) repeat-x top;
+}
+.Lst_sun4, .LstDis_sun4, .LstMno_sun4, .LstMnoDis_sun4 {
+	border-top-color:#686B6E;
+	border-right-color:#CDCDCF;
+	border-bottom-color:#CDCDCF;
+	border-left-color:#CDCDCF;
+}
+.Lst_sun4, .LstOpt_sun4, .LstOptSel_sun4, .LstOptGrp_sun4, .LstMno_sun4, .LstMno_sun4 .LstOptGrp_sun4 {
+	color:#333;
+}
+.LstOptSep_sun4, .LstOptDis_sun4 {
+	color:#848687;
+}
+.LstDis_sun4, .LstDis_sun4 option, .LstDis_sun4 .LstOptGrp_sun4, .LstMnoDis_sun4, .LstMnoDis_sun4 option, .LstMnoDis_sun4 .LstOptGrp_sun4 {
+	background-color:#EAEDF0;
+	color:#848687;
+}
+/*---*/
+
+/* MESSAGE AND MESSAGE GROUPS */
+.MsgFldSumTxt_sun4 {
+    color:#C00;
+}
+.MsgFldTxt_sun4 {
+    color:#C00;
+}
+.MsgGrpTbl_sun4 {
+    border:solid 1px #C00;
+    margin-top:10px;
+}
+.MsgGrpTbl_sun4 td {
+    background-color:#FAEDED;
+}
+.MsgGrpTblTtl_sun4 {
+    color:#000;
+    background-color:#FAEDED;
+}
+.MsgGrpDiv_sun4 ul {
+    color:#C00;
+    list-style-type:square;
+}
+.MsgGrpSumTxt_sun4 {
+    color:#000;
+}
+.MsgGrpTxt_sun4 {
+    color:#333;
+}
+/*---*/
+
+/* PROPERTY SHEET */
+/* [check overwrite classes on css_ie55up.css] */
+.ConLin_sun4 {
+	margin:10px 0 10px 10px;
+	background-color:#92A2AA;
+	width:100%;
+}
+.ConFldSetLgdDiv_sun4, .ConSubSecTtlTxt_sun4, .ConFldSetLgd_sun4 {
+	color:#000000;
+}
+.ConDefTxt_sun4, .ConRqdTxt_sun4 {
+	color:#707277;
+}
+.ConErrLblTxt_sun4 {
+	color:#C00;
+}
+.ConWrnLblTxt_sun4 {
+	color:#C90;
+}
+a.JmpLnk_sun4, a.JmpTopLnk_sun4 {
+	color:#003399;
+}
+a.JmpLnk_sun4:link, a.JmpLnk_sun4:visited {
+	text-decoration:none;
+	vertical-align:top;
+}
+a.JmpLnk_sun4:hover {
+	text-decoration:underline;
+	vertical-align:top;
+}
+a.JmpTopLnk_sun4:link, a.JmpTopLnk_sun4:visited {
+	text-decoration:none;
+}
+a.JmpTopLnk_sun4:hover {
+	text-decoration:underline;
+}
+/*---*/
+/* CONTENTPAGETITLE [originalName: PAGE TITLE]*/
+.TtlLin_sun4 {
+	background-color:#81939B;
+}
+span.TtlTxt_sun4, h1.TtlTxt_sun4 {
+	color:#000;
+}
+.TtlVewLbl_sun4 {
+	color:#5F6466;
+}
+/*---*/
+/* TABSET [originalName: LEVEL TABS]*/
+.Tab1Div_sun4, .Tab1Div_sun4 .Tab1TblSpcTd_sun4 {
+  background:#E5E9ED url(#{resource['ezcomp:background_border_bottom.gif']}) left bottom repeat-x;
+} 
+a.Tab1Lnk_sun4:link, a.Tab1Lnk_sun4:visited  {
+	color:#000;
+	text-decoration:none;
+}
+a.Tab1Lnk_sun4:hover {
+	text-decoration:underline;
+}
+.Tab1Div_sun4 td {
+	border-color: #80929B;
+  background:#FCFFFF url(#{resource['ezcomp:level1_deselect.jpg']}) left top repeat-x;
+}.Tab1Tbl2New_sun4 .Tab1SelTxtLeft_sun4 {
+  background-image:url(#{resource['ezcomp:level1_selected-left.jpg']});
+}.Tab1Tbl2New_sun4 .Tab1SelTxtNew_sun4{
+  background-image:url(#{resource['ezcomp:level1_selected-right.jpg']});
+}
+.Tab1TblNew_sun4 .Tab1TblSelTd_sun4 {
+	background-color:#FFFFFF ;
+  background-image:url(#{resource['ezcomp:level1_selected-1lvl.jpg']});
+}
+.Tab1Tbl2New_sun4 .Tab1TblSelTd_sun4, .Tab1Tbl3New_sun4 .Tab1TblSelTd_sun4 {
+	background-color:#EEF0F4;
+  background-image:url(#{resource['ezcomp:level1_selected-middle.jpg']});
+}
+/* LEVEL 2 TABS */
+.Tab2Div_sun4 {
+  background:#F1F3F6 url(#{resource['ezcomp:background_border_bottom.gif']}) left bottom repeat-x;
+}
+a.Tab2Lnk_sun4:link, a.Tab2Lnk_sun4:visited {
+	color:#000;
+	text-decoration:none;
+}
+a.Tab2Lnk_sun4:hover {
+	text-decoration:underline;
+}
+.Tab2Div_sun4 td {
+	border-color:#80929B;
+  background:#FCFFFF url(#{resource['ezcomp:level2_deselect.jpg']}) left top repeat-x;
+}.Tab2Tbl3New_sun4 .Tab2SelTxtLeft_sun4 {
+  background-image:url(#{resource['ezcomp:level2_selected-left.jpg']});
+}.Tab2Tbl3New_sun4 .Tab2SelTxt_sun4 {
+  background-image:url(#{resource['ezcomp:level2_selected-right.jpg']});
+}.Tab2TblNew_sun4 .Tab2TblSelTd_sun4 {
+  border-color:#80929B;	background-image:url(#{resource['ezcomp:level2_selected.gif']});
+}.Tab2Tbl3New_sun4 .Tab2TblSelTd_sun4 {
+	border-color:#80929B;
+  background:#F8F9FB url(#{resource['ezcomp:level2_selected-middle.jpg']}) left top repeat-x;
+}
+.Tab2Div_sun4 {
+	padding:6px 0px 0px 10px;
+}
+.Tab2Div_sun4 table {
+	border-collapse:collapse;
+}
+.Tab2Div_sun4 td.Tab2TblSelTd_sun4 {
+	border-bottom:none;
+}
+/* LEVEL 3 TABS*/
+.Tab3Div_sun4 {
+  background:#F8F9FA url(#{resource['ezcomp:background_border_bottom.gif']}) right bottom repeat-x;
+}
+.Tab3Div_sun4 td {
+	border-color:#80929B;
+}
+.Tab3Div_sun4 table {
+	border-collapse:collapse;
+}
+a.Tab3Lnk_sun4:link,a.Tab3Lnk_sun4:visited {
+	color:#000;
+	text-decoration:none;
+}
+a.Tab3Lnk_sun4:hover {
+	text-decoration:underline;
+}
+table.Tab3TblNew_sun4 {
+	background-color:#E2E7EA;
+}
+table.Tab3TblNew_sun4 td {
+	border-bottom-color:#80929B;
+  background:#FCFFFF url(#{resource['ezcomp:level3_deselect.jpg']}) left top repeat-x;
+}.Tab3TblNew_sun4 td.Tab3TblSelTd_sun4 {
+	border-color:#80929B;
+  background:#FFFFFF url(#{resource['ezcomp:level3_selected.jpg']}) left top repeat-x;
+}
+/* MINI-TABS */
+.MniTabDiv_sun4 {
+  background:#E5E9ED url(#{resource['ezcomp:background_border_bottom.gif']}) bottom left repeat-x;
+}
+table.MniTabTbl_sun4 td {
+	border-color:#80929B;
+  background:#FCFFFF url(#{resource['ezcomp:minitab_deselect.jpg']}) left top repeat-x;
+}
+a.MniTabLnk_sun4:link,a.MniTabLnk_sun4:visited {
+	color:#000;
+	text-decoration:none;
+}
+a.MniTabLnk_sun4:hover {
+	text-decoration:underline;
+}
+.MniTabSelTxt_sun4 {
+	color:#000;
+	text-decoration:none;
+}
+table.MniTabTbl_sun4 td.MniTabTblSelTd_sun4 {
+  background:#FFFFFF url(#{resource['ezcomp:minitab_selected.jpg']}) left top repeat-x;
+	border-color:#80929B;
+}
+/* MINI-TABS - LIGHTWEIGHT */
+.TabGrp_sun4 .TabGrpBox_sun4 {
+	border-color:#80929B;
+}
+.TabGrp_sun4 .MniTabDiv_sun4 {
+	background-color:transparent;
+  background-image:url(#{resource['ezcomp:background_border_bottom.gif']});
+}
+/*---*/
+/* TEXT AND PASSWORD FIELDS */
+
+.TxtFld_sun4, .TxtAra_sun4 {
+  background:#FFFFFF url(#{resource['ezcomp:bg_gradient.gif']}) repeat-x top;
+}
+
+.TxtFldDis_sun4, .TxtAraDis_sun4 {
+  background:#EAEDF0 url(#{resource['ezcomp:bg_gradient_disabled.gif']}) repeat-x top;
+	color:#7E7E7E;
+}
+
+.TxtFld_sun4Sel {
+  background:#A0BBD8 url(#{resource['ezcomp:bg_gradient_selected.gif']}) repeat-x top;
+}
+
+.TxtFld_sun4, .TxtFldDis_sun4, .TxtAra_sun4, .TxtAraDis_sun4 {
+	border-top-color:#9D9FA1;
+	border-right-color:#AEAFB0;
+	border-bottom-color:#B9B9BA;
+	border-left-color:#AEAFB0;
+}
+
+/*---*/
+
+/* MENUS */
+
+.MnuJmpOptGrp_sun4, .MnuStdOptGrp_sun4 {color:#000;}
+
+.MnuStdOpt_sun4, .MnuStdOptSel_sun4, .MnuStd_sun4 {color:#333;}
+
+.MnuJmpOpt_sun4, .MnuJmpOpt_sun4:hover, .MnuJmp_sun4 {color:#0A3A9C;}
+
+.MnuJmpOptSep_sun4, .MnuJmpOptDis_sun4, .MnuStdOptSep_sun4, .MnuStdOptDis_sun4, .MnuJmpDis_sun4, .MnuStdDis_sun4 {
+	color:#848687;
+	border-top-color:#9D9FA1;
+	border-right-color:#AEAFB0;
+	border-bottom-color:#B9B9BA;
+	border-left-color:#AEAFB0;
+}
+
+.MnuJmpOpt_sun4:hover {text-decoration:underline;}
+
+.MnuJmp_sun4, .MnuStd_sun4 {
+  background:#FFFFFF url(#{resource['ezcomp:bg_gradient.gif']}) repeat-x top;
+	border-top-color:#9D9FA1;
+	border-right-color:#AEAFB0;
+	border-bottom-color:#B9B9BA;
+	border-left-color:#AEAFB0;
+}
+
+.MnuJmpOptSel_sun4 {font-weight:normal;}
+
+.MnuJmpOptGrp_sun4, .MnuStdOptGrp_sun4 {font-weight:normal;font-style:normal;}
+
+/*---*/
+
+/* MASTHEAD */
+
+span.MstLbl_sun4, span.MstTxt_sun4, span.MstUsrRole_sun4, span.MstAlmDwnTxt_sun4, span.MstAlmCrtTxt_sun4, span.MstAlmMajTxt_sun4, span.MstAlmMinTxt_sun4,
+a.MstUsrLnk_sun4:link, a.MstUsrLnk_sun4:visited, a.MstAlmLnk_sun4:link, a.MstAlmLnk_sun4:visited, a.MstPrgLnk_sun4:link, a.MstPrgLnk_sun4:visited {
+	color:#FFFFFF;
+}
+
+a.MstUsrLnk_sun4:hover, a.MstAlmLnk_sun4:hover, a.MstPrgLnk_sun4:hover,
+a.MstUsrLnk_sun4:link, a.MstUsrLnk_sun4:visited, a.MstAlmLnk_sun4:link, a.MstAlmLnk_sun4:visited, a.MstPrgLnk_sun4:link, a.MstPrgLnk_sun4:visited {
+	text-decoration:underline;
+}
+
+.MstBdy_sun4 {
+	background-color:#5B87A5;
+}
+
+.MstTblEnd_sun4 {
+	background-color:#5B87A5;
+}
+.MstTblBot_sun4 .hrule_sun4{
+	border-top-color:#3E637E;
+	background-color:#7196B0;
+}	
+
+.MstDiv_sun4 {
+  background:#5B87A5 url(#{resource['ezcomp:masthead-background.jpg']}) top left repeat-x;
+	border-color:#000000;
+}
+.MstSec_sun4 {
+  background:#5B87A5 url(#{resource['ezcomp:sec-masthead-background.jpg']}) top left repeat-x;
+	border-color:#000000;
+}
+.MstFooter_sun4 {
+	background-color:#5B87A5;
+	border-color:#000000;
+}
+
+a.MstLnk_sun4:hover, a.MstLnkLft_sun4:hover, a.MstLnkRt_sun4:hover, a.MstLnkCen_sun4:hover {
+	background-color:#EAF9FF;
+  background-image:url(#{resource['ezcomp:masthead_link_roll.gif']});
+}
+
+a.MstLnk_sun4:link, a.MstLnk_sun4:visited, a.MstLnkLft_sun4:link, a.MstLnkLft_sun4:visited, a.MstLnkRt_sun4:link, a.MstLnkRt_sun4:visited, a.MstLnkCen_sun4:link, a.MstLnkCen_sun4:visited {
+	background-color:#D9E6EC;
+  background-image:url(#{resource['ezcomp:masthead_link_enabled.gif']});
+	color:#000;
+	text-decoration:none;
+	border-top-color:#2D3C46;
+	border-bottom-color:#0E1418;
+	border-left-color:#1C262D;
+}
+
+a.MstLnk_sun4:link, a.MstLnk_sun4:visited, a.MstLnkRt_sun4:link, a.MstLnkRt_sun4:visited {
+	border-right-color:#1C262D;
+}
+/*---*/
+/* TABLE [originalName: ACTION TABLE] */
+.Tbl_sun4 {
+	border-color:#A0A3A5;
+	border-top-color:#35556A;
+	background-color:#E5E9ED;
+	color:#000;
+}
+table.Tbl_sun4 td, table.Tbl_sun4 th {border-color:#CAD0D2;	background-color:#fff;}
+/* Table Caption/Title */
+table.Tbl_sun4 caption.TblTtlTxt_sun4 {
+	color:#fff;
+  background:#36586F url(#{resource['ezcomp:table_titlebar_gradient.gif']}) bottom left repeat-x;
+}
+caption.TblTtlTxt_sun4 span.TblTtlMsgSpn_sun4 {color:#fff;}
+/* Action Bar */
+table.Tbl_sun4 td.TblActTdLst_sun4 {border-top-color:#e5e5e5;background-color:#E5E9ED;}
+table.Tbl_sun4 td.TblActTd_sun4 {background-color:#E5E9ED;} 
+/* Selection Column - Headers */
+table.Tbl_sun4 th.TblColHdrSel_sun4 {border-top-color:#81939B;border-left-color:#81939B;border-bottom-color:#81939B;background-color:#f8f8f9;}
+table.Tbl_sun4 th.TblColHdrSrtSel_sun4 {
+  background:#f8f8f9  url(#{resource['ezcomp:column_hdr_sort_gradient.gif']}) left bottom repeat-x;
+	border-top-color:#959aa5;
+	border-left-color:#959aa5;
+	border-bottom-color:#828da4;
+}
+table.Tbl_sun4 th.TblColHdrSel_sun4 a.TblHdrLnk_sun4:link, table.Tbl_sun4 th.TblColHdrSel_sun4 a.TblHdrLnk_sun4:visited, table.Tbl_sun4 th.TblColHdrSel_sun4 a.TblHdrLnk_sun4:hover   {background-color:#fff;text-decoration:none;}
+table.Tbl_sun4 th.TblColHdrSrtSel_sun4 a.TblHdrImgLnk_sun4:link, table.Tbl_sun4 th.TblColHdrSrtSel_sun4 a.TblHdrImgLnk_sun4:visited {border-left-color:#C7C8CA;color:#336699;text-decoration:none;}
+table.Tbl_sun4 th.TblColHdrSrtSel_sun4 a.TblHdrImgLnk_sun4:hover {color:#003399;}
+table.Tbl_sun4 th.TblColHdrSrtSel_sun4 a.TblHdrLnk_sun4:link,table.Tbl_sun4  th.TblColHdrSrtSel_sun4 a.TblHdrLnk_sun4:visited {color:#000000;text-decoration:none;}
+table.Tbl_sun4 th.TblColHdrSel_sun4 a.TblHdrLnk_sun4:link,
+table.Tbl_sun4 th.TblColHdrSel_sun4 a.TblHdrLnk_sun4:visited {background:#f8f8f9 url(#{resource['ezcomp:column_hdr_gradient.gif']}) repeat-x left bottom;}
+table.Tbl_sun4 th.TblColHdrSel_sun4 a.TblHdrLnk_sun4:hover {background:#fdfefe url(#{resource['ezcomp:column_hdr_hov_gradient.gif']}) repeat-x left bottom;}
+table.Tbl_sun4 th.TblColHdrSrtSel_sun4 a.TblHdrImgLnk_sun4:hover {background-color:#f8f8f9; background-image:url(#{resource['ezcomp:column_hdr_sort_hov_gradient.gif']});}
+table.Tbl_sun4 th.TblColHdrSrtSel_sun4 a.TblHdrImgLnk_sun4:hover {background-repeat:repeat-x;background-position:left bottom;}
+table.Tbl_sun4 th.TblColHdrSrtSel_sun4 a.TblHdrLnk_sun4:hover {background-color:#f8f8f9; background-image:url(#{resource['ezcomp:column_hdr_sort_hov_gradient.gif']});}
+table.Tbl_sun4 th.TblColHdrSrtSel_sun4 a.TblHdrLnk_sun4:hover {background-repeat:repeat-x;background-position:left bottom;}
+table.Tbl_sun4 th.TblColHdrSrtSel_sun4 a.TblHdrImgLnk_sun4:link, th.TblColHdrSrtSel_sun4 a.TblHdrImgLnk_sun4:visited {background:none;}
+table.Tbl_sun4 th.TblColHdrSrtSel_sun4 a.TblHdrLnk_sun4:link, th.TblColHdrSrtSel_sun4 a.TblHdrLnk_sun4:visited {background:none;}
+/* Selection Column - Cells */
+table.Tbl_sun4 td.TblTdSel_sun4 {background-color:#FFFFFF;}
+table.Tbl_sun4 td.TblTdSrtSel_sun4 {background-color:#e5e9ed;}
+/* Regular Column Headers */
+table.Tbl_sun4 th.TblColHdr_sun4 {border-color:#81939B;background-color:#FFFFFF;}
+table.Tbl_sun4 .TblHdrTxt_sun4 {color:#000000;text-decoration:none;background:#f8f8f9 url(#{resource['ezcomp:column_hdr_gradient.gif']}) repeat-x left bottom;}
+table.Tbl_sun4 a.TblHdrLnk_sun4:link, table.Tbl_sun4 a.TblHdrLnk_sun4:visited {background-color:#f8f8f9;background-position:left bottom;color:#000000;text-decoration:none; background-image:url(#{resource['ezcomp:column_hdr_gradient.gif']});}
+table.Tbl_sun4 a.TblHdrLnk_sun4:link, table.Tbl_sun4 a.TblHdrLnk_sun4:visited {background-repeat:repeat-x;background-position:left bottom;}
+table.Tbl_sun4 a.TblHdrLnk_sun4:hover {color:#000000;text-decoration:underline;background-color:#fdfefe; background-image:url(#{resource['ezcomp:column_hdr_hov_gradient.gif']});}
+table.Tbl_sun4 a.TblHdrLnk_sun4:hover {background-repeat:repeat-x;background-position:left bottom;}
+table.Tbl_sun4 a.TblHdrImgLnk_sun4:link, table.Tbl_sun4 a.TblHdrImgLnk_sun4:visited {background-color:#f8f8f9;color:#336699;text-decoration:none;border-left-color:#DBE0E3; background-image:url(#{resource['ezcomp:column_hdr_gradient.gif']});}
+table.Tbl_sun4 a.TblHdrImgLnk_sun4:link, table.Tbl_sun4 a.TblHdrImgLnk_sun4:visited {background-repeat:repeat-x;background-position:left bottom;}
+table.Tbl_sun4 a.TblHdrImgLnk_sun4:hover {color:#336699; background-image:url(#{resource['ezcomp:column_hdr_hov_gradient.gif']});}
+table.Tbl_sun4 a.TblHdrImgLnk_sun4:hover {background-repeat:repeat-x;background-position:left bottom;}
+table.TblHdrTbl_sun4 {background:none;}
+table.TblHdrTbl_sun4 td {background:none;}
+/* Current Sort Column */
+table.Tbl_sun4 th.TblColHdrSrt_sun4 {
+	border-color:#81939B;
+  background:#f8f8f9  url(#{resource['ezcomp:column_hdr_sort_gradient.gif']}) left bottom repeat-x; 	
+}
+table.Tbl_sun4 th.TblColHdrSrt_sun4 a.TblHdrLnk_sun4:link, table.Tbl_sun4 th.TblColHdrSrt_sun4 a.TblHdrLnk_sun4:visited {color:#000000;text-decoration:none;}
+table.Tbl_sun4 th.TblColHdrSrt_sun4 a.TblHdrImgLnk_sun4:link, table.Tbl_sun4 th.TblColHdrSrt_sun4 a.TblHdrImgLnk_sun4:visited {color:#336699;border-left-color:#C7C8CA;text-decoration:none;}
+table.Tbl_sun4 th.TblColHdrSrt_sun4 a.TblHdrLnk_sun4:hover {
+	color:#000000;
+	text-decoration:underline;
+	background-color:#f8f8f9;
+  background-image:url(#{resource['ezcomp:column_hdr_sort_hov_gradient.gif']});
+	background-position:left bottom;
+	background-repeat:repeat-x;
+}
+table.Tbl_sun4 th.TblColHdrSrt_sun4 a.TblHdrImgLnk_sun4:hover {
+	color:#003399;
+	background-color:#f8f8f9;
+  background-image:url(#{resource['ezcomp:column_hdr_sort_hov_gradient.gif']});
+	background-repeat:repeat-x;
+	background-position:left bottom;
+}
+
+table.Tbl_sun4 span.TblColHdrSrtDis_sun4 {
+	color:#000000;
+	text-decoration:none;
+	border-left-color:#C7C8CA;
+	background:none;
+}
+table.Tbl_sun4 span.TblColHdrSelDis_sun4 {
+	background-color:#f8f8f9;
+	color:#000000;
+	text-decoration:none;
+	border-left-color:#DBE0E3;
+  background-image:url(#{resource['ezcomp:column_hdr_gradient.gif']});
+	background-repeat:repeat-x;
+	background-position:left bottom;
+}
+table.Tbl_sun4 th.TblColHdrSrt_sun4 table.TblHdrTbl_sun4 {background:none;}
+table.Tbl_sun4 th.TblColHdrSrt_sun4 a.TblHdrLnk_sun4:link, table.Tbl_sun4 th.TblColHdrSrt_sun4 a.TblHdrLnk_sun4:visited {background:none;}
+table.Tbl_sun4 th.TblColHdrSrt_sun4 a.TblHdrImgLnk_sun4:link, table.Tbl_sun4 th.TblColHdrSrt_sun4 a.TblHdrImgLnk_sun4:visited {background:none;border-left-color:#C7C8CA;}
+/* Multi-Column Headers */ 
+table.Tbl_sun4 th.TblMultColHdr_sun4 {border-left-color:#81939B;border-bottom-color:#81939B;background-color:#fff;}
+.TblMultHdrTxt_sun4 {color:#000000;}
+table.Tbl_sun4 th.TblMultHdr_sun4 {background-color:#fff;border-top-color:#81939B;border-left-color:#81939B;}
+table.Tbl_sun4 th.TblMultColHdr_sun4 a.TblHdrLnk_sun4:link, table.Tbl_sun4 th.TblMultColHdr_sun4 a.TblHdrLnk_sun4:visited {color:#000000;text-decoration:none;}
+table.Tbl_sun4 th.TblMultColHdr_sun4 a.TblHdrLnk_sun4:hover {text-decoration:underline;}
+table.Tbl_sun4 th.TblMultColHdrSrt_sun4 {border-left-color:#CAD0D2;border-bottom-color:#81939B;background-color:#E2E4E9;background-image:url(#{resource['ezcomp:mult_column_hdr_sort_gradient.gif']});background-repeat:repeat-x}
+table.Tbl_sun4 th.TblMultColHdrSrt_sun4 a.TblHdrLnk_sun4:link, table.Tbl_sun4 th.TblMultColHdrSrt_sun4 a.TblHdrLnk_sun4:visited {background:none;color:#000000;text-decoration:none;}
+table.Tbl_sun4 th.TblMultColHdrSrt_sun4 a.TblHdrLnk_sun4:hover {background-color:#f8f8f9; color:#000000;text-decoration:underline; background-image:url(#{resource['ezcomp:column_hdr_sort_hov_gradient.gif']});}
+table.Tbl_sun4 th.TblMultColHdrSrt_sun4 a.TblHdrImgLnk_sun4:link, table.Tbl_sun4 th.TblMultColHdrSrt_sun4 a.TblHdrImgLnk_sun4:visited {background:none;color:#336699;text-decoration:none;border-left-color:#C7C8CA;}
+table.Tbl_sun4 th.TblMultColHdrSrt_sun4 a.TblHdrImgLnk_sun4:hover {background-color:#f8f8f9;color:#003399; background-image:url(#{resource['ezcomp:column_hdr_sort_hov_gradient.gif']});}
+/* Sorted Cells */
+table.Tbl_sun4 .TblTdSrt_sun4 {background-color:#e5e9ed;}
+table.Tbl_sun4 .TblColFtrSpc_sun4 {border-bottom-color:#CAD0D2;border-top-color:#E5E9ED;background-color:#fff;} 
+/* Spacer Colums */
+table.Tbl_sun4 th.TblTdSpc_sun4 {border-color:#81939B;;background-color:#fff;}
+/* Alarm Cells */
+table.Tbl_sun4 .TblTdAlm_sun4, table.Tbl_sun4 .TblTdSrtAlm_sun4 {background-color:#FFFEE7;}
+/*Other Table Content Styles*/
+table.Tbl_sun4 a:link, table.Tbl_sun4 a:visited {color:#003399;text-decoration:none;}
+table.Tbl_sun4 a:hover {color:#003399;text-decoration:underline;}
+.TblMsgTxt_sun4 {color:#000000;}
+/* Mouseover and Row Selection Styles */
+table.Tbl_sun4 tr.TblSelRow_sun4 td, table.Tbl_sun4 tr.TblSelRow_sun4 th {background-color:#90B7D0;}
+/*Table Sub-Grouping */
+table.Tbl_sun4 .TblGrpRow_sun4 {
+	border-left-color:#CAD0D2;
+   	border-bottom-color:#CAD0D2;
+   	border-top-color:#E5E9ED;
+  background:#fff url(#{resource['ezcomp:grouprow_gradient.gif']}) left bottom repeat-x; 
+}	
+.TblGrpTxt_sun4 {color:#000000;text-decoration:none;}
+.TblGrpTxt_sun4 {color:#000000;margin:0px 3px;}
+table.Tbl_sun4 .TblGrpMsgTxt_sun4 {color:#000000;}
+/* Table Footers */
+/* Table Column-level Footer */
+table.Tbl_sun4 .TblColFtr_sun4 {border-bottom-color:#CAD0D2;border-top-color:#E5E9ED;background-color:#fff;} 
+table.Tbl_sun4 .TblColFtrSrt_sun4 {background-color:#e5e9ed;border-bottom-color:#CAD0D2;border-top-color:#E5E9ED;}
+.TblColFtrTxt_sun4 {color:#000000;}
+/* Table Overall Footer */ 
+table.Tbl_sun4 td.TblFtrRow_sun4 {background-color:#E5E9ED;}
+table.Tbl_sun4 .TblFtrRowTxt_sun4 {color:#000000;}
+table.Tbl_sun4 .TblFtrLft_sun4 {color:#000000;}
+/*Table Group Column-Level Footer */
+table.Tbl_sun4 .TblGrpColFtr_sun4 {border-bottom-color:#CAD0D2;background-color:#fff;}
+table.Tbl_sun4 .TblGrpColFtrSrt_sun4 {border-bottom-color:#CAD0D2;background-color:#e5e9ed;}
+.TblGrpFtrRowTxt_sun4 {color:#000000;}
+/* Embedded Table Panels */
+table.Tbl_sun4 td.TblPnlTd_sun4 {background-color:#E5E9ED;}
+.TblPnlLytDiv_sun4 {border-top-color:#A3AAAC;}
+.TblPnlShd3Div_sun4 {}
+.TblPnlShd2Div_sun4 {}
+.TblPnlShd1Div_sun4 {
+	border-top-color:#4c4f53 ;
+	border-right-color:#76797C;
+	border-bottom-color:#8C8F91;
+	border-left-color:#76797C;
+}
+.TblPnlDiv_sun4 {
+	background-color:#FFFFFF;
+	border-top:1px solid #CBCCCD;
+}
+.TblPnlBtnDiv_sun4 {
+   border-top-color:#81939B;
+} 
+.TblPnlTtl_sun4 {color:#000000;}
+.TblCstFltMnu_sun4 {background-color:#90B7D0;color:#003399;border-right-color:#AEAFB0;border-bottom-color:#B9B9BA;}
+table.Tbl_sun4 div.TblPnlDiv_sun4 td {background:transparent;}
+.TblPnlCnt_sun4 {background:none;}
+.TblPnlHlpTxt_sun4 {
+  background:#DBE5ED url(#{resource['ezcomp:tipbackground.gif']}) top left repeat-x;
+   border-top-color:#758B9B;
+   border-right-color:#9CB6C7;
+   border-bottom-color:#CADDED;
+   border-left-color:#9CB6C7;
+} 
+/*---*/
+
+/* LIGHTWEIGHT TABLE DESIGN */
+table.TblLt_sun4 {background-color:#fff;color:#000000;}
+/* Table Caption/Title */
+table.TblLt_sun4 caption.TblTtlTxt_sun4 {color:#000000;background:none;}
+table.TblLt_sun4 caption.TblTtlTxt_sun4 span.TblTtlMsgSpn {color:#000000;}
+/* Action Bar */
+table.TblLt_sun4 td.TblActTd_sun4 {background-color:#E5E9ED;border-color:#e5e5e5;}
+table.TblLt_sun4 td.TblActTdLst_sun4 {background-color:#E5E9ED;border-color:#e5e5e5;}
+/* Selection Column - Headers */
+table.TblLt_sun4 th.TblColHdrSel_sun4 {border-top-color:#81939B; border-left-color:#81939B; border-bottom-color:#81939B; background-color:#FFFFFF;}
+table.TblLt_sun4 th.TblColHdrSrtSel_sun4 {background-color:#f8f8f9 ;border-top-color:#959aa5;border-left-color:#959aa5;border-bottom-color:#828da4; background-image:url(#{resource['ezcomp:lite_column_hdr_sort_gradient.gif']})}
+table.TblLt_sun4 th.TblColHdrSel_sun4 a.TblHdrLnk_sun4:link {background-color:#f8f8f9;background-image:url(#{resource['ezcomp:lite_column_hdr_gradient.gif']});background-position:left bottom}
+table.TblLt_sun4 th.TblColHdrSel_sun4 a.TblHdrLnk_sun4:visited {background-color:#f8f8f9;background-image:url(#{resource['ezcomp:lite_column_hdr_gradient.gif']});background-position:left bottom}
+table.TblLt_sun4 th.TblColHdrSel_sun4 a.TblHdrLnk_sun4:hover {background-color:#fdfefe; background-image:url(#{resource['ezcomp:lite_column_hdr_hov_gradient.gif']});background-position:left bottom}
+table.TblLt_sun4 th.TblColHdrSrtSel_sun4 a.TblHdrImgLnk_sun4:hover {background-color:#f1f3f7; background-image:url(#{resource['ezcomp:lite_column_hdr_sort_hov_gradient.gif']});background-position:left top}
+table.TblLt_sun4 th.TblColHdrSrtSel_sun4 a.TblHdrLnk_sun4:hover {background-color:#f1f3f7; background-image:url(#{resource['ezcomp:lite_column_hdr_sort_hov_gradient.gif']});background-position:left top}
+/* Regular Column Headers */
+table.TblLt_sun4 th.TblColHdr_sun4 {border-top-color:#81939B;border-left-color:#81939B;border-bottom-color:#81939B;background-color:#E6EBEF;}
+table.TblLt_sun4 table.TblHdrTbl_sun4 td {background:none;}
+table.TblLt_sun4 a.TblHdrLnk_sun4:link, table.TblLt_sun4 a.TblHdrLnk_sun4:visited {background-color:#f8f8f9;background-position:left bottom;color:#000000;text-decoration:none; background-image:url(#{resource['ezcomp:lite_column_hdr_gradient.gif']});background-position:left bottom;}
+table.TblLt_sun4 a.TblHdrLnk_sun4:hover {color:#000000;text-decoration:underline;background-color:#fdfefe; background-image:url(#{resource['ezcomp:lite_column_hdr_hov_gradient.gif']});background-position:left bottom;}
+table.TblLt_sun4 a.TblHdrImgLnk_sun4:link, table.TblLt_sun4 a.TblHdrImgLnk_sun4:visited {background-color:#f8f8f9;border-left-color:#DBE0E3;color:#336699;text-decoration:none; background-image:url(#{resource['ezcomp:lite_column_hdr_gradient.gif']});background-position:left bottom;}
+table.TblLt_sun4 a.TblHdrImgLnk_sun4:hover {background-color:#fdfefe; color:#336699; background-image:url(#{resource['ezcomp:lite_column_hdr_hov_gradient.gif']});background-position:left bottom;}
+table.TblLt_sun4 span.TblColHdrSelDis_sun4 {border-left-color:#DBE0E3;background-color:#f8f8f9;color:#000000;text-decoration:none; background-image:url(#{resource['ezcomp:lite_column_hdr_gradient.gif']});background-position:left bottom;}
+table.TblLt_sun4 .TblHdrTxt_sun4 {background-color:#f8f8f9;color:#000000;text-decoration:none;background-image:url(#{resource['ezcomp:lite_column_hdr_gradient.gif']});background-position:left bottom;}
+/* Current Sort Column */
+table.TblLt_sun4 th.TblColHdrSrt_sun4 {border-top-color:#81939B;border-left-color:#81939B;border-bottom-color:#81939B;background-color:#f8f8f9; background-image:url(#{resource['ezcomp:lite_column_hdr_sort_gradient.gif']})}
+table.TblLt_sun4 th.TblColHdrSrt_sun4 a.TblHdrLnk_sun4:hover {background-color:#f1f3f7; color:#000000;text-decoration:underline; background-image:url(#{resource['ezcomp:lite_column_hdr_sort_hov_gradient.gif']});}
+table.TblLt_sun4 th.TblColHdrSrt_sun4 a.TblHdrImgLnk_sun4:link, table.Tbl_sun4 th.TblColHdrSrt_sun4 a.TblHdrImgLnk_sun4:visited {border-left-color:#C7C8CA; color:#336699; text-decoration:none;}
+table.TblLt_sun4 th.TblColHdrSrt_sun4 a.TblHdrImgLnk_sun4:hover {background-color:#f1f3f7; color:#003399; background-image:url(#{resource['ezcomp:lite_column_hdr_sort_hov_gradient.gif']});}
+/* Multi-Column Headers */
+table.TblLt_sun4 th.TblMultColHdr_sun4 {border-left-color:#81939B;border-bottom-color:#81939B;background-color:#E6EBEF;}
+table.TblLt_sun4 th.TblMultHdr_sun4 {border-top-color:#81939B;border-left-color:#81939B;background-color:#E6EBEF;}
+table.TblLt_sun4 th.TblMultColHdrSrt_sun4 a.TblHdrLnk_sun4:hover {background-color:#f1f3f7;color:#000000;text-decoration:underline; background-image:url(#{resource['ezcomp:lite_column_hdr_sort_hov_gradient.gif']});}
+table.TblLt_sun4 th.TblMultColHdrSrt_sun4 a.TblHdrImgLnk_sun4:hover {background-color:#f1f3f7;color:#003399; background-image:url(#{resource['ezcomp:lite_column_hdr_sort_hov_gradient.gif']});}
+/*Table Sub-Grouping */
+table.TblLt_sun4 .TblGrpRow_sun4 {background-color:#FFFFFF;border-left-color:#CAD0D2;
+   	border-bottom-color:#CAD0D2;
+   	border-top-color:#E5E9ED;}
+/* Table Footers */ 
+table.TblLt_sun4 td.TblFtrRow_sun4 {background-color:#fff;}
+table.TblLt_sun4 .TblFtrRowTxt_sun4 {color:#5F6466;}
+table.TblLt_sun4 .TblColFtr_sun4 {border-bottom-color:#a8b2b6;border-top-color:#A9ADB5;background-color:#fff;} 
+table.TblLt_sun4 .TblColFtrSrt_sun4 {background-color:#e5e9ed;border-bottom-color:#a8b2b6;border-top-color:#A9ADB5;}
+table.TblLt_sun4 .TblColFtrSpc_sun4 {border-bottom-color:#a8b2b6; border-top-color:#A9ADB5; background-color:#fff;} 
+/*---*/
+
+/* TREE */
+.TreTtl_sun4 {
+	color:#000;
+}
+.Tree_sun4 {
+	background-color:#fff;
+}
+a.TreeLink_sun4:link, a.TreeLink_sun4:visited {
+	color:#003399;
+	text-decoration:none;
+}
+a.TreeLink_sun4:hover {
+	color:#003399;
+	text-decoration:underline;
+}
+a.TreeParentLink_sun4:link, a.TreeParentLink_sun4:visited {
+	color:#003399;
+	text-decoration:none;
+}
+a.TreeParentLink_sun4:hover {
+	color:#003399;
+	text-decoration:underline;
+}
+a.TreeSelLink_sun4:link, a.TreeSelLink_sun4:visited {
+	color:#000;
+	text-decoration:none;
+}
+a.TreeSelLink_sun4:hover {
+	color:#000;
+	text-decoration:underline;
+}
+.TreeRootRow_sun4, .TreeRootRowHeader_sun4 {
+	background-color:#e5e9ed;
+}
+.TreeSelRow_sun4, .TreeRootSelRow  {
+	background-color:#90b7d0;
+}
+.TreeSelText_sun4 {
+	color:#000;
+}
+.TreeContent_sun4 a:link, .TreeContent_sun4 a:visited {
+	color:#000;
+	text-decoration:none;
+}
+/*---*/
+
+/* VERSION DIALOG */
+.VrsBdy_sun4, .VrsMgn_sun4, .VrsBtnBdy_sun4 {
+	background-color:#D2DBE4;
+}
+.VrsHdrTxt_sun4, .VrsTxt_sun4 {
+	color:#000000;
+}
+.VrsMstBdy_sun4 {
+  background:#FFFFFF url(#{resource['ezcomp:version_brand.jpg']}) no-repeat;
+}
+/*---*/
+/* WIZARD */
+.WizTtlBar_sun4 {
+  background:#5B87A5 url(#{resource['ezcomp:sec-masthead-background.jpg']}) top left repeat-x;
+	border-color:#000000;
+	color:#FFFFFF;
+}
+.WizBar_sun4 {
+        background-color:#E5E9ED;
+        border-bottom-color:#80929B;
+}
+.WizBdy_sun4 {
+	border-left-color:#98A0A5;
+}
+.WizBtm_sun4 {
+	background-color:#E5E9ED;
+	border-top-color:#98A0A5;
+}.WizHlpDiv_sun4 {
+  background:#E5E9ED url(#{resource['ezcomp:left-pane-background.gif']}) left top repeat-x;
+}
+.WizSubTtlDiv_sun4, .WizStpsPnTtlDiv_sun4, .WizTtl_sun4 .TtlLin_sun4 {}
+a.WizStpLnk_sun4 {
+	color:#003399;
+	text-decoration:none;
+}
+a.WizStpLnk_sun4:hover {
+	text-decoration:underline;
+}
+/*---*/
diff --git a/jsf-demo/sandbox/ezcomp03/src/main/webapp/resources/ezcomp/commontaskssection.css b/jsf-demo/sandbox/ezcomp03/src/main/webapp/resources/ezcomp/commontaskssection.css
new file mode 100644
index 0000000..f6f17dc
--- /dev/null
+++ b/jsf-demo/sandbox/ezcomp03/src/main/webapp/resources/ezcomp/commontaskssection.css
@@ -0,0 +1,262 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+/* LAYOUT */
+.commonTaskSection_4_sun4 {
+	width: 100%;
+}
+.commonTaskSection_4_sun4 .TskScnTpBx_sun4 .header_sun4 {
+	margin: 17px 0px 0px 20px;
+}
+.commonTaskSection_4_sun4 .TskScnTpBx_sun4 .help_sun4 {
+	margin: 3px 0 23px 21px;
+}
+.commonTaskGroup_4_sun4 {
+	margin:0 0 20px 20px;
+}
+.commonTaskSection_4_sun4 .header_sun4 {
+	padding-bottom: 5px;
+	display: block;
+}
+.commonTask_4_sun4 {
+	margin:0 22px 20px;
+}
+.commonTaskGroup_4_sun4 .commonTask_4_sun4 {
+	margin:0 0 2px 0;
+}
+.commonTask_4_sun4 .left_sun4 {
+	border-top-style:solid;
+	border-top-width:1px;
+	border-bottom-style:solid;
+	border-bottom-width:1px;
+	border-left-style:solid;
+	border-left-width:1px;
+}
+.commonTask_4_sun4 .center_sun4 {
+	border-top-style:solid;
+	border-top-width:1px;
+	border-bottom-style:solid;
+	border-bottom-width:1px;
+}
+.commonTask_4_sun4 .right_sun4 {
+	border-top-style:solid;
+	border-top-width:1px;
+	border-bottom-style:solid;
+	border-bottom-width:1px;
+	border-right-style:solid;
+	border-right-width:1px;
+}
+.commonTask_4_sun4 a.TskScnTxtBg_sun4,.commonTask_4_sun4  a.TskScnTxtBgOvr_sun4 {
+	display: block;
+	position: relative;
+	width: 100%;
+	min-height:21px;
+}
+.commonTask_4_sun4 .infoPanel_sun4 {
+	border-style:solid;
+	border-width:1px;
+	position:absolute;
+	height: 20em;
+	width: 10em;
+	z-index:2;
+}
+.commonTask_4_sun4 .infoPanel_sun4 .closeButton_sun4 {
+	float: right;
+}
+.commonTask_4_sun4 .infoPanel_sun4 .info_sun4 {
+	padding: 0 18px 0 0;
+	margin: 21px 3px 15px 12px;
+	height:14.2em;
+	overflow:auto;
+}
+.commonTask_4_sun4 .infoPanel_sun4 .more_sun4 {
+	height:1.5em;
+	margin:5px 5px 0 5px;
+	border-top-style:solid;
+	border-top-width:1px;
+	padding:2px 0 0 5px;
+	overflow:hidden;
+}
+.commonTask_4_sun4 .bullet_sun4 {
+	margin-right:.4em;
+}
+.commonTask_4_sun4 a.TskScnTxtBg_sun4, .commonTask_4_sun4 a.TskScnTxtBgOvr_sun4 {
+	border-left-style:solid;
+	border-left-width:1px;
+}
+.commonTask_4_sun4 .TskScnTskPdng_sun4 {
+	padding: 0px 7px;
+	display: block;
+	padding-top: 4px;
+	padding-bottom: 3px;
+}
+.commonTask_4_sun4 .TskScnTskLftBtm_sun4, .commonTask_4_sun4 .TskScnTskLftTp_sun4, .commonTask_4_sun4 .TskScnTskRghtBtm_sun4, .commonTask_4_sun4 .TskScnTskRghtTp_sun4 {
+	position: absolute;
+	width: 8px;
+	height: 11px;
+	cursor: pointer;
+	background-position: top left;
+	background-repeat: no-repeat;
+}
+.commonTask_4_sun4 .TskScnTskLftBtm_sun4 {
+	bottom: -1px;
+	left: -1px;
+}     
+.commonTask_4_sun4 .TskScnTskLftTp_sun4 {
+	top: -1px;
+	left: -1px;
+}             
+.commonTask_4_sun4 .TskScnTskRghtBtm_sun4 {
+	bottom: -1px;
+	right: 0px;
+	z-index:1;
+}     
+.commonTask_4_sun4 .TskScnTskRghtTp_sun4 {
+	position: absolute;
+	top: -1px;
+	right: 0px;
+	z-index:1;
+} 
+.commonTask_4_sun4 .TskScnTskRghtBrdr_sun4 {
+	display: block;
+	position: absolute;
+	height: 100%;
+	right: 0px;
+	width: 1px;
+	cursor: pointer;
+}
+/*---*/
+
+/* COLOR AND MEDIA */
+.commonTaskbgColor_sun4 {
+	background:#B6C6D6
+}
+.commonTaskSection_4_sun4 {
+  background:#B6C6D6 url(#{resource['ezcomp:bkgrnd.gif']}) right top repeat-x;
+}
+.commonTaskSection_4_sun4 .TskScnTpBx_sun4 {
+  background:url(#{resource['ezcomp:s-curve.gif']}) bottom left repeat-x;
+}
+.commonTaskSection_4_sun4 .header_sun4, .commonTaskSection_4_sun4 .help_sun4, .commonTaskGroup_4_sun4 .header_sun4 {
+	color: #4B5E6A;
+}
+.commonTask_4_sun4 .left_sun4 {
+	border-top-color:#AEB3B8;
+	border-bottom-color:#AEB3B8;
+	border-left-color:#AEB3B8;
+}
+.commonTask_4_sun4 .center_sun4 {
+	border-top-color:#AABCC8;
+	border-bottom-color:#AABCC8;
+}
+.commonTask_4_sun4 .right_sun4 {
+	background-color: #99B3C0;
+	border-top-color:#AABCC8;
+	border-bottom-color:#AABCC8;
+	border-right-color:#AABCC8;
+}
+.commonTask_4_sun4 .background_sun4 {
+  background: #9AB2BF url(#{resource['ezcomp:gradation-grey.gif']}) right top repeat-x;
+}
+.commonTask_4_sun4 a.TskScnTxtBg_sun4 {
+	border-left-color:#AABCC8;
+}
+.commonTask_4_sun4 a.TskScnTxtBg_sun4:link,.commonTask_4_sun4  a.TskScnTxtBg_sun4:visited {
+  background: #E2E7EA url(#{resource['ezcomp:grad1.gif']}) right top repeat-x;
+	color:#333333;
+}
+.commonTask_4_sun4 a.TskScnTxtBg_sun4:hover {
+  background:#4581B3 url(#{resource['ezcomp:grad2.gif']}) right top repeat-x;
+	color:#FFF;
+}
+.commonTask_4_sun4 .infoPanel_sun4 {
+	border-color: #AABCC8;
+	background-color: #F4F6F7;
+}
+.commonTask_4_sun4 .infoPanel_sun4 .more_sun4 {
+	border-top-color:#CFD7D9;
+}
+.commonTask_4_sun4 .infoPanel_sun4 .more_sun4 a:link, .commonTask_4_sun4 .infoPanel_sun4 .more_sun4 a:visited, .commonTask_4_sun4 .infoPanel_sun4 .more_sun4 a:hover {
+	color:#003399;
+}
+.commonTask_4_sun4 .infoPanel_sun4 .more_sun4 a:link, .commonTask_4_sun4 .infoPanel_sun4 .more_sun4 a:visited, .commonTask_4_sun4 a.TskScnTxtBg_sun4, .commonTask_4_sun4 a.TskScnTxtBgOvr_sun4 {
+	text-decoration:none;
+}
+.commonTask_4_sun4 .infoPanel_sun4 .more_sun4 a:hover {
+	text-decoration:underline;
+}
+.commonTask_4_sun4 .infoPanel_sun4 .header_sun4 {
+	color:#666666;
+}
+.commonTask_4_sun4 .TskScnTskLftBtm_sun4 {
+  background-image: url(#{resource['ezcomp:leftBottom.gif']});
+}     
+.commonTask_4_sun4 .TskScnTskLftTp_sun4 {
+  background-image: url(#{resource['ezcomp:leftTop.gif']});
+}             
+.commonTask_4_sun4 .TskScnTskRghtBtm_sun4 {
+  background-image: url(#{resource['ezcomp:rightBottom.gif']});
+}     
+.commonTask_4_sun4 .TskScnTskRghtTp_sun4 {
+  background-image: url(#{resource['ezcomp:rightTop.gif']});
+} 
+.commonTask_4_sun4 .TskScnTskRghtBrdr_sun4 {
+	background-color: #AABCC8;
+}
+/*---*/
+
+/* TYPOGRAPHY */
+.commonTaskSection_4_sun4 .header_sun4 {
+	font-size:1.8em;
+}
+.commonTaskGroup_4_sun4 .header_sun4 {
+	font-size: 1.3em;
+}
+.commonTask_4_sun4 .infoPanel_sun4 .header_sun4, .commonTaskSection_4_sun4 .help_sun4 {
+	font-size:1.2em;
+}
+.commonTask_4_sun4 .TskScnTskPdng_sun4, .commonTask_4_sun4 .infoPanel_sun4 .content_sun4,.commonTask_4_sun4 .infoPanel_sun4 .more_sun4 a:link,
+.commonTask_4_sun4 .infoPanel_sun4 .more_sun4 a:visited, .commonTask_4_sun4 .infoPanel_sun4 .more_sun4 a:hover {
+	font-size: 1.1em;
+} 
+.commonTaskSection_4_sun4 .header_sun4, .commonTaskGroup_4_sun4 .header_sun4, .commonTask_4_sun4 .infoPanel_sun4 .header_sun4 {
+	font-weight: bold;
+}
+
diff --git a/jsf-demo/sandbox/ezcomp03/src/main/webapp/resources/ezcomp/css_master.css b/jsf-demo/sandbox/ezcomp03/src/main/webapp/resources/ezcomp/css_master.css
new file mode 100644
index 0000000..f85bed2
--- /dev/null
+++ b/jsf-demo/sandbox/ezcomp03/src/main/webapp/resources/ezcomp/css_master.css
@@ -0,0 +1,47 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+ at import url(#{resource['this:layout.css']});
+ at import url(#{resource['this:typography.css']});
+ at import url(#{resource['this:colorAndMedia.css']});
+
+ at import url(#{resource['this:table2.css']});
+ at import url(#{resource['this:commontaskssection.css']});
+ at import url(#{resource['this:progressBar.css']});
diff --git a/jsf-demo/sandbox/ezcomp03/src/main/webapp/resources/ezcomp/css_ns6up.css b/jsf-demo/sandbox/ezcomp03/src/main/webapp/resources/ezcomp/css_ns6up.css
new file mode 100644
index 0000000..5bb72ec
--- /dev/null
+++ b/jsf-demo/sandbox/ezcomp03/src/main/webapp/resources/ezcomp/css_ns6up.css
@@ -0,0 +1,863 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+/* GLOBAL STYLES */
+BODY, TH, TD, P, DIV, SPAN, INPUT, SELECT, TEXTAREA, FORM, B, STRONG, I, U, H1, H2, H3, H4, H5, H6, 
+ DL, DD, DT, UL, LI, OL, OPTION, OPTGROUP, A {font-family:sans-serif;font-size:12px}
+H1 {font-family:sans-serif;font-weight:bold;font-size:18px}
+H2 {font-family:sans-serif;font-weight:bold;font-size:15px}
+H3, H4 {font-family:sans-serif;font-weight:bold;font-size:12px}
+H5, H6 {font-family:sans-serif;font-weight:bold;font-size:11px}
+.DefBdy {color:#333;background-color:#FFF;margin:0px}
+a:link {color:#003399;text-decoration:none}
+a:visited {color:#003399;text-decoration:none}
+a:hover {color:#003399;text-decoration:underline}
+.ConMgn {margin:0px 10px}
+
+
+/* ADD-REMOVE-IDIOM */
+.AddRmvLbl {color:#5F6466;font-weight:bold;padding-bottom:3px}
+.AddRmvLbl2 {color:#333;padding-bottom:3px}
+table.AddRmvBtnTbl .Btn1 {width:100%}
+table.AddRmvBtnTbl .Btn1Hov {width:100%}
+table.AddRmvBtnTbl .Btn1Dis {width:100%}
+table.AddRmvBtnTbl .Btn2 {width:100%}
+table.AddRmvBtnTbl .Btn2Hov {width:100%}
+table.AddRmvBtnTbl .Btn2Dis {width:100%}
+.AddRmvVrtFst {margin:5px 0px 10px 0px;min-width:90px}
+.AddRmvVrtWin {margin:5px 0px 10px 5px;min-width:90px}
+.AddRmvVrtBwn {margin:5px 0px 10px 10px;min-width:90px}
+.AddRmvHrzWin {margin-top:3px;min-width:100px}
+.AddRmvHrzBwn {margin-top:8px;min-width:100px}
+
+
+/* ALERTS - FULL PAGE */
+.FulAlrtHdrDiv {margin:7px 10px 5px 37px}
+.FulAlrtHdrTxt {color:#000;font-weight:bold} 
+.FulAlrtMsgDiv {margin:5px 10px 0px 37px}
+.FulAlrtFrmDiv {margin:10px 10px 5px 37px}
+.FulAlrtMsgTxt {color:#000}
+
+
+/* ALERTS - INLINE */
+.AlrtErrTxt {color:#000;font-weight:bold;vertical-align:middle;font-size:14px;text-align:center}
+.AlrtWrnTxt {color:#000;font-weight:bold;vertical-align:middle;font-size:14px;text-align:center}
+.AlrtInfTxt {color:#000;font-weight:bold;vertical-align:middle;font-size:14px;text-align:center}
+.AlrtLnkDiv {padding-top:3px;text-align:left}
+a.AlrtLnk:link, a.AlrtLnk:visited {color:#003399;text-decoration:none}
+a.AlrtLnk:hover {color:#003399;text-decoration:underline}
+/* new styles */
+.AlrtTbl {background-color:#FFFFCC;border:solid 1px #e1e1a7;padding:7px 15px}
+.AlrtErrTxt img {vertical-align:text-bottom;margin-right:6px}
+.AlrtWrnTxt img {vertical-align:text-bottom;margin-right:6px}
+.AlrtInfTxt img {vertical-align:middle;margin-right:6px}
+.AlrtMsgTxt {padding-top:6px;color:#000;text-align:left;}
+.logErr .AlrtTbl {background-color:#FFFFCC;border:solid 1px #e1e1a7;padding:7px 15px;margin-left:15px;text-align:left}
+
+
+/* BREADCRUMBS */
+.BcmWhtDiv {background-color:#FFF;margin:10px 10px 0px 10px}
+.BcmGryDiv {background-color:#D2D9E1;margin:8px 10px 7px 10px}
+.BcmGryTbl {background-color:#D2D9E1}
+a.BcmLnk:link, a.BcmLnk:visited {color:#003399;text-decoration:none}
+a.BcmLnk:hover {color:#003399;text-decoration:underline}
+.BcmTxt {color:#000;font-weight:normal}
+.BcmSep {color:#666}
+
+
+/* BUTTONS */
+.Btn1 {background-image:url(#{resource['ezcomp:primary-enabled.gif']});background-color:#BAD7ED;color:#000;border-top:solid 1px #4982A3;border-left:solid 1px #266386;border-right:solid 1px #266386;border-bottom:solid 1px #026EA4}
+.Btn1Hov {background-image:url(#{resource['ezcomp:primary-roll.gif']});background-color:#C5E7FF;color:#000;border-top:solid 1px #499EC8;border-left:solid 1px #2686B6;border-right:solid 1px #2686B6;border-bottom:solid 1px #00192B}
+.Btn1Def {background-image:url(#{resource['ezcomp:primary-enabled.gif']});background-color:#BAD7ED;color:#000;border-top:solid 1px #4982A3;border-left:solid 1px #266386;border-right:solid 1px #266386;border-bottom:solid 1px #026EA4}
+.Btn1DefHov {background-image:url(#{resource['ezcomp:primary-roll.gif']});background-color:#C5E7FF;color:#000;border-top:solid 1px #499EC8;border-left:solid 1px #2686B6;border-right:solid 1px #2686B6;border-bottom:solid 1px #00192B}
+.Btn1Mni {background-image:url(#{resource['ezcomp:primary-mini-enabled.gif']});background-color:#BAD7ED;color:#000;border-top:solid 1px #4982A3;border-left:solid 1px #266386;border-right:solid 1px #266386;border-bottom:solid 1px #024368}
+.Btn1MniHov {background-image:url(#{resource['ezcomp:primary-mini-roll.gif']});background-color:#C5E7FF;color:#000;border-top:solid 1px #499EC8;border-left:solid 1px #2686B6;border-right:solid 1px #2686B6;border-bottom:solid 1px #026EA4}
+.Btn2 {background-image:url(#{resource['ezcomp:secondary-enabled.gif']});background-color:#D9E6EC;color:#000;border-top:solid 1px #6F787F;border-left:solid 1px #4E555A;border-right:solid 1px #4E555A;border-bottom:solid 1px #2D3235}
+.Btn2Hov {background-image:url(#{resource['ezcomp:secondary-roll.gif']});background-color:#EAF9FF;color:#000;border-top:solid 1px #6F97B2;border-left:solid 1px #4E7C9C;border-right:solid 1px #4E7C9C;border-bottom:solid 1px #2D6086}
+.Btn2Mni {background-image:url(#{resource['ezcomp:secondary-mini-enabled.gif']});background-color:#D9E6EC;color:#000;border-top:solid 1px #6F787F;border-left:solid 1px #4E555A;border-right:solid 1px #4E555A;border-bottom:solid 1px #2D3235}
+.Btn2MniHov {background-image:url(#{resource['ezcomp:secondary-mini-roll.gif']});background-color:#EAF9FF;color:#000;border-top:solid 1px #6F97B2;border-left:solid 1px #4E7C9C;border-right:solid 1px #4E7C9C;border-bottom:solid 1px #2D6086}
+.Btn1Dis, .Btn1DefDis, .Btn2Dis, .Btn1MniDis, .Btn2MniDis {background-color:#E1E4E5;color:#848687;border:solid 1px #8C8E8F}
+/*<<<<<<<<<<<<<<<<<<<<------------>>>>>>>>>>>>>>>>>>>>*/
+.Btn1, .Btn1Hov, .Btn1Def, .Btn1DefHov, .Btn1Mni, .Btn1MniHov, .Btn2Mni, .Btn2MniHov, .Btn2, .Btn2Hov {background-repeat:repeat-x;background-position:center center}
+.Btn1, .Btn1Hov, .Btn1Dis, .Btn1Def, .Btn1DefHov, .Btn1DefDis, .Btn2, .Btn2Hov, .Btn2Dis {font-size:12px;padding:1px 8px}
+.Btn1Mni, .Btn1MniHov, .Btn1MniDis, .Btn2Mni, .Btn2MniHov, .Btn2MniDis {font-size:10px;padding:0px 5px}
+.Btn1Hov, .Btn1MniHov, .Btn1DefHov, .Btn2Hov, .Btn2MniHov {cursor:pointer}
+/* for arrays where buttons need to be of equal width */
+.BtnTbl .Btn1, .BtnTbl .Btn1Hov, .BtnTbl .Btn1Dis, .BtnTbl .Btn1Def, .BtnTbl .Btn1DefHov, .BtnTbl .Btn1DefDis, .BtnTbl .Btn2, .BtnTbl .Btn2Hov, .BtnTbl .Btn2Dis {width:100%;margin:0px}
+.BtnAryDiv {margin:5px 8px}
+/*revised borders for masthead  */
+.MstDiv .Btn1, .MstDiv .Btn1Mni, .MstDiv .Btn1Def {border-top:solid 1px #213F52;border-left:solid 1px #142A38;border-right:solid 1px #142A38;border-bottom:solid 1px #091821;vertical-align:middle}
+.MstDiv .Btn1Hov, .MstDiv .Btn1MniHov, .MstDiv .Btn1DefHov {border-top:solid 1px #213F52;border-left:solid 1px #142A38;border-right:solid 1px #142A38;border-bottom:solid 1px #091821;vertical-align:middle}
+.MstDiv .Btn2, .MstDiv .Btn2Mni {border-top:solid 1px #2D3C46;border-left:solid 1px #1C262D;border-right:solid 1px #1C262D;border-bottom:solid 1px #0E1418;vertical-align:middle}
+.MstDiv .Btn2Hov, .MstDiv .Btn2MniHov {border-top:solid 1px #2D3C46;border-left:solid 1px #1C262D;border-right:solid 1px #1C262D;border-bottom:solid 1px #0E1418;vertical-align:middle}
+/*---*/
+
+
+/* CHECKBOXES AND RADIO BUTTONS */
+.CbDis, .RbDis {background-color:#E1E4E5;color:#848687}
+.Cb {}
+.Rb {}
+/*---*/
+
+
+/* EDITABLE LIST */
+.EdtLstAddLblDiv {padding-top:2px}
+table.EdtLstAddTbl td {padding:5px 0px;white-space:nowrap;vertical-align:top}
+.EdtLstRmvLblDiv {padding-top:7px}
+table.EdtLstRmvTbl td {padding:5px 0px;white-space:nowrap;vertical-align:top}
+
+
+/* FILE CHOOSER */
+.ChoLblTxt {color:#5F6466;font-weight:bold}
+.ChoSrvTxt {color:#333}
+
+
+/* HELP WINDOW */
+.HlpStpTab {margin:0px 0px 5px 0px;background:#FFF;border-top:#fff 1px solid}
+.HlpBtnDiv {margin:5px 10px 4px;vertical-align:middle}
+.HlpTtlDiv {margin:15px 0px 0px 10px}
+.HlpSchDiv {margin:5px 5px 5px 10px}
+.HlpRltDiv {margin-top:6px}
+.HlpIdxDiv {margin:5px 5px 5px 10px}
+body.HlpBdy {background-color:#FFF;color:#333;margin:10px}
+body.HlpBdy h1 {font-family:sans-serif;margin-bottom:-3px;font-weight:bold;font-size:16px}
+body.HlpBdy h2 {font-family:sans-serif;margin-bottom:-5px;font-weight:bold;font-size:14px}
+body.HlpBdy h3 {font-family:sans-serif;margin-bottom:-5px;font-weight:bold;font-size:13px}
+body.HlpBdy h4 {font-family:sans-serif;margin-bottom:-5px;font-weight:bold;font-size:12px}
+body.HlpBdy h5, H6 {font-family:sans-serif;margin-bottom:-5px;font-weight:bold;font-size:11px}
+body.HlpBdy a:link {color:#003399;text-decoration:underline}
+body.HlpBdy a:visited {color:#336699;text-decoration:underline}
+body.HlpBdy a:hover {color:#003399;text-decoration:underline}
+/* New Styles */
+.HlpBtnNavBdy {border-top:#fff 1px solid;background-color:#D9E1E4;background-image:url(#{resource['ezcomp:help_btnnav_gradient.jpg']});background-repeat:repeat-x;background-position:left top;margin:0px}
+.HlpMstTtlBdy {background-color:#D9E1E4;margin:0px}
+/* Used for interim help solution */
+.help-body {background-color:#FFF;color:#000}
+.help-body a:link  {color:#003399;text-decoration:underline}
+.help-body a:active {color:#003399;text-decoration:underline}
+.help-body a:hover  {color:#336699;text-decoration:underline}
+.help-body a:visited {color:#336699;text-decoration:underline}
+.help-header-1 {color:#333;font-weight:bold;margin:8px 0px 3px;font-size:18px}
+.help-header-2 {color:#333;font-weight:bold;margin:8px 0px 3px;font-size:15px}
+.help-header-3 {color:#333;font-weight:bold;margin:8px 0px 3px}
+.help-table-header-row {background-color:#CCC}
+a.help-toc-link:link, a.help-toc-link:active {color:#003399;text-decoration:underline}
+a.help-toc-link:hover, a.help-toc-link:visited {color:#336699;text-decoration:underline}
+a.help-return-link:link, a.help-return-link:active {color:#003399;text-decoration:underline}
+a.help-return-link:hover, a.help-return-link:visited {color:#336699;text-decoration:underline}
+
+
+/* INLINE HELP  */
+.HlpPgeTxt {color:#333}
+.HlpFldTxt {font-size:11px;color:#333;padding-top:2px}
+a.HlpPgeLnk:link, a.HlpPgeLnk:visited {color:#003399;text-decoration:none}
+a.HlpPgeLnk:hover {color:#003399;text-decoration:underline}
+a.HlpFldLnk:link, a.HlpFldLnk:visited {color:#003399;text-decoration:none;font-size:11px}
+a.HlpFldLnk:hover {color:#003399;text-decoration:underline;font-size:11px}
+
+
+/* LABELS */
+.LblLev1Txt {color:#5F6466;font-weight:bold;font-size:16px}
+.LblLev2Txt {color:#5F6466;font-weight:bold}
+.LblLev3Txt {color:#333}
+.LblRqdDiv {color:#333}
+
+
+/* LEFT PANE HELP */
+.LftHlpMst {position:fixed;width:100%;height:55px;background:#FFF}
+.LftHlpHlp {position:fixed;left:0px;right:70%;top:55px;bottom:0px;background:#F0F1F3;background-image:url(#{resource['ezcomp:left_pane_grad.jpg']});background-repeat:repeat-x;background-position:left top;color:#333;overflow:auto}
+.LftHlpBdy {position:fixed;left:30%;right:0px;top:55px;bottom:0px;background-color:#FFF;color:#333;border-left:#CCC 1px solid;overflow:auto}
+.LftHlpDiv {margin:15px 10px 5px}
+.LftHlpTxt {color:#333}
+
+
+/* LISTS */
+/* Regular List */
+.Lst {border-bottom-color:#666;border-right-color:#666}
+.Lst, .LstOpt, .LstOptSel, .LstOptGrp {color:#333}
+.LstOptSep, .LstOptDis {color:#848687}
+/* Contextual Selector for Disabled Appearance */
+.LstDis {border-bottom-color:#666;border-right-color:#666}
+.LstDis, .LstDis option, .LstDis .LstOptGrp {background-color:#E1E4E5;color:#848687}
+/* Monospace Version */
+.LstMno {border-bottom-color:#666;border-right-color:#666}
+.LstMno, .LstMno .LstOptGrp {color:#333}
+/* Contextual Selector for Disabled Monospace Version */
+.LstMnoDis, .LstMnoDis option, .LstMnoDis .LstOptGrp {background-color:#E1E4E5;color:#848687}
+/*<<<<<<<<<<<<<<<<<<<<------------>>>>>>>>>>>>>>>>>>>>*/
+/* Regular List */
+.LstOptGrp {font-weight:normal;font-style:normal}
+/* Contextual Selector for Disabled Appearance */
+.LstDis .LstOptGrp {font-weight:normal;font-style:normal}
+/* Monospace Version */
+.LstMno, .LstMno option, .LstMno .LstOptGrp {font-family:monospace}
+.LstMno .LstOptGrp {font-weight:normal;font-style:normal}
+/* Contextual Selector for Disabled Monospace Version */
+.LstMnoDis, .LstMnoDis option, .LstMnoDis .LstOptGrp  {font-family:monospace}
+.LstMnoDis .LstOptGrp {font-weight:normal;font-style:normal}
+/*---*/
+
+
+/* LOCKHART LAUNCH PAGE */
+.LncMgn {margin:0px 10px 10px 10px}
+.LncTbl {background-color:#FFF;margin-top:5px}
+.LncCbDiv {padding:0px 3px 5px 0px}
+.LncHdr {font-weight:normal;color:#7F8391;font-size:18px}
+.LncHdrTd {padding:15px 5px 2px 0px;border-bottom:solid 1px #7F8391}
+.LncAppBox {padding:6px 8px 0px 0px}
+.LncAppTd {}
+.LncApp {}
+.LncTxt {color:#333;padding:0px 0px 3px 2px}
+a.LncLnk:link, a.LncLnk:visited {color:#003399;text-decoration:none}
+a.LncLnk:hover {color:#003399;text-decoration:underline}
+
+
+/* LOCKHART LOGIN */
+.logLblSvrNam {margin:0px 0px 5px 15px}
+.logTxtSvrNam {margin:0px 0px 5px 10px}
+.LogUsrLbl {margin:4px 0px 6px 15px}
+.LogUsrNam {margin:4px 0px 6px 10px}
+.logLbl {margin:0px 0px 3px 15px}
+.logInp {margin:0px 0px 3px 10px}
+.logLblLst {margin:0px 0px 10px 15px}
+.logInpLst {margin:0px 0px 10px 10px}
+.logBtn {margin:0px 0px 7px 10px}
+.logHlp {margin:0px 15px 7px 10px}
+.logErr {margin:5px 15px 5px 0px}
+.logCpy {width :720px;margin:5px 0px 50px;vertical-align:top}
+.logTxtCpy {font-size:10px;color:#fff;vertical-align:top}
+/* New Styles */
+.LogBdy {background-color:#4A5C69;margin:0px}
+.LogTopBnd {background-color:#4A5C69}
+.LogCntTd {background-color:#fff;padding-top:120px;}
+.LogBotBnd {background-color:#4A5C69}
+.LogMidBnd {background-color:#D4DCE1}
+
+
+/* MASTHEAD */
+span.MstLbl, span.MstTxt, span.MstUsrRole, span.MstAlmDwnTxt, span.MstAlmCrtTxt, span.MstAlmMajTxt, span.MstAlmMinTxt {color:#eef0f2}
+a.MstUsrLnk:link, a.MstUsrLnk:visited, a.MstAlmLnk:link, a.MstAlmLnk:visited, a.MstPrgLnk:link, a.MstPrgLnk:visited {color:#eef0f2;text-decoration:underline}
+a.MstUsrLnk:hover, a.MstAlmLnk:hover, a.MstPrgLnk:hover {text-decoration:underline}
+.MstBdy {background-color:#5A6C76}
+.MstTblEnd {background-color:#5A6C76;background-image:url(#{resource['ezcomp:masthead-sun-background.jpg']})}
+.MstDiv {background-color:#495B67;background-image:url(#{resource['ezcomp:masthead-background.jpg']})}
+.MstSecTbl {background-color:#4A5C6A;background-image:url(#{resource['ezcomp:sec-masthead-background.jpg']})}
+a.MstLnk:link, a.MstLnk:visited {background-color:#D9E6EC;color:#000;text-decoration:none;border-top:solid 1px #2D3C46;border-left:solid 1px #1C262D;border-right:solid 1px #1C262D;border-bottom:solid 1px #0E1418;background-image:url(#{resource['ezcomp:masthead_link_enabled.gif']})}
+a.MstLnk:hover {background-color:#EAF9FF;background-image:url(#{resource['ezcomp:masthead_link_roll.gif']})}
+a.MstLnkLft:link, a.MstLnkLft:visited {background-color:#D9E6EC;color:#000;text-decoration:none;border-top:solid 1px #2D3C46;border-left:solid 1px #1C262D;border-bottom:solid 1px #0E1418; background-image:url(#{resource['ezcomp:masthead_link_enabled.gif']})}
+a.MstLnkLft:hover {background-color:#EAF9FF;background-image:url(#{resource['ezcomp:masthead_link_roll.gif']})}
+a.MstLnkRt:link, a.MstLnkRt:visited {background-color:#D9E6EC;color:#000;text-decoration:none;border-top:solid 1px #2D3C46;border-left:solid 1px #1C262D;border-right:solid 1px #1C262D;border-bottom:solid 1px #0E1418;background-image:url(#{resource['ezcomp:masthead_link_enabled.gif']})}
+a.MstLnkRt:hover {background-color:#EAF9FF; background-image:url(#{resource['ezcomp:masthead_link_roll.gif']})}
+a.MstLnkCen:link, a.MstLnkCen:visited {background-color:#D9E6EC;color:#000;text-decoration:none;border-top:solid 1px #2D3C46;border-left:solid 1px #1C262D;border-bottom:solid 1px #0E1418; background-image:url(#{resource['ezcomp:masthead_link_enabled.gif']})}
+a.MstLnkCen:hover {background-color:#EAF9FF;background-image:url(#{resource['ezcomp:masthead_link_roll.gif']})}
+/*<<<<<<<<<<<<<<<<<<<<------------>>>>>>>>>>>>>>>>>>>>*/
+span.MstLbl, span.MstTxt, span.MstUsrRole {font-weight:normal}
+td.MstTdTtl {padding:0px 10px 0px 10px;vertical-align:top;white-space:nowrap}
+td.MstTdAlm {vertical-align:top;padding:7px 0px 3px}
+td.MstTdLogo {vertical-align:top;padding:6px 13px 8px 20px}
+div.MstDivTtl {padding-top:4px}
+div.MstDivSecTtl {padding:10px 10px 5px}
+div.MstDivUsr {padding-top:5px}
+div.MstTmeDiv, div.MstAlmDiv, div.MstStatDiv {padding:0px 15px 5px}
+div.MstStatDiv img {margin-top:-5px}
+a.MstLnk:link, a.MstLnk:visited {background-repeat:repeat-x;background-position:center center;padding:2px 10px 1px;text-transform:uppercase;font-size:10px;vertical-align:middle}
+a.MstLnk:hover {background-repeat:repeat-x;background-position:center center}
+.MstSpcImg {display:none}
+.MstBdy {margin:0px}
+.MstDiv {background-repeat:repeat-x;background-position:left top}
+.MstTblTop td {padding:6px 10px 4px}
+.MstTblTop img {vertical-align:middle}
+.MstTblEnd {background-repeat:repeat-x;background-position:left top;text-align:right;padding:1px 10px}
+.MstSecTbl {background-repeat:repeat-x;background-position:left top}
+a.MstLnkLft:link, a.MstLnkLft:visited {background-repeat:repeat-x;background-position:center center;padding:2px 10px 1px;text-transform:uppercase;font-size:10px;vertical-align:middle;white-space:nowrap}
+a.MstLnkLft:hover {background-repeat:repeat-x;background-position:center center}
+a.MstLnkRt:link, a.MstLnkRt:visited {background-repeat:repeat-x;background-position:center center;padding:2px 10px 1px;text-transform:uppercase;font-size:10px;vertical-align:middle;white-space:nowrap}
+a.MstLnkRt:hover {background-repeat:repeat-x;background-position:center center}
+a.MstLnkCen:link, a.MstLnkCen:visited {background-repeat:repeat-x;background-position:center center;padding:2px 10px 1px;text-transform:uppercase;font-size:10px;vertical-align:middle;white-space:nowrap}
+a.MstLnkCen:hover {background-repeat:repeat-x;background-position:center center}
+.MstTblBot  {}
+/*---*/
+/* archived mast styles */
+table.MstTbl {}
+td.MstTdBnd {}
+.MstDivSch {}
+div.MstDivAlmRow {padding:0px 15px 4px;vertical-align:text-bottom}
+div.MstDivAlmBotRow {padding:0px 15px 5px;vertical-align:text-bottom}
+div.MstDivPrgRow {padding:8px 15px 4px;vertical-align:text-top}
+
+
+/* MENUS */
+.MnuJmpOptGrp, .MnuStdOptGrp {color:#000}
+.MnuStdOpt, .MnuStdOptSel, .MnuStd {color:#333}
+.MnuJmpOptSep, .MnuJmpOptDis, .MnuStdOptSep, .MnuStdOptDis, .MnuJmpDis, .MnuStdDis {color:#848687}
+.MnuJmp {color:#003399;border-bottom-color:#666;border-right-color:#666}
+.MnuJmpDis, .MnuStdDis {background-color:#E1E4E5;color:#848687}
+.MnuJmpOpt, .MnuJmpOpt:hover {color:#003399}
+.MnuJmpOpt:hover {text-decoration:underline}
+.MnuStd {border-bottom-color:#666;border-right-color:#666}
+/*<<<<<<<<<<<<<<<<<<<<------------>>>>>>>>>>>>>>>>>>>>*/
+.MnuJmpOptSel {font-weight:normal}
+.MnuJmpOptGrp, .MnuStdOptGrp {font-weight:normal;font-style:normal}
+/*---*/
+
+
+/* PAGE TITLE */
+.TtlTxtDiv {margin:15px 0px 0px 10px} 
+.TtlTxtDiv img {vertical-align:text-bottom;margin-right:5px} 
+.TtlLin {background-color:#d0d7da}
+span.TtlTxt {color:#000;font-size:16px;font-weight:bold}
+h1.TtlTxt {color:#000;font-size:16px;font-weight:bold;margin:0px}
+.TtlActDiv {margin:8px 10px 0px 10px}
+.TtlHlpDiv {margin:5px 10px 0px 10px}
+.TtlVewDiv {margin:8px 10px 0px 10px}
+.TtlVewLbl {color:#5F6466;font-weight:bold}
+.TtlBtnDiv {margin:0px 8px 0px 10px}
+.TtlBtnBtmDiv {padding:10px 8px 0px 10px}
+
+
+/* PROGRESS BAR */
+.PrgOutBar {position:relative;height:14px;background-color:#f2f3f4;border:solid 1px #666;margin-top:10px}
+.Tbl .PrgOutBar {position:relative;height:14px;background-color:#f2f3f4;border:solid 1px #666;margin:-1px 0px 2px}
+.PrgInBar {position:absolute;top:1px;left:1px;height:12px;background-color:#a1c4d4;font-size:1px}
+.PrgInBarBak {background-color:#f2f3f4;position:absolute;top:1px;left:1px;height:12px;font-size:1px}
+.PrgBarMsgTxt {margin-top:10px;color:#333}
+.PrgBarPctTxt {margin-top:10px;color:#333}
+.PrgBarLog {margin-top:20px;}
+.PrgBarDtlLbl {margin:15px 0px 3px;}
+.PrgBarDtlLst {margin:0px;}
+.PrgBarCb {margin-top:20px;}
+.PrgBarBtnDiv {margin-top:10px;color:#333}
+.PrgBarBtnTbl td {padding-right:15px}
+/* progress dialog with steps */
+.PrgStpMst {position:fixed;width:100%;height:55px;background:#495B67}
+.PrgStpTtl {position:fixed;width:100%;height:36px;top:55px;right:0;bottom:auto;left:0;background-color:#D9E1E4}
+.PrgStpLft {position:fixed;width:30%;height:auto;top:91px;bottom:41px;background:#fff;color:#333;overflow:auto;padding-top:15px}
+.PrgStpBdy {position:fixed;width:70%;height:auto;top:91px;right:0px;bottom:41px;left:30%;background-color:#FFF;color:#333;border-left:#CCC 1px solid;overflow:auto}
+.PrgStpBtn {position:fixed;height:auto;top:auto;right:0px;bottom:0px;left:0px;background-color:#fff;color:#333;padding:0px 10px}
+.PrgStpBtnDiv {border-top:#CCC 1px solid;text-align:right;padding:10px 0px}
+.PrgStpSubTtlDiv {padding:12px 0px 0px 10px;}
+.PrgStpSubTtlTxt {color:#333;font-weight:bold;font-size:15px}
+.PrgStpTbl {background-color:#fff}
+.PrgStpNumDiv {margin:0px 5px 20px 22px}
+.PrgStpArwDiv {margin:0px 5px 20px 1px}
+.PrgStpTxtDiv {margin:0px 10px 20px 0px}
+.PrgStpTxt {color:#333;font-weight:normal}
+.PrgStpCurTxt {color:#333;font-weight:bold;vertical-align:top}
+.PrgStpTtl .TtlTxtDiv {margin:8px 0px 5px 10px} 
+.PrgStpTtl .TtlBtnDiv {margin:8px 10px 5px 10px} 
+
+
+/* PROPERTIES PAGES */
+.ConLin {border-right:solid 10px #FFF;background-color:#d0d7da}
+.ConFldSetDiv {margin:7px 10px 0px}
+.ConFldSet {}
+.ConFldSetLgd {}
+.ConFldSetLgdDiv {color:#5F6466;font-size:16px;font-weight:bold;margin-bottom:10px}
+.ConSubSecTtlTxt {margin:15px 0px 0px 15px;color:#5F6466;font-size:16px;font-weight:bold}
+.ConSubSecDiv {padding:0px 10px 5px 0px}
+.ConTblCl1Div {margin:8px 10px 0px 15px}
+.ConTblCl2Div {margin:7px 10px 0px 0px}
+.ConEmbTblCl1Div {margin:6px 10px 0px 30px}
+.ConEmbTblCl2Div {margin:3px 10px 0px 0px}
+.ConJmpScnDiv {margin:8px 10px 0px 0px}
+.ConJmpLnkDiv {margin:7px 25px 0px 26px;text-indent:-16px}
+.ConRqdDiv {text-align:right;margin:5px 10px 5px 0px}
+.ConDefTxt {color:#333}
+.ConRqdTxt {color:#333}
+.ConJmpTopDiv {margin:15px 10px 15px 10px}
+.ConErrLblTxt {color:#C00;font-weight:bold}
+.ConWrnLblTxt {color:#C90;font-weight:bold}
+.ConEmbTblCl1Div input[type=checkbox] {margin-left:-5px;vertical-align:middle}
+.ConEmbTblCl1Div input[type=radio] {margin-left:-5px;vertical-align:middle}
+div.ConTblCl2Div input {vertical-align:middle} 
+div.ConTblCl2Div select {vertical-align:middle} 
+a.JmpLnk:link, a.JmpLnk:visited {color:#003399;text-decoration:none;vertical-align:top}
+a.JmpLnk:hover {color:#003399;text-decoration:underline;vertical-align:top}
+a.JmpTopLnk:link, a.JmpTopLnk:visited {color:#003399;text-decoration:none}
+a.JmpTopLnk:hover {color:#003399;text-decoration:underline}
+
+
+/* SCHEDULER */
+a.DatLnk:link, a.DatLnk:visited {color:#003399;background-color:#fff;text-decoration:none;border:solid 1px #fff;display:block;padding:5px 0px 3px}
+a.DatLnk:hover {text-decoration:underline;border:solid 1px #fff;font-weight:bold}
+a.DatBldLnk:link, a.DatBldLnk:visited {color:#003399;background-color:#CBDCAF;padding:5px 0px 3px;border:solid 1px #CBDCAF;text-decoration:none;font-weight:bold;display:block}
+a.DatBldLnk:hover {text-decoration:underline}
+a.DatOthLnk:link, a.DatOthLnk:visited {color:#003399;background-color:#E9EBEC;text-decoration:none;padding:5px 0px 3px;border:solid 1px #E9EBEC;display:block}
+a.DatOthLnk:hover {text-decoration:underline;border:solid 1px #E9EBEC;font-weight:bold}
+a.DatOthBldLnk:link, a.DatOthBldLnk:visited {color:#003399;background-color:#CBDCAF;padding:5px 0px 3px;border:solid 1px #CBDCAF;text-decoration:none;font-weight:bold;display:block}
+a.DatOthBldLnk:hover {text-decoration:underline}
+.DatSelDiv {background-image:url(#{resource['ezcomp:date_time_gradient.jpg']});background-repeat:repeat-x;background-color:#71838D;text-align:center;color:#fff;border-top:solid 1px #71838D;border-left:solid 1px #71838D;border-right:solid 1px #71838D;-moz-border-radius-topleft:8px;-moz-border-radius-topright:8px;background-position:3px 3px;padding:4px 6px 5px 4px}
+.DatSelDiv input {padding-top:1px}
+.DatSelDiv select {margin:0px 1px}
+.DatCalDiv {background-color:#bec7cc;text-align:center;padding:2px 2px 2px 3px}
+.DatDayHdrTxt {color:#333;font-weight:normal;padding:2px 0px;display:block}
+.DatLblTxt {color:#666;font-weight:bold}
+.DatZonTxt {color:#333}
+.DatCalTbl {border-collapse:collapse}
+.DatCalTbl td {border:1px solid #bec7cc;width:29px}
+.DatCalTbl th {border:1px solid #bec7cc;width:29px;background-color:#bec7cc}
+
+
+/* SKIP NAVIGATION LINK */	
+.SkpWht {background-color:#FFF;height:0px}
+.SkpMedGry1 {background-color:#708290;height:0px}
+
+
+/* TABLE */
+table.Tbl {background-color:#BEC7CC;color:#333;width:100%;padding:6px;border-right:none;border-bottom:none;empty-cells:show}
+.TblMgn {margin:0px 10px}
+table.Tbl td {border-right:solid 1px #BEC7CC;border-bottom:solid 1px #BEC7CC;border-left:none;border-top:none;padding:4px 5px 1px 5px;background-color:#fff}
+table.Tbl th {border-right:solid 1px #BEC7CC;border-bottom:solid 1px #BEC7CC;border-left:none;border-top:none;padding:3px 5px 1px 5px;background-color:#fff;font-weight:normal}
+.TblTdLyt {} 
+.TblTtlTxt {background-image:url(#{resource['ezcomp:gradtblttl.jpg']});background-repeat:repeat-x;background-color:#71838D;text-align:left;color:#fff;padding:3px 10px;font-weight:bold;font-size:14px;border-top:solid 1px #71838D;border-left:solid 1px #71838D;border-right:solid 1px #71838D;-moz-border-radius-topleft:8px;-moz-border-radius-topright:8px;background-position:3px 3px}
+table.Tbl td.TblActTd {border-right:none;border-bottom:none;background-color:#BEC7CC;padding:0px 0px 6px 0px;vertical-align:middle} 
+/* new style */
+table.Tbl td.TblActTdLst {border-right:none;border-bottom:none;border-top:solid 1px #e5e5e5;background-color:#BEC7CC;padding:6px 0px 2px 0px;vertical-align:middle} 
+.TblActLbl {color:#333;font-weight:bold}
+table.Tbl td.TblTdLst {border-bottom:1px solid #81939B}
+table.Tbl th.TblTdLst {border-bottom:1px solid #81939B}
+table.Tbl td.TblTdCl1 {border-left:1px solid #81939B}
+table.Tbl th.TblTdCl1 {border-left:1px solid #81939B}
+table.Tbl td.TblTdCl1Lst {border-bottom:1px solid #81939B;border-left:1px solid #81939B}
+table.Tbl th.TblTdCl1Lst {border-bottom:1px solid #81939B;border-left:1px solid #81939B}
+table.Tbl th.TblColHdr {vertical-align:bottom;padding:0px;border-top:1px solid #81939B;border-right:1px solid #81939B;border-bottom:1px solid #81939B;background-color:#fff}
+table.Tbl th.TblColHdrCl1 {vertical-align:bottom;padding:0px;border:1px solid #81939B;background-color:#fff}
+.TblHdrTxt {display:block;background-image:url(#{resource['ezcomp:gradtblhdr.gif']});background-repeat:repeat-x;background-color:#fff;background-position:left bottom;text-align:left;color:#333;text-decoration:none;font-weight:bold;padding:4px 5px 3px;min-height:12px}
+table.Tbl th.TblColHdrSrt {vertical-align:bottom;padding:0px;border:1px solid #81939B;background-image:url(#{resource['ezcomp:gradtblhdrsrt.gif']});background-repeat:repeat-x;background-color:#E2E4E9;background-position:left top}
+table.Tbl td.TblTdSrt {background-color:#E9EBEC}
+table.Tbl th.TblTdSrt {background-color:#E9EBEC}
+table.Tbl td.TblTdSrtLst {background-color:#E9EBEC;border-bottom:1px solid #81939B}
+table.Tbl th.TblTdSrtLst {background-color:#E9EBEC;border-bottom:1px solid #81939B}
+table.Tbl th.TblColHdrSrtCl1 {vertical-align:bottom;padding:0px;border:1px solid #81939B;background-image:url(#{resource['ezcomp:gradtblhdrsrt.gif']});background-repeat:repeat-x;background-color:#E2E4E9;background-position:left top}
+table.Tbl td.TblTdSrtCl1 {background-color:#E9EBEC;border-left:1px solid #81939B}
+table.Tbl th.TblTdSrtCl1 {background-color:#E9EBEC;border-left:1px solid #81939B}
+table.Tbl td.TblTdSrtCl1Lst {background-color:#E9EBEC;border-bottom:1px solid #81939B;border-left:1px solid #81939B}
+table.Tbl th.TblTdSrtCl1Lst {background-color:#E9EBEC;border-bottom:1px solid #81939B;border-left:1px solid #81939B}
+table.Tbl th.TblColHdrSrtSelCl1 {text-align:center;background-image:url(#{resource['ezcomp:gradtblhdrsrt.gif']});background-repeat:repeat-x;background-color:#E2E4E9;background-position:left top;border-right:1px solid #828da4;border-top:1px solid #959aa5;border-left:1px solid #959aa5;border-bottom:solid 1px #828da4;padding:2px 5px 0px}
+table.Tbl td.TblTdSrtSelCl1 {text-align:center;vertical-align:top;border-left:1px solid #81939B;background-color:#E9EBEC;padding:0px}
+table.Tbl td.TblTdSrtSelCl1Lst {text-align:center;vertical-align:top;border-bottom:1px solid #81939B;border-left:1px solid #959aa5;background-color:#E9EBEC;padding:0px}
+table.Tbl th.TblColHdrSel {text-align:center;background-image:url(#{resource['ezcomp:gradtblhdr.gif']});background-repeat:repeat-x;background-color:#fff;background-position:left bottom;border-right:1px solid #d2d3d8;border-top:1px solid #959aa5;border-left:1px solid #959aa5;border-bottom:solid 1px #828da4;padding:2px 5px 0px}
+table.Tbl td.TblTdSel {text-align:center;vertical-align:top;border-left:1px solid #81939B;background-color:#fff;padding:0px}
+table.Tbl td.TblTdSelLst {text-align:center;vertical-align:top;border-left:1px solid #81939B;background-color:#fff;border-bottom:1px solid #81939B;border-left:1px solid #81939B;padding:0px}
+table.Tbl td.TblTdSpc {}
+table.Tbl th.TblTdSpc {vertical-align:bottom;padding:0px;border-top:1px solid #81939B;border-right:1px solid #81939B;border-bottom:1px solid #81939B;background-color:#fff}
+table.Tbl td.TblTdSpcLst {border-bottom:1px solid #81939B}
+table.Tbl td.TblTdAlm {background-color:#FFFEE7}
+table.Tbl th.TblTdAlm {background-color:#FFFEE7}
+table.Tbl td.TblTdAlmCl1 {background-color:#FFFEE7;border-left:1px solid #81939B}
+table.Tbl th.TblTdAlmCl1 {background-color:#FFFEE7;border-left:1px solid #81939B}
+table.Tbl td.TblTdAlmLst {background-color:#FFFEE7;border-bottom:1px solid #81939B}
+table.Tbl th.TblTdAlmLst {background-color:#FFFEE7;border-bottom:1px solid #81939B}
+table.Tbl td.TblTdAlmCl1Lst {background-color:#FFFEE7;border-bottom:1px solid #81939B;border-left:1px solid #81939B}
+table.Tbl th.TblTdAlmCl1Lst {background-color:#FFFEE7;border-bottom:1px solid #81939B;border-left:1px solid #81939B}
+table.Tbl td.TblTdSrtAlm {background-color:#FFFEE7}
+table.Tbl th.TblTdSrtAlm {background-color:#FFFEE7}
+table.Tbl td.TblTdSrtAlmLst {background-color:#FFFEE7;border-bottom:1px solid #81939B}
+table.Tbl th.TblTdSrtAlmLst {background-color:#FFFEE7;border-bottom:1px solid #81939B}
+table.TblHdrTbl {background:none;width:100%;border:none}
+th.TblColHdrSrt table.TblHdrTbl {background:none;width:100%;border:none}
+th.TblColHdrSrtCl1 table.TblHdrTbl {background:none;width:100%;border:none}
+table.TblHdrTbl td {border:none;padding:0px;vertical-align:bottom;background:none;width:100%}
+a.TblHdrLnk:link, a.TblHdrLnk:visited {display:block;text-align:left;background-image:url(#{resource['ezcomp:gradtblhdr.gif']});background-repeat:repeat-x;background-color:#fff;background-position:left bottom;color:#333;text-decoration:none;font-weight:bold;padding:3px 0px 3px 5px}
+a.TblHdrLnk:hover {color:#333;text-decoration:underline;text-align:left;font-weight:bold}
+th.TblColHdrSrt a.TblHdrLnk:link {background:none;display:block;text-align:left;color:#333;text-decoration:none;font-weight:bold;padding:3px 0px 3px 5px}
+th.TblColHdrSrt a.TblHdrLnk:visited {background:none;display:block;text-align:left;color:#333;text-decoration:none;font-weight:bold;padding:3px 0px 3px 5px}
+th.TblColHdrSrt a.TblHdrLnk:hover {color:#333;text-decoration:underline;text-align:left;font-weight:bold}
+th.TblColHdrSrtCl1 a.TblHdrLnk:link {background:none;display:block;text-align:left;color:#333;text-decoration:none;font-weight:bold;padding:3px 0px 3px 5px}
+th.TblColHdrSrtCl1 a.TblHdrLnk:visited {background:none;display:block;text-align:left;color:#333;text-decoration:none;font-weight:bold;padding:3px 0px 3px 5px}
+th.TblColHdrSrtCl1 a.TblHdrLnk:hover {color:#333;text-decoration:underline;text-align:left;font-weight:bold}
+table.TblHdrTbl img {margin-bottom:3px;padding-right:5px;padding-left:5px}
+a.TblNavLnk:link, a.TblNavLnk:visited {color:#003399;text-decoration:none}
+a.TblNavLnk:hover {color:#003399;text-decoration:underline}
+a.TblActLnk:link, a.TblActLnk:visited {color:#003399;text-decoration:none}
+a.TblActLnk:hover {color:#003399;text-decoration:underline}
+.TblMsgTxt {color:#333}
+.TblPgnTxtBld {color:#5F6466;font-weight:bold}
+.TblPgnTxt {color:#333}
+/* css hooks for row mouseover and selection */
+table.Tbl tr.TblSelRow td {}
+table.Tbl tr.TblSelRow th {}
+table.Tbl tr.TblHovRow td {}
+table.Tbl tr.TblHovRow th {}
+
+
+/* TABSET - OLD STYLE TAB NAVIGATION */
+a.Tab1NotSelLnk:link, a.Tab1NotSelLnk:visited {font-weight:bold;color:#003399;text-decoration:none}
+a.Tab1NotSelLnk:hover {text-decoration:underline}
+span.Tab1SelTxt {font-weight:bold;color:#333;text-decoration:none}
+a.TabNotSelLnk:link, a.TabNotSelLnk:visited {color:#003399;text-decoration:none}
+a.TabNotSelLnk:hover {text-decoration:underline}
+span.TabSelTxt {font-weight:bold;color:#333;text-decoration:none}
+/* Level 1 Tab Navigation */
+div.Tab1 {background-color:#CCC}
+table.Tab1Tbl {background-color:#CCC}
+td.Tab1TdSel {background-color:#FFF;min-width:90px}
+td.Tab1TdNotSel {background-color:#E5E5E5;min-width:90px}
+div.Tab1DivSel {padding-left:10px;padding-top:5px;padding-bottom:3px}
+div.Tab1DivNotSel {padding-left:7px;padding-right:3px;padding-bottom:2px;border-left:3px solid #E5E5E5;border-top:3px solid #E5E5E5;border-right:3px solid #E5E5E5}
+td.Tab1Gtr {background-color:#CCC}
+/* Level 2 Tab Navigation */
+div.Tab2 {background-color:#FFF}
+table.Tab2Tbl {background-color:#FFF}
+td.Tab2LinBak {background-color:#CCC}
+div.Tab2Sel {padding-top:3px;padding-bottom:1px}
+div.Tab2NotSel {padding-top:4px;padding-bottom:2px}
+/* Level 3 Tab Navigation */
+div.Tab3 {background-color:#FFF}
+table.Tab3Tbl {background-color:#FFF}
+
+/* TABSET [originalName: LEVEL TABS]*/
+.Tab1Div {background-color:#D2D9E1; background-image:url(#{resource['ezcomp:level1_background.jpg']})} 
+a.Tab1Lnk:link, a.Tab1Lnk:visited  {color:#000;text-decoration:none}
+a.Tab1Lnk:hover {text-decoration:underline}
+.Tab1Div td {background-color:#A3ADB6;border:solid 1px #8f989f; background-image:url(#{resource['ezcomp:level1_deselect.jpg']})}
+.Tab1Div td.Tab1TblSpcTd {background-color:#D2D9E1; background-image:url(#{resource['ezcomp:level1_background.jpg']})}
+.Tab1Div div.Tab1SelTxtNew {color:#000}
+table.Tab1TblNew td.Tab1TblSelTd {background-color:#FFF; background-image:url(#{resource['ezcomp:level1_selected-1lev.jpg']})}
+table.Tab1Tbl2New td.Tab1TblSelTd, table.Tab1Tbl3New td.Tab1TblSelTd {background-color:#E4ECEF; background-image:url(#{resource['ezcomp:level1_selected.jpg']})}
+/* LEVEL 2 TABS */
+.Tab2Div {background-color:#E2EAED; background-image:url(#{resource['ezcomp:level2_background.jpg']})}
+a.Tab2Lnk:link, a.Tab2Lnk:visited{color:#000;text-decoration:none}
+a.Tab2Lnk:hover {text-decoration:underline}
+.Tab2Div td {background-color:#C4CBD1;border:solid 1px #8f989f; background-image:url(#{resource['ezcomp:level2_deselect.jpg']})}
+.Tab2Div div.Tab2SelTxt {color:#000}
+table.Tab2TblNew td.Tab2TblSelTd {background-color:#F2F4F3;border-left:solid 1px #8f989f;border-right:solid 1px #8f989f;border-top:solid 1px #8f989f; background-image:url(#{resource['ezcomp:level3_selected.jpg']})}
+table.Tab2Tbl3New td.Tab2TblSelTd {background-color:#FBFCFE;border-left:solid 1px #8f989f;border-right:solid 1px #8f989f;border-top:solid 1px #8f989f; background-image:url(#{resource['ezcomp:level2_selected.jpg']})}
+/* LEVEL 3 TABS*/
+.Tab3Div {background-color:#E2E7EA; background-image:url(#{resource['ezcomp:level3_background.gif']})}
+a.Tab3Lnk:link,a.Tab3Lnk:visited {color:#333;background:#E2E7EA;text-decoration:none}
+a.Tab3Lnk:hover {text-decoration:underline}
+table.Tab3TblNew {background-color:#E2E7EA}
+table.Tab3TblNew td {border-bottom:solid 1px #8f989f}
+table.Tab3TblNew div.Tab3SelTxt {color:#000}
+table.Tab3TblNew td.Tab3TblSelTd {border-left:solid 1px #8f989f;border-right:solid 1px #8f989f;border-top:1px solid #8f989f;background-color:#F0F1F3; background-image:url(#{resource['ezcomp:level3_selected.jpg']})}
+/* Hide Styles */
+.Tab1Div td.hidden, .Tab2Div td.hidden, .Tab3Div td.hidden {display:none}
+/*<<<<<<<<<<<<<<<<<<<<------------>>>>>>>>>>>>>>>>>>>>*/
+.Tab1Div {background-repeat:repeat-x;background-position:left bottom;padding:6px 10px 0px} 
+a.Tab1Lnk:link, a.Tab1Lnk:visited  {display:block;padding:8px 15px 7px;font-weight:bold;text-align:center}
+.Tab1Div table {border-collapse:collapse}
+.Tab1Div td {background-repeat:repeat-x;background-position:left top}
+.Tab1Div td.Tab1TblSpcTd {background-repeat:repeat-x;background-position:left bottom;border:none}
+.Tab1Div td.Tab1TblSelTd {background-repeat:repeat-x;background-position:left top;border-bottom:none}
+.Tab1Div div.Tab1SelTxtNew {display:block;padding:8px 15px 7px;font-weight:bold;text-align:center}
+.Tab1Div td a.TabPad {padding:8px 20px 7px}
+.Tab1Div td.Tab1TblSelTd div.TabPad {padding:8px 20px 7px}
+/* LEVEL 2 TABS */
+.Tab2Div {background-repeat:repeat-x;background-position:left bottom;padding:6px 0px 0px 10px}
+a.Tab2Lnk:link, a.Tab2Lnk:visited{display:block;padding:5px 15px 4px;text-align:center}
+.Tab2Div table {border-collapse:collapse}
+.Tab2Div td {background-repeat:repeat-x;background-position:left top}
+.Tab2Div div.Tab2SelTxt {display:block;padding:5px 15px 4px;font-weight:normal;text-align:center}
+.Tab2Div td.Tab2TblSelTd {border-bottom:none;background-repeat:repeat-x;background-position:left bottom}
+.Tab2Div td a.TabPad {padding:5px 20px 4px}
+.Tab2Div td.Tab2TblSelTd div.TabPad {padding:5px 20px 4px}
+/* LEVEL 3 TABS*/
+.Tab3Div {padding:6px 0px 0px 10px;background-repeat:repeat-x;background-position:right bottom}
+a.Tab3Lnk:link,a.Tab3Lnk:visited {display:block;padding:4px 15px 3px;text-align:center}
+table.Tab3TblNew div.Tab3SelTxt {font-weight:normal;padding:4px 15px 3px;text-align:center}
+table.Tab3TblNew td.Tab3TblSelTd {border-bottom:none;background-repeat:repeat-x;background-position:left bottom}
+.Tab3Div td a.TabPad {padding:5px 20px 4px}
+.Tab3Div td.Tab3TblSelTd div.TabPad {padding:5px 20px 4px}
+/*---*/
+/* TABS-MINI */
+.MniTabDiv {background-color:#D9E1E4; background-image:url(#{resource['ezcomp:minitab_background.jpg']})}
+table.MniTabTbl td {background-color:#C4CBD1;border:solid 1px #8f989f; background-image:url(#{resource['ezcomp:minitab_deselect.jpg']})}
+a.MniTabLnk:link,a.MniTabLnk:visited {color:#000;text-decoration:none}
+.MniTabSelTxt {color:#000;text-decoration:none}
+table.MniTabTbl td.MniTabTblSelTd {background-color:#F2F4F3;border-left:solid 1px #8f989f;border-right:solid 1px #8f989f;border-top:solid 1px #8f989f; background-image:url(#{resource['ezcomp:minitab_selected.jpg']})}
+.MniTabDiv td.hidden {display:none}
+/*<<<<<<<<<<<<<<<<<<<<------------>>>>>>>>>>>>>>>>>>>>*/
+.MniTabDiv {background-repeat:repeat-x;background-position: bottom left;padding:7px 0px 0px 10px}
+table.MniTabTbl {border-collapse:collapse}
+table.MniTabTbl td {background-repeat:repeat-x;background-position:left top}
+a.MniTabLnk:link,a.MniTabLnk:visited {display:block;padding:5px 15px 4px;font-size:12px;text-decoration:none}
+a.MniTabLnk:hover {text-decoration:underline}
+.MniTabSelTxt {display:block;padding:5px 15px 4px;font-size:12px;text-decoration:none}
+table.MniTabTbl td.MniTabTblSelTd {border-bottom:none;background-repeat:repeat-x;background-position:left bottom}
+/*---*/
+
+
+/* TEXT AND PASSWORD FIELDS */
+.TxtFld {border-top:solid 2px #848484;border-left:solid 2px #848484;border-bottom:solid 2px #ccc;border-right:solid 2px #ccc}
+.TxtFldDis {background-color:#E1E4E5;color:#848687;border-top:solid 2px #848484;border-left:solid 2px #848484;border-bottom:solid 2px #ccc;border-right:solid 2px #ccc}
+/*<<<<<<<<<<<<<<<<<<<<------------>>>>>>>>>>>>>>>>>>>>*/
+.TxtFld, .TxtFldDis {padding-left:2px}
+/*---*/
+
+
+/* TEXTAREAS */ 
+.TxtAra {border-top:solid 2px #848484;border-left:solid 2px #848484;border-bottom:solid 2px #ccc;border-right:solid 2px #ccc}
+.TxtAraDis {background-color:#E1E4E5;color:#848687;border-top:solid 2px #848484;border-left:solid 2px #848484;border-bottom:solid 2px #ccc;border-right:solid 2px #ccc}
+/*<<<<<<<<<<<<<<<<<<<<------------>>>>>>>>>>>>>>>>>>>>*/
+.TxtAra, .TxtAraDis {padding-left:2px}
+/*---*/
+
+
+/* TREE */
+a.TreParLnk:link, a.TreParLnk:visited {color:#003399;text-decoration:none;font-weight:bold}
+a.TreParLnk:hover {color:#003399;text-decoration:underline;font-weight:bold}
+a.TreLnk:link, a.TreLnk:visited {color:#003399;text-decoration:none}
+a.TreLnk:hover {color:#003399;text-decoration:underline}
+.TreSelTxt {color:#000;font-weight:bold}
+a.TreSelLnk:link, a.TreSelLnk:visited {color:#000;text-decoration:none;font-weight:bold}
+a.TreSelLnk:hover {color:#000;text-decoration:underline;font-weight:bold}
+.TreLnkSpc {margin-left:3px}
+.TreRotRow {background-color:#D2D9E1}
+tr.TreSelRow td {background-color:#CBDCAF}
+.TreImg {padding-top:2px;padding-bottom:1px} 
+.TreTbl {background-color:#fff}
+.TreBdy {color:#000;background-color:#fff;margin:0px}
+.TreTtl {color:#000;font-weight:bold}
+/* white version */
+tr.TreWhtSelRow td {background-color:#CBDCAF}
+.TreWhtTbl {background-color:#FFF}
+.TreWhtBdy {color:#000;background-color:#FFF;margin:0px}
+
+
+/* VERSION DIALOG */
+.VrsMgn {width:100%;height:100%;position:absolute;background-color:#D4DCE1;overflow:auto}
+.VrsHdrTxt {color:#333;font-weight:bold;margin:20px 25px 7px;font-size:15px} 
+.VrsTxt {color:#000;margin:0px 25px 10px}
+.VrsBtnAryDiv {text-align:right;margin:20px 15px 0px 0px}
+ /* New Styles */
+.VrsMstBdy {background-color:#FFF;background-image:url(#{resource['ezcomp:version_brand.jpg']});background-repeat:no-repeat}
+.VrsBtnBdy {background-color:#D4DCE1}
+.VrsPrdDiv {padding:30px 0px 0px 195px}
+.VrsLgoTd {text-align:right;vertical-align:top;padding:5px 10px 0px 10px}
+.VrsPrdTd {vertical-align:top}
+/* Archived Version Styles */
+.VrsLin {}
+
+
+/* WIZARD */
+.WizMst {background:#495B67}
+.WizTtl {background-color:#D9E1E4}
+.WizStp {color:#333;border-top:#fff 1px solid}
+.WizBdy {color:#333;border-left:#CCC 1px solid;border-top:#fff 1px solid; background-image:url(#{resource['ezcomp:wizbdy_minitab_background.jpg']})}
+.WizBtn {background:#FFF;border-left:#CCC 1px solid}
+.WizStpTab, .WizStpTbl, .WizStp, WizBdy {background-color:#fff}
+.WizStpTxt, .WizStpCurTxt, .WizHlpTxt, .WizSubTtlTxt, .WizSubStpTtlTxt, .WizCntHlpTxt {color:#333}
+.WizSubTtlDiv, .WizTtl .TtlLin {background-color:#D9E1E4}
+.WizSubTtlDiv {background-image:url(#{resource['ezcomp:minitab_background.jpg']})}
+a.WizStpLnk:link, a.WizStpLnk:visited {color:#003399;text-decoration:none}
+a.WizStpLnk:hover {color:#003399;text-decoration:underline}
+/*<<<<<<<<<<<<<<<<<<<<------------>>>>>>>>>>>>>>>>>>>>*/
+.WizMst {position:fixed;width:100%;height:55px;top:0;right:0;bottom:auto;left:0}
+.WizTtl {position:fixed;width:100%;height:36px;top:55px;right:0;bottom:auto;left:0}
+.WizStp {position:fixed;width:30%;height:auto;top:91px;right:auto;bottom:0px;left:0px;overflow:auto}
+.WizBdy {position:fixed;width:auto;height:auto;top:91px;right:0;bottom:55px;left:30%;overflow:auto;background-repeat:no-repeat;background-position:top right;padding-top:30px}
+.WizBtn {position:fixed;width:auto;height:50px;top:auto;right:0;bottom:5px;left:30%}
+.WizStpNumDiv {margin:0px 5px 20px 22px}
+.WizStpArwDiv {margin:0px 5px 20px 1px}
+.WizStpTxtDiv {margin:0px 10px 20px 0px}
+.WizStpTxt {font-weight:normal}
+.WizStpCurTxt {font-weight:bold;vertical-align:top}
+.WizHlpDiv {margin:15px 10px 5px 10px}
+.WizSubTtlDiv {position:absolute;width:auto;height:auto;top:0px;right:0;left:0;padding:7px 0px 7px 10px;background-repeat:repeat-x;background-position:left bottom}
+.WizSubTtlTxt {font-weight:bold;font-size:15px}
+.WizSubStpTtlDiv {padding:2px 0px 0px 10px}
+.WizSubStpTtlTxt {font-weight:bold;font-size:12px}
+.WizCntHlpTxt {margin:15px 10px 10px 10px}
+.WizBtnDiv {margin:20px 10px 10px 10px}
+.WizTtl .TtlTxtDiv {margin:10px 0px 3px 10px} 
+/*---*/
+
+
+/* ---------------------------------------------*/
+/* ---------------------------------------------*/
+/* THESE ARE OLD 1.0 STYLES -- DO NOT USE  for 2.0 */
+/* ---------------------------------------------*/
+/* ---------------------------------------------*/
+/* INTERNET EXPLORER 5+ FOR WINDOWS & NETSCAPE 6 STYLE SHEET */
+/* Last Updated 06/17/2002 */
+.masthead-body {background-color:#669}
+.masthead-background {background-color:#669}
+.masthead-title-row {background-color:#000}
+.masthead-separator-row {background-color:#FFF}
+.masthead-bottom-row {background-color:#669}
+.masthead-text {color:#FFF}
+.masthead-role-text {color:#FFF;font-weight:bold}
+.masthead-server-text {color:#FFF;font-weight:bold}
+a.masthead-link:link, a.masthead-link:visited {color:#FFF;text-decoration:none}
+a.masthead-link:hover {color:#FFF;text-decoration:underline}
+a.masthead-link:active {color:#F00;text-decoration:underline}
+.masthead-link-divider {color:#F90}
+.secondary-masthead-title {color:#FFF;font-size:1.25em;font-weight:bold;margin:5px 10px}
+.copyright-text {color:#999;font-size:.9em}
+.copyright-separator {background-color:#CCC}
+a.plugin-link:link, a.plugin-link:visited {font-weight:bold;color:#669;text-decoration:underline}
+a.plugin-link:active {font-weight:bold;color:#F00;text-decoration:underline}
+.plugin-description-text {color:#000}
+.tree-body {background-color:#FFF;color:#000} 
+a.tree-node-link:link, a.tree-node-link:visited, a.tree-node-link:active {color:#000;text-decoration:none}
+.global-tab-unselected {background-color:#99C;text-align:center}
+a.global-tab-link:link, a.global-tab-link:visited {color:#FFF;font-weight:bold;text-decoration:none;background-color:#99C}
+a.global-tab-link:hover {color:#FFF;font-weight:bold;text-decoration:underline;background-color:#99C}
+a.global-tab-link:active {color:#F00;text-decoration:underline}
+.global-tab-selected {background-color:#FFC;text-align:center}
+.global-tab-text {color:#000;font-weight:bold;background-color:#FFC}
+.global-tab-sec-back  {background-color:#FFC}
+.global-tab-sec-divider {color:#F90;margin:2px 0px}
+a.global-tab-sec-link:link, a.global-tab-sec-link:visited {margin:2px 0px;color:#000;background-color:#FFC;text-decoration:none}
+a.global-tab-sec-link:hover {margin:2px 0px;color:#000;background-color:#FFC;text-decoration:underline}
+a.global-tab-sec-link:active {margin:2px 0px;color:#F00;text-decoration:underline}
+.global-tab-sec-text {margin:2px 0px;color:#000;background-color:#FFC;font-weight:bold}
+.local-tab-back  {background-color:#CCC}
+.local-tab-unselected {background-color:#999;text-align:center}
+a.local-tab-link:link, a.local-tab-link:visited {color:#000;font-weight:bold;text-decoration:none;background-color:#999}
+a.local-tab-link:hover {color:#000;font-weight:bold;text-decoration:underline;background-color:#999}
+a.local-tab-link:active {color:#F00;text-decoration:underline}
+.local-tab-selected {background-color:#FFF;text-align:center}
+.local-tab-text {color:#000;font-weight:bold;background-color:#FFF}
+.local-tab-sec-back  {background-color:#FFF}
+.local-tab-sec-divider {color:#000;margin:4px 0px}
+a.local-tab-sec-link:link, a.local-tab-sec-link:visited {margin:4px 0px;color:#000;background-color:#FFF;text-decoration:underline}
+a.local-tab-sec-link:hover {margin:4px 0px;color:#000;background-color:#FFF;text-decoration:underline}
+a.local-tab-sec-link:active {margin:4px 0px;color:#F00;text-decoration:underline}
+.local-tab-sec-text {margin:4px 0px;color:#000;background-color:#FFF;font-weight:bold}
+.breadcrumb-row  {background-color:#CCC}
+.breadcrumb-text  {color:#000;font-weight:bold;margin:3px 10px}
+a.breadcrumb-link:link, a.breadcrumb-link:visited {color:#000;font-weight:normal;text-decoration:underline}
+a.breadcrumb-link:active {color:#F00;text-decoration:underline}
+.content-layout {margin:0px 10px}
+.button-frame-enabled {background-color:#000}
+.button-content-enabled {background-color:#CCC;cursor:pointer;cursor:hand}
+.button-link-enabled-text {color:#000;margin:1px 0px;font-weight:bold}
+a.button-link:link, a.button-link:visited {color:#000;background-color:#CCC;text-decoration:none}
+a.button-link:active {color:#000;background-color:#999;text-decoration:none}
+.button-frame-disabled {background-color:#999}
+.button-content-disabled {background-color:#CCC}
+.button-link-disabled-text {color:#999;margin:1px 0px;font-weight:bold}
+.mini-button-frame-enabled {background-color:#000}
+.mini-button-content-enabled {background-color:#CCC;cursor:pointer;cursor:hand}
+.mini-button-link-enabled-text {color:#000;font-size:.9em;margin:1px 0px;font-weight:bold}
+a.mini-button-link:link, a.mini-button-link:visited {color:#000;background-color:#CCC;text-decoration:none}
+a.mini-button-link:active {color:#000;background-color:#999;text-decoration:none}
+.mini-button-frame-disabled {background-color:#999}
+.mini-button-content-disabled {background-color:#CCC}
+.mini-button-link-disabled-text {color:#999;font-size:.9em;margin:1px 0px;font-weight:bold}
+.table-title-text {color:#000;font-weight:bold;margin:0px 5px 2px 0px}
+.table-frame {background-color:#99C}
+.table-content {background-color:#FFF}
+.table-header-row {background-color:#99C}
+.table-sort-row {background-color:#CCF}
+.table-separator-row {background-color:#CCC}
+.table-header-text {color:#FFF;font-weight:bold;margin:2px 5px 2px 10px}
+.table-label-text { color:#000;margin:3px 5px 3px 10px}
+.table-normal-text {color:#000;margin:3px 5px 3px 10px}
+.table-status-ok-text {color:#000;margin:3px 5px 3px 10px}
+.table-status-critical-text {color:#000;margin:3px 5px 3px 10px}
+.table-status-major-text {color:#000;margin:3px 5px 3px 10px}
+.table-status-minor-text {color:#000;margin:3px 5px 3px 10px}
+.table-strong-text {color:#000;margin:3px 5px 3px 10px;font-weight:bold}
+.sort-row-margin {margin:0px 5px 0px 10px}
+.select-all-margin {margin:2px}
+.table-navlink-text {color:#669;margin:3px 5px 3px 10px}
+a.table-navlink:link, a.table-navlink:visited {color:#669;text-decoration:underline}
+a.table-navlink:active {color:#F00;text-decoration:underline}
+.table-actlink-text {color:#99C;margin:3px 5px 3px 10px;font-weight:bold}
+a.table-actlink:link, a.table-actlink:visited {font-weight:normal;color:#669;text-decoration:underline}
+a.table-actlink:active {font-weight:normal;color:#F00;text-decoration:underline}
+.table-vertpag-label-text {color:#000;font-weight:bold}
+.table-vertpag-pages-text {color:#000}
+.table-vertpag-title-text {color:#000;font-weight:normal}
+.alert-error-frame {background-color:#C00}
+.alert-error-content {background-color:#FFF}
+.alert-warning-frame {background-color:#FC0}
+.alert-warning-content {background-color:#FFF}
+.alert-info-frame {background-color:#99C}
+.alert-info-content {background-color:#FFF}
+.alert-header-text {color:#000;font-weight:bold;margin:0px 0px 5px 0px}
+.alert-normal-text {color:#000}
+.alert-mono-text {color:#000;font-family:monospace}
+.alert-strong-text {color:#000;font-weight:bold}
+a.alert-link:link, a.alert-link:visited {color:#669;text-decoration:underline}
+a.alert-link:active {color:#F00;text-decoration:underline}
+.properties-jumpto-text {color:#000}
+.properties-level1-label-text {color:#000;margin:20px 0px 0px 0px;font-weight:bold}
+.properties-level2-label-text {color:#000;margin:20px 0px 5px 20px;font-weight:bold}
+.properties-level3-label-text {color:#000;margin:0px 0px 0px 40px}
+.properties-separator {background-color:#CCC}
+.properties-normal-text {color:#000}
+.properties-required {color:#00F}
+.wizard-title-text {color:#FFF;margin:5px;font-size:1.25em;font-weight:bold}
+.wizard-steps-body  {background-color:#FFF;color:#000}
+.wizard-contents-body {background-color:#FFF;color:#000}
+.wizard-navigation-body {background-color:#FFF;color:#000}
+.wizard-steps-title-text {color:#000;font-weight:bold}
+.wizard-steps-divider {background-color:#000}
+.wizard-step-text {color:#000}
+.wizard-help-text {color:#000;margin:3px 0px}
+.wizard-step-current-text {color:#000;font-weight:bold}
+a.wizard-step-link:link, a.wizard-step-link:visited {color:#669;text-decoration:underline}
+a.wizard-step-link:active {color:#F00;text-decoration:underline}
+.wizard-content-title-text {color:#000;font-weight:bold;margin:3px 5px}
+.wizard-content-title-row  {background-color:#CCC}
+.wizard-content-instr-text {color:#000}
+.wizard-content-label-text {color:#000}
+.wizard-tab-frame-forward {background-color:#000}
+.wizard-tab-content-forward {background-color:#FFF}
+.wizard-tab-link-forward-text {color:#000;font-weight:bold;text-decoration:none}
+.wizard-tab-frame-back {background-color:#666}
+.wizard-tab-content-back {background-color:#CCC}
+a.wizard-tab-link:link, a.wizard-tab-link:visited {color:#000;font-weight:bold;text-decoration:none}
+a.wizard-tab-link:active  {color:#000;font-weight:bold;background-color:#999;text-decoration:none}
+.help-text {color:#000} 
+a.help-link:link, a.help-link:visited {color:#000;text-decoration:underline}
+a.help-link:active {color:#F00;text-decoration:underline} 
+.help-small-text {color:#000;font-size:.9em} 
+a.help-small-link:link, a.help-link:visited {color:#000;text-decoration:underline}
+a.help-small-link:active {color:#F00;text-decoration:underline} 
+.date-time-day-header {color:#000;font-weight:bold}
+.date-time-help-text {color:#000;font-size:.9em} 
+.date-time-label-text  {color:#000} 
+a.date-time-link:link, a.date-time-link:visited {color:#000;text-decoration:underline}
+a.date-time-link:active {color:#F00;text-decoration:underline}
+a.date-time-other-link:link, a.date-time-other-link:visited {color:#999;text-decoration:underline}
+a.date-time-other-link:active {color:#F00;text-decoration:underline}
+a.date-time-mark-link:link, a.date-time-mark-link:visited {color:#000;font-weight:bold;text-decoration:underline}
+a.date-time-mark-link:active {color:#F00;text-decoration:underline}
+.chooser-server-header {color:#000;font-weight:bold}
+.chooser-server-text {color:#000}
+.chooser-label-text {color:#000}
+select.chooser-list {font-family:monospace}
+option.chooser-folder-text {color:#000;font-family:monospace}
+option.chooser-file-text {color:#666;font-family:monospace}
diff --git a/jsf-demo/sandbox/ezcomp03/src/main/webapp/resources/ezcomp/dot.gif b/jsf-demo/sandbox/ezcomp03/src/main/webapp/resources/ezcomp/dot.gif
new file mode 100644
index 0000000..1d11fa9
Binary files /dev/null and b/jsf-demo/sandbox/ezcomp03/src/main/webapp/resources/ezcomp/dot.gif differ
diff --git a/jsf-demo/sandbox/ezcomp03/src/main/webapp/resources/ezcomp/gradlogbot.jpg b/jsf-demo/sandbox/ezcomp03/src/main/webapp/resources/ezcomp/gradlogbot.jpg
new file mode 100644
index 0000000..bd9a3c7
Binary files /dev/null and b/jsf-demo/sandbox/ezcomp03/src/main/webapp/resources/ezcomp/gradlogbot.jpg differ
diff --git a/jsf-demo/sandbox/ezcomp03/src/main/webapp/resources/ezcomp/gradlogsides.jpg b/jsf-demo/sandbox/ezcomp03/src/main/webapp/resources/ezcomp/gradlogsides.jpg
new file mode 100644
index 0000000..097c6d7
Binary files /dev/null and b/jsf-demo/sandbox/ezcomp03/src/main/webapp/resources/ezcomp/gradlogsides.jpg differ
diff --git a/jsf-demo/sandbox/ezcomp03/src/main/webapp/resources/ezcomp/layout.css b/jsf-demo/sandbox/ezcomp03/src/main/webapp/resources/ezcomp/layout.css
new file mode 100644
index 0000000..73526f0
--- /dev/null
+++ b/jsf-demo/sandbox/ezcomp03/src/main/webapp/resources/ezcomp/layout.css
@@ -0,0 +1,1573 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+/* CSS Document */
+
+body {
+	margin:0;
+}
+.form_sun4 {
+	margin:0;
+}
+.hidden_sun4 {
+	display:none;
+}
+
+.clear_sun4 {
+	clear:both;
+}
+.float_sun4 {
+	float:left;
+}
+
+.ConMgn_sun4 {
+	margin:0px 10px;
+}
+/*---*/
+/* SKIP NAVIGATION LINK */
+.SkpWht_sun4, .SkpMedGry1_sun4 {
+	height:0px;
+}
+/*---*/
+/* ADDREMOVE [originalName: ADD-REMOVE-IDIOM]*/
+.AddRmvBtnTbl_sun4 .Btn1_sun4, .AddRmvBtnTbl_sun4 .Btn1Hov_sun4, .AddRmvBtnTbl_sun4 .Btn1Dis_sun4,
+.AddRmvBtnTbl_sun4 .Btn2_sun4, .AddRmvBtnTbl_sun4 .Btn2Hov_sun4, .AddRmvBtnTbl_sun4 .Btn2Dis_sun4 {
+	width:100%;
+	margin:0px;
+}
+.AddRmvVrtDiv_sun4 .Btn1_sun4, .AddRmvVrtDiv_sun4 .Btn1Hov_sun4, .AddRmvVrtDiv_sun4 .Btn1Dis_sun4,
+.AddRmvVrtDiv_sun4 .Btn2_sun4, .AddRmvVrtDiv_sun4 .Btn2Hov_sun4, .AddRmvVrtDiv_sun4 .Btn2Dis_sun4 {
+	width:9em;
+	margin:0px;
+}
+.AddRmvBtnTbl_sun4 {
+	margin-top:1.6em;
+}
+.AddRmvVrtFst_sun4 {
+	margin:5px 0px 10px 5px;
+	float:left;
+}
+.AddRmvVrtWin_sun4 {
+	margin:5px 0px 10px 5px;
+	float:left;
+}
+.AddRmvVrtBwn_sun4 {
+	margin:5px 0px 10px 10px;
+	float:left;
+}
+.AddRmvHrzWin_sun4 {
+	margin-top:3px;
+	min-width:100px;
+}
+.AddRmvHrzBwn_sun4 {
+	margin-top:8px;
+	min-width:100px;
+}
+.AddRmvHrzDiv_sun4 {
+	margin:5px 7px 10px 0px; 
+}
+.AddRmvVrtDiv_sun4 {
+	clear:left;
+}
+.AddRmvHrzLst_sun4 {
+	clear:both;
+}
+.AddRmvVrtBtn_sun4 {
+	width:120px;
+}
+.AddRmvLbl_sun4 {
+	margin-left: 0px;
+}
+.AddRmvLbl2_sun4 {
+	padding-left: 5px;
+	display: block;
+}
+.AddRmvLbl2ReadOnly_sun4 {
+	padding-left: 0px;
+}
+.AddRmvLbl2_sun4, .AddRmvLbl2ReadOnly_sun4 {
+	height: 1.6em; 
+}
+/*---*/
+
+/* BREADCRUMBS */
+.BcmWhtDiv_sun4 {
+	margin:10px 10px 0px 10px;
+}
+.BcmGryDiv_sun4 {
+	padding:13px 10px 10px 10px;
+}
+.BcmSep_sun4 {
+	margin:0px 5px;
+}
+/*---*/
+
+/* CHECKBOXES AND RADIO BUTTONS */
+.RbSpn_sun4 input {
+	vertical-align: -1px;
+}
+.CbSpn_sun4 input {
+	vertical-align: -1px;
+}
+.RbLbl_sun4, .RbLblDis_sun4 {
+	vertical-align: 1px;
+}
+.CbLbl_sun4, .CbLblDis_sun4 {
+	vertical-align: 4px;
+}
+.RbImg_sun4, .RbImgDis_sun4 {
+	vertical-align: -5px
+}
+.CbImg_sun4, .CbImgDis_sun4 {
+	vertical-align: -3px
+}
+.CbGrp_sun4 td, .RbGrp_sun4 td {
+	text-align: left;
+}
+.CbGrp_sun4 label, .RbGrp_sun4 label {
+	vertical-align: 6px;
+}
+/*---*/
+
+/* EDITABLE LIST */
+/* [check overwrite classes on ie.css] */
+.EdtLstTbl_sun4 .EdtLstAddLblTd_sun4 {
+	padding:2px 10px 0px 0px;
+}
+.EdtLstTbl_sun4 .EdtLstRmvLblTd_sun4 {
+	padding:6px 10px 0px 0px;
+	vertical-align:top;
+}
+.EdtLstTbl_sun4 .EdtLstAddTxtTd_sun4 {
+	padding:2px 14px 0px 0px;
+	vertical-align:top;
+	margin-top: 3px;
+}
+.EdtLstTbl_sun4 .EdtLstRmvLstTd_sun4 {
+	padding:2px 10px 1px 0px;
+	vertical-align:top;
+}
+.EdtLstTbl_sun4 .EdtLstRmvLstTd_sun4 .Lst_sun4,
+.EdtLstTbl_sun4 .EdtLstRmvLstTd_sun4 .LstDis_sun4 {
+	margin-bottom: 3px;
+}
+.EdtLstTbl_sun4 .EdtLstAddTxtTd_sun4 .TxtFld_sun4,
+.EdtLstTbl_sun4 .EdtLstAddTxtTd_sun4 .TxtFldDis_sun4 {
+	height: 1.3em;
+}
+.EdtLstTbl_sun4 .EdtLstAddBtnTd_sun4 {
+	padding:2px 10px 0px 0px;
+	vertical-align:top;
+	width:100px;
+}
+.EdtLstTbl_sun4 .EdtLstRmvBtnTd_sun4 {
+	padding:2px 10px 1px 0px;
+	vertical-align:top;
+	width:100px;
+}
+.EdtLstTbl_sun4 .EdtLstBtnWin_sun4 {
+	margin-top:3px;
+}
+.EdtLstTbl_sun4 .EdtLstBtnBwn_sun4 {
+	margin-top:9px;
+}
+.EdtLstTbl_sun4 .TxtFld_sun4, .EdtLstTbl_sun4 .TxtFldDis_sun4,
+.EdtLstTbl_sun4 .Btn1_sun4, .EdtLstTbl_sun4 .Btn1Hov_sun4, .EdtLstTbl_sun4 .Btn1Dis_sun4,
+.EdtLstTbl_sun4 .Btn2_sun4, .EdtLstTbl_sun4 .Btn2Hov_sun4, .EdtLstTbl_sun4 .Btn2Dis_sun4 {
+	width:100%;
+	margin:0px;
+}
+/*---*/
+
+/* BUTTONS */
+.Btn1_sun4, .Btn1Hov_sun4, .Btn1Mni_sun4, .Btn1MniHov_sun4, .Btn2_sun4, .Btn2Hov_sun4, .Btn2Mni_sun4, .Btn2MniHov_sun4, .Btn1Dis_sun4, .Btn2Dis_sun4, .Btn1MniDis_sun4, .Btn2MniDis_sun4 {
+	border-style:solid;
+	border-width:1px;
+}
+.Btn1_sun4, .Btn1Hov_sun4, .Btn1Mni_sun4, .Btn1MniHov_sun4, .Btn2Mni_sun4, .Btn2MniHov_sun4, .Btn2_sun4, .Btn2Hov_sun4 {
+	background-repeat:repeat-x;
+	background-position:center center;
+}
+.Btn1_sun4, .Btn1Hov_sun4, .Btn1Dis_sun4, .Btn1Mni_sun4, .Btn1MniHov_sun4, .Btn1MniDis_sun4, .Btn2_sun4, .Btn2Hov_sun4, .Btn2Dis_sun4, .Btn2Mni_sun4, .Btn2MniHov_sun4, .Btn2MniDis_sun4 {
+	padding:0 5px 1px 5px;
+	margin:0 2px 0 1px;
+}
+
+/* for arrays where buttons need to be of equal width */
+.BtnTbl_sun4 .Btn1_sun4, .BtnTbl_sun4 .Btn1Hov_sun4, .BtnTbl_sun4 .Btn1Dis_sun4, .BtnTbl_sun4 .Btn2_sun4, .BtnTbl_sun4 .Btn2Hov_sun4, .BtnTbl_sun4 .Btn2Dis_sun4 {
+	width:100%;
+	margin:0px
+}
+.BtnAryDiv_sun4 {
+	margin:5px 8px;
+}
+/*revised borders for masthead  */
+.MstDiv_sun4 .Btn1_sun4, .MstDiv_sun4 .Btn1Mni_sun4, .MstDiv_sun4 .Btn1Hov_sun4, .MstDiv_sun4 .Btn1MniHov_sun4, .MstDiv_sun4 .Btn2_sun4, .MstDiv_sun4 .Btn2Mni_sun4, .MstDiv_sun4 .Btn2Hov_sun4, .MstDiv_sun4 .Btn2MniHov_sun4 {
+	border-width:0;
+	vertical-align:middle;
+	margin:0;
+	padding-bottom:1px;
+}
+.mastheadButton_4_sun4 a:link, .mastheadButton_4_sun4 a:visited, .mastheadButton_4_sun4 a:hover {
+	padding:1px 7px 1px 9px;
+}
+.mastheadButton_4_sun4 {
+	display:inline;
+	border-style:solid;
+	border-top-width:1px;
+	border-right-width:0;
+	border-bottom-width:1px;
+	border-left-width:0;
+	margin:0;
+	padding:0 1px 2px 1px;
+	text-align:center;
+}
+/*---*/
+
+/* FILE CHOOSER */
+/* [check overwrite classes on ie.css] */
+.ChoNavBtnGrpDiv_sun4 {
+	float: left;
+	margin-top: 5px;
+	margin-bottom: 5px;
+}
+.ChoImgBtn_sun4 {
+	padding-right: 6px;
+}
+.ChoSortByDiv_sun4 {
+	margin-top: 5px;
+	margin-bottom: 11px;
+	float: right;
+}
+.ChoFltHlpDiv_sun4 {
+	float: left;
+	margin-bottom: 5px;
+	margin-left: 7em;
+}
+.ChoSortByDiv_sun4 .LblLev2Txt_sun4 {
+	padding-right: 5px;
+}
+.ChoMultiHlpDiv_sun4 {
+	float: left;
+	margin-top: 0px;
+	margin-bottom: 0px;
+}
+.ChoLev2Div_sun4 {
+	float: left;
+	width: 7em;
+}
+.ChoLookinDiv_sun4 {
+	float: left;
+	margin-top: 2px;
+	margin-bottom: 2px;
+}
+.ChoFltDiv_sun4 {
+	float: left;
+	margin-top: 2px;
+	margin-bottom: 2px;
+}
+.ChoSelFileDiv_sun4 {
+	float: left;
+	margin-top: 8px;
+	margin-bottom: 7px;
+}
+.ChoSelFileLev2Div_sun4 {
+	float: left;
+	width: 8.7em;
+}
+.ChoSrvDiv_sun4 {
+	float: left;
+	margin-top: 10px;
+	margin-bottom: 2px;
+}
+.ChoFltDiv_sun4 .TxtFld_sun4, .ChoLookinDiv_sun4 .TxtFld_sun4, .ChoSelFileDiv_sun4 .TxtFld_sun4, .ChoSrvDiv_sun4 .ChoSrvTxt_sun4, .ChoFltHlpDiv_sun4 .inlineFieldHelp_sun4 {
+	margin-left: 10px;
+}
+.ChoLookinDiv_sun4 .TxtFld_sun4, .ChoSelFileDiv_sun4 .TxtFld_sun4 {
+	width: 32em;
+}
+.ChoFltHlpDiv_sun4 .inlineFieldHelp_sun4 {
+	padding-top: 4px;
+}
+.ChoLstHdr_sun4 {
+	margin-bottom: 0px;
+	height: 1.6em;
+	line-height: 1.6em;
+}
+.ChoLstHdr_sun4 .ChoNameHdr_sun4 {
+	height: 1.6em;
+	padding-left: 5px;
+	width: 56%;
+	float: left;
+}
+.ChoLstHdr_sun4 .ChoSizeHdr_sun4 {
+	height: 1.6em;
+	padding-left: 5px;
+	width: 16%;
+	float: left;
+}
+.ChoLstHdr_sun4 .ChoDateTimeHdr_sun4 {
+	height: 1.6em;
+	padding-left: 5px;
+	float: left;
+}
+.ChoLstDiv_sun4 .LstMno_sun4 {
+	margin-bottom: 0;
+}
+/*---*/
+
+/* HELP WINDOW */
+.HlpStpTab_sun4 {
+	margin:0px 0px 5px 0px;
+}
+.HlpTtlDiv_sun4 {
+	margin:15px 0px 0px 10px;
+}
+.HlpSchDiv_sun4, .HlpIdxDiv_sun4 {
+	margin:5px 5px 5px 10px;
+}
+.HlpRltDiv_sun4 {
+	margin-top:6px;
+}
+body.HlpBdy_sun4 {
+	border-left-style:solid;
+	border-left-width:1px;
+	padding:10px;
+}
+body.HlpBdy_sun4 h1 {
+	margin-bottom:-3px;
+}
+body.HlpBdy_sun4 h2, body.HlpBdy_sun4 h3, body.HlpBdy_sun4 h4, body.HlpBdy_sun4 h5, H6 {
+	margin-bottom:-5px;
+}
+.HlpBtnDiv_sun4 {
+	padding:7px 10px 1px 0;
+	vertical-align:middle;
+}
+/*---*/
+
+/* PAGEALERT [originalName: FULL ALERTS]*/
+.FulAlrtHdrDiv_sun4 {
+	margin:7px 10px 5px 37px;
+}
+.FulAlrtMsgDiv_sun4 {
+	margin:5px 10px 0px 37px;
+}
+.FulAlrtFrmDiv_sun4 {
+	margin:10px 10px 5px 37px;
+}
+/*---*/
+/* INLINE ALERT */
+.inlineAlert_4_sun4 {
+	margin:0 20px 0 20px;
+	text-align:center;
+}
+.inlineAlert_4_sun4 table {
+	display: inline;	
+}
+.inlineAlert_4_sun4 .topLeftCorner_sun4, .inlineAlert_4_sun4 .topRightCorner_sun4, .inlineAlert_4_sun4 .bottomLeftCorner_sun4, .inlineAlert_4_sun4 .bottomRightCorner_sun4 {
+	width:8px;
+	height:8px;
+}
+.inlineAlert_4_sun4 .topMiddle_sun4 {
+	height:8px;
+}
+.inlineAlert_4_sun4 .leftMiddle_sun4 {
+	width:7px;
+	vertical-align:top;
+	border-left-style:solid;
+	border-left-width:1px;
+} 
+.inlineAlert_4_sun4 .middle_sun4 {
+	padding:0 13px;
+}
+.inlineAlert_4_sun4 .middle_sun4 .header_sun4{
+	vertical-align:middle;
+	text-align:center;
+}
+.inlineAlert_4_sun4 .middle_sun4 .header_sun4 img{
+	vertical-align:middle;
+	padding:0 4px 0 0;
+}
+.inlineAlert_4_sun4 .middle_sun4  .header_sun4 .label_sun4{
+	vertical-align:middle;
+}
+.inlineAlert_4_sun4 .middle_sun4 .details_sun4 {
+	margin:7px 0 0 0;
+	vertical-align:middle;
+	text-align:center;
+}
+.inlineAlert_4_sun4 .middle_sun4 .details_sun4 img{
+	padding:0 1px 0 10px;
+}
+.inlineAlert_4_sun4 .rightMiddle_sun4 {
+	width:7px;
+	vertical-align:top;
+	border-right-style:solid;
+	border-right-width:1px;
+}
+.inlineAlert_4_sun4 .bottomMiddle_sun4 {
+	height:7px;
+	border-bottom-style:solid;
+	border-bottom-width:1px;
+}
+/*---*/
+/* LEFT PANE HELP */
+.LftHlpHlp_sun4 {
+	position:absolute;
+	top:0px;
+	right:70%;
+	bottom:34px;
+	left:0px;
+	overflow:auto;
+}
+.LftHlpBdy_sun4 {
+	position:absolute;
+	top:0px;
+	bottom:34px;
+	left:30%;
+	right:0px;
+	overflow:auto;
+	border-left:1px solid;
+}
+.LftHlpDiv_sun4 {
+	margin:15px 10px 5px;
+}
+.LftHlpBtm_sun4 {
+	position:absolute;
+	bottom:0px;
+	border-top:1px solid;
+	padding:0 13px 0 30%;
+	height:33px;
+}
+.LftHlpBtnBtm_sun4 {
+	float:right;
+	margin: 7px 0 8px;
+	padding: 0 0 0 13px;
+	text-align:right;
+}
+/*---*/
+/* LISTS */
+.Lst_sun4, .LstDis_sun4, .LstMno_sun4, .LstMnoDis_sun4 {
+	border-width:1px;
+	border-style:solid;
+}
+.LstAln_sun4 {
+	vertical-align:top;
+	padding-right:5px;
+} 
+/*---*/
+/* HELPINLINE [originalName: INLINE HELP]*/
+.inlineFieldHelp_sun4 {
+	padding:2px 0 0 0;
+}
+/*---*/
+
+/* PROPERTY SHEET */
+.LblRqdDiv_sun4 {
+	line-height:1.0em;
+}
+.ConFldSetDiv_sun4 {
+	margin:7px 10px 0px;
+}
+.ConFldSetLgdDiv_sun4 {
+	margin-bottom:10px;
+	line-height:1.1em;
+}
+.ConSubSecDiv_sun4 {
+	padding:0px 10px 5px 0px;
+}
+.ConTblCl1Div_sun4 {
+	margin:8px 6px 0px 15px;
+}
+.ConTblCl2Div_sun4 {
+	margin:8px 6px 0px 0px;
+	padding:1px 0 0 0;
+}
+.ConEmbTblCl1Div_sun4 {
+	margin:6px 10px 0px 30px;
+}
+.ConEmbTblCl2Div_sun4 {
+	margin:3px 10px 0px 0px;
+}
+.ConJmpScnDiv_sun4 {
+	margin:17px 10px 0px 0;
+}
+.ConJmpLnkDiv_sun4 {
+	margin:0 25px 0 10px;
+}
+.ConRqdDiv_sun4 {
+	text-align:right;
+	margin:5px 10px 5px 0px;
+}
+.ConJmpTopDiv_sun4 {
+	line-height:.7em;
+	margin:15px 10px 10px 10px;
+}
+.ConEmbTblCl1Div_sun4 input[type=checkbox], .ConEmbTblCl1Div_sun4 input[type=radio] {
+	margin-left:-5px;
+	vertical-align:middle;
+}
+div.ConTblCl2Div_sun4 input, div.ConTblCl2Div_sun4 select {
+	vertical-align:middle;
+} 
+div.ConTblCl2Div_sun4 .CbSpn_sun4 input[type=checkbox] {
+	 margin-top:-8px;
+}
+.ConFldSetLgdDiv_sun4 {
+	margin-bottom:10px;
+}
+.ConSubSecTtlTxt_sun4 {
+	margin:15px 0px 0px 15px;
+}
+/*---*/
+/* CONTENTPAGETITLE [originalName: PAGE TITLE]*/
+.TtlTxtDiv_sun4 {
+	margin:12px 0px 0px 10px;
+} 
+.TtlTxtDiv_sun4 img {
+	vertical-align:text-bottom;
+	margin-right:5px;
+} 
+.TtlTxt_sun4 {
+	margin:0px;
+}
+
+.TtlActDiv_sun4, .TtlVewDiv_sun4  {
+	margin:8px 10px 0px 10px;
+}
+.TtlHlpDiv_sun4 {
+	margin:5px 10px 0px 10px;
+}
+.TtlBtnDiv_sun4 {
+	margin:0px 8px 0px 10px;
+}
+.TtlBtnBtmDiv_sun4 {
+	padding:10px 8px 0px 10px;
+}
+/*---*/
+
+/* SCHEDULER [originalName: DATE AND TIME]*/
+.DatCalDiv_sun4 {
+	border-right-width:1px;
+	border-right-style:solid;
+	border-bottom-width:1px;
+	border-bottom-style:solid;
+	border-left-width:1px;
+	border-left-style:solid;
+	text-align:center;
+	padding:2px 0 0 0;
+	clear:both;
+}
+.DatCalDiv_sun4 .DatSelDiv_sun4 {
+	float:left;
+	clear:right;
+}
+.DatCalDiv_sun4 .DatCalLeft_sun4 {
+	float:left;
+	clear:none;
+}
+
+.DatCalDiv_sun4 .DatCalLeft_sun4 img {
+	vertical-align:middle;
+}
+.DatCalDiv_sun4 .DatCalLeft_sun4 select {
+	margin:2px 1px 2px 2px;
+	vertical-align:top;
+}
+
+.DatCalDiv_sun4 .DatCalRight_sun4 {
+	float:right;
+	clear:right;
+}
+.DatCalDiv_sun4 .DatCalRight_sun4 select {
+	margin:2px 1px 2px 0;
+	vertical-align:top;
+}
+
+.DatCalDiv_sun4 .DatCalDiv_sun4 {
+	border:0;
+	padding:0;
+	margin:0 2px 2px 3px;
+}
+.DatCalDiv_sun4 .DatCalDiv_sun4 table, .DatCalTbl_sun4 {
+	border-collapse:collapse;
+}
+a.DatLnk_sun4:link, a.DatLnk_sun4:visited, a.DatLnk_sun4:hover, a.DatBldLnk_sun4:link, a.DatBldLnk_sun4:visited, a.DatCurLnk_sun4:link, a.DatCurLnk_sun4:visited,
+a.DatCurLnk_sun4:hover, a.DatOthLnk_sun4:link, a.DatOthLnk_sun4:visited, a.DatOthLnk_sun4:hover, a.DatOthBldLnk_sun4:link, a.DatOthBldLnk_sun4:visited,
+.DatCalTbl_sun4 td, .DatCalTbl_sun4 th {
+	border-style:solid;
+	border-width:1px;
+}
+a.DatLnk_sun4:link, a.DatLnk_sun4:visited {
+	display:block;
+	padding:5px 0px 3px;
+}
+a.DatBldLnk_sun4:link, a.DatBldLnk_sun4:visited {
+	display:block;
+	padding:5px 0px 3px;
+}
+a.DatCurLnk_sun4:link, a.DatCurLnk_sun4:visited {
+	display:block;
+	padding:5px 0px 3px;
+}
+a.DatOthLnk_sun4:link, a.DatOthLnk_sun4:visited {
+	display:block;
+	padding:5px 0px 3px;
+}
+a.DatOthBldLnk_sun4:link, a.DatOthBldLnk_sun4:visited {
+	display:block;
+	padding:5px 0px 3px;
+}
+.DateSelContainer_sun4 {
+	border-top-style:solid;
+	border-left-style:solid;
+	border-right-style:solid;
+	border-top-width:1px;
+	border-left-width:1px;
+	border-right-width:1px;
+}
+.DatSelTopMiddle_sun4 {
+	border-top-width:1px;
+	border-top-style:solid;
+	height:4px;
+}
+.DatSelContent_sun4 {
+	border-right-width:1px;
+	border-right-style:solid;
+	border-left-width:1px;
+	border-left-style:solid;
+	padding:0 0 6px 8px;
+	line-height:.9em;
+}
+.DatSelDiv_sun4 {
+	text-align:left;
+	padding:0 1px
+}
+.DatSelDiv_sun4 span {
+	/* no attributes specified */
+}
+.DatSelDiv_sun4 input {
+	padding-top:1px;
+}
+.DatDayHdrTxt_sun4 {
+	display:block;
+	padding:2px 0px;
+}
+.DatCalTbl_sun4 td, .DatCalTbl_sun4 th {
+	width:29px;
+}
+.DatFieldTable_sun4 td {
+	padding:1px 0;
+}
+/*---*/
+/*CALENDAR */
+.CalPopDiv_sun4 {
+	padding:0 4px 0 0;
+	display:block;
+	position:relative;
+	float:left;
+	top:0;
+	left:0;
+}
+.CalPopDiv_sun4 .DatCalDiv_sun4 {
+	position:relative;
+	top: -3px;	
+	padding:0 0 0 0;
+	margin-bottom:0;
+}
+.CalPopShdDiv_sun4 {
+	display:none;
+	position:absolute;
+	z-index:1000;
+	margin:-9px 0 0 -22px;
+	width:20em;
+}
+.CalPopShd2Div_sun4 {
+}
+.CalPopDiv_sun4 .DatSelContent_sun4 {
+	border-right-width:1px;
+	border-right-style:solid;
+	border-left-width:1px;
+	border-left-style:solid;
+	position:relative;
+	float:left;
+	top: -3px;
+	left:0;
+	padding:0 0 3px 0;
+}
+.CalPopDiv_sun4 .DatCalTbl_sun4 {
+	border-left-style:solid;
+	border-left-width:1px;
+	border-right-style:solid;
+	border-right-width:1px;
+}
+.CalPopDiv_sun4 .DatCalTbl_sun4 th {
+	border-bottom-style:solid;
+	border-bottom-width:1px;
+	border-left:none;
+	border-right:none;
+	border-top-style:solid;
+	border-top-width:1px;
+}
+.CalPopDiv_sun4 .DatCalTbl_sun4 td.CalPopFtr_sun4, .CalPopDiv_sun4 .CalPopFtr_sun4Div_sun4 {
+	border:0;
+}
+.CalPopDiv_sun4  a.DatCurLnk_sun4:link, .CalPopDiv_sun4 a.DatCurLnk_sun4:visited,.CalPopDiv_sun4  a.DatLnk_sun4:link,.CalPopDiv_sun4 a.DatLnk_sun4:visited,.CalPopDiv_sun4 a.DatBldLnk_sun4:link,.CalPopDiv_sun4 a.DatBldLnk_sun4:visited,
+.CalPopDiv_sun4 a.DatOthLnk_sun4:link,.CalPopDiv_sun4 a.DatOthLnk_sun4:visited,.CalPopDiv_sun4 a.DatOthBldLnk_sun4:link,.CalPopDiv_sun4 a.DatOthBldLnk_sun4:visited {
+	display:block;
+	padding:2px 0px 2px;
+}
+.CalPopDiv_sun4 .DatSelDiv_sun4 {
+	margin:0 0 5px 0;
+	text-align:left;
+	padding: 2px 1px 0 0;
+}
+.CalPopDiv_sun4 .DatDayHdrTxt_sun4 {
+	display:block;
+	padding:2px 0px;
+}
+.CalPopDiv_sun4 .DatCalTbl_sun4 {
+	border-collapse:collapse;
+}
+.CalPopDiv_sun4 .DatCalTbl_sun4 td, .CalPopDiv_sun4 .DatCalTbl_sun4 th {
+	width:25px;
+}
+.CalPopDiv_sun4 .DatCalTbl_sun4 th {
+	padding-top:2px;
+}
+.CalPopDiv_sun4 .DatSelContent_sun4 .closeBtn_sun4 {
+	display:block;
+	float:right;
+	margin: 0 3px 0 0;
+}
+.CalPopDiv_sun4 .DatSelContent_sun4 .DatSelDate_sun4 {
+	float:left;
+	line-height:.9em;
+	padding:3px 0 3px 8px;
+}
+.CalPopDiv_sun4 .DatCalTbl_sun4 td.CalPopFtr_sun4 {
+	width:auto;
+}
+.CalPopDiv_sun4 .CalPopFtrDiv_sun4 {
+	float:left;
+	width:100%;
+}
+.CalPopDiv_sun4 .CurDayTxt_sun4 {
+	float:left;
+	clear:right;
+	padding:4px 0px 4px 4px;
+}
+.CalPopFldLbl_sun4 {
+	display:block;
+	margin-right:8px;
+	padding-top:3px;
+}
+.CalPopFldImg_sun4 img {
+	margin-left:5px;
+}
+/* Override pluto portal server rule */
+.CalRootTbl_sun4 {
+	width: auto;
+ }
+/*---*/
+
+
+/* TEXT, TEXTAREAS AND PASSWORD FIELDS */
+.TxtFld_sun4, .TxtFldDis_sun4, .TxtAra_sun4, .TxtAraDis_sun4 {
+	border-style:solid;
+	border-width:1px;
+	padding:1px 0 0 2px;
+}
+.TxtAra_sun4, .TxtAraDis_sun4 {
+	padding-left:2px;
+}
+/*---*/
+
+/* MENUS */
+.MnuJmpOpt_sun4:hover {text-decoration:underline;}
+.MnuJmp_sun4, .MnuStd_sun4, .MnuJmp_sun4Dis, .MnuStdDis_sun4 {
+
+	border-width:1px;
+
+	border-style:solid;
+}
+.MnuJmpOptSel_sun4 {font-weight:normal;}
+.MnuJmpOptGrp_sun4, .MnuStdOptGrp_sun4 {font-weight:normal;font-style:normal;}
+/*---*/
+
+/* MASTHEAD */
+a.MstLnk_sun4:link, a.MstLnk_sun4:visited, a.MstLnkRt_sun4:link, a.MstLnkRt_sun4:visited {
+	border-width:1px;
+	border-style:solid;
+}
+a.MstLnkLft_sun4:link, a.MstLnkLft_sun4:visited, a.MstLnkCen_sun4:link, a.MstLnkCen_sun4:visited {
+	border-top-width:1px;
+	border-top-style:solid;
+	border-bottom-width:1px;
+	border-bottom-style:solid;
+	border-left-width:1px;
+	border-left-style:solid;
+}
+td.MstTdTtl_sun4 {
+	padding:0px 10px 0px 10px;
+	vertical-align:top;
+	white-space:nowrap;
+}
+td.MstTdAlm_sun4 {
+	vertical-align:top;
+}
+td.MstTdLogo_sun4 {
+	vertical-align:top;
+	padding:6px 13px 8px 20px;
+}
+div.MstDivTtl_sun4 {
+	padding-top:4px;
+}
+.MstFooter_sun4 {
+	padding:3px 10px 3px 0;
+	border-style:solid;
+	border-width:1px;
+	min-width:590px;
+}
+.MstSec_sun4 {
+	height:54px;
+	border-style:solid;
+	border-width:1px;
+	min-width:600px;
+}
+.MstSec_sun4 div {
+	padding:15px 0 16px 0;
+	vertical-align:middle;
+}
+.MstSec_sun4 td {
+	padding:0 10px;
+}
+div.MstDivUsr_sun4 {
+	padding:4px 0 0 0;
+}
+.MstLbl_sun4, .MstTxt_sun4, 
+.MstUsrLnk_sun4, .MstAlmLnk_sun4, 
+span.MstAlmDwnTxt_sun4, span.MstAlmCrtTxt_sun4,
+span.MstAlmMajTxt_sun4, span.MstAlmMinTxt_sun4 {
+	vertical-align:top;
+	line-height:1.0em;
+}
+a.MstLnk_sun4:link, a.MstLnk_sun4:visited {
+	background-repeat:repeat-x;
+	background-position:center center;
+	padding:2px 10px 1px;
+	vertical-align:middle
+}
+a.MstLnk_sun4:hover,a.MstLnkLft_sun4:hover, a.MstLnkRt_sun4:hover, a.MstLnkCen_sun4:hover {
+	background-repeat:repeat-x;
+	background-position:center center;
+}
+.MstSpcImg_sun4 {
+	display:none;
+}
+.MstBdy_sun4 {
+	margin:0px;
+}
+.MstDiv_sun4 {
+	border-style:solid;
+	border-width:1px;
+	min-width:600px;
+}
+.MstTblTop_sun4 td {
+	padding:6px 10px 4px;
+}
+.MstTblTop_sun4 .TxtFld_sun4, .MstTblTop_sun4 .MnuStd_sun4 {
+	margin:0 6px 0 0;
+	vertical-align:middle;
+}
+.MstTblTop_sun4 img {
+	vertical-align:middle;
+}
+.MstTblEnd_sun4 {
+	background-repeat:repeat-x;
+	background-position:left top;
+}
+.MstTblEnd_sun4  td {
+	padding:1px 0 2px 0;
+}
+td.MstTblEnd_sun4 {
+	padding-left:10px;
+}
+.MstTblBot_sun4 .hrule_sun4 {
+	margin:0 0 1px 0;
+	border-top-style:solid;
+	border-top-width:1px;
+	height:1px;
+}	
+.MstStatDiv_sun4 a, .MstTmeDiv_sun4 span, .MstAlmDiv_sun4 a {
+	vertical-align:top;
+	line-height:1.0em;
+}
+a.MstLnkLft_sun4:link, a.MstLnkLft_sun4:visited, a.MstLnkRt_sun4:link, a.MstLnkRt_sun4:visited, a.MstLnkCen_sun4:link, a.MstLnkCen_sun4:visited {
+	background-repeat:repeat-x;
+	background-position:center center;
+	padding:2px 10px 1px;
+	vertical-align:middle;
+	white-space:nowrap;
+}
+
+/*---*/
+
+/* TABSET [originalName: LEVEL TABS]*/
+.Tab1Div_sun4 td {
+	border-style:solid;
+	border-width:1px;
+}
+.Tab1Div_sun4 {
+	padding:6px 10px 0px;
+} 
+a.Tab1Lnk_sun4:link, a.Tab1Lnk_sun4:visited  {
+	display:block;
+	padding:8px 15px 7px;
+	text-align:center;
+}
+.Tab1Div_sun4 table {
+	border-collapse:collapse;
+}
+.Tab1Div_sun4 td.Tab1TblSpcTd_sun4 {
+	border:none;
+}
+.Tab1Div_sun4 td.Tab1TblSelTd_sun4 {
+	background-repeat:repeat-x;
+	background-position:left top;
+	border-bottom:none;
+}
+.Tab1Div_sun4 .Tab1SelTxtLeft_sun4 {
+	position: absolute;
+	width: 2px;
+	height: 2.8em;
+	background-position: top left;
+	background-repeat: no-repeat;
+}
+.Tab1Div_sun4 .Tab1SelTxtNew_sun4 {
+	display:block;
+	padding:8px 13px 7px;
+	text-align:center;
+	background-position: top right;
+	background-repeat: no-repeat;
+}
+.Tab1Div_sun4 td a.TabPad_sun4 {
+	padding:8px 20px 7px;
+}
+.Tab1Div_sun4 td.Tab1TblSelTd_sun4 div.TabPad_sun4 {
+	padding:8px 20px 7px;
+}
+/* LEVEL 2 TABS */
+.Tab2Div_sun4 td {
+	border-style:solid;
+	border-width:1px;
+}
+table.Tab2TblNew_sun4 td.Tab2TblSelTd_sun4 {
+	border-top-width:1px;
+	border-top-style:solid;
+	border-right-width:1px;
+	border-right-style:solid;
+	border-left-width:1px;
+	border-left-style:solid;
+}
+table.Tab2Tbl3New_sun4 td.Tab2TblSelTd_sun4 {
+	border-top-width:1px;
+	border-top-style:solid;
+	border-right-width:1px;
+	border-right-style:solid;
+	border-left-width:1px;
+	border-left-style:solid;
+}
+.Tab2Div_sun4 {
+	padding:6px 0px 0px 10px;
+}
+a.Tab2Lnk_sun4:link, a.Tab2Lnk_sun4:visited {
+	display:block;
+	padding:5px 15px 4px;
+	text-align:center;
+}
+.Tab2Div_sun4 table {
+	border-collapse:collapse;
+}
+.Tab2Div_sun4 .Tab2SelTxtLeft_sun4 {
+	position: absolute;
+	width: 2px;
+	height: 2.1em;
+	background-position: top left;
+	background-repeat: no-repeat;
+}
+.Tab2Div_sun4 .Tab2SelTxt_sun4 {
+	display:block;
+	padding:5px 15px 4px;
+	text-align:center;
+	background-position: top right;
+	background-repeat: no-repeat;
+}
+.Tab2Div_sun4 td.Tab2TblSelTd_sun4 {
+	border-bottom:none;
+}
+.Tab2Div_sun4 td a.TabPad_sun4, .Tab2Div_sun4 td.Tab2TblSelTd_sun4 div.TabPad_sun4 {
+	padding:5px 20px 4px;
+}
+/* LEVEL 3 TABS*/
+.Tab3Div_sun4 {
+	padding:6px 0px 0px 10px;
+}
+.Tab3Div_sun4 td {
+	border-style:solid;
+	border-width:1px;
+}
+a.Tab3Lnk_sun4:link,a.Tab3Lnk_sun4:visited {
+	display:block;
+	padding:4px 15px 3px;
+	text-align:center;
+}
+table.Tab3TblNew_sun4 td {
+	border-bottom-style:solid;
+	border-bottom-width:1px;
+}
+table.Tab3TblNew_sun4 div.Tab3SelTxt_sun4 {
+	padding:4px 15px 3px;
+	text-align:center;
+}
+table.Tab3TblNew_sun4 td.Tab3TblSelTd_sun4 {
+	border-top-width:1px;
+	border-top-style:solid;
+	border-right-width:1px;
+	border-right-style:solid;
+	border-left-width:1px;
+	border-left-style:solid;
+	border-bottom:none;
+}
+.Tab3Div_sun4 td a.TabPad_sun4, .Tab3Div_sun4 td.Tab3TblSelTd_sun4 div.TabPad_sun4 {
+	padding:5px 20px 4px;
+}
+/* Hide Styles */
+.Tab1Div_sun4 td.hidden_sun4, .Tab2Div_sun4 td.hidden_sun4, .Tab3Div_sun4 td.hidden_sun4 {
+	display:none;
+}
+/* MINI-TABS */
+.MniTabDiv_sun4 {
+	padding:7px 0px 0px 10px;
+}
+.MniTabDiv_sun4 td.hidden_sun4 {
+	display:none;
+}
+table.MniTabTbl_sun4 {
+	border-collapse:collapse;
+}
+table.MniTabTbl_sun4 td {
+	border-style:solid;
+	border-width:1px;
+}
+a.MniTabLnk_sun4:link,a.MniTabLnk_sun4:visited {
+	display:block;
+	padding:5px 15px 4px;
+}
+table.MniTabTbl_sun4 td.MniTabTblSelTd_sun4 {
+	border-top-width:1px;
+	border-top-style:solid;
+	border-right-width:1px;
+	border-right-style:solid;
+	border-left-width:1px;
+	border-left-style:solid;
+	border-bottom:none;
+}
+.MniTabSelTxt_sun4 {
+	display:block;
+	padding:5px 15px 4px;
+}
+/* MINI-TABS - LIGHTWEIGHT */
+.TabGrp_sun4 .TabGrpBox_sun4 {
+	border-right-width:1px;
+	border-right-style:solid;
+	border-bottom-width:1px;
+	border-bottom-style:solid;
+	border-left-width:1px;
+	border-left-style:solid;
+	border-top:none;
+	padding:10px;
+}
+.TabGrp_sun4 a.MniTabLnk_sun4:link, .TabGrp_sun4 a.MniTabLnk_sun4:visited, .TabGrp_sun4 .MniTabSelTxt_sun4 {
+	padding:4px 10px 3px;
+}
+.TabGrp_sun4 .MniTabDiv_sun4 td.hidden_sun4 {
+	display:none;
+}
+
+/*---*/
+/* TABLE [originalName: ACTION TABLE] */
+table.Tbl_sun4 {
+	border-style:solid;
+	border-width:1px;
+	padding:6px;
+	width:100%;
+	empty-cells:show;
+}
+table.Tbl_sun4 td, table.Tbl_sun4 th {
+	border-right:none;
+	border-top:none;
+	padding:3px 5px 1px 5px;
+	border-left-style:solid;
+	border-left-width:1px;
+	border-bottom-style:solid;
+	border-bottom-width:1px; 
+	margin:0;
+}
+/* Table Caption/Title */
+table.Tbl_sun4 caption.TblTtlTxt_sun4 {
+	text-align:left;
+	background-position:3px 3px;
+	-moz-border-radius-topleft:5px;
+	-moz-border-radius-topright:5px;
+	padding:3px 10px 2px 10px;
+}
+.TblTtlTxtSpn_sun4 {
+	padding:0;
+	float:left;
+}
+.TblTtlMsgSpn_sun4 {
+	padding:0 0 0 3px;
+	float:right;
+}
+/* Action Bar */
+table.Tbl_sun4 td.TblActTdLst_sun4 {border-top-style:solid; border-top-width:1px;} 
+table.Tbl_sun4 td.TblActTd_sun4 {border-left:none;border-bottom:none;padding:0px 0px 6px 0px;vertical-align:middle;} 
+table.Tbl_sun4 td.TblActTdLst_sun4 {border-left:none;border-bottom:none;padding:6px 0px 2px 0px;vertical-align:middle;} 
+.TblPgnTxtBld_sun4 {margin:0px 5px 0px 10px;}
+.TblPgnTxt_sun4 {margin:0px 3px 0px 3px;}
+.TblPgnLftBtn_sun4 {margin:0px;}
+.TblPgnRtBtn_sun4 {margin-right:10px;}
+.TblPgnGoBtn_sun4 {margin-right:8px;}
+/* Selection Column - Headers */
+table.Tbl_sun4 th.TblColHdrSel_sun4 {border-top-width:1px; border-top-style:solid;border-left-width:1px; border-left-style:solid; border-bottom-width:1px; border-bottom-style:solid;vertical-align:bottom;padding:0;}
+table.Tbl_sun4 th.TblColHdrSel_sun4 a.TblHdrLnk_sun4:link {display:block;padding:3px 0px;}
+table.Tbl_sun4 th.TblColHdrSel_sun4 a.TblHdrLnk_sun4:visited {display:block;padding:3px 0px;}
+table.Tbl_sun4 th.TblColHdrSrtSel_sun4 {border-top-width:1px; border-top-style:solid;border-left-width:1px; border-left-style:solid; border-bottom-width:1px; border-bottom-style:solid; text-align:center;border-right:none;padding:0px;vertical-align:bottom;}
+table.Tbl_sun4 th.TblColHdrSrtSel_sun4 a.TblHdrImgLnk_sun4:link, table.Tbl_sun4 th.TblColHdrSrtSel_sun4 a.TblHdrImgLnk_sun4:visited {border-left-width:1px; border-left-style:solid;}
+table.Tbl_sun4 th.TblColHdrSrtSel_sun4 a.TblHdrImgLnk_sun4:link, th.TblColHdrSrtSel_sun4 a.TblHdrImgLnk_sun4:visited {display:block;text-align:left;padding-bottom:1px;width:21px;}
+table.Tbl_sun4 th.TblColHdrSrtSel_sun4 a.TblHdrImgLnk_sun4:hover {width:21px;}
+table.Tbl_sun4 th.TblColHdrSrtSel_sun4 a.TblHdrLnk_sun4:link, th.TblColHdrSrtSel_sun4 a.TblHdrLnk_sun4:visited {display:block;padding:3px 0px 2px;}
+/* Selection Column - Cells */
+table.Tbl_sun4 td.TblTdSel_sun4, table.Tbl_sun4 td.TblTdSrtSel_sun4 {text-align:center;vertical-align:middle;padding:0px 3px;}
+/* Regular Column Headers */
+table.Tbl_sun4 th.TblColHdr_sun4 {border-top-width:1px; border-top-style:solid;border-left-width:1px; border-left-style:solid; border-bottom-width:1px; border-bottom-style:solid; vertical-align:bottom;padding:0;}
+table.Tbl_sun4 a.TblHdrImgLnk_sun4:link, table.Tbl_sun4 a.TblHdrImgLnk_sun4:visited {border-left-width:1px; border-left-style:solid;}
+.TblHdrTxt_sun4 {display:block;padding:4px 5px 3px;min-height:11px;}
+table.TblHdrTbl_sun4 {width:100%;border:0;height:1.7em;}
+table.TblHdrTbl_sun4 td, table.TblHdrTbl_sun4 th {border:0;padding:0;vertical-align:bottom;width:100%;}
+table.TblHdrTbl_sun4 img {margin:0;padding-right:5px;padding-left:5px;}
+table.Tbl_sun4 a.TblHdrLnk_sun4:link, table.Tbl_sun4 a.TblHdrLnk_sun4:visited {display:block;padding:3px 0 3px 5px;}
+table.Tbl_sun4 a.TblHdrImgLnk_sun4:link, table.Tbl_sun4 a.TblHdrImgLnk_sun4:visited {display:block;white-space:nowrap;padding:4px 2px 2px 0px;width:21px;}
+table.Tbl_sun4 a.TblHdrImgLnk_sun4:hover {white-space:nowrap;width:21px;}
+table.Tbl_sun4 a.TblHdrImgLnk_sun4 img {padding-right:2px;}
+/* Current Sort Column */
+table.Tbl_sun4 th.TblColHdrSrt_sun4 {border-top-width:1px; border-top-style:solid;border-left-width:1px; border-left-style:solid; border-bottom-width:1px; border-bottom-style:solid;}
+table.Tbl_sun4 th.TblColHdrSrt_sun4 a.TblHdrImgLnk_sun4:link, table.Tbl_sun4 th.TblColHdrSrt_sun4 a.TblHdrImgLnk_sun4:visited {border-left-width:1px; border-left-style:solid;}
+table.Tbl_sun4 span.TblColHdrSrtDis_sun4 {border-left-width:1px; border-left-style:solid;}
+table.Tbl_sun4 span.TblColHdrSelDis_sun4 {border-left-width:1px; border-left-style:solid;}
+table.Tbl_sun4 th.TblColHdrSrt_sun4 {vertical-align:bottom;padding:0px;}
+table.Tbl_sun4 th.TblColHdrSrt_sun4 table.TblHdrTbl_sun4 {width:100%;border:none;}
+table.Tbl_sun4 th.TblColHdrSrt_sun4 a.TblHdrLnk_sun4:link, table.Tbl_sun4 th.TblColHdrSrt_sun4 a.TblHdrLnk_sun4:visited {display:block;padding:4px 5px 3px 5px;}
+table.Tbl_sun4 th.TblColHdrSrt_sun4 a.TblHdrImgLnk_sun4:link, table.Tbl_sun4 th.TblColHdrSrt_sun4 a.TblHdrImgLnk_sun4:visited {display:block;border-left-style:solid;border-left-width:1px;padding-bottom:1px;width:21px;}
+table.Tbl_sun4 .TblHdrSrtNum_sun4 {margin-left:-1px;width:21px;}
+table.Tbl_sun4 span.TblColHdrSrtDis_sun4 {display:block;text-align:left;padding:0px 2px 0px 0px;}
+table.Tbl_sun4 span.TblColHdrSrtDis_sun4 img, span.TblColHdrSelDis_sun4 img {padding-right:2px;}
+table.Tbl_sun4 span.TblColHdrSelDis_sun4 {display:block;white-space:nowrap;padding:4px 2px 2px 0px;width:21px;}
+/* Multi-Column Headers */ 
+table.Tbl_sun4 th.TblMultColHdr_sun4 {border-top:none;border-left-style:solid;border-left-width:1px;border-bottom-style:solid; border-bottom-width:1px;padding:0px;margin:0px;vertical-align:bottom}
+table.Tbl_sun4 th.TblMultHdr_sun4 {
+	border-bottom:none;
+	border-top-width:1px;
+	border-top-style:solid;
+	border-left-width:1px;
+	border-left-style:solid;
+	text-align:center;
+	padding:0 5px;
+}
+table.Tbl_sun4 th.TblMultColHdr_sun4 a.TblHdrLnk_sun4:link, table.Tbl_sun4 th.TblMultColHdr_sun4 a.TblHdrLnk_sun4:visited {border-top:none;}
+table.Tbl_sun4 th.TblMultColHdr_sun4 a.TblHdrLnk_sun4:link img, table.Tbl_sun4 th.TblMultColHdr_sun4 a.TblHdrLnk_sun4:visited img, table.Tbl_sun4 th.TblMultColHdr_sun4 .TblHdrTxt_sun4 img, table.Tbl_sun4 th.TblMultColHdrSrt_sun4 a.TblHdrLnk_sun4:link img, table.Tbl_sun4 th.TblMultColHdrSrt_sun4 a.TblHdrLnk_sun4:visited img {margin:1px 0px}
+table.Tbl_sun4 th.TblMultColHdr_sun4 a.TblHdrLnk_sun4:hover {border-top:none;}
+table.Tbl_sun4 th.TblMultColHdrSrt_sun4 {border-top:none;border-left-width:1px; border-left-style:solid; border-bottom-width:1px; border-bottom-style:solid;padding:0px;margin:0px;vertical-align:bottom;}
+table.Tbl_sun4 th.TblMultColHdrSrt_sun4 a.TblHdrImgLnk_sun4:link, table.Tbl_sun4 th.TblMultColHdrSrt_sun4 a.TblHdrImgLnk_sun4:visited {border-left-width:1px; border-left-style:solid;}
+/* Sorted Cells */
+table.Tbl_sun4 .TblColFtrSpc_sun4 {border-left:none;border-bottom-style:solid; border-bottom-width:1px;border-top-width:2px; border-top-style:solid;} 
+table.Tbl_sun4 .TblColFtrSpc_sun4 {padding:4px 5px 1px 5px;} 
+/* Spacer Colums */
+table.Tbl_sun4 th.TblTdSpc_sun4 {border-top-width:1px; border-top-style:solid;border-left:none; border-bottom-width:1px; border-bottom-style:solid;vertical-align:bottom;padding:0;}
+table.Tbl_sun4 td.TblTdSpc_sun4 { border-left:none }
+/*Table Sub-Grouping */
+table.Tbl_sun4 .TblGrpRow_sun4 {border-left-style:solid;border-left-width:1px;border-bottom-style:solid; border-bottom-width:1px;border-top-width:2px;border-top-style:solid;}
+table.Tbl_sun4 .TblGrpRow_sun4 {vertical-align:bottom;padding:3px 5px 4px 3px;}
+table.Tbl_sun4 .TblGrpLft_sun4 input {margin:2px 1px 1px 2px}
+table.Tbl_sun4 .TblGrpLft_sun4 {float:left;}
+table.Tbl_sun4 .TblGrpCbImg_sun4 img {margin-left:-4px;margin-bottom:-3px;}
+table.Tbl_sun4 .TblGrpRt_sun4 {float:right;}
+table.Tbl_sun4 .TblGrpRow_sun4 {vertical-align:bottom;min-height:12px;padding:4px 5px 3px;}
+/* Table Footers */
+/* Table Column-level Footer */
+table.Tbl_sun4 .TblColFtr_sun4 {border-bottom-style:solid;border-bottom-width:1px;border-top-width:2px;border-top-style:solid;} 
+table.Tbl_sun4 .TblColFtrSrt_sun4 {border-bottom-style:solid;border-bottom-width:1px;border-top-width:2px;border-top-style:solid;}
+/*Table Group Column-Level Footer */
+table.Tbl_sun4 .TblGrpColFtr_sun4 {border-bottom-style:solid;border-bottom-width:1px;}
+table.Tbl_sun4 .TblGrpColFtrSrt_sun4 {border-bottom-style:solid;border-bottom-width:1px;}
+table.Tbl_sun4 .TblColFtr_sun4 {padding:4px 5px 1px 5px;} 
+/* Embedded Table Panels */
+.TblPnlLytDiv_sun4 {border-top-width:1px; border-top-style:solid;}
+.TblPnlShd1Div_sun4 {}
+.TblPnlDiv_sun4 {}
+.TblMgn_sun4 {margin:0px 10px;}
+/*Other Table Content Styles*/
+table.Tbl_sun4 .TblTdLyt_sun4 img, table.Tbl_sun4 .TblTdSrt_sun4 img, table.Tbl_sun4 .TblTdAlm_sun4 img,  table.Tbl_sun4 .TblTdSrtAlm_sun4 img {vertical-align:middle;margin-bottom:2px}
+table.Tbl_sun4 .TblTdSel_sun4 img, table.Tbl_sun4 .TblTdSrtSel_sun4 img {vertical-align:middle;margin:3px 0px 0px 8px;}
+.TblTdLyt_sun4 {} 
+/* Mouseover and Row Selection Styles */
+table.Tbl_sun4 tr.TblHovRow_sun4 td {}
+table.Tbl_sun4 tr.TblHovRow_sun4 th {}
+/* Table Overall Footer */ 
+table.Tbl_sun4 td.TblFtrRow_sun4 {padding:6px 3px 3px 0px;border-left:none;border-bottom:none;vertical-align:middle;text-align:center;}
+table.Tbl_sun4 .TblFtrLft_sun4 {float:left;}
+table.Tbl_sun4 .TblFtrMsgSpn_sun4 {float:right;}
+/* Table Group Overall Footer */
+table.Tbl_sun4 .TblGrpFtrRow_sun4 {padding:4px 5px 3px;}
+/* Embedded Table Panels */
+table.Tbl_sun4 td.TblPnlTd_sun4 {border:none;padding:0px;vertical-align:middle;}
+.TblPnlLytDiv_sun4 {display:none;padding:4px 0px;margin-left:-3px;}
+.TblPnlShd3Div_sun4 {}
+.TblPnlShd2Div_sun4 {}
+.TblPnlShd1Div_sun4 {
+	border-width:1px;
+	border-style:solid;
+	margin: 0 0 10px 0;
+}
+.TblPnlDiv_sun4 {
+	border-top-width:1px;
+	border-top-style:solid;
+	padding:1px 15px 1px 15px;
+}
+table.Tbl_sun4 div.TblPnlDiv_sun4 td {border:none;padding-left:0px;}
+.TblPnlTtl_sun4 {
+	margin:8px 0 0 0;
+	padding:0 0px 5px;
+}
+.TblPnlBtnDiv_sun4 {
+	text-align:left;
+	margin:10px 0;
+	padding-top:8px;
+	margin-right:3px;
+	border-top-width:1px;
+       	border-top-style:solid;
+}
+.TblPnlHlpTxt_sun4 {
+	margin:10px 0;
+	padding:7px 12px;
+        border-style:solid;
+   	border-width:1px;
+	white-space:normal;
+   	-moz-border-radius-topleft:5px;
+   	-moz-border-radius-topright:5px;
+   	-moz-border-radius-bottomleft:5px;
+   	-moz-border-radius-bottomright:5px; 
+}
+.TblPnlSrtTbl_sun4 td {padding:3px;}
+/* For when appearing in titledbox*/
+.TtldBoxInrDiv_sun4 .TblMgn_sun4 {margin:0px;}
+/*---*/
+
+/* LIGHTWEIGHT TABLE DESIGN */
+/* Table Caption/Title 
+table.Tbl_sun4 .TblLt_sun4 .TblTtlTxt_sun4 {
+	padding:5px 5px 5px 0px;
+}
+.TblLt_sun4 .TblTtlTxt_sun4 .TblTtlMsgSpn_sun4 {
+	margin-top:1px;
+}*/
+/*---*/
+/* LIGHTWEIGHT TABLE DESIGN */
+table.TblLt_sun4 {width:100%;padding:0px;border-bottom:none;empty-cells:show;border-collapse:collapse;}
+/* Table Caption/Title */
+table.TblLt_sun4 caption.TblTtlTxt_sun4 {text-align:left;padding:5px 5px 5px 0px;border:none;}
+table.TblLt_sun4 caption.TblTtlTxt_sun4 span.TblTtlTxtSpn_sun4 {float:left;}
+table.TblLt_sun4 caption.TblTtlTxt_sun4 span.TblTtlMsgSpn_sun4 {float:right;margin-top:1px}
+/* Action Bar */
+table.TblLt_sun4 td.TblActTd_sun4 {padding:8px 5px;vertical-align:middle;border-style:solid;border-width:1px;}
+table.TblLt_sun4 td.TblActTdLst_sun4 {padding:5px 5px;vertical-align:middle;border-style:solid;border-width:1px;}
+/* Selection Column - Headers */
+table.TblLt_sun4 th.TblColHdrSel_sun4 {border-top-width:1px; border-top-style:solid;border-left-width:1px; border-left-style:solid;border-bottom-width:1px; border-bottom-style:solid;}
+table.TblLt_sun4 th.TblColHdrSrtSel_sun4 {border-top-width:1px; border-top-style:solid;border-left-width:1px; border-left-style:solid;border-bottom-width:1px; border-bottom-style:solid;}
+/* Regular Column Headers */
+table.TblLt_sun4 th.TblColHdr_sun4 {border-top-width:1px; border-top-style:solid;border-left-width:1px; border-left-style:solid;border-bottom-width:1px; border-bottom-style:solid;}
+table.TblLt_sun4 table.TblHdrTbl_sun4 td {border:none;padding:0px;margin:0px;vertical-align:bottom;width:100%;}
+table.TblLt_sun4 a.TblHdrLnk_sun4:link, table.TblLt_sun4 a.TblHdrLnk_sun4:visited {padding:5px 5px 3px;min-height:12px;}
+table.TblLt_sun4 a.TblHdrImgLnk_sun4:link, table.TblLt_sun4 a.TblHdrImgLnk_sun4:visited {border-left-width:1px; border-left-style:solid;}
+table.TblLt_sun4 span.TblColHdrSelDis_sun4 {border-left-width:1px; border-left-style:solid;}
+/* Current Sort Column */
+table.TblLt_sun4 th.TblColHdrSrt_sun4 {border-top-width:1px; border-top-style:solid;border-left-width:1px; border-left-style:solid;border-bottom-width:1px; border-bottom-style:solid;}
+table.TblLt_sun4 th.TblColHdrSrt_sun4 a.TblHdrImgLnk_sun4:link, table.Tbl_sun4 th.TblColHdrSrt_sun4 a.TblHdrImgLnk_sun4:visited {border-left-width:1px; border-left-style:solid;}
+/* Multi-Column Headers */
+table.TblLt_sun4 th.TblMultColHdr_sun4 {border-top:none;border-left-width:1px; border-left-style:solid;border-bottom-width:1px; border-bottom-style:solid;padding:0px;margin:0px;vertical-align:bottom;}
+table.TblLt_sun4 th.TblMultHdr_sun4 {border-bottom:none;border-top-width:1px; border-top-style:solid;border-left-width:1px; border-left-style:solid;text-align:center;padding:4px 5px;}
+/*Table Sub-Grouping */
+table.TblLt_sun4 .TblGrpRow_sun4 {border-left-width:1px; border-left-style:solid; border-top-width:3px; border-top-style:double;padding:4px 5px 3px;}
+/* Table Footers */ 
+table.TblLt_sun4 td.TblFtrRow_sun4 {padding:6px 5px 3px;border:none;vertical-align:middle;text-align:center;border-left:none;border-right:none;}
+table.TblLt_sun4 .TblColFtr_sun4 {border-bottom-width:1px; border-bottom-style:solid;border-top-width:3px; border-top-style:double;} 
+table.TblLt_sun4 .TblColFtrSrt_sun4 {border-bottom-width:1px; border-bottom-style:solid;border-top-width:3px; border-top-style:double;}
+table.TblLt_sun4 .TblColFtrSpc_sun4 {border-left:none;border-bottom-width:1px; border-bottom-style:solid; border-top-width:3px; border-top-style:double;}
+/* Embedded Table Panels */
+table.TblLt_sun4 td.TblPnlTd_sun4 {padding-left:10px;border-top:none;border-bottom:none}
+/*---*/
+
+/* TREE */
+.TreBdy_sun4 {	
+	margin:0px;
+}
+
+.Tree_sun4 {
+	/*	width:500px;*/
+}
+
+.TreeImg_sun4 {	
+	padding-top:2px;
+	padding-bottom:1px;
+}
+
+.TreeImgHeight_sun4 {
+	display:inline;	
+	line-height:22px;
+}
+
+.TreeContent_sun4 {
+	display:inline;	
+	vertical-align:middle;	
+	padding-left:5px;
+	white-space:nowrap;
+}
+
+.TreeLinkSpace_sun4 {
+	margin-left:3px;
+}
+
+.TreeRootRow_sun4, .TreeRootSelRow_sun4 {
+	height:28px;
+}
+
+.TreeRootRowHeader_sun4 {
+	height:9px;}
+
+.TreeRow_sun4 {
+	white-space:nowrap;
+	clear:both;
+}
+
+.TreeRow_sun4 .float_sun4 {
+	padding-left:5px;
+}
+
+.TreeRootRow_sun4 .float_sun4, .TreeRootSelRow_sun4 .float_sun4 {	padding-left:7px;
+
+}
+
+.TreeSelRow_sun4 {
+	white-space:nowrap;
+}
+
+.TreeSelRow_sun4 .float_sun4 {
+	padding-left:5px;
+}
+
+/*---*/
+/* VERSION DIALOG */
+.VrsMstBdy_sun4 {
+	float:left;
+	clear:right;
+	width:100%;
+	clear:both;
+	height:109px;
+}
+.VrsBdy_sun4 {
+	position:absolute;
+	top:0px;
+	bottom:0px;
+}
+.VrsMgn_sun4 {
+	clear:both;
+	width:100%;
+	overflow:auto;
+}
+.VrsTxt_sun4 {
+	margin:0px 25px 10px;
+}
+.VrsBtnAryDiv_sun4 {
+	text-align:right;
+	padding:10px 15px;
+	width:auto;
+	height:auto;
+}
+.VrsPrdDiv_sun4 {
+	padding:30px 0px 0px 195px;
+}
+.VrsLgoDiv_sun4 {
+	padding:5px 0 0 0;
+}
+.VrsPrdTd_sun4 {
+	float:left;
+	clear:none;
+	vertical-align:top;
+	padding:10px 0px 0px 5px;
+}
+.VrsLgoTd_sun4 {
+	float:right;
+	clear:right;
+	text-align:right;
+	vertical-align:top;
+	padding:12px 10px 0px 10px;
+}
+.VrsHdrTxt_sun4 {
+	margin:20px 25px 7px;
+}
+/*---*/
+/* WIZARD */
+.WizBar_sun4 {
+	height:30px;
+	border-bottom-style:solid;
+	border-bottom-width:1px;
+}
+.WizStpTab_sun4 {
+	position:relative;
+}
+.WizTtlBar_sun4 {
+	position:relative;
+	height:41px;
+	border-bottom-style:solid;
+	border-bottom-width:1px;
+	line-height:41px;
+	padding:0 0 0 15px;
+}
+.WizStp_sun4 {
+	position:absolute;
+	top:72px;
+	right:70%;
+	bottom:34px;
+	left:0px;
+	overflow:auto;
+	padding:18px 10px 0 4px;
+}
+.WizHlpDiv_sun4 {
+	position:absolute;
+	top:73px;
+	right:70%;
+	bottom:34px;
+	left:0px;
+	overflow:auto;
+	padding:15px 10px 0 10px;
+}
+.WizBdy_sun4 {
+	position:absolute;
+	top:72px;
+	bottom:34px;
+	left:30%;
+	right:0px;
+	overflow:auto;
+	border-left-style:solid;
+	border-left-width:1px;
+	padding:18px 10px 0 15px;
+}
+.WizBtm_sun4 {
+	position:absolute;
+	bottom:0px;
+	border-top-style:solid;
+	border-top-width:1px;
+	padding:0 13px 0 30%;
+	height:33px;
+}
+.WizBtnBtm_sun4 {
+	float:right;
+	margin: 7px 0 8px;
+	padding: 0 0 0 13px;
+	text-align:right;
+}
+.WizBtnBtm_sun4 .left_sun4 {
+	float:left;
+	clear:none;
+}
+.WizBtnBtm_sun4 .right_sun4 {
+	float:right;
+	clear:none;
+}
+.WizStpNumDiv_sun4 {
+	margin:0 5px 20px 15px;
+}
+.WizStpArwDiv_sun4 {
+	margin:0 5px 20px 0;
+}
+.WizStpArwDiv_sun4 span {
+	vertical-align:middle;
+}
+.WizStpArwDiv_sun4 img {
+	vertical-align:middle;
+	padding:0 1px 0 0;
+}
+.WizStpTxtDiv_sun4 {
+	margin:0 0 20px 4px;
+}
+.WizStpCurTxt_sun4 {
+	vertical-align:top;
+}
+.WizSubTtlDiv_sun4 {
+	margin:0 0 20px 0;
+}
+.WizStpTitle_sun4 {
+	padding:4px 0 21px 10px;
+}
+.WizSubStpTtlDiv_sun4 {
+	padding:2px 0 0 10px;
+}
+.WizCntHlpTxt_sun4 {
+	margin:0 0 20px 0;
+}
+.WizTtl_sun4 .TtlTxtDiv_sun4 {
+	margin:10px 0 3px 10px;
+} 
+.WizStpsPnTtlDiv_sun4 {
+	padding:7px 0 7px 10px;
+}
+/*---*/
diff --git a/jsf-demo/sandbox/ezcomp03/src/main/webapp/resources/ezcomp/login-backimage.jpg b/jsf-demo/sandbox/ezcomp03/src/main/webapp/resources/ezcomp/login-backimage.jpg
new file mode 100644
index 0000000..1d45ce9
Binary files /dev/null and b/jsf-demo/sandbox/ezcomp03/src/main/webapp/resources/ezcomp/login-backimage.jpg differ
diff --git a/jsf-demo/sandbox/ezcomp03/src/main/webapp/resources/ezcomp/loginPanel.groovy b/jsf-demo/sandbox/ezcomp03/src/main/webapp/resources/ezcomp/loginPanel.groovy
new file mode 100644
index 0000000..efef4c9
--- /dev/null
+++ b/jsf-demo/sandbox/ezcomp03/src/main/webapp/resources/ezcomp/loginPanel.groovy
@@ -0,0 +1,75 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+import javax.faces.component.UINamingContainer;
+import javax.faces.component.ValueHolder;
+import javax.faces.context.FacesContext;
+import javax.faces.application.ResourceDependencies;
+import javax.faces.application.ResourceDependency;
+
+ at ResourceDependencies( [
+  @ResourceDependency(library="this", name="css_master.css"),
+  @ResourceDependency(library="this", name="layout.css"),
+  @ResourceDependency(library="this", name="typography.css"),
+  @ResourceDependency(library="this", name="colorAndMedia.css"),
+  @ResourceDependency(library="this", name="table2.css"),
+  @ResourceDependency(library="this", name="commontaskssection.css"),
+  @ResourceDependency(library="this", name="progressBar.css"),
+  @ResourceDependency(library="this", name="css_ns6up.css")
+                       ])
+public class loginPanel extends UINamingContainer {
+    
+    public void processUpdates(FacesContext context) {
+        
+        ValueHolder username = this.findComponent("usernameInput");
+        ValueHolder password = this.findComponent("pinInput");
+        
+        context.getExternalContext().getRequestMap().put("groovyCalled", 
+                                                         username.getValue());
+
+        super.processUpdates(context);
+
+    } 
+    
+    public String getFamily() {
+        return "ezcomp.LoginPanel";
+    }
+    
+}
diff --git a/jsf-demo/sandbox/ezcomp03/src/main/webapp/resources/ezcomp/loginPanel.properties b/jsf-demo/sandbox/ezcomp03/src/main/webapp/resources/ezcomp/loginPanel.properties
new file mode 100644
index 0000000..dd0ae6d
--- /dev/null
+++ b/jsf-demo/sandbox/ezcomp03/src/main/webapp/resources/ezcomp/loginPanel.properties
@@ -0,0 +1,41 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
+localizedText=This is the localized text for the composite component.
diff --git a/jsf-demo/sandbox/ezcomp03/src/main/webapp/resources/ezcomp/loginPanel.xhtml b/jsf-demo/sandbox/ezcomp03/src/main/webapp/resources/ezcomp/loginPanel.xhtml
new file mode 100644
index 0000000..f40baa1
--- /dev/null
+++ b/jsf-demo/sandbox/ezcomp03/src/main/webapp/resources/ezcomp/loginPanel.xhtml
@@ -0,0 +1,114 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:composite="http://java.sun.com/jsf/composite">
+<head>
+
+<title>Not present in rendered output</title>
+
+</head>
+
+<body>
+
+<composite:interface name="loginPanel" 
+                     displayName="Very Simple Login Panel" 
+                     preferred="true"
+                     expert="false"
+                     shortDescription="An illustration of the composite component feature">
+
+  <composite:attribute name="usernameLabel" default="Username" />
+  <composite:attribute name="pinLabel" default="PIN" />
+  <composite:attribute name="loginLabel" default="Login" />
+  <composite:attribute name="model" required="true"/>
+
+  <composite:editableValueHolder name="usernameInput" />
+  <composite:editableValueHolder name="pinInput" />
+  <composite:editableValueHolder name="allInputs" targets="usernameInput pinInput" />
+  <composite:actionSource name="loginEvent" />
+
+</composite:interface>
+
+<composite:implementation>
+
+  <ui:decorate template="loginPanelTemplate.xhtml">
+
+    <ui:define name="usernameInput">
+
+      <h:inputText id="usernameInput" />
+
+    </ui:define>
+
+    <ui:define name="pinInput">
+
+      <h:inputText id="pinInput" />
+
+    </ui:define>
+
+    <ui:define name="loginEvent">
+
+      <h:commandButton id="loginEvent" value="#{cc.attrs.loginLabel}" 
+                 action="#{cc.attrs.model.loginAction}" 
+                 onkeypress="javascript: submitenter(event, 'loginButton', Login');" 
+                 onclick="javascript: submitAndDisable(this, 'Login');" 
+                 onfocus="javascript: if (this.disabled==0) this.className='Btn1Hov'" 
+                 onblur="javascript: if (this.disabled==0) this.className='Btn1'" 
+                 onmouseout="javascript: if (this.disabled==0) this.className='Btn1'" 
+                 onmouseover="javascript: if (this.disabled==0) this.className='Btn1Hov'" 
+                 tabindex="3" 
+                 title="Log In to Sun Java System Application Server" 
+                 class="Btn1"
+                       />
+
+    </ui:define>
+
+  </ui:decorate>
+
+</composite:implementation>
+
+</body>
+
+</html>
diff --git a/jsf-demo/sandbox/ezcomp03/src/main/webapp/resources/ezcomp/loginPanelTemplate.xhtml b/jsf-demo/sandbox/ezcomp03/src/main/webapp/resources/ezcomp/loginPanelTemplate.xhtml
new file mode 100644
index 0000000..1c9caa0
--- /dev/null
+++ b/jsf-demo/sandbox/ezcomp03/src/main/webapp/resources/ezcomp/loginPanelTemplate.xhtml
@@ -0,0 +1,153 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:composite="http://java.sun.com/jsf/composite">
+
+<head>
+
+<title>
+This does not appear
+</title>
+
+</head> 
+
+<body>
+
+<ui:composition>
+
+<p>#{cc.resourceBundleMap.localizedText}</p>
+
+    <table border="0" cellpadding="0" cellspacing="0" align="center" title="">
+	<tr><td width="50%">
+<img id="sun_image5" src="#{resource['this:dot.gif']}" alt="" height="1" width="1" border="0" />	    </td><td><img id="sun_image7" src="#{resource['this:dot.gif']}" alt="" height="1" width="728" border="0" />	    </td><td width="50%"><img id="sun_image9" src="#{resource['this:dot.gif']}" alt="" height="1" width="1" border="0" />
+	    </td>
+	</tr>
+	<tr class="LogTopBnd"><td><img src="#{resource['this:gradlogtop.jpg']}" width="1" height="30" border="0" />
+        </td>
+	    <td valign="middle" nowrap="nowrap">
+
+<img id="sun_image11" src="#{resource['this:dot.gif']}" alt="" height="30" width="1" border="0" />
+	    </td>
+	    <td></td>
+	</tr>
+            <tr><td class="LogMidBnd"></td>
+	    <td class="LogCntTd" style="background-image: url(#{resource['this:login-backimage.jpg']});background-repeat:no-repeat;background-position:left top;" align="center" valign="middle">
+		<table border="0" background="#{resource['this:dot.gif']}" cellpadding="0" cellspacing="0" width="100%" title="">
+		    <tr><td width="260">
+<img id="sun_image13" src="#{resource['this:dot.gif']}" alt="" height="245" width="260" border="0" />
+			</td>
+
+			<td width="415" bgcolor="#FFFFFF" valign="top" align="left"> 
+<img id="sun_image15" src="#{resource['this:LoginProductName.png']}" alt="Application Server Administration Console" height="42" width="318" border="0" />
+			    <table border="0" cellspacing="0" cellpadding="0">
+				<tr><td> </td>
+				    <td></td></tr>
+				<tr><td nowrap="nowrap"><div class="logLbl">
+					 <span class="LblLev2Txt">
+<label id="sun_label17" for="Login.username" class="LblLev2Txt_sun4">
+<h:outputText value="#{cc.attrs.usernameLabel}" />
+</label>
+					</span></div></td>
+
+				    <td><div class="logInp">
+
+<ui:insert name="usernameInput" />
+
+
+</div></td></tr>
+				<tr><td nowrap="nowrap"><div class="logLblLst">
+					 <span class="LblLev2Txt">
+<label id="sun_label19" for="Login.pin" class="LblLev2Txt_sun4">
+<h:outputText value="#{cc.attrs.pinLabel}" />
+</label>
+					</span></div></td>
+				    <td><div class="logInpLst"> 
+
+<ui:insert name="pinInput" />
+
+
+</div></td></tr>
+				<tr><td><img id="sun_image22" src="#{resource['this:dot.gif']}" alt="" height="15" width="1" border="0" />
+				    </td>
+
+				    <td>  
+			    <table border="0">
+				<tr><td><div class="logBtn">
+
+<ui:insert name="loginEvent" />
+
+					</div>
+				    </td></tr></table>
+				</td></tr>
+			    <tr><td> </td></tr>
+
+			    <tr><td>
+<img id="sun_image25" src="#{resource['this:dot.gif']}" alt="" height="33" width="1" border="0" />
+				</td>
+				<td> </td></tr>
+			</table>
+		    </td>
+
+		    <td> </td></tr>
+	    </table>
+	</td>
+
+	<td class="LogMidBnd" 
+	    style="background-image: url(#{resource['this:gradlogsides.jpg']});background-repeat:repeat-x;background-position:left top;">
+	     </td></tr>
+    <tr class="LogBotBnd" style="background-image: url(#{resource['this:gradlogbot.jpg']});background-repeat:repeat-x;background-position:left top;">
+	<td> </td>
+	<td> </td>
+	<td> </td></tr>
+
+</table>
+
+</ui:composition>
+
+</body>
+
+</html>
diff --git a/jsf-demo/sandbox/ezcomp03/src/main/webapp/resources/ezcomp/primary-enabled.gif b/jsf-demo/sandbox/ezcomp03/src/main/webapp/resources/ezcomp/primary-enabled.gif
new file mode 100644
index 0000000..1bfdd0a
Binary files /dev/null and b/jsf-demo/sandbox/ezcomp03/src/main/webapp/resources/ezcomp/primary-enabled.gif differ
diff --git a/jsf-demo/sandbox/ezcomp03/src/main/webapp/resources/ezcomp/primary-roll.gif b/jsf-demo/sandbox/ezcomp03/src/main/webapp/resources/ezcomp/primary-roll.gif
new file mode 100644
index 0000000..ded404c
Binary files /dev/null and b/jsf-demo/sandbox/ezcomp03/src/main/webapp/resources/ezcomp/primary-roll.gif differ
diff --git a/jsf-demo/sandbox/ezcomp03/src/main/webapp/resources/ezcomp/progressBar.css b/jsf-demo/sandbox/ezcomp03/src/main/webapp/resources/ezcomp/progressBar.css
new file mode 100644
index 0000000..94f0763
--- /dev/null
+++ b/jsf-demo/sandbox/ezcomp03/src/main/webapp/resources/ezcomp/progressBar.css
@@ -0,0 +1,146 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+/* LAYOUT */
+.progressBar_4_sun4 {
+	margin:12px 11px;
+}
+.progressBar_4_sun4 .operationLabel_sun4 {
+	margin:0 0 9px 1px;
+	line-height:1.0;
+}
+.progressBar_4_sun4 .barContainer_sun4 {
+	display:block;
+	float:left;
+	position:relative;
+	margin-bottom:6px;
+	padding:.09em;
+	border-style:solid;
+	border-width:1px;
+	width:16.9em;
+}
+.progressBar_4_sun4 .barDeterminate_sun4, .progressBar_4_sun4 .barIndeterminate_sun4, .progressBar_4_sun4 .barIndeterminatePaused_sun4 {
+	width:48%;
+	height:.8em;
+}
+.progressBar_4_sun4 .failure_sun4{
+	
+	float:left;
+	margin-bottom:7px;
+	padding:1px;
+	width:17.1em;
+}
+.progressBar_4_sun4 .failureLabel_sun4 {
+	color:#C00;
+	padding:0 0 0 1.3em;
+	line-height:1.0;
+}
+.progressBar_4_sun4 .barIndeterminate_sun4, .progressBar_4_sun4 .barIndeterminatePaused_sun4{
+	width:100%
+}
+.progressBar_4_sun4 .barLabel_sun4 {
+	position:absolute;
+	line-height:.9;
+	top:.09em;
+	left:0;
+	width:16.9em;
+	height:.9em;
+	text-align:right;
+}
+.progressBar_4_sun4 .statusLabel_sun4 {
+	padding:0 0 0 1px ;
+	line-height:1.0;
+	width:16.9em;
+	margin-bottom:20px;
+}
+.progressBar_4_sun4 .buttonsBottom_sun4 {
+	margin: 11px 0 20px -1px;
+}
+.progressBar_4_sun4 .buttonsRight_sun4 {
+	float:left;
+	clear:right;
+	margin: -2px 0 0 0;
+	padding-left:.9em;
+}
+.progressBar_4_sun4 .log_sun4 {
+	margin:20px 0;
+}
+.progressBar_4_sun4 .busy_sun4 {
+	margin:10px;
+}
+/*---*/
+
+/* TYPOGRAPHY */
+.progressBar_4_sun4 {
+	font-size:1.0em;
+}
+.progressBar_4_sun4 .operationLabel_sun4, .progressBar_4_sun4 .failureLabel_sun4 {
+	font-weight:bold;
+}
+/*---*/
+/* COLOR AND MEDIA */
+.progressBar_4_sun4 {
+	border-color:#F1F1F1;
+}
+.progressBar_4_sun4 .barContainer_sun4 {
+	background-color:#F2F3F4;
+	border-color:#666664;
+}
+.progressBar_4_sun4 .barIndeterminatePaused_sun4 {
+  background: #A0CCE7 url(#{resource['ezcomp:still-indeterminate.gif']}) repeat-x top;
+}
+.progressBar_4_sun4 .barIndeterminate_sun4 {
+  background: #A0CCE7 url(#{resource['ezcomp:indeterminate.gif']}) repeat-x top;
+}
+.progressBar_4_sun4 .barDeterminate_sun4 {
+  background: #A0CCE7 url(#{resource['ezcomp:reg-slice.gif']}) repeat-x top;
+}
+.progressBar_4_sun4 .failure_sun4 {
+  background-image:url(#{resource['ezcomp:failed_small.gif']});
+	background-position:top left;
+	background-repeat:no-repeat;
+}
+.progressBar_4_sun4 .failureLabel_sun4 {
+	color:#CC0000;
+}
+.progressBar_4_sun4 .checkboxContainer_sun4 label {
+	cursor:pointer;
+}
+/*---*/
diff --git a/jsf-demo/sandbox/ezcomp03/src/main/webapp/resources/ezcomp/table2.css b/jsf-demo/sandbox/ezcomp03/src/main/webapp/resources/ezcomp/table2.css
new file mode 100644
index 0000000..c102341
--- /dev/null
+++ b/jsf-demo/sandbox/ezcomp03/src/main/webapp/resources/ezcomp/table2.css
@@ -0,0 +1,138 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+/* Top level div tag */
+.Tbl2_sun4 {
+  /* Styles from old table */
+  -moz-border-radius-topleft:5px; 
+  -moz-border-radius-topright:5px;
+  border-style:solid;
+  border-width:1px;
+  border-color:#A0A3A5; 
+  border-top-color:#35556A; 
+  background-color:#E5E9ED; 
+  color:#000;
+}
+
+/* Title */ 
+.Tbl2Ttl_sun4 {
+  border-bottom-style:solid; 
+  border-bottom-width:1px;
+
+  /* Styles from old table */
+  color:#fff; 
+  background:#36586F url(#{resource['ezcomp:table_titlebar_gradient.gif']}) bottom left repeat-x;
+  text-align:left; 
+  background-position:5px 5px; 
+  padding:3px 10px 2px 10px;
+  -moz-border-radius-topleft:5px; 
+  -moz-border-radius-topright:5px;
+}
+
+/* Margin */
+.Tbl2Mgn_sun4 {
+  padding:6px;
+}
+
+/* Actions */
+.Tbl2Act_sun4 {
+  /* Styles from old table */
+  vertical-align:middle;
+}
+
+/* Outer div to capture absolutely positioned header/footer */
+.Tbl2Grps_sun4 {
+  position: relative;
+  padding-bottom: 2.9em; /* Must be dynamic */
+  padding-top: 3.1em; /* Must be dynamic */
+  width: 100%; /* Required for IE */
+}
+
+/* Inner div enabling table to scroll */
+.Tbl2Grp_sun4 {
+  overflow: auto;
+}
+
+/* Group header */
+.Tbl2GrpHdr_sun4 {
+  position: absolute;
+  top: 7px;
+  left: 0px;
+}
+.Tbl2GrpHdr_sun4 th {
+  min-height:1.5em;
+}
+.Tbl2GrpHdrTxt_sun4 {
+  float: left;
+}
+.Tbl2GrpHdrRowsTxt_sun4 {
+  float: right;
+}
+
+/* Column header */
+.Tbl2ColHdr_sun4 {
+  position: absolute;
+  top: 1.95em; /* Must be dynamic */
+  left: 0px;
+}
+.Tbl2ColHdr_sun4 th {
+  text-align: left;
+  min-height:1.5em;
+}
+
+/* Column footer */
+.Tbl2ColFtr_sun4 {
+  position: absolute;
+  bottom: 1.35em; /* Must be dynamic */
+  left: 0px;
+}
+.Tbl2ColFtr_sun4 td {
+  min-height:1.5em;
+}
+
+/* Group footer */
+.Tbl2GrpFtr_sun4 {
+  position: absolute;
+  bottom: 0px;
+  left: 0px;
+}
+.Tbl2GrpFtr_sun4 td {
+  min-height:1.5em;
+}
diff --git a/jsf-demo/sandbox/ezcomp03/src/main/webapp/resources/ezcomp/typography.css b/jsf-demo/sandbox/ezcomp03/src/main/webapp/resources/ezcomp/typography.css
new file mode 100644
index 0000000..8b6ce9c
--- /dev/null
+++ b/jsf-demo/sandbox/ezcomp03/src/main/webapp/resources/ezcomp/typography.css
@@ -0,0 +1,389 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+/* CSS Document */
+
+body {
+	font-family:Arial, Helvetica, sans-serif;
+	font-size:70%;
+}
+TABLE, TH, TD, P, DIV, SPAN, INPUT, BUTTON, SELECT, TEXTAREA, FORM, B, STRONG, LABEL, I, U, H1, H2, H3, H4, H5, H6, DL, DD, DT, UL, LI, OL, OPTION, OPTGROUP, A {
+	font-size:100%;
+}
+H1, H2, H3, H4, H5, H6 {
+	font-weight:bold;
+}
+H1 {
+	font-size:1.7em;
+}
+H2 {
+	font-size:1.4em;
+}
+H3 {
+	font-size:1.3em;
+}
+H4 {
+	font-size:1.2em;
+}
+H5, H6 {
+	font-size:1.0em;
+}
+input, select {
+	font-size:1.0em;
+}
+strong {
+	font-size:1.0em;
+	font-weight:bold;
+}
+
+/* ADDREMOVE [originalName: ADD-REMOVE-IDIOM]*/
+.AddRmvLbl_sun4, .AddRmvLbl2_sun4 {
+	font-size:1.0em;
+	font-weight:bold;
+}
+/*---*/
+
+/* BREADCRUMBS */
+a.BcmLnk_sun4 {
+	font-size:1.0em;
+}
+/*---*/
+
+/* BUTTONS */
+.Btn1_sun4, .Btn1Hov_sun4, .Btn1Dis_sun4, .Btn2_sun4, .Btn2Hov_sun4, .Btn2Dis_sun4, .Btn1Mni_sun4, .Btn1MniHov_sun4, .Btn1MniDis_sun4, .Btn2Mni_sun4, .Btn2MniHov_sun4, .Btn2MniDis_sun4 {
+	font-size:1.0em;
+}
+/*---*/
+
+/* FILE CHOOSER */
+.ChoLstHdr_sun4 {
+	font-size:1.0em;
+	font-weight: bold;
+}
+.ChoSrvTxt_sun4 {
+	font-size:1.0em;
+}
+/*---*/
+
+/* PAGEALERT [originalName: FULL ALERTS]*/
+.FulAlrtHdrTxt_sun4, .FulAlrtMsgTxt_sun4 {
+	font-size:1.0em;
+}
+.FulAlrtHdrTxt_sun4 {
+	font-weight:bold;
+} 
+/*---*/
+
+/* INLINE ALERT */
+.inlineAlert_4_sun4 .middle_sun4 .details_sun4 {
+	font-size:1.0em;
+}
+.inlineAlert_4_sun4 .middle_sun4 .header_sun4 .label_sun4 {
+	font-size:1.2em;
+	font-weight:bold;
+}
+/*---*/
+
+/* HELP WINDOW */
+body.HlpBdy_sun4 h1, body.HlpBdy_sun4 h2, body.HlpBdy_sun4 h3, body.HlpBdy_sun4 h4, body.HlpBdy_sun4 h5, body.HlpBdy_sun4 h6 {
+	font-family:sans-serif;
+	font-weight:bold;
+}
+body.HlpBdy_sun4 h1 {
+	font-size:1.5em;
+}
+body.HlpBdy_sun4 h2 {
+	font-size:1.3em;
+}
+body.HlpBdy_sun4 h3 {
+	font-size:1.2em;
+}
+body.HlpBdy_sun4 h4 {
+	font-size:1.1em;
+}
+body.HlpBdy_sun4 h5, H6 {
+	font-size:1.0em;
+}
+/*---*/
+
+/* HELPINLINE [originalName: INLINE HELP] */
+.inlineFieldHelp_sun4, a.HlpFldLnk_sun4 {
+	font-size:1.0em;
+}
+/*---*/
+
+/* EDITABLE LIST */
+table.EdtLstTbl_sun4 td.EdtLstRmvLblTd_sun4 span.LblLev2Txt_sun4,
+table.EdtLstTbl_sun4 td.EdtLstAddLblTd_sun4 span.LblLev2Txt_sun4 {
+	font-weight: bold;
+	font-size:1.0em;
+}
+/*---*/
+/* LABEL [originalName: GENERIC FIELD LABELS]*/
+
+.LblLev2Txt_sun4, .LblLev2smTxt_sun4, .LblRqdDiv_sun4, .LblLev3Txt_sun4, .LblLev3TxtDis_sun4 {
+	font-size:1.0em;
+}
+.LblLev1Txt_sun4 {
+	font-size:1.3em;
+}
+.LblLev1Txt_sun4, .LblLev2Txt_sun4, .LblLev2smTxt_sun4,
+.LblLev1TxtDis_sun4, .LblLev2TxtDis_sun4, .LblLev2smTxtDis_sun4, .LblLev3Txt_sun4, .LblLev3TxtDis_sun4 {
+	font-weight:bold;
+}
+/*---*/
+
+/* LEFT PANE HELP */
+.LftHlpDiv_sun4 {
+	font-size:1.0em;
+}
+/*---*/
+
+/* LISTS */
+.LstOptSel_sun4, 
+.LstOptSep_sun4, 
+.LstOptGrp_sun4, 
+.LstDis_sun4 .LstOptGrp_sun4 {
+	font-size:1.0em;
+}
+
+/* Use fixed font size in listboxes with mono-spaced fonts */
+.LstMno_sun4 .LstOptGrp_sun4, 
+.LstMnoDis_sun4 .LstOptGrp_sun4, 
+.LstMno_sun4, 
+.LstMno_sun4 option, 
+.LstMno_sun4 .LstOptGrp_sun4, 
+.LstMnoDis_sun4, 
+.LstMnoDis_sun4 option, 
+.LstMnoDis_sun4 .LstOptGrp_sun4  {
+	font-size:11px;
+}
+
+.LstOptGrp_sun4, .LstDis_sun4 .LstOptGrp_sun4, .LstMno_sun4 .LstOptGrp_sun4, .LstMnoDis_sun4 .LstOptGrp_sun4 {
+	font-weight:normal;
+	font-style:normal;
+}
+.LstMno_sun4, .LstMno_sun4 option, .LstMno_sun4 .LstOptGrp_sun4, .LstMnoDis_sun4, .LstMnoDis_sun4 option, .LstMnoDis_sun4 .LstOptGrp_sun4  {
+	font-family:monospace;
+}
+/*---*/
+
+/* PROPERTY SHEET */
+.ConFldSetLgdDiv_sun4 {
+	font-size:1.1em;
+}
+.ConSubSecTtlTxt_sun4 {
+	font-size:1.5em;
+	font-weight:bold;
+}
+.ConFldSetLgdDiv_sun4, .ConErrLblTxt_sun4, .ConWrnLblTxt_sun4 {
+	font-weight:bold;
+}
+.ConJmpTopDiv_sun4, a.JmpLnk_sun4 {
+	font-size:1.0em;
+}
+/*---*/
+
+/* CONTENTPAGETITLE [originalName: PAGE TITLE]*/
+.TtlVewLbl_sun4 {
+	font-weight:bold;
+}
+.TtlTxt_sun4 {
+	font-size:1.5em;
+	font-weight:bold;
+}
+/*---*/
+
+/* TEXTAREA*/
+.TxtAra_sun4, .TxtAraDis_sun4 {
+	font-family:Arial, Helvetica, sans-serif;
+	font-size:1.0em;
+}
+/*---*/
+
+/* TABSET [originalName: LEVEL TABS]*/
+.Tab1Div_sun4, .Tab2Div_sun4, .Tab3Div_sun4, .MniTabDiv_sun4, .TabGrpBox_sun4 {
+	font-size:1.0em;
+}
+.Tab1Div_sun4, .Tab2Div_sun4, .Tab3Div_sun4, .MniTabDiv_sun4 {
+	font-weight:bold;
+}
+/*---*/
+
+/* SCHEDULER/POPUP CALENDAR*/
+a.DatLnk_sun4:hover, a.DatOthLnk_sun4:hover, .DatLblTxt_sun4, a.DatBldLnk_sun4:link, a.DatBldLnk_sun4:visited, a.DatCurLnk_sun4:link,
+ a.DatCurLnk_sun4:visited, a.DatCurLnk_sun4:hover, a.DatOthBldLnk_sun4:link, a.DatOthBldLnk_sun4:visited, .DatSelContent_sun4 {
+	font-weight:bold;
+}
+.DatDayHdrTxt_sun4 {
+	font-weight:normal;
+}
+a.DatLnk_sun4, a.DatBldLnk_sun4, a.DatOthLnk_sun4, a.DatOthBldLnk_sun4, a.DatCurLnk_sun4, .DatDayHdrTxt_sun4, .DatSelContent_sun4 {
+	font-size:1.1em;
+}
+.DatZonTxt_sun4 {
+	font-size:1.0em;
+}
+.CalPopDiv_sun4 a.DatLnk_sun4, .CalPopDiv_sun4 a.DatBldLnk_sun4, .CalPopDiv_sun4 a.DatOthLnk_sun4, .CalPopDiv_sun4 a.DatOthBldLnk_sun4,
+.CalPopDiv_sun4 a.DatCurLnk_sun4, .CalPopDiv_sun4 .DatDayHdrTxt_sun4, .CalPopDiv_sun4 .DatSelContent_sun4 {
+	font-size:1.0em;
+}
+.CalPopDiv_sun4  a.DatCurLnk_sun4:link,.CalPopDiv_sun4 a.DatCurLnk_sun4:visited, .CalPopDiv_sun4 a.DatBldLnk_sun4:link,.CalPopDiv_sun4 a.DatBldLnk_sun4:visited,
+.CalPopDiv_sun4 a.DatOthBldLnk_sun4:link,.CalPopDiv_sun4 a.DatOthBldLnk_sun4:visited, .CalPopDiv_sun4 .DatDayHdrTxt_sun4 {
+	font-weight:bold;
+}
+/*---*/
+
+/* MASTHEAD */
+span.MstLbl_sun4, span.MstUsrRole_sun4 {
+	font-weight:bold;
+	font-size:1.0em;
+}
+span.MstTxt_sun4 {
+	font-weight:normal;
+	font-size:1.0em;
+}
+a.MstPrgLnk_sun4, a.MstAlmLnk_sun4 {
+	font-size:1.0em;
+	font-weight:bold;
+}
+/*---*/
+
+/* TABLE [originalName: ACTION TABLE] */
+.TblTtlTxt_sun4 {
+	font-size:1.0em;
+	font-weight:bold;
+}
+.TblTtlMsgSpn_sun4 {
+	font-weight:normal;
+}
+.TblHdrTxt_sun4, .TblMultHdrTxt_sun4, .TblGrpTxt_sun4 {
+	font-weight:bold;
+}
+table.Tbl_sun4 th {font-weight:normal}
+table.Tbl_sun4 th.TblMultColHdr_sun4 a.TblHdrLnk_sun4:link, table.Tbl_sun4 th.TblMultColHdr_sun4 a.TblHdrLnk_sun4:visited {font-weight:normal;}
+table.Tbl_sun4 th.TblMultColHdr_sun4 .TblHdrTxt_sun4 {font-weight:normal;}
+table.Tbl_sun4 th.TblMultColHdrSrt_sun4 a.TblHdrLnk_sun4:link, table.Tbl_sun4 th.TblMultColHdrSrt_sun4 a.TblHdrLnk_sun4:visited {font-weight:normal;}
+.TblActLbl_sun4 {font-weight:bold;}
+table.Tbl_sun4 th.TblColHdrSrtSel_sun4 a.TblHdrImgLnk_sun4:link, th.TblColHdrSrtSel_sun4 a.TblHdrImgLnk_sun4:visited {font-weight:bold;}
+table.Tbl_sun4 a.TblHdrLnk_sun4:link, table.Tbl_sun4 a.TblHdrLnk_sun4:visited {font-weight:bold;}
+table.Tbl_sun4 a.TblHdrLnk_sun4:hover {font-weight:bold;}
+table.Tbl_sun4 th.TblColHdrSrt_sun4 a.TblHdrLnk_sun4:link, table.Tbl_sun4 th.TblColHdrSrt_sun4 a.TblHdrLnk_sun4:visited {font-weight:bold;}
+table.Tbl_sun4 th.TblColHdrSrt_sun4 a.TblHdrLnk_sun4:hover {font-weight:bold;}
+table.Tbl_sun4 th.TblColHdrSrt_sun4 a.TblHdrImgLnk_sun4:link, table.Tbl_sun4 th.TblColHdrSrt_sun4 a.TblHdrImgLnk_sun4:visited {font-weight:bold;}
+table.Tbl_sun4 .TblHdrSrtNum_sun4 {font-size:.9em;font-weight:normal;}
+.TblGrpTxt_sun4 {font-weight:bold;}
+.TblColFtrTxt_sun4 {font-weight:bold;}
+table.Tbl_sun4 .TblFtrRowTxt_sun4 {font-weight:bold;}
+table.Tbl_sun4 .TblFtrLft_sun4 {font-weight:bold;}
+.TblGrpColFtrTxt_sun4 {font-weight:bold;}
+.TblGrpFtrRowTxt_sun4 {font-weight:bold;}
+.TblPnlTtl_sun4 {
+	font-size:1.2em;
+	font-weight:bold;
+}
+.TblPnlHlpTxt_sun4 {font-size:1.0em;}
+/*---*/
+
+/* LIGHTWEIGHT TABLE DESIGN */
+/* Table Caption/Title */
+table.TblLt_sun4 caption.TblTtlTxt_sun4 {font-weight:bold;font-size:1.0em;}
+table.TblLt_sun4 caption.TblTtlTxt_sun4 span.TblTtlTxtSpn_sun4 {font-weight:bold;font-size:1.0em;}
+table.TblLt_sun4 caption.TblTtlTxt_sun4 span.TblTtlMsgSpn_sun4 {font-weight:normal;font-size:1.0em;}
+/* Table Footers */ 
+table.TblLt_sun4 .TblFtrRowTxt_sun4 {font-weight:normal;}
+/*---*/
+
+/* TREE */
+.Tree_sun4 {
+	font-size:1.0em;
+}
+.TreTtl_sun4 {
+	font-weight:bold;
+}
+a.TreeParentLink_sun4:link, a.TreeParentLink_sun4:visited {
+	font-weight:bold;
+}
+a.TreeParentLink_sun4:hover {
+	font-weight:bold;
+}
+a.TreeSelLink_sun4:link, a.TreeSelLink_sun4:visited {
+	font-weight:bold;
+}
+a.TreeSelLink_sun4:hover {
+	font-weight:bold;
+}
+.TreeSelText_sun4 {
+	font-weight:bold;
+}
+/*---*/
+
+/* VERSION DIALOG */
+.VrsHdrTxt_sun4 {
+	font-size:1.3em;
+	font-weight:bold;
+} 
+.VrsTxt_sun4 {
+	font-size:1.1em;
+} 
+/*---*/
+
+/* WIZARD */
+.WizStpTitle_sun4, .WizStpTxt_sun4, .WizHlpTxt_sun4, .WizStpCurTxt_sun4, a.WizStpLnk_sun4, .WizSubStpTtlTxt_sun4, .WizCntHlpTxt_sun4 {
+	font-size:1.0em;
+}
+.WizTtlBar_sun4 {
+	font-size:1.3em;
+	font-weight:bold;
+}
+.WizStpTxt_sun4 {
+	font-weight:normal;
+}
+.WizStpTitle_sun4 {
+        font-weight:bold;
+}
+.WizSubStpTtlTxt_sun4, .WizStpCurTxt_sun4 {
+	font-weight:bold;
+}
+.WizSubTtlTxt_sun4 {
+	font-weight:bold;
+	font-size:1.4em;
+}
+/*---*/
diff --git a/jsf-demo/sandbox/flow_and_contract/abc/pom.xml b/jsf-demo/sandbox/flow_and_contract/abc/pom.xml
new file mode 100644
index 0000000..6f85aac
--- /dev/null
+++ b/jsf-demo/sandbox/flow_and_contract/abc/pom.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" 
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <groupId>com.sun.faces.flow_and_contract</groupId>
+    <artifactId>abc</artifactId>
+    <version>1.0</version>
+    <packaging>jar</packaging>
+    <name>abc</name>
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>2.4</version>
+                <configuration>
+                    <source>1.6</source>
+                    <target>1.6</target>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+    <dependencies>
+        <dependency>
+            <groupId>javax.faces</groupId>
+            <artifactId>javax.faces-api</artifactId>
+            <version>2.2</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>javax</groupId>
+            <artifactId>javaee-web-api</artifactId>
+            <version>6.0</version>
+            <scope>provided</scope>
+        </dependency>
+    </dependencies>
+    <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/jsf-demo/sandbox/flow_and_contract/abc/src/main/resources/META-INF/beans.xml b/jsf-demo/sandbox/flow_and_contract/abc/src/main/resources/META-INF/beans.xml
new file mode 100644
index 0000000..c782f57
--- /dev/null
+++ b/jsf-demo/sandbox/flow_and_contract/abc/src/main/resources/META-INF/beans.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- This file can be an empty text file (0 bytes) -->
+<!-- We're declaring the schema to save you time if you do have to configure 
+   this in the future -->
+<beans xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+   xsi:schemaLocation="
+        http://java.sun.com/xml/ns/javaee 
+        http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
+</beans>
diff --git a/jsf-demo/sandbox/flow_and_contract/abc/src/main/resources/META-INF/faces-config.xml b/jsf-demo/sandbox/flow_and_contract/abc/src/main/resources/META-INF/faces-config.xml
new file mode 100644
index 0000000..9a3635d
--- /dev/null
+++ b/jsf-demo/sandbox/flow_and_contract/abc/src/main/resources/META-INF/faces-config.xml
@@ -0,0 +1,66 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<faces-config version="2.2" xmlns="http://xmlns.jcp.org/xml/ns/javaee"
+   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+   xsi:schemaLocation="
+        http://xmlns.jcp.org/xml/ns/javaee
+        http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd">
+
+    <flow-definition id="flow">
+
+        <start-node>a</start-node>
+        <view id="a">
+            <vdl-document>/abc/a.xhtml</vdl-document>
+        </view>
+        <view id="b">
+            <vdl-document>/abc/b.xhtml</vdl-document>
+        </view>
+        <view id="c">
+            <vdl-document>/abc/c.xhtml</vdl-document>
+        </view>
+        <flow-return id="return">
+            <from-outcome>/main</from-outcome>
+        </flow-return>
+        
+    </flow-definition>
+</faces-config>
diff --git a/jsf-demo/sandbox/flow_and_contract/abc/src/main/resources/META-INF/flows/abc/a.xhtml b/jsf-demo/sandbox/flow_and_contract/abc/src/main/resources/META-INF/flows/abc/a.xhtml
new file mode 100644
index 0000000..2d1b465
--- /dev/null
+++ b/jsf-demo/sandbox/flow_and_contract/abc/src/main/resources/META-INF/flows/abc/a.xhtml
@@ -0,0 +1,28 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:h="http://java.sun.com/jsf/html">
+
+
+
+        <ui:composition template="/mainTemplate.xhtml">
+
+            <ui:define name="content">
+
+                    <p>page a</p>
+                    
+                <h:form prependId="false">
+                    
+                    <h:commandButton id="next" value="next"
+                                     action="b"/>
+                    
+                </h:form>
+            </ui:define>
+
+        </ui:composition>
+
+
+
+</html>
diff --git a/jsf-demo/sandbox/flow_and_contract/abc/src/main/resources/META-INF/flows/abc/b.xhtml b/jsf-demo/sandbox/flow_and_contract/abc/src/main/resources/META-INF/flows/abc/b.xhtml
new file mode 100644
index 0000000..79b23bf
--- /dev/null
+++ b/jsf-demo/sandbox/flow_and_contract/abc/src/main/resources/META-INF/flows/abc/b.xhtml
@@ -0,0 +1,29 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:h="http://java.sun.com/jsf/html">
+
+
+
+        <ui:composition template="/mainTemplate.xhtml">
+
+            <ui:define name="content">
+
+                    <p>page b</p>
+                    
+                <h:form prependId="false">
+                    
+                    <h:commandButton id="next" value="next"
+                                     action="c"/>
+                    
+                </h:form>
+            </ui:define>
+
+        </ui:composition>
+
+
+
+
+</html>
diff --git a/jsf-demo/sandbox/flow_and_contract/abc/src/main/resources/META-INF/flows/abc/c.xhtml b/jsf-demo/sandbox/flow_and_contract/abc/src/main/resources/META-INF/flows/abc/c.xhtml
new file mode 100644
index 0000000..0d6641f
--- /dev/null
+++ b/jsf-demo/sandbox/flow_and_contract/abc/src/main/resources/META-INF/flows/abc/c.xhtml
@@ -0,0 +1,28 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:h="http://java.sun.com/jsf/html">
+
+
+
+        <ui:composition template="/mainTemplate.xhtml">
+
+            <ui:define name="content">
+
+                    <p>page c</p>
+                    
+                <h:form prependId="false">
+                    
+                    <h:commandButton id="next" value="next"
+                                     action="return"/>
+                    
+                </h:form>
+            </ui:define>
+
+        </ui:composition>
+
+
+
+</html>
diff --git a/jsf-demo/sandbox/flow_and_contract/app/pom.xml b/jsf-demo/sandbox/flow_and_contract/app/pom.xml
new file mode 100644
index 0000000..b1087d5
--- /dev/null
+++ b/jsf-demo/sandbox/flow_and_contract/app/pom.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <groupId>com.sun.faces.flow_and_contract</groupId>
+    <artifactId>flow_and_contract</artifactId>
+    <version>1.0</version>
+    <packaging>war</packaging>
+    <name>${project.artifactId}</name>
+    <description>A simple project with war packaging that depends on JSF 2.2 and 
+        javaee 6, in that order.</description>
+    <url>http://jsf-spec.java.net/</url>
+    <build>
+        <finalName>${project.artifactId}</finalName>
+        <plugins>
+            <plugin>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                    <source>1.6</source>
+                    <target>1.6</target>
+                </configuration>
+            </plugin>
+            <plugin>
+                <artifactId>maven-war-plugin</artifactId>
+                <configuration>
+                  <failOnMissingWebXml>false</failOnMissingWebXml>
+                </configuration>
+            </plugin>
+
+        </plugins>
+    </build>
+    <properties>
+      <spec.snapshot.version>2.2</spec.snapshot.version>
+        <netbeans.hint.deploy.server>gfv3ee6</netbeans.hint.deploy.server>
+    </properties>
+    <dependencies>
+        <dependency>
+          <groupId>com.sun.faces.flow_and_contract</groupId>
+          <artifactId>cba</artifactId>
+          <version>1.0</version>
+        </dependency>
+        <dependency>
+          <groupId>com.sun.faces.flow_and_contract</groupId>
+          <artifactId>leftNav</artifactId>
+          <version>1.0</version>
+        </dependency>
+        <dependency>
+            <groupId>javax.faces</groupId>
+            <artifactId>javax.faces-api</artifactId>
+            <version>2.2</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>javax</groupId>
+            <artifactId>javaee-api</artifactId>
+            <version>6.0</version>
+            <scope>provided</scope>
+        </dependency>
+    </dependencies>
+
+    <repositories>
+        <repository>
+            <id>java.net-maven2-SNAPSHOT-repository</id>
+            <name>Java.net SNAPSHOT-Repository for Maven</name>
+            <url>https://maven.java.net/content/repositories/snapshots/</url>
+            <layout>default</layout>
+        </repository>
+        <repository>
+            <id>java.net-maven2-repository</id>
+            <name>Java.net Repository for Maven</name>
+            <url>https://maven.java.net/content/repositories/releases/</url>
+            <layout>default</layout>
+        </repository>
+    </repositories>
+</project>
diff --git a/jsf-demo/sandbox/flow_and_contract/app/src/main/java/com/sun/faces/flow_and_contract/UserBean.java b/jsf-demo/sandbox/flow_and_contract/app/src/main/java/com/sun/faces/flow_and_contract/UserBean.java
new file mode 100644
index 0000000..b9cf41c
--- /dev/null
+++ b/jsf-demo/sandbox/flow_and_contract/app/src/main/java/com/sun/faces/flow_and_contract/UserBean.java
@@ -0,0 +1,31 @@
+package com.sun.faces.flow_and_contract;
+
+import java.io.Serializable;
+import javax.enterprise.context.SessionScoped;
+import javax.inject.Named;
+
+ at Named
+ at SessionScoped
+public class UserBean implements Serializable {
+    
+    private boolean navToggle = true;
+
+    public boolean isNavToggle() {
+        return navToggle;
+    }
+
+    public void setNavToggle(boolean navToggle) {
+        this.navToggle = navToggle;
+    }
+    
+    public String getContract() {
+        String result = "leftNav";
+        if (navToggle) {
+            result = "topNav";
+        }
+        return result;
+    }
+    
+    
+}
+
diff --git a/jsf-demo/sandbox/flow_and_contract/app/src/main/webapp/WEB-INF/beans.xml b/jsf-demo/sandbox/flow_and_contract/app/src/main/webapp/WEB-INF/beans.xml
new file mode 100644
index 0000000..e69de29
diff --git a/jsf-demo/sandbox/flow_and_contract/app/src/main/webapp/WEB-INF/glassfish-web.xml b/jsf-demo/sandbox/flow_and_contract/app/src/main/webapp/WEB-INF/glassfish-web.xml
new file mode 100644
index 0000000..913790d
--- /dev/null
+++ b/jsf-demo/sandbox/flow_and_contract/app/src/main/webapp/WEB-INF/glassfish-web.xml
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<glassfish-web-app error-url="">
+  <context-root>/flow_and_contract</context-root>
+  <class-loader delegate="true"/>
+  <jsp-config>
+    <property name="keepgenerated" value="true">
+      <description>Keep a copy of the generated servlet class' java code.</description>
+    </property>
+  </jsp-config>
+</glassfish-web-app>
diff --git a/jsf-demo/sandbox/flow_and_contract/app/src/main/webapp/WEB-INF/web.xml b/jsf-demo/sandbox/flow_and_contract/app/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..092afaa
--- /dev/null
+++ b/jsf-demo/sandbox/flow_and_contract/app/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,39 @@
+<?xml version='1.0' encoding='UTF-8'?>
+
+<web-app version="3.0"
+         xmlns="http://java.sun.com/xml/ns/javaee"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+
+    <display-name>mojarra-regression-test</display-name>
+    <description>A simple regression test to make it easier to get your bug fixed. The only reason we need a web.xml is to set the PROJECT_STAGE to Develoment.  If you have a web.xml, then you need to map the FacesServlet.</description>
+
+    <context-param>
+        <description>
+            Tell the runtime where we are in the project development
+            lifecycle.  Valid values are: 
+            Development, UnitTest, SystemTest, or Production.
+            The runtime will display helpful hints to correct common mistakes
+            when the value is Development.
+        </description>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>Development</param-value>
+    </context-param>
+
+    <!-- Faces Servlet -->
+  <servlet>
+    <servlet-name>Faces Servlet</servlet-name>
+    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+    <load-on-startup>1</load-on-startup>
+  </servlet>
+
+   <servlet-mapping>
+       <servlet-name>Faces Servlet</servlet-name>
+       <url-pattern>/faces/*</url-pattern>
+   </servlet-mapping>
+
+   <welcome-file-list>
+     <welcome-file>faces/main.xhtml</welcome-file>
+   </welcome-file-list>
+
+</web-app>
diff --git a/jsf-demo/sandbox/flow_and_contract/app/src/main/webapp/main.xhtml b/jsf-demo/sandbox/flow_and_contract/app/src/main/webapp/main.xhtml
new file mode 100644
index 0000000..e4251e9
--- /dev/null
+++ b/jsf-demo/sandbox/flow_and_contract/app/src/main/webapp/main.xhtml
@@ -0,0 +1,24 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+
+<ui:composition template="/mainTemplate.xhtml">
+
+    <ui:define name="content">
+        <p>Main content</p>
+        
+        <h:form>
+            
+            <h:commandButton value="enter flow" action="flow" />
+            
+            
+        </h:form>
+        
+    </ui:define>
+
+</ui:composition>
+    
+</html>
diff --git a/jsf-demo/sandbox/flow_and_contract/app/src/main/webapp/mainTemplate.xhtml b/jsf-demo/sandbox/flow_and_contract/app/src/main/webapp/mainTemplate.xhtml
new file mode 100644
index 0000000..ca9e548
--- /dev/null
+++ b/jsf-demo/sandbox/flow_and_contract/app/src/main/webapp/mainTemplate.xhtml
@@ -0,0 +1,36 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+
+        <ui:composition template="/menu.xhtml">
+
+            <ui:define name="title">
+                Flows and Contracts in Context
+            </ui:define>
+
+            <ui:define name="menu">
+                
+                <ul>
+                    
+                    <li>Item 1</li> 
+                    <li>Item 2</li> 
+                    <li>Item 3</li> 
+
+                </ul>
+                
+            </ui:define>
+
+            <ui:define name="content">
+                    
+                <ui:insert name="content">
+                    
+                </ui:insert>
+                
+            </ui:define>
+
+        </ui:composition>
+
+</html>
diff --git a/jsf-demo/sandbox/flow_and_contract/cba/pom.xml b/jsf-demo/sandbox/flow_and_contract/cba/pom.xml
new file mode 100644
index 0000000..a6b915f
--- /dev/null
+++ b/jsf-demo/sandbox/flow_and_contract/cba/pom.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" 
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <groupId>com.sun.faces.flow_and_contract</groupId>
+    <artifactId>cba</artifactId>
+    <version>1.0</version>
+    <packaging>jar</packaging>
+    <name>cba</name>
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>2.4</version>
+                <configuration>
+                    <source>1.6</source>
+                    <target>1.6</target>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+    <dependencies>
+        <dependency>
+            <groupId>javax.faces</groupId>
+            <artifactId>javax.faces-api</artifactId>
+            <version>2.2</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>javax</groupId>
+            <artifactId>javaee-web-api</artifactId>
+            <version>6.0</version>
+            <scope>provided</scope>
+        </dependency>
+    </dependencies>
+    <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/jsf-demo/sandbox/flow_and_contract/cba/src/main/resources/META-INF/beans.xml b/jsf-demo/sandbox/flow_and_contract/cba/src/main/resources/META-INF/beans.xml
new file mode 100644
index 0000000..c782f57
--- /dev/null
+++ b/jsf-demo/sandbox/flow_and_contract/cba/src/main/resources/META-INF/beans.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- This file can be an empty text file (0 bytes) -->
+<!-- We're declaring the schema to save you time if you do have to configure 
+   this in the future -->
+<beans xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+   xsi:schemaLocation="
+        http://java.sun.com/xml/ns/javaee 
+        http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
+</beans>
diff --git a/jsf-demo/sandbox/flow_and_contract/cba/src/main/resources/META-INF/faces-config.xml b/jsf-demo/sandbox/flow_and_contract/cba/src/main/resources/META-INF/faces-config.xml
new file mode 100644
index 0000000..fcff3c0
--- /dev/null
+++ b/jsf-demo/sandbox/flow_and_contract/cba/src/main/resources/META-INF/faces-config.xml
@@ -0,0 +1,66 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<faces-config version="2.2" xmlns="http://xmlns.jcp.org/xml/ns/javaee"
+   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+   xsi:schemaLocation="
+        http://xmlns.jcp.org/xml/ns/javaee
+        http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd">
+
+    <flow-definition id="flow">
+
+        <start-node>c</start-node>
+        <view id="a">
+            <vdl-document>/cba/a.xhtml</vdl-document>
+        </view>
+        <view id="b">
+            <vdl-document>/cba/b.xhtml</vdl-document>
+        </view>
+        <view id="c">
+            <vdl-document>/cba/c.xhtml</vdl-document>
+        </view>
+        <flow-return id="return">
+            <from-outcome>/main</from-outcome>
+        </flow-return>
+        
+    </flow-definition>
+</faces-config>
diff --git a/jsf-demo/sandbox/flow_and_contract/cba/src/main/resources/META-INF/flows/cba/a.xhtml b/jsf-demo/sandbox/flow_and_contract/cba/src/main/resources/META-INF/flows/cba/a.xhtml
new file mode 100644
index 0000000..1a436f8
--- /dev/null
+++ b/jsf-demo/sandbox/flow_and_contract/cba/src/main/resources/META-INF/flows/cba/a.xhtml
@@ -0,0 +1,28 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:h="http://java.sun.com/jsf/html">
+
+
+
+        <ui:composition template="/mainTemplate.xhtml">
+
+            <ui:define name="content">
+
+                    <p>page a</p>
+                    
+                <h:form prependId="false">
+                    
+                    <h:commandButton id="next" value="next"
+                                     action="return"/>
+                    
+                </h:form>
+            </ui:define>
+
+        </ui:composition>
+
+
+
+</html>
diff --git a/jsf-demo/sandbox/flow_and_contract/cba/src/main/resources/META-INF/flows/cba/b.xhtml b/jsf-demo/sandbox/flow_and_contract/cba/src/main/resources/META-INF/flows/cba/b.xhtml
new file mode 100644
index 0000000..2d883eb
--- /dev/null
+++ b/jsf-demo/sandbox/flow_and_contract/cba/src/main/resources/META-INF/flows/cba/b.xhtml
@@ -0,0 +1,29 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:h="http://java.sun.com/jsf/html">
+
+
+
+        <ui:composition template="/mainTemplate.xhtml">
+
+            <ui:define name="content">
+
+                    <p>page b</p>
+                    
+                <h:form prependId="false">
+                    
+                    <h:commandButton id="next" value="next"
+                                     action="a"/>
+                    
+                </h:form>
+            </ui:define>
+
+        </ui:composition>
+
+
+
+
+</html>
diff --git a/jsf-demo/sandbox/flow_and_contract/cba/src/main/resources/META-INF/flows/cba/c.xhtml b/jsf-demo/sandbox/flow_and_contract/cba/src/main/resources/META-INF/flows/cba/c.xhtml
new file mode 100644
index 0000000..5beba72
--- /dev/null
+++ b/jsf-demo/sandbox/flow_and_contract/cba/src/main/resources/META-INF/flows/cba/c.xhtml
@@ -0,0 +1,28 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:h="http://java.sun.com/jsf/html">
+
+
+
+        <ui:composition template="/mainTemplate.xhtml">
+
+            <ui:define name="content">
+
+                    <p>page c</p>
+                    
+                <h:form prependId="false">
+                    
+                    <h:commandButton id="next" value="next"
+                                     action="b"/>
+                    
+                </h:form>
+            </ui:define>
+
+        </ui:composition>
+
+
+
+</html>
diff --git a/jsf-demo/sandbox/flow_and_contract/leftNav/pom.xml b/jsf-demo/sandbox/flow_and_contract/leftNav/pom.xml
new file mode 100644
index 0000000..e35c2b9
--- /dev/null
+++ b/jsf-demo/sandbox/flow_and_contract/leftNav/pom.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" 
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <groupId>com.sun.faces.flow_and_contract</groupId>
+    <artifactId>leftNav</artifactId>
+    <version>1.0</version>
+    <packaging>jar</packaging>
+    <name>leftNav</name>
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>2.4</version>
+                <configuration>
+                    <source>1.6</source>
+                    <target>1.6</target>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+    <dependencies>
+        <dependency>
+            <groupId>javax.faces</groupId>
+            <artifactId>javax.faces-api</artifactId>
+            <version>2.2</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>javax</groupId>
+            <artifactId>javaee-web-api</artifactId>
+            <version>6.0</version>
+            <scope>provided</scope>
+        </dependency>
+    </dependencies>
+    <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/jsf-demo/sandbox/flow_and_contract/leftNav/src/main/resources/META-INF/contracts/leftNav/cssLayout.css b/jsf-demo/sandbox/flow_and_contract/leftNav/src/main/resources/META-INF/contracts/leftNav/cssLayout.css
new file mode 100644
index 0000000..8ee7ceb
--- /dev/null
+++ b/jsf-demo/sandbox/flow_and_contract/leftNav/src/main/resources/META-INF/contracts/leftNav/cssLayout.css
@@ -0,0 +1,61 @@
+
+#top {
+    position: relative;
+    background-color: #036fab;
+    color: white;
+    padding: 5px;
+    margin: 0px 0px 10px 0px;
+}
+
+#bottom {
+    position: relative;
+    background-color: #c2dfef;
+    padding: 5px;
+    margin: 10px 0px 0px 0px;
+}
+
+#left {
+    float: left;
+    background-color: #ece3a5;
+    padding: 5px;
+    width: 150px;
+}
+
+#right {
+    float: right;
+    background-color: #ece3a5;
+    padding: 5px;
+    width: 150px;
+}
+
+.center_content {
+    position: relative;
+    background-color: #dddddd;
+    padding: 5px;
+}
+
+.left_content {
+    background-color: #dddddd;
+    padding: 5px;
+    margin-left: 170px;
+}
+
+.right_content {
+    background-color: #dddddd;
+    padding: 5px;
+    margin: 0px 170px 0px 170px;
+}
+
+#top a:link, #top a:visited {
+  color: white;
+  font-weight : bold;
+  text-decoration: none;
+}
+
+#top a:link:hover, #top a:visited:hover  {
+  color: black;
+  font-weight : bold;
+  text-decoration : underline;
+}
+
+
diff --git a/jsf-demo/sandbox/flow_and_contract/leftNav/src/main/resources/META-INF/contracts/leftNav/default.css b/jsf-demo/sandbox/flow_and_contract/leftNav/src/main/resources/META-INF/contracts/leftNav/default.css
new file mode 100644
index 0000000..6cbc3d1
--- /dev/null
+++ b/jsf-demo/sandbox/flow_and_contract/leftNav/src/main/resources/META-INF/contracts/leftNav/default.css
@@ -0,0 +1,29 @@
+body {
+    background-color: #ffffff;
+    font-size: 12px;
+    font-family: Verdana, "Verdana CE",  Arial, "Arial CE", "Lucida Grande CE", lucida, "Helvetica CE", sans-serif;
+    color: #000000;  
+    margin: 10px;
+}
+
+h1 {
+    font-family: Arial, "Arial CE", "Lucida Grande CE", lucida, "Helvetica CE", sans-serif;
+    border-bottom: 1px solid #AFAFAF; 
+    font-size:  16px;
+    font-weight: bold;
+    margin: 0px;
+    padding: 0px;
+    color: #D20005;
+}
+
+a:link, a:visited {
+  color: #045491;
+  font-weight : bold;
+  text-decoration: none;
+}
+
+a:link:hover, a:visited:hover  {
+  color: #045491;
+  font-weight : bold;
+  text-decoration : underline;
+}
diff --git a/jsf-demo/sandbox/flow_and_contract/leftNav/src/main/resources/META-INF/contracts/leftNav/javax.faces.contract.xml b/jsf-demo/sandbox/flow_and_contract/leftNav/src/main/resources/META-INF/contracts/leftNav/javax.faces.contract.xml
new file mode 100644
index 0000000..e69de29
diff --git a/jsf-demo/sandbox/flow_and_contract/leftNav/src/main/resources/META-INF/contracts/leftNav/menu.xhtml b/jsf-demo/sandbox/flow_and_contract/leftNav/src/main/resources/META-INF/contracts/leftNav/menu.xhtml
new file mode 100644
index 0000000..4cf5b85
--- /dev/null
+++ b/jsf-demo/sandbox/flow_and_contract/leftNav/src/main/resources/META-INF/contracts/leftNav/menu.xhtml
@@ -0,0 +1,26 @@
+<?xml version='1.0' encoding='UTF-8' ?> 
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
+      xmlns:h="http://xmlns.jcp.org/jsf/html">
+
+    <h:head>
+        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+        <h:outputStylesheet name="default.css" />
+        <h:outputStylesheet name="cssLayout.css" />
+        <title><ui:insert name="title"/></title>
+    </h:head>
+
+    <h:body>
+
+        <div id="left">
+            <ui:insert name="menu">Menu</ui:insert>
+        </div>
+        <div id="content" class="left_content">
+
+            <ui:insert name="content">Content</ui:insert>
+        </div>
+
+    </h:body>
+
+</html>
diff --git a/jsf-demo/sandbox/flow_and_contract/pom.xml b/jsf-demo/sandbox/flow_and_contract/pom.xml
new file mode 100644
index 0000000..8f88a7c
--- /dev/null
+++ b/jsf-demo/sandbox/flow_and_contract/pom.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <groupId>com.sun.faces.flow_and_contract</groupId>
+    <artifactId>pom</artifactId>
+    <version>1.0</version>
+    <packaging>pom</packaging>
+    <name>flow_and_contract multi-module</name>
+    <modules>
+        <module>leftNav</module>
+        <module>topNav</module>
+        <module>abc</module>
+        <module>cba</module>
+        <module>app</module>
+    </modules>
+</project>
diff --git a/jsf-demo/sandbox/flow_and_contract/topNav/pom.xml b/jsf-demo/sandbox/flow_and_contract/topNav/pom.xml
new file mode 100644
index 0000000..4114bd0
--- /dev/null
+++ b/jsf-demo/sandbox/flow_and_contract/topNav/pom.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" 
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <groupId>com.sun.faces.flow_and_contract</groupId>
+    <artifactId>topNav</artifactId>
+    <version>1.0</version>
+    <packaging>jar</packaging>
+    <name>topNav</name>
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>2.4</version>
+                <configuration>
+                    <source>1.6</source>
+                    <target>1.6</target>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+    <dependencies>
+        <dependency>
+            <groupId>javax.faces</groupId>
+            <artifactId>javax.faces-api</artifactId>
+            <version>2.2</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>javax</groupId>
+            <artifactId>javaee-web-api</artifactId>
+            <version>6.0</version>
+            <scope>provided</scope>
+        </dependency>
+    </dependencies>
+    <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/jsf-demo/sandbox/flow_and_contract/topNav/src/main/resources/META-INF/contracts/topNav/cssLayout.css b/jsf-demo/sandbox/flow_and_contract/topNav/src/main/resources/META-INF/contracts/topNav/cssLayout.css
new file mode 100644
index 0000000..8ee7ceb
--- /dev/null
+++ b/jsf-demo/sandbox/flow_and_contract/topNav/src/main/resources/META-INF/contracts/topNav/cssLayout.css
@@ -0,0 +1,61 @@
+
+#top {
+    position: relative;
+    background-color: #036fab;
+    color: white;
+    padding: 5px;
+    margin: 0px 0px 10px 0px;
+}
+
+#bottom {
+    position: relative;
+    background-color: #c2dfef;
+    padding: 5px;
+    margin: 10px 0px 0px 0px;
+}
+
+#left {
+    float: left;
+    background-color: #ece3a5;
+    padding: 5px;
+    width: 150px;
+}
+
+#right {
+    float: right;
+    background-color: #ece3a5;
+    padding: 5px;
+    width: 150px;
+}
+
+.center_content {
+    position: relative;
+    background-color: #dddddd;
+    padding: 5px;
+}
+
+.left_content {
+    background-color: #dddddd;
+    padding: 5px;
+    margin-left: 170px;
+}
+
+.right_content {
+    background-color: #dddddd;
+    padding: 5px;
+    margin: 0px 170px 0px 170px;
+}
+
+#top a:link, #top a:visited {
+  color: white;
+  font-weight : bold;
+  text-decoration: none;
+}
+
+#top a:link:hover, #top a:visited:hover  {
+  color: black;
+  font-weight : bold;
+  text-decoration : underline;
+}
+
+
diff --git a/jsf-demo/sandbox/flow_and_contract/topNav/src/main/resources/META-INF/contracts/topNav/default.css b/jsf-demo/sandbox/flow_and_contract/topNav/src/main/resources/META-INF/contracts/topNav/default.css
new file mode 100644
index 0000000..6cbc3d1
--- /dev/null
+++ b/jsf-demo/sandbox/flow_and_contract/topNav/src/main/resources/META-INF/contracts/topNav/default.css
@@ -0,0 +1,29 @@
+body {
+    background-color: #ffffff;
+    font-size: 12px;
+    font-family: Verdana, "Verdana CE",  Arial, "Arial CE", "Lucida Grande CE", lucida, "Helvetica CE", sans-serif;
+    color: #000000;  
+    margin: 10px;
+}
+
+h1 {
+    font-family: Arial, "Arial CE", "Lucida Grande CE", lucida, "Helvetica CE", sans-serif;
+    border-bottom: 1px solid #AFAFAF; 
+    font-size:  16px;
+    font-weight: bold;
+    margin: 0px;
+    padding: 0px;
+    color: #D20005;
+}
+
+a:link, a:visited {
+  color: #045491;
+  font-weight : bold;
+  text-decoration: none;
+}
+
+a:link:hover, a:visited:hover  {
+  color: #045491;
+  font-weight : bold;
+  text-decoration : underline;
+}
diff --git a/jsf-demo/sandbox/flow_and_contract/topNav/src/main/resources/META-INF/contracts/topNav/javax.faces.contract.xml b/jsf-demo/sandbox/flow_and_contract/topNav/src/main/resources/META-INF/contracts/topNav/javax.faces.contract.xml
new file mode 100644
index 0000000..e69de29
diff --git a/jsf-demo/sandbox/flow_and_contract/topNav/src/main/resources/META-INF/contracts/topNav/menu.xhtml b/jsf-demo/sandbox/flow_and_contract/topNav/src/main/resources/META-INF/contracts/topNav/menu.xhtml
new file mode 100644
index 0000000..de33f5f
--- /dev/null
+++ b/jsf-demo/sandbox/flow_and_contract/topNav/src/main/resources/META-INF/contracts/topNav/menu.xhtml
@@ -0,0 +1,26 @@
+<?xml version='1.0' encoding='UTF-8' ?> 
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:h="http://java.sun.com/jsf/html">
+
+    <h:head>
+        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+        <h:outputStylesheet name="default.css" />
+        <h:outputStylesheet name="cssLayout.css" />
+        <title><ui:insert name="title"/></title>
+    </h:head>
+
+    <h:body>
+
+        <div id="top" class="top">
+            <ui:insert name="menu">Menu</ui:insert>
+        </div>
+
+        <div id="content" class="center_content">
+            <ui:insert name="content">Content</ui:insert>
+        </div>
+
+    </h:body>
+
+</html>
diff --git a/jsf-demo/sandbox/groovy-demo/pom.xml b/jsf-demo/sandbox/groovy-demo/pom.xml
new file mode 100644
index 0000000..4a6937e
--- /dev/null
+++ b/jsf-demo/sandbox/groovy-demo/pom.xml
@@ -0,0 +1,139 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<!--
+
+Copyright (c) 2009, Ed Burns
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+Redistributions of source code must retain the above copyright notice,
+this list of conditions and the following disclaimer.  Redistributions
+in binary form must reproduce the above copyright notice, this list of
+conditions and the following disclaimer in the documentation and/or
+other materials provided with the distribution.
+
+Neither the name of Ed Burns nor the names of his contributors
+may be used to endorse or promote products derived from this software
+without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
+OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+-->
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>com.sun.faces.groovy</groupId>
+  <artifactId>groovy-demo</artifactId>
+  <version>1.0</version>
+  <packaging>war</packaging>
+  <name>demo</name>
+  <url>https://jsfcompref.com/</url>
+  <description>Simple archetype</description>
+
+  <build>
+   <finalName>${project.artifactId}</finalName>
+   <pluginManagement>
+     <plugins>
+       <plugin>
+         <groupId>org.apache.maven.plugins</groupId>
+         <artifactId>maven-compiler-plugin</artifactId>
+         <configuration>
+           <source>1.5</source>
+           <target>1.5</target>
+         </configuration>
+       </plugin>
+       <plugin>
+	 <groupId>org.apache.maven.plugins</groupId>
+	 <artifactId>maven-war-plugin</artifactId>
+         <version>2.1-alpha-2</version>
+         <configuration>
+           <failOnMissingWebXml>false</failOnMissingWebXml>
+         </configuration>
+       </plugin>
+
+     </plugins>
+   </pluginManagement>
+  </build>
+
+  <repositories>
+    <repository>
+      <id>maven2-repository.dev.java.net</id>
+      <name>Java.net Repository for Maven</name>
+      <url>http://download.java.net/maven/2/</url>
+    </repository>
+    <repository>
+      <snapshots />
+      <id>codecaus</id>
+      <name>codehaus</name>
+      <url>http://repository.codehaus.org</url>
+    </repository>
+    <repository>
+      <snapshots />
+      <id>ibiblio</id>
+      <url>http://www.ibiblio.org/maven2/</url>
+    </repository>
+  </repositories>
+
+  <dependencies>
+        <dependency>
+            <groupId>javax</groupId>
+            <artifactId>javaee-api</artifactId>
+            <version>6.0</version>
+            <scope>provided</scope>
+        </dependency>
+  </dependencies>
+
+</project>
diff --git a/jsf-demo/sandbox/groovy-demo/src/main/java/com/sun/faces/groovy/UserBean.java b/jsf-demo/sandbox/groovy-demo/src/main/java/com/sun/faces/groovy/UserBean.java
new file mode 100644
index 0000000..5f1906e
--- /dev/null
+++ b/jsf-demo/sandbox/groovy-demo/src/main/java/com/sun/faces/groovy/UserBean.java
@@ -0,0 +1,129 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.groovy;
+
+import java.util.Date;
+import javax.faces.application.FacesMessage;
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.ViewScoped;
+import javax.faces.validator.ValidatorException;
+
+ at ManagedBean
+ at ViewScoped
+public class UserBean {
+    
+    protected String firstName;
+    protected String lastName;
+    protected Date dob;
+    protected String sex;
+    protected String email;
+    protected String serviceLevel = "medium";
+
+    public String getFirstName() {
+        return firstName;
+    }
+
+    public void setFirstName(String firstName) {
+        this.firstName = firstName;
+    }
+
+    public String getLastName() {
+        return lastName;
+    }
+
+    public void setLastName(String lastName) {
+        this.lastName = lastName;
+    }
+
+    public Date getDob() {
+        return dob;
+    }
+
+    public void setDob(Date dob) {
+        this.dob = dob;
+    }
+
+    public String getSex() {
+        return sex;
+    }
+
+    public void setSex(String sex) {
+        this.sex = sex;
+    }
+
+    public String getEmail() {
+        return email;
+    }
+
+    public void setEmail(String email) {
+        this.email = email;
+    }
+
+    public String getServiceLevel() {
+        return serviceLevel;
+    }
+
+    public void setServiceLevel(String serviceLevel) {
+        this.serviceLevel = serviceLevel;
+    }
+    
+    public void validateEmail(FacesContext context, UIComponent toValidate,
+            Object value) throws ValidatorException {
+        String emailStr = (String) value;
+        if (-1 == emailStr.indexOf("@")) {
+            FacesMessage message = new FacesMessage("Invalid email address");
+            throw new ValidatorException(message);
+        }
+    }
+
+    public String addConfirmedUser() {
+        // This method would call a database or other service and add the 
+        // confirmed user information.
+        // For now, we just place an informative message in request scope
+        FacesMessage doneMessage = 
+                new FacesMessage("Successfully added new user");
+        FacesContext.getCurrentInstance().addMessage(null, doneMessage);
+        return "done";
+    }
+}
+
diff --git a/jsf-demo/sandbox/groovy-demo/src/main/java/com/sun/faces/systest/Name.java b/jsf-demo/sandbox/groovy-demo/src/main/java/com/sun/faces/systest/Name.java
new file mode 100644
index 0000000..31118d8
--- /dev/null
+++ b/jsf-demo/sandbox/groovy-demo/src/main/java/com/sun/faces/systest/Name.java
@@ -0,0 +1,81 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest;
+
+import java.util.StringTokenizer;
+
+public class Name {
+  String first = "";
+  String last = "";
+
+    public Name(String name) {
+
+        System.out.println("Name : name = " + name);
+        StringTokenizer token = new StringTokenizer(name);
+        String[] nameArray = new String[2];
+        int i = 0;
+        while (token.hasMoreTokens()) {
+            nameArray[i] = token.nextToken();
+            //System.out.println("Name : nameArray[" + i + "] = " + nameArray[i]);
+            i++;
+        }
+        if (nameArray[0] != null)
+            this.first = nameArray[0].toUpperCase();
+        if (nameArray[1] != null)
+            this.last = nameArray[1].toUpperCase();
+    }
+
+    public String getFirst() {
+        return first;
+    }
+
+    public String  getLast() {
+        return last;
+    }
+
+    public void setFirst(String first) {
+        this.first = first;
+    }
+
+    public void setLast(String last) {
+        this.last = last;
+    }
+}
diff --git a/jsf-demo/sandbox/groovy-demo/src/main/webapp/README.txt b/jsf-demo/sandbox/groovy-demo/src/main/webapp/README.txt
new file mode 100644
index 0000000..cdb40a7
--- /dev/null
+++ b/jsf-demo/sandbox/groovy-demo/src/main/webapp/README.txt
@@ -0,0 +1,61 @@
+ This test has been disabled for now since it needs all the following jars in the web/WEB-INF/lib dir.
+ Need to make this work with all the jars in the app server land.
+
+ Groovy support in JSFs is working. The following JSF artifacts have been implemented as Groovy scripts :
+
+- ManagedBeans
+- Converter
+- Validator
+- UIComponent
+- Renderer
+
+The package structure for jsf-ri/systest-per-webapp/groovy looks as follows :
+
+src/java/com/sun/faces/systest/GroovyTestCase.java
+src/java/com/sun/faces/systest/Name.java (just a POJO)
+
+web/WEB-INF/groovy/hello/AgeComponent.groovy -->    Groovy script as a UIComponent
+web/WEB-INF/groovy/hello/MessageOutput.groovy   --> Groovy script as a UIComponent  (does'nt do much. But I see it getting initialized in the server log)
+web/WEB-INF/groovy/hello/NameConverter.groovy --> as a converter (converts the name to upper case)
+web/WEB-INF/groovy/hello/HelloBean.groovy        --> as a managedbean (holds the name and age)
+web/WEB-INF/groovy/hello/MessageRenderer.groovy  --> as a renderer (sends back the message in a certain HTML format).
+web/WEB-INF/groovy/hello/NameValidator.groovy  --> as a validator (makes sure the age is between 0 and 65)
+
+Add the following groovy related jars to web/WEB-INF/lib:
+web/WEB-INF/lib/antlr-2.7.7.jar
+web/WEB-INF/lib/groovy-1.7.3.jar
+web/WEB-INF/lib/asm-3.2.jar
+web/WEB-INF/lib/asm-commons-3.2.jar
+web/WEB-INF/lib/asm-tree-3.2.jar
+web/WEB-INF/lib/asm-analysis-3.2.jar
+web/WEB-INF/lib/asm-util-3.2.jar
+
+Next are the JSF related jars (add them to web/WEB-INF/lib):
+web/WEB-INF/lib/jsf-api.jar
+web/WEB-INF/lib/jsf-impl.jar
+
+The next 2 jars are needed from the GF land (else we see ClassCastExceptions related to casting a class loaded by GF class loader to a class loaded by the Mojarra class loader. I'm not very happy about putting GF jars into the app. Will need to find a new solution later)
+web/WEB-INF/lib/weld-integration.jar
+web/WEB-INF/lib/osgi-web-container.jar
+
+web/WEB-INF/web.xml (has some key settings needed to enable Groovy)
+web/Web-inf/sun-web.xml (has the setting to use the libraries that are packaged and over ride the ones in the GF install dir)
+web/hello.xhtml
+web/submit.xhtml
+
+
+What worked :
+1>Package the devtest with web/WEB-INF/lib containing 1> the groovy jars (groovy-all-*.jar or groovy.jar with the asm jars and the antlr jar) 2> weld-integration.jar 3> osgi-web-container.jar 4> jsf RI and API jars
+2> add a sun-web.xml to ignore the default impl and use what's packaged with the app.
+3> add faces-config.xml with contents as follows :
+<managed-bean>
+    <managed-bean-name>hello</managed-bean-name>
+    <managed-bean-class>hello/HelloBean</managed-bean-class>
+    <managed-bean-scope>session</managed-bean-scope>
+  </managed-bean>
+.........
+
+Notice how the bean has been specified with a '/' and not a '.' for the package name. One may or may not add the '.groovy' extension. This change seems a bit odd since '.' seems to be the right way of specifying a class. Maybe the Mojarra class loader needs to be modified to accept '.' and convert it to '/' ?
+
+what did not work as of now :
+I tried adding the jars to Glassfish v3 lib dir instead of packaging them into the app. Added the OSGi module of groovy.jar to the modules dir in GF. But I'm still having some trouble getting it to work. It might just be something trivial. Will spend some time on this a little later.
diff --git a/jsf-demo/sandbox/groovy-demo/src/main/webapp/WEB-INF/faces-config.xml b/jsf-demo/sandbox/groovy-demo/src/main/webapp/WEB-INF/faces-config.xml
new file mode 100644
index 0000000..7d04ff3
--- /dev/null
+++ b/jsf-demo/sandbox/groovy-demo/src/main/webapp/WEB-INF/faces-config.xml
@@ -0,0 +1,85 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
+              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+              xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
+              version="2.0">
+
+    <converter>
+        <converter-id>nameconverter</converter-id>
+        <converter-class>hello/NameConverter</converter-class>
+    </converter>
+
+    <validator>
+      <validator-id>namevalidator</validator-id>
+        <validator-class>hello/NameValidator</validator-class>
+    </validator>
+
+     <component>
+        <component-type>agecomponent</component-type>
+        <component-class>hello/AgeComponent</component-class>
+    </component>
+
+    <component>
+        <component-type>messageoutput</component-type>
+        <component-class>hello/MessageOutput</component-class>
+    </component>
+
+    <managed-bean>
+        <managed-bean-name>hello</managed-bean-name>
+        <managed-bean-class>hello/HelloBean</managed-bean-class>
+        <managed-bean-scope>session</managed-bean-scope>
+    </managed-bean>
+
+    <render-kit>
+        <description>Render the message</description>
+        <renderer>
+                <component-family>javax.faces.Output</component-family>
+                <renderer-type>messagerenderer</renderer-type>
+                <renderer-class>hello/MessageRenderer</renderer-class>
+        </renderer>
+     </render-kit>
+
+
+</faces-config>
diff --git a/jsf-demo/sandbox/groovy-demo/src/main/webapp/WEB-INF/groovy-taglib.xml b/jsf-demo/sandbox/groovy-demo/src/main/webapp/WEB-INF/groovy-taglib.xml
new file mode 100644
index 0000000..74c0105
--- /dev/null
+++ b/jsf-demo/sandbox/groovy-demo/src/main/webapp/WEB-INF/groovy-taglib.xml
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<facelet-taglib xmlns="http://java.sun.com/xml/ns/javaee"
+              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+              xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facelettaglibrary_2_0.xsd"
+              version="2.0">
+    <namespace>http://mojarra.dev.java.net/source1</namespace>
+    <tag>
+        <tag-name>hello</tag-name>
+        <component>
+            <component-type>agecomponent</component-type>
+        </component>
+
+    </tag>
+
+    <tag>
+        <tag-name>messageoutput</tag-name>
+        <component>
+            <component-type>messageoutput</component-type>
+        </component>
+
+    </tag>
+
+     <tag>
+         <tag-name>renderer</tag-name>
+         <component>
+             <component-type>javax.faces.Output</component-type>
+             <renderer-type>messagerenderer</renderer-type>
+         </component>
+     </tag>
+
+</facelet-taglib>
diff --git a/jsf-demo/sandbox/groovy-demo/src/main/webapp/WEB-INF/groovy/hello/AgeComponent.groovy b/jsf-demo/sandbox/groovy-demo/src/main/webapp/WEB-INF/groovy/hello/AgeComponent.groovy
new file mode 100644
index 0000000..efe768d
--- /dev/null
+++ b/jsf-demo/sandbox/groovy-demo/src/main/webapp/WEB-INF/groovy/hello/AgeComponent.groovy
@@ -0,0 +1,10 @@
+package hello
+
+import javax.faces.component.UIInput;
+
+public class AgeComponent extends UIInput {
+  public AgeComponent() {
+    System.out.println("AgeComponent initialized...");
+  }
+  
+}
\ No newline at end of file
diff --git a/jsf-demo/sandbox/groovy-demo/src/main/webapp/WEB-INF/groovy/hello/HelloBean.groovy b/jsf-demo/sandbox/groovy-demo/src/main/webapp/WEB-INF/groovy/hello/HelloBean.groovy
new file mode 100644
index 0000000..e4f51f9
--- /dev/null
+++ b/jsf-demo/sandbox/groovy-demo/src/main/webapp/WEB-INF/groovy/hello/HelloBean.groovy
@@ -0,0 +1,32 @@
+package hello
+
+//import javax.faces.bean.ManagedBean
+//import javax.faces.bean.ApplicationScoped
+
+//@ManagedBean(name = "hello", eager = true)
+//@ApplicationScoped
+public class HelloBean {
+    String fname;
+  int age;
+
+    public HelloBean() {
+        System.out.println("HelloBean instantiated")
+    }
+    public String getMessage() {
+        return "Hello " + fname + ", You are " + age + " years old. Happy Birthday!"
+    }
+    public String getFname() {
+        return fname
+    }
+    public  void setFname(String name) {
+        this.fname = name
+    }
+
+  public int getAge() {
+    return age;
+  }
+
+  public void setAge(int age) {
+    this.age = age;
+  }
+}
\ No newline at end of file
diff --git a/jsf-demo/sandbox/groovy-demo/src/main/webapp/WEB-INF/groovy/hello/MessageOutput.groovy b/jsf-demo/sandbox/groovy-demo/src/main/webapp/WEB-INF/groovy/hello/MessageOutput.groovy
new file mode 100644
index 0000000..b5956f3
--- /dev/null
+++ b/jsf-demo/sandbox/groovy-demo/src/main/webapp/WEB-INF/groovy/hello/MessageOutput.groovy
@@ -0,0 +1,20 @@
+package com.sun.faces.systest;
+
+import javax.faces.context.FacesContext;
+import javax.faces.context.ResponseWriter;
+import javax.faces.component.UIComponentBase;
+import java.io.IOException;
+import java.util.Date;
+
+public class MessageOutput extends UIComponentBase {
+  public MessageOutput() {
+      System.out.println("MessageOutput initialized...");
+  }
+
+    @Override
+    public String getFamily() {
+        return "HelloFamily";
+    }
+
+
+}
\ No newline at end of file
diff --git a/jsf-demo/sandbox/groovy-demo/src/main/webapp/WEB-INF/groovy/hello/MessageRenderer.groovy b/jsf-demo/sandbox/groovy-demo/src/main/webapp/WEB-INF/groovy/hello/MessageRenderer.groovy
new file mode 100644
index 0000000..f763294
--- /dev/null
+++ b/jsf-demo/sandbox/groovy-demo/src/main/webapp/WEB-INF/groovy/hello/MessageRenderer.groovy
@@ -0,0 +1,38 @@
+package hello
+
+import javax.faces.render.Renderer;
+import javax.faces.context.FacesContext;
+import javax.faces.context.ResponseWriter;
+import javax.faces.component.UIComponent;
+
+public class MessageRenderer extends Renderer {
+
+  public MessageRenderer() {
+    System.out.println("MessageRenderer initialized...");
+  }
+
+  public String getFamily()
+  {
+    return "HelloFamily";
+  }
+
+  @Override
+   public void encodeEnd(FacesContext context, UIComponent component) throws IOException
+    {
+      String hellomsg = (String)component.getAttributes().get("hellomsg");
+      ResponseWriter writer = context.getResponseWriter();
+
+      System.out.println("MessageRenderer : hellomsg = " + hellomsg);
+      writer.startElement("h3",component);
+      if(hellomsg != null) {
+        System.out.println("MessageRenderer : hellomsg is not null...");
+        writer.writeText(hellomsg, "hellomsg");
+      } else
+        writer.writeText("could not retrieve the message from ManagedBean HelloBean...", null);
+      writer.endElement("h3");
+      writer.startElement("p", component);
+      writer.writeText(" Today is: " + new Date(), null);
+      writer.endElement("p");
+    }
+
+}
\ No newline at end of file
diff --git a/jsf-demo/sandbox/groovy-demo/src/main/webapp/WEB-INF/groovy/hello/NameConverter.groovy b/jsf-demo/sandbox/groovy-demo/src/main/webapp/WEB-INF/groovy/hello/NameConverter.groovy
new file mode 100644
index 0000000..ace49d4
--- /dev/null
+++ b/jsf-demo/sandbox/groovy-demo/src/main/webapp/WEB-INF/groovy/hello/NameConverter.groovy
@@ -0,0 +1,27 @@
+package hello
+
+ import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.convert.Converter;
+import com.sun.faces.systest.Name;
+
+public class NameConverter implements Converter {
+
+
+    public NameConverter() {
+        System.out.println("NameConverter instantiated")
+    }
+    public Object getAsObject(FacesContext context, UIComponent component,
+            String value) {
+      com.sun.faces.systest.Name name = new com.sun.faces.systest.Name(value);
+      return name.getFirst() + " " + name.getLast();
+
+    }
+
+    public String getAsString(FacesContext context, UIComponent component,
+                              Object value) {
+      return value.toString();
+    }
+
+  
+}
\ No newline at end of file
diff --git a/jsf-demo/sandbox/groovy-demo/src/main/webapp/WEB-INF/groovy/hello/NameValidator.groovy b/jsf-demo/sandbox/groovy-demo/src/main/webapp/WEB-INF/groovy/hello/NameValidator.groovy
new file mode 100644
index 0000000..be3de4d
--- /dev/null
+++ b/jsf-demo/sandbox/groovy-demo/src/main/webapp/WEB-INF/groovy/hello/NameValidator.groovy
@@ -0,0 +1,22 @@
+package hello
+
+import javax.faces.validator.Validator
+import javax.faces.validator.ValidatorException
+import javax.faces.context.FacesContext
+import javax.faces.component.UIComponent;
+import javax.faces.application.FacesMessage;
+
+public class NameValidator implements Validator {
+
+  void validate(FacesContext context, UIComponent component, Object value) {
+    System.out.println("NameValidator : value = " + (Integer)value);
+
+    int age = ((Integer)value).intValue();
+      if (age < 0 || age > 65)
+        throw new ValidatorException(new FacesMessage("please enter a valid age between 0 and 65."));
+  }
+
+}
+
+
+
diff --git a/jsf-demo/sandbox/groovy-demo/src/main/webapp/WEB-INF/web.xml b/jsf-demo/sandbox/groovy-demo/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..024cf2e
--- /dev/null
+++ b/jsf-demo/sandbox/groovy-demo/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,92 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<web-app version="3.0"
+         xmlns="http://java.sun.com/xml/ns/javaee"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+
+    <display-name>web.xml included</display-name>
+
+<context-param>
+    <param-name>facelets.LIBRARIES</param-name>
+    <param-value>/WEB-INF/groovy-taglib.xml</param-value>
+</context-param>
+
+    <context-param>
+        <param-name>com.sun.faces.enableGroovyScripting</param-name>
+        <param-value>true</param-value>
+    </context-param>
+
+    <!-- Faces Servlet -->
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup> 1 </load-on-startup>
+    </servlet>
+
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>      
+    </servlet-mapping>
+
+    <!-- Enable Groovy Support -->
+    <context-param>
+        <param-name>com.sun.faces.developmentMode</param-name>
+        <param-value>true</param-value>
+    </context-param>
+    <filter>
+        <filter-name>GroovyFilter</filter-name>
+        <filter-class>com.sun.faces.scripting.GroovySupportFilter</filter-class>
+    </filter>
+    <filter-mapping>
+        <filter-name>GroovyFilter</filter-name>
+        <url-pattern>/*</url-pattern>
+        <dispatcher>REQUEST</dispatcher>
+        <dispatcher>FORWARD</dispatcher>
+        <dispatcher>INCLUDE</dispatcher>
+        <dispatcher>ERROR</dispatcher>
+    </filter-mapping>
+
+
+</web-app>
diff --git a/jsf-demo/sandbox/groovy-demo/src/main/webapp/hello.xhtml b/jsf-demo/sandbox/groovy-demo/src/main/webapp/hello.xhtml
new file mode 100644
index 0000000..ab29233
--- /dev/null
+++ b/jsf-demo/sandbox/groovy-demo/src/main/webapp/hello.xhtml
@@ -0,0 +1,68 @@
+<!DOCTYPE html
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+     PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+        xmlns:hellotag="http://mojarra.dev.java.net/source1">
+<head>
+    <title>Hello JSF 2!</title>
+</head>
+<body>
+<h:form id="form">
+    Name : <h:inputText id="name"
+                        value="#{hello.fname}">
+    <f:converter  converterId="nameconverter" />
+</h:inputText>
+    Age :   <hellotag:hello id="age"
+                            value="#{hello.age}">
+    <f:validator validatorId="namevalidator"/>
+</hellotag:hello>
+    <h:commandButton id="command" value="submit" action="submit?faces-redirect=true"></h:commandButton>
+</h:form>
+</body>
+</html>
+
+
diff --git a/jsf-demo/sandbox/groovy-demo/src/main/webapp/index.xhtml b/jsf-demo/sandbox/groovy-demo/src/main/webapp/index.xhtml
new file mode 100644
index 0000000..06bf7db
--- /dev/null
+++ b/jsf-demo/sandbox/groovy-demo/src/main/webapp/index.xhtml
@@ -0,0 +1,56 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+<h:head>
+  <title>A Simple JavaServer Faces 2.0 View</title>
+</h:head>
+<h:body>
+  <h:form>
+    <p>Your service level is #{userBean.serviceLevel}</p>
+    <p><h:commandButton value="submit" /></p>
+  </h:form>
+</h:body>
+</html>
diff --git a/jsf-demo/sandbox/groovy-demo/src/main/webapp/submit.xhtml b/jsf-demo/sandbox/groovy-demo/src/main/webapp/submit.xhtml
new file mode 100644
index 0000000..52685d3
--- /dev/null
+++ b/jsf-demo/sandbox/groovy-demo/src/main/webapp/submit.xhtml
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+        PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"
+        xmlns:h="http://java.sun.com/jsf/html"
+        xmlns:f="http://java.sun.com/jsf/core"
+        xmlns:render="http://mojarra.dev.java.net/source1">
+<head>
+    <title>Hello</title>
+</head>
+<body>
+<h:form id="form">
+
+    <render:messageoutput id="string">
+        <render:renderer hellomsg="#{hello.message}"/>
+    </render:messageoutput>
+</h:form>
+</body>
+</html>
diff --git a/jsf-demo/sandbox/head-body/pom.xml b/jsf-demo/sandbox/head-body/pom.xml
new file mode 100644
index 0000000..0792eb5
--- /dev/null
+++ b/jsf-demo/sandbox/head-body/pom.xml
@@ -0,0 +1,142 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>com.sun.faces.extensions</groupId>
+  <artifactId>jsf-head-body</artifactId>
+  <packaging>war</packaging>
+  <name>jsf-head-body</name>
+  <url>https://jsf-extensions.dev.java.net/</url>
+  <description>Run time jsf-extensions: compres</description>
+  <version>0.1</version>
+
+  <scm>
+    <connection>scm:svn:http://jsf-extensions.dev.java.net/svn/jsf-extensions/trunk</connection>
+    <developerConnection>scm:svn:https://jsf-extensions.dev.java.net/svn/jsf-extensions/trunk</developerConnection>
+    <url>https://jsf-extensions.dev.java.net/source/browse/jsf-extensions/</url>
+  </scm>
+
+  <build>
+    <defaultGoal>install</defaultGoal>
+    <sourceDirectory>src/main/java</sourceDirectory>
+    <resources>
+      <resource>
+        <directory>src/main/resources</directory>
+        <targetPath>resources</targetPath>
+        <includes>
+            <include>*.taglib.xml</include>
+            <include>faces-config.xml</include>
+            <include>*.js</include>
+        </includes>
+     </resource>
+   </resources>
+    <finalName>jsf-head-body</finalName>
+    <plugins>
+            <plugin>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>RELEASE</version>
+                <configuration>
+                    <source>1.5</source>
+                    <target>1.5</target>
+                </configuration>
+            </plugin>
+        </plugins>
+  </build>
+
+
+  <repositories>
+    <repository>
+      <snapshots />
+      <id>codecaus</id>
+      <name>codehaus</name>
+      <url>http://repository.codehaus.org</url>
+    </repository>
+    <repository>
+      <snapshots />
+      <id>java.net</id>
+      <name>Java.net Maven 1.x Repository for external projects</name>
+      <url>https://maven-repository.dev.java.net/nonav/repository</url>
+      <layout>legacy</layout>
+    </repository>
+    <repository>
+      <snapshots />
+      <id>java.net.shared</id>
+      <name>Java.net Maven 1.x Repository for glassfish dependencies</name>
+      <url>http://download.java.net/javaee5/external/shared</url>
+      <layout>legacy</layout>
+    </repository>
+    <repository>
+      <snapshots />
+      <id>ibiblio</id>
+      <url>http://www.ibiblio.org/maven2/</url>
+    </repository>
+  </repositories>
+
+  <dependencies>
+        <dependency>
+            <groupId>javax</groupId>
+            <artifactId>javaee-api</artifactId>
+            <version>6.0</version>
+            <scope>provided</scope>
+        </dependency>
+  </dependencies>
+  <reporting>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-project-info-reports-plugin</artifactId>
+        <reportSets><reportSet /></reportSets>
+      </plugin>
+       <plugin>
+         <groupId>org.apache.maven.plugins</groupId>
+         <artifactId>maven-compiler-plugin</artifactId>
+         <configuration>
+           <source>1.5</source>
+           <target>1.5</target>
+         </configuration>
+       </plugin>
+    </plugins>
+  </reporting>
+
+</project>
diff --git a/jsf-demo/sandbox/head-body/src/main/java/headbody/MyComponent.java b/jsf-demo/sandbox/head-body/src/main/java/headbody/MyComponent.java
new file mode 100644
index 0000000..ca4e851
--- /dev/null
+++ b/jsf-demo/sandbox/head-body/src/main/java/headbody/MyComponent.java
@@ -0,0 +1,58 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package headbody;
+
+import javax.faces.application.ResourceDependency;
+import javax.faces.component.UIOutput;
+
+ at ResourceDependency (name="mycomponent.js", library="mylib", target="head")
+public class MyComponent extends UIOutput {
+
+    public static final String COMPONENT_TYPE = "headbody.MyComponent";
+
+    public MyComponent() {
+        setRendererType(null);
+    }
+
+    public String getFamily() {
+        return COMPONENT_TYPE;
+    }
+}
diff --git a/jsf-demo/sandbox/head-body/src/main/webapp/WEB-INF/demo.taglib.xml b/jsf-demo/sandbox/head-body/src/main/webapp/WEB-INF/demo.taglib.xml
new file mode 100644
index 0000000..c074195
--- /dev/null
+++ b/jsf-demo/sandbox/head-body/src/main/webapp/WEB-INF/demo.taglib.xml
@@ -0,0 +1,57 @@
+<?xml version="1.0"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2005-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE facelet-taglib PUBLIC
+  "-//Sun Microsystems, Inc.//DTD Facelet Taglib 1.0//EN"
+  "http://java.sun.com/dtd/facelet-taglib_1_0.dtd">
+
+<facelet-taglib>
+    <namespace>https://javaserverfaces.dev.java.net/demo/headbody</namespace>
+    <tag>
+        <tag-name>myComponent</tag-name>
+        <component>
+            <component-type>headbody.MyComponent</component-type>
+        </component>
+    </tag>
+</facelet-taglib>
+
diff --git a/jsf-demo/sandbox/head-body/src/main/webapp/WEB-INF/faces-config.xml b/jsf-demo/sandbox/head-body/src/main/webapp/WEB-INF/faces-config.xml
new file mode 100644
index 0000000..411b1a0
--- /dev/null
+++ b/jsf-demo/sandbox/head-body/src/main/webapp/WEB-INF/faces-config.xml
@@ -0,0 +1,57 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!-- =========== FULL CONFIGURATION FILE ================================== -->
+
+<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
+              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+              xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd"
+              version="1.2">
+
+     <component>  
+         <description><![CDATA[Your description here]]></description>  
+         <display-name>MyComponent</display-name>  
+         <component-type>headbody.MyComponent</component-type>  
+         <component-class>headbody.MyComponent</component-class>  
+     </component>  
+</faces-config>
diff --git a/jsf-demo/sandbox/head-body/src/main/webapp/WEB-INF/web.xml b/jsf-demo/sandbox/head-body/src/main/webapp/WEB-INF/web.xml
new file mode 100755
index 0000000..04e1fa6
--- /dev/null
+++ b/jsf-demo/sandbox/head-body/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,94 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2005-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<web-app version="2.5"
+         xmlns="http://java.sun.com/xml/ns/javaee"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
+
+    <display-name>CompRes Blank Facelets App</display-name>
+    <description>CompRes Blank Facelets App</description>
+
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>server</param-value>
+    </context-param>
+    <context-param>
+	<param-name>javax.faces.DEFAULT_SUFFIX</param-name>
+	<param-value>.xhtml</param-value>
+    </context-param>
+    <context-param>
+        <param-name>facelets.DEVELOPMENT</param-name>
+        <param-value>true</param-value>
+    </context-param>
+
+    <context-param>
+        <description>
+            Set this flag to true if you want the JavaServer Faces
+            Reference Implementation to validate the XML in your
+            faces-config.xml resources against the DTD. Default
+            value is false.
+        </description>
+        <param-name>com.sun.faces.validateXml</param-name>
+        <param-value>true</param-value>
+    </context-param>
+
+    <context-param>
+	<param-name>javax.faces.FACELETS_LIBRARIES</param-name>
+	<param-value>/WEB-INF/demo.taglib.xml</param-value>
+    </context-param>
+
+    <!-- Faces Servlet -->
+  <servlet>
+    <servlet-name>Faces Servlet</servlet-name>
+    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+    <load-on-startup>1</load-on-startup>
+  </servlet>
+
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+        <url-pattern>*.jsf</url-pattern>
+    </servlet-mapping>
+
+</web-app>
diff --git a/jsf-demo/sandbox/head-body/src/main/webapp/head.xhtml b/jsf-demo/sandbox/head-body/src/main/webapp/head.xhtml
new file mode 100644
index 0000000..8fd0873
--- /dev/null
+++ b/jsf-demo/sandbox/head-body/src/main/webapp/head.xhtml
@@ -0,0 +1,107 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:hb="https://javaserverfaces.dev.java.net/demo/headbody"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+<f:view contentType="text/html"/>
+
+<h:head>
+    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
+    <title>Head and Body Investigation</title>
+</h:head>
+
+
+<h:body>
+
+<h1>Template Text</h1>
+
+<h:form prependId="false">
+<h:panelGrid border="1" columns="2">
+
+<h:panelGroup>
+
+  <h:inputText />
+
+  <h:outputScript name="ajaxZero.js" library="javax.faces" target="head"/>
+  <h:outputScript name="ajaxOne.js" library="javax.faces" target="head"/>
+  <h:outputScript name="ajaxTwo.js" library="javax.faces" target="body"/>
+  <h:outputScript name="ajaxThree.js" library="javax.faces"/>
+  <h:outputScript name="scriptInForm.js" library="form" target="form"/>
+
+  <h:outputStylesheet name="basic.css" />
+
+  <hb:myComponent />
+
+</h:panelGroup>
+
+<h:panelGroup>
+
+  <h:inputText />
+
+</h:panelGroup>
+
+</h:panelGrid>
+
+<h:commandButton value="submit" />
+
+<p><span id="replaceByJavaScript" /></p>
+
+</h:form>
+
+<form>
+
+<p><input type="submit" value="callScriptInHead" onclick="inAjax(); return false; " /></p>
+<p><input type="submit" value="call2ndScriptInHead" onclick="inAjaxOne(); return false; " /></p>
+<p><input type="submit" value="callScriptInBody" onclick="inAjaxTwo(); return false; " /></p>
+<p><input type="submit" value="callScriptInPlace" onclick="inAjaxThree(); return false; " /></p>
+<p><input type="submit" value="callScriptInForm" onclick="inScriptInForm(); return false; " /></p>
+<p><input type="submit" value="call script rendered by @ResourceDependency" onclick="inMyComponent(); return false; " /></p>
+
+</form>
+
+</h:body>
+
+</html>
diff --git a/jsf-demo/sandbox/head-body/src/main/webapp/index.html b/jsf-demo/sandbox/head-body/src/main/webapp/index.html
new file mode 100644
index 0000000..e6b145a
--- /dev/null
+++ b/jsf-demo/sandbox/head-body/src/main/webapp/index.html
@@ -0,0 +1,47 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<html>
+<header>
+<meta http-equiv="Refresh" content="0;url=head.jsf">
+</header>
+</html>
diff --git a/jsf-demo/sandbox/head-body/src/main/webapp/noncomp.xhtml b/jsf-demo/sandbox/head-body/src/main/webapp/noncomp.xhtml
new file mode 100644
index 0000000..62866ae
--- /dev/null
+++ b/jsf-demo/sandbox/head-body/src/main/webapp/noncomp.xhtml
@@ -0,0 +1,59 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+	  xmlns:f="http://java.sun.com/jsf/core"
+	  xmlns:ui="http://java.sun.com/jsf/facelets">
+<head><title>title</title></head>
+<body>
+   
+   <h:outputText value="blah" />
+
+   Userid: <h:inputText >
+           </h:inputText>  <br/>
+   Password: <h:inputText /> <br/>
+   <h:commandButton value="Login" /> <h:commandButton value="Cancel" /><br />
+
+</body>
+</html>
diff --git a/jsf-demo/sandbox/head-body/src/main/webapp/resources/basic.css b/jsf-demo/sandbox/head-body/src/main/webapp/resources/basic.css
new file mode 100644
index 0000000..7941e7f
--- /dev/null
+++ b/jsf-demo/sandbox/head-body/src/main/webapp/resources/basic.css
@@ -0,0 +1,53 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+body { background-color: #ffb57a }
+th { background-color: #dcdcdc }
+tr { vertical-align: top }
+td { background-color: #ffda9c }
+a:link { color: black }
+a:visited { color: black }
+.verticaltext {
+writing-mode: tb-rl;
+filter: flipv fliph;
+}
+.complete { color: green }
+.authoractionrequired { color: red }
+.publisheractionrequired { color: blue }
diff --git a/jsf-demo/sandbox/head-body/src/main/webapp/resources/fancyCheckbox.js b/jsf-demo/sandbox/head-body/src/main/webapp/resources/fancyCheckbox.js
new file mode 100644
index 0000000..ed9b2a9
--- /dev/null
+++ b/jsf-demo/sandbox/head-body/src/main/webapp/resources/fancyCheckbox.js
@@ -0,0 +1,5 @@
+
+function fancyCheckbox() {
+    var element = document.getElementById("replaceByJavaScript");
+    element.innerHTML = "<blink>fancyCheckbox</blink>";
+}
diff --git a/jsf-demo/sandbox/head-body/src/main/webapp/resources/form/scriptInForm.js b/jsf-demo/sandbox/head-body/src/main/webapp/resources/form/scriptInForm.js
new file mode 100644
index 0000000..7b0c98b
--- /dev/null
+++ b/jsf-demo/sandbox/head-body/src/main/webapp/resources/form/scriptInForm.js
@@ -0,0 +1,5 @@
+
+function inScriptInForm() {
+    var element = document.getElementById("replaceByJavaScript");
+    element.innerHTML = "<em>inScriptInForm</em>";
+}
diff --git a/jsf-demo/sandbox/head-body/src/main/webapp/resources/javax.faces/ajaxOne.js b/jsf-demo/sandbox/head-body/src/main/webapp/resources/javax.faces/ajaxOne.js
new file mode 100644
index 0000000..7a8053d
--- /dev/null
+++ b/jsf-demo/sandbox/head-body/src/main/webapp/resources/javax.faces/ajaxOne.js
@@ -0,0 +1,5 @@
+
+function inAjaxOne() {
+    var element = document.getElementById("replaceByJavaScript");
+    element.innerHTML = "<i>inAjax-1Script</i>";
+}
diff --git a/jsf-demo/sandbox/head-body/src/main/webapp/resources/javax.faces/ajaxThree.js b/jsf-demo/sandbox/head-body/src/main/webapp/resources/javax.faces/ajaxThree.js
new file mode 100644
index 0000000..75f2f9d
--- /dev/null
+++ b/jsf-demo/sandbox/head-body/src/main/webapp/resources/javax.faces/ajaxThree.js
@@ -0,0 +1,5 @@
+
+function inAjaxThree() {
+    var element = document.getElementById("replaceByJavaScript");
+    element.innerHTML = "<i>inAjaxThreeScript</i>";
+}
diff --git a/jsf-demo/sandbox/head-body/src/main/webapp/resources/javax.faces/ajaxTwo.js b/jsf-demo/sandbox/head-body/src/main/webapp/resources/javax.faces/ajaxTwo.js
new file mode 100644
index 0000000..bdc1ff5
--- /dev/null
+++ b/jsf-demo/sandbox/head-body/src/main/webapp/resources/javax.faces/ajaxTwo.js
@@ -0,0 +1,5 @@
+
+function inAjaxTwo() {
+    var element = document.getElementById("replaceByJavaScript");
+    element.innerHTML = "<i>inAjaxTwoScript</i>";
+}
diff --git a/jsf-demo/sandbox/head-body/src/main/webapp/resources/javax.faces/ajaxZero.js b/jsf-demo/sandbox/head-body/src/main/webapp/resources/javax.faces/ajaxZero.js
new file mode 100644
index 0000000..31328fe
--- /dev/null
+++ b/jsf-demo/sandbox/head-body/src/main/webapp/resources/javax.faces/ajaxZero.js
@@ -0,0 +1,5 @@
+
+function inAjax() {
+    var element = document.getElementById("replaceByJavaScript");
+    element.innerHTML = "<i>inAjaxScript</i>";
+}
diff --git a/jsf-demo/sandbox/head-body/src/main/webapp/resources/mylib/mycomponent.js b/jsf-demo/sandbox/head-body/src/main/webapp/resources/mylib/mycomponent.js
new file mode 100644
index 0000000..6f6c6f3
--- /dev/null
+++ b/jsf-demo/sandbox/head-body/src/main/webapp/resources/mylib/mycomponent.js
@@ -0,0 +1,226 @@
+/*******************************************************************************
+ * OpenAjax.js
+ *
+ * Reference implementation of the OpenAjax Hub, as specified by OpenAjax Alliance.
+ * Specification is under development at: 
+ *
+ *   http://www.openajax.org/member/wiki/OpenAjax_Hub_Specification
+ *
+ * Copyright 2006-2007 OpenAjax Alliance
+ *
+ * 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.
+ *
+ ******************************************************************************/
+
+// prevent re-definition of the OpenAjax object
+if(!window["OpenAjax"]){
+	OpenAjax = new function(){
+		var t = true;
+		var f = false;
+		var g = window;
+		var libs;
+		var ooh = "org.openajax.hub.";
+
+		var h = {};
+		this.hub = h;
+		h.implementer = "http://openajax.org";
+		h.implVersion = "0.6";
+		h.specVersion = "0.6";
+		h.implExtraData = {};
+		var libs = {};
+		h.libraries = libs;
+
+		h.registerLibrary = function(prefix, nsURL, version, extra){
+			libs[prefix] = {
+				prefix: prefix,
+				namespaceURI: nsURL,
+				version: version,
+				extraData: extra 
+			};
+			this.publish(ooh+"registerLibrary", libs[prefix]);
+		}
+		h.unregisterLibrary = function(prefix){
+			this.publish(ooh+"unregisterLibrary", libs[prefix]);
+			delete libs[prefix];
+		}
+
+		h._subscriptions = { c:{}, s:[] };
+		h._cleanup = [];
+		h._subIndex = 0;
+		h._pubDepth = 0;
+
+		h.subscribe = function(name, callback, scope, subscriberData, filter){
+			if(!scope){
+				scope = window;
+			}
+			var handle = name + "." + this._subIndex;
+			var sub = { scope: scope, cb: callback, fcb: filter, data: subscriberData, sid: this._subIndex++, hdl: handle };
+			var path = name.split(".");
+	 		this._subscribe(this._subscriptions, path, 0, sub);
+			return handle;
+		}
+
+		h.publish = function(name, message){
+			var path = name.split(".");
+			this._pubDepth++;
+			this._publish(this._subscriptions, path, 0, name, message);
+			this._pubDepth--;
+			if((this._cleanup.length > 0) && (this._pubDepth == 0)){
+				for(var i = 0; i < this._cleanup.length; i++){ 
+					this.unsubscribe(this._cleanup[i].hdl);
+				}
+				delete(this._cleanup);
+				this._cleanup = [];
+			}
+		}
+
+		h.unsubscribe = function(sub){
+			var path = sub.split(".");
+			var sid = path.pop();
+			this._unsubscribe(this._subscriptions, path, 0, sid);
+		}
+		
+		h._subscribe = function(tree, path, index, sub){
+			var token = path[index];
+			if(index == path.length){
+				tree.s.push(sub);
+			}else{ 
+				if(typeof tree.c == "undefined"){
+					 tree.c = {};
+				}
+				if(typeof tree.c[token] == "undefined"){
+					tree.c[token] = { c: {}, s: [] }; 
+					this._subscribe(tree.c[token], path, index + 1, sub);
+				}else{
+					this._subscribe( tree.c[token], path, index + 1, sub);
+				}
+			}
+		}
+
+		h._publish = function(tree, path, index, name, msg){
+			if(typeof tree != "undefined"){
+				var node;
+				if(index == path.length) {
+					node = tree;
+				}else{
+					this._publish(tree.c[path[index]], path, index + 1, name, msg);
+					this._publish(tree.c["*"], path, index + 1, name, msg);			
+					node = tree.c["**"];
+				}
+				if(typeof node != "undefined"){
+					var callbacks = node.s;
+					var max = callbacks.length;
+					for(var i = 0; i < max; i++){
+						if(callbacks[i].cb){
+							var sc = callbacks[i].scope;
+							var cb = callbacks[i].cb;
+							var fcb = callbacks[i].fcb;
+							var d = callbacks[i].data;
+							if(typeof cb == "string"){
+								// get a function object
+								cb = sc[cb];
+							}
+							if(typeof fcb == "string"){
+								// get a function object
+								fcb = sc[fcb];
+							}
+							if((!fcb) || 
+							   (fcb.call(sc, name, msg, d))) {
+								cb.call(sc, name, msg, d);
+							}
+						}
+					}
+				}
+			}
+		}
+			
+		h._unsubscribe = function(tree, path, index, sid) {
+			if(typeof tree != "undefined") {
+				if(index < path.length) {
+					var childNode = tree.c[path[index]];
+					this._unsubscribe(childNode, path, index + 1, sid);
+					if(childNode.s.length == 0) {
+						for(var x in childNode.c) 
+					 		return;		
+						delete tree.c[path[index]];	
+					}
+					return;
+				}
+				else {
+					var callbacks = tree.s;
+					var max = callbacks.length;
+					for(var i = 0; i < max; i++) 
+						if(sid == callbacks[i].sid) {
+							if(this._pubDepth > 0) {
+								callbacks[i].cb = null;	
+								this._cleanup.push(callbacks[i]);						
+							}
+							else
+								callbacks.splice(i, 1);
+							return; 	
+						}
+				}
+			}
+		}
+		// The following function is provided for automatic testing purposes.
+		// It is not expected to be deployed in run-time OpenAjax Hub implementations.
+		h.reinit = function()
+		{
+			for (var lib in OpenAjax.hub.libraries) {
+				delete OpenAjax.hub.libraries[lib];
+			}
+			OpenAjax.hub.registerLibrary("OpenAjax", "http://openajax.org/hub", "0.6", {});
+
+			delete OpenAjax._subscriptions;
+			OpenAjax._subscriptions = {c:{},s:[]};
+			delete OpenAjax._cleanup;
+			OpenAjax._cleanup = [];
+			OpenAjax._subIndex = 0;
+			OpenAjax._pubDepth = 0;
+		}
+	};
+	// Register the OpenAjax Hub itself as a library.
+	OpenAjax.hub.registerLibrary("OpenAjax", "http://openajax.org/hub", "0.6", {});
+
+}
+
+/**
+ * Create namespaces
+ */
+if (javax == null || typeof javax == "undefined") {
+    var javax = new Object();
+}
+if (javax.faces == null || typeof java.faces == "undefined") {
+    javax["faces"] = new Object();
+}
+if (javax.faces.Ajax == null || typeof javax.faces.Ajax == "undefined") {
+    javax.faces["Ajax"] = new Object();
+}
+
+/**
+ * Register with OpenAjax
+ */
+if (typeof OpenAjax != "undefined" && 
+    typeof OpenAjax.hub.registerLibrary != "undefined") {
+    OpenAjax.hub.registerLibrary("javax", "www.sun.com", "1.0", null);
+} 
+
+javax.faces.Ajax = { 
+
+    viewState: function(form, options) {
+        var viewState = null;
+        return viewState;
+    }
+
+}
+
+function inMyComponent() {
+    var element = document.getElementById("replaceByJavaScript");
+    element.innerHTML = "<i>inMyComponent</i>";
+}
diff --git a/jsf-demo/sandbox/head-body/src/main/webapp/resources/scriptInHead.js b/jsf-demo/sandbox/head-body/src/main/webapp/resources/scriptInHead.js
new file mode 100644
index 0000000..5f6ef0c
--- /dev/null
+++ b/jsf-demo/sandbox/head-body/src/main/webapp/resources/scriptInHead.js
@@ -0,0 +1,5 @@
+
+function inScriptInHead() {
+    var element = document.getElementById("replaceByJavaScript");
+    element.innerHTML = "<b>inScriptInHead</b>";
+}
diff --git a/jsf-demo/sandbox/html5/matrix/README.txt b/jsf-demo/sandbox/html5/matrix/README.txt
new file mode 100644
index 0000000..87b2294
--- /dev/null
+++ b/jsf-demo/sandbox/html5/matrix/README.txt
@@ -0,0 +1,66 @@
+RUNNING THE DEMO
+================
+
+Prerequisites:
+-------------
+   GlassFish 4
+   Java 7
+   JSF 2.2.x
+
+   This demo also utilizes external JavaScript libraries: 
+       jscolor - displays a color control an devices where
+                 <input type="color"> is not supported.
+       modernizr - checks if <input type="color"> is supported.
+- 
+0. This demo utilizes a small JSF Web Socket library consisting of:
+   - a JSF Web Socket composite component (webapp/resources/h5/ws.xhtml)
+   - a Web Socket JavaScript library (webapp/resources/js/jsf-ws.js)
+   - There are two application areas that need to be modified:
+     - You will need to modify HOSTNAME to the name of the host the Web Socket endpoint
+       will be running on:  (ex: edburns-mac.local)
+       in the following application files:
+          - webapp/index.xhtml
+          - webapp/resources/js/Matrix.js
+   The Web Socket JSF composite component has been designed to open mutiple 
+   channels and assicated handlers (although this feature has not been tested).
+
+1. Start GlassFish
+
+2. Build the demo: mvn clean install
+
+3. Deploy the demo.
+
+4. Start the web socket server endpoint:
+   Make sure you have the following env variables set:
+     JSF_JAR:  the JSF jar (ex: javax.faces.jar)
+     DEMO_HOME: Top level location of this demo:
+          (ex: MOJARRA_2_2X_ROLLING/jsf-demo/sandbox/html5/matrix)
+   In this directory:  
+     ./run-matrix.sh 
+   You should see messages like:
+      Listening for transport dt_socket at address: 9009
+Oct 10, 2013 10:08:16 AM org.glassfish.tyrus.server.ServerContainerFactory create
+INFO: Provider class loaded: org.glassfish.tyrus.container.grizzly.GrizzlyEngine
+Oct 10, 2013 10:08:16 AM org.glassfish.grizzly.http.server.NetworkListener start
+INFO: Started listener bound to [0.0.0.0:8021]
+Oct 10, 2013 10:08:16 AM org.glassfish.grizzly.http.server.HttpServer start
+INFO: [HttpServer] Started.
+Oct 10, 2013 10:08:16 AM org.glassfish.tyrus.server.Server start
+INFO: WebSocket Registered apps: URLs all start with ws://localhost:8021
+Oct 10, 2013 10:08:16 AM org.glassfish.tyrus.server.Server start
+INFO: WebSocket server started.
+Press any key to stop the server...
+
+5. Visit localhost:8080/matrix/index.jsf
+   You should see messages like:
+Oct 10, 2013 10:09:40 AM matrix.Matrix handleMessage
+INFO: WS ENDPOINT BROADCASTING MESSAGE:register
+Oct 10, 2013 10:09:40 AM matrix.Matrix handleMessage
+INFO: BROADCASTING MESSAGE NEXT SESSION:SessionImpl{uri=/matrix/matrix, id='77a4c57d-f99d-4c9f-aaba-537ca7574715', endpoint=EndpointWrapper{endpointClass=null, endpoint=org.glassfish.tyrus.core.AnnotatedEndpoint at 1fc202e5, uri='/matrix/matrix', contextPath='/matrix'}}
+
+6. Play with the demo.
+
+
+NOTE: Because this is primarily a Web Socket demo, it is recommended that the demo be run with at least two 
+      UIs.  For the optimal WOW factor, we recommend a wireless connection.  For example, in addition 
+      to the main computer/laptop, you could also connect with an IPAD.
diff --git a/jsf-demo/sandbox/html5/matrix/pom.xml b/jsf-demo/sandbox/html5/matrix/pom.xml
new file mode 100755
index 0000000..343f1be
--- /dev/null
+++ b/jsf-demo/sandbox/html5/matrix/pom.xml
@@ -0,0 +1,126 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <packaging>war</packaging>
+    <version>1.0-SNAPSHOT</version>
+    <url>http://maven.apache.org</url>
+    <groupId>org.glassfish.websocket</groupId>
+    <artifactId>arduino</artifactId>
+
+    <name>Matrix Control</name>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.glassfish.tyrus</groupId>
+            <artifactId>tyrus-server</artifactId>
+            <version>1.2.1</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.glassfish.tyrus</groupId>
+            <artifactId>tyrus-client</artifactId>
+            <version>1.2.1</version>
+        </dependency>
+        <dependency>
+            <groupId>org.glassfish.tyrus</groupId>
+            <artifactId>tyrus-server</artifactId>
+            <version>1.2.1</version>
+        </dependency>
+        <dependency>
+            <groupId>org.glassfish.tyrus</groupId>
+            <artifactId>tyrus-container-grizzly</artifactId>
+            <version>1.2.1</version>
+        </dependency>
+        <dependency>
+            <groupId>javax</groupId>
+            <artifactId>javaee-web-api</artifactId>
+            <version>7.0</version>
+            <!--<scope>provided</scope>-->
+        </dependency>
+        <dependency>
+	        <groupId>org.json</groupId>
+	        <artifactId>json</artifactId>
+	        <version>20090211</version>
+        </dependency>
+        <dependency>
+            <groupId>javax.faces</groupId>
+            <artifactId>javax.faces-api</artifactId>
+            <version>2.2</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.glassfish</groupId>
+            <artifactId>javax.faces</artifactId>
+            <version>2.2.4-SNAPSHOT</version>
+            <scope>provided</scope>
+        </dependency>
+    </dependencies>
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>2.3.2</version>
+                <configuration>
+                    <source>1.6</source>
+                    <target>1.6</target>
+                </configuration>
+            </plugin>
+           <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-war-plugin</artifactId>
+                <version>2.1.1</version>
+                <configuration>
+                    <failOnMissingWebXml>false</failOnMissingWebXml>
+                    <contextPath>/</contextPath>
+                </configuration>
+            </plugin>
+        </plugins>
+        <finalName>matrix</finalName>
+    </build>
+    <properties>
+        <netbeans.hint.deploy.server>gfv3ee6</netbeans.hint.deploy.server>
+    </properties>
+</project>
diff --git a/jsf-demo/sandbox/html5/matrix/run-matrix.sh b/jsf-demo/sandbox/html5/matrix/run-matrix.sh
new file mode 100755
index 0000000..e953a55
--- /dev/null
+++ b/jsf-demo/sandbox/html5/matrix/run-matrix.sh
@@ -0,0 +1,14 @@
+#!/bin/sh
+
+#
+# Set the following variables before running this script:
+#    JSF_JAR - javax.faces.jar
+#    DEMO_HOME - the top level location of this demo 
+#        ex: MOJARRA_2_2X_ROLLING/jsf-demo/sandbox/html5/matrix
+#
+# zero arguments starts the server on localhost:8021
+
+# exactly two arguments starts the server on args[0]:args[1]
+
+java -cp $JSF_JAR:$DEMO_HOME/target/classes:$DEMO_HOME/target/matrix/WEB-INF/lib/* -Xdebug -Xrunjdwp:transport=dt_socket,server=y,address=9010,suspend=y matrix.Main 192.168.1.90 8021
+
diff --git a/jsf-demo/sandbox/html5/matrix/src/main/java/matrix/ConfiguratorImpl.java b/jsf-demo/sandbox/html5/matrix/src/main/java/matrix/ConfiguratorImpl.java
new file mode 100644
index 0000000..2a60700
--- /dev/null
+++ b/jsf-demo/sandbox/html5/matrix/src/main/java/matrix/ConfiguratorImpl.java
@@ -0,0 +1,58 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package matrix;
+
+import javax.servlet.http.HttpSession;
+import javax.websocket.HandshakeResponse;
+import javax.websocket.server.HandshakeRequest;
+import javax.websocket.server.ServerEndpointConfig;
+import javax.websocket.server.ServerEndpointConfig.Configurator;
+
+public class ConfiguratorImpl extends Configurator  {
+
+    @Override
+    public void modifyHandshake(ServerEndpointConfig sec, HandshakeRequest request, HandshakeResponse response) {
+        HttpSession session = (HttpSession) request.getHttpSession();
+    }
+    
+    
+    
+}
diff --git a/jsf-demo/sandbox/html5/matrix/src/main/java/matrix/Main.java b/jsf-demo/sandbox/html5/matrix/src/main/java/matrix/Main.java
new file mode 100644
index 0000000..a1165f5
--- /dev/null
+++ b/jsf-demo/sandbox/html5/matrix/src/main/java/matrix/Main.java
@@ -0,0 +1,76 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 2011 - 2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * http://glassfish.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package matrix;
+
+import java.io.BufferedReader;
+import java.io.InputStreamReader;
+import org.glassfish.tyrus.server.Server;
+
+/**
+ *
+ */
+public class Main {
+
+    public static void main(String[] args) {
+        String hostname = "localhost";
+        int port = 8021;
+        if (2 == args.length) {
+            hostname = args[0];
+            port = Integer.parseInt(args[1]);
+        }
+        
+        Server server = new Server(hostname, port, "/matrix", Matrix.class);
+
+        try {
+            server.start();
+            BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
+            System.out.println("Press any key to stop the server...");
+            reader.readLine();
+        } catch (Exception e) {
+            System.out.println("weird...");
+            throw new RuntimeException(e);
+        } finally {
+            server.stop();
+            System.out.println("Server stopped.");
+        }
+    }
+}
+
diff --git a/jsf-demo/sandbox/html5/matrix/src/main/java/matrix/Matrix.java b/jsf-demo/sandbox/html5/matrix/src/main/java/matrix/Matrix.java
new file mode 100644
index 0000000..e931d49
--- /dev/null
+++ b/jsf-demo/sandbox/html5/matrix/src/main/java/matrix/Matrix.java
@@ -0,0 +1,85 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 2011 - 2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * http://glassfish.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package matrix;
+
+import javax.servlet.http.*;
+import java.io.IOException;
+import java.util.Collections;
+import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.websocket.OnClose;
+import javax.websocket.OnMessage;
+import javax.websocket.OnOpen;
+import javax.websocket.RemoteEndpoint;
+import javax.websocket.Session;
+import javax.websocket.server.ServerEndpoint;
+
+ at ServerEndpoint(value = "/matrix",
+        configurator=ConfiguratorImpl.class)
+/**
+ * Websocket endpoint for handling matrix control messages.
+ */
+public class Matrix {
+
+    final static Logger logger = Logger.getLogger("Matrix");
+
+    private static Set<Session> peers = Collections.newSetFromMap(new ConcurrentHashMap<Session, Boolean>());
+
+    @OnOpen
+    public void onOpen(Session session) {
+        peers.add(session);
+    }
+
+    @OnClose
+    public void onClose(Session session) {
+        peers.remove(session);
+    }
+
+    @OnMessage
+    public void handleMessage(String message, Session session) throws IOException {
+        logger.info("WS ENDPOINT BROADCASTING MESSAGE:"+message);
+        for (Session nextSession : peers) {
+            logger.info("BROADCASTING MESSAGE NEXT SESSION:"+nextSession);
+            nextSession.getBasicRemote().sendText(message);
+        }
+    }
+}
diff --git a/jsf-demo/sandbox/html5/matrix/src/main/webapp/WEB-INF/web.xml b/jsf-demo/sandbox/html5/matrix/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..f44c934
--- /dev/null
+++ b/jsf-demo/sandbox/html5/matrix/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2011 - 2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    http://glassfish.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<web-app version="3.0"
+         xmlns="http://java.sun.com/xml/ns/javaee"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+
+    <display-name>matrix</display-name>
+    <description>
+        JavaServer Faces 2.0 Composite Component Demo
+    </description>
+
+    <!-- Context Init Params -->
+
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>server</param-value>
+    </context-param>
+
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>Development</param-value>
+    </context-param>
+
+    <!-- Servlet Definitions/Mappings -->
+
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+    </servlet>
+
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>*.jsf</url-pattern>
+    </servlet-mapping>
+
+    <!-- Welcome File Configuration -->
+
+    <welcome-file-list>
+        <welcome-file>index.html</welcome-file>
+    </welcome-file-list>
+    
+</web-app>
+
diff --git a/jsf-demo/sandbox/html5/matrix/src/main/webapp/index.html b/jsf-demo/sandbox/html5/matrix/src/main/webapp/index.html
new file mode 100644
index 0000000..777da2c
--- /dev/null
+++ b/jsf-demo/sandbox/html5/matrix/src/main/webapp/index.html
@@ -0,0 +1,48 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2011-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<html>
+<head>
+    <meta http-equiv="Refresh" content="0;url=index.jsf">
+</head>
+</html>
+
diff --git a/jsf-demo/sandbox/html5/matrix/src/main/webapp/index.xhtml b/jsf-demo/sandbox/html5/matrix/src/main/webapp/index.xhtml
new file mode 100644
index 0000000..6dfa600
--- /dev/null
+++ b/jsf-demo/sandbox/html5/matrix/src/main/webapp/index.xhtml
@@ -0,0 +1,126 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://xmlns.jcp.org/jsf/html"
+      xmlns:f="http://xmlns.jcp.org/jsf/core"
+      xmlns:jsf="http://xmlns.jcp.org/jsf"
+      xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
+      xmlns:h5="http://java.sun.com/jsf/composite/h5">
+
+      <h:head>
+        <h:outputStylesheet name="/css/style.css"/>
+        <h:outputScript name="js/modernizr.custom.70435.js"/>
+        <h:outputScript name="js/color.js"/>
+        <h:outputScript name="js/jscolor.js"/>
+        <h:outputScript name="js/Matrix.js"/>
+      </h:head>
+
+      <body class="main-body">
+
+        <div class="title-panel">
+          <div class="title-panel-text">
+          Matrix Control 
+          </div>
+          <br/>
+          <br/>
+          <div class="title-panel-subtext">
+          Powered By JavaServer Faces 2.2 and HTML 5 Web Socket 
+          </div>
+        </div>
+
+        <h5:ws channels="{'/matrix/matrix':[matrixHandler]}"/>
+
+        <br/>
+        <br/>
+
+        <form id = "form">
+
+        <canvas id="canvas" width="360" height="325">
+         Your browser does not support the HTML5 Canvas element.
+         Please, update your browser.
+        </canvas>
+     
+        <fieldset id="outerfieldset">
+          <fieldset>
+             <legend><b>Operation</b></legend>
+             <input type="radio" id="pixel" name="manual" value="pixel" checked="checked" onclick="setPixel()"/>
+             <label for="pixel">pixel</label>
+             <input type="radio" id="row" name="manual" value="row" onclick="setRow()"/>
+             <label for="row">row</label>
+             <input type="radio" id="column" name="manual" value="column" onclick="setColumn()"/>
+             <label for="column">column</label>
+             <input type="radio" id="diag" name="manual" value="diag" onclick="setDiagonal()"/>
+             <label for="diag">diagonal</label>
+             <input type="radio" id="reset" name="manual" value="reset" onclick="resetMatrix()"/>
+             <label for="reset">reset</label>
+             <input type="checkbox" id="trail" checked="checked"/>
+             <label for="trail">trail</label>
+          </fieldset>
+          <fieldset id="color">
+             <legend><b>Color</b></legend>
+             <input id="clr" type="color" value="#00bedd" onchange="showColorValue(); return false;"/>
+          </fieldset>
+          <fieldset id="hexColor">
+             <legend><b>Hex</b></legend>
+                <div id="hexClr"/>
+          </fieldset>
+          <fieldset id="rgbColor">
+             <legend><b>RGB</b></legend>
+                <div id="rgbClr"/>
+          </fieldset>
+        </fieldset>
+
+        <br/>
+        <br/>
+
+        <div id="out"/>
+
+        </form>
+        
+
+      </body>
+
+</html>
diff --git a/jsf-demo/sandbox/html5/matrix/src/main/webapp/resources/css/Space1.jpg b/jsf-demo/sandbox/html5/matrix/src/main/webapp/resources/css/Space1.jpg
new file mode 100644
index 0000000..4a3c13c
Binary files /dev/null and b/jsf-demo/sandbox/html5/matrix/src/main/webapp/resources/css/Space1.jpg differ
diff --git a/jsf-demo/sandbox/html5/matrix/src/main/webapp/resources/css/style.css b/jsf-demo/sandbox/html5/matrix/src/main/webapp/resources/css/style.css
new file mode 100644
index 0000000..438f116
--- /dev/null
+++ b/jsf-demo/sandbox/html5/matrix/src/main/webapp/resources/css/style.css
@@ -0,0 +1,103 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+.title-panel {
+    background-image: url('Space1.jpg.jsf');
+    height: 80px;
+    width: 100%;
+}
+
+.title-panel-text {
+    color: white;
+    font-family: 'Georgia','Times New Roman','times',serif;
+    font-size: 24px;
+    font-weight: bold;
+}
+
+.title-panel-subtext {
+    color: white;
+    font-family: 'Georgia','Times New Roman','times',serif;
+    font-size: 16px;
+    font-style: italic
+}
+
+.main-body {
+    background-color: #f0f8ff
+}
+
+.main-div {
+    border:4px solid #a1a1a1;
+    padding:20px 40px; 
+    background:#dddddd;
+    text-align: center;
+}
+
+.main-div-text {
+    font-weight: bold;
+}
+
+#instructions {
+    font-size: 20px;
+}
+
+#canvas {
+    border: solid 1px black;
+    float: left;
+}
+
+#clr {
+    float: left;
+}
+
+#outerfieldset {
+    float: left;
+}
+
+#color {
+    float: left;
+}
+
+#hexColor {
+    float: left;
+}
+
+#rgbColor {
+    float: left;
+}
diff --git a/jsf-demo/sandbox/html5/matrix/src/main/webapp/resources/h5/ws.xhtml b/jsf-demo/sandbox/html5/matrix/src/main/webapp/resources/h5/ws.xhtml
new file mode 100644
index 0000000..8169c21
--- /dev/null
+++ b/jsf-demo/sandbox/html5/matrix/src/main/webapp/resources/h5/ws.xhtml
@@ -0,0 +1,74 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2011-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:composite="http://java.sun.com/jsf/composite">
+<head>
+
+<title>This will not be present in rendered output</title>
+
+</head>
+
+<body>
+
+<composite:interface>
+    <composite:attribute name="channels" required="true" />
+    <composite:attribute name="hostname" default="#{request.serverName}" />
+    <composite:attribute name="port" default="#{request.serverPort}" />
+</composite:interface>
+
+<composite:implementation>
+    <h:outputScript name="js/jsf-ws.js" target="head"/>
+    <script type="text/javascript">
+        JSF.ws.init("#{cc.attrs.hostname}", "#{cc.attrs.port}", #{cc.attrs.channels});
+    </script>
+</composite:implementation>
+
+</body>
+
+</html>
+
diff --git a/jsf-demo/sandbox/html5/matrix/src/main/webapp/resources/js/Matrix.js b/jsf-demo/sandbox/html5/matrix/src/main/webapp/resources/js/Matrix.js
new file mode 100644
index 0000000..52479e6
--- /dev/null
+++ b/jsf-demo/sandbox/html5/matrix/src/main/webapp/resources/js/Matrix.js
@@ -0,0 +1,409 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 2011-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+var canvas;
+var context;
+var matrix;
+
+/**
+ * Initialize canvas and matrix.
+ */
+window.onload = function() {
+    canvas = document.getElementById('canvas');
+    context = canvas.getContext('2d');
+    canvas.addEventListener("click", sendPixel, false);
+    initDemo(context);
+    showColorValue();
+}
+
+/**
+ * Draw on the canvas.
+ */
+var draw = function (context, x, y, fillcolor, radius, linewidth, strokestyle) {
+    context.beginPath();
+    context.arc(x, y, radius, 0, 2 * Math.PI, false);
+    context.fillStyle = fillcolor;
+    context.fill();
+    context.lineWidth = linewidth;
+    context.strokeStyle = strokestyle;
+    context.stroke();
+};
+
+/**
+ * Circle shape containing coordinates.
+ */
+var Circle = function(x, y, radius) {
+    this.x = x;
+    this.y = y;
+    this.left = x - radius;
+    this.top = y - radius;
+    this.right = x + radius;
+    this.bottom = y + radius;
+};
+
+/**
+ * Draw a circle shape on canvas.
+ */
+var drawCircle = function (context, x, y, fillcolor, radius, linewidth, strokestyle) {
+    draw(context, x, y, fillcolor, radius, linewidth, strokestyle);
+    var circle = new Circle(x, y, radius);
+    return circle;
+};
+
+/**
+ * Initializes canvas matrix.
+ */
+function initDemo(context) {
+    matrix = new Array(8);
+    for (var i=0; i<8; i++) {
+        matrix[i] = new Array(8);
+    }
+    var x = 40;
+    var y = 20;
+    for (var i=0; i<8; i++) {
+        for (var j=0; j<8; j++) {
+            matrix[j][i] = drawCircle(context, x, y, "#cdc9c9", 12, 2, "#003300");
+            x += 40;
+        }
+        x = 40;
+        y += 40;
+    }
+
+    if (!Modernizr.inputtypes.color) {
+        var parent = document.getElementById("color");
+        var child = document.getElementById("clr");
+        parent.removeChild(child);
+        var input = document.createElement("input");
+        input.className = "color";
+        input.id = "clr";
+        input.value="00bedd";
+        input.setAttribute("onchange","showColorValue(); return false;");
+        parent.appendChild(input);
+        new jscolor.color(document.getElementById("clr"));
+    }
+}
+
+/**
+ * Determines the circle (representing a matrix pixel) that was clicked.
+ * Produces a pipe delimited string:
+ * <command> | <color> | <coordinates>
+ * where command can be:
+ * "P" (Control individual pixel)
+ * "X" (control rows)
+ * "Y" (control columns)
+ * "D" (control diagonal)
+ * "CP" (Control individual pixel - no trail)
+ * "CX" (control rows - no trail)
+ * "CY" (control columns - no trail)
+ * "CD" (control diagonal - no trail)
+ * "R" (reset)
+ */
+function sendPixel(event) {
+    var sendStr;
+    var clickedX = event.pageX - this.offsetLeft;
+    var clickedY = event.pageY - this.offsetTop;
+    for (var i = 0; i < 8; i++) {
+        for (var j = 0; j < 8; j++) {
+            if (clickedX < matrix[i][j].right && clickedX > matrix[i][j].left &&
+                clickedY > matrix[i][j].top && clickedY < matrix[i][j].bottom) {
+                if (document.getElementById("trail").checked) {
+                    sendStr = "P|" + rgbClr.innerHTML + "|" +  i + "," + j; 
+                } else {
+                    sendStr = "CP|" + rgbClr.innerHTML + "|" +  i + "," + j; 
+                }
+                send(sendStr); return false;
+            }
+
+        }
+    }
+}
+
+/**
+ * Clears canvas to initial state.
+ */
+function resetMatrix() {
+    canvas.removeEventListener("click", sendPixel, false);
+    send("R"); return false;
+}
+
+/**
+ * Sets "click" event listener for individual pixel control.
+ */
+function setPixel() {
+    canvas.addEventListener("click", sendPixel, false);
+}
+
+/**
+ * Handler for the "row" radio option.
+ * Sends the "CX" command.
+ */
+function setRow() {
+    var sendStr;
+    canvas.removeEventListener("click", sendPixel, false);
+    if (document.getElementById("trail").checked) {
+        sendStr = "X|" + rgbClr.innerHTML;
+    } else {
+        sendStr = "CX|" + rgbClr.innerHTML;
+    }
+    send(sendStr); return false;
+}
+
+/**
+ * Handler for the "column" radio option.
+ * Send the "Y" command (pixel trail set).
+ * Sends the "CY" command (if pixel trail option is not set).
+ */
+function setColumn() {
+    var sendStr;
+    canvas.removeEventListener("click", sendPixel, false);
+    if (document.getElementById("trail").checked) {
+        sendStr = "Y|" + rgbClr.innerHTML;
+    } else {
+        sendStr = "CY|" + rgbClr.innerHTML;
+    }
+    send(sendStr); return false;
+}
+
+/**
+ * Handler for the "diagonal" radio option.
+ * Sends the "D" command (pixel trail set)..
+ * Sends the "CD" command (if pixel trail option is not set).
+ */
+function setDiagonal() {
+    var sendStr;
+    canvas.removeEventListener("click", sendPixel, false);
+    if (document.getElementById("trail").checked) {
+        sendStr = "D|" + rgbClr.innerHTML;
+    } else {
+        sendStr = "CD|" + rgbClr.innerHTML;
+    }
+    send(sendStr); return false;
+}
+
+function sendMessage() {
+    var sendStr;
+    var msg = document.getElementById("msg");
+    canvas.removeEventListener("click", sendPixel, false);
+    sendStr = "M|" + rgbClr.innerHTML + "|" + msg.value;
+    send(sendStr); return false;
+}
+
+/**
+ * Sends a Web Socket message.
+ */
+function send(msg, arg) {
+    if (arg !== undefined) msg = msg + "," + arg;
+    var socket = JSF.ws.getSocket("/matrix/matrix");
+    socket.send(msg);
+}
+
+/**
+ * Web Socket callback that updates the matrix UI.
+ */
+function matrixHandler(eventData) {
+    if (eventData.length == 0) {
+        return;
+    }
+    var i = 0;
+    var j = 0;
+    var data = eventData.data;
+    var values = data.split("|");
+    var rgb = "rgb(" + values[1] + ")";
+    var decrement = false;
+    var myTimer = null;
+    var level = 0;
+    if (values[0] == "R") {
+        reset();
+        return;
+    } else if (values[0] == "P") {
+        var coords = values[2].split(",");
+        i = coords[0];
+        j = coords[1];
+        var rgb = "rgb(" + values[1] + ")";
+        draw(context, matrix[i][j].x, matrix[i][j].y, rgb, 12, 2, "#003300");
+    } else if (values[0] == "CP") {
+        reset();
+        var iPrev = i;
+        var jPrev = j;
+        var coords = values[2].split(",");
+        i = coords[0];
+        j = coords[1];
+        var rgb = "rgb(" + values[1] + ")";
+        reset();
+        draw(context, matrix[i][j].x, matrix[i][j].y, rgb, 12, 2, "#003300");
+    } else if (values[0] == "X") {
+        myTimer=setInterval(loopX,50);
+    } else if (values[0] == "Y") {
+        myTimer=setInterval(loopY,50);
+    } else if (values[0] == "D") {
+        myTimer=setInterval(loopD,50);
+    } else if (values[0] == "CX") {
+        myTimer=setInterval(loopCX,100);
+    } else if (values[0] == "CY") {
+        myTimer=setInterval(loopCY,100);
+    } else if (values[0] == "CD") {
+        myTimer=setInterval(loopCD,100);
+    }
+
+    function loopX() {
+        draw(context, matrix[i][j].x, matrix[i][j].y, rgb, 12, 2, "#003300");
+        i++;
+        if (i > 7) {
+            i = 0;
+            j++;
+        }
+        if (j > 7) {
+            clearInterval(myTimer);
+            myTimer = null;
+        }
+    }
+    function loopY() {
+        draw(context, matrix[i][j].x, matrix[i][j].y, rgb, 12, 2, "#003300");
+        j++;
+        if (j > 7) {
+            j = 0;
+            i++;
+        }
+        if (i > 7) {
+            clearInterval(myTimer);
+            myTimer = null;
+        }
+    }
+
+    function loopD() {
+        draw(context, matrix[i][j].x, matrix[i][j].y, rgb, 12, 2, "#003300");
+        if (decrement) {
+            i--;
+        } else {
+            i++;
+        }
+        j++;
+        if (j > 7) {
+            if (!decrement) {
+                i = 7;
+                j = 0;
+                decrement = true;
+            } else {
+                clearInterval(myTimer);
+                myTimer = null;
+            }
+        }
+    }
+
+    /**
+     * Draws a "moving" pixel by row.
+     */
+    function loopCX() {
+        reset();
+        draw(context, matrix[i][j].x, matrix[i][j].y, rgb, 12, 2, "#003300");
+        var iPrev = i;
+        var jPrev = j;
+        i++;
+        if (i > 7) {
+            i = 0;
+            j++;
+        }
+        if (j > 7) {
+            clearInterval(myTimer);
+            myTimer = null;
+            draw(context, matrix[iPrev][jPrev].x, matrix[iPrev][jPrev].y, "#cdc9c9", 12, 2, "#003300");
+        } 
+    }
+
+    /**
+     * Draws a "moving" pixel by column.
+     */
+    function loopCY() {
+        reset();
+        draw(context, matrix[i][j].x, matrix[i][j].y, rgb, 12, 2, "#003300");
+        var iPrev = i;
+        var jPrev = j;
+        j++;
+        if (j > 7) {
+            j = 0;
+            i++;
+        }
+        if (i > 7) {
+            clearInterval(myTimer);
+            myTimer = null;
+            draw(context, matrix[iPrev][jPrev].x, matrix[iPrev][jPrev].y, "#cdc9c9", 12, 2, "#003300");
+        }
+    }
+
+    /**
+     * Draws a "moving" pixel diagonally.
+     */
+    function loopCD() {
+        reset();
+        draw(context, matrix[i][j].x, matrix[i][j].y, rgb, 12, 2, "#003300");
+        var iPrev = i;
+        var jPrev = j;
+        if (decrement) {
+            i--;
+        } else {
+            i++;
+        }
+        j++;
+        if (j > 7) {
+            if (!decrement) {
+                i = 7;
+                j = 0;
+                decrement = true;
+            } else {
+                clearInterval(myTimer);
+                myTimer = null;
+                draw(context, matrix[iPrev][jPrev].x, matrix[iPrev][jPrev].y, "#cdc9c9", 12, 2, "#003300");
+            }
+        }
+    }
+
+
+    /**
+     * Reset the matrix pixels.
+     */
+    function reset() {
+        for (var i=0; i<8; i++) {
+            for (var j=0; j<8; j++) {
+                draw(context, matrix[i][j].x, matrix[i][j].y, "#cdc9c9", 12, 2, "#003300");
+            }
+        }
+    }
+}
+
diff --git a/jsf-demo/sandbox/html5/matrix/src/main/webapp/resources/js/arrow.gif b/jsf-demo/sandbox/html5/matrix/src/main/webapp/resources/js/arrow.gif
new file mode 100644
index 0000000..246478a
Binary files /dev/null and b/jsf-demo/sandbox/html5/matrix/src/main/webapp/resources/js/arrow.gif differ
diff --git a/jsf-demo/sandbox/html5/matrix/src/main/webapp/resources/js/color.js b/jsf-demo/sandbox/html5/matrix/src/main/webapp/resources/js/color.js
new file mode 100644
index 0000000..75f8ecb
--- /dev/null
+++ b/jsf-demo/sandbox/html5/matrix/src/main/webapp/resources/js/color.js
@@ -0,0 +1,9 @@
+function showColorValue() {
+    var clr = document.getElementById("clr");
+    hexClr.innerHTML = clr.value;
+    var R = parseInt((clr.value.substring(1)).substring(0,2),16);
+    var G = parseInt((clr.value.substring(1)).substring(2,4),16);
+    var B = parseInt((clr.value.substring(1)).substring(4,6),16);
+    var rgb = R + "," + G + "," + B;
+    rgbClr.innerHTML = rgb;
+}
diff --git a/jsf-demo/sandbox/html5/matrix/src/main/webapp/resources/js/cross.gif b/jsf-demo/sandbox/html5/matrix/src/main/webapp/resources/js/cross.gif
new file mode 100644
index 0000000..0ee9c7a
Binary files /dev/null and b/jsf-demo/sandbox/html5/matrix/src/main/webapp/resources/js/cross.gif differ
diff --git a/jsf-demo/sandbox/html5/matrix/src/main/webapp/resources/js/hs.png b/jsf-demo/sandbox/html5/matrix/src/main/webapp/resources/js/hs.png
new file mode 100644
index 0000000..3d94486
Binary files /dev/null and b/jsf-demo/sandbox/html5/matrix/src/main/webapp/resources/js/hs.png differ
diff --git a/jsf-demo/sandbox/html5/matrix/src/main/webapp/resources/js/hv.png b/jsf-demo/sandbox/html5/matrix/src/main/webapp/resources/js/hv.png
new file mode 100644
index 0000000..1c5e01f
Binary files /dev/null and b/jsf-demo/sandbox/html5/matrix/src/main/webapp/resources/js/hv.png differ
diff --git a/jsf-demo/sandbox/html5/matrix/src/main/webapp/resources/js/jscolor.js b/jsf-demo/sandbox/html5/matrix/src/main/webapp/resources/js/jscolor.js
new file mode 100644
index 0000000..712ab9a
--- /dev/null
+++ b/jsf-demo/sandbox/html5/matrix/src/main/webapp/resources/js/jscolor.js
@@ -0,0 +1,995 @@
+/**
+ * jscolor, JavaScript Color Picker
+ *
+ * @version 1.4.1
+ * @license GNU Lesser General Public License, http://www.gnu.org/copyleft/lesser.html
+ * @author  Jan Odvarko, http://odvarko.cz
+ * @created 2008-06-15
+ * @updated 2013-04-08
+ * @link    http://jscolor.com
+ */
+
+
+var jscolor = {
+
+
+	dir : '', // location of jscolor directory (leave empty to autodetect)
+	bindClass : 'color', // class name
+	binding : true, // automatic binding via <input class="...">
+	preloading : true, // use image preloading?
+
+
+	install : function() {
+		jscolor.addEvent(window, 'load', jscolor.init);
+	},
+
+
+	init : function() {
+		if(jscolor.binding) {
+			jscolor.bind();
+		}
+		if(jscolor.preloading) {
+			jscolor.preload();
+		}
+	},
+
+
+	getDir : function() {
+		if(!jscolor.dir) {
+			var detected = jscolor.detectDir();
+			jscolor.dir = detected!==false ? detected : 'jscolor/';
+		}
+		return jscolor.dir;
+	},
+
+
+	detectDir : function() {
+		var base = location.href;
+
+		var e = document.getElementsByTagName('base');
+		for(var i=0; i<e.length; i+=1) {
+			if(e[i].href) { base = e[i].href; }
+		}
+
+		var e = document.getElementsByTagName('script');
+		for(var i=0; i<e.length; i+=1) {
+			if(e[i].src && /(^|\/)jscolor\.js([?#].*)?$/i.test(e[i].src)) {
+				var src = new jscolor.URI(e[i].src);
+				var srcAbs = src.toAbsolute(base);
+				srcAbs.path = srcAbs.path.replace(/[^\/]+$/, ''); // remove filename
+				srcAbs.query = null;
+				srcAbs.fragment = null;
+				return srcAbs.toString();
+			}
+		}
+		return false;
+	},
+
+
+	bind : function() {
+		var matchClass = new RegExp('(^|\\s)('+jscolor.bindClass+')\\s*(\\{[^}]*\\})?', 'i');
+		var e = document.getElementsByTagName('input');
+		for(var i=0; i<e.length; i+=1) {
+			var m;
+			if(!e[i].color && e[i].className && (m = e[i].className.match(matchClass))) {
+				var prop = {};
+				if(m[3]) {
+					try {
+						prop = (new Function ('return (' + m[3] + ')'))();
+					} catch(eInvalidProp) {}
+				}
+				e[i].color = new jscolor.color(e[i], prop);
+			}
+		}
+	},
+
+
+	preload : function() {
+		for(var fn in jscolor.imgRequire) {
+			if(jscolor.imgRequire.hasOwnProperty(fn)) {
+				jscolor.loadImage(fn);
+			}
+		}
+	},
+
+
+	images : {
+		pad : [ 181, 101 ],
+		sld : [ 16, 101 ],
+		cross : [ 15, 15 ],
+		arrow : [ 7, 11 ]
+	},
+
+
+	imgRequire : {},
+	imgLoaded : {},
+
+
+	requireImage : function(filename) {
+		jscolor.imgRequire[filename] = true;
+	},
+
+
+	loadImage : function(filename) {
+		if(!jscolor.imgLoaded[filename]) {
+			jscolor.imgLoaded[filename] = new Image();
+			jscolor.imgLoaded[filename].src = jscolor.getDir()+filename;
+		}
+	},
+
+
+	fetchElement : function(mixed) {
+		return typeof mixed === 'string' ? document.getElementById(mixed) : mixed;
+	},
+
+
+	addEvent : function(el, evnt, func) {
+		if(el.addEventListener) {
+			el.addEventListener(evnt, func, false);
+		} else if(el.attachEvent) {
+			el.attachEvent('on'+evnt, func);
+		}
+	},
+
+
+	fireEvent : function(el, evnt) {
+		if(!el) {
+			return;
+		}
+		if(document.createEvent) {
+			var ev = document.createEvent('HTMLEvents');
+			ev.initEvent(evnt, true, true);
+			el.dispatchEvent(ev);
+		} else if(document.createEventObject) {
+			var ev = document.createEventObject();
+			el.fireEvent('on'+evnt, ev);
+		} else if(el['on'+evnt]) { // alternatively use the traditional event model (IE5)
+			el['on'+evnt]();
+		}
+	},
+
+
+	getElementPos : function(e) {
+		var e1=e, e2=e;
+		var x=0, y=0;
+		if(e1.offsetParent) {
+			do {
+				x += e1.offsetLeft;
+				y += e1.offsetTop;
+			} while(e1 = e1.offsetParent);
+		}
+		while((e2 = e2.parentNode) && e2.nodeName.toUpperCase() !== 'BODY') {
+			x -= e2.scrollLeft;
+			y -= e2.scrollTop;
+		}
+		return [x, y];
+	},
+
+
+	getElementSize : function(e) {
+		return [e.offsetWidth, e.offsetHeight];
+	},
+
+
+	getRelMousePos : function(e) {
+		var x = 0, y = 0;
+		if (!e) { e = window.event; }
+		if (typeof e.offsetX === 'number') {
+			x = e.offsetX;
+			y = e.offsetY;
+		} else if (typeof e.layerX === 'number') {
+			x = e.layerX;
+			y = e.layerY;
+		}
+		return { x: x, y: y };
+	},
+
+
+	getViewPos : function() {
+		if(typeof window.pageYOffset === 'number') {
+			return [window.pageXOffset, window.pageYOffset];
+		} else if(document.body && (document.body.scrollLeft || document.body.scrollTop)) {
+			return [document.body.scrollLeft, document.body.scrollTop];
+		} else if(document.documentElement && (document.documentElement.scrollLeft || document.documentElement.scrollTop)) {
+			return [document.documentElement.scrollLeft, document.documentElement.scrollTop];
+		} else {
+			return [0, 0];
+		}
+	},
+
+
+	getViewSize : function() {
+		if(typeof window.innerWidth === 'number') {
+			return [window.innerWidth, window.innerHeight];
+		} else if(document.body && (document.body.clientWidth || document.body.clientHeight)) {
+			return [document.body.clientWidth, document.body.clientHeight];
+		} else if(document.documentElement && (document.documentElement.clientWidth || document.documentElement.clientHeight)) {
+			return [document.documentElement.clientWidth, document.documentElement.clientHeight];
+		} else {
+			return [0, 0];
+		}
+	},
+
+
+	URI : function(uri) { // See RFC3986
+
+		this.scheme = null;
+		this.authority = null;
+		this.path = '';
+		this.query = null;
+		this.fragment = null;
+
+		this.parse = function(uri) {
+			var m = uri.match(/^(([A-Za-z][0-9A-Za-z+.-]*)(:))?((\/\/)([^\/?#]*))?([^?#]*)((\?)([^#]*))?((#)(.*))?/);
+			this.scheme = m[3] ? m[2] : null;
+			this.authority = m[5] ? m[6] : null;
+			this.path = m[7];
+			this.query = m[9] ? m[10] : null;
+			this.fragment = m[12] ? m[13] : null;
+			return this;
+		};
+
+		this.toString = function() {
+			var result = '';
+			if(this.scheme !== null) { result = result + this.scheme + ':'; }
+			if(this.authority !== null) { result = result + '//' + this.authority; }
+			if(this.path !== null) { result = result + this.path; }
+			if(this.query !== null) { result = result + '?' + this.query; }
+			if(this.fragment !== null) { result = result + '#' + this.fragment; }
+			return result;
+		};
+
+		this.toAbsolute = function(base) {
+			var base = new jscolor.URI(base);
+			var r = this;
+			var t = new jscolor.URI;
+
+			if(base.scheme === null) { return false; }
+
+			if(r.scheme !== null && r.scheme.toLowerCase() === base.scheme.toLowerCase()) {
+				r.scheme = null;
+			}
+
+			if(r.scheme !== null) {
+				t.scheme = r.scheme;
+				t.authority = r.authority;
+				t.path = removeDotSegments(r.path);
+				t.query = r.query;
+			} else {
+				if(r.authority !== null) {
+					t.authority = r.authority;
+					t.path = removeDotSegments(r.path);
+					t.query = r.query;
+				} else {
+					if(r.path === '') {
+						t.path = base.path;
+						if(r.query !== null) {
+							t.query = r.query;
+						} else {
+							t.query = base.query;
+						}
+					} else {
+						if(r.path.substr(0,1) === '/') {
+							t.path = removeDotSegments(r.path);
+						} else {
+							if(base.authority !== null && base.path === '') {
+								t.path = '/'+r.path;
+							} else {
+								t.path = base.path.replace(/[^\/]+$/,'')+r.path;
+							}
+							t.path = removeDotSegments(t.path);
+						}
+						t.query = r.query;
+					}
+					t.authority = base.authority;
+				}
+				t.scheme = base.scheme;
+			}
+			t.fragment = r.fragment;
+
+			return t;
+		};
+
+		function removeDotSegments(path) {
+			var out = '';
+			while(path) {
+				if(path.substr(0,3)==='../' || path.substr(0,2)==='./') {
+					path = path.replace(/^\.+/,'').substr(1);
+				} else if(path.substr(0,3)==='/./' || path==='/.') {
+					path = '/'+path.substr(3);
+				} else if(path.substr(0,4)==='/../' || path==='/..') {
+					path = '/'+path.substr(4);
+					out = out.replace(/\/?[^\/]*$/, '');
+				} else if(path==='.' || path==='..') {
+					path = '';
+				} else {
+					var rm = path.match(/^\/?[^\/]*/)[0];
+					path = path.substr(rm.length);
+					out = out + rm;
+				}
+			}
+			return out;
+		}
+
+		if(uri) {
+			this.parse(uri);
+		}
+
+	},
+
+
+	//
+	// Usage example:
+	// var myColor = new jscolor.color(myInputElement)
+	//
+
+	color : function(target, prop) {
+
+
+		this.required = true; // refuse empty values?
+		this.adjust = true; // adjust value to uniform notation?
+		this.hash = false; // prefix color with # symbol?
+		this.caps = true; // uppercase?
+		this.slider = true; // show the value/saturation slider?
+		this.valueElement = target; // value holder
+		this.styleElement = target; // where to reflect current color
+		this.onImmediateChange = null; // onchange callback (can be either string or function)
+		this.hsv = [0, 0, 1]; // read-only  0-6, 0-1, 0-1
+		this.rgb = [1, 1, 1]; // read-only  0-1, 0-1, 0-1
+		this.minH = 0; // read-only  0-6
+		this.maxH = 6; // read-only  0-6
+		this.minS = 0; // read-only  0-1
+		this.maxS = 1; // read-only  0-1
+		this.minV = 0; // read-only  0-1
+		this.maxV = 1; // read-only  0-1
+
+		this.pickerOnfocus = true; // display picker on focus?
+		this.pickerMode = 'HSV'; // HSV | HVS
+		this.pickerPosition = 'bottom'; // left | right | top | bottom
+		this.pickerSmartPosition = true; // automatically adjust picker position when necessary
+		this.pickerButtonHeight = 20; // px
+		this.pickerClosable = false;
+		this.pickerCloseText = 'Close';
+		this.pickerButtonColor = 'ButtonText'; // px
+		this.pickerFace = 10; // px
+		this.pickerFaceColor = 'ThreeDFace'; // CSS color
+		this.pickerBorder = 1; // px
+		this.pickerBorderColor = 'ThreeDHighlight ThreeDShadow ThreeDShadow ThreeDHighlight'; // CSS color
+		this.pickerInset = 1; // px
+		this.pickerInsetColor = 'ThreeDShadow ThreeDHighlight ThreeDHighlight ThreeDShadow'; // CSS color
+		this.pickerZIndex = 10000;
+
+
+		for(var p in prop) {
+			if(prop.hasOwnProperty(p)) {
+				this[p] = prop[p];
+			}
+		}
+
+
+		this.hidePicker = function() {
+			if(isPickerOwner()) {
+				removePicker();
+			}
+		};
+
+
+		this.showPicker = function() {
+			if(!isPickerOwner()) {
+				var tp = jscolor.getElementPos(target); // target pos
+				var ts = jscolor.getElementSize(target); // target size
+				var vp = jscolor.getViewPos(); // view pos
+				var vs = jscolor.getViewSize(); // view size
+				var ps = getPickerDims(this); // picker size
+				var a, b, c;
+				switch(this.pickerPosition.toLowerCase()) {
+					case 'left': a=1; b=0; c=-1; break;
+					case 'right':a=1; b=0; c=1; break;
+					case 'top':  a=0; b=1; c=-1; break;
+					default:     a=0; b=1; c=1; break;
+				}
+				var l = (ts[b]+ps[b])/2;
+
+				// picker pos
+				if (!this.pickerSmartPosition) {
+					var pp = [
+						tp[a],
+						tp[b]+ts[b]-l+l*c
+					];
+				} else {
+					var pp = [
+						-vp[a]+tp[a]+ps[a] > vs[a] ?
+							(-vp[a]+tp[a]+ts[a]/2 > vs[a]/2 && tp[a]+ts[a]-ps[a] >= 0 ? tp[a]+ts[a]-ps[a] : tp[a]) :
+							tp[a],
+						-vp[b]+tp[b]+ts[b]+ps[b]-l+l*c > vs[b] ?
+							(-vp[b]+tp[b]+ts[b]/2 > vs[b]/2 && tp[b]+ts[b]-l-l*c >= 0 ? tp[b]+ts[b]-l-l*c : tp[b]+ts[b]-l+l*c) :
+							(tp[b]+ts[b]-l+l*c >= 0 ? tp[b]+ts[b]-l+l*c : tp[b]+ts[b]-l-l*c)
+					];
+				}
+				drawPicker(pp[a], pp[b]);
+			}
+		};
+
+
+		this.importColor = function() {
+			if(!valueElement) {
+				this.exportColor();
+			} else {
+				if(!this.adjust) {
+					if(!this.fromString(valueElement.value, leaveValue)) {
+						styleElement.style.backgroundImage = styleElement.jscStyle.backgroundImage;
+						styleElement.style.backgroundColor = styleElement.jscStyle.backgroundColor;
+						styleElement.style.color = styleElement.jscStyle.color;
+						this.exportColor(leaveValue | leaveStyle);
+					}
+				} else if(!this.required && /^\s*$/.test(valueElement.value)) {
+					valueElement.value = '';
+					styleElement.style.backgroundImage = styleElement.jscStyle.backgroundImage;
+					styleElement.style.backgroundColor = styleElement.jscStyle.backgroundColor;
+					styleElement.style.color = styleElement.jscStyle.color;
+					this.exportColor(leaveValue | leaveStyle);
+
+				} else if(this.fromString(valueElement.value)) {
+					// OK
+				} else {
+					this.exportColor();
+				}
+			}
+		};
+
+
+		this.exportColor = function(flags) {
+			if(!(flags & leaveValue) && valueElement) {
+				var value = this.toString();
+				if(this.caps) { value = value.toUpperCase(); }
+				if(this.hash) { value = '#'+value; }
+				valueElement.value = value;
+			}
+			if(!(flags & leaveStyle) && styleElement) {
+				styleElement.style.backgroundImage = "none";
+				styleElement.style.backgroundColor =
+					'#'+this.toString();
+				styleElement.style.color =
+					0.213 * this.rgb[0] +
+					0.715 * this.rgb[1] +
+					0.072 * this.rgb[2]
+					< 0.5 ? '#FFF' : '#000';
+			}
+			if(!(flags & leavePad) && isPickerOwner()) {
+				redrawPad();
+			}
+			if(!(flags & leaveSld) && isPickerOwner()) {
+				redrawSld();
+			}
+		};
+
+
+		this.fromHSV = function(h, s, v, flags) { // null = don't change
+			if(h !== null) { h = Math.max(0.0, this.minH, Math.min(6.0, this.maxH, h)); }
+			if(s !== null) { s = Math.max(0.0, this.minS, Math.min(1.0, this.maxS, s)); }
+			if(v !== null) { v = Math.max(0.0, this.minV, Math.min(1.0, this.maxV, v)); }
+
+			this.rgb = HSV_RGB(
+				h===null ? this.hsv[0] : (this.hsv[0]=h),
+				s===null ? this.hsv[1] : (this.hsv[1]=s),
+				v===null ? this.hsv[2] : (this.hsv[2]=v)
+			);
+
+			this.exportColor(flags);
+		};
+
+
+		this.fromRGB = function(r, g, b, flags) { // null = don't change
+			if(r !== null) { r = Math.max(0.0, Math.min(1.0, r)); }
+			if(g !== null) { g = Math.max(0.0, Math.min(1.0, g)); }
+			if(b !== null) { b = Math.max(0.0, Math.min(1.0, b)); }
+
+			var hsv = RGB_HSV(
+				r===null ? this.rgb[0] : r,
+				g===null ? this.rgb[1] : g,
+				b===null ? this.rgb[2] : b
+			);
+			if(hsv[0] !== null) {
+				this.hsv[0] = Math.max(0.0, this.minH, Math.min(6.0, this.maxH, hsv[0]));
+			}
+			if(hsv[2] !== 0) {
+				this.hsv[1] = hsv[1]===null ? null : Math.max(0.0, this.minS, Math.min(1.0, this.maxS, hsv[1]));
+			}
+			this.hsv[2] = hsv[2]===null ? null : Math.max(0.0, this.minV, Math.min(1.0, this.maxV, hsv[2]));
+
+			// update RGB according to final HSV, as some values might be trimmed
+			var rgb = HSV_RGB(this.hsv[0], this.hsv[1], this.hsv[2]);
+			this.rgb[0] = rgb[0];
+			this.rgb[1] = rgb[1];
+			this.rgb[2] = rgb[2];
+
+			this.exportColor(flags);
+		};
+
+
+		this.fromString = function(hex, flags) {
+			var m = hex.match(/^\W*([0-9A-F]{3}([0-9A-F]{3})?)\W*$/i);
+			if(!m) {
+				return false;
+			} else {
+				if(m[1].length === 6) { // 6-char notation
+					this.fromRGB(
+						parseInt(m[1].substr(0,2),16) / 255,
+						parseInt(m[1].substr(2,2),16) / 255,
+						parseInt(m[1].substr(4,2),16) / 255,
+						flags
+					);
+				} else { // 3-char notation
+					this.fromRGB(
+						parseInt(m[1].charAt(0)+m[1].charAt(0),16) / 255,
+						parseInt(m[1].charAt(1)+m[1].charAt(1),16) / 255,
+						parseInt(m[1].charAt(2)+m[1].charAt(2),16) / 255,
+						flags
+					);
+				}
+				return true;
+			}
+		};
+
+
+		this.toString = function() {
+			return (
+				(0x100 | Math.round(255*this.rgb[0])).toString(16).substr(1) +
+				(0x100 | Math.round(255*this.rgb[1])).toString(16).substr(1) +
+				(0x100 | Math.round(255*this.rgb[2])).toString(16).substr(1)
+			);
+		};
+
+
+		function RGB_HSV(r, g, b) {
+			var n = Math.min(Math.min(r,g),b);
+			var v = Math.max(Math.max(r,g),b);
+			var m = v - n;
+			if(m === 0) { return [ null, 0, v ]; }
+			var h = r===n ? 3+(b-g)/m : (g===n ? 5+(r-b)/m : 1+(g-r)/m);
+			return [ h===6?0:h, m/v, v ];
+		}
+
+
+		function HSV_RGB(h, s, v) {
+			if(h === null) { return [ v, v, v ]; }
+			var i = Math.floor(h);
+			var f = i%2 ? h-i : 1-(h-i);
+			var m = v * (1 - s);
+			var n = v * (1 - s*f);
+			switch(i) {
+				case 6:
+				case 0: return [v,n,m];
+				case 1: return [n,v,m];
+				case 2: return [m,v,n];
+				case 3: return [m,n,v];
+				case 4: return [n,m,v];
+				case 5: return [v,m,n];
+			}
+		}
+
+
+		function removePicker() {
+			delete jscolor.picker.owner;
+			document.getElementsByTagName('body')[0].removeChild(jscolor.picker.boxB);
+		}
+
+
+		function drawPicker(x, y) {
+			if(!jscolor.picker) {
+				jscolor.picker = {
+					box : document.createElement('div'),
+					boxB : document.createElement('div'),
+					pad : document.createElement('div'),
+					padB : document.createElement('div'),
+					padM : document.createElement('div'),
+					sld : document.createElement('div'),
+					sldB : document.createElement('div'),
+					sldM : document.createElement('div'),
+					btn : document.createElement('div'),
+					btnS : document.createElement('span'),
+					btnT : document.createTextNode(THIS.pickerCloseText)
+				};
+				for(var i=0,segSize=4; i<jscolor.images.sld[1]; i+=segSize) {
+					var seg = document.createElement('div');
+					seg.style.height = segSize+'px';
+					seg.style.fontSize = '1px';
+					seg.style.lineHeight = '0';
+					jscolor.picker.sld.appendChild(seg);
+				}
+				jscolor.picker.sldB.appendChild(jscolor.picker.sld);
+				jscolor.picker.box.appendChild(jscolor.picker.sldB);
+				jscolor.picker.box.appendChild(jscolor.picker.sldM);
+				jscolor.picker.padB.appendChild(jscolor.picker.pad);
+				jscolor.picker.box.appendChild(jscolor.picker.padB);
+				jscolor.picker.box.appendChild(jscolor.picker.padM);
+				jscolor.picker.btnS.appendChild(jscolor.picker.btnT);
+				jscolor.picker.btn.appendChild(jscolor.picker.btnS);
+				jscolor.picker.box.appendChild(jscolor.picker.btn);
+				jscolor.picker.boxB.appendChild(jscolor.picker.box);
+			}
+
+			var p = jscolor.picker;
+
+			// controls interaction
+			p.box.onmouseup =
+			p.box.onmouseout = function() { target.focus(); };
+			p.box.onmousedown = function() { abortBlur=true; };
+			p.box.onmousemove = function(e) {
+				if (holdPad || holdSld) {
+					holdPad && setPad(e);
+					holdSld && setSld(e);
+					if (document.selection) {
+						document.selection.empty();
+					} else if (window.getSelection) {
+						window.getSelection().removeAllRanges();
+					}
+					dispatchImmediateChange();
+				}
+			};
+			if('ontouchstart' in window) { // if touch device
+				p.box.addEventListener('touchmove', function(e) {
+					var event={
+						'offsetX': e.touches[0].pageX-touchOffset.X,
+						'offsetY': e.touches[0].pageY-touchOffset.Y
+					};
+					if (holdPad || holdSld) {
+						holdPad && setPad(event);
+						holdSld && setSld(event);
+						dispatchImmediateChange();
+					}
+					e.stopPropagation(); // prevent move "view" on broswer
+					e.preventDefault(); // prevent Default - Android Fix (else android generated only 1-2 touchmove events)
+				}, false);
+			}
+			p.padM.onmouseup =
+			p.padM.onmouseout = function() { if(holdPad) { holdPad=false; jscolor.fireEvent(valueElement,'change'); } };
+			p.padM.onmousedown = function(e) {
+				// if the slider is at the bottom, move it up
+				switch(modeID) {
+					case 0: if (THIS.hsv[2] === 0) { THIS.fromHSV(null, null, 1.0); }; break;
+					case 1: if (THIS.hsv[1] === 0) { THIS.fromHSV(null, 1.0, null); }; break;
+				}
+				holdSld=false;
+				holdPad=true;
+				setPad(e);
+				dispatchImmediateChange();
+			};
+			if('ontouchstart' in window) {
+				p.padM.addEventListener('touchstart', function(e) {
+					touchOffset={
+						'X': e.target.offsetParent.offsetLeft,
+						'Y': e.target.offsetParent.offsetTop
+					};
+					this.onmousedown({
+						'offsetX':e.touches[0].pageX-touchOffset.X,
+						'offsetY':e.touches[0].pageY-touchOffset.Y
+					});
+				});
+			}
+			p.sldM.onmouseup =
+			p.sldM.onmouseout = function() { if(holdSld) { holdSld=false; jscolor.fireEvent(valueElement,'change'); } };
+			p.sldM.onmousedown = function(e) {
+				holdPad=false;
+				holdSld=true;
+				setSld(e);
+				dispatchImmediateChange();
+			};
+			if('ontouchstart' in window) {
+				p.sldM.addEventListener('touchstart', function(e) {
+					touchOffset={
+						'X': e.target.offsetParent.offsetLeft,
+						'Y': e.target.offsetParent.offsetTop
+					};
+					this.onmousedown({
+						'offsetX':e.touches[0].pageX-touchOffset.X,
+						'offsetY':e.touches[0].pageY-touchOffset.Y
+					});
+				});
+			}
+
+			// picker
+			var dims = getPickerDims(THIS);
+			p.box.style.width = dims[0] + 'px';
+			p.box.style.height = dims[1] + 'px';
+
+			// picker border
+			p.boxB.style.position = 'absolute';
+			p.boxB.style.clear = 'both';
+			p.boxB.style.left = x+'px';
+			p.boxB.style.top = y+'px';
+			p.boxB.style.zIndex = THIS.pickerZIndex;
+			p.boxB.style.border = THIS.pickerBorder+'px solid';
+			p.boxB.style.borderColor = THIS.pickerBorderColor;
+			p.boxB.style.background = THIS.pickerFaceColor;
+
+			// pad image
+			p.pad.style.width = jscolor.images.pad[0]+'px';
+			p.pad.style.height = jscolor.images.pad[1]+'px';
+
+			// pad border
+			p.padB.style.position = 'absolute';
+			p.padB.style.left = THIS.pickerFace+'px';
+			p.padB.style.top = THIS.pickerFace+'px';
+			p.padB.style.border = THIS.pickerInset+'px solid';
+			p.padB.style.borderColor = THIS.pickerInsetColor;
+
+			// pad mouse area
+			p.padM.style.position = 'absolute';
+			p.padM.style.left = '0';
+			p.padM.style.top = '0';
+			p.padM.style.width = THIS.pickerFace + 2*THIS.pickerInset + jscolor.images.pad[0] + jscolor.images.arrow[0] + 'px';
+			p.padM.style.height = p.box.style.height;
+			p.padM.style.cursor = 'crosshair';
+
+			// slider image
+			p.sld.style.overflow = 'hidden';
+			p.sld.style.width = jscolor.images.sld[0]+'px';
+			p.sld.style.height = jscolor.images.sld[1]+'px';
+
+			// slider border
+			p.sldB.style.display = THIS.slider ? 'block' : 'none';
+			p.sldB.style.position = 'absolute';
+			p.sldB.style.right = THIS.pickerFace+'px';
+			p.sldB.style.top = THIS.pickerFace+'px';
+			p.sldB.style.border = THIS.pickerInset+'px solid';
+			p.sldB.style.borderColor = THIS.pickerInsetColor;
+
+			// slider mouse area
+			p.sldM.style.display = THIS.slider ? 'block' : 'none';
+			p.sldM.style.position = 'absolute';
+			p.sldM.style.right = '0';
+			p.sldM.style.top = '0';
+			p.sldM.style.width = jscolor.images.sld[0] + jscolor.images.arrow[0] + THIS.pickerFace + 2*THIS.pickerInset + 'px';
+			p.sldM.style.height = p.box.style.height;
+			try {
+				p.sldM.style.cursor = 'pointer';
+			} catch(eOldIE) {
+				p.sldM.style.cursor = 'hand';
+			}
+
+			// "close" button
+			function setBtnBorder() {
+				var insetColors = THIS.pickerInsetColor.split(/\s+/);
+				var pickerOutsetColor = insetColors.length < 2 ? insetColors[0] : insetColors[1] + ' ' + insetColors[0] + ' ' + insetColors[0] + ' ' + insetColors[1];
+				p.btn.style.borderColor = pickerOutsetColor;
+			}
+			p.btn.style.display = THIS.pickerClosable ? 'block' : 'none';
+			p.btn.style.position = 'absolute';
+			p.btn.style.left = THIS.pickerFace + 'px';
+			p.btn.style.bottom = THIS.pickerFace + 'px';
+			p.btn.style.padding = '0 15px';
+			p.btn.style.height = '18px';
+			p.btn.style.border = THIS.pickerInset + 'px solid';
+			setBtnBorder();
+			p.btn.style.color = THIS.pickerButtonColor;
+			p.btn.style.font = '12px sans-serif';
+			p.btn.style.textAlign = 'center';
+			try {
+				p.btn.style.cursor = 'pointer';
+			} catch(eOldIE) {
+				p.btn.style.cursor = 'hand';
+			}
+			p.btn.onmousedown = function () {
+				THIS.hidePicker();
+			};
+			p.btnS.style.lineHeight = p.btn.style.height;
+
+			// load images in optimal order
+			switch(modeID) {
+				case 0: var padImg = 'hs.png'; break;
+				case 1: var padImg = 'hv.png'; break;
+			}
+			p.padM.style.backgroundImage = "url('"+jscolor.getDir()+"cross.gif')";
+			p.padM.style.backgroundRepeat = "no-repeat";
+			p.sldM.style.backgroundImage = "url('"+jscolor.getDir()+"arrow.gif')";
+			p.sldM.style.backgroundRepeat = "no-repeat";
+			p.pad.style.backgroundImage = "url('"+jscolor.getDir()+padImg+"')";
+			p.pad.style.backgroundRepeat = "no-repeat";
+			p.pad.style.backgroundPosition = "0 0";
+
+			// place pointers
+			redrawPad();
+			redrawSld();
+
+			jscolor.picker.owner = THIS;
+			document.getElementsByTagName('body')[0].appendChild(p.boxB);
+		}
+
+
+		function getPickerDims(o) {
+			var dims = [
+				2*o.pickerInset + 2*o.pickerFace + jscolor.images.pad[0] +
+					(o.slider ? 2*o.pickerInset + 2*jscolor.images.arrow[0] + jscolor.images.sld[0] : 0),
+				o.pickerClosable ?
+					4*o.pickerInset + 3*o.pickerFace + jscolor.images.pad[1] + o.pickerButtonHeight :
+					2*o.pickerInset + 2*o.pickerFace + jscolor.images.pad[1]
+			];
+			return dims;
+		}
+
+
+		function redrawPad() {
+			// redraw the pad pointer
+			switch(modeID) {
+				case 0: var yComponent = 1; break;
+				case 1: var yComponent = 2; break;
+			}
+			var x = Math.round((THIS.hsv[0]/6) * (jscolor.images.pad[0]-1));
+			var y = Math.round((1-THIS.hsv[yComponent]) * (jscolor.images.pad[1]-1));
+			jscolor.picker.padM.style.backgroundPosition =
+				(THIS.pickerFace+THIS.pickerInset+x - Math.floor(jscolor.images.cross[0]/2)) + 'px ' +
+				(THIS.pickerFace+THIS.pickerInset+y - Math.floor(jscolor.images.cross[1]/2)) + 'px';
+
+			// redraw the slider image
+			var seg = jscolor.picker.sld.childNodes;
+
+			switch(modeID) {
+				case 0:
+					var rgb = HSV_RGB(THIS.hsv[0], THIS.hsv[1], 1);
+					for(var i=0; i<seg.length; i+=1) {
+						seg[i].style.backgroundColor = 'rgb('+
+							(rgb[0]*(1-i/seg.length)*100)+'%,'+
+							(rgb[1]*(1-i/seg.length)*100)+'%,'+
+							(rgb[2]*(1-i/seg.length)*100)+'%)';
+					}
+					break;
+				case 1:
+					var rgb, s, c = [ THIS.hsv[2], 0, 0 ];
+					var i = Math.floor(THIS.hsv[0]);
+					var f = i%2 ? THIS.hsv[0]-i : 1-(THIS.hsv[0]-i);
+					switch(i) {
+						case 6:
+						case 0: rgb=[0,1,2]; break;
+						case 1: rgb=[1,0,2]; break;
+						case 2: rgb=[2,0,1]; break;
+						case 3: rgb=[2,1,0]; break;
+						case 4: rgb=[1,2,0]; break;
+						case 5: rgb=[0,2,1]; break;
+					}
+					for(var i=0; i<seg.length; i+=1) {
+						s = 1 - 1/(seg.length-1)*i;
+						c[1] = c[0] * (1 - s*f);
+						c[2] = c[0] * (1 - s);
+						seg[i].style.backgroundColor = 'rgb('+
+							(c[rgb[0]]*100)+'%,'+
+							(c[rgb[1]]*100)+'%,'+
+							(c[rgb[2]]*100)+'%)';
+					}
+					break;
+			}
+		}
+
+
+		function redrawSld() {
+			// redraw the slider pointer
+			switch(modeID) {
+				case 0: var yComponent = 2; break;
+				case 1: var yComponent = 1; break;
+			}
+			var y = Math.round((1-THIS.hsv[yComponent]) * (jscolor.images.sld[1]-1));
+			jscolor.picker.sldM.style.backgroundPosition =
+				'0 ' + (THIS.pickerFace+THIS.pickerInset+y - Math.floor(jscolor.images.arrow[1]/2)) + 'px';
+		}
+
+
+		function isPickerOwner() {
+			return jscolor.picker && jscolor.picker.owner === THIS;
+		}
+
+
+		function blurTarget() {
+			if(valueElement === target) {
+				THIS.importColor();
+			}
+			if(THIS.pickerOnfocus) {
+				THIS.hidePicker();
+			}
+		}
+
+
+		function blurValue() {
+			if(valueElement !== target) {
+				THIS.importColor();
+			}
+		}
+
+
+		function setPad(e) {
+			var mpos = jscolor.getRelMousePos(e);
+			var x = mpos.x - THIS.pickerFace - THIS.pickerInset;
+			var y = mpos.y - THIS.pickerFace - THIS.pickerInset;
+			switch(modeID) {
+				case 0: THIS.fromHSV(x*(6/(jscolor.images.pad[0]-1)), 1 - y/(jscolor.images.pad[1]-1), null, leaveSld); break;
+				case 1: THIS.fromHSV(x*(6/(jscolor.images.pad[0]-1)), null, 1 - y/(jscolor.images.pad[1]-1), leaveSld); break;
+			}
+		}
+
+
+		function setSld(e) {
+			var mpos = jscolor.getRelMousePos(e);
+			var y = mpos.y - THIS.pickerFace - THIS.pickerInset;
+			switch(modeID) {
+				case 0: THIS.fromHSV(null, null, 1 - y/(jscolor.images.sld[1]-1), leavePad); break;
+				case 1: THIS.fromHSV(null, 1 - y/(jscolor.images.sld[1]-1), null, leavePad); break;
+			}
+		}
+
+
+		function dispatchImmediateChange() {
+			if (THIS.onImmediateChange) {
+				var callback;
+				if (typeof THIS.onImmediateChange === 'string') {
+					callback = new Function (THIS.onImmediateChange);
+				} else {
+					callback = THIS.onImmediateChange;
+				}
+				callback.call(THIS);
+			}
+		}
+
+
+		var THIS = this;
+		var modeID = this.pickerMode.toLowerCase()==='hvs' ? 1 : 0;
+		var abortBlur = false;
+		var
+			valueElement = jscolor.fetchElement(this.valueElement),
+			styleElement = jscolor.fetchElement(this.styleElement);
+		var
+			holdPad = false,
+			holdSld = false,
+			touchOffset = {};
+		var
+			leaveValue = 1<<0,
+			leaveStyle = 1<<1,
+			leavePad = 1<<2,
+			leaveSld = 1<<3;
+
+		// target
+		jscolor.addEvent(target, 'focus', function() {
+			if(THIS.pickerOnfocus) { THIS.showPicker(); }
+		});
+		jscolor.addEvent(target, 'blur', function() {
+			if(!abortBlur) {
+				window.setTimeout(function(){ abortBlur || blurTarget(); abortBlur=false; }, 0);
+			} else {
+				abortBlur = false;
+			}
+		});
+
+		// valueElement
+		if(valueElement) {
+			var updateField = function() {
+				THIS.fromString(valueElement.value, leaveValue);
+				dispatchImmediateChange();
+			};
+			jscolor.addEvent(valueElement, 'keyup', updateField);
+			jscolor.addEvent(valueElement, 'input', updateField);
+			jscolor.addEvent(valueElement, 'blur', blurValue);
+			valueElement.setAttribute('autocomplete', 'off');
+		}
+
+		// styleElement
+		if(styleElement) {
+			styleElement.jscStyle = {
+				backgroundImage : styleElement.style.backgroundImage,
+				backgroundColor : styleElement.style.backgroundColor,
+				color : styleElement.style.color
+			};
+		}
+
+		// require images
+		switch(modeID) {
+			case 0: jscolor.requireImage('hs.png'); break;
+			case 1: jscolor.requireImage('hv.png'); break;
+		}
+		jscolor.requireImage('cross.gif');
+		jscolor.requireImage('arrow.gif');
+
+		this.importColor();
+	}
+
+};
+
+
+jscolor.install();
diff --git a/jsf-demo/sandbox/html5/matrix/src/main/webapp/resources/js/jsf-ws.js b/jsf-demo/sandbox/html5/matrix/src/main/webapp/resources/js/jsf-ws.js
new file mode 100644
index 0000000..0190d11
--- /dev/null
+++ b/jsf-demo/sandbox/html5/matrix/src/main/webapp/resources/js/jsf-ws.js
@@ -0,0 +1,106 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 2011-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+if (!JSF) {
+
+
+    /**
+     * The top level global namespace for JavaServer Faces Web Socket 
+     * functionality.
+     * @name JSF
+     * @namespace
+     */
+    var JSF = {};
+
+    /**
+     * The namespace for Web Socket functionality.
+     * @name JSF.ws
+     * @namespace
+     * @exec
+     */
+    JSF.ws = function() {   
+        
+        function onOpen(sockets, evt) {
+            for (var i = 0; i < sockets.length; i++) {
+                sockets[i].send("register");
+            }
+        }
+
+        function processMessage(callbacks, evt) {
+            if (callbacks instanceof Array) {
+                for (var i = 0; i < callbacks.length; i++) {
+                    callbacks[i].call(null, evt);
+                }
+            } else {
+                callbacks.call(null, evt);
+            }               
+        }
+        
+        var urlSockets = {};
+        
+        return {
+            
+            init: function init(hostname, port, channels) {
+                //  
+                var baseUrl = "ws://" + hostname + ":" + port;
+                JSF.hostname = hostname;
+                JSF.port = port;
+                
+                for (var i in channels) {
+                    var url = baseUrl + i; 
+                    var socket = new WebSocket(url);
+                    var callbacks = channels[i];
+                    socket.onopen = function(evt) {socket.send("register")};
+                    socket.onmessage = function(evt) {processMessage(callbacks, evt)};
+                    urlSockets[url] = socket;
+                }             
+
+            },
+                       
+            getSocket: function getSocket(path) {
+                var endpoint = "ws://" + JSF.hostname + ":" + JSF.port + path;
+                return urlSockets[endpoint];      
+            }
+        };
+    }();
+}
+        
+
+ 
+//            window.addEventListener("load", init, false);
diff --git a/jsf-demo/sandbox/html5/matrix/src/main/webapp/resources/js/modernizr.custom.70435.js b/jsf-demo/sandbox/html5/matrix/src/main/webapp/resources/js/modernizr.custom.70435.js
new file mode 100644
index 0000000..c41c11b
--- /dev/null
+++ b/jsf-demo/sandbox/html5/matrix/src/main/webapp/resources/js/modernizr.custom.70435.js
@@ -0,0 +1,815 @@
+/* Modernizr 2.6.2 (Custom Build) | MIT & BSD
+ * Build: http://modernizr.com/download/#-fontface-backgroundsize-borderimage-borderradius-boxshadow-flexbox-hsla-multiplebgs-opacity-rgba-textshadow-cssanimations-csscolumns-generatedcontent-cssgradients-cssreflections-csstransforms-csstransforms3d-csstransitions-applicationcache-canvas-canvastext-draganddrop-hashchange-history-audio-video-indexeddb-input-inputtypes-localstorage-postmessage-sessionstorage-websockets-websqldatabase-webworkers-geolocation-inlinesvg-smil-svg-svgclippaths-t [...]
+ */
+;
+
+
+
+window.Modernizr = (function( window, document, undefined ) {
+
+    var version = '2.6.2',
+
+    Modernizr = {},
+
+    enableClasses = true,
+
+    docElement = document.documentElement,
+
+    mod = 'modernizr',
+    modElem = document.createElement(mod),
+    mStyle = modElem.style,
+
+    inputElem  = document.createElement('input')  ,
+
+    smile = ':)',
+
+    toString = {}.toString,
+
+    prefixes = ' -webkit- -moz- -o- -ms- '.split(' '),
+
+
+
+    omPrefixes = 'Webkit Moz O ms',
+
+    cssomPrefixes = omPrefixes.split(' '),
+
+    domPrefixes = omPrefixes.toLowerCase().split(' '),
+
+    ns = {'svg': 'http://www.w3.org/2000/svg'},
+
+    tests = {},
+    inputs = {},
+    attrs = {},
+
+    classes = [],
+
+    slice = classes.slice,
+
+    featureName, 
+
+
+    injectElementWithStyles = function( rule, callback, nodes, testnames ) {
+
+      var style, ret, node, docOverflow,
+          div = document.createElement('div'),
+                body = document.body,
+                fakeBody = body || document.createElement('body');
+
+      if ( parseInt(nodes, 10) ) {
+                      while ( nodes-- ) {
+              node = document.createElement('div');
+              node.id = testnames ? testnames[nodes] : mod + (nodes + 1);
+              div.appendChild(node);
+          }
+      }
+
+                style = ['­','<style id="s', mod, '">', rule, '</style>'].join('');
+      div.id = mod;
+          (body ? div : fakeBody).innerHTML += style;
+      fakeBody.appendChild(div);
+      if ( !body ) {
+                fakeBody.style.background = '';
+                fakeBody.style.overflow = 'hidden';
+          docOverflow = docElement.style.overflow;
+          docElement.style.overflow = 'hidden';
+          docElement.appendChild(fakeBody);
+      }
+
+      ret = callback(div, rule);
+        if ( !body ) {
+          fakeBody.parentNode.removeChild(fakeBody);
+          docElement.style.overflow = docOverflow;
+      } else {
+          div.parentNode.removeChild(div);
+      }
+
+      return !!ret;
+
+    },
+
+
+
+    isEventSupported = (function() {
+
+      var TAGNAMES = {
+        'select': 'input', 'change': 'input',
+        'submit': 'form', 'reset': 'form',
+        'error': 'img', 'load': 'img', 'abort': 'img'
+      };
+
+      function isEventSupported( eventName, element ) {
+
+        element = element || document.createElement(TAGNAMES[eventName] || 'div');
+        eventName = 'on' + eventName;
+
+            var isSupported = eventName in element;
+
+        if ( !isSupported ) {
+                if ( !element.setAttribute ) {
+            element = document.createElement('div');
+          }
+          if ( element.setAttribute && element.removeAttribute ) {
+            element.setAttribute(eventName, '');
+            isSupported = is(element[eventName], 'function');
+
+                    if ( !is(element[eventName], 'undefined') ) {
+              element[eventName] = undefined;
+            }
+            element.removeAttribute(eventName);
+          }
+        }
+
+        element = null;
+        return isSupported;
+      }
+      return isEventSupported;
+    })(),
+
+
+    _hasOwnProperty = ({}).hasOwnProperty, hasOwnProp;
+
+    if ( !is(_hasOwnProperty, 'undefined') && !is(_hasOwnProperty.call, 'undefined') ) {
+      hasOwnProp = function (object, property) {
+        return _hasOwnProperty.call(object, property);
+      };
+    }
+    else {
+      hasOwnProp = function (object, property) { 
+        return ((property in object) && is(object.constructor.prototype[property], 'undefined'));
+      };
+    }
+
+
+    if (!Function.prototype.bind) {
+      Function.prototype.bind = function bind(that) {
+
+        var target = this;
+
+        if (typeof target != "function") {
+            throw new TypeError();
+        }
+
+        var args = slice.call(arguments, 1),
+            bound = function () {
+
+            if (this instanceof bound) {
+
+              var F = function(){};
+              F.prototype = target.prototype;
+              var self = new F();
+
+              var result = target.apply(
+                  self,
+                  args.concat(slice.call(arguments))
+              );
+              if (Object(result) === result) {
+                  return result;
+              }
+              return self;
+
+            } else {
+
+              return target.apply(
+                  that,
+                  args.concat(slice.call(arguments))
+              );
+
+            }
+
+        };
+
+        return bound;
+      };
+    }
+
+    function setCss( str ) {
+        mStyle.cssText = str;
+    }
+
+    function setCssAll( str1, str2 ) {
+        return setCss(prefixes.join(str1 + ';') + ( str2 || '' ));
+    }
+
+    function is( obj, type ) {
+        return typeof obj === type;
+    }
+
+    function contains( str, substr ) {
+        return !!~('' + str).indexOf(substr);
+    }
+
+    function testProps( props, prefixed ) {
+        for ( var i in props ) {
+            var prop = props[i];
+            if ( !contains(prop, "-") && mStyle[prop] !== undefined ) {
+                return prefixed == 'pfx' ? prop : true;
+            }
+        }
+        return false;
+    }
+
+    function testDOMProps( props, obj, elem ) {
+        for ( var i in props ) {
+            var item = obj[props[i]];
+            if ( item !== undefined) {
+
+                            if (elem === false) return props[i];
+
+                            if (is(item, 'function')){
+                                return item.bind(elem || obj);
+                }
+
+                            return item;
+            }
+        }
+        return false;
+    }
+
+    function testPropsAll( prop, prefixed, elem ) {
+
+        var ucProp  = prop.charAt(0).toUpperCase() + prop.slice(1),
+            props   = (prop + ' ' + cssomPrefixes.join(ucProp + ' ') + ucProp).split(' ');
+
+            if(is(prefixed, "string") || is(prefixed, "undefined")) {
+          return testProps(props, prefixed);
+
+            } else {
+          props = (prop + ' ' + (domPrefixes).join(ucProp + ' ') + ucProp).split(' ');
+          return testDOMProps(props, prefixed, elem);
+        }
+    }    tests['flexbox'] = function() {
+      return testPropsAll('flexWrap');
+    };    tests['canvas'] = function() {
+        var elem = document.createElement('canvas');
+        return !!(elem.getContext && elem.getContext('2d'));
+    };
+
+    tests['canvastext'] = function() {
+        return !!(Modernizr['canvas'] && is(document.createElement('canvas').getContext('2d').fillText, 'function'));
+    };
+
+
+
+    tests['webgl'] = function() {
+        return !!window.WebGLRenderingContext;
+    };
+
+
+    tests['touch'] = function() {
+        var bool;
+
+        if(('ontouchstart' in window) || window.DocumentTouch && document instanceof DocumentTouch) {
+          bool = true;
+        } else {
+          injectElementWithStyles(['@media (',prefixes.join('touch-enabled),('),mod,')','{#modernizr{top:9px;position:absolute}}'].join(''), function( node ) {
+            bool = node.offsetTop === 9;
+          });
+        }
+
+        return bool;
+    };
+
+
+
+    tests['geolocation'] = function() {
+        return 'geolocation' in navigator;
+    };
+
+
+    tests['postmessage'] = function() {
+      return !!window.postMessage;
+    };
+
+
+    tests['websqldatabase'] = function() {
+      return !!window.openDatabase;
+    };
+
+    tests['indexedDB'] = function() {
+      return !!testPropsAll("indexedDB", window);
+    };
+
+    tests['hashchange'] = function() {
+      return isEventSupported('hashchange', window) && (document.documentMode === undefined || document.documentMode > 7);
+    };
+
+    tests['history'] = function() {
+      return !!(window.history && history.pushState);
+    };
+
+    tests['draganddrop'] = function() {
+        var div = document.createElement('div');
+        return ('draggable' in div) || ('ondragstart' in div && 'ondrop' in div);
+    };
+
+    tests['websockets'] = function() {
+        return 'WebSocket' in window || 'MozWebSocket' in window;
+    };
+
+
+    tests['rgba'] = function() {
+        setCss('background-color:rgba(150,255,150,.5)');
+
+        return contains(mStyle.backgroundColor, 'rgba');
+    };
+
+    tests['hsla'] = function() {
+            setCss('background-color:hsla(120,40%,100%,.5)');
+
+        return contains(mStyle.backgroundColor, 'rgba') || contains(mStyle.backgroundColor, 'hsla');
+    };
+
+    tests['multiplebgs'] = function() {
+                setCss('background:url(https://),url(https://),red url(https://)');
+
+            return (/(url\s*\(.*?){3}/).test(mStyle.background);
+    };    tests['backgroundsize'] = function() {
+        return testPropsAll('backgroundSize');
+    };
+
+    tests['borderimage'] = function() {
+        return testPropsAll('borderImage');
+    };
+
+
+
+    tests['borderradius'] = function() {
+        return testPropsAll('borderRadius');
+    };
+
+    tests['boxshadow'] = function() {
+        return testPropsAll('boxShadow');
+    };
+
+    tests['textshadow'] = function() {
+        return document.createElement('div').style.textShadow === '';
+    };
+
+
+    tests['opacity'] = function() {
+                setCssAll('opacity:.55');
+
+                    return (/^0.55$/).test(mStyle.opacity);
+    };
+
+
+    tests['cssanimations'] = function() {
+        return testPropsAll('animationName');
+    };
+
+
+    tests['csscolumns'] = function() {
+        return testPropsAll('columnCount');
+    };
+
+
+    tests['cssgradients'] = function() {
+        var str1 = 'background-image:',
+            str2 = 'gradient(linear,left top,right bottom,from(#9f9),to(white));',
+            str3 = 'linear-gradient(left top,#9f9, white);';
+
+        setCss(
+                       (str1 + '-webkit- '.split(' ').join(str2 + str1) +
+                       prefixes.join(str3 + str1)).slice(0, -str1.length)
+        );
+
+        return contains(mStyle.backgroundImage, 'gradient');
+    };
+
+
+    tests['cssreflections'] = function() {
+        return testPropsAll('boxReflect');
+    };
+
+
+    tests['csstransforms'] = function() {
+        return !!testPropsAll('transform');
+    };
+
+
+    tests['csstransforms3d'] = function() {
+
+        var ret = !!testPropsAll('perspective');
+
+                        if ( ret && 'webkitPerspective' in docElement.style ) {
+
+                      injectElementWithStyles('@media (transform-3d),(-webkit-transform-3d){#modernizr{left:9px;position:absolute;height:3px;}}', function( node, rule ) {
+            ret = node.offsetLeft === 9 && node.offsetHeight === 3;
+          });
+        }
+        return ret;
+    };
+
+
+    tests['csstransitions'] = function() {
+        return testPropsAll('transition');
+    };
+
+
+
+    tests['fontface'] = function() {
+        var bool;
+
+        injectElementWithStyles('@font-face {font-family:"font";src:url("https://")}', function( node, rule ) {
+          var style = document.getElementById('smodernizr'),
+              sheet = style.sheet || style.styleSheet,
+              cssText = sheet ? (sheet.cssRules && sheet.cssRules[0] ? sheet.cssRules[0].cssText : sheet.cssText || '') : '';
+
+          bool = /src/i.test(cssText) && cssText.indexOf(rule.split(' ')[0]) === 0;
+        });
+
+        return bool;
+    };
+
+    tests['generatedcontent'] = function() {
+        var bool;
+
+        injectElementWithStyles(['#',mod,'{font:0/0 a}#',mod,':after{content:"',smile,'";visibility:hidden;font:3px/1 a}'].join(''), function( node ) {
+          bool = node.offsetHeight >= 3;
+        });
+
+        return bool;
+    };
+    tests['video'] = function() {
+        var elem = document.createElement('video'),
+            bool = false;
+
+            try {
+            if ( bool = !!elem.canPlayType ) {
+                bool      = new Boolean(bool);
+                bool.ogg  = elem.canPlayType('video/ogg; codecs="theora"')      .replace(/^no$/,'');
+
+                            bool.h264 = elem.canPlayType('video/mp4; codecs="avc1.42E01E"') .replace(/^no$/,'');
+
+                bool.webm = elem.canPlayType('video/webm; codecs="vp8, vorbis"').replace(/^no$/,'');
+            }
+
+        } catch(e) { }
+
+        return bool;
+    };
+
+    tests['audio'] = function() {
+        var elem = document.createElement('audio'),
+            bool = false;
+
+        try {
+            if ( bool = !!elem.canPlayType ) {
+                bool      = new Boolean(bool);
+                bool.ogg  = elem.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,'');
+                bool.mp3  = elem.canPlayType('audio/mpeg;')               .replace(/^no$/,'');
+
+                                                    bool.wav  = elem.canPlayType('audio/wav; codecs="1"')     .replace(/^no$/,'');
+                bool.m4a  = ( elem.canPlayType('audio/x-m4a;')            ||
+                              elem.canPlayType('audio/aac;'))             .replace(/^no$/,'');
+            }
+        } catch(e) { }
+
+        return bool;
+    };
+
+
+    tests['localstorage'] = function() {
+        try {
+            localStorage.setItem(mod, mod);
+            localStorage.removeItem(mod);
+            return true;
+        } catch(e) {
+            return false;
+        }
+    };
+
+    tests['sessionstorage'] = function() {
+        try {
+            sessionStorage.setItem(mod, mod);
+            sessionStorage.removeItem(mod);
+            return true;
+        } catch(e) {
+            return false;
+        }
+    };
+
+
+    tests['webworkers'] = function() {
+        return !!window.Worker;
+    };
+
+
+    tests['applicationcache'] = function() {
+        return !!window.applicationCache;
+    };
+
+
+    tests['svg'] = function() {
+        return !!document.createElementNS && !!document.createElementNS(ns.svg, 'svg').createSVGRect;
+    };
+
+    tests['inlinesvg'] = function() {
+      var div = document.createElement('div');
+      div.innerHTML = '<svg/>';
+      return (div.firstChild && div.firstChild.namespaceURI) == ns.svg;
+    };
+
+    tests['smil'] = function() {
+        return !!document.createElementNS && /SVGAnimate/.test(toString.call(document.createElementNS(ns.svg, 'animate')));
+    };
+
+
+    tests['svgclippaths'] = function() {
+        return !!document.createElementNS && /SVGClipPath/.test(toString.call(document.createElementNS(ns.svg, 'clipPath')));
+    };
+
+    function webforms() {
+                                            Modernizr['input'] = (function( props ) {
+            for ( var i = 0, len = props.length; i < len; i++ ) {
+                attrs[ props[i] ] = !!(props[i] in inputElem);
+            }
+            if (attrs.list){
+                                  attrs.list = !!(document.createElement('datalist') && window.HTMLDataListElement);
+            }
+            return attrs;
+        })('autocomplete autofocus list placeholder max min multiple pattern required step'.split(' '));
+                            Modernizr['inputtypes'] = (function(props) {
+
+            for ( var i = 0, bool, inputElemType, defaultView, len = props.length; i < len; i++ ) {
+
+                inputElem.setAttribute('type', inputElemType = props[i]);
+                bool = inputElem.type !== 'text';
+
+                                                    if ( bool ) {
+
+                    inputElem.value         = smile;
+                    inputElem.style.cssText = 'position:absolute;visibility:hidden;';
+
+                    if ( /^range$/.test(inputElemType) && inputElem.style.WebkitAppearance !== undefined ) {
+
+                      docElement.appendChild(inputElem);
+                      defaultView = document.defaultView;
+
+                                        bool =  defaultView.getComputedStyle &&
+                              defaultView.getComputedStyle(inputElem, null).WebkitAppearance !== 'textfield' &&
+                                                                                  (inputElem.offsetHeight !== 0);
+
+                      docElement.removeChild(inputElem);
+
+                    } else if ( /^(search|tel)$/.test(inputElemType) ){
+                                                                                    } else if ( /^(url|email)$/.test(inputElemType) ) {
+                                        bool = inputElem.checkValidity && inputElem.checkValidity() === false;
+
+                    } else {
+                                        bool = inputElem.value != smile;
+                    }
+                }
+
+                inputs[ props[i] ] = !!bool;
+            }
+            return inputs;
+        })('search tel url email datetime date month week time datetime-local number range color'.split(' '));
+        }
+    for ( var feature in tests ) {
+        if ( hasOwnProp(tests, feature) ) {
+                                    featureName  = feature.toLowerCase();
+            Modernizr[featureName] = tests[feature]();
+
+            classes.push((Modernizr[featureName] ? '' : 'no-') + featureName);
+        }
+    }
+
+    Modernizr.input || webforms();
+
+
+     Modernizr.addTest = function ( feature, test ) {
+       if ( typeof feature == 'object' ) {
+         for ( var key in feature ) {
+           if ( hasOwnProp( feature, key ) ) {
+             Modernizr.addTest( key, feature[ key ] );
+           }
+         }
+       } else {
+
+         feature = feature.toLowerCase();
+
+         if ( Modernizr[feature] !== undefined ) {
+                                              return Modernizr;
+         }
+
+         test = typeof test == 'function' ? test() : test;
+
+         if (typeof enableClasses !== "undefined" && enableClasses) {
+           docElement.className += ' ' + (test ? '' : 'no-') + feature;
+         }
+         Modernizr[feature] = test;
+
+       }
+
+       return Modernizr; 
+     };
+
+
+    setCss('');
+    modElem = inputElem = null;
+
+    ;(function(window, document) {
+        var options = window.html5 || {};
+
+        var reSkip = /^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i;
+
+        var saveClones = /^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i;
+
+        var supportsHtml5Styles;
+
+        var expando = '_html5shiv';
+
+        var expanID = 0;
+
+        var expandoData = {};
+
+        var supportsUnknownElements;
+
+      (function() {
+        try {
+            var a = document.createElement('a');
+            a.innerHTML = '<xyz></xyz>';
+                    supportsHtml5Styles = ('hidden' in a);
+
+            supportsUnknownElements = a.childNodes.length == 1 || (function() {
+                        (document.createElement)('a');
+              var frag = document.createDocumentFragment();
+              return (
+                typeof frag.cloneNode == 'undefined' ||
+                typeof frag.createDocumentFragment == 'undefined' ||
+                typeof frag.createElement == 'undefined'
+              );
+            }());
+        } catch(e) {
+          supportsHtml5Styles = true;
+          supportsUnknownElements = true;
+        }
+
+      }());        function addStyleSheet(ownerDocument, cssText) {
+        var p = ownerDocument.createElement('p'),
+            parent = ownerDocument.getElementsByTagName('head')[0] || ownerDocument.documentElement;
+
+        p.innerHTML = 'x<style>' + cssText + '</style>';
+        return parent.insertBefore(p.lastChild, parent.firstChild);
+      }
+
+        function getElements() {
+        var elements = html5.elements;
+        return typeof elements == 'string' ? elements.split(' ') : elements;
+      }
+
+          function getExpandoData(ownerDocument) {
+        var data = expandoData[ownerDocument[expando]];
+        if (!data) {
+            data = {};
+            expanID++;
+            ownerDocument[expando] = expanID;
+            expandoData[expanID] = data;
+        }
+        return data;
+      }
+
+        function createElement(nodeName, ownerDocument, data){
+        if (!ownerDocument) {
+            ownerDocument = document;
+        }
+        if(supportsUnknownElements){
+            return ownerDocument.createElement(nodeName);
+        }
+        if (!data) {
+            data = getExpandoData(ownerDocument);
+        }
+        var node;
+
+        if (data.cache[nodeName]) {
+            node = data.cache[nodeName].cloneNode();
+        } else if (saveClones.test(nodeName)) {
+            node = (data.cache[nodeName] = data.createElem(nodeName)).cloneNode();
+        } else {
+            node = data.createElem(nodeName);
+        }
+
+                                    return node.canHaveChildren && !reSkip.test(nodeName) ? data.frag.appendChild(node) : node;
+      }
+
+        function createDocumentFragment(ownerDocument, data){
+        if (!ownerDocument) {
+            ownerDocument = document;
+        }
+        if(supportsUnknownElements){
+            return ownerDocument.createDocumentFragment();
+        }
+        data = data || getExpandoData(ownerDocument);
+        var clone = data.frag.cloneNode(),
+            i = 0,
+            elems = getElements(),
+            l = elems.length;
+        for(;i<l;i++){
+            clone.createElement(elems[i]);
+        }
+        return clone;
+      }
+
+        function shivMethods(ownerDocument, data) {
+        if (!data.cache) {
+            data.cache = {};
+            data.createElem = ownerDocument.createElement;
+            data.createFrag = ownerDocument.createDocumentFragment;
+            data.frag = data.createFrag();
+        }
+
+
+        ownerDocument.createElement = function(nodeName) {
+                if (!html5.shivMethods) {
+              return data.createElem(nodeName);
+          }
+          return createElement(nodeName, ownerDocument, data);
+        };
+
+        ownerDocument.createDocumentFragment = Function('h,f', 'return function(){' +
+          'var n=f.cloneNode(),c=n.createElement;' +
+          'h.shivMethods&&(' +
+                    getElements().join().replace(/\w+/g, function(nodeName) {
+              data.createElem(nodeName);
+              data.frag.createElement(nodeName);
+              return 'c("' + nodeName + '")';
+            }) +
+          ');return n}'
+        )(html5, data.frag);
+      }        function shivDocument(ownerDocument) {
+        if (!ownerDocument) {
+            ownerDocument = document;
+        }
+        var data = getExpandoData(ownerDocument);
+
+        if (html5.shivCSS && !supportsHtml5Styles && !data.hasCSS) {
+          data.hasCSS = !!addStyleSheet(ownerDocument,
+                    'article,aside,figcaption,figure,footer,header,hgroup,nav,section{display:block}' +
+                    'mark{background:#FF0;color:#000}'
+          );
+        }
+        if (!supportsUnknownElements) {
+          shivMethods(ownerDocument, data);
+        }
+        return ownerDocument;
+      }        var html5 = {
+
+            'elements': options.elements || 'abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup mark meter nav output progress section summary time video',
+
+            'shivCSS': (options.shivCSS !== false),
+
+            'supportsUnknownElements': supportsUnknownElements,
+
+            'shivMethods': (options.shivMethods !== false),
+
+            'type': 'default',
+
+            'shivDocument': shivDocument,
+
+            createElement: createElement,
+
+            createDocumentFragment: createDocumentFragment
+      };        window.html5 = html5;
+
+        shivDocument(document);
+
+    }(this, document));
+
+    Modernizr._version      = version;
+
+    Modernizr._prefixes     = prefixes;
+    Modernizr._domPrefixes  = domPrefixes;
+    Modernizr._cssomPrefixes  = cssomPrefixes;
+
+
+    Modernizr.hasEvent      = isEventSupported;
+
+    Modernizr.testProp      = function(prop){
+        return testProps([prop]);
+    };
+
+    Modernizr.testAllProps  = testPropsAll;
+
+
+    Modernizr.testStyles    = injectElementWithStyles;
+    Modernizr.prefixed      = function(prop, obj, elem){
+      if(!obj) {
+        return testPropsAll(prop, 'pfx');
+      } else {
+            return testPropsAll(prop, obj, elem);
+      }
+    };
+
+
+    docElement.className = docElement.className.replace(/(^|\s)no-js(\s|$)/, '$1$2') +
+
+                                                    (enableClasses ? ' js ' + classes.join(' ') : '');
+
+    return Modernizr;
+
+})(this, this.document);
+/*yepnope1.5.4|WTFPL*/
+(function(a,b,c){function d(a){return"[object Function]"==o.call(a)}function e(a){return"string"==typeof a}function f(){}function g(a){return!a||"loaded"==a||"complete"==a||"uninitialized"==a}function h(){var a=p.shift();q=1,a?a.t?m(function(){("c"==a.t?B.injectCss:B.injectJs)(a.s,0,a.a,a.x,a.e,1)},0):(a(),h()):q=0}function i(a,c,d,e,f,i,j){function k(b){if(!o&&g(l.readyState)&&(u.r=o=1,!q&&h(),l.onload=l.onreadystatechange=null,b)){"img"!=a&&m(function(){t.removeChild(l)},50);for(var d  [...]
+Modernizr.load=function(){yepnope.apply(window,[].slice.call(arguments,0));};
+;
\ No newline at end of file
diff --git a/jsf-demo/sandbox/jsf-forum/build.xml b/jsf-demo/sandbox/jsf-forum/build.xml
new file mode 100644
index 0000000..621402f
--- /dev/null
+++ b/jsf-demo/sandbox/jsf-forum/build.xml
@@ -0,0 +1,113 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!-- You may freely edit this file. See commented blocks below for -->
+<!-- some examples of how to customize the build. -->
+<!-- (If you delete it and reopen the project it will be recreated.) -->
+<!-- By default, only the Clean and Build commands use this build script. -->
+<!-- Commands such as Run, Debug, and Test only use this build script if -->
+<!-- the Compile on Save feature is turned off for the project. -->
+<!-- You can turn off the Compile on Save (or Deploy on Save) setting -->
+<!-- in the project's Project Properties dialog box.-->
+<project name="jsf-forum" default="default" basedir=".">
+    <description>Builds, tests, and runs the project jsf-forum.</description>
+    <import file="nbproject/build-impl.xml"/>
+    <!--
+
+    There exist several targets which are by default empty and which can be 
+    used for execution of your tasks. These targets are usually executed 
+    before and after some main targets. They are: 
+
+      -pre-init:                 called before initialization of project properties 
+      -post-init:                called after initialization of project properties 
+      -pre-compile:              called before javac compilation 
+      -post-compile:             called after javac compilation 
+      -pre-compile-single:       called before javac compilation of single file
+      -post-compile-single:      called after javac compilation of single file
+      -pre-compile-test:         called before javac compilation of JUnit tests
+      -post-compile-test:        called after javac compilation of JUnit tests
+      -pre-compile-test-single:  called before javac compilation of single JUnit test
+      -post-compile-test-single: called after javac compilation of single JUunit test
+      -pre-dist:                 called before archive building 
+      -post-dist:                called after archive building 
+      -post-clean:               called after cleaning build products 
+      -pre-run-deploy:           called before deploying
+      -post-run-deploy:          called after deploying
+
+    Example of pluging an obfuscator after the compilation could look like 
+
+        <target name="-post-compile">
+            <obfuscate>
+                <fileset dir="${build.classes.dir}"/>
+            </obfuscate>
+        </target>
+
+    For list of available properties check the imported 
+    nbproject/build-impl.xml file. 
+
+
+    Other way how to customize the build is by overriding existing main targets.
+    The target of interest are: 
+
+      init-macrodef-javac:    defines macro for javac compilation
+      init-macrodef-junit:   defines macro for junit execution
+      init-macrodef-debug:    defines macro for class debugging
+      do-dist:                archive building
+      run:                    execution of project 
+      javadoc-build:          javadoc generation 
+
+    Example of overriding the target for project execution could look like 
+
+        <target name="run" depends="<PROJNAME>-impl.jar">
+            <exec dir="bin" executable="launcher.exe">
+                <arg file="${dist.jar}"/>
+            </exec>
+        </target>
+
+    Notice that overridden target depends on jar target and not only on 
+    compile target as regular run target does. Again, for list of available 
+    properties which you can use check the target you are overriding in 
+    nbproject/build-impl.xml file. 
+
+    -->
+</project>
diff --git a/jsf-demo/sandbox/jsf-forum/nbproject/ant-deploy.xml b/jsf-demo/sandbox/jsf-forum/nbproject/ant-deploy.xml
new file mode 100644
index 0000000..f31f908
--- /dev/null
+++ b/jsf-demo/sandbox/jsf-forum/nbproject/ant-deploy.xml
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project default="-deploy-ant" basedir=".">
+    <target name="-init-cl-deployment-env" if="deploy.ant.enabled">
+        <property file="${deploy.ant.properties.file}" />
+        <available file="${deploy.ant.docbase.dir}/WEB-INF/sun-web.xml" property="sun.web.present"/>
+        <available file="${deploy.ant.resource.dir}" property="has.setup"/>
+        <tempfile prefix="gfv3" property="gfv3.password.file" destdir="${java.io.tmpdir}"/>  <!-- do not forget to delete this! -->
+        <echo message="AS_ADMIN_PASSWORD=${gfv3.password}" file="${gfv3.password.file}"/>
+    </target>
+    
+    <target name="-parse-sun-web" depends="-init-cl-deployment-env" if="sun.web.present">
+        <tempfile prefix="gfv3" property="temp.sun.web" destdir="${java.io.tmpdir}"/>
+        <copy file="${deploy.ant.docbase.dir}/WEB-INF/sun-web.xml" tofile="${temp.sun.web}"/>
+        <!-- The doctype triggers resolution which can fail -->
+        <replace file="${temp.sun.web}">
+            <replacetoken><![CDATA[<!DOCTYPE]]></replacetoken>
+            <replacevalue><![CDATA[<!-- <!DOCTYPE]]></replacevalue>
+        </replace>
+        <replace file="${temp.sun.web}">
+            <replacetoken><![CDATA[<sun-web-app]]></replacetoken>
+            <replacevalue><![CDATA[--> <sun-web-app]]></replacevalue>
+        </replace>
+        <xmlproperty file="${temp.sun.web}" validate="false">
+        </xmlproperty>    
+        <delete file="${temp.sun.web}"/>
+        <property name="deploy.ant.client.url" value="${gfv3.url}${sun-web-app.context-root}"/>
+        <property name="deploy.context.root.argument" value="?contextroot=${sun-web-app.context-root}"/>
+    </target>
+    <target name="-no-parse-sun-web" depends="-init-cl-deployment-env" unless="sun.web.present">
+        <property name="deploy.context.root.argument" value=""/>
+    </target>
+    <target name="-add-resources" depends="-init-cl-deployment-env" if="has.setup">
+        <tempfile prefix="gfv3" property="gfv3.resources.dir" destdir="${java.io.tmpdir}"/>
+        <mkdir dir="${gfv3.resources.dir}"/>
+        <mkdir dir="${gfv3.resources.dir}/META-INF"/>
+        <property name="gfv3.resources.file" value="${gfv3.resources.dir}/META-INF/sun-resources.xml"/>
+        <copy todir="${gfv3.resources.dir}/META-INF">
+            <fileset dir="${deploy.ant.resource.dir}"/>
+        </copy>
+        <jar destfile="${deploy.ant.archive}" update="true">
+            <fileset dir="${gfv3.resources.dir}"/>
+        </jar>
+        <delete dir="${gfv3.resources.dir}"/>
+    </target>
+    <target name="-deploy-ant" depends="-parse-sun-web,-no-parse-sun-web,-add-resources" if="deploy.ant.enabled">
+        <echo message="Deploying ${deploy.ant.archive}"/>
+        <tempfile prefix="gfv3" property="gfv3.results.file" destdir="${java.io.tmpdir}"/>  <!-- do not forget to delete this! -->
+        <property name="full.deploy.ant.archive" location="${deploy.ant.archive}"/>
+        <get src="${gfv3.url}/__asadmin/deploy?path=${full.deploy.ant.archive}${deploy.context.root.argument}?force=true?name=${ant.project.name}"
+            dest="${gfv3.results.file}"/>
+        <delete file="${gfv3.results.file}"/>    
+    </target>
+    <target name="-undeploy-ant" depends="-init-cl-deployment-env" if="deploy.ant.enabled">
+        <echo message="Undeploying ${deploy.ant.archive}"/>
+        <tempfile prefix="gfv3" property="gfv3.results.file" destdir="${java.io.tmpdir}"/>  <!-- do not forget to delete this! -->
+        <get src="${gfv3.url}/__asadmin/undeploy?name=${ant.project.name}"
+            dest="${gfv3.results.file}"/>
+        <delete file="${gfv3.results.file}"/>    
+    </target>
+</project>
diff --git a/jsf-demo/sandbox/jsf-forum/nbproject/build-impl.xml b/jsf-demo/sandbox/jsf-forum/nbproject/build-impl.xml
new file mode 100644
index 0000000..8039e17
--- /dev/null
+++ b/jsf-demo/sandbox/jsf-forum/nbproject/build-impl.xml
@@ -0,0 +1,844 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+        *** GENERATED FROM project.xml - DO NOT EDIT  ***
+        ***         EDIT ../build.xml INSTEAD         ***
+
+        For the purpose of easier reading the script
+        is divided into following sections:
+        - initialization
+        - compilation
+        - dist
+        - execution
+        - debugging
+        - javadoc
+        - junit compilation
+        - junit execution
+        - junit debugging
+        - cleanup
+
+        -->
+<project xmlns:webproject1="http://www.netbeans.org/ns/web-project/1" xmlns:webproject2="http://www.netbeans.org/ns/web-project/2" xmlns:webproject3="http://www.netbeans.org/ns/web-project/3" basedir=".." default="default" name="jsf-forum-impl">
+    <import file="ant-deploy.xml"/>
+    <fail message="Please build using Ant 1.7.1 or higher.">
+        <condition>
+            <not>
+                <antversion atleast="1.7.1"/>
+            </not>
+        </condition>
+    </fail>
+    <target depends="dist,javadoc" description="Build whole project." name="default"/>
+    <!--
+                INITIALIZATION SECTION
+            -->
+    <target name="-pre-init">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target depends="-pre-init" name="-init-private">
+        <property file="nbproject/private/private.properties"/>
+    </target>
+    <target depends="-pre-init,-init-private" name="-init-user">
+        <property file="${user.properties.file}"/>
+        <!-- The two properties below are usually overridden -->
+        <!-- by the active platform. Just a fallback. -->
+        <property name="default.javac.source" value="1.4"/>
+        <property name="default.javac.target" value="1.4"/>
+    </target>
+    <target depends="-pre-init,-init-private,-init-user" name="-init-project">
+        <property file="nbproject/project.properties"/>
+    </target>
+    <target depends="-pre-init,-init-private,-init-user,-init-project,-init-macrodef-property" if="dist.ear.dir" name="-do-ear-init"/>
+    <target depends="-pre-init,-init-private,-init-user,-init-project,-init-macrodef-property" name="-do-init">
+        <condition property="have.tests">
+            <or>
+                <available file="${test.src.dir}"/>
+            </or>
+        </condition>
+        <condition property="have.sources">
+            <or>
+                <available file="${src.dir}"/>
+            </or>
+        </condition>
+        <condition property="netbeans.home+have.tests">
+            <and>
+                <isset property="netbeans.home"/>
+                <isset property="have.tests"/>
+            </and>
+        </condition>
+        <condition property="no.javadoc.preview">
+            <isfalse value="${javadoc.preview}"/>
+        </condition>
+        <property name="javac.compilerargs" value=""/>
+        <condition property="no.deps">
+            <and>
+                <istrue value="${no.dependencies}"/>
+            </and>
+        </condition>
+        <condition property="no.dist.ear.dir">
+            <not>
+                <isset property="dist.ear.dir"/>
+            </not>
+        </condition>
+        <property name="build.web.excludes" value="${build.classes.excludes}"/>
+        <condition property="do.compile.jsps">
+            <istrue value="${compile.jsps}"/>
+        </condition>
+        <condition property="do.debug.server">
+            <or>
+                <not>
+                    <isset property="debug.server"/>
+                </not>
+                <istrue value="${debug.server}"/>
+                <and>
+                    <not>
+                        <istrue value="${debug.server}"/>
+                    </not>
+                    <not>
+                        <istrue value="${debug.client}"/>
+                    </not>
+                </and>
+            </or>
+        </condition>
+        <condition property="do.debug.client">
+            <istrue value="${debug.client}"/>
+        </condition>
+        <condition property="do.display.browser">
+            <istrue value="${display.browser}"/>
+        </condition>
+        <condition property="do.display.browser.debug">
+            <and>
+                <isset property="do.display.browser"/>
+                <not>
+                    <isset property="do.debug.client"/>
+                </not>
+            </and>
+        </condition>
+        <available file="${conf.dir}/MANIFEST.MF" property="has.custom.manifest"/>
+        <available file="${persistence.xml.dir}/persistence.xml" property="has.persistence.xml"/>
+        <condition property="do.war.package.with.custom.manifest">
+            <isset property="has.custom.manifest"/>
+        </condition>
+        <condition property="do.war.package.without.custom.manifest">
+            <not>
+                <isset property="has.custom.manifest"/>
+            </not>
+        </condition>
+        <condition property="do.tmp.war.package.with.custom.manifest">
+            <and>
+                <isset property="has.custom.manifest"/>
+                <isfalse value="${directory.deployment.supported}"/>
+            </and>
+        </condition>
+        <condition property="do.tmp.war.package.without.custom.manifest">
+            <and>
+                <not>
+                    <isset property="has.custom.manifest"/>
+                </not>
+                <isfalse value="${directory.deployment.supported}"/>
+            </and>
+        </condition>
+        <condition property="do.tmp.war.package">
+            <isfalse value="${directory.deployment.supported}"/>
+        </condition>
+        <property name="build.meta.inf.dir" value="${build.web.dir}/META-INF"/>
+        <condition else="" property="application.args.param" value="${application.args}">
+            <and>
+                <isset property="application.args"/>
+                <not>
+                    <equals arg1="${application.args}" arg2="" trim="true"/>
+                </not>
+            </and>
+        </condition>
+        <property name="source.encoding" value="${file.encoding}"/>
+        <condition property="javadoc.encoding.used" value="${javadoc.encoding}">
+            <and>
+                <isset property="javadoc.encoding"/>
+                <not>
+                    <equals arg1="${javadoc.encoding}" arg2=""/>
+                </not>
+            </and>
+        </condition>
+        <property name="javadoc.encoding.used" value="${source.encoding}"/>
+        <property name="includes" value="**"/>
+        <property name="excludes" value=""/>
+        <condition else="" property="javac.compilerargs.jaxws" value="-Djava.endorsed.dirs='${jaxws.endorsed.dir}'">
+            <and>
+                <isset property="jaxws.endorsed.dir"/>
+                <available file="nbproject/jaxws-build.xml"/>
+            </and>
+        </condition>
+        <property name="runmain.jvmargs" value=""/>
+    </target>
+    <target depends="init" name="-init-cos" unless="deploy.on.save">
+        <condition property="deploy.on.save" value="true">
+            <istrue value="${j2ee.deploy.on.save}"/>
+        </condition>
+    </target>
+    <target name="-post-init">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target depends="-pre-init,-init-private,-init-user,-init-project,-do-init" name="-init-check">
+        <fail unless="src.dir">Must set src.dir</fail>
+        <fail unless="test.src.dir">Must set test.src.dir</fail>
+        <fail unless="build.dir">Must set build.dir</fail>
+        <fail unless="build.web.dir">Must set build.web.dir</fail>
+        <fail unless="build.generated.dir">Must set build.generated.dir</fail>
+        <fail unless="dist.dir">Must set dist.dir</fail>
+        <fail unless="build.classes.dir">Must set build.classes.dir</fail>
+        <fail unless="dist.javadoc.dir">Must set dist.javadoc.dir</fail>
+        <fail unless="build.test.classes.dir">Must set build.test.classes.dir</fail>
+        <fail unless="build.test.results.dir">Must set build.test.results.dir</fail>
+        <fail unless="build.classes.excludes">Must set build.classes.excludes</fail>
+        <fail unless="dist.war">Must set dist.war</fail>
+        <fail unless="j2ee.platform.classpath">
+The Java EE server classpath is not correctly set up. Your active server type is ${j2ee.server.type}.
+Either open the project in the IDE and assign the server or setup the server classpath manually.
+For example like this:
+   ant -Duser.properties.file=<path_to_property_file> (where you put the property "j2ee.platform.classpath" in a .properties file)
+or ant -Dj2ee.platform.classpath=<server_classpath> (where no properties file is used)
+                </fail>
+    </target>
+    <target name="-init-macrodef-property">
+        <macrodef name="property" uri="http://www.netbeans.org/ns/web-project/1">
+            <attribute name="name"/>
+            <attribute name="value"/>
+            <sequential>
+                <property name="@{name}" value="${@{value}}"/>
+            </sequential>
+        </macrodef>
+    </target>
+    <target name="-init-macrodef-javac">
+        <macrodef name="javac" uri="http://www.netbeans.org/ns/web-project/2">
+            <attribute default="${src.dir}" name="srcdir"/>
+            <attribute default="${build.classes.dir}" name="destdir"/>
+            <attribute default="${javac.classpath}:${j2ee.platform.classpath}" name="classpath"/>
+            <attribute default="${includes}" name="includes"/>
+            <attribute default="${excludes}" name="excludes"/>
+            <attribute default="${javac.debug}" name="debug"/>
+            <attribute default="${empty.dir}" name="gensrcdir"/>
+            <element name="customize" optional="true"/>
+            <sequential>
+                <property location="${build.dir}/empty" name="empty.dir"/>
+                <mkdir dir="${empty.dir}"/>
+                <javac debug="@{debug}" deprecation="${javac.deprecation}" destdir="@{destdir}" encoding="${source.encoding}" excludes="@{excludes}" includeantruntime="false" includes="@{includes}" source="${javac.source}" srcdir="@{srcdir}" target="${javac.target}">
+                    <src>
+                        <dirset dir="@{gensrcdir}" erroronmissingdir="false">
+                            <include name="*"/>
+                        </dirset>
+                    </src>
+                    <classpath>
+                        <path path="@{classpath}"/>
+                    </classpath>
+                    <compilerarg line="${javac.compilerargs} ${javac.compilerargs.jaxws}"/>
+                    <customize/>
+                </javac>
+            </sequential>
+        </macrodef>
+    </target>
+    <target name="-init-macrodef-junit">
+        <macrodef name="junit" uri="http://www.netbeans.org/ns/web-project/2">
+            <attribute default="${includes}" name="includes"/>
+            <attribute default="${excludes}" name="excludes"/>
+            <attribute default="**" name="testincludes"/>
+            <sequential>
+                <junit dir="${basedir}" errorproperty="tests.failed" failureproperty="tests.failed" fork="true" showoutput="true">
+                    <batchtest todir="${build.test.results.dir}">
+                        <fileset dir="${test.src.dir}" excludes="@{excludes},${excludes}" includes="@{includes}">
+                            <filename name="@{testincludes}"/>
+                        </fileset>
+                    </batchtest>
+                    <classpath>
+                        <path path="${run.test.classpath}:${j2ee.platform.classpath}"/>
+                    </classpath>
+                    <syspropertyset>
+                        <propertyref prefix="test-sys-prop."/>
+                        <mapper from="test-sys-prop.*" to="*" type="glob"/>
+                    </syspropertyset>
+                    <formatter type="brief" usefile="false"/>
+                    <formatter type="xml"/>
+                    <jvmarg line="${runmain.jvmargs}"/>
+                </junit>
+            </sequential>
+        </macrodef>
+    </target>
+    <target name="-init-macrodef-java">
+        <macrodef name="java" uri="http://www.netbeans.org/ns/web-project/1">
+            <attribute default="${main.class}" name="classname"/>
+            <attribute default="${debug.classpath}" name="classpath"/>
+            <element name="customize" optional="true"/>
+            <sequential>
+                <java classname="@{classname}" fork="true">
+                    <jvmarg line="${runmain.jvmargs}"/>
+                    <classpath>
+                        <path path="@{classpath}:${j2ee.platform.classpath}"/>
+                    </classpath>
+                    <syspropertyset>
+                        <propertyref prefix="run-sys-prop."/>
+                        <mapper from="run-sys-prop.*" to="*" type="glob"/>
+                    </syspropertyset>
+                    <customize/>
+                </java>
+            </sequential>
+        </macrodef>
+    </target>
+    <target name="-init-macrodef-nbjsdebug">
+        <macrodef name="nbjsdebugstart" uri="http://www.netbeans.org/ns/web-project/1">
+            <attribute default="${client.url}" name="webUrl"/>
+            <sequential>
+                <nbjsdebugstart urlPart="${client.urlPart}" webUrl="@{webUrl}"/>
+            </sequential>
+        </macrodef>
+    </target>
+    <target depends="-init-debug-args" name="-init-macrodef-nbjpda">
+        <macrodef name="nbjpdastart" uri="http://www.netbeans.org/ns/web-project/1">
+            <attribute default="${main.class}" name="name"/>
+            <attribute default="${debug.classpath}:${j2ee.platform.classpath}" name="classpath"/>
+            <sequential>
+                <nbjpdastart addressproperty="jpda.address" name="@{name}" transport="${debug-transport}">
+                    <classpath>
+                        <path path="@{classpath}"/>
+                    </classpath>
+                </nbjpdastart>
+            </sequential>
+        </macrodef>
+        <macrodef name="nbjpdareload" uri="http://www.netbeans.org/ns/web-project/1">
+            <attribute default="${build.classes.dir}" name="dir"/>
+            <sequential>
+                <nbjpdareload>
+                    <fileset dir="@{dir}" includes="${fix.classes}">
+                        <include name="${fix.includes}*.class"/>
+                    </fileset>
+                </nbjpdareload>
+            </sequential>
+        </macrodef>
+        <macrodef name="nbjpdaappreloaded" uri="http://www.netbeans.org/ns/web-project/1">
+            <sequential>
+                <nbjpdaappreloaded/>
+            </sequential>
+        </macrodef>
+    </target>
+    <target name="-init-debug-args">
+        <property name="version-output" value="java version "${ant.java.version}"/>
+        <condition property="have-jdk-older-than-1.4">
+            <or>
+                <contains string="${version-output}" substring="java version "1.0"/>
+                <contains string="${version-output}" substring="java version "1.1"/>
+                <contains string="${version-output}" substring="java version "1.2"/>
+                <contains string="${version-output}" substring="java version "1.3"/>
+            </or>
+        </condition>
+        <condition else="-Xdebug" property="debug-args-line" value="-Xdebug -Xnoagent -Djava.compiler=none">
+            <istrue value="${have-jdk-older-than-1.4}"/>
+        </condition>
+        <condition else="dt_socket" property="debug-transport-by-os" value="dt_shmem">
+            <os family="windows"/>
+        </condition>
+        <condition else="${debug-transport-by-os}" property="debug-transport" value="${debug.transport}">
+            <isset property="debug.transport"/>
+        </condition>
+    </target>
+    <target depends="-init-debug-args" name="-init-macrodef-debug">
+        <macrodef name="debug" uri="http://www.netbeans.org/ns/web-project/1">
+            <attribute default="${main.class}" name="classname"/>
+            <attribute default="${debug.classpath}:${j2ee.platform.classpath}" name="classpath"/>
+            <attribute default="${application.args.param}" name="args"/>
+            <element name="customize" optional="true"/>
+            <sequential>
+                <java classname="@{classname}" fork="true">
+                    <jvmarg line="${debug-args-line}"/>
+                    <jvmarg value="-Xrunjdwp:transport=${debug-transport},address=${jpda.address}"/>
+                    <jvmarg line="${runmain.jvmargs}"/>
+                    <classpath>
+                        <path path="@{classpath}"/>
+                    </classpath>
+                    <syspropertyset>
+                        <propertyref prefix="run-sys-prop."/>
+                        <mapper from="run-sys-prop.*" to="*" type="glob"/>
+                    </syspropertyset>
+                    <arg line="@{args}"/>
+                    <customize/>
+                </java>
+            </sequential>
+        </macrodef>
+    </target>
+    <target name="-init-taskdefs">
+        <fail unless="libs.CopyLibs.classpath">
+The libs.CopyLibs.classpath property is not set up.
+This property must point to 
+org-netbeans-modules-java-j2seproject-copylibstask.jar file which is part
+of NetBeans IDE installation and is usually located at 
+<netbeans_installation>/java<version>/ant/extra folder.
+Either open the project in the IDE and make sure CopyLibs library
+exists or setup the property manually. For example like this:
+ ant -Dlibs.CopyLibs.classpath=a/path/to/org-netbeans-modules-java-j2seproject-copylibstask.jar
+                </fail>
+        <taskdef classpath="${libs.CopyLibs.classpath}" resource="org/netbeans/modules/java/j2seproject/copylibstask/antlib.xml"/>
+    </target>
+    <target depends="-pre-init,-init-private,-init-user,-init-project,-do-init,-post-init,-init-check,-init-macrodef-property,-init-macrodef-javac,-init-macrodef-junit,-init-macrodef-java,-init-macrodef-nbjpda,-init-macrodef-nbjsdebug,-init-macrodef-debug,-init-taskdefs" name="init"/>
+    <!--
+                COMPILATION SECTION
+            -->
+    <target depends="init" if="no.dist.ear.dir" name="deps-module-jar" unless="no.deps"/>
+    <target depends="init" if="dist.ear.dir" name="deps-ear-jar" unless="no.deps"/>
+    <target depends="init, deps-module-jar, deps-ear-jar" name="deps-jar" unless="no.deps"/>
+    <target depends="init,deps-jar" name="-pre-pre-compile">
+        <mkdir dir="${build.classes.dir}"/>
+    </target>
+    <target name="-pre-compile">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target name="-copy-webdir">
+        <copy todir="${build.web.dir}">
+            <fileset dir="${web.docbase.dir}" excludes="${build.web.excludes},${excludes}" includes="${includes}"/>
+        </copy>
+        <copy todir="${build.web.dir}/WEB-INF">
+            <fileset dir="${webinf.dir}" excludes="${build.web.excludes}"/>
+        </copy>
+    </target>
+    <target depends="init, deps-jar, -pre-pre-compile, -pre-compile, -copy-manifest, -copy-persistence-xml, -copy-webdir, library-inclusion-in-archive,library-inclusion-in-manifest" if="have.sources" name="-do-compile">
+        <webproject2:javac destdir="${build.classes.dir}" gensrcdir="${build.generated.sources.dir}"/>
+        <copy todir="${build.classes.dir}">
+            <fileset dir="${src.dir}" excludes="${build.classes.excludes},${excludes}" includes="${includes}"/>
+        </copy>
+    </target>
+    <target if="has.custom.manifest" name="-copy-manifest">
+        <mkdir dir="${build.meta.inf.dir}"/>
+        <copy todir="${build.meta.inf.dir}">
+            <fileset dir="${conf.dir}" includes="MANIFEST.MF"/>
+        </copy>
+    </target>
+    <target if="has.persistence.xml" name="-copy-persistence-xml">
+        <mkdir dir="${build.web.dir}/WEB-INF/classes/META-INF"/>
+        <copy todir="${build.web.dir}/WEB-INF/classes/META-INF">
+            <fileset dir="${persistence.xml.dir}" includes="persistence.xml"/>
+        </copy>
+    </target>
+    <target name="-post-compile">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target depends="init,deps-jar,-pre-pre-compile,-pre-compile,-do-compile,-post-compile" description="Compile project." name="compile"/>
+    <target name="-pre-compile-single">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target depends="init,deps-jar,-pre-pre-compile" name="-do-compile-single">
+        <fail unless="javac.includes">Must select some files in the IDE or set javac.includes</fail>
+        <webproject2:javac excludes="" gensrcdir="${build.generated.sources.dir}" includes="${javac.includes}"/>
+        <copy todir="${build.classes.dir}">
+            <fileset dir="${src.dir}" excludes="${build.classes.excludes},${excludes}" includes="${includes}"/>
+        </copy>
+    </target>
+    <target name="-post-compile-single">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target depends="init,deps-jar,-pre-pre-compile,-pre-compile-single,-do-compile-single,-post-compile-single" name="compile-single"/>
+    <target depends="compile" description="Test compile JSP pages to expose compilation errors." if="do.compile.jsps" name="compile-jsps">
+        <mkdir dir="${build.generated.dir}/src"/>
+        <java classname="org.netbeans.modules.web.project.ant.JspC" failonerror="true" fork="true">
+            <arg value="-uriroot"/>
+            <arg file="${basedir}/${build.web.dir}"/>
+            <arg value="-d"/>
+            <arg file="${basedir}/${build.generated.dir}/src"/>
+            <arg value="-die1"/>
+            <arg value="-compilerSourceVM ${javac.source}"/>
+            <arg value="-compilerTargetVM ${javac.target}"/>
+            <arg value="-javaEncoding ${source.encoding}"/>
+            <classpath path="${java.home}/../lib/tools.jar:${jspctask.classpath}:${jspcompilation.classpath}"/>
+        </java>
+        <mkdir dir="${build.generated.dir}/classes"/>
+        <webproject2:javac classpath="${j2ee.platform.classpath}:${build.classes.dir}:${jspcompilation.classpath}" destdir="${build.generated.dir}/classes" srcdir="${build.generated.dir}/src"/>
+    </target>
+    <target depends="compile" if="jsp.includes" name="-do-compile-single-jsp">
+        <fail unless="javac.jsp.includes">Must select some files in the IDE or set javac.jsp.includes</fail>
+        <mkdir dir="${build.generated.dir}/src"/>
+        <java classname="org.netbeans.modules.web.project.ant.JspCSingle" failonerror="true" fork="true">
+            <arg value="-uriroot"/>
+            <arg file="${basedir}/${build.web.dir}"/>
+            <arg value="-d"/>
+            <arg file="${basedir}/${build.generated.dir}/src"/>
+            <arg value="-die1"/>
+            <arg value="-jspc.files"/>
+            <arg path="${jsp.includes}"/>
+            <arg value="-compilerSourceVM ${javac.source}"/>
+            <arg value="-compilerTargetVM ${javac.target}"/>
+            <arg value="-javaEncoding ${source.encoding}"/>
+            <classpath path="${java.home}/../lib/tools.jar:${jspctask.classpath}:${jspcompilation.classpath}"/>
+        </java>
+        <mkdir dir="${build.generated.dir}/classes"/>
+        <webproject2:javac classpath="${j2ee.platform.classpath}:${build.classes.dir}:${jspcompilation.classpath}" destdir="${build.generated.dir}/classes" srcdir="${build.generated.dir}/src">
+            <customize>
+                <patternset includes="${javac.jsp.includes}"/>
+            </customize>
+        </webproject2:javac>
+    </target>
+    <target name="compile-single-jsp">
+        <fail unless="jsp.includes">Must select a file in the IDE or set jsp.includes</fail>
+        <antcall target="-do-compile-single-jsp"/>
+    </target>
+    <!--
+                DIST BUILDING SECTION
+            -->
+    <target name="-pre-dist">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target depends="init,compile,compile-jsps,-pre-dist" if="do.war.package.without.custom.manifest" name="-do-dist-without-manifest">
+        <dirname file="${dist.war}" property="dist.jar.dir"/>
+        <mkdir dir="${dist.jar.dir}"/>
+        <jar compress="${jar.compress}" jarfile="${dist.war}">
+            <fileset dir="${build.web.dir}"/>
+        </jar>
+    </target>
+    <target depends="init,compile,compile-jsps,-pre-dist" if="do.war.package.with.custom.manifest" name="-do-dist-with-manifest">
+        <dirname file="${dist.war}" property="dist.jar.dir"/>
+        <mkdir dir="${dist.jar.dir}"/>
+        <jar compress="${jar.compress}" jarfile="${dist.war}" manifest="${build.meta.inf.dir}/MANIFEST.MF">
+            <fileset dir="${build.web.dir}"/>
+        </jar>
+    </target>
+    <target depends="init,compile,compile-jsps,-pre-dist" if="do.tmp.war.package.without.custom.manifest" name="-do-tmp-dist-without-manifest">
+        <dirname file="${dist.war}" property="dist.jar.dir"/>
+        <mkdir dir="${dist.jar.dir}"/>
+        <jar compress="${jar.compress}" jarfile="${dist.war}">
+            <fileset dir="${build.web.dir}"/>
+        </jar>
+    </target>
+    <target depends="init,compile,compile-jsps,-pre-dist" if="do.tmp.war.package.with.custom.manifest" name="-do-tmp-dist-with-manifest">
+        <dirname file="${dist.war}" property="dist.jar.dir"/>
+        <mkdir dir="${dist.jar.dir}"/>
+        <jar compress="${jar.compress}" jarfile="${dist.war}" manifest="${build.meta.inf.dir}/MANIFEST.MF">
+            <fileset dir="${build.web.dir}"/>
+        </jar>
+    </target>
+    <target depends="init,compile,compile-jsps,-pre-dist,-do-dist-with-manifest,-do-dist-without-manifest" name="do-dist"/>
+    <target depends="init" if="dist.ear.dir" name="library-inclusion-in-manifest">
+        <mkdir dir="${build.web.dir}/META-INF"/>
+        <manifest file="${build.web.dir}/META-INF/MANIFEST.MF" mode="update"/>
+    </target>
+    <target depends="init" name="library-inclusion-in-archive" unless="dist.ear.dir"/>
+    <target depends="init,compile,compile-jsps,-pre-dist,library-inclusion-in-manifest" if="do.tmp.war.package" name="do-ear-dist">
+        <dirname file="${dist.ear.war}" property="dist.jar.dir"/>
+        <mkdir dir="${dist.jar.dir}"/>
+        <jar compress="${jar.compress}" jarfile="${dist.ear.war}" manifest="${build.web.dir}/META-INF/MANIFEST.MF">
+            <fileset dir="${build.web.dir}"/>
+        </jar>
+    </target>
+    <target name="-post-dist">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target depends="init,compile,-pre-dist,do-dist,-post-dist" description="Build distribution (WAR)." name="dist"/>
+    <target depends="init,-init-cos,compile,-pre-dist,do-ear-dist,-post-dist" description="Build distribution (WAR) to be packaged into an EAR." name="dist-ear"/>
+    <!--
+                EXECUTION SECTION
+            -->
+    <target depends="run-deploy,run-display-browser" description="Deploy to server and show in browser." name="run"/>
+    <target name="-pre-run-deploy">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target name="-post-run-deploy">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target name="-pre-nbmodule-run-deploy">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- This target can be overriden by NetBeans modules. Don't override it directly, use -pre-run-deploy task instead. -->
+    </target>
+    <target name="-post-nbmodule-run-deploy">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- This target can be overriden by NetBeans modules. Don't override it directly, use -post-run-deploy task instead. -->
+    </target>
+    <target name="-run-deploy-am">
+        <!-- Task to deploy to the Access Manager runtime. -->
+    </target>
+    <target depends="init,-init-cos,compile,compile-jsps,-do-compile-single-jsp,-pre-dist,-do-tmp-dist-with-manifest,-do-tmp-dist-without-manifest,-pre-run-deploy,-pre-nbmodule-run-deploy,-run-deploy-nb,-init-deploy-ant,-deploy-ant,-run-deploy-am,-post-nbmodule-run-deploy,-post-run-deploy" name="run-deploy">
+        <nbjpdaappreloaded/>
+    </target>
+    <target if="netbeans.home" name="-run-deploy-nb">
+        <nbdeploy clientUrlPart="${client.urlPart}" debugmode="false" forceRedeploy="${forceRedeploy}"/>
+    </target>
+    <target name="-init-deploy-ant" unless="netbeans.home">
+        <property name="deploy.ant.archive" value="${dist.war}"/>
+        <property name="deploy.ant.docbase.dir" value="${web.docbase.dir}"/>
+        <property name="deploy.ant.resource.dir" value="${resource.dir}"/>
+        <property name="deploy.ant.enabled" value="true"/>
+    </target>
+    <target depends="dist,-run-undeploy-nb,-init-deploy-ant,-undeploy-ant" name="run-undeploy"/>
+    <target if="netbeans.home" name="-run-undeploy-nb">
+        <fail message="Undeploy is not supported from within the IDE"/>
+    </target>
+    <target depends="init,-pre-dist,dist,-post-dist" name="verify">
+        <nbverify file="${dist.war}"/>
+    </target>
+    <target depends="run-deploy,-init-display-browser,-display-browser-nb,-display-browser-cl" name="run-display-browser"/>
+    <target if="do.display.browser" name="-init-display-browser">
+        <condition property="do.display.browser.nb">
+            <isset property="netbeans.home"/>
+        </condition>
+        <condition property="do.display.browser.cl">
+            <isset property="deploy.ant.enabled"/>
+        </condition>
+    </target>
+    <target if="do.display.browser.nb" name="-display-browser-nb">
+        <nbbrowse url="${client.url}"/>
+    </target>
+    <target if="do.display.browser.cl" name="-get-browser" unless="browser">
+        <condition property="browser" value="rundll32">
+            <os family="windows"/>
+        </condition>
+        <condition else="" property="browser.args" value="url.dll,FileProtocolHandler">
+            <os family="windows"/>
+        </condition>
+        <condition property="browser" value="/usr/bin/open">
+            <os family="mac"/>
+        </condition>
+        <property environment="env"/>
+        <condition property="browser" value="${env.BROWSER}">
+            <isset property="env.BROWSER"/>
+        </condition>
+        <condition property="browser" value="/usr/bin/firefox">
+            <available file="/usr/bin/firefox"/>
+        </condition>
+        <condition property="browser" value="/usr/local/firefox/firefox">
+            <available file="/usr/local/firefox/firefox"/>
+        </condition>
+        <condition property="browser" value="/usr/bin/mozilla">
+            <available file="/usr/bin/mozilla"/>
+        </condition>
+        <condition property="browser" value="/usr/local/mozilla/mozilla">
+            <available file="/usr/local/mozilla/mozilla"/>
+        </condition>
+        <condition property="browser" value="/usr/sfw/lib/firefox/firefox">
+            <available file="/usr/sfw/lib/firefox/firefox"/>
+        </condition>
+        <condition property="browser" value="/opt/csw/bin/firefox">
+            <available file="/opt/csw/bin/firefox"/>
+        </condition>
+        <condition property="browser" value="/usr/sfw/lib/mozilla/mozilla">
+            <available file="/usr/sfw/lib/mozilla/mozilla"/>
+        </condition>
+        <condition property="browser" value="/opt/csw/bin/mozilla">
+            <available file="/opt/csw/bin/mozilla"/>
+        </condition>
+    </target>
+    <target depends="-get-browser" if="do.display.browser.cl" name="-display-browser-cl">
+        <fail unless="browser">
+                    Browser not found, cannot launch the deployed application. Try to set the BROWSER environment variable.
+                </fail>
+        <property name="browse.url" value="${deploy.ant.client.url}${client.urlPart}"/>
+        <echo>Launching ${browse.url}</echo>
+        <exec executable="${browser}" spawn="true">
+            <arg line="${browser.args} ${browse.url}"/>
+        </exec>
+    </target>
+    <target depends="init,-init-cos,compile-single" name="run-main">
+        <fail unless="run.class">Must select one file in the IDE or set run.class</fail>
+        <webproject1:java classname="${run.class}"/>
+    </target>
+    <target depends="init,compile-test-single,-pre-test-run-single" name="run-test-with-main">
+        <fail unless="run.class">Must select one file in the IDE or set run.class</fail>
+        <webproject1:java classname="${run.class}" classpath="${run.test.classpath}"/>
+    </target>
+    <!--
+                DEBUGGING SECTION
+            -->
+    <target depends="init,compile,compile-jsps,-do-compile-single-jsp,-pre-dist,-do-tmp-dist-with-manifest,-do-tmp-dist-without-manifest" description="Debug project in IDE." if="netbeans.home" name="debug">
+        <nbstartserver debugmode="true"/>
+        <antcall target="connect-debugger"/>
+        <nbdeploy clientUrlPart="${client.urlPart}" debugmode="true" forceRedeploy="true"/>
+        <antcall target="debug-display-browser"/>
+        <antcall target="connect-client-debugger"/>
+    </target>
+    <target if="do.debug.server" name="connect-debugger" unless="is.debugged">
+        <nbjpdaconnect address="${jpda.address}" host="${jpda.host}" name="${name}" transport="${jpda.transport}">
+            <classpath>
+                <path path="${debug.classpath}:${j2ee.platform.classpath}"/>
+            </classpath>
+            <sourcepath>
+                <path path="${web.docbase.dir}"/>
+            </sourcepath>
+        </nbjpdaconnect>
+    </target>
+    <target if="do.display.browser.debug" name="debug-display-browser">
+        <nbbrowse url="${client.url}"/>
+    </target>
+    <target if="do.debug.client" name="connect-client-debugger">
+        <webproject1:nbjsdebugstart webUrl="${client.url}"/>
+    </target>
+    <target depends="init,compile-test-single" if="netbeans.home" name="-debug-start-debuggee-main-test">
+        <fail unless="debug.class">Must select one file in the IDE or set debug.class</fail>
+        <webproject1:debug classname="${debug.class}" classpath="${debug.test.classpath}"/>
+    </target>
+    <target depends="init,compile-test-single,-debug-start-debugger-main-test,-debug-start-debuggee-main-test" if="netbeans.home" name="debug-test-with-main"/>
+    <target depends="init,compile,compile-jsps,-do-compile-single-jsp,debug" if="netbeans.home" name="debug-single"/>
+    <target depends="init" if="netbeans.home" name="-debug-start-debugger-main-test">
+        <webproject1:nbjpdastart classpath="${debug.test.classpath}" name="${debug.class}"/>
+    </target>
+    <target depends="init" if="netbeans.home" name="-debug-start-debugger">
+        <webproject1:nbjpdastart name="${debug.class}"/>
+    </target>
+    <target depends="init,compile-single" if="netbeans.home" name="-debug-start-debuggee-single">
+        <fail unless="debug.class">Must select one file in the IDE or set debug.class</fail>
+        <webproject1:debug classname="${debug.class}"/>
+    </target>
+    <target depends="init,compile-single,-debug-start-debugger,-debug-start-debuggee-single" if="netbeans.home" name="debug-single-main"/>
+    <target depends="init" name="-pre-debug-fix">
+        <fail unless="fix.includes">Must set fix.includes</fail>
+        <property name="javac.includes" value="${fix.includes}.java"/>
+    </target>
+    <target depends="init,-pre-debug-fix,compile-single" if="netbeans.home" name="-do-debug-fix">
+        <webproject1:nbjpdareload/>
+    </target>
+    <target depends="init,-pre-debug-fix,-do-debug-fix" if="netbeans.home" name="debug-fix"/>
+    <!--
+                JAVADOC SECTION
+            -->
+    <target depends="init" name="javadoc-build">
+        <mkdir dir="${dist.javadoc.dir}"/>
+        <javadoc additionalparam="${javadoc.additionalparam}" author="${javadoc.author}" charset="UTF-8" destdir="${dist.javadoc.dir}" docencoding="UTF-8" encoding="${javadoc.encoding.used}" failonerror="true" noindex="${javadoc.noindex}" nonavbar="${javadoc.nonavbar}" notree="${javadoc.notree}" private="${javadoc.private}" source="${javac.source}" splitindex="${javadoc.splitindex}" use="${javadoc.use}" useexternalfile="true" version="${javadoc.version}" windowtitle="${javadoc.windowtitle}">
+           <link offline="true"
+                 href="http://java.sun.com/javase/6/docs/api/package-list"
+                 packagelistloc="${jsf.build.home}/common/ant/package-list" />
+                 
+            <classpath>
+                <path path="${javac.classpath}:${j2ee.platform.classpath}"/>
+            </classpath>
+            <fileset dir="${src.dir}" excludes="${excludes}" includes="${includes}">
+                <filename name="**/*.java"/>
+            </fileset>
+            <fileset dir="${build.generated.sources.dir}" erroronmissingdir="false">
+                <include name="**/*.java"/>
+            </fileset>
+        </javadoc>
+    </target>
+    <target depends="init,javadoc-build" if="netbeans.home" name="javadoc-browse" unless="no.javadoc.preview">
+        <nbbrowse file="${dist.javadoc.dir}/index.html"/>
+    </target>
+    <target depends="init,javadoc-build,javadoc-browse" description="Build Javadoc." name="javadoc"/>
+    <!--
+                
+                JUNIT COMPILATION SECTION
+            -->
+    <target depends="init,compile" if="have.tests" name="-pre-pre-compile-test">
+        <mkdir dir="${build.test.classes.dir}"/>
+    </target>
+    <target name="-pre-compile-test">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target depends="init,compile,-pre-pre-compile-test,-pre-compile-test" if="have.tests" name="-do-compile-test">
+        <webproject2:javac classpath="${javac.test.classpath}:${j2ee.platform.classpath}" debug="true" destdir="${build.test.classes.dir}" srcdir="${test.src.dir}"/>
+        <copy todir="${build.test.classes.dir}">
+            <fileset dir="${test.src.dir}" excludes="${build.classes.excludes},${excludes}" includes="${includes}"/>
+        </copy>
+    </target>
+    <target name="-post-compile-test">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target depends="init,compile,-pre-pre-compile-test,-pre-compile-test,-do-compile-test,-post-compile-test" name="compile-test"/>
+    <target name="-pre-compile-test-single">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target depends="init,compile,-pre-pre-compile-test,-pre-compile-test-single" if="have.tests" name="-do-compile-test-single">
+        <fail unless="javac.includes">Must select some files in the IDE or set javac.includes</fail>
+        <webproject2:javac classpath="${javac.test.classpath}:${j2ee.platform.classpath}" debug="true" destdir="${build.test.classes.dir}" excludes="" includes="${javac.includes}" srcdir="${test.src.dir}"/>
+        <copy todir="${build.test.classes.dir}">
+            <fileset dir="${test.src.dir}" excludes="${build.classes.excludes},${excludes}" includes="${includes}"/>
+        </copy>
+    </target>
+    <target name="-post-compile-test-single">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target depends="init,compile,-pre-pre-compile-test,-pre-compile-test-single,-do-compile-test-single,-post-compile-test-single" name="compile-test-single"/>
+    <!--
+                
+                JUNIT EXECUTION SECTION
+            -->
+    <target depends="init" if="have.tests" name="-pre-test-run">
+        <mkdir dir="${build.test.results.dir}"/>
+    </target>
+    <target depends="init,compile-test,-pre-test-run" if="have.tests" name="-do-test-run">
+        <webproject2:junit testincludes="**/*Test.java"/>
+    </target>
+    <target depends="init,compile-test,-pre-test-run,-do-test-run" if="have.tests" name="-post-test-run">
+        <fail if="tests.failed" unless="ignore.failing.tests">Some tests failed; see details above.</fail>
+    </target>
+    <target depends="init" if="have.tests" name="test-report"/>
+    <target depends="init" if="netbeans.home+have.tests" name="-test-browse"/>
+    <target depends="init,compile-test,-pre-test-run,-do-test-run,test-report,-post-test-run,-test-browse" description="Run unit tests." name="test"/>
+    <target depends="init" if="have.tests" name="-pre-test-run-single">
+        <mkdir dir="${build.test.results.dir}"/>
+    </target>
+    <target depends="init,compile-test-single,-pre-test-run-single" if="have.tests" name="-do-test-run-single">
+        <fail unless="test.includes">Must select some files in the IDE or set test.includes</fail>
+        <webproject2:junit excludes="" includes="${test.includes}"/>
+    </target>
+    <target depends="init,compile-test-single,-pre-test-run-single,-do-test-run-single" if="have.tests" name="-post-test-run-single">
+        <fail if="tests.failed" unless="ignore.failing.tests">Some tests failed; see details above.</fail>
+    </target>
+    <target depends="init,compile-test-single,-pre-test-run-single,-do-test-run-single,-post-test-run-single" description="Run single unit test." name="test-single"/>
+    <!--
+                
+                JUNIT DEBUGGING SECTION
+            -->
+    <target depends="init,compile-test" if="have.tests" name="-debug-start-debuggee-test">
+        <fail unless="test.class">Must select one file in the IDE or set test.class</fail>
+        <property location="${build.test.results.dir}/TEST-${test.class}.xml" name="test.report.file"/>
+        <delete file="${test.report.file}"/>
+        <!-- must exist, otherwise the XML formatter would fail -->
+        <mkdir dir="${build.test.results.dir}"/>
+        <webproject1:debug args="${test.class}" classname="org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner" classpath="${ant.home}/lib/ant.jar:${ant.home}/lib/ant-junit.jar:${debug.test.classpath}">
+            <customize>
+                <arg value="showoutput=true"/>
+                <arg value="formatter=org.apache.tools.ant.taskdefs.optional.junit.BriefJUnitResultFormatter"/>
+                <arg value="formatter=org.apache.tools.ant.taskdefs.optional.junit.XMLJUnitResultFormatter,${test.report.file}"/>
+            </customize>
+        </webproject1:debug>
+    </target>
+    <target depends="init,compile-test" if="netbeans.home+have.tests" name="-debug-start-debugger-test">
+        <webproject1:nbjpdastart classpath="${debug.test.classpath}" name="${test.class}"/>
+    </target>
+    <target depends="init,compile-test,-debug-start-debugger-test,-debug-start-debuggee-test" name="debug-test"/>
+    <target depends="init,-pre-debug-fix,compile-test-single" if="netbeans.home" name="-do-debug-fix-test">
+        <webproject1:nbjpdareload dir="${build.test.classes.dir}"/>
+    </target>
+    <target depends="init,-pre-debug-fix,-do-debug-fix-test" if="netbeans.home" name="debug-fix-test"/>
+    <!--
+                
+                CLEANUP SECTION
+            -->
+    <target depends="init" if="no.dist.ear.dir" name="deps-clean" unless="no.deps"/>
+    <target depends="init" name="do-clean">
+        <condition property="build.dir.to.clean" value="${build.web.dir}">
+            <isset property="dist.ear.dir"/>
+        </condition>
+        <property name="build.dir.to.clean" value="${build.web.dir}"/>
+        <delete includeEmptyDirs="true" quiet="true">
+            <fileset dir="${build.dir.to.clean}/WEB-INF/lib"/>
+        </delete>
+        <delete dir="${build.dir}"/>
+        <available file="${build.dir.to.clean}/WEB-INF/lib" property="status.clean-failed" type="dir"/>
+        <delete dir="${dist.dir}"/>
+    </target>
+    <target depends="do-clean" if="status.clean-failed" name="check-clean">
+        <echo message="Warning: unable to delete some files in ${build.web.dir}/WEB-INF/lib - they are probably locked by the J2EE server. "/>
+        <echo level="info" message="To delete all files undeploy the module from Server Registry in Runtime tab and then use Clean again."/>
+    </target>
+    <target depends="init" if="netbeans.home" name="undeploy-clean">
+        <nbundeploy failOnError="false" startServer="false"/>
+    </target>
+    <target name="-post-clean">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target depends="init,undeploy-clean,deps-clean,do-clean,check-clean,-post-clean" description="Clean build products." name="clean"/>
+    <target depends="clean" description="Clean build products." name="clean-ear"/>
+</project>
diff --git a/jsf-demo/sandbox/jsf-forum/nbproject/faces-config.NavData b/jsf-demo/sandbox/jsf-forum/nbproject/faces-config.NavData
new file mode 100644
index 0000000..298bfc5
--- /dev/null
+++ b/jsf-demo/sandbox/jsf-forum/nbproject/faces-config.NavData
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Scene Scope="Project" version="2">
+    <Scope Scope="Faces Configuration Only"/>
+    <Scope Scope="Project"/>
+    <Scope Scope="All Faces Configurations"/>
+</Scene>
diff --git a/jsf-demo/sandbox/jsf-forum/nbproject/genfiles.properties b/jsf-demo/sandbox/jsf-forum/nbproject/genfiles.properties
new file mode 100644
index 0000000..1ac0299
--- /dev/null
+++ b/jsf-demo/sandbox/jsf-forum/nbproject/genfiles.properties
@@ -0,0 +1,48 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
+build.xml.data.CRC32=afec95a2
+build.xml.script.CRC32=f1883bf0
+build.xml.stylesheet.CRC32=c0ebde35 at 1.15.1.1
+# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml.
+# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you.
+nbproject/build-impl.xml.data.CRC32=afec95a2
+nbproject/build-impl.xml.script.CRC32=77194fc1
+nbproject/build-impl.xml.stylesheet.CRC32=8ab4467e at 1.15.1.1
diff --git a/jsf-demo/sandbox/jsf-forum/nbproject/project.properties b/jsf-demo/sandbox/jsf-forum/nbproject/project.properties
new file mode 100644
index 0000000..9a87434
--- /dev/null
+++ b/jsf-demo/sandbox/jsf-forum/nbproject/project.properties
@@ -0,0 +1,110 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
+build.classes.dir=${build.web.dir}/WEB-INF/classes
+build.classes.excludes=**/*.java,**/*.form
+build.dir=build
+build.generated.dir=${build.dir}/generated
+build.generated.sources.dir=${build.dir}/generated-sources
+build.test.classes.dir=${build.dir}/test/classes
+build.test.results.dir=${build.dir}/test/results
+build.web.dir=${build.dir}/web
+build.web.excludes=${build.classes.excludes}
+client.urlPart=
+compile.jsps=false
+conf.dir=${source.root}/conf
+debug.classpath=${build.classes.dir}:${javac.classpath}
+debug.test.classpath=\
+    ${run.test.classpath}
+display.browser=true
+dist.dir=dist
+dist.ear.war=${dist.dir}/${war.ear.name}
+dist.javadoc.dir=${dist.dir}/javadoc
+dist.war=${dist.dir}/${war.name}
+excludes=
+includes=**
+j2ee.deploy.on.save=true
+j2ee.platform=1.5
+j2ee.server.type=gfv3ee6
+jar.compress=false
+javac.classpath=
+# Space-separated list of extra javac options
+javac.compilerargs=
+javac.debug=true
+javac.deprecation=false
+javac.source=1.5
+javac.target=1.5
+javac.test.classpath=\
+    ${javac.classpath}:\
+    ${build.classes.dir}:\
+    ${libs.junit.classpath}:\
+    ${libs.junit_4.classpath}
+javadoc.additionalparam=
+javadoc.author=false
+javadoc.encoding=${source.encoding}
+javadoc.noindex=false
+javadoc.nonavbar=false
+javadoc.notree=false
+javadoc.preview=true
+javadoc.private=false
+javadoc.splitindex=true
+javadoc.use=true
+javadoc.version=false
+javadoc.windowtitle=
+jspcompilation.classpath=${jspc.classpath}:${javac.classpath}
+lib.dir=${web.docbase.dir}/WEB-INF/lib
+persistence.xml.dir=${conf.dir}
+platform.active=default_platform
+resource.dir=setup
+run.test.classpath=\
+    ${javac.test.classpath}:\
+    ${build.test.classes.dir}
+# Space-separated list of JVM arguments used when running a class with a main method or a unit test
+# (you may also define separate properties like run-sys-prop.name=value instead of -Dname=value):
+runmain.jvmargs=
+source.encoding=UTF-8
+source.root=src
+src.dir=${source.root}/java
+test.src.dir=test
+war.content.additional=
+war.ear.name=jsf-forum.war
+war.name=jsf-forum.war
+web.docbase.dir=web
+webinf.dir=web/WEB-INF
diff --git a/jsf-demo/sandbox/jsf-forum/nbproject/project.xml b/jsf-demo/sandbox/jsf-forum/nbproject/project.xml
new file mode 100644
index 0000000..e796f87
--- /dev/null
+++ b/jsf-demo/sandbox/jsf-forum/nbproject/project.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://www.netbeans.org/ns/project/1">
+    <type>org.netbeans.modules.web.project</type>
+    <configuration>
+        <data xmlns="http://www.netbeans.org/ns/web-project/3">
+            <name>jsf-forum</name>
+            <minimum-ant-version>1.6.5</minimum-ant-version>
+            <web-module-libraries/>
+            <web-module-additional-libraries/>
+            <source-roots>
+                <root id="src.dir"/>
+            </source-roots>
+            <test-roots>
+                <root id="test.src.dir"/>
+            </test-roots>
+        </data>
+    </configuration>
+</project>
diff --git a/jsf-demo/sandbox/jsf-forum/src/conf/MANIFEST.MF b/jsf-demo/sandbox/jsf-forum/src/conf/MANIFEST.MF
new file mode 100644
index 0000000..59499bc
--- /dev/null
+++ b/jsf-demo/sandbox/jsf-forum/src/conf/MANIFEST.MF
@@ -0,0 +1,2 @@
+Manifest-Version: 1.0
+
diff --git a/jsf-demo/sandbox/jsf-forum/src/conf/persistence.xml b/jsf-demo/sandbox/jsf-forum/src/conf/persistence.xml
new file mode 100644
index 0000000..c6dfefd
--- /dev/null
+++ b/jsf-demo/sandbox/jsf-forum/src/conf/persistence.xml
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
+  <persistence-unit name="JPA-Test2PU" transaction-type="RESOURCE_LOCAL">
+    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
+        <properties>
+            <property name="eclipselink.target-database" value="Auto"/>
+            <property name="eclipselink.ddl-generation" value="create-tables"/>
+        </properties>
+  </persistence-unit>
+</persistence>
diff --git a/jsf-demo/sandbox/jsf-forum/src/conf/tableSetup.sql b/jsf-demo/sandbox/jsf-forum/src/conf/tableSetup.sql
new file mode 100644
index 0000000..3135cd5
--- /dev/null
+++ b/jsf-demo/sandbox/jsf-forum/src/conf/tableSetup.sql
@@ -0,0 +1,30 @@
+drop table messages;
+
+drop table threads;
+
+drop table topics;
+
+create table topics (
+    topicID INT NOT NULL
+            PRIMARY KEY GENERATED ALWAYS AS IDENTITY
+                (START WITH 1, INCREMENT BY 1),
+    title VARCHAR(40) NOT NULL,
+    subject VARCHAR(160));
+
+create table threads (
+    threadID INT NOT NULL
+            PRIMARY KEY GENERATED ALWAYS AS IDENTITY
+                (START WITH 1, INCREMENT BY 1),
+    topicID INT NOT NULL,
+    title VARCHAR(40) NOT NULL,
+    FOREIGN KEY (topicID) REFERENCES topics);
+
+create table messages (
+    messageID INT NOT NULL
+            PRIMARY KEY GENERATED ALWAYS AS IDENTITY
+                (START WITH 1, INCREMENT BY 1),
+    threadID INT NOT NULL,
+    subject VARCHAR(80),
+    text VARCHAR(10000),
+    creation_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL,
+    FOREIGN KEY (threadID) REFERENCES threads);
\ No newline at end of file
diff --git a/jsf-demo/sandbox/jsf-forum/src/java/com/sun/faces/demo/controller/ForumController.java b/jsf-demo/sandbox/jsf-forum/src/java/com/sun/faces/demo/controller/ForumController.java
new file mode 100644
index 0000000..a446624
--- /dev/null
+++ b/jsf-demo/sandbox/jsf-forum/src/java/com/sun/faces/demo/controller/ForumController.java
@@ -0,0 +1,90 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.demo.controller;
+
+import com.sun.faces.demo.model.Topics;
+import java.util.Collection;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.RequestScoped;
+import javax.persistence.EntityManager;
+import javax.persistence.EntityManagerFactory;
+import javax.persistence.PersistenceUnit;
+import javax.persistence.Query;
+
+/**
+ *
+ * @author netdance
+ */
+ at ManagedBean(name="forum")
+ at RequestScoped
+public class ForumController {
+
+   @PersistenceUnit private EntityManagerFactory emf;
+
+    private Collection<Topics> topics;
+    private static String title = "JSF Forum";
+
+    public Collection<Topics> getTopics() {
+        EntityManager em = emf.createEntityManager();
+
+        try {
+            //create an instance of the NamedQuery defined in the Inventory class.
+            Query query = em.createNamedQuery("Topics.findAll");
+            return query.getResultList();
+        }finally{
+            em.close();
+        }
+    }
+
+    protected void addTopic(Topics topic) {
+        topics.add(topic);
+    }
+
+    public String getTitle() {
+        return title;
+    }
+
+    public void setTitle(String title) {
+        this.title = title;
+    }
+
+
+}
diff --git a/jsf-demo/sandbox/jsf-forum/src/java/com/sun/faces/demo/controller/MessageController.java b/jsf-demo/sandbox/jsf-forum/src/java/com/sun/faces/demo/controller/MessageController.java
new file mode 100644
index 0000000..4d38034
--- /dev/null
+++ b/jsf-demo/sandbox/jsf-forum/src/java/com/sun/faces/demo/controller/MessageController.java
@@ -0,0 +1,157 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.demo.controller;
+
+import com.sun.faces.demo.model.Messages;
+import com.sun.faces.demo.model.Threads;
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.Collection;
+import javax.annotation.PostConstruct;
+import javax.faces.application.FacesMessage;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.RequestScoped;
+import javax.faces.context.FacesContext;
+import javax.persistence.EntityManager;
+import javax.persistence.EntityManagerFactory;
+import javax.persistence.PersistenceUnit;
+import javax.persistence.Query;
+
+/**
+ *
+ * @author netdance
+ */
+ at ManagedBean(name = "message")
+ at RequestScoped
+public class MessageController implements Serializable {
+
+    @PersistenceUnit
+    private EntityManagerFactory emf;
+    String threadId = null;
+    Threads thread = null;
+    Messages message = null;
+    private String subject = null;
+    private String text = null;
+
+    public MessageController() {
+        FacesContext context = FacesContext.getCurrentInstance();
+
+        threadId = context.getExternalContext().getRequestParameterMap().get("threadId");
+
+        if (threadId == null || !threadId.matches("[0-9]+")) {
+            FacesMessage fmessage = new FacesMessage(
+                    "Parameter threadId not set correctly, " + threadId);
+            context.addMessage(null, fmessage);
+            return;
+        }
+        message = new Messages();
+    }
+
+    @PostConstruct
+    private void initThread() {
+        thread = message.getThreadid();
+
+        if (thread == null) {
+            FacesContext context = FacesContext.getCurrentInstance();
+
+            EntityManager em = emf.createEntityManager();
+
+            try {
+                Query query = em.createNamedQuery("Threads.findByThreadid");
+                query.setParameter("threadid", Integer.valueOf(threadId));
+                thread = (Threads) query.getSingleResult();
+            } catch (Exception e) {
+                FacesMessage fmessage = new FacesMessage((e.getLocalizedMessage()));
+                context.addMessage(null, fmessage);
+                thread = new Threads();
+            } finally {
+                em.close();
+            }
+        }
+        message.setThreadid(thread);
+    }
+
+    /**
+     * @return the subject
+     */
+    public String getSubject() {
+        return message.getSubject();
+    }
+
+    /**
+     * @param subject the subject to set
+     */
+    public void setSubject(String subject) {
+        message.setSubject(subject);
+    }
+
+    /**
+     * @return the text
+     */
+    public String getText() {
+        return message.getText();
+    }
+
+    /**
+     * @param text the text to set
+     */
+    public void setText(String text) {
+        message.setText(text);
+    }
+
+    public void createMessage() {
+        EntityManager em = emf.createEntityManager();
+        try {
+            em.getTransaction().begin();
+            em.persist(message);
+            Collection<Messages> cm = thread.getMessagesCollection();
+            if (cm == null) {
+                cm = new ArrayList();
+            }
+            cm.add(message);
+            thread.setMessagesCollection(cm);
+            em.merge(thread);
+            em.getTransaction().commit();
+        } finally {
+            em.close();
+        }
+    }
+}
diff --git a/jsf-demo/sandbox/jsf-forum/src/java/com/sun/faces/demo/controller/ThreadController.java b/jsf-demo/sandbox/jsf-forum/src/java/com/sun/faces/demo/controller/ThreadController.java
new file mode 100644
index 0000000..f2ee188
--- /dev/null
+++ b/jsf-demo/sandbox/jsf-forum/src/java/com/sun/faces/demo/controller/ThreadController.java
@@ -0,0 +1,223 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.demo.controller;
+
+import com.sun.faces.demo.model.Messages;
+import com.sun.faces.demo.model.Threads;
+import com.sun.faces.demo.model.Topics;
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.Collection;
+import javax.annotation.PostConstruct;
+import javax.faces.application.FacesMessage;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.RequestScoped;
+import javax.faces.context.FacesContext;
+import javax.persistence.EntityManager;
+import javax.persistence.EntityManagerFactory;
+import javax.persistence.PersistenceUnit;
+import javax.persistence.Query;
+
+/**
+ *
+ * @author netdance
+ */
+ at ManagedBean(name = "thread")
+ at RequestScoped
+public class ThreadController implements Serializable {
+
+    @PersistenceUnit
+    private EntityManagerFactory emf;
+    private String title = null;
+    private String text = null;
+    private Threads thread = null;
+    private Integer threadId = null;
+    private Topics topic = null;
+    private String topicId = null;
+
+    public ThreadController() {
+
+        FacesContext context = FacesContext.getCurrentInstance();
+
+        topicId = context.getExternalContext().getRequestParameterMap().get("topicId");
+        String thid = context.getExternalContext().getRequestParameterMap().get("threadId");
+
+        // if threadId not set, we need the topicId
+        if (thid == null) {
+            if (topicId == null || !topicId.matches("[0-9]+")) {
+                FacesMessage message = new FacesMessage(
+                        "Parameter topicId not set correctly, " + topicId);
+                context.addMessage(null, message);
+                return;
+            }
+            // Since threadId not set, we're making a new thread
+            thread = new Threads();
+            return;
+        }
+
+        try {
+            threadId = Integer.valueOf(thid);
+        } catch (Exception e) {
+            FacesMessage message = new FacesMessage(
+                    "Parameter threadId not set correctly, " + thid);
+            context.addMessage(null, message);
+            thread = new Threads();
+            return;
+        }
+        if (threadId == null || threadId.intValue() <= 0) {
+            thread = new Threads();
+            return;
+        }
+
+    }
+
+    @PostConstruct
+    private void init() {
+
+        FacesContext context = FacesContext.getCurrentInstance();
+
+        EntityManager em = emf.createEntityManager();
+
+        if (thread == null) {
+            try {
+                Query query = em.createNamedQuery("Threads.findByThreadid");
+                query.setParameter("threadid", threadId);
+                thread = (Threads) query.getSingleResult();
+            } catch (Exception e) {
+                FacesMessage message = new FacesMessage((e.getLocalizedMessage()));
+                context.addMessage(null, message);
+                thread = new Threads();
+            }
+        }
+
+        topic = thread.getTopicid();
+
+        if (topic == null) {
+            try {
+                Query query = em.createNamedQuery("Topics.findByTopicid");
+                query.setParameter("topicid", Integer.valueOf(topicId));
+                topic = (Topics) query.getSingleResult();
+            } catch (Exception e) {
+                FacesMessage message = new FacesMessage((e.getLocalizedMessage()));
+                context.addMessage(null, message);
+                topic = new Topics();
+            }
+        }
+        em.close();
+        thread.setTopicid(topic);
+    }
+
+    /**
+     * @return the title
+     */
+    public String getTitle() {
+        return title;
+    }
+
+    /**
+     * @param title the title to set
+     */
+    public void setTitle(String title) {
+        thread.setTitle(title);
+        this.title = title;
+    }
+
+    /**
+     * @return the text
+     */
+    public String getText() {
+        return text;
+    }
+
+    /**
+     * @param text the text to set
+     */
+    public void setText(String text) {
+        this.text = text;
+    }
+
+    public int getId() {
+        if (thread.getThreadid() == null) {
+            return 0;
+        } else {
+            return thread.getThreadid();
+        }
+    }
+
+    public Topics getParent() {
+        return topic;
+    }
+
+    public Collection<Messages> getMessages() {
+        return thread.getMessagesCollection();
+    }
+
+    public void createThread() {
+        EntityManager em = emf.createEntityManager();
+
+        Messages message = new Messages();
+        message.setSubject(title);
+        message.setText(text);
+        message.setThreadid(thread);
+
+        try {
+            em.getTransaction().begin();
+            em.persist(message);
+            Collection<Messages> cm = thread.getMessagesCollection();
+            if (cm == null) {
+                cm = new ArrayList();
+            }
+            cm.add(message);
+            thread.setMessagesCollection(cm);
+            em.persist(thread);
+            Collection<Threads> ct = topic.getThreadsCollection();
+            if (ct == null) {
+                ct = new ArrayList();
+            }
+            ct.add(thread);
+            topic.setThreadsCollection(ct);
+            em.merge(topic);
+            em.getTransaction().commit();
+        } finally {
+            em.close();
+        }
+    }
+}
diff --git a/jsf-demo/sandbox/jsf-forum/src/java/com/sun/faces/demo/controller/TopicController.java b/jsf-demo/sandbox/jsf-forum/src/java/com/sun/faces/demo/controller/TopicController.java
new file mode 100644
index 0000000..1a1368f
--- /dev/null
+++ b/jsf-demo/sandbox/jsf-forum/src/java/com/sun/faces/demo/controller/TopicController.java
@@ -0,0 +1,173 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.demo.controller;
+
+import com.sun.faces.demo.model.Threads;
+import com.sun.faces.demo.model.Topics;
+import java.io.Serializable;
+import java.util.Collection;
+import javax.annotation.PostConstruct;
+import javax.faces.application.FacesMessage;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.RequestScoped;
+import javax.faces.context.FacesContext;
+import javax.persistence.EntityManager;
+import javax.persistence.EntityManagerFactory;
+import javax.persistence.PersistenceUnit;
+import javax.persistence.Query;
+
+/**
+ *
+ * @author netdance
+ */
+ at ManagedBean(name = "topic")
+ at RequestScoped
+public class TopicController implements Serializable {
+
+    @PersistenceUnit
+    private EntityManagerFactory emf;
+    
+    private Topics topic = null;
+    private Integer topicId = null;
+
+
+    public TopicController() {
+        FacesContext context = FacesContext.getCurrentInstance();
+
+        String id = context.getExternalContext()
+                .getRequestParameterMap().get("topicId");
+
+        if (id == null) {
+            topic = new Topics();
+            return;
+        }
+        try {
+            topicId = Integer.valueOf(id);
+        } catch (Exception e) {
+            topic = new Topics();
+            return;
+        }
+        if (topicId == null || topicId.intValue() <= 0) {
+            topic = new Topics();
+            return;
+        }
+
+    }
+
+
+    @PostConstruct
+    private void init() {
+        if (topic != null) return;
+
+        FacesContext context = FacesContext.getCurrentInstance();
+
+        EntityManager em = emf.createEntityManager();
+
+        try {
+            Query query = em.createNamedQuery("Topics.findByTopicid");
+            query.setParameter("topicid", topicId);
+            topic =  (Topics)query.getSingleResult();
+        } catch (Exception e) {
+            FacesMessage message = new FacesMessage((e.getLocalizedMessage()));
+            context.addMessage(null, message);
+            topic = new Topics();
+        }finally{
+            em.close();
+        }
+    }
+
+    /**
+     * @return the title
+     */
+    public String getTitle() {
+        return topic.getTitle();
+    }
+
+    /**
+     * @param title the title to set
+     */
+    public void setTitle(String title) {
+        topic.setTitle(title);
+    }
+
+    /**
+     * @return the subject
+     */
+    public String getSubject() {
+        return topic.getSubject();
+    }
+
+    /**
+     * @param subject the subject to set
+     */
+    public void setSubject(String subject) {
+        topic.setSubject(subject);
+    }
+
+    /**
+     * Get the TopicID for this topic
+     * @return the topic ID
+     */
+    public int getId() {
+        if (topic.getTopicid() == null) {
+            return 0;
+        } else {
+            return topic.getTopicid();
+        }
+    }
+
+    public Collection<Threads> getThreads() {
+        return topic.getThreadsCollection();
+    }
+
+    public void createTopic() {
+        EntityManager em = emf.createEntityManager();
+
+        try {
+            em.getTransaction().begin();
+            em.persist(topic);
+            em.flush();
+            em.getTransaction().commit();
+        } finally {
+            em.close();
+        }
+    }
+}
diff --git a/jsf-demo/sandbox/jsf-forum/src/java/com/sun/faces/demo/model/Messages.java b/jsf-demo/sandbox/jsf-forum/src/java/com/sun/faces/demo/model/Messages.java
new file mode 100644
index 0000000..c5347b5
--- /dev/null
+++ b/jsf-demo/sandbox/jsf-forum/src/java/com/sun/faces/demo/model/Messages.java
@@ -0,0 +1,162 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.demo.model;
+
+import java.io.Serializable;
+import java.util.Date;
+import javax.persistence.Basic;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.NamedQueries;
+import javax.persistence.NamedQuery;
+import javax.persistence.Table;
+import javax.persistence.Temporal;
+import javax.persistence.TemporalType;
+
+/**
+ *
+ * @author netdance
+ */
+ at Entity
+ at Table(name = "MESSAGES", catalog = "", schema = "FORUM")
+ at NamedQueries({@NamedQuery(name = "Messages.findAll", query = "SELECT m FROM Messages m"), @NamedQuery(name = "Messages.findByMessageid", query = "SELECT m FROM Messages m WHERE m.messageid = :messageid"), @NamedQuery(name = "Messages.findBySubject", query = "SELECT m FROM Messages m WHERE m.subject = :subject"), @NamedQuery(name = "Messages.findByText", query = "SELECT m FROM Messages m WHERE m.text = :text"), @NamedQuery(name = "Messages.findByCreationTime", query = "SELECT m FROM Mess [...]
+public class Messages implements Serializable {
+    private static final long serialVersionUID = 1L;
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @Basic(optional = false)
+    @Column(name = "MESSAGEID", nullable = false)
+    private Integer messageid;
+    @Column(name = "SUBJECT", length = 80)
+    private String subject;
+    @Column(name = "TEXT", length = 10000)
+    private String text;
+    @Basic(optional = false)
+    @Column(name = "CREATION_TIME")
+    @Temporal(TemporalType.TIMESTAMP)
+    private Date creationTime =  new Date(System.currentTimeMillis());
+    @JoinColumn(name = "THREADID", referencedColumnName = "THREADID", nullable = false)
+    @ManyToOne(optional = false)
+    private Threads threadid;
+
+    public Messages() {
+    }
+
+    public Messages(Integer messageid) {
+        this.messageid = messageid;
+    }
+
+    public Messages(Integer messageid, Date creationTime) {
+        this.messageid = messageid;
+        this.creationTime = creationTime;
+    }
+
+    public Integer getMessageid() {
+        return messageid;
+    }
+
+    public void setMessageid(Integer messageid) {
+        this.messageid = messageid;
+    }
+
+    public String getSubject() {
+        return subject;
+    }
+
+    public void setSubject(String subject) {
+        this.subject = subject;
+    }
+
+    public String getText() {
+        return text;
+    }
+
+    public void setText(String text) {
+        this.text = text;
+    }
+
+    public Date getCreationTime() {
+        return creationTime;
+    }
+
+    public void setCreationTime(Date creationTime) {
+        this.creationTime = creationTime;
+    }
+
+    public Threads getThreadid() {
+        return threadid;
+    }
+
+    public void setThreadid(Threads threadid) {
+        this.threadid = threadid;
+    }
+
+    @Override
+    public int hashCode() {
+        int hash = 0;
+        hash += (messageid != null ? messageid.hashCode() : 0);
+        return hash;
+    }
+
+    @Override
+    public boolean equals(Object object) {
+        // TODO: Warning - this method won't work in the case the id fields are not set
+        if (!(object instanceof Messages)) {
+            return false;
+        }
+        Messages other = (Messages) object;
+        if ((this.messageid == null && other.messageid != null) || (this.messageid != null && !this.messageid.equals(other.messageid))) {
+            return false;
+        }
+        return true;
+    }
+
+    @Override
+    public String toString() {
+        return "com.sun.faces.demo.model.Messages[messageid=" + messageid + "]";
+    }
+
+}
diff --git a/jsf-demo/sandbox/jsf-forum/src/java/com/sun/faces/demo/model/Threads.java b/jsf-demo/sandbox/jsf-forum/src/java/com/sun/faces/demo/model/Threads.java
new file mode 100644
index 0000000..0ac45d9
--- /dev/null
+++ b/jsf-demo/sandbox/jsf-forum/src/java/com/sun/faces/demo/model/Threads.java
@@ -0,0 +1,151 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.demo.model;
+
+import java.io.Serializable;
+import java.util.Collection;
+import javax.persistence.Basic;
+import javax.persistence.CascadeType;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.NamedQueries;
+import javax.persistence.NamedQuery;
+import javax.persistence.OneToMany;
+import javax.persistence.Table;
+
+/**
+ *
+ * @author netdance
+ */
+ at Entity
+ at Table(name = "THREADS", catalog = "", schema = "FORUM")
+ at NamedQueries({@NamedQuery(name = "Threads.findAll", query = "SELECT t FROM Threads t"), @NamedQuery(name = "Threads.findByThreadid", query = "SELECT t FROM Threads t WHERE t.threadid = :threadid"), @NamedQuery(name = "Threads.findByTitle", query = "SELECT t FROM Threads t WHERE t.title = :title")})
+public class Threads implements Serializable {
+    private static final long serialVersionUID = 1L;
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @Basic(optional = false)
+    @Column(name = "THREADID", nullable = false)
+    private Integer threadid;
+    @Basic(optional = false)
+    @Column(name = "TITLE", nullable = false, length = 40)
+    private String title;
+    @JoinColumn(name = "TOPICID", referencedColumnName = "TOPICID", nullable = false)
+    @ManyToOne(optional = false)
+    private Topics topicid;
+    @OneToMany(cascade = CascadeType.ALL, mappedBy = "threadid")
+    private Collection<Messages> messagesCollection;
+
+    public Threads() {
+    }
+
+    public Threads(Integer threadid) {
+        this.threadid = threadid;
+    }
+
+    public Threads(Integer threadid, String title) {
+        this.threadid = threadid;
+        this.title = title;
+    }
+
+    public Integer getThreadid() {
+        return threadid;
+    }
+
+    public void setThreadid(Integer threadid) {
+        this.threadid = threadid;
+    }
+
+    public String getTitle() {
+        return title;
+    }
+
+    public void setTitle(String title) {
+        this.title = title;
+    }
+
+    public Topics getTopicid() {
+        return topicid;
+    }
+
+    public void setTopicid(Topics topicid) {
+        this.topicid = topicid;
+    }
+
+    public Collection<Messages> getMessagesCollection() {
+        return messagesCollection;
+    }
+
+    public void setMessagesCollection(Collection<Messages> messagesCollection) {
+        this.messagesCollection = messagesCollection;
+    }
+
+    @Override
+    public int hashCode() {
+        int hash = 0;
+        hash += (threadid != null ? threadid.hashCode() : 0);
+        return hash;
+    }
+
+    @Override
+    public boolean equals(Object object) {
+        // TODO: Warning - this method won't work in the case the id fields are not set
+        if (!(object instanceof Threads)) {
+            return false;
+        }
+        Threads other = (Threads) object;
+        if ((this.threadid == null && other.threadid != null) || (this.threadid != null && !this.threadid.equals(other.threadid))) {
+            return false;
+        }
+        return true;
+    }
+
+    @Override
+    public String toString() {
+        return "com.sun.faces.demo.model.Threads[threadid=" + threadid + "]";
+    }
+
+}
diff --git a/jsf-demo/sandbox/jsf-forum/src/java/com/sun/faces/demo/model/Topics.java b/jsf-demo/sandbox/jsf-forum/src/java/com/sun/faces/demo/model/Topics.java
new file mode 100644
index 0000000..f900226
--- /dev/null
+++ b/jsf-demo/sandbox/jsf-forum/src/java/com/sun/faces/demo/model/Topics.java
@@ -0,0 +1,148 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.demo.model;
+
+import java.io.Serializable;
+import java.util.Collection;
+import javax.persistence.Basic;
+import javax.persistence.CascadeType;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.NamedQueries;
+import javax.persistence.NamedQuery;
+import javax.persistence.OneToMany;
+import javax.persistence.Table;
+
+/**
+ *
+ * @author netdance
+ */
+ at Entity
+ at Table(name = "TOPICS", catalog = "", schema = "FORUM")
+ at NamedQueries({@NamedQuery(name = "Topics.findAll", query = "SELECT t FROM Topics t"), @NamedQuery(name = "Topics.findByTopicid", query = "SELECT t FROM Topics t WHERE t.topicid = :topicid"), @NamedQuery(name = "Topics.findByTitle", query = "SELECT t FROM Topics t WHERE t.title = :title"), @NamedQuery(name = "Topics.findBySubject", query = "SELECT t FROM Topics t WHERE t.subject = :subject")})
+public class Topics implements Serializable {
+    private static final long serialVersionUID = 1L;
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @Basic(optional = false)
+    @Column(name = "TOPICID", nullable = false)
+    private Integer topicid;
+    @Basic(optional = false)
+    @Column(name = "TITLE", nullable = false, length = 40)
+    private String title;
+    @Column(name = "SUBJECT", length = 160)
+    private String subject;
+    @OneToMany(cascade = CascadeType.ALL, mappedBy = "topicid")
+    private Collection<Threads> threadsCollection;
+
+    public Topics() {
+    }
+
+    public Topics(Integer topicid) {
+        this.topicid = topicid;
+    }
+
+    public Topics(Integer topicid, String title) {
+        this.topicid = topicid;
+        this.title = title;
+    }
+
+    public Integer getTopicid() {
+        return topicid;
+    }
+
+    public void setTopicid(Integer topicid) {
+        this.topicid = topicid;
+    }
+
+    public String getTitle() {
+        return title;
+    }
+
+    public void setTitle(String title) {
+        this.title = title;
+    }
+
+    public String getSubject() {
+        return subject;
+    }
+
+    public void setSubject(String subject) {
+        this.subject = subject;
+    }
+
+    public Collection<Threads> getThreadsCollection() {
+        return threadsCollection;
+    }
+
+    public void setThreadsCollection(Collection<Threads> threadsCollection) {
+        this.threadsCollection = threadsCollection;
+    }
+
+    @Override
+    public int hashCode() {
+        int hash = 0;
+        hash += (topicid != null ? topicid.hashCode() : 0);
+        return hash;
+    }
+
+    @Override
+    public boolean equals(Object object) {
+        // TODO: Warning - this method won't work in the case the id fields are not set
+        if (!(object instanceof Topics)) {
+            return false;
+        }
+        Topics other = (Topics) object;
+        if ((this.topicid == null && other.topicid != null) || (this.topicid != null && !this.topicid.equals(other.topicid))) {
+            return false;
+        }
+        return true;
+    }
+
+    @Override
+    public String toString() {
+        return "com.sun.faces.demo.model.Topics[topicid=" + topicid + "]";
+    }
+
+}
diff --git a/jsf-demo/sandbox/jsf-forum/web/WEB-INF/sun-web.xml b/jsf-demo/sandbox/jsf-forum/web/WEB-INF/sun-web.xml
new file mode 100644
index 0000000..b598227
--- /dev/null
+++ b/jsf-demo/sandbox/jsf-forum/web/WEB-INF/sun-web.xml
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE sun-web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Application Server 9.0 Servlet 2.5//EN" "http://www.sun.com/software/appserver/dtds/sun-web-app_2_5-0.dtd">
+<sun-web-app error-url="">
+  <context-root/>
+  <class-loader delegate="true"/>
+  <jsp-config>
+    <property name="keepgenerated" value="true">
+      <description>Keep a copy of the generated servlet class' java code.</description>
+    </property>
+  </jsp-config>
+</sun-web-app>
diff --git a/jsf-demo/sandbox/jsf-forum/web/WEB-INF/web.xml b/jsf-demo/sandbox/jsf-forum/web/WEB-INF/web.xml
new file mode 100644
index 0000000..b7332fe
--- /dev/null
+++ b/jsf-demo/sandbox/jsf-forum/web/WEB-INF/web.xml
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
+    <context-param>
+        <param-name>com.sun.faces.verifyObjects</param-name>
+        <param-value>false</param-value>
+    </context-param>
+    <context-param>
+        <param-name>com.sun.faces.validateXml</param-name>
+        <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>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>Development</param-value>
+    </context-param>
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>*.jsf</url-pattern>
+    </servlet-mapping>
+    <session-config>
+        <session-timeout>
+            30
+        </session-timeout>
+    </session-config>
+    <welcome-file-list>
+        <welcome-file>index.hmtl</welcome-file>
+        </welcome-file-list>
+    </web-app>
diff --git a/jsf-demo/sandbox/jsf-forum/web/index.html b/jsf-demo/sandbox/jsf-forum/web/index.html
new file mode 100644
index 0000000..6796ac6
--- /dev/null
+++ b/jsf-demo/sandbox/jsf-forum/web/index.html
@@ -0,0 +1,43 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<meta http-equiv="refresh" content="0;url=faces/index.xhtml">
diff --git a/jsf-demo/sandbox/jsf-forum/web/index.xhtml b/jsf-demo/sandbox/jsf-forum/web/index.xhtml
new file mode 100644
index 0000000..4926669
--- /dev/null
+++ b/jsf-demo/sandbox/jsf-forum/web/index.xhtml
@@ -0,0 +1,89 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+<h:head>
+    <title>JSF Forum</title>
+</h:head>
+<h:body bgcolor="white">
+    <h:form id="forumForm">
+        <h:dataTable id="table" value="#{forum.topics}" var="topic" border="2" rules="all">
+            <f:facet name="header">
+                <h:outputText id="head" value="#{forum.title}" />
+            </f:facet>
+
+            <h:column>
+                <f:facet name="header">
+                    ID
+                </f:facet>
+                <h:outputText id="topicId" value="#{topic.topicid}"/>
+            </h:column>
+
+
+            <h:column>
+                <f:facet name="header">
+                    Title
+                </f:facet>
+                <h:link id="title" outcome="topics/listTopic" value="#{topic.title}">
+                    <f:param name="topicId" value="#{topic.topicid}"/>
+                </h:link>
+            </h:column>
+
+            <h:column>
+                <f:facet name="header">
+                    Subject
+                </f:facet>
+                <h:outputText id="subject" value="#{topic.subject}"/>
+            </h:column>
+        </h:dataTable>
+
+        <h:commandLink action="topics/addTopic" value="Add a Topic">
+            <f:param name="addTopic" value="true"/>
+        </h:commandLink>
+
+    </h:form>
+</h:body>
+</html>
diff --git a/jsf-demo/sandbox/jsf-forum/web/nav/replyMessage.xhtml b/jsf-demo/sandbox/jsf-forum/web/nav/replyMessage.xhtml
new file mode 100644
index 0000000..8e03730
--- /dev/null
+++ b/jsf-demo/sandbox/jsf-forum/web/nav/replyMessage.xhtml
@@ -0,0 +1,69 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+<h:head>
+    <title>JSF Forum</title>
+</h:head>
+<h:body bgcolor="white">
+    <h:form id="helloForm">
+
+        <h:outputText value="Subject:"/><h:inputText value="#{message.subject}"/>
+        <br/>
+        <h:inputTextarea value="#{message.text}"/>
+        <br/>
+        <h:commandButton type="submit" value="Add"
+                         actionListener="#{message.createMessage}" action="/threads/listThread">
+            <f:param name="topicId" value="#{topic.id}"/>
+            <f:param name="threadId" value="#{thread.id}"/>
+        </h:commandButton>
+        <h:button type="cancel" value="Cancel" outcome="/threads/listThread">
+            <f:param name="topicId" value="#{topic.id}" />
+            <f:param name="threadId" value="#{thread.id}"/>
+        </h:button>
+    </h:form>
+</h:body>
+</html>
diff --git a/jsf-demo/sandbox/jsf-forum/web/threads/addThread.xhtml b/jsf-demo/sandbox/jsf-forum/web/threads/addThread.xhtml
new file mode 100644
index 0000000..0dec7d8
--- /dev/null
+++ b/jsf-demo/sandbox/jsf-forum/web/threads/addThread.xhtml
@@ -0,0 +1,68 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+<head>
+    <title>JSF Forum</title>
+</head>
+<body bgcolor="white">
+    <h:form id="addThreadForm">
+
+        <h:outputText value="Subject:"/><h:inputText value="#{thread.title}"/>
+        <br/>
+        <h:inputTextarea value="#{thread.text}"/>
+        <br/>
+        <h:commandButton type="submit" value="Add" 
+                         actionListener="#{thread.createThread}" action="/topics/listTopic">
+            <f:param name="topicId" value="#{topic.id}"/>
+            <f:param name="threadId" value="#{thread.id}"/>
+        </h:commandButton>
+        <h:button type="cancel" value="Cancel" outcome="/topics/listTopic">
+            <f:param name="topicId" value="#{topic.id}" />
+        </h:button>
+    </h:form>
+</body>
+</html>
diff --git a/jsf-demo/sandbox/jsf-forum/web/threads/listThread.xhtml b/jsf-demo/sandbox/jsf-forum/web/threads/listThread.xhtml
new file mode 100644
index 0000000..5908622
--- /dev/null
+++ b/jsf-demo/sandbox/jsf-forum/web/threads/listThread.xhtml
@@ -0,0 +1,87 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+<h:head>
+    <title>JSF Forum</title>
+</h:head>
+<h:body bgcolor="white">
+    <h:form id="helloForm">
+
+        <h:link outcome="/index" value="#{forum.title}"/> -- <h:link outcome="/topics/listTopic" value="#{topic.title}">
+                    <f:param name="topicId" value="#{topic.id}"/>
+                </h:link> -- #{thread.title}
+
+        <h:dataTable id="table" value="#{thread.messages}" var="message" border="2" rules="all">
+            <f:facet name="header">
+                <h:outputText id="head" value="#{thread.title}" />
+            </f:facet>
+
+            <h:column>
+                <f:facet name="header">
+                    Subject
+                </f:facet>
+                <h:outputText id="subject" value="#{message.subject}"/>
+            </h:column>
+
+            <h:column>
+                <f:facet name="header">
+                    Text
+                </f:facet>
+                <h:outputText id="text" value="#{message.text}"/>
+            </h:column>
+        </h:dataTable>
+
+        <h:commandLink id="replyMessage" action="/nav/replyMessage" value="Reply on this thread">
+            <f:param name="topicId" value="#{topic.id}"/>
+            <f:param name="threadId" value="#{thread.id}"/>
+            <f:param name="replyMessage" value="true"/>
+        </h:commandLink>
+
+
+    </h:form>
+</h:body>
+</html>
diff --git a/jsf-demo/sandbox/jsf-forum/web/topics/addTopic.xhtml b/jsf-demo/sandbox/jsf-forum/web/topics/addTopic.xhtml
new file mode 100644
index 0000000..dabe145
--- /dev/null
+++ b/jsf-demo/sandbox/jsf-forum/web/topics/addTopic.xhtml
@@ -0,0 +1,64 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+<h:head>
+    <title>JSF Forum</title>
+</h:head>
+<h:body bgcolor="white">
+    <h:form id="helloForm">
+
+        <h:outputText value="Title:"/><h:inputText value="#{topic.title}"/>
+        <br/>
+        <h:outputText value="Subject: "/><h:inputText value="#{topic.subject}"/>
+        <br/>
+        <h:commandButton type="submit" value="Add" 
+                         actionListener="#{topic.createTopic}" action="/index">
+        </h:commandButton>
+        <h:commandButton type="cancel" value="Cancel" action="/index"/>
+    </h:form>
+</h:body>
+</html>
diff --git a/jsf-demo/sandbox/jsf-forum/web/topics/listTopic.xhtml b/jsf-demo/sandbox/jsf-forum/web/topics/listTopic.xhtml
new file mode 100644
index 0000000..6e5615d
--- /dev/null
+++ b/jsf-demo/sandbox/jsf-forum/web/topics/listTopic.xhtml
@@ -0,0 +1,81 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+<h:head>
+    <title>JSF Forum</title>
+</h:head>
+<h:body bgcolor="white">
+    <h:form id="helloForm">
+
+        <h:link outcome="/index" value="#{forum.title}"/> -- #{topic.title} 
+
+        <h:dataTable id="table" value="#{topic.threads}" var="thread" border="2" rules="all">
+            <f:facet name="header">
+                <h:outputText id="head" value="#{topic.title}" />
+            </f:facet>
+
+            <h:column>
+                <f:facet name="header">
+                    Title
+                </f:facet>
+                <h:link outcome="/threads/listThread" value="#{thread.title}">
+                    <f:param name="topicId" value="#{topic.id}"/>
+                    <f:param name="threadId" value="#{thread.threadid}"/>
+                </h:link>
+            </h:column>
+
+
+        </h:dataTable>
+
+        <h:commandLink id="addThread" action="/threads/addThread" value="Start a new Thread">
+            <f:param name="topicId" value="#{topic.id}"/>
+        </h:commandLink>
+
+
+    </h:form>
+</h:body>
+</html>
diff --git a/jsf-demo/sandbox/maven-archetypes/README.txt b/jsf-demo/sandbox/maven-archetypes/README.txt
new file mode 100644
index 0000000..5092e34
--- /dev/null
+++ b/jsf-demo/sandbox/maven-archetypes/README.txt
@@ -0,0 +1,92 @@
+The maven modules in this directory are empty projects which are used as
+input to the mvn archetype:create-from-project plugin invocation.  This
+README documents how to produce an archetype from one of these maven
+modules and deploy it to the java.net maven2 archetype-catalog of the
+java.net maven2 repository, at
+<http://download.java.net/maven/2/archetype-catalog.xml>.
+
+The example will use jsf2-simple as the maven module, but you can
+substitute any other module within this directory for jsf2-simple.
+
+1. Make sure everything is cleaned
+
+  cd jsf2-simple
+
+  mvn clean
+
+2. Generate the archetype
+
+  mvn archetype:create-from-project
+
+3. Modify the generated pom so it can be deployed to the java.net repository
+
+  cd target/generated-sources/archetype/
+
+  $EDITOR pom.xml
+
+  Add the following XML elements.
+
+  3.a To the <build><extensions> section add
+
+      <extension>
+        <groupId>org.jvnet.wagon-svn</groupId>
+        <artifactId>wagon-svn</artifactId>
+        <version>1.8</version>
+      </extension>
+
+  3.b To the <repositories> section (create if necessary) add
+
+    <repository>
+      <id>maven2-repository.dev.java.net</id>
+      <name>Java.net Repository for Maven</name>
+      <url>http://download.java.net/maven/2/</url>
+    </repository>
+
+  3.c To the <distributionManagement> section (create if necessary) add
+
+    <repository>
+      <id>java.net-m2-repository</id>
+      <uniqueVersion>false</uniqueVersion>
+      <url>java-net:/maven2-repository/trunk/repository/</url>
+    </repository>
+
+  3.d Fix the groupId, artifactId, name, and version to be correct.  For
+   jsf2-simple the correct values are:
+
+  <groupId>javax.faces</groupId>
+  <artifactId>jsf2-simple-example-archetype</artifactId>
+  <name>example-archetype</name>
+  <version>0.1-SNAPSHOT</version>
+
+    Of course, version must be updated.
+
+4. Secure proper permission from Kohsuke to deploy to the java.net
+   repository and do
+
+   mvn install deploy
+
+5. Update the java.net maven2 repository archetype-catalog.xml
+
+   Wait about an hour after successful deployment and verify that the
+   archetype artifact does indeed appear in the public repository.  When
+   it does, edit the archetype-catalog.xml to add the deployed archetype
+   so it can be available to users.
+
+% svn co --depth files https://maven2-repository.dev.java.net/svn/maven2-repository/trunk/repository maven2-repository
+% cd maven2-repository
+% $EDITOR archetype-catalog.xml
+
+  Add the necessary entry for the new archetype.  The jsf2-simple
+  archetype looks like this.
+
+    <archetype>
+      <groupId>javax.faces</groupId>
+      <artifactId>jsf2-simple-example-archetype</artifactId>
+      <version>0.1-SNAPSHOT</version>
+      <repository>http://download.java.net/maven/2</repository>
+      <description>Simple JSF project with no non-JavaEE dependencies</description>
+    </archetype>
+
+  And appears within the <archetypes> element.
+
+% svn ci   
diff --git a/jsf-demo/sandbox/maven-archetypes/jsf2-composite/pom.xml b/jsf-demo/sandbox/maven-archetypes/jsf2-composite/pom.xml
new file mode 100644
index 0000000..fc5be02
--- /dev/null
+++ b/jsf-demo/sandbox/maven-archetypes/jsf2-composite/pom.xml
@@ -0,0 +1,252 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+	
+	<modelVersion>4.0.0</modelVersion>
+	<groupId>example</groupId>
+	<artifactId>example</artifactId>
+	<packaging>war</packaging>
+	<name>${project.artifactId}</name>
+	<url>https://mojarra.dev.java.net/</url>
+	<description>Example App</description>
+	<version>0.1</version>
+
+	<build>
+		<defaultGoal>install</defaultGoal>
+		<sourceDirectory>src/main/java</sourceDirectory>
+		<finalName>jsf2-${project.artifactId}</finalName>
+		<plugins>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-compiler-plugin</artifactId>
+				<version>RELEASE</version>
+				<configuration>
+					<source>1.5</source>
+					<target>1.5</target>
+				</configuration>
+			</plugin>
+		</plugins>
+    <extensions>
+      <extension>
+        <groupId>org.jvnet.wagon-svn</groupId>
+        <artifactId>wagon-svn</artifactId>
+        <version>1.8</version>
+      </extension>
+    </extensions>
+
+	</build>
+
+	<repositories>
+		<repository>
+			<snapshots />
+			<id>ibiblio.mirrors</id>
+			<url>http://mirrors.ibiblio.org/pub/mirrors/maven2</url>
+		</repository>
+		<repository>
+			<snapshots />
+			<id>codehaus</id>
+			<name>codehaus</name>
+			<url>http://repository.codehaus.org</url>
+		</repository>
+		<repository>
+			<id>jboss</id>
+			<url>http://repository.jboss.org/maven2</url>
+		</repository>
+		<repository>
+			<snapshots />
+			<id>java.net.m2</id>
+			<name>java.net m2 repo</name>
+			<url>http://download.java.net/maven/2</url>
+		</repository>
+	</repositories>
+
+	<dependencies>
+	
+		<dependency>
+			<groupId>javax.faces</groupId>
+			<artifactId>jsf-api</artifactId>
+			<version>2.0</version>
+			<scope>provided</scope>
+		</dependency>
+		
+		<dependency>
+			<groupId>javax.servlet</groupId>
+			<artifactId>servlet-api</artifactId>
+			<version>2.5</version>
+			<scope>provided</scope>
+		</dependency>
+
+		<dependency>
+			<groupId>javax.el</groupId>
+			<artifactId>el-api</artifactId>
+			<version>1.0</version>
+			<scope>provided</scope>
+		</dependency>
+
+		<dependency>
+			<groupId>javax.persistence</groupId>
+			<artifactId>persistence-api</artifactId>
+			<version>1.0</version>
+			<scope>provided</scope>
+		</dependency>
+		
+		<dependency>
+			<groupId>javax.transaction</groupId>
+			<artifactId>jta</artifactId>
+			<version>1.1</version>
+			<scope>provided</scope>
+		</dependency>
+
+		<dependency>
+			<groupId>org.glassfish</groupId>
+			<artifactId>bean-validator</artifactId>
+			<version>3.0-JBoss-4.0.0.Beta1-b01</version>
+			<scope>provided</scope>
+		</dependency>
+
+        <dependency>
+			<groupId>junit</groupId>
+			<artifactId>junit</artifactId>
+			<version>4.1</version>
+			<scope>test</scope>
+		</dependency>
+        
+        <dependency>
+            <groupId>javax.annotation</groupId>
+            <artifactId>jsr250-api</artifactId>
+            <version>1.0</version>
+            <scope>provided</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <version>4.4</version>
+            <scope>test</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>net.sourceforge.htmlunit</groupId>
+            <artifactId>htmlunit</artifactId>
+            <version>2.4</version>
+            <scope>test</scope>
+            <exclusions>
+              <exclusion>
+                <groupId>javax.xml</groupId>
+                <artifactId>jsr173</artifactId>
+              </exclusion>
+            </exclusions>
+        </dependency>
+
+        <dependency>
+            <groupId>commons-codec</groupId>
+            <artifactId>commons-codec</artifactId>
+            <version>1.3</version>
+            <scope>test</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>commons-httpclient</groupId>
+            <artifactId>commons-httpclient</artifactId>
+            <version>3.1</version>
+            <scope>test</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>commons-logging</groupId>
+            <artifactId>commons-logging</artifactId>
+            <version>1.1.1</version>
+            <scope>test</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>org.w3c.css</groupId>
+            <artifactId>sac</artifactId>
+            <version>1.3</version>
+            <scope>test</scope>
+        </dependency>
+
+	</dependencies>
+	<reporting>
+		<plugins>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-project-info-reports-plugin</artifactId>
+				<reportSets>
+					<reportSet />
+				</reportSets>
+			</plugin>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-compiler-plugin</artifactId>
+				<configuration>
+					<source>1.5</source>
+					<target>1.5</target>
+				</configuration>
+			</plugin>
+		</plugins>
+	</reporting>
+    <profiles>
+      <profile>
+	<id>default</id>
+        <!-- Tests are disabled by default.  See the test profile -->
+	<activation>
+	  <activeByDefault>true</activeByDefault>
+	</activation>
+	<properties>
+	  <maven.test.skip>true</maven.test.skip>
+	</properties>
+      </profile>
+      <profile>
+	<id>test</id>
+        <!-- To activate this profile, and allow tests to run, do this:
+             mvn -o -Ptest test -->
+      </profile>
+
+    </profiles>
+    <properties>
+        <netbeans.hint.deploy.server>gfv3</netbeans.hint.deploy.server>
+    </properties>
+
+</project>
diff --git a/jsf-demo/sandbox/maven-archetypes/jsf2-composite/src/main/java/example/model/UserBean.java b/jsf-demo/sandbox/maven-archetypes/jsf2-composite/src/main/java/example/model/UserBean.java
new file mode 100644
index 0000000..32b697d
--- /dev/null
+++ b/jsf-demo/sandbox/maven-archetypes/jsf2-composite/src/main/java/example/model/UserBean.java
@@ -0,0 +1,75 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package example.model;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.ManagedProperty;
+import javax.faces.bean.RequestScoped;
+
+ at ManagedBean
+ at RequestScoped
+public class UserBean {
+
+
+    @ManagedProperty(value="John")
+    protected String firstName;
+
+    @ManagedProperty(value="Many Jars")
+    protected String lastName;
+
+    public String getFirstName() {
+        return firstName;
+    }
+
+    public void setFirstName(String firstName) {
+        this.firstName = firstName;
+    }
+
+    public String getLastName() {
+        return lastName;
+    }
+
+    public void setLastName(String lastName) {
+        this.lastName = lastName;
+    }
+
+}
+
diff --git a/jsf-demo/sandbox/maven-archetypes/jsf2-composite/src/main/webapp/WEB-INF/web.xml b/jsf-demo/sandbox/maven-archetypes/jsf2-composite/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..9d47fb1
--- /dev/null
+++ b/jsf-demo/sandbox/maven-archetypes/jsf2-composite/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,71 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    Copyright (c) 2009,-2010 Oracle and/or its affiliates. All rights reserved.
+
+    Redistribution and use in source and binary forms, with or without
+    modification, are permitted provided that the following conditions
+    are met:
+
+      - Redistributions of source code must retain the above copyright
+        notice, this list of conditions and the following disclaimer.
+
+      - Redistributions in binary form must reproduce the above copyright
+        notice, this list of conditions and the following disclaimer in the
+        documentation and/or other materials provided with the distribution.
+
+      - Neither the name of Oracle nor the names of its
+        contributors may be used to endorse or promote products derived
+        from this software without specific prior written permission.
+
+    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+    IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+    THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+    PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+    CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+    EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+    PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+    PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+    LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+    NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+    SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+-->
+
+<web-app version="2.5"
+         xmlns="http://java.sun.com/xml/ns/javaee"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
+
+    <display-name>example</display-name>
+    <description>example</description>
+
+    <context-param>
+        <description>
+            Tell the runtime where we are in the project development
+            lifecycle.  Valid values are: 
+            Development, UnitTest, SystemTest, or Production.
+            The runtime will display helpful hints to correct common mistakes
+            when the value is Development.
+        </description>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>Development</param-value>
+    </context-param>
+
+    <!-- Faces Servlet -->
+  <servlet>
+    <servlet-name>Faces Servlet</servlet-name>
+    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+    <load-on-startup>1</load-on-startup>
+  </servlet>
+
+   <servlet-mapping>
+       <servlet-name>Faces Servlet</servlet-name>
+       <url-pattern>/faces/*</url-pattern>
+   </servlet-mapping>
+
+   <welcome-file-list>
+     <welcome-file>faces/main.xhtml</welcome-file>
+   </welcome-file-list>
+
+</web-app>
diff --git a/jsf-demo/sandbox/maven-archetypes/jsf2-composite/src/main/webapp/main.xhtml b/jsf-demo/sandbox/maven-archetypes/jsf2-composite/src/main/webapp/main.xhtml
new file mode 100644
index 0000000..1feac9e
--- /dev/null
+++ b/jsf-demo/sandbox/maven-archetypes/jsf2-composite/src/main/webapp/main.xhtml
@@ -0,0 +1,69 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:my="http://java.sun.com/jsf/composite/cc">
+<h:head>
+  <title>A Simple JavaServer Faces 2.0 View</title>
+<style type="text/css">
+.grayBox { padding: 8px; margin: 10px 0; border: 1px solid #CCC; background-color: #f9f9f9;  }
+</style>
+
+</h:head>
+<h:body>
+  <h:form>
+
+    <p>First Name: #{userBean.firstName} Last Name: #{userBean.lastName}</p>
+
+    <p>Composite Component usage:</p>
+
+<div id="cc" class="grayBox" style="border: 1px solid #090;">
+<p><my:myComponent /></p>
+</div>
+
+    <p><h:commandButton value="submit" /></p>
+  </h:form>
+</h:body>
+</html>
diff --git a/jsf-demo/sandbox/maven-archetypes/jsf2-composite/src/main/webapp/resources/cc/myComponent.xhtml b/jsf-demo/sandbox/maven-archetypes/jsf2-composite/src/main/webapp/resources/cc/myComponent.xhtml
new file mode 100644
index 0000000..fc9642f
--- /dev/null
+++ b/jsf-demo/sandbox/maven-archetypes/jsf2-composite/src/main/webapp/resources/cc/myComponent.xhtml
@@ -0,0 +1,99 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:cc="http://java.sun.com/jsf/composite">
+<head>
+
+<title>Not present in rendered output</title>
+
+</head>
+
+<body>
+
+<cc:interface name="myComponent" 
+                     displayName="Very Simple Composite Component" 
+                     preferred="true"
+                     expert="false"
+                     shortDescription="An illustration of the composite component feature">
+  <cc:attribute name="loginAction">
+    <cc:deferred-method>
+      <cc:method-signature>
+                  java.lang.Object action()
+      </cc:method-signature>
+    </cc:deferred-method>
+  </cc:attribute>
+
+  <cc:attribute name="usernameLabel" default="User ID: " />
+
+  <cc:attribute name="loginButtonLabel" default="Login " />
+
+  <cc:editableValueHolder name="username" />
+  <cc:actionSource name="loginEvent" />
+
+</cc:interface>
+
+<cc:implementation>
+
+      <p>
+
+         #{cc.attrs.usernameLabel} 
+         <h:inputText value="#{cc.attrs.model.fieldValue}" id="username" />
+
+      </p>
+
+      <p>
+
+	<h:commandButton id="loginEvent" value="#{cc.attrs.loginButtonLabel}" 
+                         action="#{cc.attrs.loginAction}"/>
+
+      </p>
+
+</cc:implementation>
+
+</body>
+
+</html>
diff --git a/jsf-demo/sandbox/maven-archetypes/jsf2-simple/pom.xml b/jsf-demo/sandbox/maven-archetypes/jsf2-simple/pom.xml
new file mode 100644
index 0000000..fc5be02
--- /dev/null
+++ b/jsf-demo/sandbox/maven-archetypes/jsf2-simple/pom.xml
@@ -0,0 +1,252 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+	
+	<modelVersion>4.0.0</modelVersion>
+	<groupId>example</groupId>
+	<artifactId>example</artifactId>
+	<packaging>war</packaging>
+	<name>${project.artifactId}</name>
+	<url>https://mojarra.dev.java.net/</url>
+	<description>Example App</description>
+	<version>0.1</version>
+
+	<build>
+		<defaultGoal>install</defaultGoal>
+		<sourceDirectory>src/main/java</sourceDirectory>
+		<finalName>jsf2-${project.artifactId}</finalName>
+		<plugins>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-compiler-plugin</artifactId>
+				<version>RELEASE</version>
+				<configuration>
+					<source>1.5</source>
+					<target>1.5</target>
+				</configuration>
+			</plugin>
+		</plugins>
+    <extensions>
+      <extension>
+        <groupId>org.jvnet.wagon-svn</groupId>
+        <artifactId>wagon-svn</artifactId>
+        <version>1.8</version>
+      </extension>
+    </extensions>
+
+	</build>
+
+	<repositories>
+		<repository>
+			<snapshots />
+			<id>ibiblio.mirrors</id>
+			<url>http://mirrors.ibiblio.org/pub/mirrors/maven2</url>
+		</repository>
+		<repository>
+			<snapshots />
+			<id>codehaus</id>
+			<name>codehaus</name>
+			<url>http://repository.codehaus.org</url>
+		</repository>
+		<repository>
+			<id>jboss</id>
+			<url>http://repository.jboss.org/maven2</url>
+		</repository>
+		<repository>
+			<snapshots />
+			<id>java.net.m2</id>
+			<name>java.net m2 repo</name>
+			<url>http://download.java.net/maven/2</url>
+		</repository>
+	</repositories>
+
+	<dependencies>
+	
+		<dependency>
+			<groupId>javax.faces</groupId>
+			<artifactId>jsf-api</artifactId>
+			<version>2.0</version>
+			<scope>provided</scope>
+		</dependency>
+		
+		<dependency>
+			<groupId>javax.servlet</groupId>
+			<artifactId>servlet-api</artifactId>
+			<version>2.5</version>
+			<scope>provided</scope>
+		</dependency>
+
+		<dependency>
+			<groupId>javax.el</groupId>
+			<artifactId>el-api</artifactId>
+			<version>1.0</version>
+			<scope>provided</scope>
+		</dependency>
+
+		<dependency>
+			<groupId>javax.persistence</groupId>
+			<artifactId>persistence-api</artifactId>
+			<version>1.0</version>
+			<scope>provided</scope>
+		</dependency>
+		
+		<dependency>
+			<groupId>javax.transaction</groupId>
+			<artifactId>jta</artifactId>
+			<version>1.1</version>
+			<scope>provided</scope>
+		</dependency>
+
+		<dependency>
+			<groupId>org.glassfish</groupId>
+			<artifactId>bean-validator</artifactId>
+			<version>3.0-JBoss-4.0.0.Beta1-b01</version>
+			<scope>provided</scope>
+		</dependency>
+
+        <dependency>
+			<groupId>junit</groupId>
+			<artifactId>junit</artifactId>
+			<version>4.1</version>
+			<scope>test</scope>
+		</dependency>
+        
+        <dependency>
+            <groupId>javax.annotation</groupId>
+            <artifactId>jsr250-api</artifactId>
+            <version>1.0</version>
+            <scope>provided</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <version>4.4</version>
+            <scope>test</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>net.sourceforge.htmlunit</groupId>
+            <artifactId>htmlunit</artifactId>
+            <version>2.4</version>
+            <scope>test</scope>
+            <exclusions>
+              <exclusion>
+                <groupId>javax.xml</groupId>
+                <artifactId>jsr173</artifactId>
+              </exclusion>
+            </exclusions>
+        </dependency>
+
+        <dependency>
+            <groupId>commons-codec</groupId>
+            <artifactId>commons-codec</artifactId>
+            <version>1.3</version>
+            <scope>test</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>commons-httpclient</groupId>
+            <artifactId>commons-httpclient</artifactId>
+            <version>3.1</version>
+            <scope>test</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>commons-logging</groupId>
+            <artifactId>commons-logging</artifactId>
+            <version>1.1.1</version>
+            <scope>test</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>org.w3c.css</groupId>
+            <artifactId>sac</artifactId>
+            <version>1.3</version>
+            <scope>test</scope>
+        </dependency>
+
+	</dependencies>
+	<reporting>
+		<plugins>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-project-info-reports-plugin</artifactId>
+				<reportSets>
+					<reportSet />
+				</reportSets>
+			</plugin>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-compiler-plugin</artifactId>
+				<configuration>
+					<source>1.5</source>
+					<target>1.5</target>
+				</configuration>
+			</plugin>
+		</plugins>
+	</reporting>
+    <profiles>
+      <profile>
+	<id>default</id>
+        <!-- Tests are disabled by default.  See the test profile -->
+	<activation>
+	  <activeByDefault>true</activeByDefault>
+	</activation>
+	<properties>
+	  <maven.test.skip>true</maven.test.skip>
+	</properties>
+      </profile>
+      <profile>
+	<id>test</id>
+        <!-- To activate this profile, and allow tests to run, do this:
+             mvn -o -Ptest test -->
+      </profile>
+
+    </profiles>
+    <properties>
+        <netbeans.hint.deploy.server>gfv3</netbeans.hint.deploy.server>
+    </properties>
+
+</project>
diff --git a/jsf-demo/sandbox/maven-archetypes/jsf2-simple/src/main/java/example/model/UserBean.java b/jsf-demo/sandbox/maven-archetypes/jsf2-simple/src/main/java/example/model/UserBean.java
new file mode 100644
index 0000000..32b697d
--- /dev/null
+++ b/jsf-demo/sandbox/maven-archetypes/jsf2-simple/src/main/java/example/model/UserBean.java
@@ -0,0 +1,75 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package example.model;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.ManagedProperty;
+import javax.faces.bean.RequestScoped;
+
+ at ManagedBean
+ at RequestScoped
+public class UserBean {
+
+
+    @ManagedProperty(value="John")
+    protected String firstName;
+
+    @ManagedProperty(value="Many Jars")
+    protected String lastName;
+
+    public String getFirstName() {
+        return firstName;
+    }
+
+    public void setFirstName(String firstName) {
+        this.firstName = firstName;
+    }
+
+    public String getLastName() {
+        return lastName;
+    }
+
+    public void setLastName(String lastName) {
+        this.lastName = lastName;
+    }
+
+}
+
diff --git a/jsf-demo/sandbox/maven-archetypes/jsf2-simple/src/main/webapp/WEB-INF/web.xml b/jsf-demo/sandbox/maven-archetypes/jsf2-simple/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..9d47fb1
--- /dev/null
+++ b/jsf-demo/sandbox/maven-archetypes/jsf2-simple/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,71 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    Copyright (c) 2009,-2010 Oracle and/or its affiliates. All rights reserved.
+
+    Redistribution and use in source and binary forms, with or without
+    modification, are permitted provided that the following conditions
+    are met:
+
+      - Redistributions of source code must retain the above copyright
+        notice, this list of conditions and the following disclaimer.
+
+      - Redistributions in binary form must reproduce the above copyright
+        notice, this list of conditions and the following disclaimer in the
+        documentation and/or other materials provided with the distribution.
+
+      - Neither the name of Oracle nor the names of its
+        contributors may be used to endorse or promote products derived
+        from this software without specific prior written permission.
+
+    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+    IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+    THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+    PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+    CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+    EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+    PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+    PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+    LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+    NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+    SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+-->
+
+<web-app version="2.5"
+         xmlns="http://java.sun.com/xml/ns/javaee"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
+
+    <display-name>example</display-name>
+    <description>example</description>
+
+    <context-param>
+        <description>
+            Tell the runtime where we are in the project development
+            lifecycle.  Valid values are: 
+            Development, UnitTest, SystemTest, or Production.
+            The runtime will display helpful hints to correct common mistakes
+            when the value is Development.
+        </description>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>Development</param-value>
+    </context-param>
+
+    <!-- Faces Servlet -->
+  <servlet>
+    <servlet-name>Faces Servlet</servlet-name>
+    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+    <load-on-startup>1</load-on-startup>
+  </servlet>
+
+   <servlet-mapping>
+       <servlet-name>Faces Servlet</servlet-name>
+       <url-pattern>/faces/*</url-pattern>
+   </servlet-mapping>
+
+   <welcome-file-list>
+     <welcome-file>faces/main.xhtml</welcome-file>
+   </welcome-file-list>
+
+</web-app>
diff --git a/jsf-demo/sandbox/maven-archetypes/jsf2-simple/src/main/webapp/main.xhtml b/jsf-demo/sandbox/maven-archetypes/jsf2-simple/src/main/webapp/main.xhtml
new file mode 100644
index 0000000..3a687d0
--- /dev/null
+++ b/jsf-demo/sandbox/maven-archetypes/jsf2-simple/src/main/webapp/main.xhtml
@@ -0,0 +1,58 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+<h:head>
+  <title>A Simple JavaServer Faces 2.0 View</title>
+</h:head>
+<h:body>
+  <h:form>
+
+    <p>First Name: #{userBean.firstName} Last Name: #{userBean.lastName}</p>
+
+    <p><h:commandButton value="submit" /></p>
+  </h:form>
+</h:body>
+</html>
diff --git a/jsf-demo/sandbox/permalink/build.xml b/jsf-demo/sandbox/permalink/build.xml
new file mode 100644
index 0000000..0d5763e
--- /dev/null
+++ b/jsf-demo/sandbox/permalink/build.xml
@@ -0,0 +1,138 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2009-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project name="permalink" default="build" basedir=".">
+
+
+    <property file="${user.home}/build.properties"/>
+    <property file="../../build.properties"/>
+    <import file="${jsf.build.home}/common/ant/common.xml"/>
+
+    <!-- Configure the context path for this application -->
+    <property name="example" value="permalink"/>
+    <property name="context.path" value="/${example}"/>
+    <property name="build" value="${basedir}/build"/>
+    <property name="dist" value="${basedir}/dist"/>
+
+    <!-- Location dependent jars -->
+    <property name="jsf-demo.lib" value="../lib"/>
+
+
+    <path id="classpath">
+        <pathelement location="${javax.faces-api.jar}"/>
+        <pathelement location="${javax.faces.jar}"/>
+        <pathelement location="${build}/WEB-INF/classes"/>
+        <pathelement location="${jsf-demo.lib}/ui.jar"/>
+        <path refid="compile.classpath"/>
+    </path>
+
+    <target name="init">
+        <tstamp/>
+    </target>
+
+    <target name="clean">
+        <delete dir="${build}"/>
+        <delete dir="${context.path}"/>
+    </target>
+
+    <target name="prepare" depends="init"
+            description="Create build directories.">
+        <mkdir dir="${build}/${example}/"/>
+        <mkdir dir="${build}/${example}/WEB-INF"/>
+        <mkdir dir="${build}/${example}/WEB-INF/classes"/>
+        <mkdir dir="${build}/${example}/WEB-INF/lib"/>
+    </target>
+
+    <target name="build" depends="prepare"
+            description="Compile Java files and copy static files.">
+         <jsf.javac srcdir="src"
+                   destdir="${build}/${example}/WEB-INF/classes">
+            <classpath>
+                <path refid="classpath"/>
+            </classpath>
+        </jsf.javac>
+        <copy todir="${build}/${example}/WEB-INF">
+            <fileset dir="web/WEB-INF">
+                <include name="web.xml"/>
+                <include name="faces-config.xml"/>
+                <include name="templates/*.xhtml"/>
+            </fileset>
+        </copy>
+
+        <copy todir="${build}/${example}/">
+            <fileset dir="web">
+                <include name="*.xhtml"/>
+                <include name="*.html"/>
+                <include name="*.jsp"/>
+                <include name="resources/**" />
+            </fileset>
+        </copy>
+        <copy todir="${build}/${example}/WEB-INF/classes/${example}">
+            <fileset dir="web">
+                <include name="*properties"/>
+            </fileset>
+        </copy>
+
+        <jsf.war basedir="${build}"
+                 archive-name="${example}"
+                 webxml="${build}/${example}/WEB-INF/web.xml">
+            <archive-elements>
+                <zipfileset dir="${build}/${example}"/>
+            </archive-elements>
+        </jsf.war>
+    </target>
+
+    <target name="deploy"
+            description="Deploy the demo application">
+        <deploy.artifact artifact="${build}/${example}.war"
+                         appName="${example}"/>
+    </target>
+
+    <target name="undeploy"
+            description="Undeploy the demo application">
+        <undeploy.artifact artifact="${build}/${example}.war"
+                           appName="${example}"/>
+    </target>
+
+
+</project>
+
diff --git a/jsf-demo/sandbox/permalink/src/java/permalink/Blog.java b/jsf-demo/sandbox/permalink/src/java/permalink/Blog.java
new file mode 100644
index 0000000..1347311
--- /dev/null
+++ b/jsf-demo/sandbox/permalink/src/java/permalink/Blog.java
@@ -0,0 +1,317 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 2009-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package permalink;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.ManagedProperty;
+import javax.faces.bean.RequestScoped;
+import java.util.ArrayList;
+import java.util.LinkedHashSet;
+import java.util.List;
+import java.util.Set;
+
+
+ at RequestScoped
+ at ManagedBean
+public class Blog {
+
+    private static final int PAGE_SIZE = 3;
+    private Long entryId;
+    private String category;
+    private BlogEntry entry;
+    private List<BlogEntry> entriesForPage;
+    private List<String> categories;
+    private boolean nextPageAvailable;
+    private int page = 1;
+    private String searchString;
+
+    // --------------------------------------------------------- Injections
+
+    @ManagedProperty("#{blogEntryRepository}")
+    private BlogEntryRepository repository;
+
+    public void setRepository(BlogEntryRepository repository) {
+        this.repository = repository;
+    }
+
+    // --------------------------------------------------------- Properties
+
+    public Long getEntryId() {
+        return entryId;
+    }
+
+    public void setEntryId(Long entryId) {
+        this.entryId = entryId;
+    }
+
+    public String getCategory() {
+        return category;
+    }
+
+    public void setCategory(String category) {
+        this.category = category;
+    }
+
+    public String getSearchString() {
+        // return null to prevent page param from being encoded when not necessary
+        return searchString == null || searchString.length() == 0
+               ? null
+               : searchString;
+    }
+
+    public void setSearchString(String searchString) {
+        if (searchString != null) {
+            searchString = searchString.trim();
+        }
+        this.searchString = searchString;
+    }
+
+    public Integer getPage() {
+        // return null to prevent page param from being encoded when not necessary
+        return page == 1 ? null : page;
+    }
+
+    public void setPage(Integer page) {
+        // NOTE if we were to use a primitive propery, page parameters would fail if value is null
+        if (page == null) {
+            this.page = 1;
+        } else if (page < 1) {
+            throw new IllegalArgumentException(
+                  "Page must be greater than or equal to 1");
+        } else {
+            this.page = page;
+        }
+    }
+
+    // --------------------------------------------------------- Before render actions
+
+    public void loadCategories() {
+        categories = retrieveCategories();
+    }
+
+    /**
+     * Init method for the main blog page
+     */
+    public void loadLatestEntries() {
+        loadCategories();
+        entriesForPage = (searchString != null
+                          ? retrieveSearchResults()
+                          : retrieveLatestEntries());
+    }
+
+    /**
+     * Init method for a category page
+     */
+    public void loadLatestEntriesInCategory() {
+        loadCategories();
+        if (categories.contains(category)) {
+            entriesForPage = (searchString != null
+                              ? retrieveSearchResultsInCategory()
+                              : retrieveLatestEntriesInCategory());
+        } else {
+            category = null;
+        }
+    }
+
+    /**
+     * Init method for an entry page
+     */
+    public void loadEntry() {
+        loadCategories();
+        entry = retrieveSelectedEntry();
+    }
+
+    // --------------------------------------------------------- Command actions
+
+    public boolean search() {
+        page = 1;
+        return true;
+    }
+
+    // --------------------------------------------------------- State readers
+
+    /**
+     * Retrieves the catagories used in this blog. This method references preloaded
+     * data and is intended to be used in the EL value expressions in the view template.
+     */
+    public List<String> getCategories() {
+        return categories;
+    }
+
+    /**
+     * Retrieves the categories used in this blog other than the selected one. This
+     * method references preloaded data and is intended to be used in the EL value
+     * expressions in the view template.
+     */
+    public List<String> getOtherCategories() {
+        List<String> others = new ArrayList<String>();
+        // defensive here because of postback decodes grrr..
+        if (categories != null) {
+            others.addAll(categories);
+            others.remove(category);
+        }
+        return others;
+    }
+
+    /**
+     * Retrieves the entries loaded for this page. This method references preloaded
+     * data and is intended to be used in EL value expressions in the view template.
+     */
+    public List<BlogEntry> getEntriesForPage() {
+        return entriesForPage;
+    }
+
+    public Set<BlogEntry> getEntriesForPageAsSet() {
+        return new LinkedHashSet(entriesForPage);
+    }
+
+    public int getNumEntriesOnPage() {
+        return entriesForPage.size();
+    }
+
+    /**
+     * Retrieves the entry loaded for this page. This method references preloaded
+     * data and is intended to be used in EL value expressions in the view template.
+     */
+    public BlogEntry getEntry() {
+        return entry;
+    }
+
+    public int getPreviousPageWithFirstPageAsNumber() {
+        assert page > 1;
+        return page - 1;
+    }
+
+    public Integer getPreviousPage() {
+        assert page > 1;
+        return page > 2 ? page - 1 : null;
+    }
+
+    public int getPageWithFirstPageAsNumber() {
+        return page;
+    }
+
+    public int getNextPage() {
+        return page + 1;
+    }
+
+    public boolean isNextPageAvailable() {
+        return nextPageAvailable;
+    }
+
+    public boolean isPreviousPageAvailable() {
+        return page > 1;
+    }
+
+    // --------------------------------------------------------- Worker methods
+
+    protected List<BlogEntry> retrieveLatestEntries() {
+        List<BlogEntry> entries = repository
+              .getLatestEntries((page - 1) * PAGE_SIZE, PAGE_SIZE + 1);
+        if (entries.isEmpty() && page > 1) {
+            page = 1;
+            entries = repository.getLatestEntries(0, PAGE_SIZE + 1);
+        }
+
+        return postProcessNavigationProbe(entries);
+    }
+
+    protected List<BlogEntry> retrieveSearchResults() {
+        List<BlogEntry> entries = repository.searchEntries(searchString,
+                                                           (page - 1)
+                                                           * PAGE_SIZE,
+                                                           PAGE_SIZE + 1);
+        if (entries.isEmpty() && page > 1) {
+            page = 1;
+            entries = repository.searchEntries(searchString, 0, PAGE_SIZE + 1);
+        }
+
+        return postProcessNavigationProbe(entries);
+    }
+
+    protected List<BlogEntry> retrieveLatestEntriesInCategory() {
+        List<BlogEntry> entries = repository.getLatestEntries(category,
+                                                              (page - 1)
+                                                              * PAGE_SIZE,
+                                                              PAGE_SIZE + 1);
+        if (entries.isEmpty() && page > 1) {
+            page = 1;
+            entries = repository.getLatestEntries(category, 0, PAGE_SIZE + 1);
+        }
+
+        return postProcessNavigationProbe(entries);
+    }
+
+    protected List<BlogEntry> retrieveSearchResultsInCategory() {
+        List<BlogEntry> entries = repository.searchEntries(searchString,
+                                                           category,
+                                                           (page - 1)
+                                                           * PAGE_SIZE,
+                                                           PAGE_SIZE + 1);
+        if (entries.isEmpty() && page > 1) {
+            page = 1;
+            entries = repository
+                  .searchEntries(searchString, category, 0, PAGE_SIZE + 1);
+        }
+
+        return postProcessNavigationProbe(entries);
+    }
+
+    private List<BlogEntry> postProcessNavigationProbe(List<BlogEntry> entries) {
+        if (entries.size() > PAGE_SIZE) {
+            nextPageAvailable = true;
+            entries.remove(entries.size() - 1);
+        } else {
+            nextPageAvailable = false;
+        }
+
+        return entries;
+    }
+
+    protected BlogEntry retrieveSelectedEntry() {
+        return repository.getEntry(entryId);
+    }
+
+    protected List<String> retrieveCategories() {
+        return repository.getCategories();
+    }
+
+}
diff --git a/jsf-demo/sandbox/permalink/src/java/permalink/BlogEntry.java b/jsf-demo/sandbox/permalink/src/java/permalink/BlogEntry.java
new file mode 100644
index 0000000..3d255c5
--- /dev/null
+++ b/jsf-demo/sandbox/permalink/src/java/permalink/BlogEntry.java
@@ -0,0 +1,137 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 2009-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package permalink;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+public class BlogEntry {
+
+    private Long id;
+    private String author;
+    private String category;
+    private String title;
+    private Date postDate;
+    private String body;
+    private List<String> tags;
+    private List<Comment> comments = new ArrayList<Comment>();
+
+    public BlogEntry() {
+    }
+
+    public BlogEntry(Long id, String author, String category, String title, Date postDate, String body) {
+        this.id = id;
+        this.author = author;
+        this.category = category;
+        this.title = title;
+        this.body = body;
+        this.postDate = postDate;
+    }
+
+    public String getAuthor() {
+        return author;
+    }
+
+    public void setAuthor(String author) {
+        this.author = author;
+    }
+
+    public String getBody() {
+        return body;
+    }
+
+    public void setBody(String body) {
+        this.body = body;
+    }
+
+    public String getCategory() {
+        return category;
+    }
+
+    public void setCategory(String category) {
+        this.category = category;
+    }
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Date getPostDate() {
+        return postDate;
+    }
+
+    public void setPostDate(Date postDate) {
+        this.postDate = postDate;
+    }
+
+    public List<String> getTags() {
+        return tags;
+    }
+
+    public void setTags(List<String> tags) {
+        this.tags = tags;
+    }
+
+    public String getTitle() {
+        return title;
+    }
+
+    public void setTitle(String title) {
+        this.title = title;
+    }
+
+    public List<Comment> getComments() {
+        return comments;
+    }
+
+    public void setComments(List<Comment> comments) {
+        this.comments = comments;
+    }
+
+    public int getNumComments() {
+        return comments == null ? 0 : comments.size();
+    }
+}
diff --git a/jsf-demo/sandbox/permalink/src/java/permalink/BlogEntryRepository.java b/jsf-demo/sandbox/permalink/src/java/permalink/BlogEntryRepository.java
new file mode 100644
index 0000000..9383c73
--- /dev/null
+++ b/jsf-demo/sandbox/permalink/src/java/permalink/BlogEntryRepository.java
@@ -0,0 +1,272 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 2009-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package permalink;
+
+import java.text.DateFormat;
+import java.text.ParseException;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.Date;
+import java.util.List;
+import java.util.Locale;
+import java.util.concurrent.atomic.AtomicLong;
+import javax.annotation.PostConstruct;
+import javax.faces.bean.ApplicationScoped;
+import javax.faces.bean.ManagedBean;
+
+ at ApplicationScoped
+ at ManagedBean
+public class BlogEntryRepository {
+
+    private static AtomicLong uniqueEntryId = new AtomicLong(0);
+    private static AtomicLong uniqueCommentId = new AtomicLong(0);
+    private final List<BlogEntry> entries;
+    private DateFormat dateParser;
+
+    public BlogEntryRepository() {
+        entries = new ArrayList<BlogEntry>();
+    }
+
+    @PostConstruct
+    public void seed() {
+        entries.add(new BlogEntry(uniqueEntryId.incrementAndGet(),
+                                  "Dan",
+                                  "General",
+                                  "My first post",
+                                  parseDate("15/01/09 13:30"),
+                                  "This is the obligatory first post."));
+        entries.add(new BlogEntry(uniqueEntryId.incrementAndGet(),
+                                  "Dan",
+                                  "JSF 2",
+                                  "View parameters",
+                                  parseDate("16/01/09 15:12"),
+                                  "One of the new features in JSF 2 is view parameters. If you are familiar with Seam, you will recognize them as page parameters. They bring the value binding concept to GET requests by allowing you to associate a request parameter with a EL value binding expression. You can witness view parameters in action in this demo. View parameters are especially useful for ensuring that the URL is always bookmarkable throughout the user's browsing session."));
+        entries.add(new BlogEntry(uniqueEntryId.incrementAndGet(),
+                                  "Dan",
+                                  "JSF 2",
+                                  "Bookmarkable links",
+                                  parseDate("18/01/09 14:45"),
+                                  "JSF finally has bookmarkable links. No more complaining that \"everything is a POST!\""));
+        entries.add(new BlogEntry(uniqueEntryId.incrementAndGet(),
+                                  "Dan",
+                                  "Java EE",
+                                  "What's new in Java EE 6",
+                                  parseDate("20/01/09 08:15"),
+                                  "JSF 2, JPA 2, EJB 3.1, Java Contexts and Dependency Injection (formally Web Beans) and more!"));
+        entries.add(new BlogEntry(uniqueEntryId.incrementAndGet(),
+                                  "Dan",
+                                  "JSF 2",
+                                  "Annotation nation",
+                                  parseDate("22/01/09 10:34"),
+                                  "You can finally free yourself from the tangles of XML and use annotations to define your managed beans. You put @ManagedBean on a class to define a managed bean and you annotate a field with @ManagedProperty to wire two beans together. If those annotations aren't enough to satisfy you, then check out JSR-299: Java Contexts and Dependency Injection. That spec uses annotations extensively and is a drop-in replacement for the JSF managed bean facility...an [...]
+        entries.add(new BlogEntry(uniqueEntryId.incrementAndGet(),
+                                  "Dan",
+                                  "JSF 2",
+                                  "Mojarra == RI",
+                                  parseDate("25/01/09 11:00"),
+                                  "The JSF reference implementation finally has a name: Mojarra. Surprise, it's the name of a fish."));
+        Collections.sort(entries, new Comparator<BlogEntry>() {
+
+            public int compare(BlogEntry a, BlogEntry b) {
+                return b.getPostDate().compareTo(a.getPostDate());
+            }
+
+        });
+    }
+
+    public List<BlogEntry> searchEntries(String searchString, int offset, int count) {
+        if (count == 0) {
+            return Collections.<BlogEntry>emptyList();
+        }
+
+        if (searchString == null || searchString.trim().length() == 0) {
+            return getLatestEntries(offset, count);
+        }
+
+        searchString = searchString.trim().toLowerCase();
+
+        List<BlogEntry> results = new ArrayList<BlogEntry>();
+        int idx = 0;
+        for (BlogEntry entry : entries) {
+            if ((entry.getTitle().toLowerCase().contains(searchString) || entry
+                  .getBody().toLowerCase().contains(searchString)) &&
+                idx++ >= offset) {
+                results.add(entry);
+                if (results.size() == count) {
+                    return results;
+                }
+            }
+        }
+
+        return results;
+    }
+
+
+    public List<BlogEntry> searchEntries(String searchString, String category, int offset, int count) {
+        if (count == 0) {
+            return Collections.<BlogEntry>emptyList();
+        }
+
+        if (category == null || category.trim().length() == 0) {
+            return searchEntries(searchString, offset, count);
+        }
+
+        if (searchString == null || searchString.trim().length() == 0) {
+            return getLatestEntries(offset, count);
+        }
+
+        category = category.trim();
+        searchString = searchString.trim().toLowerCase();
+
+        List<BlogEntry> results = new ArrayList<BlogEntry>();
+        int idx = 0;
+        for (BlogEntry entry : entries) {
+            if (entry.getCategory().equals(category) &&
+                (entry.getTitle().toLowerCase().contains(searchString) || entry
+                      .getBody().toLowerCase().contains(searchString)) &&
+                idx++ >= offset) {
+                results.add(entry);
+                if (results.size() == count) {
+                    return results;
+                }
+            }
+        }
+
+        return results;
+    }
+
+    public List<BlogEntry> getLatestEntries(String category, int offset, int count) {
+        if (count == 0) {
+            return Collections.<BlogEntry>emptyList();
+        }
+
+        if (category == null || category.trim().length() == 0) {
+            return getLatestEntries(offset, count);
+        }
+
+        category = category.trim();
+
+        List<BlogEntry> results = new ArrayList<BlogEntry>();
+        int idx = 0;
+        for (BlogEntry entry : entries) {
+            if (entry.getCategory().equals(category) && idx++ >= offset) {
+                results.add(entry);
+                if (results.size() == count) {
+                    return results;
+                }
+            }
+        }
+
+        return results;
+    }
+
+    public List<BlogEntry> getLatestEntries(int offset, int count) {
+        if (count == 0) {
+            return Collections.<BlogEntry>emptyList();
+        }
+
+        List<BlogEntry> results = new ArrayList<BlogEntry>();
+        int idx = 0;
+        for (BlogEntry entry : entries) {
+            if (idx++ >= offset) {
+                results.add(entry);
+                if (results.size() == count) {
+                    return results;
+                }
+            }
+        }
+
+        return results;
+    }
+
+    public BlogEntry getEntry(Long entryId) {
+        // TODO index the entries by id
+        for (BlogEntry entry : entries) {
+            if (entry.getId().equals(entryId)) {
+                return entry;
+            }
+        }
+
+        return null;
+    }
+
+    public List<String> getCategories() {
+        // TODO index list of categories
+        List<String> categories = new ArrayList<String>();
+        for (BlogEntry entry : entries) {
+            if (!categories.contains(entry.getCategory())) {
+                categories.add(entry.getCategory());
+            }
+        }
+
+        Collections.sort(categories);
+        return categories;
+    }
+
+    public void addComment(Comment comment, Long entryId) {
+        addComment(comment, getEntry(entryId));
+    }
+
+    public void addComment(Comment comment, BlogEntry entry) {
+        comment.setId(uniqueCommentId.incrementAndGet());
+        comment.setPostDate(new Date());
+        comment.setEntry(entry);
+        synchronized (entry) {
+            entry.getComments().add(comment);
+        }
+    }
+
+    private Date parseDate(String dateString) {
+        if (dateParser == null) {
+            dateParser = DateFormat.getDateTimeInstance(DateFormat.SHORT,
+                                                        DateFormat.SHORT,
+                                                        Locale.UK);
+        }
+
+        try {
+            return dateParser.parse(dateString);
+        } catch (ParseException e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+}
diff --git a/jsf-demo/sandbox/permalink/src/java/permalink/Comment.java b/jsf-demo/sandbox/permalink/src/java/permalink/Comment.java
new file mode 100644
index 0000000..b105015
--- /dev/null
+++ b/jsf-demo/sandbox/permalink/src/java/permalink/Comment.java
@@ -0,0 +1,108 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 2009-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package permalink;
+
+import java.util.Date;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.RequestScoped;
+
+ at RequestScoped
+ at ManagedBean
+public class Comment {
+
+    private Long id;
+    private BlogEntry entry;
+    private Date postDate;
+    private String author;
+    private String body;
+
+    public Comment() {
+    }
+
+    public Comment(Long id, BlogEntry entry, String author, Date postDate, String body) {
+        this.id = id;
+        this.entry = entry;
+        this.author = author;
+        this.postDate = postDate;
+        this.body = body;
+    }
+
+    public BlogEntry getEntry() {
+        return entry;
+    }
+
+    public void setEntry(BlogEntry entry) {
+        this.entry = entry;
+    }
+
+    public Date getPostDate() {
+        return postDate;
+    }
+
+    public void setPostDate(Date postDate) {
+        this.postDate = postDate;
+    }
+
+    public String getAuthor() {
+        return author;
+    }
+
+    public void setAuthor(String author) {
+        this.author = author;
+    }
+
+    public String getBody() {
+        return body;
+    }
+
+    public void setBody(String body) {
+        this.body = body;
+    }
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+}
diff --git a/jsf-demo/sandbox/permalink/src/java/permalink/CommentBoard.java b/jsf-demo/sandbox/permalink/src/java/permalink/CommentBoard.java
new file mode 100644
index 0000000..f7fedad
--- /dev/null
+++ b/jsf-demo/sandbox/permalink/src/java/permalink/CommentBoard.java
@@ -0,0 +1,95 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 2009-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package permalink;
+
+import javax.faces.application.FacesMessage;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.ManagedProperty;
+import javax.faces.bean.RequestScoped;
+import javax.faces.context.FacesContext;
+
+ at RequestScoped
+ at ManagedBean
+public class CommentBoard {
+
+    // --------------------------------------------------------- Injections
+
+    @ManagedProperty("#{blogEntryRepository}")
+    private BlogEntryRepository repository;
+
+    @ManagedProperty("#{requestScope.comment}")
+    private Comment comment;
+
+    @ManagedProperty("#{requestScope.blog}")
+    private Blog blog;
+
+    public void setBlog(Blog blog) {
+        this.blog = blog;
+    }
+
+    public void setComment(Comment comment) {
+        this.comment = comment;
+    }
+
+    public void setRepository(BlogEntryRepository repository) {
+        this.repository = repository;
+    }
+
+    // --------------------------------------------------------- Actions
+
+    public Boolean post() {
+        if (comment == null || blog == null) {
+            return null;
+        }
+
+        BlogEntry entry = repository.getEntry(blog.getEntryId());
+        if (entry == null) {
+            return null;
+        }
+
+        repository.addComment(comment, entry);
+        FacesContext context = FacesContext.getCurrentInstance();
+        context.addMessage(null, new FacesMessage("Thanks for your comment!"));
+        // FIXME still leads to a NullPointerException
+        //context.getFlash().setKeepMessages(true);
+        return true;
+    }
+}
diff --git a/jsf-demo/sandbox/permalink/web/WEB-INF/faces-config.xml b/jsf-demo/sandbox/permalink/web/WEB-INF/faces-config.xml
new file mode 100644
index 0000000..0310910
--- /dev/null
+++ b/jsf-demo/sandbox/permalink/web/WEB-INF/faces-config.xml
@@ -0,0 +1,88 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2009-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
+        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
+        version="2.0">
+
+    <navigation-rule>
+        <from-view-id>*</from-view-id>
+        <navigation-case>
+			<from-outcome>home</from-outcome>
+            <to-view-id>/home.xhtml</to-view-id>
+        </navigation-case>
+		<navigation-case>
+			<from-outcome>entry</from-outcome>
+            <to-view-id>/entry.xhtml</to-view-id>
+        </navigation-case>
+		<navigation-case>
+			<from-outcome>category</from-outcome>
+            <to-view-id>/category.xhtml</to-view-id>
+        </navigation-case>
+		<navigation-case>
+			<from-action>#{blog.search}</from-action>
+			<to-view-id>/home.xhtml</to-view-id>
+			<redirect include-view-params="true"/>
+		</navigation-case>
+    </navigation-rule>
+
+	<navigation-rule>
+		<from-view-id>/category.xhtml</from-view-id>
+		<navigation-case>
+			<from-action>#{blog.search}</from-action>
+			<to-view-id>#{view.viewId}</to-view-id>
+			<redirect include-view-params="true"/>
+		</navigation-case>
+	</navigation-rule>
+
+	<navigation-rule>
+		<from-view-id>/entry.xhtml</from-view-id>
+		<navigation-case>
+			<from-action>#{commentBoard.post}</from-action>
+			<to-view-id>#{view.viewId}</to-view-id>
+			<redirect include-view-params="true"/>
+		</navigation-case>
+	</navigation-rule>
+
+</faces-config>
diff --git a/jsf-demo/sandbox/permalink/web/WEB-INF/sun-web.xml b/jsf-demo/sandbox/permalink/web/WEB-INF/sun-web.xml
new file mode 100644
index 0000000..8d71ba9
--- /dev/null
+++ b/jsf-demo/sandbox/permalink/web/WEB-INF/sun-web.xml
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2009-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE sun-web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Application Server 9.0 Servlet 2.5//EN" "http://www.sun.com/software/appserver/dtds/sun-web-app_2_5-0.dtd">
+<sun-web-app error-url="">
+  <context-root>/permalink</context-root>
+  <class-loader delegate="true"/>
+  <jsp-config>
+    <property name="keepgenerated" value="true">
+      <description>Keep a copy of the generated servlet class' java code.</description>
+    </property>
+  </jsp-config>
+</sun-web-app>
diff --git a/jsf-demo/sandbox/permalink/web/WEB-INF/templates/categories.xhtml b/jsf-demo/sandbox/permalink/web/WEB-INF/templates/categories.xhtml
new file mode 100644
index 0000000..9d9c530
--- /dev/null
+++ b/jsf-demo/sandbox/permalink/web/WEB-INF/templates/categories.xhtml
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2009-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<ui:composition xmlns="http://www.w3.org/1999/xhtml"
+                xmlns:ui="http://java.sun.com/jsf/facelets"
+                xmlns:f="http://java.sun.com/jsf/core"
+                xmlns:h="http://java.sun.com/jsf/html">
+
+    <h2>Categories</h2>
+    <ul>
+        <ui:repeat var="_category" value="#{blog.categories}">
+            <li>
+                <h:link outcome="category" value="#{_category}">
+                    <f:param name="name" value="#{_category}"/>
+                </h:link>
+            </li>
+        </ui:repeat>
+    </ul>
+
+</ui:composition>
diff --git a/jsf-demo/sandbox/permalink/web/WEB-INF/templates/comments.xhtml b/jsf-demo/sandbox/permalink/web/WEB-INF/templates/comments.xhtml
new file mode 100644
index 0000000..52c5abd
--- /dev/null
+++ b/jsf-demo/sandbox/permalink/web/WEB-INF/templates/comments.xhtml
@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2009-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<ui:composition xmlns="http://www.w3.org/1999/xhtml"
+                xmlns:ui="http://java.sun.com/jsf/facelets"
+                xmlns:f="http://java.sun.com/jsf/core"
+                xmlns:h="http://java.sun.com/jsf/html">
+
+    <ul id="comments">
+        <h3>#{_entry.numComments}
+            Comment#{_entry.numComments != 1 ? 's' : ''}</h3>
+        <ui:repeat var="_comment" varStatus="it" value="#{_entry.comments}">
+            <li class="comment clear #{it.even ? 'alt' : ''}">
+                <cite>#{_comment.author}</cite>
+
+                <div><p>#{_comment.body}</p></div>
+            </li>
+        </ui:repeat>
+    </ul>
+    <h3>Any thoughts?</h3>
+    <h:form id="comment" prependId="false">
+        <p>
+            <h:inputText id="author" value="#{comment.author}" size="20"
+                         tabindex="1" required="true" label="Author"/>
+            <h:outputLabel for="author" value="Name (required)"/>
+            <br/>
+            <h:message for="author" style="color: #FF0000;"/>
+        </p>
+        <p>
+            <h:inputTextarea id="body" value="#{comment.body}" cols="60"
+                             rows="7" tabindex="2" required="true"
+                             label="Comment text"/>
+            <h:message for="body" style="color: #FF0000;"/>
+        </p>
+        <p>
+            <h:commandButton id="post" action="#{commentBoard.post}"
+                             tabindex="3" value="Submit"/>
+        </p>
+    </h:form>
+
+</ui:composition>
diff --git a/jsf-demo/sandbox/permalink/web/WEB-INF/templates/commonViewParams.xhtml b/jsf-demo/sandbox/permalink/web/WEB-INF/templates/commonViewParams.xhtml
new file mode 100644
index 0000000..5067c68
--- /dev/null
+++ b/jsf-demo/sandbox/permalink/web/WEB-INF/templates/commonViewParams.xhtml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2009-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<ui:composition xmlns="http://www.w3.org/1999/xhtml"
+                xmlns:ui="http://java.sun.com/jsf/facelets"
+                xmlns:f="http://java.sun.com/jsf/core">
+
+    <f:viewParam name="page" value="#{blog.page}"/>
+    <f:viewParam name="q" value="#{blog.searchString}"/>
+
+</ui:composition>
diff --git a/jsf-demo/sandbox/permalink/web/WEB-INF/templates/entryContent.xhtml b/jsf-demo/sandbox/permalink/web/WEB-INF/templates/entryContent.xhtml
new file mode 100644
index 0000000..eb69ab4
--- /dev/null
+++ b/jsf-demo/sandbox/permalink/web/WEB-INF/templates/entryContent.xhtml
@@ -0,0 +1,93 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2009-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<ui:composition xmlns="http://www.w3.org/1999/xhtml"
+                xmlns:ui="http://java.sun.com/jsf/facelets"
+                xmlns:c="http://java.sun.com/jsp/jstl/core"
+                xmlns:f="http://java.sun.com/jsf/core"
+                xmlns:h="http://java.sun.com/jsf/html">
+
+    <div class="post">
+        <div class="post-title">
+            <h2 id="entry-#{_entry.id}">#{_entry.title}</h2>
+
+            <h3>
+                Posted by #{_entry.author}
+                on
+                <h:outputText value="#{_entry.postDate}">
+                    <f:convertDateTime type="date" dateStyle="long"/>
+                </h:outputText>
+                at
+                <h:outputText value="#{_entry.postDate}">
+                    <f:convertDateTime type="time" timeStyle="short"/>
+                </h:outputText>
+                in
+                <h:link outcome="category" value="#{_entry.category}">
+                    <f:param name="name" value="#{_entry.category}"/>
+                </h:link>
+            </h3>
+        </div>
+        <div>
+            <p>#{_entry.body}</p>
+        </div>
+        <div>
+            <c:if test="#{view.viewId != '/entry.xhtml'}">
+                <h:link outcome="entry" value="View Entry"
+                        includeViewParams="true"
+                        title="View this entry without losing your current browsing state.">
+                <f:param name="id" value="#{_entry.id}"/>
+                </h:link>
+                <span style="font-size: smaller;">|</span>
+            </c:if>
+            <h:link outcome="entry" value="Permalink"
+                    title="A bookmarkable link for this entry."
+                  >
+                <f:param name="id" value="#{_entry.id}"/>
+            </h:link>
+        </div>
+        <c:if test="#{view.viewId == '/entry.xhtml'}">
+            <ui:include src="comments.xhtml"/>
+        </c:if>
+    </div>
+
+</ui:composition>
diff --git a/jsf-demo/sandbox/permalink/web/WEB-INF/templates/entryList.xhtml b/jsf-demo/sandbox/permalink/web/WEB-INF/templates/entryList.xhtml
new file mode 100644
index 0000000..1992921
--- /dev/null
+++ b/jsf-demo/sandbox/permalink/web/WEB-INF/templates/entryList.xhtml
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2009-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<ui:composition xmlns="http://www.w3.org/1999/xhtml"
+                xmlns:ui="http://java.sun.com/jsf/facelets"
+                xmlns:c="http://java.sun.com/jsp/jstl/core"
+                xmlns:fn="http://java.sun.com/jsp/jstl/functions"
+                xmlns:f="http://java.sun.com/jsf/core"
+                xmlns:h="http://java.sun.com/jsf/html">
+
+    <c:if test="#{view.viewId == '/category.xhtml'}">
+        <div class="category">
+            <ui:remove><span>#{not empty blog.category ? fn:concat('Category: ', blog.category) : 'INVALID CATEGORY!'}</span>
+            </ui:remove>
+            <span>#{not empty blog.category ? 'Category: ' : ''}#{not empty blog.category ? blog.category : 'INVALID CATEGORY!'}</span>
+        </div>
+    </c:if>
+    <ui:repeat var="_entry" value="#{blog.entriesForPage}">
+        <ui:include src="entryContent.xhtml"/>
+    </ui:repeat>
+    <div>
+        ««
+        <h:link value="First Page" disabled="#{not blog.previousPageAvailable}"
+                includeViewParams="true">
+            <f:param name="page" disable="true"/>
+        </h:link>
+        «
+        <h:link value="Newer Entries"
+                disabled="#{not blog.previousPageAvailable}"
+                includeViewParams="true">
+            <f:param name="page" value="#{blog.previousPage}"/>
+        </h:link>
+        <span style="font-size: smaller;">–</span>
+        <h:link outcome="#{view.viewId}" value="Older Entries"
+                disabled="#{not blog.nextPageAvailable}"
+                includeViewParams="true">
+            <f:param name="page" value="#{blog.nextPage}"/>
+        </h:link>
+        »
+    </div>
+
+</ui:composition>
diff --git a/jsf-demo/sandbox/permalink/web/WEB-INF/templates/otherCategories.xhtml b/jsf-demo/sandbox/permalink/web/WEB-INF/templates/otherCategories.xhtml
new file mode 100644
index 0000000..9f12bc8
--- /dev/null
+++ b/jsf-demo/sandbox/permalink/web/WEB-INF/templates/otherCategories.xhtml
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2009-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<ui:composition xmlns="http://www.w3.org/1999/xhtml"
+                xmlns:ui="http://java.sun.com/jsf/facelets"
+                xmlns:f="http://java.sun.com/jsf/core"
+                xmlns:h="http://java.sun.com/jsf/html">
+
+    <h2>Other Categories</h2>
+    <ul>
+        <ui:repeat var="_category" value="#{blog.otherCategories}">
+            <li>
+                <h:link outcome="category" value="#{_category}">
+                    <f:param name="name" value="#{_category}"/>
+                </h:link>
+            </li>
+        </ui:repeat>
+    </ul>
+
+</ui:composition>
diff --git a/jsf-demo/sandbox/permalink/web/WEB-INF/templates/page.xhtml b/jsf-demo/sandbox/permalink/web/WEB-INF/templates/page.xhtml
new file mode 100644
index 0000000..9746e26
--- /dev/null
+++ b/jsf-demo/sandbox/permalink/web/WEB-INF/templates/page.xhtml
@@ -0,0 +1,112 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2009-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:h="http://java.sun.com/jsf/html">
+<f:view>
+    <ui:insert name="viewMetadata"/>
+    <h:head>
+        <title>The Aquarium</title>
+        
+    </h:head>
+    <body>
+    <div id="header">
+        <div>
+            <h1>
+                <h:link outcome="home">The Aquarium</h:link>
+            </h1>
+            <p>A blog about a certain fish in the Java EE tank</p>
+        </div>
+    </div>
+    <div id="search">
+        <div>
+            <a id="rss-link"
+               href="http://blogs.sun.com/theaquarium/feed/entries/rss"><strong>Subscribe to the RSS Feed</strong></a>
+            <a id="technorati-link"
+               href="http://technorati.com/faves?add=http://blogs.sun.com/theaquarium"><strong>Add to your Favorites</strong></a>
+            <h:form id="search" prependId="false">
+                <div>
+                    <label for="q">Search</label>
+                    <h:inputText id="q" value="#{blog.searchString}"/>
+                    <h:commandButton id="s" action="#{blog.search}"
+                                     image="/img/search.png" title="Search"/>
+                </div>
+            </h:form>
+        </div>
+    </div>
+    <div id="wrapper">
+        <div id="content">
+            <h:messages id="messages" globalOnly="true"/>
+            <ui:insert name="content">
+                <ui:include src="entryList.xhtml"/>
+            </ui:insert>
+        </div>
+        <ul id="sidebar">
+            <li>
+                <ui:insert name="categories">
+                    <ui:include src="categories.xhtml"/>
+                </ui:insert>
+            </li>
+            <li>
+                <h2>Blogroll</h2>
+                <ul>
+                    <li><a href="http://blogs.sun.com/theaquarium">The (real) Aquarium</a></li>
+                    <li><a href="http://blogs.steeplesoft.com">Coming Up for Air</a></li>
+                    <li><a href="http://weblogs.java.net/blog/edburns">Ed Burn's Blog</a></li>
+                    <li><a href="http://blogs.sun.com/rlubke">Ryan Lubke's Blog</a></li>
+                    <li><a href="http://in.relation.to">In Relation To...</a>
+                    </li>
+                </ul>
+            </li>
+        </ul>
+    </div>
+    <div id="footer">
+        <p id="blog-name">Permalink JSF Demo</p>
+    </div>
+    </body>
+</f:view>
+</html>
diff --git a/jsf-demo/sandbox/permalink/web/WEB-INF/templates/singleEntry.xhtml b/jsf-demo/sandbox/permalink/web/WEB-INF/templates/singleEntry.xhtml
new file mode 100644
index 0000000..e6e169a
--- /dev/null
+++ b/jsf-demo/sandbox/permalink/web/WEB-INF/templates/singleEntry.xhtml
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2009-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<ui:composition xmlns="http://www.w3.org/1999/xhtml"
+                xmlns:ui="http://java.sun.com/jsf/facelets"
+                xmlns:f="http://java.sun.com/jsf/core"
+                xmlns:h="http://java.sun.com/jsf/html">
+
+    <ui:remove><!-- The check for phase prevents a "ghost" form submit --></ui:remove>
+    <h:panelGroup
+          rendered="#{facesContext.currentPhaseId.ordinal == 6 and empty blog.entry}">
+        <p>Sorry, no post exists with that identifier.</p>
+    </h:panelGroup>
+    <h:panelGroup
+          rendered="#{not empty blog.entry or facesContext.currentPhaseId.ordinal != 6}">
+        <ui:include src="entryContent.xhtml">
+            <ui:param name="_entry" value="#{blog.entry}"/>
+        </ui:include>
+    </h:panelGroup>
+    <div class="post-navigation">
+        <h:panelGroup rendered="#{not empty blog.category}">
+            <h:button outcome="category" value="Back to #{blog.category}"
+                      fragment="entry-#{blog.entry.id}"
+                      includeViewParams="true"/>
+        </h:panelGroup>
+        <h:panelGroup rendered="#{empty blog.category}">
+            <h:button outcome="home" value="Back to main page"
+                      fragment="entry-#{blog.entry.id}"
+                      includeViewParams="true"/>
+        </h:panelGroup>
+        <h:button outcome="entry" value="Hide comments" disabled="true"
+                  includeViewParams="true">
+            <f:param name="comments" value="false"/>
+        </h:button>
+    </div>
+
+</ui:composition>
diff --git a/jsf-demo/sandbox/permalink/web/WEB-INF/web.xml b/jsf-demo/sandbox/permalink/web/WEB-INF/web.xml
new file mode 100644
index 0000000..0a56143
--- /dev/null
+++ b/jsf-demo/sandbox/permalink/web/WEB-INF/web.xml
@@ -0,0 +1,76 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2009-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<web-app version="2.5"
+         xmlns="http://java.sun.com/xml/ns/javaee"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
+
+    <display-name>JavaServer Faces "Permalink" Sample Application</display-name>
+    <description>
+        JavaServer Faces "Permalink" Sample Application
+    </description>
+
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>Development</param-value>
+    </context-param>
+
+
+    <!-- Faces Servlet -->
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+    </servlet>
+
+    <!-- Faces Servlet Mapping -->
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>*.xhtml</url-pattern>
+    </servlet-mapping>
+
+    <welcome-file-list>
+        <welcome-file>home.xhtml</welcome-file>
+    </welcome-file-list>
+
+</web-app>
diff --git a/jsf-demo/sandbox/permalink/web/category.xhtml b/jsf-demo/sandbox/permalink/web/category.xhtml
new file mode 100644
index 0000000..d63f5a9
--- /dev/null
+++ b/jsf-demo/sandbox/permalink/web/category.xhtml
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2009-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<ui:composition xmlns="http://www.w3.org/1999/xhtml"
+    xmlns:ui="http://java.sun.com/jsf/facelets"
+    xmlns:f="http://java.sun.com/jsf/core"
+    template="/WEB-INF/templates/page.xhtml">
+    <ui:define name="viewMetadata">
+        <f:metadata>
+            <f:viewParam name="name" value="#{blog.category}"/>
+            <ui:include src="/WEB-INF/templates/commonViewParams.xhtml"/>
+            <f:event type="preRenderView" listener="#{blog.loadLatestEntriesInCategory}"/>
+        </f:metadata>
+    </ui:define>
+    <ui:define name="categories">
+        <ui:include src="/WEB-INF/templates/otherCategories.xhtml"/>
+    </ui:define>
+</ui:composition>
diff --git a/jsf-demo/sandbox/permalink/web/entry.xhtml b/jsf-demo/sandbox/permalink/web/entry.xhtml
new file mode 100644
index 0000000..94c5461
--- /dev/null
+++ b/jsf-demo/sandbox/permalink/web/entry.xhtml
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2009-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<ui:composition xmlns="http://www.w3.org/1999/xhtml"
+    xmlns:ui="http://java.sun.com/jsf/facelets"
+    xmlns:f="http://java.sun.com/jsf/core"
+    template="/WEB-INF/templates/page.xhtml">
+    <ui:define name="viewMetadata">
+        <f:metadata>
+            <f:viewParam name="id" value="#{blog.entryId}"/>
+            <f:viewParam name="category" value="#{blog.category}"/>
+            <ui:include src="/WEB-INF/templates/commonViewParams.xhtml"/>
+            <f:event type="preRenderView" listener="#{blog.loadEntry}"/>
+        </f:metadata>
+    </ui:define>
+    <ui:define name="content">
+        <ui:include src="/WEB-INF/templates/singleEntry.xhtml"/>
+    </ui:define>
+</ui:composition>
diff --git a/jsf-demo/sandbox/permalink/web/home.xhtml b/jsf-demo/sandbox/permalink/web/home.xhtml
new file mode 100644
index 0000000..5d6ce1b
--- /dev/null
+++ b/jsf-demo/sandbox/permalink/web/home.xhtml
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2009-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<ui:composition xmlns="http://www.w3.org/1999/xhtml"
+    xmlns:ui="http://java.sun.com/jsf/facelets"
+    xmlns:f="http://java.sun.com/jsf/core"
+    template="/WEB-INF/templates/page.xhtml">
+    <ui:define name="viewMetadata">
+        <f:metadata>
+            <ui:include src="/WEB-INF/templates/commonViewParams.xhtml"/>
+            <f:event type="preRenderView" listener="#{blog.loadLatestEntries}"/>
+        </f:metadata>
+    </ui:define>
+</ui:composition>
diff --git a/jsf-demo/sandbox/pom.xml b/jsf-demo/sandbox/pom.xml
new file mode 100644
index 0000000..cd9ac42
--- /dev/null
+++ b/jsf-demo/sandbox/pom.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <groupId>com.sun.faces.demo.sandbox</groupId>
+    <artifactId>sandbox-demos</artifactId>
+    <packaging>pom</packaging>
+    <version>2.0-SNAPSHOT</version>
+    <name>Mojarra Sandbox JSF Demos</name>
+    <modules>
+        <module>ajax-queue</module>
+        <module>ajax-request</module>
+        <module>ajax-tag</module>
+        <module>cc-metadata</module>
+<!--        <module>custom-tag</module>-->
+<!--        <module>ezcomp00</module>-->
+        <module>ezcomp02</module>
+<!--        <module>ezcomp03</module>-->
+        <module>groovy-demo</module>
+        <module>head-body</module>
+<!--        <module>stock</module>-->
+        <module>tree-visit</module>
+    </modules>
+</project>
diff --git a/jsf-demo/sandbox/rlc/pom.xml b/jsf-demo/sandbox/rlc/pom.xml
new file mode 100755
index 0000000..97f0623
--- /dev/null
+++ b/jsf-demo/sandbox/rlc/pom.xml
@@ -0,0 +1,100 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <packaging>war</packaging>
+    <version>1.0-SNAPSHOT</version>
+    <url>http://maven.apache.org</url>
+    <groupId>org.glassfish</groupId>
+    <artifactId>rlc</artifactId>
+
+    <name>Resource Library Contracts</name>
+
+    <dependencies>
+        <dependency>
+            <groupId>javax</groupId>
+            <artifactId>javaee-web-api</artifactId>
+            <version>6.0</version>
+            <!--<scope>provided</scope>-->
+        </dependency>
+        <dependency>
+            <groupId>javax.faces</groupId>
+            <artifactId>javax.faces-api</artifactId>
+            <version>2.2-SNAPSHOT</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.glassfish</groupId>
+            <artifactId>javax.faces</artifactId>
+            <version>2.2.3-SNAPSHOT</version>
+            <scope>provided</scope>
+        </dependency>
+    </dependencies>
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>2.3.2</version>
+                <configuration>
+                    <source>1.6</source>
+                    <target>1.6</target>
+                </configuration>
+            </plugin>
+           <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-war-plugin</artifactId>
+                <version>2.1.1</version>
+                <configuration>
+                    <failOnMissingWebXml>false</failOnMissingWebXml>
+                    <contextPath>/</contextPath>
+                </configuration>
+            </plugin>
+        </plugins>
+        <finalName>rlc</finalName>
+    </build>
+    <properties>
+        <netbeans.hint.deploy.server>gfv3ee6</netbeans.hint.deploy.server>
+    </properties>
+</project>
diff --git a/jsf-demo/sandbox/rlc/src/main/webapp/WEB-INF/web.xml b/jsf-demo/sandbox/rlc/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..56985b1
--- /dev/null
+++ b/jsf-demo/sandbox/rlc/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2011 - 2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    http://glassfish.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<web-app version="3.0"
+         xmlns="http://java.sun.com/xml/ns/javaee"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+
+    <display-name>basic-ezcomp</display-name>
+    <description>
+        JavaServer Faces 2.2 Resource Library Contracts Demo 
+    </description>
+
+    <!-- Context Init Params -->
+
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>server</param-value>
+    </context-param>
+
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>Development</param-value>
+    </context-param>
+
+    <!-- Servlet Definitions/Mappings -->
+
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+    </servlet>
+
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>*.jsf</url-pattern>
+    </servlet-mapping>
+
+    <!-- Welcome File Configuration -->
+
+    <welcome-file-list>
+        <welcome-file>index.html</welcome-file>
+    </welcome-file-list>
+    
+</web-app>
+
diff --git a/jsf-demo/sandbox/rlc/src/main/webapp/contracts/contract1/css/style.css b/jsf-demo/sandbox/rlc/src/main/webapp/contracts/contract1/css/style.css
new file mode 100644
index 0000000..d0befbf
--- /dev/null
+++ b/jsf-demo/sandbox/rlc/src/main/webapp/contracts/contract1/css/style.css
@@ -0,0 +1,82 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+.title-panel {
+    background-image: url('Space1.jpg.jsf');
+    height: 80px;
+    width: 100%;
+}
+
+.title-panel-text {
+    color: white;
+    font-family: 'Georgia','Times New Roman','times',serif;
+    font-size: 24px;
+    font-weight: bold;
+}
+
+.title-panel-subtext {
+    color: white;
+    font-family: 'Georgia','Times New Roman','times',serif;
+    font-size: 16px;
+    font-style: italic
+}
+
+.main-body {
+    background-color: #6495ed
+}
+
+.main-div {
+    border:4px solid #a1a1a1;
+    padding:10px 40px; 
+    background:#dddddd;
+    text-align: center;
+}
+
+.sample-div {
+    border:4px solid #a1a1a1;
+    padding:10px 40px; 
+    text-align: center;
+}
+
+.sample-title {
+    font-size: 18px;
+    font-weight: bold;
+}
+    
diff --git a/jsf-demo/sandbox/rlc/src/main/webapp/contracts/contract1/template.xhtml b/jsf-demo/sandbox/rlc/src/main/webapp/contracts/contract1/template.xhtml
new file mode 100644
index 0000000..8632bf3
--- /dev/null
+++ b/jsf-demo/sandbox/rlc/src/main/webapp/contracts/contract1/template.xhtml
@@ -0,0 +1,69 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://xmlns.jcp.org/jsf/html"
+      xmlns:ui="http://xmlns.jcp.org/jsf/facelets">
+
+      <h:head>
+        <h:outputStylesheet name="/css/style.css"/>
+      </h:head>
+
+      <body class="main-body">
+ 
+         <ui:insert name="main-content"/>
+         <br/>
+         <br/>
+
+      <fieldset class="sample-div">
+        <legend class="sample-title">Sample1</legend>
+        <figure>
+            <img src="images/sample1.jpg"/>
+        </figure>
+      </fieldset>
+
+      </body>
+
+</html>
diff --git a/jsf-demo/sandbox/rlc/src/main/webapp/contracts/contract2/css/style.css b/jsf-demo/sandbox/rlc/src/main/webapp/contracts/contract2/css/style.css
new file mode 100644
index 0000000..281e372
--- /dev/null
+++ b/jsf-demo/sandbox/rlc/src/main/webapp/contracts/contract2/css/style.css
@@ -0,0 +1,82 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+.title-panel {
+    background-image: url('Space1.jpg.jsf');
+    height: 80px;
+    width: 100%;
+}
+
+.title-panel-text {
+    color: white;
+    font-family: 'Georgia','Times New Roman','times',serif;
+    font-size: 24px;
+    font-weight: bold;
+}
+
+.title-panel-subtext {
+    color: white;
+    font-family: 'Georgia','Times New Roman','times',serif;
+    font-size: 16px;
+    font-style: italic
+}
+
+.main-body {
+    background-color: #f0f8ff
+}
+
+.main-div {
+    border:4px solid #a1a1a1;
+    padding:10px 40px;
+    background:#dddddd;
+    text-align: center;
+}
+
+.sample-div {
+    border:4px solid #a1a1a1;
+    padding:10px 40px; 
+    text-align: center;
+}
+
+.sample-title {
+    font-size: 18px;
+    font-weight: bold;
+}
+    
diff --git a/jsf-demo/sandbox/rlc/src/main/webapp/contracts/contract2/template.xhtml b/jsf-demo/sandbox/rlc/src/main/webapp/contracts/contract2/template.xhtml
new file mode 100644
index 0000000..f95586e
--- /dev/null
+++ b/jsf-demo/sandbox/rlc/src/main/webapp/contracts/contract2/template.xhtml
@@ -0,0 +1,69 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://xmlns.jcp.org/jsf/html"
+      xmlns:ui="http://xmlns.jcp.org/jsf/facelets">
+
+      <h:head>
+        <h:outputStylesheet name="/css/style.css"/>
+      </h:head>
+
+      <body class="main-body">
+ 
+         <ui:insert name="main-content"/>
+         <br/>
+         <br/>
+
+      <fieldset class="sample-div">
+        <legend class="sample-title">Sample2</legend>
+        <figure>
+            <img src="images/sample2.png"/>
+        </figure>
+      </fieldset>
+
+      </body>
+
+</html>
diff --git a/jsf-demo/sandbox/rlc/src/main/webapp/contracts/contract3/css/style.css b/jsf-demo/sandbox/rlc/src/main/webapp/contracts/contract3/css/style.css
new file mode 100644
index 0000000..e2b46b7
--- /dev/null
+++ b/jsf-demo/sandbox/rlc/src/main/webapp/contracts/contract3/css/style.css
@@ -0,0 +1,82 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+.title-panel {
+    background-image: url('Space1.jpg.jsf');
+    height: 80px;
+    width: 100%;
+}
+
+.title-panel-text {
+    color: white;
+    font-family: 'Georgia','Times New Roman','times',serif;
+    font-size: 24px;
+    font-weight: bold;
+}
+
+.title-panel-subtext {
+    color: white;
+    font-family: 'Georgia','Times New Roman','times',serif;
+    font-size: 16px;
+    font-style: italic
+}
+
+.main-body {
+    background-color: #bdb76b
+}
+
+.main-div {
+    border:4px solid #a1a1a1;
+    padding:10px 40px;
+    background:#dddddd;
+    text-align: center;
+}
+
+.sample-div {
+    border:4px solid #a1a1a1;
+    padding:10px 40px; 
+    text-align: center;
+}
+
+.sample-title {
+    font-size: 18px;
+    font-weight: bold;
+}
+    
diff --git a/jsf-demo/sandbox/rlc/src/main/webapp/contracts/contract3/template.xhtml b/jsf-demo/sandbox/rlc/src/main/webapp/contracts/contract3/template.xhtml
new file mode 100644
index 0000000..8c6d7a2
--- /dev/null
+++ b/jsf-demo/sandbox/rlc/src/main/webapp/contracts/contract3/template.xhtml
@@ -0,0 +1,69 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://xmlns.jcp.org/jsf/html"
+      xmlns:ui="http://xmlns.jcp.org/jsf/facelets">
+
+      <h:head>
+        <h:outputStylesheet name="/css/style.css"/>
+      </h:head>
+
+      <body class="main-body">
+ 
+         <ui:insert name="main-content"/>
+         <br/>
+         <br/>
+
+      <fieldset class="sample-div">
+        <legend class="sample-title">Sample3</legend>
+        <figure>
+            <img src="images/sample3.png"/>
+        </figure>
+      </fieldset>
+
+      </body>
+
+</html>
diff --git a/jsf-demo/sandbox/rlc/src/main/webapp/contracts/contract4/css/style.css b/jsf-demo/sandbox/rlc/src/main/webapp/contracts/contract4/css/style.css
new file mode 100644
index 0000000..d0ba3e9
--- /dev/null
+++ b/jsf-demo/sandbox/rlc/src/main/webapp/contracts/contract4/css/style.css
@@ -0,0 +1,82 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+.title-panel {
+    background-image: url('Space1.jpg.jsf');
+    height: 80px;
+    width: 100%;
+}
+
+.title-panel-text {
+    color: white;
+    font-family: 'Georgia','Times New Roman','times',serif;
+    font-size: 24px;
+    font-weight: bold;
+}
+
+.title-panel-subtext {
+    color: white;
+    font-family: 'Georgia','Times New Roman','times',serif;
+    font-size: 16px;
+    font-style: italic
+}
+
+.main-body {
+    background-color: #d3d3d3
+}
+
+.main-div {
+    border:4px solid #a1a1a1;
+    padding:10px 40px;
+    background:#dddddd;
+    text-align: center;
+}
+
+.sample-div {
+    border:4px solid #a1a1a1;
+    padding:10px 40px; 
+    text-align: center;
+}
+
+.sample-title {
+    font-size: 18px;
+    font-weight: bold;
+}
+    
diff --git a/jsf-demo/sandbox/rlc/src/main/webapp/contracts/contract4/template.xhtml b/jsf-demo/sandbox/rlc/src/main/webapp/contracts/contract4/template.xhtml
new file mode 100644
index 0000000..445991a
--- /dev/null
+++ b/jsf-demo/sandbox/rlc/src/main/webapp/contracts/contract4/template.xhtml
@@ -0,0 +1,69 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://xmlns.jcp.org/jsf/html"
+      xmlns:ui="http://xmlns.jcp.org/jsf/facelets">
+
+      <h:head>
+        <h:outputStylesheet name="/css/style.css"/>
+      </h:head>
+
+      <body class="main-body">
+ 
+         <ui:insert name="main-content"/>
+         <br/>
+         <br/>
+
+      <fieldset class="sample-div">
+        <legend class="sample-title">Sample4</legend>
+        <figure>
+            <img src="images/sample4.png"/>
+        </figure>
+      </fieldset>
+
+      </body>
+
+</html>
diff --git a/jsf-demo/sandbox/rlc/src/main/webapp/images/sample1.jpg b/jsf-demo/sandbox/rlc/src/main/webapp/images/sample1.jpg
new file mode 100644
index 0000000..d79bc9b
Binary files /dev/null and b/jsf-demo/sandbox/rlc/src/main/webapp/images/sample1.jpg differ
diff --git a/jsf-demo/sandbox/rlc/src/main/webapp/images/sample2.png b/jsf-demo/sandbox/rlc/src/main/webapp/images/sample2.png
new file mode 100644
index 0000000..c9b925e
Binary files /dev/null and b/jsf-demo/sandbox/rlc/src/main/webapp/images/sample2.png differ
diff --git a/jsf-demo/sandbox/rlc/src/main/webapp/images/sample3.png b/jsf-demo/sandbox/rlc/src/main/webapp/images/sample3.png
new file mode 100644
index 0000000..250d6fb
Binary files /dev/null and b/jsf-demo/sandbox/rlc/src/main/webapp/images/sample3.png differ
diff --git a/jsf-demo/sandbox/rlc/src/main/webapp/images/sample4.png b/jsf-demo/sandbox/rlc/src/main/webapp/images/sample4.png
new file mode 100644
index 0000000..2d5dc21
Binary files /dev/null and b/jsf-demo/sandbox/rlc/src/main/webapp/images/sample4.png differ
diff --git a/jsf-demo/sandbox/rlc/src/main/webapp/index.xhtml b/jsf-demo/sandbox/rlc/src/main/webapp/index.xhtml
new file mode 100644
index 0000000..9864b72
--- /dev/null
+++ b/jsf-demo/sandbox/rlc/src/main/webapp/index.xhtml
@@ -0,0 +1,100 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://xmlns.jcp.org/jsf/html"
+      xmlns:f="http://xmlns.jcp.org/jsf/core"
+      xmlns:jsf="http://xmlns.jcp.org/jsf"
+      xmlns:ui="http://xmlns.jcp.org/jsf/facelets">
+
+      <h:head>
+        <h:outputStylesheet name="/css/style.css"/>
+      </h:head>
+
+      <body class="main-body">
+
+        <f:view contracts="#{param['template']}">
+
+           <ui:composition template="/template.xhtml">
+
+               <ui:define name="main-content">
+                   <div class="title-panel">
+                      <div class="title-panel-text">
+                         HTML5 Template Viewer
+                      </div>
+                      <br/>
+                      <br/>
+                      <div class="title-panel-subtext">
+                         Powered By JavaServer Faces 2.2 
+                      </div>
+                   </div>
+                   <h:form>
+                    <nav class="main-div">
+                       <h:link outcome="index" value="Sample1">
+                          <f:param name="template" value="contract1"/>
+                       </h:link>
+                       |
+                       <h:link outcome="index" value="Sample2">
+                          <f:param name="template" value="contract2"/>
+                       </h:link>
+                       |
+                       <h:link outcome="index" value="Sample3">
+                          <f:param name="template" value="contract3"/>
+                       </h:link>
+                       |
+                       <h:link outcome="index" value="Sample4">
+                          <f:param name="template" value="contract4"/>
+                       </h:link>
+                    </nav>
+                 </h:form>
+             </ui:define>
+
+          </ui:composition>
+
+        </f:view>
+
+      </body>
+
+</html>
diff --git a/jsf-demo/sandbox/rlc/src/main/webapp/resources/css/Space1.jpg b/jsf-demo/sandbox/rlc/src/main/webapp/resources/css/Space1.jpg
new file mode 100644
index 0000000..4a3c13c
Binary files /dev/null and b/jsf-demo/sandbox/rlc/src/main/webapp/resources/css/Space1.jpg differ
diff --git a/jsf-demo/sandbox/rlc/src/main/webapp/resources/css/style.css b/jsf-demo/sandbox/rlc/src/main/webapp/resources/css/style.css
new file mode 100644
index 0000000..bc95c9e
--- /dev/null
+++ b/jsf-demo/sandbox/rlc/src/main/webapp/resources/css/style.css
@@ -0,0 +1,75 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+.title-panel {
+    background-image: url('Space1.jpg.jsf');
+    height: 80px;
+    width: 100%;
+}
+
+.title-panel-text {
+    color: white;
+    font-family: 'Georgia','Times New Roman','times',serif;
+    font-size: 24px;
+    font-weight: bold;
+}
+
+.title-panel-subtext {
+    color: white;
+    font-family: 'Georgia','Times New Roman','times',serif;
+    font-size: 16px;
+    font-style: italic
+}
+
+.main-body {
+    background-color: #f0f8ff
+}
+
+.main-div {
+    border:4px solid #a1a1a1;
+    padding:20px 40px; 
+    background:#dddddd;
+    text-align: center;
+}
+
+.main-div-text {
+    font-weight: bold;
+}
+
diff --git a/jsf-demo/sandbox/rlc/src/main/webapp/template.xhtml b/jsf-demo/sandbox/rlc/src/main/webapp/template.xhtml
new file mode 100644
index 0000000..a7f32db
--- /dev/null
+++ b/jsf-demo/sandbox/rlc/src/main/webapp/template.xhtml
@@ -0,0 +1,62 @@
+<?xml version='1.0' encoding='UTF-8' ?> 
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:h="http://java.sun.com/jsf/html">
+
+      <h:head>
+         <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+         <h:outputStylesheet name="/css/style.css" />
+      </h:head>
+
+      <body class="main-body">
+
+         <ui:insert name="main-content"/>
+
+      </body>
+
+</html>
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/.project b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/.project
new file mode 100644
index 0000000..79268ae
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/.project
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>scrumtoys2009EclipseProject</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+	</buildSpec>
+	<natures>
+	</natures>
+</projectDescription>
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/README.txt b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/README.txt
new file mode 100644
index 0000000..1f1e461
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/README.txt
@@ -0,0 +1,32 @@
+IMPORTANT DEPLOYMENT INFORMATION
+================================
+
+If you are building and deploying this sample from the command line, it
+is absolutely vital that you run the command 
+
+./asadmin start-database
+
+from the glassfish bin directory *before* deploying this application.
+
+If you are building and deploying the sample from NetBeans, and are
+using the NetBeans Glassfish V3 integration module to start the
+container fromthe "Servers" tab, then the database is automatically
+started when you start the container.
+
+Note to sample developers
+=========================
+
+The actual source code for this sample is maintained in subversion 
+under the repository
+ <https://mojarra.dev.java.net/svn/mojarra/branches/scrumtoys-glassfishv3-20090506>.
+
+The source code checked in here under CVS is arrived at by checking
+out the above repo and running 
+
+ant -f blueprints-deploy-sample.xml -Dblueprint.sample=<sample_dir>
+
+where <sample_dir> is the local workarea to which the sample should be copied,
+blueprints fashion.
+
+The above SVN url also resolves to a Maven project, which you can use if
+you so desire.
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/blueprints-build.xml b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/blueprints-build.xml
new file mode 100644
index 0000000..6a5e020
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/blueprints-build.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project name="scrumtoys" default="default" basedir=".">
+    <property name="is.war.module" value="true"/>
+    <property name="javadoc.packagenames" value="jsf2"/>
+    <import file="../../../../bp-project/main.xml"/>
+
+    <target name="all" depends="default,deploy,run"/>
+
+    <target name="-post-compile">
+
+      <echo message="copying resources to ${basedir}/build/classes" />
+      <copy todir="${basedir}/build/classes" overwrite="true">
+
+        <fileset dir="src/resources">
+          <include name="**/*.*" />
+        </fileset>
+      </copy>
+
+    </target>
+
+</project>
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/blueprints-deploy-sample.xml b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/blueprints-deploy-sample.xml
new file mode 100644
index 0000000..36078ba
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/blueprints-deploy-sample.xml
@@ -0,0 +1,110 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project name="scrumtoys" default="default" basedir=".">
+
+  <!-- ant -f blueprints-deploy-sample.xml -Dblueprint.sample=/Users/edburns/Documents/Projects/JavaEE/workareas/glassfish-samples/ws/javaee6/web/jsf/scrumtoys -->
+
+
+  <target name="verify.preconditions" unless="blueprint.sample">
+
+    <fail>
+Property blueprint.sample must be set to the directory to which the sample
+must be copied, in blueprints style.
+    </fail>
+
+  </target>
+
+  <target name="default" depends="verify.preconditions">
+
+    <property name="target" value="${blueprint.sample}" />
+    <echo message="Package this sample as a blueprints sample to ${target}"/>
+    <mkdir dir="${target}/src/java" />
+    <mkdir dir="${target}/src/resources" />
+    <mkdir dir="${target}/test/src/java" />
+    <mkdir dir="${target}/web" />
+
+    <copy includeEmptyDirs="false" todir="${target}/src/java">
+      <fileset dir="src/main/java">
+        <include name="**/*.*" />
+      </fileset>
+    </copy>
+    <copy includeEmptyDirs="false" todir="${target}/web">
+      <fileset dir="src/main/webapp">
+        <include name="**/*.*" />
+      </fileset>
+    </copy>
+    <copy includeEmptyDirs="true" todir="${target}/src/resources">
+      <fileset dir="src/main/resources">
+        <include name="**/*.*" />
+      </fileset>
+    </copy>
+    <copy file="${basedir}/blueprints-build.xml"
+          tofile="${target}/build.xml" />
+
+    <copy file="${basedir}/blueprints-test-build.xml"
+          tofile="${target}/test/build.xml" />
+    <copy includeEmptyDirs="true" todir="${target}/test/src/java">
+      <fileset dir="src/test/java">
+        <include name="**/*.*" />
+      </fileset>
+    </copy>
+
+   
+
+  </target>
+
+  <target name="clean" depends="verify.preconditions">
+
+    <property name="target"
+              value="${blueprint.sample}" />
+    <echo message="Clean the blueprints version of the sample in ${target}"/>
+    <delete includeEmptyDirs="true">
+      <fileset dir="${target}" includes="**/*" 
+               excludes="CVS/*"/>
+    </delete>
+    
+
+  </target>
+
+</project>
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/blueprints-test-build.xml b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/blueprints-test-build.xml
new file mode 100644
index 0000000..2b68d3c
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/blueprints-test-build.xml
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!-- Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.-->
+
+<project name="scrumtoys-test" default="runtest" basedir=".">
+
+    <import file="../../../../../bp-project/test.xml"/>
+
+    <target name="runtest" depends="compile">
+        <echo message="Running the sample application..."/>
+        <java classname="org.junit.runner.JUnitCore" fork="on">
+            <arg value="jsf2.ScrumToysTest"/>
+            <classpath refid="classpath"/>
+        </java>
+    </target>
+
+</project>
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/pom.xml b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/pom.xml
new file mode 100644
index 0000000..77746d7
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/pom.xml
@@ -0,0 +1,210 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+    <modelVersion>4.0.0</modelVersion>
+    <groupId>com.sun.faces</groupId>
+    <artifactId>jsf-scrumtoys</artifactId>
+    <packaging>war</packaging>
+    <name>jsf-scrumtoys</name>
+    <url>https://mojarra.dev.java.net/</url>
+    <description>ScrumToys sample app</description>
+    <version>0.1</version>
+
+    <build>
+        <defaultGoal>install</defaultGoal>
+        <sourceDirectory>src/main/java</sourceDirectory>
+        <finalName>scrumtoys</finalName>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>2.3.2</version>
+                <configuration>
+                    <source>1.5</source>
+                    <target>1.5</target>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+
+    <repositories>
+        <repository>
+            <snapshots/>
+            <id>ibiblio.mirrors</id>
+            <url>http://mirrors.ibiblio.org/pub/mirrors/maven2</url>
+        </repository>
+        <repository>
+            <snapshots/>
+            <id>codehaus</id>
+            <name>codehaus</name>
+            <url>http://repository.codehaus.org</url>
+        </repository>
+        <repository>
+            <id>jboss</id>
+            <url>http://repository.jboss.org/maven2</url>
+        </repository>
+        <repository>
+            <snapshots/>
+            <id>java.net.m2</id>
+            <name>java.net m2 repo</name>
+            <url>http://download.java.net/maven/2</url>
+        </repository>
+    </repositories>
+
+    <dependencies>
+
+        <dependency>
+            <groupId>javax.faces</groupId>
+            <artifactId>javax.faces-api</artifactId>
+            <version>2.2-SNAPSHOT</version>
+            <scope>provided</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>javax</groupId>
+            <artifactId>javaee-api</artifactId>
+            <version>6.0</version>
+            <scope>provided</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>log4j</groupId>
+            <artifactId>log4j</artifactId>
+            <version>1.2.12</version>
+        </dependency>
+
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <version>4.4</version>
+            <scope>test</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>net.sourceforge.htmlunit</groupId>
+            <artifactId>htmlunit</artifactId>
+            <version>2.4</version>
+            <scope>test</scope>
+            <exclusions>
+                <exclusion>
+                    <groupId>javax.xml</groupId>
+                    <artifactId>jsr173</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+
+        <dependency>
+            <groupId>commons-codec</groupId>
+            <artifactId>commons-codec</artifactId>
+            <version>1.3</version>
+            <scope>test</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>commons-httpclient</groupId>
+            <artifactId>commons-httpclient</artifactId>
+            <version>3.1</version>
+            <scope>test</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>commons-logging</groupId>
+            <artifactId>commons-logging</artifactId>
+            <version>1.1.1</version>
+            <scope>test</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>org.w3c.css</groupId>
+            <artifactId>sac</artifactId>
+            <version>1.3</version>
+            <scope>test</scope>
+        </dependency>
+
+    </dependencies>
+    <reporting>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-project-info-reports-plugin</artifactId>
+                <reportSets>
+                    <reportSet/>
+                </reportSets>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                    <source>1.5</source>
+                    <target>1.5</target>
+                </configuration>
+            </plugin>
+        </plugins>
+    </reporting>
+    <profiles>
+        <profile>
+            <id>default</id>
+            <!-- Tests are disabled by default.  See the test profile -->
+            <activation>
+                <activeByDefault>true</activeByDefault>
+            </activation>
+            <properties>
+                <maven.test.skip>true</maven.test.skip>
+            </properties>
+        </profile>
+        <profile>
+            <id>test</id>
+            <!-- To activate this profile, and allow tests to run, do this:
+        mvn -o -Ptest test -->
+        </profile>
+
+    </profiles>
+    <properties>
+        <netbeans.hint.deploy.server>gfv3ee6</netbeans.hint.deploy.server>
+    </properties>
+
+</project>
+
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/docs/index.html.sav b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/docs/index.html.sav
new file mode 100644
index 0000000..b88a3fb
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/docs/index.html.sav
@@ -0,0 +1,178 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html lang="en">
+<head>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+  <title>The JSF 2.0 Complete Sample Application</title>
+  <style type="text/css">
+  body,th,td,p,div,span,a,ul,ul li, ol, ol li, ol li b, dl,h1,h2,h3,h4,h5,h6,li
+  {font-family:geneva,helvetica,arial,"lucida sans",sans-serif; font-size:10pt}
+  h1 {font-size:18pt}
+  h2 {font-size:14pt}
+  h3 {font-size:12pt}
+  code,kbd,tt,pre {font-family:monaco,courier,"courier new";font-size:10pt;color:#666}
+  li {padding-bottom: 8px}
+  p.copy, p.copy a {font-family:geneva,helvetica,arial,"lucida sans",sans-serif; font-size:8pt}
+  p.copy {text-align: center}
+  </style>
+</head>
+<body alink="#333366" bgcolor="#ffffff" link="#594fbf" marginwidth="10"
+ text="#000000" vlink="#1005fb">
+<table border="0" cellpadding="2" cellspacing="4" width="100%">
+  <tbody>
+    <tr>
+      <td align="right" bgcolor="#587993" valign="top"> <font
+ color="#ffffff" size="-1"><b>Java EE 6 SDK</b></font> 
+      </td>
+    </tr>
+  </tbody>
+</table>
+<!---- Don't modify anything above this line, except for the title tag -------->
+<p><a href="../../../../docs/list.html">Samples Main Page<br>
+</a></p>
+<h1>The JSF 2.0 Complete Sample Application</h1>
+<p>
+    This sample application shows the use of many new features in JavaServer Faces 2.0.
+    These features include Facelets (including templating), Ajax, new simplified 
+    Facelets tag library syntax, composite components, implicit navigation, and more.
+    Data is stored and retrieved via JPA.
+</p>
+<h2>Building, Deploying, and Running the Application</h2>
+<p>Perform the following steps to build, deploy, and run the
+application:<br>
+<br>
+</p>
+<ol>
+  <li> Set up your build environment and configure the application
+server with which the build system has to work by following the <a
+ href="../../../../docs/UserREADME.html">
+common build instructions.</a></li>
+  <li><code><i>app_dir</i></code> is the sample application base
+directory:<code><i>samples_install_dir</i>/javaee6/web/jsf/scrumtoys/</code>.</li>
+  <li><code></code><code></code>Change directory to <code><i>app_dir.<br>
+    </i></code></li>
+  <li>Build, deploy, and run the sample application using the <code>all</code>
+target.<code></code></li>
+  <p><code><span style="font-style: italic;">app_dir> </span>ant
+all</code><br>
+  </p>
+  <p>You can replace the <code>ant all</code> command with the
+following set of
+commands:<br>
+  </p>
+  <p><code><span style="font-style: italic;">app_dir> </span>ant
+default</code> compiles and packages the application </p>
+  <p><code><span style="font-style: italic;">app_dir> </span>ant
+deploy</code> deploys it to application server </p>
+  <p><code><span style="font-style: italic;">app_dir> </span>ant
+run</code> runs the test java client </p>
+  <li>Use the target clean to undeploy the sample application and to
+remove the temporary directories such as build and dist.
+    <p><code><span style="font-style: italic;">app_dir> </span>ant
+clean</code><br>
+    </p>
+  </li>
+</ol>
+
+<h2>Building, Deploying, and Running the Application in NetBeans IDE</h2>
+<p>Perform the following steps to build, deploy, and run the application using NetBeans IDE:</p>
+<ol>
+<li> Refer to the <a href="../../../../docs/UserREADME.html"> common build instructions</a> for setting up NetBeans IDE and Java EE 6 SDK.</li>
+<li> In the NetBeans IDE, choose File → Open Project (Ctrl-Shift-O), navigate to the <code><i>samples_install_dir</i>/javaee6/web/jsf/</code> directory, select <code>scrumtoys</code>, and click Open Project.</li>
+<li> In the Projects tab, right click <code>scrumtoys</code> and select Run to build, deploy, and run the project.</li>
+</ol>
+
+<h2>Troubleshooting</h2>
+
+In case of receiving "Error on try to save Project" check if database is up. 
+<br>
+The domains/domain1/log/server.log file may contain the following errors:
+<p>
+<pre>
+[#|2009-05-14T23:23:17.140-0700|SEVERE|glassfish|org.eclipse.persistence.session
+.file:/C:/sdk/glassfish/samples/javaee6/web/jsf/scrumtoys/build/web/WEB-INF/clas
+ses/-scrumtoysPU.ejb|_ThreadID=18;_ThreadName=Thread-1;|
+Local Exception Stack:
+Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.0.0.v20090424-r40
+50): org.eclipse.persistence.exceptions.DatabaseException
+Internal Exception: java.sql.SQLException: Error in allocating a connection. Cau
+se: Connection could not be allocated because: java.net.ConnectException : Error
+ connecting to server localhost on port 1527 with message Connection refused: co
+nnect.
+
+or
+
+[#|2009-05-14T16:37:52.578-0700|WARNING|glassfish|org.eclipse.persistence.sessio
+n.file:/C:/sdk/glassfish/domains/domain1/applications/scrumtoys/WEB-INF/classes/
+-scrumtoysPU|_ThreadID=15;_ThreadName=Thread-1;|
+Local Exception Stack:
+Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.0.0.v20090424-r40
+50): org.eclipse.persistence.exceptions.DatabaseException
+Internal Exception: java.sql.SQLSyntaxErrorException: Table/View 'PROJECTS' does
+ not exist.
+</pre>
+
+Once the scrumtoys application is deployed while database is down, bringing
+database up will not fix the problem.  Restarting glassfish does not help
+either.  The only way to get the scrumtoys application working properly is to
+have the database up before *deploying* the application.  Thus to remedy the
+problem with not being able to save a project one needs to do the following:
+
+<p>
+<ol>
+<li>asadmin start-database
+<li>ant clean
+<li>ant run
+</ol>
+
+<p>
+If you still have problems when running the application, refer the <a
+ href="../../../../docs/UserTroubleShooting.html">
+troubleshooting document</a>.
+<br>
+<!--- Do not modify the rest of the document -->
+<hr noshade="noshade" size="1"><!-- start copyright -->
+<p class="copy"> Copyright © 1997-2010 Oracle and/or its affiliates. All rights reserved. </p>
+<!--  end copyright  -->
+</body>
+</html>
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/conf/persistence.xml b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/conf/persistence.xml
new file mode 100644
index 0000000..6619028
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/conf/persistence.xml
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<persistence version="2.0"
+             xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+             xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
+    <persistence-unit name="scrumtoysPU" transaction-type="JTA">
+        <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
+        <class>jsf2.demo.scrum.model.entities.Project</class>
+        <class>jsf2.demo.scrum.model.entities.Sprint</class>
+        <class>jsf2.demo.scrum.model.entities.Story</class>
+        <class>jsf2.demo.scrum.model.entities.Task</class>
+        <validation-mode>NONE</validation-mode>
+        <properties>
+            <property name="eclipselink.target-database" value="Auto"/>
+            <property name="eclipselink.ddl-generation" value="create-tables"/>
+        </properties>
+    </persistence-unit>
+</persistence>
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/java/jsf2/demo/scrum/model/entities/AbstractEntity.java b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/java/jsf2/demo/scrum/model/entities/AbstractEntity.java
new file mode 100644
index 0000000..9671a00
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/java/jsf2/demo/scrum/model/entities/AbstractEntity.java
@@ -0,0 +1,80 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package jsf2.demo.scrum.model.entities;
+
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.MappedSuperclass;
+
+/**
+ *
+ * @author Dr. Spock (spock at dev.java.net)
+ */
+ at MappedSuperclass
+public abstract class AbstractEntity implements PersistentEntity<Long> {
+
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    private Long id;
+    
+    public Long getId() {
+        return this.id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public boolean isNew() {
+        return (this.id == null);
+    }
+
+    @Override
+    public abstract boolean equals(Object object);
+
+    @Override
+    public abstract int hashCode();
+
+    @Override
+    public abstract String toString();
+    
+}
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/java/jsf2/demo/scrum/model/entities/PersistentEntity.java b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/java/jsf2/demo/scrum/model/entities/PersistentEntity.java
new file mode 100644
index 0000000..52e8c01
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/java/jsf2/demo/scrum/model/entities/PersistentEntity.java
@@ -0,0 +1,55 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package jsf2.demo.scrum.model.entities;
+
+import java.io.Serializable;
+
+/**
+ *
+ * @author Dr. Spock (spock at dev.java.net)
+ */
+public interface PersistentEntity<PK extends Serializable> extends Serializable {
+
+    PK getId();
+
+    boolean isNew();
+    
+}
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/java/jsf2/demo/scrum/model/entities/Project.java b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/java/jsf2/demo/scrum/model/entities/Project.java
new file mode 100644
index 0000000..05b0f3d
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/java/jsf2/demo/scrum/model/entities/Project.java
@@ -0,0 +1,166 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package jsf2.demo.scrum.model.entities;
+
+import java.io.Serializable;
+import java.util.Collections;
+import java.util.Date;
+import java.util.LinkedList;
+import java.util.List;
+import javax.persistence.CascadeType;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.NamedQueries;
+import javax.persistence.NamedQuery;
+import javax.persistence.OneToMany;
+import javax.persistence.Table;
+import javax.persistence.Temporal;
+import javax.persistence.TemporalType;
+
+/**
+ * @author Dr. Spock (spock at dev.java.net)
+ */
+ at Entity
+ at Table(name = "projects")
+ at NamedQueries({@NamedQuery(name = "project.getAll", query = "select p from Project as p"),
+        @NamedQuery(name = "project.getAllOpen", query = "select p from Project as p where p.endDate is null"),
+        @NamedQuery(name = "project.countByName", query = "select count(p) from Project as p where p.name = :name and not(p = :currentProject)"),
+        @NamedQuery(name = "project.new.countByName", query = "select count(p) from Project as p where p.name = :name")})
+public class Project extends AbstractEntity implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+    @Column(nullable = false, unique = true)
+    private String name;
+    @Temporal(TemporalType.DATE)
+    @Column(name = "start_date", nullable = false)
+    private Date startDate;
+    @Temporal(TemporalType.DATE)
+    @Column(name = "end_date")
+    private Date endDate;
+    @OneToMany(mappedBy = "project", cascade = CascadeType.ALL)
+    private List<Sprint> sprints;
+
+    public Project() {
+        this.startDate = new Date();
+    }
+
+    public Project(String name) {
+        this();
+        this.name = name;
+    }
+
+    public Project(String name, Date startDate) {
+        this(name);
+        this.startDate = startDate;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public Date getStartDate() {
+        return startDate;
+    }
+
+    public void setStartDate(Date startDate) {
+        this.startDate = startDate;
+    }
+
+    public Date getEndDate() {
+        return endDate;
+    }
+
+    public void setEndDate(Date endDate) {
+        this.endDate = endDate;
+    }
+
+    public List<Sprint> getSprints() {
+        return (sprints != null) ? Collections.unmodifiableList(sprints) : Collections.<Sprint>emptyList();
+    }
+
+    public boolean addSprint(Sprint sprint) {
+        if (sprints == null) {
+            sprints = new LinkedList<Sprint>();
+        }
+        if (sprint != null && !sprints.contains(sprint)) {
+            sprints.add(sprint);
+            sprint.setProject(this);
+            return true;
+        }
+        return false;
+    }
+
+    public boolean removeSpring(Sprint sprint) {
+        return (sprints != null
+                   && !sprints.isEmpty()
+                   && sprints.remove(sprint));
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (obj == null) {
+            return false;
+        }
+        if (getClass() != obj.getClass()) {
+            return false;
+        }
+        final Project other = (Project) obj;
+        return !((this.name == null)
+                 ? (other.name != null)
+                 : !this.name.equals(other.name));
+    }
+
+    @Override
+    public int hashCode() {
+        int hash = 7;
+        hash = 79 * hash + (this.name != null ? this.name.hashCode() : 0);
+        return hash;
+    }
+
+    @Override
+    public String toString() {
+        return "Project[name=" + name + ",startDate=" + startDate + ",endDate=" + endDate + "]";
+    }
+}
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/java/jsf2/demo/scrum/model/entities/Sprint.java b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/java/jsf2/demo/scrum/model/entities/Sprint.java
new file mode 100644
index 0000000..219bfbe
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/java/jsf2/demo/scrum/model/entities/Sprint.java
@@ -0,0 +1,211 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package jsf2.demo.scrum.model.entities;
+
+import javax.persistence.*;
+import java.io.Serializable;
+import java.util.Collections;
+import java.util.Date;
+import java.util.LinkedList;
+import java.util.List;
+
+/**
+ * @author Dr. Spock (spock at dev.java.net)
+ */
+ at Entity
+ at Table(name = "sprints", uniqueConstraints = @UniqueConstraint(columnNames = {"name", "project_id"}))
+ at NamedQueries({@NamedQuery(name = "sprint.countByNameAndProject", query = "select count(s) from Sprint as s where s.name = :name and s.project = :project and not(s = :currentSprint)"),
+        @NamedQuery(name = "sprint.new.countByNameAndProject", query = "select count(s) from Sprint as s where s.name = :name and s.project = :project")})
+public class Sprint extends AbstractEntity implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+    @Column(nullable = false)
+    private String name;
+    private String goals;
+    @Temporal(TemporalType.DATE)
+    @Column(name = "start_date", nullable = false)
+    private Date startDate;
+    @Temporal(TemporalType.DATE)
+    @Column(name = "end_date")
+    private Date endDate;
+    @Column(name = "iteration_scope")
+    private int iterationScope;
+    @Column(name = "gained_story_points")
+    private int gainedStoryPoints;
+    @Temporal(TemporalType.TIME)
+    @Column(name = "daily_meeting_time")
+    private Date dailyMeetingTime;
+    @OneToMany(mappedBy = "sprint", cascade = CascadeType.ALL)
+    private List<Story> stories;
+    @ManyToOne
+    @JoinColumn(name = "project_id")
+    private Project project;
+
+    public Sprint() {
+        this.startDate = new Date();
+    }
+
+    public Sprint(String name) {
+        this();
+        this.name = name;
+    }
+
+    public Sprint(String name, Project project) {
+        this(name);
+        this.project = project;
+    }
+
+    @SprintNameUniquenessConstraint
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getGoals() {
+        return goals;
+    }
+
+    public void setGoals(String goals) {
+        this.goals = goals;
+    }
+
+    public Date getStartDate() {
+        return startDate;
+    }
+
+    public void setStartDate(Date startDate) {
+        this.startDate = startDate;
+    }
+
+    public Date getEndDate() {
+        return endDate;
+    }
+
+    public void setEndDate(Date endDate) {
+        this.endDate = endDate;
+    }
+
+    public int getIterationScope() {
+        return iterationScope;
+    }
+
+    public void setIterationScope(int iterationScope) {
+        this.iterationScope = iterationScope;
+    }
+
+    public int getGainedStoryPoints() {
+        return gainedStoryPoints;
+    }
+
+    public void setGainedStoryPoints(int gainedStoryPoints) {
+        this.gainedStoryPoints = gainedStoryPoints;
+    }
+
+    public Date getDailyMeetingTime() {
+        return dailyMeetingTime;
+    }
+
+    public void setDailyMeetingTime(Date dailyMeetingTime) {
+        this.dailyMeetingTime = dailyMeetingTime;
+    }
+
+    public List<Story> getStories() {
+        return (stories != null) ? Collections.unmodifiableList(stories) : Collections.<Story>emptyList();
+    }
+
+    public boolean addStory(Story story) {
+        if (stories == null) {
+            stories = new LinkedList<Story>();
+        }
+        if (story != null && !stories.contains(story)) {
+            stories.add(story);
+            story.setSprint(this);
+            return true;
+        }
+        return false;
+    }
+
+    public boolean removeStory(Story story) {
+        return (stories != null
+                 && !stories.isEmpty()
+                 && stories.remove(story));
+    }
+
+    public Project getProject() {
+        return project;
+    }
+
+    public void setProject(Project project) {
+        this.project = project;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (obj == null) {
+            return false;
+        }
+        if (getClass() != obj.getClass()) {
+            return false;
+        }
+        final Sprint other = (Sprint) obj;
+        if ((this.name == null) ? (other.name != null) : !this.name.equals(other.name)) {
+            return false;
+        }
+        return !(this.project != other.project
+                   && (this.project == null || !this.project.equals(other.project)));
+    }
+
+    @Override
+    public int hashCode() {
+        int hash = 7;
+        hash = 97 * hash + (this.name != null ? this.name.hashCode() : 0);
+        hash = 97 * hash + (this.project != null ? this.project.hashCode() : 0);
+        return hash;
+    }
+
+    @Override
+    public String toString() {
+        return "Sprint[name=" + name + ",startDate=" + startDate + ",project=" + project + "]";
+    }
+}
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/java/jsf2/demo/scrum/model/entities/SprintNameUniquenessConstraint.java b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/java/jsf2/demo/scrum/model/entities/SprintNameUniquenessConstraint.java
new file mode 100644
index 0000000..aa7dc0b
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/java/jsf2/demo/scrum/model/entities/SprintNameUniquenessConstraint.java
@@ -0,0 +1,64 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package jsf2.demo.scrum.model.entities;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+import javax.validation.Constraint;
+import javax.validation.Payload;
+
+ at Documented
+ at Constraint(validatedBy = SprintNameUniquenessConstraintValidator.class)
+ at Target({ ElementType.METHOD, ElementType.FIELD })
+ at Retention(RetentionPolicy.RUNTIME)
+public @interface SprintNameUniquenessConstraint {
+    
+    String message() default "{sprint.form.label.name.unique}";
+
+    Class<?>[] groups() default {};
+
+    Class<? extends Payload>[] payload() default {};
+    
+
+}
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/java/jsf2/demo/scrum/model/entities/SprintNameUniquenessConstraintValidator.java b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/java/jsf2/demo/scrum/model/entities/SprintNameUniquenessConstraintValidator.java
new file mode 100644
index 0000000..c3d5934
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/java/jsf2/demo/scrum/model/entities/SprintNameUniquenessConstraintValidator.java
@@ -0,0 +1,73 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package jsf2.demo.scrum.model.entities;
+
+import javax.faces.context.FacesContext;
+import javax.validation.ConstraintValidator;
+import javax.validation.ConstraintValidatorContext;
+import jsf2.demo.scrum.web.controller.SprintManager;
+
+public class SprintNameUniquenessConstraintValidator implements ConstraintValidator<SprintNameUniquenessConstraint, String> {
+
+    public boolean isValid(String value, ConstraintValidatorContext ctx) {
+        
+        FacesContext context = FacesContext.getCurrentInstance();
+        SprintManager sprintManager = (SprintManager)
+                context.getApplication().evaluateExpressionGet(context, 
+                "#{sprintManager}", SprintManager.class);
+        boolean result = true;
+        String message = sprintManager.
+                checkUniqueSprintNameApplicationValidatorMethod(value);
+        if (message != null) {
+            result = false;
+        ConstraintValidatorContext.ConstraintViolationBuilder builder =
+        ctx.buildConstraintViolationWithTemplate(message);
+        builder.addConstraintViolation();
+        }
+
+        
+        return result;
+    }
+
+    public void initialize(SprintNameUniquenessConstraint arg0) {
+    }
+    
+}
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/java/jsf2/demo/scrum/model/entities/Story.java b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/java/jsf2/demo/scrum/model/entities/Story.java
new file mode 100644
index 0000000..34acfa5
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/java/jsf2/demo/scrum/model/entities/Story.java
@@ -0,0 +1,222 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package jsf2.demo.scrum.model.entities;
+
+import javax.persistence.*;
+import java.io.Serializable;
+import java.util.Collections;
+import java.util.Date;
+import java.util.LinkedList;
+import java.util.List;
+
+/**
+ * @author Dr. Spock (spock at dev.java.net)
+ */
+ at Entity
+ at Table(name = "stories", uniqueConstraints = @UniqueConstraint(columnNames = {"name", "sprint_id"}))
+ at NamedQueries({@NamedQuery(name = "story.countByNameAndSprint", query = "select count(s) from Story as s where s.name = :name and s.sprint = :sprint and not(s = :currentStory)"),
+        @NamedQuery(name = "story.new.countByNameAndSprint", query = "select count(s) from Story as s where s.name = :name and s.sprint = :sprint")})
+public class Story extends AbstractEntity implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+    @Column(nullable = false)
+    private String name;
+    private int priority;
+    @Temporal(TemporalType.DATE)
+    @Column(name = "start_date", nullable = false)
+    private Date startDate;
+    @Temporal(TemporalType.DATE)
+    @Column(name = "end_date")
+    private Date endDate;
+    private String acceptance;
+    private int estimation;
+    @ManyToOne
+    @JoinColumn(name = "sprint_id")
+    private Sprint sprint;
+    @OneToMany(mappedBy = "story", cascade = CascadeType.ALL)
+    private List<Task> tasks;
+
+    public Story() {
+        this.startDate = new Date();
+    }
+
+    public Story(String name) {
+        this();
+        this.name = name;
+    }
+
+    public Story(String name, Sprint sprint) {
+        this(name);
+        this.name = name;
+        if (sprint != null) {
+            sprint.addStory(this);
+        }
+    }
+
+    public String getAcceptance() {
+        return acceptance;
+    }
+
+    public void setAcceptance(String acceptance) {
+        this.acceptance = acceptance;
+    }
+
+    public Date getEndDate() {
+        return endDate;
+    }
+
+    public void setEndDate(Date endDate) {
+        this.endDate = endDate;
+    }
+
+    public int getEstimation() {
+        return estimation;
+    }
+
+    public void setEstimation(int estimation) {
+        this.estimation = estimation;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public int getPriority() {
+        return priority;
+    }
+
+    public void setPriority(int priority) {
+        this.priority = priority;
+    }
+
+    public Sprint getSprint() {
+        return sprint;
+    }
+
+    public void setSprint(Sprint sprint) {
+        this.sprint = sprint;
+    }
+
+    public Date getStartDate() {
+        return startDate;
+    }
+
+    public void setStartDate(Date startDate) {
+        this.startDate = startDate;
+    }
+
+    public List<Task> getTasks() {
+        return (tasks != null) ? Collections.unmodifiableList(tasks) : Collections.<Task>emptyList();
+    }
+
+    public List<Task> getDoneTasks() {
+        return Collections.unmodifiableList(getTasks(TaskStatus.DONE));
+    }
+
+    public List<Task> getWorkingTasks() {
+        return Collections.unmodifiableList(getTasks(TaskStatus.WORKING));
+    }
+
+    public List<Task> getTodoTasks() {
+        return Collections.unmodifiableList(getTasks(TaskStatus.TODO));
+    }
+
+    private List<Task> getTasks(TaskStatus status) {
+        List<Task> result = new LinkedList<Task>();
+        if (tasks != null && !tasks.isEmpty()) {
+            for (Task task : tasks) {
+                if (task != null && status.equals(task.getStatus())) {
+                    result.add(task);
+                }
+            }
+        }
+        return result;
+    }
+
+    public boolean addTask(Task task) {
+        if (tasks == null) {
+            tasks = new LinkedList<Task>();
+        }
+        if (task != null && !tasks.contains(task)) {
+            tasks.add(task);
+            task.setStory(this);
+            return true;
+        }
+        return false;
+    }
+
+    public boolean removeTask(Task task) {
+        return (tasks != null && !tasks.isEmpty() && tasks.remove(task));
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (obj == null) {
+            return false;
+        }
+        if (getClass() != obj.getClass()) {
+            return false;
+        }
+        final Story other = (Story) obj;
+        if ((this.name == null) ? (other.name != null) : !this.name.equals(other.name)) {
+            return false;
+        }
+        return !(this.sprint != other.sprint
+                 && (this.sprint == null || !this.sprint.equals(other.sprint)));
+    }
+
+    @Override
+    public int hashCode() {
+        int hash = 7;
+        hash = 23 * hash + (this.name != null ? this.name.hashCode() : 0);
+        hash = 23 * hash + (this.sprint != null ? this.sprint.hashCode() : 0);
+        return hash;
+    }
+
+    @Override
+    public String toString() {
+        return "Story[name=" + name + ",startDate=" + startDate + ",sprint=" + sprint + "]";
+    }
+}
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/java/jsf2/demo/scrum/model/entities/Task.java b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/java/jsf2/demo/scrum/model/entities/Task.java
new file mode 100644
index 0000000..0a06744
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/java/jsf2/demo/scrum/model/entities/Task.java
@@ -0,0 +1,179 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package jsf2.demo.scrum.model.entities;
+
+import javax.persistence.*;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * @author Dr. Spock (spock at dev.java.net)
+ */
+ at Entity
+ at Table(name = "tasks", uniqueConstraints = @UniqueConstraint(columnNames = {"name", "story_id"}))
+ at NamedQueries({@NamedQuery(name = "task.countByNameAndStory", query = "select count(t) from Task as t where t.name = :name and t.story = :story and not(t = :currentTask)"),
+        @NamedQuery(name = "task.new.countByNameAndStory", query = "select count(t) from Task as t where t.name = :name and t.story = :story")})
+public class Task extends AbstractEntity implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @Column(nullable = false)
+    private String name;
+
+    @Temporal(TemporalType.DATE)
+    @Column(name = "start_date")
+    private Date startDate;
+
+    @Temporal(TemporalType.DATE)
+    @Column(name = "end_date")
+    private Date endDate;
+
+    @Enumerated(EnumType.ORDINAL)
+    private TaskStatus status;
+
+    @ManyToOne
+    @JoinColumn(name = "story_id")
+    private Story story;
+
+    public Task() {
+        this.status = TaskStatus.TODO;
+    }
+
+    public Task(String name) {
+        this();
+        this.name = name;
+    }
+
+    public Task(String name, Story story) {
+        this(name);
+        if (story != null) {
+            story.addTask(this);
+        }
+    }
+
+    public Date getEndDate() {
+        return endDate;
+    }
+
+    public void setEndDate(Date endDate) {
+        this.endDate = endDate;
+        changeTaskStatus(this.startDate, endDate);
+
+    }
+
+    protected void changeTaskStatus(Date startDate, Date endDate) {
+        if (endDate != null) {
+            this.setStatus(TaskStatus.DONE);
+        }
+        if (endDate == null && this.startDate != null) {
+            this.setStatus(TaskStatus.WORKING);
+        }
+        if (endDate == null && this.startDate == null) {
+            this.setStatus(TaskStatus.TODO);
+        }
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public Date getStartDate() {
+        return startDate;
+    }
+
+    public void setStartDate(Date startDate) {
+        this.startDate = startDate;
+        changeTaskStatus(startDate, this.endDate);
+    }
+
+    public TaskStatus getStatus() {
+        return status;
+    }
+
+    public void setStatus(TaskStatus status) {
+        this.status = status;
+    }
+
+    public Story getStory() {
+        return story;
+    }
+
+    public void setStory(Story story) {
+        this.story = story;
+    }
+
+    public String getStatusKeyI18n() {
+        return "task.show.table.header.status."+status;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (obj == null) {
+            return false;
+        }
+        if (getClass() != obj.getClass()) {
+            return false;
+        }
+        final Task other = (Task) obj;
+        if ((this.name == null) ? (other.name != null) : !this.name.equals(other.name)) {
+            return false;
+        }
+        return !(this.story != other.story
+                 && (this.story == null || !this.story.equals(other.story)));
+    }
+
+    @Override
+    public int hashCode() {
+        int hash = 7;
+        hash = 83 * hash + (this.name != null ? this.name.hashCode() : 0);
+        hash = 83 * hash + (this.story != null ? this.story.hashCode() : 0);
+        return hash;
+    }
+
+    @Override
+    public String toString() {
+        return "Task[name=" + name + ",startDate=" + startDate + ",story=" + story + "]";
+    }
+}
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/java/jsf2/demo/scrum/model/entities/TaskStatus.java b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/java/jsf2/demo/scrum/model/entities/TaskStatus.java
new file mode 100644
index 0000000..0cfa777
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/java/jsf2/demo/scrum/model/entities/TaskStatus.java
@@ -0,0 +1,50 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package jsf2.demo.scrum.model.entities;
+
+/**
+ *
+ * @author Dr. Spock (spock at dev.java.net)
+ */
+public enum TaskStatus {
+
+    TODO, DONE, WORKING
+}
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/java/jsf2/demo/scrum/web/controller/AbstractManager.java b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/java/jsf2/demo/scrum/web/controller/AbstractManager.java
new file mode 100644
index 0000000..8f657fc
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/java/jsf2/demo/scrum/web/controller/AbstractManager.java
@@ -0,0 +1,163 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package jsf2.demo.scrum.web.controller;
+
+import java.util.ResourceBundle;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.annotation.Resource;
+import javax.faces.application.FacesMessage;
+import javax.faces.application.FacesMessage.Severity;
+import javax.faces.context.FacesContext;
+import javax.faces.event.SystemEvent;
+import javax.faces.event.SystemEventListener;
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceUnit;
+import javax.persistence.EntityManagerFactory;
+import javax.transaction.UserTransaction;
+
+/**
+ *
+ * @author Dr. Spock (spock at dev.java.net)
+ */
+public abstract class AbstractManager {
+
+    @PersistenceUnit
+    private EntityManagerFactory emf;
+    @Resource
+    private UserTransaction userTransaction;
+
+    protected final <T> T doInTransaction(PersistenceAction<T> action) throws ManagerException {
+        EntityManager em = emf.createEntityManager();
+        try {
+            userTransaction.begin();
+            T result = action.execute(em);
+            userTransaction.commit();
+            return result;
+        } catch (Exception e) {
+            try {
+                userTransaction.rollback();
+            } catch (Exception ex) {
+                Logger.getLogger(AbstractManager.class.getName()).log(Level.SEVERE, null, ex);
+            }
+            throw new ManagerException(e);
+        } finally {
+            em.close();
+        }
+
+    }
+
+    protected final void doInTransaction(PersistenceActionWithoutResult action) throws ManagerException {
+        EntityManager em = emf.createEntityManager();
+        try {
+            userTransaction.begin();
+            action.execute(em);
+            userTransaction.commit();
+        } catch (Exception e) {
+            try {
+                userTransaction.rollback();
+            } catch (Exception ex) {
+                Logger.getLogger(AbstractManager.class.getName()).log(Level.SEVERE, null, ex);
+            }
+            throw new ManagerException(e);
+        } finally {
+            em.close();
+        }
+    }
+
+    protected static interface PersistenceAction<T> {
+
+        T execute(EntityManager em);
+    }
+
+    protected static interface PersistenceActionWithoutResult {
+
+        void execute(EntityManager em);
+    }
+
+    protected void addMessage(String message) {
+        addMessage(null, message, FacesMessage.SEVERITY_INFO);
+    }
+
+    protected void addMessage(String componentId, String message) {
+        addMessage(componentId, message, FacesMessage.SEVERITY_INFO);
+    }
+
+    protected void addMessage(String message, Severity severity) {
+        addMessage(null, message, severity);
+    }
+
+    protected void addMessage(String componentId, String message, Severity severity) {
+        FacesContext.getCurrentInstance().addMessage(componentId, new FacesMessage(severity, message, message));
+    }
+
+    protected String getMessageForKey(String key) {
+        FacesContext ctx = FacesContext.getCurrentInstance();
+        ResourceBundle rb = ctx.getApplication().getResourceBundle(ctx, "i18n");
+        return rb.getString(key);
+    }
+
+    protected FacesMessage getFacesMessageForKey(String key) {
+        return new FacesMessage(getMessageForKey(key));
+    }
+
+    protected Logger getLogger(Class<?> clazz) {
+        if (clazz == null) {
+            throw new IllegalArgumentException("Class for logger is required.");
+        }
+        return Logger.getLogger(clazz.getName());
+    }
+
+    protected void publishEvent(Class<? extends SystemEvent> eventClass, Object source) {
+        if (source != null) {
+            FacesContext ctx = FacesContext.getCurrentInstance();
+            ctx.getApplication().publishEvent(ctx, eventClass, source);
+        }
+    }
+
+    protected void subscribeToEvent(Class<? extends SystemEvent> eventClass, SystemEventListener listener) {
+        FacesContext.getCurrentInstance().getApplication().subscribeToEvent(eventClass, listener);
+    }
+
+    protected void unsubscribeFromEvent(Class<? extends SystemEvent> eventClass, SystemEventListener listener) {
+        FacesContext.getCurrentInstance().getApplication().unsubscribeFromEvent(eventClass, listener);
+    }
+}
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/java/jsf2/demo/scrum/web/controller/DashboardManager.java b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/java/jsf2/demo/scrum/web/controller/DashboardManager.java
new file mode 100644
index 0000000..80b7716
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/java/jsf2/demo/scrum/web/controller/DashboardManager.java
@@ -0,0 +1,186 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package jsf2.demo.scrum.web.controller;
+
+import jsf2.demo.scrum.model.entities.Sprint;
+import jsf2.demo.scrum.model.entities.Story;
+import jsf2.demo.scrum.model.entities.Task;
+
+import javax.annotation.PreDestroy;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.ManagedProperty;
+import javax.faces.bean.ViewScoped;
+import javax.faces.model.DataModel;
+import javax.faces.model.ListDataModel;
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+import javax.faces.context.FacesContext;
+
+
+ at ManagedBean(name = "dashboardManager")
+ at ViewScoped
+public class DashboardManager extends AbstractManager implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ManagedProperty("#{taskManager}")
+    private TaskManager taskManager;
+    @ManagedProperty("#{sprintManager}")
+    private SprintManager sprintManager;
+    @ManagedProperty("#{storyManager}")
+    private StoryManager storyManager;
+
+
+    private ListDataModel<Task> toDoTasks;
+    private ListDataModel<Task> workingTasks;
+    private ListDataModel<Task> doneTasks;
+
+    @PreDestroy
+    public void destroy() {
+        toDoTasks = null;
+        workingTasks = null;
+        doneTasks = null;
+        FacesContext.getCurrentInstance().getViewRoot().getViewMap().remove("dashboardManager");
+    }
+
+    public Sprint getSprint() {
+        return getSprintManager().getCurrentSprint();
+    }
+
+    public void setSprint(Sprint sprint) {
+        this.getSprintManager().setCurrentSprint(sprint);
+    }
+
+    public DataModel<Story> getStories() {
+        return storyManager.getStories();
+    }
+
+
+    public void setStories(DataModel<Story> stories) {
+        storyManager.setStories(stories);
+    }
+
+    public ListDataModel<Task> getToDoTasks() {
+        List<Task> toDoTasksList = new ArrayList<Task>();
+        if (sprintManager.getCurrentSprint() == null) {
+            return new ListDataModel<Task>(toDoTasksList);
+        }
+        for (Story story : storyManager.getStoryList()) {
+            toDoTasksList.addAll(story.getTodoTasks());
+        }
+        toDoTasks = new ListDataModel<Task>(toDoTasksList);
+        return toDoTasks;
+    }
+
+    public ListDataModel<Task> getWorkingTasks() {
+        List<Task> workingTasksList = new ArrayList<Task>();
+        if (sprintManager.getCurrentSprint() == null) {
+            return new ListDataModel<Task>(workingTasksList);
+        }
+        for (Story story : storyManager.getStoryList()) {
+            workingTasksList.addAll(story.getWorkingTasks());
+        }
+        workingTasks = new ListDataModel<Task>(workingTasksList);
+        return workingTasks;
+    }
+
+    public ListDataModel<Task> getDoneTasks() {
+        List<Task> doneTasksList = new ArrayList<Task>();
+        if (sprintManager.getCurrentSprint() == null) {
+            return new ListDataModel<Task>(doneTasksList);
+        }
+        for (Story story : storyManager.getStoryList()) {
+            doneTasksList.addAll(story.getDoneTasks());
+        }
+        doneTasks = new ListDataModel<Task>(doneTasksList);
+        return doneTasks;
+    }
+
+    private String editTask(Task currentTask) {
+        if (currentTask == null)
+            return "";
+
+        taskManager.setCurrentTask(currentTask);
+        Story currentStory = storyManager.getCurrentStory();
+        if (currentStory != currentTask.getStory()) {
+            storyManager.setCurrentStory(currentTask.getStory());
+        }
+        return "/task/edit";
+    }
+
+    public String editToDoTask() {
+        return editTask(toDoTasks.getRowData());
+    }
+
+    public String editDoneTask() {
+        return editTask(doneTasks.getRowData());
+    }
+
+    public String editWorkingTask() {
+        return editTask(workingTasks.getRowData());
+    }
+
+    public TaskManager getTaskManager() {
+        return taskManager;
+    }
+
+    public void setTaskManager(TaskManager taskManager) {
+        this.taskManager = taskManager;
+    }
+
+    public SprintManager getSprintManager() {
+        return sprintManager;
+    }
+
+    public void setSprintManager(SprintManager sprintManager) {
+        this.sprintManager = sprintManager;
+    }
+
+    public StoryManager getStoryManager() {
+        return storyManager;
+    }
+
+    public void setStoryManager(StoryManager storyManager) {
+        this.storyManager = storyManager;
+    }
+
+}
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/java/jsf2/demo/scrum/web/controller/ManagerException.java b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/java/jsf2/demo/scrum/web/controller/ManagerException.java
new file mode 100644
index 0000000..de8c466
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/java/jsf2/demo/scrum/web/controller/ManagerException.java
@@ -0,0 +1,58 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package jsf2.demo.scrum.web.controller;
+
+/**
+ *
+ * @author Dr. Spock (spock at dev.java.net)
+ */
+public class ManagerException extends Exception {
+
+    private static final long serialVersionUID = 1L;
+
+    public ManagerException(Throwable cause) {
+        super(cause);
+    }
+
+    public ManagerException(String message, Throwable cause) {
+        super(message, cause);
+    }
+}
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/java/jsf2/demo/scrum/web/controller/ProjectManager.java b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/java/jsf2/demo/scrum/web/controller/ProjectManager.java
new file mode 100644
index 0000000..7ed7577
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/java/jsf2/demo/scrum/web/controller/ProjectManager.java
@@ -0,0 +1,271 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package jsf2.demo.scrum.web.controller;
+
+import jsf2.demo.scrum.model.entities.Project;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
+import javax.faces.application.FacesMessage;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.SessionScoped;
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.model.DataModel;
+import javax.faces.model.ListDataModel;
+import javax.faces.model.SelectItem;
+import javax.faces.validator.ValidatorException;
+import javax.persistence.EntityManager;
+import javax.persistence.Query;
+import java.io.Serializable;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+/**
+ * @author Dr. Spock (spock at dev.java.net)
+ */
+ at ManagedBean(name = "projectManager")
+ at SessionScoped
+public class ProjectManager extends AbstractManager implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+    private Project currentProject;
+    private DataModel<Project> projects;
+    private List<SelectItem> projectItems;
+    private List<Project> projectList;
+
+    @PostConstruct
+    public void construct() {
+        Project project = new Project();
+        setCurrentProject(project);
+        init();
+    }
+
+    @PreDestroy
+    public void destroy() {
+        projects = null;
+        if (projectItems != null) {
+            projectItems.clear();
+            projectItems = null;
+        }
+        if (projectList != null) {
+            projectList.clear();
+            projectList = null;
+        }
+        currentProject = null;
+        FacesContext.getCurrentInstance().getExternalContext().getSessionMap().remove("projectManager");
+    }
+
+    public void init() {
+        try {
+            setProjectList(doInTransaction(new PersistenceAction<List<Project>>() {
+
+                @SuppressWarnings({"unchecked"}) 
+                public List<Project> execute(EntityManager em) {
+                    Query query = em.createNamedQuery("project.getAll");
+                    return (List<Project>) query.getResultList();
+                }
+            }));
+        } catch (ManagerException ex) {
+            Logger.getLogger(ProjectManager.class.getName()).log(Level.SEVERE, null, ex);
+        }
+        projectItems = new LinkedList<SelectItem>();
+        projectItems.add(new SelectItem(new Project(), "-- Select one project --"));
+        if (getProjectList() != null) {
+            projects = new ListDataModel<Project>(getProjectList());
+            for (Project p : getProjectList()) {
+                projectItems.add(new SelectItem(p, p.getName()));
+            }
+        }
+    }
+
+    public String create() {
+        Project project = new Project();
+        setCurrentProject(project);
+        return "create";
+    }
+
+    public String save() {
+        if (getCurrentProject() != null) {
+            try {
+                Project merged = doInTransaction(new PersistenceAction<Project>() {
+
+                    public Project execute(EntityManager em) {
+                        if (getCurrentProject().isNew()) {
+                            em.persist(getCurrentProject());
+                        } else if (!em.contains(currentProject)) {
+                            return em.merge(getCurrentProject());
+                        }
+                        return getCurrentProject();
+                    }
+                });
+                if (!currentProject.equals(merged)) {
+                    setCurrentProject(merged);
+                    int idx = getProjectList().indexOf(getCurrentProject());
+                    if (idx != -1) {
+                        getProjectList().set(idx, merged);
+                    }
+                }
+                if (!projectList.contains(merged)) {
+                    getProjectList().add(merged);
+                }
+            } catch (Exception e) {
+                getLogger(getClass()).log(Level.SEVERE, "Error on try to save Project: " + getCurrentProject(), e);
+                addMessage("Error on try to save Project", FacesMessage.SEVERITY_ERROR);
+                return null;
+            }
+        }
+        init();
+        return "show";
+    }
+
+    public String edit() {
+        setCurrentProject(projects.getRowData());
+        // Using implicity navigation, this request come from /projects/show.xhtml and directs to /project/edit.xhtml
+        return "edit";
+    }
+
+    public String remove() {
+        final Project project = projects.getRowData();
+        if (project != null) {
+            try {
+                doInTransaction(new PersistenceActionWithoutResult() {
+
+                    public void execute(EntityManager em) {
+                        if (em.contains(project)) {
+                            em.remove(project);
+                        } else {
+                            em.remove(em.merge(project));
+                        }
+                    }
+                });
+                getProjectList().remove(project);
+            } catch (Exception e) {
+                getLogger(getClass()).log(Level.SEVERE, "Error on try to remove Project: " + getCurrentProject(), e);
+                addMessage("Error on try to remove Project", FacesMessage.SEVERITY_ERROR);
+                return null;
+            }
+        }
+        init();
+        // Using implicity navigation, this request come from /projects/show.xhtml and directs to /project/show.xhtml
+        // could be null instead
+        return "show";
+    }
+
+    public void checkUniqueProjectName(FacesContext context, UIComponent component, Object newValue) {
+        final String newName = (String) newValue;
+        try {
+            Long count = doInTransaction(new PersistenceAction<Long>() {
+
+                public Long execute(EntityManager em) {
+                    Query query = em.createNamedQuery((getCurrentProject().isNew()) ? "project.new.countByName" : "project.countByName");
+                    query.setParameter("name", newName);
+                    if (!currentProject.isNew()) {
+                        query.setParameter("currentProject", getCurrentProject());
+                    }
+                    return (Long) query.getSingleResult();
+                }
+            });
+            if (count != null && count > 0) {
+                throw new ValidatorException(getFacesMessageForKey("project.form.label.name.unique"));
+            }
+        } catch (ManagerException ex) {
+            Logger.getLogger(ProjectManager.class.getName()).log(Level.SEVERE, null, ex);
+        }
+    }
+
+    public String cancelEdit() {
+        // Implicity navigation, this request come from /projects/edit.xhtml and directs to /project/show.xhtml
+        return "show";
+    }
+
+    public String showSprints() {
+        setCurrentProject(projects.getRowData());
+        // Implicity navigation, this request come from /projects/show.xhtml and directs to /project/showSprints.xhtml
+        return "showSprints";
+    }
+
+    public Project getCurrentProject() {
+        return currentProject;
+    }
+
+    public void setCurrentProject(Project currentProject) {
+        this.currentProject = currentProject;
+    }
+
+    public DataModel<Project> getProjects() {
+        return projects;
+    }
+
+    public void setProjects(DataModel<Project> projects) {
+        this.projects = projects;
+    }
+
+    public List<SelectItem> getProjectItems() {
+        return projectItems;
+    }
+
+    public void setProjectItems(List<SelectItem> projectItems) {
+        this.projectItems = projectItems;
+    }
+
+    /**
+     * @return the projectList
+     */
+    public List<Project> getProjectList() {
+        return projectList;
+    }
+
+    /**
+     * @param projectList the projectList to set
+     */
+    public void setProjectList(List<Project> projectList) {
+        this.projectList = projectList;
+    }
+
+    public String viewSprints() {
+        return "/sprint/show";
+    }
+
+
+}
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/java/jsf2/demo/scrum/web/controller/SkinManager.java b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/java/jsf2/demo/scrum/web/controller/SkinManager.java
new file mode 100644
index 0000000..0becb00
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/java/jsf2/demo/scrum/web/controller/SkinManager.java
@@ -0,0 +1,90 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package jsf2.demo.scrum.web.controller;
+
+import java.io.Serializable;
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.SessionScoped;
+import javax.faces.bean.ManagedProperty;
+import javax.faces.context.FacesContext;
+
+/**
+ *
+ * @author Dr. Spock (spock at dev.java.net)
+ */
+ at ManagedBean(name = "skinManager")
+ at SessionScoped
+public class SkinManager extends AbstractManager implements Serializable {
+
+    private String selectedSkin;
+    @ManagedProperty(value="#{skinValuesManager}")
+    private SkinValuesManager skinValuesManager;
+    private static final long serialVersionUID = 2936693632616580209L;
+
+    @PostConstruct
+    public void construct() {
+        selectedSkin = skinValuesManager.getDefaultSkinCss();
+    }
+
+    @PreDestroy
+    public void destroy() {
+        FacesContext.getCurrentInstance().getExternalContext().getSessionMap().remove("skinManager");
+    }
+
+    public String getSelectedSkin() {
+        return selectedSkin;
+    }
+
+    public void setSelectedSkin(String selectedSkin) {
+        this.selectedSkin = selectedSkin;
+    }
+
+    public SkinValuesManager getSkinValuesManager() {
+        return skinValuesManager;
+    }
+
+    public void setSkinValuesManager(SkinValuesManager skinValuesManager) {
+        this.skinValuesManager = skinValuesManager;
+    }
+    
+}
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/java/jsf2/demo/scrum/web/controller/SkinUrlManager.java b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/java/jsf2/demo/scrum/web/controller/SkinUrlManager.java
new file mode 100644
index 0000000..21245e3
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/java/jsf2/demo/scrum/web/controller/SkinUrlManager.java
@@ -0,0 +1,95 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package jsf2.demo.scrum.web.controller;
+
+import java.io.Serializable;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.ManagedProperty;
+import javax.faces.bean.RequestScoped;
+
+/**
+ *
+ * @author eder
+ */
+ at ManagedBean(name = "skinUrlManager")
+ at RequestScoped
+public class SkinUrlManager extends AbstractManager implements Serializable {
+
+    private String skin;
+
+    @ManagedProperty(value="#{skinManager}")
+    private SkinManager skinManager;
+    @ManagedProperty(value="#{skinValuesManager}")
+    private SkinValuesManager skinValuesManager;
+    private static final long serialVersionUID = 7770408832569218016L;
+
+    public String getSkin() {
+        return skin;
+    }
+
+    public void setSkin(String skin) {
+        this.skin = skin;
+    }
+
+    public void update() {
+        if (skin == null || "".equals(skin))
+            return;
+        String skinCss = skinValuesManager.getSkinCss(skin.toLowerCase());
+        skinManager.setSelectedSkin(skinCss);
+    }
+
+    public SkinManager getSkinManager() {
+        return skinManager;
+    }
+
+    public void setSkinManager(SkinManager skinManager) {
+        this.skinManager = skinManager;
+    }
+
+    public SkinValuesManager getSkinValuesManager() {
+        return skinValuesManager;
+    }
+
+    public void setSkinValuesManager(SkinValuesManager skinValuesManager) {
+        this.skinValuesManager = skinValuesManager;
+    }
+
+}
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/java/jsf2/demo/scrum/web/controller/SkinValuesManager.java b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/java/jsf2/demo/scrum/web/controller/SkinValuesManager.java
new file mode 100644
index 0000000..9e1bebc
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/java/jsf2/demo/scrum/web/controller/SkinValuesManager.java
@@ -0,0 +1,105 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package jsf2.demo.scrum.web.controller;
+
+import java.io.Serializable;
+import javax.annotation.PostConstruct;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.ApplicationScoped;
+import java.util.Map;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.ArrayList;
+import javax.annotation.PreDestroy;
+import javax.faces.context.FacesContext;
+
+
+/**
+ *
+ * @author edermag
+ */
+ at ManagedBean(name="skinValuesManager", eager=true)
+ at ApplicationScoped
+public class SkinValuesManager implements Serializable {
+
+    private Map<String, String> values;
+
+    private String defaultSkin = "blue";
+    private static final long serialVersionUID = 2238251086172648511L;
+
+    @PostConstruct
+    public void construct() {
+        values = new LinkedHashMap<String, String>();
+        values.put("yellow", "appYellowSkin.css");
+        values.put("orange", "appOrangeSkin.css");
+        values.put("red", "appRedSkin.css");
+        values.put(defaultSkin, "appBlueSkin.css");
+    }
+
+    @PreDestroy
+    public void destroy() {
+        if (null != values) {
+            values.clear();
+            values = null;
+        }
+        FacesContext.getCurrentInstance().getExternalContext().getSessionMap().remove("skinValuesManager");
+    }
+    
+    protected String getSkinCss(String skin) {
+        if (!values.containsKey(skin))
+            return getDefaultSkinCss();
+        return values.get(skin);
+    }
+
+    protected String getDefaultSkinCss() {
+        return values.get(defaultSkin);
+    }
+
+    public List<String> getNames() {
+        return new ArrayList<String>(values == null ? null : values.keySet());
+    }
+
+    public int getSize() {
+        return values.keySet().size();
+    }
+
+}
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/java/jsf2/demo/scrum/web/controller/SprintManager.java b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/java/jsf2/demo/scrum/web/controller/SprintManager.java
new file mode 100644
index 0000000..502c62d
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/java/jsf2/demo/scrum/web/controller/SprintManager.java
@@ -0,0 +1,292 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package jsf2.demo.scrum.web.controller;
+
+import jsf2.demo.scrum.model.entities.Project;
+import jsf2.demo.scrum.model.entities.Sprint;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
+import javax.faces.application.FacesMessage;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.ManagedProperty;
+import javax.faces.bean.SessionScoped;
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.model.DataModel;
+import javax.faces.model.ListDataModel;
+import javax.faces.validator.ValidatorException;
+import javax.persistence.EntityManager;
+import javax.persistence.Query;
+import java.io.Serializable;
+import java.util.Collections;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+/**
+ * @author Dr. Spock (spock at dev.java.net)
+ */
+ at ManagedBean(name = "sprintManager")
+ at SessionScoped
+public class SprintManager extends AbstractManager implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+    private Sprint currentSprint;
+    private DataModel<Sprint> sprints;
+    private List<Sprint> sprintList;
+    @ManagedProperty("#{projectManager}")
+    private ProjectManager projectManager;
+    private Project currentProject;
+
+    @PostConstruct
+    public void construct() {
+        init();
+    }
+
+    @PreDestroy
+    public void destroy() {
+        sprints = null;
+        if (null != sprintList) {
+            sprintList.clear();
+            sprintList = null;
+        }
+        projectManager = null;
+        currentProject = null;
+        FacesContext.getCurrentInstance().getExternalContext().getSessionMap().remove("sprintManager");
+
+    }
+
+    public void init() {
+        Sprint sprint = new Sprint();
+        Project pmCurrentProject = getProjectManager().getCurrentProject();
+        sprint.setProject(pmCurrentProject);
+        setCurrentSprint(sprint);
+        if (pmCurrentProject != null) {
+            sprintList = new LinkedList<Sprint>(pmCurrentProject.getSprints());
+        } else {
+            sprintList = Collections.emptyList();
+        }
+        sprints = new ListDataModel<Sprint>(sprintList);
+    }
+
+    public String create() {
+        Sprint sprint = new Sprint();
+        sprint.setProject(getProjectManager().getCurrentProject());
+        setCurrentSprint(sprint);
+        return "create";
+    }
+
+    public String save() {
+        if (currentSprint != null) {
+            try {
+                Sprint merged = doInTransaction(new PersistenceAction<Sprint>() {
+
+                    public Sprint execute(EntityManager em) {
+                        if (currentSprint.isNew()) {
+                            em.persist(currentSprint);
+                        } else if (!em.contains(currentSprint)) {
+                            return em.merge(currentSprint);
+                        }
+                        return currentSprint;
+                    }
+                });
+                if (!currentSprint.equals(merged)) {
+                    setCurrentSprint(merged);
+                    int idx = sprintList.indexOf(currentSprint);
+                    if (idx != -1) {
+                        sprintList.set(idx, merged);
+                    }
+                }
+                getProjectManager().getCurrentProject().addSprint(merged);
+                if (!sprintList.contains(merged)) {
+                    sprintList.add(merged);
+                }
+            } catch (Exception e) {
+                getLogger(getClass()).log(Level.SEVERE, "Error on try to save Sprint: " + currentSprint, e);
+                addMessage("Error on try to save Sprint", FacesMessage.SEVERITY_ERROR);
+                return null;
+            }
+        }
+        return "show";
+    }
+
+    public String edit() {
+        setCurrentSprint(sprints.getRowData());
+        return "edit";
+    }
+
+    public String remove() {
+        final Sprint sprint = sprints.getRowData();
+        if (sprint != null) {
+            try {
+                doInTransaction(new PersistenceActionWithoutResult() {
+
+                    public void execute(EntityManager em) {
+                        if (em.contains(sprint)) {
+                            em.remove(sprint);
+                        } else {
+                            em.remove(em.merge(sprint));
+                        }
+                    }
+                });
+                getProjectManager().getCurrentProject().removeSpring(sprint);
+                sprintList.remove(sprint);
+            } catch (Exception e) {
+                getLogger(getClass()).log(Level.SEVERE, "Error on try to remove Sprint: " + currentSprint, e);
+                addMessage("Error on try to remove Sprint", FacesMessage.SEVERITY_ERROR);
+                return null;
+            }
+        }
+        return "show";
+    }
+
+    /*
+    * This method can be pointed to by a validator methodExpression, such as:
+    *
+    * <h:inputText id="itName" value="#{sprintManager.currentSprint.name}" required="true"
+    *   requiredMessage="#{i18n['sprint.form.label.name.required']}" maxLength="30" size="30"
+    *   validator="#{sprintManager.checkUniqueSprintName}" />
+    */
+
+    public void checkUniqueSprintNameFacesValidatorMethod(FacesContext context, UIComponent component, Object newValue) {
+
+        final String newName = (String) newValue;
+        String message = checkUniqueSprintNameApplicationValidatorMethod(newName);
+        if (null != message) {
+            throw new ValidatorException(getFacesMessageForKey("sprint.form.label.name.unique"));
+        }
+    }
+
+
+    /*
+    * This method is called by the JSR-303 SprintNameUniquenessConstraintValidator.
+    * If it returns non-null, the result must be interpreted as the localized
+    * validation message.
+    *
+    */
+
+    public String checkUniqueSprintNameApplicationValidatorMethod(String newValue) {
+        String message = null;
+
+        final String newName = newValue;
+        try {
+            Long count = doInTransaction(new PersistenceAction<Long>() {
+
+                public Long execute(EntityManager em) {
+                    Query query = em.createNamedQuery((currentSprint.isNew()) ? "sprint.new.countByNameAndProject" : "sprint.countByNameAndProject");
+                    query.setParameter("name", newName);
+                    query.setParameter("project", getProjectManager().getCurrentProject());
+                    if (!currentSprint.isNew()) {
+                        query.setParameter("currentSprint", currentSprint);
+                    }
+                    return (Long) query.getSingleResult();
+                }
+            });
+            if (count != null && count > 0) {
+                message = getFacesMessageForKey("sprint.form.label.name.unique").getSummary();
+            }
+        } catch (ManagerException ex) {
+            Logger.getLogger(SprintManager.class.getName()).log(Level.SEVERE, null, ex);
+        }
+
+        return message;
+    }
+
+    public String cancelEdit() {
+        return "show";
+    }
+
+    public String showStories() {
+        setCurrentSprint(sprints.getRowData());
+        return "showStories";
+    }
+
+    public String showDashboard() {
+        setCurrentSprint(sprints.getRowData());
+        return "showDashboard";
+    }
+
+    public Sprint getCurrentSprint() {
+        return currentSprint;
+    }
+
+    public void setCurrentSprint(Sprint currentSprint) {
+        this.currentSprint = currentSprint;
+    }
+
+    public DataModel<Sprint> getSprints() {
+        this.sprints = new ListDataModel<Sprint>(projectManager.getCurrentProject().getSprints());
+        return this.sprints;
+    }
+
+    public void setSprints(DataModel<Sprint> sprints) {
+        this.sprints = sprints;
+    }
+
+    public ProjectManager getProjectManager() {
+        return projectManager;
+    }
+
+    public void setProjectManager(ProjectManager projectManager) {
+        this.projectManager = projectManager;
+    }
+
+    public Project getProject() {
+        Project pmCurrentProject = projectManager.getCurrentProject();
+        // Verify if the currentProject is out of date
+        // If there is a new CurrentProject we need to update sprintList and set currentSprint to null and tell user he/she needs to select a Sprint
+        if (pmCurrentProject != currentProject) {
+            this.setCurrentSprint(null);
+            this.sprintList = pmCurrentProject.getSprints();
+            this.sprints = new ListDataModel<Sprint>(sprintList);
+            this.currentProject = pmCurrentProject;
+        }
+        return currentProject;
+    }
+
+    public void setProject(Project project) {
+        projectManager.setCurrentProject(project);
+    }
+
+
+}
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/java/jsf2/demo/scrum/web/controller/StoryManager.java b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/java/jsf2/demo/scrum/web/controller/StoryManager.java
new file mode 100644
index 0000000..27641b7
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/java/jsf2/demo/scrum/web/controller/StoryManager.java
@@ -0,0 +1,275 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package jsf2.demo.scrum.web.controller;
+
+import jsf2.demo.scrum.model.entities.Sprint;
+import jsf2.demo.scrum.model.entities.Story;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
+import javax.faces.application.FacesMessage;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.ManagedProperty;
+import javax.faces.bean.SessionScoped;
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.model.DataModel;
+import javax.faces.model.ListDataModel;
+import javax.faces.validator.ValidatorException;
+import javax.persistence.EntityManager;
+import javax.persistence.Query;
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+
+ at ManagedBean(name = "storyManager")
+ at SessionScoped
+public class StoryManager extends AbstractManager implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+    @ManagedProperty("#{sprintManager}")
+    private SprintManager sprintManager;
+    private Story currentStory;
+    private DataModel<Story> stories;
+    private List<Story> storyList;
+
+    @PostConstruct
+    public void construct() {
+        init();
+    }
+
+    @PreDestroy
+    public void destroy() {
+        sprintManager = null;
+        currentStory = null;
+        stories = null;
+        if (null != storyList) {
+            storyList.clear();
+            storyList = null;
+        }
+        FacesContext.getCurrentInstance().getExternalContext().getSessionMap().remove("storyManager");
+
+    }
+
+    public void init() {
+
+        Sprint currentSprint = sprintManager.getCurrentSprint();
+
+        if (currentSprint != null) {
+            Story story = new Story();
+            setStoryList(new LinkedList<Story>(currentSprint.getStories()));
+            story.setSprint(currentSprint);
+            setCurrentStory(story);
+        } else {
+            setStoryList(new ArrayList<Story>());
+        }
+        stories = new ListDataModel<Story>(getStoryList());
+    }
+
+    public String create() {
+        Story story = new Story();
+        story.setSprint(sprintManager.getCurrentSprint());
+        setCurrentStory(story);
+        return "create";
+    }
+
+    public String save() {
+        if (currentStory != null) {
+            try {
+                Story merged = doInTransaction(new PersistenceAction<Story>() {
+
+                    public Story execute(EntityManager em) {
+                        if (currentStory.isNew()) {
+                            em.persist(currentStory);
+                        } else if (!em.contains(currentStory)) {
+                            return em.merge(currentStory);
+                        }
+                        return currentStory;
+                    }
+                });
+                if (!currentStory.equals(merged)) {
+                    setCurrentStory(merged);
+                    int idx = getStoryList().indexOf(currentStory);
+                    if (idx != -1) {
+                        getStoryList().set(idx, merged);
+                    }
+                }
+                sprintManager.getCurrentSprint().addStory(merged);
+                if (!storyList.contains(merged)) {
+                    getStoryList().add(merged);
+                }
+            } catch (Exception e) {
+                getLogger(getClass()).log(Level.SEVERE, "Error on try to save Story: " + currentStory, e);
+                addMessage("Error on try to save Story", FacesMessage.SEVERITY_ERROR);
+                return null;
+            }
+        }
+        return "show";
+    }
+
+    public String edit() {
+        setCurrentStory(stories.getRowData());
+        return "edit";
+    }
+
+    public String remove() {
+        final Story story = stories.getRowData();
+        if (story != null) {
+            try {
+                doInTransaction(new PersistenceActionWithoutResult() {
+
+                    public void execute(EntityManager em) {
+                        if (em.contains(story)) {
+                            em.remove(story);
+                        } else {
+                            em.remove(em.merge(story));
+                        }
+                    }
+                });
+                sprintManager.getCurrentSprint().removeStory(story);
+                getStoryList().remove(story);
+            } catch (Exception e) {
+                getLogger(getClass()).log(Level.SEVERE, "Error on try to remove Story: " + currentStory, e);
+                addMessage("Error on try to remove Story", FacesMessage.SEVERITY_ERROR);
+                return null;
+            }
+        }
+        return "show";
+    }
+
+    public void checkUniqueStoryName(FacesContext context, UIComponent component, Object newValue) {
+        final String newName = (String) newValue;
+        try {
+            Long count = doInTransaction(new PersistenceAction<Long>() {
+
+                public Long execute(EntityManager em) {
+                    Query query = em.createNamedQuery((currentStory.isNew()) ? "story.new.countByNameAndSprint" : "story.countByNameAndSprint");
+                    query.setParameter("name", newName);
+                    query.setParameter("sprint", sprintManager.getCurrentSprint());
+                    if (!currentStory.isNew()) {
+                        query.setParameter("currentStory", currentStory);
+                    }
+                    return (Long) query.getSingleResult();
+                }
+            });
+            if (count != null && count > 0) {
+                throw new ValidatorException(getFacesMessageForKey("story.form.label.name.unique"));
+            }
+        } catch (ManagerException ex) {
+            Logger.getLogger(StoryManager.class.getName()).log(Level.SEVERE, null, ex);
+        }
+    }
+
+    public String cancelEdit() {
+        return "show";
+    }
+
+    public String showTasks() {
+        setCurrentStory(stories.getRowData());
+        return "showTasks";
+    }
+
+    public Story getCurrentStory() {
+        return currentStory;
+    }
+
+    public void setCurrentStory(Story currentStory) {
+        this.currentStory = currentStory;
+    }
+
+    public DataModel<Story> getStories() {
+        if (sprintManager.getCurrentSprint() != null) {
+            this.stories = new ListDataModel<Story>(sprintManager.getCurrentSprint().getStories());
+            return stories;
+        } else {
+            return new ListDataModel<Story>();
+        }
+    }
+
+    public void setStories(DataModel<Story> stories) {
+        this.stories = stories;
+    }
+
+    public Sprint getSprint() {
+        return sprintManager.getCurrentSprint();
+    }
+
+    public void setSprint(Sprint sprint) {
+        sprintManager.setCurrentSprint(sprint);
+    }
+
+    /**
+     * @return the storyList
+     */
+    public List<Story> getStoryList() {
+        if (sprintManager.getCurrentSprint() != null) {
+            this.storyList = sprintManager.getCurrentSprint().getStories();
+        }
+        return this.storyList;
+    }
+
+    /**
+     * @param storyList the storyList to set
+     */
+    public void setStoryList(List<Story> storyList) {
+        this.storyList = storyList;
+    }
+
+    /**
+     * @return the sprintManager
+     */
+    public SprintManager getSprintManager() {
+        return sprintManager;
+    }
+
+    /**
+     * @param sprintManager the sprintManager to set
+     */
+    public void setSprintManager(SprintManager sprintManager) {
+        this.sprintManager = sprintManager;
+    }
+
+
+}
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/java/jsf2/demo/scrum/web/controller/TaskManager.java b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/java/jsf2/demo/scrum/web/controller/TaskManager.java
new file mode 100644
index 0000000..0214a4f
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/java/jsf2/demo/scrum/web/controller/TaskManager.java
@@ -0,0 +1,252 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package jsf2.demo.scrum.web.controller;
+
+import jsf2.demo.scrum.model.entities.Story;
+import jsf2.demo.scrum.model.entities.Task;
+
+import javax.annotation.PostConstruct;
+import javax.faces.application.FacesMessage;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.ManagedProperty;
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.model.DataModel;
+import javax.faces.model.ListDataModel;
+import javax.faces.validator.ValidatorException;
+import javax.persistence.EntityManager;
+import javax.persistence.Query;
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.annotation.PreDestroy;
+import javax.faces.bean.CustomScoped;
+import jsf2.demo.scrum.web.scope.TaskScopeResolver;
+
+/**
+ * @author Dr. Spock (spock at dev.java.net)
+ */
+ at ManagedBean(name = "taskManager")
+ at CustomScoped(value="#{taskScope}")
+public class TaskManager extends AbstractManager implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+    private Task currentTask;
+    private DataModel<Task> tasks;
+    private List<Task> taskList;
+    @ManagedProperty("#{storyManager}")
+    private StoryManager storyManager;
+
+    @PostConstruct
+    public void construct() {
+        getLogger(getClass()).log(Level.INFO, "new intance of taskManager in taskScope");
+        init();
+    }
+
+    public void init() {
+        Task task = new Task();
+        Story currentStory = storyManager.getCurrentStory();
+        task.setStory(currentStory);
+        setCurrentTask(task);
+        if (currentStory != null) {
+            taskList = new LinkedList<Task>(currentStory.getTasks());
+        } else {
+            taskList = new ArrayList<Task>();
+        }
+        tasks = new ListDataModel<Task>(taskList);
+    }
+
+    public String create() {
+        Task task = new Task();
+        task.setStory(storyManager.getCurrentStory());
+        setCurrentTask(task);
+        return "create";
+    }
+
+    public String save() {
+        if (currentTask != null) {
+            try {
+                Task merged = doInTransaction(new PersistenceAction<Task>() {
+
+                    public Task execute(EntityManager em) {
+                        if (currentTask.isNew()) {
+                            em.persist(currentTask);
+                        } else if (!em.contains(currentTask)) {
+                            return em.merge(currentTask);
+                        }
+                        return currentTask;
+                    }
+                });
+                if (!currentTask.equals(merged)) {
+                    setCurrentTask(merged);
+                    int idx = taskList.indexOf(currentTask);
+                    if (idx != -1) {
+                        taskList.set(idx, merged);
+                    }
+                }
+                storyManager.getCurrentStory().addTask(merged);
+                if (!taskList.contains(merged)) {
+                    taskList.add(merged);
+                }
+            } catch (Exception e) {
+                getLogger(getClass()).log(Level.SEVERE, "Error on try to save Task: " + currentTask, e);
+                addMessage("Error on try to save Task", FacesMessage.SEVERITY_ERROR);
+                return null;
+            }
+        }
+        return "show";
+    }
+
+    public String edit() {
+        setCurrentTask(tasks.getRowData());
+        return "edit";
+    }
+
+    public String remove() {
+        final Task task = tasks.getRowData();
+        if (task != null) {
+            try {
+                doInTransaction(new PersistenceActionWithoutResult() {
+
+                    public void execute(EntityManager em) {
+                        if (em.contains(task)) {
+                            em.remove(task);
+                        } else {
+                            em.remove(em.merge(task));
+                        }
+                    }
+                });
+                storyManager.getCurrentStory().removeTask(task);
+                taskList.remove(task);
+            } catch (Exception e) {
+                getLogger(getClass()).log(Level.SEVERE, "Error on try to remove Task: " + currentTask, e);
+                addMessage("Error on try to remove Task", FacesMessage.SEVERITY_ERROR);
+                return null;
+            }
+        }
+        return "show";
+    }
+
+    public void checkUniqueTaskName(FacesContext context, UIComponent component, Object newValue) {
+        final String newName = (String) newValue;
+        try {
+            Long count = doInTransaction(new PersistenceAction<Long>() {
+
+                public Long execute(EntityManager em) {
+                    Query query = em.createNamedQuery((currentTask.isNew()) ? "task.new.countByNameAndStory" : "task.countByNameAndStory");
+                    query.setParameter("name", newName);
+                    query.setParameter("story", storyManager.getCurrentStory());
+                    if (!currentTask.isNew()) {
+                        query.setParameter("currentTask", (!currentTask.isNew()) ? currentTask : null);
+                    }
+                    return (Long) query.getSingleResult();
+                }
+            });
+            if (count != null && count > 0) {
+                throw new ValidatorException(getFacesMessageForKey("task.form.label.name.unique"));
+            }
+        } catch (ManagerException ex) {
+            Logger.getLogger(TaskManager.class.getName()).log(Level.SEVERE, null, ex);
+        }
+    }
+
+    public String cancelEdit() {
+        return "show";
+    }
+
+    public Task getCurrentTask() {
+        return currentTask;
+    }
+
+    public void setCurrentTask(Task currentTask) {
+        this.currentTask = currentTask;
+    }
+
+    public DataModel<Task> getTasks() {
+        this.tasks = new ListDataModel<Task>(storyManager.getCurrentStory().getTasks());
+        return tasks;
+    }
+
+    public void setTasks(DataModel<Task> tasks) {
+        this.tasks = tasks;
+    }
+
+    public Story getStory() {
+        return storyManager.getCurrentStory();
+    }
+
+    public void setStory(Story story) {
+        storyManager.setCurrentStory(story);
+    }
+
+    public StoryManager getStoryManager() {
+        return storyManager;
+    }
+
+    public void setStoryManager(StoryManager storyManager) {
+        this.storyManager = storyManager;
+    }
+
+    public String showStories() {
+        endScope();
+        return "/story/show";
+    }
+
+    private void endScope() {
+        TaskScopeResolver.destroyScope();
+    }
+
+    @PreDestroy
+    public void destroy() {
+        getLogger(getClass()).log(Level.INFO, "destroy intance of taskManager in taskScope");
+	currentTask = null;
+	tasks = null;
+	if (null != taskList) {
+	    taskList.clear();
+	    taskList = null;
+	}
+	storyManager = null;
+    }
+
+}
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/java/jsf2/demo/scrum/web/event/CurrentProjectChangeEvent.java b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/java/jsf2/demo/scrum/web/event/CurrentProjectChangeEvent.java
new file mode 100644
index 0000000..47f22be
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/java/jsf2/demo/scrum/web/event/CurrentProjectChangeEvent.java
@@ -0,0 +1,55 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package jsf2.demo.scrum.web.event;
+
+import javax.faces.event.SystemEvent;
+
+/**
+ *
+ * @author Dr. Spock (spock at dev.java.net)
+ */
+public class CurrentProjectChangeEvent extends SystemEvent {
+    private static final long serialVersionUID = -5633456683147546243L;
+
+    public CurrentProjectChangeEvent(Object source) {
+        super(source);
+    }
+}
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/java/jsf2/demo/scrum/web/event/CurrentSprintChangeEvent.java b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/java/jsf2/demo/scrum/web/event/CurrentSprintChangeEvent.java
new file mode 100644
index 0000000..7524179
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/java/jsf2/demo/scrum/web/event/CurrentSprintChangeEvent.java
@@ -0,0 +1,55 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package jsf2.demo.scrum.web.event;
+
+import javax.faces.event.SystemEvent;
+
+/**
+ *
+ * @author Dr. Spock (spock at dev.java.net)
+ */
+public class CurrentSprintChangeEvent extends SystemEvent {
+    private static final long serialVersionUID = -4000646623469835514L;
+
+    public CurrentSprintChangeEvent(Object source) {
+        super(source);
+    }
+}
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/java/jsf2/demo/scrum/web/event/CurrentStoryChangeEvent.java b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/java/jsf2/demo/scrum/web/event/CurrentStoryChangeEvent.java
new file mode 100644
index 0000000..0b3f78f
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/java/jsf2/demo/scrum/web/event/CurrentStoryChangeEvent.java
@@ -0,0 +1,55 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package jsf2.demo.scrum.web.event;
+
+import javax.faces.event.SystemEvent;
+
+/**
+ *
+ * @author Dr. Spock (spock at dev.java.net)
+ */
+public class CurrentStoryChangeEvent extends SystemEvent {
+    private static final long serialVersionUID = -6484414742384961535L;
+
+    public CurrentStoryChangeEvent(Object source) {
+        super(source);
+    }
+}
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/java/jsf2/demo/scrum/web/event/CurrentTaskChangeEvent.java b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/java/jsf2/demo/scrum/web/event/CurrentTaskChangeEvent.java
new file mode 100644
index 0000000..a998480
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/java/jsf2/demo/scrum/web/event/CurrentTaskChangeEvent.java
@@ -0,0 +1,55 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package jsf2.demo.scrum.web.event;
+
+import javax.faces.event.SystemEvent;
+
+/**
+ *
+ * @author Dr. Spock (spock at dev.java.net)
+ */
+public class CurrentTaskChangeEvent extends SystemEvent {
+    private static final long serialVersionUID = 5152005639803302363L;
+
+    public CurrentTaskChangeEvent(Object source) {
+        super(source);
+    }
+}
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/java/jsf2/demo/scrum/web/helper/ProjectConverter.java b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/java/jsf2/demo/scrum/web/helper/ProjectConverter.java
new file mode 100644
index 0000000..5750613
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/java/jsf2/demo/scrum/web/helper/ProjectConverter.java
@@ -0,0 +1,82 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package jsf2.demo.scrum.web.helper;
+
+import jsf2.demo.scrum.model.entities.Project;
+
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.convert.Converter;
+import javax.faces.convert.ConverterException;
+import javax.faces.convert.FacesConverter;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * @author Dr. Spock (spock at dev.java.net)
+ */
+ at FacesConverter(forClass = Project.class)
+public class ProjectConverter implements Converter {
+
+    private static Map<Long, Project> cache = new HashMap<Long, Project>();
+
+    public Object getAsObject(FacesContext context, UIComponent component, String value) {
+        if (value == null || value.equals("0")) {
+            return null;
+        }
+        try {
+            return cache.get(Long.parseLong(value));
+        } catch (NumberFormatException e) {
+            throw new ConverterException("Invalid value: " + value, e);
+        }
+    }
+
+    public String getAsString(FacesContext context, UIComponent component, Object object) {
+        Project project = (Project) object;
+        Long id = project.getId();
+        if (id != null) {
+            cache.put(id, project);
+            return String.valueOf(id.longValue());
+        } else {
+            return "0";
+        }
+    }
+}
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/java/jsf2/demo/scrum/web/scope/TaskScope.java b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/java/jsf2/demo/scrum/web/scope/TaskScope.java
new file mode 100644
index 0000000..cbfcc28
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/java/jsf2/demo/scrum/web/scope/TaskScope.java
@@ -0,0 +1,75 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package jsf2.demo.scrum.web.scope;
+
+import java.util.concurrent.ConcurrentHashMap;
+import javax.faces.application.Application;
+import javax.faces.context.FacesContext;
+import javax.faces.event.PostConstructCustomScopeEvent;
+import javax.faces.event.PreDestroyCustomScopeEvent;
+import javax.faces.event.ScopeContext;
+
+/**
+ * Actually, custom scope is a Map where the instances of managed bean are store.
+ */
+public class TaskScope extends ConcurrentHashMap<String,Object> {
+
+    private Application application;
+    private static final long serialVersionUID = -7242422398841995164L;
+
+
+    public TaskScope(Application application) {
+        this.application = application;   
+    }
+
+    //will call the postConstruct method.
+    public void notifyCreate(String scopeName, FacesContext facesContext) {
+        ScopeContext scopeContext = new ScopeContext(scopeName, this);
+        application.publishEvent(facesContext, PostConstructCustomScopeEvent.class, scopeContext);
+    }
+
+    //will call the preDestroy method.
+    public void notifyDestroy(String scopeName, FacesContext facesContext) {
+        ScopeContext scopeContext = new ScopeContext(scopeName, this);
+        application.publishEvent(facesContext, PreDestroyCustomScopeEvent.class, scopeContext);
+    }
+
+}
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/java/jsf2/demo/scrum/web/scope/TaskScopeResolver.java b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/java/jsf2/demo/scrum/web/scope/TaskScopeResolver.java
new file mode 100644
index 0000000..4c7f989
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/java/jsf2/demo/scrum/web/scope/TaskScopeResolver.java
@@ -0,0 +1,136 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package jsf2.demo.scrum.web.scope;
+
+import java.beans.FeatureDescriptor;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.Map;
+import javax.el.ELContext;
+import javax.el.ELResolver;
+import javax.el.PropertyNotFoundException;
+import javax.faces.context.FacesContext;
+
+/**
+ * Resolver to #{taskScope} expression.
+ * @author eder
+ */
+public class TaskScopeResolver extends ELResolver {
+
+    private static final String SCOPE_NAME = "taskScope";
+
+    @Override
+    public Class<?> getCommonPropertyType(ELContext context, Object base) {
+        if (base != null) {
+            return null;
+        }
+        return String.class;
+    }
+
+    @Override
+    public Iterator<FeatureDescriptor> getFeatureDescriptors(ELContext context, Object base) {
+        return Collections.<FeatureDescriptor>emptyList().iterator();
+    }
+
+    @Override
+    public Class<?> getType(ELContext context, Object base, Object property) {
+        return Object.class;
+    }
+
+    @Override
+    public Object getValue(ELContext context, Object scope, Object property) {
+        if (property == null) {
+            throw new PropertyNotFoundException();
+        }
+        if (scope == null && SCOPE_NAME.equals(property.toString())) {
+            TaskScope scopeManager = getScope(context);
+            context.setPropertyResolved(true);
+            return scopeManager;
+        } else if (scope != null && scope instanceof TaskScope) {
+            //looking for bean in scope already created.
+            return lookupBean(context, (TaskScope) scope, property.toString());
+        } else if (scope == null) {
+            return lookupBean(context, getScope(context), property.toString());
+        }
+        return null;
+    }
+
+    @Override
+    public boolean isReadOnly(ELContext context, Object base, Object property) {
+        return true;
+    }
+
+    @Override
+    public void setValue(ELContext context, Object base, Object property, Object value) {
+    }
+
+    private TaskScope getScope(ELContext context) {
+        //looking for custom scope in the session
+        //if doesn't exists create and put it in the session
+        FacesContext facesContext = (FacesContext) context.getContext(FacesContext.class);
+        Map<String,Object> sessionMap = facesContext.getExternalContext().getSessionMap();
+
+        TaskScope scopeManager = (TaskScope) sessionMap.get(SCOPE_NAME);
+        if (scopeManager == null) {
+            scopeManager = new TaskScope(facesContext.getApplication());
+            sessionMap.put(SCOPE_NAME, scopeManager);
+            scopeManager.notifyCreate(SCOPE_NAME,facesContext);
+        }
+        return scopeManager;
+    }
+
+    private Object lookupBean(ELContext context, TaskScope scope, String key) {
+        //looking for mbean in taskScope
+        Object value = scope.get(key);
+        context.setPropertyResolved(value != null);
+        return value;
+    }
+
+    public static void destroyScope() {
+        //remove scope from the session
+        FacesContext ctx = FacesContext.getCurrentInstance();
+        Map<String,Object> sessionMap = ctx.getExternalContext().getSessionMap();
+        TaskScope taskScope = (TaskScope) sessionMap.remove(SCOPE_NAME);
+        if (taskScope != null)
+            taskScope.notifyDestroy(SCOPE_NAME, ctx);
+    }
+
+}
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/resources/META-INF/persistence.xml b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/resources/META-INF/persistence.xml
new file mode 100644
index 0000000..6619028
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/resources/META-INF/persistence.xml
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<persistence version="2.0"
+             xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+             xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
+    <persistence-unit name="scrumtoysPU" transaction-type="JTA">
+        <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
+        <class>jsf2.demo.scrum.model.entities.Project</class>
+        <class>jsf2.demo.scrum.model.entities.Sprint</class>
+        <class>jsf2.demo.scrum.model.entities.Story</class>
+        <class>jsf2.demo.scrum.model.entities.Task</class>
+        <validation-mode>NONE</validation-mode>
+        <properties>
+            <property name="eclipselink.target-database" value="Auto"/>
+            <property name="eclipselink.ddl-generation" value="create-tables"/>
+        </properties>
+    </persistence-unit>
+</persistence>
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/resources/ValidationMessages.properties b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/resources/ValidationMessages.properties
new file mode 100644
index 0000000..efd6ed0
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/resources/ValidationMessages.properties
@@ -0,0 +1,41 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
+sprint.form.label.name.unique=Sprint name must be unique within a project
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/resources/ValidationMessages_pt_BR.properties b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/resources/ValidationMessages_pt_BR.properties
new file mode 100644
index 0000000..efd6ed0
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/resources/ValidationMessages_pt_BR.properties
@@ -0,0 +1,41 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
+sprint.form.label.name.unique=Sprint name must be unique within a project
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/resources/i18n.properties b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/resources/i18n.properties
new file mode 100644
index 0000000..63fd2db
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/resources/i18n.properties
@@ -0,0 +1,301 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
+button.dashboard=Dashboard
+button.delete=Delete
+button.edit=Edit
+button.save=Save
+button.stories=Stories
+button.tasks=Tasks
+home.project.combo.default.item=-- Select one project --
+home.project.combo.label=Project
+label.actions=Actions
+label.code=code
+label.dailyMeeting =Daily Meeting
+label.done=Done Tasks
+label.estimatives=Estimatives
+label.finishedAt=finished at
+label.gainedPoints=Gained Points
+label.goal=Goal
+label.goals=Goals
+label.name=Name
+label.planning1 = Planning 1
+label.planning2 = Planning 2
+label.retrospective=Retrospective
+label.revision=Review
+label.scope=Scope
+label.startedAt=Started at
+label.stories=Stories
+label.story=Story
+label.task=Task
+label.tasks=Tasks
+label.to=to
+label.toFinish=Finish
+label.toRemove=Remove
+label.toStart=Start
+label.todo=Todo Tasks
+label.working=Working Tasks
+menuitem.label.projects=Projects
+menuitem.label.home=Homes
+menuitem.label.changeskin=Change Skin
+menuitem.label.createProject=Create Project
+menuitem.label.dashboard=Dashboard
+menuitem.label.jsf2=More...
+menuitem.label.newsprint=Create Sprint
+menuitem.label.settings=Settings
+menuitem.label.showProjects=View Projects
+menuitem.label.sprints=Sprints
+menuitem.label.sprintslist=View Sprints
+menuitem.label.stories=Stories
+menuitem.label.tasks=Tasks
+menuitem.path.projects=/scrumtoys/project/show.jsf
+menuitem.path.burndown=/scrumtoys/burndown.jsf
+menuitem.path.changeskin=/scrumtoys/skin/changeSkin.jsf
+menuitem.path.createProject=/scrumtoys/project/create.jsf
+menuitem.path.dashboard=/scrumtoys/dashboard.jsf
+menuitem.path.home=/scrumtoys/home.jsf
+menuitem.path.jsf2=/scrumtoys/home.jsf
+menuitem.path.newsprint=/scrumtoys/sprint/create.jsf
+menuitem.path.showProjects=/scrumtoys/project/show.jsf
+menuitem.path.sprints=/scrumtoys/sprint/show.jsf
+menuitem.path.sprintslist=/scrumtoys/sprint/show.jsf
+menuitem.path.stories=stories.jsf
+menuitem.path.tasks=tasks.jsf
+project.create.button.cancel=Cancel
+project.create.button.create=Create Project
+project.create.form.title=Create Project
+project.create.title=Create Project
+project.edit.button.cancel=Cancel
+project.edit.button.update=Update Project
+project.edit.form.title=Edit Project
+project.edit.title=Edit Project
+project.form.label.endDate.pattern=MM/dd/yyyy
+project.form.label.endDate=End Date
+project.form.label.name.required=Describe a short name (30 characters)
+project.form.label.name=Name
+project.form.label.startDate.pattern=MM/dd/yyyy
+project.form.label.startDate.required=Type when this sprint start
+project.form.label.startDate=Start Date
+project.show.button.delete=Delete
+project.show.button.edit=Edit
+project.show.button.home=Home
+project.show.button.newProject=Create New Project
+project.show.button.showSprints=Sprints
+project.show.table.header.actions=Actions
+project.show.table.header.endDate.pattern=MM/dd/yy
+project.show.table.header.endDate=End Date
+project.show.table.header.name=Name
+project.show.table.header.startDate.pattern=MM/dd/yy
+project.show.table.header.startDate=Start Date
+project.show.table.label.empty=There is no project
+project.show.table.title=Projects
+project.show.title=Projects
+sprint.create.button.cancel=Cancel
+sprint.create.button.create=Create Sprint
+sprint.create.form.title=Create Sprint
+sprint.create.title=Create Sprint
+sprint.edit.button.cancel=Cancel
+sprint.edit.button.update=Update Sprint
+sprint.edit.form.title=Edit Sprint
+sprint.edit.title=Edit Sprint
+sprint.form.label.dailyMeetingTime.pattern=HH:mm
+sprint.form.label.dailyMeetingTime.required=Type the dailing meeting time
+sprint.form.label.dailyMeetingTime=Daily Meeting
+sprint.form.label.endDate.pattern=MM/dd/yyyy
+sprint.form.label.endDate=End Date
+sprint.form.label.gainedStoryPoints.required=Type the story points
+sprint.form.label.gainedStoryPoints=Gained Points
+sprint.form.label.goals.required=Describe the goals
+sprint.form.label.goals=Goals
+sprint.form.label.iterationScope.required=Type the iteration scope
+sprint.form.label.iterationScope=Story Points
+sprint.form.label.name.required=Describe a short name (30 characters)
+sprint.form.label.name=Name
+sprint.form.label.project.name=Project
+sprint.form.label.project=Project
+sprint.form.label.startDate.pattern=MM/dd/yyyy
+sprint.form.label.startDate.required=Type when this sprint start
+sprint.form.label.startDate=Start Date
+sprint.show.button.delete=Delete
+sprint.show.button.edit=Edit
+sprint.show.button.home=Home
+sprint.show.button.newSprint=Create New Sprint
+sprint.show.button.showDashboard=Dashboard
+sprint.show.button.showStories=Stories
+sprint.show.table.header.actions=Actions
+sprint.show.table.header.dailyMeetingTime.pattern=HH:mm
+sprint.show.table.header.dailyMeetingTime=Daily Meeting Time
+sprint.show.table.header.goals=Goals
+sprint.show.table.header.name=Name
+sprint.show.table.header.startDate.pattern=MM/dd/yy
+sprint.show.table.header.startDate=Start Date
+sprint.show.table.label.empty=There is no sprint for this project
+sprint.show.table.title=Sprints
+sprint.show.title=Sprints
+sprints.label.dailingmeeting.required=Type the dailing meeting time
+sprints.label.dailyMeetingTime=Daily Meeting
+sprints.label.goals.required=Describe the goals
+sprints.label.goals=Goals
+sprints.label.iterationScope=Story Points
+sprints.label.name.required=Describe a short name (30 characters)
+sprints.label.name=Name
+sprints.label.sprints=Sprints
+sprints.label.startdate.required=Type when this sprint start
+sprints.label.startedAt=Start at
+sprints.label.storypoints.required=Descripte the amount of story points estimated
+sprints.table.title=Sprints
+stories.label.acceptance.required=Describe the acceptance criteria
+stories.label.acceptance=Acceptance
+stories.label.estimation=Story Points
+stories.label.name=Name
+stories.label.newstory=New Story
+stories.label.nostory=There is no stories for this sprint
+stories.label.priority.required=Describe the priority (sequence to do)
+stories.label.priority=Priority
+stories.label.sprint=Sprint
+stories.label.storylist=Stories
+stories.label.storypoints.required=Describe the estimated number of story points
+stories.table.title=Stories
+story.create.button.cancel=Cancel
+story.create.button.create=Create Story
+story.create.form.title=Create Story
+story.create.title=Create Story
+story.edit.button.cancel=Cancel
+story.edit.button.update=Update Story
+story.edit.form.title=Edit Story
+story.edit.title=Edit Story
+story.form.label.acceptance.required=Type acceptance
+story.form.label.acceptance=Acceptance Criteria
+story.form.label.endDate.pattern=MM/dd/yyyy
+story.form.label.endDate=End Date
+story.form.label.estimation.required=Type estimation
+story.form.label.estimation=Estimation
+story.form.label.name.required=Describe a short name (30 characters)
+story.form.label.name=Name
+story.form.label.priority.required=Define the priority
+story.form.label.priority=Priority
+story.form.label.sprint.name=Sprint
+story.form.label.startDate.pattern=MM/dd/yyyy
+story.form.label.startDate.required=Type when this sprint start
+story.form.label.startDate=Start Date
+story.show.button.delete=Delete
+story.show.button.edit=Edit
+story.show.button.newStory=Create New Story
+story.show.button.showSprints=Show Sprints
+story.show.button.showTasks=Tasks
+story.show.table.header.acceptance=Acceptance Criteria
+story.show.table.header.actions=Actions
+story.show.table.header.estimation=Estimation
+story.show.table.header.name=Name
+story.show.table.header.priority=Priority
+story.show.table.header.startDate.pattern=MM/dd/yy
+story.show.table.header.startDate=Start Date
+story.show.table.label.empty=There is no story for this sprint
+story.show.table.title=List of Stories
+story.show.title=List of Stories
+task.create.button.cancel=Cancel
+task.create.button.create=Create Task
+task.create.form.title=Create Task
+task.create.title=Create Task
+task.edit.button.cancel=Cancel
+task.edit.button.update=Update Task
+task.edit.form.title=Edit Task
+task.edit.title=Edit Task
+task.form.label.endDate.pattern=MM/dd/yyyy
+task.form.label.endDate=End Date
+task.form.label.name.required=Describe a short name (30 characters)
+task.form.label.name=Name
+task.form.label.startDate.pattern=MM/dd/yyyy
+task.form.label.startDate.required=Type when this task starts
+task.form.label.startDate=Start Date
+task.form.label.status.required=Specify the current status of the task
+task.form.label.status=Status
+task.form.label.story.name=Story
+task.show.button.delete=Delete
+task.show.button.edit=Edit
+task.show.button.newTask=Create New Task
+task.show.button.showStories=Show Stories
+task.show.button.showTasks=Tasks
+task.show.table.header.actions=Actions
+task.show.table.header.endDate.pattern=MM/dd/yy
+task.show.table.header.endDate=End Date
+task.show.table.header.name=Name
+task.show.table.header.startDate.pattern=MM/dd/yy
+task.show.table.header.startDate=Start Date
+task.show.table.header.status.DONE=Done
+task.show.table.header.status.TODO=Todo
+task.show.table.header.status.WORKING=Working
+task.show.table.header.status=Status
+task.show.table.label.empty=There is no task for this story
+task.show.table.title=Tasks
+task.show.title=Tasks
+tasks.label.name=Name
+tasks.label.story=Story
+taskstatus.done.plural=Done
+taskstatus.done.single=Done
+taskstatus.todo.plural=Opened
+taskstatus.todo.single=Opened
+taskstatus.working.plural=Working
+taskstatus.working.single=Working
+project.form.label.name.unique=There is another project with same name
+sprint.form.label.name.unique=There is another sprint with same name for this project
+story.form.label.name.unique=There is another story with same name for this sprint
+task.form.label.name.unique=There is another task with same name for this story
+
+template.title=JSF 2.0 Demo - Scrum Whiteboard Application
+menuitem.label.about=About
+menuitem.label.jsr314=JSR 314
+menuitem.label.irc=IRC
+menuitem.label.documentation=Documentation
+menuitem.path.irc=http://weblogs.java.net/blog/edburns/archive/2007/01/jsf_irc_channel.html
+menuitem.path.jsr314=http://www.jcp.org/en/jsr/detail?id=314#
+menuitem.path.about=http://www.globalcode.com.br/site/noticias/jsf2scrumdemo.seam
+menuitem.path.documentation=http://java.sun.com/javaee/javaserverfaces/
+task.form.label.sprint.name=Sprint
+task.show.nostory=Select a Story first
+stories.show.nosprint=Select a Sprint first
+sprint.form.label.noproject=Select a Sprint first
+sprint.form.label.projects=Projects
+navigation.projects=Projects
+navigation.stories=Stories
+navigation.tasks=Tasks
+navigation.sprints=Sprints
+dashboard.title=Dashboard
+navigation.separtor=>
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/resources/i18n_en_US.properties b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/resources/i18n_en_US.properties
new file mode 100644
index 0000000..9fd9acb
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/resources/i18n_en_US.properties
@@ -0,0 +1,305 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
+button.dashboard=Dashboard
+button.delete=Delete
+button.edit=Edit
+button.save=Save
+button.stories=Stories
+button.tasks=Tasks
+home.project.combo.default.item=-- Select one project --
+home.project.combo.label=Project
+label.actions=Actions
+label.code=code
+label.dailyMeeting =Daily Meeting
+label.done=Done Tasks
+label.estimatives=Estimatives
+label.finishedAt=finished at
+label.gainedPoints=Gained Points
+label.goal=Goal
+label.goals=Goals
+label.name=Name
+label.planning1 = Planning 1
+label.planning2 = Planning 2
+label.retrospective=Retrospective
+label.revision=Review
+label.scope=Scope
+label.startedAt=Started at
+label.stories=Stories
+label.story=Story
+label.task=Task
+label.tasks=Tasks
+label.to=to
+label.toFinish=Finish
+label.toRemove=Remove
+label.toStart=Start
+label.todo=Todo Tasks
+label.working=Working Tasks
+menuitem.label.projects=Projects
+menuitem.label.home=Home
+menuitem.label.changeskin=Change Skin
+menuitem.label.createProject=Create Project
+menuitem.label.dashboard=Dashboard
+menuitem.label.jsf2=More...
+menuitem.label.newsprint=Create Sprint
+menuitem.label.settings=Settings
+menuitem.label.showProjects=View Projects
+menuitem.label.sprints=Sprints
+menuitem.label.sprintslist=View Sprints
+menuitem.label.stories=Stories
+menuitem.label.tasks=Tasks
+menuitem.path.projects=/scrumtoys/project/show.jsf
+<<<<<<< .mine
+menuitem.path.changeskin=/scrumtoys/skin/changeSkin.jsf
+=======
+menuitem.path.burndown=/scrumtoys/burndown.jsf
+menuitem.path.changeskin=/scrumtoys/skin/changeSkin.jsf
+>>>>>>> .r7360
+menuitem.path.createProject=/scrumtoys/project/create.jsf
+menuitem.path.dashboard=/scrumtoys/dashboard.jsf
+menuitem.path.home=/scrumtoys/home.jsf
+menuitem.path.jsf2=/scrumtoys/home.jsf
+menuitem.path.newsprint=/scrumtoys/sprint/create.jsf
+menuitem.path.showProjects=/scrumtoys/project/show.jsf
+menuitem.path.sprints=/scrumtoys/sprint/show.jsf
+menuitem.path.sprintslist=/scrumtoys/sprint/show.jsf
+menuitem.path.stories=stories.jsf
+menuitem.path.tasks=tasks.jsf
+project.create.button.cancel=Cancel
+project.create.button.create=Create Project
+project.create.form.title=Create Project
+project.create.title=Create Project
+project.edit.button.cancel=Cancel
+project.edit.button.update=Update Project
+project.edit.form.title=Edit Project
+project.edit.title=Edit Project
+project.form.label.endDate.pattern=MM/dd/yyyy
+project.form.label.endDate=End Date
+project.form.label.name.required=Describe a short name (30 characters)
+project.form.label.name=Name
+project.form.label.startDate.pattern=MM/dd/yyyy
+project.form.label.startDate.required=Type when this sprint start
+project.form.label.startDate=Start Date
+project.show.button.delete=Delete
+project.show.button.edit=Edit
+project.show.button.home=Home
+project.show.button.newProject=Create New Project
+project.show.button.showSprints=Sprints
+project.show.table.header.actions=Actions
+project.show.table.header.endDate.pattern=MM/dd/yy
+project.show.table.header.endDate=End Date
+project.show.table.header.name=Name
+project.show.table.header.startDate.pattern=MM/dd/yy
+project.show.table.header.startDate=Start Date
+project.show.table.label.empty=There is no project
+project.show.table.title=Projects
+project.show.title=Projects
+sprint.create.button.cancel=Cancel
+sprint.create.button.create=Create Sprint
+sprint.create.form.title=Create Sprint
+sprint.create.title=Create Sprint
+sprint.edit.button.cancel=Cancel
+sprint.edit.button.update=Update Sprint
+sprint.edit.form.title=Edit Sprint
+sprint.edit.title=Edit Sprint
+sprint.form.label.dailyMeetingTime.pattern=HH:mm
+sprint.form.label.dailyMeetingTime.required=Type the dailing meeting time
+sprint.form.label.dailyMeetingTime=Daily Meeting
+sprint.form.label.endDate.pattern=MM/dd/yyyy
+sprint.form.label.endDate=End Date
+sprint.form.label.gainedStoryPoints.required=Type the story points
+sprint.form.label.gainedStoryPoints=Gained Points
+sprint.form.label.goals.required=Describe the goals
+sprint.form.label.goals=Goals
+sprint.form.label.iterationScope.required=Type the iteration scope
+sprint.form.label.iterationScope=Story Points
+sprint.form.label.name.required=Describe a short name (30 characters)
+sprint.form.label.name=Name
+sprint.form.label.project.name=Project
+sprint.form.label.project=Project
+sprint.form.label.startDate.pattern=MM/dd/yyyy
+sprint.form.label.startDate.required=Type when this sprint start
+sprint.form.label.startDate=Start Date
+sprint.show.button.delete=Delete
+sprint.show.button.edit=Edit
+sprint.show.button.home=Home
+sprint.show.button.newSprint=Create New Sprint
+sprint.show.button.showDashboard=Dashboard
+sprint.show.button.showStories=Stories
+sprint.show.table.header.actions=Actions
+sprint.show.table.header.dailyMeetingTime.pattern=HH:mm
+sprint.show.table.header.dailyMeetingTime=Daily Meeting Time
+sprint.show.table.header.goals=Goals
+sprint.show.table.header.name=Name
+sprint.show.table.header.startDate.pattern=MM/dd/yy
+sprint.show.table.header.startDate=Start Date
+sprint.show.table.label.empty=There is no sprint for this project
+sprint.show.table.title=Sprints
+sprint.show.title=Sprints
+sprints.label.dailingmeeting.required=Type the dailing meeting time
+sprints.label.dailyMeetingTime=Daily Meeting
+sprints.label.goals.required=Describe the goals
+sprints.label.goals=Goals
+sprints.label.iterationScope=Story Points
+sprints.label.name.required=Describe a short name (30 characters)
+sprints.label.name=Name
+sprints.label.sprints=Sprints
+sprints.label.startdate.required=Type when this sprint start
+sprints.label.startedAt=Start at
+sprints.label.storypoints.required=Descripte the amount of story points estimated
+sprints.table.title=Sprints
+stories.label.acceptance.required=Describe the acceptance criteria
+stories.label.acceptance=Acceptance
+stories.label.estimation=Story Points
+stories.label.name=Name
+stories.label.newstory=New Story
+stories.label.nostory=There is no stories for this sprint
+stories.label.priority.required=Describe the priority (sequence to do)
+stories.label.priority=Priority
+stories.label.sprint=Sprint
+stories.label.storylist=Stories
+stories.label.storypoints.required=Describe the estimated number of story points
+stories.table.title=Stories
+story.create.button.cancel=Cancel
+story.create.button.create=Create Story
+story.create.form.title=Create Story
+story.create.title=Create Story
+story.edit.button.cancel=Cancel
+story.edit.button.update=Update Story
+story.edit.form.title=Edit Story
+story.edit.title=Edit Story
+story.form.label.acceptance.required=Type acceptance
+story.form.label.acceptance=Acceptance Criteria
+story.form.label.endDate.pattern=MM/dd/yyyy
+story.form.label.endDate=End Date
+story.form.label.estimation.required=Type estimation
+story.form.label.estimation=Estimation
+story.form.label.name.required=Describe a short name (30 characters)
+story.form.label.name=Name
+story.form.label.priority.required=Define the priority
+story.form.label.priority=Priority
+story.form.label.sprint.name=Sprint
+story.form.label.startDate.pattern=MM/dd/yyyy
+story.form.label.startDate.required=Type when this sprint start
+story.form.label.startDate=Start Date
+story.show.button.delete=Delete
+story.show.button.edit=Edit
+story.show.button.newStory=Create New Story
+story.show.button.showSprints=Show Sprints
+story.show.button.showTasks=Tasks
+story.show.table.header.acceptance=Acceptance Criteria
+story.show.table.header.actions=Actions
+story.show.table.header.estimation=Estimation
+story.show.table.header.name=Name
+story.show.table.header.priority=Priority
+story.show.table.header.startDate.pattern=MM/dd/yy
+story.show.table.header.startDate=Start Date
+story.show.table.label.empty=There is no story for this sprint
+story.show.table.title=List of Stories
+story.show.title=List of Stories
+task.create.button.cancel=Cancel
+task.create.button.create=Create Task
+task.create.form.title=Create Task
+task.create.title=Create Task
+task.edit.button.cancel=Cancel
+task.edit.button.update=Update Task
+task.edit.form.title=Edit Task
+task.edit.title=Edit Task
+task.form.label.endDate.pattern=MM/dd/yyyy
+task.form.label.endDate=End Date
+task.form.label.name.required=Describe a short name (30 characters)
+task.form.label.name=Name
+task.form.label.startDate.pattern=MM/dd/yyyy
+task.form.label.startDate.required=Type when this task starts
+task.form.label.startDate=Start Date
+task.form.label.status.required=Specify the current status of the task
+task.form.label.status=Status
+task.form.label.story.name=Story
+task.show.button.delete=Delete
+task.show.button.edit=Edit
+task.show.button.newTask=Create New Task
+task.show.button.showStories=Show Stories
+task.show.button.showTasks=Tasks
+task.show.table.header.actions=Actions
+task.show.table.header.endDate.pattern=MM/dd/yy
+task.show.table.header.endDate=End Date
+task.show.table.header.name=Name
+task.show.table.header.startDate.pattern=MM/dd/yy
+task.show.table.header.startDate=Start Date
+task.show.table.header.status.DONE=Done
+task.show.table.header.status.TODO=Todo
+task.show.table.header.status.WORKING=Working
+task.show.table.header.status=Status
+task.show.table.label.empty=There is no task for this story
+task.show.table.title=Tasks
+task.show.title=Tasks
+tasks.label.name=Name
+tasks.label.story=Story
+taskstatus.done.plural=Done
+taskstatus.done.single=Done
+taskstatus.todo.plural=Opened
+taskstatus.todo.single=Opened
+taskstatus.working.plural=Working
+taskstatus.working.single=Working
+project.form.label.name.unique=There is another project with same name
+sprint.form.label.name.unique=There is another sprint with same name for this project
+story.form.label.name.unique=There is another story with same name for this sprint
+task.form.label.name.unique=There is another task with same name for this story
+
+template.title=JSF 2.0 Demo - Scrum Whiteboard Application
+menuitem.label.about=About
+menuitem.label.jsr314=JSR 314
+menuitem.label.irc=IRC
+menuitem.label.documentation=Documentation
+menuitem.path.irc=http://weblogs.java.net/blog/edburns/archive/2007/01/jsf_irc_channel.html
+menuitem.path.jsr314=http://www.jcp.org/en/jsr/detail?id=314#
+menuitem.path.about=http://www.globalcode.com.br/site/noticias/jsf2scrumdemo.seam
+menuitem.path.documentation=http://java.sun.com/javaee/javaserverfaces/
+task.form.label.sprint.name=Sprint
+task.show.nostory=Select a Story first
+stories.show.nosprint=Select a Sprint first
+sprint.form.label.noproject=Select a Sprint first
+sprint.form.label.projects=Projects
+navigation.projects=Projects
+navigation.stories=Stories
+navigation.tasks=Tasks
+navigation.sprints=Sprints
+dashboard.title=Dashboard
+navigation.separtor=>
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/resources/i18n_pt_BR.properties b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/resources/i18n_pt_BR.properties
new file mode 100644
index 0000000..7380824
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/resources/i18n_pt_BR.properties
@@ -0,0 +1,305 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
+button.dashboard=Dashboard
+button.delete=Remover
+button.edit=Editar
+button.save=Salvar
+button.stories=Estorias
+button.tasks=Atividades
+home.project.combo.default.item=-- Selecione um projeto --
+home.project.combo.label=Projetos
+label.actions=Acoes
+label.code=codigo
+label.dailyMeeting =Reuniao Diaria
+label.done=Tarefas Feitas
+label.estimatives=Estimativas
+label.finishedAt=terminada em
+label.gainedPoints=Pontos ganhos
+label.goal=Objetivo
+label.goals=Objetivos
+label.name=Nome
+label.planning1 =Planejamento 1
+label.planning2 =Planejamento 2
+label.retrospective=Retrospectiva
+label.revision=Revisao
+label.scope=Escopo
+label.startedAt=Iniciada em
+label.stories=Estorias
+label.story=Estoria
+label.task=Tarefa
+label.tasks=Tarefas
+label.to=a
+label.toFinish=Terminar
+label.toRemove=Apagar
+label.toStart=Iniciar
+label.todo=Tarefas Abertas
+label.working=Tarefas em Andamento
+menuitem.label.projects=Projetos
+menuitem.label.home=Pagina inicial
+menuitem.label.changeskin=Mudar aparencia
+menuitem.label.createProject=Novo Projeto
+menuitem.label.dashboard=Painel
+menuitem.label.jsf2=Mais...
+menuitem.label.newsprint=Novo Sprint
+menuitem.label.settings=Configuracoes
+menuitem.label.showProjects=Ver Projetos
+menuitem.label.sprints=Sprints
+menuitem.label.sprintslist=Ver Sprints
+menuitem.label.stories=Estorias
+menuitem.label.tasks=Tarefas
+menuitem.path.projects=/scrumtoys/project/show.jsf
+<<<<<<< .mine
+menuitem.path.changeskin=/scrumtoys/skin/changeSkin.jsf
+=======
+menuitem.path.burndown=/scrumtoys/burndown.jsf
+menuitem.path.changeskin=/scrumtoys/skin/changeSkin.jsf
+>>>>>>> .r7360
+menuitem.path.createProject=/scrumtoys/project/create.jsf
+menuitem.path.dashboard=/scrumtoys/dashboard.jsf
+menuitem.path.home=/scrumtoys/home.jsf
+menuitem.path.jsf2=/scrumtoys/home.jsf
+menuitem.path.newsprint=/scrumtoys/sprint/create.jsf
+menuitem.path.showProjects=/scrumtoys/project/show.jsf
+menuitem.path.sprints=/scrumtoys/sprint/show.jsf
+menuitem.path.sprintslist=/scrumtoys/sprint/show.jsf
+menuitem.path.stories=stories.jsf
+menuitem.path.tasks=tasks.jsf
+project.create.button.cancel=Cancelar
+project.create.button.create=Criar Projeto
+project.create.form.title=Criar Projeto
+project.create.title=Criar Projeto
+project.edit.button.cancel=Cancelar
+project.edit.button.update=Atualizar Projeto
+project.edit.form.title=Editar Projeto
+project.edit.title=Editar Projeto
+project.form.label.endDate.pattern=MM/dd/yyyy
+project.form.label.endDate=Data Termino
+project.form.label.name.required=Defina um nome (30 characters)
+project.form.label.name=Nome
+project.form.label.startDate.pattern=MM/dd/yyyy
+project.form.label.startDate.required=Defina quanto este projeto inicia
+project.form.label.startDate=Data Inicio
+project.show.button.delete=Apagar
+project.show.button.edit=Editar
+project.show.button.home=Home
+project.show.button.newProject=Criar Novo Projeto
+project.show.button.showSprints=Sprints
+project.show.table.header.actions=Acoes
+project.show.table.header.endDate.pattern=MM/dd/yy
+project.show.table.header.endDate=Data Termino
+project.show.table.header.name=Nome
+project.show.table.header.startDate.pattern=MM/dd/yy
+project.show.table.header.startDate=Data Inicio
+project.show.table.label.empty=Nao existe projeto
+project.show.table.title=Projetos
+project.show.title=Projetos
+sprint.create.button.cancel=Cancelar
+sprint.create.button.create=Criar Sprint
+sprint.create.form.title=Cadastro de Sprint
+sprint.create.title=Cadastro de Sprint
+sprint.edit.button.cancel=Cancelar
+sprint.edit.button.update=Atualizar Sprint
+sprint.edit.form.title=Edicao de Sprint
+sprint.edit.title=Edicao de Sprint
+sprint.form.label.dailyMeetingTime.pattern=HH:mm
+sprint.form.label.dailyMeetingTime.required=Defina o horario da reuniao diacria
+sprint.form.label.dailyMeetingTime=Hora reuniao diaria
+sprint.form.label.endDate.pattern=dd/MM/yyyy
+sprint.form.label.endDate=Data termino
+sprint.form.label.gainedStoryPoints.required=Defina o numero de Story Points estimados
+sprint.form.label.gainedStoryPoints=Story Points ganhos
+sprint.form.label.goals.required=Defina os objetivos do Sprint
+sprint.form.label.goals=Objetivos
+sprint.form.label.iterationScope.required=Defina o numero de iteracoes
+sprint.form.label.iterationScope=Story Points
+sprint.form.label.name.required=Defina um nome para o Sprint (30 caracteres)
+sprint.form.label.name=Nome
+sprint.form.label.project.name=Projeto
+sprint.form.label.project=Projeto
+sprint.form.label.startDate.pattern=dd/MM/yyyy
+sprint.form.label.startDate.required=Data de inicio do Sprint
+sprint.form.label.startDate=Data inicio
+sprint.show.button.delete=Apagar
+sprint.show.button.edit=Editar
+sprint.show.button.home=Home
+sprint.show.button.newSprint=Criar Novo Sprint
+sprint.show.button.showDashboard=Dashboard
+sprint.show.button.showStories=Estorias
+sprint.show.table.header.actions=Acoes
+sprint.show.table.header.dailyMeetingTime.pattern=HH:mm
+sprint.show.table.header.dailyMeetingTime=Hora Reunioes Diarias
+sprint.show.table.header.goals=Objetivos
+sprint.show.table.header.name=Nome
+sprint.show.table.header.startDate.pattern=dd/MM/yy
+sprint.show.table.header.startDate=Data de Inicio
+sprint.show.table.label.empty=Nao existe sprint para este projeto
+sprint.show.table.title=Sprints
+sprint.show.title=Sprints
+sprints.label.dailingmeeting.required=Defina o horario da reuniao diaria
+sprints.label.dailyMeetingTime=Reuniao diaria
+sprints.label.goals.required=Defina os objetivos do Sprint
+sprints.label.goals=Objetivos
+sprints.label.iterationScope=Story Points
+sprints.label.name.required=Defina um nome para o Sprint (30 caracteres)
+sprints.label.name=Nome
+sprints.label.sprints=Sprints
+sprints.label.startdate.required=Digite a data de inicio deste Sprint
+sprints.label.startedAt=Inicia em
+sprints.label.storypoints.required=Defina o numero de Story Points estimados
+sprints.table.title=Sprints
+stories.label.acceptance.required=Defina o criterio de aceitacao
+stories.label.acceptance=Aceite
+stories.label.estimation=Story Points
+stories.label.name=Nome
+stories.label.newstory=Nova Estoria
+stories.label.nostory=Nao ha estorias para este Sprint
+stories.label.priority.required=Defina a prioridade da estoria
+stories.label.priority=Prioridade
+stories.label.sprint=Sprint
+stories.label.storylist=Stories
+stories.label.storypoints.required=Defina o numero de Story Points estimado
+stories.table.title=Estorias
+story.create.button.cancel=Cancelar
+story.create.button.create=Criar Estoria
+story.create.form.title=Criacao de Estoria
+story.create.title=Criacao de Estoria
+story.edit.button.cancel=Cancelar
+story.edit.button.update=Atualizar Estoria
+story.edit.form.title=Editar Estoria
+story.edit.title=Editar Estoria
+story.form.label.acceptance.required=Campo obrigatorio
+story.form.label.acceptance=Criterio de aceitacao
+story.form.label.endDate.pattern=MM/dd/yyyy
+story.form.label.endDate=Data de Temino
+story.form.label.estimation.required=Campo obrigatorio
+story.form.label.estimation=Estimativa
+story.form.label.name.required=Defina um nome para o Sprint (30 caracteres)
+story.form.label.name=Nome
+story.form.label.priority.required=Defina a prioridade
+story.form.label.priority=Prioridade
+story.form.label.sprint.name=Sprint
+story.form.label.startDate.pattern=MM/dd/yyyy
+story.form.label.startDate.required=Defina quando a estoria comeca
+story.form.label.startDate=Data Inicio
+story.show.button.delete=Apagar
+story.show.button.edit=Editar
+story.show.button.newStory=Criar Nova Estoria
+story.show.button.showSprints=Mostrar Sprints
+story.show.button.showTasks=Tarefas
+story.show.table.header.acceptance=Criterio de Aceitacao
+story.show.table.header.actions=Acoes
+story.show.table.header.estimation=Estimativa
+story.show.table.header.name=Nome
+story.show.table.header.priority=Prioridade
+story.show.table.header.startDate.pattern=MM/dd/yy
+story.show.table.header.startDate=Data Inicio
+story.show.table.label.empty=Nao existe estoria para este sprint
+story.show.table.title=Lista de Estorias
+story.show.title=Lista de Estorias
+task.create.button.cancel=Cancelar
+task.create.button.create=Criar Tarefa
+task.create.form.title=Criar Tarefa
+task.create.title=Criar Tarefa
+task.edit.button.cancel=Cancelar
+task.edit.button.update=Atualizar Tarefa
+task.edit.form.title=Editar Tarefa
+task.edit.title=Editar Tarefa
+task.form.label.endDate.pattern=MM/dd/yyyy
+task.form.label.endDate=Data Termino
+task.form.label.name.required=Defina um nome para esta tarefa (30 caracteres)
+task.form.label.name=Nome
+task.form.label.startDate.pattern=MM/dd/yyyy
+task.form.label.startDate.required=Indique quando esta tarefa inicia
+task.form.label.startDate=Data Inicio
+task.form.label.status.required=Especifique o status atual desta tarefa
+task.form.label.status=Status
+task.form.label.story.name=Estoria
+task.show.button.delete=Apagar
+task.show.button.edit=Editar
+task.show.button.newTask=Criar Nova Tarefa
+task.show.button.showStories=Mostrar Estorias
+task.show.button.showTasks=Tarefas
+task.show.table.header.actions=Acoes
+task.show.table.header.endDate.pattern=MM/dd/yy
+task.show.table.header.endDate=Data Termino
+task.show.table.header.name=Nome
+task.show.table.header.startDate.pattern=MM/dd/yy
+task.show.table.header.startDate=Data Inicio
+task.show.table.header.status.DONE=Feito
+task.show.table.header.status.TODO=Para fazer
+task.show.table.header.status.WORKING=Em andamento
+task.show.table.header.status=Status
+task.show.table.label.empty=Nao existe tarefa para esta estoria
+task.show.table.title=Tarefas
+task.show.title=Tarefas
+tasks.label.name=Nome
+tasks.label.story=Estoria
+taskstatus.done.plural=Terminadas
+taskstatus.done.single=Terminada
+taskstatus.todo.plural=Abertas
+taskstatus.todo.single=Aberta
+taskstatus.working.plural=Em andamento
+taskstatus.working.single=Em andamento
+project.form.label.name.unique=Existe outro projeto com o mesmo nome
+sprint.form.label.name.unique=Existe outro sprint com mesmo nome para este projeto
+story.form.label.name.unique=Existe outra Estoria com o mesmo nome para este sprint
+task.form.label.name.unique=Existe outra tarefa com o mesmo nome para esta estoria
+
+template.title=JSF 2.0 Demo - Scrum Whiteboard Application
+menuitem.label.about=Sobre
+menuitem.label.jsr314=JSR 314
+menuitem.label.irc=IRC
+menuitem.label.documentation=Documentacao
+menuitem.path.irc=http://weblogs.java.net/blog/edburns/archive/2007/01/jsf_irc_channel.html
+menuitem.path.jsr314=http://www.jcp.org/en/jsr/detail?id=314#
+menuitem.path.about=http://www.globalcode.com.br/site/noticias/jsf2scrumdemo.seam
+menuitem.path.documentation=http://java.sun.com/javaee/javaserverfaces/
+task.form.label.sprint.name=Sprint
+task.show.nostory=Selecione uma est\u00F3ria primeiro
+stories.show.nosprint=Selecione um sprint primeiro
+sprint.form.label.noproject=Selecione um sprint primeiro
+sprint.form.label.projects=Projetos
+navigation.projects=Projetos
+navigation.stories=Estorias
+navigation.tasks=Tarefas
+navigation.sprints=Sprints
+dashboard.title=Dashboard
+navigation.separtor=>
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/.dashboard.doneTasks.xhtml b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/.dashboard.doneTasks.xhtml
new file mode 100644
index 0000000..29e1fae
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/.dashboard.doneTasks.xhtml
@@ -0,0 +1,80 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+
+	<ui:composition>
+	<h2>#{i18n['label.done']}</h2>
+	<h:panelGroup>
+		#{fn:length(dashboardMB.doneTasks)} #{i18n['label.tasks']}
+	</h:panelGroup>
+	<h:panelGroup>
+			<h:outputLabel value="#{i18n['label.gainedPoints']}:" for="otGainedPoints" style="font-weight: bold" />
+			<h:outputText id="otGainedPoints" value="#{dashboardMB.selectedSprint.gainedStoryPoints}" />
+	</h:panelGroup>
+    <ui:repeat  var="task" value="#{dashboardMB.dmDoneTasks}">
+    <div class="#{task.finished?'closedTask':'openedTask'}">
+    	<span style="font-size: 10px">#{i18n['label.code']} #{task.code}</span>
+    	<br/>
+    	<span style="font-size: 14px">#{task.name}</span>
+    	<br/>
+    	<span style="font-size: 10px">#{task.story.name}</span>
+    	<br/>
+    	<span style="font-size: 10px">#{task.status.single}</span>
+    	<br/>
+        <h:outputText value="#{task.startedAt}">
+    		<f:convertDateTime pattern="dd/MM/yyyy"/>
+    	</h:outputText>
+    	#{i18n['label.to']}
+    	<h:outputText value="#{task.finishedAt}">
+    		<f:convertDateTime pattern="dd/MM/yyyy"/>
+    	</h:outputText>
+    </div>
+    </ui:repeat>
+
+	</ui:composition>
+
+</html>
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/.dashboard.stories.xhtml b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/.dashboard.stories.xhtml
new file mode 100644
index 0000000..c9ee50d
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/.dashboard.stories.xhtml
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+
+	<ui:composition>
+	<h2>#{i18n['label.stories']}</h2>
+	<h:panelGroup>
+		#{fn:length(dashboardMB.selectedSprint.stories)} #{i18n['label.stories']}
+	</h:panelGroup>
+	<h:panelGroup>
+			<h:outputLabel value="#{i18n['label.scope']}:" for="" style="font-weight: bold" />
+			<h:outputText value="#{dashboardMB.selectedSprint.iterationScope}" />
+	</h:panelGroup>
+    <ui:repeat value="#{dashboardMB.dmStories}" var="story">
+    <div class="#{story.finished?'closedStory':'openedStory'}">
+    	<span style="font-size: 10px">#{i18n['label.code']} #{story.code}</span>
+    	<br />
+    	<span style="font-size: 14px">#{story.name}</span>
+    	<br />
+    	<span style="font-size: 10px">#{story.estimation} #{"story points"}</span>
+    	<br />
+        <img src="#{resource['images/checklist7.jpg']}" alt="#{story.acceptance}" title="#{story.acceptance}" />
+    	<br />
+    	<span style="font-size: 10px">#{story.status}</span>
+    	<br/>
+    	<h:commandButton action="#{dashboardMB.startStory}" value="#{i18n['label.toStart']}" rendered="#{empty story.startedAt}" />
+    	<h:commandButton action="#{dashboardMB.finishStory}" value="#{i18n['label.toFinish']}" rendered="#{not empty story.startedAt and empty story.finishedAt}" />
+    	<br/>
+        <h:outputText value="#{story.startedAt}" />
+    	<h:outputLabel value=" #{i18n['label.to']} " rendered="#{not empty story.finishedAt}"/>
+    	<h:outputText value="#{story.finishedAt}">
+    		<f:convertDateTime pattern="dd/MM/yyyy"/>
+    	</h:outputText>
+    </div>
+    </ui:repeat>
+
+	</ui:composition>
+
+</html>
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/.dashboard.todoTasks.xhtml b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/.dashboard.todoTasks.xhtml
new file mode 100644
index 0000000..87d4922
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/.dashboard.todoTasks.xhtml
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:fn="http://java.sun.com/jsp/jstl/functions" 
+      xmlns:appez="http://java.sun.com/jsf/composite/components">
+
+	<ui:composition>
+	<h2>#{i18n['label.todo']}</h2>
+	<h:panelGroup>
+		#{fn:length(dashboardMB.todoTasks)} #{i18n['label.tasks']}
+	</h:panelGroup>
+    <ui:repeat  var="task" value="#{dashboardMB.dmTodoTasks}">
+    <div class="#{task.finished?'closedTask':'openedTask'}">
+    	<span style="font-size: 10px">#{i18n['label.code']} #{task.code}</span>
+    	<br/>
+    	<span style="font-size: 14px">#{task.name}</span>
+    	<br/>
+    	<span style="font-size: 10px">#{task.story.name}</span>
+    	<br/>
+    	<span style="font-size: 10px">#{task.status.single}</span>
+    	<br/>
+    	<h:commandButton action="#{dashboardMB.startTask}" value="#{i18n['label.toStart']}" rendered="#{not empty task.story.startedAt}" />
+    	<h:commandButton action="#{dashboardMB.removeTodoTask}" value="#{i18n['label.toRemove']}"  />
+    </div>
+    </ui:repeat>
+
+	</ui:composition>
+
+</html>
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/.dashboard.workingTasks.xhtml b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/.dashboard.workingTasks.xhtml
new file mode 100644
index 0000000..2b6b122
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/.dashboard.workingTasks.xhtml
@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+
+	<ui:composition>
+	<h2>#{i18n['label.working']}</h2>
+	<h:panelGroup>
+		#{fn:length(dashboardMB.workingTasks)} #{i18n['label.tasks']}
+	</h:panelGroup>
+    <ui:repeat  var="task" value="#{dashboardMB.dmWorkingTasks}">
+    <div class="#{task.finished?'closedTask':'openedTask'}">
+    	<span style="font-size: 10px">#{i18n['label.code']} #{task.code}</span>
+    	<br/>
+    	<span style="font-size: 14px">#{task.name}</span>
+    	<br/>
+    	<span style="font-size: 10px">#{task.story.name}</span>
+    	<br/>
+    	<span style="font-size: 10px">#{task.status.single}</span>
+    	<br/>
+    	<h:commandButton action="#{dashboardMB.finishTask}" value="#{i18n['label.toFinish']}" rendered="#{not empty task.startedAt}" />
+    	<h:commandButton action="#{dashboardMB.removeWorkingTask}" value="#{i18n['label.toRemove']}"  />
+    	<br/>
+    	#{i18n['label.startedAt']}
+        <h:outputText value="#{task.startedAt}">
+  	 		<f:convertDateTime pattern="dd/MM/yyyy" timeZone="-3"/>
+     	</h:outputText>    	
+    </div>
+    </ui:repeat>
+
+	</ui:composition>
+
+</html>
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/WEB-INF/facelets/jsfcomps.taglib.xml b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/WEB-INF/facelets/jsfcomps.taglib.xml
new file mode 100644
index 0000000..5d8dcff
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/WEB-INF/facelets/jsfcomps.taglib.xml
@@ -0,0 +1,61 @@
+<?xml version="1.0"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE facelet-taglib PUBLIC
+        "-//Sun Microsystems, Inc.//DTD Facelet Taglib 1.0//EN"
+        "http://java.sun.com/dtd/facelet-taglib_1_0.dtd">
+
+<facelet-taglib>
+    <namespace>http://www.java.net/scrumtoys/jsfcomps</namespace>
+    <tag>
+        <tag-name>burndown</tag-name>
+        <component>
+            <component-type>BURNDOWN_OUTPUT</component-type>
+            <renderer-type>BURNDOWN_RENDERER</renderer-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>test</tag-name>
+        <source>testTag.xhtml</source>
+    </tag>
+</facelet-taglib>
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/WEB-INF/facelets/testTag.xhtml b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/WEB-INF/facelets/testTag.xhtml
new file mode 100644
index 0000000..36a432c
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/WEB-INF/facelets/testTag.xhtml
@@ -0,0 +1,53 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+
+<ui:composition>
+    <h:outputText value=" test "/>
+</ui:composition>
+
+</html>
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/WEB-INF/faces-config.xml b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/WEB-INF/faces-config.xml
new file mode 100644
index 0000000..21dcf52
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/WEB-INF/faces-config.xml
@@ -0,0 +1,159 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
+              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+              xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
+              version="2.0">
+
+    <application>
+        <resource-bundle>
+            <base-name>i18n</base-name>
+            <var>i18n</var>
+        </resource-bundle>
+        <message-bundle>i18n</message-bundle>
+        <locale-config>
+          <default-locale>en_US</default-locale>
+          <supported-locale>pt_BR</supported-locale>
+        </locale-config>
+
+        <el-resolver>jsf2.demo.scrum.web.scope.TaskScopeResolver</el-resolver>
+    </application>
+
+    <navigation-rule>
+        <description>
+            global navigation rules
+        </description>
+        <from-view-id>*</from-view-id>
+        <navigation-case>
+            <description>Go to Edit Project Page</description>
+            <from-outcome>editProject</from-outcome>
+            <to-view-id>/project/edit.jsf</to-view-id>
+        </navigation-case>
+        <navigation-case>
+            <description>Go to Select Projects Page</description>
+            <from-outcome>showProjects</from-outcome>
+            <to-view-id>/project/show.jsf</to-view-id>
+        </navigation-case>
+        <navigation-case>
+            <description>Go to Edit Sprint Page</description>
+            <from-outcome>editSprint</from-outcome>
+            <to-view-id>/sprint/edit.jsf</to-view-id>
+        </navigation-case>
+        <navigation-case>
+            <description>Go to Dashboard</description>
+            <from-outcome>showDashboard</from-outcome>
+            <to-view-id>/dashboard/show.jsf</to-view-id>
+        </navigation-case>
+    </navigation-rule>
+
+    <navigation-rule>
+        <description>
+            dashboard navigation rules
+        </description>
+        <from-view-id>/dashboard/show.xhtml</from-view-id>
+        <navigation-case>
+            <from-outcome>showSprints</from-outcome>
+            <to-view-id>/sprint/show.xhtml</to-view-id>
+        </navigation-case>
+        <navigation-case>
+            <description>
+                see burndown
+            </description>
+            <from-outcome>burndown</from-outcome>
+            <to-view-id>/burndown.xhtml</to-view-id>
+        </navigation-case>
+    </navigation-rule>
+
+    <navigation-rule>
+        <description>
+            project navigation rules
+        </description>
+        <from-view-id>/project/show.xhtml</from-view-id>
+        <navigation-case>
+            <from-outcome>showSprints</from-outcome>
+            <to-view-id>/sprint/show.xhtml</to-view-id>
+        </navigation-case>
+    </navigation-rule>
+
+    <navigation-rule>
+        <description>
+            sprint navigation rules
+        </description>
+        <from-view-id>/sprint/show.xhtml</from-view-id>
+        <navigation-case>
+            <from-outcome>showStories</from-outcome>
+            <to-view-id>/story/show.xhtml</to-view-id>
+        </navigation-case>
+        <navigation-case>
+            <from-outcome>showDashboard</from-outcome>
+            <to-view-id>/dashboard/show.xhtml</to-view-id>
+        </navigation-case>
+    </navigation-rule>
+
+    <navigation-rule>
+        <description>
+            story navigation rules
+        </description>
+        <from-view-id>/story/show.xhtml</from-view-id>
+        <navigation-case>
+            <from-outcome>showTasks</from-outcome>
+            <to-view-id>/task/show.xhtml</to-view-id>
+        </navigation-case>
+        <navigation-case>
+            <from-outcome>showSprints</from-outcome>
+            <to-view-id>/sprint/show.xhtml</to-view-id>
+        </navigation-case>
+    </navigation-rule>
+
+    <navigation-rule>
+        <description>
+            task navigation rules
+        </description>
+        <from-view-id>/task/show.xhtml</from-view-id>
+        <navigation-case>
+            <from-outcome>showStories</from-outcome>
+            <to-view-id>/story/show.xhtml</to-view-id>
+        </navigation-case>
+    </navigation-rule>
+
+</faces-config>
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/WEB-INF/sun-web.xml b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/WEB-INF/sun-web.xml
new file mode 100644
index 0000000..fcfa871
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/WEB-INF/sun-web.xml
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE sun-web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Application Server 9.0 Servlet 2.5//EN" "http://www.sun.com/software/appserver/dtds/sun-web-app_2_5-0.dtd">
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<sun-web-app error-url="">
+  <context-root>/scrumtoys</context-root>
+  <class-loader delegate="true"/>
+  <jsp-config>
+    <property name="keepgenerated" value="true">
+      <description>Keep a copy of the generated servlet class' java code.</description>
+    </property>
+  </jsp-config>
+</sun-web-app>
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/WEB-INF/web.xml b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..ed2eab8
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,78 @@
+<?xml version="1.0"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+    <display-name>Scrum Checklist 2.0</display-name>
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>server</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>Development</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.FACELETS_LIBRARIES</param-name>
+        <param-value>/WEB-INF/facelets/jsfcomps.taglib.xml</param-value>
+    </context-param>
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>*.jsf</url-pattern>
+    </servlet-mapping>
+    <welcome-file-list>
+        <welcome-file>index.html</welcome-file>
+    </welcome-file-list>
+    <login-config>
+        <auth-method>BASIC</auth-method>
+    </login-config>
+    <error-page>
+        <exception-type>javax.faces.application.ViewExpiredException</exception-type>
+        <location>/index.html</location>
+    </error-page>
+</web-app>
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/allInOne.xhtml b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/allInOne.xhtml
new file mode 100644
index 0000000..c5a8ed2
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/allInOne.xhtml
@@ -0,0 +1,234 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010-2011 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
+      xmlns:h="http://xmlns.jcp.org/jsf/html"
+      xmlns:f="http://xmlns.jcp.org/jsf/core">
+
+<ui:composition template="template.xhtml">
+<ui:define name="pageTitle">
+    <h:outputText value="HOME needs i18n"></h:outputText>
+</ui:define>
+
+<ui:define name="content">
+	<h:messages globalOnly="true" showDetail="true" tooltip="true" errorClass="errorMsgs" infoClass="infoMsgs" />	
+    <h:form id="frmNew">	    
+    	<h2>New Sprint</h2>
+		<h:panelGrid columns="3" style="width: 300px">
+				<h:outputLabel value="#{i18n['sprints.label.name']}:" for="itName"  />
+				<h:inputText id="itName" value="#{allInOneMB.sprintsMB.toSave.name}" required="true" requiredMessage="Type the short name" />
+				<h:message for="itName" />
+				
+				<h:outputLabel value="#{i18n['sprints.label.goals']}:" for="itGoals"  />
+				<h:inputText id="itGoals" value="#{allInOneMB.sprintsMB.toSave.goals}" required="true" requiredMessage="Describe the goals" />
+				<h:message for="itGoals" />
+				
+				<h:outputLabel value="#{i18n['sprints.label.iterationScope']}:" for="itIterationScope"  />
+				<h:inputText id="itIterationScope" value="#{allInOneMB.sprintsMB.toSave.iterationScope}" required="true" requiredMessage="Type the scope" />
+				<h:message for="itIterationScope" />
+				
+				<h:outputLabel value="#{i18n['sprints.label.startedAt']}:" for="itStartedAt"  />
+				<h:inputText id="itStartedAt" value="#{allInOneMB.sprintsMB.toSave.startedAt}" required="true" requiredMessage="Type when this sprint start" />
+				<h:message for="itStartedAt" />
+				
+				<h:outputLabel value="#{i18n['sprints.label.dailyMeetingTime']}:" for="itDailyMeetingTime"  />
+				<h:inputText id="itDailyMeetingTime" value="#{allInOneMB.sprintsMB.toSave.dailyMeetingTime}" required="true" requiredMessage="Type the estimation (story points)" />
+				<h:message for="itDailyMeetingTime" />
+				
+				<f:verbatim></f:verbatim>
+				<f:verbatim></f:verbatim>
+				<h:commandButton action="#{allInOneMB.sprintsMB.save}" value="save" />
+		</h:panelGrid>
+    </h:form>
+    <h:form id="frmList">
+    	<h2>Sprints</h2>
+		<h:panelGrid columns="3" style="width: 300px">
+				<h:outputLabel value="Not exist sprints" style="color: orange"  rendered="#{allInOneMB.sprintsMB.dm.rowCount eq 0}"/>
+		</h:panelGrid>
+		<h:dataTable value="#{allInOneMB.sprintsMB.dm}" var="sprint" width="100%" rendered="#{allInOneMB.sprintsMB.dm.rowCount > 0}">
+			<h:column headerClass="textColumn">
+				<f:facet name="header"><h:outputLabel value="#" /></f:facet>
+				<h:outputText value="#{allInOneMB.sprintsMB.dm.rowIndex + 1}" />
+				<f:facet name="footer">#{""}</f:facet>
+			</h:column>
+			<h:column headerClass="textColumn">
+				<f:facet name="header"><h:outputLabel value="name" /></f:facet>
+				<h:outputText value="#{sprint.name}" />
+				<f:facet name="footer">#{allInOneMB.sprintsMB.dm.rowCount}#{" sprints"}</f:facet>
+			</h:column>
+			<h:column headerClass="textColumn">
+				<f:facet name="header"><h:outputLabel value="goals" /></f:facet>
+				<h:outputText value="#{sprint.goals}" />
+				<f:facet name="footer">#{" "}</f:facet>
+			</h:column>
+			<h:column headerClass="textColumn">
+				<f:facet name="header"><h:outputLabel value="iteration scope" /></f:facet>
+				<h:outputText value="#{sprint.iterationScope}" />
+				<f:facet name="footer">#{" "}</f:facet>
+			</h:column>
+			<h:column headerClass="textColumn">
+				<f:facet name="header"><h:outputLabel value="started at" /></f:facet>
+				<h:outputText value="#{sprint.startedAt}" />
+				<f:facet name="footer">#{" "}</f:facet>
+			</h:column>
+			<h:column headerClass="textColumn">
+				<f:facet name="header"><h:outputLabel value="daily meeting time" /></f:facet>
+				<h:outputText value="#{sprint.dailyMeetingTime}" />
+				<f:facet name="footer">#{" "}</f:facet>
+			</h:column>
+			<h:column>
+				<f:facet name="header"><h:outputLabel value="actions" /></f:facet>
+				<h:commandButton action="#{allInOneMB.sprintsMB.edit}" value="edit ..."  />
+				<h:commandButton action="#{allInOneMB.sprintsMB.remove}" value="remove"  />
+				<h:commandButton action="#{allInOneMB.sprintsMB.showStories}" value="stories ..."  />
+				<h:commandButton action="#{allInOneMB.sprintsMB.showDashboard}" value="dashboard ..."  />
+				<f:facet name="footer">#{" "}</f:facet>
+			</h:column>
+		</h:dataTable>
+    </h:form>
+    <h:form id="frmNewStory">
+    	<h2>New Story</h2>
+		<h:panelGrid columns="3" style="width: 300px">
+				<h:outputLabel value="#{i18n['stories.label.sprint']}:" for="otSprint"  />
+				<h:outputText id="otSprint" value="#{storiesMB.toSave.sprint.name}"  />
+				<h:message for="otSprint" />
+				<h:outputLabel value="#{i18n['stories.label.name']}:" for="itName"  />
+				<h:inputText id="itName" value="#{storiesMB.toSave.name}" required="true" requiredMessage="Describe the story" />
+				<h:message for="itName" />
+				<h:outputLabel value="#{i18n['stories.label.acceptance']}:" for="itAcceptance"  />
+				<h:inputTextarea id="itAcceptance" value="#{storiesMB.toSave.acceptance}" required="true" cols="50" rows="4" requiredMessage="Describe the acceptance" />
+				<h:message for="itAcceptance" />
+				<h:outputLabel value="#{i18n['stories.label.priority']}:" for="selPriority"  />
+				<h:inputText id="selPriority" value="#{storiesMB.toSave.priority}" required="true" requiredMessage="Type the priority (sequence to do)" />
+				<h:message for="selPriority" />
+				<h:outputLabel value="#{i18n['stories.label.estimation']}:" for="itEstimation"  />
+				<h:inputText id="itEstimation" value="#{storiesMB.toSave.estimation}" required="true" requiredMessage="Type the estimation (story points)" />
+				<h:message for="itEstimation" />
+				<f:verbatim></f:verbatim>
+				<f:verbatim></f:verbatim>
+				<h:commandButton action="#{storiesMB.save}" value="save" />
+		</h:panelGrid>
+    </h:form>
+    <h:form id="frmStories">
+    	<h2>Stories</h2>
+		<h:panelGrid columns="3" >
+				<h:outputLabel value="No exist stories for this sprint"  rendered="#{storiesMB.dm.rowCount eq 0}"/>
+		</h:panelGrid>
+		<h:dataTable value="#{storiesMB.dm}" var="story" width="100%" rendered="#{storiesMB.dm.rowCount > 0}">
+			<h:column headerClass="textColumn">
+				<f:facet name="header"><h:outputLabel value="#" /></f:facet>
+				<h:outputText value="#{storiesMB.dm.rowIndex + 1}" />
+				<f:facet name="footer">#{""}</f:facet>
+			</h:column>
+			<h:column headerClass="textColumn">
+				<f:facet name="header"><h:outputLabel value="name" /></f:facet>
+				<h:outputText value="#{story.name}" />
+				<f:facet name="footer">#{storiesMB.dm.rowCount}#{" stories"}</f:facet>
+			</h:column>
+			<h:column headerClass="textColumn">
+				<f:facet name="header"><h:outputLabel value="priority" /></f:facet>
+				<h:outputText value="#{story.priority}" />
+				<f:facet name="footer">#{" "}</f:facet>
+			</h:column>
+			<h:column headerClass="textColumn">
+				<f:facet name="header"><h:outputLabel value="estimation (sp)" /></f:facet>
+				<h:outputText value="#{story.estimation}" />
+				<f:facet name="footer">#{" "}</f:facet>
+			</h:column>
+			<h:column headerClass="textColumn">
+				<f:facet name="header"><h:outputLabel value="acceptance" /></f:facet>
+				<h:outputText value="#{story.acceptance}" />
+				<f:facet name="footer">#{" "}</f:facet>
+			</h:column>
+			<h:column>
+				<f:facet name="header"><h:outputLabel value="actions" /></f:facet>
+				<h:commandButton action="#{storiesMB.edit}" value="edit ..." immediate="true" />
+				<h:commandButton action="#{storiesMB.remove}" value="remove" immediate="true" />
+				<h:commandButton action="#{storiesMB.showTasks}" value="tasks" immediate="true" />
+				<f:facet name="footer">#{" "}</f:facet>
+			</h:column>
+		</h:dataTable>
+    </h:form>
+    <h:form id="frmNewTask">
+	    <h:commandLink action="stories" value="#{'go back stories'}" immediate="true" />
+    	<h2>New Task</h2>
+		<h:panelGrid columns="3" style="width: 300px">
+				<h:outputLabel value="#{i18n['tasks.label.story']}:" for="otStory"  />
+				<h:outputText id="otStory" value="#{tasksMB.taskToSave.story.name}" />
+				<h:message for="otStory" />
+				<h:outputLabel value="#{i18n['tasks.label.name']}:" for="itName"  />
+				<h:inputText id="itName" value="#{tasksMB.taskToSave.name}" required="true" requiredMessage="Descreva a tarefa" />
+				<h:message for="itName" />
+				<f:verbatim></f:verbatim>
+				<f:verbatim></f:verbatim>
+				<h:commandButton action="#{tasksMB.save}" value="save" />
+		</h:panelGrid>
+    </h:form>
+    <h:form id="frmTasks">
+    	<h2>Tasks</h2>
+		<h:panelGrid columns="3" style="width: 300px">
+				<h:outputLabel value="Nao ha tarefas para esta estoria" style="color: orange"  rendered="#{tasksMB.dmTasks.rowCount eq 0}"/>
+		</h:panelGrid>
+		<h:dataTable value="#{tasksMB.dmTasks}" var="task" width="300px" rendered="#{tasksMB.dmTasks.rowCount > 0}">
+			<h:column headerClass="textColumn">
+				<f:facet name="header"><h:outputLabel value="#" /></f:facet>
+				<h:outputText value="#{tasksMB.dmTasks.rowIndex + 1}" />
+				<f:facet name="footer">#{""}</f:facet>
+			</h:column>
+			<h:column headerClass="textColumn">
+				<f:facet name="header"><h:outputLabel value="name" /></f:facet>
+				<h:outputText value="#{task.name}" />
+				<f:facet name="footer">#{tasksMB.dmTasks.rowCount}#{" tasks"}</f:facet>
+			</h:column>
+			<h:column>
+				<f:facet name="header"><h:outputLabel value="actions" /></f:facet>
+				<h:commandButton action="#{tasksMB.edit}" value="edit ..." immediate="true" />
+				<h:commandButton action="#{tasksMB.remove}" value="remove" immediate="true" />
+				<f:facet name="footer">#{" "}</f:facet>
+			</h:column>
+		</h:dataTable>
+    </h:form>
+</ui:define>
+</ui:composition>
+</html>  
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/burndown.xhtml b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/burndown.xhtml
new file mode 100644
index 0000000..1952e00
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/burndown.xhtml
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010-2011 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://xmlns.jcp.org/jsf/html"
+      xmlns:f="http://xmlns.jcp.org/jsf/core"
+      xmlns:jsfcomps="http://www.java.net/scrumtoys/jsfcomps" 
+      xmlns:appez="http://xmlns.jcp.org/jsf/composite/components" >
+<h:head>
+    <title>#{"Burndown"}</title>
+    <h:outputStylesheet library="css/1_1" name="app.css"/>
+</h:head>
+<h:body>
+    <h:outputScript library="javax.faces" name="ajax.js" target="head"/>
+	<h:messages errorClass="errorMsgs" infoClass="infoMsgs" />
+	<appez:title id="tituloDashboard" text="#{'Burndown'}" />
+	<h:form>
+		<h:outputLabel value="Sprint:" for="somSprints" />
+		<h:selectOneMenu id="somSprints" value="#{burndownMB.selectedSprintId}">
+			<f:selectItems value="#{burndownMB.siSprints}"/>
+		</h:selectOneMenu>
+		<h:message for="somSprints" />
+		<h:commandButton action="#{burndownMB.update}" value="Update" />
+		<h:panelGrid columns="1">
+		<h:outputText value="#{burndownMB.selectedSprint.name}" />
+		<jsfcomps:burndown value="#{burndownMB.selectedSprint}" />
+		<jsfcomps:test />
+		</h:panelGrid>
+	</h:form>
+</h:body>
+</html>
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/changeSkin.xhtml b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/changeSkin.xhtml
new file mode 100644
index 0000000..c33a0f4
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/changeSkin.xhtml
@@ -0,0 +1,77 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010-2011 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
+      xmlns:h="http://xmlns.jcp.org/jsf/html"
+      xmlns:f="http://xmlns.jcp.org/jsf/core">
+
+    <ui:composition template="template.xhtml">
+
+        <ui:define name="pageTitle">
+            <h:outputText value="#{i18n['menuitem.label.sprints']}"></h:outputText>
+        </ui:define>
+
+        <ui:define name="content">
+            <h:form id="changeSkin">
+                
+                <h:panelGrid styleClass="whiteboard" headerClass="tableHeader" footerClass="tableFooter">
+
+                    <f:facet name="header">
+                        <h:outputText value="Select application skin color"></h:outputText>
+                    </f:facet>
+                    <h:panelGrid columns="4" styleClass="tableBody" columnClasses="postItYellow, postItOrange, postItRed, postItBlue">
+                        <h:commandLink action="#{skinManager.yellowSkin}"><h:outputText value="Yellow"></h:outputText></h:commandLink>
+                        <h:commandLink action="#{skinManager.orangeSkin}"><h:outputText value="Orange"></h:outputText></h:commandLink>
+                        <h:commandLink action="#{skinManager.redSkin}"><h:outputText value="Red"></h:outputText></h:commandLink>
+                        <h:commandLink action="#{skinManager.blueSkin}"><h:outputText value="Blue"></h:outputText></h:commandLink>
+
+                    </h:panelGrid>
+                    <f:facet name="footer">
+                        <h:outputText value=" "></h:outputText>
+                    </f:facet>
+                </h:panelGrid>
+            </h:form>
+        </ui:define>
+    </ui:composition>
+</html>
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/dashboard.xhtml b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/dashboard.xhtml
new file mode 100644
index 0000000..d5db991
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/dashboard.xhtml
@@ -0,0 +1,117 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010-2011 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
+      xmlns:h="http://xmlns.jcp.org/jsf/html"
+      xmlns:f="http://xmlns.jcp.org/jsf/core"
+      xmlns:appez="http://xmlns.jcp.org/jsf/composite/components" >
+
+<ui:composition template="template.xhtml">
+<ui:define name="pageTitle">
+    <h:outputText value="HOME needs i18n"></h:outputText>
+</ui:define>
+
+<ui:define name="content">
+
+
+    <h:outputScript library="javax.faces" name="ajax.js" target="head"></h:outputScript>
+    <h:messages errorClass="errorMsgs" infoClass="infoMsgs" />
+    <appez:title id="tituloDashboard" text="#{dashboardMB.selectedSprint.name}">
+		<h:panelGroup>
+			<h:outputLabel value="#{i18n['label.goal']}:" for="" style="font-weight: bold" />
+			<h:outputText value="#{dashboardMB.selectedSprint.goals}" />
+		</h:panelGroup>
+	</appez:title>
+	<h:panelGrid columns="2" style="float: left">
+			<h:outputLabel value="#{i18n['label.estimatives']}:" for="" style="font-weight: bold" />
+			<h:outputText value="#{dashboardMB.selectedSprint.meetings.estimation.date}">
+				<f:convertDateTime pattern="dd/MM/yyyy" />
+			</h:outputText>
+			<h:outputLabel value="#{i18n['label.planning1']}:" for="" style="font-weight: bold" />
+			<h:outputText value="#{dashboardMB.selectedSprint.meetings.sprintPlanningI.date}">
+				<f:convertDateTime pattern="dd/MM/yyyy" />
+			</h:outputText>
+			<h:outputLabel value="#{i18n['label.planning2']}:" for="" style="font-weight: bold" />
+			<h:outputText value="#{dashboardMB.selectedSprint.meetings.sprintPlanningII.date}"/>
+			<h:outputLabel value="#{i18n['label.dailyMeeting']}:" for="" style="font-weight: bold" />
+			<h:panelGroup>
+			<h:outputText value="#{dashboard2MB.selectedSprint.dailyMeetingTime}">
+			</h:outputText>
+			</h:panelGroup>
+			<h:outputLabel value="#{i18n['label.revision']}:" for="" style="font-weight: bold" />
+			<h:outputText value="#{dashboardMB.selectedSprint.meetings.revision.date}">
+				<f:convertDateTime pattern="dd/MM/yyyy" />
+			</h:outputText>
+			<h:outputLabel value="#{i18n['label.retrospective']}:" for="" style="font-weight: bold" />
+			<h:outputText value="#{dashboardMB.selectedSprint.meetings.retrospective.date}">
+				<f:convertDateTime pattern="dd/MM/yyyy" />
+			</h:outputText>
+	</h:panelGrid>
+    <table width="100%">
+    <tr>
+    <td style="vertical-align: top; min-width: 150px" width="150px">
+    <h:form id="frmStories">
+    <ui:include src=".dashboard.stories.xhtml" />
+    </h:form>
+    </td>
+    <td style="vertical-align: top; min-width: 150px" width="150px">
+    <h:form id="frmTodo">
+    <ui:include src=".dashboard.todoTasks.xhtml" />
+    </h:form>
+    </td>
+    <td style="vertical-align: top; min-width: 150px" width="150px">
+    <h:form id="frmWorking">
+    <ui:include src=".dashboard.workingTasks.xhtml" />
+    </h:form>
+    </td>
+    <td style="vertical-align: top; min-width: 150px" width="150px">
+    <h:form id="frmDone">
+    <ui:include src=".dashboard.doneTasks.xhtml" />
+    </h:form>
+    </td>
+    </tr>
+    </table>
+</ui:define>
+</ui:composition>
+</html>  
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/dashboard/show.xhtml b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/dashboard/show.xhtml
new file mode 100644
index 0000000..8956fd6
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/dashboard/show.xhtml
@@ -0,0 +1,119 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
+      xmlns:h="http://xmlns.jcp.org/jsf/html"
+      xmlns:f="http://xmlns.jcp.org/jsf/core"
+      xmlns:scrum="http://xmlns.jcp.org/jsf/composite/components" >
+
+    <ui:composition template="/template.xhtml">
+        <f:metadata>
+            <f:viewParam name="skin" value="#{skinUrlManager.skin}" />
+            <f:event type="preRenderView" listener="#{skinUrlManager.update}" />
+        </f:metadata>
+        <ui:define name="pageTitle">
+            <h:outputText value="#{i18n['story.show.title']}"></h:outputText>
+        </ui:define>
+
+        <ui:define name="navigationBar">
+            <h:commandLink   immediate="true" action="/project/show" value="#{i18n['navigation.projects']}"></h:commandLink>
+            <h:outputText value="#{i18n['navigation.separtor']}"></h:outputText>
+            <h:commandLink   immediate="true" action="/project/edit"  value="#{sprintManager.project.name}"></h:commandLink>
+            <h:outputText value="#{i18n['navigation.separtor']}"></h:outputText>
+            <h:commandLink   immediate="true" action="/sprint/show" value="#{i18n['navigation.sprints']}"></h:commandLink>
+            <h:outputText value="#{i18n['navigation.separtor']}"></h:outputText>
+            <h:outputText value="#{i18n['sprint.edit.form.title']}" styleClass="tituloForm"></h:outputText>
+        </ui:define>
+
+        <ui:define name="content">
+            <h:form id="frmListStories">
+                <h:panelGrid columns="5">                    
+                    <h:dataTable value="#{dashboardManager.stories}" var="story" rendered="#{dashboardManager.stories.rowCount > 0}" border="0" id="dtStories" >
+                        <h:column>
+                            <f:facet name="header"><h:outputText value="STORIES" /></f:facet>
+                            <scrum:bigPostit>
+                                <ui:param name="postitLabel" value=""></ui:param>
+                                <ui:param name="postitText" value="#{story.name}"></ui:param>
+                            </scrum:bigPostit>
+                        </h:column>
+                    </h:dataTable>
+
+                    <h:dataTable  value="#{dashboardManager.toDoTasks}" var="task" title="Todo Tasks">
+                        <f:facet name="header"><h:outputText value="TO DO" /></f:facet>
+                        <h:column>
+                            <scrum:postit action="#{dashboardManager.editToDoTask}">
+                                <ui:param name="postitLabel" value=""></ui:param>
+                                <ui:param name="postitText" value="#{task.name}"></ui:param>
+                            </scrum:postit>
+                        </h:column>
+                    </h:dataTable>
+
+                    <h:dataTable  value="#{dashboardManager.workingTasks}" var="task" title="Working Tasks">
+                        <f:facet name="header"><h:outputText value="DOING" /></f:facet>
+                        <h:column>
+                            <scrum:postit action="#{dashboardManager.editWorkingTask}">
+                                <ui:param name="postitLabel" value=""></ui:param>
+                                <ui:param name="postitText" value="#{task.name}"></ui:param>
+                            </scrum:postit>
+                        </h:column>
+                    </h:dataTable>
+
+                    <h:dataTable  value="#{dashboardManager.doneTasks}" var="task" title="Done Tasks">
+                        <f:facet name="header"><h:outputText value="DONE" /></f:facet>
+                        <h:column>
+                            <scrum:postit action="#{dashboardManager.editDoneTask}">
+                                <ui:param name="postitLabel" value=""></ui:param>
+                                <ui:param name="postitText" value="#{task.name}"></ui:param>
+                            </scrum:postit>
+                        </h:column>
+                    </h:dataTable>
+
+                </h:panelGrid>
+            </h:form>
+        </ui:define>
+    </ui:composition>
+
+</html>
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/footer.xhtml b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/footer.xhtml
new file mode 100644
index 0000000..68fd418
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/footer.xhtml
@@ -0,0 +1,53 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://xmlns.jcp.org/jsf/html"
+      xmlns:ui="http://xmlns.jcp.org/jsf/facelets">
+    <ui:composition>
+
+        <div align="center" style="width: 100%">
+            <h:graphicImage value="/resources/images/SoccerDukeSmall.png" width="59" height="47" title="Developed by: Alberto Lemos (Spock), Andre Frota, Ed Burns, Vinicius Nunes, Vinicius Senger e Yara Senger"></h:graphicImage>
+        </div>
+    </ui:composition>
+</html>
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/home.xhtml b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/home.xhtml
new file mode 100644
index 0000000..21fe6e8
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/home.xhtml
@@ -0,0 +1,63 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
+      xmlns:h="http://xmlns.jcp.org/jsf/html"
+      xmlns:f="http://xmlns.jcp.org/jsf/core">
+
+    <ui:composition template="template.xhtml">
+        <f:metadata>
+            <f:viewParam name="skin" value="#{skinUrlManager.skin}" />
+            <f:event type="preRenderView" listener="#{skinUrlManager.update}" />
+        </f:metadata>
+        <ui:insert name="pageTitle">
+            <h:outputText value="#{i18n['template.title']}"></h:outputText>
+        </ui:insert>    
+
+        <ui:define name="content">
+            Welcome
+        </ui:define>
+    </ui:composition>
+</html>
+
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/index.html b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/index.html
new file mode 100644
index 0000000..2265fe0
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/index.html
@@ -0,0 +1,43 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<meta http-equiv="refresh" content="0;url=/scrumtoys/home.jsf">
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/menu.xhtml b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/menu.xhtml
new file mode 100644
index 0000000..8866641
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/menu.xhtml
@@ -0,0 +1,153 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010-2011 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://xmlns.jcp.org/jsf/html"
+      xmlns:ui="http://xmlns.jcp.org/jsf/facelets">
+
+    <ui:composition>
+
+        <table width="990" class="menuTable" cellpadding="0" cellspacing="0" >
+            <tr>
+                <td>
+                    <h:graphicImage  value="/resources/images/duque_Top_990x150.png"></h:graphicImage><br/>
+                </td>
+            </tr>
+
+            <tr>
+                <td>
+
+
+                    <table class="menuTable" cellpadding="0" cellspacing="0">
+                        <tr>
+                            <td>
+                                <h:outputLink styleClass="menuhandler" value="#{i18n['menuitem.path.home']}" onmouseover="menuHighlight(1)">
+                                    <h:outputText value="HOME"/>
+                                </h:outputLink>
+                            </td> <td>
+                                <h:outputLink styleClass="menuhandler" value="#{i18n['menuitem.path.dashboard']}" onmouseover="menuHighlight(2)">
+                                    <h:outputText value="#{i18n['menuitem.label.dashboard']}" />
+                                </h:outputLink>
+                            </td>
+                            <td>
+                                <h:outputLink  styleClass="menuhandler" value="#{i18n['menuitem.path.allInOne']}" onmouseover="menuHighlight(3)">
+                                    <h:outputText value="#{i18n['menuitem.label.allInOne']}" />
+                                </h:outputLink>
+
+                            </td>
+                            <td>
+                                <h:outputLink styleClass="menuhandler"  value="#{i18n['menuitem.path.burndown']}" onmouseover="menuHighlight(4)">
+                                    <h:outputText value="#{i18n['menuitem.label.burndown']}" />
+                                </h:outputLink>
+
+                            </td>
+                            <td>
+                                <h:outputLink  styleClass="menuhandler"  value="#{i18n['menuitem.path.sprints']}" onmouseover="menuHighlight(5)">
+                                    <h:outputText value="#{i18n['menuitem.label.sprints']}" />
+                                </h:outputLink>
+                            </td>
+                            <td>
+                                <h:outputLink  styleClass="menuhandler"  value="#{i18n['menuitem.path.sprints']}" onmouseover="menuHighlight(6)">
+                                    <h:outputText value="JSF 2.0" />
+                                </h:outputLink>
+                            </td>
+
+                        </tr>
+                        <tr>
+                            <td>
+                                <div class="menu" id="menu1"></div>
+                            </td>
+
+                            <td>
+                                <div class="menu" id="menu2">
+                                    <ul>
+                                        <li><a href="#">Help</a></li>
+                                    </ul>
+                                </div>
+                            </td>
+                            <td>
+                                <div class="menu" id="menu3">
+                                    <ul>
+                                        <li><a href="#">Demo1</a></li>
+                                        <li><a href="#">Demo2</a></li>
+                                    </ul>
+                                </div>
+                            </td>
+                            <td>
+                                <div class="menu" id="menu4"></div>
+                            </td>
+                            <td>
+                                <div class="menu" id="menu5">
+                                    <ul>
+                                        <li> <h:outputLink  value="#{i18n['menuitem.path.newsprint']}">
+                                                <h:outputText value="#{i18n['menuitem.label.newsprint']}" />
+                                            </h:outputLink>
+                                        </li>
+                                        <li> <h:outputLink  value="#{i18n['menuitem.path.sprintslist']}" >
+                                                <h:outputText value="#{i18n['menuitem.label.sprintslist']}" />
+                                            </h:outputLink>
+                                        </li>
+
+
+                                    </ul>
+                                </div>
+                            </td>
+                            <td>
+                                <div class="menu" id="menu6" >
+                                    <ul>
+                                        <li><a href="http://www.jcp.org/en/jsr/detail?id=314#">JSR 314</a></li>
+                                        <li><a href="http://weblogs.java.net/blog/edburns/archive/2007/01/jsf_irc_channel.html#">IRC</a></li>
+                                        <li><a href="http://java.sun.com/javaee/javaserverfaces/#">Documentation</a></li>
+                                        <li><a href="#">Blogs</a></li>
+                                    </ul>
+                                </div>
+                            </td>
+
+                        </tr>
+                        <tr></tr>
+                    </table>
+                </td>
+            </tr>
+        </table>
+    </ui:composition>
+</html>
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/project/create.xhtml b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/project/create.xhtml
new file mode 100644
index 0000000..c83346f
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/project/create.xhtml
@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
+      xmlns:h="http://xmlns.jcp.org/jsf/html"
+      xmlns:f="http://xmlns.jcp.org/jsf/core">
+
+    <ui:composition template="/template.xhtml">
+        <ui:define name="pageTitle">
+            <h:outputText value="#{i18n['project.create.title']}"/>
+        </ui:define>
+        <ui:define name="navigationBar">            
+            <h:commandLink action="/project/show" value="#{i18n['navigation.projects']}"/>
+            <h:outputText value="#{i18n['navigation.separtor']}"/>
+            <h:outputText value="#{i18n['project.create.form.title']}" styleClass="tituloForm"  />
+        </ui:define>
+        <ui:define name="content">        
+            <h:form id="createProjectForm">
+                <h:panelGrid columns="1" footerClass="footerForm">
+                    <h:panelGroup>
+                        <ui:include src="form.xhtml"/>
+                    </h:panelGroup>
+
+                    <f:facet name="footer">
+                        <h:commandButton id="btnCreate" action="#{projectManager.save}" value="#{i18n['project.create.button.create']}" styleClass="botaoPostIt" />
+                        <h:commandButton id="btnCancel" action="show" value="#{i18n['project.create.button.cancel']}" styleClass="botaoPostIt" immediate="true" />
+                    </f:facet>
+                </h:panelGrid>
+            </h:form>
+        </ui:define>
+    </ui:composition>
+
+</html>
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/project/edit.xhtml b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/project/edit.xhtml
new file mode 100644
index 0000000..b8bcd06
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/project/edit.xhtml
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
+      xmlns:h="http://xmlns.jcp.org/jsf/html"
+      xmlns:f="http://xmlns.jcp.org/jsf/core">
+
+    <ui:composition template="/template.xhtml">
+        <ui:define name="pageTitle">
+            <h:outputText value="#{i18n['project.edit.title']}"/>
+        </ui:define>
+        <ui:define name="navigationBar">
+            <h:commandLink action="/project/show" value="#{i18n['navigation.projects']}"/>
+            <h:outputText value="#{i18n['navigation.separtor']}"/>
+            <h:outputText value="#{i18n['project.edit.form.title']}:" styleClass="tituloForm" />
+        </ui:define>
+        
+        <ui:define name="content">
+            <h:form styleClass="scrumForm" id="editProjectForm">
+                <h:panelGrid columns="1" headerClass="tituloForm" footerClass="footerForm">
+                    <ui:include src="form.xhtml" />
+                    <f:facet name="footer">                        
+                            <h:commandButton id="btnEditUpdate" action="#{projectManager.save}" value="#{i18n['project.edit.button.update']}" styleClass="botaoPostIt" />
+                            <h:commandButton id="btnEditCancel" action="#{projectManager.cancelEdit}" immediate="true" value="#{i18n['project.edit.button.cancel']}" styleClass="botaoPostIt" />                        
+                    </f:facet>
+                </h:panelGrid>
+            </h:form>
+        </ui:define>
+    </ui:composition>
+</html>
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/project/form.xhtml b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/project/form.xhtml
new file mode 100644
index 0000000..905bba5
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/project/form.xhtml
@@ -0,0 +1,80 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
+      xmlns:h="http://xmlns.jcp.org/jsf/html"
+      xmlns:f="http://xmlns.jcp.org/jsf/core">
+
+    <ui:composition>
+        <h:panelGrid columns="3" columnClasses="formLabel, formInput, formErrorMessage">
+            <h:outputLabel value="#{i18n['project.form.label.name']}:" for="itName"/>
+            <h:inputText id="itName" value="#{projectManager.currentProject.name}" required="true" 
+                requiredMessage="#{i18n['project.form.label.name.required']}" size="40"
+                validator="#{projectManager.checkUniqueProjectName}" />
+            <h:message for="itName" styleClass="errorMessage" />
+
+            <h:outputLabel value="#{i18n['project.form.label.startDate']}:" for="itStartedDate"  />
+            <h:panelGroup>
+                <h:inputText id="itStartedDate" value="#{projectManager.currentProject.startDate}" required="true" requiredMessage="#{i18n['project.form.label.startDate.required']}">
+                    <f:convertDateTime pattern="#{i18n['project.form.label.startDate.pattern']}" />
+                </h:inputText>
+                <h:outputText value="(#{i18n['project.form.label.startDate.pattern']})" styleClass="inputPattern" />
+            </h:panelGroup>
+            <h:message for="itStartedDate" styleClass="errorMessage"/>
+
+            <h:outputLabel value="#{i18n['project.form.label.endDate']}:" for="itEndDate"  />
+            <h:panelGroup>
+                <h:inputText id="itEndDate" value="#{projectManager.currentProject.endDate}" required="false" requiredMessage="#{i18n['project.form.label.endDate.required']}">
+                    <f:convertDateTime pattern="#{i18n['project.form.label.endDate.pattern']}" />
+                </h:inputText>
+                <h:outputText value="(#{i18n['project.form.label.endDate.pattern']})"  styleClass="inputPattern"/>
+            </h:panelGroup>
+            <h:message for="itEndDate" styleClass="errorMessage" />
+
+        </h:panelGrid>
+    </ui:composition>
+
+</html>
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/project/show.xhtml b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/project/show.xhtml
new file mode 100644
index 0000000..6bf7043
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/project/show.xhtml
@@ -0,0 +1,108 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
+      xmlns:h="http://xmlns.jcp.org/jsf/html"
+      xmlns:f="http://xmlns.jcp.org/jsf/core">
+
+    <ui:composition template="/template.xhtml">
+        <ui:define name="pageTitle">
+            <h:outputText value="#{i18n['project.show.title']}"/>
+        </ui:define>
+        <ui:define name="navigationBar">
+            <h:outputText value="#{i18n['project.show.title']}" styleClass="tituloForm" />
+        </ui:define>
+        <ui:define name="content">
+            <h:form id="frmListProjects">
+                <h:outputText value="#{i18n['project.show.table.label.empty']}"
+                              rendered="#{projectManager.projects.rowCount eq 0}" />
+
+                <h:dataTable value="#{projectManager.projects}" var="project"
+                             rendered="#{projectManager.projects.rowCount > 0}"
+                             title="#{i18n['project.show.table.title']}"
+                             summary="#{i18n['project.show.table.title']}"
+                             border="0"
+                             headerClass="datatableHeader"
+                             rowClasses="datatableRow,datatableRow2"
+                             columnClasses="dataTableFirstColumn"
+                             styleClass="datatable"
+                             id="dtProjects">
+
+                    <h:column>
+                        <f:facet name="header"><h:outputText value="#" /></f:facet>
+                        <h:outputText value="#{projectManager.projects.rowIndex + 1}" />
+                    </h:column>
+                    <h:column>
+                        <f:facet name="header"><h:outputText value="#{i18n['project.show.table.header.name']}" /></f:facet>
+                        <h:outputText value="#{project.name}" />
+                    </h:column>
+                    <h:column>
+                        <f:facet name="header"><h:outputText value="#{i18n['project.show.table.header.startDate']}"/></f:facet>
+                        <h:outputText value="#{project.startDate}">
+                            <f:convertDateTime pattern="#{i18n['project.show.table.header.startDate.pattern']}" />
+                        </h:outputText>
+                    </h:column>
+                    <h:column>
+                        <f:facet name="header"><h:outputText value="#{i18n['project.show.table.header.endDate']}"/></f:facet>
+                        <h:outputText value="#{project.endDate}">
+                            <f:convertDateTime pattern="#{i18n['project.show.table.header.endDate.pattern']}" />
+                        </h:outputText>
+                    </h:column>
+                    <h:column>
+                        <f:facet name="header"><h:outputText value="#{i18n['project.show.table.header.actions']}"/></f:facet>
+                        <h:commandButton styleClass="botaoPostIt" action="#{projectManager.edit}" value="#{i18n['project.show.button.edit']}"  />
+                        <h:commandButton styleClass="botaoPostIt" action="#{projectManager.remove}" value="#{i18n['project.show.button.delete']}"  />
+                        <h:commandButton styleClass="botaoPostIt" action="#{projectManager.showSprints}" value="#{i18n['project.show.button.showSprints']}"  />
+                    </h:column>
+                                        
+                    
+                </h:dataTable>
+                    <h:commandButton styleClass="botaoPostIt" action="#{projectManager.create}" value="#{i18n['project.show.button.newProject']}"  />
+            </h:form>
+        </ui:define>
+    </ui:composition>
+
+</html>
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/resources/components/bigPostit.xhtml b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/resources/components/bigPostit.xhtml
new file mode 100644
index 0000000..a261882
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/resources/components/bigPostit.xhtml
@@ -0,0 +1,74 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://xmlns.jcp.org/jsf/html"
+      xmlns:f="http://xmlns.jcp.org/jsf/core"
+      xmlns:composite="http://xmlns.jcp.org/jsf/composite">
+
+    <composite:interface>
+        <composite:valueHolder name="postitLabel"/>
+        <composite:valueHolder name="postitText"/>
+        <composite:valueHolder name="postitLabel2"/>
+        <composite:valueHolder name="postitText2"/>
+        <composite:valueHolder name="postitLabel3"/>
+        <composite:valueHolder name="postitText3"/>
+
+    </composite:interface>
+ 
+    <composite:implementation>
+        <h:panelGrid styleClass="bigPostitComponent" columns="2" columnClasses="postitLabel, postItInfo">
+            <f:facet name="header">
+                <f:verbatim>
+                <br></br>
+                </f:verbatim>
+            </f:facet>
+            <h:outputText value="#{postitLabel}"/>
+            <h:outputText value="#{postitText}"/>            
+            <h:outputText value="#{postitLabel2}"/>
+            <h:outputText value="#{postitText2}"/>
+            <h:outputText value="#{postitLabel3}"/>
+            <h:outputText value="#{postitText3}"/>
+        </h:panelGrid>
+    </composite:implementation>
+</html>
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/resources/components/menu.xhtml b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/resources/components/menu.xhtml
new file mode 100644
index 0000000..d42fa5e
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/resources/components/menu.xhtml
@@ -0,0 +1,139 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://xmlns.jcp.org/jsf/html"
+      xmlns:f="http://xmlns.jcp.org/jsf/core"
+      xmlns:composite="http://xmlns.jcp.org/jsf/composite"
+      xmlns:scrum="http://xmlns.jcp.org/jsf/composite/components"
+      xmlns:ui="http://xmlns.jcp.org/jsf/facelets">
+
+    <composite:interface>
+        <composite:valueHolder name="image"/>
+    </composite:interface>
+
+    <composite:implementation>
+
+        <h:form id="menuSelectProjectForm">
+            <table width="990" class="menuTable" cellpadding="0" cellspacing="0" id="menuTable">
+                <tr>
+                    <scrum:menuItem>
+                        <ui:param name="label" value="#{i18n['menuitem.label.home']}"></ui:param>
+                        <ui:param name="destination" value="#{i18n['menuitem.path.home']}"></ui:param>
+                        <ui:param name="menuid" value="1"></ui:param>
+                    </scrum:menuItem>
+                    <scrum:menuItem>
+                        <ui:param name="label" value="#{i18n['menuitem.label.projects']}"></ui:param>
+                        <ui:param name="destination" value="#{i18n['menuitem.path.projects']}"></ui:param>
+                        <ui:param name="menuid" value="2"></ui:param>
+                    </scrum:menuItem>
+                    <scrum:menuItem>
+                        <ui:param name="label" value="#{i18n['menuitem.label.settings']}"></ui:param>
+                        <ui:param name="destination" value=""></ui:param>
+                        <ui:param name="menuid" value="4"></ui:param>
+                    </scrum:menuItem>
+                    <scrum:menuItem>
+                        <ui:param name="label" value="#{i18n['menuitem.label.jsf2']}"></ui:param>
+                        <ui:param name="destination" value=""></ui:param>
+                        <ui:param name="menuid" value="5"></ui:param>
+                    </scrum:menuItem>
+
+                    <td>
+                        <h:outputLabel for="prjCombo" value="#{i18n['home.project.combo.label']}" styleClass="formLabel" />
+                        <h:selectOneMenu id="prjCombo" value="#{projectManager.currentProject}" styleClass="formInput">
+                            <f:selectItems value="#{projectManager.projectList}" var="project" itemLabel="#{project.name}" itemValue="#{project}"/>
+                        </h:selectOneMenu>
+                    </td>
+                    <td>
+                        <h:commandButton value="Change Project" action="#{projectManager.viewSprints}"></h:commandButton>
+                    </td>
+                </tr>
+                <tr>
+                    <scrum:submenu>
+                        <ui:param name="menuid" value="1"></ui:param>
+                    </scrum:submenu>
+
+                    <scrum:submenu>
+                        <ui:param name="menuid" value="2"></ui:param>
+                        <scrum:submenuItem>
+                            <ui:param name="label" value="#{i18n['menuitem.label.showProjects']}"></ui:param>
+                            <ui:param name="destination" value="#{i18n['menuitem.path.showProjects']}"></ui:param>
+                        </scrum:submenuItem>
+
+                    </scrum:submenu>
+                    <scrum:submenu>
+                        <ui:param name="menuid" value="4"></ui:param>
+
+                        <scrum:submenuItem>
+                            <ui:param name="label" value="#{i18n['menuitem.label.changeskin']}"></ui:param>
+                            <ui:param name="destination" value="#{i18n['menuitem.path.changeskin']}"></ui:param>
+                        </scrum:submenuItem>
+                    </scrum:submenu>
+                    <scrum:submenu>
+                        <ui:param name="menuid" value="5"></ui:param>
+                        <scrum:submenuItem>
+                            <ui:param name="label" value="#{i18n['menuitem.label.about']}"></ui:param>
+                            <ui:param name="destination" value="#{i18n['menuitem.path.about']}"></ui:param>
+                        </scrum:submenuItem>
+                        <scrum:submenuItem>
+                            <ui:param name="label" value="#{i18n['menuitem.label.jsr314']}"></ui:param>
+                            <ui:param name="destination" value="#{i18n['menuitem.path.jsr314']}"></ui:param>
+                        </scrum:submenuItem>
+                        <scrum:submenuItem>
+                            <ui:param name="label" value="#{i18n['menuitem.label.irc']}"></ui:param>
+                            <ui:param name="destination" value="#{i18n['menuitem.path.irc']}"></ui:param>
+                        </scrum:submenuItem>
+                        <scrum:submenuItem>
+                            <ui:param name="label" value="#{i18n['menuitem.label.documentation']}"></ui:param>
+                            <ui:param name="destination" value="#{i18n['menuitem.path.documentation']}"></ui:param>
+                        </scrum:submenuItem>
+                    </scrum:submenu>
+                    <scrum:submenu>
+                        <ui:param name="menuid" value="6"></ui:param>
+                    </scrum:submenu>
+                </tr>
+            </table>
+            <h:graphicImage  value="#{image}"></h:graphicImage><br/>
+        </h:form>
+    </composite:implementation>
+</html>
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/resources/components/menuItem.xhtml b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/resources/components/menuItem.xhtml
new file mode 100644
index 0000000..58a5131
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/resources/components/menuItem.xhtml
@@ -0,0 +1,63 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://xmlns.jcp.org/jsf/html"
+      xmlns:composite="http://xmlns.jcp.org/jsf/composite">
+
+    <composite:interface>
+        <composite:valueHolder name="label"  />
+        <composite:valueHolder name="destination" />
+        <composite:valueHolder name="menuid" />
+    </composite:interface>
+
+    <composite:implementation>
+
+        <td>
+            <h:outputLink styleClass="menuhandler" value="#{destination}" onmouseover="menuHighlight(#{menuid})" rendered="#{label!=''}">
+                <h:outputText value="#{label}"/>
+            </h:outputLink>
+            <composite:insertChildren />
+        </td>
+    </composite:implementation>
+</html>
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/resources/components/postit.xhtml b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/resources/components/postit.xhtml
new file mode 100644
index 0000000..db37080
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/resources/components/postit.xhtml
@@ -0,0 +1,68 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://xmlns.jcp.org/jsf/html"
+      xmlns:composite="http://xmlns.jcp.org/jsf/composite"
+      xmlns:ui="http://xmlns.jcp.org/jsf/facelets">
+
+    <composite:interface>
+        <composite:valueHolder name="postitLabel"/>
+        <composite:valueHolder name="postitText"/>
+        <composite:attribute name="color" type="java.lang.String"/>
+        <composite:attribute name="action" method-signature="java.lang.String action()" targets="postitAction"/>
+    </composite:interface>
+
+    <composite:implementation>        
+            <h:panelGrid styleClass="postitComponent#{cc.attrs.color}">
+                <h:panelGroup>
+                    <h:outputText value="#{postitLabel}" styleClass="postitLabel"/> <br/><br/>
+                    <ui:insert name="main">
+                        <h:commandLink id="postitAction" immediate="true">
+                            <h:outputText value="#{postitText}"/>
+                        </h:commandLink>
+                    </ui:insert>
+                </h:panelGroup>
+            </h:panelGrid>        
+    </composite:implementation>
+</html>
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/resources/components/postitLink.xhtml b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/resources/components/postitLink.xhtml
new file mode 100644
index 0000000..c3b6af8
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/resources/components/postitLink.xhtml
@@ -0,0 +1,58 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://xmlns.jcp.org/jsf/html"
+      xmlns:f="http://xmlns.jcp.org/jsf/core"
+      xmlns:ui="http://xmlns.jcp.org/jsf/facelets">
+
+    <ui:composition template="postit.xhtml">
+        <ui:define name="main">
+            <h:link outcome="#{cc.attrs.url}" value="#{postitText}"
+                    rendered="#{cc.attrs.url != null}">
+                <f:param name="#{cc.attrs.paramName}" value="#{cc.attrs.paramValue}" />
+            </h:link>
+        </ui:define>
+    </ui:composition>
+
+</html>
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/resources/components/submenu.xhtml b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/resources/components/submenu.xhtml
new file mode 100644
index 0000000..5156dda
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/resources/components/submenu.xhtml
@@ -0,0 +1,62 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
+      xmlns:composite="http://xmlns.jcp.org/jsf/composite">
+    <ui:composition>
+        <composite:interface>
+            <composite:valueHolder name="menuid" />
+        </composite:interface>
+
+        <composite:implementation>
+            <td>
+                <div class="menu" id="menu#{menuid}">
+                    <ul>
+                        <composite:insertChildren></composite:insertChildren>
+                    </ul>
+                </div>
+            </td>
+        </composite:implementation>
+    </ui:composition>
+</html>
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/resources/components/submenuItem.xhtml b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/resources/components/submenuItem.xhtml
new file mode 100644
index 0000000..5ab5198
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/resources/components/submenuItem.xhtml
@@ -0,0 +1,62 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://xmlns.jcp.org/jsf/html"
+      xmlns:composite="http://xmlns.jcp.org/jsf/composite">
+
+    <composite:interface>
+        <composite:valueHolder name="label"  />
+        <composite:valueHolder name="destination" />
+    </composite:interface>
+
+    <composite:implementation>
+
+        <li>
+            <h:outputLink  value="#{destination}" rendered="#{label!=''}">
+                <h:outputText value="#{label}" />
+            </h:outputLink>
+        </li>
+
+    </composite:implementation>
+</html>
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/resources/components/title.properties b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/resources/components/title.properties
new file mode 100644
index 0000000..92cbd99
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/resources/components/title.properties
@@ -0,0 +1,42 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
+label=T\u00EDtulo
+version=0.1.0
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/resources/components/title.xhtml b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/resources/components/title.xhtml
new file mode 100644
index 0000000..c02f725
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/resources/components/title.xhtml
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010-2011 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://xmlns.jcp.org/jsf/html"
+      xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
+      xmlns:composite="http://xmlns.jcp.org/jsf/composite" 
+      xmlns:fn="http://xmlns.jcp.org/jsp/jstl/functions">
+	<ui:composition>
+      <composite:interface>
+      	<composite:attribute name="text" required="true" />
+ 		<composite:valueHolder name="oTitle" />
+		<composite:facet name="header" />      	
+		<composite:facet name="footer" />   
+      </composite:interface>
+      
+      <composite:implementation>
+      	  <h:panelGrid columns="1" rendered="#{not empty compositeComponent.facets.header}">
+     	  	<composite:insertFacet name="header" />
+      	  </h:panelGrid>	
+	      <h:panelGroup>
+	      	  <h1>
+	      	  <h:outputText id="otTitle" value="#{compositeComponent.attrs.text}" />
+		      <span style="font-size: small; color: gray; font-family: serif"><h:outputLabel value="#{fn:toLowerCase(compositeComponent.resourceBundleMap.version)}" /></span>
+	      	  </h1>
+		  </h:panelGroup>
+      	  <h:panelGroup rendered="#{not empty compositeComponent.children}">
+      	  		<div style="border: 1px dotted gray; padding: 10px; margin: 10px">
+		      	  	<composite:insertChildren />
+      	  		</div>
+		  </h:panelGroup>
+      	  <h:panelGrid columns="1" rendered="#{not empty compositeComponent.facets.footer}">
+     	  	<composite:insertFacet name="footer" />
+      	  </h:panelGrid>	
+      </composite:implementation> 
+	</ui:composition>
+</html>
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/resources/components/title_en_US.properties b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/resources/components/title_en_US.properties
new file mode 100644
index 0000000..aa61643
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/resources/components/title_en_US.properties
@@ -0,0 +1,42 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
+rotulo=Title
+versao=0.1.0
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/resources/components/title_pt_BR.properties b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/resources/components/title_pt_BR.properties
new file mode 100644
index 0000000..df202fe
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/resources/components/title_pt_BR.properties
@@ -0,0 +1,42 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
+rotulo=T\u00EDtulo
+versao=0.1.0
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/resources/css/1_0/app.css b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/resources/css/1_0/app.css
new file mode 100644
index 0000000..d01b3f5
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/resources/css/1_0/app.css
@@ -0,0 +1,53 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+body {
+	background-color: orange;
+}
+
+span.error {
+    color: red;
+    font-size: 22px;
+}
+
+h1 {
+	font-family: serif;
+	color: white;
+}
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/resources/css/1_1/appBlueSkin.css b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/resources/css/1_1/appBlueSkin.css
new file mode 100644
index 0000000..95f0ba6
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/resources/css/1_1/appBlueSkin.css
@@ -0,0 +1,259 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+div.navBarClass span, div.navBarClass {
+    /* Blue 100%*/
+    color:#0069AA;
+    padding:10px;
+}
+
+.tituloForm {
+    font-size: 10pt;
+    /* Blue 100%*/
+    color: #0069AA;;
+    font-weight:bold;
+    padding:5px;
+    margin:5px;
+}
+input.botaoPostIt{
+    font-size: 8pt;
+    /* Blue 100%*/
+    color: #0069AA;
+    font-weight:bold;
+    background-color:white;
+
+}
+
+.inputPattern{
+  /* Blue 20%*/
+  color: #B3D4E7;
+}
+label {
+  font-size: 12px;
+  /* Blue 100%*/
+  color: #0069AA;
+  text-align: left;
+  border:none;
+
+}
+
+input, select,textarea {
+  font-family: Arial, Helvetica, sans-serif;
+  font-size: 12px;
+  /* Orange 100% */
+  color: #0069AA;
+  text-align: left;
+  background-color:white;
+  border-style:ridge;
+  /*lightgray*/
+  border:1px solid #d3d3d3;
+  padding:4px;
+  margin:4px;
+  margin-bottom:4px;
+  font-weight:normal;
+}
+
+.datatableHeader{
+    /* Orange 100% */
+    background-color:#0069AA;
+    color:white;
+    font-size:12pt;
+    font-weight:normal;
+    padding:10px;
+    margin:10px;
+}
+
+.datatableRow2{
+    /* Blue 20% */
+    background-color:#B3D4E7;
+    font-size:12px;
+    color:black;
+    padding:15px;
+    margin:15px;
+    text-align:center;
+
+}
+
+.navigationLink{
+    text-decoration:none;
+    text-align:right;
+    /* Blue 100% */
+    color:#0069AA;
+}
+
+/*Diferent datatable lines / oposite*/
+.datatableRow{
+    background-color:white;
+    color:black;
+    font-size:12px;
+    text-align:center;
+}
+
+table.menuTable{
+    /* it seems its not necessary */
+    border-collapse:collapse;
+    vertical-align:middle;
+    text-align: left;
+}
+
+table.menuTable tr td{
+    vertical-align:middle;
+    padding-bottom:0px;
+    /*space between menu itens */
+    width:168px;
+
+}
+
+.menu a{
+    text-decoration: none;
+    font-family: Arial, Helvetica, sans-serif ;
+    font-size: 12px;
+    padding: 10px;
+    /* Blue 100% */
+    color: #0069AA;
+}
+
+/* menuItem and menu spacing */
+.menu ul{
+    text-align:left;
+    padding:0pt;
+    margin:0pt;
+    /* sub menu item background */
+    background-color:white;
+
+    /* fundo transparente
+    background-image:url("../resources/images/menu/Transparency.png;");
+    */
+}
+/* submenu div */
+.menu{
+    display:none;
+    position:absolute;
+    font-family: Arial, Helvetica, sans-serif;
+    font-size: 12px;
+    font-weight: bold;
+
+}
+
+/* submenu item*/
+.menu li{
+    /* white background for avoiding transparency on submenu item */
+    /*background-color:white;*/
+
+    list-style-type: none;
+    display: block;
+    padding:10px;
+    /* altura do submenu */
+    width: 142px;
+    /* Orange 100% */
+    border:1px solid #0069AA;
+
+    font-weight:bold;
+
+}
+
+
+.menuhandler {
+    /* Orange 100% */
+    border:1px solid #0069AA;
+    color:white;
+
+    text-decoration:none;
+    display: block;
+    font-family: Arial, Helvetica, sans-serif;
+    font-size: 12px;
+    width: 141px;
+    vertical-align:middle;
+    text-align: left;
+    font-weight: bold;
+    padding:10px;
+    background-color:#0069AA;
+    /* fundo transparente
+    background-image:url("../resources/images/menu/Transparency.png;");
+    color:white;
+    */
+}
+.selectProject{
+    vertical-align:bottom;
+    font-family: Arial, Helvetica, sans-serif;
+    font-size: 12px;
+    font-weight: bold;
+    text-align:center;
+
+}
+
+.postitComponent{
+        background-image:url("../resources/images/postits/novos/postit_azul_150x145.png");
+        width:150px;
+        height:145px;
+        font-size: 14px;
+        text-align:center;
+        color:white;
+}
+
+.postitComponent tr td{
+
+    padding: 5pt;
+    padding-top: 15pt;
+    vertical-align:top;
+
+}
+
+.postitComponent a{
+    text-decoration:none;
+    color:white;
+}
+
+.bigPostitComponent{
+        background-image:url("../resources/images/postits/novos/postit_azul_315x150.png");
+        background-repeat:no-repeat;
+        width:315px;
+        height:150px;
+        font-size: 14px;
+        text-align:center;
+        color:white;
+}
+
+.bigPostitComponent tr td{
+
+    padding: 5pt;
+    vertical-align:top;
+
+}
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/resources/css/1_1/appOrangeSkin.css b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/resources/css/1_1/appOrangeSkin.css
new file mode 100644
index 0000000..ed2d191
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/resources/css/1_1/appOrangeSkin.css
@@ -0,0 +1,265 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+div.navBarClass span, div.navBarClass {
+    /* Orange 100%*/
+    color:#F78E1E;
+    padding:10px;
+}
+
+
+.tituloForm {
+    font-size: 10pt;
+    /* Orange 100%*/
+    color: #F78E1E;;
+    font-weight:bold;
+    padding:5px;
+    margin:5px;
+}
+input.botaoPostIt{
+    font-size: 8pt;
+    /* Orange 100%*/
+    color: #F78E1E;
+    font-weight:bold;
+    background-color:white;
+
+}
+
+.inputPattern{
+  /* Orange 20%*/
+  color: #FCDEBC;
+}
+label {
+  font-size: 12px;
+  /* Orange 100%*/
+  color: #F78E1E;
+  text-align: left;
+  border:none;
+
+}
+
+input, select,textarea {
+  font-family: Arial, Helvetica, sans-serif;
+  font-size: 12px;
+  /* Orange 100% */
+  color: #F78E1E;
+  text-align: left;
+  background-color:white;
+  border-style:ridge;
+  /*lightgray*/
+  border:1px solid #d3d3d3;
+  padding:4px;
+  margin:4px;
+  margin-bottom:4px;
+  font-weight:normal;
+}
+
+.datatableHeader{
+    /* Orange 100% */
+    background-color:#F78E1E;
+    color:white;
+    font-size:12pt;
+    font-weight:normal;
+    padding:10px;
+    margin:10px;
+}
+
+.datatableRow2{
+    /* Orange 20% */
+    background-color:#FCDEBC;
+    font-size:12px;
+    color:black;
+    padding:15px;
+    margin:15px;
+    text-align:center;
+
+}
+
+.navigationLink{
+    text-decoration:none;
+    text-align:right;
+    /* Orange 100% */
+    color:#F78E1E;
+}
+
+/*Diferent datatable lines / oposite*/
+.datatableRow{
+    background-color:white;
+    color:black;
+    font-size:12px;
+    text-align:center;
+}
+
+table.menuTable{
+    /* it seems its not necessary */
+    border-collapse:collapse;
+    vertical-align:middle;
+    text-align: left;
+}
+
+table.menuTable tr td{
+    vertical-align:middle;
+    padding-bottom:0px;
+    /*space between menu itens */
+    width:168px;
+    
+}
+
+.menu a{
+    text-decoration: none;
+    font-family: Arial, Helvetica, sans-serif ;
+    font-size: 12px;
+    padding: 10px;
+    /* Orange 100% */
+    color: #F78E1E;
+}
+
+/* menuItem and menu spacing */
+.menu ul{
+    text-align:left;
+    padding:0pt;
+    margin:0pt;
+    /* sub menu item background */
+    background-color:white;
+
+    /* fundo transparente
+    background-image:url("../resources/images/menu/Transparency.png;");
+    */
+}
+/* submenu div */
+.menu{
+    display:none;
+    position:absolute;
+    font-family: Arial, Helvetica, sans-serif;
+    font-size: 12px;
+    font-weight: bold;
+
+}
+
+/* submenu item*/
+.menu li{
+    /* white background for avoiding transparency on submenu item */
+    /*background-color:white;*/
+
+    list-style-type: none;
+    display: block;
+    padding:10px;
+    /* altura do submenu */
+    width: 142px;
+    /* Orange 100% */
+    border:1px solid #F78E1E;
+    
+    font-weight:bold;
+
+}
+
+
+.menuhandler {
+    /* Orange 100% */
+    border:1px solid #F78E1E;
+    color:white;
+
+    text-decoration:none;
+    display: block;
+    font-family: Arial, Helvetica, sans-serif;
+    font-size: 12px;
+    width: 141px;
+    vertical-align:middle;
+    text-align: left;
+    font-weight: bold;
+    padding:10px;
+    background-color:#F78E1E;
+    /* fundo transparente
+    background-image:url("../resources/images/menu/Transparency.png;");
+    color:white;
+    */
+}
+.selectProject{
+    vertical-align:bottom;
+    font-family: Arial, Helvetica, sans-serif;
+    font-size: 12px;
+    font-weight: bold;
+    text-align:center;
+    
+}
+
+.postitComponent{
+        background-image:url("../resources/images/postits/novos/postit_lara_150x145.png");
+        width:150px;
+        height:145px;
+        font-size: 14px;
+        text-align:center;
+        color:white;
+}
+
+.postitComponent a{
+    text-decoration:none;
+    color:black;
+}
+
+.postitComponent tr td{
+
+    padding: 5pt;
+    padding-top: 15pt;
+    vertical-align:top;
+
+}
+ 
+.bigPostitComponent{
+        background-image:url("../resources/images/postits/novos/postit_lara_315x150.png");
+        background-repeat:no-repeat;
+        width:315px;
+        height:150px;
+        font-size: 14px;
+        text-align:center;
+        color:white;
+}
+
+.bigPostitComponent tr td{
+
+    padding: 5pt;
+    vertical-align:top;
+
+}
+.postitComponent a{
+    text-decoration:none;
+    color:black;
+}
+
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/resources/css/1_1/appRedSkin.css b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/resources/css/1_1/appRedSkin.css
new file mode 100644
index 0000000..f7d9edb
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/resources/css/1_1/appRedSkin.css
@@ -0,0 +1,263 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+div.navBarClass span, div.navBarClass {
+  /* Red 100%*/
+    color: #EF3E42;;
+    padding:10px;
+}
+
+.tituloForm {
+    font-size: 10pt;
+    /* Red 100%*/
+    color: #EF3E42;;
+    font-weight:bold;
+    padding:5px;
+    margin:5px;
+}
+
+input.botaoPostIt{
+    font-size: 8pt;
+    /* Red 100%*/
+    color: #EF3E42;
+    font-weight:bold;
+    background-color:white;
+
+}
+
+.inputPattern{
+  /* Red 20%*/
+  color: #F8C6C7;
+
+}
+
+label {
+  font-size: 10pt;
+  /* Red 100%*/
+  color: #EF3E42;
+  text-align: left;
+  border:none;
+
+}
+
+input, select,textarea {
+  font-family: Arial, Helvetica, sans-serif;
+  font-size: 12px;
+  /* Red 100% */
+  color: #EF3E42;
+  text-align: left;
+  background-color:white;
+  border-style:ridge;
+  /*lightgray*/
+  border:1px solid #d3d3d3;
+  padding:4px;
+  margin:4px;
+  margin-bottom:4px;
+  font-weight:normal;
+}
+
+.datatableHeader{
+    /* Red 100% */
+    background-color:#EF3E42;
+    color:white;
+
+    font-size:12pt;
+    font-weight:normal;
+    padding:10px;
+    margin:10px;
+}
+
+.datatableRow2{
+    /* blue 20% */
+    background-color:#F8C6C7;
+    font-size:12px;
+    color:black;
+    padding:15px;
+    margin:15px;
+    text-align:center;
+
+}
+
+.navigationLink{
+    text-decoration:none;
+    text-align:right;
+    /* Red 100% */
+    color:#EF3E42;
+}
+
+/*Diferent datatable lines / oposite*/
+.datatableRow{
+    background-color:white;
+    color:black;
+    font-size:12px;
+    text-align:center;
+}
+
+table.menuTable{
+    /* it seems its not necessary */
+    border-collapse:collapse;
+    vertical-align:middle;
+    text-align: left;
+}
+
+table.menuTable tr td{
+    vertical-align:middle;
+    padding-bottom:0px;
+    /*space between menu itens */
+    width:168px;
+}
+
+.menu a{
+    text-decoration: none;
+    font-family: Arial, Helvetica, sans-serif ;
+    font-size: 12px;
+    padding: 10px;
+    /* Red 100% */
+    color: #EF3E42;
+}
+
+/* menuItem and menu spacing */
+.menu ul{
+    text-align:left;
+    padding:0pt;
+    margin:0pt;
+    /* sub menu item background */
+    background-color:white;
+
+    /* fundo transparente
+    background-image:url("../resources/images/menu/Transparency.png;");
+    */
+}
+/* submenu div */
+.menu{
+    display:none;
+    position:absolute;
+    font-family: Arial, Helvetica, sans-serif;
+    font-size: 12px;
+    font-weight: bold;
+
+}
+
+/* submenu item*/
+.menu li{
+    /* white background for avoiding transparency on submenu item */
+    /*background-color:white;*/
+
+    list-style-type: none;
+    display: block;
+    padding:10px;
+    /* altura do submenu */
+    width: 142px;
+    /* Red 100% */
+    border:1px solid #EF3E42;    
+    font-weight:bold;
+
+}
+
+
+.menuhandler {
+    /* Red 100% */
+    border:1px solid #EF3E42;
+    color:white;
+
+    text-decoration:none;
+    display: block;
+    font-family: Arial, Helvetica, sans-serif;
+    font-size: 12px;
+    width: 141px;
+    vertical-align:middle;
+    text-align: left;
+    font-weight: bold;
+    padding:10px;
+    background-color:#EF3E42;
+    /* fundo transparente
+    background-image:url("../resources/images/menu/Transparency.png;");
+    color:white;
+    */
+
+
+}
+
+.selectProject{
+    vertical-align:middle;        
+    font-family: Arial, Helvetica, sans-serif;
+    font-size: 12px;
+    font-weight: bold;
+    text-align:center;
+    
+}
+.postitComponent{
+        background-image:url("../resources/images/postits/novos/postit_verm_150x145.png");
+        width:150px;
+        height:145px;
+        font-size: 14px;
+        text-align:center;
+        color:white;
+}
+
+.postitComponent tr td{
+
+    padding: 5pt;
+    padding-top: 15pt;
+    vertical-align:top;
+
+}
+
+.bigPostitComponent{
+        background-image:url("../resources/images/postits/novos/postit_verm_315x150.png");
+        background-repeat:no-repeat;
+        width:315px;
+        height:150px;
+        font-size: 14px;
+        text-align:center;
+        color:white;
+}
+
+.bigPostitComponent tr td{
+
+    padding: 5pt;
+    vertical-align:top;
+
+}
+
+.postitComponent a{
+    text-decoration:none;
+    color:white;
+}
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/resources/css/1_1/appSelectedColor.css b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/resources/css/1_1/appSelectedColor.css
new file mode 100644
index 0000000..95f0ba6
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/resources/css/1_1/appSelectedColor.css
@@ -0,0 +1,259 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+div.navBarClass span, div.navBarClass {
+    /* Blue 100%*/
+    color:#0069AA;
+    padding:10px;
+}
+
+.tituloForm {
+    font-size: 10pt;
+    /* Blue 100%*/
+    color: #0069AA;;
+    font-weight:bold;
+    padding:5px;
+    margin:5px;
+}
+input.botaoPostIt{
+    font-size: 8pt;
+    /* Blue 100%*/
+    color: #0069AA;
+    font-weight:bold;
+    background-color:white;
+
+}
+
+.inputPattern{
+  /* Blue 20%*/
+  color: #B3D4E7;
+}
+label {
+  font-size: 12px;
+  /* Blue 100%*/
+  color: #0069AA;
+  text-align: left;
+  border:none;
+
+}
+
+input, select,textarea {
+  font-family: Arial, Helvetica, sans-serif;
+  font-size: 12px;
+  /* Orange 100% */
+  color: #0069AA;
+  text-align: left;
+  background-color:white;
+  border-style:ridge;
+  /*lightgray*/
+  border:1px solid #d3d3d3;
+  padding:4px;
+  margin:4px;
+  margin-bottom:4px;
+  font-weight:normal;
+}
+
+.datatableHeader{
+    /* Orange 100% */
+    background-color:#0069AA;
+    color:white;
+    font-size:12pt;
+    font-weight:normal;
+    padding:10px;
+    margin:10px;
+}
+
+.datatableRow2{
+    /* Blue 20% */
+    background-color:#B3D4E7;
+    font-size:12px;
+    color:black;
+    padding:15px;
+    margin:15px;
+    text-align:center;
+
+}
+
+.navigationLink{
+    text-decoration:none;
+    text-align:right;
+    /* Blue 100% */
+    color:#0069AA;
+}
+
+/*Diferent datatable lines / oposite*/
+.datatableRow{
+    background-color:white;
+    color:black;
+    font-size:12px;
+    text-align:center;
+}
+
+table.menuTable{
+    /* it seems its not necessary */
+    border-collapse:collapse;
+    vertical-align:middle;
+    text-align: left;
+}
+
+table.menuTable tr td{
+    vertical-align:middle;
+    padding-bottom:0px;
+    /*space between menu itens */
+    width:168px;
+
+}
+
+.menu a{
+    text-decoration: none;
+    font-family: Arial, Helvetica, sans-serif ;
+    font-size: 12px;
+    padding: 10px;
+    /* Blue 100% */
+    color: #0069AA;
+}
+
+/* menuItem and menu spacing */
+.menu ul{
+    text-align:left;
+    padding:0pt;
+    margin:0pt;
+    /* sub menu item background */
+    background-color:white;
+
+    /* fundo transparente
+    background-image:url("../resources/images/menu/Transparency.png;");
+    */
+}
+/* submenu div */
+.menu{
+    display:none;
+    position:absolute;
+    font-family: Arial, Helvetica, sans-serif;
+    font-size: 12px;
+    font-weight: bold;
+
+}
+
+/* submenu item*/
+.menu li{
+    /* white background for avoiding transparency on submenu item */
+    /*background-color:white;*/
+
+    list-style-type: none;
+    display: block;
+    padding:10px;
+    /* altura do submenu */
+    width: 142px;
+    /* Orange 100% */
+    border:1px solid #0069AA;
+
+    font-weight:bold;
+
+}
+
+
+.menuhandler {
+    /* Orange 100% */
+    border:1px solid #0069AA;
+    color:white;
+
+    text-decoration:none;
+    display: block;
+    font-family: Arial, Helvetica, sans-serif;
+    font-size: 12px;
+    width: 141px;
+    vertical-align:middle;
+    text-align: left;
+    font-weight: bold;
+    padding:10px;
+    background-color:#0069AA;
+    /* fundo transparente
+    background-image:url("../resources/images/menu/Transparency.png;");
+    color:white;
+    */
+}
+.selectProject{
+    vertical-align:bottom;
+    font-family: Arial, Helvetica, sans-serif;
+    font-size: 12px;
+    font-weight: bold;
+    text-align:center;
+
+}
+
+.postitComponent{
+        background-image:url("../resources/images/postits/novos/postit_azul_150x145.png");
+        width:150px;
+        height:145px;
+        font-size: 14px;
+        text-align:center;
+        color:white;
+}
+
+.postitComponent tr td{
+
+    padding: 5pt;
+    padding-top: 15pt;
+    vertical-align:top;
+
+}
+
+.postitComponent a{
+    text-decoration:none;
+    color:white;
+}
+
+.bigPostitComponent{
+        background-image:url("../resources/images/postits/novos/postit_azul_315x150.png");
+        background-repeat:no-repeat;
+        width:315px;
+        height:150px;
+        font-size: 14px;
+        text-align:center;
+        color:white;
+}
+
+.bigPostitComponent tr td{
+
+    padding: 5pt;
+    vertical-align:top;
+
+}
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/resources/css/1_1/appYellowSkin.css b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/resources/css/1_1/appYellowSkin.css
new file mode 100644
index 0000000..d222ca8
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/resources/css/1_1/appYellowSkin.css
@@ -0,0 +1,266 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+div.navBarClass span, div.navBarClass {
+     /* Yellow 100%*/
+    color: #FDBB30;;
+    padding:10px;
+}
+
+.tituloForm {
+    font-size: 10pt;
+    /* Yellow 100%*/
+    color: #FDBB30;;
+    font-weight:bold;
+     padding:5px;
+    margin:5px;
+}
+input.botaoPostIt{
+    font-size: 8pt;
+    /* Yellow 100%*/
+    color: #FDBB30;
+    font-weight:bold;
+    background-color:white;
+
+}
+
+.inputPattern {
+    /* Yellow 20%*/
+  color: #FDEAC0
+}
+label {
+  font-size: 10pt;
+  /* Yellow 100%*/
+  color: #FDBB30;
+  text-align: left;
+  border:none;
+
+}
+
+input, select,textarea {
+  font-family: Arial, Helvetica, sans-serif;
+  font-size: 12px;
+  /* Yellow 100% */
+  color: #FDBB30;
+  text-align: left;
+  background-color:white;
+  border-style:ridge;
+  /*lightgray*/
+  border:1px solid #d3d3d3;
+  padding:4px;
+  margin:4px;
+  margin-bottom:4px;
+  font-weight:normal;
+}
+
+.datatableHeader{
+    /* Yellow 100% */
+    background-color:#FDBB30;
+    color:white;
+
+    font-size:12pt;
+    font-weight:normal;
+    padding:10px;
+    margin:10px;
+}
+
+.datatableRow2{
+    /* Yellow 20% */
+    background-color:#FDEAC0;
+    font-size:12px;
+    color:black;
+    padding:15px;
+    margin:15px;
+    text-align:center;
+
+}
+
+.navigationLink{
+    text-decoration:none;
+    text-align:right;
+    /* Yellow 100% */
+    color:#FDBB30;
+}
+
+
+/*Diferent datatable lines / oposite*/
+.datatableRow{
+    background-color:white;
+    color:black;
+    font-size:12px;
+    text-align:center;
+}
+.dataTableFirstColumn{
+    font-weight:bold;
+}
+
+table.menuTable{
+    /* it seems its not necessary */
+    border-collapse:collapse;
+    vertical-align:middle;
+    text-align: left;
+}
+
+table.menuTable tr td{
+    vertical-align:middle;
+    padding-bottom:0px;
+    /*space between menu itens */
+    width:168px;
+    
+    
+}
+
+.menu a{
+    text-decoration: none;
+    font-family: Arial, Helvetica, sans-serif ;
+    font-size: 12px;
+    padding: 10px;
+    /* Yellow 100% */
+    color: #FDBB30;
+}
+
+/* menuItem and menu spacing */
+.menu ul{
+    text-align:left;
+    padding:0pt;
+    margin:0pt;
+    /* sub menu item background */
+    background-color:white;
+
+    /* fundo transparente
+    background-image:url("../resources/images/menu/Transparency.png;");
+    */
+}
+/* submenu div */
+.menu{
+    display:none;
+    position:absolute;
+    font-family: Arial, Helvetica, sans-serif;
+    font-size: 12px;
+    font-weight: bold;
+
+}
+
+/* submenu item*/
+.menu li{
+    /* white background for avoiding transparency on submenu item */
+    /*background-color:white;*/
+
+    list-style-type: none;
+    display: block;
+    padding:10px;
+    /* altura do submenu */
+    width: 142px;
+    /* Yellow 100% */
+    border:1px solid #FDBB30;
+    
+    font-weight:bold;
+
+}
+
+
+.menuhandler {
+    /* Yellow 100% */
+    border:1px solid #FDBB30;
+    color:white;
+
+    text-decoration:none;
+    display: block;
+    font-family: Arial, Helvetica, sans-serif;
+    font-size: 12px;
+    width: 141px;
+    vertical-align:middle;
+    text-align: left;
+    font-weight: bold;
+    padding:10px;
+    background-color:#FDBB30;
+    /* fundo transparente
+    background-image:url("../resources/images/menu/Transparency.png;");
+    color:white;
+    */
+}
+
+.selectProject{
+    vertical-align:middle;
+    font-family: Arial, Helvetica, sans-serif;
+    font-size: 12px;
+    font-weight: bold;
+    text-align:center;
+    padding:3pt;
+}
+
+.postitComponent{
+        background-image:url("../resources/images/postits/novos/postit_amar_150x145.png");
+        width:150px;
+        height:145px;
+        font-size: 14px;
+        text-align:center;
+        color:white;
+}
+
+.postitComponent tr td{
+
+    padding: 5pt;
+    padding-top: 15pt;
+    vertical-align:top;
+
+}
+
+.bigPostitComponent{
+        background-image:url("../resources/images/postits/novos/postit_amar_315x150.png");
+        background-repeat:no-repeat;
+        width:315px;
+        height:150px;
+        font-size: 14px;
+        text-align:center;
+        color:white;
+}
+
+.bigPostitComponent tr td{
+
+    padding: 5pt;
+    vertical-align:top; 
+
+}
+.postitComponent a{
+    text-decoration:none;
+    color:black;
+}
+
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/resources/css/1_1/common.css b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/resources/css/1_1/common.css
new file mode 100644
index 0000000..f8e4452
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/resources/css/1_1/common.css
@@ -0,0 +1,227 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+div.navBarClass a{
+    background-color: white;
+    vertical-align: middle;
+    padding:10px;
+    color:gray;
+    text-decoration:none;
+}
+
+/* Whiteboard */
+
+.tableHeader{
+    background-image:url("../resources/images/lousaNova/quadroNegro_top_990x80.png");
+    background-repeat:no-repeat;
+    height:80px;
+    width:100%;
+    margin: 0px;
+    padding: 0px;
+
+}
+
+table.tableBody{
+  width:990px;
+  background-image:url("../resources/images/lousaNova/quadroNegro_meio_990x10.png;");
+  margin: 0px;
+  padding: 0px;
+  border-collapse:collapse;
+  border-spacing:0pt;    
+  background-repeat:repeat-y;
+}
+
+
+table.tableBody tr td{
+    /* important to make content aligned inside the table*/
+  vertical-align:top;    
+  
+}
+
+td.tableFooter{
+    width:990px;
+    height:120px;
+    background-image:url("../resources/images/lousaNova/quadroNegro_top_990x80");
+    background-repeat:no-repeat;
+    margin:0px;
+    padding:0px;
+
+}
+
+
+td.footerForm{
+    text-align:center;
+
+}
+
+.errorMessage{
+  color: red;
+  font-size: 12px;
+}
+
+td.formLabel, label{
+    margin-left:15pt;
+
+}
+
+.formLabel {
+    width:30%;
+    text-align: right;
+    background-position: left;
+    background-repeat:no-repeat;
+
+}
+.formInput{
+    font-size: 12px;
+}
+
+td{
+    font-family: Arial, Helvetica, sans-serif;
+}
+
+.datatable {
+    border-collapse:collapse;
+}
+.datatable tr td{
+    padding:5px;
+    margin:5px;
+}
+
+.dataTableFirstColumn{
+    font-weight:bold;
+}
+
+
+.postitComponentYellow{
+        background-image:url("../resources/images/postits/novos/postit_amar_150x145.png");
+        width:150px;
+        height:145px;
+        font-size: 14px;
+        text-align:center;
+        color:black;
+}
+
+
+.postItComponentYellow a {
+    color:black;
+    text-decoration:none;
+}
+
+.postitComponentYellow tr td{
+    padding: 5pt;
+    padding-top: 15pt;
+    vertical-align:top;
+}
+
+
+.postitComponentRed{
+        background-image:url("../resources/images/postits/novos/postit_verm_150x145.png");
+        width:150px;
+        height:145px;
+        font-size: 14px;
+        text-align:center;
+        color:white;
+}
+
+
+.postitComponentRed tr td{
+    padding: 5pt;
+    padding-top: 15pt;
+    vertical-align:top;
+}
+
+.postItComponentRed a {
+    color:white;
+    text-decoration:none;
+}
+
+.postitComponentBlue{
+        background-image:url("../resources/images/postits/novos/postit_azul_150x145.png");
+        width:150px;
+        height:145px;
+        font-size: 14px;
+        text-align:center;
+        color:white;
+}
+
+.postitComponentBlue tr td{
+    padding: 5pt;
+    padding-top: 15pt;
+    vertical-align:top;
+}
+
+.postItComponentBlue a {
+    color:white;
+    text-decoration:none;
+}
+.postitComponentOrange{
+        background-image:url("../resources/images/postits/novos/postit_lara_150x145.png");
+        width:150px;
+        height:145px;
+        font-size: 14px;
+        text-align:center;
+        color:black;
+}
+
+
+.postitComponentOrange tr td{
+    padding: 5pt;
+    padding-top: 15pt;
+    vertical-align:top;
+}
+
+.postItComponentOrange a {
+    color:black;
+    text-decoration:none;
+}
+
+
+.postitLabel{
+    font-weight:bold;
+    font-size:16px;
+    text-align:right;
+    width:30%
+}
+
+.postItInfo{
+    width:70%;
+    text-align:left;
+}
+
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/resources/images/JSFScrumWhiteBoard.png b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/resources/images/JSFScrumWhiteBoard.png
new file mode 100644
index 0000000..c76b76c
Binary files /dev/null and b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/resources/images/JSFScrumWhiteBoard.png differ
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/resources/images/SoccerDukeSmall.png b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/resources/images/SoccerDukeSmall.png
new file mode 100644
index 0000000..60306db
Binary files /dev/null and b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/resources/images/SoccerDukeSmall.png differ
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/resources/images/lousaNova/quadroNegro_botton_990x120.png b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/resources/images/lousaNova/quadroNegro_botton_990x120.png
new file mode 100644
index 0000000..3369613
Binary files /dev/null and b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/resources/images/lousaNova/quadroNegro_botton_990x120.png differ
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/resources/images/lousaNova/quadroNegro_meio_990x10.png b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/resources/images/lousaNova/quadroNegro_meio_990x10.png
new file mode 100644
index 0000000..9b9f3ba
Binary files /dev/null and b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/resources/images/lousaNova/quadroNegro_meio_990x10.png differ
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/resources/images/lousaNova/quadroNegro_r1_c1.png b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/resources/images/lousaNova/quadroNegro_r1_c1.png
new file mode 100644
index 0000000..5b8077b
Binary files /dev/null and b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/resources/images/lousaNova/quadroNegro_r1_c1.png differ
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/resources/images/lousaNova/quadroNegro_r2_c1.png b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/resources/images/lousaNova/quadroNegro_r2_c1.png
new file mode 100644
index 0000000..41fd66a
Binary files /dev/null and b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/resources/images/lousaNova/quadroNegro_r2_c1.png differ
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/resources/images/lousaNova/quadroNegro_r3_c1.png b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/resources/images/lousaNova/quadroNegro_r3_c1.png
new file mode 100644
index 0000000..9909745
Binary files /dev/null and b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/resources/images/lousaNova/quadroNegro_r3_c1.png differ
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/resources/images/lousaNova/quadroNegro_top_990x80.png b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/resources/images/lousaNova/quadroNegro_top_990x80.png
new file mode 100644
index 0000000..f5fb9cd
Binary files /dev/null and b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/resources/images/lousaNova/quadroNegro_top_990x80.png differ
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/resources/images/menu/barraSuperior-04.png b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/resources/images/menu/barraSuperior-04.png
new file mode 100644
index 0000000..50e2fbd
Binary files /dev/null and b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/resources/images/menu/barraSuperior-04.png differ
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/resources/images/menu/bt_preto03_165x35.png b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/resources/images/menu/bt_preto03_165x35.png
new file mode 100644
index 0000000..e6076de
Binary files /dev/null and b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/resources/images/menu/bt_preto03_165x35.png differ
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/resources/images/postits/novos/postit_amar_150x145.png b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/resources/images/postits/novos/postit_amar_150x145.png
new file mode 100644
index 0000000..09b9efa
Binary files /dev/null and b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/resources/images/postits/novos/postit_amar_150x145.png differ
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/resources/images/postits/novos/postit_amar_315x150.png b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/resources/images/postits/novos/postit_amar_315x150.png
new file mode 100644
index 0000000..79d4f7b
Binary files /dev/null and b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/resources/images/postits/novos/postit_amar_315x150.png differ
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/resources/images/postits/novos/postit_azul_150x145.png b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/resources/images/postits/novos/postit_azul_150x145.png
new file mode 100644
index 0000000..9f0e57b
Binary files /dev/null and b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/resources/images/postits/novos/postit_azul_150x145.png differ
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/resources/images/postits/novos/postit_azul_315x150.png b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/resources/images/postits/novos/postit_azul_315x150.png
new file mode 100644
index 0000000..eb6c074
Binary files /dev/null and b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/resources/images/postits/novos/postit_azul_315x150.png differ
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/resources/images/postits/novos/postit_lara_150x145.png b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/resources/images/postits/novos/postit_lara_150x145.png
new file mode 100644
index 0000000..2d8d993
Binary files /dev/null and b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/resources/images/postits/novos/postit_lara_150x145.png differ
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/resources/images/postits/novos/postit_lara_315x150.png b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/resources/images/postits/novos/postit_lara_315x150.png
new file mode 100644
index 0000000..1141ce9
Binary files /dev/null and b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/resources/images/postits/novos/postit_lara_315x150.png differ
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/resources/images/postits/novos/postit_verm_150x145.png b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/resources/images/postits/novos/postit_verm_150x145.png
new file mode 100644
index 0000000..652dae9
Binary files /dev/null and b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/resources/images/postits/novos/postit_verm_150x145.png differ
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/resources/images/postits/novos/postit_verm_315x150.png b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/resources/images/postits/novos/postit_verm_315x150.png
new file mode 100644
index 0000000..22da7a9
Binary files /dev/null and b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/resources/images/postits/novos/postit_verm_315x150.png differ
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/resources/js/app.js b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/resources/js/app.js
new file mode 100644
index 0000000..c5dd96e
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/resources/js/app.js
@@ -0,0 +1,46 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+function validate(refid) {
+    var input = document.getElementById(refid);
+    if (isNaN(input.value)) {
+        alert("Input is not a number");
+    }
+}
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/resources/js/date.js b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/resources/js/date.js
new file mode 100644
index 0000000..5b2f6d3
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/resources/js/date.js
@@ -0,0 +1,492 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+/*
+
+ * OSR: https://opensourcereview.central.sun.com/app?action=ViewReq&review_type=Expedited&traq_num=12626
+ * source: http://www.javascripttoolbox.com/libsource.php/date/source/date.js
+ * version: 1.02
+
+ */
+
+/**
+ * Copyright (c)2005-2009 Matt Kruse (javascripttoolbox.com)
+ * 
+ * Dual licensed under the MIT and GPL licenses. 
+ * This basically means you can use this code however you want for
+ * free, but don't claim to have written it yourself!
+ * Donations always accepted: http://www.JavascriptToolbox.com/donate/
+ * 
+ * Please do not link to the .js files on javascripttoolbox.com from
+ * your site. Copy the files locally to your server instead.
+ * 
+ */
+/*
+Date functions
+
+These functions are used to parse, format, and manipulate Date objects.
+See documentation and examples at http://www.JavascriptToolbox.com/lib/date/
+
+*/
+Date.$VERSION = 1.02;
+
+// Utility function to append a 0 to single-digit numbers
+Date.LZ = function(x) {return(x<0||x>9?"":"0")+x};
+// Full month names. Change this for local month names
+Date.monthNames = new Array('January','February','March','April','May','June','July','August','September','October','November','December');
+// Month abbreviations. Change this for local month names
+Date.monthAbbreviations = new Array('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec');
+// Full day names. Change this for local month names
+Date.dayNames = new Array('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday');
+// Day abbreviations. Change this for local month names
+Date.dayAbbreviations = new Array('Sun','Mon','Tue','Wed','Thu','Fri','Sat');
+// Used for parsing ambiguous dates like 1/2/2000 - default to preferring 'American' format meaning Jan 2.
+// Set to false to prefer 'European' format meaning Feb 1
+Date.preferAmericanFormat = true;
+
+// If the getFullYear() method is not defined, create it
+if (!Date.prototype.getFullYear) { 
+	Date.prototype.getFullYear = function() { var yy=this.getYear(); return (yy<1900?yy+1900:yy); } ;
+} 
+
+// Parse a string and convert it to a Date object.
+// If no format is passed, try a list of common formats.
+// If string cannot be parsed, return null.
+// Avoids regular expressions to be more portable.
+Date.parseString = function(val, format) {
+	// If no format is specified, try a few common formats
+	if (typeof(format)=="undefined" || format==null || format=="") {
+		var generalFormats=new Array('y-M-d','MMM d, y','MMM d,y','y-MMM-d','d-MMM-y','MMM d','MMM-d','d-MMM');
+		var monthFirst=new Array('M/d/y','M-d-y','M.d.y','M/d','M-d');
+		var dateFirst =new Array('d/M/y','d-M-y','d.M.y','d/M','d-M');
+		var checkList=new Array(generalFormats,Date.preferAmericanFormat?monthFirst:dateFirst,Date.preferAmericanFormat?dateFirst:monthFirst);
+		for (var i=0; i<checkList.length; i++) {
+			var l=checkList[i];
+			for (var j=0; j<l.length; j++) {
+				var d=Date.parseString(val,l[j]);
+				if (d!=null) { 
+					return d; 
+				}
+			}
+		}
+		return null;
+	};
+
+	this.isInteger = function(val) {
+		for (var i=0; i < val.length; i++) {
+			if ("1234567890".indexOf(val.charAt(i))==-1) { 
+				return false; 
+			}
+		}
+		return true;
+	};
+	this.getInt = function(str,i,minlength,maxlength) {
+		for (var x=maxlength; x>=minlength; x--) {
+			var token=str.substring(i,i+x);
+			if (token.length < minlength) { 
+				return null; 
+			}
+			if (this.isInteger(token)) { 
+				return token; 
+			}
+		}
+	return null;
+	};
+	val=val+"";
+	format=format+"";
+	var i_val=0;
+	var i_format=0;
+	var c="";
+	var token="";
+	var token2="";
+	var x,y;
+	var year=new Date().getFullYear();
+	var month=1;
+	var date=1;
+	var hh=0;
+	var mm=0;
+	var ss=0;
+	var ampm="";
+	while (i_format < format.length) {
+		// Get next token from format string
+		c=format.charAt(i_format);
+		token="";
+		while ((format.charAt(i_format)==c) && (i_format < format.length)) {
+			token += format.charAt(i_format++);
+		}
+		// Extract contents of value based on format token
+		if (token=="yyyy" || token=="yy" || token=="y") {
+			if (token=="yyyy") { 
+				x=4;y=4; 
+			}
+			if (token=="yy") { 
+				x=2;y=2; 
+			}
+			if (token=="y") { 
+				x=2;y=4; 
+			}
+			year=this.getInt(val,i_val,x,y);
+			if (year==null) { 
+				return null; 
+			}
+			i_val += year.length;
+			if (year.length==2) {
+				if (year > 70) { 
+					year=1900+(year-0); 
+				}
+				else { 
+					year=2000+(year-0); 
+				}
+			}
+		}
+		else if (token=="MMM" || token=="NNN"){
+			month=0;
+			var names = (token=="MMM"?(Date.monthNames.concat(Date.monthAbbreviations)):Date.monthAbbreviations);
+			for (var i=0; i<names.length; i++) {
+				var month_name=names[i];
+				if (val.substring(i_val,i_val+month_name.length).toLowerCase()==month_name.toLowerCase()) {
+					month=(i%12)+1;
+					i_val += month_name.length;
+					break;
+				}
+			}
+			if ((month < 1)||(month>12)){
+				return null;
+			}
+		}
+		else if (token=="EE"||token=="E"){
+			var names = (token=="EE"?Date.dayNames:Date.dayAbbreviations);
+			for (var i=0; i<names.length; i++) {
+				var day_name=names[i];
+				if (val.substring(i_val,i_val+day_name.length).toLowerCase()==day_name.toLowerCase()) {
+					i_val += day_name.length;
+					break;
+				}
+			}
+		}
+		else if (token=="MM"||token=="M") {
+			month=this.getInt(val,i_val,token.length,2);
+			if(month==null||(month<1)||(month>12)){
+				return null;
+			}
+			i_val+=month.length;
+		}
+		else if (token=="dd"||token=="d") {
+			date=this.getInt(val,i_val,token.length,2);
+			if(date==null||(date<1)||(date>31)){
+				return null;
+			}
+			i_val+=date.length;
+		}
+		else if (token=="hh"||token=="h") {
+			hh=this.getInt(val,i_val,token.length,2);
+			if(hh==null||(hh<1)||(hh>12)){
+				return null;
+			}
+			i_val+=hh.length;
+		}
+		else if (token=="HH"||token=="H") {
+			hh=this.getInt(val,i_val,token.length,2);
+			if(hh==null||(hh<0)||(hh>23)){
+				return null;
+			}
+			i_val+=hh.length;
+		}
+		else if (token=="KK"||token=="K") {
+			hh=this.getInt(val,i_val,token.length,2);
+			if(hh==null||(hh<0)||(hh>11)){
+				return null;
+			}
+			i_val+=hh.length;
+			hh++;
+		}
+		else if (token=="kk"||token=="k") {
+			hh=this.getInt(val,i_val,token.length,2);
+			if(hh==null||(hh<1)||(hh>24)){
+				return null;
+			}
+			i_val+=hh.length;
+			hh--;
+		}
+		else if (token=="mm"||token=="m") {
+			mm=this.getInt(val,i_val,token.length,2);
+			if(mm==null||(mm<0)||(mm>59)){
+				return null;
+			}
+			i_val+=mm.length;
+		}
+		else if (token=="ss"||token=="s") {
+			ss=this.getInt(val,i_val,token.length,2);
+			if(ss==null||(ss<0)||(ss>59)){
+				return null;
+			}
+			i_val+=ss.length;
+		}
+		else if (token=="a") {
+			if (val.substring(i_val,i_val+2).toLowerCase()=="am") {
+				ampm="AM";
+			}
+			else if (val.substring(i_val,i_val+2).toLowerCase()=="pm") {
+				ampm="PM";
+			}
+			else {
+				return null;
+			}
+			i_val+=2;
+		}
+		else {
+			if (val.substring(i_val,i_val+token.length)!=token) {
+				return null;
+			}
+			else {
+				i_val+=token.length;
+			}
+		}
+	}
+	// If there are any trailing characters left in the value, it doesn't match
+	if (i_val != val.length) { 
+		return null; 
+	}
+	// Is date valid for month?
+	if (month==2) {
+		// Check for leap year
+		if ( ( (year%4==0)&&(year%100 != 0) ) || (year%400==0) ) { // leap year
+			if (date > 29){ 
+				return null; 
+			}
+		}
+		else { 
+			if (date > 28) { 
+				return null; 
+			} 
+		}
+	}
+	if ((month==4)||(month==6)||(month==9)||(month==11)) {
+		if (date > 30) { 
+			return null; 
+		}
+	}
+	// Correct hours value
+	if (hh<12 && ampm=="PM") {
+		hh=hh-0+12; 
+	}
+	else if (hh>11 && ampm=="AM") { 
+		hh-=12; 
+	}
+	return new Date(year,month-1,date,hh,mm,ss);
+};
+
+// Check if a date string is valid
+Date.isValid = function(val,format) {
+	return (Date.parseString(val,format) != null);
+};
+
+// Check if a date object is before another date object
+Date.prototype.isBefore = function(date2) {
+	if (date2==null) { 
+		return false; 
+	}
+	return (this.getTime()<date2.getTime());
+};
+
+// Check if a date object is after another date object
+Date.prototype.isAfter = function(date2) {
+	if (date2==null) { 
+		return false; 
+	}
+	return (this.getTime()>date2.getTime());
+};
+
+// Check if two date objects have equal dates and times
+Date.prototype.equals = function(date2) {
+	if (date2==null) { 
+		return false; 
+	}
+	return (this.getTime()==date2.getTime());
+};
+
+// Check if two date objects have equal dates, disregarding times
+Date.prototype.equalsIgnoreTime = function(date2) {
+	if (date2==null) { 
+		return false; 
+	}
+	var d1 = new Date(this.getTime()).clearTime();
+	var d2 = new Date(date2.getTime()).clearTime();
+	return (d1.getTime()==d2.getTime());
+};
+
+// Format a date into a string using a given format string
+Date.prototype.format = function(format) {
+	format=format+"";
+	var result="";
+	var i_format=0;
+	var c="";
+	var token="";
+	var y=this.getYear()+"";
+	var M=this.getMonth()+1;
+	var d=this.getDate();
+	var E=this.getDay();
+	var H=this.getHours();
+	var m=this.getMinutes();
+	var s=this.getSeconds();
+	var yyyy,yy,MMM,MM,dd,hh,h,mm,ss,ampm,HH,H,KK,K,kk,k;
+	// Convert real date parts into formatted versions
+	var value=new Object();
+	if (y.length < 4) {
+		y=""+(+y+1900);
+	}
+	value["y"]=""+y;
+	value["yyyy"]=y;
+	value["yy"]=y.substring(2,4);
+	value["M"]=M;
+	value["MM"]=Date.LZ(M);
+	value["MMM"]=Date.monthNames[M-1];
+	value["NNN"]=Date.monthAbbreviations[M-1];
+	value["d"]=d;
+	value["dd"]=Date.LZ(d);
+	value["E"]=Date.dayAbbreviations[E];
+	value["EE"]=Date.dayNames[E];
+	value["H"]=H;
+	value["HH"]=Date.LZ(H);
+	if (H==0){
+		value["h"]=12;
+	}
+	else if (H>12){
+		value["h"]=H-12;
+	}
+	else {
+		value["h"]=H;
+	}
+	value["hh"]=Date.LZ(value["h"]);
+	value["K"]=value["h"]-1;
+	value["k"]=value["H"]+1;
+	value["KK"]=Date.LZ(value["K"]);
+	value["kk"]=Date.LZ(value["k"]);
+	if (H > 11) { 
+		value["a"]="PM"; 
+	}
+	else { 
+		value["a"]="AM"; 
+	}
+	value["m"]=m;
+	value["mm"]=Date.LZ(m);
+	value["s"]=s;
+	value["ss"]=Date.LZ(s);
+	while (i_format < format.length) {
+		c=format.charAt(i_format);
+		token="";
+		while ((format.charAt(i_format)==c) && (i_format < format.length)) {
+			token += format.charAt(i_format++);
+		}
+		if (typeof(value[token])!="undefined") { 
+			result=result + value[token]; 
+		}
+		else { 
+			result=result + token; 
+		}
+	}
+	return result;
+};
+
+// Get the full name of the day for a date
+Date.prototype.getDayName = function() { 
+	return Date.dayNames[this.getDay()];
+};
+
+// Get the abbreviation of the day for a date
+Date.prototype.getDayAbbreviation = function() { 
+	return Date.dayAbbreviations[this.getDay()];
+};
+
+// Get the full name of the month for a date
+Date.prototype.getMonthName = function() {
+	return Date.monthNames[this.getMonth()];
+};
+
+// Get the abbreviation of the month for a date
+Date.prototype.getMonthAbbreviation = function() { 
+	return Date.monthAbbreviations[this.getMonth()];
+};
+
+// Clear all time information in a date object
+Date.prototype.clearTime = function() {
+  this.setHours(0); 
+  this.setMinutes(0);
+  this.setSeconds(0); 
+  this.setMilliseconds(0);
+  return this;
+};
+
+// Add an amount of time to a date. Negative numbers can be passed to subtract time.
+Date.prototype.add = function(interval, number) {
+	if (typeof(interval)=="undefined" || interval==null || typeof(number)=="undefined" || number==null) { 
+		return this; 
+	}
+	number = +number;
+	if (interval=='y') { // year
+		this.setFullYear(this.getFullYear()+number);
+	}
+	else if (interval=='M') { // Month
+		this.setMonth(this.getMonth()+number);
+	}
+	else if (interval=='d') { // Day
+		this.setDate(this.getDate()+number);
+	}
+	else if (interval=='w') { // Weekday
+		var step = (number>0)?1:-1;
+		while (number!=0) {
+			this.add('d',step);
+			while(this.getDay()==0 || this.getDay()==6) { 
+				this.add('d',step);
+			}
+			number -= step;
+		}
+	}
+	else if (interval=='h') { // Hour
+		this.setHours(this.getHours() + number);
+	}
+	else if (interval=='m') { // Minute
+		this.setMinutes(this.getMinutes() + number);
+	}
+	else if (interval=='s') { // Second
+		this.setSeconds(this.getSeconds() + number);
+	}
+	return this;
+};
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/resources/js/menu.js b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/resources/js/menu.js
new file mode 100644
index 0000000..a4dcc9e
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/resources/js/menu.js
@@ -0,0 +1,54 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+  var lastHighlightedMenu=null;   
+  function menuHighlight(menuIndex) {  
+    menuDisappear();          
+    var myDiv = document.getElementById("menu"+menuIndex); 
+    // armazena qual o item de menu foi selecionado
+    lastHighlightedMenu=myDiv; 
+    myDiv.style.display="block";        
+  }
+
+  function menuDisappear() {
+    //  retorna true se diferente de null ou undefined
+    if(lastHighlightedMenu) 
+      lastHighlightedMenu.style.display="none";
+  }
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/resources/js/validations.js b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/resources/js/validations.js
new file mode 100644
index 0000000..3f1ac17
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/resources/js/validations.js
@@ -0,0 +1,422 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+/*
+
+ * OSR: https://opensourcereview.central.sun.com/app?action=ViewReq&review_type=Expedited&traq_num=12626
+ * source: http://www.mattkruse.com/javascript/validations/validations.js
+ * version: December 29, 2003
+
+ */
+
+// ===================================================================
+// Author: Matt Kruse <matt at mattkruse.com>
+// WWW: http://www.mattkruse.com/
+//
+// NOTICE: You may use this code for any purpose, commercial or
+// private, without any further permission from the author. You may
+// remove this notice from your final code if you wish, however it is
+// appreciated by the author if at least my web site address is kept.
+//
+// You may *NOT* re-distribute this code in any way except through its
+// use. That means, you can include it in your product, or your web
+// site, or any other form where the code is actually being used. You
+// may not put the plain javascript up on your site for download or
+// include it in your javascript libraries for download. 
+// If you wish to share this code with others, please just point them
+// to the URL instead.
+// Please DO NOT link directly to my .js files from your site. Copy
+// the files to your server and use them there. Thank you.
+// ===================================================================
+
+// HISTORY
+// ------------------------------------------------------------------
+// December 29, 2003: Added the option to specify a delimiter for
+//    multiple valued input field via getInputValue(), etc.
+
+//-------------------------------------------------------------------
+// Trim functions
+//   Returns string with whitespace trimmed
+//-------------------------------------------------------------------
+function LTrim(str){
+	if (str==null){return null;}
+	for(var i=0;str.charAt(i)==" ";i++);
+	return str.substring(i,str.length);
+	}
+function RTrim(str){
+	if (str==null){return null;}
+	for(var i=str.length-1;str.charAt(i)==" ";i--);
+	return str.substring(0,i+1);
+	}
+function Trim(str){return LTrim(RTrim(str));}
+function LTrimAll(str) {
+	if (str==null){return str;}
+	for (var i=0; str.charAt(i)==" " || str.charAt(i)=="\n" || str.charAt(i)=="\t"; i++);
+	return str.substring(i,str.length);
+	}
+function RTrimAll(str) {
+	if (str==null){return str;}
+	for (var i=str.length-1; str.charAt(i)==" " || str.charAt(i)=="\n" || str.charAt(i)=="\t"; i--);
+	return str.substring(0,i+1);
+	}
+function TrimAll(str) {
+	return LTrimAll(RTrimAll(str));
+	}
+//-------------------------------------------------------------------
+// isNull(value)
+//   Returns true if value is null
+//-------------------------------------------------------------------
+function isNull(val){return(val==null);}
+
+//-------------------------------------------------------------------
+// isBlank(value)
+//   Returns true if value only contains spaces
+//-------------------------------------------------------------------
+function isBlank(val){
+	if(val==null){return true;}
+	for(var i=0;i<val.length;i++) {
+		if ((val.charAt(i)!=' ')&&(val.charAt(i)!="\t")&&(val.charAt(i)!="\n")&&(val.charAt(i)!="\r")){return false;}
+		}
+	return true;
+	}
+
+//-------------------------------------------------------------------
+// isInteger(value)
+//   Returns true if value contains all digits
+//-------------------------------------------------------------------
+function isInteger(val){
+	if (isBlank(val)){return false;}
+	for(var i=0;i<val.length;i++){
+		if(!isDigit(val.charAt(i))){return false;}
+		}
+	return true;
+	}
+
+//-------------------------------------------------------------------
+// isNumeric(value)
+//   Returns true if value contains a positive float value
+//-------------------------------------------------------------------
+function isNumeric(val){return(parseFloat(val,10)==(val*1));}
+
+//-------------------------------------------------------------------
+// isArray(obj)
+// Returns true if the object is an array, else false
+//-------------------------------------------------------------------
+function isArray(obj){return(typeof(obj.length)=="undefined")?false:true;}
+
+//-------------------------------------------------------------------
+// isDigit(value)
+//   Returns true if value is a 1-character digit
+//-------------------------------------------------------------------
+function isDigit(num) {
+	if (num.length>1){return false;}
+	var string="1234567890";
+	if (string.indexOf(num)!=-1){return true;}
+	return false;
+	}
+
+//-------------------------------------------------------------------
+// setNullIfBlank(input_object)
+//   Sets a form field to "" if it isBlank()
+//-------------------------------------------------------------------
+function setNullIfBlank(obj){if(isBlank(obj.value)){obj.value="";}}
+
+//-------------------------------------------------------------------
+// setFieldsToUpperCase(input_object)
+//   Sets value of form field toUpperCase() for all fields passed
+//-------------------------------------------------------------------
+function setFieldsToUpperCase(){
+	for(var i=0;i<arguments.length;i++) {
+		arguments[i].value = arguments[i].value.toUpperCase();
+		}
+	}
+
+//-------------------------------------------------------------------
+// disallowBlank(input_object[,message[,true]])
+//   Checks a form field for a blank value. Optionally alerts if 
+//   blank and focuses
+//-------------------------------------------------------------------
+function disallowBlank(obj){
+	var msg=(arguments.length>1)?arguments[1]:"";
+	var dofocus=(arguments.length>2)?arguments[2]:false;
+	if (isBlank(getInputValue(obj))){
+		if(!isBlank(msg)){alert(msg);}
+		if(dofocus){
+			if (isArray(obj) && (typeof(obj.type)=="undefined")) {obj=obj[0];}
+			if(obj.type=="text"||obj.type=="textarea"||obj.type=="password") { obj.select(); }
+			obj.focus();
+			}
+		return true;
+		}
+	return false;
+	}
+
+//-------------------------------------------------------------------
+// disallowModify(input_object[,message[,true]])
+//   Checks a form field for a value different than defaultValue. 
+//   Optionally alerts and focuses
+//-------------------------------------------------------------------
+function disallowModify(obj){
+	var msg=(arguments.length>1)?arguments[1]:"";
+	var dofocus=(arguments.length>2)?arguments[2]:false;
+	if (getInputValue(obj)!=getInputDefaultValue(obj)){
+		if(!isBlank(msg)){alert(msg);}
+		if(dofocus){
+			if (isArray(obj) && (typeof(obj.type)=="undefined")) {obj=obj[0];}
+			if(obj.type=="text"||obj.type=="textarea"||obj.type=="password") { obj.select(); }
+			obj.focus();
+			}
+		setInputValue(obj,getInputDefaultValue(obj));
+		return true;
+		}
+	return false;
+	}
+
+//-------------------------------------------------------------------
+// commifyArray(array[,delimiter])
+//   Take an array of values and turn it into a comma-separated string
+//   Pass an optional second argument to specify a delimiter other than
+//   comma.
+//-------------------------------------------------------------------
+function commifyArray(obj,delimiter){
+	if (typeof(delimiter)=="undefined" || delimiter==null) {
+		delimiter = ",";
+		}
+	var s="";
+	if(obj==null||obj.length<=0){return s;}
+	for(var i=0;i<obj.length;i++){
+		s=s+((s=="")?"":delimiter)+obj[i].toString();
+		}
+	return s;
+	}
+
+//-------------------------------------------------------------------
+// getSingleInputValue(input_object,use_default,delimiter)
+//   Utility function used by others
+//-------------------------------------------------------------------
+function getSingleInputValue(obj,use_default,delimiter) {
+	switch(obj.type){
+		case 'radio': case 'checkbox': return(((use_default)?obj.defaultChecked:obj.checked)?obj.value:null);
+		case 'text': case 'hidden': case 'textarea': return(use_default)?obj.defaultValue:obj.value;
+		case 'password': return((use_default)?null:obj.value);
+		case 'select-one':
+			if (obj.options==null) { return null; }
+			if(use_default){
+				var o=obj.options;
+				for(var i=0;i<o.length;i++){if(o[i].defaultSelected){return o[i].value;}}
+				return o[0].value;
+				}
+			if (obj.selectedIndex<0){return null;}
+			return(obj.options.length>0)?obj.options[obj.selectedIndex].value:null;
+		case 'select-multiple': 
+			if (obj.options==null) { return null; }
+			var values=new Array();
+			for(var i=0;i<obj.options.length;i++) {
+				if((use_default&&obj.options[i].defaultSelected)||(!use_default&&obj.options[i].selected)) {
+					values[values.length]=obj.options[i].value;
+					}
+				}
+			return (values.length==0)?null:commifyArray(values,delimiter);
+		}
+	alert("FATAL ERROR: Field type "+obj.type+" is not supported for this function");
+	return null;
+	}
+
+//-------------------------------------------------------------------
+// getSingleInputText(input_object,use_default,delimiter)
+//   Utility function used by others
+//-------------------------------------------------------------------
+function getSingleInputText(obj,use_default,delimiter) {
+	switch(obj.type){
+		case 'radio': case 'checkbox': 	return "";
+		case 'text': case 'hidden': case 'textarea': return(use_default)?obj.defaultValue:obj.value;
+		case 'password': return((use_default)?null:obj.value);
+		case 'select-one':
+			if (obj.options==null) { return null; }
+			if(use_default){
+				var o=obj.options;
+				for(var i=0;i<o.length;i++){if(o[i].defaultSelected){return o[i].text;}}
+				return o[0].text;
+				}
+			if (obj.selectedIndex<0){return null;}
+			return(obj.options.length>0)?obj.options[obj.selectedIndex].text:null;
+		case 'select-multiple': 
+			if (obj.options==null) { return null; }
+			var values=new Array();
+			for(var i=0;i<obj.options.length;i++) {
+				if((use_default&&obj.options[i].defaultSelected)||(!use_default&&obj.options[i].selected)) {
+					values[values.length]=obj.options[i].text;
+					}
+				}
+			return (values.length==0)?null:commifyArray(values,delimiter);
+		}
+	alert("FATAL ERROR: Field type "+obj.type+" is not supported for this function");
+	return null;
+	}
+
+//-------------------------------------------------------------------
+// setSingleInputValue(input_object,value)
+//   Utility function used by others
+//-------------------------------------------------------------------
+function setSingleInputValue(obj,value) {
+	switch(obj.type){
+		case 'radio': case 'checkbox': if(obj.value==value){obj.checked=true;return true;}else{obj.checked=false;return false;}
+		case 'text': case 'hidden': case 'textarea': case 'password': obj.value=value;return true;
+		case 'select-one': case 'select-multiple': 
+			var o=obj.options;
+			for(var i=0;i<o.length;i++){
+				if(o[i].value==value){o[i].selected=true;}
+				else{o[i].selected=false;}
+				}
+			return true;
+		}
+	alert("FATAL ERROR: Field type "+obj.type+" is not supported for this function");
+	return false;
+	}
+
+//-------------------------------------------------------------------
+// getInputValue(input_object[,delimiter])
+//   Get the value of any form input field
+//   Multiple-select fields are returned as comma-separated values, or
+//   delmited by the optional second argument
+//   (Doesn't support input types: button,file,reset,submit)
+//-------------------------------------------------------------------
+function getInputValue(obj,delimiter) {
+	var use_default=(arguments.length>2)?arguments[2]:false;
+	if (isArray(obj) && (typeof(obj.type)=="undefined")) {
+		var values=new Array();
+		for(var i=0;i<obj.length;i++){
+			var v=getSingleInputValue(obj[i],use_default,delimiter);
+			if(v!=null){values[values.length]=v;}
+			}
+		return commifyArray(values,delimiter);
+		}
+	return getSingleInputValue(obj,use_default,delimiter);
+	}
+
+//-------------------------------------------------------------------
+// getInputText(input_object[,delimiter])
+//   Get the displayed text of any form input field
+//   Multiple-select fields are returned as comma-separated values, or
+//   delmited by the optional second argument
+//   (Doesn't support input types: button,file,reset,submit)
+//-------------------------------------------------------------------
+function getInputText(obj,delimiter) {
+	var use_default=(arguments.length>2)?arguments[2]:false;
+	if (isArray(obj) && (typeof(obj.type)=="undefined")) {
+		var values=new Array();
+		for(var i=0;i<obj.length;i++){
+			var v=getSingleInputText(obj[i],use_default,delimiter);
+			if(v!=null){values[values.length]=v;}
+			}
+		return commifyArray(values,delimiter);
+		}
+	return getSingleInputText(obj,use_default,delimiter);
+	}
+
+//-------------------------------------------------------------------
+// getInputDefaultValue(input_object[,delimiter])
+//   Get the default value of any form input field when it was created
+//   Multiple-select fields are returned as comma-separated values, or
+//   delmited by the optional second argument
+//   (Doesn't support input types: button,file,password,reset,submit)
+//-------------------------------------------------------------------
+function getInputDefaultValue(obj,delimiter){return getInputValue(obj,delimiter,true);}
+
+//-------------------------------------------------------------------
+// isChanged(input_object)
+//   Returns true if input object's value has changed since it was
+//   created.
+//-------------------------------------------------------------------
+function isChanged(obj){return(getInputValue(obj)!=getInputDefaultValue(obj));}
+
+//-------------------------------------------------------------------
+// setInputValue(obj,value)
+//   Set the value of any form field. In cases where no matching value
+//   is available (select, radio, etc) then no option will be selected
+//   (Doesn't support input types: button,file,password,reset,submit)
+//-------------------------------------------------------------------
+function setInputValue(obj,value) {
+	var use_default=(arguments.length>1)?arguments[1]:false;
+	if(isArray(obj)&&(typeof(obj.type)=="undefined")){
+		for(var i=0;i<obj.length;i++){setSingleInputValue(obj[i],value);}
+		}
+	else{setSingleInputValue(obj,value);}
+	}
+	
+//-------------------------------------------------------------------
+// isFormModified(form_object,hidden_fields,ignore_fields)
+//   Check to see if anything in a form has been changed. By default
+//   it will check all visible form elements and ignore all hidden 
+//   fields. 
+//   You can pass a comma-separated list of field names to check in
+//   addition to visible fields (for hiddens, etc).
+//   You can also pass a comma-separated list of field names to be
+//   ignored in the check.
+//-------------------------------------------------------------------
+function isFormModified(theform,hidden_fields,ignore_fields){
+	if(hidden_fields==null){hidden_fields="";}
+	if(ignore_fields==null){ignore_fields="";}
+	var hiddenFields=new Object();
+	var ignoreFields=new Object();
+	var i,field;
+	var hidden_fields_array=hidden_fields.split(',');
+	for (i=0;i<hidden_fields_array.length;i++) {
+		hiddenFields[Trim(hidden_fields_array[i])]=true;
+		}
+	var ignore_fields_array=ignore_fields.split(',');
+	for (i=0;i<ignore_fields_array.length;i++) {
+		ignoreFields[Trim(ignore_fields_array[i])]=true;
+		}
+	for (i=0;i<theform.elements.length;i++) {
+		var changed=false;
+		var name=theform.elements[i].name;
+		if(!isBlank(name)){
+			var type=theform.elements[i].type;
+			if(!ignoreFields[name]){
+				if(type=="hidden"&&hiddenFields[name]){changed=isChanged(theform[name]);}
+				else if(type=="hidden"){changed=false;}
+				else {changed=isChanged(theform[name]);}
+				}
+			}
+		if(changed){return true;}
+		}
+		return false;
+	}
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/skin/changeSkin.xhtml b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/skin/changeSkin.xhtml
new file mode 100644
index 0000000..82e46dd
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/skin/changeSkin.xhtml
@@ -0,0 +1,79 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
+      xmlns:h="http://xmlns.jcp.org/jsf/html"
+      xmlns:f="http://xmlns.jcp.org/jsf/core"
+      xmlns:scrum="http://xmlns.jcp.org/jsf/composite/components">
+
+    <ui:composition template="/template.xhtml">
+        <f:metadata>
+            <f:viewParam name="skin" value="#{skinUrlManager.skin}" />
+            <f:event type="preRenderView" listener="#{skinUrlManager.update}" />
+        </f:metadata>
+
+        <ui:define name="pageTitle">
+            <h:outputText value="#{i18n['story.show.title']}"></h:outputText>
+        </ui:define>
+        <ui:define name="content">
+            <h:form id="frmListStories">
+                <h:panelGrid columns="#{skinValuesManager.size + 1}" width="990" >
+                    <h:outputLabel value=""/>
+                    <ui:repeat value="#{skinValuesManager.names}" var="name">
+                        <td>
+                        <scrum:postitLink color="#{name}" url="changeSkin"
+                            paramName="skin" paramValue="#{name}">
+                            <ui:param name="postitLabel" value=""/>
+                            <ui:param name="postitText" value="#{name}"/>
+                        </scrum:postitLink>
+                        </td>
+                    </ui:repeat>
+                </h:panelGrid>
+            </h:form>
+        </ui:define>
+    </ui:composition>
+
+</html>
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/sprint/create.xhtml b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/sprint/create.xhtml
new file mode 100644
index 0000000..47f2637
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/sprint/create.xhtml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
+      xmlns:h="http://xmlns.jcp.org/jsf/html"
+      xmlns:f="http://xmlns.jcp.org/jsf/core">
+
+    <ui:composition template="/template.xhtml">
+        <ui:define name="pageTitle">
+            <h:outputText value="#{i18n['sprint.create.title']}"/>
+        </ui:define>
+        <ui:define name="navigationBar">
+            <h:commandLink   immediate="true" action="/project/show" value="#{i18n['sprint.form.label.projects']}"/>
+            <h:outputText value="#{i18n['navigation.separtor']}"/>
+            <h:commandLink   immediate="true" action="/project/edit"  value="#{sprintManager.project.name}"/>
+            <h:outputText value="#{i18n['navigation.separtor']}"/>
+            <h:outputText value="#{i18n['sprint.create.form.title']}" styleClass="tituloForm"/>
+        </ui:define>
+        <ui:define name="content">
+            <h:form styleClass="scrumForm" id="createSprintForm">
+                <h:panelGrid columns="2" headerClass="tituloForm" footerClass="footerForm">
+                    <ui:include src="form.xhtml" />
+                    <f:facet name="footer">
+                        <h:commandButton rendered="#{sprintManager.project.name != null}" id="btnCreate" action="#{sprintManager.save}" value="#{i18n['sprint.create.button.create']}" styleClass="botaoPostIt" />
+                        <h:commandButton rendered="#{sprintManager.project.name != null}" id="btnCancel" action="show" value="#{i18n['sprint.create.button.cancel']}" styleClass="botaoPostIt" immediate="true" />
+                    </f:facet>
+                </h:panelGrid>
+            </h:form>
+        </ui:define>
+    </ui:composition>
+
+</html>
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/sprint/edit.xhtml b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/sprint/edit.xhtml
new file mode 100644
index 0000000..4eb01bb
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/sprint/edit.xhtml
@@ -0,0 +1,79 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
+      xmlns:h="http://xmlns.jcp.org/jsf/html"
+      xmlns:f="http://xmlns.jcp.org/jsf/core">
+
+    <ui:composition template="/template.xhtml">
+        <ui:define name="pageTitle">
+            <h:outputText value="#{i18n['sprint.edit.title']}"/>
+        </ui:define>
+        <ui:define name="navigationBar">
+            <h:commandLink   immediate="true" action="/project/show" value="#{i18n['navigation.projects']}"/>
+            <h:outputText value="#{i18n['navigation.separtor']}"/>
+            <h:commandLink   immediate="true" action="/project/edit"  value="#{sprintManager.project.name}"/>
+            <h:outputText value="#{i18n['navigation.separtor']}"/>
+            <h:commandLink   immediate="true" action="/sprint/show" value="#{i18n['navigation.sprints']}"/>
+            <h:outputText value="#{i18n['navigation.separtor']}"/>
+            <h:outputText value="#{i18n['sprint.edit.form.title']}" styleClass="tituloForm"/>
+
+        </ui:define>
+        <ui:define name="content">
+            <h:form styleClass="scrumForm" id="editSprintForm">
+                <h:panelGrid columns="2" headerClass="tituloForm" footerClass="footerForm">
+                    <ui:include src="form.xhtml" />
+                    <f:facet name="footer">
+                        <h:commandButton id="btnEditUpdate" action="#{sprintManager.save}" value="#{i18n['sprint.edit.button.update']}" styleClass="botaoPostIt" />
+                        <h:commandButton id="btnEditCancel" action="#{sprintManager.cancelEdit}" immediate="true" value="#{i18n['sprint.edit.button.cancel']}" styleClass="botaoPostIt" />
+                        <h:button styleClass="botaoPostIt" outcome="/dashboard/show" value="#{i18n['sprint.show.button.showDashboard']}" />
+                    </f:facet>
+                </h:panelGrid>
+            </h:form>
+        </ui:define>
+    </ui:composition>
+
+</html>
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/sprint/form.xhtml b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/sprint/form.xhtml
new file mode 100644
index 0000000..3c8f942
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/sprint/form.xhtml
@@ -0,0 +1,87 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
+      xmlns:h="http://xmlns.jcp.org/jsf/html"
+      xmlns:f="http://xmlns.jcp.org/jsf/core">
+
+    <ui:composition>
+        <h:panelGrid columns="3" columnClasses="formLabel, formInput, formErrorMessage" styleClass="postItFormTable">           
+            <h:outputLabel value="#{i18n['sprint.form.label.name']}:" for="itName"/>
+            <h:inputText id="itName" value="#{sprintManager.currentSprint.name}" required="true"
+                requiredMessage="#{i18n['sprint.form.label.name.required']}" size="30" />
+            <h:message for="itName" styleClass="errorMessage" />
+
+            <h:outputLabel value="#{i18n['sprint.form.label.goals']}:" for="itGoals"  />
+            <h:inputTextarea id="itGoals" value="#{sprintManager.currentSprint.goals}" required="true" cols="31" rows="3" requiredMessage="#{i18n['sprint.form.label.goals.required']}" />
+            <h:message for="itGoals" styleClass="errorMessage"/>
+
+            <h:outputLabel value="#{i18n['sprint.form.label.iterationScope']}:" for="itIterationScope"  />
+            <h:inputText id="itIterationScope" value="#{sprintManager.currentSprint.iterationScope}" required="true" size="50" requiredMessage="#{i18n['sprint.form.label.iterationScope.required']}" />
+            <h:message for="itIterationScope" styleClass="errorMessage"/>
+
+            <h:outputLabel value="#{i18n['sprint.form.label.startDate']}:" for="itStartedDate"  />
+            <h:panelGroup>
+                <h:inputText id="itStartedDate" value="#{sprintManager.currentSprint.startDate}" required="true" requiredMessage="#{i18n['sprint.form.label.startDate.required']}">
+                    <f:convertDateTime pattern="#{i18n['sprint.form.label.startDate.pattern']}" />
+                </h:inputText>
+                <h:outputText value="(#{i18n['sprint.form.label.startDate.pattern']})" styleClass="inputPattern" />
+            </h:panelGroup>
+            <h:message for="itStartedDate" styleClass="errorMessage" />
+
+            <h:outputLabel value="#{i18n['sprint.form.label.dailyMeetingTime']}:" for="itDailyMeetingTime"  />
+            <h:panelGroup>
+                <h:inputText id="itDailyMeetingTime" value="#{sprintManager.currentSprint.dailyMeetingTime}" required="true" requiredMessage="#{i18n['sprint.form.label.dailyMeetingTime.required']}">
+                    <f:convertDateTime pattern="#{i18n['sprint.form.label.dailyMeetingTime.pattern']}" />
+                </h:inputText>
+                <h:outputText value="(#{i18n['sprint.form.label.dailyMeetingTime.pattern']})" styleClass="inputPattern"/>
+            </h:panelGroup>
+            <h:message for="itDailyMeetingTime" styleClass="errorMessage"/>
+
+        </h:panelGrid>
+    </ui:composition>
+
+</html>
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/sprint/show.xhtml b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/sprint/show.xhtml
new file mode 100644
index 0000000..f4c47f0
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/sprint/show.xhtml
@@ -0,0 +1,138 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
+      xmlns:h="http://xmlns.jcp.org/jsf/html"
+      xmlns:f="http://xmlns.jcp.org/jsf/core">
+
+    <ui:composition template="/template.xhtml">
+        <ui:define name="pageTitle">
+            <h:outputText value="#{i18n['sprint.show.title']}"/>
+        </ui:define>
+
+        <ui:define name="navigationBar">
+            <h:commandLink action="/project/show" value="#{i18n['sprint.form.label.projects']}"/>
+            <h:outputText value="#{i18n['navigation.separtor']}"/>
+            <h:commandLink action="/project/edit"  value="#{sprintManager.project.name}"/>
+            <h:outputText value="#{i18n['navigation.separtor']}"/>
+            <h:outputText value="#{i18n['sprints.table.title']}" styleClass="tituloForm"/>
+        </ui:define>
+        <ui:define name="content">
+            <h:form id="frmListSprints">
+                <h:panelGrid columns="2" headerClass="tituloForm" footerClass="footerForm">
+
+                    <h:outputText value="#{i18n['sprint.show.table.label.empty']}"
+                                  rendered="#{sprintManager.sprints.rowCount eq 0}" />
+                    <h:dataTable value="#{sprintManager.sprints}" var="sprint"
+                                 rendered="#{sprintManager.sprints.rowCount > 0}"
+                                 title="#{i18n['sprint.show.table.title']}"
+                                 summary="#{i18n['sprint.show.table.title']}"
+                                 border="0"
+                                 headerClass="datatableHeader"
+                                 rowClasses="datatableRow,datatableRow2"
+                                 columnClasses="dataTableFirstColumn"
+                                 styleClass="datatable"
+                                 id="dtSprints">
+
+                        <h:column>
+                            <f:facet name="header">
+                                <h:outputText value="#" />
+                            </f:facet>
+                            <h:outputText value="#{sprintManager.sprints.rowIndex + 1}" />
+                        </h:column>
+                        <h:column>
+                            <f:facet name="header">
+                                <h:outputText value="#{i18n['sprint.show.table.header.name']}" />
+                            </f:facet>
+                            <h:outputText value="#{sprint.name}" />
+                        </h:column>
+                        <h:column>
+                            <f:facet name="header">
+                                <h:outputText value="#{i18n['sprint.show.table.header.goals']}" />
+                            </f:facet>
+                            <h:outputText value="#{sprint.goals}" />
+                        </h:column>
+                        <h:column>
+                            <f:facet name="header">
+                                <h:outputText value="#{i18n['sprint.show.table.header.startDate']}"/>
+                            </f:facet>
+                            <h:outputText value="#{sprint.startDate}">
+                                <f:convertDateTime pattern="#{i18n['sprint.show.table.header.startDate.pattern']}" />
+                            </h:outputText>
+                        </h:column>
+                        <h:column>
+                            <f:facet name="header">
+                                <h:outputText value="#{i18n['sprint.show.table.header.dailyMeetingTime']}" />
+                            </f:facet>
+                            <h:outputText value="#{sprint.dailyMeetingTime}">
+                                <f:convertDateTime pattern="#{i18n['sprint.show.table.header.dailyMeetingTime.pattern']}" />
+                            </h:outputText>
+                        </h:column>
+                        <h:column>
+                            <f:facet name="header">
+                                <h:outputText value="#{i18n['sprint.show.table.header.actions']}"/>
+                            </f:facet>
+                            <h:commandButton styleClass="botaoPostIt" action="#{sprintManager.edit}" value="#{i18n['sprint.show.button.edit']}"  />
+
+                            <h:commandButton id="btnDeleteSprint" styleClass="botaoPostIt" action="#{sprintManager.remove}" value="#{i18n['sprint.show.button.delete']}"
+                                             onclick="jsf.ajax.request(this, event, {execute: 'frmListSprints',
+                                                 render: 'frmListSprints'}); return false;" />
+
+                            <h:commandButton styleClass="botaoPostIt" action="#{sprintManager.remove}" value="#{i18n['sprint.show.button.delete']}"  />
+                            <h:commandButton styleClass="botaoPostIt" action="#{sprintManager.showDashboard}" value="#{i18n['sprint.show.button.showDashboard']}"  />
+                            <h:commandButton styleClass="botaoPostIt" action="#{sprintManager.showStories}" value="#{i18n['sprint.show.button.showStories']}"  />
+                        </h:column>
+
+                    </h:dataTable>
+                    <f:facet name="footer">
+                        <h:commandButton styleClass="botaoPostIt" action="#{sprintManager.create}" value="#{i18n['sprint.show.button.newSprint']}" />
+                    </f:facet>
+                </h:panelGrid>
+            </h:form>
+        </ui:define>
+    </ui:composition>
+
+</html>
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/storiesList.xhtml b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/storiesList.xhtml
new file mode 100644
index 0000000..60822ac
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/storiesList.xhtml
@@ -0,0 +1,145 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
+      xmlns:h="http://xmlns.jcp.org/jsf/html"
+      xmlns:f="http://xmlns.jcp.org/jsf/core">
+
+    <ui:composition>
+
+<!- test commit -->
+
+        <h:panelGrid columns="1" border="0">
+            <h:outputLabel value="#{i18n['stories.label.nostory']}" rendered="#{storiesMB.dm.rowCount eq 0}"/>
+
+            <br/><br/>
+            <h:panelGrid columns="1" style="float: right">
+                <h:panelGroup>
+                    <h:outputLabel value="#{i18n['stories.label.sprint']}: " for="otSprint"  />
+                    <h:outputText id="otSprint" value="Mostrar o nome do Sprint com link para o Sprint" />
+                </h:panelGroup>
+                <h:panelGroup>
+                    <h:outputLabel value="#{i18n['label.startedAt']}: " for="otSprintStartDate"/>
+                    <h:outputText id="otSprintStartDate" value="mostrar a data de inicio do sprint"  />
+                    <br/><br/>
+                </h:panelGroup>
+            </h:panelGrid>
+
+            <h:form id="testeForm">
+
+
+                <h:commandLink styleClass="navigationLink" id="showButton" action="#{sprintsMB.showForm}"
+                               value="+ Add Story to this Sprint"
+
+                               onclick="jsf.ajax.request(this, event,
+                                   {execute:'testeForm:showButton',
+                                       render: 'testeForm:testeShowHidePG testeForm:testeShowHidePG:newStoryPG'});
+                                   return false;" >
+
+                </h:commandLink>
+
+
+                <h:panelGrid columns="1" border="0" id="testeShowHidePG">
+
+                    <h:panelGrid columns="1" border="0" id="newStoryPG" rendered="#{sprintsMB.showAddNewStoryForm}">
+                        <ui:include src="./newStory.xhtml"></ui:include>                        
+                    </h:panelGrid>
+                </h:panelGrid>
+
+
+
+
+            </h:form>
+            <h:form id="frmListStories">
+
+                <h:dataTable value="#{storiesMB.dm}" var="story" rendered="#{storiesMB.dm.rowCount > 0}"
+                             title="#{i18n['stories.table.title']}"
+                             summary="#{i18n['stories.table.title']}"
+                             border="0"
+                             id="dtStories"
+                             headerClass="datatableHeader"
+                             rowClasses="datatableRow,datatableRow2"
+                             columnClasses="dataTableFirstColumn"
+                             styleClass="datatable">
+
+                    <h:column>
+                        <f:facet name="header"><h:outputText value="#" /></f:facet>
+                        <h:outputText value="#{storiesMB.dm.rowIndex + 1}" />
+                    </h:column>
+                    <h:column>
+                        <f:facet name="header"><h:outputText value="#{i18n['stories.label.name']}" /></f:facet>
+                        <h:outputText value="#{story.name}" />
+
+                    </h:column>
+                    <h:column>
+                        <f:facet name="header"><h:outputText value="#{i18n['stories.label.priority']}" /></f:facet>
+                        <h:outputText value="#{story.priority}" />
+
+                    </h:column>
+                    <h:column>
+                        <f:facet name="header"><h:outputText value="#{i18n['stories.label.estimation']}" /></f:facet>
+                        <h:outputText value="#{story.estimation}" />
+
+                    </h:column>
+                    <h:column>
+                        <f:facet name="header"><h:outputText value="#{i18n['stories.label.acceptance']}"/></f:facet>
+                        <h:outputText value="#{story.acceptance}" />
+
+                    </h:column>
+                    <h:column>
+                        <f:facet name="header"><h:outputText value="#{i18n['label.actions']}" /></f:facet>
+                        <h:commandButton styleClass="botaoPostIt" action="#{storiesMB.edit}" value="#{i18n['button.edit']}" immediate="true" />
+
+
+                        <h:commandButton styleClass="botaoPostIt" action="#{storiesMB.remove}" value="#{i18n['button.delete']}" immediate="true" />
+                        <h:commandButton styleClass="botaoPostIt" action="#{storiesMB.showTasks}" value="#{i18n['button.tasks']}" immediate="true" />
+                    </h:column>
+                </h:dataTable>
+            </h:form>
+
+
+        </h:panelGrid>
+
+    </ui:composition>
+</html>
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/story/create.xhtml b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/story/create.xhtml
new file mode 100644
index 0000000..f522aa0
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/story/create.xhtml
@@ -0,0 +1,109 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
+      xmlns:h="http://xmlns.jcp.org/jsf/html"
+      xmlns:f="http://xmlns.jcp.org/jsf/core">
+      
+    <ui:composition template="/template.xhtml">
+        <ui:define name="pageTitle">
+            <h:outputText value="#{i18n['story.create.title']}"></h:outputText>
+        </ui:define>
+
+
+        <ui:define name="navigationBar">
+            <h:commandLink  immediate="true" action="/project/show" value="#{i18n['navigation.projects']}"></h:commandLink>
+            <h:outputText value="#{i18n['navigation.separtor']}"></h:outputText>
+            <h:commandLink  immediate="true" action="/project/edit"  value="#{sprintManager.project.name}"></h:commandLink>
+            <h:outputText value="#{i18n['navigation.separtor']}"></h:outputText>
+            <h:commandLink  immediate="true" action="/sprint/show" value="#{i18n['navigation.sprints']}"></h:commandLink>
+            <h:outputText value="#{i18n['navigation.separtor']}"></h:outputText>
+            <h:commandLink  immediate="true" action="/sprint/edit"  value="#{sprintManager.currentSprint.name}"></h:commandLink>
+            <h:outputText value="#{i18n['navigation.separtor']}"></h:outputText>
+            <h:commandLink  immediate="true" action="/story/show" value="#{i18n['navigation.stories']}"></h:commandLink>
+            <h:outputText value="#{i18n['navigation.separtor']}"></h:outputText>
+            <h:outputText value="#{i18n['story.create.title']}" styleClass="tituloForm"></h:outputText>
+        </ui:define>
+        <ui:define name="content">
+            <h:form styleClass="scrumForm" id="createStoryForm">
+                <h:panelGrid columns="3" columnClasses="formLabel, formInput, formErrorMessage" styleClass="postItFormTable">
+                    <h:outputLabel value="#{i18n['story.form.label.name']}:" for="itName"/>
+                    <h:inputText id="itName" value="#{storyManager.currentStory.name}" required="true"
+                                 requiredMessage="#{i18n['story.form.label.name.required']}" size="40" maxlength="40"
+                                 validator="#{storyManager.checkUniqueStoryName}" />
+                    <h:message for="itName" styleClass="errorMessage"/>
+
+                    <h:outputLabel value="#{i18n['story.form.label.startDate']}:" for="itStartedDate"  />
+                    <h:panelGroup>
+                        <h:inputText id="itStartedDate" value="#{storyManager.currentStory.startDate}" required="true" requiredMessage="#{i18n['story.form.label.startDate.required']}" size="10" maxlength="10">
+                            <f:convertDateTime pattern="#{i18n['story.form.label.startDate.pattern']}" />
+                        </h:inputText>
+                        <h:outputText value="(#{i18n['story.form.label.startDate.pattern']})" styleClass="inputPattern" />
+                    </h:panelGroup>
+                    <h:message for="itStartedDate" styleClass="errorMessage" />
+
+                    <h:outputLabel value="#{i18n['story.form.label.priority']}:" for="itPriority"  />
+                    <h:inputText id="itPriority" value="#{storyManager.currentStory.priority}" required="true" requiredMessage="#{i18n['story.form.label.priority.required']}" />
+                    <h:message for="itPriority" styleClass="errorMessage"/>
+
+                    <h:outputLabel value="#{i18n['story.form.label.estimation']}:" for="itEstimation"  />
+                    <h:inputText id="itEstimation" value="#{storyManager.currentStory.estimation}" required="true" requiredMessage="#{i18n['story.form.label.estimation.required']}" />
+                    <h:message for="itEstimation" styleClass="errorMessage"/>
+
+                    <h:outputLabel value="#{i18n['story.form.label.acceptance']}:" for="itAcceptance"  />
+                    <h:inputText id="itAcceptance" value="#{storyManager.currentStory.acceptance}" required="true" requiredMessage="#{i18n['story.form.label.acceptance.required']}" size="40" maxlength="40" />
+                    <h:message for="itAcceptance" styleClass="errorMessage" />
+                    <f:facet name="footer">
+                        <h:commandButton  id="btnCreate" action="#{storyManager.save}" value="#{i18n['story.create.button.create']}" styleClass="botaoPostIt" />
+                        <h:commandButton  id="btnCancel" action="show" value="#{i18n['story.create.button.cancel']}" styleClass="botaoPostIt" immediate="true" />
+                    </f:facet>
+                </h:panelGrid>
+            </h:form>
+
+        </ui:define>
+    </ui:composition>
+
+</html>
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/story/edit.xhtml b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/story/edit.xhtml
new file mode 100644
index 0000000..625d8e8
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/story/edit.xhtml
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
+      xmlns:h="http://xmlns.jcp.org/jsf/html"
+      xmlns:f="http://xmlns.jcp.org/jsf/core">
+
+    <ui:composition template="/template.xhtml">
+        <ui:define name="pageTitle">
+            <h:outputText value="#{i18n['story.edit.title']}"></h:outputText>
+        </ui:define>
+
+        <ui:define name="navigationBar">
+            <h:commandLink immediate="true" action="/project/show" value="#{i18n['navigation.projects']}"></h:commandLink>
+            <h:outputText value="#{i18n['navigation.separtor']}"></h:outputText>
+            <h:commandLink immediate="true" action="/project/edit" value="#{sprintManager.project.name}"></h:commandLink>
+            <h:outputText value="#{i18n['navigation.separtor']}"></h:outputText>
+            <h:commandLink immediate="true" action="/sprint/show"  value="#{i18n['navigation.sprints']}"></h:commandLink>
+            <h:outputText value="#{i18n['navigation.separtor']}"></h:outputText>
+            <h:commandLink immediate="true" action="/sprint/edit"  value="#{sprintManager.currentSprint.name}"></h:commandLink>
+            <h:outputText value="#{i18n['navigation.separtor']}"></h:outputText>
+            <h:commandLink immediate="true" action="/story/show"   value="#{i18n['navigation.stories']}"></h:commandLink>
+            <h:outputText value="#{i18n['navigation.separtor']}"></h:outputText>
+            <h:outputText value="#{i18n['story.edit.title']}" styleClass="tituloForm"></h:outputText>
+        </ui:define>
+        <ui:define name="content">
+            <h:form styleClass="scrumForm" id="editStoryForm">
+                <h:panelGrid columns="3" columnClasses="formLabel, formInput, formErrorMessage" styleClass="postItFormTable">
+                    <ui:include src="form.xhtml" />
+                    <f:facet name="footer">
+                        <h:commandButton rendered="#{storyManager.sprint.name != null}" id="btnEditUpdate" action="#{storyManager.save}" value="#{i18n['story.edit.button.update']}" styleClass="botaoPostIt" />
+                        <h:commandButton rendered="#{storyManager.sprint.name != null}" id="btnEditCancel" action="#{storyManager.cancelEdit}" immediate="true" value="#{i18n['story.edit.button.cancel']}" styleClass="botaoPostIt" />
+                        <h:button styleClass="botaoPostIt" outcome="/dashboard/show" value="#{i18n['sprint.show.button.showDashboard']}" />
+                    </f:facet>
+                </h:panelGrid>
+            </h:form>
+        </ui:define>
+    </ui:composition>
+
+</html>
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/story/form.xhtml b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/story/form.xhtml
new file mode 100644
index 0000000..87fb979
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/story/form.xhtml
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
+      xmlns:h="http://xmlns.jcp.org/jsf/html"
+      xmlns:f="http://xmlns.jcp.org/jsf/core">
+
+    <ui:composition>
+      
+
+            <h:outputLabel value="#{i18n['story.form.label.name']}:" for="itName"/>
+            <h:inputText id="itName" value="#{storyManager.currentStory.name}" required="true"
+                         requiredMessage="#{i18n['story.form.label.name.required']}" size="40" maxlength="40"
+                         validator="#{storyManager.checkUniqueStoryName}" />
+            <h:message for="itName" styleClass="errorMessage"/>
+
+            <h:outputLabel value="#{i18n['story.form.label.startDate']}:" for="itStartedDate"  />
+            <h:panelGroup>
+                <h:inputText id="itStartedDate" value="#{storyManager.currentStory.startDate}" required="true" requiredMessage="#{i18n['story.form.label.startDate.required']}" size="10" maxlength="10">
+                    <f:convertDateTime pattern="#{i18n['story.form.label.startDate.pattern']}" />
+                </h:inputText>
+                <h:outputText value="(#{i18n['story.form.label.startDate.pattern']})" styleClass="inputPattern" />
+            </h:panelGroup>
+            <h:message for="itStartedDate" styleClass="errorMessage" />
+
+            <h:outputLabel value="#{i18n['story.form.label.priority']}:" for="itPriority"  />
+            <h:inputText id="itPriority" value="#{storyManager.currentStory.priority}" required="true" requiredMessage="#{i18n['story.form.label.priority.required']}" />
+            <h:message for="itPriority" styleClass="errorMessage"/>
+
+            <h:outputLabel value="#{i18n['story.form.label.estimation']}:" for="itEstimation"  />
+            <h:inputText id="itEstimation" value="#{storyManager.currentStory.estimation}" required="true" requiredMessage="#{i18n['story.form.label.estimation.required']}" />
+            <h:message for="itEstimation" styleClass="errorMessage"/>
+
+            <h:outputLabel value="#{i18n['story.form.label.acceptance']}:" for="itAcceptance"  />
+            <h:inputText id="itAcceptance" value="#{storyManager.currentStory.acceptance}" required="true" requiredMessage="#{i18n['story.form.label.acceptance.required']}" size="40" maxlength="40" />
+            <h:message for="itAcceptance" styleClass="errorMessage" />
+        
+    </ui:composition>
+
+</html>
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/story/show.xhtml b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/story/show.xhtml
new file mode 100644
index 0000000..555c79a
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/story/show.xhtml
@@ -0,0 +1,131 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
+      xmlns:h="http://xmlns.jcp.org/jsf/html"
+      xmlns:f="http://xmlns.jcp.org/jsf/core">
+
+    <ui:composition template="/template.xhtml">
+        <ui:define name="pageTitle">
+            <h:outputText value="#{i18n['story.show.title']}"></h:outputText>
+        </ui:define>
+        <ui:define name="navigationBar">
+            <h:commandLink action="/project/show" value="#{i18n['navigation.projects']}"></h:commandLink>
+            <h:outputText value="#{i18n['navigation.separtor']}"></h:outputText>
+            <h:commandLink action="/project/edit"  value="#{sprintManager.project.name}"></h:commandLink>
+            <h:outputText value="#{i18n['navigation.separtor']}"></h:outputText>
+            <h:commandLink action="/sprint/show" value="#{i18n['navigation.sprints']}"></h:commandLink>
+            <h:outputText value="#{i18n['navigation.separtor']}"></h:outputText>
+            <h:commandLink action="/sprint/edit"  value="#{sprintManager.currentSprint.name}"></h:commandLink>
+            <h:outputText value="#{i18n['navigation.separtor']}"></h:outputText>
+            <h:outputText value="#{i18n['stories.table.title']}" styleClass="tituloForm"></h:outputText>
+        </ui:define>
+        <ui:define name="content">
+            <h:form  id="frmListStories">
+                <h:panelGrid columns="3" headerClass="tituloForm" footerClass="footerForm">
+
+                    <h:outputText value="#{i18n['story.show.table.label.empty']}"
+                                  rendered="#{storyManager.stories.rowCount eq 0}" />
+
+                    <h:dataTable value="#{storyManager.stories}" var="story"
+                                 rendered="#{storyManager.stories.rowCount > 0}"
+                                 title="#{i18n['story.show.table.title']}"
+                                 summary="#{i18n['story.show.table.title']}"
+                                 border="0"
+                                 headerClass="datatableHeader"
+                                 rowClasses="datatableRow,datatableRow2"
+                                 columnClasses="dataTableFirstColumn"
+                                 styleClass="datatable"
+                                 id="dtStories">
+
+                        <h:column>
+                            <f:facet name="header"><h:outputText value="#" /></f:facet>
+                            <h:outputText value="#{storyManager.stories.rowIndex + 1}" />
+                        </h:column>
+                        <h:column>
+                            <f:facet name="header"><h:outputText value="#{i18n['story.show.table.header.name']}" /></f:facet>
+                            <h:outputText value="#{story.name}" />
+                        </h:column>
+                        <h:column>
+                            <f:facet name="header"><h:outputText value="#{i18n['story.show.table.header.startDate']}"/></f:facet>
+                            <h:outputText value="#{story.startDate}">
+                                <f:convertDateTime pattern="#{i18n['story.show.table.header.startDate.pattern']}" />
+                            </h:outputText>
+                        </h:column>
+                        <h:column>
+                            <f:facet name="header"><h:outputText value="#{i18n['story.show.table.header.priority']}" /></f:facet>
+                            <h:outputText value="#{story.priority}" />
+                        </h:column>
+                        <h:column>
+                            <f:facet name="header"><h:outputText value="#{i18n['story.show.table.header.estimation']}" /></f:facet>
+                            <h:outputText value="#{story.estimation}" />
+                        </h:column>
+                        <h:column>
+                            <f:facet name="header"><h:outputText value="#{i18n['story.show.table.header.acceptance']}" /></f:facet>
+                            <h:outputText value="#{story.acceptance}" />
+                        </h:column>
+                        <h:column>
+                            <f:facet name="header"><h:outputText value="#{i18n['story.show.table.header.actions']}"/></f:facet>
+                            <h:commandButton styleClass="botaoPostIt" action="#{storyManager.edit}" value="#{i18n['story.show.button.edit']}"  />
+                            <h:commandButton styleClass="botaoPostIt" action="#{storyManager.remove}" value="#{i18n['story.show.button.delete']}"  />
+                            <h:commandButton id="btnDeleteStory" styleClass="botaoPostIt" action="#{storyManager.remove}" value="#{i18n['story.show.button.delete']}"
+                                             onclick="jsf.ajax.request(this, event, {execute: 'frmListStories',
+                                                 render: 'frmListStories'}); return false;" />
+                            <h:commandButton styleClass="botaoPostIt" action="#{storyManager.showTasks}" value="#{i18n['story.show.button.showTasks']}"  />
+                        </h:column>
+                    </h:dataTable>
+
+                    <f:facet name="footer">
+                        <h:commandButton styleClass="botaoPostIt" action="#{storyManager.create}" value="#{i18n['story.show.button.newStory']}"  />
+                        <h:commandButton styleClass="botaoPostIt" action="showSprints" value="#{i18n['story.show.button.showSprints']}"  />
+                        <h:button styleClass="botaoPostIt" outcome="/dashboard/show" value="#{i18n['sprint.show.button.showDashboard']}" />
+                    </f:facet>
+                </h:panelGrid>
+            </h:form>
+        </ui:define>
+    </ui:composition>
+
+</html>
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/task/create.xhtml b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/task/create.xhtml
new file mode 100644
index 0000000..8f7aeef
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/task/create.xhtml
@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
+      xmlns:h="http://xmlns.jcp.org/jsf/html"
+      xmlns:f="http://xmlns.jcp.org/jsf/core" >
+
+    <ui:composition template="/template.xhtml">
+        <ui:define name="pageTitle">
+            <h:outputText value="#{i18n['task.create.title']}"></h:outputText>
+        </ui:define>
+        <ui:define name="navigationBar">
+            <h:commandLink  immediate="true" action="/project/show" value="#{i18n['navigation.projects']}"></h:commandLink>
+            <h:outputText value="#{i18n['navigation.separtor']}"></h:outputText>
+            <h:commandLink  immediate="true" action="/project/edit"  value="#{sprintManager.project.name}"></h:commandLink>
+            <h:outputText value="#{i18n['navigation.separtor']}"></h:outputText>
+            <h:commandLink  immediate="true" action="/sprint/show" value="#{i18n['navigation.sprints']}"></h:commandLink>
+            <h:outputText value="#{i18n['navigation.separtor']}"></h:outputText>
+            <h:commandLink  immediate="true" action="/sprint/edit"  value="#{sprintManager.currentSprint.name}"></h:commandLink>
+            <h:outputText value="#{i18n['navigation.separtor']}"></h:outputText>
+            <h:commandLink  immediate="true" action="/story/show" value="#{i18n['navigation.stories']}"></h:commandLink>
+            <h:outputText value="#{i18n['navigation.separtor']}"></h:outputText>
+            <h:commandLink  immediate="true" action="/story/edit" value="#{taskManager.story.name}"></h:commandLink>
+            <h:outputText value=" > "></h:outputText>
+            <h:outputText value="#{i18n['task.create.form.title']}" styleClass="tituloForm"></h:outputText>
+        </ui:define>
+        <ui:define name="content">
+
+            <h:form  id="createTaskForm">
+                <h:panelGrid columns="3" headerClass="tituloForm" footerClass="footerForm">
+                    <ui:include src="form.xhtml" />
+                    <f:facet name="footer">
+                        <h:commandButton rendered="#{storyManager.sprint.name != null}" id="btnCreate" action="#{taskManager.save}" value="#{i18n['task.create.button.create']}" styleClass="botaoPostIt" />
+                        <h:commandButton rendered="#{storyManager.sprint.name != null}" id="btnCancel" action="show" value="#{i18n['task.create.button.cancel']}" styleClass="botaoPostIt" immediate="true" />
+                    </f:facet>
+                </h:panelGrid>
+            </h:form>
+        </ui:define>
+    </ui:composition>
+
+</html>
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/task/edit.xhtml b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/task/edit.xhtml
new file mode 100644
index 0000000..d816dc9
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/task/edit.xhtml
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
+      xmlns:h="http://xmlns.jcp.org/jsf/html">
+
+    <ui:composition template="/template.xhtml">
+        <ui:define name="pageTitle">
+            <h:outputText value="#{i18n['task.edit.title']}"></h:outputText>
+        </ui:define>
+        <ui:define name="navigationBar">
+            <h:commandLink  immediate="true" action="/project/show" value="#{i18n['navigation.projects']}" ></h:commandLink>
+            <h:outputText value="#{i18n['navigation.separtor']}"></h:outputText>
+            <h:commandLink  immediate="true" action="/project/edit"  value="#{sprintManager.project.name}" ></h:commandLink>
+            <h:outputText value="#{i18n['navigation.separtor']}"></h:outputText>
+            <h:commandLink  immediate="true" action="/sprint/show" value="#{i18n['navigation.sprints']}" ></h:commandLink>
+            <h:outputText value="#{i18n['navigation.separtor']}"></h:outputText>
+            <h:commandLink  immediate="true" action="/sprint/edit"  value="#{sprintManager.currentSprint.name}" ></h:commandLink>
+            <h:outputText value="#{i18n['navigation.separtor']}"></h:outputText>
+            <h:commandLink  immediate="true" action="/story/show" value="#{i18n['navigation.stories']}" ></h:commandLink>
+            <h:outputText value="#{i18n['navigation.separtor']}"></h:outputText>
+            <h:commandLink  immediate="true" action="/story/edit" value="#{storyManager.currentStory.name}"></h:commandLink>
+            <h:outputText value="#{i18n['navigation.separtor']}"></h:outputText>
+            <h:outputText value="#{i18n['task.edit.form.title']}" styleClass="tituloForm"></h:outputText>
+        </ui:define>
+        <ui:define name="content">
+
+            <h:form styleClass="scrumForm" id="editTaskForm">
+                <h:panelGrid headerClass="tituloForm" footerClass="footerForm">
+
+                    <ui:include src="form.xhtml" />
+                    <h:panelGroup>
+                        <h:commandButton rendered="#{storyManager.sprint.name != null}" id="btnEditUpdate" action="#{taskManager.save}" value="#{i18n['task.edit.button.update']}" styleClass="botaoPostIt" />
+                        <h:commandButton rendered="#{storyManager.sprint.name != null}" id="btnEditCancel" action="#{taskManager.cancelEdit}" immediate="true" value="#{i18n['task.edit.button.cancel']}" styleClass="botaoPostIt" />
+                        <h:button styleClass="botaoPostIt" outcome="/dashboard/show" value="#{i18n['sprint.show.button.showDashboard']}" />
+                    </h:panelGroup>
+                </h:panelGrid>
+            </h:form>
+        </ui:define>
+    </ui:composition>
+
+</html>
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/task/form.xhtml b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/task/form.xhtml
new file mode 100644
index 0000000..cf6a543
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/task/form.xhtml
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
+      xmlns:h="http://xmlns.jcp.org/jsf/html"
+      xmlns:f="http://xmlns.jcp.org/jsf/core" >
+
+    <ui:composition id="comp1">
+        <h:panelGrid columns="3" columnClasses="formLabel, formInput, formErrorMessage" styleClass="postItFormTable" id="pgFormTask">
+            <h:outputLabel value="#{i18n['task.form.label.name']}:" for="itTaskName" id="olName"/>
+            <h:inputText id="itTaskName" value="#{taskManager.currentTask.name}" required="true"
+                         requiredMessage="#{i18n['task.form.label.name.required']}" maxlength="30" size="30"
+                         validator="#{taskManager.checkUniqueTaskName}" />
+            <h:message for="itTaskName" styleClass="errorMessage" id="emName"/>
+
+            <h:outputLabel value="#{i18n['task.form.label.startDate']}:" for="itTaskName"/>
+            <h:panelGroup>
+                <h:inputText id="itStartedDate" value="#{taskManager.currentTask.startDate}"  maxlength="10" size="10" >
+                    <f:convertDateTime pattern="#{i18n['task.form.label.startDate.pattern']}" />
+                </h:inputText>
+                <h:outputText value="(#{i18n['task.form.label.startDate.pattern']})" styleClass="inputPattern" />
+            </h:panelGroup>
+            <h:message for="itStartedDate" styleClass="errorMessage"/>
+
+            <h:outputLabel value="#{i18n['task.form.label.endDate']}:" for="itTaskName"/>
+            <h:panelGroup>
+                <h:inputText id="itEndDate" value="#{taskManager.currentTask.endDate}" maxlength="10" size="10" >
+                    <f:convertDateTime pattern="#{i18n['task.form.label.endDate.pattern']}" />
+                </h:inputText>
+                <h:outputText value="(#{i18n['task.form.label.endDate.pattern']})" styleClass="inputPattern" />
+            </h:panelGroup>
+            <h:message for="itEndDate" styleClass="errorMessage"/>
+            
+            <h:outputLabel value="#{i18n['task.form.label.status']}:" for="itStatus"/>
+            <h:outputText id="itStatus" value="#{taskManager.currentTask.status}"  />
+        </h:panelGrid>
+    </ui:composition>
+
+</html>
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/task/show.xhtml b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/task/show.xhtml
new file mode 100644
index 0000000..3eeaf9f
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/task/show.xhtml
@@ -0,0 +1,144 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
+      xmlns:h="http://xmlns.jcp.org/jsf/html"
+      xmlns:f="http://xmlns.jcp.org/jsf/core">
+
+    <ui:composition template="/template.xhtml">
+        <ui:define name="pageTitle">
+            <h:outputText value="#{i18n['task.show.title']}"></h:outputText>
+        </ui:define>
+        <ui:define name="navigationBar">
+            <h:commandLink  immediate="true" action="/project/show" value="#{i18n['navigation.projects']}"></h:commandLink>
+            <h:outputText value="#{i18n['navigation.separtor']}"></h:outputText>
+            <h:commandLink  immediate="true" action="/project/edit"  value="#{sprintManager.project.name}"></h:commandLink>
+            <h:outputText value="#{i18n['navigation.separtor']}"></h:outputText>
+            <h:commandLink  immediate="true" action="/sprint/show" value="#{i18n['navigation.sprints']}"></h:commandLink>
+            <h:outputText value="#{i18n['navigation.separtor']}"></h:outputText>
+            <h:commandLink  immediate="true" action="/sprint/edit"  value="#{sprintManager.currentSprint.name}"></h:commandLink>
+            <h:outputText value="#{i18n['navigation.separtor']}"></h:outputText>
+            <h:commandLink  immediate="true" action="/story/show" value="#{i18n['navigation.stories']}"></h:commandLink>
+            <h:outputText value="#{i18n['navigation.separtor']}"></h:outputText>
+            <h:commandLink  immediate="true" action="/story/edit" value="#{taskManager.story.name}"></h:commandLink>
+            <h:outputText value="#{i18n['navigation.separtor']}"></h:outputText>
+            <h:outputText value="#{i18n['task.show.table.title']}" styleClass="tituloForm"></h:outputText>
+        </ui:define>
+        <ui:define name="content">
+            <h:form id="frmListTasks">
+                <h:panelGrid columns="3" headerClass="tituloForm" footerClass="footerForm">
+                    <h:outputText value="#{i18n['task.show.table.label.empty']}"
+                                  rendered="#{taskManager.tasks.rowCount eq 0}" />
+                    <h:dataTable value="#{taskManager.tasks}" var="task"
+                                 rendered="#{taskManager.tasks.rowCount > 0}"
+                                 title="#{i18n['task.show.table.title']}"
+                                 summary="#{i18n['task.show.table.title']}"
+                                 border="0"
+                                 headerClass="datatableHeader"
+                                 rowClasses="datatableRow,datatableRow2"
+                                 columnClasses="dataTableFirstColumn"
+                                 styleClass="datatable"
+                                 id="dtTasks">
+
+                        <h:column>
+                            <f:facet name="header">
+                                <h:outputText value="#" />
+                            </f:facet>
+                            <h:outputText value="#{taskManager.tasks.rowIndex + 1}" />
+                        </h:column>
+                        <h:column>
+                            <f:facet name="header">
+                                <h:outputText value="#{i18n['task.show.table.header.name']}" />
+                            </f:facet>
+                            <h:outputText value="#{task.name}" />
+                        </h:column>
+                        <h:column>
+                            <f:facet name="header">
+                                <h:outputText value="#{i18n['task.show.table.header.startDate']}"/>
+                            </f:facet>
+                            <h:outputText value="#{task.startDate}">
+                                <f:convertDateTime pattern="#{i18n['task.show.table.header.startDate.pattern']}" />
+                            </h:outputText>
+                        </h:column>
+                        <h:column>
+                            <f:facet name="header">
+                                <h:outputText value="#{i18n['task.show.table.header.endDate']}"/>
+                            </f:facet>
+                            <h:outputText value="#{task.endDate}">
+                                <f:convertDateTime pattern="#{i18n['task.show.table.header.endDate.pattern']}" />
+                            </h:outputText>
+                        </h:column>
+                        <h:column>
+                            <f:facet name="header">
+                                <h:outputText value="#{i18n['task.show.table.header.status']}" />
+                            </f:facet>
+                            <h:outputText value="#{i18n[task.statusKeyI18n]}"  />
+                        </h:column>
+                        <h:column>
+                            <f:facet name="header">
+                                <h:outputText value="#{i18n['task.show.table.header.actions']}"/>
+                            </f:facet>
+                            <h:commandButton styleClass="botaoPostIt" action="#{taskManager.edit}" value="#{i18n['task.show.button.edit']}"  />
+
+                            <h:commandButton id="btnDeleteTask" styleClass="botaoPostIt" action="#{taskManager.remove}" value="#{i18n['task.show.button.delete']}"
+                                             onclick="jsf.ajax.request(this, event, {execute: 'frmListTasks',
+                                                 render: 'frmListTasks'}); return false;" />
+
+                            <h:commandButton styleClass="botaoPostIt" action="#{taskManager.remove}" value="#{i18n['task.show.button.delete']}"  />
+                        </h:column>
+
+                    </h:dataTable>
+                    <f:facet name="footer">
+                        <h:commandButton styleClass="botaoPostIt" action="#{taskManager.create}" value="#{i18n['task.show.button.newTask']}"  />
+                        <h:commandButton styleClass="botaoPostIt" action="#{taskManager.showStories}" value="#{i18n['task.show.button.showStories']}"  />
+                        <h:button styleClass="botaoPostIt" outcome="/dashboard/show" value="#{i18n['sprint.show.button.showDashboard']}" />
+                    </f:facet>
+                </h:panelGrid>
+            </h:form>
+        </ui:define>
+    </ui:composition>
+
+</html>
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/template.xhtml b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/template.xhtml
new file mode 100644
index 0000000..ddeb77a
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/src/main/webapp/template.xhtml
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
+      xmlns:h="http://xmlns.jcp.org/jsf/html"
+      xmlns:f="http://xmlns.jcp.org/jsf/core"
+      xmlns:scrum="http://xmlns.jcp.org/jsf/composite/components">
+
+    <h:head>
+        <h:outputStylesheet library="css/1_1" name="#{skinManager.selectedSkin}"/>
+        <h:outputStylesheet library="css/1_1" name="common.css"/>
+        <h:outputScript     library="js" name="menu.js" target="head"/>
+        <h:outputScript     library="javax.faces" name="jsf.js"/>
+        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+        <title>
+            <ui:insert name="pageTitle">
+                <h:outputText value="#{i18n['template.title']}"></h:outputText>
+            </ui:insert>
+        </title>
+    </h:head>
+
+    <h:body>
+        <div align="center">
+            <h:panelGrid  width="990">
+                <scrum:menu>
+                    <ui:param name="image" value="/resources/images/menu/barraSuperior-04.png"></ui:param>
+                </scrum:menu>
+                <h:form id="navigationBar">
+                    <div class="navBarClass">
+                        <ui:insert name="navigationBar"></ui:insert>
+                    </div>
+                </h:form>
+
+                <h:panelGrid columns="1"  headerClass="tableHeader" footerClass="tableFooter" cellpadding="0" cellspacing="0">
+                    <f:facet name="header">
+                        <h:outputText value=""></h:outputText>
+                    </f:facet>
+
+                    <table class="tableBody"><tr><td>
+                        <table align="center">
+                            <tr><td>
+                                    <ui:insert name="content"></ui:insert>
+                            </td></tr>
+                        </table>
+                    </td></tr></table>
+
+
+                    <f:facet name="footer">
+                        <h:graphicImage value="/resources/images/lousaNova/quadroNegro_botton_990x120.png" ></h:graphicImage>
+                    </f:facet>
+                </h:panelGrid>
+
+                <h:panelGroup>
+                    <ui:include src="./footer.xhtml" />
+                </h:panelGroup>
+            </h:panelGrid>
+        </div>
+    </h:body>
+</html>  
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/pom.xml b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/pom.xml
new file mode 100644
index 0000000..77746d7
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/pom.xml
@@ -0,0 +1,210 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+    <modelVersion>4.0.0</modelVersion>
+    <groupId>com.sun.faces</groupId>
+    <artifactId>jsf-scrumtoys</artifactId>
+    <packaging>war</packaging>
+    <name>jsf-scrumtoys</name>
+    <url>https://mojarra.dev.java.net/</url>
+    <description>ScrumToys sample app</description>
+    <version>0.1</version>
+
+    <build>
+        <defaultGoal>install</defaultGoal>
+        <sourceDirectory>src/main/java</sourceDirectory>
+        <finalName>scrumtoys</finalName>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>2.3.2</version>
+                <configuration>
+                    <source>1.5</source>
+                    <target>1.5</target>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+
+    <repositories>
+        <repository>
+            <snapshots/>
+            <id>ibiblio.mirrors</id>
+            <url>http://mirrors.ibiblio.org/pub/mirrors/maven2</url>
+        </repository>
+        <repository>
+            <snapshots/>
+            <id>codehaus</id>
+            <name>codehaus</name>
+            <url>http://repository.codehaus.org</url>
+        </repository>
+        <repository>
+            <id>jboss</id>
+            <url>http://repository.jboss.org/maven2</url>
+        </repository>
+        <repository>
+            <snapshots/>
+            <id>java.net.m2</id>
+            <name>java.net m2 repo</name>
+            <url>http://download.java.net/maven/2</url>
+        </repository>
+    </repositories>
+
+    <dependencies>
+
+        <dependency>
+            <groupId>javax.faces</groupId>
+            <artifactId>javax.faces-api</artifactId>
+            <version>2.2-SNAPSHOT</version>
+            <scope>provided</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>javax</groupId>
+            <artifactId>javaee-api</artifactId>
+            <version>6.0</version>
+            <scope>provided</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>log4j</groupId>
+            <artifactId>log4j</artifactId>
+            <version>1.2.12</version>
+        </dependency>
+
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <version>4.4</version>
+            <scope>test</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>net.sourceforge.htmlunit</groupId>
+            <artifactId>htmlunit</artifactId>
+            <version>2.4</version>
+            <scope>test</scope>
+            <exclusions>
+                <exclusion>
+                    <groupId>javax.xml</groupId>
+                    <artifactId>jsr173</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+
+        <dependency>
+            <groupId>commons-codec</groupId>
+            <artifactId>commons-codec</artifactId>
+            <version>1.3</version>
+            <scope>test</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>commons-httpclient</groupId>
+            <artifactId>commons-httpclient</artifactId>
+            <version>3.1</version>
+            <scope>test</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>commons-logging</groupId>
+            <artifactId>commons-logging</artifactId>
+            <version>1.1.1</version>
+            <scope>test</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>org.w3c.css</groupId>
+            <artifactId>sac</artifactId>
+            <version>1.3</version>
+            <scope>test</scope>
+        </dependency>
+
+    </dependencies>
+    <reporting>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-project-info-reports-plugin</artifactId>
+                <reportSets>
+                    <reportSet/>
+                </reportSets>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                    <source>1.5</source>
+                    <target>1.5</target>
+                </configuration>
+            </plugin>
+        </plugins>
+    </reporting>
+    <profiles>
+        <profile>
+            <id>default</id>
+            <!-- Tests are disabled by default.  See the test profile -->
+            <activation>
+                <activeByDefault>true</activeByDefault>
+            </activation>
+            <properties>
+                <maven.test.skip>true</maven.test.skip>
+            </properties>
+        </profile>
+        <profile>
+            <id>test</id>
+            <!-- To activate this profile, and allow tests to run, do this:
+        mvn -o -Ptest test -->
+        </profile>
+
+    </profiles>
+    <properties>
+        <netbeans.hint.deploy.server>gfv3ee6</netbeans.hint.deploy.server>
+    </properties>
+
+</project>
+
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/java/jsf2/demo/scrum/model/entities/AbstractEntity.java b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/java/jsf2/demo/scrum/model/entities/AbstractEntity.java
new file mode 100644
index 0000000..7531ffc
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/java/jsf2/demo/scrum/model/entities/AbstractEntity.java
@@ -0,0 +1,80 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package jsf2.demo.scrum.model.entities;
+
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.MappedSuperclass;
+
+/**
+ *
+ * @author Dr. Spock (spock at dev.java.net)
+ */
+ at MappedSuperclass
+public abstract class AbstractEntity implements PersistentEntity<Long> {
+
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    private Long id;
+    
+    public Long getId() {
+        return this.id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public boolean isNew() {
+        return (this.id == null);
+    }
+
+    @Override
+    public abstract boolean equals(Object object);
+
+    @Override
+    public abstract int hashCode();
+
+    @Override
+    public abstract String toString();
+    
+}
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/java/jsf2/demo/scrum/model/entities/PersistentEntity.java b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/java/jsf2/demo/scrum/model/entities/PersistentEntity.java
new file mode 100644
index 0000000..daea9fc
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/java/jsf2/demo/scrum/model/entities/PersistentEntity.java
@@ -0,0 +1,55 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package jsf2.demo.scrum.model.entities;
+
+import java.io.Serializable;
+
+/**
+ *
+ * @author Dr. Spock (spock at dev.java.net)
+ */
+public interface PersistentEntity<PK extends Serializable> extends Serializable {
+
+    PK getId();
+
+    boolean isNew();
+    
+}
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/java/jsf2/demo/scrum/model/entities/Project.java b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/java/jsf2/demo/scrum/model/entities/Project.java
new file mode 100644
index 0000000..a6d86a0
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/java/jsf2/demo/scrum/model/entities/Project.java
@@ -0,0 +1,166 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package jsf2.demo.scrum.model.entities;
+
+import java.io.Serializable;
+import java.util.Collections;
+import java.util.Date;
+import java.util.LinkedList;
+import java.util.List;
+import javax.persistence.CascadeType;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.NamedQueries;
+import javax.persistence.NamedQuery;
+import javax.persistence.OneToMany;
+import javax.persistence.Table;
+import javax.persistence.Temporal;
+import javax.persistence.TemporalType;
+
+/**
+ * @author Dr. Spock (spock at dev.java.net)
+ */
+ at Entity
+ at Table(name = "projects")
+ at NamedQueries({@NamedQuery(name = "project.getAll", query = "select p from Project as p"),
+        @NamedQuery(name = "project.getAllOpen", query = "select p from Project as p where p.endDate is null"),
+        @NamedQuery(name = "project.countByName", query = "select count(p) from Project as p where p.name = :name and not(p = :currentProject)"),
+        @NamedQuery(name = "project.new.countByName", query = "select count(p) from Project as p where p.name = :name")})
+public class Project extends AbstractEntity implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+    @Column(nullable = false, unique = true)
+    private String name;
+    @Temporal(TemporalType.DATE)
+    @Column(name = "start_date", nullable = false)
+    private Date startDate;
+    @Temporal(TemporalType.DATE)
+    @Column(name = "end_date")
+    private Date endDate;
+    @OneToMany(mappedBy = "project", cascade = CascadeType.ALL)
+    private List<Sprint> sprints;
+
+    public Project() {
+        this.startDate = new Date();
+    }
+
+    public Project(String name) {
+        this();
+        this.name = name;
+    }
+
+    public Project(String name, Date startDate) {
+        this(name);
+        this.startDate = startDate;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public Date getStartDate() {
+        return startDate;
+    }
+
+    public void setStartDate(Date startDate) {
+        this.startDate = startDate;
+    }
+
+    public Date getEndDate() {
+        return endDate;
+    }
+
+    public void setEndDate(Date endDate) {
+        this.endDate = endDate;
+    }
+
+    public List<Sprint> getSprints() {
+        return (sprints != null) ? Collections.unmodifiableList(sprints) : Collections.<Sprint>emptyList();
+    }
+
+    public boolean addSprint(Sprint sprint) {
+        if (sprints == null) {
+            sprints = new LinkedList<Sprint>();
+        }
+        if (sprint != null && !sprints.contains(sprint)) {
+            sprints.add(sprint);
+            sprint.setProject(this);
+            return true;
+        }
+        return false;
+    }
+
+    public boolean removeSpring(Sprint sprint) {
+        return (sprints != null
+                   && !sprints.isEmpty()
+                   && sprints.remove(sprint));
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (obj == null) {
+            return false;
+        }
+        if (getClass() != obj.getClass()) {
+            return false;
+        }
+        final Project other = (Project) obj;
+        return !((this.name == null)
+                 ? (other.name != null)
+                 : !this.name.equals(other.name));
+    }
+
+    @Override
+    public int hashCode() {
+        int hash = 7;
+        hash = 79 * hash + (this.name != null ? this.name.hashCode() : 0);
+        return hash;
+    }
+
+    @Override
+    public String toString() {
+        return "Project[name=" + name + ",startDate=" + startDate + ",endDate=" + endDate + "]";
+    }
+}
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/java/jsf2/demo/scrum/model/entities/Sprint.java b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/java/jsf2/demo/scrum/model/entities/Sprint.java
new file mode 100644
index 0000000..2688b80
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/java/jsf2/demo/scrum/model/entities/Sprint.java
@@ -0,0 +1,215 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package jsf2.demo.scrum.model.entities;
+
+import javax.persistence.*;
+import java.io.Serializable;
+import java.util.Collections;
+import java.util.Date;
+import java.util.LinkedList;
+import java.util.List;
+
+/**
+ * @author Dr. Spock (spock at dev.java.net)
+ */
+ at Entity
+ at Table(name = "sprints", uniqueConstraints = @UniqueConstraint(columnNames = {"name", "project_id"}))
+ at NamedQueries({
+        @NamedQuery(name = "sprint.countByNameAndProject", query = "select count(s) from Sprint as s where s.name = :name and s.project = :project and not(s = :currentSprint)"),
+        @NamedQuery(name = "sprint.getByProject", query = "select s from Sprint as s where s.project = :project"),
+        @NamedQuery(name = "sprint.new.countByNameAndProject", query = "select count(s) from Sprint as s where s.name = :name and s.project = :project"),
+        @NamedQuery(name = "sprint.remove.ByProject", query = "delete from Sprint as s where s.project = :project")
+})
+public class Sprint extends AbstractEntity implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+    @Column(nullable = false)
+    private String name;
+    private String goals;
+    @Temporal(TemporalType.DATE)
+    @Column(name = "start_date", nullable = false)
+    private Date startDate;
+    @Temporal(TemporalType.DATE)
+    @Column(name = "end_date")
+    private Date endDate;
+    @Column(name = "iteration_scope")
+    private int iterationScope;
+    @Column(name = "gained_story_points")
+    private int gainedStoryPoints;
+    @Temporal(TemporalType.TIME)
+    @Column(name = "daily_meeting_time")
+    private Date dailyMeetingTime;
+    @OneToMany(mappedBy = "sprint", cascade = CascadeType.ALL)
+    private List<Story> stories;
+    @ManyToOne
+    @JoinColumn(name = "project_id")
+    private Project project;
+
+    public Sprint() {
+        this.startDate = new Date();
+    }
+
+    public Sprint(String name) {
+        this();
+        this.name = name;
+    }
+
+    public Sprint(String name, Project project) {
+        this(name);
+        this.project = project;
+    }
+
+    @SprintNameUniquenessConstraint
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getGoals() {
+        return goals;
+    }
+
+    public void setGoals(String goals) {
+        this.goals = goals;
+    }
+
+    public Date getStartDate() {
+        return startDate;
+    }
+
+    public void setStartDate(Date startDate) {
+        this.startDate = startDate;
+    }
+
+    public Date getEndDate() {
+        return endDate;
+    }
+
+    public void setEndDate(Date endDate) {
+        this.endDate = endDate;
+    }
+
+    public int getIterationScope() {
+        return iterationScope;
+    }
+
+    public void setIterationScope(int iterationScope) {
+        this.iterationScope = iterationScope;
+    }
+
+    public int getGainedStoryPoints() {
+        return gainedStoryPoints;
+    }
+
+    public void setGainedStoryPoints(int gainedStoryPoints) {
+        this.gainedStoryPoints = gainedStoryPoints;
+    }
+
+    public Date getDailyMeetingTime() {
+        return dailyMeetingTime;
+    }
+
+    public void setDailyMeetingTime(Date dailyMeetingTime) {
+        this.dailyMeetingTime = dailyMeetingTime;
+    }
+
+    public List<Story> getStories() {
+        return (stories != null) ? Collections.unmodifiableList(stories) : Collections.<Story>emptyList();
+    }
+
+    public boolean addStory(Story story) {
+        if (stories == null) {
+            stories = new LinkedList<Story>();
+        }
+        if (story != null && !stories.contains(story)) {
+            stories.add(story);
+            story.setSprint(this);
+            return true;
+        }
+        return false;
+    }
+
+    public boolean removeStory(Story story) {
+        return (stories != null
+                 && !stories.isEmpty()
+                 && stories.remove(story));
+    }
+
+    public Project getProject() {
+        return project;
+    }
+
+    public void setProject(Project project) {
+        this.project = project;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (obj == null) {
+            return false;
+        }
+        if (getClass() != obj.getClass()) {
+            return false;
+        }
+        final Sprint other = (Sprint) obj;
+        if ((this.name == null) ? (other.name != null) : !this.name.equals(other.name)) {
+            return false;
+        }
+        return !(this.project != other.project
+                   && (this.project == null || !this.project.equals(other.project)));
+    }
+
+    @Override
+    public int hashCode() {
+        int hash = 7;
+        hash = 97 * hash + (this.name != null ? this.name.hashCode() : 0);
+        hash = 97 * hash + (this.project != null ? this.project.hashCode() : 0);
+        return hash;
+    }
+
+    @Override
+    public String toString() {
+        return "Sprint[name=" + name + ",startDate=" + startDate + ",project=" + project + "]";
+    }
+}
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/java/jsf2/demo/scrum/model/entities/SprintNameUniquenessConstraint.java b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/java/jsf2/demo/scrum/model/entities/SprintNameUniquenessConstraint.java
new file mode 100644
index 0000000..740b2d6
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/java/jsf2/demo/scrum/model/entities/SprintNameUniquenessConstraint.java
@@ -0,0 +1,64 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package jsf2.demo.scrum.model.entities;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+import javax.validation.Constraint;
+import javax.validation.Payload;
+
+ at Documented
+ at Constraint(validatedBy = SprintNameUniquenessConstraintValidator.class)
+ at Target({ ElementType.METHOD, ElementType.FIELD })
+ at Retention(RetentionPolicy.RUNTIME)
+public @interface SprintNameUniquenessConstraint {
+    
+    String message() default "{sprint.form.label.name.unique}";
+
+    Class<?>[] groups() default {};
+
+    Class<? extends Payload>[] payload() default {};
+    
+
+}
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/java/jsf2/demo/scrum/model/entities/SprintNameUniquenessConstraintValidator.java b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/java/jsf2/demo/scrum/model/entities/SprintNameUniquenessConstraintValidator.java
new file mode 100644
index 0000000..a6d21c3
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/java/jsf2/demo/scrum/model/entities/SprintNameUniquenessConstraintValidator.java
@@ -0,0 +1,73 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package jsf2.demo.scrum.model.entities;
+
+import javax.faces.context.FacesContext;
+import javax.validation.ConstraintValidator;
+import javax.validation.ConstraintValidatorContext;
+import jsf2.demo.scrum.web.controller.SprintManager;
+
+public class SprintNameUniquenessConstraintValidator implements ConstraintValidator<SprintNameUniquenessConstraint, String> {
+
+    public boolean isValid(String value, ConstraintValidatorContext ctx) {
+        
+        FacesContext context = FacesContext.getCurrentInstance();
+        SprintManager sprintManager = (SprintManager)
+                context.getApplication().evaluateExpressionGet(context, 
+                "#{sprintManager}", SprintManager.class);
+        boolean result = true;
+        String message = sprintManager.
+                checkUniqueSprintNameApplicationValidatorMethod(value);
+        if (message != null) {
+            result = false;
+        ConstraintValidatorContext.ConstraintViolationBuilder builder =
+        ctx.buildConstraintViolationWithTemplate(message);
+        builder.addConstraintViolation();
+        }
+
+        
+        return result;
+    }
+
+    public void initialize(SprintNameUniquenessConstraint arg0) {
+    }
+    
+}
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/java/jsf2/demo/scrum/model/entities/Story.java b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/java/jsf2/demo/scrum/model/entities/Story.java
new file mode 100644
index 0000000..430c297
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/java/jsf2/demo/scrum/model/entities/Story.java
@@ -0,0 +1,226 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package jsf2.demo.scrum.model.entities;
+
+import javax.persistence.*;
+import java.io.Serializable;
+import java.util.Collections;
+import java.util.Date;
+import java.util.LinkedList;
+import java.util.List;
+
+/**
+ * @author Dr. Spock (spock at dev.java.net)
+ */
+ at Entity
+ at Table(name = "stories", uniqueConstraints = @UniqueConstraint(columnNames = {"name", "sprint_id"}))
+ at NamedQueries({
+        @NamedQuery(name = "story.countByNameAndSprint", query = "select count(s) from Story as s where s.name = :name and s.sprint = :sprint and not(s = :currentStory)"),
+        @NamedQuery(name = "story.new.countByNameAndSprint", query = "select count(s) from Story as s where s.name = :name and s.sprint = :sprint"),
+        @NamedQuery(name = "story.getBySprint", query = "select s from Story as s where s.sprint = :sprint"),
+        @NamedQuery(name = "story.remove.ByProject", query = "delete from Story as s where s.sprint.project = :project")
+})
+public class Story extends AbstractEntity implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+    @Column(nullable = false)
+    private String name;
+    private int priority;
+    @Temporal(TemporalType.DATE)
+    @Column(name = "start_date", nullable = false)
+    private Date startDate;
+    @Temporal(TemporalType.DATE)
+    @Column(name = "end_date")
+    private Date endDate;
+    private String acceptance;
+    private int estimation;
+    @ManyToOne
+    @JoinColumn(name = "sprint_id")
+    private Sprint sprint;
+    @OneToMany(mappedBy = "story", cascade = CascadeType.ALL)
+    private List<Task> tasks;
+
+    public Story() {
+        this.startDate = new Date();
+    }
+
+    public Story(String name) {
+        this();
+        this.name = name;
+    }
+
+    public Story(String name, Sprint sprint) {
+        this(name);
+        this.name = name;
+        if (sprint != null) {
+            sprint.addStory(this);
+        }
+    }
+
+    public String getAcceptance() {
+        return acceptance;
+    }
+
+    public void setAcceptance(String acceptance) {
+        this.acceptance = acceptance;
+    }
+
+    public Date getEndDate() {
+        return endDate;
+    }
+
+    public void setEndDate(Date endDate) {
+        this.endDate = endDate;
+    }
+
+    public int getEstimation() {
+        return estimation;
+    }
+
+    public void setEstimation(int estimation) {
+        this.estimation = estimation;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public int getPriority() {
+        return priority;
+    }
+
+    public void setPriority(int priority) {
+        this.priority = priority;
+    }
+
+    public Sprint getSprint() {
+        return sprint;
+    }
+
+    public void setSprint(Sprint sprint) {
+        this.sprint = sprint;
+    }
+
+    public Date getStartDate() {
+        return startDate;
+    }
+
+    public void setStartDate(Date startDate) {
+        this.startDate = startDate;
+    }
+
+    public List<Task> getTasks() {
+        return (tasks != null) ? Collections.unmodifiableList(tasks) : Collections.<Task>emptyList();
+    }
+
+    public List<Task> getDoneTasks() {
+        return Collections.unmodifiableList(getTasks(TaskStatus.DONE));
+    }
+
+    public List<Task> getWorkingTasks() {
+        return Collections.unmodifiableList(getTasks(TaskStatus.WORKING));
+    }
+
+    public List<Task> getTodoTasks() {
+        return Collections.unmodifiableList(getTasks(TaskStatus.TODO));
+    }
+
+    private List<Task> getTasks(TaskStatus status) {
+        List<Task> result = new LinkedList<Task>();
+        if (tasks != null && !tasks.isEmpty()) {
+            for (Task task : tasks) {
+                if (task != null && status.equals(task.getStatus())) {
+                    result.add(task);
+                }
+            }
+        }
+        return result;
+    }
+
+    public boolean addTask(Task task) {
+        if (tasks == null) {
+            tasks = new LinkedList<Task>();
+        }
+        if (task != null && !tasks.contains(task)) {
+            tasks.add(task);
+            task.setStory(this);
+            return true;
+        }
+        return false;
+    }
+
+    public boolean removeTask(Task task) {
+        return (tasks != null && !tasks.isEmpty() && tasks.remove(task));
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (obj == null) {
+            return false;
+        }
+        if (getClass() != obj.getClass()) {
+            return false;
+        }
+        final Story other = (Story) obj;
+        if ((this.name == null) ? (other.name != null) : !this.name.equals(other.name)) {
+            return false;
+        }
+        return !(this.sprint != other.sprint
+                 && (this.sprint == null || !this.sprint.equals(other.sprint)));
+    }
+
+    @Override
+    public int hashCode() {
+        int hash = 7;
+        hash = 23 * hash + (this.name != null ? this.name.hashCode() : 0);
+        hash = 23 * hash + (this.sprint != null ? this.sprint.hashCode() : 0);
+        return hash;
+    }
+
+    @Override
+    public String toString() {
+        return "Story[name=" + name + ",startDate=" + startDate + ",sprint=" + sprint + "]";
+    }
+}
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/java/jsf2/demo/scrum/model/entities/Task.java b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/java/jsf2/demo/scrum/model/entities/Task.java
new file mode 100644
index 0000000..c9e9219
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/java/jsf2/demo/scrum/model/entities/Task.java
@@ -0,0 +1,184 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package jsf2.demo.scrum.model.entities;
+
+import javax.persistence.*;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * @author Dr. Spock (spock at dev.java.net)
+ */
+ at Entity
+ at Table(name = "tasks", uniqueConstraints = @UniqueConstraint(columnNames = {"name", "story_id"}))
+ at NamedQueries({
+    @NamedQuery(name = "task.countByNameAndStory", query = "select count(t) from Task as t where t.name = :name and t.story = :story and not(t = :currentTask)"),
+    @NamedQuery(name = "task.getByStory", query = "select t from Task as t where t.story = :story"),
+    @NamedQuery(name = "task.new.countByNameAndStory", query = "select count(t) from Task as t where t.name = :name and t.story = :story"),
+    @NamedQuery(name = "task.getByStatusAndSprint", query = "select t from Task as t where t.status = :status and t.story.sprint = :sprint"),
+    @NamedQuery(name = "task.remove.ByProject", query = "delete from Task as t where t.story.sprint.project = :project")
+})
+public class Task extends AbstractEntity implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @Column(nullable = false)
+    private String name;
+
+    @Temporal(TemporalType.DATE)
+    @Column(name = "start_date")
+    private Date startDate;
+
+    @Temporal(TemporalType.DATE)
+    @Column(name = "end_date")
+    private Date endDate;
+
+    @Enumerated(EnumType.ORDINAL)
+    private TaskStatus status;
+
+    @ManyToOne
+    @JoinColumn(name = "story_id")
+    private Story story;
+
+    public Task() {
+        this.status = TaskStatus.TODO;
+    }
+
+    public Task(String name) {
+        this();
+        this.name = name;
+    }
+
+    public Task(String name, Story story) {
+        this(name);
+        if (story != null) {
+            story.addTask(this);
+        }
+    }
+
+    public Date getEndDate() {
+        return endDate;
+    }
+
+    public void setEndDate(Date endDate) {
+        this.endDate = endDate;
+        changeTaskStatus(this.startDate, endDate);
+
+    }
+
+    protected void changeTaskStatus(Date startDate, Date endDate) {
+        if (endDate != null) {
+            this.setStatus(TaskStatus.DONE);
+        }
+        if (endDate == null && this.startDate != null) {
+            this.setStatus(TaskStatus.WORKING);
+        }
+        if (endDate == null && this.startDate == null) {
+            this.setStatus(TaskStatus.TODO);
+        }
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public Date getStartDate() {
+        return startDate;
+    }
+
+    public void setStartDate(Date startDate) {
+        this.startDate = startDate;
+        changeTaskStatus(startDate, this.endDate);
+    }
+
+    public TaskStatus getStatus() {
+        return status;
+    }
+
+    public void setStatus(TaskStatus status) {
+        this.status = status;
+    }
+
+    public Story getStory() {
+        return story;
+    }
+
+    public void setStory(Story story) {
+        this.story = story;
+    }
+
+    public String getStatusKeyI18n() {
+        return "task.show.table.header.status."+status;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (obj == null) {
+            return false;
+        }
+        if (getClass() != obj.getClass()) {
+            return false;
+        }
+        final Task other = (Task) obj;
+        if ((this.name == null) ? (other.name != null) : !this.name.equals(other.name)) {
+            return false;
+        }
+        return !(this.story != other.story
+                 && (this.story == null || !this.story.equals(other.story)));
+    }
+
+    @Override
+    public int hashCode() {
+        int hash = 7;
+        hash = 83 * hash + (this.name != null ? this.name.hashCode() : 0);
+        hash = 83 * hash + (this.story != null ? this.story.hashCode() : 0);
+        return hash;
+    }
+
+    @Override
+    public String toString() {
+        return "Task[name=" + name + ",startDate=" + startDate + ",story=" + story + "]";
+    }
+}
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/java/jsf2/demo/scrum/model/entities/TaskStatus.java b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/java/jsf2/demo/scrum/model/entities/TaskStatus.java
new file mode 100644
index 0000000..a241601
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/java/jsf2/demo/scrum/model/entities/TaskStatus.java
@@ -0,0 +1,50 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package jsf2.demo.scrum.model.entities;
+
+/**
+ *
+ * @author Dr. Spock (spock at dev.java.net)
+ */
+public enum TaskStatus {
+
+    TODO, DONE, WORKING
+}
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/java/jsf2/demo/scrum/web/controller/AbstractManager.java b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/java/jsf2/demo/scrum/web/controller/AbstractManager.java
new file mode 100644
index 0000000..d93cb8b
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/java/jsf2/demo/scrum/web/controller/AbstractManager.java
@@ -0,0 +1,163 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package jsf2.demo.scrum.web.controller;
+
+import java.util.ResourceBundle;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.annotation.Resource;
+import javax.faces.application.FacesMessage;
+import javax.faces.application.FacesMessage.Severity;
+import javax.faces.context.FacesContext;
+import javax.faces.event.SystemEvent;
+import javax.faces.event.SystemEventListener;
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceUnit;
+import javax.persistence.EntityManagerFactory;
+import javax.transaction.UserTransaction;
+
+/**
+ *
+ * @author Dr. Spock (spock at dev.java.net)
+ */
+public abstract class AbstractManager {
+
+    @PersistenceUnit
+    private EntityManagerFactory emf;
+    @Resource
+    private UserTransaction userTransaction;
+
+    protected <T> T doInTransaction(PersistenceAction<T> action) throws ManagerException {
+        EntityManager em = emf.createEntityManager();
+        try {
+            userTransaction.begin();
+            T result = action.execute(em);
+            userTransaction.commit();
+            return result;
+        } catch (Exception e) {
+            try {
+                userTransaction.rollback();
+            } catch (Exception ex) {
+                Logger.getLogger(AbstractManager.class.getName()).log(Level.SEVERE, null, ex);
+            }
+            throw new ManagerException(e);
+        } finally {
+            em.close();
+        }
+
+    }
+
+    protected void doInTransaction(PersistenceActionWithoutResult action) throws ManagerException {
+        EntityManager em = emf.createEntityManager();
+        try {
+            userTransaction.begin();
+            action.execute(em);
+            userTransaction.commit();
+        } catch (Exception e) {
+            try {
+                userTransaction.rollback();
+            } catch (Exception ex) {
+                Logger.getLogger(AbstractManager.class.getName()).log(Level.SEVERE, null, ex);
+            }
+            throw new ManagerException(e);
+        } finally {
+            em.close();
+        }
+    }
+
+    protected static interface PersistenceAction<T> {
+
+        T execute(EntityManager em);
+    }
+
+    protected static interface PersistenceActionWithoutResult {
+
+        void execute(EntityManager em);
+    }
+
+    protected void addMessage(String message) {
+        addMessage(null, message, FacesMessage.SEVERITY_INFO);
+    }
+
+    protected void addMessage(String componentId, String message) {
+        addMessage(componentId, message, FacesMessage.SEVERITY_INFO);
+    }
+
+    protected void addMessage(String message, Severity severity) {
+        addMessage(null, message, severity);
+    }
+
+    protected void addMessage(String componentId, String message, Severity severity) {
+        FacesContext.getCurrentInstance().addMessage(componentId, new FacesMessage(severity, message, message));
+    }
+
+    protected String getMessageForKey(String key) {
+        FacesContext ctx = FacesContext.getCurrentInstance();
+        ResourceBundle rb = ctx.getApplication().getResourceBundle(ctx, "i18n");
+        return rb.getString(key);
+    }
+
+    protected FacesMessage getFacesMessageForKey(String key) {
+        return new FacesMessage(getMessageForKey(key));
+    }
+
+    protected Logger getLogger(Class<?> clazz) {
+        if (clazz == null) {
+            throw new IllegalArgumentException("Class for logger is required.");
+        }
+        return Logger.getLogger(clazz.getName());
+    }
+
+    protected void publishEvent(Class<? extends SystemEvent> eventClass, Object source) {
+        if (source != null) {
+            FacesContext ctx = FacesContext.getCurrentInstance();
+            ctx.getApplication().publishEvent(ctx, eventClass, source);
+        }
+    }
+
+    protected void subscribeToEvent(Class<? extends SystemEvent> eventClass, SystemEventListener listener) {
+        FacesContext.getCurrentInstance().getApplication().subscribeToEvent(eventClass, listener);
+    }
+
+    protected void unsubscribeFromEvent(Class<? extends SystemEvent> eventClass, SystemEventListener listener) {
+        FacesContext.getCurrentInstance().getApplication().unsubscribeFromEvent(eventClass, listener);
+    }
+}
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/java/jsf2/demo/scrum/web/controller/AuthManager.java b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/java/jsf2/demo/scrum/web/controller/AuthManager.java
new file mode 100644
index 0000000..5aef078
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/java/jsf2/demo/scrum/web/controller/AuthManager.java
@@ -0,0 +1,81 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package jsf2.demo.scrum.web.controller;
+
+import java.security.Principal;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.inject.Named;
+import javax.enterprise.context.RequestScoped;
+import javax.faces.context.FacesContext;
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletRequest;
+
+/**
+ *
+ * @author Eder Magalhaes
+ */
+ at Named("authManager")
+ at RequestScoped
+public class AuthManager {
+    
+    public String logout() {
+       String result="/home?faces-redirect=true";
+       HttpServletRequest request = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest();
+
+       try {
+           request.logout();
+       } catch (ServletException e) {
+           Logger.getLogger (AuthManager.class.getName()).log(Level.SEVERE, null, e);
+           result = "/loginError?faces-redirect=true";
+       }
+       return result;
+    }
+
+    public String getUsername() {
+        Principal principal = FacesContext.getCurrentInstance().getExternalContext().getUserPrincipal();
+        if (principal == null) {
+            return null;
+        }
+        return principal.getName();
+    }
+
+}
\ No newline at end of file
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/java/jsf2/demo/scrum/web/controller/DashboardManager.java b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/java/jsf2/demo/scrum/web/controller/DashboardManager.java
new file mode 100644
index 0000000..2ed73da
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/java/jsf2/demo/scrum/web/controller/DashboardManager.java
@@ -0,0 +1,233 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package jsf2.demo.scrum.web.controller;
+
+import jsf2.demo.scrum.model.entities.Sprint;
+import jsf2.demo.scrum.model.entities.Story;
+import jsf2.demo.scrum.model.entities.Task;
+
+import javax.annotation.PreDestroy;
+import javax.inject.Named;
+import javax.inject.Inject;
+import javax.faces.model.DataModel;
+import javax.faces.model.ListDataModel;
+import java.io.Serializable;
+import java.util.Collections;
+import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.annotation.PostConstruct;
+import javax.faces.view.ViewScoped;
+import javax.persistence.EntityManager;
+import javax.persistence.Query;
+import jsf2.demo.scrum.model.entities.TaskStatus;
+
+
+ at Named("dashboardManager")
+ at ViewScoped
+public class DashboardManager extends AbstractManager implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @Inject
+    private TaskManager taskManager;
+    @Inject
+    private SprintManager sprintManager;
+    @Inject
+    private StoryManager storyManager;
+    @Inject
+    private StoryList storyList;
+
+    private ListDataModel<Task> toDoTasks;
+    private ListDataModel<Task> workingTasks;
+    private ListDataModel<Task> doneTasks;
+
+    @PostConstruct
+    public void init() {
+        List<Task> toDoTasksList = getTasksByStatus(TaskStatus.TODO);
+        toDoTasks = new ListDataModel<Task>(toDoTasksList);
+        
+        List<Task> workingTasksList = getTasksByStatus(TaskStatus.WORKING);
+        workingTasks = new ListDataModel<Task>(workingTasksList);
+        
+        List<Task> doneTasksList = getTasksByStatus(TaskStatus.DONE);
+        doneTasks = new ListDataModel<Task>(doneTasksList);
+    }
+    
+    @PreDestroy
+    public void destroy() {
+        toDoTasks = null;
+        workingTasks = null;
+        doneTasks = null;
+    }
+
+    public Sprint getSprint() {
+        return getSprintManager().getCurrentSprint();
+    }
+
+    public void setSprint(Sprint sprint) {
+        this.getSprintManager().setCurrentSprint(sprint);
+    }
+
+    public DataModel<Story> getStories() {
+        return storyList.getStories();
+    }
+
+    public void setStories(DataModel<Story> stories) {
+        storyList.setStories(stories);
+    }
+    
+    private List<Task> getTasksByStatus(final TaskStatus status) {
+        try {
+            return doInTransaction(new PersistenceAction<List<Task>>() {
+
+                @SuppressWarnings({"unchecked"})
+                public List<Task> execute(EntityManager em) {
+                    Sprint s = storyManager.getSprint();
+                    if (s == null)
+                        return Collections.EMPTY_LIST;
+
+                    Query query = em.createNamedQuery("task.getByStatusAndSprint");
+                    query.setParameter("status", status);
+                    query.setParameter("sprint", s);
+                    
+                    return (List<Task>) query.getResultList();
+                }
+            });
+        } catch (ManagerException ex) {
+            Logger.getLogger(DashboardManager.class.getName()).log(Level.SEVERE, null, ex);
+            return Collections.EMPTY_LIST;
+        }
+    }
+
+    public ListDataModel<Task> getToDoTasks() {
+        /*List<Task> toDoTasksList = new ArrayList<Task>();
+        if (sprintManager.getCurrentSprint() == null) {
+            return new ListDataModel<Task>(toDoTasksList);
+        }
+        for (Story story : storyList.getStoryList()) {
+            toDoTasksList.addAll(story.getTodoTasks());
+        }
+        toDoTasks = new ListDataModel<Task>(toDoTasksList);*/
+        return toDoTasks;
+    }
+
+    public ListDataModel<Task> getWorkingTasks() {
+        /*List<Task> workingTasksList = new ArrayList<Task>();
+        if (sprintManager.getCurrentSprint() == null) {
+            return new ListDataModel<Task>(workingTasksList);
+        }
+        for (Story story : storyList.getStoryList()) {
+            workingTasksList.addAll(story.getWorkingTasks());
+        }
+        workingTasks = new ListDataModel<Task>(workingTasksList);*/
+        return workingTasks;
+    }
+
+    public ListDataModel<Task> getDoneTasks() {
+        /*List<Task> doneTasksList = new ArrayList<Task>();
+        if (sprintManager.getCurrentSprint() == null) {
+            return new ListDataModel<Task>(doneTasksList);
+        }
+        for (Story story : storyList.getStoryList()) {
+            doneTasksList.addAll(story.getDoneTasks());
+        }
+        doneTasks = new ListDataModel<Task>(doneTasksList);*/
+        return doneTasks;
+    }
+
+    private String editTask(Task currentTask) {
+        if (currentTask == null)
+            return "";
+
+        taskManager.setCurrentTask(currentTask);
+        Story currentStory = storyManager.getCurrentStory();
+        if (currentStory != currentTask.getStory()) {
+            storyManager.setCurrentStory(currentTask.getStory());
+        }
+        return "/task/edit";
+    }
+
+    public String editToDoTask() {
+        return editTask(toDoTasks.getRowData());
+    }
+
+    public String editDoneTask() {
+        return editTask(doneTasks.getRowData());
+    }
+
+    public String editWorkingTask() {
+        return editTask(workingTasks.getRowData());
+    }
+
+    public TaskManager getTaskManager() {
+        return taskManager;
+    }
+
+    public void setTaskManager(TaskManager taskManager) {
+        this.taskManager = taskManager;
+    }
+
+    public SprintManager getSprintManager() {
+        return sprintManager;
+    }
+
+    public void setSprintManager(SprintManager sprintManager) {
+        this.sprintManager = sprintManager;
+    }
+
+    public StoryManager getStoryManager() {
+        return storyManager;
+    }
+
+    public void setStoryManager(StoryManager storyManager) {
+        this.storyManager = storyManager;
+    }
+
+    public StoryList getStoryList() {
+        return storyList;
+    }
+
+    public void setStoryList(StoryList storyList) {
+        this.storyList = storyList;
+    }
+
+}
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/java/jsf2/demo/scrum/web/controller/ManagerException.java b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/java/jsf2/demo/scrum/web/controller/ManagerException.java
new file mode 100644
index 0000000..86fba29
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/java/jsf2/demo/scrum/web/controller/ManagerException.java
@@ -0,0 +1,58 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package jsf2.demo.scrum.web.controller;
+
+/**
+ *
+ * @author Dr. Spock (spock at dev.java.net)
+ */
+public class ManagerException extends Exception {
+
+    private static final long serialVersionUID = 1L;
+
+    public ManagerException(Throwable cause) {
+        super(cause);
+    }
+
+    public ManagerException(String message, Throwable cause) {
+        super(message, cause);
+    }
+}
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/java/jsf2/demo/scrum/web/controller/ProjectList.java b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/java/jsf2/demo/scrum/web/controller/ProjectList.java
new file mode 100644
index 0000000..400775c
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/java/jsf2/demo/scrum/web/controller/ProjectList.java
@@ -0,0 +1,143 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package jsf2.demo.scrum.web.controller;
+
+import java.io.Serializable;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.annotation.PostConstruct;
+import javax.faces.view.ViewScoped;
+import javax.inject.Named;
+import javax.inject.Inject;
+import javax.faces.model.DataModel;
+import javax.faces.model.ListDataModel;
+import javax.faces.model.SelectItem;
+import javax.persistence.EntityManager;
+import javax.persistence.Query;
+import jsf2.demo.scrum.model.entities.Project;
+
+/**
+ *
+ * @author Eder Magalhaes
+ */
+ at Named("projectList")
+ at ViewScoped
+public class ProjectList extends AbstractManager implements Serializable{
+
+    @Inject
+    private ProjectManager projectManager;
+
+    private DataModel<Project> projects;
+    private List<SelectItem> projectItems;
+    private List<Project> projectList;
+
+    @PostConstruct
+    public void init() {
+        try {
+            setProjectList(doInTransaction(new PersistenceAction<List<Project>>() {
+
+                @SuppressWarnings({"unchecked"})
+                public List<Project> execute(EntityManager em) {
+                    Query query = em.createNamedQuery("project.getAll");
+                    return (List<Project>) query.getResultList();
+                }
+            }));
+        } catch (ManagerException ex) {
+            Logger.getLogger(ProjectList.class.getName()).log(Level.SEVERE, null, ex);
+        }
+        projectItems = new LinkedList<SelectItem>();
+        projectItems.add(new SelectItem(new Project(), "-- Select one project --"));
+        if (getProjectList() != null) {
+            projects = new ListDataModel<Project>(getProjectList());
+            for (Project p : getProjectList()) {
+                projectItems.add(new SelectItem(p, p.getName()));
+            }
+        }
+    }
+    
+    public ProjectManager getProjectManager() {
+        return projectManager;
+    }
+
+    public void setProjectManager(ProjectManager projectManager) {
+        this.projectManager = projectManager;
+    }
+
+    public DataModel<Project> getProjects() {
+        return projects;
+    }
+
+    public void setProjects(DataModel<Project> projects) {
+        this.projects = projects;
+    }
+
+    public List<SelectItem> getProjectItems() {
+        return projectItems;
+    }
+
+    public void setProjectItems(List<SelectItem> projectItems) {
+        this.projectItems = projectItems;
+    }
+
+    public List<Project> getProjectList() {
+        return projectList;
+    }
+
+    public void setProjectList(List<Project> projectList) {
+        this.projectList = projectList;
+    }
+
+    public String edit() {
+        return projectManager.edit(projects.getRowData());
+    }
+
+    public String remove() {
+        String result = projectManager.remove(projects.getRowData());
+        init();
+        return result;
+    }
+
+    public String showSprints() {
+        return projectManager.showSprints(projects.getRowData());
+    }
+}
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/java/jsf2/demo/scrum/web/controller/ProjectManager.java b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/java/jsf2/demo/scrum/web/controller/ProjectManager.java
new file mode 100644
index 0000000..e3f86b0
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/java/jsf2/demo/scrum/web/controller/ProjectManager.java
@@ -0,0 +1,212 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package jsf2.demo.scrum.web.controller;
+
+import jsf2.demo.scrum.model.entities.Project;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
+import javax.faces.application.FacesMessage;
+import javax.inject.Named;
+import javax.enterprise.context.SessionScoped;
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.validator.ValidatorException;
+import javax.persistence.EntityManager;
+import javax.persistence.Query;
+import java.io.Serializable;
+import java.util.Map;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.faces.context.ExternalContext;
+
+/**
+ * @author Dr. Spock (spock at dev.java.net)
+ */
+ at Named("projectManager")
+ at SessionScoped
+public class ProjectManager extends AbstractManager implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+    private Project currentProject;
+
+    @PostConstruct
+    public void construct() {
+        Project project = new Project();
+        setCurrentProject(project);
+    }
+
+    @PreDestroy
+    public void destroy() {
+        currentProject = null;
+        FacesContext context = FacesContext.getCurrentInstance();
+        if (null != context) {
+            ExternalContext extContext = context.getExternalContext();
+            if (null != extContext) {
+                Map sessionMap = extContext.getSessionMap();
+                if (null != sessionMap) {
+                    sessionMap.remove("projectManager");
+                }
+            }
+        }
+    }
+
+    public String create() {
+        Project project = new Project();
+        setCurrentProject(project);
+        return "create";
+    }
+
+    public String save() {
+        if (getCurrentProject() != null) {
+            try {
+                Project merged = doInTransaction(new PersistenceAction<Project>() {
+
+                    public Project execute(EntityManager em) {
+                        Project toSave = getCurrentProject();
+                        if (toSave.isNew()) {
+                            em.persist(toSave);
+                        } else if (!em.contains(currentProject)) {
+                            return em.merge(toSave);
+                        }
+                        return toSave;
+                    }
+                });
+                if (!currentProject.equals(merged)) {
+                    setCurrentProject(merged);
+                }
+            } catch (Exception e) {
+                getLogger(getClass()).log(Level.SEVERE, "Error on try to save Project: " + getCurrentProject(), e);
+                addMessage("Error on try to save Project", FacesMessage.SEVERITY_ERROR);
+                return null;
+            }
+        }
+        return "show";
+    }
+
+    public String edit(Project project) {
+        setCurrentProject(project);
+        // Using implicity navigation, this request come from /projects/show.xhtml and directs to /project/edit.xhtml
+        return "edit";
+    }
+
+    public String remove(final Project project) {
+        if (project != null) {
+            try {
+                doInTransaction(new PersistenceActionWithoutResult() {
+
+                    public void execute(EntityManager em) {
+                        Query query = em.createNamedQuery("task.remove.ByProject");
+                        query.setParameter("project", project);
+                        query.executeUpdate();
+
+                        query = em.createNamedQuery("story.remove.ByProject");
+                        query.setParameter("project", project);
+                        query.executeUpdate();
+
+                        query = em.createNamedQuery("sprint.remove.ByProject");
+                        query.setParameter("project", project);
+                        query.executeUpdate();
+                        
+                        Object toRemove = em.find(Project.class, project.getId());
+                        assert(null != toRemove);
+
+                        em.remove(toRemove);
+                    }
+                });
+            } catch (Exception e) {
+                getLogger(getClass()).log(Level.SEVERE, "Error on try to remove Project: " + getCurrentProject(), e);
+                addMessage("Error on try to remove Project", FacesMessage.SEVERITY_ERROR);
+                return null;
+            }
+        }
+        // Using implicity navigation, this request come from /projects/show.xhtml and directs to /project/show.xhtml
+        // could be null instead
+        return "show";
+    }
+
+    public void checkUniqueProjectName(FacesContext context, UIComponent component, Object newValue) {
+        final String newName = (String) newValue;
+        try {
+            Long count = doInTransaction(new PersistenceAction<Long>() {
+
+                public Long execute(EntityManager em) {
+                    Query query = em.createNamedQuery((getCurrentProject().isNew()) ? "project.new.countByName" : "project.countByName");
+                    query.setParameter("name", newName);
+                    if (!currentProject.isNew()) {
+                        query.setParameter("currentProject", getCurrentProject());
+                    }
+                    return (Long) query.getSingleResult();
+                }
+            });
+            if (count != null && count > 0) {
+                throw new ValidatorException(getFacesMessageForKey("project.form.label.name.unique"));
+            }
+        } catch (ManagerException ex) {
+            Logger.getLogger(ProjectManager.class.getName()).log(Level.SEVERE, null, ex);
+        }
+    }
+
+    public String cancelEdit() {
+        // Implicity navigation, this request come from /projects/edit.xhtml and directs to /project/show.xhtml
+        return "show";
+    }
+
+    public String showSprints(Project project) {
+        setCurrentProject(project);
+        // Implicity navigation, this request come from /projects/show.xhtml and directs to /project/showSprints.xhtml
+        return "showSprints";
+    }
+
+    public Project getCurrentProject() {
+        return currentProject;
+    }
+
+    public void setCurrentProject(Project currentProject) {
+        this.currentProject = currentProject;
+    }
+
+    public String viewSprints() {
+        return "/sprint/show";
+    }
+
+
+}
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/java/jsf2/demo/scrum/web/controller/SkinManager.java b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/java/jsf2/demo/scrum/web/controller/SkinManager.java
new file mode 100644
index 0000000..7aa67cc
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/java/jsf2/demo/scrum/web/controller/SkinManager.java
@@ -0,0 +1,101 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package jsf2.demo.scrum.web.controller;
+
+import java.io.Serializable;
+import java.util.Map;
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
+import javax.inject.Named;
+import javax.enterprise.context.SessionScoped;
+import javax.inject.Inject;
+import javax.faces.context.ExternalContext;
+import javax.faces.context.FacesContext;
+
+/**
+ *
+ * @author Dr. Spock (spock at dev.java.net)
+ */
+ at Named("skinManager")
+ at SessionScoped
+public class SkinManager extends AbstractManager implements Serializable {
+
+    private String selectedSkin;
+    @Inject
+    private SkinValuesManager skinValuesManager;
+    private static final long serialVersionUID = 2936693632616580209L;
+
+    @PostConstruct
+    public void construct() {
+        selectedSkin = skinValuesManager.getDefaultSkinCss();
+    }
+
+    @PreDestroy
+    public void destroy() {
+        FacesContext context = FacesContext.getCurrentInstance();
+        if (null != context) {
+            ExternalContext extContext = context.getExternalContext();
+            if (null != extContext) {
+                Map sessionMap = extContext.getSessionMap();
+                if (null != sessionMap) {
+                    sessionMap.remove("skinManager");
+                }
+            }
+        }
+    }
+
+    public String getSelectedSkin() {
+        return selectedSkin;
+    }
+
+    public void setSelectedSkin(String selectedSkin) {
+        this.selectedSkin = selectedSkin;
+    }
+
+    public SkinValuesManager getSkinValuesManager() {
+        return skinValuesManager;
+    }
+
+    public void setSkinValuesManager(SkinValuesManager skinValuesManager) {
+        this.skinValuesManager = skinValuesManager;
+    }
+    
+}
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/java/jsf2/demo/scrum/web/controller/SkinUrlManager.java b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/java/jsf2/demo/scrum/web/controller/SkinUrlManager.java
new file mode 100644
index 0000000..0934747
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/java/jsf2/demo/scrum/web/controller/SkinUrlManager.java
@@ -0,0 +1,95 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package jsf2.demo.scrum.web.controller;
+
+import java.io.Serializable;
+import javax.inject.Named;
+import javax.inject.Inject;
+import javax.enterprise.context.RequestScoped;
+
+/**
+ *
+ * @author eder
+ */
+ at Named("skinUrlManager")
+ at RequestScoped
+public class SkinUrlManager extends AbstractManager implements Serializable {
+
+    private String skin;
+
+    @Inject
+    private SkinManager skinManager;
+    @Inject
+    private SkinValuesManager skinValuesManager;
+    private static final long serialVersionUID = 7770408832569218016L;
+
+    public String getSkin() {
+        return skin;
+    }
+
+    public void setSkin(String skin) {
+        this.skin = skin;
+    }
+
+    public void update() {
+        if (skin == null || "".equals(skin))
+            return;
+        String skinCss = skinValuesManager.getSkinCss(skin.toLowerCase());
+        skinManager.setSelectedSkin(skinCss);
+    }
+
+    public SkinManager getSkinManager() {
+        return skinManager;
+    }
+
+    public void setSkinManager(SkinManager skinManager) {
+        this.skinManager = skinManager;
+    }
+
+    public SkinValuesManager getSkinValuesManager() {
+        return skinValuesManager;
+    }
+
+    public void setSkinValuesManager(SkinValuesManager skinValuesManager) {
+        this.skinValuesManager = skinValuesManager;
+    }
+
+}
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/java/jsf2/demo/scrum/web/controller/SkinValuesManager.java b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/java/jsf2/demo/scrum/web/controller/SkinValuesManager.java
new file mode 100644
index 0000000..58c7ea4
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/java/jsf2/demo/scrum/web/controller/SkinValuesManager.java
@@ -0,0 +1,115 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package jsf2.demo.scrum.web.controller;
+
+import java.io.Serializable;
+import javax.annotation.PostConstruct;
+
+import javax.inject.Named;
+import javax.enterprise.context.ApplicationScoped;
+import java.util.Map;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.ArrayList;
+import javax.annotation.PreDestroy;
+import javax.faces.context.ExternalContext;
+import javax.faces.context.FacesContext;
+
+
+/**
+ *
+ * @author edermag
+ */
+ at Named("skinValuesManager")
+ at ApplicationScoped
+public class SkinValuesManager implements Serializable {
+
+    private Map<String, String> values;
+
+    private String defaultSkin = "blue";
+    private static final long serialVersionUID = 2238251086172648511L;
+
+    @PostConstruct
+    public void construct() {
+        values = new LinkedHashMap<String, String>();
+        values.put("yellow", "appYellowSkin.css");
+        values.put("orange", "appOrangeSkin.css");
+        values.put("red", "appRedSkin.css");
+        values.put(defaultSkin, "appBlueSkin.css");
+    }
+
+    @PreDestroy
+    public void destroy() {
+        if (null != values) {
+            values.clear();
+            values = null;
+        }
+        FacesContext context = FacesContext.getCurrentInstance();
+        if (null != context) {
+            ExternalContext extContext = context.getExternalContext();
+            if (null != extContext) {
+                Map sessionMap = extContext.getSessionMap();
+                if (null != sessionMap) {
+                    sessionMap.remove("skinValuesManager");
+                }
+            }
+        }
+    }
+    
+    protected String getSkinCss(String skin) {
+        if (!values.containsKey(skin))
+            return getDefaultSkinCss();
+        return values.get(skin);
+    }
+
+    protected String getDefaultSkinCss() {
+        return values.get(defaultSkin);
+    }
+
+    public List<String> getNames() {
+        return new ArrayList<String>(values == null ? null : values.keySet());
+    }
+
+    public int getSize() {
+        return values.keySet().size();
+    }
+
+}
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/java/jsf2/demo/scrum/web/controller/SprintList.java b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/java/jsf2/demo/scrum/web/controller/SprintList.java
new file mode 100644
index 0000000..5dd3ad4
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/java/jsf2/demo/scrum/web/controller/SprintList.java
@@ -0,0 +1,139 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package jsf2.demo.scrum.web.controller;
+
+import java.io.Serializable;
+import java.util.Collections;
+import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.annotation.PostConstruct;
+import javax.faces.view.ViewScoped;
+import javax.inject.Named;
+import javax.inject.Inject;
+import javax.faces.model.DataModel;
+import javax.faces.model.ListDataModel;
+import javax.persistence.EntityManager;
+import javax.persistence.Query;
+import jsf2.demo.scrum.model.entities.Project;
+import jsf2.demo.scrum.model.entities.Sprint;
+
+/**
+ *
+ * @author Eder Magalhaes
+ */
+ at Named("sprintList")
+ at ViewScoped
+public class SprintList extends AbstractManager implements Serializable {
+    
+    @Inject
+    private SprintManager sprintManager;
+    
+    private DataModel<Sprint> sprints;
+    
+    private List<Sprint> sprintList;
+    
+    @PostConstruct
+    public void init() {
+        try {
+            setSprintList(doInTransaction(new PersistenceAction<List<Sprint>>() {
+
+                @SuppressWarnings({"unchecked"}) 
+                public List<Sprint> execute(EntityManager em) {
+                    Project p = sprintManager.getProject();
+                    if (p == null)
+                        return Collections.EMPTY_LIST;
+                    
+                    Query query = em.createNamedQuery("sprint.getByProject");
+                    query.setParameter("project", p);
+                    return (List<Sprint>) query.getResultList();
+                }
+            }));
+        } catch (ManagerException ex) {
+            Logger.getLogger(SprintList.class.getName()).log(Level.SEVERE, null, ex);
+        }
+        
+    }
+    
+    public DataModel<Sprint> getSprints() {
+        this.sprints = new ListDataModel<Sprint>(sprintList);
+        return this.sprints;
+    }
+
+    public void setSprints(DataModel<Sprint> sprints) {
+        this.sprints = sprints;
+    }
+
+    public void setSprintList(List<Sprint> sprintList) {
+        this.sprintList = sprintList;
+    }
+
+    public List<Sprint> getSprintList() {
+        return sprintList;
+    }
+    
+    public SprintManager getSprintManager() {
+        return sprintManager;
+    }
+
+    public void setSprintManager(SprintManager sprintManager) {
+        this.sprintManager = sprintManager;
+    }
+    
+    public String edit() {
+        return sprintManager.edit(sprints.getRowData());
+    }
+    
+    public String remove() {
+        String result = sprintManager.remove(sprints.getRowData());
+        init();
+        return result;
+    }
+    
+    public String showStories() {
+        return sprintManager.showStories(sprints.getRowData());
+    }
+
+    public String showDashboard() {
+        return sprintManager.showDashboard(sprints.getRowData());
+    }
+    
+}
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/java/jsf2/demo/scrum/web/controller/SprintManager.java b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/java/jsf2/demo/scrum/web/controller/SprintManager.java
new file mode 100644
index 0000000..b702c71
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/java/jsf2/demo/scrum/web/controller/SprintManager.java
@@ -0,0 +1,269 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package jsf2.demo.scrum.web.controller;
+
+import jsf2.demo.scrum.model.entities.Project;
+import jsf2.demo.scrum.model.entities.Sprint;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
+import javax.faces.application.FacesMessage;
+import javax.inject.Named;
+import javax.inject.Inject;
+import javax.enterprise.context.SessionScoped;
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.validator.ValidatorException;
+import javax.persistence.EntityManager;
+import javax.persistence.Query;
+import java.io.Serializable;
+import java.util.Map;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.faces.context.ExternalContext;
+
+/**
+ * @author Dr. Spock (spock at dev.java.net)
+ */
+ at Named("sprintManager")
+ at SessionScoped
+public class SprintManager extends AbstractManager implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+    private Sprint currentSprint;
+    @Inject
+    private ProjectManager projectManager;
+    private Project currentProject;
+
+    @PostConstruct
+    public void construct() {
+        init();
+    }
+
+    @PreDestroy
+    public void destroy() {
+        projectManager = null;
+        currentProject = null;
+        FacesContext context = FacesContext.getCurrentInstance();
+        if (null != context) {
+            ExternalContext extContext = context.getExternalContext();
+            if (null != extContext) {
+                Map sessionMap = extContext.getSessionMap();
+                if (null != sessionMap) {
+                    sessionMap.remove("sprintManager");
+                }
+            }
+        }
+
+    }
+
+    public void init() {
+        Sprint sprint = new Sprint();
+        Project pmCurrentProject = getProjectManager().getCurrentProject();
+        sprint.setProject(pmCurrentProject);
+        setCurrentSprint(sprint);
+    }
+
+    public String create() {
+        Sprint sprint = new Sprint();
+        sprint.setProject(getProjectManager().getCurrentProject());
+        setCurrentSprint(sprint);
+        return "create";
+    }
+
+    public String save() {
+        if (currentSprint != null) {
+            try {
+                Sprint merged = doInTransaction(new PersistenceAction<Sprint>() {
+
+                    public Sprint execute(EntityManager em) {
+                        if (currentSprint.isNew()) {
+                            em.persist(currentSprint);
+                        } else if (!em.contains(currentSprint)) {
+                            return em.merge(currentSprint);
+                        }
+                        return currentSprint;
+                    }
+                });
+                if (!currentSprint.equals(merged)) {
+                    setCurrentSprint(merged);
+                }
+                getProjectManager().getCurrentProject().addSprint(merged);
+            } catch (Exception e) {
+                getLogger(getClass()).log(Level.SEVERE, "Error on try to save Sprint: " + currentSprint, e);
+                addMessage("Error on try to save Sprint", FacesMessage.SEVERITY_ERROR);
+                return null;
+            }
+        }
+        return "show";
+    }
+    
+    
+    public String edit(Sprint sprint) {
+        setCurrentSprint(sprint);
+        return "edit";
+    }
+
+    public String remove(final Sprint sprint) {
+        if (sprint != null) {
+            try {
+                doInTransaction(new PersistenceActionWithoutResult() {
+
+                    public void execute(EntityManager em) {
+                        Query query = em.createNamedQuery("task.remove.ByProject");
+                        query.setParameter("project", sprint.getProject());
+                        query.executeUpdate();
+
+                        query = em.createNamedQuery("story.remove.ByProject");
+                        query.setParameter("project", sprint.getProject());
+                        query.executeUpdate();
+
+                        em.remove(em.find(Sprint.class, sprint.getId()));
+                    }
+                });
+                getProjectManager().getCurrentProject().removeSpring(sprint);
+            } catch (Exception e) {
+                getLogger(getClass()).log(Level.SEVERE, "Error on try to remove Sprint: " + currentSprint, e);
+                addMessage("Error on try to remove Sprint", FacesMessage.SEVERITY_ERROR);
+                return null;
+            }
+        }
+        return "show";
+    }
+
+    /*
+    * This method can be pointed to by a validator methodExpression, such as:
+    *
+    * <h:inputText id="itName" value="#{sprintManager.currentSprint.name}" required="true"
+    *   requiredMessage="#{i18n['sprint.form.label.name.required']}" maxLength="30" size="30"
+    *   validator="#{sprintManager.checkUniqueSprintName}" />
+    */
+
+    public void checkUniqueSprintNameFacesValidatorMethod(FacesContext context, UIComponent component, Object newValue) {
+
+        final String newName = (String) newValue;
+        String message = checkUniqueSprintNameApplicationValidatorMethod(newName);
+        if (null != message) {
+            throw new ValidatorException(getFacesMessageForKey("sprint.form.label.name.unique"));
+        }
+    }
+
+
+    /*
+    * This method is called by the JSR-303 SprintNameUniquenessConstraintValidator.
+    * If it returns non-null, the result must be interpreted as the localized
+    * validation message.
+    *
+    */
+
+    public String checkUniqueSprintNameApplicationValidatorMethod(String newValue) {
+        String message = null;
+
+        final String newName = newValue;
+        try {
+            Long count = doInTransaction(new PersistenceAction<Long>() {
+
+                public Long execute(EntityManager em) {
+                    Query query = em.createNamedQuery((currentSprint.isNew()) ? "sprint.new.countByNameAndProject" : "sprint.countByNameAndProject");
+                    query.setParameter("name", newName);
+                    query.setParameter("project", getProjectManager().getCurrentProject());
+                    if (!currentSprint.isNew()) {
+                        query.setParameter("currentSprint", currentSprint);
+                    }
+                    return (Long) query.getSingleResult();
+                }
+            });
+            if (count != null && count > 0) {
+                message = getFacesMessageForKey("sprint.form.label.name.unique").getSummary();
+            }
+        } catch (ManagerException ex) {
+            Logger.getLogger(SprintManager.class.getName()).log(Level.SEVERE, null, ex);
+        }
+
+        return message;
+    }
+
+    public String cancelEdit() {
+        return "show";
+    }
+
+    public String showStories(Sprint sprint) {
+        setCurrentSprint(sprint);
+        return "showStories";
+    }
+
+    public String showDashboard(Sprint sprint) {
+        setCurrentSprint(sprint);
+        return "showDashboard";
+    }
+
+    public Sprint getCurrentSprint() {
+        return currentSprint;
+    }
+
+    public void setCurrentSprint(Sprint currentSprint) {
+        this.currentSprint = currentSprint;
+    }
+
+    public ProjectManager getProjectManager() {
+        return projectManager;
+    }
+
+    public void setProjectManager(ProjectManager projectManager) {
+        this.projectManager = projectManager;
+    }
+
+    public Project getProject() {
+        Project pmCurrentProject = projectManager.getCurrentProject();
+        // Verify if the currentProject is out of date
+        // If there is a new CurrentProject we need to update sprintList and set currentSprint to null and tell user he/she needs to select a Sprint
+        if (pmCurrentProject != currentProject) {
+            this.setCurrentSprint(null);
+            this.currentProject = pmCurrentProject;
+        }
+        return currentProject;
+    }
+
+    public void setProject(Project project) {
+        projectManager.setCurrentProject(project);
+    }
+
+}
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/java/jsf2/demo/scrum/web/controller/StoryList.java b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/java/jsf2/demo/scrum/web/controller/StoryList.java
new file mode 100644
index 0000000..5035b8d
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/java/jsf2/demo/scrum/web/controller/StoryList.java
@@ -0,0 +1,135 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package jsf2.demo.scrum.web.controller;
+
+import java.io.Serializable;
+import java.util.Collections;
+import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.annotation.PostConstruct;
+import javax.faces.view.ViewScoped;
+import javax.inject.Named;
+import javax.inject.Inject;
+import javax.faces.model.DataModel;
+import javax.faces.model.ListDataModel;
+import javax.persistence.EntityManager;
+import javax.persistence.Query;
+import jsf2.demo.scrum.model.entities.Sprint;
+import jsf2.demo.scrum.model.entities.Story;
+
+/**
+ *
+ * @author Eder Magalhaes
+ */
+ at Named("storyList")
+ at ViewScoped
+public class StoryList extends AbstractManager implements Serializable{
+
+    @Inject
+    private StoryManager storyManager;
+
+    private DataModel<Story> stories;
+    private List<Story> storyList;
+
+    @PostConstruct
+    public void init() {
+        try {
+            setStoryList(doInTransaction(new PersistenceAction<List<Story>>() {
+
+                @SuppressWarnings({"unchecked"})
+                public List<Story> execute(EntityManager em) {
+                    Sprint s = storyManager.getSprint();
+                    if (s == null)
+                        return Collections.EMPTY_LIST;
+
+                    Query query = em.createNamedQuery("story.getBySprint");
+                    query.setParameter("sprint", s);
+                    return (List<Story>) query.getResultList();
+                }
+            }));
+        } catch (ManagerException ex) {
+            Logger.getLogger(StoryList.class.getName()).log(Level.SEVERE, null, ex);
+        }
+
+    }
+
+    public StoryManager getStoryManager() {
+        return storyManager;
+    }
+
+    public void setStoryManager(StoryManager storyManager) {
+        this.storyManager = storyManager;
+    }
+
+    public DataModel<Story> getStories() {
+        this.stories = new ListDataModel<Story>(storyList);
+
+        return stories;
+    }
+
+    public void setStories(DataModel<Story> stories) {
+        this.stories = stories;
+    }
+
+
+    public List<Story> getStoryList() {
+        return this.storyList;
+    }
+
+    public void setStoryList(List<Story> storyList) {
+        this.storyList = storyList;
+    }
+
+    public String edit() {
+        return storyManager.edit(stories.getRowData());
+    }
+
+    public String remove() {
+        String result = storyManager.remove(stories.getRowData());
+        init();
+        return result;
+    }
+
+    public String showTasks() {
+        return storyManager.showTasks(stories.getRowData());
+    }
+}
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/java/jsf2/demo/scrum/web/controller/StoryManager.java b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/java/jsf2/demo/scrum/web/controller/StoryManager.java
new file mode 100644
index 0000000..3ab1d59
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/java/jsf2/demo/scrum/web/controller/StoryManager.java
@@ -0,0 +1,226 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package jsf2.demo.scrum.web.controller;
+
+import jsf2.demo.scrum.model.entities.Sprint;
+import jsf2.demo.scrum.model.entities.Story;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
+import javax.faces.application.FacesMessage;
+import javax.inject.Named;
+import javax.inject.Inject;
+import javax.enterprise.context.SessionScoped;
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.validator.ValidatorException;
+import javax.persistence.EntityManager;
+import javax.persistence.Query;
+import java.io.Serializable;
+import java.util.Map;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.enterprise.context.Conversation;
+import javax.faces.context.ExternalContext;
+
+
+ at Named("storyManager")
+ at SessionScoped
+public class StoryManager extends AbstractManager implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+    @Inject
+    private SprintManager sprintManager;
+    private Story currentStory;
+
+    @PostConstruct
+    public void construct() {
+        init();
+    }
+
+    @PreDestroy
+    public void destroy() {
+        sprintManager = null;
+        currentStory = null;
+        
+        FacesContext context = FacesContext.getCurrentInstance();
+        if (null != context) {
+            ExternalContext extContext = context.getExternalContext();
+            if (null != extContext) {
+                Map sessionMap = extContext.getSessionMap();
+                if (null != sessionMap) {
+                    sessionMap.remove("storyManager");
+                }
+            }
+        }
+
+    }
+
+    public void init() {
+        Sprint currentSprint = sprintManager.getCurrentSprint();
+
+        if (currentSprint != null) {
+            Story story = new Story();
+            story.setSprint(currentSprint);
+            setCurrentStory(story);
+        }
+    }
+
+    public String create() {
+        Story story = new Story();
+        story.setSprint(sprintManager.getCurrentSprint());
+        setCurrentStory(story);
+        return "create";
+    }
+
+    public String save() {
+        if (currentStory != null) {
+            try {
+                Story merged = doInTransaction(new PersistenceAction<Story>() {
+
+                    public Story execute(EntityManager em) {
+                        if (currentStory.isNew()) {
+                            em.persist(currentStory);
+                        } else if (!em.contains(currentStory)) {
+                            return em.merge(currentStory);
+                        }
+                        return currentStory;
+                    }
+                });
+                if (!currentStory.equals(merged)) {
+                    setCurrentStory(merged);
+                }
+                sprintManager.getCurrentSprint().addStory(merged);
+            } catch (Exception e) {
+                getLogger(getClass()).log(Level.SEVERE, "Error on try to save Story: " + currentStory, e);
+                addMessage("Error on try to save Story", FacesMessage.SEVERITY_ERROR);
+                return null;
+            }
+        }
+        return "show";
+    }
+
+    public String edit(Story story) {
+        setCurrentStory(story);
+        return "edit";
+    }
+
+    public String remove(final Story story) {
+        if (story != null) {
+            try {
+                doInTransaction(new PersistenceActionWithoutResult() {
+
+                    public void execute(EntityManager em) {
+                        Query query = em.createNamedQuery("task.remove.ByProject");
+                        query.setParameter("project", story.getSprint().getProject());
+                        query.executeUpdate();
+
+                        em.remove(em.find(Story.class, story.getId()));
+                    }
+                });
+                sprintManager.getCurrentSprint().removeStory(story);
+            } catch (Exception e) {
+                getLogger(getClass()).log(Level.SEVERE, "Error on try to remove Story: " + currentStory, e);
+                addMessage("Error on try to remove Story", FacesMessage.SEVERITY_ERROR);
+                return null;
+            }
+        }
+        return "show";
+    }
+
+    public void checkUniqueStoryName(FacesContext context, UIComponent component, Object newValue) {
+        final String newName = (String) newValue;
+        try {
+            Long count = doInTransaction(new PersistenceAction<Long>() {
+
+                public Long execute(EntityManager em) {
+                    Query query = em.createNamedQuery((currentStory.isNew()) ? "story.new.countByNameAndSprint" : "story.countByNameAndSprint");
+                    query.setParameter("name", newName);
+                    query.setParameter("sprint", sprintManager.getCurrentSprint());
+                    if (!currentStory.isNew()) {
+                        query.setParameter("currentStory", currentStory);
+                    }
+                    return (Long) query.getSingleResult();
+                }
+            });
+            if (count != null && count > 0) {
+                throw new ValidatorException(getFacesMessageForKey("story.form.label.name.unique"));
+            }
+        } catch (ManagerException ex) {
+            Logger.getLogger(StoryManager.class.getName()).log(Level.SEVERE, null, ex);
+        }
+    }
+
+    public String cancelEdit() {
+        return "show";
+    }
+    
+    public String showTasks(Story story) {
+        setCurrentStory(story);
+        return "showTasks";
+    }
+
+    public Story getCurrentStory() {
+        return currentStory;
+    }
+
+    public void setCurrentStory(Story currentStory) {
+        this.currentStory = currentStory;
+    }
+
+    public Sprint getSprint() {
+        return sprintManager.getCurrentSprint();
+    }
+
+    public void setSprint(Sprint sprint) {
+        sprintManager.setCurrentSprint(sprint);
+    }
+
+    public SprintManager getSprintManager() {
+        return sprintManager;
+    }
+
+    public void setSprintManager(SprintManager sprintManager) {
+        this.sprintManager = sprintManager;
+    }
+
+
+}
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/java/jsf2/demo/scrum/web/controller/TaskList.java b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/java/jsf2/demo/scrum/web/controller/TaskList.java
new file mode 100644
index 0000000..b4a0a83
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/java/jsf2/demo/scrum/web/controller/TaskList.java
@@ -0,0 +1,130 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package jsf2.demo.scrum.web.controller;
+
+import java.io.Serializable;
+import java.util.Collections;
+import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.annotation.PostConstruct;
+import javax.faces.view.ViewScoped;
+import javax.inject.Named;
+import javax.inject.Inject;
+import javax.faces.model.DataModel;
+import javax.faces.model.ListDataModel;
+import javax.persistence.EntityManager;
+import javax.persistence.Query;
+import jsf2.demo.scrum.model.entities.Story;
+import jsf2.demo.scrum.model.entities.Task;
+
+/**
+ *
+ * @author Eder Magalhaes
+ */
+ at Named("taskList")
+ at ViewScoped
+public class TaskList extends AbstractManager implements Serializable {
+
+    @Inject
+    private TaskManager taskManager;
+    
+    private DataModel<Task> tasks;
+    private List<Task> taskList;
+    
+    @PostConstruct
+    public void init() {
+        try {
+            setTaskList(doInTransaction(new PersistenceAction <List<Task>>() {
+
+                @SuppressWarnings({"unchecked"})
+                public List<Task> execute(EntityManager em) {
+                    Story s = taskManager.getStory();
+                    if (s == null)
+                        return Collections.EMPTY_LIST;
+
+                    Query query = em.createNamedQuery("task.getByStory");
+                    query.setParameter("story", s);
+                    return (List<Task>) query.getResultList();
+                }
+            }));
+        } catch (ManagerException ex) {
+            Logger.getLogger(TaskList.class.getName()).log(Level.SEVERE, null, ex);
+        }
+    }
+    
+    public String edit() {
+        return taskManager.edit(tasks.getRowData());
+    }
+    
+    public String remove() {
+        String result = taskManager.remove(tasks.getRowData());
+        init();
+        return result;
+    }
+    
+    public void setTaskManager(TaskManager taskManager) {
+        this.taskManager = taskManager;
+    }
+
+    public TaskManager getTaskManager() {
+        return taskManager;
+    }
+
+    public void setTasks(DataModel<Task> tasks) {
+        this.tasks = tasks;
+    }
+
+    public DataModel<Task> getTasks() {
+        this.tasks = new ListDataModel<Task>(taskList);
+        return tasks;
+    }
+    
+    public List<Task> getTaskList() {
+        return taskList;
+    }
+
+    public void setTaskList(List<Task> taskList) {
+        this.taskList = taskList;
+    }
+
+    
+}
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/java/jsf2/demo/scrum/web/controller/TaskManager.java b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/java/jsf2/demo/scrum/web/controller/TaskManager.java
new file mode 100644
index 0000000..4df5e63
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/java/jsf2/demo/scrum/web/controller/TaskManager.java
@@ -0,0 +1,212 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package jsf2.demo.scrum.web.controller;
+
+import jsf2.demo.scrum.model.entities.Story;
+import jsf2.demo.scrum.model.entities.Task;
+
+import javax.annotation.PostConstruct;
+import javax.faces.application.FacesMessage;
+import javax.inject.Named;
+import javax.inject.Inject;
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.validator.ValidatorException;
+import javax.persistence.EntityManager;
+import javax.persistence.Query;
+import java.io.Serializable;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.annotation.PreDestroy;
+import javax.enterprise.context.SessionScoped;
+
+/**
+ * @author Dr. Spock (spock at dev.java.net)
+ */
+ at Named("taskManager")
+ at SessionScoped
+public class TaskManager extends AbstractManager implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+    private Task currentTask;
+    
+    @Inject
+    private StoryManager storyManager;
+
+    @PostConstruct
+    public void construct() {
+        getLogger(getClass()).log(Level.INFO, "new intance of taskManager");
+        init();
+    }
+
+    public void init() {
+        Task task = new Task();
+        Story currentStory = storyManager.getCurrentStory();
+        task.setStory(currentStory);
+        setCurrentTask(task);
+    }
+
+    public String create() {
+        Task task = new Task();
+        task.setStory(storyManager.getCurrentStory());
+        setCurrentTask(task);
+        return "create";
+    }
+
+    public String save() {
+        if (currentTask != null) {
+            try {
+                Task merged = doInTransaction(new PersistenceAction<Task>() {
+
+                    public Task execute(EntityManager em) {
+                        if (currentTask.isNew()) {
+                            em.persist(currentTask);
+                        } else if (!em.contains(currentTask)) {
+                            return em.merge(currentTask);
+                        }
+                        return currentTask;
+                    }
+                });
+                if (!currentTask.equals(merged)) {
+                    setCurrentTask(merged);
+                }
+                storyManager.getCurrentStory().addTask(merged);
+            } catch (Exception e) {
+                getLogger(getClass()).log(Level.SEVERE, "Error on try to save Task: " + currentTask, e);
+                addMessage("Error on try to save Task", FacesMessage.SEVERITY_ERROR);
+                return null;
+            }
+        }
+        return "show";
+    }
+
+    public String edit(Task task) {
+        setCurrentTask(task);
+        return "edit";
+    }
+
+    public String remove(final Task task) {
+        if (task != null) {
+            try {
+                doInTransaction(new PersistenceActionWithoutResult() {
+
+                    public void execute(EntityManager em) {
+                        if (em.contains(task)) {
+                            em.remove(task);
+                        } else {
+                            em.remove(em.merge(task));
+                        }
+                    }
+                });
+                storyManager.getCurrentStory().removeTask(task);
+            } catch (Exception e) {
+                getLogger(getClass()).log(Level.SEVERE, "Error on try to remove Task: " + currentTask, e);
+                addMessage("Error on try to remove Task", FacesMessage.SEVERITY_ERROR);
+                return null;
+            }
+        }
+        return "show";
+    }
+
+    public void checkUniqueTaskName(FacesContext context, UIComponent component, Object newValue) {
+        final String newName = (String) newValue;
+        try {
+            Long count = doInTransaction(new PersistenceAction<Long>() {
+
+                public Long execute(EntityManager em) {
+                    Query query = em.createNamedQuery((currentTask.isNew()) ? "task.new.countByNameAndStory" : "task.countByNameAndStory");
+                    query.setParameter("name", newName);
+                    query.setParameter("story", storyManager.getCurrentStory());
+                    if (!currentTask.isNew()) {
+                        query.setParameter("currentTask", (!currentTask.isNew()) ? currentTask : null);
+                    }
+                    return (Long) query.getSingleResult();
+                }
+            });
+            if (count != null && count > 1) {
+                throw new ValidatorException(getFacesMessageForKey("task.form.label.name.unique"));
+            }
+        } catch (ManagerException ex) {
+            Logger.getLogger(TaskManager.class.getName()).log(Level.SEVERE, null, ex);
+        }
+    }
+
+    public String cancelEdit() {
+        return "show";
+    }
+
+    public Task getCurrentTask() {
+        return currentTask;
+    }
+
+    public void setCurrentTask(Task currentTask) {
+        this.currentTask = currentTask;
+    }
+
+    public Story getStory() {
+        return storyManager.getCurrentStory();
+    }
+
+    public void setStory(Story story) {
+        storyManager.setCurrentStory(story);
+    }
+
+    public StoryManager getStoryManager() {
+        return storyManager;
+    }
+
+    public void setStoryManager(StoryManager storyManager) {
+        this.storyManager = storyManager;
+    }
+
+    public String showStories() {
+        return "/story/show";
+    }
+
+
+    @PreDestroy
+    public void destroy() {
+        getLogger(getClass()).log(Level.INFO, "destroy intance of taskManager");
+	currentTask = null;
+	storyManager = null;
+    }
+
+}
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/java/jsf2/demo/scrum/web/event/CurrentProjectChangeEvent.java b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/java/jsf2/demo/scrum/web/event/CurrentProjectChangeEvent.java
new file mode 100644
index 0000000..1e7d546
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/java/jsf2/demo/scrum/web/event/CurrentProjectChangeEvent.java
@@ -0,0 +1,55 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package jsf2.demo.scrum.web.event;
+
+import javax.faces.event.SystemEvent;
+
+/**
+ *
+ * @author Dr. Spock (spock at dev.java.net)
+ */
+public class CurrentProjectChangeEvent extends SystemEvent {
+    private static final long serialVersionUID = -5633456683147546243L;
+
+    public CurrentProjectChangeEvent(Object source) {
+        super(source);
+    }
+}
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/java/jsf2/demo/scrum/web/event/CurrentSprintChangeEvent.java b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/java/jsf2/demo/scrum/web/event/CurrentSprintChangeEvent.java
new file mode 100644
index 0000000..a33c12c
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/java/jsf2/demo/scrum/web/event/CurrentSprintChangeEvent.java
@@ -0,0 +1,55 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package jsf2.demo.scrum.web.event;
+
+import javax.faces.event.SystemEvent;
+
+/**
+ *
+ * @author Dr. Spock (spock at dev.java.net)
+ */
+public class CurrentSprintChangeEvent extends SystemEvent {
+    private static final long serialVersionUID = -4000646623469835514L;
+
+    public CurrentSprintChangeEvent(Object source) {
+        super(source);
+    }
+}
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/java/jsf2/demo/scrum/web/event/CurrentStoryChangeEvent.java b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/java/jsf2/demo/scrum/web/event/CurrentStoryChangeEvent.java
new file mode 100644
index 0000000..791b5bc
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/java/jsf2/demo/scrum/web/event/CurrentStoryChangeEvent.java
@@ -0,0 +1,55 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package jsf2.demo.scrum.web.event;
+
+import javax.faces.event.SystemEvent;
+
+/**
+ *
+ * @author Dr. Spock (spock at dev.java.net)
+ */
+public class CurrentStoryChangeEvent extends SystemEvent {
+    private static final long serialVersionUID = -6484414742384961535L;
+
+    public CurrentStoryChangeEvent(Object source) {
+        super(source);
+    }
+}
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/java/jsf2/demo/scrum/web/event/CurrentTaskChangeEvent.java b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/java/jsf2/demo/scrum/web/event/CurrentTaskChangeEvent.java
new file mode 100644
index 0000000..73dc548
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/java/jsf2/demo/scrum/web/event/CurrentTaskChangeEvent.java
@@ -0,0 +1,55 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package jsf2.demo.scrum.web.event;
+
+import javax.faces.event.SystemEvent;
+
+/**
+ *
+ * @author Dr. Spock (spock at dev.java.net)
+ */
+public class CurrentTaskChangeEvent extends SystemEvent {
+    private static final long serialVersionUID = 5152005639803302363L;
+
+    public CurrentTaskChangeEvent(Object source) {
+        super(source);
+    }
+}
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/java/jsf2/demo/scrum/web/helper/ProjectConverter.java b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/java/jsf2/demo/scrum/web/helper/ProjectConverter.java
new file mode 100644
index 0000000..2a128ff
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/java/jsf2/demo/scrum/web/helper/ProjectConverter.java
@@ -0,0 +1,82 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package jsf2.demo.scrum.web.helper;
+
+import jsf2.demo.scrum.model.entities.Project;
+
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.convert.Converter;
+import javax.faces.convert.ConverterException;
+import javax.faces.convert.FacesConverter;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * @author Dr. Spock (spock at dev.java.net)
+ */
+ at FacesConverter(forClass = Project.class)
+public class ProjectConverter implements Converter {
+
+    private static Map<Long, Project> cache = new HashMap<Long, Project>();
+
+    public Object getAsObject(FacesContext context, UIComponent component, String value) {
+        if (value == null || value.equals("0")) {
+            return null;
+        }
+        try {
+            return cache.get(Long.parseLong(value));
+        } catch (NumberFormatException e) {
+            throw new ConverterException("Invalid value: " + value, e);
+        }
+    }
+
+    public String getAsString(FacesContext context, UIComponent component, Object object) {
+        Project project = (Project) object;
+        Long id = project.getId();
+        if (id != null) {
+            cache.put(id, project);
+            return String.valueOf(id.longValue());
+        } else {
+            return "0";
+        }
+    }
+}
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/resources/META-INF/persistence.xml b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/resources/META-INF/persistence.xml
new file mode 100644
index 0000000..340b19f
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/resources/META-INF/persistence.xml
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<persistence version="2.0"
+             xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+             xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
+    <persistence-unit name="scrumtoysPU" transaction-type="JTA">
+        <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
+        <class>jsf2.demo.scrum.model.entities.Project</class>
+        <class>jsf2.demo.scrum.model.entities.Sprint</class>
+        <class>jsf2.demo.scrum.model.entities.Story</class>
+        <class>jsf2.demo.scrum.model.entities.Task</class>
+        <validation-mode>NONE</validation-mode>
+        <properties>
+            <property name="eclipselink.target-database" value="Auto"/>
+            <property name="eclipselink.ddl-generation" value="create-tables"/>
+            <!--
+            <property name="eclipselink.logging.level.sql" value="FINEST" />
+            -->
+        </properties>
+    </persistence-unit>
+</persistence>
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/resources/ValidationMessages.properties b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/resources/ValidationMessages.properties
new file mode 100644
index 0000000..5efd934
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/resources/ValidationMessages.properties
@@ -0,0 +1,41 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
+sprint.form.label.name.unique=Sprint name must be unique within a project
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/resources/ValidationMessages_pt_BR.properties b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/resources/ValidationMessages_pt_BR.properties
new file mode 100644
index 0000000..5efd934
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/resources/ValidationMessages_pt_BR.properties
@@ -0,0 +1,41 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
+sprint.form.label.name.unique=Sprint name must be unique within a project
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/resources/i18n.properties b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/resources/i18n.properties
new file mode 100644
index 0000000..0b65a67
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/resources/i18n.properties
@@ -0,0 +1,308 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
+button.dashboard=Dashboard
+button.delete=Delete
+button.edit=Edit
+button.save=Save
+button.stories=Stories
+button.tasks=Tasks
+home.project.combo.default.item=-- Select one project --
+home.project.combo.label=Project
+label.actions=Actions
+label.code=code
+label.dailyMeeting =Daily Meeting
+label.done=Done Tasks
+label.estimatives=Estimatives
+label.finishedAt=finished at
+label.gainedPoints=Gained Points
+label.goal=Goal
+label.goals=Goals
+label.name=Name
+label.planning1 = Planning 1
+label.planning2 = Planning 2
+label.retrospective=Retrospective
+label.revision=Review
+label.scope=Scope
+label.startedAt=Started at
+label.stories=Stories
+label.story=Story
+label.task=Task
+label.tasks=Tasks
+label.to=to
+label.toFinish=Finish
+label.toRemove=Remove
+label.toStart=Start
+label.todo=Todo Tasks
+label.working=Working Tasks
+menuitem.label.projects=Projects
+menuitem.label.home=Homes
+menuitem.label.changeskin=Change Skin
+menuitem.label.createProject=Create Project
+menuitem.label.dashboard=Dashboard
+menuitem.label.jsf2=More...
+menuitem.label.newsprint=Create Sprint
+menuitem.label.settings=Settings
+menuitem.label.showProjects=View Projects
+menuitem.label.sprints=Sprints
+menuitem.label.sprintslist=View Sprints
+menuitem.label.stories=Stories
+menuitem.label.tasks=Tasks
+menuitem.path.projects=/scrumtoys/project/show.jsf
+menuitem.path.burndown=/scrumtoys/burndown.jsf
+menuitem.path.changeskin=/scrumtoys/skin/changeSkin.jsf
+menuitem.path.createProject=/scrumtoys/project/create.jsf
+menuitem.path.dashboard=/scrumtoys/dashboard.jsf
+menuitem.path.home=/scrumtoys/home.jsf
+menuitem.path.jsf2=/scrumtoys/home.jsf
+menuitem.path.newsprint=/scrumtoys/sprint/create.jsf
+menuitem.path.showProjects=/scrumtoys/project/show.jsf
+menuitem.path.sprints=/scrumtoys/sprint/show.jsf
+menuitem.path.sprintslist=/scrumtoys/sprint/show.jsf
+menuitem.path.stories=stories.jsf
+menuitem.path.tasks=tasks.jsf
+project.create.button.cancel=Cancel
+project.create.button.create=Create Project
+project.create.form.title=Create Project
+project.create.title=Create Project
+project.edit.button.cancel=Cancel
+project.edit.button.update=Update Project
+project.edit.form.title=Edit Project
+project.edit.title=Edit Project
+project.form.label.endDate.pattern=MM/dd/yyyy
+project.form.label.endDate=End Date
+project.form.label.name.required=Describe a short name (30 characters)
+project.form.label.name=Name
+project.form.label.startDate.pattern=MM/dd/yyyy
+project.form.label.startDate.required=Type when this sprint start
+project.form.label.startDate=Start Date
+project.show.button.delete=Delete
+project.show.button.edit=Edit
+project.show.button.home=Home
+project.show.button.newProject=Create New Project
+project.show.button.showSprints=Sprints
+project.show.table.header.actions=Actions
+project.show.table.header.endDate.pattern=MM/dd/yy
+project.show.table.header.endDate=End Date
+project.show.table.header.name=Name
+project.show.table.header.startDate.pattern=MM/dd/yy
+project.show.table.header.startDate=Start Date
+project.show.table.label.empty=There is no project
+project.show.table.title=Projects
+project.show.title=Projects
+sprint.create.button.cancel=Cancel
+sprint.create.button.create=Create Sprint
+sprint.create.form.title=Create Sprint
+sprint.create.title=Create Sprint
+sprint.edit.button.cancel=Cancel
+sprint.edit.button.update=Update Sprint
+sprint.edit.form.title=Edit Sprint
+sprint.edit.title=Edit Sprint
+sprint.form.label.dailyMeetingTime.pattern=HH:mm
+sprint.form.label.dailyMeetingTime.required=Type the dailing meeting time
+sprint.form.label.dailyMeetingTime=Daily Meeting
+sprint.form.label.endDate.pattern=MM/dd/yyyy
+sprint.form.label.endDate=End Date
+sprint.form.label.gainedStoryPoints.required=Type the story points
+sprint.form.label.gainedStoryPoints=Gained Points
+sprint.form.label.goals.required=Describe the goals
+sprint.form.label.goals=Goals
+sprint.form.label.iterationScope.required=Type the iteration scope
+sprint.form.label.iterationScope=Story Points
+sprint.form.label.name.required=Describe a short name (30 characters)
+sprint.form.label.name=Name
+sprint.form.label.project.name=Project
+sprint.form.label.project=Project
+sprint.form.label.startDate.pattern=MM/dd/yyyy
+sprint.form.label.startDate.required=Type when this sprint start
+sprint.form.label.startDate=Start Date
+sprint.show.button.delete=Delete
+sprint.show.button.edit=Edit
+sprint.show.button.home=Home
+sprint.show.button.newSprint=Create New Sprint
+sprint.show.button.showDashboard=Dashboard
+sprint.show.button.showStories=Stories
+sprint.show.table.header.actions=Actions
+sprint.show.table.header.dailyMeetingTime.pattern=HH:mm
+sprint.show.table.header.dailyMeetingTime=Daily Meeting Time
+sprint.show.table.header.goals=Goals
+sprint.show.table.header.name=Name
+sprint.show.table.header.startDate.pattern=MM/dd/yy
+sprint.show.table.header.startDate=Start Date
+sprint.show.table.label.empty=There is no sprint for this project
+sprint.show.table.title=Sprints
+sprint.show.title=Sprints
+sprints.label.dailingmeeting.required=Type the dailing meeting time
+sprints.label.dailyMeetingTime=Daily Meeting
+sprints.label.goals.required=Describe the goals
+sprints.label.goals=Goals
+sprints.label.iterationScope=Story Points
+sprints.label.name.required=Describe a short name (30 characters)
+sprints.label.name=Name
+sprints.label.sprints=Sprints
+sprints.label.startdate.required=Type when this sprint start
+sprints.label.startedAt=Start at
+sprints.label.storypoints.required=Descripte the amount of story points estimated
+sprints.table.title=Sprints
+stories.label.acceptance.required=Describe the acceptance criteria
+stories.label.acceptance=Acceptance
+stories.label.estimation=Story Points
+stories.label.name=Name
+stories.label.newstory=New Story
+stories.label.nostory=There is no stories for this sprint
+stories.label.priority.required=Describe the priority (sequence to do)
+stories.label.priority=Priority
+stories.label.sprint=Sprint
+stories.label.storylist=Stories
+stories.label.storypoints.required=Describe the estimated number of story points
+stories.table.title=Stories
+story.create.button.cancel=Cancel
+story.create.button.create=Create Story
+story.create.form.title=Create Story
+story.create.title=Create Story
+story.edit.button.cancel=Cancel
+story.edit.button.update=Update Story
+story.edit.form.title=Edit Story
+story.edit.title=Edit Story
+story.form.label.acceptance.required=Type acceptance
+story.form.label.acceptance=Acceptance Criteria
+story.form.label.endDate.pattern=MM/dd/yyyy
+story.form.label.endDate=End Date
+story.form.label.estimation.required=Type estimation
+story.form.label.estimation=Estimation
+story.form.label.name.required=Describe a short name (30 characters)
+story.form.label.name=Name
+story.form.label.priority.required=Define the priority
+story.form.label.priority=Priority
+story.form.label.sprint.name=Sprint
+story.form.label.startDate.pattern=MM/dd/yyyy
+story.form.label.startDate.required=Type when this sprint start
+story.form.label.startDate=Start Date
+story.show.button.delete=Delete
+story.show.button.edit=Edit
+story.show.button.newStory=Create New Story
+story.show.button.showSprints=Show Sprints
+story.show.button.showTasks=Tasks
+story.show.table.header.acceptance=Acceptance Criteria
+story.show.table.header.actions=Actions
+story.show.table.header.estimation=Estimation
+story.show.table.header.name=Name
+story.show.table.header.priority=Priority
+story.show.table.header.startDate.pattern=MM/dd/yy
+story.show.table.header.startDate=Start Date
+story.show.table.label.empty=There is no story for this sprint
+story.show.table.title=List of Stories
+story.show.title=List of Stories
+task.create.button.cancel=Cancel
+task.create.button.create=Create Task
+task.create.form.title=Create Task
+task.create.title=Create Task
+task.edit.button.cancel=Cancel
+task.edit.button.update=Update Task
+task.edit.form.title=Edit Task
+task.edit.title=Edit Task
+task.form.label.endDate.pattern=MM/dd/yyyy
+task.form.label.endDate=End Date
+task.form.label.name.required=Describe a short name (30 characters)
+task.form.label.name=Name
+task.form.label.startDate.pattern=MM/dd/yyyy
+task.form.label.startDate.required=Type when this task starts
+task.form.label.startDate=Start Date
+task.form.label.status.required=Specify the current status of the task
+task.form.label.status=Status
+task.form.label.story.name=Story
+task.show.button.delete=Delete
+task.show.button.edit=Edit
+task.show.button.newTask=Create New Task
+task.show.button.showStories=Show Stories
+task.show.button.showTasks=Tasks
+task.show.table.header.actions=Actions
+task.show.table.header.endDate.pattern=MM/dd/yy
+task.show.table.header.endDate=End Date
+task.show.table.header.name=Name
+task.show.table.header.startDate.pattern=MM/dd/yy
+task.show.table.header.startDate=Start Date
+task.show.table.header.status.DONE=Done
+task.show.table.header.status.TODO=Todo
+task.show.table.header.status.WORKING=Working
+task.show.table.header.status=Status
+task.show.table.label.empty=There is no task for this story
+task.show.table.title=Tasks
+task.show.title=Tasks
+tasks.label.name=Name
+tasks.label.story=Story
+taskstatus.done.plural=Done
+taskstatus.done.single=Done
+taskstatus.todo.plural=Opened
+taskstatus.todo.single=Opened
+taskstatus.working.plural=Working
+taskstatus.working.single=Working
+project.form.label.name.unique=There is another project with same name
+sprint.form.label.name.unique=There is another sprint with same name for this project
+story.form.label.name.unique=There is another story with same name for this sprint
+task.form.label.name.unique=There is another task with same name for this story
+
+template.title=JSF 2.0 Demo - Scrum Whiteboard Application
+menuitem.label.about=About
+menuitem.label.jsr314=JSR 314
+menuitem.label.irc=IRC
+menuitem.label.documentation=Documentation
+menuitem.path.irc=http://weblogs.java.net/blog/edburns/archive/2007/01/jsf_irc_channel.html
+menuitem.path.jsr314=http://www.jcp.org/en/jsr/detail?id=314#
+menuitem.path.about=http://www.globalcode.com.br/site/noticias/jsf2scrumdemo.seam
+menuitem.path.documentation=http://java.sun.com/javaee/javaserverfaces/
+task.form.label.sprint.name=Sprint
+task.show.nostory=Select a Story first
+stories.show.nosprint=Select a Sprint first
+sprint.form.label.noproject=Select a Sprint first
+sprint.form.label.projects=Projects
+navigation.projects=Projects
+navigation.stories=Stories
+navigation.tasks=Tasks
+navigation.sprints=Sprints
+dashboard.title=Dashboard
+navigation.separtor=>
+login.title=Login ScrumToys
+login.form.label=Sign in to ScrumToys
+login.username=Username
+login.password=Password
+login.form.button=Sign in
+login.fail.label=Wrong Username and password combination.
+login.info=Use the 'anonymous' user without password or create a new one with role 'user' under the admin security realm at Glassfish Admin Console.
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/resources/i18n_en_US.properties b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/resources/i18n_en_US.properties
new file mode 100644
index 0000000..5b3fa66
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/resources/i18n_en_US.properties
@@ -0,0 +1,312 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
+button.dashboard=Dashboard
+button.delete=Delete
+button.edit=Edit
+button.save=Save
+button.stories=Stories
+button.tasks=Tasks
+home.project.combo.default.item=-- Select one project --
+home.project.combo.label=Project
+label.actions=Actions
+label.code=code
+label.dailyMeeting =Daily Meeting
+label.done=Done Tasks
+label.estimatives=Estimatives
+label.finishedAt=finished at
+label.gainedPoints=Gained Points
+label.goal=Goal
+label.goals=Goals
+label.name=Name
+label.planning1 = Planning 1
+label.planning2 = Planning 2
+label.retrospective=Retrospective
+label.revision=Review
+label.scope=Scope
+label.startedAt=Started at
+label.stories=Stories
+label.story=Story
+label.task=Task
+label.tasks=Tasks
+label.to=to
+label.toFinish=Finish
+label.toRemove=Remove
+label.toStart=Start
+label.todo=Todo Tasks
+label.working=Working Tasks
+menuitem.label.projects=Projects
+menuitem.label.home=Home
+menuitem.label.changeskin=Change Skin
+menuitem.label.createProject=Create Project
+menuitem.label.dashboard=Dashboard
+menuitem.label.jsf2=More...
+menuitem.label.newsprint=Create Sprint
+menuitem.label.settings=Settings
+menuitem.label.showProjects=View Projects
+menuitem.label.sprints=Sprints
+menuitem.label.sprintslist=View Sprints
+menuitem.label.stories=Stories
+menuitem.label.tasks=Tasks
+menuitem.path.projects=/scrumtoys/project/show.jsf
+<<<<<<< .mine
+menuitem.path.changeskin=/scrumtoys/skin/changeSkin.jsf
+=======
+menuitem.path.burndown=/scrumtoys/burndown.jsf
+menuitem.path.changeskin=/scrumtoys/skin/changeSkin.jsf
+>>>>>>> .r7360
+menuitem.path.createProject=/scrumtoys/project/create.jsf
+menuitem.path.dashboard=/scrumtoys/dashboard.jsf
+menuitem.path.home=/scrumtoys/home.jsf
+menuitem.path.jsf2=/scrumtoys/home.jsf
+menuitem.path.newsprint=/scrumtoys/sprint/create.jsf
+menuitem.path.showProjects=/scrumtoys/project/show.jsf
+menuitem.path.sprints=/scrumtoys/sprint/show.jsf
+menuitem.path.sprintslist=/scrumtoys/sprint/show.jsf
+menuitem.path.stories=stories.jsf
+menuitem.path.tasks=tasks.jsf
+project.create.button.cancel=Cancel
+project.create.button.create=Create Project
+project.create.form.title=Create Project
+project.create.title=Create Project
+project.edit.button.cancel=Cancel
+project.edit.button.update=Update Project
+project.edit.form.title=Edit Project
+project.edit.title=Edit Project
+project.form.label.endDate.pattern=MM/dd/yyyy
+project.form.label.endDate=End Date
+project.form.label.name.required=Describe a short name (30 characters)
+project.form.label.name=Name
+project.form.label.startDate.pattern=MM/dd/yyyy
+project.form.label.startDate.required=Type when this sprint start
+project.form.label.startDate=Start Date
+project.show.button.delete=Delete
+project.show.button.edit=Edit
+project.show.button.home=Home
+project.show.button.newProject=Create New Project
+project.show.button.showSprints=Sprints
+project.show.table.header.actions=Actions
+project.show.table.header.endDate.pattern=MM/dd/yy
+project.show.table.header.endDate=End Date
+project.show.table.header.name=Name
+project.show.table.header.startDate.pattern=MM/dd/yy
+project.show.table.header.startDate=Start Date
+project.show.table.label.empty=There is no project
+project.show.table.title=Projects
+project.show.title=Projects
+sprint.create.button.cancel=Cancel
+sprint.create.button.create=Create Sprint
+sprint.create.form.title=Create Sprint
+sprint.create.title=Create Sprint
+sprint.edit.button.cancel=Cancel
+sprint.edit.button.update=Update Sprint
+sprint.edit.form.title=Edit Sprint
+sprint.edit.title=Edit Sprint
+sprint.form.label.dailyMeetingTime.pattern=HH:mm
+sprint.form.label.dailyMeetingTime.required=Type the dailing meeting time
+sprint.form.label.dailyMeetingTime=Daily Meeting
+sprint.form.label.endDate.pattern=MM/dd/yyyy
+sprint.form.label.endDate=End Date
+sprint.form.label.gainedStoryPoints.required=Type the story points
+sprint.form.label.gainedStoryPoints=Gained Points
+sprint.form.label.goals.required=Describe the goals
+sprint.form.label.goals=Goals
+sprint.form.label.iterationScope.required=Type the iteration scope
+sprint.form.label.iterationScope=Story Points
+sprint.form.label.name.required=Describe a short name (30 characters)
+sprint.form.label.name=Name
+sprint.form.label.project.name=Project
+sprint.form.label.project=Project
+sprint.form.label.startDate.pattern=MM/dd/yyyy
+sprint.form.label.startDate.required=Type when this sprint start
+sprint.form.label.startDate=Start Date
+sprint.show.button.delete=Delete
+sprint.show.button.edit=Edit
+sprint.show.button.home=Home
+sprint.show.button.newSprint=Create New Sprint
+sprint.show.button.showDashboard=Dashboard
+sprint.show.button.showStories=Stories
+sprint.show.table.header.actions=Actions
+sprint.show.table.header.dailyMeetingTime.pattern=HH:mm
+sprint.show.table.header.dailyMeetingTime=Daily Meeting Time
+sprint.show.table.header.goals=Goals
+sprint.show.table.header.name=Name
+sprint.show.table.header.startDate.pattern=MM/dd/yy
+sprint.show.table.header.startDate=Start Date
+sprint.show.table.label.empty=There is no sprint for this project
+sprint.show.table.title=Sprints
+sprint.show.title=Sprints
+sprints.label.dailingmeeting.required=Type the dailing meeting time
+sprints.label.dailyMeetingTime=Daily Meeting
+sprints.label.goals.required=Describe the goals
+sprints.label.goals=Goals
+sprints.label.iterationScope=Story Points
+sprints.label.name.required=Describe a short name (30 characters)
+sprints.label.name=Name
+sprints.label.sprints=Sprints
+sprints.label.startdate.required=Type when this sprint start
+sprints.label.startedAt=Start at
+sprints.label.storypoints.required=Descripte the amount of story points estimated
+sprints.table.title=Sprints
+stories.label.acceptance.required=Describe the acceptance criteria
+stories.label.acceptance=Acceptance
+stories.label.estimation=Story Points
+stories.label.name=Name
+stories.label.newstory=New Story
+stories.label.nostory=There is no stories for this sprint
+stories.label.priority.required=Describe the priority (sequence to do)
+stories.label.priority=Priority
+stories.label.sprint=Sprint
+stories.label.storylist=Stories
+stories.label.storypoints.required=Describe the estimated number of story points
+stories.table.title=Stories
+story.create.button.cancel=Cancel
+story.create.button.create=Create Story
+story.create.form.title=Create Story
+story.create.title=Create Story
+story.edit.button.cancel=Cancel
+story.edit.button.update=Update Story
+story.edit.form.title=Edit Story
+story.edit.title=Edit Story
+story.form.label.acceptance.required=Type acceptance
+story.form.label.acceptance=Acceptance Criteria
+story.form.label.endDate.pattern=MM/dd/yyyy
+story.form.label.endDate=End Date
+story.form.label.estimation.required=Type estimation
+story.form.label.estimation=Estimation
+story.form.label.name.required=Describe a short name (30 characters)
+story.form.label.name=Name
+story.form.label.priority.required=Define the priority
+story.form.label.priority=Priority
+story.form.label.sprint.name=Sprint
+story.form.label.startDate.pattern=MM/dd/yyyy
+story.form.label.startDate.required=Type when this sprint start
+story.form.label.startDate=Start Date
+story.show.button.delete=Delete
+story.show.button.edit=Edit
+story.show.button.newStory=Create New Story
+story.show.button.showSprints=Show Sprints
+story.show.button.showTasks=Tasks
+story.show.table.header.acceptance=Acceptance Criteria
+story.show.table.header.actions=Actions
+story.show.table.header.estimation=Estimation
+story.show.table.header.name=Name
+story.show.table.header.priority=Priority
+story.show.table.header.startDate.pattern=MM/dd/yy
+story.show.table.header.startDate=Start Date
+story.show.table.label.empty=There is no story for this sprint
+story.show.table.title=List of Stories
+story.show.title=List of Stories
+task.create.button.cancel=Cancel
+task.create.button.create=Create Task
+task.create.form.title=Create Task
+task.create.title=Create Task
+task.edit.button.cancel=Cancel
+task.edit.button.update=Update Task
+task.edit.form.title=Edit Task
+task.edit.title=Edit Task
+task.form.label.endDate.pattern=MM/dd/yyyy
+task.form.label.endDate=End Date
+task.form.label.name.required=Describe a short name (30 characters)
+task.form.label.name=Name
+task.form.label.startDate.pattern=MM/dd/yyyy
+task.form.label.startDate.required=Type when this task starts
+task.form.label.startDate=Start Date
+task.form.label.status.required=Specify the current status of the task
+task.form.label.status=Status
+task.form.label.story.name=Story
+task.show.button.delete=Delete
+task.show.button.edit=Edit
+task.show.button.newTask=Create New Task
+task.show.button.showStories=Show Stories
+task.show.button.showTasks=Tasks
+task.show.table.header.actions=Actions
+task.show.table.header.endDate.pattern=MM/dd/yy
+task.show.table.header.endDate=End Date
+task.show.table.header.name=Name
+task.show.table.header.startDate.pattern=MM/dd/yy
+task.show.table.header.startDate=Start Date
+task.show.table.header.status.DONE=Done
+task.show.table.header.status.TODO=Todo
+task.show.table.header.status.WORKING=Working
+task.show.table.header.status=Status
+task.show.table.label.empty=There is no task for this story
+task.show.table.title=Tasks
+task.show.title=Tasks
+tasks.label.name=Name
+tasks.label.story=Story
+taskstatus.done.plural=Done
+taskstatus.done.single=Done
+taskstatus.todo.plural=Opened
+taskstatus.todo.single=Opened
+taskstatus.working.plural=Working
+taskstatus.working.single=Working
+project.form.label.name.unique=There is another project with same name
+sprint.form.label.name.unique=There is another sprint with same name for this project
+story.form.label.name.unique=There is another story with same name for this sprint
+task.form.label.name.unique=There is another task with same name for this story
+
+template.title=JSF 2.0 Demo - Scrum Whiteboard Application
+menuitem.label.about=About
+menuitem.label.jsr314=JSR 314
+menuitem.label.irc=IRC
+menuitem.label.documentation=Documentation
+menuitem.path.irc=http://weblogs.java.net/blog/edburns/archive/2007/01/jsf_irc_channel.html
+menuitem.path.jsr314=http://www.jcp.org/en/jsr/detail?id=314#
+menuitem.path.about=http://www.globalcode.com.br/site/noticias/jsf2scrumdemo.seam
+menuitem.path.documentation=http://java.sun.com/javaee/javaserverfaces/
+task.form.label.sprint.name=Sprint
+task.show.nostory=Select a Story first
+stories.show.nosprint=Select a Sprint first
+sprint.form.label.noproject=Select a Sprint first
+sprint.form.label.projects=Projects
+navigation.projects=Projects
+navigation.stories=Stories
+navigation.tasks=Tasks
+navigation.sprints=Sprints
+dashboard.title=Dashboard
+navigation.separtor=>
+login.title=Login ScrumToys
+login.form.label=Sign in to ScrumToys
+login.username=Username
+login.password=Password
+login.form.button=Sign in
+login.fail.label=Wrong Username and password combination.
+login.info=Use the 'anonymous' user without password or create a new one with role 'user' under the admin security realm at Glassfish Admin Console.
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/resources/i18n_pt_BR.properties b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/resources/i18n_pt_BR.properties
new file mode 100644
index 0000000..ce447f8
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/resources/i18n_pt_BR.properties
@@ -0,0 +1,312 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
+button.dashboard=Dashboard
+button.delete=Remover
+button.edit=Editar
+button.save=Salvar
+button.stories=Estorias
+button.tasks=Atividades
+home.project.combo.default.item=-- Selecione um projeto --
+home.project.combo.label=Projetos
+label.actions=Acoes
+label.code=codigo
+label.dailyMeeting =Reuniao Diaria
+label.done=Tarefas Feitas
+label.estimatives=Estimativas
+label.finishedAt=terminada em
+label.gainedPoints=Pontos ganhos
+label.goal=Objetivo
+label.goals=Objetivos
+label.name=Nome
+label.planning1 =Planejamento 1
+label.planning2 =Planejamento 2
+label.retrospective=Retrospectiva
+label.revision=Revisao
+label.scope=Escopo
+label.startedAt=Iniciada em
+label.stories=Estorias
+label.story=Estoria
+label.task=Tarefa
+label.tasks=Tarefas
+label.to=a
+label.toFinish=Terminar
+label.toRemove=Apagar
+label.toStart=Iniciar
+label.todo=Tarefas Abertas
+label.working=Tarefas em Andamento
+menuitem.label.projects=Projetos
+menuitem.label.home=Pagina inicial
+menuitem.label.changeskin=Mudar aparencia
+menuitem.label.createProject=Novo Projeto
+menuitem.label.dashboard=Painel
+menuitem.label.jsf2=Mais...
+menuitem.label.newsprint=Novo Sprint
+menuitem.label.settings=Configuracoes
+menuitem.label.showProjects=Ver Projetos
+menuitem.label.sprints=Sprints
+menuitem.label.sprintslist=Ver Sprints
+menuitem.label.stories=Estorias
+menuitem.label.tasks=Tarefas
+menuitem.path.projects=/scrumtoys/project/show.jsf
+<<<<<<< .mine
+menuitem.path.changeskin=/scrumtoys/skin/changeSkin.jsf
+=======
+menuitem.path.burndown=/scrumtoys/burndown.jsf
+menuitem.path.changeskin=/scrumtoys/skin/changeSkin.jsf
+>>>>>>> .r7360
+menuitem.path.createProject=/scrumtoys/project/create.jsf
+menuitem.path.dashboard=/scrumtoys/dashboard.jsf
+menuitem.path.home=/scrumtoys/home.jsf
+menuitem.path.jsf2=/scrumtoys/home.jsf
+menuitem.path.newsprint=/scrumtoys/sprint/create.jsf
+menuitem.path.showProjects=/scrumtoys/project/show.jsf
+menuitem.path.sprints=/scrumtoys/sprint/show.jsf
+menuitem.path.sprintslist=/scrumtoys/sprint/show.jsf
+menuitem.path.stories=stories.jsf
+menuitem.path.tasks=tasks.jsf
+project.create.button.cancel=Cancelar
+project.create.button.create=Criar Projeto
+project.create.form.title=Criar Projeto
+project.create.title=Criar Projeto
+project.edit.button.cancel=Cancelar
+project.edit.button.update=Atualizar Projeto
+project.edit.form.title=Editar Projeto
+project.edit.title=Editar Projeto
+project.form.label.endDate.pattern=MM/dd/yyyy
+project.form.label.endDate=Data Termino
+project.form.label.name.required=Defina um nome (30 characters)
+project.form.label.name=Nome
+project.form.label.startDate.pattern=MM/dd/yyyy
+project.form.label.startDate.required=Defina quanto este projeto inicia
+project.form.label.startDate=Data Inicio
+project.show.button.delete=Apagar
+project.show.button.edit=Editar
+project.show.button.home=Home
+project.show.button.newProject=Criar Novo Projeto
+project.show.button.showSprints=Sprints
+project.show.table.header.actions=Acoes
+project.show.table.header.endDate.pattern=MM/dd/yy
+project.show.table.header.endDate=Data Termino
+project.show.table.header.name=Nome
+project.show.table.header.startDate.pattern=MM/dd/yy
+project.show.table.header.startDate=Data Inicio
+project.show.table.label.empty=Nao existe projeto
+project.show.table.title=Projetos
+project.show.title=Projetos
+sprint.create.button.cancel=Cancelar
+sprint.create.button.create=Criar Sprint
+sprint.create.form.title=Cadastro de Sprint
+sprint.create.title=Cadastro de Sprint
+sprint.edit.button.cancel=Cancelar
+sprint.edit.button.update=Atualizar Sprint
+sprint.edit.form.title=Edicao de Sprint
+sprint.edit.title=Edicao de Sprint
+sprint.form.label.dailyMeetingTime.pattern=HH:mm
+sprint.form.label.dailyMeetingTime.required=Defina o horario da reuniao diacria
+sprint.form.label.dailyMeetingTime=Hora reuniao diaria
+sprint.form.label.endDate.pattern=dd/MM/yyyy
+sprint.form.label.endDate=Data termino
+sprint.form.label.gainedStoryPoints.required=Defina o numero de Story Points estimados
+sprint.form.label.gainedStoryPoints=Story Points ganhos
+sprint.form.label.goals.required=Defina os objetivos do Sprint
+sprint.form.label.goals=Objetivos
+sprint.form.label.iterationScope.required=Defina o numero de iteracoes
+sprint.form.label.iterationScope=Story Points
+sprint.form.label.name.required=Defina um nome para o Sprint (30 caracteres)
+sprint.form.label.name=Nome
+sprint.form.label.project.name=Projeto
+sprint.form.label.project=Projeto
+sprint.form.label.startDate.pattern=dd/MM/yyyy
+sprint.form.label.startDate.required=Data de inicio do Sprint
+sprint.form.label.startDate=Data inicio
+sprint.show.button.delete=Apagar
+sprint.show.button.edit=Editar
+sprint.show.button.home=Home
+sprint.show.button.newSprint=Criar Novo Sprint
+sprint.show.button.showDashboard=Dashboard
+sprint.show.button.showStories=Estorias
+sprint.show.table.header.actions=Acoes
+sprint.show.table.header.dailyMeetingTime.pattern=HH:mm
+sprint.show.table.header.dailyMeetingTime=Hora Reunioes Diarias
+sprint.show.table.header.goals=Objetivos
+sprint.show.table.header.name=Nome
+sprint.show.table.header.startDate.pattern=dd/MM/yy
+sprint.show.table.header.startDate=Data de Inicio
+sprint.show.table.label.empty=Nao existe sprint para este projeto
+sprint.show.table.title=Sprints
+sprint.show.title=Sprints
+sprints.label.dailingmeeting.required=Defina o horario da reuniao diaria
+sprints.label.dailyMeetingTime=Reuniao diaria
+sprints.label.goals.required=Defina os objetivos do Sprint
+sprints.label.goals=Objetivos
+sprints.label.iterationScope=Story Points
+sprints.label.name.required=Defina um nome para o Sprint (30 caracteres)
+sprints.label.name=Nome
+sprints.label.sprints=Sprints
+sprints.label.startdate.required=Digite a data de inicio deste Sprint
+sprints.label.startedAt=Inicia em
+sprints.label.storypoints.required=Defina o numero de Story Points estimados
+sprints.table.title=Sprints
+stories.label.acceptance.required=Defina o criterio de aceitacao
+stories.label.acceptance=Aceite
+stories.label.estimation=Story Points
+stories.label.name=Nome
+stories.label.newstory=Nova Estoria
+stories.label.nostory=Nao ha estorias para este Sprint
+stories.label.priority.required=Defina a prioridade da estoria
+stories.label.priority=Prioridade
+stories.label.sprint=Sprint
+stories.label.storylist=Stories
+stories.label.storypoints.required=Defina o numero de Story Points estimado
+stories.table.title=Estorias
+story.create.button.cancel=Cancelar
+story.create.button.create=Criar Estoria
+story.create.form.title=Criacao de Estoria
+story.create.title=Criacao de Estoria
+story.edit.button.cancel=Cancelar
+story.edit.button.update=Atualizar Estoria
+story.edit.form.title=Editar Estoria
+story.edit.title=Editar Estoria
+story.form.label.acceptance.required=Campo obrigatorio
+story.form.label.acceptance=Criterio de aceitacao
+story.form.label.endDate.pattern=MM/dd/yyyy
+story.form.label.endDate=Data de Temino
+story.form.label.estimation.required=Campo obrigatorio
+story.form.label.estimation=Estimativa
+story.form.label.name.required=Defina um nome para o Sprint (30 caracteres)
+story.form.label.name=Nome
+story.form.label.priority.required=Defina a prioridade
+story.form.label.priority=Prioridade
+story.form.label.sprint.name=Sprint
+story.form.label.startDate.pattern=MM/dd/yyyy
+story.form.label.startDate.required=Defina quando a estoria comeca
+story.form.label.startDate=Data Inicio
+story.show.button.delete=Apagar
+story.show.button.edit=Editar
+story.show.button.newStory=Criar Nova Estoria
+story.show.button.showSprints=Mostrar Sprints
+story.show.button.showTasks=Tarefas
+story.show.table.header.acceptance=Criterio de Aceitacao
+story.show.table.header.actions=Acoes
+story.show.table.header.estimation=Estimativa
+story.show.table.header.name=Nome
+story.show.table.header.priority=Prioridade
+story.show.table.header.startDate.pattern=MM/dd/yy
+story.show.table.header.startDate=Data Inicio
+story.show.table.label.empty=Nao existe estoria para este sprint
+story.show.table.title=Lista de Estorias
+story.show.title=Lista de Estorias
+task.create.button.cancel=Cancelar
+task.create.button.create=Criar Tarefa
+task.create.form.title=Criar Tarefa
+task.create.title=Criar Tarefa
+task.edit.button.cancel=Cancelar
+task.edit.button.update=Atualizar Tarefa
+task.edit.form.title=Editar Tarefa
+task.edit.title=Editar Tarefa
+task.form.label.endDate.pattern=MM/dd/yyyy
+task.form.label.endDate=Data Termino
+task.form.label.name.required=Defina um nome para esta tarefa (30 caracteres)
+task.form.label.name=Nome
+task.form.label.startDate.pattern=MM/dd/yyyy
+task.form.label.startDate.required=Indique quando esta tarefa inicia
+task.form.label.startDate=Data Inicio
+task.form.label.status.required=Especifique o status atual desta tarefa
+task.form.label.status=Status
+task.form.label.story.name=Estoria
+task.show.button.delete=Apagar
+task.show.button.edit=Editar
+task.show.button.newTask=Criar Nova Tarefa
+task.show.button.showStories=Mostrar Estorias
+task.show.button.showTasks=Tarefas
+task.show.table.header.actions=Acoes
+task.show.table.header.endDate.pattern=MM/dd/yy
+task.show.table.header.endDate=Data Termino
+task.show.table.header.name=Nome
+task.show.table.header.startDate.pattern=MM/dd/yy
+task.show.table.header.startDate=Data Inicio
+task.show.table.header.status.DONE=Feito
+task.show.table.header.status.TODO=Para fazer
+task.show.table.header.status.WORKING=Em andamento
+task.show.table.header.status=Status
+task.show.table.label.empty=Nao existe tarefa para esta estoria
+task.show.table.title=Tarefas
+task.show.title=Tarefas
+tasks.label.name=Nome
+tasks.label.story=Estoria
+taskstatus.done.plural=Terminadas
+taskstatus.done.single=Terminada
+taskstatus.todo.plural=Abertas
+taskstatus.todo.single=Aberta
+taskstatus.working.plural=Em andamento
+taskstatus.working.single=Em andamento
+project.form.label.name.unique=Existe outro projeto com o mesmo nome
+sprint.form.label.name.unique=Existe outro sprint com mesmo nome para este projeto
+story.form.label.name.unique=Existe outra Estoria com o mesmo nome para este sprint
+task.form.label.name.unique=Existe outra tarefa com o mesmo nome para esta estoria
+
+template.title=JSF 2.0 Demo - Scrum Whiteboard Application
+menuitem.label.about=Sobre
+menuitem.label.jsr314=JSR 314
+menuitem.label.irc=IRC
+menuitem.label.documentation=Documentacao
+menuitem.path.irc=http://weblogs.java.net/blog/edburns/archive/2007/01/jsf_irc_channel.html
+menuitem.path.jsr314=http://www.jcp.org/en/jsr/detail?id=314#
+menuitem.path.about=http://www.globalcode.com.br/site/noticias/jsf2scrumdemo.seam
+menuitem.path.documentation=http://java.sun.com/javaee/javaserverfaces/
+task.form.label.sprint.name=Sprint
+task.show.nostory=Selecione uma est\u00f3ria primeiro
+stories.show.nosprint=Selecione um sprint primeiro
+sprint.form.label.noproject=Selecione um sprint primeiro
+sprint.form.label.projects=Projetos
+navigation.projects=Projetos
+navigation.stories=Estorias
+navigation.tasks=Tarefas
+navigation.sprints=Sprints
+dashboard.title=Dashboard
+navigation.separtor=>
+login.title=Login ScrumToys
+login.form.label=Entrar no ScrumToys
+login.username=Usuario
+login.password=Senha
+login.form.button=Entrar
+login.fail.label=Combinacao de Usuario ou Senha invalido.
+login.info=Use o usu\u00e1rio 'anonymous' sem senha ou crie um novo com perfil 'user' via console de administra\u00e7\u00e3o do Glassfish Admin Console no dom\u00ednio de seguran\u00e7a admin-realm.
\ No newline at end of file
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/.dashboard.doneTasks.xhtml b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/.dashboard.doneTasks.xhtml
new file mode 100644
index 0000000..2722f29
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/.dashboard.doneTasks.xhtml
@@ -0,0 +1,80 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+
+	<ui:composition>
+	<h2>#{i18n['label.done']}</h2>
+	<h:panelGroup>
+		#{fn:length(dashboardMB.doneTasks)} #{i18n['label.tasks']}
+	</h:panelGroup>
+	<h:panelGroup>
+			<h:outputLabel value="#{i18n['label.gainedPoints']}:" for="otGainedPoints" style="font-weight: bold" />
+			<h:outputText id="otGainedPoints" value="#{dashboardMB.selectedSprint.gainedStoryPoints}" />
+	</h:panelGroup>
+    <ui:repeat  var="task" value="#{dashboardMB.dmDoneTasks}">
+    <div class="#{task.finished?'closedTask':'openedTask'}">
+    	<span style="font-size: 10px">#{i18n['label.code']} #{task.code}</span>
+    	<br/>
+    	<span style="font-size: 14px">#{task.name}</span>
+    	<br/>
+    	<span style="font-size: 10px">#{task.story.name}</span>
+    	<br/>
+    	<span style="font-size: 10px">#{task.status.single}</span>
+    	<br/>
+        <h:outputText value="#{task.startedAt}">
+    		<f:convertDateTime pattern="dd/MM/yyyy"/>
+    	</h:outputText>
+    	#{i18n['label.to']}
+    	<h:outputText value="#{task.finishedAt}">
+    		<f:convertDateTime pattern="dd/MM/yyyy"/>
+    	</h:outputText>
+    </div>
+    </ui:repeat>
+
+	</ui:composition>
+
+</html>
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/.dashboard.stories.xhtml b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/.dashboard.stories.xhtml
new file mode 100644
index 0000000..ab7fe7a
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/.dashboard.stories.xhtml
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+
+	<ui:composition>
+	<h2>#{i18n['label.stories']}</h2>
+	<h:panelGroup>
+		#{fn:length(dashboardMB.selectedSprint.stories)} #{i18n['label.stories']}
+	</h:panelGroup>
+	<h:panelGroup>
+			<h:outputLabel value="#{i18n['label.scope']}:" for="" style="font-weight: bold" />
+			<h:outputText value="#{dashboardMB.selectedSprint.iterationScope}" />
+	</h:panelGroup>
+    <ui:repeat value="#{dashboardMB.dmStories}" var="story">
+    <div class="#{story.finished?'closedStory':'openedStory'}">
+    	<span style="font-size: 10px">#{i18n['label.code']} #{story.code}</span>
+    	<br />
+    	<span style="font-size: 14px">#{story.name}</span>
+    	<br />
+    	<span style="font-size: 10px">#{story.estimation} #{"story points"}</span>
+    	<br />
+        <img src="#{resource['images/checklist7.jpg']}" alt="#{story.acceptance}" title="#{story.acceptance}" />
+    	<br />
+    	<span style="font-size: 10px">#{story.status}</span>
+    	<br/>
+    	<h:commandButton action="#{dashboardMB.startStory}" value="#{i18n['label.toStart']}" rendered="#{empty story.startedAt}" />
+    	<h:commandButton action="#{dashboardMB.finishStory}" value="#{i18n['label.toFinish']}" rendered="#{not empty story.startedAt and empty story.finishedAt}" />
+    	<br/>
+        <h:outputText value="#{story.startedAt}" />
+    	<h:outputLabel value=" #{i18n['label.to']} " rendered="#{not empty story.finishedAt}"/>
+    	<h:outputText value="#{story.finishedAt}">
+    		<f:convertDateTime pattern="dd/MM/yyyy"/>
+    	</h:outputText>
+    </div>
+    </ui:repeat>
+
+	</ui:composition>
+
+</html>
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/.dashboard.todoTasks.xhtml b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/.dashboard.todoTasks.xhtml
new file mode 100644
index 0000000..d626f2d
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/.dashboard.todoTasks.xhtml
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:fn="http://java.sun.com/jsp/jstl/functions" 
+      xmlns:appez="http://java.sun.com/jsf/composite/components">
+
+	<ui:composition>
+	<h2>#{i18n['label.todo']}</h2>
+	<h:panelGroup>
+		#{fn:length(dashboardMB.todoTasks)} #{i18n['label.tasks']}
+	</h:panelGroup>
+    <ui:repeat  var="task" value="#{dashboardMB.dmTodoTasks}">
+    <div class="#{task.finished?'closedTask':'openedTask'}">
+    	<span style="font-size: 10px">#{i18n['label.code']} #{task.code}</span>
+    	<br/>
+    	<span style="font-size: 14px">#{task.name}</span>
+    	<br/>
+    	<span style="font-size: 10px">#{task.story.name}</span>
+    	<br/>
+    	<span style="font-size: 10px">#{task.status.single}</span>
+    	<br/>
+    	<h:commandButton action="#{dashboardMB.startTask}" value="#{i18n['label.toStart']}" rendered="#{not empty task.story.startedAt}" />
+    	<h:commandButton action="#{dashboardMB.removeTodoTask}" value="#{i18n['label.toRemove']}"  />
+    </div>
+    </ui:repeat>
+
+	</ui:composition>
+
+</html>
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/.dashboard.workingTasks.xhtml b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/.dashboard.workingTasks.xhtml
new file mode 100644
index 0000000..5ed5ce8
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/.dashboard.workingTasks.xhtml
@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+
+	<ui:composition>
+	<h2>#{i18n['label.working']}</h2>
+	<h:panelGroup>
+		#{fn:length(dashboardMB.workingTasks)} #{i18n['label.tasks']}
+	</h:panelGroup>
+    <ui:repeat  var="task" value="#{dashboardMB.dmWorkingTasks}">
+    <div class="#{task.finished?'closedTask':'openedTask'}">
+    	<span style="font-size: 10px">#{i18n['label.code']} #{task.code}</span>
+    	<br/>
+    	<span style="font-size: 14px">#{task.name}</span>
+    	<br/>
+    	<span style="font-size: 10px">#{task.story.name}</span>
+    	<br/>
+    	<span style="font-size: 10px">#{task.status.single}</span>
+    	<br/>
+    	<h:commandButton action="#{dashboardMB.finishTask}" value="#{i18n['label.toFinish']}" rendered="#{not empty task.startedAt}" />
+    	<h:commandButton action="#{dashboardMB.removeWorkingTask}" value="#{i18n['label.toRemove']}"  />
+    	<br/>
+    	#{i18n['label.startedAt']}
+        <h:outputText value="#{task.startedAt}">
+  	 		<f:convertDateTime pattern="dd/MM/yyyy" timeZone="-3"/>
+     	</h:outputText>    	
+    </div>
+    </ui:repeat>
+
+	</ui:composition>
+
+</html>
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/WEB-INF/beans.xml b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/WEB-INF/beans.xml
new file mode 100644
index 0000000..4ca8195
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/WEB-INF/beans.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://java.sun.com/xml/ns/javaee"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
+</beans>
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/WEB-INF/facelets/jsfcomps.taglib.xml b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/WEB-INF/facelets/jsfcomps.taglib.xml
new file mode 100644
index 0000000..b23e9d9
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/WEB-INF/facelets/jsfcomps.taglib.xml
@@ -0,0 +1,61 @@
+<?xml version="1.0"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE facelet-taglib PUBLIC
+        "-//Sun Microsystems, Inc.//DTD Facelet Taglib 1.0//EN"
+        "http://java.sun.com/dtd/facelet-taglib_1_0.dtd">
+
+<facelet-taglib>
+    <namespace>http://www.java.net/scrumtoys/jsfcomps</namespace>
+    <tag>
+        <tag-name>burndown</tag-name>
+        <component>
+            <component-type>BURNDOWN_OUTPUT</component-type>
+            <renderer-type>BURNDOWN_RENDERER</renderer-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>test</tag-name>
+        <source>testTag.xhtml</source>
+    </tag>
+</facelet-taglib>
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/WEB-INF/facelets/testTag.xhtml b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/WEB-INF/facelets/testTag.xhtml
new file mode 100644
index 0000000..aae73d0
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/WEB-INF/facelets/testTag.xhtml
@@ -0,0 +1,53 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+
+<ui:composition>
+    <h:outputText value=" test "/>
+</ui:composition>
+
+</html>
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/WEB-INF/faces-config.xml b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/WEB-INF/faces-config.xml
new file mode 100644
index 0000000..0d31167
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/WEB-INF/faces-config.xml
@@ -0,0 +1,158 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
+              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+              xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
+              version="2.0">
+
+    <application>
+        <resource-bundle>
+            <base-name>i18n</base-name>
+            <var>i18n</var>
+        </resource-bundle>
+        <message-bundle>i18n</message-bundle>
+        <locale-config>
+          <default-locale>en_US</default-locale>
+          <supported-locale>pt_BR</supported-locale>
+        </locale-config>
+
+    </application>
+
+    <navigation-rule>
+        <description>
+            global navigation rules
+        </description>
+        <from-view-id>*</from-view-id>
+        <navigation-case>
+            <description>Go to Edit Project Page</description>
+            <from-outcome>editProject</from-outcome>
+            <to-view-id>/project/edit.jsf</to-view-id>
+        </navigation-case>
+        <navigation-case>
+            <description>Go to Select Projects Page</description>
+            <from-outcome>showProjects</from-outcome>
+            <to-view-id>/project/show.jsf</to-view-id>
+        </navigation-case>
+        <navigation-case>
+            <description>Go to Edit Sprint Page</description>
+            <from-outcome>editSprint</from-outcome>
+            <to-view-id>/sprint/edit.jsf</to-view-id>
+        </navigation-case>
+        <navigation-case>
+            <description>Go to Dashboard</description>
+            <from-outcome>showDashboard</from-outcome>
+            <to-view-id>/dashboard/show.jsf</to-view-id>
+        </navigation-case>
+    </navigation-rule>
+
+    <navigation-rule>
+        <description>
+            dashboard navigation rules
+        </description>
+        <from-view-id>/dashboard/show.xhtml</from-view-id>
+        <navigation-case>
+            <from-outcome>showSprints</from-outcome>
+            <to-view-id>/sprint/show.xhtml</to-view-id>
+        </navigation-case>
+        <navigation-case>
+            <description>
+                see burndown
+            </description>
+            <from-outcome>burndown</from-outcome>
+            <to-view-id>/burndown.xhtml</to-view-id>
+        </navigation-case>
+    </navigation-rule>
+
+    <navigation-rule>
+        <description>
+            project navigation rules
+        </description>
+        <from-view-id>/project/show.xhtml</from-view-id>
+        <navigation-case>
+            <from-outcome>showSprints</from-outcome>
+            <to-view-id>/sprint/show.xhtml</to-view-id>
+        </navigation-case>
+    </navigation-rule>
+
+    <navigation-rule>
+        <description>
+            sprint navigation rules
+        </description>
+        <from-view-id>/sprint/show.xhtml</from-view-id>
+        <navigation-case>
+            <from-outcome>showStories</from-outcome>
+            <to-view-id>/story/show.xhtml</to-view-id>
+        </navigation-case>
+        <navigation-case>
+            <from-outcome>showDashboard</from-outcome>
+            <to-view-id>/dashboard/show.xhtml</to-view-id>
+        </navigation-case>
+    </navigation-rule>
+
+    <navigation-rule>
+        <description>
+            story navigation rules
+        </description>
+        <from-view-id>/story/show.xhtml</from-view-id>
+        <navigation-case>
+            <from-outcome>showTasks</from-outcome>
+            <to-view-id>/task/show.xhtml</to-view-id>
+        </navigation-case>
+        <navigation-case>
+            <from-outcome>showSprints</from-outcome>
+            <to-view-id>/sprint/show.xhtml</to-view-id>
+        </navigation-case>
+    </navigation-rule>
+
+    <navigation-rule>
+        <description>
+            task navigation rules
+        </description>
+        <from-view-id>/task/show.xhtml</from-view-id>
+        <navigation-case>
+            <from-outcome>showStories</from-outcome>
+            <to-view-id>/story/show.xhtml</to-view-id>
+        </navigation-case>
+    </navigation-rule>
+
+</faces-config>
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/WEB-INF/glassfish-web.xml b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/WEB-INF/glassfish-web.xml
new file mode 100644
index 0000000..251b635
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/WEB-INF/glassfish-web.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
+<glassfish-web-app error-url="">
+  <context-root>/scrumtoys</context-root>
+  <class-loader delegate="true"/>
+  <jsp-config>
+    <property name="keepgenerated" value="true">
+      <description>Keep a copy of the generated servlet class' java code.</description>
+    </property>
+  </jsp-config>
+</glassfish-web-app>
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/WEB-INF/lib/README.txt b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/WEB-INF/lib/README.txt
new file mode 100644
index 0000000..136c70a
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/WEB-INF/lib/README.txt
@@ -0,0 +1,16 @@
+Hibernate Annotations dependencies
+==================================
+
+
+Core
+====
+hibernate-commons-annotations.jar: required
+hibernate3.jar: required
+hibernate core dependencies: required (see Hibernate Core for more information)
+ejb3-persistence.jar: required
+hibernate-validator.jar: optional
+hibernate-search.jar: optional
+
+Test
+====
+(no additinal dependency)
\ No newline at end of file
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/WEB-INF/sun-web.xml b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/WEB-INF/sun-web.xml
new file mode 100644
index 0000000..711d318
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/WEB-INF/sun-web.xml
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE sun-web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Application Server 9.0 Servlet 2.5//EN" "http://www.sun.com/software/appserver/dtds/sun-web-app_2_5-0.dtd">
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<sun-web-app error-url="">
+  <context-root>/scrumtoys</context-root>
+  <class-loader delegate="true"/>
+  <jsp-config>
+    <property name="keepgenerated" value="true">
+      <description>Keep a copy of the generated servlet class' java code.</description>
+    </property>
+  </jsp-config>
+
+  <security-role-mapping>
+    <role-name>user</role-name>
+    <group-name>user</group-name>
+    <group-name>asadmin</group-name>
+  </security-role-mapping>
+</sun-web-app>
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/WEB-INF/web.xml b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..d6ee01e
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,120 @@
+<?xml version="1.0"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+    <display-name>Scrum Checklist 2.0</display-name>
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>server</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>Development</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.FACELETS_LIBRARIES</param-name>
+        <param-value>/WEB-INF/facelets/jsfcomps.taglib.xml</param-value>
+    </context-param>
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>*.jsf</url-pattern>
+    </servlet-mapping>
+    <welcome-file-list>
+        <welcome-file>index.html</welcome-file>
+    </welcome-file-list>
+    <error-page>
+        <exception-type>javax.faces.application.ViewExpiredException</exception-type>
+        <location>/index.html</location>
+    </error-page>
+
+<!--
+
+These settings assume the javadb database has been started with no
+modifications to the default configuration.
+
+Let ${basedir}/build/userpassword.txt be a file that contains a single
+line with this text
+
+AS_ADMIN_USERPASSWORD=user1
+
+These settings assume the following asadmin commands have been run
+before deploying this war.
+
+NOTE: The below text uses dash_dash to mean two consecutive hyphen
+characters.  This is necessary to not bother the XML parser
+
+asadmin set server.security-service.activate-default-principal-to-role-mapping=true
+
+asadmin dash_dashpasswordfile ${basedir}/build/userpassword.txt delete-file-user user1
+
+asadmin dash_dashpasswordfile ${basedir}/build/userpassword.txt create-file-user dash_dashgroups user user1
+
+-->
+
+    <login-config>
+        <auth-method>FORM</auth-method>
+        <realm-name>file</realm-name>
+        <form-login-config>
+          <form-login-page>/login.jsf</form-login-page>
+          <form-error-page>/loginError.jsf</form-error-page>
+        </form-login-config>
+    </login-config>
+
+
+    <security-constraint>
+        <web-resource-collection>
+          <web-resource-name>User</web-resource-name>
+          <url-pattern>*.jsf</url-pattern>
+        </web-resource-collection>
+    <auth-constraint>
+      <role-name>user</role-name>
+    </auth-constraint>
+  </security-constraint>
+
+</web-app>
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/allInOne.xhtml b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/allInOne.xhtml
new file mode 100644
index 0000000..637eb12
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/allInOne.xhtml
@@ -0,0 +1,234 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+
+<ui:composition template="template.xhtml">
+<ui:define name="pageTitle">
+    <h:outputText value="HOME needs i18n"></h:outputText>
+</ui:define>
+
+<ui:define name="content">
+	<h:messages globalOnly="true" showDetail="true" tooltip="true" errorClass="errorMsgs" infoClass="infoMsgs" />	
+    <h:form id="frmNew">	    
+    	<h2>New Sprint</h2>
+		<h:panelGrid columns="3" style="width: 300px">
+				<h:outputLabel value="#{i18n['sprints.label.name']}:" for="itName"  />
+				<h:inputText id="itName" value="#{allInOneMB.sprintsMB.toSave.name}" required="true" requiredMessage="Type the short name" />
+				<h:message for="itName" />
+				
+				<h:outputLabel value="#{i18n['sprints.label.goals']}:" for="itGoals"  />
+				<h:inputText id="itGoals" value="#{allInOneMB.sprintsMB.toSave.goals}" required="true" requiredMessage="Describe the goals" />
+				<h:message for="itGoals" />
+				
+				<h:outputLabel value="#{i18n['sprints.label.iterationScope']}:" for="itIterationScope"  />
+				<h:inputText id="itIterationScope" value="#{allInOneMB.sprintsMB.toSave.iterationScope}" required="true" requiredMessage="Type the scope" />
+				<h:message for="itIterationScope" />
+				
+				<h:outputLabel value="#{i18n['sprints.label.startedAt']}:" for="itStartedAt"  />
+				<h:inputText id="itStartedAt" value="#{allInOneMB.sprintsMB.toSave.startedAt}" required="true" requiredMessage="Type when this sprint start" />
+				<h:message for="itStartedAt" />
+				
+				<h:outputLabel value="#{i18n['sprints.label.dailyMeetingTime']}:" for="itDailyMeetingTime"  />
+				<h:inputText id="itDailyMeetingTime" value="#{allInOneMB.sprintsMB.toSave.dailyMeetingTime}" required="true" requiredMessage="Type the estimation (story points)" />
+				<h:message for="itDailyMeetingTime" />
+				
+				<f:verbatim></f:verbatim>
+				<f:verbatim></f:verbatim>
+				<h:commandButton action="#{allInOneMB.sprintsMB.save}" value="save" />
+		</h:panelGrid>
+    </h:form>
+    <h:form id="frmList">
+    	<h2>Sprints</h2>
+		<h:panelGrid columns="3" style="width: 300px">
+				<h:outputLabel value="Not exist sprints" style="color: orange"  rendered="#{allInOneMB.sprintsMB.dm.rowCount eq 0}"/>
+		</h:panelGrid>
+		<h:dataTable value="#{allInOneMB.sprintsMB.dm}" var="sprint" width="100%" rendered="#{allInOneMB.sprintsMB.dm.rowCount > 0}">
+			<h:column headerClass="textColumn">
+				<f:facet name="header"><h:outputLabel value="#" /></f:facet>
+				<h:outputText value="#{allInOneMB.sprintsMB.dm.rowIndex + 1}" />
+				<f:facet name="footer">#{""}</f:facet>
+			</h:column>
+			<h:column headerClass="textColumn">
+				<f:facet name="header"><h:outputLabel value="name" /></f:facet>
+				<h:outputText value="#{sprint.name}" />
+				<f:facet name="footer">#{allInOneMB.sprintsMB.dm.rowCount}#{" sprints"}</f:facet>
+			</h:column>
+			<h:column headerClass="textColumn">
+				<f:facet name="header"><h:outputLabel value="goals" /></f:facet>
+				<h:outputText value="#{sprint.goals}" />
+				<f:facet name="footer">#{" "}</f:facet>
+			</h:column>
+			<h:column headerClass="textColumn">
+				<f:facet name="header"><h:outputLabel value="iteration scope" /></f:facet>
+				<h:outputText value="#{sprint.iterationScope}" />
+				<f:facet name="footer">#{" "}</f:facet>
+			</h:column>
+			<h:column headerClass="textColumn">
+				<f:facet name="header"><h:outputLabel value="started at" /></f:facet>
+				<h:outputText value="#{sprint.startedAt}" />
+				<f:facet name="footer">#{" "}</f:facet>
+			</h:column>
+			<h:column headerClass="textColumn">
+				<f:facet name="header"><h:outputLabel value="daily meeting time" /></f:facet>
+				<h:outputText value="#{sprint.dailyMeetingTime}" />
+				<f:facet name="footer">#{" "}</f:facet>
+			</h:column>
+			<h:column>
+				<f:facet name="header"><h:outputLabel value="actions" /></f:facet>
+				<h:commandButton action="#{allInOneMB.sprintsMB.edit}" value="edit ..."  />
+				<h:commandButton action="#{allInOneMB.sprintsMB.remove}" value="remove"  />
+				<h:commandButton action="#{allInOneMB.sprintsMB.showStories}" value="stories ..."  />
+				<h:commandButton action="#{allInOneMB.sprintsMB.showDashboard}" value="dashboard ..."  />
+				<f:facet name="footer">#{" "}</f:facet>
+			</h:column>
+		</h:dataTable>
+    </h:form>
+    <h:form id="frmNewStory">
+    	<h2>New Story</h2>
+		<h:panelGrid columns="3" style="width: 300px">
+				<h:outputLabel value="#{i18n['stories.label.sprint']}:" for="otSprint"  />
+				<h:outputText id="otSprint" value="#{storiesMB.toSave.sprint.name}"  />
+				<h:message for="otSprint" />
+				<h:outputLabel value="#{i18n['stories.label.name']}:" for="itName"  />
+				<h:inputText id="itName" value="#{storiesMB.toSave.name}" required="true" requiredMessage="Describe the story" />
+				<h:message for="itName" />
+				<h:outputLabel value="#{i18n['stories.label.acceptance']}:" for="itAcceptance"  />
+				<h:inputTextarea id="itAcceptance" value="#{storiesMB.toSave.acceptance}" required="true" cols="50" rows="4" requiredMessage="Describe the acceptance" />
+				<h:message for="itAcceptance" />
+				<h:outputLabel value="#{i18n['stories.label.priority']}:" for="selPriority"  />
+				<h:inputText id="selPriority" value="#{storiesMB.toSave.priority}" required="true" requiredMessage="Type the priority (sequence to do)" />
+				<h:message for="selPriority" />
+				<h:outputLabel value="#{i18n['stories.label.estimation']}:" for="itEstimation"  />
+				<h:inputText id="itEstimation" value="#{storiesMB.toSave.estimation}" required="true" requiredMessage="Type the estimation (story points)" />
+				<h:message for="itEstimation" />
+				<f:verbatim></f:verbatim>
+				<f:verbatim></f:verbatim>
+				<h:commandButton action="#{storiesMB.save}" value="save" />
+		</h:panelGrid>
+    </h:form>
+    <h:form id="frmStories">
+    	<h2>Stories</h2>
+		<h:panelGrid columns="3" >
+				<h:outputLabel value="No exist stories for this sprint"  rendered="#{storiesMB.dm.rowCount eq 0}"/>
+		</h:panelGrid>
+		<h:dataTable value="#{storiesMB.dm}" var="story" width="100%" rendered="#{storiesMB.dm.rowCount > 0}">
+			<h:column headerClass="textColumn">
+				<f:facet name="header"><h:outputLabel value="#" /></f:facet>
+				<h:outputText value="#{storiesMB.dm.rowIndex + 1}" />
+				<f:facet name="footer">#{""}</f:facet>
+			</h:column>
+			<h:column headerClass="textColumn">
+				<f:facet name="header"><h:outputLabel value="name" /></f:facet>
+				<h:outputText value="#{story.name}" />
+				<f:facet name="footer">#{storiesMB.dm.rowCount}#{" stories"}</f:facet>
+			</h:column>
+			<h:column headerClass="textColumn">
+				<f:facet name="header"><h:outputLabel value="priority" /></f:facet>
+				<h:outputText value="#{story.priority}" />
+				<f:facet name="footer">#{" "}</f:facet>
+			</h:column>
+			<h:column headerClass="textColumn">
+				<f:facet name="header"><h:outputLabel value="estimation (sp)" /></f:facet>
+				<h:outputText value="#{story.estimation}" />
+				<f:facet name="footer">#{" "}</f:facet>
+			</h:column>
+			<h:column headerClass="textColumn">
+				<f:facet name="header"><h:outputLabel value="acceptance" /></f:facet>
+				<h:outputText value="#{story.acceptance}" />
+				<f:facet name="footer">#{" "}</f:facet>
+			</h:column>
+			<h:column>
+				<f:facet name="header"><h:outputLabel value="actions" /></f:facet>
+				<h:commandButton action="#{storiesMB.edit}" value="edit ..." immediate="true" />
+				<h:commandButton action="#{storiesMB.remove}" value="remove" immediate="true" />
+				<h:commandButton action="#{storiesMB.showTasks}" value="tasks" immediate="true" />
+				<f:facet name="footer">#{" "}</f:facet>
+			</h:column>
+		</h:dataTable>
+    </h:form>
+    <h:form id="frmNewTask">
+	    <h:commandLink action="stories" value="#{'go back stories'}" immediate="true" />
+    	<h2>New Task</h2>
+		<h:panelGrid columns="3" style="width: 300px">
+				<h:outputLabel value="#{i18n['tasks.label.story']}:" for="otStory"  />
+				<h:outputText id="otStory" value="#{tasksMB.taskToSave.story.name}" />
+				<h:message for="otStory" />
+				<h:outputLabel value="#{i18n['tasks.label.name']}:" for="itName"  />
+				<h:inputText id="itName" value="#{tasksMB.taskToSave.name}" required="true" requiredMessage="Descreva a tarefa" />
+				<h:message for="itName" />
+				<f:verbatim></f:verbatim>
+				<f:verbatim></f:verbatim>
+				<h:commandButton action="#{tasksMB.save}" value="save" />
+		</h:panelGrid>
+    </h:form>
+    <h:form id="frmTasks">
+    	<h2>Tasks</h2>
+		<h:panelGrid columns="3" style="width: 300px">
+				<h:outputLabel value="Nao ha tarefas para esta estoria" style="color: orange"  rendered="#{tasksMB.dmTasks.rowCount eq 0}"/>
+		</h:panelGrid>
+		<h:dataTable value="#{tasksMB.dmTasks}" var="task" width="300px" rendered="#{tasksMB.dmTasks.rowCount > 0}">
+			<h:column headerClass="textColumn">
+				<f:facet name="header"><h:outputLabel value="#" /></f:facet>
+				<h:outputText value="#{tasksMB.dmTasks.rowIndex + 1}" />
+				<f:facet name="footer">#{""}</f:facet>
+			</h:column>
+			<h:column headerClass="textColumn">
+				<f:facet name="header"><h:outputLabel value="name" /></f:facet>
+				<h:outputText value="#{task.name}" />
+				<f:facet name="footer">#{tasksMB.dmTasks.rowCount}#{" tasks"}</f:facet>
+			</h:column>
+			<h:column>
+				<f:facet name="header"><h:outputLabel value="actions" /></f:facet>
+				<h:commandButton action="#{tasksMB.edit}" value="edit ..." immediate="true" />
+				<h:commandButton action="#{tasksMB.remove}" value="remove" immediate="true" />
+				<f:facet name="footer">#{" "}</f:facet>
+			</h:column>
+		</h:dataTable>
+    </h:form>
+</ui:define>
+</ui:composition>
+</html>  
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/burndown.xhtml b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/burndown.xhtml
new file mode 100644
index 0000000..fccc513
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/burndown.xhtml
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<html xmlns="http://www.w3.org/1999/xhtml"
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:jsfcomps="http://www.java.net/scrumtoys/jsfcomps" 
+      xmlns:appez="http://java.sun.com/jsf/composite/components" >
+<h:head>
+    <title>#{"Burndown"}</title>
+    <h:outputStylesheet library="css/1_1" name="app.css"/>
+</h:head>
+<h:body>
+    <h:outputScript library="javax.faces" name="ajax.js" target="head"/>
+	<h:messages errorClass="errorMsgs" infoClass="infoMsgs" />
+	<appez:title id="tituloDashboard" text="#{'Burndown'}" />
+	<h:form>
+		<h:outputLabel value="Sprint:" for="somSprints" />
+		<h:selectOneMenu id="somSprints" value="#{burndownMB.selectedSprintId}">
+			<f:selectItems value="#{burndownMB.siSprints}"/>
+		</h:selectOneMenu>
+		<h:message for="somSprints" />
+		<h:commandButton action="#{burndownMB.update}" value="Update" />
+		<h:panelGrid columns="1">
+		<h:outputText value="#{burndownMB.selectedSprint.name}" />
+		<jsfcomps:burndown value="#{burndownMB.selectedSprint}" />
+		<jsfcomps:test />
+		</h:panelGrid>
+	</h:form>
+</h:body>
+</html>
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/contracts/appBlueSkin/app.css b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/contracts/appBlueSkin/app.css
new file mode 100644
index 0000000..9974a39
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/contracts/appBlueSkin/app.css
@@ -0,0 +1,53 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+body {
+	background-color: orange;
+}
+
+span.error {
+    color: red;
+    font-size: 22px;
+}
+
+h1 {
+	font-family: serif;
+	color: white;
+}
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/contracts/appBlueSkin/appBlueSkin.css b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/contracts/appBlueSkin/appBlueSkin.css
new file mode 100644
index 0000000..2bc92b7
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/contracts/appBlueSkin/appBlueSkin.css
@@ -0,0 +1,259 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+div.navBarClass span, div.navBarClass {
+    /* Blue 100%*/
+    color:#0069AA;
+    padding:10px;
+}
+
+.tituloForm {
+    font-size: 10pt;
+    /* Blue 100%*/
+    color: #0069AA;;
+    font-weight:bold;
+    padding:5px;
+    margin:5px;
+}
+input.botaoPostIt{
+    font-size: 8pt;
+    /* Blue 100%*/
+    color: #0069AA;
+    font-weight:bold;
+    background-color:white;
+
+}
+
+.inputPattern{
+  /* Blue 20%*/
+  color: #B3D4E7;
+}
+label {
+  font-size: 12px;
+  /* Blue 100%*/
+  color: #0069AA;
+  text-align: left;
+  border:none;
+
+}
+
+input, select,textarea {
+  font-family: Arial, Helvetica, sans-serif;
+  font-size: 12px;
+  /* Orange 100% */
+  color: #0069AA;
+  text-align: left;
+  background-color:white;
+  border-style:ridge;
+  /*lightgray*/
+  border:1px solid #d3d3d3;
+  padding:4px;
+  margin:4px;
+  margin-bottom:4px;
+  font-weight:normal;
+}
+
+.datatableHeader{
+    /* Orange 100% */
+    background-color:#0069AA;
+    color:white;
+    font-size:12pt;
+    font-weight:normal;
+    padding:10px;
+    margin:10px;
+}
+
+.datatableRow2{
+    /* Blue 20% */
+    background-color:#B3D4E7;
+    font-size:12px;
+    color:black;
+    padding:15px;
+    margin:15px;
+    text-align:center;
+
+}
+
+.navigationLink{
+    text-decoration:none;
+    text-align:right;
+    /* Blue 100% */
+    color:#0069AA;
+}
+
+/*Diferent datatable lines / oposite*/
+.datatableRow{
+    background-color:white;
+    color:black;
+    font-size:12px;
+    text-align:center;
+}
+
+table.menuTable{
+    /* it seems its not necessary */
+    border-collapse:collapse;
+    vertical-align:middle;
+    text-align: left;
+}
+
+table.menuTable tr td{
+    vertical-align:middle;
+    padding-bottom:0px;
+    /*space between menu itens */
+    width:168px;
+
+}
+
+.menu a{
+    text-decoration: none;
+    font-family: Arial, Helvetica, sans-serif ;
+    font-size: 12px;
+    padding: 10px;
+    /* Blue 100% */
+    color: #0069AA;
+}
+
+/* menuItem and menu spacing */
+.menu ul{
+    text-align:left;
+    padding:0pt;
+    margin:0pt;
+    /* sub menu item background */
+    background-color:white;
+
+    /* fundo transparente
+    background-image:url("../resources/images/menu/Transparency.png;");
+    */
+}
+/* submenu div */
+.menu{
+    display:none;
+    position:absolute;
+    font-family: Arial, Helvetica, sans-serif;
+    font-size: 12px;
+    font-weight: bold;
+
+}
+
+/* submenu item*/
+.menu li{
+    /* white background for avoiding transparency on submenu item */
+    /*background-color:white;*/
+
+    list-style-type: none;
+    display: block;
+    padding:10px;
+    /* altura do submenu */
+    width: 142px;
+    /* Orange 100% */
+    border:1px solid #0069AA;
+
+    font-weight:bold;
+
+}
+
+
+.menuhandler {
+    /* Orange 100% */
+    border:1px solid #0069AA;
+    color:white;
+
+    text-decoration:none;
+    display: block;
+    font-family: Arial, Helvetica, sans-serif;
+    font-size: 12px;
+    width: 141px;
+    vertical-align:middle;
+    text-align: left;
+    font-weight: bold;
+    padding:10px;
+    background-color:#0069AA;
+    /* fundo transparente
+    background-image:url("../resources/images/menu/Transparency.png;");
+    color:white;
+    */
+}
+.selectProject{
+    vertical-align:bottom;
+    font-family: Arial, Helvetica, sans-serif;
+    font-size: 12px;
+    font-weight: bold;
+    text-align:center;
+
+}
+
+.postitComponent{
+        background-image:url("../resources/images/postits/novos/postit_azul_150x145.png");
+        width:150px;
+        height:145px;
+        font-size: 14px;
+        text-align:center;
+        color:white;
+}
+
+.postitComponent tr td{
+
+    padding: 5pt;
+    padding-top: 15pt;
+    vertical-align:top;
+
+}
+
+.postitComponent a{
+    text-decoration:none;
+    color:white;
+}
+
+.bigPostitComponent{
+        background-image:url("../resources/images/postits/novos/postit_azul_315x150.png");
+        background-repeat:no-repeat;
+        width:315px;
+        height:150px;
+        font-size: 14px;
+        text-align:center;
+        color:white;
+}
+
+.bigPostitComponent tr td{
+
+    padding: 5pt;
+    vertical-align:top;
+
+}
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/contracts/appBlueSkin/common.css b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/contracts/appBlueSkin/common.css
new file mode 100644
index 0000000..18984fe
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/contracts/appBlueSkin/common.css
@@ -0,0 +1,227 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+div.navBarClass a{
+    background-color: white;
+    vertical-align: middle;
+    padding:10px;
+    color:gray;
+    text-decoration:none;
+}
+
+/* Whiteboard */
+
+.tableHeader{
+    background-image:url("../resources/images/lousaNova/quadroNegro_top_990x80.png");
+    background-repeat:no-repeat;
+    height:80px;
+    width:100%;
+    margin: 0px;
+    padding: 0px;
+
+}
+
+table.tableBody{
+  width:990px;
+  background-image:url("../resources/images/lousaNova/quadroNegro_meio_990x10.png;");
+  margin: 0px;
+  padding: 0px;
+  border-collapse:collapse;
+  border-spacing:0pt;    
+  background-repeat:repeat-y;
+}
+
+
+table.tableBody tr td{
+    /* important to make content aligned inside the table*/
+  vertical-align:top;    
+  
+}
+
+td.tableFooter{
+    width:990px;
+    height:120px;
+    background-image:url("../resources/images/lousaNova/quadroNegro_top_990x80");
+    background-repeat:no-repeat;
+    margin:0px;
+    padding:0px;
+
+}
+
+
+td.footerForm{
+    text-align:center;
+
+}
+
+.errorMessage{
+  color: red;
+  font-size: 12px;
+}
+
+td.formLabel, label{
+    margin-left:15pt;
+
+}
+
+.formLabel {
+    width:30%;
+    text-align: right;
+    background-position: left;
+    background-repeat:no-repeat;
+
+}
+.formInput{
+    font-size: 12px;
+}
+
+td{
+    font-family: Arial, Helvetica, sans-serif;
+}
+
+.datatable {
+    border-collapse:collapse;
+}
+.datatable tr td{
+    padding:5px;
+    margin:5px;
+}
+
+.dataTableFirstColumn{
+    font-weight:bold;
+}
+
+
+.postitComponentYellow{
+        background-image:url("../resources/images/postits/novos/postit_amar_150x145.png");
+        width:150px;
+        height:145px;
+        font-size: 14px;
+        text-align:center;
+        color:black;
+}
+
+
+.postItComponentYellow a {
+    color:black;
+    text-decoration:none;
+}
+
+.postitComponentYellow tr td{
+    padding: 5pt;
+    padding-top: 15pt;
+    vertical-align:top;
+}
+
+
+.postitComponentRed{
+        background-image:url("../resources/images/postits/novos/postit_verm_150x145.png");
+        width:150px;
+        height:145px;
+        font-size: 14px;
+        text-align:center;
+        color:white;
+}
+
+
+.postitComponentRed tr td{
+    padding: 5pt;
+    padding-top: 15pt;
+    vertical-align:top;
+}
+
+.postItComponentRed a {
+    color:white;
+    text-decoration:none;
+}
+
+.postitComponentBlue{
+        background-image:url("../resources/images/postits/novos/postit_azul_150x145.png");
+        width:150px;
+        height:145px;
+        font-size: 14px;
+        text-align:center;
+        color:white;
+}
+
+.postitComponentBlue tr td{
+    padding: 5pt;
+    padding-top: 15pt;
+    vertical-align:top;
+}
+
+.postItComponentBlue a {
+    color:white;
+    text-decoration:none;
+}
+.postitComponentOrange{
+        background-image:url("../resources/images/postits/novos/postit_lara_150x145.png");
+        width:150px;
+        height:145px;
+        font-size: 14px;
+        text-align:center;
+        color:black;
+}
+
+
+.postitComponentOrange tr td{
+    padding: 5pt;
+    padding-top: 15pt;
+    vertical-align:top;
+}
+
+.postItComponentOrange a {
+    color:black;
+    text-decoration:none;
+}
+
+
+.postitLabel{
+    font-weight:bold;
+    font-size:16px;
+    text-align:right;
+    width:30%
+}
+
+.postItInfo{
+    width:70%;
+    text-align:left;
+}
+
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/contracts/appBlueSkin/footer.xhtml b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/contracts/appBlueSkin/footer.xhtml
new file mode 100644
index 0000000..0391958
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/contracts/appBlueSkin/footer.xhtml
@@ -0,0 +1,53 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+    <ui:composition>
+
+        <div align="center" style="width: 100%">
+            <h:graphicImage value="/resources/images/SoccerDukeSmall.png" width="59" height="47" title="Developed by: Alberto Lemos (Spock), Andre Frota, Ed Burns, Vinicius Nunes, Vinicius Senger e Yara Senger"></h:graphicImage>
+        </div>
+    </ui:composition>
+</html>
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/contracts/appBlueSkin/template.xhtml b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/contracts/appBlueSkin/template.xhtml
new file mode 100644
index 0000000..f880b81
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/contracts/appBlueSkin/template.xhtml
@@ -0,0 +1,106 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:scrum="http://java.sun.com/jsf/composite/components">
+
+    <h:head>
+        <h:outputStylesheet name="appBlueSkin.css"/>
+        <h:outputStylesheet name="common.css"/>
+        <h:outputScript     library="js" name="menu.js" target="head"/>
+        <h:outputScript     library="javax.faces" name="jsf.js"/>
+        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+        <title>
+            <ui:insert name="pageTitle">
+                <h:outputText value="#{i18n['template.title']}"></h:outputText>
+            </ui:insert>
+        </title>
+    </h:head>
+
+    <h:body>
+        <div align="center">
+            <h:panelGrid  width="990">
+                <scrum:menu>
+                    <ui:param name="image" value="/resources/images/menu/barraSuperior-04.png"></ui:param>
+                </scrum:menu>
+                <h:form id="navigationBar">
+                    <div class="navBarClass">
+                        <h:panelGrid columns="3" rendered="#{authManager.username != null}">
+                            <h:outputText value="User: " />
+                            <h:outputText value="#{authManager.username}" />
+                            <h:commandLink id="logout" value="Logout" action="#{authManager.logout}" />
+                        </h:panelGrid>
+                        <br/>
+                        <ui:insert name="navigationBar"></ui:insert>
+                    </div>
+                </h:form>
+
+                <h:panelGrid columns="1"  headerClass="tableHeader" footerClass="tableFooter" cellpadding="0" cellspacing="0">
+                    <f:facet name="header">
+                        <h:outputText value=""></h:outputText>
+                    </f:facet>
+
+                    <table class="tableBody"><tr><td>
+                        <table align="center">
+                            <tr><td>
+                                    <ui:insert name="content"></ui:insert>
+                            </td></tr>
+                        </table>
+                    </td></tr></table>
+
+
+                    <f:facet name="footer">
+                        <h:graphicImage value="/resources/images/lousaNova/quadroNegro_botton_990x120.png" ></h:graphicImage>
+                    </f:facet>
+                </h:panelGrid>
+
+                <h:panelGroup>
+                    <ui:include src="./footer.xhtml" />
+                </h:panelGroup>
+            </h:panelGrid>
+        </div>
+    </h:body>
+</html>  
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/contracts/appOrangeSkin/app.css b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/contracts/appOrangeSkin/app.css
new file mode 100644
index 0000000..9974a39
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/contracts/appOrangeSkin/app.css
@@ -0,0 +1,53 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+body {
+	background-color: orange;
+}
+
+span.error {
+    color: red;
+    font-size: 22px;
+}
+
+h1 {
+	font-family: serif;
+	color: white;
+}
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/contracts/appOrangeSkin/appOrangeSkin.css b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/contracts/appOrangeSkin/appOrangeSkin.css
new file mode 100644
index 0000000..c70590f
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/contracts/appOrangeSkin/appOrangeSkin.css
@@ -0,0 +1,265 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+div.navBarClass span, div.navBarClass {
+    /* Orange 100%*/
+    color:#F78E1E;
+    padding:10px;
+}
+
+
+.tituloForm {
+    font-size: 10pt;
+    /* Orange 100%*/
+    color: #F78E1E;;
+    font-weight:bold;
+    padding:5px;
+    margin:5px;
+}
+input.botaoPostIt{
+    font-size: 8pt;
+    /* Orange 100%*/
+    color: #F78E1E;
+    font-weight:bold;
+    background-color:white;
+
+}
+
+.inputPattern{
+  /* Orange 20%*/
+  color: #FCDEBC;
+}
+label {
+  font-size: 12px;
+  /* Orange 100%*/
+  color: #F78E1E;
+  text-align: left;
+  border:none;
+
+}
+
+input, select,textarea {
+  font-family: Arial, Helvetica, sans-serif;
+  font-size: 12px;
+  /* Orange 100% */
+  color: #F78E1E;
+  text-align: left;
+  background-color:white;
+  border-style:ridge;
+  /*lightgray*/
+  border:1px solid #d3d3d3;
+  padding:4px;
+  margin:4px;
+  margin-bottom:4px;
+  font-weight:normal;
+}
+
+.datatableHeader{
+    /* Orange 100% */
+    background-color:#F78E1E;
+    color:white;
+    font-size:12pt;
+    font-weight:normal;
+    padding:10px;
+    margin:10px;
+}
+
+.datatableRow2{
+    /* Orange 20% */
+    background-color:#FCDEBC;
+    font-size:12px;
+    color:black;
+    padding:15px;
+    margin:15px;
+    text-align:center;
+
+}
+
+.navigationLink{
+    text-decoration:none;
+    text-align:right;
+    /* Orange 100% */
+    color:#F78E1E;
+}
+
+/*Diferent datatable lines / oposite*/
+.datatableRow{
+    background-color:white;
+    color:black;
+    font-size:12px;
+    text-align:center;
+}
+
+table.menuTable{
+    /* it seems its not necessary */
+    border-collapse:collapse;
+    vertical-align:middle;
+    text-align: left;
+}
+
+table.menuTable tr td{
+    vertical-align:middle;
+    padding-bottom:0px;
+    /*space between menu itens */
+    width:168px;
+    
+}
+
+.menu a{
+    text-decoration: none;
+    font-family: Arial, Helvetica, sans-serif ;
+    font-size: 12px;
+    padding: 10px;
+    /* Orange 100% */
+    color: #F78E1E;
+}
+
+/* menuItem and menu spacing */
+.menu ul{
+    text-align:left;
+    padding:0pt;
+    margin:0pt;
+    /* sub menu item background */
+    background-color:white;
+
+    /* fundo transparente
+    background-image:url("../resources/images/menu/Transparency.png;");
+    */
+}
+/* submenu div */
+.menu{
+    display:none;
+    position:absolute;
+    font-family: Arial, Helvetica, sans-serif;
+    font-size: 12px;
+    font-weight: bold;
+
+}
+
+/* submenu item*/
+.menu li{
+    /* white background for avoiding transparency on submenu item */
+    /*background-color:white;*/
+
+    list-style-type: none;
+    display: block;
+    padding:10px;
+    /* altura do submenu */
+    width: 142px;
+    /* Orange 100% */
+    border:1px solid #F78E1E;
+    
+    font-weight:bold;
+
+}
+
+
+.menuhandler {
+    /* Orange 100% */
+    border:1px solid #F78E1E;
+    color:white;
+
+    text-decoration:none;
+    display: block;
+    font-family: Arial, Helvetica, sans-serif;
+    font-size: 12px;
+    width: 141px;
+    vertical-align:middle;
+    text-align: left;
+    font-weight: bold;
+    padding:10px;
+    background-color:#F78E1E;
+    /* fundo transparente
+    background-image:url("../resources/images/menu/Transparency.png;");
+    color:white;
+    */
+}
+.selectProject{
+    vertical-align:bottom;
+    font-family: Arial, Helvetica, sans-serif;
+    font-size: 12px;
+    font-weight: bold;
+    text-align:center;
+    
+}
+
+.postitComponent{
+        background-image:url("../resources/images/postits/novos/postit_lara_150x145.png");
+        width:150px;
+        height:145px;
+        font-size: 14px;
+        text-align:center;
+        color:white;
+}
+
+.postitComponent a{
+    text-decoration:none;
+    color:black;
+}
+
+.postitComponent tr td{
+
+    padding: 5pt;
+    padding-top: 15pt;
+    vertical-align:top;
+
+}
+ 
+.bigPostitComponent{
+        background-image:url("../resources/images/postits/novos/postit_lara_315x150.png");
+        background-repeat:no-repeat;
+        width:315px;
+        height:150px;
+        font-size: 14px;
+        text-align:center;
+        color:white;
+}
+
+.bigPostitComponent tr td{
+
+    padding: 5pt;
+    vertical-align:top;
+
+}
+.postitComponent a{
+    text-decoration:none;
+    color:black;
+}
+
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/contracts/appOrangeSkin/common.css b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/contracts/appOrangeSkin/common.css
new file mode 100644
index 0000000..18984fe
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/contracts/appOrangeSkin/common.css
@@ -0,0 +1,227 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+div.navBarClass a{
+    background-color: white;
+    vertical-align: middle;
+    padding:10px;
+    color:gray;
+    text-decoration:none;
+}
+
+/* Whiteboard */
+
+.tableHeader{
+    background-image:url("../resources/images/lousaNova/quadroNegro_top_990x80.png");
+    background-repeat:no-repeat;
+    height:80px;
+    width:100%;
+    margin: 0px;
+    padding: 0px;
+
+}
+
+table.tableBody{
+  width:990px;
+  background-image:url("../resources/images/lousaNova/quadroNegro_meio_990x10.png;");
+  margin: 0px;
+  padding: 0px;
+  border-collapse:collapse;
+  border-spacing:0pt;    
+  background-repeat:repeat-y;
+}
+
+
+table.tableBody tr td{
+    /* important to make content aligned inside the table*/
+  vertical-align:top;    
+  
+}
+
+td.tableFooter{
+    width:990px;
+    height:120px;
+    background-image:url("../resources/images/lousaNova/quadroNegro_top_990x80");
+    background-repeat:no-repeat;
+    margin:0px;
+    padding:0px;
+
+}
+
+
+td.footerForm{
+    text-align:center;
+
+}
+
+.errorMessage{
+  color: red;
+  font-size: 12px;
+}
+
+td.formLabel, label{
+    margin-left:15pt;
+
+}
+
+.formLabel {
+    width:30%;
+    text-align: right;
+    background-position: left;
+    background-repeat:no-repeat;
+
+}
+.formInput{
+    font-size: 12px;
+}
+
+td{
+    font-family: Arial, Helvetica, sans-serif;
+}
+
+.datatable {
+    border-collapse:collapse;
+}
+.datatable tr td{
+    padding:5px;
+    margin:5px;
+}
+
+.dataTableFirstColumn{
+    font-weight:bold;
+}
+
+
+.postitComponentYellow{
+        background-image:url("../resources/images/postits/novos/postit_amar_150x145.png");
+        width:150px;
+        height:145px;
+        font-size: 14px;
+        text-align:center;
+        color:black;
+}
+
+
+.postItComponentYellow a {
+    color:black;
+    text-decoration:none;
+}
+
+.postitComponentYellow tr td{
+    padding: 5pt;
+    padding-top: 15pt;
+    vertical-align:top;
+}
+
+
+.postitComponentRed{
+        background-image:url("../resources/images/postits/novos/postit_verm_150x145.png");
+        width:150px;
+        height:145px;
+        font-size: 14px;
+        text-align:center;
+        color:white;
+}
+
+
+.postitComponentRed tr td{
+    padding: 5pt;
+    padding-top: 15pt;
+    vertical-align:top;
+}
+
+.postItComponentRed a {
+    color:white;
+    text-decoration:none;
+}
+
+.postitComponentBlue{
+        background-image:url("../resources/images/postits/novos/postit_azul_150x145.png");
+        width:150px;
+        height:145px;
+        font-size: 14px;
+        text-align:center;
+        color:white;
+}
+
+.postitComponentBlue tr td{
+    padding: 5pt;
+    padding-top: 15pt;
+    vertical-align:top;
+}
+
+.postItComponentBlue a {
+    color:white;
+    text-decoration:none;
+}
+.postitComponentOrange{
+        background-image:url("../resources/images/postits/novos/postit_lara_150x145.png");
+        width:150px;
+        height:145px;
+        font-size: 14px;
+        text-align:center;
+        color:black;
+}
+
+
+.postitComponentOrange tr td{
+    padding: 5pt;
+    padding-top: 15pt;
+    vertical-align:top;
+}
+
+.postItComponentOrange a {
+    color:black;
+    text-decoration:none;
+}
+
+
+.postitLabel{
+    font-weight:bold;
+    font-size:16px;
+    text-align:right;
+    width:30%
+}
+
+.postItInfo{
+    width:70%;
+    text-align:left;
+}
+
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/contracts/appOrangeSkin/footer.xhtml b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/contracts/appOrangeSkin/footer.xhtml
new file mode 100644
index 0000000..0391958
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/contracts/appOrangeSkin/footer.xhtml
@@ -0,0 +1,53 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+    <ui:composition>
+
+        <div align="center" style="width: 100%">
+            <h:graphicImage value="/resources/images/SoccerDukeSmall.png" width="59" height="47" title="Developed by: Alberto Lemos (Spock), Andre Frota, Ed Burns, Vinicius Nunes, Vinicius Senger e Yara Senger"></h:graphicImage>
+        </div>
+    </ui:composition>
+</html>
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/contracts/appOrangeSkin/template.xhtml b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/contracts/appOrangeSkin/template.xhtml
new file mode 100644
index 0000000..4eb54f4
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/contracts/appOrangeSkin/template.xhtml
@@ -0,0 +1,106 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:scrum="http://java.sun.com/jsf/composite/components">
+
+    <h:head>
+        <h:outputStylesheet name="appOrangeSkin.css"/>
+        <h:outputStylesheet name="common.css"/>
+        <h:outputScript     library="js" name="menu.js" target="head"/>
+        <h:outputScript     library="javax.faces" name="jsf.js"/>
+        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+        <title>
+            <ui:insert name="pageTitle">
+                <h:outputText value="#{i18n['template.title']}"></h:outputText>
+            </ui:insert>
+        </title>
+    </h:head>
+
+    <h:body>
+        <div align="center">
+            <h:panelGrid  width="990">
+                <scrum:menu>
+                    <ui:param name="image" value="/resources/images/menu/barraSuperior-04.png"></ui:param>
+                </scrum:menu>
+                <h:form id="navigationBar">
+                    <div class="navBarClass">
+                        <h:panelGrid columns="3" rendered="#{authManager.username != null}">
+                            <h:outputText value="User: " />
+                            <h:outputText value="#{authManager.username}" />
+                            <h:commandLink id="logout" value="Logout" action="#{authManager.logout}" />
+                        </h:panelGrid>
+                        <br/>
+                        <ui:insert name="navigationBar"></ui:insert>
+                    </div>
+                </h:form>
+
+                <h:panelGrid columns="1"  headerClass="tableHeader" footerClass="tableFooter" cellpadding="0" cellspacing="0">
+                    <f:facet name="header">
+                        <h:outputText value=""></h:outputText>
+                    </f:facet>
+
+                    <table class="tableBody"><tr><td>
+                        <table align="center">
+                            <tr><td>
+                                    <ui:insert name="content"></ui:insert>
+                            </td></tr>
+                        </table>
+                    </td></tr></table>
+
+
+                    <f:facet name="footer">
+                        <h:graphicImage value="/resources/images/lousaNova/quadroNegro_botton_990x120.png" ></h:graphicImage>
+                    </f:facet>
+                </h:panelGrid>
+
+                <h:panelGroup>
+                    <ui:include src="./footer.xhtml" />
+                </h:panelGroup>
+            </h:panelGrid>
+        </div>
+    </h:body>
+</html>  
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/contracts/appRedSkin/app.css b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/contracts/appRedSkin/app.css
new file mode 100644
index 0000000..9974a39
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/contracts/appRedSkin/app.css
@@ -0,0 +1,53 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+body {
+	background-color: orange;
+}
+
+span.error {
+    color: red;
+    font-size: 22px;
+}
+
+h1 {
+	font-family: serif;
+	color: white;
+}
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/contracts/appRedSkin/appRedSkin.css b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/contracts/appRedSkin/appRedSkin.css
new file mode 100644
index 0000000..39e91d5
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/contracts/appRedSkin/appRedSkin.css
@@ -0,0 +1,263 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+div.navBarClass span, div.navBarClass {
+  /* Red 100%*/
+    color: #EF3E42;;
+    padding:10px;
+}
+
+.tituloForm {
+    font-size: 10pt;
+    /* Red 100%*/
+    color: #EF3E42;;
+    font-weight:bold;
+    padding:5px;
+    margin:5px;
+}
+
+input.botaoPostIt{
+    font-size: 8pt;
+    /* Red 100%*/
+    color: #EF3E42;
+    font-weight:bold;
+    background-color:white;
+
+}
+
+.inputPattern{
+  /* Red 20%*/
+  color: #F8C6C7;
+
+}
+
+label {
+  font-size: 10pt;
+  /* Red 100%*/
+  color: #EF3E42;
+  text-align: left;
+  border:none;
+
+}
+
+input, select,textarea {
+  font-family: Arial, Helvetica, sans-serif;
+  font-size: 12px;
+  /* Red 100% */
+  color: #EF3E42;
+  text-align: left;
+  background-color:white;
+  border-style:ridge;
+  /*lightgray*/
+  border:1px solid #d3d3d3;
+  padding:4px;
+  margin:4px;
+  margin-bottom:4px;
+  font-weight:normal;
+}
+
+.datatableHeader{
+    /* Red 100% */
+    background-color:#EF3E42;
+    color:white;
+
+    font-size:12pt;
+    font-weight:normal;
+    padding:10px;
+    margin:10px;
+}
+
+.datatableRow2{
+    /* blue 20% */
+    background-color:#F8C6C7;
+    font-size:12px;
+    color:black;
+    padding:15px;
+    margin:15px;
+    text-align:center;
+
+}
+
+.navigationLink{
+    text-decoration:none;
+    text-align:right;
+    /* Red 100% */
+    color:#EF3E42;
+}
+
+/*Diferent datatable lines / oposite*/
+.datatableRow{
+    background-color:white;
+    color:black;
+    font-size:12px;
+    text-align:center;
+}
+
+table.menuTable{
+    /* it seems its not necessary */
+    border-collapse:collapse;
+    vertical-align:middle;
+    text-align: left;
+}
+
+table.menuTable tr td{
+    vertical-align:middle;
+    padding-bottom:0px;
+    /*space between menu itens */
+    width:168px;
+}
+
+.menu a{
+    text-decoration: none;
+    font-family: Arial, Helvetica, sans-serif ;
+    font-size: 12px;
+    padding: 10px;
+    /* Red 100% */
+    color: #EF3E42;
+}
+
+/* menuItem and menu spacing */
+.menu ul{
+    text-align:left;
+    padding:0pt;
+    margin:0pt;
+    /* sub menu item background */
+    background-color:white;
+
+    /* fundo transparente
+    background-image:url("../resources/images/menu/Transparency.png;");
+    */
+}
+/* submenu div */
+.menu{
+    display:none;
+    position:absolute;
+    font-family: Arial, Helvetica, sans-serif;
+    font-size: 12px;
+    font-weight: bold;
+
+}
+
+/* submenu item*/
+.menu li{
+    /* white background for avoiding transparency on submenu item */
+    /*background-color:white;*/
+
+    list-style-type: none;
+    display: block;
+    padding:10px;
+    /* altura do submenu */
+    width: 142px;
+    /* Red 100% */
+    border:1px solid #EF3E42;    
+    font-weight:bold;
+
+}
+
+
+.menuhandler {
+    /* Red 100% */
+    border:1px solid #EF3E42;
+    color:white;
+
+    text-decoration:none;
+    display: block;
+    font-family: Arial, Helvetica, sans-serif;
+    font-size: 12px;
+    width: 141px;
+    vertical-align:middle;
+    text-align: left;
+    font-weight: bold;
+    padding:10px;
+    background-color:#EF3E42;
+    /* fundo transparente
+    background-image:url("../resources/images/menu/Transparency.png;");
+    color:white;
+    */
+
+
+}
+
+.selectProject{
+    vertical-align:middle;        
+    font-family: Arial, Helvetica, sans-serif;
+    font-size: 12px;
+    font-weight: bold;
+    text-align:center;
+    
+}
+.postitComponent{
+        background-image:url("../resources/images/postits/novos/postit_verm_150x145.png");
+        width:150px;
+        height:145px;
+        font-size: 14px;
+        text-align:center;
+        color:white;
+}
+
+.postitComponent tr td{
+
+    padding: 5pt;
+    padding-top: 15pt;
+    vertical-align:top;
+
+}
+
+.bigPostitComponent{
+        background-image:url("../resources/images/postits/novos/postit_verm_315x150.png");
+        background-repeat:no-repeat;
+        width:315px;
+        height:150px;
+        font-size: 14px;
+        text-align:center;
+        color:white;
+}
+
+.bigPostitComponent tr td{
+
+    padding: 5pt;
+    vertical-align:top;
+
+}
+
+.postitComponent a{
+    text-decoration:none;
+    color:white;
+}
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/contracts/appRedSkin/common.css b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/contracts/appRedSkin/common.css
new file mode 100644
index 0000000..18984fe
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/contracts/appRedSkin/common.css
@@ -0,0 +1,227 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+div.navBarClass a{
+    background-color: white;
+    vertical-align: middle;
+    padding:10px;
+    color:gray;
+    text-decoration:none;
+}
+
+/* Whiteboard */
+
+.tableHeader{
+    background-image:url("../resources/images/lousaNova/quadroNegro_top_990x80.png");
+    background-repeat:no-repeat;
+    height:80px;
+    width:100%;
+    margin: 0px;
+    padding: 0px;
+
+}
+
+table.tableBody{
+  width:990px;
+  background-image:url("../resources/images/lousaNova/quadroNegro_meio_990x10.png;");
+  margin: 0px;
+  padding: 0px;
+  border-collapse:collapse;
+  border-spacing:0pt;    
+  background-repeat:repeat-y;
+}
+
+
+table.tableBody tr td{
+    /* important to make content aligned inside the table*/
+  vertical-align:top;    
+  
+}
+
+td.tableFooter{
+    width:990px;
+    height:120px;
+    background-image:url("../resources/images/lousaNova/quadroNegro_top_990x80");
+    background-repeat:no-repeat;
+    margin:0px;
+    padding:0px;
+
+}
+
+
+td.footerForm{
+    text-align:center;
+
+}
+
+.errorMessage{
+  color: red;
+  font-size: 12px;
+}
+
+td.formLabel, label{
+    margin-left:15pt;
+
+}
+
+.formLabel {
+    width:30%;
+    text-align: right;
+    background-position: left;
+    background-repeat:no-repeat;
+
+}
+.formInput{
+    font-size: 12px;
+}
+
+td{
+    font-family: Arial, Helvetica, sans-serif;
+}
+
+.datatable {
+    border-collapse:collapse;
+}
+.datatable tr td{
+    padding:5px;
+    margin:5px;
+}
+
+.dataTableFirstColumn{
+    font-weight:bold;
+}
+
+
+.postitComponentYellow{
+        background-image:url("../resources/images/postits/novos/postit_amar_150x145.png");
+        width:150px;
+        height:145px;
+        font-size: 14px;
+        text-align:center;
+        color:black;
+}
+
+
+.postItComponentYellow a {
+    color:black;
+    text-decoration:none;
+}
+
+.postitComponentYellow tr td{
+    padding: 5pt;
+    padding-top: 15pt;
+    vertical-align:top;
+}
+
+
+.postitComponentRed{
+        background-image:url("../resources/images/postits/novos/postit_verm_150x145.png");
+        width:150px;
+        height:145px;
+        font-size: 14px;
+        text-align:center;
+        color:white;
+}
+
+
+.postitComponentRed tr td{
+    padding: 5pt;
+    padding-top: 15pt;
+    vertical-align:top;
+}
+
+.postItComponentRed a {
+    color:white;
+    text-decoration:none;
+}
+
+.postitComponentBlue{
+        background-image:url("../resources/images/postits/novos/postit_azul_150x145.png");
+        width:150px;
+        height:145px;
+        font-size: 14px;
+        text-align:center;
+        color:white;
+}
+
+.postitComponentBlue tr td{
+    padding: 5pt;
+    padding-top: 15pt;
+    vertical-align:top;
+}
+
+.postItComponentBlue a {
+    color:white;
+    text-decoration:none;
+}
+.postitComponentOrange{
+        background-image:url("../resources/images/postits/novos/postit_lara_150x145.png");
+        width:150px;
+        height:145px;
+        font-size: 14px;
+        text-align:center;
+        color:black;
+}
+
+
+.postitComponentOrange tr td{
+    padding: 5pt;
+    padding-top: 15pt;
+    vertical-align:top;
+}
+
+.postItComponentOrange a {
+    color:black;
+    text-decoration:none;
+}
+
+
+.postitLabel{
+    font-weight:bold;
+    font-size:16px;
+    text-align:right;
+    width:30%
+}
+
+.postItInfo{
+    width:70%;
+    text-align:left;
+}
+
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/contracts/appRedSkin/footer.xhtml b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/contracts/appRedSkin/footer.xhtml
new file mode 100644
index 0000000..0391958
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/contracts/appRedSkin/footer.xhtml
@@ -0,0 +1,53 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+    <ui:composition>
+
+        <div align="center" style="width: 100%">
+            <h:graphicImage value="/resources/images/SoccerDukeSmall.png" width="59" height="47" title="Developed by: Alberto Lemos (Spock), Andre Frota, Ed Burns, Vinicius Nunes, Vinicius Senger e Yara Senger"></h:graphicImage>
+        </div>
+    </ui:composition>
+</html>
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/contracts/appRedSkin/template.xhtml b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/contracts/appRedSkin/template.xhtml
new file mode 100644
index 0000000..6a46744
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/contracts/appRedSkin/template.xhtml
@@ -0,0 +1,106 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:scrum="http://java.sun.com/jsf/composite/components">
+
+    <h:head>
+        <h:outputStylesheet name="appRedSkin.css"/>
+        <h:outputStylesheet name="common.css"/>
+        <h:outputScript     library="js" name="menu.js" target="head"/>
+        <h:outputScript     library="javax.faces" name="jsf.js"/>
+        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+        <title>
+            <ui:insert name="pageTitle">
+                <h:outputText value="#{i18n['template.title']}"></h:outputText>
+            </ui:insert>
+        </title>
+    </h:head>
+
+    <h:body>
+        <div align="center">
+            <h:panelGrid  width="990">
+                <scrum:menu>
+                    <ui:param name="image" value="/resources/images/menu/barraSuperior-04.png"></ui:param>
+                </scrum:menu>
+                <h:form id="navigationBar">
+                    <div class="navBarClass">
+                        <h:panelGrid columns="3" rendered="#{authManager.username != null}">
+                            <h:outputText value="User: " />
+                            <h:outputText value="#{authManager.username}" />
+                            <h:commandLink id="logout" value="Logout" action="#{authManager.logout}" />
+                        </h:panelGrid>
+                        <br/>
+                        <ui:insert name="navigationBar"></ui:insert>
+                    </div>
+                </h:form>
+
+                <h:panelGrid columns="1"  headerClass="tableHeader" footerClass="tableFooter" cellpadding="0" cellspacing="0">
+                    <f:facet name="header">
+                        <h:outputText value=""></h:outputText>
+                    </f:facet>
+
+                    <table class="tableBody"><tr><td>
+                        <table align="center">
+                            <tr><td>
+                                    <ui:insert name="content"></ui:insert>
+                            </td></tr>
+                        </table>
+                    </td></tr></table>
+
+
+                    <f:facet name="footer">
+                        <h:graphicImage value="/resources/images/lousaNova/quadroNegro_botton_990x120.png" ></h:graphicImage>
+                    </f:facet>
+                </h:panelGrid>
+
+                <h:panelGroup>
+                    <ui:include src="./footer.xhtml" />
+                </h:panelGroup>
+            </h:panelGrid>
+        </div>
+    </h:body>
+</html>  
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/contracts/appYellowSkin/app.css b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/contracts/appYellowSkin/app.css
new file mode 100644
index 0000000..9974a39
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/contracts/appYellowSkin/app.css
@@ -0,0 +1,53 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+body {
+	background-color: orange;
+}
+
+span.error {
+    color: red;
+    font-size: 22px;
+}
+
+h1 {
+	font-family: serif;
+	color: white;
+}
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/contracts/appYellowSkin/appYellowSkin.css b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/contracts/appYellowSkin/appYellowSkin.css
new file mode 100644
index 0000000..af20792
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/contracts/appYellowSkin/appYellowSkin.css
@@ -0,0 +1,266 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+div.navBarClass span, div.navBarClass {
+     /* Yellow 100%*/
+    color: #FDBB30;;
+    padding:10px;
+}
+
+.tituloForm {
+    font-size: 10pt;
+    /* Yellow 100%*/
+    color: #FDBB30;;
+    font-weight:bold;
+     padding:5px;
+    margin:5px;
+}
+input.botaoPostIt{
+    font-size: 8pt;
+    /* Yellow 100%*/
+    color: #FDBB30;
+    font-weight:bold;
+    background-color:white;
+
+}
+
+.inputPattern {
+    /* Yellow 20%*/
+  color: #FDEAC0
+}
+label {
+  font-size: 10pt;
+  /* Yellow 100%*/
+  color: #FDBB30;
+  text-align: left;
+  border:none;
+
+}
+
+input, select,textarea {
+  font-family: Arial, Helvetica, sans-serif;
+  font-size: 12px;
+  /* Yellow 100% */
+  color: #FDBB30;
+  text-align: left;
+  background-color:white;
+  border-style:ridge;
+  /*lightgray*/
+  border:1px solid #d3d3d3;
+  padding:4px;
+  margin:4px;
+  margin-bottom:4px;
+  font-weight:normal;
+}
+
+.datatableHeader{
+    /* Yellow 100% */
+    background-color:#FDBB30;
+    color:white;
+
+    font-size:12pt;
+    font-weight:normal;
+    padding:10px;
+    margin:10px;
+}
+
+.datatableRow2{
+    /* Yellow 20% */
+    background-color:#FDEAC0;
+    font-size:12px;
+    color:black;
+    padding:15px;
+    margin:15px;
+    text-align:center;
+
+}
+
+.navigationLink{
+    text-decoration:none;
+    text-align:right;
+    /* Yellow 100% */
+    color:#FDBB30;
+}
+
+
+/*Diferent datatable lines / oposite*/
+.datatableRow{
+    background-color:white;
+    color:black;
+    font-size:12px;
+    text-align:center;
+}
+.dataTableFirstColumn{
+    font-weight:bold;
+}
+
+table.menuTable{
+    /* it seems its not necessary */
+    border-collapse:collapse;
+    vertical-align:middle;
+    text-align: left;
+}
+
+table.menuTable tr td{
+    vertical-align:middle;
+    padding-bottom:0px;
+    /*space between menu itens */
+    width:168px;
+    
+    
+}
+
+.menu a{
+    text-decoration: none;
+    font-family: Arial, Helvetica, sans-serif ;
+    font-size: 12px;
+    padding: 10px;
+    /* Yellow 100% */
+    color: #FDBB30;
+}
+
+/* menuItem and menu spacing */
+.menu ul{
+    text-align:left;
+    padding:0pt;
+    margin:0pt;
+    /* sub menu item background */
+    background-color:white;
+
+    /* fundo transparente
+    background-image:url("../resources/images/menu/Transparency.png;");
+    */
+}
+/* submenu div */
+.menu{
+    display:none;
+    position:absolute;
+    font-family: Arial, Helvetica, sans-serif;
+    font-size: 12px;
+    font-weight: bold;
+
+}
+
+/* submenu item*/
+.menu li{
+    /* white background for avoiding transparency on submenu item */
+    /*background-color:white;*/
+
+    list-style-type: none;
+    display: block;
+    padding:10px;
+    /* altura do submenu */
+    width: 142px;
+    /* Yellow 100% */
+    border:1px solid #FDBB30;
+    
+    font-weight:bold;
+
+}
+
+
+.menuhandler {
+    /* Yellow 100% */
+    border:1px solid #FDBB30;
+    color:white;
+
+    text-decoration:none;
+    display: block;
+    font-family: Arial, Helvetica, sans-serif;
+    font-size: 12px;
+    width: 141px;
+    vertical-align:middle;
+    text-align: left;
+    font-weight: bold;
+    padding:10px;
+    background-color:#FDBB30;
+    /* fundo transparente
+    background-image:url("../resources/images/menu/Transparency.png;");
+    color:white;
+    */
+}
+
+.selectProject{
+    vertical-align:middle;
+    font-family: Arial, Helvetica, sans-serif;
+    font-size: 12px;
+    font-weight: bold;
+    text-align:center;
+    padding:3pt;
+}
+
+.postitComponent{
+        background-image:url("../resources/images/postits/novos/postit_amar_150x145.png");
+        width:150px;
+        height:145px;
+        font-size: 14px;
+        text-align:center;
+        color:white;
+}
+
+.postitComponent tr td{
+
+    padding: 5pt;
+    padding-top: 15pt;
+    vertical-align:top;
+
+}
+
+.bigPostitComponent{
+        background-image:url("../resources/images/postits/novos/postit_amar_315x150.png");
+        background-repeat:no-repeat;
+        width:315px;
+        height:150px;
+        font-size: 14px;
+        text-align:center;
+        color:white;
+}
+
+.bigPostitComponent tr td{
+
+    padding: 5pt;
+    vertical-align:top; 
+
+}
+.postitComponent a{
+    text-decoration:none;
+    color:black;
+}
+
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/contracts/appYellowSkin/common.css b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/contracts/appYellowSkin/common.css
new file mode 100644
index 0000000..18984fe
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/contracts/appYellowSkin/common.css
@@ -0,0 +1,227 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+div.navBarClass a{
+    background-color: white;
+    vertical-align: middle;
+    padding:10px;
+    color:gray;
+    text-decoration:none;
+}
+
+/* Whiteboard */
+
+.tableHeader{
+    background-image:url("../resources/images/lousaNova/quadroNegro_top_990x80.png");
+    background-repeat:no-repeat;
+    height:80px;
+    width:100%;
+    margin: 0px;
+    padding: 0px;
+
+}
+
+table.tableBody{
+  width:990px;
+  background-image:url("../resources/images/lousaNova/quadroNegro_meio_990x10.png;");
+  margin: 0px;
+  padding: 0px;
+  border-collapse:collapse;
+  border-spacing:0pt;    
+  background-repeat:repeat-y;
+}
+
+
+table.tableBody tr td{
+    /* important to make content aligned inside the table*/
+  vertical-align:top;    
+  
+}
+
+td.tableFooter{
+    width:990px;
+    height:120px;
+    background-image:url("../resources/images/lousaNova/quadroNegro_top_990x80");
+    background-repeat:no-repeat;
+    margin:0px;
+    padding:0px;
+
+}
+
+
+td.footerForm{
+    text-align:center;
+
+}
+
+.errorMessage{
+  color: red;
+  font-size: 12px;
+}
+
+td.formLabel, label{
+    margin-left:15pt;
+
+}
+
+.formLabel {
+    width:30%;
+    text-align: right;
+    background-position: left;
+    background-repeat:no-repeat;
+
+}
+.formInput{
+    font-size: 12px;
+}
+
+td{
+    font-family: Arial, Helvetica, sans-serif;
+}
+
+.datatable {
+    border-collapse:collapse;
+}
+.datatable tr td{
+    padding:5px;
+    margin:5px;
+}
+
+.dataTableFirstColumn{
+    font-weight:bold;
+}
+
+
+.postitComponentYellow{
+        background-image:url("../resources/images/postits/novos/postit_amar_150x145.png");
+        width:150px;
+        height:145px;
+        font-size: 14px;
+        text-align:center;
+        color:black;
+}
+
+
+.postItComponentYellow a {
+    color:black;
+    text-decoration:none;
+}
+
+.postitComponentYellow tr td{
+    padding: 5pt;
+    padding-top: 15pt;
+    vertical-align:top;
+}
+
+
+.postitComponentRed{
+        background-image:url("../resources/images/postits/novos/postit_verm_150x145.png");
+        width:150px;
+        height:145px;
+        font-size: 14px;
+        text-align:center;
+        color:white;
+}
+
+
+.postitComponentRed tr td{
+    padding: 5pt;
+    padding-top: 15pt;
+    vertical-align:top;
+}
+
+.postItComponentRed a {
+    color:white;
+    text-decoration:none;
+}
+
+.postitComponentBlue{
+        background-image:url("../resources/images/postits/novos/postit_azul_150x145.png");
+        width:150px;
+        height:145px;
+        font-size: 14px;
+        text-align:center;
+        color:white;
+}
+
+.postitComponentBlue tr td{
+    padding: 5pt;
+    padding-top: 15pt;
+    vertical-align:top;
+}
+
+.postItComponentBlue a {
+    color:white;
+    text-decoration:none;
+}
+.postitComponentOrange{
+        background-image:url("../resources/images/postits/novos/postit_lara_150x145.png");
+        width:150px;
+        height:145px;
+        font-size: 14px;
+        text-align:center;
+        color:black;
+}
+
+
+.postitComponentOrange tr td{
+    padding: 5pt;
+    padding-top: 15pt;
+    vertical-align:top;
+}
+
+.postItComponentOrange a {
+    color:black;
+    text-decoration:none;
+}
+
+
+.postitLabel{
+    font-weight:bold;
+    font-size:16px;
+    text-align:right;
+    width:30%
+}
+
+.postItInfo{
+    width:70%;
+    text-align:left;
+}
+
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/contracts/appYellowSkin/footer.xhtml b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/contracts/appYellowSkin/footer.xhtml
new file mode 100644
index 0000000..0391958
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/contracts/appYellowSkin/footer.xhtml
@@ -0,0 +1,53 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+    <ui:composition>
+
+        <div align="center" style="width: 100%">
+            <h:graphicImage value="/resources/images/SoccerDukeSmall.png" width="59" height="47" title="Developed by: Alberto Lemos (Spock), Andre Frota, Ed Burns, Vinicius Nunes, Vinicius Senger e Yara Senger"></h:graphicImage>
+        </div>
+    </ui:composition>
+</html>
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/contracts/appYellowSkin/template.xhtml b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/contracts/appYellowSkin/template.xhtml
new file mode 100644
index 0000000..a0e3b32
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/contracts/appYellowSkin/template.xhtml
@@ -0,0 +1,106 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:scrum="http://java.sun.com/jsf/composite/components">
+
+    <h:head>
+        <h:outputStylesheet name="appYellowSkin.css"/>
+        <h:outputStylesheet name="common.css"/>
+        <h:outputScript     library="js" name="menu.js" target="head"/>
+        <h:outputScript     library="javax.faces" name="jsf.js"/>
+        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+        <title>
+            <ui:insert name="pageTitle">
+                <h:outputText value="#{i18n['template.title']}"></h:outputText>
+            </ui:insert>
+        </title>
+    </h:head>
+
+    <h:body>
+        <div align="center">
+            <h:panelGrid  width="990">
+                <scrum:menu>
+                    <ui:param name="image" value="/resources/images/menu/barraSuperior-04.png"></ui:param>
+                </scrum:menu>
+                <h:form id="navigationBar">
+                    <div class="navBarClass">
+                        <h:panelGrid columns="3" rendered="#{authManager.username != null}">
+                            <h:outputText value="User: " />
+                            <h:outputText value="#{authManager.username}" />
+                            <h:commandLink id="logout" value="Logout" action="#{authManager.logout}" />
+                        </h:panelGrid>
+                        <br/>
+                        <ui:insert name="navigationBar"></ui:insert>
+                    </div>
+                </h:form>
+
+                <h:panelGrid columns="1"  headerClass="tableHeader" footerClass="tableFooter" cellpadding="0" cellspacing="0">
+                    <f:facet name="header">
+                        <h:outputText value=""></h:outputText>
+                    </f:facet>
+
+                    <table class="tableBody"><tr><td>
+                        <table align="center">
+                            <tr><td>
+                                    <ui:insert name="content"></ui:insert>
+                            </td></tr>
+                        </table>
+                    </td></tr></table>
+
+
+                    <f:facet name="footer">
+                        <h:graphicImage value="/resources/images/lousaNova/quadroNegro_botton_990x120.png" ></h:graphicImage>
+                    </f:facet>
+                </h:panelGrid>
+
+                <h:panelGroup>
+                    <ui:include src="./footer.xhtml" />
+                </h:panelGroup>
+            </h:panelGrid>
+        </div>
+    </h:body>
+</html>  
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/dashboard.xhtml b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/dashboard.xhtml
new file mode 100644
index 0000000..c0db3fd
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/dashboard.xhtml
@@ -0,0 +1,117 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:appez="http://java.sun.com/jsf/composite/components" >
+
+<ui:composition template="template.xhtml">
+<ui:define name="pageTitle">
+    <h:outputText value="HOME needs i18n"></h:outputText>
+</ui:define>
+
+<ui:define name="content">
+
+
+    <h:outputScript library="javax.faces" name="ajax.js" target="head"></h:outputScript>
+    <h:messages errorClass="errorMsgs" infoClass="infoMsgs" />
+    <appez:title id="tituloDashboard" text="#{dashboardMB.selectedSprint.name}">
+		<h:panelGroup>
+			<h:outputLabel value="#{i18n['label.goal']}:" for="" style="font-weight: bold" />
+			<h:outputText value="#{dashboardMB.selectedSprint.goals}" />
+		</h:panelGroup>
+	</appez:title>
+	<h:panelGrid columns="2" style="float: left">
+			<h:outputLabel value="#{i18n['label.estimatives']}:" for="" style="font-weight: bold" />
+			<h:outputText value="#{dashboardMB.selectedSprint.meetings.estimation.date}">
+				<f:convertDateTime pattern="dd/MM/yyyy" />
+			</h:outputText>
+			<h:outputLabel value="#{i18n['label.planning1']}:" for="" style="font-weight: bold" />
+			<h:outputText value="#{dashboardMB.selectedSprint.meetings.sprintPlanningI.date}">
+				<f:convertDateTime pattern="dd/MM/yyyy" />
+			</h:outputText>
+			<h:outputLabel value="#{i18n['label.planning2']}:" for="" style="font-weight: bold" />
+			<h:outputText value="#{dashboardMB.selectedSprint.meetings.sprintPlanningII.date}"/>
+			<h:outputLabel value="#{i18n['label.dailyMeeting']}:" for="" style="font-weight: bold" />
+			<h:panelGroup>
+			<h:outputText value="#{dashboard2MB.selectedSprint.dailyMeetingTime}">
+			</h:outputText>
+			</h:panelGroup>
+			<h:outputLabel value="#{i18n['label.revision']}:" for="" style="font-weight: bold" />
+			<h:outputText value="#{dashboardMB.selectedSprint.meetings.revision.date}">
+				<f:convertDateTime pattern="dd/MM/yyyy" />
+			</h:outputText>
+			<h:outputLabel value="#{i18n['label.retrospective']}:" for="" style="font-weight: bold" />
+			<h:outputText value="#{dashboardMB.selectedSprint.meetings.retrospective.date}">
+				<f:convertDateTime pattern="dd/MM/yyyy" />
+			</h:outputText>
+	</h:panelGrid>
+    <table width="100%">
+    <tr>
+    <td style="vertical-align: top; min-width: 150px" width="150px">
+    <h:form id="frmStories">
+    <ui:include src=".dashboard.stories.xhtml" />
+    </h:form>
+    </td>
+    <td style="vertical-align: top; min-width: 150px" width="150px">
+    <h:form id="frmTodo">
+    <ui:include src=".dashboard.todoTasks.xhtml" />
+    </h:form>
+    </td>
+    <td style="vertical-align: top; min-width: 150px" width="150px">
+    <h:form id="frmWorking">
+    <ui:include src=".dashboard.workingTasks.xhtml" />
+    </h:form>
+    </td>
+    <td style="vertical-align: top; min-width: 150px" width="150px">
+    <h:form id="frmDone">
+    <ui:include src=".dashboard.doneTasks.xhtml" />
+    </h:form>
+    </td>
+    </tr>
+    </table>
+</ui:define>
+</ui:composition>
+</html>  
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/dashboard/show.xhtml b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/dashboard/show.xhtml
new file mode 100644
index 0000000..d86848d
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/dashboard/show.xhtml
@@ -0,0 +1,119 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:scrum="http://java.sun.com/jsf/composite/components" >
+
+    <ui:composition template="/template.xhtml">
+        <f:metadata>
+            <f:viewParam name="skin" value="#{skinUrlManager.skin}" />
+            <f:event type="preRenderView" listener="#{skinUrlManager.update}" />
+        </f:metadata>
+        <ui:define name="pageTitle">
+            <h:outputText value="#{i18n['story.show.title']}"></h:outputText>
+        </ui:define>
+
+        <ui:define name="navigationBar">
+            <h:commandLink immediate="true" action="/project/show" value="#{i18n['navigation.projects']}"></h:commandLink>
+            <h:outputText value="#{i18n['navigation.separtor']}"></h:outputText>
+            <h:commandLink rendered="#{sprintManager.project.name != null}" immediate="true" action="/project/edit"  value="#{sprintManager.project.name}"></h:commandLink>
+            <h:outputText value="#{i18n['navigation.separtor']}"></h:outputText>
+            <h:commandLink rendered="#{sprintManager.project.name != null}" immediate="true" action="/sprint/show" value="#{i18n['navigation.sprints']}"></h:commandLink>
+            <h:outputText value="#{i18n['navigation.separtor']}"></h:outputText>
+            <h:outputText value="#{i18n['sprint.edit.form.title']}" styleClass="tituloForm"></h:outputText>
+        </ui:define>
+
+        <ui:define name="content">
+            <h:form id="frmListStories">
+                <h:panelGrid columns="5">                    
+                    <h:dataTable value="#{dashboardManager.stories}" var="story" rendered="#{dashboardManager.stories.rowCount > 0}" border="0" id="dtStories" >
+                        <h:column>
+                            <f:facet name="header"><h:outputText value="STORIES" /></f:facet>
+                            <scrum:bigPostit>
+                                <ui:param name="postitLabel" value=""></ui:param>
+                                <ui:param name="postitText" value="#{story.name}"></ui:param>
+                            </scrum:bigPostit>
+                        </h:column>
+                    </h:dataTable>
+
+                    <h:dataTable  value="#{dashboardManager.toDoTasks}" var="task" title="Todo Tasks">
+                        <f:facet name="header"><h:outputText value="TO DO" /></f:facet>
+                        <h:column>
+                            <scrum:postit action="#{dashboardManager.editToDoTask}">
+                                <ui:param name="postitLabel" value=""></ui:param>
+                                <ui:param name="postitText" value="#{task.name}"></ui:param>
+                            </scrum:postit>
+                        </h:column>
+                    </h:dataTable>
+
+                    <h:dataTable  value="#{dashboardManager.workingTasks}" var="task" title="Working Tasks">
+                        <f:facet name="header"><h:outputText value="DOING" /></f:facet>
+                        <h:column>
+                            <scrum:postit action="#{dashboardManager.editWorkingTask}">
+                                <ui:param name="postitLabel" value=""></ui:param>
+                                <ui:param name="postitText" value="#{task.name}"></ui:param>
+                            </scrum:postit>
+                        </h:column>
+                    </h:dataTable>
+
+                    <h:dataTable  value="#{dashboardManager.doneTasks}" var="task" title="Done Tasks">
+                        <f:facet name="header"><h:outputText value="DONE" /></f:facet>
+                        <h:column>
+                            <scrum:postit action="#{dashboardManager.editDoneTask}">
+                                <ui:param name="postitLabel" value=""></ui:param>
+                                <ui:param name="postitText" value="#{task.name}"></ui:param>
+                            </scrum:postit>
+                        </h:column>
+                    </h:dataTable>
+
+                </h:panelGrid>
+            </h:form>
+        </ui:define>
+    </ui:composition>
+
+</html>
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/home.xhtml b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/home.xhtml
new file mode 100644
index 0000000..15eee7c
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/home.xhtml
@@ -0,0 +1,63 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+
+    <ui:composition template="/template.xhtml">
+        <f:metadata>
+            <f:viewParam name="skin" value="#{skinUrlManager.skin}" />
+            <f:event type="preRenderView" listener="#{skinUrlManager.update}" />
+        </f:metadata>
+        <ui:insert name="pageTitle">
+            <h:outputText value="#{i18n['template.title']}"></h:outputText>
+        </ui:insert>    
+
+        <ui:define name="content">
+            Welcome
+        </ui:define>
+    </ui:composition>
+</html>
+
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/index.html b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/index.html
new file mode 100644
index 0000000..2b814b3
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/index.html
@@ -0,0 +1,43 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<meta http-equiv="refresh" content="0;url=/scrumtoys/home.jsf">
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/login.xhtml b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/login.xhtml
new file mode 100644
index 0000000..9feb61f
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/login.xhtml
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+
+    <h:head>
+        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+        <title>
+           <h:outputText value="#{i18n['login.title']}"></h:outputText>
+        </title>
+    </h:head>
+
+    <h:body>
+      <table align="center">
+        <tr><td>
+            <form method="post" action="j_security_check">
+              <h3><h:outputText value="#{i18n['login.form.label']}"></h:outputText></h3>
+              <h:panelGrid columns="2">
+                <h:outputLabel for="j_username" value="#{i18n['login.username']}" />
+                <input type="text" id="username" name="j_username" />
+
+                <h:outputLabel for="j_password" value="#{i18n['login.password']}" />
+                <input type="password" id="password" name="j_password" />
+
+                <h:outputText value="" />
+                <h:panelGrid columns="2">
+                  <input type="submit" id="submit" name="submit" value="#{i18n['login.form.button']}" />
+                </h:panelGrid>
+              </h:panelGrid>
+              <h:outputText value="#{i18n['login.info']}" style="font-size: small"/>
+            </form>
+        </td></tr>
+      </table>
+    </h:body>
+</html>
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/loginError.xhtml b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/loginError.xhtml
new file mode 100644
index 0000000..0b92744
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/loginError.xhtml
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    <h:head>
+        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+        <title>
+           <h:outputText value="#{i18n['login.title']}"></h:outputText>
+        </title>
+    </h:head>
+
+    <h:body>
+      <h2><h:outputText value="#{i18n['login.fail.label']}"/></h2>
+      <h:link value="#{i18n['login.form.label']}" outcome="/home"/>
+    </h:body>
+</html>
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/project/create.xhtml b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/project/create.xhtml
new file mode 100644
index 0000000..ad68ac3
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/project/create.xhtml
@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+
+    <ui:composition template="/template.xhtml">
+        <ui:define name="pageTitle">
+            <h:outputText value="#{i18n['project.create.title']}"/>
+        </ui:define>
+        <ui:define name="navigationBar">            
+            <h:commandLink action="/project/show" value="#{i18n['navigation.projects']}"/>
+            <h:outputText value="#{i18n['navigation.separtor']}"/>
+            <h:outputText value="#{i18n['project.create.form.title']}" styleClass="tituloForm"  />
+        </ui:define>
+        <ui:define name="content">        
+            <h:form id="createProjectForm">
+                <h:panelGrid columns="1" footerClass="footerForm">
+                    <h:panelGroup>
+                        <ui:include src="form.xhtml"/>
+                    </h:panelGroup>
+
+                    <f:facet name="footer">
+                        <h:commandButton id="btnCreate" action="#{projectManager.save}" value="#{i18n['project.create.button.create']}" styleClass="botaoPostIt" />
+                        <h:commandButton id="btnCancel" action="show" value="#{i18n['project.create.button.cancel']}" styleClass="botaoPostIt" immediate="true" />
+                    </f:facet>
+                </h:panelGrid>
+            </h:form>
+        </ui:define>
+    </ui:composition>
+
+</html>
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/project/edit.xhtml b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/project/edit.xhtml
new file mode 100644
index 0000000..63efbe6
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/project/edit.xhtml
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+
+    <ui:composition template="/template.xhtml">
+        <ui:define name="pageTitle">
+            <h:outputText value="#{i18n['project.edit.title']}"/>
+        </ui:define>
+        <ui:define name="navigationBar">
+            <h:commandLink action="/project/show" value="#{i18n['navigation.projects']}"/>
+            <h:outputText value="#{i18n['navigation.separtor']}"/>
+            <h:outputText value="#{i18n['project.edit.form.title']}:" styleClass="tituloForm" />
+        </ui:define>
+        
+        <ui:define name="content">
+            <h:form styleClass="scrumForm" id="editProjectForm">
+                <h:panelGrid columns="1" headerClass="tituloForm" footerClass="footerForm">
+                    <ui:include src="form.xhtml" />
+                    <f:facet name="footer">                        
+                        <h:commandButton rendered="#{projectManager.currentProject.name != null}" id="btnEditUpdate" action="#{projectManager.save}" value="#{i18n['project.edit.button.update']}" styleClass="botaoPostIt" />
+                        <h:commandButton rendered="#{projectManager.currentProject.name != null}" id="btnEditCancel" action="#{projectManager.cancelEdit}" immediate="true" value="#{i18n['project.edit.button.cancel']}" styleClass="botaoPostIt" />                        
+                    </f:facet>
+                </h:panelGrid>
+            </h:form>
+        </ui:define>
+    </ui:composition>
+</html>
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/project/form.xhtml b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/project/form.xhtml
new file mode 100644
index 0000000..aa756a4
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/project/form.xhtml
@@ -0,0 +1,80 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+
+    <ui:composition>
+        <h:panelGrid columns="3" columnClasses="formLabel, formInput, formErrorMessage">
+            <h:outputLabel value="#{i18n['project.form.label.name']}:" for="itName"/>
+            <h:inputText id="itName" value="#{projectManager.currentProject.name}" required="true" 
+                requiredMessage="#{i18n['project.form.label.name.required']}" size="40"
+                validator="#{projectManager.checkUniqueProjectName}" />
+            <h:message for="itName" styleClass="errorMessage" />
+
+            <h:outputLabel value="#{i18n['project.form.label.startDate']}:" for="itStartedDate"  />
+            <h:panelGroup>
+                <h:inputText id="itStartedDate" value="#{projectManager.currentProject.startDate}" required="true" requiredMessage="#{i18n['project.form.label.startDate.required']}">
+                    <f:convertDateTime pattern="#{i18n['project.form.label.startDate.pattern']}" />
+                </h:inputText>
+                <h:outputText value="(#{i18n['project.form.label.startDate.pattern']})" styleClass="inputPattern" />
+            </h:panelGroup>
+            <h:message for="itStartedDate" styleClass="errorMessage"/>
+
+            <h:outputLabel value="#{i18n['project.form.label.endDate']}:" for="itEndDate"  />
+            <h:panelGroup>
+                <h:inputText id="itEndDate" value="#{projectManager.currentProject.endDate}" required="false" requiredMessage="#{i18n['project.form.label.endDate.required']}">
+                    <f:convertDateTime pattern="#{i18n['project.form.label.endDate.pattern']}" />
+                </h:inputText>
+                <h:outputText value="(#{i18n['project.form.label.endDate.pattern']})"  styleClass="inputPattern"/>
+            </h:panelGroup>
+            <h:message for="itEndDate" styleClass="errorMessage" />
+
+        </h:panelGrid>
+    </ui:composition>
+
+</html>
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/project/show.xhtml b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/project/show.xhtml
new file mode 100644
index 0000000..2f1e7b6
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/project/show.xhtml
@@ -0,0 +1,108 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+
+    <ui:composition template="/template.xhtml">
+        <ui:define name="pageTitle">
+            <h:outputText value="#{i18n['project.show.title']}"/>
+        </ui:define>
+        <ui:define name="navigationBar">
+            <h:outputText value="#{i18n['project.show.title']}" styleClass="tituloForm" />
+        </ui:define>
+        <ui:define name="content">
+            <h:form id="frmListProjects">
+                <h:outputText value="#{i18n['project.show.table.label.empty']}"
+                              rendered="#{projectList.projects.rowCount eq 0}" />
+
+                <h:dataTable value="#{projectList.projects}" var="project"
+                             rendered="#{projectList.projects.rowCount > 0}"
+                             title="#{i18n['project.show.table.title']}"
+                             summary="#{i18n['project.show.table.title']}"
+                             border="0"
+                             headerClass="datatableHeader"
+                             rowClasses="datatableRow,datatableRow2"
+                             columnClasses="dataTableFirstColumn"
+                             styleClass="datatable"
+                             id="dtProjects">
+
+                    <h:column>
+                        <f:facet name="header"><h:outputText value="#" /></f:facet>
+                        <h:outputText value="#{projectList.projects.rowIndex + 1}" />
+                    </h:column>
+                    <h:column>
+                        <f:facet name="header"><h:outputText value="#{i18n['project.show.table.header.name']}" /></f:facet>
+                        <h:outputText value="#{project.name}" />
+                    </h:column>
+                    <h:column>
+                        <f:facet name="header"><h:outputText value="#{i18n['project.show.table.header.startDate']}"/></f:facet>
+                        <h:outputText value="#{project.startDate}">
+                            <f:convertDateTime pattern="#{i18n['project.show.table.header.startDate.pattern']}" />
+                        </h:outputText>
+                    </h:column>
+                    <h:column>
+                        <f:facet name="header"><h:outputText value="#{i18n['project.show.table.header.endDate']}"/></f:facet>
+                        <h:outputText value="#{project.endDate}">
+                            <f:convertDateTime pattern="#{i18n['project.show.table.header.endDate.pattern']}" />
+                        </h:outputText>
+                    </h:column>
+                    <h:column>
+                        <f:facet name="header"><h:outputText value="#{i18n['project.show.table.header.actions']}"/></f:facet>
+                        <h:commandButton styleClass="botaoPostIt" action="#{projectList.edit}" value="#{i18n['project.show.button.edit']}"  />
+                        <h:commandButton styleClass="botaoPostIt" action="#{projectList.remove}" value="#{i18n['project.show.button.delete']}"  />
+                        <h:commandButton styleClass="botaoPostIt" action="#{projectList.showSprints}" value="#{i18n['project.show.button.showSprints']}"  />
+                    </h:column>
+                                        
+                    
+                </h:dataTable>
+                    <h:commandButton styleClass="botaoPostIt" action="#{projectManager.create}" value="#{i18n['project.show.button.newProject']}"  />
+            </h:form>
+        </ui:define>
+    </ui:composition>
+
+</html>
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/resources/components/bigPostit.xhtml b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/resources/components/bigPostit.xhtml
new file mode 100644
index 0000000..c74ed99
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/resources/components/bigPostit.xhtml
@@ -0,0 +1,74 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:composite="http://java.sun.com/jsf/composite">
+
+    <composite:interface>
+        <composite:valueHolder name="postitLabel"/>
+        <composite:valueHolder name="postitText"/>
+        <composite:valueHolder name="postitLabel2"/>
+        <composite:valueHolder name="postitText2"/>
+        <composite:valueHolder name="postitLabel3"/>
+        <composite:valueHolder name="postitText3"/>
+
+    </composite:interface>
+ 
+    <composite:implementation>
+        <h:panelGrid styleClass="bigPostitComponent" columns="2" columnClasses="postitLabel, postItInfo">
+            <f:facet name="header">
+                <f:verbatim>
+                <br></br>
+                </f:verbatim>
+            </f:facet>
+            <h:outputText value="#{postitLabel}"/>
+            <h:outputText value="#{postitText}"/>            
+            <h:outputText value="#{postitLabel2}"/>
+            <h:outputText value="#{postitText2}"/>
+            <h:outputText value="#{postitLabel3}"/>
+            <h:outputText value="#{postitText3}"/>
+        </h:panelGrid>
+    </composite:implementation>
+</html>
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/resources/components/menu.xhtml b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/resources/components/menu.xhtml
new file mode 100644
index 0000000..8bb5937
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/resources/components/menu.xhtml
@@ -0,0 +1,139 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:composite="http://java.sun.com/jsf/composite"
+      xmlns:scrum="http://java.sun.com/jsf/composite/components"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+
+    <composite:interface>
+        <composite:valueHolder name="image"/>
+    </composite:interface>
+
+    <composite:implementation>
+
+        <h:form id="menuSelectProjectForm">
+            <table width="990" class="menuTable" cellpadding="0" cellspacing="0" id="menuTable">
+                <tr>
+                    <scrum:menuItem>
+                        <ui:param name="label" value="#{i18n['menuitem.label.home']}"></ui:param>
+                        <ui:param name="destination" value="#{i18n['menuitem.path.home']}"></ui:param>
+                        <ui:param name="menuid" value="1"></ui:param>
+                    </scrum:menuItem>
+                    <scrum:menuItem>
+                        <ui:param name="label" value="#{i18n['menuitem.label.projects']}"></ui:param>
+                        <ui:param name="destination" value="#{i18n['menuitem.path.projects']}"></ui:param>
+                        <ui:param name="menuid" value="2"></ui:param>
+                    </scrum:menuItem>
+                    <scrum:menuItem>
+                        <ui:param name="label" value="#{i18n['menuitem.label.settings']}"></ui:param>
+                        <ui:param name="destination" value=""></ui:param>
+                        <ui:param name="menuid" value="4"></ui:param>
+                    </scrum:menuItem>
+                    <scrum:menuItem>
+                        <ui:param name="label" value="#{i18n['menuitem.label.jsf2']}"></ui:param>
+                        <ui:param name="destination" value=""></ui:param>
+                        <ui:param name="menuid" value="5"></ui:param>
+                    </scrum:menuItem>
+
+                    <td>
+                        <h:outputLabel for="prjCombo" value="#{i18n['home.project.combo.label']}" styleClass="formLabel" />
+                        <h:selectOneMenu id="prjCombo" value="#{projectManager.currentProject}" styleClass="formInput">
+                            <f:selectItems value="#{projectList.projectItems}" var="project" itemLabel="#{project.name}" itemValue="#{project}"/>
+                        </h:selectOneMenu>
+                    </td>
+                    <td>
+                        <h:commandButton value="Change Project" action="#{projectManager.viewSprints}"></h:commandButton>
+                    </td>
+                </tr>
+                <tr>
+                    <scrum:submenu>
+                        <ui:param name="menuid" value="1"></ui:param>
+                    </scrum:submenu>
+
+                    <scrum:submenu>
+                        <ui:param name="menuid" value="2"></ui:param>
+                        <scrum:submenuItem>
+                            <ui:param name="label" value="#{i18n['menuitem.label.showProjects']}"></ui:param>
+                            <ui:param name="destination" value="#{i18n['menuitem.path.showProjects']}"></ui:param>
+                        </scrum:submenuItem>
+
+                    </scrum:submenu>
+                    <scrum:submenu>
+                        <ui:param name="menuid" value="4"></ui:param>
+
+                        <scrum:submenuItem>
+                            <ui:param name="label" value="#{i18n['menuitem.label.changeskin']}"></ui:param>
+                            <ui:param name="destination" value="#{i18n['menuitem.path.changeskin']}"></ui:param>
+                        </scrum:submenuItem>
+                    </scrum:submenu>
+                    <scrum:submenu>
+                        <ui:param name="menuid" value="5"></ui:param>
+                        <scrum:submenuItem>
+                            <ui:param name="label" value="#{i18n['menuitem.label.about']}"></ui:param>
+                            <ui:param name="destination" value="#{i18n['menuitem.path.about']}"></ui:param>
+                        </scrum:submenuItem>
+                        <scrum:submenuItem>
+                            <ui:param name="label" value="#{i18n['menuitem.label.jsr314']}"></ui:param>
+                            <ui:param name="destination" value="#{i18n['menuitem.path.jsr314']}"></ui:param>
+                        </scrum:submenuItem>
+                        <scrum:submenuItem>
+                            <ui:param name="label" value="#{i18n['menuitem.label.irc']}"></ui:param>
+                            <ui:param name="destination" value="#{i18n['menuitem.path.irc']}"></ui:param>
+                        </scrum:submenuItem>
+                        <scrum:submenuItem>
+                            <ui:param name="label" value="#{i18n['menuitem.label.documentation']}"></ui:param>
+                            <ui:param name="destination" value="#{i18n['menuitem.path.documentation']}"></ui:param>
+                        </scrum:submenuItem>
+                    </scrum:submenu>
+                    <scrum:submenu>
+                        <ui:param name="menuid" value="6"></ui:param>
+                    </scrum:submenu>
+                </tr>
+            </table>
+            <h:graphicImage  value="#{image}"></h:graphicImage><br/>
+        </h:form>
+    </composite:implementation>
+</html>
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/resources/components/menuItem.xhtml b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/resources/components/menuItem.xhtml
new file mode 100644
index 0000000..0eef790
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/resources/components/menuItem.xhtml
@@ -0,0 +1,63 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:composite="http://java.sun.com/jsf/composite">
+
+    <composite:interface>
+        <composite:valueHolder name="label"  />
+        <composite:valueHolder name="destination" />
+        <composite:valueHolder name="menuid" />
+    </composite:interface>
+
+    <composite:implementation>
+
+        <td>
+            <h:outputLink styleClass="menuhandler" value="#{destination}" onmouseover="menuHighlight(#{menuid})" rendered="#{label!=''}">
+                <h:outputText value="#{label}"/>
+            </h:outputLink>
+            <composite:insertChildren />
+        </td>
+    </composite:implementation>
+</html>
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/resources/components/postit.xhtml b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/resources/components/postit.xhtml
new file mode 100644
index 0000000..e006c11
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/resources/components/postit.xhtml
@@ -0,0 +1,68 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:composite="http://java.sun.com/jsf/composite"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+
+    <composite:interface>
+        <composite:valueHolder name="postitLabel"/>
+        <composite:valueHolder name="postitText"/>
+        <composite:attribute name="color" type="java.lang.String"/>
+        <composite:attribute name="action" method-signature="java.lang.String action()" targets="postitAction"/>
+    </composite:interface>
+
+    <composite:implementation>        
+            <h:panelGrid styleClass="postitComponent#{cc.attrs.color}">
+                <h:panelGroup>
+                    <h:outputText value="#{postitLabel}" styleClass="postitLabel"/> <br/><br/>
+                    <ui:insert name="main">
+                        <h:commandLink id="postitAction" immediate="true">
+                            <h:outputText value="#{postitText}"/>
+                        </h:commandLink>
+                    </ui:insert>
+                </h:panelGroup>
+            </h:panelGrid>        
+    </composite:implementation>
+</html>
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/resources/components/postitLink.xhtml b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/resources/components/postitLink.xhtml
new file mode 100644
index 0000000..14799ea
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/resources/components/postitLink.xhtml
@@ -0,0 +1,58 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+
+    <ui:composition template="postit.xhtml">
+        <ui:define name="main">
+            <h:link outcome="#{cc.attrs.url}" value="#{postitText}"
+                    rendered="#{cc.attrs.url != null}">
+                <f:param name="#{cc.attrs.paramName}" value="#{cc.attrs.paramValue}" />
+            </h:link>
+        </ui:define>
+    </ui:composition>
+
+</html>
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/resources/components/submenu.xhtml b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/resources/components/submenu.xhtml
new file mode 100644
index 0000000..35951f3
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/resources/components/submenu.xhtml
@@ -0,0 +1,62 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:composite="http://java.sun.com/jsf/composite">
+    <ui:composition>
+        <composite:interface>
+            <composite:valueHolder name="menuid" />
+        </composite:interface>
+
+        <composite:implementation>
+            <td>
+                <div class="menu" id="menu#{menuid}">
+                    <ul>
+                        <composite:insertChildren></composite:insertChildren>
+                    </ul>
+                </div>
+            </td>
+        </composite:implementation>
+    </ui:composition>
+</html>
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/resources/components/submenuItem.xhtml b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/resources/components/submenuItem.xhtml
new file mode 100644
index 0000000..65a592c
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/resources/components/submenuItem.xhtml
@@ -0,0 +1,62 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:composite="http://java.sun.com/jsf/composite">
+
+    <composite:interface>
+        <composite:valueHolder name="label"  />
+        <composite:valueHolder name="destination" />
+    </composite:interface>
+
+    <composite:implementation>
+
+        <li>
+            <h:outputLink  value="#{destination}" rendered="#{label!=''}">
+                <h:outputText value="#{label}" />
+            </h:outputLink>
+        </li>
+
+    </composite:implementation>
+</html>
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/resources/components/title.properties b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/resources/components/title.properties
new file mode 100644
index 0000000..fc4a5ad
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/resources/components/title.properties
@@ -0,0 +1,42 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
+label=T\u00EDtulo
+version=0.1.0
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/resources/components/title.xhtml b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/resources/components/title.xhtml
new file mode 100644
index 0000000..69a53a8
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/resources/components/title.xhtml
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<html xmlns="http://www.w3.org/1999/xhtml"
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:composite="http://java.sun.com/jsf/composite" 
+      xmlns:fn="http://java.sun.com/jsp/jstl/functions">
+	<ui:composition>
+      <composite:interface>
+      	<composite:attribute name="text" required="true" />
+ 		<composite:valueHolder name="oTitle" />
+		<composite:facet name="header" />      	
+		<composite:facet name="footer" />   
+      </composite:interface>
+      
+      <composite:implementation>
+      	  <h:panelGrid columns="1" rendered="#{not empty compositeComponent.facets.header}">
+     	  	<composite:insertFacet name="header" />
+      	  </h:panelGrid>	
+	      <h:panelGroup>
+	      	  <h1>
+	      	  <h:outputText id="otTitle" value="#{compositeComponent.attrs.text}" />
+		      <span style="font-size: small; color: gray; font-family: serif"><h:outputLabel value="#{fn:toLowerCase(compositeComponent.resourceBundleMap.version)}" /></span>
+	      	  </h1>
+		  </h:panelGroup>
+      	  <h:panelGroup rendered="#{not empty compositeComponent.children}">
+      	  		<div style="border: 1px dotted gray; padding: 10px; margin: 10px">
+		      	  	<composite:insertChildren />
+      	  		</div>
+		  </h:panelGroup>
+      	  <h:panelGrid columns="1" rendered="#{not empty compositeComponent.facets.footer}">
+     	  	<composite:insertFacet name="footer" />
+      	  </h:panelGrid>	
+      </composite:implementation> 
+	</ui:composition>
+</html>
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/resources/components/title_en_US.properties b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/resources/components/title_en_US.properties
new file mode 100644
index 0000000..50a8c7c
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/resources/components/title_en_US.properties
@@ -0,0 +1,42 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
+rotulo=Title
+versao=0.1.0
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/resources/components/title_pt_BR.properties b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/resources/components/title_pt_BR.properties
new file mode 100644
index 0000000..8ab79ec
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/resources/components/title_pt_BR.properties
@@ -0,0 +1,42 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
+rotulo=T\u00EDtulo
+versao=0.1.0
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/resources/css/1_1/appSelectedColor.css b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/resources/css/1_1/appSelectedColor.css
new file mode 100644
index 0000000..2bc92b7
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/resources/css/1_1/appSelectedColor.css
@@ -0,0 +1,259 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+div.navBarClass span, div.navBarClass {
+    /* Blue 100%*/
+    color:#0069AA;
+    padding:10px;
+}
+
+.tituloForm {
+    font-size: 10pt;
+    /* Blue 100%*/
+    color: #0069AA;;
+    font-weight:bold;
+    padding:5px;
+    margin:5px;
+}
+input.botaoPostIt{
+    font-size: 8pt;
+    /* Blue 100%*/
+    color: #0069AA;
+    font-weight:bold;
+    background-color:white;
+
+}
+
+.inputPattern{
+  /* Blue 20%*/
+  color: #B3D4E7;
+}
+label {
+  font-size: 12px;
+  /* Blue 100%*/
+  color: #0069AA;
+  text-align: left;
+  border:none;
+
+}
+
+input, select,textarea {
+  font-family: Arial, Helvetica, sans-serif;
+  font-size: 12px;
+  /* Orange 100% */
+  color: #0069AA;
+  text-align: left;
+  background-color:white;
+  border-style:ridge;
+  /*lightgray*/
+  border:1px solid #d3d3d3;
+  padding:4px;
+  margin:4px;
+  margin-bottom:4px;
+  font-weight:normal;
+}
+
+.datatableHeader{
+    /* Orange 100% */
+    background-color:#0069AA;
+    color:white;
+    font-size:12pt;
+    font-weight:normal;
+    padding:10px;
+    margin:10px;
+}
+
+.datatableRow2{
+    /* Blue 20% */
+    background-color:#B3D4E7;
+    font-size:12px;
+    color:black;
+    padding:15px;
+    margin:15px;
+    text-align:center;
+
+}
+
+.navigationLink{
+    text-decoration:none;
+    text-align:right;
+    /* Blue 100% */
+    color:#0069AA;
+}
+
+/*Diferent datatable lines / oposite*/
+.datatableRow{
+    background-color:white;
+    color:black;
+    font-size:12px;
+    text-align:center;
+}
+
+table.menuTable{
+    /* it seems its not necessary */
+    border-collapse:collapse;
+    vertical-align:middle;
+    text-align: left;
+}
+
+table.menuTable tr td{
+    vertical-align:middle;
+    padding-bottom:0px;
+    /*space between menu itens */
+    width:168px;
+
+}
+
+.menu a{
+    text-decoration: none;
+    font-family: Arial, Helvetica, sans-serif ;
+    font-size: 12px;
+    padding: 10px;
+    /* Blue 100% */
+    color: #0069AA;
+}
+
+/* menuItem and menu spacing */
+.menu ul{
+    text-align:left;
+    padding:0pt;
+    margin:0pt;
+    /* sub menu item background */
+    background-color:white;
+
+    /* fundo transparente
+    background-image:url("../resources/images/menu/Transparency.png;");
+    */
+}
+/* submenu div */
+.menu{
+    display:none;
+    position:absolute;
+    font-family: Arial, Helvetica, sans-serif;
+    font-size: 12px;
+    font-weight: bold;
+
+}
+
+/* submenu item*/
+.menu li{
+    /* white background for avoiding transparency on submenu item */
+    /*background-color:white;*/
+
+    list-style-type: none;
+    display: block;
+    padding:10px;
+    /* altura do submenu */
+    width: 142px;
+    /* Orange 100% */
+    border:1px solid #0069AA;
+
+    font-weight:bold;
+
+}
+
+
+.menuhandler {
+    /* Orange 100% */
+    border:1px solid #0069AA;
+    color:white;
+
+    text-decoration:none;
+    display: block;
+    font-family: Arial, Helvetica, sans-serif;
+    font-size: 12px;
+    width: 141px;
+    vertical-align:middle;
+    text-align: left;
+    font-weight: bold;
+    padding:10px;
+    background-color:#0069AA;
+    /* fundo transparente
+    background-image:url("../resources/images/menu/Transparency.png;");
+    color:white;
+    */
+}
+.selectProject{
+    vertical-align:bottom;
+    font-family: Arial, Helvetica, sans-serif;
+    font-size: 12px;
+    font-weight: bold;
+    text-align:center;
+
+}
+
+.postitComponent{
+        background-image:url("../resources/images/postits/novos/postit_azul_150x145.png");
+        width:150px;
+        height:145px;
+        font-size: 14px;
+        text-align:center;
+        color:white;
+}
+
+.postitComponent tr td{
+
+    padding: 5pt;
+    padding-top: 15pt;
+    vertical-align:top;
+
+}
+
+.postitComponent a{
+    text-decoration:none;
+    color:white;
+}
+
+.bigPostitComponent{
+        background-image:url("../resources/images/postits/novos/postit_azul_315x150.png");
+        background-repeat:no-repeat;
+        width:315px;
+        height:150px;
+        font-size: 14px;
+        text-align:center;
+        color:white;
+}
+
+.bigPostitComponent tr td{
+
+    padding: 5pt;
+    vertical-align:top;
+
+}
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/resources/images/JSFScrumWhiteBoard.png b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/resources/images/JSFScrumWhiteBoard.png
new file mode 100644
index 0000000..c76b76c
Binary files /dev/null and b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/resources/images/JSFScrumWhiteBoard.png differ
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/resources/images/SoccerDukeSmall.png b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/resources/images/SoccerDukeSmall.png
new file mode 100644
index 0000000..60306db
Binary files /dev/null and b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/resources/images/SoccerDukeSmall.png differ
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/resources/images/lousaNova/quadroNegro_botton_990x120.png b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/resources/images/lousaNova/quadroNegro_botton_990x120.png
new file mode 100644
index 0000000..3369613
Binary files /dev/null and b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/resources/images/lousaNova/quadroNegro_botton_990x120.png differ
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/resources/images/lousaNova/quadroNegro_meio_990x10.png b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/resources/images/lousaNova/quadroNegro_meio_990x10.png
new file mode 100644
index 0000000..9b9f3ba
Binary files /dev/null and b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/resources/images/lousaNova/quadroNegro_meio_990x10.png differ
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/resources/images/lousaNova/quadroNegro_r1_c1.png b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/resources/images/lousaNova/quadroNegro_r1_c1.png
new file mode 100644
index 0000000..5b8077b
Binary files /dev/null and b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/resources/images/lousaNova/quadroNegro_r1_c1.png differ
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/resources/images/lousaNova/quadroNegro_r2_c1.png b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/resources/images/lousaNova/quadroNegro_r2_c1.png
new file mode 100644
index 0000000..41fd66a
Binary files /dev/null and b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/resources/images/lousaNova/quadroNegro_r2_c1.png differ
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/resources/images/lousaNova/quadroNegro_r3_c1.png b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/resources/images/lousaNova/quadroNegro_r3_c1.png
new file mode 100644
index 0000000..9909745
Binary files /dev/null and b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/resources/images/lousaNova/quadroNegro_r3_c1.png differ
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/resources/images/lousaNova/quadroNegro_top_990x80.png b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/resources/images/lousaNova/quadroNegro_top_990x80.png
new file mode 100644
index 0000000..f5fb9cd
Binary files /dev/null and b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/resources/images/lousaNova/quadroNegro_top_990x80.png differ
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/resources/images/menu/barraSuperior-04.png b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/resources/images/menu/barraSuperior-04.png
new file mode 100644
index 0000000..50e2fbd
Binary files /dev/null and b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/resources/images/menu/barraSuperior-04.png differ
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/resources/images/menu/bt_preto03_165x35.png b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/resources/images/menu/bt_preto03_165x35.png
new file mode 100644
index 0000000..e6076de
Binary files /dev/null and b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/resources/images/menu/bt_preto03_165x35.png differ
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/resources/images/postits/novos/postit_amar_150x145.png b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/resources/images/postits/novos/postit_amar_150x145.png
new file mode 100644
index 0000000..09b9efa
Binary files /dev/null and b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/resources/images/postits/novos/postit_amar_150x145.png differ
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/resources/images/postits/novos/postit_amar_315x150.png b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/resources/images/postits/novos/postit_amar_315x150.png
new file mode 100644
index 0000000..79d4f7b
Binary files /dev/null and b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/resources/images/postits/novos/postit_amar_315x150.png differ
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/resources/images/postits/novos/postit_azul_150x145.png b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/resources/images/postits/novos/postit_azul_150x145.png
new file mode 100644
index 0000000..9f0e57b
Binary files /dev/null and b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/resources/images/postits/novos/postit_azul_150x145.png differ
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/resources/images/postits/novos/postit_azul_315x150.png b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/resources/images/postits/novos/postit_azul_315x150.png
new file mode 100644
index 0000000..eb6c074
Binary files /dev/null and b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/resources/images/postits/novos/postit_azul_315x150.png differ
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/resources/images/postits/novos/postit_lara_150x145.png b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/resources/images/postits/novos/postit_lara_150x145.png
new file mode 100644
index 0000000..2d8d993
Binary files /dev/null and b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/resources/images/postits/novos/postit_lara_150x145.png differ
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/resources/images/postits/novos/postit_lara_315x150.png b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/resources/images/postits/novos/postit_lara_315x150.png
new file mode 100644
index 0000000..1141ce9
Binary files /dev/null and b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/resources/images/postits/novos/postit_lara_315x150.png differ
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/resources/images/postits/novos/postit_verm_150x145.png b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/resources/images/postits/novos/postit_verm_150x145.png
new file mode 100644
index 0000000..652dae9
Binary files /dev/null and b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/resources/images/postits/novos/postit_verm_150x145.png differ
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/resources/images/postits/novos/postit_verm_315x150.png b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/resources/images/postits/novos/postit_verm_315x150.png
new file mode 100644
index 0000000..22da7a9
Binary files /dev/null and b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/resources/images/postits/novos/postit_verm_315x150.png differ
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/resources/js/app.js b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/resources/js/app.js
new file mode 100644
index 0000000..52e215a
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/resources/js/app.js
@@ -0,0 +1,46 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+function validate(refid) {
+    var input = document.getElementById(refid);
+    if (isNaN(input.value)) {
+        alert("Input is not a number");
+    }
+}
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/resources/js/date.js b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/resources/js/date.js
new file mode 100644
index 0000000..17b7275
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/resources/js/date.js
@@ -0,0 +1,452 @@
+/*
+
+ * OSR: https://opensourcereview.central.sun.com/app?action=ViewReq&review_type=Expedited&traq_num=12626
+ * source: http://www.javascripttoolbox.com/libsource.php/date/source/date.js
+ * version: 1.02
+
+ */
+
+/**
+ * Copyright (c)2005-2009 Matt Kruse (javascripttoolbox.com)
+ * 
+ * Dual licensed under the MIT and GPL licenses. 
+ * This basically means you can use this code however you want for
+ * free, but don't claim to have written it yourself!
+ * Donations always accepted: http://www.JavascriptToolbox.com/donate/
+ * 
+ * Please do not link to the .js files on javascripttoolbox.com from
+ * your site. Copy the files locally to your server instead.
+ * 
+ */
+/*
+Date functions
+
+These functions are used to parse, format, and manipulate Date objects.
+See documentation and examples at http://www.JavascriptToolbox.com/lib/date/
+
+*/
+Date.$VERSION = 1.02;
+
+// Utility function to append a 0 to single-digit numbers
+Date.LZ = function(x) {return(x<0||x>9?"":"0")+x};
+// Full month names. Change this for local month names
+Date.monthNames = new Array('January','February','March','April','May','June','July','August','September','October','November','December');
+// Month abbreviations. Change this for local month names
+Date.monthAbbreviations = new Array('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec');
+// Full day names. Change this for local month names
+Date.dayNames = new Array('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday');
+// Day abbreviations. Change this for local month names
+Date.dayAbbreviations = new Array('Sun','Mon','Tue','Wed','Thu','Fri','Sat');
+// Used for parsing ambiguous dates like 1/2/2000 - default to preferring 'American' format meaning Jan 2.
+// Set to false to prefer 'European' format meaning Feb 1
+Date.preferAmericanFormat = true;
+
+// If the getFullYear() method is not defined, create it
+if (!Date.prototype.getFullYear) { 
+	Date.prototype.getFullYear = function() { var yy=this.getYear(); return (yy<1900?yy+1900:yy); } ;
+} 
+
+// Parse a string and convert it to a Date object.
+// If no format is passed, try a list of common formats.
+// If string cannot be parsed, return null.
+// Avoids regular expressions to be more portable.
+Date.parseString = function(val, format) {
+	// If no format is specified, try a few common formats
+	if (typeof(format)=="undefined" || format==null || format=="") {
+		var generalFormats=new Array('y-M-d','MMM d, y','MMM d,y','y-MMM-d','d-MMM-y','MMM d','MMM-d','d-MMM');
+		var monthFirst=new Array('M/d/y','M-d-y','M.d.y','M/d','M-d');
+		var dateFirst =new Array('d/M/y','d-M-y','d.M.y','d/M','d-M');
+		var checkList=new Array(generalFormats,Date.preferAmericanFormat?monthFirst:dateFirst,Date.preferAmericanFormat?dateFirst:monthFirst);
+		for (var i=0; i<checkList.length; i++) {
+			var l=checkList[i];
+			for (var j=0; j<l.length; j++) {
+				var d=Date.parseString(val,l[j]);
+				if (d!=null) { 
+					return d; 
+				}
+			}
+		}
+		return null;
+	};
+
+	this.isInteger = function(val) {
+		for (var i=0; i < val.length; i++) {
+			if ("1234567890".indexOf(val.charAt(i))==-1) { 
+				return false; 
+			}
+		}
+		return true;
+	};
+	this.getInt = function(str,i,minlength,maxlength) {
+		for (var x=maxlength; x>=minlength; x--) {
+			var token=str.substring(i,i+x);
+			if (token.length < minlength) { 
+				return null; 
+			}
+			if (this.isInteger(token)) { 
+				return token; 
+			}
+		}
+	return null;
+	};
+	val=val+"";
+	format=format+"";
+	var i_val=0;
+	var i_format=0;
+	var c="";
+	var token="";
+	var token2="";
+	var x,y;
+	var year=new Date().getFullYear();
+	var month=1;
+	var date=1;
+	var hh=0;
+	var mm=0;
+	var ss=0;
+	var ampm="";
+	while (i_format < format.length) {
+		// Get next token from format string
+		c=format.charAt(i_format);
+		token="";
+		while ((format.charAt(i_format)==c) && (i_format < format.length)) {
+			token += format.charAt(i_format++);
+		}
+		// Extract contents of value based on format token
+		if (token=="yyyy" || token=="yy" || token=="y") {
+			if (token=="yyyy") { 
+				x=4;y=4; 
+			}
+			if (token=="yy") { 
+				x=2;y=2; 
+			}
+			if (token=="y") { 
+				x=2;y=4; 
+			}
+			year=this.getInt(val,i_val,x,y);
+			if (year==null) { 
+				return null; 
+			}
+			i_val += year.length;
+			if (year.length==2) {
+				if (year > 70) { 
+					year=1900+(year-0); 
+				}
+				else { 
+					year=2000+(year-0); 
+				}
+			}
+		}
+		else if (token=="MMM" || token=="NNN"){
+			month=0;
+			var names = (token=="MMM"?(Date.monthNames.concat(Date.monthAbbreviations)):Date.monthAbbreviations);
+			for (var i=0; i<names.length; i++) {
+				var month_name=names[i];
+				if (val.substring(i_val,i_val+month_name.length).toLowerCase()==month_name.toLowerCase()) {
+					month=(i%12)+1;
+					i_val += month_name.length;
+					break;
+				}
+			}
+			if ((month < 1)||(month>12)){
+				return null;
+			}
+		}
+		else if (token=="EE"||token=="E"){
+			var names = (token=="EE"?Date.dayNames:Date.dayAbbreviations);
+			for (var i=0; i<names.length; i++) {
+				var day_name=names[i];
+				if (val.substring(i_val,i_val+day_name.length).toLowerCase()==day_name.toLowerCase()) {
+					i_val += day_name.length;
+					break;
+				}
+			}
+		}
+		else if (token=="MM"||token=="M") {
+			month=this.getInt(val,i_val,token.length,2);
+			if(month==null||(month<1)||(month>12)){
+				return null;
+			}
+			i_val+=month.length;
+		}
+		else if (token=="dd"||token=="d") {
+			date=this.getInt(val,i_val,token.length,2);
+			if(date==null||(date<1)||(date>31)){
+				return null;
+			}
+			i_val+=date.length;
+		}
+		else if (token=="hh"||token=="h") {
+			hh=this.getInt(val,i_val,token.length,2);
+			if(hh==null||(hh<1)||(hh>12)){
+				return null;
+			}
+			i_val+=hh.length;
+		}
+		else if (token=="HH"||token=="H") {
+			hh=this.getInt(val,i_val,token.length,2);
+			if(hh==null||(hh<0)||(hh>23)){
+				return null;
+			}
+			i_val+=hh.length;
+		}
+		else if (token=="KK"||token=="K") {
+			hh=this.getInt(val,i_val,token.length,2);
+			if(hh==null||(hh<0)||(hh>11)){
+				return null;
+			}
+			i_val+=hh.length;
+			hh++;
+		}
+		else if (token=="kk"||token=="k") {
+			hh=this.getInt(val,i_val,token.length,2);
+			if(hh==null||(hh<1)||(hh>24)){
+				return null;
+			}
+			i_val+=hh.length;
+			hh--;
+		}
+		else if (token=="mm"||token=="m") {
+			mm=this.getInt(val,i_val,token.length,2);
+			if(mm==null||(mm<0)||(mm>59)){
+				return null;
+			}
+			i_val+=mm.length;
+		}
+		else if (token=="ss"||token=="s") {
+			ss=this.getInt(val,i_val,token.length,2);
+			if(ss==null||(ss<0)||(ss>59)){
+				return null;
+			}
+			i_val+=ss.length;
+		}
+		else if (token=="a") {
+			if (val.substring(i_val,i_val+2).toLowerCase()=="am") {
+				ampm="AM";
+			}
+			else if (val.substring(i_val,i_val+2).toLowerCase()=="pm") {
+				ampm="PM";
+			}
+			else {
+				return null;
+			}
+			i_val+=2;
+		}
+		else {
+			if (val.substring(i_val,i_val+token.length)!=token) {
+				return null;
+			}
+			else {
+				i_val+=token.length;
+			}
+		}
+	}
+	// If there are any trailing characters left in the value, it doesn't match
+	if (i_val != val.length) { 
+		return null; 
+	}
+	// Is date valid for month?
+	if (month==2) {
+		// Check for leap year
+		if ( ( (year%4==0)&&(year%100 != 0) ) || (year%400==0) ) { // leap year
+			if (date > 29){ 
+				return null; 
+			}
+		}
+		else { 
+			if (date > 28) { 
+				return null; 
+			} 
+		}
+	}
+	if ((month==4)||(month==6)||(month==9)||(month==11)) {
+		if (date > 30) { 
+			return null; 
+		}
+	}
+	// Correct hours value
+	if (hh<12 && ampm=="PM") {
+		hh=hh-0+12; 
+	}
+	else if (hh>11 && ampm=="AM") { 
+		hh-=12; 
+	}
+	return new Date(year,month-1,date,hh,mm,ss);
+};
+
+// Check if a date string is valid
+Date.isValid = function(val,format) {
+	return (Date.parseString(val,format) != null);
+};
+
+// Check if a date object is before another date object
+Date.prototype.isBefore = function(date2) {
+	if (date2==null) { 
+		return false; 
+	}
+	return (this.getTime()<date2.getTime());
+};
+
+// Check if a date object is after another date object
+Date.prototype.isAfter = function(date2) {
+	if (date2==null) { 
+		return false; 
+	}
+	return (this.getTime()>date2.getTime());
+};
+
+// Check if two date objects have equal dates and times
+Date.prototype.equals = function(date2) {
+	if (date2==null) { 
+		return false; 
+	}
+	return (this.getTime()==date2.getTime());
+};
+
+// Check if two date objects have equal dates, disregarding times
+Date.prototype.equalsIgnoreTime = function(date2) {
+	if (date2==null) { 
+		return false; 
+	}
+	var d1 = new Date(this.getTime()).clearTime();
+	var d2 = new Date(date2.getTime()).clearTime();
+	return (d1.getTime()==d2.getTime());
+};
+
+// Format a date into a string using a given format string
+Date.prototype.format = function(format) {
+	format=format+"";
+	var result="";
+	var i_format=0;
+	var c="";
+	var token="";
+	var y=this.getYear()+"";
+	var M=this.getMonth()+1;
+	var d=this.getDate();
+	var E=this.getDay();
+	var H=this.getHours();
+	var m=this.getMinutes();
+	var s=this.getSeconds();
+	var yyyy,yy,MMM,MM,dd,hh,h,mm,ss,ampm,HH,H,KK,K,kk,k;
+	// Convert real date parts into formatted versions
+	var value=new Object();
+	if (y.length < 4) {
+		y=""+(+y+1900);
+	}
+	value["y"]=""+y;
+	value["yyyy"]=y;
+	value["yy"]=y.substring(2,4);
+	value["M"]=M;
+	value["MM"]=Date.LZ(M);
+	value["MMM"]=Date.monthNames[M-1];
+	value["NNN"]=Date.monthAbbreviations[M-1];
+	value["d"]=d;
+	value["dd"]=Date.LZ(d);
+	value["E"]=Date.dayAbbreviations[E];
+	value["EE"]=Date.dayNames[E];
+	value["H"]=H;
+	value["HH"]=Date.LZ(H);
+	if (H==0){
+		value["h"]=12;
+	}
+	else if (H>12){
+		value["h"]=H-12;
+	}
+	else {
+		value["h"]=H;
+	}
+	value["hh"]=Date.LZ(value["h"]);
+	value["K"]=value["h"]-1;
+	value["k"]=value["H"]+1;
+	value["KK"]=Date.LZ(value["K"]);
+	value["kk"]=Date.LZ(value["k"]);
+	if (H > 11) { 
+		value["a"]="PM"; 
+	}
+	else { 
+		value["a"]="AM"; 
+	}
+	value["m"]=m;
+	value["mm"]=Date.LZ(m);
+	value["s"]=s;
+	value["ss"]=Date.LZ(s);
+	while (i_format < format.length) {
+		c=format.charAt(i_format);
+		token="";
+		while ((format.charAt(i_format)==c) && (i_format < format.length)) {
+			token += format.charAt(i_format++);
+		}
+		if (typeof(value[token])!="undefined") { 
+			result=result + value[token]; 
+		}
+		else { 
+			result=result + token; 
+		}
+	}
+	return result;
+};
+
+// Get the full name of the day for a date
+Date.prototype.getDayName = function() { 
+	return Date.dayNames[this.getDay()];
+};
+
+// Get the abbreviation of the day for a date
+Date.prototype.getDayAbbreviation = function() { 
+	return Date.dayAbbreviations[this.getDay()];
+};
+
+// Get the full name of the month for a date
+Date.prototype.getMonthName = function() {
+	return Date.monthNames[this.getMonth()];
+};
+
+// Get the abbreviation of the month for a date
+Date.prototype.getMonthAbbreviation = function() { 
+	return Date.monthAbbreviations[this.getMonth()];
+};
+
+// Clear all time information in a date object
+Date.prototype.clearTime = function() {
+  this.setHours(0); 
+  this.setMinutes(0);
+  this.setSeconds(0); 
+  this.setMilliseconds(0);
+  return this;
+};
+
+// Add an amount of time to a date. Negative numbers can be passed to subtract time.
+Date.prototype.add = function(interval, number) {
+	if (typeof(interval)=="undefined" || interval==null || typeof(number)=="undefined" || number==null) { 
+		return this; 
+	}
+	number = +number;
+	if (interval=='y') { // year
+		this.setFullYear(this.getFullYear()+number);
+	}
+	else if (interval=='M') { // Month
+		this.setMonth(this.getMonth()+number);
+	}
+	else if (interval=='d') { // Day
+		this.setDate(this.getDate()+number);
+	}
+	else if (interval=='w') { // Weekday
+		var step = (number>0)?1:-1;
+		while (number!=0) {
+			this.add('d',step);
+			while(this.getDay()==0 || this.getDay()==6) { 
+				this.add('d',step);
+			}
+			number -= step;
+		}
+	}
+	else if (interval=='h') { // Hour
+		this.setHours(this.getHours() + number);
+	}
+	else if (interval=='m') { // Minute
+		this.setMinutes(this.getMinutes() + number);
+	}
+	else if (interval=='s') { // Second
+		this.setSeconds(this.getSeconds() + number);
+	}
+	return this;
+};
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/resources/js/menu.js b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/resources/js/menu.js
new file mode 100644
index 0000000..fb34d6a
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/resources/js/menu.js
@@ -0,0 +1,54 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+  var lastHighlightedMenu=null;   
+  function menuHighlight(menuIndex) {  
+    menuDisappear();          
+    var myDiv = document.getElementById("menu"+menuIndex); 
+    // armazena qual o item de menu foi selecionado
+    lastHighlightedMenu=myDiv; 
+    myDiv.style.display="block";        
+  }
+
+  function menuDisappear() {
+    //  retorna true se diferente de null ou undefined
+    if(lastHighlightedMenu) 
+      lastHighlightedMenu.style.display="none";
+  }
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/resources/js/validations.js b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/resources/js/validations.js
new file mode 100644
index 0000000..ca2a1be
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/resources/js/validations.js
@@ -0,0 +1,382 @@
+/*
+
+ * OSR: https://opensourcereview.central.sun.com/app?action=ViewReq&review_type=Expedited&traq_num=12626
+ * source: http://www.mattkruse.com/javascript/validations/validations.js
+ * version: December 29, 2003
+
+ */
+
+// ===================================================================
+// Author: Matt Kruse <matt at mattkruse.com>
+// WWW: http://www.mattkruse.com/
+//
+// NOTICE: You may use this code for any purpose, commercial or
+// private, without any further permission from the author. You may
+// remove this notice from your final code if you wish, however it is
+// appreciated by the author if at least my web site address is kept.
+//
+// You may *NOT* re-distribute this code in any way except through its
+// use. That means, you can include it in your product, or your web
+// site, or any other form where the code is actually being used. You
+// may not put the plain javascript up on your site for download or
+// include it in your javascript libraries for download. 
+// If you wish to share this code with others, please just point them
+// to the URL instead.
+// Please DO NOT link directly to my .js files from your site. Copy
+// the files to your server and use them there. Thank you.
+// ===================================================================
+
+// HISTORY
+// ------------------------------------------------------------------
+// December 29, 2003: Added the option to specify a delimiter for
+//    multiple valued input field via getInputValue(), etc.
+
+//-------------------------------------------------------------------
+// Trim functions
+//   Returns string with whitespace trimmed
+//-------------------------------------------------------------------
+function LTrim(str){
+	if (str==null){return null;}
+	for(var i=0;str.charAt(i)==" ";i++);
+	return str.substring(i,str.length);
+	}
+function RTrim(str){
+	if (str==null){return null;}
+	for(var i=str.length-1;str.charAt(i)==" ";i--);
+	return str.substring(0,i+1);
+	}
+function Trim(str){return LTrim(RTrim(str));}
+function LTrimAll(str) {
+	if (str==null){return str;}
+	for (var i=0; str.charAt(i)==" " || str.charAt(i)=="\n" || str.charAt(i)=="\t"; i++);
+	return str.substring(i,str.length);
+	}
+function RTrimAll(str) {
+	if (str==null){return str;}
+	for (var i=str.length-1; str.charAt(i)==" " || str.charAt(i)=="\n" || str.charAt(i)=="\t"; i--);
+	return str.substring(0,i+1);
+	}
+function TrimAll(str) {
+	return LTrimAll(RTrimAll(str));
+	}
+//-------------------------------------------------------------------
+// isNull(value)
+//   Returns true if value is null
+//-------------------------------------------------------------------
+function isNull(val){return(val==null);}
+
+//-------------------------------------------------------------------
+// isBlank(value)
+//   Returns true if value only contains spaces
+//-------------------------------------------------------------------
+function isBlank(val){
+	if(val==null){return true;}
+	for(var i=0;i<val.length;i++) {
+		if ((val.charAt(i)!=' ')&&(val.charAt(i)!="\t")&&(val.charAt(i)!="\n")&&(val.charAt(i)!="\r")){return false;}
+		}
+	return true;
+	}
+
+//-------------------------------------------------------------------
+// isInteger(value)
+//   Returns true if value contains all digits
+//-------------------------------------------------------------------
+function isInteger(val){
+	if (isBlank(val)){return false;}
+	for(var i=0;i<val.length;i++){
+		if(!isDigit(val.charAt(i))){return false;}
+		}
+	return true;
+	}
+
+//-------------------------------------------------------------------
+// isNumeric(value)
+//   Returns true if value contains a positive float value
+//-------------------------------------------------------------------
+function isNumeric(val){return(parseFloat(val,10)==(val*1));}
+
+//-------------------------------------------------------------------
+// isArray(obj)
+// Returns true if the object is an array, else false
+//-------------------------------------------------------------------
+function isArray(obj){return(typeof(obj.length)=="undefined")?false:true;}
+
+//-------------------------------------------------------------------
+// isDigit(value)
+//   Returns true if value is a 1-character digit
+//-------------------------------------------------------------------
+function isDigit(num) {
+	if (num.length>1){return false;}
+	var string="1234567890";
+	if (string.indexOf(num)!=-1){return true;}
+	return false;
+	}
+
+//-------------------------------------------------------------------
+// setNullIfBlank(input_object)
+//   Sets a form field to "" if it isBlank()
+//-------------------------------------------------------------------
+function setNullIfBlank(obj){if(isBlank(obj.value)){obj.value="";}}
+
+//-------------------------------------------------------------------
+// setFieldsToUpperCase(input_object)
+//   Sets value of form field toUpperCase() for all fields passed
+//-------------------------------------------------------------------
+function setFieldsToUpperCase(){
+	for(var i=0;i<arguments.length;i++) {
+		arguments[i].value = arguments[i].value.toUpperCase();
+		}
+	}
+
+//-------------------------------------------------------------------
+// disallowBlank(input_object[,message[,true]])
+//   Checks a form field for a blank value. Optionally alerts if 
+//   blank and focuses
+//-------------------------------------------------------------------
+function disallowBlank(obj){
+	var msg=(arguments.length>1)?arguments[1]:"";
+	var dofocus=(arguments.length>2)?arguments[2]:false;
+	if (isBlank(getInputValue(obj))){
+		if(!isBlank(msg)){alert(msg);}
+		if(dofocus){
+			if (isArray(obj) && (typeof(obj.type)=="undefined")) {obj=obj[0];}
+			if(obj.type=="text"||obj.type=="textarea"||obj.type=="password") { obj.select(); }
+			obj.focus();
+			}
+		return true;
+		}
+	return false;
+	}
+
+//-------------------------------------------------------------------
+// disallowModify(input_object[,message[,true]])
+//   Checks a form field for a value different than defaultValue. 
+//   Optionally alerts and focuses
+//-------------------------------------------------------------------
+function disallowModify(obj){
+	var msg=(arguments.length>1)?arguments[1]:"";
+	var dofocus=(arguments.length>2)?arguments[2]:false;
+	if (getInputValue(obj)!=getInputDefaultValue(obj)){
+		if(!isBlank(msg)){alert(msg);}
+		if(dofocus){
+			if (isArray(obj) && (typeof(obj.type)=="undefined")) {obj=obj[0];}
+			if(obj.type=="text"||obj.type=="textarea"||obj.type=="password") { obj.select(); }
+			obj.focus();
+			}
+		setInputValue(obj,getInputDefaultValue(obj));
+		return true;
+		}
+	return false;
+	}
+
+//-------------------------------------------------------------------
+// commifyArray(array[,delimiter])
+//   Take an array of values and turn it into a comma-separated string
+//   Pass an optional second argument to specify a delimiter other than
+//   comma.
+//-------------------------------------------------------------------
+function commifyArray(obj,delimiter){
+	if (typeof(delimiter)=="undefined" || delimiter==null) {
+		delimiter = ",";
+		}
+	var s="";
+	if(obj==null||obj.length<=0){return s;}
+	for(var i=0;i<obj.length;i++){
+		s=s+((s=="")?"":delimiter)+obj[i].toString();
+		}
+	return s;
+	}
+
+//-------------------------------------------------------------------
+// getSingleInputValue(input_object,use_default,delimiter)
+//   Utility function used by others
+//-------------------------------------------------------------------
+function getSingleInputValue(obj,use_default,delimiter) {
+	switch(obj.type){
+		case 'radio': case 'checkbox': return(((use_default)?obj.defaultChecked:obj.checked)?obj.value:null);
+		case 'text': case 'hidden': case 'textarea': return(use_default)?obj.defaultValue:obj.value;
+		case 'password': return((use_default)?null:obj.value);
+		case 'select-one':
+			if (obj.options==null) { return null; }
+			if(use_default){
+				var o=obj.options;
+				for(var i=0;i<o.length;i++){if(o[i].defaultSelected){return o[i].value;}}
+				return o[0].value;
+				}
+			if (obj.selectedIndex<0){return null;}
+			return(obj.options.length>0)?obj.options[obj.selectedIndex].value:null;
+		case 'select-multiple': 
+			if (obj.options==null) { return null; }
+			var values=new Array();
+			for(var i=0;i<obj.options.length;i++) {
+				if((use_default&&obj.options[i].defaultSelected)||(!use_default&&obj.options[i].selected)) {
+					values[values.length]=obj.options[i].value;
+					}
+				}
+			return (values.length==0)?null:commifyArray(values,delimiter);
+		}
+	alert("FATAL ERROR: Field type "+obj.type+" is not supported for this function");
+	return null;
+	}
+
+//-------------------------------------------------------------------
+// getSingleInputText(input_object,use_default,delimiter)
+//   Utility function used by others
+//-------------------------------------------------------------------
+function getSingleInputText(obj,use_default,delimiter) {
+	switch(obj.type){
+		case 'radio': case 'checkbox': 	return "";
+		case 'text': case 'hidden': case 'textarea': return(use_default)?obj.defaultValue:obj.value;
+		case 'password': return((use_default)?null:obj.value);
+		case 'select-one':
+			if (obj.options==null) { return null; }
+			if(use_default){
+				var o=obj.options;
+				for(var i=0;i<o.length;i++){if(o[i].defaultSelected){return o[i].text;}}
+				return o[0].text;
+				}
+			if (obj.selectedIndex<0){return null;}
+			return(obj.options.length>0)?obj.options[obj.selectedIndex].text:null;
+		case 'select-multiple': 
+			if (obj.options==null) { return null; }
+			var values=new Array();
+			for(var i=0;i<obj.options.length;i++) {
+				if((use_default&&obj.options[i].defaultSelected)||(!use_default&&obj.options[i].selected)) {
+					values[values.length]=obj.options[i].text;
+					}
+				}
+			return (values.length==0)?null:commifyArray(values,delimiter);
+		}
+	alert("FATAL ERROR: Field type "+obj.type+" is not supported for this function");
+	return null;
+	}
+
+//-------------------------------------------------------------------
+// setSingleInputValue(input_object,value)
+//   Utility function used by others
+//-------------------------------------------------------------------
+function setSingleInputValue(obj,value) {
+	switch(obj.type){
+		case 'radio': case 'checkbox': if(obj.value==value){obj.checked=true;return true;}else{obj.checked=false;return false;}
+		case 'text': case 'hidden': case 'textarea': case 'password': obj.value=value;return true;
+		case 'select-one': case 'select-multiple': 
+			var o=obj.options;
+			for(var i=0;i<o.length;i++){
+				if(o[i].value==value){o[i].selected=true;}
+				else{o[i].selected=false;}
+				}
+			return true;
+		}
+	alert("FATAL ERROR: Field type "+obj.type+" is not supported for this function");
+	return false;
+	}
+
+//-------------------------------------------------------------------
+// getInputValue(input_object[,delimiter])
+//   Get the value of any form input field
+//   Multiple-select fields are returned as comma-separated values, or
+//   delmited by the optional second argument
+//   (Doesn't support input types: button,file,reset,submit)
+//-------------------------------------------------------------------
+function getInputValue(obj,delimiter) {
+	var use_default=(arguments.length>2)?arguments[2]:false;
+	if (isArray(obj) && (typeof(obj.type)=="undefined")) {
+		var values=new Array();
+		for(var i=0;i<obj.length;i++){
+			var v=getSingleInputValue(obj[i],use_default,delimiter);
+			if(v!=null){values[values.length]=v;}
+			}
+		return commifyArray(values,delimiter);
+		}
+	return getSingleInputValue(obj,use_default,delimiter);
+	}
+
+//-------------------------------------------------------------------
+// getInputText(input_object[,delimiter])
+//   Get the displayed text of any form input field
+//   Multiple-select fields are returned as comma-separated values, or
+//   delmited by the optional second argument
+//   (Doesn't support input types: button,file,reset,submit)
+//-------------------------------------------------------------------
+function getInputText(obj,delimiter) {
+	var use_default=(arguments.length>2)?arguments[2]:false;
+	if (isArray(obj) && (typeof(obj.type)=="undefined")) {
+		var values=new Array();
+		for(var i=0;i<obj.length;i++){
+			var v=getSingleInputText(obj[i],use_default,delimiter);
+			if(v!=null){values[values.length]=v;}
+			}
+		return commifyArray(values,delimiter);
+		}
+	return getSingleInputText(obj,use_default,delimiter);
+	}
+
+//-------------------------------------------------------------------
+// getInputDefaultValue(input_object[,delimiter])
+//   Get the default value of any form input field when it was created
+//   Multiple-select fields are returned as comma-separated values, or
+//   delmited by the optional second argument
+//   (Doesn't support input types: button,file,password,reset,submit)
+//-------------------------------------------------------------------
+function getInputDefaultValue(obj,delimiter){return getInputValue(obj,delimiter,true);}
+
+//-------------------------------------------------------------------
+// isChanged(input_object)
+//   Returns true if input object's value has changed since it was
+//   created.
+//-------------------------------------------------------------------
+function isChanged(obj){return(getInputValue(obj)!=getInputDefaultValue(obj));}
+
+//-------------------------------------------------------------------
+// setInputValue(obj,value)
+//   Set the value of any form field. In cases where no matching value
+//   is available (select, radio, etc) then no option will be selected
+//   (Doesn't support input types: button,file,password,reset,submit)
+//-------------------------------------------------------------------
+function setInputValue(obj,value) {
+	var use_default=(arguments.length>1)?arguments[1]:false;
+	if(isArray(obj)&&(typeof(obj.type)=="undefined")){
+		for(var i=0;i<obj.length;i++){setSingleInputValue(obj[i],value);}
+		}
+	else{setSingleInputValue(obj,value);}
+	}
+	
+//-------------------------------------------------------------------
+// isFormModified(form_object,hidden_fields,ignore_fields)
+//   Check to see if anything in a form has been changed. By default
+//   it will check all visible form elements and ignore all hidden 
+//   fields. 
+//   You can pass a comma-separated list of field names to check in
+//   addition to visible fields (for hiddens, etc).
+//   You can also pass a comma-separated list of field names to be
+//   ignored in the check.
+//-------------------------------------------------------------------
+function isFormModified(theform,hidden_fields,ignore_fields){
+	if(hidden_fields==null){hidden_fields="";}
+	if(ignore_fields==null){ignore_fields="";}
+	var hiddenFields=new Object();
+	var ignoreFields=new Object();
+	var i,field;
+	var hidden_fields_array=hidden_fields.split(',');
+	for (i=0;i<hidden_fields_array.length;i++) {
+		hiddenFields[Trim(hidden_fields_array[i])]=true;
+		}
+	var ignore_fields_array=ignore_fields.split(',');
+	for (i=0;i<ignore_fields_array.length;i++) {
+		ignoreFields[Trim(ignore_fields_array[i])]=true;
+		}
+	for (i=0;i<theform.elements.length;i++) {
+		var changed=false;
+		var name=theform.elements[i].name;
+		if(!isBlank(name)){
+			var type=theform.elements[i].type;
+			if(!ignoreFields[name]){
+				if(type=="hidden"&&hiddenFields[name]){changed=isChanged(theform[name]);}
+				else if(type=="hidden"){changed=false;}
+				else {changed=isChanged(theform[name]);}
+				}
+			}
+		if(changed){return true;}
+		}
+		return false;
+	}
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/skin/changeSkin.xhtml b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/skin/changeSkin.xhtml
new file mode 100644
index 0000000..9e90977
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/skin/changeSkin.xhtml
@@ -0,0 +1,79 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:scrum="http://java.sun.com/jsf/composite/components">
+
+    <ui:composition template="/template.xhtml">
+        <f:metadata>
+            <f:viewParam name="skin" value="#{skinUrlManager.skin}" />
+            <f:event type="preRenderView" listener="#{skinUrlManager.update}" />
+        </f:metadata>
+
+        <ui:define name="pageTitle">
+            <h:outputText value="#{i18n['story.show.title']}"></h:outputText>
+        </ui:define>
+        <ui:define name="content">
+            <h:form id="frmListStories">
+                <h:panelGrid columns="#{skinValuesManager.size + 1}" width="990" >
+                    <h:outputLabel value=""/>
+                    <ui:repeat value="#{skinValuesManager.names}" var="name">
+                        <td>
+                        <scrum:postitLink color="#{name}" url="changeSkin"
+                            paramName="skin" paramValue="#{name}">
+                            <ui:param name="postitLabel" value=""/>
+                            <ui:param name="postitText" value="#{name}"/>
+                        </scrum:postitLink>
+                        </td>
+                    </ui:repeat>
+                </h:panelGrid>
+            </h:form>
+        </ui:define>
+    </ui:composition>
+
+</html>
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/sprint/create.xhtml b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/sprint/create.xhtml
new file mode 100644
index 0000000..5d23f6e
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/sprint/create.xhtml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+
+    <ui:composition template="/template.xhtml">
+        <ui:define name="pageTitle">
+            <h:outputText value="#{i18n['sprint.create.title']}"/>
+        </ui:define>
+        <ui:define name="navigationBar">
+            <h:commandLink immediate="true" action="/project/show" value="#{i18n['sprint.form.label.projects']}"/>
+            <h:outputText value="#{i18n['navigation.separtor']}"/>
+            <h:commandLink rendered="#{sprintManager.project.name != null}" immediate="true" action="/project/edit" value="#{sprintManager.project.name}"/>
+            <h:outputText value="#{i18n['navigation.separtor']}"/>
+            <h:outputText value="#{i18n['sprint.create.form.title']}" styleClass="tituloForm"/>
+        </ui:define>
+        <ui:define name="content">
+            <h:form styleClass="scrumForm" id="createSprintForm">
+                <h:panelGrid columns="2" headerClass="tituloForm" footerClass="footerForm">
+                    <ui:include src="form.xhtml" />
+                    <f:facet name="footer">
+                        <h:commandButton rendered="#{sprintManager.project.name != null}" id="btnCreate" action="#{sprintManager.save}" value="#{i18n['sprint.create.button.create']}" styleClass="botaoPostIt" />
+                        <h:commandButton rendered="#{sprintManager.project.name != null}" id="btnCancel" action="show" value="#{i18n['sprint.create.button.cancel']}" styleClass="botaoPostIt" immediate="true" />
+                    </f:facet>
+                </h:panelGrid>
+            </h:form>
+        </ui:define>
+    </ui:composition>
+
+</html>
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/sprint/edit.xhtml b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/sprint/edit.xhtml
new file mode 100644
index 0000000..d0678a1
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/sprint/edit.xhtml
@@ -0,0 +1,79 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+
+    <ui:composition template="/template.xhtml">
+        <ui:define name="pageTitle">
+            <h:outputText value="#{i18n['sprint.edit.title']}"/>
+        </ui:define>
+        <ui:define name="navigationBar">
+            <h:commandLink immediate="true" action="/project/show" value="#{i18n['navigation.projects']}"/>
+            <h:outputText value="#{i18n['navigation.separtor']}"/>
+            <h:commandLink rendered="#{sprintManager.project.name != null}" immediate="true" action="/project/edit"  value="#{sprintManager.project.name}"/>
+            <h:outputText value="#{i18n['navigation.separtor']}"/>
+            <h:commandLink rendered="#{sprintManager.currentSprint.name != null}" immediate="true" action="/sprint/show" value="#{i18n['navigation.sprints']}"/>
+            <h:outputText value="#{i18n['navigation.separtor']}"/>
+            <h:outputText value="#{i18n['sprint.edit.form.title']}" styleClass="tituloForm"/>
+
+        </ui:define>
+        <ui:define name="content">
+            <h:form styleClass="scrumForm" id="editSprintForm">
+                <h:panelGrid columns="2" headerClass="tituloForm" footerClass="footerForm">
+                    <ui:include src="form.xhtml" />
+                    <f:facet name="footer">
+                        <h:commandButton rendered="#{sprintManager.currentSprint.name != null}" id="btnEditUpdate" action="#{sprintManager.save}" value="#{i18n['sprint.edit.button.update']}" styleClass="botaoPostIt" />
+                        <h:commandButton rendered="#{sprintManager.currentSprint.name != null}" id="btnEditCancel" action="#{sprintManager.cancelEdit}" immediate="true" value="#{i18n['sprint.edit.button.cancel']}" styleClass="botaoPostIt" />
+                        <h:button rendered="#{sprintManager.currentSprint.name != null}" styleClass="botaoPostIt" outcome="/dashboard/show" value="#{i18n['sprint.show.button.showDashboard']}" />
+                    </f:facet>
+                </h:panelGrid>
+            </h:form>
+        </ui:define>
+    </ui:composition>
+
+</html>
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/sprint/form.xhtml b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/sprint/form.xhtml
new file mode 100644
index 0000000..6f6e3b7
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/sprint/form.xhtml
@@ -0,0 +1,87 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+
+    <ui:composition>
+        <h:panelGrid columns="3" columnClasses="formLabel, formInput, formErrorMessage" styleClass="postItFormTable">           
+            <h:outputLabel value="#{i18n['sprint.form.label.name']}:" for="itName"/>
+            <h:inputText id="itName" value="#{sprintManager.currentSprint.name}" required="true"
+                requiredMessage="#{i18n['sprint.form.label.name.required']}" size="30" />
+            <h:message for="itName" styleClass="errorMessage" />
+
+            <h:outputLabel value="#{i18n['sprint.form.label.goals']}:" for="itGoals"  />
+            <h:inputTextarea id="itGoals" value="#{sprintManager.currentSprint.goals}" required="true" cols="31" rows="3" requiredMessage="#{i18n['sprint.form.label.goals.required']}" />
+            <h:message for="itGoals" styleClass="errorMessage"/>
+
+            <h:outputLabel value="#{i18n['sprint.form.label.iterationScope']}:" for="itIterationScope"  />
+            <h:inputText id="itIterationScope" value="#{sprintManager.currentSprint.iterationScope}" required="true" size="50" requiredMessage="#{i18n['sprint.form.label.iterationScope.required']}" />
+            <h:message for="itIterationScope" styleClass="errorMessage"/>
+
+            <h:outputLabel value="#{i18n['sprint.form.label.startDate']}:" for="itStartedDate"  />
+            <h:panelGroup>
+                <h:inputText id="itStartedDate" value="#{sprintManager.currentSprint.startDate}" required="true" requiredMessage="#{i18n['sprint.form.label.startDate.required']}">
+                    <f:convertDateTime pattern="#{i18n['sprint.form.label.startDate.pattern']}" />
+                </h:inputText>
+                <h:outputText value="(#{i18n['sprint.form.label.startDate.pattern']})" styleClass="inputPattern" />
+            </h:panelGroup>
+            <h:message for="itStartedDate" styleClass="errorMessage" />
+
+            <h:outputLabel value="#{i18n['sprint.form.label.dailyMeetingTime']}:" for="itDailyMeetingTime"  />
+            <h:panelGroup>
+                <h:inputText id="itDailyMeetingTime" value="#{sprintManager.currentSprint.dailyMeetingTime}" required="true" requiredMessage="#{i18n['sprint.form.label.dailyMeetingTime.required']}">
+                    <f:convertDateTime pattern="#{i18n['sprint.form.label.dailyMeetingTime.pattern']}" />
+                </h:inputText>
+                <h:outputText value="(#{i18n['sprint.form.label.dailyMeetingTime.pattern']})" styleClass="inputPattern"/>
+            </h:panelGroup>
+            <h:message for="itDailyMeetingTime" styleClass="errorMessage"/>
+
+        </h:panelGrid>
+    </ui:composition>
+
+</html>
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/sprint/show.xhtml b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/sprint/show.xhtml
new file mode 100644
index 0000000..7cc83fb
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/sprint/show.xhtml
@@ -0,0 +1,138 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+
+    <ui:composition template="/template.xhtml">
+        <ui:define name="pageTitle">
+            <h:outputText value="#{i18n['sprint.show.title']}"/>
+        </ui:define>
+
+        <ui:define name="navigationBar">
+            <h:commandLink action="/project/show" value="#{i18n['sprint.form.label.projects']}"/>
+            <h:outputText value="#{i18n['navigation.separtor']}"/>
+            <h:commandLink rendered="#{sprintManager.project.name != null}" action="/project/edit"  value="#{sprintManager.project.name}"/>
+            <h:outputText value="#{i18n['navigation.separtor']}"/>
+            <h:outputText value="#{i18n['sprints.table.title']}" styleClass="tituloForm"/>
+        </ui:define>
+        <ui:define name="content">
+            <h:form id="frmListSprints">
+                <h:panelGrid columns="2" headerClass="tituloForm" footerClass="footerForm">
+
+                    <h:outputText value="#{i18n['sprint.show.table.label.empty']}"
+                                  rendered="#{sprintList.sprints.rowCount eq 0}" />
+                    <h:dataTable value="#{sprintList.sprints}" var="sprint"
+                                 rendered="#{sprintList.sprints.rowCount > 0}"
+                                 title="#{i18n['sprint.show.table.title']}"
+                                 summary="#{i18n['sprint.show.table.title']}"
+                                 border="0"
+                                 headerClass="datatableHeader"
+                                 rowClasses="datatableRow,datatableRow2"
+                                 columnClasses="dataTableFirstColumn"
+                                 styleClass="datatable"
+                                 id="dtSprints">
+
+                        <h:column>
+                            <f:facet name="header">
+                                <h:outputText value="#" />
+                            </f:facet>
+                            <h:outputText value="#{sprintList.sprints.rowIndex + 1}" />
+                        </h:column>
+                        <h:column>
+                            <f:facet name="header">
+                                <h:outputText value="#{i18n['sprint.show.table.header.name']}" />
+                            </f:facet>
+                            <h:outputText value="#{sprint.name}" />
+                        </h:column>
+                        <h:column>
+                            <f:facet name="header">
+                                <h:outputText value="#{i18n['sprint.show.table.header.goals']}" />
+                            </f:facet>
+                            <h:outputText value="#{sprint.goals}" />
+                        </h:column>
+                        <h:column>
+                            <f:facet name="header">
+                                <h:outputText value="#{i18n['sprint.show.table.header.startDate']}"/>
+                            </f:facet>
+                            <h:outputText value="#{sprint.startDate}">
+                                <f:convertDateTime pattern="#{i18n['sprint.show.table.header.startDate.pattern']}" />
+                            </h:outputText>
+                        </h:column>
+                        <h:column>
+                            <f:facet name="header">
+                                <h:outputText value="#{i18n['sprint.show.table.header.dailyMeetingTime']}" />
+                            </f:facet>
+                            <h:outputText value="#{sprint.dailyMeetingTime}">
+                                <f:convertDateTime pattern="#{i18n['sprint.show.table.header.dailyMeetingTime.pattern']}" />
+                            </h:outputText>
+                        </h:column>
+                        <h:column>
+                            <f:facet name="header">
+                                <h:outputText value="#{i18n['sprint.show.table.header.actions']}"/>
+                            </f:facet>
+                            <h:commandButton styleClass="botaoPostIt" action="#{sprintList.edit}" value="#{i18n['sprint.show.button.edit']}"  />
+
+                            <h:commandButton id="btnDeleteSprint" styleClass="botaoPostIt" action="#{sprintList.remove}" value="#{i18n['sprint.show.button.delete']} AJAX"
+                                             onclick="jsf.ajax.request(this, event, {execute: 'frmListSprints',
+                                                 render: 'frmListSprints'}); return false;" />
+
+                            <h:commandButton styleClass="botaoPostIt" action="#{sprintList.remove}" value="#{i18n['sprint.show.button.delete']}"  />
+                            <h:commandButton styleClass="botaoPostIt" action="#{sprintList.showDashboard}" value="#{i18n['sprint.show.button.showDashboard']}"  />
+                            <h:commandButton styleClass="botaoPostIt" action="#{sprintList.showStories}" value="#{i18n['sprint.show.button.showStories']}"  />
+                        </h:column>
+
+                    </h:dataTable>
+                    <f:facet name="footer">
+                        <h:commandButton rendered="#{sprintManager.project.name != null}" styleClass="botaoPostIt" action="#{sprintManager.create}" value="#{i18n['sprint.show.button.newSprint']}" />
+                    </f:facet>
+                </h:panelGrid>
+            </h:form>
+        </ui:define>
+    </ui:composition>
+
+</html>
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/storiesList.xhtml b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/storiesList.xhtml
new file mode 100644
index 0000000..eac925f
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/storiesList.xhtml
@@ -0,0 +1,145 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+
+    <ui:composition>
+
+
+
+        <h:panelGrid columns="1" border="0">
+            <h:outputLabel value="#{i18n['stories.label.nostory']}" rendered="#{storiesMB.dm.rowCount eq 0}"/>
+
+            <br/><br/>
+            <h:panelGrid columns="1" style="float: right">
+                <h:panelGroup>
+                    <h:outputLabel value="#{i18n['stories.label.sprint']}: " for="otSprint"  />
+                    <h:outputText id="otSprint" value="Mostrar o nome do Sprint com link para o Sprint" />
+                </h:panelGroup>
+                <h:panelGroup>
+                    <h:outputLabel value="#{i18n['label.startedAt']}: " for="otSprintStartDate"/>
+                    <h:outputText id="otSprintStartDate" value="mostrar a data de inicio do sprint"  />
+                    <br/><br/>
+                </h:panelGroup>
+            </h:panelGrid>
+
+            <h:form id="testeForm">
+
+
+                <h:commandLink styleClass="navigationLink" id="showButton" action="#{sprintsMB.showForm}"
+                               value="+ Add Story to this Sprint"
+
+                               onclick="jsf.ajax.request(this, event,
+                                   {execute:'testeForm:showButton',
+                                       render: 'testeForm:testeShowHidePG testeForm:testeShowHidePG:newStoryPG'});
+                                   return false;" >
+
+                </h:commandLink>
+
+
+                <h:panelGrid columns="1" border="0" id="testeShowHidePG">
+
+                    <h:panelGrid columns="1" border="0" id="newStoryPG" rendered="#{sprintsMB.showAddNewStoryForm}">
+                        <ui:include src="./newStory.xhtml"></ui:include>                        
+                    </h:panelGrid>
+                </h:panelGrid>
+
+
+
+
+            </h:form>
+            <h:form id="frmListStories">
+
+                <h:dataTable value="#{storiesMB.dm}" var="story" rendered="#{storiesMB.dm.rowCount > 0}"
+                             title="#{i18n['stories.table.title']}"
+                             summary="#{i18n['stories.table.title']}"
+                             border="0"
+                             id="dtStories"
+                             headerClass="datatableHeader"
+                             rowClasses="datatableRow,datatableRow2"
+                             columnClasses="dataTableFirstColumn"
+                             styleClass="datatable">
+
+                    <h:column>
+                        <f:facet name="header"><h:outputText value="#" /></f:facet>
+                        <h:outputText value="#{storiesMB.dm.rowIndex + 1}" />
+                    </h:column>
+                    <h:column>
+                        <f:facet name="header"><h:outputText value="#{i18n['stories.label.name']}" /></f:facet>
+                        <h:outputText value="#{story.name}" />
+
+                    </h:column>
+                    <h:column>
+                        <f:facet name="header"><h:outputText value="#{i18n['stories.label.priority']}" /></f:facet>
+                        <h:outputText value="#{story.priority}" />
+
+                    </h:column>
+                    <h:column>
+                        <f:facet name="header"><h:outputText value="#{i18n['stories.label.estimation']}" /></f:facet>
+                        <h:outputText value="#{story.estimation}" />
+
+                    </h:column>
+                    <h:column>
+                        <f:facet name="header"><h:outputText value="#{i18n['stories.label.acceptance']}"/></f:facet>
+                        <h:outputText value="#{story.acceptance}" />
+
+                    </h:column>
+                    <h:column>
+                        <f:facet name="header"><h:outputText value="#{i18n['label.actions']}" /></f:facet>
+                        <h:commandButton styleClass="botaoPostIt" action="#{storiesMB.edit}" value="#{i18n['button.edit']}" immediate="true" />
+
+
+                        <h:commandButton styleClass="botaoPostIt" action="#{storiesMB.remove}" value="#{i18n['button.delete']}" immediate="true" />
+                        <h:commandButton styleClass="botaoPostIt" action="#{storiesMB.showTasks}" value="#{i18n['button.tasks']}" immediate="true" />
+                    </h:column>
+                </h:dataTable>
+            </h:form>
+
+
+        </h:panelGrid>
+
+    </ui:composition>
+</html>
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/story/create.xhtml b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/story/create.xhtml
new file mode 100644
index 0000000..826056a
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/story/create.xhtml
@@ -0,0 +1,109 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+      
+    <ui:composition template="/template.xhtml">
+        <ui:define name="pageTitle">
+            <h:outputText value="#{i18n['story.create.title']}"></h:outputText>
+        </ui:define>
+
+
+        <ui:define name="navigationBar">
+            <h:commandLink  immediate="true" action="/project/show" value="#{i18n['navigation.projects']}"></h:commandLink>
+            <h:outputText value="#{i18n['navigation.separtor']}"></h:outputText>
+            <h:commandLink rendered="#{sprintManager.project.name != null}" immediate="true" action="/project/edit"  value="#{sprintManager.project.name}"></h:commandLink>
+            <h:outputText value="#{i18n['navigation.separtor']}"></h:outputText>
+            <h:commandLink rendered="#{sprintManager.project.name != null}" immediate="true" action="/sprint/show" value="#{i18n['navigation.sprints']}"></h:commandLink>
+            <h:outputText value="#{i18n['navigation.separtor']}"></h:outputText>
+            <h:commandLink rendered="#{storyManager.sprint.name != null}" immediate="true" action="/sprint/edit"  value="#{sprintManager.currentSprint.name}"></h:commandLink>
+            <h:outputText value="#{i18n['navigation.separtor']}"></h:outputText>
+            <h:commandLink rendered="#{storyManager.sprint.name != null}" immediate="true" action="/story/show" value="#{i18n['navigation.stories']}"></h:commandLink>
+            <h:outputText value="#{i18n['navigation.separtor']}"></h:outputText>
+            <h:outputText value="#{i18n['story.create.title']}" styleClass="tituloForm"></h:outputText>
+        </ui:define>
+        <ui:define name="content">
+            <h:form styleClass="scrumForm" id="createStoryForm">
+                <h:panelGrid columns="3" columnClasses="formLabel, formInput, formErrorMessage" styleClass="postItFormTable">
+                    <h:outputLabel value="#{i18n['story.form.label.name']}:" for="itName"/>
+                    <h:inputText id="itName" value="#{storyManager.currentStory.name}" required="true"
+                                 requiredMessage="#{i18n['story.form.label.name.required']}" size="40" maxlength="40"
+                                 validator="#{storyManager.checkUniqueStoryName}" />
+                    <h:message for="itName" styleClass="errorMessage"/>
+
+                    <h:outputLabel value="#{i18n['story.form.label.startDate']}:" for="itStartedDate"  />
+                    <h:panelGroup>
+                        <h:inputText id="itStartedDate" value="#{storyManager.currentStory.startDate}" required="true" requiredMessage="#{i18n['story.form.label.startDate.required']}" size="10" maxlength="10">
+                            <f:convertDateTime pattern="#{i18n['story.form.label.startDate.pattern']}" />
+                        </h:inputText>
+                        <h:outputText value="(#{i18n['story.form.label.startDate.pattern']})" styleClass="inputPattern" />
+                    </h:panelGroup>
+                    <h:message for="itStartedDate" styleClass="errorMessage" />
+
+                    <h:outputLabel value="#{i18n['story.form.label.priority']}:" for="itPriority"  />
+                    <h:inputText id="itPriority" value="#{storyManager.currentStory.priority}" required="true" requiredMessage="#{i18n['story.form.label.priority.required']}" />
+                    <h:message for="itPriority" styleClass="errorMessage"/>
+
+                    <h:outputLabel value="#{i18n['story.form.label.estimation']}:" for="itEstimation"  />
+                    <h:inputText id="itEstimation" value="#{storyManager.currentStory.estimation}" required="true" requiredMessage="#{i18n['story.form.label.estimation.required']}" />
+                    <h:message for="itEstimation" styleClass="errorMessage"/>
+
+                    <h:outputLabel value="#{i18n['story.form.label.acceptance']}:" for="itAcceptance"  />
+                    <h:inputText id="itAcceptance" value="#{storyManager.currentStory.acceptance}" required="true" requiredMessage="#{i18n['story.form.label.acceptance.required']}" size="40" maxlength="40" />
+                    <h:message for="itAcceptance" styleClass="errorMessage" />
+                    <f:facet name="footer">
+                        <h:commandButton rendered="#{storyManager.sprint.name != null}" id="btnCreate" action="#{storyManager.save}" value="#{i18n['story.create.button.create']}" styleClass="botaoPostIt" />
+                        <h:commandButton rendered="#{storyManager.sprint.name != null}" id="btnCancel" action="show" value="#{i18n['story.create.button.cancel']}" styleClass="botaoPostIt" immediate="true" />
+                    </f:facet>
+                </h:panelGrid>
+            </h:form>
+
+        </ui:define>
+    </ui:composition>
+
+</html>
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/story/edit.xhtml b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/story/edit.xhtml
new file mode 100644
index 0000000..f41b071
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/story/edit.xhtml
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+
+    <ui:composition template="/template.xhtml">
+        <ui:define name="pageTitle">
+            <h:outputText value="#{i18n['story.edit.title']}"></h:outputText>
+        </ui:define>
+
+        <ui:define name="navigationBar">
+            <h:commandLink immediate="true" action="/project/show" value="#{i18n['navigation.projects']}"></h:commandLink>
+            <h:outputText value="#{i18n['navigation.separtor']}"></h:outputText>
+            <h:commandLink rendered="#{sprintManager.project.name != null}" immediate="true" action="/project/edit" value="#{sprintManager.project.name}"></h:commandLink>
+            <h:outputText value="#{i18n['navigation.separtor']}"></h:outputText>
+            <h:commandLink rendered="#{sprintManager.project.name != null}" immediate="true" action="/sprint/show"  value="#{i18n['navigation.sprints']}"></h:commandLink>
+            <h:outputText value="#{i18n['navigation.separtor']}"></h:outputText>
+            <h:commandLink rendered="#{storyManager.sprint.name != null}" immediate="true" action="/sprint/edit"  value="#{sprintManager.currentSprint.name}"></h:commandLink>
+            <h:outputText value="#{i18n['navigation.separtor']}"></h:outputText>
+            <h:commandLink rendered="#{storyManager.sprint.name != null}" immediate="true" action="/story/show"   value="#{i18n['navigation.stories']}"></h:commandLink>
+            <h:outputText value="#{i18n['navigation.separtor']}"></h:outputText>
+            <h:outputText value="#{i18n['story.edit.title']}" styleClass="tituloForm"></h:outputText>
+        </ui:define>
+        <ui:define name="content">
+            <h:form styleClass="scrumForm" id="editStoryForm">
+                <h:panelGrid columns="3" columnClasses="formLabel, formInput, formErrorMessage" styleClass="postItFormTable">
+                    <ui:include src="form.xhtml" />
+                    <f:facet name="footer">
+                        <h:commandButton rendered="#{storyManager.currentStory.name != null}" id="btnEditUpdate" action="#{storyManager.save}" value="#{i18n['story.edit.button.update']}" styleClass="botaoPostIt" />
+                        <h:commandButton rendered="#{storyManager.currentStory.name != null}" id="btnEditCancel" action="#{storyManager.cancelEdit}" immediate="true" value="#{i18n['story.edit.button.cancel']}" styleClass="botaoPostIt" />
+                        <h:button rendered="#{storyManager.currentStory.name != null}" styleClass="botaoPostIt" outcome="/dashboard/show" value="#{i18n['sprint.show.button.showDashboard']}" />
+                    </f:facet>
+                </h:panelGrid>
+            </h:form>
+        </ui:define>
+    </ui:composition>
+
+</html>
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/story/form.xhtml b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/story/form.xhtml
new file mode 100644
index 0000000..88f645d
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/story/form.xhtml
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+
+    <ui:composition>
+      
+
+            <h:outputLabel value="#{i18n['story.form.label.name']}:" for="itName"/>
+            <h:inputText id="itName" value="#{storyManager.currentStory.name}" required="true"
+                         requiredMessage="#{i18n['story.form.label.name.required']}" size="40" maxlength="40"
+                         validator="#{storyManager.checkUniqueStoryName}" />
+            <h:message for="itName" styleClass="errorMessage"/>
+
+            <h:outputLabel value="#{i18n['story.form.label.startDate']}:" for="itStartedDate"  />
+            <h:panelGroup>
+                <h:inputText id="itStartedDate" value="#{storyManager.currentStory.startDate}" required="true" requiredMessage="#{i18n['story.form.label.startDate.required']}" size="10" maxlength="10">
+                    <f:convertDateTime pattern="#{i18n['story.form.label.startDate.pattern']}" />
+                </h:inputText>
+                <h:outputText value="(#{i18n['story.form.label.startDate.pattern']})" styleClass="inputPattern" />
+            </h:panelGroup>
+            <h:message for="itStartedDate" styleClass="errorMessage" />
+
+            <h:outputLabel value="#{i18n['story.form.label.priority']}:" for="itPriority"  />
+            <h:inputText id="itPriority" value="#{storyManager.currentStory.priority}" required="true" requiredMessage="#{i18n['story.form.label.priority.required']}" />
+            <h:message for="itPriority" styleClass="errorMessage"/>
+
+            <h:outputLabel value="#{i18n['story.form.label.estimation']}:" for="itEstimation"  />
+            <h:inputText id="itEstimation" value="#{storyManager.currentStory.estimation}" required="true" requiredMessage="#{i18n['story.form.label.estimation.required']}" />
+            <h:message for="itEstimation" styleClass="errorMessage"/>
+
+            <h:outputLabel value="#{i18n['story.form.label.acceptance']}:" for="itAcceptance"  />
+            <h:inputText id="itAcceptance" value="#{storyManager.currentStory.acceptance}" required="true" requiredMessage="#{i18n['story.form.label.acceptance.required']}" size="40" maxlength="40" />
+            <h:message for="itAcceptance" styleClass="errorMessage" />
+        
+    </ui:composition>
+
+</html>
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/story/show.xhtml b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/story/show.xhtml
new file mode 100644
index 0000000..2dd42e7
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/story/show.xhtml
@@ -0,0 +1,131 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+
+    <ui:composition template="/template.xhtml">
+        <ui:define name="pageTitle">
+            <h:outputText value="#{i18n['story.show.title']}"></h:outputText>
+        </ui:define>
+        <ui:define name="navigationBar">
+            <h:commandLink action="/project/show" value="#{i18n['navigation.projects']}"></h:commandLink>
+            <h:outputText value="#{i18n['navigation.separtor']}"></h:outputText>
+            <h:commandLink rendered="#{sprintManager.project.name != null}" action="/project/edit"  value="#{sprintManager.project.name}"></h:commandLink>
+            <h:outputText value="#{i18n['navigation.separtor']}"></h:outputText>
+            <h:commandLink rendered="#{sprintManager.project.name != null}" action="/sprint/show" value="#{i18n['navigation.sprints']}"></h:commandLink>
+            <h:outputText value="#{i18n['navigation.separtor']}"></h:outputText>
+            <h:commandLink rendered="#{storyManager.sprint.name != null}" action="/sprint/edit"  value="#{sprintManager.currentSprint.name}"></h:commandLink>
+            <h:outputText value="#{i18n['navigation.separtor']}"></h:outputText>
+            <h:outputText value="#{i18n['stories.table.title']}" styleClass="tituloForm"></h:outputText>
+        </ui:define>
+        <ui:define name="content">
+            <h:form  id="frmListStories">
+                <h:panelGrid columns="3" headerClass="tituloForm" footerClass="footerForm">
+
+                    <h:outputText value="#{i18n['story.show.table.label.empty']}"
+                                  rendered="#{storyList.stories.rowCount eq 0}" />
+
+                    <h:dataTable value="#{storyList.stories}" var="story"
+                                 rendered="#{storyList.stories.rowCount > 0}"
+                                 title="#{i18n['story.show.table.title']}"
+                                 summary="#{i18n['story.show.table.title']}"
+                                 border="0"
+                                 headerClass="datatableHeader"
+                                 rowClasses="datatableRow,datatableRow2"
+                                 columnClasses="dataTableFirstColumn"
+                                 styleClass="datatable"
+                                 id="dtStories">
+
+                        <h:column>
+                            <f:facet name="header"><h:outputText value="#" /></f:facet>
+                            <h:outputText value="#{storyList.stories.rowIndex + 1}" />
+                        </h:column>
+                        <h:column>
+                            <f:facet name="header"><h:outputText value="#{i18n['story.show.table.header.name']}" /></f:facet>
+                            <h:outputText value="#{story.name}" />
+                        </h:column>
+                        <h:column>
+                            <f:facet name="header"><h:outputText value="#{i18n['story.show.table.header.startDate']}"/></f:facet>
+                            <h:outputText value="#{story.startDate}">
+                                <f:convertDateTime pattern="#{i18n['story.show.table.header.startDate.pattern']}" />
+                            </h:outputText>
+                        </h:column>
+                        <h:column>
+                            <f:facet name="header"><h:outputText value="#{i18n['story.show.table.header.priority']}" /></f:facet>
+                            <h:outputText value="#{story.priority}" />
+                        </h:column>
+                        <h:column>
+                            <f:facet name="header"><h:outputText value="#{i18n['story.show.table.header.estimation']}" /></f:facet>
+                            <h:outputText value="#{story.estimation}" />
+                        </h:column>
+                        <h:column>
+                            <f:facet name="header"><h:outputText value="#{i18n['story.show.table.header.acceptance']}" /></f:facet>
+                            <h:outputText value="#{story.acceptance}" />
+                        </h:column>
+                        <h:column>
+                            <f:facet name="header"><h:outputText value="#{i18n['story.show.table.header.actions']}"/></f:facet>
+                            <h:commandButton styleClass="botaoPostIt" action="#{storyList.edit}" value="#{i18n['story.show.button.edit']}"  />
+                            <h:commandButton styleClass="botaoPostIt" action="#{storyList.remove}" value="#{i18n['story.show.button.delete']}"  />
+                            <h:commandButton id="btnDeleteStory" styleClass="botaoPostIt" action="#{storyList.remove}" value="#{i18n['story.show.button.delete']} AJAX"
+                                             onclick="jsf.ajax.request(this, event, {execute: 'frmListStories',
+                                                 render: 'frmListStories'}); return false;" />
+                            <h:commandButton styleClass="botaoPostIt" action="#{storyList.showTasks}" value="#{i18n['story.show.button.showTasks']}"  />
+                        </h:column>
+                    </h:dataTable>
+
+                    <f:facet name="footer">
+                        <h:commandButton rendered="#{storyManager.sprint.name != null}" styleClass="botaoPostIt" action="#{storyManager.create}" value="#{i18n['story.show.button.newStory']}"  />
+                        <h:commandButton rendered="#{storyManager.sprint.name != null}" styleClass="botaoPostIt" action="showSprints" value="#{i18n['story.show.button.showSprints']}"  />
+                        <h:button rendered="#{storyManager.sprint.name != null}" styleClass="botaoPostIt" outcome="/dashboard/show" value="#{i18n['sprint.show.button.showDashboard']}" />
+                    </f:facet>
+                </h:panelGrid>
+            </h:form>
+        </ui:define>
+    </ui:composition>
+
+</html>
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/task/create.xhtml b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/task/create.xhtml
new file mode 100644
index 0000000..8624cca
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/task/create.xhtml
@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core" >
+
+    <ui:composition template="/template.xhtml">
+        <ui:define name="pageTitle">
+            <h:outputText value="#{i18n['task.create.title']}"></h:outputText>
+        </ui:define>
+        <ui:define name="navigationBar">
+            <h:commandLink  immediate="true" action="/project/show" value="#{i18n['navigation.projects']}"></h:commandLink>
+            <h:outputText value="#{i18n['navigation.separtor']}"></h:outputText>
+            <h:commandLink rendered="#{sprintManager.project.name != null}" immediate="true" action="/project/edit"  value="#{sprintManager.project.name}"></h:commandLink>
+            <h:outputText value="#{i18n['navigation.separtor']}"></h:outputText>
+            <h:commandLink rendered="#{sprintManager.project.name != null}" immediate="true" action="/sprint/show" value="#{i18n['navigation.sprints']}"></h:commandLink>
+            <h:outputText value="#{i18n['navigation.separtor']}"></h:outputText>
+            <h:commandLink rendered="#{storyManager.sprint.name != null}" immediate="true" action="/sprint/edit"  value="#{sprintManager.currentSprint.name}"></h:commandLink>
+            <h:outputText value="#{i18n['navigation.separtor']}"></h:outputText>
+            <h:commandLink rendered="#{storyManager.sprint.name != null}" immediate="true" action="/story/show" value="#{i18n['navigation.stories']}"></h:commandLink>
+            <h:outputText value="#{i18n['navigation.separtor']}"></h:outputText>
+            <h:commandLink rendered="#{taskManager.story.name != null}" immediate="true" action="/story/edit" value="#{taskManager.story.name}"></h:commandLink>
+            <h:outputText value="#{i18n['navigation.separtor']}"></h:outputText>
+            <h:outputText value="#{i18n['task.create.form.title']}" styleClass="tituloForm"></h:outputText>
+        </ui:define>
+        <ui:define name="content">
+
+            <h:form  id="createTaskForm">
+                <h:panelGrid columns="3" headerClass="tituloForm" footerClass="footerForm">
+                    <ui:include src="form.xhtml" />
+                    <f:facet name="footer">
+                        <h:commandButton rendered="#{taskManager.story.name != null}" id="btnCreate" action="#{taskManager.save}" value="#{i18n['task.create.button.create']}" styleClass="botaoPostIt" />
+                        <h:commandButton rendered="#{taskManager.story.name != null}" id="btnCancel" action="show" value="#{i18n['task.create.button.cancel']}" styleClass="botaoPostIt" immediate="true" />
+                    </f:facet>
+                </h:panelGrid>
+            </h:form>
+        </ui:define>
+    </ui:composition>
+
+</html>
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/task/edit.xhtml b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/task/edit.xhtml
new file mode 100644
index 0000000..077aebd
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/task/edit.xhtml
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:h="http://java.sun.com/jsf/html">
+
+    <ui:composition template="/template.xhtml">
+        <ui:define name="pageTitle">
+            <h:outputText value="#{i18n['task.edit.title']}"></h:outputText>
+        </ui:define>
+        <ui:define name="navigationBar">
+            <h:commandLink  immediate="true" action="/project/show" value="#{i18n['navigation.projects']}" ></h:commandLink>
+            <h:outputText value="#{i18n['navigation.separtor']}"></h:outputText>
+            <h:commandLink rendered="#{sprintManager.project.name != null}" immediate="true" action="/project/edit"  value="#{sprintManager.project.name}" ></h:commandLink>
+            <h:outputText value="#{i18n['navigation.separtor']}"></h:outputText>
+            <h:commandLink rendered="#{sprintManager.project.name != null}" immediate="true" action="/sprint/show" value="#{i18n['navigation.sprints']}" ></h:commandLink>
+            <h:outputText value="#{i18n['navigation.separtor']}"></h:outputText>
+            <h:commandLink rendered="#{storyManager.sprint.name != null}" immediate="true" action="/sprint/edit"  value="#{sprintManager.currentSprint.name}" ></h:commandLink>
+            <h:outputText value="#{i18n['navigation.separtor']}"></h:outputText>
+            <h:commandLink rendered="#{storyManager.sprint.name != null}" immediate="true" action="/story/show" value="#{i18n['navigation.stories']}" ></h:commandLink>
+            <h:outputText value="#{i18n['navigation.separtor']}"></h:outputText>
+            <h:commandLink rendered="#{taskManager.story.name != null}" immediate="true" action="/story/edit" value="#{storyManager.currentStory.name}"></h:commandLink>
+            <h:outputText value="#{i18n['navigation.separtor']}"></h:outputText>
+            <h:outputText value="#{i18n['task.edit.form.title']}" styleClass="tituloForm"></h:outputText>
+        </ui:define>
+        <ui:define name="content">
+
+            <h:form styleClass="scrumForm" id="editTaskForm">
+                <h:panelGrid headerClass="tituloForm" footerClass="footerForm">
+
+                    <ui:include src="form.xhtml" />
+                    <h:panelGroup>
+                        <h:commandButton rendered="#{taskManager.currentTask.name != null}" id="btnEditUpdate" action="#{taskManager.save}" value="#{i18n['task.edit.button.update']}" styleClass="botaoPostIt" />
+                        <h:commandButton rendered="#{taskManager.currentTask.name != null}" id="btnEditCancel" action="#{taskManager.cancelEdit}" immediate="true" value="#{i18n['task.edit.button.cancel']}" styleClass="botaoPostIt" />
+                        <h:button rendered="#{taskManager.currentTask.name != null}" styleClass="botaoPostIt" outcome="/dashboard/show" value="#{i18n['sprint.show.button.showDashboard']}" />
+                    </h:panelGroup>
+                </h:panelGrid>
+            </h:form>
+        </ui:define>
+    </ui:composition>
+
+</html>
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/task/form.xhtml b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/task/form.xhtml
new file mode 100644
index 0000000..08470d8
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/task/form.xhtml
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core" >
+
+    <ui:composition id="comp1">
+        <h:panelGrid columns="3" columnClasses="formLabel, formInput, formErrorMessage" styleClass="postItFormTable" id="pgFormTask">
+            <h:outputLabel value="#{i18n['task.form.label.name']}:" for="itTaskName" id="olName"/>
+            <h:inputText id="itTaskName" value="#{taskManager.currentTask.name}" required="true"
+                         requiredMessage="#{i18n['task.form.label.name.required']}" maxlength="30" size="30"
+                         validator="#{taskManager.checkUniqueTaskName}" />
+            <h:message for="itTaskName" styleClass="errorMessage" id="emName"/>
+
+            <h:outputLabel value="#{i18n['task.form.label.startDate']}:" for="itTaskName"/>
+            <h:panelGroup>
+                <h:inputText id="itStartedDate" value="#{taskManager.currentTask.startDate}"  maxlength="10" size="10" >
+                    <f:convertDateTime pattern="#{i18n['task.form.label.startDate.pattern']}" />
+                </h:inputText>
+                <h:outputText value="(#{i18n['task.form.label.startDate.pattern']})" styleClass="inputPattern" />
+            </h:panelGroup>
+            <h:message for="itStartedDate" styleClass="errorMessage"/>
+
+            <h:outputLabel value="#{i18n['task.form.label.endDate']}:" for="itTaskName"/>
+            <h:panelGroup>
+                <h:inputText id="itEndDate" value="#{taskManager.currentTask.endDate}" maxlength="10" size="10" >
+                    <f:convertDateTime pattern="#{i18n['task.form.label.endDate.pattern']}" />
+                </h:inputText>
+                <h:outputText value="(#{i18n['task.form.label.endDate.pattern']})" styleClass="inputPattern" />
+            </h:panelGroup>
+            <h:message for="itEndDate" styleClass="errorMessage"/>
+            
+            <h:outputLabel value="#{i18n['task.form.label.status']}:" for="itStatus"/>
+            <h:outputText id="itStatus" value="#{taskManager.currentTask.status}"  />
+        </h:panelGrid>
+    </ui:composition>
+
+</html>
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/task/show.xhtml b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/task/show.xhtml
new file mode 100644
index 0000000..cef6687
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/main/webapp/task/show.xhtml
@@ -0,0 +1,144 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+
+    <ui:composition template="/template.xhtml">
+        <ui:define name="pageTitle">
+            <h:outputText value="#{i18n['task.show.title']}"></h:outputText>
+        </ui:define>
+        <ui:define name="navigationBar">
+            <h:commandLink  immediate="true" action="/project/show" value="#{i18n['navigation.projects']}"></h:commandLink>
+            <h:outputText value="#{i18n['navigation.separtor']}"></h:outputText>
+            <h:commandLink rendered="#{sprintManager.project.name != null}" immediate="true" action="/project/edit"  value="#{sprintManager.project.name}"></h:commandLink>
+            <h:outputText value="#{i18n['navigation.separtor']}"></h:outputText>
+            <h:commandLink rendered="#{sprintManager.project.name != null}" immediate="true" action="/sprint/show" value="#{i18n['navigation.sprints']}"></h:commandLink>
+            <h:outputText value="#{i18n['navigation.separtor']}"></h:outputText>
+            <h:commandLink rendered="#{storyManager.sprint.name != null}" immediate="true" action="/sprint/edit"  value="#{sprintManager.currentSprint.name}"></h:commandLink>
+            <h:outputText value="#{i18n['navigation.separtor']}"></h:outputText>
+            <h:commandLink rendered="#{storyManager.sprint.name != null}" immediate="true" action="/story/show" value="#{i18n['navigation.stories']}"></h:commandLink>
+            <h:outputText value="#{i18n['navigation.separtor']}"></h:outputText>
+            <h:commandLink rendered="#{taskManager.story.name != null}" immediate="true" action="/story/edit" value="#{taskManager.story.name}"></h:commandLink>
+            <h:outputText value="#{i18n['navigation.separtor']}"></h:outputText>
+            <h:outputText value="#{i18n['task.show.table.title']}" styleClass="tituloForm"></h:outputText>
+        </ui:define>
+        <ui:define name="content">
+            <h:form id="frmListTasks">
+                <h:panelGrid columns="3" headerClass="tituloForm" footerClass="footerForm">
+                    <h:outputText value="#{i18n['task.show.table.label.empty']}"
+                                  rendered="#{taskList.tasks.rowCount eq 0}" />
+                    <h:dataTable value="#{taskList.tasks}" var="task"
+                                 rendered="#{taskList.tasks.rowCount > 0}"
+                                 title="#{i18n['task.show.table.title']}"
+                                 summary="#{i18n['task.show.table.title']}"
+                                 border="0"
+                                 headerClass="datatableHeader"
+                                 rowClasses="datatableRow,datatableRow2"
+                                 columnClasses="dataTableFirstColumn"
+                                 styleClass="datatable"
+                                 id="dtTasks">
+
+                        <h:column>
+                            <f:facet name="header">
+                                <h:outputText value="#" />
+                            </f:facet>
+                            <h:outputText value="#{taskList.tasks.rowIndex + 1}" />
+                        </h:column>
+                        <h:column>
+                            <f:facet name="header">
+                                <h:outputText value="#{i18n['task.show.table.header.name']}" />
+                            </f:facet>
+                            <h:outputText value="#{task.name}" />
+                        </h:column>
+                        <h:column>
+                            <f:facet name="header">
+                                <h:outputText value="#{i18n['task.show.table.header.startDate']}"/>
+                            </f:facet>
+                            <h:outputText value="#{task.startDate}">
+                                <f:convertDateTime pattern="#{i18n['task.show.table.header.startDate.pattern']}" />
+                            </h:outputText>
+                        </h:column>
+                        <h:column>
+                            <f:facet name="header">
+                                <h:outputText value="#{i18n['task.show.table.header.endDate']}"/>
+                            </f:facet>
+                            <h:outputText value="#{task.endDate}">
+                                <f:convertDateTime pattern="#{i18n['task.show.table.header.endDate.pattern']}" />
+                            </h:outputText>
+                        </h:column>
+                        <h:column>
+                            <f:facet name="header">
+                                <h:outputText value="#{i18n['task.show.table.header.status']}" />
+                            </f:facet>
+                            <h:outputText value="#{i18n[task.statusKeyI18n]}"  />
+                        </h:column>
+                        <h:column>
+                            <f:facet name="header">
+                                <h:outputText value="#{i18n['task.show.table.header.actions']}"/>
+                            </f:facet>
+                            <h:commandButton styleClass="botaoPostIt" action="#{taskList.edit}" value="#{i18n['task.show.button.edit']}"  />
+
+                            <h:commandButton id="btnDeleteTask" styleClass="botaoPostIt" action="#{taskList.remove}" value="#{i18n['task.show.button.delete']} AJAX"
+                                             onclick="jsf.ajax.request(this, event, {execute: 'frmListTasks',
+                                                 render: 'frmListTasks'}); return false;" />
+
+                            <h:commandButton styleClass="botaoPostIt" action="#{taskList.remove}" value="#{i18n['task.show.button.delete']}"  />
+                        </h:column>
+
+                    </h:dataTable>
+                    <f:facet name="footer">
+                        <h:commandButton rendered="#{taskManager.story.name != null}" styleClass="botaoPostIt" action="#{taskManager.create}" value="#{i18n['task.show.button.newTask']}"  />
+                        <h:commandButton rendered="#{taskManager.story.name != null}" styleClass="botaoPostIt" action="#{taskManager.showStories}" value="#{i18n['task.show.button.showStories']}"  />
+                        <h:button rendered="#{taskManager.story.name != null}" styleClass="botaoPostIt" outcome="/dashboard/show" value="#{i18n['sprint.show.button.showDashboard']}" />
+                    </f:facet>
+                </h:panelGrid>
+            </h:form>
+        </ui:define>
+    </ui:composition>
+
+</html>
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/test/java/jsf2/ScrumToysTest.java b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/test/java/jsf2/ScrumToysTest.java
new file mode 100644
index 0000000..eeabc10
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/src/test/java/jsf2/ScrumToysTest.java
@@ -0,0 +1,63 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package jsf2;
+
+import com.gargoylesoftware.htmlunit.*;
+import com.gargoylesoftware.htmlunit.html.*;
+import org.junit.Assert;
+import org.junit.Test;
+
+public class ScrumToysTest {
+
+    @Test
+    public void homePage() throws Exception {
+        final WebClient webClient = new WebClient();
+	String containerPort = System.getProperty("container.port");
+	if (null == containerPort || 0 == containerPort.length()) {
+	    containerPort = "8080";
+	}
+
+        final HtmlPage page = webClient.getPage("http://localhost:" + containerPort + "/scrumtoys/home.jsf");
+	String titleText = page.getTitleText().trim();
+        Assert.assertEquals("JSF 2.0 Demo - Scrum Whiteboard Application", titleText);
+    }
+
+}
diff --git a/jsf-demo/sandbox/scrumtoys2009/eclipseProject/test/dao/TestSprintDAO.java b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/test/dao/TestSprintDAO.java
new file mode 100644
index 0000000..fcf9670
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/eclipseProject/test/dao/TestSprintDAO.java
@@ -0,0 +1,78 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package dao;
+import java.util.List;
+
+import junit.framework.TestCase;
+import entities.Sprint;
+import entities.Story;
+import entities.Task;
+
+
+public class TestSprintDAO extends TestCase {
+
+	private SprintDAO sprintDAO = DAOFactory.getInstance().getSprintDAO();
+	
+	public void testFindById() throws DAOException {
+		
+	}
+	public void testFindAll() throws DAOException {
+		List<Sprint> sprints = this.sprintDAO.findAll();
+		for (Sprint sprint: sprints){
+			System.out.printf("%s (%d) %n %n", sprint.getName(), sprint.getId());
+			for (Story story: sprint.getStories()){
+				System.out.printf("%s (%d) %n", story.getName(), story.getId());
+				for (Task task: story.getTasks()){
+					System.out.printf("%s (%d) %n", task.getName(), task.getId());
+				}//for
+			}//for
+		}//for
+		assertEquals(2, sprints.size());
+	}
+	
+	public void testFindAllOrderByStartedAt() throws DAOException {
+		List<Sprint> sprintsOrderByStartedAt = this.sprintDAO.findAllOrderBy("startedAt");
+		assertEquals(2, sprintsOrderByStartedAt.size());
+	}
+	
+	public void testSave() throws DAOException{
+	}
+}
diff --git a/jsf-demo/sandbox/scrumtoys2009/scrumtoys-uml/scrumtoys-uml/Class Diagram 1_1241809882217.diagram b/jsf-demo/sandbox/scrumtoys2009/scrumtoys-uml/scrumtoys-uml/Class Diagram 1_1241809882217.diagram
new file mode 100644
index 0000000..fa449f6
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/scrumtoys-uml/scrumtoys-uml/Class Diagram 1_1241809882217.diagram	
@@ -0,0 +1,2559 @@
+<XMI xmi.version="1.2"  xmlns:UML="org.omg.xmi.namespace.UML"  timestamp="May 8, 2009 3:04:21 PM EDT" >
+<XMI.content>
+<UML:Diagram zoom="1.15"  xmi.id="DCE.315F5609-1BA8-A262-B7FE-55D3E2550524"  documentation=""  isVisible="false"  name="Domain Architecture" >
+<UML:GraphElement.position>
+     <XMI.field>0</XMI.field>
+     <XMI.field>76</XMI.field>
+</UML:GraphElement.position>
+<UML:GraphNode.size>
+     <XMI.field>604</XMI.field>
+     <XMI.field>517</XMI.field>
+</UML:GraphNode.size>
+<UML:Diagram.viewport>
+     <XMI.field>0</XMI.field>
+     <XMI.field>0</XMI.field>
+</UML:Diagram.viewport>
+<UML:DiagramElement.property>
+<UML:Property key="netbeans-diagram-namespace"  value="DCE.5A4D19A2-1468-437A-B75A-0E8318208C1F" />
+<UML:Property key="netbeans-diagram-projectID"  value="DCE.B34873F7-C2FB-132E-C144-8BAE560D0FC4"  xmi.id="Property2_PEID" />
+</UML:DiagramElement.property>
+<UML:GraphElement.semanticModel>
+<UML:SimpleSemanticModelElement presentation=""  xmi.id="DCE.315F5609-1BA8-A262-B7FE-55D3E2550524"  typeinfo="Class Diagram" />
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+<UML:GraphNode xmi.id="DCE.FA9CF24C-CE60-DB06-C9A9-9E44359F8115"  isVisible="false" >
+<UML:GraphElement.position>
+     <XMI.field>360</XMI.field>
+     <XMI.field>48</XMI.field>
+</UML:GraphElement.position>
+<UML:GraphNode.size>
+     <XMI.field>131</XMI.field>
+     <XMI.field>32</XMI.field>
+</UML:GraphNode.size>
+<UML:DiagramElement.property>
+<UML:Property key="RedefinedOperCompartment"  value="COLLAPSED" />
+<UML:Property key="ResizeMode"  value="MINIMUMSIZE" />
+<UML:Property key="WIDGET_INDEX"  value="7" />
+<UML:Property key="OperationsCompartment"  value="COLLAPSED" />
+<UML:Property key="ViewName"  value="DEFAULT_VIEW" />
+<UML:Property key="AttributesCompartment"  value="COLLAPSED" />
+</UML:DiagramElement.property>
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Class xmi.idref="DCE.AD3D6BCB-9802-F153-947C-D457BC634420" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+<UML:GraphNode xmi.id="DCE.FA9CF24C-CE60-DB06-C9A9-9E44359F8115"  isVisible="false" >
+<UML:GraphElement.semanticModel>
+<UML:SimpleSemanticModelElement presentation=""  xmi.id="DCE.FA9CF24C-CE60-DB06-C9A9-9E44359F8115" />
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.FA9CF24C-CE60-DB06-C9A9-9E44359F8115"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:SimpleSemanticModelElement presentation=""  xmi.id="DCE.FA9CF24C-CE60-DB06-C9A9-9E44359F8115"  typeinfo="Attributes" />
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+<UML:GraphNode xmi.id="DCE.75029E27-35FA-545F-DCD3-5A8FDDFE8187"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Attribute xmi.idref="DCE.14C817F0-3474-ACD7-C907-40E7CA8129BC" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.FA9CF24C-CE60-DB06-C9A9-9E44359F8115"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:SimpleSemanticModelElement presentation=""  xmi.id="DCE.FA9CF24C-CE60-DB06-C9A9-9E44359F8115"  typeinfo="Operations" />
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+<UML:GraphNode xmi.id="DCE.3776BD4F-7B1A-25B6-7F58-C6B521B0DE3E"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Operation xmi.idref="DCE.D76DA95B-EF29-EE86-DF9C-160F6F3A4A9C" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.D89B16D3-08D2-96BB-87BF-EA626357B77A"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Operation xmi.idref="DCE.47FE3B94-BE21-A64F-A699-7F7201DD2BCA" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.B8FBC010-CC67-757B-2E4A-44657F85D03A"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Operation xmi.idref="DCE.EC8F32C4-CDEF-2BF5-69D1-1E62AD8D4549" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.A5DD3823-6FF1-4949-B784-86B10AB154B0"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Operation xmi.idref="DCE.7EA92053-614D-5806-CB3B-E98BCCFFB842" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.AB80738A-B978-E94B-493B-2F7603D2ABD0"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Operation xmi.idref="DCE.EA800E83-25DA-C021-F223-72873A5797E2" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.2493A80C-8838-AEF3-4DFB-DB1BE611E5D2"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Operation xmi.idref="DCE.8567931E-8473-272D-37C1-CBC4D5B52418" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.FA9CF24C-CE60-DB06-C9A9-9E44359F8115"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:SimpleSemanticModelElement presentation=""  xmi.id="DCE.FA9CF24C-CE60-DB06-C9A9-9E44359F8115"  typeinfo="Operations Redefined From PersistentEntity" />
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+<UML:GraphNode xmi.id="DCE.88C86DC2-B989-A9C6-D701-6B2795A61B82"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Operation xmi.idref="DCE.CA918B02-0EB5-0A24-4DF4-75FA8E7B1FD3" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+</UML:GraphElement.contained>
+<UML:GraphElement.dependencies>
+</UML:GraphElement.dependencies>
+<UML:GraphElement.anchorage>
+<UML:GraphConnector xmi.id="DCE.36031605-9257-2F5E-E140-CA510F3E212C" >
+<UML:GraphConnector.position>
+     <XMI.field>425</XMI.field>
+     <XMI.field>64</XMI.field>
+</UML:GraphConnector.position>
+<UML:GraphConnector.graphEdge>
+<UML:GraphEdge xmi.idref="DCE.3348F515-713A-0550-C590-60C0B15B58F6" />
+</UML:GraphConnector.graphEdge>
+</UML:GraphConnector>
+</UML:GraphElement.anchorage>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.C76DD48A-7397-5224-134D-CFC8E3F61744"  isVisible="false" >
+<UML:GraphElement.position>
+     <XMI.field>349</XMI.field>
+     <XMI.field>-76</XMI.field>
+</UML:GraphElement.position>
+<UML:GraphNode.size>
+     <XMI.field>153</XMI.field>
+     <XMI.field>59</XMI.field>
+</UML:GraphNode.size>
+<UML:DiagramElement.property>
+<UML:Property key="ResizeMode"  value="MINIMUMSIZE" />
+<UML:Property key="WIDGET_INDEX"  value="6" />
+<UML:Property key="OperationsCompartment"  value="COLLAPSED" />
+<UML:Property key="ViewName"  value="DEFAULT_VIEW" />
+<UML:Property key="AttributesCompartment"  value="COLLAPSED" />
+</UML:DiagramElement.property>
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Interface xmi.idref="DCE.FA27723D-C0F6-133F-2FF1-DF829A39410C" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+<UML:GraphNode xmi.id="DCE.C76DD48A-7397-5224-134D-CFC8E3F61744"  isVisible="false" >
+<UML:GraphElement.semanticModel>
+<UML:SimpleSemanticModelElement presentation=""  xmi.id="DCE.C76DD48A-7397-5224-134D-CFC8E3F61744" />
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.C76DD48A-7397-5224-134D-CFC8E3F61744"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:SimpleSemanticModelElement presentation=""  xmi.id="DCE.C76DD48A-7397-5224-134D-CFC8E3F61744"  typeinfo="Attributes" />
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.C76DD48A-7397-5224-134D-CFC8E3F61744"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:SimpleSemanticModelElement presentation=""  xmi.id="DCE.C76DD48A-7397-5224-134D-CFC8E3F61744"  typeinfo="Operations" />
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+<UML:GraphNode xmi.id="DCE.A5D77226-7BB2-CE09-44C7-16FD0038EEDB"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Operation xmi.idref="DCE.8AA48DB0-7855-9435-3CA2-BE0F71B34E48" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.C209B78E-A019-5D48-8D98-539021E68F62"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Operation xmi.idref="DCE.14E0D15E-3F41-916A-AB61-8A44B87E84EA" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+</UML:GraphElement.contained>
+<UML:GraphElement.dependencies>
+</UML:GraphElement.dependencies>
+<UML:GraphElement.anchorage>
+<UML:GraphConnector xmi.id="DCE.DB6B0D1C-7E93-E070-1507-EA82B9671F0E" >
+<UML:GraphConnector.position>
+     <XMI.field>425</XMI.field>
+     <XMI.field>-47</XMI.field>
+</UML:GraphConnector.position>
+<UML:GraphConnector.graphEdge>
+<UML:GraphEdge xmi.idref="DCE.3348F515-713A-0550-C590-60C0B15B58F6" />
+</UML:GraphConnector.graphEdge>
+</UML:GraphConnector>
+</UML:GraphElement.anchorage>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.DBAE108B-A92D-6605-A552-998958EF460A"  isVisible="false" >
+<UML:GraphElement.position>
+     <XMI.field>407</XMI.field>
+     <XMI.field>212</XMI.field>
+</UML:GraphElement.position>
+<UML:GraphNode.size>
+     <XMI.field>72</XMI.field>
+     <XMI.field>32</XMI.field>
+</UML:GraphNode.size>
+<UML:DiagramElement.property>
+<UML:Property key="RedefinedOperCompartment"  value="COLLAPSED" />
+<UML:Property key="ResizeMode"  value="MINIMUMSIZE" />
+<UML:Property key="WIDGET_INDEX"  value="4" />
+<UML:Property key="OperationsCompartment"  value="COLLAPSED" />
+<UML:Property key="ViewName"  value="DEFAULT_VIEW" />
+<UML:Property key="AttributesCompartment"  value="COLLAPSED" />
+</UML:DiagramElement.property>
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Class xmi.idref="DCE.B49486EB-16C8-2B60-D4E7-2D2C2B93146F" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+<UML:GraphNode xmi.id="DCE.DBAE108B-A92D-6605-A552-998958EF460A"  isVisible="false" >
+<UML:GraphElement.semanticModel>
+<UML:SimpleSemanticModelElement presentation=""  xmi.id="DCE.DBAE108B-A92D-6605-A552-998958EF460A" />
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.DBAE108B-A92D-6605-A552-998958EF460A"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:SimpleSemanticModelElement presentation=""  xmi.id="DCE.DBAE108B-A92D-6605-A552-998958EF460A"  typeinfo="Attributes" />
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+<UML:GraphNode xmi.id="DCE.1167BFC1-A867-29D0-9934-748A540C30F2"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Attribute xmi.idref="DCE.49DCA5DC-01AD-115B-FBBA-0C874F1B3454" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.D9617FFF-A48D-D561-63DC-1DFA10A8E230"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Attribute xmi.idref="DCE.AC3645E6-C0B0-9D36-7415-B7E45FEC9E13" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.1E33C867-6E5B-BE4F-5D52-6CBD703E0208"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Attribute xmi.idref="DCE.19CA1743-0CA2-D7F0-662A-5E2125F456AD" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.C57536BE-37E0-D561-CF03-7D2D74D71F3A"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Attribute xmi.idref="DCE.B2DCC4D6-E23E-4B99-F559-2332F5B31815" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.1B9E6CAA-81C1-EDFD-F3DC-1ED5208FF65F"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Attribute xmi.idref="DCE.42889ED1-18DA-D61D-204A-5CB163A6A809" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.BAE73A10-5057-86F5-3506-4EC0E8A13BD7"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Attribute xmi.idref="DCE.E8CC176D-8044-CD71-7AB6-B6420585F423" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.ADD81FE5-70FF-2E0D-89B9-3D145E701496"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Attribute xmi.idref="DCE.F0F6F7B8-425D-5447-120C-628499BF1E78" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.751121EA-D4B1-3999-F0E6-F4B068E9E18F"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Attribute xmi.idref="DCE.28E053CF-671E-B55A-BFA6-A98F977EB6B3" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.DBAE108B-A92D-6605-A552-998958EF460A"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:SimpleSemanticModelElement presentation=""  xmi.id="DCE.DBAE108B-A92D-6605-A552-998958EF460A"  typeinfo="Operations" />
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+<UML:GraphNode xmi.id="DCE.823EBDCA-FDDA-E7C2-ABFB-8082198C0582"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Operation xmi.idref="DCE.CB66E647-2676-DFDF-0437-2A34643D67A5" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.802E1067-6CC4-51DA-02CC-44956A70E9FA"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Operation xmi.idref="DCE.5A3D84F5-AA94-6540-D229-CFF83D5073FA" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.72EA579A-8EF8-E3B1-A279-656830CAA459"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Operation xmi.idref="DCE.D2C2459F-89D0-D42D-41E0-DFCE1A00211C" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.75F9512C-8B19-E556-8AEB-6245EF3A5597"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Operation xmi.idref="DCE.CD3B1655-AFED-C829-6F5E-BF22E9E7111E" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.CF3FE9AA-937A-598F-F766-E5E4F8F6A94A"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Operation xmi.idref="DCE.13307545-AC0C-4DAB-ED8F-D84871503EDA" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.23D0CAAD-D2D0-0B6A-FC67-3C525A7DCEF6"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Operation xmi.idref="DCE.45F1CA31-782A-F53A-A752-427C83E04350" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.027BCDDB-4A4C-6626-AAB7-797C61559EDB"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Operation xmi.idref="DCE.6B3BE6B4-1DD8-D89F-E242-C5E3F949E5BE" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.3FC1E198-8EA3-249F-C540-973F3F625114"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Operation xmi.idref="DCE.F1AB19D2-6122-D90F-DF12-63D0D7F44A14" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.E631D80E-F86C-E175-59F2-178E2096C80C"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Operation xmi.idref="DCE.0E6EC9AF-07D1-6AE9-DFAE-FD71DD8AF319" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.4384FBD5-86CD-9F54-C9C4-3C29E050A3CE"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Operation xmi.idref="DCE.1919FD19-6ED2-1DEA-7178-CAC9D4FFE5CF" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.C5FDF42C-AC69-4E3B-B066-C798BD163598"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Operation xmi.idref="DCE.65F0ABBF-B4FF-A08B-65AB-DD1B7723416D" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.6C91A461-2D90-9993-310A-D2CE574BC379"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Operation xmi.idref="DCE.F1D6FDA9-B1FF-E9A7-FFBC-C7546F81E9EE" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.0E159498-D08A-0F03-1397-F1C7EC1155A7"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Operation xmi.idref="DCE.4BAC4243-71D1-8EE0-D599-8B9D6B7C526E" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.746A2A19-521D-5174-1539-D704B7418F2D"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Operation xmi.idref="DCE.40510472-914F-28B6-EDB2-36C982238B49" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.2CE94AD9-DE4F-C8E5-CC74-260190C7C149"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Operation xmi.idref="DCE.535F4AC1-9028-8021-B9BB-766C37EAADFE" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.25B07EB3-76C9-3ECC-4488-263E363E5D9D"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Operation xmi.idref="DCE.1DA3E8B9-B916-BB16-6193-E18849CF73C8" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.CC531B09-AC77-A13F-78B0-54428105A051"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Operation xmi.idref="DCE.96FBF01A-8279-BB10-AEFE-927448DEBD09" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.4E6F2B1D-0FBB-E24B-534A-8A2DA1435F2B"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Operation xmi.idref="DCE.CE48BDEB-E629-D8AB-F8EC-5BF5BB800DCA" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.2A400CD1-E252-F790-A30C-D8247B4971D7"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Operation xmi.idref="DCE.8BA7692A-7964-011D-E85E-FCEEBC98149B" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.9333BE57-F8D1-1F7B-CF9C-5484B576B456"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Operation xmi.idref="DCE.03B4FA98-C2BA-1F87-7988-EE74E0AE1645" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.73ED4DC7-2B1D-454A-4EAF-11DD760E2263"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Operation xmi.idref="DCE.9C64AF60-00B7-EEBD-3119-F7A35B159E66" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.3331E43A-226B-3D34-3D54-9D6A272CD47D"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Operation xmi.idref="DCE.9E15823A-B970-A339-7F26-D075DA288EA2" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.DBAE108B-A92D-6605-A552-998958EF460A"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:SimpleSemanticModelElement presentation=""  xmi.id="DCE.DBAE108B-A92D-6605-A552-998958EF460A"  typeinfo="Operations Redefined From AbstractEntity" />
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+<UML:GraphNode xmi.id="DCE.7F11103A-6425-A65C-FC1C-E4E915A20DB6"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Operation xmi.idref="DCE.C1C2086A-A696-81F1-AE22-3FCCC5D66385" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.6BDC28E7-FE9A-20DF-009D-5FF30216E08A"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Operation xmi.idref="DCE.A3041566-F215-2661-A1A9-BD5F8FFC5661" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.AF62DC65-7C36-12D4-371A-CC4A6F10C1F7"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Operation xmi.idref="DCE.E9CD1B2A-F101-8666-1552-FC84BA83B9AA" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+</UML:GraphElement.contained>
+<UML:GraphElement.dependencies>
+</UML:GraphElement.dependencies>
+<UML:GraphElement.anchorage>
+<UML:GraphConnector xmi.id="DCE.8C81CB83-9B84-0A47-ABC8-237F4B264B6E" >
+<UML:GraphConnector.position>
+     <XMI.field>443</XMI.field>
+     <XMI.field>228</XMI.field>
+</UML:GraphConnector.position>
+<UML:GraphConnector.graphEdge>
+<UML:GraphEdge xmi.idref="DCE.430ED673-1489-8BB2-13A2-3BE88DFA3BCC" />
+</UML:GraphConnector.graphEdge>
+</UML:GraphConnector>
+</UML:GraphElement.anchorage>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.48BA65EF-E7C7-B6D2-7235-279CABB43EDF"  isVisible="false" >
+<UML:GraphElement.position>
+     <XMI.field>425</XMI.field>
+     <XMI.field>299</XMI.field>
+</UML:GraphElement.position>
+<UML:GraphNode.size>
+     <XMI.field>66</XMI.field>
+     <XMI.field>32</XMI.field>
+</UML:GraphNode.size>
+<UML:DiagramElement.property>
+<UML:Property key="RedefinedOperCompartment"  value="COLLAPSED" />
+<UML:Property key="ResizeMode"  value="MINIMUMSIZE" />
+<UML:Property key="WIDGET_INDEX"  value="2" />
+<UML:Property key="OperationsCompartment"  value="COLLAPSED" />
+<UML:Property key="ViewName"  value="DEFAULT_VIEW" />
+<UML:Property key="AttributesCompartment"  value="COLLAPSED" />
+</UML:DiagramElement.property>
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Class xmi.idref="DCE.1B25B69B-B014-F654-2E5A-9547722C2FE2" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+<UML:GraphNode xmi.id="DCE.48BA65EF-E7C7-B6D2-7235-279CABB43EDF"  isVisible="false" >
+<UML:GraphElement.semanticModel>
+<UML:SimpleSemanticModelElement presentation=""  xmi.id="DCE.48BA65EF-E7C7-B6D2-7235-279CABB43EDF" />
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.48BA65EF-E7C7-B6D2-7235-279CABB43EDF"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:SimpleSemanticModelElement presentation=""  xmi.id="DCE.48BA65EF-E7C7-B6D2-7235-279CABB43EDF"  typeinfo="Attributes" />
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+<UML:GraphNode xmi.id="DCE.80C9587B-E182-434C-CF84-E4C9EDC02548"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Attribute xmi.idref="DCE.BBEEB5CA-86D3-3DC2-2D5B-4EB28FF8D80F" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.3C10BBBE-6145-273E-39FA-F3467E644ED2"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Attribute xmi.idref="DCE.F349715A-0568-E02D-74CF-7916F0244CD9" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.EAF21C61-6115-B59D-D0FC-964E84DE2F01"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Attribute xmi.idref="DCE.DC7FDBA8-87F9-1F41-C9D1-F9EB62D624A0" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.49071D5D-939A-0AF3-8E10-7B35F017B324"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Attribute xmi.idref="DCE.F49C12CA-7001-D146-2E13-A45665E59814" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.882CB907-8F46-F22C-7654-F11FA96FC0C4"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Attribute xmi.idref="DCE.58B8EB09-B2E3-88FA-D467-36D850F72886" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.59236774-C053-613C-4475-5D0A00D0D3A9"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Attribute xmi.idref="DCE.55E3D0A7-F5DA-7CBE-7E2F-3E793333824B" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.51704103-8A4B-5064-0275-E9B357A1E6E6"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Attribute xmi.idref="DCE.DA32DA2A-99D0-5CF0-2658-F9A13444E0A6" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.48BA65EF-E7C7-B6D2-7235-279CABB43EDF"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:SimpleSemanticModelElement presentation=""  xmi.id="DCE.48BA65EF-E7C7-B6D2-7235-279CABB43EDF"  typeinfo="Operations" />
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+<UML:GraphNode xmi.id="DCE.06810472-484B-7DF6-5C87-D0BF8EECA95D"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Operation xmi.idref="DCE.5DC00124-33F2-8B1C-B543-7A56F23E76FE" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.82F5D34D-A6F3-D87E-51A2-9FA0FD9B76BA"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Operation xmi.idref="DCE.BA25C091-91B6-8001-CCEE-B2435A1F22F0" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.C2F0ED30-A832-066F-D6E2-DF089EBB9C02"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Operation xmi.idref="DCE.12DBFFAA-CDF1-D012-D653-0C396999CFF3" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.C0F1A4E1-7F1A-D7D6-55D6-F876D93EDBB4"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Operation xmi.idref="DCE.640FE7A2-BAAD-90D1-1D6F-412F7662A1DC" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.539BAD52-683D-6BEA-E59F-2F094AFCC2A8"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Operation xmi.idref="DCE.D4DEF7D9-A1C8-EEE1-9DB1-34DD06FF54D8" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.4C8138F0-15CD-9714-B8E9-E53070173D2B"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Operation xmi.idref="DCE.44EBA6BF-9A80-BAF0-3AD7-1B79033690C6" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.17A4D9AD-0BD7-1B97-3E27-897A083FB5BA"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Operation xmi.idref="DCE.B873A2FB-8981-2476-A7A0-2FC074625969" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.999D700C-58C9-93BE-80C9-02AD171209AF"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Operation xmi.idref="DCE.A3AA6971-BF60-6650-79D6-F69BA9F210AE" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.5F96CB8F-6880-F250-8F82-C3E5E1FB7B30"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Operation xmi.idref="DCE.2707BDD2-9988-EDD4-FE67-4FA1C9490FF2" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.4E89102D-BF90-9B32-350F-D1F6FDB1D316"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Operation xmi.idref="DCE.2FD1951B-DFFC-F7A6-1D1E-2AFB84A6F837" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.8E9EBF36-3032-91E1-631E-4EA735D23897"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Operation xmi.idref="DCE.97BC3476-74D7-CD1C-82B7-38C5919A4E4E" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.7D132A53-D8C1-5FF2-A1D3-231DD5F28834"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Operation xmi.idref="DCE.28DA2ED0-A975-6C1C-BBBD-80F6A96FDB91" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.78A2D308-1781-5462-EB42-B007A9797ACD"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Operation xmi.idref="DCE.6A41DAC0-14BC-CDCE-3291-C515EE6FDAA2" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.0BEC3D10-FA25-A0E7-0187-151F74C78922"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Operation xmi.idref="DCE.9D52DF3D-3F44-D1CC-EBB2-66DA4F347549" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.E58046CD-E9B4-A3C3-CF28-D995B4EDFA06"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Operation xmi.idref="DCE.F21C6334-227E-AE43-1812-CBA6A70AC682" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.AA12633B-59AD-3DDA-27E4-D5C480C247F8"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Operation xmi.idref="DCE.DEC678CA-FE7D-A562-824E-276DACBB0865" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.6F398D67-5FE2-E26E-B3F3-1E9BD5F5340D"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Operation xmi.idref="DCE.CB55C334-2D50-53CB-3F52-4B921F61C200" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.092766A7-FBEF-21F2-9729-D71005D09BCC"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Operation xmi.idref="DCE.5B06F096-823B-D0AB-C300-EF408B83B3EE" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.4DE72E09-A785-CB4C-9541-1435E2867607"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Operation xmi.idref="DCE.B941E525-E8D8-E1C4-53A9-5181240EE77C" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.FF917EB1-D055-FD21-F6DE-AED62B5CA048"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Operation xmi.idref="DCE.0EEA97E1-E062-C778-4642-A198B08F6CB9" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.A4C25626-DF85-A576-1E0A-2EA7D0EB44F0"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Operation xmi.idref="DCE.FD169905-AD17-0516-8907-6614D4F7738C" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.7385FBB6-1417-070C-4B58-99A3E4033AC9"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Operation xmi.idref="DCE.E5DBD6EF-2B4E-7380-8686-EA26EB1CB984" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.A2243898-596E-6F89-500A-6523A703E013"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Operation xmi.idref="DCE.51DB7A6D-5FD5-4474-562B-0234679171CB" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.754B5B54-C8E7-CC0E-F454-BB1734822A19"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Operation xmi.idref="DCE.2ADA3836-FAEC-FA25-A29F-DE4DF7B6E696" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.48BA65EF-E7C7-B6D2-7235-279CABB43EDF"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:SimpleSemanticModelElement presentation=""  xmi.id="DCE.48BA65EF-E7C7-B6D2-7235-279CABB43EDF"  typeinfo="Operations Redefined From AbstractEntity" />
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+<UML:GraphNode xmi.id="DCE.C910C556-153F-90BA-14BB-FCFF86FB5D3B"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Operation xmi.idref="DCE.8FA4C70C-843B-00AC-56B3-57D858D852CC" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.E7F97EC0-C264-19E5-92EF-36D109965715"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Operation xmi.idref="DCE.DBB3AADD-3B9D-818F-52FA-F453E3084A45" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.D1B8C993-A66B-0C7E-8A37-1E94DCC0BD0C"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Operation xmi.idref="DCE.0C972AB0-4498-324D-3F9B-CC629EE64FD5" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+</UML:GraphElement.contained>
+<UML:GraphElement.dependencies>
+</UML:GraphElement.dependencies>
+<UML:GraphElement.anchorage>
+<UML:GraphConnector xmi.id="DCE.2CD4B424-C2AD-3E12-BCD4-1B6B44BA1C52" >
+<UML:GraphConnector.position>
+     <XMI.field>458</XMI.field>
+     <XMI.field>315</XMI.field>
+</UML:GraphConnector.position>
+<UML:GraphConnector.graphEdge>
+<UML:GraphEdge xmi.idref="DCE.2798ED77-2166-ED8D-3397-036BBF78992C" />
+</UML:GraphConnector.graphEdge>
+</UML:GraphConnector>
+</UML:GraphElement.anchorage>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.79E252DC-F065-714F-042A-2A73A8958EB9"  isVisible="false" >
+<UML:GraphElement.position>
+     <XMI.field>386</XMI.field>
+     <XMI.field>126</XMI.field>
+</UML:GraphElement.position>
+<UML:GraphNode.size>
+     <XMI.field>79</XMI.field>
+     <XMI.field>32</XMI.field>
+</UML:GraphNode.size>
+<UML:DiagramElement.property>
+<UML:Property key="RedefinedOperCompartment"  value="COLLAPSED" />
+<UML:Property key="ResizeMode"  value="MINIMUMSIZE" />
+<UML:Property key="WIDGET_INDEX"  value="5" />
+<UML:Property key="OperationsCompartment"  value="COLLAPSED" />
+<UML:Property key="ViewName"  value="DEFAULT_VIEW" />
+<UML:Property key="AttributesCompartment"  value="COLLAPSED" />
+</UML:DiagramElement.property>
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Class xmi.idref="DCE.0F8FDDCF-D8DC-EC5A-2929-0F5EF73A305C" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+<UML:GraphNode xmi.id="DCE.79E252DC-F065-714F-042A-2A73A8958EB9"  isVisible="false" >
+<UML:GraphElement.semanticModel>
+<UML:SimpleSemanticModelElement presentation=""  xmi.id="DCE.79E252DC-F065-714F-042A-2A73A8958EB9" />
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.79E252DC-F065-714F-042A-2A73A8958EB9"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:SimpleSemanticModelElement presentation=""  xmi.id="DCE.79E252DC-F065-714F-042A-2A73A8958EB9"  typeinfo="Attributes" />
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+<UML:GraphNode xmi.id="DCE.25C3112D-3DD2-2D44-8171-C64104479CA1"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Attribute xmi.idref="DCE.40FA4ED5-75A6-A90D-53DC-3E0CCCDF1A5E" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.2C87005B-993F-F4A6-5061-FC03AB7EA962"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Attribute xmi.idref="DCE.AA05C197-A1A4-7C34-38D9-FC437D197115" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.0E3AB00E-0DF7-8972-BD11-DC4B2A41909A"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Attribute xmi.idref="DCE.B245C31C-07BC-DDE7-DF04-5A444CDE8DA9" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.D10D7FB7-1FBC-9729-2F3E-9D822D9201D1"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Attribute xmi.idref="DCE.6E585D7C-6B56-8800-180D-7404A748AC20" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.79E252DC-F065-714F-042A-2A73A8958EB9"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:SimpleSemanticModelElement presentation=""  xmi.id="DCE.79E252DC-F065-714F-042A-2A73A8958EB9"  typeinfo="Operations" />
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+<UML:GraphNode xmi.id="DCE.CFDFA4A7-151A-8672-0886-91E036AF19FC"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Operation xmi.idref="DCE.9BEB04F9-86BF-FF34-AD82-7B31E76EF883" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.475299F4-9C84-C757-2F06-808DA4622E09"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Operation xmi.idref="DCE.95E13D53-D53D-D691-1491-076A7ABCE38D" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.1109A895-0FA6-E653-6C20-3B51751EB2D0"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Operation xmi.idref="DCE.D89A2736-BCBA-8328-2512-1694D574C790" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.144C0ED2-BEDF-368F-3220-3019BA264541"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Operation xmi.idref="DCE.B2E090C3-7BF0-71B4-A7F1-FE29B38D5682" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.E7396FA6-808A-847B-9202-DFEAB0FC1E6E"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Operation xmi.idref="DCE.369DB8EE-4AA0-C7FB-06EE-4BAA350B482B" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.37123315-B2A0-212B-AFE4-93C760D52AEA"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Operation xmi.idref="DCE.954513A1-AC8E-D63C-3599-89C95819B1AD" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.1077535F-19C6-AFDC-3BFA-2DA11A4F9D5B"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Operation xmi.idref="DCE.3E49A489-BFAE-F32A-42FE-9759E8513FC5" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.CB31311E-3529-50F2-D621-AC616753256C"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Operation xmi.idref="DCE.011D1F96-7D41-9C67-02A7-A6D99DEE1DA0" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.B755B01A-0822-E801-4D2A-0D136A030A6E"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Operation xmi.idref="DCE.E587FC19-82C9-EB7B-DAD4-CDBC145DBD88" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.DC786B1C-53FF-6E3C-7271-F2D363F1DF99"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Operation xmi.idref="DCE.D1B514EF-BBF2-E754-BDE1-C5A250CC16A5" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.B4D78A79-7616-0787-DBE3-7B28F09E1A6D"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Operation xmi.idref="DCE.FCBD6E53-5AD4-D5AB-3D20-7E2A79D56119" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.7E9E592B-EA80-8F6F-E4DF-C0A116C92641"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Operation xmi.idref="DCE.05288B2A-858D-2802-46FF-2E4516C3E72D" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.79E252DC-F065-714F-042A-2A73A8958EB9"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:SimpleSemanticModelElement presentation=""  xmi.id="DCE.79E252DC-F065-714F-042A-2A73A8958EB9"  typeinfo="Operations Redefined From AbstractEntity" />
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+<UML:GraphNode xmi.id="DCE.ABA5E057-4640-2D50-1BF4-4330F68E7281"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Operation xmi.idref="DCE.133C6533-8EFF-FE3D-34C1-33C3447F03A4" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.27E119F0-C730-0210-A61E-D26388B07ACB"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Operation xmi.idref="DCE.5AF92829-C9A7-BAF9-92EC-45B3904CF88A" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.98AE4EC0-9062-C79B-E6EE-76C0B58105FD"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Operation xmi.idref="DCE.2AC16714-0E5C-A9EA-6EE9-2BA81549C80C" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+</UML:GraphElement.contained>
+<UML:GraphElement.dependencies>
+</UML:GraphElement.dependencies>
+<UML:GraphElement.anchorage>
+<UML:GraphConnector xmi.id="DCE.846BB957-4FB9-0900-C461-73933C90C18A" >
+<UML:GraphConnector.position>
+     <XMI.field>425</XMI.field>
+     <XMI.field>142</XMI.field>
+</UML:GraphConnector.position>
+<UML:GraphConnector.graphEdge>
+<UML:GraphEdge xmi.idref="DCE.B9D1CB63-ABCC-4861-8787-A27B6BBC0B3A" />
+</UML:GraphConnector.graphEdge>
+</UML:GraphConnector>
+</UML:GraphElement.anchorage>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.6D07CA82-A86A-FC81-BBD4-FEEE67F6FEE2"  isVisible="false" >
+<UML:GraphElement.position>
+     <XMI.field>246</XMI.field>
+     <XMI.field>375</XMI.field>
+</UML:GraphElement.position>
+<UML:GraphNode.size>
+     <XMI.field>103</XMI.field>
+     <XMI.field>26</XMI.field>
+</UML:GraphNode.size>
+<UML:DiagramElement.property>
+<UML:Property key="ResizeMode"  value="MINIMUMSIZE" />
+<UML:Property key="WIDGET_INDEX"  value="3" />
+<UML:Property key="OperationsCompartment"  value="COLLAPSED" />
+<UML:Property key="LiteralsCompartment"  value="COLLAPSED" />
+<UML:Property key="ViewName"  value="DEFAULT_VIEW" />
+<UML:Property key="AttributesCompartment"  value="COLLAPSED" />
+</UML:DiagramElement.property>
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Enumeration xmi.idref="DCE.C74297FA-9515-03B8-DD75-C9D6A9C37278" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+<UML:GraphNode xmi.id="DCE.6D07CA82-A86A-FC81-BBD4-FEEE67F6FEE2"  isVisible="false" >
+<UML:GraphElement.semanticModel>
+<UML:SimpleSemanticModelElement presentation=""  xmi.id="DCE.6D07CA82-A86A-FC81-BBD4-FEEE67F6FEE2" />
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.6D07CA82-A86A-FC81-BBD4-FEEE67F6FEE2"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:SimpleSemanticModelElement presentation=""  xmi.id="DCE.6D07CA82-A86A-FC81-BBD4-FEEE67F6FEE2"  typeinfo="Literals" />
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+<UML:GraphNode xmi.id="DCE.AD729A3B-23D7-7B6D-329A-783A43CE595E"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:EnumerationLiteral xmi.idref="DCE.3F7B9D28-BA35-A6CD-59CA-FA0048F2174F" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.8A8A5159-0DDF-6271-EB65-CA6FCB148087"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:EnumerationLiteral xmi.idref="DCE.4941C76B-451A-CE6C-4A3E-13AEECE7F8BC" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.E5CB9681-C96B-10D1-D04F-601A47A7D51E"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:EnumerationLiteral xmi.idref="DCE.20A482D1-6C0F-100E-A5D9-085853E0CA10" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.6D07CA82-A86A-FC81-BBD4-FEEE67F6FEE2"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:SimpleSemanticModelElement presentation=""  xmi.id="DCE.6D07CA82-A86A-FC81-BBD4-FEEE67F6FEE2"  typeinfo="Attributes" />
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.6D07CA82-A86A-FC81-BBD4-FEEE67F6FEE2"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:SimpleSemanticModelElement presentation=""  xmi.id="DCE.6D07CA82-A86A-FC81-BBD4-FEEE67F6FEE2"  typeinfo="Operations" />
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+</UML:GraphElement.contained>
+<UML:GraphElement.dependencies>
+</UML:GraphElement.dependencies>
+<UML:GraphElement.anchorage>
+<UML:GraphConnector xmi.id="DCE.EA36F92E-A9DE-A36D-E7C7-02B9D3464968" >
+<UML:GraphConnector.position>
+     <XMI.field>297</XMI.field>
+     <XMI.field>388</XMI.field>
+</UML:GraphConnector.position>
+<UML:GraphConnector.graphEdge>
+<UML:GraphEdge xmi.idref="DCE.06F3E804-72A2-0A31-7D31-82FB716936EC" />
+</UML:GraphConnector.graphEdge>
+</UML:GraphConnector>
+</UML:GraphElement.anchorage>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.93C12916-F3B4-012A-8D5B-1FC9CEFD69A8"  isVisible="false" >
+<UML:GraphElement.position>
+     <XMI.field>438</XMI.field>
+     <XMI.field>369</XMI.field>
+</UML:GraphElement.position>
+<UML:GraphNode.size>
+     <XMI.field>64</XMI.field>
+     <XMI.field>32</XMI.field>
+</UML:GraphNode.size>
+<UML:DiagramElement.property>
+<UML:Property key="RedefinedOperCompartment"  value="COLLAPSED" />
+<UML:Property key="ResizeMode"  value="MINIMUMSIZE" />
+<UML:Property key="WIDGET_INDEX"  value="1" />
+<UML:Property key="OperationsCompartment"  value="COLLAPSED" />
+<UML:Property key="ViewName"  value="DEFAULT_VIEW" />
+<UML:Property key="AttributesCompartment"  value="COLLAPSED" />
+</UML:DiagramElement.property>
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Class xmi.idref="DCE.BEEF085E-69AA-FA1D-926D-DA8FF9E27BF8" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+<UML:GraphNode xmi.id="DCE.93C12916-F3B4-012A-8D5B-1FC9CEFD69A8"  isVisible="false" >
+<UML:GraphElement.semanticModel>
+<UML:SimpleSemanticModelElement presentation=""  xmi.id="DCE.93C12916-F3B4-012A-8D5B-1FC9CEFD69A8" />
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.93C12916-F3B4-012A-8D5B-1FC9CEFD69A8"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:SimpleSemanticModelElement presentation=""  xmi.id="DCE.93C12916-F3B4-012A-8D5B-1FC9CEFD69A8"  typeinfo="Attributes" />
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+<UML:GraphNode xmi.id="DCE.CEA29003-93C3-0ADC-07F1-1B895C514724"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Attribute xmi.idref="DCE.188973E4-067D-4FF0-37D4-238457E58747" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.4BEEDDFF-B004-E0B7-5221-26A00421CDB2"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Attribute xmi.idref="DCE.3D3E1503-B755-58FF-7E71-7A39BB83E9EC" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.9275A45E-8D70-B6F7-F29A-814F27544881"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Attribute xmi.idref="DCE.200C8DA3-8102-62E3-1F5B-07A4B04521D9" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.6A2707E0-1D57-4CCB-A4E2-0D8B993C0053"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Attribute xmi.idref="DCE.E77EA899-8C3A-ED7A-3CEF-91E80621E010" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.93C12916-F3B4-012A-8D5B-1FC9CEFD69A8"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:SimpleSemanticModelElement presentation=""  xmi.id="DCE.93C12916-F3B4-012A-8D5B-1FC9CEFD69A8"  typeinfo="Operations" />
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+<UML:GraphNode xmi.id="DCE.7F4B2EB1-5B03-D686-FDE2-B937797CC988"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Operation xmi.idref="DCE.C15409B5-FFD4-0AEA-2A36-F459E74F65BA" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.72929663-9D17-751F-3F6C-791ABB270DBE"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Operation xmi.idref="DCE.09DC8AEE-3AC3-C17A-5EAF-5572083394F9" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.DF032C52-7491-6EEE-E26E-5588DF561058"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Operation xmi.idref="DCE.FA88DD65-BA23-953A-94B1-C200B327EB4D" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.F73D09F6-2DAD-F3B4-7358-5C2FEB624FDB"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Operation xmi.idref="DCE.E76E2BD9-50B5-E7AA-5BCE-057B367F72AD" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.3CCD0692-F9C3-0A9F-AFA4-C9FD3D88B8DF"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Operation xmi.idref="DCE.4CB06C86-87A5-FEFF-80E3-792D5563C398" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.DBA4BED9-6BC5-4695-4735-C36CE56F5186"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Operation xmi.idref="DCE.C436F7B9-1106-65AC-EAB9-7BEDEFBBEFBF" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.3A86FA02-0CA3-30DD-3A68-B4830BFA2ADE"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Operation xmi.idref="DCE.3CA74C91-0DD8-F884-1ED6-C855CCCB8A61" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.DD84097F-A494-D4B6-B523-0F97A5AF8312"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Operation xmi.idref="DCE.ABD381DC-DAA0-9F48-648B-DE9561AF144A" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.67AB3EB8-3275-853E-1259-F3168C5CECAB"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Operation xmi.idref="DCE.4CA41201-9C6A-1D8E-2D5E-2CAE0E69686A" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.2986F281-7B8F-B8B1-3FF1-29386DEDB8F1"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Operation xmi.idref="DCE.24ED4926-C985-B4E8-0986-C46B52444E3F" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.990E6303-9F39-8721-E562-AF8BAB5D5DAB"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Operation xmi.idref="DCE.B041B7F3-A7D3-8983-8039-4917EFED88C0" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.D366C721-E8A4-A313-E5A1-BDADD8FE1F5A"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Operation xmi.idref="DCE.9A7D8DCF-C73B-3299-AA0F-824B51FC9D1B" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.8C03AAC7-4AAF-E437-7E24-D5053DACF6A4"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Operation xmi.idref="DCE.2DD1C21A-B64D-8C62-DD83-729C360197D2" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.989AC9BB-850A-99BC-538B-31338DA0086D"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Operation xmi.idref="DCE.001D9A2F-49FE-C6F9-A599-04A013850FAE" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.93C12916-F3B4-012A-8D5B-1FC9CEFD69A8"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:SimpleSemanticModelElement presentation=""  xmi.id="DCE.93C12916-F3B4-012A-8D5B-1FC9CEFD69A8"  typeinfo="Operations Redefined From AbstractEntity" />
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+<UML:GraphNode xmi.id="DCE.66CAE748-5128-F928-BC1F-72B7042796C2"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Operation xmi.idref="DCE.4A801A22-C99B-34A9-F4E3-C004E335DFB4" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.B7DFA988-4384-EB9A-B7CB-7BF0C6CC2FCA"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Operation xmi.idref="DCE.3E99DB7E-7263-3AEF-4F7B-C278ADFF42D6" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.CE1C96CA-28D8-C094-061B-DA847E96FE1F"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Operation xmi.idref="DCE.B03398CC-6259-49D4-D4D6-F1D3697CE4B9" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+</UML:GraphElement.contained>
+<UML:GraphElement.dependencies>
+</UML:GraphElement.dependencies>
+<UML:GraphElement.anchorage>
+<UML:GraphConnector xmi.id="DCE.27F04D5A-D472-F3F9-1314-36FECA5740A8" >
+<UML:GraphConnector.position>
+     <XMI.field>470</XMI.field>
+     <XMI.field>385</XMI.field>
+</UML:GraphConnector.position>
+<UML:GraphConnector.graphEdge>
+<UML:GraphEdge xmi.idref="DCE.2798ED77-2166-ED8D-3397-036BBF78992C" />
+</UML:GraphConnector.graphEdge>
+</UML:GraphConnector>
+</UML:GraphElement.anchorage>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.91535EC1-BFEF-4BD7-DB2F-F73F536B1960"  isVisible="false" >
+<UML:GraphElement.position>
+     <XMI.field>69</XMI.field>
+     <XMI.field>172</XMI.field>
+</UML:GraphElement.position>
+<UML:GraphNode.size>
+     <XMI.field>338</XMI.field>
+     <XMI.field>29</XMI.field>
+</UML:GraphNode.size>
+<UML:DiagramElement.property>
+<UML:Property key="ResizeMode"  value="MINIMUMSIZE" />
+<UML:Property key="WIDGET_INDEX"  value="0" />
+<UML:Property key="OperationsCompartment"  value="COLLAPSED" />
+<UML:Property key="ViewName"  value="DEFAULT_VIEW" />
+<UML:Property key="AttributesCompartment"  value="COLLAPSED" />
+</UML:DiagramElement.property>
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Class xmi.idref="DCE.08911BD7-1949-6FE4-60DB-C7CA9D24F195" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+<UML:GraphNode xmi.id="DCE.91535EC1-BFEF-4BD7-DB2F-F73F536B1960"  isVisible="false" >
+<UML:GraphElement.semanticModel>
+<UML:SimpleSemanticModelElement presentation=""  xmi.id="DCE.91535EC1-BFEF-4BD7-DB2F-F73F536B1960" />
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.91535EC1-BFEF-4BD7-DB2F-F73F536B1960"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:SimpleSemanticModelElement presentation=""  xmi.id="DCE.91535EC1-BFEF-4BD7-DB2F-F73F536B1960"  typeinfo="Attributes" />
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.91535EC1-BFEF-4BD7-DB2F-F73F536B1960"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:SimpleSemanticModelElement presentation=""  xmi.id="DCE.91535EC1-BFEF-4BD7-DB2F-F73F536B1960"  typeinfo="Operations" />
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+<UML:GraphNode xmi.id="DCE.940411E3-8169-6F66-C967-C4420755451B"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Operation xmi.idref="DCE.ED35B5E6-88D8-9631-C55B-97AF3C07A8B3" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="DCE.46EE95BB-E579-AB92-3C78-F81609E2394A"  isVisible="true" >
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Operation xmi.idref="DCE.29F0CED9-24F4-CD28-D953-241D24500547" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+</UML:GraphElement.contained>
+<UML:GraphElement.dependencies>
+</UML:GraphElement.dependencies>
+<UML:GraphElement.anchorage>
+<UML:GraphConnector xmi.id="DCE.04F9A774-A53B-A78F-6A76-D28143A0DB1E" >
+<UML:GraphConnector.position>
+     <XMI.field>238</XMI.field>
+     <XMI.field>186</XMI.field>
+</UML:GraphConnector.position>
+<UML:GraphConnector.graphEdge>
+<UML:GraphEdge xmi.idref="DCE.430ED673-1489-8BB2-13A2-3BE88DFA3BCC" />
+</UML:GraphConnector.graphEdge>
+</UML:GraphConnector>
+</UML:GraphElement.anchorage>
+</UML:GraphNode>
+<UML:GraphEdge xmi.id="DCE.430ED673-1489-8BB2-13A2-3BE88DFA3BCC"  isVisible="false" >
+<UML:GraphElement.position>
+     <XMI.field>0</XMI.field>
+     <XMI.field>0</XMI.field>
+</UML:GraphElement.position>
+<UML:GraphEdge.waypoints>
+     <XMI.field>
+          <XMI.field>407</XMI.field>
+          <XMI.field>228</XMI.field>
+     </XMI.field>
+     <XMI.field>
+          <XMI.field>238</XMI.field>
+          <XMI.field>201</XMI.field>
+     </XMI.field>
+</UML:GraphEdge.waypoints>
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation="Dependency"  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Dependency xmi.idref="DCE.A225D28E-A912-549A-1A13-332D91E62663" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+<UML:GraphEdge.anchor>
+<UML:GraphConnector xmi.idref="DCE.8C81CB83-9B84-0A47-ABC8-237F4B264B6E" />
+<UML:GraphConnector xmi.idref="DCE.04F9A774-A53B-A78F-6A76-D28143A0DB1E" />
+</UML:GraphEdge.anchor>
+</UML:GraphEdge>
+<UML:GraphEdge xmi.id="DCE.EFC1825F-3FB2-7332-19BC-0D5FD70439F3"  isVisible="false" >
+<UML:GraphElement.position>
+     <XMI.field>0</XMI.field>
+     <XMI.field>0</XMI.field>
+</UML:GraphElement.position>
+<UML:GraphEdge.waypoints>
+     <XMI.field>
+          <XMI.field>474</XMI.field>
+          <XMI.field>299</XMI.field>
+     </XMI.field>
+     <XMI.field>
+          <XMI.field>551</XMI.field>
+          <XMI.field>232</XMI.field>
+     </XMI.field>
+     <XMI.field>
+          <XMI.field>559</XMI.field>
+          <XMI.field>139</XMI.field>
+     </XMI.field>
+     <XMI.field>
+          <XMI.field>412</XMI.field>
+          <XMI.field>80</XMI.field>
+     </XMI.field>
+</UML:GraphEdge.waypoints>
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation="Generalization"  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Generalization xmi.idref="DCE.1B5C45C4-8A61-0A06-EA89-1CCE445D50F5" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+<UML:GraphEdge.anchor>
+<UML:GraphConnector xmi.idref="DCE.2CD4B424-C2AD-3E12-BCD4-1B6B44BA1C52" />
+<UML:GraphConnector xmi.idref="DCE.36031605-9257-2F5E-E140-CA510F3E212C" />
+</UML:GraphEdge.anchor>
+</UML:GraphEdge>
+<UML:GraphEdge xmi.id="DCE.A5C44304-C29F-68FE-ECF8-C475B2FAA4AC"  isVisible="false" >
+<UML:GraphElement.position>
+     <XMI.field>0</XMI.field>
+     <XMI.field>0</XMI.field>
+</UML:GraphElement.position>
+<UML:GraphEdge.waypoints>
+     <XMI.field>
+          <XMI.field>479</XMI.field>
+          <XMI.field>228</XMI.field>
+     </XMI.field>
+     <XMI.field>
+          <XMI.field>553</XMI.field>
+          <XMI.field>191</XMI.field>
+     </XMI.field>
+     <XMI.field>
+          <XMI.field>561</XMI.field>
+          <XMI.field>140</XMI.field>
+     </XMI.field>
+     <XMI.field>
+          <XMI.field>438</XMI.field>
+          <XMI.field>80</XMI.field>
+     </XMI.field>
+</UML:GraphEdge.waypoints>
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation="Generalization"  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Generalization xmi.idref="DCE.A7A4755C-6364-D6AA-DA1B-F74D0915D4C1" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+<UML:GraphEdge.anchor>
+<UML:GraphConnector xmi.idref="DCE.8C81CB83-9B84-0A47-ABC8-237F4B264B6E" />
+<UML:GraphConnector xmi.idref="DCE.36031605-9257-2F5E-E140-CA510F3E212C" />
+</UML:GraphEdge.anchor>
+</UML:GraphEdge>
+<UML:GraphEdge xmi.id="DCE.2798ED77-2166-ED8D-3397-036BBF78992C"  isVisible="false" >
+<UML:GraphElement.position>
+     <XMI.field>0</XMI.field>
+     <XMI.field>0</XMI.field>
+</UML:GraphElement.position>
+<UML:GraphEdge.waypoints>
+     <XMI.field>
+          <XMI.field>458</XMI.field>
+          <XMI.field>331</XMI.field>
+     </XMI.field>
+     <XMI.field>
+          <XMI.field>459</XMI.field>
+          <XMI.field>369</XMI.field>
+     </XMI.field>
+</UML:GraphEdge.waypoints>
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Aggregation xmi.idref="DCE.C6133C57-F350-8C0C-0510-3E6581255ACB" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+<UML:GraphNode xmi.id="AssociationEndPEID"  isVisible="false" >
+<UML:GraphElement.position>
+     <XMI.field>0</XMI.field>
+     <XMI.field>0</XMI.field>
+</UML:GraphElement.position>
+<UML:GraphNode.size>
+     <XMI.field>45</XMI.field>
+     <XMI.field>71</XMI.field>
+</UML:GraphNode.size>
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:AssociationEnd xmi.idref="DCE.5BEF051F-B131-EDB6-175D-3A96906D67B4" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="AssociationEndPEID"  isVisible="false" >
+<UML:GraphElement.position>
+     <XMI.field>0</XMI.field>
+     <XMI.field>0</XMI.field>
+</UML:GraphElement.position>
+<UML:GraphNode.size>
+     <XMI.field>45</XMI.field>
+     <XMI.field>71</XMI.field>
+</UML:GraphNode.size>
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:NavigableEnd xmi.idref="DCE.65C1F7FE-F2DA-893D-D3EC-CA16BF86D35A" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+<UML:GraphNode xmi.id="Multiplicity_TARGET_PEID"  isVisible="false" >
+<UML:GraphElement.semanticModel>
+<UML:SimpleSemanticModelElement presentation=""  xmi.id="Multiplicity_TARGET_PEID"  typeinfo="Multiplicity" />
+</UML:GraphElement.semanticModel>
+</UML:GraphNode>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+</UML:GraphElement.contained>
+<UML:GraphEdge.anchor>
+<UML:GraphConnector xmi.idref="DCE.2CD4B424-C2AD-3E12-BCD4-1B6B44BA1C52" />
+<UML:GraphConnector xmi.idref="DCE.27F04D5A-D472-F3F9-1314-36FECA5740A8" />
+</UML:GraphEdge.anchor>
+</UML:GraphEdge>
+<UML:GraphEdge xmi.id="DCE.6D38AA59-25B7-3BDD-2C70-60EA83FF6161"  isVisible="false" >
+<UML:GraphElement.position>
+     <XMI.field>0</XMI.field>
+     <XMI.field>0</XMI.field>
+</UML:GraphElement.position>
+<UML:GraphEdge.waypoints>
+     <XMI.field>
+          <XMI.field>431</XMI.field>
+          <XMI.field>212</XMI.field>
+     </XMI.field>
+     <XMI.field>
+          <XMI.field>412</XMI.field>
+          <XMI.field>158</XMI.field>
+     </XMI.field>
+</UML:GraphEdge.waypoints>
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Aggregation xmi.idref="DCE.24C6A3F1-8783-ED4D-A03A-1646292FAEF7" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+<UML:GraphNode xmi.id="AssociationEndPEID"  isVisible="false" >
+<UML:GraphElement.position>
+     <XMI.field>0</XMI.field>
+     <XMI.field>0</XMI.field>
+</UML:GraphElement.position>
+<UML:GraphNode.size>
+     <XMI.field>58</XMI.field>
+     <XMI.field>87</XMI.field>
+</UML:GraphNode.size>
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:AssociationEnd xmi.idref="DCE.3EBF30DA-1B3B-2EA0-1698-1AEFBD8410E0" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="AssociationEndPEID"  isVisible="false" >
+<UML:GraphElement.position>
+     <XMI.field>0</XMI.field>
+     <XMI.field>0</XMI.field>
+</UML:GraphElement.position>
+<UML:GraphNode.size>
+     <XMI.field>58</XMI.field>
+     <XMI.field>87</XMI.field>
+</UML:GraphNode.size>
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:NavigableEnd xmi.idref="DCE.D913FBA2-3642-D1D0-DB80-9A633C62D086" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+<UML:GraphNode xmi.id="End Name_TARGET_PEID"  isVisible="false" >
+<UML:GraphElement.position>
+     <XMI.field>0</XMI.field>
+     <XMI.field>0</XMI.field>
+</UML:GraphElement.position>
+<UML:GraphElement.semanticModel>
+<UML:SimpleSemanticModelElement presentation=""  xmi.id="End Name_TARGET_PEID"  typeinfo="Name" />
+</UML:GraphElement.semanticModel>
+</UML:GraphNode>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+</UML:GraphElement.contained>
+<UML:GraphEdge.anchor>
+<UML:GraphConnector xmi.idref="DCE.8C81CB83-9B84-0A47-ABC8-237F4B264B6E" />
+<UML:GraphConnector xmi.idref="DCE.846BB957-4FB9-0900-C461-73933C90C18A" />
+</UML:GraphEdge.anchor>
+</UML:GraphEdge>
+<UML:GraphEdge xmi.id="DCE.06F3E804-72A2-0A31-7D31-82FB716936EC"  isVisible="false" >
+<UML:GraphElement.position>
+     <XMI.field>0</XMI.field>
+     <XMI.field>0</XMI.field>
+</UML:GraphElement.position>
+<UML:GraphEdge.waypoints>
+     <XMI.field>
+          <XMI.field>438</XMI.field>
+          <XMI.field>385</XMI.field>
+     </XMI.field>
+     <XMI.field>
+          <XMI.field>349</XMI.field>
+          <XMI.field>388</XMI.field>
+     </XMI.field>
+</UML:GraphEdge.waypoints>
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Aggregation xmi.idref="DCE.07401D4B-68C4-651F-F0F0-F9C58DF37E9A" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+<UML:GraphNode xmi.id="AssociationEndPEID"  isVisible="false" >
+<UML:GraphElement.position>
+     <XMI.field>0</XMI.field>
+     <XMI.field>0</XMI.field>
+</UML:GraphElement.position>
+<UML:GraphNode.size>
+     <XMI.field>122</XMI.field>
+     <XMI.field>40</XMI.field>
+</UML:GraphNode.size>
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:AssociationEnd xmi.idref="DCE.46E83A07-E85E-4370-316A-922FB29AD242" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="AssociationEndPEID"  isVisible="false" >
+<UML:GraphElement.position>
+     <XMI.field>0</XMI.field>
+     <XMI.field>0</XMI.field>
+</UML:GraphElement.position>
+<UML:GraphNode.size>
+     <XMI.field>122</XMI.field>
+     <XMI.field>40</XMI.field>
+</UML:GraphNode.size>
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:NavigableEnd xmi.idref="DCE.DB436D77-4C7E-7B13-ACCF-7587D3413992" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+<UML:GraphNode xmi.id="End Name_TARGET_PEID"  isVisible="false" >
+<UML:GraphElement.position>
+     <XMI.field>0</XMI.field>
+     <XMI.field>0</XMI.field>
+</UML:GraphElement.position>
+<UML:GraphElement.semanticModel>
+<UML:SimpleSemanticModelElement presentation=""  xmi.id="End Name_TARGET_PEID"  typeinfo="Name" />
+</UML:GraphElement.semanticModel>
+</UML:GraphNode>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+</UML:GraphElement.contained>
+<UML:GraphEdge.anchor>
+<UML:GraphConnector xmi.idref="DCE.27F04D5A-D472-F3F9-1314-36FECA5740A8" />
+<UML:GraphConnector xmi.idref="DCE.EA36F92E-A9DE-A36D-E7C7-02B9D3464968" />
+</UML:GraphEdge.anchor>
+</UML:GraphEdge>
+<UML:GraphEdge xmi.id="DCE.E38051B2-FFCC-E713-D239-749D73BC6B48"  isVisible="false" >
+<UML:GraphElement.position>
+     <XMI.field>0</XMI.field>
+     <XMI.field>0</XMI.field>
+</UML:GraphElement.position>
+<UML:GraphEdge.waypoints>
+     <XMI.field>
+          <XMI.field>480</XMI.field>
+          <XMI.field>369</XMI.field>
+     </XMI.field>
+     <XMI.field>
+          <XMI.field>548</XMI.field>
+          <XMI.field>284</XMI.field>
+     </XMI.field>
+     <XMI.field>
+          <XMI.field>556</XMI.field>
+          <XMI.field>136</XMI.field>
+     </XMI.field>
+     <XMI.field>
+          <XMI.field>464</XMI.field>
+          <XMI.field>80</XMI.field>
+     </XMI.field>
+</UML:GraphEdge.waypoints>
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation="Generalization"  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Generalization xmi.idref="DCE.4EC7C1B1-FC0C-88CF-E98E-2467002B451B" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+<UML:GraphEdge.anchor>
+<UML:GraphConnector xmi.idref="DCE.27F04D5A-D472-F3F9-1314-36FECA5740A8" />
+<UML:GraphConnector xmi.idref="DCE.36031605-9257-2F5E-E140-CA510F3E212C" />
+</UML:GraphEdge.anchor>
+</UML:GraphEdge>
+<UML:GraphEdge xmi.id="DCE.B9D1CB63-ABCC-4861-8787-A27B6BBC0B3A"  isVisible="false" >
+<UML:GraphElement.position>
+     <XMI.field>0</XMI.field>
+     <XMI.field>0</XMI.field>
+</UML:GraphElement.position>
+<UML:GraphEdge.waypoints>
+     <XMI.field>
+          <XMI.field>425</XMI.field>
+          <XMI.field>126</XMI.field>
+     </XMI.field>
+     <XMI.field>
+          <XMI.field>386</XMI.field>
+          <XMI.field>80</XMI.field>
+     </XMI.field>
+</UML:GraphEdge.waypoints>
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation="Generalization"  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Generalization xmi.idref="DCE.A00CC392-AA3C-7505-1A58-84060B42B1E2" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+<UML:GraphEdge.anchor>
+<UML:GraphConnector xmi.idref="DCE.846BB957-4FB9-0900-C461-73933C90C18A" />
+<UML:GraphConnector xmi.idref="DCE.36031605-9257-2F5E-E140-CA510F3E212C" />
+</UML:GraphEdge.anchor>
+</UML:GraphEdge>
+<UML:GraphEdge xmi.id="DCE.B361E7B1-4B64-979C-F76F-8F64C9F8DC63"  isVisible="false" >
+<UML:GraphElement.position>
+     <XMI.field>0</XMI.field>
+     <XMI.field>0</XMI.field>
+</UML:GraphElement.position>
+<UML:GraphEdge.waypoints>
+     <XMI.field>
+          <XMI.field>438</XMI.field>
+          <XMI.field>158</XMI.field>
+     </XMI.field>
+     <XMI.field>
+          <XMI.field>455</XMI.field>
+          <XMI.field>212</XMI.field>
+     </XMI.field>
+</UML:GraphEdge.waypoints>
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Aggregation xmi.idref="DCE.815211C2-9A0D-1A92-F097-48406BE609FA" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+<UML:GraphNode xmi.id="AssociationEndPEID"  isVisible="false" >
+<UML:GraphElement.position>
+     <XMI.field>0</XMI.field>
+     <XMI.field>0</XMI.field>
+</UML:GraphElement.position>
+<UML:GraphNode.size>
+     <XMI.field>66</XMI.field>
+     <XMI.field>87</XMI.field>
+</UML:GraphNode.size>
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:AssociationEnd xmi.idref="DCE.BC7C0D3A-B128-A6E2-100C-59F517167843" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="AssociationEndPEID"  isVisible="false" >
+<UML:GraphElement.position>
+     <XMI.field>0</XMI.field>
+     <XMI.field>0</XMI.field>
+</UML:GraphElement.position>
+<UML:GraphNode.size>
+     <XMI.field>66</XMI.field>
+     <XMI.field>87</XMI.field>
+</UML:GraphNode.size>
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:NavigableEnd xmi.idref="DCE.400568BF-DC82-2F08-F023-113045BA221C" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+<UML:GraphNode xmi.id="Multiplicity_TARGET_PEID"  isVisible="false" >
+<UML:GraphElement.semanticModel>
+<UML:SimpleSemanticModelElement presentation=""  xmi.id="Multiplicity_TARGET_PEID"  typeinfo="Multiplicity" />
+</UML:GraphElement.semanticModel>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="End Name_TARGET_PEID"  isVisible="false" >
+<UML:GraphElement.position>
+     <XMI.field>0</XMI.field>
+     <XMI.field>0</XMI.field>
+</UML:GraphElement.position>
+<UML:GraphElement.semanticModel>
+<UML:SimpleSemanticModelElement presentation=""  xmi.id="End Name_TARGET_PEID"  typeinfo="Name" />
+</UML:GraphElement.semanticModel>
+</UML:GraphNode>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+</UML:GraphElement.contained>
+<UML:GraphEdge.anchor>
+<UML:GraphConnector xmi.idref="DCE.846BB957-4FB9-0900-C461-73933C90C18A" />
+<UML:GraphConnector xmi.idref="DCE.8C81CB83-9B84-0A47-ABC8-237F4B264B6E" />
+</UML:GraphEdge.anchor>
+</UML:GraphEdge>
+<UML:GraphEdge xmi.id="DCE.3348F515-713A-0550-C590-60C0B15B58F6"  isVisible="false" >
+<UML:GraphElement.position>
+     <XMI.field>0</XMI.field>
+     <XMI.field>0</XMI.field>
+</UML:GraphElement.position>
+<UML:GraphEdge.waypoints>
+     <XMI.field>
+          <XMI.field>425</XMI.field>
+          <XMI.field>48</XMI.field>
+     </XMI.field>
+     <XMI.field>
+          <XMI.field>425</XMI.field>
+          <XMI.field>-17</XMI.field>
+     </XMI.field>
+</UML:GraphEdge.waypoints>
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation="Implementation"  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Implementation xmi.idref="DCE.EF168D5D-30D3-85D4-E0A4-62732F5482B3" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+<UML:GraphEdge.anchor>
+<UML:GraphConnector xmi.idref="DCE.36031605-9257-2F5E-E140-CA510F3E212C" />
+<UML:GraphConnector xmi.idref="DCE.DB6B0D1C-7E93-E070-1507-EA82B9671F0E" />
+</UML:GraphEdge.anchor>
+</UML:GraphEdge>
+<UML:GraphEdge xmi.id="DCE.64BDB203-B54E-3ACD-4F3F-9544A9CE41DE"  isVisible="false" >
+<UML:GraphElement.position>
+     <XMI.field>0</XMI.field>
+     <XMI.field>0</XMI.field>
+</UML:GraphElement.position>
+<UML:GraphEdge.waypoints>
+     <XMI.field>
+          <XMI.field>458</XMI.field>
+          <XMI.field>299</XMI.field>
+     </XMI.field>
+     <XMI.field>
+          <XMI.field>455</XMI.field>
+          <XMI.field>244</XMI.field>
+     </XMI.field>
+</UML:GraphEdge.waypoints>
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Aggregation xmi.idref="DCE.E2F0742A-B9D6-0DA6-D304-7AF38B5B3EFE" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+<UML:GraphNode xmi.id="AssociationEndPEID"  isVisible="false" >
+<UML:GraphElement.position>
+     <XMI.field>0</XMI.field>
+     <XMI.field>0</XMI.field>
+</UML:GraphElement.position>
+<UML:GraphNode.size>
+     <XMI.field>53</XMI.field>
+     <XMI.field>88</XMI.field>
+</UML:GraphNode.size>
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:AssociationEnd xmi.idref="DCE.20C6BCEB-5B23-50A0-8C8D-4BDCA19DF7C2" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="AssociationEndPEID"  isVisible="false" >
+<UML:GraphElement.position>
+     <XMI.field>0</XMI.field>
+     <XMI.field>0</XMI.field>
+</UML:GraphElement.position>
+<UML:GraphNode.size>
+     <XMI.field>53</XMI.field>
+     <XMI.field>88</XMI.field>
+</UML:GraphNode.size>
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:NavigableEnd xmi.idref="DCE.10ADD8CF-E4DB-C9C7-7690-7F6705C66835" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+<UML:GraphNode xmi.id="End Name_TARGET_PEID"  isVisible="false" >
+<UML:GraphElement.position>
+     <XMI.field>0</XMI.field>
+     <XMI.field>0</XMI.field>
+</UML:GraphElement.position>
+<UML:GraphElement.semanticModel>
+<UML:SimpleSemanticModelElement presentation=""  xmi.id="End Name_TARGET_PEID"  typeinfo="Name" />
+</UML:GraphElement.semanticModel>
+</UML:GraphNode>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+</UML:GraphElement.contained>
+<UML:GraphEdge.anchor>
+<UML:GraphConnector xmi.idref="DCE.2CD4B424-C2AD-3E12-BCD4-1B6B44BA1C52" />
+<UML:GraphConnector xmi.idref="DCE.8C81CB83-9B84-0A47-ABC8-237F4B264B6E" />
+</UML:GraphEdge.anchor>
+</UML:GraphEdge>
+<UML:GraphEdge xmi.id="DCE.510EF9BC-92C9-9804-B226-18F758866CFB"  isVisible="false" >
+<UML:GraphElement.position>
+     <XMI.field>0</XMI.field>
+     <XMI.field>0</XMI.field>
+</UML:GraphElement.position>
+<UML:GraphEdge.waypoints>
+     <XMI.field>
+          <XMI.field>431</XMI.field>
+          <XMI.field>244</XMI.field>
+     </XMI.field>
+     <XMI.field>
+          <XMI.field>441</XMI.field>
+          <XMI.field>299</XMI.field>
+     </XMI.field>
+</UML:GraphEdge.waypoints>
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:Aggregation xmi.idref="DCE.A75C3457-0358-9484-6E2D-F654C53EE3DF" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+<UML:GraphNode xmi.id="AssociationEndPEID"  isVisible="false" >
+<UML:GraphElement.position>
+     <XMI.field>0</XMI.field>
+     <XMI.field>0</XMI.field>
+</UML:GraphElement.position>
+<UML:GraphNode.size>
+     <XMI.field>65</XMI.field>
+     <XMI.field>88</XMI.field>
+</UML:GraphNode.size>
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:AssociationEnd xmi.idref="DCE.F0E710E8-1CCA-DC09-3593-2499AB674CED" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="AssociationEndPEID"  isVisible="false" >
+<UML:GraphElement.position>
+     <XMI.field>0</XMI.field>
+     <XMI.field>0</XMI.field>
+</UML:GraphElement.position>
+<UML:GraphNode.size>
+     <XMI.field>65</XMI.field>
+     <XMI.field>88</XMI.field>
+</UML:GraphNode.size>
+<UML:GraphElement.semanticModel>
+<UML:Uml2SemanticModelBridge presentation=""  xmi.id="xmi_id" >
+<UML:Uml2SemanticModelBridge.element>
+<UML:NavigableEnd xmi.idref="DCE.EA9CA2D6-C5AA-DDE8-A776-3AEAE9B9E2FC" />
+</UML:Uml2SemanticModelBridge.element>
+</UML:Uml2SemanticModelBridge>
+</UML:GraphElement.semanticModel>
+<UML:GraphElement.contained>
+<UML:GraphNode xmi.id="Multiplicity_TARGET_PEID"  isVisible="false" >
+<UML:GraphElement.semanticModel>
+<UML:SimpleSemanticModelElement presentation=""  xmi.id="Multiplicity_TARGET_PEID"  typeinfo="Multiplicity" />
+</UML:GraphElement.semanticModel>
+</UML:GraphNode>
+<UML:GraphNode xmi.id="End Name_TARGET_PEID"  isVisible="false" >
+<UML:GraphElement.position>
+     <XMI.field>0</XMI.field>
+     <XMI.field>0</XMI.field>
+</UML:GraphElement.position>
+<UML:GraphElement.semanticModel>
+<UML:SimpleSemanticModelElement presentation=""  xmi.id="End Name_TARGET_PEID"  typeinfo="Name" />
+</UML:GraphElement.semanticModel>
+</UML:GraphNode>
+</UML:GraphElement.contained>
+</UML:GraphNode>
+</UML:GraphElement.contained>
+<UML:GraphEdge.anchor>
+<UML:GraphConnector xmi.idref="DCE.8C81CB83-9B84-0A47-ABC8-237F4B264B6E" />
+<UML:GraphConnector xmi.idref="DCE.2CD4B424-C2AD-3E12-BCD4-1B6B44BA1C52" />
+</UML:GraphEdge.anchor>
+</UML:GraphEdge>
+</UML:GraphElement.contained>
+<UML:Diagram.owner>
+</UML:Diagram.owner>
+</UML:Diagram>
+</XMI.content>
+</XMI>
diff --git a/jsf-demo/sandbox/scrumtoys2009/scrumtoys-uml/scrumtoys-uml/UML_2.0EMBT.dtd b/jsf-demo/sandbox/scrumtoys2009/scrumtoys-uml/scrumtoys-uml/UML_2.0EMBT.dtd
new file mode 100644
index 0000000..62dc382
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/scrumtoys-uml/scrumtoys-uml/UML_2.0EMBT.dtd
@@ -0,0 +1,2713 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!-- _______________________________________________________________ -->
+<!--                                                                 -->
+<!-- XMI is the top-level XML element for XMI transfer text          -->
+<!-- _______________________________________________________________ -->
+<!ELEMENT XMI (XMI.header?, XMI.content?, XMI.difference*, XMI.extensions*)>
+<!ATTLIST XMI
+	xmi.version CDATA #FIXED "2.0"
+	timestamp CDATA #IMPLIED
+	verified (true | false) #IMPLIED
+>
+<!-- _______________________________________________________________ -->
+<!--                                                                 -->
+<!-- XMI.header contains documentation and identifies the model,     -->
+<!-- metamodel, and metametamodel                                    -->
+<!-- _______________________________________________________________ -->
+<!ELEMENT XMI.header (XMI.model*, XMI.metamodel*, XMI.metametamodel*, XMI.documentation?, XMI.import*)>
+<!-- _______________________________________________________________ -->
+<!--                                                                 -->
+<!-- documentation for transfer data                                 -->
+<!-- _______________________________________________________________ -->
+<!ELEMENT XMI.documentation (#PCDATA | XMI.owner | XMI.contact | XMI.longDescription | XMI.shortDescription | XMI.exporter | XMI.exporterVersion | XMI.notice)*>
+<!ELEMENT XMI.owner ANY>
+<!ELEMENT XMI.contact ANY>
+<!ELEMENT XMI.longDescription ANY>
+<!ELEMENT XMI.shortDescription ANY>
+<!ELEMENT XMI.exporter (#PCDATA)>
+<!ELEMENT XMI.exporterVersion (#PCDATA)>
+<!ELEMENT XMI.exporterID ANY>
+<!ELEMENT XMI.notice ANY>
+<!-- _______________________________________________________________ -->
+<!--                                                                 -->
+<!-- XMI.element.att defines the attributes that each XML element    -->
+<!-- that corresponds to a metamodel class must have to conform to   -->
+<!-- the XMI specification.                                          -->
+<!-- _______________________________________________________________ -->
+<!ENTITY % XMI.element.att 'xmi.id ID #IMPLIED xmi.label CDATA #IMPLIED xmi.uuid
+                CDATA #IMPLIED '>
+<!-- _______________________________________________________________ -->
+<!--                                                                 -->
+<!-- XMI.link.att defines the attributes that each XML element that  -->
+<!-- corresponds to a metamodel class must have to enable it to      -->
+<!-- function as a simple XLink as well as refer to model            -->
+<!-- constructs within the same XMI file.                            -->
+<!-- _______________________________________________________________ -->
+<!ENTITY % XMI.link.att 'href CDATA #IMPLIED xmi.idref IDREF #IMPLIED xml:link
+                CDATA #IMPLIED xlink:inline (true|false) #IMPLIED
+                xlink:actuate (show|user) #IMPLIED xlink:content-role
+                CDATA #IMPLIED xlink:title CDATA #IMPLIED xlink:show
+                (embed|replace|new) #IMPLIED xlink:behavior CDATA
+                #IMPLIED'>
+<!-- _______________________________________________________________ -->
+<!--                                                                 -->
+<!-- XMI.model identifies the model(s) being transferred             -->
+<!-- _______________________________________________________________ -->
+<!ELEMENT XMI.model ANY>
+<!ATTLIST XMI.model
+	%XMI.link.att; 
+	xmi.name CDATA #REQUIRED
+	xmi.version CDATA #IMPLIED
+>
+<!-- _______________________________________________________________ -->
+<!--                                                                 -->
+<!-- XMI.metamodel identifies the metamodel(s) for the transferred   -->
+<!-- data                                                            -->
+<!-- _______________________________________________________________ -->
+<!ELEMENT XMI.metamodel ANY>
+<!ATTLIST XMI.metamodel
+	%XMI.link.att; 
+	xmi.name CDATA #REQUIRED
+	xmi.version CDATA #IMPLIED
+>
+<!-- _______________________________________________________________ -->
+<!--                                                                 -->
+<!-- XMI.metametamodel identifies the metametamodel(s) for the       -->
+<!-- transferred data                                                -->
+<!-- _______________________________________________________________ -->
+<!ELEMENT XMI.metametamodel ANY>
+<!ATTLIST XMI.metametamodel
+	%XMI.link.att; 
+	xmi.name CDATA #REQUIRED
+	xmi.version CDATA #IMPLIED
+>
+<!-- _______________________________________________________________ -->
+<!--                                                                 -->
+<!-- XMI.import identifies imported metamodel(s)                     -->
+<!-- _______________________________________________________________ -->
+<!ELEMENT XMI.import ANY>
+<!ATTLIST XMI.import
+	%XMI.link.att; 
+	xmi.name CDATA #REQUIRED
+	xmi.version CDATA #IMPLIED
+>
+<!-- _______________________________________________________________ -->
+<!--                                                                 -->
+<!-- XMI.content is the actual data being transferred                -->
+<!-- _______________________________________________________________ -->
+<!ELEMENT XMI.content ANY>
+<!-- _______________________________________________________________ -->
+<!--                                                                 -->
+<!-- XMI.extensions contains data to transfer that does not conform  -->
+<!-- to the metamodel(s) in the header                               -->
+<!-- _______________________________________________________________ -->
+<!ELEMENT XMI.extensions ANY>
+<!ATTLIST XMI.extensions
+	xmi.extender CDATA #REQUIRED
+>
+<!-- _______________________________________________________________ -->
+<!--                                                                 -->
+<!-- extension contains information related to a specific model      -->
+<!-- construct that is not defined in the metamodel(s) in the header -->
+<!-- _______________________________________________________________ -->
+<!ELEMENT XMI.extension ANY>
+<!ATTLIST XMI.extension
+	%XMI.element.att; %XMI.link.att;
+	xmi.extender CDATA #REQUIRED
+	xmi.extenderID CDATA #IMPLIED
+>
+<!-- _______________________________________________________________ -->
+<!--                                                                 -->
+<!-- XMI.difference holds XML elements representing differences to a -->
+<!-- base model                                                      -->
+<!-- _______________________________________________________________ -->
+<!ELEMENT XMI.difference (XMI.difference | XMI.delete | XMI.add | XMI.replace)*>
+<!ATTLIST XMI.difference
+	%XMI.element.att; %XMI.link.att;
+>
+<!-- _______________________________________________________________ -->
+<!--                                                                 -->
+<!-- XMI.delete represents a deletion from a base model              -->
+<!-- _______________________________________________________________ -->
+<!ELEMENT XMI.delete EMPTY>
+<!ATTLIST XMI.delete
+	%XMI.element.att; %XMI.link.att;
+>
+<!-- _______________________________________________________________ -->
+<!--                                                                 -->
+<!-- XMI.add represents an addition to a base model                  -->
+<!-- _______________________________________________________________ -->
+<!ELEMENT XMI.add ANY>
+<!ATTLIST XMI.add
+	%XMI.element.att; %XMI.link.att;
+	xmi.position CDATA "-1"
+>
+<!-- _______________________________________________________________ -->
+<!--                                                                 -->
+<!-- XMI.replace represents the replacement of a model construct     -->
+<!-- with another model construct in a base model                    -->
+<!-- _______________________________________________________________ -->
+<!ELEMENT XMI.replace ANY>
+<!ATTLIST XMI.replace
+	%XMI.element.att; %XMI.link.att;
+	xmi.position CDATA "-1"
+>
+<!-- _______________________________________________________________ -->
+<!--                                                                 -->
+<!-- XMI.reference may be used to refer to data types not defined in -->
+<!-- the metamodel                                                   -->
+<!-- _______________________________________________________________ -->
+<!ELEMENT XMI.reference ANY>
+<!ATTLIST XMI.reference
+	%XMI.link.att; 
+>
+<!-- ========= UML:Data_Types ========= -->
+<!ENTITY % AggregationKind '(none|aggregate|composite)'>
+<!ENTITY % CallConcurrencyKind '(sequential|guarded|concurrent)'>
+<!ENTITY % ChangeableKind '(unrestricted|restricted|addOnly|removeOnly)'>
+<!ENTITY % OrderingKind '(unordered|ordered)'>
+<!ENTITY % ParameterDirectionKind '(in|inout|out|result)'>
+<!ENTITY % ParameterSemanticsKind '(optional|byValue|byRef|addressOf)'>
+<!ENTITY % ScopeKind '(instance|classifier)'>
+<!ENTITY % VisibilityKind '(public|protected|private|package)'>
+<!ENTITY % InstantiationKind '(direct|indirect|none)'>
+<!ENTITY % PartKind '(focus|auxiliary|interfaceImplementation)'>
+<!ENTITY % ObjectNodeOrderingKind '(unordered|ordered|LIFO|FIFO)'>
+<!ENTITY % InteractionOperator '(alt|else|opt|par|loop|region|neg|assert|seq|strict)'>
+<!ENTITY % StateMachineKind '(behavior|protocol)'>
+<!ENTITY % PseudostateKind '(entryPoint|choice|deepHistory|fork|initial|join|junction|shallowHistory)'>
+<!ENTITY % MessageKind '(create|synchronous|asynchronous|result)'>
+<!ENTITY % ActivityKind '(structured|flowChart)'>
+<!ENTITY % IterationActivityGroupKind '(testAtBegin|testAtEnd)'>
+<!ENTITY % ObjectFlowEffectKind '(create|read|update|delete)'>
+<!ENTITY % ActivityGroupKind '(iteration|structured|interruptible)'>
+<!-- ========= UML:Core ========= -->
+<!-- ========= UML:Element ========= -->
+<!ELEMENT UML:Element.ownedElement (UML:Element | UML:Multiplicity | UML:MultiplicityRange | UML:Expression | UML:TypedElement | UML:NamedElement | UML:Message | UML:PackageableElement | UML:RedefinableElement | UML:Namespace | UML:Behavior | UML:Activity | UML:InterruptibleActivityRegion | UML:ActivityNode | UML:ControlNode | UML:InitialNode | UML:FinalNode | UML:ActivityFinalNode | UML:FlowFinalNode | UML:ForkNode | UML:JoinNode | UML:DecisionNode | UML:MergeNode | UML:ActivityPartitio [...]
+<!ELEMENT UML:Element.taggedValue (UML:TaggedValue)*>
+<!ELEMENT UML:Element.presentation (UML:PresentationElement)*>
+<!ENTITY % ElementFeatures 'XMI.extension | 
+	UML:Element.ownedElement |
+	UML:Element.taggedValue |
+	UML:Element.presentation  '>
+<!ENTITY % ElementAtts '%XMI.element.att; %XMI.link.att; 
+	isVersioned (true|false) #IMPLIED 
+	owner IDREF #IMPLIED
+	targetFlow IDREFS #IMPLIED
+	sourceFlow IDREFS #IMPLIED
+	referredReference IDREFS #IMPLIED
+	referencingReference IDREFS #IMPLIED
+	appliedStereotype IDREFS #IMPLIED'>
+<!ELEMENT UML:Element (%ElementFeatures;)*>
+<!ATTLIST UML:Element
+	%ElementAtts; 
+>
+<!-- ========= UML:Multiplicity ========= -->
+<!ELEMENT UML:Multiplicity.range (UML:MultiplicityRange)*>
+<!ENTITY % MultiplicityFeatures '(%ElementFeatures; |
+   UML:Multiplicity.range)*'>
+<!ENTITY % MultiplicityAtts '%ElementAtts;
+		isOrdered ( true | false ) #IMPLIED
+		isOptional ( true | false ) #IMPLIED
+		isMultiValued ( true | false ) #IMPLIED'>
+<!ELEMENT UML:Multiplicity (%MultiplicityFeatures;)*>
+<!ATTLIST UML:Multiplicity
+	%MultiplicityAtts; 
+>
+<!-- ========= UML:MultiplicityRange ========= -->
+<!ENTITY % MultiplicityRangeFeatures '%ElementFeatures; '>
+<!ENTITY % MultiplicityRangeAtts '%ElementAtts;
+   lower CDATA #IMPLIED
+   upper CDATA #IMPLIED
+   multiplicity IDREF #IMPLIED'>
+<!ELEMENT UML:MultiplicityRange (%MultiplicityRangeFeatures;)*>
+<!ATTLIST UML:MultiplicityRange
+	%MultiplicityRangeAtts; 
+>
+<!-- ========= UML:ValueSpecification ========= -->
+<!ELEMENT UML:ValueSpecification.multiplicity (UML:Multiplicity)?>
+<!ENTITY % ValueSpecificationFeatures '%ElementFeatures; |
+	UML:ValueSpecification.multiplicity'>
+<!ENTITY % ValueSpecificationAtts '%ElementAtts;'>
+<!ELEMENT UML:ValueSpecification (%ValueSpecificationFeatures;)*>
+<!ATTLIST UML:ValueSpecification
+	%ValueSpecificationAtts; 
+>
+<!-- ========= UML:LiteralSpecification ========= -->
+<!ENTITY % LiteralSpecificationFeatures '%ValueSpecificationFeatures;'>
+<!ENTITY % LiteralSpecificationAtts '%ValueSpecificationAtts;'>
+<!ELEMENT UML:LiteralSpecification (%LiteralSpecificationFeatures;)*>
+<!ATTLIST UML:LiteralSpecification
+	%LiteralSpecificationAtts; 
+>
+<!-- ========= UML:LiteralInteger ========= -->
+<!ENTITY % LiteralIntegerFeatures '%LiteralSpecificationFeatures;'>
+<!ENTITY % LiteralIntegerAtts '%LiteralSpecificationAtts;
+   value CDATA #IMPLIED'>
+<!ELEMENT UML:LiteralInteger (%LiteralIntegerFeatures;)*>
+<!ATTLIST UML:LiteralInteger
+	%LiteralIntegerAtts; 
+>
+<!-- ========= UML:LiteralString ========= -->
+<!ENTITY % LiteralStringFeatures '%LiteralSpecificationFeatures;'>
+<!ENTITY % LiteralStringAtts '%LiteralSpecificationAtts;
+   value CDATA #IMPLIED'>
+<!ELEMENT UML:LiteralString (%LiteralStringFeatures;)*>
+<!ATTLIST UML:LiteralString
+	%LiteralStringAtts; 
+>
+<!-- ========= UML:LiteralBoolean ========= -->
+<!ENTITY % LiteralBooleanFeatures '%LiteralSpecificationFeatures;'>
+<!ENTITY % LiteralBooleanAtts '%LiteralSpecificationAtts;
+   value CDATA #IMPLIED'>
+<!ELEMENT UML:LiteralBoolean (%LiteralBooleanFeatures;)*>
+<!ATTLIST UML:LiteralBoolean
+	%LiteralBooleanAtts; 
+>
+<!-- ========= UML:LiteralNull ========= -->
+<!ENTITY % LiteralNullFeatures '%LiteralSpecificationFeatures;'>
+<!ENTITY % LiteralNullAtts '%LiteralSpecificationAtts;'>
+<!ELEMENT UML:LiteralNull (%LiteralNullFeatures;)*>
+<!ATTLIST UML:LiteralNull
+	%LiteralNullAtts; 
+>
+<!-- ========= UML:Expression ========= -->
+<!ELEMENT UML:Expression.body (#PCDATA)>
+<!ENTITY % ExpressionFeatures '%ValueSpecificationFeatures; |
+	UML:Expression.body'>
+<!ENTITY % ExpressionAtts '%ValueSpecificationAtts;
+   language CDATA #IMPLIED'>
+<!ELEMENT UML:Expression (%ExpressionFeatures;)*>
+<!ATTLIST UML:Expression
+	%ExpressionAtts; 
+>
+<!-- ========= UML:InstanceReference ========= -->
+<!ENTITY % InstanceReferenceFeatures '%ValueSpecificationFeatures;'>
+<!ENTITY % InstanceReferenceAtts '%ValueSpecificationAtts; 
+	target IDREF #IMPLIED'>
+<!ELEMENT UML:InstanceReference (%InstanceReferenceFeatures;)*>
+<!ATTLIST UML:InstanceReference
+	%InstanceReferenceAtts; 
+>
+<!-- ========= UML:ValueExpression ========= -->
+<!ENTITY % ValueExpressionFeatures '%ExpressionFeatures;'>
+<!ENTITY % ValueExpressionAtts '%ExpressionAtts;'>
+<!ELEMENT UML:ValueExpression (%ValueExpressionFeatures;)*>
+<!ATTLIST UML:ValueExpression
+	%ValueExpressionAtts; 
+>
+<!-- ============ UML:TypedElement ============== -->
+<!ENTITY % TypedElementAtts '%ElementAtts; 
+		type IDREF #IMPLIED
+      isSet (true|false) #IMPLIED'>
+<!ELEMENT UML:TypedElement.multiplicity (UML:Multiplicity)?>
+<!ENTITY % TypedElementFeatures '%ElementFeatures; |
+		UML:TypedElement.multiplicity'>
+<!ELEMENT UML:TypedElement (%TypedElementFeatures;)*>
+<!ATTLIST UML:TypedElement
+	%TypedElementAtts; 
+>
+<!-- ============ UML:NamedElement ============== -->
+<!ELEMENT UML:NamedElement.taggedValue (UML:TaggedValue)*>
+<!ENTITY % NamedElementAtts '%ElementAtts; 
+		name CDATA #IMPLIED
+		alias CDATA #IMPLIED
+		visibility %VisibilityKind; #IMPLIED
+		supplierDependency IDREFS #IMPLIED
+		clientDependency IDREFS #IMPLIED'>
+<!ENTITY % NamedElementFeatures '%ElementFeatures; |
+	UML:NamedElement.taggedValue'>
+<!ELEMENT UML:NamedElement (%NamedElementFeatures;)*>
+<!ATTLIST UML:NamedElement
+	%NamedElementAtts; 
+>
+<!-- ============ UML:AutonomousElement ============== -->
+<!ENTITY % AutonomousElementAtts '%NamedElementAtts; 
+		isExpanded (true|false)  #IMPLIED'>
+<!ENTITY % AutonomousElementFeatures '%NamedElementFeatures;'>
+<!ELEMENT UML:AutonomousElement (%AutonomousElementFeatures;)*>
+<!ATTLIST UML:AutonomousElement
+	%AutonomousElementAtts; 
+>
+<!-- ============ UML:ComponentAssembly ============== -->
+<!ENTITY % ComponentAssemblyAtts '%AutonomousElementAtts;
+      content IDREFS #IMPLIED
+      assembledComponent IDREFS #IMPLIED'>
+<!ENTITY % ComponentAssemblyFeatures '%AutonomousElementFeatures;'>
+<!ELEMENT UML:ComponentAssembly (%ComponentAssemblyFeatures;)*>
+<!ATTLIST UML:ComponentAssembly
+	%ComponentAssemblyAtts; 
+>
+<!-- ============ UML:Graphic ============== -->
+<!ENTITY % GraphicAtts '%NamedElementAtts;'>
+<!ENTITY % GraphicFeatures '%NamedElementFeatures;'>
+<!ELEMENT UML:Graphic (%GraphicFeatures;)*>
+<!ATTLIST UML:Graphic
+	%GraphicAtts; 
+>
+<!-- ============ UML:ConnectableElement ============== -->
+<!ENTITY % ConnectableElementAtts '%NamedElementAtts;
+      end IDREFS #IMPLIED
+      roleContext IDREFS #IMPLIED'>
+<!ENTITY % ConnectableElementFeatures '%NamedElementFeatures;'>
+<!ELEMENT UML:ConnectableElement (%ConnectableElementFeatures;)*>
+<!ATTLIST UML:ConnectableElement
+	%ConnectableElementAtts; 
+>
+<!-- ============ UML:ParameterableElement ============== -->
+<!ENTITY % ParameterableElementAtts '%NamedElementAtts; 
+		default IDREF #IMPLIED
+      typeConstraint CDATA #IMPLIED'>
+<!ENTITY % ParameterableElementFeatures '%NamedElementFeatures;'>
+<!ELEMENT UML:ParameterableElement (%ParameterableElementFeatures;)*>
+<!ATTLIST UML:ParameterableElement
+	%ParameterableElementAtts; 
+>
+<!-- ============ UML:Message ============== -->
+<!ENTITY % MessageAtts '%NamedElementAtts; 
+		initiatingAction IDREF #IMPLIED
+		sendEvent IDREF #IMPLIED
+		receiveEvent IDREF #IMPLIED
+		interaction IDREF #IMPLIED
+		kind %MessageKind; #IMPLIED
+		connector IDREF #IMPLIED
+		sendingMessage IDREF #IMPLIED'>
+<!ENTITY % MessageFeatures '%NamedElementFeatures;'>
+<!ELEMENT UML:Message (%MessageFeatures;)*>
+<!ATTLIST UML:Message
+	%MessageAtts; 
+>
+<!-- ============ UML:PackageableElement ============== -->
+<!ENTITY % PackageableElementAtts '%NamedElementAtts;
+		package IDREF #IMPLIED'>
+<!ENTITY % PackageableElementFeatures '%NamedElementFeatures;'>
+<!ELEMENT UML:PackageableElement (%PackageableElementFeatures;)*>
+<!ATTLIST UML:PackageableElement
+	%PackageableElementAtts; 
+>
+<!-- ============ UML:RedefinableElement ============== -->
+<!ENTITY % RedefinableElementAtts '%NamedElementAtts;
+		isFinal ( true | false ) #IMPLIED
+		redefinedElement IDREFS #IMPLIED
+		redefiningElement IDREFS #IMPLIED'>
+<!ENTITY % RedefinableElementFeatures '%NamedElementFeatures;'>
+<!ELEMENT UML:RedefinableElement (%RedefinableElementFeatures;)*>
+<!ATTLIST UML:RedefinableElement
+	%RedefinableElementAtts; 
+>
+<!-- ========= UML:Namespace ========= -->
+<!ELEMENT UML:Namespace.ownedConstraint (UML:Constraint)*>
+<!ENTITY % NamespaceFeatures '%NamedElementFeatures; |
+		UML:Namespace.ownedConstraint'>
+<!ENTITY % NamespaceAtts '%NamedElementAtts; 
+		member IDREFS #IMPLIED'>
+<!ELEMENT UML:Namespace (%NamespaceFeatures;)*>
+<!ATTLIST UML:Namespace
+	%NamespaceAtts; 
+>
+<!-- ========= UML:Behavior ========= -->
+<!ELEMENT UML:Behavior.parameter (UML:Parameter)*>
+<!ENTITY % BehaviorFeatures '%NamespaceFeatures; |
+	UML:Behavior.parameter'>
+<!ENTITY % BehaviorAtts '%NamespaceAtts;
+	specification IDREF #IMPLIED
+	representedFeature IDREF #IMPLIED
+	context IDREF #IMPLIED
+   isReentrant (true|false) #IMPLIED'>
+<!ELEMENT UML:Behavior (%BehaviorFeatures;)*>
+<!ATTLIST UML:Behavior
+	%BehaviorAtts; 
+>
+<!-- ========= UML:Procedure ========= -->
+<!ENTITY % ProcedureFeatures '%BehaviorFeatures;'>
+<!ENTITY % ProcedureAtts '%BehaviorAtts;'>
+<!ELEMENT UML:Procedure (%ProcedureFeatures;)*>
+<!ATTLIST UML:Procedure
+	%ProcedureAtts; 
+>
+<!-- ========= UML:Activity ========= -->
+<!ELEMENT UML:Activity.group (UML:ActivityGroup | UML:ActivityPartition)*>
+<!ENTITY % ActivityFeatures '%BehaviorFeatures; |
+	UML:Activity.group '>
+<!ENTITY % ActivityAtts '%BehaviorAtts;
+	isSingleCopy (true|false) #IMPLIED
+   kind %ActivityKind; #IMPLIED'>
+<!ELEMENT UML:Activity (%ActivityFeatures;)*>
+<!ATTLIST UML:Activity
+	%ActivityAtts; 
+>
+<!-- ========= UML:ActivityNode ========= -->
+<!ENTITY % ActivityNodeFeatures '%RedefinableElementFeatures;'>
+<!ENTITY % ActivityNodeAtts '%RedefinableElementAtts;
+	outgoing IDREFS #IMPLIED
+	incoming IDREFS #IMPLIED
+	partition IDREFS #IMPLIED
+	group IDREFS #IMPLIED'>
+<!ELEMENT UML:ActivityNode (%ActivityNodeFeatures;)*>
+<!ATTLIST UML:ActivityNode
+	%ActivityNodeAtts; 
+>
+<!-- ========= UML:ControlNode ========= -->
+<!ENTITY % ControlNodeFeatures '%ActivityNodeFeatures;'>
+<!ENTITY % ControlNodeAtts '%ActivityNodeAtts;'>
+<!ELEMENT UML:ControlNode (%ControlNodeFeatures;)*>
+<!ATTLIST UML:ControlNode
+	%ControlNodeAtts; 
+>
+<!-- ========= UML:InitialNode ========= -->
+<!ENTITY % InitialNodeFeatures '%ControlNodeFeatures;'>
+<!ENTITY % InitialNodeAtts '%ControlNodeAtts;'>
+<!ELEMENT UML:InitialNode (%InitialNodeFeatures;)*>
+<!ATTLIST UML:InitialNode
+	%InitialNodeAtts; 
+>
+<!-- ========= UML:FinalNode ========= -->
+<!ENTITY % FinalNodeFeatures '%ControlNodeFeatures;'>
+<!ENTITY % FinalNodeAtts '%ControlNodeAtts;'>
+<!ELEMENT UML:FinalNode (%FinalNodeFeatures;)*>
+<!ATTLIST UML:FinalNode
+	%FinalNodeAtts; 
+>
+<!-- ========= UML:ActivityFinalNode ========= -->
+<!ENTITY % ActivityFinalNodeFeatures '%FinalNodeFeatures;'>
+<!ENTITY % ActivityFinalNodeAtts '%FinalNodeAtts;'>
+<!ELEMENT UML:ActivityFinalNode (%ActivityFinalNodeFeatures;)*>
+<!ATTLIST UML:ActivityFinalNode
+	%ActivityFinalNodeAtts; 
+>
+<!-- ========= UML:FlowFinalNode ========= -->
+<!ENTITY % FlowFinalNodeFeatures '%FinalNodeFeatures;'>
+<!ENTITY % FlowFinalNodeAtts '%FinalNodeAtts;
+	mergeAt IDREF #IMPLIED'>
+<!ELEMENT UML:FlowFinalNode (%FlowFinalNodeFeatures;)*>
+<!ATTLIST UML:FlowFinalNode
+	%FlowFinalNodeAtts; 
+>
+<!-- ========= UML:ForkNode ========= -->
+<!ENTITY % ForkNodeFeatures '%ControlNodeFeatures;'>
+<!ENTITY % ForkNodeAtts '%ControlNodeAtts;'>
+<!ELEMENT UML:ForkNode (%ForkNodeFeatures;)*>
+<!ATTLIST UML:ForkNode
+	%ForkNodeAtts; 
+>
+<!-- ========= UML:JoinNode ========= -->
+<!ELEMENT UML:JoinNode.joinExpression (UML:Expression)>
+<!ENTITY % JoinNodeFeatures '%ControlNodeFeatures;'>
+<!ENTITY % JoinNodeAtts '%ControlNodeAtts;
+      joinSpec IDREF #IMPLIED'>
+<!ELEMENT UML:JoinNode (%JoinNodeFeatures;)*>
+<!ATTLIST UML:JoinNode
+	%JoinNodeAtts; 
+>
+<!-- ========= UML:JoinForkNode ========= -->
+<!ENTITY % JoinForkNodeFeatures '%JoinNodeFeatures;'>
+<!ENTITY % JoinForkNodeAtts '%JoinNodeAtts;'>
+<!ELEMENT UML:JoinForkNode (%JoinForkNodeFeatures;)*>
+<!ATTLIST UML:JoinForkNode
+	%JoinForkNodeAtts; 
+>
+<!-- ========= UML:DecisionNode ========= -->
+<!ENTITY % DecisionNodeFeatures '%ControlNodeFeatures;'>
+<!ENTITY % DecisionNodeAtts '%ControlNodeAtts;
+      decisionInput IDREF #IMPLIED'>
+<!ELEMENT UML:DecisionNode (%DecisionNodeFeatures;)*>
+<!ATTLIST UML:DecisionNode
+	%DecisionNodeAtts; 
+>
+<!-- ========= UML:MergeNode ========= -->
+<!ENTITY % MergeNodeFeatures '%ControlNodeFeatures;'>
+<!ENTITY % MergeNodeAtts '%ControlNodeAtts;'>
+<!ELEMENT UML:MergeNode (%MergeNodeFeatures;)*>
+<!ATTLIST UML:MergeNode
+	%MergeNodeAtts; 
+>
+<!-- ========= UML:DecisionMergeNode ========= -->
+<!ENTITY % DecisionMergeNodeFeatures '%DecisionNodeFeatures;'>
+<!ENTITY % DecisionMergeNodeAtts '%DecisionNodeAtts;'>
+<!ELEMENT UML:DecisionMergeNode (%DecisionMergeNodeFeatures;)*>
+<!ATTLIST UML:DecisionMergeNode
+	%DecisionMergeNodeAtts; 
+>
+<!-- ========= UML:ActivityPartition ========= -->
+<!ENTITY % ActivityPartitionFeatures '%NamedElementFeatures;'>
+<!ENTITY % ActivityPartitionAtts '%NamedElementAtts;
+      nodeContents IDREFS #IMPLIED
+      edgeContents IDREFS #IMPLIED
+      represents IDREF #IMPLIED
+      isDimension (true|false) #IMPLIED
+      isExternal (true|false) #IMPLIED'>
+<!ELEMENT UML:ActivityPartition (%ActivityPartitionFeatures;)*>
+<!ATTLIST UML:ActivityPartition
+	%ActivityPartitionAtts; 
+>
+<!-- ========= UML:ActivityEdge ========= -->
+<!ELEMENT UML:ActivityEdge.guard (UML:ValueSpecification? | UML:Expression?)>
+<!ELEMENT UML:ActivityEdge.weight (UML:ValueSpecification?)>
+<!ENTITY % ActivityEdgeFeatures '%RedefinableElementFeatures; |
+	UML:ActivityEdge.guard |
+	UML:ActivityEdge.weight '>
+<!ENTITY % ActivityEdgeAtts '%RedefinableElementAtts;
+	source IDREF #IMPLIED
+	target IDREF #IMPLIED
+	partition IDREFS #IMPLIED
+	region IDREF #IMPLIED'>
+<!ELEMENT UML:ActivityEdge (%ActivityEdgeFeatures;)*>
+<!ATTLIST UML:ActivityEdge
+	%ActivityEdgeAtts; 
+>
+<!-- ========= UML:ControlFlow ========= -->
+<!ENTITY % ControlFlowFeatures '%ActivityEdgeFeatures; '>
+<!ENTITY % ControlFlowAtts '%ActivityEdgeAtts;'>
+<!ELEMENT UML:ControlFlow (%ControlFlowFeatures;)*>
+<!ATTLIST UML:ControlFlow
+	%ControlFlowAtts; 
+>
+<!-- ========= UML:ObjectFlow ========= -->
+<!ENTITY % ObjectFlowFeatures '%ActivityEdgeFeatures; '>
+<!ENTITY % ObjectFlowAtts '%ActivityEdgeAtts;
+	isMultiCast ( true | false ) #IMPLIED
+   selection IDREF #IMPLIED
+   transformation IDREF #IMPLIED
+   effect %ObjectFlowEffectKind; #IMPLIED
+   isMultiReceive (true|false) #IMPLIED'>
+<!ELEMENT UML:ObjectFlow (%ObjectFlowFeatures;)*>
+<!ATTLIST UML:ObjectFlow
+	%ObjectFlowAtts; 
+>
+<!-- ========= UML:MultiFlow ========= -->
+<!ENTITY % MultiFlowFeatures '%ObjectFlowFeatures; '>
+<!ENTITY % MultiFlowAtts '%ObjectFlowAtts;'>
+<!ELEMENT UML:MultiFlow (%MultiFlowFeatures;)*>
+<!ATTLIST UML:MultiFlow
+	%MultiFlowAtts; 
+>
+<!-- ========= UML:InvocationNode ========= -->
+<!ELEMENT UML:InvocationNode.localPrecondition (UML:Constraint*)>
+<!ELEMENT UML:InvocationNode.localPostCondition (UML:Constraint*)>
+<!ELEMENT UML:InvocationNode.multiplicity (UML:Multiplicity?)>
+<!ENTITY % InvocationNodeFeatures '%ActivityNodeFeatures; |
+   UML:InvocationNode.localPrecondition |
+   UML:InvocationNode.localPostCondition |
+   UML:InvocationNode.multiplicity'>
+<!ENTITY % InvocationNodeAtts '%ActivityNodeAtts;
+		isSynchronous (true|false) #IMPLIED
+      isMultipleInvocation (true|false) #IMPLIED
+      activity IDREF #IMPLIED'>
+<!ELEMENT UML:InvocationNode (%InvocationNodeFeatures;)*>
+<!ATTLIST UML:InvocationNode
+	%InvocationNodeAtts; 
+>
+<!-- ========= UML:Classifier ========= -->
+<!ELEMENT UML:Classifier.feature (UML:Feature | UML:StructuralFeature | UML:Attribute | UML:BehavioralFeature | UML:Operation | UML:Reception)*>
+<!ELEMENT UML:Classifier.collaboration (UML:CollaborationOccurrence)*>
+<!ELEMENT UML:Classifier.representation (UML:CollaborationOccurrence)>
+<!ELEMENT UML:Classifier.generalization (UML:Generalization)*>
+<!ELEMENT UML:Classifier.ownedBehavior (UML:Behavior)*>
+<!ELEMENT UML:Classifier.classifierBehavior (UML:Behavior)*>
+<!ELEMENT UML:Classifier.increment (UML:Increment)*>
+<!ENTITY % ClassifierFeatures '%NamespaceFeatures; |
+   UML:Classifier.feature |
+   UML:Classifier.collaboration |
+   UML:Classifier.representation |
+   UML:Classifier.generalization |
+   UML:Classifier.ownedBehavior |
+   UML:Classifier.classifierBehavior |
+   UML:Classifier.increment '>
+<!ENTITY % ClassifierAtts '%NamespaceAtts;
+	associationEnd IDREFS #IMPLIED
+	package IDREF #IMPLIED
+	isFinal ( true | false ) #IMPLIED
+	isAbstract ( true | false ) #IMPLIED
+	isLeaf ( true | false ) #IMPLIED
+	isTransient ( true | false ) #IMPLIED
+	redefinedElement IDREFS #IMPLIED
+	definition IDREF #IMPLIED
+	specialization IDREFS #IMPLIED
+   templateParameter IDREFS #IMPLIED'>
+<!ELEMENT UML:Classifier (%ClassifierFeatures;)*>
+<!ATTLIST UML:Classifier
+	%ClassifierAtts; 
+>
+<!-- ========= UML:BehavioredClassifier ========= -->
+<!ENTITY % BehavioredClassifierFeatures '%ClassifierFeatures;'>
+<!ENTITY % BehavioredClassifierAtts '%ClassifierAtts;'>
+<!ELEMENT UML:BehavioredClassifier (%BehavioredClassifierFeatures;)*>
+<!ATTLIST UML:BehavioredClassifier
+	%BehavioredClassifierAtts; 
+>
+<!-- ========= UML:StructuredClassifier ========= -->
+<!ENTITY % StructuredClassifierFeatures '%ClassifierFeatures;'>
+<!ENTITY % StructuredClassifierAtts '%ClassifierAtts;
+      role IDREFS #IMPLIED'>
+<!ELEMENT UML:StructuredClassifier (%StructuredClassifierFeatures;)*>
+<!ATTLIST UML:StructuredClassifier
+	%StructuredClassifierAtts; 
+>
+<!-- ========= UML:Network ========= -->
+<!ENTITY % NetworkFeatures '%StructuredClassifierFeatures;'>
+<!ENTITY % NetworkAtts '%StructuredClassifierAtts;'>
+<!ELEMENT UML:Network (%NetworkFeatures;)*>
+<!ATTLIST UML:Network
+	%NetworkAtts; 
+>
+<!-- ========= UML:BehaviorInvocation ========= -->
+<!ENTITY % BehaviorInvocationFeatures '%ElementFeatures; '>
+<!ENTITY % BehaviorInvocationAtts '%ElementAtts;
+   behavior IDREF #IMPLIED
+   result IDREFS #IMPLIED
+   argument IDREFS #IMPLIED'>
+<!ELEMENT UML:BehaviorInvocation (%BehaviorInvocationFeatures;)*>
+<!ATTLIST UML:BehaviorInvocation
+	%BehaviorInvocationAtts; 
+>
+<!-- ========= UML:Pin ========= -->
+<!ENTITY % PinFeatures '%TypedElementFeatures;'>
+<!ENTITY % PinAtts '%TypedElementAtts;'>
+<!ELEMENT UML:Pin (%PinFeatures;)*>
+<!ATTLIST UML:Pin
+	%PinAtts; 
+>
+<!-- ========= UML:OutputPin ========= -->
+<!ENTITY % OutputPinFeatures '%PinFeatures;'>
+<!ENTITY % OutputPinAtts '%PinAtts;'>
+<!ELEMENT UML:OutputPin (%OutputPinFeatures;)*>
+<!ATTLIST UML:OutputPin
+	%OutputPinAtts; 
+>
+<!-- ========= UML:InputPin ========= -->
+<!ENTITY % InputPinFeatures '%PinFeatures;'>
+<!ENTITY % InputPinAtts '%PinAtts;'>
+<!ELEMENT UML:InputPin (%InputPinFeatures;)*>
+<!ATTLIST UML:InputPin
+	%InputPinAtts; 
+>
+<!-- ========= UML:Class ========= -->
+<!ELEMENT UML:Class.ownedPort (UML:Port)*>
+<!ELEMENT UML:Class.ownedReception (UML:Reception)*>
+<!ENTITY % ClassFeatures '%ClassifierFeatures; |
+	UML:Class.ownedPort |
+	UML:Class.ownedReception '>
+<!ENTITY % ClassAtts '%ClassifierAtts;
+   isActive (true|false) #IMPLIED
+   isStruct (true|false) #IMPLIED
+   isUnion (true|false) #IMPLIED'>
+<!ELEMENT UML:Class (%ClassFeatures;)*>
+<!ATTLIST UML:Class
+	%ClassAtts; 
+>
+<!-- ========= UML:DataType ========= -->
+<!ENTITY % DataTypeFeatures '%ClassifierFeatures;'>
+<!ENTITY % DataTypeAtts '%ClassifierAtts;'>
+<!ELEMENT UML:DataType (%DataTypeFeatures;)*>
+<!ATTLIST UML:DataType
+	%DataTypeAtts; 
+>
+<!-- ========= UML:AliasedType ========= -->
+<!ENTITY % AliasedTypeFeatures '%DataTypeFeatures;'>
+<!ENTITY % AliasedTypeAtts '%DataTypeAtts;
+      aliasedName CDATA #IMPLIED
+      typeDecoration CDATA #IMPLIED
+      actualType IDREF #IMPLIED'>
+<!ELEMENT UML:AliasedType (%AliasedTypeFeatures;)*>
+<!ATTLIST UML:AliasedType
+	%AliasedTypeAtts; 
+>
+<!-- ========= UML:Feature ========= -->
+<!ENTITY % FeatureFeatures '%RedefinableElementFeatures;'>
+<!ENTITY % FeatureAtts '%RedefinableElementAtts;
+   featuringClassifier IDREFS #IMPLIED
+	isNative ( true | false ) #IMPLIED
+   isStatic ( true | false ) #IMPLIED'>
+<!ELEMENT UML:Feature (%FeatureFeatures;)*>
+<!ATTLIST UML:Feature
+	%FeatureAtts; 
+>
+<!-- ========= UML:StructuralFeature ========= -->
+<!ENTITY % StructuralFeatureFeatures '%FeatureFeatures; |
+		UML:TypedElement.multiplicity'>
+<!ENTITY % StructuralFeatureAtts '%FeatureAtts;
+   clientChangeability %ChangeableKind; #IMPLIED
+	isTransient ( true | false ) #IMPLIED
+	isVolatile ( true | false ) #IMPLIED
+   type IDREF #IMPLIED'>
+<!ELEMENT UML:StructuralFeature (%StructuralFeatureFeatures;)*>
+<!ATTLIST UML:StructuralFeature
+	%StructuralFeatureAtts; 
+>
+<!-- ========= UML:Part ========= -->
+<!ENTITY % PartFeatures '%StructuralFeatureFeatures;'>
+<!ENTITY % PartAtts '%StructuralFeatureAtts;
+	isWhole ( true | false ) #IMPLIED
+	initialCardinality CDATA #IMPLIED
+	end IDREFS #IMPLIED
+   partKind %PartKind; #IMPLIED
+   definingFeature IDREF #IMPLIED'>
+<!ELEMENT UML:Part (%PartFeatures;)*>
+<!ATTLIST UML:Part
+	%PartAtts; 
+>
+<!-- ========= UML:PartFacade ========= -->
+<!ENTITY % PartFacadeFeatures '%ClassifierFeatures; | %PartFeatures;'>
+<!ENTITY % PartFacadeAtts '%ClassifierAtts;
+	isWhole ( true | false ) #IMPLIED
+	initialCardinality CDATA #IMPLIED
+	end IDREFS #IMPLIED
+   partKind %PartKind; #IMPLIED'>
+<!ELEMENT UML:PartFacade (%PartFacadeFeatures;)*>
+<!ATTLIST UML:PartFacade
+	%PartFacadeAtts; 
+>
+<!-- ========= UML:Port ========= -->
+<!ENTITY % PortFeatures '%PartFeatures;'>
+<!ENTITY % PortAtts '%PartAtts; 
+   isRequired ( true | false ) #IMPLIED
+   portEnd IDREFS #IMPLIED
+   type IDREF #IMPLIED
+	protocol IDREF #IMPLIED
+   isService (true|false) #IMPLIED
+   isSignal (true|false) #IMPLIED
+   required IDREFS #IMPLIED
+   provided IDREFS #IMPLIED'>
+<!ELEMENT UML:Port (%PortFeatures;)*>
+<!ATTLIST UML:Port
+	%PortAtts; 
+>
+<!-- ========= UML:Connector ========= -->
+<!ENTITY % ConnectorFeatures '%StructuralFeatureFeatures;'>
+<!ENTITY % ConnectorAtts '%StructuralFeatureAtts;
+   type IDREFS #IMPLIED
+   ownedEnd IDREFS #IMPLIED
+   contract IDREFS #IMPLIED'>
+<!ELEMENT UML:Connector (%ConnectorFeatures;)*>
+<!ATTLIST UML:Connector
+	%ConnectorAtts; 
+>
+<!-- ========= UML:ConnectorEnd ========= -->
+<!ELEMENT UML:ConnectorEnd.multiplicity (UML:Multiplicity)?>
+<!ENTITY % ConnectorEndFeatures '%ElementFeatures; |
+	UML:ConnectorEnd.multiplicity'>
+<!ENTITY % ConnectorEndAtts '%ElementAtts;
+   initialCardinality CDATA #IMPLIED
+   part IDREF #IMPLIED
+   port IDREF #IMPLIED'>
+<!ELEMENT UML:ConnectorEnd (%ConnectorEndFeatures;)*>
+<!ATTLIST UML:ConnectorEnd
+	%ConnectorEndAtts; 
+>
+<!-- ========= UML:DelegationConnector ========= -->
+<!ENTITY % DelegationConnectorFeatures '%ConnectorFeatures;'>
+<!ENTITY % DelegationConnectorAtts '%ConnectorAtts;'>
+<!ELEMENT UML:DelegationConnector (%DelegationConnectorFeatures;)*>
+<!ATTLIST UML:DelegationConnector
+	%DelegationConnectorAtts; 
+>
+<!-- ========= UML:AssemblyConnector ========= -->
+<!ENTITY % AssemblyConnectorFeatures '%ConnectorFeatures;'>
+<!ENTITY % AssemblyConnectorAtts '%ConnectorAtts;'>
+<!ELEMENT UML:AssemblyConnector (%AssemblyConnectorFeatures;)*>
+<!ATTLIST UML:AssemblyConnector
+	%AssemblyConnectorAtts; 
+>
+<!-- ========= UML:AssociationEnd ========= -->
+<!ELEMENT UML:AssociationEnd.multiplicity (UML:Multiplicity)*>
+<!ELEMENT UML:AssociationEnd.qualifier (UML:Attribute)*>
+<!ENTITY % AssociationEndFeatures '%StructuralFeatureFeatures; |
+   UML:AssociationEnd.multiplicity |
+   UML:AssociationEnd.qualifier'>
+<!ENTITY % AssociationEndAtts '%StructuralFeatureAtts;
+   changeability %ChangeableKind; #IMPLIED
+   association IDREF #IMPLIED'>
+<!ELEMENT UML:AssociationEnd (%AssociationEndFeatures;)*>
+<!ATTLIST UML:AssociationEnd
+	%AssociationEndAtts; 
+>
+<!-- ========= UML:ExtensionEnd ========= -->
+<!ENTITY % ExtensionEndFeatures '%AssociationEndFeatures;'>
+<!ENTITY % ExtensionEndAtts '%AssociationEndAtts;'>
+<!ELEMENT UML:ExtensionEnd (%ExtensionEndFeatures;)*>
+<!ATTLIST UML:ExtensionEnd
+	%ExtensionEndAtts; 
+>
+<!-- ========= UML:NavigableEnd ========= -->
+<!ENTITY % NavigableEndFeatures '%AssociationEndFeatures;'>
+<!ENTITY % NavigableEndAtts '%AssociationEndAtts;
+   referencingClassifier IDREF #IMPLIED'>
+<!ELEMENT UML:NavigableEnd (%NavigableEndFeatures;)*>
+<!ATTLIST UML:NavigableEnd
+	%NavigableEndAtts; 
+>
+<!-- ========= UML:Constraint ========= -->
+<!ELEMENT UML:Constraint.specification (UML:ValueSpecification | UML:Expression | UML:LiteralSpecification | UML:LiteralInteger | UML:LiteralString | UML:LiteralBoolean | UML:LiteralNull)>
+<!ENTITY % ConstraintFeatures '%AutonomousElementFeatures; |
+   UML:Constraint.specification'>
+<!ENTITY % ConstraintAtts '%AutonomousElementAtts;
+   constrainedElement IDREFS #IMPLIED'>
+<!ELEMENT UML:Constraint (%ConstraintFeatures;)*>
+<!ATTLIST UML:Constraint
+	%ConstraintAtts; 
+>
+<!-- ========= UML:Relationship ========= -->
+<!ENTITY % RelationshipFeatures '%ElementFeatures;'>
+<!ENTITY % RelationshipAtts '%ElementAtts;'>
+<!ELEMENT UML:Relationship (%RelationshipFeatures;)*>
+<!ATTLIST UML:Relationship
+	%RelationshipAtts; 
+>
+<!-- ========= UML:DirectedRelationship ========= -->
+<!ENTITY % DirectedRelationshipFeatures '%RelationshipFeatures;'>
+<!ENTITY % DirectedRelationshipAtts '%RelationshipAtts; 
+	source IDREFS #IMPLIED 
+	target IDREFS #IMPLIED'>
+<!ELEMENT UML:DirectedRelationship (%DirectedRelationshipFeatures;)*>
+<!ATTLIST UML:DirectedRelationship
+	%DirectedRelationshipAtts; 
+>
+<!-- ========= UML:Reference ========= -->
+<!ENTITY % ReferenceFeatures '%RelationshipFeatures;'>
+<!ENTITY % ReferenceAtts '%RelationshipAtts;'>
+<!ELEMENT UML:Reference (%ReferenceFeatures;)*>
+<!ATTLIST UML:Reference
+	%ReferenceAtts; 
+>
+<!-- ========= UML:PresentationReference ========= -->
+<!ENTITY % PresentationReferenceFeatures '%ReferenceFeatures;'>
+<!ENTITY % PresentationReferenceAtts '%ReferenceAtts;'>
+<!ELEMENT UML:PresentationReference (%PresentationReferenceFeatures;)*>
+<!ATTLIST UML:PresentationReference
+	%PresentationReferenceAtts; 
+>
+<!-- ========= UML:PackageImport========= -->
+<!ELEMENT UML:PackageImport.importedPackage (UML:Package | UML:Profile)?>
+<!ENTITY % PackageImportFeatures '%RelationshipFeatures; |
+	UML:PackageImport.importedPackage '>
+<!ENTITY % PackageImportAtts '%RelationshipAtts;
+	importingPackage IDREF #IMPLIED
+	visibility %VisibilityKind; #IMPLIED'>
+<!ELEMENT UML:PackageImport (%PackageImportFeatures;)*>
+<!ATTLIST UML:PackageImport
+	%PackageImportAtts; 
+>
+<!-- ========= UML:PackageExtension ========= -->
+<!ENTITY % PackageExtensionFeatures '%RelationshipFeatures;'>
+<!ENTITY % PackageExtensionAtts '%RelationshipAtts;
+	extendingPackage IDREF #IMPLIED
+	extendedPackage IDREF #IMPLIED'>
+<!ELEMENT UML:PackageExtension (%PackageExtensionFeatures;)*>
+<!ATTLIST UML:PackageExtension
+	%PackageExtensionAtts; 
+>
+<!-- ========= UML:ElementImport ========= -->
+<!ELEMENT UML:ElementImport.importedElement (UML:PackageableElement)?>
+<!ENTITY % ElementImportFeatures '%RelationshipFeatures; |
+   UML:ElementImport.importedElement '>
+<!ENTITY % ElementImportAtts '%RelationshipAtts;
+   visibility %VisibilityKind; #IMPLIED
+   alias CDATA #IMPLIED
+   importingPackage IDREF #IMPLIED'>
+<!ELEMENT UML:ElementImport (%ElementImportFeatures;)*>
+<!ATTLIST UML:ElementImport
+	%ElementImportAtts; 
+>
+<!-- ========= UML:MemberImport ========= -->
+<!ENTITY % MemberImportFeatures '%DirectedRelationshipFeatures;'>
+<!ENTITY % MemberImportAtts '%DirectedRelationshipAtts;'>
+<!ELEMENT UML:MemberImport (%MemberImportFeatures;)*>
+<!ATTLIST UML:MemberImport
+	%MemberImportAtts; 
+>
+<!-- ========= UML:Association ========= -->
+<!ELEMENT UML:Association.end (UML:AssociationEnd | UML:NavigableEnd)*>
+<!ENTITY % AssociationFeatures '%ClassifierFeatures; |
+   UML:Association.end'>
+<!ENTITY % AssociationAtts '%ClassifierAtts;
+		isDerived ( true | false ) #IMPLIED'>
+<!ELEMENT UML:Association (%AssociationFeatures;)*>
+<!ATTLIST UML:Association
+	%AssociationAtts; 
+>
+<!-- ========= UML:CommunicationPath ========= -->
+<!ENTITY % CommunicationPathFeatures '%AssociationFeatures;'>
+<!ENTITY % CommunicationPathAtts '%AssociationAtts;'>
+<!ELEMENT UML:CommunicationPath (%CommunicationPathFeatures;)*>
+<!ATTLIST UML:CommunicationPath
+	%CommunicationPathAtts; 
+>
+<!-- ========= UML:Aggregation ========= -->
+<!ELEMENT UML:Aggregation.partEnd (UML:AssociationEnd)*>
+<!ELEMENT UML:Aggregation.aggregateEnd (UML:AssociationEnd)*>
+<!ENTITY % AggregationAtts '%AssociationAtts;
+	isComposite (true | false ) #IMPLIED'>
+<!ENTITY % AggregationFeatures '%AssociationFeatures; |
+	UML:Aggregation.partEnd |
+	UML:Aggregation.aggregateEnd  '>
+<!ELEMENT UML:Aggregation (%AggregationFeatures;)*>
+<!ATTLIST UML:Aggregation
+	%AssociationAtts; 
+>
+<!-- ========= UML:Extension ========= -->
+<!ENTITY % ExtensionAtts '%AggregationAtts;
+	isRequired (true | false ) #IMPLIED'>
+<!ENTITY % ExtensionFeatures '%AggregationFeatures;'>
+<!ELEMENT UML:Extension (%ExtensionFeatures;)*>
+<!ATTLIST UML:Extension
+	%ExtensionAtts; 
+>
+<!-- ========= UML:Delegation ========= -->
+<!ENTITY % DelegationFeatures '%AssociationFeatures; '>
+<!ENTITY % DelegationAtts '%AssociationAtts;
+	stereoType IDREF #IMPLIED
+	extendedClass IDREF #IMPLIED'>
+<!ELEMENT UML:Delegation (%DelegationFeatures;)*>
+<!ATTLIST UML:Delegation
+	%DelegationAtts; 
+>
+<!-- ========= UML:Attribute ========= -->
+<!ELEMENT UML:Attribute.default (UML:Expression)?>
+<!ELEMENT UML:Attribute.derivationRule (UML:Expression)?>
+<!ENTITY % AttributeFeatures '%StructuralFeatureFeatures; |
+   UML:Attribute.default |
+   UML:Attribute.derivationRule'>
+<!ENTITY % AttributeAtts '%StructuralFeatureAtts;
+   associationEnd IDREFS #IMPLIED
+   isDerived ( true | false ) #IMPLIED
+   isWithEvents ( true | false ) #IMPLIED
+   heapBased ( true | false ) #IMPLIED
+   isPrimaryKey ( true | false ) #IMPLIED'>
+<!ELEMENT UML:Attribute (%AttributeFeatures;)*>
+<!ATTLIST UML:Attribute
+	%AttributeAtts; 
+>
+<!-- ========= UML:BehavioralFeature ========= -->
+<!ELEMENT UML:BehavioralFeature.parameter (UML:Parameter)*>
+<!ENTITY % BehavioralFeatureFeatures '%NamespaceFeatures; |
+	UML:BehavioralFeature.parameter '>
+<!ENTITY % BehavioralFeatureAtts '%NamespaceAtts;
+	method IDREFS #IMPLIED
+	representation IDREF #IMPLIED
+	concurrency %CallConcurrencyKind; #IMPLIED
+	isAbstract ( true | false ) #IMPLIED
+	raisedSignal IDREFS #IMPLIED
+	handledSignal IDREFS #IMPLIED
+	isStrictFP ( true | false ) #IMPLIED'>
+<!ELEMENT UML:BehavioralFeature (%BehavioralFeatureFeatures;)*>
+<!ATTLIST UML:BehavioralFeature
+	%BehavioralFeatureAtts; 
+>
+<!-- ========= UML:Operation ========= -->
+<!ELEMENT UML:Operation.postcondition (UML:Constraint)*>
+<!ELEMENT UML:Operation.precondition (UML:Constraint)*>
+<!ENTITY % OperationFeatures '%BehavioralFeatureFeatures; |
+   UML:Operation.postcondition |
+   UML:Operation.precondition'>
+<!ENTITY % OperationAtts '%BehavioralFeatureAtts;
+   isQuery ( true | false ) #IMPLIED
+   raisedException IDREFS #IMPLIED
+	isConstructor ( true | false ) #IMPLIED
+	isDestructor ( true | false ) #IMPLIED
+   isProperty ( true | false ) #IMPLIED
+   isFriend ( true | false ) #IMPLIED
+   isSub ( true | false ) #IMPLIED
+   isVirtual ( true | false ) #IMPLIED
+   isOverride ( true | false ) #IMPLIED
+   isDelegate ( true | false ) #IMPLIED
+   isIndexer ( true | false ) #IMPLIED'>
+<!ELEMENT UML:Operation (%OperationFeatures;)*>
+<!ATTLIST UML:Operation
+	%OperationAtts; 
+>
+<!-- ========= UML:Parameter ========= -->
+<!ELEMENT UML:Parameter.default (UML:Expression)>
+<!ENTITY % ParameterFeatures '%NamedElementFeatures; | %TypedElementFeatures; |
+   UML:Parameter.default'>
+<!ENTITY % ParameterAtts '%NamedElementAtts;
+   direction %ParameterDirectionKind; #IMPLIED
+   type IDREF #IMPLIED
+   kind %ParameterSemanticsKind; #IMPLIED'>
+<!ELEMENT UML:Parameter (%ParameterFeatures;)*>
+<!ATTLIST UML:Parameter
+	%ParameterAtts; 
+>
+<!-- ========= UML:ObjectNode ========= -->
+<!ELEMENT UML:ObjectNode.upperBound (UML:ValueSpecification?)>
+<!ENTITY % ObjectNodeFeatures '%TypedElementFeatures; |
+   UML:ObjectNode.upperBound'>
+<!ENTITY % ObjectNodeAtts '%TypedElementAtts;
+	ordering %ObjectNodeOrderingKind; #IMPLIED
+	inState IDREFS #IMPLIED
+   selection IDREFS #IMPLIED
+   outgoing IDREFS #IMPLIED
+	incoming IDREFS #IMPLIED
+	partition IDREFS #IMPLIED
+	group IDREFS #IMPLIED'>
+<!ELEMENT UML:ObjectNode (%ObjectNodeFeatures;)*>
+<!ATTLIST UML:ObjectNode
+	%ObjectNodeAtts; 
+>
+<!-- ========= UML:ActivityGroup ========= -->
+<!ENTITY % ActivityGroupFeatures '%NamedElementFeatures;'>
+<!ENTITY % ActivityGroupAtts '%NamedElementAtts;
+      nodeContents IDREFS #IMPLIED
+      edgeContents IDREFS #IMPLIED'>
+<!ELEMENT UML:ActivityGroup (%ActivityGroupFeatures;)*>
+<!ATTLIST UML:ActivityGroup
+	%ActivityGroupAtts; 
+>
+<!-- ========= UML:InterruptibleActivityRegion ========= -->
+<!ENTITY % InterruptibleActivityRegionFeatures '%ActivityGroupFeatures;'>
+<!ENTITY % InterruptibleActivityRegionAtts '%ActivityGroupAtts;
+	interruptingEdge IDREFS #IMPLIED'>
+<!ELEMENT UML:InterruptibleActivityRegion (%InterruptibleActivityRegionFeatures;)*>
+<!ATTLIST UML:InterruptibleActivityRegion
+	%InterruptibleActivityRegionAtts; 
+>
+<!-- ========= UML:StructuredActivityGroup ========= -->
+<!ENTITY % StructuredActivityGroupFeatures '%ActivityGroupFeatures;'>
+<!ENTITY % StructuredActivityGroupAtts '%ActivityGroupAtts;'>
+<!ELEMENT UML:StructuredActivityGroup (%StructuredActivityGroupFeatures;)*>
+<!ATTLIST UML:StructuredActivityGroup
+	%StructuredActivityGroupAtts; 
+>
+<!-- ========= UML:IterationActivityGroup ========= -->
+<!ELEMENT UML:IterationActivityGroup.test (UML:ValueSpecification | UML:Expression)*>
+<!ENTITY % IterationActivityGroupFeatures '%StructuredActivityGroupFeatures; |
+          UML:IterationActivityGroup.test'>
+<!ENTITY % IterationActivityGroupAtts '%StructuredActivityGroupAtts;
+      kind %IterationActivityGroupKind; #IMPLIED'>
+<!ELEMENT UML:IterationActivityGroup (%IterationActivityGroupFeatures;)*>
+<!ATTLIST UML:IterationActivityGroup
+	%IterationActivityGroupAtts; 
+>
+<!-- ========= UML:ComplexActivityGroup ========= -->
+<!ENTITY % ComplexActivityGroupFeatures '%IterationActivityGroupFeatures;'>
+<!ENTITY % ComplexActivityGroupAtts '%IterationActivityGroupAtts;
+      groupKind %ActivityGroupKind; #IMPLIED
+      interruptingEdge IDREFS #IMPLIED'>
+<!ELEMENT UML:ComplexActivityGroup (%ComplexActivityGroupFeatures;)*>
+<!ATTLIST UML:ComplexActivityGroup
+	%ComplexActivityGroupAtts; 
+>
+<!-- ========= UML:ParameterUsageNode ========= -->
+<!ENTITY % ParameterUsageNodeFeatures '%ObjectNodeFeatures;'>
+<!ENTITY % ParameterUsageNodeAtts '%ObjectNodeAtts;'>
+<!ELEMENT UML:ParameterUsageNode (%ParameterUsageNodeFeatures;)*>
+<!ATTLIST UML:ParameterUsageNode
+	%ParameterUsageNodeAtts; 
+>
+<!-- ========= UML:CentralBufferNode ========= -->
+<!ENTITY % CentralBufferNodeFeatures '%ObjectNodeFeatures;'>
+<!ENTITY % CentralBufferNodeAtts '%ObjectNodeAtts;'>
+<!ELEMENT UML:CentralBufferNode (%CentralBufferNodeFeatures;)*>
+<!ATTLIST UML:CentralBufferNode
+	%CentralBufferNodeAtts; 
+>
+<!-- ========= UML:DataStoreNode ========= -->
+<!ENTITY % DataStoreNodeFeatures '%CentralBufferNodeFeatures;'>
+<!ENTITY % DataStoreNodeAtts '%CentralBufferNodeAtts;'>
+<!ELEMENT UML:DataStoreNode (%DataStoreNodeFeatures;)*>
+<!ATTLIST UML:DataStoreNode
+	%DataStoreNodeAtts; 
+>
+<!-- ========= UML:SignalNode ========= -->
+<!ENTITY % SignalNodeFeatures '%ObjectNodeFeatures;'>
+<!ENTITY % SignalNodeAtts '%ObjectNodeAtts;'>
+<!ELEMENT UML:SignalNode (%SignalNodeFeatures;)*>
+<!ATTLIST UML:SignalNode
+	%SignalNodeAtts; 
+>
+<!-- ========= UML:ActivityParameter ========= -->
+<!ENTITY % ActivityParameterFeatures '%ObjectNodeFeatures;'>
+<!ENTITY % ActivityParameterAtts '%ObjectNodeAtts;'>
+<!ELEMENT UML:ActivityParameter (%ActivityParameterFeatures;)*>
+<!ATTLIST UML:ActivityParameter
+	%ActivityParameterAtts; 
+>
+<!-- ========= UML:Generalization ========= -->
+<!ENTITY % GeneralizationFeatures '%RelationshipFeatures;'>
+<!ENTITY % GeneralizationAtts '%RelationshipAtts;
+	specific IDREF #IMPLIED
+	general IDREF #IMPLIED'>
+<!ELEMENT UML:Generalization (%GeneralizationFeatures;)*>
+<!ATTLIST UML:Generalization
+	%GeneralizationAtts; 
+>
+<!-- ========= UML:AssociationClass ========= -->
+<!ENTITY % AssociationClassFeatures '%AssociationFeatures; |
+   UML:Classifier.feature'>
+<!ENTITY % AssociationClassAtts '%AssociationAtts;
+   associationEnd IDREFS #IMPLIED
+   package IDREF #IMPLIED
+   isFinal ( true | false ) #IMPLIED
+   isAbstract ( true | false ) #IMPLIED
+   isLeaf ( true | false ) #IMPLIED
+   redefinedElement IDREFS #IMPLIED'>
+<!ELEMENT UML:AssociationClass (%AssociationClassFeatures;)*>
+<!ATTLIST UML:AssociationClass
+	%AssociationClassAtts; 
+>
+<!-- ========= UML:Dependency ========= -->
+<!ENTITY % DependencyFeatures '%RelationshipFeatures;'>
+<!ENTITY % DependencyAtts '%RelationshipAtts;
+   client IDREFS #IMPLIED
+   supplier IDREFS #IMPLIED'>
+<!ELEMENT UML:Dependency (%DependencyFeatures;)*>
+<!ATTLIST UML:Dependency
+	%DependencyAtts; 
+>
+<!-- ========= UML:Delegate ========= -->
+<!ENTITY % DelegateFeatures '%DependencyFeatures;'>
+<!ENTITY % DelegateAtts '%DependencyAtts;'>
+<!ELEMENT UML:Delegate (%DelegateFeatures;)*>
+<!ATTLIST UML:Delegate
+	%DelegateAtts; 
+>
+<!-- ========= UML:Abstraction ========= -->
+<!ELEMENT UML:Abstraction.mapping (UML:Expression)*>
+<!ENTITY % AbstractionFeatures '%DependencyFeatures; |
+   UML:Abstraction.mapping'>
+<!ENTITY % AbstractionAtts '%DependencyAtts;'>
+<!ELEMENT UML:Abstraction (%AbstractionFeatures;)*>
+<!ATTLIST UML:Abstraction
+	%AbstractionAtts; 
+>
+<!-- ========= UML:Realization ========= -->
+<!ENTITY % RealizationFeatures '%AbstractionFeatures;'>
+<!ENTITY % RealizationAtts '%AbstractionAtts;'>
+<!ELEMENT UML:Realization (%RealizationFeatures;)*>
+<!ATTLIST UML:Realization
+	%RealizationAtts; 
+>
+<!-- ========= UML:RoleBinding ========= -->
+<!ENTITY % RoleBindingFeatures '%DependencyFeatures;'>
+<!ENTITY % RoleBindingAtts '%DependencyAtts;
+   collaboration IDREF #IMPLIED
+   role IDREF #IMPLIED
+   feature IDREF #IMPLIED'>
+<!ELEMENT UML:RoleBinding (%RoleBindingFeatures;)*>
+<!ATTLIST UML:RoleBinding
+	%RoleBindingAtts; 
+>
+<!-- ========= UML:PresentationElement ========= -->
+<!ENTITY % PresentationElementFeatures '%ElementFeatures;'>
+<!ENTITY % PresentationElementAtts '%ElementAtts;
+   subject IDREFS #IMPLIED
+   displayID CDATA #IMPLIED'>
+<!ELEMENT UML:PresentationElement (%PresentationElementFeatures;)*>
+<!ATTLIST UML:PresentationElement
+	%PresentationElementAtts; 
+>
+<!-- ========= UML:NodePresentation ========= -->
+<!ENTITY % NodePresentationFeatures '%PresentationElementFeatures;'>
+<!ENTITY % NodePresentationAtts '%PresentationElementAtts;'>
+<!ELEMENT UML:NodePresentation (%NodePresentationFeatures;)*>
+<!ATTLIST UML:NodePresentation
+	%NodePresentationAtts; 
+>
+<!-- ========= UML:EdgePresentation ========= -->
+<!ENTITY % EdgePresentationFeatures '%PresentationElementFeatures;'>
+<!ENTITY % EdgePresentationAtts '%PresentationElementAtts;'>
+<!ELEMENT UML:EdgePresentation (%EdgePresentationFeatures;)*>
+<!ATTLIST UML:EdgePresentation
+	%EdgePresentationAtts; 
+>
+<!-- ========= UML:LabelPresentation ========= -->
+<!ENTITY % LabelPresentationFeatures '%PresentationElementFeatures;'>
+<!ENTITY % LabelPresentationAtts '%PresentationElementAtts;'>
+<!ELEMENT UML:LabelPresentation (%LabelPresentationFeatures;)*>
+<!ATTLIST UML:LabelPresentation
+	%LabelPresentationAtts; 
+>
+<!-- ========= UML:Usage ========= -->
+<!ENTITY % UsageFeatures '%DependencyFeatures;'>
+<!ENTITY % UsageAtts '%DependencyAtts;'>
+<!ELEMENT UML:Usage (%UsageFeatures;)*>
+<!ATTLIST UML:Usage
+	%UsageAtts; 
+>
+<!-- ========= UML:Binding ========= -->
+<!ENTITY % BindingFeatures '%DirectedRelationshipFeatures;'>
+<!ENTITY % BindingAtts '%DirectedRelationshipAtts;'>
+<!ELEMENT UML:Binding (%BindingFeatures;)*>
+<!ATTLIST UML:Binding
+	%BindingAtts; 
+>
+<!-- ========= UML:Derivation ========= -->
+<!ENTITY % DerivationFeatures '%DependencyFeatures;'>
+<!ENTITY % DerivationAtts '%DependencyAtts;'>
+<!ELEMENT UML:Derivation (%DerivationFeatures;)*>
+<!ATTLIST UML:Derivation
+	%DerivationAtts; 
+>
+<!-- ========= UML:DerivationClassifier ========= -->
+<!ENTITY % DerivationClassifierFeatures '%ClassifierFeatures;'>
+<!ENTITY % DerivationClassifierAtts '%ClassifierAtts;'>
+<!ELEMENT UML:DerivationClassifier (%DerivationClassifierFeatures;)*>
+<!ATTLIST UML:DerivationClassifier
+	%DerivationClassifierAtts; 
+>
+<!-- ========= UML:Component ========= -->
+<!ELEMENT UML:Component.externalInterface (UML:Port)*>
+<!ELEMENT UML:Component.specifyingStateMachine (UML:StateMachine)*>
+<!ELEMENT UML:Component.internalConnector (UML:Connector)*>
+<!ELEMENT UML:Component.elementImport (UML:ElementImport)*>
+<!ENTITY % ComponentFeatures '%ClassifierFeatures; |
+   UML:Component.externalInterface |
+   UML:Component.specifyingStateMachine |
+   UML:Component.internalConnector |
+   UML:Component.elementImport '>
+<!ENTITY % ComponentAtts '%ClassifierAtts;
+   instantiation %InstantiationKind; #IMPLIED
+   implementingArtifact IDREFS #IMPLIED
+   location IDREFS #IMPLIED
+   deploymentSpecification IDREFS #IMPLIED
+   assembly IDREFS #IMPLIED
+   internalClassifier IDREFS #IMPLIED'>
+<!ELEMENT UML:Component (%ComponentFeatures;)*>
+<!ATTLIST UML:Component
+	%ComponentAtts; 
+>
+<!-- ========= UML:Subsystem ========= -->
+<!ENTITY % SubsystemFeatures '%ComponentFeatures;'>
+<!ENTITY % SubsystemAtts '%ComponentAtts;
+	specificationElement IDREFS #IMPLIED
+	realizationElement IDREFS #IMPLIED'>
+<!ELEMENT UML:Subsystem (%SubsystemFeatures;)*>
+<!ATTLIST UML:Subsystem
+	%SubsystemAtts; 
+>
+<!-- ========= UML:Node ========= -->
+<!ENTITY % NodeFeatures '%ClassifierFeatures;'>
+<!ENTITY % NodeAtts '%ClassifierAtts;
+   deployedElement IDREFS #IMPLIED
+   deployment IDREFS #IMPLIED'>
+<!ELEMENT UML:Node (%NodeFeatures;)*>
+<!ATTLIST UML:Node
+	%NodeAtts; 
+>
+<!-- ========= UML:Device ========= -->
+<!ENTITY % DeviceFeatures '%NodeFeatures;'>
+<!ENTITY % DeviceAtts '%NodeAtts;'>
+<!ELEMENT UML:Device (%DeviceFeatures;)*>
+<!ATTLIST UML:Device
+	%DeviceAtts; 
+>
+<!-- ========= UML:ExecutionEnvironment ========= -->
+<!ENTITY % ExecutionEnvironmentFeatures '%NodeFeatures;'>
+<!ENTITY % ExecutionEnvironmentAtts '%NodeAtts;'>
+<!ELEMENT UML:ExecutionEnvironment (%ExecutionEnvironmentFeatures;)*>
+<!ATTLIST UML:ExecutionEnvironment
+	%ExecutionEnvironmentAtts; 
+>
+<!-- ========= UML:Deployment ========= -->
+<!ENTITY % DeploymentFeatures '%DirectedRelationshipFeatures;'>
+<!ENTITY % DeploymentAtts '%DirectedRelationshipAtts;
+	specification IDREF #IMPLIED'>
+<!ELEMENT UML:Deployment (%DeploymentFeatures;)*>
+<!ATTLIST UML:Deployment
+	%DeploymentAtts; 
+>
+<!-- ========= UML:DeploymentSpecification ========= -->
+<!ENTITY % DeploymentSpecificationFeatures '%NamedElementFeatures;'>
+<!ENTITY % DeploymentSpecificationAtts '%NamedElementAtts;
+	deployment IDREFS #IMPLIED
+	deploymentLocation CDATA #IMPLIED
+	executionLocation CDATA #IMPLIED
+	deploymentDescriptor IDREFS #IMPLIED
+   configuredAssembly IDREF #IMPLIED
+   configuredComponent IDREF #IMPLIED'>
+<!ELEMENT UML:DeploymentSpecification (%DeploymentSpecificationFeatures;)*>
+<!ATTLIST UML:DeploymentSpecification
+	%DeploymentSpecificationAtts; 
+>
+<!-- ========= UML:Permission ========= -->
+<!ENTITY % PermissionFeatures '%DependencyFeatures;'>
+<!ENTITY % PermissionAtts '%DependencyAtts;'>
+<!ELEMENT UML:Permission (%PermissionFeatures;)*>
+<!ATTLIST UML:Permission
+	%PermissionAtts; 
+>
+<!-- ========= UML:Comment ========= -->
+<!ELEMENT UML:Comment.body (#PCDATA)>
+<!ENTITY % CommentFeatures '%NamedElementFeatures; |
+	UML:Comment.body '>
+<!ENTITY % CommentAtts '%NamedElementAtts;
+   annotatedElement IDREFS #IMPLIED'>
+<!ELEMENT UML:Comment (%CommentFeatures;)*>
+<!ATTLIST UML:Comment
+	%CommentAtts; 
+>
+<!-- ========= UML:Flow ========= -->
+<!ENTITY % FlowFeatures '%RelationshipFeatures;'>
+<!ENTITY % FlowAtts '%RelationshipAtts;
+   target IDREFS #IMPLIED
+   source IDREFS #IMPLIED'>
+<!ELEMENT UML:Flow (%FlowFeatures;)*>
+<!ATTLIST UML:Flow
+	%FlowAtts; 
+>
+<!-- ========= UML:PrimitiveType ========= -->
+<!ENTITY % PrimitiveFeatures '%DataTypeFeatures;'>
+<!ENTITY % PrimitiveAtts '%DataTypeAtts;'>
+<!ELEMENT UML:PrimitiveType (%PrimitiveFeatures;)*>
+<!ATTLIST UML:PrimitiveType
+	%PrimitiveAtts; 
+>
+<!-- ========= UML:Enumeration ========= -->
+<!ELEMENT UML:Enumeration.literal (UML:EnumerationLiteral)*>
+<!ENTITY % EnumerationFeatures '%DataTypeFeatures; |
+   UML:Enumeration.literal'>
+<!ENTITY % EnumerationAtts '%DataTypeAtts;'>
+<!ELEMENT UML:Enumeration (%EnumerationFeatures;)*>
+<!ATTLIST UML:Enumeration
+	%EnumerationAtts; 
+>
+<!-- ========= UML:EnumerationLiteral ========= -->
+<!ELEMENT UML:EnumerationLiteral.enumeration (UML:Enumeration)*>
+<!ENTITY % EnumerationLiteralFeatures '%NamedElementFeatures; |
+   UML:EnumerationLiteral.enumeration'>
+<!ENTITY % EnumerationLiteralAtts '%NamedElementAtts;
+   enumeration IDREFS #IMPLIED'>
+<!ELEMENT UML:EnumerationLiteral (%EnumerationLiteralFeatures;)*>
+<!ATTLIST UML:EnumerationLiteral
+	%EnumerationLiteralAtts; 
+>
+<!-- ========= UML:TaggedValue ========= -->
+<!ELEMENT UML:TaggedValue.dataValue (#PCDATA | XMI.reference)*>
+<!ELEMENT UML:TaggedValue.modelElement (UML:Element)*>
+<!ELEMENT UML:TaggedValue.referenceValue (UML:Element)*>
+<!ENTITY % TaggedValueFeatures '%NamedElementFeatures; |
+   UML:TaggedValue.dataValue |
+   UML:TaggedValue.modelElement |
+   UML:TaggedValue.referenceValue'>
+<!ENTITY % TaggedValueAtts '%NamedElementAtts;
+   modelElement IDREFS #IMPLIED
+   referenceValue IDREFS #IMPLIED
+   hidden (true | false) #IMPLIED'>
+<!ELEMENT UML:TaggedValue (%TaggedValueFeatures;)*>
+<!ATTLIST UML:TaggedValue
+	%TaggedValueAtts; 
+>
+<!-- ========= UML:ProgrammingLanguageDataType ========= -->
+<!ELEMENT UML:ProgrammingLanguageDataType.expression (UML:Expression)*>
+<!ENTITY % ProgrammingLanguageDataTypeFeatures '%DataTypeFeatures; |
+   UML:ProgrammingLanguageDataType.expression'>
+<!ENTITY % ProgrammingLanguageDataTypeAtts '%DataTypeAtts;'>
+<!ELEMENT UML:ProgrammingLanguageDataType (%ProgrammingLanguageDataTypeFeatures;)*>
+<!ATTLIST UML:ProgrammingLanguageDataType
+	%ProgrammingLanguageDataTypeAtts; 
+>
+<!-- ========= UML:Artifact ========= -->
+<!ENTITY % ArtifactFeatures '%ClassifierFeatures;'>
+<!ENTITY % ArtifactAtts '%ClassifierAtts;
+	implementedElement IDREFS #IMPLIED
+	deployment IDREFS #IMPLIED
+	content IDREF #IMPLIED
+   sourcefile CDATA #IMPLIED'>
+<!ELEMENT UML:Artifact (%ArtifactFeatures;)*>
+<!ATTLIST UML:Artifact
+	%ArtifactAtts; 
+>
+<!-- ========= UML:SourceFileArtifact ========= -->
+<!ENTITY % SourceFileArtifactFeatures '%ArtifactFeatures;'>
+<!ENTITY % SourceFileArtifactAtts '%ArtifactAtts;'>
+<!ELEMENT UML:SourceFileArtifact (%SourceFileArtifactFeatures;)*>
+<!ATTLIST UML:SourceFileArtifact
+	%SourceFileArtifactAtts; 
+>
+<!-- ========= UML:RequirementArtifact ========= -->
+<!ENTITY % RequirementArtifactFeatures '%ArtifactFeatures;'>
+<!ENTITY % RequirementArtifactAtts '%ArtifactAtts;
+   requirementID CDATA #IMPLIED
+   requirementProviderID CDATA #IMPLIED
+   requirementSourceID CDATA #IMPLIED
+   requirementProjectName CDATA #IMPLIED
+   requirementModName CDATA #IMPLIED'>
+<!ELEMENT UML:RequirementArtifact (%RequirementArtifactFeatures;)*>
+<!ATTLIST UML:RequirementArtifact
+	%RequirementArtifactAtts; 
+>
+<!-- ========= UML:Common_Behavior ========= -->
+<!-- ========= UML:Slot ========= -->
+<!ENTITY % SlotFeatures '%ElementFeatures; |
+	UML:ValueSpecification'>
+<!ENTITY % SlotAtts '%ElementAtts;
+	value IDREFS #IMPLIED
+	definingFeature IDREF #IMPLIED
+	owningInstance IDREF #IMPLIED'>
+<!ELEMENT UML:Slot (%SlotFeatures;)*>
+<!ATTLIST UML:Slot
+	%SlotAtts; 
+>
+<!-- ========= UML:Instance ========= -->
+<!ELEMENT UML:Instance.linkEnd (UML:LinkEnd)*>
+<!ELEMENT UML:Instance.slot (UML:Slot)*>
+<!ELEMENT UML:Instance.componentInstance (UML:ComponentInstance)*>
+<!ELEMENT UML:Instance.ownedInstance (UML:Instance | UML:Object | UML:LinkObject | UML:DataValue | UML:ComponentInstance | UML:NodeInstance | UML:SubsystemInstance | UML:UseCaseInstance)*>
+<!ELEMENT UML:Instance.ownedLink (UML:Link | UML:LinkObject)*>
+<!ENTITY % InstanceFeatures '%NamedElementFeatures; |
+   UML:Instance.linkEnd |
+   UML:Instance.slot |
+   UML:Instance.componentInstance |
+   UML:Instance.ownedInstance |
+   UML:Instance.ownedLink'>
+<!ENTITY % InstanceAtts '%NamedElementAtts;
+   classifier IDREFS #IMPLIED
+   linkEnd IDREFS #IMPLIED
+   componentInstance IDREFS #IMPLIED'>
+<!ELEMENT UML:Instance (%InstanceFeatures;)*>
+<!ATTLIST UML:Instance
+	%InstanceAtts; 
+>
+<!-- ========= UML:Signal ========= -->
+<!ENTITY % SignalFeatures '%ClassifierFeatures;'>
+<!ENTITY % SignalAtts '%ClassifierAtts;
+	context IDREFS #IMPLIED
+	handler IDREFS #IMPLIED'>
+<!ELEMENT UML:Signal (%SignalFeatures;)*>
+<!ATTLIST UML:Signal
+	%SignalAtts; 
+>
+<!-- ========= UML:TimeSignal ========= -->
+<!ELEMENT UML:TimeSignal.timeExpression (UML:Expression)>
+<!ENTITY % TimeSignalFeatures '%SignalFeatures; |
+	UML:TimeSignal.timeExpression'>
+<!ENTITY % TimeSignalAtts '%SignalAtts;'>
+<!ELEMENT UML:TimeSignal (%TimeSignalFeatures;)*>
+<!ATTLIST UML:TimeSignal
+	%TimeSignalAtts; 
+>
+<!-- ========= UML:ChangeSignal ========= -->
+<!ELEMENT UML:ChangeSignal.changeExpression (UML:Expression)>
+<!ENTITY % ChangeSignalFeatures '%SignalFeatures; |
+	UML:ChangeSignal.changeExpression'>
+<!ENTITY % ChangeSignalAtts '%SignalAtts;'>
+<!ELEMENT UML:ChangeSignal (%ChangeSignalFeatures;)*>
+<!ATTLIST UML:ChangeSignal
+	%ChangeSignalAtts; 
+>
+<!-- ========= UML:JumpHandler ========= -->
+<!ENTITY % JumpHandlerFeatures '%ElementFeatures;'>
+<!ENTITY % JumpHandlerAtts '%ElementAtts;
+      jumpType IDREF #IMPLIED
+      body IDREF #IMPLIED
+      protectedAction IDREFS #IMPLIED
+      isDefault (true|false) #IMPLIED'>
+<!ELEMENT UML:JumpHandler (%JumpHandlerFeatures;)*>
+<!ATTLIST UML:JumpHandler
+	%JumpHandlerAtts; 
+>
+<!-- ========= UML:Action ========= -->
+<!ENTITY % ActionFeatures '%ElementFeatures;'>
+<!ENTITY % ActionAtts '%ElementAtts;
+   isReadOnly (true|false) #IMPLIED
+	predecessor IDREFS #IMPLIED
+   successor IDREFS #IMPLIED
+   jumpHandler IDREFS #IMPLIED'>
+<!ELEMENT UML:Action (%ActionFeatures;)*>
+<!ATTLIST UML:Action
+	%ActionAtts; 
+>
+<!-- ========= UML:Clause ========= -->
+<!ELEMENT UML:Clause.body (UML:Action*)>
+<!ELEMENT UML:Clause.test (UML:Action*)>
+<!ENTITY % ClauseFeatures '%ElementFeatures; |
+   UML:Clause.body |
+   UML:Clause.test'>
+<!ENTITY % ClauseAtts '%ElementAtts;
+	predecessorClause IDREFS #IMPLIED
+   successorClause IDREFS #IMPLIED
+   testOutput IDREF #IMPLIED'>
+<!ELEMENT UML:Clause (%ClauseFeatures;)*>
+<!ATTLIST UML:Clause
+	%ClauseAtts; 
+>
+<!-- ========= UML:SwitchOption ========= -->
+<!ENTITY % SwitchOptionFeatures '%ClauseFeatures;'>
+<!ENTITY % SwitchOptionAtts '%ClauseAtts;
+      fallThrough (true|false) #IMPLIED
+      isDefault (true|false) #IMPLIED'>
+<!ELEMENT UML:SwitchOption (%SwitchOptionFeatures;)*>
+<!ATTLIST UML:SwitchOption
+	%SwitchOptionAtts; 
+>
+<!-- ========= UML:PrimitiveAction ========= -->
+<!ELEMENT UML:PrimitiveAction.argument (UML:ValueSpecification*)>
+<!ELEMENT UML:PrimitiveAction.target (UML:ValueSpecification)>
+<!ENTITY % PrimitiveActionFeatures '%ActionFeatures; |
+      UML:PrimitiveAction.argument |
+      UML:PrimitiveAction.target'>
+<!ENTITY % PrimitiveActionAtts '%ActionAtts;'>
+<!ELEMENT UML:PrimitiveAction (%PrimitiveActionFeatures;)*>
+<!ATTLIST UML:PrimitiveAction
+	%PrimitiveActionAtts; 
+>
+<!-- ========= UML:CompositeAction ========= -->
+<!ENTITY % CompositeActionFeatures '%ActionFeatures;'>
+<!ENTITY % CompositeActionAtts '%ActionAtts;'>
+<!ELEMENT UML:CompositeAction (%CompositeActionFeatures;)*>
+<!ATTLIST UML:CompositeAction
+	%CompositeActionAtts; 
+>
+<!-- ========= UML:SynchronizedAction ========= -->
+<!ELEMENT UML:SynchronizedAction.subAction (UML:Action)*>
+<!ENTITY % SynchronizedActionFeatures '%CompositeActionFeatures; |
+      UML:SynchronizedAction.subAction'>
+<!ENTITY % SynchronizedActionAtts '%CompositeActionAtts;'>
+<!ELEMENT UML:SynchronizedAction (%SynchronizedActionFeatures;)*>
+<!ATTLIST UML:SynchronizedAction
+	%SynchronizedActionAtts; 
+>
+<!-- ========= UML:Variable ========= -->
+<!ENTITY % VariableFeatures '%TypedElementFeatures;'>
+<!ENTITY % VariableAtts '%TypedElementAtts;
+      scope IDREF #IMPLIED'>
+<!ELEMENT UML:Variable (%VariableFeatures;)*>
+<!ATTLIST UML:Variable
+	%VariableAtts; 
+>
+<!-- ========= UML:GroupAction ========= -->
+<!ENTITY % GroupActionFeatures '%CompositeActionFeatures;'>
+<!ENTITY % GroupActionAtts '%CompositeActionAtts;'>
+<!ELEMENT UML:GroupAction (%GroupActionFeatures;)*>
+<!ATTLIST UML:GroupAction
+	%GroupActionAtts; 
+>
+<!-- ========= UML:LoopAction ========= -->
+<!ELEMENT UML:LoopAction.test (UML:Action*)>
+<!ELEMENT UML:LoopAction.body (UML:Action*)>
+<!ENTITY % LoopActionFeatures '%CompositeActionFeatures; |
+      UML:LoopAction.test |
+      UML:LoopAction.body'>
+<!ENTITY % LoopActionAtts '%CompositeActionAtts;
+      testOutput IDREF #IMPLIED
+      isTestedFirst (true|false) #IMPLIED'>
+<!ELEMENT UML:LoopAction (%LoopActionFeatures;)*>
+<!ATTLIST UML:LoopAction
+	%LoopActionAtts; 
+>
+<!-- ========= UML:ConditionalAction ========= -->
+<!ELEMENT UML:ConditionalAction.clause (UML:Clause*)>
+<!ENTITY % ConditionalActionFeatures '%CompositeActionFeatures; |
+      UML:ConditionalAction.clause'>
+<!ENTITY % ConditionalActionAtts '%CompositeActionAtts;
+      isDeterminate (true|false) #IMPLIED
+      isAssertion (true|false) #IMPLIED'>
+<!ELEMENT UML:ConditionalAction (%ConditionalActionFeatures;)*>
+<!ATTLIST UML:ConditionalAction
+	%ConditionalActionAtts; 
+>
+<!-- ========= UML:SwitchAction ========= -->
+<!ENTITY % SwitchActionFeatures '%ConditionalActionFeatures;'>
+<!ENTITY % SwitchActionAtts '%ConditionalActionAtts;'>
+<!ELEMENT UML:SwitchAction (%SwitchActionFeatures;)*>
+<!ATTLIST UML:SwitchAction
+	%SwitchActionAtts; 
+>
+<!-- ========= UML:CallOperationAction ========= -->
+<!ENTITY % CallOperationActionFeatures '%PrimitiveActionFeatures;'>
+<!ENTITY % CallOperationActionAtts '%PrimitiveActionAtts;
+      operation IDREF #IMPLIED'>
+<!ELEMENT UML:CallOperationAction (%CallOperationActionFeatures;)*>
+<!ATTLIST UML:CallOperationAction
+	%CallOperationActionAtts; 
+>
+<!-- ========= UML:CreateObjectAction ========= -->
+<!ENTITY % CreateObjectActionFeatures '%PrimitiveActionFeatures;'>
+<!ENTITY % CreateObjectActionAtts '%PrimitiveActionAtts;
+      classifier IDREF #IMPLIED'>
+<!ELEMENT UML:CreateObjectAction (%CreateObjectActionFeatures;)*>
+<!ATTLIST UML:CreateObjectAction
+	%CreateObjectActionAtts; 
+>
+<!-- ========= UML:DestroyObjectAction ========= -->
+<!ENTITY % DestroyObjectActionFeatures '%PrimitiveActionFeatures;'>
+<!ENTITY % DestroyObjectActionAtts '%PrimitiveActionAtts;'>
+<!ELEMENT UML:DestroyObjectAction (%DestroyObjectActionFeatures;)*>
+<!ATTLIST UML:DestroyObjectAction
+	%DestroyObjectActionAtts; 
+>
+<!-- ========= UML:ReturnAction ========= -->
+<!ENTITY % ReturnActionFeatures '%PrimitiveActionFeatures;'>
+<!ENTITY % ReturnActionAtts '%PrimitiveActionAtts;'>
+<!ELEMENT UML:ReturnAction (%ReturnActionFeatures;)*>
+<!ATTLIST UML:ReturnAction
+	%ReturnActionAtts; 
+>
+<!-- ========= UML:OperatorAction ========= -->
+<!ENTITY % OperatorActionFeatures '%PrimitiveActionFeatures;'>
+<!ENTITY % OperatorActionAtts '%PrimitiveActionAtts;
+      operatorType CDATA #IMPLIED'>
+<!ELEMENT UML:OperatorAction (%OperatorActionFeatures;)*>
+<!ATTLIST UML:OperatorAction
+	%OperatorActionAtts; 
+>
+<!-- ========= UML:BinaryOperatorAction ========= -->
+<!ENTITY % BinaryOperatorActionFeatures '%OperatorActionFeatures;'>
+<!ENTITY % BinaryOperatorActionAtts '%OperatorActionAtts;
+   left IDREF #IMPLIED
+   right IDREF #IMPLIED'>
+<!ELEMENT UML:BinaryOperatorAction (%BinaryOperatorActionFeatures;)*>
+<!ATTLIST UML:BinaryOperatorAction
+	%BinaryOperatorActionAtts; 
+>
+<!-- ========= UML:UnaryOperatorAction ========= -->
+<!ENTITY % UnaryOperatorActionFeatures '%OperatorActionFeatures;'>
+<!ENTITY % UnaryOperatorActionAtts '%OperatorActionAtts;'>
+<!ELEMENT UML:UnaryOperatorAction (%UnaryOperatorActionFeatures;)*>
+<!ATTLIST UML:UnaryOperatorAction
+	%UnaryOperatorActionAtts; 
+>
+<!-- ========= UML:TestIdentityAction ========= -->
+<!ELEMENT UML:TestIdentityAction.first (UML:InputPin*)>
+<!ELEMENT UML:TestIdentityAction.second (UML:InputPin*)>
+<!ENTITY % TestIdentityActionFeatures '%PrimitiveActionFeatures; |
+      UML:TestIdentityAction.first |
+      UML:TestIdentityAction.second'>
+<!ENTITY % TestIdentityActionAtts '%PrimitiveActionAtts;'>
+<!ELEMENT UML:TestIdentityAction (%TestIdentityActionFeatures;)*>
+<!ATTLIST UML:TestIdentityAction
+	%TestIdentityActionAtts; 
+>
+<!-- ========= UML:ReadSelfAction ========= -->
+<!ENTITY % ReadSelfActionFeatures '%PrimitiveActionFeatures;'>
+<!ENTITY % ReadSelfActionAtts '%PrimitiveActionAtts;'>
+<!ELEMENT UML:ReadSelfAction (%ReadSelfActionFeatures;)*>
+<!ATTLIST UML:ReadSelfAction
+	%ReadSelfActionAtts; 
+>
+<!-- ========= UML:HandlerAction ========= -->
+<!ELEMENT UML:HandlerAction.body (UML:Action)>
+<!ENTITY % HandlerActionFeatures '%PrimitiveActionFeatures; |
+      UML:HandlerAction.body'>
+<!ENTITY % HandlerActionAtts '%PrimitiveActionAtts;
+      jumpHandler IDREFS #IMPLIED'>
+<!ELEMENT UML:HandlerAction (%HandlerActionFeatures;)*>
+<!ATTLIST UML:HandlerAction
+	%HandlerActionAtts; 
+>
+<!-- ========= UML:JumpAction ========= -->
+<!ENTITY % JumpActionFeatures '%PrimitiveActionFeatures;'>
+<!ENTITY % JumpActionAtts '%PrimitiveActionAtts;'>
+<!ELEMENT UML:JumpAction (%JumpActionFeatures;)*>
+<!ATTLIST UML:JumpAction
+	%JumpActionAtts; 
+>
+<!-- ========= UML:CallBehaviorAction ========= -->
+<!ENTITY % CallBehaviorActionFeatures '%PrimitiveActionFeatures;'>
+<!ENTITY % CallBehaviorActionAtts '%PrimitiveActionAtts;
+      isSynchronous (true|false) #IMPLIED'>
+<!ELEMENT UML:CallBehaviorAction (%CallBehaviorActionFeatures;)*>
+<!ATTLIST UML:CallBehaviorAction
+	%CallBehaviorActionAtts; 
+>
+<!-- ========= UML:PrimitiveFunction ========= -->
+<!ENTITY % PrimitiveFunctionFeatures '%BehaviorFeatures;'>
+<!ENTITY % PrimitiveFunctionAtts '%BehaviorAtts;
+      body CDATA #IMPLIED
+      language CDATA #IMPLIED'>
+<!ELEMENT UML:PrimitiveFunction (%PrimitiveFunctionFeatures;)*>
+<!ATTLIST UML:PrimitiveFunction
+	%PrimitiveFunctionAtts; 
+>
+<!-- ========= UML:ApplyFunctionAction ========= -->
+<!ENTITY % ApplyFunctionActionFeatures '%PrimitiveActionFeatures;'>
+<!ENTITY % ApplyFunctionActionAtts '%PrimitiveActionAtts;
+      function IDREF #IMPLIED'>
+<!ELEMENT UML:ApplyFunctionAction (%ApplyFunctionActionFeatures;)*>
+<!ATTLIST UML:ApplyFunctionAction
+	%ApplyFunctionActionAtts; 
+>
+<!-- ========= UML:VariableAction ========= -->
+<!ENTITY % VariableActionFeatures '%PrimitiveActionFeatures;'>
+<!ENTITY % VariableActionAtts '%PrimitiveActionAtts; 
+      variable IDREF #IMPLIED'>
+<!ELEMENT UML:VariableAction (%VariableActionFeatures;)*>
+<!ATTLIST UML:VariableAction
+	%VariableActionAtts; 
+>
+<!-- ========= UML:ReadVariableAction ========= -->
+<!ENTITY % ReadVariableActionFeatures '%VariableActionFeatures;'>
+<!ENTITY % ReadVariableActionAtts '%VariableActionAtts;'>
+<!ELEMENT UML:ReadVariableAction (%ReadVariableActionFeatures;)*>
+<!ATTLIST UML:ReadVariableAction
+	%ReadVariableActionAtts; 
+>
+<!-- ========= UML:WriteVariableAction ========= -->
+<!ENTITY % WriteVariableActionFeatures '%VariableActionFeatures;'>
+<!ENTITY % WriteVariableActionAtts '%VariableActionAtts;'>
+<!ELEMENT UML:WriteVariableAction (%WriteVariableActionFeatures;)*>
+<!ATTLIST UML:WriteVariableAction
+	%WriteVariableActionAtts; 
+>
+<!-- ========= UML:ClearVariableAction ========= -->
+<!ENTITY % ClearVariableActionFeatures '%VariableActionFeatures;'>
+<!ENTITY % ClearVariableActionAtts '%VariableActionAtts;'>
+<!ELEMENT UML:ClearVariableAction (%ClearVariableActionFeatures;)*>
+<!ATTLIST UML:ClearVariableAction
+	%ClearVariableActionAtts; 
+>
+<!-- ========= UML:AddVariableValueAction ========= -->
+<!ENTITY % AddVariableValueActionFeatures '%WriteVariableActionFeatures;'>
+<!ENTITY % AddVariableValueActionAtts '%WriteVariableActionAtts;
+      isReplaceAll (true|false) #IMPLIED'>
+<!ELEMENT UML:AddVariableValueAction (%AddVariableValueActionFeatures;)*>
+<!ATTLIST UML:AddVariableValueAction
+	%AddVariableValueActionAtts; 
+>
+<!-- ========= UML:RemoveVariableValueAction ========= -->
+<!ENTITY % RemoveVariableValueActionFeatures '%WriteVariableActionFeatures;'>
+<!ENTITY % RemoveVariableValueActionAtts '%WriteVariableActionAtts;'>
+<!ELEMENT UML:RemoveVariableValueAction (%RemoveVariableValueActionFeatures;)*>
+<!ATTLIST UML:RemoveVariableValueAction
+	%RemoveVariableValueActionAtts; 
+>
+<!-- ========= UML:LinkEndData ========= -->
+<!ENTITY % LinkEndDataFeatures '%ElementFeatures;'>
+<!ENTITY % LinkEndDataAtts '%ElementAtts;
+      value IDREF #IMPLIED
+      end IDREF #IMPLIED'>
+<!ELEMENT UML:LinkEndData (%LinkEndDataFeatures;)*>
+<!ATTLIST UML:LinkEndData
+	%LinkEndDataAtts; 
+>
+<!-- ========= UML:LinkAction ========= -->
+<!ELEMENT UML:LinkAction.endData (UML:LinkEndData*)>
+<!ENTITY % LinkActionFeatures '%PrimitiveActionFeatures; |
+      UML:LinkAction.endData'>
+<!ENTITY % LinkActionAtts '%PrimitiveActionAtts;'>
+<!ELEMENT UML:LinkAction (%LinkActionFeatures;)*>
+<!ATTLIST UML:LinkAction
+	%LinkActionAtts; 
+>
+<!-- ========= UML:ReadLinkAction ========= -->
+<!ENTITY % ReadLinkActionFeatures '%LinkActionFeatures;'>
+<!ENTITY % ReadLinkActionAtts '%LinkActionAtts;'>
+<!ELEMENT UML:ReadLinkAction (%ReadLinkActionFeatures;)*>
+<!ATTLIST UML:ReadLinkAction
+	%ReadLinkActionAtts; 
+>
+<!-- ========= UML:WriteLinkAction ========= -->
+<!ENTITY % WriteLinkActionFeatures '%LinkActionFeatures;'>
+<!ENTITY % WriteLinkActionAtts '%LinkActionAtts;'>
+<!ELEMENT UML:WriteLinkAction (%WriteLinkActionFeatures;)*>
+<!ATTLIST UML:WriteLinkAction
+	%WriteLinkActionAtts; 
+>
+<!-- ========= UML:LinkEndCreationData ========= -->
+<!ENTITY % LinkEndCreationDataFeatures '%LinkEndDataFeatures;'>
+<!ENTITY % LinkEndCreationDataAtts '%LinkEndDataAtts;
+      isReplaceAll (true|false) #IMPLIED
+      insertAt IDREF #IMPLIED'>
+<!ELEMENT UML:LinkEndCreationData (%LinkEndCreationDataFeatures;)*>
+<!ATTLIST UML:LinkEndCreationData
+	%LinkEndCreationDataAtts; 
+>
+<!-- ========= UML:CreateLinkAction ========= -->
+<!ELEMENT UML:CreateLinkAction.endData (UML:LinkEndCreationData*)>
+<!ENTITY % CreateLinkActionFeatures '%WriteLinkActionFeatures; |
+      UML:CreateLinkAction.endData'>
+<!ENTITY % CreateLinkActionAtts '%WriteLinkActionAtts;'>
+<!ELEMENT UML:CreateLinkAction (%CreateLinkActionFeatures;)*>
+<!ATTLIST UML:CreateLinkAction
+	%CreateLinkActionAtts; 
+>
+<!-- ========= UML:DestroyLinkAction ========= -->
+<!ENTITY % DestroyLinkActionFeatures '%WriteLinkActionFeatures;'>
+<!ENTITY % DestroyLinkActionAtts '%WriteLinkActionAtts;'>
+<!ELEMENT UML:DestroyLinkAction (%DestroyLinkActionFeatures;)*>
+<!ATTLIST UML:DestroyLinkAction
+	%DestroyLinkActionAtts; 
+>
+<!-- ========= UML:AttributeAction ========= -->
+<!ELEMENT UML:AttributeAction.object (UML:InputPin*)>
+<!ENTITY % AttributeActionFeatures '%PrimitiveActionFeatures; |
+      UML:AttributeAction.object'>
+<!ENTITY % AttributeActionAtts '%PrimitiveActionAtts;
+      attribute IDREF #IMPLIED'>
+<!ELEMENT UML:AttributeAction (%AttributeActionFeatures;)*>
+<!ATTLIST UML:AttributeAction
+	%AttributeActionAtts; 
+>
+<!-- ========= UML:ReadAttributeAction ========= -->
+<!ENTITY % ReadAttributeActionFeatures '%AttributeActionFeatures;'>
+<!ENTITY % ReadAttributeActionAtts '%AttributeActionAtts;'>
+<!ELEMENT UML:ReadAttributeAction (%ReadAttributeActionFeatures;)*>
+<!ATTLIST UML:ReadAttributeAction
+	%ReadAttributeActionAtts; 
+>
+<!-- ========= UML:WriteAttributeAction ========= -->
+<!ENTITY % WriteAttributeActionFeatures '%AttributeActionFeatures;'>
+<!ENTITY % WriteAttributeActionAtts '%AttributeActionAtts;'>
+<!ELEMENT UML:WriteAttributeAction (%WriteAttributeActionFeatures;)*>
+<!ATTLIST UML:WriteAttributeAction
+	%WriteAttributeActionAtts; 
+>
+<!-- ========= UML:ClearAttributeAction ========= -->
+<!ENTITY % ClearAttributeActionFeatures '%AttributeActionFeatures;'>
+<!ENTITY % ClearAttributeActionAtts '%AttributeActionAtts;'>
+<!ELEMENT UML:ClearAttributeAction (%ClearAttributeActionFeatures;)*>
+<!ATTLIST UML:ClearAttributeAction
+	%ClearAttributeActionAtts; 
+>
+<!-- ========= UML:AddAttributeValueAction ========= -->
+<!ENTITY % AddAttributeValueActionFeatures '%WriteAttributeActionFeatures;'>
+<!ENTITY % AddAttributeValueActionAtts '%WriteAttributeActionAtts;
+      isReplaceAll (true|false) #IMPLIED'>
+<!ELEMENT UML:AddAttributeValueAction (%AddAttributeValueActionFeatures;)*>
+<!ATTLIST UML:AddAttributeValueAction
+	%AddAttributeValueActionAtts; 
+>
+<!-- ========= UML:RemoveAttributeValueAction ========= -->
+<!ENTITY % RemoveAttributeValueActionFeatures '%WriteAttributeActionFeatures;'>
+<!ENTITY % RemoveAttributeValueActionAtts '%WriteAttributeActionAtts;'>
+<!ELEMENT UML:RemoveAttributeValueAction (%RemoveAttributeValueActionFeatures;)*>
+<!ATTLIST UML:RemoveAttributeValueAction
+	%RemoveAttributeValueActionAtts; 
+>
+<!-- ========= UML:SendSignalAction ========= -->
+<!ENTITY % SendSignalActionFeatures '%PrimitiveActionFeatures;'>
+<!ENTITY % SendSignalActionAtts '%PrimitiveActionAtts;
+      signal IDREF #IMPLIED'>
+<!ELEMENT UML:SendSignalAction (%SendSignalActionFeatures;)*>
+<!ATTLIST UML:SendSignalAction
+	%SendSignalActionAtts; 
+>
+<!-- ========= UML:ClearAssociationAction ========= -->
+<!ENTITY % ClearAssociationActionFeatures '%PrimitiveActionFeatures;'>
+<!ENTITY % ClearAssociationActionAtts '%PrimitiveActionAtts;
+      association IDREF #IMPLIED'>
+<!ELEMENT UML:ClearAssociationAction (%ClearAssociationActionFeatures;)*>
+<!ATTLIST UML:ClearAssociationAction
+	%ClearAssociationActionAtts; 
+>
+<!-- ========= UML:BroadCastSignalAction ========= -->
+<!ENTITY % BroadCastSignalActionFeatures '%PrimitiveActionFeatures;'>
+<!ENTITY % BroadCastSignalActionAtts '%PrimitiveActionAtts;
+      signal IDREF #IMPLIED'>
+<!ELEMENT UML:BroadCastSignalAction (%BroadCastSignalActionFeatures;)*>
+<!ATTLIST UML:BroadCastSignalAction
+	%BroadCastSignalActionAtts; 
+>
+<!-- ========= UML:SendObjectAction ========= -->
+<!ENTITY % SendObjectActionFeatures '%PrimitiveActionFeatures;'>
+<!ENTITY % SendObjectActionAtts '%PrimitiveActionAtts;'>
+<!ELEMENT UML:SendObjectAction (%SendObjectActionFeatures;)*>
+<!ATTLIST UML:SendObjectAction
+	%SendObjectActionAtts; 
+>
+<!-- ========= UML:CreateAction ========= -->
+<!ENTITY % CreateActionFeatures '%ActionFeatures;'>
+<!ENTITY % CreateActionAtts '%ActionAtts;
+   instantiation IDREF #IMPLIED'>
+<!ELEMENT UML:CreateAction (%CreateActionFeatures;)*>
+<!ATTLIST UML:CreateAction
+	%CreateActionAtts; 
+>
+<!-- ========= UML:DestroyAction ========= -->
+<!ENTITY % DestroyActionFeatures '%ActionFeatures;'>
+<!ENTITY % DestroyActionAtts '%ActionAtts;'>
+<!ELEMENT UML:DestroyAction (%DestroyActionFeatures;)*>
+<!ATTLIST UML:DestroyAction
+	%DestroyActionAtts; 
+>
+<!-- ========= UML:AssignmentAction ========= -->
+<!ELEMENT UML:AssignmentAction.value (UML:Expression)>
+<!ENTITY % AssignmentActionFeatures '%ActionFeatures; |
+	UML:AssignmentAction.value'>
+<!ENTITY % AssignmentActionAtts '%ActionAtts;'>
+<!ELEMENT UML:AssignmentAction (%AssignmentActionFeatures;)*>
+<!ATTLIST UML:AssignmentAction
+	%AssignmentActionAtts; 
+>
+<!-- ========= UML:UninterpretedAction ========= -->
+<!ENTITY % UninterpretedActionFeatures '%ActionFeatures;'>
+<!ENTITY % UninterpretedActionAtts '%ActionAtts;'>
+<!ELEMENT UML:UninterpretedAction (%UninterpretedActionFeatures;)*>
+<!ATTLIST UML:UninterpretedAction
+	%UninterpretedActionAtts; 
+>
+<!-- ========= UML:InteractionFragment ========= -->
+<!ELEMENT UML:InteractionFragment.gateConnector (UML:InterGateConnector)*>
+<!ENTITY % InteractionFragmentFeatures '%NamedElementFeatures; |
+	UML:InteractionFragment.gateConnector'>
+<!ENTITY % InteractionFragmentAtts '%NamedElementAtts;
+	covered IDREFS #IMPLIED'>
+<!ELEMENT UML:InteractionFragment (%InteractionFragmentFeatures;)*>
+<!ATTLIST UML:InteractionFragment
+	%InteractionFragmentAtts; 
+>
+<!-- ========= UML:InteractionOperand ========= -->
+<!ELEMENT UML:InteractionOperand.fragment (UML:InteractionFragment | UML:InteractionOperand | UML:CombinedFragment | UML:InteractionOccurrence | UML:ActionOccurrence | UML:AtomicFragment | UML:Interaction)*>
+<!ELEMENT UML:InteractionOperand.guard (UML:InteractionConstraint)?>
+<!ENTITY % InteractionOperandFeatures '%InteractionFragmentFeatures; |
+	UML:InteractionOperand.fragment |
+	UML:InteractionOperand.guard'>
+<!ENTITY % InteractionOperandAtts '%InteractionFragmentAtts;'>
+<!ELEMENT UML:InteractionOperand (%InteractionOperandFeatures;)*>
+<!ATTLIST UML:InteractionOperand
+	%InteractionOperandAtts; 
+>
+<!-- ========= UML:GeneralOrdering ======== -->
+<!ENTITY % GeneralOrderingFeatures '%NamedElementFeatures;'>
+<!ENTITY % GeneralOrderingAtts '%NamedElementAtts;
+	before IDREF #IMPLIED
+	after IDREF #IMPLIED'>
+<!ELEMENT UML:GeneralOrdering (%GeneralOrderingFeatures;)*>
+<!ATTLIST UML:GeneralOrdering
+	%GeneralOrderingAtts; 
+>
+<!-- ========= UML:InteractionConstraint ========= -->
+<!ELEMENT UML:InteractionConstraint.minint (UML:Expression)?>
+<!ELEMENT UML:InteractionConstraint.maxint (UML:Expression)?>
+<!ENTITY % InteractionConstraintFeatures '%ConstraintFeatures; |
+	UML:InteractionConstraint.minint |
+	UML:InteractionConstraint.maxint '>
+<!ENTITY % InteractionConstraintAtts '%ConstraintAtts;'>
+<!ELEMENT UML:InteractionConstraint (%InteractionConstraintFeatures;)*>
+<!ATTLIST UML:InteractionConstraint
+	%InteractionConstraintAtts; 
+>
+<!-- ========= UML:CombinedFragment ========= -->
+<!ELEMENT UML:CombinedFragment.expressionGate (UML:Gate)*>
+<!ELEMENT UML:CombinedFragment.operand (UML:InteractionOperand)*>
+<!ENTITY % CombinedFragmentFeatures '%InteractionFragmentFeatures; |
+	UML:CombinedFragment.operand |
+	UML:CombinedFragment.expressionGate'>
+<!ENTITY % CombinedFragmentAtts '%InteractionFragmentAtts;
+	interactionOperator %InteractionOperator; #IMPLIED'>
+<!ELEMENT UML:CombinedFragment (%CombinedFragmentFeatures;)*>
+<!ATTLIST UML:CombinedFragment
+	%CombinedFragmentAtts; 
+>
+<!-- ========= UML:StateInvariant ========= -->
+<!ELEMENT UML:StateInvariant.invariant (UML:Constraint*)>
+<!ENTITY % StateInvariantFeatures '%InteractionFragmentFeatures; |
+      UML:StateInvariant.invariant'>
+<!ENTITY % StateInvariantAtts '%InteractionFragmentAtts;'>
+<!ELEMENT UML:StateInvariant (%StateInvariantFeatures;)*>
+<!ATTLIST UML:StateInvariant
+	%StateInvariantAtts; 
+>
+<!-- ========= UML:Interaction ========= -->
+<!ELEMENT UML:Interaction.message (UML:Message)*>
+<!ENTITY % InteractionFeatures '%InteractionOperandFeatures; |
+	UML:Behavior.parameter |
+	UML:Interaction.message'>
+<!ENTITY % InteractionAtts '%InteractionOperandAtts;
+	specification IDREF #IMPLIED
+	representedFeature IDREF #IMPLIED'>
+<!ELEMENT UML:Interaction (%InteractionFeatures;)*>
+<!ATTLIST UML:Interaction
+	%InteractionAtts; 
+>
+<!-- ========= UML:Gate ======== -->
+<!ENTITY % GateFeatures '%NamedElementFeatures;'>
+<!ENTITY % GateAtts '%NamedElementAtts;
+	fromConnector IDREF #IMPLIED
+	toConnector IDREF #IMPLIED'>
+<!ELEMENT UML:Gate (%GateFeatures;)*>
+<!ATTLIST UML:Gate
+	%GateAtts; 
+>
+<!-- ========= UML:InterGateConnector ======== -->
+<!ENTITY % InterGateConnectorFeatures '%ElementFeatures;'>
+<!ENTITY % InterGateConnectorAtts '%ElementAtts;
+	fromGate IDREF #IMPLIED
+	toGate IDREF #IMPLIED
+	message IDREF #IMPLIED
+	event IDREF #IMPLIED
+	fragment IDREF #IMPLIED'>
+<!ELEMENT UML:InterGateConnector (%InterGateConnectorFeatures;)*>
+<!ATTLIST UML:InterGateConnector
+	%InterGateConnectorAtts; 
+>
+<!-- ========= UML:Lifeline ======== -->
+<!ELEMENT UML:Lifeline.discriminator (UML:Expression)?>
+<!ENTITY % LifelineFeatures '%NamedElementFeatures; |
+	UML:Lifeline.discriminator '>
+<!ENTITY % LifelineAtts '%NamedElementAtts;
+	coveredBy IDREFS #IMPLIED
+	outward IDREFS #IMPLIED
+	inward IDREFS #IMPLIED
+	events IDREFS #IMPLIED
+	decomposedAs IDREFS #IMPLIED
+	represents IDREF #IMPLIED'>
+<!ELEMENT UML:Lifeline (%LifelineFeatures;)*>
+<!ATTLIST UML:Lifeline
+	%LifelineAtts; 
+>
+<!-- ========= UML:MessageConnector ========= -->
+<!ENTITY % MessageConnectorFeatures '%ConnectorFeatures;'>
+<!ENTITY % MessageConnectorAtts '%ConnectorAtts;
+   message IDREFS #IMPLIED
+   toLine IDREF #IMPLIED
+   fromLine IDREF #IMPLIED'>
+<!ELEMENT UML:MessageConnector (%MessageConnectorFeatures;)*>
+<!ATTLIST UML:MessageConnector
+	%MessageConnectorAtts; 
+>
+<!-- ========= UML:InteractionOccurrence ========= -->
+<!ELEMENT UML:InteractionOccurrence.actualGate (UML:Gate)*>
+<!ENTITY % InteractionOccurrenceFeatures '%InteractionFragmentFeatures; |
+	UML:Behavior.parameter |
+	UML:InteractionOccurrence.actualGate'>
+<!ENTITY % InteractionOccurrenceAtts '%InteractionFragmentAtts;
+	specification IDREF #IMPLIED
+	representedFeature IDREF #IMPLIED
+	refersTo IDREF #IMPLIED'>
+<!ELEMENT UML:InteractionOccurrence (%InteractionOccurrenceFeatures;)*>
+<!ATTLIST UML:InteractionOccurrence
+	%InteractionOccurrenceAtts; 
+>
+<!-- ========= UML:PartDecomposition ======== -->
+<!ENTITY % PartDecompositionFeatures '%InteractionOccurrenceFeatures;'>
+<!ENTITY % PartDecompositionAtts '%InteractionOccurrenceAtts;'>
+<!ELEMENT UML:PartDecomposition (%PartDecompositionFeatures;)*>
+<!ATTLIST UML:PartDecomposition
+	%PartDecompositionAtts; 
+>
+<!-- ========= UML:ActionOccurrence ========= -->
+<!ENTITY % ActionOccurrenceFeatures '%InteractionFragmentFeatures;'>
+<!ENTITY % ActionOccurrenceAtts '%InteractionFragmentAtts;
+	action IDREF #IMPLIED
+	containing IDREF #IMPLIED'>
+<!ELEMENT UML:ActionOccurrence (%ActionOccurrenceFeatures;)*>
+<!ATTLIST UML:ActionOccurrence
+	%ActionOccurrenceAtts; 
+>
+<!-- ========= UML:EventOccurrence ========= -->
+<!ENTITY % EventOccurrenceFeatures '%NamedElementFeatures;'>
+<!ENTITY % EventOccurrenceAtts '%NamedElementAtts;
+	eventType IDREF #IMPLIED
+	toAfter IDREFS #IMPLIED
+	toBefore IDREFS #IMPLIED
+	toAfter IDREFS #IMPLIED
+	toBefore IDREFS #IMPLIED
+	sendMessage IDREF #IMPLIED
+	receiveMessage IDREF #IMPLIED
+	lifeline IDREF #IMPLIED
+	finishExec IDREF #IMPLIED
+	startExec  IDREF #IMPLIED
+	connection IDREF #IMPLIED'>
+<!ELEMENT UML:EventOccurrence (%EventOccurrenceFeatures;)*>
+<!ATTLIST UML:EventOccurrence
+	%EventOccurrenceAtts; 
+>
+<!-- ========= UML:ExecutionOccurrence ========= -->
+<!ENTITY % ExecutionOccurrenceFeatures '%InteractionFragmentFeatures;'>
+<!ENTITY % ExecutionOccurrenceAtts '%InteractionFragmentAtts;
+	finish IDREFS #IMPLIED
+	start IDREF #IMPLIED'>
+<!ELEMENT UML:ExecutionOccurrence (%ExecutionOccurrenceFeatures;)*>
+<!ATTLIST UML:ExecutionOccurrence
+	%ExecutionOccurrenceAtts; 
+>
+<!-- ========= UML:ProcedureOccurrence ========= -->
+<!ENTITY % ProcedureOccurrenceFeatures '%ExecutionOccurrenceFeatures;'>
+<!ENTITY % ProcedureOccurrenceAtts '%ExecutionOccurrenceAtts;
+	finish IDREFS #IMPLIED
+	start IDREF #IMPLIED'>
+<!ELEMENT UML:ProcedureOccurrence (%ProcedureOccurrenceFeatures;)*>
+<!ATTLIST UML:ProcedureOccurrence
+	%ProcedureOccurrenceAtts; 
+>
+<!-- ========= UML:AtomicFragment ========= -->
+<!ELEMENT UML:AtomicFragment.implicitGate (UML:Gate)?>
+<!ENTITY % AtomicFragmentFeatures '%InteractionFragmentFeatures; |
+	UML:AtomicFragment.implicitGate'>
+<!ENTITY % AtomicFragmentAtts '%InteractionFragmentAtts;'>
+<!ELEMENT UML:AtomicFragment (%AtomicFragmentFeatures;)*>
+<!ATTLIST UML:AtomicFragment
+	%AtomicFragmentAtts; 
+>
+<!-- ========= UML:AttributeLink ========= -->
+<!ELEMENT UML:AttributeLink.attribute (UML:Attribute)*>
+<!ELEMENT UML:AttributeLink.value (UML:Instance)*>
+<!ELEMENT UML:AttributeLink.instance (UML:Instance)*>
+<!ELEMENT UML:AttributeLink.linkEnd (UML:LinkEnd)*>
+<!ENTITY % AttributeLinkFeatures '%NamedElementFeatures; |
+   UML:AttributeLink.attribute |
+   UML:AttributeLink.value |
+   UML:AttributeLink.instance |
+   UML:AttributeLink.linkEnd'>
+<!ENTITY % AttributeLinkAtts '%NamedElementAtts;
+   attribute IDREFS #IMPLIED
+   value IDREFS #IMPLIED
+   instance IDREFS #IMPLIED
+   linkEnd IDREFS #IMPLIED'>
+<!ELEMENT UML:AttributeLink (%AttributeLinkFeatures;)*>
+<!ATTLIST UML:AttributeLink
+	%AttributeLinkAtts; 
+>
+<!-- ========= UML:Object ========= -->
+<!ENTITY % ObjectFeatures '%InstanceFeatures;'>
+<!ENTITY % ObjectAtts '%InstanceAtts;'>
+<!ELEMENT UML:Object (%ObjectFeatures;)*>
+<!ATTLIST UML:Object
+	%ObjectAtts; 
+>
+<!-- ========= UML:Link ========= -->
+<!ELEMENT UML:Link.association (UML:Association)*>
+<!ELEMENT UML:Link.connection (UML:LinkEnd)*>
+<!ENTITY % LinkFeatures '%NamedElementFeatures; |
+   UML:Link.association |
+   UML:Link.connection'>
+<!ENTITY % LinkAtts '%NamedElementAtts;
+   association IDREFS #IMPLIED'>
+<!ELEMENT UML:Link (%LinkFeatures;)*>
+<!ATTLIST UML:Link
+	%LinkAtts; 
+>
+<!-- ========= UML:LinkObject ========= -->
+<!ENTITY % LinkObjectFeatures '%ObjectFeatures; |
+   UML:Link.association |
+   UML:Link.connection'>
+<!ENTITY % LinkObjectAtts '%ObjectAtts;
+   association IDREFS #IMPLIED'>
+<!ELEMENT UML:LinkObject (%LinkObjectFeatures;)*>
+<!ATTLIST UML:LinkObject
+	%LinkObjectAtts; 
+>
+<!-- ========= UML:DataValue ========= -->
+<!ENTITY % DataValueFeatures '%InstanceFeatures;'>
+<!ENTITY % DataValueAtts '%InstanceAtts;'>
+<!ELEMENT UML:DataValue (%DataValueFeatures;)*>
+<!ATTLIST UML:DataValue
+	%DataValueAtts; 
+>
+<!-- ========= UML:CallAction ========= -->
+<!ENTITY % CallActionFeatures '%ActionFeatures;'>
+<!ENTITY % CallActionAtts '%ActionAtts;
+   operation IDREF #IMPLIED'>
+<!ELEMENT UML:CallAction (%CallActionFeatures;)*>
+<!ATTLIST UML:CallAction
+	%CallActionAtts; 
+>
+<!-- ========= UML:SendAction ========= -->
+<!ENTITY % SendActionFeatures '%ActionFeatures; '>
+<!ENTITY % SendActionAtts '%ActionAtts;
+   reception IDREF #IMPLIED'>
+<!ELEMENT UML:SendAction (%SendActionFeatures;)*>
+<!ATTLIST UML:SendAction
+	%SendActionAtts; 
+>
+<!-- ========= UML:ActionSequence ========= -->
+<!ELEMENT UML:ActionSequence.action (UML:Action | UML:CreateAction | UML:DestroyAction | UML:UninterpretedAction | UML:CallAction | UML:SendAction | UML:ActionSequence | UML:ReturnAction | UML:TerminateAction)*>
+<!ENTITY % ActionSequenceFeatures '%BehaviorFeatures; |
+   UML:ActionSequence.action'>
+<!ENTITY % ActionSequenceAtts '%BehaviorAtts;'>
+<!ELEMENT UML:ActionSequence (%ActionSequenceFeatures;)*>
+<!ATTLIST UML:ActionSequence
+	%ActionSequenceAtts; 
+>
+<!-- ========= UML:Argument ========= -->
+<!ELEMENT UML:Argument.value (UML:Expression)*>
+<!ENTITY % ArgumentFeatures '%NamedElementFeatures; |
+   UML:Argument.value'>
+<!ENTITY % ArgumentAtts '%NamedElementAtts;'>
+<!ELEMENT UML:Argument (%ArgumentFeatures;)*>
+<!ATTLIST UML:Argument
+	%ArgumentAtts; 
+>
+<!-- ========= UML:Reception ========= -->
+<!ENTITY % ReceptionFeatures '%BehavioralFeatureFeatures;'>
+<!ENTITY % ReceptionAtts '%BehavioralFeatureAtts;'>
+<!ELEMENT UML:Reception (%ReceptionFeatures;)*>
+<!ATTLIST UML:Reception
+	%ReceptionAtts; 
+>
+<!-- ========= UML:LinkEnd ========= -->
+<!ELEMENT UML:LinkEnd.instance (UML:Instance)*>
+<!ELEMENT UML:LinkEnd.link (UML:Link)*>
+<!ELEMENT UML:LinkEnd.associationEnd (UML:AssociationEnd)*>
+<!ELEMENT UML:LinkEnd.qualifiedValue (UML:AttributeLink)*>
+<!ENTITY % LinkEndFeatures '%NamedElementFeatures; |
+   UML:LinkEnd.instance |
+   UML:LinkEnd.link |
+   UML:LinkEnd.associationEnd |
+   UML:LinkEnd.qualifiedValue'>
+<!ENTITY % LinkEndAtts '%NamedElementAtts;
+   instance IDREFS #IMPLIED
+   link IDREFS #IMPLIED
+   associationEnd IDREFS #IMPLIED'>
+<!ELEMENT UML:LinkEnd (%LinkEndFeatures;)*>
+<!ATTLIST UML:LinkEnd
+	%LinkEndAtts; 
+>
+<!-- ========= UML:TerminateAction ========= -->
+<!ENTITY % TerminateActionFeatures '%ActionFeatures;'>
+<!ENTITY % TerminateActionAtts '%ActionAtts;'>
+<!ELEMENT UML:TerminateAction (%TerminateActionFeatures;)*>
+<!ATTLIST UML:TerminateAction
+	%TerminateActionAtts; 
+>
+<!-- ========= UML:Stimulus ========= -->
+<!ELEMENT UML:Stimulus.argument (UML:Instance)*>
+<!ELEMENT UML:Stimulus.sender (UML:Instance)*>
+<!ELEMENT UML:Stimulus.receiver (UML:Instance)*>
+<!ELEMENT UML:Stimulus.communicationLink (UML:Link)*>
+<!ELEMENT UML:Stimulus.dispatchAction (UML:Action)*>
+<!ENTITY % StimulusFeatures '%NamedElementFeatures; |
+   UML:Stimulus.argument |
+   UML:Stimulus.sender |
+   UML:Stimulus.receiver |
+   UML:Stimulus.communicationLink |
+   UML:Stimulus.dispatchAction'>
+<!ENTITY % StimulusAtts '%NamedElementAtts;
+   argument IDREFS #IMPLIED
+   sender IDREFS #IMPLIED
+   receiver IDREFS #IMPLIED
+   communicationLink IDREFS #IMPLIED
+   dispatchAction IDREFS #IMPLIED'>
+<!ELEMENT UML:Stimulus (%StimulusFeatures;)*>
+<!ATTLIST UML:Stimulus
+	%StimulusAtts; 
+>
+<!-- ========= UML:Exception ========= -->
+<!ENTITY % ExceptionFeatures '%SignalFeatures;'>
+<!ENTITY % ExceptionAtts '%SignalAtts;'>
+<!ELEMENT UML:Exception (%ExceptionFeatures;)*>
+<!ATTLIST UML:Exception
+	%ExceptionAtts; 
+>
+<!-- ========= UML:ComponentInstance ========= -->
+<!ELEMENT UML:ComponentInstance.nodeInstance (UML:NodeInstance)*>
+<!ELEMENT UML:ComponentInstance.resident (UML:Instance)*>
+<!ENTITY % ComponentInstanceFeatures '%InstanceFeatures; |
+   UML:ComponentInstance.nodeInstance |
+   UML:ComponentInstance.resident'>
+<!ENTITY % ComponentInstanceAtts '%InstanceAtts;
+   nodeInstance IDREFS #IMPLIED
+   resident IDREFS #IMPLIED'>
+<!ELEMENT UML:ComponentInstance (%ComponentInstanceFeatures;)*>
+<!ATTLIST UML:ComponentInstance
+	%ComponentInstanceAtts; 
+>
+<!-- ========= UML:NodeInstance ========= -->
+<!ELEMENT UML:NodeInstance.resident (UML:ComponentInstance)*>
+<!ENTITY % NodeInstanceFeatures '%InstanceFeatures; |
+   UML:NodeInstance.resident'>
+<!ENTITY % NodeInstanceAtts '%InstanceAtts;
+   resident IDREFS #IMPLIED'>
+<!ELEMENT UML:NodeInstance (%NodeInstanceFeatures;)*>
+<!ATTLIST UML:NodeInstance
+	%NodeInstanceAtts; 
+>
+<!-- ========= UML:SubsystemInstance ========= -->
+<!ENTITY % SubsystemInstanceFeatures '%InstanceFeatures;'>
+<!ENTITY % SubsystemInstanceAtts '%InstanceAtts;'>
+<!ELEMENT UML:SubsystemInstance (%SubsystemInstanceFeatures;)*>
+<!ATTLIST UML:SubsystemInstance
+	%SubsystemInstanceAtts; 
+>
+<!-- ========= UML:Use_Cases ========= -->
+<!-- ============ UML:UseCaseDetail ============== -->
+<!ELEMENT UML:UseCaseDetail.body (#PCDATA)>
+<!ELEMENT UML:UseCaseDetail.subDetail (UML:UseCaseDetail)*>
+<!ENTITY % UseCaseDetailAtts '%NamedElementAtts;
+      parent IDREF #IMPLIED'>
+<!ENTITY % UseCaseDetailFeatures '%NamedElementFeatures; |
+      UML:UseCaseDetail.body |
+      UML:UseCaseDetail.subDetail'>
+<!ELEMENT UML:UseCaseDetail (%UseCaseDetailFeatures;)*>
+<!ATTLIST UML:UseCaseDetail
+	%UseCaseDetailAtts; 
+>
+<!-- ========= UML:UseCase ========= -->
+<!ELEMENT UML:UseCase.extend (UML:Extend)*>
+<!ELEMENT UML:UseCase.include (UML:Include)*>
+<!ELEMENT UML:UseCase.extensionPoint (UML:ExtensionPoint)*>
+<!ENTITY % UseCaseFeatures '%ClassifierFeatures; |
+   UML:UseCase.extend |
+   UML:UseCase.include |
+   UML:UseCase.extensionPoint'>
+<!ENTITY % UseCaseAtts '%ClassifierAtts;
+      extendedBy IDREFS #IMPLIED
+      includedBy IDREFS #IMPLIED'>
+<!ELEMENT UML:UseCase (%UseCaseFeatures;)*>
+<!ATTLIST UML:UseCase
+	%UseCaseAtts; 
+>
+<!-- ========= UML:Actor ========= -->
+<!ENTITY % ActorFeatures '%ClassifierFeatures;'>
+<!ENTITY % ActorAtts '%ClassifierAtts;'>
+<!ELEMENT UML:Actor (%ActorFeatures;)*>
+<!ATTLIST UML:Actor
+	%ActorAtts; 
+>
+<!-- ========= UML:UseCaseInstance ========= -->
+<!ENTITY % UseCaseInstanceFeatures '%InstanceFeatures;'>
+<!ENTITY % UseCaseInstanceAtts '%InstanceAtts;'>
+<!ELEMENT UML:UseCaseInstance (%UseCaseInstanceFeatures;)*>
+<!ATTLIST UML:UseCaseInstance
+	%UseCaseInstanceAtts; 
+>
+<!-- ========= UML:Extend ========= -->
+<!ENTITY % ExtendFeatures '%DirectedRelationshipFeatures;'>
+<!ENTITY % ExtendAtts '%DirectedRelationshipAtts;
+   extensionLocation IDREFS #IMPLIED'>
+<!ELEMENT UML:Extend (%ExtendFeatures;)*>
+<!ATTLIST UML:Extend
+	%ExtendAtts; 
+>
+<!-- ========= UML:Include ========= -->
+<!ENTITY % IncludeFeatures '%DirectedRelationshipFeatures; '>
+<!ENTITY % IncludeAtts '%DirectedRelationshipAtts;'>
+<!ELEMENT UML:Include (%IncludeFeatures;)*>
+<!ATTLIST UML:Include
+	%IncludeAtts; 
+>
+<!-- ========= UML:ExtensionPoint ========= -->
+<!ENTITY % ExtensionPointFeatures '%FeatureFeatures;'>
+<!ENTITY % ExtensionPointAtts '%FeatureAtts;'>
+<!ELEMENT UML:ExtensionPoint (%ExtensionPointFeatures;)*>
+<!ATTLIST UML:ExtensionPoint
+	%ExtensionPointAtts; 
+>
+<!-- ========= UML:State_Machines ========= -->
+<!-- ========= UML:StateMachine ========= -->
+<!ELEMENT UML:StateMachine.conformance (UML:ProtocolConformance)*>
+<!ELEMENT UML:StateMachine.connectionPoint (UML:ConnectionPoint)*>
+<!ENTITY % StateMachineFeatures '%BehaviorFeatures; |
+	UML:StateMachine.conformance |
+   UML:StateMachine.connectionPoint'>
+<!ENTITY % StateMachineAtts '%BehaviorAtts;
+   submachineState IDREF #IMPLIED'>
+<!ELEMENT UML:StateMachine (%StateMachineFeatures;)*>
+<!ATTLIST UML:StateMachine
+	%StateMachineAtts; 
+>
+<!-- ========= UML:Interface ========= -->
+<!ELEMENT UML:Interface.ownedReception (UML:Reception)*>
+<!ELEMENT UML:Interface.protocolStateMachine (UML:StateMachine)?>
+<!ENTITY % InterfaceFeatures '%ClassifierFeatures; |
+	UML:Interface.ownedReception |
+	UML:Interface.protocolStateMachine '>
+<!ENTITY % InterfaceAtts '%ClassifierAtts;'>
+<!ELEMENT UML:Interface (%InterfaceFeatures;)*>
+<!ATTLIST UML:Interface
+	%InterfaceAtts; 
+>
+<!-- ========= UML:Implementation ========= -->
+<!ENTITY % ImplementationFeatures '%RealizationFeatures;'>
+<!ENTITY % ImplementationAtts '%RealizationAtts;'>
+<!ELEMENT UML:Implementation (%ImplementationFeatures;)*>
+<!ATTLIST UML:Implementation
+	%ImplementationAtts; 
+>
+<!-- ========= UML:ProtocolConformance ========= -->
+<!ENTITY % ProtocolConformanceFeatures '%RelationshipFeatures;'>
+<!ENTITY % ProtocolConformanceAtts '%RelationshipAtts;
+		generalMachine IDREF #IMPLIED'>
+<!ELEMENT UML:ProtocolConformance (%ProtocolConformanceFeatures;)*>
+<!ATTLIST UML:ProtocolConformance
+	%ProtocolConformanceAtts; 
+>
+<!-- ========= UML:Transition ========= -->
+<!ELEMENT UML:Transition.preCondition (UML:Constraint?)>
+<!ELEMENT UML:Transition.postCondition (UML:Constraint?)>
+<!ENTITY % TransitionFeatures '%NamedElementFeatures; |
+   UML:Transition.preCondition |
+   UML:Transition.postCondition'>
+<!ENTITY % TransitionAtts '%NamedElementAtts;
+	source IDREF #IMPLIED
+	target IDREF #IMPLIED
+   trigger IDREF #IMPLIED
+   referred IDREFS #IMPLIED
+   isInternal (true|false) #IMPLIED'>
+<!ELEMENT UML:Transition (%TransitionFeatures;)*>
+<!ATTLIST UML:Transition
+	%TransitionAtts; 
+>
+<!-- ========= UML:StateVertex ========= -->
+<!ENTITY % StateVertexFeatures '%NamedElementFeatures;'>
+<!ENTITY % StateVertexAtts '%NamedElementAtts;
+	outgoing IDREFS #IMPLIED
+	incoming IDREFS #IMPLIED'>
+<!ELEMENT UML:StateVertex (%StateVertexFeatures;)*>
+<!ATTLIST UML:StateVertex
+	%StateVertexAtts; 
+>
+<!-- ========= UML:Region ========= -->
+<!ENTITY % RegionFeatures '%NamedElementFeatures;'>
+<!ENTITY % RegionAtts '%NamedElementAtts;'>
+<!ELEMENT UML:Region (%RegionFeatures;)*>
+<!ATTLIST UML:Region
+	%RegionAtts; 
+>
+<!-- ========= UML:SubmachineState ========= -->
+<!ELEMENT UML:SubmachineState.pointUse (UML:ConnectionPoint)*>
+<!ENTITY % SubmachineStateFeatures '%StateVertexFeatures; |
+	UML:SubmachineState.pointUse'>
+<!ENTITY % SubmachineStateAtts '%StateVertexAtts;
+	submachine IDREF #IMPLIED'>
+<!ELEMENT UML:SubmachineState (%SubmachineStateFeatures;)*>
+<!ATTLIST UML:SubmachineState
+	%SubmachineStateAtts; 
+>
+<!-- ========= UML:ConnectionPoint ========= -->
+<!ENTITY % ConnectionPointFeatures '%StateVertexFeatures; '>
+<!ENTITY % ConnectionPointAtts '%StateVertexAtts;
+	entry IDREFS #IMPLIED
+	definition IDREF #IMPLIED'>
+<!ELEMENT UML:ConnectionPoint (%ConnectionPointFeatures;)*>
+<!ATTLIST UML:ConnectionPoint
+	%ConnectionPointAtts; 
+>
+<!-- ========= UML:Pseudostate ========= -->
+<!ENTITY % PseudoStateFeatures '%StateVertexFeatures; '>
+<!ENTITY % PseudoStateAtts '%StateVertexAtts;
+	kind %PseudostateKind; #IMPLIED'>
+<!ELEMENT UML:PseudoState (%PseudoStateFeatures;)*>
+<!ATTLIST UML:PseudoState
+	%PseudoStateAtts; 
+>
+<!-- ========= UML:StateGroup ========= -->
+<!ELEMENT UML:StateGroup.internalTransition (UML:Transition)*>
+<!ENTITY % StateGroupFeatures '%StateVertexFeatures; |
+	UML:StateGroup.internalTransition'>
+<!ENTITY % StateGroupAtts '%StateVertexAtts;
+	state IDREFS #IMPLIED'>
+<!ELEMENT UML:StateGroup (%StateGroupFeatures;)*>
+<!ATTLIST UML:StateGroup
+	%StateGroupAtts; 
+>
+<!-- ========= UML:Event ========= -->
+<!ELEMENT UML:Event.argument (UML:Argument)*>
+<!ENTITY % EventFeatures '%NamespaceFeatures; |
+   UML:Event.argument'>
+<!ENTITY % EventAtts '%NamespaceAtts;
+	sendMessage IDREF #IMPLIED
+	receiveMessage IDREF #IMPLIED
+	startAction IDREF #IMPLIED
+	endAction IDREF #IMPLIED
+	connection IDREF #IMPLIED'>
+<!ELEMENT UML:Event (%EventFeatures;)*>
+<!ATTLIST UML:Event
+	%EventAtts; 
+>
+<!-- ========= UML:State ========= -->
+<!ELEMENT UML:State.entry (UML:Procedure?)>
+<!ELEMENT UML:State.exit (UML:Procedure?)>
+<!ELEMENT UML:State.doActivity (UML:Procedure?)>
+<!ELEMENT UML:State.connection (UML:ConnectionPoint?)>
+<!ELEMENT UML:State.stateInvariant (UML:Constraint)*>
+<!ENTITY % StateFeatures '%StateVertexFeatures; |
+   UML:State.entry |
+   UML:State.exit |
+   UML:State.connection |
+   UML:State.stateInvariant |
+   UML:State.doActivity'>
+<!ENTITY % StateAtts '%StateVertexAtts;
+   deferrableEvent IDREFS #IMPLIED
+   isSubmachineState (true|false) #IMPLIED
+   isComposite (true|false) #IMPLIED
+   isOrthogonal (true|false) #IMPLIED
+   isSimple (true|false) #IMPLIED
+   submachine IDREF #IMPLIED'>
+<!ELEMENT UML:State (%StateFeatures;)*>
+<!ATTLIST UML:State
+	%StateAtts; 
+>
+<!-- ========= UML:FinalState ========= -->
+<!ENTITY % FinalStateFeatures '%StateFeatures;'>
+<!ENTITY % FinalStateAtts '%StateAtts;'>
+<!ELEMENT UML:FinalState (%FinalStateFeatures;)*>
+<!ATTLIST UML:FinalState
+	%FinalStateAtts; 
+>
+<!-- ========= UML:SimpleState ========= -->
+<!ENTITY % SimpleStateFeatures '%StateFeatures;'>
+<!ENTITY % SimpleStateAtts '%StateAtts;'>
+<!ELEMENT UML:SimpleState (%SimpleStateFeatures;)*>
+<!ATTLIST UML:SimpleState
+	%SimpleStateAtts; 
+>
+<!-- ========= UML:CompositeState ========= -->
+<!ELEMENT UML:CompositeState.subvertex (UML:StateGroup | UML:StateVertex | UML:State | UML:CompositeState | UML:SubmachineState | UML:SimpleState | UML:FinalState | UML:PseudoState | UML:SynchState | UML:StubState)*>
+<!ENTITY % CompositeStateFeatures '%StateFeatures; |
+   UML:CompositeState.subvertex'>
+<!ENTITY % CompositeStateAtts '%StateAtts;'>
+<!ELEMENT UML:CompositeState (%CompositeStateFeatures;)*>
+<!ATTLIST UML:CompositeState
+	%CompositeStateAtts; 
+>
+<!-- ========= UML:TimeEvent ========= -->
+<!ELEMENT UML:TimeEvent.when (UML:Expression)>
+<!ENTITY % TimeEventFeatures '%EventFeatures; |
+   UML:TimeEvent.when'>
+<!ENTITY % TimeEventAtts '%EventAtts;'>
+<!ELEMENT UML:TimeEvent (%TimeEventFeatures;)*>
+<!ATTLIST UML:TimeEvent
+	%TimeEventAtts; 
+>
+<!-- ========= UML:CallEvent ========= -->
+<!ENTITY % CallEventFeatures '%EventFeatures;'>
+<!ENTITY % CallEventAtts '%EventAtts;
+   operation IDREF #IMPLIED'>
+<!ELEMENT UML:CallEvent (%CallEventFeatures;)*>
+<!ATTLIST UML:CallEvent
+	%CallEventAtts; 
+>
+<!-- ========= UML:SignalEvent ========= -->
+<!ENTITY % SignalEventFeatures '%EventFeatures;'>
+<!ENTITY % SignalEventAtts '%EventAtts;
+   signal IDREF #IMPLIED'>
+<!ELEMENT UML:SignalEvent (%SignalEventFeatures;)*>
+<!ATTLIST UML:SignalEvent
+	%SignalEventAtts; 
+>
+<!-- ========= UML:ChangeEvent ========= -->
+<!ELEMENT UML:ChangeEvent.changeExpression (UML:Expression)>
+<!ENTITY % ChangeEventFeatures '%EventFeatures; |
+   UML:ChangeEvent.changeExpression'>
+<!ENTITY % ChangeEventAtts '%EventAtts;'>
+<!ELEMENT UML:ChangeEvent (%ChangeEventFeatures;)*>
+<!ATTLIST UML:ChangeEvent
+	%ChangeEventAtts; 
+>
+<!-- ========= UML:SynchState ========= -->
+<!ELEMENT UML:SynchState.bound (#PCDATA | XMI.reference)*>
+<!ENTITY % SynchStateFeatures '%StateVertexFeatures; |
+   UML:SynchState.bound'>
+<!ENTITY % SynchStateAtts '%StateVertexAtts;
+   bound CDATA #IMPLIED'>
+<!ELEMENT UML:SynchState (%SynchStateFeatures;)*>
+<!ATTLIST UML:SynchState
+	%SynchStateAtts; 
+>
+<!-- ========= UML:StubState ========= -->
+<!ELEMENT UML:StubState.referenceState (#PCDATA | XMI.reference)*>
+<!ENTITY % StubStateFeatures '%StateVertexFeatures; |
+   UML:StubState.referenceState'>
+<!ENTITY % StubStateAtts '%StateVertexAtts;
+   referenceState CDATA #IMPLIED'>
+<!ELEMENT UML:StubState (%StubStateFeatures;)*>
+<!ATTLIST UML:StubState
+	%StubStateAtts; 
+>
+<!-- ========= UML:Collaborations ========= -->
+<!-- ========= UML:Collaboration ========= -->
+<!ELEMENT UML:Collaboration.nestedClassifier (UML:Classifier)*>
+<!ELEMENT UML:Collaboration.constrainingElement (UML:NamedElement)*>
+<!ELEMENT UML:Collaboration.part (UML:Part)*>
+<!ELEMENT UML:Collaboration.connector (UML:Connector)*>
+<!ENTITY % CollaborationFeatures '%ClassifierFeatures; |
+	UML:Collaboration.nestedClassifier |
+	UML:Collaboration.constrainingElement |
+	UML:Collaboration.part |
+	UML:Collaboration.connector'>
+<!ENTITY % CollaborationAtts '%ClassifierAtts;'>
+<!ELEMENT UML:Collaboration (%CollaborationFeatures;)*>
+<!ATTLIST UML:Collaboration
+	%CollaborationAtts; 
+>
+<!-- ========= UML:CollaborationOccurrence ========= -->
+<!ELEMENT UML:CollaborationOccurrence.roleBinding (UML:RoleBinding)*>
+<!ENTITY % CollaborationOccurrenceFeatures '%TypedElementFeatures; |
+	UML:CollaborationOccurrence.roleBinding '>
+<!ENTITY % CollaborationOccurrenceAtts '%TypedElementAtts;'>
+<!ELEMENT UML:CollaborationOccurrence (%CollaborationFeatures;)*>
+<!ATTLIST UML:CollaborationOccurrence
+	%CollaborationOccurrenceAtts; 
+>
+<!-- ========= UML:Model_Management ========= -->
+<!-- ========= UML:Stereotype ========= -->
+<!ENTITY % StereotypeFeatures '%ClassFeatures;'>
+<!ENTITY % StereotypeAtts '%ClassAtts;
+   appliesTo CDATA #IMPLIED'>
+<!ELEMENT UML:Stereotype (%StereotypeFeatures;)*>
+<!ATTLIST UML:Stereotype
+	%StereotypeAtts; 
+>
+<!-- ========= UML:Package ========= -->
+<!ELEMENT UML:Package.elementImport (UML:ElementImport)*>
+<!ELEMENT UML:Package.packageImport (UML:PackageImport)*>
+<!ELEMENT UML:Package.packageExtension (UML:PackageExtension)*>
+<!ENTITY % PackageFeatures '%PackageableElementFeatures; |
+		UML:Package.elementImport |
+		UML:Package.packageImport |
+		UML:Package.packageExtension '>
+<!ENTITY % PackageAtts '%PackageableElementAtts;'>
+<!ELEMENT UML:Package (%PackageFeatures;)*>
+<!ATTLIST UML:Package
+	%PackageAtts; 
+>
+<!-- ========= UML:Profile ========= -->
+<!ENTITY % ProfileFeatures '%PackageFeatures; '>
+<!ENTITY % ProfileAtts '%PackageAtts;'>
+<!ELEMENT UML:Profile (%ProfileFeatures;)*>
+<!ATTLIST UML:Profile
+	%ProfileAtts; 
+>
+<!-- ========= UML:Model ========= -->
+<!ENTITY % ModelFeatures '%PackageFeatures;'>
+<!ENTITY % ModelAtts '%PackageAtts;'>
+<!ELEMENT UML:Model (%ModelFeatures;)*>
+<!ATTLIST UML:Model
+	%ModelAtts; 
+>
+<!-- ========= UML:ReferencedLibrary ========= -->
+<!ELEMENT UML:ReferencedLibrary ANY>
+<!ATTLIST UML:ReferencedLibrary
+	location CDATA #IMPLIED
+>
+<!-- ========= UML:Project ========= -->
+<!ELEMENT UML:Project.referencedLibraries (UML:ReferencedLibrary)*>
+<!ENTITY % ProjectFeatures '%ModelFeatures; |
+      UML:Project.referencedLibraries'>
+<!ENTITY % ProjectAtts '%ModelAtts;'>
+<!ELEMENT UML:Project (%ProjectFeatures;)*>
+<!ATTLIST UML:Project
+	%ProjectAtts; 
+>
+<!-- ========= UML:Increment ========= -->
+<!ENTITY % IncrementFeatures '%RelationshipFeatures;'>
+<!ENTITY % IncrementAtts '%RelationshipAtts;
+	partialClassifier IDREF #IMPLIED
+	otherPartialClassifier IDREF #IMPLIED'>
+<!ELEMENT UML:Increment (%IncrementFeatures;)*>
+<!ATTLIST UML:Increment
+	%IncrementAtts; 
+>
+<!-- ========= UML:UML ========= -->
diff --git a/jsf-demo/sandbox/scrumtoys2009/scrumtoys-uml/scrumtoys-uml/nbproject/private/private.properties b/jsf-demo/sandbox/scrumtoys2009/scrumtoys-uml/scrumtoys-uml/nbproject/private/private.properties
new file mode 100644
index 0000000..e47d03d
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/scrumtoys-uml/scrumtoys-uml/nbproject/private/private.properties
@@ -0,0 +1,43 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
+project.com_sun_faces_jsf-scrumtoys_war_0_1=/Users/edburns/Projects/JavaEE/workareas/mojarra-HEAD/jsf-demo/scrumtoys2009/eclipseProject
+project.dir=/jsfci1/edburns/workareas/mojarra-HEAD/jsf-demo/scrumtoys2009/eclipseProject
+user.properties.file=/Users/edburns/.netbeans/6.7beta/build.properties
diff --git a/jsf-demo/sandbox/scrumtoys2009/scrumtoys-uml/scrumtoys-uml/nbproject/project.properties b/jsf-demo/sandbox/scrumtoys2009/scrumtoys-uml/scrumtoys-uml/nbproject/project.properties
new file mode 100644
index 0000000..66c396a
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/scrumtoys-uml/scrumtoys-uml/nbproject/project.properties
@@ -0,0 +1,48 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
+code.gen.templates=Java:Basic Class|Java:Basic Interface|Java:Basic Enumeration
+uml.javaproject=${project.com_sun_faces_jsf-scrumtoys_war_0_1}
+uml.javaproject.artifacts=
+uml.javaproject.src=\
+    1SourceRoot\
+    2TestSourceRoot
+uml.modeling.mode=Implementation
+uml.umlproject=scrumtoys-uml
diff --git a/jsf-demo/sandbox/scrumtoys2009/scrumtoys-uml/scrumtoys-uml/nbproject/project.xml b/jsf-demo/sandbox/scrumtoys2009/scrumtoys-uml/scrumtoys-uml/nbproject/project.xml
new file mode 100644
index 0000000..12a7c8d
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/scrumtoys-uml/scrumtoys-uml/nbproject/project.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://www.netbeans.org/ns/project/1">
+    <type>com.sun.tools.ide.uml.project</type>
+    <configuration>
+        <data xmlns="http://www.sun.com/ns/uml-project/1">
+            <name>scrumtoys-uml</name>
+            <minimum-ant-version>1.6</minimum-ant-version>
+        </data>
+    </configuration>
+</project>
diff --git a/jsf-demo/sandbox/scrumtoys2009/scrumtoys-uml/scrumtoys-uml/scrumtoys-uml.etd b/jsf-demo/sandbox/scrumtoys2009/scrumtoys-uml/scrumtoys-uml/scrumtoys-uml.etd
new file mode 100644
index 0000000..458d774
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/scrumtoys-uml/scrumtoys-uml/scrumtoys-uml.etd
@@ -0,0 +1,737 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!-- <!DOCTYPE XMI SYSTEM "/home/edburns/.netbeans/6.7beta/.uml/config/UML_2.0EMBT.dtd"> --><XMI xmlns:UML="omg.org/UML/1.4" xmi.version="2.0"> <XMI.header> <XMI.metamodel xmi.name="UML" xmi.version="1.4"/> <XMI.documentation> <XMI.exporter> Embarcadero's Describe </XMI.exporter> <XMI.exporterVersion> 6.0 </XMI.exporterVersion> </XMI.documentation> </XMI.header> <XMI.content> <UML:Project xmi.id="DCE.B34873F7-C2FB-132E-C144-8BAE560D0FC4" mode="Implementation" defaultLanguage="Java" projV [...]
+<UML:Element.ownedElement><UML:Package name="jsf2" xmi.id="DCE.5E64AF1B-FE20-5DD5-E2F0-1C0A8F2C04A1">
+<UML:Element.ownedElement><UML:Class isAbstract="false" isLeaf="false" visibility="public" name="ScrumToysTest" xmi.id="DCE.52126F35-F6F5-D36A-B413-FB34855675BD" owner="DCE.5E64AF1B-FE20-5DD5-E2F0-1C0A8F2C04A1"><UML:Element.ownedElement><UML:SourceFileArtifact sourcefile="../../eclipseProject/src/test/java/jsf2/ScrumToysTest.java" xmi.id="DCE.007979CA-4C37-B6D1-F800-405147BD0A91" owner="DCE.52126F35-F6F5-D36A-B413-FB34855675BD"/><UML:Operation visibility="public" isLeaf="false" ownerScop [...]
+</UML:Class><UML:Package name="demo" xmi.id="DCE.C4647F50-D87B-330A-3E4A-AC509B2F91E1" owner="DCE.5E64AF1B-FE20-5DD5-E2F0-1C0A8F2C04A1">
+<UML:Element.ownedElement><UML:Package name="scrum" xmi.id="DCE.5F0C8F81-38C1-FC20-A832-D653CF869F0D" owner="DCE.C4647F50-D87B-330A-3E4A-AC509B2F91E1">
+<UML:Element.ownedElement><UML:Package name="web" xmi.id="DCE.D6BA0969-390A-EC19-237F-B1FDF79872EC" owner="DCE.5F0C8F81-38C1-FC20-A832-D653CF869F0D">
+<UML:Element.ownedElement><UML:Package name="controller" xmi.id="DCE.3CA3D715-857D-D50E-B2B6-501927866220" owner="DCE.D6BA0969-390A-EC19-237F-B1FDF79872EC">
+<UML:Element.ownedElement><UML:Class isAbstract="true" isLeaf="false" visibility="public" name="AbstractManager" xmi.id="DCE.387BDA4D-C4FA-0B52-AA3F-8EAF549D3587" owner="DCE.3CA3D715-857D-D50E-B2B6-501927866220" specialization="DCE.2DAF3AA8-04E3-9571-67CD-16C0B2937C5E DCE.4C482FE1-AD67-00B0-1DF7-2362ECA11FC6 DCE.6F8EE309-F1BA-6218-450E-2948B3FA44AF DCE.9EB31DC6-94F3-8286-AFF8-9308FBE69339 DCE.BD8BA4DF-76E1-2412-A3B6-BE5B32200D67 DCE.473CCF71-E873-CB8B-9F88-E1C13FB48B20"><UML:Element.owne [...]
+<UML:TaggedValue.dataValue>  @author Dr. Spock (spock at dev.java.net)
+ </UML:TaggedValue.dataValue></UML:TaggedValue><UML:Attribute visibility="private" isLeaf="false" ownerScope="instance" type="DCE.CF4EBBD6-F888-7D0B-9887-3E30E43DBEE3" AssociationType="Aggregation" name="entityManager" xmi.id="DCE.CE191A53-C080-4A54-4D79-0A992F75F509" owner="DCE.387BDA4D-C4FA-0B52-AA3F-8EAF549D3587"/><UML:Attribute visibility="private" isLeaf="false" ownerScope="instance" type="DCE.2E43BD43-FB4D-67A3-E563-AD8D028D672D" AssociationType="Aggregation" name="userTransaction" [...]
+</UML:Interface><UML:Interface visibility="protected" isStatic="true" name="PersistenceActionWithoutResult" owner="DCE.387BDA4D-C4FA-0B52-AA3F-8EAF549D3587" xmi.id="DCE.EC68E2D0-0C80-8B36-0141-A2A1E4BC567A" appliedStereotype="__uri_./scrumtoys-uml.etup#//*[@xmi.id="DCE.954FC8DE-D352-2F8D-DD69-B2EF43E3CD26"]"><UML:Element.ownedElement><UML:SourceFileArtifact sourcefile="../../eclipseProject/src/main/java/jsf2/demo/scrum/web/controller/AbstractManager.java" xmi.id="DCE.C96DA704-D [...]
+</UML:Interface><UML:Operation visibility="protected" isLeaf="false" ownerScope="instance" isAbstract="false" name="addMessage" xmi.id="DCE.874FC2A1-A461-713A-44E6-C44A548FA107" owner="DCE.387BDA4D-C4FA-0B52-AA3F-8EAF549D3587"><UML:Element.ownedElement><UML:Parameter visibility="package" direction="result" isQuery="false" type="DCE.DA27BA19-CDDD-B3CC-A2FA-0DEBD1FCF18D" xmi.id="DCE.20812BC7-9888-ED20-59E6-4C079D674B77" owner="DCE.874FC2A1-A461-713A-44E6-C44A548FA107"/><UML:Parameter visib [...]
+</UML:Class><UML:Class isAbstract="false" isLeaf="false" visibility="public" name="TaskManager" xmi.id="DCE.41090B11-E60B-CE83-DF22-71727F90F87A" owner="DCE.3CA3D715-857D-D50E-B2B6-501927866220" associationEnd="DCE.4EF28701-E441-83AF-46B4-F6FCEEF6ADFF DCE.19CEE0B8-026B-9739-4EFB-76246F8526A9 DCE.2461923A-A978-36D5-5DE5-FB352B933F07 DCE.86A54C26-5995-00D3-C51B-7A5C4FC437A3" clientDependency="DCE.7FE11305-9F48-7FC8-D062-634D8DC864B1"><UML:Element.ownedElement><UML:SourceFileArtifact source [...]
+</UML:Attribute><UML:Attribute visibility="private" isLeaf="false" ownerScope="instance" type="Story" AssociationType="Aggregation" name="story"/><UML:Attribute visibility="private" isLeaf="false" ownerScope="instance" type="DCE.28D91B82-9873-4BAD-B1BE-117AA8A44400" AssociationType="Aggregation" name="storyChangeListener" xmi.id="DCE.333425BB-81F3-A582-1235-1AA9F0F5472E" owner="DCE.41090B11-E60B-CE83-DF22-71727F90F87A"/><UML:Operation visibility="public" isLeaf="false" ownerScope="instan [...]
+<UML:Implementation xmi.id="DCE.CF805039-ECDA-98F6-32C7-6A4741000CEA" owner="DCE.CCB28EC9-028A-904F-4948-00DA7BBEFEAE" client="DCE.CCB28EC9-028A-904F-4948-00DA7BBEFEAE" supplier="DCE.28D91B82-9873-4BAD-B1BE-117AA8A44400"/>
+<UML:Implementation xmi.id="DCE.259FE7D9-C58F-53BA-6B41-BED7F97B54B2" owner="DCE.CCB28EC9-028A-904F-4948-00DA7BBEFEAE" client="DCE.CCB28EC9-028A-904F-4948-00DA7BBEFEAE" supplier="DCE.45ACF2D1-4D97-64BC-1200-E4F3C2503510"/></UML:Element.ownedElement>
+</UML:Class>
+<UML:Implementation xmi.id="DCE.7FE11305-9F48-7FC8-D062-634D8DC864B1" owner="DCE.41090B11-E60B-CE83-DF22-71727F90F87A" client="DCE.41090B11-E60B-CE83-DF22-71727F90F87A" supplier="DCE.45ACF2D1-4D97-64BC-1200-E4F3C2503510"/></UML:Element.ownedElement>
+<UML:Classifier.generalization>
+<UML:Generalization xmi.id="DCE.4C482FE1-AD67-00B0-1DF7-2362ECA11FC6" specific="DCE.41090B11-E60B-CE83-DF22-71727F90F87A" general="DCE.387BDA4D-C4FA-0B52-AA3F-8EAF549D3587"/></UML:Classifier.generalization></UML:Class><UML:Class isAbstract="false" isLeaf="false" visibility="public" name="StoryManager" xmi.id="DCE.B849A7F2-C5B4-7551-D9C4-A6D6D6A7DF23" owner="DCE.3CA3D715-857D-D50E-B2B6-501927866220" associationEnd="DCE.66C2C302-6D10-FDC5-25E9-D657F3976574 DCE.737F48A1-0203-1AE0-2066-BACAE [...]
+</UML:Attribute><UML:Attribute visibility="private" isLeaf="false" ownerScope="instance" type="Sprint" AssociationType="Aggregation" name="sprint"/><UML:Attribute visibility="private" isLeaf="false" ownerScope="instance" type="DCE.28D91B82-9873-4BAD-B1BE-117AA8A44400" AssociationType="Aggregation" name="sprintChangeListener" xmi.id="DCE.FCB21C60-32EE-2C7A-1BA7-DE1B6D024AB2" owner="DCE.B849A7F2-C5B4-7551-D9C4-A6D6D6A7DF23"/><UML:Operation visibility="public" isLeaf="false" ownerScope="ins [...]
+<UML:Implementation xmi.id="DCE.75AD34AE-2C7F-83BF-DC9C-1087EAEA3A94" owner="DCE.8A10FF49-5652-8B4B-3EDD-8CB9C02E3457" client="DCE.8A10FF49-5652-8B4B-3EDD-8CB9C02E3457" supplier="DCE.28D91B82-9873-4BAD-B1BE-117AA8A44400"/>
+<UML:Implementation xmi.id="DCE.2576F9C1-83FF-8463-45C4-A101F352AD77" owner="DCE.8A10FF49-5652-8B4B-3EDD-8CB9C02E3457" client="DCE.8A10FF49-5652-8B4B-3EDD-8CB9C02E3457" supplier="DCE.45ACF2D1-4D97-64BC-1200-E4F3C2503510"/></UML:Element.ownedElement>
+</UML:Class>
+<UML:Implementation xmi.id="DCE.EF683B5F-6CE4-9D46-ADF9-90AC30BC41D5" owner="DCE.B849A7F2-C5B4-7551-D9C4-A6D6D6A7DF23" client="DCE.B849A7F2-C5B4-7551-D9C4-A6D6D6A7DF23" supplier="DCE.45ACF2D1-4D97-64BC-1200-E4F3C2503510"/></UML:Element.ownedElement>
+<UML:Classifier.generalization>
+<UML:Generalization xmi.id="DCE.2DAF3AA8-04E3-9571-67CD-16C0B2937C5E" specific="DCE.B849A7F2-C5B4-7551-D9C4-A6D6D6A7DF23" general="DCE.387BDA4D-C4FA-0B52-AA3F-8EAF549D3587"/></UML:Classifier.generalization></UML:Class><UML:Class isAbstract="false" isLeaf="false" visibility="public" name="SprintManager" xmi.id="DCE.530D52C9-E95E-5095-4A03-7BB62270C9A1" owner="DCE.3CA3D715-857D-D50E-B2B6-501927866220" associationEnd="DCE.D9739D80-0FAD-DB77-52B6-7269A26FE923 DCE.5F0A103A-3DF4-1CF9-97BE-4AF4 [...]
+</UML:Attribute><UML:Attribute visibility="private" isLeaf="false" ownerScope="instance" type="Project" AssociationType="Aggregation" name="project"/><UML:Attribute visibility="private" isLeaf="false" ownerScope="instance" type="DCE.28D91B82-9873-4BAD-B1BE-117AA8A44400" AssociationType="Aggregation" name="projectChangeListener" xmi.id="DCE.EACF4B13-5098-1A64-7AD1-EC79A45E2072" owner="DCE.530D52C9-E95E-5095-4A03-7BB62270C9A1"/><UML:Operation visibility="public" isLeaf="false" ownerScope=" [...]
+<UML:TaggedValue.dataValue>This method can be pointed to by a validator methodExpression, such as:
+     
+     <h:inputText id="itName" value="#{sprintManager.currentSprint.name}" required="true"
+       requiredMessage="#{i18n['sprint.form.label.name.required']}" maxLength="30" size="30"
+       validator="#{sprintManager.checkUniqueSprintName}" />
+     </UML:TaggedValue.dataValue></UML:TaggedValue><UML:Parameter visibility="package" direction="result" isQuery="false" type="DCE.DA27BA19-CDDD-B3CC-A2FA-0DEBD1FCF18D" xmi.id="DCE.924526B9-0392-6D18-3AFD-370885B97288" owner="DCE.53C5DDFD-68FF-10B5-1D16-64BFF56063EF"/><UML:Parameter visibility="package" isQuery="false" type="DCE.C740FFE8-E2A4-BECB-D4DC-345AF2DA19CC" name="context" xmi.id="DCE.3D36E258-8BC2-86F8-F169-C27CEA7AD3F0" owner="DCE.53C5DDFD-68FF-10B5-1D16-64BFF56063EF"/><UML:Pa [...]
+<UML:TaggedValue.dataValue>This method is called by the JSR-303 SprintNameUniquenessConstraintValidator.
+     If it returns non-null, the result must be interpreted as the localized
+     validation message.
+     
+     </UML:TaggedValue.dataValue></UML:TaggedValue><UML:Parameter visibility="package" direction="result" isQuery="false" type="DCE.B0F4883D-A9A7-F729-B7D1-1DD00CABE13C" xmi.id="DCE.FC611C10-40D8-15FF-B302-58150D331394" owner="DCE.F2D058E3-60B4-FBCD-EDE9-8036F29435FC"/><UML:Parameter visibility="package" isQuery="false" type="DCE.B0F4883D-A9A7-F729-B7D1-1DD00CABE13C" name="newValue" xmi.id="DCE.4A9696AC-BD9B-0A73-03C5-B921BF44A86A" owner="DCE.F2D058E3-60B4-FBCD-EDE9-8036F29435FC"/></UML: [...]
+<UML:Implementation xmi.id="DCE.7117C026-2B3D-077E-C15D-2DCA4913D85E" owner="DCE.71FA74E4-0E61-7B84-4C4B-A1D612666AB5" client="DCE.71FA74E4-0E61-7B84-4C4B-A1D612666AB5" supplier="DCE.28D91B82-9873-4BAD-B1BE-117AA8A44400"/>
+<UML:Implementation xmi.id="DCE.005D317D-612E-4C87-61AE-828D818014C8" owner="DCE.71FA74E4-0E61-7B84-4C4B-A1D612666AB5" client="DCE.71FA74E4-0E61-7B84-4C4B-A1D612666AB5" supplier="DCE.45ACF2D1-4D97-64BC-1200-E4F3C2503510"/></UML:Element.ownedElement>
+</UML:Class>
+<UML:Implementation xmi.id="DCE.5025082B-2F49-2388-3840-4AA548FB0731" owner="DCE.530D52C9-E95E-5095-4A03-7BB62270C9A1" client="DCE.530D52C9-E95E-5095-4A03-7BB62270C9A1" supplier="DCE.45ACF2D1-4D97-64BC-1200-E4F3C2503510"/></UML:Element.ownedElement>
+<UML:Classifier.generalization>
+<UML:Generalization xmi.id="DCE.9EB31DC6-94F3-8286-AFF8-9308FBE69339" specific="DCE.530D52C9-E95E-5095-4A03-7BB62270C9A1" general="DCE.387BDA4D-C4FA-0B52-AA3F-8EAF549D3587"/></UML:Classifier.generalization></UML:Class><UML:Class isAbstract="false" isLeaf="false" visibility="public" name="ManagerException" xmi.id="DCE.B65F6982-ADC5-241B-D306-0D24120F6A91" owner="DCE.3CA3D715-857D-D50E-B2B6-501927866220"><UML:Element.ownedElement><UML:SourceFileArtifact sourcefile="../../eclipseProject/src [...]
+<UML:TaggedValue.dataValue>  @author Dr. Spock (spock at dev.java.net)
+ </UML:TaggedValue.dataValue></UML:TaggedValue><UML:Attribute visibility="private" isLeaf="false" ownerScope="instance" isStatic="true" isFinal="true" type="DCE.6F8A25EE-54E1-E321-4741-4316637171A3" name="serialVersionUID" xmi.id="DCE.E6FA3592-0791-1720-6515-E62AA0318B8D" owner="DCE.B65F6982-ADC5-241B-D306-0D24120F6A91"><UML:Attribute.default><UML:Expression xmi.id="DCE.AEE8ADC3-CB48-B837-A174-93F186493314"><UML:Expression.body>1L</UML:Expression.body></UML:Expression></UML:Attribute.def [...]
+<UML:Generalization xmi.id="DCE.D23EA14B-FFF7-0277-B782-C26B51385CC3" specific="DCE.B65F6982-ADC5-241B-D306-0D24120F6A91" general="DCE.638967B1-8A9F-DA4D-730D-639FF81F2D57"/></UML:Classifier.generalization></UML:Class><UML:Class isAbstract="false" isLeaf="false" visibility="public" name="DashboardManager" xmi.id="DCE.59752D6E-176C-87E9-AD6F-F14CB878B722" owner="DCE.3CA3D715-857D-D50E-B2B6-501927866220" associationEnd="DCE.086E0D72-ACD5-F01D-36B9-AEBE75F28D6A DCE.A601BEF0-0A68-C053-2B1C-3 [...]
+</UML:Attribute><UML:Attribute visibility="private" isLeaf="false" ownerScope="instance" type="Sprint" AssociationType="Aggregation" name="sprint"/><UML:Attribute visibility="private" isLeaf="false" ownerScope="instance" type="SystemEventListener" AssociationType="Aggregation" name="sprintChangeListener"/><UML:Operation visibility="public" isLeaf="false" ownerScope="instance" isAbstract="false" name="construct" xmi.id="DCE.D870CD67-F34F-2DF4-92E6-B5D768DEB260" owner="DCE.59752D6E-176C-87 [...]
+<UML:Implementation xmi.id="DCE.1A8A15A8-FEAB-7F4F-AE82-C5724255A801" owner="DCE.3F6862BB-10C9-EC25-B0C8-899F1C53465C" client="DCE.3F6862BB-10C9-EC25-B0C8-899F1C53465C" supplier="DCE.28D91B82-9873-4BAD-B1BE-117AA8A44400"/>
+<UML:Implementation xmi.id="DCE.0039FCCB-A55C-9DC4-536A-4EC8A142D0F8" owner="DCE.3F6862BB-10C9-EC25-B0C8-899F1C53465C" client="DCE.3F6862BB-10C9-EC25-B0C8-899F1C53465C" supplier="DCE.45ACF2D1-4D97-64BC-1200-E4F3C2503510"/></UML:Element.ownedElement>
+</UML:Class>
+<UML:Implementation xmi.id="DCE.7CC0F3C7-5891-1704-36B8-28DFDB158022" owner="DCE.59752D6E-176C-87E9-AD6F-F14CB878B722" client="DCE.59752D6E-176C-87E9-AD6F-F14CB878B722" supplier="DCE.45ACF2D1-4D97-64BC-1200-E4F3C2503510"/></UML:Element.ownedElement>
+<UML:Classifier.generalization>
+<UML:Generalization xmi.id="DCE.BD8BA4DF-76E1-2412-A3B6-BE5B32200D67" specific="DCE.59752D6E-176C-87E9-AD6F-F14CB878B722" general="DCE.387BDA4D-C4FA-0B52-AA3F-8EAF549D3587"/></UML:Classifier.generalization></UML:Class><UML:Class isAbstract="false" isLeaf="false" visibility="public" name="ProjectManager" xmi.id="DCE.8DD9C492-5E6C-FD02-3E11-2983B059CC19" owner="DCE.3CA3D715-857D-D50E-B2B6-501927866220" associationEnd="DCE.DFB59801-BA96-0496-06CF-2679FEA4FD1B DCE.484213C3-0F9C-5AE0-48C7-7E9 [...]
+<UML:TypedElement.multiplicity>
+<UML:Multiplicity xmi.id="DCE.C2CEF73A-0A87-7938-6E54-3FA2D9D77109">
+<UML:Multiplicity.range><UML:MultiplicityRange lower="0" upper="*" collectionType="List" xmi.id="DCE.0D4F3B93-BCFC-A326-D1D8-8074E77863D9"/></UML:Multiplicity.range></UML:Multiplicity></UML:TypedElement.multiplicity></UML:Attribute><UML:Attribute visibility="private" isLeaf="false" ownerScope="instance" type="Project" name="projectList">
+</UML:Attribute><UML:Operation visibility="public" isLeaf="false" ownerScope="instance" isAbstract="false" name="construct" xmi.id="DCE.43B35508-40CA-B581-49D6-399BAB3C0518" owner="DCE.8DD9C492-5E6C-FD02-3E11-2983B059CC19"><UML:Element.ownedElement><UML:Parameter visibility="package" direction="result" isQuery="false" type="DCE.DA27BA19-CDDD-B3CC-A2FA-0DEBD1FCF18D" xmi.id="DCE.C1693D9A-1530-D1B5-95B2-2CAD1B735E06" owner="DCE.43B35508-40CA-B581-49D6-399BAB3C0518"/></UML:Element.ownedEleme [...]
+<UML:TypedElement.multiplicity>
+<UML:Multiplicity xmi.id="DCE.9F0D348A-6EFB-BD42-64A6-F6F4B8C093E0">
+<UML:Multiplicity.range><UML:MultiplicityRange lower="0" upper="*" collectionType="List" xmi.id="DCE.C52D68F9-33C7-2B27-2FBC-3456ED3FC27A"/></UML:Multiplicity.range></UML:Multiplicity></UML:TypedElement.multiplicity></UML:Parameter></UML:Element.ownedElement></UML:Operation><UML:Operation visibility="public" isLeaf="false" ownerScope="instance" isAbstract="false" name="setProjectItems" xmi.id="DCE.5888E469-4131-B569-D12A-B07A5407A8AC" owner="DCE.8DD9C492-5E6C-FD02-3E11-2983B059CC19"><UML [...]
+<UML:TypedElement.multiplicity>
+<UML:Multiplicity xmi.id="DCE.3BCF8819-5AD7-5F74-8B1B-B4A9EF4F2990">
+<UML:Multiplicity.range><UML:MultiplicityRange lower="0" upper="*" collectionType="List" xmi.id="DCE.EE9CDC90-5046-FD57-507C-FA18438A0C5F"/></UML:Multiplicity.range></UML:Multiplicity></UML:TypedElement.multiplicity></UML:Parameter></UML:Element.ownedElement></UML:Operation>
+<UML:Implementation xmi.id="DCE.78869739-346D-7C34-AA93-D494DEF42A91" owner="DCE.8DD9C492-5E6C-FD02-3E11-2983B059CC19" client="DCE.8DD9C492-5E6C-FD02-3E11-2983B059CC19" supplier="DCE.45ACF2D1-4D97-64BC-1200-E4F3C2503510"/></UML:Element.ownedElement>
+<UML:Classifier.generalization>
+<UML:Generalization xmi.id="DCE.473CCF71-E873-CB8B-9F88-E1C13FB48B20" specific="DCE.8DD9C492-5E6C-FD02-3E11-2983B059CC19" general="DCE.387BDA4D-C4FA-0B52-AA3F-8EAF549D3587"/></UML:Classifier.generalization></UML:Class><UML:Class isAbstract="false" isLeaf="false" visibility="public" name="SkinManager" xmi.id="DCE.808C84B7-D9CB-EA75-D409-4D17418211F0" owner="DCE.3CA3D715-857D-D50E-B2B6-501927866220" clientDependency="DCE.6E273712-AE70-5695-C024-DC2F9D079899"><UML:Element.ownedElement><UML: [...]
+<UML:Implementation xmi.id="DCE.6E273712-AE70-5695-C024-DC2F9D079899" owner="DCE.808C84B7-D9CB-EA75-D409-4D17418211F0" client="DCE.808C84B7-D9CB-EA75-D409-4D17418211F0" supplier="DCE.45ACF2D1-4D97-64BC-1200-E4F3C2503510"/></UML:Element.ownedElement>
+<UML:Classifier.generalization>
+<UML:Generalization xmi.id="DCE.6F8EE309-F1BA-6218-450E-2948B3FA44AF" specific="DCE.808C84B7-D9CB-EA75-D409-4D17418211F0" general="DCE.387BDA4D-C4FA-0B52-AA3F-8EAF549D3587"/></UML:Classifier.generalization></UML:Class>
+<UML:Aggregation xmi.id="DCE.D2C666A3-ECA4-96C2-9AED-C83C88196EFB" owner="DCE.3CA3D715-857D-D50E-B2B6-501927866220" aggregateEnd="DCE.66C2C302-6D10-FDC5-25E9-D657F3976574" partEnd="DCE.91E09B92-3E37-87BA-AB11-E3098C27043B"><UML:Association.end>
+<UML:AssociationEnd xmi.id="DCE.66C2C302-6D10-FDC5-25E9-D657F3976574" visibility="private" type="DCE.B849A7F2-C5B4-7551-D9C4-A6D6D6A7DF23" association="DCE.D2C666A3-ECA4-96C2-9AED-C83C88196EFB"/>
+<UML:NavigableEnd xmi.id="DCE.91E09B92-3E37-87BA-AB11-E3098C27043B" visibility="private" type="DCE.1B25B69B-B014-F654-2E5A-9547722C2FE2" association="DCE.D2C666A3-ECA4-96C2-9AED-C83C88196EFB" name="currentStory"/></UML:Association.end></UML:Aggregation>
+<UML:Aggregation xmi.id="DCE.9398E256-324F-6580-8F01-A67B9D7CE553" owner="DCE.3CA3D715-857D-D50E-B2B6-501927866220" aggregateEnd="DCE.737F48A1-0203-1AE0-2066-BACAE81CEFEA" partEnd="DCE.918E945A-37E0-4FCD-DFB8-47563F104C5E"><UML:Association.end>
+<UML:AssociationEnd xmi.id="DCE.737F48A1-0203-1AE0-2066-BACAE81CEFEA" visibility="private" type="DCE.B849A7F2-C5B4-7551-D9C4-A6D6D6A7DF23" association="DCE.9398E256-324F-6580-8F01-A67B9D7CE553"/>
+<UML:NavigableEnd xmi.id="DCE.918E945A-37E0-4FCD-DFB8-47563F104C5E" visibility="private" type="DCE.7D3FBB62-03BC-C4B8-B243-20E4F639C059" association="DCE.9398E256-324F-6580-8F01-A67B9D7CE553" name="stories"/></UML:Association.end></UML:Aggregation>
+<UML:Aggregation xmi.id="DCE.4F4423FD-B990-20EE-EDEC-DC8C1E738857" owner="DCE.3CA3D715-857D-D50E-B2B6-501927866220" aggregateEnd="DCE.890E4A82-DDAC-627A-2327-E087EA54EA54" partEnd="DCE.9908750B-2909-1590-8235-C6FCE440B4BD"><UML:Association.end>
+<UML:AssociationEnd xmi.id="DCE.890E4A82-DDAC-627A-2327-E087EA54EA54" visibility="private" type="DCE.B849A7F2-C5B4-7551-D9C4-A6D6D6A7DF23" association="DCE.4F4423FD-B990-20EE-EDEC-DC8C1E738857"/>
+<UML:NavigableEnd xmi.id="DCE.9908750B-2909-1590-8235-C6FCE440B4BD" visibility="private" type="DCE.1B25B69B-B014-F654-2E5A-9547722C2FE2" association="DCE.4F4423FD-B990-20EE-EDEC-DC8C1E738857" name="storyList"><UML:TypedElement.multiplicity>
+<UML:Multiplicity xmi.id="DCE.F2180C60-997F-FE40-278E-2DE7135B7ACD">
+<UML:Multiplicity.range><UML:MultiplicityRange lower="0" upper="*" collectionType="List" xmi.id="DCE.5A26F1F9-505D-98E6-7CE3-8D07783EB5FA"/></UML:Multiplicity.range></UML:Multiplicity></UML:TypedElement.multiplicity></UML:NavigableEnd></UML:Association.end></UML:Aggregation>
+<UML:Aggregation xmi.id="DCE.6BCD7B24-208C-501C-804E-434C20A6DF5B" owner="DCE.3CA3D715-857D-D50E-B2B6-501927866220" aggregateEnd="DCE.1B9A3014-42BA-7993-713E-367FA543084B" partEnd="DCE.88189B29-36CB-BD7F-789B-5DCE10401537"><UML:Association.end>
+<UML:AssociationEnd xmi.id="DCE.1B9A3014-42BA-7993-713E-367FA543084B" visibility="private" type="DCE.B849A7F2-C5B4-7551-D9C4-A6D6D6A7DF23" association="DCE.6BCD7B24-208C-501C-804E-434C20A6DF5B"/>
+<UML:NavigableEnd xmi.id="DCE.88189B29-36CB-BD7F-789B-5DCE10401537" visibility="private" type="DCE.B49486EB-16C8-2B60-D4E7-2D2C2B93146F" association="DCE.6BCD7B24-208C-501C-804E-434C20A6DF5B" name="sprint"/></UML:Association.end></UML:Aggregation>
+<UML:Aggregation xmi.id="DCE.2519F26B-97EB-2093-6BA1-01EBEC6E3BEF" owner="DCE.3CA3D715-857D-D50E-B2B6-501927866220" aggregateEnd="DCE.4EF28701-E441-83AF-46B4-F6FCEEF6ADFF" partEnd="DCE.418043DA-C2B4-24CF-3E6A-1E45289BBC72"><UML:Association.end>
+<UML:AssociationEnd xmi.id="DCE.4EF28701-E441-83AF-46B4-F6FCEEF6ADFF" visibility="private" type="DCE.41090B11-E60B-CE83-DF22-71727F90F87A" association="DCE.2519F26B-97EB-2093-6BA1-01EBEC6E3BEF"/>
+<UML:NavigableEnd xmi.id="DCE.418043DA-C2B4-24CF-3E6A-1E45289BBC72" visibility="private" type="DCE.BEEF085E-69AA-FA1D-926D-DA8FF9E27BF8" association="DCE.2519F26B-97EB-2093-6BA1-01EBEC6E3BEF" name="currentTask"/></UML:Association.end></UML:Aggregation>
+<UML:Aggregation xmi.id="DCE.A2FF5D1B-722E-E983-CEC6-58CD8301000E" owner="DCE.3CA3D715-857D-D50E-B2B6-501927866220" aggregateEnd="DCE.19CEE0B8-026B-9739-4EFB-76246F8526A9" partEnd="DCE.27088ED7-41D2-3CD7-CDCC-837A8D286193"><UML:Association.end>
+<UML:AssociationEnd xmi.id="DCE.19CEE0B8-026B-9739-4EFB-76246F8526A9" visibility="private" type="DCE.41090B11-E60B-CE83-DF22-71727F90F87A" association="DCE.A2FF5D1B-722E-E983-CEC6-58CD8301000E"/>
+<UML:NavigableEnd xmi.id="DCE.27088ED7-41D2-3CD7-CDCC-837A8D286193" visibility="private" type="DCE.C9446A74-CED5-6029-D2E9-331D161F25D5" association="DCE.A2FF5D1B-722E-E983-CEC6-58CD8301000E" name="tasks"/></UML:Association.end></UML:Aggregation>
+<UML:Aggregation xmi.id="DCE.57A32885-F143-8A83-8E2F-686CC08638B0" owner="DCE.3CA3D715-857D-D50E-B2B6-501927866220" aggregateEnd="DCE.2461923A-A978-36D5-5DE5-FB352B933F07" partEnd="DCE.56750914-B297-04B9-B5EF-B894C578E5BA"><UML:Association.end>
+<UML:AssociationEnd xmi.id="DCE.2461923A-A978-36D5-5DE5-FB352B933F07" visibility="private" type="DCE.41090B11-E60B-CE83-DF22-71727F90F87A" association="DCE.57A32885-F143-8A83-8E2F-686CC08638B0"/>
+<UML:NavigableEnd xmi.id="DCE.56750914-B297-04B9-B5EF-B894C578E5BA" visibility="private" type="DCE.BEEF085E-69AA-FA1D-926D-DA8FF9E27BF8" association="DCE.57A32885-F143-8A83-8E2F-686CC08638B0" name="taskList"><UML:TypedElement.multiplicity>
+<UML:Multiplicity xmi.id="DCE.752DA1F3-B4CF-1832-6A99-BB207E55DB5E">
+<UML:Multiplicity.range><UML:MultiplicityRange lower="0" upper="*" collectionType="List" xmi.id="DCE.7F569D78-6C02-4586-88DA-B0AA425E5C49"/></UML:Multiplicity.range></UML:Multiplicity></UML:TypedElement.multiplicity></UML:NavigableEnd></UML:Association.end></UML:Aggregation>
+<UML:Aggregation xmi.id="DCE.E29BD5EB-9621-F15F-7218-F09A75F015AF" owner="DCE.3CA3D715-857D-D50E-B2B6-501927866220" aggregateEnd="DCE.86A54C26-5995-00D3-C51B-7A5C4FC437A3" partEnd="DCE.826DCFBF-736A-0F41-D537-DA0CBA99ECE8"><UML:Association.end>
+<UML:AssociationEnd xmi.id="DCE.86A54C26-5995-00D3-C51B-7A5C4FC437A3" visibility="private" type="DCE.41090B11-E60B-CE83-DF22-71727F90F87A" association="DCE.E29BD5EB-9621-F15F-7218-F09A75F015AF"/>
+<UML:NavigableEnd xmi.id="DCE.826DCFBF-736A-0F41-D537-DA0CBA99ECE8" visibility="private" type="DCE.1B25B69B-B014-F654-2E5A-9547722C2FE2" association="DCE.E29BD5EB-9621-F15F-7218-F09A75F015AF" name="story"/></UML:Association.end></UML:Aggregation>
+<UML:Aggregation xmi.id="DCE.CA0E9E75-B3A7-ACC8-DC64-DCF3D5F2B47F" owner="DCE.3CA3D715-857D-D50E-B2B6-501927866220" aggregateEnd="DCE.D9739D80-0FAD-DB77-52B6-7269A26FE923" partEnd="DCE.B85D660C-0068-5F4A-ED93-CF3699D5B2C1"><UML:Association.end>
+<UML:AssociationEnd xmi.id="DCE.D9739D80-0FAD-DB77-52B6-7269A26FE923" visibility="private" type="DCE.530D52C9-E95E-5095-4A03-7BB62270C9A1" association="DCE.CA0E9E75-B3A7-ACC8-DC64-DCF3D5F2B47F"/>
+<UML:NavigableEnd xmi.id="DCE.B85D660C-0068-5F4A-ED93-CF3699D5B2C1" visibility="private" type="DCE.B49486EB-16C8-2B60-D4E7-2D2C2B93146F" association="DCE.CA0E9E75-B3A7-ACC8-DC64-DCF3D5F2B47F" name="currentSprint"/></UML:Association.end></UML:Aggregation>
+<UML:Aggregation xmi.id="DCE.907D5D2A-775E-9725-8D06-E72F8D38CD3E" owner="DCE.3CA3D715-857D-D50E-B2B6-501927866220" aggregateEnd="DCE.5F0A103A-3DF4-1CF9-97BE-4AF4AE0AE2D4" partEnd="DCE.FC25E8CE-303D-BD0B-B23B-CA382A33E8A2"><UML:Association.end>
+<UML:AssociationEnd xmi.id="DCE.5F0A103A-3DF4-1CF9-97BE-4AF4AE0AE2D4" visibility="private" type="DCE.530D52C9-E95E-5095-4A03-7BB62270C9A1" association="DCE.907D5D2A-775E-9725-8D06-E72F8D38CD3E"/>
+<UML:NavigableEnd xmi.id="DCE.FC25E8CE-303D-BD0B-B23B-CA382A33E8A2" visibility="private" type="DCE.9EF2F156-8D72-130D-38DF-EE7A3B829C69" association="DCE.907D5D2A-775E-9725-8D06-E72F8D38CD3E" name="sprints"/></UML:Association.end></UML:Aggregation>
+<UML:Aggregation xmi.id="DCE.E8E1E5DD-73CB-5EF6-A497-D9C77B5EB1CE" owner="DCE.3CA3D715-857D-D50E-B2B6-501927866220" aggregateEnd="DCE.9028A82D-5B87-8FC0-B389-D353B0003B4B" partEnd="DCE.EE8958B2-EB6C-3259-1ECE-E66012EDBE2A"><UML:Association.end>
+<UML:AssociationEnd xmi.id="DCE.9028A82D-5B87-8FC0-B389-D353B0003B4B" visibility="private" type="DCE.530D52C9-E95E-5095-4A03-7BB62270C9A1" association="DCE.E8E1E5DD-73CB-5EF6-A497-D9C77B5EB1CE"/>
+<UML:NavigableEnd xmi.id="DCE.EE8958B2-EB6C-3259-1ECE-E66012EDBE2A" visibility="private" type="DCE.B49486EB-16C8-2B60-D4E7-2D2C2B93146F" association="DCE.E8E1E5DD-73CB-5EF6-A497-D9C77B5EB1CE" name="sprintList"><UML:TypedElement.multiplicity>
+<UML:Multiplicity xmi.id="DCE.1BA15221-21CA-9A15-7082-202EE07EAB58">
+<UML:Multiplicity.range><UML:MultiplicityRange lower="0" upper="*" collectionType="List" xmi.id="DCE.669891CF-D424-D573-BF70-42F5627ED414"/></UML:Multiplicity.range></UML:Multiplicity></UML:TypedElement.multiplicity></UML:NavigableEnd></UML:Association.end></UML:Aggregation>
+<UML:Aggregation xmi.id="DCE.40DB7F9E-8990-704B-3A4D-A3FEE2066A51" owner="DCE.3CA3D715-857D-D50E-B2B6-501927866220" aggregateEnd="DCE.4B091B2C-F7F6-B83C-9DD1-6309531EB521" partEnd="DCE.8E8C21DD-F638-02B8-5B96-8603E93DADC2"><UML:Association.end>
+<UML:AssociationEnd xmi.id="DCE.4B091B2C-F7F6-B83C-9DD1-6309531EB521" visibility="private" type="DCE.530D52C9-E95E-5095-4A03-7BB62270C9A1" association="DCE.40DB7F9E-8990-704B-3A4D-A3FEE2066A51"/>
+<UML:NavigableEnd xmi.id="DCE.8E8C21DD-F638-02B8-5B96-8603E93DADC2" visibility="private" type="DCE.0F8FDDCF-D8DC-EC5A-2929-0F5EF73A305C" association="DCE.40DB7F9E-8990-704B-3A4D-A3FEE2066A51" name="project"/></UML:Association.end></UML:Aggregation>
+<UML:DerivationClassifier xmi.id="DCE.F3C919B5-4221-3302-B1FA-72D92F139319" name="PersistenceAction<T>" owner="DCE.3CA3D715-857D-D50E-B2B6-501927866220" clientDependency="DCE.783AC22E-2825-B1DF-D534-6D489DD99694"><UML:Element.ownedElement>
+<UML:Derivation xmi.id="DCE.783AC22E-2825-B1DF-D534-6D489DD99694" supplier="DCE.EBD3460C-90A4-774C-4DDE-54309820D2DD" owner="DCE.F3C919B5-4221-3302-B1FA-72D92F139319" client="DCE.F3C919B5-4221-3302-B1FA-72D92F139319"><UML:Element.ownedElement>
+<UML:Binding xmi.id="DCE.F9C647D8-8AD7-5DD5-556F-67AAACBEF177" actual="DCE.9E53E000-3D9B-B159-1AAE-F86FFC379C33" formal="DCE.BEE59F5F-8703-6313-BD47-E871618A6A9E" owner="DCE.783AC22E-2825-B1DF-D534-6D489DD99694"/></UML:Element.ownedElement></UML:Derivation></UML:Element.ownedElement></UML:DerivationClassifier>
+<UML:Aggregation xmi.id="DCE.EF4FEA8E-9D26-F3F1-9A89-30EA38B42BE7" owner="DCE.3CA3D715-857D-D50E-B2B6-501927866220" aggregateEnd="DCE.086E0D72-ACD5-F01D-36B9-AEBE75F28D6A" partEnd="DCE.35D4E71E-7E00-4335-C1A5-5F92AF18DA09"><UML:Association.end>
+<UML:AssociationEnd xmi.id="DCE.086E0D72-ACD5-F01D-36B9-AEBE75F28D6A" visibility="private" type="DCE.59752D6E-176C-87E9-AD6F-F14CB878B722" association="DCE.EF4FEA8E-9D26-F3F1-9A89-30EA38B42BE7"/>
+<UML:NavigableEnd xmi.id="DCE.35D4E71E-7E00-4335-C1A5-5F92AF18DA09" visibility="private" type="DCE.7D3FBB62-03BC-C4B8-B243-20E4F639C059" association="DCE.EF4FEA8E-9D26-F3F1-9A89-30EA38B42BE7" name="stories"/></UML:Association.end></UML:Aggregation>
+<UML:Aggregation xmi.id="DCE.2B2B275B-8EAC-A6A4-B1B1-5311B7C7E6AD" owner="DCE.3CA3D715-857D-D50E-B2B6-501927866220" aggregateEnd="DCE.A601BEF0-0A68-C053-2B1C-3F59A251DBE7" partEnd="DCE.7600AE62-2960-908B-ABB2-89859B69B8BE"><UML:Association.end>
+<UML:AssociationEnd xmi.id="DCE.A601BEF0-0A68-C053-2B1C-3F59A251DBE7" visibility="private" type="DCE.59752D6E-176C-87E9-AD6F-F14CB878B722" association="DCE.2B2B275B-8EAC-A6A4-B1B1-5311B7C7E6AD"/>
+<UML:NavigableEnd xmi.id="DCE.7600AE62-2960-908B-ABB2-89859B69B8BE" visibility="private" type="DCE.1B25B69B-B014-F654-2E5A-9547722C2FE2" association="DCE.2B2B275B-8EAC-A6A4-B1B1-5311B7C7E6AD" name="storyList"><UML:TypedElement.multiplicity>
+<UML:Multiplicity xmi.id="DCE.F3BD5D57-091E-5D0C-DC34-46E283393FF9">
+<UML:Multiplicity.range><UML:MultiplicityRange lower="0" upper="*" collectionType="List" xmi.id="DCE.82169A49-7FDC-1435-2A34-942C2532EE60"/></UML:Multiplicity.range></UML:Multiplicity></UML:TypedElement.multiplicity></UML:NavigableEnd></UML:Association.end></UML:Aggregation>
+<UML:Aggregation xmi.id="DCE.423F3B1B-D2F1-5383-5C83-6CFAD473046D" owner="DCE.3CA3D715-857D-D50E-B2B6-501927866220" aggregateEnd="DCE.D54C3430-24CA-3584-E203-A8A399AAD310" partEnd="DCE.10086BCD-4A7B-E8F5-26EC-DAED741B12CF"><UML:Association.end>
+<UML:AssociationEnd xmi.id="DCE.D54C3430-24CA-3584-E203-A8A399AAD310" visibility="private" type="DCE.59752D6E-176C-87E9-AD6F-F14CB878B722" association="DCE.423F3B1B-D2F1-5383-5C83-6CFAD473046D"/>
+<UML:NavigableEnd xmi.id="DCE.10086BCD-4A7B-E8F5-26EC-DAED741B12CF" visibility="private" type="DCE.B49486EB-16C8-2B60-D4E7-2D2C2B93146F" association="DCE.423F3B1B-D2F1-5383-5C83-6CFAD473046D" name="sprint"/></UML:Association.end></UML:Aggregation>
+<UML:Aggregation xmi.id="DCE.EB8EDDDD-3346-4347-3B87-377A643C9D9A" owner="DCE.3CA3D715-857D-D50E-B2B6-501927866220" aggregateEnd="DCE.27022EE1-D12F-9EBD-F555-E80783A8C960" partEnd="DCE.F65B2FAE-68B6-E730-EFF3-6D78CA9A2987"><UML:Association.end>
+<UML:AssociationEnd xmi.id="DCE.27022EE1-D12F-9EBD-F555-E80783A8C960" visibility="private" type="DCE.59752D6E-176C-87E9-AD6F-F14CB878B722" association="DCE.EB8EDDDD-3346-4347-3B87-377A643C9D9A"/>
+<UML:NavigableEnd xmi.id="DCE.F65B2FAE-68B6-E730-EFF3-6D78CA9A2987" visibility="private" type="DCE.28D91B82-9873-4BAD-B1BE-117AA8A44400" association="DCE.EB8EDDDD-3346-4347-3B87-377A643C9D9A" name="sprintChangeListener"/></UML:Association.end></UML:Aggregation>
+<UML:Aggregation xmi.id="DCE.EF042592-DCB3-0CC3-C07D-0FB6EB513C8F" owner="DCE.3CA3D715-857D-D50E-B2B6-501927866220" aggregateEnd="DCE.DFB59801-BA96-0496-06CF-2679FEA4FD1B" partEnd="DCE.7C1D51D5-FBFC-33D1-84B0-19A8AC8C1702"><UML:Association.end>
+<UML:AssociationEnd xmi.id="DCE.DFB59801-BA96-0496-06CF-2679FEA4FD1B" visibility="private" type="DCE.8DD9C492-5E6C-FD02-3E11-2983B059CC19" association="DCE.EF042592-DCB3-0CC3-C07D-0FB6EB513C8F"/>
+<UML:NavigableEnd xmi.id="DCE.7C1D51D5-FBFC-33D1-84B0-19A8AC8C1702" visibility="private" type="DCE.0F8FDDCF-D8DC-EC5A-2929-0F5EF73A305C" association="DCE.EF042592-DCB3-0CC3-C07D-0FB6EB513C8F" name="currentProject"/></UML:Association.end></UML:Aggregation>
+<UML:Aggregation xmi.id="DCE.BF76CB10-2FB1-1AAB-1E3E-0CC2101DA02C" owner="DCE.3CA3D715-857D-D50E-B2B6-501927866220" aggregateEnd="DCE.484213C3-0F9C-5AE0-48C7-7E993003B492" partEnd="DCE.581CE770-F9B6-426B-C3C3-EFC3F1271DBF"><UML:Association.end>
+<UML:AssociationEnd xmi.id="DCE.484213C3-0F9C-5AE0-48C7-7E993003B492" visibility="private" type="DCE.8DD9C492-5E6C-FD02-3E11-2983B059CC19" association="DCE.BF76CB10-2FB1-1AAB-1E3E-0CC2101DA02C"/>
+<UML:NavigableEnd xmi.id="DCE.581CE770-F9B6-426B-C3C3-EFC3F1271DBF" visibility="private" type="DCE.D4F8D2A9-275A-5557-C7AD-AB3036511671" association="DCE.BF76CB10-2FB1-1AAB-1E3E-0CC2101DA02C" name="projects"/></UML:Association.end></UML:Aggregation>
+<UML:Aggregation xmi.id="DCE.C7FBF1D6-2A00-AFBC-D3CD-B46804C5C081" owner="DCE.3CA3D715-857D-D50E-B2B6-501927866220" aggregateEnd="DCE.4B961C77-FA54-16D2-A6E1-D30D7DCA6227" partEnd="DCE.14F193F9-D133-8F69-467B-BBBBD308ADB0"><UML:Association.end>
+<UML:AssociationEnd xmi.id="DCE.4B961C77-FA54-16D2-A6E1-D30D7DCA6227" visibility="private" type="DCE.8DD9C492-5E6C-FD02-3E11-2983B059CC19" association="DCE.C7FBF1D6-2A00-AFBC-D3CD-B46804C5C081"/>
+<UML:NavigableEnd xmi.id="DCE.14F193F9-D133-8F69-467B-BBBBD308ADB0" visibility="private" type="DCE.0F8FDDCF-D8DC-EC5A-2929-0F5EF73A305C" association="DCE.C7FBF1D6-2A00-AFBC-D3CD-B46804C5C081" name="projectList"><UML:TypedElement.multiplicity>
+<UML:Multiplicity xmi.id="DCE.57C032D3-1F14-5809-A2AF-F616D5D1B004">
+<UML:Multiplicity.range><UML:MultiplicityRange lower="0" upper="*" collectionType="List" xmi.id="DCE.9BA2D052-4BC7-A0C0-57DB-10DEFC07F79D"/></UML:Multiplicity.range></UML:Multiplicity></UML:TypedElement.multiplicity></UML:NavigableEnd></UML:Association.end></UML:Aggregation></UML:Element.ownedElement></UML:Package><UML:Package name="event" xmi.id="DCE.1922DD99-EFAD-4187-48B4-24725D587FBF" owner="DCE.D6BA0969-390A-EC19-237F-B1FDF79872EC">
+<UML:Element.ownedElement><UML:Class isAbstract="false" isLeaf="false" visibility="public" name="CurrentTaskChangeEvent" xmi.id="DCE.6E050D40-EFFF-973B-D9B4-449F4C734204" owner="DCE.1922DD99-EFAD-4187-48B4-24725D587FBF"><UML:Element.ownedElement><UML:SourceFileArtifact sourcefile="../../eclipseProject/src/main/java/jsf2/demo/scrum/web/event/CurrentTaskChangeEvent.java" xmi.id="DCE.0E7FBB5B-7604-E74F-BECB-5B86BE5E57E8" owner="DCE.6E050D40-EFFF-973B-D9B4-449F4C734204"/><UML:TaggedValue xmi [...]
+<UML:TaggedValue.dataValue>  @author Dr. Spock (spock at dev.java.net)
+ </UML:TaggedValue.dataValue></UML:TaggedValue><UML:Operation visibility="public" isLeaf="false" ownerScope="instance" isAbstract="false" isConstructor="true" name="CurrentTaskChangeEvent" xmi.id="DCE.C29777FF-59C7-4963-E171-D27899C23AD0" owner="DCE.6E050D40-EFFF-973B-D9B4-449F4C734204"><UML:Element.ownedElement><UML:Parameter visibility="package" isQuery="false" type="DCE.E0DB7AD7-E636-792C-9705-9BC303204296" name="source" xmi.id="DCE.E7196F09-130F-D46F-F032-171C1EE15C42" owner="DCE.C29 [...]
+<UML:Classifier.generalization>
+<UML:Generalization xmi.id="DCE.BC051D53-254B-F1C9-33A3-ED4AFBD5C2C9" specific="DCE.6E050D40-EFFF-973B-D9B4-449F4C734204" general="DCE.2DD93E80-C478-F294-6739-C2A2DA9D93F3"/></UML:Classifier.generalization></UML:Class><UML:Class isAbstract="false" isLeaf="false" visibility="public" name="CurrentStoryChangeEvent" xmi.id="DCE.7BE3F569-58B0-C54D-4EC5-4DEDAB06B86C" owner="DCE.1922DD99-EFAD-4187-48B4-24725D587FBF"><UML:Element.ownedElement><UML:SourceFileArtifact sourcefile="../../eclipseProj [...]
+<UML:TaggedValue.dataValue>  @author Dr. Spock (spock at dev.java.net)
+ </UML:TaggedValue.dataValue></UML:TaggedValue><UML:Operation visibility="public" isLeaf="false" ownerScope="instance" isAbstract="false" isConstructor="true" name="CurrentStoryChangeEvent" xmi.id="DCE.DC1CBADA-62F1-2E21-C91E-59138F11F651" owner="DCE.7BE3F569-58B0-C54D-4EC5-4DEDAB06B86C"><UML:Element.ownedElement><UML:Parameter visibility="package" isQuery="false" type="DCE.E0DB7AD7-E636-792C-9705-9BC303204296" name="source" xmi.id="DCE.104FF415-BD54-04CD-6861-9BFD3D34B31B" owner="DCE.DC [...]
+<UML:Classifier.generalization>
+<UML:Generalization xmi.id="DCE.E2BC5503-7BAC-1FB4-BC45-ACA7B9044924" specific="DCE.7BE3F569-58B0-C54D-4EC5-4DEDAB06B86C" general="DCE.2DD93E80-C478-F294-6739-C2A2DA9D93F3"/></UML:Classifier.generalization></UML:Class><UML:Class isAbstract="false" isLeaf="false" visibility="public" name="CurrentSprintChangeEvent" xmi.id="DCE.963D6E81-BB29-8D5D-A4E1-40B35FC3CAA4" owner="DCE.1922DD99-EFAD-4187-48B4-24725D587FBF"><UML:Element.ownedElement><UML:SourceFileArtifact sourcefile="../../eclipsePro [...]
+<UML:TaggedValue.dataValue>  @author Dr. Spock (spock at dev.java.net)
+ </UML:TaggedValue.dataValue></UML:TaggedValue><UML:Operation visibility="public" isLeaf="false" ownerScope="instance" isAbstract="false" isConstructor="true" name="CurrentSprintChangeEvent" xmi.id="DCE.8405F596-7FCF-8022-522A-5BFC13C1573F" owner="DCE.963D6E81-BB29-8D5D-A4E1-40B35FC3CAA4"><UML:Element.ownedElement><UML:Parameter visibility="package" isQuery="false" type="DCE.E0DB7AD7-E636-792C-9705-9BC303204296" name="source" xmi.id="DCE.FFC38AE6-459F-4277-2209-90DF0EE6169E" owner="DCE.8 [...]
+<UML:Classifier.generalization>
+<UML:Generalization xmi.id="DCE.335F9F31-C5A9-5342-F536-FC03A97641BB" specific="DCE.963D6E81-BB29-8D5D-A4E1-40B35FC3CAA4" general="DCE.2DD93E80-C478-F294-6739-C2A2DA9D93F3"/></UML:Classifier.generalization></UML:Class><UML:Class isAbstract="false" isLeaf="false" visibility="public" name="CurrentProjectChangeEvent" xmi.id="DCE.D53E1CE7-C9DE-C24C-816C-6261977796DF" owner="DCE.1922DD99-EFAD-4187-48B4-24725D587FBF"><UML:Element.ownedElement><UML:SourceFileArtifact sourcefile="../../eclipsePr [...]
+<UML:TaggedValue.dataValue>  @author Dr. Spock (spock at dev.java.net)
+ </UML:TaggedValue.dataValue></UML:TaggedValue><UML:Operation visibility="public" isLeaf="false" ownerScope="instance" isAbstract="false" isConstructor="true" name="CurrentProjectChangeEvent" xmi.id="DCE.C0918D59-D046-87E4-107D-AC8A8E27BD2A" owner="DCE.D53E1CE7-C9DE-C24C-816C-6261977796DF"><UML:Element.ownedElement><UML:Parameter visibility="package" isQuery="false" type="DCE.E0DB7AD7-E636-792C-9705-9BC303204296" name="source" xmi.id="DCE.A982DF83-3370-FC23-22BD-D668F8991E09" owner="DCE. [...]
+<UML:Classifier.generalization>
+<UML:Generalization xmi.id="DCE.72632471-C9A1-94B1-160B-38E1325725E9" specific="DCE.D53E1CE7-C9DE-C24C-816C-6261977796DF" general="DCE.2DD93E80-C478-F294-6739-C2A2DA9D93F3"/></UML:Classifier.generalization></UML:Class></UML:Element.ownedElement></UML:Package><UML:Package name="helper" xmi.id="DCE.E777492B-E151-022A-4135-3B63CDC2DCE2" owner="DCE.D6BA0969-390A-EC19-237F-B1FDF79872EC">
+<UML:Element.ownedElement><UML:Class isAbstract="false" isLeaf="false" visibility="public" name="ProjectConverter" xmi.id="DCE.AADBF917-4BAF-6842-4CF5-9C0380B72C2E" owner="DCE.E777492B-E151-022A-4135-3B63CDC2DCE2" associationEnd="DCE.01BF9A31-6B25-17A6-DCD7-7BD8D97D456D" clientDependency="DCE.E36A4D6B-816D-AFFB-7B45-7FC37FAD8520"><UML:Element.ownedElement><UML:SourceFileArtifact sourcefile="../../eclipseProject/src/main/java/jsf2/demo/scrum/web/helper/ProjectConverter.java" xmi.id="DCE.3 [...]
+<UML:Implementation xmi.id="DCE.E36A4D6B-816D-AFFB-7B45-7FC37FAD8520" owner="DCE.AADBF917-4BAF-6842-4CF5-9C0380B72C2E" client="DCE.AADBF917-4BAF-6842-4CF5-9C0380B72C2E" supplier="DCE.F87C7DBC-049A-771D-5FBC-BA8EAA7B37BE"/></UML:Element.ownedElement>
+</UML:Class>
+<UML:Aggregation xmi.id="DCE.F282B6A1-2534-9F2B-B914-BDD5AF40200A" owner="DCE.E777492B-E151-022A-4135-3B63CDC2DCE2" aggregateEnd="DCE.01BF9A31-6B25-17A6-DCD7-7BD8D97D456D" partEnd="DCE.887109F3-26C7-96AA-5B5F-3E766A174C92"><UML:Association.end>
+<UML:AssociationEnd xmi.id="DCE.01BF9A31-6B25-17A6-DCD7-7BD8D97D456D" visibility="private" type="DCE.AADBF917-4BAF-6842-4CF5-9C0380B72C2E" association="DCE.F282B6A1-2534-9F2B-B914-BDD5AF40200A"/>
+<UML:NavigableEnd xmi.id="DCE.887109F3-26C7-96AA-5B5F-3E766A174C92" visibility="private" type="DCE.BE9FAE2A-86F2-5998-3F6F-46458B4B6773" association="DCE.F282B6A1-2534-9F2B-B914-BDD5AF40200A" name="cache" isStatic="true"><UML:Attribute.default><UML:Expression xmi.id="DCE.12DF9972-5869-4DAC-580F-42E50C3E8A32"><UML:Expression.body>new HashMap<Long, Project>()</UML:Expression.body></UML:Expression></UML:Attribute.default></UML:NavigableEnd></UML:Association.end></UML:Aggregation></UML [...]
+<UML:Element.ownedElement><UML:Package name="entities" xmi.id="DCE.7CE8FFFA-3AF9-188D-71FE-E93EB0B49860" owner="DCE.5A4D19A2-1468-437A-B75A-0E8318208C1F">
+<UML:Element.ownedElement><UML:Interface isAbstract="true" isLeaf="false" visibility="public" name="PersistentEntity" xmi.id="DCE.FA27723D-C0F6-133F-2FF1-DF829A39410C" owner="DCE.7CE8FFFA-3AF9-188D-71FE-E93EB0B49860" templateParameter="DCE.AD6288BF-2312-6CD9-16A0-97CD3893AA0E" appliedStereotype="__uri_./scrumtoys-uml.etup#//*[@xmi.id="DCE.241576B4-FD84-5D94-8BF7-D475B1AC822D"]" supplierDependency="DCE.F7B48998-C66D-5CD5-27DA-EC66A7528BCA DCE.EF168D5D-30D3-85D4-E0A4-62732F5482B3 [...]
+<UML:TaggedValue.dataValue>  @author Dr. Spock (spock at dev.java.net)
+ </UML:TaggedValue.dataValue></UML:TaggedValue><UML:ParameterableElement name="PK" xmi.id="DCE.AD6288BF-2312-6CD9-16A0-97CD3893AA0E" owner="DCE.FA27723D-C0F6-133F-2FF1-DF829A39410C"/><UML:Operation visibility="public" isLeaf="false" ownerScope="instance" isAbstract="true" name="getId" xmi.id="DCE.8AA48DB0-7855-9435-3CA2-BE0F71B34E48" owner="DCE.FA27723D-C0F6-133F-2FF1-DF829A39410C" redefiningElement="DCE.D76DA95B-EF29-EE86-DF9C-160F6F3A4A9C DCE.CA918B02-0EB5-0A24-4DF4-75FA8E7B1FD3"><UML: [...]
+<UML:Multiplicity xmi.id="DCE.54AF3273-DA72-A1FD-8157-D19DCFEA54F4"/></UML:TypedElement.multiplicity></UML:Parameter></UML:Element.ownedElement><UML:Element.presentation>
+</UML:Element.presentation></UML:Operation><UML:Operation visibility="public" isLeaf="false" ownerScope="instance" isAbstract="true" name="isNew" xmi.id="DCE.14E0D15E-3F41-916A-AB61-8A44B87E84EA" owner="DCE.FA27723D-C0F6-133F-2FF1-DF829A39410C" redefiningElement="DCE.EC8F32C4-CDEF-2BF5-69D1-1E62AD8D4549"><UML:Element.ownedElement><UML:Parameter visibility="package" direction="result" isQuery="false" type="DCE.B078EDD4-EE98-3028-171A-76969AC67476" xmi.id="DCE.2C38CF37-2296-F68D-0558-4DB9F [...]
+<UML:Multiplicity xmi.id="DCE.F81286E2-D7CC-BE7A-DF87-377225139B88"/></UML:TypedElement.multiplicity></UML:Parameter></UML:Element.ownedElement><UML:Element.presentation>
+</UML:Element.presentation></UML:Operation></UML:Element.ownedElement>
+<UML:Classifier.generalization>
+<UML:Generalization xmi.id="DCE.D45C6D1B-1663-88DF-D8E3-089306FCC78F" specific="DCE.FA27723D-C0F6-133F-2FF1-DF829A39410C" general="DCE.45ACF2D1-4D97-64BC-1200-E4F3C2503510"/></UML:Classifier.generalization><UML:Element.presentation>
+</UML:Element.presentation></UML:Interface><UML:Class isAbstract="false" isLeaf="false" visibility="public" name="SprintNameUniquenessConstraintValidator" xmi.id="DCE.08911BD7-1949-6FE4-60DB-C7CA9D24F195" owner="DCE.7CE8FFFA-3AF9-188D-71FE-E93EB0B49860" clientDependency="DCE.02B10A9F-9EFA-7C7C-4B31-2D79D8E684D2 DCE.A10E3E08-982E-6E1D-6287-4B7CE727DE06" supplierDependency="DCE.A225D28E-A912-549A-1A13-332D91E62663"><UML:Element.ownedElement><UML:SourceFileArtifact sourcefile="../../eclipse [...]
+<UML:Multiplicity xmi.id="DCE.051898A5-29C8-F513-D173-F9C30C8A9841"/></UML:TypedElement.multiplicity></UML:Parameter><UML:Parameter visibility="package" isQuery="false" type="DCE.B0F4883D-A9A7-F729-B7D1-1DD00CABE13C" name="value" xmi.id="DCE.207E36DF-74F8-FB88-95E0-4D573E8A79F1" owner="DCE.ED35B5E6-88D8-9631-C55B-97AF3C07A8B3"><UML:TypedElement.multiplicity>
+<UML:Multiplicity xmi.id="DCE.D3538A3B-2D5F-4154-E88A-852B2626507F"/></UML:TypedElement.multiplicity></UML:Parameter><UML:Parameter visibility="package" isQuery="false" type="DCE.200A429B-19B2-E2B0-0D10-7416BB71F7DC" name="ctx" xmi.id="DCE.0F820599-5958-7C9B-79E8-B57F3BD4CBE9" owner="DCE.ED35B5E6-88D8-9631-C55B-97AF3C07A8B3"><UML:TypedElement.multiplicity>
+<UML:Multiplicity xmi.id="DCE.3E6E1BFF-B566-30D8-4C2B-C01DCEBD219E"/></UML:TypedElement.multiplicity></UML:Parameter></UML:Element.ownedElement><UML:Element.presentation>
+</UML:Element.presentation></UML:Operation><UML:Operation visibility="public" isLeaf="false" ownerScope="instance" isAbstract="false" name="initialize" xmi.id="DCE.29F0CED9-24F4-CD28-D953-241D24500547" owner="DCE.08911BD7-1949-6FE4-60DB-C7CA9D24F195"><UML:Element.ownedElement><UML:Parameter visibility="package" direction="result" isQuery="false" type="DCE.DA27BA19-CDDD-B3CC-A2FA-0DEBD1FCF18D" xmi.id="DCE.3EE7B689-8797-0BC7-0FC0-F268233AE168" owner="DCE.29F0CED9-24F4-CD28-D953-241D2450054 [...]
+<UML:Multiplicity xmi.id="DCE.C2CD9C0C-C1CB-770D-78F6-0229DE1369B3"/></UML:TypedElement.multiplicity></UML:Parameter><UML:Parameter visibility="package" isQuery="false" type="DCE.EEF55D76-77B0-0CB5-F000-2A41C9387023" name="arg0" xmi.id="DCE.14443A1E-08DD-24E1-5246-7A5A8D123ADB" owner="DCE.29F0CED9-24F4-CD28-D953-241D24500547"><UML:TypedElement.multiplicity>
+<UML:Multiplicity xmi.id="DCE.7D75B11E-270A-A4BA-0784-23049B725FC9"/></UML:TypedElement.multiplicity></UML:Parameter></UML:Element.ownedElement><UML:Element.presentation>
+</UML:Element.presentation></UML:Operation>
+<UML:Implementation xmi.id="DCE.02B10A9F-9EFA-7C7C-4B31-2D79D8E684D2" owner="DCE.08911BD7-1949-6FE4-60DB-C7CA9D24F195" client="DCE.08911BD7-1949-6FE4-60DB-C7CA9D24F195" supplier="DCE.1FF53A0E-E5E8-46D9-C670-ABFA94E0AC49"/></UML:Element.ownedElement>
+<UML:Element.presentation>
+</UML:Element.presentation></UML:Class><UML:Class isAbstract="false" isLeaf="false" visibility="public" name="Project" xmi.id="DCE.0F8FDDCF-D8DC-EC5A-2929-0F5EF73A305C" owner="DCE.7CE8FFFA-3AF9-188D-71FE-E93EB0B49860" associationEnd="DCE.BC7C0D3A-B128-A6E2-100C-59F517167843 DCE.D913FBA2-3642-D1D0-DB80-9A633C62D086 DCE.8E8C21DD-F638-02B8-5B96-8603E93DADC2 DCE.7C1D51D5-FBFC-33D1-84B0-19A8AC8C1702 DCE.14F193F9-D133-8F69-467B-BBBBD308ADB0" clientDependency="DCE.D0C66CC1-E767-F23B-A295-78412B [...]
+</UML:Element.presentation><UML:TypedElement.multiplicity>
+<UML:Multiplicity xmi.id="DCE.DF98EA76-5C38-384E-A4D8-CBD246866F1C"/></UML:TypedElement.multiplicity></UML:Attribute><UML:Attribute visibility="private" isLeaf="false" ownerScope="instance" type="DCE.B0F4883D-A9A7-F729-B7D1-1DD00CABE13C" AssociationType="Aggregation" name="name" xmi.id="DCE.AA05C197-A1A4-7C34-38D9-FC437D197115" owner="DCE.0F8FDDCF-D8DC-EC5A-2929-0F5EF73A305C"><UML:Element.presentation>
+</UML:Element.presentation><UML:TypedElement.multiplicity>
+<UML:Multiplicity xmi.id="DCE.1EE7C5D9-CD5B-75FC-2146-41A80A369C10"/></UML:TypedElement.multiplicity><UML:Attribute.default>
+<UML:Expression xmi.id="DCE.6EDFD59B-DDD1-2C47-084E-6ACC2BBA5631"/></UML:Attribute.default></UML:Attribute><UML:Attribute visibility="private" isLeaf="false" ownerScope="instance" type="DCE.D8756337-EB16-BCDC-2A8A-35DDDD27E378" AssociationType="Aggregation" name="startDate" xmi.id="DCE.B245C31C-07BC-DDE7-DF04-5A444CDE8DA9" owner="DCE.0F8FDDCF-D8DC-EC5A-2929-0F5EF73A305C"><UML:Element.presentation>
+</UML:Element.presentation><UML:TypedElement.multiplicity>
+<UML:Multiplicity xmi.id="DCE.67D4FB51-5250-63CD-7D23-5C720BF09E50"/></UML:TypedElement.multiplicity><UML:Attribute.default>
+<UML:Expression xmi.id="DCE.A26202BF-B4F3-67AB-31CD-6ADB1399F3C5"/></UML:Attribute.default></UML:Attribute><UML:Attribute visibility="private" isLeaf="false" ownerScope="instance" type="DCE.D8756337-EB16-BCDC-2A8A-35DDDD27E378" AssociationType="Aggregation" name="endDate" xmi.id="DCE.6E585D7C-6B56-8800-180D-7404A748AC20" owner="DCE.0F8FDDCF-D8DC-EC5A-2929-0F5EF73A305C"><UML:Element.presentation>
+</UML:Element.presentation><UML:TypedElement.multiplicity>
+<UML:Multiplicity xmi.id="DCE.19DF9BC3-7229-CF3E-A4F4-11FFBA7B2564"/></UML:TypedElement.multiplicity><UML:Attribute.default>
+<UML:Expression xmi.id="DCE.7526F536-BDEA-78D3-CEEC-7D489C55E940"/></UML:Attribute.default></UML:Attribute><UML:Attribute visibility="private" isLeaf="false" ownerScope="instance" type="Sprint" name="sprints">
+</UML:Attribute><UML:Operation visibility="public" isLeaf="false" ownerScope="instance" isAbstract="false" isConstructor="true" name="Project" xmi.id="DCE.9BEB04F9-86BF-FF34-AD82-7B31E76EF883" owner="DCE.0F8FDDCF-D8DC-EC5A-2929-0F5EF73A305C"><UML:Element.presentation>
+</UML:Element.presentation></UML:Operation><UML:Operation visibility="public" isLeaf="false" ownerScope="instance" isAbstract="false" isConstructor="true" name="Project" xmi.id="DCE.95E13D53-D53D-D691-1491-076A7ABCE38D" owner="DCE.0F8FDDCF-D8DC-EC5A-2929-0F5EF73A305C"><UML:Element.ownedElement><UML:Parameter visibility="package" isQuery="false" type="DCE.B0F4883D-A9A7-F729-B7D1-1DD00CABE13C" name="name" xmi.id="DCE.48509B98-9649-507D-F3ED-9560292CDC12" owner="DCE.95E13D53-D53D-D691-1491- [...]
+<UML:Multiplicity xmi.id="DCE.48B80C27-AD86-E047-2B31-5D6426108104"/></UML:TypedElement.multiplicity></UML:Parameter></UML:Element.ownedElement><UML:Element.presentation>
+</UML:Element.presentation></UML:Operation><UML:Operation visibility="public" isLeaf="false" ownerScope="instance" isAbstract="false" isConstructor="true" name="Project" xmi.id="DCE.D89A2736-BCBA-8328-2512-1694D574C790" owner="DCE.0F8FDDCF-D8DC-EC5A-2929-0F5EF73A305C"><UML:Element.ownedElement><UML:Parameter visibility="package" isQuery="false" type="DCE.B0F4883D-A9A7-F729-B7D1-1DD00CABE13C" name="name" xmi.id="DCE.DCD761C9-0DEE-7592-BB2D-A926801D2E02" owner="DCE.D89A2736-BCBA-8328-2512- [...]
+<UML:Multiplicity xmi.id="DCE.17BF7033-422A-4236-55EF-6A1546C04F33"/></UML:TypedElement.multiplicity></UML:Parameter><UML:Parameter visibility="package" isQuery="false" type="DCE.D8756337-EB16-BCDC-2A8A-35DDDD27E378" name="startDate" xmi.id="DCE.291DAE98-F8BA-9782-2F7D-AA12C9D4993D" owner="DCE.D89A2736-BCBA-8328-2512-1694D574C790"><UML:TypedElement.multiplicity>
+<UML:Multiplicity xmi.id="DCE.E43CD1B7-E6A5-960D-7048-ADDE40239C99"/></UML:TypedElement.multiplicity></UML:Parameter></UML:Element.ownedElement><UML:Element.presentation>
+</UML:Element.presentation></UML:Operation><UML:Operation visibility="public" isLeaf="false" ownerScope="instance" isAbstract="false" name="getName" xmi.id="DCE.B2E090C3-7BF0-71B4-A7F1-FE29B38D5682" owner="DCE.0F8FDDCF-D8DC-EC5A-2929-0F5EF73A305C"><UML:Element.ownedElement><UML:Parameter visibility="package" direction="result" isQuery="false" type="DCE.B0F4883D-A9A7-F729-B7D1-1DD00CABE13C" xmi.id="DCE.4BDF93FC-5F77-6C7A-06BF-5BE8F19FE7AA" owner="DCE.B2E090C3-7BF0-71B4-A7F1-FE29B38D5682"> [...]
+<UML:Multiplicity xmi.id="DCE.234FE760-D4EA-2C77-83BC-C02CC2236A5F"/></UML:TypedElement.multiplicity></UML:Parameter></UML:Element.ownedElement><UML:Element.presentation>
+</UML:Element.presentation></UML:Operation><UML:Operation visibility="public" isLeaf="false" ownerScope="instance" isAbstract="false" name="setName" xmi.id="DCE.369DB8EE-4AA0-C7FB-06EE-4BAA350B482B" owner="DCE.0F8FDDCF-D8DC-EC5A-2929-0F5EF73A305C"><UML:Element.ownedElement><UML:Parameter visibility="package" direction="result" isQuery="false" type="DCE.DA27BA19-CDDD-B3CC-A2FA-0DEBD1FCF18D" xmi.id="DCE.AA25B764-FECA-146B-4B2A-D7F44603B6BD" owner="DCE.369DB8EE-4AA0-C7FB-06EE-4BAA350B482B"> [...]
+<UML:Multiplicity xmi.id="DCE.2F1FDE8D-550B-D049-8741-79CBF4FC13E6"/></UML:TypedElement.multiplicity></UML:Parameter><UML:Parameter visibility="package" isQuery="false" type="DCE.B0F4883D-A9A7-F729-B7D1-1DD00CABE13C" name="name" xmi.id="DCE.2F4BD8AB-DAF4-2F90-37FE-06F6AE8BC3CC" owner="DCE.369DB8EE-4AA0-C7FB-06EE-4BAA350B482B"><UML:TypedElement.multiplicity>
+<UML:Multiplicity xmi.id="DCE.FD5E1E37-F8E3-7C93-AEB1-7D779FFA742D"/></UML:TypedElement.multiplicity></UML:Parameter></UML:Element.ownedElement><UML:Element.presentation>
+</UML:Element.presentation></UML:Operation><UML:Operation visibility="public" isLeaf="false" ownerScope="instance" isAbstract="false" name="getStartDate" xmi.id="DCE.954513A1-AC8E-D63C-3599-89C95819B1AD" owner="DCE.0F8FDDCF-D8DC-EC5A-2929-0F5EF73A305C"><UML:Element.ownedElement><UML:Parameter visibility="package" direction="result" isQuery="false" type="DCE.D8756337-EB16-BCDC-2A8A-35DDDD27E378" xmi.id="DCE.4979E149-A346-A1AC-9FF7-2C80B2DB4977" owner="DCE.954513A1-AC8E-D63C-3599-89C95819B [...]
+<UML:Multiplicity xmi.id="DCE.B722EEEB-DA37-E2CF-5E4D-A9E0BAEFF0B4"/></UML:TypedElement.multiplicity></UML:Parameter></UML:Element.ownedElement><UML:Element.presentation>
+</UML:Element.presentation></UML:Operation><UML:Operation visibility="public" isLeaf="false" ownerScope="instance" isAbstract="false" name="setStartDate" xmi.id="DCE.3E49A489-BFAE-F32A-42FE-9759E8513FC5" owner="DCE.0F8FDDCF-D8DC-EC5A-2929-0F5EF73A305C"><UML:Element.ownedElement><UML:Parameter visibility="package" direction="result" isQuery="false" type="DCE.DA27BA19-CDDD-B3CC-A2FA-0DEBD1FCF18D" xmi.id="DCE.EA7029BF-F2FD-9E2C-44B5-1F56D75FCB52" owner="DCE.3E49A489-BFAE-F32A-42FE-9759E8513 [...]
+<UML:Multiplicity xmi.id="DCE.3EA8DD07-0BEB-032A-C9EF-5506027DCDBA"/></UML:TypedElement.multiplicity></UML:Parameter><UML:Parameter visibility="package" isQuery="false" type="DCE.D8756337-EB16-BCDC-2A8A-35DDDD27E378" name="startDate" xmi.id="DCE.62453A63-3A13-F688-CF7D-D48227F572DF" owner="DCE.3E49A489-BFAE-F32A-42FE-9759E8513FC5"><UML:TypedElement.multiplicity>
+<UML:Multiplicity xmi.id="DCE.235206E7-3947-DE33-FE63-BD265D325448"/></UML:TypedElement.multiplicity></UML:Parameter></UML:Element.ownedElement><UML:Element.presentation>
+</UML:Element.presentation></UML:Operation><UML:Operation visibility="public" isLeaf="false" ownerScope="instance" isAbstract="false" name="getEndDate" xmi.id="DCE.011D1F96-7D41-9C67-02A7-A6D99DEE1DA0" owner="DCE.0F8FDDCF-D8DC-EC5A-2929-0F5EF73A305C"><UML:Element.ownedElement><UML:Parameter visibility="package" direction="result" isQuery="false" type="DCE.D8756337-EB16-BCDC-2A8A-35DDDD27E378" xmi.id="DCE.04EB45D8-B940-88F9-D85A-6DFCB482D98B" owner="DCE.011D1F96-7D41-9C67-02A7-A6D99DEE1DA [...]
+<UML:Multiplicity xmi.id="DCE.A1A387C6-31C6-FC42-423A-80CB33B5CC35"/></UML:TypedElement.multiplicity></UML:Parameter></UML:Element.ownedElement><UML:Element.presentation>
+</UML:Element.presentation></UML:Operation><UML:Operation visibility="public" isLeaf="false" ownerScope="instance" isAbstract="false" name="setEndDate" xmi.id="DCE.E587FC19-82C9-EB7B-DAD4-CDBC145DBD88" owner="DCE.0F8FDDCF-D8DC-EC5A-2929-0F5EF73A305C"><UML:Element.ownedElement><UML:Parameter visibility="package" direction="result" isQuery="false" type="DCE.DA27BA19-CDDD-B3CC-A2FA-0DEBD1FCF18D" xmi.id="DCE.326BA2D1-CFB8-6169-555C-D912D16CE9FE" owner="DCE.E587FC19-82C9-EB7B-DAD4-CDBC145DBD8 [...]
+<UML:Multiplicity xmi.id="DCE.7EE820BD-229D-649D-5EB4-7168B3CBE8F2"/></UML:TypedElement.multiplicity></UML:Parameter><UML:Parameter visibility="package" isQuery="false" type="DCE.D8756337-EB16-BCDC-2A8A-35DDDD27E378" name="endDate" xmi.id="DCE.8769F031-E92F-6F23-A544-EA6E436BEB8F" owner="DCE.E587FC19-82C9-EB7B-DAD4-CDBC145DBD88"><UML:TypedElement.multiplicity>
+<UML:Multiplicity xmi.id="DCE.E51B4017-ECE6-90B5-066E-D0EA373E8783"/></UML:TypedElement.multiplicity></UML:Parameter></UML:Element.ownedElement><UML:Element.presentation>
+</UML:Element.presentation></UML:Operation><UML:Operation visibility="public" isLeaf="false" ownerScope="instance" isAbstract="false" name="getSprints" xmi.id="DCE.D1B514EF-BBF2-E754-BDE1-C5A250CC16A5" owner="DCE.0F8FDDCF-D8DC-EC5A-2929-0F5EF73A305C"><UML:Element.ownedElement><UML:Parameter visibility="package" direction="result" isQuery="false" type="DCE.B49486EB-16C8-2B60-D4E7-2D2C2B93146F" xmi.id="DCE.9D0D648B-67CE-4389-6BE7-56C62BE193BC" owner="DCE.D1B514EF-BBF2-E754-BDE1-C5A250CC16A5">
+<UML:TypedElement.multiplicity>
+<UML:Multiplicity xmi.id="DCE.1914E5E3-8C48-C746-22FB-C709EA028EF0">
+<UML:Multiplicity.range><UML:MultiplicityRange lower="0" upper="*" collectionType="List" xmi.id="DCE.A80824AD-D5B8-ACE5-ABBC-1A9F6015D446"/></UML:Multiplicity.range></UML:Multiplicity></UML:TypedElement.multiplicity></UML:Parameter></UML:Element.ownedElement><UML:Element.presentation>
+</UML:Element.presentation></UML:Operation><UML:Operation visibility="public" isLeaf="false" ownerScope="instance" isAbstract="false" name="addSprint" xmi.id="DCE.FCBD6E53-5AD4-D5AB-3D20-7E2A79D56119" owner="DCE.0F8FDDCF-D8DC-EC5A-2929-0F5EF73A305C"><UML:Element.ownedElement><UML:Parameter visibility="package" direction="result" isQuery="false" type="DCE.B078EDD4-EE98-3028-171A-76969AC67476" xmi.id="DCE.ABE42563-CBF5-E7B6-7E7D-ED5A73D079CB" owner="DCE.FCBD6E53-5AD4-D5AB-3D20-7E2A79D56119 [...]
+<UML:Multiplicity xmi.id="DCE.F5E42223-9AFA-B688-5A16-0B009B443C9D"/></UML:TypedElement.multiplicity></UML:Parameter><UML:Parameter visibility="package" isQuery="false" type="DCE.B49486EB-16C8-2B60-D4E7-2D2C2B93146F" name="sprint" xmi.id="DCE.AF8A5143-EA5A-BC73-FCDE-FE06F9A5AC82" owner="DCE.FCBD6E53-5AD4-D5AB-3D20-7E2A79D56119"><UML:TypedElement.multiplicity>
+<UML:Multiplicity xmi.id="DCE.20C0E8D6-FCD0-9513-240B-66A1C6147D26"/></UML:TypedElement.multiplicity></UML:Parameter></UML:Element.ownedElement><UML:Element.presentation>
+</UML:Element.presentation></UML:Operation><UML:Operation visibility="public" isLeaf="false" ownerScope="instance" isAbstract="false" name="removeSpring" xmi.id="DCE.05288B2A-858D-2802-46FF-2E4516C3E72D" owner="DCE.0F8FDDCF-D8DC-EC5A-2929-0F5EF73A305C"><UML:Element.ownedElement><UML:Parameter visibility="package" direction="result" isQuery="false" type="DCE.B078EDD4-EE98-3028-171A-76969AC67476" xmi.id="DCE.00F282E8-4AD1-49EA-15AA-78BC688A2281" owner="DCE.05288B2A-858D-2802-46FF-2E4516C3E [...]
+<UML:Multiplicity xmi.id="DCE.0911E598-D441-D308-F5DC-6346AAD4A16B"/></UML:TypedElement.multiplicity></UML:Parameter><UML:Parameter visibility="package" isQuery="false" type="DCE.B49486EB-16C8-2B60-D4E7-2D2C2B93146F" name="sprint" xmi.id="DCE.F1F03993-B6A9-B3E8-D838-5BA0031DC2D9" owner="DCE.05288B2A-858D-2802-46FF-2E4516C3E72D"><UML:TypedElement.multiplicity>
+<UML:Multiplicity xmi.id="DCE.D43AEFFD-5FC6-4602-FA69-976D94142290"/></UML:TypedElement.multiplicity></UML:Parameter></UML:Element.ownedElement><UML:Element.presentation>
+</UML:Element.presentation></UML:Operation><UML:Operation visibility="public" isLeaf="false" ownerScope="instance" isAbstract="false" name="equals" xmi.id="DCE.133C6533-8EFF-FE3D-34C1-33C3447F03A4" owner="DCE.0F8FDDCF-D8DC-EC5A-2929-0F5EF73A305C" redefinedElement="DCE.7EA92053-614D-5806-CB3B-E98BCCFFB842"><UML:Element.ownedElement><UML:Parameter visibility="package" direction="result" isQuery="false" type="DCE.B078EDD4-EE98-3028-171A-76969AC67476" xmi.id="DCE.A03DCBCE-2636-67B8-0717-61DE [...]
+<UML:Multiplicity xmi.id="DCE.C8FF1BB1-05F8-9B4B-5D39-E69B686CB686"/></UML:TypedElement.multiplicity></UML:Parameter><UML:Parameter visibility="package" isQuery="false" type="DCE.E0DB7AD7-E636-792C-9705-9BC303204296" name="obj" xmi.id="DCE.50889343-4A14-2635-D126-0CEF71EBCF71" owner="DCE.133C6533-8EFF-FE3D-34C1-33C3447F03A4"><UML:TypedElement.multiplicity>
+<UML:Multiplicity xmi.id="DCE.03DF7554-507E-3368-C08B-31825A9C8B77"/></UML:TypedElement.multiplicity></UML:Parameter></UML:Element.ownedElement><UML:Element.presentation>
+</UML:Element.presentation></UML:Operation><UML:Operation visibility="public" isLeaf="false" ownerScope="instance" isAbstract="false" name="hashCode" xmi.id="DCE.5AF92829-C9A7-BAF9-92EC-45B3904CF88A" owner="DCE.0F8FDDCF-D8DC-EC5A-2929-0F5EF73A305C" redefinedElement="DCE.EA800E83-25DA-C021-F223-72873A5797E2"><UML:Element.ownedElement><UML:Parameter visibility="package" direction="result" isQuery="false" type="DCE.981B9FC5-E237-C58C-4FCC-AB34AB8B9AFC" xmi.id="DCE.3330CA8A-6B4A-8697-E5C5-21 [...]
+<UML:Multiplicity xmi.id="DCE.DBC8FD3A-AE86-1CC6-E564-F0B0D3B70C0F"/></UML:TypedElement.multiplicity></UML:Parameter></UML:Element.ownedElement><UML:Element.presentation>
+</UML:Element.presentation></UML:Operation><UML:Operation visibility="public" isLeaf="false" ownerScope="instance" isAbstract="false" name="toString" xmi.id="DCE.2AC16714-0E5C-A9EA-6EE9-2BA81549C80C" owner="DCE.0F8FDDCF-D8DC-EC5A-2929-0F5EF73A305C" redefinedElement="DCE.8567931E-8473-272D-37C1-CBC4D5B52418"><UML:Element.ownedElement><UML:Parameter visibility="package" direction="result" isQuery="false" type="DCE.B0F4883D-A9A7-F729-B7D1-1DD00CABE13C" xmi.id="DCE.A630F939-258B-57AB-B7D1-2B [...]
+<UML:Multiplicity xmi.id="DCE.873AE160-F534-BCD6-5285-C7D13B4CF6FB"/></UML:TypedElement.multiplicity></UML:Parameter></UML:Element.ownedElement><UML:Element.presentation>
+</UML:Element.presentation></UML:Operation>
+<UML:Implementation xmi.id="DCE.D0C66CC1-E767-F23B-A295-78412BA16CB4" owner="DCE.0F8FDDCF-D8DC-EC5A-2929-0F5EF73A305C" client="DCE.0F8FDDCF-D8DC-EC5A-2929-0F5EF73A305C" supplier="DCE.45ACF2D1-4D97-64BC-1200-E4F3C2503510"/></UML:Element.ownedElement>
+<UML:Classifier.generalization>
+<UML:Generalization xmi.id="DCE.A00CC392-AA3C-7505-1A58-84060B42B1E2" specific="DCE.0F8FDDCF-D8DC-EC5A-2929-0F5EF73A305C" general="DCE.AD3D6BCB-9802-F153-947C-D457BC634420"><UML:Element.presentation>
+</UML:Element.presentation></UML:Generalization></UML:Classifier.generalization><UML:Element.presentation>
+</UML:Element.presentation></UML:Class><UML:Enumeration visibility="public" name="TaskStatus" xmi.id="DCE.C74297FA-9515-03B8-DD75-C9D6A9C37278" owner="DCE.7CE8FFFA-3AF9-188D-71FE-E93EB0B49860" associationEnd="DCE.DB436D77-4C7E-7B13-ACCF-7587D3413992"><UML:Enumeration.literal><UML:EnumerationLiteral visibility="package" isLeaf="false" ownerScope="instance" type="int" name="TODO" xmi.id="DCE.3F7B9D28-BA35-A6CD-59CA-FA0048F2174F" enumeration="DCE.C74297FA-9515-03B8-DD75-C9D6A9C37278"><UML:E [...]
+
+</UML:Element.presentation></UML:EnumerationLiteral><UML:EnumerationLiteral visibility="package" isLeaf="false" ownerScope="instance" type="int" name="DONE" xmi.id="DCE.4941C76B-451A-CE6C-4A3E-13AEECE7F8BC" enumeration="DCE.C74297FA-9515-03B8-DD75-C9D6A9C37278"><UML:Element.presentation>
+
+</UML:Element.presentation></UML:EnumerationLiteral><UML:EnumerationLiteral visibility="package" isLeaf="false" ownerScope="instance" type="int" name="WORKING" xmi.id="DCE.20A482D1-6C0F-100E-A5D9-085853E0CA10" enumeration="DCE.C74297FA-9515-03B8-DD75-C9D6A9C37278"><UML:Element.presentation>
+
+</UML:Element.presentation></UML:EnumerationLiteral></UML:Enumeration.literal>
+<UML:Element.ownedElement><UML:SourceFileArtifact sourcefile="../../eclipseProject/src/main/java/jsf2/demo/scrum/model/entities/TaskStatus.java" xmi.id="DCE.3C44CB11-A098-D4A4-30BC-E4DDD8545D36" owner="DCE.C74297FA-9515-03B8-DD75-C9D6A9C37278"/><UML:TaggedValue xmi.id="DCE.95E4528B-EBC4-FBB2-DDF8-FEE434EBDEAC" name="documentation">
+<UML:TaggedValue.dataValue>  @author Dr. Spock (spock at dev.java.net)
+ </UML:TaggedValue.dataValue></UML:TaggedValue></UML:Element.ownedElement><UML:Element.presentation>
+</UML:Element.presentation></UML:Enumeration><UML:Class isAbstract="false" isLeaf="false" visibility="public" name="Task" xmi.id="DCE.BEEF085E-69AA-FA1D-926D-DA8FF9E27BF8" owner="DCE.7CE8FFFA-3AF9-188D-71FE-E93EB0B49860" associationEnd="DCE.FDBD0DB3-5C98-AA1B-3E98-DA8D63F3501E DCE.85E8B563-8445-C502-25C4-113FD381716E DCE.65C1F7FE-F2DA-893D-D3EC-CA16BF86D35A DCE.D8C9D7AE-DD07-ED3D-977B-0191739105E8 DCE.418043DA-C2B4-24CF-3E6A-1E45289BBC72 DCE.56750914-B297-04B9-B5EF-B894C578E5BA DCE.46E83 [...]
+</UML:Element.presentation><UML:TypedElement.multiplicity>
+<UML:Multiplicity xmi.id="DCE.FE88D6AC-0CCF-527D-A020-6851B4612A48"/></UML:TypedElement.multiplicity></UML:Attribute><UML:Attribute visibility="private" isLeaf="false" ownerScope="instance" type="DCE.B0F4883D-A9A7-F729-B7D1-1DD00CABE13C" AssociationType="Aggregation" name="name" xmi.id="DCE.3D3E1503-B755-58FF-7E71-7A39BB83E9EC" owner="DCE.BEEF085E-69AA-FA1D-926D-DA8FF9E27BF8"><UML:Element.presentation>
+</UML:Element.presentation><UML:TypedElement.multiplicity>
+<UML:Multiplicity xmi.id="DCE.E9414B62-5C59-8E22-7A7A-DA578D98DD5B"/></UML:TypedElement.multiplicity><UML:Attribute.default>
+<UML:Expression xmi.id="DCE.15A4E4FA-4ACE-9B05-C391-3097BE4E74BB"/></UML:Attribute.default></UML:Attribute><UML:Attribute visibility="private" isLeaf="false" ownerScope="instance" type="DCE.D8756337-EB16-BCDC-2A8A-35DDDD27E378" AssociationType="Aggregation" name="startDate" xmi.id="DCE.200C8DA3-8102-62E3-1F5B-07A4B04521D9" owner="DCE.BEEF085E-69AA-FA1D-926D-DA8FF9E27BF8"><UML:Element.presentation>
+</UML:Element.presentation><UML:TypedElement.multiplicity>
+<UML:Multiplicity xmi.id="DCE.0164FB7A-5EB4-C2DB-4E19-11F4BDC78404"/></UML:TypedElement.multiplicity><UML:Attribute.default>
+<UML:Expression xmi.id="DCE.A0D895BB-4086-0662-2E92-E08102A4D704"/></UML:Attribute.default></UML:Attribute><UML:Attribute visibility="private" isLeaf="false" ownerScope="instance" type="DCE.D8756337-EB16-BCDC-2A8A-35DDDD27E378" AssociationType="Aggregation" name="endDate" xmi.id="DCE.E77EA899-8C3A-ED7A-3CEF-91E80621E010" owner="DCE.BEEF085E-69AA-FA1D-926D-DA8FF9E27BF8"><UML:Element.presentation>
+</UML:Element.presentation><UML:TypedElement.multiplicity>
+<UML:Multiplicity xmi.id="DCE.31E9FD63-E910-1A86-5881-F34D2E1AC84C"/></UML:TypedElement.multiplicity><UML:Attribute.default>
+<UML:Expression xmi.id="DCE.88EBABFE-9131-8866-1373-30B257D027A4"/></UML:Attribute.default></UML:Attribute><UML:Attribute visibility="private" isLeaf="false" ownerScope="instance" type="TaskStatus" AssociationType="Aggregation" name="status"/><UML:Attribute visibility="private" isLeaf="false" ownerScope="instance" type="Story" AssociationType="Aggregation" name="story"/><UML:Operation visibility="public" isLeaf="false" ownerScope="instance" isAbstract="false" isConstructor="true" name="T [...]
+</UML:Element.presentation></UML:Operation><UML:Operation visibility="public" isLeaf="false" ownerScope="instance" isAbstract="false" isConstructor="true" name="Task" xmi.id="DCE.09DC8AEE-3AC3-C17A-5EAF-5572083394F9" owner="DCE.BEEF085E-69AA-FA1D-926D-DA8FF9E27BF8"><UML:Element.ownedElement><UML:Parameter visibility="package" isQuery="false" type="DCE.B0F4883D-A9A7-F729-B7D1-1DD00CABE13C" name="name" xmi.id="DCE.4FB31F1D-5902-5067-EC45-944826737747" owner="DCE.09DC8AEE-3AC3-C17A-5EAF-557 [...]
+<UML:Multiplicity xmi.id="DCE.C52B6758-A083-C863-6E38-86738BFA6A83"/></UML:TypedElement.multiplicity></UML:Parameter></UML:Element.ownedElement><UML:Element.presentation>
+</UML:Element.presentation></UML:Operation><UML:Operation visibility="public" isLeaf="false" ownerScope="instance" isAbstract="false" isConstructor="true" name="Task" xmi.id="DCE.FA88DD65-BA23-953A-94B1-C200B327EB4D" owner="DCE.BEEF085E-69AA-FA1D-926D-DA8FF9E27BF8"><UML:Element.ownedElement><UML:Parameter visibility="package" isQuery="false" type="DCE.B0F4883D-A9A7-F729-B7D1-1DD00CABE13C" name="name" xmi.id="DCE.7268884A-F692-D04E-06BA-96CD776D727A" owner="DCE.FA88DD65-BA23-953A-94B1-C20 [...]
+<UML:Multiplicity xmi.id="DCE.8FCF11F3-443B-2421-786A-985971FE126F"/></UML:TypedElement.multiplicity></UML:Parameter><UML:Parameter visibility="package" isQuery="false" type="DCE.1B25B69B-B014-F654-2E5A-9547722C2FE2" name="story" xmi.id="DCE.85172183-67C2-C5A6-D9A8-5C755C6F87E2" owner="DCE.FA88DD65-BA23-953A-94B1-C200B327EB4D"><UML:TypedElement.multiplicity>
+<UML:Multiplicity xmi.id="DCE.A1E30FA4-0A69-8843-A91F-84A97B8EF444"/></UML:TypedElement.multiplicity></UML:Parameter></UML:Element.ownedElement><UML:Element.presentation>
+</UML:Element.presentation></UML:Operation><UML:Operation visibility="public" isLeaf="false" ownerScope="instance" isAbstract="false" name="getEndDate" xmi.id="DCE.E76E2BD9-50B5-E7AA-5BCE-057B367F72AD" owner="DCE.BEEF085E-69AA-FA1D-926D-DA8FF9E27BF8"><UML:Element.ownedElement><UML:Parameter visibility="package" direction="result" isQuery="false" type="DCE.D8756337-EB16-BCDC-2A8A-35DDDD27E378" xmi.id="DCE.547BB41C-3B63-8B7E-DDAF-2F0ED808FF13" owner="DCE.E76E2BD9-50B5-E7AA-5BCE-057B367F72A [...]
+<UML:Multiplicity xmi.id="DCE.F24B286D-7479-8FB4-203F-DCC3DCF1D64F"/></UML:TypedElement.multiplicity></UML:Parameter></UML:Element.ownedElement><UML:Element.presentation>
+</UML:Element.presentation></UML:Operation><UML:Operation visibility="public" isLeaf="false" ownerScope="instance" isAbstract="false" name="setEndDate" xmi.id="DCE.4CB06C86-87A5-FEFF-80E3-792D5563C398" owner="DCE.BEEF085E-69AA-FA1D-926D-DA8FF9E27BF8"><UML:Element.ownedElement><UML:Parameter visibility="package" direction="result" isQuery="false" type="DCE.DA27BA19-CDDD-B3CC-A2FA-0DEBD1FCF18D" xmi.id="DCE.9EC4879D-6D44-0A9F-2707-ACF58A31536D" owner="DCE.4CB06C86-87A5-FEFF-80E3-792D5563C39 [...]
+<UML:Multiplicity xmi.id="DCE.A44BA4C8-1B0A-0601-B464-D4A3B59F7515"/></UML:TypedElement.multiplicity></UML:Parameter><UML:Parameter visibility="package" isQuery="false" type="DCE.D8756337-EB16-BCDC-2A8A-35DDDD27E378" name="endDate" xmi.id="DCE.E4D6CC85-16F6-A77D-0E0F-1268FA151BA5" owner="DCE.4CB06C86-87A5-FEFF-80E3-792D5563C398"><UML:TypedElement.multiplicity>
+<UML:Multiplicity xmi.id="DCE.AF618CD1-61FC-DB7C-5C42-B48261F2A1D4"/></UML:TypedElement.multiplicity></UML:Parameter></UML:Element.ownedElement><UML:Element.presentation>
+</UML:Element.presentation></UML:Operation><UML:Operation visibility="protected" isLeaf="false" ownerScope="instance" isAbstract="false" name="changeTaskStatus" xmi.id="DCE.C436F7B9-1106-65AC-EAB9-7BEDEFBBEFBF" owner="DCE.BEEF085E-69AA-FA1D-926D-DA8FF9E27BF8"><UML:Element.ownedElement><UML:Parameter visibility="package" direction="result" isQuery="false" type="DCE.DA27BA19-CDDD-B3CC-A2FA-0DEBD1FCF18D" xmi.id="DCE.AFE31848-553A-3B92-89F9-FB700A54E5C2" owner="DCE.C436F7B9-1106-65AC-EAB9-7B [...]
+<UML:Multiplicity xmi.id="DCE.9977A382-A5C3-6ABC-1D4A-2993A12E772B"/></UML:TypedElement.multiplicity></UML:Parameter><UML:Parameter visibility="package" isQuery="false" type="DCE.D8756337-EB16-BCDC-2A8A-35DDDD27E378" name="startDate" xmi.id="DCE.75BD69CD-8502-F49A-EB20-7791EA7A9FB6" owner="DCE.C436F7B9-1106-65AC-EAB9-7BEDEFBBEFBF"><UML:TypedElement.multiplicity>
+<UML:Multiplicity xmi.id="DCE.E2E16505-5BEB-9183-A3D1-2C7EE03DAE7D"/></UML:TypedElement.multiplicity></UML:Parameter><UML:Parameter visibility="package" isQuery="false" type="DCE.D8756337-EB16-BCDC-2A8A-35DDDD27E378" name="endDate" xmi.id="DCE.7B2A76DC-7B05-0AC1-A027-A5B760A53896" owner="DCE.C436F7B9-1106-65AC-EAB9-7BEDEFBBEFBF"><UML:TypedElement.multiplicity>
+<UML:Multiplicity xmi.id="DCE.000C7348-4FF7-A76D-4456-12E33A52004F"/></UML:TypedElement.multiplicity></UML:Parameter></UML:Element.ownedElement><UML:Element.presentation>
+</UML:Element.presentation></UML:Operation><UML:Operation visibility="public" isLeaf="false" ownerScope="instance" isAbstract="false" name="getName" xmi.id="DCE.3CA74C91-0DD8-F884-1ED6-C855CCCB8A61" owner="DCE.BEEF085E-69AA-FA1D-926D-DA8FF9E27BF8"><UML:Element.ownedElement><UML:Parameter visibility="package" direction="result" isQuery="false" type="DCE.B0F4883D-A9A7-F729-B7D1-1DD00CABE13C" xmi.id="DCE.DFDFFECB-8471-8DF1-8319-0FEE9D674EDF" owner="DCE.3CA74C91-0DD8-F884-1ED6-C855CCCB8A61"> [...]
+<UML:Multiplicity xmi.id="DCE.46403B5A-4679-596F-D872-FF9D431959B5"/></UML:TypedElement.multiplicity></UML:Parameter></UML:Element.ownedElement><UML:Element.presentation>
+</UML:Element.presentation></UML:Operation><UML:Operation visibility="public" isLeaf="false" ownerScope="instance" isAbstract="false" name="setName" xmi.id="DCE.ABD381DC-DAA0-9F48-648B-DE9561AF144A" owner="DCE.BEEF085E-69AA-FA1D-926D-DA8FF9E27BF8"><UML:Element.ownedElement><UML:Parameter visibility="package" direction="result" isQuery="false" type="DCE.DA27BA19-CDDD-B3CC-A2FA-0DEBD1FCF18D" xmi.id="DCE.52F91A00-EFAE-0E6F-EB42-D0BFE9372789" owner="DCE.ABD381DC-DAA0-9F48-648B-DE9561AF144A"> [...]
+<UML:Multiplicity xmi.id="DCE.D1B1815E-030E-50DC-DA82-91DE59E1B768"/></UML:TypedElement.multiplicity></UML:Parameter><UML:Parameter visibility="package" isQuery="false" type="DCE.B0F4883D-A9A7-F729-B7D1-1DD00CABE13C" name="name" xmi.id="DCE.CF74D056-2139-D147-0D84-8288605F8CE5" owner="DCE.ABD381DC-DAA0-9F48-648B-DE9561AF144A"><UML:TypedElement.multiplicity>
+<UML:Multiplicity xmi.id="DCE.688E2D15-CF2F-0D8B-3A83-41ECFA7FE576"/></UML:TypedElement.multiplicity></UML:Parameter></UML:Element.ownedElement><UML:Element.presentation>
+</UML:Element.presentation></UML:Operation><UML:Operation visibility="public" isLeaf="false" ownerScope="instance" isAbstract="false" name="getStartDate" xmi.id="DCE.4CA41201-9C6A-1D8E-2D5E-2CAE0E69686A" owner="DCE.BEEF085E-69AA-FA1D-926D-DA8FF9E27BF8"><UML:Element.ownedElement><UML:Parameter visibility="package" direction="result" isQuery="false" type="DCE.D8756337-EB16-BCDC-2A8A-35DDDD27E378" xmi.id="DCE.16AA2F26-DB44-8415-5B0C-43001E378E06" owner="DCE.4CA41201-9C6A-1D8E-2D5E-2CAE0E696 [...]
+<UML:Multiplicity xmi.id="DCE.15A59492-8F28-6BD5-499C-9289370F1F2C"/></UML:TypedElement.multiplicity></UML:Parameter></UML:Element.ownedElement><UML:Element.presentation>
+</UML:Element.presentation></UML:Operation><UML:Operation visibility="public" isLeaf="false" ownerScope="instance" isAbstract="false" name="setStartDate" xmi.id="DCE.24ED4926-C985-B4E8-0986-C46B52444E3F" owner="DCE.BEEF085E-69AA-FA1D-926D-DA8FF9E27BF8"><UML:Element.ownedElement><UML:Parameter visibility="package" direction="result" isQuery="false" type="DCE.DA27BA19-CDDD-B3CC-A2FA-0DEBD1FCF18D" xmi.id="DCE.8795F8E9-29DF-43CF-329B-EFF09DDFFB80" owner="DCE.24ED4926-C985-B4E8-0986-C46B52444 [...]
+<UML:Multiplicity xmi.id="DCE.5EC80D47-BD35-FF6D-31C9-D326F6AB26E2"/></UML:TypedElement.multiplicity></UML:Parameter><UML:Parameter visibility="package" isQuery="false" type="DCE.D8756337-EB16-BCDC-2A8A-35DDDD27E378" name="startDate" xmi.id="DCE.D51DBD7A-F084-E5CD-E0C0-2485AD275403" owner="DCE.24ED4926-C985-B4E8-0986-C46B52444E3F"><UML:TypedElement.multiplicity>
+<UML:Multiplicity xmi.id="DCE.92AEF008-B9A3-0BAD-F13D-3CC34BD40FF5"/></UML:TypedElement.multiplicity></UML:Parameter></UML:Element.ownedElement><UML:Element.presentation>
+</UML:Element.presentation></UML:Operation><UML:Operation visibility="public" isLeaf="false" ownerScope="instance" isAbstract="false" name="getStatus" xmi.id="DCE.B041B7F3-A7D3-8983-8039-4917EFED88C0" owner="DCE.BEEF085E-69AA-FA1D-926D-DA8FF9E27BF8"><UML:Element.ownedElement><UML:Parameter visibility="package" direction="result" isQuery="false" type="DCE.C74297FA-9515-03B8-DD75-C9D6A9C37278" xmi.id="DCE.C9B00F8C-E6B8-49CE-871C-E1DBB609AD96" owner="DCE.B041B7F3-A7D3-8983-8039-4917EFED88C0 [...]
+<UML:Multiplicity xmi.id="DCE.285F666E-7A75-A1F5-208B-5CBBB41D419F"/></UML:TypedElement.multiplicity></UML:Parameter></UML:Element.ownedElement><UML:Element.presentation>
+</UML:Element.presentation></UML:Operation><UML:Operation visibility="public" isLeaf="false" ownerScope="instance" isAbstract="false" name="setStatus" xmi.id="DCE.9A7D8DCF-C73B-3299-AA0F-824B51FC9D1B" owner="DCE.BEEF085E-69AA-FA1D-926D-DA8FF9E27BF8"><UML:Element.ownedElement><UML:Parameter visibility="package" direction="result" isQuery="false" type="DCE.DA27BA19-CDDD-B3CC-A2FA-0DEBD1FCF18D" xmi.id="DCE.545406E5-3847-7F5D-35C8-F6A9164A861F" owner="DCE.9A7D8DCF-C73B-3299-AA0F-824B51FC9D1B [...]
+<UML:Multiplicity xmi.id="DCE.A15D8779-9996-A638-73D5-60532E57B288"/></UML:TypedElement.multiplicity></UML:Parameter><UML:Parameter visibility="package" isQuery="false" type="DCE.C74297FA-9515-03B8-DD75-C9D6A9C37278" name="status" xmi.id="DCE.029AFBBF-21F0-16E5-6F53-79DA0CBC42BC" owner="DCE.9A7D8DCF-C73B-3299-AA0F-824B51FC9D1B"><UML:TypedElement.multiplicity>
+<UML:Multiplicity xmi.id="DCE.2CB7DAFE-8061-3E28-5790-A8890DC70363"/></UML:TypedElement.multiplicity></UML:Parameter></UML:Element.ownedElement><UML:Element.presentation>
+</UML:Element.presentation></UML:Operation><UML:Operation visibility="public" isLeaf="false" ownerScope="instance" isAbstract="false" name="getStory" xmi.id="DCE.2DD1C21A-B64D-8C62-DD83-729C360197D2" owner="DCE.BEEF085E-69AA-FA1D-926D-DA8FF9E27BF8"><UML:Element.ownedElement><UML:Parameter visibility="package" direction="result" isQuery="false" type="DCE.1B25B69B-B014-F654-2E5A-9547722C2FE2" xmi.id="DCE.8587DD3C-7E59-2499-DFB4-63B5CBD74461" owner="DCE.2DD1C21A-B64D-8C62-DD83-729C360197D2" [...]
+<UML:Multiplicity xmi.id="DCE.B1FE383E-75AC-A6A1-5AFB-C6C03307C493"/></UML:TypedElement.multiplicity></UML:Parameter></UML:Element.ownedElement><UML:Element.presentation>
+</UML:Element.presentation></UML:Operation><UML:Operation visibility="public" isLeaf="false" ownerScope="instance" isAbstract="false" name="setStory" xmi.id="DCE.001D9A2F-49FE-C6F9-A599-04A013850FAE" owner="DCE.BEEF085E-69AA-FA1D-926D-DA8FF9E27BF8"><UML:Element.ownedElement><UML:Parameter visibility="package" direction="result" isQuery="false" type="DCE.DA27BA19-CDDD-B3CC-A2FA-0DEBD1FCF18D" xmi.id="DCE.DDC671C8-B5C3-D870-F8C3-4E9BB1A1E287" owner="DCE.001D9A2F-49FE-C6F9-A599-04A013850FAE" [...]
+<UML:Multiplicity xmi.id="DCE.73252BAF-3386-C5C3-9FA6-5E3557CEB99D"/></UML:TypedElement.multiplicity></UML:Parameter><UML:Parameter visibility="package" isQuery="false" type="DCE.1B25B69B-B014-F654-2E5A-9547722C2FE2" name="story" xmi.id="DCE.F6015D9F-317A-C441-8E67-D823024A09CA" owner="DCE.001D9A2F-49FE-C6F9-A599-04A013850FAE"><UML:TypedElement.multiplicity>
+<UML:Multiplicity xmi.id="DCE.C4F31840-69DE-D6D3-2869-44DC3AF3629F"/></UML:TypedElement.multiplicity></UML:Parameter></UML:Element.ownedElement><UML:Element.presentation>
+</UML:Element.presentation></UML:Operation><UML:Operation visibility="public" isLeaf="false" ownerScope="instance" isAbstract="false" name="equals" xmi.id="DCE.4A801A22-C99B-34A9-F4E3-C004E335DFB4" owner="DCE.BEEF085E-69AA-FA1D-926D-DA8FF9E27BF8" redefinedElement="DCE.7EA92053-614D-5806-CB3B-E98BCCFFB842"><UML:Element.ownedElement><UML:Parameter visibility="package" direction="result" isQuery="false" type="DCE.B078EDD4-EE98-3028-171A-76969AC67476" xmi.id="DCE.FA734E8E-A96C-78E2-FDBF-55EF [...]
+<UML:Multiplicity xmi.id="DCE.46C5F6D8-FA8E-CDAC-97F9-85F3C4132015"/></UML:TypedElement.multiplicity></UML:Parameter><UML:Parameter visibility="package" isQuery="false" type="DCE.E0DB7AD7-E636-792C-9705-9BC303204296" name="obj" xmi.id="DCE.E892ECCF-858D-3A1D-006C-30C89C072730" owner="DCE.4A801A22-C99B-34A9-F4E3-C004E335DFB4"><UML:TypedElement.multiplicity>
+<UML:Multiplicity xmi.id="DCE.F13C678D-45BB-82A6-CEFD-67DE08A773B0"/></UML:TypedElement.multiplicity></UML:Parameter></UML:Element.ownedElement><UML:Element.presentation>
+</UML:Element.presentation></UML:Operation><UML:Operation visibility="public" isLeaf="false" ownerScope="instance" isAbstract="false" name="hashCode" xmi.id="DCE.3E99DB7E-7263-3AEF-4F7B-C278ADFF42D6" owner="DCE.BEEF085E-69AA-FA1D-926D-DA8FF9E27BF8" redefinedElement="DCE.EA800E83-25DA-C021-F223-72873A5797E2"><UML:Element.ownedElement><UML:Parameter visibility="package" direction="result" isQuery="false" type="DCE.981B9FC5-E237-C58C-4FCC-AB34AB8B9AFC" xmi.id="DCE.F9D58555-8C43-7F7E-3ACF-9D [...]
+<UML:Multiplicity xmi.id="DCE.F8EC81EC-9620-3E86-902D-AAFEA8DEB9D9"/></UML:TypedElement.multiplicity></UML:Parameter></UML:Element.ownedElement><UML:Element.presentation>
+</UML:Element.presentation></UML:Operation><UML:Operation visibility="public" isLeaf="false" ownerScope="instance" isAbstract="false" name="toString" xmi.id="DCE.B03398CC-6259-49D4-D4D6-F1D3697CE4B9" owner="DCE.BEEF085E-69AA-FA1D-926D-DA8FF9E27BF8" redefinedElement="DCE.8567931E-8473-272D-37C1-CBC4D5B52418"><UML:Element.ownedElement><UML:Parameter visibility="package" direction="result" isQuery="false" type="DCE.B0F4883D-A9A7-F729-B7D1-1DD00CABE13C" xmi.id="DCE.37282912-D33C-B3DA-1F68-C2 [...]
+<UML:Multiplicity xmi.id="DCE.DC2F1DD8-E6E2-4CFB-18DA-96247B6109A6"/></UML:TypedElement.multiplicity></UML:Parameter></UML:Element.ownedElement><UML:Element.presentation>
+</UML:Element.presentation></UML:Operation>
+<UML:Implementation xmi.id="DCE.AAD6C69F-F586-4655-B303-C56830B12818" owner="DCE.BEEF085E-69AA-FA1D-926D-DA8FF9E27BF8" client="DCE.BEEF085E-69AA-FA1D-926D-DA8FF9E27BF8" supplier="DCE.45ACF2D1-4D97-64BC-1200-E4F3C2503510"/></UML:Element.ownedElement>
+<UML:Classifier.generalization>
+<UML:Generalization xmi.id="DCE.4EC7C1B1-FC0C-88CF-E98E-2467002B451B" specific="DCE.BEEF085E-69AA-FA1D-926D-DA8FF9E27BF8" general="DCE.AD3D6BCB-9802-F153-947C-D457BC634420"><UML:Element.presentation>
+</UML:Element.presentation></UML:Generalization></UML:Classifier.generalization><UML:Element.presentation>
+</UML:Element.presentation></UML:Class><UML:Class isAbstract="false" isLeaf="false" visibility="public" name="Story" xmi.id="DCE.1B25B69B-B014-F654-2E5A-9547722C2FE2" owner="DCE.7CE8FFFA-3AF9-188D-71FE-E93EB0B49860" associationEnd="DCE.91E09B92-3E37-87BA-AB11-E3098C27043B DCE.9908750B-2909-1590-8235-C6FCE440B4BD DCE.20C6BCEB-5B23-50A0-8C8D-4BDCA19DF7C2 DCE.CB243AB5-4019-3469-617B-CAB9556B0503 DCE.0DC81B70-8EEF-4522-09E4-7F2C26DA33A1 DCE.5BEF051F-B131-EDB6-175D-3A96906D67B4 DCE.F58ED97F-1 [...]
+</UML:Element.presentation><UML:TypedElement.multiplicity>
+<UML:Multiplicity xmi.id="DCE.AC8B1B04-68F6-B4AF-1250-6AEF9F978C89"/></UML:TypedElement.multiplicity></UML:Attribute><UML:Attribute visibility="private" isLeaf="false" ownerScope="instance" type="DCE.B0F4883D-A9A7-F729-B7D1-1DD00CABE13C" AssociationType="Aggregation" name="name" xmi.id="DCE.F349715A-0568-E02D-74CF-7916F0244CD9" owner="DCE.1B25B69B-B014-F654-2E5A-9547722C2FE2"><UML:Element.presentation>
+</UML:Element.presentation><UML:TypedElement.multiplicity>
+<UML:Multiplicity xmi.id="DCE.76E69964-2789-03B1-F88A-E9B9DA584D91"/></UML:TypedElement.multiplicity><UML:Attribute.default>
+<UML:Expression xmi.id="DCE.040AE49E-ADB0-8E17-7F94-0B36A4B64480"/></UML:Attribute.default></UML:Attribute><UML:Attribute visibility="private" isLeaf="false" ownerScope="instance" type="DCE.981B9FC5-E237-C58C-4FCC-AB34AB8B9AFC" name="priority" xmi.id="DCE.DC7FDBA8-87F9-1F41-C9D1-F9EB62D624A0" owner="DCE.1B25B69B-B014-F654-2E5A-9547722C2FE2"><UML:Element.presentation>
+</UML:Element.presentation><UML:TypedElement.multiplicity>
+<UML:Multiplicity xmi.id="DCE.69FC1FCD-5848-36D6-B955-54FBFE8FE64F"/></UML:TypedElement.multiplicity><UML:Attribute.default>
+<UML:Expression xmi.id="DCE.AAC8C024-3B62-D01F-236B-F7C28B976B54"/></UML:Attribute.default></UML:Attribute><UML:Attribute visibility="private" isLeaf="false" ownerScope="instance" type="DCE.D8756337-EB16-BCDC-2A8A-35DDDD27E378" AssociationType="Aggregation" name="startDate" xmi.id="DCE.F49C12CA-7001-D146-2E13-A45665E59814" owner="DCE.1B25B69B-B014-F654-2E5A-9547722C2FE2"><UML:Element.presentation>
+</UML:Element.presentation><UML:TypedElement.multiplicity>
+<UML:Multiplicity xmi.id="DCE.7975AF65-C4F4-EF60-145E-AEA3C4CCA0B6"/></UML:TypedElement.multiplicity><UML:Attribute.default>
+<UML:Expression xmi.id="DCE.AA133E39-F8EC-C6B4-B725-A11B65FFFD40"/></UML:Attribute.default></UML:Attribute><UML:Attribute visibility="private" isLeaf="false" ownerScope="instance" type="DCE.D8756337-EB16-BCDC-2A8A-35DDDD27E378" AssociationType="Aggregation" name="endDate" xmi.id="DCE.58B8EB09-B2E3-88FA-D467-36D850F72886" owner="DCE.1B25B69B-B014-F654-2E5A-9547722C2FE2"><UML:Element.presentation>
+</UML:Element.presentation><UML:TypedElement.multiplicity>
+<UML:Multiplicity xmi.id="DCE.AB64071F-29E9-6469-845F-215DF5146767"/></UML:TypedElement.multiplicity><UML:Attribute.default>
+<UML:Expression xmi.id="DCE.D8E8BFBE-D973-2D3E-E8C8-B5B894645978"/></UML:Attribute.default></UML:Attribute><UML:Attribute visibility="private" isLeaf="false" ownerScope="instance" type="DCE.B0F4883D-A9A7-F729-B7D1-1DD00CABE13C" AssociationType="Aggregation" name="acceptance" xmi.id="DCE.55E3D0A7-F5DA-7CBE-7E2F-3E793333824B" owner="DCE.1B25B69B-B014-F654-2E5A-9547722C2FE2"><UML:Element.presentation>
+</UML:Element.presentation><UML:TypedElement.multiplicity>
+<UML:Multiplicity xmi.id="DCE.54DB34B1-C843-7D94-40FF-C2DEF40604CD"/></UML:TypedElement.multiplicity><UML:Attribute.default>
+<UML:Expression xmi.id="DCE.D69BB62D-BB23-5E1E-EC92-013AFB07949C"/></UML:Attribute.default></UML:Attribute><UML:Attribute visibility="private" isLeaf="false" ownerScope="instance" type="DCE.981B9FC5-E237-C58C-4FCC-AB34AB8B9AFC" name="estimation" xmi.id="DCE.DA32DA2A-99D0-5CF0-2658-F9A13444E0A6" owner="DCE.1B25B69B-B014-F654-2E5A-9547722C2FE2"><UML:Element.presentation>
+</UML:Element.presentation><UML:TypedElement.multiplicity>
+<UML:Multiplicity xmi.id="DCE.E29B13F5-9B13-0429-9B75-1E758C5705D3"/></UML:TypedElement.multiplicity><UML:Attribute.default>
+<UML:Expression xmi.id="DCE.F7ADFCD1-152B-86B2-2731-352C695F50AA"/></UML:Attribute.default></UML:Attribute><UML:Attribute visibility="private" isLeaf="false" ownerScope="instance" type="Sprint" AssociationType="Aggregation" name="sprint"/><UML:Attribute visibility="private" isLeaf="false" ownerScope="instance" type="Task" name="tasks">
+</UML:Attribute><UML:Attribute visibility="private" isLeaf="false" ownerScope="instance" type="Task" name="doneTasks">
+</UML:Attribute><UML:Attribute visibility="private" isLeaf="false" ownerScope="instance" type="Task" name="workingTasks">
+</UML:Attribute><UML:Attribute visibility="private" isLeaf="false" ownerScope="instance" type="Task" name="todoTasks">
+</UML:Attribute><UML:Operation visibility="public" isLeaf="false" ownerScope="instance" isAbstract="false" isConstructor="true" name="Story" xmi.id="DCE.5DC00124-33F2-8B1C-B543-7A56F23E76FE" owner="DCE.1B25B69B-B014-F654-2E5A-9547722C2FE2"><UML:Element.presentation>
+</UML:Element.presentation></UML:Operation><UML:Operation visibility="public" isLeaf="false" ownerScope="instance" isAbstract="false" isConstructor="true" name="Story" xmi.id="DCE.BA25C091-91B6-8001-CCEE-B2435A1F22F0" owner="DCE.1B25B69B-B014-F654-2E5A-9547722C2FE2"><UML:Element.ownedElement><UML:Parameter visibility="package" isQuery="false" type="DCE.B0F4883D-A9A7-F729-B7D1-1DD00CABE13C" name="name" xmi.id="DCE.BDB99DD9-55C5-B219-AD3E-9CF789795736" owner="DCE.BA25C091-91B6-8001-CCEE-B2 [...]
+<UML:Multiplicity xmi.id="DCE.49BF1F20-B069-32DB-35FE-D46E030D6BC8"/></UML:TypedElement.multiplicity></UML:Parameter></UML:Element.ownedElement><UML:Element.presentation>
+</UML:Element.presentation></UML:Operation><UML:Operation visibility="public" isLeaf="false" ownerScope="instance" isAbstract="false" isConstructor="true" name="Story" xmi.id="DCE.12DBFFAA-CDF1-D012-D653-0C396999CFF3" owner="DCE.1B25B69B-B014-F654-2E5A-9547722C2FE2"><UML:Element.ownedElement><UML:Parameter visibility="package" isQuery="false" type="DCE.B0F4883D-A9A7-F729-B7D1-1DD00CABE13C" name="name" xmi.id="DCE.4634BC0F-424F-0DE6-F18A-4BE0C6B84F68" owner="DCE.12DBFFAA-CDF1-D012-D653-0C [...]
+<UML:Multiplicity xmi.id="DCE.228E2B07-E40D-3902-D39E-8CE3CFAAE130"/></UML:TypedElement.multiplicity></UML:Parameter><UML:Parameter visibility="package" isQuery="false" type="DCE.B49486EB-16C8-2B60-D4E7-2D2C2B93146F" name="sprint" xmi.id="DCE.26684FD2-4D8E-359A-9136-75DE76A196D6" owner="DCE.12DBFFAA-CDF1-D012-D653-0C396999CFF3"><UML:TypedElement.multiplicity>
+<UML:Multiplicity xmi.id="DCE.A6E72969-71C5-FF08-0F5C-97C010921539"/></UML:TypedElement.multiplicity></UML:Parameter></UML:Element.ownedElement><UML:Element.presentation>
+</UML:Element.presentation></UML:Operation><UML:Operation visibility="public" isLeaf="false" ownerScope="instance" isAbstract="false" name="getAcceptance" xmi.id="DCE.640FE7A2-BAAD-90D1-1D6F-412F7662A1DC" owner="DCE.1B25B69B-B014-F654-2E5A-9547722C2FE2"><UML:Element.ownedElement><UML:Parameter visibility="package" direction="result" isQuery="false" type="DCE.B0F4883D-A9A7-F729-B7D1-1DD00CABE13C" xmi.id="DCE.78103898-9FF9-2C8C-896E-9F034F3E3738" owner="DCE.640FE7A2-BAAD-90D1-1D6F-412F7662 [...]
+<UML:Multiplicity xmi.id="DCE.D76B5ACC-BCF5-FBDE-AD54-74B57D43D554"/></UML:TypedElement.multiplicity></UML:Parameter></UML:Element.ownedElement><UML:Element.presentation>
+</UML:Element.presentation></UML:Operation><UML:Operation visibility="public" isLeaf="false" ownerScope="instance" isAbstract="false" name="setAcceptance" xmi.id="DCE.D4DEF7D9-A1C8-EEE1-9DB1-34DD06FF54D8" owner="DCE.1B25B69B-B014-F654-2E5A-9547722C2FE2"><UML:Element.ownedElement><UML:Parameter visibility="package" direction="result" isQuery="false" type="DCE.DA27BA19-CDDD-B3CC-A2FA-0DEBD1FCF18D" xmi.id="DCE.50CDA8D3-5F0D-A3A6-3BCF-01D01C61F57F" owner="DCE.D4DEF7D9-A1C8-EEE1-9DB1-34DD06FF [...]
+<UML:Multiplicity xmi.id="DCE.9AA0EB00-B99E-5250-2D82-46626F06CF8F"/></UML:TypedElement.multiplicity></UML:Parameter><UML:Parameter visibility="package" isQuery="false" type="DCE.B0F4883D-A9A7-F729-B7D1-1DD00CABE13C" name="acceptance" xmi.id="DCE.9BD69979-65B2-D898-6B38-C2E23360C40B" owner="DCE.D4DEF7D9-A1C8-EEE1-9DB1-34DD06FF54D8"><UML:TypedElement.multiplicity>
+<UML:Multiplicity xmi.id="DCE.7C5E0E75-0865-48D5-064A-0BA8F317B114"/></UML:TypedElement.multiplicity></UML:Parameter></UML:Element.ownedElement><UML:Element.presentation>
+</UML:Element.presentation></UML:Operation><UML:Operation visibility="public" isLeaf="false" ownerScope="instance" isAbstract="false" name="getEndDate" xmi.id="DCE.44EBA6BF-9A80-BAF0-3AD7-1B79033690C6" owner="DCE.1B25B69B-B014-F654-2E5A-9547722C2FE2"><UML:Element.ownedElement><UML:Parameter visibility="package" direction="result" isQuery="false" type="DCE.D8756337-EB16-BCDC-2A8A-35DDDD27E378" xmi.id="DCE.795A2C95-C86D-50C4-0B1E-2070B114A123" owner="DCE.44EBA6BF-9A80-BAF0-3AD7-1B79033690C [...]
+<UML:Multiplicity xmi.id="DCE.3C4F1DC6-6B67-6BC7-9628-3B81F499B0A9"/></UML:TypedElement.multiplicity></UML:Parameter></UML:Element.ownedElement><UML:Element.presentation>
+</UML:Element.presentation></UML:Operation><UML:Operation visibility="public" isLeaf="false" ownerScope="instance" isAbstract="false" name="setEndDate" xmi.id="DCE.B873A2FB-8981-2476-A7A0-2FC074625969" owner="DCE.1B25B69B-B014-F654-2E5A-9547722C2FE2"><UML:Element.ownedElement><UML:Parameter visibility="package" direction="result" isQuery="false" type="DCE.DA27BA19-CDDD-B3CC-A2FA-0DEBD1FCF18D" xmi.id="DCE.49DB69DB-ACAE-3F17-3775-B6EF8F0D9DC2" owner="DCE.B873A2FB-8981-2476-A7A0-2FC07462596 [...]
+<UML:Multiplicity xmi.id="DCE.54BD9254-F886-2507-E89B-6337BE6E960A"/></UML:TypedElement.multiplicity></UML:Parameter><UML:Parameter visibility="package" isQuery="false" type="DCE.D8756337-EB16-BCDC-2A8A-35DDDD27E378" name="endDate" xmi.id="DCE.724C2C40-4AB9-9DCE-B6C4-3F43FCD0C912" owner="DCE.B873A2FB-8981-2476-A7A0-2FC074625969"><UML:TypedElement.multiplicity>
+<UML:Multiplicity xmi.id="DCE.74BB79A0-4764-EEF1-2457-F79EA5C5EDE4"/></UML:TypedElement.multiplicity></UML:Parameter></UML:Element.ownedElement><UML:Element.presentation>
+</UML:Element.presentation></UML:Operation><UML:Operation visibility="public" isLeaf="false" ownerScope="instance" isAbstract="false" name="getEstimation" xmi.id="DCE.A3AA6971-BF60-6650-79D6-F69BA9F210AE" owner="DCE.1B25B69B-B014-F654-2E5A-9547722C2FE2"><UML:Element.ownedElement><UML:Parameter visibility="package" direction="result" isQuery="false" type="DCE.981B9FC5-E237-C58C-4FCC-AB34AB8B9AFC" xmi.id="DCE.1C4F14AA-D6C1-A6D1-340F-D2D2D9EC1666" owner="DCE.A3AA6971-BF60-6650-79D6-F69BA9F2 [...]
+<UML:Multiplicity xmi.id="DCE.BDCCE823-DD83-E06A-B04C-204738200735"/></UML:TypedElement.multiplicity></UML:Parameter></UML:Element.ownedElement><UML:Element.presentation>
+</UML:Element.presentation></UML:Operation><UML:Operation visibility="public" isLeaf="false" ownerScope="instance" isAbstract="false" name="setEstimation" xmi.id="DCE.2707BDD2-9988-EDD4-FE67-4FA1C9490FF2" owner="DCE.1B25B69B-B014-F654-2E5A-9547722C2FE2"><UML:Element.ownedElement><UML:Parameter visibility="package" direction="result" isQuery="false" type="DCE.DA27BA19-CDDD-B3CC-A2FA-0DEBD1FCF18D" xmi.id="DCE.A663A0BD-5AB7-1F58-6A73-BB73D8FF23B9" owner="DCE.2707BDD2-9988-EDD4-FE67-4FA1C949 [...]
+<UML:Multiplicity xmi.id="DCE.72B1BCA6-0256-71EA-EFAD-374163D0880F"/></UML:TypedElement.multiplicity></UML:Parameter><UML:Parameter visibility="package" isQuery="false" direction="in" type="DCE.981B9FC5-E237-C58C-4FCC-AB34AB8B9AFC" name="estimation" xmi.id="DCE.7738DFA8-29FD-1846-6304-7F75B28010D5" owner="DCE.2707BDD2-9988-EDD4-FE67-4FA1C9490FF2"><UML:TypedElement.multiplicity>
+<UML:Multiplicity xmi.id="DCE.B66DDA5F-9C4F-6C85-2FD6-161774EFA71D"/></UML:TypedElement.multiplicity></UML:Parameter></UML:Element.ownedElement><UML:Element.presentation>
+</UML:Element.presentation></UML:Operation><UML:Operation visibility="public" isLeaf="false" ownerScope="instance" isAbstract="false" name="getName" xmi.id="DCE.2FD1951B-DFFC-F7A6-1D1E-2AFB84A6F837" owner="DCE.1B25B69B-B014-F654-2E5A-9547722C2FE2"><UML:Element.ownedElement><UML:Parameter visibility="package" direction="result" isQuery="false" type="DCE.B0F4883D-A9A7-F729-B7D1-1DD00CABE13C" xmi.id="DCE.DBE3A018-B5CC-E629-5FB5-905D9FE8C775" owner="DCE.2FD1951B-DFFC-F7A6-1D1E-2AFB84A6F837"> [...]
+<UML:Multiplicity xmi.id="DCE.3700419A-5E51-EF9D-0205-802D5906EC27"/></UML:TypedElement.multiplicity></UML:Parameter></UML:Element.ownedElement><UML:Element.presentation>
+</UML:Element.presentation></UML:Operation><UML:Operation visibility="public" isLeaf="false" ownerScope="instance" isAbstract="false" name="setName" xmi.id="DCE.97BC3476-74D7-CD1C-82B7-38C5919A4E4E" owner="DCE.1B25B69B-B014-F654-2E5A-9547722C2FE2"><UML:Element.ownedElement><UML:Parameter visibility="package" direction="result" isQuery="false" type="DCE.DA27BA19-CDDD-B3CC-A2FA-0DEBD1FCF18D" xmi.id="DCE.6808CACF-4F49-B786-3655-BF8FA7944E2C" owner="DCE.97BC3476-74D7-CD1C-82B7-38C5919A4E4E"> [...]
+<UML:Multiplicity xmi.id="DCE.A3FE36E9-F26B-1EB9-DA7D-3CE7042229DE"/></UML:TypedElement.multiplicity></UML:Parameter><UML:Parameter visibility="package" isQuery="false" type="DCE.B0F4883D-A9A7-F729-B7D1-1DD00CABE13C" name="name" xmi.id="DCE.8E3F49B3-0614-C5DC-14F4-71B30BB9C43F" owner="DCE.97BC3476-74D7-CD1C-82B7-38C5919A4E4E"><UML:TypedElement.multiplicity>
+<UML:Multiplicity xmi.id="DCE.DE31636C-1374-933E-6E8F-529D4AE92526"/></UML:TypedElement.multiplicity></UML:Parameter></UML:Element.ownedElement><UML:Element.presentation>
+</UML:Element.presentation></UML:Operation><UML:Operation visibility="public" isLeaf="false" ownerScope="instance" isAbstract="false" name="getPriority" xmi.id="DCE.28DA2ED0-A975-6C1C-BBBD-80F6A96FDB91" owner="DCE.1B25B69B-B014-F654-2E5A-9547722C2FE2"><UML:Element.ownedElement><UML:Parameter visibility="package" direction="result" isQuery="false" type="DCE.981B9FC5-E237-C58C-4FCC-AB34AB8B9AFC" xmi.id="DCE.2625178C-3CCD-6B1D-F196-5BBAF05D2B58" owner="DCE.28DA2ED0-A975-6C1C-BBBD-80F6A96FDB [...]
+<UML:Multiplicity xmi.id="DCE.EAB7E82A-66D0-2BFD-E407-BFFE2E737927"/></UML:TypedElement.multiplicity></UML:Parameter></UML:Element.ownedElement><UML:Element.presentation>
+</UML:Element.presentation></UML:Operation><UML:Operation visibility="public" isLeaf="false" ownerScope="instance" isAbstract="false" name="setPriority" xmi.id="DCE.6A41DAC0-14BC-CDCE-3291-C515EE6FDAA2" owner="DCE.1B25B69B-B014-F654-2E5A-9547722C2FE2"><UML:Element.ownedElement><UML:Parameter visibility="package" direction="result" isQuery="false" type="DCE.DA27BA19-CDDD-B3CC-A2FA-0DEBD1FCF18D" xmi.id="DCE.91033151-344C-54EA-9A76-32E28541FF39" owner="DCE.6A41DAC0-14BC-CDCE-3291-C515EE6FDA [...]
+<UML:Multiplicity xmi.id="DCE.03BE2913-9A2E-746C-07DD-E004F8C2EF5B"/></UML:TypedElement.multiplicity></UML:Parameter><UML:Parameter visibility="package" isQuery="false" direction="in" type="DCE.981B9FC5-E237-C58C-4FCC-AB34AB8B9AFC" name="priority" xmi.id="DCE.FB346CD4-51B0-C72E-45E6-6FB2F0BDCA7F" owner="DCE.6A41DAC0-14BC-CDCE-3291-C515EE6FDAA2"><UML:TypedElement.multiplicity>
+<UML:Multiplicity xmi.id="DCE.AF8BB262-B2F8-AA5D-E582-3E96C0B01A76"/></UML:TypedElement.multiplicity></UML:Parameter></UML:Element.ownedElement><UML:Element.presentation>
+</UML:Element.presentation></UML:Operation><UML:Operation visibility="public" isLeaf="false" ownerScope="instance" isAbstract="false" name="getSprint" xmi.id="DCE.9D52DF3D-3F44-D1CC-EBB2-66DA4F347549" owner="DCE.1B25B69B-B014-F654-2E5A-9547722C2FE2"><UML:Element.ownedElement><UML:Parameter visibility="package" direction="result" isQuery="false" type="DCE.B49486EB-16C8-2B60-D4E7-2D2C2B93146F" xmi.id="DCE.EFF274BD-198A-870C-2B65-1A2B491CFDBF" owner="DCE.9D52DF3D-3F44-D1CC-EBB2-66DA4F347549 [...]
+<UML:Multiplicity xmi.id="DCE.96F35369-5DCB-4E23-DE48-10F0E50FEC36"/></UML:TypedElement.multiplicity></UML:Parameter></UML:Element.ownedElement><UML:Element.presentation>
+</UML:Element.presentation></UML:Operation><UML:Operation visibility="public" isLeaf="false" ownerScope="instance" isAbstract="false" name="setSprint" xmi.id="DCE.F21C6334-227E-AE43-1812-CBA6A70AC682" owner="DCE.1B25B69B-B014-F654-2E5A-9547722C2FE2"><UML:Element.ownedElement><UML:Parameter visibility="package" direction="result" isQuery="false" type="DCE.DA27BA19-CDDD-B3CC-A2FA-0DEBD1FCF18D" xmi.id="DCE.10984914-6C6C-5059-E70E-8C13E2888F08" owner="DCE.F21C6334-227E-AE43-1812-CBA6A70AC682 [...]
+<UML:Multiplicity xmi.id="DCE.9A3E7C39-2D8C-4AF9-077C-460B5BB1182E"/></UML:TypedElement.multiplicity></UML:Parameter><UML:Parameter visibility="package" isQuery="false" type="DCE.B49486EB-16C8-2B60-D4E7-2D2C2B93146F" name="sprint" xmi.id="DCE.8FEA0B9D-921C-E0A1-95EB-FC98D96B518A" owner="DCE.F21C6334-227E-AE43-1812-CBA6A70AC682"><UML:TypedElement.multiplicity>
+<UML:Multiplicity xmi.id="DCE.79569AA4-4697-C5C3-773E-016118D333D1"/></UML:TypedElement.multiplicity></UML:Parameter></UML:Element.ownedElement><UML:Element.presentation>
+</UML:Element.presentation></UML:Operation><UML:Operation visibility="public" isLeaf="false" ownerScope="instance" isAbstract="false" name="getStartDate" xmi.id="DCE.DEC678CA-FE7D-A562-824E-276DACBB0865" owner="DCE.1B25B69B-B014-F654-2E5A-9547722C2FE2"><UML:Element.ownedElement><UML:Parameter visibility="package" direction="result" isQuery="false" type="DCE.D8756337-EB16-BCDC-2A8A-35DDDD27E378" xmi.id="DCE.128DA256-97D0-590D-4979-62AC97BA4FEA" owner="DCE.DEC678CA-FE7D-A562-824E-276DACBB0 [...]
+<UML:Multiplicity xmi.id="DCE.0535BCED-E784-A29D-6DA3-8398CD55A1BA"/></UML:TypedElement.multiplicity></UML:Parameter></UML:Element.ownedElement><UML:Element.presentation>
+</UML:Element.presentation></UML:Operation><UML:Operation visibility="public" isLeaf="false" ownerScope="instance" isAbstract="false" name="setStartDate" xmi.id="DCE.CB55C334-2D50-53CB-3F52-4B921F61C200" owner="DCE.1B25B69B-B014-F654-2E5A-9547722C2FE2"><UML:Element.ownedElement><UML:Parameter visibility="package" direction="result" isQuery="false" type="DCE.DA27BA19-CDDD-B3CC-A2FA-0DEBD1FCF18D" xmi.id="DCE.B973ACA0-7894-9905-2D5B-F9B676D05B78" owner="DCE.CB55C334-2D50-53CB-3F52-4B921F61C [...]
+<UML:Multiplicity xmi.id="DCE.40CC179E-7495-578E-1A92-74C4ABF038CC"/></UML:TypedElement.multiplicity></UML:Parameter><UML:Parameter visibility="package" isQuery="false" type="DCE.D8756337-EB16-BCDC-2A8A-35DDDD27E378" name="startDate" xmi.id="DCE.73987564-FF54-9F3D-1937-9263F365BFA8" owner="DCE.CB55C334-2D50-53CB-3F52-4B921F61C200"><UML:TypedElement.multiplicity>
+<UML:Multiplicity xmi.id="DCE.4CC1291C-DD22-AEBA-C5FE-D1C89464F826"/></UML:TypedElement.multiplicity></UML:Parameter></UML:Element.ownedElement><UML:Element.presentation>
+</UML:Element.presentation></UML:Operation><UML:Operation visibility="public" isLeaf="false" ownerScope="instance" isAbstract="false" name="getTasks" xmi.id="DCE.5B06F096-823B-D0AB-C300-EF408B83B3EE" owner="DCE.1B25B69B-B014-F654-2E5A-9547722C2FE2"><UML:Element.ownedElement><UML:Parameter visibility="package" direction="result" isQuery="false" type="DCE.BEEF085E-69AA-FA1D-926D-DA8FF9E27BF8" xmi.id="DCE.D09AACEA-CEEA-3C7C-2F93-8C7F40517F36" owner="DCE.5B06F096-823B-D0AB-C300-EF408B83B3EE">
+<UML:TypedElement.multiplicity>
+<UML:Multiplicity xmi.id="DCE.662E1CFE-4159-B543-7122-A4C435BF1530">
+<UML:Multiplicity.range><UML:MultiplicityRange lower="0" upper="*" collectionType="List" xmi.id="DCE.DD71EEEC-AC74-711D-F869-D2E0443874D8"/></UML:Multiplicity.range></UML:Multiplicity></UML:TypedElement.multiplicity></UML:Parameter></UML:Element.ownedElement><UML:Element.presentation>
+</UML:Element.presentation></UML:Operation><UML:Operation visibility="public" isLeaf="false" ownerScope="instance" isAbstract="false" name="getDoneTasks" xmi.id="DCE.B941E525-E8D8-E1C4-53A9-5181240EE77C" owner="DCE.1B25B69B-B014-F654-2E5A-9547722C2FE2"><UML:Element.ownedElement><UML:Parameter visibility="package" direction="result" isQuery="false" type="DCE.BEEF085E-69AA-FA1D-926D-DA8FF9E27BF8" xmi.id="DCE.D424A144-E721-0182-43CD-C7D9F4BE8270" owner="DCE.B941E525-E8D8-E1C4-53A9-5181240EE77C">
+<UML:TypedElement.multiplicity>
+<UML:Multiplicity xmi.id="DCE.35BE3D6B-2CE3-FC92-C856-9802DA4E49DD">
+<UML:Multiplicity.range><UML:MultiplicityRange lower="0" upper="*" collectionType="List" xmi.id="DCE.49B9AE03-5F44-02C9-84CB-CBB343247F42"/></UML:Multiplicity.range></UML:Multiplicity></UML:TypedElement.multiplicity></UML:Parameter></UML:Element.ownedElement><UML:Element.presentation>
+</UML:Element.presentation></UML:Operation><UML:Operation visibility="public" isLeaf="false" ownerScope="instance" isAbstract="false" name="getWorkingTasks" xmi.id="DCE.0EEA97E1-E062-C778-4642-A198B08F6CB9" owner="DCE.1B25B69B-B014-F654-2E5A-9547722C2FE2"><UML:Element.ownedElement><UML:Parameter visibility="package" direction="result" isQuery="false" type="DCE.BEEF085E-69AA-FA1D-926D-DA8FF9E27BF8" xmi.id="DCE.1D954C89-80EC-6FE0-7BB2-A6DE4C1B4C45" owner="DCE.0EEA97E1-E062-C778-4642-A198B0 [...]
+<UML:TypedElement.multiplicity>
+<UML:Multiplicity xmi.id="DCE.D7277CE2-63B2-BE79-79EA-16DEA33EF089">
+<UML:Multiplicity.range><UML:MultiplicityRange lower="0" upper="*" collectionType="List" xmi.id="DCE.47A11E22-DF0C-BD35-8039-CA64A8F6DF15"/></UML:Multiplicity.range></UML:Multiplicity></UML:TypedElement.multiplicity></UML:Parameter></UML:Element.ownedElement><UML:Element.presentation>
+</UML:Element.presentation></UML:Operation><UML:Operation visibility="public" isLeaf="false" ownerScope="instance" isAbstract="false" name="getTodoTasks" xmi.id="DCE.FD169905-AD17-0516-8907-6614D4F7738C" owner="DCE.1B25B69B-B014-F654-2E5A-9547722C2FE2"><UML:Element.ownedElement><UML:Parameter visibility="package" direction="result" isQuery="false" type="DCE.BEEF085E-69AA-FA1D-926D-DA8FF9E27BF8" xmi.id="DCE.4CA77826-8F08-BDF1-04B4-087D1A89B34C" owner="DCE.FD169905-AD17-0516-8907-6614D4F7738C">
+<UML:TypedElement.multiplicity>
+<UML:Multiplicity xmi.id="DCE.5DB6A04B-F4B3-62DA-C3EB-35E79153399B">
+<UML:Multiplicity.range><UML:MultiplicityRange lower="0" upper="*" collectionType="List" xmi.id="DCE.68D5CBD2-76BD-537F-898D-EFA448BB14B9"/></UML:Multiplicity.range></UML:Multiplicity></UML:TypedElement.multiplicity></UML:Parameter></UML:Element.ownedElement><UML:Element.presentation>
+</UML:Element.presentation></UML:Operation><UML:Operation visibility="private" isLeaf="false" ownerScope="instance" isAbstract="false" name="getTasks" xmi.id="DCE.E5DBD6EF-2B4E-7380-8686-EA26EB1CB984" owner="DCE.1B25B69B-B014-F654-2E5A-9547722C2FE2"><UML:Element.ownedElement><UML:Parameter visibility="package" direction="result" isQuery="false" type="DCE.BEEF085E-69AA-FA1D-926D-DA8FF9E27BF8" xmi.id="DCE.EBC8F38C-6B9D-E510-CA30-2CDECE007E68" owner="DCE.E5DBD6EF-2B4E-7380-8686-EA26EB1CB984">
+<UML:TypedElement.multiplicity>
+<UML:Multiplicity xmi.id="DCE.AC86DCEF-AA04-8BCE-CA71-239DDD760CCC">
+<UML:Multiplicity.range><UML:MultiplicityRange lower="0" upper="*" collectionType="List" xmi.id="DCE.FEF64498-D411-6A87-8EC7-5A49DBB8C65C"/></UML:Multiplicity.range></UML:Multiplicity></UML:TypedElement.multiplicity></UML:Parameter><UML:Parameter visibility="package" isQuery="false" type="DCE.C74297FA-9515-03B8-DD75-C9D6A9C37278" name="status" xmi.id="DCE.5B98B8DF-CBDF-CF4C-4E7D-2320BA57F5B3" owner="DCE.E5DBD6EF-2B4E-7380-8686-EA26EB1CB984"><UML:TypedElement.multiplicity>
+<UML:Multiplicity xmi.id="DCE.769CFD8A-F97A-B475-2DB1-F7DBB811A4E8"/></UML:TypedElement.multiplicity></UML:Parameter></UML:Element.ownedElement><UML:Element.presentation>
+</UML:Element.presentation></UML:Operation><UML:Operation visibility="public" isLeaf="false" ownerScope="instance" isAbstract="false" name="addTask" xmi.id="DCE.51DB7A6D-5FD5-4474-562B-0234679171CB" owner="DCE.1B25B69B-B014-F654-2E5A-9547722C2FE2"><UML:Element.ownedElement><UML:Parameter visibility="package" direction="result" isQuery="false" type="DCE.B078EDD4-EE98-3028-171A-76969AC67476" xmi.id="DCE.F17B2CFA-2F56-8297-359A-83F5AFE2A669" owner="DCE.51DB7A6D-5FD5-4474-562B-0234679171CB"> [...]
+<UML:Multiplicity xmi.id="DCE.94A71286-FDE5-3BAF-B18D-A16CB5690E23"/></UML:TypedElement.multiplicity></UML:Parameter><UML:Parameter visibility="package" isQuery="false" type="DCE.BEEF085E-69AA-FA1D-926D-DA8FF9E27BF8" name="task" xmi.id="DCE.B4A912E6-F477-7B53-C9AA-1B987304EA92" owner="DCE.51DB7A6D-5FD5-4474-562B-0234679171CB"><UML:TypedElement.multiplicity>
+<UML:Multiplicity xmi.id="DCE.AAAFCCD2-EF63-7D95-4574-66E6D946D772"/></UML:TypedElement.multiplicity></UML:Parameter></UML:Element.ownedElement><UML:Element.presentation>
+</UML:Element.presentation></UML:Operation><UML:Operation visibility="public" isLeaf="false" ownerScope="instance" isAbstract="false" name="removeTask" xmi.id="DCE.2ADA3836-FAEC-FA25-A29F-DE4DF7B6E696" owner="DCE.1B25B69B-B014-F654-2E5A-9547722C2FE2"><UML:Element.ownedElement><UML:Parameter visibility="package" direction="result" isQuery="false" type="DCE.B078EDD4-EE98-3028-171A-76969AC67476" xmi.id="DCE.A1E1D83C-3B70-9747-3B2A-60A1F8D8CC5D" owner="DCE.2ADA3836-FAEC-FA25-A29F-DE4DF7B6E69 [...]
+<UML:Multiplicity xmi.id="DCE.8885B6C2-1BCA-30E4-EE08-27A4BE7EC997"/></UML:TypedElement.multiplicity></UML:Parameter><UML:Parameter visibility="package" isQuery="false" type="DCE.BEEF085E-69AA-FA1D-926D-DA8FF9E27BF8" name="task" xmi.id="DCE.CA0022C3-2D0D-A89A-D3B3-82E3B1D0A191" owner="DCE.2ADA3836-FAEC-FA25-A29F-DE4DF7B6E696"><UML:TypedElement.multiplicity>
+<UML:Multiplicity xmi.id="DCE.D2B8D9AF-DFB9-D5EA-FB0D-427BBE58BE1A"/></UML:TypedElement.multiplicity></UML:Parameter></UML:Element.ownedElement><UML:Element.presentation>
+</UML:Element.presentation></UML:Operation><UML:Operation visibility="public" isLeaf="false" ownerScope="instance" isAbstract="false" name="equals" xmi.id="DCE.8FA4C70C-843B-00AC-56B3-57D858D852CC" owner="DCE.1B25B69B-B014-F654-2E5A-9547722C2FE2" redefinedElement="DCE.7EA92053-614D-5806-CB3B-E98BCCFFB842"><UML:Element.ownedElement><UML:Parameter visibility="package" direction="result" isQuery="false" type="DCE.B078EDD4-EE98-3028-171A-76969AC67476" xmi.id="DCE.EBE5BE2A-AC50-6654-0BC7-ED05 [...]
+<UML:Multiplicity xmi.id="DCE.F4823EE0-5FAE-B8F3-9257-4A1D571100B5"/></UML:TypedElement.multiplicity></UML:Parameter><UML:Parameter visibility="package" isQuery="false" type="DCE.E0DB7AD7-E636-792C-9705-9BC303204296" name="obj" xmi.id="DCE.E2B220FD-0967-EAC5-E336-5290215F5861" owner="DCE.8FA4C70C-843B-00AC-56B3-57D858D852CC"><UML:TypedElement.multiplicity>
+<UML:Multiplicity xmi.id="DCE.BD8C0A88-F8D5-6480-7C87-B5BE0DA53ED5"/></UML:TypedElement.multiplicity></UML:Parameter></UML:Element.ownedElement><UML:Element.presentation>
+</UML:Element.presentation></UML:Operation><UML:Operation visibility="public" isLeaf="false" ownerScope="instance" isAbstract="false" name="hashCode" xmi.id="DCE.DBB3AADD-3B9D-818F-52FA-F453E3084A45" owner="DCE.1B25B69B-B014-F654-2E5A-9547722C2FE2" redefinedElement="DCE.EA800E83-25DA-C021-F223-72873A5797E2"><UML:Element.ownedElement><UML:Parameter visibility="package" direction="result" isQuery="false" type="DCE.981B9FC5-E237-C58C-4FCC-AB34AB8B9AFC" xmi.id="DCE.7DF4608C-4D40-1BAC-CA15-91 [...]
+<UML:Multiplicity xmi.id="DCE.50267CBE-CC26-BF86-F135-58698CB9B732"/></UML:TypedElement.multiplicity></UML:Parameter></UML:Element.ownedElement><UML:Element.presentation>
+</UML:Element.presentation></UML:Operation><UML:Operation visibility="public" isLeaf="false" ownerScope="instance" isAbstract="false" name="toString" xmi.id="DCE.0C972AB0-4498-324D-3F9B-CC629EE64FD5" owner="DCE.1B25B69B-B014-F654-2E5A-9547722C2FE2" redefinedElement="DCE.8567931E-8473-272D-37C1-CBC4D5B52418"><UML:Element.ownedElement><UML:Parameter visibility="package" direction="result" isQuery="false" type="DCE.B0F4883D-A9A7-F729-B7D1-1DD00CABE13C" xmi.id="DCE.F8A59FAC-4CF5-FA23-39AC-61 [...]
+<UML:Multiplicity xmi.id="DCE.E086805B-1E1B-FEDF-994F-8FD0E78FEAE2"/></UML:TypedElement.multiplicity></UML:Parameter></UML:Element.ownedElement><UML:Element.presentation>
+</UML:Element.presentation></UML:Operation>
+<UML:Implementation xmi.id="DCE.4C453170-7A49-30BE-EA81-41E60D4AE9A2" owner="DCE.1B25B69B-B014-F654-2E5A-9547722C2FE2" client="DCE.1B25B69B-B014-F654-2E5A-9547722C2FE2" supplier="DCE.45ACF2D1-4D97-64BC-1200-E4F3C2503510"/></UML:Element.ownedElement>
+<UML:Classifier.generalization>
+<UML:Generalization xmi.id="DCE.1B5C45C4-8A61-0A06-EA89-1CCE445D50F5" specific="DCE.1B25B69B-B014-F654-2E5A-9547722C2FE2" general="DCE.AD3D6BCB-9802-F153-947C-D457BC634420"><UML:Element.presentation>
+</UML:Element.presentation></UML:Generalization></UML:Classifier.generalization><UML:Element.presentation>
+</UML:Element.presentation></UML:Class><UML:Class isAbstract="true" isLeaf="false" visibility="public" name="AbstractEntity" xmi.id="DCE.AD3D6BCB-9802-F153-947C-D457BC634420" owner="DCE.7CE8FFFA-3AF9-188D-71FE-E93EB0B49860" specialization="DCE.1B5C45C4-8A61-0A06-EA89-1CCE445D50F5 DCE.A00CC392-AA3C-7505-1A58-84060B42B1E2 DCE.A7A4755C-6364-D6AA-DA1B-F74D0915D4C1 DCE.4EC7C1B1-FC0C-88CF-E98E-2467002B451B" clientDependency="DCE.201D5B16-0701-C6AC-E9E4-146111769115 DCE.EF168D5D-30D3-85D4-E0A4- [...]
+</UML:Element.presentation><UML:TypedElement.multiplicity>
+<UML:Multiplicity xmi.id="DCE.B35BF70F-9868-4683-D059-587C1361C228"/></UML:TypedElement.multiplicity><UML:Attribute.default>
+<UML:Expression xmi.id="DCE.B3A9E401-426E-9DC7-F15A-7B5D778E0CF1"/></UML:Attribute.default></UML:Attribute><UML:Operation visibility="public" isLeaf="false" ownerScope="instance" isAbstract="false" name="getId" xmi.id="DCE.D76DA95B-EF29-EE86-DF9C-160F6F3A4A9C" owner="DCE.AD3D6BCB-9802-F153-947C-D457BC634420" redefinedElement="DCE.8AA48DB0-7855-9435-3CA2-BE0F71B34E48"><UML:Element.ownedElement><UML:Parameter visibility="package" direction="result" isQuery="false" type="DCE.D5CD24C5-6534-2 [...]
+<UML:Multiplicity xmi.id="DCE.70222F8E-2AE0-BA12-B36E-C66D7F93AC80"/></UML:TypedElement.multiplicity></UML:Parameter></UML:Element.ownedElement><UML:Element.presentation>
+</UML:Element.presentation></UML:Operation><UML:Operation visibility="public" isLeaf="false" ownerScope="instance" isAbstract="false" name="setId" xmi.id="DCE.47FE3B94-BE21-A64F-A699-7F7201DD2BCA" owner="DCE.AD3D6BCB-9802-F153-947C-D457BC634420"><UML:Element.ownedElement><UML:Parameter visibility="package" direction="result" isQuery="false" type="DCE.DA27BA19-CDDD-B3CC-A2FA-0DEBD1FCF18D" xmi.id="DCE.B32C5398-58B4-906F-6EBF-5227DD45B095" owner="DCE.47FE3B94-BE21-A64F-A699-7F7201DD2BCA"><U [...]
+<UML:Multiplicity xmi.id="DCE.A61AF2BE-48B6-6F67-6349-6E41ECB1AEA4"/></UML:TypedElement.multiplicity></UML:Parameter><UML:Parameter visibility="package" isQuery="false" type="DCE.D5CD24C5-6534-24F4-74D8-B7092875161C" name="id" xmi.id="DCE.5A02036A-45DF-3341-8769-071B5363F911" owner="DCE.47FE3B94-BE21-A64F-A699-7F7201DD2BCA"><UML:TypedElement.multiplicity>
+<UML:Multiplicity xmi.id="DCE.FE745C90-1981-0367-EA60-47608CD40C58"/></UML:TypedElement.multiplicity></UML:Parameter></UML:Element.ownedElement><UML:Element.presentation>
+</UML:Element.presentation></UML:Operation><UML:Operation visibility="public" isLeaf="false" ownerScope="instance" isAbstract="false" name="isNew" xmi.id="DCE.EC8F32C4-CDEF-2BF5-69D1-1E62AD8D4549" owner="DCE.AD3D6BCB-9802-F153-947C-D457BC634420" redefinedElement="DCE.14E0D15E-3F41-916A-AB61-8A44B87E84EA"><UML:Element.ownedElement><UML:Parameter visibility="package" direction="result" isQuery="false" type="DCE.B078EDD4-EE98-3028-171A-76969AC67476" xmi.id="DCE.6E065E91-27AD-91E6-9F10-AE9D9 [...]
+<UML:Multiplicity xmi.id="DCE.31F5DFE0-9B42-CB9D-747D-DEDA679A979E"/></UML:TypedElement.multiplicity></UML:Parameter></UML:Element.ownedElement><UML:Element.presentation>
+</UML:Element.presentation></UML:Operation><UML:Operation visibility="public" isLeaf="false" ownerScope="instance" isAbstract="true" name="equals" xmi.id="DCE.7EA92053-614D-5806-CB3B-E98BCCFFB842" owner="DCE.AD3D6BCB-9802-F153-947C-D457BC634420" redefiningElement="DCE.8FA4C70C-843B-00AC-56B3-57D858D852CC DCE.C1C2086A-A696-81F1-AE22-3FCCC5D66385 DCE.133C6533-8EFF-FE3D-34C1-33C3447F03A4 DCE.4A801A22-C99B-34A9-F4E3-C004E335DFB4"><UML:Element.ownedElement><UML:Parameter visibility="package"  [...]
+<UML:Multiplicity xmi.id="DCE.6113BD15-43AA-F455-BD7E-B3E069CB2260"/></UML:TypedElement.multiplicity></UML:Parameter><UML:Parameter visibility="package" isQuery="false" type="DCE.E0DB7AD7-E636-792C-9705-9BC303204296" name="object" xmi.id="DCE.5D70DBF4-4CE3-BD8D-B753-1C1AFA463090" owner="DCE.7EA92053-614D-5806-CB3B-E98BCCFFB842"><UML:TypedElement.multiplicity>
+<UML:Multiplicity xmi.id="DCE.30EDED4E-E47C-96C8-4E4C-E4FE051AC5EB"/></UML:TypedElement.multiplicity></UML:Parameter></UML:Element.ownedElement><UML:Element.presentation>
+</UML:Element.presentation></UML:Operation><UML:Operation visibility="public" isLeaf="false" ownerScope="instance" isAbstract="true" name="hashCode" xmi.id="DCE.EA800E83-25DA-C021-F223-72873A5797E2" owner="DCE.AD3D6BCB-9802-F153-947C-D457BC634420" redefiningElement="DCE.DBB3AADD-3B9D-818F-52FA-F453E3084A45 DCE.A3041566-F215-2661-A1A9-BD5F8FFC5661 DCE.5AF92829-C9A7-BAF9-92EC-45B3904CF88A DCE.3E99DB7E-7263-3AEF-4F7B-C278ADFF42D6"><UML:Element.ownedElement><UML:Parameter visibility="package [...]
+<UML:Multiplicity xmi.id="DCE.5925437B-5D5D-8084-573C-340E370AB4F3"/></UML:TypedElement.multiplicity></UML:Parameter></UML:Element.ownedElement><UML:Element.presentation>
+</UML:Element.presentation></UML:Operation><UML:Operation visibility="public" isLeaf="false" ownerScope="instance" isAbstract="true" name="toString" xmi.id="DCE.8567931E-8473-272D-37C1-CBC4D5B52418" owner="DCE.AD3D6BCB-9802-F153-947C-D457BC634420" redefiningElement="DCE.0C972AB0-4498-324D-3F9B-CC629EE64FD5 DCE.E9CD1B2A-F101-8666-1552-FC84BA83B9AA DCE.2AC16714-0E5C-A9EA-6EE9-2BA81549C80C DCE.B03398CC-6259-49D4-D4D6-F1D3697CE4B9"><UML:Element.ownedElement><UML:Parameter visibility="package [...]
+<UML:Multiplicity xmi.id="DCE.EB713B3C-8E40-9CA1-AAAA-67874B4D8D3B"/></UML:TypedElement.multiplicity></UML:Parameter></UML:Element.ownedElement><UML:Element.presentation>
+</UML:Element.presentation></UML:Operation>
+<UML:Implementation xmi.id="DCE.201D5B16-0701-C6AC-E9E4-146111769115" owner="DCE.AD3D6BCB-9802-F153-947C-D457BC634420" client="DCE.AD3D6BCB-9802-F153-947C-D457BC634420" supplier="DCE.78DDE7E6-65BD-C677-2C0E-23139242F136"/>
+<UML:Operation xmi.id="DCE.CA918B02-0EB5-0A24-4DF4-75FA8E7B1FD3" name="getId" isQuery="false" isAbstract="false" redefinedElement="DCE.8AA48DB0-7855-9435-3CA2-BE0F71B34E48" owner="DCE.AD3D6BCB-9802-F153-947C-D457BC634420"><UML:Element.presentation>
+</UML:Element.presentation></UML:Operation></UML:Element.ownedElement>
+<UML:Element.presentation>
+</UML:Element.presentation></UML:Class><UML:Class isAbstract="false" isLeaf="false" visibility="public" name="Sprint" xmi.id="DCE.B49486EB-16C8-2B60-D4E7-2D2C2B93146F" owner="DCE.7CE8FFFA-3AF9-188D-71FE-E93EB0B49860" associationEnd="DCE.88189B29-36CB-BD7F-789B-5DCE10401537 DCE.10ADD8CF-E4DB-C9C7-7690-7F6705C66835 DCE.400568BF-DC82-2F08-F023-113045BA221C DCE.F0E710E8-1CCA-DC09-3593-2499AB674CED DCE.3EBF30DA-1B3B-2EA0-1698-1AEFBD8410E0 DCE.B85D660C-0068-5F4A-ED93-CF3699D5B2C1 DCE.EE8958B2- [...]
+</UML:Element.presentation><UML:TypedElement.multiplicity>
+<UML:Multiplicity xmi.id="DCE.5F5A1D1A-3EB6-517D-C650-9B28ED52C4D5"/></UML:TypedElement.multiplicity></UML:Attribute><UML:Attribute visibility="private" isLeaf="false" ownerScope="instance" type="DCE.B0F4883D-A9A7-F729-B7D1-1DD00CABE13C" AssociationType="Aggregation" name="name" xmi.id="DCE.AC3645E6-C0B0-9D36-7415-B7E45FEC9E13" owner="DCE.B49486EB-16C8-2B60-D4E7-2D2C2B93146F"><UML:Element.presentation>
+</UML:Element.presentation><UML:TypedElement.multiplicity>
+<UML:Multiplicity xmi.id="DCE.FC9880C3-C241-8B9C-3659-06B464845F4A"/></UML:TypedElement.multiplicity><UML:Attribute.default>
+<UML:Expression xmi.id="DCE.63594474-E4D8-69E3-6352-2A9F15889E12"/></UML:Attribute.default></UML:Attribute><UML:Attribute visibility="private" isLeaf="false" ownerScope="instance" type="DCE.B0F4883D-A9A7-F729-B7D1-1DD00CABE13C" AssociationType="Aggregation" name="goals" xmi.id="DCE.19CA1743-0CA2-D7F0-662A-5E2125F456AD" owner="DCE.B49486EB-16C8-2B60-D4E7-2D2C2B93146F"><UML:Element.presentation>
+</UML:Element.presentation><UML:TypedElement.multiplicity>
+<UML:Multiplicity xmi.id="DCE.EDB99754-B33D-A146-0FC7-EC396850FA19"/></UML:TypedElement.multiplicity><UML:Attribute.default>
+<UML:Expression xmi.id="DCE.098A5A5A-6A0D-AA36-37F5-86725544D8F2"/></UML:Attribute.default></UML:Attribute><UML:Attribute visibility="private" isLeaf="false" ownerScope="instance" type="DCE.D8756337-EB16-BCDC-2A8A-35DDDD27E378" AssociationType="Aggregation" name="startDate" xmi.id="DCE.B2DCC4D6-E23E-4B99-F559-2332F5B31815" owner="DCE.B49486EB-16C8-2B60-D4E7-2D2C2B93146F"><UML:Element.presentation>
+</UML:Element.presentation><UML:TypedElement.multiplicity>
+<UML:Multiplicity xmi.id="DCE.2C83C7AD-48B0-F4C9-7634-4960D3AB5D8E"/></UML:TypedElement.multiplicity><UML:Attribute.default>
+<UML:Expression xmi.id="DCE.1025737F-54AF-B5E3-F971-1EA2050FBE64"/></UML:Attribute.default></UML:Attribute><UML:Attribute visibility="private" isLeaf="false" ownerScope="instance" type="DCE.D8756337-EB16-BCDC-2A8A-35DDDD27E378" AssociationType="Aggregation" name="endDate" xmi.id="DCE.42889ED1-18DA-D61D-204A-5CB163A6A809" owner="DCE.B49486EB-16C8-2B60-D4E7-2D2C2B93146F"><UML:Element.presentation>
+</UML:Element.presentation><UML:TypedElement.multiplicity>
+<UML:Multiplicity xmi.id="DCE.B03BA074-BC08-AE1D-82CB-A0A4A85554C8"/></UML:TypedElement.multiplicity><UML:Attribute.default>
+<UML:Expression xmi.id="DCE.B885E79C-BBFE-EEBD-225C-4161422E31FF"/></UML:Attribute.default></UML:Attribute><UML:Attribute visibility="private" isLeaf="false" ownerScope="instance" type="DCE.981B9FC5-E237-C58C-4FCC-AB34AB8B9AFC" name="iterationScope" xmi.id="DCE.E8CC176D-8044-CD71-7AB6-B6420585F423" owner="DCE.B49486EB-16C8-2B60-D4E7-2D2C2B93146F"><UML:Element.presentation>
+</UML:Element.presentation><UML:TypedElement.multiplicity>
+<UML:Multiplicity xmi.id="DCE.67EB8A8C-7790-2A61-0A53-EE1A508DDA96"/></UML:TypedElement.multiplicity><UML:Attribute.default>
+<UML:Expression xmi.id="DCE.498BA6D4-61B3-97F7-F320-4C40A94E504D"/></UML:Attribute.default></UML:Attribute><UML:Attribute visibility="private" isLeaf="false" ownerScope="instance" type="DCE.981B9FC5-E237-C58C-4FCC-AB34AB8B9AFC" name="gainedStoryPoints" xmi.id="DCE.F0F6F7B8-425D-5447-120C-628499BF1E78" owner="DCE.B49486EB-16C8-2B60-D4E7-2D2C2B93146F"><UML:Element.presentation>
+</UML:Element.presentation><UML:TypedElement.multiplicity>
+<UML:Multiplicity xmi.id="DCE.8251F8FB-C7A7-B908-6C14-F4CD78434F0D"/></UML:TypedElement.multiplicity><UML:Attribute.default>
+<UML:Expression xmi.id="DCE.8E4D06D2-6B18-DD6E-9B6E-6463833293E2"/></UML:Attribute.default></UML:Attribute><UML:Attribute visibility="private" isLeaf="false" ownerScope="instance" type="DCE.D8756337-EB16-BCDC-2A8A-35DDDD27E378" AssociationType="Aggregation" name="dailyMeetingTime" xmi.id="DCE.28E053CF-671E-B55A-BFA6-A98F977EB6B3" owner="DCE.B49486EB-16C8-2B60-D4E7-2D2C2B93146F"><UML:Element.presentation>
+</UML:Element.presentation><UML:TypedElement.multiplicity>
+<UML:Multiplicity xmi.id="DCE.C68EC526-3202-7D4F-2FB9-524CA3B0ACFB"/></UML:TypedElement.multiplicity><UML:Attribute.default>
+<UML:Expression xmi.id="DCE.2CFED9FF-E26B-1E42-B4B7-19F9D7B58861"/></UML:Attribute.default></UML:Attribute><UML:Attribute visibility="private" isLeaf="false" ownerScope="instance" type="Story" name="stories">
+</UML:Attribute><UML:Attribute visibility="private" isLeaf="false" ownerScope="instance" type="Project" AssociationType="Aggregation" name="project"/><UML:Operation visibility="public" isLeaf="false" ownerScope="instance" isAbstract="false" isConstructor="true" name="Sprint" xmi.id="DCE.CB66E647-2676-DFDF-0437-2A34643D67A5" owner="DCE.B49486EB-16C8-2B60-D4E7-2D2C2B93146F"><UML:Element.presentation>
+</UML:Element.presentation></UML:Operation><UML:Operation visibility="public" isLeaf="false" ownerScope="instance" isAbstract="false" isConstructor="true" name="Sprint" xmi.id="DCE.5A3D84F5-AA94-6540-D229-CFF83D5073FA" owner="DCE.B49486EB-16C8-2B60-D4E7-2D2C2B93146F"><UML:Element.ownedElement><UML:Parameter visibility="package" isQuery="false" type="DCE.B0F4883D-A9A7-F729-B7D1-1DD00CABE13C" name="name" xmi.id="DCE.D882E789-6976-23C8-55D4-DE434924D76D" owner="DCE.5A3D84F5-AA94-6540-D229-C [...]
+<UML:Multiplicity xmi.id="DCE.87328DD5-082F-D0A8-46C9-CBFD5CB0009E"/></UML:TypedElement.multiplicity></UML:Parameter></UML:Element.ownedElement><UML:Element.presentation>
+</UML:Element.presentation></UML:Operation><UML:Operation visibility="public" isLeaf="false" ownerScope="instance" isAbstract="false" isConstructor="true" name="Sprint" xmi.id="DCE.D2C2459F-89D0-D42D-41E0-DFCE1A00211C" owner="DCE.B49486EB-16C8-2B60-D4E7-2D2C2B93146F"><UML:Element.ownedElement><UML:Parameter visibility="package" isQuery="false" type="DCE.B0F4883D-A9A7-F729-B7D1-1DD00CABE13C" name="name" xmi.id="DCE.C8713846-D5D6-9789-413E-481EA0012DED" owner="DCE.D2C2459F-89D0-D42D-41E0-D [...]
+<UML:Multiplicity xmi.id="DCE.E4A1EC67-B96A-1F4D-9E19-DE2BEDCDFEF0"/></UML:TypedElement.multiplicity></UML:Parameter><UML:Parameter visibility="package" isQuery="false" type="DCE.0F8FDDCF-D8DC-EC5A-2929-0F5EF73A305C" name="project" xmi.id="DCE.57F7DF9E-C358-0DE2-1D28-B0534242B61F" owner="DCE.D2C2459F-89D0-D42D-41E0-DFCE1A00211C"><UML:TypedElement.multiplicity>
+<UML:Multiplicity xmi.id="DCE.F4EC325F-AD57-1AAB-D975-B6823E22BC29"/></UML:TypedElement.multiplicity></UML:Parameter></UML:Element.ownedElement><UML:Element.presentation>
+</UML:Element.presentation></UML:Operation><UML:Operation visibility="public" isLeaf="false" ownerScope="instance" isAbstract="false" name="getName" xmi.id="DCE.CD3B1655-AFED-C829-6F5E-BF22E9E7111E" owner="DCE.B49486EB-16C8-2B60-D4E7-2D2C2B93146F"><UML:Element.ownedElement><UML:Parameter visibility="package" direction="result" isQuery="false" type="DCE.B0F4883D-A9A7-F729-B7D1-1DD00CABE13C" xmi.id="DCE.168D33D5-9F77-B9E5-0032-4898E2698755" owner="DCE.CD3B1655-AFED-C829-6F5E-BF22E9E7111E"> [...]
+<UML:Multiplicity xmi.id="DCE.BC88C12D-34BB-73F7-F3ED-826F51DBA29B"/></UML:TypedElement.multiplicity></UML:Parameter></UML:Element.ownedElement><UML:Element.presentation>
+</UML:Element.presentation></UML:Operation><UML:Operation visibility="public" isLeaf="false" ownerScope="instance" isAbstract="false" name="setName" xmi.id="DCE.13307545-AC0C-4DAB-ED8F-D84871503EDA" owner="DCE.B49486EB-16C8-2B60-D4E7-2D2C2B93146F"><UML:Element.ownedElement><UML:Parameter visibility="package" direction="result" isQuery="false" type="DCE.DA27BA19-CDDD-B3CC-A2FA-0DEBD1FCF18D" xmi.id="DCE.4C755AB9-B895-A5F3-84B0-8B89A33E5748" owner="DCE.13307545-AC0C-4DAB-ED8F-D84871503EDA"> [...]
+<UML:Multiplicity xmi.id="DCE.0C1DDD17-E2D8-9A39-C253-2DE6C82232FF"/></UML:TypedElement.multiplicity></UML:Parameter><UML:Parameter visibility="package" isQuery="false" type="DCE.B0F4883D-A9A7-F729-B7D1-1DD00CABE13C" name="name" xmi.id="DCE.E42112F4-F213-FB76-944C-02A507FBB4ED" owner="DCE.13307545-AC0C-4DAB-ED8F-D84871503EDA"><UML:TypedElement.multiplicity>
+<UML:Multiplicity xmi.id="DCE.FF763556-443B-6062-C606-32E10F3F0365"/></UML:TypedElement.multiplicity></UML:Parameter></UML:Element.ownedElement><UML:Element.presentation>
+</UML:Element.presentation></UML:Operation><UML:Operation visibility="public" isLeaf="false" ownerScope="instance" isAbstract="false" name="getGoals" xmi.id="DCE.45F1CA31-782A-F53A-A752-427C83E04350" owner="DCE.B49486EB-16C8-2B60-D4E7-2D2C2B93146F"><UML:Element.ownedElement><UML:Parameter visibility="package" direction="result" isQuery="false" type="DCE.B0F4883D-A9A7-F729-B7D1-1DD00CABE13C" xmi.id="DCE.266BE23C-326B-A058-DCE5-CE4FE2BD538E" owner="DCE.45F1CA31-782A-F53A-A752-427C83E04350" [...]
+<UML:Multiplicity xmi.id="DCE.0FCF2303-86FE-CA1A-3500-5B6152A7BAD7"/></UML:TypedElement.multiplicity></UML:Parameter></UML:Element.ownedElement><UML:Element.presentation>
+</UML:Element.presentation></UML:Operation><UML:Operation visibility="public" isLeaf="false" ownerScope="instance" isAbstract="false" name="setGoals" xmi.id="DCE.6B3BE6B4-1DD8-D89F-E242-C5E3F949E5BE" owner="DCE.B49486EB-16C8-2B60-D4E7-2D2C2B93146F"><UML:Element.ownedElement><UML:Parameter visibility="package" direction="result" isQuery="false" type="DCE.DA27BA19-CDDD-B3CC-A2FA-0DEBD1FCF18D" xmi.id="DCE.4E1D4E3A-2C66-94FB-AB8E-068331EC1201" owner="DCE.6B3BE6B4-1DD8-D89F-E242-C5E3F949E5BE" [...]
+<UML:Multiplicity xmi.id="DCE.757C3F6E-7964-8B46-0EDC-997448C05D12"/></UML:TypedElement.multiplicity></UML:Parameter><UML:Parameter visibility="package" isQuery="false" type="DCE.B0F4883D-A9A7-F729-B7D1-1DD00CABE13C" name="goals" xmi.id="DCE.F0B8BBDB-5763-546E-AFC7-3273DDFF1B6D" owner="DCE.6B3BE6B4-1DD8-D89F-E242-C5E3F949E5BE"><UML:TypedElement.multiplicity>
+<UML:Multiplicity xmi.id="DCE.5FA01E47-FB87-80AE-8C0F-EA6F32CDEBC5"/></UML:TypedElement.multiplicity></UML:Parameter></UML:Element.ownedElement><UML:Element.presentation>
+</UML:Element.presentation></UML:Operation><UML:Operation visibility="public" isLeaf="false" ownerScope="instance" isAbstract="false" name="getStartDate" xmi.id="DCE.F1AB19D2-6122-D90F-DF12-63D0D7F44A14" owner="DCE.B49486EB-16C8-2B60-D4E7-2D2C2B93146F"><UML:Element.ownedElement><UML:Parameter visibility="package" direction="result" isQuery="false" type="DCE.D8756337-EB16-BCDC-2A8A-35DDDD27E378" xmi.id="DCE.B51539E7-A062-11DF-54D1-1B4D16D9A7E3" owner="DCE.F1AB19D2-6122-D90F-DF12-63D0D7F44 [...]
+<UML:Multiplicity xmi.id="DCE.83112746-3B8E-1D57-3730-D38FBEED8D0A"/></UML:TypedElement.multiplicity></UML:Parameter></UML:Element.ownedElement><UML:Element.presentation>
+</UML:Element.presentation></UML:Operation><UML:Operation visibility="public" isLeaf="false" ownerScope="instance" isAbstract="false" name="setStartDate" xmi.id="DCE.0E6EC9AF-07D1-6AE9-DFAE-FD71DD8AF319" owner="DCE.B49486EB-16C8-2B60-D4E7-2D2C2B93146F"><UML:Element.ownedElement><UML:Parameter visibility="package" direction="result" isQuery="false" type="DCE.DA27BA19-CDDD-B3CC-A2FA-0DEBD1FCF18D" xmi.id="DCE.140DDD98-CDD1-D068-9BFC-A527C9D9D651" owner="DCE.0E6EC9AF-07D1-6AE9-DFAE-FD71DD8AF [...]
+<UML:Multiplicity xmi.id="DCE.076EA85B-EBE2-8A49-3DC8-0425158429A2"/></UML:TypedElement.multiplicity></UML:Parameter><UML:Parameter visibility="package" isQuery="false" type="DCE.D8756337-EB16-BCDC-2A8A-35DDDD27E378" name="startDate" xmi.id="DCE.D461D00F-CA29-BC7C-9588-41EF9B80119C" owner="DCE.0E6EC9AF-07D1-6AE9-DFAE-FD71DD8AF319"><UML:TypedElement.multiplicity>
+<UML:Multiplicity xmi.id="DCE.57BF7C54-CBA6-0870-302C-92AA69AC5077"/></UML:TypedElement.multiplicity></UML:Parameter></UML:Element.ownedElement><UML:Element.presentation>
+</UML:Element.presentation></UML:Operation><UML:Operation visibility="public" isLeaf="false" ownerScope="instance" isAbstract="false" name="getEndDate" xmi.id="DCE.1919FD19-6ED2-1DEA-7178-CAC9D4FFE5CF" owner="DCE.B49486EB-16C8-2B60-D4E7-2D2C2B93146F"><UML:Element.ownedElement><UML:Parameter visibility="package" direction="result" isQuery="false" type="DCE.D8756337-EB16-BCDC-2A8A-35DDDD27E378" xmi.id="DCE.93F8B506-2BE5-A50C-0D57-545F6EF2D7FF" owner="DCE.1919FD19-6ED2-1DEA-7178-CAC9D4FFE5C [...]
+<UML:Multiplicity xmi.id="DCE.CD008A51-5848-B7D6-35A3-5631C6669D41"/></UML:TypedElement.multiplicity></UML:Parameter></UML:Element.ownedElement><UML:Element.presentation>
+</UML:Element.presentation></UML:Operation><UML:Operation visibility="public" isLeaf="false" ownerScope="instance" isAbstract="false" name="setEndDate" xmi.id="DCE.65F0ABBF-B4FF-A08B-65AB-DD1B7723416D" owner="DCE.B49486EB-16C8-2B60-D4E7-2D2C2B93146F"><UML:Element.ownedElement><UML:Parameter visibility="package" direction="result" isQuery="false" type="DCE.DA27BA19-CDDD-B3CC-A2FA-0DEBD1FCF18D" xmi.id="DCE.B8102264-6B34-B8CF-0E48-FFDDC7025008" owner="DCE.65F0ABBF-B4FF-A08B-65AB-DD1B7723416 [...]
+<UML:Multiplicity xmi.id="DCE.05AF49D1-D672-5CBE-4B46-9264A542A519"/></UML:TypedElement.multiplicity></UML:Parameter><UML:Parameter visibility="package" isQuery="false" type="DCE.D8756337-EB16-BCDC-2A8A-35DDDD27E378" name="endDate" xmi.id="DCE.CC684809-45BF-CFBA-E2CA-AD4C2222AB10" owner="DCE.65F0ABBF-B4FF-A08B-65AB-DD1B7723416D"><UML:TypedElement.multiplicity>
+<UML:Multiplicity xmi.id="DCE.E583FC33-C8E5-F9C2-0F84-66BC1F0EB145"/></UML:TypedElement.multiplicity></UML:Parameter></UML:Element.ownedElement><UML:Element.presentation>
+</UML:Element.presentation></UML:Operation><UML:Operation visibility="public" isLeaf="false" ownerScope="instance" isAbstract="false" name="getIterationScope" xmi.id="DCE.F1D6FDA9-B1FF-E9A7-FFBC-C7546F81E9EE" owner="DCE.B49486EB-16C8-2B60-D4E7-2D2C2B93146F"><UML:Element.ownedElement><UML:Parameter visibility="package" direction="result" isQuery="false" type="DCE.981B9FC5-E237-C58C-4FCC-AB34AB8B9AFC" xmi.id="DCE.1AAF3232-C8A4-10BA-E94E-FB471F0B3BDD" owner="DCE.F1D6FDA9-B1FF-E9A7-FFBC-C754 [...]
+<UML:Multiplicity xmi.id="DCE.C37EB639-E7E1-DE02-467E-7AD5CCF736AE"/></UML:TypedElement.multiplicity></UML:Parameter></UML:Element.ownedElement><UML:Element.presentation>
+</UML:Element.presentation></UML:Operation><UML:Operation visibility="public" isLeaf="false" ownerScope="instance" isAbstract="false" name="setIterationScope" xmi.id="DCE.4BAC4243-71D1-8EE0-D599-8B9D6B7C526E" owner="DCE.B49486EB-16C8-2B60-D4E7-2D2C2B93146F"><UML:Element.ownedElement><UML:Parameter visibility="package" direction="result" isQuery="false" type="DCE.DA27BA19-CDDD-B3CC-A2FA-0DEBD1FCF18D" xmi.id="DCE.58BD3B80-4664-6E09-8022-25E60BCB6C4F" owner="DCE.4BAC4243-71D1-8EE0-D599-8B9D [...]
+<UML:Multiplicity xmi.id="DCE.A51F9946-12EC-C045-51D5-C1446634BCAE"/></UML:TypedElement.multiplicity></UML:Parameter><UML:Parameter visibility="package" isQuery="false" direction="in" type="DCE.981B9FC5-E237-C58C-4FCC-AB34AB8B9AFC" name="iterationScope" xmi.id="DCE.F8EE9453-BD26-35CA-65A7-CF79860A7D94" owner="DCE.4BAC4243-71D1-8EE0-D599-8B9D6B7C526E"><UML:TypedElement.multiplicity>
+<UML:Multiplicity xmi.id="DCE.5DA33C84-37FE-689E-8EA9-CF72774C5D29"/></UML:TypedElement.multiplicity></UML:Parameter></UML:Element.ownedElement><UML:Element.presentation>
+</UML:Element.presentation></UML:Operation><UML:Operation visibility="public" isLeaf="false" ownerScope="instance" isAbstract="false" name="getGainedStoryPoints" xmi.id="DCE.40510472-914F-28B6-EDB2-36C982238B49" owner="DCE.B49486EB-16C8-2B60-D4E7-2D2C2B93146F"><UML:Element.ownedElement><UML:Parameter visibility="package" direction="result" isQuery="false" type="DCE.981B9FC5-E237-C58C-4FCC-AB34AB8B9AFC" xmi.id="DCE.4C06F521-CB45-69E1-6F31-8CD59B838443" owner="DCE.40510472-914F-28B6-EDB2-3 [...]
+<UML:Multiplicity xmi.id="DCE.EABB02D9-6336-DF2B-B588-997945BDB8C5"/></UML:TypedElement.multiplicity></UML:Parameter></UML:Element.ownedElement><UML:Element.presentation>
+</UML:Element.presentation></UML:Operation><UML:Operation visibility="public" isLeaf="false" ownerScope="instance" isAbstract="false" name="setGainedStoryPoints" xmi.id="DCE.535F4AC1-9028-8021-B9BB-766C37EAADFE" owner="DCE.B49486EB-16C8-2B60-D4E7-2D2C2B93146F"><UML:Element.ownedElement><UML:Parameter visibility="package" direction="result" isQuery="false" type="DCE.DA27BA19-CDDD-B3CC-A2FA-0DEBD1FCF18D" xmi.id="DCE.65CD7739-FEE5-4228-EF5D-29BD1FD39B1A" owner="DCE.535F4AC1-9028-8021-B9BB-7 [...]
+<UML:Multiplicity xmi.id="DCE.7064D66B-4B15-4913-E7C1-DB4E42882C1D"/></UML:TypedElement.multiplicity></UML:Parameter><UML:Parameter visibility="package" isQuery="false" direction="in" type="DCE.981B9FC5-E237-C58C-4FCC-AB34AB8B9AFC" name="gainedStoryPoints" xmi.id="DCE.BCD52B69-AF41-6B46-E782-7AB284C75AAC" owner="DCE.535F4AC1-9028-8021-B9BB-766C37EAADFE"><UML:TypedElement.multiplicity>
+<UML:Multiplicity xmi.id="DCE.453997DE-08A2-94A7-6534-762DBEDA8BA6"/></UML:TypedElement.multiplicity></UML:Parameter></UML:Element.ownedElement><UML:Element.presentation>
+</UML:Element.presentation></UML:Operation><UML:Operation visibility="public" isLeaf="false" ownerScope="instance" isAbstract="false" name="getDailyMeetingTime" xmi.id="DCE.1DA3E8B9-B916-BB16-6193-E18849CF73C8" owner="DCE.B49486EB-16C8-2B60-D4E7-2D2C2B93146F"><UML:Element.ownedElement><UML:Parameter visibility="package" direction="result" isQuery="false" type="DCE.D8756337-EB16-BCDC-2A8A-35DDDD27E378" xmi.id="DCE.CFD97F56-E2CA-9681-5C1E-97246176A654" owner="DCE.1DA3E8B9-B916-BB16-6193-E1 [...]
+<UML:Multiplicity xmi.id="DCE.E42C45C7-8641-B739-636A-61F37E6A2E30"/></UML:TypedElement.multiplicity></UML:Parameter></UML:Element.ownedElement><UML:Element.presentation>
+</UML:Element.presentation></UML:Operation><UML:Operation visibility="public" isLeaf="false" ownerScope="instance" isAbstract="false" name="setDailyMeetingTime" xmi.id="DCE.96FBF01A-8279-BB10-AEFE-927448DEBD09" owner="DCE.B49486EB-16C8-2B60-D4E7-2D2C2B93146F"><UML:Element.ownedElement><UML:Parameter visibility="package" direction="result" isQuery="false" type="DCE.DA27BA19-CDDD-B3CC-A2FA-0DEBD1FCF18D" xmi.id="DCE.A566ABB0-2066-602B-FF0F-F497502D802B" owner="DCE.96FBF01A-8279-BB10-AEFE-92 [...]
+<UML:Multiplicity xmi.id="DCE.B07B299C-60ED-D822-DDC7-C11BB3CB0404"/></UML:TypedElement.multiplicity></UML:Parameter><UML:Parameter visibility="package" isQuery="false" type="DCE.D8756337-EB16-BCDC-2A8A-35DDDD27E378" name="dailyMeetingTime" xmi.id="DCE.19A58857-EDC0-60B3-0ACE-6B35944ECE2F" owner="DCE.96FBF01A-8279-BB10-AEFE-927448DEBD09"><UML:TypedElement.multiplicity>
+<UML:Multiplicity xmi.id="DCE.EBD45BB5-03EF-E7EE-665A-8C0015D9D20E"/></UML:TypedElement.multiplicity></UML:Parameter></UML:Element.ownedElement><UML:Element.presentation>
+</UML:Element.presentation></UML:Operation><UML:Operation visibility="public" isLeaf="false" ownerScope="instance" isAbstract="false" name="getStories" xmi.id="DCE.CE48BDEB-E629-D8AB-F8EC-5BF5BB800DCA" owner="DCE.B49486EB-16C8-2B60-D4E7-2D2C2B93146F"><UML:Element.ownedElement><UML:Parameter visibility="package" direction="result" isQuery="false" type="DCE.1B25B69B-B014-F654-2E5A-9547722C2FE2" xmi.id="DCE.7F6A2511-ABF1-0A93-45A9-FCAD63890A53" owner="DCE.CE48BDEB-E629-D8AB-F8EC-5BF5BB800DCA">
+<UML:TypedElement.multiplicity>
+<UML:Multiplicity xmi.id="DCE.F97D1912-00D4-58AB-2D0B-777C2BE0E01C">
+<UML:Multiplicity.range><UML:MultiplicityRange lower="0" upper="*" collectionType="List" xmi.id="DCE.A7498B4A-C4CE-B2E6-8063-BCFADB060518"/></UML:Multiplicity.range></UML:Multiplicity></UML:TypedElement.multiplicity></UML:Parameter></UML:Element.ownedElement><UML:Element.presentation>
+</UML:Element.presentation></UML:Operation><UML:Operation visibility="public" isLeaf="false" ownerScope="instance" isAbstract="false" name="addStory" xmi.id="DCE.8BA7692A-7964-011D-E85E-FCEEBC98149B" owner="DCE.B49486EB-16C8-2B60-D4E7-2D2C2B93146F"><UML:Element.ownedElement><UML:Parameter visibility="package" direction="result" isQuery="false" type="DCE.B078EDD4-EE98-3028-171A-76969AC67476" xmi.id="DCE.B82750CD-C492-983F-E6A4-5FD56E139CAC" owner="DCE.8BA7692A-7964-011D-E85E-FCEEBC98149B" [...]
+<UML:Multiplicity xmi.id="DCE.DC2D1037-1517-E832-6508-4755B6077CC2"/></UML:TypedElement.multiplicity></UML:Parameter><UML:Parameter visibility="package" isQuery="false" type="DCE.1B25B69B-B014-F654-2E5A-9547722C2FE2" name="story" xmi.id="DCE.D098CD7E-5ABB-EB51-80D9-F0FB70C8A59E" owner="DCE.8BA7692A-7964-011D-E85E-FCEEBC98149B"><UML:TypedElement.multiplicity>
+<UML:Multiplicity xmi.id="DCE.18762B15-E8F9-ED87-5EE8-46FF03E40A01"/></UML:TypedElement.multiplicity></UML:Parameter></UML:Element.ownedElement><UML:Element.presentation>
+</UML:Element.presentation></UML:Operation><UML:Operation visibility="public" isLeaf="false" ownerScope="instance" isAbstract="false" name="removeStory" xmi.id="DCE.03B4FA98-C2BA-1F87-7988-EE74E0AE1645" owner="DCE.B49486EB-16C8-2B60-D4E7-2D2C2B93146F"><UML:Element.ownedElement><UML:Parameter visibility="package" direction="result" isQuery="false" type="DCE.B078EDD4-EE98-3028-171A-76969AC67476" xmi.id="DCE.36AD7C50-1AEA-F76C-B327-6DEF9D62210D" owner="DCE.03B4FA98-C2BA-1F87-7988-EE74E0AE16 [...]
+<UML:Multiplicity xmi.id="DCE.10B3EC13-12ED-6139-4444-209F06784906"/></UML:TypedElement.multiplicity></UML:Parameter><UML:Parameter visibility="package" isQuery="false" type="DCE.1B25B69B-B014-F654-2E5A-9547722C2FE2" name="story" xmi.id="DCE.29B3D3BB-5662-8BB0-9414-9904D8A57151" owner="DCE.03B4FA98-C2BA-1F87-7988-EE74E0AE1645"><UML:TypedElement.multiplicity>
+<UML:Multiplicity xmi.id="DCE.F7C5BFAA-9C24-2DA3-E04E-01B42EC3DFC8"/></UML:TypedElement.multiplicity></UML:Parameter></UML:Element.ownedElement><UML:Element.presentation>
+</UML:Element.presentation></UML:Operation><UML:Operation visibility="public" isLeaf="false" ownerScope="instance" isAbstract="false" name="getProject" xmi.id="DCE.9C64AF60-00B7-EEBD-3119-F7A35B159E66" owner="DCE.B49486EB-16C8-2B60-D4E7-2D2C2B93146F"><UML:Element.ownedElement><UML:Parameter visibility="package" direction="result" isQuery="false" type="DCE.0F8FDDCF-D8DC-EC5A-2929-0F5EF73A305C" xmi.id="DCE.2E5A8B49-7365-9544-F732-704CDD3E75BD" owner="DCE.9C64AF60-00B7-EEBD-3119-F7A35B159E6 [...]
+<UML:Multiplicity xmi.id="DCE.31D58857-7F55-29FC-A942-5C86577636F2"/></UML:TypedElement.multiplicity></UML:Parameter></UML:Element.ownedElement><UML:Element.presentation>
+</UML:Element.presentation></UML:Operation><UML:Operation visibility="public" isLeaf="false" ownerScope="instance" isAbstract="false" name="setProject" xmi.id="DCE.9E15823A-B970-A339-7F26-D075DA288EA2" owner="DCE.B49486EB-16C8-2B60-D4E7-2D2C2B93146F"><UML:Element.ownedElement><UML:Parameter visibility="package" direction="result" isQuery="false" type="DCE.DA27BA19-CDDD-B3CC-A2FA-0DEBD1FCF18D" xmi.id="DCE.265D65A9-EC86-CE20-465F-AC98BD742E31" owner="DCE.9E15823A-B970-A339-7F26-D075DA288EA [...]
+<UML:Multiplicity xmi.id="DCE.3C93AD84-14F2-5CE0-14BE-1CF8AE3DD97C"/></UML:TypedElement.multiplicity></UML:Parameter><UML:Parameter visibility="package" isQuery="false" type="DCE.0F8FDDCF-D8DC-EC5A-2929-0F5EF73A305C" name="project" xmi.id="DCE.FC5B0C46-859E-76B3-2A5B-9A876C97318F" owner="DCE.9E15823A-B970-A339-7F26-D075DA288EA2"><UML:TypedElement.multiplicity>
+<UML:Multiplicity xmi.id="DCE.F1C84175-F845-62A2-CE6A-54BB8D1C02B5"/></UML:TypedElement.multiplicity></UML:Parameter></UML:Element.ownedElement><UML:Element.presentation>
+</UML:Element.presentation></UML:Operation><UML:Operation visibility="public" isLeaf="false" ownerScope="instance" isAbstract="false" name="equals" xmi.id="DCE.C1C2086A-A696-81F1-AE22-3FCCC5D66385" owner="DCE.B49486EB-16C8-2B60-D4E7-2D2C2B93146F" redefinedElement="DCE.7EA92053-614D-5806-CB3B-E98BCCFFB842"><UML:Element.ownedElement><UML:Parameter visibility="package" direction="result" isQuery="false" type="DCE.B078EDD4-EE98-3028-171A-76969AC67476" xmi.id="DCE.CE0732F2-CF78-61AC-99E0-1817 [...]
+<UML:Multiplicity xmi.id="DCE.8A5F8422-B9F8-EC62-3DAB-86DCC7A7AB51"/></UML:TypedElement.multiplicity></UML:Parameter><UML:Parameter visibility="package" isQuery="false" type="DCE.E0DB7AD7-E636-792C-9705-9BC303204296" name="obj" xmi.id="DCE.11D33C9D-DC95-5740-B346-3F19B6235962" owner="DCE.C1C2086A-A696-81F1-AE22-3FCCC5D66385"><UML:TypedElement.multiplicity>
+<UML:Multiplicity xmi.id="DCE.BA69B106-5016-19AF-B89F-242EADF9D8A5"/></UML:TypedElement.multiplicity></UML:Parameter></UML:Element.ownedElement><UML:Element.presentation>
+</UML:Element.presentation></UML:Operation><UML:Operation visibility="public" isLeaf="false" ownerScope="instance" isAbstract="false" name="hashCode" xmi.id="DCE.A3041566-F215-2661-A1A9-BD5F8FFC5661" owner="DCE.B49486EB-16C8-2B60-D4E7-2D2C2B93146F" redefinedElement="DCE.EA800E83-25DA-C021-F223-72873A5797E2"><UML:Element.ownedElement><UML:Parameter visibility="package" direction="result" isQuery="false" type="DCE.981B9FC5-E237-C58C-4FCC-AB34AB8B9AFC" xmi.id="DCE.6C92B56E-7F76-EE04-1539-9C [...]
+<UML:Multiplicity xmi.id="DCE.EA2DF486-0845-D88E-928B-9C40004BB1D3"/></UML:TypedElement.multiplicity></UML:Parameter></UML:Element.ownedElement><UML:Element.presentation>
+</UML:Element.presentation></UML:Operation><UML:Operation visibility="public" isLeaf="false" ownerScope="instance" isAbstract="false" name="toString" xmi.id="DCE.E9CD1B2A-F101-8666-1552-FC84BA83B9AA" owner="DCE.B49486EB-16C8-2B60-D4E7-2D2C2B93146F" redefinedElement="DCE.8567931E-8473-272D-37C1-CBC4D5B52418"><UML:Element.ownedElement><UML:Parameter visibility="package" direction="result" isQuery="false" type="DCE.B0F4883D-A9A7-F729-B7D1-1DD00CABE13C" xmi.id="DCE.47B7FA65-A37E-897E-FDC4-A6 [...]
+<UML:Multiplicity xmi.id="DCE.B55E4B96-0439-A4B6-CF8D-0E8B1AB67C86"/></UML:TypedElement.multiplicity></UML:Parameter></UML:Element.ownedElement><UML:Element.presentation>
+</UML:Element.presentation></UML:Operation>
+<UML:Implementation xmi.id="DCE.C8549E9D-0E83-E194-D3D5-2ECAFF1DF57F" owner="DCE.B49486EB-16C8-2B60-D4E7-2D2C2B93146F" client="DCE.B49486EB-16C8-2B60-D4E7-2D2C2B93146F" supplier="DCE.45ACF2D1-4D97-64BC-1200-E4F3C2503510"/></UML:Element.ownedElement>
+<UML:Classifier.generalization>
+<UML:Generalization xmi.id="DCE.A7A4755C-6364-D6AA-DA1B-F74D0915D4C1" specific="DCE.B49486EB-16C8-2B60-D4E7-2D2C2B93146F" general="DCE.AD3D6BCB-9802-F153-947C-D457BC634420"><UML:Element.presentation>
+</UML:Element.presentation></UML:Generalization></UML:Classifier.generalization><UML:Element.presentation>
+</UML:Element.presentation></UML:Class>
+<UML:Aggregation xmi.id="DCE.E2F0742A-B9D6-0DA6-D304-7AF38B5B3EFE" owner="DCE.7CE8FFFA-3AF9-188D-71FE-E93EB0B49860" aggregateEnd="DCE.20C6BCEB-5B23-50A0-8C8D-4BDCA19DF7C2" partEnd="DCE.10ADD8CF-E4DB-C9C7-7690-7F6705C66835"><UML:Association.end>
+<UML:AssociationEnd xmi.id="DCE.20C6BCEB-5B23-50A0-8C8D-4BDCA19DF7C2" visibility="private" type="DCE.1B25B69B-B014-F654-2E5A-9547722C2FE2" association="DCE.E2F0742A-B9D6-0DA6-D304-7AF38B5B3EFE"/>
+<UML:NavigableEnd xmi.id="DCE.10ADD8CF-E4DB-C9C7-7690-7F6705C66835" visibility="private" type="DCE.B49486EB-16C8-2B60-D4E7-2D2C2B93146F" association="DCE.E2F0742A-B9D6-0DA6-D304-7AF38B5B3EFE" name="sprint"/></UML:Association.end><UML:Element.presentation>
+</UML:Element.presentation></UML:Aggregation>
+<UML:Aggregation xmi.id="DCE.21328C3C-1F61-7CB2-61FF-CA5809CCC17F" owner="DCE.7CE8FFFA-3AF9-188D-71FE-E93EB0B49860" aggregateEnd="DCE.CB243AB5-4019-3469-617B-CAB9556B0503" partEnd="DCE.FDBD0DB3-5C98-AA1B-3E98-DA8D63F3501E"><UML:Association.end>
+<UML:AssociationEnd xmi.id="DCE.CB243AB5-4019-3469-617B-CAB9556B0503" visibility="private" type="DCE.1B25B69B-B014-F654-2E5A-9547722C2FE2" association="DCE.21328C3C-1F61-7CB2-61FF-CA5809CCC17F"><UML:TypedElement.multiplicity>
+<UML:Multiplicity xmi.id="DCE.1D06DDFF-D16B-7C56-5DC9-CEE647949DD7"/></UML:TypedElement.multiplicity></UML:AssociationEnd>
+<UML:NavigableEnd xmi.id="DCE.FDBD0DB3-5C98-AA1B-3E98-DA8D63F3501E" visibility="private" type="DCE.BEEF085E-69AA-FA1D-926D-DA8FF9E27BF8" association="DCE.21328C3C-1F61-7CB2-61FF-CA5809CCC17F" name="tasks"><UML:TypedElement.multiplicity>
+<UML:Multiplicity xmi.id="DCE.6B5BA76E-C6F6-B1D6-4BF3-7C34B4541E99">
+<UML:Multiplicity.range><UML:MultiplicityRange lower="0" upper="*" collectionType="List" xmi.id="DCE.8DD17857-1B45-311E-55FB-AC64D03B69E0"/></UML:Multiplicity.range></UML:Multiplicity></UML:TypedElement.multiplicity><UML:Attribute.default>
+<UML:Expression xmi.id="DCE.5582FB0D-A417-D8D5-1934-19A731EBB68E"/></UML:Attribute.default></UML:NavigableEnd></UML:Association.end><UML:Element.presentation>
+</UML:Element.presentation></UML:Aggregation>
+<UML:Aggregation xmi.id="DCE.D4C70657-FE7C-35F3-8C8E-5D39128A5BF0" owner="DCE.7CE8FFFA-3AF9-188D-71FE-E93EB0B49860" aggregateEnd="DCE.0DC81B70-8EEF-4522-09E4-7F2C26DA33A1" partEnd="DCE.85E8B563-8445-C502-25C4-113FD381716E"><UML:Association.end>
+<UML:AssociationEnd xmi.id="DCE.0DC81B70-8EEF-4522-09E4-7F2C26DA33A1" visibility="private" type="DCE.1B25B69B-B014-F654-2E5A-9547722C2FE2" association="DCE.D4C70657-FE7C-35F3-8C8E-5D39128A5BF0"><UML:TypedElement.multiplicity>
+<UML:Multiplicity xmi.id="DCE.5216A11E-FCC6-EED7-6599-081F80E58682"/></UML:TypedElement.multiplicity></UML:AssociationEnd>
+<UML:NavigableEnd xmi.id="DCE.85E8B563-8445-C502-25C4-113FD381716E" visibility="private" type="DCE.BEEF085E-69AA-FA1D-926D-DA8FF9E27BF8" association="DCE.D4C70657-FE7C-35F3-8C8E-5D39128A5BF0" name="doneTasks"><UML:TypedElement.multiplicity>
+<UML:Multiplicity xmi.id="DCE.25A5DD6E-368D-8E2C-C1AF-3E540CD73566">
+<UML:Multiplicity.range><UML:MultiplicityRange lower="0" upper="*" collectionType="List" xmi.id="DCE.A0785762-C57C-E448-64AF-97A30B828F5B"/></UML:Multiplicity.range></UML:Multiplicity></UML:TypedElement.multiplicity><UML:Attribute.default>
+<UML:Expression xmi.id="DCE.FDC5C212-E639-02D0-22DB-2325EE5055A1"/></UML:Attribute.default></UML:NavigableEnd></UML:Association.end><UML:Element.presentation>
+</UML:Element.presentation></UML:Aggregation>
+<UML:Aggregation xmi.id="DCE.C6133C57-F350-8C0C-0510-3E6581255ACB" owner="DCE.7CE8FFFA-3AF9-188D-71FE-E93EB0B49860" aggregateEnd="DCE.5BEF051F-B131-EDB6-175D-3A96906D67B4" partEnd="DCE.65C1F7FE-F2DA-893D-D3EC-CA16BF86D35A"><UML:Association.end>
+<UML:AssociationEnd xmi.id="DCE.5BEF051F-B131-EDB6-175D-3A96906D67B4" visibility="private" type="DCE.1B25B69B-B014-F654-2E5A-9547722C2FE2" association="DCE.C6133C57-F350-8C0C-0510-3E6581255ACB"/>
+<UML:NavigableEnd xmi.id="DCE.65C1F7FE-F2DA-893D-D3EC-CA16BF86D35A" visibility="private" type="DCE.BEEF085E-69AA-FA1D-926D-DA8FF9E27BF8" association="DCE.C6133C57-F350-8C0C-0510-3E6581255ACB" name="workingTasks"><UML:TypedElement.multiplicity>
+<UML:Multiplicity xmi.id="DCE.91743A37-217D-D6A2-0ED1-1C33000EACBF">
+<UML:Multiplicity.range><UML:MultiplicityRange lower="0" upper="*" collectionType="List" xmi.id="DCE.C07CA082-5623-71C3-7E26-BE52CA11FD17"/></UML:Multiplicity.range></UML:Multiplicity></UML:TypedElement.multiplicity><UML:Attribute.default>
+<UML:Expression xmi.id="DCE.2A5B5A89-2E60-858E-22FB-306D59C7BD58"/></UML:Attribute.default></UML:NavigableEnd></UML:Association.end><UML:Element.presentation>
+</UML:Element.presentation></UML:Aggregation>
+<UML:Aggregation xmi.id="DCE.135BDB91-6871-A3B5-687E-4EC7755046A8" owner="DCE.7CE8FFFA-3AF9-188D-71FE-E93EB0B49860" aggregateEnd="DCE.F58ED97F-1514-747F-DA7F-228DF7B6D6F7" partEnd="DCE.D8C9D7AE-DD07-ED3D-977B-0191739105E8"><UML:Association.end>
+<UML:AssociationEnd xmi.id="DCE.F58ED97F-1514-747F-DA7F-228DF7B6D6F7" visibility="private" type="DCE.1B25B69B-B014-F654-2E5A-9547722C2FE2" association="DCE.135BDB91-6871-A3B5-687E-4EC7755046A8"><UML:TypedElement.multiplicity>
+<UML:Multiplicity xmi.id="DCE.B9C42C2E-A71A-87BE-C17F-567F2F948F60"/></UML:TypedElement.multiplicity></UML:AssociationEnd>
+<UML:NavigableEnd xmi.id="DCE.D8C9D7AE-DD07-ED3D-977B-0191739105E8" visibility="private" type="DCE.BEEF085E-69AA-FA1D-926D-DA8FF9E27BF8" association="DCE.135BDB91-6871-A3B5-687E-4EC7755046A8" name="todoTasks"><UML:TypedElement.multiplicity>
+<UML:Multiplicity xmi.id="DCE.6A47DA43-D410-01E3-ED27-8E67D14C15A7">
+<UML:Multiplicity.range><UML:MultiplicityRange lower="0" upper="*" collectionType="List" xmi.id="DCE.1D304D43-A1D1-169A-7051-1BCCFA368104"/></UML:Multiplicity.range></UML:Multiplicity></UML:TypedElement.multiplicity><UML:Attribute.default>
+<UML:Expression xmi.id="DCE.E9470373-AB4A-47A7-F999-D67CD273AD91"/></UML:Attribute.default></UML:NavigableEnd></UML:Association.end><UML:Element.presentation>
+</UML:Element.presentation></UML:Aggregation>
+<UML:Aggregation xmi.id="DCE.815211C2-9A0D-1A92-F097-48406BE609FA" owner="DCE.7CE8FFFA-3AF9-188D-71FE-E93EB0B49860" aggregateEnd="DCE.BC7C0D3A-B128-A6E2-100C-59F517167843" partEnd="DCE.400568BF-DC82-2F08-F023-113045BA221C"><UML:Association.end>
+<UML:AssociationEnd xmi.id="DCE.BC7C0D3A-B128-A6E2-100C-59F517167843" visibility="private" type="DCE.0F8FDDCF-D8DC-EC5A-2929-0F5EF73A305C" association="DCE.815211C2-9A0D-1A92-F097-48406BE609FA"><UML:TypedElement.multiplicity>
+<UML:Multiplicity xmi.id="DCE.D415DC09-B363-6CCC-314F-6FD371C21208"/></UML:TypedElement.multiplicity></UML:AssociationEnd>
+<UML:NavigableEnd xmi.id="DCE.400568BF-DC82-2F08-F023-113045BA221C" visibility="private" type="DCE.B49486EB-16C8-2B60-D4E7-2D2C2B93146F" association="DCE.815211C2-9A0D-1A92-F097-48406BE609FA" name="sprints"><UML:TypedElement.multiplicity>
+<UML:Multiplicity xmi.id="DCE.B26D3162-EA7D-37D0-35CF-2A5E238A388E">
+<UML:Multiplicity.range><UML:MultiplicityRange lower="0" upper="*" collectionType="List" xmi.id="DCE.3B9733D3-BA09-7491-FAF6-3343B8F251FE"/></UML:Multiplicity.range></UML:Multiplicity></UML:TypedElement.multiplicity><UML:Attribute.default>
+<UML:Expression xmi.id="DCE.DFFEF87F-F97D-CA6B-DBA4-E8B0D7531791"/></UML:Attribute.default></UML:NavigableEnd></UML:Association.end><UML:Element.presentation>
+</UML:Element.presentation></UML:Aggregation>
+<UML:Aggregation xmi.id="DCE.A75C3457-0358-9484-6E2D-F654C53EE3DF" owner="DCE.7CE8FFFA-3AF9-188D-71FE-E93EB0B49860" aggregateEnd="DCE.F0E710E8-1CCA-DC09-3593-2499AB674CED" partEnd="DCE.EA9CA2D6-C5AA-DDE8-A776-3AEAE9B9E2FC"><UML:Association.end>
+<UML:AssociationEnd xmi.id="DCE.F0E710E8-1CCA-DC09-3593-2499AB674CED" visibility="private" type="DCE.B49486EB-16C8-2B60-D4E7-2D2C2B93146F" association="DCE.A75C3457-0358-9484-6E2D-F654C53EE3DF"/>
+<UML:NavigableEnd xmi.id="DCE.EA9CA2D6-C5AA-DDE8-A776-3AEAE9B9E2FC" visibility="private" type="DCE.1B25B69B-B014-F654-2E5A-9547722C2FE2" association="DCE.A75C3457-0358-9484-6E2D-F654C53EE3DF" name="stories"><UML:TypedElement.multiplicity>
+<UML:Multiplicity xmi.id="DCE.B84DF9A3-3F4A-69C9-DDE7-A9D24A5E9CAE">
+<UML:Multiplicity.range><UML:MultiplicityRange lower="0" upper="*" collectionType="List" xmi.id="DCE.C285BA53-DD84-8503-912E-8AB883296A83"/></UML:Multiplicity.range></UML:Multiplicity></UML:TypedElement.multiplicity></UML:NavigableEnd></UML:Association.end><UML:Element.presentation>
+</UML:Element.presentation></UML:Aggregation>
+<UML:Aggregation xmi.id="DCE.24C6A3F1-8783-ED4D-A03A-1646292FAEF7" owner="DCE.7CE8FFFA-3AF9-188D-71FE-E93EB0B49860" aggregateEnd="DCE.3EBF30DA-1B3B-2EA0-1698-1AEFBD8410E0" partEnd="DCE.D913FBA2-3642-D1D0-DB80-9A633C62D086"><UML:Association.end>
+<UML:AssociationEnd xmi.id="DCE.3EBF30DA-1B3B-2EA0-1698-1AEFBD8410E0" visibility="private" type="DCE.B49486EB-16C8-2B60-D4E7-2D2C2B93146F" association="DCE.24C6A3F1-8783-ED4D-A03A-1646292FAEF7"/>
+<UML:NavigableEnd xmi.id="DCE.D913FBA2-3642-D1D0-DB80-9A633C62D086" visibility="private" type="DCE.0F8FDDCF-D8DC-EC5A-2929-0F5EF73A305C" association="DCE.24C6A3F1-8783-ED4D-A03A-1646292FAEF7" name="project"/></UML:Association.end><UML:Element.presentation>
+</UML:Element.presentation></UML:Aggregation>
+<UML:DerivationClassifier xmi.id="DCE.78DDE7E6-65BD-C677-2C0E-23139242F136" name="PersistentEntity<Long>" owner="DCE.7CE8FFFA-3AF9-188D-71FE-E93EB0B49860" clientDependency="DCE.F7B48998-C66D-5CD5-27DA-EC66A7528BCA" supplierDependency="DCE.201D5B16-0701-C6AC-E9E4-146111769115"><UML:Element.ownedElement>
+<UML:Derivation xmi.id="DCE.F7B48998-C66D-5CD5-27DA-EC66A7528BCA" supplier="DCE.FA27723D-C0F6-133F-2FF1-DF829A39410C" owner="DCE.78DDE7E6-65BD-C677-2C0E-23139242F136" client="DCE.78DDE7E6-65BD-C677-2C0E-23139242F136"><UML:Element.ownedElement>
+<UML:Binding xmi.id="DCE.C5B393F6-0125-0926-8F33-11088554C808" actual="DCE.D5CD24C5-6534-24F4-74D8-B7092875161C" formal="DCE.AD6288BF-2312-6CD9-16A0-97CD3893AA0E" owner="DCE.F7B48998-C66D-5CD5-27DA-EC66A7528BCA"/></UML:Element.ownedElement></UML:Derivation></UML:Element.ownedElement></UML:DerivationClassifier>
+<UML:Aggregation xmi.id="DCE.07401D4B-68C4-651F-F0F0-F9C58DF37E9A" owner="DCE.7CE8FFFA-3AF9-188D-71FE-E93EB0B49860" aggregateEnd="DCE.46E83A07-E85E-4370-316A-922FB29AD242" partEnd="DCE.DB436D77-4C7E-7B13-ACCF-7587D3413992"><UML:Association.end>
+<UML:AssociationEnd xmi.id="DCE.46E83A07-E85E-4370-316A-922FB29AD242" visibility="private" type="DCE.BEEF085E-69AA-FA1D-926D-DA8FF9E27BF8" association="DCE.07401D4B-68C4-651F-F0F0-F9C58DF37E9A"/>
+<UML:NavigableEnd xmi.id="DCE.DB436D77-4C7E-7B13-ACCF-7587D3413992" visibility="private" type="DCE.C74297FA-9515-03B8-DD75-C9D6A9C37278" association="DCE.07401D4B-68C4-651F-F0F0-F9C58DF37E9A" name="status"/></UML:Association.end><UML:Element.presentation>
+</UML:Element.presentation></UML:Aggregation>
+<UML:Aggregation xmi.id="DCE.D6BAD817-AF11-F70A-8167-C2A095F1CEBD" owner="DCE.7CE8FFFA-3AF9-188D-71FE-E93EB0B49860" aggregateEnd="DCE.673D2A92-BB5E-A64D-FD94-E25887EE28C6" partEnd="DCE.5307D661-6D60-7CCF-930D-4260C8ACE0BA"><UML:Association.end>
+<UML:AssociationEnd xmi.id="DCE.673D2A92-BB5E-A64D-FD94-E25887EE28C6" visibility="private" type="DCE.BEEF085E-69AA-FA1D-926D-DA8FF9E27BF8" association="DCE.D6BAD817-AF11-F70A-8167-C2A095F1CEBD"><UML:TypedElement.multiplicity>
+<UML:Multiplicity xmi.id="DCE.F3F153BD-138C-2DBF-5356-2E9BD1472CF3"/></UML:TypedElement.multiplicity></UML:AssociationEnd>
+<UML:NavigableEnd xmi.id="DCE.5307D661-6D60-7CCF-930D-4260C8ACE0BA" visibility="private" type="DCE.1B25B69B-B014-F654-2E5A-9547722C2FE2" association="DCE.D6BAD817-AF11-F70A-8167-C2A095F1CEBD" name="story"><UML:TypedElement.multiplicity>
+<UML:Multiplicity xmi.id="DCE.A2C83E39-B19E-AB84-5594-FD4D4771DBC9"/></UML:TypedElement.multiplicity><UML:Attribute.default>
+<UML:Expression xmi.id="DCE.04977DBE-5087-A02B-4724-8AA537BAB426"/></UML:Attribute.default></UML:NavigableEnd></UML:Association.end><UML:Element.presentation>
+</UML:Element.presentation></UML:Aggregation>
+<UML:Dependency xmi.id="DCE.A10E3E08-982E-6E1D-6287-4B7CE727DE06" owner="DCE.7CE8FFFA-3AF9-188D-71FE-E93EB0B49860" client="DCE.08911BD7-1949-6FE4-60DB-C7CA9D24F195" supplier="DCE.B49486EB-16C8-2B60-D4E7-2D2C2B93146F"><UML:Element.presentation>
+</UML:Element.presentation></UML:Dependency>
+<UML:Implementation xmi.id="DCE.EF168D5D-30D3-85D4-E0A4-62732F5482B3" owner="DCE.7CE8FFFA-3AF9-188D-71FE-E93EB0B49860" client="DCE.AD3D6BCB-9802-F153-947C-D457BC634420" supplier="DCE.FA27723D-C0F6-133F-2FF1-DF829A39410C"><UML:Element.presentation>
+</UML:Element.presentation></UML:Implementation>
+<UML:Dependency xmi.id="DCE.A225D28E-A912-549A-1A13-332D91E62663" owner="DCE.7CE8FFFA-3AF9-188D-71FE-E93EB0B49860" client="DCE.B49486EB-16C8-2B60-D4E7-2D2C2B93146F" supplier="DCE.08911BD7-1949-6FE4-60DB-C7CA9D24F195"><UML:Element.presentation>
+</UML:Element.presentation></UML:Dependency></UML:Element.ownedElement></UML:Package>
+<UML:Class xmi.id="DCE.B68DE3E6-EA92-DE9C-0EEF-B22389083FEC" name="Unnamed" owner="DCE.5A4D19A2-1468-437A-B75A-0E8318208C1F" supplierDependency=""><UML:Element.presentation>
+</UML:Element.presentation></UML:Class></UML:Element.ownedElement></UML:Package></UML:Element.ownedElement></UML:Package></UML:Element.ownedElement></UML:Package></UML:Element.ownedElement></UML:Package>
+<UML:DataType xmi.id="DCE.6F8A25EE-54E1-E321-4741-4316637171A3" name="long" owner="DCE.B34873F7-C2FB-132E-C144-8BAE560D0FC4"/>
+<UML:Package xmi.id="DCE.5C281A6F-DDE8-407E-41B1-56A4E052D5BC" name="javax" owner="DCE.B34873F7-C2FB-132E-C144-8BAE560D0FC4"><UML:Element.ownedElement>
+<UML:Package xmi.id="DCE.3B183EA0-0334-BA2A-B13D-3FE6BF62C8C5" name="faces" owner="DCE.5C281A6F-DDE8-407E-41B1-56A4E052D5BC"><UML:Element.ownedElement>
+<UML:Package xmi.id="DCE.38844298-D414-3A3C-8913-42D92DAA7025" name="model" owner="DCE.3B183EA0-0334-BA2A-B13D-3FE6BF62C8C5"><UML:Element.ownedElement>
+<UML:DataType xmi.id="DCE.E600B705-53D7-37C9-63D5-049B9B33899E" name="DataModel" owner="DCE.38844298-D414-3A3C-8913-42D92DAA7025" templateParameter="DCE.3314C8B0-3B99-5189-9F4A-465A639A0B7B" supplierDependency="DCE.D252A1C2-AEC7-D0BC-098B-234CC15373CE DCE.E605FFAF-732D-BD10-AE60-884E52838F4F DCE.FC266165-1D2E-A03C-960A-8CDD842DA24A DCE.5363B0D7-2FEA-5884-05D8-C9BA0A03E11E"><UML:Element.ownedElement>
+<UML:ParameterableElement xmi.id="DCE.3314C8B0-3B99-5189-9F4A-465A639A0B7B" name="T" owner="DCE.E600B705-53D7-37C9-63D5-049B9B33899E"/></UML:Element.ownedElement></UML:DataType>
+<UML:DerivationClassifier xmi.id="DCE.7D3FBB62-03BC-C4B8-B243-20E4F639C059" name="DataModel<Story>" owner="DCE.38844298-D414-3A3C-8913-42D92DAA7025" clientDependency="DCE.D252A1C2-AEC7-D0BC-098B-234CC15373CE" associationEnd="DCE.918E945A-37E0-4FCD-DFB8-47563F104C5E DCE.35D4E71E-7E00-4335-C1A5-5F92AF18DA09"><UML:Element.ownedElement>
+<UML:Derivation xmi.id="DCE.D252A1C2-AEC7-D0BC-098B-234CC15373CE" supplier="DCE.E600B705-53D7-37C9-63D5-049B9B33899E" owner="DCE.7D3FBB62-03BC-C4B8-B243-20E4F639C059" client="DCE.7D3FBB62-03BC-C4B8-B243-20E4F639C059"><UML:Element.ownedElement>
+<UML:Binding xmi.id="DCE.FE299F72-C5EF-807C-DC82-419B3FC1C9F5" actual="DCE.1B25B69B-B014-F654-2E5A-9547722C2FE2" formal="DCE.3314C8B0-3B99-5189-9F4A-465A639A0B7B" owner="DCE.D252A1C2-AEC7-D0BC-098B-234CC15373CE"/></UML:Element.ownedElement></UML:Derivation></UML:Element.ownedElement></UML:DerivationClassifier>
+<UML:DerivationClassifier xmi.id="DCE.C9446A74-CED5-6029-D2E9-331D161F25D5" name="DataModel<Task>" owner="DCE.38844298-D414-3A3C-8913-42D92DAA7025" clientDependency="DCE.E605FFAF-732D-BD10-AE60-884E52838F4F" associationEnd="DCE.27088ED7-41D2-3CD7-CDCC-837A8D286193"><UML:Element.ownedElement>
+<UML:Derivation xmi.id="DCE.E605FFAF-732D-BD10-AE60-884E52838F4F" supplier="DCE.E600B705-53D7-37C9-63D5-049B9B33899E" owner="DCE.C9446A74-CED5-6029-D2E9-331D161F25D5" client="DCE.C9446A74-CED5-6029-D2E9-331D161F25D5"><UML:Element.ownedElement>
+<UML:Binding xmi.id="DCE.5155C367-23F9-3F18-31C9-9DB0DE750670" actual="DCE.BEEF085E-69AA-FA1D-926D-DA8FF9E27BF8" formal="DCE.3314C8B0-3B99-5189-9F4A-465A639A0B7B" owner="DCE.E605FFAF-732D-BD10-AE60-884E52838F4F"/></UML:Element.ownedElement></UML:Derivation></UML:Element.ownedElement></UML:DerivationClassifier>
+<UML:DerivationClassifier xmi.id="DCE.9EF2F156-8D72-130D-38DF-EE7A3B829C69" name="DataModel<Sprint>" owner="DCE.38844298-D414-3A3C-8913-42D92DAA7025" clientDependency="DCE.FC266165-1D2E-A03C-960A-8CDD842DA24A" associationEnd="DCE.FC25E8CE-303D-BD0B-B23B-CA382A33E8A2"><UML:Element.ownedElement>
+<UML:Derivation xmi.id="DCE.FC266165-1D2E-A03C-960A-8CDD842DA24A" supplier="DCE.E600B705-53D7-37C9-63D5-049B9B33899E" owner="DCE.9EF2F156-8D72-130D-38DF-EE7A3B829C69" client="DCE.9EF2F156-8D72-130D-38DF-EE7A3B829C69"><UML:Element.ownedElement>
+<UML:Binding xmi.id="DCE.64FAAE61-D755-ACAB-6F8B-23107859FF04" actual="DCE.B49486EB-16C8-2B60-D4E7-2D2C2B93146F" formal="DCE.3314C8B0-3B99-5189-9F4A-465A639A0B7B" owner="DCE.FC266165-1D2E-A03C-960A-8CDD842DA24A"/></UML:Element.ownedElement></UML:Derivation></UML:Element.ownedElement></UML:DerivationClassifier>
+<UML:DerivationClassifier xmi.id="DCE.D4F8D2A9-275A-5557-C7AD-AB3036511671" name="DataModel<Project>" owner="DCE.38844298-D414-3A3C-8913-42D92DAA7025" clientDependency="DCE.5363B0D7-2FEA-5884-05D8-C9BA0A03E11E" associationEnd="DCE.581CE770-F9B6-426B-C3C3-EFC3F1271DBF"><UML:Element.ownedElement>
+<UML:Derivation xmi.id="DCE.5363B0D7-2FEA-5884-05D8-C9BA0A03E11E" supplier="DCE.E600B705-53D7-37C9-63D5-049B9B33899E" owner="DCE.D4F8D2A9-275A-5557-C7AD-AB3036511671" client="DCE.D4F8D2A9-275A-5557-C7AD-AB3036511671"><UML:Element.ownedElement>
+<UML:Binding xmi.id="DCE.C36B6D97-2B8E-14F1-EB79-82DDE014C199" actual="DCE.0F8FDDCF-D8DC-EC5A-2929-0F5EF73A305C" formal="DCE.3314C8B0-3B99-5189-9F4A-465A639A0B7B" owner="DCE.5363B0D7-2FEA-5884-05D8-C9BA0A03E11E"/></UML:Element.ownedElement></UML:Derivation></UML:Element.ownedElement></UML:DerivationClassifier>
+<UML:DataType xmi.id="DCE.900D4B0B-A673-8542-FDA4-DBB33E7E5079" name="SelectItem" owner="DCE.38844298-D414-3A3C-8913-42D92DAA7025"/></UML:Element.ownedElement></UML:Package>
+<UML:Package xmi.id="DCE.E287608C-95D6-952F-E76A-70EC9AEBEE21" name="event" owner="DCE.3B183EA0-0334-BA2A-B13D-3FE6BF62C8C5"><UML:Element.ownedElement>
+
+<UML:DataType xmi.id="DCE.2DD93E80-C478-F294-6739-C2A2DA9D93F3" name="SystemEvent" owner="DCE.E287608C-95D6-952F-E76A-70EC9AEBEE21" specialization="DCE.72632471-C9A1-94B1-160B-38E1325725E9 DCE.E2BC5503-7BAC-1FB4-BC45-ACA7B9044924 DCE.335F9F31-C5A9-5342-F536-FC03A97641BB DCE.BC051D53-254B-F1C9-33A3-ED4AFBD5C2C9"/>
+<UML:DataType xmi.id="DCE.A9D43DCC-8ADD-D6C7-840C-14671A4E9125" name="AbortProcessingException" owner="DCE.E287608C-95D6-952F-E76A-70EC9AEBEE21"/><UML:Interface xmi.id="DCE.28D91B82-9873-4BAD-B1BE-117AA8A44400" name="SystemEventListener" owner="DCE.E287608C-95D6-952F-E76A-70EC9AEBEE21" appliedStereotype="__uri_./scrumtoys-uml.etup#//*[@xmi.id="DCE.49F81EA2-F085-B51A-C62E-90A709633D0D"]" supplierDependency="DCE.1A8A15A8-FEAB-7F4F-AE82-C5724255A801 DCE.75AD34AE-2C7F-83BF-DC9C-108 [...]
+<UML:Package xmi.id="DCE.F24D3FBA-602D-6FDB-FA0E-CD181363AE76" name="context" owner="DCE.3B183EA0-0334-BA2A-B13D-3FE6BF62C8C5"><UML:Element.ownedElement>
+<UML:DataType xmi.id="DCE.C740FFE8-E2A4-BECB-D4DC-345AF2DA19CC" name="FacesContext" owner="DCE.F24D3FBA-602D-6FDB-FA0E-CD181363AE76"/></UML:Element.ownedElement></UML:Package>
+<UML:Package xmi.id="DCE.6DB3DF14-C14D-2CFA-9C2B-4625AF27AD92" name="component" owner="DCE.3B183EA0-0334-BA2A-B13D-3FE6BF62C8C5"><UML:Element.ownedElement>
+<UML:DataType xmi.id="DCE.9EB0FDDA-3B72-F759-FFDB-EF064A54A043" name="UIComponent" owner="DCE.6DB3DF14-C14D-2CFA-9C2B-4625AF27AD92"/></UML:Element.ownedElement></UML:Package>
+<UML:Package xmi.id="DCE.8F4C6FCD-CA5A-709A-8147-566C49B9ECE8" name="convert" owner="DCE.3B183EA0-0334-BA2A-B13D-3FE6BF62C8C5"><UML:Element.ownedElement>
+<UML:Interface xmi.id="DCE.F87C7DBC-049A-771D-5FBC-BA8EAA7B37BE" name="Converter" owner="DCE.8F4C6FCD-CA5A-709A-8147-566C49B9ECE8" appliedStereotype="__uri_./scrumtoys-uml.etup#//*[@xmi.id="DCE.241576B4-FD84-5D94-8BF7-D475B1AC822D"]" supplierDependency="DCE.E36A4D6B-816D-AFFB-7B45-7FC37FAD8520"/></UML:Element.ownedElement></UML:Package>
+<UML:Package xmi.id="DCE.F10F6651-3045-F99F-2F56-686A667D57A0" name="application" owner="DCE.3B183EA0-0334-BA2A-B13D-3FE6BF62C8C5"><UML:Element.ownedElement>
+<UML:DataType xmi.id="DCE.92F31861-2243-8D4A-8311-2CF24B7C7AC9" name="FacesMessage" owner="DCE.F10F6651-3045-F99F-2F56-686A667D57A0"><UML:Element.ownedElement>
+<UML:DataType xmi.id="DCE.4E72710E-6A2D-4E08-037F-D12AEE332E26" name="Severity" owner="DCE.92F31861-2243-8D4A-8311-2CF24B7C7AC9"/></UML:Element.ownedElement></UML:DataType></UML:Element.ownedElement></UML:Package></UML:Element.ownedElement></UML:Package>
+<UML:Package xmi.id="DCE.6FE37D2B-0A33-4E6E-150C-DE9A819E89AC" name="persistence" owner="DCE.5C281A6F-DDE8-407E-41B1-56A4E052D5BC"><UML:Element.ownedElement>
+<UML:DataType xmi.id="DCE.CF4EBBD6-F888-7D0B-9887-3E30E43DBEE3" name="EntityManager" owner="DCE.6FE37D2B-0A33-4E6E-150C-DE9A819E89AC"/></UML:Element.ownedElement></UML:Package>
+<UML:Package xmi.id="DCE.AD8C3228-A70C-AC94-78D3-7E0CBD095119" name="transaction" owner="DCE.5C281A6F-DDE8-407E-41B1-56A4E052D5BC"><UML:Element.ownedElement>
+<UML:DataType xmi.id="DCE.2E43BD43-FB4D-67A3-E563-AD8D028D672D" name="UserTransaction" owner="DCE.AD8C3228-A70C-AC94-78D3-7E0CBD095119"/></UML:Element.ownedElement></UML:Package>
+<UML:Package xmi.id="DCE.D062CC4A-E497-743B-225E-0B505C5891C5" name="validation" owner="DCE.5C281A6F-DDE8-407E-41B1-56A4E052D5BC"><UML:Element.ownedElement>
+<UML:DataType xmi.id="DCE.200A429B-19B2-E2B0-0D10-7416BB71F7DC" name="ConstraintValidatorContext" owner="DCE.D062CC4A-E497-743B-225E-0B505C5891C5"/>
+<UML:DataType xmi.id="DCE.45F1CC59-5AB0-B52B-35F1-C7EA7F39CBD2" name="ConstraintValidator" owner="DCE.D062CC4A-E497-743B-225E-0B505C5891C5" templateParameter="DCE.33CE9112-9C99-F6F4-7C74-295F4B405945 DCE.7780CE5D-01B4-437E-CCB9-93AFC9CEB322" supplierDependency="DCE.B8F8F8E0-1E40-66D5-FB1E-28E2B4DFC675"><UML:Element.ownedElement>
+<UML:ParameterableElement xmi.id="DCE.33CE9112-9C99-F6F4-7C74-295F4B405945" name="T" owner="DCE.45F1CC59-5AB0-B52B-35F1-C7EA7F39CBD2"/>
+<UML:ParameterableElement xmi.id="DCE.7780CE5D-01B4-437E-CCB9-93AFC9CEB322" name="U" owner="DCE.45F1CC59-5AB0-B52B-35F1-C7EA7F39CBD2"/></UML:Element.ownedElement></UML:DataType>
+<UML:DerivationClassifier xmi.id="DCE.1FF53A0E-E5E8-46D9-C670-ABFA94E0AC49" name="ConstraintValidator<SprintNameUniquenessConstraint, String>" owner="DCE.D062CC4A-E497-743B-225E-0B505C5891C5" clientDependency="DCE.B8F8F8E0-1E40-66D5-FB1E-28E2B4DFC675" supplierDependency="DCE.02B10A9F-9EFA-7C7C-4B31-2D79D8E684D2"><UML:Element.ownedElement>
+<UML:Derivation xmi.id="DCE.B8F8F8E0-1E40-66D5-FB1E-28E2B4DFC675" supplier="DCE.45F1CC59-5AB0-B52B-35F1-C7EA7F39CBD2" owner="DCE.1FF53A0E-E5E8-46D9-C670-ABFA94E0AC49" client="DCE.1FF53A0E-E5E8-46D9-C670-ABFA94E0AC49"><UML:Element.ownedElement>
+<UML:Binding xmi.id="DCE.6A684B1A-9B2F-1433-20DA-FF032B5D9E9B" actual="DCE.EEF55D76-77B0-0CB5-F000-2A41C9387023" formal="DCE.33CE9112-9C99-F6F4-7C74-295F4B405945" owner="DCE.B8F8F8E0-1E40-66D5-FB1E-28E2B4DFC675"/>
+<UML:Binding xmi.id="DCE.9242A797-CCED-C0CB-EEFF-E48E620E12FF" actual="DCE.B0F4883D-A9A7-F729-B7D1-1DD00CABE13C" formal="DCE.7780CE5D-01B4-437E-CCB9-93AFC9CEB322" owner="DCE.B8F8F8E0-1E40-66D5-FB1E-28E2B4DFC675"/></UML:Element.ownedElement></UML:Derivation></UML:Element.ownedElement></UML:DerivationClassifier></UML:Element.ownedElement></UML:Package></UML:Element.ownedElement></UML:Package>
+<UML:DataType xmi.id="DCE.981B9FC5-E237-C58C-4FCC-AB34AB8B9AFC" name="int" owner="DCE.B34873F7-C2FB-132E-C144-8BAE560D0FC4"/>
+<UML:DataType xmi.id="DCE.DA27BA19-CDDD-B3CC-A2FA-0DEBD1FCF18D" name="void" owner="DCE.B34873F7-C2FB-132E-C144-8BAE560D0FC4"/>
+<UML:DataType xmi.id="DCE.B0F4883D-A9A7-F729-B7D1-1DD00CABE13C" name="String" owner="DCE.B34873F7-C2FB-132E-C144-8BAE560D0FC4"/>
+<UML:DataType xmi.id="DCE.E0DB7AD7-E636-792C-9705-9BC303204296" name="Object" owner="DCE.B34873F7-C2FB-132E-C144-8BAE560D0FC4"/>
+<UML:Package xmi.id="DCE.1A0A3B60-2A3E-DAF6-9C4B-1B8CEA35976F" name="java" owner="DCE.B34873F7-C2FB-132E-C144-8BAE560D0FC4"><UML:Element.ownedElement>
+<UML:Package xmi.id="DCE.A7C69B3A-933C-B2B9-CCBB-FD03D70F3AE1" name="io" owner="DCE.1A0A3B60-2A3E-DAF6-9C4B-1B8CEA35976F"><UML:Element.ownedElement>
+<UML:Interface xmi.id="DCE.45ACF2D1-4D97-64BC-1200-E4F3C2503510" name="Serializable" owner="DCE.A7C69B3A-933C-B2B9-CCBB-FD03D70F3AE1" appliedStereotype="__uri_./scrumtoys-uml.etup#//*[@xmi.id="DCE.241576B4-FD84-5D94-8BF7-D475B1AC822D"]" supplierDependency="DCE.EF683B5F-6CE4-9D46-ADF9-90AC30BC41D5 DCE.4C453170-7A49-30BE-EA81-41E60D4AE9A2 DCE.7FE11305-9F48-7FC8-D062-634D8DC864B1 DCE.D0C66CC1-E767-F23B-A295-78412BA16CB4 DCE.C8549E9D-0E83-E194-D3D5-2ECAFF1DF57F DCE.6E273712-AE70-56 [...]
+<UML:Package xmi.id="DCE.A7AB1D1B-6FFA-1A98-A617-9759EEF7D902" name="util" owner="DCE.1A0A3B60-2A3E-DAF6-9C4B-1B8CEA35976F"><UML:Element.ownedElement>
+<UML:DataType xmi.id="DCE.D8756337-EB16-BCDC-2A8A-35DDDD27E378" name="Date" owner="DCE.A7AB1D1B-6FFA-1A98-A617-9759EEF7D902"/>
+<UML:DataType xmi.id="DCE.A78CE94B-A7A0-C719-A177-12556C65146A" name="Map" owner="DCE.A7AB1D1B-6FFA-1A98-A617-9759EEF7D902" templateParameter="DCE.C31F1608-E5B7-74B0-54F0-C7391E6BA21D DCE.5CA57AFD-126A-3806-944A-E246FBEEB591" supplierDependency="DCE.7E957B64-1208-135F-5B14-E735CD50DFCB"><UML:Element.ownedElement>
+<UML:ParameterableElement xmi.id="DCE.C31F1608-E5B7-74B0-54F0-C7391E6BA21D" name="T" owner="DCE.A78CE94B-A7A0-C719-A177-12556C65146A"/>
+<UML:ParameterableElement xmi.id="DCE.5CA57AFD-126A-3806-944A-E246FBEEB591" name="U" owner="DCE.A78CE94B-A7A0-C719-A177-12556C65146A"/></UML:Element.ownedElement></UML:DataType>
+<UML:DerivationClassifier xmi.id="DCE.BE9FAE2A-86F2-5998-3F6F-46458B4B6773" name="Map<Long, Project>" owner="DCE.A7AB1D1B-6FFA-1A98-A617-9759EEF7D902" clientDependency="DCE.7E957B64-1208-135F-5B14-E735CD50DFCB" associationEnd="DCE.887109F3-26C7-96AA-5B5F-3E766A174C92"><UML:Element.ownedElement>
+<UML:Derivation xmi.id="DCE.7E957B64-1208-135F-5B14-E735CD50DFCB" supplier="DCE.A78CE94B-A7A0-C719-A177-12556C65146A" owner="DCE.BE9FAE2A-86F2-5998-3F6F-46458B4B6773" client="DCE.BE9FAE2A-86F2-5998-3F6F-46458B4B6773"><UML:Element.ownedElement>
+<UML:Binding xmi.id="DCE.AE33DA5C-F6F4-3658-8A1A-A73147136C07" actual="DCE.D5CD24C5-6534-24F4-74D8-B7092875161C" formal="DCE.C31F1608-E5B7-74B0-54F0-C7391E6BA21D" owner="DCE.7E957B64-1208-135F-5B14-E735CD50DFCB"/>
+<UML:Binding xmi.id="DCE.9FFA3304-8040-9F3A-571D-169F6BC1776A" actual="DCE.0F8FDDCF-D8DC-EC5A-2929-0F5EF73A305C" formal="DCE.5CA57AFD-126A-3806-944A-E246FBEEB591" owner="DCE.7E957B64-1208-135F-5B14-E735CD50DFCB"/></UML:Element.ownedElement></UML:Derivation></UML:Element.ownedElement></UML:DerivationClassifier>
+<UML:Package xmi.id="DCE.41C1E802-E6B7-68B6-63A7-E1D74B6BB6C5" name="logging" owner="DCE.A7AB1D1B-6FFA-1A98-A617-9759EEF7D902"><UML:Element.ownedElement>
+<UML:DataType xmi.id="DCE.FD2A5543-978E-84FC-E7BE-D5236F0B6A05" name="Logger" owner="DCE.41C1E802-E6B7-68B6-63A7-E1D74B6BB6C5"/></UML:Element.ownedElement></UML:Package></UML:Element.ownedElement></UML:Package></UML:Element.ownedElement></UML:Package>
+<UML:DataType xmi.id="DCE.B078EDD4-EE98-3028-171A-76969AC67476" name="boolean" owner="DCE.B34873F7-C2FB-132E-C144-8BAE560D0FC4"/>
+<UML:DataType xmi.id="DCE.D5CD24C5-6534-24F4-74D8-B7092875161C" name="Long" owner="DCE.B34873F7-C2FB-132E-C144-8BAE560D0FC4"/>
+<UML:DataType xmi.id="DCE.4B014D84-6C3C-BD2C-1F5E-D11543F92FE2" name="Throwable" owner="DCE.B34873F7-C2FB-132E-C144-8BAE560D0FC4"/>
+<UML:DataType xmi.id="DCE.638967B1-8A9F-DA4D-730D-639FF81F2D57" name="Exception" owner="DCE.B34873F7-C2FB-132E-C144-8BAE560D0FC4" specialization="DCE.D23EA14B-FFF7-0277-B782-C26B51385CC3"/>
+<UML:DataType xmi.id="DCE.9E53E000-3D9B-B159-1AAE-F86FFC379C33" name="T" owner="DCE.B34873F7-C2FB-132E-C144-8BAE560D0FC4"/>
+<UML:DataType xmi.id="DCE.17A381CB-ED50-453F-902E-83FA6550EBFE" name="Class" owner="DCE.B34873F7-C2FB-132E-C144-8BAE560D0FC4" templateParameter="DCE.2FD379ED-8638-1174-012C-772A52D86114" supplierDependency="DCE.968D0AA6-35DD-98D2-3161-7464F99EE90F"><UML:Element.ownedElement>
+<UML:ParameterableElement xmi.id="DCE.2FD379ED-8638-1174-012C-772A52D86114" name="T" owner="DCE.17A381CB-ED50-453F-902E-83FA6550EBFE"/></UML:Element.ownedElement></UML:DataType>
+<UML:DerivationClassifier xmi.id="DCE.8A0497D6-50B2-CCD3-6B16-DF592C5EF89A" name="Class<>" owner="DCE.B34873F7-C2FB-132E-C144-8BAE560D0FC4"/>
+<UML:DerivationClassifier xmi.id="DCE.5D3C7A19-9F1D-A209-55F4-21B42284DB17" name="Class<SystemEvent>" owner="DCE.B34873F7-C2FB-132E-C144-8BAE560D0FC4" clientDependency="DCE.968D0AA6-35DD-98D2-3161-7464F99EE90F"><UML:Element.ownedElement>
+<UML:Derivation xmi.id="DCE.968D0AA6-35DD-98D2-3161-7464F99EE90F" supplier="DCE.17A381CB-ED50-453F-902E-83FA6550EBFE" owner="DCE.5D3C7A19-9F1D-A209-55F4-21B42284DB17" client="DCE.5D3C7A19-9F1D-A209-55F4-21B42284DB17"><UML:Element.ownedElement>
+<UML:Binding xmi.id="DCE.821E7663-1B9B-555C-7D5B-4CCB0CC95794" actual="DCE.2DD93E80-C478-F294-6739-C2A2DA9D93F3" formal="DCE.2FD379ED-8638-1174-012C-772A52D86114" owner="DCE.968D0AA6-35DD-98D2-3161-7464F99EE90F"/></UML:Element.ownedElement></UML:Derivation></UML:Element.ownedElement></UML:DerivationClassifier>
+<UML:DataType xmi.id="DCE.EEF55D76-77B0-0CB5-F000-2A41C9387023" name="SprintNameUniquenessConstraint" owner="DCE.B34873F7-C2FB-132E-C144-8BAE560D0FC4"/>
+<UML:StateMachine xmi.id="DCE.C368B498-7B21-2747-17E0-643837F12053" name="Page Navigation" owner="DCE.B34873F7-C2FB-132E-C144-8BAE560D0FC4"><UML:Element.ownedElement>
+<UML:Region xmi.id="DCE.6F83ACF5-9B61-4B9F-E062-DF6F74BB0DFB" name="Unnamed" owner="DCE.C368B498-7B21-2747-17E0-643837F12053"><UML:Element.ownedElement>
+<UML:State xmi.id="DCE.BB5A8B1D-3A92-F484-F033-2B6E76EE292D" name="home" owner="DCE.6F83ACF5-9B61-4B9F-E062-DF6F74BB0DFB" isSimple="true"><UML:Element.ownedElement>
+<UML:Region xmi.id="DCE.98115638-5378-7011-000C-7F870AB7CB51" name="Unnamed" owner="DCE.BB5A8B1D-3A92-F484-F033-2B6E76EE292D"/></UML:Element.ownedElement><UML:Element.presentation>
+</UML:Element.presentation></UML:State>
+<UML:PseudoState xmi.id="DCE.081AAA57-2ADA-7FDF-D96A-00BBB030B97F" name="Unnamed" owner="DCE.6F83ACF5-9B61-4B9F-E062-DF6F74BB0DFB" kind="initial"><UML:Element.presentation>
+
+</UML:Element.presentation></UML:PseudoState>
+<UML:State xmi.id="DCE.C5535CE6-8546-BFF1-D08D-3D1BFAA5C63B" name="Unnamed" owner="DCE.6F83ACF5-9B61-4B9F-E062-DF6F74BB0DFB" isSimple="true"><UML:Element.ownedElement>
+<UML:Region xmi.id="DCE.E594B964-EE82-81DF-A529-05DE079CDBE7" name="Unnamed" owner="DCE.C5535CE6-8546-BFF1-D08D-3D1BFAA5C63B"/></UML:Element.ownedElement><UML:Element.presentation>
+</UML:Element.presentation></UML:State>
+<UML:State xmi.id="DCE.9ACEBD76-9B43-FFE1-F2B9-00580BBC75F9" name="Unnamed" owner="DCE.6F83ACF5-9B61-4B9F-E062-DF6F74BB0DFB" isSimple="true"><UML:Element.ownedElement>
+<UML:Region xmi.id="DCE.9F92D84B-3C18-55A8-A73A-544FC9E051AD" name="Unnamed" owner="DCE.9ACEBD76-9B43-FFE1-F2B9-00580BBC75F9"/></UML:Element.ownedElement><UML:Element.presentation>
+</UML:Element.presentation></UML:State></UML:Element.ownedElement></UML:Region></UML:Element.ownedElement></UML:StateMachine></UML:Element.ownedElement><UML:Package.packageImport>
+<UML:PackageImport xmi.id="DCE.86588A34-75EF-C816-725C-156B58E5C085" importingPackage="DCE.B34873F7-C2FB-132E-C144-8BAE560D0FC4"><UML:PackageImport.importedPackage>
+<UML:Profile xmi.id="DCE.BA41A433-46C9-E847-4846-95BA7FBAA4D8" name="Unnamed" isCloned="true" href="./scrumtoys-uml.etup#//*[@xmi.id='DCE.BA41A433-46C9-E847-4846-95BA7FBAA4D8']" isDirty="false"/></UML:PackageImport.importedPackage><UML:Element.ownedElement>
+<UML:TaggedValue xmi.id="DCE.6C687179-E665-3D83-9AC6-2D7BA2AF9B92" owner="DCE.86588A34-75EF-C816-725C-156B58E5C085" name="autoCreated">
+<UML:TaggedValue.dataValue>true</UML:TaggedValue.dataValue></UML:TaggedValue></UML:Element.ownedElement></UML:PackageImport></UML:Package.packageImport></UML:Project></XMI.content> </XMI>
diff --git a/jsf-demo/sandbox/scrumtoys2009/scrumtoys-uml/scrumtoys-uml/scrumtoys-uml.ettm b/jsf-demo/sandbox/scrumtoys2009/scrumtoys-uml/scrumtoys-uml/scrumtoys-uml.ettm
new file mode 100644
index 0000000..f6fe94e
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/scrumtoys-uml/scrumtoys-uml/scrumtoys-uml.ettm
@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!--!DOCTYPE TypeManagement
+[
+	<!ELEMENT TypeManagement (Types?, Locations?, IrresolvableTypes?)>
+	<!ATTLIST TypeManagement projectID ID #REQUIRED>
+
+	<!ELEMENT Locations (Location*)>
+	<!ATTLIST Locations
+			nextID CDATA #IMPLIED >
+
+	<!ELEMENT Location ANY>
+	<!ATTLIST Location
+			locID ID #IMPLIED
+			href CDATA #IMPLIED
+			importProjectLoc CDATA #IMPLIED
+			importProjID CDATA #IMPLIED >
+
+	<!ELEMENT Types (Type*)>
+	<!ELEMENT Type ANY>
+	<!ATTLIST Type
+			id ID #IMPLIED
+			location IDREF #IMPLIED
+			name CDATA #IMPLIED >
+
+	<!ELEMENT IrresolvableTypes (Irresolvable*)>
+	<!ELEMENT Irresolvable ANY>
+	<!ATTLIST Irresolvable 
+		   id CDATA #IMPLIED >
+]--><TypeManagement projectID="DCE.B34873F7-C2FB-132E-C144-8BAE560D0FC4">
+	<Locations nextID="1">
+	<Location locID="T.0" href="./scrumtoys-uml.etup"/></Locations>
+
+   <Types>
+   <Type id="DCE.BA41A433-46C9-E847-4846-95BA7FBAA4D8" location="T.0" name="Unnamed"/></Types>
+
+	<IrresolvableTypes>
+	</IrresolvableTypes>
+
+</TypeManagement>
diff --git a/jsf-demo/sandbox/scrumtoys2009/scrumtoys-uml/scrumtoys-uml/scrumtoys-uml.etup b/jsf-demo/sandbox/scrumtoys2009/scrumtoys-uml/scrumtoys-uml/scrumtoys-uml.etup
new file mode 100644
index 0000000..94a73ee
--- /dev/null
+++ b/jsf-demo/sandbox/scrumtoys2009/scrumtoys-uml/scrumtoys-uml/scrumtoys-uml.etup
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<XMI xmlns:UML="omg.org/UML/1.4" xmi.version="2.0">
+   <XMI.header>
+      <XMI.metamodel xmi.name="UML" xmi.version="1.4"/>
+		<XMI.documentation>
+			<XMI.exporter>
+				Embarcadero's Describe
+			</XMI.exporter>
+			<XMI.exporterVersion>
+				6.0
+			</XMI.exporterVersion>
+		</XMI.documentation>
+   </XMI.header>
+
+   <XMI.content>
+   <UML:Profile xmi.id="DCE.BA41A433-46C9-E847-4846-95BA7FBAA4D8" name="Unnamed" isCloned="true" href="./scrumtoys-uml.etup#//*[@xmi.id='DCE.BA41A433-46C9-E847-4846-95BA7FBAA4D8']" isDirty="false"><UML:Element.ownedElement>
+<UML:Stereotype xmi.id="DCE.241576B4-FD84-5D94-8BF7-D475B1AC822D" name="interface" owner="__uri_./scrumtoys-uml.etup#//*[@xmi.id='DCE.BA41A433-46C9-E847-4846-95BA7FBAA4D8']"/>
+<UML:Stereotype xmi.id="DCE.954FC8DE-D352-2F8D-DD69-B2EF43E3CD26" name="interface" owner="__uri_./scrumtoys-uml.etup#//*[@xmi.id='DCE.BA41A433-46C9-E847-4846-95BA7FBAA4D8']"/>
+<UML:Stereotype xmi.id="DCE.49F81EA2-F085-B51A-C62E-90A709633D0D" name="interface" owner="__uri_./scrumtoys-uml.etup#//*[@xmi.id='DCE.BA41A433-46C9-E847-4846-95BA7FBAA4D8']"/>
+<UML:Stereotype xmi.id="DCE.89A78B80-4113-5D44-BF98-687364EF2BFC" name="interface" owner="__uri_./scrumtoys-uml.etup#//*[@xmi.id='DCE.BA41A433-46C9-E847-4846-95BA7FBAA4D8']"/></UML:Element.ownedElement></UML:Profile></XMI.content>
+</XMI>
diff --git a/jsf-demo/sandbox/stock/manifest.mf b/jsf-demo/sandbox/stock/manifest.mf
new file mode 100644
index 0000000..328e8e5
--- /dev/null
+++ b/jsf-demo/sandbox/stock/manifest.mf
@@ -0,0 +1,3 @@
+Manifest-Version: 1.0
+X-COMMENT: Main-Class will be added automatically by build
+
diff --git a/jsf-demo/sandbox/stock/pom.xml b/jsf-demo/sandbox/stock/pom.xml
new file mode 100644
index 0000000..f96799b
--- /dev/null
+++ b/jsf-demo/sandbox/stock/pom.xml
@@ -0,0 +1,162 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>com.sun.faces.extensions</groupId>
+  <artifactId>stock</artifactId>
+  <version>${jar.full.version}</version>
+  <packaging>war</packaging>
+  <name>stock</name>
+  <url>https://jsf-extensions.dev.java.net/</url>
+  <description>
+    Demo illustrating fireAjaxTransaction event.
+  </description>
+
+  <parent>
+    <groupId>com.sun.faces.extensions.maven</groupId>
+    <artifactId>jsf-extensions-master</artifactId>
+    <version>2.0-SNAPSHOT</version>
+  </parent>
+
+  <scm>
+    <connection>scm:svn:http://jsf-extensions.dev.java.net/svn/jsf-extensions/trunk</connection>
+    <developerConnection>scm:svn:https://jsf-extensions.dev.java.net/svn/jsf-extensions/trunk</developerConnection>
+    <url>https://jsf-extensions.dev.java.net/source/browse/jsf-extensions/</url>
+  </scm>
+
+  <build>
+    <defaultGoal>install</defaultGoal>
+    <sourceDirectory>src/main/java</sourceDirectory>
+    <finalName>stock</finalName>
+   <plugins>
+       <plugin>
+	 <artifactId>maven-antrun-plugin</artifactId>
+	 <executions>
+	   <execution>
+             <id>source</id>
+	     <phase>generate-resources</phase>
+	     <configuration>
+	       <tasks>
+                 <echo message="Copying properties files to WEB-INF/classes" />
+                 <copy todir="target/${project.build.finalName}/WEB-INF/classes">
+                   <fileset dir="src/main/java">
+                     <include name="**/*.properties" />
+                   </fileset>
+                 </copy>
+	       </tasks>
+	     </configuration>
+	     <goals>
+	       <goal>run</goal>
+	     </goals>
+	   </execution>
+	 </executions>
+       </plugin>
+       <plugin>
+         <groupId>org.apache.maven.plugins</groupId>
+         <artifactId>maven-javadoc-plugin</artifactId>
+         <executions>
+           <execution>
+	     <id>javadoc</id>
+	     <phase>install</phase>
+	     <configuration>
+	       <minmemory>128m</minmemory>
+	       <maxmemory>512</maxmemory>
+	       <destDir>target/${project.build.finalName}/javadocs</destDir>
+	       <bottom />
+	     </configuration>
+	     <goals>
+	       <goal>javadoc</goal>
+	     </goals>
+           </execution>
+         </executions>
+      </plugin>
+    </plugins>
+  </build>
+
+  <repositories>
+    <repository>
+      <id>maven2-repository.dev.java.net</id>
+      <name>Java.net Repository for Maven</name>
+      <url>http://download.java.net/maven/2/</url>
+    </repository>
+  </repositories>
+
+  <dependencies>
+    <dependency>
+      <groupId>com.sun.faces</groupId>
+      <artifactId>jsf-api</artifactId>
+      <version>2.0.0-SNAPSHOT</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>com.sun.faces.extensions</groupId>
+      <artifactId>jsf-extensions-common</artifactId>
+      <version>${jar.full.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>com.sun.faces.extensions</groupId>
+      <artifactId>jsf-extensions-dev-time</artifactId>
+      <version>${jar.full.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>com.sun.faces.extensions</groupId>
+      <artifactId>jsf-extensions-dynamic-faces</artifactId>
+      <version>${jar.full.version}</version>
+    </dependency>
+  </dependencies>
+  <reporting>
+    <plugins>
+      <excludeDefaults>true</excludeDefaults>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-project-info-reports-plugin</artifactId>
+        <reportSets><reportSet><reports/></reportSet></reportSets>
+      </plugin>
+    </plugins>
+  </reporting>
+
+
+</project>
+
diff --git a/jsf-demo/sandbox/stock/src/main/java/stock/Bean.java b/jsf-demo/sandbox/stock/src/main/java/stock/Bean.java
new file mode 100644
index 0000000..45bed67
--- /dev/null
+++ b/jsf-demo/sandbox/stock/src/main/java/stock/Bean.java
@@ -0,0 +1,353 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package stock;
+
+import java.io.BufferedReader;
+import java.io.InputStreamReader;
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.util.Random;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.net.URLConnection;
+
+import javax.faces.component.UIForm;
+import javax.faces.component.UIGraphic;
+import javax.faces.component.UIInput;
+import javax.faces.component.UIOutput;
+import javax.faces.component.UIPanel;
+import javax.faces.component.UISelectOne;
+import javax.faces.context.FacesContext;
+import javax.faces.event.ActionEvent;
+
+/**
+ * This bean has methods to retrieve stock information from
+ * the Yahoo quote service.
+ */ 
+public class Bean {
+
+    private static final String SERVICE_URL =
+            "http://quote.yahoo.com/d/quotes.csv";
+
+    /**
+     * Action method that is used to retrieve stock information.
+     * This method uses two helper methods - one to get the
+     * stock information, and the other to dynamically build
+     * the "data" components for the UI.
+     */
+    public void getStockInfo(ActionEvent ae) {
+        FacesContext context = FacesContext.getCurrentInstance();
+        UIForm form = (UIForm)context.getViewRoot().findComponent("myform");
+        UISelectOne select = (UISelectOne)form.findComponent("connection");
+        String connection = (String)select.getValue();
+        if (form != null) {
+            if (connection.equals("Remote")) {
+                setProxyIfNeeded(form);
+            }
+            UIInput component = (UIInput)form.findComponent("symbol");
+            if (component != null) {
+                String symbolInput = (String)component.getValue();
+                if (symbolInput != null) {
+                    String[] symbols = symbolInput.split("\\s");
+                    String[] stockData = null;
+                    if (connection.equals("Local")) {
+                        stockData = getLocalStockData(symbols);
+                        buildUI(stockData);
+                        return;
+                    }
+                    try {
+                        stockData = getStockData(symbols);
+                        buildUI(stockData);
+                    } catch (Exception e) {
+                    }
+                }
+            }
+        }
+    }
+
+    /**
+     * Helper method to get the stock data (remotely).
+     */
+    private String[] getStockData(String[] symbols)
+        throws IOException, MalformedURLException {
+        String[] data = new String[symbols.length];
+        for (int i=0; i<symbols.length; i++) {
+            StringBuffer sb = new StringBuffer(SERVICE_URL);
+            sb.append("?s=");
+            sb.append(symbols[i]);
+            sb.append("&f=snol1cp2v=.csv");
+            String url = sb.toString();
+            URLConnection urlConn = null;
+            InputStreamReader inputReader = null;
+            BufferedReader buff = null;
+            try {
+                urlConn = new URL(url).openConnection();
+                inputReader = new InputStreamReader(
+                    urlConn.getInputStream());
+                buff = new BufferedReader(inputReader);
+                data[i] = buff.readLine();
+                data[i] = data[i].replace( "\"", "" );
+            } catch (MalformedURLException e){
+            } catch (IOException ioe) {
+            } finally {
+                if (inputReader != null) {
+                    try {
+                        inputReader.close();
+                        buff.close();
+                    } catch (Exception e) {}
+                }
+            }
+        }
+        return data;
+    }
+
+    private String[] getLocalStockData(String[] symbols) {
+        String[] data = new String[symbols.length];
+        Random generator1 = new Random(1459678L);
+        Random generator2 = new Random(System.currentTimeMillis());
+        for (int i=0; i<symbols.length; i++) {
+            // generate an open price between 1 and 100
+            double openPrice = round(generator1.nextDouble() * 100, 2);
+            // generate a last price such that:
+            // lastPrice is between 1 and (openPrice + 20)
+            double low = 1;
+            double high = openPrice + 20;
+            double lastPrice = generator2.nextDouble() * (high - low) + low;
+            lastPrice = round(lastPrice, 2);
+            // change
+            double change = round(lastPrice - openPrice, 2);
+            // calculate percent change
+            double percentChange = 0.00;
+            if (openPrice != lastPrice) {
+                percentChange = 100 * ((lastPrice - openPrice)/openPrice);
+                percentChange = round(percentChange, 2);
+            }
+            // generate volume between 10000 and 100000
+            int volume = generator2.nextInt(90001) + 10000;
+            // now build the string to pass to buildUI routine
+            data[i] = symbols[i].toUpperCase()+","+
+                symbols[i].toUpperCase() + "," +
+                new Double(openPrice).toString()+","+
+                new Double(lastPrice).toString()+","+
+                new Double(change).toString()+","+
+                new Double(percentChange).toString()+"%,"+
+                new Integer(volume).toString();
+        }
+        return data;
+    }
+
+    /**
+     * Helper method to dynamically add JSF components to display
+     * the data.
+     */
+    private void buildUI(String[] stockData) {
+        FacesContext context = FacesContext.getCurrentInstance();
+        UIForm form = (UIForm)context.getViewRoot().findComponent("myform");
+        UIPanel dataPanel = (UIPanel)form.findComponent("stockdata");
+        dataPanel.getChildren().clear();
+        UIPanel titlePanel1 = new UIPanel();
+        UIOutput output = new UIOutput();
+        output.setValue("Symbol");
+        titlePanel1.getChildren().add(output);
+        dataPanel.getChildren().add(titlePanel1);
+        UIPanel titlePanel2 = new UIPanel();
+        output = new UIOutput();
+        output.setValue("Name");
+        titlePanel2.getChildren().add(output);
+        dataPanel.getChildren().add(titlePanel2);
+        UIPanel titlePanel3 = new UIPanel();
+        output = new UIOutput();
+        output.setValue("Open");
+        titlePanel3.getChildren().add(output);
+        dataPanel.getChildren().add(titlePanel3);
+        UIPanel titlePanel4 = new UIPanel();
+        output = new UIOutput();
+        output.setValue("Last");
+        titlePanel4.getChildren().add(output);
+        dataPanel.getChildren().add(titlePanel4);
+        UIPanel titlePanel5 = new UIPanel();
+        output = new UIOutput();
+        output.setValue("");
+        titlePanel5.getChildren().add(output);
+        dataPanel.getChildren().add(titlePanel5);
+        UIPanel titlePanel6 = new UIPanel();
+        output = new UIOutput();
+        output.setValue("Change");
+        titlePanel6.getChildren().add(output);
+        dataPanel.getChildren().add(titlePanel6);
+        UIPanel titlePanel7 = new UIPanel();
+        output = new UIOutput();
+        output.setValue("Change %");
+        titlePanel7.getChildren().add(output);
+        dataPanel.getChildren().add(titlePanel7);
+        UIPanel titlePanel8 = new UIPanel();
+        output = new UIOutput();
+        output.setValue("Volume");
+        titlePanel8.getChildren().add(output);
+        dataPanel.getChildren().add(titlePanel8);
+
+        for (int i=0; i<stockData.length; i++) {
+            String[] data = stockData[i].split("\\,");
+            UIOutput outputComponent = null;
+            UIGraphic imageComponent = null;
+            double openPrice = 0;
+            double lastPrice = 0;
+            double change = 0;
+            boolean openPriceAvailable = true;
+
+            // Create and add components wth data values
+
+            // Symbol
+
+            outputComponent = new UIOutput();
+            outputComponent.setValue(data[0]);
+            dataPanel.getChildren().add(outputComponent);
+
+            // Name
+
+            outputComponent = new UIOutput();
+            outputComponent.setValue(data[1]);
+            dataPanel.getChildren().add(outputComponent);
+
+            // Open Price (if any)
+
+            outputComponent = new UIOutput();
+            try {
+                openPrice = new Double(data[2]).doubleValue();
+            } catch (NumberFormatException nfe) {
+                openPriceAvailable = false;
+            }
+            outputComponent.setValue(data[2]);
+            dataPanel.getChildren().add(outputComponent);
+
+            // Last Price
+
+            outputComponent = new UIOutput();
+            if (openPriceAvailable) {
+                lastPrice = new Double(data[3]).doubleValue();
+                lastPrice = round(lastPrice, 2);
+                change = lastPrice - openPrice;
+                change = round(change, 2);
+            }
+            outputComponent.setValue(lastPrice);
+            dataPanel.getChildren().add(outputComponent);
+
+            // Arrow (up or down) Graphic
+
+            if (change < 0) {
+                imageComponent = new UIGraphic();
+                imageComponent.setUrl("resources/down_r.gif");
+                dataPanel.getChildren().add(imageComponent);
+            } else if (change > 0) {
+                imageComponent = new UIGraphic();
+                imageComponent.setUrl("resources/up_g.gif");
+                dataPanel.getChildren().add(imageComponent);
+            } else {
+                outputComponent = new UIOutput();
+                outputComponent.setValue("");
+                dataPanel.getChildren().add(outputComponent);
+            }
+
+            // Price Change
+
+            outputComponent = new UIOutput();
+            if (change < 0) {
+                outputComponent.getAttributes().put("styleClass",
+                    "down-color");
+            } else if (change > 0) {
+                outputComponent.getAttributes().put("styleClass",
+                    "up-color");
+            }
+            outputComponent.setValue(String.valueOf(change));
+            dataPanel.getChildren().add(outputComponent);
+
+            // Percent Change
+
+            outputComponent = new UIOutput();
+            if (change < 0) {
+                outputComponent.getAttributes().put("styleClass",
+                    "down-color");
+            } else if (change > 0) {
+                outputComponent.getAttributes().put("styleClass",
+                    "up-color");
+            }
+            outputComponent.setValue(data[5]);
+            dataPanel.getChildren().add(outputComponent);
+
+            // Volume
+
+            outputComponent = new UIOutput();
+            outputComponent.setValue(data[6]);
+            dataPanel.getChildren().add(outputComponent);
+        }
+    }
+
+    private void setProxyIfNeeded(UIForm form) {
+        UIInput component = (UIInput)form.findComponent("proxyHost");
+        String proxyHost = (String)component.getValue();
+        component = (UIInput)form.findComponent("proxyPort");
+        String proxyPort = (String)component.getValue();
+        if ((proxyHost != null && proxyHost.length() > 0) &&
+            (proxyPort != null && proxyPort.length() > 0)) {
+            try {
+                System.setProperty("http.proxyHost", proxyHost);
+                System.setProperty("http.proxyPort", proxyPort);
+            } catch (SecurityException e) {
+            }
+        }
+    }
+
+    private double round(double val, int places) {
+        long factor = (long)Math.pow(10,places);
+
+        // Shift the decimal the correct number of places
+        // to the right.
+        val = val * factor;
+
+        // Round to the nearest integer.
+        long tmp = Math.round(val);
+
+        // Shift the decimal the correct number of places
+        // back to the left.
+        return (double)tmp / factor;
+    }
+
+}
diff --git a/jsf-demo/sandbox/stock/src/main/java/stock/StockTable.java b/jsf-demo/sandbox/stock/src/main/java/stock/StockTable.java
new file mode 100644
index 0000000..6a9ff95
--- /dev/null
+++ b/jsf-demo/sandbox/stock/src/main/java/stock/StockTable.java
@@ -0,0 +1,64 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package stock;
+
+import javax.faces.application.ResourceDependencies;
+import javax.faces.application.ResourceDependency;
+import javax.faces.component.UIPanel;
+
+ at ResourceDependencies( {
+    @ResourceDependency (name="prototype.js", library="javax.faces", target="head"),
+    @ResourceDependency (name="com_sun_faces_jsf.js", library="javax.faces", target="head"),
+    @ResourceDependency (name="jsf.js", library="javax.faces", target="head"),
+    @ResourceDependency (name="stock-query.js", target="head") } )
+
+public class StockTable extends UIPanel{
+
+    public static final String COMPONENT_TYPE = "stock.StockTable";
+
+    public StockTable() {
+        setRendererType(null);
+    }
+
+    public String getFamily() {
+        return COMPONENT_TYPE;
+    }
+}
diff --git a/jsf-demo/sandbox/stock/src/main/java/stock/StockTableRenderer.java b/jsf-demo/sandbox/stock/src/main/java/stock/StockTableRenderer.java
new file mode 100644
index 0000000..c68e7b3
--- /dev/null
+++ b/jsf-demo/sandbox/stock/src/main/java/stock/StockTableRenderer.java
@@ -0,0 +1,193 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package stock;
+
+
+import java.io.IOException;
+import java.util.Collections;
+import java.util.Iterator;
+
+import javax.faces.component.UIComponent;
+import javax.faces.component.UIViewRoot;
+import javax.faces.context.FacesContext;
+import javax.faces.context.ResponseWriter;
+import javax.faces.render.Renderer;
+
+/**
+ * <B>StockTableRenderer</B> is a class that renders <code>UIPanel</code> component
+ * as a "Grid".
+ */
+
+public class StockTableRenderer extends Renderer {
+
+
+    // ---------------------------------------------------------- Public Methods
+
+
+    @Override
+    public void encodeBegin(FacesContext context, UIComponent component)
+          throws IOException {
+
+        // Render the beginning of this panel
+        ResponseWriter writer = context.getResponseWriter();
+
+        writer.startElement("table", component);
+
+        String id = component.getId();
+        if ((null != component.getId()) && 
+            !id.startsWith(UIViewRoot.UNIQUE_ID_PREFIX)) {
+            writer.writeAttribute("id", id = component.getClientId(context), "id");
+        }
+
+        String styleClass = (String) component.getAttributes().get("styleClass");
+        if (styleClass != null) {
+            writer.writeAttribute("class", styleClass, "styleClass");
+        }
+        String border = (String) component.getAttributes().get("border");
+        if (border != null) {
+            writer.writeAttribute("border", border, "border");
+        }
+        String cellspacing = (String) component.getAttributes().get("cellspacing");
+        if (cellspacing != null) {
+            writer.writeAttribute("cellspacing", cellspacing, "cellspacing");
+        }
+
+        writer.writeText("\n", component, null);
+    }
+
+
+    @Override
+    public void encodeChildren(FacesContext context, UIComponent component)
+          throws IOException {
+
+        ResponseWriter writer = context.getResponseWriter();
+
+        String columns = (String)component.getAttributes().get("columns");
+        int count = Integer.valueOf(columns).intValue();
+
+        boolean open = false;
+        int i = 0;
+
+        writer.startElement("tbody", component);
+        writer.writeText("\n", component, null);
+
+        for (Iterator<UIComponent> kids = getChildren(component);
+            kids.hasNext();) {
+            UIComponent child = kids.next();
+            if (!child.isRendered()) {
+                continue;
+            }
+            if ((i % count) == 0) {
+                if (open) {
+                    writer.endElement("tr");
+                    writer.writeText("\n", component, null);
+                    open = false;
+                }
+                writer.startElement("tr", component);
+                writer.writeText("\n", component, null);
+                open = true;
+            }
+
+            renderRow(context, component, child, writer);
+            i++;
+        }
+        if (open) {
+            writer.endElement("tr");
+            writer.writeText("\n", component, null);
+        }
+        writer.endElement("tbody");
+        writer.writeText("\n", component, null);
+    }
+
+    @Override
+    public void encodeEnd(FacesContext context, UIComponent component)
+        throws IOException {
+        ResponseWriter writer = context.getResponseWriter();
+        writer.endElement("table");
+        writer.writeText("\n", component, null);
+    }
+
+    @Override
+    public boolean getRendersChildren() {
+
+        return true;
+
+    }
+
+    private void renderRow(FacesContext context,
+                             UIComponent table,
+                             UIComponent child,
+                             ResponseWriter writer)
+        throws IOException {
+        writer.startElement("td", table);
+        encodeRecursive(context, child);
+        writer.endElement("td");
+        writer.writeText("\n", table, null);
+    }
+
+    private Iterator<UIComponent> getChildren(UIComponent component) {
+        int childCount = component.getChildCount();
+        if (childCount > 0) {
+            return component.getChildren().iterator();
+        } else {
+            return Collections.<UIComponent>emptyList().iterator();
+        }
+
+    }
+
+    private void encodeRecursive(FacesContext context, UIComponent component)
+        throws IOException {
+
+        // Render this component and its children recursively
+        component.encodeBegin(context);
+        if (component.getRendersChildren()) {
+            component.encodeChildren(context);
+        } else {
+            Iterator<UIComponent> kids = getChildren(component);
+            while (kids.hasNext()) {
+                UIComponent kid = kids.next();
+                encodeRecursive(context, kid);
+            }
+        }
+        component.encodeEnd(context);
+    }
+
+}
diff --git a/jsf-demo/sandbox/stock/src/main/java/stock/StockTableTag.java b/jsf-demo/sandbox/stock/src/main/java/stock/StockTableTag.java
new file mode 100644
index 0000000..ab09bcf
--- /dev/null
+++ b/jsf-demo/sandbox/stock/src/main/java/stock/StockTableTag.java
@@ -0,0 +1,107 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package stock;
+
+import javax.el.ValueExpression;
+import javax.faces.component.UIComponent;
+import javax.faces.webapp.UIComponentELTag;
+
+public class StockTableTag extends UIComponentELTag {
+
+    public String getRendererType() {
+        return null;
+    }
+
+    public String getComponentType() {
+        return "stock.StockTable";
+    }
+
+    @Override
+    protected void setProperties(UIComponent component) {
+
+        super.setProperties(component);
+        if (border != null) {
+            component.setValueExpression("border", border);
+        }
+        if (cellspacing != null) {
+            component.setValueExpression("cellspacing", cellspacing);
+        }
+        if (columns != null) {
+            component.setValueExpression("columns", columns);
+        }
+        if (style != null) {
+            component.setValueExpression("style", style);
+        }
+        if (styleClass != null) {
+            component.setValueExpression("styleClass", styleClass);
+        }
+    }
+
+    private ValueExpression border;
+    public void setBorder(javax.el.ValueExpression border) {
+        this.border = border;
+    }
+
+    // PROPERTY: cellspacing
+    private ValueExpression cellspacing;
+    public void setCellspacing(javax.el.ValueExpression cellspacing) {
+        this.cellspacing = cellspacing;
+    }
+
+    // PROPERTY: columns
+    private ValueExpression columns;
+    public void setColumns(javax.el.ValueExpression columns) {
+        this.columns = columns;
+    }
+
+    // PROPERTY: style
+    private ValueExpression style;
+    public void setStyle(javax.el.ValueExpression style) {
+        this.style = style;
+    }
+
+    // PROPERTY: styleClass
+    private ValueExpression styleClass;
+    public void setStyleClass(javax.el.ValueExpression styleClass) {
+        this.styleClass = styleClass;
+    }
+
+}
diff --git a/jsf-demo/sandbox/stock/src/main/webapp/WEB-INF/demo.taglib.xml b/jsf-demo/sandbox/stock/src/main/webapp/WEB-INF/demo.taglib.xml
new file mode 100644
index 0000000..e6fa5aa
--- /dev/null
+++ b/jsf-demo/sandbox/stock/src/main/webapp/WEB-INF/demo.taglib.xml
@@ -0,0 +1,58 @@
+<?xml version="1.0"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2005-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE facelet-taglib PUBLIC
+  "-//Sun Microsystems, Inc.//DTD Facelet Taglib 1.0//EN"
+  "http://java.sun.com/dtd/facelet-taglib_1_0.dtd">
+
+<facelet-taglib>
+    <namespace>https://javaserverfaces.dev.java.net/demo/stock</namespace>
+    <tag>
+        <tag-name>stockTable</tag-name>
+        <component>
+            <component-type>stock.StockTable</component-type>
+            <renderer-type>stock.StockTableRenderer</renderer-type>
+        </component>
+    </tag>
+</facelet-taglib>
+
diff --git a/jsf-demo/sandbox/stock/src/main/webapp/WEB-INF/faces-config.xml b/jsf-demo/sandbox/stock/src/main/webapp/WEB-INF/faces-config.xml
new file mode 100644
index 0000000..5871756
--- /dev/null
+++ b/jsf-demo/sandbox/stock/src/main/webapp/WEB-INF/faces-config.xml
@@ -0,0 +1,77 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!-- =========== FULL CONFIGURATION FILE ================================== -->
+
+<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
+              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+              xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd"
+              version="1.2">
+
+    <component>
+        <description><![CDATA[Your description here]]></description>
+        <display-name>StockTable</display-name>
+        <component-type>stock.StockTable</component-type>
+        <component-class>stock.StockTable</component-class>
+        <component-extension>
+            <renderer-type>stock.StockTableRenderer</renderer-type>
+        </component-extension>
+    </component>
+
+     <render-kit>
+         <renderer>
+             <component-family>stock.StockTable</component-family>
+             <renderer-type>stock.StockTableRenderer</renderer-type>
+             <renderer-class>stock.StockTableRenderer</renderer-class>
+         </renderer>
+     </render-kit>
+
+    <managed-bean>
+        <managed-bean-name>bean</managed-bean-name>
+        <managed-bean-class>
+            stock.Bean
+        </managed-bean-class>
+        <managed-bean-scope>application</managed-bean-scope>
+    </managed-bean>
+
+</faces-config>
diff --git a/jsf-demo/sandbox/stock/src/main/webapp/WEB-INF/stock.tld b/jsf-demo/sandbox/stock/src/main/webapp/WEB-INF/stock.tld
new file mode 100644
index 0000000..272415c
--- /dev/null
+++ b/jsf-demo/sandbox/stock/src/main/webapp/WEB-INF/stock.tld
@@ -0,0 +1,161 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<taglib xmlns="http://java.sun.com/xml/ns/javaee"
+        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd"
+        version="2.1">
+
+    <!-- ============== Tag Library Description Elements ============= -->
+    <description>
+        This tag library contains tags used by the Stock application.
+    </description>
+    <tlib-version>1.2</tlib-version>
+    <short-name>s</short-name>
+    <uri>https://javaserverfaces.dev.java.net/demo/stock</uri>
+
+    <!-- ===================== ImageMap tags ====================== -->
+    <tag>
+        <description>
+        </description>
+        <name>stockTable</name>
+        <tag-class>stock.StockTableTag</tag-class>
+        <body-content>empty</body-content>
+        <attribute>
+            <description>
+            </description>
+            <name></name>
+            <required>true</required>
+            <deferred-value>
+                <type>java.lang.String</type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[The number of columns to render before
+                starting a new row.]]>
+            </description>
+            <name>
+                columns
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>java.lang.String</type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Width (in pixels) of the border to be drawn
+                around the table containing the options list.]]>
+            </description>
+            <name>
+                border
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    int
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[CSS style(s) to be applied when this component is rendered.]]>
+            </description>
+            <name>
+                style
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Space-separated list of CSS style class(es) to be applied when
+                this element is rendered.  This value must be passed through     as the "class" attribute on generated markup.]]>
+            </description>
+            <name>
+                styleClass
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Definition of how much space the user agent should
+                leave between the left side of the table and the
+                leftmost column, the top of the table and the top of
+                the top side of the topmost row, and so on for the
+                right and bottom of the table.  It also specifies
+                the amount of space to leave between cells.]]>
+            </description>
+            <name>
+                cellspacing
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+
+    </tag>
+</taglib>
diff --git a/jsf-demo/sandbox/stock/src/main/webapp/WEB-INF/web.xml b/jsf-demo/sandbox/stock/src/main/webapp/WEB-INF/web.xml
new file mode 100755
index 0000000..38bc782
--- /dev/null
+++ b/jsf-demo/sandbox/stock/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,98 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2005-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<web-app version="2.5"
+         xmlns="http://java.sun.com/xml/ns/javaee"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
+
+    <display-name>CompRes Blank Facelets App</display-name>
+    <description>CompRes Blank Facelets App</description>
+
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>server</param-value>
+    </context-param>
+    <context-param>
+	<param-name>javax.faces.DEFAULT_SUFFIX</param-name>
+	<param-value>.xhtml</param-value>
+    </context-param>
+    <context-param>
+        <param-name>facelets.DEVELOPMENT</param-name>
+        <param-value>true</param-value>
+    </context-param>
+
+    <context-param>
+        <description>
+            Set this flag to true if you want the JavaServer Faces
+            Reference Implementation to validate the XML in your
+            faces-config.xml resources against the DTD. Default
+            value is false.
+        </description>
+        <param-name>com.sun.faces.validateXml</param-name>
+        <param-value>true</param-value>
+    </context-param>
+
+    <context-param>
+	<param-name>javax.faces.FACELETS_LIBRARIES</param-name>
+	<param-value>/WEB-INF/extensions.taglib.xml;/WEB-INF/demo.taglib.xml</param-value>
+    </context-param>
+
+    <!-- Faces Servlet -->
+  <servlet>
+    <servlet-name>Faces Servlet</servlet-name>
+    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+    <init-param>
+      <param-name>javax.faces.LIFECYCLE_ID</param-name>
+      <param-value>com.sun.faces.lifecycle.PARTIAL</param-value>
+    </init-param>
+    <load-on-startup>1</load-on-startup>
+  </servlet>
+
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+        <url-pattern>*.jsf</url-pattern>
+    </servlet-mapping>
+
+</web-app>
diff --git a/jsf-demo/sandbox/stock/src/main/webapp/home.xhtml b/jsf-demo/sandbox/stock/src/main/webapp/home.xhtml
new file mode 100644
index 0000000..3acc37f
--- /dev/null
+++ b/jsf-demo/sandbox/stock/src/main/webapp/home.xhtml
@@ -0,0 +1,96 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:s="https://javaserverfaces.dev.java.net/demo/stock">
+<f:view contentType="text/html"/>
+
+<h:head>
+    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
+    <title>ajaxRequest/queueEvent Example</title>
+</h:head>
+
+
+<h:body>
+
+  <h:form id="myform" prependId="false">
+    <h:panelGrid styleClass="title-panel">
+        <h:outputText value="Stock Query" styleClass="title-panel-text"/>
+        <h:outputText value="Powered By JavaServer Faces 2.0" styleClass="title-panel-subtext"/>
+    </h:panelGrid>
+
+    <h:panelGrid border="1" columns="1" styleClass="panel-input-border">
+        <h:panelGrid border="1" columns="7">
+            <h:outputText value="Symbol:"/>
+            <h:inputText id="symbol"/>
+            <h:commandButton id="search" value="Search"
+                onclick="javax.faces.Ajax.ajaxRequest(this, {execute:'symbol,search,connection',render:'stockdata'});return false;"
+                actionListener="#{bean.getStockInfo}" />
+            <h:outputText value="Proxy Host:"/>
+            <h:inputText id="proxyHost"/>
+            <h:outputText value="Proxy Port:"/>
+            <h:inputText id="proxyPort"/>
+            <h:outputText value="Streaming:"/>
+            <h:selectOneMenu id="streaming" value="Off"
+                onchange="toggleStreaming()">
+                <f:selectItem itemValue="Off" itemLabel="Off"/>
+                <f:selectItem itemValue="On" itemLabel="On"/>
+            </h:selectOneMenu>
+            <h:selectOneMenu id="connection" value="Local">
+                <f:selectItem itemValue="Local" itemLabel="Local"/>
+                <f:selectItem itemValue="Remote" itemLabel="Remote"/>
+            </h:selectOneMenu>
+        </h:panelGrid>
+    </h:panelGrid>
+
+    <s:stockTable id="stockdata" border="1" columns="8" cellspacing="5" styleClass="panel-data-border"/>
+
+  <h:outputStylesheet name="stylesheet.css" />
+
+</h:form>
+
+</h:body>
+
+</html>
diff --git a/jsf-demo/sandbox/stock/src/main/webapp/index.html b/jsf-demo/sandbox/stock/src/main/webapp/index.html
new file mode 100644
index 0000000..241e09e
--- /dev/null
+++ b/jsf-demo/sandbox/stock/src/main/webapp/index.html
@@ -0,0 +1,47 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<html>
+<header>
+<meta http-equiv="Refresh" content="0;url=home.jsf">
+</header>
+</html>
diff --git a/jsf-demo/sandbox/stock/src/main/webapp/resources/bgblack18.jpg b/jsf-demo/sandbox/stock/src/main/webapp/resources/bgblack18.jpg
new file mode 100644
index 0000000..dfc6174
Binary files /dev/null and b/jsf-demo/sandbox/stock/src/main/webapp/resources/bgblack18.jpg differ
diff --git a/jsf-demo/sandbox/stock/src/main/webapp/resources/down_r.gif b/jsf-demo/sandbox/stock/src/main/webapp/resources/down_r.gif
new file mode 100644
index 0000000..aad3716
Binary files /dev/null and b/jsf-demo/sandbox/stock/src/main/webapp/resources/down_r.gif differ
diff --git a/jsf-demo/sandbox/stock/src/main/webapp/resources/javax.faces/ajax.js b/jsf-demo/sandbox/stock/src/main/webapp/resources/javax.faces/ajax.js
new file mode 100644
index 0000000..429edfc
--- /dev/null
+++ b/jsf-demo/sandbox/stock/src/main/webapp/resources/javax.faces/ajax.js
@@ -0,0 +1,505 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ *
+ *
+ * This file incorporates work covered by the following copyright and
+ * permission notice:
+ *
+ * Copyright 2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/*******************************************************************************
+ * OpenAjax.js
+ *
+ * Reference implementation of the OpenAjax Hub, as specified by OpenAjax Alliance.
+ * Specification is under development at: 
+ *
+ *   http://www.openajax.org/member/wiki/OpenAjax_Hub_Specification
+ *
+ * Copyright 2006-2008 OpenAjax Alliance
+ ******************************************************************************/
+
+// prevent re-definition of the OpenAjax object
+if(!window["OpenAjax"]){
+	OpenAjax = new function(){
+		var t = true;
+		var f = false;
+		var g = window;
+		var libs;
+		var ooh = "org.openajax.hub.";
+
+		var h = {};
+		this.hub = h;
+		h.implementer = "http://openajax.org";
+		h.implVersion = "1.0";
+		h.specVersion = "1.0";
+		h.implExtraData = {};
+		var libs = {};
+		h.libraries = libs;
+
+		h.registerLibrary = function(prefix, nsURL, version, extra){
+			libs[prefix] = {
+				prefix: prefix,
+				namespaceURI: nsURL,
+				version: version,
+				extraData: extra 
+			};
+			this.publish(ooh+"registerLibrary", libs[prefix]);
+		}
+		h.unregisterLibrary = function(prefix){
+			this.publish(ooh+"unregisterLibrary", libs[prefix]);
+			delete libs[prefix];
+		}
+
+		h._subscriptions = { c:{}, s:[] };
+		h._cleanup = [];
+		h._subIndex = 0;
+		h._pubDepth = 0;
+
+		h.subscribe = function(name, callback, scope, subscriberData, filter)			
+		{
+			if(!scope){
+				scope = window;
+			}
+			var handle = name + "." + this._subIndex;
+			var sub = { scope: scope, cb: callback, fcb: filter, data: subscriberData, sid: this._subIndex++, hdl: handle };
+			var path = name.split(".");
+	 		this._subscribe(this._subscriptions, path, 0, sub);
+			return handle;
+		}
+
+		h.publish = function(name, message)		
+		{
+			var path = name.split(".");
+			this._pubDepth++;
+			this._publish(this._subscriptions, path, 0, name, message);
+			this._pubDepth--;
+			if((this._cleanup.length > 0) && (this._pubDepth == 0)) {
+				for(var i = 0; i < this._cleanup.length; i++) 
+					this.unsubscribe(this._cleanup[i].hdl);
+				delete(this._cleanup);
+				this._cleanup = [];
+			}
+		}
+
+		h.unsubscribe = function(sub) 
+		{
+			var path = sub.split(".");
+			var sid = path.pop();
+			this._unsubscribe(this._subscriptions, path, 0, sid);
+		}
+		
+		h._subscribe = function(tree, path, index, sub) 
+		{
+			var token = path[index];
+			if(index == path.length) 	
+				tree.s.push(sub);
+			else { 
+				if(typeof tree.c == "undefined")
+					 tree.c = {};
+				if(typeof tree.c[token] == "undefined") {
+					tree.c[token] = { c: {}, s: [] }; 
+					this._subscribe(tree.c[token], path, index + 1, sub);
+				}
+				else 
+					this._subscribe( tree.c[token], path, index + 1, sub);
+			}
+		}
+
+		h._publish = function(tree, path, index, name, msg) {
+			if(typeof tree != "undefined") {
+				var node;
+				if(index == path.length) {
+					node = tree;
+				} else {
+					this._publish(tree.c[path[index]], path, index + 1, name, msg);
+					this._publish(tree.c["*"], path, index + 1, name, msg);			
+					node = tree.c["**"];
+				}
+				if(typeof node != "undefined") {
+					var callbacks = node.s;
+					var max = callbacks.length;
+					for(var i = 0; i < max; i++) {
+						if(callbacks[i].cb) {
+							var sc = callbacks[i].scope;
+							var cb = callbacks[i].cb;
+							var fcb = callbacks[i].fcb;
+							var d = callbacks[i].data;
+							if(typeof cb == "string"){
+								// get a function object
+								cb = sc[cb];
+							}
+							if(typeof fcb == "string"){
+								// get a function object
+								fcb = sc[fcb];
+							}
+							if((!fcb) || 
+							   (fcb.call(sc, name, msg, d))) {
+								cb.call(sc, name, msg, d);
+							}
+						}
+					}
+				}
+			}
+		}
+			
+		h._unsubscribe = function(tree, path, index, sid) {
+			if(typeof tree != "undefined") {
+				if(index < path.length) {
+					var childNode = tree.c[path[index]];
+					this._unsubscribe(childNode, path, index + 1, sid);
+					if(childNode.s.length == 0) {
+						for(var x in childNode.c) 
+					 		return;		
+						delete tree.c[path[index]];	
+					}
+					return;
+				}
+				else {
+					var callbacks = tree.s;
+					var max = callbacks.length;
+					for(var i = 0; i < max; i++) 
+						if(sid == callbacks[i].sid) {
+							if(this._pubDepth > 0) {
+								callbacks[i].cb = null;	
+								this._cleanup.push(callbacks[i]);						
+							}
+							else
+								callbacks.splice(i, 1);
+							return; 	
+						}
+				}
+			}
+		}
+		// The following function is provided for automatic testing purposes.
+		// It is not expected to be deployed in run-time OpenAjax Hub implementations.
+		h.reinit = function()
+		{
+			for (var lib in OpenAjax.hub.libraries) {
+				delete OpenAjax.hub.libraries[lib];
+			}
+			OpenAjax.hub.registerLibrary("OpenAjax", "http://openajax.org/hub", "1.0", {});
+
+			delete OpenAjax._subscriptions;
+			OpenAjax._subscriptions = {c:{},s:[]};
+			delete OpenAjax._cleanup;
+			OpenAjax._cleanup = [];
+			OpenAjax._subIndex = 0;
+			OpenAjax._pubDepth = 0;
+		}
+	};
+	// Register the OpenAjax Hub itself as a library.
+	OpenAjax.hub.registerLibrary("OpenAjax", "http://openajax.org/hub", "1.0", {});
+
+}
+
+
+/**
+ * Register with OpenAjax
+ */
+if (typeof OpenAjax != "undefined" &&
+    typeof OpenAjax.hub.registerLibrary != "undefined") {
+    OpenAjax.hub.registerLibrary("javax", "www.sun.com", "1.0", null);
+}
+
+/**
+ * Create our top level namespace - javax.faces.Ajax
+ */
+if (javax == null || typeof javax == "undefined") {
+    var javax = new Object();
+}
+if (javax.faces == null || typeof java.faces == "undefined") {
+    javax["faces"] = new Object();
+}
+if (javax.faces.Ajax == null || typeof javax.faces.Ajax == "undefined") {
+    javax.faces["Ajax"] = new Object();
+}
+
+
+/**
+ * Our top level namespace
+ */
+javax.faces.Ajax = function() {
+
+    // private functions
+
+    var setOptions = function(options) {
+        this.options= {};
+        for (prop in options) {
+            this.options[prop] = prop;
+        }
+    }
+
+    var getForm = function(element) {
+        if (element) {
+            var form = $(element);
+            while (form && form.tagName && form.tagName.toLowerCase() != 'form') {
+                if (form.form) return form.form;
+                if (form.parentNode) {
+                        form = form.parentNode;
+                } else {
+                    form = null;
+                }
+                if (form) return form;
+            }
+            return document.forms[0];
+        }
+    }
+
+    var getFormElements = function(form, options) {
+        var ignoreTypes = ['button','submit','reset','image'];
+        var elements = new Array();
+        if (options && options.inputs) {
+            var inputs = options.inputs.split(",");
+            if (inputs) {
+                for (i = 0; i < inputs.length; i++) {
+                    var element = document.getElementById(inputs[i]);
+                    if (element && (ignoreTypes.indexOf(element.type) == -1)) {
+                        elements[i] = element;
+                    }
+                }
+                return elements;
+            }
+        }
+        var ignore;
+        if (options && options.ignore) {
+            ignore = options.ignore.split(",");
+        }
+        for (var tagName in formElements) {
+            var tagElements = form.getElementsByTagName(tagName);
+            var isIgnore = "false";
+            for (var j = 0; j < tagElements.length; j++) {
+                if (ignore) {
+                    for (var k = 0; k < ignore.length; k++) {
+                        if (tagElements[j].id == ignore[k]) {
+                            isIgnore = "true"; 
+                            break;
+                        }
+                    }
+                }
+                if (isIgnore == "false" && (ignoreTypes.indexOf(tagElements[j].type) == -1)) {
+                    elements.push(tagElements[j]);
+                } else {
+                    isIgnore = "false";
+                }
+            }
+        }
+        return elements;
+    }
+
+    var $ = function() {
+        var results = [], element;
+        for (var i = 0; i < arguments.length; i++) {
+            element = arguments[i];
+            if (typeof element == 'string')
+                element = document.getElementById(element);
+            results.push(element);
+        }
+        return reduce(results);
+    }
+
+    var reduce = function(toReduce) {
+        return toReduce.length > 1 ? toReduce : toReduce[0];
+    }
+
+    var formElements =  {
+        input: function(element) {
+            switch (element.type.toLowerCase()) {
+                case 'checkbox':
+                case 'radio':
+                    return this.inputSelector(element);
+                default:
+                    return this.textarea(element);
+            }
+            return false;
+        },
+
+        inputSelector: function(element) {
+            if (element.checked)
+                return [element.name, element.value];
+        },
+
+        textarea: function(element) {
+            return [element.name, element.value];
+        },
+
+        select: function(element) {
+            if (element.type == 'select-one') {
+                return this.selectOne(element);
+            } else {
+                return this.selectMany(element);
+            }
+        },
+
+        selectOne: function(element) {
+            var value = '', opt, index = element.selectedIndex;
+            if (index >= 0) {
+                opt = element.options[index];
+                value = opt.value || opt.text;
+            }
+            return [element.name, value];
+        },
+
+        selectMany: function(element) {
+            var value = [];
+            for (var i = 0; i < element.length; i++) {
+                var opt = element.options[i];
+                if (opt.selected)
+                    value.push(opt.value || opt.text);
+            }
+            return [element.name, value];
+        }
+    }
+
+    var serializeElement = function(element) {
+        element = $(element);
+        var method = element.tagName.toLowerCase();
+        var parameter = formElements[method](element);
+
+        if (parameter) {
+            var key = encodeURIComponent(parameter[0]);
+            if (key.length == 0) return;
+
+            if (parameter[1].constructor != Array)
+                parameter[1] = [parameter[1]];
+            
+            return parameter[1].map(
+                function(value) {
+                    return key + '=' + encodeURIComponent(value);
+                }
+            ).join('&');
+        }
+    }
+
+    var facesEvent = function(eventId, clientId, phaseId) {
+        this.eventId = eventId;
+        this.clientId = clientId;
+        this.phaseId = phaseId;
+    };
+
+
+    /****************************
+     * public functions
+     ****************************/
+
+    return  {
+
+        /**
+         * <p><span class="changed_added_2_0">Collect</span> and encode
+         * state for input controls associated with the specified
+         * <code>form</code> element.
+         *
+         * @param form The <code>form</code> element whose contained
+         * <code>input</code> controls will be collected and encoded.
+         * @param options An associative array containing options that 
+         * specify which controls should be included or ignored during the
+         * collection process.
+         */
+        viewState:function(form, options) {
+            if (options != null && options != 'undefined') {
+                if (options.constructor != Array) {
+                    // error
+                }
+            }
+
+            setOptions(options);
+
+            var elements = getFormElements(form, options);
+            var queryComponents = new Array();
+            var javaxViewState = document.getElementById("javax.faces.ViewState");
+            var queryComponent = null;
+            var sourceSerialized = false;
+            for (var i = 0; i < elements.length; i++) {
+                queryComponent = serializeElement(elements[i]);
+                if (queryComponent) {
+                    // We'll add the viewState at the end..
+                    if (-1 == queryComponent.indexOf("javax.faces.ViewState")) {
+                        queryComponents.push(queryComponent);
+                    }
+                }
+                if (options.source && options.source.id == elements[i].id) {
+                    sourceSerialized = true;
+                }
+            }
+
+            // include the element that triggered this event (the source)
+            if (sourceSerialized == false) {
+                if (queryComponents.indexOf(options.source.id) == -1) {
+                    queryComponents.push(serializeElement(options.source));
+                }
+            }
+
+            if (javaxViewState)
+                queryComponents.push(serializeElement(javaxViewState));
+
+            viewState = queryComponents.join('&');
+
+            return viewState;
+
+        },
+
+        ajaxRequest:function(element, options) {
+            new Faces.Event(element, options);
+            return false;
+        }, 
+
+        actionEvent:function(clientId, phaseId) {
+            var actionEvent = new DynaFaces.ActionEvent("search",
+                DynaFaces.PhaseId.INVOKE_APPLICATION);
+            return actionEvent;
+        },
+
+        queueFacesEvent:function(facesEvent) {
+            DynaFaces._eventQueue.push(facesEvent);
+        }
+
+    };
+}(); 
diff --git a/jsf-demo/sandbox/stock/src/main/webapp/resources/javax.faces/com_sun_faces_ajax.js b/jsf-demo/sandbox/stock/src/main/webapp/resources/javax.faces/com_sun_faces_ajax.js
new file mode 100644
index 0000000..d7e45d9
--- /dev/null
+++ b/jsf-demo/sandbox/stock/src/main/webapp/resources/javax.faces/com_sun_faces_ajax.js
@@ -0,0 +1,1186 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+/*
+ * $Id: devtime.js,v 1.5 2006/01/13 16:05:28 edburns Exp $
+ */
+
+/*
+ * The contents of this file are subject to the terms
+ * of the Common Development and Distribution License
+ * (the License). You may not use this file except in
+ * compliance with the License.
+ *
+ * You can obtain a copy of the License at
+ * https://javaserverfaces.dev.java.net/CDDL.html or
+ * legal/CDDLv1.0.txt.
+ * See the License for the specific language governing
+ * permission and limitations under the License.
+ *
+ * When distributing Covered Code, include this CDDL
+ * Header Notice in each file and include the License file
+ * at legal/CDDLv1.0.txt.
+ * If applicable, add the following below the CDDL Header,
+ * with the fields enclosed by brackets [] replaced by
+ * your own identifying information:
+ * "Portions Copyrighted [year] [name of copyright owner]"
+ *
+ * [Name of File] [ver.__] [Date]
+ *
+ * Copyright 2005 Sun Microsystems Inc. All Rights Reserved
+ */
+
+var __existingDynaFaces__ = null;
+if (typeof DynaFaces != 'undefined') {
+    __existingDynaFaces__ = DynaFaces;
+}
+
+// from http://www.quirksmode.org/js/detect.html
+var BrowserDetect = {
+	init: function () {
+		this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
+		this.version = this.searchVersion(navigator.userAgent)
+			|| this.searchVersion(navigator.appVersion)
+			|| "an unknown version";
+		this.OS = this.searchString(this.dataOS) || "an unknown OS";
+	},
+	searchString: function (data) {
+		for (var i=0;i<data.length;i++)	{
+			var dataString = data[i].string;
+			var dataProp = data[i].prop;
+			this.versionSearchString = data[i].versionSearch || data[i].identity;
+			if (dataString) {
+				if (dataString.indexOf(data[i].subString) != -1)
+					return data[i].identity;
+			}
+			else if (dataProp)
+				return data[i].identity;
+		}
+	},
+	searchVersion: function (dataString) {
+		var index = dataString.indexOf(this.versionSearchString);
+		if (index == -1) return;
+		return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
+	},
+	dataBrowser: [
+		{ 	string: navigator.userAgent,
+			subString: "OmniWeb",
+			versionSearch: "OmniWeb/",
+			identity: "OmniWeb"
+		},
+		{
+			string: navigator.vendor,
+			subString: "Apple",
+			identity: "Safari"
+		},
+		{
+			prop: window.opera,
+			identity: "Opera"
+		},
+		{
+			string: navigator.vendor,
+			subString: "iCab",
+			identity: "iCab"
+		},
+		{
+			string: navigator.vendor,
+			subString: "KDE",
+			identity: "Konqueror"
+		},
+		{
+			string: navigator.userAgent,
+			subString: "Firefox",
+			identity: "Firefox"
+		},
+		{
+			string: navigator.vendor,
+			subString: "Camino",
+			identity: "Camino"
+		},
+		{		// for newer Netscapes (6+)
+			string: navigator.userAgent,
+			subString: "Netscape",
+			identity: "Netscape"
+		},
+		{
+			string: navigator.userAgent,
+			subString: "MSIE",
+			identity: "Explorer",
+			versionSearch: "MSIE"
+		},
+		{
+			string: navigator.userAgent,
+			subString: "Gecko",
+			identity: "Mozilla",
+			versionSearch: "rv"
+		},
+		{ 		// for older Netscapes (4-)
+			string: navigator.userAgent,
+			subString: "Mozilla",
+			identity: "Netscape",
+			versionSearch: "Mozilla"
+		}
+	],
+	dataOS : [
+		{
+			string: navigator.platform,
+			subString: "Win",
+			identity: "Windows"
+		},
+		{
+			string: navigator.platform,
+			subString: "Mac",
+			identity: "Mac"
+		},
+		{
+			string: navigator.platform,
+			subString: "Linux",
+			identity: "Linux"
+		}
+	]
+
+};
+BrowserDetect.init();
+
+
+var DynaFaces = new Object();
+
+DynaFaces.gFacesPrefix = "com.sun.faces.avatar.";
+DynaFaces.gPartial = DynaFaces.gFacesPrefix + "Partial";
+DynaFaces.gExecute = DynaFaces.gFacesPrefix + "Execute";
+DynaFaces.gRender = DynaFaces.gFacesPrefix + "Render";
+DynaFaces.gViewRoot = DynaFaces.gFacesPrefix + "ViewRoot";
+DynaFaces.gFacesEvent = DynaFaces.gFacesPrefix + "FacesEvent";
+DynaFaces.gMethodName = DynaFaces.gFacesPrefix + "MethodName";
+DynaFaces.gViewState = "javax.faces.ViewState";
+DynaFaces.gGlobalScope = this;
+
+DynaFaces.gSpecialChars = {
+            '\b': '\\b',
+            '\t': '\\t',
+            '\n': '\\n',
+            '\f': '\\f',
+            '\r': '\\r',
+            '"' : '\\"',
+            '\\': '\\\\'
+};
+
+DynaFaces.gJSON = {
+    array: function (x) {
+	var a = ['['], b, f, i, l = x.length, v;
+	for (i = 0; i < l; i += 1) {
+	    v = x[i];
+	    f = DynaFaces.gJSON[typeof v];
+	    if (f) {
+		v = f(v);
+		if (typeof v == 'string') {
+		    if (b) {
+			a[a.length] = ',';
+		    }
+		    a[a.length] = v;
+		    b = true;
+		}
+	    }
+	}
+	a[a.length] = ']';
+	return a.join('');
+    },
+    'boolean': function (x) {
+	return String(x);
+    },
+    'null': function (x) {
+	return "null";
+    },
+    number: function (x) {
+	return isFinite(x) ? String(x) : 'null';
+    },
+    object: function (x) {
+	if (x) {
+	    if (x instanceof Array) {
+		return DynaFaces.gJSON.array(x);
+	    }
+	    var a = ['{'], b, f, i, v;
+	    for (i in x) {
+		v = x[i];
+		f = DynaFaces.gJSON[typeof v];
+		if (f) {
+		    v = f(v);
+		    if (typeof v == 'string') {
+			if (b) {
+			    a[a.length] = ',';
+			}
+			a.push(DynaFaces.gJSON.string(i), ':', v);
+			b = true;
+                            }
+                        }
+	    }
+	    a[a.length] = '}';
+	    return a.join('');
+	}
+	return 'null';
+    },
+    string: function (x) {
+	if (/[\"\\\x00-\x1f]/.test(x)) {
+	    x = x.replace(/([\x00-\x1f\\\"])/g, function(a, b) {
+			      var c = DynaFaces.gSpecialChars[b];
+			      if (c) {
+				  return c;
+			      }
+			      c = b.charCodeAt();
+			      return '\\u00' +
+				  Math.floor(c / 16).toString(16) +
+				  (c % 16).toString(16);
+			  });
+	}
+	return '"' + x + '"';
+    }
+};
+
+DynaFaces.trim = function trim(toTrim) {
+    var result = null;
+    if (null != toTrim) {
+	var s = toTrim.replace( /^\s+/g, "" );
+	result = s.replace( /\s+$/g, "" );
+    }
+    return result;
+};
+
+DynaFaces.reduce = function reduce(toReduce) {
+    return toReduce.length > 1 ? toReduce : toReduce[0];    
+};
+
+DynaFaces.$ = function () {
+    var results = [], element;
+    for (var i = 0; i < arguments.length; i++) {
+	element = arguments[i];
+	if (typeof element == 'string') {
+	    element = document.getElementById(element);
+	}
+	results.push(element);
+    }
+    return DynaFaces.reduce(results);
+    
+};
+
+DynaFaces.elementReplace = function elementReplace(d, tempTagName, src) {
+    var parent = d.parentNode;
+    var temp = document.createElement(tempTagName);
+    var result = null;
+    temp.id = d.id;
+
+    // If we are creating a head element...
+    if (-1 != d.tagName.toLowerCase().indexOf("head") && d.tagName.length == 4) {
+
+	// head replacement only appears to work on firefox.
+	if (-1 == BrowserDetect.browser.indexOf("Firefox")) {
+	    return;
+	}
+
+	// Strip link elements from src.
+	if (-1 != src.indexOf("link")) {
+	    var 
+		linkStartEx = new RegExp("< *link.*>", "gi");
+	    var linkStart;
+	    while (null != (linkStart = linkStartEx.exec(src))) {
+		src = src.substring(0, linkStart.index) +
+		    src.substring(linkStartEx.lastIndex);
+		linkStartEx.lastIndex = 0;
+	    }
+	}
+
+	// Strip style elements from src
+	if (-1 != src.indexOf("style")) {
+	    var 
+		styleStartEx = new RegExp("< *style.*>", "gi"),
+		styleEndEx = new RegExp("< */ *style.*>", "gi");
+	    var styleStart, styleEnd;
+	    while (null != (styleStart = styleStartEx.exec(src))) {
+		styleEnd = styleEndEx.exec(src);
+		src = src.substring(0, styleStart.index) +
+		    src.substring(styleStartEx.lastIndex);
+		styleStartEx.lastIndex = 0;
+	    }
+	}
+
+	temp.innerHTML = src;
+
+	// clone all the link elements...
+	var i, links, styles;
+	links = d.getElementsByTagName("link");
+	if (links) {
+	    for (i = 0; i < links.length; i++) {
+		temp.appendChild(links[i].cloneNode(true));
+	    }
+	}
+	// then clone all the style elements.
+	styles = d.getElementsByTagName("style");
+	if (styles) {
+	    for (i = 0; i < styles.length; i++) {
+		temp.appendChild(styles[i].cloneNode(true));
+	    }
+	}
+    }
+    else {
+	temp.innerHTML = src;
+    }
+	    
+    
+    result = temp
+    parent.replaceChild(temp, d);
+    return result;
+};
+
+DynaFaces.replace = function replace(dest, src)  {
+
+    // If this partial response is the entire view...
+    if (-1 != dest.indexOf(DynaFaces.gViewRoot)) {
+	// if src contains <html>, trim the <html> and </html>, if present.
+	//   if src contains <head>
+	//      extract the contents of <head> and replace current document's
+	//      <head> with the contents.
+	//   if src contains <body> 
+	//      extract the contents of <body> and replace the current
+	//      document's <body> with the contents.
+	//   if src does not contain <body>
+	//      replace the current document's <body> with the contents.
+
+        var 
+	    htmlStartEx = new RegExp("< *html.*>", "gi"),
+	    htmlEndEx = new RegExp("< */ *html.*>", "gi"),
+	    headStartEx = new RegExp("< *head.*>", "gi"),
+	    headEndEx = new RegExp("< */ *head.*>", "gi"),
+	    bodyStartEx = new RegExp("< *body.*>", "gi"),
+	    bodyEndEx = new RegExp("< */ *body.*>", "gi"),
+	    htmlStart, htmlEnd, headStart, headEnd, bodyStart, bodyEnd;
+	var srcHead = null, srcBody = null;
+	// find the current document's "body" element
+	var docBody = document.getElementsByTagName("body")[0];
+	// if src contains <html>
+	if (null != (htmlStart = htmlStartEx.exec(src))) {
+	    // if src contains </html>
+	    if (null != (htmlEnd = htmlEndEx.exec(src))) {
+		src = src.substring(htmlStartEx.lastIndex,
+				     htmlEnd.index);
+	    }
+	    else {
+		src = src.substring(htmlStartEx.lastIndex);
+	    }
+	}
+
+	// if src contains <head>
+	if (null != (headStart = headStartEx.exec(src))) {
+	    // if src contains </head>
+	    if (null != (headEnd = headEndEx.exec(src))) {
+		srcHead = src.substring(headStartEx.lastIndex,
+					headEnd.index);
+	    }
+	    else {
+		srcHead = src.substring(headStartEx.lastIndex);
+	    }
+	    // find the "head" element
+	    var docHead = document.getElementsByTagName("head")[0];
+	    if (docHead) {
+		this.elementReplace(docHead, "head", srcHead);
+	    }
+	}
+	// if src contains <body>
+	if (null != (bodyStart = bodyStartEx.exec(src))) {
+	    // if src contains </body>
+	    if (null != (bodyEnd = bodyEndEx.exec(src))) {
+		srcBody = src.substring(bodyStartEx.lastIndex,
+				     bodyEnd.index);
+	    }
+	    else {
+		srcBody = src.substring(bodyStartEx.lastIndex);
+	    }
+	    result = this.elementReplace(docBody, "body", srcBody);
+	}
+	if (!srcBody) {
+	    result = this.elementReplace(docBody, "body", src);
+	}
+	
+    }
+    else {
+	var d = DynaFaces.$(dest);
+	if (!d) { 
+	    alert(dest + " not found");
+	}
+	var parent = d.parentNode;
+	var temp = document.createElement('div');
+	var result = null;
+	temp.id = d.id;
+	temp.innerHTML = DynaFaces.trim(src);
+
+	result = temp.firstChild;
+	parent.replaceChild(temp.firstChild,d);
+    }
+    return result;
+    
+};
+
+DynaFaces.serialize = function serialize(e) {
+    var str = (e.xml) ? this.serializeIE(e) : this.serializeMozilla(e);
+    return str;
+};
+
+DynaFaces.serializeIE = function serializeIE(e) {
+    return e.xml;
+};
+
+DynaFaces.serializeMozilla = function serializeMozilla(e) {
+    return new XMLSerializer().serializeToString(e);
+};
+
+DynaFaces.firstElement = function firstElement(e) {
+    var first = e.firstChild;
+    while (first && first.nodeType != 1) {
+	first = first.nextSibling;
+    }
+    return first;
+};
+
+
+
+/* Object Extensions
+ ***********************************************************/
+DynaFaces.getForm = function getForm(src) {
+    if (src) {
+	var form = DynaFaces.$(src);
+	while (form && form.tagName && form.tagName.toLowerCase() != 'form') {
+	    if (form.form) return form.form;
+	    if (form.parentNode) {
+		form = form.parentNode;
+	    } else {
+		form = null;
+	    }
+	}
+	if (form) return form;
+    }
+    return document.forms[0];
+};
+
+var __existingFaces__ = null;
+if (typeof Faces != 'undefined') {
+    __existingFaces__ = Faces;
+}
+
+/* Facelet Utility Class
+ ***********************************************************/
+var Faces = {
+	initialized: false,
+	create: function() {
+		return function() {
+	  		if (Faces.initialized) {
+      			this.initialize.apply(this, arguments);
+	  		} else {
+				var args = arguments;
+				var me = this;
+	  			Event.observe(window,'load',function() {
+					Faces.initialized = true;
+					me.initialize.apply(me, args);
+				},false);
+			}
+		}
+	},
+	toArray: function(s,e) {
+		if (typeof s == 'string') {
+			return s.split((e)?e:' ').map(function(p) { return DynaFaces.trim(p); });
+		}
+		return s;
+	},
+	toString: function() {
+		return "Faces Agent v. 1.0";
+	}
+};
+
+DynaFaces.ViewState = {
+    setOptions: function(options) {
+	this.options= {};
+	for (prop in options) {
+	    this.options[prop] = prop;
+	}
+    },
+    initialize: function(form, options) {
+	this.setOptions(options);
+
+	// Skip the traversal if the user elected to have more control over
+	// the post data.
+	var collectPostDataType = typeof this.options.collectPostData;
+	var inputsType = typeof this.options.inputs;
+	if (('void' != collectPostDataType && 'undefined' != collectPostDataType) ||
+	    ('void' != inputsType && 'undefined' != inputsType)) {
+	    // Just get the state data.
+	    var viewState = DynaFaces.$(DynaFaces.gViewState);
+	    t = viewState.tagName.toLowerCase();
+	    p = Form.Element.Serializers[t](viewState);
+	    if (p && p[0].length != 0) {
+		if (p[1].constructor != Array) { 
+		    p[1] = [p[1]];
+		}
+		if (this[p[0]]) { 
+		    this[p[0]] = this[p[0]].concat(p[1]); 
+		}
+		else { 
+		    this[p[0]] = p[1];
+		}
+	    }
+	    
+	    return;
+	}
+	var e = Form.getElements(DynaFaces.$(form));
+	var t,p;
+	// Traverse the elements of the form and slam all of them into this 
+	// element's property set.
+	for (var i = 0; i < e.length; i++) {
+	    if (Faces.ViewState.Ignore.indexOf(e[i].type) == -1) {
+		t = e[i].tagName.toLowerCase();
+		p = Form.Element.Serializers[t](e[i]);
+		if (p && p[0].length != 0) {
+		    if (p[1].constructor != Array) {
+			p[1] = [p[1]];
+		    }
+		    // Don't concatenate the viewState.
+		    if (this[p[0]] && -1 == DynaFaces.gViewState.indexOf(p[0])) { 
+			this[p[0]] = this[p[0]].concat(p[1]); 
+		    }
+		    else {
+			this[p[0]] = p[1];
+		    }
+		}
+	    }
+	};
+	// For good measure,
+	var source = this.options.source;
+	// add source
+	var action = DynaFaces.$(source);
+	if (action && action.form) {
+	    this[action.name] = action.value || 'x';
+	}
+	else {
+	    this[source] = source;
+	}
+	
+    },
+    toQueryString: function() {
+	var q = new Array();
+	var i,j,p,v;
+
+	if (this.options.inputs) {
+	    if (this[DynaFaces.gViewState]) {
+		p = encodeURIComponent(DynaFaces.gViewState);
+		v = encodeURIComponent(this[DynaFaces.gViewState]);
+		q.push(p+'='+v);
+	    }
+	    var inputs = this.options.inputs.split(",");
+	    if (inputs) {
+		for (i = 0; i < inputs.length; i++) {
+		    if (this[inputs[i]]) {
+			p = encodeURIComponent(inputs[i]);
+			if (this[inputs[i]].constructor == Array) {
+			    for (j = 0; j < this[inputs[i]].length; j++){
+				v = this[inputs[i]][j];
+				if (null != v) {
+				    v = encodeURIComponent(v);
+				    q.push(p+'='+v);
+				}
+			    }
+			} else {
+			    v = encodeURIComponent(this[inputs[i]]);
+			    q.push(p+'='+v);
+			}
+		    }
+		    else {
+			var input = document.getElementById(inputs[i]);
+			if (input) {
+			    p = inputs[i];
+			    v = encodeURIComponent(input.value || "");
+			    q.push(p+'='+v);
+			}
+		    }
+		}
+	    }
+	}
+	else {
+	    for (property in this) {
+		if (this[property]) {
+		    if (typeof this[property] == 'function') continue;
+		    p = encodeURIComponent(property);
+		    if (this[property].constructor == Array) {
+			for (j = 0; j < this[property].length; j++) {
+			    v = this[property][j];
+			    if (null != v) {
+				v = encodeURIComponent(v);
+				q.push(p+'='+v);
+			    }
+			}
+		    } else {
+			v = encodeURIComponent(this[property]);
+			q.push(p+'='+v);
+		    }
+		}
+	    }
+	}
+	if (this.options.parameters) {
+	    q.push(this.options.parameters);
+	}
+	if (typeof this.options.collectPostData == 'function') {
+	    this.options.collectPostData(this.options.ajaxZone, this.options.source,
+				   q);
+	}
+	else if (typeof DynaFaces.gGlobalScope[this.options.collectPostData] == 'function') {
+	    DynaFaces.gGlobalScope[this.options.collectPostData](this.options.ajaxZone, 
+						 this.options.source, q);
+	}
+
+	if (this.options.action) {
+	    p = (this.options.ajaxZone) ? this.options.ajaxZone.id :
+	      this.options.source.id || this.options.source.name;
+	    q.push(encodeURIComponent(p)+'='+
+		   encodeURIComponent(this.options.action));
+	}
+	    
+	return q.join('&');
+    }
+};
+DynaFaces.ViewState.CommandType = ['button','submit','reset'];
+DynaFaces.ViewState.Ignore = ['button','submit','reset','image'];
+
+/* ViewState Hash over a given Form
+ ***********************************************************/
+Faces.ViewState = Class.create();
+Faces.ViewState.CommandType = ['button','submit','reset'];
+// concat?
+Faces.ViewState.Ignore = ['button','submit','reset','image'];
+Faces.ViewState.prototype = {
+    setOptions: function(options) {
+	this.options= {};
+	Object.extend(this.options, options || {});
+    },
+    initialize: function(form, options) {
+	this.setOptions(options);
+
+	// Skip the traversal if the user elected to have more control over
+	// the post data.
+	var collectPostDataType = typeof this.options.collectPostData;
+	var inputsType = typeof this.options.inputs;
+	if (('void' != collectPostDataType && 'undefined' != collectPostDataType) ||
+	    ('void' != inputsType && 'undefined' != inputsType)) {
+	    // Just get the state data.
+	    var viewState = DynaFaces.$(DynaFaces.gViewState);
+	    t = viewState.tagName.toLowerCase();
+	    p = Form.Element.Serializers[t](viewState);
+	    if (p && p[0].length != 0) {
+		if (p[1].constructor != Array) { 
+		    p[1] = [p[1]];
+		}
+		if (this[p[0]]) { 
+		    this[p[0]] = this[p[0]].concat(p[1]); 
+		}
+		else { 
+		    this[p[0]] = p[1];
+		}
+	    }
+	    
+	    return;
+	}
+	var e = Form.getElements(DynaFaces.$(form));
+	var t,p;
+	// Traverse the elements of the form and slam all of them into this 
+	// element's property set.
+	for (var i = 0; i < e.length; i++) {
+	    if (Faces.ViewState.Ignore.indexOf(e[i].type) == -1) {
+		t = e[i].tagName.toLowerCase();
+		p = Form.Element.Serializers[t](e[i]);
+		if (p && p[0].length != 0) {
+		    if (p[1].constructor != Array) {
+			p[1] = [p[1]];
+		    }
+		    // Don't concatenate the viewState.
+		    if (this[p[0]] && -1 == DynaFaces.gViewState.indexOf(p[0])) { 
+			this[p[0]] = this[p[0]].concat(p[1]); 
+		    }
+		    else {
+			this[p[0]] = p[1];
+		    }
+		}
+	    }
+	};
+	// For good measure,
+	var source = this.options.source;
+	// add source
+	var action = DynaFaces.$(source);
+	if (action && action.form) {
+	    this[action.name] = action.value || 'x';
+	}
+	else {
+	    this[source] = source;
+	}
+	
+    },
+    toQueryString: function() {
+	var q = new Array();
+	var i,j,p,v;
+
+	if (this.options.inputs) {
+	    if (this[DynaFaces.gViewState]) {
+		p = encodeURIComponent(DynaFaces.gViewState);
+		v = encodeURIComponent(this[DynaFaces.gViewState]);
+		q.push(p+'='+v);
+	    }
+	    var inputs = this.options.inputs.split(",");
+	    if (inputs) {
+		for (i = 0; i < inputs.length; i++) {
+		    if (this[inputs[i]]) {
+			p = encodeURIComponent(inputs[i]);
+			if (this[inputs[i]].constructor == Array) {
+			    for (j = 0; j < this[inputs[i]].length; j++){
+				v = this[inputs[i]][j];
+				if (null != v) {
+				    v = encodeURIComponent(v);
+				    q.push(p+'='+v);
+				}
+			    }
+			} else {
+			    v = encodeURIComponent(this[inputs[i]]);
+			    q.push(p+'='+v);
+			}
+		    }
+		    else {
+			var input = document.getElementById(inputs[i]);
+			if (input) {
+			    p = inputs[i];
+			    v = encodeURIComponent(input.value || "");
+			    q.push(p+'='+v);
+			}
+		    }
+		}
+	    }
+	}
+	else {
+	    for (property in this) {
+		if (this[property]) {
+		    if (typeof this[property] == 'function') continue;
+		    p = encodeURIComponent(property);
+		    if (this[property].constructor == Array) {
+			for (j = 0; j < this[property].length; j++) {
+			    v = this[property][j];
+			    if (null != v) {
+				v = encodeURIComponent(v);
+				q.push(p+'='+v);
+			    }
+			}
+		    } else {
+			v = encodeURIComponent(this[property]);
+			q.push(p+'='+v);
+		    }
+		}
+	    }
+	}
+	if (this.options.parameters) {
+	    q.push(this.options.parameters);
+	}
+	if (typeof this.options.collectPostData == 'function') {
+	    this.options.collectPostData(this.options.ajaxZone, this.options.source,
+				   q);
+	}
+	else if (typeof DynaFaces.gGlobalScope[this.options.collectPostData] == 'function') {
+	    DynaFaces.gGlobalScope[this.options.collectPostData](this.options.ajaxZone, 
+						 this.options.source, q);
+	}
+
+	if (this.options.action) {
+	    p = (this.options.ajaxZone) ? this.options.ajaxZone.id :
+	      this.options.source.id || this.options.source.name;
+	    q.push(encodeURIComponent(p)+'='+
+		   encodeURIComponent(this.options.action));
+	}
+	    
+	return q.join('&');
+    }
+};
+
+/* Handles Sending Events to the Server
+ ***********************************************************/
+Faces.Event = Class.create();
+Object.extend(Object.extend(Faces.Event.prototype, Ajax.Request.prototype), {
+  initialize: function(source, options) {
+    this.transport = Ajax.getTransport();
+    this.setOptions(options);
+	
+	// make sure we are posting
+	this.options.method = 'post';
+	
+	// get form
+	this.form = DynaFaces.getForm(source);
+	this.url = this.form.action;
+	
+	// create viewState
+	var viewState = null;
+	var stateOptions = new Object();
+
+	// copy over the options that should get passed through
+	Object.extend(stateOptions, this.options);
+	stateOptions.source = source;
+	// remove the ones that should not
+	stateOptions.render = null;
+	stateOptions.execute = null;
+	stateOptions.asynchronous = null;
+	stateOptions.contentType = null;
+	stateOptions.method = null;
+
+	viewState = new Faces.ViewState(this.form, stateOptions);
+	
+	// add passed parameters
+	viewState.options.parameters = this.options.parameters;
+	
+	// initialize headers
+	this.options.requestHeaders = this.options.requestHeaders || [];
+	
+	// guarantee our header
+	this.options.requestHeaders.push(DynaFaces.gPartial);
+	if (this.options.immediate) {
+	    this.options.requestHeaders.push('immediate');
+	}
+	else {
+	    this.options.requestHeaders.push('true');
+	}
+	
+	// add methodName
+	if (this.options.methodName) {
+	    var sourceId = DynaFaces.$(source).id || DynaFaces.$(source).name;
+		sourceId += "," + this.options.methodName;
+		if (this.options.phaseId) {
+			sourceId += "," + this.options.phaseId;
+		}
+		this.options.requestHeaders.push(DynaFaces.gMethodName);
+		this.options.requestHeaders.push(sourceId);
+	}
+
+	if (this.options.execute) {
+		this.options.requestHeaders.push(DynaFaces.gExecute);
+		this.options.requestHeaders.push(Faces.toArray(this.options.execute,',').join(','));
+	}
+	
+	if (this.options.render) {
+		this.options.requestHeaders.push(DynaFaces.gRender);
+		this.options.requestHeaders.push(Faces.toArray(this.options.render,',').join(','));
+	}
+
+	if (this.options.xjson) {
+	    var xjson = DynaFaces.gJSON.object(this.options.xjson);
+	    this.options.requestHeaders.push("X-JSON");
+	    this.options.requestHeaders.push(xjson);
+	}
+	
+	if (typeof DynaFaces != 'undefined') {
+	    if (0 < DynaFaces._eventQueue.length) {
+		this.options.requestHeaders.push(DynaFaces.gFacesEvent);
+		var arr = new Array();
+		for (i = 0; i < DynaFaces._eventQueue.length; i++) {
+		    arr.push(DynaFaces._eventQueue[i].toString());
+		}
+		var events = arr.join(';');
+		this.options.requestHeaders.push(events);
+
+		// Clear out the queue
+		DynaFaces._eventQueue = new Array();
+	    }
+	}
+	if (this.options.postBody) {
+	    this.options.postBody = this.options.postBody + '&' + 
+		viewState.toQueryString();
+	}
+	else {
+	    this.options.postBody = viewState.toQueryString();
+	}
+
+    var onComplete = this.options.onComplete;
+    this.options.onComplete = (function(transport, xjson) {
+      this.renderView(xjson);
+      if (onComplete) {
+	  onComplete(transport, options);
+      } else if (this.doEvalResponse) {
+	  this.evalResponse();
+      }
+    }).bind(this);
+
+	if (this.options.onException == null) {
+		this.options.onException = this.onException;
+	}
+	
+	// send request
+    this.request(this.url);
+  },
+  renderView: function(xjson) {
+     var xml = this.transport.responseXML;
+     var id, content, markup, str;
+     if (null == xml || typeof xml == 'undefined') {
+	 // If the content contains javaScript, just execute it
+	 markup = this.transport.responseText;
+	 if (null != markup && typeof markup != 'undefined') {
+	     markup.evalScripts();
+	 }
+	 return;
+     }    
+     var components = xml.getElementsByTagName('components')[0];
+     var render = components.getElementsByTagName('render');
+     for (var i = 0; i < render.length; i++) {
+	 id = render[i].getAttribute('id');
+
+         // join the CDATA sections in the markup
+         markup = '';
+         for (var j = 0; j < render[i].firstChild.childNodes.length; j++) {
+	     content = render[i].firstChild.childNodes[j];
+	     markup += content.text || content.data;
+         }
+
+	 str = markup.stripScripts();
+	 this.doEvalResponse = false;
+	 // If the user passed a replaceElement...
+	 if (this.options.replaceElement) {
+	     var optionType = null;
+	     // look at its type.
+	     if ((optionType = typeof this.options.replaceElement) != 
+		 'undefined') {
+		 // If its type is already a function...
+		 if (optionType == 'function') {
+		     // invoke it.
+		     this.options.replaceElement(id, markup, 
+						     this.options.closure, 
+						     xjson);
+		 }
+		 // Otherwise, if there is a globally scoped function
+		 // named as the value of the replaceElement...
+		 else if (typeof DynaFaces.gGlobalScope[this.options.replaceElement] ==
+			  'function') {
+		     // invoke it.
+		     DynaFaces.gGlobalScope[this.options.replaceElement](id, markup,
+								   this.options.closure, 
+								   xjson);
+		 }
+	     }
+	 }
+	 else {
+	     // Otherwise, just do our element replacement.
+	     DynaFaces.replace(id, str);
+	 }
+	 
+	 // If the user specified a postReplace...
+	 if (this.options.postReplace) {
+         var optionType = null;
+	     // look at its type.
+	     if ((optionType = typeof this.options.postReplace) !=
+		 'undefined') {
+		 // If its type is already a function...
+		 if (optionType == 'function') {
+		     // invoke it.
+		     this.options.postReplace(DynaFaces.$(id), markup, 
+						  this.options.closure,
+						  xjson);
+		 }
+		 // Otherwise, if there is a globally scoped function
+		 // named as the value of the postReplace...
+		 else if (typeof DynaFaces.gGlobalScope[this.options.postReplace] ==
+			  'function') {
+		     // invoke it.
+		     DynaFaces.gGlobalScope[this.options.postReplace](DynaFaces.$(id), markup,
+								this.options.closure,
+								xjson);
+		 }
+	     }
+	 }
+	 else {
+	     // Otherwise, just evaluate the scripts.
+	     markup.evalScripts();
+	 }
+     }
+
+     // This should happen for each of the elements in the collection,
+     // not just the zeroth.
+     var state = state || xml.getElementsByTagName('state')[0].firstChild;
+     if (state) {
+	 var hf = DynaFaces.$(DynaFaces.gViewState);
+	 if (hf) {
+	     hf.value = state.text || state.data;
+	 }
+     }
+  },
+  evalResponse: function() {
+	  if (this.responseIsSuccess()) {
+	      var text = this.transport.responseText;
+	      //alert(text);
+	      if (text) {
+		  try {
+		      text.evalScripts();
+		  } catch (e) {}
+	      }
+	  }
+  },
+  onException: function(o,e) {
+	  throw e;
+  }
+});
+
+/* Turn any Element into a Faces.DeferredEvent
+ ***********************************************************/
+Faces.DeferredEvent = Faces.create();
+Faces.DeferredEvent.prototype = {
+	initialize: function(action, event, options) {
+		var event = (event) || 'click';
+		var options = options;
+		var facesObserver = function(e) {
+			new Faces.Event(action,options);
+			// if this element can cause a form submit...
+			if (Faces.ViewState.CommandType.indexOf(action.type) != -1){
+			    Event.stop(e);
+			}
+			return false;
+		};
+		// If the element had no existing facesObserver
+		if (typeof action.facesObserver == 'undefined') {
+		    // store one here so we can remove the observer later.
+		    action.facesObserver = facesObserver;
+		}
+		else {
+		    Event.stopObserving(action,event,action.facesObserver,true);
+		}
+		Event.observe(action,event,facesObserver,true);
+	}
+};
+
+/* Take any Event and delegate it to an Observer
+ ***********************************************************/
+Faces.Observer = Faces.create();
+Faces.Observer.prototype = {
+	initialize: function(trigger,events,options) {
+		this.options = {};
+		Object.extend(this.options, options || {});
+		var source = this.options.source;
+		var fn = function(e) {
+			new Faces.Event((source || Event.element(e)), options);
+			Event.stop(e);
+			return false;
+		};
+		var event = events || 'click';
+		var ta = Faces.toArray(trigger);
+		var ea = Faces.toArray(events);
+		for (var i = 0; i < ta.length; i++) {
+			for (var j = 0; j < ea.length; j++) {
+				Event.observe(DynaFaces.$(ta[i]),ea[j],fn,true);
+			}
+		}
+	}
+};
+
+
+
+DynaFaces._eventQueue = new Array();
+
+DynaFaces.fireAjaxTransaction = function(element, options) {
+    new Faces.Event(element, options);
+    return false;
+}
+    
+DynaFaces.installDeferredAjaxTransaction = function(action, event, options) {
+    new Faces.DeferredEvent(action, event, options);
+    return false;
+}
+
+DynaFaces.PhaseId = {
+    ANY_PHASE: "ANY_PHASE",
+    RESTORE_VIEW: "RESTORE_VIEW",
+    APPLY_REQUEST_VALUES: "APPLY_REQUEST_VALUES",
+    PROCESS_VALIDATIONS: "PROCESS_VALIDATIONS",
+    UPDATE_MODEL_VALUES: "UPDATE_MODEL_VALUES",
+    INVOKE_APPLICATION: "INVOKE_APPLICATION",
+    RENDER_RESPONSE: "RENDER_RESPONSE"
+};
+
+DynaFaces.PhaseId.values = new Array();
+DynaFaces.PhaseId.values[0] = DynaFaces.PhaseId.ANY_PHASE;
+DynaFaces.PhaseId.values[1] = DynaFaces.PhaseId.RESTORE_VIEW;
+DynaFaces.PhaseId.values[2] = DynaFaces.PhaseId.APPLY_REQUEST_VALUES;
+DynaFaces.PhaseId.values[3] = DynaFaces.PhaseId.PROCESS_VALIDATIONS;
+DynaFaces.PhaseId.values[4] = DynaFaces.PhaseId.UPDATE_MODEL_VALUES;
+DynaFaces.PhaseId.values[5] = DynaFaces.PhaseId.INVOKE_APPLICATION;
+DynaFaces.PhaseId.values[6] = DynaFaces.PhaseId.RENDER_RESPONSE
+
+DynaFaces.FacesEvent = function(eventId, clientId, phaseId) {
+    this.eventId = eventId;
+    this.clientId = clientId;
+    this.phaseId = phaseId;
+};
+
+DynaFaces.FacesEvent.prototype.toString = function () {
+    return this.eventId + ',' + this.clientId + ',' + this.phaseId + ",source";
+};
+
+DynaFaces.ValueChangeEvent = function(clientId, 
+				      phaseId, oldValue, newValue) {
+    this.base = DynaFaces.FacesEvent;
+    this.base("ValueChangeEvent", clientId, phaseId);
+    this.oldValue = oldValue;
+    this.newValue = newValue;
+};
+DynaFaces.ValueChangeEvent.prototype = new DynaFaces.FacesEvent;
+DynaFaces.ValueChangeEvent.prototype.toString = function() {
+    return (this.eventId + ',' + this.clientId + ',' + this.phaseId +  
+	    ",source," + this.oldValue + ',' + this.newValue);
+};
+
+DynaFaces.ActionEvent = function(clientId, phaseId) {
+    this.base = DynaFaces.FacesEvent;
+    this.base("ActionEvent", clientId, phaseId);
+};
+DynaFaces.ActionEvent.prototype = new DynaFaces.FacesEvent;
+
+
+DynaFaces.queueFacesEvent = function (facesEvent) {
+    DynaFaces._eventQueue.push(facesEvent);
+}
+
+if (__existingDynaFaces__ != null) {
+    DynaFaces = __existingDynaFaces__;
+    __existingDynaFaces__ = null;
+}
+if (__existingFaces__ != null) {
+    Faces = __existingFaces__;
+    __existingFaces__ = null;
+}
diff --git a/jsf-demo/sandbox/stock/src/main/webapp/resources/javax.faces/prototype.js b/jsf-demo/sandbox/stock/src/main/webapp/resources/javax.faces/prototype.js
new file mode 100644
index 0000000..3d36fa0
--- /dev/null
+++ b/jsf-demo/sandbox/stock/src/main/webapp/resources/javax.faces/prototype.js
@@ -0,0 +1,2249 @@
+/*  Prototype JavaScript framework, version 1.5.0_rc1
+ *  (c) 2005 Sam Stephenson <sam at conio.net>
+ *
+ *  Prototype is freely distributable under the terms of an MIT-style license.
+ *  For details, see the Prototype web site: http://prototype.conio.net/
+ *
+/*--------------------------------------------------------------------------*/
+
+var Edburns = {
+    alert: false
+};
+
+var Prototype = {
+  Version: '1.5.0_rc1',
+  ScriptFragment: '(?:<script.*?>)((\n|\r|.)*?)(?:<\/script>)',
+
+  emptyFunction: function() {},
+  K: function(x) {return x}
+}
+
+var Class = {
+  create: function() {
+    return function() {
+      this.initialize.apply(this, arguments);
+    }
+  }
+}
+
+var Abstract = new Object();
+
+Object.extend = function(destination, source) {
+  for (var property in source) {
+    destination[property] = source[property];
+  }
+  return destination;
+}
+
+Object.extend(Object, {
+  inspect: function(object) {
+    try {
+      if (object == undefined) return 'undefined';
+      if (object == null) return 'null';
+      return object.inspect ? object.inspect() : object.toString();
+    } catch (e) {
+      if (e instanceof RangeError) return '...';
+      throw e;
+    }
+  },
+
+  keys: function(object) {
+    var keys = [];
+    for (var property in object)
+      keys.push(property);
+    return keys;
+  },
+
+  values: function(object) {
+    var values = [];
+    for (var property in object)
+      values.push(object[property]);
+    return values;
+  },
+
+  clone: function(object) {
+    return Object.extend({}, object);
+  }
+});
+
+Function.prototype.bind = function() {
+  var __method = this, args = $A(arguments), object = args.shift();
+  return function() {
+    return __method.apply(object, args.concat($A(arguments)));
+  }
+}
+
+Function.prototype.bindAsEventListener = function(object) {
+  var __method = this, args = $A(arguments), object = args.shift();
+  return function(event) {
+    return __method.apply(object, [( event || window.event)].concat(args).concat($A(arguments)));
+  }
+}
+
+Object.extend(Number.prototype, {
+  toColorPart: function() {
+    var digits = this.toString(16);
+    if (this < 16) return '0' + digits;
+    return digits;
+  },
+
+  succ: function() {
+    return this + 1;
+  },
+
+  times: function(iterator) {
+    $R(0, this, true).each(iterator);
+    return this;
+  }
+});
+
+var Try = {
+  these: function() {
+    var returnValue;
+
+    for (var i = 0; i < arguments.length; i++) {
+      var lambda = arguments[i];
+      try {
+        returnValue = lambda();
+        break;
+      } catch (e) {}
+    }
+
+    return returnValue;
+  }
+}
+
+/*--------------------------------------------------------------------------*/
+
+var PeriodicalExecuter = Class.create();
+PeriodicalExecuter.prototype = {
+  initialize: function(callback, frequency) {
+    this.callback = callback;
+    this.frequency = frequency;
+    this.currentlyExecuting = false;
+
+    this.registerCallback();
+  },
+
+  registerCallback: function() {
+    this.timer = setInterval(this.onTimerEvent.bind(this), this.frequency * 1000);
+  },
+
+  stop: function() {
+    if (!this.timer) return;
+    clearInterval(this.timer);
+    this.timer = null;
+  },
+
+  onTimerEvent: function() {
+    if (!this.currentlyExecuting) {
+      try {
+        this.currentlyExecuting = true;
+        this.callback(this);
+      } finally {
+        this.currentlyExecuting = false;
+      }
+    }
+  }
+}
+Object.extend(String.prototype, {
+  gsub: function(pattern, replacement) {
+    var result = '', source = this, match;
+    replacement = arguments.callee.prepareReplacement(replacement);
+
+    while (source.length > 0) {
+      if (match = source.match(pattern)) {
+        result += source.slice(0, match.index);
+        result += (replacement(match) || '').toString();
+        source  = source.slice(match.index + match[0].length);
+      } else {
+        result += source, source = '';
+      }
+    }
+    return result;
+  },
+
+  sub: function(pattern, replacement, count) {
+    replacement = this.gsub.prepareReplacement(replacement);
+    count = count === undefined ? 1 : count;
+
+    return this.gsub(pattern, function(match) {
+      if (--count < 0) return match[0];
+      return replacement(match);
+    });
+  },
+
+  scan: function(pattern, iterator) {
+    this.gsub(pattern, iterator);
+    return this;
+  },
+
+  truncate: function(length, truncation) {
+    length = length || 30;
+    truncation = truncation === undefined ? '...' : truncation;
+    return this.length > length ?
+      this.slice(0, length - truncation.length) + truncation : this;
+  },
+
+  strip: function() {
+    return this.replace(/^\s+/, '').replace(/\s+$/, '');
+  },
+
+  stripTags: function() {
+    return this.replace(/<\/?[^>]+>/gi, '');
+  },
+
+  stripScripts: function() {
+    return this.replace(new RegExp(Prototype.ScriptFragment, 'img'), '');
+  },
+
+  extractScripts: function() {
+    var matchAll = new RegExp(Prototype.ScriptFragment, 'img');
+    var matchOne = new RegExp(Prototype.ScriptFragment, 'im');
+    return (this.match(matchAll) || []).map(function(scriptTag) {
+      return (scriptTag.match(matchOne) || ['', ''])[1];
+    });
+  },
+
+  evalScripts: function() {
+    return this.extractScripts().map(function(script) { return eval(script) });
+  },
+
+  escapeHTML: function() {
+    var div = document.createElement('div');
+    var text = document.createTextNode(this);
+    div.appendChild(text);
+    return div.innerHTML;
+  },
+
+  unescapeHTML: function() {
+    var div = document.createElement('div');
+    div.innerHTML = this.stripTags();
+    return div.childNodes[0] ? div.childNodes[0].nodeValue : '';
+  },
+
+  toQueryParams: function() {
+    var pairs = this.match(/^\??(.*)$/)[1].split('&');
+    return pairs.inject({}, function(params, pairString) {
+      var pair  = pairString.split('=');
+      var value = pair[1] ? decodeURIComponent(pair[1]) : undefined;
+      params[decodeURIComponent(pair[0])] = value;
+      return params;
+    });
+  },
+
+  toArray: function() {
+    return this.split('');
+  },
+
+  camelize: function() {
+    var oStringList = this.split('-');
+    if (oStringList.length == 1) return oStringList[0];
+
+    var camelizedString = this.indexOf('-') == 0
+      ? oStringList[0].charAt(0).toUpperCase() + oStringList[0].substring(1)
+      : oStringList[0];
+
+    for (var i = 1, len = oStringList.length; i < len; i++) {
+      var s = oStringList[i];
+      camelizedString += s.charAt(0).toUpperCase() + s.substring(1);
+    }
+
+    return camelizedString;
+  },
+
+  inspect: function(useDoubleQuotes) {
+    var escapedString = this.replace(/\\/g, '\\\\');
+    if (useDoubleQuotes)
+      return '"' + escapedString.replace(/"/g, '\\"') + '"';
+    else
+      return "'" + escapedString.replace(/'/g, '\\\'') + "'";
+  }
+});
+
+String.prototype.gsub.prepareReplacement = function(replacement) {
+  if (typeof replacement == 'function') return replacement;
+  var template = new Template(replacement);
+  return function(match) { return template.evaluate(match) };
+}
+
+String.prototype.parseQuery = String.prototype.toQueryParams;
+
+var Template = Class.create();
+Template.Pattern = /(^|.|\r|\n)(#\{(.*?)\})/;
+Template.prototype = {
+  initialize: function(template, pattern) {
+    this.template = template.toString();
+    this.pattern  = pattern || Template.Pattern;
+  },
+
+  evaluate: function(object) {
+    return this.template.gsub(this.pattern, function(match) {
+      var before = match[1];
+      if (before == '\\') return match[2];
+      return before + (object[match[3]] || '').toString();
+    });
+  }
+}
+
+var $break    = new Object();
+var $continue = new Object();
+
+var Enumerable = {
+  each: function(iterator) {
+    var index = 0;
+    try {
+      this._each(function(value) {
+        try {
+          iterator(value, index++);
+        } catch (e) {
+          if (e != $continue) throw e;
+        }
+      });
+    } catch (e) {
+      if (e != $break) throw e;
+    }
+  },
+
+  all: function(iterator) {
+    var result = true;
+    this.each(function(value, index) {
+      result = result && !!(iterator || Prototype.K)(value, index);
+      if (!result) throw $break;
+    });
+    return result;
+  },
+
+  any: function(iterator) {
+    var result = false;
+    this.each(function(value, index) {
+      if (result = !!(iterator || Prototype.K)(value, index))
+        throw $break;
+    });
+    return result;
+  },
+
+  collect: function(iterator) {
+    var results = [];
+    this.each(function(value, index) {
+      results.push(iterator(value, index));
+    });
+    return results;
+  },
+
+  detect: function (iterator) {
+    var result;
+    this.each(function(value, index) {
+      if (iterator(value, index)) {
+        result = value;
+        throw $break;
+      }
+    });
+    return result;
+  },
+
+  findAll: function(iterator) {
+    var results = [];
+    this.each(function(value, index) {
+      if (iterator(value, index))
+        results.push(value);
+    });
+    return results;
+  },
+
+  grep: function(pattern, iterator) {
+    var results = [];
+    this.each(function(value, index) {
+      var stringValue = value.toString();
+      if (stringValue.match(pattern))
+        results.push((iterator || Prototype.K)(value, index));
+    })
+    return results;
+  },
+
+  include: function(object) {
+    var found = false;
+    this.each(function(value) {
+      if (value == object) {
+        found = true;
+        throw $break;
+      }
+    });
+    return found;
+  },
+
+  inject: function(memo, iterator) {
+    this.each(function(value, index) {
+      memo = iterator(memo, value, index);
+    });
+    return memo;
+  },
+
+  invoke: function(method) {
+    var args = $A(arguments).slice(1);
+    return this.collect(function(value) {
+      return value[method].apply(value, args);
+    });
+  },
+
+  max: function(iterator) {
+    var result;
+    this.each(function(value, index) {
+      value = (iterator || Prototype.K)(value, index);
+      if (result == undefined || value >= result)
+        result = value;
+    });
+    return result;
+  },
+
+  min: function(iterator) {
+    var result;
+    this.each(function(value, index) {
+      value = (iterator || Prototype.K)(value, index);
+      if (result == undefined || value < result)
+        result = value;
+    });
+    return result;
+  },
+
+  partition: function(iterator) {
+    var trues = [], falses = [];
+    this.each(function(value, index) {
+      ((iterator || Prototype.K)(value, index) ?
+        trues : falses).push(value);
+    });
+    return [trues, falses];
+  },
+
+  pluck: function(property) {
+    var results = [];
+    this.each(function(value, index) {
+      results.push(value[property]);
+    });
+    return results;
+  },
+
+  reject: function(iterator) {
+    var results = [];
+    this.each(function(value, index) {
+      if (!iterator(value, index))
+        results.push(value);
+    });
+    return results;
+  },
+
+  sortBy: function(iterator) {
+    return this.collect(function(value, index) {
+      return {value: value, criteria: iterator(value, index)};
+    }).sort(function(left, right) {
+      var a = left.criteria, b = right.criteria;
+      return a < b ? -1 : a > b ? 1 : 0;
+    }).pluck('value');
+  },
+
+  toArray: function() {
+    return this.collect(Prototype.K);
+  },
+
+  zip: function() {
+    var iterator = Prototype.K, args = $A(arguments);
+    if (typeof args.last() == 'function')
+      iterator = args.pop();
+
+    var collections = [this].concat(args).map($A);
+    return this.map(function(value, index) {
+      return iterator(collections.pluck(index));
+    });
+  },
+
+  inspect: function() {
+    return '#<Enumerable:' + this.toArray().inspect() + '>';
+  }
+}
+
+Object.extend(Enumerable, {
+  map:     Enumerable.collect,
+  find:    Enumerable.detect,
+  select:  Enumerable.findAll,
+  member:  Enumerable.include,
+  entries: Enumerable.toArray
+});
+var $A = Array.from = function(iterable) {
+  if (!iterable) return [];
+  if (iterable.toArray) {
+    return iterable.toArray();
+  } else {
+    var results = [];
+    for (var i = 0; i < iterable.length; i++)
+      results.push(iterable[i]);
+    return results;
+  }
+}
+
+Object.extend(Array.prototype, Enumerable);
+
+if (!Array.prototype._reverse)
+  Array.prototype._reverse = Array.prototype.reverse;
+
+Object.extend(Array.prototype, {
+  _each: function(iterator) {
+    for (var i = 0; i < this.length; i++)
+      iterator(this[i]);
+  },
+
+  clear: function() {
+    this.length = 0;
+    return this;
+  },
+
+  first: function() {
+    return this[0];
+  },
+
+  last: function() {
+    return this[this.length - 1];
+  },
+
+  compact: function() {
+    return this.select(function(value) {
+      return value != undefined || value != null;
+    });
+  },
+
+  flatten: function() {
+    return this.inject([], function(array, value) {
+      return array.concat(value && value.constructor == Array ?
+        value.flatten() : [value]);
+    });
+  },
+
+  without: function() {
+    var values = $A(arguments);
+    return this.select(function(value) {
+      return !values.include(value);
+    });
+  },
+
+  indexOf: function(object) {
+    for (var i = 0; i < this.length; i++)
+      if (this[i] == object) return i;
+    return -1;
+  },
+
+  reverse: function(inline) {
+    return (inline !== false ? this : this.toArray())._reverse();
+  },
+
+  reduce: function() {
+    return this.length > 1 ? this : this[0];
+  },
+
+  uniq: function() {
+    return this.inject([], function(array, value) {
+      return array.include(value) ? array : array.concat([value]);
+    });
+  },
+
+  inspect: function() {
+    return '[' + this.map(Object.inspect).join(', ') + ']';
+  }
+});
+var Hash = {
+  _each: function(iterator) {
+    for (var key in this) {
+      var value = this[key];
+      if (typeof value == 'function') continue;
+
+      var pair = [key, value];
+      pair.key = key;
+      pair.value = value;
+      iterator(pair);
+    }
+  },
+
+  keys: function() {
+    return this.pluck('key');
+  },
+
+  values: function() {
+    return this.pluck('value');
+  },
+
+  merge: function(hash) {
+    return $H(hash).inject($H(this), function(mergedHash, pair) {
+      mergedHash[pair.key] = pair.value;
+      return mergedHash;
+    });
+  },
+
+  toQueryString: function() {
+    return this.map(function(pair) {
+      return pair.map(encodeURIComponent).join('=');
+    }).join('&');
+  },
+
+  inspect: function() {
+    return '#<Hash:{' + this.map(function(pair) {
+      return pair.map(Object.inspect).join(': ');
+    }).join(', ') + '}>';
+  }
+}
+
+function $H(object) {
+  var hash = Object.extend({}, object || {});
+  Object.extend(hash, Enumerable);
+  Object.extend(hash, Hash);
+  return hash;
+}
+ObjectRange = Class.create();
+Object.extend(ObjectRange.prototype, Enumerable);
+Object.extend(ObjectRange.prototype, {
+  initialize: function(start, end, exclusive) {
+    this.start = start;
+    this.end = end;
+    this.exclusive = exclusive;
+  },
+
+  _each: function(iterator) {
+    var value = this.start;
+    while (this.include(value)) {
+      iterator(value);
+      value = value.succ();
+    }
+  },
+
+  include: function(value) {
+    if (value < this.start)
+      return false;
+    if (this.exclusive)
+      return value < this.end;
+    return value <= this.end;
+  }
+});
+
+var $R = function(start, end, exclusive) {
+  return new ObjectRange(start, end, exclusive);
+}
+
+var Ajax = {
+  getTransport: function() {
+    return Try.these(
+      function() {return new XMLHttpRequest()},
+      function() {return new ActiveXObject('Msxml2.XMLHTTP')},
+      function() {return new ActiveXObject('Microsoft.XMLHTTP')}
+    ) || false;
+  },
+
+  activeRequestCount: 0
+}
+
+Ajax.Responders = {
+  responders: [],
+
+  _each: function(iterator) {
+    this.responders._each(iterator);
+  },
+
+  register: function(responderToAdd) {
+    if (!this.include(responderToAdd))
+      this.responders.push(responderToAdd);
+  },
+
+  unregister: function(responderToRemove) {
+    this.responders = this.responders.without(responderToRemove);
+  },
+
+  dispatch: function(callback, request, transport, json) {
+    this.each(function(responder) {
+      if (responder[callback] && typeof responder[callback] == 'function') {
+        try {
+          responder[callback].apply(responder, [request, transport, json]);
+	  Edburns.alert = true;
+        } catch (e) {}
+      }
+    });
+  }
+};
+
+Object.extend(Ajax.Responders, Enumerable);
+
+Ajax.Responders.register({
+  onCreate: function() {
+    Ajax.activeRequestCount++;
+  },
+
+  onComplete: function() {
+    Ajax.activeRequestCount--;
+  }
+});
+
+Ajax.Base = function() {};
+Ajax.Base.prototype = {
+  setOptions: function(options) {
+    this.options = {
+      method:       'post',
+      asynchronous: true,
+      contentType:  'application/x-www-form-urlencoded',
+      parameters:   ''
+    }
+    Object.extend(this.options, options || {});
+  },
+
+  responseIsSuccess: function() {
+    return this.transport.status == undefined
+        || this.transport.status == 0
+        || (this.transport.status >= 200 && this.transport.status < 300);
+  },
+
+  responseIsFailure: function() {
+    return !this.responseIsSuccess();
+  }
+}
+
+Ajax.Request = Class.create();
+Ajax.Request.Events =
+  ['Uninitialized', 'Loading', 'Loaded', 'Interactive', 'Complete'];
+
+Ajax.Request.prototype = Object.extend(new Ajax.Base(), {
+  initialize: function(url, options) {
+    this.transport = Ajax.getTransport();
+    this.setOptions(options);
+    this.request(url);
+  },
+
+  request: function(url) {
+    var parameters = this.options.parameters || '';
+    if (parameters.length > 0) parameters += '&_=';
+
+    /* Simulate other verbs over post */
+    if (this.options.method != 'get' && this.options.method != 'post') {
+      parameters += (parameters.length > 0 ? '&' : '') + '_method=' + this.options.method;
+      this.options.method = 'post';
+    }
+
+    try {
+      this.url = url;
+      if (this.options.method == 'get' && parameters.length > 0)
+        this.url += (this.url.match(/\?/) ? '&' : '?') + parameters;
+
+      Ajax.Responders.dispatch('onCreate', this, this.transport);
+
+      this.transport.open(this.options.method, this.url,
+        this.options.asynchronous);
+
+      if (this.options.asynchronous)
+        setTimeout(function() { this.respondToReadyState(1) }.bind(this), 10);
+
+      this.transport.onreadystatechange = this.onStateChange.bind(this);
+      this.setRequestHeaders();
+
+      var body = this.options.postBody ? this.options.postBody : parameters;
+      this.transport.send(this.options.method == 'post' ? body : null);
+
+      /* Force Firefox to handle ready state 4 for synchronous requests */
+      if (!this.options.asynchronous && this.transport.overrideMimeType)
+        this.onStateChange();
+
+    } catch (e) {
+      this.dispatchException(e);
+    }
+  },
+
+  setRequestHeaders: function() {
+    var requestHeaders =
+      ['X-Requested-With', 'XMLHttpRequest',
+       'X-Prototype-Version', Prototype.Version,
+       'Accept', 'text/javascript, text/html, application/xml, text/xml, */*'];
+
+    if (this.options.method == 'post') {
+      requestHeaders.push('Content-type', this.options.contentType);
+
+      /* Force "Connection: close" for Mozilla browsers to work around
+       * a bug where XMLHttpReqeuest sends an incorrect Content-length
+       * header. See Mozilla Bugzilla #246651.
+       */
+      if (this.transport.overrideMimeType)
+        requestHeaders.push('Connection', 'close');
+    }
+
+    if (this.options.requestHeaders)
+      requestHeaders.push.apply(requestHeaders, this.options.requestHeaders);
+
+    for (var i = 0; i < requestHeaders.length; i += 2)
+      this.transport.setRequestHeader(requestHeaders[i], requestHeaders[i+1]);
+  },
+
+  onStateChange: function() {
+    var readyState = this.transport.readyState;
+    if (readyState != 1)
+      this.respondToReadyState(this.transport.readyState);
+  },
+
+  header: function(name) {
+    try {
+      return this.transport.getResponseHeader(name);
+    } catch (e) {}
+  },
+
+  evalJSON: function() {
+    try {
+      return eval('(' + this.header('X-JSON') + ')');
+    } catch (e) {}
+  },
+
+  evalResponse: function() {
+    try {
+      return eval(this.transport.responseText);
+    } catch (e) {
+      this.dispatchException(e);
+    }
+  },
+
+  respondToReadyState: function(readyState) {
+    var event = Ajax.Request.Events[readyState];
+    var transport = this.transport, json = this.evalJSON();
+
+    if (event == 'Complete') {
+      try {
+        (this.options['on' + this.transport.status]
+         || this.options['on' + (this.responseIsSuccess() ? 'Success' : 'Failure')]
+         || Prototype.emptyFunction)(transport, json);
+      } catch (e) {
+        this.dispatchException(e);
+      }
+
+      if ((this.header('Content-type') || '').match(/^text\/javascript/i))
+        this.evalResponse();
+    }
+
+    try {
+      (this.options['on' + event] || Prototype.emptyFunction)(transport, json);
+      Ajax.Responders.dispatch('on' + event, this, transport, json);
+      if (Edburns.alert) {
+      }
+    } catch (e) {
+      this.dispatchException(e);
+    }
+
+    /* Avoid memory leak in MSIE: clean up the oncomplete event handler */
+    if (event == 'Complete')
+      this.transport.onreadystatechange = Prototype.emptyFunction;
+  },
+
+  dispatchException: function(exception) {
+    (this.options.onException || Prototype.emptyFunction)(this, exception);
+
+    Ajax.Responders.dispatch('onException', this, exception);
+  }
+});
+
+Ajax.Updater = Class.create();
+
+Object.extend(Object.extend(Ajax.Updater.prototype, Ajax.Request.prototype), {
+  initialize: function(container, url, options) {
+    this.containers = {
+      success: container.success ? $(container.success) : $(container),
+      failure: container.failure ? $(container.failure) :
+        (container.success ? null : $(container))
+    }
+
+    this.transport = Ajax.getTransport();
+    this.setOptions(options);
+
+    var onComplete = this.options.onComplete || Prototype.emptyFunction;
+    this.options.onComplete = (function(transport, object) {
+      this.updateContent();
+      onComplete(transport, object);
+    }).bind(this);
+
+    this.request(url);
+  },
+
+  updateContent: function() {
+    var receiver = this.responseIsSuccess() ?
+      this.containers.success : this.containers.failure;
+    var response = this.transport.responseText;
+
+    if (!this.options.evalScripts)
+      response = response.stripScripts();
+
+    if (receiver) {
+      if (this.options.insertion) {
+        new this.options.insertion(receiver, response);
+      } else {
+        Element.update(receiver, response);
+      }
+    }
+
+    if (this.responseIsSuccess()) {
+      if (this.onComplete)
+        setTimeout(this.onComplete.bind(this), 10);
+    }
+  }
+});
+
+Ajax.PeriodicalUpdater = Class.create();
+Ajax.PeriodicalUpdater.prototype = Object.extend(new Ajax.Base(), {
+  initialize: function(container, url, options) {
+    this.setOptions(options);
+    this.onComplete = this.options.onComplete;
+
+    this.frequency = (this.options.frequency || 2);
+    this.decay = (this.options.decay || 1);
+
+    this.updater = {};
+    this.container = container;
+    this.url = url;
+
+    this.start();
+  },
+
+  start: function() {
+    this.options.onComplete = this.updateComplete.bind(this);
+    this.onTimerEvent();
+  },
+
+  stop: function() {
+    this.updater.options.onComplete = undefined;
+    clearTimeout(this.timer);
+    (this.onComplete || Prototype.emptyFunction).apply(this, arguments);
+  },
+
+  updateComplete: function(request) {
+    if (this.options.decay) {
+      this.decay = (request.responseText == this.lastText ?
+        this.decay * this.options.decay : 1);
+
+      this.lastText = request.responseText;
+    }
+    this.timer = setTimeout(this.onTimerEvent.bind(this),
+      this.decay * this.frequency * 1000);
+  },
+
+  onTimerEvent: function() {
+    this.updater = new Ajax.Updater(this.container, this.url, this.options);
+  }
+});
+function $() {
+  var results = [], element;
+  for (var i = 0; i < arguments.length; i++) {
+    element = arguments[i];
+    if (typeof element == 'string')
+      element = document.getElementById(element);
+    results.push(Element.extend(element));
+  }
+  return results.reduce();
+}
+
+document.getElementsByClassName = function(className, parentElement) {
+  var children = ($(parentElement) || document.body).getElementsByTagName('*');
+  return $A(children).inject([], function(elements, child) {
+    if (child.className.match(new RegExp("(^|\\s)" + className + "(\\s|$)")))
+      elements.push(Element.extend(child));
+    return elements;
+  });
+}
+
+/*--------------------------------------------------------------------------*/
+
+if (!window.Element)
+  var Element = new Object();
+
+Element.extend = function(element) {
+  if (!element) return;
+  if (_nativeExtensions || element.nodeType == 3) return element;
+
+  if (!element._extended && element.tagName && element != window) {
+    var methods = Object.clone(Element.Methods), cache = Element.extend.cache;
+
+    if (element.tagName == 'FORM')
+      Object.extend(methods, Form.Methods);
+    if (['INPUT', 'TEXTAREA', 'SELECT'].include(element.tagName))
+      Object.extend(methods, Form.Element.Methods);
+
+    for (var property in methods) {
+      var value = methods[property];
+      if (typeof value == 'function')
+        element[property] = cache.findOrStore(value);
+    }
+  }
+
+  element._extended = true;
+  return element;
+}
+
+Element.extend.cache = {
+  findOrStore: function(value) {
+    return this[value] = this[value] || function() {
+      return value.apply(null, [this].concat($A(arguments)));
+    }
+  }
+}
+
+Element.Methods = {
+  visible: function(element) {
+    return $(element).style.display != 'none';
+  },
+
+  toggle: function(element) {
+    element = $(element);
+    Element[Element.visible(element) ? 'hide' : 'show'](element);
+    return element;
+  },
+
+  hide: function(element) {
+    $(element).style.display = 'none';
+    return element;
+  },
+
+  show: function(element) {
+    $(element).style.display = '';
+    return element;
+  },
+
+  remove: function(element) {
+    element = $(element);
+    element.parentNode.removeChild(element);
+    return element;
+  },
+
+  update: function(element, html) {
+    $(element).innerHTML = html.stripScripts();
+    setTimeout(function() {html.evalScripts()}, 10);
+    return element;
+  },
+
+  replace: function(element, html) {
+    element = $(element);
+    if (element.outerHTML) {
+      element.outerHTML = html.stripScripts();
+    } else {
+      var range = element.ownerDocument.createRange();
+      range.selectNodeContents(element);
+      element.parentNode.replaceChild(
+        range.createContextualFragment(html.stripScripts()), element);
+    }
+    setTimeout(function() {html.evalScripts()}, 10);
+    return element;
+  },
+
+  inspect: function(element) {
+    element = $(element);
+    var result = '<' + element.tagName.toLowerCase();
+    $H({'id': 'id', 'className': 'class'}).each(function(pair) {
+      var property = pair.first(), attribute = pair.last();
+      var value = (element[property] || '').toString();
+      if (value) result += ' ' + attribute + '=' + value.inspect(true);
+    });
+    return result + '>';
+  },
+
+  recursivelyCollect: function(element, property) {
+    element = $(element);
+    var elements = [];
+    while (element = element[property])
+      if (element.nodeType == 1)
+        elements.push(Element.extend(element));
+    return elements;
+  },
+
+  ancestors: function(element) {
+    return $(element).recursivelyCollect('parentNode');
+  },
+
+  descendants: function(element) {
+    element = $(element);
+    return $A(element.getElementsByTagName('*'));
+  },
+
+  previousSiblings: function(element) {
+    return $(element).recursivelyCollect('previousSibling');
+  },
+
+  nextSiblings: function(element) {
+    return $(element).recursivelyCollect('nextSibling');
+  },
+
+  siblings: function(element) {
+    element = $(element);
+    return element.previousSiblings().reverse().concat(element.nextSiblings());
+  },
+
+  match: function(element, selector) {
+    element = $(element);
+    if (typeof selector == 'string')
+      selector = new Selector(selector);
+    return selector.match(element);
+  },
+
+  up: function(element, expression, index) {
+    return Selector.findElement($(element).ancestors(), expression, index);
+  },
+
+  down: function(element, expression, index) {
+    return Selector.findElement($(element).descendants(), expression, index);
+  },
+
+  previous: function(element, expression, index) {
+    return Selector.findElement($(element).previousSiblings(), expression, index);
+  },
+
+  next: function(element, expression, index) {
+    return Selector.findElement($(element).nextSiblings(), expression, index);
+  },
+
+  getElementsBySelector: function() {
+    var args = $A(arguments), element = $(args.shift());
+    return Selector.findChildElements(element, args);
+  },
+
+  getElementsByClassName: function(element, className) {
+    element = $(element);
+    return document.getElementsByClassName(className, element);
+  },
+
+  getHeight: function(element) {
+    element = $(element);
+    return element.offsetHeight;
+  },
+
+  classNames: function(element) {
+    return new Element.ClassNames(element);
+  },
+
+  hasClassName: function(element, className) {
+    if (!(element = $(element))) return;
+    return Element.classNames(element).include(className);
+  },
+
+  addClassName: function(element, className) {
+    if (!(element = $(element))) return;
+    Element.classNames(element).add(className);
+    return element;
+  },
+
+  removeClassName: function(element, className) {
+    if (!(element = $(element))) return;
+    Element.classNames(element).remove(className);
+    return element;
+  },
+
+  observe: function() {
+    Event.observe.apply(Event, arguments);
+    return $A(arguments).first();
+  },
+
+  stopObserving: function() {
+    Event.stopObserving.apply(Event, arguments);
+    return $A(arguments).first();
+  },
+
+  // removes whitespace-only text node children
+  cleanWhitespace: function(element) {
+    element = $(element);
+    var node = element.firstChild;
+    while (node) {
+      var nextNode = node.nextSibling;
+      if (node.nodeType == 3 && !/\S/.test(node.nodeValue))
+        element.removeChild(node);
+      node = nextNode;
+    }
+    return element;
+  },
+
+  empty: function(element) {
+    return $(element).innerHTML.match(/^\s*$/);
+  },
+
+  childOf: function(element, ancestor) {
+    element = $(element), ancestor = $(ancestor);
+    while (element = element.parentNode)
+      if (element == ancestor) return true;
+    return false;
+  },
+
+  scrollTo: function(element) {
+    element = $(element);
+    var x = element.x ? element.x : element.offsetLeft,
+        y = element.y ? element.y : element.offsetTop;
+    window.scrollTo(x, y);
+    return element;
+  },
+
+  getStyle: function(element, style) {
+    element = $(element);
+    var value = element.style[style.camelize()];
+    if (!value) {
+      if (document.defaultView && document.defaultView.getComputedStyle) {
+        var css = document.defaultView.getComputedStyle(element, null);
+        value = css ? css.getPropertyValue(style) : null;
+      } else if (element.currentStyle) {
+        value = element.currentStyle[style.camelize()];
+      }
+    }
+
+    if (window.opera && ['left', 'top', 'right', 'bottom'].include(style))
+      if (Element.getStyle(element, 'position') == 'static') value = 'auto';
+
+    return value == 'auto' ? null : value;
+  },
+
+  setStyle: function(element, style) {
+    element = $(element);
+    for (var name in style)
+      element.style[name.camelize()] = style[name];
+    return element;
+  },
+
+  getDimensions: function(element) {
+    element = $(element);
+    if (Element.getStyle(element, 'display') != 'none')
+      return {width: element.offsetWidth, height: element.offsetHeight};
+
+    // All *Width and *Height properties give 0 on elements with display none,
+    // so enable the element temporarily
+    var els = element.style;
+    var originalVisibility = els.visibility;
+    var originalPosition = els.position;
+    els.visibility = 'hidden';
+    els.position = 'absolute';
+    els.display = '';
+    var originalWidth = element.clientWidth;
+    var originalHeight = element.clientHeight;
+    els.display = 'none';
+    els.position = originalPosition;
+    els.visibility = originalVisibility;
+    return {width: originalWidth, height: originalHeight};
+  },
+
+  makePositioned: function(element) {
+    element = $(element);
+    var pos = Element.getStyle(element, 'position');
+    if (pos == 'static' || !pos) {
+      element._madePositioned = true;
+      element.style.position = 'relative';
+      // Opera returns the offset relative to the positioning context, when an
+      // element is position relative but top and left have not been defined
+      if (window.opera) {
+        element.style.top = 0;
+        element.style.left = 0;
+      }
+    }
+    return element;
+  },
+
+  undoPositioned: function(element) {
+    element = $(element);
+    if (element._madePositioned) {
+      element._madePositioned = undefined;
+      element.style.position =
+        element.style.top =
+        element.style.left =
+        element.style.bottom =
+        element.style.right = '';
+    }
+    return element;
+  },
+
+  makeClipping: function(element) {
+    element = $(element);
+    if (element._overflow) return;
+    element._overflow = element.style.overflow || 'auto';
+    if ((Element.getStyle(element, 'overflow') || 'visible') != 'hidden')
+      element.style.overflow = 'hidden';
+    return element;
+  },
+
+  undoClipping: function(element) {
+    element = $(element);
+    if (!element._overflow) return;
+    element.style.overflow = element._overflow == 'auto' ? '' : element._overflow;
+    element._overflow = null;
+    return element;
+  }
+}
+
+// IE is missing .innerHTML support for TABLE-related elements
+if(document.all){
+  Element.Methods.update = function(element, html) {
+    element = $(element);
+    var tagName = element.tagName.toUpperCase();
+    if (['THEAD','TBODY','TR','TD'].indexOf(tagName) > -1) {
+      var div = document.createElement('div');
+      switch (tagName) {
+        case 'THEAD':
+        case 'TBODY':
+          div.innerHTML = '<table><tbody>' +  html.stripScripts() + '</tbody></table>';
+          depth = 2;
+          break;
+        case 'TR':
+          div.innerHTML = '<table><tbody><tr>' +  html.stripScripts() + '</tr></tbody></table>';
+          depth = 3;
+          break;
+        case 'TD':
+          div.innerHTML = '<table><tbody><tr><td>' +  html.stripScripts() + '</td></tr></tbody></table>';
+          depth = 4;
+      }
+      $A(element.childNodes).each(function(node){
+        element.removeChild(node)
+      });
+      depth.times(function(){ div = div.firstChild });
+
+      $A(div.childNodes).each(
+        function(node){ element.appendChild(node) });
+    } else {
+      element.innerHTML = html.stripScripts();
+    }
+    setTimeout(function() {html.evalScripts()}, 10);
+    return element;
+  }
+}
+
+Object.extend(Element, Element.Methods);
+
+var _nativeExtensions = false;
+
+if (!window.HTMLElement && /Konqueror|Safari|KHTML/.test(navigator.userAgent)) {
+  /* Emulate HTMLElement, HTMLFormElement, HTMLInputElement, HTMLTextAreaElement,
+     and HTMLSelectElement in Safari */
+  ['', 'Form', 'Input', 'TextArea', 'Select'].each(function(tag) {
+    var klass = window['HTML' + tag + 'Element'] = {};
+    klass.prototype = document.createElement(tag ? tag.toLowerCase() : 'div').__proto__;
+  });
+}
+
+Element.addMethods = function(methods) {
+  Object.extend(Element.Methods, methods || {});
+
+  function copy(methods, destination) {
+    var cache = Element.extend.cache;
+    for (var property in methods) {
+      var value = methods[property];
+      destination[property] = cache.findOrStore(value);
+    }
+  }
+
+  if (typeof HTMLElement != 'undefined') {
+    copy(Element.Methods, HTMLElement.prototype);
+    copy(Form.Methods, HTMLFormElement.prototype);
+    [HTMLInputElement, HTMLTextAreaElement, HTMLSelectElement].each(function(klass) {
+      copy(Form.Element.Methods, klass.prototype);
+    });
+    _nativeExtensions = true;
+  }
+}
+
+var Toggle = new Object();
+Toggle.display = Element.toggle;
+
+/*--------------------------------------------------------------------------*/
+
+Abstract.Insertion = function(adjacency) {
+  this.adjacency = adjacency;
+}
+
+Abstract.Insertion.prototype = {
+  initialize: function(element, content) {
+    this.element = $(element);
+    this.content = content.stripScripts();
+
+    if (this.adjacency && this.element.insertAdjacentHTML) {
+      try {
+        this.element.insertAdjacentHTML(this.adjacency, this.content);
+      } catch (e) {
+        var tagName = this.element.tagName.toLowerCase();
+        if (tagName == 'tbody' || tagName == 'tr') {
+          this.insertContent(this.contentFromAnonymousTable());
+        } else {
+          throw e;
+        }
+      }
+    } else {
+      this.range = this.element.ownerDocument.createRange();
+      if (this.initializeRange) this.initializeRange();
+      this.insertContent([this.range.createContextualFragment(this.content)]);
+    }
+
+    setTimeout(function() {content.evalScripts()}, 10);
+  },
+
+  contentFromAnonymousTable: function() {
+    var div = document.createElement('div');
+    div.innerHTML = '<table><tbody>' + this.content + '</tbody></table>';
+    return $A(div.childNodes[0].childNodes[0].childNodes);
+  }
+}
+
+var Insertion = new Object();
+
+Insertion.Before = Class.create();
+Insertion.Before.prototype = Object.extend(new Abstract.Insertion('beforeBegin'), {
+  initializeRange: function() {
+    this.range.setStartBefore(this.element);
+  },
+
+  insertContent: function(fragments) {
+    fragments.each((function(fragment) {
+      this.element.parentNode.insertBefore(fragment, this.element);
+    }).bind(this));
+  }
+});
+
+Insertion.Top = Class.create();
+Insertion.Top.prototype = Object.extend(new Abstract.Insertion('afterBegin'), {
+  initializeRange: function() {
+    this.range.selectNodeContents(this.element);
+    this.range.collapse(true);
+  },
+
+  insertContent: function(fragments) {
+    fragments.reverse(false).each((function(fragment) {
+      this.element.insertBefore(fragment, this.element.firstChild);
+    }).bind(this));
+  }
+});
+
+Insertion.Bottom = Class.create();
+Insertion.Bottom.prototype = Object.extend(new Abstract.Insertion('beforeEnd'), {
+  initializeRange: function() {
+    this.range.selectNodeContents(this.element);
+    this.range.collapse(this.element);
+  },
+
+  insertContent: function(fragments) {
+    fragments.each((function(fragment) {
+      this.element.appendChild(fragment);
+    }).bind(this));
+  }
+});
+
+Insertion.After = Class.create();
+Insertion.After.prototype = Object.extend(new Abstract.Insertion('afterEnd'), {
+  initializeRange: function() {
+    this.range.setStartAfter(this.element);
+  },
+
+  insertContent: function(fragments) {
+    fragments.each((function(fragment) {
+      this.element.parentNode.insertBefore(fragment,
+        this.element.nextSibling);
+    }).bind(this));
+  }
+});
+
+/*--------------------------------------------------------------------------*/
+
+Element.ClassNames = Class.create();
+Element.ClassNames.prototype = {
+  initialize: function(element) {
+    this.element = $(element);
+  },
+
+  _each: function(iterator) {
+    this.element.className.split(/\s+/).select(function(name) {
+      return name.length > 0;
+    })._each(iterator);
+  },
+
+  set: function(className) {
+    this.element.className = className;
+  },
+
+  add: function(classNameToAdd) {
+    if (this.include(classNameToAdd)) return;
+    this.set(this.toArray().concat(classNameToAdd).join(' '));
+  },
+
+  remove: function(classNameToRemove) {
+    if (!this.include(classNameToRemove)) return;
+    this.set(this.select(function(className) {
+      return className != classNameToRemove;
+    }).join(' '));
+  },
+
+  toString: function() {
+    return this.toArray().join(' ');
+  }
+}
+
+Object.extend(Element.ClassNames.prototype, Enumerable);
+var Selector = Class.create();
+Selector.prototype = {
+  initialize: function(expression) {
+    this.params = {classNames: []};
+    this.expression = expression.toString().strip();
+    this.parseExpression();
+    this.compileMatcher();
+  },
+
+  parseExpression: function() {
+    function abort(message) { throw 'Parse error in selector: ' + message; }
+
+    if (this.expression == '')  abort('empty expression');
+
+    var params = this.params, expr = this.expression, match, modifier, clause, rest;
+    while (match = expr.match(/^(.*)\[([a-z0-9_:-]+?)(?:([~\|!]?=)(?:"([^"]*)"|([^\]\s]*)))?\]$/i)) {
+      params.attributes = params.attributes || [];
+      params.attributes.push({name: match[2], operator: match[3], value: match[4] || match[5] || ''});
+      expr = match[1];
+    }
+
+    if (expr == '*') return this.params.wildcard = true;
+
+    while (match = expr.match(/^([^a-z0-9_-])?([a-z0-9_-]+)(.*)/i)) {
+      modifier = match[1], clause = match[2], rest = match[3];
+      switch (modifier) {
+        case '#':       params.id = clause; break;
+        case '.':       params.classNames.push(clause); break;
+        case '':
+        case undefined: params.tagName = clause.toUpperCase(); break;
+        default:        abort(expr.inspect());
+      }
+      expr = rest;
+    }
+
+    if (expr.length > 0) abort(expr.inspect());
+  },
+
+  buildMatchExpression: function() {
+    var params = this.params, conditions = [], clause;
+
+    if (params.wildcard)
+      conditions.push('true');
+    if (clause = params.id)
+      conditions.push('element.id == ' + clause.inspect());
+    if (clause = params.tagName)
+      conditions.push('element.tagName.toUpperCase() == ' + clause.inspect());
+    if ((clause = params.classNames).length > 0)
+      for (var i = 0; i < clause.length; i++)
+        conditions.push('Element.hasClassName(element, ' + clause[i].inspect() + ')');
+    if (clause = params.attributes) {
+      clause.each(function(attribute) {
+        var value = 'element.getAttribute(' + attribute.name.inspect() + ')';
+        var splitValueBy = function(delimiter) {
+          return value + ' && ' + value + '.split(' + delimiter.inspect() + ')';
+        }
+
+        switch (attribute.operator) {
+          case '=':       conditions.push(value + ' == ' + attribute.value.inspect()); break;
+          case '~=':      conditions.push(splitValueBy(' ') + '.include(' + attribute.value.inspect() + ')'); break;
+          case '|=':      conditions.push(
+                            splitValueBy('-') + '.first().toUpperCase() == ' + attribute.value.toUpperCase().inspect()
+                          ); break;
+          case '!=':      conditions.push(value + ' != ' + attribute.value.inspect()); break;
+          case '':
+          case undefined: conditions.push(value + ' != null'); break;
+          default:        throw 'Unknown operator ' + attribute.operator + ' in selector';
+        }
+      });
+    }
+
+    return conditions.join(' && ');
+  },
+
+  compileMatcher: function() {
+    this.match = new Function('element', 'if (!element.tagName) return false; \
+      return ' + this.buildMatchExpression());
+  },
+
+  findElements: function(scope) {
+    var element;
+
+    if (element = $(this.params.id))
+      if (this.match(element))
+        if (!scope || Element.childOf(element, scope))
+          return [element];
+
+    scope = (scope || document).getElementsByTagName(this.params.tagName || '*');
+
+    var results = [];
+    for (var i = 0; i < scope.length; i++)
+      if (this.match(element = scope[i]))
+        results.push(Element.extend(element));
+
+    return results;
+  },
+
+  toString: function() {
+    return this.expression;
+  }
+}
+
+Object.extend(Selector, {
+  matchElements: function(elements, expression) {
+    var selector = new Selector(expression);
+    return elements.select(selector.match.bind(selector));
+  },
+
+  findElement: function(elements, expression, index) {
+    if (typeof expression == 'number') index = expression, expression = false;
+    return Selector.matchElements(elements, expression || '*')[index || 0];
+  },
+
+  findChildElements: function(element, expressions) {
+    return expressions.map(function(expression) {
+      return expression.strip().split(/\s+/).inject([null], function(results, expr) {
+        var selector = new Selector(expr);
+        return results.inject([], function(elements, result) {
+          return elements.concat(selector.findElements(result || element));
+        });
+      });
+    }).flatten();
+  }
+});
+
+function $$() {
+  return Selector.findChildElements(document, $A(arguments));
+}
+var Form = {
+  reset: function(form) {
+    $(form).reset();
+    return form;
+  }
+};
+
+Form.Methods = {
+  serialize: function(form) {
+    var elements = Form.getElements($(form));
+    var queryComponents = new Array();
+
+    for (var i = 0; i < elements.length; i++) {
+      var queryComponent = Form.Element.serialize(elements[i]);
+      if (queryComponent)
+        queryComponents.push(queryComponent);
+    }
+
+    return queryComponents.join('&');
+  },
+
+  getElements: function(form) {
+    form = $(form);
+    var elements = new Array();
+
+    for (var tagName in Form.Element.Serializers) {
+      var tagElements = form.getElementsByTagName(tagName);
+      for (var j = 0; j < tagElements.length; j++)
+        elements.push(tagElements[j]);
+    }
+    return elements;
+  },
+
+  getInputs: function(form, typeName, name) {
+    form = $(form);
+    var inputs = form.getElementsByTagName('input');
+
+    if (!typeName && !name)
+      return inputs;
+
+    var matchingInputs = new Array();
+    for (var i = 0; i < inputs.length; i++) {
+      var input = inputs[i];
+      if ((typeName && input.type != typeName) ||
+          (name && input.name != name))
+        continue;
+      matchingInputs.push(input);
+    }
+
+    return matchingInputs;
+  },
+
+  disable: function(form) {
+    form = $(form);
+    var elements = Form.getElements(form);
+    for (var i = 0; i < elements.length; i++) {
+      var element = elements[i];
+      element.blur();
+      element.disabled = 'true';
+    }
+    return form;
+  },
+
+  enable: function(form) {
+    form = $(form);
+    var elements = Form.getElements(form);
+    for (var i = 0; i < elements.length; i++) {
+      var element = elements[i];
+      element.disabled = '';
+    }
+    return form;
+  },
+
+  findFirstElement: function(form) {
+    return Form.getElements(form).find(function(element) {
+      return element.type != 'hidden' && !element.disabled &&
+        ['input', 'select', 'textarea'].include(element.tagName.toLowerCase());
+    });
+  },
+
+  focusFirstElement: function(form) {
+    form = $(form);
+    Field.activate(Form.findFirstElement(form));
+    return form;
+  }
+}
+
+Object.extend(Form, Form.Methods);
+
+/*--------------------------------------------------------------------------*/
+
+Form.Element = {
+  focus: function(element) {
+    $(element).focus();
+    return element;
+  },
+
+  select: function(element) {
+    $(element).select();
+    return element;
+  }
+}
+
+Form.Element.Methods = {
+  serialize: function(element) {
+    element = $(element);
+    var method = element.tagName.toLowerCase();
+    var parameter = Form.Element.Serializers[method](element);
+
+    if (parameter) {
+      var key = encodeURIComponent(parameter[0]);
+      if (key.length == 0) return;
+
+      if (parameter[1].constructor != Array)
+        parameter[1] = [parameter[1]];
+
+      return parameter[1].map(function(value) {
+        return key + '=' + encodeURIComponent(value);
+      }).join('&');
+    }
+  },
+
+  getValue: function(element) {
+    element = $(element);
+    var method = element.tagName.toLowerCase();
+    var parameter = Form.Element.Serializers[method](element);
+
+    if (parameter)
+      return parameter[1];
+  },
+
+  clear: function(element) {
+    $(element).value = '';
+    return element;
+  },
+
+  present: function(element) {
+    return $(element).value != '';
+  },
+
+  activate: function(element) {
+    element = $(element);
+    element.focus();
+    if (element.select)
+      element.select();
+    return element;
+  },
+
+  disable: function(element) {
+    element = $(element);
+    element.disabled = '';
+    return element;
+  },
+
+  enable: function(element) {
+    element = $(element);
+    element.blur();
+    element.disabled = 'true';
+    return element;
+  }
+}
+
+Object.extend(Form.Element, Form.Element.Methods);
+var Field = Form.Element;
+
+/*--------------------------------------------------------------------------*/
+
+Form.Element.Serializers = {
+  input: function(element) {
+    switch (element.type.toLowerCase()) {
+      case 'checkbox':
+      case 'radio':
+        return Form.Element.Serializers.inputSelector(element);
+      default:
+        return Form.Element.Serializers.textarea(element);
+    }
+    return false;
+  },
+
+  inputSelector: function(element) {
+    if (element.checked)
+      return [element.name, element.value];
+  },
+
+  textarea: function(element) {
+    return [element.name, element.value];
+  },
+
+  select: function(element) {
+    return Form.Element.Serializers[element.type == 'select-one' ?
+      'selectOne' : 'selectMany'](element);
+  },
+
+  selectOne: function(element) {
+    var value = '', opt, index = element.selectedIndex;
+    if (index >= 0) {
+      opt = element.options[index];
+      value = opt.value || opt.text;
+    }
+    return [element.name, value];
+  },
+
+  selectMany: function(element) {
+    var value = [];
+    for (var i = 0; i < element.length; i++) {
+      var opt = element.options[i];
+      if (opt.selected)
+        value.push(opt.value || opt.text);
+    }
+    return [element.name, value];
+  }
+}
+
+/*--------------------------------------------------------------------------*/
+
+var $F = Form.Element.getValue;
+
+/*--------------------------------------------------------------------------*/
+
+Abstract.TimedObserver = function() {}
+Abstract.TimedObserver.prototype = {
+  initialize: function(element, frequency, callback) {
+    this.frequency = frequency;
+    this.element   = $(element);
+    this.callback  = callback;
+
+    this.lastValue = this.getValue();
+    this.registerCallback();
+  },
+
+  registerCallback: function() {
+    setInterval(this.onTimerEvent.bind(this), this.frequency * 1000);
+  },
+
+  onTimerEvent: function() {
+    var value = this.getValue();
+    if (this.lastValue != value) {
+      this.callback(this.element, value);
+      this.lastValue = value;
+    }
+  }
+}
+
+Form.Element.Observer = Class.create();
+Form.Element.Observer.prototype = Object.extend(new Abstract.TimedObserver(), {
+  getValue: function() {
+    return Form.Element.getValue(this.element);
+  }
+});
+
+Form.Observer = Class.create();
+Form.Observer.prototype = Object.extend(new Abstract.TimedObserver(), {
+  getValue: function() {
+    return Form.serialize(this.element);
+  }
+});
+
+/*--------------------------------------------------------------------------*/
+
+Abstract.EventObserver = function() {}
+Abstract.EventObserver.prototype = {
+  initialize: function(element, callback) {
+    this.element  = $(element);
+    this.callback = callback;
+
+    this.lastValue = this.getValue();
+    if (this.element.tagName.toLowerCase() == 'form')
+      this.registerFormCallbacks();
+    else
+      this.registerCallback(this.element);
+  },
+
+  onElementEvent: function() {
+    var value = this.getValue();
+    if (this.lastValue != value) {
+      this.callback(this.element, value);
+      this.lastValue = value;
+    }
+  },
+
+  registerFormCallbacks: function() {
+    var elements = Form.getElements(this.element);
+    for (var i = 0; i < elements.length; i++)
+      this.registerCallback(elements[i]);
+  },
+
+  registerCallback: function(element) {
+    if (element.type) {
+      switch (element.type.toLowerCase()) {
+        case 'checkbox':
+        case 'radio':
+          Event.observe(element, 'click', this.onElementEvent.bind(this));
+          break;
+        default:
+          Event.observe(element, 'change', this.onElementEvent.bind(this));
+          break;
+      }
+    }
+  }
+}
+
+Form.Element.EventObserver = Class.create();
+Form.Element.EventObserver.prototype = Object.extend(new Abstract.EventObserver(), {
+  getValue: function() {
+    return Form.Element.getValue(this.element);
+  }
+});
+
+Form.EventObserver = Class.create();
+Form.EventObserver.prototype = Object.extend(new Abstract.EventObserver(), {
+  getValue: function() {
+    return Form.serialize(this.element);
+  }
+});
+if (!window.Event) {
+  var Event = new Object();
+}
+
+Object.extend(Event, {
+  KEY_BACKSPACE: 8,
+  KEY_TAB:       9,
+  KEY_RETURN:   13,
+  KEY_ESC:      27,
+  KEY_LEFT:     37,
+  KEY_UP:       38,
+  KEY_RIGHT:    39,
+  KEY_DOWN:     40,
+  KEY_DELETE:   46,
+  KEY_HOME:     36,
+  KEY_END:      35,
+  KEY_PAGEUP:   33,
+  KEY_PAGEDOWN: 34,
+
+  element: function(event) {
+    return event.target || event.srcElement;
+  },
+
+  isLeftClick: function(event) {
+    return (((event.which) && (event.which == 1)) ||
+            ((event.button) && (event.button == 1)));
+  },
+
+  pointerX: function(event) {
+    return event.pageX || (event.clientX +
+      (document.documentElement.scrollLeft || document.body.scrollLeft));
+  },
+
+  pointerY: function(event) {
+    return event.pageY || (event.clientY +
+      (document.documentElement.scrollTop || document.body.scrollTop));
+  },
+
+  stop: function(event) {
+    if (event.preventDefault) {
+      event.preventDefault();
+      event.stopPropagation();
+    } else {
+      event.returnValue = false;
+      event.cancelBubble = true;
+    }
+  },
+
+  // find the first node with the given tagName, starting from the
+  // node the event was triggered on; traverses the DOM upwards
+  findElement: function(event, tagName) {
+    var element = Event.element(event);
+    while (element.parentNode && (!element.tagName ||
+        (element.tagName.toUpperCase() != tagName.toUpperCase())))
+      element = element.parentNode;
+    return element;
+  },
+
+  observers: false,
+
+  _observeAndCache: function(element, name, observer, useCapture) {
+    if (!this.observers) this.observers = [];
+    if (element.addEventListener) {
+      this.observers.push([element, name, observer, useCapture]);
+      element.addEventListener(name, observer, useCapture);
+    } else if (element.attachEvent) {
+      this.observers.push([element, name, observer, useCapture]);
+      element.attachEvent('on' + name, observer);
+    }
+  },
+
+  unloadCache: function() {
+    if (!Event.observers) return;
+    for (var i = 0; i < Event.observers.length; i++) {
+      Event.stopObserving.apply(this, Event.observers[i]);
+      Event.observers[i][0] = null;
+    }
+    Event.observers = false;
+  },
+
+  observe: function(element, name, observer, useCapture) {
+    element = $(element);
+    useCapture = useCapture || false;
+
+    if (name == 'keypress' &&
+        (navigator.appVersion.match(/Konqueror|Safari|KHTML/)
+        || element.attachEvent))
+      name = 'keydown';
+
+    Event._observeAndCache(element, name, observer, useCapture);
+  },
+
+  stopObserving: function(element, name, observer, useCapture) {
+    element = $(element);
+    useCapture = useCapture || false;
+
+    if (name == 'keypress' &&
+        (navigator.appVersion.match(/Konqueror|Safari|KHTML/)
+        || element.detachEvent))
+      name = 'keydown';
+
+    if (element.removeEventListener) {
+      element.removeEventListener(name, observer, useCapture);
+    } else if (element.detachEvent) {
+      try {
+        element.detachEvent('on' + name, observer);
+      } catch (e) {}
+    }
+  }
+});
+
+/* prevent memory leaks in IE */
+if (navigator.appVersion.match(/\bMSIE\b/))
+  Event.observe(window, 'unload', Event.unloadCache, false);
+var Position = {
+  // set to true if needed, warning: firefox performance problems
+  // NOT neeeded for page scrolling, only if draggable contained in
+  // scrollable elements
+  includeScrollOffsets: false,
+
+  // must be called before calling withinIncludingScrolloffset, every time the
+  // page is scrolled
+  prepare: function() {
+    this.deltaX =  window.pageXOffset
+                || document.documentElement.scrollLeft
+                || document.body.scrollLeft
+                || 0;
+    this.deltaY =  window.pageYOffset
+                || document.documentElement.scrollTop
+                || document.body.scrollTop
+                || 0;
+  },
+
+  realOffset: function(element) {
+    var valueT = 0, valueL = 0;
+    do {
+      valueT += element.scrollTop  || 0;
+      valueL += element.scrollLeft || 0;
+      element = element.parentNode;
+    } while (element);
+    return [valueL, valueT];
+  },
+
+  cumulativeOffset: function(element) {
+    var valueT = 0, valueL = 0;
+    do {
+      valueT += element.offsetTop  || 0;
+      valueL += element.offsetLeft || 0;
+      element = element.offsetParent;
+    } while (element);
+    return [valueL, valueT];
+  },
+
+  positionedOffset: function(element) {
+    var valueT = 0, valueL = 0;
+    do {
+      valueT += element.offsetTop  || 0;
+      valueL += element.offsetLeft || 0;
+      element = element.offsetParent;
+      if (element) {
+        p = Element.getStyle(element, 'position');
+        if (p == 'relative' || p == 'absolute') break;
+      }
+    } while (element);
+    return [valueL, valueT];
+  },
+
+  offsetParent: function(element) {
+    if (element.offsetParent) return element.offsetParent;
+    if (element == document.body) return element;
+
+    while ((element = element.parentNode) && element != document.body)
+      if (Element.getStyle(element, 'position') != 'static')
+        return element;
+
+    return document.body;
+  },
+
+  // caches x/y coordinate pair to use with overlap
+  within: function(element, x, y) {
+    if (this.includeScrollOffsets)
+      return this.withinIncludingScrolloffsets(element, x, y);
+    this.xcomp = x;
+    this.ycomp = y;
+    this.offset = this.cumulativeOffset(element);
+
+    return (y >= this.offset[1] &&
+            y <  this.offset[1] + element.offsetHeight &&
+            x >= this.offset[0] &&
+            x <  this.offset[0] + element.offsetWidth);
+  },
+
+  withinIncludingScrolloffsets: function(element, x, y) {
+    var offsetcache = this.realOffset(element);
+
+    this.xcomp = x + offsetcache[0] - this.deltaX;
+    this.ycomp = y + offsetcache[1] - this.deltaY;
+    this.offset = this.cumulativeOffset(element);
+
+    return (this.ycomp >= this.offset[1] &&
+            this.ycomp <  this.offset[1] + element.offsetHeight &&
+            this.xcomp >= this.offset[0] &&
+            this.xcomp <  this.offset[0] + element.offsetWidth);
+  },
+
+  // within must be called directly before
+  overlap: function(mode, element) {
+    if (!mode) return 0;
+    if (mode == 'vertical')
+      return ((this.offset[1] + element.offsetHeight) - this.ycomp) /
+        element.offsetHeight;
+    if (mode == 'horizontal')
+      return ((this.offset[0] + element.offsetWidth) - this.xcomp) /
+        element.offsetWidth;
+  },
+
+  page: function(forElement) {
+    var valueT = 0, valueL = 0;
+
+    var element = forElement;
+    do {
+      valueT += element.offsetTop  || 0;
+      valueL += element.offsetLeft || 0;
+
+      // Safari fix
+      if (element.offsetParent==document.body)
+        if (Element.getStyle(element,'position')=='absolute') break;
+
+    } while (element = element.offsetParent);
+
+    element = forElement;
+    do {
+      if (!window.opera || element.tagName=='BODY') {
+        valueT -= element.scrollTop  || 0;
+        valueL -= element.scrollLeft || 0;
+      }
+    } while (element = element.parentNode);
+
+    return [valueL, valueT];
+  },
+
+  clone: function(source, target) {
+    var options = Object.extend({
+      setLeft:    true,
+      setTop:     true,
+      setWidth:   true,
+      setHeight:  true,
+      offsetTop:  0,
+      offsetLeft: 0
+    }, arguments[2] || {})
+
+    // find page position of source
+    source = $(source);
+    var p = Position.page(source);
+
+    // find coordinate system to use
+    target = $(target);
+    var delta = [0, 0];
+    var parent = null;
+    // delta [0,0] will do fine with position: fixed elements,
+    // position:absolute needs offsetParent deltas
+    if (Element.getStyle(target,'position') == 'absolute') {
+      parent = Position.offsetParent(target);
+      delta = Position.page(parent);
+    }
+
+    // correct by body offsets (fixes Safari)
+    if (parent == document.body) {
+      delta[0] -= document.body.offsetLeft;
+      delta[1] -= document.body.offsetTop;
+    }
+
+    // set position
+    if(options.setLeft)   target.style.left  = (p[0] - delta[0] + options.offsetLeft) + 'px';
+    if(options.setTop)    target.style.top   = (p[1] - delta[1] + options.offsetTop) + 'px';
+    if(options.setWidth)  target.style.width = source.offsetWidth + 'px';
+    if(options.setHeight) target.style.height = source.offsetHeight + 'px';
+  },
+
+  absolutize: function(element) {
+    element = $(element);
+    if (element.style.position == 'absolute') return;
+    Position.prepare();
+
+    var offsets = Position.positionedOffset(element);
+    var top     = offsets[1];
+    var left    = offsets[0];
+    var width   = element.clientWidth;
+    var height  = element.clientHeight;
+
+    element._originalLeft   = left - parseFloat(element.style.left  || 0);
+    element._originalTop    = top  - parseFloat(element.style.top || 0);
+    element._originalWidth  = element.style.width;
+    element._originalHeight = element.style.height;
+
+    element.style.position = 'absolute';
+    element.style.top    = top + 'px';;
+    element.style.left   = left + 'px';;
+    element.style.width  = width + 'px';;
+    element.style.height = height + 'px';;
+  },
+
+  relativize: function(element) {
+    element = $(element);
+    if (element.style.position == 'relative') return;
+    Position.prepare();
+
+    element.style.position = 'relative';
+    var top  = parseFloat(element.style.top  || 0) - (element._originalTop || 0);
+    var left = parseFloat(element.style.left || 0) - (element._originalLeft || 0);
+
+    element.style.top    = top + 'px';
+    element.style.left   = left + 'px';
+    element.style.height = element._originalHeight;
+    element.style.width  = element._originalWidth;
+  }
+}
+
+// Safari returns margins on body which is incorrect if the child is absolutely
+// positioned.  For performance reasons, redefine Position.cumulativeOffset for
+// KHTML/WebKit only.
+if (/Konqueror|Safari|KHTML/.test(navigator.userAgent)) {
+  Position.cumulativeOffset = function(element) {
+    var valueT = 0, valueL = 0;
+    do {
+      valueT += element.offsetTop  || 0;
+      valueL += element.offsetLeft || 0;
+      if (element.offsetParent == document.body)
+        if (Element.getStyle(element, 'position') == 'absolute') break;
+
+      element = element.offsetParent;
+    } while (element);
+
+    return [valueL, valueT];
+  }
+}
+
+Element.addMethods();
diff --git a/jsf-demo/sandbox/stock/src/main/webapp/resources/stock-query.js b/jsf-demo/sandbox/stock/src/main/webapp/resources/stock-query.js
new file mode 100644
index 0000000..a81465f
--- /dev/null
+++ b/jsf-demo/sandbox/stock/src/main/webapp/resources/stock-query.js
@@ -0,0 +1,77 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+var pollId;
+
+/** Delay between requests to the server when polling. */
+var pollDelay = 5000;
+
+/** Start polling the server */
+function start() {
+    pollId = setInterval(poll, pollDelay);
+}
+
+/** Stop polling the server */
+function stop() {
+    clearInterval(pollId);
+}
+
+function poll() {
+    queueEvent();
+    javax.faces.Ajax.ajaxRequest(null, {execute:'symbol,search',render:'stockdata'});
+}
+
+function queueEvent() {
+    var actionEvent = javax.faces.Ajax.actionEvent("search", 
+        DynaFaces.PhaseId.INVOKE_APPLICATION);
+    javax.faces.Ajax.queueFacesEvent(actionEvent);
+    return false;
+}
+
+function toggleStreaming() {
+    var menu = document.getElementById("streaming");
+    var idx = menu.selectedIndex;
+    var streaming = menu[idx].value;
+    if (streaming == "Off") {
+        stop();
+    } else if (streaming == "On") {
+        start();
+    }
+}
diff --git a/jsf-demo/sandbox/stock/src/main/webapp/resources/stylesheet.css b/jsf-demo/sandbox/stock/src/main/webapp/resources/stylesheet.css
new file mode 100644
index 0000000..3c0f763
--- /dev/null
+++ b/jsf-demo/sandbox/stock/src/main/webapp/resources/stylesheet.css
@@ -0,0 +1,77 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+.title-panel {
+    background-image: url(bgblack18.jpg.jsf);
+    height: 80px;
+    width: 900px;
+}
+
+.title-panel-text {
+    color: white;
+    font-family: 'Georgia','Times New Roman','times',serif;
+    font-size: 24px;
+    font-weight: bold;
+}
+
+.title-panel-subtext {
+    color: white;
+    font-family: 'Georgia','Times New Roman','times',serif;
+    font-size: 14px;
+    font-style: italic
+}
+
+.panel-input-border {
+    border: 2px outset blue;
+    background-color: #e0eeee;
+}
+
+.panel-data-border {
+    border: 3px outset blue;
+    background-color: #e0eeee;
+}
+
+.down-color {
+    color: red;
+}
+
+.up-color {
+    color: green;
+}
diff --git a/jsf-demo/sandbox/stock/src/main/webapp/resources/up_g.gif b/jsf-demo/sandbox/stock/src/main/webapp/resources/up_g.gif
new file mode 100644
index 0000000..c81c0df
Binary files /dev/null and b/jsf-demo/sandbox/stock/src/main/webapp/resources/up_g.gif differ
diff --git a/jsf-demo/sandbox/tree-visit/README.txt b/jsf-demo/sandbox/tree-visit/README.txt
new file mode 100644
index 0000000..cb45690
--- /dev/null
+++ b/jsf-demo/sandbox/tree-visit/README.txt
@@ -0,0 +1,2 @@
+While this demo is short and to the point, it would be nice to show a practical reason for tree climbing:
+Not just how to do it.
\ No newline at end of file
diff --git a/jsf-demo/sandbox/tree-visit/build.xml b/jsf-demo/sandbox/tree-visit/build.xml
new file mode 100644
index 0000000..4fc3eea
--- /dev/null
+++ b/jsf-demo/sandbox/tree-visit/build.xml
@@ -0,0 +1,132 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project name="tree-visit" default="build" basedir=".">
+
+
+    <property file="${user.home}/build.properties"/>
+    <property file="../../../build.properties"/>
+    <import file="${jsf.build.home}/common/ant/common.xml"/>
+
+    <!-- Configure the context path for this application -->
+    <property name="context.path" value="/tree-visit"/>
+    <property name="example" value="tree-visit"/>
+    <property name="build" value="${basedir}/build"/>
+
+    <path id="classpath">       
+        <pathelement location="${javax.faces-api.jar}"/>
+        <pathelement location="${javax.faces.jar}"/>
+        <path refid="compile.classpath"/>
+    </path>
+    
+    <target name="init" depends="check.changes">
+        <tstamp/>
+    </target>
+
+    <target name="check.changes">
+        <uptodate property="skip.build"
+                  targetfile="${build}/last-build">
+            <srcfiles dir="${basedir}">
+                <include name="src/**/*.*"/>
+            </srcfiles>
+        </uptodate>
+    </target>
+
+    <target name="clean">
+        <delete dir="${build}"/>
+    </target>    
+
+   <target name="prepare" depends="init"
+            description="Create build directories.">
+        <mkdir dir="${build}/${example}"/>
+        <mkdir dir="${build}/${example}/WEB-INF"/>
+        <mkdir dir="${build}/${example}/WEB-INF/classes"/>
+    </target>
+
+
+    <target name="build" unless="skip.build" depends="prepare"
+            description="Compile Java files and copy static files.">
+        <touch file="${build}/last-build"/>
+        <jsf.javac srcdir="src/main/java"
+                   destdir="${build}/${example}/WEB-INF/classes">
+            <classpath>
+                <path refid="classpath"/>
+            </classpath>
+        </jsf.javac>
+        <copy todir="${build}/${example}/WEB-INF">
+            <fileset dir="src/main/webapp/WEB-INF">
+                <include name="*.tld"/>
+                <include name="*.xml"/>
+            </fileset>
+        </copy>
+
+        <copy todir="${build}/${example}/">
+            <fileset dir="src/main/webapp">
+                <include name="*.xhtml"/>
+                <include name="*.html"/>
+                <include name="*.gif"/>
+                <include name="*.jpg"/>
+                <include name="*.jsp"/>
+                <include name="*.xml"/>
+            </fileset>
+        </copy>
+        <copy todir="${build}/${example}/WEB-INF/classes/treevisit">
+            <fileset dir="src/main/java/treevisit">
+                <include name="*properties"/>
+            </fileset>
+        </copy>
+        
+        <copy todir="${build}/${example}/resources">
+            <fileset dir="src/main/webapp/resources"/>
+        </copy>
+
+        <jsf.war basedir="${build}"
+                 archive-name="${example}"
+                 webxml="${build}/${example}/WEB-INF/web.xml">
+            <archive-elements>
+                <zipfileset dir="${build}/${example}"/>
+            </archive-elements>
+        </jsf.war>
+    </target>
+
+</project> 
+ 
diff --git a/jsf-demo/sandbox/tree-visit/pom.xml b/jsf-demo/sandbox/tree-visit/pom.xml
new file mode 100644
index 0000000..b13676d
--- /dev/null
+++ b/jsf-demo/sandbox/tree-visit/pom.xml
@@ -0,0 +1,165 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>com.sun.faces.extensions</groupId>
+  <artifactId>tree-visit</artifactId>
+  <packaging>war</packaging>
+  <name>tree-visit</name>
+  <url>https://mojarra.dev.java.net/</url>
+  <description>Tree Visit JSF Demo</description>
+  <version>0.1</version>
+
+  <scm>
+    <connection>scm:svn:http://jsf-extensions.dev.java.net/svn/jsf-extensions/trunk</connection>
+    <developerConnection>scm:svn:https://jsf-extensions.dev.java.net/svn/jsf-extensions/trunk</developerConnection>
+    <url>https://jsf-extensions.dev.java.net/source/browse/jsf-extensions/</url>
+  </scm>
+
+  <build>
+    <defaultGoal>install</defaultGoal>
+    <sourceDirectory>src/main/java</sourceDirectory>
+    <resources>
+      <resource>
+        <directory>src/main/resources</directory>
+        <targetPath>resources</targetPath>
+        <includes>
+            <include>*.taglib.xml</include>
+            <include>faces-config.xml</include>
+            <include>*.js</include>
+        </includes>
+     </resource>
+   </resources>
+    <finalName>tree-visit</finalName>
+    <plugins>
+       <plugin>
+         <artifactId>maven-antrun-plugin</artifactId>
+         <executions>
+           <execution>
+             <id>source</id>
+             <phase>generate-resources</phase>
+             <configuration>
+               <tasks>
+                 <echo message="Copying properties files to WEB-INF/classes" />
+                 <copy todir="target/${project.build.finalName}/WEB-INF/classes">
+                   <fileset dir="src/main/java">
+                     <include name="**/*.properties" />
+                   </fileset>
+                 </copy>
+               </tasks>
+             </configuration>
+             <goals>
+               <goal>run</goal>
+             </goals>
+           </execution>
+         </executions>
+       </plugin>
+
+            <plugin>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>RELEASE</version>
+                <configuration>
+                    <source>1.5</source>
+                    <target>1.5</target>
+                </configuration>
+            </plugin>
+        </plugins>
+  </build>
+
+
+  <repositories>
+    <repository>
+      <snapshots />
+      <id>codecaus</id>
+      <name>codehaus</name>
+      <url>http://repository.codehaus.org</url>
+    </repository>
+    <repository>
+      <snapshots />
+      <id>java.net</id>
+      <name>Java.net Maven 1.x Repository for external projects</name>
+      <url>https://maven-repository.dev.java.net/nonav/repository</url>
+      <layout>legacy</layout>
+    </repository>
+    <repository>
+      <snapshots />
+      <id>java.net.shared</id>
+      <name>Java.net Maven 1.x Repository for glassfish dependencies</name>
+      <url>http://download.java.net/javaee5/external/shared</url>
+      <layout>legacy</layout>
+    </repository>
+    <repository>
+      <snapshots />
+      <id>ibiblio</id>
+      <url>http://www.ibiblio.org/maven2/</url>
+    </repository>
+  </repositories>
+
+  <dependencies>
+        <dependency>
+            <groupId>javax</groupId>
+            <artifactId>javaee-api</artifactId>
+            <version>6.0</version>
+            <scope>provided</scope>
+        </dependency>
+  </dependencies>
+  <reporting>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-project-info-reports-plugin</artifactId>
+        <reportSets><reportSet /></reportSets>
+      </plugin>
+       <plugin>
+         <groupId>org.apache.maven.plugins</groupId>
+         <artifactId>maven-compiler-plugin</artifactId>
+         <configuration>
+           <source>1.5</source>
+           <target>1.5</target>
+         </configuration>
+       </plugin>
+    </plugins>
+  </reporting>
+
+</project>
diff --git a/jsf-demo/sandbox/tree-visit/src/main/java/treevisit/Bean.java b/jsf-demo/sandbox/tree-visit/src/main/java/treevisit/Bean.java
new file mode 100644
index 0000000..b8a86e4
--- /dev/null
+++ b/jsf-demo/sandbox/tree-visit/src/main/java/treevisit/Bean.java
@@ -0,0 +1,281 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package treevisit;
+
+import javax.faces.context.FacesContext;
+import javax.faces.event.ActionEvent;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.EnumSet;
+import java.util.List;
+
+import java.util.logging.Logger;
+
+import javax.faces.component.UIComponent;
+import javax.faces.component.UIData;
+import javax.faces.component.UIViewRoot;
+import javax.faces.component.visit.VisitCallback;
+import javax.faces.component.visit.VisitContext;
+import javax.faces.component.visit.VisitHint;
+import javax.faces.component.visit.VisitResult;
+
+import javax.faces.event.ActionEvent;
+import javax.faces.model.SelectItem;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.SessionScoped;
+
+/**
+ * <p>This bean has the methods that are used to illustrate
+ *  the tree visitor API</p>
+ *
+ */
+
+ at ManagedBean(name="treevisit")
+ at SessionScoped
+public class Bean {
+
+    //
+    // Instance Variables
+    //
+
+    // List of SelectItems representing all client ids on the page
+    private List<SelectItem> items;
+
+    // List of ids selected by the end user
+    private List<String> selectedIds;
+
+    // List of ids visited by our partial tree visit.
+    private List<String> visitedIds;
+
+    // Just a silly data model that we can use for testing
+    // UIData tree visiting.
+    private List<RowData> testData;
+
+    // Flag indicating whether or not we should visit rendered
+    // subtrees only.
+    private boolean visitRendered;
+
+    //
+    // Constructors
+    //
+    
+    public Bean() {
+    }
+
+    // Returns a list containing a SelectItem corresponding to
+    // every component client id in this component tree.
+    public List<SelectItem> getItems() {
+
+        if (items == null)
+            items = loadItems();
+
+        return items;
+    }
+
+    // Returns the list of ids to visit
+    public List<String> getSelectedIds() {
+        return selectedIds;
+    }
+
+    // Sets the list of ids to visit
+    public void setSelectedIds(List<String> selectedIds) {
+        this.selectedIds = selectedIds;
+    }
+
+    // Returns the list of ids that were visited
+    public List<String> getVisitedIds() {
+        return visitedIds;
+    }
+
+    // Returns test data for UIData tree visit testing.
+    public List<RowData> getTestData() {
+        if (testData == null)
+            testData = loadTestData();
+
+        return testData;
+    }
+
+    // Returns whether we should visit rendered components only
+    public boolean getVisitRendered() {
+        return visitRendered;
+    }
+
+    // Sets whether we shoudl visit rendered components only
+    public void setVisitRendered(boolean visitRendered) {
+        this.visitRendered = visitRendered;
+    }
+
+
+    // ActionListener that triggers a partial visit of the
+    // selected ids.
+    public void visit(ActionEvent ae) {
+
+        // To perform a tree visit, we need three things:
+        // 1. A VisitContext
+        // 2. A VisitCallback
+        // 3. A component at which to start the visit.
+
+        // Get our VisitContext.  We use PartialVisitContext since we
+        // we only want to visit a subset of the component tree.
+        FacesContext facesContext = FacesContext.getCurrentInstance();
+        EnumSet<VisitHint> hints = getVisitRendered() ?
+            EnumSet.of(VisitHint.SKIP_UNRENDERED) : null;
+
+        // Get ths ids to visit.  Note that this must always be
+        // non-null - otherwise we do a full visit.
+        java.util.Collection<String> idsToVisit = getSelectedIds();
+        if (idsToVisit == null)
+            idsToVisit = Collections.emptyList();
+
+        VisitContext visitContext = 
+            VisitContext.createVisitContext(facesContext, idsToVisit, hints);
+
+        // Use CollectIdsVisitCallback to collect up visited ids
+        CollectIdsVisitCallback visitCallback = new CollectIdsVisitCallback();
+
+        // Start the visit at the view root
+        UIComponent viewRoot = facesContext.getViewRoot();
+
+        // Do the visit
+        viewRoot.visitTree(visitContext, visitCallback);
+
+        // And stash away the results
+        visitedIds = visitCallback.getVisitedIds();
+    }
+
+    // Loads the items - ie. the list of client ids for
+    // all components in this document.
+    private List<SelectItem> loadItems() {
+
+        FacesContext facesContext = FacesContext.getCurrentInstance();
+        assert(facesContext != null);
+
+        // We collect ids by performing a full tree visit.  So, we
+        // need a VisitContext, a VisitCallback, and a component to
+        // initiate the visit on.
+        VisitContext visitContext = VisitContext.createVisitContext(facesContext);
+        CollectIdsVisitCallback visitCallback = new CollectIdsVisitCallback();
+
+        // Visit the subtree under the "mainGrid" component to populate
+        // the visitable items list.
+        UIComponent viewRoot = facesContext.getViewRoot();
+        UIComponent mainGrid = viewRoot.findComponent("form:mainGrid");
+
+        mainGrid.visitTree(visitContext, visitCallback);
+
+        List<String> ids = visitCallback.getVisitedIds();
+        List<SelectItem> selectItems = new ArrayList<SelectItem>(ids.size());
+
+        for (String id : ids) {
+            selectItems.add(new SelectItem(id));
+        }
+
+        return selectItems;
+    }
+
+    // Load data that we use to test UIData tree visiting.
+    private List<RowData> loadTestData() {
+      List<RowData> data = new ArrayList<RowData>(5);
+
+      for (int i = 0; i < 5; i++) {
+          RowData rowData = new RowData("Row " + i);
+          data.add(rowData);
+      }
+
+      return data;
+    }
+
+    // Callback class for collecting all ids
+    static private class CollectIdsVisitCallback implements VisitCallback {
+
+        // Collect ids in the list
+        private List<String> ids = new ArrayList<String>();
+
+        // Performs the visit
+        public VisitResult visit(VisitContext context, UIComponent component) {
+
+            String clientId = component.getClientId();
+
+            // For the moment let's blow off any top-level auto-generated
+            // ids.  Facelets generates several UIInstructions components
+            // which seem to be removed from the component tree at some point.
+            // These might cause some confusion, so excluding this for our list.
+            if (!clientId.startsWith(UIViewRoot.UNIQUE_ID_PREFIX))
+                ids.add(clientId);
+
+            return VisitResult.ACCEPT;
+        }
+
+        // Returns the collected ids
+        public List<String> getVisitedIds() {
+            return ids;
+        }
+    }
+
+    // A silly little class that we use to pouplate a DataModel so
+    // that we can test UIData.treeVisit().
+    static public class RowData {
+
+        public RowData(String label) {
+            this.label = label;
+        }
+
+        // Returns the label
+        public String getLabel() {
+            return label;
+        }
+
+        // Returns a count for the number of times this
+        // row has been updated.
+        public int getCount() {
+            return count;
+        }
+
+        // Increments the count
+        public void increment(ActionEvent ae) {
+            count++;
+        }
+
+        private String label;
+        private int count;
+    }
+}
diff --git a/jsf-demo/sandbox/tree-visit/src/main/webapp/WEB-INF/web.xml b/jsf-demo/sandbox/tree-visit/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..c60fee0
--- /dev/null
+++ b/jsf-demo/sandbox/tree-visit/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,71 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<web-app version="2.5"
+         xmlns="http://java.sun.com/xml/ns/javaee"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
+
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>server</param-value>
+    </context-param>
+
+    <context-param>
+        <param-name>javax.faces.DEFAULT_SUFFIX</param-name>
+        <param-value>.xhtml</param-value>
+    </context-param>
+
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+        <url-pattern>*.jsf</url-pattern>
+    </servlet-mapping>
+
+</web-app>
diff --git a/jsf-demo/sandbox/tree-visit/src/main/webapp/home.xhtml b/jsf-demo/sandbox/tree-visit/src/main/webapp/home.xhtml
new file mode 100644
index 0000000..f7e29c2
--- /dev/null
+++ b/jsf-demo/sandbox/tree-visit/src/main/webapp/home.xhtml
@@ -0,0 +1,175 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+<f:view contentType="text/html"/>
+
+<!--
+  TODO: Add transient components to test VisitHint.SKIP_TRANSIENT.
+-->
+<h:head id="head">
+    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
+    <title>Tree Visit</title>
+</h:head>
+
+<h:body id="body">
+
+    <h:form id="form">
+        <h:panelGrid styleClass="title-panel" id="titleGrid">
+            <h:outputText value="t r e e V i s i t" styleClass="title-panel-text" 
+                          id="title"/>
+            <h:outputText value="Powered By JavaServer Faces 2.0 " 
+                          styleClass="title-panel-subtext"
+                          id="subTitle"/> 
+        </h:panelGrid>
+
+        <h:panelGrid id="mainGrid">
+            <h:outputText value="Select component ids from the listbox below and then click the 'Visit' button to perform a tree visit that includes the specified components.  The ids of the components that are reached during the tree visit are displayed below."
+              id="instructions"/>
+
+            <h:outputLabel for="componentsList" value="Components To Visit" 
+                           styleClass="subtitle"
+                           id="componentsListLabel"/>
+
+            <h:selectManyListbox value="#{treevisit.selectedIds}" id="componentsList" size="10">
+                <f:selectItems value="#{treevisit.items}"/>
+            </h:selectManyListbox>
+
+            <h:panelGroup id="visitRenderedGroup">
+                <h:selectBooleanCheckbox value="#{treevisit.visitRendered}"
+                                         id="visitRenderedCheckbox"/>
+
+                <h:outputLabel value="Visit rendered components only"
+                               for="visitRenderedCheckbox"
+                               id="visitRenderedLabel"/>
+            </h:panelGroup>
+
+            <h:commandButton value="visit" actionListener="#{treevisit.visit}"
+                             id="visitButton">
+                <f:ajax execute="form" render="form:visitedTable"/>
+            </h:commandButton>
+
+            <h:outputText value="Some NamingContainer Components" id="namingContainers"
+                          styleClass="subtitle"/>
+
+            <h:panelGrid id="subviews">
+                <f:subview id="subviewA">
+                    <h:panelGroup id="groupA">
+                        <h:outputText value="This is in subview A" id="textA"/>
+                    </h:panelGroup>
+                </f:subview>
+
+                <f:subview id="subviewB">
+                    <h:panelGroup id="groupB">
+                        <h:outputText value="This is in subview B" id="textB"/>
+                    </h:panelGroup>
+                </f:subview>
+
+                <f:subview id="nonRenderedSubview" rendered="false">
+                    <h:panelGroup id="nonRenderedGroup">
+                        <h:outputText value="This is in subview B" 
+                                      id="nonRenderedText"/>
+                    </h:panelGroup>
+                </f:subview>
+
+            </h:panelGrid>
+
+            <h:dataTable value="#{treevisit.testData}" var="row" id="testTable"
+                         border="1">
+                <h:column id="labelColumn">
+                    <f:facet name="header">
+                        <h:outputText value="Label" id="labelColumnHeader"
+                                      styleClass="subtitle"/>
+                    </f:facet>
+    
+                    <h:outputText value="#{row.label}" id="labelText"/>
+                </h:column>
+
+                <h:column id="countColumn">
+                    <f:facet name="header">
+                        <h:outputText value="Count" 
+                                      id="countColumnHeader"
+                                      styleClass="subtitle"/>
+                    </f:facet>
+    
+                    <h:outputText value="#{row.count}" id="countText"/>
+                </h:column>
+
+                <h:column id="actionsColumn">
+                    <f:facet name="header">
+                        <h:outputText value="Actions" 
+                                      id="actionsColumnHeader"
+                                      styleClass="subtitle"/>
+                    </f:facet>
+    
+                    <h:commandButton value="Increment Count" 
+                                   actionListener="#{row.increment}"
+                                   id="incrementLink">
+                        <f:ajax execute="incrementLink" render="countText"/>
+                    </h:commandButton>
+                </h:column>
+
+            </h:dataTable>
+
+        </h:panelGrid>
+
+        <h:dataTable value="#{treevisit.visitedIds}" var="visitedId" id="visitedTable">
+            <h:column id="visitedColumn">
+                <f:facet name="header">
+                    <h:outputText value="Visited Components" id="visitedColumnHeader"
+                                  styleClass="subtitle"/>
+                </f:facet>
+
+                <h:outputText value="#{visitedId}" id="visitedText"/>
+            </h:column>
+        </h:dataTable>
+
+        <h:outputStylesheet name="stylesheet.css"/>
+    </h:form>
+
+</h:body>
+
+</html>
diff --git a/jsf-demo/sandbox/tree-visit/src/main/webapp/index.html b/jsf-demo/sandbox/tree-visit/src/main/webapp/index.html
new file mode 100644
index 0000000..241e09e
--- /dev/null
+++ b/jsf-demo/sandbox/tree-visit/src/main/webapp/index.html
@@ -0,0 +1,47 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<html>
+<header>
+<meta http-equiv="Refresh" content="0;url=home.jsf">
+</header>
+</html>
diff --git a/jsf-demo/sandbox/tree-visit/src/main/webapp/resources/redwaveani.gif b/jsf-demo/sandbox/tree-visit/src/main/webapp/resources/redwaveani.gif
new file mode 100644
index 0000000..8cb5fda
Binary files /dev/null and b/jsf-demo/sandbox/tree-visit/src/main/webapp/resources/redwaveani.gif differ
diff --git a/jsf-demo/sandbox/tree-visit/src/main/webapp/resources/stylesheet.css b/jsf-demo/sandbox/tree-visit/src/main/webapp/resources/stylesheet.css
new file mode 100644
index 0000000..47adf45
--- /dev/null
+++ b/jsf-demo/sandbox/tree-visit/src/main/webapp/resources/stylesheet.css
@@ -0,0 +1,248 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+.title-panel {
+    background-image: url(redwaveani.gif.jsf);
+    height: 80px;
+    width: 1380;
+}
+
+.title-panel-text {
+    color: white;
+    font-family: 'Georgia','Times New Roman','times',serif;
+    font-size: 24px;
+    font-weight: bold;
+}
+
+.title-panel-subtext {
+    color: white;
+    font-family: 'Georgia','Times New Roman','times',serif;
+    font-size: 14px;
+    font-style: italic
+}
+
+body {
+    font-family: Arial, Helvetica, sans-serif;
+    font-size: 12px;
+}
+
+td {
+    font-family: Arial, Helvetica, sans-serif;
+    font-size: 12px;
+}
+
+th {
+    font-family: Arial, Helvetica, sans-serif;
+    font-size: 12px;
+}
+
+.bodystyle {
+    font-family: Arial, Helvetica, sans-serif;
+    font-size: 12px;
+}
+
+.small {
+    font-family: Arial, Helvetica, sans-serif;
+    font-size: 9px;
+}
+
+.medium {
+    font-family: Arial, Helvetica, sans-serif;
+    font-size: 12px;
+}
+
+.maintitle {
+    font-family: Arial, Helvetica, sans-serif;
+    font-size: 14px;
+    color: #330066;
+}
+
+.subtitle {
+    font-family: Arial, Helvetica, sans-serif;
+    font-size: 12px;
+    font-weight: bold;
+    color: #93B629;
+}
+
+.subtitlebig {
+    font-family: Arial, Helvetica, sans-serif;
+    font-size: 16px;
+    color: #93B629;
+    padding-top: 10;
+    padding-bottom: 10;
+}
+
+.big {
+    font-family: Arial, Helvetica, sans-serif;
+    font-size: 16px;
+}
+
+.xbig {
+    font-family: Arial, Helvetica, sans-serif;
+    font-size: 24px;
+}
+
+.expanded {
+    font-family: Arial, Helvetica, sans-serif;
+    font-size: 12px;
+    line-height: 24px;
+    letter-spacing: 2px;
+}
+
+.justified {
+    font-family: Arial, Helvetica, sans-serif;
+    text-align: justify;
+}
+
+.footer {
+    font-family: "Times New Roman", Times, serif;
+    font-size: 9px;
+    color: #999999;
+}
+
+.box1 {
+    padding: 3px;
+    border-width: medium;
+    border-style: solid;
+    border-color: #CCCCCC #666666 #666666 #CCCCCC;
+}
+
+.box2 {
+    font-style: italic;
+    word-spacing: 2pt;
+    padding: 3px;
+    border: 1px solid;
+}
+
+.align-left {
+    text-align: left;
+}
+
+.control-panel-border {
+    border: 5px outset red;
+}
+
+.x-button-border {
+    border: 3px outset blue;
+}
+
+.o-button-border {
+    border: 3px outset red;
+}
+
+.win-button-border {
+    border: 3px outset yellow;
+}
+
+.execute {
+    background-color: #bfefff;
+}
+
+.render {
+    border: 3px outset red;
+}
+
+.initial-render {
+    border: 3px outset green;
+}
+
+.execute-render {
+    border: 3px outset red;
+    background-color: #bfefff;
+}
+
+.keytitle {
+    font-family: Arial, Helvetica, sans-serif;
+    font-size: 16px;
+    color: #330066;
+}
+
+.options-prompt {
+    font-family: Arial, Helvetica, sans-serif;
+    font-size: 16px;
+    color: blue;
+}
+.options {
+    font-family: Arial, Helvetica, sans-serif;
+    font-size: 16px;
+    color: red;
+}
+
+
+.panel-border {
+    border: 2px outset blue;
+    background-color: #c1cdcd;
+}
+
+.panel-background {
+    background-color: #7171A5;
+    border: 5px outset #71A5A5;
+    border-collapse: collapse;
+    font-family: sans-serif;
+    font-size: 14pt;
+    padding: 10px;
+}
+
+.package-selected {
+    background-color: #93B629;
+}
+
+.package-unselected {
+    background-color: #C0C0C0;
+}
+
+.option-unselected {
+    background-color: #FFFFFF;
+}
+
+.top-table {
+    padding: 0;
+    border: 0;
+    width: 660px;
+}
+
+.storeFrontCar {
+    padding: 0;    
+    border: 0;
+}
+
+.validationMessage {
+    color: red;
+}
diff --git a/jsf-demo/test/mappingDemo/build.xml b/jsf-demo/test/mappingDemo/build.xml
new file mode 100644
index 0000000..062a455
--- /dev/null
+++ b/jsf-demo/test/mappingDemo/build.xml
@@ -0,0 +1,160 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project name="mappingDemo" default="build" basedir=".">
+
+    <property file="${user.home}/build.properties"/>
+    <property file="../../../build.properties"/>
+    <import file="${jsf.build.home}/common/ant/common.xml"/>
+
+
+    <!-- Configure the context path for this application -->
+    <property name="context.path" value="/jsf-mappingDemo"/>
+    <property name="example" value="jsf-mappingDemo"/>
+    <property name="build" value="${basedir}/build"/>
+
+    <property name="extension" value="extension"/>
+    <property name="extension.war" value="${example}-${extension}"/>
+    <property name="extension.context.path" value="/${example}-${extension}"/>
+
+    <property name="prefix" value="prefix"/>
+    <property name="prefix.war" value="${example}-${prefix}"/>
+    <property name="prefix.context.path" value="/${example}-${prefix}"/>   
+
+
+    <path id="classpath">       
+        <pathelement location="${javax.faces-api.jar}"/>
+        <pathelement location="${javax.faces.jar}"/>       
+        <pathelement location="${build}/${example}/WEB-INF/classes"/>
+        <path refid="compile.classpath"/>
+    </path>  
+
+    <target name="init">
+        <tstamp/>
+    </target>
+
+    <target name="clean">       
+        <delete dir="${build}"/>
+        <delete dir="${context.path}"/>
+    </target>   
+
+    <target name="prepare" depends="init"
+            description="Create build directories.">
+        <mkdir dir="${build}/${example}"/>
+        <mkdir dir="${build}/${example}/WEB-INF"/>
+        <mkdir dir="${build}/${example}/WEB-INF/classes"/>
+        <mkdir dir="${build}/${example}/WEB-INF/lib"/>
+    </target>       
+
+    <target name="build" depends="prepare,build-prefix-war,build-extension-war"/>
+
+    <target name="build-extension-war" depends="build-both"
+            description="Compile Java files and copy static files.">
+        <delete file="${build}/${example}/WEB-INF/web.xml"/>
+        <copy tofile="${build}/${example}/WEB-INF/web.xml">
+            <fileset dir="web/WEB-INF">
+                <include name="*${extension}.xml"/>
+            </fileset>
+        </copy>
+        <copy todir="${build}/${example}/WEB-INF">
+            <fileset dir="web/WEB-INF">
+                <include name="faces-config.xml"/>
+            </fileset>
+        </copy>
+        <jsf.war basedir="${build}"
+                 archive-name="${extension.war}"
+                 webxml="${build}/${example}/WEB-INF/web.xml">
+            <archive-elements>
+                <zipfileset dir="${build}/${example}"/>
+            </archive-elements>
+        </jsf.war>       
+    </target>
+
+    <target name="build-prefix-war" depends="build-both"
+            description="Compile Java files and copy static files.">
+        <delete file="${build}/${example}/WEB-INF/web.xml"/>
+        <copy tofile="${build}/${example}/WEB-INF/web.xml">
+            <fileset dir="web/WEB-INF">
+                <include name="*${prefix}.xml"/>
+            </fileset>
+        </copy>
+        <copy todir="${build}/${example}/WEB-INF">
+            <fileset dir="web/WEB-INF">
+                <include name="faces-config.xml"/>
+            </fileset>
+        </copy>
+        <jsf.war basedir="${build}"
+                 archive-name="${prefix.war}"
+                 webxml="${build}/${example}/WEB-INF/web.xml">
+            <archive-elements>
+                <zipfileset dir="${build}/${example}"/>
+            </archive-elements>
+        </jsf.war>          
+    </target>
+
+    <target name="build-both" depends="prepare"
+            description="Compile Java files and copy static files.">
+         <jsf.javac srcdir="src"
+                   destdir="${build}/${example}/WEB-INF/classes">
+            <classpath>
+                <path refid="classpath"/>
+            </classpath>
+        </jsf.javac>
+
+        <copy todir="${build}/${example}/">
+            <fileset dir="web">
+                <include name="*.html"/>
+                <include name="*.gif"/>
+                <include name="*.jpg"/>
+                <include name="*.jsp"/>
+                <include name="*.xml"/>
+            </fileset>
+        </copy>
+        <copy todir="${build}/${example}/WEB-INF/classes/${example}">
+            <fileset dir="web">
+                <include name="*properties"/>
+            </fileset>
+        </copy>
+
+    </target>   
+</project>
+
diff --git a/jsf-demo/test/mappingDemo/src/guessNumber/MessageFactory.java b/jsf-demo/test/mappingDemo/src/guessNumber/MessageFactory.java
new file mode 100644
index 0000000..5f0560c
--- /dev/null
+++ b/jsf-demo/test/mappingDemo/src/guessNumber/MessageFactory.java
@@ -0,0 +1,273 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package guessNumber;
+
+import javax.faces.application.Application;
+import javax.faces.application.FacesMessage;
+import javax.faces.context.FacesContext;
+
+import java.text.MessageFormat;
+import java.util.Locale;
+import java.util.MissingResourceException;
+import java.util.ResourceBundle;
+
+/**
+ * <p>supported filters: <code>package</code> and
+ * <code>protection</code>.</p>
+ */
+
+public class MessageFactory extends Object {
+
+    //
+    // Protected Constants
+    //
+
+    //
+    // Class Variables
+    //
+
+    //
+    // Instance Variables
+    //
+
+    // Attribute Instance Variables
+
+    // Relationship Instance Variables
+
+    //
+    // Constructors and Initializers    
+    //
+
+    private MessageFactory() {
+    }
+
+    //
+    // Class methods
+    //
+
+    //
+    // General Methods
+    //
+
+    public static String substituteParams(Locale locale, String msgtext,
+                                          Object params[]) {
+        String localizedStr = null;
+
+        if (params == null || msgtext == null) {
+            return msgtext;
+        }
+        StringBuffer b = new StringBuffer(100);
+        MessageFormat mf = new MessageFormat(msgtext);
+        if (locale != null) {
+            mf.setLocale(locale);
+            b.append(mf.format(params));
+            localizedStr = b.toString();
+        }
+        return localizedStr;
+    }
+
+
+    /**
+     * This version of getMessage() is used in the RI for localizing RI
+     * specific messages.
+     */
+
+    public static FacesMessage getMessage(String messageId, Object params[]) {
+        Locale locale = null;
+        FacesContext context = FacesContext.getCurrentInstance();
+        // context.getViewRoot() may not have been initialized at this point.
+        if (context != null && context.getViewRoot() != null) {
+            locale = context.getViewRoot().getLocale();
+            if (locale == null) {
+                locale = Locale.getDefault();
+            }
+        } else {
+            locale = Locale.getDefault();
+        }
+
+        return getMessage(locale, messageId, params);
+    }
+
+
+    public static FacesMessage getMessage(Locale locale, String messageId,
+                                          Object params[]) {
+        FacesMessage result = null;
+        String
+              summary = null,
+              detail = null,
+              bundleName = null;
+        ResourceBundle bundle = null;
+
+        // see if we have a user-provided bundle
+        if (null != (bundleName = getApplication().getMessageBundle())) {
+            if (null !=
+                (bundle =
+                      ResourceBundle.getBundle(bundleName, locale,
+                                               getCurrentLoader(bundleName)))) {
+                // see if we have a hit
+                try {
+                    summary = bundle.getString(messageId);
+                } catch (MissingResourceException e) {
+                }
+            }
+        }
+
+        // we couldn't find a summary in the user-provided bundle
+        if (null == summary) {
+            // see if we have a summary in the app provided bundle
+            bundle = ResourceBundle.getBundle(FacesMessage.FACES_MESSAGES,
+                                              locale,
+                                              getCurrentLoader(bundleName));
+            if (null == bundle) {
+                throw new NullPointerException();
+            }
+            // see if we have a hit
+            try {
+                summary = bundle.getString(messageId);
+            } catch (MissingResourceException e) {
+            }
+        }
+
+        // we couldn't find a summary anywhere!  Return null
+        if (null == summary) {
+            return null;
+        }
+
+        // At this point, we have a summary and a bundle.
+        if (null == summary || null == bundle) {
+            throw new NullPointerException();
+        }
+        summary = substituteParams(locale, summary, params);
+
+        try {
+            detail = substituteParams(locale,
+                                      bundle.getString(messageId + "_detail"),
+                                      params);
+        } catch (MissingResourceException e) {
+        }
+
+        return (new FacesMessage(summary, detail));
+    }
+
+
+    //
+    // Methods from MessageFactory
+    // 
+    public static FacesMessage getMessage(FacesContext context,
+                                          String messageId) {
+        return getMessage(context, messageId, null);
+    }
+
+
+    public static FacesMessage getMessage(FacesContext context,
+                                          String messageId,
+                                          Object params[]) {
+        if (context == null || messageId == null) {
+            throw new NullPointerException(
+                  "One or more parameters could be null");
+        }
+        Locale locale = null;
+        // viewRoot may not have been initialized at this point.
+        if (context != null && context.getViewRoot() != null) {
+            locale = context.getViewRoot().getLocale();
+        } else {
+            locale = Locale.getDefault();
+        }
+        if (null == locale) {
+            throw new NullPointerException();
+        }
+        FacesMessage message = getMessage(locale, messageId, params);
+        if (message != null) {
+            return message;
+        }
+        locale = Locale.getDefault();
+        return (getMessage(locale, messageId, params));
+    }
+
+
+    public static FacesMessage getMessage(FacesContext context,
+                                          String messageId,
+                                          Object param0) {
+        return getMessage(context, messageId, new Object[]{param0});
+    }
+
+
+    public static FacesMessage getMessage(FacesContext context,
+                                          String messageId,
+                                          Object param0, Object param1) {
+        return getMessage(context, messageId, new Object[]{param0, param1});
+    }
+
+
+    public static FacesMessage getMessage(FacesContext context,
+                                          String messageId,
+                                          Object param0, Object param1,
+                                          Object param2) {
+        return getMessage(context, messageId,
+                          new Object[]{param0, param1, param2});
+    }
+
+
+    public static FacesMessage getMessage(FacesContext context,
+                                          String messageId,
+                                          Object param0, Object param1,
+                                          Object param2, Object param3) {
+        return getMessage(context, messageId,
+                          new Object[]{param0, param1, param2, param3});
+    }
+
+
+    protected static Application getApplication() {
+        return (FacesContext.getCurrentInstance().getApplication());
+    }
+
+
+    protected static ClassLoader getCurrentLoader(Object fallbackClass) {
+        ClassLoader loader =
+              Thread.currentThread().getContextClassLoader();
+        if (loader == null) {
+            loader = fallbackClass.getClass().getClassLoader();
+        }
+        return loader;
+    }
+
+
+} // end of class MessageFactory
diff --git a/jsf-demo/test/mappingDemo/src/guessNumber/UserNumberBean.java b/jsf-demo/test/mappingDemo/src/guessNumber/UserNumberBean.java
new file mode 100644
index 0000000..638362e
--- /dev/null
+++ b/jsf-demo/test/mappingDemo/src/guessNumber/UserNumberBean.java
@@ -0,0 +1,201 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package guessNumber;
+
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.validator.LongRangeValidator;
+import javax.faces.validator.Validator;
+import javax.faces.validator.ValidatorException;
+
+import java.util.Random;
+
+public class UserNumberBean {
+
+    Integer userNumber = null;
+    Integer randomInt = null;
+    String response = null;
+
+
+    public UserNumberBean() {
+        Random randomGR = new Random();
+        randomInt = new Integer(randomGR.nextInt(10));
+        System.out.println("Duke's number: " + randomInt);
+    }
+
+
+    public void setUserNumber(Integer user_number) {
+        userNumber = user_number;
+        System.out.println("Set userNumber " + userNumber);
+    }
+
+
+    public Integer getUserNumber() {
+        System.out.println("get userNumber " + userNumber);
+        return userNumber;
+    }
+
+
+    public String getResponse() {
+        if (userNumber != null && userNumber.compareTo(randomInt) == 0) {
+            return "Yay! You got it!";
+        } else {
+            return "Sorry, " + userNumber + " is incorrect.";
+        }
+    }
+
+
+    protected String[] status = null;
+
+
+    public String[] getStatus() {
+        return status;
+    }
+
+
+    public void setStatus(String[] newStatus) {
+        status = newStatus;
+    }
+
+
+    private int maximum = 0;
+    private boolean maximumSet = false;
+
+
+    public int getMaximum() {
+        return (this.maximum);
+    }
+
+
+    public void setMaximum(int maximum) {
+        this.maximum = maximum;
+        this.maximumSet = true;
+    }
+
+
+    private int minimum = 0;
+    private boolean minimumSet = false;
+
+
+    public int getMinimum() {
+        return (this.minimum);
+    }
+
+
+    public void setMinimum(int minimum) {
+        this.minimum = minimum;
+        this.minimumSet = true;
+    }
+
+
+    public void validate(FacesContext context,
+                         UIComponent component,
+                         Object value) throws ValidatorException {
+
+        if ((context == null) || (component == null)) {
+            throw new NullPointerException();
+        }
+        if (value != null) {
+            try {
+                int converted = intValue(value);
+                if (maximumSet &&
+                    (converted > maximum)) {
+                    if (minimumSet) {
+                        throw new ValidatorException(MessageFactory.getMessage
+                              (context,
+                               Validator.NOT_IN_RANGE_MESSAGE_ID,
+                               new Object[]{
+                                     new Integer(minimum),
+                                     new Integer(maximum)
+                               }));
+
+                    } else {
+                        throw new ValidatorException(MessageFactory.getMessage
+                              (context,
+                               LongRangeValidator.MAXIMUM_MESSAGE_ID,
+                               new Object[]{
+                                     new Integer(maximum)
+                               }));
+                    }
+                }
+                if (minimumSet &&
+                    (converted < minimum)) {
+                    if (maximumSet) {
+                        throw new ValidatorException(MessageFactory.getMessage
+                              (context,
+                               Validator.NOT_IN_RANGE_MESSAGE_ID,
+                               new Object[]{
+                                     new Double(minimum),
+                                     new Double(maximum)
+                               }));
+
+                    } else {
+                        throw new ValidatorException(MessageFactory.getMessage
+                              (context,
+                               LongRangeValidator.MINIMUM_MESSAGE_ID,
+                               new Object[]{
+                                     new Integer(minimum)
+                               }));
+                    }
+                }
+            } catch (NumberFormatException e) {
+                throw new ValidatorException(MessageFactory.getMessage
+                      (context,
+                       LongRangeValidator.TYPE_MESSAGE_ID));
+            }
+        }
+
+    }
+
+
+    private int intValue(Object attributeValue)
+          throws NumberFormatException {
+
+        if (attributeValue instanceof Number) {
+            return (((Number) attributeValue).intValue());
+        } else {
+            return (Integer.parseInt(attributeValue.toString()));
+        }
+
+    }
+
+
+}
diff --git a/jsf-demo/test/mappingDemo/web/WEB-INF/faces-config.xml b/jsf-demo/test/mappingDemo/web/WEB-INF/faces-config.xml
new file mode 100644
index 0000000..9864ea9
--- /dev/null
+++ b/jsf-demo/test/mappingDemo/web/WEB-INF/faces-config.xml
@@ -0,0 +1,117 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd"
+    version="1.2">
+
+  <application>
+    <locale-config>
+      <default-locale>en</default-locale>
+      <supported-locale>de</supported-locale>
+      <supported-locale>fr</supported-locale>
+      <supported-locale>es</supported-locale>
+    </locale-config>
+  </application>
+
+  <navigation-rule>
+    <description>
+        The decision rule used by the NavigationHandler to
+        determine which view must be displayed after the
+        current view, greeting.jsp is processed.
+    </description>
+    <from-view-id>/greeting.jsp</from-view-id>
+    <navigation-case>
+        <description>
+            Indicates to the NavigationHandler that the response.jsp
+            view must be displayed if the Action referenced by a 
+            UICommand component on the greeting.jsp view returns 
+            the outcome "success".
+        </description>
+      <from-outcome>success</from-outcome>
+      <to-view-id>/response.jsp</to-view-id>
+    </navigation-case>
+  </navigation-rule>
+
+  <navigation-rule>
+   <description>
+        The decision rules used by the NavigationHandler to
+        determine which view must be displayed after the
+        current view, response.jsp is processed.
+    </description>
+    <from-view-id>/response.jsp</from-view-id>
+    <navigation-case>
+        <description>
+            Indicates to the NavigationHandler that the greeting.jsp
+            view must be displayed if the Action referenced by a 
+            UICommand component on the response.jsp view returns 
+            the outcome "success".
+        </description>
+        <from-outcome>success</from-outcome>
+      <to-view-id>/greeting.jsp</to-view-id>
+    </navigation-case>
+  </navigation-rule>
+
+  <managed-bean>
+    <description>
+      The "backing file" bean that backs up the guessNumber webapp
+    </description>
+    <managed-bean-name>UserNumberBean</managed-bean-name>
+    <managed-bean-class>guessNumber.UserNumberBean</managed-bean-class>
+    <managed-bean-scope>session</managed-bean-scope>
+    <managed-property>
+      <property-name>minimum</property-name>
+      <property-class>java.lang.Long</property-class>
+      <value>0</value>
+    </managed-property>
+    <managed-property>
+      <property-name>maximum</property-name>
+      <property-class>java.lang.Long</property-class>
+      <value>10</value>
+    </managed-property>
+
+  </managed-bean>
+
+
+</faces-config>
diff --git a/jsf-demo/test/mappingDemo/web/WEB-INF/web.extension.xml b/jsf-demo/test/mappingDemo/web/WEB-INF/web.extension.xml
new file mode 100644
index 0000000..f18d35a
--- /dev/null
+++ b/jsf-demo/test/mappingDemo/web/WEB-INF/web.extension.xml
@@ -0,0 +1,83 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<web-app version="2.5"
+         xmlns="http://java.sun.com/xml/ns/javaee"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" >
+    
+    <display-name>JavaServer Faces Guess Number Sample Application</display-name>
+    <description>
+        JavaServer Faces Guess Number Sample Application
+    </description>
+
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>client</param-value>
+    </context-param>
+
+    <context-param>
+        <param-name>javax.faces.application.CONFIG_FILES</param-name>
+        <param-value>/WEB-INF/faces-config.xml</param-value>
+    </context-param>
+
+    <context-param>
+        <param-name>com.sun.faces.validateXml</param-name>
+        <param-value>true</param-value>
+    </context-param>    
+
+    <!-- Faces Servlet -->
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup> 1 </load-on-startup>
+    </servlet>
+
+
+    <!-- Faces Servlet Mapping -->
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>*.faces</url-pattern>
+    </servlet-mapping>
+
+</web-app>
diff --git a/jsf-demo/test/mappingDemo/web/WEB-INF/web.prefix.xml b/jsf-demo/test/mappingDemo/web/WEB-INF/web.prefix.xml
new file mode 100644
index 0000000..5d9d86f
--- /dev/null
+++ b/jsf-demo/test/mappingDemo/web/WEB-INF/web.prefix.xml
@@ -0,0 +1,83 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<web-app version="2.5"
+         xmlns="http://java.sun.com/xml/ns/javaee"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" >
+    
+    <display-name>JavaServer Faces Guess Number Sample Application</display-name>
+    <description>
+        JavaServer Faces Guess Number Sample Application
+    </description>
+
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>client</param-value>
+    </context-param>
+
+    <context-param>
+        <param-name>javax.faces.application.CONFIG_FILES</param-name>
+        <param-value>/WEB-INF/faces-config.xml</param-value>
+    </context-param>
+
+    <context-param>
+        <param-name>com.sun.faces.validateXml</param-name>
+        <param-value>true</param-value>
+    </context-param>   
+
+    <!-- Faces Servlet -->
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup> 1 </load-on-startup>
+    </servlet>
+
+
+    <!-- Faces Servlet Mapping -->
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/guess/*</url-pattern>
+    </servlet-mapping>
+
+</web-app>
diff --git a/jsf-demo/test/mappingDemo/web/greeting.jsp b/jsf-demo/test/mappingDemo/web/greeting.jsp
new file mode 100644
index 0000000..19c903a
--- /dev/null
+++ b/jsf-demo/test/mappingDemo/web/greeting.jsp
@@ -0,0 +1,66 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<HTML>
+    <HEAD> <title>Hello</title> </HEAD>
+    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
+    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+    <body bgcolor="white">
+    <f:view>
+    <h:form id="helloForm" >
+      <h2>Hi. My name is Duke.  I'm thinking of a number from
+      <h:outputText value="#{UserNumberBean.minimum}"/> to
+      <h:outputText value="#{UserNumberBean.maximum}"/>.  Can you guess
+      it?</h2>
+
+        <h:graphicImage id="waveImg" url="/wave.med.gif" />
+  	<h:inputText id="userNo" value="#{UserNumberBean.userNumber}"
+                      validator="#{UserNumberBean.validate}"/>          
+	 <h:commandButton id="submit" action="success" value="Submit" />
+         <p>
+	 <h:message style="color: red; font-family: 'New Century Schoolbook', serif; font-style: oblique; text-decoration: overline" id="errors1" for="userNo"/>
+
+    </h:form>
+    </f:view>
+</HTML>  
diff --git a/jsf-demo/test/mappingDemo/web/index.html b/jsf-demo/test/mappingDemo/web/index.html
new file mode 100644
index 0000000..acacd72
--- /dev/null
+++ b/jsf-demo/test/mappingDemo/web/index.html
@@ -0,0 +1,58 @@
+<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2004-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<html>
+<head>
+</head>
+<body>
+
+This is a web application that tests the same navigation view files using either extension mapping or prefix mapping as defined in the web.xml.
+
+<hr>
+If this is an extension mapping web application this link will work: <a href="greeting.faces">greeting.faces</a>
+<br>
+If this is a prefix mapping web application this link will work: <a href="guess/greeting.jsp">guess/greeting.jsp</a>
+<hr>
+
+</body>
+</html>
diff --git a/jsf-demo/test/mappingDemo/web/response.jsp b/jsf-demo/test/mappingDemo/web/response.jsp
new file mode 100644
index 0000000..77e5581
--- /dev/null
+++ b/jsf-demo/test/mappingDemo/web/response.jsp
@@ -0,0 +1,59 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<HTML>
+    <HEAD> <title>Guess The Number</title> </HEAD>
+    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
+    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+    <body bgcolor="white">
+    <f:view>
+    <h:form id="responseForm" >
+        <h:graphicImage id="waveImg" url="/wave.med.gif" />
+    <h2><h:outputText id="result" 
+    			value="#{UserNumberBean.response}"/></h2>   
+    <h:commandButton id="back" value="Back" action="success"/><p>
+
+    </h:form>
+    </f:view>
+ </HTML>
diff --git a/jsf-demo/test/mappingDemo/web/wave.med.gif b/jsf-demo/test/mappingDemo/web/wave.med.gif
new file mode 100644
index 0000000..70b7cff
Binary files /dev/null and b/jsf-demo/test/mappingDemo/web/wave.med.gif differ
diff --git a/jsf-demo/test/tests/com/sun/faces/demotest/HtmlUnitTestCase.java b/jsf-demo/test/tests/com/sun/faces/demotest/HtmlUnitTestCase.java
new file mode 100644
index 0000000..110f062
--- /dev/null
+++ b/jsf-demo/test/tests/com/sun/faces/demotest/HtmlUnitTestCase.java
@@ -0,0 +1,228 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.demotest;
+
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import com.gargoylesoftware.htmlunit.Page;
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlElement;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlInput;
+import junit.framework.TestCase;
+
+
+public class HtmlUnitTestCase extends TestCase {
+
+    // target host
+    protected String host;
+
+    // target port
+    protected String port;
+
+    // target context
+    protected String context;
+
+    // The WebClient instance for this test case
+    protected WebClient client = null;
+
+    // The current session identifier
+    protected String sessionId = null;
+
+
+    //
+    // Test Methods
+    //
+    protected void setUp() throws Exception {
+        host = System.getProperty("host");
+        port = System.getProperty("port");
+        context = System.getProperty("context.path");
+        client = new WebClient();
+        super.setUp();
+    }
+
+
+    // Utility method to strip jsessionid information from values.
+    // Servlet specification doesn't disallow a path from being
+    // encoded even if the client is using cookies.
+    protected String stripJsessionInfo(String value) {
+        int idx = value.indexOf(";jsessionid");
+        if (idx != -1) {
+            return value.substring(0, idx);
+        }
+        return value;
+    }
+
+
+    // Get the initial page of the target application
+    protected Page getInitialPage() throws Exception {
+        WebClient client = new WebClient();
+        client.setRedirectEnabled(true);
+        return client.getPage(new URL("http://" + host + ":" + port + context));
+    }
+
+
+    /**
+     * <p>Return the page for the specified context-relative path,
+     * maintaining session affinity if <code>sessionId</code> is not null.</p>
+     *
+     * @param path Context-relative part of the path
+     */
+    protected HtmlPage getPage(String path) throws Exception {       
+
+        /* Cookies seem to be maintained automatically now
+        if (sessionId != null) {
+            //            System.err.println("Joining   session " + sessionId);
+            client.addRequestHeader("Cookie", "JSESSIONID=" + sessionId);
+        }
+        */
+        HtmlPage page = (HtmlPage) client.getPage(getURL(path));
+        if (sessionId == null) {
+            parseSession(page);
+        }
+        return (page);
+
+    }
+
+
+    /**
+     * <p>Return a <code>URL</code> for the specified context-relative
+     * path.</p>
+     *
+     * @param path Context relative path
+     */
+    protected URL getURL(String path) throws Exception {
+
+        StringBuffer sb = new StringBuffer("http://");
+        sb.append(host);
+        if (null != port) {
+            sb.append(":" + port);
+        }
+        sb.append(context);
+        sb.append(path);
+        return (new URL(sb.toString()));
+
+    }
+
+
+    /**
+     * <p>Parse and save any session identifier from the specified page.</p>
+     *
+     * @param page The current page
+     */
+    protected void parseSession(HtmlPage page) {
+
+        String value =
+              page.getWebResponse().getResponseHeaderValue("Set-Cookie");
+        if (value == null) {
+            return;
+        }
+        int equals = value.indexOf("JSESSIONID=");
+        if (equals < 0) {
+            return;
+        }
+        value = value.substring(equals + "JSESSIONID=".length());
+        int semi = value.indexOf(";");
+        if (semi >= 0) {
+            value = value.substring(0, semi);
+        }
+        sessionId = value;
+        //        System.err.println("Beginning session " + sessionId);
+
+    }
+
+
+    /** Added due to API change in HtmlUnit. */
+    protected List getAllElementsOfGivenClass(HtmlPage page, List list,
+                                              Class matchClass) {
+
+        return getAllElementsOfGivenClass(page.getDocumentElement(),
+                                          list,
+                                          matchClass);
+
+    }
+
+
+    /**
+     * Depth first search from root to find all children that are
+     * instances of HtmlInput.  Add them to the list.
+     */
+    protected List getAllElementsOfGivenClass(HtmlElement root, List list,
+                                              Class matchClass) {
+        if (null == root) {
+            return list;
+        }
+        if (null == list) {
+            list = new ArrayList();
+        }
+        for (HtmlElement element : root.getAllHtmlChildElements()) {
+            getAllElementsOfGivenClass(element, list, matchClass);
+        }
+        if (matchClass.isInstance(root)) {
+            if (!list.contains(root)) {
+                list.add(root);
+            }
+        }
+        return list;
+    }
+
+    protected HtmlInput getInputContainingGivenId(HtmlPage root,
+                                                  String id) {
+        List list;
+        int i;
+        HtmlInput result = null;
+
+        list = getAllElementsOfGivenClass(root, null, HtmlInput.class);
+        for (i = 0; i < list.size(); i++) {
+            result = (HtmlInput) list.get(i);
+            if (-1 != result.getIdAttribute().indexOf(id)) {
+                break;
+            }
+            result = null;
+        }
+        return result;
+
+    }
+
+}
diff --git a/jsf-demo/test/tests/com/sun/faces/demotest/cardemo/TestCarDemo.java b/jsf-demo/test/tests/com/sun/faces/demotest/cardemo/TestCarDemo.java
new file mode 100644
index 0000000..5f7b30b
--- /dev/null
+++ b/jsf-demo/test/tests/com/sun/faces/demotest/cardemo/TestCarDemo.java
@@ -0,0 +1,336 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.demotest.cardemo;
+
+import java.util.Iterator;
+import java.util.List;
+import java.util.Locale;
+import java.util.ResourceBundle;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import com.gargoylesoftware.htmlunit.html.HtmlCheckBoxInput;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import com.gargoylesoftware.htmlunit.html.HtmlTableDataCell;
+import com.sun.faces.demotest.HtmlUnitTestCase;
+
+/**
+ * <p>Assumptions: the app is localized for four locales, English,
+ * German, French, Spanish.</p>
+ */
+
+public class TestCarDemo extends HtmlUnitTestCase {
+    
+    private static final Logger LOGGER = Logger.getLogger("com.sun.faces.demotest.cardemo");    
+
+    public TestCarDemo() {
+    }
+
+
+    protected ResourceBundle resources = null;
+    protected String[] carBundleNames = {
+          "carstore.bundles.Jalopy",
+          "carstore.bundles.Luxury",
+          "carstore.bundles.Roadster",
+          "carstore.bundles.SUV"
+    };
+    protected String[] packageLabelKeys = {
+          "Custom",
+          "Standard",
+          "Performance",
+          "Deluxe"
+    };
+
+    protected ResourceBundle[] carBundles = null;
+
+    // PENDING: find a way to cause the WebClient's Accept_Charset
+    // header to be set so we can test the locale calculation algorithm.
+
+    /**
+     * <p>Load the main page.  Assumptions: there are exactly four
+     * buttons, in a certain order, to select each locale.  For each
+     * button, press it, and call doStoreFront() on the result.</p>
+     */
+
+    public void testCarDemo() throws Exception {       
+       
+        Locale[] locales = {
+              Locale.ENGLISH,
+              Locale.GERMAN,
+              Locale.FRENCH,
+              new Locale("es", "")
+        };
+
+        for (int i = 0; i < locales.length; i++) {
+            resources = ResourceBundle.getBundle("carstore.bundles.Resources",
+                                                 locales[i]);
+            carBundles =
+                  new ResourceBundle[carBundleNames.length];
+            for (int j = 0; j < carBundleNames.length; j++) {
+                carBundles[j] =
+                      ResourceBundle.getBundle(carBundleNames[j], locales[i]);
+            }
+
+            HtmlSubmitInput button =
+                  (HtmlSubmitInput) getAllElementsOfGivenClass(((HtmlPage) getInitialPage()),
+                                                               null,
+                                                               HtmlSubmitInput.class)
+                        .get(i);
+            if (LOGGER.isLoggable(Level.FINE)) {
+                LOGGER.fine("Running test for language: " + button.asText());
+            }
+            doStoreFront((HtmlPage) button.click());
+        }
+    }
+
+
+    /**
+     * <p>Assumptions: there are exactly four buttons on this page, one
+     * for each car model.</p>
+     * <p/>
+     * <p>Verify that all of the expected cars have their descriptions
+     * on the page.</p>
+     * <p/>
+     * <p>Verify that the text of the "more" button is properly
+     * localized.</p>
+     * <p/>
+     * <p>Press the button for each model and execute doCarDetail() on
+     * the result.</p>
+     */
+
+    public void doStoreFront(HtmlPage storeFront) throws Exception {
+        HtmlSubmitInput button = null;
+        HtmlTableDataCell cell = null;
+        String
+              description = null,
+              moreButton = null;
+        Iterator iter = null;
+        boolean found = false;
+        int i;
+
+        assertNotNull(storeFront);
+
+        List
+              cells = getAllElementsOfGivenClass(storeFront, null,
+                                                 HtmlTableDataCell.class),
+              buttons = getAllElementsOfGivenClass(storeFront, null,
+                                                   HtmlSubmitInput.class);
+
+        // verify the expected descriptions are present
+
+        for (i = 0; i < carBundles.length; i++) {
+            iter = cells.iterator();
+            description = carBundles[i].getString("description").trim();
+            while (iter.hasNext()) {
+                cell = (HtmlTableDataCell) iter.next();
+                if (-1 != cell.asText().indexOf(description)) {
+                    if (LOGGER.isLoggable(Level.FINE)) {
+                        LOGGER.fine("Found description " + description + ".");
+                    }
+                    found = true;
+                    break;
+                }
+            }
+        }
+        assertTrue("Did not find description: " + description, found);
+
+        iter = buttons.iterator();
+        moreButton = resources.getString("moreButton").trim();
+        while (iter.hasNext()) {
+            button = (HtmlSubmitInput) iter.next();
+            assertTrue(-1 !=
+                       button.asText().indexOf(moreButton));
+            if (LOGGER.isLoggable(Level.FINE)) {
+                LOGGER.fine("Button text of " + moreButton + " confirmed.");
+            }
+            doCarDetail((HtmlPage) button.click());
+        }
+
+    }
+
+
+    /**
+     * <p>Assumptions: Each of the package buttons causes an increase in
+     * base price over the previous button, in order.</p>
+     */
+
+    public void doCarDetail(HtmlPage carDetail) throws Exception {
+        assertNotNull(carDetail);
+        int
+              previousPrice = 0,
+              basePrice = getNumberNearLabel("basePriceLabel", carDetail),
+              currentPrice = getNumberNearLabel("yourPriceLabel", carDetail);
+        List buttons = getAllElementsOfGivenClass(carDetail, null,
+                                                  HtmlSubmitInput.class);
+        HtmlSubmitInput button = null;
+        int i = 0;
+        String label = null;
+        Iterator iter = null;
+
+        assertEquals(basePrice, currentPrice);
+
+        if (LOGGER.isLoggable(Level.FINE)) {
+            LOGGER.fine("No package selected: base price: " + basePrice +
+                      " current price: " + currentPrice);
+        }
+
+        // press each of the package buttons and see that the price
+        // increases for each one.
+        for (i = 0; i < packageLabelKeys.length; i++) {
+            previousPrice = currentPrice;
+            iter = buttons.iterator();
+            label = resources.getString(packageLabelKeys[i]).trim();
+            while (iter.hasNext()) {
+                button = (HtmlSubmitInput) iter.next();
+                // if this is the button we're looking for
+                if (-1 != (button.asText().indexOf(label))) {
+                    // press it
+                    carDetail = (HtmlPage) button.click();
+                    // resample yourPrice
+                    currentPrice = getNumberNearLabel("yourPriceLabel",
+                                                      carDetail);
+                    if (LOGGER.isLoggable(Level.FINE)) {
+                        LOGGER.fine("Package: " + label + " currentPrice: " +
+                                  currentPrice);
+                    }
+
+                    assertTrue(previousPrice < currentPrice);
+                    break;
+                }
+            }
+        }
+
+        // press the "performance" button and see that some of the
+        // checkboxes are disabled.
+        HtmlCheckBoxInput checkbox = null;
+        List checkboxes = null;
+        Iterator checkboxIter = null;
+        boolean foundDisabled = false;
+        String disabledValue = null;
+        iter = buttons.iterator();
+        while (iter.hasNext()) {
+            button = (HtmlSubmitInput) iter.next();
+            // 2 is the index for the "performance" label
+            label = resources.getString(packageLabelKeys[2]).trim();
+            // if this is the button we're looking for
+            if (-1 != (button.asText().indexOf(label))) {
+                // press it
+                carDetail = (HtmlPage) button.click();
+                checkboxes =
+                      getAllElementsOfGivenClass(carDetail, null,
+                                                 HtmlCheckBoxInput.class);
+                // verify that at least one of the checkboxes are
+                // disabled.
+                checkboxIter = checkboxes.iterator();
+                while (checkboxIter.hasNext()) {
+                    checkbox = (HtmlCheckBoxInput) checkboxIter.next();
+                    if (null != (disabledValue =
+                          checkbox.getDisabledAttribute())) {
+                        if (LOGGER.isLoggable(Level.FINE)) {
+                            LOGGER.fine("Checkbox disabled: " + disabledValue);
+                        }
+                        foundDisabled = true;
+                    }
+                    break;
+                }
+            }
+            if (foundDisabled) {
+                break;
+            }
+        }
+        assertTrue(foundDisabled);
+    }
+
+
+    protected int getNumberNearLabel(String label, HtmlPage page) {
+        List cells;
+        Iterator iter = null;
+        HtmlTableDataCell cell = null;
+        String yourPrice = null;
+        int result = Integer.MIN_VALUE;
+
+        cells = getAllElementsOfGivenClass(page, null,
+                                           HtmlTableDataCell.class);
+        iter = cells.iterator();
+        yourPrice = resources.getString(label).trim();
+        // look in the current or next cell for the price data.
+        while (iter.hasNext()) {
+            cell = (HtmlTableDataCell) iter.next();
+            if (-1 != cell.asText().indexOf(yourPrice)) {
+                if (Integer.MIN_VALUE !=
+                    (result = extractNumberFromText(cell.asText().trim()))) {
+                    return result;
+                }
+                // try the next cell
+                cell = (HtmlTableDataCell) iter.next();
+                if (Integer.MIN_VALUE !=
+                    (result = extractNumberFromText(cell.asText().trim()))) {
+                    return result;
+                }
+            }
+        }
+        return Integer.MIN_VALUE;
+    }
+
+
+    protected int extractNumberFromText(String content) {
+        char[] chars = null;
+        chars = content.toCharArray();
+        String number = null;
+        int i, j;
+        for (i = 0; i < chars.length; i++) {
+            if (Character.isDigit(chars[i])) {
+                for (j = i; j < chars.length; j++) {
+                    if (Character.isWhitespace(chars[j])) {
+                        break;
+                    }
+                }
+                number = content.substring(i, j);
+                return Integer.valueOf(number).intValue();
+            }
+        }
+        return Integer.MIN_VALUE;
+    }
+
+
+} // end of class DemoTest01
+    
diff --git a/jsf-demo/test/tests/com/sun/faces/demotest/components/TestComponents.java b/jsf-demo/test/tests/com/sun/faces/demotest/components/TestComponents.java
new file mode 100644
index 0000000..01753d6
--- /dev/null
+++ b/jsf-demo/test/tests/com/sun/faces/demotest/components/TestComponents.java
@@ -0,0 +1,319 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.demotest.components;
+
+import java.util.Iterator;
+
+import com.gargoylesoftware.htmlunit.ElementNotFoundException;
+import com.gargoylesoftware.htmlunit.ScriptResult;
+import com.gargoylesoftware.htmlunit.html.HtmlAnchor;
+import com.gargoylesoftware.htmlunit.html.HtmlArea;
+import com.gargoylesoftware.htmlunit.html.HtmlElement;
+import com.gargoylesoftware.htmlunit.html.HtmlForm;
+import com.gargoylesoftware.htmlunit.html.HtmlHiddenInput;
+import com.gargoylesoftware.htmlunit.html.HtmlInput;
+import com.gargoylesoftware.htmlunit.html.HtmlMap;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlTable;
+import com.sun.faces.demotest.HtmlUnitTestCase;
+
+public class TestComponents extends HtmlUnitTestCase {
+
+
+    /*
+     * test the image map component
+     */
+    public void testImageMap() throws Exception {
+        String[] welcomeTexts = {
+              "Welcome",
+              "Bienvenido",
+              "Tervetuloa",
+              "Wilkommen",
+              "Bienvenue"
+        };
+
+        String[] lang = {
+              "NAmerica",
+              "SAmerica",
+              "Finland",
+              "Germany",
+              "France"
+        };
+
+        HtmlPage mapPage = null;
+        HtmlForm form = null;
+        HtmlMap map = null;
+        HtmlArea area = null;
+        String onClick = null;
+        ScriptResult result = null;
+        mapPage = accessAppAndGetPage("imagemap.faces");
+        form = (HtmlForm) mapPage.getForms().get(0);
+        map = (HtmlMap) form.getHtmlElementsByTagName("map").get(0);
+
+        for (int i = 0, len = welcomeTexts.length; i < len; i++) {
+
+            area = (HtmlArea) map.getHtmlElementsByTagName("area").get(i);
+            mapPage = area.click();
+            //onClick = area.getOnClickAttribute();
+            //result = mapPage.executeJavaScriptIfPossible(onClick,
+            //                                             onClick,
+            //                                             false,
+            //                                             area);
+            //mapPage = (HtmlPage) result.getNewPage();
+
+            assertTrue(
+                  -1 != getImageMapWelcomeText(mapPage)
+                        .indexOf(welcomeTexts[i]));
+        }
+
+    }
+
+
+    public void testTree() throws Exception {
+        HtmlPage page = accessAppAndGetPage("menu.faces");
+        assertNotNull(page);
+        page = executeTreeTest(page, "2");
+        page = executeTreeTest(page, "3");
+        page = executeTreeTest(page, "4");
+        // PENDING(): would like to be able to use a regex for
+        // getFirstAnchorByText.  That would enable the "img link" case
+        // to work.  For now, skip it.
+        // page = executeTreeTest(page, "5");
+    }
+
+
+    public void testResultSet() throws Exception {
+        HtmlPage page = accessAppAndGetPage("result-set.faces");
+        HtmlAnchor anchor = null;
+        assertNotNull(page);
+        page = executeResultSet(page, "2", "3");
+        //"-1" is action value for "Next"
+        page = executeResultSet(page, "5", "-1");
+        //"-2" is action value for "Previous"
+        page = executeResultSet(page, "10", "-2");
+        //stay on same page
+        page = executeResultSet(page, "10", "10");
+    }
+
+
+    public void testTabbedPane() throws Exception {
+        HtmlPage page = accessAppAndGetPage("tabbedpanes.faces");
+        assertNotNull(page);
+        //tab 1
+        page = executeTabbedPane(page, "j_id_id19:j_id_id29");
+        //tab 2
+        page = executeTabbedPane(page, "j_id_id19:j_id_id47");
+        //tab3
+        page = executeTabbedPane(page, "j_id_id19:j_id_id89");
+    }
+
+
+    protected HtmlPage executeTreeTest(HtmlPage page,
+                                       String treeNum) throws Exception {
+        HtmlAnchor anchor = null;
+        HtmlForm form = (HtmlForm) page.getForms().get(0);
+        assertNotNull(form);
+        HtmlHiddenInput hidden = null;
+
+        // verify that clicking on the "File " + treeNum link causes the
+        // menu choices of that menu to disappear.
+        anchor = page.getFirstAnchorByText("File " + treeNum);
+        assertNotNull(anchor);
+        // simulate the link being clicked
+        hidden = (HtmlHiddenInput) form.getInputByName("j_id_id15:menu" +
+                                                       treeNum);
+        assertNotNull(hidden);
+        hidden.setValueAttribute("/File");
+        page = (HtmlPage) form.submit(null);
+
+        // verify the "File " + treeNum menu disappears
+        try {
+            anchor = page.getFirstAnchorByText("New " + treeNum);
+            assertTrue(false);
+        } catch (ElementNotFoundException e) {
+            assertTrue(true);
+        }
+
+        // verify that clicking on the "File " + treeNum link again,
+        // causes the menu to re-appear.
+        anchor = page.getFirstAnchorByText("File " + treeNum);
+        assertNotNull(anchor);
+        // simulate the link being clicked
+        hidden = (HtmlHiddenInput) form.getInputByName("j_id_id15:menu" +
+                                                       treeNum);
+        assertNotNull(hidden);
+        hidden.setValueAttribute("/File");
+        page = (HtmlPage) form.submit(null);
+
+        // verify the "File " + treeNum menu re-appears
+        anchor = page.getFirstAnchorByText("New " + treeNum);
+        assertNotNull(anchor);
+
+        // verify that clicking on the "New " + treeNum link takes you
+        // to the right page.
+        page = (HtmlPage) anchor.click();
+        assertNotNull(page);
+
+        // go back to the tree page
+        anchor = page.getFirstAnchorByText("Back");
+        assertNotNull(anchor);
+        page = (HtmlPage) anchor.click();
+        assertNotNull(page);
+
+        // verify that clicking on the "Edit " + treeNum link causes the
+        // "File " + treeNum menu choices to clean maindisappear, and the "Edit "
+        // + treeNum menu choices to appear.
+        anchor = page.getFirstAnchorByText("Edit " + treeNum);
+        assertNotNull(anchor);
+        // simulate link being clicked
+        hidden = (HtmlHiddenInput) form.getInputByName("j_id_id15:menu" +
+                                                       treeNum);
+        assertNotNull(hidden);
+        hidden.setValueAttribute("/Edit");
+        page = (HtmlPage) form.submit(null);
+
+        // verify the expected elements
+        try {
+            anchor = page.getFirstAnchorByText("Open " + treeNum);
+            assertTrue(false);
+        } catch (ElementNotFoundException e) {
+            assertTrue(true);
+        }
+        anchor = page.getFirstAnchorByText("Cut " + treeNum);
+        assertNotNull(anchor);
+
+        // verify that clicking on the "Cut " + treeNum link takes you
+        // to the right page.
+        page = (HtmlPage) anchor.click();
+        assertNotNull(page);
+
+        // go back to the tree page
+        anchor = page.getFirstAnchorByText("Back");
+        assertNotNull(anchor);
+        page = (HtmlPage) anchor.click();
+        assertNotNull(page);
+
+        return page;
+    }
+
+
+    protected HtmlPage executeResultSet(HtmlPage page, String currentListNum,
+                                        String newListNum) throws Exception {
+        HtmlAnchor anchor = null;
+        HtmlForm form = (HtmlForm) page.getForms().get(0);
+        assertNotNull(form);
+        HtmlHiddenInput hidden1, hidden2 = null;
+        // verify that clicking on the <newListNum> link causes the
+        // the correct current page display.
+        // simulate the link being clicked
+
+        hidden1 = (HtmlHiddenInput) form
+              .getInputByName("j_id_id20:j_id_id65_curPage");
+        assertNotNull(hidden1);
+        hidden1.setValueAttribute(currentListNum);
+
+        hidden2 =
+              (HtmlHiddenInput) form.getInputByName("j_id_id20:j_id_id65_action");
+        assertNotNull(hidden2);
+        hidden2.setValueAttribute(newListNum);
+        page = (HtmlPage) form.submit(null);
+
+        // If we've pressed the "next" link
+        if (newListNum.equals("-1")) {
+            int newNum = Integer.valueOf(currentListNum).intValue() + 1;
+            newListNum = Integer.toString(newNum);
+            // If we've pressed the "previous" link
+        } else if (newListNum.equals("-2")) {
+            int newNum = Integer.valueOf(currentListNum).intValue() - 1;
+            newListNum = Integer.toString(newNum);
+        }
+
+        try {
+            anchor = page.getFirstAnchorByText(newListNum);
+            assertTrue(false);
+        } catch (ElementNotFoundException e) {
+            assertTrue(true);
+        }
+
+        return page;
+    }
+
+
+    protected HtmlPage executeTabbedPane(HtmlPage page, String buttonName)
+          throws Exception {
+        HtmlForm form = (HtmlForm) page.getForms().get(0);
+        assertNotNull(form);
+        HtmlInput button = (HtmlInput) form.getInputByName(buttonName);
+        page = (HtmlPage) button.click();
+        form = (HtmlForm) page.getForms().get(0);
+        button = (HtmlInput) form.getInputByName(buttonName);
+        assertTrue(button.getClassAttribute().equals("tabbed-selected"));
+        return page;
+    }
+
+
+    private HtmlPage accessAppAndGetPage(String contextUri) throws Exception {
+
+        HtmlPage page = (HtmlPage) getInitialPage();
+        HtmlAnchor imagemapAnchor = page.getAnchorByHref(contextUri);
+        assertNotNull(imagemapAnchor);
+        page = (HtmlPage) imagemapAnchor.click();
+        assertNotNull(page);
+
+        return page;
+    }
+
+
+    private String getImageMapWelcomeText(HtmlPage page) {
+        String result = null;
+        for (HtmlElement element : page.getAllHtmlChildElements()) {
+            if (element instanceof HtmlTable) {
+                HtmlTable table = (HtmlTable) element;
+                result = table.getCellAt(0, 0).asText().trim();
+                break;
+            }
+        }
+        return result;
+    }
+
+
+} // end of class DemoTest01
+    
diff --git a/jsf-demo/test/tests/com/sun/faces/demotest/customscope/TestCustomScope.java b/jsf-demo/test/tests/com/sun/faces/demotest/customscope/TestCustomScope.java
new file mode 100644
index 0000000..bb78f98
--- /dev/null
+++ b/jsf-demo/test/tests/com/sun/faces/demotest/customscope/TestCustomScope.java
@@ -0,0 +1,125 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.demotest.customscope;
+
+import com.sun.faces.demotest.HtmlUnitTestCase;
+import com.gargoylesoftware.htmlunit.html.*;
+
+import java.util.List;
+import java.util.ArrayList;
+
+public class TestCustomScope extends HtmlUnitTestCase {
+
+    public void testCustomScope() throws Exception {
+
+        HtmlPage page = getPage("/custom.xhtml");
+        assertNotNull(page);
+        validateSpanContent(page);
+        validateTableStatus(page, true, false);
+
+        HtmlSubmitInput reload = getReloadButton(page);
+        page = reload.click();
+        validateSpanContent(page);
+        validateTableStatus(page, false, false);
+
+        HtmlSubmitInput destroyScope = getDestoryScopeButton(page);
+        page = destroyScope.click();
+        validateSpanContent(page);
+        validateTableStatus(page, true, true);
+
+    }
+
+
+    // --------------------------------------------------------- Private Methods
+
+
+    private HtmlSubmitInput getReloadButton(HtmlPage page) {
+
+        HtmlSubmitInput input = (HtmlSubmitInput) getInputContainingGivenId(page, "form:reload");
+        assertNotNull(input);
+        return input;
+
+    }
+
+
+    private HtmlSubmitInput getDestoryScopeButton(HtmlPage page) {
+
+        HtmlSubmitInput input = (HtmlSubmitInput) getInputContainingGivenId(page, "form:destroy");
+        assertNotNull(input);
+        return input;
+
+    }
+
+
+    private void validateTableStatus(HtmlPage page,
+                                     boolean postConstructStatus,
+                                     boolean preDestroyStatus) {
+
+        HtmlTable table = (HtmlTable) page.getElementById("grid");
+        assertNotNull(table);
+        HtmlTableRow pcRow = table.getRow(1);
+        HtmlTableCell pcStatus = pcRow.getCell(1);
+        assertTrue(((postConstructStatus)
+                    ? "Invoked".equals(pcStatus.asText())
+                    : pcStatus.asText().length() == 0));
+        HtmlTableRow pdRow = table.getRow(2);
+        HtmlTableCell pdStatus = pdRow.getCell(1);
+        assertTrue(((preDestroyStatus) ? "Invoked".equals(pdStatus.asText()) : pdStatus.asText().length() == 0));
+        
+    }
+
+
+    private void validateSpanContent(HtmlPage page) {
+
+        List<HtmlSpan> spans = new ArrayList<HtmlSpan>(3);
+        getAllElementsOfGivenClass(page, spans, HtmlSpan.class);
+        HtmlSpan span = spans.get(0);
+        assertEquals("create", span.getId());
+        assertEquals("Resolved", span.asText());
+        span = spans.get(1);
+        assertEquals("scopeReference", span.getId());
+        assertEquals("Resolved", span.asText());
+        span = spans.get(2);
+        assertEquals("nonCreate", span.getId());
+        assertEquals("Resolved", span.asText());
+
+    }
+}
diff --git a/jsf-demo/test/tests/com/sun/faces/demotest/guessNumber/TestGuessNumber.java b/jsf-demo/test/tests/com/sun/faces/demotest/guessNumber/TestGuessNumber.java
new file mode 100644
index 0000000..fae31fe
--- /dev/null
+++ b/jsf-demo/test/tests/com/sun/faces/demotest/guessNumber/TestGuessNumber.java
@@ -0,0 +1,260 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.demotest.guessNumber;
+
+import javax.faces.component.NamingContainer;
+
+import java.util.Iterator;
+import java.util.List;
+
+import com.gargoylesoftware.htmlunit.html.*;
+import com.sun.faces.demotest.HtmlUnitTestCase;
+
+public class TestGuessNumber extends HtmlUnitTestCase {
+
+
+    /*
+     * Click back and forth between greeting.jsp and response.jsp providing
+     * guesses that are within 0 - 10.  
+     */
+    public void testGuessNumber() throws Exception {
+
+        HtmlPage greetingPage = accessAppAndGetGreetingJSP();
+
+        int numberFound = 0;
+
+        // loop through the range of valid guesses
+        for (int i = 1; i < 11; i++) {
+
+            assertTrue(greetingPage.getTitleText().equals("Hello"));
+            boolean foundImage = false;
+            for (HtmlElement element : greetingPage.getAllHtmlChildElements()) {
+                if (element.getTagName().equalsIgnoreCase("img")) {
+                    if (element.getAttributeValue("id").equals(
+                          "helloForm" +
+                          NamingContainer.SEPARATOR_CHAR +
+                          "waveImg")) {
+                        foundImage = true;
+                        assertTrue(stripJsessionInfo(
+                            element.getAttributeValue("src"))
+                            .equals("/jsf-guessNumber/guess/javax.faces.resource/images/wave.med.gif"));
+                    }
+                }
+            }
+            assertTrue(foundImage);
+
+            List forms = greetingPage.getForms();
+            assertTrue(forms != null);
+            assertTrue(forms.size() == 1);
+
+            HtmlForm form = (HtmlForm) forms.get(0);
+            assertTrue(form != null);
+            assertTrue(form.getIdAttribute().equals("helloForm"));
+            assertTrue(stripJsessionInfo(form.getActionAttribute()).equals(
+                  "/jsf-guessNumber/guess/greeting.jsp"));
+
+            HtmlTextInput input = (HtmlTextInput) form.getInputByName(
+                  "helloForm" + NamingContainer.SEPARATOR_CHAR + "userNo");
+            assertTrue(input != null);
+
+            input.setValueAttribute(Integer.toString(i));
+
+            // "click" the submit button to send our guess
+            HtmlSubmitInput submit = (HtmlSubmitInput) getInputContainingGivenId(greetingPage,
+                                                                                 "helloForm" + NamingContainer.SEPARATOR_CHAR + "submit");
+            HtmlPage resultPage = submit.click();
+            assertTrue(resultPage != null);
+
+            assertTrue(resultPage.getTitleText().equals("Guess The Number"));
+
+            foundImage = false;
+            for (HtmlElement element : resultPage.getAllHtmlChildElements()) {
+
+                // check to see if we guessed correctly or not
+                if (element.getTagName().equalsIgnoreCase("h2")) {
+                    if (element.asText().trim().equals("Yay! You got it!")) {
+                        numberFound++;
+                        System.out.println("Correct number was '" + i + "'");
+                        break;
+                    } else if (element.asText().trim().equals(
+                          "Sorry, " + i + " is incorrect.")) {
+                        System.out.println("Incorrect guess for '" + i +
+                                           "', going back to guess again.");
+                        break;
+                    }
+                } else if (element.getTagName().equalsIgnoreCase("img")) {
+                    if (element.getAttributeValue("id").equals(
+                        "responseForm" +
+                        NamingContainer.SEPARATOR_CHAR +
+                        "waveImg")) {
+                        foundImage = true;
+                        assertTrue(stripJsessionInfo(
+                            element.getAttributeValue("src"))
+                            .equals("/jsf-guessNumber/guess/javax.faces.resource/images/wave.med.gif"));
+                    }
+                }
+            }
+            assertTrue(foundImage);
+
+            // "click" the back button and submit a new guess
+            List forms1 = resultPage.getForms();
+            assertTrue(forms1 != null);
+            assertTrue(forms1.size() == 1);
+
+            HtmlForm back = (HtmlForm) forms1.get(0);
+            assertTrue(back != null);
+            assertTrue(back.getIdAttribute().equals("responseForm"));
+            assertTrue(stripJsessionInfo(back.getActionAttribute()).equals(
+                  "/jsf-guessNumber/guess/response.jsp"));
+
+            submit = (HtmlSubmitInput) getInputContainingGivenId(resultPage,
+                                                                 "responseForm" + NamingContainer.SEPARATOR_CHAR + "back");
+            greetingPage = submit.click();
+            assertTrue(greetingPage != null);
+        }
+        // ensure that there was only one correct guess through the progession 
+        // of valid values
+        assertTrue(numberFound == 1);
+    }
+
+
+    /*
+     * Validate the proper response is returned when no input is provided
+     * to the form for guessing duke's number
+     */
+    public void testGuessNumberNullInput() throws Exception {
+        int numberFound = 0;
+        HtmlPage greetingPage = accessAppAndGetGreetingJSP();
+        HtmlForm guessForm = (HtmlForm) greetingPage.getForms().get(0);
+        assertTrue(guessForm != null);
+
+        HtmlSubmitInput submit = (HtmlSubmitInput) getInputContainingGivenId(greetingPage,
+                                                                                 "helloForm" + NamingContainer.SEPARATOR_CHAR + "submit");
+        HtmlPage resultPage = submit.click();
+        assertTrue(resultPage != null);
+        for (HtmlElement element : resultPage.getAllHtmlChildElements()) {
+            if (element.asText().trim()
+                  .equals("Sorry, null is incorrect. Try a larger number.")) {
+                numberFound++;
+                System.out.println("Incorrect guess 'null'.");
+                break;
+            }
+        }
+        // mkae sure error was encountered.
+        assertTrue(numberFound == 1);
+    }
+
+
+    /*
+     * Confirm a validation error is returned when the input value is outside
+     * the specified range of 0 and 10.
+     */
+    public void testGuessNumberInvalidInputRange() throws Exception {
+        boolean testFailed = false;
+        HtmlPage greetingPage = accessAppAndGetGreetingJSP();
+        HtmlForm guessForm = (HtmlForm) greetingPage.getForms().get(0);
+        assertTrue(guessForm != null);
+
+        HtmlTextInput input = (HtmlTextInput) guessForm.getInputByName(
+              "helloForm" + NamingContainer.SEPARATOR_CHAR + "userNo");
+        assertTrue(input != null);
+
+        input.setValueAttribute(Integer.toString(-1234));
+         HtmlSubmitInput submit = (HtmlSubmitInput) getInputContainingGivenId(greetingPage,
+                                                                                 "helloForm" + NamingContainer.SEPARATOR_CHAR + "submit");
+        HtmlPage failed = submit.click();
+        assertTrue(failed != null);
+        assertTrue(failed.getTitleText().equals("Hello"));
+        for (HtmlElement element : failed.getAllHtmlChildElements()) {
+            if (element.getTagName().equalsIgnoreCase("span")) {
+                if (element.getAttributeValue("id").equals("helloForm" +
+                    NamingContainer.SEPARATOR_CHAR + "errors1")) {
+                    testFailed = true;
+                    assertTrue(element.getAttributeValue("style").startsWith(
+                      "color: red;"));
+                    assertTrue(
+                      element.asText().trim().contains("Validation Error"));
+                }
+            }
+        }
+        // make sure validation error occurred
+        assertTrue(testFailed == true);
+        testFailed = false;
+
+        guessForm = (HtmlForm) failed.getForms().get(0);
+        assertTrue(guessForm != null);
+
+        input =
+              (HtmlTextInput) guessForm.getInputByName(
+                    "helloForm" + NamingContainer.SEPARATOR_CHAR + "userNo");
+        assertTrue(input != null);
+
+        input.setValueAttribute(Integer.toString(11));
+        submit = (HtmlSubmitInput) getInputContainingGivenId(failed,
+                                                             "helloForm" + NamingContainer.SEPARATOR_CHAR + "submit");
+        failed = submit.click();
+        assertTrue(failed != null);
+        assertTrue(failed.getTitleText().equals("Hello"));
+        for (HtmlElement element : failed.getAllHtmlChildElements()) {
+            if (element.getTagName().equalsIgnoreCase("span")) {
+                if (element.getAttributeValue("id").equals("helloForm" +
+                    NamingContainer.SEPARATOR_CHAR + "errors1")) {
+                    testFailed = true;
+                    assertTrue(element.getAttributeValue("style").startsWith(
+                      "color: red;"));
+                    assertTrue(
+                      element.asText().trim().contains("Validation Error"));
+                }
+            }
+        }
+        // make sure validation error occurred
+        assertTrue(testFailed == true);
+
+    }
+
+
+    private HtmlPage accessAppAndGetGreetingJSP() throws Exception {
+        HtmlPage page = (HtmlPage) getInitialPage();
+        return page;
+    }
+
+} // end of class DemoTest01
+    
diff --git a/jsf-demo/test/tests/com/sun/faces/demotest/mappingTest/TestMapping.java b/jsf-demo/test/tests/com/sun/faces/demotest/mappingTest/TestMapping.java
new file mode 100644
index 0000000..5957d7b
--- /dev/null
+++ b/jsf-demo/test/tests/com/sun/faces/demotest/mappingTest/TestMapping.java
@@ -0,0 +1,277 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.demotest.mappingTest;
+
+import javax.faces.component.NamingContainer;
+
+import java.net.URL;
+import java.util.Iterator;
+import java.util.List;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.*;
+import com.sun.faces.demotest.HtmlUnitTestCase;
+
+public class TestMapping extends HtmlUnitTestCase {
+
+    private boolean isPrefix = false;
+
+
+    /*
+     * Click back and forth between greeting.jsp and response.jsp providing
+     * guesses that are within 0 - 10.  
+     */
+    public void testGuessNumber() throws Exception {
+
+        HtmlPage greetingPage = accessAppAndGetGreetingJSP();
+
+        int numberFound = 0;
+
+        // loop through the range of valid guesses
+        for (int i = 0; i < 11; i++) {
+
+            assertTrue(greetingPage.getTitleText().equals("Hello"));
+            for (HtmlElement element : greetingPage.getAllHtmlChildElements()) {
+                if (element.getTagName().equalsIgnoreCase("img")) {
+                    assertTrue(element.getAttributeValue("id").equals(
+                          "helloForm" +
+                          NamingContainer.SEPARATOR_CHAR +
+                          "waveImg"));
+                    assertTrue(stripJsessionInfo(
+                          element.getAttributeValue("src"))
+                          .equals(context + "/wave.med.gif"));
+                }
+            }
+
+            List forms = greetingPage.getForms();
+            assertTrue(forms != null);
+            assertTrue(forms.size() == 1);
+
+            HtmlForm form = (HtmlForm) forms.get(0);
+            assertTrue(form != null);
+            assertTrue(form.getIdAttribute().equals("helloForm"));
+            if (isPrefix) {
+                assertTrue(stripJsessionInfo(form.getActionAttribute()).equals(
+                      context + "/guess/greeting.jsp"));
+            } else {
+                assertTrue(stripJsessionInfo(form.getActionAttribute()).equals(
+                      context + "/greeting.faces"));
+            }
+
+            HtmlTextInput input = (HtmlTextInput) form.getInputByName(
+                  "helloForm" + NamingContainer.SEPARATOR_CHAR + "userNo");
+            assertTrue(input != null);
+
+            input.setValueAttribute(Integer.toString(i));
+
+            // "click" the submit button to send our guess
+             HtmlSubmitInput submit = (HtmlSubmitInput) getInputContainingGivenId(greetingPage,
+                                                                                 "helloForm" + NamingContainer.SEPARATOR_CHAR + "submit");
+            HtmlPage resultPage = submit.click();
+            assertTrue(resultPage != null);
+
+            assertTrue(resultPage.getTitleText().equals("Guess The Number"));
+
+            for (HtmlElement element : resultPage.getAllHtmlChildElements()) {
+
+                // check to see if we guessed correctly or not
+                if (element.getTagName().equalsIgnoreCase("h2")) {
+                    if (element.asText().trim().equals("Yay! You got it!")) {
+                        numberFound++;
+                        System.out.println("Correct number was '" + i + "'");
+                        break;
+                    } else if (element.asText().trim().equals(
+                          "Sorry, " + i + " is incorrect.")) {
+                        System.out.println("Incorrect guess for '" + i +
+                                           "', going back to guess again.");
+                        break;
+                    }
+                } else if (element.getTagName().equalsIgnoreCase("img")) {
+                    assertTrue(element.getAttributeValue("id").equals(
+                          "responseForm" +
+                          NamingContainer.SEPARATOR_CHAR +
+                          "waveImg"));
+                    assertTrue(stripJsessionInfo(
+                          element.getAttributeValue("src"))
+                          .equals(context + "/wave.med.gif"));
+                }
+            }
+
+            // "click" the back button and submit a new guess
+            List forms1 = resultPage.getForms();
+            assertTrue(forms1 != null);
+            assertTrue(forms1.size() == 1);
+
+            HtmlForm back = (HtmlForm) forms1.get(0);
+            assertTrue(back != null);
+            assertTrue(back.getIdAttribute().equals("responseForm"));
+            if (isPrefix) {
+                assertTrue(stripJsessionInfo(back.getActionAttribute()).equals(
+                      context + "/guess/response.jsp"));
+            } else {
+                assertTrue(stripJsessionInfo(back.getActionAttribute()).equals(
+                      context + "/response.faces"));
+            }
+
+            submit = (HtmlSubmitInput) getInputContainingGivenId(resultPage,
+                                                                 "responseForm" + NamingContainer.SEPARATOR_CHAR + "back");
+            greetingPage = submit.click();
+            assertTrue(greetingPage != null);
+        }
+        // ensure that there was only one correct guess through the progession 
+        // of valid values
+        assertTrue(numberFound == 1);
+    }
+
+
+    /*
+     * Validate the proper response is returned when no input is provided
+     * to the form for guessing duke's number
+     */
+    public void testGuessNumberNullInput() throws Exception {
+        int numberFound = 0;
+        HtmlPage greetingPage = accessAppAndGetGreetingJSP();
+        HtmlForm guessForm = (HtmlForm) greetingPage.getForms().get(0);
+        assertTrue(guessForm != null);
+
+        HtmlSubmitInput submit = (HtmlSubmitInput) getInputContainingGivenId(greetingPage,
+                                                                             "helloForm" + NamingContainer.SEPARATOR_CHAR + "submit");
+        HtmlPage resultPage = submit.click();
+        assertTrue(resultPage != null);
+        for (HtmlElement element : resultPage.getAllHtmlChildElements()) {
+            if (element.asText().trim().equals("Sorry, null is incorrect.")) {
+                numberFound++;
+                System.out.println("Incorrect guess 'null'.");
+                break;
+            }
+        }
+        assertTrue(numberFound == 1);
+    }
+
+
+    /*
+     * Confirm a validation error is returned when the input value is outside
+     * the specified range of 0 and 10.
+     */
+    public void testGuessNumberInvalidInputRange() throws Exception {
+        boolean testFailed = false;
+        HtmlPage greetingPage = accessAppAndGetGreetingJSP();
+        HtmlForm guessForm = (HtmlForm) greetingPage.getForms().get(0);
+        assertTrue(guessForm != null);
+
+        HtmlTextInput input = (HtmlTextInput) guessForm.getInputByName(
+              "helloForm" + NamingContainer.SEPARATOR_CHAR + "userNo");
+        assertTrue(input != null);
+
+        input.setValueAttribute(Integer.toString(-1));
+
+         HtmlSubmitInput submit = (HtmlSubmitInput) getInputContainingGivenId(greetingPage,
+                                                                                 "helloForm" + NamingContainer.SEPARATOR_CHAR + "submit");
+        HtmlPage failed = submit.click();
+        assertTrue(failed != null);
+        assertTrue(failed.getTitleText().equals("Hello"));
+        for (HtmlElement element : failed.getAllHtmlChildElements()) {
+            if (element.getTagName().equalsIgnoreCase("span")) {
+                testFailed = true;
+                assertTrue(element.getAttributeValue("style").startsWith(
+                      "color: red;"));
+                assertTrue(
+                      element.asText().trim().startsWith("Validation Error"));
+            }
+        }
+        // make sure validation error occurred
+        assertTrue(testFailed == true);
+        testFailed = false;
+
+        guessForm = (HtmlForm) failed.getForms().get(0);
+        assertTrue(guessForm != null);
+
+        input =
+              (HtmlTextInput) guessForm.getInputByName(
+                    "helloForm" + NamingContainer.SEPARATOR_CHAR + "userNo");
+        assertTrue(input != null);
+
+        input.setValueAttribute(Integer.toString(11));
+        submit = (HtmlSubmitInput) getInputContainingGivenId(failed,
+                                                                              "helloForm" + NamingContainer.SEPARATOR_CHAR + "submit");
+        failed = submit.click();
+        assertTrue(failed != null);
+        assertTrue(failed.getTitleText().equals("Hello"));
+        for (HtmlElement element : failed.getAllHtmlChildElements()) {
+            if (element.getTagName().equalsIgnoreCase("span")) {
+                testFailed = true;
+                assertTrue(element.getAttributeValue("style").startsWith(
+                      "color: red;"));
+                assertTrue(
+                      element.asText().trim().startsWith("Validation Error"));
+            }
+        }
+        // make sure validation error occurred
+        assertTrue(testFailed == true);
+
+    }
+
+
+    private HtmlPage accessAppAndGetGreetingJSP() throws Exception {
+        HtmlPage page;
+
+        WebClient client = new WebClient();
+        client.setRedirectEnabled(true);
+        if (context.indexOf("prefix") > 0) {
+            isPrefix = true;
+            // fetch page using prefix mapping
+            page = (HtmlPage) client.getPage(new URL("http://" + host + ":" +
+                                                     port +
+                                                     context +
+                                                     "/guess/greeting.jsp"));
+        } else {
+            // fetch page using extension mapping
+            isPrefix = false;
+            page = (HtmlPage) client.getPage(new URL("http://" + host + ":" +
+                                                     port +
+                                                     context +
+                                                     "/greeting.faces"));
+        }
+        return page;
+    }
+
+} // end of class DemoTest01
+    
diff --git a/jsf-demo/test/tests/com/sun/faces/demotest/mojarra_ext/TestMojarra_Ext.java b/jsf-demo/test/tests/com/sun/faces/demotest/mojarra_ext/TestMojarra_Ext.java
new file mode 100644
index 0000000..50507a2
--- /dev/null
+++ b/jsf-demo/test/tests/com/sun/faces/demotest/mojarra_ext/TestMojarra_Ext.java
@@ -0,0 +1,216 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.demotest.mojarra_ext;
+
+import javax.faces.component.NamingContainer;
+
+import java.util.List;
+
+import com.gargoylesoftware.htmlunit.html.*;
+import com.sun.faces.demotest.HtmlUnitTestCase;
+
+public class TestMojarra_Ext extends HtmlUnitTestCase {
+
+
+    /*
+     * Check that we get the validation message for incorrect entry, with RegEx.
+     * Then, check that a correct entry goes through.
+     */
+    public void testMojarra_Ext_Regex() throws Exception {
+
+        String firstPageName = "/mojarra_ext/faces/welcome.jsp";
+        String formName = "regex_form";
+        String inputName = "sampleRegex";
+        String incorrectValue = "jest";  // will fail, doesn't start with t
+        String correctValue = "test";    // will pass, starts with t
+        String welcomeTitle = "Test Regex Validator";
+        String secondTitle = "Credit Card Demo";
+        String submitButtonName = "submit";
+        String validationMessageName = "regexError";
+
+        HtmlPage greetingPage = (HtmlPage) getInitialPage();
+
+        assertTrue(greetingPage.getTitleText().equals(welcomeTitle));
+
+        List forms = greetingPage.getForms();
+        assertTrue(forms != null);
+        assertTrue(forms.size() == 1);
+
+        HtmlForm form = (HtmlForm) forms.get(0);
+        assertTrue(form != null);
+        assertTrue(form.getIdAttribute().equals(formName));
+        assertTrue(stripJsessionInfo(form.getActionAttribute()).equals(
+                firstPageName));
+
+
+        HtmlTextInput input = (HtmlTextInput) form.getInputByName(
+                formName + NamingContainer.SEPARATOR_CHAR + inputName);
+        assertTrue(input != null);
+
+
+        // Set an incorrect value
+        input.setValueAttribute(incorrectValue);
+
+        // "click" the submit button to send the value
+        HtmlSubmitInput submit = (HtmlSubmitInput) getInputContainingGivenId(greetingPage,
+                                                                             formName + NamingContainer.SEPARATOR_CHAR + submitButtonName);
+        assertNotNull(submit);
+        HtmlPage resultPage = submit.click();
+
+        assertTrue(resultPage.getTitleText().equals(welcomeTitle));
+
+
+        // check for the validation message
+        HtmlElement validationElement = resultPage.getHtmlElementById(
+                formName + NamingContainer.SEPARATOR_CHAR + validationMessageName);
+
+        assertTrue(validationElement != null);
+
+        String[] validatorMessage = validationElement.asText().split("'");
+
+        assertTrue(validatorMessage.length == 3);
+
+        assertTrue(validatorMessage[1].equals("t.*"));
+
+        // Set a correct value
+        input = (HtmlTextInput) getInputContainingGivenId(resultPage, formName + NamingContainer.SEPARATOR_CHAR + inputName);
+        input.setValueAttribute(correctValue);
+
+        // "click" the submit button to send the value
+        submit = (HtmlSubmitInput) getInputContainingGivenId(resultPage,
+                                                             formName + NamingContainer.SEPARATOR_CHAR + submitButtonName);
+        resultPage = submit.click();
+        assertTrue(resultPage != null);
+
+        assertTrue(resultPage.getTitleText().equals(secondTitle));
+
+    }
+    public void testMojarra_Ext_CreditCard() throws Exception {
+
+        String initialPage = "/faces/landing.jsp";
+        String firstPageName = "/mojarra_ext/faces/landing.jsp";
+        String formName = "credit_card_form";
+        String inputName = "sampleCreditCard";        
+        String incorrectValue1 = "4111 1111 1111 1112";
+        String incorrectError1 = "Not a valid credit card number.";
+        String incorrectValue2 = "4111x1111x1111x1111";
+        String incorrectError2 = "Invalid characters in value";
+        String correctValue = "4111 1111 1111 1111";    
+        String welcomeTitle = "Credit Card Demo";
+        String secondTitle = "Test Regex Validator";
+        String submitButtonName = "submit";
+        String validationMessageName = "creditcardError";
+
+        HtmlPage greetingPage = (HtmlPage) getPage(initialPage);
+
+        assertTrue(greetingPage.getTitleText().equals(welcomeTitle));
+
+        List forms = greetingPage.getForms();
+        assertTrue(forms != null);
+        assertTrue(forms.size() == 1);
+
+        HtmlForm form = (HtmlForm) forms.get(0);
+        assertTrue(form != null);
+        assertTrue(form.getIdAttribute().equals(formName));
+        assertTrue(stripJsessionInfo(form.getActionAttribute()).equals(
+                firstPageName));
+
+
+        HtmlTextInput input = (HtmlTextInput) form.getInputByName(
+                formName + NamingContainer.SEPARATOR_CHAR + inputName);
+        assertTrue(input != null);
+        
+        // Set first incorrect value
+        input.setValueAttribute(incorrectValue1);
+
+        // "click" the submit button to send the value
+        HtmlSubmitInput submit = (HtmlSubmitInput) getInputContainingGivenId(greetingPage,
+                                                                             formName + NamingContainer.SEPARATOR_CHAR + submitButtonName);
+        HtmlPage resultPage = submit.click();
+        assertTrue(resultPage != null);
+
+        assertTrue(resultPage.getTitleText().equals(welcomeTitle));
+
+
+        // check for the validation message
+        HtmlElement validationElement = resultPage.getHtmlElementById(
+                formName + NamingContainer.SEPARATOR_CHAR + validationMessageName);
+
+        assertTrue(validationElement != null);
+
+        assertTrue(validationElement.asText().contains(incorrectError1));
+
+        input = (HtmlTextInput) getInputContainingGivenId(resultPage,  formName + NamingContainer.SEPARATOR_CHAR + inputName);
+        // Set second incorrect value
+        input.setValueAttribute(incorrectValue2);
+
+        // "click" the submit button to send the value
+        submit = (HtmlSubmitInput) getInputContainingGivenId(resultPage,
+                                                             formName + NamingContainer.SEPARATOR_CHAR + submitButtonName);
+        resultPage = submit.click();
+        assertTrue(resultPage != null);
+
+        assertTrue(resultPage.getTitleText().equals(welcomeTitle));
+
+        // check for the validation message
+        validationElement = resultPage.getHtmlElementById(
+                formName + NamingContainer.SEPARATOR_CHAR + validationMessageName);
+
+        assertTrue(validationElement != null);
+
+        assertTrue(validationElement.asText().contains(incorrectError2));
+        
+        input = (HtmlTextInput) getInputContainingGivenId(resultPage,  formName + NamingContainer.SEPARATOR_CHAR + inputName);
+        // Set a correct value
+        input.setValueAttribute(correctValue);
+
+        // "click" the submit button to send the value
+        submit = (HtmlSubmitInput) getInputContainingGivenId(resultPage,
+                                                             formName + NamingContainer.SEPARATOR_CHAR + submitButtonName);
+        resultPage = submit.click();
+        assertTrue(resultPage != null);
+
+        assertTrue(resultPage.getTitleText().equals(secondTitle));
+
+    }
+    
+} // end of class 
+    
diff --git a/jsf-demo/test/tests/com/sun/faces/demotest/treevisit/TestTreeVisit.java b/jsf-demo/test/tests/com/sun/faces/demotest/treevisit/TestTreeVisit.java
new file mode 100644
index 0000000..b81ce11
--- /dev/null
+++ b/jsf-demo/test/tests/com/sun/faces/demotest/treevisit/TestTreeVisit.java
@@ -0,0 +1,129 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.demotest.treevisit;
+
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSelect;
+import com.sun.faces.demotest.HtmlUnitTestCase;
+
+
+public class TestTreeVisit extends HtmlUnitTestCase {
+
+
+    public void testTreeVisitSelectList() throws Exception {
+        String welcomeTitle = "Tree Visit";
+
+        HtmlPage greetingPage = (HtmlPage) getInitialPage();
+
+        assertTrue(greetingPage.getTitleText().equals(welcomeTitle));
+
+        HtmlSelect select = (HtmlSelect) greetingPage.getElementById("form:componentsList");
+
+        assertTrue("wrong number of options: "+select.getOptionSize(), select.getOptionSize() == 48);
+        
+        assertTrue(select.getOption(0).getValueAttribute().equals("form:mainGrid"));
+        assertTrue(select.getOption(20).getValueAttribute().equals("form:testTable"));
+        assertTrue(select.getOption(21).getValueAttribute().equals("form:testTable:labelColumnHeader"));
+        assertTrue(select.getOption(30).getValueAttribute().equals("form:testTable:actionsColumn"));
+        assertTrue(select.getOption(31).getValueAttribute().equals("form:testTable:actionsColumnHeader"));
+        assertTrue(select.getOption(32).getValueAttribute().equals("form:testTable:incrementLink"));
+        assertTrue(select.getOption(33).getValueAttribute().equals("form:testTable:0:labelText"));
+        assertTrue(select.getOption(34).getValueAttribute().equals("form:testTable:0:countText"));
+        assertTrue(select.getOption(35).getValueAttribute().equals("form:testTable:0:incrementLink"));
+        assertTrue(select.getOption(36).getValueAttribute().equals("form:testTable:1:labelText"));
+
+
+    }
+
+}
+
+/*
+<select id="form:componentsList" name="form:componentsList" multiple="multiple" size="10">
+	<option value="form:mainGrid">form:mainGrid</option>
+	<option value="form:instructions">form:instructions</option>
+	<option value="form:componentsListLabel">form:componentsListLabel</option>
+	<option value="form:componentsList">form:componentsList</option>
+	<option value="form:j_id1283414979_4c7f5b34">form:j_id1283414979_4c7f5b34</option>
+	<option value="form:visitRenderedGroup">form:visitRenderedGroup</option>
+	<option value="form:visitRenderedCheckbox">form:visitRenderedCheckbox</option>
+	<option value="form:visitRenderedLabel">form:visitRenderedLabel</option>
+	<option value="form:visitButton">form:visitButton</option>
+	<option value="form:namingContainers">form:namingContainers</option>
+	<option value="form:subviews">form:subviews</option>
+	<option value="form:subviewA">form:subviewA</option>
+	<option value="form:subviewA:groupA">form:subviewA:groupA</option>
+	<option value="form:subviewA:textA">form:subviewA:textA</option>
+	<option value="form:subviewB">form:subviewB</option>
+	<option value="form:subviewB:groupB">form:subviewB:groupB</option>
+	<option value="form:subviewB:textB">form:subviewB:textB</option>
+	<option value="form:nonRenderedSubview">form:nonRenderedSubview</option>
+	<option value="form:nonRenderedSubview:nonRenderedGroup">form:nonRenderedSubview:nonRenderedGroup</option>
+	<option value="form:nonRenderedSubview:nonRenderedText">form:nonRenderedSubview:nonRenderedText</option>
+	<option value="form:testTable">form:testTable</option>
+	<option value="form:testTable:labelColumnHeader">form:testTable:labelColumnHeader</option>
+	<option value="form:testTable:countColumnHeader">form:testTable:countColumnHeader</option>
+	<option value="form:testTable:actionsColumnHeader">form:testTable:actionsColumnHeader</option>
+	<option value="form:testTable:labelColumn">form:testTable:labelColumn</option>
+	<option value="form:testTable:labelColumnHeader">form:testTable:labelColumnHeader</option>
+	<option value="form:testTable:labelText">form:testTable:labelText</option>
+	<option value="form:testTable:countColumn">form:testTable:countColumn</option>
+	<option value="form:testTable:countColumnHeader">form:testTable:countColumnHeader</option>
+	<option value="form:testTable:countText">form:testTable:countText</option>
+	<option value="form:testTable:actionsColumn">form:testTable:actionsColumn</option>
+	<option value="form:testTable:actionsColumnHeader">form:testTable:actionsColumnHeader</option>
+	<option value="form:testTable:incrementLink">form:testTable:incrementLink</option>
+	<option value="form:testTable:0:labelText">form:testTable:0:labelText</option>
+	<option value="form:testTable:0:countText">form:testTable:0:countText</option>
+	<option value="form:testTable:0:incrementLink">form:testTable:0:incrementLink</option>
+	<option value="form:testTable:1:labelText">form:testTable:1:labelText</option>
+	<option value="form:testTable:1:countText">form:testTable:1:countText</option>
+	<option value="form:testTable:1:incrementLink">form:testTable:1:incrementLink</option>
+	<option value="form:testTable:2:labelText">form:testTable:2:labelText</option>
+	<option value="form:testTable:2:countText">form:testTable:2:countText</option>
+	<option value="form:testTable:2:incrementLink">form:testTable:2:incrementLink</option>
+	<option value="form:testTable:3:labelText">form:testTable:3:labelText</option>
+	<option value="form:testTable:3:countText">form:testTable:3:countText</option>
+	<option value="form:testTable:3:incrementLink">form:testTable:3:incrementLink</option>
+	<option value="form:testTable:4:labelText">form:testTable:4:labelText</option>
+	<option value="form:testTable:4:countText">form:testTable:4:countText</option>
+	<option value="form:testTable:4:incrementLink">form:testTable:4:incrementLink</option>
+</select>
+*/
diff --git a/jsf-demo/test/tests/com/sun/faces/demotest/viewExpired/TestViewExpiredExceptionExceptionHandler.java b/jsf-demo/test/tests/com/sun/faces/demotest/viewExpired/TestViewExpiredExceptionExceptionHandler.java
new file mode 100644
index 0000000..0249e7a
--- /dev/null
+++ b/jsf-demo/test/tests/com/sun/faces/demotest/viewExpired/TestViewExpiredExceptionExceptionHandler.java
@@ -0,0 +1,62 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.demotest.viewExpired;
+
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import com.sun.faces.demotest.HtmlUnitTestCase;
+
+
+public class TestViewExpiredExceptionExceptionHandler extends HtmlUnitTestCase {
+
+
+    public void testExceptionHandler() throws Exception {
+        HtmlPage page = (HtmlPage) getInitialPage();
+
+        HtmlSubmitInput button =
+                (HtmlSubmitInput) page.getElementById("button");
+        page = button.click();
+        String text = page.asText();
+        assertTrue(text.contains("You were on page /main.xhtml"));
+
+    }
+
+}
diff --git a/jsf-demo/viewExpired/README.txt b/jsf-demo/viewExpired/README.txt
new file mode 100644
index 0000000..512c090
--- /dev/null
+++ b/jsf-demo/viewExpired/README.txt
@@ -0,0 +1,3 @@
+This demo contains a simple example of gracefully handling a view expired exception.
+
+See the viewExpired.xhtml page for a link to a blog discussing the concepts in this demo.
\ No newline at end of file
diff --git a/jsf-demo/viewExpired/build.xml b/jsf-demo/viewExpired/build.xml
new file mode 100644
index 0000000..929c85c
--- /dev/null
+++ b/jsf-demo/viewExpired/build.xml
@@ -0,0 +1,123 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project name="viewExpired" default="build" basedir=".">
+
+
+    <property file="${user.home}/build.properties"/>
+    <property file="../../build.properties"/>
+    <import file="${jsf.build.home}/common/ant/common.xml"/>
+
+    <!-- Configure the context path for this application -->
+    <property name="context.path" value="/viewExpired"/>
+    <property name="example" value="viewExpired"/>
+    <property name="build" value="${basedir}/build"/>
+
+    <path id="classpath">       
+        <pathelement location="${javax.faces-api.jar}"/>
+        <pathelement location="${javax.faces.jar}"/>
+        <path refid="compile.classpath"/>
+    </path>
+    
+    <target name="init" depends="check.changes">
+        <tstamp/>
+    </target>
+
+    <target name="check.changes">
+        <uptodate property="skip.build"
+                  targetfile="${build}/last-build">
+            <srcfiles dir="${basedir}">
+                <include name="src/**/*.*"/>
+            </srcfiles>
+        </uptodate>
+    </target>
+
+    <target name="clean">
+        <delete dir="${build}"/>
+    </target>    
+
+   <target name="prepare" depends="init"
+            description="Create build directories.">
+        <mkdir dir="${build}/${example}"/>
+        <mkdir dir="${build}/${example}/WEB-INF"/>
+        <mkdir dir="${build}/${example}/WEB-INF/classes"/>
+    </target>
+
+
+    <target name="build" unless="skip.build" depends="prepare"
+            description="Compile Java files and copy static files.">
+        <touch file="${build}/last-build"/>
+        <jsf.javac srcdir="src/main/java"
+                   destdir="${build}/${example}/WEB-INF/classes">
+            <classpath>
+                <path refid="classpath"/>
+            </classpath>
+        </jsf.javac>
+        <copy todir="${build}/${example}/WEB-INF">
+            <fileset dir="src/main/webapp/WEB-INF">
+                <include name="*.tld"/>
+                <include name="*.xml"/>
+            </fileset>
+        </copy>
+
+        <copy todir="${build}/${example}/">
+            <fileset dir="src/main/webapp">
+                <include name="*.xhtml"/>
+                <include name="*.html"/>
+                <include name="*.gif"/>
+                <include name="*.jpg"/>
+                <include name="*.jsp"/>
+                <include name="*.xml"/>
+            </fileset>
+        </copy>
+        
+        <jsf.war basedir="${build}"
+                 archive-name="${example}"
+                 webxml="${build}/${example}/WEB-INF/web.xml">
+            <archive-elements>
+                <zipfileset dir="${build}/${example}"/>
+            </archive-elements>
+        </jsf.war>
+    </target>
+
+</project> 
+ 
diff --git a/jsf-demo/viewExpired/pom.xml b/jsf-demo/viewExpired/pom.xml
new file mode 100644
index 0000000..48f8596
--- /dev/null
+++ b/jsf-demo/viewExpired/pom.xml
@@ -0,0 +1,166 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+    <modelVersion>4.0.0</modelVersion>
+    <groupId>com.sun.faces</groupId>
+    <artifactId>viewExpired</artifactId>
+    <packaging>war</packaging>
+    <name>${project.artifactId}</name>
+    <url>https://mojarra.dev.java.net/</url>
+    <description>Example App</description>
+    <version>1.0</version>
+
+    <build>
+        <defaultGoal>install</defaultGoal>
+        <sourceDirectory>src/main/java</sourceDirectory>
+        <finalName>${project.artifactId}</finalName>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>2.5.1</version>
+                <configuration>
+                    <source>1.5</source>
+                    <target>1.5</target>
+                    <encoding>${project.build.sourceEncoding}</encoding>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-resources-plugin</artifactId>
+                <version>2.6</version>
+                <configuration>
+                    <encoding>${project.build.sourceEncoding}</encoding>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+
+    <repositories>
+        <repository>
+            <id>java.net.m2</id>
+            <name>java.net m2 repo</name>
+            <url>http://download.java.net/maven/2</url>
+        </repository>
+       <repository>
+            <id>glassfish-repo-archive</id>
+            <name>Nexus repository collection for Glassfish</name>
+            <url>http://maven.glassfish.org/content/groups/glassfish</url>
+        </repository>
+        <repository>
+            <id>ibiblio.mirrors</id>
+            <url>http://mirrors.ibiblio.org/pub/mirrors/maven2</url>
+        </repository>
+        <repository>
+            <id>codehaus</id>
+            <name>codehaus</name>
+            <url>http://repository.codehaus.org</url>
+        </repository>
+    </repositories>
+
+    <dependencies>
+        <dependency>
+            <groupId>javax.faces</groupId>
+            <artifactId>jsf-api</artifactId>
+            <version>2.0</version>
+            <scope>provided</scope>
+        </dependency>
+
+        <!--
+          Uncomment these dependencies and comment out the one above to use
+          a simple servlet container instead of a Java EE Application Server
+        <dependency>
+            <groupId>com.sun.faces</groupId>
+            <artifactId>jsf-api</artifactId>
+            <version>[2.0.1,)</version>
+        </dependency>
+        <dependency>
+            <groupId>com.sun.faces</groupId>
+            <artifactId>jsf-impl</artifactId>
+            <version>[2.0.1,)</version>
+        </dependency>
+        <dependency>
+            <groupId>javax.servlet</groupId>
+            <artifactId>servlet-api</artifactId>
+            <version>2.5</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>javax.servlet.jsp</groupId>
+            <artifactId>jsp-api</artifactId>
+            <version>2.1</version>
+            <scope>provided</scope>
+        </dependency>
+         <dependency>
+             <groupId>javax.servlet.jsp.jstl</groupId>
+             <artifactId>jstl-api</artifactId>
+             <version>1.2</version>
+         </dependency>
+        <dependency>
+            <groupId>org.glassfish.web</groupId>
+            <artifactId>jstl-impl</artifactId>
+            <version>1.2</version>
+        </dependency>
+        -->
+
+    </dependencies>
+    <profiles>
+        <profile>
+            <id>default</id>
+            <!-- Tests are disabled by default.  See the test profile -->
+            <activation>
+                <activeByDefault>true</activeByDefault>
+            </activation>
+            <properties>
+                <maven.test.skip>true</maven.test.skip>
+            </properties>
+        </profile>
+    </profiles>
+    <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
+
diff --git a/jsf-demo/viewExpired/src/main/java/com/sun/faces/NullRestoreViewViewHandler.java b/jsf-demo/viewExpired/src/main/java/com/sun/faces/NullRestoreViewViewHandler.java
new file mode 100644
index 0000000..5f8cc5e
--- /dev/null
+++ b/jsf-demo/viewExpired/src/main/java/com/sun/faces/NullRestoreViewViewHandler.java
@@ -0,0 +1,71 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces;
+
+import javax.faces.application.ViewHandler;
+import javax.faces.application.ViewHandlerWrapper;
+import javax.faces.component.UIViewRoot;
+import javax.faces.context.FacesContext;
+
+public class NullRestoreViewViewHandler extends ViewHandlerWrapper {
+    
+
+    private ViewHandler wrapped;
+
+    public NullRestoreViewViewHandler(ViewHandler wrapped) {
+        this.wrapped = wrapped;
+    }
+
+    @Override
+    public UIViewRoot restoreView(FacesContext context, String viewId) {
+        return null;
+    }
+
+    @Override
+    public ViewHandler getWrapped() {
+        return wrapped;
+    }
+
+
+
+
+
+}
diff --git a/jsf-demo/viewExpired/src/main/java/com/sun/faces/ViewExpiredExceptionExceptionHandler.java b/jsf-demo/viewExpired/src/main/java/com/sun/faces/ViewExpiredExceptionExceptionHandler.java
new file mode 100644
index 0000000..297a8da
--- /dev/null
+++ b/jsf-demo/viewExpired/src/main/java/com/sun/faces/ViewExpiredExceptionExceptionHandler.java
@@ -0,0 +1,111 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces;
+
+import java.util.Iterator;
+import java.util.Map;
+import javax.faces.FacesException;
+import javax.faces.application.NavigationHandler;
+import javax.faces.application.ViewExpiredException;
+import javax.faces.component.UIViewRoot;
+import javax.faces.context.ExceptionHandler;
+import javax.faces.context.ExceptionHandlerWrapper;
+import javax.faces.context.FacesContext;
+import javax.faces.event.ExceptionQueuedEvent;
+import javax.faces.event.ExceptionQueuedEventContext;
+
+public class ViewExpiredExceptionExceptionHandler extends ExceptionHandlerWrapper {
+
+    private ExceptionHandler wrapped;
+
+    public ViewExpiredExceptionExceptionHandler(ExceptionHandler wrapped) {
+        this.wrapped = wrapped;
+    }
+
+    @Override
+    public ExceptionHandler getWrapped() {
+        return this.wrapped;
+    }
+
+    @Override
+    public void handle() throws FacesException {
+        for (Iterator<ExceptionQueuedEvent> i = getUnhandledExceptionQueuedEvents().iterator(); i.hasNext();) {
+            ExceptionQueuedEvent event = i.next();
+            ExceptionQueuedEventContext context = (ExceptionQueuedEventContext) event.getSource();
+            Throwable t = context.getException();
+            if (t instanceof ViewExpiredException) {
+                ViewExpiredException vee = (ViewExpiredException) t;
+                FacesContext fc = FacesContext.getCurrentInstance();
+                Map<String, Object> requestMap = fc.getExternalContext().getRequestMap();
+                NavigationHandler nav =
+                        fc.getApplication().getNavigationHandler();
+                this.thisMethodIsOnlyNecessaryBecauseOfTheWayWeForceTheViewExpiredException(fc);
+                try {
+                    // Push some useful stuff to the request scope for
+                    // use in the page
+                    requestMap.put("currentViewId", vee.getViewId());
+
+                    nav.handleNavigation(fc, null, "viewExpired");
+                    fc.renderResponse();
+
+                } finally {
+                    i.remove();
+                }
+            } 
+        }
+        // At this point, the queue will not contain any ViewExpiredEvents.
+        // Therefore, let the parent handle them.
+        getWrapped().handle();
+
+    }
+
+    
+
+    private void thisMethodIsOnlyNecessaryBecauseOfTheWayWeForceTheViewExpiredException(FacesContext context) {
+        UIViewRoot root = context.getApplication().getViewHandler().createView(context, "/main.xhtml");
+        context.setViewRoot(root);
+
+
+    }
+
+
+
+}
diff --git a/jsf-demo/viewExpired/src/main/java/com/sun/faces/ViewExpiredExceptionExceptionHandlerFactory.java b/jsf-demo/viewExpired/src/main/java/com/sun/faces/ViewExpiredExceptionExceptionHandlerFactory.java
new file mode 100644
index 0000000..71aa657
--- /dev/null
+++ b/jsf-demo/viewExpired/src/main/java/com/sun/faces/ViewExpiredExceptionExceptionHandlerFactory.java
@@ -0,0 +1,64 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces;
+
+import javax.faces.context.ExceptionHandler;
+import javax.faces.context.ExceptionHandlerFactory;
+
+public class ViewExpiredExceptionExceptionHandlerFactory extends ExceptionHandlerFactory {
+
+    public ViewExpiredExceptionExceptionHandlerFactory() {
+    }
+
+    private ExceptionHandlerFactory parent;
+
+    public ViewExpiredExceptionExceptionHandlerFactory(ExceptionHandlerFactory parent) {
+        this.parent = parent;
+    }
+
+    @Override
+    public ExceptionHandler getExceptionHandler() {
+        ExceptionHandler parentHandler = parent.getExceptionHandler();
+        return new ViewExpiredExceptionExceptionHandler(parentHandler);
+    }
+
+
+}
diff --git a/jsf-demo/viewExpired/src/main/webapp/WEB-INF/faces-config.xml b/jsf-demo/viewExpired/src/main/webapp/WEB-INF/faces-config.xml
new file mode 100644
index 0000000..68d17c0
--- /dev/null
+++ b/jsf-demo/viewExpired/src/main/webapp/WEB-INF/faces-config.xml
@@ -0,0 +1,57 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
+    version="2.0">
+
+  <factory>
+      <exception-handler-factory>com.sun.faces.ViewExpiredExceptionExceptionHandlerFactory</exception-handler-factory>
+  </factory>
+  <application>
+    <view-handler>com.sun.faces.NullRestoreViewViewHandler</view-handler>
+  </application>
+
+</faces-config>
+
diff --git a/jsf-demo/viewExpired/src/main/webapp/WEB-INF/web.xml b/jsf-demo/viewExpired/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..0a8c78e
--- /dev/null
+++ b/jsf-demo/viewExpired/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
+
+    <display-name>viewExpired</display-name>
+    <description>viewExpired</description>
+
+    <context-param>
+        <description>
+            Tell the runtime where we are in the project development
+            lifecycle.  Valid values are:
+            Development, UnitTest, SystemTest, or Production.
+            The runtime will display helpful hints to correct common mistakes
+            when the value is Development.
+        </description>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>Development</param-value>
+    </context-param>
+
+    <!-- Faces Servlet -->
+  <servlet>
+    <servlet-name>Faces Servlet</servlet-name>
+    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+    <load-on-startup>1</load-on-startup>
+  </servlet>
+
+   <servlet-mapping>
+       <servlet-name>Faces Servlet</servlet-name>
+       <url-pattern>/faces/*</url-pattern>
+   </servlet-mapping>
+
+   <welcome-file-list>
+     <welcome-file>faces/main.xhtml</welcome-file>
+   </welcome-file-list>
+
+
+</web-app>
diff --git a/jsf-demo/viewExpired/src/main/webapp/main.xhtml b/jsf-demo/viewExpired/src/main/webapp/main.xhtml
new file mode 100644
index 0000000..3fb674d
--- /dev/null
+++ b/jsf-demo/viewExpired/src/main/webapp/main.xhtml
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+<f:view contentType="text/html"/>
+<h:head>
+  <title>A Simple JavaServer Faces 2.0 View</title>
+</h:head>
+<h:body>
+  <h:form prependId="false">
+    <p><h:commandButton id="button" value="submit" /></p>
+  </h:form>
+</h:body>
+</html>
diff --git a/jsf-demo/viewExpired/src/main/webapp/viewExpired.xhtml b/jsf-demo/viewExpired/src/main/webapp/viewExpired.xhtml
new file mode 100644
index 0000000..cacfec1
--- /dev/null
+++ b/jsf-demo/viewExpired/src/main/webapp/viewExpired.xhtml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+<f:view contentType="text/html; charset=iso-8859-1"/>
+<h:head>
+  <title>Nice View Expired Page</title>
+</h:head>
+<h:body>
+<h:form>
+
+    <p>To protect your security, we have taken the liberty of logging you
+    out. Those who sacrifice liberty for security deserve to have
+    their views expired.</p>
+
+    <p>You were on page #{currentViewId}.  Maybe that's useful.</p>
+
+    <a href="http://weblogs.java.net/blog/edburns/archive/2009/09/03/dealing-gracefully-viewexpiredexception-jsf2">
+        Blog discussing this example.</a>
+
+  </h:form>
+</h:body>
+</html>
diff --git a/jsf-ri/LICENSE.TXT b/jsf-ri/LICENSE.TXT
index b4ffbe7..f95cf37 100644
--- a/jsf-ri/LICENSE.TXT
+++ b/jsf-ri/LICENSE.TXT
@@ -1,96 +1,266 @@
-COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0 
+COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0
 
-1. Definitions. 
+1. Definitions.
 
-1.1. Contributor means each individual or entity that creates or contributes to the creation of Modifications. 
+1.1. "Contributor" means each individual or entity that creates or contributes to the creation of Modifications.
 
-1.2. Contributor Version means the combination of the Original Software, prior Modifications used by a Contributor (if any), and the Modifications made by that particular Contributor. 
+1.2. "Contributor Version" means the combination of the Original Software, prior Modifications used by a Contributor (if any), and the Modifications made by that particular Contributor.
 
-1.3. Covered Software means (a) the Original Software, or (b) Modifications, or (c) the combination of files containing Original Software with files containing Modifications, in each case including portions thereof. 
+1.3. "Covered Software" means (a) the Original Software, or (b) Modifications, or (c) the combination of files containing Original Software with files containing Modifications, in each case including portions thereof.
 
-1.4. Executable means the Covered Software in any form other than Source Code. 
+1.4. "Executable" means the Covered Software in any form other than Source Code.
 
-1.5. Initial Developer means the individual or entity that first makes Original Software available under this License. 
+1.5. "Initial Developer" means the individual or entity that first makes Original Software available under this License.
 
-1.6. Larger Work means a work which combines Covered Software or portions thereof with code not governed by the terms of this License. 
+1.6. "Larger Work" means a work which combines Covered Software or portions thereof with code not governed by the terms of this License.
 
-1.7. License means this document. 
+1.7. "License" means this document.
 
-1.8. Licensable means having the right to grant, to the maximum extent possible, whether at the time of the initial grant or subsequently acquired, any and all of the rights conveyed herein. 
+1.8. "Licensable" means having the right to grant, to the maximum extent possible, whether at the time of the initial grant or subsequently acquired, any and all of the rights conveyed herein.
 
-1.9. Modifications means the Source Code and Executable form of any of the following: A. Any file that results from an addition to, deletion from or modification of the contents of a file containing Original Software or previous Modifications; B. Any new file that contains any part of the Original Software or previous Modification; or C. Any new file that is contributed or otherwise made available under the terms of this License. 
+1.9. "Modifications" means the Source Code and Executable form of any of the following:
 
-1.10. Original Software means the Source Code and Executable form of computer software code that is originally released under this License. 
+A. Any file that results from an addition to, deletion from or modification of the contents of a file containing Original Software or previous Modifications;
 
-1.11. Patent Claims means any patent claim(s), now owned or hereafter acquired, including without limitation, method, process, and apparatus claims, in any patent Licensable by grantor. 
+B. Any new file that contains any part of the Original Software or previous Modification; or
 
-1.12. Source Code means (a) the common form of computer software code in which modifications are made and (b) associated documentation included in or with such code. 
+C. Any new file that is contributed or otherwise made available under the terms of this License.
 
-1.13. You (or Your) means an individual or a legal entity exercising rights under, and complying with all of the terms of, this License. For legal entities, You includes any entity which controls, is controlled by, or is under common control with You. For purposes of this definition, control means (a) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (b) ownership of more than fifty percent (50%) of the outstanding sh [...]
+1.10. "Original Software" means the Source Code and Executable form of computer software code that is originally released under this License.
+
+1.11. "Patent Claims" means any patent claim(s), now owned or hereafter acquired, including without limitation, method, process, and apparatus claims, in any patent Licensable by grantor.
+
+1.12. "Source Code" means (a) the common form of computer software code in which modifications are made and (b) associated documentation included in or with such code.
+
+1.13. "You" (or "Your") means an individual or a legal entity exercising rights under, and complying with all of the terms of, this License. For legal entities, "You" includes any entity which controls, is controlled by, or is under common control with You. For purposes of this definition, "control" means (a) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (b) ownership of more than fifty percent (50%) of the outsta [...]
 
 2. License Grants.
 
-2.1. The Initial Developer Grant. Conditioned upon Your compliance with Section 3.1 below and subject to third party intellectual property claims, the Initial Developer hereby grants You a world-wide, royalty-free, non-exclusive license: 
+2.1. The Initial Developer Grant.
 
-(a) under intellectual property rights (other than patent or trademark) Licensable by Initial Developer, to use, reproduce, modify, display, perform, sublicense and distribute the Original Software (or portions thereof), with or without Modifications, and/or as part of a Larger Work; and 
+Conditioned upon Your compliance with Section 3.1 below and subject to third party intellectual property claims, the Initial Developer hereby grants You a world-wide, royalty-free, non-exclusive license:
 
-(b) under Patent Claims infringed by the making, using or selling of Original Software, to make, have made, use, practice, sell, and offer for sale, and/or otherwise dispose of the Original Software (or portions thereof);
+(a) under intellectual property rights (other than patent or trademark) Licensable by Initial Developer, to use, reproduce, modify, display, perform, sublicense and distribute the Original Software (or portions thereof), with or without Modifications, and/or as part of a Larger Work; and
 
-(c) The licenses granted in Sections 2.1(a) and (b) are effective on the date Initial Developer first distributes or otherwise makes the Original Software available to a third party under the terms of this License;
+(b) under Patent Claims infringed by the making, using or selling of Original Software, to make, have made, use, practice, sell, and offer for sale, and/or otherwise dispose of the Original Software (or portions thereof).
 
-(d) Notwithstanding Section 2.1(b) above, no patent license is granted: (1) for code that You delete from the Original Software, or (2) for infringements caused by: (i) the modification of the Original Software, or (ii) the combination of the Original Software with other software or devices. 
+(c) The licenses granted in Sections 2.1(a) and (b) are effective on the date Initial Developer first distributes or otherwise makes the Original Software available to a third party under the terms of this License.
 
-2.2. Contributor Grant. Conditioned upon Your compliance with Section 3.1 below and subject to third party intellectual property claims, each Contributor hereby grants You a world-wide, royalty-free, non-exclusive license: 
+(d) Notwithstanding Section 2.1(b) above, no patent license is granted: (1) for code that You delete from the Original Software, or (2) for infringements caused by: (i) the modification of the Original Software, or (ii) the combination of the Original Software with other software or devices.
 
-(a) under intellectual property rights (other than patent or trademark) Licensable by Contributor to use, reproduce, modify, display, perform, sublicense and distribute the Modifications created by such Contributor (or portions thereof), either on an unmodified basis, with other Modifications, as Covered Software and/or as part of a Larger Work; and 
+2.2. Contributor Grant.
 
-(b) under Patent Claims infringed by the making, using, or selling of Modifications made by that Contributor either alone and/or in combination with its Contributor Version (or portions of such combination), to make, use, sell, offer for sale, have made, and/or otherwise dispose of: (1) Modifications made by that Contributor (or portions thereof); and (2) the combination of Modifications made by that Contributor with its Contributor Version (or portions of such combination). 
+Conditioned upon Your compliance with Section 3.1 below and subject to third party intellectual property claims, each Contributor hereby grants You a world-wide, royalty-free, non-exclusive license:
+
+(a) under intellectual property rights (other than patent or trademark) Licensable by Contributor to use, reproduce, modify, display, perform, sublicense and distribute the Modifications created by such Contributor (or portions thereof), either on an unmodified basis, with other Modifications, as Covered Software and/or as part of a Larger Work; and
+
+(b) under Patent Claims infringed by the making, using, or selling of Modifications made by that Contributor either alone and/or in combination with its Contributor Version (or portions of such combination), to make, use, sell, offer for sale, have made, and/or otherwise dispose of: (1) Modifications made by that Contributor (or portions thereof); and (2) the combination of Modifications made by that Contributor with its Contributor Version (or portions of such combination).
 
 (c) The licenses granted in Sections 2.2(a) and 2.2(b) are effective on the date Contributor first distributes or otherwise makes the Modifications available to a third party.
 
-(d) Notwithstanding Section 2.2(b) above, no patent license is granted: (1) for any code that Contributor has deleted from the Contributor Version; (2) for infringements caused by: (i) third party modifications of Contributor Version, or (ii) the combination of Modifications made by that Contributor with other software (except as part of the Contributor Version) or other devices; or (3) under Patent Claims infringed by Covered Software in the absence of Modifications made by that Contributor. 
+(d) Notwithstanding Section 2.2(b) above, no patent license is granted: (1) for any code that Contributor has deleted from the Contributor Version; (2) for infringements caused by: (i) third party modifications of Contributor Version, or (ii) the combination of Modifications made by that Contributor with other software (except as part of the Contributor Version) or other devices; or (3) under Patent Claims infringed by Covered Software in the absence of Modifications made by that Contributor.
+
+3. Distribution Obligations.
+
+3.1. Availability of Source Code.
+
+Any Covered Software that You distribute or otherwise make available in Executable form must also be made available in Source Code form and that Source Code form must be distributed only under the terms of this License. You must include a copy of this License with every copy of the Source Code form of the Covered Software You distribute or otherwise make available. You must inform recipients of any such Covered Software in Executable form as to how they can obtain such Covered Software i [...]
+
+3.2. Modifications.
+
+The Modifications that You create or to which You contribute are governed by the terms of this License. You represent that You believe Your Modifications are Your original creation(s) and/or You have sufficient rights to grant the rights conveyed by this License.
+
+3.3. Required Notices.
+
+You must include a notice in each of Your Modifications that identifies You as the Contributor of the Modification. You may not remove or alter any copyright, patent or trademark notices contained within the Covered Software, or any notices of licensing or any descriptive text giving attribution to any Contributor or the Initial Developer.
+
+3.4. Application of Additional Terms.
+
+You may not offer or impose any terms on any Covered Software in Source Code form that alters or restricts the applicable version of this License or the recipients� rights hereunder. You may choose to offer, and to charge a fee for, warranty, support, indemnity or liability obligations to one or more recipients of Covered Software. However, you may do so only on Your own behalf, and not on behalf of the Initial Developer or any Contributor. You must make it absolutely clear that any such [...]
+
+3.5. Distribution of Executable Versions.
+
+You may distribute the Executable form of the Covered Software under the terms of this License or under the terms of a license of Your choice, which may contain terms different from this License, provided that You are in compliance with the terms of this License and that the license for the Executable form does not attempt to limit or alter the recipient�s rights in the Source Code form from the rights set forth in this License. If You distribute the Covered Software in Executable form u [...]
+
+3.6. Larger Works.
+
+You may create a Larger Work by combining Covered Software with other code not governed by the terms of this License and distribute the Larger Work as a single product. In such a case, You must make sure the requirements of this License are fulfilled for the Covered Software.
+
+4. Versions of the License.
+
+4.1. New Versions.
+
+Oracle America, Inc. is the initial license steward and may publish revised and/or new versions of this License from time to time. Each version will be given a distinguishing version number. Except as provided in Section 4.3, no one other than the license steward has the right to modify this License.
+
+4.2. Effect of New Versions.
+
+You may always continue to use, distribute or otherwise make the Covered Software available under the terms of the version of the License under which You originally received the Covered Software. If the Initial Developer includes a notice in the Original Software prohibiting it from being distributed or otherwise made available under any subsequent version of the License, You must distribute and make the Covered Software available under the terms of the version of the License under which [...]
+
+4.3. Modified Versions.
+
+When You are an Initial Developer and You want to create a new license for Your Original Software, You may create and use a modified version of this License if You: (a) rename the license and remove any references to the name of the license steward (except to note that the license differs from this License); and (b) otherwise make it clear that the license contains terms which differ from this License.
+
+5. DISCLAIMER OF WARRANTY.
+
+COVERED SOFTWARE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE COVERED SOFTWARE IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED SOFTWARE IS WITH YOU. SHOULD ANY COVERED SOFTWARE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE [...]
+
+6. TERMINATION.
+
+6.1. This License and the rights granted hereunder will terminate automatically if You fail to comply with terms herein and fail to cure such breach within 30 days of becoming aware of the breach. Provisions which, by their nature, must remain in effect beyond the termination of this License shall survive.
+
+6.2. If You assert a patent infringement claim (excluding declaratory judgment actions) against Initial Developer or a Contributor (the Initial Developer or Contributor against whom You assert such claim is referred to as "Participant") alleging that the Participant Software (meaning the Contributor Version where the Participant is a Contributor or the Original Software where the Participant is the Initial Developer) directly or indirectly infringes any patent, then any and all rights gr [...]
+
+6.3. In the event of termination under Sections 6.1 or 6.2 above, all end user licenses that have been validly granted by You or any distributor hereunder prior to termination (excluding licenses granted to You by any distributor) shall survive termination.
+
+7. LIMITATION OF LIABILITY.
+
+UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED SOFTWARE, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOST PROFITS, LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL O [...]
+
+8. U.S. GOVERNMENT END USERS.
+
+The Covered Software is a "commercial item," as that term is defined in 48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer software" (as that term is defined at 48 C.F.R. � 252.227-7014(a)(1)) and "commercial computer software documentation" as such terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), all U.S. Government End Users acquire Covered Software with only those rights set forth he [...]
+
+9. MISCELLANEOUS.
+
+This License represents the complete agreement concerning subject matter hereof. If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it enforceable. This License shall be governed by the law of the jurisdiction specified in a notice contained within the Original Software (except to the extent applicable law, if any, provides otherwise), excluding such jurisdiction�s conflict-of-law provisions. Any litigation  [...]
+
+10. RESPONSIBILITY FOR CLAIMS.
+
+As between Initial Developer and the Contributors, each party is responsible for claims and damages arising, directly or indirectly, out of its utilization of rights under this License and You agree to work with Initial Developer and Contributors to distribute such responsibility on an equitable basis. Nothing herein is intended or shall be deemed to constitute any admission of liability.
+
+NOTICE PURSUANT TO SECTION 9 OF THE COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL)
+
+The code released under the CDDL shall be governed by the laws of the State of California (excluding conflict-of-law provisions). Any litigation relating to this License shall be subject to the jurisdiction of the Federal Courts of the Northern District of California and the state courts of the State of California, with venue lying in Santa Clara County, California.
+
+The GNU General Public License (GPL) Version 2, June 1991
+
+Copyright (C) 1989, 1991 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.
+
+Preamble
+
+The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library Genera [...]
+
+When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things.
+
+To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it.
+
+For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights.
+
+We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software.
+
+Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations.
+
+Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all.
+
+The precise terms and conditions for copying, distribution and modification follow.
+
+TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. ( [...]
+
+Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does.
+
+1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee.
+
+2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions:
+
+a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change.
+
+b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License.
+
+c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is i [...]
+
+These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose p [...]
+
+Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License.
+
+3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following:
+
+a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or,
+
+b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or,
+
+c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major co [...]
+
+If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code.
+
+4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.
+
+5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works ba [...]
+
+6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License.
+
+7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not dist [...]
+
+If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/dono [...]
+
+This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License.
+
+8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License.
+
+9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation.
+
+10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally.
+
+NO WARRANTY
+
+11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  [...]
 
-3. Distribution Obligations. 
+12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO  [...]
 
-3.1. Availability of Source Code. Any Covered Software that You distribute or otherwise make available in Executable form must also be made available in Source Code form and that Source Code form must be distributed only under the terms of this License. You must include a copy of this License with every copy of the Source Code form of the Covered Software You distribute or otherwise make available. You must inform recipients of any such Covered Software in Executable form as to how they  [...]
+END OF TERMS AND CONDITIONS
 
-3.2. Modifications. The Modifications that You create or to which You contribute are governed by the terms of this License. You represent that You believe Your Modifications are Your original creation(s) and/or You have sufficient rights to grant the rights conveyed by this License. 
+How to Apply These Terms to Your New Programs
 
-3.3. Required Notices. You must include a notice in each of Your Modifications that identifies You as the Contributor of the Modification. You may not remove or alter any copyright, patent or trademark notices contained within the Covered Software, or any notices of licensing or any descriptive text giving attribution to any Contributor or the Initial Developer. 
+If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms.
 
-3.4. Application of Additional Terms. You may not offer or impose any terms on any Covered Software in Source Code form that alters or restricts the applicable version of this License or the recipients rights hereunder. You may choose to offer, and to charge a fee for, warranty, support, indemnity or liability obligations to one or more recipients of Covered Software. However, you may do so only on Your own behalf, and not on behalf of the Initial Developer or any Contributor. You must m [...]
+To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found.
 
-3.5. Distribution of Executable Versions. You may distribute the Executable form of the Covered Software under the terms of this License or under the terms of a license of Your choice, which may contain terms different from this License, provided that You are in compliance with the terms of this License and that the license for the Executable form does not attempt to limit or alter the recipients rights in the Source Code form from the rights set forth in this License. If You distribute  [...]
+One line to give the program's name and a brief idea of what it does.
 
-3.6. Larger Works. You may create a Larger Work by combining Covered Software with other code not governed by the terms of this License and distribute the Larger Work as a single product. In such a case, You must make sure the requirements of this License are fulfilled for the Covered Software. 
+Copyright (C)
 
-4. Versions of the License. 
+This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
 
-4.1. New Versions. Sun Microsystems, Inc. is the initial license steward and may publish revised and/or new versions of this License from time to time. Each version will be given a distinguishing version number. Except as provided in Section 4.3, no one other than the license steward has the right to modify this License. 
+This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
 
-4.2. Effect of New Versions. You may always continue to use, distribute or otherwise make the Covered Software available under the terms of the version of the License under which You originally received the Covered Software. If the Initial Developer includes a notice in the Original Software prohibiting it from being distributed or otherwise made available under any subsequent version of the License, You must distribute and make the Covered Software available under the terms of the versi [...]
+You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
 
-4.3. Modified Versions. When You are an Initial Developer and You want to create a new license for Your Original Software, You may create and use a modified version of this License if You: (a) rename the license and remove any references to the name of the license steward (except to note that the license differs from this License); and (b) otherwise make it clear that the license contains terms which differ from this License. 
+Also add information on how to contact you by electronic and paper mail.
 
-5. DISCLAIMER OF WARRANTY. COVERED SOFTWARE IS PROVIDED UNDER THIS LICENSE ON AN AS IS BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE COVERED SOFTWARE IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED SOFTWARE IS WITH YOU. SHOULD ANY COVERED SOFTWARE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL DEVELOPER OR ANY OTHE [...]
+If the program is interactive, make it output a short notice like this when it starts in an interactive mode:
 
-6. TERMINATION. 
+Gnomovision version 69, Copyright (C) year name of author
+Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details.
 
-6.1. This License and the rights granted hereunder will terminate automatically if You fail to comply with terms herein and fail to cure such breach within 30 days of becoming aware of the breach. Provisions which, by their nature, must remain in effect beyond the termination of this License shall survive. 
+The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program.
 
-6.2. If You assert a patent infringement claim (excluding declaratory judgment actions) against Initial Developer or a Contributor (the Initial Developer or Contributor against whom You assert such claim is referred to as Participant) alleging that the Participant Software (meaning the Contributor Version where the Participant is a Contributor or the Original Software where the Participant is the Initial Developer) directly or indirectly infringes any patent, then any and all rights gran [...]
+You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names:
 
-6.3. In the event of termination under Sections 6.1 or 6.2 above, all end user licenses that have been validly granted by You or any distributor hereunder prior to termination (excluding licenses granted to You by any distributor) shall survive termination. 
+Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker.
 
-7. LIMITATION OF LIABILITY. UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED SOFTWARE, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOST PROFITS, LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR M [...]
+signature of Ty Coon, 1 April 1989
+Ty Coon, President of Vice
 
-8. U.S. GOVERNMENT END USERS. The Covered Software is a commercial item, as that term is defined in 48 C.F.R. 2.101 (Oct. 1995), consisting of commercial computer software (as that term is defined at 48 C.F.R. 252.227-7014(a)(1)) and commercial computer software documentation as such terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), all U.S. Government End Users acquire Covered Software with only tho [...]
+This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Library General Public License instead of this License.
 
-9. MISCELLANEOUS. This License represents the complete agreement concerning subject matter hereof. If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it enforceable. This License shall be governed by the law of the jurisdiction specified in a notice contained within the Original Software (except to the extent applicable law, if any, provides otherwise), excluding such jurisdictions conflict-of-law provisions [...]
+"CLASSPATH" EXCEPTION TO THE GPL VERSION 2
 
-10. RESPONSIBILITY FOR CLAIMS. As between Initial Developer and the Contributors, each party is responsible for claims and damages arising, directly or indirectly, out of its utilization of rights under this License and You agree to work with Initial Developer and Contributors to distribute such responsibility on an equitable basis. Nothing herein is intended or shall be deemed to constitute any admission of liability. 
-**********************************************************************
+Certain source files distributed by Oracle America, Inc. are subject to the following clarification and special exception to the GPL Version 2, but only where Oracle has expressly included in the particular source file's header the words
+"Oracle designates this particular file as subject to the "Classpath" exception as provided by Oracle in the License file that accompanied this code."
 
-NOTICE PURSUANT TO SECTION 9 OF THE COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL): This code is released under the CDDL and shall be governed by the laws of the State of California (excluding conflict-of-law provisions). Any litigation relating to this License shall be subject to the jurisdiction of the Federal Courts of the Northern District of California and the state courts of the State of California, with venue lying in Santa Clara County, California.
+Linking this library statically or dynamically with other modules is making a combined work based on this library. Thus, the terms and conditions of the GNU General Public License Version 2 cover the whole combination.
 
-*********************************************************************
+As a special exception, the copyright holders of this library give you permission to link this library with independent modules to produce an executable, regardless of the license terms of these independent modules, and to copy and distribute the resulting executable under terms of your choice, provided that you also meet, for each linked independent module, the terms and conditions of the license of that module.? An independent module is a module which is not derived from or based on th [...]
diff --git a/jsf-ri/build-pre-maven-rename.xml b/jsf-ri/build-pre-maven-rename.xml
new file mode 100644
index 0000000..02eecf1
--- /dev/null
+++ b/jsf-ri/build-pre-maven-rename.xml
@@ -0,0 +1,838 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!-- ************ JSF build file ************************************** -->
+
+<project name="JSF-RI" default="main" basedir=".">
+
+    <property name="build.dir" value="build.pre-maven-rename"/>
+    <property name="build-post-maven-rename.dir" value="build"/>
+
+    <!-- ************ Per user local properties ******************************* -->
+
+    <property file="${user.home}/build.properties"/>    
+    <property file="../build.properties"/>    
+    <import file="${jsf.build.home}/common/ant/common.xml"/>
+    <import file="${jsf.build.home}/common/ant/maven-pre-maven-rename.xml"/>
+    <property name="jsf-api.jar" value="${api.dir}/${build.dir}/lib/jsf-api.jar"/>
+
+
+    <!-- ******************* Structural ************************** -->
+
+    <!-- The base directory for compilation targets -->
+    <property name="target.dir" value="target"/>
+   <property name="build.classes.dir" value="${build.dir}/classes"/>
+    <property name="build.generate.dir" value="${build.dir}/generate"/>
+    <property name="build.generate.tld.dir"
+              value="${build.generate.dir}/conf/share"/>
+
+    <!-- The base directory for binary dependency libs under local version
+         control -->
+    <property name="local.lib.dir"
+              value="${basedir}/../lib"/>
+
+    <!-- The base directory for distribution targets -->
+    <property name="dist.dir" value="${basedir}/dist"/>
+
+    <!-- The base directory for component sources -->
+    <property name="source.dir" value="${basedir}/src/main/java"/>
+    <property name="resource.dir" value="${basedir}/src/main/resources"/>
+
+    <!-- The base directory for component tests -->
+    <property name="test.dir" value="${basedir}/test"/>
+
+    <!-- Misc -->
+    <property name="conf.share.dir" value="${basedir}/conf/share"/>
+    <property name="name" value="jsf-impl"/>
+
+    <property name="dependency.base.dir" value="${jsf.build.home}/dependencies"/>
+    <property name="dependency.jar.dir" value="${dependency.base.dir}/jars"/>
+    <property name="yuicompressor.jar" value="${dependency.jar.dir}/yuicompressor.jar"/>
+    <property name="build.javadocs.dir" value="${build.dir}/javadocs"/>
+    <property name="javadoc.private" value="true"/>
+    <property name="javadoc.protected" value="false"/>
+    <property name="artifact-id" value="jsf-impl"/>
+    <property name="DocName" value="Mojarra Implementation Javadoc"/>
+
+    <path id="impl.compile.classpath">
+        <path refid="cdi.classpath"/>
+        <pathelement location="${jsf-api.jar}"/>
+        <path refid="apache.commons.classpath"/>
+        <path refid="compile.classpath"/>
+        <pathelement location="${jsf-tools.jar}"/>
+        <pathelement location="${tools.dir}/build/classes"/>
+    </path>
+
+
+    <!-- ************ Executable Targets ************************************** -->
+
+
+    <target name="init"
+            description="Initialize and evaluate conditionals">
+        <echo message="-------- ${impl.name} ${impl.version} --------"/>
+    </target>
+
+    <target name="prepare" depends="init"
+            description="Prepare build directory">
+        <mkdir dir="${build.dir}"/>
+        <mkdir dir="${build.generate.dir}"/>
+        <mkdir dir="${build.generate.tld.dir}"/>
+        <mkdir dir="${build.classes.dir}"/>
+        <mkdir dir="${build.classes.dir}/com/sun/faces/xhtml"/>
+        <mkdir dir="${build.javadocs.dir}"/>
+        <mkdir dir="${build.dir}/vdldocs/jsp"/>
+        <mkdir dir="${build.dir}/vdldocs/facelets"/>
+        <mkdir dir="${build.dir}/lib"/>
+        <delete failonerror="false" 
+                dir="${build-post-maven-rename.dir}/classes/javax"/>
+        <antcall target="delete.and.remkdir.build.generate.dir" />
+    </target>
+
+    <target name="delete.and.remkdir.build.generate.dir"
+            unless="skip.delete.generate">
+        <delete dir="${build.generate.dir}"/>
+        <mkdir dir="${build.generate.dir}"/>
+    </target>
+
+    <target name="copy.template.sources" depends="prepare"
+            description="Copy template sources from ${tools.dir}/template-source">
+
+        <mkdir dir="${build.generate.dir}/com/sun/faces/util"/>
+        <filter token="protection" value="public"/>
+
+        <filter token="package" value="com.sun.faces.util"/>
+        <copy file="${tools.dir}/template-src/MessageFactory.java"
+              todir="${build.generate.dir}/com/sun/faces/util"
+              filtering="true"/>
+        <copy file="${tools.dir}/template-src/TypedCollections.java"
+              todir="${build.generate.dir}/com/sun/faces/util"
+              filtering="true"/>
+        <filter token="package" value="com.sun.faces.application.view"/>
+        <copy file="${tools.dir}/template-src/StateHolderSaver.java"
+              todir="${build.generate.dir}/com/sun/faces/application/view"
+              filtering="true"/>
+        <filter token="package" value="com.sun.faces.application"/>
+        <copy file="${tools.dir}/template-src/SharedUtils.java"
+              todir="${build.generate.dir}/com/sun/faces/application"
+              filtering="true"/>
+        <filter token="package" value="com.sun.faces.context"/>
+        <copy file="${tools.dir}/template-src/StateHolderSaver.java"
+              todir="${build.generate.dir}/com/sun/faces/context"
+              filtering="true"/>
+        <copy file="${tools.dir}/template-src/SharedUtils.java"
+              todir="${build.generate.dir}/com/sun/faces/application"
+              filtering="true"/>
+        <filter token="package" value="com.sun.faces.mgbean"/>
+        <copy file="${tools.dir}/template-src/SharedUtils.java"
+              todir="${build.generate.dir}/com/sun/faces/mgbean"
+              filtering="true"/>
+
+        <filter token="package" value="com.sun.faces.config.processor"/>
+        <copy file="${tools.dir}/template-src/SharedUtils.java"
+              todir="${build.generate.dir}/com/sun/faces/config/processor"
+              filtering="true"/>
+
+        <filter token="package" value="com.sun.faces.el"/>
+        <copy file="${tools.dir}/template-src/SharedUtils.java"
+              todir="${build.generate.dir}/com/sun/faces/el"
+              filtering="true"/>
+
+        <filter token="protection" value="public"/>
+
+        <filter token="package" value="com.sun.faces.application"/>
+        <copy todir="${build.generate.dir}/com/sun/faces/application"
+              filtering="true">
+            <fileset dir="${api.dir}/template-src">
+                <include name="*Adapter.java"/>
+            </fileset>
+        </copy>
+
+        <replace
+              file="${build.generate.dir}/com/sun/faces/application/MethodBindingMethodExpressionAdapter.java"
+              token="@serialVersionUID@"
+              value="6351778415298720238L"/>
+
+        <replace
+              file="${build.generate.dir}/com/sun/faces/application/MethodExpressionMethodBindingAdapter.java"
+              token="@serialVersionUID@"
+              value="5639227653537610567L"/>
+
+        <replace
+              file="${build.generate.dir}/com/sun/faces/application/ValueExpressionValueBindingAdapter.java"
+              token="@serialVersionUID@"
+              value="2990621816592041196L"/>
+
+        <replace
+              file="${build.generate.dir}/com/sun/faces/application/ValueBindingValueExpressionAdapter.java"
+              token="@serialVersionUID@"
+              value="7410146713650507654L"/>
+        <replace
+              file="${build.generate.dir}/com/sun/faces/application/view/StateHolderSaver.java"
+              token="@serialVersionUID@"
+              value="4866548262845392093L"/>
+
+        <replace
+              file="${build.generate.dir}/com/sun/faces/context/StateHolderSaver.java"
+              token="@serialVersionUID@"
+              value="146780782953074472L"/>
+    </target>
+
+    <target name="check.taglib.generation.necessity">
+        <uptodate property="skip.taglib.generation"
+                  targetfile="${build.generate.dir}/last-taglib-generation">
+            <srcfiles dir="${api.dir}/doc">
+                <include name="standard-html-renderkit.xml"/>
+            </srcfiles>
+        </uptodate>
+    </target>
+
+    <target name="generate"
+            depends="check.taglib.generation.necessity"
+            unless="skip.taglib.generation">
+        <path id="ant.classpath">
+            <pathelement location="${myenv.ANT_HOME}/lib/ant.jar"/>
+        </path>
+
+        <copy todir="${build.dir}">
+            <fileset dir="${tools.dir}/conf">
+                <include name="TAG-*"/>
+            </fileset>
+        </copy>
+
+        <mkdir dir="${tools.dir}/build/classes"/>
+        <copy todir="${tools.dir}/build/classes">
+            <fileset dir="${impl.dir}/src/main/resources"
+                     includes="**/LogStrings.properties"/>
+        </copy>
+        <copy todir="${tools.dir}/build/classes/com/sun/faces"
+              flatten="true">
+            <fileset dir="${api.dir}/doc"
+                      includes="*.dtd,*.xsd"/>
+        </copy>
+        <taskdef name="generateTaglib"
+                 classname="com.sun.faces.ant.TaglibGenTask">
+            <classpath>
+                <pathelement location="${jsf-tools.jar}"/>
+                <pathelement location="${tools.dir}/build/classes"/>
+            </classpath>
+        </taskdef>
+        <taskdef name="generateAttrManager"
+                 classname="com.sun.faces.ant.AttributeManagerGenTask">
+            <classpath>
+                <pathelement location="${jsf-tools.jar}"/>
+                <pathelement location="${tools.dir}/build/classes"/>
+            </classpath>
+        </taskdef>
+        <generateTaglib
+              generatorConfig="${tools.dir}/conf/HtmlBasicTaglib21.pre-maven-rename.properties"
+              facesConfig="${standard.renderkit.xml}"
+              fork="true">
+            <classpath>
+                <path refid="impl.compile.classpath"/>
+            </classpath>
+            <sysproperty key="java.endorsed.dirs" value="${endorsed.dirs}"/>
+            <jvmarg line="${debug.jvm.args}"/>
+            <assertions>
+                <enable/>
+            </assertions>
+        </generateTaglib>
+        <generateAttrManager
+              generatorConfig="${tools.dir}/conf/HtmlBasicTaglib21.pre-maven-rename.properties"
+              facesConfig="${standard.renderkit.xml}"
+              fork="true">
+            <classpath>
+                <path refid="impl.compile.classpath"/>
+            </classpath>
+            <sysproperty key="java.endorsed.dirs" value="${endorsed.dirs}"/>
+            <jvmarg line="${debug.jvm.args}"/>
+            <assertions>
+                <enable/>
+            </assertions>
+        </generateAttrManager>
+        <!--
+        <copy todir="${build.generate.dir}">
+
+
+            <fileset dir="${tools.dir}/src/main/java">
+                <include name="com/sun/faces/config/DigesterFactory.java"/>
+                <include name="com/sun/faces/config/beans/*.java"/>
+                <include name="com/sun/faces/config/rules/*.java"/>
+                <include name="com/sun/faces/util/*.java"/>
+            </fileset>
+
+        </copy>
+        -->
+
+
+        <touch file="${build.generate.dir}/last-taglib-generation"/>
+
+        <antcall target="create.runtime.config"/>
+
+    </target>
+
+    <target name="compile" depends="prepare,generate,copy.template.sources"
+            description="Just compile the classes">
+
+        <!-- Run javac through everything -->
+        <jsf.javac srcdir="${source.dir}:${build.generate.dir}"
+                   destdir="${build.classes.dir}"
+                   excludes="**/ManagedBeanFactoryImpl.java">
+            <classpath>
+                <path refid="impl.compile.classpath"/>
+            </classpath>
+        </jsf.javac>
+
+        <echo message="copying properties files" />
+
+        <copy todir="${build.classes.dir}" overwrite="true">
+            <fileset dir="${resource.dir}" includes="**/*.properties,**/*.js,**/*.xsd"/>
+            <!--<fileset dir="${tools.dir}/src/main/java" includes="**/*.properties"/>-->
+        </copy>
+
+        <!-- Massage the version number into LogStrings.properties -->
+        <replace dir="${build.classes.dir}/com/sun/faces/"
+                 token="|version.string|"
+                 value="${impl.version.number} (${build.type} ${build.number})">
+            <include name="LogStrings*.properties"/>
+        </replace>
+
+        <copy todir="${build.classes.dir}/com/sun/faces">
+            <fileset dir="${api.dir}/doc">
+                <include name="*.dtd"/>
+                <include name="standard-html-renderkit.xml"/>
+                <include name="*.xsd"/>
+            </fileset>
+        </copy>
+
+        <concat destfile="${build.classes.dir}/META-INF/resources/javax.faces/jsf-uncompressed.js" fixlastline="yes">
+            <filelist dir="${api.dir}/src/main/resources">
+                <file name="jsf.js"/>
+            </filelist>
+            <filelist  dir="${basedir}/resources">
+                <file name="mojarra.js"/>
+            </filelist>
+        </concat>
+
+        <java jar="${yuicompressor.jar}" fork="true" failonerror="true"
+            args="-o ${build.classes.dir}/META-INF/resources/javax.faces/jsf.js ${build.classes.dir}/META-INF/resources/javax.faces/jsf-uncompressed.js"/>
+        <!--
+            RELEASE_PENDING (rlubke,driscoll)
+            For now these are copied to the root of the jsf-impl.jar, but
+            eventually they should be in com.sun.faces per the copy statement
+            above.
+        -->
+        <copy todir="${build.classes.dir}/com/sun/faces/xhtml">
+            <fileset dir="${conf.share.dir}/xhtml">
+                <include name="*.dtd"/>
+                <include name="*.ent"/>
+            </fileset>
+        </copy>
+
+        <copy file="conf/share/javax.servlet.ServletContainerInitializer"
+              toDir="${build.classes.dir}/META-INF/services" />
+        <copy toDir="${build.classes.dir}/com/sun/faces/metadata/taglib">
+            <fileset dir="${conf.share.dir}">
+                <include name="*.taglib.xml" /> 
+            </fileset>
+        </copy>
+        <copy file="${build.generate.tld.dir}/html_basic.tld"
+              toDir="${build.classes.dir}/META-INF"/>
+        <copy file="conf/xslt/jsf1_0-1_1toSchema.xsl"
+              toDir="${build.classes.dir}/com/sun/faces"/>
+        <copy file="conf/xslt/facelets1_0-2_0toSchema.xsl"
+              toDir="${build.classes.dir}/com/sun/faces"/>
+        <unzip src="${jsf.build.home}/lib/injectionproviders.jar"
+               dest="${build.classes.dir}"/>
+        <copy todir="${build.classes.dir}/META-INF">
+            <fileset dir="${conf.share.dir}">
+                <include name="jsf_core.tld"/>
+                <include name="mojarra_ext.tld"/>
+                <include name="mojarra_ext.taglib.xml"/>
+                <include name="facelet-dev*.xml"/>
+                <include name="error-include.xhtml"/>
+            </fileset>
+        </copy>
+
+    </target>
+
+    <target name="clean"
+            description="Clean build and distribution directories">
+        <ant antfile="build-tests.xml" target="remove.tstamp"/>
+        <delete dir="${build.dir}"/>
+        <delete dir="${build-post-maven-rename.dir}"/>
+        <delete dir="${target.dir}"/>
+        <delete dir="${dist.dir}"/>
+        <delete dir="${impl.test.results.dir}"/>
+        <delete>
+            <fileset dir="." includes="**/*~" defaultexcludes="no"/>
+            <fileset dir="." includes="**/.nbattrs" defaultexcludes="no"/>
+        </delete>
+        <delete file="jsf-${impl.version}.zip"/>
+        <delete file="jsf-${impl.version}_src.zip"/>
+        <ant dir="${basedir}/systest" inheritall="false" target="clean"/>
+        <ant dir="${basedir}/systest-per-webapp" inheritall="false"
+             target="clean"/>
+         <delete dir="${tools.dir}/build"/>
+    </target>
+
+    <target name="all" depends="clean,prepare,compile"
+            description="Clean and compile all components"/>
+
+    <!-- Create the source distribution -->
+    <target name="ri.source">
+        <zip destfile="${dist.dir}/jsf-ri-src-${impl.version}.zip">
+            <zipfileset dir="${basedir}"
+                        includes="build.xml build-tests.xml README COPYRIGHT LICENSE*.*"
+                        prefix="jsf-ri-src-${impl.version}"/>
+            <zipfileset dir="${source.dir}"
+                        excludes="**/CVS/**"
+                        prefix="jsf-ri-src-${impl.version}/src"/>
+            <zipfileset dir="${resource.dir}"
+                        excludes="**/CVS/**"
+                        prefix="jsf-ri-src-${impl.version}/resources"/>
+            <zipfileset dir="${test.dir}"
+                        excludes="**/CVS/**"
+                        prefix="jsf-ri-src-${impl.version}/test"/>
+            <zipfileset dir="${basedir}"
+                        includes="conf/** web/**"
+                        prefix="jsf-ri-src-${impl.version}"/>
+        </zip>
+    </target>
+
+
+    <target name="dist" depends="jars" description="Build distribution files">
+
+        <mkdir dir="${dist.dir}"/>
+
+        <antcall target="vdldocs"/>
+
+        <!-- Create the binary distribution -->
+        <zip destfile="${dist.dir}/jsf-ri-${impl.version}.zip">
+            <zipfileset dir="${build.dir}"
+                        includes="lib/**,vdldocs/**"
+                        prefix="jsf-ri-${impl.version}"/>
+        </zip>
+
+        <!-- Create a buildable source distribution -->
+        <zip destfile="${dist.dir}/jsf-ri-src-${impl.version}.zip">
+            <zipfileset dir="${basedir}"
+                        includes="build.xml build-tests.xml README COPYRIGHT LICENSE*.*"
+                        prefix="jsf-ri-src-${impl.version}"/>
+            <zipfileset dir="${source.dir}"
+                        excludes="**/CVS/**"
+                        prefix="jsf-ri-src-${impl.version}/src"/>
+
+            <zipfileset dir="${test.dir}"
+                        excludes="**/CVS/**"
+                        prefix="jsf-ri-src-${impl.version}/test"/>
+            <zipfileset dir="${basedir}/systest"
+                        excludes="**/CVS/**"
+                        prefix="jsf-ri-src-${impl.version}/systest"/>
+        </zip>
+        <antcall target="ri.source"/>
+
+    </target>
+
+    <target name="vdldocs">
+
+      <antcall target="jsp.tlddocs" />
+      <antcall target="facelets.tlddocs" />
+
+    </target>
+
+    <target name="jsp.tlddocs">
+        <java fork="true" jar="${tlddoc.jar}">
+            <arg line="-d ${build.dir}/vdldocs/jsp"/>
+            <arg line="-windowtitle 'JSF ${spec.version} View Declaration Language: JSP Variant'"/>
+            <arg value="${build.generate.tld.dir}/html_basic.tld"/>
+            <arg value="${conf.share.dir}/jsf_core.tld"/>
+        </java>
+        <copy todir="${build.dir}/vdldocs/jsp">
+           <fileset dir="${basedir}/../jsf-api/doc/">
+             <include name="changed*.png" />
+             <include name="expert*.png" />
+             <include name="changed*.cur" />
+           </fileset>
+        </copy>
+
+    </target>
+
+    <target name="facelets.tlddocs">
+        <taskdef name="generateFaceletsTld"
+                 classname="com.sun.faces.ant.FaceletsTLDGenTask">
+            <classpath>
+                <pathelement location="${jsf-tools.jar}"/>
+                <pathelement location="${tools.dir}/build/classes"/>
+            </classpath>
+        </taskdef>
+
+        <generateFaceletsTld
+              generatorConfig="${tools.dir}/conf/FaceletsHtmlBasicTaglib21.pre-maven-rename.properties"
+              facesConfig="${standard.renderkit.xml}"
+              fork="true">
+            <classpath>
+                <path refid="impl.compile.classpath"/>
+            </classpath>
+            <sysproperty key="java.endorsed.dirs" value="${endorsed.dirs}"/>
+            <jvmarg line="${debug.jvm.args}"/>
+            <assertions>
+                <enable/>
+            </assertions>
+        </generateFaceletsTld>
+        <java fork="true" jar="${tlddoc.jar}">
+            <arg line="-d ${build.dir}/vdldocs/facelets"/>
+            <arg line="-windowtitle 'JSF ${spec.version} View Declaration Language: Facelets Variant'"/>
+            <arg line="-xslt ${conf.share.dir}/tlddoc-resources"/>
+            <arg value="${conf.share.dir}/composite.tld"/>
+            <arg value="${conf.share.dir}/facelets_jsf_core.tld"/>
+            <arg value="${build.generate.tld.dir}/facelets_html_basic.tld"/>
+            <arg value="${conf.share.dir}/jstl-core.tld"/>
+            <arg value="${conf.share.dir}/jstl-fn.tld"/>
+            <arg value="${conf.share.dir}/ui.tld"/>
+        </java>
+        <copy todir="${build.dir}/vdldocs/facelets">
+           <fileset dir="${basedir}/../jsf-api/doc/">
+             <include name="changed*.png" />
+             <include name="expert*.png" />
+             <include name="changed*.cur" />
+           </fileset>
+        </copy>
+        <copy failonerror="false" overwrite="true" todir="${build.dir}/vdldocs/facelets/h">
+           <fileset dir="${basedir}/../jsf-api/${build.dir}/generate/facesdoc/HTML_BASIC">
+             <include name="javax.faces.Outputjavax.faces.resource.Script.html" />
+           </fileset>
+        </copy>
+
+    </target>
+
+
+    <target name="compile.test" depends="prepare,compile"
+            description="Run unit tests">
+
+        <ant antfile="build-tests.xml" target="compile.test"/>
+
+    </target>
+
+    <target name="test"
+             depends="update,init.test,compile.test,run.systest,run.junit.test,run.systest-per-webapp,run.systest-per-webapp-on-virtual-server,run.cactus.test"
+            description="Run all unit and system tests"/>
+
+    <target name="test.generate.reports"
+            depends="test,generate.reports" />
+
+    <target name="init.test">
+        <mkdir dir="${impl.test.results.dir}"/>
+    </target>
+
+    <target name="run.systest" description="Run system tests">              
+        <ant dir="${basedir}/systest" inheritall="false" target="test">
+          <property name="force.no.cluster" value="${force.no.cluster}" />
+        </ant>
+
+    </target>
+
+    <target name="run.systest-per-webapp"
+            description="Run per-webapp system tests">
+        <ant dir="${basedir}/systest-per-webapp" inheritall="false"
+             target="test">
+          <property name="force.no.cluster" value="${force.no.cluster}" />
+        </ant>       
+
+        <ant dir="${basedir}/systest-per-webapp" inheritall="false"
+             target="remove">
+        <property name="force.no.cluster" value="${force.no.cluster}" />
+        </ant>
+    </target>
+
+   <target name="run.systest-per-webapp-on-virtual-server"
+           depends="discover.container.version" 
+           if="container.is.V3.1_no_cluster"
+           description="Run per-webapp system tests on 3 virtual servers">
+        <ant dir="${basedir}/systest-per-webapp" inheritall="false"
+             target="remove">
+          <property name="force.no.cluster" value="${force.no.cluster}" />
+        </ant>
+        <container.stop />
+        <var name="force.no.cluster" value="true" />
+        <container.start />
+        <ant dir="${basedir}/systest-per-webapp" inheritall="true"
+             target="install-virtual-server">
+          <property name="force.no.cluster" value="true" />
+        </ant>
+        <ant dir="${basedir}/systest-per-webapp" inheritall="false"
+             target="test-virtual-server">
+          <property name="force.no.cluster" value="true" />
+          <property name="instance.numbers" value="1,2" />
+        </ant>
+        <ant dir="${basedir}/systest-per-webapp" inheritall="false"
+             target="remove-virtual-server">
+          <property name="force.no.cluster" value="${force.no.cluster}" />
+        </ant>
+    </target>
+
+
+    <target name="run.junit.test"
+            description="Run unit tests not requiring cactus">
+        <ant antfile="build-tests.xml" target="run.test">
+        </ant>
+    </target>
+
+    <target name="run.cactus.test"
+            description="Run unit tests requiring cactus">
+        <container.stop />
+        <var name="force.no.cluster" value="true" />
+        <container.start />
+
+        <ant antfile="build-tests.xml" target="execute.cactus.tests" inheritAll="true">
+          <property name="force.no.cluster" value="true" />
+        </ant>
+    </target>
+
+   <target name="generate.reports">
+        <ant antfile="build-tests.xml" target="generate.reports"/>
+   </target>
+
+    <target name="force.run.cactus.test" depends="init.test,compile.test"
+            description="Run unit tests requiring cactus, forcing reinstall">
+        <ant antfile="build-tests.xml" target="force.execute.cactus.tests"/>
+    </target>   
+
+    <target name="prepare.test.webapp" depends="init.test">
+        <echo>Invoking target prepare.test.webapp</echo>
+        <ant antfile="build-tests.xml" target="prepare.test.webapp"/>
+        <echo>Invoking target build.war in systest</echo>
+        <ant dir="${basedir}/systest" inheritall="false" target="build.war"/>
+    </target>
+
+    <!-- 
+         =================================================================== 
+           Create the jars
+         =================================================================== 
+    -->
+
+    <target name="jars" depends="compile">
+
+        <copy file="${basedir}/mojarra-jsf-impl.bnd" tofile="tmp.bnd"/>
+        <replace file="tmp.bnd"
+                 token="@spec.version@"
+                 value="${spec.version}"/>
+        <replace file="tmp.bnd"
+                 token="@impl.name@"
+                 value="${impl.name}"/>
+        <replace file="tmp.bnd"
+                 token="@impl.version@"
+                 value="${impl.version}"/>
+        <replace file="tmp.bnd"
+                 token="@full.impl.version@"
+                 value="${full.impl.version}"/>
+        <if>
+            <equals arg1="${build.type}" arg2=""/>
+            <then>
+                <replace file="tmp.bnd"
+                         token="@osgi.version@"
+                         value="${impl.version.number}"/>
+            </then>
+            <else>
+                <replace file="tmp.bnd"
+                         token="@osgi.version@"
+                         value="${impl.version.number}-${build.type}"/>
+            </else>
+        </if>
+        <replace file="tmp.bnd"
+                 token="@extension.name@"
+                 value="com.sun.faces"/>
+        <jsf.osgi.jar jarfile="${build.dir}/lib/${name}.jar"
+                      bndfile="tmp.bnd"
+                      basedir="${build.classes.dir}"
+                      extension-name="com.sun.faces"/>
+        <delete file="tmp.bnd"/>
+    </target>
+
+    <target name="main" depends="update,jars"/>
+
+    <target name="create.runtime.config">
+<!--    in="${build.dir}/classes/com/sun/faces/standard-html-renderkit.xml"-->
+        <xslt in="${api.dir}/doc/standard-html-renderkit.xml" 
+              out="merged.xml"
+              style="conf/xslt/merge-config.xsl">
+        </xslt>
+        <replace file="${basedir}/merged.xml">
+            <replacetoken><![CDATA[xmlns:jsf="http://java.sun.com/xml/ns/javaee"]]></replacetoken>
+            <replacevalue><![CDATA[]]></replacevalue>
+        </replace>
+        <replace file="${basedir}/merged.xml">
+            <replacetoken><![CDATA[ >]]></replacetoken>
+            <replacevalue><![CDATA[>]]></replacevalue>
+        </replace>
+        <xslt in="${basedir}/merged.xml"
+              out="${build.dir}/classes/com/sun/faces/jsf-ri-runtime.xml"
+              style="conf/xslt/prune-tool-data.xsl">
+        </xslt>
+        <replace file="${build.dir}/classes/com/sun/faces/jsf-ri-runtime.xml">
+            <replacetoken><![CDATA[xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"]]></replacetoken>
+        </replace>
+        <replace file="${build.dir}/classes/com/sun/faces/jsf-ri-runtime.xml">
+            <replacetoken><![CDATA[ >]]></replacetoken>
+            <replacevalue><![CDATA[>]]></replacevalue>
+        </replace>
+        <replace file="${build.dir}/classes/com/sun/faces/jsf-ri-runtime.xml">
+            <replacetoken><![CDATA[<faces-config>]]></replacetoken>
+            <replacevalue><![CDATA[
+<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_1.xsd"
+    version="2.1">]]>
+            </replacevalue>
+        </replace>
+        <delete file="${basedir}/merged.xml"/>
+        <copy file="${basedir}/resources/empty-faces-config.xml"
+              todir="${build.dir}/classes/com/sun/faces" />
+    </target>
+
+
+    <target name="passthru">
+        <ant antfile="build-tests.xml" target="passthru" 
+             inheritAll="true">
+          <property name="force.no.cluster" value="true" />
+        </ant>
+
+    </target>
+
+    <target name="undeploy">
+        <ant antfile="build-tests.xml" target="undeploy" 
+             inheritAll="true">
+          <property name="force.no.cluster" value="true" />
+        </ant>
+
+    </target>
+
+    <target name="deploy">
+        <ant antfile="build-tests.xml" target="deploy" 
+             inheritAll="true">
+          <property name="force.no.cluster" value="true" />
+        </ant>
+
+    </target>
+
+    <target name="prepare.cactus.webapp">
+        <ant antfile="build-tests.xml" target="prepare.test.webapp"/>
+    </target>
+
+     <!--
+       USE THE FOLLOWING TARGETS TO PUSH VARIOUS BUILD TYPES TO YOUR LOCAL
+       M2 REPOSITORY
+ant -Dgpg.passphrase=PASSPHRASE HERE mvn.deploy.snapshot.local
+    -->
+
+    <target name="mvn.pre-maven-rename.deploy.snapshot.local" description="Deploy a SNAPSHOT build to the local maven repo">
+        <mvn.pre-maven-rename.deploy.snapshot.local type="impl"/>
+    </target>
+
+
+    <target name="mvn.pre-maven-rename.deploy.promoted.local">
+        <mvn.pre-maven-rename.deploy.promoted.local type="impl"/>
+    </target>
+
+
+    <target name="mvn.pre-maven-rename.deploy.release.local">
+        <mvn.pre-maven-rename.deploy.release.local type="impl"/>
+    </target>
+
+
+    <!--
+       USE THE FOLLOWING TARGETS TO PUSH VARIOUS BUILD TYPES TO THE
+       JAVA.NET M2 REPOSITORY
+    -->
+     <target name="mvn.pre-maven-rename.deploy.snapshot">
+        <mvn.pre-maven-rename.deploy.snapshot type="impl"/>
+    </target>
+
+
+    <target name="mvn.pre-maven-rename.deploy.promoted">
+        <mvn.pre-maven-rename.deploy.promoted type="impl"/>
+    </target>
+
+
+    <target name="mvn.pre-maven-rename.deploy.release">
+        <mvn.pre-maven-rename.deploy.release type="impl"/>
+    </target>
+
+    <target name="javadoc_check">
+        <uptodate property="javadoc.notrequired"
+                  targetfile="${build.javadocs.dir}/packages.html">
+            <srcfiles dir="${source.dir}" includes="**/*.java"/>
+            <srcfiles dir="${build.generate.dir}" includes="**/*.java"/>
+        </uptodate>
+    </target>
+
+    <target name="javadocs"
+            depends="prepare,javadoc_check,generate,generate.javadocs"
+            unless="javadoc.notrequired"
+            description="Create the JavaDoc API documentation">
+
+    </target>
+
+
+    <target name="generate.javadocs">
+        <javadoc packagenames="javax.*"
+                 destdir="${build.javadocs.dir}"
+                 private="${javadoc.private}"
+                 protected="${javadoc.protected}"
+                 windowtitle="${DocName} (${spec.version})"
+                 source="1.5"
+                 doctitle="${DocName} (${spec.version})"
+                 bottom="Copyright © 2002-2010 Oracle America, Inc. All Rights Reserved.">
+           <link offline="true"
+                 href="http://java.sun.com/javase/6/docs/api/package-list"
+                 packagelistloc="${jsf.build.home}/common/ant/package-list" />
+                 
+            <fileset dir="${source.dir}">
+                <include name="com/sun/faces/spi/**/*.java"/>
+            </fileset>
+            <classpath refid="impl.compile.classpath"/>
+        </javadoc>
+
+    </target>
+
+    
+</project>
diff --git a/jsf-ri/build-source.xml b/jsf-ri/build-source.xml
index 8d93de4..5eb796a 100644
--- a/jsf-ri/build-source.xml
+++ b/jsf-ri/build-source.xml
@@ -1,41 +1,45 @@
 <?xml version='1.0' encoding='UTF-8'?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
--->
 
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
 
 <!-- ************ JSF build file ************************************** -->
 
@@ -82,7 +86,7 @@
     <property name="yuicompressor.jar" value="${dependency.jar.dir}/yuicompressor.jar"/>
 
     <path id="impl.compile.classpath">
-        <pathelement location="${jsf-api.jar}"/>
+        <pathelement location="${jsf-api-intermediate.jar}"/>
         <path refid="apache.commons.classpath"/>
         <path refid="compile.classpath"/>
         <pathelement location="${tools.dir}/build/classes"/>
@@ -319,7 +323,7 @@
             args="-o ${build.classes.dir}/META-INF/resources/javax.faces/jsf.js ${build.classes.dir}/META-INF/resources/javax.faces/jsf-uncompressed.js"/>
         <!--
             RELEASE_PENDING (rlubke,driscoll)
-            For now these are copied to the root of the jsf-impl.jar, but
+            For now these are copied to the root of the javax.faces.jar, but
             eventually they should be in com.sun.faces per the copy statement
             above.
         -->
diff --git a/jsf-ri/build-tests.xml b/jsf-ri/build-tests.xml
index d7f9fef..2a39b1d 100644
--- a/jsf-ri/build-tests.xml
+++ b/jsf-ri/build-tests.xml
@@ -1,39 +1,44 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
 
 <project name="Java Server Faces Unit Tests" basedir=".">
@@ -76,8 +81,7 @@
     <!-- Compilation Classpath -->
     <path id="test.compile.classpath">
         <pathelement location="${conf.test.dir}"/>
-        <pathelement location="${jsf-api.jar}"/>      
-        <pathelement location="${jsf-impl.jar}"/>
+        <pathelement location="${javax.faces.jar}"/>
         <pathelement location="${jsf.test.jar}"/>
         <path refid="compile.classpath"/>
         <path refid="cactus.compile.classpath"/>        
@@ -87,8 +91,7 @@
     <path id="test.runtime.classpath">
         <pathelement location="${out.test.dir}/classes"/>
         <pathelement location="${conf.test.dir}"/> 
-        <pathelement location="${jsf-api.jar}"/>      
-        <pathelement location="${jsf-impl.jar}"/>
+        <pathelement location="${javax.faces.jar}"/>
         <pathelement location="${jsf.test.jar}"/>
         <!-- Temporary until javax.security is available on maven -->
         <pathelement location="${dependency.base.dir}/glassfish/lib/javaee.jar"/>
@@ -142,6 +145,9 @@
             Compile unit tests
     -->
     <target name="compile.test" depends="prepare.test">
+      <antcall inheritall="true" target="do.compile.test" />
+    </target>
+    <target name="do.compile.test">
         <mkdir dir="${out.test.dir}/classes/com/sun/faces/application"/>
         <filter token="package" value="com.sun.faces.application"/>
         <filter token="protection" value="public"/>
@@ -151,6 +157,13 @@
                 <include name="*Adapter.java"/>
             </fileset>
         </copy>
+
+
+        <filter token="package" value="com.sun.faces.application.packagehack"/>
+        <copy file="${tools.dir}/template-src/SharedUtils.java"
+              todir="${out.test.dir}/classes/com/sun/faces/application/packagehack"
+              filtering="true"/>
+
         <replace
               file="${out.test.dir}/classes/com/sun/faces/application/MethodBindingMethodExpressionAdapter.java"
               token="@serialVersionUID@"
@@ -170,19 +183,17 @@
               file="${out.test.dir}/classes/com/sun/faces/application/ValueBindingValueExpressionAdapter.java"
               token="@serialVersionUID@"
               value="7410146713650507654L"/>
-        <jsf.javac srcdir="${src.test.dir}"
-                   destdir="${out.test.dir}/classes"
-                   excludes="**/ConfigFileTestCase.java">
+        <jsf.javac srcdir="${out.test.dir}/classes"
+                   destdir="${out.test.dir}/classes">
             <classpath>
                 <path refid="test.compile.classpath"/>
-            </classpath>
+            </classpath>    
         </jsf.javac>
-        <jsf.javac srcdir="${out.test.dir}/classes"
-                   destdir="${out.test.dir}/classes"
-                   excludes="**/ConfigFileTestCase.java">
+        <jsf.javac srcdir="${src.test.dir}"
+                   destdir="${out.test.dir}/classes">
             <classpath>
                 <path refid="test.compile.classpath"/>
-            </classpath>    
+            </classpath>
         </jsf.javac>
     </target>    
 
@@ -229,6 +240,8 @@
                             prefix="WEB-INF"/>
                 <zipfileset dir="${basedir}/web/test/resources"
                             prefix="resources"/>
+                <zipfileset dir="${basedir}/web/test/rootLibrary"
+                            prefix="rootLibrary"/>
             </archive-elements>
         </jsf.war>        
         <copy todir="${out.test.dir}">
@@ -243,11 +256,21 @@
     </target>
 
     <target name="execute.cactus.tests" depends="prepare.test.webapp">
+        <echo>
+------------------- Executing cactus tests with force.no.cluster ${force.no.cluster}
+        </echo>
         <antcall target="undeploy"/>
         <antcall target="deploy"/>
         <touch file="${out.test.dir}/last-testrun"/>
         <antcall target="run.cactus.test"/>
         <antcall target="undeploy"/>
+        <container.stop />
+        <container.start />
+        <antcall target="deploy"/>
+        <antcall target="run.cactus.resource.test"/>
+        <antcall target="undeploy"/>
+        <container.stop />
+        <container.start />
     </target>
 
     <target name="force.execute.cactus.tests">
@@ -274,13 +297,14 @@
     <!--
             Start the Cactus test using JUnit test runner.
     -->
-    <target name="run.cactus.test">
+    <target name="run.cactus.test" depends="define.scenario.aware.port">
         <jsf.junit classpath-refid="test.runtime.classpath"
                    test-results-dir="${impl.test.results.dir}"
-                   explodedWarDir="${basedir}/build/target/test">
+                   explodedWarDir="${basedir}/build/target/test"
+                   custom.port="${scenario.aware.port}">
             <custom-sysproperties>
                 <sysproperty key="cactus.contextURL"
-                             value="http://${container.host}:${container.port}/test"/>
+                             value="http://${container.host}:${scenario.aware.port}/test"/>
             </custom-sysproperties>
             <suite>
                 <test todir="${impl.test.results.dir}"
@@ -291,13 +315,6 @@
                       name="com.sun.faces.renderkit.html_basic.TestRenderers_3"/>
                 <test todir="${impl.test.results.dir}"
                       name="com.sun.faces.renderkit.html_basic.TestRenderers_4"/>
-
-                <test todir="${impl.test.results.dir}"
-                    name="com.sun.faces.application.resource.TestResourceManager"/>
-                <test todir="${impl.test.results.dir}"
-                    name="com.sun.faces.application.resource.TestResourceHandlerImpl"/>
-                <test todir="${impl.test.results.dir}"
-                    name="com.sun.faces.application.resource.TestResourceImpl"/>
                 <test todir="${impl.test.results.dir}"
                     name="com.sun.faces.application.TestAdapters"/>
                 <test todir="${impl.test.results.dir}"
@@ -305,31 +322,19 @@
                 <test todir="${impl.test.results.dir}"
                       name="com.sun.faces.application.TestInjection"/>
                 <test todir="${impl.test.results.dir}"
-                      name="com.sun.faces.application.TestActionListenerImpl"/>
-                <test todir="${impl.test.results.dir}"
                       name="com.sun.faces.application.TestApplicationFactoryImpl"/>
                 <test todir="${impl.test.results.dir}"
                       name="com.sun.faces.application.TestApplicationImpl"/>
                 <test todir="${impl.test.results.dir}"
                       name="com.sun.faces.application.TestApplicationEvents"/>
                 <test todir="${impl.test.results.dir}"
-                      name="com.sun.faces.application.TestApplicationImpl_Config"/>
-                <test todir="${impl.test.results.dir}"
                     name="com.sun.faces.application.TestFacesMessage"/>
                 <test todir="${impl.test.results.dir}"
                     name="com.sun.faces.application.TestHASDeprStateManagerImpl"/>
                 <test todir="${impl.test.results.dir}"
-                      name="com.sun.faces.application.TestNavigationHandler"/>
-                <test todir="${impl.test.results.dir}"
-                      name="com.sun.faces.application.TestJSF2NavigationHandler"/>
-                <test todir="${impl.test.results.dir}"
                       name="com.sun.faces.application.TestStateManagerImpl"/>
                 <test todir="${impl.test.results.dir}"
                     name="com.sun.faces.application.TestViewHandlerImpl"/>
-                <!--
-                <test todir="${impl.test.results.dir}"
-                      name="com.sun.faces.config.ConfigFileTestCase"/>
-                -->
                 <test todir="${impl.test.results.dir}"
                       name="com.sun.faces.component.visit.TestTreeWithUIRepeatVisit"/>
                 <test todir="${impl.test.results.dir}"
@@ -337,16 +342,14 @@
                 <test todir="${impl.test.results.dir}"
                       name="com.sun.faces.component.visit.TestTreeVisit"/>
                 <test todir="${impl.test.results.dir}"
-                      name="com.sun.faces.config.ConfigureListenerTestCase"/>
-                <test todir="${impl.test.results.dir}"
-                      name="com.sun.faces.config.TestConfigListener"/>
-                <test todir="${impl.test.results.dir}"
                       name="com.sun.faces.config.TestManagedBeanFactory"/>
                 <test todir="${impl.test.results.dir}"
                       name="com.sun.faces.config.TestFacesConfigOrdering"/>
                 <test todir="${impl.test.results.dir}"
                       name="com.sun.faces.config.TestFactoryInjection"/>
                 <test todir="${impl.test.results.dir}"
+                      name="com.sun.faces.context.TestPartialResponseWriter"/>
+                <test todir="${impl.test.results.dir}"
                       name="com.sun.faces.context.TestExceptionHandler"/>
                 <test todir="${impl.test.results.dir}"
                       name="com.sun.faces.context.TestExternalContextFactoryImpl"/>
@@ -355,7 +358,7 @@
                 <test todir="${impl.test.results.dir}"
                       name="com.sun.faces.context.TestFacesContextFactoryImpl"/>
                 <test todir="${impl.test.results.dir}"
-                      name="com.sun.faces.context.TestFacesContextImpl"/>
+                      name="com.sun.faces.context.TestStateContext"/>
                 <test todir="${impl.test.results.dir}"
                       name="com.sun.faces.convert.TestConverters"/>
                 <test todir="${impl.test.results.dir}"
@@ -378,7 +381,6 @@
                       name="com.sun.faces.el.TestValueExpressionImpl_Model"/>
                 <test todir="${impl.test.results.dir}"
                       name="com.sun.faces.el.TestVariableResolverImpl"/>
-            	
                 <test todir="${impl.test.results.dir}"
                       name="com.sun.faces.el.TestMethodRef"/>
                 <test todir="${impl.test.results.dir}"
@@ -452,40 +454,57 @@
         </jsf.junit>       
     </target>
 
-    <target name="run.cactus.test.single">
+    <target name="run.cactus.resource.test" depends="define.scenario.aware.port">
         <jsf.junit classpath-refid="test.runtime.classpath"
                    test-results-dir="${impl.test.results.dir}"
-                   explodedWarDir="${basedir}/build/target/test">
+                   explodedWarDir="${basedir}/build/target/test"
+                   custom.port="${scenario.aware.port}">
             <custom-sysproperties>
                 <sysproperty key="cactus.contextURL"
-                             value="http://${container.host}:${container.port}/test"/>
+                             value="http://${container.host}:${scenario.aware.port}/test"/>
             </custom-sysproperties>
             <suite>
                 <test todir="${impl.test.results.dir}"
+                    name="com.sun.faces.application.resource.TestResourceManager"/>
+                <test todir="${impl.test.results.dir}"
                     name="com.sun.faces.application.resource.TestResourceHandlerImpl"/>
+                <test todir="${impl.test.results.dir}"
+                    name="com.sun.faces.application.resource.TestResourceImpl"/>
             </suite>
 
         </jsf.junit>       
     </target>
 
 
-    <target name="run.test" depends="compile.test">
+    <target name="run.cactus.test.single" depends="define.scenario.aware.port">
         <jsf.junit classpath-refid="test.runtime.classpath"
-                   test-results-dir="${impl.test.results.dir}" assert.classes="-ea:com.sun.faces.el.ChainAwareVariableResolver">
+                   test-results-dir="${impl.test.results.dir}"
+                   explodedWarDir="${basedir}/build/target/test"
+                   custom.port="${scenario.aware.port}">
+            <custom-sysproperties>
+                <sysproperty key="cactus.contextURL"
+                             value="http://${container.host}:${scenario.aware.port}/test"/>
+            </custom-sysproperties>
             <suite>
                 <test todir="${impl.test.results.dir}"
-                      name="com.sun.faces.util.TestUtil_local"/>  
+                    name="com.sun.faces.application.TestHASDeprStateManagerImpl"/>
+            </suite>
+
+        </jsf.junit>       
+    </target>
+
+
+    <target name="run.test" depends="compile.test,config.compile">
+
+<!-- PENDING(sheetalv): return to running
+
+  This test needs rework.  Filed issue
+  http://java.net/jira/browse/JAVASERVERFACES-1928.
+
                 <test todir="${impl.test.results.dir}"
                       name="com.sun.faces.el.TestNestedELResolver"/>  
-                 <test todir="${impl.test.results.dir}"
-                      name="com.sun.faces.util.TestLRUMap_local"/>
-                 <test todir="${impl.test.results.dir}"
-                      name="com.sun.faces.util.TestHtmlUtils"/>
-                 <test todir="${impl.test.results.dir}"
-                      name="com.sun.faces.renderkit.html_basic.HtmlResponseWriterTest"/>
-
-            </suite>    
-        </jsf.junit>
+-->
+
     </target>
     
      <target name="config.compile"            
@@ -499,8 +518,7 @@
                              com/sun/faces/config/TestRenderer.java,
                              com/sun/faces/config/TestValidator.java,
                              com/sun/faces/mock/*.java"
-                   excludes="com/sun/faces/config/ConfigFileTestCase.java,
-                             com/sun/faces/config/ConfigureListenerTestCase.java">
+                   excludes="com/sun/faces/config/ConfigureListenerTestCase.java">
 
             <classpath>
                 <path refid="test.compile.classpath"/>
@@ -513,11 +531,55 @@
         </copy>
     </target>    
 
-    <target name="passthru">
+   <target name="generate.reports">
+      <!-- Until http://issues.hudson-ci.org/browse/HUDSON-8716 is fixed
+           this find command will need to be run (to enable this to be listed
+           here as an xml comment, the right angle bracket, which is the
+           heart of the darn regexp, has been replaced with >.  You must
+           replace it back with right angle bracket before running the darn
+           find command.):
+find jsf-ri/testresults jsf-ri/testresults/systest jsf-test/build/testresults jsf-api/testresults -name .svn -prune -o -name "*.class" -prune -o -name "*.jar" -prune -o -type f -name "TEST*.xml" -exec perl -pi.bak -e "s/^>//g" {} \; -print
+      -->
+      <property name="test.report.dir" value="${basedir}/build/test-reports" />
+      <mkdir dir="${test.report.dir}" />
+      <mkdir dir="${test.report.dir}/html" />
+      <junitreport todir="${test.report.dir}">
+        <fileset dir="${impl.test.results.dir}">
+          <include name="TEST-*.xml" />
+        </fileset>
+        <fileset dir="${impl.test.results.dir}/systest">
+          <include name="TEST-*.xml" />
+        </fileset>
+        <fileset dir="${api.test.results.dir}">
+          <include name="TEST-*.xml" />
+        </fileset>
+        <fileset dir="${regression.test.results.dir}">
+          <include name="TEST-*.xml" />
+        </fileset>
+        <report format="frames" todir="${test.report.dir}/html" />
+      </junitreport>
+   </target>
+
+    <target name="passthru" depends="define.scenario.aware.port">
+
+       <antcall target="undeploy"/>
+       <antcall target="deploy"/>
+
+        <jsf.junit classpath-refid="test.runtime.classpath"
+                   test-results-dir="${impl.test.results.dir}"
+                   explodedWarDir="${basedir}/build/target/test"
+                   custom.port="${scenario.aware.port}">
+            <custom-sysproperties>
+                <sysproperty key="cactus.contextURL"
+                             value="http://${container.host}:${scenario.aware.port}/test"/>
+            </custom-sysproperties>
+            <suite>
+                <test todir="${impl.test.results.dir}"
+                    name="com.sun.faces.application.resource.TestResourceManager"/>
+            </suite>
 
-      <antcall target="deploy"/>
-      <antcall target="run.cactus.test.single" />
-      <antcall target="undeploy"/>
+        </jsf.junit>       
+       
        
     </target>
 
diff --git a/jsf-ri/build.xml b/jsf-ri/build.xml
index 4ee8502..ed6b0d9 100644
--- a/jsf-ri/build.xml
+++ b/jsf-ri/build.xml
@@ -1,769 +1,853 @@
-<?xml version='1.0' encoding='UTF-8'?>
-
-<!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
--->
-
-
-<!-- ************ JSF build file ************************************** -->
-
-<project name="JSF-RI" default="main" basedir=".">
-
-
-    <!-- ************ Per user local properties ******************************* -->
-
-    <property file="${user.home}/build.properties"/>    
-    <property file="../build.properties"/>    
-    <import file="${jsf.build.home}/common/ant/common.xml"/>
-
-
-    <!-- ******************* Structural ************************** -->
-
-    <!-- The base directory for compilation targets -->
-    <property name="build.dir" value="build"/>
-    <property name="target.dir" value="target"/>
-   <property name="build.classes.dir" value="${build.dir}/classes"/>
-    <property name="build.generate.dir" value="${build.dir}/generate"/>
-    <property name="build.generate.tld.dir"
-              value="${build.generate.dir}/conf/share"/>
-
-    <!-- The base directory for binary dependency libs under local version
-         control -->
-    <property name="local.lib.dir"
-              value="${basedir}/../lib"/>
-
-    <!-- The base directory for distribution targets -->
-    <property name="dist.dir" value="${basedir}/dist"/>
-
-    <!-- The base directory for component sources -->
-    <property name="source.dir" value="${basedir}/src/main/java"/>
-    <property name="resource.dir" value="${basedir}/src/main/resources"/>
-
-    <!-- The base directory for component tests -->
-    <property name="test.dir" value="${basedir}/test"/>
-
-    <!-- Misc -->
-    <property name="conf.share.dir" value="${basedir}/conf/share"/>
-    <property name="name" value="jsf-impl"/>
-
-    <property name="dependency.base.dir" value="${jsf.build.home}/dependencies"/>
-    <property name="dependency.jar.dir" value="${dependency.base.dir}/jars"/>
-    <property name="yuicompressor.jar" value="${dependency.jar.dir}/yuicompressor.jar"/>
-    <property name="build.javadocs.dir" value="${build.dir}/javadocs"/>
-    <property name="javadoc.private" value="true"/>
-    <property name="javadoc.protected" value="false"/>
-    <property name="DocName" value="Mojarra Implementation Javadoc"/>
-
-    <path id="impl.compile.classpath">
-        <pathelement location="${jsf-api.jar}"/>
-        <path refid="apache.commons.classpath"/>
-        <path refid="compile.classpath"/>
-        <pathelement location="${tools.dir}/build/classes"/>
-    </path>
-
-
-    <!-- ************ Executable Targets ************************************** -->
-
-
-    <target name="init"
-            description="Initialize and evaluate conditionals">
-        <echo message="-------- ${impl.name} ${impl.version} --------"/>
-    </target>
-
-    <target name="prepare" depends="init"
-            description="Prepare build directory">
-        <mkdir dir="${build.dir}"/>
-        <mkdir dir="${build.generate.dir}"/>
-        <mkdir dir="${build.generate.tld.dir}"/>
-        <mkdir dir="${build.classes.dir}"/>
-        <mkdir dir="${build.classes.dir}/com/sun/faces/xhtml"/>
-        <mkdir dir="${build.javadocs.dir}"/>
-        <mkdir dir="${build.dir}/vdldocs/jsp"/>
-        <mkdir dir="${build.dir}/vdldocs/facelets"/>
-        <mkdir dir="${build.dir}/lib"/>
-        <antcall target="delete.and.remkdir.build.generate.dir" />
-    </target>
-
-    <target name="delete.and.remkdir.build.generate.dir"
-            unless="skip.delete.generate">
-        <delete dir="${build.generate.dir}"/>
-        <mkdir dir="${build.generate.dir}"/>
-    </target>
-
-    <target name="copy.template.sources" depends="prepare"
-            description="Copy template sources from ${tools.dir}/template-source">
-
-        <mkdir dir="${build.generate.dir}/com/sun/faces/util"/>
-        <filter token="protection" value="public"/>
-
-        <filter token="package" value="com.sun.faces.util"/>
-        <copy file="${tools.dir}/template-src/MessageFactory.java"
-              todir="${build.generate.dir}/com/sun/faces/util"
-              filtering="true"/>
-        <copy file="${tools.dir}/template-src/TypedCollections.java"
-              todir="${build.generate.dir}/com/sun/faces/util"
-              filtering="true"/>
-        <filter token="package" value="com.sun.faces.application.view"/>
-        <copy file="${tools.dir}/template-src/StateHolderSaver.java"
-              todir="${build.generate.dir}/com/sun/faces/application/view"
-              filtering="true"/>
-
-        <filter token="protection" value="public"/>
-
-        <filter token="package" value="com.sun.faces.application"/>
-        <copy todir="${build.generate.dir}/com/sun/faces/application"
-              filtering="true">
-            <fileset dir="${api.dir}/template-src">
-                <include name="*Adapter.java"/>
-            </fileset>
-        </copy>
-
-        <replace
-              file="${build.generate.dir}/com/sun/faces/application/MethodBindingMethodExpressionAdapter.java"
-              token="@serialVersionUID@"
-              value="6351778415298720238L"/>
-
-        <replace
-              file="${build.generate.dir}/com/sun/faces/application/MethodExpressionMethodBindingAdapter.java"
-              token="@serialVersionUID@"
-              value="5639227653537610567L"/>
-
-        <replace
-              file="${build.generate.dir}/com/sun/faces/application/ValueExpressionValueBindingAdapter.java"
-              token="@serialVersionUID@"
-              value="2990621816592041196L"/>
-
-        <replace
-              file="${build.generate.dir}/com/sun/faces/application/ValueBindingValueExpressionAdapter.java"
-              token="@serialVersionUID@"
-              value="7410146713650507654L"/>
-        <replace
-              file="${build.generate.dir}/com/sun/faces/application/view/StateHolderSaver.java"
-              token="@serialVersionUID@"
-              value="4866548262845392093L"/>
-    </target>
-
-    <target name="check.taglib.generation.necessity">
-        <uptodate property="skip.taglib.generation"
-                  targetfile="${build.generate.dir}/last-taglib-generation">
-            <srcfiles dir="${api.dir}/doc">
-                <include name="standard-html-renderkit.xml"/>
-            </srcfiles>
-        </uptodate>
-    </target>
-
-    <target name="generate"
-            depends="check.taglib.generation.necessity"
-            unless="skip.taglib.generation">
-        <path id="ant.classpath">
-            <pathelement location="${myenv.ANT_HOME}/lib/ant.jar"/>
-        </path>
-
-        <copy todir="${build.dir}">
-            <fileset dir="${tools.dir}/conf">
-                <include name="TAG-*"/>
-            </fileset>
-        </copy>
-
-        <mkdir dir="${tools.dir}/build/classes"/>
-        <jsf.javac srcdir="${tools.dir}/src/main/java"
-               destdir="${tools.dir}/build/classes">
-            <classpath>
-                <path refid="impl.compile.classpath"/>
-                <path refid="ant.classpath"/>
-            </classpath>
-        </jsf.javac>
-        <copy todir="${tools.dir}/build/classes">
-            <fileset dir="${tools.dir}/src/main/java"
-                     includes="**/*.properties"/>
-        </copy>
-        <copy todir="${tools.dir}/build/classes">
-            <fileset dir="${impl.dir}/src/main/resources"
-                     includes="**/LogStrings.properties"/>
-        </copy>
-        <copy todir="${tools.dir}/build/classes/com/sun/faces"
-              flatten="true">
-            <fileset dir="${api.dir}/doc"
-                      includes="*.dtd,*.xsd"/>
-        </copy>
-        <taskdef name="generateTaglib"
-                 classname="com.sun.faces.ant.TaglibGenTask">
-            <classpath>
-                <pathelement location="${tools.dir}/build/classes"/>
-            </classpath>
-        </taskdef>
-        <taskdef name="generateAttrManager"
-                 classname="com.sun.faces.ant.AttributeManagerGenTask">
-            <classpath>
-                <pathelement location="${tools.dir}/build/classes"/>
-            </classpath>
-        </taskdef>
-        <generateTaglib
-              generatorConfig="${tools.dir}/conf/HtmlBasicTaglib21.properties"
-              facesConfig="${standard.renderkit.xml}"
-              fork="true">
-            <classpath>
-                <path refid="impl.compile.classpath"/>
-                <pathelement location="${tools.dir}/build/classes"/>
-            </classpath>
-            <sysproperty key="java.endorsed.dirs" value="${endorsed.dirs}"/>
-            <jvmarg line="${debug.jvm.args}"/>
-            <assertions>
-                <enable/>
-            </assertions>
-        </generateTaglib>
-        <generateAttrManager
-              generatorConfig="${tools.dir}/conf/HtmlBasicTaglib21.properties"
-              facesConfig="${standard.renderkit.xml}"
-              fork="true">
-            <classpath>
-                <path refid="impl.compile.classpath"/>
-                <pathelement location="${tools.dir}/build/classes"/>
-            </classpath>
-            <sysproperty key="java.endorsed.dirs" value="${endorsed.dirs}"/>
-            <jvmarg line="${debug.jvm.args}"/>
-            <assertions>
-                <enable/>
-            </assertions>
-        </generateAttrManager>
-        <!--
-        <copy todir="${build.generate.dir}">
-
-
-            <fileset dir="${tools.dir}/src/main/java">
-                <include name="com/sun/faces/config/DigesterFactory.java"/>
-                <include name="com/sun/faces/config/beans/*.java"/>
-                <include name="com/sun/faces/config/rules/*.java"/>
-                <include name="com/sun/faces/util/*.java"/>
-            </fileset>
-
-        </copy>
-        -->
-
-
-        <touch file="${build.generate.dir}/last-taglib-generation"/>
-
-        <antcall target="create.runtime.config"/>
-
-    </target>
-
-    <target name="compile" depends="prepare,generate,copy.template.sources"
-            description="Just compile the classes">
-
-        <!-- Run javac through everything -->
-        <jsf.javac srcdir="${source.dir}:${build.generate.dir}"
-                   destdir="${build.classes.dir}"
-                   excludes="**/ManagedBeanFactoryImpl.java">
-            <classpath>
-                <path refid="impl.compile.classpath"/>
-            </classpath>
-        </jsf.javac>
-
-        <copy todir="${build.classes.dir}">
-            <fileset dir="${resource.dir}" includes="**/*.properties,**/*.js,**/*.xsd"/>
-            <!--<fileset dir="${tools.dir}/src/main/java" includes="**/*.properties"/>-->
-        </copy>
-
-        <!-- Massage the version number into LogStrings.properties -->
-        <replace dir="${build.classes.dir}/com/sun/faces/"
-                 token="|version.string|"
-                 value="${impl.version.number} (${build.type} ${build.number})">
-            <include name="LogStrings*.properties"/>
-        </replace>
-
-        <copy todir="${build.classes.dir}/com/sun/faces">
-            <fileset dir="${api.dir}/doc">
-                <include name="*.dtd"/>
-                <include name="standard-html-renderkit.xml"/>
-                <include name="*.xsd"/>
-            </fileset>
-        </copy>
-
-        <concat destfile="${build.classes.dir}/META-INF/resources/javax.faces/jsf-uncompressed.js" fixlastline="yes">
-            <filelist dir="${api.dir}/src/main/resources">
-                <file name="jsf.js"/>
-            </filelist>
-            <filelist  dir="${basedir}/resources">
-                <file name="mojarra.js"/>
-            </filelist>
-        </concat>
-
-        <java jar="${yuicompressor.jar}" fork="true" failonerror="true"
-            args="-o ${build.classes.dir}/META-INF/resources/javax.faces/jsf.js ${build.classes.dir}/META-INF/resources/javax.faces/jsf-uncompressed.js"/>
-        <!--
-            RELEASE_PENDING (rlubke,driscoll)
-            For now these are copied to the root of the jsf-impl.jar, but
-            eventually they should be in com.sun.faces per the copy statement
-            above.
-        -->
-        <copy todir="${build.classes.dir}/com/sun/faces/xhtml">
-            <fileset dir="${conf.share.dir}/xhtml">
-                <include name="*.dtd"/>
-                <include name="*.ent"/>
-            </fileset>
-        </copy>
-
-        <copy file="conf/share/javax.servlet.ServletContainerInitializer"
-              toDir="${build.classes.dir}/META-INF/services" />
-        <copy toDir="${build.classes.dir}/com/sun/faces/metadata/taglib">
-            <fileset dir="${conf.share.dir}">
-                <include name="*.taglib.xml" /> 
-            </fileset>
-        </copy>
-        <copy file="${build.generate.tld.dir}/html_basic.tld"
-              toDir="${build.classes.dir}/META-INF"/>
-        <copy file="conf/xslt/jsf1_0-1_1toSchema.xsl"
-              toDir="${build.classes.dir}/com/sun/faces"/>
-        <copy file="conf/xslt/facelets1_0-2_0toSchema.xsl"
-              toDir="${build.classes.dir}/com/sun/faces"/>
-        <unzip src="${jsf.build.home}/lib/injectionproviders.jar"
-               dest="${build.classes.dir}"/>
-        <copy todir="${build.classes.dir}/META-INF">
-            <fileset dir="${conf.share.dir}">
-                <include name="jsf_core.tld"/>
-                <include name="mojarra_ext.tld"/>
-                <include name="mojarra_ext.taglib.xml"/>
-                <include name="facelet-dev*.xml"/>
-                <include name="error-include.xhtml"/>
-            </fileset>
-        </copy>
-
-    </target>
-
-    <target name="clean"
-            description="Clean build and distribution directories">
-        <ant antfile="build-tests.xml" target="remove.tstamp"/>
-        <delete dir="${build.dir}"/>
-        <delete dir="${target.dir}"/>
-        <delete dir="${dist.dir}"/>
-        <delete dir="${impl.test.results.dir}"/>
-        <delete>
-            <fileset dir="." includes="**/*~" defaultexcludes="no"/>
-            <fileset dir="." includes="**/.nbattrs" defaultexcludes="no"/>
-        </delete>
-        <delete file="jsf-${impl.version}.zip"/>
-        <delete file="jsf-${impl.version}_src.zip"/>
-        <ant dir="${basedir}/systest" inheritall="false" target="clean"/>
-        <ant dir="${basedir}/systest-per-webapp" inheritall="false"
-             target="clean"/>
-         <delete dir="${tools.dir}/build"/>
-    </target>
-
-    <target name="all" depends="clean,prepare,compile"
-            description="Clean and compile all components"/>
-
-    <!-- Create the source distribution -->
-    <target name="ri.source">
-        <zip destfile="${dist.dir}/jsf-ri-src-${impl.version}.zip">
-            <zipfileset dir="${basedir}"
-                        includes="build.xml build-tests.xml README COPYRIGHT LICENSE*.*"
-                        prefix="jsf-ri-src-${impl.version}"/>
-            <zipfileset dir="${source.dir}"
-                        excludes="**/CVS/**"
-                        prefix="jsf-ri-src-${impl.version}/src"/>
-            <zipfileset dir="${resource.dir}"
-                        excludes="**/CVS/**"
-                        prefix="jsf-ri-src-${impl.version}/resources"/>
-            <zipfileset dir="${test.dir}"
-                        excludes="**/CVS/**"
-                        prefix="jsf-ri-src-${impl.version}/test"/>
-            <zipfileset dir="${basedir}"
-                        includes="conf/** web/**"
-                        prefix="jsf-ri-src-${impl.version}"/>
-        </zip>
-    </target>
-
-
-    <target name="dist" depends="jars" description="Build distribution files">
-
-        <mkdir dir="${dist.dir}"/>
-
-        <antcall target="vdldocs"/>
-
-        <!-- Create the binary distribution -->
-        <zip destfile="${dist.dir}/jsf-ri-${impl.version}.zip">
-            <zipfileset dir="${build.dir}"
-                        includes="lib/**,vdldocs/**"
-                        prefix="jsf-ri-${impl.version}"/>
-        </zip>
-
-        <!-- Create a buildable source distribution -->
-        <zip destfile="${dist.dir}/jsf-ri-src-${impl.version}.zip">
-            <zipfileset dir="${basedir}"
-                        includes="build.xml build-tests.xml README COPYRIGHT LICENSE*.*"
-                        prefix="jsf-ri-src-${impl.version}"/>
-            <zipfileset dir="${source.dir}"
-                        excludes="**/CVS/**"
-                        prefix="jsf-ri-src-${impl.version}/src"/>
-
-            <zipfileset dir="${test.dir}"
-                        excludes="**/CVS/**"
-                        prefix="jsf-ri-src-${impl.version}/test"/>
-            <zipfileset dir="${basedir}/systest"
-                        excludes="**/CVS/**"
-                        prefix="jsf-ri-src-${impl.version}/systest"/>
-        </zip>
-        <antcall target="ri.source"/>
-
-    </target>
-
-    <target name="vdldocs">
-
-      <antcall target="jsp.tlddocs" />
-      <antcall target="facelets.tlddocs" />
-
-    </target>
-
-    <target name="jsp.tlddocs">
-        <java fork="true" jar="${tlddoc.jar}">
-            <arg line="-d ${build.dir}/vdldocs/jsp"/>
-            <arg line="-windowtitle 'JSF ${spec.version} View Declaration Language: JSP Variant'"/>
-            <arg value="${build.generate.tld.dir}/html_basic.tld"/>
-            <arg value="${conf.share.dir}/jsf_core.tld"/>
-        </java>
-        <copy todir="${build.dir}/vdldocs/jsp">
-           <fileset dir="${basedir}/../jsf-api/doc/">
-             <include name="changed*.png" />
-             <include name="changed*.cur" />
-           </fileset>
-        </copy>
-
-    </target>
-
-    <target name="facelets.tlddocs">
-        <taskdef name="generateFaceletsTld"
-                 classname="com.sun.faces.ant.FaceletsTLDGenTask">
-            <classpath>
-                <pathelement location="${tools.dir}/build/classes"/>
-            </classpath>
-        </taskdef>
-
-        <generateFaceletsTld
-              generatorConfig="${tools.dir}/conf/FaceletsHtmlBasicTaglib21.properties"
-              facesConfig="${standard.renderkit.xml}"
-              fork="true">
-            <classpath>
-                <path refid="impl.compile.classpath"/>
-                <pathelement location="${tools.dir}/build/classes"/>
-            </classpath>
-            <sysproperty key="java.endorsed.dirs" value="${endorsed.dirs}"/>
-            <jvmarg line="${debug.jvm.args}"/>
-            <assertions>
-                <enable/>
-            </assertions>
-        </generateFaceletsTld>
-        <java fork="true" jar="${tlddoc.jar}">
-            <arg line="-d ${build.dir}/vdldocs/facelets"/>
-            <arg line="-windowtitle 'JSF ${spec.version} View Declaration Language: Facelets Variant'"/>
-            <arg line="-xslt ${conf.share.dir}/tlddoc-resources"/>
-            <arg value="${conf.share.dir}/facelets_jsf_core.tld"/>
-            <arg value="${build.generate.tld.dir}/facelets_html_basic.tld"/>
-            <arg value="${conf.share.dir}/composite.tld"/>
-            <arg value="${conf.share.dir}/ui.tld"/>
-            <arg value="${conf.share.dir}/jstl-core.tld"/>
-            <arg value="${conf.share.dir}/jstl-fn.tld"/>
-        </java>
-        <copy todir="${build.dir}/vdldocs/facelets">
-           <fileset dir="${basedir}/../jsf-api/doc/">
-             <include name="changed*.png" />
-             <include name="changed*.cur" />
-           </fileset>
-        </copy>
-        <copy failonerror="false" overwrite="true" todir="${build.dir}/vdldocs/facelets/h">
-           <fileset dir="${basedir}/../jsf-api/build/generate/facesdoc/HTML_BASIC">
-             <include name="javax.faces.Outputjavax.faces.resource.Script.html" />
-           </fileset>
-        </copy>
-
-    </target>
-
-
-    <target name="compile.test" depends="prepare,compile"
-            description="Run unit tests">
-
-        <ant antfile="build-tests.xml" target="compile.test"/>
-
-    </target>
-
-    <target name="test"
-             depends="update,init.test,run.junit.test,run.cactus.test,run.systest,run.systest-per-webapp"
-            description="Run all unit and system tests"/>
-
-    <target name="init.test">
-        <mkdir dir="${impl.test.results.dir}"/>
-    </target>
-
-    <target name="run.systest" description="Run system tests"
-            depends="init.test">              
-        <ant dir="${basedir}/systest" inheritall="false" target="test"/>        
-    </target>
-
-    <target name="run.systest-per-webapp"
-            description="Run per-webapp system tests"
-            depends="init.test,compile.test">
-        <ant dir="${basedir}/systest-per-webapp" inheritall="false"
-             target="test"/>
-        <ant dir="${basedir}/systest-per-webapp" inheritall="false"
-             target="remove"/>
-    </target>
-
-
-    <target name="run.junit.test" depends="init.test,compile.test"
-            description="Run unit tests not requiring cactus">
-        <ant antfile="build-tests.xml" target="run.test"/>
-    </target>
-
-    <target name="run.cactus.test" depends="init.test,compile.test"
-            description="Run unit tests requiring cactus">
-        <ant antfile="build-tests.xml" target="execute.cactus.tests"/>
-    </target>
-
-    <target name="force.run.cactus.test" depends="init.test,compile.test"
-            description="Run unit tests requiring cactus, forcing reinstall">
-        <ant antfile="build-tests.xml" target="force.execute.cactus.tests"/>
-    </target>   
-
-    <target name="prepare.test.webapp" depends="init.test">
-        <echo>Invoking target prepare.test.webapp</echo>
-        <ant antfile="build-tests.xml" target="prepare.test.webapp"/>
-        <echo>Invoking target build.war in systest</echo>
-        <ant dir="${basedir}/systest" inheritall="false" target="build.war"/>
-    </target>
-
-    <!-- 
-         =================================================================== 
-           Create the jars
-         =================================================================== 
-    -->
-
-    <target name="jars" depends="compile">
-
-        <copy file="${basedir}/mojarra-jsf-impl.bnd" tofile="tmp.bnd"/>
-        <replace file="tmp.bnd"
-                 token="@spec.version@"
-                 value="${spec.version}"/>
-        <replace file="tmp.bnd"
-                 token="@impl.name@"
-                 value="${impl.name}"/>
-        <replace file="tmp.bnd"
-                 token="@impl.version@"
-                 value="${impl.version}"/>
-        <if>
-            <equals arg1="${build.type}" arg2=""/>
-            <then>
-                <replace file="tmp.bnd"
-                         token="@osgi.version@"
-                         value="${impl.version.number}"/>
-            </then>
-            <else>
-                <replace file="tmp.bnd"
-                         token="@osgi.version@"
-                         value="${impl.version.number}-${build.type}"/>
-            </else>
-        </if>
-        <replace file="tmp.bnd"
-                 token="@extension.name@"
-                 value="com.sun.faces"/>
-        <jsf.osgi.jar jarfile="${build.dir}/lib/${name}.jar"
-                      bndfile="tmp.bnd"
-                      basedir="${build.classes.dir}"
-                      extension-name="com.sun.faces"/>
-        <delete file="tmp.bnd"/>
-    </target>
-
-    <target name="main" depends="update,jars"/>
-
-    <target name="create.runtime.config">
-<!--    in="${build.dir}/classes/com/sun/faces/standard-html-renderkit.xml"-->
-        <xslt in="${api.dir}/doc/standard-html-renderkit.xml" 
-              out="merged.xml"
-              style="conf/xslt/merge-config.xsl">
-        </xslt>
-        <replace file="${basedir}/merged.xml">
-            <replacetoken><![CDATA[xmlns:jsf="http://java.sun.com/xml/ns/javaee"]]></replacetoken>
-            <replacevalue><![CDATA[]]></replacevalue>
-        </replace>
-        <replace file="${basedir}/merged.xml">
-            <replacetoken><![CDATA[ >]]></replacetoken>
-            <replacevalue><![CDATA[>]]></replacevalue>
-        </replace>
-        <xslt in="${basedir}/merged.xml"
-              out="${build.dir}/classes/com/sun/faces/jsf-ri-runtime.xml"
-              style="conf/xslt/prune-tool-data.xsl">
-        </xslt>
-        <replace file="${build.dir}/classes/com/sun/faces/jsf-ri-runtime.xml">
-            <replacetoken><![CDATA[xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"]]></replacetoken>
-        </replace>
-        <replace file="${build.dir}/classes/com/sun/faces/jsf-ri-runtime.xml">
-            <replacetoken><![CDATA[ >]]></replacetoken>
-            <replacevalue><![CDATA[>]]></replacevalue>
-        </replace>
-        <replace file="${build.dir}/classes/com/sun/faces/jsf-ri-runtime.xml">
-            <replacetoken><![CDATA[<faces-config>]]></replacetoken>
-            <replacevalue><![CDATA[
-<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
-    version="2.0">]]>
-            </replacevalue>
-        </replace>
-        <delete file="${basedir}/merged.xml"/>
-        <copy file="${basedir}/resources/empty-faces-config.xml"
-              todir="${build.dir}/classes/com/sun/faces" />
-    </target>
-
-
-    <target name="passthru">
-        <ant antfile="build-tests.xml" target="passthru"/>
-    </target>
-
-    <target name="prepare.cactus.webapp">
-        <ant antfile="build-tests.xml" target="prepare.test.webapp"/>
-    </target>
-
-     <!--
-       USE THE FOLLOWING TARGETS TO PUSH VARIOUS BUILD TYPES TO YOUR LOCAL
-       M2 REPOSITORY
-    -->
-
-    <target name="mvn.deploy.snapshot.local" description="Deploy a SNAPSHOT build to the local maven repo">
-        <mvn.deploy.snapshot.local type="impl"/>
-    </target>
-
-
-    <target name="mvn.deploy.promoted.local">
-        <mvn.deploy.promoted.local type="impl"/>
-    </target>
-
-
-    <target name="mvn.deploy.release.local">
-        <mvn.deploy.release.local type="impl"/>
-    </target>
-
-
-    <!--
-       USE THE FOLLOWING TARGETS TO PUSH VARIOUS BUILD TYPES TO THE
-       JAVA.NET M2 REPOSITORY
-    -->
-     <target name="mvn.deploy.snapshot">
-        <mvn.deploy.snapshot type="impl"/>
-    </target>
-
-
-    <target name="mvn.deploy.promoted">
-        <mvn.deploy.promoted type="impl"/>
-    </target>
-
-
-    <target name="mvn.deploy.release">
-        <mvn.deploy.release type="impl"/>
-    </target>
-
-    <target name="apply.netbeans.186761.hack">
-
-      <copy todir="${source.dir}">
-
-        <fileset dir="${build.generate.dir}">
-          <include name="**/*.java" />
-        </fileset>
-
-      </copy>
-
-    </target>
-
-    <target name="remove.netbeans.186761.hack">
-
-      <delete failonerror="false">
-
-        <fileset dir="${source.dir}">
-          <include name="**/TypedCollections.java" />
-          <include name="**/MessageFactory.java" />
-          <include name="**/AttributeManager.java" />
-          <include name="**/MethodBindingMethodExpressionAdapter.java" />
-          <include name="**/ValueBindingValueExpressionAdapter.java" />
-          <include name="**/MethodExpressionMethodBindingAdapter.java" />
-          <include name="**/ValueExpressionValueBindingAdapter.java" />
-          <include name="**/StateHolderSaver.java" />
-        </fileset>
-
-      </delete>
-
-      <delete failonerror="false">
-        <fileset dir="${source.dir}/com/sun/faces/taglib/html_basic">
-          <include name="*.java" />
-          <exclude name="ColumnTag.java" />
-          <exclude name="CommandTagParserImpl.java" />
-          <exclude name="HtmlBasicValidator.java" />
-        </fileset>
-      </delete>
-
-    </target>
-
-    <target name="javadoc_check">
-        <uptodate property="javadoc.notrequired"
-                  targetfile="${build.javadocs.dir}/packages.html">
-            <srcfiles dir="${source.dir}" includes="**/*.java"/>
-            <srcfiles dir="${build.generate.dir}" includes="**/*.java"/>
-        </uptodate>
-    </target>
-
-    <target name="javadocs"
-            depends="prepare,javadoc_check,generate,generate.javadocs"
-            unless="javadoc.notrequired"
-            description="Create the JavaDoc API documentation">
-
-    </target>
-
-
-    <target name="generate.javadocs">
-        <javadoc packagenames="javax.*"
-                 destdir="${build.javadocs.dir}"
-                 private="${javadoc.private}"
-                 link="http://java.sun.com/javase/6/docs/api/"
-                 protected="${javadoc.protected}"
-                 windowtitle="${DocName} (${spec.version})"
-                 source="1.5"
-                 doctitle="${DocName} (${spec.version})"
-                 bottom="Copyright © 2002-2010 Sun Microsystems, Inc. All Rights Reserved.">
-            <fileset dir="${source.dir}">
-                <include name="com/sun/faces/spi/**/*.java"/>
-            </fileset>
-            <classpath refid="impl.compile.classpath"/>
-        </javadoc>
-
-    </target>
-
-    
-</project>
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!-- ************ JSF build file ************************************** -->
+
+<project name="JSF-RI" default="main" basedir=".">
+
+
+    <!-- ************ Per user local properties ******************************* -->
+
+    <property file="${user.home}/build.properties"/>    
+    <property file="../build.properties"/>    
+    <import file="${jsf.build.home}/common/ant/common.xml"/>
+
+
+    <!-- ******************* Structural ************************** -->
+
+    <!-- The base directory for compilation targets -->
+    <property name="build.dir" value="build"/>
+    <property name="target.dir" value="target"/>
+   <property name="build.classes.dir" value="${build.dir}/classes"/>
+    <property name="build.generate.dir" value="${build.dir}/generate"/>
+    <property name="build.generate.tld.dir"
+              value="${build.generate.dir}/conf/share"/>
+
+    <!-- The base directory for binary dependency libs under local version
+         control -->
+    <property name="local.lib.dir"
+              value="${basedir}/../lib"/>
+
+    <!-- The base directory for distribution targets -->
+    <property name="dist.dir" value="${basedir}/dist"/>
+
+    <!-- The base directory for component sources -->
+    <property name="source.dir" value="${basedir}/src/main/java"/>
+    <property name="resource.dir" value="${basedir}/src/main/resources"/>
+
+    <!-- The base directory for component tests -->
+    <property name="test.dir" value="${basedir}/test"/>
+
+    <!-- Misc -->
+    <property name="conf.share.dir" value="${basedir}/conf/share"/>
+    <property name="name" value="${impl-artifact-id}"/>
+
+    <property name="dependency.base.dir" value="${jsf.build.home}/dependencies"/>
+    <property name="dependency.jar.dir" value="${dependency.base.dir}/jars"/>
+    <property name="yuicompressor.jar" value="${dependency.jar.dir}/yuicompressor.jar"/>
+    <property name="build.javadocs.dir" value="${build.dir}/javadocs"/>
+    <property name="javadoc.private" value="true"/>
+    <property name="javadoc.protected" value="false"/>
+    <property name="DocName" value="Mojarra Implementation Javadoc"/>
+
+    <path id="impl.compile.classpath">
+        <path refid="cdi.classpath"/>
+        <pathelement location="${jsf-api-intermediate.jar}"/>
+        <path refid="apache.commons.classpath"/>
+        <path refid="compile.classpath"/>
+        <pathelement location="${jsf-tools.jar}"/>
+        <pathelement location="${tools.dir}/build/classes"/>
+    </path>
+
+
+    <!-- ************ Executable Targets ************************************** -->
+
+
+    <target name="init"
+            description="Initialize and evaluate conditionals">
+        <echo message="-------- ${impl.name} ${impl.version} --------"/>
+    </target>
+
+    <target name="prepare" depends="init"
+            description="Prepare build directory">
+        <jsf.svninfo />
+        <echo message="Building from |${svn.revision.url}|" /> 
+        <mkdir dir="${build.dir}"/>
+        <mkdir dir="${build.generate.dir}"/>
+        <mkdir dir="${build.generate.tld.dir}"/>
+        <mkdir dir="${build.classes.dir}"/>
+        <mkdir dir="${build.classes.dir}/com/sun/faces/xhtml"/>
+        <mkdir dir="${build.javadocs.dir}"/>
+        <mkdir dir="${build.dir}/vdldocs/jsp"/>
+        <mkdir dir="${build.dir}/vdldocs/facelets"/>
+        <mkdir dir="${build.dir}/lib"/>
+        <antcall target="delete.and.remkdir.build.generate.dir" />
+    </target>
+
+    <target name="delete.and.remkdir.build.generate.dir"
+            unless="skip.delete.generate">
+        <delete dir="${build.generate.dir}"/>
+        <mkdir dir="${build.generate.dir}"/>
+    </target>
+
+    <target name="copy.template.sources" depends="prepare"
+            description="Copy template sources from ${tools.dir}/template-source">
+
+        <mkdir dir="${build.generate.dir}/com/sun/faces/util"/>
+        <filter token="protection" value="public"/>
+
+        <filter token="package" value="com.sun.faces.util"/>
+        <copy file="${tools.dir}/template-src/MessageFactory.java"
+              todir="${build.generate.dir}/com/sun/faces/util"
+              filtering="true"/>
+        <copy file="${tools.dir}/template-src/TypedCollections.java"
+              todir="${build.generate.dir}/com/sun/faces/util"
+              filtering="true"/>
+        <filter token="package" value="com.sun.faces.application.view"/>
+        <copy file="${tools.dir}/template-src/StateHolderSaver.java"
+              todir="${build.generate.dir}/com/sun/faces/application/view"
+              filtering="true"/>
+        <filter token="package" value="com.sun.faces.application"/>
+        <copy file="${tools.dir}/template-src/SharedUtils.java"
+              todir="${build.generate.dir}/com/sun/faces/application"
+              filtering="true"/>
+        <filter token="package" value="com.sun.faces.context"/>
+        <copy file="${tools.dir}/template-src/StateHolderSaver.java"
+              todir="${build.generate.dir}/com/sun/faces/context"
+              filtering="true"/>
+        <copy file="${tools.dir}/template-src/SharedUtils.java"
+              todir="${build.generate.dir}/com/sun/faces/application"
+              filtering="true"/>
+        <filter token="package" value="com.sun.faces.mgbean"/>
+        <copy file="${tools.dir}/template-src/SharedUtils.java"
+              todir="${build.generate.dir}/com/sun/faces/mgbean"
+              filtering="true"/>
+
+        <filter token="package" value="com.sun.faces.config.processor"/>
+        <copy file="${tools.dir}/template-src/SharedUtils.java"
+              todir="${build.generate.dir}/com/sun/faces/config/processor"
+              filtering="true"/>
+
+        <filter token="package" value="com.sun.faces.el"/>
+        <copy file="${tools.dir}/template-src/SharedUtils.java"
+              todir="${build.generate.dir}/com/sun/faces/el"
+              filtering="true"/>
+
+        <filter token="protection" value="public"/>
+
+        <filter token="package" value="com.sun.faces.application"/>
+        <copy todir="${build.generate.dir}/com/sun/faces/application"
+              filtering="true">
+            <fileset dir="${api.dir}/template-src">
+                <include name="*Adapter.java"/>
+            </fileset>
+        </copy>
+
+        <replace
+              file="${build.generate.dir}/com/sun/faces/application/MethodBindingMethodExpressionAdapter.java"
+              token="@serialVersionUID@"
+              value="6351778415298720238L"/>
+
+        <replace
+              file="${build.generate.dir}/com/sun/faces/application/MethodExpressionMethodBindingAdapter.java"
+              token="@serialVersionUID@"
+              value="5639227653537610567L"/>
+
+        <replace
+              file="${build.generate.dir}/com/sun/faces/application/ValueExpressionValueBindingAdapter.java"
+              token="@serialVersionUID@"
+              value="2990621816592041196L"/>
+
+        <replace
+              file="${build.generate.dir}/com/sun/faces/application/ValueBindingValueExpressionAdapter.java"
+              token="@serialVersionUID@"
+              value="7410146713650507654L"/>
+        <replace
+              file="${build.generate.dir}/com/sun/faces/application/view/StateHolderSaver.java"
+              token="@serialVersionUID@"
+              value="4866548262845392093L"/>
+
+        <replace
+              file="${build.generate.dir}/com/sun/faces/context/StateHolderSaver.java"
+              token="@serialVersionUID@"
+              value="146780782953074472L"/>
+    </target>
+
+    <target name="check.taglib.generation.necessity">
+        <uptodate property="skip.taglib.generation"
+                  targetfile="${build.generate.dir}/last-taglib-generation">
+            <srcfiles dir="${api.dir}/doc">
+                <include name="standard-html-renderkit.xml"/>
+            </srcfiles>
+        </uptodate>
+    </target>
+
+    <target name="generate"
+            depends="check.taglib.generation.necessity"
+            unless="skip.taglib.generation">
+        <path id="ant.classpath">
+            <pathelement location="${myenv.ANT_HOME}/lib/ant.jar"/>
+        </path>
+
+        <copy todir="${build.dir}">
+            <fileset dir="${tools.dir}/conf">
+                <include name="TAG-*"/>
+            </fileset>
+        </copy>
+
+        <mkdir dir="${tools.dir}/build/classes"/>
+        <copy todir="${tools.dir}/build/classes">
+            <fileset dir="${impl.dir}/src/main/resources"
+                     includes="**/LogStrings.properties"/>
+        </copy>
+        <copy todir="${tools.dir}/build/classes/com/sun/faces"
+              flatten="true">
+            <fileset dir="${api.dir}/doc"
+                      includes="*.dtd,*.xsd"/>
+        </copy>
+        <taskdef name="generateTaglib"
+                 classname="com.sun.faces.ant.TaglibGenTask">
+            <classpath>
+                <pathelement location="${jsf-tools.jar}"/>
+                <pathelement location="${tools.dir}/build/classes"/>
+            </classpath>
+        </taskdef>
+        <taskdef name="generateAttrManager"
+                 classname="com.sun.faces.ant.AttributeManagerGenTask">
+            <classpath>
+                <pathelement location="${jsf-tools.jar}"/>
+                <pathelement location="${tools.dir}/build/classes"/>
+            </classpath>
+        </taskdef>
+        <generateTaglib
+              generatorConfig="${tools.dir}/conf/HtmlBasicTaglib21.properties"
+              facesConfig="${standard.renderkit.xml}"
+              fork="true">
+            <classpath>
+                <path refid="impl.compile.classpath"/>
+            </classpath>
+            <sysproperty key="java.endorsed.dirs" value="${endorsed.dirs}"/>
+            <jvmarg line="${debug.jvm.args}"/>
+            <assertions>
+                <enable/>
+            </assertions>
+        </generateTaglib>
+        <generateAttrManager
+              generatorConfig="${tools.dir}/conf/HtmlBasicTaglib21.properties"
+              facesConfig="${standard.renderkit.xml}"
+              fork="true">
+            <classpath>
+                <path refid="impl.compile.classpath"/>
+            </classpath>
+            <sysproperty key="java.endorsed.dirs" value="${endorsed.dirs}"/>
+            <jvmarg line="${debug.jvm.args}"/>
+            <assertions>
+                <enable/>
+            </assertions>
+        </generateAttrManager>
+        <!--
+        <copy todir="${build.generate.dir}">
+
+
+            <fileset dir="${tools.dir}/src/main/java">
+                <include name="com/sun/faces/config/DigesterFactory.java"/>
+                <include name="com/sun/faces/config/beans/*.java"/>
+                <include name="com/sun/faces/config/rules/*.java"/>
+                <include name="com/sun/faces/util/*.java"/>
+            </fileset>
+
+        </copy>
+        -->
+
+
+        <touch file="${build.generate.dir}/last-taglib-generation"/>
+
+        <antcall target="create.runtime.config"/>
+
+    </target>
+
+    <target name="compile" depends="prepare,generate,copy.template.sources"
+            description="Compile the classes and unjar the jsf-api-intermediate jar">
+
+        <!-- Run javac through everything -->
+        <jsf.javac srcdir="${source.dir}:${build.generate.dir}"
+                   destdir="${build.classes.dir}"
+                   excludes="**/ManagedBeanFactoryImpl.java">
+            <classpath>
+                <path refid="impl.compile.classpath"/>
+            </classpath>
+        </jsf.javac>
+
+        <echo message="copying properties files" />
+
+        <copy todir="${build.classes.dir}" overwrite="true">
+            <fileset dir="${resource.dir}" includes="**/*.properties,**/*.js,**/*.xsd"/>
+            <!--<fileset dir="${tools.dir}/src/main/java" includes="**/*.properties"/>-->
+        </copy>
+
+        <!-- Massage the version number into LogStrings.properties -->
+        <replace dir="${build.classes.dir}/com/sun/faces/"
+                 token="|version.string|"
+                 value="${impl.version.number} (${build.type} ${build.number} ${svn.revision.url})">
+            <include name="LogStrings*.properties"/>
+        </replace>
+
+        <copy todir="${build.classes.dir}/com/sun/faces">
+            <fileset dir="${api.dir}/doc">
+                <include name="*.dtd"/>
+                <include name="standard-html-renderkit.xml"/>
+                <include name="*.xsd"/>
+            </fileset>
+        </copy>
+
+        <concat destfile="${build.classes.dir}/META-INF/resources/javax.faces/jsf-uncompressed.js" fixlastline="yes">
+            <filelist dir="${api.dir}/src/main/resources">
+                <file name="jsf.js"/>
+            </filelist>
+            <filelist  dir="${basedir}/resources">
+                <file name="mojarra.js"/>
+            </filelist>
+        </concat>
+
+        <java jar="${yuicompressor.jar}" fork="true" failonerror="true"
+            args="-o ${build.classes.dir}/META-INF/resources/javax.faces/jsf.js ${build.classes.dir}/META-INF/resources/javax.faces/jsf-uncompressed.js"/>
+        <!--
+            RELEASE_PENDING (rlubke,driscoll)
+            For now these are copied to the root of the javax.faces.jar, but
+            eventually they should be in com.sun.faces per the copy statement
+            above.
+        -->
+        <copy todir="${build.classes.dir}/com/sun/faces/xhtml">
+            <fileset dir="${conf.share.dir}/xhtml">
+                <include name="*.dtd"/>
+                <include name="*.ent"/>
+            </fileset>
+        </copy>
+
+        <copy file="conf/share/javax.servlet.ServletContainerInitializer"
+              toDir="${build.classes.dir}/META-INF/services" />
+        <copy file="conf/share/javax.enterprise.inject.spi.Extension"
+              toDir="${build.classes.dir}/META-INF/services" />
+        <copy file="conf/share/com.sun.faces.util.cdi11.CDIUtil"
+              toDir="${build.classes.dir}/META-INF/services" />
+        <copy toDir="${build.classes.dir}/com/sun/faces/metadata/taglib">
+            <fileset dir="${conf.share.dir}">
+                <include name="*.taglib.xml" /> 
+            </fileset>
+        </copy>
+        <copy file="${build.generate.tld.dir}/html_basic.tld"
+              toDir="${build.classes.dir}/META-INF"/>
+        <copy file="conf/xslt/jsf1_0-1_1toSchema.xsl"
+              toDir="${build.classes.dir}/com/sun/faces"/>
+        <copy file="conf/xslt/facelets1_0-2_0toSchema.xsl"
+              toDir="${build.classes.dir}/com/sun/faces"/>
+        <unzip src="${jsf.build.home}/lib/injectionproviders.jar"
+               dest="${build.classes.dir}"/>
+        <unzip src="${jsf-api-intermediate.jar}"
+               dest="${build.classes.dir}">
+          <patternset>
+            <exclude name="META-INF/MANIFEST.MF" />
+          </patternset>
+        </unzip>
+        <copy todir="${build.classes.dir}/META-INF">
+            <fileset dir="${conf.share.dir}">
+                <include name="jsf_core.tld"/>
+                <include name="beans.xml"/>
+                <include name="mojarra_ext.tld"/>
+                <include name="mojarra_ext.taglib.xml"/>
+                <include name="facelet-dev*.xml"/>
+                <include name="error-include.xhtml"/>
+            </fileset>
+        </copy>
+
+    </target>
+
+    <target name="clean"
+            description="Clean build and distribution directories">
+        <ant antfile="build-tests.xml" target="remove.tstamp"/>
+        <delete dir="${build.dir}"/>
+        <delete dir="${target.dir}"/>
+        <delete dir="${dist.dir}"/>
+        <delete dir="${impl.test.results.dir}"/>
+        <delete>
+            <fileset dir="." includes="**/*~" defaultexcludes="no"/>
+            <fileset dir="." includes="**/.nbattrs" defaultexcludes="no"/>
+        </delete>
+        <delete file="jsf-${impl.version}.zip"/>
+        <delete file="jsf-${impl.version}_src.zip"/>
+        <ant dir="${basedir}/systest" inheritall="false" target="clean"/>
+        <ant dir="${basedir}/systest-per-webapp" inheritall="false"
+             target="clean"/>
+         <delete dir="${tools.dir}/build"/>
+    </target>
+
+    <target name="all" depends="clean,prepare,compile"
+            description="Clean and compile all components"/>
+
+    <!-- Create the source distribution -->
+    <target name="ri.source">
+        <zip destfile="${dist.dir}/jsf-ri-src-${impl.version}.zip">
+            <zipfileset dir="${basedir}"
+                        includes="build.xml build-tests.xml README COPYRIGHT LICENSE*.*"
+                        prefix="jsf-ri-src-${impl.version}"/>
+            <zipfileset dir="${source.dir}"
+                        excludes="**/CVS/**"
+                        prefix="jsf-ri-src-${impl.version}/src"/>
+            <zipfileset dir="${resource.dir}"
+                        excludes="**/CVS/**"
+                        prefix="jsf-ri-src-${impl.version}/resources"/>
+            <zipfileset dir="${test.dir}"
+                        excludes="**/CVS/**"
+                        prefix="jsf-ri-src-${impl.version}/test"/>
+            <zipfileset dir="${basedir}"
+                        includes="conf/** web/**"
+                        prefix="jsf-ri-src-${impl.version}"/>
+        </zip>
+    </target>
+
+
+    <target name="dist" depends="jars" description="Build distribution files">
+
+        <mkdir dir="${dist.dir}"/>
+
+        <antcall target="vdldocs"/>
+
+        <!-- Create the binary distribution -->
+        <zip destfile="${dist.dir}/jsf-ri-${impl.version}.zip">
+            <zipfileset dir="${build.dir}"
+                        includes="lib/**,vdldocs/**"
+                        prefix="jsf-ri-${impl.version}"/>
+        </zip>
+
+        <!-- Create a buildable source distribution -->
+        <zip destfile="${dist.dir}/jsf-ri-src-${impl.version}.zip">
+            <zipfileset dir="${basedir}"
+                        includes="build.xml build-tests.xml README COPYRIGHT LICENSE*.*"
+                        prefix="jsf-ri-src-${impl.version}"/>
+            <zipfileset dir="${source.dir}"
+                        excludes="**/CVS/**"
+                        prefix="jsf-ri-src-${impl.version}/src"/>
+
+            <zipfileset dir="${test.dir}"
+                        excludes="**/CVS/**"
+                        prefix="jsf-ri-src-${impl.version}/test"/>
+            <zipfileset dir="${basedir}/systest"
+                        excludes="**/CVS/**"
+                        prefix="jsf-ri-src-${impl.version}/systest"/>
+        </zip>
+        <antcall target="ri.source"/>
+
+    </target>
+
+    <target name="vdldocs">
+
+      <antcall target="jsp.tlddocs" />
+      <antcall target="facelets.tlddocs" />
+
+    </target>
+
+    <target name="jsp.tlddocs">
+        <java fork="true" jar="${tlddoc.jar}">
+            <arg line="-d ${build.dir}/vdldocs/jsp"/>
+            <arg line="-windowtitle 'JSF ${spec.version} View Declaration Language: JSP Variant'"/>
+            <arg value="${build.generate.tld.dir}/html_basic.tld"/>
+            <arg value="${conf.share.dir}/jsf_core.tld"/>
+        </java>
+        <copy todir="${build.dir}/vdldocs/jsp">
+           <fileset dir="${basedir}/../jsf-api/doc/">
+             <include name="changed*.png" />
+             <include name="expert*.png" />
+             <include name="changed*.cur" />
+           </fileset>
+        </copy>
+
+    </target>
+
+    <target name="facelets.tlddocs">
+        <taskdef name="generateFaceletsTld"
+                 classname="com.sun.faces.ant.FaceletsTLDGenTask">
+            <classpath>
+                <pathelement location="${jsf-tools.jar}"/>
+                <pathelement location="${tools.dir}/build/classes"/>
+            </classpath>
+        </taskdef>
+
+        <generateFaceletsTld
+              generatorConfig="${tools.dir}/conf/FaceletsHtmlBasicTaglib21.properties"
+              facesConfig="${standard.renderkit.xml}"
+              fork="true">
+            <classpath>
+                <path refid="impl.compile.classpath"/>
+            </classpath>
+            <sysproperty key="java.endorsed.dirs" value="${endorsed.dirs}"/>
+            <jvmarg line="${debug.jvm.args}"/>
+            <assertions>
+                <enable/>
+            </assertions>
+        </generateFaceletsTld>
+        <java fork="true" jar="${tlddoc.jar}">
+            <arg line="-d ${build.dir}/vdldocs/facelets"/>
+            <arg line="-windowtitle 'JSF ${spec.version} View Declaration Language: Facelets Variant'"/>
+            <arg line="-doctitle 'JSF ${spec.version} View Declaration Language: Facelets Variant.'"/>
+            <arg line="-xslt ${conf.share.dir}/tlddoc-resources"/>
+            <arg value="${conf.share.dir}/composite.tld"/>
+            <arg value="${conf.share.dir}/facelets_jsf_core.tld"/>
+            <arg value="${conf.share.dir}/facelets_passthrough_attributes.tld"/>
+            <arg value="${conf.share.dir}/facelets_passthrough_elements.tld"/>
+            <arg value="${build.generate.tld.dir}/facelets_html_basic.tld"/>
+            <arg value="${conf.share.dir}/jstl-core.tld"/>
+            <arg value="${conf.share.dir}/jstl-fn.tld"/>
+            <arg value="${conf.share.dir}/ui.tld"/>
+        </java>
+        <copy todir="${build.dir}/vdldocs/facelets">
+           <fileset dir="${basedir}/../jsf-api/doc/">
+             <include name="changed*.png" />
+             <include name="expert*.png" />
+             <include name="changed*.cur" />
+           </fileset>
+        </copy>
+        <copy failonerror="false" overwrite="true" todir="${build.dir}/vdldocs/facelets/h">
+           <fileset dir="${basedir}/../jsf-api/build/generate/facesdoc/HTML_BASIC">
+             <include name="javax.faces.Outputjavax.faces.resource.Script.html" />
+           </fileset>
+        </copy>
+
+    </target>
+
+
+    <target name="compile.test" depends="prepare,compile"
+            description="Run unit tests">
+
+        <ant antfile="build-tests.xml" target="compile.test"/>
+
+    </target>
+
+    <target name="test"
+             depends="update,init.test,compile.test,run.systest,run.junit.test,run.systest-per-webapp,run.systest-per-webapp-on-virtual-server"
+            description="Run all unit and system tests"/>
+
+    <target name="test.generate.reports"
+            depends="test,generate.reports" />
+
+    <target name="init.test">
+        <mkdir dir="${impl.test.results.dir}"/>
+    </target>
+
+    <target name="run.systest" description="Run system tests">              
+        <ant dir="${basedir}/systest" inheritall="false" target="test">
+          <property name="force.no.cluster" value="${force.no.cluster}" />
+        </ant>
+
+    </target>
+
+    <target name="run.systest-per-webapp"
+            description="Run per-webapp system tests">
+        <ant dir="${basedir}/systest-per-webapp" inheritall="false"
+             target="test">
+          <property name="force.no.cluster" value="${force.no.cluster}" />
+        </ant>       
+
+        <ant dir="${basedir}/systest-per-webapp" inheritall="false"
+             target="remove">
+        <property name="force.no.cluster" value="${force.no.cluster}" />
+        </ant>
+    </target>
+
+   <target name="run.systest-per-webapp-on-virtual-server"
+           depends="discover.container.version" 
+           if="container.is.V3.1_no_cluster"
+           description="Run per-webapp system tests on 3 virtual servers">
+        <ant dir="${basedir}/systest-per-webapp" inheritall="false"
+             target="remove">
+          <property name="force.no.cluster" value="${force.no.cluster}" />
+        </ant>
+        <container.stop />
+        <var name="force.no.cluster" value="true" />
+        <container.start />
+        <ant dir="${basedir}/systest-per-webapp" inheritall="true"
+             target="install-virtual-server">
+          <property name="force.no.cluster" value="true" />
+        </ant>
+        <ant dir="${basedir}/systest-per-webapp" inheritall="false"
+             target="test-virtual-server">
+          <property name="force.no.cluster" value="true" />
+          <property name="instance.numbers" value="1,2" />
+        </ant>
+        <ant dir="${basedir}/systest-per-webapp" inheritall="false"
+             target="remove-virtual-server">
+          <property name="force.no.cluster" value="${force.no.cluster}" />
+        </ant>
+    </target>
+
+
+    <target name="run.junit.test"
+            description="Run unit tests not requiring cactus">
+        <ant antfile="build-tests.xml" target="run.test">
+        </ant>
+    </target>
+
+    <target name="run.cactus.test"
+            description="Run unit tests requiring cactus">
+        <container.stop />
+        <var name="force.no.cluster" value="true" />
+        <container.start />
+
+        <ant antfile="build-tests.xml" target="execute.cactus.tests" inheritAll="true">
+          <property name="force.no.cluster" value="true" />
+        </ant>
+        <container.stop />
+    </target>
+
+   <target name="generate.reports">
+        <ant antfile="build-tests.xml" target="generate.reports"/>
+   </target>
+
+    <target name="force.run.cactus.test" depends="init.test,compile.test"
+            description="Run unit tests requiring cactus, forcing reinstall">
+        <ant antfile="build-tests.xml" target="force.execute.cactus.tests"/>
+    </target>   
+
+    <target name="prepare.test.webapp" depends="init.test">
+        <echo>Invoking target prepare.test.webapp</echo>
+        <ant antfile="build-tests.xml" target="prepare.test.webapp"/>
+        <echo>Invoking target build.war in systest</echo>
+        <ant dir="${basedir}/systest" inheritall="false" target="build.war"/>
+    </target>
+
+    <!-- 
+         =================================================================== 
+           Create the jars
+         =================================================================== 
+    -->
+
+    <target name="jars" depends="compile">
+
+        <copy file="${basedir}/mojarra-jsf-impl.bnd" tofile="tmp.bnd"/>
+        <replace file="tmp.bnd"
+                 token="@spec.version@"
+                 value="${spec.version}"/>
+        <replace file="tmp.bnd"
+                 token="@impl.name@"
+                 value="${impl.name}"/>
+        <replace file="tmp.bnd"
+                 token="@impl.version@"
+                 value="${impl.version}"/>
+        <replace file="tmp.bnd"
+                 token="@full.impl.version@"
+                 value="${full.impl.version} ${svn.revision.url}"/>
+        <if>
+            <equals arg1="${build.type}" arg2=""/>
+            <then>
+                <replace file="tmp.bnd"
+                         token="@osgi.version@"
+                         value="${impl.version.number}"/>
+            </then>
+            <else>
+                <replace file="tmp.bnd"
+                         token="@osgi.version@"
+                         value="${impl.version.number}${build.type}"/>
+            </else>
+        </if>
+        <replace file="tmp.bnd"
+                 token="@extension.name@"
+                 value="javax.faces"/>
+        <copy todir="${build.classes.dir}/META-INF" 
+              file="${jsf.build.home}/legal/jsf-cddl/LICENSE.txt" />
+        <jsf.osgi.jar jarfile="${build.dir}/lib/${name}.jar"
+                      bndfile="tmp.bnd"
+                      basedir="${build.classes.dir}"
+                      extension-name="javax.faces"/>
+        <delete file="tmp.bnd"/>
+    </target>
+
+    <target name="main" depends="update,jars"/>
+
+    <target name="create.runtime.config">
+<!--    in="${build.dir}/classes/com/sun/faces/standard-html-renderkit.xml"-->
+        <xslt in="${api.dir}/doc/standard-html-renderkit.xml" 
+              out="merged.xml"
+              style="conf/xslt/merge-config.xsl">
+        </xslt>
+        <replace file="${basedir}/merged.xml">
+            <replacetoken><![CDATA[xmlns:jsf="http://xmlns.jcp.org/xml/ns/javaee"]]></replacetoken>
+            <replacevalue><![CDATA[]]></replacevalue>
+        </replace>
+        <replace file="${basedir}/merged.xml">
+            <replacetoken><![CDATA[ >]]></replacetoken>
+            <replacevalue><![CDATA[>]]></replacevalue>
+        </replace>
+        <xslt in="${basedir}/merged.xml"
+              out="${build.dir}/classes/com/sun/faces/jsf-ri-runtime.xml"
+              style="conf/xslt/prune-tool-data.xsl">
+        </xslt>
+        <replace file="${build.dir}/classes/com/sun/faces/jsf-ri-runtime.xml">
+            <replacetoken><![CDATA[xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"]]></replacetoken>
+        </replace>
+        <replace file="${build.dir}/classes/com/sun/faces/jsf-ri-runtime.xml">
+            <replacetoken><![CDATA[ >]]></replacetoken>
+            <replacevalue><![CDATA[>]]></replacevalue>
+        </replace>
+        <replace file="${build.dir}/classes/com/sun/faces/jsf-ri-runtime.xml">
+            <replacetoken><![CDATA[<faces-config>]]></replacetoken>
+            <replacevalue><![CDATA[
+<faces-config xmlns="http://xmlns.jcp.org/xml/ns/javaee"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd"
+    version="2.2">]]>
+            </replacevalue>
+        </replace>
+        <delete file="${basedir}/merged.xml"/>
+        <copy file="${basedir}/resources/empty-faces-config.xml"
+              todir="${build.dir}/classes/com/sun/faces" />
+    </target>
+
+
+    <target name="passthru">
+        <ant antfile="build-tests.xml" target="passthru" 
+             inheritAll="true">
+          <property name="force.no.cluster" value="true" />
+        </ant>
+
+    </target>
+
+    <target name="undeploy">
+        <ant antfile="build-tests.xml" target="undeploy" 
+             inheritAll="true">
+          <property name="force.no.cluster" value="true" />
+        </ant>
+
+    </target>
+
+    <target name="deploy">
+        <ant antfile="build-tests.xml" target="deploy" 
+             inheritAll="true">
+          <property name="force.no.cluster" value="true" />
+        </ant>
+
+    </target>
+
+    <target name="prepare.cactus.webapp">
+        <ant antfile="build-tests.xml" target="prepare.test.webapp"/>
+    </target>
+
+     <!--
+       USE THE FOLLOWING TARGETS TO PUSH VARIOUS BUILD TYPES TO YOUR LOCAL
+       M2 REPOSITORY
+
+ant -Dgpg.passphrase=PASSPHRASE HERE mvn.deploy.snapshot.local
+
+    -->
+
+    <target name="mvn.deploy.snapshot.local" description="Deploy a SNAPSHOT build to the local maven repo">
+        <mvn.deploy.snapshot.local type="impl"/>
+    </target>
+
+
+    <target name="mvn.deploy.promoted.local">
+        <mvn.deploy.promoted.local type="impl"/>
+    </target>
+
+
+    <target name="mvn.deploy.release.local">
+        <mvn.deploy.release.local type="impl"/>
+    </target>
+
+
+    <!--
+       USE THE FOLLOWING TARGETS TO PUSH VARIOUS BUILD TYPES TO THE
+       JAVA.NET M2 REPOSITORY
+    -->
+     <target name="mvn.deploy.snapshot">
+        <mvn.deploy.snapshot type="impl"/>
+    </target>
+
+
+    <target name="mvn.deploy.promoted">
+        <mvn.deploy.promoted type="impl"/>
+    </target>
+
+
+    <target name="mvn.deploy.release">
+        <mvn.deploy.release type="impl"/>
+    </target>
+
+    <target name="javadoc_check">
+        <uptodate property="javadoc.notrequired"
+                  targetfile="${build.javadocs.dir}/packages.html">
+            <srcfiles dir="${source.dir}" includes="**/*.java"/>
+            <srcfiles dir="${build.generate.dir}" includes="**/*.java"/>
+        </uptodate>
+    </target>
+
+    <target name="javadocs"
+            depends="prepare,javadoc_check,generate,generate.javadocs"
+            unless="javadoc.notrequired"
+            description="Create the JavaDoc API documentation">
+
+    </target>
+
+
+    <target name="generate.javadocs">
+        <javadoc packagenames="javax.*"
+                 destdir="${build.javadocs.dir}"
+                 private="${javadoc.private}"
+                 protected="${javadoc.protected}"
+                 windowtitle="${DocName} (${spec.version})"
+                 source="1.5"
+                 doctitle="${DocName} (${spec.version})"
+                 bottom="Copyright © 2002-2013 Oracle America, Inc. All Rights Reserved.">
+           <link offline="true"
+                 href="http://java.sun.com/javase/6/docs/api/package-list"
+                 packagelistloc="${jsf.build.home}/common/ant/package-list" />
+                 
+
+            <fileset dir="${source.dir}">
+                <include name="com/sun/faces/spi/**/*.java"/>
+            </fileset>
+            <classpath refid="impl.compile.classpath"/>
+        </javadoc>
+
+    </target>
+
+    
+</project>
diff --git a/jsf-ri/conf/basic/META-INF/faces-config.xml b/jsf-ri/conf/basic/META-INF/faces-config.xml
index 2955e27..78a9e35 100644
--- a/jsf-ri/conf/basic/META-INF/faces-config.xml
+++ b/jsf-ri/conf/basic/META-INF/faces-config.xml
@@ -1,39 +1,44 @@
 <?xml version='1.0' encoding='UTF-8'?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
 
 <faces-config xmlns="http://java.sun.com/xml/ns/javaee"
diff --git a/jsf-ri/conf/share/com.sun.faces.util.cdi11.CDIUtil b/jsf-ri/conf/share/com.sun.faces.util.cdi11.CDIUtil
new file mode 100644
index 0000000..d585836
--- /dev/null
+++ b/jsf-ri/conf/share/com.sun.faces.util.cdi11.CDIUtil
@@ -0,0 +1 @@
+com.sun.faces.util.cdi11.CDIUtilImpl
diff --git a/jsf-ri/conf/share/composite.taglib.xml b/jsf-ri/conf/share/composite.taglib.xml
index 91888c2..7b15a0c 100644
--- a/jsf-ri/conf/share/composite.taglib.xml
+++ b/jsf-ri/conf/share/composite.taglib.xml
@@ -1,52 +1,58 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 2009 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2009-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
 
-<facelet-taglib xmlns="http://java.sun.com/xml/ns/javaee"
+<facelet-taglib xmlns="http://xmlns.jcp.org/xml/ns/javaee"
               xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-              xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facelettaglibrary_2_0.xsd"
-              version="2.0">
-    <description>
+              xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-facelettaglibrary_2_2.xsd"
+              version="2.2">
+    <description><![CDATA[
 
 
-        </pre>
+        </pre>
 
-        <div class="changed_added_2_0">
+        <div class="changed_added_2_0">
 
-        <p>Describes the Facelets2 tag library used for declaring and
+        <p>Describes the Facelets2 tag library used for declaring and
         defining
         the usage contract for composite UI Components. When authoring a
         composite component, use of this tag library is largely optional,
@@ -55,918 +61,923 @@
         component that can be used by tools and users of the composite
         component. In most cases, a composite component can be authored
         without declaring and defining its usage contract with this taglib.
+        </p>
+
+<!--
+
         PENDING: the limit of what one can do without declaring and defining a
         usage contract must be cleary specified and documented. PENDING: The
         implementation team must help discover these limits.
-        </p>
 
-        <h2>Creating a Composite Component</h2>
+-->
+
+        <h2>Creating a Composite Component</h2>
 
-        <p>The default implementation must support authoring A composite
+        <p>The default implementation must support authoring A composite
         component is declared by creating a Facelets2 file inside of a resource
         library. (See section JSF.2.6 of the specification prose document for
         more information about resource libraries.) A composite component
         must reside within a resource library. It is not possible to create a
         composite component without putting it inside of a resource
-        library.</p>
+        library.</p>
 
-        <p>The default XML namespace URI of the taglib that contains the
-        composite component, for use in <em>the using page</em>, is
-        <code>http://java.sun.com/jsf/composite/&lt;composite-library-name&gt;</code>,
-        where <code>&lt;composite-library-name&gt;</code> is
+        <p>The default XML namespace URI of the taglib that contains the
+        composite component, for use in <em>the using page</em>, is
+        <code>http://xmlns.jcp.org/jsf/composite/&lt;composite-library-name&gt;</code>,
+        where <code>&lt;composite-library-name&gt;</code> is
         the name of the
-        resource library. For example:</p>
+        resource library. For example:</p>
 
-        <pre><code>
+        <pre><code>
         &lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-        <br />
-        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;<br
-        />
-        &lt;html xmlns="http://www.w3.org/1999/xhtml"<br />
-        xmlns:h="http://java.sun.com/jsf/html"<br />
-        xmlns:f="http://java.sun.com/jsf/core"<br />
-        xmlns:ui="http://java.sun.com/jsf/facelets"<br />
-        xmlns:ez="<i>http://java.sun.com/jsf/composite/<b>ezcomp</b></i>"&gt;<br
-        />
-        ...<br />
-        </code></pre>
-
-        <p>This declares that any Facelets2 file in the resource
-        library called <code>ezcomp</code> can be used as a regular
+        <br />
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;<br
+        />
+        &lt;html xmlns="http://www.w3.org/1999/xhtml"<br />
+        xmlns:h="http://xmlns.jcp.org/jsf/html"<br />
+        xmlns:f="http://xmlns.jcp.org/jsf/core"<br />
+        xmlns:ui="http://xmlns.jcp.org/jsf/facelets"<br />
+        xmlns:ez="<i>http://xmlns.jcp.org/jsf/composite/<b>ezcomp</b></i>"&gt;<br
+        />
+        ...<br />
+        </code></pre>
+
+        <p>This declares that any Facelets2 file in the resource
+        library called <code>ezcomp</code> can be used as a regular
         JSF UI
         component in a view with the above namespace declaration by using the
-        "<code>ez</code>" prefix. For example, placing a file called
-        <code>foo.xhtml</code> in a resource library called <code>ezcomp</code>
-        would make that file accessible like this.</p>
+        "<code>ez</code>" prefix. For example, placing a file called
+        <code>foo.xhtml</code> in a resource library called <code>ezcomp</code>
+        would make that file accessible like this.</p>
 
-        <pre><code>
+        <pre><code>
         &lt;ez:foo /&gt;
-        </code></pre>
+        </code></pre>
 
 
-        <p>The implementation must also support declaring the
+        <p>The implementation must also support declaring the
         namespace of the tag library in a JSF VDL tag library descriptor.
         This descriptor file is optional and is useful for component vendors
         that do not want to use the default XML namespace. This version of
         the proposal currently uses the facelet taglib descriptor syntax. For
-        example: </p>
+        example: </p>
 
-        <pre><code>
-        &lt;facelet-taglib&gt;<br />
+        <pre><code>
+        &lt;facelet-taglib&gt;<br />
         &lt;namespace&gt;http://domain.com/path&lt;/namespace&gt;
-        <br />
+        <br />
         &lt;composite-library-name&gt;compositeTest&lt;/composite-library-name&gt;
-        <br />
-        &lt;/facelet-taglib&gt; <br />
-        </code></pre>
+        <br />
+        &lt;/facelet-taglib&gt; <br />
+        </code></pre>
 
-        <p>Components from that taglibrary may be used in a using page by
-        declaring them in the XML namespace for that view:</p>
+        <p>Components from that taglibrary may be used in a using page by
+        declaring them in the XML namespace for that view:</p>
 
-        <pre><code>
+        <pre><code>
         &lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-        <br />
-        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;<br
-        />
-        &lt;html xmlns="http://www.w3.org/1999/xhtml"<br />
-        xmlns:h="http://java.sun.com/jsf/html"<br />
-        xmlns:f="http://java.sun.com/jsf/core"<br />
-        xmlns:ui="http://java.sun.com/jsf/facelets"<br />
-        xmlns:ez="<i><b>http://domain.com/path/namespace</b></i>"&gt;<br
-        />
-        ...<br />
-        </code></pre>
-
-
-        <p><a name="composite_example">Below is an example of a
+        <br />
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;<br
+        />
+        &lt;html xmlns="http://www.w3.org/1999/xhtml"<br />
+        xmlns:h="http://xmlns.jcp.org/jsf/html"<br />
+        xmlns:f="http://xmlns.jcp.org/jsf/core"<br />
+        xmlns:ui="http://xmlns.jcp.org/jsf/facelets"<br />
+        xmlns:ez="<i><b>http://domain.com/path/namespace</b></i>"&gt;<br
+        />
+        ...<br />
+        </code></pre>
+
+
+        <p><a name="composite_example">Below is an example of a
         fairly
         involved composite component declaration. Such a declaration might
-        appear in <code>foo.xhtml</code>.</a></p>
-
-        <div class="syntax"><div class="html4strict"
-        style="font-family: monospace;"><ol><li class="li1"><div
-        class="de1"><span class="sc2">&lt;<a
-        href="interface.html">composite:interface</a> <span
-        class="kw3">name</span>=<span class="st0">&quot;foo&quot;</span></div></li>
-        <li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp;
+        appear in <code>foo.xhtml</code>.</a></p>
+
+        <div class="syntax"><div class="html4strict"
+        style="font-family: monospace;"><ol><li class="li1"><div
+        class="de1"><span class="sc2">&lt;<a
+        href="interface.html">composite:interface</a> <span
+        class="kw3">name</span>=<span class="st0">&quot;foo&quot;</span></div></li>
+        <li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp;
         &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
-        &nbsp;displayName=<span class="st0">&quot;Very Simple
-        Login Panel&quot;</span></div></li>
-        <li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp;
+        &nbsp;displayName=<span class="st0">&quot;Very Simple
+        Login Panel&quot;</span></div></li>
+        <li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp;
         &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
-        &nbsp;preferred=<span class="st0">&quot;true&quot;</span></div></li>
-        <li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp;
+        &nbsp;preferred=<span class="st0">&quot;true&quot;</span></div></li>
+        <li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp;
         &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
-        &nbsp;expert=<span class="st0">&quot;false&quot;</span></div></li>
-        <li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp;
+        &nbsp;expert=<span class="st0">&quot;false&quot;</span></div></li>
+        <li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp;
         &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
-        &nbsp;shortDescription=<span class="st0">&quot;An
-        illustration of the composite component feature&quot;</span><span
-        class="kw2">&gt;</span></span></div></li>
-        <li class="li2"><div class="de2">&nbsp; <span
-        class="sc2">&lt;<a href="attribute.html">composite:attribute</a>
-        <span class="kw3">name</span>=<span class="st0">&quot;model&quot;</span>
-        required=<span class="st0">&quot;true&quot;</span><span
-        class="kw2">&gt;</span></span></div></li>
-        <li class="li1"><div class="de1">&nbsp; &nbsp; <span
-        class="sc2">&lt;composite:attribute <span class="kw3">name</span>=<span
-        class="st0">&quot;loginAction&quot;</span> required=<span
-        class="st0">&quot;true&quot;</span> method-signature=<span
-        class="st0">&quot;java.lang.Object action()&quot;</span>/
-        <span class="kw2">&gt;</span></span></div></li>
-        <li class="li2"><div class="de2">&nbsp; <span
-        class="sc2"><span class="kw2">&lt;</span>/composite:attribute&gt;</span></div></li>
-        <li class="li1"><div class="de1">&nbsp; <span
-        class="sc2">&lt;composite:attribute <span class="kw3">name</span>=<span
-        class="st0">&quot;valueChangeListener&quot;</span>
-        targets=<span class="st0">&quot;username&quot;</span>
-        /<span class="kw2">&gt;</span></span></div></li>
-        <li class="li2"><div class="de2">&nbsp; <span
-        class="sc2">&lt;composite:attribute <span class="kw3">name</span>=<span
-        class="st0">&quot;specialMethodExpression&quot;</span></div></li>
-        <li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp;
+        &nbsp;shortDescription=<span class="st0">&quot;An
+        illustration of the composite component feature&quot;</span><span
+        class="kw2">&gt;</span></span></div></li>
+        <li class="li2"><div class="de2">&nbsp; <span
+        class="sc2">&lt;<a href="attribute.html">composite:attribute</a>
+        <span class="kw3">name</span>=<span class="st0">&quot;model&quot;</span>
+        required=<span class="st0">&quot;true&quot;</span><span
+        class="kw2">&gt;</span></span></div></li>
+        <li class="li1"><div class="de1">&nbsp; &nbsp; <span
+        class="sc2">&lt;composite:attribute <span class="kw3">name</span>=<span
+        class="st0">&quot;loginAction&quot;</span> required=<span
+        class="st0">&quot;true&quot;</span> method-signature=<span
+        class="st0">&quot;java.lang.Object action()&quot;</span>/
+        <span class="kw2">&gt;</span></span></div></li>
+        <li class="li2"><div class="de2">&nbsp; <span
+        class="sc2"><span class="kw2">&lt;</span>/composite:attribute&gt;</span></div></li>
+        <li class="li1"><div class="de1">&nbsp; <span
+        class="sc2">&lt;composite:attribute <span class="kw3">name</span>=<span
+        class="st0">&quot;valueChangeListener&quot;</span>
+        targets=<span class="st0">&quot;username&quot;</span>
+        /<span class="kw2">&gt;</span></span></div></li>
+        <li class="li2"><div class="de2">&nbsp; <span
+        class="sc2">&lt;composite:attribute <span class="kw3">name</span>=<span
+        class="st0">&quot;specialMethodExpression&quot;</span></div></li>
+        <li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp;
         &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
-        &nbsp; &nbsp;method-signature=<span class="st0">&quot;com.foo.User
-        validateCurrentUser()&quot;</span> /<span class="kw2">&gt;</span></span></div></li>
-        <li class="li2"><div class="de2">&nbsp; <span
-        class="sc2">&lt;composite:attribute <span class="kw3">name</span>=<span
-        class="st0">&quot;loginButtonLabel&quot;</span>
-        default=<span class="st0">&quot;Login&quot;</span> /<span
-        class="kw2">&gt;</span></span></div></li>
-        <li class="li1"><div class="de1">&nbsp; <span
-        class="sc2">&lt;<a href="editableValueHolder.html">composite:editableValueHolder</a>
-        <span class="kw3">name</span>=<span class="st0">&quot;username&quot;</span>
-        /<span class="kw2">&gt;</span></span></div></li>
-        <li class="li2"><div class="de2">&nbsp; <span
-        class="sc2">&lt;composite:actionSource <span class="kw3">name</span>=<span
-        class="st0">&quot;loginEvent&quot;</span> /<span
-        class="kw2">&gt;</span></span></div></li>
-        <li class="li1"><div class="de1">&nbsp; <span
-        class="sc2">&lt;composite:actionSource <span class="kw3">name</span>=<span
-        class="st0">&quot;cancelEvent&quot;</span> /<span
-        class="kw2">&gt;</span></span></div></li>
-        <li class="li2"><div class="de2">&nbsp; <span
-        class="sc2">&lt;composite:actionSource <span class="kw3">name</span>=<span
-        class="st0">&quot;allEvents&quot;</span> targets=<span
-        class="st0">&quot;loginEvent cancelEvent&quot;</span> /<span
-        class="kw2">&gt;</span></span></div></li>
-        <li class="li1"><div class="de1"><span class="sc2"><span
-        class="kw2">&lt;</span>/composite:interface&gt;</span></div></li>
-        <li class="li2"><div class="de2"><span class="sc2">&lt;<a
-        href="implementation.html">composite:implementation</a> <span
-        class="kw2">&gt;</span></span></div></li>
-        <li class="li1"><div class="de1">&nbsp;</div></li>
-        <li class="li2"><div class="de2">&nbsp; <span
-        class="sc2">&lt;ui:decorate template=<span class="st0">&quot;fooTemplate.xhtml&quot;</span><span
-        class="kw2">&gt;</span></span></div></li>
-        <li class="li1"><div class="de1">&nbsp;</div></li>
-        <li class="li2"><div class="de2">&nbsp; &nbsp; <span
-        class="sc2">&lt;ui:define <span class="kw3">name</span>=<span
-        class="st0">&quot;header&quot;</span><span
-        class="kw2">&gt;</span></span></div></li>
-        <li class="li1"><div class="de1">&nbsp;</div></li>
-        <li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp;
-        <span class="sc2"><span class="kw2">&lt;p&gt;</span></span>This
-        is the login panel header<span class="sc2"><span class="kw2">&lt;/p&gt;</span></span></div></li>
-        <li class="li1"><div class="de1">&nbsp;</div></li>
-        <li class="li2"><div class="de2">&nbsp; &nbsp; <span
-        class="sc2"><span class="kw2">&lt;</span>/ui:define&gt;</span></div></li>
-        <li class="li1"><div class="de1">&nbsp;</div></li>
-        <li class="li2"><div class="de2">&nbsp; &nbsp; <span
-        class="sc2">&lt;ui:define <span class="kw3">name</span>=<span
-        class="st0">&quot;body&quot;</span><span class="kw2">&gt;</span></span></div></li>
-        <li class="li1"><div class="de1">&nbsp;</div></li>
-        <li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp;
-        <span class="sc2"><span class="kw2">&lt;p&gt;</span></span></div></li>
-        <li class="li1"><div class="de1">&nbsp;</div></li>
-        <li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp;
-        &nbsp; &nbsp;<span class="sc2">&lt;h:inputText <span
-        class="kw3">id</span>=<span class="st0">&quot;username&quot;</span>
-        /<span class="kw2">&gt;</span></span></div></li>
-        <li class="li1"><div class="de1">&nbsp;</div></li>
-        <li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp;
-        <span class="sc2"><span class="kw2">&lt;/p&gt;</span></span></div></li>
-        <li class="li1"><div class="de1">&nbsp;</div></li>
-        <li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp;
-        <span class="sc2"><span class="kw2">&lt;p&gt;</span></span></div></li>
-        <li class="li1"><div class="de1">&nbsp;</div></li>
-        <li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp;
-        &nbsp; <span class="sc2">&lt;h:commandButton <span
-        class="kw3">id</span>=<span class="st0">&quot;loginEvent&quot;</span>
-        </div></li>
-        <li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp;
+        &nbsp; &nbsp;method-signature=<span class="st0">&quot;com.foo.User
+        validateCurrentUser()&quot;</span> /<span class="kw2">&gt;</span></span></div></li>
+        <li class="li2"><div class="de2">&nbsp; <span
+        class="sc2">&lt;composite:attribute <span class="kw3">name</span>=<span
+        class="st0">&quot;loginButtonLabel&quot;</span>
+        default=<span class="st0">&quot;Login&quot;</span> /<span
+        class="kw2">&gt;</span></span></div></li>
+        <li class="li1"><div class="de1">&nbsp; <span
+        class="sc2">&lt;<a href="editableValueHolder.html">composite:editableValueHolder</a>
+        <span class="kw3">name</span>=<span class="st0">&quot;username&quot;</span>
+        /<span class="kw2">&gt;</span></span></div></li>
+        <li class="li2"><div class="de2">&nbsp; <span
+        class="sc2">&lt;composite:actionSource <span class="kw3">name</span>=<span
+        class="st0">&quot;loginEvent&quot;</span> /<span
+        class="kw2">&gt;</span></span></div></li>
+        <li class="li1"><div class="de1">&nbsp; <span
+        class="sc2">&lt;composite:actionSource <span class="kw3">name</span>=<span
+        class="st0">&quot;cancelEvent&quot;</span> /<span
+        class="kw2">&gt;</span></span></div></li>
+        <li class="li2"><div class="de2">&nbsp; <span
+        class="sc2">&lt;composite:actionSource <span class="kw3">name</span>=<span
+        class="st0">&quot;allEvents&quot;</span> targets=<span
+        class="st0">&quot;loginEvent cancelEvent&quot;</span> /<span
+        class="kw2">&gt;</span></span></div></li>
+        <li class="li1"><div class="de1"><span class="sc2"><span
+        class="kw2">&lt;</span>/composite:interface&gt;</span></div></li>
+        <li class="li2"><div class="de2"><span class="sc2">&lt;<a
+        href="implementation.html">composite:implementation</a> <span
+        class="kw2">&gt;</span></span></div></li>
+        <li class="li1"><div class="de1">&nbsp;</div></li>
+        <li class="li2"><div class="de2">&nbsp; <span
+        class="sc2">&lt;ui:decorate template=<span class="st0">&quot;fooTemplate.xhtml&quot;</span><span
+        class="kw2">&gt;</span></span></div></li>
+        <li class="li1"><div class="de1">&nbsp;</div></li>
+        <li class="li2"><div class="de2">&nbsp; &nbsp; <span
+        class="sc2">&lt;ui:define <span class="kw3">name</span>=<span
+        class="st0">&quot;header&quot;</span><span
+        class="kw2">&gt;</span></span></div></li>
+        <li class="li1"><div class="de1">&nbsp;</div></li>
+        <li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp;
+        <span class="sc2"><span class="kw2">&lt;p&gt;</span></span>This
+        is the login panel header<span class="sc2"><span class="kw2">&lt;/p&gt;</span></span></div></li>
+        <li class="li1"><div class="de1">&nbsp;</div></li>
+        <li class="li2"><div class="de2">&nbsp; &nbsp; <span
+        class="sc2"><span class="kw2">&lt;</span>/ui:define&gt;</span></div></li>
+        <li class="li1"><div class="de1">&nbsp;</div></li>
+        <li class="li2"><div class="de2">&nbsp; &nbsp; <span
+        class="sc2">&lt;ui:define <span class="kw3">name</span>=<span
+        class="st0">&quot;body&quot;</span><span class="kw2">&gt;</span></span></div></li>
+        <li class="li1"><div class="de1">&nbsp;</div></li>
+        <li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp;
+        <span class="sc2"><span class="kw2">&lt;p&gt;</span></span></div></li>
+        <li class="li1"><div class="de1">&nbsp;</div></li>
+        <li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp;
+        &nbsp; &nbsp;<span class="sc2">&lt;h:inputText <span
+        class="kw3">id</span>=<span class="st0">&quot;username&quot;</span>
+        /<span class="kw2">&gt;</span></span></div></li>
+        <li class="li1"><div class="de1">&nbsp;</div></li>
+        <li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp;
+        <span class="sc2"><span class="kw2">&lt;/p&gt;</span></span></div></li>
+        <li class="li1"><div class="de1">&nbsp;</div></li>
+        <li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp;
+        <span class="sc2"><span class="kw2">&lt;p&gt;</span></span></div></li>
+        <li class="li1"><div class="de1">&nbsp;</div></li>
+        <li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp;
+        &nbsp; <span class="sc2">&lt;h:commandButton <span
+        class="kw3">id</span>=<span class="st0">&quot;loginEvent&quot;</span>
+        </div></li>
+        <li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp;
         &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
-        &nbsp; &nbsp; &nbsp;<span class="kw3">value</span>=<span
-        class="st0">&quot;#{cc.attrs.loginButtonLabel}&quot;</span><span
-        class="kw2">&gt;</span></span></div></li>
-        <li class="li2"><div class="de2">&nbsp;</div></li>
-        <li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp;
-        &nbsp; <span class="sc2"><span class="kw2">&lt;</span>/h:commandButton&gt;</span></div></li>
-        <li class="li2"><div class="de2">&nbsp;</div></li>
-        <li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp;
-        &nbsp; <span class="sc2">&lt;h:commandButton <span
-        class="kw3">id</span>=<span class="st0">&quot;cancelEvent&quot;</span>
-        <span class="kw3">value</span>=<span class="st0">&quot;Cancel&quot;</span>
-        <span class="kw3">action</span>=<span class="st0">&quot;cancel&quot;</span><span
-        class="kw2">&gt;</span></span></div></li>
-        <li class="li2"><div class="de2">&nbsp;</div></li>
-        <li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp;
-        &nbsp; <span class="sc2"><span class="kw2">&lt;</span>/h:commandButton&gt;</span></div></li>
-        <li class="li2"><div class="de2">&nbsp;</div></li>
-        <li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp;
-        &nbsp; <span class="sc2">&lt;special:validateUserButton
-        </div></li>
-        <li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp;
-        &nbsp; &nbsp; validateUser=<span class="st0">&quot;#{cc.attrs.specialMethodExpression}&quot;</span>
-        /<span class="kw2">&gt;</span></span></div></li>
-        <li class="li1"><div class="de1">&nbsp;</div></li>
-        <li class="li2"><div class="de2">&nbsp;</div></li>
-        <li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp;
-        <span class="sc2"><span class="kw2">&lt;/p&gt;</span></span></div></li>
-        <li class="li2"><div class="de2">&nbsp;</div></li>
-        <li class="li1"><div class="de1">&nbsp; &nbsp; <span
-        class="sc2"><span class="kw2">&lt;</span>/ui:define&gt;</span></div></li>
-        <li class="li2"><div class="de2">&nbsp;</div></li>
-        <li class="li1"><div class="de1">&nbsp; &nbsp; <span
-        class="sc2">&lt;ui:define <span class="kw3">name</span>=<span
-        class="st0">&quot;footer&quot;</span><span
-        class="kw2">&gt;</span></span></div></li>
-        <li class="li2"><div class="de2">&nbsp;</div></li>
-        <li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp;<span
-        class="sc2"><span class="kw2">&lt;p&gt;</span></span>This
-        is the login panel footer<span class="sc2"><span class="kw2">&lt;/p&gt;</span></span></div></li>
-        <li class="li2"><div class="de2">&nbsp;</div></li>
-        <li class="li1"><div class="de1">&nbsp; &nbsp; <span
-        class="sc2"><span class="kw2">&lt;</span>/ui:define&gt;</span></div></li>
-        <li class="li2"><div class="de2">&nbsp;</div></li>
-        <li class="li1"><div class="de1">&nbsp; <span
-        class="sc2"><span class="kw2">&lt;</span>/ui:decorate&gt;</span></div></li>
-        <li class="li2"><div class="de2">&nbsp;</div></li>
-        <li class="li1"><div class="de1"><span class="sc2"><span
-        class="kw2">&lt;</span>/composite:implementation&gt;</span>
-        </div></li></ol></div></div>
-
-        <p>The values for attributes in a composite component VDL file can
+        &nbsp; &nbsp; &nbsp;<span class="kw3">value</span>=<span
+        class="st0">&quot;#{cc.attrs.loginButtonLabel}&quot;</span><span
+        class="kw2">&gt;</span></span></div></li>
+        <li class="li2"><div class="de2">&nbsp;</div></li>
+        <li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp;
+        &nbsp; <span class="sc2"><span class="kw2">&lt;</span>/h:commandButton&gt;</span></div></li>
+        <li class="li2"><div class="de2">&nbsp;</div></li>
+        <li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp;
+        &nbsp; <span class="sc2">&lt;h:commandButton <span
+        class="kw3">id</span>=<span class="st0">&quot;cancelEvent&quot;</span>
+        <span class="kw3">value</span>=<span class="st0">&quot;Cancel&quot;</span>
+        <span class="kw3">action</span>=<span class="st0">&quot;cancel&quot;</span><span
+        class="kw2">&gt;</span></span></div></li>
+        <li class="li2"><div class="de2">&nbsp;</div></li>
+        <li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp;
+        &nbsp; <span class="sc2"><span class="kw2">&lt;</span>/h:commandButton&gt;</span></div></li>
+        <li class="li2"><div class="de2">&nbsp;</div></li>
+        <li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp;
+        &nbsp; <span class="sc2">&lt;special:validateUserButton
+        </div></li>
+        <li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp;
+        &nbsp; &nbsp; validateUser=<span class="st0">&quot;#{cc.attrs.specialMethodExpression}&quot;</span>
+        /<span class="kw2">&gt;</span></span></div></li>
+        <li class="li1"><div class="de1">&nbsp;</div></li>
+        <li class="li2"><div class="de2">&nbsp;</div></li>
+        <li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp;
+        <span class="sc2"><span class="kw2">&lt;/p&gt;</span></span></div></li>
+        <li class="li2"><div class="de2">&nbsp;</div></li>
+        <li class="li1"><div class="de1">&nbsp; &nbsp; <span
+        class="sc2"><span class="kw2">&lt;</span>/ui:define&gt;</span></div></li>
+        <li class="li2"><div class="de2">&nbsp;</div></li>
+        <li class="li1"><div class="de1">&nbsp; &nbsp; <span
+        class="sc2">&lt;ui:define <span class="kw3">name</span>=<span
+        class="st0">&quot;footer&quot;</span><span
+        class="kw2">&gt;</span></span></div></li>
+        <li class="li2"><div class="de2">&nbsp;</div></li>
+        <li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp;<span
+        class="sc2"><span class="kw2">&lt;p&gt;</span></span>This
+        is the login panel footer<span class="sc2"><span class="kw2">&lt;/p&gt;</span></span></div></li>
+        <li class="li2"><div class="de2">&nbsp;</div></li>
+        <li class="li1"><div class="de1">&nbsp; &nbsp; <span
+        class="sc2"><span class="kw2">&lt;</span>/ui:define&gt;</span></div></li>
+        <li class="li2"><div class="de2">&nbsp;</div></li>
+        <li class="li1"><div class="de1">&nbsp; <span
+        class="sc2"><span class="kw2">&lt;</span>/ui:decorate&gt;</span></div></li>
+        <li class="li2"><div class="de2">&nbsp;</div></li>
+        <li class="li1"><div class="de1"><span class="sc2"><span
+        class="kw2">&lt;</span>/composite:implementation&gt;</span>
+        </div></li></ol></div></div>
+
+        <p>The values for attributes in a composite component VDL file can
         be
         fully localized by putting them inside a ResourceBundle in the same
         directory as the VDL view and accessing them with the per-component
-        resource bundle syntax. Consider the file <code>foo.xhtml</code>,
+        resource bundle syntax. Consider the file <code>foo.xhtml</code>,
         in
-        the resource library <code>ezcomp</code>. The
-        <code>shortDescription</code> element could be changed to
-        be:</p>
+        the resource library <code>ezcomp</code>. The
+        <code>shortDescription</code> element could be changed to
+        be:</p>
 
-        <pre><code>
+        <pre><code>
         &lt;composite:interface
         shortDescription="#{cc.resourceBundleMap.shortDescription}" &gt;
-        </code></pre>
+        </code></pre>
 
-        <p>In this case, In the same <code>ezcomp</code>
+        <p>In this case, In the same <code>ezcomp</code>
         directory as
-        <code>foo.xhtml</code>, there would be a <code>foo.properties</code>
-        file that would contain this entry:</p>
+        <code>foo.xhtml</code>, there would be a <code>foo.properties</code>
+        file that would contain this entry:</p>
 
-        <pre><code>
+        <pre><code>
         shortDescription=A really nifty login panel.
-        </code></pre>
+        </code></pre>
 
-        <p>The normal localization rules for <code>ResourceBundle</code>
+        <p>The normal localization rules for <code>ResourceBundle</code>
         would
-        apply.</p>
+        apply.</p>
 
-        </div>
+        </div>
 
 
-        <pre>
+        <pre>
 
 
-    </description>
-    <namespace>http://java.sun.com/jsf/composite</namespace>
+    ]]></description>
+    <namespace>http://xmlns.jcp.org/jsf/composite</namespace>
     <tag>
-        <description>
+        <description><![CDATA[
 
 
-            <div class="changed_added_2_0">
+            <div class="changed_added_2_0">
 
-            <p>This element declares the usage contract for a composite
+            <p>This element declares the usage contract for a composite
             component. Optionally, and at the component author's
             discretion, this contract exposes the features of one or
             more inner components to the page author. The page author
             can work with the composite component as a single component
             whose feature set is the union of the features declared in
-            the usage contract.</p>
+            the usage contract.</p>
 
-            <p>For example, consider a composite component that
+            <p>For example, consider a composite component that
             implements the functionality of a "login panel". Such a
             component would likely have two text fields and one button.
             The user of such a component might like to do one or more of
-            the following.</p>
+            the following.</p>
 
-            <ul>
+            <ul>
 
-            <li><p>Be able to listen for the <code>ActionEvent</code>
-            on the button.</p>
+            <li><p>Be able to listen for the <code>ActionEvent</code>
+            on the button.</p>
 
-            <p>In this case, a
-            <code>&lt;composite:actionSource&gt;</code>
+            <p>In this case, a
+            <code>&lt;composite:actionSource&gt;</code>
             element is
             included in the usage contract that refers to the inner
-            button in the <code>&lt;composite:implementation&gt;</code>
-            section.</p>
+            button in the <code>&lt;composite:implementation&gt;</code>
+            section.</p>
 
-            </li>
+            </li>
 
-            <li><p>Provide an "action" to invoke when the button is
+            <li><p>Provide an "action" to invoke when the button is
             pressed.
-            </p>
+            </p>
 
-            <p>In this case, a
-            <code>&lt;composite:attribute&gt;</code> element
+            <p>In this case, a
+            <code>&lt;composite:attribute&gt;</code> element
             is included
             in the usage contract that refers to the inner button in the
-            <code>&lt;composite:implementation&gt;</code>
+            <code>&lt;composite:implementation&gt;</code>
             section and
-            declares the proper method signature for an "action".</p>
+            declares the proper method signature for an "action".</p>
 
-            </li>
+            </li>
 
-            <li><p>Provide parameters to the composite component for
+            <li><p>Provide parameters to the composite component for
             labels and other rendering specific aspects of the composite
-            component.</p>
+            component.</p>
 
-            <p>In this case, one or more
-            <code>&lt;composite:attribute&gt;</code>
+            <p>In this case, one or more
+            <code>&lt;composite:attribute&gt;</code>
             elements are included
             in the usage contract and those parameters are referred to in
-            the <code>&lt;composite:implementation&gt;</code>
+            the <code>&lt;composite:implementation&gt;</code>
             section
             using EL expressions like
-            <code>#{cc.attrs.usernameLabel}</code>,
-            assuming <code>usernameLabel</code> is the <code>name</code>
-            of one of the <code>&lt;composite:attribute&gt;</code>
-            elements in the usage contract.</p>
+            <code>#{cc.attrs.usernameLabel}</code>,
+            assuming <code>usernameLabel</code> is the <code>name</code>
+            of one of the <code>&lt;composite:attribute&gt;</code>
+            elements in the usage contract.</p>
 
-            </li>
+            </li>
 
 
-            <li><p>Add <code>ValueChangeListener</code>s,
-            <code>Converter</code>s, or <code>Validator</code>s
+            <li><p>Add <code>ValueChangeListener</code>s,
+            <code>Converter</code>s, or <code>Validator</code>s
             to either
             or both text fields.
-            </p>
+            </p>
 
-            <p>In this case, a
-            <code>&lt;composite:editableValueHolder&gt;</code>
+            <p>In this case, a
+            <code>&lt;composite:editableValueHolder&gt;</code>
             element is
             included in the usage contract that refers to the inner text
-            field in the <code>&lt;composite:implementation&gt;</code>
+            field in the <code>&lt;composite:implementation&gt;</code>
             section. In the case of wanting to enable only adding a
-            <code>Converter</code> (and not a
-            <code>ValueChangeListener</code> or <code>Validator</code>,
+            <code>Converter</code> (and not a
+            <code>ValueChangeListener</code> or <code>Validator</code>,
             a
-            <code>&lt;composite:valueHolder&gt;</code>
+            <code>&lt;composite:valueHolder&gt;</code>
             element would be
-            used.</p>
+            used.</p>
 
-            </li>
+            </li>
 
-            <li><p>Add facet children to the login panel.</p>
+            <li><p>Add facet children to the login panel.</p>
 
-            <p>In this case, a <code>&lt;composite:facet&gt;</code>
+            <p>In this case, a <code>&lt;composite:facet&gt;</code>
             element is included in the usage contract that refers to the
-            inner <code>&lt;composite:renderFacet&gt;</code>
+            inner <code>&lt;composite:renderFacet&gt;</code>
             element in
-            the <code>&lt;composite:implementation&gt;</code>
+            the <code>&lt;composite:implementation&gt;</code>
             section.
-            </p>
+            </p>
 
-            </li>
+            </li>
 
 
-            </ul>
+            </ul>
 
-            <p>For each of the behaviorial interfaces in Section JSF.3.2
+            <p>For each of the behaviorial interfaces in Section JSF.3.2
             of
             the specification, there is a tag in the
-            <code>composite:</code> library to nest inside of the
-            <code>&lt;composite:interface&gt;</code>
+            <code>composite:</code> library to nest inside of the
+            <code>&lt;composite:interface&gt;</code>
             section.
-            </p>
+            </p>
 
 
-            <p>If the <code>&lt;composite:interface&gt;</code>
+            <p>If the <code>&lt;composite:interface&gt;</code>
             section
-            is not present in a <em>VDL view</em>, the contract will
+            is not present in a <em>VDL view</em>, the contract will
             be
             inferred as described in the specification. There must be
             zero or one of these elements in a composite component VDL
-            file. If a <code>&lt;composite:interface&gt;</code>
+            file. If a <code>&lt;composite:interface&gt;</code>
             element
             does appear, there must be an accompanying
-            <code>&lt;composite:implementation&gt;</code>
+            <code>&lt;composite:implementation&gt;</code>
             element in the
-            same VDL file. </p>
+            same VDL file. </p>
 
-            <p><b>Nesting of composite components</b></p>
+            <p><b>Nesting of composite components</b></p>
 
-            <p>The implementation must support nesting of composite
+            <p>The implementation must support nesting of composite
             components. Specifically, it must be possible for the
-            <code>&lt;composite:implementation&gt;</code>
+            <code>&lt;composite:implementation&gt;</code>
             section of a
-            composite component to act as the <em>using page</em>
+            composite component to act as the <em>using page</em>
             for
             another composite component. When a composite component
-            exposes a behavioral interface to the <em>using page</em>,
-            such as a <code>&lt;composite:actionSource&gt;</code>,
-            <code>&lt;composite:editableValueHolder&gt;</code>,
-            <code>&lt;composite:valueHolder&gt;</code> or
+            exposes a behavioral interface to the <em>using page</em>,
+            such as a <code>&lt;composite:actionSource&gt;</code>,
+            <code>&lt;composite:editableValueHolder&gt;</code>,
+            <code>&lt;composite:valueHolder&gt;</code> or
             other
             behavioral interface, it must be possible to
             &#8220;propogate&#8221; the exposure of such an interface in
             the case of a nested composite component. The composite
             component author must ensure that the value of the
-            <code>name</code> attributes exactly match at all levels
+            <code>name</code> attributes exactly match at all levels
             of
             the nesting to enable this exposure to work. The
             implementation is not required to support
             &#8220;re-mapping&#8221; of names in a nested composite
-            component.</p>
-
-            <p>For example, consider this nested composite component.</p>
-
-            <p>Using page</p>
-
-            <div class="syntax"><div class="html4strict"
-            style="font-family: monospace;"><ol><li class="li1"><div
-            class="de1"><span class="sc2">&lt;ez:actionSourceOuter&gt;</span></div></li>
-            <li class="li2"><div class="de2">&nbsp; <span
-            class="sc2">&lt;f:actionListener <span class="kw3">for</span>=<span
-            class="st0">&quot;button1&quot;</span> /<span
-            class="kw2">&gt;</span></span></div></li>
-            <li class="li1"><div class="de1"><span class="sc2"><span
-            class="kw2">&lt;</span>/ez:actionSourceOuter&gt;</span>
-            </div></li></ol></div></div>
-
-            <p>actionSourceOuter.xhtml: Outer composite component</p>
-
-            <div class="syntax"><div class="html4strict"
-            style="font-family: monospace;"><ol><li class="li1"><div
-            class="de1"><span class="sc2">&lt;composite:interface&gt;</span></div></li>
-            <li class="li2"><div class="de2">&nbsp; <span
-            class="sc2">&lt;composite:actionSource <span class="kw3">name</span>=<span
-            class="st0">&quot;button1&quot;</span> /<span
-            class="kw2">&gt;</span></span></div></li>
-            <li class="li1"><div class="de1"><span class="sc2"><span
-            class="kw2">&lt;</span>/composite:interface&gt;</span></div></li>
-            <li class="li2"><div class="de2">&nbsp;</div></li>
-            <li class="li1"><div class="de1"><span class="sc2">&lt;composite:implementation&gt;</span></div></li>
-            <li class="li2"><div class="de2">&nbsp; <span
-            class="sc2">&lt;ez:actionSourceInner /<span class="kw2">&gt;</span></span></div></li>
-            <li class="li1"><div class="de1"><span class="sc2"><span
-            class="kw2">&lt;</span>/composite:implementation&gt;</span>
-            </div></li></ol></div></div>
-
-            <p>actionSourceInner.xhtml: the composite component used
+            component.</p>
+
+            <p>For example, consider this nested composite component.</p>
+
+            <p>Using page</p>
+
+            <div class="syntax"><div class="html4strict"
+            style="font-family: monospace;"><ol><li class="li1"><div
+            class="de1"><span class="sc2">&lt;ez:actionSourceOuter&gt;</span></div></li>
+            <li class="li2"><div class="de2">&nbsp; <span
+            class="sc2">&lt;f:actionListener <span class="kw3">for</span>=<span
+            class="st0">&quot;button1&quot;</span> /<span
+            class="kw2">&gt;</span></span></div></li>
+            <li class="li1"><div class="de1"><span class="sc2"><span
+            class="kw2">&lt;</span>/ez:actionSourceOuter&gt;</span>
+            </div></li></ol></div></div>
+
+            <p>actionSourceOuter.xhtml: Outer composite component</p>
+
+            <div class="syntax"><div class="html4strict"
+            style="font-family: monospace;"><ol><li class="li1"><div
+            class="de1"><span class="sc2">&lt;composite:interface&gt;</span></div></li>
+            <li class="li2"><div class="de2">&nbsp; <span
+            class="sc2">&lt;composite:actionSource <span class="kw3">name</span>=<span
+            class="st0">&quot;button1&quot;</span> /<span
+            class="kw2">&gt;</span></span></div></li>
+            <li class="li1"><div class="de1"><span class="sc2"><span
+            class="kw2">&lt;</span>/composite:interface&gt;</span></div></li>
+            <li class="li2"><div class="de2">&nbsp;</div></li>
+            <li class="li1"><div class="de1"><span class="sc2">&lt;composite:implementation&gt;</span></div></li>
+            <li class="li2"><div class="de2">&nbsp; <span
+            class="sc2">&lt;ez:actionSourceInner /<span class="kw2">&gt;</span></span></div></li>
+            <li class="li1"><div class="de1"><span class="sc2"><span
+            class="kw2">&lt;</span>/composite:implementation&gt;</span>
+            </div></li></ol></div></div>
+
+            <p>actionSourceInner.xhtml: the composite component used
             within a
-            composite component.</p>
-
-            <div class="syntax"><div class="html4strict"
-            style="font-family: monospace;"><ol><li class="li1"><div
-            class="de1"><span class="sc2">&lt;composite:interface&gt;</span></div></li>
-            <li class="li2"><div class="de2">&nbsp; <span
-            class="sc2">&lt;composite:actionSource <span class="kw3">name</span>=<span
-            class="st0">&quot;button1&quot;</span> /<span
-            class="kw2">&gt;</span></span></div></li>
-            <li class="li1"><div class="de1"><span class="sc2"><span
-            class="kw2">&lt;</span>/composite:interface&gt;</span></div></li>
-            <li class="li2"><div class="de2">&nbsp;</div></li>
-            <li class="li1"><div class="de1"><span class="sc2">&lt;composite:implementation&gt;</span></div></li>
-            <li class="li2"><div class="de2">&nbsp; <span
-            class="sc2">&lt;h:commandButton <span class="kw3">id</span>=<span
-            class="st0">&quot;button1&quot;</span> <span
-            class="kw3">value</span>=<span class="st0">&quot;the
-            real button&quot;</span> /<span class="kw2">&gt;</span></span></div></li>
-            <li class="li1"><div class="de1"><span class="sc2"><span
-            class="kw2">&lt;</span>/composite:implementation&gt;</span>
-            </div></li></ol></div></div>
-
-            <p>The <code>id</code> of the <code>&lt;h:commandButton&gt;</code>
+            composite component.</p>
+
+            <div class="syntax"><div class="html4strict"
+            style="font-family: monospace;"><ol><li class="li1"><div
+            class="de1"><span class="sc2">&lt;composite:interface&gt;</span></div></li>
+            <li class="li2"><div class="de2">&nbsp; <span
+            class="sc2">&lt;composite:actionSource <span class="kw3">name</span>=<span
+            class="st0">&quot;button1&quot;</span> /<span
+            class="kw2">&gt;</span></span></div></li>
+            <li class="li1"><div class="de1"><span class="sc2"><span
+            class="kw2">&lt;</span>/composite:interface&gt;</span></div></li>
+            <li class="li2"><div class="de2">&nbsp;</div></li>
+            <li class="li1"><div class="de1"><span class="sc2">&lt;composite:implementation&gt;</span></div></li>
+            <li class="li2"><div class="de2">&nbsp; <span
+            class="sc2">&lt;h:commandButton <span class="kw3">id</span>=<span
+            class="st0">&quot;button1&quot;</span> <span
+            class="kw3">value</span>=<span class="st0">&quot;the
+            real button&quot;</span> /<span class="kw2">&gt;</span></span></div></li>
+            <li class="li1"><div class="de1"><span class="sc2"><span
+            class="kw2">&lt;</span>/composite:implementation&gt;</span>
+            </div></li></ol></div></div>
+
+            <p>The <code>id</code> of the <code>&lt;h:commandButton&gt;</code>
             on
-            line 6 of actionSourceInner.xhtml must match the <code>name</code>
+            line 6 of actionSourceInner.xhtml must match the <code>name</code>
             on
             line 2 of that file (this is a standard requirement for all
             composite
-            components, nested or not). That <code>id</code> must
+            components, nested or not). That <code>id</code> must
             also match the
-            <code>name</code> on line 2 of actionSourceOuter.xhtml,
+            <code>name</code> on line 2 of actionSourceOuter.xhtml,
             and the
-            <code>for</code> on line 2 of the using page.</p>
+            <code>for</code> on line 2 of the using page.</p>
 
-            <p>The implementation must support any level of nesting as
+            <p>The implementation must support any level of nesting as
             long as the
-            <code>for</code>, <code>name</code>, and
-            <code>id</code> values match
-            up. Furthermore, the <code>targets</code> attribute is
+            <code>for</code>, <code>name</code>, and
+            <code>id</code> values match
+            up. Furthermore, the <code>targets</code> attribute is
             also valid for
-            use in this nested fashion.</p>
+            use in this nested fashion.</p>
 
-            <p><b>Naming containers within composite components</b></p>
+            <p><b>Naming containers within composite components</b></p>
 
-            <p>Composite components are themselves naming containers so
+            <p>Composite components are themselves naming containers so
             that any
             possible id conflicts between inner components and components in the
             using page are avoided. However, special care must be taken when
             using
-            naming containers in the <code>&lt;composite:implementation&gt;</code>
+            naming containers in the <code>&lt;composite:implementation&gt;</code>
             section. In such cases the value of the &#8220;name&#8221;
             attribute,
             or the values of the &#8220;targets&#8221; attribute must be
             used with a
-            clientId relative to the <em>top level component</em> to
+            clientId relative to the <em>top level component</em> to
             expose any
-            attached object targets to the using page. For example:</p>
-
-            <p>Using page</p>
-
-            <div class="syntax"><div class="html4strict"
-            style="font-family: monospace;"><ol><li class="li1"><div
-            class="de1"><span class="sc2">&lt;ez:loginButton&gt;</span></div></li>
-            <li class="li2"><div class="de2">&nbsp; <span
-            class="sc2">&lt;f:actionListener <span class="kw3">for</span>=<span
-            class="st0">&quot;button&quot;</span> <span
-            class="kw3">binding</span>=<span class="st0">&quot;#{foo.actionListener}&quot;</span>
-            /<span class="kw2">&gt;</span></span></div></li>
-            <li class="li1"><div class="de1"><span class="sc2"><span
-            class="kw2">&lt;</span>/ez:loginButton&gt;</span>
-            </div></li></ol></div></div>
-
-
-            <p>loginButton.xhtml</p>
-
-            <div class="syntax"><div class="html4strict"
-            style="font-family: monospace;"><ol><li class="li1"><div
-            class="de1"><span class="sc2">&lt;composite:interface&gt;</span></div></li>
-            <li class="li2"><div class="de2">&nbsp; <span
-            class="sc2">&lt;composite:actionSource <span class="kw3">name</span>=<span
-            class="st0">&quot;button&quot;</span> targets=<span
-            class="st0">&quot;form:button&quot;</span> /<span
-            class="kw2">&gt;</span></span></div></li>
-            <li class="li1"><div class="de1"><span class="sc2"><span
-            class="kw2">&lt;</span>/composite:interface&gt;</span></div></li>
-            <li class="li2"><div class="de2">&nbsp;</div></li>
-            <li class="li1"><div class="de1"><span class="sc2">&lt;composite:implementation&gt;</span></div></li>
-            <li class="li2"><div class="de2">&nbsp;</div></li>
-            <li class="li1"><div class="de1">&nbsp; <span
-            class="sc2">&lt;h:form <span class="kw3">id</span>=<span
-            class="st0">&quot;form&quot;</span><span
-            class="kw2">&gt;</span></span></div></li>
-            <li class="li2"><div class="de2">&nbsp; &nbsp;
-            <span class="sc2">&lt;h:commandButton <span class="kw3">id</span>=<span
-            class="st0">&quot;button&quot;</span> <span
-            class="kw3">value</span>=<span class="st0">&quot;Submit&quot;</span>
-            /<span class="kw2">&gt;</span></span></div></li>
-            <li class="li1"><div class="de1">&nbsp; <span
-            class="sc2"><span class="kw2">&lt;</span>/h:form&gt;</span></div></li>
-            <li class="li2"><div class="de2"><span class="sc2"><span
-            class="kw2">&lt;</span>/composite:implementation&gt;</span>
-            </div></li></ol></div></div>
-
-            <p>Because the button on line 8 resides within a form, it must
+            attached object targets to the using page. For example:</p>
+
+            <p>Using page</p>
+
+            <div class="syntax"><div class="html4strict"
+            style="font-family: monospace;"><ol><li class="li1"><div
+            class="de1"><span class="sc2">&lt;ez:loginButton&gt;</span></div></li>
+            <li class="li2"><div class="de2">&nbsp; <span
+            class="sc2">&lt;f:actionListener <span class="kw3">for</span>=<span
+            class="st0">&quot;button&quot;</span> <span
+            class="kw3">binding</span>=<span class="st0">&quot;#{foo.actionListener}&quot;</span>
+            /<span class="kw2">&gt;</span></span></div></li>
+            <li class="li1"><div class="de1"><span class="sc2"><span
+            class="kw2">&lt;</span>/ez:loginButton&gt;</span>
+            </div></li></ol></div></div>
+
+
+            <p>loginButton.xhtml</p>
+
+            <div class="syntax"><div class="html4strict"
+            style="font-family: monospace;"><ol><li class="li1"><div
+            class="de1"><span class="sc2">&lt;composite:interface&gt;</span></div></li>
+            <li class="li2"><div class="de2">&nbsp; <span
+            class="sc2">&lt;composite:actionSource <span class="kw3">name</span>=<span
+            class="st0">&quot;button&quot;</span> targets=<span
+            class="st0">&quot;form:button&quot;</span> /<span
+            class="kw2">&gt;</span></span></div></li>
+            <li class="li1"><div class="de1"><span class="sc2"><span
+            class="kw2">&lt;</span>/composite:interface&gt;</span></div></li>
+            <li class="li2"><div class="de2">&nbsp;</div></li>
+            <li class="li1"><div class="de1"><span class="sc2">&lt;composite:implementation&gt;</span></div></li>
+            <li class="li2"><div class="de2">&nbsp;</div></li>
+            <li class="li1"><div class="de1">&nbsp; <span
+            class="sc2">&lt;h:form <span class="kw3">id</span>=<span
+            class="st0">&quot;form&quot;</span><span
+            class="kw2">&gt;</span></span></div></li>
+            <li class="li2"><div class="de2">&nbsp; &nbsp;
+            <span class="sc2">&lt;h:commandButton <span class="kw3">id</span>=<span
+            class="st0">&quot;button&quot;</span> <span
+            class="kw3">value</span>=<span class="st0">&quot;Submit&quot;</span>
+            /<span class="kw2">&gt;</span></span></div></li>
+            <li class="li1"><div class="de1">&nbsp; <span
+            class="sc2"><span class="kw2">&lt;</span>/h:form&gt;</span></div></li>
+            <li class="li2"><div class="de2"><span class="sc2"><span
+            class="kw2">&lt;</span>/composite:implementation&gt;</span>
+            </div></li></ol></div></div>
+
+            <p>Because the button on line 8 resides within a form, it must
             be
-            referred to using a client id, relative to the <em>top level
-            component</em>, in the "targets" attribute on line 2. Using a
+            referred to using a client id, relative to the <em>top level
+            component</em>, in the "targets" attribute on line 2. Using a
             relative
             clientId is required due to the semantics of
-            <code>UIComponent.findComponent()</code>.</p>
+            <code>UIComponent.findComponent()</code>.</p>
 
-            </div>
+            </div>
 
-        </description>
+        ]]></description>
         <tag-name>interface</tag-name>
         <handler-class>com.sun.faces.facelets.tag.composite.InterfaceHandler</handler-class>
         <attribute>
-            <description>
+            <description><![CDATA[
 
 
-                <div class="changed_added_2_0">
-                <p>The name of this composite component.
+                <div class="changed_added_2_0">
+                <p>The name of this composite component.
                 Advisory only. The real name is taken from the
                 filename. The value of this attribute will be set as
-                the value for this property on the <em>composite
-                component bean descriptor</em>.</p></div>
+                the value for this property on the <em>composite
+                component bean descriptor</em>.</p></div>
 
-            </description>
+            ]]></description>
             <name>name</name>
             <required>false</required>
             <type>java.lang.String</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
 
 
-                <div class="changed_added_2_0">
-                <p>The <code>component-type</code> of the <code>UIComponent</code>
+                <div class="changed_added_2_0">
+                <p>The <code>component-type</code> of the <code>UIComponent</code>
                 that
-                will serve as the <em>composite component root</em>
+                will serve as the <em>composite component root</em>
                 for this composite
-                component. The declared <code>component-family</code>
+                component. The declared <code>component-family</code>
                 for this
-                component must be <code>javax.faces.NamingContainer</code>.</p></div>
+                component must be <code>javax.faces.NamingContainer</code>.</p></div>
 
-            </description>
+            ]]></description>
             <name>componentType</name>
             <required>false</required>
             <type>java.lang.String</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
 
 
-                <div class="changed_added_2_0">
-                <p>The name to display in a tool palette
+                <div class="changed_added_2_0">
+                <p>The name to display in a tool palette
                 containing this component. The value of this attribute will be
                 set as
-                the value for this property on the <em>composite
-                component bean descriptor</em>.</p></div>
+                the value for this property on the <em>composite
+                component bean descriptor</em>.</p></div>
 
-            </description>
+            ]]></description>
             <name>displayName</name>
             <required>false</required>
             <type>java.lang.String</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
 
 
-                <div class="changed_added_2_0">
-                <p>Is this a "preferred" component. The value
+                <div class="changed_added_2_0">
+                <p>Is this a "preferred" component. The value
                 of this attribute will be set as the value for this
-                property on the <em>composite component bean
-                descriptor</em>.</p></div>
+                property on the <em>composite component bean
+                descriptor</em>.</p></div>
 
-            </description>
+            ]]></description>
             <name>preferred</name>
             <required>false</required>
             <type>boolean</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
 
 
-                <div class="changed_added_2_0">
-                <p>Is this component only for expert users?
+                <div class="changed_added_2_0">
+                <p>Is this component only for expert users?
                 The value of this attribute will be set as the value for
-                this property on the <em>composite component bean
-                descriptor</em>.</p></div>
+                this property on the <em>composite component bean
+                descriptor</em>.</p></div>
 
-            </description>
+            ]]></description>
             <name>expert</name>
             <required>false</required>
             <type>boolean</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
 
 
-                <div class="changed_added_2_0">
-                <p>A short description of the purpose of this
+                <div class="changed_added_2_0">
+                <p>A short description of the purpose of this
                 component. The value of this attribute will be set as
-                the value for this property on the <em>composite
-                component bean descriptor</em>.</p></div>
+                the value for this property on the <em>composite
+                component bean descriptor</em>.</p></div>
 
-            </description>
+            ]]></description>
             <name>shortDescription</name>
             <required>false</required>
             <type>java.lang.String</type>
         </attribute>
     </tag>
     <tag>
-        <description>
+        <description><![CDATA[
 
-            <div class="changed_added_2_0">
-            <p>Defines the implementation of the composite
+            <div class="changed_added_2_0">
+            <p>Defines the implementation of the composite
             component. There must be zero or one of these in a
             composite component markup file. If a
-            <code>&lt;composite:interface&gt;</code> element
+            <code>&lt;composite:interface&gt;</code> element
             appears,
             there must be a corresponding
-            <code>&lt;composite-implementation&gt;</code>
+            <code>&lt;composite-implementation&gt;</code>
             element. If no
-            <code>&lt;composite:interface&gt;</code> element
+            <code>&lt;composite:interface&gt;</code> element
             appears,
-            the <code>&lt;composite-implementation&gt;</code>
+            the <code>&lt;composite-implementation&gt;</code>
             element is
-            optional. </p> </div>
-        </description>
+            optional. </p> </div>
+        ]]></description>
         <tag-name>implementation</tag-name>
         <handler-class>com.sun.faces.facelets.tag.composite.ImplementationHandler</handler-class>
     </tag>
     <tag>
-        <description>
+        <description><![CDATA[
 
 
-            <div class="changed_added_2_0">
-            <p>Declares an attribute that may be given to an instance of
+            <div class="changed_added_2_0">
+            <p>Declares an attribute that may be given to an instance of
             the
-            <em>composite component</em> tag for this composite
+            <em>composite component</em> tag for this composite
             component. There
             may be zero or many of these inside of the
-            <code>&lt;composite:interface</code>&gt;
+            <code>&lt;composite:interface</code>&gt;
             section. This element may be
-            nested within other <code>&lt;composite:attribute&gt;</code>
+            nested within other <code>&lt;composite:attribute&gt;</code>
             elements to
-            convey a usage contract that includes nested properties.</p>
+            convey a usage contract that includes nested properties.</p>
 
-            <p>Please see <a href="tld-summary.html#composite_example">summary
-            page</a> for a usage example.</p>
+            <p>Please see <a href="tld-summary.html#composite_example">summary
+            page</a> for a usage example.</p>
 
-            <p>The <em>top level component</em> in which this
+            <p>The <em>top level component</em> in which this
             element is
-            ultimately nested must be a <code>NamingContainer</code>.
+            ultimately nested must be a <code>NamingContainer</code>.
             There are certain component properties that must not be
             exposed using this element. The motivation for this
             restriction is that the mapping of markup attributes to
             component properties/attributes does not allow for these
             attributes to be set. The following properties must not be
-            exposed using this element.</p>
-
-            <ul>
-            <li><p>binding</p></li>
-            <li><p>id</p></li>
-            <li><p>inView</p></li>
-            <li><p>parent</p></li>
-            <li><p>rendered</p></li>
-            <li><p>rendererType</p></li>
-            <li><p>transient</p></li>
-            </ul>
-
-            </div>
-        </description>
+            exposed using this element.</p>
+
+            <ul>
+            <li><p>binding</p></li>
+            <li><p>id</p></li>
+            <li><p>inView</p></li>
+            <li><p>parent</p></li>
+            <li><p>rendered</p></li>
+            <li><p>rendererType</p></li>
+            <li><p>transient</p></li>
+            </ul>
+
+            </div>
+        ]]></description>
         <tag-name>attribute</tag-name>
         <handler-class>com.sun.faces.facelets.tag.composite.AttributeHandler</handler-class>
         <attribute>
-            <description>
+            <description><![CDATA[
 
 
-                <div class="changed_added_2_0">
-                <p>The name of the attribute as it must appear on the <em>composite
-                component tag</em> in the <em>using page</em>.
+                <div class="changed_added_2_0">
+                <p>The name of the attribute as it must appear on the <em>composite
+                component tag</em> in the <em>using page</em>.
                 If the value of the
-                <em>name</em> attribute is equal to (without the
+                <em>name</em> attribute is equal to (without the
                 quotes)
                 &#8220;action&#8221;, &#8221;actionListener&#8221;,
                 &#8220;validator&#8221;, or &#8220;valueChangeListener&#8221;,
                 the
-                action described in <a target="_"
-                href="../../../javadocs/javax/faces/application/ViewHandler.html#retargetMethodExpressions(javax.faces.context.FacesContext,%20javax.faces.component.UIComponent)">ViewHandler.retargetMethodExpressions()</a>
+                action described in <a target="_"
+                href="../../../javadocs/javax/faces/application/ViewHandler.html#retargetMethodExpressions(javax.faces.context.FacesContext,%20javax.faces.component.UIComponent)">ViewHandler.retargetMethodExpressions()</a>
                 must be taken to handle the attribute. In these cases, the
-                <code>method-signature</code> attribute, if present,
+                <code>method-signature</code> attribute, if present,
                 must be ignored as
                 its value is derived as described in
-                <code>retargetMethodExpressions()</code>.</div>
+                <code>retargetMethodExpressions()</code>.</div>
 
-            </description>
+            ]]></description>
             <name>name</name>
             <required>true</required>
             <type>java.lang.String</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
 
 
-                <div class="changed_added_2_0">
+                <div class="changed_added_2_0">
 
-                <p>If this element has a <code>method-signature</code>
+                <p>If this element has a <code>method-signature</code>
                 attribute, the
-                value of the <code>targets</code> attribute must be
+                value of the <code>targets</code> attribute must be
                 interpreted as a
                 space (not tab) separated list of client ids (relative to the
-                <em>top
-                level component</em>) of components within the
-                <code>&lt;composite:implementation&gt;</code>
+                <em>top
+                level component</em>) of components within the
+                <code>&lt;composite:implementation&gt;</code>
                 section. Space is used as
                 the delimiter for compatibility with the IDREFS and NMTOKENS
                 data types
                 from the XML Schema. Each entry in the list must be interpreted
                 as the
-                id of an inner component to which the <code>MethodExpression</code>
+                id of an inner component to which the <code>MethodExpression</code>
                 from
-                the <em>composite component tag</em> in the <em>using
-                page</em> must be
-                applied. If this element has a <code>method-signature</code>
+                the <em>composite component tag</em> in the <em>using
+                page</em> must be
+                applied. If this element has a <code>method-signature</code>
                 attribute,
-                but no <code>targets</code> attribute, the value of
+                but no <code>targets</code> attribute, the value of
                 the
-                <code>name</code> attribute is used as the single
+                <code>name</code> attribute is used as the single
                 entry in the list. If
-                the value of the <code>name</code> attribute is <strong>not</strong>
+                the value of the <code>name</code> attribute is <strong>not</strong>
                 one
-                of the special values listed in the description of the <code>name
-                attribute</code>, <code>targets</code> (or its
+                of the special values listed in the description of the <code>name
+                attribute</code>, <code>targets</code> (or its
                 derived value) need not
-                correspond to the id of an inner component.</p>
+                correspond to the id of an inner component.</p>
 
-                </div>
+                </div>
 
-            </description>
+            ]]></description>
             <name>targets</name>
             <required>false</required>
             <type>java.lang.String</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
 
 
-                <div class="changed_added_2_0">
-                <p>If this attribute is not required, and a
+                <div class="changed_added_2_0">
+                <p>If this attribute is not required, and a
                 value is not supplied by the page author, use this as
-                the default value.</p></div>
+                the default value.</p></div>
 
-            </description>
+            ]]></description>
             <name>default</name>
             <required>false</required>
             <type>java.lang.String</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
 
 
-                <div class="changed_added_2_0">
-                <p>The name to display in a tool palette
+                <div class="changed_added_2_0">
+                <p>The name to display in a tool palette
                 containing this component. The value of this attribute will be
                 set as
-                the value for this property on the <em>composite
-                component bean descriptor</em>.</p></div>
+                the value for this property on the <em>composite
+                component bean descriptor</em>.</p></div>
 
-            </description>
+            ]]></description>
             <name>displayName</name>
             <required>false</required>
             <type>java.lang.String</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
 
 
-                <div class="changed_added_2_0">
-                <p>True if the page author must supply a value
-                for this attribute.</p></div>
+                <div class="changed_added_2_0">
+                <p>True if the page author must supply a value
+                for this attribute.</p></div>
 
-            </description>
+            ]]></description>
             <name>required</name>
             <required>false</required>
             <type>boolean</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
 
 
-                <div class="changed_added_2_0">
-                <p>Is this a "preferred" component. The value
+                <div class="changed_added_2_0">
+                <p>Is this a "preferred" component. The value
                 of this attribute will be set as the value for this
-                property on the <em>composite component bean
-                descriptor</em>.</p></div>
+                property on the <em>composite component bean
+                descriptor</em>.</p></div>
 
-            </description>
+            ]]></description>
             <name>preferred</name>
             <required>false</required>
             <type>boolean</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
 
 
-                <div class="changed_added_2_0">
-                <p>Is this component only for expert users?
+                <div class="changed_added_2_0">
+                <p>Is this component only for expert users?
                 The value of this attribute will be set as the value for
-                this property on the <em>composite component bean
-                descriptor</em>.</p></div>
+                this property on the <em>composite component bean
+                descriptor</em>.</p></div>
 
-            </description>
+            ]]></description>
             <name>expert</name>
             <required>false</required>
             <type>boolean</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
 
 
-                <div class="changed_added_2_0">
-                <p>A short description of the purpose of this
+                <div class="changed_added_2_0">
+                <p>A short description of the purpose of this
                 component. The value of this attribute will be set as
-                the value for this property on the <em>composite
-                component bean descriptor</em>.</p></div>
+                the value for this property on the <em>composite
+                component bean descriptor</em>.</p></div>
 
-            </description>
+            ]]></description>
             <name>shortDescription</name>
             <required>false</required>
             <type>java.lang.String</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
 
 
-                <div class="changed_added_2_0">
-                <p>Declares that this attribute must be a <code>MethodExpression</code>
+                <div class="changed_added_2_0">
+                <p>Declares that this attribute must be a <code>MethodExpression</code>
                 whose method signature is described by the value of this
                 attribute. The
                 signature must be described using fully qualified class names
@@ -975,736 +986,814 @@
                 "type"
                 attribute. If both attributes are present, the
                 "method-signature"
-                attribute is ignored.</p>
+                attribute is ignored.</p>
 
-                <p>PENDING: when this file is generated from the
+                <p>PENDING: when this file is generated from the
                 web-facesuicomponent_2_0.xsd, we will not need to copy the
                 content here
-                manually.</p>
+                manually.</p>
 
-                <p>Provides the signature of the Java method. The syntax
+                <p>Provides the signature of the Java method. The syntax
                 of
                 the method-signature element is as follows (taken from
-                function-signature in web-jsptaglibrary_2_1.xsd):</p>
+                function-signature in web-jsptaglibrary_2_1.xsd):</p>
 
-                <p>MethodSignature ::= ReturnType S MethodName S?
-                '(' S? Parameters? S? ')'</p>
+                <p>MethodSignature ::= ReturnType S MethodName S?
+                '(' S? Parameters? S? ')'</p>
 
-                <p>ReturnType ::= Type</p>
+                <p>ReturnType ::= Type</p>
 
-                <p>MethodName ::= Identifier</p>
+                <p>MethodName ::= Identifier</p>
 
-                <p>Parameters ::= Parameter
-                | ( Parameter S? ',' S? Parameters )</p>
+                <p>Parameters ::= Parameter
+                | ( Parameter S? ',' S? Parameters )</p>
 
-                <p>Parameter ::= Type</p>
+                <p>Parameter ::= Type</p>
 
-                <p>Where:</p>
+                <p>Where:</p>
 
-                <ul>
+                <ul>
 
-                <li><p>Type is a basic type or a fully qualified
+                <li><p>Type is a basic type or a fully qualified
                 Java class name (including package name),
                 as per the 'Type' production in the Java
                 Language Specification, Second Edition,
-                Chapter 18.</p></li>
+                Chapter 18.</p></li>
 
-                <li><p>Identifier is a Java identifier, as per
+                <li><p>Identifier is a Java identifier, as per
                 the 'Identifier' production in the Java
                 Language Specification, Second
-                Edition, Chapter 18.</p></li>
+                Edition, Chapter 18.</p></li>
 
-                </ul>
+                </ul>
 
-                <p>Example:</p>
+                <p>Example:</p>
 
-                <p><code>java.lang.String nickName(
-                java.lang.String, int )</code></p>
+                <p><code>java.lang.String nickName(
+                java.lang.String, int )</code></p>
 
 
-                </div>
+                </div>
 
-            </description>
+            ]]></description>
             <name>method-signature</name>
             <required>false</required>
             <type>java.lang.String</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
 
 
-                <div class="changed_added_2_0">
-                <p>Declares that this attribute must be a <code>ValueExpression</code>
+                <div class="changed_added_2_0">
+                <p>Declares that this attribute must be a <code>ValueExpression</code>
                 whose expected type is given by the value of this attribute. If
                 not
                 specified, and no "method-signature" attribute is present,
-                <code>java.lang.Object</code> is assumed. This
+                <code>java.lang.Object</code> is assumed. This
                 attribute is mutually
                 exclusive with the "method-signature" attribute. If both attributes are
                 present, the
-                "method-signature" attribute is ignored. </p> </div>
+                "method-signature" attribute is ignored. </p> </div>
 
-            </description>
+            ]]></description>
             <name>type</name>
             <required>false</required>
             <type>java.lang.String</type>
         </attribute>
     </tag>
     <tag>
-        <description>
+        <description><![CDATA[
 
 
-            <div class="changed_added_2_0">
+            <div class="changed_added_2_0">
 
-            <p>Declares that this composite component supports a facet
+            <p>Declares that this composite component supports a facet
             with the
-            name given by the value of the "name" attribute. </p>
+            name given by the value of the "name" attribute. </p>
 
-            <p>Please see <code>&lt;<a
-            href="interface.html">composite:interface</a>&gt;</code>
+            <p>Please see <code>&lt;<a
+            href="interface.html">composite:interface</a>&gt;</code>
             for a usage
-            example.</p>
+            example.</p>
 
 
-            </div>
-        </description>
+            </div>
+        ]]></description>
         <tag-name>facet</tag-name>
         <handler-class>com.sun.faces.facelets.tag.composite.DeclareFacetHandler</handler-class>
         <attribute>
-            <description>
+            <description><![CDATA[
 
 
-                <div class="changed_added_2_0">
-                <p>The name of the attribute as it must appear
-                on the <em>composite component tag</em> in the
-                <em>using page</em>.</p></div>
+                <div class="changed_added_2_0">
+                <p>The name of the attribute as it must appear
+                on the <em>composite component tag</em> in the
+                <em>using page</em>.</p></div>
 
-            </description>
+            ]]></description>
             <name>name</name>
             <required>true</required>
             <type>java.lang.String</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
 
 
-                <div class="changed_added_2_0">
-                <p>The name to display in a tool palette
+                <div class="changed_added_2_0">
+                <p>The name to display in a tool palette
                 containing this component. The value of this attribute will be
                 set as
-                the value for this property on the <em>composite
-                component bean descriptor</em>.</p></div>
+                the value for this property on the <em>composite
+                component bean descriptor</em>.</p></div>
 
-            </description>
+            ]]></description>
             <name>displayName</name>
             <required>false</required>
             <type>java.lang.String</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
 
 
-                <div class="changed_added_2_0">
-                <p>True if the page author must supply a facet with this
-                name.</p></div>
+                <div class="changed_added_2_0">
+                <p>True if the page author must supply a facet with this
+                name.</p></div>
 
-            </description>
+            ]]></description>
             <name>required</name>
             <required>false</required>
             <type>boolean</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
 
 
-                <div class="changed_added_2_0">
-                <p>Is this a "preferred" facet. The value
+                <div class="changed_added_2_0">
+                <p>Is this a "preferred" facet. The value
                 of this attribute will be set as the value for this
-                property on the <em>composite component bean
-                descriptor</em>.</p></div>
+                property on the <em>composite component bean
+                descriptor</em>.</p></div>
 
-            </description>
+            ]]></description>
             <name>preferred</name>
             <required>false</required>
             <type>boolean</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
 
 
-                <div class="changed_added_2_0">
-                <p>Is this facet only for expert users?
+                <div class="changed_added_2_0">
+                <p>Is this facet only for expert users?
                 The value of this attribute will be set as the value for
-                this property on the <em>composite component bean
-                descriptor</em>.</p></div>
+                this property on the <em>composite component bean
+                descriptor</em>.</p></div>
 
-            </description>
+            ]]></description>
             <name>expert</name>
             <required>false</required>
             <type>boolean</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
 
 
-                <div class="changed_added_2_0">
-                <p>A short description of the purpose of this
+                <div class="changed_added_2_0">
+                <p>A short description of the purpose of this
                 facet. The value of this attribute will be set as
-                the value for this property on the <em>composite
-                component bean descriptor</em>.</p></div>
+                the value for this property on the <em>composite
+                component bean descriptor</em>.</p></div>
 
-            </description>
+            ]]></description>
             <name>shortDescription</name>
             <required>false</required>
             <type>java.lang.String</type>
         </attribute>
     </tag>
     <tag>
-        <description>
+        <description><![CDATA[
 
 
-            <div class="changed_added_2_0">
+            <div class="changed_added_2_0">
 
-            <p>This element is used in the
-            <code>&lt;composite:implementation&gt;</code>
+            <p>This element is used in the
+            <code>&lt;composite:implementation&gt;</code>
             section. The facet with
             the name equal to the value of the name attribute, given by the page
             author in the using page, will be rendered at this point in the
-            composite component VDL view. </p>
+            composite component VDL view. </p>
 
 
-            <p>The implementation of this tag handler must insert a
-            component with <code>component-type</code>
-            <code>javax.faces.Output</code> and <code>renderer-type</code>
-            <code>javax.faces.CompositeFacet</code> as a
-            child at this point in the component tree.</p>
+            <p>The implementation of this tag handler must insert a
+            component with <code>component-type</code>
+            <code>javax.faces.Output</code> and <code>renderer-type</code>
+            <code>javax.faces.CompositeFacet</code> as a
+            child at this point in the component tree.</p>
 
-            <p>The implementation of this tag handler must store an
+            <p>The implementation of this tag handler must store an
             attribute into
             the created component's attribute map under the key given by the
             value
-            of the symbolic constant <code>UIComponent.FACETS_KEY</code>.
+            of the symbolic constant <code>UIComponent.FACETS_KEY</code>.
             The value
-            for this key must be the evaluated value of the "name" attribute.</p>
+            for this key must be the evaluated value of the "name" attribute.</p>
 
-            </div>
-        </description>
+            </div>
+        ]]></description>
         <tag-name>renderFacet</tag-name>
         <handler-class>com.sun.faces.facelets.tag.composite.RenderFacetHandler</handler-class>
         <attribute>
-            <description>
+            <description><![CDATA[
 
 
-                <div class="changed_added_2_0">
-                <p>The value of the name attribute as it must appear on an
-                <code>&lt;f:facet&gt;</code> tag nested
-                within the <em>composite
-                component tag</em> in the <em>using page</em>.</p></div>
+                <div class="changed_added_2_0">
+                <p>The value of the name attribute as it must appear on an
+                <code>&lt;f:facet&gt;</code> tag nested
+                within the <em>composite
+                component tag</em> in the <em>using page</em>.</p></div>
 
-            </description>
+            ]]></description>
             <name>name</name>
             <required>true</required>
             <type>java.lang.String</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
 
-                <div class="changed_added_2_0">
+                <div class="changed_added_2_0">
 
-                <p>If <code>true</code>, and there is no such
+                <p>If <code>true</code>, and there is no such
                 facet present on the top
-                level component, a <code>TagException</code> must be
+                level component, a <code>TagException</code> must be
                 thrown, containing
-                the <code>Location</code>, the facet name, and a
+                the <code>Location</code>, the facet name, and a
                 localized descriptive
-                error message.</p>
+                error message.</p>
 
-                </div>
+                </div>
 
-            </description>
+            ]]></description>
             <name>required</name>
             <required>false</required>
             <type>boolean</type>
         </attribute>
     </tag>
     <tag>
-        <description>
+        <description><![CDATA[
 
 
-            <div class="changed_added_2_0">
+            <div class="changed_added_2_0">
 
-            <p>This element is used in the
-            <code>&lt;composite:implementation&gt;</code>
+            <p>This element is used in the
+            <code>&lt;composite:implementation&gt;</code>
             section. Any child
             components or template text within the composite component tag in
             the
             using page will be re-parented into the composite component at the
             point
             indicated by this tag's placement within the
-            <code>&lt;composite:implementation&gt;</code>
+            <code>&lt;composite:implementation&gt;</code>
             section. The normal
             use-case for this element is to have only one occurrence within the
-            <code>&lt;composite:implementation&gt;</code>
+            <code>&lt;composite:implementation&gt;</code>
             section. Inserting
             multiple occurrences may cause duplicate id errors. The results are
             undefined if there are multiple occurrences of this element in the
-            <code>&lt;composite:implementation&gt;</code>
-            section.</p>
+            <code>&lt;composite:implementation&gt;</code>
+            section.</p>
 
-            </div>
-        </description>
+            </div>
+        ]]></description>
         <tag-name>insertChildren</tag-name>
         <handler-class>com.sun.faces.facelets.tag.composite.InsertChildrenHandler</handler-class>
     </tag>
     <tag>
-        <description>
+        <description><![CDATA[
 
 
-            <div class="changed_added_2_0">
-            <p>Declares that the composite component whose
+            <div class="changed_added_2_0">
+            <p>Declares that the composite component whose
             contract is declared by the
-            <code>&lt;composite:interface&gt;</code> in
+            <code>&lt;composite:interface&gt;</code> in
             which this
             element is nested exposes an implementation of
-            <code>ValueHolder</code> suitable for use as the target
+            <code>ValueHolder</code> suitable for use as the target
             of
-            <em>attached objects</em> in <em>the using page</em>.
+            <em>attached objects</em> in <em>the using page</em>.
             Any attached objects suitable for implementations of
-            <code>ValueHolder</code> may be attached to the
+            <code>ValueHolder</code> may be attached to the
             composite
-            component. Consider this excerpt from <em>the using
-            page</em>:
-            </p>
-
-            <div class="syntax"><div class="html4strict"
-            style="font-family: monospace;"><ol><li class="li1"><div
-            class="de1"><span class="sc2">&lt;ez:foo&gt;</span></div></li>
-            <li class="li2"><div class="de2">&nbsp; <span
-            class="sc2">&lt;f:converter <span class="kw3">for</span>=<span
-            class="st0">&quot;userid&quot;</span> binding=<span
-            class="st0">&quot;#{bean.converter}&quot;</span> /<span
-            class="kw2">&gt;</span></span></div></li>
-            <li class="li1"><div class="de1"><span class="sc2"><span
-            class="kw2">&lt;</span>/ez:foo&gt;</span>
-            </div></li></ol></div></div>
-
-            <p>Line 2 refers to the
-            <code>&lt;composite:valueHolder&gt;</code>
+            component. Consider this excerpt from <em>the using
+            page</em>:
+            </p>
+
+            <div class="syntax"><div class="html4strict"
+            style="font-family: monospace;"><ol><li class="li1"><div
+            class="de1"><span class="sc2">&lt;ez:foo&gt;</span></div></li>
+            <li class="li2"><div class="de2">&nbsp; <span
+            class="sc2">&lt;f:converter <span class="kw3">for</span>=<span
+            class="st0">&quot;userid&quot;</span> binding=<span
+            class="st0">&quot;#{bean.converter}&quot;</span> /<span
+            class="kw2">&gt;</span></span></div></li>
+            <li class="li1"><div class="de1"><span class="sc2"><span
+            class="kw2">&lt;</span>/ez:foo&gt;</span>
+            </div></li></ol></div></div>
+
+            <p>Line 2 refers to the
+            <code>&lt;composite:valueHolder&gt;</code>
             declaration on
-            line 2 of <code>foo.xhtml</code>:</p>
-
-            <div class="syntax"><div class="html4strict"
-            style="font-family: monospace;"><ol><li class="li1"><div
-            class="de1"><span class="sc2">&lt;composite:interface&gt;</span></div></li>
-            <li class="li2"><div class="de2">&nbsp; <span
-            class="sc2">&lt;composite:valueHolder <span class="kw3">name</span>=<span
-            class="st0">&quot;userid&quot;</span> /<span
-            class="kw2">&gt;</span></span></div></li>
-            <li class="li1"><div class="de1"><span class="sc2"><span
-            class="kw2">&lt;</span>/composite:interface&gt;</span></div></li>
-            <li class="li2"><div class="de2">&nbsp;</div></li>
-            <li class="li1"><div class="de1"><span class="sc2">&lt;composite:implementation&gt;</span></div></li>
-            <li class="li2"><div class="de2">&nbsp; <span
-            class="sc2">&lt;h:inputText <span class="kw3">id</span>=<span
-            class="st0">&quot;userid&quot;</span> /<span
-            class="kw2">&gt;</span></span></div></li>
-            <li class="li1"><div class="de1"><span class="sc2"><span
-            class="kw2">&lt;</span>/composite:implementation&gt;</span>
-            </div></li></ol></div></div>
-
-            <p></p>
-
-            <p>It is possible to declare that a single
-            <code>&lt;composite:valueHolder&gt;</code>
+            line 2 of <code>foo.xhtml</code>:</p>
+
+            <div class="syntax"><div class="html4strict"
+            style="font-family: monospace;"><ol><li class="li1"><div
+            class="de1"><span class="sc2">&lt;composite:interface&gt;</span></div></li>
+            <li class="li2"><div class="de2">&nbsp; <span
+            class="sc2">&lt;composite:valueHolder <span class="kw3">name</span>=<span
+            class="st0">&quot;userid&quot;</span> /<span
+            class="kw2">&gt;</span></span></div></li>
+            <li class="li1"><div class="de1"><span class="sc2"><span
+            class="kw2">&lt;</span>/composite:interface&gt;</span></div></li>
+            <li class="li2"><div class="de2">&nbsp;</div></li>
+            <li class="li1"><div class="de1"><span class="sc2">&lt;composite:implementation&gt;</span></div></li>
+            <li class="li2"><div class="de2">&nbsp; <span
+            class="sc2">&lt;h:inputText <span class="kw3">id</span>=<span
+            class="st0">&quot;userid&quot;</span> /<span
+            class="kw2">&gt;</span></span></div></li>
+            <li class="li1"><div class="de1"><span class="sc2"><span
+            class="kw2">&lt;</span>/composite:implementation&gt;</span>
+            </div></li></ol></div></div>
+
+            <p></p>
+
+            <p>It is possible to declare that a single
+            <code>&lt;composite:valueHolder&gt;</code>
             element should cause multiple
-            components within the <code>&lt;composite:implementation&gt;</code>
-            section to be the targets of an <em>attached object</em>
+            components within the <code>&lt;composite:implementation&gt;</code>
+            section to be the targets of an <em>attached object</em>
             in the
-            using page. Assuming the same <em>using page</em>
+            using page. Assuming the same <em>using page</em>
             excerpt as
-            above, the revised <em>VDL view</em> is:</p>
-
-            <div class="syntax"><div class="html4strict"
-            style="font-family: monospace;"><ol><li class="li1"><div
-            class="de1"><span class="sc2">&lt;composite:interface&gt;</span></div></li>
-            <li class="li2"><div class="de2">&nbsp; <span
-            class="sc2">&lt;composite:valueHolder targets=<span
-            class="st0">&quot;userid,password&quot;</span> /<span
-            class="kw2">&gt;</span></span></div></li>
-            <li class="li1"><div class="de1"><span class="sc2"><span
-            class="kw2">&lt;</span>/composite:interface&gt;</span></div></li>
-            <li class="li2"><div class="de2">&nbsp;</div></li>
-            <li class="li1"><div class="de1"><span class="sc2">&lt;composite:implementation&gt;</span></div></li>
-            <li class="li2"><div class="de2">&nbsp; <span
-            class="sc2">&lt;h:inputText <span class="kw3">id</span>=<span
-            class="st0">&quot;userid&quot;</span> /<span
-            class="kw2">&gt;</span></span></div></li>
-            <li class="li1"><div class="de1">&nbsp; <span
-            class="sc2">&lt;h:inputText <span class="kw3">id</span>=<span
-            class="st0">&quot;password&quot;</span> /<span
-            class="kw2">&gt;</span></span></div></li>
-            <li class="li2"><div class="de2"><span class="sc2"><span
-            class="kw2">&lt;</span>/composite:implementation&gt;</span>
-            </div></li></ol></div></div>
-
-            <p>In this case, the "targets" attribute on the
-            <code>&lt;composite:valueHolder&gt;</code>
+            above, the revised <em>VDL view</em> is:</p>
+
+            <div class="syntax"><div class="html4strict"
+            style="font-family: monospace;"><ol><li class="li1"><div
+            class="de1"><span class="sc2">&lt;composite:interface&gt;</span></div></li>
+            <li class="li2"><div class="de2">&nbsp; <span
+            class="sc2">&lt;composite:valueHolder targets=<span
+            class="st0">&quot;userid,password&quot;</span> /<span
+            class="kw2">&gt;</span></span></div></li>
+            <li class="li1"><div class="de1"><span class="sc2"><span
+            class="kw2">&lt;</span>/composite:interface&gt;</span></div></li>
+            <li class="li2"><div class="de2">&nbsp;</div></li>
+            <li class="li1"><div class="de1"><span class="sc2">&lt;composite:implementation&gt;</span></div></li>
+            <li class="li2"><div class="de2">&nbsp; <span
+            class="sc2">&lt;h:inputText <span class="kw3">id</span>=<span
+            class="st0">&quot;userid&quot;</span> /<span
+            class="kw2">&gt;</span></span></div></li>
+            <li class="li1"><div class="de1">&nbsp; <span
+            class="sc2">&lt;h:inputText <span class="kw3">id</span>=<span
+            class="st0">&quot;password&quot;</span> /<span
+            class="kw2">&gt;</span></span></div></li>
+            <li class="li2"><div class="de2"><span class="sc2"><span
+            class="kw2">&lt;</span>/composite:implementation&gt;</span>
+            </div></li></ol></div></div>
+
+            <p>In this case, the "targets" attribute on the
+            <code>&lt;composite:valueHolder&gt;</code>
             element, on line 2 above,
             replaces the "name" attribute in the previous example. "targets" is
             a
-            list of ids of client ids (relative to the <em>top level
-            component</em>)
-            within the <code>&lt;composite:implementation&gt;</code>
+            list of ids of client ids (relative to the <em>top level
+            component</em>)
+            within the <code>&lt;composite:implementation&gt;</code>
             section. In
-            this case, "targets" refers to the <code>&lt;h:inputText&gt;</code>
-            components on lines 6 and 7 above.</p>
+            this case, "targets" refers to the <code>&lt;h:inputText&gt;</code>
+            components on lines 6 and 7 above.</p>
 
-            <p>Please see <code>&lt;<a
-            href="interface.html">composite:interface</a>&gt;</code>
+            <p>Please see <code>&lt;<a
+            href="interface.html">composite:interface</a>&gt;</code>
             for a usage
-            example.</p>
+            example.</p>
 
-            </div>
-        </description>
+            </div>
+        ]]></description>
         <tag-name>valueHolder</tag-name>
         <handler-class>com.sun.faces.facelets.tag.composite.ValueHolderAttachedObjectTargetHandler</handler-class>
         <attribute>
-            <description>
+            <description><![CDATA[
 
 
-                <div class="changed_added_2_0">
-                <p>
+                <div class="changed_added_2_0">
+                <p>
                 The value of this attribute maps back to the "for" attribute on
                 an attachable object
                 nested within a composite component. If the "targets" attribute
                 is not specified,
                 this value also represents the component ID of the target
                 component within the
-                that the <code>&lt;composite:implementation&gt;</code>
+                that the <code>&lt;composite:implementation&gt;</code>
                 ActionListener should be mapped to.
-                </p>
-                </div>
+                </p>
+                </div>
 
-            </description>
+            ]]></description>
             <name>name</name>
             <required>true</required>
             <type>java.lang.String</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
 
 
-                <div class="changed_added_2_0">
-                <p>If present, this must be a space (not tab) separated
+                <div class="changed_added_2_0">
+                <p>If present, this must be a space (not tab) separated
                 list of client
-                ids (relative to the <em>top level component</em>)
+                ids (relative to the <em>top level component</em>)
                 of components within
-                the <code>&lt;composite:implementation&gt;</code>
+                the <code>&lt;composite:implementation&gt;</code>
                 section. Space is
                 used as the delimiter for compatibility with the IDREFS and
                 NMTOKENS
-                data types from the XML Schema. </p></div>
+                data types from the XML Schema. </p></div>
 
-            </description>
+            ]]></description>
             <name>targets</name>
             <required>false</required>
             <type>java.lang.String</type>
         </attribute>
     </tag>
     <tag>
-        <description>
+        <description><![CDATA[
 
 
-            <div class="changed_added_2_0">
-            <p>Declares that the composite component whose
+            <div class="changed_added_2_0">
+            <p>Declares that the composite component whose
             contract is declared by the
-            <code>&lt;composite:interface&gt;</code> in
+            <code>&lt;composite:interface&gt;</code> in
             which this
             element is nested exposes an implementation of
-            <code>EditableValueHolder</code> suitable for use as the
-            target of <em>attached objects</em> in <em>the
+            <code>EditableValueHolder</code> suitable for use as the
+            target of <em>attached objects</em> in <em>the
             using
-            page</em>. Any attached objects suitable for
-            implementations of <code>EditableValueHolder</code> may
+            page</em>. Any attached objects suitable for
+            implementations of <code>EditableValueHolder</code> may
             be
-            attached to the composite component.The example from <a
-            href="valueHolder.html"><code>&lt;composite:valueHolder&gt;</code></a>
+            attached to the composite component.The example from <a
+            href="valueHolder.html"><code>&lt;composite:valueHolder&gt;</code></a>
             still applies.
-            </p>
+            </p>
 
-            <p>Please see <code>&lt;<a
-            href="interface.html">composite:interface</a>&gt;</code>
+            <p>Please see <code>&lt;<a
+            href="interface.html">composite:interface</a>&gt;</code>
             for a usage
-            example.</p>
+            example.</p>
 
-            </div>
-        </description>
+            </div>
+        ]]></description>
         <tag-name>editableValueHolder</tag-name>
         <handler-class>com.sun.faces.facelets.tag.composite.EditableValueHolderAttachedObjectTargetHandler</handler-class>
         <attribute>
-            <description>
+            <description><![CDATA[
 
 
-                <div class="changed_added_2_0">
-                <p>
+                <div class="changed_added_2_0">
+                <p>
                 The value of this attribute maps back to the "for" attribute on
                 an attachable object
                 nested within a composite component. If the "targets" attribute
                 is not specified,
                 this value also represents the component ID of the target
                 component within the
-                that the <code>&lt;composite:implementation&gt;</code>
+                that the <code>&lt;composite:implementation&gt;</code>
                 ActionListener should be mapped to.
-                </p>
-                </div>
+                </p>
+                </div>
 
-            </description>
+            ]]></description>
             <name>name</name>
             <required>true</required>
             <type>java.lang.String</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
 
 
-                <div class="changed_added_2_0">
-                <p>If present, this must be a space (not tab) separated
+                <div class="changed_added_2_0">
+                <p>If present, this must be a space (not tab) separated
                 list of client
-                ids (relative to the <em>top level component</em>)
+                ids (relative to the <em>top level component</em>)
                 of components within
-                the <code>&lt;composite:implementation&gt;</code>
+                the <code>&lt;composite:implementation&gt;</code>
                 section. Space is
                 used as the delimiter for compatibility with the IDREFS and
                 NMTOKENS
-                data types from the XML Schema.</p></div>
+                data types from the XML Schema.</p></div>
 
-            </description>
+            ]]></description>
             <name>targets</name>
             <required>false</required>
             <type>java.lang.String</type>
         </attribute>
     </tag>
     <tag>
-        <description>
+        <description><![CDATA[
 
 
-            <div class="changed_added_2_0">
-            <p>Declares that the composite component whose
+            <div class="changed_added_2_0">
+            <p>Declares that the composite component whose
             contract is declared by the
-            <code>&lt;composite:interface&gt;</code> in
+            <code>&lt;composite:interface&gt;</code> in
             which this
             element is nested exposes an implementation of
-            <code>ActionSource2</code> suitable for use as the
+            <code>ActionSource2</code> suitable for use as the
             target of
-            <em>attached objects</em> in <em>the using page</em>.
+            <em>attached objects</em> in <em>the using page</em>.
             Any attached objects suitable for implementations of
-            <code>ActionSource2</code> may be attached to the
+            <code>ActionSource2</code> may be attached to the
             composite
-            component. Consider this excerpt from <em>the using
-            page</em>:
-            </p>
-
-            <div class="syntax"><div class="html4strict"
-            style="font-family: monospace;"><ol><li class="li1"><div
-            class="de1"><span class="sc2">&lt;ez:loginPanel <span
-            class="kw3">id</span>=<span class="st0">&quot;loginPanel&quot;</span>
-            model=<span class="st0">&quot;#{bean}&quot;</span><span
-            class="kw2">&gt;</span></span></div></li>
-            <li class="li2"><div class="de2">&nbsp; <span
-            class="sc2">&lt;f:valueChangeListener <span class="kw3">for</span>=<span
-            class="st0">&quot;username&quot;</span></div></li>
-            <li class="li1"><div class="de1">&nbsp; &nbsp;
+            component. Consider this excerpt from <em>the using
+            page</em>:
+            </p>
+
+            <div class="syntax"><div class="html4strict"
+            style="font-family: monospace;"><ol><li class="li1"><div
+            class="de1"><span class="sc2">&lt;ez:loginPanel <span
+            class="kw3">id</span>=<span class="st0">&quot;loginPanel&quot;</span>
+            model=<span class="st0">&quot;#{bean}&quot;</span><span
+            class="kw2">&gt;</span></span></div></li>
+            <li class="li2"><div class="de2">&nbsp; <span
+            class="sc2">&lt;f:valueChangeListener <span class="kw3">for</span>=<span
+            class="st0">&quot;username&quot;</span></div></li>
+            <li class="li1"><div class="de1">&nbsp; &nbsp;
             &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
             &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp;
-            &nbsp; binding=<span class="st0">&quot;#{bean.useridValueChangeListener}&quot;</span>
-            /<span class="kw2">&gt;</span></span></div></li>
-            <li class="li2"><div class="de2">&nbsp; <span
-            class="sc2">&lt;f:actionListener <span class="kw3">for</span>=<span
-            class="st0">&quot;loginEvent&quot;</span> </div></li>
-            <li class="li1"><div class="de1">&nbsp; &nbsp;
+            &nbsp; binding=<span class="st0">&quot;#{bean.useridValueChangeListener}&quot;</span>
+            /<span class="kw2">&gt;</span></span></div></li>
+            <li class="li2"><div class="de2">&nbsp; <span
+            class="sc2">&lt;f:actionListener <span class="kw3">for</span>=<span
+            class="st0">&quot;loginEvent&quot;</span> </div></li>
+            <li class="li1"><div class="de1">&nbsp; &nbsp;
             &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
-            &nbsp; &nbsp; binding=<span class="st0">&quot;#{bean.loginEventListener}&quot;</span>
-            /<span class="kw2">&gt;</span></span></div></li>
-            <li class="li2"><div class="de2">&nbsp;</div></li>
-            <li class="li1"><div class="de1">&nbsp; <span
-            class="sc2">&lt;f:actionListener <span class="kw3">for</span>=<span
-            class="st0">&quot;cancelEvent&quot;</span> </div></li>
-            <li class="li2"><div class="de2">&nbsp; &nbsp;
+            &nbsp; &nbsp; binding=<span class="st0">&quot;#{bean.loginEventListener}&quot;</span>
+            /<span class="kw2">&gt;</span></span></div></li>
+            <li class="li2"><div class="de2">&nbsp;</div></li>
+            <li class="li1"><div class="de1">&nbsp; <span
+            class="sc2">&lt;f:actionListener <span class="kw3">for</span>=<span
+            class="st0">&quot;cancelEvent&quot;</span> </div></li>
+            <li class="li2"><div class="de2">&nbsp; &nbsp;
             &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
-            &nbsp; &nbsp; binding=<span class="st0">&quot;#{bean.cancelEventListener}&quot;</span>
-            /<span class="kw2">&gt;</span></span></div></li>
-            <li class="li1"><div class="de1">&nbsp;</div></li>
-            <li class="li2"><div class="de2">&nbsp; <span
-            class="sc2">&lt;f:actionListener <span class="kw3">for</span>=<span
-            class="st0">&quot;allEvents&quot;</span> </div></li>
-            <li class="li1"><div class="de1">&nbsp; &nbsp;
+            &nbsp; &nbsp; binding=<span class="st0">&quot;#{bean.cancelEventListener}&quot;</span>
+            /<span class="kw2">&gt;</span></span></div></li>
+            <li class="li1"><div class="de1">&nbsp;</div></li>
+            <li class="li2"><div class="de2">&nbsp; <span
+            class="sc2">&lt;f:actionListener <span class="kw3">for</span>=<span
+            class="st0">&quot;allEvents&quot;</span> </div></li>
+            <li class="li1"><div class="de1">&nbsp; &nbsp;
             &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
-            &nbsp; &nbsp; binding=<span class="st0">&quot;#{bean.allEventsListener}&quot;</span>
-            /<span class="kw2">&gt;</span></span></div></li>
-            <li class="li2"><div class="de2">&nbsp;</div></li>
-            <li class="li1"><div class="de1"><span class="sc2"><span
-            class="kw2">&lt;</span>/ez:loginPanel&gt;</span>
-            </div></li></ol></div></div>
-
-            <p>The <code>&lt;f:actionListener&gt;</code>
+            &nbsp; &nbsp; binding=<span class="st0">&quot;#{bean.allEventsListener}&quot;</span>
+            /<span class="kw2">&gt;</span></span></div></li>
+            <li class="li2"><div class="de2">&nbsp;</div></li>
+            <li class="li1"><div class="de1"><span class="sc2"><span
+            class="kw2">&lt;</span>/ez:loginPanel&gt;</span>
+            </div></li></ol></div></div>
+
+            <p>The <code>&lt;f:actionListener&gt;</code>
             elements on lines 4, 7, and 10
-            refer to the <em>attached objects</em> declared on lines
-            2, 3 and 4 below.</p>
-
-            <div class="syntax"><div class="html4strict"
-            style="font-family: monospace;"><ol><li class="li1"><div
-            class="de1"><span class="sc2">&lt;composite:interface
-            <span class="kw3">name</span>=<span class="st0">&quot;loginPanel&quot;</span><span
-            class="kw2">&gt;</span></span></div></li>
-            <li class="li2"><div class="de2">&nbsp; <span
-            class="sc2">&lt;composite:actionSource <span class="kw3">name</span>=<span
-            class="st0">&quot;loginEvent&quot;</span> /<span
-            class="kw2">&gt;</span></span></div></li>
-            <li class="li1"><div class="de1">&nbsp; <span
-            class="sc2">&lt;composite:actionSource <span class="kw3">name</span>=<span
-            class="st0">&quot;cancelEvent&quot;</span> /<span
-            class="kw2">&gt;</span></span></div></li>
-            <li class="li2"><div class="de2">&nbsp; <span
-            class="sc2">&lt;composite:actionSource <span class="kw3">name</span>=<span
-            class="st0">&quot;allEvents&quot;</span> targets=<span
-            class="st0">&quot;loginEvent cancelEvent&quot;</span>
-            /<span class="kw2">&gt;</span></span></div></li>
-            <li class="li1"><div class="de1"><span class="sc2"><span
-            class="kw2">&lt;</span>/composite:interface&gt;</span>
-            </div></li></ol></div></div>
-
-            <p>Most of the concepts from example content from <a
-            href="valueHolder.html"><code>&lt;composite:valueHolder&gt;</code></a>
+            refer to the <em>attached objects</em> declared on lines
+            2, 3 and 4 below.</p>
+
+            <div class="syntax"><div class="html4strict"
+            style="font-family: monospace;"><ol><li class="li1"><div
+            class="de1"><span class="sc2">&lt;composite:interface
+            <span class="kw3">name</span>=<span class="st0">&quot;loginPanel&quot;</span><span
+            class="kw2">&gt;</span></span></div></li>
+            <li class="li2"><div class="de2">&nbsp; <span
+            class="sc2">&lt;composite:actionSource <span class="kw3">name</span>=<span
+            class="st0">&quot;loginEvent&quot;</span> /<span
+            class="kw2">&gt;</span></span></div></li>
+            <li class="li1"><div class="de1">&nbsp; <span
+            class="sc2">&lt;composite:actionSource <span class="kw3">name</span>=<span
+            class="st0">&quot;cancelEvent&quot;</span> /<span
+            class="kw2">&gt;</span></span></div></li>
+            <li class="li2"><div class="de2">&nbsp; <span
+            class="sc2">&lt;composite:actionSource <span class="kw3">name</span>=<span
+            class="st0">&quot;allEvents&quot;</span> targets=<span
+            class="st0">&quot;loginEvent cancelEvent&quot;</span>
+            /<span class="kw2">&gt;</span></span></div></li>
+            <li class="li1"><div class="de1"><span class="sc2"><span
+            class="kw2">&lt;</span>/composite:interface&gt;</span>
+            </div></li></ol></div></div>
+
+            <p>Most of the concepts from example content from <a
+            href="valueHolder.html"><code>&lt;composite:valueHolder&gt;</code></a>
             also applies in the case of
-            <code>&lt;composite:actionSource&gt;</code>.</p>
+            <code>&lt;composite:actionSource&gt;</code>.</p>
 
-            <p>Please see <code>&lt;<a
-            href="interface.html">composite:interface</a>&gt;</code>
+            <p>Please see <code>&lt;<a
+            href="interface.html">composite:interface</a>&gt;</code>
             for a usage
-            example.</p>
+            example.</p>
 
 
-            </div>
-        </description>
+            </div>
+        ]]></description>
         <tag-name>actionSource</tag-name>
         <handler-class>com.sun.faces.facelets.tag.composite.ActionSource2AttachedObjectTargetHandler</handler-class>
         <attribute>
-            <description>
+            <description><![CDATA[
 
 
-                <div class="changed_added_2_0">
-                <p>
+                <div class="changed_added_2_0">
+                <p>
                 The value of this attribute maps back to the "for" attribute on
                 an attachable object
                 nested within a composite component. If the "targets" attribute
                 is not specified,
                 this value also represents the component ID of the target
                 component within the
-                that the <code>&lt;composite:implementation&gt;</code>
+                that the <code>&lt;composite:implementation&gt;</code>
                 ActionListener should be mapped to.
-                </p>
-                </div>
+                </p>
+                </div>
 
-            </description>
+            ]]></description>
             <name>name</name>
             <required>true</required>
             <type>java.lang.String</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
 
 
-                <div class="changed_added_2_0">
-                <p>If present, this must be a space (not tab) separated
+                <div class="changed_added_2_0">
+                <p>If present, this must be a space (not tab) separated
                 list of client
-                ids (relative to the <em>top level component</em>)
+                ids (relative to the <em>top level component</em>)
                 of components within
-                the <code>&lt;composite:implementation&gt;</code>
+                the <code>&lt;composite:implementation&gt;</code>
                 section. Space is
                 used as the delimiter for compatibility with the IDREFS and
                 NMTOKENS
-                data types from the XML Schema.</p></div>
+                data types from the XML Schema.</p></div>
 
-            </description>
+            ]]></description>
             <name>targets</name>
             <required>false</required>
             <type>java.lang.String</type>
         </attribute>
     </tag>
     <tag>
-        <description>
+        <description><![CDATA[
 
 
-            <div class="changed_added_2_0">
-            <p>Used within a <code>&lt;composite:interface&gt;</code>
+            <div class="changed_added_2_0">
+            <p>Used within a <code>&lt;composite:interface&gt;</code>
             section,
             within any sub-element of that section, to include XML content not
             defined by this specification. This element can be used to
             incorporate
-            <a target="_" href="http://jcp.org/en/jsr/detail?id=276">JSR-276</a>
-            metadata into a composite component.</p>
+            <a target="_" href="http://jcp.org/en/jsr/detail?id=276">JSR-276</a>
+            metadata into a composite component.</p>
 
-            </div>
-        </description>
+            </div>
+        ]]></description>
         <tag-name>extension</tag-name>
         <handler-class>com.sun.faces.facelets.tag.composite.ExtensionHandler</handler-class>
     </tag>
     <tag>
-        <description>
+        <description><![CDATA[
 
-            <div class="changed_added_2_0">
+            <div class="changed_added_2_0">
 
-            <p>The presence of this tag in a
-            <code>&lt;composite:implementation&gt;</code>
+            <p>The presence of this tag in a
+            <code>&lt;composite:implementation&gt;</code>
             section must cause the
-            named facet to be taken from the facet map of the <em>top
+            named facet to be taken from the facet map of the <em>top
             level
-            component</em> and inserted as a facet child of the component
+            component</em> and inserted as a facet child of the component
             in which
-            this element is nested.</p>
+            this element is nested.</p>
 
-            </div>
+            </div>
 
-        </description>
+        ]]></description>
         <tag-name>insertFacet</tag-name>
         <handler-class>com.sun.faces.facelets.tag.composite.InsertFacetHandler</handler-class>
         <attribute>
-            <description>
+            <description><![CDATA[
 
-                <div class="changed_added_2_0">
+                <div class="changed_added_2_0">
 
-                <p>The name of the facet child on the <em>top level
-                component</em> which
+                <p>The name of the facet child on the <em>top level
+                component</em> which
                 must be inserted as a facet child of the component in which this
                 element
-                is nested.</p>
+                is nested.</p>
 
-                </div>
+                </div>
 
-            </description>
+            ]]></description>
             <name>name</name>
             <required>true</required>
             <type>java.lang.String</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
 
-                <div class="changed_added_2_0">
+                <div class="changed_added_2_0">
 
-                <p>If <code>true</code>, and there is no such
+                <p>If <code>true</code>, and there is no such
                 facet present on the top
-                level component, a <code>TagException</code> must be
+                level component, a <code>TagException</code> must be
                 thrown, containing
-                the <code>Location</code>, the facet name, and a
+                the <code>Location</code>, the facet name, and a
                 localized descriptive
-                error message.</p>
+                error message.</p>
 
-                </div>
+                </div>
 
-            </description>
+            ]]></description>
             <name>required</name>
             <required>false</required>
             <type>boolean</type>
         </attribute>
     </tag>
+
+    <tag>
+        <description><![CDATA[
+
+<div class="changed_added_2_1">
+<p>Declares that the composite component whose contract is declared by
+the <code><composite:interface></code> in which this element is
+nested exposes an implementation of <code>ClientBehaviorHolder</code>
+suitable for use as the target of <em>attached objects</em> in <em>the
+using page</em>.  Any attached objects suitable for implementations of
+<code>ClientBehaviorHolder</code> may be attached to the composite
+component.</p>
+</div>
+        ]]></description>
+        <tag-name>clientBehavior</tag-name>
+        <handler-class>com.sun.faces.facelets.tag.composite.BehaviorHolderAttachedObjectTargetHandler</handler-class>
+        <attribute>
+            <description><![CDATA[
+
+<div class="changed_added_2_1">
+<p>The evaluated value of this attribute will be passed as the first
+argument to the <code>addClientBehavior()</code> method on
+<code>ClientBehaviorHolder</code>.</p>              
+
+            ]]></description>
+            <name>event</name>
+            <required>false</required>
+            <type>java.lang.String</type>
+        </attribute>
+        <attribute>
+            <description><![CDATA[
+
+<div class="changed_added_2_1">
+If the evaluated value of this attribute is <code>true</code>, the page
+author may omit the the "event" attribute when specifying the behavior
+in the using page.  This is analogous to "action" being the default
+event for <code>commandLink</code>.  The usage of this attribute assumes
+only one <code>clientBehavior</code> is declared in this composite
+component.  If more than one is specified, only the first one is used in
+the case of a using page with no event attribute.  </div>
+
+            ]]></description>
+            <name>default</name>
+            <required>false</required>
+            <type>boolean</type>
+        </attribute>
+
+        <attribute>
+            <description><![CDATA[
+<div class="changed_added_2_1">
+<p>
+  The value of this attribute maps back to the "for" attribute on an attachable object
+  nested within a composite component.   If the "targets" attribute is not specified,
+  this value also represents the component ID of the target component within the
+  that the <code><composite:implementation></code>
+  ActionListener should be mapped to. 
+</p>
+</div>
+            ]]></description>
+            <name>name</name>
+            <required>true</required>
+            <type>java.lang.String</type>
+        </attribute>
+
+        <attribute>
+            <description><![CDATA[
+<div class="changed_added_2_1">
+<p>If present, this must be a space (not tab) separated list of client
+ids (relative to the <em>top level component</em>) of components within
+the <code><composite:implementation></code> section.  Space is
+used as the delimiter for compatibility with the IDREFS and NMTOKENS
+data types from the XML Schema.</p></div>
+            ]]></description>
+            <name>targets</name>
+            <required>false</required>
+            <type>java.lang.String</type>
+        </attribute>
+    </tag>
 </facelet-taglib>
diff --git a/jsf-ri/conf/share/composite.tld b/jsf-ri/conf/share/composite.tld
index cf6060c..614cef4 100644
--- a/jsf-ri/conf/share/composite.tld
+++ b/jsf-ri/conf/share/composite.tld
@@ -1,39 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 2009 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2009-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
+
 <taglib xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.1">
 
 <!-- ============== Tag Library Description Elements ============= -->
@@ -54,24 +61,28 @@
   component that can be used by tools and users of the composite
   component. In most cases, a composite component can be authored
   without declaring and defining its usage contract with this taglib.
+  </p>
+
+<!--
+
   PENDING: the limit of what one can do without declaring and defining a
   usage contract must be cleary specified and documented.  PENDING: The
   implementation team must help discover these limits.
-  </p>
+
+-->
 
 <h2>Creating a Composite Component</h2>
 
-  <p>The default implementation must support authoring A composite
-  component is declared by creating a Facelets2 file inside of a resource
-  library.  (See section JSF.2.6 of the specification prose document for
-  more information about resource libraries.)  A composite component
-  must reside within a resource library.  It is not possible to create a
-  composite component without putting it inside of a resource
-  library.</p>
+  <p>A composite component is declared by creating a Facelets2 file
+  inside of a resource library.  (See section JSF.2.6 of the
+  specification prose document for more information about resource
+  libraries.)  A composite component must reside within a resource
+  library.  It is not possible to create a composite component without
+  putting it inside of a resource library.</p>
 
   <p>The default XML namespace URI of the taglib that contains the
   composite component, for use in <em>the using page</em>, is
-  <code>http://java.sun.com/jsf/composite/<composite-library-name></code>,
+  <code>http://xmlns.jcp.org/jsf/composite/<composite-library-name></code>,
   where <code><composite-library-name></code> is the name of the
   resource library.  For example:</p>
 
@@ -79,10 +90,10 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" <br />
             "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><br />
 <html xmlns="http://www.w3.org/1999/xhtml"<br />
-      xmlns:h="http://java.sun.com/jsf/html"<br />
-      xmlns:f="http://java.sun.com/jsf/core"<br />
-      xmlns:ui="http://java.sun.com/jsf/facelets"<br />
-      xmlns:ez="<i>http://java.sun.com/jsf/composite/<b>ezcomp</b></i>"><br />
+      xmlns:h="http://xmlns.jcp.org/jsf/html"<br />
+      xmlns:f="http://xmlns.jcp.org/jsf/core"<br />
+      xmlns:ui="http://xmlns.jcp.org/jsf/facelets"<br />
+      xmlns:ez="<i>http://xmlns.jcp.org/jsf/composite/<b>ezcomp</b></i>"><br />
 ...<br />
 </code></pre>
 
@@ -119,9 +130,9 @@ would make that file accessible like this.</p>
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" <br />
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><br />
 <html xmlns="http://www.w3.org/1999/xhtml"<br />
-      xmlns:h="http://java.sun.com/jsf/html"<br />
-      xmlns:f="http://java.sun.com/jsf/core"<br />
-      xmlns:ui="http://java.sun.com/jsf/facelets"<br />
+      xmlns:h="http://xmlns.jcp.org/jsf/html"<br />
+      xmlns:f="http://xmlns.jcp.org/jsf/core"<br />
+      xmlns:ui="http://xmlns.jcp.org/jsf/facelets"<br />
       xmlns:ez="<i><b>http://domain.com/path/namespace</b></i>"><br />
 ...<br />
 </code></pre>
@@ -217,6 +228,8 @@ shortDescription=A really nifty login panel.
 <p>The normal localization rules for <code>ResourceBundle</code> would
 apply.</p>
 
+<p>Refer to the <code>composite</code> tag for the details of defining the <code>interface</code> and <code>implementation</code> for composite components.</p>
+
 </div>
 
 
@@ -231,246 +244,288 @@ apply.</p>
         2.1
     </tlib-version>
 
+    <display-name>
+        Composite Components
+    </display-name>
+
     <short-name>
-        composite
+        cc
     </short-name>
 
     <uri>
-        http://java.sun.com/jsf/composite
+        http://xmlns.jcp.org/jsf/composite
     </uri>
 
 <!-- ===================== HTML 4.0 basic tags ====================== -->
 
-    <tag>
+  <tag>
         <description>
 
             <![CDATA[
 <div class="changed_added_2_0">
+<p><span class="changed_modified_2_0_rev_a">Declares</span> that the
+composite component whose contract is declared by the
+<code><composite:interface></code> in which this element is nested
+exposes an implementation of <code>ActionSource2</code> suitable for use
+as the target of <em>attached objects</em> in <em>the using page</em>.
+Any attached objects suitable for implementations of
+<code>ActionSource2</code> may be attached to the composite component.
+Consider this excerpt from <em>the using page</em>:
+            </p>
 
-            <p><span class="changed_modified_2_0_rev_a">This</span>
-            element declares the usage contract for a composite
-            component.  Optionally, and at the component author's
-            discretion, this contract exposes the features of one or
-            more inner components to the page author.  The page author
-            can work with the composite component as a single component
-            whose feature set is the union of the features declared in
-            the usage contract.</p>
+<div class="syntax"><div class="html4strict" style="font-family: monospace;"><ol><li class="li1"><div class="de1"><span class="sc2"><ez:loginPanel <span class="kw3">id</span>=<span class="st0">"loginPanel"</span> model=<span class="st0">"#{bean}"</span><span class="kw2">></span></span></div></li>
+<li class="li2"><div class="de2">  <span class="sc2"><f:valueChangeListener <span class="kw3">for</span>=<span class="st0">"username"</span></div></li>
+<li class="li1"><div class="de1">                             binding=<span class="st0">"#{bean.useridValueChangeListener}"</span> /<span class="kw2">></span></span></div></li>
+<li class="li2"><div class="de2">  <span class="sc2"><f:actionListener <span class="kw3">for</span>=<span class="st0">"loginEvent"</span> </div></li>
+<li class="li1"><div class="de1">                    binding=<span class="st0">"#{bean.loginEventListener}"</span> /<span class="kw2">></span></span></div></li>
+<li class="li2"><div class="de2"> </div></li>
+<li class="li1"><div class="de1">  <span class="sc2"><f:actionListener <span class="kw3">for</span>=<span class="st0">"cancelEvent"</span> </div></li>
+<li class="li2"><div class="de2">                    binding=<span class="st0">"#{bean.cancelEventListener}"</span> /<span class="kw2">></span></span></div></li>
+<li class="li1"><div class="de1"> </div></li>
+<li class="li2"><div class="de2">  <span class="sc2"><f:actionListener <span class="kw3">for</span>=<span class="st0">"allEvents"</span> </div></li>
+<li class="li1"><div class="de1">                    binding=<span class="st0">"#{bean.allEventsListener}"</span> /<span class="kw2">></span></span></div></li>
+<li class="li2"><div class="de2"> </div></li>
+<li class="li1"><div class="de1"><span class="sc2"><span class="kw2"><</span>/ez:loginPanel></span> </div></li></ol></div></div>
 
-            <p>For example, consider a composite component that
-            implements the functionality of a "login panel".  Such a
-            component would likely have two text fields and one button.
-            The user of such a component might like to do one or more of
-            the following.</p>
+<p>The <code><f:actionListener></code> elements on lines 4, 7, and 10
+refer to the <em>attached objects</em> declared on lines 2, 3 and 4 below.</p>
 
-            <ul>
+<div class="syntax"><div class="html4strict" style="font-family: monospace;"><ol><li class="li1"><div class="de1"><span class="sc2"><composite:interface <span class="kw3">name</span>=<span class="st0">"loginPanel"</span><span class="kw2">></span></span></div></li>
+<li class="li2"><div class="de2">  <span class="sc2"><composite:actionSource <span class="kw3">name</span>=<span class="st0">"loginEvent"</span> /<span class="kw2">></span></span></div></li>
+<li class="li1"><div class="de1">  <span class="sc2"><composite:actionSource <span class="kw3">name</span>=<span class="st0">"cancelEvent"</span> /<span class="kw2">></span></span></div></li>
+<li class="li2"><div class="de2">  <span class="sc2"><composite:actionSource <span class="kw3">name</span>=<span class="st0">"allEvents"</span> targets=<span class="st0">"loginEvent cancelEvent"</span> /<span class="kw2">></span></span></div></li>
+<li class="li1"><div class="de1"><span class="sc2"><span class="kw2"><</span>/composite:interface></span> </div></li></ol></div></div>
 
-	  <li><p>Be able to listen for the <code>ActionEvent</code>
-            on the button.</p>
+<p>Most of the concepts from example content from <a
+href="valueHolder.html"><code><composite:valueHolder></code></a>
+also applies in the case of
+<code><composite:actionSource></code>.</p>
 
-           <p>In this case, a
-            <code><composite:actionSource></code> element is
-            included in the usage contract that refers to the inner
-            button in the <code><composite:implementation></code>
-            section.</p>
+<p>Please see <code><<a
+href="interface.html">composite:interface</a>></code> for a usage
+example.</p>
 
-          </li>
 
-	  <li><p>Provide an "action" to invoke when the button is pressed.
-	  </p>
+</div>]]>
+        </description>
 
-           <p>In this case, a
-            <code><composite:attribute></code> element is included
-            in the usage contract that refers to the inner button in the
-            <code><composite:implementation></code> section and
-            declares the proper method signature for an "action".</p>
+        <name>actionSource</name>
 
-</li>
+        <body-content>
+            JSP
+        </body-content>
+        <attribute>
+            <description>
 
-	  <li><p>Provide parameters to the composite component for
-	  labels and other rendering specific aspects of the composite
-	  component.</p>
+                <![CDATA[
+<div class="changed_added_2_0">
+<p>
+  The value of this attribute maps back to the "for" attribute on an attachable object
+  nested within a composite component.   If the "targets" attribute is not specified,
+  this value also represents the component ID of the target component within the
+  that the <code><composite:implementation></code>
+  ActionListener should be mapped to. 
+</p>
+</div>]]>
 
-          <p>In this case, one or more
-          <code><composite:attribute></code> elements are included
-          in the usage contract and those parameters are referred to in
-          the <code><composite:implementation></code> section
-          using EL expressions like
-          <code>#{cc.attrs.usernameLabel}</code>,
-          assuming <code>usernameLabel</code> is the <code>name</code>
-          of one of the <code><composite:attribute></code>
-          elements in the usage contract.</p>
+            </description>
+            <name>
+                name
+            </name>
+            <required>
+                true
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
 
-          </li>
+                <![CDATA[
+<div class="changed_added_2_0">
+<p><span class="changed_modified_2_0_rev_a">If</span>  present, this must be a space (not tab) separated list of client
+ids (relative to the <em>top level component</em>) of components within
+the <code><composite:implementation></code> section.  Space is
+used as the delimiter for compatibility with the IDREFS and NMTOKENS
+data types from the XML Schema.</p></div>]]>
 
+            </description>
+            <name>
+                targets
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[
+<div class="changed_added_2_0_rev_a">
 
-	  <li><p>Add <code>ValueChangeListener</code>s,
-	  <code>Converter</code>s, or <code>Validator</code>s to either
-	  or both text fields.
-	  </p>
+<p> The "hidden" flag is used to identify features that are intended only for tool use, and which should not be exposed to humans.</p>
 
-           <p>In this case, a
-           <code><composite:editableValueHolder></code> element is
-           included in the usage contract that refers to the inner text
-           field in the <code><composite:implementation></code>
-           section.  In the case of wanting to enable only adding a
-           <code>Converter</code> (and not a
-           <code>ValueChangeListener</code> or <code>Validator</code>, a
-           <code><composite:valueHolder></code> element would be
-           used.</p>
+</div>]]>
+                
+            </description>
+            <name>hidden</name>
+            <required>false</required>
+            <deferred-value>
+                <type>boolean</type>
+            </deferred-value>
+        </attribute>
+  </tag>
 
-            </li>
+  <tag>
+        <description>
 
-	  <li><p>Add facet children to the login panel.</p>
+            <![CDATA[
+<div class="changed_added_2_0">
+<p><span class="changed_modified_2_0_rev_a changed_modified_2_1">Declares</span> an attribute that may be given to an instance of the
+<em>composite component</em> tag for this composite component.  There
+may be zero or many of these inside of the
+<code><composite:interface</code>> section.  This element may be
+nested within other <code><composite:attribute></code> elements to
+convey a usage contract that includes nested properties.</p>
 
-          <p>In this case, a <code><composite:facet></code>
-          element is included in the usage contract that refers to the
-          inner <code><composite:renderFacet></code> element in
-          the <code><composite:implementation></code> section.
-          </p>
+<p>Please see <a href="tld-summary.html#composite_example">summary
+page</a> for a usage example.</p>
 
-           </li>
+            <p>The <em>top level component</em> in which this element is
+            ultimately nested must be a <code>NamingContainer</code>.
+            There are certain component properties that must not be
+            exposed using this element.  The motivation for this
+            restriction is that the mapping of markup attributes to
+            component properties/attributes does not allow for these
+            attributes to be set.  The following properties must not be
+            exposed using this element.</p>
 
+  	<ul>
+  	  <li><p>binding</p></li>
+  	  <li><p>id</p></li>
+  	  <li><p>inView</p></li>
+  	  <li><p>parent</p></li>
+  	  <li><p>rendered</p></li>
+  	  <li><p>rendererType</p></li>
+  	  <li><p>transient</p></li>
+ 	</ul>
 
-            </ul>
+</div>]]>
+        </description>
+        <name>attribute</name>
+        <body-content>
+            JSP
+        </body-content>
+        <attribute>
+            <description>
 
-            <p>For each of the behaviorial interfaces in Section JSF.3.2 of
-            the specification, there is a tag in the
-            <code>composite:</code> library to nest inside of the
-            <code><composite:interface></code> section.
-            </p>
+                <![CDATA[
+<div class="changed_added_2_0">
+<p>The name of the attribute as it must appear on the <em>composite
+component tag</em> in the <em>using page</em>.  If the value of the
+<em>name</em> attribute is equal to (without the quotes)
+“action”, “actionListener”,
+“validator”, or “valueChangeListener”, the
+action described in <a target="_"
+href="../../../javadocs/javax/faces/application/ViewHandler.html#retargetMethodExpressions(javax.faces.context.FacesContext,%20javax.faces.component.UIComponent)">ViewHandler.retargetMethodExpressions()</a>
+must be taken to handle the attribute.  In these cases, the
+<code>method-signature</code> attribute, if present, must be ignored as
+its value is derived as described in
+<code>retargetMethodExpressions()</code>.</div>]]>
 
+            </description>
+            <name>
+                name
+            </name>
+            <required>
+                true
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
 
-            <p>If the <code><composite:interface></code> section
-            is not present in a <em>VDL view</em>, the contract will be
-            inferred as described in the specification.  There must be
-            zero or one of these elements in a composite component VDL
-            file.  If a <code><composite:interface></code> element
-            does appear, there must be an accompanying
-            <code><composite:implementation></code> element in the
-            same VDL file.  </p>
-
-           <p><b>Nesting of composite components</b></p>
-
-           <p>The implementation must support nesting of composite
-           components.  Specifically, it must be possible for the
-           <code><composite:implementation></code> section of a
-           composite component to act as the <em>using page</em> for
-           another composite component.  When a composite component
-           exposes a behavioral interface to the <em>using page</em>,
-           such as a <code><composite:actionSource></code>,
-           <code><composite:editableValueHolder></code>,
-           <code><composite:valueHolder></code> or other
-           behavioral interface, it must be possible to
-           “propogate” the exposure of such an interface in
-           the case of a nested composite component.  The composite
-           component author must ensure that the value of the
-           <code>name</code> attributes exactly match at all levels of
-           the nesting to enable this exposure to work.  The
-           implementation is not required to support
-           “re-mapping” of names in a nested composite
-           component.</p>
-
-           <p>For example, consider this nested composite component.</p>
-
-           <p>Using page</p>
-
-<div class="syntax"><div class="html4strict" style="font-family: monospace;"><ol><li class="li1"><div class="de1"><span class="sc2"><ez:actionSourceOuter></span></div></li>
-<li class="li2"><div class="de2">  <span class="sc2"><f:actionListener <span class="kw3">for</span>=<span class="st0">"button1"</span> /<span class="kw2">></span></span></div></li>
-<li class="li1"><div class="de1"><span class="sc2"><span class="kw2"><</span>/ez:actionSourceOuter></span> </div></li></ol></div></div>
-
-<p>actionSourceOuter.xhtml: Outer composite component</p>
-
-<div class="syntax"><div class="html4strict" style="font-family: monospace;"><ol><li class="li1"><div class="de1"><span class="sc2"><composite:interface></span></div></li>
-<li class="li2"><div class="de2">  <span class="sc2"><composite:actionSource <span class="kw3">name</span>=<span class="st0">"button1"</span> /<span class="kw2">></span></span></div></li>
-<li class="li1"><div class="de1"><span class="sc2"><span class="kw2"><</span>/composite:interface></span></div></li>
-<li class="li2"><div class="de2"> </div></li>
-<li class="li1"><div class="de1"><span class="sc2"><composite:implementation></span></div></li>
-<li class="li2"><div class="de2">  <span class="sc2"><ez:actionSourceInner /<span class="kw2">></span></span></div></li>
-<li class="li1"><div class="de1"><span class="sc2"><span class="kw2"><</span>/composite:implementation></span> </div></li></ol></div></div>
-
-<p>actionSourceInner.xhtml: the composite component used within a
-composite component.</p>
-
-<div class="syntax"><div class="html4strict" style="font-family: monospace;"><ol><li class="li1"><div class="de1"><span class="sc2"><composite:interface></span></div></li>
-<li class="li2"><div class="de2">  <span class="sc2"><composite:actionSource <span class="kw3">name</span>=<span class="st0">"button1"</span> /<span class="kw2">></span></span></div></li>
-<li class="li1"><div class="de1"><span class="sc2"><span class="kw2"><</span>/composite:interface></span></div></li>
-<li class="li2"><div class="de2"> </div></li>
-<li class="li1"><div class="de1"><span class="sc2"><composite:implementation></span></div></li>
-<li class="li2"><div class="de2">  <span class="sc2"><h:commandButton <span class="kw3">id</span>=<span class="st0">"button1"</span> <span class="kw3">value</span>=<span class="st0">"the real button"</span> /<span class="kw2">></span></span></div></li>
-<li class="li1"><div class="de1"><span class="sc2"><span class="kw2"><</span>/composite:implementation></span> </div></li></ol></div></div>
-
-<p>The <code>id</code> of the <code><h:commandButton></code> on
-line 6 of actionSourceInner.xhtml must match the <code>name</code> on
-line 2 of that file (this is a standard requirement for all composite
-components, nested or not).  That <code>id</code> must also match the
-<code>name</code> on line 2 of actionSourceOuter.xhtml, and the
-<code>for</code> on line 2 of the using page.</p>
-
-<p>The implementation must support any level of nesting as long as the
-<code>for</code>, <code>name</code>, and <code>id</code> values match
-up.  Furthermore, the <code>targets</code> attribute is also valid for
-use in this nested fashion.</p>
-
-<p><b>Naming containers within composite components</b></p>
-
-<p>Composite components are themselves naming containers so that any
-possible id conflicts between inner components and components in the
-using page are avoided.  However, special care must be taken when using
-naming containers in the <code><composite:implementation></code>
-section.  In such cases the value of the “name” attribute,
-or the values of the “targets” attribute must be used with a
-clientId relative to the <em>top level component</em> to expose any
-attached object targets to the using page.  For example:</p>
-
-           <p>Using page</p>
-
-<div class="syntax"><div class="html4strict" style="font-family: monospace;"><ol><li class="li1"><div class="de1"><span class="sc2"><ez:loginButton></span></div></li>
-<li class="li2"><div class="de2">  <span class="sc2"><f:actionListener <span class="kw3">for</span>=<span class="st0">"button"</span> <span class="kw3">binding</span>=<span class="st0">"#{foo.actionListener}"</span> /<span class="kw2">></span></span></div></li>
-<li class="li1"><div class="de1"><span class="sc2"><span class="kw2"><</span>/ez:loginButton></span> </div></li></ol></div></div>
-
-
-<p>loginButton.xhtml</p>
+                <![CDATA[
+<div class="changed_added_2_0">
 
-<div class="syntax"><div class="html4strict" style="font-family: monospace;"><ol><li class="li1"><div class="de1"><span class="sc2"><composite:interface></span></div></li>
-<li class="li2"><div class="de2">  <span class="sc2"><composite:actionSource <span class="kw3">name</span>=<span class="st0">"button"</span> targets=<span class="st0">"form:button"</span> /<span class="kw2">></span></span></div></li>
-<li class="li1"><div class="de1"><span class="sc2"><span class="kw2"><</span>/composite:interface></span></div></li>
-<li class="li2"><div class="de2"> </div></li>
-<li class="li1"><div class="de1"><span class="sc2"><composite:implementation></span></div></li>
-<li class="li2"><div class="de2"> </div></li>
-<li class="li1"><div class="de1">  <span class="sc2"><h:form <span class="kw3">id</span>=<span class="st0">"form"</span><span class="kw2">></span></span></div></li>
-<li class="li2"><div class="de2">    <span class="sc2"><h:commandButton <span class="kw3">id</span>=<span class="st0">"button"</span> <span class="kw3">value</span>=<span class="st0">"Submit"</span> /<span class="kw2">></span></span></div></li>
-<li class="li1"><div class="de1">  <span class="sc2"><span class="kw2"><</span>/h:form></span></div></li>
-<li class="li2"><div class="de2"><span class="sc2"><span class="kw2"><</span>/composite:implementation></span> </div></li></ol></div></div>
+<p>If this element has a <code>method-signature</code> attribute, the
+value of the <code>targets</code> attribute must be interpreted as a
+space (not tab) separated list of client ids (relative to the <em>top
+level component</em>) of components within the
+<code><composite:implementation></code> section.  Space is used as
+the delimiter for compatibility with the IDREFS and NMTOKENS data types
+from the XML Schema.  Each entry in the list must be interpreted as the
+id of an inner component to which the <code>MethodExpression</code> from
+the <em>composite component tag</em> in the <em>using page</em> must be
+applied.  If this element has a <code>method-signature</code> attribute,
+but no <code>targets</code> attribute, the value of the
+<code>name</code> attribute is used as the single entry in the list.  If
+the value of the <code>name</code> attribute is <strong>not</strong> one
+of the special values listed in the description of the <code>name
+attribute</code>, <code>targets</code> (or its derived value) need not
+correspond to the id of an inner component.</p>
 
-<p>Because the button on line 8 resides within a form, it must be
-referred to using a client id, relative to the <em>top level
-component</em>, in the "targets" attribute on line 2.  Using a relative
-clientId is required due to the semantics of
-<code>UIComponent.findComponent()</code>.</p>
+</div>]]>
 
-</div>
-]]>
-        </description>
-        <name>
-            interface
-        </name>
-        <body-content>
-            JSP
-        </body-content>
+            </description>
+            <name>
+                targets
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
         <attribute>
             <description>
 
                 <![CDATA[
-<div class="changed_added_2_0">
-<p>The name of this composite component.
-                Advisory only.  The real name is taken from the
-                filename.  The value of this attribute will be set as
-                the value for this property on the <em>composite
-                component bean descriptor</em>.</p></div>]]>
+<div class="changed_added_2_1">
+<p>This attribute allows the name of the attribute exposed to the using
+page to differ from the one actually used in the implementation.  For
+example, consider a composite component that contains two buttons, one
+that means "submit" and one that means "cancel".  It is natural to want
+to declare two composite component attributes to allow these buttons to
+be customized, for example, "submitAction" and "cancelAction".  For both
+of these buttons, the method expression should be retargeted to the
+inner button's "action" attribute.  This scenario would be expressed as
+follows.</p> 
+
+<code>
+<cc:interface><br />
+  <cc:attribute name="submitAction" targetAttributeName="action"<br />
+                method-signature="java.lang.Object action()"/><br />
+  <cc:attribute name="cancelAction" targetAttributeName="action"<br />
+                method-signature="java.lang.Object action()"/><br />
+  <cc:actionSource name="submitAction"/><br />
+  <cc:actionSource name="cancelAction"/>  <br />
+</cc:interface><br />
+<cc:implementation><br />
+  <h:commandButton id="submitAction" value="submit" /><br />
+  <h:commandButton id="cancelAction" value="cancel" /><br />
+</cc:implementation><br />
+</code>
+
+</div>]]>
 
             </description>
             <name>
-                name
+                targetAttributeName
             </name>
             <required>
                 false
@@ -481,19 +536,19 @@ clientId is required due to the semantics of
                 </type>
             </deferred-value>
         </attribute>
+
         <attribute>
             <description>
 
                 <![CDATA[
 <div class="changed_added_2_0">
-<p>The <code>component-type</code> of the <code>UIComponent</code> that
-will serve as the <em>composite component root</em> for this composite
-component.  The declared <code>component-family</code> for this
-component must be <code>javax.faces.NamingContainer</code>.</p></div>]]>
+<p>If this attribute is not required, and a
+                value is not supplied by the page author, use this as
+                the default value.</p></div>]]>
 
             </description>
             <name>
-                componentType
+                default
             </name>
             <required>
                 false
@@ -532,6 +587,26 @@ component must be <code>javax.faces.NamingContainer</code>.</p></div>]]>
 
                 <![CDATA[
 <div class="changed_added_2_0">
+<p>True if the page author must supply a value
+                for this attribute.  The default value is false.</p></div>]]>
+
+            </description>
+            <name>
+                required
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    boolean
+                </type>
+            </deferred-value>
+        </attribute>        <attribute>
+            <description>
+
+                <![CDATA[
+<div class="changed_added_2_0">
 <p>Is this a "preferred" component.  The value
                 of this attribute will be set as the value for this
                 property on the <em>composite component bean
@@ -598,108 +673,67 @@ component must be <code>javax.faces.NamingContainer</code>.</p></div>]]>
         </attribute>  
         <attribute>
             <description>
+
                 <![CDATA[
-<div class="changed_added_2_0_rev_a">
+<div class="changed_added_2_0">
+<p>Declares that this attribute must be a <code>MethodExpression</code>
+whose method signature is described by the value of this attribute.  The
+signature must be described using fully qualified class names wherever a
+type is required.  This attribute is mutually exclusive with the "type"
+attribute.  If both attributes are present, the "method-signature"
+attribute is ignored.</p> 
 
-<p> The "hidden" flag is used to identify features that are intended only for tool use, and which should not be exposed to humans.</p>
+<p>PENDING: when this file is generated from the
+web-facesuicomponent_2_0.xsd, we will not need to copy the content here
+manually.</p>
 
-</div>]]>
-                
-            </description>
-            <name>hidden</name>
-            <required>false</required>
-            <deferred-value>
-                <type>boolean</type>
-            </deferred-value>
-        </attribute>  </tag>
+	    <p>Provides the signature of the Java method.  The syntax of
+	    the method-signature element is as follows (taken from
+	    function-signature in web-jsptaglibrary_2_1.xsd):</p>
 
-    <tag>
-        <description>
-            <![CDATA[
-<div class="changed_added_2_0">
-<p>Defines the implementation of the composite
-            component.  There must be zero or one of these in a
-            composite component markup file.  If a
-            <code><composite:interface></code> element appears,
-            there must be a corresponding
-            <code><composite-implementation></code> element. If no
-            <code><composite:interface></code> element appears,
-            the <code><composite-implementation></code> element is
-            optional.  </p> </div>]]>
-        </description>
-        <name>
-            implementation
-        </name>
-        <body-content>
-            JSP
-        </body-content>
-  </tag>
+		<p>MethodSignature ::= ReturnType S MethodName S?
+				      '(' S? Parameters? S? ')'</p>
 
-  <tag>
-        <description>
+                <p>ReturnType        ::= Type</p>
 
-            <![CDATA[
-<div class="changed_added_2_0">
-<p><span class="changed_modified_2_0_rev_a">Declares</span> an attribute that may be given to an instance of the
-<em>composite component</em> tag for this composite component.  There
-may be zero or many of these inside of the
-<code><composite:interface</code>> section.  This element may be
-nested within other <code><composite:attribute></code> elements to
-convey a usage contract that includes nested properties.</p>
+		<p>MethodName        ::= Identifier</p>
 
-<p>Please see <a href="tld-summary.html#composite_example">summary
-page</a> for a usage example.</p>
+		<p>Parameters        ::=   Parameter
+				      | ( Parameter S? ',' S? Parameters )</p>
 
-            <p>The <em>top level component</em> in which this element is
-            ultimately nested must be a <code>NamingContainer</code>.
-            There are certain component properties that must not be
-            exposed using this element.  The motivation for this
-            restriction is that the mapping of markup attributes to
-            component properties/attributes does not allow for these
-            attributes to be set.  The following properties must not be
-            exposed using this element.</p>
+                <p>Parameter         ::= Type</p>
 
-  	<ul>
-  	  <li><p>binding</p></li>
-  	  <li><p>id</p></li>
-  	  <li><p>inView</p></li>
-  	  <li><p>parent</p></li>
-  	  <li><p>rendered</p></li>
-  	  <li><p>rendererType</p></li>
-  	  <li><p>transient</p></li>
- 	</ul>
+		<p>Where:</p>
 
-</div>]]>
-        </description>
-        <name>
-            attribute
-        </name>
-        <body-content>
-            JSP
-        </body-content>
-        <attribute>
-            <description>
+<ul>
 
-                <![CDATA[
-<div class="changed_added_2_0">
-<p>The name of the attribute as it must appear on the <em>composite
-component tag</em> in the <em>using page</em>.  If the value of the
-<em>name</em> attribute is equal to (without the quotes)
-“action”, “actionListener”,
-“validator”, or “valueChangeListener”, the
-action described in <a target="_"
-href="../../../javadocs/javax/faces/application/ViewHandler.html#retargetMethodExpressions(javax.faces.context.FacesContext,%20javax.faces.component.UIComponent)">ViewHandler.retargetMethodExpressions()</a>
-must be taken to handle the attribute.  In these cases, the
-<code>method-signature</code> attribute, if present, must be ignored as
-its value is derived as described in
-<code>retargetMethodExpressions()</code>.</div>]]>
+ 		    <li><p>Type is a basic type or a fully qualified
+		      Java class name (including package name),
+		      as per the 'Type' production in the Java
+		      Language Specification, Second Edition,
+		      Chapter 18.</p></li>
+
+                    <li><p>Identifier is a Java identifier, as per
+		      the 'Identifier' production in the Java
+		      Language Specification, Second
+		      Edition, Chapter 18.</p></li>
+
+</ul>
+
+	    <p>Example:</p>
+
+	    <p><code>java.lang.String nickName( java.lang.String, int )</code></p>
+
+
+
+</div>]]>
 
             </description>
             <name>
-                name
+                method-signature
             </name>
             <required>
-                true
+                false
             </required>
             <deferred-value>
                 <type>
@@ -707,34 +741,23 @@ its value is derived as described in
                 </type>
             </deferred-value>
         </attribute>
+
         <attribute>
             <description>
 
                 <![CDATA[
 <div class="changed_added_2_0">
-
-<p>If this element has a <code>method-signature</code> attribute, the
-value of the <code>targets</code> attribute must be interpreted as a
-space (not tab) separated list of client ids (relative to the <em>top
-level component</em>) of components within the
-<code><composite:implementation></code> section.  Space is used as
-the delimiter for compatibility with the IDREFS and NMTOKENS data types
-from the XML Schema.  Each entry in the list must be interpreted as the
-id of an inner component to which the <code>MethodExpression</code> from
-the <em>composite component tag</em> in the <em>using page</em> must be
-applied.  If this element has a <code>method-signature</code> attribute,
-but no <code>targets</code> attribute, the value of the
-<code>name</code> attribute is used as the single entry in the list.  If
-the value of the <code>name</code> attribute is <strong>not</strong> one
-of the special values listed in the description of the <code>name
-attribute</code>, <code>targets</code> (or its derived value) need not
-correspond to the id of an inner component.</p>
-
-</div>]]>
+<p>Declares that this attribute must be a <code>ValueExpression</code>
+whose expected type is given by the value of this attribute.  If not
+specified, and no "method-signature" attribute is present,
+<code>java.lang.Object</code> is assumed.  This attribute is mutually
+<span class="changed_modified_2_0_rev_a">exclusive with the
+"method-signature" attribute. If both attributes are present, the</span>
+"method-signature" attribute is ignored. </p> </div>]]>
 
             </description>
             <name>
-                targets
+                type
             </name>
             <required>
                 false
@@ -744,20 +767,56 @@ correspond to the id of an inner component.</p>
                     java.lang.String
                 </type>
             </deferred-value>
+        </attribute>  
+        <attribute>
+            <description>
+                <![CDATA[
+<div class="changed_added_2_0_rev_a">
+
+<p> The "hidden" flag is used to identify features that are intended only for tool use, and which should not be exposed to humans.</p>
+
+</div>]]>
+                
+            </description>
+            <name>hidden</name>
+            <required>false</required>
+            <deferred-value>
+                <type>boolean</type>
+            </deferred-value>
         </attribute>
+  </tag>
 
+
+  <tag>
+        <description>
+
+            <![CDATA[
+<div class="changed_added_2_1">
+<p>Declares that the composite component whose contract is declared by
+the <code><composite:interface></code> in which this element is
+nested exposes an implementation of <code>ClientBehaviorHolder</code>
+suitable for use as the target of <em>attached objects</em> in <em>the
+using page</em>.  Any attached objects suitable for implementations of
+<code>ClientBehaviorHolder</code> may be attached to the composite
+component.</p>
+</div>]]>
+        </description>
+        <name>clientBehavior</name>
+        <body-content>
+            JSP
+        </body-content>
         <attribute>
             <description>
 
                 <![CDATA[
-<div class="changed_added_2_0">
-<p>If this attribute is not required, and a
-                value is not supplied by the page author, use this as
-                the default value.</p></div>]]>
+<div class="changed_added_2_1">
+<p>The evaluated value of this attribute will be passed as the first
+argument to the <code>addClientBehavior()</code> method on
+<code>ClientBehaviorHolder</code>.</p> ]]>
 
             </description>
             <name>
-                default
+                event
             </name>
             <required>
                 false
@@ -772,104 +831,158 @@ correspond to the id of an inner component.</p>
             <description>
 
                 <![CDATA[
-<div class="changed_added_2_0">
-<p>The name to display in a tool palette
-                containing this component.  The value of this attribute will be set as
-                the value for this property on the <em>composite
-                component bean descriptor</em>.</p></div>]]>
+<div class="changed_added_2_1">
+If the evaluated value of this attribute is <code>true</code>, the page
+author may omit the the "event" attribute when specifying the behavior
+in the using page.  This is analogous to "action" being the default
+event for <code>commandLink</code>.  The usage of this attribute assumes
+only one <code>clientBehavior</code> is declared in this composite
+component.  If more than one is specified, only the first one is used in
+the case of a using page with no event attribute.  </div>]]>
 
             </description>
             <name>
-                displayName
+                default
             </name>
             <required>
                 false
             </required>
             <deferred-value>
                 <type>
-                    java.lang.String
+                    boolean
                 </type>
             </deferred-value>
         </attribute>
+
         <attribute>
             <description>
 
                 <![CDATA[
-<div class="changed_added_2_0">
-<p>True if the page author must supply a value
-                for this attribute.  The default value is false.</p></div>]]>
+<div class="changed_added_2_1">
+<p>
+  The value of this attribute maps back to the "for" attribute on an attachable object
+  nested within a composite component.   If the "targets" attribute is not specified,
+  this value also represents the component ID of the target component within the
+  that the <code><composite:implementation></code>
+  ActionListener should be mapped to. 
+</p>
+</div>]]>
 
             </description>
             <name>
-                required
+                name
             </name>
             <required>
-                false
+                true
             </required>
             <deferred-value>
                 <type>
-                    boolean
+                    java.lang.String
                 </type>
             </deferred-value>
-        </attribute>        <attribute>
+        </attribute>
+
+        <attribute>
             <description>
 
                 <![CDATA[
-<div class="changed_added_2_0">
-<p>Is this a "preferred" component.  The value
-                of this attribute will be set as the value for this
-                property on the <em>composite component bean
-                descriptor</em>.</p></div>]]>
+<div class="changed_added_2_1">
+<p>If present, this must be a space (not tab) separated list of client
+ids (relative to the <em>top level component</em>) of components within
+the <code><composite:implementation></code> section.  Space is
+used as the delimiter for compatibility with the IDREFS and NMTOKENS
+data types from the XML Schema.</p></div>]]>
 
             </description>
             <name>
-                preferred
+                targets
             </name>
             <required>
                 false
             </required>
             <deferred-value>
                 <type>
-                    boolean
+                    java.lang.String
                 </type>
             </deferred-value>
         </attribute>
+
+  </tag>
+
+
+
+
+  <tag>
+        <description>
+
+            <![CDATA[
+<div class="changed_added_2_0">
+<p><span class="changed_modified_2_0_rev_a">Declares</span> that the
+composite component whose contract is declared by the
+<code><composite:interface></code> in which this element is nested
+exposes an implementation of <code>EditableValueHolder</code> suitable
+for use as the target of <em>attached objects</em> in <em>the using
+page</em>.  Any attached objects suitable for implementations of
+<code>EditableValueHolder</code> may be attached to the composite
+component.The example from <a
+href="valueHolder.html"><code><composite:valueHolder></code></a>
+still applies.
+            </p>
+
+<p>Please see <code><<a
+href="interface.html">composite:interface</a>></code> for a usage
+example.</p>
+
+</div>]]>
+        </description>
+        <name>
+            editableValueHolder
+        </name>
+        <body-content>
+            JSP
+        </body-content>
         <attribute>
             <description>
 
+
                 <![CDATA[
 <div class="changed_added_2_0">
-<p>Is this component only for expert users?
-                The value of this attribute will be set as the value for
-                this property on the <em>composite component bean
-                descriptor</em>.</p></div>]]>
-
+<p>
+  The value of this attribute maps back to the "for" attribute on an attachable object
+  nested within a composite component.   If the "targets" attribute is not specified,
+  this value also represents the component ID of the target component within the
+  that the <code><composite:implementation></code>
+  ActionListener should be mapped to.  
+</p>
+</div>]]>
+            
             </description>
             <name>
-                expert
+                name
             </name>
             <required>
-                false
+                true
             </required>
             <deferred-value>
                 <type>
-                    boolean
+                    java.lang.String
                 </type>
             </deferred-value>
-        </attribute>    
+        </attribute>
         <attribute>
             <description>
 
                 <![CDATA[
 <div class="changed_added_2_0">
-<p>A short description of the purpose of this
-                component.  The value of this attribute will be set as
-                the value for this property on the <em>composite
-                component bean descriptor</em>.</p></div>]]>
+<p>If present, this must be a space (not tab) separated list of client
+ids (relative to the <em>top level component</em>) of components within
+the <code><composite:implementation></code> section.  Space is
+used as the delimiter for compatibility with the IDREFS and NMTOKENS
+data types from the XML Schema.</p></div>]]>
 
             </description>
             <name>
-                shortDescription
+                targets
             </name>
             <required>
                 false
@@ -879,119 +992,44 @@ correspond to the id of an inner component.</p>
                     java.lang.String
                 </type>
             </deferred-value>
-        </attribute>  
+        </attribute>
         <attribute>
             <description>
-
                 <![CDATA[
-<div class="changed_added_2_0">
-<p>Declares that this attribute must be a <code>MethodExpression</code>
-whose method signature is described by the value of this attribute.  The
-signature must be described using fully qualified class names wherever a
-type is required.  This attribute is mutually exclusive with the "type"
-attribute.  If both attributes are present, the "method-signature"
-attribute is ignored.</p> 
+<div class="changed_added_2_0_rev_a">
 
-<p>PENDING: when this file is generated from the
-web-facesuicomponent_2_0.xsd, we will not need to copy the content here
-manually.</p>
+<p> The "hidden" flag is used to identify features that are intended only for tool use, and which should not be exposed to humans.</p>
 
-	    <p>Provides the signature of the Java method.  The syntax of
-	    the method-signature element is as follows (taken from
-	    function-signature in web-jsptaglibrary_2_1.xsd):</p>
+</div>]]>
+                
+            </description>
+            <name>hidden</name>
+            <required>false</required>
+            <deferred-value>
+                <type>boolean</type>
+            </deferred-value>
+        </attribute>  
+</tag>
 
-		<p>MethodSignature ::= ReturnType S MethodName S?
-				      '(' S? Parameters? S? ')'</p>
+<tag>
+        <description>
 
-                <p>ReturnType        ::= Type</p>
-
-		<p>MethodName        ::= Identifier</p>
-
-		<p>Parameters        ::=   Parameter
-				      | ( Parameter S? ',' S? Parameters )</p>
-
-                <p>Parameter         ::= Type</p>
-
-		<p>Where:</p>
-
-<ul>
-
- 		    <li><p>Type is a basic type or a fully qualified
-		      Java class name (including package name),
-		      as per the 'Type' production in the Java
-		      Language Specification, Second Edition,
-		      Chapter 18.</p></li>
-
-                    <li><p>Identifier is a Java identifier, as per
-		      the 'Identifier' production in the Java
-		      Language Specification, Second
-		      Edition, Chapter 18.</p></li>
-
-</ul>
-
-	    <p>Example:</p>
-
-	    <p><code>java.lang.String nickName( java.lang.String, int )</code></p>
-
-
-
-</div>]]>
-
-            </description>
-            <name>
-                method-signature
-            </name>
-            <required>
-                false
-            </required>
-            <deferred-value>
-                <type>
-                    java.lang.String
-                </type>
-            </deferred-value>
-        </attribute>
-
-        <attribute>
-            <description>
-
-                <![CDATA[
+            <![CDATA[
 <div class="changed_added_2_0">
-<p>Declares that this attribute must be a <code>ValueExpression</code>
-whose expected type is given by the value of this attribute.  If not
-specified, and no "method-signature" attribute is present,
-<code>java.lang.Object</code> is assumed.  This attribute is mutually
-exclusive with the "method-signature" attribute. If both attributes are present, the
-"method-signature" attribute is ignored. </p> </div>]]>
-
-            </description>
-            <name>
-                type
-            </name>
-            <required>
-                false
-            </required>
-            <deferred-value>
-                <type>
-                    java.lang.String
-                </type>
-            </deferred-value>
-        </attribute>  
-        <attribute>
-            <description>
-                <![CDATA[
-<div class="changed_added_2_0_rev_a">
-
-<p> The "hidden" flag is used to identify features that are intended only for tool use, and which should not be exposed to humans.</p>
+<p>Used within a <code><composite:interface></code> section,
+within any sub-element of that section, to include XML content not
+defined by this specification.  This element can be used to incorporate
+<a target="_" href="http://jcp.org/en/jsr/detail?id=276">JSR-276</a>
+metadata into a composite component.</p>
 
 </div>]]>
-                
-            </description>
-            <name>hidden</name>
-            <required>false</required>
-            <deferred-value>
-                <type>boolean</type>
-            </deferred-value>
-        </attribute>
+        </description>
+        <name>
+            extension
+        </name>
+        <body-content>
+            JSP
+        </body-content>
   </tag>
 
   <tag>
@@ -1166,60 +1204,102 @@ example.</p>
             <deferred-value>
                 <type>boolean</type>
             </deferred-value>
-        </attribute>  </tag>
+        </attribute>  
+</tag>
 
-  <tag>
+    <tag>
         <description>
-
             <![CDATA[
 <div class="changed_added_2_0">
+<p>Defines the implementation of the composite
+            component.  There must be zero or one of these in a
+            composite component markup file.  If a
+            <code><composite:interface></code> element appears,
+            there must be a corresponding
+            <code><composite-implementation></code> element. If no
+            <code><composite:interface></code> element appears,
+            the <code><composite-implementation></code> element is
+            optional.  </p> </div>]]>
+        </description>
+        <name>
+            implementation
+        </name>
+        <body-content>
+            JSP
+        </body-content>
+  </tag>
 
-<p>This element is used in the
-<code><composite:implementation></code> section.  The facet with
-the name equal to the value of the name attribute, given by the page
-author in the using page, will be rendered at this point in the
-composite component VDL view. </p>
-
+  <tag>
+        <description>
 
-            <p>The implementation of this tag handler must insert a
-            component with <code>component-type</code>
-            <code>javax.faces.Output</code> and <code>renderer-type</code>
-            <code>javax.faces.CompositeFacet</code> as a
-            child at this point in the component tree.</p>
+            <![CDATA[
+<div class="changed_added_2_0">
 
-<p>The implementation of this tag handler must store an attribute into
-the created component's attribute map under the key given by the value
-of the symbolic constant <code>UIComponent.FACETS_KEY</code>.  The value
-for this key must be the evaluated value of the "name" attribute.</p>
+<p><span class="changed_modified_2_2">This</span> element is used in the
+<code><composite:implementation></code> section.  Any child
+components and/or template text within the composite component tag in
+the using page will be re-parented into the composite component at the
+point indicated by this tag's placement within the
+<code><composite:implementation></code> section.  The normal
+use-case for this element is to have exactly one occurrence within the
+<code><composite:implementation></code> section.  Inserting
+multiple occurrences may cause duplicate id errors.  The results are
+undefined if there are multiple occurrences of this element in the
+<code><composite:implementation></code> section.  <span
+class="changed_added_2_2">The results are undefined if there are child
+components and/or template text in the composite component tag in the
+using page, but there is no occurrence of this element in the
+<code><composite:implementation></code> section.</span></p>
 
 </div>]]>
         </description>
         <name>
-            renderFacet
+            insertChildren
         </name>
         <body-content>
             JSP
         </body-content>
-        <attribute>
-            <description>
+  </tag>
 
+    <tag>
+        <description>
                 <![CDATA[
 <div class="changed_added_2_0">
-<p>The value of the name attribute as it must appear on an
-<code><f:facet></code> tag nested within the <em>composite
-component tag</em> in the <em>using page</em>.</p></div>]]>
+
+<p><span class="changed_modified_2_2">The</span> presence of this tag in
+a <code><composite:implementation></code> section must cause the
+named facet to be taken from the facet map of the <em>top level
+component</em> and inserted as a facet child of the component in which
+this element is nested.  <span class="changed_added_2_2">The results are
+undefined if there are facets in the composite component tag in the
+using page, but there is no correspondingly named occurrence of this
+element in the <code><composite:implementation></code>
+section.</span></p>
+
+</div>]]>
+
+        </description>
+        <name>
+            insertFacet
+        </name>
+        <tag-class></tag-class>
+        <body-content>empty</body-content>
+        <attribute>
+            <description>
+                                <![CDATA[
+<div class="changed_added_2_0">
+
+<p>The name of the facet child on the <em>top level component</em> which
+must be inserted as a facet child of the component in which this element
+is nested.</p>
+
+</div>]]>
 
             </description>
-            <name>
-                name
-            </name>
-            <required>
-                true
-            </required>
+            <name>name</name>
+            <required>true</required>
             <deferred-value>
-                <type>
-                    java.lang.String
-                </type>
+                <type>java.lang.String</type>
             </deferred-value>
         </attribute>
         <attribute>
@@ -1241,101 +1321,220 @@ error message.</p>
                 <type>boolean</type>
             </deferred-value>
         </attribute>
-  </tag>
+    </tag>
 
-  <tag>
+    <tag>
         <description>
 
             <![CDATA[
 <div class="changed_added_2_0">
 
-<p>This element is used in the
-<code><composite:implementation></code> section.  Any child
-components or template text within the composite component tag in the
-using page will be re-parented into the composite component at the point
-indicated by this tag's placement within the
-<code><composite:implementation></code> section.  The normal
-use-case for this element is to have only one occurrence within the
-<code><composite:implementation></code> section.  Inserting
-multiple occurrences may cause duplicate id errors.  The results are
-undefined if there are multiple occurrences of this element in the
-<code><composite:implementation></code> section.</p>
-
-</div>]]>
-        </description>
-        <name>
-            insertChildren
-        </name>
-        <body-content>
-            JSP
-        </body-content>
-  </tag>
+            <p><span class="changed_modified_2_0_rev_a">This</span>
+            element declares the usage contract for a composite
+            component.  Optionally, and at the component author's
+            discretion, this contract exposes the features of one or
+            more inner components to the page author.  The page author
+            can work with the composite component as a single component
+            whose feature set is the union of the features declared in
+            the usage contract.</p>
 
-  <tag>
-        <description>
+            <p>For example, consider a composite component that
+            implements the functionality of a "login panel".  Such a
+            component would likely have two text fields and one button.
+            The user of such a component might like to do one or more of
+            the following.</p>
 
-            <![CDATA[
-<div class="changed_added_2_0">
-<p><span class="changed_modified_2_0_rev_a">Declares</span> that the
-composite component whose contract is declared by the
-<code><composite:interface></code> in which this element is nested
-exposes an implementation of <code>ValueHolder</code> suitable for use
-as the target of <em>attached objects</em> in <em>the using page</em>.
-Any attached objects suitable for implementations of
-<code>ValueHolder</code> may be attached to the composite component.
-Consider this excerpt from <em>the using page</em>:
-            </p>
+            <ul>
 
-<div class="syntax"><div class="html4strict" style="font-family: monospace;"><ol><li class="li1"><div class="de1"><span class="sc2"><ez:foo></span></div></li>
-<li class="li2"><div class="de2">  <span class="sc2"><f:converter <span class="kw3">for</span>=<span class="st0">"userid"</span> binding=<span class="st0">"#{bean.converter}"</span> /<span class="kw2">></span></span></div></li>
-<li class="li1"><div class="de1"><span class="sc2"><span class="kw2"><</span>/ez:foo></span> </div></li></ol></div></div>
+	  <li><p>Be able to listen for the <code>ActionEvent</code>
+            on the button.</p>
 
-           <p>Line 2 refers to the
-           <code><composite:valueHolder></code> declaration on
-           line 2 of <code>foo.xhtml</code>:</p>
+           <p>In this case, a
+            <code><composite:actionSource></code> element is
+            included in the usage contract that refers to the inner
+            button in the <code><composite:implementation></code>
+            section.</p>
 
-<div class="syntax"><div class="html4strict" style="font-family: monospace;"><ol><li class="li1"><div class="de1"><span class="sc2"><composite:interface></span></div></li>
-<li class="li2"><div class="de2">  <span class="sc2"><composite:valueHolder <span class="kw3">name</span>=<span class="st0">"userid"</span> /<span class="kw2">></span></span></div></li>
-<li class="li1"><div class="de1"><span class="sc2"><span class="kw2"><</span>/composite:interface></span></div></li>
-<li class="li2"><div class="de2"> </div></li>
-<li class="li1"><div class="de1"><span class="sc2"><composite:implementation></span></div></li>
-<li class="li2"><div class="de2">  <span class="sc2"><h:inputText <span class="kw3">id</span>=<span class="st0">"userid"</span> /<span class="kw2">></span></span></div></li>
-<li class="li1"><div class="de1"><span class="sc2"><span class="kw2"><</span>/composite:implementation></span> </div></li></ol></div></div>
+          </li>
 
-<p></p>
+	  <li><p>Provide an "action" to invoke when the button is pressed.
+	  </p>
 
-<p>It is possible to declare that a single
-<code><composite:valueHolder></code> element should cause multiple
-components within the <code><composite:implementation></code>
-section to be the targets of an <em>attached object</em> in the
-using page.  Assuming the same <em>using page</em> excerpt as
-above, the revised <em>VDL view</em> is:</p>
+           <p>In this case, a
+            <code><composite:attribute></code> element is included
+            in the usage contract that refers to the inner button in the
+            <code><composite:implementation></code> section and
+            declares the proper method signature for an "action".</p>
+
+</li>
+
+	  <li><p>Provide parameters to the composite component for
+	  labels and other rendering specific aspects of the composite
+	  component.</p>
+
+          <p>In this case, one or more
+          <code><composite:attribute></code> elements are included
+          in the usage contract and those parameters are referred to in
+          the <code><composite:implementation></code> section
+          using EL expressions like
+          <code>#{cc.attrs.usernameLabel}</code>,
+          assuming <code>usernameLabel</code> is the <code>name</code>
+          of one of the <code><composite:attribute></code>
+          elements in the usage contract.</p>
+
+          </li>
+
+
+	  <li><p>Add <code>ValueChangeListener</code>s,
+	  <code>Converter</code>s, or <code>Validator</code>s to either
+	  or both text fields.
+	  </p>
+
+           <p>In this case, a
+           <code><composite:editableValueHolder></code> element is
+           included in the usage contract that refers to the inner text
+           field in the <code><composite:implementation></code>
+           section.  In the case of wanting to enable only adding a
+           <code>Converter</code> (and not a
+           <code>ValueChangeListener</code> or <code>Validator</code>, a
+           <code><composite:valueHolder></code> element would be
+           used.</p>
+
+            </li>
+
+	  <li><p>Add facet children to the login panel.</p>
+
+          <p>In this case, a <code><composite:facet></code>
+          element is included in the usage contract that refers to the
+          inner <code><composite:renderFacet></code> element in
+          the <code><composite:implementation></code> section.
+          </p>
+
+           </li>
+
+
+            </ul>
+
+            <p>For each of the behaviorial interfaces in Section JSF.3.2 of
+            the specification, there is a tag in the
+            <code>composite:</code> library to nest inside of the
+            <code><composite:interface></code> section.
+            </p>
+
+
+            <p>If the <code><composite:interface></code> section
+            is not present in a <em>VDL view</em>, the contract will be
+            inferred as described in the specification.  There must be
+            zero or one of these elements in a composite component VDL
+            file.  If a <code><composite:interface></code> element
+            does appear, there must be an accompanying
+            <code><composite:implementation></code> element in the
+            same VDL file.  </p>
+
+           <p><b>Nesting of composite components</b></p>
+
+           <p>The implementation must support nesting of composite
+           components.  Specifically, it must be possible for the
+           <code><composite:implementation></code> section of a
+           composite component to act as the <em>using page</em> for
+           another composite component.  When a composite component
+           exposes a behavioral interface to the <em>using page</em>,
+           such as a <code><composite:actionSource></code>,
+           <code><composite:editableValueHolder></code>,
+           <code><composite:valueHolder></code> or other
+           behavioral interface, it must be possible to
+           “propogate” the exposure of such an interface in
+           the case of a nested composite component.  The composite
+           component author must ensure that the value of the
+           <code>name</code> attributes exactly match at all levels of
+           the nesting to enable this exposure to work.  The
+           implementation is not required to support
+           “re-mapping” of names in a nested composite
+           component.</p>
+
+           <p>For example, consider this nested composite component.</p>
+
+           <p>Using page</p>
+
+<div class="syntax"><div class="html4strict" style="font-family: monospace;"><ol><li class="li1"><div class="de1"><span class="sc2"><ez:actionSourceOuter></span></div></li>
+<li class="li2"><div class="de2">  <span class="sc2"><f:actionListener <span class="kw3">for</span>=<span class="st0">"button1"</span> /<span class="kw2">></span></span></div></li>
+<li class="li1"><div class="de1"><span class="sc2"><span class="kw2"><</span>/ez:actionSourceOuter></span> </div></li></ol></div></div>
+
+<p>actionSourceOuter.xhtml: Outer composite component</p>
 
 <div class="syntax"><div class="html4strict" style="font-family: monospace;"><ol><li class="li1"><div class="de1"><span class="sc2"><composite:interface></span></div></li>
-<li class="li2"><div class="de2">  <span class="sc2"><composite:valueHolder targets=<span class="st0">"userid,password"</span> /<span class="kw2">></span></span></div></li>
+<li class="li2"><div class="de2">  <span class="sc2"><composite:actionSource <span class="kw3">name</span>=<span class="st0">"button1"</span> /<span class="kw2">></span></span></div></li>
 <li class="li1"><div class="de1"><span class="sc2"><span class="kw2"><</span>/composite:interface></span></div></li>
 <li class="li2"><div class="de2"> </div></li>
 <li class="li1"><div class="de1"><span class="sc2"><composite:implementation></span></div></li>
-<li class="li2"><div class="de2">  <span class="sc2"><h:inputText <span class="kw3">id</span>=<span class="st0">"userid"</span> /<span class="kw2">></span></span></div></li>
-<li class="li1"><div class="de1">  <span class="sc2"><h:inputText <span class="kw3">id</span>=<span class="st0">"password"</span> /<span class="kw2">></span></span></div></li>
-<li class="li2"><div class="de2"><span class="sc2"><span class="kw2"><</span>/composite:implementation></span> </div></li></ol></div></div>
+<li class="li2"><div class="de2">  <span class="sc2"><ez:actionSourceInner /<span class="kw2">></span></span></div></li>
+<li class="li1"><div class="de1"><span class="sc2"><span class="kw2"><</span>/composite:implementation></span> </div></li></ol></div></div>
 
-<p>In this case, the "targets" attribute on the
-<code><composite:valueHolder></code> element, on line 2 above,
-replaces the "name" attribute in the previous example.  "targets" is a
-list of ids of client ids (relative to the <em>top level component</em>)
-within the <code><composite:implementation></code> section.  In
-this case, "targets" refers to the <code><h:inputText></code>
-components on lines 6 and 7 above.</p>
+<p>actionSourceInner.xhtml: the composite component used within a
+composite component.</p>
 
-<p>Please see <code><<a
-href="interface.html">composite:interface</a>></code> for a usage
-example.</p>
+<div class="syntax"><div class="html4strict" style="font-family: monospace;"><ol><li class="li1"><div class="de1"><span class="sc2"><composite:interface></span></div></li>
+<li class="li2"><div class="de2">  <span class="sc2"><composite:actionSource <span class="kw3">name</span>=<span class="st0">"button1"</span> /<span class="kw2">></span></span></div></li>
+<li class="li1"><div class="de1"><span class="sc2"><span class="kw2"><</span>/composite:interface></span></div></li>
+<li class="li2"><div class="de2"> </div></li>
+<li class="li1"><div class="de1"><span class="sc2"><composite:implementation></span></div></li>
+<li class="li2"><div class="de2">  <span class="sc2"><h:commandButton <span class="kw3">id</span>=<span class="st0">"button1"</span> <span class="kw3">value</span>=<span class="st0">"the real button"</span> /<span class="kw2">></span></span></div></li>
+<li class="li1"><div class="de1"><span class="sc2"><span class="kw2"><</span>/composite:implementation></span> </div></li></ol></div></div>
 
-</div>]]>
+<p>The <code>id</code> of the <code><h:commandButton></code> on
+line 6 of actionSourceInner.xhtml must match the <code>name</code> on
+line 2 of that file (this is a standard requirement for all composite
+components, nested or not).  That <code>id</code> must also match the
+<code>name</code> on line 2 of actionSourceOuter.xhtml, and the
+<code>for</code> on line 2 of the using page.</p>
+
+<p>The implementation must support any level of nesting as long as the
+<code>for</code>, <code>name</code>, and <code>id</code> values match
+up.  Furthermore, the <code>targets</code> attribute is also valid for
+use in this nested fashion.</p>
+
+<p><b>Naming containers within composite components</b></p>
+
+<p>Composite components are themselves naming containers so that any
+possible id conflicts between inner components and components in the
+using page are avoided.  However, special care must be taken when using
+naming containers in the <code><composite:implementation></code>
+section.  In such cases the value of the “name” attribute,
+or the values of the “targets” attribute must be used with a
+clientId relative to the <em>top level component</em> to expose any
+attached object targets to the using page.  For example:</p>
+
+           <p>Using page</p>
+
+<div class="syntax"><div class="html4strict" style="font-family: monospace;"><ol><li class="li1"><div class="de1"><span class="sc2"><ez:loginButton></span></div></li>
+<li class="li2"><div class="de2">  <span class="sc2"><f:actionListener <span class="kw3">for</span>=<span class="st0">"button"</span> <span class="kw3">binding</span>=<span class="st0">"#{foo.actionListener}"</span> /<span class="kw2">></span></span></div></li>
+<li class="li1"><div class="de1"><span class="sc2"><span class="kw2"><</span>/ez:loginButton></span> </div></li></ol></div></div>
+
+
+<p>loginButton.xhtml</p>
+
+<div class="syntax"><div class="html4strict" style="font-family: monospace;"><ol><li class="li1"><div class="de1"><span class="sc2"><composite:interface></span></div></li>
+<li class="li2"><div class="de2">  <span class="sc2"><composite:actionSource <span class="kw3">name</span>=<span class="st0">"button"</span> targets=<span class="st0">"form:button"</span> /<span class="kw2">></span></span></div></li>
+<li class="li1"><div class="de1"><span class="sc2"><span class="kw2"><</span>/composite:interface></span></div></li>
+<li class="li2"><div class="de2"> </div></li>
+<li class="li1"><div class="de1"><span class="sc2"><composite:implementation></span></div></li>
+<li class="li2"><div class="de2"> </div></li>
+<li class="li1"><div class="de1">  <span class="sc2"><h:form <span class="kw3">id</span>=<span class="st0">"form"</span><span class="kw2">></span></span></div></li>
+<li class="li2"><div class="de2">    <span class="sc2"><h:commandButton <span class="kw3">id</span>=<span class="st0">"button"</span> <span class="kw3">value</span>=<span class="st0">"Submit"</span> /<span class="kw2">></span></span></div></li>
+<li class="li1"><div class="de1">  <span class="sc2"><span class="kw2"><</span>/h:form></span></div></li>
+<li class="li2"><div class="de2"><span class="sc2"><span class="kw2"><</span>/composite:implementation></span> </div></li></ol></div></div>
+
+<p>Because the button on line 8 resides within a form, it must be
+referred to using a client id, relative to the <em>top level
+component</em>, in the "targets" attribute on line 2.  Using a relative
+clientId is required due to the semantics of
+<code>UIComponent.findComponent()</code>.</p>
+
+</div>
+]]>
         </description>
         <name>
-            valueHolder
+            interface
         </name>
         <body-content>
             JSP
@@ -1345,42 +1544,130 @@ example.</p>
 
                 <![CDATA[
 <div class="changed_added_2_0">
-<p>
-  The value of this attribute maps back to the "for" attribute on an attachable object
-  nested within a composite component.   If the "targets" attribute is not specified,
-  this value also represents the component ID of the target component within the
-  that the <code><composite:implementation></code>
-  ActionListener should be mapped to.  
-</p>
-</div>]]>
+<p>The name of this composite component.
+                Advisory only.  The real name is taken from the
+                filename.  The value of this attribute will be set as
+                the value for this property on the <em>composite
+                component bean descriptor</em>.</p></div>]]>
+
+            </description>
+            <name>
+                name
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+
+                <![CDATA[
+<div class="changed_added_2_0">
+<p>The <code>component-type</code> of the <code>UIComponent</code> that
+will serve as the <em>composite component root</em> for this composite
+component.  The declared <code>component-family</code> for this
+component must be <code>javax.faces.NamingContainer</code>.</p></div>]]>
+
+            </description>
+            <name>
+                componentType
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+
+                <![CDATA[
+<div class="changed_added_2_0">
+<p>The name to display in a tool palette
+                containing this component.  The value of this attribute will be set as
+                the value for this property on the <em>composite
+                component bean descriptor</em>.</p></div>]]>
+
+            </description>
+            <name>
+                displayName
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+
+                <![CDATA[
+<div class="changed_added_2_0">
+<p>Is this a "preferred" component.  The value
+                of this attribute will be set as the value for this
+                property on the <em>composite component bean
+                descriptor</em>.</p></div>]]>
+
+            </description>
+            <name>
+                preferred
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    boolean
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+
+                <![CDATA[
+<div class="changed_added_2_0">
+<p>Is this component only for expert users?
+                The value of this attribute will be set as the value for
+                this property on the <em>composite component bean
+                descriptor</em>.</p></div>]]>
 
             </description>
             <name>
-                name
+                expert
             </name>
             <required>
-                true
+                false
             </required>
             <deferred-value>
                 <type>
-                    java.lang.String
+                    boolean
                 </type>
             </deferred-value>
-        </attribute>
+        </attribute>    
         <attribute>
             <description>
 
                 <![CDATA[
 <div class="changed_added_2_0">
-<p>If present, this must be a space (not tab) separated list of client
-ids (relative to the <em>top level component</em>) of components within
-the <code><composite:implementation></code> section.  Space is
-used as the delimiter for compatibility with the IDREFS and NMTOKENS
-data types from the XML Schema.  </p></div>]]>
+<p>A short description of the purpose of this
+                component.  The value of this attribute will be set as
+                the value for this property on the <em>composite
+                component bean descriptor</em>.</p></div>]]>
 
             </description>
             <name>
-                targets
+                shortDescription
             </name>
             <required>
                 false
@@ -1390,7 +1677,7 @@ data types from the XML Schema.  </p></div>]]>
                     java.lang.String
                 </type>
             </deferred-value>
-        </attribute>
+        </attribute>  
         <attribute>
             <description>
                 <![CDATA[
@@ -1406,34 +1693,42 @@ data types from the XML Schema.  </p></div>]]>
             <deferred-value>
                 <type>boolean</type>
             </deferred-value>
-        </attribute>  
-  </tag>
+        </attribute>  </tag>
+
+
+
+
+
+
 
   <tag>
         <description>
 
             <![CDATA[
 <div class="changed_added_2_0">
-<p><span class="changed_modified_2_0_rev_a">Declares</span> that the
-composite component whose contract is declared by the
-<code><composite:interface></code> in which this element is nested
-exposes an implementation of <code>EditableValueHolder</code> suitable
-for use as the target of <em>attached objects</em> in <em>the using
-page</em>.  Any attached objects suitable for implementations of
-<code>EditableValueHolder</code> may be attached to the composite
-component.The example from <a
-href="valueHolder.html"><code><composite:valueHolder></code></a>
-still applies.
-            </p>
 
-<p>Please see <code><<a
-href="interface.html">composite:interface</a>></code> for a usage
-example.</p>
+<p>This element is used in the
+<code><composite:implementation></code> section.  The facet with
+the name equal to the value of the name attribute, given by the page
+author in the using page, will be rendered at this point in the
+composite component VDL view. </p>
+
+
+            <p>The implementation of this tag handler must insert a
+            component with <code>component-type</code>
+            <code>javax.faces.Output</code> and <code>renderer-type</code>
+            <code>javax.faces.CompositeFacet</code> as a
+            child at this point in the component tree.</p>
+
+<p>The implementation of this tag handler must store an attribute into
+the created component's attribute map under the key given by the value
+of the symbolic constant <code>UIComponent.FACETS_KEY</code>.  The value
+for this key must be the evaluated value of the "name" attribute.</p>
 
 </div>]]>
         </description>
         <name>
-            editableValueHolder
+            renderFacet
         </name>
         <body-content>
             JSP
@@ -1441,18 +1736,12 @@ example.</p>
         <attribute>
             <description>
 
-
                 <![CDATA[
 <div class="changed_added_2_0">
-<p>
-  The value of this attribute maps back to the "for" attribute on an attachable object
-  nested within a composite component.   If the "targets" attribute is not specified,
-  this value also represents the component ID of the target component within the
-  that the <code><composite:implementation></code>
-  ActionListener should be mapped to.  
-</p>
-</div>]]>
-            
+<p>The value of the name attribute as it must appear on an
+<code><f:facet></code> tag nested within the <em>composite
+component tag</em> in the <em>using page</em>.</p></div>]]>
+
             </description>
             <name>
                 name
@@ -1468,44 +1757,26 @@ example.</p>
         </attribute>
         <attribute>
             <description>
-
                 <![CDATA[
 <div class="changed_added_2_0">
-<p>If present, this must be a space (not tab) separated list of client
-ids (relative to the <em>top level component</em>) of components within
-the <code><composite:implementation></code> section.  Space is
-used as the delimiter for compatibility with the IDREFS and NMTOKENS
-data types from the XML Schema.</p></div>]]>
-
-            </description>
-            <name>
-                targets
-            </name>
-            <required>
-                false
-            </required>
-            <deferred-value>
-                <type>
-                    java.lang.String
-                </type>
-            </deferred-value>
-        </attribute>
-        <attribute>
-            <description>
-                <![CDATA[
-<div class="changed_added_2_0_rev_a">
 
-<p> The "hidden" flag is used to identify features that are intended only for tool use, and which should not be exposed to humans.</p>
+<p>If <code>true</code>, and there is no such facet present on the top
+level component, a <code>TagException</code> must be thrown, containing
+the <code>Location</code>, the facet name, and a localized descriptive
+error message.</p>
 
 </div>]]>
                 
             </description>
-            <name>hidden</name>
+            <name>required</name>
             <required>false</required>
             <deferred-value>
                 <type>boolean</type>
             </deferred-value>
-        </attribute>  </tag>
+        </attribute>
+  </tag>
+
+
 
   <tag>
         <description>
@@ -1515,50 +1786,63 @@ data types from the XML Schema.</p></div>]]>
 <p><span class="changed_modified_2_0_rev_a">Declares</span> that the
 composite component whose contract is declared by the
 <code><composite:interface></code> in which this element is nested
-exposes an implementation of <code>ActionSource2</code> suitable for use
+exposes an implementation of <code>ValueHolder</code> suitable for use
 as the target of <em>attached objects</em> in <em>the using page</em>.
 Any attached objects suitable for implementations of
-<code>ActionSource2</code> may be attached to the composite component.
+<code>ValueHolder</code> may be attached to the composite component.
 Consider this excerpt from <em>the using page</em>:
             </p>
 
-<div class="syntax"><div class="html4strict" style="font-family: monospace;"><ol><li class="li1"><div class="de1"><span class="sc2"><ez:loginPanel <span class="kw3">id</span>=<span class="st0">"loginPanel"</span> model=<span class="st0">"#{bean}"</span><span class="kw2">></span></span></div></li>
-<li class="li2"><div class="de2">  <span class="sc2"><f:valueChangeListener <span class="kw3">for</span>=<span class="st0">"username"</span></div></li>
-<li class="li1"><div class="de1">                             binding=<span class="st0">"#{bean.useridValueChangeListener}"</span> /<span class="kw2">></span></span></div></li>
-<li class="li2"><div class="de2">  <span class="sc2"><f:actionListener <span class="kw3">for</span>=<span class="st0">"loginEvent"</span> </div></li>
-<li class="li1"><div class="de1">                    binding=<span class="st0">"#{bean.loginEventListener}"</span> /<span class="kw2">></span></span></div></li>
-<li class="li2"><div class="de2"> </div></li>
-<li class="li1"><div class="de1">  <span class="sc2"><f:actionListener <span class="kw3">for</span>=<span class="st0">"cancelEvent"</span> </div></li>
-<li class="li2"><div class="de2">                    binding=<span class="st0">"#{bean.cancelEventListener}"</span> /<span class="kw2">></span></span></div></li>
-<li class="li1"><div class="de1"> </div></li>
-<li class="li2"><div class="de2">  <span class="sc2"><f:actionListener <span class="kw3">for</span>=<span class="st0">"allEvents"</span> </div></li>
-<li class="li1"><div class="de1">                    binding=<span class="st0">"#{bean.allEventsListener}"</span> /<span class="kw2">></span></span></div></li>
+<div class="syntax"><div class="html4strict" style="font-family: monospace;"><ol><li class="li1"><div class="de1"><span class="sc2"><ez:foo></span></div></li>
+<li class="li2"><div class="de2">  <span class="sc2"><f:converter <span class="kw3">for</span>=<span class="st0">"userid"</span> binding=<span class="st0">"#{bean.converter}"</span> /<span class="kw2">></span></span></div></li>
+<li class="li1"><div class="de1"><span class="sc2"><span class="kw2"><</span>/ez:foo></span> </div></li></ol></div></div>
+
+           <p>Line 2 refers to the
+           <code><composite:valueHolder></code> declaration on
+           line 2 of <code>foo.xhtml</code>:</p>
+
+<div class="syntax"><div class="html4strict" style="font-family: monospace;"><ol><li class="li1"><div class="de1"><span class="sc2"><composite:interface></span></div></li>
+<li class="li2"><div class="de2">  <span class="sc2"><composite:valueHolder <span class="kw3">name</span>=<span class="st0">"userid"</span> /<span class="kw2">></span></span></div></li>
+<li class="li1"><div class="de1"><span class="sc2"><span class="kw2"><</span>/composite:interface></span></div></li>
 <li class="li2"><div class="de2"> </div></li>
-<li class="li1"><div class="de1"><span class="sc2"><span class="kw2"><</span>/ez:loginPanel></span> </div></li></ol></div></div>
+<li class="li1"><div class="de1"><span class="sc2"><composite:implementation></span></div></li>
+<li class="li2"><div class="de2">  <span class="sc2"><h:inputText <span class="kw3">id</span>=<span class="st0">"userid"</span> /<span class="kw2">></span></span></div></li>
+<li class="li1"><div class="de1"><span class="sc2"><span class="kw2"><</span>/composite:implementation></span> </div></li></ol></div></div>
 
-<p>The <code><f:actionListener></code> elements on lines 4, 7, and 10
-refer to the <em>attached objects</em> declared on lines 2, 3 and 4 below.</p>
+<p></p>
 
-<div class="syntax"><div class="html4strict" style="font-family: monospace;"><ol><li class="li1"><div class="de1"><span class="sc2"><composite:interface <span class="kw3">name</span>=<span class="st0">"loginPanel"</span><span class="kw2">></span></span></div></li>
-<li class="li2"><div class="de2">  <span class="sc2"><composite:actionSource <span class="kw3">name</span>=<span class="st0">"loginEvent"</span> /<span class="kw2">></span></span></div></li>
-<li class="li1"><div class="de1">  <span class="sc2"><composite:actionSource <span class="kw3">name</span>=<span class="st0">"cancelEvent"</span> /<span class="kw2">></span></span></div></li>
-<li class="li2"><div class="de2">  <span class="sc2"><composite:actionSource <span class="kw3">name</span>=<span class="st0">"allEvents"</span> targets=<span class="st0">"loginEvent cancelEvent"</span> /<span class="kw2">></span></span></div></li>
-<li class="li1"><div class="de1"><span class="sc2"><span class="kw2"><</span>/composite:interface></span> </div></li></ol></div></div>
+<p>It is possible to declare that a single
+<code><composite:valueHolder></code> element should cause multiple
+components within the <code><composite:implementation></code>
+section to be the targets of an <em>attached object</em> in the
+using page.  Assuming the same <em>using page</em> excerpt as
+above, the revised <em>VDL view</em> is:</p>
 
-<p>Most of the concepts from example content from <a
-href="valueHolder.html"><code><composite:valueHolder></code></a>
-also applies in the case of
-<code><composite:actionSource></code>.</p>
+<div class="syntax"><div class="html4strict" style="font-family: monospace;"><ol><li class="li1"><div class="de1"><span class="sc2"><composite:interface></span></div></li>
+<li class="li2"><div class="de2">  <span class="sc2"><composite:valueHolder name=<span class="st0">"inputs"</span> targets=<span class="st0">"userid,password"</span> /<span class="kw2">></span></span></div></li>
+<li class="li1"><div class="de1"><span class="sc2"><span class="kw2"><</span>/composite:interface></span></div></li>
+<li class="li2"><div class="de2"> </div></li>
+<li class="li1"><div class="de1"><span class="sc2"><composite:implementation></span></div></li>
+<li class="li2"><div class="de2">  <span class="sc2"><h:inputText <span class="kw3">id</span>=<span class="st0">"userid"</span> /<span class="kw2">></span></span></div></li>
+<li class="li1"><div class="de1">  <span class="sc2"><h:inputText <span class="kw3">id</span>=<span class="st0">"password"</span> /<span class="kw2">></span></span></div></li>
+<li class="li2"><div class="de2"><span class="sc2"><span class="kw2"><</span>/composite:implementation></span> </div></li></ol></div></div>
+
+<p>In this case, the "targets" attribute on the
+<code><composite:valueHolder></code> element, on line 2 above,
+replaces the "name" attribute in the previous example.  "targets" is a
+list of ids of client ids (relative to the <em>top level component</em>)
+within the <code><composite:implementation></code> section.  In
+this case, "targets" refers to the <code><h:inputText></code>
+components on lines 6 and 7 above.</p>
 
 <p>Please see <code><<a
 href="interface.html">composite:interface</a>></code> for a usage
 example.</p>
 
-
 </div>]]>
         </description>
         <name>
-            actionSource
+            valueHolder
         </name>
         <body-content>
             JSP
@@ -1573,7 +1857,7 @@ example.</p>
   nested within a composite component.   If the "targets" attribute is not specified,
   this value also represents the component ID of the target component within the
   that the <code><composite:implementation></code>
-  ActionListener should be mapped to. 
+  ActionListener should be mapped to.  
 </p>
 </div>]]>
 
@@ -1595,11 +1879,11 @@ example.</p>
 
                 <![CDATA[
 <div class="changed_added_2_0">
-<p><span class="changed_modified_2_0_rev_a">If</span>  present, this must be a space (not tab) separated list of client
+<p>If present, this must be a space (not tab) separated list of client
 ids (relative to the <em>top level component</em>) of components within
 the <code><composite:implementation></code> section.  Space is
 used as the delimiter for compatibility with the IDREFS and NMTOKENS
-data types from the XML Schema.</p></div>]]>
+data types from the XML Schema.  </p></div>]]>
 
             </description>
             <name>
@@ -1629,87 +1913,16 @@ data types from the XML Schema.</p></div>]]>
             <deferred-value>
                 <type>boolean</type>
             </deferred-value>
-        </attribute>
-  </tag>
-
-<tag>
-        <description>
-
-            <![CDATA[
-<div class="changed_added_2_0">
-<p>Used within a <code><composite:interface></code> section,
-within any sub-element of that section, to include XML content not
-defined by this specification.  This element can be used to incorporate
-<a target="_" href="http://jcp.org/en/jsr/detail?id=276">JSR-276</a>
-metadata into a composite component.</p>
-
-</div>]]>
-        </description>
-        <name>
-            extension
-        </name>
-        <body-content>
-            JSP
-        </body-content>
+        </attribute>  
   </tag>
 
 
-    <tag>
-        <description>
-                <![CDATA[
-<div class="changed_added_2_0">
-
-<p>The presence of this tag in a
-<code><composite:implementation></code> section must cause the
-named facet to be taken from the facet map of the <em>top level
-component</em> and inserted as a facet child of the component in which
-this element is nested.</p>
 
-</div>]]>
 
-        </description>
-        <name>
-            insertFacet
-        </name>
-        <tag-class></tag-class>
-        <body-content>empty</body-content>
-        <attribute>
-            <description>
-                                <![CDATA[
-<div class="changed_added_2_0">
 
-<p>The name of the facet child on the <em>top level component</em> which
-must be inserted as a facet child of the component in which this element
-is nested.</p>
 
-</div>]]>
 
-            </description>
-            <name>name</name>
-            <required>true</required>
-            <deferred-value>
-                <type>java.lang.String</type>
-            </deferred-value>
-        </attribute>
-        <attribute>
-            <description>
-                <![CDATA[
-<div class="changed_added_2_0">
 
-<p>If <code>true</code>, and there is no such facet present on the top
-level component, a <code>TagException</code> must be thrown, containing
-the <code>Location</code>, the facet name, and a localized descriptive
-error message.</p>
 
-</div>]]>
-                
-            </description>
-            <name>required</name>
-            <required>false</required>
-            <deferred-value>
-                <type>boolean</type>
-            </deferred-value>
-        </attribute>
-    </tag>
 
 </taglib>
diff --git a/jsf-ri/conf/share/error-include.xhtml b/jsf-ri/conf/share/error-include.xhtml
index 296f589..bb20640 100644
--- a/jsf-ri/conf/share/error-include.xhtml
+++ b/jsf-ri/conf/share/error-include.xhtml
@@ -1,39 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
 
- Contributor(s):
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
 -->
+
 <!DOCTYPE html
       PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
@@ -101,4 +108,4 @@
     </div>
     </ui:composition>
 </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/jsf-ri/conf/share/facelet-dev-debug.xml b/jsf-ri/conf/share/facelet-dev-debug.xml
index f31e274..8ff4544 100644
--- a/jsf-ri/conf/share/facelet-dev-debug.xml
+++ b/jsf-ri/conf/share/facelet-dev-debug.xml
@@ -1,53 +1,61 @@
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
-
- This file incorporates work covered by the following copyright and
- permission notice:
-
- 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.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+
+    This file incorporates work covered by the following copyright and
+    permission notice:
+
+    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.
+
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
@@ -61,7 +69,7 @@ h2, h2 span { font-size: large; color: #339; }
 h2 a { text-decoration: none; color: #339; }
 .grayBox { padding: 8px; margin: 10px 0; border: 1px solid #CCC; background-color: #f9f9f9;  }
 #view { color: #090; font-weight: bold; font-size: medium; }
-#tree, #vars { display: none; }
+#tree, #vars, #state { display: none; }
 code { font-size: medium; }
 #tree dl { color: #006; }
 #tree dd { margin-top: 2px; margin-bottom: 2px; }
@@ -74,7 +82,7 @@ tbody tr td { padding: 10px 6px; }
 table caption { text-align: left; padding: 10px 0; font-size: large; }
 </style>
 <style type="text/css" media="print">
-#trace, #tree, #vars { display: block; }
+#trace, #tree, #vars, #state { display: block; }
 </style>
 <script language="javascript" type="text/javascript">
 function faceletstoggle(id) {
@@ -94,10 +102,16 @@ function faceletstoggle(id) {
 <body>
 <h1>Debug Output</h1>
 <div id="error" class="grayBox" style="border: 1px solid #090;">@@message@@</div>
+
 <h2><a href="#" onclick="faceletstoggle('tree'); return false;"><span id="treeOff">+</span><span id="treeOn" style="display: none;">-</span> Component Tree</a></h2>
 <div id="tree" class="grayBox"><code>@@tree@@</code></div>
+
 <h2><a href="#" onclick="faceletstoggle('vars'); return false;"><span id="varsOff">+</span><span id="varsOn" style="display: none;">-</span> Scoped Variables</a></h2>
 <div id="vars">@@vars@@</div>
+
+<h2><a href="#" onclick="faceletstoggle('state'); return false;"><span id="stateOff">+</span><span id="stateOn" style="display: none;">-</span> View State</a></h2>
+<div id="state">^^state^^</div>
+
 <div class="grayBox" style="text-align: right; color: #666;">@@now@@ - Generated by Mojara/Facelets</div>
 </body>
 </html>
diff --git a/jsf-ri/conf/share/facelet-dev-error.xml b/jsf-ri/conf/share/facelet-dev-error.xml
index 112a138..ab177f2 100644
--- a/jsf-ri/conf/share/facelet-dev-error.xml
+++ b/jsf-ri/conf/share/facelet-dev-error.xml
@@ -1,53 +1,61 @@
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
- Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
 
- Contributor(s):
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
 
- This file incorporates work covered by the following copyright and
- permission notice:
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
 
- 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
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
-     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.
+    This file incorporates work covered by the following copyright and
+    permission notice:
+
+    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.
+
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
diff --git a/jsf-ri/conf/share/facelets_jsf_core.taglib.xml b/jsf-ri/conf/share/facelets_jsf_core.taglib.xml
index 07a114f..88f268b 100644
--- a/jsf-ri/conf/share/facelets_jsf_core.taglib.xml
+++ b/jsf-ri/conf/share/facelets_jsf_core.taglib.xml
@@ -1,135 +1,222 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 2009 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2009-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
 
-<facelet-taglib xmlns="http://java.sun.com/xml/ns/javaee"
+<facelet-taglib xmlns="http://xmlns.jcp.org/xml/ns/javaee"
                 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-                xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facelettaglibrary_2_0.xsd"
-                version="2.0">
-    <description>
+                xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-facelettaglibrary_2_2.xsd"
+                version="2.2">
+    <description><![CDATA[
         The core JavaServer Faces custom actions that are independent of
         any particular RenderKit.
-    </description>
-    <namespace>http://java.sun.com/jsf/core</namespace>
+    ]]></description>
+    <namespace>http://xmlns.jcp.org/jsf/core</namespace>
     <tag>
-        <description>
+        <description><![CDATA[
 
-            <p>Register an ActionListener instance on the
+            <p>Register an ActionListener instance on the
             UIComponent associated with the closest parent UIComponent
-            custom action.</p>
-        </description>
+            custom action.</p>
+        ]]></description>
         <tag-name>actionListener</tag-name>
         <handler-class>com.sun.faces.facelets.tag.jsf.core.ActionListenerHandler</handler-class>
         <attribute>
-            <description>
+            <description><![CDATA[
                 Fully qualified Java class name of an ActionListener to be
                 created and registered.
-            </description>
+            ]]></description>
             <name>type</name>
             <required>false</required>
             <type>java.lang.String</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
                 Value binding expression that evaluates to an object that
                 implements javax.faces.event.ActionListener.
-            </description>
+            ]]></description>
             <name>binding</name>
             <required>false</required>
             <type>javax.faces.event.ActionListener</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
 
-                <p class="changed_added_2_0">If present, this attribute
+                <p class="changed_added_2_0">If present, this attribute
                 refers
                 to the value of one of the exposed attached objects within the
-                composite component inside of which this tag is nested.</p>
+                composite component inside of which this tag is nested.</p>
 
-            </description>
+            ]]></description>
             <name>for</name>
             <required>false</required>
             <type>java.lang.String</type>
         </attribute>
     </tag>
+
+    <tag>
+        <description><![CDATA[
+
+        <p class="changed_added_2_2">Add an attribute to the 
+            <code>passThroughAttributes Map</code> of the <code>UIComponent</code> 
+            associated with the closest parent <code>UIComponent</code> tag.</p>
+
+        ]]></description>
+        <tag-name>passThroughAttribute</tag-name>
+        <handler-class></handler-class>
+        <attribute>
+            <description><![CDATA[<p class="changed_added_2_2">The name
+            of the pass through attribute.  An attribute with this name,
+            and the corresponding value will appear on the outer most
+            markup element in the rendered markup for the component, as
+            specified in the overview for the HTML_BASIC RenderKit.  If
+            the name of this attribute conflicts with
+            <code>Renderer</code> specific attribute, the value
+            specified here supercedes the one that would otherwise be
+            rendered by the <code>Renderer</code></p>]]></description>
+            <name>name</name>
+            <required>true</required>
+            <type>java.lang.String</type>
+        </attribute>
+
+        <attribute>
+            <description><![CDATA[<p class="changed_added_2_2">The value
+            of the pass through attribute.  </p>]]></description>
+            <name>value</name>
+            <required>true</required>
+            <type>java.lang.Object</type>
+        </attribute>
+    </tag>
     <tag>
         <description>
+            <![CDATA[<p class="changed_added_2_2">Add attributes to the 
+            <code>passThroughAttributes Map</code> of the <code>UIComponent</code> 
+            associated with the closest parent <code>UIComponent</code> tag.
+            For each <code>Map.Entry</code> in the <code>Map<String, Object></code>
+            referenced by the value attribute of this tag, take the following action.
+            Call <code>component.getPassThroughAttributes().put(entry.getKey(), entry.getValue())</code>.</p>
+
+]]>
+        </description>
+        <tag-name>passThroughAttributes</tag-name>
+        <handler-class></handler-class>
+        <attribute>
+            <description><![CDATA[<p class="changed_added_2_2">An EL <code>ValueExpression</code> that evaluates to a <code>Map<String, Object></code>.</p>]]></description>
+            <name>value</name>
+            <required>true</required>
+            <type>java.util.Map</type>
+        </attribute>
+    </tag>
+
+
+    <tag>
+        <description><![CDATA[<p class="changed_added_2_2">
+            Add attributes to the UIComponent associated with the closest
+            parent UIComponent custom action.  
+            For each <code>Map.Entry</code> in the <code>Map<String, Object></code>
+            referenced by the value attribute of this tag, take the following action.
+            If <code>parent.getAttributes().containsKey(entry.getKey())</code> returns 
+            <code>true</code>, take no action for this entry.  Otherwise, if 
+            <code>entry.getValue()</code> is a <code>ValueExpression</code> call 
+            <code>parent.setValueExpression(entry.getKey(), entry.getValue())</code>.
+            Otherwise, call <code>parent.getAttributes.put(entry.getKey(), entry.getValue()).</code>
+            </p>
+
+]]>
+        </description>
+        <tag-name>attributes</tag-name>
+        <handler-class></handler-class>
+        <attribute>
+            <description><![CDATA[<p class="changed_added_2_2">An EL <code>ValueExpression</code> that evaluates to a <code>Map<String, Object></code>.</p>]]></description>
+            <name>value</name>
+            <required>true</required>
+            <type>java.util.Map</type>
+        </attribute>
+    </tag>
+
+    <tag>
+        <description><![CDATA[
             Add an attribute to the UIComponent associated with the closest
             parent UIComponent custom action.
-        </description>
+        ]]></description>
         <tag-name>attribute</tag-name>
         <handler-class>com.sun.faces.facelets.tag.jsf.core.AttributeHandler</handler-class>
         <attribute>
-            <description>
+            <description><![CDATA[
                 The name of the component attribute to be set.
-            </description>
+            ]]></description>
             <name>name</name>
             <type>java.lang.String</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
                 The value of the component attribute to be set.
-            </description>
+            ]]></description>
             <name>value</name>
             <type>java.lang.Object</type>
         </attribute>
     </tag>
     <tag>
-        <description>
+        <description><![CDATA[
             Register a DateTimeConverter instance on the UIComponent associated
             with the closest parent UIComponent custom action.
-        </description>
+        ]]></description>
         <tag-name>convertDateTime</tag-name>
         <converter>
             <converter-id>javax.faces.DateTime</converter-id>
             <handler-class>com.sun.faces.facelets.tag.jsf.core.ConvertDateTimeHandler</handler-class>
         </converter>
         <attribute>
-            <description>
+            <description><![CDATA[
                 Predefined formatting style which determines how the date
                 component of a date string is to be formatted and parsed.
                 Applied only if type is "date" or "both". Valid values
                 are "default", "short", "medium", "long", and "full".
                 Default value is "default".
-            </description>
+            ]]></description>
             <name>dateStyle</name>
             <type>java.lang.String</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
                 Locale whose predefined styles for dates and times are used
                 during formatting or parsing. If not specified, the Locale
                 returned by FacesContext.getViewRoot().getLocale() will be used.
@@ -138,286 +225,314 @@
                 the first argument to the constructor java.util.Locale(String
                 language, String country). The empty string is passed as the
                 second argument.
-            </description>
+            ]]></description>
             <name>locale</name>
             <required>false</required>
             <type>java.lang.Object</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
                 Custom formatting pattern which determines how the
                 date/time string should be formatted and parsed.
-            </description>
+            ]]></description>
             <name>pattern</name>
             <type>java.lang.String</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
                 Predefined formatting style which determines how the
                 time component of a date string is to be formatted and
                 parsed. Applied only if type is "time" or "both".
                 Valid values are "default", "short", "medium", "long",
                 and "full". Default value is "default".
-            </description>
+            ]]></description>
             <name>timeStyle</name>
             <type>java.lang.String</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
                 Time zone in which to interpret any time information in the date
                 String. Value must be either a VB expression that evaluates to
                 a java.util.TimeZone instance, or a String that is a timezone ID
                 as described in the javadocs for
                 java.util.TimeZone.getTimeZone().
-            </description>
+            ]]></description>
             <name>timeZone</name>
             <type>java.lang.Object</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
                 Specifies what contents the string value will be
                 formatted to include, or parsed expecting. Valid
                 values are "date", "time", and "both". Default
                 value is "date".
-            </description>
+            ]]></description>
             <name>type</name>
             <type>java.lang.String</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
                 A ValueExpression that evaluates to an instance of
                 javax.faces.convert.DateTimeConverter.
-            </description>
+            ]]></description>
             <name>binding</name>
             <type>javax.faces.convert.DateTimeConverter</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
 
-                <p class="changed_added_2_0">If present, this attribute
+                <p class="changed_added_2_0">If present, this attribute
                 refers
                 to the value of one of the exposed attached objects within the
-                composite component inside of which this tag is nested.</p>
+                composite component inside of which this tag is nested.</p>
 
-            </description>
+            ]]></description>
             <name>for</name>
             <required>false</required>
             <type>java.lang.String</type>
         </attribute>
     </tag>
     <tag>
-        <description>
+        <description><![CDATA[
             Register a NumberConverter instance on the UIComponent associated
             with the closest parent UIComponent custom action.
-        </description>
+        ]]></description>
         <tag-name>convertNumber</tag-name>
          <converter>
             <converter-id>javax.faces.Number</converter-id>
             <handler-class>com.sun.faces.facelets.tag.jsf.core.ConvertNumberHandler</handler-class>
         </converter>
         <attribute>
-            <description>
+            <description><![CDATA[
                 ISO 4217 currency code, applied only when
                 formatting currencies.
-            </description>
+            ]]></description>
             <name>currencyCode</name>
             <type>java.lang.String</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
                 Currency symbol, applied only when formatting
                 currencies.
-            </description>
+            ]]></description>
             <name>currencySymbol</name>
             <type>java.lang.String</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
                 Flag specifying whether formatted output will
                 contain grouping separators. Expressions must
                 evaluate to a boolean. Default value
                 is true.
-            </description>
+            ]]></description>
             <name>groupingUsed</name>
             <type>java.lang.Boolean</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
                 Flag specifying whether only the integer part
                 of the value will be formatted and parsed.
                 Expressions must evaluate to a boolean.
                 Default value is false.
-            </description>
+            ]]></description>
             <name>integerOnly</name>
             <type>java.lang.Boolean</type>
         </attribute>
         <attribute>
-            <description><p>
+            <description><![CDATA[<p>
 
-                <span class="changed_modified_2_0">Locale</span>
+                <span class="changed_modified_2_0">Locale</span>
                 whose
                 predefined styles for numbers are used during formatting
                 and parsing. If not specified, the Locale returned by
                 FacesContext.getViewRoot().getLocale() will be used.
-                Expressions must evaluate to a java.util.Locale <span
-                class="changed_modified_2_0">or a String that is valid to
+                Expressions must evaluate to a java.util.Locale <span
+                class="changed_modified_2_0">or a String that is valid to
                 pass as the first argument to the constructor
                 java.util.Locale(String language, String country). The
-                empty string is passed as the second argument.</span>
+                empty string is passed as the second argument.</span>
 
-                </p></description>
+                </p>]]></description>
             <name>locale</name>
             <type>java.lang.Object</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
                 Maximum number of digits that will be formatted
                 in the fractional portion of the output. Expressions
                 must evaluate to an int.
-            </description>
+            ]]></description>
             <name>maxFractionDigits</name>
             <type>java.lang.Integer</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
                 Maximum number of digits that will be formatted
                 in the integer portion of the output. Expressions
                 must evaluate to an int.
-            </description>
+            ]]></description>
             <name>maxIntegerDigits</name>
             <type>java.lang.Integer</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
                 Minimum number of digits that will be formatted
                 in the fractional portion of the output. Expressions
                 must evaluate to an int.
-            </description>
+            ]]></description>
             <name>minFractionDigits</name>
             <type>java.lang.Integer</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
                 Minimum number of digits that will be formatted
                 in the integer portion of the output. Expressions
                 must evaluate to an int.
-            </description>
+            ]]></description>
             <name>minIntegerDigits</name>
             <type>java.lang.Integer</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
                 Custom formatting pattern which determins how the
                 number string should be formatted and parsed.
-            </description>
+            ]]></description>
             <name>pattern</name>
             <type>java.lang.String</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
                 Specifies how the number string will be formatted
                 and parsed. Valid values are "number", "currency",
                 and "percent". Default value is "number".
-            </description>
+            ]]></description>
             <name>type</name>
             <type>java.lang.String</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
                 A ValueExpression that evaluates to an instance of
                 javax.faces.convert.NumberConverter.
-            </description>
+            ]]></description>
             <name>binding</name>
             <type>javax.faces.convert.NumberConverter</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
 
-                <p class="changed_added_2_0">If present, this attribute
+                <p class="changed_added_2_0">If present, this attribute
                 refers
                 to the value of one of the exposed attached objects within the
-                composite component inside of which this tag is nested.</p>
+                composite component inside of which this tag is nested.</p>
 
-            </description>
+            ]]></description>
             <name>for</name>
             <required>false</required>
             <type>java.lang.String</type>
         </attribute>
     </tag>
     <tag>
-        <description>
+        <description><![CDATA[
             Register a named Converter instance on the UIComponent
             associated with the closest parent UIComponent custom action.
-        </description>
+        ]]></description>
         <tag-name>converter</tag-name>
         <handler-class>com.sun.faces.facelets.tag.jsf.core.ConvertDelegateHandler</handler-class>
         <attribute>
-            <description>
+            <description><![CDATA[
                 Converter identifier of the Converter instance to be
                 created and registered.
-            </description>
+            ]]></description>
             <name>converterId</name>
             <type>java.lang.String</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
                 A ValueExpression that evaluates to an object that
                 implements javax.faces.convert.Converter.
-            </description>
+            ]]></description>
             <name>binding</name>
             <type>javax.faces.convert.Converter</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
 
-                <p class="changed_added_2_0">If present, this attribute
+                <p class="changed_added_2_0">If present, this attribute
                 refers
                 to the value of one of the exposed attached objects within the
-                composite component inside of which this tag is nested.</p>
+                composite component inside of which this tag is nested.</p>
 
-            </description>
+            ]]></description>
             <name>for</name>
             <required>false</required>
             <type>java.lang.String</type>
         </attribute>
     </tag>
     <tag>
-        <description>
+        <description><![CDATA[
 
-        <p class="changed_added_2_0">Register an AjaxBehavior instance
+        <p class="changed_added_2_0">Register an AjaxBehavior instance
         on one or more UIComponents implementing the
         ClientBehaviorHolder interface.  This tag may be nested witin a
         single component (enabling Ajax for a single component), or it
         may be "wrapped" around multiple components (enabling Ajax for
-        many components).</p>
+        many components).</p>
 
-        <p class="changed_added_2_0">The String value for ids
+        <p class="changed_added_2_0">The String value for ids
         specified for execute and render may be specified as a search
         expression as outlined in the JavaDocs for
-        <code>UIComponent.findComponent()</code>. The implementation
+        <code>UIComponent.findComponent()</code>. The implementation
         must resolve these ids as specified for
-        <code>UIComponent.findComponent()</code>.  
-        </p>
+        <code>UIComponent.findComponent()</code>.  
+        </p>
 
-        </description>
+        ]]></description>
         <tag-name>ajax</tag-name>
         <handler-class>com.sun.faces.facelets.tag.jsf.core.AjaxHandler</handler-class>
         <attribute>
-            <description>
-                <p class="changed_added_2_0">A value of "true" indicates
+            <description><![CDATA[
+                <p class="changed_added_2_0">A value of "true" indicates
                 the
                 AjaxBehavior should not be rendered. A value of "false"
                 indicates
-                the AjaxBehavior should be rendered. "false" is the default.</p>
+                the AjaxBehavior should be rendered. "false" is the default.</p>
 
-            </description>
+            ]]></description>
             <name>disabled</name>
             <required>false</required>
             <type>java.lang.Boolean</type>
         </attribute>
         <attribute>
-            <description>
-                <p class="changed_added_2_0">A String identifying the type
+          <description><![CDATA[ <p class="changed_added_2_2">If less than
+          <em>delay</em> milliseconds elapses between calls to
+          <em>request()</em> only the most recent one is sent and all other
+          requests are discarded. If this option is not specified, or if the
+          value of <em>delay</em> is the literal string <code>'none'</code>
+          without the quotes, no delay is used. </p>
+          
+          ]]></description>
+          <name>delay</name>
+          <required>false</required>
+          <type>java.lang.String</type>
+        </attribute>
+        <attribute>
+          <description><![CDATA[ <p class="changed_added_2_2">If
+          <code>true</code>, indicate that this particular Ajax transaction
+          is a value reset transaction.  This will cause
+          <code>resetValue()</code> to be called on any
+          <code>EditableValueHolder</code> instances encountered as a result
+          of this ajax transaction.  If not specified, or the value is
+          <code>false</code>, no such indication is made.</p>
+          
+          ]]></description>
+          <name>resetValues</name>
+          <required>false</required>
+          <type>java.lang.Boolean</type>
+        </attribute>
+        
+        <attribute>
+            <description><![CDATA[
+                <p class="changed_added_2_0">A String identifying the type
                 of event
                 the Ajax action will apply to. If specified, it must be one of
                 the
@@ -432,17 +547,17 @@
                 event is determined for the component. The DOM event name is the
                 actual DOM
                 event name (for example: "click") as opposed to (for example:
-                "onclick").</p>
+                "onclick").</p>
 
-            </description>
+            ]]></description>
             <name>event</name>
             <required>false</required>
             <type>java.lang.String</type>
         </attribute>
         <attribute>
-            <description>
-                <p class="changed_added_2_0">Evaluates to
-                Collection<String>.  This is a space separated
+            <description><![CDATA[
+                <p class="changed_added_2_0">Evaluates to
+                Collection<String>.  This is a space separated
                 list of client ids of components that will participate
                 in the "execute" portion of the Request Processing
                 Lifecycle. If a literal is specified the identifiers
@@ -452,34 +567,31 @@
                 "@this" is assumed.  <span
                 class="changed_modified_2_0_rev_a">For example,
                 <code>@this clientIdOne
-                clientIdTwo</code>.</span></p>
-
-            </description>
+                clientIdTwo</code>.</span></p>
+            ]]></description>
             <name>execute</name>
             <required>false</required>
             <type>java.util.Collection</type>
         </attribute>
         <attribute>
-            <description>
-                <p class="changed_added_2_0">If "true" behavior events
+            <description><![CDATA[
+                <p class="changed_added_2_0">If "true" behavior events
                 generated from this behavior
                 are broadcast during Apply Request Values phase. Otherwise, the
                 events will be
-                broadcast during Invoke Aplications phase</p>
-
-            </description>
+                broadcast during Invoke Aplications phase</p>
+            ]]></description>
             <name>immediate</name>
             <required>false</required>
             <type>java.lang.Boolean</type>
         </attribute>
         <attribute>
-            <description>
-                <p class="changed_added_2_0">Method expression referencing
+            <description><![CDATA[
+                <p class="changed_added_2_0">Method expression referencing
                 a method
                 that will be called when an AjaxBehaviorEvent has been
-                broadcast for the listener.</p>
-
-            </description>
+                broadcast for the listener.</p>
+            ]]></description>
             <name>listener</name>
             <required>false</required>
             <method-signature>public void
@@ -488,29 +600,28 @@
             </method-signature>
         </attribute>
         <attribute>
-            <description>
-                <p class="changed_added_2_0">The name of the JavaScript
-                function that will handle UI events.</p>
-
-            </description>
+            <description><![CDATA[
+                <p class="changed_added_2_0">The name of the JavaScript
+                function that will handle UI events.</p>
+           ]]></description>
             <name>onevent</name>
             <required>false</required>
             <type>java.lang.String</type>
         </attribute>
         <attribute>
-            <description>
-                <p class="changed_added_2_0">The name of the JavaScript
-                function that will handle errors.</p>
+            <description><![CDATA[
+                <p class="changed_added_2_0">The name of the JavaScript
+                function that will handle errors.</p>
 
-            </description>
+            ]]></description>
             <name>onerror</name>
             <required>false</required>
             <type>java.lang.String</type>
         </attribute>
         <attribute>
-            <description>
-                <p class="changed_added_2_0">Evaluates to
-                Collection<String>.  This is a space separated
+            <description><![CDATA[
+                <p class="changed_added_2_0">Evaluates to
+                Collection<String>.  This is a space separated
                 list of client ids of components that will participate
                 in the "render" portion of the Request Processing
                 Lifecycle. If a literal is specified the identifiers
@@ -520,115 +631,114 @@
                 "@none" is assumed.  <span
                 class="changed_modified_2_0_rev_a">For example,
                 <code>@this clientIdOne
-                clientIdTwo</code>.</span></p>
-
-            </description>
+                clientIdTwo</code>.</span></p>
+            ]]></description>
             <name>render</name>
             <required>false</required>
             <type>java.util.Collection</type>
         </attribute>
     </tag>
     <tag>
-        <description>
+        <description><![CDATA[
 
-            <p class="changed_added_2_0">Allow JSF page authors to
-            install <code>ComponentSystemEventListener</code>
+            <p class="changed_added_2_0">Allow JSF page authors to
+            install <code>ComponentSystemEventListener</code>
             instances
-            on a component in a page.</p>
+            on a component in a page.</p>
 
-            <div class="changed_added_2_0">
+            <div class="changed_added_2_0">
 
-            <p></p>
+            <p></p>
 
-            </div>
+            </div>
 
-        </description>
+        ]]></description>
         <tag-name>event</tag-name>
         <handler-class>com.sun.faces.facelets.tag.jsf.core.EventHandler</handler-class>
         <attribute>
-            <description>
+            <description><![CDATA[
 
-                <p class="changed_added_2_0">Name of the event for which
+                <p class="changed_added_2_0">Name of the event for which
                 to install a listener. The following table lists the
                 valid values for this attribute, and the corresponding
                 event type for which the listener action is
-                registered.</p>
+                registered.</p>
 
-                <table border="1">
-                <tr>
+                <table border="1">
+                <tr>
 
-                <th>value for "<code>type</code>" tag
-                attribute</th>
+                <th>value for "<code>type</code>" tag
+                attribute</th>
 
-                <th>Type of event sent to listener method
-                </th>
+                <th>Type of event sent to listener method
+                </th>
 
-                </tr>
+                </tr>
 
-                <tr>
+                <tr>
 
-                <td>preRenderComponent
-                </td>
+                <td>preRenderComponent
+                </td>
 
-                <td>javax.faces.event.PreRenderComponentEvent
-                </td>
+                <td>javax.faces.event.PreRenderComponentEvent
+                </td>
 
-                </tr>
+                </tr>
 
-                <tr>
+                <tr>
 
-                <td>postAddToView
-                </td>
+                <td>postAddToView
+                </td>
 
-                <td>javax.faces.event.PostAddToViewEvent
-                </td>
+                <td>javax.faces.event.PostAddToViewEvent
+                </td>
 
-                </tr>
+                </tr>
 
-                <tr>
+                <tr>
 
-                <td>preValidate
-                </td>
+                <td>preValidate
+                </td>
 
-                <td>javax.faces.event.PreValidateEvent
-                </td>
+                <td>javax.faces.event.PreValidateEvent
+                </td>
 
-                </tr>
+                </tr>
 
-                <tr>
+                <tr>
 
-                <td>postValidate
-                </td>
+                <td>postValidate
+                </td>
 
-                <td>javax.faces.event.PostValidateEvent
-                </td>
+                <td>javax.faces.event.PostValidateEvent
+                </td>
 
-                </tr>
+                </tr>
 
-                </table>
+                </table>
 
-                <div class="changed_added_2_0">
+                <div class="changed_added_2_0">
 
-                <p>In addition to these values, the fully qualified class
+                <p>In addition to these values, the fully qualified class
                 name of any
                 java class that extends
-                <code>javax.faces.event.ComponentSystemEvent</code>
+                <code>javax.faces.event.ComponentSystemEvent</code>
                 may be used as the
-                value of the "type" attribute.</p>
+                value of the "type" attribute.</p>
 
-                <p>Also, the <code>@javax.faces.event.NamedEvent</code>
+                <p>Also, the <code>@javax.faces.event.NamedEvent</code>
                 annotation may
                 be attached to any java class that extends
-                <code>javax.faces.event.ComponentSystemEvent</code>.
+                <code>javax.faces.event.ComponentSystemEvent</code>.
                 This enables that
                 event to be referenced from this attribute, as descibed in the
                 javadocs
-                for <code>@NamedEvent</code>.</p>
+                for <code>@NamedEvent</code>.</p>
 
-                </div>
+                </div>
 
 
-            </description>
+            ]]></description>
             <name>type</name>
             <required>true</required>
             <type>java.lang.String</type>
@@ -644,9 +754,7 @@
               the method has no way of easily knowing where the event
               came from, but this can be useful in cases where a
               notification is needed that "an event happened".</p>
-
-              ]]>              
-            </description>
+            ]]></description>
             <name>listener</name>
             <required>true</required>
             <method-signature>public void
@@ -656,151 +764,151 @@
         </attribute>
     </tag>
     <tag>
-        <description>
+        <description><![CDATA[
 
-            <p>Register a named facet on the UIComponent associated with
-            the closest parent UIComponent custom action.</p>
+            <p>Register a named facet on the UIComponent associated with
+            the closest parent UIComponent custom action.</p>
 
 
-        </description>
+        ]]></description>
         <tag-name>facet</tag-name>
         <handler-class>com.sun.faces.facelets.tag.jsf.core.FacetHandler</handler-class>
         <attribute>
-            <description>
+            <description><![CDATA[
                 Name of the facet to be created.
-            </description>
+            ]]></description>
             <name>name</name>
             <required>true</required>
             <type>java.lang.String</type>
         </attribute>
     </tag>
     <tag>
-        <description>
+        <description><![CDATA[
 
-            <p class="changed_added_2_0">Declare the metadata
+            <p class="changed_added_2_0">Declare the metadata
             facet for this view. This must be a child of the
-            <code>&lt;f:view&gt;</code>. This tag
+            <code>&lt;f:view&gt;</code>. This tag
             must reside within the top level XHTML file for the given
             viewId<span class="changed_modified_2_0_rev_a">, or in a
             template client, but</span> not in a template. The
             implementation must insure that the direct child of the
-            facet is a <code>UIPanel</code>, even if there
+            facet is a <code>UIPanel</code>, even if there
             is only one child of the facet. The implementation must set
-            the id of the <code>UIPanel</code> to be the
+            the id of the <code>UIPanel</code> to be the
             value of the
-            <code>UIViewRoot.METADATA_FACET_NAME</code>
-            symbolic constant.</p>
+            <code>UIViewRoot.METADATA_FACET_NAME</code>
+            symbolic constant.</p>
 
-            <div class="changed_added_2_0">
+            <div class="changed_added_2_0">
 
-            <p>The implementation must allow templating for this element
+            <p>The implementation must allow templating for this element
             according
-            to the following pattern.</p>
-
-            <p>template client XHTML view, view01.xhtml</p>
-
-            </div>
-
-            <div class="html4strict" style="font-family: monospace;"><ol><li
-            class="li1"><div class="de1"><span class="sc2">&lt;ui:composition
-            template=<span class="st0">&quot;template.xhtml&quot;</span><span
-            class="kw2">&gt;</span></span></div></li>
-            <li class="li2"><div class="de2">&nbsp; &nbsp;
-            <span class="sc2">&lt;ui:define <span class="kw3">name</span>=<span
-            class="st0">&quot;metadata&quot;</span><span
-            class="kw2">&gt;</span></span></div></li>
-            <li class="li1"><div class="de1">&nbsp; &nbsp;
-            &nbsp; <span class="sc2">&lt;f:metadata&gt;</span></div></li>
-            <li class="li2"><div class="de2">&nbsp; &nbsp;
-            &nbsp; &nbsp; <span class="sc2">&lt;f:viewParam
-            <span class="kw3">name</span>=<span class="st0">&quot;id&quot;</span>/<span
-            class="kw2">&gt;</span></span></div></li>
-            <li class="li1"><div class="de1">&nbsp; &nbsp;
-            &nbsp; <span class="sc2"><span class="kw2">&lt;</span>/f:metadata&gt;</span></div></li>
-            <li class="li2"><div class="de2">&nbsp; &nbsp;
-            <span class="sc2"><span class="kw2">&lt;</span>/ui:define&gt;</span></div></li>
-            <li class="li1"><div class="de1">&nbsp; &nbsp;
-            <span class="sc2">&lt;ui:define <span class="kw3">name</span>=<span
-            class="st0">&quot;content&quot;</span><span
-            class="kw2">&gt;</span></span></div></li>
-            <li class="li2"><div class="de2">&nbsp; &nbsp;
-            &nbsp; &nbsp; <span class="sc2"><span class="kw2">&lt;h1&gt;</span></span>The
-            big news stories of the day<span class="sc2"><span
-            class="kw2">&lt;/h1&gt;</span></span></div></li>
-            <li class="li1"><div class="de1">&nbsp; &nbsp;
-            <span class="sc2"><span class="kw2">&lt;</span>/ui:define&gt;</span></div></li>
-            <li class="li2"><div class="de2"><span class="sc2"><span
-            class="kw2">&lt;</span>/ui:composition&gt;</span>
-            </div></li></ol></div></div>
-
-            <div class="changed_added_2_0">
-            <p>Note line 4. The page author must ensure that the
-            <code>&lt;f:metadata&gt;</code> element does not
+            to the following pattern.</p>
+
+            <p>template client XHTML view, view01.xhtml</p>
+
+            </div>
+
+            <div class="html4strict" style="font-family: monospace;"><ol><li
+            class="li1"><div class="de1"><span class="sc2">&lt;ui:composition
+            template=<span class="st0">&quot;template.xhtml&quot;</span><span
+            class="kw2">&gt;</span></span></div></li>
+            <li class="li2"><div class="de2">&nbsp; &nbsp;
+            <span class="sc2">&lt;ui:define <span class="kw3">name</span>=<span
+            class="st0">&quot;metadata&quot;</span><span
+            class="kw2">&gt;</span></span></div></li>
+            <li class="li1"><div class="de1">&nbsp; &nbsp;
+            &nbsp; <span class="sc2">&lt;f:metadata&gt;</span></div></li>
+            <li class="li2"><div class="de2">&nbsp; &nbsp;
+            &nbsp; &nbsp; <span class="sc2">&lt;f:viewParam
+            <span class="kw3">name</span>=<span class="st0">&quot;id&quot;</span>/<span
+            class="kw2">&gt;</span></span></div></li>
+            <li class="li1"><div class="de1">&nbsp; &nbsp;
+            &nbsp; <span class="sc2"><span class="kw2">&lt;</span>/f:metadata&gt;</span></div></li>
+            <li class="li2"><div class="de2">&nbsp; &nbsp;
+            <span class="sc2"><span class="kw2">&lt;</span>/ui:define&gt;</span></div></li>
+            <li class="li1"><div class="de1">&nbsp; &nbsp;
+            <span class="sc2">&lt;ui:define <span class="kw3">name</span>=<span
+            class="st0">&quot;content&quot;</span><span
+            class="kw2">&gt;</span></span></div></li>
+            <li class="li2"><div class="de2">&nbsp; &nbsp;
+            &nbsp; &nbsp; <span class="sc2"><span class="kw2">&lt;h1&gt;</span></span>The
+            big news stories of the day<span class="sc2"><span
+            class="kw2">&lt;/h1&gt;</span></span></div></li>
+            <li class="li1"><div class="de1">&nbsp; &nbsp;
+            <span class="sc2"><span class="kw2">&lt;</span>/ui:define&gt;</span></div></li>
+            <li class="li2"><div class="de2"><span class="sc2"><span
+            class="kw2">&lt;</span>/ui:composition&gt;</span>
+            </div></li></ol></div></div>
+
+            <div class="changed_added_2_0">
+            <p>Note line 4. The page author must ensure that the
+            <code>&lt;f:metadata&gt;</code> element does not
             appear on a template or
             included page. It must reside on the root page that corresponds to
             the
-            viewId.</p>
-
-            <p>The template page, template.xhtml</p>
-
-            </div>
-
-
-            <div class="html4strict" style="font-family: monospace;"><ol><li
-            class="li1"><div class="de1"><span class="sc2"><span
-            class="kw2">&lt;html</span> xmlns=<span class="st0">&quot;http://www.w3.org/1999/xhtml&quot;</span></div></li>
-            <li class="li2"><div class="de2">&nbsp; &nbsp;
-            &nbsp; xmlns:ui=<span class="st0">&quot;http://java.sun.com/jsf/facelets&quot;</span></div></li>
-            <li class="li1"><div class="de1">&nbsp; &nbsp;
-            &nbsp; xmlns:f=<span class="st0">&quot;http://java.sun.com/jsf/core&quot;</span></div></li>
-            <li class="li2"><div class="de2">&nbsp; &nbsp;
-            &nbsp; xml:<span class="kw3">lang</span>=<span
-            class="st0">&quot;en&quot;</span> <span
-            class="kw3">lang</span>=<span class="st0">&quot;en&quot;</span><span
-            class="kw2">&gt;</span></span></div></li>
-            <li class="li1"><div class="de1">&nbsp;</div></li>
-            <li class="li2"><div class="de2"><span class="sc2"><span
-            class="kw2">&lt;body&gt;</span></span></div></li>
-            <li class="li1"><div class="de1"><span class="sc2">&lt;f:view&gt;</span></div></li>
-            <li class="li2"><div class="de2">&nbsp; &nbsp;
-            </div></li>
-            <li class="li1"><div class="de1">&nbsp; &nbsp;
-            &nbsp; &nbsp; <span class="sc2">&lt;ui:insert <span
-            class="kw3">name</span>=<span class="st0">&quot;metadata&quot;</span>/<span
-            class="kw2">&gt;</span></span></div></li>
-            <li class="li2"><div class="de2">&nbsp; &nbsp;</div></li>
-            <li class="li1"><div class="de1">&nbsp; &nbsp;
-            <span class="sc2"><span class="kw2">&lt;div</span>
-            <span class="kw3">id</span>=<span class="st0">&quot;container&quot;</span><span
-            class="kw2">&gt;</span></span></div></li>
-            <li class="li2"><div class="de2">&nbsp; &nbsp;
-            &nbsp; &nbsp; <span class="sc2">&lt;ui:insert <span
-            class="kw3">name</span>=<span class="st0">&quot;content&quot;</span>/<span
-            class="kw2">&gt;</span></span></div></li>
-            <li class="li1"><div class="de1">&nbsp; &nbsp;
-            <span class="sc2"><span class="kw2">&lt;/div&gt;</span></span></div></li>
-            <li class="li2"><div class="de2"><span class="sc2"><span
-            class="kw2">&lt;</span>/f:view&gt;</span></div></li>
-            <li class="li1"><div class="de1"><span class="sc2"><span
-            class="kw2">&lt;/body&gt;</span></span></div></li>
-            <li class="li2"><div class="de2"><span class="sc2"><span
-            class="kw2">&lt;/html&gt;</span></span> </div></li></ol></div></div>
-
-            <p>The page author is not <em>required</em> to use
+            viewId.</p>
+
+            <p>The template page, template.xhtml</p>
+
+            </div>
+
+
+            <div class="html4strict" style="font-family: monospace;"><ol><li
+            class="li1"><div class="de1"><span class="sc2"><span
+            class="kw2">&lt;html</span> xmlns=<span class="st0">&quot;http://www.w3.org/1999/xhtml&quot;</span></div></li>
+            <li class="li2"><div class="de2">&nbsp; &nbsp;
+            &nbsp; xmlns:ui=<span class="st0">&quot;http://xmlns.jcp.org/jsf/facelets&quot;</span></div></li>
+            <li class="li1"><div class="de1">&nbsp; &nbsp;
+            &nbsp; xmlns:f=<span class="st0">&quot;http://xmlns.jcp.org/jsf/core&quot;</span></div></li>
+            <li class="li2"><div class="de2">&nbsp; &nbsp;
+            &nbsp; xml:<span class="kw3">lang</span>=<span
+            class="st0">&quot;en&quot;</span> <span
+            class="kw3">lang</span>=<span class="st0">&quot;en&quot;</span><span
+            class="kw2">&gt;</span></span></div></li>
+            <li class="li1"><div class="de1">&nbsp;</div></li>
+            <li class="li2"><div class="de2"><span class="sc2"><span
+            class="kw2">&lt;body&gt;</span></span></div></li>
+            <li class="li1"><div class="de1"><span class="sc2">&lt;f:view&gt;</span></div></li>
+            <li class="li2"><div class="de2">&nbsp; &nbsp;
+            </div></li>
+            <li class="li1"><div class="de1">&nbsp; &nbsp;
+            &nbsp; &nbsp; <span class="sc2">&lt;ui:insert <span
+            class="kw3">name</span>=<span class="st0">&quot;metadata&quot;</span>/<span
+            class="kw2">&gt;</span></span></div></li>
+            <li class="li2"><div class="de2">&nbsp; &nbsp;</div></li>
+            <li class="li1"><div class="de1">&nbsp; &nbsp;
+            <span class="sc2"><span class="kw2">&lt;div</span>
+            <span class="kw3">id</span>=<span class="st0">&quot;container&quot;</span><span
+            class="kw2">&gt;</span></span></div></li>
+            <li class="li2"><div class="de2">&nbsp; &nbsp;
+            &nbsp; &nbsp; <span class="sc2">&lt;ui:insert <span
+            class="kw3">name</span>=<span class="st0">&quot;content&quot;</span>/<span
+            class="kw2">&gt;</span></span></div></li>
+            <li class="li1"><div class="de1">&nbsp; &nbsp;
+            <span class="sc2"><span class="kw2">&lt;/div&gt;</span></span></div></li>
+            <li class="li2"><div class="de2"><span class="sc2"><span
+            class="kw2">&lt;</span>/f:view&gt;</span></div></li>
+            <li class="li1"><div class="de1"><span class="sc2"><span
+            class="kw2">&lt;/body&gt;</span></span></div></li>
+            <li class="li2"><div class="de2"><span class="sc2"><span
+            class="kw2">&lt;/html&gt;</span></span> </div></li></ol></div></div>
+
+            <p>The page author is not <em>required</em> to use
             templating, but if
             they do, it must be done as shown above, (or with
-            <code>&lt;ui:include&gt;</code> in a similar
-            manner).</p>
+            <code>&lt;ui:include&gt;</code> in a similar
+            manner).</p>
 
-            </div>
+            </div>
 
 
-        </description>
+        ]]></description>
         <tag-name>metadata</tag-name>
         <handler-class>com.sun.faces.facelets.tag.jsf.core.MetadataHandler</handler-class>
     </tag>
     <tag>
-        <description>
+        <description><![CDATA[
             Load a resource bundle localized for the Locale of the current
             view, and expose it as a java.util.Map in the request attributes
             of the current request under the key specified by the value of the
@@ -810,168 +918,167 @@
             the key being looked up in the Map, instead of a
             MissingResourceException being thrown. If the ResourceBundle does
             not exist, a JspException must be thrown.
-        </description>
+        ]]></description>
         <tag-name>loadBundle</tag-name>
         <handler-class>com.sun.faces.facelets.tag.jsf.core.LoadBundleHandler</handler-class>
         <attribute>
-            <description>
+            <description><![CDATA[
                 Base name of the resource bundle
                 to be loaded.
-            </description>
+            ]]></description>
             <name>basename</name>
             <type>java.lang.String</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
                 Name of a request scope attribute under which
                 the resource bundle will be exposed as a Map.
-            </description>
+            ]]></description>
             <name>var</name>
             <required>true</required>
             <type>java.lang.String</type>
         </attribute>
     </tag>
     <tag>
-        <description>
+        <description><![CDATA[
             Add a child UIParameter component to the UIComponent
             associated with the closest parent UIComponent custom
             action.
-        </description>
+        ]]></description>
         <tag-name>param</tag-name>
         <component>
             <component-type>javax.faces.Parameter</component-type>
             <renderer-type/>
         </component>
         <attribute>
-            <description>
+            <description><![CDATA[
                 ValueExpression to a backing bean
                 property bound to the component instance for
                 the UIComponent created by this custom action.
-            </description>
+            ]]></description>
             <name>binding</name>
             <type>javax.faces.component.UIComponent</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
                 Component identifier of the UIParameter component
                 to be created.
-            </description>
+            ]]></description>
             <name>id</name>
             <required>false</required>
             <type>java.lang.String</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
                 Name of the parameter to be created.
-            </description>
+            ]]></description>
             <name>name</name>
             <type>java.lang.String</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
                 Value of the parameter to be set.
-            </description>
+            ]]></description>
             <name>value</name>
             <type>java.lang.String</type>
         </attribute>
         <attribute>
             <description><![CDATA[
 
-                <p>Flag enabling or disabling the inclusion of the
-                parameter.  <span
-                class="changed_modified_2_0_rev_a">This flag is
+                <p>Flag enabling or disabling the inclusion of the
+                parameter.  <span
+                class="changed_modified_2_0_rev_a">This flag is
                 consulted by renderers that consider the
-                <code>UIParameter</code> component associated with this
-                <code><f:param></code> during their rendering.
-                Such renderers include <code>javax.faces.Output
-                javax.faces.Link</code> and
-                <code>javax.faces.OutcomeTarget
-                javax.faces.Link</code>.</span></p>
+                <code>UIParameter</code> component associated with this
+                <code><f:param></code> during their rendering.
+                Such renderers include <code>javax.faces.Output
+                javax.faces.Link</code> and
+                <code>javax.faces.OutcomeTarget
+                javax.faces.Link</code>.</span></p>
 
 
-            ]]>
-            </description>
+            ]]></description>
             <name>disable</name>
             <type>boolean</type>
         </attribute>
     </tag>
     <tag>
-        <description>
+        <description><![CDATA[
 
-            <p class="changed_added_2_0">Used inside of the metada facet
-            of a view, this tag causes a <a target="_"
-            href="../../../javadocs/javax/faces/component/UIViewParameter.html">UIViewParameter</a>
+            <p class="changed_added_2_0">Used inside of the metada facet
+            of a view, this tag causes a <a target="_"
+            href="../../../javadocs/javax/faces/component/UIViewParameter.html">UIViewParameter</a>
             to be attached as metadata for the current view. Because
-            <code>UIViewParameter</code> extends <code>UIInput</code>
+            <code>UIViewParameter</code> extends <code>UIInput</code>
             all of the attributes and nested child content for any
-            <code>UIInput</code> tags are valid on this tag as well.</p>
+            <code>UIInput</code> tags are valid on this tag as well.</p>
 
-        </description>
+        ]]></description>
         <tag-name>viewParam</tag-name>
         <component>
             <component-type>javax.faces.Parameter</component-type>
             <renderer-type/>
         </component>
         <attribute>
-            <description>
+            <description><![CDATA[
                 The name of the request parameter from which the value for this component
                 is retrieved on an initial request or to override the stored value on a
                 postback.
-            </description>
+            ]]></description>
             <name>name</name>
             <required>true</required>
             <type>java.lang.String</type>
         </attribute>
 
         <attribute>
-            <description>
+            <description><![CDATA[
                 Converter instance registered with this component.
-            </description>
+            ]]></description>
             <name>converter</name>
             <required>false</required>
             <type>javax.faces.convert.Converter</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
                 A ValueExpression enabled attribute that, if present, will be
                 used as the text of the converter message, replacing any message
                 that comes from the converter.
-            </description>
+            ]]></description>
             <name>converterMessage</name>
             <required>false</required>
             <type>java.lang.String</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
                 The component identifier for this component. This value must be
                 unique within the closest parent component that is a naming
                 container.
-            </description>
+            ]]></description>
             <name>id</name>
             <required>false</required>
             <type>java.lang.String</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
                 Flag indicating that the user is required to provide a submitted
                 value for this input component.
-            </description>
+            ]]></description>
             <name>required</name>
             <required>false</required>
             <type>boolean</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
                 A ValueExpression enabled attribute that, if present, will be
                 used as the text of the validation message for the "required"
                 facility, if the "required" facility is used.
-            </description>
+            ]]></description>
             <name>requiredMessage</name>
             <required>false</required>
             <type>java.lang.String</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
                 MethodExpression representing a validator method that will be
                 called
                 during Process Validations to perform correctness checks on the
@@ -980,7 +1087,7 @@
                 method that takes FacesContext, UIComponent, and Object
                 parameters,
                 with a return type of void.
-            </description>
+            ]]></description>
             <name>validator</name>
             <required>false</required>
             <method-signature>void validate(javax.faces.context.FacesContext,
@@ -988,46 +1095,46 @@
             </method-signature>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
                 A ValueExpression enabled attribute that, if present, will be
                 used as the text of the validator message, replacing any
                 message that comes from the validator.
-            </description>
+            ]]></description>
             <name>validatorMessage</name>
             <required>false</required>
             <type>java.lang.String</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
                 A ValueExpression to which the value of the request parameter, as
                 determined by the name attribute, is bound. The resolved value of this
                 expression is used when encoding the view parameter into a bookmarkable link or
                 redirect URL with view parameter encoding enabled. If this attribute is omitted,
                 the value of the request parameter will instead be the local value of the
                 UIViewParameter.
-            </description>
+            ]]></description>
             <name>value</name>
             <required>false</required>
             <type>java.lang.Object</type>
         </attribute>
         <attribute>
-            <description>
-                <p>
+            <description><![CDATA[
+                <p>
 
                 MethodExpression representing a value change listener method
                 that will be notified when a new value has been set for this
                 input component. The expression must evaluate to a public
-                method that takes a <code>ValueChangeEvent</code>
+                method that takes a <code>ValueChangeEvent</code>
                 parameter,
-                with a return type of void, <span class="changed_added_2_0">or
+                with a return type of void, <span class="changed_added_2_0">or
                 to a public method that takes no arguments with a return type
                 of void. In the latter case, the method has no way of easily
                 knowing what the new value is, but this can be useful in cases
                 where a notification is needed that "this value
-                changed".</span>
+                changed".</span>
 
-                </p>
-            </description>
+                </p>
+            ]]></description>
             <name>valueChangeListener</name>
             <required>false</required>
             <method-signature>void
@@ -1035,353 +1142,387 @@
             </method-signature>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
                 The maximum number of characters that may
                 be entered in this field.
-            </description>
+            ]]></description>
             <name>maxlength</name>
             <required>false</required>
             <type>int</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
                 The ValueExpression linking this component to a property in a
                 backing bean
-            </description>
+            ]]></description>
             <name>binding</name>
             <required>false</required>
             <type>javax.faces.component.UIComponent</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
 
-                <p class="changed_added_2_0"><span
+                <p class="changed_added_2_0"><span
                 class="changed_deleted_2_0_rev_a">If present, this
                 attribute refers to the value of one of the exposed
                 attached objects within the composite component inside
-                of which this tag is nested.</span></p>
+                of which this tag is nested.</span></p>
 
-            </description>
+            ]]></description>
             <name>for</name>
             <required>false</required>
             <type>java.lang.String</type>
         </attribute>
     </tag>
     <tag>
-        <description>
+        <description><![CDATA[
             Register a PhaseListener instance on the UIViewRoot in which
             this tag is nested.
-        </description>
+        ]]></description>
         <tag-name>phaseListener</tag-name>
         <handler-class>com.sun.faces.facelets.tag.jsf.core.PhaseListenerHandler</handler-class>
         <attribute>
-            <description>
+            <description><![CDATA[
                 Fully qualified Java class name of an PhaseListener to be
                 created and registered.
-            </description>
+            ]]></description>
             <name>type</name>
             <required>false</required>
             <type>java.lang.String</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
                 Value binding expression that evaluates to an object that
                 implements javax.faces.event.PhaseListener.
-            </description>
+            ]]></description>
             <name>binding</name>
             <required>false</required>
             <type>javax.faces.event.PhaseListener</type>
         </attribute>
     </tag>
     <tag>
-        <description>
+        <description><![CDATA[
             Add a child UISelectItem component to the UIComponent
             associated with the closest parent UIComponent custom
             action.
-        </description>
+        ]]></description>
         <tag-name>selectItem</tag-name>
         <component>
             <component-type>javax.faces.SelectItem</component-type>
             <renderer-type/>
         </component>
         <attribute>
-            <description>
+            <description><![CDATA[
                 Value binding expression to a backing bean
                 property bound to the component instance for
                 the UIComponent created by this custom action.
-            </description>
+            ]]></description>
             <name>binding</name>
             <type>javax.faces.component.UIComponent</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
                 Component identifier of the UISelectItem
                 component to be created.
-            </description>
+            ]]></description>
             <name>id</name>
             <required>false</required>
             <type>java.lang.String</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
                 Description of this option, for use in
                 development tools.
-            </description>
+            ]]></description>
             <name>itemDescription</name>
             <type>java.lang.String</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
                 Flag indicating whether the option created
                 by this component is disabled. Expressions
                 must evaluate to a boolean. Default value
                 is false.
-            </description>
+            ]]></description>
             <name>itemDisabled</name>
             <type>java.lang.Boolean</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
                 Label to be displayed to the user
                 for this option.
-            </description>
+            ]]></description>
             <name>itemLabel</name>
             <type>java.lang.String</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
                 Flag indicating that characters that are sensitive in
-                the value of the <code>itemLabel</code>
+                the value of the <code>itemLabel</code>
                 attribute must be escaped. This flag is set to "true" by
                 default.
-            </description>
-            <name>escapeItem</name>
+            ]]></description>
+            <name>itemEscaped</name>
             <type>java.lang.String</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
                 Value to be returned to the server if this
                 option is selected by the user.
-            </description>
+            ]]></description>
             <name>itemValue</name>
             <type>java.lang.String</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
                 Value binding expression pointing at a
                 SelectItem instance containing the
                 information for this option.
-            </description>
+            ]]></description>
             <name>value</name>
             <type>javax.faces.model.SelectItem</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
                 Flag indicating whether the option created by this
                 component represents the special "no selection"
                 option. Expressions must evaluate to a boolean.
                 Default value is false.
-            </description>
+            ]]></description>
             <name>noSelectionOption</name>
             <type>java.lang.Boolean</type>
         </attribute>
     </tag>
     <tag>
-        <description>
-            <p><span class="changed_modified_2_0">Add</span> a
+        <description><![CDATA[
+            <p><span class="changed_modified_2_0">Add</span> a
             child UISelectItems component to the UIComponent associated
-            with the closed parent UIComponent custom action.</p>
+            with the closed parent UIComponent custom action.</p>
 
-            <p class="changed_modified_2_0">When iterating over the
-            select items, <code>toString()</code> must be called on
+            <p class="changed_modified_2_0">When iterating over the
+            select items, <code>toString()</code> must be called on
             the
-            string rendered attribute values.</p>
+            string rendered attribute values.</p>
 
-            <p class="changed_added_2_0">Version 2 of the specification
+            <p class="changed_added_2_0">Version 2 of the specification
             introduces
             several new attributes, described below. These are: var, itemValue,
-            itemLabel, itemDescription, itemDisabled, and itemLabelEscaped.</p>
+            itemLabel, itemDescription, itemDisabled, and itemLabelEscaped.</p>
 
 
-        </description>
+        ]]></description>
         <tag-name>selectItems</tag-name>
         <component>
             <component-type>javax.faces.SelectItems</component-type>
             <renderer-type/>
         </component>
         <attribute>
-            <description>
+            <description><![CDATA[
                 Value binding expression to a backing bean
                 property bound to the component instance for
                 the UIComponent created by this custom action.
-            </description>
+            ]]></description>
             <name>binding</name>
             <type>javax.faces.component.UIComponent</type>
         </attribute>
         <attribute>
+            <description><![CDATA[
+                Flag indicating whether this component (and its
+                children) should be rendered.  Expressions must
+                evaluate to a boolean.
+            ]]></description>
+            <name>rendered</name>
+            <required>false</required>
+            <type>java.lang.Boolean</type>
+        </attribute>
+        <attribute>
             <description>
+                <![CDATA[<p>
+                
+                MethodExpression representing an action listener method that
+                will be notified when this component is activated by the user.
+                The expression must evaluate to a public method that takes an
+                ActionEvent parameter, with a return type of void, <span
+                class="changed_added_2_0">or to a public method that takes no
+                arguments with a return type of void.  In the latter case, the
+                method has no way of easily knowing where the event came from,
+                but this can be useful in cases where a notification is needed
+                that "some action happened".</span>
+                
+                </p>]]>
+            </description>
+            <name>actionListener</name>
+            <required>false</required>
+            <method-signature>public void
+                actionListener(javax.faces.event.ActionEvent event)
+            </method-signature>
+
+        </attribute>
+
+        <attribute>
+            <description><![CDATA[
                 Component identifier of the UISelectItems
                 component to be created.
-            </description>
+            ]]></description>
             <name>id</name>
             <required>false</required>
             <type>java.lang.String</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
 
 
-                <p>Value expression pointing at <span
-                class="changed_modified_2_0">any <code>Collection</code>
-                or array.</span> The member elements may be instances of
-                <code>SelectItem</code> <span
-                class="changed_added_2_0">or any Java Object. In the
+                <p>Value expression pointing at <span
+                class="changed_modified_2_0">any <code>Collection</code>
+                or array.</span> The member elements may be instances of
+                <code>SelectItem</code> <span
+                class="changed_added_2_0">or any Java Object. In the
                 case where the member elements are plain Java Objects,
                 several additional attributes must be used by the page
                 author to correctly identify the data to the enclosing
-                <code>UISelectOne</code> or <code>UISelectMany</code>
-                component, as shown in the following example.</span>
-
-                <div class="syntax"><div class="html4strict"
-                style="font-family: monospace;"><ol><li class="li1"><div
-                class="de1"><span class="sc2">&lt;h:selectOneListbox
-                <span class="kw3">size</span>=<span class="st0">&quot;1&quot;</span>
-                <span class="kw3">id</span>=<span class="st0">&quot;escape02&quot;</span>
-                <span class="kw3">value</span>=<span class="st0">&quot;#{select05NoSelection.initialCollectionValues}&quot;</span><span
-                class="kw2">&gt;</span></span></div></li>
-                <li class="li2"><div class="de2">&nbsp; <span
-                class="sc2">&lt;f:selectItems <span class="kw3">value</span>=<span
-                class="st0">&quot;#{select05NoSelection.hobbitList}&quot;</span></div></li>
-                <li class="li1"><div class="de1">&nbsp; &nbsp;
+                <code>UISelectOne</code> or <code>UISelectMany</code>
+                component, as shown in the following example.</span>
+
+                <div class="syntax"><div class="html4strict"
+                style="font-family: monospace;"><ol><li class="li1"><div
+                class="de1"><span class="sc2">&lt;h:selectOneListbox
+                <span class="kw3">size</span>=<span class="st0">&quot;1&quot;</span>
+                <span class="kw3">id</span>=<span class="st0">&quot;escape02&quot;</span>
+                <span class="kw3">value</span>=<span class="st0">&quot;#{select05NoSelection.initialCollectionValues}&quot;</span><span
+                class="kw2">&gt;</span></span></div></li>
+                <li class="li2"><div class="de2">&nbsp; <span
+                class="sc2">&lt;f:selectItems <span class="kw3">value</span>=<span
+                class="st0">&quot;#{select05NoSelection.hobbitList}&quot;</span></div></li>
+                <li class="li1"><div class="de1">&nbsp; &nbsp;
                 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
-                &nbsp;var=<span class="st0">&quot;n&quot;</span></div></li>
-                <li class="li2"><div class="de2">&nbsp; &nbsp;
+                &nbsp;var=<span class="st0">&quot;n&quot;</span></div></li>
+                <li class="li2"><div class="de2">&nbsp; &nbsp;
                 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
-                &nbsp;itemValue=<span class="st0">&quot;#{n}&quot;</span></div></li>
-                <li class="li1"><div class="de1">&nbsp; &nbsp;
+                &nbsp;itemValue=<span class="st0">&quot;#{n}&quot;</span></div></li>
+                <li class="li1"><div class="de1">&nbsp; &nbsp;
                 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
-                &nbsp;itemLabel=<span class="st0">&quot;#{n.bio}&quot;</span></div></li>
-                <li class="li2"><div class="de2">&nbsp; &nbsp;
+                &nbsp;itemLabel=<span class="st0">&quot;#{n.bio}&quot;</span></div></li>
+                <li class="li2"><div class="de2">&nbsp; &nbsp;
                 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
-                &nbsp;itemDescription=<span class="st0">&quot;#{n.description}&quot;</span></div></li>
-                <li class="li1"><div class="de1">&nbsp; &nbsp;
+                &nbsp;itemDescription=<span class="st0">&quot;#{n.description}&quot;</span></div></li>
+                <li class="li1"><div class="de1">&nbsp; &nbsp;
                 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
-                &nbsp;itemDisabled=<span class="st0">&quot;#{n.disabled}&quot;</span></div></li>
-                <li class="li2"><div class="de2">&nbsp; &nbsp;
+                &nbsp;itemDisabled=<span class="st0">&quot;#{n.disabled}&quot;</span></div></li>
+                <li class="li2"><div class="de2">&nbsp; &nbsp;
                 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
-                &nbsp;itemLabelEscaped=<span class="st0">&quot;true&quot;</span></div></li>
-                <li class="li1"><div class="de1">&nbsp; &nbsp;
+                &nbsp;itemLabelEscaped=<span class="st0">&quot;true&quot;</span></div></li>
+                <li class="li1"><div class="de1">&nbsp; &nbsp;
                 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
-                &nbsp;noSelectionValue=<span class="st0">&quot;#{select05NoSelection.hobbitList[0]}&quot;</span>/<span
-                class="kw2">&gt;</span></span></div></li>
-                <li class="li2"><div class="de2"><span
-                class="sc2"><span class="kw2">&lt;</span>/h:selectOneListbox&gt;</span>
-                </div></li></ol></div></div>
-
-                <p class="changed_added_2_0">In the preceding example, the
-                <code>value</code> attribute on line 1 points to a
-                <code>Collection&lt;HobbitBean&gt;</code>.
-                <code>HobbitBean</code> is
+                &nbsp;noSelectionValue=<span class="st0">&quot;#{select05NoSelection.hobbitList[0]}&quot;</span>/<span
+                class="kw2">&gt;</span></span></div></li>
+                <li class="li2"><div class="de2"><span
+                class="sc2"><span class="kw2">&lt;</span>/h:selectOneListbox&gt;</span>
+                </div></li></ol></div></div>
+
+                <p class="changed_added_2_0">In the preceding example, the
+                <code>value</code> attribute on line 1 points to a
+                <code>Collection&lt;HobbitBean&gt;</code>.
+                <code>HobbitBean</code> is
                 just a regular Java Object (POJO) that conforms to JavaBeans
                 naming
-                conventions for its properties. The <code>value</code>
+                conventions for its properties. The <code>value</code>
                 attribute on
-                line 2 points to a <code>List&lt;HobbitBean&gt;</code>,
+                line 2 points to a <code>List&lt;HobbitBean&gt;</code>,
                 though it could
-                just as well point to a <code>Collection</code>,
+                just as well point to a <code>Collection</code>,
                 array, or
-                <code>javax.faces.model.DataModel</code>. The
+                <code>javax.faces.model.DataModel</code>. The
                 attributes on lines 3
                 through 9, inclusive, leverage the fact that the value is a
                 collection
                 of POJOs.
-                </p>
+                </p>
 
 
-                </p>
+                </p>
 
 
-            </description>
+            ]]></description>
             <name>value</name>
             <type>java.lang.Object</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
 
 
-                <p class="changed_added_2_0">Expose the value from the
-                <code>value</code> attribute under this request
+                <p class="changed_added_2_0">Expose the value from the
+                <code>value</code> attribute under this request
                 scoped key so that it
-                may be referred to in EL for the value of other attributes.</p>
+                may be referred to in EL for the value of other attributes.</p>
 
 
-            </description>
+            ]]></description>
             <name>var</name>
             <required>false</required>
             <type>java.lang.String</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
 
-                <p class="changed_added_2_0">evaluates to a
-                <code>Collection</code>, array, or <code>Map</code>
+                <p class="changed_added_2_0">evaluates to a
+                <code>Collection</code>, array, or <code>Map</code>
                 from which the items
-                to be shown will be rendered.</p>
+                to be shown will be rendered.</p>
 
-            </description>
+            ]]></description>
             <name>itemValue</name>
             <type>java.lang.Object</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
 
-                <p class="changed_added_2_0">evaluates to a String that
+                <p class="changed_added_2_0">evaluates to a String that
                 will
-                serve as the label to be shown for the item.</p>
+                serve as the label to be shown for the item.</p>
 
-            </description>
+            ]]></description>
             <name>itemLabel</name>
             <type>java.lang.String</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
 
 
-                <p class="changed_added_2_0">evaluates to a String that
+                <p class="changed_added_2_0">evaluates to a String that
                 will
-                serve as the description to be shown for the item.</p>
+                serve as the description to be shown for the item.</p>
 
-            </description>
+            ]]></description>
             <name>itemDescription</name>
             <type>java.lang.String</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
 
-                <p class="changed_added_2_0">evaluates to a boolean that
+                <p class="changed_added_2_0">evaluates to a boolean that
                 will
-                determine if the item value is selectable or not.</p>
+                determine if the item value is selectable or not.</p>
 
-            </description>
+            ]]></description>
             <name>itemDisabled</name>
             <type>java.lang.Boolean</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
 
-                <p class="changed_added_2_0">evaluates to a boolean that
+                <p class="changed_added_2_0">evaluates to a boolean that
                 will
                 determine if the rendered markup for the item receives normal
-                JSF HTML escaping or not.</p>
+                JSF HTML escaping or not.</p>
 
-            </description>
+            ]]></description>
             <name>itemLabelEscaped</name>
             <type>java.lang.Boolean</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
 
-                <p class="changed_added_2_0">Is either an EL expression
+                <p class="changed_added_2_0">Is either an EL expression
                 pointing to the element in the value collection whose value
                 should be
                 marked as a &#8220;no selection&#8221; item, or a
@@ -1390,696 +1531,799 @@
                 must be
                 marked as the &#8220;no selection&#8221; item. If the
                 user selects such
-                an item <strong>and</strong> the field is marked as
+                an item <strong>and</strong> the field is marked as
                 required, then it
-                will not pass validation.</p>
+                will not pass validation.</p>
 
-            </description>
+            ]]></description>
             <name>noSelectionValue</name>
             <type>java.lang.Boolean</type>
         </attribute>
     </tag>
     <tag>
-        <description>
-            <p>Register an ActionListener instance on the UIComponent
+        <description><![CDATA[
+            <p>Register an ActionListener instance on the UIComponent
             associated with the closest parent UIComponent custom action.
             This actionListener will cause the value given by the "value"
             attribute to be set into the ValueExpression given by the "target"
-            attribute.</p>
+            attribute.</p>
 
-            <p>The implementation of this tag creates a special
-            <code>ActionListener</code> instance and registers it on
+            <p>The implementation of this tag creates a special
+            <code>ActionListener</code> instance and registers it on
             the
-            <code>ActionSource</code> associated with our most
+            <code>ActionSource</code> associated with our most
             immediate surrounding
             instance of a tag whose implementation class is a subclass of
-            <code>UIComponentTag</code>. This tag creates no output
+            <code>UIComponentTag</code>. This tag creates no output
             to the page
-            currently being created.</p>
+            currently being created.</p>
 
-            <p>The <code>ActionListener</code> instance
+            <p>The <code>ActionListener</code> instance
             created and installed by
-            this tag has the following behavior and contract.</p>
+            this tag has the following behavior and contract.</p>
 
-            <ul>
+            <ul>
 
-            <li>Only create and register the <code>ActionListener</code>
+            <li>Only create and register the <code>ActionListener</code>
             instance
-            the first time the component for this tag is created</li>
+            the first time the component for this tag is created</li>
 
-            <li>The "target" and "value" tag attributes are
+            <li>The "target" and "value" tag attributes are
             ValueExpression
             instances and are stored unevaluated as instance variables of the
-            listener.</li>
+            listener.</li>
 
-            <li>When the listener executes, perform the following:
-            <ul>
+            <li>When the listener executes, perform the following:
+            <ul>
             Call getValue() on the "value" ValueExpression.
-            </ul>
-            <ul>
+            </ul>
+            <ul>
             If value of the "value" expression is null, call setValue() on
             the "target" ValueExpression with the null value.
-            </ul>
-            <ul>
+            </ul>
+            <ul>
             If the value of the "value" expression is not null, call getType()
             on the "value" and "target" ValueExpressions to determine their
             property types.
-            </ul>
-            <ul>
+            </ul>
+            <ul>
             Coerce the value of the "value" expression to the "target"
             expression value type following the Expression Language coercion
             rules. Call setValue() on the "target" ValueExpression with the
             resulting value.
-            </ul>
-            <ul>
+            </ul>
+            <ul>
             If either coercion or the execution of setValue() fails throw an
             AbortProcessingException.
-            </ul>
-            </li>
+            </ul>
+            </li>
 
-            </ul>
-        </description>
+            </ul>
+        ]]></description>
         <tag-name>setPropertyActionListener</tag-name>
         <handler-class>com.sun.faces.facelets.tag.jsf.core.SetPropertyActionListenerHandler</handler-class>
         <attribute>
-            <description>
+            <description><![CDATA[
                 ValueExpression to be stored as the value of the target
                 attribute.
-            </description>
+            ]]></description>
             <name>value</name>
             <required>true</required>
             <type>java.lang.String</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
                 ValueExpression that is the destination of the value
                 attribute.
-            </description>
+            ]]></description>
             <name>target</name>
             <required>true</required>
             <type>java.lang.String</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
 
-                <p class="changed_added_2_0">If present, this attribute
+                <p class="changed_added_2_0">If present, this attribute
                 refers
                 to the value of one of the exposed attached objects within the
-                composite component inside of which this tag is nested.</p>
+                composite component inside of which this tag is nested.</p>
 
-            </description>
+            ]]></description>
             <name>for</name>
             <required>false</required>
             <type>java.lang.String</type>
         </attribute>
     </tag>
     <tag>
-        <description>
+        <description><![CDATA[
             Container action for all JavaServer Faces core and
             custom component actions used on a nested page via
             "jsp:include" or any custom action that dynamically
             includes another page from the same web application,
             such as JSTL's "c:import".
-        </description>
+        ]]></description>
         <tag-name>subview</tag-name>
         <component>
             <component-type>javax.faces.NamingContainer</component-type>
             <renderer-type/>
         </component>
         <attribute>
-            <description>
+            <description><![CDATA[
                 Value binding expression to a backing bean
                 property bound to the component instance for
                 the UIComponent created by this custom action.
-            </description>
+            ]]></description>
             <name>binding</name>
             <type>javax.faces.component.UIComponent</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
                 Component identifier of the UINamingContainer
                 component to be created.
-            </description>
+            ]]></description>
             <name>id</name>
             <required>true</required>
             <type>java.lang.String</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
                 Flag indicating whether this component (and its
                 children) should be rendered. Expressions must
                 evaluate to a boolean.
-            </description>
+            ]]></description>
             <name>rendered</name>
             <type>java.lang.Boolean</type>
         </attribute>
     </tag>
     <tag>
-        <description>
+        <description><![CDATA[
             Register a DoubleRangeValidator instance on the
             UIComponent associated with the closest parent
             UIComponent custom action.
-        </description>
+        ]]></description>
         <tag-name>validateDoubleRange</tag-name>
         <validator>
             <validator-id>javax.faces.DoubleRange</validator-id>
             <handler-class>com.sun.faces.facelets.tag.jsf.core.ValidateDelegateHandler</handler-class>
         </validator>
         <attribute>
-            <description>
-                <p class="changed_added_2_0">A boolean value
+            <description><![CDATA[
+                <p class="changed_added_2_0">A boolean value
                 enabling page level determination of whether or not this
-                validator is enabled on the enclosing component.</p>
+                validator is enabled on the enclosing component.</p>
 
 
-            </description>
+            ]]></description>
             <name>disabled</name>
             <type>java.lang.Boolean</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
                 Maximum value allowed for this component.
-            </description>
+            ]]></description>
             <name>maximum</name>
             <type>java.lang.Double</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
                 Minimum value allowed for this component.
-            </description>
+            ]]></description>
             <name>minimum</name>
             <type>java.lang.Double</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
                 A ValueExpression that evaluates to an instance of
                 DoubleRangeValidator.
-            </description>
+            ]]></description>
             <name>binding</name>
             <type>javax.faces.validator.DoubleRangeValidator</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
 
-                <p class="changed_added_2_0">If present, this attribute
+                <p class="changed_added_2_0">If present, this attribute
                 refers
                 to the value of one of the exposed attached objects within the
-                composite component inside of which this tag is nested.</p>
+                composite component inside of which this tag is nested.</p>
 
-            </description>
+            ]]></description>
             <name>for</name>
             <required>false</required>
             <type>java.lang.String</type>
         </attribute>
     </tag>
     <tag>
-        <description>
+        <description><![CDATA[
             Register a LengthValidator instance on the
             UIComponent associated with the closest parent
             UIComponent custom action.
-        </description>
+        ]]></description>
         <tag-name>validateLength</tag-name>
         <validator>
             <validator-id>javax.faces.Length</validator-id>
             <handler-class>com.sun.faces.facelets.tag.jsf.core.ValidateDelegateHandler</handler-class>
         </validator>
         <attribute>
-            <description>
-                <p class="changed_added_2_0">A boolean value
+            <description><![CDATA[
+                <p class="changed_added_2_0">A boolean value
                 enabling page level determination of whether or not this
-                validator is enabled on the enclosing component.</p>
+                validator is enabled on the enclosing component.</p>
 
 
-            </description>
+            ]]></description>
             <name>disabled</name>
             <type>java.lang.Boolean</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
                 Maximum length allowed for this component.
-            </description>
+            ]]></description>
             <name>maximum</name>
             <type>java.lang.Integer</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
                 Minimum length allowed for this component.
-            </description>
+            ]]></description>
             <name>minimum</name>
             <type>java.lang.Integer</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
                 A ValueExpression that evaluates to an instance of
                 LenghtValidator.
-            </description>
+            ]]></description>
             <name>binding</name>
             <type>javax.faces.validator.LengthValidator</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
 
-                <p class="changed_added_2_0">If present, this attribute
+                <p class="changed_added_2_0">If present, this attribute
                 refers
                 to the value of one of the exposed attached objects within the
-                composite component inside of which this tag is nested.</p>
+                composite component inside of which this tag is nested.</p>
 
-            </description>
+            ]]></description>
             <name>for</name>
             <required>false</required>
             <type>java.lang.String</type>
         </attribute>
     </tag>
     <tag>
-        <description>
+        <description><![CDATA[
             Register a LongRangeValidator instance on the
             UIComponent associated with the closest parent
             UIComponent custom action.
-        </description>
+        ]]></description>
         <tag-name>validateLongRange</tag-name>
         <validator>
             <validator-id>javax.faces.LongRange</validator-id>
             <handler-class>com.sun.faces.facelets.tag.jsf.core.ValidateDelegateHandler</handler-class>
         </validator>
         <attribute>
-            <description>
-                <p class="changed_added_2_0">A boolean value
+            <description><![CDATA[
+                <p class="changed_added_2_0">A boolean value
                 enabling page level determination of whether or not this
-                validator is enabled on the enclosing component.</p>
+                validator is enabled on the enclosing component.</p>
 
 
-            </description>
+            ]]></description>
             <name>disabled</name>
             <type>java.lang.Boolean</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
                 Maximum value allowed for this component.
-            </description>
+            ]]></description>
             <name>maximum</name>
             <type>java.lang.Long</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
                 Minimum value allowed for this component.
-            </description>
+            ]]></description>
             <name>minimum</name>
             <type>java.lang.Long</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
                 A ValueExpression that evaluates to an instance of
                 LongRangeValidator.
-            </description>
+            ]]></description>
             <name>binding</name>
             <type>javax.faces.validator.LongRangeValidator</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
 
-                <p class="changed_added_2_0">If present, this attribute
+                <p class="changed_added_2_0">If present, this attribute
                 refers
                 to the value of one of the exposed attached objects within the
-                composite component inside of which this tag is nested.</p>
+                composite component inside of which this tag is nested.</p>
 
-            </description>
+            ]]></description>
             <name>for</name>
             <required>false</required>
             <type>java.lang.String</type>
         </attribute>
     </tag>
     <tag>
-        <description><p>
+        <description><![CDATA[<p>
 
-            <span class="changed_added_2_0">
+            <span class="changed_added_2_0">
             A validator that delegates the validation of the local value
             to the Bean Validation API. The validationGroups attribute
             serves as a filter that instructs the Bean Validation API which
             contraints to enforce. If there are any constraint violations
             reported by Bean Validation, the value is considered invalid.
 
-            </p>
-        </description>
+            </p>
+        ]]></description>
         <tag-name>validateBean</tag-name>
         <validator>
             <validator-id>javax.faces.Bean</validator-id>
             <handler-class>com.sun.faces.facelets.tag.jsf.core.ValidateDelegateHandler</handler-class>
         </validator>
         <attribute>
-            <description>
+            <description><![CDATA[
                 A comma-separated list of validation groups. A validation group
                 is a fully-qualified class name.
-            </description>
+            ]]></description>
             <name>validationGroups</name>
             <required>false</required>
             <type>java.lang.String</type>
         </attribute>
         <attribute>
-            <description>
-                <p class="changed_added_2_0">A boolean value
+            <description><![CDATA[
+                <p class="changed_added_2_0">A boolean value
                 enabling page level determination of whether or not this
-                validator is enabled on the enclosing component.</p>
+                validator is enabled on the enclosing component.</p>
 
 
-            </description>
+            ]]></description>
             <name>disabled</name>
             <type>java.lang.Boolean</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
                 A ValueExpression that evaluates to an instance of
                 BeanValidator.
-            </description>
+            ]]></description>
             <name>binding</name>
             <type>javax.faces.validator.BeanValidator</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
 
-                <p class="changed_added_2_0">If present, this attribute
+                <p class="changed_added_2_0">If present, this attribute
                 refers
                 to the value of one of the exposed attached objects within the
-                composite component inside of which this tag is nested.</p>
+                composite component inside of which this tag is nested.</p>
 
-            </description>
+            ]]></description>
             <name>for</name>
             <required>false</required>
             <type>java.lang.String</type>
         </attribute>
     </tag>
     <tag>
-        <description><p>
+        <description><![CDATA[<p>
 
-            <span class="changed_added_2_0">
+            <span class="changed_added_2_0">
             A validator that uses the pattern attribute to validate the
             wrapping component. The entire pattern is matched against
             the String value of the component. If it matches, it's
             valid.
 
-            </p>
-        </description>
+            </p>
+        ]]></description>
         <tag-name>validateRegex</tag-name>
         <validator>
             <validator-id>javax.faces.RegularExpression</validator-id>
             <handler-class>com.sun.faces.facelets.tag.jsf.core.ValidateDelegateHandler</handler-class>
         </validator>
         <attribute>
-            <description>
-                <p class="changed_added_2_0">A boolean value
+            <description><![CDATA[
+                <p class="changed_added_2_0">A boolean value
                 enabling page level determination of whether or not this
-                validator is enabled on the enclosing component.</p>
+                validator is enabled on the enclosing component.</p>
 
 
-            </description>
+            ]]></description>
             <name>disabled</name>
             <type>java.lang.Boolean</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
                 A regular expression pattern. Remember that, like in
                 all Java strings, backslash must be escaped with another
                 backslash.
-            </description>
+            ]]></description>
             <name>pattern</name>
             <required>true</required>
             <type>java.lang.String</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
                 A ValueExpression that evaluates to an instance of
                 RegexValidator.
-            </description>
+            ]]></description>
             <name>binding</name>
             <type>javax.faces.validator.RegexValidator</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
 
-                <p class="changed_added_2_0">If present, this attribute
+                <p class="changed_added_2_0">If present, this attribute
                 refers
                 to the value of one of the exposed attached objects within the
-                composite component inside of which this tag is nested.</p>
+                composite component inside of which this tag is nested.</p>
 
-            </description>
+            ]]></description>
             <name>for</name>
             <required>false</required>
             <type>java.lang.String</type>
         </attribute>
     </tag>
     <tag>
-        <description>
+        <description><![CDATA[
 
-            <p class="changed_added_2_0">A validator that enforces
+            <p class="changed_added_2_0">A validator that enforces
             the presence of a value. It has the same affect as setting the
-            required attribute on a UIInput to true.</p>
+            required attribute on a UIInput to true.</p>
 
-        </description>
+        ]]></description>
         <tag-name>validateRequired</tag-name>
         <validator>
             <validator-id>javax.faces.Required</validator-id>
             <handler-class>com.sun.faces.facelets.tag.jsf.core.ValidateDelegateHandler</handler-class>
         </validator>
         <attribute>
-            <description>
-                <p class="changed_added_2_0">A boolean value
+            <description><![CDATA[
+                <p class="changed_added_2_0">A boolean value
                 enabling page level determination of whether or not this
-                validator is enabled on the enclosing component.</p>
+                validator is enabled on the enclosing component.</p>
 
 
-            </description>
+            ]]></description>
             <name>disabled</name>
             <type>java.lang.Boolean</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
                 A ValueExpression that evaluates to an instance of
                 RequiredValidator.
-            </description>
+            ]]></description>
             <name>binding</name>
             <type>javax.faces.validator.RequiredValidator</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
 
-                <p class="changed_added_2_0">If present, this attribute
+                <p class="changed_added_2_0">If present, this attribute
                 refers
                 to the value of one of the exposed attached objects within the
-                composite component inside of which this tag is nested.</p>
+                composite component inside of which this tag is nested.</p>
 
-            </description>
+            ]]></description>
             <name>for</name>
             <required>false</required>
             <type>java.lang.String</type>
         </attribute>
     </tag>
     <tag>
-        <description>
+        <description><![CDATA[
 
-            <p><span class="changed_modified_2_0">Register</span>
+            <p><span class="changed_modified_2_0">Register</span>
             a named
             Validator instance on the UIComponent associated with the
-            closest parent UIComponent custom action.</p>
+            closest parent UIComponent custom action.</p>
 
-            <div class="changed_added_2_0">
+            <div class="changed_added_2_0">
 
-            <p>Usage outside of an <code>EditableValueHolder</code>
-            parent</p>
+            <p>Usage outside of an <code>EditableValueHolder</code>
+            parent</p>
 
-            <p>If this element is nested within a
-            <code>UIComponent</code> tag that has other
-            <code>UIComponent</code> children, the validator will be
+            <p>If this element is nested within a
+            <code>UIComponent</code> tag that has other
+            <code>UIComponent</code> children, the validator will be
             automatically added to all the child components as well as
             this one. The implementation must ensure this occurs even if
             the parent of this element is not an instance of
-            <code>EditableValueHolder</code>.</p>
+            <code>EditableValueHolder</code>.</p>
 
-            </div>
+            </div>
 
-        </description>
+        ]]></description>
         <tag-name>validator</tag-name>
         <handler-class>com.sun.faces.facelets.tag.jsf.core.ValidateDelegateHandler</handler-class>
         <attribute>
-            <description>
-                <p class="changed_added_2_0">A boolean value
+            <description><![CDATA[
+                <p class="changed_added_2_0">A boolean value
                 enabling page level determination of whether or not this
-                validator is enabled on the enclosing component.</p>
+                validator is enabled on the enclosing component.</p>
 
 
-            </description>
+            ]]></description>
             <name>disabled</name>
             <type>java.lang.Boolean</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
                 Validator identifier of the Validator
                 to be created and registered.
-            </description>
+            ]]></description>
             <name>validatorId</name>
             <type>java.lang.String</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
                 A ValueExpression that evaluates to an object that implements
                 the javax.faces.validator.Validator interface.
-            </description>
+            ]]></description>
             <name>binding</name>
             <type>javax.faces.validator.Validator</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
 
-                <p class="changed_added_2_0">If present, this attribute
+                <p class="changed_added_2_0">If present, this attribute
                 refers
                 to the value of one of the exposed attached objects within the
-                composite component inside of which this tag is nested.</p>
+                composite component inside of which this tag is nested.</p>
 
-            </description>
+            ]]></description>
             <name>for</name>
             <required>false</required>
             <type>java.lang.String</type>
         </attribute>
     </tag>
     <tag>
-        <description>
+        <description><![CDATA[
             Register a ValueChangeListener instance on the UIComponent
             associated with the closest parent UIComponent custom
             action.
-        </description>
+        ]]></description>
         <tag-name>valueChangeListener</tag-name>
         <handler-class>com.sun.faces.facelets.tag.jsf.core.ValueChangeListenerHandler</handler-class>
         <attribute>
-            <description>
+            <description><![CDATA[
                 Fully qualified Java class name of a
                 ValueChangeListener to be created and registered.
-            </description>
+            ]]></description>
             <name>type</name>
             <type>java.lang.String</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
                 Value binding expression that evaluates to an object that
                 implements javax.faces.event.ValueChangeListener.
-            </description>
+            ]]></description>
             <name>binding</name>
             <required>false</required>
             <type>javax.faces.event.ValueChangeListener</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
 
-                <p class="changed_added_2_0">If present, this attribute
+                <p class="changed_added_2_0">If present, this attribute
                 refers
                 to the value of one of the exposed attached objects within the
-                composite component inside of which this tag is nested.</p>
+                composite component inside of which this tag is nested.</p>
 
-            </description>
+            ]]></description>
             <name>for</name>
             <required>false</required>
             <type>java.lang.String</type>
         </attribute>
     </tag>
     <tag>
-        <description>
+        <description><![CDATA[
             Create and register a child UIOutput component
             associated with the closest parent UIComponent
             custom action, which renders nested body content.
-        </description>
+        ]]></description>
         <tag-name>verbatim</tag-name>
         <component>
             <component-type>javax.faces.Output</component-type>
             <renderer-type>javax.faces.Text</renderer-type>
         </component>
         <attribute>
-            <description>
+            <description><![CDATA[
                 Flag indicating that generated markup must
                 be escaped in a manner that is appropriate
                 for the markup language to be rendered.
                 Expressions must evaluate to a boolean.
                 Default value is false.
-            </description>
+            ]]></description>
             <name>escape</name>
             <type>java.lang.Boolean</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
                 Flag indicating whether or not this component should be rendered
                 (during Render Response Phase), or processed on any subsequent
                 form submit. The default value for this property is true.
-            </description>
+            ]]></description>
             <name>rendered</name>
             <required>false</required>
             <type>java.lang.Boolean</type>
         </attribute>
     </tag>
     <tag>
-        <description>
+        <description><![CDATA[
             Container for all JavaServer Faces core and custom
             component actions used on a page.
-        </description>
+        ]]></description>
         <tag-name>view</tag-name>
         <component>
             <component-type>javax.faces.ViewRoot</component-type>
             <renderer-type/>
         </component>
         <attribute>
-            <description>
+            <description><![CDATA[
                 Locale to use for localizing this page. Expressions
                 must evaluate to a java.util.Locale or to a String
                 that is converted to a Locale.
-            </description>
+            ]]></description>
             <name>locale</name>
             <type>java.lang.Object</type>
         </attribute>
         <attribute>
             <description>
+                <![CDATA[<p class="changed_added_2_2">If
+                <code>true</code>, this view must not participate in
+                state saving or restoring.  Note that transient views
+                may not be used with <code>@ViewScoped</code> managed
+                beans.  The implementation must call
+                <code>setTransient()</code> on the
+                <code>UIViewRoot</code>, passing the value of the
+                attribute as specified in the markup.</p>]]>
+            </description>
+            <name>transient</name>
+            <required>false</required>
+            <type>java.lang.Boolean</type>
+        </attribute>
+        <attribute>
+          <description><![CDATA[
+          
+          <p class="changed_added_2_2">A comma separated list of
+          resource library contracts that may be used from within
+          the Facelets chain.  If this attribute is present, it
+          must only be on the outer-most file in the chain of
+          files that started ultimately with a call to
+          <code>ViewDeclarationLanguage.createView()</code>.  Any
+          use of this attribute on a non-outer-most file must be
+          silently ignored.</p>
+          
+          <p class="changed_added_2_2">If this attribute exists on the tag,
+          empty or not, the tag handler must create a
+          <code>List<String></code> for the value of the attribute and
+          unconditionally call
+          <code>FacesContext.setRresourceLibraryContracts()</code> passing
+          that list value.</p>
+          
+          ]]></description>
+          <name>contracts</name>
+          <required>false</required>
+          <type>java.lang.String</type>
+        </attribute>
+
+        <attribute>
+            <description><![CDATA[
                 Identifier for the RenderKit to use for
                 rendering this page.
-            </description>
+            ]]></description>
             <name>renderKitId</name>
             <required>false</required>
             <type>java.lang.String</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
                 Specifies the content-type of the response.
-            </description>
+            ]]></description>
             <name>contentType</name>
             <required>false</required>
             <type>java.lang.String</type>
         </attribute>
 
         <attribute>
-            <description>
+            <description><![CDATA[
                 Specifies the character encoding that should be used for the
                 response.
-            </description>
+            ]]></description>
             <name>encoding</name>
             <required>false</required>
             <type>java.lang.String</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
 
                 MethodBinding pointing to a method that takes a
                 javax.faces.event.PhaseEvent and returns void. This method
                 will be called before every phase except for restore view.
-            </description>
+            ]]></description>
             <name>beforePhase</name>
             <required>false</required>
             <method-signature>void beforePhase(javax.faces.event.PhaseEvent)
             </method-signature>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
 
                 MethodBinding pointing to a method that takes a
                 javax.faces.event.PhaseEvent and returns void. This method
                 will be called after every phase except for restore view.
-            </description>
+            ]]></description>
             <name>afterPhase</name>
             <required>false</required>
             <method-signature>void afterPhase(javax.faces.event.PhaseEvent)
             </method-signature>
         </attribute>
     </tag>
+
+    <tag>
+        <description>
+            This action component specifies an application-specific command (or action), 
+            using an EL method expression, to be invoked during one of the JSF lifecycle
+            phases proceeding Render Response (i.e., view rendering).
+        </description>
+        <tag-name>viewAction</tag-name>
+        <component>
+            <component-type>javax.faces.ViewAction</component-type>
+        </component>
+        <attribute>
+            <description>
+                Method expression referencing the action method to be invoked by the
+                component. View actions support declarative navigation just like 
+                UICommand components.
+            </description>
+            <name>action</name>
+            <required>true</required>
+            <type>javax.el.MethodExpression</type>
+        </attribute>
+        <attribute>
+            <description>
+                By default, a view action is not executed on postback. If your application 
+                is decidedly stateless, you may need the view action to execute on any type 
+                of request. The default value is false.
+            </description>
+            <name>onPostback</name>
+            <required>false</required>
+            <type>java.lang.Boolean</type>
+        </attribute>
+        <attribute>
+            <description>
+                You may only want the view action to be invoked under certain conditions. 
+                For that, you can use this attribute, which accepts an EL value expression
+                that must evaluate to a boolean value.
+            </description>
+            <name>if</name>
+            <required>false</required>
+            <type>java.lang.Boolean</type>
+        </attribute>
+        <attribute>
+            <description>
+                Setting the immediate attribute to true moves the invocation to the 
+                Apply Request Values phase instead of the default, the Invoke Application 
+                phase. The default value is false.
+            </description>
+            <name>immediate</name>
+            <required>false</required>
+            <type>java.lang.Boolean</type>
+        </attribute>
+        <attribute>
+            <description>
+                Specifies the phase in which the action invocation should occur 
+                using the name of the phase constant in the PhaseId class (the case does 
+                not matter). The default is INVOKE_APPLICATION.
+            </description>
+            <name>phase</name>
+            <required>false</required>
+            <type>java.lang.String</type>
+        </attribute>
+    </tag>
+
 </facelet-taglib>
diff --git a/jsf-ri/conf/share/facelets_jsf_core.tld b/jsf-ri/conf/share/facelets_jsf_core.tld
index d6e3782..828a7ea 100644
--- a/jsf-ri/conf/share/facelets_jsf_core.tld
+++ b/jsf-ri/conf/share/facelets_jsf_core.tld
@@ -1,46 +1,50 @@
 <?xml version="1.0" encoding="ISO-8859-1" ?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
--->
 
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
 
 <taglib xmlns="http://java.sun.com/xml/ns/javaee"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd"
-    version="2.1">
+    version="2.2">
 
 
     <!-- ========== Tag Library Description Elements ========================= -->
@@ -49,9 +53,10 @@
         The core JavaServer Faces custom actions that are independent of
         any particular RenderKit.
     </description>
-    <tlib-version>1.2</tlib-version>
+    <tlib-version>2.2</tlib-version>
+    <display-name>Faces Core</display-name>
     <short-name>f</short-name>
-    <uri>http://java.sun.com/jsf/core</uri>
+    <uri>http://xmlns.jcp.org/jsf/core</uri>
 
 
 
@@ -140,9 +145,223 @@
 
     </attribute>
 
+ </tag>
 
 
- </tag>
+    <tag>
+        <description><![CDATA[
+
+        <p class="changed_added_2_0"><span
+        class="changed_modified_2_0_rev_a changed_modified_2_2">Register</span> an
+        AjaxBehavior instance on one or more UIComponents implementing
+        the ClientBehaviorHolder interface.  This tag may be nested
+        witin a single component (enabling Ajax for a single component),
+        or it may be "wrapped" around multiple components (enabling Ajax
+        for many components).</p>
+
+        <p class="changed_added_2_0">The String value for ids
+        specified for execute and render may be specified as a search
+        expression as outlined in the JavaDocs for
+        <code>UIComponent.findComponent()</code>. The implementation
+        must resolve these ids as specified for
+        <code>UIComponent.findComponent()</code>.  For example, consider
+        the following Facelets code.</p>
+
+<div class="xml" style="font-family:monospace;"><ol><li style="background: #fcfcfc;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #000000;"><span style="color: #000000; font-weight: bold;"><h:form</span> <span style="color: #000000;">id</span>=<span style="color: #000000;">"form_1"</span><span style="color: #000000; font-weight: bold;">></span></span></div></li> 
+<li style="background: #f0f0f0;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">  <span style="color: #000000;"><span style="color: #000000; font-weight: bold;"><h:panelGrid</span> <span style="color: #000000;">id</span>=<span style="color: #000000;">"panel_1"</span> <span style="color: #000000;">rows</span>=<span style="color: #000000;">"2"</span><span style="color: #000000; font-weight: bold;"> [...]
+<li style="background: #fcfcfc;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">    <span style="color: #808080; font-style: italic;"><!-- content irrelevant --></span></div></li> 
+<li style="background: #f0f0f0;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">  <span style="color: #000000;"><span style="color: #000000; font-weight: bold;"></h:panelGrid<span style="color: #000000; font-weight: bold;">></span></span></span></div></li> 
+<li style="background: #fcfcfc;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #000000;"><span style="color: #000000; font-weight: bold;"></h:form<span style="color: #000000; font-weight: bold;">></span></span></span></div></li> 
+<li style="background: #f0f0f0;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"> </div></li> 
+<li style="background: #fcfcfc;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #000000;"><span style="color: #000000; font-weight: bold;"><h:form</span> <span style="color: #000000;">id</span>=<span style="color: #000000;">"form_2"</span><span style="color: #000000; font-weight: bold;">></span></span></div></li> 
+<li style="background: #f0f0f0;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">  <span style="color: #000000;"><span style="color: #000000; font-weight: bold;"><h:commandButton</span> <span style="color: #000000;">id</span>=<span style="color: #000000;">"button"</span><span style="color: #000000; font-weight: bold;">></span></span></div></li> 
+<li style="background: #fcfcfc;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">    <span style="color: #000000;"><span style="color: #000000; font-weight: bold;"><f:ajax</span> <span style="color: #000000;">render</span>=<span style="color: #000000;">":form1:panel_1 panel_2"</span> <span style="color: #000000; font-weight: bold;">/></span></span></div></li> 
+<li style="background: #f0f0f0;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">  <span style="color: #000000;"><span style="color: #000000; font-weight: bold;"></h:commandButton<span style="color: #000000; font-weight: bold;">></span></span></span></div></li> 
+<li style="background: #fcfcfc;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">  <span style="color: #000000;"><span style="color: #000000; font-weight: bold;"><h:panelGrid</span> <span style="color: #000000;">id</span>=<span style="color: #000000;">"panel_2"</span><span style="color: #000000; font-weight: bold;">></span></span></div></li> 
+<li style="background: #f0f0f0;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">    <span style="color: #808080; font-style: italic;"><!-- content irrelevant --></span></div></li> 
+<li style="background: #fcfcfc;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">  <span style="color: #000000;"><span style="color: #000000; font-weight: bold;"></h:panelGrid<span style="color: #000000; font-weight: bold;">></span></span></span></div></li> 
+<li style="background: #f0f0f0;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #000000;"><span style="color: #000000; font-weight: bold;"></h:form<span style="color: #000000; font-weight: bold;">></span></span></span></div></li> 
+</ol></div>
+
+        <p class="changed_added_2_0">When the button is pressed,
+        panel_1, in form_1 will be re-rendered, along with panel_2 in
+        form_2.</p>
+
+        ]]></description>
+        <name>ajax</name>
+        <body-content>empty</body-content>
+
+     <attribute>
+         <description><![CDATA[
+             <p class="changed_added_2_0">A value of "true" indicates the 
+             AjaxBehavior should not be rendered.  A value of "false" indicates 
+             the AjaxBehavior should be rendered.  "false" is the default.</p>
+
+         ]]></description>
+         <name>disabled</name>
+         <required>false</required>
+         <deferred-value>
+             <type>java.lang.Boolean</type>
+         </deferred-value>
+
+     </attribute>
+
+     <attribute>
+         <description><![CDATA[
+             <p class="changed_added_2_0">A String <span class="changed_modified_2_2">or
+             ValueExpression (that evalulates to a String)</span> identifying the type of event 
+             the Ajax action will apply to. If specified, it must be one of the 
+             events supported by the component the Ajax behavior is being applied to. 
+             For HTML components this would be the set of supported DOM events for the
+             component, plus "action" for Faces ActionSource components and "valueChange"
+             for Faces EditableValueHolder components.  If not specified, the default 
+             event is determined for the component.  The DOM event name is the actual DOM
+             event name (for example: "click") as opposed to (for example: "onclick").</p>
+
+         ]]></description>
+         <name>event</name>
+         <required>false</required>
+         <deferred-value>
+             <type>java.lang.String</type>
+         </deferred-value>
+
+     </attribute>
+
+     <attribute>
+         <description><![CDATA[ <p class="changed_added_2_0"><span
+         class="changed_modified_2_0_rev_a">Evaluates</span> to
+         Collection<String>. This is a space separated list of
+         client ids of components that will participate in the "execute"
+         portion of the Request Processing Lifecycle.  If a literal is
+         specified the ids must be space delimited.  Any of the keywords
+         "@this", "@form", "@all", "@none" may be specified in the id
+         list. <span class="changed_modified_2_0_rev_a">If not
+         specified, the default value of "@this" is assumed.  For
+         example, <code>@this clientIdOne clientIdTwo</code>.</span></p>
+
+         ]]></description>
+         <name>execute</name>
+         <required>false</required>
+         <deferred-value>
+             <type>java.util.Collection</type>
+         </deferred-value>
+
+     </attribute>
+
+    <attribute>
+      <description><![CDATA[
+        <p class="changed_added_2_0">If "true" behavior events generated from this behavior 
+        are broadcast during Apply Request Values phase. Otherwise, the events will be 
+        broadcast during Invoke Aplications phase</p>
+
+      ]]></description>
+      <name>immediate</name>
+      <required>false</required>
+      <deferred-value>
+          <type>java.lang.Boolean</type>
+      </deferred-value>
+
+    </attribute>
+
+     <attribute>
+         <description><![CDATA[
+             <p class="changed_added_2_0">Method expression referencing a method 
+             that will be called when an AjaxBehaviorEvent has been 
+             broadcast for the listener.</p>
+
+         ]]></description>
+         <name>listener</name>
+         <required>false</required>
+         <rtexprvalue>false</rtexprvalue>
+         <deferred-method>
+             <method-signature>public void processAjaxBehavior(javax.faces.event.AjaxBehaviorEvent event) throws javax.faces.event.AbortProcessingException</method-signature>
+         </deferred-method>
+
+    </attribute>
+
+    <attribute>
+      <description><![CDATA[
+        <p class="changed_added_2_0">The name of the JavaScript function that will handle UI events.</p>
+
+      ]]></description>
+      <name>onevent</name>
+      <required>false</required>
+      <deferred-value>
+          <type>java.lang.String</type>
+      </deferred-value>
+
+    </attribute>
+
+    <attribute>
+      <description><![CDATA[ <p class="changed_added_2_2">If less than
+      <em>delay</em> milliseconds elapses between calls to
+      <em>request()</em> only the most recent one is sent and all other
+      requests are discarded. If this option is not specified, or if the
+      value of <em>delay</em> is the literal string <code>'none'</code>
+      without the quotes, no delay is used. </p>
+
+      ]]></description>
+      <name>delay</name>
+      <required>false</required>
+      <deferred-value>
+          <type>java.lang.String</type>
+      </deferred-value>
+
+    </attribute>
+
+    <attribute>
+      <description><![CDATA[ <p class="changed_added_2_2">If
+      <code>true</code>, indicate that this particular Ajax transaction
+      is a value reset transaction.  This will cause
+      <code>resetValue()</code> to be called on any
+      <code>EditableValueHolder</code> instances encountered as a result
+      of this ajax transaction.  If not specified, or the value is
+      <code>false</code>, no such indication is made.</p>
+
+      ]]></description>
+      <name>resetValues</name>
+      <required>false</required>
+      <deferred-value>
+          <type>java.lang.Boolean</type>
+      </deferred-value>
+
+    </attribute>
+
+    <attribute>
+      <description><![CDATA[
+        <p class="changed_added_2_0">The name of the JavaScript function that will handle errors.</p>
+
+      ]]></description>
+      <name>onerror</name>
+      <required>false</required>
+      <deferred-value>
+          <type>java.lang.String</type>
+      </deferred-value>
+
+    </attribute>
+
+     <attribute>
+         <description><![CDATA[ <p class="changed_added_2_0"><span
+         class="changed_modified_2_0_rev_a">Evaluates</span> to
+         Collection<String>. The clientIds of components that will
+         participate in the "render" portion of the Request Processing
+         Lifecycle.  If a literal is specified the identifiers must be
+         space delimited.  Any of the keywords "@this", "@form", "@all",
+         "@none" may be specified in the identifier list. <span
+         class="changed_modified_2_0_rev_a">If not specified, the
+         default value of "@none" is assumed.  For example, <code>@this
+         clientIdOne clientIdTwo</code>.</span></p>
+
+         ]]></description>
+         <name>render</name>
+         <required>false</required>
+         <deferred-value>
+             <type>java.util.Collection</type>
+         </deferred-value>
+
+     </attribute>
+
+    </tag>
 
 
     <tag>
@@ -175,68 +394,114 @@
         </attribute>
     </tag>
 
+    <tag>
+        <description><![CDATA[<p class="changed_added_2_2">
+            Add attributes to the UIComponent associated with the closest
+            parent UIComponent custom action.  
+            For each <code>Map.Entry</code> in the <code>Map<String, Object></code>
+            referenced by the value attribute of this tag, take the following action.
+            If <code>parent.getAttributes().containsKey(entry.getKey())</code> returns 
+            <code>true</code>, take no action for this entry.  Otherwise, if 
+            <code>entry.getValue()</code> is a <code>ValueExpression</code> call 
+            <code>parent.setValueExpression(entry.getKey(), entry.getValue())</code>.
+            Otherwise, call <code>parent.getAttributes.put(entry.getKey(), entry.getValue()).</code>
+            </p>
+
+]]>
+        </description>
+        <name>attributes</name>
+        <tag-class></tag-class>
+        <body-content>empty</body-content>
+
+        <attribute>
+            <description><![CDATA[<p class="changed_added_2_2">An EL <code>ValueExpression</code> that evaluates to a <code>Map<String, Object></code>.</p>]]></description>
+            <name>value</name>
+            <deferred-value>
+                <type>java.util.Map</type>
+            </deferred-value>
+        </attribute>
+    </tag>
+
+
 
     <tag>
         <description>
-            Register a DateTimeConverter instance on the UIComponent associated
-            with the closest parent UIComponent custom action.
+            <![CDATA[<p class="changed_added_2_2">Add an attribute to the 
+            <code>passThroughAttributes Map</code> of the <code>UIComponent</code> 
+            associated with the closest parent <code>UIComponent</code> tag.</p>
+
+]]>
         </description>
-        <name>convertDateTime</name>
-        <tag-class>com.sun.faces.taglib.jsf_core.ConvertDateTimeTag</tag-class>
+        <name>passThroughAttribute</name>
+        <tag-class></tag-class>
         <body-content>empty</body-content>
 
         <attribute>
-            <description>
-                Predefined formatting style which determines how the date
-                component of a date string is to be formatted and parsed.
-                Applied only if type is "date" or "both".  Valid values
-                are "default", "short", "medium", "long", and "full".
-                Default value is "default".
-            </description>
-            <name>dateStyle</name>
+            <description><![CDATA[<p class="changed_added_2_2">The name
+            of the pass through attribute.  An attribute with this name,
+            and the corresponding value will appear on the outer most
+            markup element in the rendered markup for the component, as
+            specified in the overview for the HTML_BASIC RenderKit.  If
+            the name of this attribute conflicts with
+            <code>Renderer</code> specific attribute, the value
+            specified here supercedes the one that would otherwise be
+            rendered by the <code>Renderer</code></p>]]></description>
+            <name>name</name>
             <deferred-value>
                 <type>java.lang.String</type>
             </deferred-value>
         </attribute>
 
         <attribute>
-            <description>
-                Locale whose predefined styles for dates and times are used
-                during formatting or parsing.  If not specified, the Locale
-                returned by FacesContext.getViewRoot().getLocale() will be used.
-                Value must be either a VB expression that evaluates to a
-                java.util.Locale instance, or a String that is valid to pass as
-                the first argument to the constructor java.util.Locale(String
-                language, String country).  The empty string is passed as the
-                second argument.
-            </description>
-            <name>locale</name>
-            <required>false</required>
-            <deferred-value>
-                <type>java.lang.Object</type>
-            </deferred-value>
+            <description><![CDATA[<p class="changed_added_2_2">The value
+            of the pass through attribute.  </p>]]></description>
+            <name>value</name>
+                <deferred-value>
+                    <type>java.lang.Object</type>
+                </deferred-value>
         </attribute>
+    </tag>
+
+    <tag>
+        <description>
+            <![CDATA[<p class="changed_added_2_2">Add attributes to the 
+            <code>passThroughAttributes Map</code> of the <code>UIComponent</code> 
+            associated with the closest parent <code>UIComponent</code> tag.
+            For each <code>Map.Entry</code> in the <code>Map<String, Object></code>
+            referenced by the value attribute of this tag, take the following action.
+            Call <code>component.getPassThroughAttributes().put(entry.getKey(), entry.getValue())</code>.</p>
+
+]]>
+        </description>
+        <name>passThroughAttributes</name>
+        <tag-class></tag-class>
+        <body-content>empty</body-content>
 
         <attribute>
-            <description>
-                Custom formatting pattern which determines how the
-                date/time string should be formatted and parsed.
-            </description>
-            <name>pattern</name>
+            <description><![CDATA[<p class="changed_added_2_2">An EL <code>ValueExpression</code> that evaluates to a <code>Map<String, Object></code>.</p>]]></description>
+            <name>value</name>
             <deferred-value>
-                <type>java.lang.String</type>
+                <type>java.util.Map</type>
             </deferred-value>
         </attribute>
+    </tag>
+
+
+    <tag>
+        <description>
+            Register a named Converter instance on the UIComponent
+            associated with the closest parent UIComponent custom action.
+        </description>
+        <name>converter</name>
+        <tag-class>com.sun.faces.taglib.jsf_core.ConverterTag</tag-class>
+        <body-content>empty</body-content>
 
         <attribute>
             <description>
-                Predefined formatting style which determines how the
-                time component of a date string is to be formatted and
-                parsed.  Applied only if type is "time" or "both".
-                Valid values are "default", "short", "medium", "long",
-                and "full".  Default value is "default".
+                Converter identifier of the Converter instance to be
+                created and registered.
             </description>
-            <name>timeStyle</name>
+            <name>converterId</name>
             <deferred-value>
                 <type>java.lang.String</type>
             </deferred-value>
@@ -244,7 +509,102 @@
 
         <attribute>
             <description>
-                Time zone in which to interpret any time information in the date
+                A ValueExpression that evaluates to an object that
+                implements javax.faces.convert.Converter.
+            </description>
+            <name>binding</name>
+            <deferred-value>
+                <type>javax.faces.convert.Converter</type>
+            </deferred-value>
+        </attribute>
+
+    <attribute>
+      <description><![CDATA[
+
+        <p class="changed_added_2_0">If present, this attribute refers
+        to the value of one of the exposed attached objects within the
+        composite component inside of which this tag is nested.</p>
+
+      ]]></description>
+      <name>for</name>
+      <required>false</required>
+      <deferred-value>
+          <type>java.lang.String</type>
+      </deferred-value>         
+
+    </attribute>
+    </tag>
+
+
+    <tag>
+        <description>
+            Register a DateTimeConverter instance on the UIComponent associated
+            with the closest parent UIComponent custom action.
+        </description>
+        <name>convertDateTime</name>
+        <tag-class>com.sun.faces.taglib.jsf_core.ConvertDateTimeTag</tag-class>
+        <body-content>empty</body-content>
+
+        <attribute>
+            <description>
+                Predefined formatting style which determines how the date
+                component of a date string is to be formatted and parsed.
+                Applied only if type is "date" or "both".  Valid values
+                are "default", "short", "medium", "long", and "full".
+                Default value is "default".
+            </description>
+            <name>dateStyle</name>
+            <deferred-value>
+                <type>java.lang.String</type>
+            </deferred-value>
+        </attribute>
+
+        <attribute>
+            <description>
+                Locale whose predefined styles for dates and times are used
+                during formatting or parsing.  If not specified, the Locale
+                returned by FacesContext.getViewRoot().getLocale() will be used.
+                Value must be either a VB expression that evaluates to a
+                java.util.Locale instance, or a String that is valid to pass as
+                the first argument to the constructor java.util.Locale(String
+                language, String country).  The empty string is passed as the
+                second argument.
+            </description>
+            <name>locale</name>
+            <required>false</required>
+            <deferred-value>
+                <type>java.lang.Object</type>
+            </deferred-value>
+        </attribute>
+
+        <attribute>
+            <description>
+                Custom formatting pattern which determines how the
+                date/time string should be formatted and parsed.
+            </description>
+            <name>pattern</name>
+            <deferred-value>
+                <type>java.lang.String</type>
+            </deferred-value>
+        </attribute>
+
+        <attribute>
+            <description>
+                Predefined formatting style which determines how the
+                time component of a date string is to be formatted and
+                parsed.  Applied only if type is "time" or "both".
+                Valid values are "default", "short", "medium", "long",
+                and "full".  Default value is "default".
+            </description>
+            <name>timeStyle</name>
+            <deferred-value>
+                <type>java.lang.String</type>
+            </deferred-value>
+        </attribute>
+
+        <attribute>
+            <description>
+                Time zone in which to interpret any time information in the date
                 String.  Value must be either a VB expression that evaluates to
                 a java.util.TimeZone instance, or a String that is a timezone ID
                 as described in the javadocs for
@@ -297,6 +657,8 @@
     </attribute>
     </tag>
 
+
+
     <tag>
         <description>
             Register a NumberConverter instance on the UIComponent associated
@@ -474,281 +836,72 @@
 
     </tag>
 
-    <tag>
-        <description>
-            Register a named Converter instance on the UIComponent
-            associated with the closest parent UIComponent custom action.
-        </description>
-        <name>converter</name>
-        <tag-class>com.sun.faces.taglib.jsf_core.ConverterTag</tag-class>
-        <body-content>empty</body-content>
-
-        <attribute>
-            <description>
-                Converter identifier of the Converter instance to be
-                created and registered.
-            </description>
-            <name>converterId</name>
-            <deferred-value>
-                <type>java.lang.String</type>
-            </deferred-value>
-        </attribute>
-
-        <attribute>
-            <description>
-                A ValueExpression that evaluates to an object that
-                implements javax.faces.convert.Converter.
-            </description>
-            <name>binding</name>
-            <deferred-value>
-                <type>javax.faces.convert.Converter</type>
-            </deferred-value>
-        </attribute>
-
-    <attribute>
-      <description><![CDATA[
 
-        <p class="changed_added_2_0">If present, this attribute refers
-        to the value of one of the exposed attached objects within the
-        composite component inside of which this tag is nested.</p>
 
-      ]]></description>
-      <name>for</name>
-      <required>false</required>
-      <deferred-value>
-          <type>java.lang.String</type>
-      </deferred-value>         
 
-    </attribute>
-    </tag>
 
     <tag>
         <description><![CDATA[
 
-        <p class="changed_added_2_0"><span
-        class="changed_modified_2_0_rev_a">Register</span> an
-        AjaxBehavior instance on one or more UIComponents implementing
-        the ClientBehaviorHolder interface.  This tag may be nested
-        witin a single component (enabling Ajax for a single component),
-        or it may be "wrapped" around multiple components (enabling Ajax
-        for many components).</p>
+            <p class="changed_added_2_0"><span
+            class="changed_modified_2_0_rev_a">Allow</span> JSF page
+            authors to install <code>ComponentSystemEventListener</code>
+            instances on a component in a page.</p>
 
-        <p class="changed_added_2_0">The String value for ids
-        specified for execute and render may be specified as a search
-        expression as outlined in the JavaDocs for
-        <code>UIComponent.findComponent()</code>. The implementation
-        must resolve these ids as specified for
-        <code>UIComponent.findComponent()</code>.  For example, consider
-        the following Facelets code.</p>
+            <div class="changed_added_2_0">
 
-<div class="xml" style="font-family:monospace;"><ol><li style="background: #fcfcfc;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;"><h:form</span> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">"form_1"</span><span style="color: #000000; font-weight: bold;">></span></span></div></li> 
-<li style="background: #f0f0f0;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;"><h:panelGrid</span> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">"panel_1"</span> <span style="color: #000066;">rows</span>=<span style="color: #ff0000;">"2"</span><span style="color: #000000; font-weight: bold;"> [...]
-<li style="background: #fcfcfc;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">    <span style="color: #808080; font-style: italic;"><!-- content irrelevant --></span></div></li> 
-<li style="background: #f0f0f0;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;"></h:panelGrid<span style="color: #000000; font-weight: bold;">></span></span></span></div></li> 
-<li style="background: #fcfcfc;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;"></h:form<span style="color: #000000; font-weight: bold;">></span></span></span></div></li> 
-<li style="background: #f0f0f0;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"> </div></li> 
-<li style="background: #fcfcfc;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;"><h:form</span> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">"form_2"</span><span style="color: #000000; font-weight: bold;">></span></span></div></li> 
-<li style="background: #f0f0f0;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;"><h:commandButton</span> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">"button"</span><span style="color: #000000; font-weight: bold;">></span></span></div></li> 
-<li style="background: #fcfcfc;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;"><f:ajax</span> <span style="color: #000066;">render</span>=<span style="color: #ff0000;">":form1:panel_1 panel_2"</span> <span style="color: #000000; font-weight: bold;">/></span></span></div></li> 
-<li style="background: #f0f0f0;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;"></h:commandButton<span style="color: #000000; font-weight: bold;">></span></span></span></div></li> 
-<li style="background: #fcfcfc;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;"><h:panelGrid</span> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">"panel_2"</span><span style="color: #000000; font-weight: bold;">></span></span></div></li> 
-<li style="background: #f0f0f0;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">    <span style="color: #808080; font-style: italic;"><!-- content irrelevant --></span></div></li> 
-<li style="background: #fcfcfc;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;"></h:panelGrid<span style="color: #000000; font-weight: bold;">></span></span></span></div></li> 
-<li style="background: #f0f0f0;"><div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;"></h:form<span style="color: #000000; font-weight: bold;">></span></span></span></div></li> 
-</ol></div>
+            <p></p>
 
-        <p class="changed_added_2_0">When the button is pressed,
-        panel_1, in form_1 will be re-rendered, along with panel_2 in
-        form_2.</p>
+            </div>
 
         ]]></description>
-        <name>ajax</name>
-        <body-content>empty</body-content>
+        <name>event</name>
+        <body-content>JSP</body-content>
 
-     <attribute>
-         <description><![CDATA[
-             <p class="changed_added_2_0">A value of "true" indicates the 
-             AjaxBehavior should not be rendered.  A value of "false" indicates 
-             the AjaxBehavior should be rendered.  "false" is the default.</p>
+        <attribute>
+            <description><![CDATA[
 
-         ]]></description>
-         <name>disabled</name>
-         <required>false</required>
-         <deferred-value>
-             <type>java.lang.Boolean</type>
-         </deferred-value>
+                <p class="changed_added_2_0">Name of the event for which
+                to install a listener.  The following table lists the
+                valid values for this attribute, and the corresponding
+                event type for which the listener action is
+                registered.</p>
 
-     </attribute>
+<table border="1">
+<tr>
 
-     <attribute>
-         <description><![CDATA[
-             <p class="changed_added_2_0">A String identifying the type of event 
-             the Ajax action will apply to. If specified, it must be one of the 
-             events supported by the component the Ajax behavior is being applied to. 
-             For HTML components this would be the set of supported DOM events for the
-             component, plus "action" for Faces ActionSource components and "valueChange"
-             for Faces EditableValueHolder components.  If not specified, the default 
-             event is determined for the component.  The DOM event name is the actual DOM
-             event name (for example: "click") as opposed to (for example: "onclick").</p>
+<th>value for "<code><span
+class="changed_modified_2_0_rev_a">type</span></code>" tag
+attribute</th>
 
-         ]]></description>
-         <name>event</name>
-         <required>false</required>
-         <deferred-value>
-             <type>java.lang.String</type>
-         </deferred-value>
+<th>Type of event sent to listener method
+</th>
 
-     </attribute>
+</tr>
 
-     <attribute>
-         <description><![CDATA[ <p class="changed_added_2_0">Evaluates
-         to Collection<String>. This is a space separated list of
-         client ids of components that will participate in the "execute"
-         portion of the Request Processing Lifecycle.  If a literal is
-         specified the ids must be space delimited.  Any of the
-         keywords "@this", "@form", "@all", "@none" may be specified in
-         the id list. If not specified, the default value of
-         "@this" is assumed.  <span
-         class="changed_modified_2_0_rev_a">For example, <code>@this clientIdOne clientIdTwo</code>.</span></p>
+<tr>
 
-         ]]></description>
-         <name>execute</name>
-         <required>false</required>
-         <deferred-value>
-             <type>java.util.Collection</type>
-         </deferred-value>
+<td>preRenderComponent
+</td>
 
-     </attribute>
+<td>javax.faces.event.PreRenderComponentEvent
+</td>
 
-    <attribute>
-      <description><![CDATA[
-        <p class="changed_added_2_0">If "true" behavior events generated from this behavior 
-        are broadcast during Apply Request Values phase. Otherwise, the events will be 
-        broadcast during Invoke Aplications phase</p>
+</tr>
 
-      ]]></description>
-      <name>immediate</name>
-      <required>false</required>
-      <deferred-value>
-          <type>java.lang.Boolean</type>
-      </deferred-value>
+<tr>
 
-    </attribute>
+<td>preRenderView
+</td>
 
-     <attribute>
-         <description><![CDATA[
-             <p class="changed_added_2_0">Method expression referencing a method 
-             that will be called when an AjaxBehaviorEvent has been 
-             broadcast for the listener.</p>
-
-         ]]></description>
-         <name>listener</name>
-         <required>false</required>
-         <rtexprvalue>false</rtexprvalue>
-         <deferred-method>
-             <method-signature>public void processAjaxBehavior(javax.faces.event.AjaxBehaviorEvent event) throws javax.faces.event.AbortProcessingException</method-signature>
-         </deferred-method>
-
-    </attribute>
-
-    <attribute>
-      <description><![CDATA[
-        <p class="changed_added_2_0">The name of the JavaScript function that will handle UI events.</p>
-
-      ]]></description>
-      <name>onevent</name>
-      <required>false</required>
-      <deferred-value>
-          <type>java.lang.String</type>
-      </deferred-value>
-
-    </attribute>
-
-    <attribute>
-      <description><![CDATA[
-        <p class="changed_added_2_0">The name of the JavaScript function that will handle errors.</p>
-
-      ]]></description>
-      <name>onerror</name>
-      <required>false</required>
-      <deferred-value>
-          <type>java.lang.String</type>
-      </deferred-value>
-
-    </attribute>
-
-     <attribute>
-         <description><![CDATA[ <p class="changed_added_2_0">Evaluates
-         to Collection<String>. The clientIds of components that will
-         participate in the "render" portion of the Request Processing
-         Lifecycle.  If a literal is specified the identifiers must be
-         space delimited.  Any of the keywords "@this", "@form", "@all",
-         "@none" may be specified in the identifier list.  If not
-         specified, the default value of "@none" is assumed.  <span
-         class="changed_modified_2_0_rev_a">For example, <code>@this
-         clientIdOne clientIdTwo</code>.</span></p>
-
-         ]]></description>
-         <name>render</name>
-         <required>false</required>
-         <deferred-value>
-             <type>java.util.Collection</type>
-         </deferred-value>
-
-     </attribute>
-
-    </tag>
-
-    <tag>
-        <description><![CDATA[
-
-            <p class="changed_added_2_0"><span
-            class="changed_modified_2_0_rev_a">Allow</span> JSF page
-            authors to install <code>ComponentSystemEventListener</code>
-            instances on a component in a page.</p>
-
-            <div class="changed_added_2_0">
-
-            <p></p>
-
-            </div>
-
-        ]]></description>
-        <name>event</name>
-        <body-content>JSP</body-content>
-
-        <attribute>
-            <description><![CDATA[
-
-                <p class="changed_added_2_0">Name of the event for which
-                to install a listener.  The following table lists the
-                valid values for this attribute, and the corresponding
-                event type for which the listener action is
-                registered.</p>
-
-<table border="1">
-<tr>
-
-<th>value for "<code>type</code>" tag attribute</th>
-
-<th>Type of event sent to listener method
-</th>
+<td>javax.faces.event.PreRenderViewEvent
+</td>
 
 </tr>
 
 <tr>
 
-<td>preRenderComponent
-</td>
-
-<td>javax.faces.event.PreRenderComponentEvent
-</td>
-
-</tr>
-
-<tr>
-
-<td>postAddToView
+<td><span class="changed_modified_2_0_rev_a">postAddToView</span>
 </td>
 
 <td>javax.faces.event.PostAddToViewEvent
@@ -804,7 +957,7 @@ for <code>@NamedEvent</code>.</p>
         </attribute>
 
         <attribute>
-            <description>
+            <description><![CDATA[
 
               <p class="changed_modified_2_0_rev_a">The expression must
               evaluate to a public method that takes a
@@ -815,7 +968,7 @@ for <code>@NamedEvent</code>.</p>
               came from, but this can be useful in cases where a
               notification is needed that "an event happened".</p>
 
-            </description>
+            ]]></description>
             <name>listener</name>
             <required>true</required>
             <rtexprvalue>false</rtexprvalue>
@@ -853,6 +1006,48 @@ for <code>@NamedEvent</code>.</p>
     </tag>
 
     <tag>
+        <description>
+            Load a resource bundle localized for the Locale of the current
+            view, and expose it as a java.util.Map in the request attributes
+            of the current request under the key specified by the value of the
+            "var" attribute of this tag.  The Map must behave such that if a
+            get() call is made for a key that does not exist in the Map, the
+            literal string ???KEY??? is returned from the Map, where KEY is
+            the key being looked up in the Map, instead of a
+            MissingResourceException being thrown.  If the ResourceBundle does
+            not exist, a JspException must be thrown.
+        </description>
+        <name>loadBundle</name>
+        <tag-class>com.sun.faces.taglib.jsf_core.LoadBundleTag</tag-class>
+        <body-content>empty</body-content>
+
+        <attribute>
+            <description>
+                Base name of the resource bundle
+                to be loaded.
+            </description>
+            <name>basename</name>
+            <deferred-value>
+                <type>java.lang.String</type>
+            </deferred-value>
+        </attribute>
+
+        <attribute>
+            <description>
+                Name of a request scope attribute under which
+                the resource bundle will be exposed as a Map.
+            </description>
+            <name>var</name>
+            <required>true</required>
+            <rtexprvalue>false</rtexprvalue>
+        </attribute>
+    </tag>
+
+
+
+
+
+    <tag>
         <description><![CDATA[
 
             <p class="changed_added_2_0"><span
@@ -901,8 +1096,8 @@ viewId.</p>
 
 
 <div class="html4strict" style="font-family: monospace;"><ol><li class="li1"><div class="de1"><span class="sc2"><span class="kw2"><html</span> xmlns=<span class="st0">"http://www.w3.org/1999/xhtml"</span></div></li>
-<li class="li2"><div class="de2">      xmlns:ui=<span class="st0">"http://java.sun.com/jsf/facelets"</span></div></li>
-<li class="li1"><div class="de1">      xmlns:f=<span class="st0">"http://java.sun.com/jsf/core"</span></div></li>
+<li class="li2"><div class="de2">      xmlns:ui=<span class="st0">"http://xmlns.jcp.org/jsf/facelets"</span></div></li>
+<li class="li1"><div class="de1">      xmlns:f=<span class="st0">"http://xmlns.jcp.org/jsf/core"</span></div></li>
 <li class="li2"><div class="de2">      xml:<span class="kw3">lang</span>=<span class="st0">"en"</span> <span class="kw3">lang</span>=<span class="st0">"en"</span><span class="kw2">></span></span></div></li>
 <li class="li1"><div class="de1"> </div></li>
 <li class="li2"><div class="de2"><span class="sc2"><span class="kw2"><body></span></span></div></li>
@@ -932,44 +1127,6 @@ they do, it must be done as shown above, (or with
     </tag>
 
 
-    <tag>
-        <description>
-            Load a resource bundle localized for the Locale of the current
-            view, and expose it as a java.util.Map in the request attributes
-            of the current request under the key specified by the value of the
-            "var" attribute of this tag.  The Map must behave such that if a
-            get() call is made for a key that does not exist in the Map, the
-            literal string ???KEY??? is returned from the Map, where KEY is
-            the key being looked up in the Map, instead of a
-            MissingResourceException being thrown.  If the ResourceBundle does
-            not exist, a JspException must be thrown.
-        </description>
-        <name>loadBundle</name>
-        <tag-class>com.sun.faces.taglib.jsf_core.LoadBundleTag</tag-class>
-        <body-content>empty</body-content>
-
-        <attribute>
-            <description>
-                Base name of the resource bundle
-                to be loaded.
-            </description>
-            <name>basename</name>
-            <deferred-value>
-                <type>java.lang.String</type>
-            </deferred-value>
-        </attribute>
-
-        <attribute>
-            <description>
-                Name of a request scope attribute under which
-                the resource bundle will be exposed as a Map.
-            </description>
-            <name>var</name>
-            <required>true</required>
-            <rtexprvalue>false</rtexprvalue>
-        </attribute>
-    </tag>
-
 
     <tag>
         <description><![CDATA[ <p><span
@@ -1045,311 +1202,184 @@ they do, it must be done as shown above, (or with
 
     </tag>
 
-    <tag>
-        <description><![CDATA[
 
-            <p class="changed_added_2_0"><span
-            class="changed_modified_2_0_rev_a">Used</span> inside of the
-            metada facet of a view, this tag causes a <a target="_"
-            href="../../../javadocs/javax/faces/component/UIViewParameter.html">UIViewParameter</a>
-            to be attached as metadata for the current view.  Because
-            <code>UIViewParameter</code> extends <code>UIInput</code>
-            all of the attributes and nested child content for any
-            <code>UIInput</code> tags are valid on this tag as well.</p>
 
-        ]]></description>
-        <name>viewParam</name>
-        <tag-class>com.sun.faces.taglib.jsf_core.ParameterTag</tag-class>
-        <body-content>JSP</body-content>
+  <tag>
+
+    <description>
+      Register a PhaseListener instance on the UIViewRoot in which
+      this tag is nested.
+    </description>
+    <name>phaseListener</name>
+    <tag-class>com.sun.faces.taglib.jsf_core.PhaseListenerTag</tag-class>
+    <body-content>empty</body-content>
+
+    <attribute>
+      <description>
+        Fully qualified Java class name of an PhaseListener to be
+        created and registered.
+      </description>
+      <name>type</name>
+      <required>false</required>
+      <deferred-value>
+          <type>java.lang.String</type>
+      </deferred-value>
+
+    </attribute>
+
+    <attribute>
+      <description>
+        Value binding expression that evaluates to an object that 
+        implements javax.faces.event.PhaseListener.
+      </description>
+      <name>binding</name>
+      <required>false</required>
+      <deferred-value>
+          <type>javax.faces.event.PhaseListener</type>
+      </deferred-value>
+
+    </attribute>
+  </tag>
+
+    <tag>
+        <description>
+            Add a child UISelectItem component to the UIComponent
+            associated with the closest parent UIComponent custom
+            action.
+        </description>
+        <name>selectItem</name>
+        <tag-class>com.sun.faces.taglib.jsf_core.SelectItemTag</tag-class>
+        <body-content>empty</body-content>
 
         <attribute>
             <description>
-                <![CDATA[Converter instance registered with this component.]]>
+                Value binding expression to a backing bean
+                property bound to the component instance for
+                the UIComponent created by this custom action.
             </description>
-            <name>
-                converter
-            </name>
-            <required>
-                false
-            </required>
+            <name>binding</name>
             <deferred-value>
-                <type>
-                    javax.faces.convert.Converter
-                </type>
+                <type>javax.faces.component.UIComponent</type>
             </deferred-value>
         </attribute>
+
         <attribute>
             <description>
-                <![CDATA[A ValueExpression enabled attribute that, if present, will be
-                used as the text of the converter message, replacing any message
-                that comes from the converter.]]>
+                Component identifier of the UISelectItem
+                component to be created.
             </description>
-            <name>
-                converterMessage
-            </name>
-            <required>
-                false
-            </required>
-            <deferred-value>
-                <type>
-                    java.lang.String
-                </type>
-            </deferred-value>
-        </attribute>
-        <attribute>
-            <description>
-                <![CDATA[The component identifier for this component.  This value must be
-                unique within the closest parent component that is a naming
-                container.]]>
-            </description>
-            <name>
-                id
-            </name>
-            <required>
-                false
-            </required>
-            <rtexprvalue>
-                true
-            </rtexprvalue>
-        </attribute>
-        <attribute>
-            <description>
-                <![CDATA[Flag indicating that the user is required to provide a submitted
-                value for this input component.]]>
-            </description>
-            <name>
-                required
-            </name>
-            <required>
-                false
-            </required>
-            <deferred-value>
-                <type>
-                    boolean
-                </type>
-            </deferred-value>
+            <name>id</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
         </attribute>
+
         <attribute>
             <description>
-                <![CDATA[A ValueExpression enabled attribute that, if present, will be
-                used as the text of the validation message for the "required"
-                facility, if the "required" facility is used.]]>
+                Description of this option, for use in
+                development tools.
             </description>
-            <name>
-                requiredMessage
-            </name>
-            <required>
-                false
-            </required>
+            <name>itemDescription</name>
             <deferred-value>
-                <type>
-                    java.lang.String
-                </type>
+                <type>java.lang.String</type>
             </deferred-value>
         </attribute>
+
         <attribute>
             <description>
-                <![CDATA[MethodExpression representing a validator method that will be called
-                during Process Validations to perform correctness checks on the
-                value of this component.  The expression must evaluate to a public
-                method that takes FacesContext, UIComponent, and Object parameters,
-                with a return type of void.]]>
-            </description>
-            <name>
-                validator
-            </name>
-            <required>
-                false
-            </required>
-            <deferred-method>
-                <method-signature>
-                    void validate(javax.faces.context.FacesContext, javax.faces.component.UIComponent, java.lang.Object)
-                </method-signature>
-            </deferred-method>
-        </attribute>
-        <attribute>
-            <description>
-                <![CDATA[A ValueExpression enabled attribute that, if present, will be
-                used as the text of the validator message, replacing any
-                message that comes from the validator.]]>
+                Flag indicating whether the option created
+                by this component is disabled.  Expressions
+                must evaluate to a boolean.  Default value
+                is false.
             </description>
-            <name>
-                validatorMessage
-            </name>
-            <required>
-                false
-            </required>
+            <name>itemDisabled</name>
             <deferred-value>
-                <type>
-                    java.lang.String
-                </type>
+                <type>java.lang.Boolean</type>
             </deferred-value>
         </attribute>
+
         <attribute>
             <description>
-                A ValueExpression to which the value of the request parameter, as
-                determined by the name attribute, is bound. The resolved value of this
-                expression is used when encoding the view parameter into a bookmarkable link or
-                redirect URL with view parameter encoding enabled. If this attribute is omitted,
-                the value of the request parameter will instead be the local value of the
-                UIViewParameter.
+                Label to be displayed to the user
+                for this option.
             </description>
-            <name>
-                value
-            </name>
-            <required>
-                false
-            </required>
+            <name>itemLabel</name>
             <deferred-value>
-                <type>
-                    java.lang.Object
-                </type>
+                <type>java.lang.String</type>
             </deferred-value>
         </attribute>
+
         <attribute>
             <description>
-                The name of the request parameter from which the value for this component
-                is retrieved on an initial request or to override the stored value on a
-                 postback.
+                Flag indicating that characters that are sensitive in
+                the value of the <![CDATA[<code>itemLabel</code>]]>
+                attribute must be escaped. This flag is set to "true" by
+                default.
             </description>
-            <name>name</name>
-            <required>
-                true
-            </required>
+            <name>escapeItem</name>
             <deferred-value>
                 <type>java.lang.String</type>
             </deferred-value>
         </attribute>
+
         <attribute>
             <description>
-                <![CDATA[<p>
-                
-                MethodExpression representing a value change listener method
-                that will be notified when a new value has been set for this
-                input component.  The expression must evaluate to a public
-                method that takes a <code>ValueChangeEvent</code> parameter,
-                with a return type of void, <span class="changed_added_2_0">or
-                to a public method that takes no arguments with a return type
-                of void.  In the latter case, the method has no way of easily
-                knowing what the new value is, but this can be useful in cases
-                where a notification is needed that "this value
-                changed".</span>
-                
-                </p>]]>
+                Value to be returned to the server if this
+                option is selected by the user.
             </description>
-            <name>
-                valueChangeListener
-            </name>
-            <required>
-                false
-            </required>
-            <deferred-method>
-                <method-signature>
-                    void valueChange(javax.faces.event.ValueChangeEvent)
-                </method-signature>
-            </deferred-method>
+            <name>itemValue</name>
+            <deferred-value/>
         </attribute>
 
         <attribute>
             <description>
-                <![CDATA[The maximum number of characters that may
-                be entered in this field.]]>
+                Value binding expression pointing at a
+                SelectItem instance containing the
+                information for this option.
             </description>
-            <name>
-                maxlength
-            </name>
-            <required>
-                false
-            </required>
+            <name>value</name>
             <deferred-value>
-                <type>
-                    int
-                </type>
+                <type>javax.faces.model.SelectItem</type>
             </deferred-value>
         </attribute>
 
         <attribute>
             <description>
-                The ValueExpression linking this component to a property in a backing bean
+                Flag indicating whether the option created by this
+                component represents the special "no selection"
+                option.  Expressions must evaluate to a boolean.
+                Default value is false.
             </description>
-            <name>
-                binding
-            </name>
-            <required>
-                false
-            </required>
+            <name>noSelectionOption</name>
             <deferred-value>
-                <type>
-                    javax.faces.component.UIComponent
-                </type>
+                <type>java.lang.Boolean</type>
             </deferred-value>
         </attribute>
 
-    <attribute>
-      <description><![CDATA[
-
-        <p class="changed_added_2_0"><span
-        class="changed_deleted_2_0_rev_a">If present, this attribute
-        refers to the value of one of the exposed attached objects
-        within the composite component inside of which this tag is
-        nested.</span></p>
-
-      ]]></description>
-      <name>for</name>
-      <required>false</required>
-      <deferred-value>
-          <type>java.lang.String</type>
-      </deferred-value>         
-
-    </attribute>
 
     </tag>
 
-  <tag>
-
-    <description>
-      Register a PhaseListener instance on the UIViewRoot in which
-      this tag is nested.
-    </description>
-    <name>phaseListener</name>
-    <tag-class>com.sun.faces.taglib.jsf_core.PhaseListenerTag</tag-class>
-    <body-content>empty</body-content>
 
-    <attribute>
-      <description>
-        Fully qualified Java class name of an PhaseListener to be
-        created and registered.
-      </description>
-      <name>type</name>
-      <required>false</required>
-      <deferred-value>
-          <type>java.lang.String</type>
-      </deferred-value>
+    <tag>
+        <description>
+            <![CDATA[<p><span class="changed_modified_2_0
+            changed_modified_2_0_rev_a changed_modified_2_2">Add</span>
+            a child UISelectItems component to the UIComponent
+            associated with the closest parent UIComponent custom
+            action.</p>
 
-    </attribute>
+            <p class="changed_modified_2_0">When iterating over the
+            select items, <code>toString()</code> must be called on the
+            string rendered attribute values.</p>
 
-    <attribute>
-      <description>
-        Value binding expression that evaluates to an object that 
-        implements javax.faces.event.PhaseListener.
-      </description>
-      <name>binding</name>
-      <required>false</required>
-      <deferred-value>
-          <type>javax.faces.event.PhaseListener</type>
-      </deferred-value>
+<p class="changed_added_2_0">Version 2 of the specification introduces
+several new attributes, described below.  These are: var, itemValue,
+itemLabel, itemDescription, itemDisabled, and itemLabelEscaped.</p>
 
-    </attribute>
-  </tag>
+            ]]>
 
-    <tag>
-        <description>
-            Add a child UISelectItem component to the UIComponent
-            associated with the closest parent UIComponent custom
-            action.
         </description>
-        <name>selectItem</name>
-        <tag-class>com.sun.faces.taglib.jsf_core.SelectItemTag</tag-class>
+        <name>selectItems</name>
+        <tag-class>com.sun.faces.taglib.jsf_core.SelectItemsTag</tag-class>
         <body-content>empty</body-content>
 
         <attribute>
@@ -1366,136 +1396,7 @@ they do, it must be done as shown above, (or with
 
         <attribute>
             <description>
-                Component identifier of the UISelectItem
-                component to be created.
-            </description>
-            <name>id</name>
-            <required>false</required>
-            <rtexprvalue>true</rtexprvalue>
-        </attribute>
-
-        <attribute>
-            <description>
-                Description of this option, for use in
-                development tools.
-            </description>
-            <name>itemDescription</name>
-            <deferred-value>
-                <type>java.lang.String</type>
-            </deferred-value>
-        </attribute>
-
-        <attribute>
-            <description>
-                Flag indicating whether the option created
-                by this component is disabled.  Expressions
-                must evaluate to a boolean.  Default value
-                is false.
-            </description>
-            <name>itemDisabled</name>
-            <deferred-value>
-                <type>java.lang.Boolean</type>
-            </deferred-value>
-        </attribute>
-
-        <attribute>
-            <description>
-                Label to be displayed to the user
-                for this option.
-            </description>
-            <name>itemLabel</name>
-            <deferred-value>
-                <type>java.lang.String</type>
-            </deferred-value>
-        </attribute>
-
-        <attribute>
-            <description>
-                Flag indicating that characters that are sensitive in
-                the value of the <![CDATA[<code>itemLabel</code>]]>
-                attribute must be escaped. This flag is set to "true" by
-                default.
-            </description>
-            <name>escapeItem</name>
-            <deferred-value>
-                <type>java.lang.String</type>
-            </deferred-value>
-        </attribute>
-
-        <attribute>
-            <description>
-                Value to be returned to the server if this
-                option is selected by the user.
-            </description>
-            <name>itemValue</name>
-            <deferred-value/>
-        </attribute>
-
-        <attribute>
-            <description>
-                Value binding expression pointing at a
-                SelectItem instance containing the
-                information for this option.
-            </description>
-            <name>value</name>
-            <deferred-value>
-                <type>javax.faces.model.SelectItem</type>
-            </deferred-value>
-        </attribute>
-
-        <attribute>
-            <description>
-                Flag indicating whether the option created by this
-                component represents the special "no selection"
-                option.  Expressions must evaluate to a boolean.
-                Default value is false.
-            </description>
-            <name>noSelectionOption</name>
-            <deferred-value>
-                <type>java.lang.Boolean</type>
-            </deferred-value>
-        </attribute>
-
-
-    </tag>
-
-
-    <tag>
-        <description>
-            <![CDATA[<p><span class="changed_modified_2_0">Add</span> a
-            child UISelectItems component to the UIComponent associated
-            with the closed parent UIComponent custom action.</p>
-
-            <p class="changed_modified_2_0">When iterating over the
-            select items, <code>toString()</code> must be called on the
-            string rendered attribute values.</p>
-
-<p class="changed_added_2_0">Version 2 of the specification introduces
-several new attributes, described below.  These are: var, itemValue,
-itemLabel, itemDescription, itemDisabled, and itemLabelEscaped.</p>
-
-            ]]>
-
-        </description>
-        <name>selectItems</name>
-        <tag-class>com.sun.faces.taglib.jsf_core.SelectItemsTag</tag-class>
-        <body-content>empty</body-content>
-
-        <attribute>
-            <description>
-                Value binding expression to a backing bean
-                property bound to the component instance for
-                the UIComponent created by this custom action.
-            </description>
-            <name>binding</name>
-            <deferred-value>
-                <type>javax.faces.component.UIComponent</type>
-            </deferred-value>
-        </attribute>
-
-        <attribute>
-            <description>
-                Component identifier of the UISelectItems
+                Component identifier of the UISelectItems
                 component to be created.
             </description>
             <name>id</name>
@@ -1521,7 +1422,7 @@ itemLabel, itemDescription, itemDisabled, and itemLabelEscaped.</p>
 <div class="syntax"><div class="html4strict" style="font-family: monospace;"><ol><li class="li1"><div class="de1"><span class="sc2"><h:selectOneListbox <span class="kw3">size</span>=<span class="st0">"1"</span> <span class="kw3">id</span>=<span class="st0">"escape02"</span> <span class="kw3">value</span>=<span class="st0">"#{select05NoSelection.initialCollectionValues}"</span><span class="kw2">></span></span></div></li>
 <li class="li2"><div class="de2">  <span class="sc2"><f:selectItems <span class="kw3">value</span>=<span class="st0">"#{select05NoSelection.hobbitList}"</span></div></li>
 <li class="li1"><div class="de1">                 var=<span class="st0">"n"</span></div></li>
-<li class="li2"><div class="de2">                 itemValue=<span class="st0">"#{n}"</span></div></li>
+<li class="li2"><div class="de2">                 itemValue=<span class="st0">"#{n.id}"</span></div></li>
 <li class="li1"><div class="de1">                 itemLabel=<span class="st0">"#{n.bio}"</span></div></li>
 <li class="li2"><div class="de2">                 itemDescription=<span class="st0">"#{n.description}"</span></div></li>
 <li class="li1"><div class="de1">                 itemDisabled=<span class="st0">"#{n.disabled}"</span></div></li>
@@ -1571,9 +1472,7 @@ may be referred to in EL for the value of other attributes.</p>
         <attribute>
             <description>
 
-<![CDATA[ <p class="changed_added_2_0">evaluates to a
-<code>Collection</code>, array, or <code>Map</code> from which the items
-to be shown will be rendered.</p> ]]>
+<![CDATA[ <p class="changed_added_2_0"><span class="changed_modified_2_2">This attribute lets you refer to a property of the current member of the collection referenced by the "value" attribute, using the value of the "var" attribute as the base.  For example, #{n.id}.</span></p> ]]>
 
             </description>
             <name>itemValue</name>
@@ -1626,7 +1525,10 @@ determine if the item value is selectable or not.</p> ]]>
             <description>
 
 <![CDATA[ <p class="changed_added_2_0">evaluates to a boolean that will
-determine if the rendered markup for the item receives normal JSF HTML escaping or not.</p> ]]>
+determine if the rendered markup for the item receives normal JSF HTML
+escaping or not.  <span class="changed_added_2_2">If not specified, the
+runtime must behave as if the value were <code>true</code>.</span></p>
+]]>
 
             </description>
             <name>itemLabelEscaped</name>
@@ -1638,7 +1540,8 @@ determine if the rendered markup for the item receives normal JSF HTML escaping
         <attribute>
             <description>
 
-<![CDATA[ <p class="changed_added_2_0">Is either an EL expression
+<![CDATA[ <p class="changed_added_2_0"><span
+class="changed_modified_2_0_rev_a">Is</span> either an EL expression
 pointing to the element in the value collection whose value should be
 marked as a “no selection” item, or a literal string that
 exactly matches the value of the item in the collection that must be
@@ -1753,11 +1656,13 @@ will not pass validation.</p> ]]>
 
     <tag>
         <description>
-            Container action for all JavaServer Faces core and
-            custom component actions used on a nested page via
-            "jsp:include" or any custom action that dynamically
-            includes another page from the same web application,
-            such as JSTL's "c:import".
+
+            <![CDATA[<p class="changed_deleted_2_0_rev_a">Container
+            action for all JavaServer Faces core and custom component
+            actions used on a nested page via "jsp:include" or any
+            custom action that dynamically includes another page from
+            the same web application, such as JSTL's "c:import".</p>]]>
+
         </description>
         <name>subview</name>
         <tag-class>com.sun.faces.taglib.jsf_core.SubviewTag</tag-class>
@@ -2340,9 +2245,13 @@ will not pass validation.</p> ]]>
 
     <tag>
         <description>
-            Create and register a child UIOutput component
-            associated with the closest parent UIComponent
-            custom action, which renders nested body content.
+
+            <![CDATA[<p class="changed_deleted_2_0_rev_a">The use of
+            this element has been deprecated in Facelets for JSF 2.0 and
+            beyond. Create and register a child UIOutput component
+            associated with the closest parent UIComponent custom
+            action, which renders nested body content.</p>]]>
+
         </description>
         <name>verbatim</name>
         <tag-class>com.sun.faces.taglib.jsf_core.VerbatimTag</tag-class>
@@ -2386,8 +2295,10 @@ will not pass validation.</p> ]]>
 
     <tag>
         <description>
-            Container for all JavaServer Faces core and custom
-            component actions used on a page.
+            <![CDATA[<p><span class="changed_modified_2_0_rev_a
+            changed_modified_2_2">Container</span> for all JavaServer
+            Faces core and custom component actions used on a
+            page.</p>]]>
         </description>
         <name>view</name>
         <tag-class>com.sun.faces.taglib.jsf_core.ViewTag</tag-class>
@@ -2395,6 +2306,30 @@ will not pass validation.</p> ]]>
 
         <attribute>
             <description>
+                <![CDATA[<p class="changed_added_2_2">If
+                <code>true</code>, this view must not participate in
+                state saving or restoring.  Note that transient views
+                may not be used with <code>@ViewScoped</code> managed
+                beans.  The implementation must call
+                <code>setTransient()</code> on the
+                <code>UIViewRoot</code>, passing the value of the
+                attribute as specified in the markup.</p>]]>
+            </description>
+            <name>
+                transient
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    boolean
+                </type>
+            </deferred-value>
+        </attribute>
+
+        <attribute>
+            <description>
                 Locale to use for localizing this page.  Expressions
                 must evaluate to a java.util.Locale or to a String
                 that is converted to a Locale.
@@ -2419,8 +2354,38 @@ will not pass validation.</p> ]]>
     </attribute>
 
     <attribute>
+      <description><![CDATA[
+
+      <p class="changed_added_2_2">A comma separated list of
+      resource library contracts that may be used from within
+      the Facelets chain.  If this attribute is present, it
+      must only be on the outer-most file in the chain of
+      files that started ultimately with a call to
+      <code>ViewDeclarationLanguage.createView()</code>.  Any
+      use of this attribute on a non-outer-most file must be
+      silently ignored.</p>
+
+      <p class="changed_added_2_2">If this attribute exists on the tag,
+      empty or not, the tag handler must create a
+      <code>List<String></code> for the value of the attribute and
+      unconditionally call
+      <code>FacesContext.setRresourceLibraryContracts()</code> passing
+      that list value.</p>
+      
+      ]]></description>
+      <name>contracts</name>
+      <required>false</required>
+      <deferred-value>
+           <type>java.lang.String</type>
+      </deferred-value>
+
+    </attribute>
+
+
+    <attribute>
         <description>
-            Specifies the content-type of the response.
+            <![CDATA[<p class="changed_modified_2_0_rev_a">Specifies the
+            content-type of the response.</p>]]>
         </description>
         <name>contentType</name>
         <required>false</required>
@@ -2431,7 +2396,9 @@ will not pass validation.</p> ]]>
 
     <attribute>
         <description>
-            Specifies the character encoding that should be used for the response.
+            <![CDATA[<p class="changed_modified_2_0_rev_a">Specifies the
+            character encoding that should be used for the
+            response.</p>]]>
         </description>
         <name>encoding</name>
         <required>false</required>
@@ -2470,5 +2437,438 @@ will not pass validation.</p> ]]>
 
     </tag>
 
+    <tag>
+        <description><![CDATA[
+
+            <p class="changed_added_2_0"><span
+            class="changed_modified_2_0_rev_a changed_modified_2_2">Used</span> inside of the
+            metadata facet of a view, this tag causes a <a target="_"
+            href="../../../javadocs/javax/faces/component/UIViewParameter.html">UIViewParameter</a>
+            to be attached as metadata for the current view.  Because
+            <code>UIViewParameter</code> extends <code>UIInput</code>
+            all of the attributes and nested child content for any
+            <code>UIInput</code> tags are valid on this tag as well.</p>
+
+        ]]></description>
+        <name>viewParam</name>
+        <tag-class>com.sun.faces.taglib.jsf_core.ParameterTag</tag-class>
+        <body-content>JSP</body-content>
+
+        <attribute>
+            <description>
+                <![CDATA[Converter instance registered with this component.]]>
+            </description>
+            <name>
+                converter
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    javax.faces.convert.Converter
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[A ValueExpression enabled attribute that, if present, will be
+                used as the text of the converter message, replacing any message
+                that comes from the converter.]]>
+            </description>
+            <name>
+                converterMessage
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[The component identifier for this component.  This value must be
+                unique within the closest parent component that is a naming
+                container.]]>
+            </description>
+            <name>
+                id
+            </name>
+            <required>
+                false
+            </required>
+            <rtexprvalue>
+                true
+            </rtexprvalue>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Flag indicating that the user is required to provide a submitted
+                value for this input component.]]>
+            </description>
+            <name>
+                required
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    boolean
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[<p class="changed_modified_2_0_rev_a">A
+                ValueExpression enabled attribute that, if present, will
+                be used as the text of the validation message for the
+                "required" facility, if the "required" facility is
+                used.</p>]]>
+            </description>
+            <name>
+                requiredMessage
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[MethodExpression representing a validator method that will be called
+                during Process Validations to perform correctness checks on the
+                value of this component.  The expression must evaluate to a public
+                method that takes FacesContext, UIComponent, and Object parameters,
+                with a return type of void.]]>
+            </description>
+            <name>
+                validator
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-method>
+                <method-signature>
+                    void validate(javax.faces.context.FacesContext, javax.faces.component.UIComponent, java.lang.Object)
+                </method-signature>
+            </deferred-method>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[A ValueExpression enabled attribute that, if present, will be
+                used as the text of the validator message, replacing any
+                message that comes from the validator.]]>
+            </description>
+            <name>
+                validatorMessage
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.String
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                A ValueExpression to which the value of the request parameter, as
+                determined by the name attribute, is bound. The resolved value of this
+                expression is used when encoding the view parameter into a bookmarkable link or
+                redirect URL with view parameter encoding enabled. If this attribute is omitted,
+                the value of the request parameter will instead be the local value of the
+                UIViewParameter.
+            </description>
+            <name>
+                value
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    java.lang.Object
+                </type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[<p class="changed_modified_2_0_rev_a">The name
+                of the request parameter from which the value for this
+                component is retrieved on an initial request or to
+                override the stored value on a postback.</p>]]>
+            </description>
+            <name>name</name>
+            <required>
+                true
+            </required>
+            <deferred-value>
+                <type>java.lang.String</type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[<p>
+                
+                MethodExpression representing a value change listener method
+                that will be notified when a new value has been set for this
+                input component.  The expression must evaluate to a public
+                method that takes a <code>ValueChangeEvent</code> parameter,
+                with a return type of void, <span class="changed_added_2_0">or
+                to a public method that takes no arguments with a return type
+                of void.  In the latter case, the method has no way of easily
+                knowing what the new value is, but this can be useful in cases
+                where a notification is needed that "this value
+                changed".</span>
+                
+                </p>]]>
+            </description>
+            <name>
+                valueChangeListener
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-method>
+                <method-signature>
+                    void valueChange(javax.faces.event.ValueChangeEvent)
+                </method-signature>
+            </deferred-method>
+        </attribute>
+
+        <attribute>
+            <description>
+                The ValueExpression linking this component to a property in a backing bean
+            </description>
+            <name>
+                binding
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-value>
+                <type>
+                    javax.faces.component.UIComponent
+                </type>
+            </deferred-value>
+        </attribute>
+
+    <attribute>
+      <description><![CDATA[
+
+        <p class="changed_added_2_0"><span
+        class="changed_deleted_2_0_rev_a">If present, this attribute
+        refers to the value of one of the exposed attached objects
+        within the composite component inside of which this tag is
+        nested.</span></p>
+
+      ]]></description>
+      <name>for</name>
+      <required>false</required>
+      <deferred-value>
+          <type>java.lang.String</type>
+      </deferred-value>         
+
+    </attribute>
+
+    </tag>
+
+    <tag>
+        <description><![CDATA[
+
+            <p class="changed_added_2_2">This action component specifies
+            an application-specific command (or action), using an EL
+            method expression, to be invoked during one of the JSF
+            lifecycle phases, by default <em>Invoke Application</em>.</p>
+
+        ]]></description>
+        <name>viewAction</name>
+        <tag-class>javax.faces.webapp.UIComponentClassicTagBase</tag-class>
+        <body-content>JSP</body-content>
+        <attribute>
+            <description><![CDATA[
+
+                <p>MethodExpression representing the application action
+            to invoke when this component is activated by the user. The
+            expression must evaluate to a public method that takes no
+            parameters, and returns an Object (the toString() of which
+            is called to derive the logical outcome) which is passed to
+            the NavigationHandler for this application.</p>
+
+            ]]></description>
+            <name>action</name>
+            <required>true</required>
+            <deferred-method>
+                <method-signature>
+                    java.lang.Object action()
+                </method-signature>
+            </deferred-method>
+
+        </attribute>
+        <attribute>
+            <description><![CDATA[
+
+                <p>View actions are most commonly used on the initial
+            view request.  Therefore, view actions do not operate on
+            postback, by default.  This attribute enables a view action
+            to operate on postback.</p>
+
+            ]]></description>
+            <name>onPostback</name>
+            <required>false</required>
+            <deferred-value>
+             <type>java.lang.Boolean</type>
+            </deferred-value>
+        </attribute>
+        <attribute>
+            <description><![CDATA[
+
+                <p>Like all children of <code><f:metadata></code>,
+            a view action has no visual representation in the view.
+            This attribute has exactly the same effect on a view action
+            as the <code>rendered</code> attribute has on a visual
+            component.  Specifically, if the value of this attribute
+            evaluates to <code>false</code> the component has no
+            effect.</p>
+
+
+            ]]></description>
+            <name>rendered</name>
+            <required>false</required>
+            <deferred-value>
+             <type>java.lang.Boolean</type>
+            </deferred-value>
+
+        </attribute>
+        <attribute>
+            <description><![CDATA[
+
+                <p>Flag indicating that, if this component is activated
+                by the user, notifications should be delivered to
+                interested listeners and actions immediately (that is,
+                during Apply Request Values phase) rather than waiting
+                until Invoke Application phase.</p>
+
+            ]]></description>
+            <name>immediate</name>
+            <required>false</required>
+            <deferred-value>
+             <type>java.lang.Boolean</type>
+            </deferred-value>
+
+        </attribute>
+        <attribute>
+            <description><![CDATA[
+
+                <p>Specifies the phase in which the action invocation
+                should occur using the name of the phase constant in the
+                PhaseId class (the case does not matter). The value must
+                be one of APPLY_REQUEST_VALUES, PROCESS_VALIDATIONS,
+                UPDATE_MODEL_VALUES, or INVOKE_APPLICATION. The default
+                is INVOKE_APPLICATION.</p>
+
+            ]]></description>
+            <name>phase</name>
+            <required>false</required>
+            <deferred-value>
+             <type>java.lang.String</type>
+            </deferred-value>
+
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[<p>
+                
+                MethodExpression representing an action listener method that
+                will be notified when this component is activated by the user.
+                The expression must evaluate to a public method that takes an
+                ActionEvent parameter, with a return type of void, <span
+                class="changed_added_2_0">or to a public method that takes no
+                arguments with a return type of void.  In the latter case, the
+                method has no way of easily knowing where the event came from,
+                but this can be useful in cases where a notification is needed
+                that "some action happened".</span>
+                
+                </p>]]>
+            </description>
+            <name>
+                actionListener
+            </name>
+            <required>
+                false
+            </required>
+            <deferred-method>
+                <method-signature>
+                    void actionListener(javax.faces.event.ActionEvent)
+                </method-signature>
+            </deferred-method>
+        </attribute>
+    </tag>
+
+    <tag>
+        <description><![CDATA[
+
+            <p class="changed_added_2_2">Reset specific input values.
+            Interpret the value of the <code>render</code> attribute as
+            a space separated list of client identifiers suitable for
+            passing directly to <code>UIViewRoot.resetValues()</code>.
+            The implementation must cause an <code>ActionListener</code>
+            to be attached to the <code>ActionSource</code> component
+            in which this tag is nested that calls
+            <code>UIViewRoot.resetValues()</code> passing the value of
+            the <code>render</code> attribute as the argument.</p>
+
+        ]]></description>
+        <name>resetValues</name>
+        <tag-class>javax.faces.webapp.UIComponentClassicTagBase</tag-class>
+        <body-content>JSP</body-content>
+        <attribute>
+            <description><![CDATA[
+
+                <p class="changed_added_2_2">Evaluates to
+                Collection<String>. The clientIds of components
+                that will be passed to
+                <code>UIViewRoot.resetValues()</code>.  The identifiers
+                must be space delimited.  Note: do not use any of the
+                <code>@</code> keywords such as <code>@form</code> or
+                <code>@this</code> with this tag because
+                <code>UIViewRoot.resetValues()</code> does not descend
+                into the children of the listed components.</p>
+
+            ]]></description>
+            <name>render</name>
+            <required>true</required>
+            <deferred-value>
+              <type>java.util.Collection</type>
+            </deferred-value>
+
+        </attribute>
+
+        <attribute>
+          <description><![CDATA[
+          
+          <p class="changed_added_2_0">If present, this attribute refers
+          to the value of one of the exposed attached objects within the
+          composite component inside of which this tag is nested.</p>
+          
+          ]]></description>
+          <name>for</name>
+          <required>false</required>
+          <deferred-value>
+            <type>java.lang.String</type>
+          </deferred-value>         
+          
+        </attribute>
+
+    </tag>
 
 </taglib>
diff --git a/jsf-ri/conf/share/facelets_passthrough.tld b/jsf-ri/conf/share/facelets_passthrough.tld
new file mode 100644
index 0000000..249b198
--- /dev/null
+++ b/jsf-ri/conf/share/facelets_passthrough.tld
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<taglib xmlns="http://java.sun.com/xml/ns/javaee"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd"
+    version="2.1">
+
+
+    <!-- ========== Tag Library Description Elements ========================= -->
+
+    <description>
+        <![CDATA[<p class="changed_added_2_2">Facelet tag attributes in 
+        this namespace must be added to the pass through attribute map <br />
+        on the <code>UIComponent</code> corresponding to the facelet 
+        tag.  There are no tags in this tag library.</p>
+
+ 
+        <div class="changed_added_2_2">
+ 
+        <p>Usage example</p>
+
+        <code><pre><h:outputText value="Namespaced Attributes" p:foo="bar" /></pre></code>
+
+        <p>Would cause <code><span foo="bar">Namespaced Attributes</span></code> to be rendered.</p>
+
+
+        </div>
+
+        ]]>
+
+    </description>
+    <tlib-version>1.2</tlib-version>
+    <display-name>Pass Through Attributes</display-name>
+    <short-name>p</short-name>
+    <uri>http://xmlns.jcp.org/jsf/passthrough</uri>
+
+ <tag>
+     <description>_</description>
+     <name>_</name>
+     <body-content>empty</body-content>
+ </tag>
+
+
+</taglib>
diff --git a/jsf-ri/conf/share/facelets_passthrough_attributes.tld b/jsf-ri/conf/share/facelets_passthrough_attributes.tld
new file mode 100644
index 0000000..249b198
--- /dev/null
+++ b/jsf-ri/conf/share/facelets_passthrough_attributes.tld
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<taglib xmlns="http://java.sun.com/xml/ns/javaee"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd"
+    version="2.1">
+
+
+    <!-- ========== Tag Library Description Elements ========================= -->
+
+    <description>
+        <![CDATA[<p class="changed_added_2_2">Facelet tag attributes in 
+        this namespace must be added to the pass through attribute map <br />
+        on the <code>UIComponent</code> corresponding to the facelet 
+        tag.  There are no tags in this tag library.</p>
+
+ 
+        <div class="changed_added_2_2">
+ 
+        <p>Usage example</p>
+
+        <code><pre><h:outputText value="Namespaced Attributes" p:foo="bar" /></pre></code>
+
+        <p>Would cause <code><span foo="bar">Namespaced Attributes</span></code> to be rendered.</p>
+
+
+        </div>
+
+        ]]>
+
+    </description>
+    <tlib-version>1.2</tlib-version>
+    <display-name>Pass Through Attributes</display-name>
+    <short-name>p</short-name>
+    <uri>http://xmlns.jcp.org/jsf/passthrough</uri>
+
+ <tag>
+     <description>_</description>
+     <name>_</name>
+     <body-content>empty</body-content>
+ </tag>
+
+
+</taglib>
diff --git a/jsf-ri/conf/share/facelets_passthrough_elements.tld b/jsf-ri/conf/share/facelets_passthrough_elements.tld
new file mode 100644
index 0000000..faa5e20
--- /dev/null
+++ b/jsf-ri/conf/share/facelets_passthrough_elements.tld
@@ -0,0 +1,270 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<taglib xmlns="http://java.sun.com/xml/ns/javaee"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd"
+    version="2.1">
+
+
+    <!-- ========== Tag Library Description Elements ========================= -->
+
+    <description>
+        <![CDATA[<p class="changed_added_2_2">The presence of an <br />
+        attribute from this namespace on an otherwise non-JSF aware<br />
+        markup element indicates that the markup element must be treated<br />
+        as a JSF component that will be rendered equivalently to what is<br />
+        specified directly in the Facelet page, with the added benefit<br />
+        of being associated with a server side <code>UIComponent</code><br />
+        instance.
+
+        </p>
+
+        <div class="changed_added_2_2">
+
+        <p>Please see the documentation for Java class <code><a
+        href="javadocs/javax/faces/view/facelets/TagDecorator.html">javax.faces.view.facelets.TagDecorator</a></code>.</p>
+
+        </div>
+
+]]>
+
+    </description>
+    <tlib-version>1.2</tlib-version>
+    <display-name>Pass Through Elements</display-name>
+    <short-name>jsf</short-name>
+    <uri>http://xmlns.jcp.org/jsf</uri>
+
+ <tag>
+
+     <description><![CDATA[<p class="changed_added_2_2">Markup element
+     that causes a component of <code>component-family:
+     javax.faces.Panel</code> with <code>renderer-type:
+     javax.faces.passthrough.Element</code> to be inserted in the tree.
+     This element is primarily intended to be used by the default
+     <code>TagDecorator</code>, when no match is found as described in
+     the javadoc for that class.  The component that backs this element
+     must implement
+     <code>javax.faces.component.behavior.ClientBehaviorHolder</code>
+     and return "click" from its <code>getDefaultEventName()</code>
+     method.  The list of events returned from its
+     <code>getEventNames()</code> method must include the "on*"
+     attributes below, ommitting the leading "on".</p>
+
+    ]]></description>
+
+     <name>element</name>
+     <body-content>empty</body-content>
+
+     <attribute>
+         <description><![CDATA[<p class="changed_added_2_2">This
+         attribute must be in the
+         <code>http://xmlns.jcp.org/jsf/passthrough</code> namespace and
+         its value must be set into the component's pass through
+         attributes map under the key given by the value of the symbolic
+         constant
+         <code>javax.faces.render.Renderer.PASSTHROUGH_RENDERER_LOCALNAME_KEY</code>.</p>
+         ]]></description>
+         <name>elementName</name>
+         <required>true</required>
+         <deferred-value>
+             <type>java.lang.String</type>
+         </deferred-value>         
+
+     </attribute>
+
+    <attribute>
+        <description><![CDATA[<p class="changed_added_2_2">
+          Javascript code executed when a pointer button is
+          clicked over this element.
+        ]]></description>
+        
+        
+        <name>onclick</name>
+        <required>false</required>
+        <deferred-value>
+            <type>java.lang.String</type>
+        </deferred-value>         
+        
+    </attribute>
+
+    <attribute>
+        <description><![CDATA[<p class="changed_added_2_2">
+          Javascript code executed when a pointer button is
+          double clicked over this element.
+        ]]></description>
+        
+        
+        <name>ondblclick</name>
+        <required>false</required>
+        <deferred-value>
+            <type>java.lang.String</type>
+        </deferred-value>         
+        
+    </attribute>
+
+    <attribute>
+        <description><![CDATA[<p class="changed_added_2_2">
+          Javascript code executed when a pointer button is
+          pressed down over this element.
+        ]]></description>
+        
+        
+        <name>onmousedown</name>
+        <required>false</required>
+        <deferred-value>
+            <type>java.lang.String</type>
+        </deferred-value>         
+        
+    </attribute>
+
+    <attribute>
+        <description><![CDATA[<p class="changed_added_2_2">
+          Javascript code executed when a pointer button is
+          released over this element.
+        ]]></description>
+        
+        
+        <name>onmouseup</name>
+        <required>false</required>
+        <deferred-value>
+            <type>java.lang.String</type>
+        </deferred-value>         
+        
+    </attribute>
+
+    <attribute>
+        <description><![CDATA[<p class="changed_added_2_2">
+          Javascript code executed when a pointer button is
+          moved onto this element.
+        ]]></description>
+        
+        
+        <name>onmouseover</name>
+        <required>false</required>
+        <deferred-value>
+            <type>java.lang.String</type>
+        </deferred-value>         
+        
+    </attribute>
+
+    <attribute>
+        <description><![CDATA[<p class="changed_added_2_2">
+          Javascript code executed when a pointer button is
+          moved within this element.
+        ]]></description>
+        
+        
+        <name>onmousemove</name>
+        <required>false</required>
+        <deferred-value>
+            <type>java.lang.String</type>
+        </deferred-value>         
+        
+    </attribute>
+
+    <attribute>
+        <description><![CDATA[<p class="changed_added_2_2">
+          Javascript code executed when a pointer button is
+          moved away from this element.
+        ]]></description>
+        
+        
+        <name>onmouseout</name>
+        <required>false</required>
+        <deferred-value>
+            <type>java.lang.String</type>
+        </deferred-value>         
+        
+    </attribute>
+
+    <attribute>
+        <description><![CDATA[<p class="changed_added_2_2">
+          Javascript code executed when a key is
+          pressed and released over this element.
+        ]]></description>
+        
+        
+        <name>onkeypress</name>
+        <required>false</required>
+        <deferred-value>
+            <type>java.lang.String</type>
+        </deferred-value>         
+        
+    </attribute>
+
+    <attribute>
+        <description><![CDATA[<p class="changed_added_2_2">
+          Javascript code executed when a key is
+          pressed down over this element.
+        ]]></description>
+        
+        
+        <name>onkeydown</name>
+        <required>false</required>
+        <deferred-value>
+            <type>java.lang.String</type>
+        </deferred-value>         
+        
+    </attribute>
+
+    <attribute>
+        <description><![CDATA[<p class="changed_added_2_2">
+          Javascript code executed when a key is
+          released over this element.
+        ]]></description>
+        
+        
+        <name>onkeyup</name>
+        <required>false</required>
+        <deferred-value>
+            <type>java.lang.String</type>
+        </deferred-value>         
+        
+    </attribute>
+
+
+ </tag>
+
+
+</taglib>
diff --git a/jsf-ri/conf/share/html_basic.taglib.xml b/jsf-ri/conf/share/html_basic.taglib.xml
index c3117b3..f2a99f1 100644
--- a/jsf-ri/conf/share/html_basic.taglib.xml
+++ b/jsf-ri/conf/share/html_basic.taglib.xml
@@ -1,49 +1,56 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
- Copyright 2009 Sun Microsystems, Inc. All rights reserved.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
+    Copyright (c) 2009-2010 Oracle and/or its affiliates. All rights reserved.
 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
 
- Contributor(s):
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
 -->
-<facelet-taglib xmlns="http://java.sun.com/xml/ns/javaee"
+
+<facelet-taglib xmlns="http://xmlns.jcp.org/xml/ns/javaee"
                 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-                xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facelettaglibrary_2_0.xsd"
-                version="2.0">
-    <description>
+                xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-facelettaglibrary_2_2.xsd"
+                version="2.2">
+    <description><![CDATA[
         This tag library contains JavaServer Faces component tags for all
         UIComponent + HTML RenderKit Renderer combinations defined in the
         JavaServer Faces Specification.
-    </description>
-    <namespace>http://java.sun.com/jsf/html</namespace>
+    ]]></description>
+    <namespace>http://xmlns.jcp.org/jsf/html</namespace>
     <tag>
         <description>
             <![CDATA[<div class="changed_added_2_0">Render an HTML "input" element of type "button".
@@ -79,6 +86,28 @@
         </component>
         <attribute>
             <description>
+                <![CDATA[<p class="changed_added_2_2">Per the WAI-ARIA spec and its
+                relationship to HTML5 (Section title ARIA Role Attriubute),
+                every HTML element may have a "role" attribute whose value
+                must be passed through unmodified on the element on which it
+                is declared in the final rendered markup.  The attribute, if
+                specified, must have a value that is a string literal that is,
+                or an EL Expression that evaluates to, a set of
+                space-separated tokens representing the various WAI-ARIA roles
+                that the element belongs to.
+                </p>
+                
+                <p class="changed_added_2_2">It is the page author's
+                responsibility to ensure that the user agent is capable of
+                correctly interpreting the value of this attribute.</p>]]>
+            </description>
+            <name>role</name>
+            <required>false</required>
+            <type>javal.lang.String</type>
+        </attribute>
+
+        <attribute>
+            <description>
                 <![CDATA[The component identifier for this component.  This value must be
                 unique within the closest parent component that is a naming
                 container.]]>
@@ -514,6 +543,15 @@
                 javax.faces.component.UIComponent
             </type>
         </attribute>
+        <attribute>
+            <description>
+                <![CDATA[<p class="changed_added_2_2">Disable appending the <code>ClientWindow</code> on the rendering of this element.</p>]]>
+            </description>
+            <name>disableClientWindow</name>
+            <required>false</required>
+            <type>java.lang.Boolean</type>
+        </attribute>
+
     </tag>
     <tag>
         <description>
@@ -550,6 +588,35 @@
         </component>
         <attribute>
             <description>
+                <![CDATA[<p class="changed_added_2_2">Per the WAI-ARIA spec and its
+                relationship to HTML5 (Section title ARIA Role Attriubute),
+                every HTML element may have a "role" attribute whose value
+                must be passed through unmodified on the element on which it
+                is declared in the final rendered markup.  The attribute, if
+                specified, must have a value that is a string literal that is,
+                or an EL Expression that evaluates to, a set of
+                space-separated tokens representing the various WAI-ARIA roles
+                that the element belongs to.
+                </p>
+                
+                <p class="changed_added_2_2">It is the page author's
+                responsibility to ensure that the user agent is capable of
+                correctly interpreting the value of this attribute.</p>]]>
+            </description>
+            <name>role</name>
+            <required>false</required>
+            <type>java.lang.String</type>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[<p class="changed_added_2_2">Disable appending the <code>ClientWindow</code> on the rendering of this element.</p>]]>
+            </description>
+            <name>disableClientWindow</name>
+            <required>false</required>
+            <type>java.lang.Boolean</type>
+        </attribute>
+        <attribute>
+            <description>
                 <![CDATA[The component identifier for this component.  This value must be
                 unique within the closest parent component that is a naming
                 container.]]>
@@ -1492,6 +1559,27 @@
                 javax.faces.component.UIComponent
             </type>
         </attribute>
+        <attribute>
+            <description>
+                <![CDATA[<p class="changed_added_2_2">Per the WAI-ARIA spec and its
+                relationship to HTML5 (Section title ARIA Role Attriubute),
+                every HTML element may have a "role" attribute whose value
+                must be passed through unmodified on the element on which it
+                is declared in the final rendered markup.  The attribute, if
+                specified, must have a value that is a string literal that is,
+                or an EL Expression that evaluates to, a set of
+                space-separated tokens representing the various WAI-ARIA roles
+                that the element belongs to.
+                </p>
+
+                <p class="changed_added_2_2">It is the page author's
+                responsibility to ensure that the user agent is capable of
+                correctly interpreting the value of this attribute.</p>]]>
+            </description>
+            <name>role</name>
+            <required>false</required>
+            <type>java.lang.String</type>
+        </attribute>
     </tag>
     <tag>
         <description>
@@ -1585,6 +1673,27 @@
         </component>
         <attribute>
             <description>
+                <![CDATA[<p class="changed_added_2_2">Per the WAI-ARIA spec and its
+                relationship to HTML5 (Section title ARIA Role Attriubute),
+                every HTML element may have a "role" attribute whose value
+                must be passed through unmodified on the element on which it
+                is declared in the final rendered markup.  The attribute, if
+                specified, must have a value that is a string literal that is,
+                or an EL Expression that evaluates to, a set of
+                space-separated tokens representing the various WAI-ARIA roles
+                that the element belongs to.
+                </p>
+                
+                <p class="changed_added_2_2">It is the page author's
+                responsibility to ensure that the user agent is capable of
+                correctly interpreting the value of this attribute.</p>]]>
+            </description>
+            <name>role</name>
+            <required>false</required>
+            <type>java.lang.String</type>
+        </attribute>
+        <attribute>
+            <description>
                 MethodExpression representing the application action to invoke
                 when this component is activated by the user. The expression
                 must evaluate to a public method that takes no parameters, and
@@ -1637,7 +1746,7 @@
             </description>
             <name>immediate</name>
             <required>false</required>
-            <type>boolean</type>
+            <type>java.lang.Boolean</type>
         </attribute>
         <attribute>
             <description>
@@ -1647,7 +1756,7 @@
             </description>
             <name>rendered</name>
             <required>false</required>
-            <type>boolean</type>
+            <type>java.lang.Boolean</type>
         </attribute>
         <attribute>
             <description>
@@ -1695,7 +1804,7 @@
             </description>
             <name>disabled</name>
             <required>false</required>
-            <type>boolean</type>
+            <type>java.lang.Boolean</type>
         </attribute>
         <attribute>
             <description>
@@ -1873,7 +1982,7 @@
             </description>
             <name>readonly</name>
             <required>false</required>
-            <type>boolean</type>
+            <type>java.lang.Boolean</type>
         </attribute>
         <attribute>
             <description>
@@ -2057,6 +2166,27 @@
         </component>
         <attribute>
             <description>
+                <![CDATA[<p class="changed_added_2_2">Per the WAI-ARIA spec and its
+                relationship to HTML5 (Section title ARIA Role Attriubute),
+                every HTML element may have a "role" attribute whose value
+                must be passed through unmodified on the element on which it
+                is declared in the final rendered markup.  The attribute, if
+                specified, must have a value that is a string literal that is,
+                or an EL Expression that evaluates to, a set of
+                space-separated tokens representing the various WAI-ARIA roles
+                that the element belongs to.
+                </p>
+                
+                <p class="changed_added_2_2">It is the page author's
+                responsibility to ensure that the user agent is capable of
+                correctly interpreting the value of this attribute.</p>]]>
+            </description>
+            <name>role</name>
+            <required>false</required>
+            <type>java.lang.String</type>
+        </attribute>
+        <attribute>
+            <description>
                 MethodExpression representing the application action to invoke
                 when this component is activated by the user. The expression
                 must evaluate to a public method that takes no parameters, and
@@ -2109,7 +2239,7 @@
             </description>
             <name>immediate</name>
             <required>false</required>
-            <type>boolean</type>
+            <type>java.lang.Boolean</type>
         </attribute>
         <attribute>
             <description>
@@ -2119,7 +2249,7 @@
             </description>
             <name>rendered</name>
             <required>false</required>
-            <type>boolean</type>
+            <type>java.lang.Boolean</type>
         </attribute>
         <attribute>
             <description>
@@ -2175,7 +2305,7 @@
             </description>
             <name>disabled</name>
             <required>false</required>
-            <type>boolean</type>
+            <type>java.lang.Boolean</type>
         </attribute>
         <attribute>
             <description>
@@ -2552,7 +2682,7 @@
             </description>
             <name>rendered</name>
             <required>false</required>
-            <type>boolean</type>
+            <type>java.lang.Boolean</type>
         </attribute>
         <attribute>
             <description>
@@ -2894,6 +3024,27 @@
             <required>false</required>
             <type>javax.faces.component.UIComponent</type>
         </attribute>
+        <attribute>
+            <description>
+                <![CDATA[<p class="changed_added_2_2">Per the WAI-ARIA spec and its
+                relationship to HTML5 (Section title ARIA Role Attriubute),
+                every HTML element may have a "role" attribute whose value
+                must be passed through unmodified on the element on which it
+                is declared in the final rendered markup.  The attribute, if
+                specified, must have a value that is a string literal that is,
+                or an EL Expression that evaluates to, a set of
+                space-separated tokens representing the various WAI-ARIA roles
+                that the element belongs to.
+                </p>
+
+                <p class="changed_added_2_2">It is the page author's
+                responsibility to ensure that the user agent is capable of
+                correctly interpreting the value of this attribute.</p>]]>
+            </description>
+            <name>role</name>
+            <required>false</required>
+            <type>java.lang.String</type>
+        </attribute>
     </tag>
     <tag>
         <description>
@@ -2995,7 +3146,7 @@
             </description>
             <name>prependId</name>
             <required>false</required>
-            <type>boolean</type>
+            <type>java.lang.Boolean</type>
         </attribute>
         <attribute>
             <description>
@@ -3005,7 +3156,7 @@
             </description>
             <name>rendered</name>
             <required>false</required>
-            <type>boolean</type>
+            <type>java.lang.Boolean</type>
         </attribute>
         <attribute>
             <description>
@@ -3208,6 +3359,27 @@
             <required>false</required>
             <type>javax.faces.component.UIComponent</type>
         </attribute>
+        <attribute>
+            <description>
+                <![CDATA[<p class="changed_added_2_2">Per the WAI-ARIA spec and its
+                relationship to HTML5 (Section title ARIA Role Attriubute),
+                every HTML element may have a "role" attribute whose value
+                must be passed through unmodified on the element on which it
+                is declared in the final rendered markup.  The attribute, if
+                specified, must have a value that is a string literal that is,
+                or an EL Expression that evaluates to, a set of
+                space-separated tokens representing the various WAI-ARIA roles
+                that the element belongs to.
+                </p>
+
+                <p class="changed_added_2_2">It is the page author's
+                responsibility to ensure that the user agent is capable of
+                correctly interpreting the value of this attribute.</p>]]>
+            </description>
+            <name>role</name>
+            <required>false</required>
+            <type>java.lang.String</type>
+        </attribute>
     </tag>
     <tag>
         <description>
@@ -3267,7 +3439,7 @@
             </description>
             <name>rendered</name>
             <required>false</required>
-            <type>boolean</type>
+            <type>java.lang.Boolean</type>
         </attribute>
         <attribute>
             <description>
@@ -3324,7 +3496,7 @@
             </description>
             <name>ismap</name>
             <required>false</required>
-            <type>boolean</type>
+            <type>java.lang.Boolean</type>
         </attribute>
         <attribute>
             <description>
@@ -3505,6 +3677,27 @@
             <required>false</required>
             <type>javax.faces.component.UIComponent</type>
         </attribute>
+        <attribute>
+            <description>
+                <![CDATA[<p class="changed_added_2_2">Per the WAI-ARIA spec and its
+                relationship to HTML5 (Section title ARIA Role Attriubute),
+                every HTML element may have a "role" attribute whose value
+                must be passed through unmodified on the element on which it
+                is declared in the final rendered markup.  The attribute, if
+                specified, must have a value that is a string literal that is,
+                or an EL Expression that evaluates to, a set of
+                space-separated tokens representing the various WAI-ARIA roles
+                that the element belongs to.
+                </p>
+
+                <p class="changed_added_2_2">It is the page author's
+                responsibility to ensure that the user agent is capable of
+                correctly interpreting the value of this attribute.</p>]]>
+            </description>
+            <name>role</name>
+            <required>false</required>
+            <type>java.lang.String</type>
+        </attribute>
     </tag>
     <tag>
         <description>
@@ -3565,7 +3758,7 @@
             </description>
             <name>immediate</name>
             <required>false</required>
-            <type>boolean</type>
+            <type>java.lang.Boolean</type>
         </attribute>
         <attribute>
             <description>
@@ -3575,7 +3768,7 @@
             </description>
             <name>rendered</name>
             <required>false</required>
-            <type>boolean</type>
+            <type>java.lang.Boolean</type>
         </attribute>
         <attribute>
             <description>
@@ -3584,7 +3777,7 @@
             </description>
             <name>required</name>
             <required>false</required>
-            <type>boolean</type>
+            <type>java.lang.Boolean</type>
         </attribute>
         <attribute>
             <description>
@@ -3725,7 +3918,7 @@
             </description>
             <name>immediate</name>
             <required>false</required>
-            <type>boolean</type>
+            <type>java.lang.Boolean</type>
         </attribute>
         <attribute>
             <description>
@@ -3735,7 +3928,7 @@
             </description>
             <name>rendered</name>
             <required>false</required>
-            <type>boolean</type>
+            <type>java.lang.Boolean</type>
         </attribute>
         <attribute>
             <description>
@@ -3744,7 +3937,7 @@
             </description>
             <name>required</name>
             <required>false</required>
-            <type>boolean</type>
+            <type>java.lang.Boolean</type>
         </attribute>
         <attribute>
             <description>
@@ -3866,7 +4059,7 @@
             </description>
             <name>disabled</name>
             <required>false</required>
-            <type>boolean</type>
+            <type>java.lang.Boolean</type>
         </attribute>
         <attribute>
             <description>
@@ -4028,7 +4221,7 @@
             </description>
             <name>readonly</name>
             <required>false</required>
-            <type>boolean</type>
+            <type>java.lang.Boolean</type>
         </attribute>
         <attribute>
             <description>
@@ -4040,7 +4233,7 @@
             </description>
             <name>redisplay</name>
             <required>false</required>
-            <type>boolean</type>
+            <type>java.lang.Boolean</type>
         </attribute>
         <attribute>
             <description>
@@ -4097,6 +4290,27 @@
             <required>false</required>
             <type>javax.faces.component.UIComponent</type>
         </attribute>
+        <attribute>
+            <description>
+                <![CDATA[<p class="changed_added_2_2">Per the WAI-ARIA spec and its
+                relationship to HTML5 (Section title ARIA Role Attriubute),
+                every HTML element may have a "role" attribute whose value
+                must be passed through unmodified on the element on which it
+                is declared in the final rendered markup.  The attribute, if
+                specified, must have a value that is a string literal that is,
+                or an EL Expression that evaluates to, a set of
+                space-separated tokens representing the various WAI-ARIA roles
+                that the element belongs to.
+                </p>
+
+                <p class="changed_added_2_2">It is the page author's
+                responsibility to ensure that the user agent is capable of
+                correctly interpreting the value of this attribute.</p>]]>
+            </description>
+            <name>role</name>
+            <required>false</required>
+            <type>java.lang.String</type>
+        </attribute>
     </tag>
     <tag>
         <description>
@@ -4166,7 +4380,7 @@
             </description>
             <name>immediate</name>
             <required>false</required>
-            <type>boolean</type>
+            <type>java.lang.Boolean</type>
         </attribute>
         <attribute>
             <description>
@@ -4176,7 +4390,7 @@
             </description>
             <name>rendered</name>
             <required>false</required>
-            <type>boolean</type>
+            <type>java.lang.Boolean</type>
         </attribute>
         <attribute>
             <description>
@@ -4185,7 +4399,7 @@
             </description>
             <name>required</name>
             <required>false</required>
-            <type>boolean</type>
+            <type>java.lang.Boolean</type>
         </attribute>
         <attribute>
             <description>
@@ -4307,7 +4521,7 @@
             </description>
             <name>disabled</name>
             <required>false</required>
-            <type>boolean</type>
+            <type>java.lang.Boolean</type>
         </attribute>
         <attribute>
             <description>
@@ -4469,7 +4683,7 @@
             </description>
             <name>readonly</name>
             <required>false</required>
-            <type>boolean</type>
+            <type>java.lang.Boolean</type>
         </attribute>
         <attribute>
             <description>
@@ -4526,6 +4740,27 @@
             <required>false</required>
             <type>javax.faces.component.UIComponent</type>
         </attribute>
+        <attribute>
+            <description>
+                <![CDATA[<p class="changed_added_2_2">Per the WAI-ARIA spec and its
+                relationship to HTML5 (Section title ARIA Role Attriubute),
+                every HTML element may have a "role" attribute whose value
+                must be passed through unmodified on the element on which it
+                is declared in the final rendered markup.  The attribute, if
+                specified, must have a value that is a string literal that is,
+                or an EL Expression that evaluates to, a set of
+                space-separated tokens representing the various WAI-ARIA roles
+                that the element belongs to.
+                </p>
+
+                <p class="changed_added_2_2">It is the page author's
+                responsibility to ensure that the user agent is capable of
+                correctly interpreting the value of this attribute.</p>]]>
+            </description>
+            <name>role</name>
+            <required>false</required>
+            <type>java.lang.String</type>
+        </attribute>
     </tag>
     <tag>
         <description>
@@ -4585,7 +4820,7 @@
             </description>
             <name>immediate</name>
             <required>false</required>
-            <type>boolean</type>
+            <type>java.lang.Boolean</type>
         </attribute>
         <attribute>
             <description>
@@ -4595,7 +4830,7 @@
             </description>
             <name>rendered</name>
             <required>false</required>
-            <type>boolean</type>
+            <type>java.lang.Boolean</type>
         </attribute>
         <attribute>
             <description>
@@ -4604,7 +4839,7 @@
             </description>
             <name>required</name>
             <required>false</required>
-            <type>boolean</type>
+            <type>java.lang.Boolean</type>
         </attribute>
         <attribute>
             <description>
@@ -4710,7 +4945,7 @@
             </description>
             <name>disabled</name>
             <required>false</required>
-            <type>boolean</type>
+            <type>java.lang.Boolean</type>
         </attribute>
         <attribute>
             <description>
@@ -4863,7 +5098,7 @@
             </description>
             <name>readonly</name>
             <required>false</required>
-            <type>boolean</type>
+            <type>java.lang.Boolean</type>
         </attribute>
         <attribute>
             <description>
@@ -4919,6 +5154,27 @@
             <required>false</required>
             <type>javax.faces.component.UIComponent</type>
         </attribute>
+        <attribute>
+            <description>
+                <![CDATA[<p class="changed_added_2_2">Per the WAI-ARIA spec and its
+                relationship to HTML5 (Section title ARIA Role Attriubute),
+                every HTML element may have a "role" attribute whose value
+                must be passed through unmodified on the element on which it
+                is declared in the final rendered markup.  The attribute, if
+                specified, must have a value that is a string literal that is,
+                or an EL Expression that evaluates to, a set of
+                space-separated tokens representing the various WAI-ARIA roles
+                that the element belongs to.
+                </p>
+
+                <p class="changed_added_2_2">It is the page author's
+                responsibility to ensure that the user agent is capable of
+                correctly interpreting the value of this attribute.</p>]]>
+            </description>
+            <name>role</name>
+            <required>false</required>
+            <type>java.lang.String</type>
+        </attribute>
     </tag>
     <tag>
         <description>
@@ -5014,7 +5270,7 @@
             </description>
             <name>rendered</name>
             <required>false</required>
-            <type>boolean</type>
+            <type>java.lang.Boolean</type>
         </attribute>
         <attribute>
             <description>
@@ -5023,7 +5279,7 @@
             </description>
             <name>showDetail</name>
             <required>false</required>
-            <type>boolean</type>
+            <type>java.lang.Boolean</type>
         </attribute>
         <attribute>
             <description>
@@ -5033,7 +5289,7 @@
             </description>
             <name>showSummary</name>
             <required>false</required>
-            <type>boolean</type>
+            <type>java.lang.Boolean</type>
         </attribute>
         <attribute>
             <description>
@@ -5143,7 +5399,7 @@
             </description>
             <name>tooltip</name>
             <required>false</required>
-            <type>boolean</type>
+            <type>java.lang.Boolean</type>
         </attribute>
         <attribute>
             <description>
@@ -5172,6 +5428,27 @@
             <required>false</required>
             <type>javax.faces.component.UIComponent</type>
         </attribute>
+        <attribute>
+            <description>
+                <![CDATA[<p class="changed_added_2_2">Per the WAI-ARIA spec and its
+                relationship to HTML5 (Section title ARIA Role Attriubute),
+                every HTML element may have a "role" attribute whose value
+                must be passed through unmodified on the element on which it
+                is declared in the final rendered markup.  The attribute, if
+                specified, must have a value that is a string literal that is,
+                or an EL Expression that evaluates to, a set of
+                space-separated tokens representing the various WAI-ARIA roles
+                that the element belongs to.
+                </p>
+
+                <p class="changed_added_2_2">It is the page author's
+                responsibility to ensure that the user agent is capable of
+                correctly interpreting the value of this attribute.</p>]]>
+            </description>
+            <name>role</name>
+            <required>false</required>
+            <type>java.lang.String</type>
+        </attribute>
     </tag>
     <tag>
         <description>
@@ -5231,7 +5508,7 @@
             </description>
             <name>globalOnly</name>
             <required>false</required>
-            <type>boolean</type>
+            <type>java.lang.Boolean</type>
         </attribute>
         <attribute>
             <description>
@@ -5251,7 +5528,7 @@
             </description>
             <name>rendered</name>
             <required>false</required>
-            <type>boolean</type>
+            <type>java.lang.Boolean</type>
         </attribute>
         <attribute>
             <description>
@@ -5260,7 +5537,7 @@
             </description>
             <name>showDetail</name>
             <required>false</required>
-            <type>boolean</type>
+            <type>java.lang.Boolean</type>
         </attribute>
         <attribute>
             <description>
@@ -5270,7 +5547,7 @@
             </description>
             <name>showSummary</name>
             <required>false</required>
-            <type>boolean</type>
+            <type>java.lang.Boolean</type>
         </attribute>
         <attribute>
             <description>
@@ -5391,7 +5668,7 @@
             </description>
             <name>tooltip</name>
             <required>false</required>
-            <type>boolean</type>
+            <type>java.lang.Boolean</type>
         </attribute>
         <attribute>
             <description>
@@ -5480,7 +5757,7 @@
             </description>
             <name>rendered</name>
             <required>false</required>
-            <type>boolean</type>
+            <type>java.lang.Boolean</type>
         </attribute>
         <attribute>
             <description>
@@ -5509,7 +5786,7 @@
             </description>
             <name>escape</name>
             <required>false</required>
-            <type>boolean</type>
+            <type>java.lang.Boolean</type>
         </attribute>
         <attribute>
             <description>
@@ -5556,6 +5833,27 @@
             <required>false</required>
             <type>javax.faces.component.UIComponent</type>
         </attribute>
+        <attribute>
+            <description>
+                <![CDATA[<p class="changed_added_2_2">Per the WAI-ARIA spec and its
+                relationship to HTML5 (Section title ARIA Role Attriubute),
+                every HTML element may have a "role" attribute whose value
+                must be passed through unmodified on the element on which it
+                is declared in the final rendered markup.  The attribute, if
+                specified, must have a value that is a string literal that is,
+                or an EL Expression that evaluates to, a set of
+                space-separated tokens representing the various WAI-ARIA roles
+                that the element belongs to.
+                </p>
+
+                <p class="changed_added_2_2">It is the page author's
+                responsibility to ensure that the user agent is capable of
+                correctly interpreting the value of this attribute.</p>]]>
+            </description>
+            <name>role</name>
+            <required>false</required>
+            <type>java.lang.String</type>
+        </attribute>
     </tag>
     <tag>
         <description>
@@ -5600,7 +5898,7 @@
             </description>
             <name>rendered</name>
             <required>false</required>
-            <type>boolean</type>
+            <type>java.lang.Boolean</type>
         </attribute>
         <attribute>
             <description>
@@ -5638,7 +5936,7 @@
             </description>
             <name>escape</name>
             <required>false</required>
-            <type>boolean</type>
+            <type>java.lang.Boolean</type>
         </attribute>
         <attribute>
             <description>
@@ -5810,6 +6108,27 @@
             <required>false</required>
             <type>javax.faces.component.UIComponent</type>
         </attribute>
+        <attribute>
+            <description>
+                <![CDATA[<p class="changed_added_2_2">Per the WAI-ARIA spec and its
+                relationship to HTML5 (Section title ARIA Role Attriubute),
+                every HTML element may have a "role" attribute whose value
+                must be passed through unmodified on the element on which it
+                is declared in the final rendered markup.  The attribute, if
+                specified, must have a value that is a string literal that is,
+                or an EL Expression that evaluates to, a set of
+                space-separated tokens representing the various WAI-ARIA roles
+                that the element belongs to.
+                </p>
+
+                <p class="changed_added_2_2">It is the page author's
+                responsibility to ensure that the user agent is capable of
+                correctly interpreting the value of this attribute.</p>]]>
+            </description>
+            <name>role</name>
+            <required>false</required>
+            <type>java.lang.String</type>
+        </attribute>
     </tag>
     <tag>
         <description>
@@ -5873,7 +6192,7 @@
             </description>
             <name>rendered</name>
             <required>false</required>
-            <type>boolean</type>
+            <type>java.lang.Boolean</type>
         </attribute>
         <attribute>
             <description>
@@ -5929,7 +6248,7 @@
             </description>
             <name>disabled</name>
             <required>false</required>
-            <type>boolean</type>
+            <type>java.lang.Boolean</type>
         </attribute>
         <attribute>
             <description>
@@ -6154,43 +6473,252 @@
             <required>false</required>
             <type>javax.faces.component.UIComponent</type>
         </attribute>
+        <attribute>
+            <description>
+                <![CDATA[<p class="changed_added_2_2">Per the WAI-ARIA spec and its
+                relationship to HTML5 (Section title ARIA Role Attriubute),
+                every HTML element may have a "role" attribute whose value
+                must be passed through unmodified on the element on which it
+                is declared in the final rendered markup.  The attribute, if
+                specified, must have a value that is a string literal that is,
+                or an EL Expression that evaluates to, a set of
+                space-separated tokens representing the various WAI-ARIA roles
+                that the element belongs to.
+                </p>
+
+                <p class="changed_added_2_2">It is the page author's
+                responsibility to ensure that the user agent is capable of
+                correctly interpreting the value of this attribute.</p>]]>
+            </description>
+            <name>role</name>
+            <required>false</required>
+            <type>java.lang.String</type>
+        </attribute>
     </tag>
     <tag>
         <description>
-            If the "styleClass", "style", "dir" or "lang"
-            attributes are present, render a "span" element. If the
-            "styleClass" attribute is present, render its value as the value
-            of the "class" attribute. If the "style" attribute is present,
-            pass it thru. If the "escape" attribute is not present, or it is
-            present and its value is "true" all angle brackets should be
-            converted to the ampersand xx semicolon syntax when rendering the
-            value of the "value" attribute as the value of the component. If
-            the "escape" attribute is present and is "false" the value of the
-            component should be rendered as text without escaping.
+            <![CDATA[<div class="changed_added_2_0">
+            
+            <p>Render the markup for a <code><link></code> element that
+            renders the style <code>Resource</code> specified by the optional
+            <code>name</code> and <code>library</code> attributes.</p>
+            
+            <p>Decode Behavior</p>
+            
+            <ul>
+            
+            <p>No action is required during decode for this renderer.</p>
+            
+            </ul>
+            
+            <p>Encode Behavior</p>
+            
+            <ul>
+            
+            <p>Use the algorithm <em>Common Encode Behavior</em> for
+            <code>encodeBegin()</code>, <code>encodeChildren()</code> and
+            <code>getRendersChildren()</code>.</p>
+            
+            <p>For <code>encodeEnd()</code>, use the algorithm <a
+            href="javax.faces.Outputjavax.faces.resource.Script.html#ResourceCommonGetResource">Common
+            Algorithm for Obtaining A Resource to Render</a> to obtain a
+            reference to the <code>Resource</code> to be encoded.</p>
+            
+            <p>Output a <code><link></code> element.  Use the result from
+            calling <code>resource.getRequestPath()</code> as the value of the
+            "href" attribute, the result from calling
+            <code>resource.getContentType()</code> as the value of the "type"
+            attribute, the literal string "stylesheet" as the value of the "rel"
+            attribute, and the literal string "screen" as the value of the "media"
+            attribute.</p>
+            
+            <p>The implementation of this renderer must have a <a target="_"
+            href="../../javadocs/javax/faces/event/ListenerFor.html"><code>@ListenerFor</code></a>
+            annotation attached to it, at the class level, declaring <a target="_"
+            href="../../javadocs/javax/faces/event/PostAddToViewEvent.html"><code>PostAddToViewEvent.class</code></a>
+            as the value of the <code>systemEventClass</code> attribute.  The presence of
+            this annotation on a renderer implies the renderer implements <a target="_"
+            href="../../javadocs/javax/faces/event/ComponentSystemEventListener.html"><code>ComponentSystemEventListener</code></a>,
+            which this renderer must do.  The implementation of
+            <code>processEvent()</code> must extract the <code>UIComponent</code>
+            from the argument event pass it to <a target="_"
+            href="../../javadocs/javax/faces/component/UIViewRoot.html#addComponentResource(javax.faces.context.FacesContext,%20javax.faces.component.UIComponent,%20java.lang.String)"><code>UIViewRoot.addComponentResource()</code></a>, specifying
+            the literal string "<code>head</code>" as the last argument.</p>
+            
+            <p>The stylsheet renderer must ensure that any stylesheets are included in the <head> of the document.
+            </p>
+            
+            </div>]]>
         </description>
-        <tag-name>outputText</tag-name>
+        <tag-name>
+            outputStylesheet
+        </tag-name>
         <component>
-            <component-type>javax.faces.HtmlOutputText</component-type>
-            <renderer-type>javax.faces.Text</renderer-type>
+            <component-type>javax.faces.Output</component-type>
+            <renderer-type>javax.faces.resource.Stylesheet</renderer-type>
         </component>
         <attribute>
             <description>
-                Converter instance registered with this component.
+                <![CDATA[Converter instance registered with this component.]]>
             </description>
-            <name>converter</name>
-            <required>false</required>
-            <type>javax.faces.convert.Converter</type>
+            <name>
+                converter
+            </name>
+            <required>
+                false
+            </required>
+            <type>
+                javax.faces.convert.Converter
+            </type>
         </attribute>
         <attribute>
             <description>
-                The component identifier for this component. This value must be
+                <![CDATA[The component identifier for this component.  This value must be
                 unique within the closest parent component that is a naming
-                container.
+                container.]]>
             </description>
-            <name>id</name>
-            <required>false</required>
-            <type>java.lang.String</type>
-        </attribute>
+            <name>
+                id
+            </name>
+            <required>
+                false
+            </required>
+            <type>
+                java.lang.String
+            </type>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Flag indicating whether or not this component should be rendered
+                (during Render Response Phase), or processed on any subsequent
+                form submit.  The default value for this property is true.]]>
+            </description>
+            <name>
+                rendered
+            </name>
+            <required>
+                false
+            </required>
+            <type>
+                boolean
+            </type>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[The current value of this component.]]>
+            </description>
+            <name>
+                value
+            </name>
+            <required>
+                false
+            </required>
+            <type>
+                java.lang.Object
+            </type>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[<div class="changed_added_2_0"><p>The <em>libraryName</em> for this resource.</p></div>]]>
+            </description>
+            <name>
+                library
+            </name>
+            <required>
+                false
+            </required>
+            <type>
+                java.lang.String
+            </type>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[<div class="changed_added_2_0"><p>The <em>resourceName</em> for this resource.</p></div>
+                <div class="changed_modified_2_0_rev_a"><p>This attribute is required.</p></div>]]>
+            </description>
+            <name>
+                name
+            </name>
+            <required>
+                false
+            </required>
+            <type>
+                java.lang.String
+            </type>
+        </attribute>
+        <attribute>
+            <description>
+                The ValueExpression linking this component to a property in a
+                backing bean
+            </description>
+            <name>
+                binding
+            </name>
+            <required>
+                false
+            </required>
+            <type>
+                javax.faces.component.UIComponent
+            </type>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[<p class="changed_added_2_2">Per the WAI-ARIA spec and its
+                relationship to HTML5 (Section title ARIA Role Attriubute),
+                every HTML element may have a "role" attribute whose value
+                must be passed through unmodified on the element on which it
+                is declared in the final rendered markup.  The attribute, if
+                specified, must have a value that is a string literal that is,
+                or an EL Expression that evaluates to, a set of
+                space-separated tokens representing the various WAI-ARIA roles
+                that the element belongs to.
+                </p>
+
+                <p class="changed_added_2_2">It is the page author's
+                responsibility to ensure that the user agent is capable of
+                correctly interpreting the value of this attribute.</p>]]>
+            </description>
+            <name>role</name>
+            <required>false</required>
+            <type>java.lang.String</type>
+        </attribute>
+    </tag>
+    <tag>
+        <description>
+            If the "styleClass", "style", "dir" or "lang"
+            attributes are present, render a "span" element. If the
+            "styleClass" attribute is present, render its value as the value
+            of the "class" attribute. If the "style" attribute is present,
+            pass it thru. If the "escape" attribute is not present, or it is
+            present and its value is "true" all angle brackets should be
+            converted to the ampersand xx semicolon syntax when rendering the
+            value of the "value" attribute as the value of the component. If
+            the "escape" attribute is present and is "false" the value of the
+            component should be rendered as text without escaping.
+        </description>
+        <tag-name>outputText</tag-name>
+        <component>
+            <component-type>javax.faces.HtmlOutputText</component-type>
+            <renderer-type>javax.faces.Text</renderer-type>
+        </component>
+        <attribute>
+            <description>
+                Converter instance registered with this component.
+            </description>
+            <name>converter</name>
+            <required>false</required>
+            <type>javax.faces.convert.Converter</type>
+        </attribute>
+        <attribute>
+            <description>
+                The component identifier for this component. This value must be
+                unique within the closest parent component that is a naming
+                container.
+            </description>
+            <name>id</name>
+            <required>false</required>
+            <type>java.lang.String</type>
+        </attribute>
         <attribute>
             <description>
                 Flag indicating whether or not this component should be rendered
@@ -6199,7 +6727,7 @@
             </description>
             <name>rendered</name>
             <required>false</required>
-            <type>boolean</type>
+            <type>java.lang.Boolean</type>
         </attribute>
         <attribute>
             <description>
@@ -6228,7 +6756,7 @@
             </description>
             <name>escape</name>
             <required>false</required>
-            <type>boolean</type>
+            <type>java.lang.Boolean</type>
         </attribute>
         <attribute>
             <description>
@@ -6275,6 +6803,27 @@
             <required>false</required>
             <type>javax.faces.component.UIComponent</type>
         </attribute>
+        <attribute>
+            <description>
+                <![CDATA[<p class="changed_added_2_2">Per the WAI-ARIA spec and its
+                relationship to HTML5 (Section title ARIA Role Attriubute),
+                every HTML element may have a "role" attribute whose value
+                must be passed through unmodified on the element on which it
+                is declared in the final rendered markup.  The attribute, if
+                specified, must have a value that is a string literal that is,
+                or an EL Expression that evaluates to, a set of
+                space-separated tokens representing the various WAI-ARIA roles
+                that the element belongs to.
+                </p>
+
+                <p class="changed_added_2_2">It is the page author's
+                responsibility to ensure that the user agent is capable of
+                correctly interpreting the value of this attribute.</p>]]>
+            </description>
+            <name>role</name>
+            <required>false</required>
+            <type>java.lang.String</type>
+        </attribute>
     </tag>
     <tag>
         <description>
@@ -6500,7 +7049,8 @@
         </attribute>
         <attribute>
             <description>
-                <![CDATA[<div class="changed_added_2_0"><p>The <em>resourceName</em> for this resource.</p></div>]]>
+                <![CDATA[<div class="changed_added_2_0"><p>The <em>resourceName</em> for this resource.</p></div>
+                <div class="changed_modified_2_0_rev_a"><p>This attribute is required.</p></div>]]>
             </description>
             <name>
                 name
@@ -6541,225 +7091,81 @@
                 javax.faces.component.UIComponent
             </type>
         </attribute>
+        <attribute>
+            <description>
+                <![CDATA[<p class="changed_added_2_2">Per the WAI-ARIA spec and its
+                relationship to HTML5 (Section title ARIA Role Attriubute),
+                every HTML element may have a "role" attribute whose value
+                must be passed through unmodified on the element on which it
+                is declared in the final rendered markup.  The attribute, if
+                specified, must have a value that is a string literal that is,
+                or an EL Expression that evaluates to, a set of
+                space-separated tokens representing the various WAI-ARIA roles
+                that the element belongs to.
+                </p>
+
+                <p class="changed_added_2_2">It is the page author's
+                responsibility to ensure that the user agent is capable of
+                correctly interpreting the value of this attribute.</p>]]>
+            </description>
+            <name>role</name>
+            <required>false</required>
+            <type>java.lang.String</type>
+        </attribute>
     </tag>
+
     <tag>
         <description>
-            <![CDATA[<div class="changed_added_2_0">
-            
-            <p>Render the markup for a <code><link></code> element that
-            renders the style <code>Resource</code> specified by the optional
-            <code>name</code> and <code>library</code> attributes.</p>
-            
-            <p>Decode Behavior</p>
-            
-            <ul>
-            
-            <p>No action is required during decode for this renderer.</p>
-            
-            </ul>
-            
-            <p>Encode Behavior</p>
-            
-            <ul>
-            
-            <p>Use the algorithm <em>Common Encode Behavior</em> for
-            <code>encodeBegin()</code>, <code>encodeChildren()</code> and
-            <code>getRendersChildren()</code>.</p>
-            
-            <p>For <code>encodeEnd()</code>, use the algorithm <a
-            href="javax.faces.Outputjavax.faces.resource.Script.html#ResourceCommonGetResource">Common
-            Algorithm for Obtaining A Resource to Render</a> to obtain a
-            reference to the <code>Resource</code> to be encoded.</p>
-            
-            <p>Output a <code><link></code> element.  Use the result from
-            calling <code>resource.getRequestPath()</code> as the value of the
-            "href" attribute, the result from calling
-            <code>resource.getContentType()</code> as the value of the "type"
-            attribute, the literal string "stylesheet" as the value of the "rel"
-            attribute, and the literal string "screen" as the value of the "media"
-            attribute.</p>
-            
-            <p>The implementation of this renderer must have a <a target="_"
-            href="../../javadocs/javax/faces/event/ListenerFor.html"><code>@ListenerFor</code></a>
-            annotation attached to it, at the class level, declaring <a target="_"
-            href="../../javadocs/javax/faces/event/PostAddToViewEvent.html"><code>PostAddToViewEvent.class</code></a>
-            as the value of the <code>systemEventClass</code> attribute.  The presence of
-            this annotation on a renderer implies the renderer implements <a target="_"
-            href="../../javadocs/javax/faces/event/ComponentSystemEventListener.html"><code>ComponentSystemEventListener</code></a>,
-            which this renderer must do.  The implementation of
-            <code>processEvent()</code> must extract the <code>UIComponent</code>
-            from the argument event pass it to <a target="_"
-            href="../../javadocs/javax/faces/component/UIViewRoot.html#addComponentResource(javax.faces.context.FacesContext,%20javax.faces.component.UIComponent,%20java.lang.String)"><code>UIViewRoot.addComponentResource()</code></a>, specifying
-            the literal string "<code>head</code>" as the last argument.</p>
-            
-            <p>The stylsheet renderer must ensure that any stylesheets are included in the <head> of the document.
-            </p>
-            
-            </div>]]>
+            Renders an HTML "table" element, conforming to the
+            rules in the HTML 401 specification. Render the "caption" facet,
+            if present, inside a "caption" element immediately below the "table"
+            element.
+            If the "captionClass" attribute is specified, render its value as
+            the value
+            of the "class" attribute on the "caption" element. If the
+            "captionStyle" attribute
+            is specified, render its value as the value of the "style" attribute
+            on the "caption" element. If the "styleClass" attribute is
+            specified, render
+            its value as the value of the "class" attribute. Render the
+            pass-through
+            attributes in the table below. Render the "header" facet, if
+            present, inside of
+            "thead", "tr", and "th" elements, nested in that order. If the
+            "headerClass" attribute is specifed, render its value as the value
+            of the "class" attribute on the "th" element. Render "colgroup"
+            as the value of the "scope" attribute. Render the value of the
+            "columns" attribute as the value of the "colspan" attribute on the
+            "th" element. Render the "footer" facet if present, using similar
+            logic to the rendering of the "header", but replacing "thead" with
+            "tfoot", "th" with "td", and "headerClass" with "footerClass".
+            Render the children of the <code>UIPanel</code>
+            component inside
+            of a "tbody" element. Render the children based on the value of
+            the "columns" attribute, creating a new row each time a "columns"
+            worth of children have been rendered. For the start of each row,
+            render a "tr" element. Output the value of the "rowClasses" per
+            the attribute description below. For each child, output a "td"
+            element, attaching the value of the "columnClasses" attribute per
+            the attribute description below. Recursively encode each child.
+            Close out the "td" element. When done with the row, close out the
+            "tr" element. If a child has "rendered==false" it is not rendered,
+            and the column counter must not be incremented.
         </description>
-        <tag-name>
-            outputStylesheet
-        </tag-name>
+        <tag-name>panelGrid</tag-name>
         <component>
-            <component-type>javax.faces.Output</component-type>
-            <renderer-type>javax.faces.resource.Stylesheet</renderer-type>
+            <component-type>javax.faces.HtmlPanelGrid</component-type>
+            <renderer-type>javax.faces.Grid</renderer-type>
         </component>
         <attribute>
             <description>
-                <![CDATA[Converter instance registered with this component.]]>
+                The component identifier for this component. This value must be
+                unique within the closest parent component that is a naming
+                container.
             </description>
-            <name>
-                converter
-            </name>
-            <required>
-                false
-            </required>
-            <type>
-                javax.faces.convert.Converter
-            </type>
-        </attribute>
-        <attribute>
-            <description>
-                <![CDATA[The component identifier for this component.  This value must be
-                unique within the closest parent component that is a naming
-                container.]]>
-            </description>
-            <name>
-                id
-            </name>
-            <required>
-                false
-            </required>
-            <type>
-                java.lang.String
-            </type>
-        </attribute>
-        <attribute>
-            <description>
-                <![CDATA[Flag indicating whether or not this component should be rendered
-                (during Render Response Phase), or processed on any subsequent
-                form submit.  The default value for this property is true.]]>
-            </description>
-            <name>
-                rendered
-            </name>
-            <required>
-                false
-            </required>
-            <type>
-                boolean
-            </type>
-        </attribute>
-        <attribute>
-            <description>
-                <![CDATA[The current value of this component.]]>
-            </description>
-            <name>
-                value
-            </name>
-            <required>
-                false
-            </required>
-            <type>
-                java.lang.Object
-            </type>
-        </attribute>
-        <attribute>
-            <description>
-                <![CDATA[<div class="changed_added_2_0"><p>The <em>libraryName</em> for this resource.</p></div>]]>
-            </description>
-            <name>
-                library
-            </name>
-            <required>
-                false
-            </required>
-            <type>
-                java.lang.String
-            </type>
-        </attribute>
-        <attribute>
-            <description>
-                <![CDATA[<div class="changed_added_2_0"><p>The <em>resourceName</em> for this resource.</p></div>]]>
-            </description>
-            <name>
-                name
-            </name>
-            <required>
-                false
-            </required>
-            <type>
-                java.lang.String
-            </type>
-        </attribute>
-        <attribute>
-            <description>
-                The ValueExpression linking this component to a property in a
-                backing bean
-            </description>
-            <name>
-                binding
-            </name>
-            <required>
-                false
-            </required>
-            <type>
-                javax.faces.component.UIComponent
-            </type>
-        </attribute>
-    </tag>
-    <tag>
-        <description>
-            Renders an HTML "table" element, conforming to the
-            rules in the HTML 401 specification. Render the "caption" facet,
-            if present, inside a "caption" element immediately below the "table"
-            element.
-            If the "captionClass" attribute is specified, render its value as
-            the value
-            of the "class" attribute on the "caption" element. If the
-            "captionStyle" attribute
-            is specified, render its value as the value of the "style" attribute
-            on the "caption" element. If the "styleClass" attribute is
-            specified, render
-            its value as the value of the "class" attribute. Render the
-            pass-through
-            attributes in the table below. Render the "header" facet, if
-            present, inside of
-            "thead", "tr", and "th" elements, nested in that order. If the
-            "headerClass" attribute is specifed, render its value as the value
-            of the "class" attribute on the "th" element. Render "colgroup"
-            as the value of the "scope" attribute. Render the value of the
-            "columns" attribute as the value of the "colspan" attribute on the
-            "th" element. Render the "footer" facet if present, using similar
-            logic to the rendering of the "header", but replacing "thead" with
-            "tfoot", "th" with "td", and "headerClass" with "footerClass".
-            Render the children of the <code>UIPanel</code>
-            component inside
-            of a "tbody" element. Render the children based on the value of
-            the "columns" attribute, creating a new row each time a "columns"
-            worth of children have been rendered. For the start of each row,
-            render a "tr" element. Output the value of the "rowClasses" per
-            the attribute description below. For each child, output a "td"
-            element, attaching the value of the "columnClasses" attribute per
-            the attribute description below. Recursively encode each child.
-            Close out the "td" element. When done with the row, close out the
-            "tr" element. If a child has "rendered==false" it is not rendered,
-            and the column counter must not be incremented.
-        </description>
-        <tag-name>panelGrid</tag-name>
-        <component>
-            <component-type>javax.faces.HtmlPanelGrid</component-type>
-            <renderer-type>javax.faces.Grid</renderer-type>
-        </component>
-        <attribute>
-            <description>
-                The component identifier for this component. This value must be
-                unique within the closest parent component that is a naming
-                container.
-            </description>
-            <name>id</name>
-            <required>false</required>
-            <type>java.lang.String</type>
+            <name>id</name>
+            <required>false</required>
+            <type>java.lang.String</type>
         </attribute>
         <attribute>
             <description>
@@ -6769,7 +7175,7 @@
             </description>
             <name>rendered</name>
             <required>false</required>
-            <type>boolean</type>
+            <type>java.lang.Boolean</type>
         </attribute>
         <attribute>
             <description>
@@ -7087,6 +7493,27 @@
             <required>false</required>
             <type>javax.faces.component.UIComponent</type>
         </attribute>
+        <attribute>
+            <description>
+                <![CDATA[<p class="changed_added_2_2">Per the WAI-ARIA spec and its
+                relationship to HTML5 (Section title ARIA Role Attriubute),
+                every HTML element may have a "role" attribute whose value
+                must be passed through unmodified on the element on which it
+                is declared in the final rendered markup.  The attribute, if
+                specified, must have a value that is a string literal that is,
+                or an EL Expression that evaluates to, a set of
+                space-separated tokens representing the various WAI-ARIA roles
+                that the element belongs to.
+                </p>
+
+                <p class="changed_added_2_2">It is the page author's
+                responsibility to ensure that the user agent is capable of
+                correctly interpreting the value of this attribute.</p>]]>
+            </description>
+            <name>role</name>
+            <required>false</required>
+            <type>java.lang.String</type>
+        </attribute>
     </tag>
     <tag>
         <description>
@@ -7130,7 +7557,7 @@
             </description>
             <name>rendered</name>
             <required>false</required>
-            <type>boolean</type>
+            <type>java.lang.Boolean</type>
         </attribute>
         <attribute>
             <description>
@@ -7244,7 +7671,7 @@
             </description>
             <name>immediate</name>
             <required>false</required>
-            <type>boolean</type>
+            <type>java.lang.Boolean</type>
         </attribute>
         <attribute>
             <description>
@@ -7254,7 +7681,7 @@
             </description>
             <name>rendered</name>
             <required>false</required>
-            <type>boolean</type>
+            <type>java.lang.Boolean</type>
         </attribute>
         <attribute>
             <description>
@@ -7263,7 +7690,7 @@
             </description>
             <name>required</name>
             <required>false</required>
-            <type>boolean</type>
+            <type>java.lang.Boolean</type>
         </attribute>
         <attribute>
             <description>
@@ -7361,7 +7788,7 @@
             </description>
             <name>disabled</name>
             <required>false</required>
-            <type>boolean</type>
+            <type>java.lang.Boolean</type>
         </attribute>
         <attribute>
             <description>
@@ -7514,7 +7941,7 @@
             </description>
             <name>readonly</name>
             <required>false</required>
-            <type>boolean</type>
+            <type>java.lang.Boolean</type>
         </attribute>
         <attribute>
             <description>
@@ -7562,6 +7989,27 @@
             <required>false</required>
             <type>javax.faces.component.UIComponent</type>
         </attribute>
+        <attribute>
+            <description>
+                <![CDATA[<p class="changed_added_2_2">Per the WAI-ARIA spec and its
+                relationship to HTML5 (Section title ARIA Role Attriubute),
+                every HTML element may have a "role" attribute whose value
+                must be passed through unmodified on the element on which it
+                is declared in the final rendered markup.  The attribute, if
+                specified, must have a value that is a string literal that is,
+                or an EL Expression that evaluates to, a set of
+                space-separated tokens representing the various WAI-ARIA roles
+                that the element belongs to.
+                </p>
+
+                <p class="changed_added_2_2">It is the page author's
+                responsibility to ensure that the user agent is capable of
+                correctly interpreting the value of this attribute.</p>]]>
+            </description>
+            <name>role</name>
+            <required>false</required>
+            <type>java.lang.String</type>
+        </attribute>
     </tag>
     <tag>
         <description>
@@ -7675,7 +8123,7 @@
             </description>
             <name>immediate</name>
             <required>false</required>
-            <type>boolean</type>
+            <type>java.lang.Boolean</type>
         </attribute>
         <attribute>
             <description>
@@ -7685,7 +8133,7 @@
             </description>
             <name>rendered</name>
             <required>false</required>
-            <type>boolean</type>
+            <type>java.lang.Boolean</type>
         </attribute>
         <attribute>
             <description>
@@ -7694,7 +8142,7 @@
             </description>
             <name>required</name>
             <required>false</required>
-            <type>boolean</type>
+            <type>java.lang.Boolean</type>
         </attribute>
         <attribute>
             <description>
@@ -7815,7 +8263,7 @@
             </description>
             <name>disabled</name>
             <required>false</required>
-            <type>boolean</type>
+            <type>java.lang.Boolean</type>
         </attribute>
         <attribute>
             <description>
@@ -7844,7 +8292,7 @@
             </description>
             <name>hideNoSelectionOption</name>
             <required>false</required>
-            <type>boolean</type>
+            <type>java.lang.Boolean</type>
         </attribute>
         <attribute>
             <description>
@@ -8009,7 +8457,7 @@
             </description>
             <name>readonly</name>
             <required>false</required>
-            <type>boolean</type>
+            <type>java.lang.Boolean</type>
         </attribute>
         <attribute>
             <description>
@@ -8075,6 +8523,27 @@
             <required>false</required>
             <type>javax.faces.component.UIComponent</type>
         </attribute>
+        <attribute>
+            <description>
+                <![CDATA[<p class="changed_added_2_2">Per the WAI-ARIA spec and its
+                relationship to HTML5 (Section title ARIA Role Attriubute),
+                every HTML element may have a "role" attribute whose value
+                must be passed through unmodified on the element on which it
+                is declared in the final rendered markup.  The attribute, if
+                specified, must have a value that is a string literal that is,
+                or an EL Expression that evaluates to, a set of
+                space-separated tokens representing the various WAI-ARIA roles
+                that the element belongs to.
+                </p>
+
+                <p class="changed_added_2_2">It is the page author's
+                responsibility to ensure that the user agent is capable of
+                correctly interpreting the value of this attribute.</p>]]>
+            </description>
+            <name>role</name>
+            <required>false</required>
+            <type>java.lang.String</type>
+        </attribute>
     </tag>
     <tag>
         <description>
@@ -8285,7 +8754,7 @@
             </description>
             <name>immediate</name>
             <required>false</required>
-            <type>boolean</type>
+            <type>java.lang.Boolean</type>
         </attribute>
         <attribute>
             <description>
@@ -8295,7 +8764,7 @@
             </description>
             <name>rendered</name>
             <required>false</required>
-            <type>boolean</type>
+            <type>java.lang.Boolean</type>
         </attribute>
         <attribute>
             <description>
@@ -8304,7 +8773,7 @@
             </description>
             <name>required</name>
             <required>false</required>
-            <type>boolean</type>
+            <type>java.lang.Boolean</type>
         </attribute>
         <attribute>
             <description>
@@ -8416,7 +8885,7 @@
             </description>
             <name>disabled</name>
             <required>false</required>
-            <type>boolean</type>
+            <type>java.lang.Boolean</type>
         </attribute>
         <attribute>
             <description>
@@ -8445,7 +8914,7 @@
             </description>
             <name>hideNoSelectionOption</name>
             <required>false</required>
-            <type>boolean</type>
+            <type>java.lang.Boolean</type>
         </attribute>
         <attribute>
             <description>
@@ -8598,7 +9067,7 @@
             </description>
             <name>readonly</name>
             <required>false</required>
-            <type>boolean</type>
+            <type>java.lang.Boolean</type>
         </attribute>
         <attribute>
             <description>
@@ -8655,6 +9124,27 @@
             <required>false</required>
             <type>javax.faces.component.UIComponent</type>
         </attribute>
+        <attribute>
+            <description>
+                <![CDATA[<p class="changed_added_2_2">Per the WAI-ARIA spec and its
+                relationship to HTML5 (Section title ARIA Role Attriubute),
+                every HTML element may have a "role" attribute whose value
+                must be passed through unmodified on the element on which it
+                is declared in the final rendered markup.  The attribute, if
+                specified, must have a value that is a string literal that is,
+                or an EL Expression that evaluates to, a set of
+                space-separated tokens representing the various WAI-ARIA roles
+                that the element belongs to.
+                </p>
+
+                <p class="changed_added_2_2">It is the page author's
+                responsibility to ensure that the user agent is capable of
+                correctly interpreting the value of this attribute.</p>]]>
+            </description>
+            <name>role</name>
+            <required>false</required>
+            <type>java.lang.String</type>
+        </attribute>
     </tag>
     <tag>
         <description>
@@ -8726,7 +9216,7 @@
             </description>
             <name>immediate</name>
             <required>false</required>
-            <type>boolean</type>
+            <type>java.lang.Boolean</type>
         </attribute>
         <attribute>
             <description>
@@ -8736,7 +9226,7 @@
             </description>
             <name>rendered</name>
             <required>false</required>
-            <type>boolean</type>
+            <type>java.lang.Boolean</type>
         </attribute>
         <attribute>
             <description>
@@ -8745,7 +9235,7 @@
             </description>
             <name>required</name>
             <required>false</required>
-            <type>boolean</type>
+            <type>java.lang.Boolean</type>
         </attribute>
         <attribute>
             <description>
@@ -8857,7 +9347,7 @@
             </description>
             <name>disabled</name>
             <required>false</required>
-            <type>boolean</type>
+            <type>java.lang.Boolean</type>
         </attribute>
         <attribute>
             <description>
@@ -8886,7 +9376,7 @@
             </description>
             <name>hideNoSelectionOption</name>
             <required>false</required>
-            <type>boolean</type>
+            <type>java.lang.Boolean</type>
         </attribute>
         <attribute>
             <description>
@@ -9039,7 +9529,7 @@
             </description>
             <name>readonly</name>
             <required>false</required>
-            <type>boolean</type>
+            <type>java.lang.Boolean</type>
         </attribute>
         <attribute>
             <description>
@@ -9087,6 +9577,27 @@
             <required>false</required>
             <type>javax.faces.component.UIComponent</type>
         </attribute>
+        <attribute>
+            <description>
+                <![CDATA[<p class="changed_added_2_2">Per the WAI-ARIA spec and its
+                relationship to HTML5 (Section title ARIA Role Attriubute),
+                every HTML element may have a "role" attribute whose value
+                must be passed through unmodified on the element on which it
+                is declared in the final rendered markup.  The attribute, if
+                specified, must have a value that is a string literal that is,
+                or an EL Expression that evaluates to, a set of
+                space-separated tokens representing the various WAI-ARIA roles
+                that the element belongs to.
+                </p>
+
+                <p class="changed_added_2_2">It is the page author's
+                responsibility to ensure that the user agent is capable of
+                correctly interpreting the value of this attribute.</p>]]>
+            </description>
+            <name>role</name>
+            <required>false</required>
+            <type>java.lang.String</type>
+        </attribute>
     </tag>
     <tag>
         <description>
@@ -9157,7 +9668,7 @@
             </description>
             <name>immediate</name>
             <required>false</required>
-            <type>boolean</type>
+            <type>java.lang.Boolean</type>
         </attribute>
         <attribute>
             <description>
@@ -9167,7 +9678,7 @@
             </description>
             <name>rendered</name>
             <required>false</required>
-            <type>boolean</type>
+            <type>java.lang.Boolean</type>
         </attribute>
         <attribute>
             <description>
@@ -9176,7 +9687,7 @@
             </description>
             <name>required</name>
             <required>false</required>
-            <type>boolean</type>
+            <type>java.lang.Boolean</type>
         </attribute>
         <attribute>
             <description>
@@ -9274,7 +9785,7 @@
             </description>
             <name>disabled</name>
             <required>false</required>
-            <type>boolean</type>
+            <type>java.lang.Boolean</type>
         </attribute>
         <attribute>
             <description>
@@ -9303,7 +9814,7 @@
             </description>
             <name>hideNoSelectionOption</name>
             <required>false</required>
-            <type>boolean</type>
+            <type>java.lang.Boolean</type>
         </attribute>
         <attribute>
             <description>
@@ -9456,7 +9967,7 @@
             </description>
             <name>readonly</name>
             <required>false</required>
-            <type>boolean</type>
+            <type>java.lang.Boolean</type>
         </attribute>
         <attribute>
             <description>
@@ -9513,6 +10024,27 @@
             <required>false</required>
             <type>javax.faces.component.UIComponent</type>
         </attribute>
+        <attribute>
+            <description>
+                <![CDATA[<p class="changed_added_2_2">Per the WAI-ARIA spec and its
+                relationship to HTML5 (Section title ARIA Role Attriubute),
+                every HTML element may have a "role" attribute whose value
+                must be passed through unmodified on the element on which it
+                is declared in the final rendered markup.  The attribute, if
+                specified, must have a value that is a string literal that is,
+                or an EL Expression that evaluates to, a set of
+                space-separated tokens representing the various WAI-ARIA roles
+                that the element belongs to.
+                </p>
+
+                <p class="changed_added_2_2">It is the page author's
+                responsibility to ensure that the user agent is capable of
+                correctly interpreting the value of this attribute.</p>]]>
+            </description>
+            <name>role</name>
+            <required>false</required>
+            <type>java.lang.String</type>
+        </attribute>
     </tag>
     <tag>
         <description>
@@ -9581,7 +10113,7 @@
             </description>
             <name>immediate</name>
             <required>false</required>
-            <type>boolean</type>
+            <type>java.lang.Boolean</type>
         </attribute>
         <attribute>
             <description>
@@ -9591,7 +10123,7 @@
             </description>
             <name>rendered</name>
             <required>false</required>
-            <type>boolean</type>
+            <type>java.lang.Boolean</type>
         </attribute>
         <attribute>
             <description>
@@ -9600,7 +10132,7 @@
             </description>
             <name>required</name>
             <required>false</required>
-            <type>boolean</type>
+            <type>java.lang.Boolean</type>
         </attribute>
         <attribute>
             <description>
@@ -9698,7 +10230,7 @@
             </description>
             <name>disabled</name>
             <required>false</required>
-            <type>boolean</type>
+            <type>java.lang.Boolean</type>
         </attribute>
         <attribute>
             <description>
@@ -9727,7 +10259,7 @@
             </description>
             <name>hideNoSelectionOption</name>
             <required>false</required>
-            <type>boolean</type>
+            <type>java.lang.Boolean</type>
         </attribute>
         <attribute>
             <description>
@@ -9880,7 +10412,7 @@
             </description>
             <name>readonly</name>
             <required>false</required>
-            <type>boolean</type>
+            <type>java.lang.Boolean</type>
         </attribute>
         <attribute>
             <description>
@@ -9928,6 +10460,27 @@
             <required>false</required>
             <type>javax.faces.component.UIComponent</type>
         </attribute>
+        <attribute>
+            <description>
+                <![CDATA[<p class="changed_added_2_2">Per the WAI-ARIA spec and its
+                relationship to HTML5 (Section title ARIA Role Attriubute),
+                every HTML element may have a "role" attribute whose value
+                must be passed through unmodified on the element on which it
+                is declared in the final rendered markup.  The attribute, if
+                specified, must have a value that is a string literal that is,
+                or an EL Expression that evaluates to, a set of
+                space-separated tokens representing the various WAI-ARIA roles
+                that the element belongs to.
+                </p>
+
+                <p class="changed_added_2_2">It is the page author's
+                responsibility to ensure that the user agent is capable of
+                correctly interpreting the value of this attribute.</p>]]>
+            </description>
+            <name>role</name>
+            <required>false</required>
+            <type>java.lang.String</type>
+        </attribute>
     </tag>
     <tag>
         <description>
@@ -10027,7 +10580,7 @@
             </description>
             <name>immediate</name>
             <required>false</required>
-            <type>boolean</type>
+            <type>java.lang.Boolean</type>
         </attribute>
         <attribute>
             <description>
@@ -10037,7 +10590,7 @@
             </description>
             <name>rendered</name>
             <required>false</required>
-            <type>boolean</type>
+            <type>java.lang.Boolean</type>
         </attribute>
         <attribute>
             <description>
@@ -10046,7 +10599,7 @@
             </description>
             <name>required</name>
             <required>false</required>
-            <type>boolean</type>
+            <type>java.lang.Boolean</type>
         </attribute>
         <attribute>
             <description>
@@ -10153,7 +10706,7 @@
             </description>
             <name>disabled</name>
             <required>false</required>
-            <type>boolean</type>
+            <type>java.lang.Boolean</type>
         </attribute>
         <attribute>
             <description>
@@ -10182,7 +10735,7 @@
             </description>
             <name>hideNoSelectionOption</name>
             <required>false</required>
-            <type>boolean</type>
+            <type>java.lang.Boolean</type>
         </attribute>
         <attribute>
             <description>
@@ -10347,7 +10900,7 @@
             </description>
             <name>readonly</name>
             <required>false</required>
-            <type>boolean</type>
+            <type>java.lang.Boolean</type>
         </attribute>
         <attribute>
             <description>
@@ -10395,6 +10948,27 @@
             <required>false</required>
             <type>javax.faces.component.UIComponent</type>
         </attribute>
+        <attribute>
+            <description>
+                <![CDATA[<p class="changed_added_2_2">Per the WAI-ARIA spec and its
+                relationship to HTML5 (Section title ARIA Role Attriubute),
+                every HTML element may have a "role" attribute whose value
+                must be passed through unmodified on the element on which it
+                is declared in the final rendered markup.  The attribute, if
+                specified, must have a value that is a string literal that is,
+                or an EL Expression that evaluates to, a set of
+                space-separated tokens representing the various WAI-ARIA roles
+                that the element belongs to.
+                </p>
+
+                <p class="changed_added_2_2">It is the page author's
+                responsibility to ensure that the user agent is capable of
+                correctly interpreting the value of this attribute.</p>]]>
+            </description>
+            <name>role</name>
+            <required>false</required>
+            <type>java.lang.String</type>
+        </attribute>
     </tag>
     <tag>
         <description>
@@ -10459,7 +11033,585 @@
             </description>
             <name>rowHeader</name>
             <required>false</required>
-            <type>boolean</type>
+            <type>java.lang.Boolean</type>
         </attribute>
     </tag>
+
+    <tag>
+        <description>
+            <![CDATA[<p class="changed_added_2_2"><span>Renders</span>
+            an HTML "input" element of "type" "file". The standard HTML_BASIC
+            RenderKit specifies behavior that assumes Servlet 3.0 or later.
+            Portlet implementations must override this implementation with a
+            semantically equivalent one that functions under the constraints
+            of the Portlet specification.</p>
+            
+            <div class="changed_added_2_2">
+            
+            <p><a name="decode">Decode Behavior</a></p>
+            
+            <ul>
+            
+            <p>Obtain the <code>Map</code> from the "requestParameterMap"
+            property of the <code>ExternalContext</code>.  If the
+            <code>Map</code> contains an entry for the "clientId" of the
+            component, pass the value of the entry to the
+            <code>setSubmittedValue()</code> method of the component, which
+            must be an instance of <code>EditableValueHolder</code>, and
+            return.  Otherwise, obtain the "request" property from the
+            <code>ExternalContext</code> and cast it to
+            <code>javax.servlet.http.HttpServletRequest</code>.  Call
+            <code>getParts()</code> on the httpServletRequest. Iterate over
+            the parts.  If the "name" property of the current part is equal to
+            the "clientId", pass the current part to the
+            <code>setSubmittedValue()</code> method of the component.  If an
+            exception is thrown during the iteration, log the exception and
+            continue.</p>
+            
+            <p>The standard implementation must override the
+            <code>getConvertedValue()</code> so that it simply returns the
+            <code>submittedValue</code> argument.</p>
+            
+            <p>Any exception thrown when interacting with the underlying
+            multi-part API must be wrapped in a <code>FacesException</code>
+            and allowed to reach the <code>ExceptionHandler</code>.</p>
+            
+            </ul>
+            
+            <p>Encode Behavior</p>
+            
+            <ul>
+            
+            <p> Render the clientId of the component as the value of the
+            "name" attribute.  Do not render the "value" attribute.  If the
+            "styleClass" attribute is specified, render its value as the value
+            of the "class" attribute.  </p>
+            
+            <p>If <code>ProjectStage</code> is not
+            <code>ProjectStage.Production</code>, verify that the enclosing
+            form has an <code>enctype</code> attribute whose value is
+            <code>multipart/form-data</code>.  If not, add a
+            <code>FacesMessage</code> for this component's clientId to the
+            <code>FacesContext</code> stating that file upload requires a form
+            with <code>enctype</code> equal to
+            <code>multipart/form-data</code>.  If <code>ProjectStage</code>
+            <strong>is</strong> <code>ProjectStage.Production</code>, do not
+            do this verification.</p>
+            
+            </ul>
+            
+            </div>]]>
+        </description>
+        <tag-name>inputFile</tag-name>
+        <handler-class></handler-class>
+        <attribute>
+            <description>
+                <![CDATA[Converter instance registered with this component.]]>
+            </description>
+            <name>converter</name>
+            <required>false</required>
+            <type>javax.faces.convert.Converter</type>
+        </attribute>
+
+        <attribute>
+            <description>
+                <![CDATA[A ValueExpression enabled attribute that, if present, will be
+                used as the text of the converter message, replacing any message
+                that comes from the converter.]]>
+            </description>
+            <name>converterMessage</name>
+            <required>false</required>
+            <type>java.lang.String</type>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[The component identifier for this component.  This value must be
+                unique within the closest parent component that is a naming
+                container.]]>
+            </description>
+            <name>id</name>
+            <required>false</required>
+            <type>java.lang.String</type>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Flag indicating that this component's value must be
+                converted and validated immediately (that is, during
+                Apply Request Values phase), rather than waiting
+                until Process Validations phase.]]>
+            </description>
+            <name>immediate</name>
+            <required>false</required>
+            <type>java.lang.Boolean</type>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Flag indicating whether or not this component should be rendered
+                (during Render Response Phase), or processed on any subsequent
+                form submit.  The default value for this property is true.]]>
+            </description>
+            <name>rendered</name>
+            <required>false</required>
+            <type>java.lang.Boolean</type>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Flag indicating that the user is required to provide a submitted
+                value for this input component.]]>
+            </description>
+            <name>required</name>
+            <required>false</required>
+            <type>java.lang.Boolean</type>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[A ValueExpression enabled attribute that, if present, will be
+                used as the text of the validation message for the "required"
+                facility, if the "required" facility is used.]]>
+            </description>
+            <name>requiredMessage</name>
+            <required>false</required>
+            <type>java.lang.String</type>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[MethodExpression representing a validator method that will be called
+                during Process Validations to perform correctness checks on the
+                value of this component.  The expression must evaluate to a public
+                method that takes FacesContext, UIComponent, and Object parameters,
+                with a return type of void.]]>
+            </description>
+            <name>validator</name>
+            <required>false</required>
+            <type>java.lang.String</type>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[The current value of this component.]]>
+            </description>
+            <name>value</name>
+            <required>false</required>
+            <type>java.lang.Object</type>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[<p>
+                
+                MethodExpression representing a value change listener method
+                that will be notified when a new value has been set for this
+                input component.  The expression must evaluate to a public
+                method that takes a <code>ValueChangeEvent</code> parameter,
+                with a return type of void, <span class="changed_added_2_0">or
+                to a public method that takes no arguments with a return type
+                of void.  In the latter case, the method has no way of easily
+                knowing what the new value is, but this can be useful in cases
+                where a notification is needed that "this value
+                changed".</span>
+                
+                </p>]]>
+            </description>
+            <name>valueChangeListener</name>
+            <required>false</required>
+            <type>java.lang.String</type>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Alternate textual description of the
+                element rendered by this component.]]>
+            </description>
+            <name>alt</name>
+            <required>false</required>
+            <type>java.lang.String</type>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[If the value of this attribute is "off", render "off" as the value
+                of the attribute. This indicates that the  browser should
+                disable its autocomplete feature for this component.  This is
+                useful for components that perform autocompletion and do not
+                want the browser interfering.  If this attribute is not set or the value
+                is "on", render nothing.]]>
+            </description>
+            <name>autocomplete</name>
+            <required>false</required>
+            <type>java.lang.String</type>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Direction indication for text that does not inherit directionality.
+                Valid values are "LTR" (left-to-right) and "RTL" (right-to-left).
+                These attributes are case sensitive when rendering to XHTML, so
+                care must be taken to have the correct case.]]>
+            </description>
+            <name>dir</name>
+            <required>false</required>
+            <type>java.lang.String</type>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Flag indicating that this element must never receive focus or
+                be included in a subsequent submit.  A value of false causes
+                no attribute to be rendered, while a value of true causes the
+                attribute to be rendered as disabled="disabled".]]>
+            </description>
+            <name>disabled</name>
+            <required>false</required>
+            <type>java.lang.Boolean</type>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[A localized user presentable name for this component.]]>
+            </description>
+            <name>label</name>
+            <required>false</required>
+            <type>java.lang.String</type>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Code describing the language used in the generated markup
+                for this component.]]>
+            </description>
+            <name>lang</name>
+            <required>false</required>
+            <type>java.lang.String</type>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[The maximum number of characters that may
+                be entered in this field.]]>
+            </description>
+            <name>maxlength</name>
+            <required>false</required>
+            <type>int</type>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Javascript code executed when this element loses focus.]]>
+            </description>
+            <name>onblur</name>
+            <required>false</required>
+            <type>java.lang.String</type>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Javascript code executed when this element loses focus
+                and its value has been modified since gaining focus.]]>
+            </description>
+            <name>onchange</name>
+            <required>false</required>
+            <type>java.lang.String</type>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Javascript code executed when a pointer button is
+                clicked over this element.]]>
+            </description>
+            <name>onclick</name>
+            <required>false</required>
+            <type>java.lang.String</type>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Javascript code executed when a pointer button is
+                double clicked over this element.]]>
+            </description>
+            <name>ondblclick</name>
+            <required>false</required>
+            <type>java.lang.String</type>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Javascript code executed when this element receives focus.]]>
+            </description>
+            <name>onfocus</name>
+            <required>false</required>
+            <type>java.lang.String</type>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Javascript code executed when a key is
+                pressed down over this element.]]>
+            </description>
+            <name>onkeydown</name>
+            <required>false</required>
+            <type>java.lang.String</type>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Javascript code executed when a key is
+                pressed and released over this element.]]>
+            </description>
+            <name>onkeypress</name>
+            <required>false</required>
+            <type>java.lang.String</type>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Javascript code executed when a key is
+                released over this element.]]>
+            </description>
+            <name>onkeyup</name>
+            <required>false</required>
+            <type>java.lang.String</type>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Javascript code executed when a pointer button is
+                pressed down over this element.]]>
+            </description>
+            <name>onmousedown</name>
+            <required>false</required>
+            <type>java.lang.String</type>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Javascript code executed when a pointer button is
+                moved within this element.]]>
+            </description>
+            <name>onmousemove</name>
+            <required>false</required>
+            <type>java.lang.String</type>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Javascript code executed when a pointer button is
+                moved away from this element.]]>
+            </description>
+            <name>onmouseout</name>
+            <required>false</required>
+            <type>java.lang.String</type>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Javascript code executed when a pointer button is
+                moved onto this element.]]>
+            </description>
+            <name>onmouseover</name>
+            <required>false</required>
+            <type>java.lang.String</type>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Javascript code executed when a pointer button is
+                released over this element.]]>
+            </description>
+            <name>onmouseup</name>
+            <required>false</required>
+            <type>java.lang.String</type>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Javascript code executed when text within this
+                element is selected by the user.]]>
+            </description>
+            <name>onselect</name>
+            <required>false</required>
+            <type>java.lang.String</type>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Flag indicating that this component will prohibit changes by
+                the user.  The element may receive focus unless it has also
+                been disabled.  A value of false causes
+                no attribute to be rendered, while a value of true causes the
+                attribute to be rendered as readonly="readonly".]]>
+            </description>
+            <name>readonly</name>
+            <required>false</required>
+            <type>java.lang.Boolean</type>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[<p class="changed_added_2_2">Per the WAI-ARIA spec and its
+                relationship to HTML5 (Section title ARIA Role Attriubute),
+                every HTML element may have a "role" attribute whose value
+                must be passed through unmodified on the element on which it
+                is declared in the final rendered markup.  The attribute, if
+                specified, must have a value that is a string literal that is,
+                or an EL Expression that evaluates to, a set of
+                space-separated tokens representing the various WAI-ARIA roles
+                that the element belongs to.
+                </p>
+                
+                <p class="changed_added_2_2">It is the page author's
+                responsibility to ensure that the user agent is capable of
+                correctly interpreting the value of this attribute.</p>]]>
+            </description>
+            <name>role</name>
+            <required>false</required>
+            <type>java.lang.String</type>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[The number of characters used to determine
+                the width of this field.]]>
+            </description>
+            <name>size</name>
+            <required>false</required>
+            <type>int</type>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[CSS style(s) to be applied when this component is rendered.]]>
+            </description>
+            <name>style</name>
+            <required>false</required>
+            <type>java.lang.String</type>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Space-separated list of CSS style class(es) to be applied when
+                this element is rendered.  This value must be passed through
+                as the "class" attribute on generated markup.]]>
+            </description>
+            <name>styleClass</name>
+            <required>false</required>
+            <type>java.lang.String</type>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Position of this element in the tabbing order
+                for the current document.  This value must be
+                an integer between 0 and 32767.]]>
+            </description>
+            <name>tabindex</name>
+            <required>false</required>
+            <type>java.lang.String</type>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[Advisory title information about markup elements generated
+                for this component.]]>
+            </description>
+            <name>title</name>
+            <required>false</required>
+            <type>java.lang.String</type>
+        </attribute>
+        <attribute>
+            <description>
+                The ValueExpression linking this component to a property in a backing bean
+            </description>
+            <name>binding</name>
+            <required>false</required>
+            <type>javax.faces.component.UIComponent</type>
+        </attribute>
+
+    </tag>
+    <tag>
+        <description>
+            <![CDATA[<div class="changed_added_2_1">
+            
+            <p><span class="changed_added_2_1 changed_modified_2_2">Render</span> the markup for
+            a <code><!DOCTYPE></code> declaration.</p>
+            
+            <p>Decode Behavior</p>
+            
+            <ul>
+            
+            <p>No action is required during decode for this renderer.</p>
+            
+            </ul>
+            
+            <p>Encode Behavior</p>
+            
+            <p>Output an XML Doctype using the provided attributes.  Output the
+            literal text <code><!DOCTYPE</code>. The "rootElement" attribute is
+            required and must be rendered next.  If the "public" attribute is
+            defined, render the literal text <code>PUBLIC</code> then render the
+            value of the attribute inside double quotes.  If the "system" attribute
+            is defined, render it next, inside double quotes.  Close the doctype
+            declaration with the literal text <code>></code>.</p>
+            
+            <div class="changed_added_2_2">
+            
+            <p>No relocation occurs with the output of this component. It is
+            rendered at whatever position in the view hierarchy it happens to be
+            encountered when traversing the view to render. Therefore, this
+            component must be located in the view hierarchy at the correct location
+            so that the final rendered markup has it in the proper place with
+            respect to the user agent that consumes the rendered markup. In practice
+            this means in front of the <html> or <h:html> element.
+            Furthermore, if multiple <h:doctype> components exist,
+            <strong>all</strong> of them will be rendered.</p>
+            
+            <p>If this component is present in a view, any DOCTYPE that would
+            otherwise have been rendered by virtue of being present in the VDL page
+            must be ignored.</p>
+            
+            </div>
+            
+            
+            </div>]]>
+        </description>
+        <tag-name>doctype</tag-name>
+        <handler-class></handler-class>
+        <attribute>
+            <description>
+                <![CDATA[Converter instance registered with this component.]]>
+            </description>
+            <name>converter</name>
+            <required>false</required>
+            <type>javax.faces.convert.Converter</type>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[The component identifier for this component.  This value must be
+                unique within the closest parent component that is a naming
+                container.]]>
+            </description>
+            <name>id</name>
+            <required>false</required>
+            <type>java.lang.Boolean</type>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[The current value of this component.]]>
+            </description>
+            <name>value</name>
+            <required>false</required>
+            <type>java.lang.Object</type>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[<div class="changed_added_2_1">
+                Will be output as the public part of the DOCTYPE
+                </div>]]>
+            </description>
+            <name>public</name>
+            <required>false</required>
+            <type>java.lang.String</type>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[<div class="changed_added_2_1">
+                The root XML element
+                </div>]]>
+            </description>
+            <name>rootElement</name>
+            <required>false</required>
+            <type>java.lang.String</type>
+        </attribute>
+        <attribute>
+            <description>
+                <![CDATA[<div class="changed_added_2_1">
+                Will be output as the system part of the DOCTYPE
+                </div>]]>
+            </description>
+            <name>system</name>
+            <required>false</required>
+            <type>java.lang.String</type>
+        </attribute>
+        <attribute>
+            <description>
+                The ValueExpression linking this component to a property in a backing bean
+            </description>
+            <name>binding</name>
+            <required>false</required>
+            <type>javax.faces.component.UIComponent</type>
+        </attribute>
+
+
+    </tag>
+
+
 </facelet-taglib>
diff --git a/jsf-ri/conf/share/javax.enterprise.inject.spi.Extension b/jsf-ri/conf/share/javax.enterprise.inject.spi.Extension
new file mode 100644
index 0000000..cb2f111
--- /dev/null
+++ b/jsf-ri/conf/share/javax.enterprise.inject.spi.Extension
@@ -0,0 +1,3 @@
+com.sun.faces.application.view.ViewScopeExtension
+com.sun.faces.flow.FlowCDIExtension
+com.sun.faces.flow.FlowDiscoveryCDIExtension
diff --git a/jsf-ri/conf/share/jsf_core.tld b/jsf-ri/conf/share/jsf_core.tld
index c775d84..6ca9c8f 100644
--- a/jsf-ri/conf/share/jsf_core.tld
+++ b/jsf-ri/conf/share/jsf_core.tld
@@ -1,41 +1,45 @@
 <?xml version="1.0" encoding="ISO-8859-1" ?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
--->
 
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
 
 <taglib xmlns="http://java.sun.com/xml/ns/javaee"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
@@ -49,7 +53,7 @@
         The core JavaServer Faces custom actions that are independent of
         any particular RenderKit.
     </description>
-    <tlib-version>1.2</tlib-version>
+    <tlib-version>2.1</tlib-version>
     <short-name>f</short-name>
     <uri>http://java.sun.com/jsf/core</uri>
 
@@ -962,9 +966,10 @@
 
     <tag>
         <description>
-            <![CDATA[<p><span class="changed_modified_2_0">Add</span> a
-            child UISelectItems component to the UIComponent associated
-            with the closed parent UIComponent custom action.</p>
+            <![CDATA[<p><span class="changed_modified_2_0
+            changed_modified_2_2">Add</span> a child UISelectItems
+            component to the UIComponent associated with the closest
+            parent UIComponent custom action.</p>
 
             <p class="changed_modified_2_0">When iterating over the
             select items, <code>toString()</code> must be called on the
@@ -1021,7 +1026,7 @@ itemLabel, itemDescription, itemDisabled, and itemLabelEscaped.</p>
 <div class="syntax"><div class="html4strict" style="font-family: monospace;"><ol><li class="li1"><div class="de1"><span class="sc2"><h:selectOneListbox <span class="kw3">size</span>=<span class="st0">"1"</span> <span class="kw3">id</span>=<span class="st0">"escape02"</span> <span class="kw3">value</span>=<span class="st0">"#{select05NoSelection.initialCollectionValues}"</span><span class="kw2">></span></span></div></li>
 <li class="li2"><div class="de2">  <span class="sc2"><f:selectItems <span class="kw3">value</span>=<span class="st0">"#{select05NoSelection.hobbitList}"</span></div></li>
 <li class="li1"><div class="de1">                 var=<span class="st0">"n"</span></div></li>
-<li class="li2"><div class="de2">                 itemValue=<span class="st0">"#{n}"</span></div></li>
+<li class="li2"><div class="de2">                 itemValue=<span class="st0">"#{n.id}"</span></div></li>
 <li class="li1"><div class="de1">                 itemLabel=<span class="st0">"#{n.bio}"</span></div></li>
 <li class="li2"><div class="de2">                 itemDescription=<span class="st0">"#{n.description}"</span></div></li>
 <li class="li1"><div class="de1">                 itemDisabled=<span class="st0">"#{n.disabled}"</span></div></li>
@@ -1071,9 +1076,11 @@ may be referred to in EL for the value of other attributes.</p>
         <attribute>
             <description>
 
-<![CDATA[ <p class="changed_added_2_0">evaluates to a
-<code>Collection</code>, array, or <code>Map</code> from which the items
-to be shown will be rendered.</p> ]]>
+<![CDATA[ <p class="changed_added_2_0"><span
+class="changed_modified_2_2">This attribute lets you refer to a property
+of the current member of the collection referenced by the "value"
+attribute, using the value of the "var" attribute as the base.  For
+example, #{n.id}.</span></p> ]]>
 
             </description>
             <name>itemValue</name>
@@ -1147,7 +1154,7 @@ an item <strong>and</strong> the field is marked as required, then it
 will not pass validation.</p> ]]>
 
             </description>
-            <name>itemLabelEscaped</name>
+            <name>noSelectionOption</name>
             <deferred-value>
                 <type>java.lang.Boolean</type>
             </deferred-value>
diff --git a/jsf-ri/conf/share/jstl-core.taglib.xml b/jsf-ri/conf/share/jstl-core.taglib.xml
index a626448..f4f0d07 100644
--- a/jsf-ri/conf/share/jstl-core.taglib.xml
+++ b/jsf-ri/conf/share/jstl-core.taglib.xml
@@ -1,136 +1,142 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
- Copyright 2009 Sun Microsystems, Inc. All rights reserved.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
+    Copyright (c) 2009-2010 Oracle and/or its affiliates. All rights reserved.
 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
 
- Contributor(s):
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
 -->
 
-<facelet-taglib xmlns="http://java.sun.com/xml/ns/javaee"
+<facelet-taglib xmlns="http://xmlns.jcp.org/xml/ns/javaee"
                 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-                xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facelettaglibrary_2_0.xsd"
-                version="2.0">
+                xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-facelettaglibrary_2_2.xsd"
+                version="2.2">
   <description>
-<![CDATA[<p>JSTL 1.2 core library</p>
+<![CDATA[<p>JSTL 1.2 core library</p>
 
-<p>The pre JSF 2.0 version of Facelets incorrectly declared the taglib
-uri to be <code>http://java.sun.com/jstl/core</code>.  For backwards
+<p>The pre JSF 2.0 version of Facelets incorrectly declared the taglib
+uri to be <code>http://xmlns.jcp.org/jstl/core</code>.  For backwards
 compatibility implementations must correctly handle inclusions with the
-incorrect uri, and the correct uri, declared here.</p>
+incorrect uri, and the correct uri, declared here.</p>
 ]]>
 </description>
 
-    <namespace>http://java.sun.com/jsp/jstl/core</namespace>
+    <namespace>http://xmlns.jcp.org/jsp/jstl/core</namespace>
     <tag>
-        <description>
+        <description><![CDATA[
             Catches any Throwable that occurs in its body and optionally
             exposes it.
-        </description>
+        ]]></description>
         <tag-name>catch</tag-name>
         <handler-class>com.sun.faces.facelets.tag.jstl.core.CatchHandler</handler-class>
         <attribute>
-            <description>
+            <description><![CDATA[
                 Name of the exported scoped variable for the
                 exception thrown from a nested action. The type of the
                 scoped variable is the type of the exception thrown.
-            </description>
+            ]]></description>
             <name>var</name>
             <required>false</required>
             <type>java.lang.String</type>
         </attribute>
     </tag>
     <tag>
-        <description>
+        <description><![CDATA[
             Simple conditional tag that establishes a context for
             mutually exclusive conditional operations, marked by
-            <when> and <otherwise>
-        </description>
+            <when> and <otherwise>
+        ]]></description>
         <tag-name>choose</tag-name>
         <handler-class>com.sun.faces.facelets.tag.jstl.core.ChooseHandler</handler-class>
     </tag>
     <tag>
-        <description>
+        <description><![CDATA[
             Simple conditional tag, which evalutes its body if the
             supplied condition is true and optionally exposes a Boolean
             scripting variable representing the evaluation of this condition
-        </description>
+        ]]></description>
         <tag-name>if</tag-name>
         <handler-class>com.sun.faces.facelets.tag.jstl.core.IfHandler</handler-class>
         <attribute>
-            <description>
+            <description><![CDATA[
                 The test condition that determines whether or
                 not the body content should be processed.
-            </description>
+            ]]></description>
             <name>test</name>
             <required>true</required>
             <type>boolean</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
                 Name of the exported scoped variable for the
                 resulting value of the test condition. The type
                 of the scoped variable is Boolean.
-            </description>
+            ]]></description>
             <name>var</name>
             <required>false</required>
             <type>java.lang.String</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
                 Scope for var.
-            </description>
+            ]]></description>
             <name>scope</name>
             <required>false</required>
             <type>java.lang.String</type>
         </attribute>
     </tag>
     <tag>
-        <description>
+        <description><![CDATA[
             The basic iteration tag, accepting many different
             collection types and supporting subsetting and other
             functionality
-        </description>
+        ]]></description>
         <tag-name>forEach</tag-name>
         <handler-class>com.sun.faces.facelets.tag.jstl.core.ForEachHandler</handler-class>
         <attribute>
-            <description>
+            <description><![CDATA[
                 Collection of items to iterate over.
-            </description>
+            ]]></description>
             <name>items</name>
             <required>false</required>
             <type>java.lang.Object</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
                 If items specified:
                 Iteration begins at the item located at the
                 specified index. First item of the collection has
@@ -138,152 +144,152 @@ incorrect uri, and the correct uri, declared here.</p>
                 If items not specified:
                 Iteration begins with index set at the value
                 specified.
-            </description>
+            ]]></description>
             <name>begin</name>
             <required>false</required>
             <type>int</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
                 If items specified:
                 Iteration ends at the item located at the
                 specified index (inclusive).
                 If items not specified:
                 Iteration ends when index reaches the value
                 specified.
-            </description>
+            ]]></description>
             <name>end</name>
             <required>false</required>
             <type>int</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
                 Iteration will only process every step items of
                 the collection, starting with the first one.
-            </description>
+            ]]></description>
             <name>step</name>
             <required>false</required>
             <type>int</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
                 Name of the exported scoped variable for the
                 current item of the iteration. This scoped
                 variable has nested visibility. Its type depends
                 on the object of the underlying collection.
-            </description>
+            ]]></description>
             <name>var</name>
             <required>false</required>
             <type>java.lang.String</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
                 Name of the exported scoped variable for the
                 status of the iteration. Object exported is of type
                 javax.servlet.jsp.jstl.core.LoopTagStatus. This scoped variable
                 has nested
                 visibility.
-            </description>
+            ]]></description>
             <name>varStatus</name>
             <required>false</required>
             <type>java.lang.String</type>
         </attribute>
     </tag>
     <tag>
-        <description>
-            Subtag of <choose> that follows <when> tags
+        <description><![CDATA[
+            Subtag of <choose> that follows <when> tags
             and runs only if all of the prior conditions evaluated to
             'false'
-        </description>
+        ]]></description>
         <tag-name>otherwise</tag-name>
         <handler-class>com.sun.faces.facelets.tag.jstl.core.ChooseOtherwiseHandler</handler-class>
     </tag>
     <tag>
-        <description>
-            <p>Sets the result of an expression evaluation based on the
+        <description><![CDATA[
+            <p>Sets the result of an expression evaluation based on the
             value of the attributes. If "scope" the is present, but has a zero
-            length or is equal to the string "page", <code>TagException</code>
+            length or is equal to the string "page", <code>TagException</code>
             is
             thrown with an informative error message, ensuring page location
-            information is saved.</p>
+            information is saved.</p>
 
-            <p>This handler operates in one of two ways.
+            <p>This handler operates in one of two ways.
 
-            <ol>
+            <ol>
 
-            <li><p>The user has set "var", "value" and (optionally)
-            "scope" attributes.</p></li>
+            <li><p>The user has set "var", "value" and (optionally)
+            "scope" attributes.</p></li>
 
-            <li><p>The user has set "target", "property", and
+            <li><p>The user has set "target", "property", and
             "value"
-            attributes.</p></li>
+            attributes.</p></li>
 
 
-            </ol>
+            </ol>
 
-            <p>The first case takes precedence over the second.</p>
+            <p>The first case takes precedence over the second.</p>
 
 
-        </description>
+        ]]></description>
         <tag-name>set</tag-name>
         <handler-class>com.sun.faces.facelets.tag.jstl.core.SetHandler</handler-class>
         <attribute>
-            <description>
+            <description><![CDATA[
                 Name of the exported scoped variable to hold the value
                 specified in the action. The type of the scoped variable is
                 whatever type the value expression evaluates to.
-            </description>
+            ]]></description>
             <name>var</name>
             <required>false</required>
             <type>java.lang.String</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
                 Expression to be evaluated.
-            </description>
+            ]]></description>
             <name>value</name>
             <required>false</required>
             <type>java.lang.Object</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
                 Target object whose property will be set. Must evaluate to
                 a JavaBeans object with setter property property, or to a
                 java.util.Map object.
-            </description>
+            ]]></description>
             <name>target</name>
             <required>false</required>
             <type>java.lang.String</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
                 Name of the property to be set in the target object.
-            </description>
+            ]]></description>
             <name>property</name>
             <required>false</required>
             <type>java.lang.String</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
                 Scope for var.
-            </description>
+            ]]></description>
             <name>scope</name>
             <required>false</required>
             <type>java.lang.String</type>
         </attribute>
     </tag>
     <tag>
-        <description>
+        <description><![CDATA[
             Subtag of <choose> that includes its body if its
             condition evalutes to 'true'
-        </description>
+        ]]></description>
         <tag-name>when</tag-name>
         <handler-class>com.sun.faces.facelets.tag.jstl.core.ChooseWhenHandler</handler-class>
         <attribute>
-            <description>
+            <description><![CDATA[
                 The test condition that determines whether or not the
                 body content should be processed.
-            </description>
+            ]]></description>
             <name>test</name>
             <required>true</required>
             <type>boolean</type>
diff --git a/jsf-ri/conf/share/jstl-core.tld b/jsf-ri/conf/share/jstl-core.tld
index 0018065..6e1b6d3 100644
--- a/jsf-ri/conf/share/jstl-core.tld
+++ b/jsf-ri/conf/share/jstl-core.tld
@@ -1,39 +1,46 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
- Copyright 2009 Sun Microsystems, Inc. All rights reserved.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
+    Copyright (c) 2009-2010 Oracle and/or its affiliates. All rights reserved.
 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
 
- Contributor(s):
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
 -->
+
 <taglib xmlns="http://java.sun.com/xml/ns/javaee"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd"
@@ -42,17 +49,17 @@
   <description>
 <![CDATA[<p>JSTL 1.2 core library</p>
 
-<p>The pre JSF 2.0 version of Facelets incorrectly declared the taglib
-uri to be <code>http://java.sun.com/jstl/core</code>.  For backwards
-compatibility implementations must correctly handle inclusions with the
-incorrect uri, and the correct uri, declared here.</p>
-]]>
+<p class="changed_modified_2_0_rev_a">The pre JSF 2.0 version of
+Facelets incorrectly declared the taglib uri to be
+<code>http://java.sun.com/jstl/core</code>.  For backwards compatibility
+implementations must correctly handle inclusions with the incorrect uri,
+and the correct uri, declared here.</p> ]]>
 </description>
 
   <display-name>JSTL core</display-name>
   <tlib-version>1.2</tlib-version>
   <short-name>c</short-name>
-  <uri>http://java.sun.com/jsp/jstl/core</uri>
+  <uri>http://xmlns.jcp.org/jsp/jstl/core</uri>
 
   <tag>
     <description>
diff --git a/jsf-ri/conf/share/jstl-fn.taglib.xml b/jsf-ri/conf/share/jstl-fn.taglib.xml
index 86acd9b..32b2849 100644
--- a/jsf-ri/conf/share/jstl-fn.taglib.xml
+++ b/jsf-ri/conf/share/jstl-fn.taglib.xml
@@ -1,46 +1,52 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
- Copyright 2009 Sun Microsystems, Inc. All rights reserved.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
+    Copyright (c) 2009-2010 Oracle and/or its affiliates. All rights reserved.
 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
 
- Contributor(s):
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
 -->
 
-<facelet-taglib xmlns="http://java.sun.com/xml/ns/javaee"
+<facelet-taglib xmlns="http://xmlns.jcp.org/xml/ns/javaee"
                 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-                xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facelettaglibrary_2_0.xsd"
-                version="2.0">
+                xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-facelettaglibrary_2_2.xsd"
+                version="2.2">
   <description>JSTL 1.1 functions library</description>
-  <namespace>http://java.sun.com/jsp/jstl/functions</namespace>
+  <namespace>http://xmlns.jcp.org/jsp/jstl/functions</namespace>
   <function>
     <description>
       Tests if an input string contains the specified substring.
diff --git a/jsf-ri/conf/share/jstl-fn.tld b/jsf-ri/conf/share/jstl-fn.tld
index 469b4d1..6e2053a 100644
--- a/jsf-ri/conf/share/jstl-fn.tld
+++ b/jsf-ri/conf/share/jstl-fn.tld
@@ -1,39 +1,46 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 2009 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2009-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
+
 <taglib xmlns="http://java.sun.com/xml/ns/j2ee"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
@@ -43,7 +50,7 @@
   <display-name>JSTL functions</display-name>
   <tlib-version>1.1</tlib-version>
   <short-name>fn</short-name>
-  <uri>http://java.sun.com/jsp/jstl/functions</uri>
+  <uri>http://xmlns.jcp.org/jsp/jstl/functions</uri>
 
   <function>
     <description>
diff --git a/jsf-ri/conf/share/mojarra_ext.taglib.xml b/jsf-ri/conf/share/mojarra_ext.taglib.xml
index c53653f..207c70b 100644
--- a/jsf-ri/conf/share/mojarra_ext.taglib.xml
+++ b/jsf-ri/conf/share/mojarra_ext.taglib.xml
@@ -1,46 +1,50 @@
 <?xml version = "1.0" encoding = "UTF-8"?>
-        
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
 
- Contributor(s):
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
--->
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
 
-<!DOCTYPE facelet-taglib PUBLIC
-  "-//Sun Microsystems, Inc.//DTD Facelet Taglib 1.0//EN"
-  "http://java.sun.com/dtd/facelet-taglib_1_0.dtd">
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
 
-<facelet-taglib>
+<facelet-taglib xmlns="http://xmlns.jcp.org/xml/ns/javaee"
+                xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+                xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-facelettaglibrary_2_2.xsd"
+                version="2.2">
     <namespace>http://mojarra.dev.java.net/mojarra_ext</namespace>
     <tag>
         <tag-name>regexValidator</tag-name>
@@ -61,4 +65,4 @@
             <renderer-type>com.sun.faces.ext.render.FocusHTMLRenderer</renderer-type>
         </component>
     </tag>
-</facelet-taglib>
\ No newline at end of file
+</facelet-taglib>
diff --git a/jsf-ri/conf/share/mojarra_ext.tld b/jsf-ri/conf/share/mojarra_ext.tld
index 127ed31..b28d1bc 100644
--- a/jsf-ri/conf/share/mojarra_ext.tld
+++ b/jsf-ri/conf/share/mojarra_ext.tld
@@ -1,39 +1,44 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
 
- Contributor(s):
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
 -->
 
 <taglib xmlns="http://java.sun.com/xml/ns/javaee"
diff --git a/jsf-ri/conf/share/tlddoc-resources/alltags-frame.html.xsl b/jsf-ri/conf/share/tlddoc-resources/alltags-frame.html.xsl
index ccadf1d..1b08525 100644
--- a/jsf-ri/conf/share/tlddoc-resources/alltags-frame.html.xsl
+++ b/jsf-ri/conf/share/tlddoc-resources/alltags-frame.html.xsl
@@ -1,35 +1,36 @@
 <?xml version="1.0" encoding="UTF-8" ?>
-
 <!--
-  - <license>
-  - Copyright (c) 2003-2004, Sun Microsystems, Inc.
-  - All rights reserved.
-  - 
-  - Redistribution and use in source and binary forms, with or without 
-  - modification, are permitted provided that the following conditions are met:
-  - 
-  -     * Redistributions of source code must retain the above copyright 
-  -       notice, this list of conditions and the following disclaimer.
-  -     * Redistributions in binary form must reproduce the above copyright 
-  -       notice, this list of conditions and the following disclaimer in the
-  -       documentation and/or other materials provided with the distribution.
-  -     * Neither the name of Sun Microsystems, Inc. nor the names of its 
-  -       contributors may be used to endorse or promote products derived from
-  -       this software without specific prior written permission.
-  - 
-  - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
-  - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
-  - TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A 
-  - PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
-  - CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-  - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 
-  - ROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-  - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-  - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-  - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-  - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-  - </license>
-  -->
+
+    Copyright (c) 2003-2004,-2010 Oracle and/or its affiliates. All rights reserved.
+
+    Redistribution and use in source and binary forms, with or without
+    modification, are permitted provided that the following conditions
+    are met:
+
+      - Redistributions of source code must retain the above copyright
+        notice, this list of conditions and the following disclaimer.
+
+      - Redistributions in binary form must reproduce the above copyright
+        notice, this list of conditions and the following disclaimer in the
+        documentation and/or other materials provided with the distribution.
+
+      - Neither the name of Oracle nor the names of its
+        contributors may be used to endorse or promote products derived
+        from this software without specific prior written permission.
+
+    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+    IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+    THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+    PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+    CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+    EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+    PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+    PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+    LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+    NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+    SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+-->
 
 <!--
     Document   : alltags-frame.html.xsl
diff --git a/jsf-ri/conf/share/tlddoc-resources/alltags-noframe.html.xsl b/jsf-ri/conf/share/tlddoc-resources/alltags-noframe.html.xsl
index c0a308c..7baa850 100644
--- a/jsf-ri/conf/share/tlddoc-resources/alltags-noframe.html.xsl
+++ b/jsf-ri/conf/share/tlddoc-resources/alltags-noframe.html.xsl
@@ -1,35 +1,36 @@
 <?xml version="1.0" encoding="UTF-8" ?>
-
 <!--
-  - <license>
-  - Copyright (c) 2003-2004, Sun Microsystems, Inc.
-  - All rights reserved.
-  - 
-  - Redistribution and use in source and binary forms, with or without 
-  - modification, are permitted provided that the following conditions are met:
-  - 
-  -     * Redistributions of source code must retain the above copyright 
-  -       notice, this list of conditions and the following disclaimer.
-  -     * Redistributions in binary form must reproduce the above copyright 
-  -       notice, this list of conditions and the following disclaimer in the
-  -       documentation and/or other materials provided with the distribution.
-  -     * Neither the name of Sun Microsystems, Inc. nor the names of its 
-  -       contributors may be used to endorse or promote products derived from
-  -       this software without specific prior written permission.
-  - 
-  - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
-  - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
-  - TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A 
-  - PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
-  - CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-  - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 
-  - ROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-  - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-  - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-  - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-  - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-  - </license>
-  -->
+
+    Copyright (c) 2003-2004,-2010 Oracle and/or its affiliates. All rights reserved.
+
+    Redistribution and use in source and binary forms, with or without
+    modification, are permitted provided that the following conditions
+    are met:
+
+      - Redistributions of source code must retain the above copyright
+        notice, this list of conditions and the following disclaimer.
+
+      - Redistributions in binary form must reproduce the above copyright
+        notice, this list of conditions and the following disclaimer in the
+        documentation and/or other materials provided with the distribution.
+
+      - Neither the name of Oracle nor the names of its
+        contributors may be used to endorse or promote products derived
+        from this software without specific prior written permission.
+
+    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+    IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+    THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+    PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+    CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+    EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+    PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+    PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+    LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+    NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+    SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+-->
 
 <!--
     Document   : alltags-frame.html.xsl
diff --git a/jsf-ri/conf/share/tlddoc-resources/function.html.xsl b/jsf-ri/conf/share/tlddoc-resources/function.html.xsl
index 7a2ebe2..74a2415 100644
--- a/jsf-ri/conf/share/tlddoc-resources/function.html.xsl
+++ b/jsf-ri/conf/share/tlddoc-resources/function.html.xsl
@@ -1,35 +1,36 @@
 <?xml version="1.0" encoding="UTF-8" ?>
-
 <!--
-  - <license>
-  - Copyright (c) 2003-2004, Sun Microsystems, Inc.
-  - All rights reserved.
-  - 
-  - Redistribution and use in source and binary forms, with or without 
-  - modification, are permitted provided that the following conditions are met:
-  - 
-  -     * Redistributions of source code must retain the above copyright 
-  -       notice, this list of conditions and the following disclaimer.
-  -     * Redistributions in binary form must reproduce the above copyright 
-  -       notice, this list of conditions and the following disclaimer in the
-  -       documentation and/or other materials provided with the distribution.
-  -     * Neither the name of Sun Microsystems, Inc. nor the names of its 
-  -       contributors may be used to endorse or promote products derived from
-  -       this software without specific prior written permission.
-  - 
-  - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
-  - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
-  - TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A 
-  - PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
-  - CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-  - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 
-  - ROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-  - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-  - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-  - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-  - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-  - </license>
-  -->
+
+    Copyright (c) 2003-2004,-2010 Oracle and/or its affiliates. All rights reserved.
+
+    Redistribution and use in source and binary forms, with or without
+    modification, are permitted provided that the following conditions
+    are met:
+
+      - Redistributions of source code must retain the above copyright
+        notice, this list of conditions and the following disclaimer.
+
+      - Redistributions in binary form must reproduce the above copyright
+        notice, this list of conditions and the following disclaimer in the
+        documentation and/or other materials provided with the distribution.
+
+      - Neither the name of Oracle nor the names of its
+        contributors may be used to endorse or promote products derived
+        from this software without specific prior written permission.
+
+    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+    IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+    THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+    PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+    CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+    EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+    PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+    PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+    LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+    NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+    SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+-->
 
 <!--
     Document   : function.html.xsl
@@ -261,12 +262,6 @@
             <small><i>
             Output Generated by 
             <a href="http://taglibrarydoc.dev.java.net/" target="_blank">Tag Library Documentation Generator</a>.
-            Java, JSP, and JavaServer Pages are trademarks or 
-            registered trademarks of Sun Microsystems, Inc. in the US and other
-            countries.  Copyright 2002-4 Sun Microsystems, Inc.
-            4150 Network Circle
-            Santa Clara, CA 95054, U.S.A.
-            All Rights Reserved. 
             </i></small>
           </body>
         </html>
diff --git a/jsf-ri/conf/share/tlddoc-resources/help-doc.html.xsl b/jsf-ri/conf/share/tlddoc-resources/help-doc.html.xsl
index d0f65a5..d30e494 100644
--- a/jsf-ri/conf/share/tlddoc-resources/help-doc.html.xsl
+++ b/jsf-ri/conf/share/tlddoc-resources/help-doc.html.xsl
@@ -1,35 +1,36 @@
 <?xml version="1.0" encoding="UTF-8" ?>
-
 <!--
-  - <license>
-  - Copyright (c) 2003-2004, Sun Microsystems, Inc.
-  - All rights reserved.
-  - 
-  - Redistribution and use in source and binary forms, with or without 
-  - modification, are permitted provided that the following conditions are met:
-  - 
-  -     * Redistributions of source code must retain the above copyright 
-  -       notice, this list of conditions and the following disclaimer.
-  -     * Redistributions in binary form must reproduce the above copyright 
-  -       notice, this list of conditions and the following disclaimer in the
-  -       documentation and/or other materials provided with the distribution.
-  -     * Neither the name of Sun Microsystems, Inc. nor the names of its 
-  -       contributors may be used to endorse or promote products derived from
-  -       this software without specific prior written permission.
-  - 
-  - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
-  - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
-  - TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A 
-  - PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
-  - CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-  - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 
-  - ROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-  - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-  - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-  - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-  - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-  - </license>
-  -->
+
+    Copyright (c) 2003-2004,-2010 Oracle and/or its affiliates. All rights reserved.
+
+    Redistribution and use in source and binary forms, with or without
+    modification, are permitted provided that the following conditions
+    are met:
+
+      - Redistributions of source code must retain the above copyright
+        notice, this list of conditions and the following disclaimer.
+
+      - Redistributions in binary form must reproduce the above copyright
+        notice, this list of conditions and the following disclaimer in the
+        documentation and/or other materials provided with the distribution.
+
+      - Neither the name of Oracle nor the names of its
+        contributors may be used to endorse or promote products derived
+        from this software without specific prior written permission.
+
+    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+    IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+    THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+    PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+    CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+    EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+    PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+    PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+    LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+    NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+    SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+-->
 
 <!--
     Document   : help-doc.html.xsl
@@ -222,12 +223,6 @@
           <small><i>
           Output Generated by 
           <a href="http://taglibrarydoc.dev.java.net/" target="_blank">Tag Library Documentation Generator</a>.
-          Java, JSP, and JavaServer Pages are trademarks or 
-          registered trademarks of Sun Microsystems, Inc. in the US and other
-          countries.  Copyright 2002-4 Sun Microsystems, Inc.
-          4150 Network Circle
-          Santa Clara, CA 95054, U.S.A.
-          All Rights Reserved. 
           </i></small>
         </BODY>
       </HTML>
diff --git a/jsf-ri/conf/share/tlddoc-resources/index.html.xsl b/jsf-ri/conf/share/tlddoc-resources/index.html.xsl
index 1e443a3..51852b4 100644
--- a/jsf-ri/conf/share/tlddoc-resources/index.html.xsl
+++ b/jsf-ri/conf/share/tlddoc-resources/index.html.xsl
@@ -1,35 +1,36 @@
 <?xml version="1.0" encoding="UTF-8" ?>
-
 <!--
-  - <license>
-  - Copyright (c) 2003-2004, Sun Microsystems, Inc.
-  - All rights reserved.
-  - 
-  - Redistribution and use in source and binary forms, with or without 
-  - modification, are permitted provided that the following conditions are met:
-  - 
-  -     * Redistributions of source code must retain the above copyright 
-  -       notice, this list of conditions and the following disclaimer.
-  -     * Redistributions in binary form must reproduce the above copyright 
-  -       notice, this list of conditions and the following disclaimer in the
-  -       documentation and/or other materials provided with the distribution.
-  -     * Neither the name of Sun Microsystems, Inc. nor the names of its 
-  -       contributors may be used to endorse or promote products derived from
-  -       this software without specific prior written permission.
-  - 
-  - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
-  - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
-  - TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A 
-  - PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
-  - CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-  - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 
-  - ROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-  - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-  - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-  - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-  - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-  - </license>
-  -->
+
+    Copyright (c) 2003-2004,-2010 Oracle and/or its affiliates. All rights reserved.
+
+    Redistribution and use in source and binary forms, with or without
+    modification, are permitted provided that the following conditions
+    are met:
+
+      - Redistributions of source code must retain the above copyright
+        notice, this list of conditions and the following disclaimer.
+
+      - Redistributions in binary form must reproduce the above copyright
+        notice, this list of conditions and the following disclaimer in the
+        documentation and/or other materials provided with the distribution.
+
+      - Neither the name of Oracle nor the names of its
+        contributors may be used to endorse or promote products derived
+        from this software without specific prior written permission.
+
+    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+    IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+    THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+    PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+    CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+    EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+    PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+    PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+    LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+    NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+    SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+-->
 
 <!--
     Document   : index.html.xsl
diff --git a/jsf-ri/conf/share/tlddoc-resources/overview-frame.html.xsl b/jsf-ri/conf/share/tlddoc-resources/overview-frame.html.xsl
index 1176df8..b562c95 100644
--- a/jsf-ri/conf/share/tlddoc-resources/overview-frame.html.xsl
+++ b/jsf-ri/conf/share/tlddoc-resources/overview-frame.html.xsl
@@ -1,35 +1,36 @@
 <?xml version="1.0" encoding="UTF-8" ?>
-
 <!--
-  - <license>
-  - Copyright (c) 2003-2004, Sun Microsystems, Inc.
-  - All rights reserved.
-  - 
-  - Redistribution and use in source and binary forms, with or without 
-  - modification, are permitted provided that the following conditions are met:
-  - 
-  -     * Redistributions of source code must retain the above copyright 
-  -       notice, this list of conditions and the following disclaimer.
-  -     * Redistributions in binary form must reproduce the above copyright 
-  -       notice, this list of conditions and the following disclaimer in the
-  -       documentation and/or other materials provided with the distribution.
-  -     * Neither the name of Sun Microsystems, Inc. nor the names of its 
-  -       contributors may be used to endorse or promote products derived from
-  -       this software without specific prior written permission.
-  - 
-  - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
-  - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
-  - TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A 
-  - PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
-  - CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-  - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 
-  - ROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-  - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-  - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-  - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-  - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-  - </license>
-  -->
+
+    Copyright (c) 2003-2004,-2010 Oracle and/or its affiliates. All rights reserved.
+
+    Redistribution and use in source and binary forms, with or without
+    modification, are permitted provided that the following conditions
+    are met:
+
+      - Redistributions of source code must retain the above copyright
+        notice, this list of conditions and the following disclaimer.
+
+      - Redistributions in binary form must reproduce the above copyright
+        notice, this list of conditions and the following disclaimer in the
+        documentation and/or other materials provided with the distribution.
+
+      - Neither the name of Oracle nor the names of its
+        contributors may be used to endorse or promote products derived
+        from this software without specific prior written permission.
+
+    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+    IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+    THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+    PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+    CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+    EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+    PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+    PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+    LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+    NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+    SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+-->
 
 <!--
     Document   : overview-frame.html.xsl
diff --git a/jsf-ri/conf/share/tlddoc-resources/overview-summary.html.xsl b/jsf-ri/conf/share/tlddoc-resources/overview-summary.html.xsl
index 9a747d8..81e29e9 100644
--- a/jsf-ri/conf/share/tlddoc-resources/overview-summary.html.xsl
+++ b/jsf-ri/conf/share/tlddoc-resources/overview-summary.html.xsl
@@ -1,35 +1,36 @@
 <?xml version="1.0" encoding="UTF-8" ?>
-
 <!--
-  - <license>
-  - Copyright (c) 2003-2004, Sun Microsystems, Inc.
-  - All rights reserved.
-  - 
-  - Redistribution and use in source and binary forms, with or without 
-  - modification, are permitted provided that the following conditions are met:
-  - 
-  -     * Redistributions of source code must retain the above copyright 
-  -       notice, this list of conditions and the following disclaimer.
-  -     * Redistributions in binary form must reproduce the above copyright 
-  -       notice, this list of conditions and the following disclaimer in the
-  -       documentation and/or other materials provided with the distribution.
-  -     * Neither the name of Sun Microsystems, Inc. nor the names of its 
-  -       contributors may be used to endorse or promote products derived from
-  -       this software without specific prior written permission.
-  - 
-  - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
-  - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
-  - TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A 
-  - PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
-  - CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-  - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 
-  - ROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-  - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-  - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-  - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-  - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-  - </license>
-  -->
+
+    Copyright (c) 2003-2004,-2010 Oracle and/or its affiliates. All rights reserved.
+
+    Redistribution and use in source and binary forms, with or without
+    modification, are permitted provided that the following conditions
+    are met:
+
+      - Redistributions of source code must retain the above copyright
+        notice, this list of conditions and the following disclaimer.
+
+      - Redistributions in binary form must reproduce the above copyright
+        notice, this list of conditions and the following disclaimer in the
+        documentation and/or other materials provided with the distribution.
+
+      - Neither the name of Oracle nor the names of its
+        contributors may be used to endorse or promote products derived
+        from this software without specific prior written permission.
+
+    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+    IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+    THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+    PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+    CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+    EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+    PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+    PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+    LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+    NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+    SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+-->
 
 <!--
     Document   : overview-summary.html.xsl
@@ -162,12 +163,6 @@
           <small><i>
           Output Generated by 
           <a href="http://taglibrarydoc.dev.java.net/" target="_blank">Tag Library Documentation Generator</a>.
-          Java, JSP, and JavaServer Pages are trademarks or 
-          registered trademarks of Sun Microsystems, Inc. in the US and other
-          countries.  Copyright 2002-4 Sun Microsystems, Inc.
-          4150 Network Circle
-          Santa Clara, CA 95054, U.S.A.
-          All Rights Reserved. 
           </i></small>
         </body>
       </html>
diff --git a/jsf-ri/conf/share/tlddoc-resources/stylesheet.css b/jsf-ri/conf/share/tlddoc-resources/stylesheet.css
index 4ea15f4..9390870 100644
--- a/jsf-ri/conf/share/tlddoc-resources/stylesheet.css
+++ b/jsf-ri/conf/share/tlddoc-resources/stylesheet.css
@@ -1,40 +1,42 @@
-/* Javadoc style sheet */
-
 /*
- * <license>
- * Copyright (c) 2003-2004, Sun Microsystems, Inc.
- * All rights reserved.
- * 
- * Redistribution and use in source and binary forms, with or without 
- * modification, are permitted provided that the following conditions are met:
- * 
- *     * Redistributions of source code must retain the above copyright 
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above copyright 
- *       notice, this list of conditions and the following disclaimer in the
- *       documentation and/or other materials provided with the distribution.
- *     * Neither the name of Sun Microsystems, Inc. nor the names of its 
- *       contributors may be used to endorse or promote products derived from
- *       this software without specific prior written permission.
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A 
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ * Copyright (c) 2003-2004,-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ *   - Redistributions of source code must retain the above copyright
+ *     notice, this list of conditions and the following disclaimer.
+ *
+ *   - Redistributions in binary form must reproduce the above copyright
+ *     notice, this list of conditions and the following disclaimer in the
+ *     documentation and/or other materials provided with the distribution.
+ *
+ *   - Neither the name of Oracle nor the names of its
+ *     contributors may be used to endorse or promote products derived
+ *     from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 
- * ROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- * </license>
  */
 
 /* Define colors, fonts and other style attributes here to override the defaults */
 
 /* Page background color */
-body { background-color: #FFFFFF }
+body { 
+  background-color: #FFFFFF;
+  background-image: url(expert-draft-bg.png);
+}
+
 
 /* Table colors */
 .TableHeadingColor     { background: #CCCCFF } /* Dark mauve */
@@ -66,18 +68,18 @@ body { background-color: #FFFFFF }
 .html4strict .imp {font-weight: bold; color: red;}
 .html4strict li {background: #ffffff;}
 .html4strict li.li2 {background: #f8f8f8;}
-.html4strict .kw1 {color: #b1b100;}
+.html4strict .kw1 {color: #000000;}
 .html4strict .kw2 {color: #000000;}
 .html4strict .kw3 {color: #000066;}
-.html4strict .coMULTI {color: #008800;}
-.html4strict .es0 {color: #000099;}
-.html4strict .br0 {color: #66cc66;}
-.html4strict .st0 {color: #008888;}
-.html4strict .nu0 {color: #cc66cc;}
-.html4strict .sc0 {color: #00bbbb;}
-.html4strict .sc1 {color: #bb44bb;}
-.html4strict .sc2 {color: #009900;}
-.html4strict .sc3 {color: #FF0000;}
+.html4strict .coMULTI {color: #000000;}
+.html4strict .es0 {color: #000000;}
+.html4strict .br0 {color: #000000;}
+.html4strict .st0 {color: #000000;}
+.html4strict .nu0 {color: #000000;}
+.html4strict .sc0 {color: #000000;}
+.html4strict .sc1 {color: #000000;}
+.html4strict .sc2 {color: #000000;}
+.html4strict .sc3 {color: #000000;}
 
 /*
 The cleverer parts of this stylesheet came from
@@ -436,9 +438,57 @@ table.diff tr.hideold
                  padding-left:0.2em; border-left:solid;
                  border-left-width:thin; border-right:none;
                  border-top:none; border-bottom:none; border-color:red }
+*/
+
+/*
+ *
+ * Ensure the lefthand nav pane links have the right attribution
+ *
+ */
 
+/*
+
+a[href^="composite/tld-frame"], a[href^="f/tld-frame"], a[href^="h/tld-frame"], a[href^="c/tld-frame"], a[href^="ui/tld-frame"], a[href^="actionSource"], a[href^="editableValueHolder"], a[href^="attribute"], a[href^="facet"], a[href^="interface"], a[href^="valueHolder"], a[href^="ajax"], a[href^="event"], a[href^="metadata"], a[href^="param"], a[href^="selectItems"], a[href^="view"], a[href^="viewParam"], a[href^="commandButton"], a[href^="commandLink"], a[href^="dataTable"], a[href^="bu [...]
+                 background: url(changed_modified_2_1.png); 
+                 padding-left:0.2em; border-left:solid;
+                 border-left-width:thin; border-right:none;
+                 border-top:none; border-bottom:none; border-color:orange }
+
+a[href^="head"], a[href^="title"], a[href^="clientBehavior"] { cursor: url(changed_added_2_1_cursor.cur), pointer;
+                 background: url(changed_added_2_1.png); 
+                 padding-left:0.2em; border-left:solid;
+                 border-left-width:thin; border-right:none;
+                 border-top:none; border-bottom:none; border-color:green }
+
+a[href^="subview"], a[href^="verbatim"] { cursor: url(changed_deleted_2_1_cursor.cur), pointer;
+                 background: url(changed_deleted_2_1.png); 
+                 padding-left:0.2em; border-left:solid;
+                 border-left-width:thin; border-right:none;
+                 border-top:none; border-bottom:none; border-color:red }
+a[href^="c/"] { cursor: url(changed_modified_2_0_rev_a_cursor.cur), pointer;
+                 background: url(changed_modified_2_0_rev_a.png); 
+                 padding-left:0.2em; border-left:solid;
+                 border-left-width:thin; border-right:none;
+                 border-top:none; border-bottom:none; border-color:orange }
+
+a[href^="f/"] { cursor: url(changed_modified_2_0_rev_a_cursor.cur), pointer;
+                 background: url(changed_modified_2_0_rev_a.png); 
+                 padding-left:0.2em; border-left:solid;
+                 border-left-width:thin; border-right:none;
+                 border-top:none; border-bottom:none; border-color:orange }
+
+a[href^="h/"] { cursor: url(changed_modified_2_0_rev_a_cursor.cur), pointer;
+                 background: url(changed_modified_2_0_rev_a.png); 
+                 padding-left:0.2em; border-left:solid;
+                 border-left-width:thin; border-right:none;
+                 border-top:none; border-bottom:none; border-color:orange }
+
+a[href^="ui/"] { cursor: url(changed_modified_2_0_rev_a_cursor.cur), pointer;
+                 background: url(changed_modified_2_0_rev_a.png); 
+                 padding-left:0.2em; border-left:solid;
+                 border-left-width:thin; border-right:none;
+                 border-top:none; border-bottom:none; border-color:orange }
 
-*/
    .changed_added_2_0_rev_a { cursor: url(changed_added_2_0_rev_a_cursor.cur), pointer;
                  background: url(changed_added_2_0_rev_a.png); 
                  padding-left:0.2em; border-left:solid;
@@ -457,5 +507,81 @@ table.diff tr.hideold
                  border-left-width:thin; border-right:none;
                  border-top:none; border-bottom:none; border-color:red }
 
+   .changed_added_2_1 { cursor: url(changed_added_2_1_cursor.cur), pointer;
+                 background: url(changed_added_2_1.png); 
+                 padding-left:0.2em; border-left:solid;
+                 border-left-width:thin; border-right:none;
+                 border-top:none; border-bottom:none; border-color:green }
+
+   .changed_modified_2_1 { cursor: url(changed_modified_2_1_cursor.cur), pointer;
+                 background: url(changed_modified_2_1.png); 
+                 padding-left:0.2em; border-left:solid;
+                 border-left-width:thin; border-right:none;
+                 border-top:none; border-bottom:none; border-color:orange }
+
+   .changed_deleted_2_1 { cursor: url(changed_deleted_2_1_cursor.cur), pointer;
+                 background: url(changed_deleted_2_1.png); 
+                 padding-left:0.2em; border-left:solid;
+                 border-left-width:thin; border-right:none;
+                 border-top:none; border-bottom:none; border-color:red }
+*/
+
+
 .javadocSection { font-size: large; }
 
+/*
+
+   .changed_added_2_2 { cursor: url(changed_added_2_2_cursor.cur), auto;
+                 background: url(changed_added_2_2.png); 
+                 padding-left:0.2em; border-left:solid;
+                 border-left-width:thin; border-right:none;
+                 border-top:none; border-bottom:none; border-color:green }
+
+   .changed_modified_2_2 { cursor: url(changed_modified_2_2_cursor.cur), auto;
+                 background: url(changed_modified_2_2.png); 
+                 padding-left:0.2em; border-left:solid;
+                 border-left-width:thin; border-right:none;
+                 border-top:none; border-bottom:none; border-color:orange }
+
+   .changed_deleted_2_2 { cursor: url(changed_deleted_2_2_cursor.cur), auto;
+                 background: url(changed_deleted_2_2.png); 
+                 padding-left:0.2em; border-left:solid;
+                 border-left-width:thin; border-right:none;
+                 border-top:none; border-bottom:none; border-color:red;
+                 text-decoration: line-through; }
+*/
+
+   .changed_added_2_3 { cursor: url(changed_added_2_3_cursor.cur), auto;
+                 background: url(changed_added_2_3.png); 
+                 padding-left:0.2em; border-left:solid;
+                 border-left-width:thin; border-right:none;
+                 border-top:none; border-bottom:none; border-color:green }
+
+   .changed_modified_2_3 { cursor: url(changed_modified_2_3_cursor.cur), auto;
+                 background: url(changed_modified_2_3.png); 
+                 padding-left:0.2em; border-left:solid;
+                 border-left-width:thin; border-right:none;
+                 border-top:none; border-bottom:none; border-color:orange }
+
+   .changed_deleted_2_3 { cursor: url(changed_deleted_2_3_cursor.cur), auto;
+                 background: url(changed_deleted_2_3.png); 
+                 padding-left:0.2em; border-left:solid;
+                 border-left-width:thin; border-right:none;
+                 border-top:none; border-bottom:none; border-color:red;
+                 text-decoration: line-through; }
+
+/*
+
+a[href^="h/body.html"], a[href^="composite/insertChildren.html"], a[href^="composite/insertFacet.html"], a[href^="selectItems.html"], a[href^="f/selectItems.html"],a[href^="viewParam.html"], a[href^="f/viewParam.html"], a[href^="f/tld-frame"], a[href^="h/tld-frame"], a[href^="ui/tld-frame"], a[href^="f/tld-frame"], a[href^="ui/component.html"], a[href^="component.html"], a[href^="ui/fragment.html"], a[href^="fragment.html"], a[href^="ui/composition.html"], a[href^="composition.html"], a[ [...]
+                 background: url(changed_modified_2_2.png); 
+                 padding-left:0.2em; border-left:solid;
+                 border-left-width:thin; border-right:none;
+                 border-top:none; border-bottom:none; border-color:orange }
+
+a[href^="jsf/tld-frame"], a[href^="p/tld-frame"], a[href^="f/attributes.html"], a[href^="element.html"], a[href^="jsf/element.html"], a[href^="passThroughAttribute.html"], a[href^="f/passThroughAttribute.html"], a[href^="passThroughAttributes.html"], a[href^="f/passThroughAttribute.html"], a[href^="f/passThroughAttributes.html"], a[href^="finalizer.html"], a[href^="j/finalizer.html"], a[href^="initializer.html"], a[href^="j/initializer.html"], a[href^="vdl-document.html"], a[href^="j/vdl [...]
+                 background: url(changed_added_2_2.png); 
+                 padding-left:0.2em; border-left:solid;
+                 border-left-width:thin; border-right:none;
+                 border-top:none; border-bottom:none; border-color:green }
+
+*/
diff --git a/jsf-ri/conf/share/tlddoc-resources/tag.html.xsl b/jsf-ri/conf/share/tlddoc-resources/tag.html.xsl
index 8eee70b..8e875bd 100644
--- a/jsf-ri/conf/share/tlddoc-resources/tag.html.xsl
+++ b/jsf-ri/conf/share/tlddoc-resources/tag.html.xsl
@@ -1,35 +1,36 @@
 <?xml version="1.0" encoding="UTF-8" ?>
-
 <!--
-  - <license>
-  - Copyright (c) 2003-2004, Sun Microsystems, Inc.
-  - All rights reserved.
-  - 
-  - Redistribution and use in source and binary forms, with or without 
-  - modification, are permitted provided that the following conditions are met:
-  - 
-  -     * Redistributions of source code must retain the above copyright 
-  -       notice, this list of conditions and the following disclaimer.
-  -     * Redistributions in binary form must reproduce the above copyright 
-  -       notice, this list of conditions and the following disclaimer in the
-  -       documentation and/or other materials provided with the distribution.
-  -     * Neither the name of Sun Microsystems, Inc. nor the names of its 
-  -       contributors may be used to endorse or promote products derived from
-  -       this software without specific prior written permission.
-  - 
-  - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
-  - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
-  - TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A 
-  - PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
-  - CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-  - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 
-  - ROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-  - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-  - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-  - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-  - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-  - </license>
-  -->
+
+    Copyright (c) 2003-2004,-2010 Oracle and/or its affiliates. All rights reserved.
+
+    Redistribution and use in source and binary forms, with or without
+    modification, are permitted provided that the following conditions
+    are met:
+
+      - Redistributions of source code must retain the above copyright
+        notice, this list of conditions and the following disclaimer.
+
+      - Redistributions in binary form must reproduce the above copyright
+        notice, this list of conditions and the following disclaimer in the
+        documentation and/or other materials provided with the distribution.
+
+      - Neither the name of Oracle nor the names of its
+        contributors may be used to endorse or promote products derived
+        from this software without specific prior written permission.
+
+    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+    IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+    THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+    PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+    CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+    EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+    PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+    PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+    LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+    NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+    SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+-->
 
 <!--
     Document   : tag.html.xsl
@@ -325,12 +326,6 @@
             <small><i>
             Output Generated by 
             <a href="http://taglibrarydoc.dev.java.net/" target="_blank">Tag Library Documentation Generator</a>.
-            Java, JSP, and JavaServer Pages are trademarks or 
-            registered trademarks of Sun Microsystems, Inc. in the US and other
-            countries.  Copyright 2002-4 Sun Microsystems, Inc.
-            4150 Network Circle
-            Santa Clara, CA 95054, U.S.A.
-            All Rights Reserved. 
             </i></small>
           </body>
         </html>
diff --git a/jsf-ri/conf/share/tlddoc-resources/tld-frame.html.xsl b/jsf-ri/conf/share/tlddoc-resources/tld-frame.html.xsl
index 5b97f85..94a5bb8 100644
--- a/jsf-ri/conf/share/tlddoc-resources/tld-frame.html.xsl
+++ b/jsf-ri/conf/share/tlddoc-resources/tld-frame.html.xsl
@@ -1,35 +1,36 @@
 <?xml version="1.0" encoding="UTF-8" ?>
-
 <!--
-  - <license>
-  - Copyright (c) 2003-2004, Sun Microsystems, Inc.
-  - All rights reserved.
-  - 
-  - Redistribution and use in source and binary forms, with or without 
-  - modification, are permitted provided that the following conditions are met:
-  - 
-  -     * Redistributions of source code must retain the above copyright 
-  -       notice, this list of conditions and the following disclaimer.
-  -     * Redistributions in binary form must reproduce the above copyright 
-  -       notice, this list of conditions and the following disclaimer in the
-  -       documentation and/or other materials provided with the distribution.
-  -     * Neither the name of Sun Microsystems, Inc. nor the names of its 
-  -       contributors may be used to endorse or promote products derived from
-  -       this software without specific prior written permission.
-  - 
-  - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
-  - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
-  - TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A 
-  - PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
-  - CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-  - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 
-  - ROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-  - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-  - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-  - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-  - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-  - </license>
-  -->
+
+    Copyright (c) 2003-2004,-2010 Oracle and/or its affiliates. All rights reserved.
+
+    Redistribution and use in source and binary forms, with or without
+    modification, are permitted provided that the following conditions
+    are met:
+
+      - Redistributions of source code must retain the above copyright
+        notice, this list of conditions and the following disclaimer.
+
+      - Redistributions in binary form must reproduce the above copyright
+        notice, this list of conditions and the following disclaimer in the
+        documentation and/or other materials provided with the distribution.
+
+      - Neither the name of Oracle nor the names of its
+        contributors may be used to endorse or promote products derived
+        from this software without specific prior written permission.
+
+    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+    IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+    THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+    PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+    CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+    EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+    PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+    PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+    LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+    NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+    SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+-->
 
 <!--
     Document   : tld-frame.html.xsl
diff --git a/jsf-ri/conf/share/tlddoc-resources/tld-summary.html.xsl b/jsf-ri/conf/share/tlddoc-resources/tld-summary.html.xsl
index 24ecefd..b4ec6a7 100644
--- a/jsf-ri/conf/share/tlddoc-resources/tld-summary.html.xsl
+++ b/jsf-ri/conf/share/tlddoc-resources/tld-summary.html.xsl
@@ -1,35 +1,36 @@
 <?xml version="1.0" encoding="UTF-8" ?>
-
 <!--
-  - <license>
-  - Copyright (c) 2003-2004, Sun Microsystems, Inc.
-  - All rights reserved.
-  - 
-  - Redistribution and use in source and binary forms, with or without 
-  - modification, are permitted provided that the following conditions are met:
-  - 
-  -     * Redistributions of source code must retain the above copyright 
-  -       notice, this list of conditions and the following disclaimer.
-  -     * Redistributions in binary form must reproduce the above copyright 
-  -       notice, this list of conditions and the following disclaimer in the
-  -       documentation and/or other materials provided with the distribution.
-  -     * Neither the name of Sun Microsystems, Inc. nor the names of its 
-  -       contributors may be used to endorse or promote products derived from
-  -       this software without specific prior written permission.
-  - 
-  - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
-  - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
-  - TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A 
-  - PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
-  - CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-  - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 
-  - ROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-  - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-  - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-  - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-  - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-  - </license>
-  -->
+
+    Copyright (c) 2003-2004,-2010 Oracle and/or its affiliates. All rights reserved.
+
+    Redistribution and use in source and binary forms, with or without
+    modification, are permitted provided that the following conditions
+    are met:
+
+      - Redistributions of source code must retain the above copyright
+        notice, this list of conditions and the following disclaimer.
+
+      - Redistributions in binary form must reproduce the above copyright
+        notice, this list of conditions and the following disclaimer in the
+        documentation and/or other materials provided with the distribution.
+
+      - Neither the name of Oracle nor the names of its
+        contributors may be used to endorse or promote products derived
+        from this software without specific prior written permission.
+
+    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+    IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+    THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+    PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+    CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+    EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+    PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+    PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+    LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+    NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+    SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+-->
 
 <!--
     Document   : tld-summary.html.xsl
@@ -324,12 +325,6 @@
             <!-- =========== END OF NAVBAR =========== -->
             <hr/>
             <small><i>
-            Java, JSP, and JavaServer Pages are trademarks or registered 
-            trademarks of Sun Microsystems, Inc. in the US and other countries.
-            Copyright 2002-3 Sun Microsystems, Inc.
-            4150 Network Circle
-            Santa Clara, CA 95054, U.S.A.
-            All Rights Reserved. 
             </i></small>
           </body>
         </html>
diff --git a/jsf-ri/conf/share/tlddoc-resources/tld1_1-tld1_2.xsl b/jsf-ri/conf/share/tlddoc-resources/tld1_1-tld1_2.xsl
index f6db8cb..aad8d1f 100644
--- a/jsf-ri/conf/share/tlddoc-resources/tld1_1-tld1_2.xsl
+++ b/jsf-ri/conf/share/tlddoc-resources/tld1_1-tld1_2.xsl
@@ -1,35 +1,36 @@
 <?xml version="1.0" encoding="UTF-8" ?>
-
 <!--
-  - <license>
-  - Copyright (c) 2003-2004, Sun Microsystems, Inc.
-  - All rights reserved.
-  - 
-  - Redistribution and use in source and binary forms, with or without 
-  - modification, are permitted provided that the following conditions are met:
-  - 
-  -     * Redistributions of source code must retain the above copyright 
-  -       notice, this list of conditions and the following disclaimer.
-  -     * Redistributions in binary form must reproduce the above copyright 
-  -       notice, this list of conditions and the following disclaimer in the
-  -       documentation and/or other materials provided with the distribution.
-  -     * Neither the name of Sun Microsystems, Inc. nor the names of its 
-  -       contributors may be used to endorse or promote products derived from
-  -       this software without specific prior written permission.
-  - 
-  - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
-  - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
-  - TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A 
-  - PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
-  - CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-  - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 
-  - ROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-  - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-  - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-  - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-  - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-  - </license>
-  -->
+
+    Copyright (c) 2003-2004,-2010 Oracle and/or its affiliates. All rights reserved.
+
+    Redistribution and use in source and binary forms, with or without
+    modification, are permitted provided that the following conditions
+    are met:
+
+      - Redistributions of source code must retain the above copyright
+        notice, this list of conditions and the following disclaimer.
+
+      - Redistributions in binary form must reproduce the above copyright
+        notice, this list of conditions and the following disclaimer in the
+        documentation and/or other materials provided with the distribution.
+
+      - Neither the name of Oracle nor the names of its
+        contributors may be used to endorse or promote products derived
+        from this software without specific prior written permission.
+
+    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+    IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+    THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+    PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+    CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+    EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+    PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+    PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+    LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+    NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+    SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+-->
 
 <!--
 
diff --git a/jsf-ri/conf/share/tlddoc-resources/tld1_2-tld2_0.xsl b/jsf-ri/conf/share/tlddoc-resources/tld1_2-tld2_0.xsl
index e55aa40..fcbfe13 100644
--- a/jsf-ri/conf/share/tlddoc-resources/tld1_2-tld2_0.xsl
+++ b/jsf-ri/conf/share/tlddoc-resources/tld1_2-tld2_0.xsl
@@ -1,35 +1,36 @@
 <?xml version="1.0" encoding="UTF-8" ?>
-
 <!--
-  - <license>
-  - Copyright (c) 2003-2004, Sun Microsystems, Inc.
-  - All rights reserved.
-  - 
-  - Redistribution and use in source and binary forms, with or without 
-  - modification, are permitted provided that the following conditions are met:
-  - 
-  -     * Redistributions of source code must retain the above copyright 
-  -       notice, this list of conditions and the following disclaimer.
-  -     * Redistributions in binary form must reproduce the above copyright 
-  -       notice, this list of conditions and the following disclaimer in the
-  -       documentation and/or other materials provided with the distribution.
-  -     * Neither the name of Sun Microsystems, Inc. nor the names of its 
-  -       contributors may be used to endorse or promote products derived from
-  -       this software without specific prior written permission.
-  - 
-  - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
-  - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
-  - TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A 
-  - PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
-  - CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-  - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 
-  - ROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-  - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-  - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-  - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-  - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-  - </license>
-  -->
+
+    Copyright (c) 2003-2004,-2010 Oracle and/or its affiliates. All rights reserved.
+
+    Redistribution and use in source and binary forms, with or without
+    modification, are permitted provided that the following conditions
+    are met:
+
+      - Redistributions of source code must retain the above copyright
+        notice, this list of conditions and the following disclaimer.
+
+      - Redistributions in binary form must reproduce the above copyright
+        notice, this list of conditions and the following disclaimer in the
+        documentation and/or other materials provided with the distribution.
+
+      - Neither the name of Oracle nor the names of its
+        contributors may be used to endorse or promote products derived
+        from this software without specific prior written permission.
+
+    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+    IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+    THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+    PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+    CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+    EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+    PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+    PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+    LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+    NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+    SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+-->
 
 <!--
 
diff --git a/jsf-ri/conf/share/tlddoc-resources/tld2_0-tld2_1.xsl b/jsf-ri/conf/share/tlddoc-resources/tld2_0-tld2_1.xsl
index 7ee5f2f..d0ba1b5 100644
--- a/jsf-ri/conf/share/tlddoc-resources/tld2_0-tld2_1.xsl
+++ b/jsf-ri/conf/share/tlddoc-resources/tld2_0-tld2_1.xsl
@@ -1,36 +1,36 @@
 <?xml version="1.0" encoding="UTF-8" ?>
+<!--
 
+    Copyright (c) 2003-2004,-2010 Oracle and/or its affiliates. All rights reserved.
 
-<!--
-  - <license>
-  - Copyright (c) 2003-2004, Sun Microsystems, Inc.
-  - All rights reserved.
-  - 
-  - Redistribution and use in source and binary forms, with or without 
-  - modification, are permitted provided that the following conditions are met:
-  - 
-  -     * Redistributions of source code must retain the above copyright 
-  -       notice, this list of conditions and the following disclaimer.
-  -     * Redistributions in binary form must reproduce the above copyright 
-  -       notice, this list of conditions and the following disclaimer in the
-  -       documentation and/or other materials provided with the distribution.
-  -     * Neither the name of Sun Microsystems, Inc. nor the names of its 
-  -       contributors may be used to endorse or promote products derived from
-  -       this software without specific prior written permission.
-  - 
-  - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
-  - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
-  - TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A 
-  - PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
-  - CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-  - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 
-  - ROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-  - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-  - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-  - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-  - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-  - </license>
-  -->
+    Redistribution and use in source and binary forms, with or without
+    modification, are permitted provided that the following conditions
+    are met:
+
+      - Redistributions of source code must retain the above copyright
+        notice, this list of conditions and the following disclaimer.
+
+      - Redistributions in binary form must reproduce the above copyright
+        notice, this list of conditions and the following disclaimer in the
+        documentation and/or other materials provided with the distribution.
+
+      - Neither the name of Oracle nor the names of its
+        contributors may be used to endorse or promote products derived
+        from this software without specific prior written permission.
+
+    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+    IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+    THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+    PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+    CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+    EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+    PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+    PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+    LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+    NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+    SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+-->
 
 <!--
 
diff --git a/jsf-ri/conf/share/tlddoc-resources/tld2_1-tld2_1.xsl b/jsf-ri/conf/share/tlddoc-resources/tld2_1-tld2_1.xsl
index b224c35..031ce95 100644
--- a/jsf-ri/conf/share/tlddoc-resources/tld2_1-tld2_1.xsl
+++ b/jsf-ri/conf/share/tlddoc-resources/tld2_1-tld2_1.xsl
@@ -1,36 +1,36 @@
 <?xml version="1.0" encoding="UTF-8" ?>
+<!--
 
+    Copyright (c) 2003-2004,-2010 Oracle and/or its affiliates. All rights reserved.
 
-<!--
-  - <license>
-  - Copyright (c) 2003-2004, Sun Microsystems, Inc.
-  - All rights reserved.
-  - 
-  - Redistribution and use in source and binary forms, with or without 
-  - modification, are permitted provided that the following conditions are met:
-  - 
-  -     * Redistributions of source code must retain the above copyright 
-  -       notice, this list of conditions and the following disclaimer.
-  -     * Redistributions in binary form must reproduce the above copyright 
-  -       notice, this list of conditions and the following disclaimer in the
-  -       documentation and/or other materials provided with the distribution.
-  -     * Neither the name of Sun Microsystems, Inc. nor the names of its 
-  -       contributors may be used to endorse or promote products derived from
-  -       this software without specific prior written permission.
-  - 
-  - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
-  - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
-  - TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A 
-  - PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
-  - CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-  - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 
-  - ROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-  - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-  - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-  - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-  - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-  - </license>
-  -->
+    Redistribution and use in source and binary forms, with or without
+    modification, are permitted provided that the following conditions
+    are met:
+
+      - Redistributions of source code must retain the above copyright
+        notice, this list of conditions and the following disclaimer.
+
+      - Redistributions in binary form must reproduce the above copyright
+        notice, this list of conditions and the following disclaimer in the
+        documentation and/or other materials provided with the distribution.
+
+      - Neither the name of Oracle nor the names of its
+        contributors may be used to endorse or promote products derived
+        from this software without specific prior written permission.
+
+    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+    IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+    THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+    PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+    CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+    EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+    PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+    PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+    LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+    NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+    SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+-->
 
 <!--
 
diff --git a/jsf-ri/conf/share/ui.taglib.xml b/jsf-ri/conf/share/ui.taglib.xml
index a9358d9..871c740 100644
--- a/jsf-ri/conf/share/ui.taglib.xml
+++ b/jsf-ri/conf/share/ui.taglib.xml
@@ -1,406 +1,410 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 2009 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2009-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
 
-<facelet-taglib xmlns="http://java.sun.com/xml/ns/javaee"
+<facelet-taglib xmlns="http://xmlns.jcp.org/xml/ns/javaee"
                 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-                xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facelettaglibrary_2_0.xsd"
-                version="2.0">
-    <description>
-
-        </pre>
+                xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-facelettaglibrary_2_2.xsd"
+                version="2.2">
+    <description><![CDATA[
 
-        <div class="changed_added_2_0">
+        <div class="changed_added_2_0">
 
-        <p>The tags in this library add templating&#8212;a powerful
+        <p>The tags in this library add templating&#8212;a powerful
         view composition technique&#8212;to JSF.
         Templating is so useful that there are entire frameworks, such as Tiles
         and SiteMesh, that are built
         around the concept of templating. So what is templating, how can you
         benefit from it, and how does
         this tag library implement it?
-        </p>
+        </p>
 
-        <p>If you've used JSP before, you've probably used <code>jsp:include</code>.
+        <p>If you've used JSP before, you've probably used <code>jsp:include</code>.
         The prototypical example for
-        <code>jsp:include</code> is a header on each page in a web
+        <code>jsp:include</code> is a header on each page in a web
         application. One JSP page, say header.jsp,
         encapsulates the header content, and the header is included by each
-        page. You <em>encapsulate and reuse
-        content</em>, so that changes to one file, header.jsp, affect the
+        page. You <em>encapsulate and reuse
+        content</em>, so that changes to one file, header.jsp, affect the
         header on every page.
-        </p>
+        </p>
 
-        <p>This tab library contains a tag&#8212<code>ui:include</code>&#8212
-        that's analagous to <code>jsp:include</code>,
+        <p>This tab library contains a tag&#8212<code>ui:include</code>&#8212
+        that's analagous to <code>jsp:include</code>,
         but encapsulating and reusing content is only half the templating story,
         because templating also lets you
-        <em>encapsulate and reuse <b>layout</b></em>.
-        You define a single <em>template</em> (meaning layout), and
+        <em>encapsulate and reuse <b>layout</b></em>.
+        You define a single <em>template</em> (meaning layout), and
         you reuse
-        that template with multiple <em>compositions</em>. So now
+        that template with multiple <em>compositions</em>. So now
         you can control the layout of many pages with a single
         template (layout). Let's take a look at an example.
-        </p>
+        </p>
 
-        <h3>A Templating Example</h3>
+        <h3>A Templating Example</h3>
 
-        <p>
+        <p>
         First, we define a template:
-        </p>
-        <div class="syntax"><div class="html4strict"
-        style="font-family: monospace;"><ol><li class="li1"><div
-        class="de1"><span class="sc0">&lt;!DOCTYPE html PUBLIC
-        &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot;</div></li>
-
-        <li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp;
-        &nbsp; &nbsp; &nbsp; &nbsp; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&gt;</span></div></li>
-        <li class="li1"><div class="de1">&nbsp;</div></li>
-        <li class="li2"><div class="de2"><span class="sc3"><span
-        class="re1">&lt;html</span> <span class="re0">xmlns</span>=<span
-        class="st0">&quot;http://www.w3.org/1999/xhtml&quot;</span></div></li>
-        <li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp;
-        &nbsp; &nbsp; &nbsp; xmlns:<span class="re0">ui</span>=<span
-        class="st0">&quot;http://java.sun.com/jsf/facelets&quot;</span></div></li>
-
-        <li class="li1"><div class="de1">&nbsp; &nbsp; <span
-        class="sc3"><span class="re1">&lt;head<span class="re2">&gt;</span></span></span></div></li>
-        <li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp;
-        <span class="sc3"><span class="re1">&lt;link</span>
-        <span class="re0">href</span>=<span class="st0">&quot;styles.css&quot;</span>
-        <span class="re0">rel</span>=<span class="st0">&quot;stylesheet&quot;</span>
-        <span class="re0">type</span>=<span class="st0">&quot;text/css&quot;</span><span
-        class="re2">/&gt;</span></span></div></li>
-
-        <li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp;
-        <span class="sc3"><span class="re1">&lt;title<span
-        class="re2">&gt;</span></span></span><span
-        class="sc3"><span class="re1">&lt;ui</span>:insert
-        <span class="re0">name</span>=<span class="st0">&quot;title&quot;</span><span
-        class="re2">&gt;</span></span>Default Title<span
-        class="sc3"><span class="re1">&lt;/ui</span>:insert<span
-        class="re2">&gt;</span></span><span class="sc3"><span
-        class="re1">&lt;/title<span class="re2">&gt;</span></span></span></div></li>
-        <li class="li2"><div class="de2">&nbsp; &nbsp; <span
-        class="sc3"><span class="re1">&lt;/head<span class="re2">&gt;</span></span></span></div></li>
-
-        <li class="li1"><div class="de1">&nbsp;</div></li>
-        <li class="li2"><div class="de2">&nbsp; &nbsp; <span
-        class="sc3"><span class="re1">&lt;body<span class="re2">&gt;</span></span></span></div></li>
-        <li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp;
-        <span class="sc3"><span class="re1">&lt;ui</span>:debug<span
-        class="re2">/&gt;</span></span></div></li>
-        <li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp;
-        <span class="sc3"><span class="re1">&lt;div</span>
-        <span class="re0">class</span>=<span class="st0">&quot;heading&quot;</span><span
-        class="re2">&gt;</span></span></div></li>
-
-        <li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp;
-        &nbsp; <span class="sc3"><span class="re1">&lt;ui</span>:insert
-        <span class="re0">name</span>=<span class="st0">&quot;heading&quot;</span><span
-        class="re2">/&gt;</span></span></div></li>
-        <li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp;
-        <span class="sc3"><span class="re1">&lt;/div<span
-        class="re2">&gt;</span></span></span></div></li>
-        <li class="li1"><div class="de1">&nbsp;</div></li>
-
-        <li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp;
-        <span class="sc3"><span class="re1">&lt;div</span>
-        <span class="re0">class</span>=<span class="st0">&quot;content&quot;</span><span
-        class="re2">&gt;</span></span></div></li>
-        <li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp;
-        &nbsp; <span class="sc3"><span class="re1">&lt;ui</span>:insert
-        <span class="re0">name</span>=<span class="st0">&quot;content&quot;</span><span
-        class="re2">/&gt;</span></span></div></li>
-
-        <li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp;
-        <span class="sc3"><span class="re1">&lt;/div<span
-        class="re2">&gt;</span></span></span></div></li>
-        <li class="li1"><div class="de1">&nbsp; &nbsp; <span
-        class="sc3"><span class="re1">&lt;/body<span class="re2">&gt;</span></span></span></div></li>
-        <li class="li2"><div class="de2"><span class="sc3"><span
-        class="re1">&lt;/html<span class="re2">&gt;</span></span></span>
-        </div></li></ol></div></div>
-
-        <p>
+        </p>
+        <div class="syntax"><div class="html4strict"
+        style="font-family: monospace;"><ol><li class="li1"><div
+        class="de1"><span class="sc0">&lt;!DOCTYPE html PUBLIC
+        &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot;</div></li>
+
+        <li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp;
+        &nbsp; &nbsp; &nbsp; &nbsp; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&gt;</span></div></li>
+        <li class="li1"><div class="de1">&nbsp;</div></li>
+        <li class="li2"><div class="de2"><span class="sc3"><span
+        class="re1">&lt;html</span> <span class="re0">xmlns</span>=<span
+        class="st0">&quot;http://www.w3.org/1999/xhtml&quot;</span></div></li>
+        <li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp;
+        &nbsp; &nbsp; &nbsp; xmlns:<span class="re0">ui</span>=<span
+        class="st0">&quot;http://xmlns.jcp.org/jsf/facelets&quot;</span></div></li>
+
+        <li class="li1"><div class="de1">&nbsp; &nbsp; <span
+        class="sc3"><span class="re1">&lt;head<span class="re2">&gt;</span></span></span></div></li>
+        <li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp;
+        <span class="sc3"><span class="re1">&lt;link</span>
+        <span class="re0">href</span>=<span class="st0">&quot;styles.css&quot;</span>
+        <span class="re0">rel</span>=<span class="st0">&quot;stylesheet&quot;</span>
+        <span class="re0">type</span>=<span class="st0">&quot;text/css&quot;</span><span
+        class="re2">/&gt;</span></span></div></li>
+
+        <li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp;
+        <span class="sc3"><span class="re1">&lt;title<span
+        class="re2">&gt;</span></span></span><span
+        class="sc3"><span class="re1">&lt;ui</span>:insert
+        <span class="re0">name</span>=<span class="st0">&quot;title&quot;</span><span
+        class="re2">&gt;</span></span>Default Title<span
+        class="sc3"><span class="re1">&lt;/ui</span>:insert<span
+        class="re2">&gt;</span></span><span class="sc3"><span
+        class="re1">&lt;/title<span class="re2">&gt;</span></span></span></div></li>
+        <li class="li2"><div class="de2">&nbsp; &nbsp; <span
+        class="sc3"><span class="re1">&lt;/head<span class="re2">&gt;</span></span></span></div></li>
+
+        <li class="li1"><div class="de1">&nbsp;</div></li>
+        <li class="li2"><div class="de2">&nbsp; &nbsp; <span
+        class="sc3"><span class="re1">&lt;body<span class="re2">&gt;</span></span></span></div></li>
+        <li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp;
+        <span class="sc3"><span class="re1">&lt;ui</span>:debug<span
+        class="re2">/&gt;</span></span></div></li>
+        <li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp;
+        <span class="sc3"><span class="re1">&lt;div</span>
+        <span class="re0">class</span>=<span class="st0">&quot;heading&quot;</span><span
+        class="re2">&gt;</span></span></div></li>
+
+        <li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp;
+        &nbsp; <span class="sc3"><span class="re1">&lt;ui</span>:insert
+        <span class="re0">name</span>=<span class="st0">&quot;heading&quot;</span><span
+        class="re2">/&gt;</span></span></div></li>
+        <li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp;
+        <span class="sc3"><span class="re1">&lt;/div<span
+        class="re2">&gt;</span></span></span></div></li>
+        <li class="li1"><div class="de1">&nbsp;</div></li>
+
+        <li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp;
+        <span class="sc3"><span class="re1">&lt;div</span>
+        <span class="re0">class</span>=<span class="st0">&quot;content&quot;</span><span
+        class="re2">&gt;</span></span></div></li>
+        <li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp;
+        &nbsp; <span class="sc3"><span class="re1">&lt;ui</span>:insert
+        <span class="re0">name</span>=<span class="st0">&quot;content&quot;</span><span
+        class="re2">/&gt;</span></span></div></li>
+
+        <li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp;
+        <span class="sc3"><span class="re1">&lt;/div<span
+        class="re2">&gt;</span></span></span></div></li>
+        <li class="li1"><div class="de1">&nbsp; &nbsp; <span
+        class="sc3"><span class="re1">&lt;/body<span class="re2">&gt;</span></span></span></div></li>
+        <li class="li2"><div class="de2"><span class="sc3"><span
+        class="re1">&lt;/html<span class="re2">&gt;</span></span></span>
+        </div></li></ol></div></div>
+
+        <p>
         In the preceeding listing, we've defined a layout, also known as a
         template. That template uses the
-        <code>ui:insert</code> tag to insert pieces of a page &#8212namely,
+        <code>ui:insert</code> tag to insert pieces of a page &#8212namely,
         title, heading, and content&#8212
-        defined in a <em>composition</em>. Notice that on line 8, we
+        defined in a <em>composition</em>. Notice that on line 8, we
         define a default title, in case one isn't provided
-        by the composition. Also note that on line 12 we have the <code>ui:debug</code>
+        by the composition. Also note that on line 12 we have the <code>ui:debug</code>
         tag, which lets the user activate
         a popup window with debugging information by typing CTRL + Shift + d.
-        </p>
+        </p>
 
-        <p>
+        <p>
         The title, heading, and content pieces of the page referenced in the
         template are defined in a separate XHTML
         file in a composition, like this:
-        </p>
-
-        <div class="syntax"><div class="html4strict"
-        style="font-family: monospace;"><ol><li class="li1"><div
-        class="de1"><span class="sc0">&lt;!DOCTYPE html PUBLIC
-        &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot;</div></li>
-
-        <li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp;
-        &nbsp; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&gt;</span></div></li>
-        <li class="li1"><div class="de1">&nbsp;</div></li>
-        <li class="li2"><div class="de2"><span class="sc3"><span
-        class="re1">&lt;html</span> <span class="re0">xmlns</span>=<span
-        class="st0">&quot;http://www.w3.org/1999/xhtml&quot;</span></div></li>
-        <li class="li1"><div class="de1">&nbsp; &nbsp;xmlns:<span
-        class="re0">ui</span>=<span class="st0">&quot;http://java.sun.com/jsf/facelets&quot;</span><span
-        class="re2">&gt;</span></span></div></li>
-
-        <li class="li2"><div class="de2">&nbsp;</div></li>
-        <li class="li1"><div class="de1">&nbsp; <span
-        class="sc3"><span class="re1">&lt;body<span class="re2">&gt;</span></span></span></div></li>
-        <li class="li2"><div class="de2">&nbsp; &nbsp; <span
-        class="sc3"><span class="re1">&lt;ui</span>:composition
-        <span class="re0">template</span>=<span class="st0">&quot;/layout.xhtml&quot;</span><span
-        class="re2">&gt;</span></span></div></li>
-        <li class="li1"><div class="de1">&nbsp;</div></li>
-        <li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp;
-        <span class="sc3"><span class="re1">&lt;ui</span>:define
-        <span class="re0">name</span>=<span class="st0">&quot;title&quot;</span><span
-        class="re2">&gt;</span></span>A List of Contacts<span
-        class="sc3"><span class="re1">&lt;/ui</span>:define<span
-        class="re2">&gt;</span></span></div></li>
-
-        <li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp;
-        <span class="sc3"><span class="re1">&lt;ui</span>:define
-        <span class="re0">name</span>=<span class="st0">&quot;heading&quot;</span><span
-        class="re2">&gt;</span></span>Contacts<span
-        class="sc3"><span class="re1">&lt;/ui</span>:define<span
-        class="re2">&gt;</span></span></div></li>
-        <li class="li2"><div class="de2">&nbsp;</div></li>
-        <li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp;
-        <span class="sc3"><span class="re1">&lt;ui</span>:define
-        <span class="re0">name</span>=<span class="st0">&quot;content&quot;</span><span
-        class="re2">&gt;</span></span></div></li>
-
-        <li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp;
-        &nbsp; <span class="sc3"><span class="re1">&lt;ui</span>:include
-        <span class="re0">src</span>=<span class="st0">&quot;contactsTable.xhtml&quot;</span>
-        <span class="re2">/&gt;</span></span></div></li>
-        <li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp;
-        <span class="sc3"><span class="re1">&lt;/ui</span>:define<span
-        class="re2">&gt;</span></span></div></li>
-
-        <li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp;
-        &nbsp; &nbsp;</div></li>
-        <li class="li1"><div class="de1">&nbsp; &nbsp; <span
-        class="sc3"><span class="re1">&lt;/ui</span>:composition<span
-        class="re2">&gt;</span></span></div></li>
-        <li class="li2"><div class="de2">&nbsp; <span
-        class="sc3"><span class="re1">&lt;/body<span class="re2">&gt;</span></span></span></div></li>
-        <li class="li1"><div class="de1"><span class="sc3"><span
-        class="re1">&lt;/html<span class="re2">&gt;</span></span></span>
-        </div></li></ol></div></div>
-
-        <p>
+        </p>
+
+        <div class="syntax"><div class="html4strict"
+        style="font-family: monospace;"><ol><li class="li1"><div
+        class="de1"><span class="sc0">&lt;!DOCTYPE html PUBLIC
+        &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot;</div></li>
+
+        <li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp;
+        &nbsp; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&gt;</span></div></li>
+        <li class="li1"><div class="de1">&nbsp;</div></li>
+        <li class="li2"><div class="de2"><span class="sc3"><span
+        class="re1">&lt;html</span> <span class="re0">xmlns</span>=<span
+        class="st0">&quot;http://www.w3.org/1999/xhtml&quot;</span></div></li>
+        <li class="li1"><div class="de1">&nbsp; &nbsp;xmlns:<span
+        class="re0">ui</span>=<span class="st0">&quot;http://xmlns.jcp.org/jsf/facelets&quot;</span><span
+        class="re2">&gt;</span></span></div></li>
+
+        <li class="li2"><div class="de2">&nbsp;</div></li>
+        <li class="li1"><div class="de1">&nbsp; <span
+        class="sc3"><span class="re1">&lt;body<span class="re2">&gt;</span></span></span></div></li>
+        <li class="li2"><div class="de2">&nbsp; &nbsp; <span
+        class="sc3"><span class="re1">&lt;ui</span>:composition
+        <span class="re0">template</span>=<span class="st0">&quot;/layout.xhtml&quot;</span><span
+        class="re2">&gt;</span></span></div></li>
+        <li class="li1"><div class="de1">&nbsp;</div></li>
+        <li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp;
+        <span class="sc3"><span class="re1">&lt;ui</span>:define
+        <span class="re0">name</span>=<span class="st0">&quot;title&quot;</span><span
+        class="re2">&gt;</span></span>A List of Contacts<span
+        class="sc3"><span class="re1">&lt;/ui</span>:define<span
+        class="re2">&gt;</span></span></div></li>
+
+        <li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp;
+        <span class="sc3"><span class="re1">&lt;ui</span>:define
+        <span class="re0">name</span>=<span class="st0">&quot;heading&quot;</span><span
+        class="re2">&gt;</span></span>Contacts<span
+        class="sc3"><span class="re1">&lt;/ui</span>:define<span
+        class="re2">&gt;</span></span></div></li>
+        <li class="li2"><div class="de2">&nbsp;</div></li>
+        <li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp;
+        <span class="sc3"><span class="re1">&lt;ui</span>:define
+        <span class="re0">name</span>=<span class="st0">&quot;content&quot;</span><span
+        class="re2">&gt;</span></span></div></li>
+
+        <li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp;
+        &nbsp; <span class="sc3"><span class="re1">&lt;ui</span>:include
+        <span class="re0">src</span>=<span class="st0">&quot;contactsTable.xhtml&quot;</span>
+        <span class="re2">/&gt;</span></span></div></li>
+        <li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp;
+        <span class="sc3"><span class="re1">&lt;/ui</span>:define<span
+        class="re2">&gt;</span></span></div></li>
+
+        <li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp;
+        &nbsp; &nbsp;</div></li>
+        <li class="li1"><div class="de1">&nbsp; &nbsp; <span
+        class="sc3"><span class="re1">&lt;/ui</span>:composition<span
+        class="re2">&gt;</span></span></div></li>
+        <li class="li2"><div class="de2">&nbsp; <span
+        class="sc3"><span class="re1">&lt;/body<span class="re2">&gt;</span></span></span></div></li>
+        <li class="li1"><div class="de1"><span class="sc3"><span
+        class="re1">&lt;/html<span class="re2">&gt;</span></span></span>
+        </div></li></ol></div></div>
+
+        <p>
         At runtime, JSF synthesizes the two previous XHTML pages to create a
         single JSF view by inserting the
         pieces defined in the composition into the template (that template is
         layout.xhtml, which is the first
-        listing above). JSF also disregards everything outside of the <code>composition</code>
+        listing above). JSF also disregards everything outside of the <code>composition</code>
         tag so that we don't
-        wind up with two <code>body</code> elements in the view.
-        Also, note that we use the <code>ui:include</code>
+        wind up with two <code>body</code> elements in the view.
+        Also, note that we use the <code>ui:include</code>
         tag on line 14 to include content (which happens to be a table) from
         another XHTML page, so that we can reuse
         that table in other views.
-        </p>
+        </p>
 
-        <p>
+        <p>
         So why do we have two XHTML pages to define a single view? Why not
         simply take the pieces and manually insert
         them into the layout so that we have only a single XHTML page? The
         answer is simple: we have separated layout
-        from the content so that we can <em>reuse that layout</em>
+        from the content so that we can <em>reuse that layout</em>
         among multiple compositions. For example, now we can
         define another composition that uses the same layout:
-        </p>
-
-        <div class="syntax"><div class="html4strict"
-        style="font-family: monospace;"><ol><li class="li1"><div
-        class="de1"><span class="sc0">&lt;!DOCTYPE html PUBLIC
-        &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot;</div></li>
-
-        <li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp;
-        &nbsp; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&gt;</span></div></li>
-        <li class="li1"><div class="de1">&nbsp;</div></li>
-        <li class="li2"><div class="de2"><span class="sc3"><span
-        class="re1">&lt;html</span> <span class="re0">xmlns</span>=<span
-        class="st0">&quot;http://www.w3.org/1999/xhtml&quot;</span></div></li>
-        <li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp;
-        xmlns:<span class="re0">ui</span>=<span class="st0">&quot;http://java.sun.com/jsf/facelets&quot;</span><span
-        class="re2">&gt;</span></span></div></li>
-
-        <li class="li2"><div class="de2">&nbsp;</div></li>
-        <li class="li1"><div class="de1">&nbsp; <span
-        class="sc3"><span class="re1">&lt;body<span class="re2">&gt;</span></span></span></div></li>
-        <li class="li2"><div class="de2">&nbsp; &nbsp; <span
-        class="sc3"><span class="re1">&lt;ui</span>:composition
-        <span class="re0">template</span>=<span class="st0">&quot;/layout.xhtml&quot;</span><span
-        class="re2">&gt;</span></span></div></li>
-
-        <li class="li2"><div class="de2">&nbsp;</div></li>
-
-        <li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp;
-        <span class="sc3"><span class="re1">&lt;ui</span>:define
-        <span class="re0">name</span>=<span class="st0">&quot;title&quot;</span><span
-        class="re2">&gt;</span></span>Create a Contact<span
-        class="sc3"><span class="re1">&lt;/ui</span>:define<span
-        class="re2">&gt;</span></span></div></li>
-
-        <li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp;
-        <span class="sc3"><span class="re1">&lt;ui</span>:define
-        <span class="re0">name</span>=<span class="st0">&quot;heading&quot;</span><span
-        class="re2">&gt;</span></span>Create Contact&lt;/ui</span>:define<span
-        class="re2">&gt;</span></span></div></li>
-
-        <li class="li2"><div class="de2">&nbsp;</div></li>
-        <li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp;
-        <span class="sc3"><span class="re1">&lt;ui</span>:define
-        <span class="re0">name</span>=<span class="st0">&quot;content&quot;</span><span
-        class="re2">&gt;</span></span></div></li>
-        <li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp;
-        &nbsp; <span class="sc3"><span class="re1">&lt;ui</span>:include
-        <span class="re0">src</span>=<span class="st0">&quot;createContactForm.xhtml&quot;</span><span
-        class="re2">/&gt;</span></span></div></li>
-
-        <li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp;
-        <span class="sc3"><span class="re1">&lt;/ui</span>:define<span
-        class="re2">&gt;</span></span></div></li>
-
-        <li class="li2"><div class="de2">&nbsp;</div></li>
-
-        <li class="li2"><div class="de2">&nbsp; &nbsp; <span
-        class="sc3"><span class="re1">&lt;/ui</span>:composition<span
-        class="re2">&gt;</span></span></div></li>
-        <li class="li1"><div class="de1">&nbsp; <span
-        class="sc3"><span class="re1">&lt;/body<span class="re2">&gt;</span></span></span></div></li>
-        <li class="li2"><div class="de2"><span class="sc3"><span
-        class="re1">&lt;/html<span class="re2">&gt;</span></span></span>
-        </div></li></ol></div></div>
-
-        <p>
+        </p>
+
+        <div class="syntax"><div class="html4strict"
+        style="font-family: monospace;"><ol><li class="li1"><div
+        class="de1"><span class="sc0">&lt;!DOCTYPE html PUBLIC
+        &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot;</div></li>
+
+        <li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp;
+        &nbsp; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&gt;</span></div></li>
+        <li class="li1"><div class="de1">&nbsp;</div></li>
+        <li class="li2"><div class="de2"><span class="sc3"><span
+        class="re1">&lt;html</span> <span class="re0">xmlns</span>=<span
+        class="st0">&quot;http://www.w3.org/1999/xhtml&quot;</span></div></li>
+        <li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp;
+        xmlns:<span class="re0">ui</span>=<span class="st0">&quot;http://xmlns.jcp.org/jsf/facelets&quot;</span><span
+        class="re2">&gt;</span></span></div></li>
+
+        <li class="li2"><div class="de2">&nbsp;</div></li>
+        <li class="li1"><div class="de1">&nbsp; <span
+        class="sc3"><span class="re1">&lt;body<span class="re2">&gt;</span></span></span></div></li>
+        <li class="li2"><div class="de2">&nbsp; &nbsp; <span
+        class="sc3"><span class="re1">&lt;ui</span>:composition
+        <span class="re0">template</span>=<span class="st0">&quot;/layout.xhtml&quot;</span><span
+        class="re2">&gt;</span></span></div></li>
+
+        <li class="li2"><div class="de2">&nbsp;</div></li>
+
+        <li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp;
+        <span class="sc3"><span class="re1">&lt;ui</span>:define
+        <span class="re0">name</span>=<span class="st0">&quot;title&quot;</span><span
+        class="re2">&gt;</span></span>Create a Contact<span
+        class="sc3"><span class="re1">&lt;/ui</span>:define<span
+        class="re2">&gt;</span></span></div></li>
+
+        <li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp;
+        <span class="sc3"><span class="re1">&lt;ui</span>:define
+        <span class="re0">name</span>=<span class="st0">&quot;heading&quot;</span><span
+        class="re2">&gt;</span></span>Create Contact&lt;/ui</span>:define<span
+        class="re2">&gt;</span></span></div></li>
+
+        <li class="li2"><div class="de2">&nbsp;</div></li>
+        <li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp;
+        <span class="sc3"><span class="re1">&lt;ui</span>:define
+        <span class="re0">name</span>=<span class="st0">&quot;content&quot;</span><span
+        class="re2">&gt;</span></span></div></li>
+        <li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp;
+        &nbsp; <span class="sc3"><span class="re1">&lt;ui</span>:include
+        <span class="re0">src</span>=<span class="st0">&quot;createContactForm.xhtml&quot;</span><span
+        class="re2">/&gt;</span></span></div></li>
+
+        <li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp;
+        <span class="sc3"><span class="re1">&lt;/ui</span>:define<span
+        class="re2">&gt;</span></span></div></li>
+
+        <li class="li2"><div class="de2">&nbsp;</div></li>
+
+        <li class="li2"><div class="de2">&nbsp; &nbsp; <span
+        class="sc3"><span class="re1">&lt;/ui</span>:composition<span
+        class="re2">&gt;</span></span></div></li>
+        <li class="li1"><div class="de1">&nbsp; <span
+        class="sc3"><span class="re1">&lt;/body<span class="re2">&gt;</span></span></span></div></li>
+        <li class="li2"><div class="de2"><span class="sc3"><span
+        class="re1">&lt;/html<span class="re2">&gt;</span></span></span>
+        </div></li></ol></div></div>
+
+        <p>
         By encapsulating the layout, we can reuse that layout among multiple
         compositions. Just like
-        <code>ui:include</code> lets us encapsulate and reuse
+        <code>ui:include</code> lets us encapsulate and reuse
         conent, JSF compositions let us encapsulate and reuse
         layout, so that changes to a single layout can affect multiple views.
         Fundamentally, that's what this
         tag library is all about.
-        </p>
+        </p>
 
-        </div>
-        <pre>
+        </div>
+        <pre>
 
-    </description>
-    <namespace>http://java.sun.com/jsf/facelets</namespace>
+    ]]></description>
+    <namespace>http://xmlns.jcp.org/jsf/facelets</namespace>
     <tag>
-        <description>
+        <description><![CDATA[
 
 
-            <div class="changed_added_2_0">
-            <p>
-            This tag is the same as the <code>ui:composition</code>,
+            <div class="changed_added_2_0">
+            <p>
+            This tag is the same as the <code>ui:composition</code>,
             except for two things:
             JSF creates a component and adds it directly to the tree, and
             there's no associated
             template.
-            </p>
+            </p>
 
-            <p>
+            <p>
             Use this tag to create a component and specify a filename for the
-            component as either the source of a <code>ui:include</code>,
+            component as either the source of a <code>ui:include</code>,
             or the source of a Facelets tag.
-            </p>
-            </div>
+            </p>
+            </div>
 
-        </description>
+        ]]></description>
         <tag-name>component</tag-name>
         <handler-class>com.sun.faces.facelets.tag.ui.ComponentRefHandler</handler-class>
         <attribute>
-            <description>
+            <description><![CDATA[
 
 
-                <div class="changed_added_2_0">
-                <p>
+                <div class="changed_added_2_0">
+                <p>
                 The identifier of the component that JSF inserts into the
                 component tree. If an identifier is
                 not explicitly specified by the page author, JSF will assign an
                 identifier based on the algorithm
                 that it uses for all components.
-                </p>
-                </div>
+                </p>
+                </div>
 
-            </description>
+            ]]></description>
             <name>id</name>
             <required>false</required>
             <type>java.lang.String</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
 
 
-                <div class="changed_added_2_0">
-                <p>
+                <div class="changed_added_2_0">
+                <p>
                 Binds the component to a backing bean property, as specified in
                 the JSF specification.
-                </p>
-                </div>
+                </p>
+                </div>
 
-            </description>
+            ]]></description>
             <name>binding</name>
             <required>false</required>
             <type>java.lang.String</type>
         </attribute>
     </tag>
     <tag>
-        <description>
+        <description><![CDATA[
 
 
-            <div class="changed_added_2_0">
-            <p>
+            <div class="changed_added_2_0">
+            <p>
             Defines a composition that optionally uses a template, as outlined
             in the description of the ui tag library. Multiple
             compositions can use the same template, thus encapsulating and
@@ -408,107 +412,107 @@
             composition, which lets developers embed compositions in well-formed
             XHTML pages that can be viewed in an XHTML viewer,
             such as Dreamweaver or a browser, without including extraneous
-            elements such as <code>head</code> and <code>body</code>.
-            </p>
-            <div class="syntax"><div class="html4strict"
-            style="font-family: monospace;"><ol><li class="li1"><div
-            class="de1"><span class="sc0">&lt;!DOCTYPE html PUBLIC
-            &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot;</div></li>
-
-            <li class="li2"><div class="de2">&nbsp; &nbsp;
-            &nbsp; &nbsp; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&gt;</span></div></li>
-            <li class="li1"><div class="de1">&nbsp;</div></li>
-            <li class="li2"><div class="de2"><span class="sc3"><span
-            class="re1">&lt;html</span> <span class="re0">xmlns</span>=<span
-            class="st0">&quot;http://www.w3.org/1999/xhtml&quot;</span></div></li>
-            <li class="li1"><div class="de1">&nbsp; &nbsp;xmlns:<span
-            class="re0">ui</span>=<span class="st0">&quot;http://java.sun.com/jsf/facelets&quot;</span><span
-            class="re2">&gt;</span></span></div></li>
-
-            <li class="li2"><div class="de2">&nbsp;</div></li>
-            <li class="li1"><div class="de1">&nbsp; <span
-            class="sc3"><span class="re1">&lt;body<span
-            class="re2">&gt;</span></span></span></div></li>
-            <li class="li2"><div class="de2">&nbsp;</div></li>
-            <li class="li1"><div class="de1">&nbsp; &nbsp;
-            THIS LINE, AND EVERYTHING ABOVE IT IS DISREGARDED BY JSF</div></li>
-            <li class="li2"><div class="de2">&nbsp; &nbsp;
-            <span class="sc3"><span class="re1">&lt;ui</span>:composition
-            <span class="re0">template</span>=<span class="st0">&quot;/layout.xhtml&quot;</span><span
-            class="re2">&gt;</span></span></div></li>
-
-            <li class="li1"><div class="de1">&nbsp;</div></li>
-            <li class="li2"><div class="de2">&nbsp; &nbsp;
-            &nbsp; <span class="sc3"><span class="re1">&lt;ui</span>:define
-            <span class="re0">name</span>=<span class="st0">&quot;title&quot;</span><span
-            class="re2">&gt;</span></span>#{msgs.contactsWindowTitle}<span
-            class="sc3"><span class="re1">&lt;/ui</span>:define<span
-            class="re2">&gt;</span></span></div></li>
-            <li class="li1"><div class="de1">&nbsp; &nbsp;
-            &nbsp; <span class="sc3"><span class="re1">&lt;ui</span>:define
-            <span class="re0">name</span>=<span class="st0">&quot;heading&quot;</span><span
-            class="re2">&gt;</span></span>#{msgs.contactsHeading}<span
-            class="sc3"><span class="re1">&lt;/ui</span>:define<span
-            class="re2">&gt;</span></span></div></li>
-
-            <li class="li2"><div class="de2">&nbsp;</div></li>
-            <li class="li1"><div class="de1">&nbsp; &nbsp;
-            &nbsp; <span class="sc3"><span class="re1">&lt;ui</span>:define
-            <span class="re0">name</span>=<span class="st0">&quot;content&quot;</span><span
-            class="re2">&gt;</span></span></div></li>
-            <li class="li2"><div class="de2">&nbsp; &nbsp;
-            &nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;ui</span>:include
-            <span class="re0">src</span>=<span class="st0">&quot;contactsTable.xhtml&quot;</span>
-            <span class="re2">/&gt;</span></span></div></li>
-
-            <li class="li1"><div class="de1">&nbsp; &nbsp;
-            &nbsp; <span class="sc3"><span class="re1">&lt;/ui</span>:define<span
-            class="re2">&gt;</span></span></div></li>
-            <li class="li2"><div class="de2">&nbsp; &nbsp;
-            &nbsp; &nbsp; &nbsp;</div></li>
-            <li class="li1"><div class="de1">&nbsp; &nbsp;
-            <span class="sc3"><span class="re1">&lt;/ui</span>:composition<span
-            class="re2">&gt;</span></span></div></li>
-            <li class="li2"><div class="de2">&nbsp; &nbsp;
-            THIS LINE, AND EVERYTHING BELOW IT IS DISREGARDED BY JSF</div></li>
-
-            <li class="li1"><div class="de1">&nbsp;</div></li>
-            <li class="li2"><div class="de2">&nbsp; <span
-            class="sc3"><span class="re1">&lt;/body<span
-            class="re2">&gt;</span></span></span></div></li>
-            <li class="li1"><div class="de1"><span class="sc3"><span
-            class="re1">&lt;/html<span class="re2">&gt;</span></span></span>
-            </div></li></ol></div></div>
-
-            </div>
-
-        </description>
+            elements such as <code>head</code> and <code>body</code>.
+            </p>
+            <div class="syntax"><div class="html4strict"
+            style="font-family: monospace;"><ol><li class="li1"><div
+            class="de1"><span class="sc0">&lt;!DOCTYPE html PUBLIC
+            &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot;</div></li>
+
+            <li class="li2"><div class="de2">&nbsp; &nbsp;
+            &nbsp; &nbsp; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&gt;</span></div></li>
+            <li class="li1"><div class="de1">&nbsp;</div></li>
+            <li class="li2"><div class="de2"><span class="sc3"><span
+            class="re1">&lt;html</span> <span class="re0">xmlns</span>=<span
+            class="st0">&quot;http://www.w3.org/1999/xhtml&quot;</span></div></li>
+            <li class="li1"><div class="de1">&nbsp; &nbsp;xmlns:<span
+            class="re0">ui</span>=<span class="st0">&quot;http://xmlns.jcp.org/jsf/facelets&quot;</span><span
+            class="re2">&gt;</span></span></div></li>
+
+            <li class="li2"><div class="de2">&nbsp;</div></li>
+            <li class="li1"><div class="de1">&nbsp; <span
+            class="sc3"><span class="re1">&lt;body<span
+            class="re2">&gt;</span></span></span></div></li>
+            <li class="li2"><div class="de2">&nbsp;</div></li>
+            <li class="li1"><div class="de1">&nbsp; &nbsp;
+            THIS LINE, AND EVERYTHING ABOVE IT IS DISREGARDED BY JSF</div></li>
+            <li class="li2"><div class="de2">&nbsp; &nbsp;
+            <span class="sc3"><span class="re1">&lt;ui</span>:composition
+            <span class="re0">template</span>=<span class="st0">&quot;/layout.xhtml&quot;</span><span
+            class="re2">&gt;</span></span></div></li>
+
+            <li class="li1"><div class="de1">&nbsp;</div></li>
+            <li class="li2"><div class="de2">&nbsp; &nbsp;
+            &nbsp; <span class="sc3"><span class="re1">&lt;ui</span>:define
+            <span class="re0">name</span>=<span class="st0">&quot;title&quot;</span><span
+            class="re2">&gt;</span></span>#{msgs.contactsWindowTitle}<span
+            class="sc3"><span class="re1">&lt;/ui</span>:define<span
+            class="re2">&gt;</span></span></div></li>
+            <li class="li1"><div class="de1">&nbsp; &nbsp;
+            &nbsp; <span class="sc3"><span class="re1">&lt;ui</span>:define
+            <span class="re0">name</span>=<span class="st0">&quot;heading&quot;</span><span
+            class="re2">&gt;</span></span>#{msgs.contactsHeading}<span
+            class="sc3"><span class="re1">&lt;/ui</span>:define<span
+            class="re2">&gt;</span></span></div></li>
+
+            <li class="li2"><div class="de2">&nbsp;</div></li>
+            <li class="li1"><div class="de1">&nbsp; &nbsp;
+            &nbsp; <span class="sc3"><span class="re1">&lt;ui</span>:define
+            <span class="re0">name</span>=<span class="st0">&quot;content&quot;</span><span
+            class="re2">&gt;</span></span></div></li>
+            <li class="li2"><div class="de2">&nbsp; &nbsp;
+            &nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;ui</span>:include
+            <span class="re0">src</span>=<span class="st0">&quot;contactsTable.xhtml&quot;</span>
+            <span class="re2">/&gt;</span></span></div></li>
+
+            <li class="li1"><div class="de1">&nbsp; &nbsp;
+            &nbsp; <span class="sc3"><span class="re1">&lt;/ui</span>:define<span
+            class="re2">&gt;</span></span></div></li>
+            <li class="li2"><div class="de2">&nbsp; &nbsp;
+            &nbsp; &nbsp; &nbsp;</div></li>
+            <li class="li1"><div class="de1">&nbsp; &nbsp;
+            <span class="sc3"><span class="re1">&lt;/ui</span>:composition<span
+            class="re2">&gt;</span></span></div></li>
+            <li class="li2"><div class="de2">&nbsp; &nbsp;
+            THIS LINE, AND EVERYTHING BELOW IT IS DISREGARDED BY JSF</div></li>
+
+            <li class="li1"><div class="de1">&nbsp;</div></li>
+            <li class="li2"><div class="de2">&nbsp; <span
+            class="sc3"><span class="re1">&lt;/body<span
+            class="re2">&gt;</span></span></span></div></li>
+            <li class="li1"><div class="de1"><span class="sc3"><span
+            class="re1">&lt;/html<span class="re2">&gt;</span></span></span>
+            </div></li></ol></div></div>
+
+            </div>
+
+        ]]></description>
         <tag-name>composition</tag-name>
         <handler-class>com.sun.faces.facelets.tag.ui.CompositionHandler</handler-class>
         <attribute>
-            <description>
+            <description><![CDATA[
 
 
-                <div class="changed_added_2_0">
-                <p>
+                <div class="changed_added_2_0">
+                <p>
                 A URI that points to a template, also known as a layout, that
                 inserts pieces of the page defined in the composition.
-                </p>
-                </div>
+                </p>
+                </div>
 
-            </description>
+            ]]></description>
             <name>template</name>
             <required>false</required>
             <type>java.lang.String</type>
         </attribute>
     </tag>
     <tag>
-        <description>
+        <description><![CDATA[
 
 
-            <div class="changed_added_2_0">
-            <p>
-            When the <code>ui:debug</code> tag is placed in an XHTML
+            <div class="changed_added_2_0">
+            <p>
+            When the <code>ui:debug</code> tag is placed in an XHTML
             page, it creates a component and adds it to the
             component tree. That debug component captures debugging information,
             namely the current state of the component
@@ -516,509 +520,509 @@
             is rendered. If the user presses CTRL + SHIFT + d,
             JSF opens a window that shows the debugging information captured by
             the debug component.
-            </p>
+            </p>
 
-            <p>
-            Typically, the best place to put the <code>ui:debug</code>
+            <p>
+            Typically, the best place to put the <code>ui:debug</code>
             tag is in an application's main template, which
             lets developers enable or disable viewing of debugging information
             in one central location. Additionally, page
             authors can change the hotkey (which by default is CTRL + SHIFT + d,
             where the d stands for debug) to CTRL + SHIFT + ?,
-            where ? represents the key specified as the value of the <code>hotkey</code>
+            where ? represents the key specified as the value of the <code>hotkey</code>
             attribute.
-            </p>
+            </p>
 
-            <p>
-            You can use the <code>rendered</code> attribute to
+            <p>
+            You can use the <code>rendered</code> attribute to
             control whether the debug component is rendered.
-            Using an EL expression as the value for the <code>rendered</code>
+            Using an EL expression as the value for the <code>rendered</code>
             attribute lets you control whether
             debug output is enabled for multiple views based on a single bean
             property.
-            </p>
-            </div>
+            </p>
+            </div>
 
-        </description>
+        ]]></description>
         <tag-name>debug</tag-name>
         <handler-class>com.sun.faces.facelets.tag.ui.UIDebug</handler-class>
         <attribute>
-            <description>
+            <description><![CDATA[
 
 
-                <div class="changed_added_2_0">
-                <p>
+                <div class="changed_added_2_0">
+                <p>
                 Defines a single character, that, pressed in conjunction with
                 CTRL and SHIFT, will display the JSF debug window.
-                By default, the hotkey is 'd'. <em>The value for the
-                hotkey attribute cannot be an EL expression.</em>
-                </p>
+                By default, the hotkey is 'd'. <em>The value for the
+                hotkey attribute cannot be an EL expression.</em>
+                </p>
 
-                </div>
+                </div>
 
-            </description>
+            ]]></description>
             <name>hotkey</name>
             <required>false</required>
             <type>java.lang.String</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
 
 
-                <div class="changed_added_2_0">
-                <p>
+                <div class="changed_added_2_0">
+                <p>
                 Controls whether the debug component is rendered. Valid values
                 for this attribute are either the strings "true" or "false" or
-                an EL expression that evaluates to either "true" or "false".<p>If
+                an EL expression that evaluates to either "true" or "false".<p>If
                 this attribute's value is "false" or the value is an EL
                 expression that evaluates to "false", the debug component is not
                 rendered in the page, the hotkey attribute is disregarded, and
                 users cannot open the debugging information window with a
-                hotkey.</p>
-                </p>
+                hotkey.</p>
+                </p>
 
-                </div>
+                </div>
 
-            </description>
+            ]]></description>
             <name>rendered</name>
             <required>false</required>
             <type>java.lang.String</type>
         </attribute>
     </tag>
     <tag>
-        <description>
+        <description><![CDATA[
 
 
-            <div class="changed_added_2_0">
+            <div class="changed_added_2_0">
 
-            <p>The <code>define</code> tag defines content
-            that is inserted into a page by a template. The <code>define</code>
-            tag can be used inside <code>ui:composition</code>, <code>ui:component</code>,
-            <code>ui:decorate</code>, and <code>ui:fragment</code>
-            tags.</p>
+            <p>The <code>define</code> tag defines content
+            that is inserted into a page by a template. The <code>define</code>
+            tag can be used inside <code>ui:composition</code>, <code>ui:component</code>,
+            <code>ui:decorate</code>, and <code>ui:fragment</code>
+            tags.</p>
 
-            <p>Content defined by the <code>define</code> tag
-            can be inserted into a page by using <code>ui:insert</code>.
-            </p>
+            <p>Content defined by the <code>define</code> tag
+            can be inserted into a page by using <code>ui:insert</code>.
+            </p>
 
-            </div>
+            </div>
 
-        </description>
+        ]]></description>
         <tag-name>define</tag-name>
         <handler-class>com.sun.faces.facelets.tag.ui.DefineHandler</handler-class>
         <attribute>
-            <description>
+            <description><![CDATA[
 
 
-                <div class="changed_added_2_0">
+                <div class="changed_added_2_0">
 
-                <p>Assigns a name to the content inside a <code>define</code>
-                tag. That name is used by corresponding <code>ui:insert</code>
-                tags in a template that insert the named content into a page.</p>
-                </div>
+                <p>Assigns a name to the content inside a <code>define</code>
+                tag. That name is used by corresponding <code>ui:insert</code>
+                tags in a template that insert the named content into a page.</p>
+                </div>
 
-            </description>
+            ]]></description>
             <name>name</name>
             <required>true</required>
             <type>java.lang.String</type>
         </attribute>
     </tag>
     <tag>
-        <description>
+        <description><![CDATA[
 
 
-            <div class="changed_added_2_0">
+            <div class="changed_added_2_0">
 
-            <p>
-            The <code>decorate</code> tag is identical to the <code>composition</code>
-            tag, except that <code>ui:decorate</code>, unlike <code>ui:composition</code>,
-            does not disregard all content outside of the tag. The <code>decorate</code>
+            <p>
+            The <code>decorate</code> tag is identical to the <code>composition</code>
+            tag, except that <code>ui:decorate</code>, unlike <code>ui:composition</code>,
+            does not disregard all content outside of the tag. The <code>decorate</code>
             is useful when you want to decorate some content in a page, for
             example, you might want to decorate a list of items, like this:
 
-            <div class="syntax"><div class="html4strict"
-            style="font-family: monospace;"><ol><li class="li1"><div
-            class="de1">
-
-            <span class="sc2">&lt;ui:decorate template=<span
-            class="st0">&quot;/layout.xhtml&quot;</span><span
-            class="kw2">&gt;</span></span></div></li>
-            <li class="li2"><div class="de2">&nbsp; <span
-            class="sc2">&lt;ui:define <span class="kw3">name</span>=<span
-            class="st0">&quot;listHeading&quot;</span><span
-            class="kw2">&gt;</span></span></div></li>
-
-            <li class="li1"><div class="de1">&nbsp; &nbsp;
-            <span class="sc2">&lt;ui:include <span class="kw3">src</span>="shared/listHeading.xhtml"/<span
-            class="kw2">&gt;</span></span></div></li>
-            <li class="li2"><div class="de2">&nbsp; <span
-            class="sc2"><span class="kw2">&lt;</span>/ui:define&gt;</span></div></li>
-            <li class="li1"><div class="de1">&nbsp; &nbsp;
-            &nbsp; &nbsp; </div></li>
-            <li class="li2"><div class="de2">&nbsp; <span
-            class="sc2">&lt;c:forEach items="#<span class="br0">&#123;</span>items<span
-            class="br0">&#125;"</span> var="item"<span
-            class="kw2">&gt;</span></span></div></li>
-
-            <li class="li1"><div class="de1">&nbsp; &nbsp;
-            ...</div></li>
-            <li class="li2"><div class="de2">&nbsp; <span
-            class="sc2"><span class="kw2">&lt;</span>/c:forEach&gt;</span></div></li>
-            <li class="li1"><div class="de1">&nbsp; ...</div></li>
-            <li class="li2"><div class="de2"><span class="sc2"><span
-            class="kw2">&lt;</span>/ui:decorate&gt;</span>
-            </div></li></ol></div></div>
-            </p>
-
-            Because JSF does not disregard everything outside of the <code>ui:decorate</code>
-            tag, <code>ui:decorate</code> can
+            <div class="syntax"><div class="html4strict"
+            style="font-family: monospace;"><ol><li class="li1"><div
+            class="de1">
+
+            <span class="sc2">&lt;ui:decorate template=<span
+            class="st0">&quot;/layout.xhtml&quot;</span><span
+            class="kw2">&gt;</span></span></div></li>
+            <li class="li2"><div class="de2">&nbsp; <span
+            class="sc2">&lt;ui:define <span class="kw3">name</span>=<span
+            class="st0">&quot;listHeading&quot;</span><span
+            class="kw2">&gt;</span></span></div></li>
+
+            <li class="li1"><div class="de1">&nbsp; &nbsp;
+            <span class="sc2">&lt;ui:include <span class="kw3">src</span>="shared/listHeading.xhtml"/<span
+            class="kw2">&gt;</span></span></div></li>
+            <li class="li2"><div class="de2">&nbsp; <span
+            class="sc2"><span class="kw2">&lt;</span>/ui:define&gt;</span></div></li>
+            <li class="li1"><div class="de1">&nbsp; &nbsp;
+            &nbsp; &nbsp; </div></li>
+            <li class="li2"><div class="de2">&nbsp; <span
+            class="sc2">&lt;c:forEach items="#<span class="br0">&#123;</span>items<span
+            class="br0">&#125;"</span> var="item"<span
+            class="kw2">&gt;</span></span></div></li>
+
+            <li class="li1"><div class="de1">&nbsp; &nbsp;
+            ...</div></li>
+            <li class="li2"><div class="de2">&nbsp; <span
+            class="sc2"><span class="kw2">&lt;</span>/c:forEach&gt;</span></div></li>
+            <li class="li1"><div class="de1">&nbsp; ...</div></li>
+            <li class="li2"><div class="de2"><span class="sc2"><span
+            class="kw2">&lt;</span>/ui:decorate&gt;</span>
+            </div></li></ol></div></div>
+            </p>
+
+            Because JSF does not disregard everything outside of the <code>ui:decorate</code>
+            tag, <code>ui:decorate</code> can
             be used to decorate pieces of a page.
 
-            </div>
+            </div>
 
-        </description>
+        ]]></description>
         <tag-name>decorate</tag-name>
         <handler-class>com.sun.faces.facelets.tag.ui.DecorateHandler</handler-class>
         <attribute>
-            <description>
+            <description><![CDATA[
 
 
-                <div class="changed_added_2_0">
+                <div class="changed_added_2_0">
                 A URI that points to a template, also known as a layout, that
                 inserts pieces of the page defined in the decorator.
 
-                </div>
+                </div>
 
-            </description>
+            ]]></description>
             <name>template</name>
             <required>false</required>
             <type>java.lang.String</type>
         </attribute>
     </tag>
     <tag>
-        <description>
+        <description><![CDATA[
 
 
-            <div class="changed_added_2_0">
-            <p>The <code>fragment</code> tag is identical to
-            the <code>component</code> tag, except that <code>ui:fragment</code>,
-            unlike <code>ui:component</code>, JSF does not disregard
-            all content outside of the tag.</p>
-            </div>
+            <div class="changed_added_2_0">
+            <p>The <code>fragment</code> tag is identical to
+            the <code>component</code> tag, except that <code>ui:fragment</code>,
+            unlike <code>ui:component</code>, JSF does not disregard
+            all content outside of the tag.</p>
+            </div>
 
-        </description>
+        ]]></description>
         <tag-name>fragment</tag-name>
         <handler-class>com.sun.faces.facelets.tag.ui.ComponentRefHandler</handler-class>
         <attribute>
-            <description>
+            <description><![CDATA[
 
 
-                <div class="changed_added_2_0">
+                <div class="changed_added_2_0">
                 The identifier of the component that JSF inserts into the
                 component tree. If an identifier is
                 not explicitly specified by the page author, JSF will assign an
                 identifier based on the algorithm
                 that it uses for all components.
-                </div>
+                </div>
 
-            </description>
+            ]]></description>
             <name>id</name>
             <required>false</required>
             <type>java.lang.String</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
 
 
-                <div class="changed_added_2_0">
+                <div class="changed_added_2_0">
                 Binds the component to a backing bean property, as specified in
                 the JSF specification.
-                </div>
+                </div>
 
-            </description>
+            ]]></description>
             <name>binding</name>
             <required>false</required>
             <type>java.lang.String</type>
         </attribute>
     </tag>
     <tag>
-        <description>
+        <description><![CDATA[
 
 
-            <div class="changed_added_2_0">
-            <p>Use this tag&#8212which is very similar to JSP's <code>jsp:include</code>&#8212to
+            <div class="changed_added_2_0">
+            <p>Use this tag&#8212which is very similar to JSP's <code>jsp:include</code>&#8212to
             encapsulate and reuse content among
             multiple XHTML pages. There are three things this tag can include:
-            plain XHTML, and XHTML pages that have either a <code>composition</code>
-            tag or a <code>component</code> tag.
-            </p>
-            <p>You supply a filename, through <code>ui:include</code>'s
-            <code>src</code> attribute for JSF to include. That
+            plain XHTML, and XHTML pages that have either a <code>composition</code>
+            tag or a <code>component</code> tag.
+            </p>
+            <p>You supply a filename, through <code>ui:include</code>'s
+            <code>src</code> attribute for JSF to include. That
             filename is relative to the XHTML file that was rendered as a result
             of the last request. So, for example, if JSF loaded
-            the view <code>login.xhtml</code>, and that file
-            included <code>pageDecorations/header.xhtml</code>, and
-            <code>
-            pageDecorations/header.xhtml</code> included <code>companyLogo.xhtml</code>,
-            then <code>companyLogo.xhtml</code> will
-            not be found if it's in the <code>pageDecorations</code>
-            directory, because <code>companyLogo.xhtml</code> has to
+            the view <code>login.xhtml</code>, and that file
+            included <code>pageDecorations/header.xhtml</code>, and
+            <code>
+            pageDecorations/header.xhtml</code> included <code>companyLogo.xhtml</code>,
+            then <code>companyLogo.xhtml</code> will
+            not be found if it's in the <code>pageDecorations</code>
+            directory, because <code>companyLogo.xhtml</code> has to
             be
-            in the same directory as <code>login.xhtml</code>.
-            </p>
+            in the same directory as <code>login.xhtml</code>.
+            </p>
 
-            </div>
+            </div>
 
-        </description>
+        ]]></description>
         <tag-name>include</tag-name>
         <handler-class>com.sun.faces.facelets.tag.ui.IncludeHandler</handler-class>
         <attribute>
-            <description>
+            <description><![CDATA[
 
 
-                <div class="changed_added_2_0">
+                <div class="changed_added_2_0">
                 The filename of an XHTML page to include. The filename is
                 relative to the XHTML page that was originally loaded.
-                </div>
+                </div>
 
-            </description>
+            ]]></description>
             <name>src</name>
             <required>true</required>
             <type>java.lang.String</type>
         </attribute>
     </tag>
     <tag>
-        <description>
+        <description><![CDATA[
 
 
-            <div class="changed_added_2_0">
-            <p>Inserts content into a template. That content is defined&#8212with
-            the <code>ui:define</code> tag&#8212 in either a
-            <code>ui:composition</code>, <code>ui:component</code>,
-            <code>ui:decorate</code>, or <code>ui:fragment</code>.</p>
-            </div>
+            <div class="changed_added_2_0">
+            <p>Inserts content into a template. That content is defined&#8212with
+            the <code>ui:define</code> tag&#8212 in either a
+            <code>ui:composition</code>, <code>ui:component</code>,
+            <code>ui:decorate</code>, or <code>ui:fragment</code>.</p>
+            </div>
 
-        </description>
+        ]]></description>
         <tag-name>insert</tag-name>
         <handler-class>com.sun.faces.facelets.tag.ui.IncludeHandler</handler-class>
         <attribute>
-            <description>
+            <description><![CDATA[
 
 
-                <div class="changed_added_2_0">
+                <div class="changed_added_2_0">
 
                 The optional name attribute matches the associated &lt;ui:define/&gt;
                 tag in this template's client. If no name is specified, it's
                 expected
                 that the whole template client will be inserted.
 
-                </div>
+                </div>
 
-            </description>
+            ]]></description>
             <name>name</name>
             <required>false</required>
             <type>java.lang.String</type>
         </attribute>
     </tag>
     <tag>
-        <description>
+        <description><![CDATA[
 
 
-            <div class="changed_added_2_0">
-            <p>Use this tag to pass parameters to an included file (using
-            <code>ui:include</code>), or a template
-            (linked to either a composition or decorator). Embed <code>ui:param</code>
-            tags in either <code>ui:include</code>,
-            <code>ui:composition</code>, or <code>ui:decorate</code>
+            <div class="changed_added_2_0">
+            <p>Use this tag to pass parameters to an included file (using
+            <code>ui:include</code>), or a template
+            (linked to either a composition or decorator). Embed <code>ui:param</code>
+            tags in either <code>ui:include</code>,
+            <code>ui:composition</code>, or <code>ui:decorate</code>
             to pass the parameters.
-            </div>
+            </div>
 
-        </description>
+        ]]></description>
         <tag-name>param</tag-name>
         <handler-class>com.sun.faces.facelets.tag.ui.ParamHandler</handler-class>
         <attribute>
-            <description>
+            <description><![CDATA[
 
 
-                <div class="changed_added_2_0">
+                <div class="changed_added_2_0">
                 The name of the parameter.
-                </div>
+                </div>
 
-            </description>
+            ]]></description>
             <name>name</name>
             <required>true</required>
             <type>java.lang.String</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
 
 
-                <div class="changed_added_2_0">
+                <div class="changed_added_2_0">
                 The value of the parameter. Notice that this attribute's value
                 can be an EL expression, which
                 means that you can pass objects to either an included file or a
                 template.
-                </div>
-            </description>
+                </div>
+            ]]></description>
             <name>value</name>
             <required>true</required>
             <type>java.lang.String</type>
         </attribute>
     </tag>
     <tag>
-        <description>
+        <description><![CDATA[
 
 
-            <div class="changed_added_2_0">
+            <div class="changed_added_2_0">
 
-            <p>Use this tag as an alternative to <code>h:dataTable</code>
+            <p>Use this tag as an alternative to <code>h:dataTable</code>
             or
-            <code>c:forEach</code>, especially when you are using
+            <code>c:forEach</code>, especially when you are using
             the
-            <code>jsfc</code> feature of Facelets. You can specify
+            <code>jsfc</code> feature of Facelets. You can specify
             this component as
-            the value of the <code>jsfc</code> attribute, like this:
+            the value of the <code>jsfc</code> attribute, like this:
             &lt;div... jsfc="ui:repeat" value="#{contacts}" var="contact"&gt;...
-            </p>
-            </div>
+            </p>
+            </div>
 
-        </description>
+        ]]></description>
         <tag-name>repeat</tag-name>
         <handler-class>com.sun.faces.facelets.tag.ui.RepeatHandler</handler-class>
         <attribute>
-            <description>
+            <description><![CDATA[
 
 
-                <div class="changed_added_2_0">
+                <div class="changed_added_2_0">
 
-                <p>Read-write property setting the offset from the
+                <p>Read-write property setting the offset from the
                 beginning of the
                 collection from which to start the iteration. If not set, this
                 offset
                 is not considered and iteration will start at the beginning of
                 the
-                collection.</p>
+                collection.</p>
 
-                </div>
+                </div>
 
-            </description>
+            ]]></description>
             <name>offset</name>
             <required>false</required>
             <type>int</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
 
 
-                <div class="changed_added_2_0">
+                <div class="changed_added_2_0">
 
-                <p>Read-write property setting the size of the collection
+                <p>Read-write property setting the size of the collection
                 to iterate.
                 If this value is less than the actual size of the collection, a
-                <code>FacesException</code> must be thrown.</p>
+                <code>FacesException</code> must be thrown.</p>
 
-                </div>
+                </div>
 
-            </description>
+            ]]></description>
             <name>size</name>
             <required>false</required>
             <type>int</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
 
-                <div class="changed_added_2_0"><p>Iteration
+                <div class="changed_added_2_0"><p>Iteration
                 will only process every step items of the collection,
-                starting with the first one.</p></div>
+                starting with the first one.</p></div>
 
-            </description>
+            ]]></description>
             <name>step</name>
             <required>false</required>
             <type>int</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
 
 
-                <div class="changed_added_2_0">
+                <div class="changed_added_2_0">
 
-                <p>The name of a collection of items that this tag
+                <p>The name of a collection of items that this tag
                 iterates over. The
-                collection may be a <code>List</code>, <code>array</code>,
-                <code>java.sql.ResultSet</code>, or an individual
+                collection may be a <code>List</code>, <code>array</code>,
+                <code>java.sql.ResultSet</code>, or an individual
                 java Object. If the
-                collection is null, this tag does nothing.</p>
+                collection is null, this tag does nothing.</p>
 
-                </div>
+                </div>
 
-            </description>
+            ]]></description>
             <name>value</name>
             <required>true</required>
             <type>java.lang.Object</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
 
-                <div class="changed_added_2_0"><p>Name of the
+                <div class="changed_added_2_0"><p>Name of the
                 exported scoped variable for the current item of the
                 iteration. This scoped variable has nested
                 visibility. Its type depends on the object of the
-                underlying collection</p></div>
+                underlying collection</p></div>
 
-            </description>
+            ]]></description>
             <name>var</name>
             <required>true</required>
             <type>java.lang.Object</type>
         </attribute>
         <attribute>
-            <description>
+            <description><![CDATA[
 
-                <div class="changed_added_2_0"><p>Name of the
+                <div class="changed_added_2_0"><p>Name of the
                 exported request scoped variable for the status of the
                 iteration. Object is a POJO with the following read-only
                 JavaBeans properties. This scoped variable has nested
-                visibility.</p>
+                visibility.</p>
 
-                <p><code>begin</code> of type Integer</p>
+                <p><code>begin</code> of type Integer</p>
 
-                <p><code>end</code> of type Integer</p>
+                <p><code>end</code> of type Integer</p>
 
-                <p><code>index</code> of type int</p>
+                <p><code>index</code> of type int</p>
 
-                <p><code>step</code> of type Integer</p>
+                <p><code>step</code> of type Integer</p>
 
-                <p><code>even</code> of type boolean</p>
+                <p><code>even</code> of type boolean</p>
 
-                <p><code>odd</code> of type boolean</p>
+                <p><code>odd</code> of type boolean</p>
 
-                <p><code>first</code> of type boolean</p>
+                <p><code>first</code> of type boolean</p>
 
-                <p><code>last</code> of type boolean</p>
+                <p><code>last</code> of type boolean</p>
 
-                </div>
+                </div>
 
-            </description>
+            ]]></description>
             <name>varStatus</name>
             <required>false</required>
             <type>java.lang.Object</type>
         </attribute>
     </tag>
     <tag>
-        <description>
+        <description><![CDATA[
 
 
-            <div class="changed_added_2_0">
-            <p>Remove content from a page. This tag is often used in
-            conjunction with the <code>jsfc</code> feature of
+            <div class="changed_added_2_0">
+            <p>Remove content from a page. This tag is often used in
+            conjunction with the <code>jsfc</code> feature of
             Facelets,
             to wrap additional markup. When Facelets removes markup from a page
             by substituting markup items that have
-            a <code>jsfc</code> attribute with the specified
+            a <code>jsfc</code> attribute with the specified
             component, Facelets also removes anything in the page that
-            is contained in a <code>ui:remove</code> tag.</p>
-            </div>
+            is contained in a <code>ui:remove</code> tag.</p>
+            </div>
 
-        </description>
+        ]]></description>
         <tag-name>remove</tag-name>
         <handler-class>com.sun.faces.facelets.tag.ui.SchemaCompliantRemoveHandler</handler-class>
 
diff --git a/jsf-ri/conf/share/ui.tld b/jsf-ri/conf/share/ui.tld
index b767671..3e43eb5 100644
--- a/jsf-ri/conf/share/ui.tld
+++ b/jsf-ri/conf/share/ui.tld
@@ -1,39 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 2009 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2009-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
+
 <taglib xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.1">
 
 <!-- ============== Tag Library Description Elements ============= -->
@@ -73,7 +80,7 @@
 <li class="li2"><div class="de2">              "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"></span></div></li>
 <li class="li1"><div class="de1"> </div></li>
 <li class="li2"><div class="de2"><span class="sc3"><span class="re1"><html</span> <span class="re0">xmlns</span>=<span class="st0">"http://www.w3.org/1999/xhtml"</span></div></li>
-<li class="li1"><div class="de1">            xmlns:<span class="re0">ui</span>=<span class="st0">"http://java.sun.com/jsf/facelets"</span></div></li>
+<li class="li1"><div class="de1">            xmlns:<span class="re0">ui</span>=<span class="st0">"http://xmlns.jcp.org/jsf/facelets"</span></div></li>
 
 <li class="li1"><div class="de1">    <span class="sc3"><span class="re1"><head<span class="re2">></span></span></span></div></li>
 <li class="li2"><div class="de2">      <span class="sc3"><span class="re1"><link</span> <span class="re0">href</span>=<span class="st0">"styles.css"</span> <span class="re0">rel</span>=<span class="st0">"stylesheet"</span> <span class="re0">type</span>=<span class="st0">"text/css"</span><span class="re2">/></span></span></div></li>
@@ -115,7 +122,7 @@
 <li class="li2"><div class="de2">        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"></span></div></li>
 <li class="li1"><div class="de1"> </div></li>
 <li class="li2"><div class="de2"><span class="sc3"><span class="re1"><html</span> <span class="re0">xmlns</span>=<span class="st0">"http://www.w3.org/1999/xhtml"</span></div></li>
-<li class="li1"><div class="de1">   xmlns:<span class="re0">ui</span>=<span class="st0">"http://java.sun.com/jsf/facelets"</span><span class="re2">></span></span></div></li>
+<li class="li1"><div class="de1">   xmlns:<span class="re0">ui</span>=<span class="st0">"http://xmlns.jcp.org/jsf/facelets"</span><span class="re2">></span></span></div></li>
 
 <li class="li2"><div class="de2"> </div></li>
 <li class="li1"><div class="de1">  <span class="sc3"><span class="re1"><body<span class="re2">></span></span></span></div></li>
@@ -156,7 +163,7 @@
 <li class="li2"><div class="de2">        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"></span></div></li>
 <li class="li1"><div class="de1"> </div></li>
 <li class="li2"><div class="de2"><span class="sc3"><span class="re1"><html</span> <span class="re0">xmlns</span>=<span class="st0">"http://www.w3.org/1999/xhtml"</span></div></li>
-<li class="li1"><div class="de1">      xmlns:<span class="re0">ui</span>=<span class="st0">"http://java.sun.com/jsf/facelets"</span><span class="re2">></span></span></div></li>
+<li class="li1"><div class="de1">      xmlns:<span class="re0">ui</span>=<span class="st0">"http://xmlns.jcp.org/jsf/facelets"</span><span class="re2">></span></span></div></li>
 
 <li class="li2"><div class="de2"> </div></li>
 <li class="li1"><div class="de1">  <span class="sc3"><span class="re1"><body<span class="re2">></span></span></span></div></li>
@@ -196,30 +203,35 @@
         2.1
     </tlib-version>
 
+    <display-name>
+        Facelets Templating
+    </display-name>
+
     <short-name>
         ui
     </short-name>
 
     <uri>
-        http://java.sun.com/jsf/facelets
+        http://xmlns.jcp.org/jsf/facelets
     </uri>
 
     <tag>
         <description>
 
             <![CDATA[
-<div class="changed_added_2_0">
-  <p>
-	This tag is the same as the <code>ui:composition</code>, except for two things:
-    JSF creates a component and adds it directly to the tree, and there's no associated
-    template.
+
+  <p><span class="changed_modified_2_0_rev_a
+  changed_added_2_0 changed_modified_2_2">This</span> <span
+  class="changed_added_2_0">tag is the same as the
+  <code>ui:composition</code>, except for two things: JSF creates a
+  component and adds it directly to the tree, and there's no associated
+  template.</span>
   </p>
 
-  <p>
-	Use this tag to create a component and specify a filename for the
-	component as either the source of a <code>ui:include</code>, or the source of a Facelets tag.
+  <p class="changed_added_2_0">Use this tag to create a component and
+  specify a filename for the component as either the source of a
+  <code>ui:include</code>, or the source of a Facelets tag.
   </p>
-</div>
 ]]>
         </description>
         <name>
@@ -260,7 +272,15 @@
                 <![CDATA[
 <div class="changed_added_2_0">
   <p>
-	Binds the component to a backing bean property, as specified in the JSF specification.
+
+	Binds the component to a backing bean property, as specified in
+	the JSF specification.  <span class="added_modified_2_2">The
+	Java language type of this property must be a class that extends
+	<code>javax.faces.component.UIComponent</code>.  The scope of
+	the bean on which this property resides must be no wider than
+	request scope.  If either of these conditions are not met, the
+	results are undefined.</span>
+
   </p>
 </div>]]>
 
@@ -312,17 +332,23 @@
             <![CDATA[
 <div class="changed_added_2_0">
   <p>
-	Defines a composition that optionally uses a template, as outlined in the description of the ui tag library. Multiple
-	compositions can use the same template, thus encapsulating and reusing layout. JSF disregards everything outside of the
-	composition, which lets developers embed compositions in well-formed XHTML pages that can be viewed in an XHTML viewer,
-	such as Dreamweaver or a browser, without including extraneous elements such as <code>head</code> and <code>body</code>.
+
+<span class="changed_modified_2_2">Defines</span> a composition that
+optionally uses a template, as outlined in the description of the ui tag
+library. Multiple compositions can use the same template, thus
+encapsulating and reusing layout. JSF disregards everything outside of
+the composition, which lets developers embed compositions in well-formed
+XHTML pages that can be viewed in an XHTML viewer, such as Dreamweaver
+or a browser, without including extraneous elements such as
+<code>head</code> and <code>body</code>.
+
   </p>
 	<div class="syntax"><div class="html4strict" style="font-family: monospace;"><ol><li class="li1"><div class="de1"><span class="sc0"><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"</div></li>
 
 <li class="li2"><div class="de2">        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"></span></div></li>
 <li class="li1"><div class="de1"> </div></li>
 <li class="li2"><div class="de2"><span class="sc3"><span class="re1"><html</span> <span class="re0">xmlns</span>=<span class="st0">"http://www.w3.org/1999/xhtml"</span></div></li>
-<li class="li1"><div class="de1">   xmlns:<span class="re0">ui</span>=<span class="st0">"http://java.sun.com/jsf/facelets"</span><span class="re2">></span></span></div></li>
+<li class="li1"><div class="de1">   xmlns:<span class="re0">ui</span>=<span class="st0">"http://xmlns.jcp.org/jsf/facelets"</span><span class="re2">></span></span></div></li>
 
 <li class="li2"><div class="de2"> </div></li>
 <li class="li1"><div class="de1">  <span class="sc3"><span class="re1"><body<span class="re2">></span></span></span></div></li>
@@ -362,7 +388,16 @@
                 <![CDATA[
 <div class="changed_added_2_0">
   <p>
-	A URI that points to a template, also known as a layout, that inserts pieces of the page defined in the composition.
+
+<span class="changed_modified_2_2">A</span> URI that points to a
+template, also known as a layout, that inserts pieces of the page
+defined in the composition. <span class="changed_added_2_2">If the URI
+cannot be resolved a <code>TagAttributeException</code> must be thrown,
+including accurate location information to help the page author resolve
+the problem.  When the template is intended to come from a resource
+library contract, the value of this attribute must be an absolute path
+starting with "/".</span>
+
   </p>
 </div>]]>
 
@@ -516,7 +551,12 @@
 <div class="changed_added_2_0">
 
 <p>
-	The <code>decorate</code> tag is identical to the <code>composition</code> tag, except that <code>ui:decorate</code>, unlike <code>ui:composition</code>, does not disregard all content outside of the tag. The <code>decorate</code> is useful when you want to decorate some content in a page, for example, you might want to decorate a list of items, like this:
+<span class="changed_modified_2_2">The</span> <code>decorate</code> tag
+is identical to the <code>composition</code> tag, except that
+<code>ui:decorate</code>, unlike <code>ui:composition</code>, does not
+disregard all content outside of the tag. The <code>decorate</code> is
+useful when you want to decorate some content in a page, for example,
+you might want to decorate a list of items, like this:
 	
 <div class="syntax"><div class="html4strict" style="font-family: monospace;"><ol><li class="li1"><div class="de1">
 	
@@ -551,7 +591,15 @@ be used to decorate pieces of a page.
 
                 <![CDATA[
 <div class="changed_added_2_0">
-A URI that points to a template, also known as a layout, that inserts pieces of the page defined in the decorator.
+
+<span class="changed_modified_2_2">A</span> URI that points to a
+template, also known as a layout, that inserts pieces of the page
+defined in the decorator. <span class="changed_added_2_2">If the URI
+cannot be resolved a <code>TagAttributeException</code> must be thrown,
+including accurate location information to help the page author resolve
+the problem.  When the template is intended to come from a resource
+library contract, the value of this attribute must be an absolute path
+starting with "/".</span>
 
 </div>]]>
 
@@ -560,7 +608,7 @@ A URI that points to a template, also known as a layout, that inserts pieces of
 				template
             </name>
             <required>
-				false
+				true
             </required>
             <deferred-value>
                 <type>
@@ -578,7 +626,7 @@ A URI that points to a template, also known as a layout, that inserts pieces of
 
             <![CDATA[
 <div class="changed_added_2_0">
-<p>The <code>fragment</code> tag is identical to the <code>component</code> tag, except that <code>ui:fragment</code>, unlike <code>ui:component</code>, JSF does not disregard all content outside of the tag.</p>
+<p><span class="changed_modified_2_2">The</span> <code>fragment</code> tag is identical to the <code>component</code> tag, except that <code>ui:fragment</code>, unlike <code>ui:component</code>, JSF does not disregard all content outside of the tag.</p>
 </div>
 ]]>
         </description>
@@ -617,7 +665,15 @@ that it uses for all components.
 
                 <![CDATA[
 <div class="changed_added_2_0">
-Binds the component to a backing bean property, as specified in the JSF specification.
+
+        <p>Binds the component to a backing bean property, as specified
+        in the JSF specification. <span class="changed_added_2_2">The
+	Java language type of this property must be a class that extends
+	<code>javax.faces.component.UIComponent</code>.  The scope of
+	the bean on which this property resides must be no wider than
+	request scope.  If either of these conditions are not met, the
+	results are undefined.</span></p>
+
 </div>]]>
 
             </description>
@@ -692,9 +748,17 @@ in the same directory as <code>login.xhtml</code>.
             <description>
 
                 <![CDATA[
-<div class="changed_added_2_0">
-The filename of an XHTML page to include. The filename is relative to the XHTML page that was originally loaded.
-</div>]]>
+
+<p>
+
+<span class="changed_added_2_0">The filename of an XHTML page to
+include. The filename is relative to the XHTML page that was originally
+loaded.</span> <span class="changed_added_2_2">When the included file is
+intended to come from a resource library contract, the value of this
+attribute must be an absolute path starting with "/".</span>
+
+</p>
+]]>
 
             </description>
             <name>
@@ -758,11 +822,14 @@ that the whole template client will be inserted.
         <description>
 
             <![CDATA[
-<div class="changed_added_2_0">
-<p>Use this tag to pass parameters to an included file (using <code>ui:include</code>), or a template
-(linked to either a composition or decorator). Embed <code>ui:param</code> tags in either <code>ui:include</code>,
-<code>ui:composition</code>, or <code>ui:decorate</code> to pass the parameters.
-</div>
+
+<p><span class="changed_modified_2_0_rev_a changed_added_2_0">Use</span>
+<span class="changed_added_2_0">this tag to pass parameters to an
+included file (using <code>ui:include</code>), or a template (linked to
+either a composition or decorator). Embed <code>ui:param</code> tags in
+either <code>ui:include</code>, <code>ui:composition</code>, or
+<code>ui:decorate</code> to pass the parameters.</span></p>
+
 ]]>
         </description>
         <name>
@@ -776,15 +843,14 @@ that the whole template client will be inserted.
 
                 <![CDATA[
 <div class="changed_added_2_0">
-The name of the parameter.
+<span class="changed_modified_2_0_rev_a">The</span> name of the parameter.
 </div>]]>
 
             </description>
             <name>
 				name
             </name>
-            <required>
-            </required>
+            <required>true </required>
             <deferred-value>
                 <type>
                     java.lang.String
@@ -797,15 +863,15 @@ The name of the parameter.
 
                 <![CDATA[
 <div class="changed_added_2_0">
-The value of the parameter. Notice that this attribute's value can be an EL expression, which
-means that you can pass objects to either an included file or a template.
-</div>]]>
+<span class="changed_modified_2_0_rev_a">The</span> value of the
+parameter. Notice that this attribute's value can be an EL expression,
+which means that you can pass objects to either an included file or a
+template.  </div>]]>
             </description>
             <name>
 				value
             </name>
-            <required>
-            </required>
+            <required>true</required>
             <deferred-value>
                 <type>
                     java.lang.String
@@ -823,7 +889,7 @@ means that you can pass objects to either an included file or a template.
             <![CDATA[
 <div class="changed_added_2_0">
 	
-<p>Use this tag as an alternative to <code>h:dataTable</code> or
+<p><span class="changed_modified_2_2">Use</span> this tag as an alternative to <code>h:dataTable</code> or
 <code>c:forEach</code>, especially when you are using the
 <code>jsfc</code> feature of Facelets. You can specify this component as
 the value of the <code>jsfc</code> attribute, like this:
@@ -873,8 +939,10 @@ collection.</p>
 <div class="changed_added_2_0">
 
 <p>Read-write property setting the size of the collection to iterate.
-If this value is less than the actual size of the collection, a
-<code>FacesException</code> must be thrown.</p>
+<span class="changed_added_2_2">
+The value of this attribute must be less than or equal to the actual
+size of the collection, or a <code>FacesException</code> must be thrown.</p>
+</span>
 
 </div>]]>
 
@@ -1016,28 +1084,6 @@ is contained in a <code>ui:remove</code> tag.</p>
         <body-content>
             JSP
         </body-content>
-        <attribute>
-            <description>
-
-                <![CDATA[
-<div class="changed_added_2_0">
-
-
-</div>]]>
-
-            </description>
-            <name>
-            </name>
-            <required>
-	
-            </required>
-            <deferred-value>
-                <type>
-                    java.lang.String
-                </type>
-            </deferred-value>
-        </attribute>
-
   </tag>
 
 </taglib>
diff --git a/jsf-ri/conf/share/xhtml/default.dtd b/jsf-ri/conf/share/xhtml/default.dtd
index 71d2a14..a45cd8f 100644
--- a/jsf-ri/conf/share/xhtml/default.dtd
+++ b/jsf-ri/conf/share/xhtml/default.dtd
@@ -1,43 +1,43 @@
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
- Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
 
- Contributor(s):
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
- 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.
 -->
 
 <!-- Allow any element -->
diff --git a/jsf-ri/conf/test/cactus.properties b/jsf-ri/conf/test/cactus.properties
index 7180228..4ddf08f 100644
--- a/jsf-ri/conf/test/cactus.properties
+++ b/jsf-ri/conf/test/cactus.properties
@@ -1,3 +1,43 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
 # Configuration file for J2EEUnit.
 
 # Each project using J2EEUnit need to have such a file put in the CLASSPATH
diff --git a/jsf-ri/conf/test/web.xml b/jsf-ri/conf/test/web.xml
index 984b248..e7019a7 100644
--- a/jsf-ri/conf/test/web.xml
+++ b/jsf-ri/conf/test/web.xml
@@ -1,41 +1,45 @@
 <?xml version="1.0" encoding="ISO-8859-1"?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
--->
 
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
 
 <web-app xmlns="http://java.sun.com/xml/ns/javaee"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
@@ -53,7 +57,7 @@
     </context-param>
     <context-param>
         <param-name>com.sun.faces.enableThreading</param-name>
-        <param-value>true</param-value>
+        <param-value>false</param-value>
     </context-param>
     <context-param>
         <param-name>javax.faces.PROJECT_STAGE</param-name>
@@ -68,6 +72,10 @@
         <param-value>true</param-value>
     </context-param>
     <context-param>
+        <param-name>com.sun.faces.disableClientStateEncryption</param-name>
+        <param-value>true</param-value>
+    </context-param>
+    <context-param>
         <param-name>com.sun.faces.generateUniqueServerStateIds</param-name>
         <param-value>false</param-value>
     </context-param>
diff --git a/jsf-ri/conf/xslt/facelets1_0-2_0toSchema.xsl b/jsf-ri/conf/xslt/facelets1_0-2_0toSchema.xsl
index 9c9d71e..05a8579 100644
--- a/jsf-ri/conf/xslt/facelets1_0-2_0toSchema.xsl
+++ b/jsf-ri/conf/xslt/facelets1_0-2_0toSchema.xsl
@@ -1,40 +1,45 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- *
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- *
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- *
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- *
- * Contributor(s):
- *
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
-  -->
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
 
 <!--
 
@@ -45,7 +50,7 @@
      <taglib xmlns="http://java.sun.com/xml/ns/javaee"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
-         http://java.sun.com/xml/ns/javaee/web-facelettaglibrary_2_0.xsd">
+         http://java.sun.com/xml/ns/javaee/web-facelettaglibrary_2_2.xsd">
   2. Change the namespace of all elements to the default of
      http://java.sun.com/xml/ns/javaee
 
@@ -59,8 +64,8 @@
         <xsl:element name="facelet-taglib"
                      namespace="http://java.sun.com/xml/ns/javaee">
             <xsl:attribute name="xsi:schemaLocation"
-                           namespace="http://www.w3.org/2001/XMLSchema-instance">http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facelettaglibrary_2_0.xsd</xsl:attribute>
-            <xsl:attribute name="version">2.0</xsl:attribute>
+                           namespace="http://www.w3.org/2001/XMLSchema-instance">http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facelettaglibrary_2_2.xsd</xsl:attribute>
+            <xsl:attribute name="version">2.2</xsl:attribute>
             <xsl:apply-templates select="*"/>
         </xsl:element>
     </xsl:template>
@@ -76,4 +81,4 @@
         </xsl:element>
     </xsl:template>
 
-</xsl:stylesheet>
\ No newline at end of file
+</xsl:stylesheet>
diff --git a/jsf-ri/conf/xslt/jsf1_0-1_1toSchema.xsl b/jsf-ri/conf/xslt/jsf1_0-1_1toSchema.xsl
index 1bfc0fa..b4fcec2 100644
--- a/jsf-ri/conf/xslt/jsf1_0-1_1toSchema.xsl
+++ b/jsf-ri/conf/xslt/jsf1_0-1_1toSchema.xsl
@@ -1,40 +1,45 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- *
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- *
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- *
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- *
- * Contributor(s):
- *
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
-  -->
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
 
 <!--
 
@@ -76,4 +81,4 @@
         </xsl:element>
     </xsl:template>
 
-</xsl:stylesheet>
\ No newline at end of file
+</xsl:stylesheet>
diff --git a/jsf-ri/conf/xslt/merge-config.xsl b/jsf-ri/conf/xslt/merge-config.xsl
index b5617bf..d4b8350 100644
--- a/jsf-ri/conf/xslt/merge-config.xsl
+++ b/jsf-ri/conf/xslt/merge-config.xsl
@@ -1,32 +1,48 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
- The contents of this file are subject to the terms
- of the Common Development and Distribution License
- (the License). You may not use this file except in
- compliance with the License.
- 
- You can obtain a copy of the License at
- https://javaserverfaces.dev.java.net/CDDL.html or
- legal/CDDLv1.0.txt. 
- See the License for the specific language governing
- permission and limitations under the License.
- 
- When distributing Covered Code, include this CDDL
- Header Notice in each file and include the License file
- at legal/CDDLv1.0.txt.    
- If applicable, add the following below the CDDL Header,
- with the fields enclosed by brackets [] replaced by
- your own identifying information:
- "Portions Copyrighted [year] [name of copyright owner]"
- 
- [Name of File] [ver.__] [Date]
- 
- Copyright 2005-2010 Sun Microsystems Inc. All Rights Reserved
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2005-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
 
 <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
-                xmlns:jsf="http://java.sun.com/xml/ns/javaee"
+                xmlns:jsf="http://xmlns.jcp.org/xml/ns/javaee"
                 version="1.0">
     <xsl:output method="xml" indent="yes"/>
 
diff --git a/jsf-ri/conf/xslt/prune-tool-data.xsl b/jsf-ri/conf/xslt/prune-tool-data.xsl
index cd319ad..f310bc1 100644
--- a/jsf-ri/conf/xslt/prune-tool-data.xsl
+++ b/jsf-ri/conf/xslt/prune-tool-data.xsl
@@ -1,28 +1,44 @@
 <?xml version="1.0"?>
-
 <!--
- The contents of this file are subject to the terms
- of the Common Development and Distribution License
- (the License). You may not use this file except in
- compliance with the License.
- 
- You can obtain a copy of the License at
- https://javaserverfaces.dev.java.net/CDDL.html or
- legal/CDDLv1.0.txt. 
- See the License for the specific language governing
- permission and limitations under the License.
- 
- When distributing Covered Code, include this CDDL
- Header Notice in each file and include the License file
- at legal/CDDLv1.0.txt.    
- If applicable, add the following below the CDDL Header,
- with the fields enclosed by brackets [] replaced by
- your own identifying information:
- "Portions Copyrighted [year] [name of copyright owner]"
- 
- [Name of File] [ver.__] [Date]
- 
- Copyright 2005-2010 Sun Microsystems Inc. All Rights Reserved
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2005-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
 
 <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
diff --git a/jsf-ri/docs/Copyright.html b/jsf-ri/docs/Copyright.html
new file mode 100644
index 0000000..a18906d
--- /dev/null
+++ b/jsf-ri/docs/Copyright.html
@@ -0,0 +1,169 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+  <title>Copyright Notice</title>
+</head>
+<body bgcolor="#ffffff">
+<h3>Copyright Information</h3>
+<p>© 2005, Sun Microsystems, Inc. All rights reserved.<br>
+901 San Antonio Rd., Palo Alto, California 94303 U.S.A.</p>
+<p>This document is protected by copyright. No part of this document
+may be reproduced in any form by any means without prior written
+authorization of Sun and its licensors, if any.</p>
+<p>The information described in this document may be protected by one
+or more U.S. patents, foreign patents, or pending applications.</p>
+<h3>Trademarks</h3>
+<p>Sun, Sun Microsystems, the Sun Logo, Java, and Java Naming and
+Directory Interface are trademarks or registered trademarks of Sun
+Microsystems, Inc. in the U.S. and other countries. UNIX is a
+registered trademark in the United States and other countries,
+exclusively licensed through X/Open Company, Ltd. </p>
+<p>RESTRICTED RIGHTS LEGEND: Use, duplication, or disclosure by the
+U.S. Government is subject to restrictions of FAR 52.227-14(g)(2)(6/87)
+and FAR 52.227-19(6/87), or DFAR 252.227-7015(b)(6/95) and DFAR
+227.7202-3(a).</p>
+<p>DOCUMENTATION IS PROVIDED "AS IS" AND ALL EXPRESS OR IMPLIED
+CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING ANY IMPLIED
+WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR
+NON-INFRINGEMENT, ARE DISCLAIMED, EXCEPT TO THE EXTENT THAT SUCH
+DISCLAIMERS ARE HELD TO BE LEGALLY INVALID.</p>
+<h3>Other Notices</h3>
+<p><strong>Relaxer Software</strong></p>
+<p>"This product includes software developed by ASAMI, Tomoharu (<a
+ href="http://www.relaxer.org/">http://www.relaxer.org/</a>)." </p>
+<p>Relaxer Software, Copyright © 2000, 2001 Tomoharu ASAMI. All rights
+reserved.</p>
+<p>Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:</p>
+<ol>
+  <p></p>
+  <li>Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+  </li>
+  <p></p>
+  <p></p>
+  <li>Redistributions in binary form must reproduce the above copyright
+notice, this list of conditions and the following disclaimer in the
+documentation and/or other materials provided with the distribution.
+  </li>
+  <p></p>
+  <p></p>
+  <li>The end-user documentation included with the redistribution, if
+any, must include the following acknowledgment:
+    <blockquote>"This product includes software developed by ASAMI,
+Tomoharu (http://www.relaxer.org/)."
+    </blockquote>
+  </li>
+  <p></p>
+</ol>
+<p><strong>The Apache Software License, Version 1.1</strong></p>
+<p>Copyright © 2000 The Apache Software Foundation. All rights reserved.</p>
+<p>Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:</p>
+<ol>
+  <p>
+  </p>
+  <li>Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer. </li>
+  <p></p>
+  <p>
+  </p>
+  <li>Redistributions in binary form must reproduce the above copyright
+notice, this list of conditions and the following disclaimer in the
+documentation and/or other materials provided with the distribution.
+  </li>
+  <p></p>
+  <p>
+  </p>
+  <li>The end-user documentation included with the redistribution, if
+any, must include the following acknowledgment: "This product includes
+software developed by the Apache Software Foundation
+(http://www.apache.org/)." Alternately, this acknowledgment may appear
+in the software itself, if and wherever such third-party
+acknowledgments normally appear.
+  </li>
+  <p></p>
+  <p>
+  </p>
+  <li>The names "SOAP" and "Apache Software Foundation" must not be
+used to endorse or promote products derived from this software without
+prior written permission. For written permission, please contact
+apache at apache.org.
+  </li>
+  <p></p>
+  <p>
+  </p>
+  <li>Products derived from this software may not be called "Apache",
+nor may "Apache" appear in their name, without prior written permission
+of the Apache Software Foundation.
+  </li>
+  <p></p>
+</ol>
+<p>
+THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+</p>
+<p>
+This software consists of voluntary contributions made by many
+individuals on behalf of the Apache Software Foundation and was
+originally based on software copyright © 2000, International
+Business Machines, Inc., http://www.apache.org. For more
+information on the Apache Software Foundation, please see
+<a href="">http://www.apache.org/</a>.
+</p>
+</body>
+</html>
diff --git a/jsf-ri/docs/Installation.html b/jsf-ri/docs/Installation.html
new file mode 100644
index 0000000..ec6e6ed
--- /dev/null
+++ b/jsf-ri/docs/Installation.html
@@ -0,0 +1,572 @@
+<!DOCTYPE html PUBLIC "-//w3c//dtd html 4.0 transitional//en">
+<html>
+<head>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+  <meta content="text/html; charset=iso-8859-1"
+ http-equiv="Content-Type">
+  <meta
+ content="Mozilla/4.79C-CCK-MCD  [en] (X11; U; SunOS 5.8 sun4u) [Netscape]"
+ name="GENERATOR">
+  <title>JavaServer Faces Technology 1.1 FCS Installallation
+Instructions</title>
+  <link href="style/default.css" type="text/css" rel="stylesheet">
+</head>
+<body style="background-color: rgb(255, 255, 255);">
+<center>
+<h1>JavaServer<sup><font size="-1">TM</font></sup> Faces Technology
+1.1_01 FCS<br>
+Installation Instructions</h1>
+</center>
+<hr>
+<br>
+<p>
+<a name="14145"></a>Revised: 20040513
+</p>
+<p>For updates to these instructions, please see the online version, <a
+ href="http://java.sun.com/j2ee/javaserverfaces/docs/Installation.html">
+JavaServer Faces Technology 1.1_01 Installation Instructions</a>.
+</p>
+<p></p>
+<p><a name="13552"></a>Please refer to the <a
+ href="http://java.sun.com/j2ee/javaserverfaces/docs/ReleaseNotes.html">Release
+Notes</a>, located in your download bundle, for information regarding
+supported
+operating
+systems, required software, limitations and bugs. <br>
+</p>
+<h2>Table of Contents:</h2>
+<h4>Using JavaServer Faces Technology with the Sun Java<font size="-2"><sup>TM</sup></font>
+System Application Server, Platform Edition 8</h4>
+<ul>
+  <li><a href="#Installing_Java_Server_Faces_Technology_AS"><big>Installing
+Java Server Faces Technology in the Application Server</big></a></li>
+  <li><a href="#Running_the_Examples_in_App_Server"><big>Running the
+Pre-packaged Example WAR Files in the Application Server</big></a></li>
+  <li><a href="#Building_and_Running_the_Examples_AS"><big>Building and
+Running the Examples with the Application Server</big></a></li>
+</ul>
+<h4>Using JavaServer Faces Technology with the Java<font size="-2"><sup>TM</sup></font>
+Web Services Developer Pack (Java WSDP)</h4>
+<ul>
+  <li><a href="#Installing_JavaServer_Faces_Technology"><big>Installing
+JavaServer Faces in Java WSDP</big></a></li>
+  <li><a href="#Running_the_Examples_in_JWSDP"><big>Running the
+Pre-packaged Example WAR files in Java WSDP</big></a></li>
+  <li><a href="#Building_and_Running_the_Examples"><big>Building and
+Running the Examples with the Java WSDP</big></a></li>
+</ul>
+<h4>Using JavaServer Faces Technology with Other Containers</h4>
+<ul>
+  <li><a href="#Installing_Building_and_Running_the"><big>Installing,
+Building, and Running the Examples in a Different Container</big></a></li>
+</ul>
+<hr style="width: 100%; height: 2px;">
+<h1><a name="Installing_Java_Server_Faces_Technology_AS"></a>Installing
+JavaServer Faces Technology in the Application Server<br>
+</h1>
+<ol>
+  <li>Download the <a
+ href="http://java.sun.com/j2ee/1.4/download.html#nb">Application Server</a>.</li>
+  <li>Follow the installation
+instructions provided with the Application Server.</li>
+  <li>Download the <a
+ href="http://java.sun.com/j2ee/javaserverfaces/download.html">JavaServer
+Faces Technology 1.1_01 ZIP file</a>.</li>
+  <li>Archive or remove the the old JavaServer Faces Technology release
+JAR files
+located in the <code>lib</code> directory of your Application Server
+installation. These JAR files are <tt>jsf-api.jar</tt> and <tt>jsf-impl.jar</tt>.<br>
+  </li>
+  <li>Unzip the JavaServer Faces Technology 1.1_01 ZIP file and copy
+the <code>jsf-api.jar</code> and <code>jsf-impl.jar</code> files from
+the <code>lib</code> directory of your JavaServer Faces Technology FCS
+1.1_01 installation to the <code>lib</code> directory of your
+Application Server installation. If you have paths to these files
+already set in your environment, make sure to update the paths to point
+to the new JAR files in the <code>lib</code> directory of the
+Application Server installation.<br>
+  </li>
+</ol>
+<h1><a name="Running_the_Examples_in_App_Server"></a>
+Running the Pre-packaged Example WAR Files in the Application Server<br>
+</h1>
+The <code>samples</code> directory of your JavaServer Faces Technology
+FCS 1.1_01 installation contains
+a set of WAR files that were packaged from the example source, which is
+provided in the subdirectories of the <code>samples</code> directory.
+To run the pre-packaged WAR files, you need to deploy them to the
+server. The Application Server gives you three ways to deploy:
+<ul>
+  <li type="disc">Copy the WAR file to the <code>autodeploy</code>
+directory
+  </li>
+  <li type="disc">Run <code>asadmin deploy</code> with the path to the
+WAR file
+  </li>
+  <li type="disc">Launch <code>deploytool</code> and deploy the WAR
+file from there
+  </li>
+</ul>
+<br>
+To deploy using <code>autodeploy</code>, start the server and then
+simply copy the WAR file to the
+<code>domains/domain1/autodeploy</code> directory of your Application
+Server installation.
+<p>To deploy using <code>asadmin</code>, start the server and run this
+command:
+</p>
+<pre>	asadmin deploy <full path to the WAR file><br></pre>
+<p>
+You can also deploy a pre-packaged WAR file using <code>deploytool</code>,
+a tool that also allows you to
+package an application WAR file. To deploy a pre-packaged WAR file
+using <code>deploytool</code>:
+</p>
+<ol>
+  <li>Start the server.</li>
+  <li>Launch <code>deploytool</code>. (See the Quick Start Guide
+located in the <code>docs</code> directory of your
+Application Server installation for instructions on launching <code>deploytool</code>.)</li>
+  <li>Go to the File Menu, select Open. Browse for and open your WAR
+file.</li>
+  <li>From the tree, select your WAR file.</li>
+  <li>On the General tabbed-pane for this WAR file, enter a context
+root in the Context Root field.
+For example, you could enter <code>/guessNumber</code> as the context
+root for the <code>guessNumber</code> example.
+  </li>
+  <li>Go to the Tools menu and select Deploy.</li>
+</ol>
+<br>
+See the <a
+ href="http://java.sun.com/j2ee/1.4/docs/tutorial/doc/index.html">J2EE
+Tutorial</a> for information on using <code>deploytool</code> to
+package Web applications.
+<p>When the server has finished deploying the application, you can run
+it by specifing the name of the
+WAR file in your Web browser:<br>
+</p>
+<pre>http://localhost:8080/<EXAMPLE NAME>/<br></pre>
+For example, to run <code>cardemo</code>, specify this URL in your Web
+browser:
+<pre>http://localhost:8080/jsf-cardemo/<br></pre>
+If you used <code>deploytool</code> to deploy the example, use the
+context root that you gave
+it in the URL. For example, if you entered the context root <code>/guessNumber</code>,
+enter the
+following in your Web browser:
+<pre>http://localhost:8080/guessNumber<br></pre>
+<h1><a name="Building_and_Running_the_Examples_AS"></a>Building and
+Running the Examples Using the Application Server<br>
+</h1>
+<p>To build one of the samples, you need to run its <tt>
+build.xml</tt> file using the <tt>
+asant</tt> tool, which is a make tool included with the Application
+Server.<br>
+</p>
+<p>
+</p>
+<p>When <code>asant</code> builds the application, it copies files to
+a temporary <tt>
+build</tt> directory. This directory contains an exact image of the
+binary distribution for your JavaServer Faces application. When <code>asant</code>
+builds the WAR file, it packages all the files from the <tt>
+build</tt> directory into the WAR file while preserving the directory
+structure contained in the <tt>
+build</tt> directory</p>
+<p>To build the samples you first need to enter some paths
+in the <code>build.properties</code> file:</p>
+<ol>
+  <li>Make sure you have the necessary preconditions as listed in the <a
+ href="http://java.sun.com/j2ee/javaserverfaces/docs/ReleaseNotes.html">ReleaseNotes</a>.
+  </li>
+  <li>Copy <code>build.properties.sample</code> to <code>build.properties</code>.</li>
+  <li>In <code>build.properties</code>, set the <code>tomcat.home</code>
+property to the location of your Application Server installation.</li>
+  <li>Set the other properties as shown here:
+    <pre>  	jsf-api.jar=${tomcat.home}/lib/jsf-api.jar<br>	jsf-impl.jar=${tomcat.home}/lib/jsf-impl.jar<br>	commons-logging.jar=${tomcat.home}/lib/appserv-rt.jar<br>	commons-digester.jar=${tomcat.home}/lib/appserv-rt.jar<br>	commons-beanutils.jar=${tomcat.home}/lib/appserv-rt.jar<br>	commons-collections.jar=${tomcat.home}/lib/appserv-rt.jar<br>	jstl.jar=${tomcat.home}/lib/appserv-jstl.jar<br>	standard.jar=${tomcat.home}/lib/appserv-jstl.jar<br>	servlet.jar=${tomcat.home}/lib/j2ee.jar<br> [...]
+  </li>
+</ol>
+<p>To build a sample WAR file and deploy it:</p>
+<ol>
+  <li>Go to the directory of the sample you want to build. </li>
+  <li>At the command line, run the default<tt></tt> target:
+    <pre>asant</pre>
+  </li>
+  <li>The WAR file of the sample you just built will overwrite the
+corresponding pre-packaged WAR file in the <code>samples</code>
+directory of your JavaServer Faces Technology installation</li>
+  <li>Follow the instructions in <a
+ href="#Running_the_Examples_in_App_Server">Running the Pre-Packaged
+Example WAR Files in the Application Server</a> to run the application
+WAR file.</li>
+</ol>
+<h1><a name="Installing_JavaServer_Faces_Technology"></a>Installing
+JavaServer Faces Technology in Java WSDP<br>
+</h1>
+<ol>
+  <li>Download the <a
+ href="http://java.sun.com/webservices/downloads/webservicespack.html">Java
+WSDP</a>.</li>
+  <li>Follow the Installation
+Instructions for the Java WSDP.</li>
+  <li>Update your path so that <code>JWSDP_HOME</code> points to
+the location of your Java WSDP installation.</li>
+  <li>Download the <a
+ href="http://java.sun.com/j2ee/javaserverfaces/download.html">JavaServer
+Faces 1.1_01 ZIP file</a>.</li>
+  <li>Archive or remove the the old JavaServer Faces release
+located in <code>JWSDP_HOME/jsf</code><br>
+  </li>
+  <li>Remove any serialized JavaServer Faces application files from the
+    <code>work</code> directory of Java WSDP.</li>
+  <li>Unzip the JavaServer Faces 1.1_01 ZIP file into <code>JWSDP_HOME</code>
+and rename the base directory to "<code>jsf</code>"<br>
+  </li>
+</ol>
+<h1><a name="Running_the_Examples_in_JWSDP"></a>Running the Examples in
+the Java WSDP<br>
+</h1>
+To run one of the samples,
+<ol>
+  <li>Go to the  <tt>JWSDP_HOME/bin</tt> directory.<br>
+    <br>
+  </li>
+  <li>In a terminal window start the web server. <br clear="all">
+    <br clear="all">
+If you are on a Unix platform, invoke the following command to start
+the web server:<br>
+    <br>
+    <tt>catalina.sh run </tt><br>
+    <br>
+If you are running Windows, invoke the following command to start the
+web server:<br clear="all">
+    <br>
+    <tt>catalina run</tt> <br>
+    <br>
+    <br>
+  </li>
+  <li>Wait for the copyright license to display in your terminal window.<br>
+    <br>
+  </li>
+  <li>Launch your browser.<br>
+    <br>
+  </li>
+  <li>You can find a page containing links to the JavaServer Faces
+sample programs on your default server port:</li>
+</ol>
+<div style="margin-left: 40px;"><code>http://localhost:8080</code><br>
+<br>
+You can also run each sample individually by specifing the name of the
+WAR file in your web browser:<br>
+</div>
+<div style="margin-left: 40px;"><tt><br>
+http://localhost:8080/<EXAMPLE NAME>/ </tt><br>
+</div>
+<tt> <br>
+</tt>
+<div style="margin-left: 40px;"><tt> </tt>For example, this is the
+address
+you enter if you are running the cardemo:<br>
+<br>
+<tt>http://localhost:8080/jsf-cardemo/</tt>
+</div>
+<p style="margin-left: 40px;">Please note that the samples
+are provided as a proof-of-concept rather than a best-practices guide
+for writing JavaServer Faces applications.
+</p>
+<h1><a name="Building_and_Running_the_Examples"></a>Building and
+Running the Examples With the Java WSDP</h1>
+<p>To build one of the samples, you need to run its <tt>
+build.xml</tt> file using <tt>
+Ant</tt>, which is a portable make tool.<br>
+</p>
+<p>
+</p>
+<p>Like the <code>asant</code> tool, when Ant builds the application
+it copies files to a temporary <tt>
+build</tt> directory. When Ant
+builds the WAR file, it packages all the files from the <tt>
+build</tt> directory into the WAR file.
+</p>
+<p>To build the samples you first need to enter some paths
+in the <code>build.properties</code> file:</p>
+<ol>
+  <li>Make sure you have the necessary preconditions as listed in the <a
+ href="http://java.sun.com/j2ee/javaserverfaces/docs/ReleaseNotes.html">ReleaseNotes</a>.
+  </li>
+  <li>Make sure you have <a href="http://ant.apache.org/">Ant version
+1.5.1</a> installed and working on
+your machine.<br>
+  </li>
+  <li>Copy <code>build.properties.sample</code> to <code>build.properties</code>
+and edit accordingly for your system. </li>
+  <li>Go to the directory of the sample you want to build. </li>
+</ol>
+<p>To build a sample WAR file and deploy it:</p>
+<ol>
+  <li>Go to the directory of the sample you want to build. </li>
+  <li>At the command line, run the default<tt></tt> target:
+    <pre>ant</pre>
+  </li>
+  <li>The WAR file of the sample you just built will be placed in the <code>JWSDP_HOME/jsf/samples</code>
+directory.</li>
+  <li>Your application will be automatically deployed in Java WSDP 1.3.</li>
+  <ul>
+    <li>Java WSDP 1.3 includes an XML file for each sample application
+in the <tt>JWSDP_HOME/conf/Catalina/localhost</tt> directory. This
+file causes that application to be automatically deployed when you
+start Tomcat. <br>
+    </li>
+  </ul>
+  <ul>
+    <li>You can manually deploy an application by copying the WAR file
+you just generated to the <code>JWSDP_HOME/webapps</code>
+directory.</li>
+    <ul>
+      <li> When manually deploying under Java WSDP 1.3 make sure to
+remove the corresponding XML file located in the <tt>JWSDP_HOME/conf/Catalina/localhost</tt>
+directory.<br>
+      </li>
+    </ul>
+  </ul>
+  <li>Start the server by either running <tt>
+catalina.sh run</tt> if you are using UNIX or <tt>
+catalina run</tt> if your are using Windows.</li>
+  <li>When the server has started, open your browser and enter this
+URL:
+    <pre>	http://localhost:8080/<EXAMPLE NAME></pre>
+    <br>
+In Java WSDP, you can also find a page
+containing links to the JavaServer Faces samples on your default
+server port:<br>
+    <pre>	http://localhost:8080</pre>
+    <br>
+  </li>
+</ol>
+<h1><a name="Installing_Building_and_Running_the"></a>Installing,
+Building and Running the Examples in Other Containers</h1>
+<ol>
+  <li>Download the <a
+ href="http://java.sun.com/j2ee/javaserverfaces/download.html">
+JavaServer Faces 1.0_01 ZIP file.</a></li>
+  <li>Unzip the file.</li>
+  <li>Copy the <code>build.properties.sample</code> file to <code>build.properties</code>
+and edit it according to your system configuration. Be sure to
+uncomment the <code>build.standalone</code> property in the <code>build.properties</code>
+file. </li>
+  <li>Make sure the following properties in your customized <code>build.properties</code>
+file point to the correct JAR file location according to your system
+configuration:
+    <ul>
+      <li type="disc"><code>tomcat-home</code>: path to your web
+container</li>
+      <li type="disc"><code>jsf-api.jar</code></li>
+      <li type="disc"><code>jsf-impl.jar</code><br>
+      </li>
+      <li type="disc"><code>commons-beanutils.jar</code></li>
+      <li type="disc"><code>commons-digester.jar</code></li>
+      <li type="disc"><code>commons-logging.jar</code></li>
+      <li type="disc"><code>commons-collections.jar</code>: available
+in the <code>lib</code> directory of your JavaServer Faces unzipped
+bundle</li>
+      <li type="disc"><code>jsp.jar</code>: JSP 1.2+ API JAR is
+available from <a href="http://jakarta.apache.org/tomcat/">Jakarta
+Tomcat</a><br>
+      </li>
+      <li type="disc"><code>jstl.jar</code>: JSTL 1.0+ API JAR is
+available from <a
+ href="http://jakarta.apache.org/taglibs/doc/standard-doc/intro.html">Jakarta
+Taglibs</a>. You should use JSTL 1.1 in a container that supports JSP
+2.0. If your container does not support JSP 2.0 then use JSTL 1.0.x.
+The JavaServer Faces standalone samples contain JSTL 1.1 implementation
+jars.</li>
+      <li type="disc"><code>standard.jar</code>: JSTL 1.0+
+Implementation JAR file is available from <a
+ href="http://jakarta.apache.org/taglibs/doc/standard-doc/intro.html">Jakarta
+Taglibs</a>. You should use JSTL 1.1 in a container that supports JSP
+2.0. If your container does not support JSP 2.0 then use JSTL 1.0.x.
+The JavaServer Faces standalone samples contain JSTL 1.1 implementation
+jars.</li>
+      <li type="disc"><code>servlet.jar</code>: Servlet 2.3+ API jar
+available from <a href="http://jakarta.apache.org/tomcat/">Jakarta
+Tomcat</a><br>
+      </li>
+    </ul>
+  </li>
+  <li>If you have previously run JavaServer Faces applications, you
+should remove your web server's cached files before running the new
+release.
+For instance, the cached files in a Java WSDP container will be located
+in <code>JWSDP_HOME/work/Catalina/localhost/jsf-*</code>.
+It is safe to remove all these files before restarting your
+server. Read your container's documentation to find out where the
+cached files are located in your specific container.</li>
+  <li>Follow the <a href="#Building_and_Running_the_Examples">Building
+and Running the Examples With Java WSDP</a> section <br>
+You will need to rebuild each of the
+JavaServer Faces sample applications with
+the <code>build.standalone</code> property set to "<code>true</code>"
+so that each sample's web archive includes all of the jar file
+dependencies. This step is not necessary in a JWSDP container since all
+the jar dependencies that JavaServer Faces requires are already part of
+the container.<br>
+    <br>
+Note: the <a href="#Building_and_Running_the_Examples">Building
+and Running the Examples With Java WSDP</a> section makes reference to <code>JWSDP_HOME</code>,
+substitute your container's home directory for <code>JWSDP_HOME</code>.
+You will also need to manually deploy the sample WAR files into your
+container's <code>webapps</code> directory<br>
+  </li>
+</ol>
+<hr>
+<p>Copyright © 2004 Sun Microsystems, Inc., 4150 Network
+Circle, Santa
+<br>
+Clara, California 95054, U.S.A. All rights reserved.
+</p>
+<p>Sun Microsystems, Inc. has intellectual property rights relating to
+<br>
+technology embodied in this product. In particular, and without
+<br>
+limitation, these intellectual property rights may include one or more
+<br>
+of the U.S. patents listed at http://www.sun.com/patents and one or
+more
+<br>
+additional patents or pending patent applications in the U.S. and other
+<br>
+countries.
+</p>
+<p>This product is distributed under licenses restricting its use,
+copying
+<br>
+distribution, and decompilation. No part of this product may be
+<br>
+reproduced in any form by any means without prior written authorization
+<br>
+of Sun and its licensors, if any.
+</p>
+<p>Third-party software, including font technology, is copyrighted and
+<br>
+licensed from Sun suppliers.
+</p>
+<p>Sun, Sun Microsystems, the Sun logo, the Java Coffee Cup logo,
+<br>
+JavaServer, and Java are trademarks or registered trademarks of Sun
+<br>
+Microsystems, Inc. in the U.S. and other countries.
+</p>
+<p>Federal Acquisitions: Commercial Software - Government Users Subject
+to
+<br>
+Standard License Terms and Conditions.
+</p>
+<hr width="100%">
+<p>Copyright © 2004 Sun Microsystems, Inc., 4150 Network
+Circle,
+<br>
+Santa Clara, California 95054, Etats-Unis. Tous droits
+réservés.
+</p>
+<p>Sun Microsystems, Inc. a les droits de propriété
+intellectuels
+relatants
+<br>
+à la technologie incorporée dans ce produit. En
+particulier,
+et sans la
+<br>
+limitation, ces droits de propriété intellectuels peuvent
+inclure un ou
+<br>
+plus des brevets américains énumérés
+à
+http://www.sun.com/patents et un
+<br>
+ou les brevets plus supplémentaires ou les applications de
+brevet
+en
+<br>
+attente dans les Etats - Unis et les autres pays.
+</p>
+<p>Ce produit ou document est protégé par un copyright et
+distribué avec
+<br>
+des licences qui en restreignent l'utilisation, la copie, la
+<br>
+distribution, et la décompilation. Aucune partie de ce produit
+ou
+<br>
+document ne peut être reproduite sous aucune forme, par quelque
+moyen
+<br>
+que ce soit, sans l'autorisation préalable et écrite
+de Sun et de ses
+<br>
+bailleurs de licence, s'il y ena.
+</p>
+<p>Le logiciel détenu par des tiers, et qui comprend la
+technologie
+<br>
+relative aux polices de caractères, est protégé
+par un copyright et
+<br>
+licencié par des fournisseurs de Sun.
+</p>
+<p>Sun, Sun Microsystems, le logo Sun, le logo Java Coffee Cup,
+JavaServer,
+<br>
+et Java sont des marques de fabrique ou des marques
+déposées
+de Sun
+<br>
+Microsystems, Inc. aux Etats-Unis et dans d'autres pays.
+<br>
+ 
+<br>
+ 
+</p>
+</body>
+</html>
diff --git a/jsf-ri/docs/QuickStart.html b/jsf-ri/docs/QuickStart.html
new file mode 100644
index 0000000..ec31d01
--- /dev/null
+++ b/jsf-ri/docs/QuickStart.html
@@ -0,0 +1,101 @@
+<html>
+<head>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<title>JavaServer(TM) Faces Quick Start Guide</title>
+</head>
+<body bgcolor=#ffffff>
+ 
+
+<h1>
+<center>
+JavaServer<sup><font size=-2>TM</font></sup> Faces
+<br>
+1.1 Release
+<br>
+Quick Start Guide
+</center>
+</h1>
+<hr>
+Here is a brief guide for getting yourself set up to use JavaServer Faces.  
+Refer to the tutorial for more information on using JavaServer Faces.
+<p>
+<ul>
+<li>
+After downloading the web services pack, set these environment variables:
+<p>
+<tt>JAVA_HOME</tt> = the location of your JDK installation.
+<br>
+<tt>JWSDP_HOME</tt> = the location of your web services pack installation.
+<p>
+For more information on setting up your environment, see the 
+<a href="../ReleaseNotes.html">Web Services Pack Release Notes</a> and the
+Preface of the Web Services Pack tutorial.
+<p><li>
+Add this tag library directive to your JSP pages to reference the JSF tag library:
+<p>
+<tt><%@ taglib uri="http://java.sun.com/jsf/html_basic" prefix="faces" %></tt>
+<p><li>
+See the JavaServer Faces tutorial for help with using the tag library.
+<p><li>
+Create a web application deployment descriptor, called web.xml, to reference 
+<tt>FacesServlet</tt> and <tt>SessionListener</tt>. See
+the example web.xml file in the <tt>docs/examples/web/helloDuke</tt>
+directory for help with writing the web.xml file.  Copy this file to your 
+WEB-INF directory.
+<p><li>
+Add the jsf-api and jsf-ri jar files in <tt>{$JWSP_HOME}/tools/jsfaces</tt> to
+your classpath when you compile your classes, 
+or copy them into the <tt>WEB-INF/lib</tt> directory of your web application
+before you build it.
+</ul>
+
+
+<hr>
+<p>
+<a href="Copyright.html">
+<font size=-1><i>Copyright © 2004 Sun Microsystems, Inc.  
+All rights reserved.</i></font></a>
+
+</body>
+</html>
diff --git a/jsf-ri/docs/ReleaseNotes.html b/jsf-ri/docs/ReleaseNotes.html
new file mode 100644
index 0000000..12f0689
--- /dev/null
+++ b/jsf-ri/docs/ReleaseNotes.html
@@ -0,0 +1,1188 @@
+<!DOCTYPE html PUBLIC "-//w3c//dtd html 4.0 transitional//en">
+<html>
+<head>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+  <meta content="text/html; charset=iso-8859-1"
+ http-equiv="Content-Type">
+  <meta
+ content="Mozilla/4.79C-CCK-MCD  [en] (X11; U; SunOS 5.8 sun4u) [Netscape]"
+ name="GENERATOR">
+  <title>JavaServer Faces 1.2 Release Notes</title>
+  <link href="style/default.css" type="text/css" rel="stylesheet">
+</head>
+<body style="background-color: rgb(255, 255, 255);">
+<center>
+<h1>JavaServer<sup><font size="-1">TM</font></sup> Faces Technology,
+version 1.2<br>
+Release Notes</h1>
+</center>
+<hr>
+<br>
+<a name="14145"></a>For an updated, online version of these release
+notes, see <a
+ href="http://java.sun.com/j2ee/javaserverfaces/docs/ReleaseNotes.html">
+Release Notes</a>
+<p>Revised: 20050818
+</p>
+<p><a name="13552"></a>The purpose of this release is to provide a
+reference implementation of the JavaServer Faces technology framework.
+</p>
+<p>This release of JavaServer Faces technology was developed under
+the Java Community Process(SM) ("JCP(SM)") as <a
+ href="http://jcp.org/jsr/detail/252.jsp">JSR252</a>. </p>
+<h1> Contents</h1>
+<ul>
+  <li> <a href="#operating_systems">Supported Operating Systems</a></li>
+  <li> <a href="#required_software">Required Software</a></li>
+  <li> <a href="#release_includes">What This Release Includes</a></li>
+  <li> <a href="#release_new">What's New in This Release</a></li>
+  <li> <a href="#migrating">Migrating from 1.1_01 to 1.2</a></li>
+  <li> <a href="#issues">Known Issues</a></li>
+</ul>
+<a name="operating_systems"></a>
+<h1>Supported Operating Systems</h1>
+<ul>
+  <li>Solaris 8</li>
+  <li>Solaris 9</li>
+  <li>Windows 2000</li>
+  <li>Windows XP</li>
+  <li>GNU/Linux (Red Hat 7.2)</li>
+</ul>
+<a name="required_software"></a>
+<h1>Required Software</h1>
+This release requires that you install the software listed in the
+following
+table. Only those versions listed in the table have been tested and are
+supported.
+<br>
+ 
+<br>
+ 
+<table border="3">
+  <caption>TABLE 1 Required Software</caption> <tbody>
+    <tr>
+      <th>Software</th>
+      <th>Version
+      <p> </p>
+      </th>
+    </tr>
+    <tr>
+      <td>Java Development Kit (JDK)<br>
+      </td>
+      <td>version 5.0 or later </td>
+    </tr>
+    <tr>
+      <td>Sun Java System Application Server <br>
+      </td>
+      <td>version 9.0<br>
+      </td>
+    </tr>
+    <tr>
+      <td>Microsoft Internet Explorer or Netscape Navigator </td>
+      <td>version 6 (IE) <br>
+version 7 (Netscape)</td>
+    </tr>
+  </tbody>
+</table>
+<table>
+  <tbody>
+    <tr>
+      <td><br>
+      </td>
+    </tr>
+  </tbody>
+</table>
+<p><a name="release_includes"></a>
+</p>
+<h1>What This Release Includes</h1>
+<ul>
+  <li>html_basic.tld: A JSP custom tag library for building
+JavaServer
+Faces applications
+that render to an HTML client.</li>
+  <li>jsf_core.tld: A JSP custom tag library for representing core
+actions
+independent
+of a particular RenderKit.</li>
+  <li>An API and reference implementation that provide user interface
+components, model object management, pluggable rendering, server side
+validation, data conversion, event processing, page flow management,
+and
+custom extensibility for all of these things.</li>
+  <li>A set of demos in the samples directory. Please note that these
+demos
+are provided as a proof-of-concept rather than a best-practices guide
+for writing JavaServer Faces applications. </li>
+</ul>
+<p><a name="release_new"></a>
+</p>
+<h1>What's New in This Release</h1>
+This snapshot of JavaServer Faces Reference implementation includes the
+bug fixes and implementation of issues listed under the General Changes
+section of the JavaServer Faces technology 1.2 PFD access draft plus
+the bug fixes listed in the following table.<br>
+<br>
+<table border="1" style="width: 100%;" cellpadding="2" cellspacing="2">
+  <caption>Table 2: List of Bugs Fixed in this Release<br>
+  </caption><tbody>
+    <tr>
+      <td style="vertical-align: top;"><span style="font-weight: bold;">Issue/Bug
+Number</span><br>
+      </td>
+      <td style="vertical-align: top;"><span style="font-weight: bold;">Summary</span><br>
+      </td>
+    </tr>
+    <tr>
+      <td><a
+ href="https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=10">Issue
+10</a><br>
+      </td>
+      <td>target property on commandLink does not work<br>
+      </td>
+    </tr>
+    <tr>
+      <td><a
+ href="https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=13">Issue
+13</a><br>
+      </td>
+      <td>Taglib generator enhancements<br>
+      </td>
+    </tr>
+    <tr>
+      <td style="vertical-align: top;"><a
+ href="https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=26">Issue
+26</a><br>
+      </td>
+      <td style="vertical-align: top;">Hidden Field - FormRenderer -
+Renderer Dependencies<br>
+      </td>
+    </tr>
+    <tr>
+      <td style="vertical-align: top;"><a
+ href="https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=42">Issue
+42</a><br>
+      </td>
+      <td style="vertical-align: top;">Message list (HtmlMessages) does
+not correctly handle style attribute<br>
+      </td>
+    </tr>
+    <tr>
+      <td><a
+ href="https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=43">Issue
+43</a><br>
+      </td>
+      <td>MessagesRenderer Bug Fixes<br>
+      </td>
+    </tr>
+    <tr>
+      <td><a
+ href="https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=49">Issue
+49</a><br>
+      </td>
+      <td>attribute/property transparency: really slow<br>
+      </td>
+    </tr>
+    <tr>
+      <td><a
+ href="https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=53">Issue
+53</a><br>
+      </td>
+      <td>verbatim tag trims whitespace<br>
+      </td>
+    </tr>
+    <tr>
+      <td><a
+ href="https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=55">Issue
+55</a><br>
+      </td>
+      <td>commandButton image attr don't add context path<br>
+      </td>
+    </tr>
+    <tr>
+      <td style="vertical-align: top;"><a
+ href="https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=56">Issue
+56</a><br>
+      </td>
+      <td style="vertical-align: top;">Fail to validate select one menu
+in a table, if its rendered is false<br>
+      </td>
+    </tr>
+    <tr>
+      <td><a
+ href="https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=63">Issue
+63</a><br>
+      </td>
+      <td>Use of Browser's back-button causes multiple ActionEvents to
+pile up<br>
+      </td>
+    </tr>
+    <tr>
+      <td style="vertical-align: top;"><a
+ href="https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=64">Issue
+64</a><br>
+      </td>
+      <td style="vertical-align: top;">column component metadata
+missing facets<br>
+      </td>
+    </tr>
+    <tr>
+      <td><a
+ href="https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=62">Issue 62</a><br>
+      </td>
+      <td>nested datatable with commandLink
+      <br>
+      </td>
+    </tr>
+    <tr>
+      <td><a
+ href="https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=66">Issue
+66</a><br>
+      </td>
+      <td>Possible optimization regarding execution of PhaseListeners<br>
+      </td>
+    </tr>
+    <tr>
+      <td><a
+ href="https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=67">Issue
+67</a><br>
+      </td>
+      <td>Usability of JSF RI Exceptions and Stack Traces<br>
+      </td>
+    </tr>
+    <tr>
+      <td><a
+ href="https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=68">Issue
+68</a><br>
+      </td>
+      <td>Concurrency issue with CommandLinkRenderer<br>
+      </td>
+    </tr>
+    <tr>
+      <td style="vertical-align: top;"><a
+ href="https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=70">Issue
+70</a><br>
+      </td>
+      <td>HtmlTaglib Generates Release Methods<br>
+      </td>
+    </tr>
+    <tr>
+      <td style="vertical-align: top;"><a
+ href="https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=71">Issue
+71</a><br>
+      </td>
+      <td><span class="moz-txt-link-freetext">Allow JavaScirpt User
+Event Support<br>
+      </span></td>
+    </tr>
+    <tr>
+      <td><a
+ href="https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=73">Issue 73</a><br>
+      </td>
+      <td>Using {0} in the Key/Value pair of the resource bundle does not work
+      <br>
+      </td>
+    </tr>
+    <tr>
+      <td style="vertical-align: top;"><a
+ href="https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=80">Issue
+80</a><br>
+      </td>
+      <td style="vertical-align: top;">LifecycleImple.reload() not
+sufficient for all cases<br>
+      </td>
+    </tr>
+    <tr>
+      <td><a
+ href="https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=82">Issue 82</a><br>
+      </td>
+      <td>h:inputText and immediate="true" not flushing cached backing
+      <br>
+      </td>
+    </tr>
+    <tr>
+      <td><a
+ href="https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=83">Issue 83</a><br>
+      </td>
+      <td>DataTable rendering of columnClasses doesn't work in the header
+      <br>
+      </td>
+    </tr>
+    <tr>
+      <td><a
+ href="https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=84">Issue 84</a><br>
+      </td>
+      <td>Implement 2-StateSavingSecurity
+      <br>
+      </td>
+    </tr>
+    <tr>
+      <td style="vertical-align: top;"><a
+ href="https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=85">Issue
+85</a><br>
+      </td>
+      <td style="vertical-align: top;">ApplicationImpl.createConverter()
+does not throw FacesException<br>
+      </td>
+    </tr>
+    <tr>
+      <td style="vertical-align: top;"><a
+ href="https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=87">Issue
+87</a><br>
+      </td>
+      <td style="vertical-align: top;">Unexpected behaviour with
+disabled selectOneMenu<br>
+      </td>
+    </tr>
+    <tr>
+      <td style="vertical-align: top;"><a
+ href="https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=89">Issue
+89</a><br>
+      </td>
+      <td style="vertical-align: top;">HtmlResponseWriter.writeAttribute()
+throws NPE for null values<br>
+      </td>
+    </tr>
+    <tr>
+      <td style="vertical-align: top;"><a
+ href="https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=91">Issue
+91</a><br>
+      </td>
+      <td style="vertical-align: top;">Don't swallow exceptions inside
+JspExceptions or FacesExceptions<br>
+      </td>
+    </tr>
+    <tr>
+      <td style="vertical-align: top;"><a
+ href="https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=92">Issue
+92</a><br>
+      </td>
+      <td style="vertical-align: top;">MessagesRenderer Does Not Handle
+layout="list"<br>
+      </td>
+    </tr>
+    <tr>
+      <td style="vertical-align: top;"><a
+ href="https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=95">Issue
+95</a><br>
+      </td>
+      <td><span class="moz-txt-link-freetext">RestoreViewPhase.isPostback()
+not good to determine restore view<br>
+      </span></td>
+    </tr>
+    <tr>
+      <td><a
+ href="https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=96">Issue 96</a><br>
+      </td>
+      <td>Remove compile time dependency on commons-logging
+      <br>
+      </td>
+    </tr>
+    <tr>
+      <td><a
+ href="https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=97">Issue 97</a><br>
+      </td>
+      <td>Several classes don't include definition for hashCode
+      <br>
+      </td>
+    </tr>
+    <tr>
+      <td><a
+ href="https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=98">Issue 98</a><br>
+      </td>
+      <td>Redundant comparison to null in two instances of jsf-impl
+      <br>
+      </td>
+    </tr>
+    <tr>
+      <td><a
+ href="https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=99">Issue 99</a><br>
+      </td>
+      <td>Serializable classes don't declare serialVersionUID
+      <br>
+      </td>
+    </tr>
+    <tr>
+      <td><a
+ href="https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=101">Issue 101</a><br>
+      </td>
+      <td>Mutable static fields not final
+      <br>
+      </td>
+    </tr>
+    <tr>
+      <td><a
+ href="https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=102">Issue 102</a><br>
+      </td>
+      <td>Memory wastage using new instances of java.land.Boolean and
+      <br>
+      </td>
+    </tr>
+    <tr>
+      <td><a
+ href="https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=103">Issue 103</a><br>
+      </td>
+      <td>Inner classes with no use of creating class reference could
+      <br>
+      </td>
+    </tr>
+    <tr>
+      <td><a
+ href="https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=104">Issue 104</a><br>
+      </td>
+      <td>Instance final field could be static
+      <br>
+      </td>
+    </tr>
+    <tr>
+      <td><a
+ href="https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=106">Issue 106</a><br>
+      </td>
+      <td>Unread fields
+      <br>
+      </td>
+    </tr>
+    <tr>
+      <td><a
+ href="https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=107">Issue 107</a><br>
+      </td>
+      <td>Unused fields
+      <br>
+      </td>
+    </tr>
+    <tr>
+      <td><a
+ href="https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=108">Issue 108</a><br>
+      </td>
+      <td>Validator API classes define equals but not hashcode
+      <br>
+      </td>
+    </tr>
+    <tr>
+      <td><a
+ href="https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=109">Issue 109</a><br>
+      </td>
+      <td>UISelectOne/UISelectMany methods: possible null pointer dere
+      <br>
+      </td>
+    </tr>
+    <tr>
+      <td><a
+ href="https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=110">Issue 110</a><br>
+      </td>
+      <td>UIComponentBase may have possible redundant null comparison
+      <br>
+      </td>
+    </tr>
+    <tr>
+      <td><a
+ href="https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=113">Issue 113</a><br>
+      </td>
+      <td>API performance: inner classes not using creating class refe
+      <br>
+      </td>
+    </tr>
+    <tr>
+      <td><a
+ href="https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=114">Issue 114</a><br>
+      </td>
+      <td>Unread fields in API classes
+      <br>
+      </td>
+    </tr>
+    <tr>
+      <td><a
+ href="https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=115">Issue 115</a><br>
+      </td>
+      <td>API performance: use entrySet, rather than keySet, iterator
+      <br>
+      </td>
+    </tr>
+    <tr>
+      <td style="vertical-align: top;"><a
+ href="https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=116">Issue
+116</a><br>
+      </td>
+      <td>Colon's not allowed in javascript function name<br>
+      </td>
+    </tr>
+    <tr>
+      <td><a
+ href="https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=121">Issue 121</a><br>
+      </td>
+      <td>Store Session States on a per window and viewid basis
+      <br>
+      </td>
+    </tr>
+    <tr>
+      <td><a
+ href="https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=122">Issue 122</a><br>
+      </td>
+      <td>redirect attribute dissappeared from inputSecret
+      <br>
+      </td>
+    </tr>
+    <tr>
+      <td><a
+ href="https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=123">Issue 123</a><br>
+      </td>
+      <td>ConfigureListener within non JSP 2.1
+      <br>
+      </td>
+    </tr>
+    <tr>
+      <td><a
+ href="https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=124">Issue 124</a><br>
+      </td>
+      <td>Setting a method binding action listener via constructor cau
+      <br>
+      </td>
+    </tr>
+    <tr>
+      <td style="vertical-align: top;"><a
+ href="https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=125">Issue
+125</a><br>
+      </td>
+      <td style="vertical-align: top;">Memory issues<br>
+      </td>
+    </tr>
+    <tr>
+      <td><a
+ href="https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=127">Issue 127</a><br>
+      </td>
+      <td>FacesContext: message Iterators should be order-preserving
+      <br>
+      </td>
+    </tr>
+    <tr>
+      <td style="vertical-align: top;"><a
+ href="https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=128">Issue
+128</a><br>
+      </td>
+      <td style="vertical-align: top;">UIData does not
+restoreDescendantState for descendant facets<br>
+      </td>
+    </tr>
+    <tr>
+      <td><a
+ href="https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=129">Issue 129</a><br>
+      </td>
+      <td>Please check that application.set{Property,Variable}Resolver
+      <br>
+      </td>
+    </tr>
+    <tr>
+      <td><a
+ href="https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=131">Issue 131</a><br>
+      </td>
+      <td>add new passthru attribute "autocomplete"
+      <br>
+      </td>
+    </tr>
+    <tr>
+      <td><a
+ href="https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=133">Issue 133</a><br>
+      </td>
+      <td>Add extension elements to schema
+      <br>
+      </td>
+    </tr>
+    <tr>
+      <td style="vertical-align: top;"><a
+ href="https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=134">Issue
+134</a><br>
+      </td>
+      <td>Optimisations to managed bean creation facility<br>
+      </td>
+    </tr>
+    <tr>
+      <td style="vertical-align: top;"><a
+ href="https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=135">Issue
+135</a> <br>
+      </td>
+      <td>RuntimeException thrown in decode() swallowed<br>
+      </td>
+    </tr>
+    <tr>
+      <td><a
+ href="https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=136">Issue 136</a><br>
+      </td>
+      <td>JSF 1.2 Runs outside of JSP 2.1
+      <br>
+      </td>
+    </tr>
+    <tr>
+      <td><a
+ href="https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=138">Issue 138</a><br>
+      </td>
+      <td>NullPointerException when Restoring Server ViewState
+      <br>
+      </td>
+    </tr>
+    <tr>
+      <td><a
+ href="https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=139">Issue 139</a><br>
+      </td>
+      <td>Call converter on null value
+      <br>
+      </td>
+    </tr>
+    <tr>
+      <td><a
+ href="https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=143">Issue 143</a><br>
+      </td>
+      <td>input request ignored after repeated use of one view
+      <br>
+      </td>
+    </tr>
+    <tr>
+      <td><a
+ href="https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=144">Issue 144</a><br>
+      </td>
+      <td>CommandLink Renderer and XHTML
+      <br>
+      </td>
+    </tr>
+    <tr>
+      <td style="vertical-align: top;"><a
+ href="https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=146">Issue
+146</a><br>
+      </td>
+      <td style="vertical-align: top;">NPE in
+ExternalContextImpl.dispatch() when file not present<br>
+      </td>
+    </tr>
+    <tr>
+      <td><a
+ href="https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=148">Issue 148</a><br>
+      </td>
+      <td>MethodExpressionValidator Exception Management
+      <br>
+      </td>
+    </tr>
+    <tr>
+      <td><a
+ href="https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=149">Issue 149</a><br>
+      </td>
+      <td>FacesContext, ViewHandler & ResponseWriter
+      <br>
+      </td>
+    </tr>
+    <tr>
+      <td><a
+ href="https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=151">Issue 151</a><br>
+      </td>
+      <td>Swallowed exception in ResopnseStateManagerImpl.getTreeStruc
+      <br>
+      </td>
+    </tr>
+    <tr>
+      <td style="vertical-align: top;"><a
+ href="https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=152">Issue
+152</a><br>
+      </td>
+      <td style="vertical-align: top;">UIData preserving request
+attributes<br>
+      </td>
+    </tr>
+    <tr>
+      <td><a
+ href="https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=153">Issue 153</a><br>
+      </td>
+      <td>Enable resource injection in managed bean creation facility
+      <br>
+      </td>
+    </tr>
+    <tr>
+      <td><a
+ href="https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=154">Issue 154</a><br>
+      </td>
+      <td>Faces ELResolver usage at design time
+      <br>
+      </td>
+    </tr>
+    <tr>
+      <td><a
+ href="https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=157">Issue 157</a><br>
+      </td>
+      <td>Artifact in UIViewRoot from pre TCCI days
+      <br>
+      </td>
+    </tr>
+    <tr>
+      <td><a
+ href="https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=158">Issue 158</a><br>
+      </td>
+      <td>Application.getExpressionFactory returns Null
+      <br>
+      </td>
+    </tr>
+    <tr>
+      <td style="vertical-align: top;"><a
+ href="https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=159">Issue
+159</a><br>
+      </td>
+      <td>Nested DataTable expressions resolve wrong<br>
+      </td>
+    </tr>
+    <tr>
+      <td style="vertical-align: top;"><br>
+      </td>
+      <td style="vertical-align: top;">Fix for ClassCastException that
+happens when two portlets are deployed<br>
+      </td>
+    </tr>
+    <tr>
+      <td><a
+ href="https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=162">Issue 162</a><br>
+      </td>
+      <td>Application.createComponent(ValueExpression, FacesContext, S
+      <br>
+      </td>
+    </tr>
+    <tr>
+      <td><a
+ href="https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=163">Issue 163</a><br>
+      </td>
+      <td>Custom ResponseStateManager Does Not Work With RI
+      <br>
+      </td>
+    </tr>
+    <tr>
+      <td><a
+ href="https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=164">Issue 164</a><br>
+      </td>
+      <td>Write a systest that tests the new c:forEach feature
+      <br>
+      </td>
+    </tr>
+    <tr>
+      <td><a
+ href="https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=165">Issue 165</a><br>
+      </td>
+      <td>ViewHandlerImpl Calls StateManagerImpl Deprecated Methods On
+      <br>
+      </td>
+    </tr>
+    <tr>
+      <td><a
+ href="https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=166">Issue 166</a><br>
+      </td>
+      <td>implement c:forEach support.
+      <br>
+      </td>
+    </tr>
+    <tr>
+      <td><a
+ href="https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=167">Issue 167</a><br>
+      </td>
+      <td>Terrible error message on type mismatch.
+      <br>
+      </td>
+    </tr>
+  </tbody>
+</table>
+<br>
+<br>
+<h1><a name="migrating"></a>Migrating From 1.1_01 to 1.2</h1>
+<p>This implementation is 100% compatible with the 1.1_01
+implementation,
+but many bugs have been fixed. If your application dependend on one of
+these bugs, it will need to be changed. Please see the <a
+ href="#release_new">What's New In this Release</a> section.<br>
+</p>
+<p>One of the primary changes in this release is that JavaServer Faces
+technology utilizes the new unified expression language (unified EL) ,
+which is essentially an amalgamation of the JSP EL and the JavaServer
+Faces 1.1_01 EL.  The rest of this section describes how to
+migrate
+your JavaServer Faces 1.1_01 applications to use the unified EL.<br>
+</p>
+<p><br>
+</p>
+<h2>Migrating to the Unified EL</h2>
+For those of you who already have applications that use the JavaServer
+Faces EL, you can be assured that your applications
+are completely backward compatible.  You don't need to make any
+changes to run your applications with the latest version of JavaServer
+Faces technology.<br>
+<br>
+If you plan to modify your current applications to use the unified EL,
+however, there are some things you need to do, which this section
+explains.<br>
+<br>
+<h3>Using the Unified EL in Existing Applications</h3>
+For the page author and application developer, there is nothing that
+you need to do differently in JavaServer Faces technology 1.2
+applications vs.
+JavaServer Faces technology 1.1_01 or
+earlier applications.  The component writer and the application
+architect do have some changes to make, which include:<br>
+<br>
+<ul>
+  <li>Editing custom component classes to use the new APIs<br>
+  </li>
+  <li>Editing custom component tag handlers to use the new APIs</li>
+  <li>Updating the TLD defining the custom component tags with the new
+version number and the new <span style="font-family: monospace;">deferred-value</span>
+or <span style="font-family: monospace;">deferred-method</span>
+elements<br>
+  </li>
+</ul>
+<h4>Making Changes to the Custom Component Classes</h4>
+JavaServer Faces technology 1.1_01 and earlier versions used the <span
+ style="font-family: monospace;">ValueBinding</span>
+and
+<span style="font-family: monospace;">MethodBinding</span> classes to
+represent value expressions and
+method
+expressions, respectively.  These classes are still available in
+JavaServer Faces technology 1.2 for those who want to continue using
+them.  If you want
+your components to use the unified EL, however, you need to change all
+instances of <code><span style="font-family: monospace;">ValueBinding</span>
+</code>to <span style="font-family: monospace;">ValueExpression </span>and
+all instances of
+<span style="font-family: monospace;">MethodBinding</span> to <span
+ style="font-family: monospace;">MethodExpression</span>.  The <span
+ style="font-family: monospace;">ValueExpression</span> and
+<span style="font-family: monospace;">MethodExpression</span> APIs are
+part of the unified EL
+specification.  The following component method shows the
+JavaServer Faces technology 1.1_01
+version of a value-binding enabled component property.<br>
+<br>
+<pre class="pPreformattedRelative">public boolean someProperty() {<br>  if (this.someProperty) {<br>      return (this.someProperty);<br>  }<br>  ValueBinding vb = getValueBinding("someProperty");<br>  if (vb != null) {<br>    Boolean value = (Boolean) vb.getValue(getFacesContext());<br>    return (value.booleanValue());<br>  } else {<br>      return (this.someProperty);<br>&nbsp [...]
+The following code shows this method converted to use the new APIs.<br>
+<br>
+<pre>public boolean someProperty() { <br>	if (this.someProperty) {<br>		return (this.someProperty);<br>	}<br>	ValueExpression ve = getValueExpression("someProperty");<br>	if (ve != null) {<br>		Boolean value = (Boolean)<br>		ve.getValue(getFacesContext().getELContext());<br>		return (value.booleanValue());<br>	} else {<br>		return (this.someProperty);<br>	}<br>}  </pre>
+<br>
+<h4>Making Changes to the Custom Component Tag Handlers</h4>
+To migrate your tag handler class, you need to do the following:<br>
+<ul>
+  <li>Make the class extend <span style="font-family: monospace;">UIComponentELTag</span>
+instead of <span style="font-family: monospace;">UIComponentTag</span></li>
+  <li>Change <span style="font-family: monospace;">ValueBinding</span>
+to <span style="font-family: monospace;">ValueExpression</span> and <span
+ style="font-family: monospace;">MethodBinding</span> to <span
+ style="font-family: monospace;">MethodExpression</span></li>
+  <li>Simplify the <span style="font-family: monospace;">setProperties</span>
+method by removing the check for if the property is value-expression
+enabled<br>
+  </li>
+</ul>
+Here are the relevant pieces of a tag handler class using the version
+1.1_01 APIs:<br>
+<br>
+<p class="MsoNormal">
+</p>
+<pre>public class SimpleComponentTag extends UIComponentTag {<span
+ style="">     <br></span><br>	String someProperty;<span
+ style="">  <br></span>	String validator;<br><span
+ style="font-family: Lucidasans;"><span style="">           <br></span></span>	public void setSomeProperty(String someProperty) {<span
+ style="font-family: Lucidasans;"><o:p></o:p></span><br><span style="">	   </span>this.someProperty = someProperty;<span
+ style=""><br></span>	}<span style="font-family: Lucidasans;"><span
+ style="">          <br></span></span>	public void setValidator(String validator) {<span
+ style="font-family: Lucidasans;"></span><span style=""><br></span>	   this.validator = validator;<span
+ style=""><br></span>	}<span style="font-family: Lucidasans;"><span
+ style="">         <br>	...</span></span><span
+ style="font-family: Lucidasans;"><span style="">        <br></span></span>	protected void setProperties(UIComponent component) {<span
+ style="font-family: Lucidasans;"></span><span style=""><br></span>	   super.setProperties(component);<span
+ style=""><span style=""><br></span>		if (someProperty != null) {<br>		</span>   if (isValueReference(someProperty)) {<span
+ style="">                   <br></span>		   	ValueBinding vb = FacesContext.getCurrentInstance().<span
+ style="">                      <br></span>					getApplication().createValueBinding(someProperty);<br><span
+ style="">			</span>component.setValueBinding(“someProperty”, vb);<span
+ style=""><br></span>		   } else {<span style=""><br>		   </span>	component.getAttributes().put(“someProperty”, someProperty);<br><span
+ style="">		</span>   }<span style="">              <br></span>		}<br><span
+ style="">	   </span>	if(validator != null) {<br><span style="">		</span>   if (isValueReference(validator)) {<br><span
+ style="">			</span>Class args[] = { FacesContext.class, UIComponent.class,<br>				Object.class };<br><span
+ style="">			</span>MethodBinding vb = FacesContext.getCurrentInstance().<br><span
+ style="">			   </span>getApplication().createMethodBinding(validator, args);<br>			<span
+ style=""></span>input.setValidator(vb);<br><span style="">		</span>   } else {<br>			<span
+ style=""></span>throw new<span style="">  </span>FacesException(“Invalid Expression”);<span
+ style="">         <br></span>		   }<span
+ style="">              <br></span>		}<span
+ style="">          <br></span>	}<br><br>}</pre>
+<br>
+And here is the same tag handler class converted to use the 1.2 APIs:<br>
+<br>
+<pre>public class SimpleComponentTag extends UIComponentELTag {<span
+ style="">           <br></span><br>	ValueExpression someProperty;<br>	MethodExpression validator;<span
+ style="font-family: Lucidasans;"><span style=""><br><br></span></span>	public void setSomeProperty(ValueExpression someProperty)<span
+ style="font-family: lucidasans,mon,mon;"> {</span><span
+ style="font-family: lucidasans,mon;"></span><br>	   this.someProperty = someProperty;<span
+ style=""><br>	</span>}<span style="font-family: Lucidasans;"><span
+ style=""><br>     <br></span></span>	public void setValidator(MethodExpression validator) {<span
+ style="">               <br></span>	   this.validator = validator;<br>	}<span
+ style="font-family: Lucidasans;"><span style=""><br>	...</span></span><span
+ style="font-family: Lucidasans;"><span style=""></span></span><br><br>	protected void setProperties(UIComponent component) {<br>	   super.setProperties(component);<span
+ style=""></span><br>	   if (someProperty != null) {<span style="">                    <br></span>		if (!someProperty.isLiteralText()) {<span
+ style=""></span><br>		   component.setValueExpression(“someProperty”, someProperty);<span
+ style="">                    <br></span>		} else {<span
+ style=""></span><br>		   component.getAttributes().put(“someProperty”,<br>			someProperty.getExpressionString());<br>		}<span
+ style=""></span><br>	   }<span style=""></span><br>	   if(validator != null) {<br>		component.addValidator(new MethodExpressionValidator(validator));<span
+ style="">        <br></span>	   }<br>	}<br>}<span
+ style="font-family: Lucidasans;"><br><br></span></pre>
+Notice that the new
+<span style="font-family: monospace;">setProperties</span> method does
+not have to do the work
+of getting the expression from the <span
+ style="font-family: monospace;">Application</span> instance and
+converting
+a <span style="font-family: monospace;">String</span> to a value
+binding or method binding.  Instead, the JSP
+container manages
+the <span style="font-family: monospace;">ValueExpression</span> and <span
+ style="font-family: monospace;">MethodExpression</span> objects and
+passes them to the
+tag handler. 
+Also, <span style="font-family: monospace;">setProperties</span> does
+not have to check if the property is
+value-expression or method-expression enabled because this information
+is already in the TLD,
+which we show in the next section.<br>
+<h4>Making Changes to the Custom Tag TLD</h4>
+<p class="MsoNormal">To migrate your TLD files to use the new
+expression language, you need to do the following:<br>
+</p>
+<ul>
+  <li>Change the JSP version number to 2.1.<br>
+  </li>
+  <li>Remove the <span style="font-family: monospace;">rtexprvalue</span>
+element and replace it with either
+    <span style="font-family: monospace;">deferred-value</span> or <span
+ style="font-family: monospace;">deferred-method</span>, depending on
+whether the
+corresponding property accepts value expressions or method expressions.<br>
+  </li>
+</ul>
+<p class="MsoNormal">The following TLD defines a custom component tag
+based on version 1.1_01:<br>
+<br>
+</p>
+<p class="MsoNormal"><br>
+</p>
+<pre><taglib><br>   <!-- ============== Tag Library Description Elements ============= --><br>   <tlib-version>1.0</tlib-version><br>   <jsp-version>1.2</jsp-version><span
+ style=""></span><br>   <short-name>Demo Taglib</short-name><br>   <tag><span
+ style=""></span><br>	<name>simple</name><span style=""></span><br>	<tag-class>example.SimpleComponentTag</tag-class><span
+ style=""></span><br>	<body-content>JSP</body-content><span
+ style=""></span><br>	<attribute><span style=""></span><br>		<name>someProperty</name><span
+ style=""></span><br>		<required>true</required><span
+ style=""></span><br>		<rtexprvalue>false</rtexprvalue><span
+ style=""></span><br>	</attribute><br>	<attribute><br>		<name>validator</name><br>		<required>false</required><br>		<rtexprvalue>false</rtexprvalue><br>	</attribute><span
+ style=""></span><br>   </tag><br></taglib><br><br></pre>
+<p class="MsoNormal"><o:p>The following TLD defines the same custom
+component tag for JavaServer Faces technology 1.2:<br>
+<br>
+</o:p></p>
+<p class="MsoNormal"><span style=""><br>
+ 
+<br>
+</span></p>
+<pre><taglib><span style=""></span><br>   <!-- ============== Tag Library Description Elements ============= --><span
+ style=""></span><br>   <tlib-version>1.1</tlib-version><span
+ style=""></span><br>   <jsp-version>2.1</jsp-version><span
+ style=""></span><br>   <short-name>Demo Taglib</short-name><br>   <tag><br>	<name>simple</name><br>	<tag-class>example.SimpleComponentTag</tag-class><span
+ style=""></span><br>	<body-content>JSP</body-content><span
+ style=""></span><br>	<attribute><br>	   <name>someProperty</name><span
+ style=""></span><br>	   <required>true</required><br>	   <deferred-value><span
+ style=""></span><br>	   	<type>java.lang.String</type><br>	   </deferred-value><span
+ style=""></span><br>	</attribute><br>	<attribute><br>	   <name>validator</name><br>	   <required>false</required><br>	   <deferred-method><span
+ style=""></span><br>		<method-signature><br>		   void validate(javax.faces.context.FacesContext,<br>			javax.faces.component.UIComponent, java.lang.Object)<br>		</method-signature><br>	   </deferred-method><br>	</attribute><span
+ style=""></span><br>   </tag><br></taglib></pre>
+ Note that the <span style="font-family: monospace;">jsp-version</span>
+element is now 2.1.  This
+indicates to the JSP 2.1 container whether or it should try to create a
+<span style="font-family: monospace;">ValueExpression</span> or <span
+ style="font-family: monospace;">MethodExpression</span> instance and
+pass it to the tag
+handler or pass an
+expression string as a literal value to the tag handler.  If the
+version number is 2.1, it does the former.<br>
+<br>
+The other change is that <span style="font-family: monospace;">rtexprvalue</span>
+has been replaced with the
+<span style="font-family: monospace;">deferred-value</span> element for
+the <span style="font-family: monospace;">someProperty</span> property
+and with
+<span style="font-family: monospace;">deferred-method</span> for the <span
+ style="font-family: monospace;">validator</span> property.  The <span
+ style="font-family: monospace;">deferred-value</span>
+element tells the JSP container that the property accepts deferred
+value expressions.  The <span style="font-family: monospace;">deferred-method</span>
+element tells the JSP
+container that the <span style="font-family: monospace;">validator</span>
+property accepts method expressions. 
+Therefore, the
+container creates a <span style="font-family: monospace;">ValueExpression</span>
+object for <span style="font-family: monospace;">someProperty</span>
+and a
+<span style="font-family: monospace;">MethodExpression</span> object
+for the <span style="font-family: monospace;">validator</span>
+property and
+passes these objects to the tag handler.  The <span
+ style="font-family: monospace;">type</span> subelement
+of <span style="font-family: monospace;">deferred-value</span>
+indicates the type to which the expression must
+evaluate.  The <span style="font-family: monospace;">method-signature</span>
+subelement of <span style="font-family: monospace;">deferred-method</span>
+specifies the signature required for the corresponding method.
+<p> </p>
+<br>
+<h1><a name="issues">Known</a> Issues With This Release</h1>
+As stated in section <a href="#migrating">Migrating from 1.1_01 to 1.2</a>,
+your JavaServer Faces technology, version 1.1_01 applications can run
+on JavaServer Faces technology 1.2.  However, there are a few
+corner cases in which backwards-compatibility breaks.  Please see
+the section Breakages in Backwards Compatibility in the JavaServer
+Faces technology 1.2 PFD specification.<br>
+<br>
+<hr>
+<p>Copyright © 2005 Sun Microsystems, Inc., 4150 Network Circle,
+Santa
+<br>
+Clara, California 95054, U.S.A. All rights reserved.
+</p>
+<p>Sun Microsystems, Inc. has intellectual property rights relating to
+<br>
+technology embodied in this product. In particular, and without
+<br>
+limitation, these intellectual property rights may include one or more
+<br>
+of the U.S. patents listed at http://www.sun.com/patents and one or
+more
+<br>
+additional patents or pending patent applications in the U.S. and other
+<br>
+countries.
+</p>
+<p>This product is distributed under licenses restricting its use,
+copying
+<br>
+distribution, and decompilation. No part of this product may be
+<br>
+reproduced in any form by any means without prior written authorization
+<br>
+of Sun and its licensors, if any.
+</p>
+<p>Third-party software, including font technology, is copyrighted and
+<br>
+licensed from Sun suppliers.
+</p>
+<p>Sun, Sun Microsystems, the Sun logo, the Java Coffee Cup logo,
+<br>
+JavaServer, and Java are trademarks or registered trademarks of Sun
+<br>
+Microsystems, Inc. in the U.S. and other countries.
+</p>
+<p>Federal Acquisitions: Commercial Software - Government Users Subject
+to
+<br>
+Standard License Terms and Conditions.
+</p>
+<hr width="100%">
+<p>Copyright © 2005 Sun Microsystems, Inc., 4150 Network Circle,
+<br>
+Santa Clara, California 95054, Etats-Unis. Tous droits
+réservés.
+</p>
+<p>Sun Microsystems, Inc. a les droits de propriété
+intellectuels
+relatants
+<br>
+à la technologie incorporée dans ce produit. En
+particulier,
+et sans la
+<br>
+limitation, ces droits de propriété intellectuels peuvent
+inclure un ou
+<br>
+plus des brevets américains énumérés
+à
+http://www.sun.com/patents et un
+<br>
+ou les brevets plus supplémentaires ou les applications de
+brevet
+en
+<br>
+attente dans les Etats - Unis et les autres pays.
+</p>
+<p>Ce produit ou document est protégé par un copyright et
+distribué avec
+<br>
+des licences qui en restreignent l'utilisation, la copie, la
+<br>
+distribution, et la décompilation. Aucune partie de ce produit
+ou
+<br>
+document ne peut être reproduite sous aucune forme, par quelque
+moyen
+<br>
+que ce soit, sans l'autorisation préalable et écrite
+de Sun et de ses
+<br>
+bailleurs de licence, s'il y ena.
+</p>
+<p>Le logiciel détenu par des tiers, et qui comprend la
+technologie
+<br>
+relative aux polices de caractères, est protégé
+par un copyright et
+<br>
+licencié par des fournisseurs de Sun.
+</p>
+<p>Sun, Sun Microsystems, le logo Sun, le logo Java Coffee Cup,
+JavaServer,
+<br>
+et Java sont des marques de fabrique ou des marques
+déposées
+de Sun
+<br>
+Microsystems, Inc. aux Etats-Unis et dans d'autres pays.
+<br>
+ 
+<br>
+ 
+</p>
+</body>
+</html>
diff --git a/jsf-ri/docs/api-issues-owners.xsl b/jsf-ri/docs/api-issues-owners.xsl
new file mode 100644
index 0000000..23b6e95
--- /dev/null
+++ b/jsf-ri/docs/api-issues-owners.xsl
@@ -0,0 +1,105 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2005-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!-- Content Stylesheet for Outstanding Issues Summary List -->
+
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+                version="1.0">
+
+  <xsl:output method="html"/>
+
+  <xsl:template match="issues">
+    <html>
+      <head>
+        <title>JavaServer Faces 1.0 - Outstanding Issues Summary</title>
+      </head>
+      <body bgcolor="#FFFFFF">
+        <table border="1" width="100%" cellpadding="5">
+          <tr>
+            <th width="5%">Pri</th>
+            <th width="10%">Issue</th>
+            <th width="55%">Summary</th>
+            <th width="5%">Source</th>
+            <th width="5%">Status</th>
+            <th width="5%">Date</th>
+            <th width="5%">Effort</th>
+            <th width="5%">RI-Effort</th>
+            <th width="5%">RI-Owner</th>            
+          </tr>
+          <xsl:for-each select="issue">
+            <xsl:sort select="priority"/>
+            <tr>
+              <td align="center"><xsl:value-of select="priority"/></td>
+              <xsl:variable name="issueId" select="./id[.]"/>
+              <td><xsl:value-of select="$issueId"/></td>
+              <td><xsl:value-of select="summary"/></td>
+              <td><xsl:value-of select="originator"/></td>
+              <td align="center"><xsl:value-of select="status"/></td>
+              <td align="center"><xsl:value-of select="status-date"/></td>
+              <td align="center"><xsl:value-of select="effort"/></td>
+              <xsl:for-each select="document('api-issues-owners.xml')/issues/issue">
+                 <xsl:if test="$issueId=./id[.]">
+                      <td> <xsl:value-of select="./ri-effort[.]" /> </td>
+                      <td> <xsl:value-of select="./ri-owner[.]" /> </td>
+                 </xsl:if>
+              </xsl:for-each>
+            </tr>
+          </xsl:for-each>
+        </table>
+      </body>
+    </html>
+  </xsl:template>
+
+  <xsl:template match="issue">
+    <tr>
+      <td align="center"><xsl:value-of select="priority"/></td>
+      <td><xsl:value-of select="id"/></td>
+      <td><xsl:value-of select="summary"/></td>
+      <td><xsl:value-of select="originator"/></td>
+      <td align="center"><xsl:value-of select="status"/></td>
+      <td align="center"><xsl:value-of select="status-date"/></td>
+      <td align="center"><xsl:value-of select="effort"/></td>
+    </tr>
+  </xsl:template>
+
+</xsl:stylesheet>
diff --git a/jsf-ri/docs/index.html b/jsf-ri/docs/index.html
new file mode 100644
index 0000000..1ad03f0
--- /dev/null
+++ b/jsf-ri/docs/index.html
@@ -0,0 +1,114 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+  <title>JavaServer Faces 1.2</title>
+  <link rel="stylesheet" type="text/css" href="style/default.css">
+</head>
+<body>
+<center>
+<h1>JavaServer<sup><font size="-2">TM</font></sup> Faces<br>
+Technology </h1>
+</center>
+<center> <b>Specification Version:</b> 1.2 Public Final Draft (PFD)
+Release<br>
+<b>Reference Implementation (RI) Version:</b> 1.2<br>
+</center>
+<p> JavaServer<sup><font size="-2">TM</font></sup> Faces technology
+simplifies building user interfaces for JavaServer applications. With
+the well-defined programming model that JavaServer Faces technology
+provides, developers of various skill levels can quickly and easily
+build web applications that handle all of the complexity of managing
+the user interface on the server, allowing the application developer to
+focus on application code. </p>
+<p> JavaServer Faces technology includes: </p>
+<ul>
+  <li>A set of APIs and reference implementation that provide: user
+interface components, model object management, pluggable rendering,
+server side
+validation, data conversion, event processing, page flow management,
+and
+custom extensibility for all of these things.</li>
+  <li>A JavaServer Pages (JSP) custom tag library for expressing a
+JavaServer Faces interface within a JSP page.</li>
+</ul>
+<p> <a name="documentation"></a> </p>
+<h2>Documentation</h2>
+The documentation for this release consists of:
+<ul>
+  <li> <a href="ReleaseNotes.html">Release Notes</a></li>
+  <li> <a href="../javadocs/index.html">Javadoc API documentation
+(javax.faces.*)</a> </li>
+  <li> <a href="../tlddocs/index.html">TLD documentation</a> </li>
+  <li> <a href="../renderkitdocs/index.html">Standard HTML RenderKit
+Specification</a> </li>
+  <li> <a href="samples.html">Sample Applications</a></li>
+</ul>
+<a name="license"></a>
+<h2> Software Licenses </h2>
+<ul>
+  <li><a href="Copyright.html">Copyright © 2005 Sun Microsystems, Inc.
+All rights reserved.</a> </li>
+</ul>
+<a name="feedback"></a>
+<h2>Questions, Feedback, Bug Reports</h2>
+<p> </p>
+<dl>
+  <dt><a href="http://forum.java.sun.com/forum.jsp?forum=427"> The
+JavaServer Faces Forum</a></dt>
+  <dd>This forum is the ideal place for people interested in JavaServer
+Faces technology to share their ideas, ask each other questions, and
+participate in the JavaServer Faces technology community.</dd>
+  <dt><a href="mailto:JSFaces-feedback at sun.com">JSFaces-feedback at sun.com</a></dt>
+  <dd>Use this alias for questions and feedback about the JavaServer
+Faces Reference Implementation.</dd>
+  <dt><br>
+  </dt>
+  <dd> <br>
+  </dd>
+  <p><i>Due to the high volume of e-mail received on these aliases, you
+may not receive an immediate response to your inquiry.</i></p>
+</dl>
+</body>
+</html>
diff --git a/jsf-ri/docs/models/LifecycleClasses.gif b/jsf-ri/docs/models/LifecycleClasses.gif
new file mode 100644
index 0000000..12bf9ed
Binary files /dev/null and b/jsf-ri/docs/models/LifecycleClasses.gif differ
diff --git a/jsf-ri/docs/models/RestoreState.jpg b/jsf-ri/docs/models/RestoreState.jpg
new file mode 100644
index 0000000..eb14875
Binary files /dev/null and b/jsf-ri/docs/models/RestoreState.jpg differ
diff --git a/jsf-ri/docs/models/SaveState.jpg b/jsf-ri/docs/models/SaveState.jpg
new file mode 100644
index 0000000..f09c4b1
Binary files /dev/null and b/jsf-ri/docs/models/SaveState.jpg differ
diff --git a/jsf-ri/docs/models/faces.mdl b/jsf-ri/docs/models/faces.mdl
new file mode 100644
index 0000000..cec9c4d
--- /dev/null
+++ b/jsf-ri/docs/models/faces.mdl
@@ -0,0 +1,9691 @@
+
+(object Petal
+    version    	45
+    _written   	"Rational Rose 7.5.0106.05.01"
+    charSet    	0)
+
+(object Design "Logical View"
+    is_unit    	TRUE
+    is_loaded  	TRUE
+    attributes 	(list Attribute_Set
+	(object Attribute
+	    tool       	"Java"
+	    name       	"IDE"
+	    value      	"Internal Editor"))
+    quid       	"3C113F9A0289"
+    defaults   	(object defaults
+	rightMargin 	0.250000
+	leftMargin 	0.250000
+	topMargin  	0.250000
+	bottomMargin 	0.500000
+	pageOverlap 	0.250000
+	clipIconLabels 	TRUE
+	autoResize 	TRUE
+	snapToGrid 	TRUE
+	gridX      	16
+	gridY      	16
+	defaultFont 	(object Font
+	    size       	10
+	    face       	"Arial"
+	    bold       	FALSE
+	    italics    	FALSE
+	    underline  	FALSE
+	    strike     	FALSE
+	    color      	0
+	    default_color 	TRUE)
+	showMessageNum 	1
+	showClassOfObject 	TRUE
+	notation   	"Unified")
+    root_usecase_package 	(object Class_Category "Use Case View"
+	quid       	"3C113F9A028B"
+	exportControl 	"Public"
+	global     	TRUE
+	logical_models 	(list unit_reference_list)
+	logical_presentations 	(list unit_reference_list
+	    (object UseCaseDiagram "Main"
+		quid       	"3C113F9A0308"
+		title      	"Main"
+		zoom       	100
+		max_height 	28350
+		max_width  	21600
+		origin_x   	0
+		origin_y   	0
+		items      	(list diagram_item_list))))
+    root_category 	(object Class_Category "Logical View"
+	quid       	"3C113F9A028A"
+	exportControl 	"Public"
+	global     	TRUE
+	subsystem  	"Component View"
+	quidu      	"3C113F9A028C"
+	logical_models 	(list unit_reference_list
+	    (object Mechanism @1
+		logical_models 	(list unit_reference_list
+		    (object Object "ServletContainer"
+			quid       	"3C114BAF00E7"
+			collaborators 	(list link_list
+			    (object Link
+				quid       	"3C114C8701C0"
+				supplier   	"FacesServlet"
+				quidu      	"3C114C0D00F7"
+				messages   	(list Messages
+				    (object Message "init()"
+					quid       	"3C114C8701C1"
+					frequency  	"Aperiodic"
+					synchronization 	"Simple"
+					dir        	"FromClientToSupplier"
+					sequence   	"1"
+					ordinal    	0
+					creation   	FALSE))))
+			persistence 	"Transient"
+			creationObj 	FALSE
+			multi      	FALSE)
+		    (object Object "FacesServlet"
+			quid       	"3C114C0D00F7"
+			collaborators 	(list link_list
+			    (object Link
+				quid       	"3C114C9600AB"
+				supplier   	"FacesServlet"
+				quidu      	"3C114C0D00F7"
+				messages   	(list Messages
+				    (object Message "super.init()"
+					quid       	"3C114C9600AC"
+					frequency  	"Aperiodic"
+					synchronization 	"Simple"
+					dir        	"FromClientToSupplier"
+					sequence   	"2"
+					ordinal    	1
+					creation   	FALSE)
+				    (object Message ""
+					quid       	"3C114CD800E5"
+					frequency  	"Aperiodic"
+					synchronization 	"Simple"
+					dir        	"FromClientToSupplier"
+					sequence   	"3"
+					ordinal    	2
+					creation   	FALSE)))
+			    (object Link
+				quid       	"3C114D470168"
+				supplier   	"ObjectTable"
+				quidu      	"3C114D30033B"
+				messages   	(list Messages
+				    (object Message "put(GlobalScope, eqfName, eventQueueFactory)"
+					quid       	"3C114D470169"
+					frequency  	"Aperiodic"
+					synchronization 	"Simple"
+					dir        	"FromClientToSupplier"
+					sequence   	"4"
+					ordinal    	3
+					Operation  	"put(GlobalScope, eventQueueFactory)"
+					creation   	FALSE)
+				    (object Message "put(GlobalScope, rcfName, renderContextFactory)"
+					quid       	"3C114D9B00DF"
+					frequency  	"Aperiodic"
+					synchronization 	"Simple"
+					dir        	"FromClientToSupplier"
+					sequence   	"5"
+					ordinal    	4
+					Operation  	"put(GlobalScope, renderContextFactory)"
+					creation   	FALSE)
+				    (object Message "put(GlobalScope, edfName, eventDispatcherFactory)"
+					quid       	"3C114DE00027"
+					frequency  	"Aperiodic"
+					synchronization 	"Return"
+					dir        	"FromClientToSupplier"
+					sequence   	"6"
+					ordinal    	5
+					Operation  	"put(GlobalScope, eventDispatcherFactory)"
+					creation   	FALSE))))
+			persistence 	"Transient"
+			creationObj 	FALSE
+			multi      	FALSE)
+		    (object Object "ObjectTable"
+			quid       	"3C114D30033B"
+			persistence 	"Transient"
+			creationObj 	FALSE
+			multi      	FALSE)))
+	    (object Mechanism @2
+		logical_models 	(list unit_reference_list
+		    (object Object "FacesServlet"
+			quid       	"3C11598602DB"
+			collaborators 	(list link_list
+			    (object Link
+				quid       	"3C1159CB005D"
+				supplier   	"FacesServlet"
+				quidu      	"3C11598602DB"
+				messages   	(list Messages
+				    (object Message "getObjectTableFromSession"
+					quid       	"3C1159CB005E"
+					frequency  	"Aperiodic"
+					synchronization 	"Simple"
+					dir        	"FromClientToSupplier"
+					sequence   	"4"
+					ordinal    	3
+					creation   	FALSE)))
+			    (object Link
+				quid       	"3C115A2E033A"
+				supplier   	"ObjectTable"
+				quidu      	"3C115A2101A8"
+				messages   	(list Messages
+				    (object Message "get(thisSession,RENDERCONTEXT)"
+					quid       	"3C115A2E033B"
+					frequency  	"Aperiodic"
+					synchronization 	"Simple"
+					dir        	"FromClientToSupplier"
+					sequence   	"5"
+					ordinal    	4
+					creation   	FALSE)
+				    (object Message "get(thisSession, EVENTQUEUE)"
+					quid       	"3C115A7B02CC"
+					frequency  	"Aperiodic"
+					synchronization 	"Simple"
+					dir        	"FromClientToSupplier"
+					sequence   	"6"
+					ordinal    	5
+					creation   	FALSE)))
+			    (object Link
+				quid       	"3C115AA302A9"
+				supplier   	"RenderContext"
+				quidu      	"3C115A970020"
+				messages   	(list Messages
+				    (object Message "getRenderKit()"
+					quid       	"3C115AA302AA"
+					frequency  	"Aperiodic"
+					synchronization 	"Return"
+					dir        	"FromClientToSupplier"
+					sequence   	"7"
+					ordinal    	6
+					Operation  	"getRenderKit"
+					creation   	FALSE)))
+			    (object Link
+				quid       	"3C115AC70263"
+				supplier   	"RenderKit"
+				quidu      	"3C115AB4026C"
+				messages   	(list Messages
+				    (object Message "queueEvents(request, eventQueue)"
+					quid       	"3C115AC70264"
+					frequency  	"Aperiodic"
+					synchronization 	"Return"
+					dir        	"FromClientToSupplier"
+					sequence   	"8"
+					ordinal    	7
+					creation   	FALSE)))
+			    (object Link
+				quid       	"3C1160390232"
+				supplier   	"EventQueue"
+				quidu      	"3C115FFB01A8"
+				messages   	(list Messages
+				    (object Message "isEmpty"
+					quid       	"3C1160390233"
+					frequency  	"Aperiodic"
+					synchronization 	"Simple"
+					dir        	"FromClientToSupplier"
+					sequence   	"9"
+					ordinal    	8
+					creation   	FALSE))))
+			persistence 	"Transient"
+			creationObj 	TRUE
+			multi      	FALSE)
+		    (object Object "Container"
+			quid       	"3C1159A20399"
+			collaborators 	(list link_list
+			    (object Link
+				quid       	"3C1159B60242"
+				supplier   	"FacesServlet"
+				quidu      	"3C11598602DB"
+				messages   	(list Messages
+				    (object Message "processRequest"
+					quid       	"3C1159B60243"
+					frequency  	"Aperiodic"
+					synchronization 	"Simple"
+					dir        	"FromClientToSupplier"
+					sequence   	"3"
+					ordinal    	2
+					creation   	FALSE)
+				    (object Message ""
+					quid       	"3C1160AE023A"
+					frequency  	"Aperiodic"
+					synchronization 	"Simple"
+					dir        	"ToClientFromSupplier"
+					sequence   	"10"
+					ordinal    	9
+					creation   	FALSE)))
+			    (object Link
+				quid       	"3C115C5C017D"
+				supplier   	"CustomAppSessionListener"
+				quidu      	"3C115C400088"
+				messages   	(list Messages
+				    (object Message "sessionCreated()"
+					quid       	"3C115C8701B8"
+					frequency  	"Aperiodic"
+					synchronization 	"Simple"
+					dir        	"FromClientToSupplier"
+					sequence   	"1"
+					ordinal    	0
+					creation   	FALSE)))
+			    (object Link
+				quid       	"3C1160B80088"
+				supplier   	"TextEntry_InputTag"
+				quidu      	"3C115F880050"
+				messages   	(list Messages
+				    (object Message "doStartTag()"
+					quid       	"3C1160B80089"
+					frequency  	"Aperiodic"
+					synchronization 	"Simple"
+					dir        	"FromClientToSupplier"
+					sequence   	"11"
+					ordinal    	10
+					creation   	FALSE))))
+			persistence 	"Transient"
+			creationObj 	TRUE
+			multi      	FALSE)
+		    (object Object "ObjectTable"
+			quid       	"3C115A2101A8"
+			persistence 	"Transient"
+			creationObj 	TRUE
+			multi      	FALSE)
+		    (object Object "RenderContext"
+			quid       	"3C115A970020"
+			persistence 	"Transient"
+			creationObj 	TRUE
+			multi      	FALSE)
+		    (object Object "RenderKit"
+			quid       	"3C115AB4026C"
+			persistence 	"Transient"
+			creationObj 	TRUE
+			multi      	FALSE)
+		    (object Object "CustomAppSessionListener"
+			quid       	"3C115C400088"
+			collaborators 	(list link_list
+			    (object Link
+				quid       	"3C115CB00132"
+				supplier   	"ObjectTable"
+				quidu      	"3C115A2101A8"
+				messages   	(list Messages
+				    (object Message "put(SessionScope, \"LoginBean\", LoginBean.class)"
+					quid       	"3C115CB00133"
+					frequency  	"Aperiodic"
+					synchronization 	"Simple"
+					dir        	"FromClientToSupplier"
+					sequence   	"2"
+					ordinal    	1
+					creation   	FALSE))))
+			persistence 	"Transient"
+			creationObj 	TRUE
+			multi      	FALSE)
+		    (object Object "TextEntry_InputTag"
+			quid       	"3C115F880050"
+			collaborators 	(list link_list
+			    (object Link
+				quid       	"3C1160D60106"
+				supplier   	"TextEntry_InputTag"
+				quidu      	"3C115F880050"
+				messages   	(list Messages
+				    (object Message "getObjectTable"
+					quid       	"3C1160D60107"
+					frequency  	"Aperiodic"
+					synchronization 	"Simple"
+					dir        	"FromClientToSupplier"
+					sequence   	"12"
+					ordinal    	11
+					creation   	FALSE)
+				    (object Message "getRenderer()"
+					quid       	"3C1161360269"
+					frequency  	"Aperiodic"
+					synchronization 	"Simple"
+					dir        	"FromClientToSupplier"
+					sequence   	"14"
+					ordinal    	13
+					creation   	FALSE)
+				    (object Message "new WTextEntry()"
+					quid       	"3C1162EF02A3"
+					frequency  	"Aperiodic"
+					synchronization 	"Simple"
+					dir        	"FromClientToSupplier"
+					sequence   	"17"
+					ordinal    	16
+					creation   	FALSE)
+				    (object Message "listeners = new Vector()"
+					quid       	"3C116687023D"
+					frequency  	"Aperiodic"
+					synchronization 	"Simple"
+					dir        	"FromClientToSupplier"
+					sequence   	"22"
+					ordinal    	21
+					creation   	FALSE)
+				    (object Message "listeners.add(\"loginListener\")"
+					quid       	"3C1166B70090"
+					frequency  	"Aperiodic"
+					synchronization 	"Simple"
+					dir        	"FromClientToSupplier"
+					sequence   	"23"
+					ordinal    	22
+					creation   	FALSE)
+				    (object Message "renderStart()"
+					quid       	"3C1168E3039A"
+					frequency  	"Aperiodic"
+					synchronization 	"Simple"
+					dir        	"FromClientToSupplier"
+					sequence   	"25"
+					ordinal    	24
+					creation   	FALSE)))
+			    (object Link
+				quid       	"3C1160F2019E"
+				supplier   	"ObjectTable"
+				quidu      	"3C115A2101A8"
+				messages   	(list Messages
+				    (object Message "getRenderContext(thisSession,RENDERCONTEXT)"
+					quid       	"3C1160F2019F"
+					frequency  	"Aperiodic"
+					synchronization 	"Simple"
+					dir        	"FromClientToSupplier"
+					sequence   	"13"
+					ordinal    	12
+					creation   	FALSE)
+				    (object Message "get(thisRequest, \"userName\")"
+					quid       	"3C1162A203B2"
+					frequency  	"Aperiodic"
+					synchronization 	"Simple"
+					dir        	"FromClientToSupplier"
+					sequence   	"15"
+					ordinal    	14
+					creation   	FALSE)
+				    (object Message "null"
+					quid       	"3C1162D601CE"
+					frequency  	"Aperiodic"
+					synchronization 	"Simple"
+					dir        	"ToClientFromSupplier"
+					sequence   	"16"
+					ordinal    	15
+					creation   	FALSE)
+				    (object Message "put(thisSession, \"userName', wTextEntry)"
+					quid       	"3C1165C20236"
+					frequency  	"Aperiodic"
+					synchronization 	"Simple"
+					dir        	"FromClientToSupplier"
+					sequence   	"19"
+					ordinal    	18
+					creation   	FALSE)
+				    (object Message "get(thisRequest, \"userName.valueChangeListeners\")"
+					quid       	"3C11660800B0"
+					frequency  	"Aperiodic"
+					synchronization 	"Simple"
+					dir        	"FromClientToSupplier"
+					sequence   	"20"
+					ordinal    	19
+					creation   	FALSE)
+				    (object Message "null"
+					quid       	"3C11665A011D"
+					frequency  	"Aperiodic"
+					synchronization 	"Simple"
+					dir        	"ToClientFromSupplier"
+					sequence   	"21"
+					ordinal    	20
+					creation   	FALSE)
+				    (object Message "put(thisSession,\"userName.valueChangeListeners\", listeners)"
+					quid       	"3C11686D00A3"
+					frequency  	"Aperiodic"
+					synchronization 	"Simple"
+					dir        	"FromClientToSupplier"
+					sequence   	"24"
+					ordinal    	23
+					creation   	FALSE)))
+			    (object Link
+				quid       	"3C11656A0097"
+				supplier   	"WTextEntry"
+				quidu      	"3C11655301B5"
+				messages   	(list Messages
+				    (object Message "setModel(\"$LoginBean.userName\")"
+					quid       	"3C11656A0098"
+					frequency  	"Aperiodic"
+					synchronization 	"Simple"
+					dir        	"FromClientToSupplier"
+					sequence   	"18"
+					ordinal    	17
+					creation   	FALSE))))
+			persistence 	"Transient"
+			creationObj 	TRUE
+			multi      	FALSE)
+		    (object Object "EventQueue"
+			quid       	"3C115FFB01A8"
+			persistence 	"Transient"
+			creationObj 	TRUE
+			multi      	FALSE)
+		    (object Object "WTextEntry"
+			quid       	"3C11655301B5"
+			persistence 	"Transient"
+			creationObj 	TRUE
+			multi      	FALSE)))
+	    (object Mechanism @3
+		logical_models 	(list unit_reference_list
+		    (object Object "container"
+			quid       	"3C116DDB006F"
+			collaborators 	(list link_list
+			    (object Link
+				quid       	"3C116E000381"
+				supplier   	"FacesServlet"
+				quidu      	"3C116DEE02A8"
+				messages   	(list Messages
+				    (object Message "processRequest()"
+					quid       	"3C116E000382"
+					frequency  	"Aperiodic"
+					synchronization 	"Simple"
+					dir        	"FromClientToSupplier"
+					sequence   	"1"
+					ordinal    	0
+					creation   	FALSE))))
+			persistence 	"Transient"
+			creationObj 	TRUE
+			multi      	FALSE)
+		    (object Object "FacesServlet"
+			quid       	"3C116DEE02A8"
+			collaborators 	(list link_list
+			    (object Link
+				quid       	"3C116E1C0083"
+				supplier   	"RenderKit"
+				quidu      	"3C116E0C0060"
+				messages   	(list Messages
+				    (object Message "queueEvents(request, eventQueue)"
+					quid       	"3C116E1C0084"
+					frequency  	"Aperiodic"
+					synchronization 	"Simple"
+					dir        	"FromClientToSupplier"
+					sequence   	"2"
+					ordinal    	1
+					creation   	FALSE)
+				    (object Message ""
+					quid       	"3C1171770189"
+					frequency  	"Aperiodic"
+					synchronization 	"Simple"
+					dir        	"ToClientFromSupplier"
+					sequence   	"9"
+					ordinal    	8
+					creation   	FALSE)
+				    (object Message "isEmpty()"
+					quid       	"3C11718B00E1"
+					frequency  	"Aperiodic"
+					synchronization 	"Simple"
+					dir        	"FromClientToSupplier"
+					sequence   	"10"
+					ordinal    	9
+					creation   	FALSE)
+				    (object Message "false"
+					quid       	"3C117196017D"
+					frequency  	"Aperiodic"
+					synchronization 	"Simple"
+					dir        	"ToClientFromSupplier"
+					sequence   	"11"
+					ordinal    	10
+					creation   	FALSE)))
+			    (object Link
+				quid       	"3C1171BE012C"
+				supplier   	"ObjectTable"
+				quidu      	"3C116E580088"
+				messages   	(list Messages
+				    (object Message "get(EVENTDISPATCHERFACTORY)"
+					quid       	"3C1171BE012D"
+					frequency  	"Aperiodic"
+					synchronization 	"Simple"
+					dir        	"FromClientToSupplier"
+					sequence   	"12"
+					ordinal    	11
+					creation   	FALSE)))
+			    (object Link
+				quid       	"3C11732A0090"
+				supplier   	"ValueChangeDispatcherImpl"
+				quidu      	"3C11726202D3"
+				messages   	(list Messages
+				    (object Message "dispatch(request, response, event)"
+					quid       	"3C11732A0091"
+					frequency  	"Aperiodic"
+					synchronization 	"Simple"
+					dir        	"FromClientToSupplier"
+					sequence   	"13"
+					ordinal    	12
+					creation   	FALSE))))
+			persistence 	"Transient"
+			creationObj 	TRUE
+			multi      	FALSE)
+		    (object Object "RenderKit"
+			quid       	"3C116E0C0060"
+			collaborators 	(list link_list
+			    (object Link
+				quid       	"3C116E66015E"
+				supplier   	"ObjectTable"
+				quidu      	"3C116E580088"
+				messages   	(list Messages
+				    (object Message "get(request, \"login\")"
+					quid       	"3C116E66015F"
+					frequency  	"Aperiodic"
+					synchronization 	"Simple"
+					dir        	"FromClientToSupplier"
+					sequence   	"3"
+					ordinal    	2
+					creation   	FALSE)
+				    (object Message "the WCommand"
+					quid       	"3C116E96003F"
+					frequency  	"Aperiodic"
+					synchronization 	"Simple"
+					dir        	"ToClientFromSupplier"
+					sequence   	"4"
+					ordinal    	3
+					creation   	FALSE)
+				    (object Message "get(request, \"userName\")"
+					quid       	"3C116F6F0155"
+					frequency  	"Aperiodic"
+					synchronization 	"Return"
+					dir        	"FromClientToSupplier"
+					sequence   	"6"
+					ordinal    	5
+					creation   	FALSE)
+				    (object Message "the WTextEntry"
+					quid       	"3C116F870000"
+					frequency  	"Aperiodic"
+					synchronization 	"Simple"
+					dir        	"ToClientFromSupplier"
+					sequence   	"7"
+					ordinal    	6
+					creation   	FALSE)))
+			    (object Link
+				quid       	"3C116EC90367"
+				supplier   	"RenderKit"
+				quidu      	"3C116E0C0060"
+				messages   	(list Messages
+				    (object Message "new CommandEvent(request, \"login\"  , \"login\")"
+					quid       	"3C116EC90368"
+					frequency  	"Aperiodic"
+					synchronization 	"Simple"
+					dir        	"FromClientToSupplier"
+					sequence   	"5"
+					ordinal    	4
+					creation   	FALSE)
+				    (object Message "add CommandEvents"
+					quid       	"3C11714E017B"
+					frequency  	"Aperiodic"
+					synchronization 	"Simple"
+					dir        	"FromClientToSupplier"
+					sequence   	"8"
+					ordinal    	7
+					creation   	FALSE))))
+			persistence 	"Transient"
+			creationObj 	TRUE
+			multi      	FALSE)
+		    (object Object "ObjectTable"
+			quid       	"3C116E580088"
+			persistence 	"Transient"
+			creationObj 	TRUE
+			multi      	FALSE)
+		    (object Object "ValueChangeDispatcherImpl"
+			quid       	"3C11726202D3"
+			persistence 	"Transient"
+			creationObj 	TRUE
+			multi      	FALSE))))
+	logical_presentations 	(list unit_reference_list
+	    (object ClassDiagram "Main"
+		quid       	"3C113F9A02AF"
+		title      	"Main"
+		zoom       	100
+		max_height 	28350
+		max_width  	21600
+		origin_x   	0
+		origin_y   	0
+		items      	(list diagram_item_list))
+	    (object InteractionDiagram "Servlet_init"
+		mechanism_ref 	@1
+		quid       	"3C113FC0036C"
+		title      	"Servlet_init"
+		zoom       	100
+		max_height 	28350
+		max_width  	21600
+		origin_x   	0
+		origin_y   	300
+		items      	(list diagram_item_list
+		    (object InterObjView "ServletContainer" @4
+			location   	(256, 224)
+			font       	(object Font
+			    size       	10
+			    face       	"courier"
+			    bold       	FALSE
+			    italics    	FALSE
+			    underline  	TRUE
+			    strike     	FALSE
+			    color      	0
+			    default_color 	TRUE)
+			label      	(object ItemLabel
+			    Parent_View 	@4
+			    location   	(256, 224)
+			    fill_color 	13434879
+			    anchor_loc 	1
+			    nlines     	2
+			    max_width  	395
+			    justify    	0
+			    label      	"ServletContainer")
+			icon_style 	"Icon"
+			line_color 	3342489
+			fill_color 	13434879
+			quidu      	"3C114BAF00E7"
+			width      	413
+			height     	1526
+			icon_height 	0
+			icon_width 	0
+			icon_y_offset 	0
+			annotation 	1
+			Focus_Of_Control 	(object Focus_Of_Control "" @5
+			    location   	(256, 384)
+			    line_color 	3342489
+			    InterObjView 	@4
+			    height     	120
+			    y_coord    	60
+			    Nested     	FALSE))
+		    (object InterObjView "FacesServlet" @6
+			location   	(640, 224)
+			font       	(object Font
+			    size       	10
+			    face       	"courier"
+			    bold       	FALSE
+			    italics    	FALSE
+			    underline  	TRUE
+			    strike     	FALSE
+			    color      	0
+			    default_color 	TRUE)
+			label      	(object ItemLabel
+			    Parent_View 	@6
+			    location   	(640, 224)
+			    fill_color 	13434879
+			    anchor_loc 	1
+			    nlines     	2
+			    max_width  	282
+			    justify    	0
+			    label      	"FacesServlet")
+			icon_style 	"Icon"
+			line_color 	3342489
+			fill_color 	13434879
+			quidu      	"3C114C0D00F7"
+			width      	300
+			height     	1526
+			icon_height 	0
+			icon_width 	0
+			icon_y_offset 	0
+			annotation 	1
+			Focus_Of_Control 	(object Focus_Of_Control "" @7
+			    location   	(640, 384)
+			    line_color 	3342489
+			    InterObjView 	@6
+			    height     	60
+			    y_coord    	0
+			    Nested     	FALSE)
+			Focus_Of_Control 	(object Focus_Of_Control "" @8
+			    location   	(640, 592)
+			    line_color 	3342489
+			    InterObjView 	@6
+			    height     	120
+			    y_coord    	60
+			    Nested     	FALSE)
+			Focus_Of_Control 	(object Focus_Of_Control "" @9
+			    location   	(640, 592)
+			    line_color 	3342489
+			    InterObjView 	@6
+			    height     	60
+			    y_coord    	0
+			    Nested     	TRUE)
+			Focus_Of_Control 	(object Focus_Of_Control "" @10
+			    location   	(640, 880)
+			    line_color 	3342489
+			    InterObjView 	@6
+			    height     	120
+			    y_coord    	60
+			    Nested     	FALSE)
+			Focus_Of_Control 	(object Focus_Of_Control "" @11
+			    location   	(640, 880)
+			    line_color 	3342489
+			    InterObjView 	@6
+			    height     	60
+			    y_coord    	0
+			    Nested     	TRUE)
+			Focus_Of_Control 	(object Focus_Of_Control "" @12
+			    location   	(640, 1216)
+			    line_color 	3342489
+			    InterObjView 	@6
+			    height     	120
+			    y_coord    	60
+			    Nested     	FALSE)
+			Focus_Of_Control 	(object Focus_Of_Control "" @13
+			    location   	(640, 1408)
+			    line_color 	3342489
+			    InterObjView 	@6
+			    height     	120
+			    y_coord    	60
+			    Nested     	FALSE)
+			Focus_Of_Control 	(object Focus_Of_Control "" @14
+			    location   	(640, 1540)
+			    line_color 	3342489
+			    InterObjView 	@6
+			    height     	60
+			    y_coord    	0
+			    Nested     	FALSE))
+		    (object InterObjView "ObjectTable" @15
+			location   	(1440, 224)
+			font       	(object Font
+			    size       	10
+			    face       	"courier"
+			    bold       	FALSE
+			    italics    	FALSE
+			    underline  	TRUE
+			    strike     	FALSE
+			    color      	0
+			    default_color 	TRUE)
+			label      	(object ItemLabel
+			    Parent_View 	@15
+			    location   	(1440, 224)
+			    fill_color 	13434879
+			    anchor_loc 	1
+			    nlines     	2
+			    max_width  	282
+			    justify    	0
+			    label      	"ObjectTable")
+			icon_style 	"Icon"
+			line_color 	3342489
+			fill_color 	13434879
+			quidu      	"3C114D30033B"
+			width      	300
+			height     	1526
+			icon_height 	0
+			icon_width 	0
+			icon_y_offset 	0
+			annotation 	1
+			Focus_Of_Control 	(object Focus_Of_Control "" @16
+			    location   	(1344, 1216)
+			    line_color 	3342489
+			    InterObjView 	@15
+			    height     	60
+			    y_coord    	0
+			    Nested     	FALSE)
+			Focus_Of_Control 	(object Focus_Of_Control "" @17
+			    location   	(1440, 1408)
+			    line_color 	3342489
+			    InterObjView 	@15
+			    height     	60
+			    y_coord    	0
+			    Nested     	FALSE)
+			Focus_Of_Control 	(object Focus_Of_Control "" @18
+			    location   	(1440, 1600)
+			    line_color 	3342489
+			    InterObjView 	@15
+			    height     	60
+			    y_coord    	0
+			    Nested     	FALSE))
+		    (object InterMessView "" @19
+			location   	(464, 384)
+			font       	(object Font
+			    size       	10
+			    face       	"courier"
+			    bold       	FALSE
+			    italics    	FALSE
+			    underline  	FALSE
+			    strike     	FALSE
+			    color      	0
+			    default_color 	TRUE)
+			label      	(object SegLabel @20
+			    Parent_View 	@19
+			    location   	(447, 340)
+			    font       	(object Font
+				size       	10
+				face       	"courier"
+				bold       	FALSE
+				italics    	FALSE
+				underline  	FALSE
+				strike     	FALSE
+				color      	0
+				default_color 	TRUE)
+			    quidu      	"3C114C8701C1"
+			    anchor_loc 	1
+			    nlines     	1
+			    max_width  	141
+			    justify    	0
+			    label      	"init()"
+			    pctDist    	0.500000
+			    height     	45
+			    orientation 	0)
+			line_color 	3342489
+			client     	@4
+			supplier   	@6
+			Focus_Src  	@5
+			Focus_Entry 	@7
+			origin     	(271, 384)
+			terminus   	(624, 384)
+			ordinal    	0)
+		    (object SelfMessView "" @21
+			location   	(16, 592)
+			font       	(object Font
+			    size       	10
+			    face       	"courier"
+			    bold       	FALSE
+			    italics    	FALSE
+			    underline  	FALSE
+			    strike     	FALSE
+			    color      	0
+			    default_color 	TRUE)
+			label      	(object SegLabel @22
+			    Parent_View 	@21
+			    location   	(731, 548)
+			    font       	(object Font
+				size       	10
+				face       	"courier"
+				bold       	FALSE
+				italics    	FALSE
+				underline  	FALSE
+				strike     	FALSE
+				color      	0
+				default_color 	TRUE)
+			    quidu      	"3C114C9600AC"
+			    anchor_loc 	1
+			    nlines     	1
+			    max_width  	273
+			    justify    	0
+			    label      	"super.init()"
+			    pctDist    	0.500000
+			    height     	45
+			    orientation 	0)
+			line_color 	3342489
+			client     	@6
+			supplier   	@6
+			Focus_Src  	@8
+			Focus_Entry 	@9
+			origin     	(656, 592)
+			terminus   	(806, 592)
+			ordinal    	1)
+		    (object SelfMessView "" @23
+			location   	(16, 880)
+			font       	(object Font
+			    size       	10
+			    face       	"courier"
+			    bold       	FALSE
+			    italics    	FALSE
+			    underline  	FALSE
+			    strike     	FALSE
+			    color      	0
+			    default_color 	TRUE)
+			label      	(object SegLabel @24
+			    Parent_View 	@23
+			    location   	(731, 836)
+			    font       	(object Font
+				size       	10
+				face       	"courier"
+				bold       	FALSE
+				italics    	FALSE
+				underline  	FALSE
+				strike     	FALSE
+				color      	0
+				default_color 	TRUE)
+			    quidu      	"3C114CD800E5"
+			    anchor_loc 	1
+			    nlines     	1
+			    max_width  	0
+			    justify    	0
+			    label      	""
+			    pctDist    	0.500000
+			    height     	45
+			    orientation 	0)
+			line_color 	3342489
+			client     	@6
+			supplier   	@6
+			Focus_Src  	@10
+			Focus_Entry 	@11
+			origin     	(656, 880)
+			terminus   	(806, 880)
+			ordinal    	2)
+		    (object NoteView @25
+			location   	(976, 928)
+			font       	(object Font
+			    size       	10
+			    face       	"courier"
+			    bold       	FALSE
+			    italics    	FALSE
+			    underline  	FALSE
+			    strike     	FALSE
+			    color      	0
+			    default_color 	TRUE)
+			label      	(object ItemLabel
+			    Parent_View 	@25
+			    location   	(832, 734)
+			    fill_color 	13434879
+			    nlines     	8
+			    max_width  	252
+			    label      	"create ObjectTable and put it in ServletContext attribute table")
+			line_color 	3342489
+			fill_color 	13434879
+			width      	312
+			height     	400)
+		    (object InterMessView "" @26
+			location   	(1040, 1216)
+			font       	(object Font
+			    size       	10
+			    face       	"courier"
+			    bold       	FALSE
+			    italics    	FALSE
+			    underline  	FALSE
+			    strike     	FALSE
+			    color      	0
+			    default_color 	TRUE)
+			label      	(object SegLabel @27
+			    Parent_View 	@26
+			    location   	(1039, 1173)
+			    font       	(object Font
+				size       	10
+				face       	"courier"
+				bold       	FALSE
+				italics    	FALSE
+				underline  	FALSE
+				strike     	FALSE
+				color      	0
+				default_color 	TRUE)
+			    quidu      	"3C114D470169"
+			    anchor_loc 	1
+			    nlines     	1
+			    max_width  	973
+			    justify    	0
+			    label      	"put(GlobalScope, eqfName, eventQueueFactory)"
+			    pctDist    	0.499350
+			    height     	44
+			    orientation 	0)
+			line_color 	3342489
+			client     	@6
+			supplier   	@15
+			Focus_Src  	@12
+			Focus_Entry 	@16
+			origin     	(655, 1216)
+			terminus   	(1424, 1216)
+			ordinal    	3)
+		    (object InterMessView "" @28
+			location   	(16, 1408)
+			font       	(object Font
+			    size       	10
+			    face       	"courier"
+			    bold       	FALSE
+			    italics    	FALSE
+			    underline  	FALSE
+			    strike     	FALSE
+			    color      	0
+			    default_color 	TRUE)
+			label      	(object SegLabel @29
+			    Parent_View 	@28
+			    location   	(1039, 1365)
+			    font       	(object Font
+				size       	10
+				face       	"courier"
+				bold       	FALSE
+				italics    	FALSE
+				underline  	FALSE
+				strike     	FALSE
+				color      	0
+				default_color 	TRUE)
+			    quidu      	"3C114D9B00DF"
+			    anchor_loc 	1
+			    nlines     	1
+			    max_width  	1038
+			    justify    	0
+			    label      	"put(GlobalScope, rcfName, renderContextFactory)"
+			    pctDist    	0.499350
+			    height     	44
+			    orientation 	0)
+			line_color 	3342489
+			client     	@6
+			supplier   	@15
+			Focus_Src  	@13
+			Focus_Entry 	@17
+			origin     	(655, 1408)
+			terminus   	(1424, 1408)
+			ordinal    	4)
+		    (object InterMessView "" @30
+			location   	(16, 1600)
+			font       	(object Font
+			    size       	10
+			    face       	"courier"
+			    bold       	FALSE
+			    italics    	FALSE
+			    underline  	FALSE
+			    strike     	FALSE
+			    color      	0
+			    default_color 	TRUE)
+			label      	(object SegLabel @31
+			    Parent_View 	@30
+			    location   	(1039, 1556)
+			    font       	(object Font
+				size       	10
+				face       	"courier"
+				bold       	FALSE
+				italics    	FALSE
+				underline  	FALSE
+				strike     	FALSE
+				color      	0
+				default_color 	TRUE)
+			    quidu      	"3C114DE00027"
+			    anchor_loc 	1
+			    nlines     	1
+			    max_width  	1082
+			    justify    	0
+			    label      	"put(GlobalScope, edfName, eventDispatcherFactory)"
+			    pctDist    	0.500000
+			    height     	45
+			    orientation 	0)
+			line_color 	3342489
+			client     	@6
+			supplier   	@15
+			Focus_Src  	@14
+			Focus_Entry 	@18
+			origin     	(655, 1600)
+			terminus   	(1424, 1600)
+			ordinal    	5)))
+	    (object InteractionDiagram "EventFlow_1"
+		mechanism_ref 	@2
+		quid       	"3C11596A00A9"
+		title      	"EventFlow_1"
+		zoom       	100
+		max_height 	28350
+		max_width  	21600
+		origin_x   	0
+		origin_y   	4581
+		items      	(list diagram_item_list
+		    (object InterObjView "Container" @32
+			location   	(176, 1328)
+			font       	(object Font
+			    size       	10
+			    face       	"Arial"
+			    bold       	FALSE
+			    italics    	FALSE
+			    underline  	FALSE
+			    strike     	FALSE
+			    color      	0
+			    default_color 	TRUE)
+			label      	(object ItemLabel
+			    Parent_View 	@32
+			    location   	(176, 1328)
+			    fill_color 	13434879
+			    anchor_loc 	1
+			    nlines     	2
+			    max_width  	282
+			    justify    	0
+			    label      	"Container")
+			icon_style 	"Icon"
+			line_color 	3342489
+			fill_color 	13434879
+			quidu      	"3C1159A20399"
+			width      	300
+			height     	4386
+			icon_height 	0
+			icon_width 	0
+			icon_y_offset 	0
+			annotation 	1
+			Focus_Of_Control 	(object Focus_Of_Control "" @33
+			    location   	(176, 1392)
+			    font       	(object Font
+				size       	10
+				face       	"Arial"
+				bold       	FALSE
+				italics    	FALSE
+				underline  	FALSE
+				strike     	FALSE
+				color      	0
+				default_color 	TRUE)
+			    line_color 	3342489
+			    InterObjView 	@32
+			    height     	60
+			    y_coord    	0
+			    Nested     	FALSE)
+			Focus_Of_Control 	(object Focus_Of_Control "" @34
+			    location   	(192, 1472)
+			    font       	(object Font
+				size       	10
+				face       	"Arial"
+				bold       	FALSE
+				italics    	FALSE
+				underline  	FALSE
+				strike     	FALSE
+				color      	0
+				default_color 	TRUE)
+			    line_color 	3342489
+			    InterObjView 	@32
+			    height     	120
+			    y_coord    	60
+			    Nested     	FALSE)
+			Focus_Of_Control 	(object Focus_Of_Control "" @35
+			    location   	(192, 1728)
+			    font       	(object Font
+				size       	10
+				face       	"Arial"
+				bold       	FALSE
+				italics    	FALSE
+				underline  	FALSE
+				strike     	FALSE
+				color      	0
+				default_color 	TRUE)
+			    line_color 	3342489
+			    InterObjView 	@32
+			    height     	120
+			    y_coord    	60
+			    Nested     	FALSE)
+			Focus_Of_Control 	(object Focus_Of_Control "" @36
+			    location   	(192, 2864)
+			    line_color 	3342489
+			    InterObjView 	@32
+			    height     	60
+			    y_coord    	0
+			    Nested     	FALSE)
+			Focus_Of_Control 	(object Focus_Of_Control "" @37
+			    location   	(192, 2976)
+			    line_color 	3342489
+			    InterObjView 	@32
+			    height     	120
+			    y_coord    	60
+			    Nested     	FALSE))
+		    (object InterObjView "CustomAppSessionListener" @38
+			location   	(672, 1328)
+			font       	(object Font
+			    size       	10
+			    face       	"Arial"
+			    bold       	FALSE
+			    italics    	FALSE
+			    underline  	FALSE
+			    strike     	FALSE
+			    color      	0
+			    default_color 	TRUE)
+			label      	(object ItemLabel
+			    Parent_View 	@38
+			    location   	(672, 1328)
+			    fill_color 	13434879
+			    anchor_loc 	1
+			    nlines     	2
+			    max_width  	282
+			    justify    	0
+			    label      	"CustomAppSessionListener")
+			icon_style 	"Icon"
+			line_color 	3342489
+			fill_color 	13434879
+			quidu      	"3C115C400088"
+			width      	300
+			height     	4386
+			icon_height 	0
+			icon_width 	0
+			icon_y_offset 	0
+			annotation 	1
+			Focus_Of_Control 	(object Focus_Of_Control "" @39
+			    location   	(672, 1392)
+			    font       	(object Font
+				size       	10
+				face       	"Arial"
+				bold       	FALSE
+				italics    	FALSE
+				underline  	FALSE
+				strike     	FALSE
+				color      	0
+				default_color 	TRUE)
+			    line_color 	3342489
+			    InterObjView 	@38
+			    height     	60
+			    y_coord    	0
+			    Nested     	FALSE)
+			Focus_Of_Control 	(object Focus_Of_Control "" @40
+			    location   	(688, 1472)
+			    font       	(object Font
+				size       	10
+				face       	"Arial"
+				bold       	FALSE
+				italics    	FALSE
+				underline  	FALSE
+				strike     	FALSE
+				color      	0
+				default_color 	TRUE)
+			    line_color 	3342489
+			    InterObjView 	@38
+			    height     	60
+			    y_coord    	0
+			    Nested     	FALSE)
+			Focus_Of_Control 	(object Focus_Of_Control "" @41
+			    location   	(688, 1536)
+			    font       	(object Font
+				size       	10
+				face       	"Arial"
+				bold       	FALSE
+				italics    	FALSE
+				underline  	FALSE
+				strike     	FALSE
+				color      	0
+				default_color 	TRUE)
+			    line_color 	3342489
+			    InterObjView 	@38
+			    height     	120
+			    y_coord    	60
+			    Nested     	FALSE))
+		    (object InterObjView "FacesServlet" @42
+			location   	(1120, 1328)
+			font       	(object Font
+			    size       	10
+			    face       	"Arial"
+			    bold       	FALSE
+			    italics    	FALSE
+			    underline  	FALSE
+			    strike     	FALSE
+			    color      	0
+			    default_color 	TRUE)
+			label      	(object ItemLabel
+			    Parent_View 	@42
+			    location   	(1120, 1328)
+			    fill_color 	13434879
+			    anchor_loc 	1
+			    nlines     	2
+			    max_width  	282
+			    justify    	0
+			    label      	"FacesServlet")
+			icon_style 	"Icon"
+			line_color 	3342489
+			fill_color 	13434879
+			quidu      	"3C11598602DB"
+			width      	300
+			height     	4386
+			icon_height 	0
+			icon_width 	0
+			icon_y_offset 	0
+			annotation 	1
+			Focus_Of_Control 	(object Focus_Of_Control "" @43
+			    location   	(1120, 1392)
+			    font       	(object Font
+				size       	10
+				face       	"Arial"
+				bold       	FALSE
+				italics    	FALSE
+				underline  	FALSE
+				strike     	FALSE
+				color      	0
+				default_color 	TRUE)
+			    line_color 	3342489
+			    InterObjView 	@42
+			    height     	60
+			    y_coord    	0
+			    Nested     	FALSE)
+			Focus_Of_Control 	(object Focus_Of_Control "" @44
+			    location   	(512, 1728)
+			    font       	(object Font
+				size       	10
+				face       	"Arial"
+				bold       	FALSE
+				italics    	FALSE
+				underline  	FALSE
+				strike     	FALSE
+				color      	0
+				default_color 	TRUE)
+			    line_color 	3342489
+			    InterObjView 	@42
+			    height     	60
+			    y_coord    	0
+			    Nested     	FALSE)
+			Focus_Of_Control 	(object Focus_Of_Control "" @45
+			    location   	(512, 1872)
+			    font       	(object Font
+				size       	10
+				face       	"Arial"
+				bold       	FALSE
+				italics    	FALSE
+				underline  	FALSE
+				strike     	FALSE
+				color      	0
+				default_color 	TRUE)
+			    line_color 	3342489
+			    InterObjView 	@42
+			    height     	120
+			    y_coord    	60
+			    Nested     	FALSE)
+			Focus_Of_Control 	(object Focus_Of_Control "" @46
+			    location   	(512, 1872)
+			    font       	(object Font
+				size       	10
+				face       	"Arial"
+				bold       	FALSE
+				italics    	FALSE
+				underline  	FALSE
+				strike     	FALSE
+				color      	0
+				default_color 	TRUE)
+			    line_color 	3342489
+			    InterObjView 	@42
+			    height     	60
+			    y_coord    	0
+			    Nested     	TRUE)
+			Focus_Of_Control 	(object Focus_Of_Control "" @47
+			    location   	(512, 2096)
+			    font       	(object Font
+				size       	10
+				face       	"Arial"
+				bold       	FALSE
+				italics    	FALSE
+				underline  	FALSE
+				strike     	FALSE
+				color      	0
+				default_color 	TRUE)
+			    line_color 	3342489
+			    InterObjView 	@42
+			    height     	120
+			    y_coord    	60
+			    Nested     	FALSE)
+			Focus_Of_Control 	(object Focus_Of_Control "" @48
+			    location   	(512, 2272)
+			    font       	(object Font
+				size       	10
+				face       	"Arial"
+				bold       	FALSE
+				italics    	FALSE
+				underline  	FALSE
+				strike     	FALSE
+				color      	0
+				default_color 	TRUE)
+			    line_color 	3342489
+			    InterObjView 	@42
+			    height     	184
+			    y_coord    	124
+			    Nested     	FALSE)
+			Focus_Of_Control 	(object Focus_Of_Control "" @49
+			    location   	(512, 2484)
+			    font       	(object Font
+				size       	10
+				face       	"Arial"
+				bold       	FALSE
+				italics    	FALSE
+				underline  	FALSE
+				strike     	FALSE
+				color      	0
+				default_color 	TRUE)
+			    line_color 	3342489
+			    InterObjView 	@42
+			    height     	60
+			    y_coord    	0
+			    Nested     	FALSE)
+			Focus_Of_Control 	(object Focus_Of_Control "" @50
+			    location   	(1136, 2688)
+			    line_color 	3342489
+			    InterObjView 	@42
+			    height     	120
+			    y_coord    	60
+			    Nested     	FALSE)
+			Focus_Of_Control 	(object Focus_Of_Control "" @51
+			    location   	(1136, 2864)
+			    line_color 	3342489
+			    InterObjView 	@42
+			    height     	120
+			    y_coord    	60
+			    Nested     	FALSE))
+		    (object InterObjView "EventQueue" @52
+			location   	(1360, 1184)
+			font       	(object Font
+			    size       	10
+			    face       	"Arial"
+			    bold       	FALSE
+			    italics    	FALSE
+			    underline  	TRUE
+			    strike     	FALSE
+			    color      	0
+			    default_color 	TRUE)
+			label      	(object ItemLabel
+			    Parent_View 	@52
+			    location   	(1360, 1184)
+			    fill_color 	13434879
+			    anchor_loc 	1
+			    nlines     	2
+			    max_width  	282
+			    justify    	0
+			    label      	"EventQueue")
+			icon_style 	"Icon"
+			line_color 	3342489
+			fill_color 	13434879
+			quidu      	"3C115FFB01A8"
+			width      	300
+			height     	4530
+			icon_height 	0
+			icon_width 	0
+			icon_y_offset 	0
+			annotation 	1
+			Focus_Of_Control 	(object Focus_Of_Control "" @53
+			    location   	(1360, 1248)
+			    line_color 	3342489
+			    InterObjView 	@52
+			    height     	60
+			    y_coord    	0
+			    Nested     	FALSE)
+			Focus_Of_Control 	(object Focus_Of_Control "" @54
+			    location   	(1376, 2688)
+			    line_color 	3342489
+			    InterObjView 	@52
+			    height     	60
+			    y_coord    	0
+			    Nested     	FALSE))
+		    (object InterObjView "ObjectTable" @55
+			location   	(1600, 1328)
+			font       	(object Font
+			    size       	10
+			    face       	"Arial"
+			    bold       	FALSE
+			    italics    	FALSE
+			    underline  	FALSE
+			    strike     	FALSE
+			    color      	0
+			    default_color 	TRUE)
+			label      	(object ItemLabel
+			    Parent_View 	@55
+			    location   	(1600, 1328)
+			    fill_color 	13434879
+			    anchor_loc 	1
+			    nlines     	2
+			    max_width  	282
+			    justify    	0
+			    label      	"ObjectTable")
+			icon_style 	"Icon"
+			line_color 	3342489
+			fill_color 	13434879
+			quidu      	"3C115A2101A8"
+			width      	300
+			height     	4386
+			icon_height 	0
+			icon_width 	0
+			icon_y_offset 	0
+			annotation 	1
+			Focus_Of_Control 	(object Focus_Of_Control "" @56
+			    location   	(1600, 1392)
+			    font       	(object Font
+				size       	10
+				face       	"Arial"
+				bold       	FALSE
+				italics    	FALSE
+				underline  	FALSE
+				strike     	FALSE
+				color      	0
+				default_color 	TRUE)
+			    line_color 	3342489
+			    InterObjView 	@55
+			    height     	60
+			    y_coord    	0
+			    Nested     	FALSE)
+			Focus_Of_Control 	(object Focus_Of_Control "" @57
+			    location   	(1760, 1536)
+			    font       	(object Font
+				size       	10
+				face       	"Arial"
+				bold       	FALSE
+				italics    	FALSE
+				underline  	FALSE
+				strike     	FALSE
+				color      	0
+				default_color 	TRUE)
+			    line_color 	3342489
+			    InterObjView 	@55
+			    height     	60
+			    y_coord    	0
+			    Nested     	FALSE)
+			Focus_Of_Control 	(object Focus_Of_Control "" @58
+			    location   	(944, 2096)
+			    font       	(object Font
+				size       	10
+				face       	"Arial"
+				bold       	FALSE
+				italics    	FALSE
+				underline  	FALSE
+				strike     	FALSE
+				color      	0
+				default_color 	TRUE)
+			    line_color 	3342489
+			    InterObjView 	@55
+			    height     	60
+			    y_coord    	0
+			    Nested     	FALSE)
+			Focus_Of_Control 	(object Focus_Of_Control "" @59
+			    location   	(944, 2272)
+			    font       	(object Font
+				size       	10
+				face       	"Arial"
+				bold       	FALSE
+				italics    	FALSE
+				underline  	FALSE
+				strike     	FALSE
+				color      	0
+				default_color 	TRUE)
+			    line_color 	3342489
+			    InterObjView 	@55
+			    height     	60
+			    y_coord    	0
+			    Nested     	FALSE)
+			Focus_Of_Control 	(object Focus_Of_Control "" @60
+			    location   	(1616, 3264)
+			    line_color 	3342489
+			    InterObjView 	@55
+			    height     	60
+			    y_coord    	0
+			    Nested     	FALSE)
+			Focus_Of_Control 	(object Focus_Of_Control "" @61
+			    location   	(1616, 3664)
+			    line_color 	3342489
+			    InterObjView 	@55
+			    height     	60
+			    y_coord    	0
+			    Nested     	FALSE)
+			Focus_Of_Control 	(object Focus_Of_Control "" @62
+			    location   	(1616, 3792)
+			    line_color 	3342489
+			    InterObjView 	@55
+			    height     	120
+			    y_coord    	60
+			    Nested     	FALSE)
+			Focus_Of_Control 	(object Focus_Of_Control "" @63
+			    location   	(1616, 4432)
+			    line_color 	3342489
+			    InterObjView 	@55
+			    height     	60
+			    y_coord    	0
+			    Nested     	FALSE)
+			Focus_Of_Control 	(object Focus_Of_Control "" @64
+			    location   	(1616, 4608)
+			    line_color 	3342489
+			    InterObjView 	@55
+			    height     	60
+			    y_coord    	0
+			    Nested     	FALSE)
+			Focus_Of_Control 	(object Focus_Of_Control "" @65
+			    location   	(1616, 4736)
+			    line_color 	3342489
+			    InterObjView 	@55
+			    height     	120
+			    y_coord    	60
+			    Nested     	FALSE)
+			Focus_Of_Control 	(object Focus_Of_Control "" @66
+			    location   	(1600, 5264)
+			    line_color 	3342489
+			    InterObjView 	@55
+			    height     	60
+			    y_coord    	0
+			    Nested     	FALSE))
+		    (object InterObjView "RenderContext" @67
+			location   	(1792, 1184)
+			font       	(object Font
+			    size       	10
+			    face       	"Arial"
+			    bold       	FALSE
+			    italics    	FALSE
+			    underline  	FALSE
+			    strike     	FALSE
+			    color      	0
+			    default_color 	TRUE)
+			label      	(object ItemLabel
+			    Parent_View 	@67
+			    location   	(1792, 1184)
+			    fill_color 	13434879
+			    anchor_loc 	1
+			    nlines     	2
+			    max_width  	282
+			    justify    	0
+			    label      	"RenderContext")
+			icon_style 	"Icon"
+			line_color 	3342489
+			fill_color 	13434879
+			quidu      	"3C115A970020"
+			width      	300
+			height     	4530
+			icon_height 	0
+			icon_width 	0
+			icon_y_offset 	0
+			annotation 	1
+			Focus_Of_Control 	(object Focus_Of_Control "" @68
+			    location   	(1792, 1248)
+			    font       	(object Font
+				size       	10
+				face       	"Arial"
+				bold       	FALSE
+				italics    	FALSE
+				underline  	FALSE
+				strike     	FALSE
+				color      	0
+				default_color 	TRUE)
+			    line_color 	3342489
+			    InterObjView 	@67
+			    height     	60
+			    y_coord    	0
+			    Nested     	FALSE)
+			Focus_Of_Control 	(object Focus_Of_Control "" @69
+			    location   	(1280, 2336)
+			    font       	(object Font
+				size       	10
+				face       	"Arial"
+				bold       	FALSE
+				italics    	FALSE
+				underline  	FALSE
+				strike     	FALSE
+				color      	0
+				default_color 	TRUE)
+			    line_color 	3342489
+			    InterObjView 	@67
+			    height     	60
+			    y_coord    	0
+			    Nested     	FALSE))
+		    (object InterObjView "RenderKit" @70
+			location   	(2016, 1328)
+			font       	(object Font
+			    size       	10
+			    face       	"Arial"
+			    bold       	FALSE
+			    italics    	FALSE
+			    underline  	FALSE
+			    strike     	FALSE
+			    color      	0
+			    default_color 	TRUE)
+			label      	(object ItemLabel
+			    Parent_View 	@70
+			    location   	(2016, 1328)
+			    fill_color 	13434879
+			    anchor_loc 	1
+			    nlines     	2
+			    max_width  	282
+			    justify    	0
+			    label      	"RenderKit")
+			icon_style 	"Icon"
+			line_color 	3342489
+			fill_color 	13434879
+			quidu      	"3C115AB4026C"
+			width      	300
+			height     	4386
+			icon_height 	0
+			icon_width 	0
+			icon_y_offset 	0
+			annotation 	1
+			Focus_Of_Control 	(object Focus_Of_Control "" @71
+			    location   	(2016, 1392)
+			    font       	(object Font
+				size       	10
+				face       	"Arial"
+				bold       	FALSE
+				italics    	FALSE
+				underline  	FALSE
+				strike     	FALSE
+				color      	0
+				default_color 	TRUE)
+			    line_color 	3342489
+			    InterObjView 	@70
+			    height     	60
+			    y_coord    	0
+			    Nested     	FALSE)
+			Focus_Of_Control 	(object Focus_Of_Control "" @72
+			    location   	(1616, 2544)
+			    font       	(object Font
+				size       	10
+				face       	"Arial"
+				bold       	FALSE
+				italics    	FALSE
+				underline  	FALSE
+				strike     	FALSE
+				color      	0
+				default_color 	TRUE)
+			    line_color 	3342489
+			    InterObjView 	@70
+			    height     	60
+			    y_coord    	0
+			    Nested     	FALSE))
+		    (object InterObjView "TextEntry_InputTag" @73
+			location   	(2272, 1184)
+			font       	(object Font
+			    size       	10
+			    face       	"Arial"
+			    bold       	FALSE
+			    italics    	FALSE
+			    underline  	TRUE
+			    strike     	FALSE
+			    color      	0
+			    default_color 	TRUE)
+			label      	(object ItemLabel
+			    Parent_View 	@73
+			    location   	(2272, 1184)
+			    fill_color 	13434879
+			    anchor_loc 	1
+			    nlines     	2
+			    max_width  	526
+			    justify    	0
+			    label      	"TextEntry_InputTag")
+			icon_style 	"Icon"
+			line_color 	3342489
+			fill_color 	13434879
+			quidu      	"3C115F880050"
+			width      	544
+			height     	4530
+			icon_height 	0
+			icon_width 	0
+			icon_y_offset 	0
+			annotation 	1
+			Focus_Of_Control 	(object Focus_Of_Control "" @74
+			    location   	(2272, 1248)
+			    line_color 	3342489
+			    InterObjView 	@73
+			    height     	60
+			    y_coord    	0
+			    Nested     	FALSE)
+			Focus_Of_Control 	(object Focus_Of_Control "" @75
+			    location   	(2288, 2976)
+			    line_color 	3342489
+			    InterObjView 	@73
+			    height     	60
+			    y_coord    	0
+			    Nested     	FALSE)
+			Focus_Of_Control 	(object Focus_Of_Control "" @76
+			    location   	(2288, 3088)
+			    line_color 	3342489
+			    InterObjView 	@73
+			    height     	120
+			    y_coord    	60
+			    Nested     	FALSE)
+			Focus_Of_Control 	(object Focus_Of_Control "" @77
+			    location   	(2288, 3088)
+			    line_color 	3342489
+			    InterObjView 	@73
+			    height     	60
+			    y_coord    	0
+			    Nested     	TRUE)
+			Focus_Of_Control 	(object Focus_Of_Control "" @78
+			    location   	(2288, 3264)
+			    line_color 	3342489
+			    InterObjView 	@73
+			    height     	120
+			    y_coord    	60
+			    Nested     	FALSE)
+			Focus_Of_Control 	(object Focus_Of_Control "" @79
+			    location   	(2288, 3472)
+			    line_color 	3342489
+			    InterObjView 	@73
+			    height     	120
+			    y_coord    	60
+			    Nested     	FALSE)
+			Focus_Of_Control 	(object Focus_Of_Control "" @80
+			    location   	(2288, 3472)
+			    line_color 	3342489
+			    InterObjView 	@73
+			    height     	60
+			    y_coord    	0
+			    Nested     	TRUE)
+			Focus_Of_Control 	(object Focus_Of_Control "" @81
+			    location   	(2288, 3664)
+			    line_color 	3342489
+			    InterObjView 	@73
+			    height     	120
+			    y_coord    	60
+			    Nested     	FALSE)
+			Focus_Of_Control 	(object Focus_Of_Control "" @82
+			    location   	(2288, 3792)
+			    line_color 	3342489
+			    InterObjView 	@73
+			    height     	60
+			    y_coord    	0
+			    Nested     	FALSE)
+			Focus_Of_Control 	(object Focus_Of_Control "" @83
+			    location   	(2288, 3968)
+			    line_color 	3342489
+			    InterObjView 	@73
+			    height     	120
+			    y_coord    	60
+			    Nested     	FALSE)
+			Focus_Of_Control 	(object Focus_Of_Control "" @84
+			    location   	(2288, 3968)
+			    line_color 	3342489
+			    InterObjView 	@73
+			    height     	60
+			    y_coord    	0
+			    Nested     	TRUE)
+			Focus_Of_Control 	(object Focus_Of_Control "" @85
+			    location   	(2288, 4176)
+			    line_color 	3342489
+			    InterObjView 	@73
+			    height     	120
+			    y_coord    	60
+			    Nested     	FALSE)
+			Focus_Of_Control 	(object Focus_Of_Control "" @86
+			    location   	(2288, 4432)
+			    line_color 	3342489
+			    InterObjView 	@73
+			    height     	120
+			    y_coord    	60
+			    Nested     	FALSE)
+			Focus_Of_Control 	(object Focus_Of_Control "" @87
+			    location   	(2288, 4608)
+			    line_color 	3342489
+			    InterObjView 	@73
+			    height     	120
+			    y_coord    	60
+			    Nested     	FALSE)
+			Focus_Of_Control 	(object Focus_Of_Control "" @88
+			    location   	(2288, 4736)
+			    line_color 	3342489
+			    InterObjView 	@73
+			    height     	60
+			    y_coord    	0
+			    Nested     	FALSE)
+			Focus_Of_Control 	(object Focus_Of_Control "" @89
+			    location   	(2288, 4880)
+			    line_color 	3342489
+			    InterObjView 	@73
+			    height     	120
+			    y_coord    	60
+			    Nested     	FALSE)
+			Focus_Of_Control 	(object Focus_Of_Control "" @90
+			    location   	(2288, 4880)
+			    line_color 	3342489
+			    InterObjView 	@73
+			    height     	60
+			    y_coord    	0
+			    Nested     	TRUE)
+			Focus_Of_Control 	(object Focus_Of_Control "" @91
+			    location   	(2288, 5072)
+			    line_color 	3342489
+			    InterObjView 	@73
+			    height     	120
+			    y_coord    	60
+			    Nested     	FALSE)
+			Focus_Of_Control 	(object Focus_Of_Control "" @92
+			    location   	(2288, 5072)
+			    line_color 	3342489
+			    InterObjView 	@73
+			    height     	60
+			    y_coord    	0
+			    Nested     	TRUE)
+			Focus_Of_Control 	(object Focus_Of_Control "" @93
+			    location   	(2272, 5264)
+			    line_color 	3342489
+			    InterObjView 	@73
+			    height     	120
+			    y_coord    	60
+			    Nested     	FALSE)
+			Focus_Of_Control 	(object Focus_Of_Control "" @94
+			    location   	(2272, 5504)
+			    line_color 	3342489
+			    InterObjView 	@73
+			    height     	120
+			    y_coord    	60
+			    Nested     	FALSE)
+			Focus_Of_Control 	(object Focus_Of_Control "" @95
+			    location   	(2272, 5504)
+			    line_color 	3342489
+			    InterObjView 	@73
+			    height     	60
+			    y_coord    	0
+			    Nested     	TRUE))
+		    (object InterObjView "WTextEntry" @96
+			location   	(2496, 1344)
+			font       	(object Font
+			    size       	10
+			    face       	"Arial"
+			    bold       	FALSE
+			    italics    	FALSE
+			    underline  	TRUE
+			    strike     	FALSE
+			    color      	0
+			    default_color 	TRUE)
+			label      	(object ItemLabel
+			    Parent_View 	@96
+			    location   	(2496, 1344)
+			    fill_color 	13434879
+			    anchor_loc 	1
+			    nlines     	2
+			    max_width  	282
+			    justify    	0
+			    label      	"WTextEntry")
+			icon_style 	"Icon"
+			line_color 	3342489
+			fill_color 	13434879
+			quidu      	"3C11655301B5"
+			width      	300
+			height     	4370
+			icon_height 	0
+			icon_width 	0
+			icon_y_offset 	0
+			annotation 	1
+			Focus_Of_Control 	(object Focus_Of_Control "" @97
+			    location   	(2496, 1408)
+			    line_color 	3342489
+			    InterObjView 	@96
+			    height     	60
+			    y_coord    	0
+			    Nested     	FALSE)
+			Focus_Of_Control 	(object Focus_Of_Control "" @98
+			    location   	(2512, 4176)
+			    line_color 	3342489
+			    InterObjView 	@96
+			    height     	60
+			    y_coord    	0
+			    Nested     	FALSE))
+		    (object InterMessView "" @99
+			location   	(784, 1728)
+			font       	(object Font
+			    size       	10
+			    face       	"Arial"
+			    bold       	FALSE
+			    italics    	FALSE
+			    underline  	FALSE
+			    strike     	FALSE
+			    color      	0
+			    default_color 	TRUE)
+			label      	(object SegLabel @100
+			    Parent_View 	@99
+			    location   	(647, 1684)
+			    font       	(object Font
+				size       	10
+				face       	"Arial"
+				bold       	FALSE
+				italics    	FALSE
+				underline  	FALSE
+				strike     	FALSE
+				color      	0
+				default_color 	TRUE)
+			    quidu      	"3C1159B60243"
+			    anchor_loc 	1
+			    nlines     	1
+			    max_width  	316
+			    justify    	0
+			    label      	"processRequest"
+			    pctDist    	0.500000
+			    height     	45
+			    orientation 	0)
+			line_color 	3342489
+			client     	@32
+			supplier   	@42
+			Focus_Src  	@35
+			Focus_Entry 	@44
+			origin     	(191, 1728)
+			terminus   	(1104, 1728)
+			ordinal    	2)
+		    (object SelfMessView "" @101
+			location   	(16, 1872)
+			font       	(object Font
+			    size       	10
+			    face       	"Arial"
+			    bold       	FALSE
+			    italics    	FALSE
+			    underline  	FALSE
+			    strike     	FALSE
+			    color      	0
+			    default_color 	TRUE)
+			label      	(object SegLabel @102
+			    Parent_View 	@101
+			    location   	(1211, 1828)
+			    font       	(object Font
+				size       	10
+				face       	"Arial"
+				bold       	FALSE
+				italics    	FALSE
+				underline  	FALSE
+				strike     	FALSE
+				color      	0
+				default_color 	TRUE)
+			    quidu      	"3C1159CB005E"
+			    anchor_loc 	1
+			    nlines     	1
+			    max_width  	557
+			    justify    	0
+			    label      	"getObjectTableFromSession"
+			    pctDist    	0.500000
+			    height     	45
+			    orientation 	0)
+			line_color 	3342489
+			client     	@42
+			supplier   	@42
+			Focus_Src  	@45
+			Focus_Entry 	@46
+			origin     	(1136, 1872)
+			terminus   	(1286, 1872)
+			ordinal    	3)
+		    (object InterMessView "" @103
+			location   	(16, 2096)
+			font       	(object Font
+			    size       	10
+			    face       	"Arial"
+			    bold       	FALSE
+			    italics    	FALSE
+			    underline  	FALSE
+			    strike     	FALSE
+			    color      	0
+			    default_color 	TRUE)
+			label      	(object SegLabel @104
+			    Parent_View 	@103
+			    location   	(1359, 2052)
+			    font       	(object Font
+				size       	10
+				face       	"Arial"
+				bold       	FALSE
+				italics    	FALSE
+				underline  	FALSE
+				strike     	FALSE
+				color      	0
+				default_color 	TRUE)
+			    quidu      	"3C115A2E033B"
+			    anchor_loc 	1
+			    nlines     	1
+			    max_width  	679
+			    justify    	0
+			    label      	"get(thisSession,RENDERCONTEXT)"
+			    pctDist    	0.500000
+			    height     	45
+			    orientation 	0)
+			line_color 	3342489
+			client     	@42
+			supplier   	@55
+			Focus_Src  	@47
+			Focus_Entry 	@58
+			origin     	(1135, 2096)
+			terminus   	(1584, 2096)
+			ordinal    	4)
+		    (object InterMessView "" @105
+			location   	(736, 2272)
+			font       	(object Font
+			    size       	10
+			    face       	"Arial"
+			    bold       	FALSE
+			    italics    	FALSE
+			    underline  	FALSE
+			    strike     	FALSE
+			    color      	0
+			    default_color 	TRUE)
+			label      	(object SegLabel @106
+			    Parent_View 	@105
+			    location   	(1359, 2228)
+			    font       	(object Font
+				size       	10
+				face       	"Arial"
+				bold       	FALSE
+				italics    	FALSE
+				underline  	FALSE
+				strike     	FALSE
+				color      	0
+				default_color 	TRUE)
+			    quidu      	"3C115A7B02CC"
+			    anchor_loc 	1
+			    nlines     	1
+			    max_width  	623
+			    justify    	0
+			    label      	"get(thisSession, EVENTQUEUE)"
+			    pctDist    	0.500000
+			    height     	45
+			    orientation 	0)
+			line_color 	3342489
+			client     	@42
+			supplier   	@55
+			Focus_Src  	@48
+			Focus_Entry 	@59
+			origin     	(1135, 2272)
+			terminus   	(1584, 2272)
+			ordinal    	5)
+		    (object InterMessView "" @107
+			location   	(896, 2336)
+			font       	(object Font
+			    size       	10
+			    face       	"Arial"
+			    bold       	FALSE
+			    italics    	FALSE
+			    underline  	FALSE
+			    strike     	FALSE
+			    color      	0
+			    default_color 	TRUE)
+			label      	(object SegLabel @108
+			    Parent_View 	@107
+			    location   	(1455, 2292)
+			    font       	(object Font
+				size       	10
+				face       	"Arial"
+				bold       	FALSE
+				italics    	FALSE
+				underline  	FALSE
+				strike     	FALSE
+				color      	0
+				default_color 	TRUE)
+			    quidu      	"3C115AA302AA"
+			    anchor_loc 	1
+			    nlines     	1
+			    max_width  	316
+			    justify    	0
+			    label      	"getRenderKit()"
+			    pctDist    	0.500000
+			    height     	45
+			    orientation 	0)
+			line_color 	3342489
+			client     	@42
+			supplier   	@67
+			Focus_Src  	@48
+			Focus_Entry 	@69
+			origin     	(1135, 2336)
+			terminus   	(1776, 2336)
+			ordinal    	6)
+		    (object InterMessView "" @109
+			location   	(16, 2544)
+			font       	(object Font
+			    size       	10
+			    face       	"Arial"
+			    bold       	FALSE
+			    italics    	FALSE
+			    underline  	FALSE
+			    strike     	FALSE
+			    color      	0
+			    default_color 	TRUE)
+			label      	(object SegLabel @110
+			    Parent_View 	@109
+			    location   	(1567, 2500)
+			    font       	(object Font
+				size       	10
+				face       	"Arial"
+				bold       	FALSE
+				italics    	FALSE
+				underline  	FALSE
+				strike     	FALSE
+				color      	0
+				default_color 	TRUE)
+			    quidu      	"3C115AC70264"
+			    anchor_loc 	1
+			    nlines     	1
+			    max_width  	710
+			    justify    	0
+			    label      	"queueEvents(request, eventQueue)"
+			    pctDist    	0.500000
+			    height     	45
+			    orientation 	0)
+			line_color 	3342489
+			client     	@42
+			supplier   	@70
+			Focus_Src  	@49
+			Focus_Entry 	@72
+			origin     	(1135, 2544)
+			terminus   	(2000, 2544)
+			ordinal    	7)
+		    (object InterMessView "" @111
+			location   	(16, 1472)
+			font       	(object Font
+			    size       	10
+			    face       	"Arial"
+			    bold       	FALSE
+			    italics    	FALSE
+			    underline  	FALSE
+			    strike     	FALSE
+			    color      	0
+			    default_color 	TRUE)
+			label      	(object SegLabel @112
+			    Parent_View 	@111
+			    location   	(392, 1446)
+			    font       	(object Font
+				size       	10
+				face       	"Arial"
+				bold       	FALSE
+				italics    	FALSE
+				underline  	FALSE
+				strike     	FALSE
+				color      	0
+				default_color 	TRUE)
+			    quidu      	"3C115C8701B8"
+			    anchor_loc 	1
+			    nlines     	1
+			    max_width  	360
+			    justify    	0
+			    label      	"sessionCreated()"
+			    pctDist    	0.432258
+			    height     	27
+			    orientation 	0)
+			line_color 	3342489
+			client     	@32
+			supplier   	@38
+			Focus_Src  	@34
+			Focus_Entry 	@40
+			origin     	(191, 1472)
+			terminus   	(656, 1472)
+			ordinal    	0)
+		    (object InterMessView "" @113
+			location   	(1216, 1536)
+			font       	(object Font
+			    size       	10
+			    face       	"Arial"
+			    bold       	FALSE
+			    italics    	FALSE
+			    underline  	FALSE
+			    strike     	FALSE
+			    color      	0
+			    default_color 	TRUE)
+			label      	(object SegLabel @114
+			    Parent_View 	@113
+			    location   	(1135, 1511)
+			    font       	(object Font
+				size       	10
+				face       	"Arial"
+				bold       	FALSE
+				italics    	FALSE
+				underline  	FALSE
+				strike     	FALSE
+				color      	0
+				default_color 	TRUE)
+			    quidu      	"3C115CB00133"
+			    anchor_loc 	1
+			    nlines     	1
+			    max_width  	1038
+			    justify    	0
+			    label      	
+|put(SessionScope, "LoginBean", LoginBean.class)
+			    
+			    pctDist    	0.499520
+			    height     	26
+			    orientation 	0)
+			line_color 	3342489
+			client     	@38
+			supplier   	@55
+			Focus_Src  	@41
+			Focus_Entry 	@57
+			origin     	(687, 1536)
+			terminus   	(1584, 1536)
+			ordinal    	1)
+		    (object NoteView @115
+			location   	(544, 144)
+			font       	(object Font
+			    size       	10
+			    face       	"Arial"
+			    bold       	FALSE
+			    italics    	FALSE
+			    underline  	FALSE
+			    strike     	FALSE
+			    color      	0
+			    default_color 	TRUE)
+			label      	(object ItemLabel
+			    Parent_View 	@115
+			    location   	(44, 82)
+			    fill_color 	13434879
+			    nlines     	2
+			    max_width  	965
+			    label      	
+|This diagram covers the rendering of a text-field
+|to be used for a form submit: GET /faces/Login.jsp
+			    )
+			line_color 	3342489
+			fill_color 	13434879
+			width      	1025
+			height     	137)
+		    (object InterMessView "" @116
+			location   	(16, 2688)
+			font       	(object Font
+			    size       	10
+			    face       	"Arial"
+			    bold       	FALSE
+			    italics    	FALSE
+			    underline  	FALSE
+			    strike     	FALSE
+			    color      	0
+			    default_color 	TRUE)
+			label      	(object SegLabel @117
+			    Parent_View 	@116
+			    location   	(1239, 2644)
+			    font       	(object Font
+				size       	10
+				face       	"Arial"
+				bold       	FALSE
+				italics    	FALSE
+				underline  	FALSE
+				strike     	FALSE
+				color      	0
+				default_color 	TRUE)
+			    quidu      	"3C1160390233"
+			    anchor_loc 	1
+			    nlines     	1
+			    max_width  	160
+			    justify    	0
+			    label      	"isEmpty"
+			    pctDist    	0.500000
+			    height     	45
+			    orientation 	0)
+			line_color 	3342489
+			client     	@42
+			supplier   	@52
+			Focus_Src  	@50
+			Focus_Entry 	@54
+			origin     	(1135, 2688)
+			terminus   	(1344, 2688)
+			ordinal    	8)
+		    (object NoteView @118
+			location   	(1344, 2784)
+			font       	(object Font
+			    size       	10
+			    face       	"Arial"
+			    bold       	FALSE
+			    italics    	FALSE
+			    underline  	FALSE
+			    strike     	FALSE
+			    color      	0
+			    default_color 	TRUE)
+			label      	(object ItemLabel
+			    Parent_View 	@118
+			    location   	(1153, 2715)
+			    fill_color 	13434879
+			    nlines     	2
+			    max_width  	346
+			    label      	"This'll be empty the first time.")
+			line_color 	3342489
+			fill_color 	13434879
+			width      	406
+			height     	150)
+		    (object InterMessView "" @119
+			location   	(16, 2864)
+			font       	(object Font
+			    size       	10
+			    face       	"Arial"
+			    bold       	FALSE
+			    italics    	FALSE
+			    underline  	FALSE
+			    strike     	FALSE
+			    color      	0
+			    default_color 	TRUE)
+			label      	(object SegLabel @120
+			    Parent_View 	@119
+			    location   	(648, 2820)
+			    font       	(object Font
+				size       	10
+				face       	"Arial"
+				bold       	FALSE
+				italics    	FALSE
+				underline  	FALSE
+				strike     	FALSE
+				color      	0
+				default_color 	TRUE)
+			    quidu      	"3C1160AE023A"
+			    anchor_loc 	1
+			    nlines     	1
+			    max_width  	0
+			    justify    	0
+			    label      	""
+			    pctDist    	0.500000
+			    height     	45
+			    orientation 	1)
+			line_color 	3342489
+			client     	@42
+			supplier   	@32
+			Focus_Src  	@51
+			Focus_Entry 	@36
+			origin     	(1104, 2864)
+			terminus   	(192, 2864)
+			ordinal    	9)
+		    (object InterMessView "" @121
+			location   	(16, 2976)
+			font       	(object Font
+			    size       	10
+			    face       	"Arial"
+			    bold       	FALSE
+			    italics    	FALSE
+			    underline  	FALSE
+			    strike     	FALSE
+			    color      	0
+			    default_color 	TRUE)
+			label      	(object SegLabel @122
+			    Parent_View 	@121
+			    location   	(329, 2932)
+			    font       	(object Font
+				size       	10
+				face       	"Arial"
+				bold       	FALSE
+				italics    	FALSE
+				underline  	FALSE
+				strike     	FALSE
+				color      	0
+				default_color 	TRUE)
+			    quidu      	"3C1160B80089"
+			    anchor_loc 	1
+			    nlines     	1
+			    max_width  	238
+			    justify    	0
+			    label      	"doStartTag()"
+			    pctDist    	0.066828
+			    height     	45
+			    orientation 	0)
+			line_color 	3342489
+			client     	@32
+			supplier   	@73
+			Focus_Src  	@37
+			Focus_Entry 	@75
+			origin     	(191, 2976)
+			terminus   	(2256, 2976)
+			ordinal    	10)
+		    (object SelfMessView "" @123
+			location   	(16, 3088)
+			font       	(object Font
+			    size       	10
+			    face       	"Arial"
+			    bold       	FALSE
+			    italics    	FALSE
+			    underline  	FALSE
+			    strike     	FALSE
+			    color      	0
+			    default_color 	TRUE)
+			label      	(object SegLabel @124
+			    Parent_View 	@123
+			    location   	(2363, 3044)
+			    font       	(object Font
+				size       	10
+				face       	"Arial"
+				bold       	FALSE
+				italics    	FALSE
+				underline  	FALSE
+				strike     	FALSE
+				color      	0
+				default_color 	TRUE)
+			    quidu      	"3C1160D60107"
+			    anchor_loc 	1
+			    nlines     	1
+			    max_width  	286
+			    justify    	0
+			    label      	"getObjectTable"
+			    pctDist    	0.500000
+			    height     	45
+			    orientation 	0)
+			line_color 	3342489
+			client     	@73
+			supplier   	@73
+			Focus_Src  	@76
+			Focus_Entry 	@77
+			origin     	(2288, 3088)
+			terminus   	(2438, 3088)
+			ordinal    	11)
+		    (object InterMessView "" @125
+			location   	(16, 3264)
+			font       	(object Font
+			    size       	10
+			    face       	"Arial"
+			    bold       	FALSE
+			    italics    	FALSE
+			    underline  	FALSE
+			    strike     	FALSE
+			    color      	0
+			    default_color 	TRUE)
+			label      	(object SegLabel @126
+			    Parent_View 	@125
+			    location   	(1936, 3220)
+			    font       	(object Font
+				size       	10
+				face       	"Arial"
+				bold       	FALSE
+				italics    	FALSE
+				underline  	FALSE
+				strike     	FALSE
+				color      	0
+				default_color 	TRUE)
+			    quidu      	"3C1160F2019F"
+			    anchor_loc 	1
+			    nlines     	1
+			    max_width  	952
+			    justify    	0
+			    label      	"getRenderContext(thisSession,RENDERCONTEXT)"
+			    pctDist    	0.500000
+			    height     	45
+			    orientation 	1)
+			line_color 	3342489
+			client     	@73
+			supplier   	@55
+			Focus_Src  	@78
+			Focus_Entry 	@60
+			origin     	(2256, 3264)
+			terminus   	(1616, 3264)
+			ordinal    	12)
+		    (object SelfMessView "" @127
+			location   	(16, 3472)
+			font       	(object Font
+			    size       	10
+			    face       	"Arial"
+			    bold       	FALSE
+			    italics    	FALSE
+			    underline  	FALSE
+			    strike     	FALSE
+			    color      	0
+			    default_color 	TRUE)
+			label      	(object SegLabel @128
+			    Parent_View 	@127
+			    location   	(2363, 3428)
+			    font       	(object Font
+				size       	10
+				face       	"Arial"
+				bold       	FALSE
+				italics    	FALSE
+				underline  	FALSE
+				strike     	FALSE
+				color      	0
+				default_color 	TRUE)
+			    quidu      	"3C1161360269"
+			    anchor_loc 	1
+			    nlines     	1
+			    max_width  	263
+			    justify    	0
+			    label      	"getRenderer()"
+			    pctDist    	0.500000
+			    height     	45
+			    orientation 	0)
+			line_color 	3342489
+			client     	@73
+			supplier   	@73
+			Focus_Src  	@79
+			Focus_Entry 	@80
+			origin     	(2288, 3472)
+			terminus   	(2438, 3472)
+			ordinal    	13)
+		    (object InterMessView "" @129
+			location   	(16, 3664)
+			font       	(object Font
+			    size       	10
+			    face       	"Arial"
+			    bold       	FALSE
+			    italics    	FALSE
+			    underline  	FALSE
+			    strike     	FALSE
+			    color      	0
+			    default_color 	TRUE)
+			label      	(object SegLabel @130
+			    Parent_View 	@129
+			    location   	(1936, 3620)
+			    font       	(object Font
+				size       	10
+				face       	"Arial"
+				bold       	FALSE
+				italics    	FALSE
+				underline  	FALSE
+				strike     	FALSE
+				color      	0
+				default_color 	TRUE)
+			    quidu      	"3C1162A203B2"
+			    anchor_loc 	1
+			    nlines     	1
+			    max_width  	600
+			    justify    	0
+			    label      	
+|get(thisRequest, "userName")
+			    
+			    pctDist    	0.500000
+			    height     	45
+			    orientation 	1)
+			line_color 	3342489
+			client     	@73
+			supplier   	@55
+			Focus_Src  	@81
+			Focus_Entry 	@61
+			origin     	(2256, 3664)
+			terminus   	(1616, 3664)
+			ordinal    	14)
+		    (object InterMessView "" @131
+			location   	(16, 3792)
+			font       	(object Font
+			    size       	10
+			    face       	"Arial"
+			    bold       	FALSE
+			    italics    	FALSE
+			    underline  	FALSE
+			    strike     	FALSE
+			    color      	0
+			    default_color 	TRUE)
+			label      	(object SegLabel @132
+			    Parent_View 	@131
+			    location   	(1935, 3748)
+			    font       	(object Font
+				size       	10
+				face       	"Arial"
+				bold       	FALSE
+				italics    	FALSE
+				underline  	FALSE
+				strike     	FALSE
+				color      	0
+				default_color 	TRUE)
+			    quidu      	"3C1162D601CE"
+			    anchor_loc 	1
+			    nlines     	1
+			    max_width  	73
+			    justify    	0
+			    label      	"null"
+			    pctDist    	0.500000
+			    height     	45
+			    orientation 	0)
+			line_color 	3342489
+			client     	@55
+			supplier   	@73
+			Focus_Src  	@62
+			Focus_Entry 	@82
+			origin     	(1615, 3792)
+			terminus   	(2256, 3792)
+			ordinal    	15)
+		    (object SelfMessView "" @133
+			location   	(16, 3968)
+			font       	(object Font
+			    size       	10
+			    face       	"Arial"
+			    bold       	FALSE
+			    italics    	FALSE
+			    underline  	FALSE
+			    strike     	FALSE
+			    color      	0
+			    default_color 	TRUE)
+			label      	(object SegLabel @134
+			    Parent_View 	@133
+			    location   	(2363, 3924)
+			    font       	(object Font
+				size       	10
+				face       	"Arial"
+				bold       	FALSE
+				italics    	FALSE
+				underline  	FALSE
+				strike     	FALSE
+				color      	0
+				default_color 	TRUE)
+			    quidu      	"3C1162EF02A3"
+			    anchor_loc 	1
+			    nlines     	1
+			    max_width  	366
+			    justify    	0
+			    label      	"new WTextEntry()"
+			    pctDist    	0.500000
+			    height     	45
+			    orientation 	0)
+			line_color 	3342489
+			client     	@73
+			supplier   	@73
+			Focus_Src  	@83
+			Focus_Entry 	@84
+			origin     	(2288, 3968)
+			terminus   	(2438, 3968)
+			ordinal    	16)
+		    (object NoteView @135
+			location   	(1824, 4096)
+			font       	(object Font
+			    size       	10
+			    face       	"Arial"
+			    bold       	FALSE
+			    italics    	FALSE
+			    underline  	FALSE
+			    strike     	FALSE
+			    color      	0
+			    default_color 	TRUE)
+			label      	(object ItemLabel
+			    Parent_View 	@135
+			    location   	(1480, 3861)
+			    fill_color 	13434879
+			    nlines     	9
+			    max_width  	652
+			    label      	
+|1. Copy attrs from our tag to the component's attr set.
+|2. If this tag has no model attr, find the model attr from the enclosing form tag: "LoginBean
+|3. Construct a model reference from this tag's name, "userName", and the model bean, "LoginBean": $LoginBean.userName
+			    )
+			line_color 	3342489
+			fill_color 	13434879
+			width      	712
+			height     	482)
+		    (object InterMessView "" @136
+			location   	(16, 4176)
+			font       	(object Font
+			    size       	10
+			    face       	"Arial"
+			    bold       	FALSE
+			    italics    	FALSE
+			    underline  	FALSE
+			    strike     	FALSE
+			    color      	0
+			    default_color 	TRUE)
+			label      	(object SegLabel @137
+			    Parent_View 	@136
+			    location   	(2623, 4147)
+			    font       	(object Font
+				size       	10
+				face       	"Arial"
+				bold       	FALSE
+				italics    	FALSE
+				underline  	FALSE
+				strike     	FALSE
+				color      	0
+				default_color 	TRUE)
+			    quidu      	"3C11656A0098"
+			    anchor_loc 	1
+			    nlines     	1
+			    max_width  	647
+			    justify    	0
+			    label      	
+|setModel("$LoginBean.userName")
+			    
+			    pctDist    	1.740933
+			    height     	30
+			    orientation 	0)
+			line_color 	3342489
+			client     	@73
+			supplier   	@96
+			Focus_Src  	@85
+			Focus_Entry 	@98
+			origin     	(2287, 4176)
+			terminus   	(2480, 4176)
+			ordinal    	17)
+		    (object InterMessView "" @138
+			location   	(1952, 4432)
+			font       	(object Font
+			    size       	10
+			    face       	"Arial"
+			    bold       	FALSE
+			    italics    	FALSE
+			    underline  	FALSE
+			    strike     	FALSE
+			    color      	0
+			    default_color 	TRUE)
+			label      	(object SegLabel @139
+			    Parent_View 	@138
+			    location   	(1999, 4390)
+			    font       	(object Font
+				size       	10
+				face       	"Arial"
+				bold       	FALSE
+				italics    	FALSE
+				underline  	FALSE
+				strike     	FALSE
+				color      	0
+				default_color 	TRUE)
+			    quidu      	"3C1165C20236"
+			    anchor_loc 	1
+			    nlines     	1
+			    max_width  	772
+			    justify    	0
+			    label      	
+|put(thisSession, "userName', wTextEntry)
+			    
+			    pctDist    	0.401563
+			    height     	43
+			    orientation 	1)
+			line_color 	3342489
+			client     	@73
+			supplier   	@55
+			Focus_Src  	@86
+			Focus_Entry 	@63
+			origin     	(2256, 4432)
+			terminus   	(1616, 4432)
+			ordinal    	18)
+		    (object InterMessView "" @140
+			location   	(16, 4608)
+			font       	(object Font
+			    size       	10
+			    face       	"Arial"
+			    bold       	FALSE
+			    italics    	FALSE
+			    underline  	FALSE
+			    strike     	FALSE
+			    color      	0
+			    default_color 	TRUE)
+			label      	(object SegLabel @141
+			    Parent_View 	@140
+			    location   	(2094, 4580)
+			    font       	(object Font
+				size       	10
+				face       	"Arial"
+				bold       	FALSE
+				italics    	FALSE
+				underline  	FALSE
+				strike     	FALSE
+				color      	0
+				default_color 	TRUE)
+			    quidu      	"3C11660800B0"
+			    anchor_loc 	1
+			    nlines     	1
+			    max_width  	963
+			    justify    	0
+			    label      	
+|get(thisRequest, "userName.valueChangeListeners")
+			    
+			    pctDist    	0.253125
+			    height     	29
+			    orientation 	1)
+			line_color 	3342489
+			client     	@73
+			supplier   	@55
+			Focus_Src  	@87
+			Focus_Entry 	@64
+			origin     	(2256, 4608)
+			terminus   	(1616, 4608)
+			ordinal    	19)
+		    (object InterMessView "" @142
+			location   	(16, 4736)
+			font       	(object Font
+			    size       	10
+			    face       	"Arial"
+			    bold       	FALSE
+			    italics    	FALSE
+			    underline  	FALSE
+			    strike     	FALSE
+			    color      	0
+			    default_color 	TRUE)
+			label      	(object SegLabel @143
+			    Parent_View 	@142
+			    location   	(1935, 4692)
+			    font       	(object Font
+				size       	10
+				face       	"Arial"
+				bold       	FALSE
+				italics    	FALSE
+				underline  	FALSE
+				strike     	FALSE
+				color      	0
+				default_color 	TRUE)
+			    quidu      	"3C11665A011D"
+			    anchor_loc 	1
+			    nlines     	1
+			    max_width  	73
+			    justify    	0
+			    label      	"null"
+			    pctDist    	0.500000
+			    height     	45
+			    orientation 	0)
+			line_color 	3342489
+			client     	@55
+			supplier   	@73
+			Focus_Src  	@65
+			Focus_Entry 	@88
+			origin     	(1615, 4736)
+			terminus   	(2256, 4736)
+			ordinal    	20)
+		    (object SelfMessView "" @144
+			location   	(16, 4880)
+			font       	(object Font
+			    size       	10
+			    face       	"Arial"
+			    bold       	FALSE
+			    italics    	FALSE
+			    underline  	FALSE
+			    strike     	FALSE
+			    color      	0
+			    default_color 	TRUE)
+			label      	(object SegLabel @145
+			    Parent_View 	@144
+			    location   	(2363, 4836)
+			    font       	(object Font
+				size       	10
+				face       	"Arial"
+				bold       	FALSE
+				italics    	FALSE
+				underline  	FALSE
+				strike     	FALSE
+				color      	0
+				default_color 	TRUE)
+			    quidu      	"3C116687023D"
+			    anchor_loc 	1
+			    nlines     	1
+			    max_width  	458
+			    justify    	0
+			    label      	"listeners = new Vector()"
+			    pctDist    	0.500000
+			    height     	45
+			    orientation 	0)
+			line_color 	3342489
+			client     	@73
+			supplier   	@73
+			Focus_Src  	@89
+			Focus_Entry 	@90
+			origin     	(2288, 4880)
+			terminus   	(2438, 4880)
+			ordinal    	21)
+		    (object SelfMessView "" @146
+			location   	(16, 5072)
+			font       	(object Font
+			    size       	10
+			    face       	"Arial"
+			    bold       	FALSE
+			    italics    	FALSE
+			    underline  	FALSE
+			    strike     	FALSE
+			    color      	0
+			    default_color 	TRUE)
+			label      	(object SegLabel @147
+			    Parent_View 	@146
+			    location   	(2363, 5028)
+			    font       	(object Font
+				size       	10
+				face       	"Arial"
+				bold       	FALSE
+				italics    	FALSE
+				underline  	FALSE
+				strike     	FALSE
+				color      	0
+				default_color 	TRUE)
+			    quidu      	"3C1166B70090"
+			    anchor_loc 	1
+			    nlines     	1
+			    max_width  	527
+			    justify    	0
+			    label      	
+|listeners.add("loginListener")
+			    
+			    pctDist    	0.500000
+			    height     	45
+			    orientation 	0)
+			line_color 	3342489
+			client     	@73
+			supplier   	@73
+			Focus_Src  	@91
+			Focus_Entry 	@92
+			origin     	(2288, 5072)
+			terminus   	(2438, 5072)
+			ordinal    	22)
+		    (object NoteView @148
+			location   	(608, 752)
+			font       	(object Font
+			    size       	8
+			    face       	"Arial"
+			    bold       	FALSE
+			    italics    	FALSE
+			    underline  	FALSE
+			    strike     	FALSE
+			    color      	0
+			    default_color 	TRUE)
+			label      	(object ItemLabel
+			    Parent_View 	@148
+			    location   	(36, 315)
+			    fill_color 	13434879
+			    nlines     	21
+			    max_width  	1109
+			    label      	
+|    <faces:useFaces>
+|        <faces:form name="basicForm" model="LoginBean">
+|            <faces:Listener name="loginListener" scope="session" 
+|                            className="basic.EventHandler" />
+|            <faces:Command name="handleLogin" scope="session" 
+|                           className="basic.EventHandler" 
+|                           onCompletion="welcome.jsp" onError="error.jsp"/>
+|
+|           <table> 
+|            <tr> 
+|              <td> UserName </td>
+|              <td> <faces:TextEntry_Input name="userName" size="20" 
+|                    maxlength="26" valueChangeListener="loginListener" /></td>
+|            </tr>
+|             <tr> 
+|             <td><faces:command_button name="login" label="login" 
+|                  command="handleLogin" /></td>
+|             </tr>
+|          </table>
+|        </faces:form>
+|    </faces:useFaces>
+			    )
+			line_color 	3342489
+			fill_color 	13434879
+			width      	1169
+			height     	887)
+		    (object InterMessView "" @149
+			location   	(16, 5264)
+			font       	(object Font
+			    size       	10
+			    face       	"Arial"
+			    bold       	FALSE
+			    italics    	FALSE
+			    underline  	FALSE
+			    strike     	FALSE
+			    color      	0
+			    default_color 	TRUE)
+			label      	(object SegLabel @150
+			    Parent_View 	@149
+			    location   	(2177, 5234)
+			    font       	(object Font
+				size       	10
+				face       	"Arial"
+				bold       	FALSE
+				italics    	FALSE
+				underline  	FALSE
+				strike     	FALSE
+				color      	0
+				default_color 	TRUE)
+			    quidu      	"3C11686D00A3"
+			    anchor_loc 	1
+			    nlines     	1
+			    max_width  	1157
+			    justify    	0
+			    label      	
+|put(thisSession,"userName.valueChangeListeners", listeners)
+			    
+			    pctDist    	0.123438
+			    height     	31
+			    orientation 	1)
+			line_color 	3342489
+			client     	@73
+			supplier   	@55
+			Focus_Src  	@93
+			Focus_Entry 	@66
+			origin     	(2256, 5264)
+			terminus   	(1616, 5264)
+			ordinal    	23)
+		    (object SelfMessView "" @151
+			location   	(16, 5504)
+			font       	(object Font
+			    size       	10
+			    face       	"Arial"
+			    bold       	FALSE
+			    italics    	FALSE
+			    underline  	FALSE
+			    strike     	FALSE
+			    color      	0
+			    default_color 	TRUE)
+			label      	(object SegLabel @152
+			    Parent_View 	@151
+			    location   	(2363, 5460)
+			    font       	(object Font
+				size       	10
+				face       	"Arial"
+				bold       	FALSE
+				italics    	FALSE
+				underline  	FALSE
+				strike     	FALSE
+				color      	0
+				default_color 	TRUE)
+			    quidu      	"3C1168E3039A"
+			    anchor_loc 	1
+			    nlines     	1
+			    max_width  	240
+			    justify    	0
+			    label      	"renderStart()"
+			    pctDist    	0.500000
+			    height     	45
+			    orientation 	0)
+			line_color 	3342489
+			client     	@73
+			supplier   	@73
+			Focus_Src  	@94
+			Focus_Entry 	@95
+			origin     	(2288, 5504)
+			terminus   	(2438, 5504)
+			ordinal    	24)))
+	    (object InteractionDiagram "EventFlow_2"
+		mechanism_ref 	@3
+		quid       	"3C1169CC0148"
+		title      	"EventFlow_2"
+		zoom       	100
+		max_height 	28350
+		max_width  	21600
+		origin_x   	0
+		origin_y   	4362
+		items      	(list diagram_item_list
+		    (object InterObjView "container" @153
+			location   	(192, 1408)
+			font       	(object Font
+			    size       	10
+			    face       	"Arial"
+			    bold       	FALSE
+			    italics    	FALSE
+			    underline  	TRUE
+			    strike     	FALSE
+			    color      	0
+			    default_color 	TRUE)
+			label      	(object ItemLabel
+			    Parent_View 	@153
+			    location   	(192, 1408)
+			    fill_color 	13434879
+			    anchor_loc 	1
+			    nlines     	2
+			    max_width  	282
+			    justify    	0
+			    label      	"container")
+			icon_style 	"Icon"
+			line_color 	3342489
+			fill_color 	13434879
+			quidu      	"3C116DDB006F"
+			width      	300
+			height     	3170
+			icon_height 	0
+			icon_width 	0
+			icon_y_offset 	0
+			annotation 	1
+			Focus_Of_Control 	(object Focus_Of_Control "" @154
+			    location   	(192, 1472)
+			    line_color 	3342489
+			    InterObjView 	@153
+			    height     	60
+			    y_coord    	0
+			    Nested     	FALSE)
+			Focus_Of_Control 	(object Focus_Of_Control "" @155
+			    location   	(192, 1584)
+			    line_color 	3342489
+			    InterObjView 	@153
+			    height     	120
+			    y_coord    	60
+			    Nested     	FALSE))
+		    (object InterObjView "FacesServlet" @156
+			location   	(448, 1280)
+			font       	(object Font
+			    size       	10
+			    face       	"Arial"
+			    bold       	FALSE
+			    italics    	FALSE
+			    underline  	TRUE
+			    strike     	FALSE
+			    color      	0
+			    default_color 	TRUE)
+			label      	(object ItemLabel
+			    Parent_View 	@156
+			    location   	(448, 1280)
+			    fill_color 	13434879
+			    anchor_loc 	1
+			    nlines     	2
+			    max_width  	282
+			    justify    	0
+			    label      	"FacesServlet")
+			icon_style 	"Icon"
+			line_color 	3342489
+			fill_color 	13434879
+			quidu      	"3C116DEE02A8"
+			width      	300
+			height     	3298
+			icon_height 	0
+			icon_width 	0
+			icon_y_offset 	0
+			annotation 	1
+			Focus_Of_Control 	(object Focus_Of_Control "" @157
+			    location   	(448, 1344)
+			    line_color 	3342489
+			    InterObjView 	@156
+			    height     	60
+			    y_coord    	0
+			    Nested     	FALSE)
+			Focus_Of_Control 	(object Focus_Of_Control "" @158
+			    location   	(448, 1584)
+			    line_color 	3342489
+			    InterObjView 	@156
+			    height     	60
+			    y_coord    	0
+			    Nested     	FALSE)
+			Focus_Of_Control 	(object Focus_Of_Control "" @159
+			    location   	(448, 1712)
+			    line_color 	3342489
+			    InterObjView 	@156
+			    height     	120
+			    y_coord    	60
+			    Nested     	FALSE)
+			Focus_Of_Control 	(object Focus_Of_Control "" @160
+			    location   	(448, 3696)
+			    line_color 	3342489
+			    InterObjView 	@156
+			    height     	60
+			    y_coord    	0
+			    Nested     	FALSE)
+			Focus_Of_Control 	(object Focus_Of_Control "" @161
+			    location   	(448, 3808)
+			    line_color 	3342489
+			    InterObjView 	@156
+			    height     	146
+			    y_coord    	86
+			    Nested     	FALSE)
+			Focus_Of_Control 	(object Focus_Of_Control "" @162
+			    location   	(448, 3888)
+			    line_color 	3342489
+			    InterObjView 	@156
+			    height     	60
+			    y_coord    	0
+			    Nested     	TRUE)
+			Focus_Of_Control 	(object Focus_Of_Control "" @163
+			    location   	(448, 4096)
+			    line_color 	3342489
+			    InterObjView 	@156
+			    height     	120
+			    y_coord    	60
+			    Nested     	FALSE)
+			Focus_Of_Control 	(object Focus_Of_Control "" @164
+			    location   	(448, 4368)
+			    line_color 	3342489
+			    InterObjView 	@156
+			    height     	120
+			    y_coord    	60
+			    Nested     	FALSE))
+		    (object InterObjView "RenderKit" @165
+			location   	(656, 1408)
+			font       	(object Font
+			    size       	10
+			    face       	"Arial"
+			    bold       	FALSE
+			    italics    	FALSE
+			    underline  	TRUE
+			    strike     	FALSE
+			    color      	0
+			    default_color 	TRUE)
+			label      	(object ItemLabel
+			    Parent_View 	@165
+			    location   	(656, 1408)
+			    fill_color 	13434879
+			    anchor_loc 	1
+			    nlines     	2
+			    max_width  	282
+			    justify    	0
+			    label      	"RenderKit")
+			icon_style 	"Icon"
+			line_color 	3342489
+			fill_color 	13434879
+			quidu      	"3C116E0C0060"
+			width      	300
+			height     	3170
+			icon_height 	0
+			icon_width 	0
+			icon_y_offset 	0
+			annotation 	1
+			Focus_Of_Control 	(object Focus_Of_Control "" @166
+			    location   	(656, 1472)
+			    line_color 	3342489
+			    InterObjView 	@165
+			    height     	60
+			    y_coord    	0
+			    Nested     	FALSE)
+			Focus_Of_Control 	(object Focus_Of_Control "" @167
+			    location   	(656, 1712)
+			    line_color 	3342489
+			    InterObjView 	@165
+			    height     	60
+			    y_coord    	0
+			    Nested     	FALSE)
+			Focus_Of_Control 	(object Focus_Of_Control "" @168
+			    location   	(656, 1824)
+			    line_color 	3342489
+			    InterObjView 	@165
+			    height     	120
+			    y_coord    	60
+			    Nested     	FALSE)
+			Focus_Of_Control 	(object Focus_Of_Control "" @169
+			    location   	(656, 1968)
+			    line_color 	3342489
+			    InterObjView 	@165
+			    height     	60
+			    y_coord    	0
+			    Nested     	FALSE)
+			Focus_Of_Control 	(object Focus_Of_Control "" @170
+			    location   	(656, 2144)
+			    line_color 	3342489
+			    InterObjView 	@165
+			    height     	120
+			    y_coord    	60
+			    Nested     	FALSE)
+			Focus_Of_Control 	(object Focus_Of_Control "" @171
+			    location   	(656, 2144)
+			    line_color 	3342489
+			    InterObjView 	@165
+			    height     	60
+			    y_coord    	0
+			    Nested     	TRUE)
+			Focus_Of_Control 	(object Focus_Of_Control "" @172
+			    location   	(656, 2436)
+			    line_color 	3342489
+			    InterObjView 	@165
+			    height     	60
+			    y_coord    	0
+			    Nested     	FALSE)
+			Focus_Of_Control 	(object Focus_Of_Control "" @173
+			    location   	(656, 2640)
+			    line_color 	3342489
+			    InterObjView 	@165
+			    height     	60
+			    y_coord    	0
+			    Nested     	FALSE)
+			Focus_Of_Control 	(object Focus_Of_Control "" @174
+			    location   	(656, 3520)
+			    line_color 	3342489
+			    InterObjView 	@165
+			    height     	120
+			    y_coord    	60
+			    Nested     	FALSE)
+			Focus_Of_Control 	(object Focus_Of_Control "" @175
+			    location   	(656, 3520)
+			    line_color 	3342489
+			    InterObjView 	@165
+			    height     	60
+			    y_coord    	0
+			    Nested     	TRUE)
+			Focus_Of_Control 	(object Focus_Of_Control "" @176
+			    location   	(656, 3696)
+			    line_color 	3342489
+			    InterObjView 	@165
+			    height     	178
+			    y_coord    	118
+			    Nested     	FALSE)
+			Focus_Of_Control 	(object Focus_Of_Control "" @177
+			    location   	(656, 3808)
+			    line_color 	3342489
+			    InterObjView 	@165
+			    height     	60
+			    y_coord    	0
+			    Nested     	TRUE)
+			Focus_Of_Control 	(object Focus_Of_Control "" @178
+			    location   	(656, 3888)
+			    line_color 	3342489
+			    InterObjView 	@165
+			    height     	120
+			    y_coord    	60
+			    Nested     	FALSE))
+		    (object InterObjView "ObjectTable" @179
+			location   	(880, 1280)
+			font       	(object Font
+			    size       	10
+			    face       	"Arial"
+			    bold       	FALSE
+			    italics    	FALSE
+			    underline  	TRUE
+			    strike     	FALSE
+			    color      	0
+			    default_color 	TRUE)
+			label      	(object ItemLabel
+			    Parent_View 	@179
+			    location   	(880, 1280)
+			    fill_color 	13434879
+			    anchor_loc 	1
+			    nlines     	2
+			    max_width  	282
+			    justify    	0
+			    label      	"ObjectTable")
+			icon_style 	"Icon"
+			line_color 	3342489
+			fill_color 	13434879
+			quidu      	"3C116E580088"
+			width      	300
+			height     	3298
+			icon_height 	0
+			icon_width 	0
+			icon_y_offset 	0
+			annotation 	1
+			Focus_Of_Control 	(object Focus_Of_Control "" @180
+			    location   	(880, 1344)
+			    line_color 	3342489
+			    InterObjView 	@179
+			    height     	60
+			    y_coord    	0
+			    Nested     	FALSE)
+			Focus_Of_Control 	(object Focus_Of_Control "" @181
+			    location   	(880, 1824)
+			    line_color 	3342489
+			    InterObjView 	@179
+			    height     	60
+			    y_coord    	0
+			    Nested     	FALSE)
+			Focus_Of_Control 	(object Focus_Of_Control "" @182
+			    location   	(880, 1968)
+			    line_color 	3342489
+			    InterObjView 	@179
+			    height     	120
+			    y_coord    	60
+			    Nested     	FALSE)
+			Focus_Of_Control 	(object Focus_Of_Control "" @183
+			    location   	(880, 2496)
+			    line_color 	3342489
+			    InterObjView 	@179
+			    height     	60
+			    y_coord    	0
+			    Nested     	FALSE)
+			Focus_Of_Control 	(object Focus_Of_Control "" @184
+			    location   	(880, 2640)
+			    line_color 	3342489
+			    InterObjView 	@179
+			    height     	120
+			    y_coord    	60
+			    Nested     	FALSE)
+			Focus_Of_Control 	(object Focus_Of_Control "" @185
+			    location   	(880, 4096)
+			    line_color 	3342489
+			    InterObjView 	@179
+			    height     	60
+			    y_coord    	0
+			    Nested     	FALSE))
+		    (object InterObjView "ValueChangeDispatcherImpl" @186
+			location   	(1536, 1424)
+			font       	(object Font
+			    size       	10
+			    face       	"Arial"
+			    bold       	FALSE
+			    italics    	FALSE
+			    underline  	TRUE
+			    strike     	FALSE
+			    color      	0
+			    default_color 	TRUE)
+			label      	(object ItemLabel
+			    Parent_View 	@186
+			    location   	(1536, 1424)
+			    fill_color 	13434879
+			    anchor_loc 	1
+			    nlines     	2
+			    max_width  	682
+			    justify    	0
+			    label      	"ValueChangeDispatcherImpl")
+			icon_style 	"Icon"
+			line_color 	3342489
+			fill_color 	13434879
+			quidu      	"3C11726202D3"
+			width      	700
+			height     	3154
+			icon_height 	0
+			icon_width 	0
+			icon_y_offset 	0
+			annotation 	1
+			Focus_Of_Control 	(object Focus_Of_Control "" @187
+			    location   	(1536, 1488)
+			    line_color 	3342489
+			    InterObjView 	@186
+			    height     	60
+			    y_coord    	0
+			    Nested     	FALSE)
+			Focus_Of_Control 	(object Focus_Of_Control "" @188
+			    location   	(1536, 4368)
+			    line_color 	3342489
+			    InterObjView 	@186
+			    height     	60
+			    y_coord    	0
+			    Nested     	FALSE))
+		    (object NoteView @189
+			location   	(544, 112)
+			font       	(object Font
+			    size       	10
+			    face       	"Arial"
+			    bold       	FALSE
+			    italics    	FALSE
+			    underline  	FALSE
+			    strike     	FALSE
+			    color      	0
+			    default_color 	TRUE)
+			label      	(object ItemLabel
+			    Parent_View 	@189
+			    location   	(37, 21)
+			    fill_color 	13434879
+			    nlines     	3
+			    max_width  	978
+			    label      	
+|This diagram covers the processing of a text-field
+|from a form submit: GET /faces/Login.jsp?userName=edburns&login=login
+			    )
+			line_color 	3342489
+			fill_color 	13434879
+			width      	1038
+			height     	194)
+		    (object NoteView @190
+			location   	(608, 752)
+			font       	(object Font
+			    size       	8
+			    face       	"Arial"
+			    bold       	FALSE
+			    italics    	FALSE
+			    underline  	FALSE
+			    strike     	FALSE
+			    color      	0
+			    default_color 	TRUE)
+			label      	(object ItemLabel
+			    Parent_View 	@190
+			    location   	(36, 315)
+			    fill_color 	13434879
+			    nlines     	21
+			    max_width  	1109
+			    label      	
+|    <faces:useFaces>
+|        <faces:form name="basicForm" model="LoginBean">
+|            <faces:Listener name="loginListener" scope="session" 
+|                            className="basic.EventHandler" />
+|            <faces:Command name="handleLogin" scope="session" 
+|                           className="basic.EventHandler" 
+|                           onCompletion="welcome.jsp" onError="error.jsp"/>
+|
+|           <table> 
+|            <tr> 
+|              <td> UserName </td>
+|              <td> <faces:TextEntry_Input name="userName" size="20" 
+|                    maxlength="26" valueChangeListener="loginListener" /></td>
+|            </tr>
+|             <tr> 
+|             <td><faces:command_button name="login" label="login" 
+|                  command="handleLogin" /></td>
+|             </tr>
+|          </table>
+|        </faces:form>
+|    </faces:useFaces>
+			    )
+			line_color 	3342489
+			fill_color 	13434879
+			width      	1169
+			height     	887)
+		    (object InterMessView "" @191
+			location   	(16, 1584)
+			font       	(object Font
+			    size       	10
+			    face       	"Arial"
+			    bold       	FALSE
+			    italics    	FALSE
+			    underline  	FALSE
+			    strike     	FALSE
+			    color      	0
+			    default_color 	TRUE)
+			label      	(object SegLabel @192
+			    Parent_View 	@191
+			    location   	(384, 1555)
+			    font       	(object Font
+				size       	10
+				face       	"Arial"
+				bold       	FALSE
+				italics    	FALSE
+				underline  	FALSE
+				strike     	FALSE
+				color      	0
+				default_color 	TRUE)
+			    quidu      	"3C116E000382"
+			    anchor_loc 	1
+			    nlines     	1
+			    max_width  	329
+			    justify    	0
+			    label      	"processRequest()"
+			    pctDist    	0.786667
+			    height     	30
+			    orientation 	0)
+			line_color 	3342489
+			client     	@153
+			supplier   	@156
+			Focus_Src  	@155
+			Focus_Entry 	@158
+			origin     	(207, 1584)
+			terminus   	(432, 1584)
+			ordinal    	0)
+		    (object InterMessView "" @193
+			location   	(16, 1712)
+			font       	(object Font
+			    size       	10
+			    face       	"Arial"
+			    bold       	FALSE
+			    italics    	FALSE
+			    underline  	FALSE
+			    strike     	FALSE
+			    color      	0
+			    default_color 	TRUE)
+			label      	(object SegLabel @194
+			    Parent_View 	@193
+			    location   	(792, 1683)
+			    font       	(object Font
+				size       	10
+				face       	"Arial"
+				bold       	FALSE
+				italics    	FALSE
+				underline  	FALSE
+				strike     	FALSE
+				color      	0
+				default_color 	TRUE)
+			    quidu      	"3C116E1C0084"
+			    anchor_loc 	1
+			    nlines     	1
+			    max_width  	663
+			    justify    	0
+			    label      	"queueEvents(request, eventQueue)"
+			    pctDist    	1.858757
+			    height     	30
+			    orientation 	0)
+			line_color 	3342489
+			client     	@156
+			supplier   	@165
+			Focus_Src  	@159
+			Focus_Entry 	@167
+			origin     	(463, 1712)
+			terminus   	(640, 1712)
+			ordinal    	1)
+		    (object InterMessView "" @195
+			location   	(16, 1824)
+			font       	(object Font
+			    size       	10
+			    face       	"Arial"
+			    bold       	FALSE
+			    italics    	FALSE
+			    underline  	FALSE
+			    strike     	FALSE
+			    color      	0
+			    default_color 	TRUE)
+			label      	(object SegLabel @196
+			    Parent_View 	@195
+			    location   	(864, 1796)
+			    font       	(object Font
+				size       	10
+				face       	"Arial"
+				bold       	FALSE
+				italics    	FALSE
+				underline  	FALSE
+				strike     	FALSE
+				color      	0
+				default_color 	TRUE)
+			    quidu      	"3C116E66015F"
+			    anchor_loc 	1
+			    nlines     	1
+			    max_width  	396
+			    justify    	0
+			    label      	
+|get(request, "login")
+			    
+			    pctDist    	1.000000
+			    height     	29
+			    orientation 	0)
+			line_color 	3342489
+			client     	@165
+			supplier   	@179
+			Focus_Src  	@168
+			Focus_Entry 	@181
+			origin     	(671, 1824)
+			terminus   	(864, 1824)
+			ordinal    	2)
+		    (object NoteView @197
+			location   	(1216, 1824)
+			font       	(object Font
+			    size       	10
+			    face       	"Arial"
+			    bold       	FALSE
+			    italics    	FALSE
+			    underline  	FALSE
+			    strike     	FALSE
+			    color      	0
+			    default_color 	TRUE)
+			label      	(object ItemLabel
+			    Parent_View 	@197
+			    location   	(1075, 1743)
+			    fill_color 	13434879
+			    nlines     	3
+			    max_width  	246
+			    label      	
+|this "login" is from the param names
+			    )
+			line_color 	3342489
+			fill_color 	13434879
+			width      	306
+			height     	175)
+		    (object InterMessView "" @198
+			location   	(16, 1968)
+			font       	(object Font
+			    size       	10
+			    face       	"Arial"
+			    bold       	FALSE
+			    italics    	FALSE
+			    underline  	FALSE
+			    strike     	FALSE
+			    color      	0
+			    default_color 	TRUE)
+			label      	(object SegLabel @199
+			    Parent_View 	@198
+			    location   	(831, 1940)
+			    font       	(object Font
+				size       	10
+				face       	"Arial"
+				bold       	FALSE
+				italics    	FALSE
+				underline  	FALSE
+				strike     	FALSE
+				color      	0
+				default_color 	TRUE)
+			    quidu      	"3C116E96003F"
+			    anchor_loc 	1
+			    nlines     	1
+			    max_width  	304
+			    justify    	0
+			    label      	"the WCommand"
+			    pctDist    	0.171875
+			    height     	29
+			    orientation 	1)
+			line_color 	3342489
+			client     	@179
+			supplier   	@165
+			Focus_Src  	@182
+			Focus_Entry 	@169
+			origin     	(864, 1968)
+			terminus   	(672, 1968)
+			ordinal    	3)
+		    (object SelfMessView "" @200
+			location   	(16, 2144)
+			font       	(object Font
+			    size       	10
+			    face       	"Arial"
+			    bold       	FALSE
+			    italics    	FALSE
+			    underline  	FALSE
+			    strike     	FALSE
+			    color      	0
+			    default_color 	TRUE)
+			label      	(object SegLabel @201
+			    Parent_View 	@200
+			    location   	(1112, 2117)
+			    font       	(object Font
+				size       	10
+				face       	"Arial"
+				bold       	FALSE
+				italics    	FALSE
+				underline  	FALSE
+				strike     	FALSE
+				color      	0
+				default_color 	TRUE)
+			    quidu      	"3C116EC90368"
+			    anchor_loc 	1
+			    nlines     	1
+			    max_width  	851
+			    justify    	0
+			    label      	
+|new CommandEvent(request, "login"  , "login")
+			    
+			    pctDist    	2.933333
+			    height     	28
+			    orientation 	0)
+			line_color 	3342489
+			client     	@165
+			supplier   	@165
+			Focus_Src  	@170
+			Focus_Entry 	@171
+			origin     	(672, 2144)
+			terminus   	(822, 2144)
+			ordinal    	4)
+		    (object NoteView @202
+			location   	(1232, 2288)
+			font       	(object Font
+			    size       	10
+			    face       	"Arial"
+			    bold       	FALSE
+			    italics    	FALSE
+			    underline  	FALSE
+			    strike     	FALSE
+			    color      	0
+			    default_color 	TRUE)
+			label      	(object ItemLabel
+			    Parent_View 	@202
+			    location   	(710, 2204)
+			    fill_color 	13434879
+			    nlines     	3
+			    max_width  	1009
+			    label      	"save this CommandEvent in a local var Vector, so the CommandEvents are added to the queue after the ValueChangeEvents")
+			line_color 	3342489
+			fill_color 	13434879
+			width      	1069
+			height     	181)
+		    (object InterMessView "" @203
+			location   	(768, 2496)
+			font       	(object Font
+			    size       	10
+			    face       	"Arial"
+			    bold       	FALSE
+			    italics    	FALSE
+			    underline  	FALSE
+			    strike     	FALSE
+			    color      	0
+			    default_color 	TRUE)
+			label      	(object SegLabel @204
+			    Parent_View 	@203
+			    location   	(961, 2452)
+			    font       	(object Font
+				size       	10
+				face       	"Arial"
+				bold       	FALSE
+				italics    	FALSE
+				underline  	FALSE
+				strike     	FALSE
+				color      	0
+				default_color 	TRUE)
+			    quidu      	"3C116F6F0155"
+			    anchor_loc 	1
+			    nlines     	1
+			    max_width  	514
+			    justify    	0
+			    label      	
+|get(request, "userName")
+			    
+			    pctDist    	1.502591
+			    height     	45
+			    orientation 	0)
+			line_color 	3342489
+			client     	@165
+			supplier   	@179
+			Focus_Src  	@172
+			Focus_Entry 	@183
+			origin     	(671, 2496)
+			terminus   	(864, 2496)
+			ordinal    	5)
+		    (object InterMessView "" @205
+			location   	(784, 2640)
+			font       	(object Font
+			    size       	10
+			    face       	"Arial"
+			    bold       	FALSE
+			    italics    	FALSE
+			    underline  	FALSE
+			    strike     	FALSE
+			    color      	0
+			    default_color 	TRUE)
+			label      	(object SegLabel @206
+			    Parent_View 	@205
+			    location   	(817, 2599)
+			    font       	(object Font
+				size       	10
+				face       	"Arial"
+				bold       	FALSE
+				italics    	FALSE
+				underline  	FALSE
+				strike     	FALSE
+				color      	0
+				default_color 	TRUE)
+			    quidu      	"3C116F870000"
+			    anchor_loc 	1
+			    nlines     	1
+			    max_width  	371
+			    justify    	0
+			    label      	"the WTextEntry"
+			    pctDist    	0.244792
+			    height     	42
+			    orientation 	1)
+			line_color 	3342489
+			client     	@179
+			supplier   	@165
+			Focus_Src  	@184
+			Focus_Entry 	@173
+			origin     	(864, 2640)
+			terminus   	(672, 2640)
+			ordinal    	6)
+		    (object NoteView @207
+			location   	(1584, 3024)
+			font       	(object Font
+			    size       	10
+			    face       	"Arial"
+			    bold       	FALSE
+			    italics    	FALSE
+			    underline  	FALSE
+			    strike     	FALSE
+			    color      	0
+			    default_color 	TRUE)
+			label      	(object ItemLabel
+			    Parent_View 	@207
+			    location   	(965, 2615)
+			    fill_color 	13434879
+			    nlines     	16
+			    max_width  	1203
+			    label      	
+|Since this param's entry in the ObjectTable isa WTextEntry:
+|
+|1. create ValueChangeEvent:
+|
+|new ValueChangeEvent(request, "userName", "$LoginBean.userName", "edburns");  userName and edburns come from the query string of the request URL.  LoginBean.userName is the value of the WTextEntry instance's "model" property.
+|
+|2. Compare the param_value from the query string, "edburns" with the current value from the component.
+|
+|3. If the value is different from the current value, add the ValueChangeEvent to the queue.
+			    )
+			line_color 	3342489
+			fill_color 	13434879
+			width      	1263
+			height     	831)
+		    (object SelfMessView "" @208
+			location   	(16, 3520)
+			font       	(object Font
+			    size       	10
+			    face       	"Arial"
+			    bold       	FALSE
+			    italics    	FALSE
+			    underline  	FALSE
+			    strike     	FALSE
+			    color      	0
+			    default_color 	TRUE)
+			label      	(object SegLabel @209
+			    Parent_View 	@208
+			    location   	(905, 3478)
+			    font       	(object Font
+				size       	10
+				face       	"Arial"
+				bold       	FALSE
+				italics    	FALSE
+				underline  	FALSE
+				strike     	FALSE
+				color      	0
+				default_color 	TRUE)
+			    quidu      	"3C11714E017B"
+			    anchor_loc 	1
+			    nlines     	1
+			    max_width  	394
+			    justify    	0
+			    label      	"add CommandEvents"
+			    pctDist    	1.560000
+			    height     	43
+			    orientation 	0)
+			line_color 	3342489
+			client     	@165
+			supplier   	@165
+			Focus_Src  	@174
+			Focus_Entry 	@175
+			origin     	(672, 3520)
+			terminus   	(822, 3520)
+			ordinal    	7)
+		    (object InterMessView "" @210
+			location   	(560, 3696)
+			font       	(object Font
+			    size       	10
+			    face       	"Arial"
+			    bold       	FALSE
+			    italics    	FALSE
+			    underline  	FALSE
+			    strike     	FALSE
+			    color      	0
+			    default_color 	TRUE)
+			label      	(object SegLabel @211
+			    Parent_View 	@210
+			    location   	(552, 3652)
+			    font       	(object Font
+				size       	10
+				face       	"Arial"
+				bold       	FALSE
+				italics    	FALSE
+				underline  	FALSE
+				strike     	FALSE
+				color      	0
+				default_color 	TRUE)
+			    quidu      	"3C1171770189"
+			    anchor_loc 	1
+			    nlines     	1
+			    max_width  	0
+			    justify    	0
+			    label      	""
+			    pctDist    	0.500000
+			    height     	45
+			    orientation 	1)
+			line_color 	3342489
+			client     	@165
+			supplier   	@156
+			Focus_Src  	@176
+			Focus_Entry 	@160
+			origin     	(640, 3696)
+			terminus   	(464, 3696)
+			ordinal    	8)
+		    (object InterMessView "" @212
+			location   	(16, 3808)
+			font       	(object Font
+			    size       	10
+			    face       	"Arial"
+			    bold       	FALSE
+			    italics    	FALSE
+			    underline  	FALSE
+			    strike     	FALSE
+			    color      	0
+			    default_color 	TRUE)
+			label      	(object SegLabel @213
+			    Parent_View 	@212
+			    location   	(551, 3764)
+			    font       	(object Font
+				size       	10
+				face       	"Arial"
+				bold       	FALSE
+				italics    	FALSE
+				underline  	FALSE
+				strike     	FALSE
+				color      	0
+				default_color 	TRUE)
+			    quidu      	"3C11718B00E1"
+			    anchor_loc 	1
+			    nlines     	1
+			    max_width  	185
+			    justify    	0
+			    label      	"isEmpty()"
+			    pctDist    	0.500000
+			    height     	45
+			    orientation 	0)
+			line_color 	3342489
+			client     	@156
+			supplier   	@165
+			Focus_Src  	@161
+			Focus_Entry 	@177
+			origin     	(463, 3808)
+			terminus   	(640, 3808)
+			ordinal    	9)
+		    (object InterMessView "" @214
+			location   	(16, 3888)
+			font       	(object Font
+			    size       	10
+			    face       	"Arial"
+			    bold       	FALSE
+			    italics    	FALSE
+			    underline  	FALSE
+			    strike     	FALSE
+			    color      	0
+			    default_color 	TRUE)
+			label      	(object SegLabel @215
+			    Parent_View 	@214
+			    location   	(552, 3844)
+			    font       	(object Font
+				size       	10
+				face       	"Arial"
+				bold       	FALSE
+				italics    	FALSE
+				underline  	FALSE
+				strike     	FALSE
+				color      	0
+				default_color 	TRUE)
+			    quidu      	"3C117196017D"
+			    anchor_loc 	1
+			    nlines     	1
+			    max_width  	102
+			    justify    	0
+			    label      	"false"
+			    pctDist    	0.500000
+			    height     	45
+			    orientation 	1)
+			line_color 	3342489
+			client     	@165
+			supplier   	@156
+			Focus_Src  	@178
+			Focus_Entry 	@162
+			origin     	(640, 3888)
+			terminus   	(464, 3888)
+			ordinal    	10)
+		    (object InterMessView "" @216
+			location   	(672, 4096)
+			font       	(object Font
+			    size       	10
+			    face       	"Arial"
+			    bold       	FALSE
+			    italics    	FALSE
+			    underline  	FALSE
+			    strike     	FALSE
+			    color      	0
+			    default_color 	TRUE)
+			label      	(object SegLabel @217
+			    Parent_View 	@216
+			    location   	(806, 4053)
+			    font       	(object Font
+				size       	10
+				face       	"Arial"
+				bold       	FALSE
+				italics    	FALSE
+				underline  	FALSE
+				strike     	FALSE
+				color      	0
+				default_color 	TRUE)
+			    quidu      	"3C1171BE012D"
+			    anchor_loc 	1
+			    nlines     	1
+			    max_width  	673
+			    justify    	0
+			    label      	"get(EVENTDISPATCHERFACTORY)"
+			    pctDist    	0.855362
+			    height     	44
+			    orientation 	0)
+			line_color 	3342489
+			client     	@156
+			supplier   	@179
+			Focus_Src  	@163
+			Focus_Entry 	@185
+			origin     	(463, 4096)
+			terminus   	(864, 4096)
+			ordinal    	11)
+		    (object NoteView @218
+			location   	(848, 4208)
+			font       	(object Font
+			    size       	10
+			    face       	"Arial"
+			    bold       	FALSE
+			    italics    	FALSE
+			    underline  	FALSE
+			    strike     	FALSE
+			    color      	0
+			    default_color 	TRUE)
+			label      	(object ItemLabel
+			    Parent_View 	@218
+			    location   	(544, 4130)
+			    fill_color 	13434879
+			    nlines     	3
+			    max_width  	572
+			    label      	"for each event in the queue, get an event dispatcher specific to that event.")
+			line_color 	3342489
+			fill_color 	13434879
+			width      	632
+			height     	169)
+		    (object InterMessView "" @219
+			location   	(992, 4368)
+			font       	(object Font
+			    size       	10
+			    face       	"Arial"
+			    bold       	FALSE
+			    italics    	FALSE
+			    underline  	FALSE
+			    strike     	FALSE
+			    color      	0
+			    default_color 	TRUE)
+			label      	(object SegLabel @220
+			    Parent_View 	@219
+			    location   	(817, 4339)
+			    font       	(object Font
+				size       	10
+				face       	"Arial"
+				bold       	FALSE
+				italics    	FALSE
+				underline  	FALSE
+				strike     	FALSE
+				color      	0
+				default_color 	TRUE)
+			    quidu      	"3C11732A0091"
+			    anchor_loc 	1
+			    nlines     	1
+			    max_width  	666
+			    justify    	0
+			    label      	"dispatch(request, response, event)"
+			    pctDist    	0.334910
+			    height     	30
+			    orientation 	0)
+			line_color 	3342489
+			client     	@156
+			supplier   	@186
+			Focus_Src  	@164
+			Focus_Entry 	@188
+			origin     	(463, 4368)
+			terminus   	(1520, 4368)
+			ordinal    	12)))))
+    root_subsystem 	(object SubSystem "Component View"
+	quid       	"3C113F9A028C"
+	physical_models 	(list unit_reference_list)
+	physical_presentations 	(list unit_reference_list
+	    (object Module_Diagram "Main"
+		quid       	"3C113F9A0307"
+		title      	"Main"
+		zoom       	100
+		max_height 	28350
+		max_width  	21600
+		origin_x   	0
+		origin_y   	0
+		items      	(list diagram_item_list))))
+    process_structure 	(object Processes
+	quid       	"3C113F9A028D"
+	ProcsNDevs 	(list
+	    (object Process_Diagram "Deployment View"
+		quid       	"3C113F9A028F"
+		title      	"Deployment View"
+		zoom       	100
+		max_height 	28350
+		max_width  	21600
+		origin_x   	0
+		origin_y   	0
+		items      	(list diagram_item_list))))
+    properties 	(object Properties
+	attributes 	(list Attribute_Set
+	    (object Attribute
+		tool       	"Cplusplus"
+		name       	"propertyId"
+		value      	"809135966")
+	    (object Attribute
+		tool       	"Cplusplus"
+		name       	"default__Role"
+		value      	(list Attribute_Set
+		    (object Attribute
+			tool       	"Cplusplus"
+			name       	"Synchronize"
+			value      	TRUE)
+		    (object Attribute
+			tool       	"Cplusplus"
+			name       	"CodeName"
+			value      	"")
+		    (object Attribute
+			tool       	"Cplusplus"
+			name       	"Const"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"Cplusplus"
+			name       	"InitialValue"
+			value      	"")))
+	    (object Attribute
+		tool       	"Cplusplus"
+		name       	"default__Inherit"
+		value      	(list Attribute_Set
+		    (object Attribute
+			tool       	"Cplusplus"
+			name       	"Synchronize"
+			value      	TRUE)))
+	    (object Attribute
+		tool       	"Cplusplus"
+		name       	"default__Module-Spec"
+		value      	(list Attribute_Set
+		    (object Attribute
+			tool       	"Cplusplus"
+			name       	"Synchronize"
+			value      	TRUE)
+		    (object Attribute
+			tool       	"Cplusplus"
+			name       	"Copyright"
+			value      	(value Text ""))
+		    (object Attribute
+			tool       	"Cplusplus"
+			name       	"RootPackage"
+			value      	"C++ Reverse Engineered")
+		    (object Attribute
+			tool       	"Cplusplus"
+			name       	"InitialHeaderIncludes"
+			value      	(value Text ""))
+		    (object Attribute
+			tool       	"Cplusplus"
+			name       	"InitialBodyIncludes"
+			value      	(value Text ""))))
+	    (object Attribute
+		tool       	"Cplusplus"
+		name       	"default__Param"
+		value      	(list Attribute_Set
+		    (object Attribute
+			tool       	"Cplusplus"
+			name       	"CodeName"
+			value      	"")))
+	    (object Attribute
+		tool       	"Cplusplus"
+		name       	"default__Attribute"
+		value      	(list Attribute_Set
+		    (object Attribute
+			tool       	"Cplusplus"
+			name       	"Synchronize"
+			value      	TRUE)
+		    (object Attribute
+			tool       	"Cplusplus"
+			name       	"CodeName"
+			value      	"")))
+	    (object Attribute
+		tool       	"Cplusplus"
+		name       	"default__Operation"
+		value      	(list Attribute_Set
+		    (object Attribute
+			tool       	"Cplusplus"
+			name       	"Synchronize"
+			value      	TRUE)
+		    (object Attribute
+			tool       	"Cplusplus"
+			name       	"CodeName"
+			value      	"")
+		    (object Attribute
+			tool       	"Cplusplus"
+			name       	"InitialCodeBody"
+			value      	"")
+		    (object Attribute
+			tool       	"Cplusplus"
+			name       	"Inline"
+			value      	FALSE)))
+	    (object Attribute
+		tool       	"Cplusplus"
+		name       	"default__Class"
+		value      	(list Attribute_Set
+		    (object Attribute
+			tool       	"Cplusplus"
+			name       	"Synchronize"
+			value      	TRUE)
+		    (object Attribute
+			tool       	"Cplusplus"
+			name       	"CodeName"
+			value      	"")
+		    (object Attribute
+			tool       	"Cplusplus"
+			name       	"ImplementationType"
+			value      	"")
+		    (object Attribute
+			tool       	"Cplusplus"
+			name       	"HeaderSourceFile"
+			value      	"")
+		    (object Attribute
+			tool       	"Cplusplus"
+			name       	"BodySourceFile"
+			value      	"")))
+	    (object Attribute
+		tool       	"Cplusplus"
+		name       	"default__Category"
+		value      	(list Attribute_Set
+		    (object Attribute
+			tool       	"Cplusplus"
+			name       	"CodeName"
+			value      	"")
+		    (object Attribute
+			tool       	"Cplusplus"
+			name       	"IsNamespace"
+			value      	FALSE)))
+	    (object Attribute
+		tool       	"Cplusplus"
+		name       	"HiddenTool"
+		value      	FALSE)
+	    (object Attribute
+		tool       	"ANSI C++ Event Watcher"
+		name       	"HiddenTool"
+		value      	FALSE)
+	    (object Attribute
+		tool       	"ANSIConvert"
+		name       	"HiddenTool"
+		value      	FALSE)
+	    (object Attribute
+		tool       	"Ada83"
+		name       	"propertyId"
+		value      	"838326200")
+	    (object Attribute
+		tool       	"Ada83"
+		name       	"default__Project"
+		value      	(list Attribute_Set
+		    (object Attribute
+			tool       	"Ada83"
+			name       	"SpecFileExtension"
+			value      	"1.ada")
+		    (object Attribute
+			tool       	"Ada83"
+			name       	"SpecFileBackupExtension"
+			value      	"1.ad~")
+		    (object Attribute
+			tool       	"Ada83"
+			name       	"SpecFileTemporaryExtension"
+			value      	"1.ad#")
+		    (object Attribute
+			tool       	"Ada83"
+			name       	"BodyFileExtension"
+			value      	"2.ada")
+		    (object Attribute
+			tool       	"Ada83"
+			name       	"BodyFileBackupExtension"
+			value      	"2.ad~")
+		    (object Attribute
+			tool       	"Ada83"
+			name       	"BodyFileTemporaryExtension"
+			value      	"2.ad#")
+		    (object Attribute
+			tool       	"Ada83"
+			name       	"CreateMissingDirectories"
+			value      	TRUE)
+		    (object Attribute
+			tool       	"Ada83"
+			name       	"GenerateBodies"
+			value      	TRUE)
+		    (object Attribute
+			tool       	"Ada83"
+			name       	"GenerateAccessorOperations"
+			value      	TRUE)
+		    (object Attribute
+			tool       	"Ada83"
+			name       	"GenerateStandardOperations"
+			value      	TRUE)
+		    (object Attribute
+			tool       	"Ada83"
+			name       	"DefaultCodeBody"
+			value      	"[statement]")
+		    (object Attribute
+			tool       	"Ada83"
+			name       	"ImplicitParameter"
+			value      	TRUE)
+		    (object Attribute
+			tool       	"Ada83"
+			name       	"CommentWidth"
+			value      	60)
+		    (object Attribute
+			tool       	"Ada83"
+			name       	"StopOnError"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"Ada83"
+			name       	"ErrorLimit"
+			value      	30)
+		    (object Attribute
+			tool       	"Ada83"
+			name       	"UseFileName"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"Ada83"
+			name       	"Directory"
+			value      	"$ROSEADA83_SOURCE")))
+	    (object Attribute
+		tool       	"Ada83"
+		name       	"default__Class"
+		value      	(list Attribute_Set
+		    (object Attribute
+			tool       	"Ada83"
+			name       	"CodeName"
+			value      	"")
+		    (object Attribute
+			tool       	"Ada83"
+			name       	"ClassName"
+			value      	"Object")
+		    (object Attribute
+			tool       	"Ada83"
+			name       	"ClassAccess"
+			value      	("ImplementationSet" 43))
+		    (object Attribute
+			tool       	"Ada83"
+			name       	"ImplementationType"
+			value      	(value Text ""))
+		    (object Attribute
+			tool       	"Ada83"
+			name       	"IsSubtype"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"Ada83"
+			name       	"PolymorphicUnit"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"Ada83"
+			name       	"HandleName"
+			value      	"Handle")
+		    (object Attribute
+			tool       	"Ada83"
+			name       	"HandleAccess"
+			value      	("ImplementationSet" 45))
+		    (object Attribute
+			tool       	"Ada83"
+			name       	"Discriminant"
+			value      	"")
+		    (object Attribute
+			tool       	"Ada83"
+			name       	"Variant"
+			value      	"")
+		    (object Attribute
+			tool       	"Ada83"
+			name       	"EnumerationLiteralPrefix"
+			value      	"A_")
+		    (object Attribute
+			tool       	"Ada83"
+			name       	"RecordFieldPrefix"
+			value      	"The_")
+		    (object Attribute
+			tool       	"Ada83"
+			name       	"GenerateAccessorOperations"
+			value      	TRUE)
+		    (object Attribute
+			tool       	"Ada83"
+			name       	"GenerateStandardOperations"
+			value      	TRUE)
+		    (object Attribute
+			tool       	"Ada83"
+			name       	"ImplicitParameter"
+			value      	TRUE)
+		    (object Attribute
+			tool       	"Ada83"
+			name       	"ClassParameterName"
+			value      	"This")
+		    (object Attribute
+			tool       	"Ada83"
+			name       	"DefaultConstructorKind"
+			value      	("ConstructorKindSet" 199))
+		    (object Attribute
+			tool       	"Ada83"
+			name       	"DefaultConstructorName"
+			value      	"Create")
+		    (object Attribute
+			tool       	"Ada83"
+			name       	"InlineDefaultConstructor"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"Ada83"
+			name       	"CopyConstructorKind"
+			value      	("ConstructorKindSet" 199))
+		    (object Attribute
+			tool       	"Ada83"
+			name       	"CopyConstructorName"
+			value      	"Copy")
+		    (object Attribute
+			tool       	"Ada83"
+			name       	"InlineCopyConstructor"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"Ada83"
+			name       	"DestructorName"
+			value      	"Free")
+		    (object Attribute
+			tool       	"Ada83"
+			name       	"InlineDestructor"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"Ada83"
+			name       	"ClassEqualityOperation"
+			value      	"")
+		    (object Attribute
+			tool       	"Ada83"
+			name       	"HandleEqualityOperation"
+			value      	"")
+		    (object Attribute
+			tool       	"Ada83"
+			name       	"InlineEquality"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"Ada83"
+			name       	"IsTask"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"Ada83"
+			name       	"Representation"
+			value      	(value Text ""))
+		    (object Attribute
+			tool       	"Ada83"
+			name       	"ImplementationSet"
+			value      	(list Attribute_Set
+			    (object Attribute
+				tool       	"Ada83"
+				name       	"Public"
+				value      	45)
+			    (object Attribute
+				tool       	"Ada83"
+				name       	"Private"
+				value      	43)
+			    (object Attribute
+				tool       	"Ada83"
+				name       	"LimitedPrivate"
+				value      	200)
+			    (object Attribute
+				tool       	"Ada83"
+				name       	"DoNotCreate"
+				value      	201)))
+		    (object Attribute
+			tool       	"Ada83"
+			name       	"ConstructorKindSet"
+			value      	(list Attribute_Set
+			    (object Attribute
+				tool       	"Ada83"
+				name       	"Procedure"
+				value      	202)
+			    (object Attribute
+				tool       	"Ada83"
+				name       	"Function"
+				value      	199)
+			    (object Attribute
+				tool       	"Ada83"
+				name       	"DoNotCreate"
+				value      	201)))))
+	    (object Attribute
+		tool       	"Ada83"
+		name       	"default__Module-Spec"
+		value      	(list Attribute_Set
+		    (object Attribute
+			tool       	"Ada83"
+			name       	"Generate"
+			value      	TRUE)
+		    (object Attribute
+			tool       	"Ada83"
+			name       	"CopyrightNotice"
+			value      	(value Text ""))
+		    (object Attribute
+			tool       	"Ada83"
+			name       	"FileName"
+			value      	"")
+		    (object Attribute
+			tool       	"Ada83"
+			name       	"ReturnType"
+			value      	"")
+		    (object Attribute
+			tool       	"Ada83"
+			name       	"GenericFormalParameters"
+			value      	(value Text ""))
+		    (object Attribute
+			tool       	"Ada83"
+			name       	"AdditionalWiths"
+			value      	(value Text ""))))
+	    (object Attribute
+		tool       	"Ada83"
+		name       	"default__Module-Body"
+		value      	(list Attribute_Set
+		    (object Attribute
+			tool       	"Ada83"
+			name       	"Generate"
+			value      	TRUE)
+		    (object Attribute
+			tool       	"Ada83"
+			name       	"CopyrightNotice"
+			value      	(value Text ""))
+		    (object Attribute
+			tool       	"Ada83"
+			name       	"FileName"
+			value      	"")
+		    (object Attribute
+			tool       	"Ada83"
+			name       	"ReturnType"
+			value      	"")
+		    (object Attribute
+			tool       	"Ada83"
+			name       	"AdditionalWiths"
+			value      	(value Text ""))
+		    (object Attribute
+			tool       	"Ada83"
+			name       	"IsSubunit"
+			value      	FALSE)))
+	    (object Attribute
+		tool       	"Ada83"
+		name       	"default__Operation"
+		value      	(list Attribute_Set
+		    (object Attribute
+			tool       	"Ada83"
+			name       	"CodeName"
+			value      	"")
+		    (object Attribute
+			tool       	"Ada83"
+			name       	"SubprogramImplementation"
+			value      	("SubprogramImplementationSet" 2))
+		    (object Attribute
+			tool       	"Ada83"
+			name       	"Renames"
+			value      	"")
+		    (object Attribute
+			tool       	"Ada83"
+			name       	"ClassParameterMode"
+			value      	("ParameterModeSet" 203))
+		    (object Attribute
+			tool       	"Ada83"
+			name       	"Inline"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"Ada83"
+			name       	"EntryCode"
+			value      	(value Text ""))
+		    (object Attribute
+			tool       	"Ada83"
+			name       	"ExitCode"
+			value      	(value Text ""))
+		    (object Attribute
+			tool       	"Ada83"
+			name       	"InitialCodeBody"
+			value      	"${default}")
+		    (object Attribute
+			tool       	"Ada83"
+			name       	"Representation"
+			value      	(value Text ""))
+		    (object Attribute
+			tool       	"Ada83"
+			name       	"SubprogramImplementationSet"
+			value      	(list Attribute_Set
+			    (object Attribute
+				tool       	"Ada83"
+				name       	"Spec"
+				value      	224)
+			    (object Attribute
+				tool       	"Ada83"
+				name       	"Body"
+				value      	2)
+			    (object Attribute
+				tool       	"Ada83"
+				name       	"Renaming"
+				value      	222)
+			    (object Attribute
+				tool       	"Ada83"
+				name       	"Separate"
+				value      	223)))
+		    (object Attribute
+			tool       	"Ada83"
+			name       	"ParameterModeSet"
+			value      	(list Attribute_Set
+			    (object Attribute
+				tool       	"Ada83"
+				name       	"In"
+				value      	204)
+			    (object Attribute
+				tool       	"Ada83"
+				name       	"Out"
+				value      	205)
+			    (object Attribute
+				tool       	"Ada83"
+				name       	"InOut"
+				value      	203)
+			    (object Attribute
+				tool       	"Ada83"
+				name       	"FunctionReturn"
+				value      	206)
+			    (object Attribute
+				tool       	"Ada83"
+				name       	"DoNotCreate"
+				value      	201)))))
+	    (object Attribute
+		tool       	"Ada83"
+		name       	"default__Has"
+		value      	(list Attribute_Set
+		    (object Attribute
+			tool       	"Ada83"
+			name       	"CodeName"
+			value      	"")
+		    (object Attribute
+			tool       	"Ada83"
+			name       	"NameIfUnlabeled"
+			value      	"The_${supplier}")
+		    (object Attribute
+			tool       	"Ada83"
+			name       	"DataMemberName"
+			value      	"${relationship}")
+		    (object Attribute
+			tool       	"Ada83"
+			name       	"GetName"
+			value      	"Get_${relationship}")
+		    (object Attribute
+			tool       	"Ada83"
+			name       	"InlineGet"
+			value      	TRUE)
+		    (object Attribute
+			tool       	"Ada83"
+			name       	"SetName"
+			value      	"Set_${relationship}")
+		    (object Attribute
+			tool       	"Ada83"
+			name       	"InlineSet"
+			value      	TRUE)
+		    (object Attribute
+			tool       	"Ada83"
+			name       	"IsConstant"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"Ada83"
+			name       	"InitialValue"
+			value      	"")
+		    (object Attribute
+			tool       	"Ada83"
+			name       	"Variant"
+			value      	"")
+		    (object Attribute
+			tool       	"Ada83"
+			name       	"ContainerGeneric"
+			value      	"List")
+		    (object Attribute
+			tool       	"Ada83"
+			name       	"ContainerType"
+			value      	"")
+		    (object Attribute
+			tool       	"Ada83"
+			name       	"ContainerDeclarations"
+			value      	(value Text ""))
+		    (object Attribute
+			tool       	"Ada83"
+			name       	"SelectorName"
+			value      	"")
+		    (object Attribute
+			tool       	"Ada83"
+			name       	"SelectorType"
+			value      	"")))
+	    (object Attribute
+		tool       	"Ada83"
+		name       	"default__Attribute"
+		value      	(list Attribute_Set
+		    (object Attribute
+			tool       	"Ada83"
+			name       	"CodeName"
+			value      	"")
+		    (object Attribute
+			tool       	"Ada83"
+			name       	"DataMemberName"
+			value      	"${attribute}")
+		    (object Attribute
+			tool       	"Ada83"
+			name       	"GetName"
+			value      	"Get_${attribute}")
+		    (object Attribute
+			tool       	"Ada83"
+			name       	"InlineGet"
+			value      	TRUE)
+		    (object Attribute
+			tool       	"Ada83"
+			name       	"SetName"
+			value      	"Set_${attribute}")
+		    (object Attribute
+			tool       	"Ada83"
+			name       	"InlineSet"
+			value      	TRUE)
+		    (object Attribute
+			tool       	"Ada83"
+			name       	"IsConstant"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"Ada83"
+			name       	"InitialValue"
+			value      	"")
+		    (object Attribute
+			tool       	"Ada83"
+			name       	"Variant"
+			value      	"")
+		    (object Attribute
+			tool       	"Ada83"
+			name       	"Representation"
+			value      	(value Text ""))))
+	    (object Attribute
+		tool       	"Ada83"
+		name       	"default__Association"
+		value      	(list Attribute_Set
+		    (object Attribute
+			tool       	"Ada83"
+			name       	"NameIfUnlabeled"
+			value      	"The_${targetClass}")
+		    (object Attribute
+			tool       	"Ada83"
+			name       	"GetName"
+			value      	"Get_${association}")
+		    (object Attribute
+			tool       	"Ada83"
+			name       	"InlineGet"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"Ada83"
+			name       	"SetName"
+			value      	"Set_${association}")
+		    (object Attribute
+			tool       	"Ada83"
+			name       	"InlineSet"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"Ada83"
+			name       	"GenerateAssociate"
+			value      	("ProcedureKindSet" 202))
+		    (object Attribute
+			tool       	"Ada83"
+			name       	"AssociateName"
+			value      	"Associate")
+		    (object Attribute
+			tool       	"Ada83"
+			name       	"InlineAssociate"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"Ada83"
+			name       	"GenerateDissociate"
+			value      	("ProcedureKindSet" 202))
+		    (object Attribute
+			tool       	"Ada83"
+			name       	"DissociateName"
+			value      	"Dissociate")
+		    (object Attribute
+			tool       	"Ada83"
+			name       	"InlineDissociate"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"Ada83"
+			name       	"ProcedureKindSet"
+			value      	(list Attribute_Set
+			    (object Attribute
+				tool       	"Ada83"
+				name       	"Procedure"
+				value      	202)
+			    (object Attribute
+				tool       	"Ada83"
+				name       	"DoNotCreate"
+				value      	201)))
+		    (object Attribute
+			tool       	"Ada83"
+			name       	"FunctionKindSet"
+			value      	(list Attribute_Set
+			    (object Attribute
+				tool       	"Ada83"
+				name       	"Function"
+				value      	199)
+			    (object Attribute
+				tool       	"Ada83"
+				name       	"DoNotCreate"
+				value      	201)))))
+	    (object Attribute
+		tool       	"Ada83"
+		name       	"default__Role"
+		value      	(list Attribute_Set
+		    (object Attribute
+			tool       	"Ada83"
+			name       	"CodeName"
+			value      	"")
+		    (object Attribute
+			tool       	"Ada83"
+			name       	"NameIfUnlabeled"
+			value      	"The_${targetClass}")
+		    (object Attribute
+			tool       	"Ada83"
+			name       	"DataMemberName"
+			value      	"${target}")
+		    (object Attribute
+			tool       	"Ada83"
+			name       	"GetName"
+			value      	"Get_${target}")
+		    (object Attribute
+			tool       	"Ada83"
+			name       	"InlineGet"
+			value      	TRUE)
+		    (object Attribute
+			tool       	"Ada83"
+			name       	"SetName"
+			value      	"Set_${target}")
+		    (object Attribute
+			tool       	"Ada83"
+			name       	"InlineSet"
+			value      	TRUE)
+		    (object Attribute
+			tool       	"Ada83"
+			name       	"IsConstant"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"Ada83"
+			name       	"InitialValue"
+			value      	"")
+		    (object Attribute
+			tool       	"Ada83"
+			name       	"ContainerGeneric"
+			value      	"List")
+		    (object Attribute
+			tool       	"Ada83"
+			name       	"ContainerType"
+			value      	"")
+		    (object Attribute
+			tool       	"Ada83"
+			name       	"ContainerDeclarations"
+			value      	(value Text ""))
+		    (object Attribute
+			tool       	"Ada83"
+			name       	"SelectorName"
+			value      	"")
+		    (object Attribute
+			tool       	"Ada83"
+			name       	"SelectorType"
+			value      	"")
+		    (object Attribute
+			tool       	"Ada83"
+			name       	"ProcedureKindSet"
+			value      	(list Attribute_Set
+			    (object Attribute
+				tool       	"Ada83"
+				name       	"Procedure"
+				value      	202)
+			    (object Attribute
+				tool       	"Ada83"
+				name       	"DoNotCreate"
+				value      	201)))))
+	    (object Attribute
+		tool       	"Ada83"
+		name       	"default__Subsystem"
+		value      	(list Attribute_Set
+		    (object Attribute
+			tool       	"Ada83"
+			name       	"Directory"
+			value      	"AUTO GENERATE")))
+	    (object Attribute
+		tool       	"Ada83"
+		name       	"HiddenTool"
+		value      	FALSE)
+	    (object Attribute
+		tool       	"Ada95"
+		name       	"propertyId"
+		value      	"838326200")
+	    (object Attribute
+		tool       	"Ada95"
+		name       	"default__Project"
+		value      	(list Attribute_Set
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"SpecFileExtension"
+			value      	"1.ada")
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"SpecFileBackupExtension"
+			value      	"1.ad~")
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"SpecFileTemporaryExtension"
+			value      	"1.ad#")
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"BodyFileExtension"
+			value      	"2.ada")
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"BodyFileBackupExtension"
+			value      	"2.ad~")
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"BodyFileTemporaryExtension"
+			value      	"2.ad#")
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"CreateMissingDirectories"
+			value      	TRUE)
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"UseColonNotation"
+			value      	TRUE)
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"GenerateBodies"
+			value      	TRUE)
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"GenerateAccessorOperations"
+			value      	TRUE)
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"GenerateStandardOperations"
+			value      	TRUE)
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"DefaultCodeBody"
+			value      	"[statement]")
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"ImplicitParameter"
+			value      	TRUE)
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"CommentWidth"
+			value      	60)
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"StopOnError"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"ErrorLimit"
+			value      	30)
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"UseFileName"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"Directory"
+			value      	"$ROSEADA95_SOURCE")))
+	    (object Attribute
+		tool       	"Ada95"
+		name       	"default__Class"
+		value      	(list Attribute_Set
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"CodeName"
+			value      	"")
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"TypeName"
+			value      	"Object")
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"TypeVisibility"
+			value      	("TypeVisibilitySet" 43))
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"TypeImplementation"
+			value      	("TypeImplementationSet" 208))
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"TypeControl"
+			value      	("TypeControlSet" 225))
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"TypeControlName"
+			value      	"Controlled_${type}")
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"TypeDefinition"
+			value      	(value Text ""))
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"RecordImplementation"
+			value      	("RecordImplementationSet" 209))
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"RecordKindPackageName"
+			value      	"${class}_Record_Kinds")
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"IsLimited"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"IsSubtype"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"GenerateAccessType"
+			value      	("GenerateAccessTypeSet" 230))
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"AccessTypeName"
+			value      	"Handle")
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"AccessTypeVisibility"
+			value      	("TypeVisibilitySet" 45))
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"AccessTypeDefinition"
+			value      	(value Text ""))
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"AccessClassWide"
+			value      	TRUE)
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"MaybeAliased"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"ParameterizedImplementation"
+			value      	("ParameterizedImplementationSet" 11))
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"ParentClassName"
+			value      	"Superclass")
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"EnumerationLiteralPrefix"
+			value      	"A_")
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"RecordFieldPrefix"
+			value      	"The_")
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"ArrayOfTypeName"
+			value      	"Array_Of_${type}")
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"AccessArrayOfTypeName"
+			value      	"Access_Array_Of_${type}")
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"ArrayOfAccessTypeName"
+			value      	"Array_Of_${access_type}")
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"AccessArrayOfAccessTypeName"
+			value      	"Access_Array_Of_${access_type}")
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"ArrayIndexDefinition"
+			value      	"Positive range <>")
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"GenerateAccessorOperations"
+			value      	TRUE)
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"GenerateStandardOperations"
+			value      	TRUE)
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"ImplicitParameter"
+			value      	TRUE)
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"ImplicitParameterName"
+			value      	"This")
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"GenerateDefaultConstructor"
+			value      	("SubprogramKindSet" 199))
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"DefaultConstructorName"
+			value      	"Create")
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"InlineDefaultConstructor"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"GenerateCopyConstructor"
+			value      	("SubprogramKindSet" 199))
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"CopyConstructorName"
+			value      	"Copy")
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"InlineCopyConstructor"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"GenerateDestructor"
+			value      	("ProcedureKindSet" 202))
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"DestructorName"
+			value      	"Free")
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"InlineDestructor"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"GenerateTypeEquality"
+			value      	("FunctionKindSet" 201))
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"TypeEqualityName"
+			value      	"${quote}=${quote}")
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"InlineEquality"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"Representation"
+			value      	(value Text ""))
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"TypeImplementationSet"
+			value      	(list Attribute_Set
+			    (object Attribute
+				tool       	"Ada95"
+				name       	"Tagged"
+				value      	208)
+			    (object Attribute
+				tool       	"Ada95"
+				name       	"Record"
+				value      	210)
+			    (object Attribute
+				tool       	"Ada95"
+				name       	"Mixin"
+				value      	211)
+			    (object Attribute
+				tool       	"Ada95"
+				name       	"Protected"
+				value      	44)
+			    (object Attribute
+				tool       	"Ada95"
+				name       	"Task"
+				value      	212)))
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"RecordImplementationSet"
+			value      	(list Attribute_Set
+			    (object Attribute
+				tool       	"Ada95"
+				name       	"SingleType"
+				value      	209)
+			    (object Attribute
+				tool       	"Ada95"
+				name       	"MultipleTypes"
+				value      	213)))
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"ParameterizedImplementationSet"
+			value      	(list Attribute_Set
+			    (object Attribute
+				tool       	"Ada95"
+				name       	"Generic"
+				value      	11)
+			    (object Attribute
+				tool       	"Ada95"
+				name       	"Unconstrained"
+				value      	214)))
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"TypeVisibilitySet"
+			value      	(list Attribute_Set
+			    (object Attribute
+				tool       	"Ada95"
+				name       	"Public"
+				value      	45)
+			    (object Attribute
+				tool       	"Ada95"
+				name       	"Private"
+				value      	43)))
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"SubprogramKindSet"
+			value      	(list Attribute_Set
+			    (object Attribute
+				tool       	"Ada95"
+				name       	"Procedure"
+				value      	202)
+			    (object Attribute
+				tool       	"Ada95"
+				name       	"Function"
+				value      	199)
+			    (object Attribute
+				tool       	"Ada95"
+				name       	"DoNotCreate"
+				value      	201)))
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"ProcedureKindSet"
+			value      	(list Attribute_Set
+			    (object Attribute
+				tool       	"Ada95"
+				name       	"Procedure"
+				value      	202)
+			    (object Attribute
+				tool       	"Ada95"
+				name       	"DoNotCreate"
+				value      	201)))
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"FunctionKindSet"
+			value      	(list Attribute_Set
+			    (object Attribute
+				tool       	"Ada95"
+				name       	"Function"
+				value      	199)
+			    (object Attribute
+				tool       	"Ada95"
+				name       	"DoNotCreate"
+				value      	201)))
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"TypeControlSet"
+			value      	(list Attribute_Set
+			    (object Attribute
+				tool       	"Ada95"
+				name       	"None"
+				value      	225)
+			    (object Attribute
+				tool       	"Ada95"
+				name       	"InitializationOnly"
+				value      	226)
+			    (object Attribute
+				tool       	"Ada95"
+				name       	"AssignmentFinalizationOnly"
+				value      	227)
+			    (object Attribute
+				tool       	"Ada95"
+				name       	"All"
+				value      	228)))
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"GenerateAccessTypeSet"
+			value      	(list Attribute_Set
+			    (object Attribute
+				tool       	"Ada95"
+				name       	"Always"
+				value      	229)
+			    (object Attribute
+				tool       	"Ada95"
+				name       	"Auto"
+				value      	230)))))
+	    (object Attribute
+		tool       	"Ada95"
+		name       	"default__Module-Spec"
+		value      	(list Attribute_Set
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"Generate"
+			value      	TRUE)
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"CopyrightNotice"
+			value      	(value Text ""))
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"FileName"
+			value      	"")
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"ReturnType"
+			value      	"")
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"GenericFormalParameters"
+			value      	(value Text ""))
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"AdditionalWiths"
+			value      	(value Text ""))
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"IsPrivate"
+			value      	FALSE)))
+	    (object Attribute
+		tool       	"Ada95"
+		name       	"default__Module-Body"
+		value      	(list Attribute_Set
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"Generate"
+			value      	TRUE)
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"CopyrightNotice"
+			value      	(value Text ""))
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"FileName"
+			value      	"")
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"ReturnType"
+			value      	"")
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"AdditionalWiths"
+			value      	(value Text ""))
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"IsSubunit"
+			value      	FALSE)))
+	    (object Attribute
+		tool       	"Ada95"
+		name       	"default__Operation"
+		value      	(list Attribute_Set
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"CodeName"
+			value      	"")
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"SubprogramImplementation"
+			value      	("SubprogramImplementationSet" 2))
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"Renames"
+			value      	"")
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"GenerateOverriding"
+			value      	TRUE)
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"ImplicitParameterMode"
+			value      	("ParameterModeSet" 203))
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"ImplicitParameterClassWide"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"GenerateAccessOperation"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"Inline"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"EntryCode"
+			value      	(value Text ""))
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"ExitCode"
+			value      	(value Text ""))
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"InitialCodeBody"
+			value      	"${default}")
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"EntryBarrierCondition"
+			value      	"True")
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"Representation"
+			value      	(value Text ""))
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"SubprogramImplementationSet"
+			value      	(list Attribute_Set
+			    (object Attribute
+				tool       	"Ada95"
+				name       	"Spec"
+				value      	224)
+			    (object Attribute
+				tool       	"Ada95"
+				name       	"Body"
+				value      	2)
+			    (object Attribute
+				tool       	"Ada95"
+				name       	"Abstract"
+				value      	221)
+			    (object Attribute
+				tool       	"Ada95"
+				name       	"Renaming"
+				value      	222)
+			    (object Attribute
+				tool       	"Ada95"
+				name       	"RenamingAsBody"
+				value      	231)
+			    (object Attribute
+				tool       	"Ada95"
+				name       	"Separate"
+				value      	223)))
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"ParameterModeSet"
+			value      	(list Attribute_Set
+			    (object Attribute
+				tool       	"Ada95"
+				name       	"In"
+				value      	204)
+			    (object Attribute
+				tool       	"Ada95"
+				name       	"Out"
+				value      	205)
+			    (object Attribute
+				tool       	"Ada95"
+				name       	"InOut"
+				value      	203)
+			    (object Attribute
+				tool       	"Ada95"
+				name       	"Access"
+				value      	220)
+			    (object Attribute
+				tool       	"Ada95"
+				name       	"DoNotCreate"
+				value      	201)))))
+	    (object Attribute
+		tool       	"Ada95"
+		name       	"default__Has"
+		value      	(list Attribute_Set
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"CodeName"
+			value      	"")
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"NameIfUnlabeled"
+			value      	"The_${supplier}")
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"RecordFieldImplementation"
+			value      	("RecordFieldImplementationSet" 216))
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"RecordFieldName"
+			value      	"${relationship}")
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"GenerateGet"
+			value      	("FunctionKindSet" 199))
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"GenerateAccessGet"
+			value      	("FunctionKindSet" 201))
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"GetName"
+			value      	"Get_${relationship}")
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"InlineGet"
+			value      	TRUE)
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"GenerateSet"
+			value      	("ProcedureKindSet" 202))
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"GenerateAccessSet"
+			value      	("ProcedureKindSet" 201))
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"SetName"
+			value      	"Set_${relationship}")
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"InlineSet"
+			value      	TRUE)
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"IsAliased"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"IsConstant"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"InitialValue"
+			value      	"")
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"ContainerImplementation"
+			value      	("ContainerImplementationSet" 217))
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"ContainerGeneric"
+			value      	"List")
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"ContainerType"
+			value      	"")
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"ContainerDeclarations"
+			value      	(value Text ""))
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"SelectorName"
+			value      	"")
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"SelectorType"
+			value      	"")
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"RecordFieldImplementationSet"
+			value      	(list Attribute_Set
+			    (object Attribute
+				tool       	"Ada95"
+				name       	"Component"
+				value      	216)
+			    (object Attribute
+				tool       	"Ada95"
+				name       	"Discriminant"
+				value      	218)
+			    (object Attribute
+				tool       	"Ada95"
+				name       	"AccessDiscriminant"
+				value      	219)))
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"ContainerImplementationSet"
+			value      	(list Attribute_Set
+			    (object Attribute
+				tool       	"Ada95"
+				name       	"Array"
+				value      	217)
+			    (object Attribute
+				tool       	"Ada95"
+				name       	"Generic"
+				value      	11)))
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"ProcedureKindSet"
+			value      	(list Attribute_Set
+			    (object Attribute
+				tool       	"Ada95"
+				name       	"Procedure"
+				value      	202)
+			    (object Attribute
+				tool       	"Ada95"
+				name       	"DoNotCreate"
+				value      	201)))
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"FunctionKindSet"
+			value      	(list Attribute_Set
+			    (object Attribute
+				tool       	"Ada95"
+				name       	"Function"
+				value      	199)
+			    (object Attribute
+				tool       	"Ada95"
+				name       	"DoNotCreate"
+				value      	201)))))
+	    (object Attribute
+		tool       	"Ada95"
+		name       	"default__Attribute"
+		value      	(list Attribute_Set
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"CodeName"
+			value      	"")
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"RecordFieldImplementation"
+			value      	("RecordFieldImplementationSet" 216))
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"RecordFieldName"
+			value      	"${attribute}")
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"GenerateGet"
+			value      	("FunctionKindSet" 199))
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"GenerateAccessGet"
+			value      	("FunctionKindSet" 201))
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"GetName"
+			value      	"Get_${attribute}")
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"InlineGet"
+			value      	TRUE)
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"GenerateSet"
+			value      	("ProcedureKindSet" 202))
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"GenerateAccessSet"
+			value      	("ProcedureKindSet" 201))
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"SetName"
+			value      	"Set_${attribute}")
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"InlineSet"
+			value      	TRUE)
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"IsAliased"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"IsConstant"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"InitialValue"
+			value      	"")
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"Representation"
+			value      	(value Text ""))
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"RecordFieldImplementationSet"
+			value      	(list Attribute_Set
+			    (object Attribute
+				tool       	"Ada95"
+				name       	"Component"
+				value      	216)
+			    (object Attribute
+				tool       	"Ada95"
+				name       	"Discriminant"
+				value      	218)
+			    (object Attribute
+				tool       	"Ada95"
+				name       	"AccessDiscriminant"
+				value      	219)))
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"ProcedureKindSet"
+			value      	(list Attribute_Set
+			    (object Attribute
+				tool       	"Ada95"
+				name       	"Procedure"
+				value      	202)
+			    (object Attribute
+				tool       	"Ada95"
+				name       	"DoNotCreate"
+				value      	201)))
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"FunctionKindSet"
+			value      	(list Attribute_Set
+			    (object Attribute
+				tool       	"Ada95"
+				name       	"Function"
+				value      	199)
+			    (object Attribute
+				tool       	"Ada95"
+				name       	"DoNotCreate"
+				value      	201)))))
+	    (object Attribute
+		tool       	"Ada95"
+		name       	"default__Association"
+		value      	(list Attribute_Set
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"NameIfUnlabeled"
+			value      	"The_${targetClass}")
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"GenerateGet"
+			value      	("FunctionKindSet" 199))
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"GetName"
+			value      	"Get_${association}")
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"InlineGet"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"GenerateSet"
+			value      	("ProcedureKindSet" 202))
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"SetName"
+			value      	"Set_${association}")
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"InlineSet"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"GenerateAssociate"
+			value      	("ProcedureKindSet" 202))
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"AssociateName"
+			value      	"Associate")
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"InlineAssociate"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"GenerateDissociate"
+			value      	("ProcedureKindSet" 202))
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"DissociateName"
+			value      	"Dissociate")
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"InlineDissociate"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"ProcedureKindSet"
+			value      	(list Attribute_Set
+			    (object Attribute
+				tool       	"Ada95"
+				name       	"Procedure"
+				value      	202)
+			    (object Attribute
+				tool       	"Ada95"
+				name       	"DoNotCreate"
+				value      	201)))
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"FunctionKindSet"
+			value      	(list Attribute_Set
+			    (object Attribute
+				tool       	"Ada95"
+				name       	"Function"
+				value      	199)
+			    (object Attribute
+				tool       	"Ada95"
+				name       	"DoNotCreate"
+				value      	201)))))
+	    (object Attribute
+		tool       	"Ada95"
+		name       	"default__Role"
+		value      	(list Attribute_Set
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"CodeName"
+			value      	"")
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"NameIfUnlabeled"
+			value      	"The_${targetClass}")
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"RecordFieldImplementation"
+			value      	("RecordFieldImplementationSet" 216))
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"RecordFieldName"
+			value      	"${target}")
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"GenerateGet"
+			value      	("FunctionKindSet" 199))
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"GenerateAccessGet"
+			value      	("FunctionKindSet" 201))
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"GetName"
+			value      	"Get_${target}")
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"InlineGet"
+			value      	TRUE)
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"GenerateSet"
+			value      	("ProcedureKindSet" 202))
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"GenerateAccessSet"
+			value      	("ProcedureKindSet" 201))
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"SetName"
+			value      	"Set_${target}")
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"InlineSet"
+			value      	TRUE)
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"IsAliased"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"IsConstant"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"InitialValue"
+			value      	"")
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"ContainerImplementation"
+			value      	("ContainerImplementationSet" 217))
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"ContainerGeneric"
+			value      	"List")
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"ContainerType"
+			value      	"")
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"ContainerDeclarations"
+			value      	(value Text ""))
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"SelectorName"
+			value      	"")
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"SelectorType"
+			value      	"")
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"ProcedureKindSet"
+			value      	(list Attribute_Set
+			    (object Attribute
+				tool       	"Ada95"
+				name       	"Procedure"
+				value      	202)
+			    (object Attribute
+				tool       	"Ada95"
+				name       	"DoNotCreate"
+				value      	201)))
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"RecordFieldImplementationSet"
+			value      	(list Attribute_Set
+			    (object Attribute
+				tool       	"Ada95"
+				name       	"Component"
+				value      	216)
+			    (object Attribute
+				tool       	"Ada95"
+				name       	"Discriminant"
+				value      	218)
+			    (object Attribute
+				tool       	"Ada95"
+				name       	"AccessDiscriminant"
+				value      	219)))
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"ContainerImplementationSet"
+			value      	(list Attribute_Set
+			    (object Attribute
+				tool       	"Ada95"
+				name       	"Array"
+				value      	217)
+			    (object Attribute
+				tool       	"Ada95"
+				name       	"Generic"
+				value      	11)))
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"FunctionKindSet"
+			value      	(list Attribute_Set
+			    (object Attribute
+				tool       	"Ada95"
+				name       	"Function"
+				value      	199)
+			    (object Attribute
+				tool       	"Ada95"
+				name       	"DoNotCreate"
+				value      	201)))))
+	    (object Attribute
+		tool       	"Ada95"
+		name       	"default__Subsystem"
+		value      	(list Attribute_Set
+		    (object Attribute
+			tool       	"Ada95"
+			name       	"Directory"
+			value      	"AUTO GENERATE")))
+	    (object Attribute
+		tool       	"Ada95"
+		name       	"HiddenTool"
+		value      	FALSE)
+	    (object Attribute
+		tool       	"CORBA"
+		name       	"propertyId"
+		value      	"809135966")
+	    (object Attribute
+		tool       	"CORBA"
+		name       	"default__Project"
+		value      	(list Attribute_Set
+		    (object Attribute
+			tool       	"CORBA"
+			name       	"CreateMissingDirectories"
+			value      	TRUE)
+		    (object Attribute
+			tool       	"CORBA"
+			name       	"Editor"
+			value      	("EditorType" 100))
+		    (object Attribute
+			tool       	"CORBA"
+			name       	"IncludePath"
+			value      	"")
+		    (object Attribute
+			tool       	"CORBA"
+			name       	"StopOnError"
+			value      	TRUE)
+		    (object Attribute
+			tool       	"CORBA"
+			name       	"EditorType"
+			value      	(list Attribute_Set
+			    (object Attribute
+				tool       	"CORBA"
+				name       	"BuiltIn"
+				value      	100)
+			    (object Attribute
+				tool       	"CORBA"
+				name       	"WindowsShell"
+				value      	101)))
+		    (object Attribute
+			tool       	"CORBA"
+			name       	"PathSeparator"
+			value      	"")))
+	    (object Attribute
+		tool       	"CORBA"
+		name       	"default__Class"
+		value      	(list Attribute_Set
+		    (object Attribute
+			tool       	"CORBA"
+			name       	"ArrayDimensions"
+			value      	"")
+		    (object Attribute
+			tool       	"CORBA"
+			name       	"ConstValue"
+			value      	"")
+		    (object Attribute
+			tool       	"CORBA"
+			name       	"ImplementationType"
+			value      	"")))
+	    (object Attribute
+		tool       	"CORBA"
+		name       	"default__Module-Spec"
+		value      	(list Attribute_Set
+		    (object Attribute
+			tool       	"CORBA"
+			name       	"AdditionalIncludes"
+			value      	(value Text ""))
+		    (object Attribute
+			tool       	"CORBA"
+			name       	"CmIdentification"
+			value      	(value Text "  %X% %Q% %Z% %W%"))
+		    (object Attribute
+			tool       	"CORBA"
+			name       	"CopyrightNotice"
+			value      	(value Text ""))
+		    (object Attribute
+			tool       	"CORBA"
+			name       	"InclusionProtectionSymbol"
+			value      	"AUTO GENERATE")))
+	    (object Attribute
+		tool       	"CORBA"
+		name       	"default__Module-Body"
+		value      	(list Attribute_Set
+		    (object Attribute
+			tool       	"CORBA"
+			name       	"AdditionalIncludes"
+			value      	(value Text ""))
+		    (object Attribute
+			tool       	"CORBA"
+			name       	"CmIdentification"
+			value      	(value Text "  %X% %Q% %Z% %W%"))
+		    (object Attribute
+			tool       	"CORBA"
+			name       	"CopyrightNotice"
+			value      	(value Text ""))
+		    (object Attribute
+			tool       	"CORBA"
+			name       	"InclusionProtectionSymbol"
+			value      	"AUTO GENERATE")))
+	    (object Attribute
+		tool       	"CORBA"
+		name       	"default__Operation"
+		value      	(list Attribute_Set
+		    (object Attribute
+			tool       	"CORBA"
+			name       	"Context"
+			value      	"")
+		    (object Attribute
+			tool       	"CORBA"
+			name       	"OperationIsOneWay"
+			value      	FALSE)))
+	    (object Attribute
+		tool       	"CORBA"
+		name       	"default__Attribute"
+		value      	(list Attribute_Set
+		    (object Attribute
+			tool       	"CORBA"
+			name       	"ArrayDimensions"
+			value      	"")
+		    (object Attribute
+			tool       	"CORBA"
+			name       	"CaseSpecifier"
+			value      	"")
+		    (object Attribute
+			tool       	"CORBA"
+			name       	"IsReadOnly"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"CORBA"
+			name       	"Order"
+			value      	"")))
+	    (object Attribute
+		tool       	"CORBA"
+		name       	"default__Role"
+		value      	(list Attribute_Set
+		    (object Attribute
+			tool       	"CORBA"
+			name       	"ArrayDimensions"
+			value      	"")
+		    (object Attribute
+			tool       	"CORBA"
+			name       	"CaseSpecifier"
+			value      	"")
+		    (object Attribute
+			tool       	"CORBA"
+			name       	"GenerateForwardReference"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"CORBA"
+			name       	"IsReadOnly"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"CORBA"
+			name       	"Order"
+			value      	"")
+		    (object Attribute
+			tool       	"CORBA"
+			name       	"BoundedRoleType"
+			value      	("AssocTypeSet" 47))
+		    (object Attribute
+			tool       	"CORBA"
+			name       	"AssocTypeSet"
+			value      	(list Attribute_Set
+			    (object Attribute
+				tool       	"CORBA"
+				name       	"Array"
+				value      	24)
+			    (object Attribute
+				tool       	"CORBA"
+				name       	"Sequence"
+				value      	47)))))
+	    (object Attribute
+		tool       	"CORBA"
+		name       	"default__Uses"
+		value      	(list Attribute_Set
+		    (object Attribute
+			tool       	"CORBA"
+			name       	"GenerateForwardReference"
+			value      	FALSE)))
+	    (object Attribute
+		tool       	"CORBA"
+		name       	"HiddenTool"
+		value      	FALSE)
+	    (object Attribute
+		tool       	"DDL"
+		name       	"propertyId"
+		value      	"809135966")
+	    (object Attribute
+		tool       	"DDL"
+		name       	"default__Project"
+		value      	(list Attribute_Set
+		    (object Attribute
+			tool       	"DDL"
+			name       	"Directory"
+			value      	"AUTO GENERATE")
+		    (object Attribute
+			tool       	"DDL"
+			name       	"DataBase"
+			value      	("DataBaseSet" 800))
+		    (object Attribute
+			tool       	"DDL"
+			name       	"DataBaseSet"
+			value      	(list Attribute_Set
+			    (object Attribute
+				tool       	"DDL"
+				name       	"ANSI"
+				value      	800)
+			    (object Attribute
+				tool       	"DDL"
+				name       	"Oracle"
+				value      	801)
+			    (object Attribute
+				tool       	"DDL"
+				name       	"SQLServer"
+				value      	802)
+			    (object Attribute
+				tool       	"DDL"
+				name       	"Sybase"
+				value      	803)
+			    (object Attribute
+				tool       	"DDL"
+				name       	"Watcom"
+				value      	804)))
+		    (object Attribute
+			tool       	"DDL"
+			name       	"PrimaryKeyColumnName"
+			value      	"Id")
+		    (object Attribute
+			tool       	"DDL"
+			name       	"PrimaryKeyColumnType"
+			value      	"NUMBER(5)")
+		    (object Attribute
+			tool       	"DDL"
+			name       	"ViewName"
+			value      	"V_")
+		    (object Attribute
+			tool       	"DDL"
+			name       	"TableName"
+			value      	"T_")
+		    (object Attribute
+			tool       	"DDL"
+			name       	"InheritSuffix"
+			value      	"_V")
+		    (object Attribute
+			tool       	"DDL"
+			name       	"DropClause"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"DDL"
+			name       	"BaseViews"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"DDL"
+			name       	"DDLScriptFilename"
+			value      	"DDL1.SQL")))
+	    (object Attribute
+		tool       	"DDL"
+		name       	"default__Attribute"
+		value      	(list Attribute_Set
+		    (object Attribute
+			tool       	"DDL"
+			name       	"ColumnType"
+			value      	"VARCHAR")
+		    (object Attribute
+			tool       	"DDL"
+			name       	"Length"
+			value      	"")
+		    (object Attribute
+			tool       	"DDL"
+			name       	"NullsOK"
+			value      	TRUE)
+		    (object Attribute
+			tool       	"DDL"
+			name       	"PrimaryKey"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"DDL"
+			name       	"Unique"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"DDL"
+			name       	"CompositeUnique"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"DDL"
+			name       	"CheckConstraint"
+			value      	"")))
+	    (object Attribute
+		tool       	"DDL"
+		name       	"HiddenTool"
+		value      	FALSE)
+	    (object Attribute
+		tool       	"Java"
+		name       	"propertyId"
+		value      	"809135966")
+	    (object Attribute
+		tool       	"Java"
+		name       	"default__Project"
+		value      	(list Attribute_Set
+		    (object Attribute
+			tool       	"Java"
+			name       	"RootDir"
+			value      	"")
+		    (object Attribute
+			tool       	"Java"
+			name       	"CreateMissingDirectories"
+			value      	TRUE)
+		    (object Attribute
+			tool       	"Java"
+			name       	"StopOnError"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"Java"
+			name       	"UsePrefixes"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"Java"
+			name       	"AutoSync"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"Java"
+			name       	"NotShowRoseIDDlg"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"Java"
+			name       	"ShowCodegenDlg"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"Java"
+			name       	"GenerateRoseID"
+			value      	TRUE)
+		    (object Attribute
+			tool       	"Java"
+			name       	"GenerateDefaultReturnLine"
+			value      	TRUE)
+		    (object Attribute
+			tool       	"Java"
+			name       	"JavadocDefaultAuthor"
+			value      	"")
+		    (object Attribute
+			tool       	"Java"
+			name       	"JavadocDefaultVersion"
+			value      	"")
+		    (object Attribute
+			tool       	"Java"
+			name       	"JavadocDefaultSince"
+			value      	"")
+		    (object Attribute
+			tool       	"Java"
+			name       	"UserDefineTagName1"
+			value      	"")
+		    (object Attribute
+			tool       	"Java"
+			name       	"UserDefineTagApply1"
+			value      	"")
+		    (object Attribute
+			tool       	"Java"
+			name       	"UserDefineTagText1"
+			value      	"")
+		    (object Attribute
+			tool       	"Java"
+			name       	"UserDefineTagName2"
+			value      	"")
+		    (object Attribute
+			tool       	"Java"
+			name       	"UserDefineTagApply2"
+			value      	"")
+		    (object Attribute
+			tool       	"Java"
+			name       	"UserDefineTagText2"
+			value      	"")
+		    (object Attribute
+			tool       	"Java"
+			name       	"UserDefineTagName3"
+			value      	"")
+		    (object Attribute
+			tool       	"Java"
+			name       	"UserDefineTagApply3"
+			value      	"")
+		    (object Attribute
+			tool       	"Java"
+			name       	"UserDefineTagText3"
+			value      	"")
+		    (object Attribute
+			tool       	"Java"
+			name       	"JavadocNumAsterisks"
+			value      	0)
+		    (object Attribute
+			tool       	"Java"
+			name       	"MaxNumChars"
+			value      	80)
+		    (object Attribute
+			tool       	"Java"
+			name       	"Editor"
+			value      	("EditorType" 100))
+		    (object Attribute
+			tool       	"Java"
+			name       	"VM"
+			value      	("VMType" 200))
+		    (object Attribute
+			tool       	"Java"
+			name       	"ClassPath"
+			value      	"")
+		    (object Attribute
+			tool       	"Java"
+			name       	"ReferenceClasspath"
+			value      	"")
+		    (object Attribute
+			tool       	"Java"
+			name       	"EditorType"
+			value      	(list Attribute_Set
+			    (object Attribute
+				tool       	"Java"
+				name       	"BuiltIn"
+				value      	100)
+			    (object Attribute
+				tool       	"Java"
+				name       	"WindowsShell"
+				value      	101)))
+		    (object Attribute
+			tool       	"Java"
+			name       	"VMType"
+			value      	(list Attribute_Set
+			    (object Attribute
+				tool       	"Java"
+				name       	"Sun"
+				value      	200)))
+		    (object Attribute
+			tool       	"Java"
+			name       	"VAJavaWorkingFolder"
+			value      	"")
+		    (object Attribute
+			tool       	"Java"
+			name       	"InstanceVariablePrefix"
+			value      	"")
+		    (object Attribute
+			tool       	"Java"
+			name       	"ClassVariablePrefix"
+			value      	"")
+		    (object Attribute
+			tool       	"Java"
+			name       	"DefaultAttributeDataType"
+			value      	"int")
+		    (object Attribute
+			tool       	"Java"
+			name       	"DefaultOperationReturnType"
+			value      	"void")
+		    (object Attribute
+			tool       	"Java"
+			name       	"NoClassCustomDlg"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"Java"
+			name       	"GlobalImports"
+			value      	(value Text ""))
+		    (object Attribute
+			tool       	"Java"
+			name       	"OpenBraceClassStyle"
+			value      	TRUE)
+		    (object Attribute
+			tool       	"Java"
+			name       	"OpenBraceMethodStyle"
+			value      	TRUE)
+		    (object Attribute
+			tool       	"Java"
+			name       	"UseTabs"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"Java"
+			name       	"UseSpaces"
+			value      	TRUE)
+		    (object Attribute
+			tool       	"Java"
+			name       	"SpacingItems"
+			value      	3)
+		    (object Attribute
+			tool       	"Java"
+			name       	"RoseDefaultCommentStyle"
+			value      	TRUE)
+		    (object Attribute
+			tool       	"Java"
+			name       	"AsteriskCommentStyle"
+			value      	TRUE)
+		    (object Attribute
+			tool       	"Java"
+			name       	"JavaCommentStyle"
+			value      	TRUE)
+		    (object Attribute
+			tool       	"Java"
+			name       	"JavadocAuthor"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"Java"
+			name       	"JavadocSince"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"Java"
+			name       	"JavadocVersion"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"Java"
+			name       	"BeanPrefix"
+			value      	"")
+		    (object Attribute
+			tool       	"Java"
+			name       	"BeanSuffix"
+			value      	"")
+		    (object Attribute
+			tool       	"Java"
+			name       	"RemotePrefix"
+			value      	"")
+		    (object Attribute
+			tool       	"Java"
+			name       	"RemoteSuffix"
+			value      	"")
+		    (object Attribute
+			tool       	"Java"
+			name       	"HomePrefix"
+			value      	"")
+		    (object Attribute
+			tool       	"Java"
+			name       	"HomeSuffix"
+			value      	"")
+		    (object Attribute
+			tool       	"Java"
+			name       	"PrimaryKeyPrefix"
+			value      	"")
+		    (object Attribute
+			tool       	"Java"
+			name       	"PrimaryKeySuffix"
+			value      	"")
+		    (object Attribute
+			tool       	"Java"
+			name       	"EJBDTDLocation"
+			value      	"")
+		    (object Attribute
+			tool       	"Java"
+			name       	"ServletDTDLocation"
+			value      	"")
+		    (object Attribute
+			tool       	"Java"
+			name       	"DefaultEJBVersion"
+			value      	"")
+		    (object Attribute
+			tool       	"Java"
+			name       	"DefaultServletVersion"
+			value      	"")))
+	    (object Attribute
+		tool       	"Java"
+		name       	"default__Class"
+		value      	(list Attribute_Set
+		    (object Attribute
+			tool       	"Java"
+			name       	"Final"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"Java"
+			name       	"Static"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"Java"
+			name       	"GenerateDefaultConstructor"
+			value      	TRUE)
+		    (object Attribute
+			tool       	"Java"
+			name       	"ConstructorIs"
+			value      	("Ctor_Set" 62))
+		    (object Attribute
+			tool       	"Java"
+			name       	"Ctor_Set"
+			value      	(list Attribute_Set
+			    (object Attribute
+				tool       	"Java"
+				name       	"public"
+				value      	62)
+			    (object Attribute
+				tool       	"Java"
+				name       	"protected"
+				value      	63)
+			    (object Attribute
+				tool       	"Java"
+				name       	"private"
+				value      	64)
+			    (object Attribute
+				tool       	"Java"
+				name       	"package"
+				value      	65)))
+		    (object Attribute
+			tool       	"Java"
+			name       	"GenerateFinalizer"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"Java"
+			name       	"GenerateStaticInitializer"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"Java"
+			name       	"GenerateInstanceInitializer"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"Java"
+			name       	"GenerateCode"
+			value      	TRUE)
+		    (object Attribute
+			tool       	"Java"
+			name       	"DisableAutoSync"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"Java"
+			name       	"ReadOnly"
+			value      	FALSE)))
+	    (object Attribute
+		tool       	"Java"
+		name       	"Default_Servlet__Class"
+		value      	(list Attribute_Set
+		    (object Attribute
+			tool       	"Java"
+			name       	"ServletName"
+			value      	"")
+		    (object Attribute
+			tool       	"Java"
+			name       	"ServletContextRef"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"Java"
+			name       	"IsSingleThread"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"Java"
+			name       	"ServletInitParameter"
+			value      	"")
+		    (object Attribute
+			tool       	"Java"
+			name       	"ServletInitParameterNames"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"Java"
+			name       	"ServletIsSecure"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"Java"
+			name       	"ServletRequestDispatcher"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"Java"
+			name       	"ServletRequestDispatcherPath"
+			value      	"")
+		    (object Attribute
+			tool       	"Java"
+			name       	"DispatcherInclude"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"Java"
+			name       	"DispatcherForward"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"Java"
+			name       	"ServletSecurityRoles"
+			value      	"")
+		    (object Attribute
+			tool       	"Java"
+			name       	"ServletgetInfo"
+			value      	"")
+		    (object Attribute
+			tool       	"Java"
+			name       	"ServletXMLFilePath"
+			value      	"")))
+	    (object Attribute
+		tool       	"Java"
+		name       	"Http_Servlet__Class"
+		value      	(list Attribute_Set
+		    (object Attribute
+			tool       	"Java"
+			name       	"ServletRequestAttribute"
+			value      	"")
+		    (object Attribute
+			tool       	"Java"
+			name       	"ServletRequestAttributesNames"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"Java"
+			name       	"MethodForRequestAttributes"
+			value      	"")
+		    (object Attribute
+			tool       	"Java"
+			name       	"ServletRequestParameter"
+			value      	"")
+		    (object Attribute
+			tool       	"Java"
+			name       	"ServletRequestParameterNames"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"Java"
+			name       	"MethodForRequestParameters"
+			value      	"")
+		    (object Attribute
+			tool       	"Java"
+			name       	"ServletHeader"
+			value      	"")
+		    (object Attribute
+			tool       	"Java"
+			name       	"ServletHeaderNames"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"Java"
+			name       	"MethodForHeaders"
+			value      	"")
+		    (object Attribute
+			tool       	"Java"
+			name       	"ServletIntHeader"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"Java"
+			name       	"ServletDateHeader"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"Java"
+			name       	"ServletCookie"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"Java"
+			name       	"MethodForCookie"
+			value      	"")
+		    (object Attribute
+			tool       	"Java"
+			name       	"ServletContentType"
+			value      	"")
+		    (object Attribute
+			tool       	"Java"
+			name       	"GenerateHTML"
+			value      	FALSE)))
+	    (object Attribute
+		tool       	"Java"
+		name       	"Default_EJB__Class"
+		value      	(list Attribute_Set
+		    (object Attribute
+			tool       	"Java"
+			name       	"Generate_XML_DD"
+			value      	TRUE)
+		    (object Attribute
+			tool       	"Java"
+			name       	"EJBCmpField"
+			value      	"")
+		    (object Attribute
+			tool       	"Java"
+			name       	"EJBEnvironmentProperties"
+			value      	"")
+		    (object Attribute
+			tool       	"Java"
+			name       	"EJBCnxFactory"
+			value      	"")
+		    (object Attribute
+			tool       	"Java"
+			name       	"EJBReferences"
+			value      	"")
+		    (object Attribute
+			tool       	"Java"
+			name       	"EJBSecurityRoles"
+			value      	"")
+		    (object Attribute
+			tool       	"Java"
+			name       	"EJBNameInJAR"
+			value      	"")
+		    (object Attribute
+			tool       	"Java"
+			name       	"EJBSessionType"
+			value      	("EJBSessionType_Set" 200))
+		    (object Attribute
+			tool       	"Java"
+			name       	"EJBSessionType_Set"
+			value      	(list Attribute_Set
+			    (object Attribute
+				tool       	"Java"
+				name       	""
+				value      	200)
+			    (object Attribute
+				tool       	"Java"
+				name       	"Stateless"
+				value      	201)
+			    (object Attribute
+				tool       	"Java"
+				name       	"Stateful"
+				value      	202)))
+		    (object Attribute
+			tool       	"Java"
+			name       	"EJBTransactionType"
+			value      	("EJBTransactionType_Set" 211))
+		    (object Attribute
+			tool       	"Java"
+			name       	"EJBTransactionType_Set"
+			value      	(list Attribute_Set
+			    (object Attribute
+				tool       	"Java"
+				name       	"Container"
+				value      	211)
+			    (object Attribute
+				tool       	"Java"
+				name       	"Bean"
+				value      	212)))
+		    (object Attribute
+			tool       	"Java"
+			name       	"EJBPersistenceType"
+			value      	("EJBPersistenceType_Set" 220))
+		    (object Attribute
+			tool       	"Java"
+			name       	"EJBPersistenceType_Set"
+			value      	(list Attribute_Set
+			    (object Attribute
+				tool       	"Java"
+				name       	""
+				value      	220)
+			    (object Attribute
+				tool       	"Java"
+				name       	"Bean"
+				value      	221)
+			    (object Attribute
+				tool       	"Java"
+				name       	"Container"
+				value      	222)))
+		    (object Attribute
+			tool       	"Java"
+			name       	"EJBReentrant"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"Java"
+			name       	"EJBSessionSync"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"Java"
+			name       	"EJBVersion"
+			value      	("EJBVersion_Set" 230))
+		    (object Attribute
+			tool       	"Java"
+			name       	"EJBVersion_Set"
+			value      	(list Attribute_Set
+			    (object Attribute
+				tool       	"Java"
+				name       	"2.0"
+				value      	230)
+			    (object Attribute
+				tool       	"Java"
+				name       	"1.x"
+				value      	231)))
+		    (object Attribute
+			tool       	"Java"
+			name       	"EJBXMLFilePath"
+			value      	"")))
+	    (object Attribute
+		tool       	"Java"
+		name       	"default__Module-Spec"
+		value      	(list Attribute_Set
+		    (object Attribute
+			tool       	"Java"
+			name       	"CmIdentification"
+			value      	(value Text ""))
+		    (object Attribute
+			tool       	"Java"
+			name       	"CopyrightNotice"
+			value      	(value Text ""))))
+	    (object Attribute
+		tool       	"Java"
+		name       	"default__Module-Body"
+		value      	(list Attribute_Set
+		    (object Attribute
+			tool       	"Java"
+			name       	"CmIdentification"
+			value      	(value Text ""))
+		    (object Attribute
+			tool       	"Java"
+			name       	"CopyrightNotice"
+			value      	(value Text ""))))
+	    (object Attribute
+		tool       	"Java"
+		name       	"default__Operation"
+		value      	(list Attribute_Set
+		    (object Attribute
+			tool       	"Java"
+			name       	"Abstract"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"Java"
+			name       	"Static"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"Java"
+			name       	"Final"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"Java"
+			name       	"Native"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"Java"
+			name       	"Synchronized"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"Java"
+			name       	"GenerateFullyQualifiedReturn"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"Java"
+			name       	"ReplaceExistingCode"
+			value      	TRUE)))
+	    (object Attribute
+		tool       	"Java"
+		name       	"default__Attribute"
+		value      	(list Attribute_Set
+		    (object Attribute
+			tool       	"Java"
+			name       	"Final"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"Java"
+			name       	"Transient"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"Java"
+			name       	"Volatile"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"Java"
+			name       	"PropertyType"
+			value      	("BeanProperty_Set" 71))
+		    (object Attribute
+			tool       	"Java"
+			name       	"BeanProperty_Set"
+			value      	(list Attribute_Set
+			    (object Attribute
+				tool       	"Java"
+				name       	"Not A Property"
+				value      	71)
+			    (object Attribute
+				tool       	"Java"
+				name       	"Simple"
+				value      	72)
+			    (object Attribute
+				tool       	"Java"
+				name       	"Bound"
+				value      	73)
+			    (object Attribute
+				tool       	"Java"
+				name       	"Constrained"
+				value      	74)))
+		    (object Attribute
+			tool       	"Java"
+			name       	"IndividualChangeMgt"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"Java"
+			name       	"Read/Write"
+			value      	("Read/Write_Set" 81))
+		    (object Attribute
+			tool       	"Java"
+			name       	"Read/Write_Set"
+			value      	(list Attribute_Set
+			    (object Attribute
+				tool       	"Java"
+				name       	"Read & Write"
+				value      	81)
+			    (object Attribute
+				tool       	"Java"
+				name       	"Read Only"
+				value      	82)
+			    (object Attribute
+				tool       	"Java"
+				name       	"Write Only"
+				value      	83)))
+		    (object Attribute
+			tool       	"Java"
+			name       	"GenerateFullyQualifiedTypes"
+			value      	FALSE)))
+	    (object Attribute
+		tool       	"Java"
+		name       	"default__Role"
+		value      	(list Attribute_Set
+		    (object Attribute
+			tool       	"Java"
+			name       	"ContainerClass"
+			value      	"")
+		    (object Attribute
+			tool       	"Java"
+			name       	"InitialValue"
+			value      	"")
+		    (object Attribute
+			tool       	"Java"
+			name       	"Final"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"Java"
+			name       	"Transient"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"Java"
+			name       	"Volatile"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"Java"
+			name       	"PropertyType"
+			value      	("BeanProperty_Set" 71))
+		    (object Attribute
+			tool       	"Java"
+			name       	"BeanProperty_Set"
+			value      	(list Attribute_Set
+			    (object Attribute
+				tool       	"Java"
+				name       	"Not A Property"
+				value      	71)
+			    (object Attribute
+				tool       	"Java"
+				name       	"Simple"
+				value      	72)
+			    (object Attribute
+				tool       	"Java"
+				name       	"Bound"
+				value      	73)
+			    (object Attribute
+				tool       	"Java"
+				name       	"Constrained"
+				value      	74)))
+		    (object Attribute
+			tool       	"Java"
+			name       	"IndividualChangeMgt"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"Java"
+			name       	"Read/Write"
+			value      	("Read/Write_Set" 81))
+		    (object Attribute
+			tool       	"Java"
+			name       	"Read/Write_Set"
+			value      	(list Attribute_Set
+			    (object Attribute
+				tool       	"Java"
+				name       	"Read & Write"
+				value      	81)
+			    (object Attribute
+				tool       	"Java"
+				name       	"Read Only"
+				value      	82)
+			    (object Attribute
+				tool       	"Java"
+				name       	"Write Only"
+				value      	83)))
+		    (object Attribute
+			tool       	"Java"
+			name       	"GenerateFullyQualifiedTypes"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"Java"
+			name       	"IsNavigable"
+			value      	TRUE)))
+	    (object Attribute
+		tool       	"Java"
+		name       	"HiddenTool"
+		value      	FALSE)
+	    (object Attribute
+		tool       	"cg"
+		name       	"propertyId"
+		value      	"809135966")
+	    (object Attribute
+		tool       	"cg"
+		name       	"default__Project"
+		value      	(list Attribute_Set
+		    (object Attribute
+			tool       	"cg"
+			name       	"AllowGenerateOverNewerAnnotations"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"cg"
+			name       	"AllowGenerateOverNewerVersion"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"cg"
+			name       	"UseMSVC"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"cg"
+			name       	"HeaderFileExtension"
+			value      	"h")
+		    (object Attribute
+			tool       	"cg"
+			name       	"HeaderFileBackupExtension"
+			value      	"h~")
+		    (object Attribute
+			tool       	"cg"
+			name       	"HeaderFileTemporaryExtension"
+			value      	"h#")
+		    (object Attribute
+			tool       	"cg"
+			name       	"CodeFileExtension"
+			value      	"cpp")
+		    (object Attribute
+			tool       	"cg"
+			name       	"CodeFileBackupExtension"
+			value      	"cp~")
+		    (object Attribute
+			tool       	"cg"
+			name       	"CodeFileTemporaryExtension"
+			value      	"cp#")
+		    (object Attribute
+			tool       	"cg"
+			name       	"CreateMissingDirectories"
+			value      	TRUE)
+		    (object Attribute
+			tool       	"cg"
+			name       	"StopOnError"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"cg"
+			name       	"ErrorLimit"
+			value      	30)
+		    (object Attribute
+			tool       	"cg"
+			name       	"Directory"
+			value      	"$ROSECPP_SOURCE")
+		    (object Attribute
+			tool       	"cg"
+			name       	"PathSeparator"
+			value      	"")
+		    (object Attribute
+			tool       	"cg"
+			name       	"FileNameFormat"
+			value      	"128vx_b")
+		    (object Attribute
+			tool       	"cg"
+			name       	"BooleanType"
+			value      	"int")
+		    (object Attribute
+			tool       	"cg"
+			name       	"AllowTemplates"
+			value      	TRUE)
+		    (object Attribute
+			tool       	"cg"
+			name       	"AllowExplicitInstantiations"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"cg"
+			name       	"AllowProtectedInheritance"
+			value      	TRUE)
+		    (object Attribute
+			tool       	"cg"
+			name       	"CommentWidth"
+			value      	60)
+		    (object Attribute
+			tool       	"cg"
+			name       	"OneByValueContainer"
+			value      	"$targetClass")
+		    (object Attribute
+			tool       	"cg"
+			name       	"OneByReferenceContainer"
+			value      	"$targetClass *")
+		    (object Attribute
+			tool       	"cg"
+			name       	"OptionalByValueContainer"
+			value      	"OptionalByValue<$targetClass>")
+		    (object Attribute
+			tool       	"cg"
+			name       	"OptionalByReferenceContainer"
+			value      	"$targetClass *")
+		    (object Attribute
+			tool       	"cg"
+			name       	"FixedByValueContainer"
+			value      	"$targetClass[$limit]")
+		    (object Attribute
+			tool       	"cg"
+			name       	"UnorderedFixedByValueContainer"
+			value      	"$targetClass[$limit]")
+		    (object Attribute
+			tool       	"cg"
+			name       	"FixedByReferenceContainer"
+			value      	"$targetClass *[$limit]")
+		    (object Attribute
+			tool       	"cg"
+			name       	"UnorderedFixedByReferenceContainer"
+			value      	"$targetClass *[$limit]")
+		    (object Attribute
+			tool       	"cg"
+			name       	"BoundedByValueContainer"
+			value      	"BoundedListByValue<$targetClass,$limit>")
+		    (object Attribute
+			tool       	"cg"
+			name       	"UnorderedBoundedByValueContainer"
+			value      	"BoundedSetByValue<$targetClass,$limit>")
+		    (object Attribute
+			tool       	"cg"
+			name       	"BoundedByReferenceContainer"
+			value      	"BoundedListByReference<$targetClass,$limit>")
+		    (object Attribute
+			tool       	"cg"
+			name       	"UnorderedBoundedByReferenceContainer"
+			value      	"BoundedSetByReference<$targetClass,$limit>")
+		    (object Attribute
+			tool       	"cg"
+			name       	"UnboundedByValueContainer"
+			value      	"UnboundedListByValue<$targetClass>")
+		    (object Attribute
+			tool       	"cg"
+			name       	"UnorderedUnboundedByValueContainer"
+			value      	"UnboundedSetByValue<$targetClass>")
+		    (object Attribute
+			tool       	"cg"
+			name       	"UnboundedByReferenceContainer"
+			value      	"UnboundedListByReference<$targetClass>")
+		    (object Attribute
+			tool       	"cg"
+			name       	"UnorderedUnboundedByReferenceContainer"
+			value      	"UnboundedSetByReference<$targetClass>")
+		    (object Attribute
+			tool       	"cg"
+			name       	"QualifiedByValueContainer"
+			value      	"AssociationByValue<$qualtype, $qualcont>")
+		    (object Attribute
+			tool       	"cg"
+			name       	"UnorderedQualifiedByValueContainer"
+			value      	"DictionaryByValue<$qualtype, $qualcont>")
+		    (object Attribute
+			tool       	"cg"
+			name       	"QualifiedByReferenceContainer"
+			value      	"AssociationByReference<$qualtype, $qualcont>")
+		    (object Attribute
+			tool       	"cg"
+			name       	"UnorderedQualifiedByReferenceContainer"
+			value      	"DictionaryByReference<$qualtype, $qualcont>")
+		    (object Attribute
+			tool       	"cg"
+			name       	"AlwaysKeepOrphanedCode"
+			value      	FALSE)))
+	    (object Attribute
+		tool       	"cg"
+		name       	"compiler2.1__Project"
+		value      	(list Attribute_Set
+		    (object Attribute
+			tool       	"cg"
+			name       	"AllowGenerateOverNewerAnnotations"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"cg"
+			name       	"AllowGenerateOverNewerVersion"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"cg"
+			name       	"HeaderFileExtension"
+			value      	"h")
+		    (object Attribute
+			tool       	"cg"
+			name       	"HeaderFileBackupExtension"
+			value      	"h~")
+		    (object Attribute
+			tool       	"cg"
+			name       	"HeaderFileTemporaryExtension"
+			value      	"h#")
+		    (object Attribute
+			tool       	"cg"
+			name       	"CodeFileExtension"
+			value      	"cpp")
+		    (object Attribute
+			tool       	"cg"
+			name       	"CodeFileBackupExtension"
+			value      	"cp~")
+		    (object Attribute
+			tool       	"cg"
+			name       	"CodeFileTemporaryExtension"
+			value      	"cp#")
+		    (object Attribute
+			tool       	"cg"
+			name       	"CreateMissingDirectories"
+			value      	TRUE)
+		    (object Attribute
+			tool       	"cg"
+			name       	"StopOnError"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"cg"
+			name       	"ErrorLimit"
+			value      	30)
+		    (object Attribute
+			tool       	"cg"
+			name       	"Directory"
+			value      	"$ROSECPP_SOURCE")
+		    (object Attribute
+			tool       	"cg"
+			name       	"BooleanType"
+			value      	"int")
+		    (object Attribute
+			tool       	"cg"
+			name       	"AllowTemplates"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"cg"
+			name       	"AllowExplicitInstantiations"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"cg"
+			name       	"AllowProtectedInheritance"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"cg"
+			name       	"OneByValueContainer"
+			value      	"$targetClass")
+		    (object Attribute
+			tool       	"cg"
+			name       	"OneByReferenceContainer"
+			value      	"$targetClass *")
+		    (object Attribute
+			tool       	"cg"
+			name       	"OptionalByValueContainer"
+			value      	"OptionalByValue(sizeof($targetClass))")
+		    (object Attribute
+			tool       	"cg"
+			name       	"OptionalByReferenceContainer"
+			value      	"$targetClass *")
+		    (object Attribute
+			tool       	"cg"
+			name       	"FixedByValueContainer"
+			value      	"$targetClass[$limit]")
+		    (object Attribute
+			tool       	"cg"
+			name       	"UnorderedFixedByValueContainer"
+			value      	"$targetClass[$limit]")
+		    (object Attribute
+			tool       	"cg"
+			name       	"FixedByReferenceContainer"
+			value      	"$targetClass *[$limit]")
+		    (object Attribute
+			tool       	"cg"
+			name       	"UnorderedFixedByReferenceContainer"
+			value      	"$targetClass *[$limit]")
+		    (object Attribute
+			tool       	"cg"
+			name       	"BoundedByValueContainer"
+			value      	"BoundedListByValue(sizeof($targetClass),$limit)")
+		    (object Attribute
+			tool       	"cg"
+			name       	"UnorderedBoundedByValueContainer"
+			value      	"BoundedSetByValue(sizeof($targetClass),$limit)")
+		    (object Attribute
+			tool       	"cg"
+			name       	"BoundedByReferenceContainer"
+			value      	"BoundedListByReference($limit)")
+		    (object Attribute
+			tool       	"cg"
+			name       	"UnorderedBoundedByReferenceContainer"
+			value      	"BoundedSetByReference($limit)")
+		    (object Attribute
+			tool       	"cg"
+			name       	"UnboundedByValueContainer"
+			value      	"UnboundedListByValue(sizeof($targetClass))")
+		    (object Attribute
+			tool       	"cg"
+			name       	"UnorderedUnboundedByValueContainer"
+			value      	"UnboundedSetByValue(sizeof($targetClass))")
+		    (object Attribute
+			tool       	"cg"
+			name       	"UnboundedByReferenceContainer"
+			value      	"UnboundedListByReference")
+		    (object Attribute
+			tool       	"cg"
+			name       	"UnorderedUnboundedByReferenceContainer"
+			value      	"UnboundedSetByReference")
+		    (object Attribute
+			tool       	"cg"
+			name       	"QualifiedByValueContainer"
+			value      	"AssociationByValue(sizeof($qualtype), sizeof($qualcont))")
+		    (object Attribute
+			tool       	"cg"
+			name       	"UnorderedQualifiedByValueContainer"
+			value      	"DictionaryByValue(sizeof($qualtype), sizeof($qualcont))")
+		    (object Attribute
+			tool       	"cg"
+			name       	"QualifiedByReferenceContainer"
+			value      	"AssociationByReference(sizeof($qualtype), sizeof($qualcont))")
+		    (object Attribute
+			tool       	"cg"
+			name       	"UnorderedQualifiedByReferenceContainer"
+			value      	"DictionaryByReference(sizeof($qualtype), sizeof($qualcont))")
+		    (object Attribute
+			tool       	"cg"
+			name       	"PathSeparator"
+			value      	"")
+		    (object Attribute
+			tool       	"cg"
+			name       	"FileNameFormat"
+			value      	"128vx_b")
+		    (object Attribute
+			tool       	"cg"
+			name       	"AlwaysKeepOrphanedCode"
+			value      	FALSE)))
+	    (object Attribute
+		tool       	"cg"
+		name       	"compiler3.0__Project"
+		value      	(list Attribute_Set
+		    (object Attribute
+			tool       	"cg"
+			name       	"AllowGenerateOverNewerAnnotations"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"cg"
+			name       	"AllowGenerateOverNewerVersion"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"cg"
+			name       	"HeaderFileExtension"
+			value      	"h")
+		    (object Attribute
+			tool       	"cg"
+			name       	"HeaderFileBackupExtension"
+			value      	"h~")
+		    (object Attribute
+			tool       	"cg"
+			name       	"HeaderFileTemporaryExtension"
+			value      	"h#")
+		    (object Attribute
+			tool       	"cg"
+			name       	"CodeFileExtension"
+			value      	"cpp")
+		    (object Attribute
+			tool       	"cg"
+			name       	"CodeFileBackupExtension"
+			value      	"cp~")
+		    (object Attribute
+			tool       	"cg"
+			name       	"CodeFileTemporaryExtension"
+			value      	"cp#")
+		    (object Attribute
+			tool       	"cg"
+			name       	"CreateMissingDirectories"
+			value      	TRUE)
+		    (object Attribute
+			tool       	"cg"
+			name       	"StopOnError"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"cg"
+			name       	"ErrorLimit"
+			value      	30)
+		    (object Attribute
+			tool       	"cg"
+			name       	"Directory"
+			value      	"$ROSECPP_SOURCE")
+		    (object Attribute
+			tool       	"cg"
+			name       	"BooleanType"
+			value      	"int")
+		    (object Attribute
+			tool       	"cg"
+			name       	"AllowTemplates"
+			value      	TRUE)
+		    (object Attribute
+			tool       	"cg"
+			name       	"AllowExplicitInstantiations"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"cg"
+			name       	"AllowProtectedInheritance"
+			value      	TRUE)
+		    (object Attribute
+			tool       	"cg"
+			name       	"OneByValueContainer"
+			value      	"$targetClass")
+		    (object Attribute
+			tool       	"cg"
+			name       	"OneByReferenceContainer"
+			value      	"$targetClass *")
+		    (object Attribute
+			tool       	"cg"
+			name       	"OptionalByValueContainer"
+			value      	"OptionalByValue<$targetClass>")
+		    (object Attribute
+			tool       	"cg"
+			name       	"OptionalByReferenceContainer"
+			value      	"$targetClass *")
+		    (object Attribute
+			tool       	"cg"
+			name       	"FixedByValueContainer"
+			value      	"$targetClass[$limit]")
+		    (object Attribute
+			tool       	"cg"
+			name       	"UnorderedFixedByValueContainer"
+			value      	"$targetClass[$limit]")
+		    (object Attribute
+			tool       	"cg"
+			name       	"FixedByReferenceContainer"
+			value      	"$targetClass *[$limit]")
+		    (object Attribute
+			tool       	"cg"
+			name       	"UnorderedFixedByReferenceContainer"
+			value      	"$targetClass *[$limit]")
+		    (object Attribute
+			tool       	"cg"
+			name       	"BoundedByValueContainer"
+			value      	"BoundedListByValue<$targetClass,$limit>")
+		    (object Attribute
+			tool       	"cg"
+			name       	"UnorderedBoundedByValueContainer"
+			value      	"BoundedSetByValue<$targetClass,$limit>")
+		    (object Attribute
+			tool       	"cg"
+			name       	"BoundedByReferenceContainer"
+			value      	"BoundedListByReference<$targetClass,$limit>")
+		    (object Attribute
+			tool       	"cg"
+			name       	"UnorderedBoundedByReferenceContainer"
+			value      	"BoundedSetByReference<$targetClass,$limit>")
+		    (object Attribute
+			tool       	"cg"
+			name       	"UnboundedByValueContainer"
+			value      	"UnboundedListByValue<$targetClass>")
+		    (object Attribute
+			tool       	"cg"
+			name       	"UnorderedUnboundedByValueContainer"
+			value      	"UnboundedSetByValue<$targetClass>")
+		    (object Attribute
+			tool       	"cg"
+			name       	"UnboundedByReferenceContainer"
+			value      	"UnboundedListByReference<$targetClass>")
+		    (object Attribute
+			tool       	"cg"
+			name       	"UnorderedUnboundedByReferenceContainer"
+			value      	"UnboundedSetByReference<$targetClass>")
+		    (object Attribute
+			tool       	"cg"
+			name       	"QualifiedByValueContainer"
+			value      	"AssociationByValue<$qualtype, $qualcont>")
+		    (object Attribute
+			tool       	"cg"
+			name       	"UnorderedQualifiedByValueContainer"
+			value      	"DictionaryByValue<$qualtype, $qualcont>")
+		    (object Attribute
+			tool       	"cg"
+			name       	"QualifiedByReferenceContainer"
+			value      	"AssociationByReference<$qualtype, $qualcont>")
+		    (object Attribute
+			tool       	"cg"
+			name       	"UnorderedQualifiedByReferenceContainer"
+			value      	"DictionaryByReference<$qualtype, $qualcont>")
+		    (object Attribute
+			tool       	"cg"
+			name       	"PathSeparator"
+			value      	"")
+		    (object Attribute
+			tool       	"cg"
+			name       	"FileNameFormat"
+			value      	"128vx_b")
+		    (object Attribute
+			tool       	"cg"
+			name       	"AlwaysKeepOrphanedCode"
+			value      	FALSE)))
+	    (object Attribute
+		tool       	"cg"
+		name       	"default__Class"
+		value      	(list Attribute_Set
+		    (object Attribute
+			tool       	"cg"
+			name       	"CodeName"
+			value      	"")
+		    (object Attribute
+			tool       	"cg"
+			name       	"ImplementationType"
+			value      	"")
+		    (object Attribute
+			tool       	"cg"
+			name       	"ClassKey"
+			value      	"class")
+		    (object Attribute
+			tool       	"cg"
+			name       	"GenerateEmptyRegions"
+			value      	("GenerateEmptyRegionSet" 3))
+		    (object Attribute
+			tool       	"cg"
+			name       	"GenerateEmptyRegionSet"
+			value      	(list Attribute_Set
+			    (object Attribute
+				tool       	"cg"
+				name       	"None"
+				value      	0)
+			    (object Attribute
+				tool       	"cg"
+				name       	"Preserved"
+				value      	1)
+			    (object Attribute
+				tool       	"cg"
+				name       	"Unpreserved"
+				value      	2)
+			    (object Attribute
+				tool       	"cg"
+				name       	"All"
+				value      	3)))
+		    (object Attribute
+			tool       	"cg"
+			name       	"PutBodiesInSpec"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"cg"
+			name       	"GenerateDefaultConstructor"
+			value      	("GenerateSet" 199))
+		    (object Attribute
+			tool       	"cg"
+			name       	"DefaultConstructorVisibility"
+			value      	("VisibilitySet" 45))
+		    (object Attribute
+			tool       	"cg"
+			name       	"InlineDefaultConstructor"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"cg"
+			name       	"ExplicitDefaultConstructor"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"cg"
+			name       	"GenerateCopyConstructor"
+			value      	("GenerateSet" 199))
+		    (object Attribute
+			tool       	"cg"
+			name       	"CopyConstructorVisibility"
+			value      	("VisibilitySet" 45))
+		    (object Attribute
+			tool       	"cg"
+			name       	"InlineCopyConstructor"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"cg"
+			name       	"ExplicitCopyConstructor"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"cg"
+			name       	"GenerateDestructor"
+			value      	TRUE)
+		    (object Attribute
+			tool       	"cg"
+			name       	"DestructorVisibility"
+			value      	("VisibilitySet" 45))
+		    (object Attribute
+			tool       	"cg"
+			name       	"DestructorKind"
+			value      	("ThreeKindSet" 200))
+		    (object Attribute
+			tool       	"cg"
+			name       	"InlineDestructor"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"cg"
+			name       	"GenerateAssignmentOperation"
+			value      	("GenerateSet" 199))
+		    (object Attribute
+			tool       	"cg"
+			name       	"AssignmentVisibility"
+			value      	("VisibilitySet" 45))
+		    (object Attribute
+			tool       	"cg"
+			name       	"AssignmentKind"
+			value      	("ThreeKindSet" 200))
+		    (object Attribute
+			tool       	"cg"
+			name       	"InlineAssignmentOperation"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"cg"
+			name       	"GenerateEqualityOperations"
+			value      	("GenerateSet" 199))
+		    (object Attribute
+			tool       	"cg"
+			name       	"EqualityVisibility"
+			value      	("VisibilitySet" 45))
+		    (object Attribute
+			tool       	"cg"
+			name       	"EqualityKind"
+			value      	("FriendKindSet" 200))
+		    (object Attribute
+			tool       	"cg"
+			name       	"InlineEqualityOperations"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"cg"
+			name       	"GenerateRelationalOperations"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"cg"
+			name       	"RelationalVisibility"
+			value      	("VisibilitySet" 45))
+		    (object Attribute
+			tool       	"cg"
+			name       	"RelationalKind"
+			value      	("FriendKindSet" 200))
+		    (object Attribute
+			tool       	"cg"
+			name       	"InlineRelationalOperations"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"cg"
+			name       	"GenerateStorageMgmtOperations"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"cg"
+			name       	"StorageMgmtVisibility"
+			value      	("VisibilitySet" 45))
+		    (object Attribute
+			tool       	"cg"
+			name       	"InlineStorageMgmtOperations"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"cg"
+			name       	"GenerateSubscriptOperation"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"cg"
+			name       	"SubscriptVisibility"
+			value      	("VisibilitySet" 45))
+		    (object Attribute
+			tool       	"cg"
+			name       	"SubscriptKind"
+			value      	("ThreeKindSet" 200))
+		    (object Attribute
+			tool       	"cg"
+			name       	"SubscriptResultType"
+			value      	"")
+		    (object Attribute
+			tool       	"cg"
+			name       	"InlineSubscriptOperation"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"cg"
+			name       	"GenerateDereferenceOperation"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"cg"
+			name       	"DereferenceVisibility"
+			value      	("VisibilitySet" 45))
+		    (object Attribute
+			tool       	"cg"
+			name       	"DereferenceKind"
+			value      	("ThreeKindSet" 200))
+		    (object Attribute
+			tool       	"cg"
+			name       	"DereferenceResultType"
+			value      	"")
+		    (object Attribute
+			tool       	"cg"
+			name       	"InlineDereferenceOperation"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"cg"
+			name       	"GenerateIndirectionOperation"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"cg"
+			name       	"IndirectionVisibility"
+			value      	("VisibilitySet" 45))
+		    (object Attribute
+			tool       	"cg"
+			name       	"IndirectionKind"
+			value      	("ThreeKindSet" 200))
+		    (object Attribute
+			tool       	"cg"
+			name       	"IndirectionResultType"
+			value      	"")
+		    (object Attribute
+			tool       	"cg"
+			name       	"InlineIndirectionOperation"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"cg"
+			name       	"GenerateStreamOperations"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"cg"
+			name       	"StreamVisibility"
+			value      	("VisibilitySet" 45))
+		    (object Attribute
+			tool       	"cg"
+			name       	"InlineStreamOperations"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"cg"
+			name       	"ThreeKindSet"
+			value      	(list Attribute_Set
+			    (object Attribute
+				tool       	"cg"
+				name       	"Common"
+				value      	200)
+			    (object Attribute
+				tool       	"cg"
+				name       	"Virtual"
+				value      	201)
+			    (object Attribute
+				tool       	"cg"
+				name       	"Abstract"
+				value      	202)))
+		    (object Attribute
+			tool       	"cg"
+			name       	"KindSet"
+			value      	(list Attribute_Set
+			    (object Attribute
+				tool       	"cg"
+				name       	"Common"
+				value      	200)
+			    (object Attribute
+				tool       	"cg"
+				name       	"Virtual"
+				value      	201)
+			    (object Attribute
+				tool       	"cg"
+				name       	"Abstract"
+				value      	202)
+			    (object Attribute
+				tool       	"cg"
+				name       	"Static"
+				value      	203)))
+		    (object Attribute
+			tool       	"cg"
+			name       	"FriendKindSet"
+			value      	(list Attribute_Set
+			    (object Attribute
+				tool       	"cg"
+				name       	"Common"
+				value      	200)
+			    (object Attribute
+				tool       	"cg"
+				name       	"Virtual"
+				value      	201)
+			    (object Attribute
+				tool       	"cg"
+				name       	"Abstract"
+				value      	202)
+			    (object Attribute
+				tool       	"cg"
+				name       	"Friend"
+				value      	204)))
+		    (object Attribute
+			tool       	"cg"
+			name       	"GenerateSet"
+			value      	(list Attribute_Set
+			    (object Attribute
+				tool       	"cg"
+				name       	"DeclareAndDefine"
+				value      	199)
+			    (object Attribute
+				tool       	"cg"
+				name       	"DeclareOnly"
+				value      	205)
+			    (object Attribute
+				tool       	"cg"
+				name       	"DoNotDeclare"
+				value      	206)))
+		    (object Attribute
+			tool       	"cg"
+			name       	"VisibilitySet"
+			value      	(list Attribute_Set
+			    (object Attribute
+				tool       	"cg"
+				name       	"Public"
+				value      	45)
+			    (object Attribute
+				tool       	"cg"
+				name       	"Protected"
+				value      	44)
+			    (object Attribute
+				tool       	"cg"
+				name       	"Private"
+				value      	43)
+			    (object Attribute
+				tool       	"cg"
+				name       	"Implementation"
+				value      	14)))))
+	    (object Attribute
+		tool       	"cg"
+		name       	"default__Module-Spec"
+		value      	(list Attribute_Set
+		    (object Attribute
+			tool       	"cg"
+			name       	"Generate"
+			value      	TRUE)
+		    (object Attribute
+			tool       	"cg"
+			name       	"GenerateEmptyRegions"
+			value      	("GenerateEmptyRegionSet" 3))
+		    (object Attribute
+			tool       	"cg"
+			name       	"GenerateEmptyRegionSet"
+			value      	(list Attribute_Set
+			    (object Attribute
+				tool       	"cg"
+				name       	"None"
+				value      	0)
+			    (object Attribute
+				tool       	"cg"
+				name       	"Preserved"
+				value      	1)
+			    (object Attribute
+				tool       	"cg"
+				name       	"Unpreserved"
+				value      	2)
+			    (object Attribute
+				tool       	"cg"
+				name       	"All"
+				value      	3)))
+		    (object Attribute
+			tool       	"cg"
+			name       	"CmIdentification"
+			value      	(value Text "  %X% %Q% %Z% %W%"))
+		    (object Attribute
+			tool       	"cg"
+			name       	"CopyrightNotice"
+			value      	(value Text ""))
+		    (object Attribute
+			tool       	"cg"
+			name       	"FileName"
+			value      	"AUTO GENERATE")
+		    (object Attribute
+			tool       	"cg"
+			name       	"AllowExtensionlessFileName"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"cg"
+			name       	"InclusionProtectionSymbol"
+			value      	"AUTO GENERATE")
+		    (object Attribute
+			tool       	"cg"
+			name       	"IncludeFormat"
+			value      	(value Text 
+|// $package
+|#include "$file"
+|
+			))
+		    (object Attribute
+			tool       	"cg"
+			name       	"IncludeBySimpleName"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"cg"
+			name       	"IncludePrecompiledHeader"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"cg"
+			name       	"IncludeOrder"
+			value      	"AMIR")
+		    (object Attribute
+			tool       	"cg"
+			name       	"AdditionalIncludes"
+			value      	(value Text ""))
+		    (object Attribute
+			tool       	"cg"
+			name       	"InliningStyle"
+			value      	("InliningStyleSet" 207))
+		    (object Attribute
+			tool       	"cg"
+			name       	"InliningStyleSet"
+			value      	(list Attribute_Set
+			    (object Attribute
+				tool       	"cg"
+				name       	"InClassDeclaration"
+				value      	208)
+			    (object Attribute
+				tool       	"cg"
+				name       	"FollowingClassDeclaration"
+				value      	207)))
+		    (object Attribute
+			tool       	"cg"
+			name       	"TypesDefined"
+			value      	(value Text ""))
+		    (object Attribute
+			tool       	"cg"
+			name       	"IncludeClosure"
+			value      	(value Text ""))))
+	    (object Attribute
+		tool       	"cg"
+		name       	"default__Module-Body"
+		value      	(list Attribute_Set
+		    (object Attribute
+			tool       	"cg"
+			name       	"Generate"
+			value      	TRUE)
+		    (object Attribute
+			tool       	"cg"
+			name       	"GenerateEmptyRegions"
+			value      	("GenerateEmptyRegionSet" 3))
+		    (object Attribute
+			tool       	"cg"
+			name       	"GenerateEmptyRegionSet"
+			value      	(list Attribute_Set
+			    (object Attribute
+				tool       	"cg"
+				name       	"None"
+				value      	0)
+			    (object Attribute
+				tool       	"cg"
+				name       	"Preserved"
+				value      	1)
+			    (object Attribute
+				tool       	"cg"
+				name       	"Unpreserved"
+				value      	2)
+			    (object Attribute
+				tool       	"cg"
+				name       	"All"
+				value      	3)))
+		    (object Attribute
+			tool       	"cg"
+			name       	"CmIdentification"
+			value      	(value Text "  %X% %Q% %Z% %W%"))
+		    (object Attribute
+			tool       	"cg"
+			name       	"CopyrightNotice"
+			value      	(value Text ""))
+		    (object Attribute
+			tool       	"cg"
+			name       	"FileName"
+			value      	"AUTO GENERATE")
+		    (object Attribute
+			tool       	"cg"
+			name       	"AllowExtensionlessFileName"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"cg"
+			name       	"IncludeFormat"
+			value      	(value Text 
+|// $package
+|#include "$file"
+|
+			))
+		    (object Attribute
+			tool       	"cg"
+			name       	"IncludeBySimpleName"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"cg"
+			name       	"IncludePrecompiledHeader"
+			value      	TRUE)
+		    (object Attribute
+			tool       	"cg"
+			name       	"IncludeOrder"
+			value      	"AMIR")
+		    (object Attribute
+			tool       	"cg"
+			name       	"AdditionalIncludes"
+			value      	(value Text ""))
+		    (object Attribute
+			tool       	"cg"
+			name       	"InliningStyle"
+			value      	("InliningStyleSet" 207))
+		    (object Attribute
+			tool       	"cg"
+			name       	"InliningStyleSet"
+			value      	(list Attribute_Set
+			    (object Attribute
+				tool       	"cg"
+				name       	"InClassDeclaration"
+				value      	208)
+			    (object Attribute
+				tool       	"cg"
+				name       	"FollowingClassDeclaration"
+				value      	207)))
+		    (object Attribute
+			tool       	"cg"
+			name       	"TypesDefined"
+			value      	(value Text ""))
+		    (object Attribute
+			tool       	"cg"
+			name       	"IncludeClosure"
+			value      	(value Text ""))))
+	    (object Attribute
+		tool       	"cg"
+		name       	"default__Operation"
+		value      	(list Attribute_Set
+		    (object Attribute
+			tool       	"cg"
+			name       	"CodeName"
+			value      	"")
+		    (object Attribute
+			tool       	"cg"
+			name       	"OperationKind"
+			value      	("OperationKindSet" 200))
+		    (object Attribute
+			tool       	"cg"
+			name       	"OperationKindSet"
+			value      	(list Attribute_Set
+			    (object Attribute
+				tool       	"cg"
+				name       	"Common"
+				value      	200)
+			    (object Attribute
+				tool       	"cg"
+				name       	"Virtual"
+				value      	201)
+			    (object Attribute
+				tool       	"cg"
+				name       	"Abstract"
+				value      	202)
+			    (object Attribute
+				tool       	"cg"
+				name       	"Static"
+				value      	203)
+			    (object Attribute
+				tool       	"cg"
+				name       	"Friend"
+				value      	204)))
+		    (object Attribute
+			tool       	"cg"
+			name       	"GenerateAbstractBody"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"cg"
+			name       	"SpecialDeclReturnType"
+			value      	"")
+		    (object Attribute
+			tool       	"cg"
+			name       	"OperationIsConst"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"cg"
+			name       	"OperationIsExplicit"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"cg"
+			name       	"Inline"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"cg"
+			name       	"EntryCode"
+			value      	(value Text ""))
+		    (object Attribute
+			tool       	"cg"
+			name       	"ExitCode"
+			value      	(value Text ""))
+		    (object Attribute
+			tool       	"cg"
+			name       	"CCRegion"
+			value      	"")
+		    (object Attribute
+			tool       	"cg"
+			name       	"GenerateEmptyRegions"
+			value      	("GenerateEmptyRegionSet" 3))
+		    (object Attribute
+			tool       	"cg"
+			name       	"GenerateEmptyRegionSet"
+			value      	(list Attribute_Set
+			    (object Attribute
+				tool       	"cg"
+				name       	"None"
+				value      	0)
+			    (object Attribute
+				tool       	"cg"
+				name       	"Preserved"
+				value      	1)
+			    (object Attribute
+				tool       	"cg"
+				name       	"Unpreserved"
+				value      	2)
+			    (object Attribute
+				tool       	"cg"
+				name       	"All"
+				value      	3)))
+		    (object Attribute
+			tool       	"cg"
+			name       	"BodyAnnotations"
+			value      	"")))
+	    (object Attribute
+		tool       	"cg"
+		name       	"default__Has"
+		value      	(list Attribute_Set
+		    (object Attribute
+			tool       	"cg"
+			name       	"CodeName"
+			value      	"")
+		    (object Attribute
+			tool       	"cg"
+			name       	"Ordered"
+			value      	TRUE)
+		    (object Attribute
+			tool       	"cg"
+			name       	"NameIfUnlabeled"
+			value      	"the_$supplier")
+		    (object Attribute
+			tool       	"cg"
+			name       	"GenerateDataMember"
+			value      	TRUE)
+		    (object Attribute
+			tool       	"cg"
+			name       	"DataMemberName"
+			value      	"$relationship")
+		    (object Attribute
+			tool       	"cg"
+			name       	"DataMemberVisibility"
+			value      	("DataMemberVisibilitySet" 14))
+		    (object Attribute
+			tool       	"cg"
+			name       	"DataMemberVisibilitySet"
+			value      	(list Attribute_Set
+			    (object Attribute
+				tool       	"cg"
+				name       	"Public"
+				value      	45)
+			    (object Attribute
+				tool       	"cg"
+				name       	"Protected"
+				value      	44)
+			    (object Attribute
+				tool       	"cg"
+				name       	"Private"
+				value      	43)
+			    (object Attribute
+				tool       	"cg"
+				name       	"Implementation"
+				value      	14)
+			    (object Attribute
+				tool       	"cg"
+				name       	"AtRelationshipVisibility"
+				value      	210)))
+		    (object Attribute
+			tool       	"cg"
+			name       	"DataMemberMutability"
+			value      	("DataMemberMutabilitySet" 0))
+		    (object Attribute
+			tool       	"cg"
+			name       	"DataMemberMutabilitySet"
+			value      	(list Attribute_Set
+			    (object Attribute
+				tool       	"cg"
+				name       	"Unrestricted"
+				value      	0)
+			    (object Attribute
+				tool       	"cg"
+				name       	"Mutable"
+				value      	1)
+			    (object Attribute
+				tool       	"cg"
+				name       	"Const"
+				value      	2)))
+		    (object Attribute
+			tool       	"cg"
+			name       	"DataMemberIsVolatile"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"cg"
+			name       	"DataMemberFieldSize"
+			value      	"")
+		    (object Attribute
+			tool       	"cg"
+			name       	"InitialValue"
+			value      	(value Text ""))
+		    (object Attribute
+			tool       	"cg"
+			name       	"GenerateGetOperation"
+			value      	TRUE)
+		    (object Attribute
+			tool       	"cg"
+			name       	"GenerateSetOperation"
+			value      	TRUE)
+		    (object Attribute
+			tool       	"cg"
+			name       	"GetName"
+			value      	"get_$relationship")
+		    (object Attribute
+			tool       	"cg"
+			name       	"SetName"
+			value      	"set_$relationship")
+		    (object Attribute
+			tool       	"cg"
+			name       	"GetSetKinds"
+			value      	("GetSetKindsSet" 200))
+		    (object Attribute
+			tool       	"cg"
+			name       	"GetSetKindsSet"
+			value      	(list Attribute_Set
+			    (object Attribute
+				tool       	"cg"
+				name       	"Common"
+				value      	200)
+			    (object Attribute
+				tool       	"cg"
+				name       	"Virtual"
+				value      	201)
+			    (object Attribute
+				tool       	"cg"
+				name       	"Abstract"
+				value      	202)
+			    (object Attribute
+				tool       	"cg"
+				name       	"Static"
+				value      	203)
+			    (object Attribute
+				tool       	"cg"
+				name       	"Friend"
+				value      	204)))
+		    (object Attribute
+			tool       	"cg"
+			name       	"ContainerClass"
+			value      	"")
+		    (object Attribute
+			tool       	"cg"
+			name       	"SelectorName"
+			value      	"")
+		    (object Attribute
+			tool       	"cg"
+			name       	"SelectorType"
+			value      	"")
+		    (object Attribute
+			tool       	"cg"
+			name       	"GetIsConst"
+			value      	TRUE)
+		    (object Attribute
+			tool       	"cg"
+			name       	"GetResultIsConst"
+			value      	("GetResultIsConstSet" 2))
+		    (object Attribute
+			tool       	"cg"
+			name       	"GetResultIsConstSet"
+			value      	(list Attribute_Set
+			    (object Attribute
+				tool       	"cg"
+				name       	"False"
+				value      	0)
+			    (object Attribute
+				tool       	"cg"
+				name       	"True"
+				value      	1)
+			    (object Attribute
+				tool       	"cg"
+				name       	"Same_As_Function"
+				value      	2)))
+		    (object Attribute
+			tool       	"cg"
+			name       	"GetSetByReference"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"cg"
+			name       	"InlineGet"
+			value      	TRUE)
+		    (object Attribute
+			tool       	"cg"
+			name       	"SetReturnsValue"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"cg"
+			name       	"InlineSet"
+			value      	TRUE)
+		    (object Attribute
+			tool       	"cg"
+			name       	"ForwardReferenceOnly"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"cg"
+			name       	"HasRelTypeSet"
+			value      	(list Attribute_Set
+			    (object Attribute
+				tool       	"cg"
+				name       	"Array"
+				value      	24)
+			    (object Attribute
+				tool       	"cg"
+				name       	"Sequence"
+				value      	47)))))
+	    (object Attribute
+		tool       	"cg"
+		name       	"default__Association"
+		value      	(list Attribute_Set
+		    (object Attribute
+			tool       	"cg"
+			name       	"NameIfUnlabeled"
+			value      	"the_$targetClass")))
+	    (object Attribute
+		tool       	"cg"
+		name       	"default__Inherit"
+		value      	(list Attribute_Set
+		    (object Attribute
+			tool       	"cg"
+			name       	"InstanceArguments"
+			value      	"")))
+	    (object Attribute
+		tool       	"cg"
+		name       	"default__Role"
+		value      	(list Attribute_Set
+		    (object Attribute
+			tool       	"cg"
+			name       	"CodeName"
+			value      	"")
+		    (object Attribute
+			tool       	"cg"
+			name       	"ForwardReferenceOnly"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"cg"
+			name       	"NameIfUnlabeled"
+			value      	"the_$targetClass")
+		    (object Attribute
+			tool       	"cg"
+			name       	"GenerateDataMember"
+			value      	TRUE)
+		    (object Attribute
+			tool       	"cg"
+			name       	"DataMemberName"
+			value      	"$target")
+		    (object Attribute
+			tool       	"cg"
+			name       	"DataMemberVisibility"
+			value      	("DataMemberVisibilitySet" 14))
+		    (object Attribute
+			tool       	"cg"
+			name       	"DataMemberVisibilitySet"
+			value      	(list Attribute_Set
+			    (object Attribute
+				tool       	"cg"
+				name       	"Public"
+				value      	45)
+			    (object Attribute
+				tool       	"cg"
+				name       	"Protected"
+				value      	44)
+			    (object Attribute
+				tool       	"cg"
+				name       	"Private"
+				value      	43)
+			    (object Attribute
+				tool       	"cg"
+				name       	"Implementation"
+				value      	14)
+			    (object Attribute
+				tool       	"cg"
+				name       	"AtRelationshipVisibility"
+				value      	210)))
+		    (object Attribute
+			tool       	"cg"
+			name       	"DataMemberMutability"
+			value      	("DataMemberMutabilitySet" 0))
+		    (object Attribute
+			tool       	"cg"
+			name       	"DataMemberMutabilitySet"
+			value      	(list Attribute_Set
+			    (object Attribute
+				tool       	"cg"
+				name       	"Unrestricted"
+				value      	0)
+			    (object Attribute
+				tool       	"cg"
+				name       	"Mutable"
+				value      	1)
+			    (object Attribute
+				tool       	"cg"
+				name       	"Const"
+				value      	2)))
+		    (object Attribute
+			tool       	"cg"
+			name       	"DataMemberIsVolatile"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"cg"
+			name       	"DataMemberFieldSize"
+			value      	"")
+		    (object Attribute
+			tool       	"cg"
+			name       	"InitialValue"
+			value      	(value Text ""))
+		    (object Attribute
+			tool       	"cg"
+			name       	"ContainerClass"
+			value      	"")
+		    (object Attribute
+			tool       	"cg"
+			name       	"ContainerGet"
+			value      	"$data.get($keys)")
+		    (object Attribute
+			tool       	"cg"
+			name       	"ContainerSet"
+			value      	"$data.set($keys,$value)")
+		    (object Attribute
+			tool       	"cg"
+			name       	"QualifiedContainer"
+			value      	"")
+		    (object Attribute
+			tool       	"cg"
+			name       	"AssocClassContainer"
+			value      	"$supplier *")
+		    (object Attribute
+			tool       	"cg"
+			name       	"AssocClassInitialValue"
+			value      	(value Text ""))
+		    (object Attribute
+			tool       	"cg"
+			name       	"GetSetKinds"
+			value      	("GetSetKindsSet" 200))
+		    (object Attribute
+			tool       	"cg"
+			name       	"GetSetKindsSet"
+			value      	(list Attribute_Set
+			    (object Attribute
+				tool       	"cg"
+				name       	"Common"
+				value      	200)
+			    (object Attribute
+				tool       	"cg"
+				name       	"Virtual"
+				value      	201)
+			    (object Attribute
+				tool       	"cg"
+				name       	"Abstract"
+				value      	202)
+			    (object Attribute
+				tool       	"cg"
+				name       	"Static"
+				value      	203)
+			    (object Attribute
+				tool       	"cg"
+				name       	"Friend"
+				value      	204)))
+		    (object Attribute
+			tool       	"cg"
+			name       	"GetSetByReference"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"cg"
+			name       	"GenerateGetOperation"
+			value      	TRUE)
+		    (object Attribute
+			tool       	"cg"
+			name       	"GetName"
+			value      	"get_$target")
+		    (object Attribute
+			tool       	"cg"
+			name       	"GetIsConst"
+			value      	TRUE)
+		    (object Attribute
+			tool       	"cg"
+			name       	"GetResultIsConst"
+			value      	("GetResultIsConstSet" 2))
+		    (object Attribute
+			tool       	"cg"
+			name       	"GetResultIsConstSet"
+			value      	(list Attribute_Set
+			    (object Attribute
+				tool       	"cg"
+				name       	"False"
+				value      	0)
+			    (object Attribute
+				tool       	"cg"
+				name       	"True"
+				value      	1)
+			    (object Attribute
+				tool       	"cg"
+				name       	"Same_As_Function"
+				value      	2)))
+		    (object Attribute
+			tool       	"cg"
+			name       	"InlineGet"
+			value      	TRUE)
+		    (object Attribute
+			tool       	"cg"
+			name       	"GenerateSetOperation"
+			value      	TRUE)
+		    (object Attribute
+			tool       	"cg"
+			name       	"SetName"
+			value      	"set_$target")
+		    (object Attribute
+			tool       	"cg"
+			name       	"SetReturnsValue"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"cg"
+			name       	"InlineSet"
+			value      	TRUE)
+		    (object Attribute
+			tool       	"cg"
+			name       	"QualifiedGetSetByReference"
+			value      	("QualifiedGetSetByReferenceSet" 2))
+		    (object Attribute
+			tool       	"cg"
+			name       	"QualifiedGetSetByReferenceSet"
+			value      	(list Attribute_Set
+			    (object Attribute
+				tool       	"cg"
+				name       	"False"
+				value      	0)
+			    (object Attribute
+				tool       	"cg"
+				name       	"True"
+				value      	1)
+			    (object Attribute
+				tool       	"cg"
+				name       	"Same_As_GetSetByReference"
+				value      	2)))
+		    (object Attribute
+			tool       	"cg"
+			name       	"GenerateQualifiedGetOperation"
+			value      	TRUE)
+		    (object Attribute
+			tool       	"cg"
+			name       	"QualifiedGetName"
+			value      	"get_$target")
+		    (object Attribute
+			tool       	"cg"
+			name       	"QualifiedGetIsConst"
+			value      	TRUE)
+		    (object Attribute
+			tool       	"cg"
+			name       	"QualifiedGetResultIsConst"
+			value      	("GetResultIsConstSet" 2))
+		    (object Attribute
+			tool       	"cg"
+			name       	"InlineQualifiedGet"
+			value      	TRUE)
+		    (object Attribute
+			tool       	"cg"
+			name       	"GenerateQualifiedSetOperation"
+			value      	TRUE)
+		    (object Attribute
+			tool       	"cg"
+			name       	"QualifiedSetName"
+			value      	"set_$target")
+		    (object Attribute
+			tool       	"cg"
+			name       	"QualifiedSetReturnsValue"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"cg"
+			name       	"InlineQualifiedSet"
+			value      	TRUE)
+		    (object Attribute
+			tool       	"cg"
+			name       	"GenerateAssocClassDataMember"
+			value      	TRUE)
+		    (object Attribute
+			tool       	"cg"
+			name       	"AssocClassDataMemberName"
+			value      	"$target")
+		    (object Attribute
+			tool       	"cg"
+			name       	"AssocClassDataMemberVisibility"
+			value      	("DataMemberVisibilitySet" 14))
+		    (object Attribute
+			tool       	"cg"
+			name       	"DataMemberVisibilitySet"
+			value      	(list Attribute_Set
+			    (object Attribute
+				tool       	"cg"
+				name       	"Public"
+				value      	45)
+			    (object Attribute
+				tool       	"cg"
+				name       	"Protected"
+				value      	44)
+			    (object Attribute
+				tool       	"cg"
+				name       	"Private"
+				value      	43)
+			    (object Attribute
+				tool       	"cg"
+				name       	"Implementation"
+				value      	14)
+			    (object Attribute
+				tool       	"cg"
+				name       	"AtRelationshipVisibility"
+				value      	210)))
+		    (object Attribute
+			tool       	"cg"
+			name       	"AssocClassDataMemberMutability"
+			value      	("DataMemberMutabilitySet" 0))
+		    (object Attribute
+			tool       	"cg"
+			name       	"DataMemberMutabilitySet"
+			value      	(list Attribute_Set
+			    (object Attribute
+				tool       	"cg"
+				name       	"Unrestricted"
+				value      	0)
+			    (object Attribute
+				tool       	"cg"
+				name       	"Mutable"
+				value      	1)
+			    (object Attribute
+				tool       	"cg"
+				name       	"Const"
+				value      	2)))
+		    (object Attribute
+			tool       	"cg"
+			name       	"AssocClassDataMemberIsVolatile"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"cg"
+			name       	"AssocClassGetSetKinds"
+			value      	("GetSetKindsSet" 200))
+		    (object Attribute
+			tool       	"cg"
+			name       	"GenerateAssocClassGetOperation"
+			value      	TRUE)
+		    (object Attribute
+			tool       	"cg"
+			name       	"AssocClassGetName"
+			value      	"get_$target")
+		    (object Attribute
+			tool       	"cg"
+			name       	"AssocClassGetIsConst"
+			value      	TRUE)
+		    (object Attribute
+			tool       	"cg"
+			name       	"AssocClassGetResultIsConst"
+			value      	("GetResultIsConstSet" 2))
+		    (object Attribute
+			tool       	"cg"
+			name       	"InlineAssocClassGet"
+			value      	TRUE)
+		    (object Attribute
+			tool       	"cg"
+			name       	"GenerateAssocClassSetOperation"
+			value      	TRUE)
+		    (object Attribute
+			tool       	"cg"
+			name       	"AssocClassSetName"
+			value      	"set_$target")
+		    (object Attribute
+			tool       	"cg"
+			name       	"AssocClassSetReturnsValue"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"cg"
+			name       	"InlineAssocClassSet"
+			value      	TRUE)
+		    (object Attribute
+			tool       	"cg"
+			name       	"AssocClassForwardReferenceOnly"
+			value      	TRUE)
+		    (object Attribute
+			tool       	"cg"
+			name       	"AssocTypeSet"
+			value      	(list Attribute_Set
+			    (object Attribute
+				tool       	"cg"
+				name       	"Array"
+				value      	24)
+			    (object Attribute
+				tool       	"cg"
+				name       	"Sequence"
+				value      	47)))))
+	    (object Attribute
+		tool       	"cg"
+		name       	"default__Attribute"
+		value      	(list Attribute_Set
+		    (object Attribute
+			tool       	"cg"
+			name       	"CodeName"
+			value      	"")
+		    (object Attribute
+			tool       	"cg"
+			name       	"GenerateDataMember"
+			value      	TRUE)
+		    (object Attribute
+			tool       	"cg"
+			name       	"DataMemberName"
+			value      	"$attribute")
+		    (object Attribute
+			tool       	"cg"
+			name       	"DataMemberVisibility"
+			value      	("DataMemberVisibilitySet" 14))
+		    (object Attribute
+			tool       	"cg"
+			name       	"DataMemberVisibilitySet"
+			value      	(list Attribute_Set
+			    (object Attribute
+				tool       	"cg"
+				name       	"Public"
+				value      	45)
+			    (object Attribute
+				tool       	"cg"
+				name       	"Protected"
+				value      	44)
+			    (object Attribute
+				tool       	"cg"
+				name       	"Private"
+				value      	43)
+			    (object Attribute
+				tool       	"cg"
+				name       	"Implementation"
+				value      	14)
+			    (object Attribute
+				tool       	"cg"
+				name       	"AtAttributeVisibility"
+				value      	211)))
+		    (object Attribute
+			tool       	"cg"
+			name       	"DataMemberMutability"
+			value      	("DataMemberMutabilitySet" 0))
+		    (object Attribute
+			tool       	"cg"
+			name       	"DataMemberMutabilitySet"
+			value      	(list Attribute_Set
+			    (object Attribute
+				tool       	"cg"
+				name       	"Unrestricted"
+				value      	0)
+			    (object Attribute
+				tool       	"cg"
+				name       	"Mutable"
+				value      	1)
+			    (object Attribute
+				tool       	"cg"
+				name       	"Const"
+				value      	2)))
+		    (object Attribute
+			tool       	"cg"
+			name       	"DataMemberIsVolatile"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"cg"
+			name       	"DataMemberFieldSize"
+			value      	"")
+		    (object Attribute
+			tool       	"cg"
+			name       	"GenerateGetOperation"
+			value      	TRUE)
+		    (object Attribute
+			tool       	"cg"
+			name       	"GenerateSetOperation"
+			value      	TRUE)
+		    (object Attribute
+			tool       	"cg"
+			name       	"GetName"
+			value      	"get_$attribute")
+		    (object Attribute
+			tool       	"cg"
+			name       	"SetName"
+			value      	"set_$attribute")
+		    (object Attribute
+			tool       	"cg"
+			name       	"GetSetKinds"
+			value      	("GetSetKindsSet" 200))
+		    (object Attribute
+			tool       	"cg"
+			name       	"GetSetKindsSet"
+			value      	(list Attribute_Set
+			    (object Attribute
+				tool       	"cg"
+				name       	"Common"
+				value      	200)
+			    (object Attribute
+				tool       	"cg"
+				name       	"Virtual"
+				value      	201)
+			    (object Attribute
+				tool       	"cg"
+				name       	"Abstract"
+				value      	202)
+			    (object Attribute
+				tool       	"cg"
+				name       	"Static"
+				value      	203)
+			    (object Attribute
+				tool       	"cg"
+				name       	"Friend"
+				value      	204)))
+		    (object Attribute
+			tool       	"cg"
+			name       	"GetIsConst"
+			value      	TRUE)
+		    (object Attribute
+			tool       	"cg"
+			name       	"GetResultIsConst"
+			value      	("GetResultIsConstSet" 2))
+		    (object Attribute
+			tool       	"cg"
+			name       	"GetResultIsConstSet"
+			value      	(list Attribute_Set
+			    (object Attribute
+				tool       	"cg"
+				name       	"False"
+				value      	0)
+			    (object Attribute
+				tool       	"cg"
+				name       	"True"
+				value      	1)
+			    (object Attribute
+				tool       	"cg"
+				name       	"Same_As_Function"
+				value      	2)))
+		    (object Attribute
+			tool       	"cg"
+			name       	"GetSetByReference"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"cg"
+			name       	"InlineGet"
+			value      	TRUE)
+		    (object Attribute
+			tool       	"cg"
+			name       	"SetReturnsValue"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"cg"
+			name       	"InlineSet"
+			value      	TRUE)
+		    (object Attribute
+			tool       	"cg"
+			name       	"CCRegion"
+			value      	"")))
+	    (object Attribute
+		tool       	"cg"
+		name       	"default__Uses"
+		value      	(list Attribute_Set
+		    (object Attribute
+			tool       	"cg"
+			name       	"ForwardReferenceOnly"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"cg"
+			name       	"BodyReferenceOnly"
+			value      	FALSE)))
+	    (object Attribute
+		tool       	"cg"
+		name       	"default__Subsystem"
+		value      	(list Attribute_Set
+		    (object Attribute
+			tool       	"cg"
+			name       	"Directory"
+			value      	"AUTO GENERATE")
+		    (object Attribute
+			tool       	"cg"
+			name       	"DirectoryIsOnSearchList"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"cg"
+			name       	"PrecompiledHeader"
+			value      	"")))
+	    (object Attribute
+		tool       	"cg"
+		name       	"default__Category"
+		value      	(list Attribute_Set
+		    (object Attribute
+			tool       	"cg"
+			name       	"IsNamespace"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"cg"
+			name       	"Indent"
+			value      	2)
+		    (object Attribute
+			tool       	"cg"
+			name       	"CodeName"
+			value      	"")
+		    (object Attribute
+			tool       	"cg"
+			name       	"GenerateEmptyRegions"
+			value      	("GenerateEmptyRegionSet" 3))
+		    (object Attribute
+			tool       	"cg"
+			name       	"GenerateEmptyRegionSet"
+			value      	(list Attribute_Set
+			    (object Attribute
+				tool       	"cg"
+				name       	"None"
+				value      	0)
+			    (object Attribute
+				tool       	"cg"
+				name       	"Preserved"
+				value      	1)
+			    (object Attribute
+				tool       	"cg"
+				name       	"Unpreserved"
+				value      	2)
+			    (object Attribute
+				tool       	"cg"
+				name       	"All"
+				value      	3)))))
+	    (object Attribute
+		tool       	"MSVC"
+		name       	"propertyId"
+		value      	"809135966")
+	    (object Attribute
+		tool       	"MSVC"
+		name       	"default__Project"
+		value      	(list Attribute_Set
+		    (object Attribute
+			tool       	"MSVC"
+			name       	"Version"
+			value      	"5.0")))
+	    (object Attribute
+		tool       	"MSVC"
+		name       	"default__Class"
+		value      	(list Attribute_Set
+		    (object Attribute
+			tool       	"MSVC"
+			name       	"Type"
+			value      	("MSVCClassTypeSet" 0))
+		    (object Attribute
+			tool       	"MSVC"
+			name       	"MSVCClassTypeSet"
+			value      	(list Attribute_Set
+			    (object Attribute
+				tool       	"MSVC"
+				name       	"Normal"
+				value      	0)
+			    (object Attribute
+				tool       	"MSVC"
+				name       	"Interface_Part"
+				value      	1)
+			    (object Attribute
+				tool       	"MSVC"
+				name       	"Connection_Part"
+				value      	2)
+			    (object Attribute
+				tool       	"MSVC"
+				name       	"Class_Factory"
+				value      	3)))
+		    (object Attribute
+			tool       	"MSVC"
+			name       	"CObjectFunctionality"
+			value      	("CObjectFunctionalitySet" 0))
+		    (object Attribute
+			tool       	"MSVC"
+			name       	"CObjectFunctionalitySet"
+			value      	(list Attribute_Set
+			    (object Attribute
+				tool       	"MSVC"
+				name       	"None"
+				value      	0)
+			    (object Attribute
+				tool       	"MSVC"
+				name       	"Dynamic"
+				value      	1)
+			    (object Attribute
+				tool       	"MSVC"
+				name       	"Dyncreate"
+				value      	2)
+			    (object Attribute
+				tool       	"MSVC"
+				name       	"Serial"
+				value      	3)))
+		    (object Attribute
+			tool       	"MSVC"
+			name       	"GenerateOverrideGroup"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"MSVC"
+			name       	"GenerateDataGroup"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"MSVC"
+			name       	"AFX_DATA_Entries"
+			value      	(value Text ""))
+		    (object Attribute
+			tool       	"MSVC"
+			name       	"GenerateFieldGroup"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"MSVC"
+			name       	"AFX_FIELD_Entries"
+			value      	(value Text ""))
+		    (object Attribute
+			tool       	"MSVC"
+			name       	"GenerateMessageGroup"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"MSVC"
+			name       	"GenerateMessageMap"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"MSVC"
+			name       	"AFX_MSG_MAP_Entries"
+			value      	(value Text ""))
+		    (object Attribute
+			tool       	"MSVC"
+			name       	"MESSAGE_MAP_Entries"
+			value      	(value Text ""))
+		    (object Attribute
+			tool       	"MSVC"
+			name       	"OLEFactory"
+			value      	("OLEFactorySet" 0))
+		    (object Attribute
+			tool       	"MSVC"
+			name       	"OLEFactorySet"
+			value      	(list Attribute_Set
+			    (object Attribute
+				tool       	"MSVC"
+				name       	"None"
+				value      	0)
+			    (object Attribute
+				tool       	"MSVC"
+				name       	"Built_in"
+				value      	1)
+			    (object Attribute
+				tool       	"MSVC"
+				name       	"Simple"
+				value      	2)
+			    (object Attribute
+				tool       	"MSVC"
+				name       	"Licensed"
+				value      	3)))
+		    (object Attribute
+			tool       	"MSVC"
+			name       	"OLEName"
+			value      	"")
+		    (object Attribute
+			tool       	"MSVC"
+			name       	"OLEClassID"
+			value      	"")
+		    (object Attribute
+			tool       	"MSVC"
+			name       	"GenerateOLECtlType"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"MSVC"
+			name       	"OLECtlType"
+			value      	"")
+		    (object Attribute
+			tool       	"MSVC"
+			name       	"GenerateOLETypeLib"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"MSVC"
+			name       	"OLETypeLibID"
+			value      	"")
+		    (object Attribute
+			tool       	"MSVC"
+			name       	"OLETypeLibMajor"
+			value      	"")
+		    (object Attribute
+			tool       	"MSVC"
+			name       	"OLETypeLibMinor"
+			value      	"")
+		    (object Attribute
+			tool       	"MSVC"
+			name       	"GeneratePropPageIDs"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"MSVC"
+			name       	"OLEPropPageIDs"
+			value      	(value Text ""))
+		    (object Attribute
+			tool       	"MSVC"
+			name       	"GenerateDispatchMap"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"MSVC"
+			name       	"AFX_DISPATCH_Entries"
+			value      	(value Text ""))
+		    (object Attribute
+			tool       	"MSVC"
+			name       	"AFX_DISPATCH_MAP_Entries"
+			value      	(value Text ""))
+		    (object Attribute
+			tool       	"MSVC"
+			name       	"DISPATCH_MAP_Entries"
+			value      	(value Text ""))
+		    (object Attribute
+			tool       	"MSVC"
+			name       	"StockProperties"
+			value      	(value Text ""))
+		    (object Attribute
+			tool       	"MSVC"
+			name       	"StockFunctions"
+			value      	(value Text ""))
+		    (object Attribute
+			tool       	"MSVC"
+			name       	"DispatchDefValue"
+			value      	"")
+		    (object Attribute
+			tool       	"MSVC"
+			name       	"GenerateDispIdEnum"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"MSVC"
+			name       	"AFX_DISP_ID_Entries"
+			value      	(value Text ""))
+		    (object Attribute
+			tool       	"MSVC"
+			name       	"GenerateInterfaceMap"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"MSVC"
+			name       	"INTERFACE_MAP_Entries"
+			value      	(value Text ""))
+		    (object Attribute
+			tool       	"MSVC"
+			name       	"InitInterface"
+			value      	"")
+		    (object Attribute
+			tool       	"MSVC"
+			name       	"GenerateEventMap"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"MSVC"
+			name       	"AFX_EVENT_Entries"
+			value      	(value Text ""))
+		    (object Attribute
+			tool       	"MSVC"
+			name       	"AFX_EVENT_MAP_Entries"
+			value      	(value Text ""))
+		    (object Attribute
+			tool       	"MSVC"
+			name       	"EVENT_MAP_Entries"
+			value      	(value Text ""))
+		    (object Attribute
+			tool       	"MSVC"
+			name       	"StockEvents"
+			value      	(value Text ""))
+		    (object Attribute
+			tool       	"MSVC"
+			name       	"GenerateEventSinkMap"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"MSVC"
+			name       	"AFX_EVENTSINK_Entries"
+			value      	(value Text ""))
+		    (object Attribute
+			tool       	"MSVC"
+			name       	"AFX_EVENTSINK_MAP_Entries"
+			value      	(value Text ""))
+		    (object Attribute
+			tool       	"MSVC"
+			name       	"EVENTSINK_MAP_Entries"
+			value      	(value Text ""))
+		    (object Attribute
+			tool       	"MSVC"
+			name       	"PropNotifySinks"
+			value      	(value Text ""))
+		    (object Attribute
+			tool       	"MSVC"
+			name       	"GenerateConnectionMap"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"MSVC"
+			name       	"CONNECTION_MAP_Entries"
+			value      	(value Text ""))
+		    (object Attribute
+			tool       	"MSVC"
+			name       	"ConnectionPointIID"
+			value      	"")
+		    (object Attribute
+			tool       	"MSVC"
+			name       	"InheritanceType"
+			value      	"")
+		    (object Attribute
+			tool       	"MSVC"
+			name       	"DeclSpec"
+			value      	"")
+		    (object Attribute
+			tool       	"MSVC"
+			name       	"OLECommands"
+			value      	(value Text ""))
+		    (object Attribute
+			tool       	"MSVC"
+			name       	"MFCDeclares"
+			value      	(value Text ""))
+		    (object Attribute
+			tool       	"MSVC"
+			name       	"MFCImplements"
+			value      	(value Text ""))
+		    (object Attribute
+			tool       	"MSVC"
+			name       	"ATL_Declares"
+			value      	(value Text ""))
+		    (object Attribute
+			tool       	"MSVC"
+			name       	"GenerateCOMMap"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"MSVC"
+			name       	"COM_MAP_Entries"
+			value      	(value Text ""))
+		    (object Attribute
+			tool       	"MSVC"
+			name       	"GenerateConnectionPointMap"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"MSVC"
+			name       	"CONNECTION_POINT_MAP_Entries"
+			value      	(value Text ""))
+		    (object Attribute
+			tool       	"MSVC"
+			name       	"GenerateMsgMap"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"MSVC"
+			name       	"MSG_MAP_Entries"
+			value      	(value Text ""))
+		    (object Attribute
+			tool       	"MSVC"
+			name       	"GeneratePropertyMap"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"MSVC"
+			name       	"PROPERTY_MAP_Entries"
+			value      	(value Text ""))))
+	    (object Attribute
+		tool       	"MSVC"
+		name       	"default__Operation"
+		value      	(list Attribute_Set
+		    (object Attribute
+			tool       	"MSVC"
+			name       	"Type"
+			value      	("MSVCOperationTypeSet" 0))
+		    (object Attribute
+			tool       	"MSVC"
+			name       	"MSVCOperationTypeSet"
+			value      	(list Attribute_Set
+			    (object Attribute
+				tool       	"MSVC"
+				name       	"Normal"
+				value      	0)
+			    (object Attribute
+				tool       	"MSVC"
+				name       	"Virtual_Override"
+				value      	1)
+			    (object Attribute
+				tool       	"MSVC"
+				name       	"Message_Handler"
+				value      	2)
+			    (object Attribute
+				tool       	"MSVC"
+				name       	"Dispatch_Handler"
+				value      	3)
+			    (object Attribute
+				tool       	"MSVC"
+				name       	"Event_Firing_Function"
+				value      	4)
+			    (object Attribute
+				tool       	"MSVC"
+				name       	"Event_Sink_Handler"
+				value      	5)
+			    (object Attribute
+				tool       	"MSVC"
+				name       	"Std_OLE_Method"
+				value      	6)
+			    (object Attribute
+				tool       	"MSVC"
+				name       	"Command_Parser"
+				value      	7)
+			    (object Attribute
+				tool       	"MSVC"
+				name       	"Property_Get_Function"
+				value      	8)
+			    (object Attribute
+				tool       	"MSVC"
+				name       	"Property_Set_Function"
+				value      	9)
+			    (object Attribute
+				tool       	"MSVC"
+				name       	"Property_Notify_Function"
+				value      	10)
+			    (object Attribute
+				tool       	"MSVC"
+				name       	"Macro_Generated_Function"
+				value      	11)))
+		    (object Attribute
+			tool       	"MSVC"
+			name       	"AFX_MSG_MAP_Entries"
+			value      	(value Text ""))
+		    (object Attribute
+			tool       	"MSVC"
+			name       	"MESSAGE_MAP_Entries"
+			value      	(value Text ""))
+		    (object Attribute
+			tool       	"MSVC"
+			name       	"AFX_DISPATCH_MAP_Entries"
+			value      	(value Text ""))
+		    (object Attribute
+			tool       	"MSVC"
+			name       	"DISPATCH_MAP_Entries"
+			value      	(value Text ""))
+		    (object Attribute
+			tool       	"MSVC"
+			name       	"AFX_EVENT_MAP_Entries"
+			value      	(value Text ""))
+		    (object Attribute
+			tool       	"MSVC"
+			name       	"EVENT_MAP_Entries"
+			value      	(value Text ""))
+		    (object Attribute
+			tool       	"MSVC"
+			name       	"AFX_EVENTSINK_MAP_Entries"
+			value      	(value Text ""))
+		    (object Attribute
+			tool       	"MSVC"
+			name       	"EVENTSINK_MAP_Entries"
+			value      	(value Text ""))
+		    (object Attribute
+			tool       	"MSVC"
+			name       	"CallType"
+			value      	"")
+		    (object Attribute
+			tool       	"MSVC"
+			name       	"DeclSpec"
+			value      	"")
+		    (object Attribute
+			tool       	"MSVC"
+			name       	"BodyImage"
+			value      	(value Text ""))))
+	    (object Attribute
+		tool       	"MSVC"
+		name       	"default__Role"
+		value      	(list Attribute_Set
+		    (object Attribute
+			tool       	"MSVC"
+			name       	"Type"
+			value      	("MSVCAttributeTypeSet" 0))
+		    (object Attribute
+			tool       	"MSVC"
+			name       	"MSVCAttributeTypeSet"
+			value      	(list Attribute_Set
+			    (object Attribute
+				tool       	"MSVC"
+				name       	"Normal"
+				value      	0)
+			    (object Attribute
+				tool       	"MSVC"
+				name       	"Member_Property"
+				value      	1)
+			    (object Attribute
+				tool       	"MSVC"
+				name       	"Get_Set_Property"
+				value      	2)
+			    (object Attribute
+				tool       	"MSVC"
+				name       	"Dialog_Data"
+				value      	3)
+			    (object Attribute
+				tool       	"MSVC"
+				name       	"Field_Data"
+				value      	4)
+			    (object Attribute
+				tool       	"MSVC"
+				name       	"Stock_Property"
+				value      	5)))
+		    (object Attribute
+			tool       	"MSVC"
+			name       	"AFX_DISPATCH_MAP_Entries"
+			value      	(value Text ""))
+		    (object Attribute
+			tool       	"MSVC"
+			name       	"DISPATCH_MAP_Entries"
+			value      	(value Text ""))
+		    (object Attribute
+			tool       	"MSVC"
+			name       	"DeclSpec"
+			value      	"")
+		    (object Attribute
+			tool       	"MSVC"
+			name       	"PointerBase"
+			value      	"")
+		    (object Attribute
+			tool       	"MSVC"
+			name       	"CallType"
+			value      	"")
+		    (object Attribute
+			tool       	"MSVC"
+			name       	"StockPropertyImplementation"
+			value      	"")))
+	    (object Attribute
+		tool       	"MSVC"
+		name       	"default__Has"
+		value      	(list Attribute_Set
+		    (object Attribute
+			tool       	"MSVC"
+			name       	"Type"
+			value      	("MSVCAttributeTypeSet" 0))
+		    (object Attribute
+			tool       	"MSVC"
+			name       	"MSVCAttributeTypeSet"
+			value      	(list Attribute_Set
+			    (object Attribute
+				tool       	"MSVC"
+				name       	"Normal"
+				value      	0)
+			    (object Attribute
+				tool       	"MSVC"
+				name       	"Member_Property"
+				value      	1)
+			    (object Attribute
+				tool       	"MSVC"
+				name       	"Get_Set_Property"
+				value      	2)
+			    (object Attribute
+				tool       	"MSVC"
+				name       	"Dialog_Data"
+				value      	3)
+			    (object Attribute
+				tool       	"MSVC"
+				name       	"Field_Data"
+				value      	4)
+			    (object Attribute
+				tool       	"MSVC"
+				name       	"Stock_Property"
+				value      	5)))
+		    (object Attribute
+			tool       	"MSVC"
+			name       	"AFX_DISPATCH_MAP_Entries"
+			value      	(value Text ""))
+		    (object Attribute
+			tool       	"MSVC"
+			name       	"DISPATCH_MAP_Entries"
+			value      	(value Text ""))
+		    (object Attribute
+			tool       	"MSVC"
+			name       	"DeclSpec"
+			value      	"")
+		    (object Attribute
+			tool       	"MSVC"
+			name       	"PointerBase"
+			value      	"")
+		    (object Attribute
+			tool       	"MSVC"
+			name       	"CallType"
+			value      	"")
+		    (object Attribute
+			tool       	"MSVC"
+			name       	"StockPropertyImplementation"
+			value      	"")))
+	    (object Attribute
+		tool       	"MSVC"
+		name       	"default__Attribute"
+		value      	(list Attribute_Set
+		    (object Attribute
+			tool       	"MSVC"
+			name       	"Type"
+			value      	("MSVCAttributeTypeSet" 0))
+		    (object Attribute
+			tool       	"MSVC"
+			name       	"MSVCAttributeTypeSet"
+			value      	(list Attribute_Set
+			    (object Attribute
+				tool       	"MSVC"
+				name       	"Normal"
+				value      	0)
+			    (object Attribute
+				tool       	"MSVC"
+				name       	"Member_Property"
+				value      	1)
+			    (object Attribute
+				tool       	"MSVC"
+				name       	"Get_Set_Property"
+				value      	2)
+			    (object Attribute
+				tool       	"MSVC"
+				name       	"Dialog_Data"
+				value      	3)
+			    (object Attribute
+				tool       	"MSVC"
+				name       	"Field_Data"
+				value      	4)
+			    (object Attribute
+				tool       	"MSVC"
+				name       	"Stock_Property"
+				value      	5)))
+		    (object Attribute
+			tool       	"MSVC"
+			name       	"AFX_DISPATCH_MAP_Entries"
+			value      	(value Text ""))
+		    (object Attribute
+			tool       	"MSVC"
+			name       	"DISPATCH_MAP_Entries"
+			value      	(value Text ""))
+		    (object Attribute
+			tool       	"MSVC"
+			name       	"DeclSpec"
+			value      	"")
+		    (object Attribute
+			tool       	"MSVC"
+			name       	"PointerBase"
+			value      	"")
+		    (object Attribute
+			tool       	"MSVC"
+			name       	"CallType"
+			value      	"")
+		    (object Attribute
+			tool       	"MSVC"
+			name       	"StockPropertyImplementation"
+			value      	"")))
+	    (object Attribute
+		tool       	"MSVC"
+		name       	"default__Module-Spec"
+		value      	(list Attribute_Set
+		    (object Attribute
+			tool       	"MSVC"
+			name       	"GenerateIncludesGroup"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"MSVC"
+			name       	"AFX_INCLUDES_Entries"
+			value      	(value Text ""))
+		    (object Attribute
+			tool       	"MSVC"
+			name       	"GenerateInsertLocation"
+			value      	FALSE)))
+	    (object Attribute
+		tool       	"MSVC"
+		name       	"default__Module-Body"
+		value      	(list Attribute_Set
+		    (object Attribute
+			tool       	"MSVC"
+			name       	"GenerateIncludesGroup"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"MSVC"
+			name       	"AFX_INCLUDES_Entries"
+			value      	(value Text ""))
+		    (object Attribute
+			tool       	"MSVC"
+			name       	"GenerateInsertLocation"
+			value      	FALSE)))
+	    (object Attribute
+		tool       	"cg"
+		name       	"HiddenTool"
+		value      	FALSE)
+	    (object Attribute
+		tool       	"Rose Model Integrator"
+		name       	"HiddenTool"
+		value      	FALSE)
+	    (object Attribute
+		tool       	"Rose Web Publisher"
+		name       	"HiddenTool"
+		value      	FALSE)
+	    (object Attribute
+		tool       	"XML_DTD"
+		name       	"propertyId"
+		value      	"809135966")
+	    (object Attribute
+		tool       	"XML_DTD"
+		name       	"default__Project"
+		value      	(list Attribute_Set
+		    (object Attribute
+			tool       	"XML_DTD"
+			name       	"CreateMissingDirectories"
+			value      	TRUE)
+		    (object Attribute
+			tool       	"XML_DTD"
+			name       	"Editor"
+			value      	("EditorType" 100))
+		    (object Attribute
+			tool       	"XML_DTD"
+			name       	"StopOnError"
+			value      	TRUE)
+		    (object Attribute
+			tool       	"XML_DTD"
+			name       	"EditorType"
+			value      	(list Attribute_Set
+			    (object Attribute
+				tool       	"XML_DTD"
+				name       	"BuiltIn"
+				value      	100)
+			    (object Attribute
+				tool       	"XML_DTD"
+				name       	"WindowsShell"
+				value      	101)))))
+	    (object Attribute
+		tool       	"XML_DTD"
+		name       	"default__Class"
+		value      	(list Attribute_Set
+		    (object Attribute
+			tool       	"XML_DTD"
+			name       	"Entity_SystemID"
+			value      	"")
+		    (object Attribute
+			tool       	"XML_DTD"
+			name       	"Entity_PublicID"
+			value      	"")
+		    (object Attribute
+			tool       	"XML_DTD"
+			name       	"NotationValue"
+			value      	"")
+		    (object Attribute
+			tool       	"XML_DTD"
+			name       	"InternalValue"
+			value      	"")
+		    (object Attribute
+			tool       	"XML_DTD"
+			name       	"ParameterEntity"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"XML_DTD"
+			name       	"ExternalEntity"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"XML_DTD"
+			name       	"Notation_SystemID"
+			value      	"")
+		    (object Attribute
+			tool       	"XML_DTD"
+			name       	"Notation_PublicID"
+			value      	"")))
+	    (object Attribute
+		tool       	"XML_DTD"
+		name       	"default__Attribute"
+		value      	(list Attribute_Set
+		    (object Attribute
+			tool       	"XML_DTD"
+			name       	"DefaultDeclType"
+			value      	"")))
+	    (object Attribute
+		tool       	"XML_DTD"
+		name       	"default__Module-Spec"
+		value      	(list Attribute_Set
+		    (object Attribute
+			tool       	"XML_DTD"
+			name       	"Assign All"
+			value      	FALSE)
+		    (object Attribute
+			tool       	"XML_DTD"
+			name       	"ComponentPath"
+			value      	"")))
+	    (object Attribute
+		tool       	"XML_DTD"
+		name       	"HiddenTool"
+		value      	FALSE))
+	quid       	"3C113F9A028E"))
diff --git a/jsf-ri/docs/models/faces.zuml b/jsf-ri/docs/models/faces.zuml
new file mode 100644
index 0000000..c3de565
Binary files /dev/null and b/jsf-ri/docs/models/faces.zuml differ
diff --git a/jsf-ri/docs/ri-issues-detail.xsl b/jsf-ri/docs/ri-issues-detail.xsl
new file mode 100644
index 0000000..b8ff5cf
--- /dev/null
+++ b/jsf-ri/docs/ri-issues-detail.xsl
@@ -0,0 +1,115 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2005-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!-- Content Stylesheet for Outstanding Issues Detail List -->
+
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+                version="1.0">
+
+  <xsl:output method="html"/>
+
+  <xsl:template match="/">
+    <html>
+      <head>
+        <title>JavaServer Faces 1.0 Reference Implementation - Outstanding Issues Detail</title>
+      </head>
+      <body bgcolor="#FFFFFF">
+
+<p><a href="ri-issues-summary.html">ri-issues-summary</a></p>
+
+        <xsl:apply-templates/>
+      </body>
+    </html>
+  </xsl:template>
+
+  <xsl:template match="issue">
+
+    <table border="1" width="100%" cellpadding="5">
+      <tr>
+        <th width="5%">Issue:</th>
+        <td width="5%"><xsl:value-of select="id"/></td>
+        <th width="5%">Summary:</th>
+        <td><xsl:value-of select="summary"/></td>
+        <th width="5%">Priority:</th>
+        <td><xsl:value-of select="priority"/></td>
+
+      </tr>
+      <tr><th colspan="6">
+        Description
+      </th></tr>
+      <tr><td colspan="6">
+        <xsl:apply-templates select="description"/>
+      </td></tr>
+      <tr><th colspan="6">
+        Resolution
+      </th></tr>
+      <tr><td colspan="6">
+        <xsl:apply-templates select="resolution"/>
+      </td></tr>
+      <tr>
+        <th width="5%">Status:</th>
+        <td width="5%"><xsl:value-of select="status"/></td>
+        <th width="5%">Date:</th>
+        <td width="75%"><xsl:value-of select="status-date"/></td>
+        <th width="5%">Source:</th>
+        <td width="5%"><xsl:value-of select="originator"/></td>
+      </tr>
+    </table>
+    <br/><br/><br/>
+  </xsl:template>
+
+  <xsl:template match="description">
+    <xsl:apply-templates/>
+  </xsl:template>
+
+  <xsl:template match="resolution">
+    <xsl:apply-templates/>
+  </xsl:template>
+
+  <xsl:template match="*|@*">
+    <xsl:copy>
+      <xsl:apply-templates select="@*|*|text()"/>
+    </xsl:copy>
+  </xsl:template>
+
+</xsl:stylesheet>
diff --git a/jsf-ri/docs/samples.html b/jsf-ri/docs/samples.html
new file mode 100644
index 0000000..1362605
--- /dev/null
+++ b/jsf-ri/docs/samples.html
@@ -0,0 +1,123 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+  <title>Sample Apps Readme</title>
+  <link href="style/default.css" type="text/css" rel="stylesheet">
+</head>
+<body>
+<h1>JavaServer<sup><font size="-2">TM</font></sup> Faces<br>
+Sample Applications</h1>
+<center> <b>Specification Version:</b> 1.2 Public Final Draft (PFD)
+Release<br>
+<b>Reference Implementation (RI) Version:</b> 1.2<br>
+</center>
+<p> This release of JavaServer Faces technology includes the following
+examples.  To build the examples see the <a
+ href="https://javaserverfaces.dev.java.net/faq.html#Code_build">building
+instructions</a> on java.net.  To deploy the examples using <a
+ href="https://glassfish.dev.java.net/">glassfish</a>, drop the
+example's WAR file into the <span style="font-family: monospace;"><glassfish_home>/domains/domain1/autodeploy</span>
+directory.  The descriptions of each example on this page include
+the URL to run the example.  The <span
+ style="font-family: monospace;"><hostname></span> part of the
+URL is the host where the server is running and <span
+ style="font-family: monospace;"><port></span> is the port for
+requests.<br>
+<ui></ui></p>
+<blockquote>
+  <dl>
+    <dt><b>cardemo</b></dt>
+    <dd>An online car store, localized in American English, French,
+German and Latin American Spanish. This application is a
+proof-of-concept application, which demonstrates that JavaServer Faces
+technology can be used to build industrial-strength Web applications.
+It is not intended to be representative of best practices for Web
+application design. To run the sample, visit <span
+ style="font-family: monospace;">http://<hostname>:<port>/</span><hostname><port><span
+ style="font-family: monospace;">jsf-cardemo.</span><br>
+      </port></hostname></dd>
+  </dl>
+</blockquote>
+<blockquote> <b>components</b><br>
+  <div style="margin-left: 40px;"> A set of custom components. This
+application shows how to
+build various custom components with JavaServer Faces technology. To
+run the sample, visit <code>http://<hostname>:<port>/</code><hostname><port><code>jsf-components.</code></port></hostname><br>
+  <hostname><port> </port></hostname></div>
+</blockquote>
+<blockquote> </blockquote>
+<blockquote>
+  <dl>
+    <dt><b>guessNumber</b></dt>
+    <dd> Duke is thinking of a number. Can you guess it? This simple
+application shows a small set of standard components, page navigation,
+and validation. To run the sample, visit <code>http://<hostname>:<port>/</code><hostname><port><code>jsf-guessNumber.</code><br>
+      </port></hostname></dd>
+  </dl>
+</blockquote>
+<blockquote>
+  <dl>
+    <dt><b>renderkits</b></dt>
+    <dd>Demonstrates how to create and use a
+custom render kit and shows how easy it is to utilize multiple render
+kits in one application. <br>
+This example must be run with the Mozilla <a
+ href="http://www.mozilla.org/projects/deerpark/releases/alpha2.html">Deer
+Park Alpha 2</a> browser because this browser supports SVG.  Once
+you have launched this browser, run
+the sample by visiting <code>http://<hostname>:<port>/jsf-renderkits</code><hostname><port><code>.<br>
+      <br>
+      </code></port></hostname></dd>
+    <dt><b>webtier sample</b></dt>
+    <dd>A simple application demonstrating
+JavaServer Faces technology inter-operating JSTL, JSP. To run the
+sample, visit <code>http://</code><hostname><port><code>webtier-sample.</code></port></hostname></dd>
+    <br>
+    <dd><hostname><port><code></code> </port></hostname><br>
+    </dd>
+  </dl>
+</blockquote>
+</body>
+</html>
diff --git a/jsf-ri/docs/style/default.css b/jsf-ri/docs/style/default.css
new file mode 100644
index 0000000..dd63d11
--- /dev/null
+++ b/jsf-ri/docs/style/default.css
@@ -0,0 +1,83 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+/*
+ * Default CSS stylesheet
+ */
+
+body {
+    background-color: white;
+}
+
+h1, h2 {
+    text-align: center;
+    font-family: sans-serif;
+    color: #000099;
+}
+
+h3, h4, h5, h6 {
+    text-align: left;
+    font-family: sans-serif;
+    color: #000099;
+}
+
+code {
+    font-family: Courier, monospace;
+}
+
+diff {
+    font-family: Courier, monospace;
+    color: red;
+}
+
+table.property {
+	margin-left: 2em;
+}
+
+table.property tr td {
+	background-color: rgb(240,240,255);
+	padding: 0.2em;
+}
+/*
+hr {
+    align: center;
+    width: 70%;
+}
+*/
diff --git a/jsf-ri/maven.xml b/jsf-ri/maven.xml
index fa7569b..7053d0f 100644
--- a/jsf-ri/maven.xml
+++ b/jsf-ri/maven.xml
@@ -1,41 +1,45 @@
 <?xml version="1.0"?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
--->
 
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
 
 <!--
  The contents of this file are subject to the terms 
@@ -86,7 +90,7 @@
     <!-- <attainGoal name="jsf-impl:build" /> -->
     <mkdir dir="target/classes" />
     <unjar dest="target/classes" overwrite="true"
-           src="build/lib/jsf-impl.jar" />
+           src="build/lib/javax.faces.jar" />
   </goal>
 
 </project>
diff --git a/jsf-ri/mojarra-jsf-impl.bnd b/jsf-ri/mojarra-jsf-impl.bnd
index 4a26296..6273aea 100644
--- a/jsf-ri/mojarra-jsf-impl.bnd
+++ b/jsf-ri/mojarra-jsf-impl.bnd
@@ -1,60 +1,73 @@
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-#
-# Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
-#
-# The contents of this file are subject to the terms of either the GNU
-# General Public License Version 2 only ("GPL") or the Common Development
-# and Distribution License("CDDL") (collectively, the "License").  You
-# may not use this file except in compliance with the License. You can obtain
-# a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
-# or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
-# language governing permissions and limitations under the License.
-#
-# When distributing the software, include this License Header Notice in each
-# file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
-# Sun designates this particular file as subject to the "Classpath" exception
-# as provided by Sun in the GPL Version 2 section of the License file that
-# accompanied this code.  If applicable, add the following below the License
-# Header, with the fields enclosed by brackets [] replaced by your own
-# identifying information: "Portions Copyrighted [year]
-# [name of copyright owner]"
-#
-# Contributor(s):
-#
-# If you wish your version of this file to be governed by only the CDDL or
-# only the GPL Version 2, indicate your decision by adding "[Contributor]
-# elects to include this software in this distribution under the [CDDL or GPL
-# Version 2] license."  If you don't indicate a single choice of license, a
-# recipient has the option to distribute your version of this file under
-# either the CDDL, the GPL Version 2 or to extend the choice of license to
-# its licensees as provided above.  However, if you add GPL Version 2 code
-# and therefore, elected the GPL Version 2 license, then the option applies
-# only if the new code is made subject to such option by the copyright
-# holder.
-#
-
-# Items to merge into the generated manifest
-Specification-Title: JavaServer Faces
-Specification-Version: @spec.version@
-Implementation-Title: @impl.name@
-Implementation-Version: @impl.version@
-Implementation-Vendor: Sun Microsystems, Inc.
-Implementation-Vendor-Id: com.sun
-Extension-Name: @extension.name@
-
-# BND/OSGI Properties
-Export-Package: com.sun.faces.*;version=2.0
-Import-Package: javax.faces.*,javax.servlet.annotation.*;resolution:=optional,javax.servlet.*,javax.el.*,javax.annotation.*,javax.crypto.*,\
-  javax.validation.*;resolution:=optional, \
-  javax.xml.*,org.w3c.dom.*, \
-  com.sun.enterprise.*;resolution:=optional, \
-  groovy.*;resolution:=optional,\
-  org.mortbay.jetty.annotations;resolution:=optional, \
-  org.mortbay.jetty.plus.annotation;resolution:=optional, \
-  org.apache.*;resolution:=optional, \
-  org.xml.sax.*,javax.naming.*
-Include-Resource: META-INF=build/classes/META-INF,build/classes
-Bundle-Version: @osgi.version@
-Bundle-Name: Mojarra JSF Implementation @impl.version@
-Bundle-Description: Mojarra JSF Implementation (javax.faces/@spec.version@) @impl.version@
-Bundle-SymbolicName: javax.faces/com.sun.faces.mojarra-jsf-impl
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
+# Items to merge into the generated manifest
+Specification-Title: JavaServer Faces
+Specification-Version: @spec.version@
+Implementation-Title: @impl.name@
+Implementation-Version: @impl.version@
+Implementation-Vendor: Oracle America, Inc.
+Implementation-Vendor-Id: com.sun
+Extension-Name: @extension.name@
+
+# BND/OSGI Properties
+Export-Package: javax.faces.*;version=@spec.version@,\
+  com.sun.faces.*;version=@spec.version@
+Import-Package: javax.faces.*,\
+  com.sun.faces.*,\
+  javax.servlet.annotation.*;resolution:=optional,\
+  javax.servlet.*,javax.el.*,javax.inject.*,javax.enterprise.inject.*,javax.enterprise.util.*,javax.enterprise.context.*,javax.annotation.*,javax.crypto.*,\
+  javax.validation.*;resolution:=optional, \
+  javax.enterprise.event;resolution:=optional, \
+  javax.ejb.*;resolution:=optional, \
+  javax.persistence.*;resolution:=optional, \
+  javax.xml.*,org.w3c.dom.*, \
+  com.sun.enterprise.*;resolution:=optional, \
+  groovy.*;resolution:=optional,\
+  org.mortbay.jetty.annotations;resolution:=optional, \
+  org.mortbay.jetty.plus.annotation;resolution:=optional, \
+  org.apache.*;resolution:=optional, \
+  org.jboss.weld.*;resolution:=optional, \
+  org.xml.sax.*,javax.naming.*
+Include-Resource: META-INF=build/classes/META-INF,build/classes
+Bundle-Version: @osgi.version@
+Bundle-Name: Mojarra JSF Implementation @full.impl.version@
+Bundle-Description: Mojarra JSF Implementation (javax.faces/@spec.version@) @full.impl.version@
+Bundle-SymbolicName: org.glassfish.javax.faces
diff --git a/jsf-ri/project.properties b/jsf-ri/project.properties
index e68c07a..2b64ed4 100644
--- a/jsf-ri/project.properties
+++ b/jsf-ri/project.properties
@@ -1,2 +1,42 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
 #maven.javanet.deploy.dryrun=true
 maven.javanet.project=javaserverfaces-sources
diff --git a/jsf-ri/project.xml b/jsf-ri/project.xml
index c1eb344..e5088f7 100644
--- a/jsf-ri/project.xml
+++ b/jsf-ri/project.xml
@@ -1,41 +1,45 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
--->
 
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
 
 <!--
 /*
@@ -61,7 +65,7 @@
 
 -->
 
-<project xmlns="http://maven.apache.org/POM/3.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/3.0.0 http://maven.apache.org/maven-v3_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/3.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    xsi:schemaLocation="http://maven.apache.org/POM/3.0.0 http://maven.apache.org/maven-v3_0_0.xsd">
     <extend>../common/mvn/project.xml</extend>
     <!-- a unique name for this project -->
     <artifactId>jsf-impl</artifactId>
diff --git a/jsf-ri/resources/empty-faces-config.xml b/jsf-ri/resources/empty-faces-config.xml
index 4f54515..402ad3a 100644
--- a/jsf-ri/resources/empty-faces-config.xml
+++ b/jsf-ri/resources/empty-faces-config.xml
@@ -1,43 +1,48 @@
 <?xml version='1.0' encoding='UTF-8'?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
 
-<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
+<faces-config xmlns="http://xmlns.jcp.org/xml/ns/javaee"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
-    version="2.0">
+    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd"
+    version="2.2">
 </faces-config>
diff --git a/jsf-ri/resources/jsf-ri-config.xml b/jsf-ri/resources/jsf-ri-config.xml
index 510f581..621e41a 100644
--- a/jsf-ri/resources/jsf-ri-config.xml
+++ b/jsf-ri/resources/jsf-ri-config.xml
@@ -1,48 +1,54 @@
 <?xml version='1.0' encoding='UTF-8'?>
 
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
 
 <!-- =========== RI CONFIGURATION FILE ===================================== -->
 
-<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
+<faces-config xmlns="http://xmlns.jcp.org/xml/ns/javaee"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
+    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd"
     metadata-complete="true"
-    version="2.0">
+    version="2.2">
 
 
   <!-- Configure Object Factories -->
@@ -60,6 +66,12 @@
     <faces-context-factory>
       com.sun.faces.context.FacesContextFactoryImpl
     </faces-context-factory>
+    <client-window-factory>
+      com.sun.faces.lifecycle.ClientWindowFactoryImpl
+    </client-window-factory>
+    <flash-factory>
+      com.sun.faces.context.flash.FlashFactoryImpl
+    </flash-factory>
     <partial-view-context-factory>
       com.sun.faces.context.PartialViewContextFactoryImpl
     </partial-view-context-factory>
@@ -78,6 +90,12 @@
     <external-context-factory>
       com.sun.faces.context.ExternalContextFactoryImpl
     </external-context-factory>
+    <facelet-cache-factory>
+      com.sun.faces.facelets.impl.FaceletCacheFactoryImpl
+    </facelet-cache-factory>
+    <flow-handler-factory>
+      com.sun.faces.flow.FlowHandlerFactoryImpl
+    </flow-handler-factory>
   </factory>
 
 
@@ -99,6 +117,16 @@
     <resource-handler>
       com.sun.faces.application.resource.ResourceHandlerImpl
     </resource-handler>
+    <system-event-listener>
+        <system-event-listener-class>com.sun.faces.application.view.ViewScopeEventListener</system-event-listener-class>
+        <system-event-class>javax.faces.event.PostConstructViewMapEvent</system-event-class>
+        <source-class>javax.faces.component.UIViewRoot</source-class>
+    </system-event-listener>
+    <system-event-listener>
+        <system-event-listener-class>com.sun.faces.application.view.ViewScopeEventListener</system-event-listener-class>
+        <system-event-class>javax.faces.event.PreDestroyViewMapEvent</system-event-class>
+        <source-class>javax.faces.component.UIViewRoot</source-class>
+    </system-event-listener>
   </application>
 
 
diff --git a/jsf-ri/resources/mojarra.js b/jsf-ri/resources/mojarra.js
index eec135e..1f97081 100644
--- a/jsf-ri/resources/mojarra.js
+++ b/jsf-ri/resources/mojarra.js
@@ -188,4 +188,4 @@ mojarra.ab = function ab(s, e, n, ex, re, op) {
     }
 
     jsf.ajax.request(s, e, op);
-}
\ No newline at end of file
+};
\ No newline at end of file
diff --git a/jsf-ri/src/main/java/com/sun/faces/RIConstants.java b/jsf-ri/src/main/java/com/sun/faces/RIConstants.java
index 4f4ac7d..a234b0c 100644
--- a/jsf-ri/src/main/java/com/sun/faces/RIConstants.java
+++ b/jsf-ri/src/main/java/com/sun/faces/RIConstants.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -36,6 +40,9 @@
 
 package com.sun.faces;
 
+import com.sun.faces.facelets.tag.jsf.core.CoreLibrary;
+import com.sun.faces.facelets.tag.jsf.html.HtmlLibrary;
+import com.sun.faces.facelets.tag.ui.UILibrary;
 import javax.faces.render.RenderKitFactory;
 
 /**
@@ -71,10 +78,20 @@ public class RIConstants {
     public static final Object NO_VALUE = "";
       
     public static final String CORE_NAMESPACE = 
-        "http://java.sun.com/jsf/core";
+            CoreLibrary.Namespace;
     public static final String HTML_NAMESPACE = 
-        "http://java.sun.com/jsf/html";
+            HtmlLibrary.Namespace;
     
+    public static final String CORE_NAMESPACE_NEW = 
+            CoreLibrary.XMLNSNamespace;
+    public static final String HTML_NAMESPACE_NEW = 
+            HtmlLibrary.XMLNSNamespace;
+
+    public static final String FACELET_NAMESPACE = 
+        UILibrary.Namespace;
+    public static final String FACELET_NAMESPACE_NEW = 
+        UILibrary.XMLNSNamespace;
+
     public static final Class[] EMPTY_CLASS_ARGS = new Class[0];
     public static final Object[] EMPTY_METH_ARGS = new Object[0];
 
@@ -86,7 +103,8 @@ public class RIConstants {
     public static final String APPLICATION_XML_CONTENT_TYPE = "application/xml";
     public static final String TEXT_XML_CONTENT_TYPE = "text/xml";
     public static final String ALL_MEDIA = "*/*";
-    public static final String CHAR_ENCODING = "ISO-8859-1";
+    public static final String CHAR_ENCODING = "UTF-8";
+    public static final String FACELETS_ENCODING_KEY = "facelets.Encoding";
     public static final String DEFAULT_LIFECYCLE = 
           FACES_PREFIX + "DefaultLifecycle";
     public static final String DEFAULT_STATEMANAGER =
@@ -100,6 +118,43 @@ public class RIConstants {
 
     public static final String VIEWID_KEY_NAME = FACES_PREFIX + "viewId";
 
+    /**
+     * Marker used when saving the list of component adds and removes.
+     */
+    public static final String DYNAMIC_ACTIONS =
+            FACES_PREFIX + "DynamicActions";
+    
+    /**
+     * Marker attached to a component that has dynamic children.
+     */
+    public static final String DYNAMIC_CHILD_COUNT =
+            FACES_PREFIX + "DynamicChildCount";
+    
+    /**
+     * Marker attached to a component that was added dynamically.
+     */
+    public static final String DYNAMIC_COMPONENT =
+            FACES_PREFIX + "DynamicComponent";
+    
+    /**
+     * Present in the attrs of UIViewRoot iff the tree has one or more
+     * dynamic modifications
+     */
+    public static final String TREE_HAS_DYNAMIC_COMPONENTS =
+            FACES_PREFIX + "TreeHasDynamicComponents";
+    
+    public static final String FLOW_DEFINITION_ID_SUFFIX = "-flow.xml";
+    
+    public static final int FLOW_DEFINITION_ID_SUFFIX_LENGTH = FLOW_DEFINITION_ID_SUFFIX.length();
+    
+    public static final String FLOW_IN_JAR_PREFIX = "META-INF/flows";
+    
+    public static final int FLOW_IN_JAR_PREFIX_LENGTH = FLOW_IN_JAR_PREFIX.length();
+    
+    public static final String FLOW_DISCOVERY_CDI_HELPER_BEAN_NAME = "csfFLOWDISCOVERYCDIHELPER";
+    
+    public static final String JAVAEE_XMLNS = "http://xmlns.jcp.org/xml/ns/javaee";
+
     private RIConstants() {
 
         throw new IllegalStateException();
diff --git a/jsf-ri/src/main/java/com/sun/faces/action/ActionLifecycle.java b/jsf-ri/src/main/java/com/sun/faces/action/ActionLifecycle.java
new file mode 100644
index 0000000..0d35136
--- /dev/null
+++ b/jsf-ri/src/main/java/com/sun/faces/action/ActionLifecycle.java
@@ -0,0 +1,93 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.action;
+
+import com.sun.faces.lifecycle.Phase;
+import com.sun.faces.lifecycle.RenderResponsePhase;
+import java.util.Arrays;
+import javax.faces.FacesException;
+import javax.faces.context.FacesContext;
+import javax.faces.event.PhaseListener;
+import javax.faces.lifecycle.Lifecycle;
+
+public class ActionLifecycle extends Lifecycle {
+    
+    public static final String ACTION_LIFECYCLE = "com.sun.faces.action.ActionLifecycle";
+    
+    private final RenderResponsePhase renderResponsePhase;
+    private Phase actionPhase;
+    
+    public ActionLifecycle() {
+        renderResponsePhase = new RenderResponsePhase();
+        try {
+            Class phaseClass = Class.forName("com.sun.faces.action.ActionPhase");
+            actionPhase = (Phase) phaseClass.newInstance();
+        } catch(Throwable throwable) {  
+            actionPhase = null;
+        }
+    }
+
+    @Override
+    public void addPhaseListener(PhaseListener listener) {
+    }
+
+    @Override
+    public void execute(FacesContext context) throws FacesException {
+        if (actionPhase != null) {
+            actionPhase.doPhase(context, this, Arrays.asList(getPhaseListeners()).listIterator());
+        } else {
+            throw new FacesException("Unable to handle action");
+        }
+    }
+
+    @Override
+    public PhaseListener[] getPhaseListeners() {
+        return new PhaseListener[0];
+    }
+
+    @Override
+    public void removePhaseListener(PhaseListener listener) {
+    }
+
+    @Override
+    public void render(FacesContext context) throws FacesException {
+        renderResponsePhase.doPhase(context, this, Arrays.asList(getPhaseListeners()).listIterator());
+    }
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/action/ActionLifecycleFactory.java b/jsf-ri/src/main/java/com/sun/faces/action/ActionLifecycleFactory.java
new file mode 100644
index 0000000..a29e585
--- /dev/null
+++ b/jsf-ri/src/main/java/com/sun/faces/action/ActionLifecycleFactory.java
@@ -0,0 +1,104 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.action;
+
+import java.util.Iterator;
+import javax.faces.lifecycle.Lifecycle;
+import javax.faces.lifecycle.LifecycleFactory;
+
+public class ActionLifecycleFactory extends LifecycleFactory {
+
+    /**
+     * Stores the wrapped instance.
+     */
+    private final LifecycleFactory wrapped;
+    
+    /**
+     * Constructor.
+     * 
+     * @param wrapped the wrapped lifecycle factory.
+     */
+    public ActionLifecycleFactory(LifecycleFactory wrapped) {
+        this.wrapped = wrapped;
+        wrapped.addLifecycle(ActionLifecycle.ACTION_LIFECYCLE, new ActionLifecycle());
+    }
+    
+    /**
+     * Get the wrapped lifecycle factory.
+     * 
+     * @return the lifecycle factory. 
+     */
+    @Override
+    public LifecycleFactory getWrapped() {
+        return wrapped;
+    }
+    
+    /**
+     * Add the lifecycle.
+     * 
+     * @param lifecycleId the lifecycle id.
+     * @param lifecycle the lifecycle to add.
+     */
+    @Override
+    public void addLifecycle(String lifecycleId, Lifecycle lifecycle) {
+        wrapped.addLifecycle(lifecycleId, lifecycle);
+    }
+
+    /**
+     * Get the lifecycle.
+     * 
+     * @param lifecycleId the lifecycle id.
+     * @return the lifecycle.
+     */
+    @Override
+    public Lifecycle getLifecycle(String lifecycleId) {
+        return wrapped.getLifecycle(lifecycleId);
+    }
+
+    /**
+     * Get the lifecycle ids.
+     * 
+     * @return the lifecycle ids. 
+     */
+    @Override
+    public Iterator<String> getLifecycleIds() {
+        return wrapped.getLifecycleIds();
+    }
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/action/ActionPhase.java b/jsf-ri/src/main/java/com/sun/faces/action/ActionPhase.java
new file mode 100644
index 0000000..bd7c957
--- /dev/null
+++ b/jsf-ri/src/main/java/com/sun/faces/action/ActionPhase.java
@@ -0,0 +1,206 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.action;
+
+import com.sun.faces.lifecycle.Phase;
+import java.util.Iterator;
+import java.util.Set;
+import javax.enterprise.inject.Any;
+import javax.enterprise.inject.Instance;
+import javax.enterprise.inject.spi.AnnotatedMethod;
+import javax.enterprise.inject.spi.AnnotatedType;
+import javax.enterprise.inject.spi.Bean;
+import javax.enterprise.inject.spi.BeanManager;
+import javax.enterprise.inject.spi.CDI;
+import javax.enterprise.util.AnnotationLiteral;
+import javax.faces.FacesException;
+import javax.faces.component.UIViewRoot;
+import javax.faces.context.FacesContext;
+import javax.faces.event.PhaseId;
+import javax.naming.InitialContext;
+import javax.naming.NamingException;
+
+public class ActionPhase extends Phase {
+
+    private BeanManager beanManager;
+
+    public BeanManager getBeanManager() {
+
+        if (beanManager == null) {
+            Object result = null;
+
+            try {
+                InitialContext initialContext = new InitialContext();
+                result = initialContext.lookup("java:comp/BeanManager");
+            } catch (NamingException exception) {
+                try {
+                    InitialContext initialContext = new InitialContext();
+                    result = initialContext.lookup("java:comp/env/BeanManager");
+                } catch (NamingException exception2) {
+                }
+            }
+
+            if (result != null) {
+                beanManager = (BeanManager) result;
+            } else {
+                beanManager = null;
+            }
+        }
+
+        return beanManager;
+    }
+
+    @Override
+    public void execute(FacesContext context) throws FacesException {
+        /*
+         * 1. Find the bean + method that matches the correct @RequestMapping. 
+         */
+        Set<Bean<?>> beans = getBeanManager().getBeans(Object.class, new AnnotationLiteral<Any>() {
+        });
+        Iterator<Bean<?>> beanIterator = beans.iterator();
+        RequestMappingInfo current = null;
+
+        while (beanIterator.hasNext()) {
+            Bean<?> bean = beanIterator.next();
+            RequestMappingInfo info = findMethodRequestMapping(context, bean);
+
+            if (current == null) {
+                current = info;
+            } else if (info != null && info.getLength() > current.getLength()) {
+                current = info;
+            }
+        }
+
+        String viewId = null;
+
+        if (current != null) {
+            /*
+             * 2. Get an instance of that bean.
+             */
+            Instance instance = CDI.current().select(
+                    current.getBean().getBeanClass(), new AnnotationLiteral<Any>() {
+                    });
+
+            try {
+                /*
+                 * 3. Call the required method and capture its result.
+                 *
+                 * Currently assuming String invoke() signature, but that obviously
+                 * needs to be expanded.
+                 */
+                viewId = (String) current.getMethod().invoke(instance.get(), new Object[0]);
+            } catch (Throwable throwable) {
+                throw new FacesException(throwable);
+            }
+            if (context.getViewRoot() == null) {
+                UIViewRoot viewRoot = new UIViewRoot();
+                viewRoot.setRenderKitId("HTML_BASIC");
+                /*
+                 * 4. Set the resulting view id on the viewroot.
+                 */
+                viewRoot.setViewId(viewId);
+                context.setViewRoot(viewRoot);
+            }
+        }
+    }
+
+    @Override
+    public PhaseId getId() {
+        return PhaseId.ANY_PHASE;
+    }
+    
+    private RequestMappingInfo findMethodRequestMapping(FacesContext context, Bean<?> bean) {
+        RequestMappingInfo result = null;
+        Class clazz = bean.getBeanClass();
+        AnnotatedType annotatedType = beanManager.createAnnotatedType(clazz);
+        Set<AnnotatedMethod> annotatedMethodSet = annotatedType.getMethods();
+        for (AnnotatedMethod method : annotatedMethodSet) {
+            if (method.isAnnotationPresent(RequestMapping.class)) {
+                RequestMapping requestMapping = method.getAnnotation(RequestMapping.class);
+                String[] mappings = requestMapping.value();
+                String mapping = null;
+                for (String current : mappings) {
+                    String pathInfo = context.getExternalContext().getRequestPathInfo();
+                    if (pathInfo.equals(current)) {
+                        result = new RequestMappingInfo();
+                        result.setBean(bean);
+                        result.setMethod(method.getJavaMember());
+                        result.setRequestMapping(mapping);
+                        result.setMappingType(RequestMappingInfo.MappingType.EXACT);
+                        break;
+                    } else if (current.endsWith("*")) {
+                        current = current.substring(0, current.length() - 1);
+                        if (pathInfo.startsWith(current)) {
+                            if (result == null) {
+                                result = new RequestMappingInfo();
+                                result.setBean(bean);
+                                result.setMethod(method.getJavaMember());
+                                result.setRequestMapping(current);
+                                result.setMappingType(RequestMappingInfo.MappingType.PREFIX);
+                            } else if (current.length() > result.getLength()) {
+                                result.setBean(bean);
+                                result.setMethod(method.getJavaMember());
+                                result.setRequestMapping(current);
+                                result.setMappingType(RequestMappingInfo.MappingType.PREFIX);
+                            }
+                        }
+                    } else if (current.startsWith("*")) {
+                        current = current.substring(1);
+                        if (pathInfo.endsWith(current)) {
+                            result = new RequestMappingInfo();
+                            result.setBean(bean);
+                            result.setMethod(method.getJavaMember());
+                            result.setRequestMapping(current);
+                            result.setMappingType(RequestMappingInfo.MappingType.EXTENSION);
+                            break;
+                        }
+                    }
+                }
+            }
+            if (result != null &&
+                    (result.getMappingType().equals(RequestMappingInfo.MappingType.EXACT) ||
+                    (result.getMappingType().equals(RequestMappingInfo.MappingType.EXTENSION)))) {
+                break;
+            }
+        }
+        return result;
+    }
+    
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/action/RequestMapping.java b/jsf-ri/src/main/java/com/sun/faces/action/RequestMapping.java
new file mode 100644
index 0000000..d2adf66
--- /dev/null
+++ b/jsf-ri/src/main/java/com/sun/faces/action/RequestMapping.java
@@ -0,0 +1,55 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.action;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.ElementType.TYPE;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+ at Documented
+ at Target(value = {METHOD, TYPE})
+ at Retention(value = RUNTIME)
+public @interface RequestMapping {
+
+    String[] value() default {};
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/action/RequestMappingInfo.java b/jsf-ri/src/main/java/com/sun/faces/action/RequestMappingInfo.java
new file mode 100644
index 0000000..eac688b
--- /dev/null
+++ b/jsf-ri/src/main/java/com/sun/faces/action/RequestMappingInfo.java
@@ -0,0 +1,89 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.action;
+
+import java.lang.reflect.Method;
+import javax.enterprise.inject.spi.Bean;
+
+class RequestMappingInfo {
+    private MappingType mappingType;
+
+    public void setMappingType(MappingType mappingType) {
+        this.mappingType = mappingType;
+    }
+
+    public MappingType getMappingType() {
+        return mappingType;
+    }
+
+    public enum MappingType {
+        EXACT,
+        PREFIX,
+        EXTENSION
+    }
+    
+    private String requestMapping;
+    private Bean<?> bean;
+    private Method method;
+
+    public int getLength() {
+        return requestMapping.length();
+    }
+
+    public Bean<?> getBean() {
+        return bean;
+    }
+
+    public Method getMethod() {
+        return method;
+    }
+
+    public void setBean(Bean<?> bean) {
+        this.bean = bean;
+    }
+
+    public void setMethod(Method method) {
+        this.method = method;
+    }
+
+    public void setRequestMapping(String requestMapping) {
+        this.requestMapping = requestMapping;
+    }
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/application/ActionListenerImpl.java b/jsf-ri/src/main/java/com/sun/faces/application/ActionListenerImpl.java
index 78478c7..160d1d6 100644
--- a/jsf-ri/src/main/java/com/sun/faces/application/ActionListenerImpl.java
+++ b/jsf-ri/src/main/java/com/sun/faces/application/ActionListenerImpl.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -52,7 +56,6 @@ import java.util.logging.Level;
 import java.util.logging.Logger;
 import java.text.MessageFormat;
 
-import com.sun.faces.util.Util;
 import com.sun.faces.util.FacesLogger;
 
 /**
@@ -76,6 +79,7 @@ public class ActionListenerImpl implements ActionListener {
  
 
     @SuppressWarnings("deprecation")
+    @Override
     public void processAction(ActionEvent event) {
 
         if (LOGGER.isLoggable(Level.FINE)) {
@@ -100,16 +104,16 @@ public class ActionListenerImpl implements ActionListener {
                 }
                 // else, default to null, as assigned above.
             } catch (MethodNotFoundException e) {
-                if (LOGGER.isLoggable(Level.SEVERE)) {
-                    LOGGER.log(Level.SEVERE, e.getMessage(), e);
+                if (LOGGER.isLoggable(Level.FINE)) {
+                    LOGGER.log(Level.FINE, e.getMessage(), e);
                 }
                 throw new FacesException
                       (binding.getExpressionString() + ": " + e.getMessage(),
                        e);
             }
             catch (EvaluationException e) {
-                if (LOGGER.isLoggable(Level.SEVERE)) {
-                    LOGGER.log(Level.SEVERE, e.getMessage(), e);
+                if (LOGGER.isLoggable(Level.FINE)) {
+                    LOGGER.log(Level.FINE, e.getMessage(), e);
                 }
                 throw new FacesException
                       (binding.getExpressionString() + ": " + e.getMessage(),
@@ -122,11 +126,19 @@ public class ActionListenerImpl implements ActionListener {
         NavigationHandler navHandler = application.getNavigationHandler();
 
         // Invoke nav handling..
-
-        navHandler.handleNavigation(context,
-                                    (null != binding) ?
-                                    binding.getExpressionString() : null,
-                                    outcome);
+        
+        String toFlowDocumentId = (String) source.getAttributes().get(ActionListener.TO_FLOW_DOCUMENT_ID_ATTR_NAME);
+        if (null == toFlowDocumentId) {
+            navHandler.handleNavigation(context,
+                    (null != binding) ?
+                    binding.getExpressionString() : null,
+                    outcome);
+        } else {
+            navHandler.handleNavigation(context,
+                    (null != binding) ?
+                    binding.getExpressionString() : null,
+                    outcome, toFlowDocumentId);
+        }
 
         // Trigger a switch to Render Response if needed
         context.renderResponse();
diff --git a/jsf-ri/src/main/java/com/sun/faces/application/ApplicationAssociate.java b/jsf-ri/src/main/java/com/sun/faces/application/ApplicationAssociate.java
index 4ee0215..6ef9407 100644
--- a/jsf-ri/src/main/java/com/sun/faces/application/ApplicationAssociate.java
+++ b/jsf-ri/src/main/java/com/sun/faces/application/ApplicationAssociate.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -37,16 +41,17 @@
 package com.sun.faces.application;
 
 import com.sun.faces.RIConstants;
-import com.sun.faces.application.ApplicationStateInfo;
 import com.sun.faces.scripting.groovy.GroovyHelper;
 import com.sun.faces.application.resource.ResourceCache;
 import com.sun.faces.application.resource.ResourceManager;
 import com.sun.faces.application.annotation.AnnotationManager;
+import com.sun.faces.application.annotation.FacesComponentUsage;
+import com.sun.faces.config.ConfigManager;
 import com.sun.faces.config.WebConfiguration;
-import com.sun.faces.facelets.FaceletCache;
 import com.sun.faces.facelets.compiler.Compiler;
 import com.sun.faces.facelets.compiler.SAXCompiler;
-import com.sun.faces.facelets.FaceletFactory;
+import javax.faces.event.AbortProcessingException;
+import javax.faces.event.SystemEvent;
 import javax.faces.view.facelets.TagDecorator;
 import com.sun.faces.facelets.tag.composite.CompositeLibrary;
 import com.sun.faces.facelets.tag.jstl.core.JstlCoreLibrary;
@@ -58,11 +63,11 @@ import com.sun.faces.facelets.util.ReflectionUtil;
 import com.sun.faces.facelets.util.FunctionLibrary;
 import com.sun.faces.facelets.util.DevTools;
 import javax.faces.view.facelets.ResourceResolver;
+import javax.faces.view.facelets.FaceletCache;
 import com.sun.faces.facelets.impl.DefaultResourceResolver;
 import com.sun.faces.facelets.impl.DefaultFaceletFactory;
 import com.sun.faces.mgbean.BeanManager;
 import com.sun.faces.spi.InjectionProvider;
-import com.sun.faces.spi.InjectionProviderFactory;
 import com.sun.faces.util.MessageUtils;
 import com.sun.faces.util.Util;
 import com.sun.faces.util.FacesLogger;
@@ -70,7 +75,17 @@ import static com.sun.faces.config.WebConfiguration.BooleanWebContextInitParamet
 import static com.sun.faces.config.WebConfiguration.WebContextInitParameter.*;
 import static com.sun.faces.config.WebConfiguration.BooleanWebContextInitParameter.DisableFaceletJSFViewHandler;
 import static com.sun.faces.config.WebConfiguration.BooleanWebContextInitParameter.EnableLazyBeanValidation;
-
+import com.sun.faces.el.DemuxCompositeELResolver;
+import com.sun.faces.el.ELUtils;
+import com.sun.faces.el.FacesCompositeELResolver;
+import com.sun.faces.el.VariableResolverChainWrapper;
+import com.sun.faces.facelets.PrivateApiFaceletCacheAdapter;
+import com.sun.faces.facelets.tag.jsf.PassThroughAttributeLibrary;
+import com.sun.faces.facelets.tag.jsf.PassThroughElementLibrary;
+import com.sun.faces.lifecycle.ELResolverInitPhaseListener;
+import java.io.IOException;
+import java.net.URL;
+import java.util.ArrayList;
 import javax.el.CompositeELResolver;
 import javax.el.ELResolver;
 import javax.el.ExpressionFactory;
@@ -83,7 +98,6 @@ import javax.faces.application.ProjectStage;
 import javax.faces.event.PreDestroyCustomScopeEvent;
 import javax.faces.event.ScopeContext;
 import javax.servlet.ServletContext;
-
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
@@ -95,7 +109,18 @@ import java.util.LinkedHashSet;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 import java.util.concurrent.ConcurrentHashMap;
+import javax.faces.FacesException;
+import javax.faces.FactoryFinder;
+import javax.faces.application.Application;
 import javax.faces.application.NavigationCase;
+import javax.faces.application.ViewHandler;
+import javax.faces.component.FacesComponent;
+import javax.faces.event.PostConstructApplicationEvent;
+import javax.faces.event.SystemEventListener;
+import javax.faces.flow.FlowHandler;
+import javax.faces.flow.FlowHandlerFactory;
+import javax.faces.view.facelets.FaceletCacheFactory;
+import javax.faces.view.facelets.FaceletsResourceResolver;
 
 /**
  * <p>Break out the things that are associated with the Application, but
@@ -123,6 +148,14 @@ public class ApplicationAssociate {
      * card, and some may be specified as an asterisk "*".
      */
     private Map<String, Set<NavigationCase>> navigationMap = null;
+    
+    /*
+     * The FacesComponentTagLibrary uses the information in this map 
+     * to help it fabricate tag handlers for components annotated with
+     * FacesComponent.
+     * Key: namespace
+     */
+    private Map<String, List<FacesComponentUsage>> facesComponentsByNamespace = null;
 
     // Flag indicating that a response has been rendered.
     private boolean responseRendered = false;
@@ -142,6 +175,10 @@ public class ApplicationAssociate {
     @SuppressWarnings("deprecation")
     private VariableResolver legacyVRChainHead = null;
 
+    private VariableResolverChainWrapper legacyVRChainHeadWrapperForJsp = null;
+
+    private VariableResolverChainWrapper legacyVRChainHeadWrapperForFaces = null;
+
     @SuppressWarnings("deprecation")
     private PropertyResolver legacyPRChainHead = null;
     private ExpressionFactory expressionFactory = null;
@@ -151,7 +188,7 @@ public class ApplicationAssociate {
 
     @SuppressWarnings("deprecation")
     private VariableResolver legacyVariableResolver = null;
-    private CompositeELResolver facesELResolverForJsp = null;
+    private FacesCompositeELResolver facesELResolverForJsp = null;
 
     private InjectionProvider injectionProvider;
     private ResourceCache resourceCache;
@@ -165,13 +202,21 @@ public class ApplicationAssociate {
     private AnnotationManager annotationManager;
     private boolean devModeEnabled;
     private Compiler compiler;
-    private FaceletFactory faceletFactory;
+    private DefaultFaceletFactory faceletFactory;
     private ResourceManager resourceManager;
     private ApplicationStateInfo applicationStateInfo;
 
     private PropertyEditorHelper propertyEditorHelper;
 
     private NamedEventManager namedEventManager;
+    
+    private WebConfiguration webConfig;
+    
+    private FlowHandler flowHandler;
+    
+    private Map<String, String> definingDocumentIdsToTruncatedJarUrls;
+    
+    private long timeOfInstantiation;
 
     public ApplicationAssociate(ApplicationImpl appImpl) {
         app = appImpl;
@@ -181,8 +226,7 @@ public class ApplicationAssociate {
         FacesContext ctx = FacesContext.getCurrentInstance();
         if (ctx == null) {
             throw new IllegalStateException(
-                 MessageUtils.getExceptionMessageString(
-                      MessageUtils.APPLICATION_ASSOCIATE_CTOR_WRONG_CALLSTACK_ID));
+                    "ApplicationAssociate ctor not called in same callstack as ConfigureListener.contextInitialized()");
         }
         ExternalContext externalContext = ctx.getExternalContext();
         if (null != externalContext.getApplicationMap().get(ASSOCIATE_KEY)) {
@@ -190,11 +234,12 @@ public class ApplicationAssociate {
                  MessageUtils.getExceptionMessageString(
                       MessageUtils.APPLICATION_ASSOCIATE_EXISTS_ID));
         }
-        externalContext.getApplicationMap().put(ASSOCIATE_KEY, this);
+        Map<String, Object> appMap = externalContext.getApplicationMap();
+        appMap.put(ASSOCIATE_KEY, this);
         //noinspection CollectionWithoutInitialCapacity
         navigationMap = new ConcurrentHashMap<String, Set<NavigationCase>>();
-        injectionProvider = InjectionProviderFactory.createInstance(externalContext);
-        WebConfiguration webConfig = WebConfiguration.getInstance(externalContext);
+        injectionProvider = (InjectionProvider) ctx.getAttributes().get(ConfigManager.INJECTION_PROVIDER_KEY);
+        webConfig = WebConfiguration.getInstance(externalContext);
         beanManager = new BeanManager(injectionProvider,
                                       webConfig.isOptionEnabled(
                                            EnableLazyBeanValidation));
@@ -208,19 +253,80 @@ public class ApplicationAssociate {
         groovyHelper = GroovyHelper.getCurrentInstance();
 
         devModeEnabled = (appImpl.getProjectStage() == ProjectStage.Development);
-        // initialize Facelets
-        if (!webConfig.isOptionEnabled(DisableFaceletJSFViewHandler)) {
-            compiler = createCompiler(webConfig);
-            faceletFactory = createFaceletFactory(compiler, webConfig);
-        }
 
         if (!devModeEnabled) {
             resourceCache = new ResourceCache();
         }
 
-        resourceManager = new ResourceManager(resourceCache);
+        resourceManager = new ResourceManager(appMap, resourceCache);
         namedEventManager = new NamedEventManager();
         applicationStateInfo = new ApplicationStateInfo();
+        
+        appImpl.subscribeToEvent(PostConstructApplicationEvent.class,
+                         Application.class, new PostConstructApplicationListener());
+        
+        definingDocumentIdsToTruncatedJarUrls = new ConcurrentHashMap<String, String>();
+        timeOfInstantiation = System.currentTimeMillis();
+    }
+
+    private Map<String, List<String>> resourceLibraryContracts;
+    
+    public void setResourceLibraryContracts(HashMap<String, List<String>> map) {
+        this.resourceLibraryContracts = map;
+    }
+    
+    private class PostConstructApplicationListener implements SystemEventListener {
+
+        @Override
+        public boolean isListenerForSource(Object source) {
+            return source instanceof Application;
+        }
+
+        @Override
+        public void processEvent(SystemEvent event) throws AbortProcessingException {
+            ApplicationAssociate.this.initializeFacelets();
+            
+            if (null == ApplicationAssociate.this.flowHandler) {
+                FlowHandlerFactory flowHandlerFactory = (FlowHandlerFactory) FactoryFinder.getFactory(FactoryFinder.FLOW_HANDLER_FACTORY);
+                ApplicationAssociate.this.flowHandler = flowHandlerFactory.createFlowHandler(FacesContext.getCurrentInstance());
+            }
+
+            FacesContext context = FacesContext.getCurrentInstance();
+            if (Util.isCDIAvailable(context.getExternalContext().getApplicationMap())) {
+                try {
+                    JavaFlowLoaderHelper flowLoader = new JavaFlowLoaderHelper();
+                    flowLoader.loadFlows(context, ApplicationAssociate.this.flowHandler);
+                } catch (IOException ex) {
+                    LOGGER.log(Level.SEVERE, null, ex);
+                }
+            }
+            // cause the Facelet VDL to be instantiated eagerly, so it can 
+            // become aware of the resource library contracts
+            
+            ViewHandler viewHandler = context.getApplication().getViewHandler();
+
+            // FindBugs: ignore the return value, this is just to get the 
+            // ctor called at this time.
+            viewHandler.getViewDeclarationLanguage(context, 
+                    RIConstants.FACES_PREFIX + "xhtml");
+
+        }
+        
+    }
+    
+    public void initializeFacelets() {
+        if (null != compiler) {
+            return;
+        }
+        
+        FacesContext ctx = FacesContext.getCurrentInstance();
+        
+        if (!webConfig.isOptionEnabled(DisableFaceletJSFViewHandler)) {
+            Map<String, Object> appMap = ctx.getExternalContext().getApplicationMap();
+            compiler = createCompiler(appMap, webConfig);
+            faceletFactory = createFaceletFactory(ctx, compiler, webConfig);
+        }
+        
     }
 
     public static ApplicationAssociate getInstance(ExternalContext
@@ -232,6 +338,10 @@ public class ApplicationAssociate {
         return ((ApplicationAssociate)
              applicationMap.get(ASSOCIATE_KEY));
     }
+    
+    public long getTimeOfInstantiation() {
+        return timeOfInstantiation;
+    }
 
     public static ApplicationAssociate getInstance(ServletContext context) {
         if (context == null) {
@@ -277,6 +387,12 @@ public class ApplicationAssociate {
         return resourceManager;
     }
 
+    // Return the resource library contracts and mappings from the
+    // application configuration resources
+    public Map<String, List<String>> getResourceLibraryContracts() {
+        return resourceLibraryContracts;
+    }
+
     public void setResourceManager(ResourceManager resourceManager) {
         this.resourceManager = resourceManager;
     }
@@ -290,6 +406,11 @@ public class ApplicationAssociate {
     }
 
     public Compiler getCompiler() {
+        if (null == compiler) {
+            initializeFacelets();
+        }
+        
+        
         return compiler;
     }
 
@@ -301,7 +422,7 @@ public class ApplicationAssociate {
         this.errorPagePresent = errorPagePresent;
     }
 
-    public FaceletFactory getFaceletFactory() {
+    public DefaultFaceletFactory getFaceletFactory() {
         return faceletFactory;
     }
 
@@ -309,20 +430,16 @@ public class ApplicationAssociate {
          externalContext) {
         Map applicationMap = externalContext.getApplicationMap();
         ApplicationAssociate me = (ApplicationAssociate) applicationMap.get(ASSOCIATE_KEY);
-        if (null != me) {
-            if (null != me.resourceBundles) {
-                me.resourceBundles.clear();
-            }
+        if (null != me && null != me.resourceBundles) {
+            me.resourceBundles.clear();
         }
         applicationMap.remove(ASSOCIATE_KEY);
     }
 
     public static void clearInstance(ServletContext sc) {
         ApplicationAssociate me = (ApplicationAssociate) sc.getAttribute(ASSOCIATE_KEY);
-        if (null != me) {
-            if (null != me.resourceBundles) {
-                me.resourceBundles.clear();
-            }
+        if (null != me && null != me.resourceBundles) {
+            me.resourceBundles.clear();
         }
         sc.removeAttribute(ASSOCIATE_KEY);    
     }
@@ -336,6 +453,29 @@ public class ApplicationAssociate {
         return groovyHelper;
     }
 
+    public void initializeELResolverChains() {
+        // 1. initialize the chains with default values
+        if (null == app.compositeELResolver) {
+            app.compositeELResolver =
+                    new DemuxCompositeELResolver(
+                    FacesCompositeELResolver.ELResolverChainType.Faces);
+            ELUtils.buildFacesResolver(app.compositeELResolver, this);
+            ELResolverInitPhaseListener.populateFacesELResolverForJsp(app,
+                    this);
+        }
+    }
+
+    public void installProgrammaticallyAddedResolvers() {
+        // Ensure custom resolvers are inserted at the correct place.
+        VariableResolver vr = this.getLegacyVariableResolver();
+        if (null != vr) {
+            assert(null != this.getLegacyVRChainHeadWrapperForJsp());
+            this.getLegacyVRChainHeadWrapperForJsp().setWrapped(vr);
+            assert(null != this.getLegacyVRChainHeadWrapperForFaces());
+            this.getLegacyVRChainHeadWrapperForFaces().setWrapped(vr);
+        }
+    }
+
     public boolean isDevModeEnabled() {
         return devModeEnabled;
     }
@@ -366,6 +506,22 @@ public class ApplicationAssociate {
         return legacyVRChainHead;
     }
 
+    public VariableResolverChainWrapper getLegacyVRChainHeadWrapperForJsp() {
+        return legacyVRChainHeadWrapperForJsp;
+    }
+
+    public void setLegacyVRChainHeadWrapperForJsp(VariableResolverChainWrapper legacyVRChainHeadWrapper) {
+        this.legacyVRChainHeadWrapperForJsp = legacyVRChainHeadWrapper;
+    }
+
+    public VariableResolverChainWrapper getLegacyVRChainHeadWrapperForFaces() {
+        return legacyVRChainHeadWrapperForFaces;
+    }
+
+    public void setLegacyVRChainHeadWrapperForFaces(VariableResolverChainWrapper legacyVRChainHeadWrapperForFaces) {
+        this.legacyVRChainHeadWrapperForFaces = legacyVRChainHeadWrapperForFaces;
+    }
+
     /**
      * This method is called by <code>ConfigureListener</code> and will
      * contain any <code>PropertyResolvers</code> defined within
@@ -383,11 +539,19 @@ public class ApplicationAssociate {
         return legacyPRChainHead;
     }
 
-    public CompositeELResolver getFacesELResolverForJsp() {
+    public FacesCompositeELResolver getFacesELResolverForJsp() {
         return facesELResolverForJsp;
     }
+    
+    public FlowHandler getFlowHandler() {
+        return flowHandler;
+    }
+    
+    public void setFlowHandler(FlowHandler flowHandler) {
+        this.flowHandler = flowHandler;
+    }
 
-    public void setFacesELResolverForJsp(CompositeELResolver celr) {
+    public void setFacesELResolverForJsp(FacesCompositeELResolver celr) {
         facesELResolverForJsp = celr;
     }
 
@@ -407,7 +571,7 @@ public class ApplicationAssociate {
         return this.expressionFactory;
     }
 
-    public List<ELResolver> getApplicationELResolvers() {
+    public CompositeELResolver getApplicationELResolvers() {
         return app.getApplicationELResolvers();
     }
 
@@ -477,8 +641,36 @@ public class ApplicationAssociate {
     public boolean hasRequestBeenServiced() {
         return requestServiced;
     }
+    
+    public void addFacesComponent(FacesComponentUsage facesComponentUsage) {
+        FacesComponent facesComponent = facesComponentUsage.getAnnotation();
+        assert(facesComponent.createTag());
+        if (null == facesComponentsByNamespace) {
+            facesComponentsByNamespace = new HashMap<String, List<FacesComponentUsage>>();
+        }
 
+        List<FacesComponentUsage> componentsInNamespace = null;
+        final String namespace = facesComponent.namespace();
+        
+        if (!facesComponentsByNamespace.containsKey(facesComponent.namespace())) {
+            componentsInNamespace = new ArrayList<FacesComponentUsage>();
+            facesComponentsByNamespace.put(namespace, componentsInNamespace);
+        } else {
+            componentsInNamespace = facesComponentsByNamespace.get(namespace);
+        }
+        componentsInNamespace.add(facesComponentUsage);
 
+    }
+    
+    public List<FacesComponentUsage> getComponentsForNamespace(String ns) {
+        List<FacesComponentUsage> result = Collections.emptyList();
+        if (null != facesComponentsByNamespace && facesComponentsByNamespace.containsKey(ns)) {
+            result = facesComponentsByNamespace.get(ns);
+        }
+       
+        return result;
+    }
+    
     /**
      * Add a navigation case to the internal case set.  If a case set
      * does not already exist in the case list map containing this case
@@ -542,9 +734,10 @@ public class ApplicationAssociate {
         Locale defaultLocale = Locale.getDefault();
         locale = defaultLocale;
         // See if this FacesContext has a ViewRoot
-        if (null != (root = context.getViewRoot())) {
-            // If so, ask it for its Locale
-            if (null == (locale = root.getLocale())) {
+        root = context.getViewRoot();
+        if (null != root) {
+            locale = root.getLocale();
+            if (null == root.getLocale()){
                 // If the ViewRoot has no Locale, fall back to the default.
                 locale = defaultLocale;
             }
@@ -581,34 +774,80 @@ public class ApplicationAssociate {
     public boolean isResponseRendered() {
         return responseRendered;
     }
+    
+    public boolean urlIsRelatedToDefiningDocumentInJar(URL candidateUrl, String definingDocumentId) {
+        boolean result = false;
+        String match = definingDocumentIdsToTruncatedJarUrls.get(definingDocumentId);
+        if (null != match) {
+            String candidate = candidateUrl.toExternalForm();
+            if (null != candidate && null != match) {
+                int i = candidate.lastIndexOf("/META-INF");
+                if (-1 == i) {
+                    throw new FacesException("Invalid url for application configuration resources file with respect to faces flows");
+                }
+                candidate = candidate.substring(0, i);
+                result = candidate.equals(match);
+            }
+        }
+        
+        return result;
+    }
+    
+    public void relateUrlToDefiningDocumentInJar(URL url, String definingDocumentId) {
+        String candidate = url.toExternalForm();
+        int i = candidate.lastIndexOf("/META-INF");
+        if (-1 == i) {
+            return;
+        }
+        candidate = candidate.substring(0, i);
+        
+        definingDocumentIdsToTruncatedJarUrls.put(definingDocumentId, candidate);
+    }
 
 
-    protected FaceletFactory createFaceletFactory(Compiler c, WebConfiguration webConfig) {
+    protected DefaultFaceletFactory createFaceletFactory(FacesContext ctx,
+            Compiler c, WebConfiguration webConfig) {
 
         // refresh period
         String refreshPeriod = webConfig.getOptionValue(FaceletsDefaultRefreshPeriod);
         long period = Long.parseLong(refreshPeriod);
 
         // resource resolver
-        ResourceResolver resolver = new DefaultResourceResolver();
+        ResourceResolver resolver = new DefaultResourceResolver(app.getResourceHandler());
+
         String resolverName = webConfig.getOptionValue(FaceletsResourceResolver);
         if (resolverName != null && resolverName.length() > 0) {
             resolver = (ResourceResolver) 
                     ReflectionUtil.decorateInstance(resolverName,
-                                                    ResourceResolver.class,
-                                                    resolver);
+                    ResourceResolver.class,
+                    resolver);
+        } else {
+        
+            Set<? extends Class> resourceResolvers = 
+                    ConfigManager.getAnnotatedClasses(ctx).get(FaceletsResourceResolver.class);
+            if ((null != resourceResolvers) && !resourceResolvers.isEmpty()) {
+                Class resolverClass = resourceResolvers.iterator().next();
+                if (1 < resourceResolvers.size() && LOGGER.isLoggable(Level.SEVERE)) {
+                    LOGGER.log(Level.SEVERE, "Found more than one class " + 
+                        "annotated with FaceletsResourceResolver.  Will " + 
+                        "use {0} and ignore the others", resolverClass);
+                }
+                resolver = (ResourceResolver) 
+                        ReflectionUtil.decorateInstance(resolverClass,
+                        ResourceResolver.class,
+                        resolver);
+            } 
         }
         
         FaceletCache cache = null;
         String faceletCacheName = webConfig.getOptionValue(FaceletCache);
         if (faceletCacheName != null && faceletCacheName.length() > 0) {
-            try
-            {
-                cache = (FaceletCache)ReflectionUtil.forName(faceletCacheName)
+            try {
+                com.sun.faces.facelets.FaceletCache privateApiCache =
+                        (com.sun.faces.facelets.FaceletCache)ReflectionUtil.forName(faceletCacheName)
                                           .newInstance();
-            }
-            catch(Exception e)
-            {
+                cache = new PrivateApiFaceletCacheAdapter(privateApiCache);
+            } catch(Exception e) {
                 if (LOGGER.isLoggable(Level.SEVERE)) {
                     LOGGER.log(Level.SEVERE,
                                "Error Loading Facelet cache: " + faceletCacheName,
@@ -616,25 +855,22 @@ public class ApplicationAssociate {
                 }
             }
         }
-
-        // Resource.getResourceUrl(ctx,"/")
-        FaceletFactory factory = new DefaultFaceletFactory(c, resolver, period, cache);
-
-        // Check to see if a custom Factory has been defined
-        String factoryClass = webConfig.getOptionValue(FaceletFactory);
-        if (factoryClass != null && factoryClass.length() > 0) {
-            factory = (FaceletFactory)
-                  ReflectionUtil.decorateInstance(factoryClass,
-                                                  FaceletFactory.class,
-                                                  factory);
+        if (null == cache) {
+            FaceletCacheFactory cacheFactory = (FaceletCacheFactory)
+                    FactoryFinder.getFactory(FactoryFinder.FACELET_CACHE_FACTORY);
+            cache = cacheFactory.getFaceletCache();
         }
 
-        return factory;
+        // Resource.getResourceUrl(ctx,"/")
+        DefaultFaceletFactory toReturn = new DefaultFaceletFactory();
+        toReturn.init(c, resolver, period, cache);
+                
+        return toReturn;
 
     }
 
 
-    protected Compiler createCompiler(WebConfiguration webConfig) {
+    protected Compiler createCompiler(Map<String, Object> appMap, WebConfiguration webConfig) {
 
         Compiler c = new SAXCompiler();
 
@@ -643,7 +879,7 @@ public class ApplicationAssociate {
               .getOptionValue(FaceletsDecorators);
         if (decParam != null) {
             decParam = decParam.trim();
-            String[] decs = Util.split(decParam, ";");
+            String[] decs = Util.split(appMap, decParam, ";");
             TagDecorator decObj;
             for (String decorator : decs) {
                 try {
@@ -672,14 +908,24 @@ public class ApplicationAssociate {
                     BooleanWebContextInitParameter.FaceletsSkipComments));
 
         c.addTagLibrary(new CoreLibrary());
+        c.addTagLibrary(new CoreLibrary(CoreLibrary.XMLNSNamespace));
         c.addTagLibrary(new HtmlLibrary());
+        c.addTagLibrary(new HtmlLibrary(HtmlLibrary.XMLNSNamespace));
         c.addTagLibrary(new UILibrary());
+        c.addTagLibrary(new UILibrary(UILibrary.XMLNSNamespace));
         c.addTagLibrary(new JstlCoreLibrary());
-        c.addTagLibrary(new FunctionLibrary(JstlFunction.class, "http://java.sun.com/jsp/jstl/functions"));
+        c.addTagLibrary(new JstlCoreLibrary(JstlCoreLibrary.IncorrectNamespace));
+        c.addTagLibrary(new JstlCoreLibrary(JstlCoreLibrary.XMLNSNamespace));
+        c.addTagLibrary(new PassThroughAttributeLibrary());
+        c.addTagLibrary(new PassThroughElementLibrary());
+        c.addTagLibrary(new FunctionLibrary(JstlFunction.class, FunctionLibrary.Namespace));
+        c.addTagLibrary(new FunctionLibrary(JstlFunction.class, FunctionLibrary.XMLNSNamespace));
         if (isDevModeEnabled()) {
-            c.addTagLibrary(new FunctionLibrary(DevTools.class, "http://java.sun.com/mojarra/private/functions"));
+            c.addTagLibrary(new FunctionLibrary(DevTools.class, DevTools.Namespace));
+            c.addTagLibrary(new FunctionLibrary(DevTools.class, DevTools.NewNamespace));
         }
         c.addTagLibrary(new CompositeLibrary());
+        c.addTagLibrary(new CompositeLibrary(CompositeLibrary.XMLNSNamespace));
 
         return c;
 
diff --git a/jsf-ri/src/main/java/com/sun/faces/application/ApplicationFactoryImpl.java b/jsf-ri/src/main/java/com/sun/faces/application/ApplicationFactoryImpl.java
index 8edd283..51ed3dc 100644
--- a/jsf-ri/src/main/java/com/sun/faces/application/ApplicationFactoryImpl.java
+++ b/jsf-ri/src/main/java/com/sun/faces/application/ApplicationFactoryImpl.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -101,6 +105,7 @@ public class ApplicationFactoryImpl extends ApplicationFactory {
 
         if (application == null) {
             application = new ApplicationImpl();
+            InjectionApplicationFactory.setApplicationInstance(application);
             if (logger.isLoggable(Level.FINE)) {
                 logger.fine(MessageFormat.format("Created Application instance ''{0}''",
                                                  application));
diff --git a/jsf-ri/src/main/java/com/sun/faces/application/ApplicationImpl.java b/jsf-ri/src/main/java/com/sun/faces/application/ApplicationImpl.java
index 6aae778..2f3e383 100644
--- a/jsf-ri/src/main/java/com/sun/faces/application/ApplicationImpl.java
+++ b/jsf-ri/src/main/java/com/sun/faces/application/ApplicationImpl.java
@@ -1,2412 +1,2559 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package com.sun.faces.application;
-
-import java.beans.PropertyEditor;
-import java.beans.PropertyEditorManager;
-import java.lang.reflect.Constructor;
-import java.text.MessageFormat;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Locale;
-import java.util.Map;
-import java.util.ResourceBundle;
-import java.util.Set;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.CopyOnWriteArraySet;
-import java.util.concurrent.CopyOnWriteArrayList;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-import javax.el.CompositeELResolver;
-import javax.el.ELContextListener;
-import javax.el.ELException;
-import javax.el.ELResolver;
-import javax.el.ExpressionFactory;
-import javax.el.MethodExpression;
-import javax.faces.FacesException;
-import javax.faces.render.Renderer;
-import javax.faces.application.Application;
-import javax.faces.application.NavigationHandler;
-import javax.faces.application.ResourceHandler;
-import javax.faces.application.StateManager;
-import javax.faces.application.ViewHandler;
-import javax.faces.application.ProjectStage;
-import javax.faces.component.UIComponent;
-import javax.faces.component.UIViewRoot;
-import javax.faces.component.behavior.Behavior;
-import javax.faces.context.FacesContext;
-import javax.faces.convert.Converter;
-import javax.faces.convert.DateTimeConverter;
-import javax.faces.el.MethodBinding;
-import javax.faces.el.PropertyResolver;
-import javax.faces.el.ReferenceSyntaxException;
-import javax.faces.el.ValueBinding;
-import javax.faces.el.VariableResolver;
-import javax.faces.event.AbortProcessingException;
-import javax.faces.event.ActionListener;
-import javax.faces.validator.Validator;
-
-import com.sun.faces.RIConstants;
-import com.sun.faces.config.WebConfiguration;
-import com.sun.faces.config.WebConfiguration.WebContextInitParameter;
-import static com.sun.faces.config.WebConfiguration.BooleanWebContextInitParameter.DateTimeConverterUsesSystemTimezone;
-import static com.sun.faces.config.WebConfiguration.BooleanWebContextInitParameter.RegisterConverterPropertyEditors;
-import com.sun.faces.el.ELUtils;
-import com.sun.faces.el.FacesCompositeELResolver;
-import com.sun.faces.el.PropertyResolverImpl;
-import com.sun.faces.el.VariableResolverImpl;
-import com.sun.faces.util.Cache;
-import com.sun.faces.util.Cache.Factory;
-import com.sun.faces.util.FacesLogger;
-import com.sun.faces.util.MessageUtils;
-import com.sun.faces.util.ReflectionUtils;
-import com.sun.faces.util.Util;
-
-import java.beans.BeanDescriptor;
-import java.beans.BeanInfo;
-import java.beans.PropertyDescriptor;
-import java.util.LinkedHashSet;
-
-import javax.faces.event.ExceptionQueuedEvent;
-import javax.faces.event.SystemEvent;
-import javax.faces.event.SystemEventListener;
-import javax.faces.event.SystemEventListenerHolder;
-import javax.faces.event.ExceptionQueuedEventContext;
-
-import java.util.List;
-import java.util.TimeZone;
-import java.util.LinkedHashMap;
-
-import javax.el.ValueExpression;
-import javax.faces.application.Resource;
-import javax.faces.view.ViewDeclarationLanguage;
-
-
-/**
- * <p><strong>Application</strong> represents a per-web-application
- * singleton object where applications based on JavaServer Faces (or
- * implementations wishing to provide extended functionality) can
- * register application-wide singletons that provide functionality
- * required by JavaServer Faces.
- */
-public class ApplicationImpl extends Application {
-
-    // Log instance for this class
-    private static final Logger LOGGER = FacesLogger.APPLICATION.getLogger();
-
-    private static final ELContextListener[] EMPTY_EL_CTX_LIST_ARRAY = { };
-
-    private static final Map<String,Class<?>[]> STANDARD_CONV_ID_TO_TYPE_MAP =
-         new HashMap<String,Class<?>[]>(8, 1.0f);
-    private static final Map<Class<?>,String> STANDARD_TYPE_TO_CONV_ID_MAP =
-         new HashMap<Class<?>,String>(16, 1.0f);
-
-    static {
-        STANDARD_CONV_ID_TO_TYPE_MAP.put("javax.faces.Byte", new Class[] { Byte.TYPE, Byte.class});
-        STANDARD_CONV_ID_TO_TYPE_MAP.put("javax.faces.Boolean", new Class[] { Boolean.TYPE, Boolean.class});
-        STANDARD_CONV_ID_TO_TYPE_MAP.put("javax.faces.Character", new Class[] { Character.TYPE, Character.class});
-        STANDARD_CONV_ID_TO_TYPE_MAP.put("javax.faces.Short", new Class[] { Short.TYPE, Short.class });
-        STANDARD_CONV_ID_TO_TYPE_MAP.put("javax.faces.Integer", new Class[] { Integer.TYPE, Integer.class });
-        STANDARD_CONV_ID_TO_TYPE_MAP.put("javax.faces.Long", new Class[] { Long.TYPE, Long.class });
-        STANDARD_CONV_ID_TO_TYPE_MAP.put("javax.faces.Float", new Class[] { Float.TYPE, Float.class });
-        STANDARD_CONV_ID_TO_TYPE_MAP.put("javax.faces.Double", new Class[] { Double.TYPE, Double.class });
-        for (Map.Entry<String,Class<?>[]> entry : STANDARD_CONV_ID_TO_TYPE_MAP.entrySet()) {
-            Class<?>[] types = entry.getValue();
-            String key = entry.getKey();
-            for (Class<?> clazz : types) {
-                STANDARD_TYPE_TO_CONV_ID_MAP.put(clazz, key);
-            }
-        }
-    }
-
-    // Relationship Instance Variables
-
-    private ApplicationAssociate associate = null;
-    private ProjectStage projectStage;
-
-    private volatile ActionListener actionListener = null;
-    private volatile NavigationHandler navigationHandler = null;
-    private volatile PropertyResolverImpl propertyResolver = null;
-    private volatile VariableResolverImpl variableResolver = null;
-    private volatile ViewHandler viewHandler = null;
-    private volatile ResourceHandler resourceHandler;
-    private volatile StateManager stateManager = null;
-    private volatile ArrayList<Locale> supportedLocales = null;
-    private volatile Locale defaultLocale = null;
-    //
-    // This map stores reference expression | value binding instance
-    // mappings.
-    //
-    
-    //
-    // These three maps store store "identifier" | "class name"
-    // mappings.
-    //
-    private Map<String,Object> behaviorMap = null;
-    private Map<String,Object> componentMap = null;
-    private Map<String,Object> converterIdMap = null;
-    private Map<Class<?>,Object> converterTypeMap = null;
-    private Map<String,Object> validatorMap = null;
-    private Set<String> defaultValidatorIds = null;
-    private volatile Map<String,String> defaultValidatorInfo = null;
-    private volatile String messageBundle = null;
-
-    private List<ELContextListener> elContextListeners = null;
-    private ArrayList<ELResolver> elResolvers = null;
-    private CompositeELResolver compositeELResolver = null;
-    private final SystemEventHelper systemEventHelper = new SystemEventHelper();
-    private final ComponentSystemEventHelper compSysEventHelper = new ComponentSystemEventHelper();
-    private boolean passDefaultTimeZone;
-    private boolean registerPropertyEditors;
-    private TimeZone systemTimeZone;
-
-    private final String IS_PROCESSING_LISTENERS_KEY = "com.sun.faces.application.ApplicationImpl.IS_PROCESSING_LISTENERS";
-
-    /**
-     * Constructor
-     */
-    public ApplicationImpl() {
-        super();
-        associate = new ApplicationAssociate(this);
-        componentMap = new ConcurrentHashMap<String, Object>();
-        converterIdMap = new ConcurrentHashMap<String, Object>();
-        converterTypeMap = new ConcurrentHashMap<Class<?>, Object>();
-        validatorMap = new ConcurrentHashMap<String, Object>();
-        defaultValidatorIds = new LinkedHashSet<String>();
-        behaviorMap = new ConcurrentHashMap<String, Object>();
-        elContextListeners = new CopyOnWriteArrayList<ELContextListener>();
-        propertyResolver = new PropertyResolverImpl();
-        variableResolver = new VariableResolverImpl();
-
-        FacesContext ctx = FacesContext.getCurrentInstance();
-        ctx.getExternalContext().getApplicationMap().put(this.getClass().getName(),
-                                                         this);
-        WebConfiguration webConfig = WebConfiguration.getInstance(ctx.getExternalContext());
-        passDefaultTimeZone = webConfig.isOptionEnabled(DateTimeConverterUsesSystemTimezone);
-        registerPropertyEditors = webConfig.isOptionEnabled(RegisterConverterPropertyEditors);
-        if (passDefaultTimeZone) {
-            systemTimeZone = TimeZone.getDefault();
-        }
-        if (LOGGER.isLoggable(Level.FINE)) {
-            LOGGER.log(Level.FINE, "Created Application instance ");
-        }
-    }
-
-
-    /**
-     * @see javax.faces.application.Application#publishEvent(FacesContext, Class, Object)
-     */
-    @Override
-    public void publishEvent(FacesContext context,
-                             Class<? extends SystemEvent> systemEventClass,
-                             Object source) {
-
-        publishEvent(context, systemEventClass, null, source);
-
-    }
-
-
-    /**
-     * @see javax.faces.application.Application#publishEvent(FacesContext, Class, Object)
-     */
-    @Override
-    public void publishEvent(FacesContext context,
-                             Class<? extends SystemEvent> systemEventClass,
-                             Class<?> sourceBaseType,
-                             Object source) {
-
-        Util.notNull("context", context);
-        Util.notNull("systemEventClass", systemEventClass);
-        Util.notNull("source", source);
-        if (!needsProcessing(context, systemEventClass)) {
-            return;
-        }
-        // source is not compatible with the provided base type.
-        // Log a warning that the types are incompatible and return. 
-        if (getProjectStage() == ProjectStage.Development
-              && sourceBaseType != null
-              && !sourceBaseType.isInstance(source)) {
-            if (LOGGER.isLoggable(Level.WARNING)) {
-                LOGGER.log(Level.WARNING,
-                           "jsf.application.publish.event.base_type_mismatch",
-                           new Object[] { source.getClass().getName(),
-                                          sourceBaseType.getName() });                
-            }
-            return;
-        }
-
-        try {
-            // The side-effect of calling invokeListenersFor
-            // will create a SystemEvent object appropriate to event/source
-            // combination.  This event will be passed on subsequent invocations
-            // of invokeListenersFor
-            SystemEvent event;
-
-            // Look for and invoke any listeners stored on the source instance.
-            event = invokeComponentListenersFor(systemEventClass, source);
-
-            // Look for and invoke any 'view' listeners 
-            event = invokeViewListenersFor(context, systemEventClass, event, source);
-
-            // look for and invoke any listeners stored on the application
-            // using source type.
-            event = invokeListenersFor(systemEventClass,
-                                       event,
-                                       source,
-                                       sourceBaseType,
-                                       true);
-
-            // look for and invoke any listeners not specific to the source class
-            invokeListenersFor(systemEventClass, event, source, null, false);
-        } catch (AbortProcessingException ape) {
-            context.getApplication().publishEvent(context,
-                                                  ExceptionQueuedEvent.class,
-                                                  new ExceptionQueuedEventContext(context, ape));
-        }
-
-    }
-
-
-    /**
-     * @see Application#subscribeToEvent(Class, Class, javax.faces.event.SystemEventListener)
-     */
-    @Override
-    public void subscribeToEvent(Class<? extends SystemEvent> systemEventClass,
-                                 Class<?> sourceClass,
-                                 SystemEventListener listener) {
-
-        Util.notNull("systemEventClass", systemEventClass);
-        Util.notNull("listener", listener);
-
-        Set<SystemEventListener> listeners =
-              getListeners(systemEventClass, sourceClass);
-        listeners.add(listener);
-
-    }
-
-
-    /**
-     * @see Application#subscribeToEvent(Class, javax.faces.event.SystemEventListener)
-     */
-    @Override
-    public void subscribeToEvent(Class<? extends SystemEvent> systemEventClass,
-                                 SystemEventListener listener) {
-
-        subscribeToEvent(systemEventClass, null, listener);
-
-    }
-
-
-    /**
-     * @see Application#unsubscribeFromEvent(Class, Class, javax.faces.event.SystemEventListener)
-     */
-    @Override
-    public void unsubscribeFromEvent(Class<? extends SystemEvent> systemEventClass,
-                                     Class<?> sourceClass,
-                                     SystemEventListener listener) {
-
-        Util.notNull("systemEventClass", systemEventClass);
-        Util.notNull("listener", listener);
-
-        Set<SystemEventListener> listeners =
-              getListeners(systemEventClass, sourceClass);
-        if (listeners != null) {
-            listeners.remove(listener);
-        }
-
-    }
-
-    /**
-     * @see Application#unsubscribeFromEvent(Class, javax.faces.event.SystemEventListener)
-     */
-    @Override
-    public void unsubscribeFromEvent(Class<? extends SystemEvent> systemEventClass,
-                                     SystemEventListener listener) {
-
-        unsubscribeFromEvent(systemEventClass, null, listener);
-
-    }
-
-
-    /**
-     * @see javax.faces.application.Application#addELContextListener(javax.el.ELContextListener)
-     */
-    @Override
-    public void addELContextListener(ELContextListener listener) {
-        if (listener != null) {
-            elContextListeners.add(listener);
-        }
-    }
-
-
-    /**
-     * @see javax.faces.application.Application#removeELContextListener(javax.el.ELContextListener)
-     */
-    @Override
-    public void removeELContextListener(ELContextListener listener) {
-        if (listener != null) {
-            elContextListeners.remove(listener);
-        }
-    }
-
-
-    /**
-     * @see javax.faces.application.Application#getELContextListeners()
-     */
-    @Override
-    public ELContextListener [] getELContextListeners() {
-        if (!elContextListeners.isEmpty()) {
-            return (elContextListeners.toArray(
-                       new ELContextListener[elContextListeners.size()]));
-        } else {
-            return (EMPTY_EL_CTX_LIST_ARRAY);
-        }
-    }
-
-
-    /**
-     * @see javax.faces.application.Application#getExpressionFactory()
-     */
-    @Override
-    public ExpressionFactory getExpressionFactory() {
-        return associate.getExpressionFactory();
-    }
-
-
-    /**
-     * @see javax.faces.application.Application#evaluateExpressionGet(javax.faces.context.FacesContext, String, Class)
-     */
-    @Override
-    public <T> T evaluateExpressionGet(FacesContext context,
-                                       String expression,
-                                       Class<? extends T> expectedType) throws ELException {
-        ValueExpression ve = 
-          getExpressionFactory().createValueExpression(context.getELContext(), 
-                                                       expression,
-                                                       expectedType);
-        //noinspection unchecked
-        return (T)(ve.getValue(context.getELContext()));
-    }
-
-
-    /**
-     * @see javax.faces.application.Application#createComponent(javax.el.ValueExpression, javax.faces.context.FacesContext, String)
-     */
-    @Override
-    public UIComponent createComponent(ValueExpression componentExpression,
-                                       FacesContext context,
-                                       String componentType)
-    throws FacesException {
-
-        Util.notNull("componentExpression", componentExpression);
-        Util.notNull("context", context);
-        Util.notNull("componentType", componentType);
-
-        return createComponentApplyAnnotations(context,
-                                               componentExpression,
-                                               componentType,
-                                               null,
-                                               true);
-
-    }
-
-
-    /**
-     * @see javax.faces.application.Application#getELResolver()
-     */
-    @Override
-    public ELResolver getELResolver() {
-
-        if (compositeELResolver == null) {
-            compositeELResolver =
-                 new FacesCompositeELResolver(
-                      FacesCompositeELResolver.ELResolverChainType.Faces);
-            ELUtils.buildFacesResolver(compositeELResolver, associate);
-        }
-
-        return compositeELResolver;
-
-    }
-
-
-    /**
-     * @see javax.faces.application.Application#addELResolver(javax.el.ELResolver)
-     */
-    @Override
-    public void addELResolver(ELResolver resolver) {
-
-        if (associate.hasRequestBeenServiced()) {
-            throw new IllegalStateException(
-                  MessageUtils.getExceptionMessageString(
-                        MessageUtils.ILLEGAL_ATTEMPT_SETTING_APPLICATION_ARTIFACT_ID, "ELResolver"));
-        }
-
-        if (resolver != null) {
-            if (elResolvers == null) {
-                //noinspection CollectionWithoutInitialCapacity
-                elResolvers = new ArrayList<ELResolver>();
-            }
-            elResolvers.add(resolver);
-        }
-
-    }
-
-
-    /**
-     * @see javax.faces.application.Application#getProjectStage() 
-     */
-    @Override
-    public ProjectStage getProjectStage() {
-        
-        if (projectStage == null) {
-            WebConfiguration webConfig =
-                  WebConfiguration.getInstance(
-                        FacesContext.getCurrentInstance().getExternalContext());
-            String value = webConfig.getEnvironmentEntry(WebConfiguration.WebEnvironmentEntry.ProjectStage);
-            if (value != null) {
-                if (LOGGER.isLoggable(Level.FINE)) {
-                    LOGGER.log(Level.FINE,
-                               "ProjectStage configured via JNDI: {0}",
-                               value);
-                }
-            } else {
-                value = webConfig.getOptionValue(WebContextInitParameter.JavaxFacesProjectStage);
-                if (value != null) {
-                    if (LOGGER.isLoggable(Level.FINE)) {
-                        LOGGER.log(Level.FINE,
-                               "ProjectStage configured via servlet context init parameter: {0}", 
-                               value);
-                    }
-                }
-            }
-            if (value != null) {
-                try {
-                    projectStage = ProjectStage.valueOf(value);
-                } catch (IllegalArgumentException iae) {
-                    if (LOGGER.isLoggable(Level.INFO)) {
-                        LOGGER.log(Level.INFO,
-                                   "Unable to discern ProjectStage for value {0}.",
-                                   value);
-                    }
-                }
-            }
-            if (projectStage == null) {
-                projectStage = ProjectStage.Production;
-            }
-           
-        }
-        return projectStage;
-
-    }
-
-    public List<ELResolver> getApplicationELResolvers() {
-        return elResolvers;
-    }
-
-
-    /**
-     * @see javax.faces.application.Application#getActionListener()
-     */
-    public ActionListener getActionListener() {
-        return actionListener;
-    }
-
-
-    /**
-     * @see javax.faces.application.Application#getViewHandler()
-     */
-    public ViewHandler getViewHandler() {
-        return viewHandler;
-    }
-
-
-    /**
-     * @see javax.faces.application.Application#setViewHandler(javax.faces.application.ViewHandler)
-     */
-    public synchronized void setViewHandler(ViewHandler viewHandler) {
-
-        Util.notNull("viewHandler", viewHandler);
-
-        if (associate.hasRequestBeenServiced()) {
-            throw new IllegalStateException(
-                  MessageUtils.getExceptionMessageString(
-                        MessageUtils.ILLEGAL_ATTEMPT_SETTING_APPLICATION_ARTIFACT_ID, "ViewHandler"));
-        }
-
-        this.viewHandler = viewHandler;
-        if (LOGGER.isLoggable(Level.FINE)) {
-            LOGGER.log(Level.FINE, MessageFormat.format("set ViewHandler Instance to ''{0}''", viewHandler.getClass().getName()));
-        }
-
-    }
-
-    /**
-     * @see javax.faces.application.Application#getResourceHandler()
-     */
-    @Override
-    public ResourceHandler getResourceHandler() {
-
-        return resourceHandler;
-
-    }
-
-
-    /**
-     * @see javax.faces.application.Application#setResourceHandler(javax.faces.application.ResourceHandler)
-     */
-    @Override
-    public synchronized void setResourceHandler(ResourceHandler resourceHandler) {
-
-        Util.notNull("resourceHandler", resourceHandler);
-
-        if (associate.hasRequestBeenServiced()) {
-            throw new IllegalStateException(
-                  MessageUtils.getExceptionMessageString(
-                        MessageUtils.ILLEGAL_ATTEMPT_SETTING_APPLICATION_ARTIFACT_ID, "ResourceHandler"));
-        }
-
-        this.resourceHandler = resourceHandler;
-        if (LOGGER.isLoggable(Level.FINE)) {
-            LOGGER.log(Level.FINE,
-                       "set ResourceHandler Instance to ''{0}''",
-                       resourceHandler.getClass().getName());
-        }
-
-    }
-
-
-    /**
-     * @see javax.faces.application.Application#getStateManager()
-     */
-    public StateManager getStateManager() {
-        return stateManager;
-    }
-
-
-    /**
-     * @see javax.faces.application.Application#setStateManager(javax.faces.application.StateManager)
-     */
-    public synchronized void setStateManager(StateManager stateManager) {
-
-        Util.notNull("stateManager", stateManager);
-
-        if (associate.hasRequestBeenServiced()) {
-            throw new IllegalStateException(
-                  MessageUtils.getExceptionMessageString(
-                        MessageUtils.ILLEGAL_ATTEMPT_SETTING_APPLICATION_ARTIFACT_ID, "StateManager"));
-        }
-
-        this.stateManager = stateManager;
-        if (LOGGER.isLoggable(Level.FINE)) {
-            LOGGER.log(Level.FINE, MessageFormat.format("set StateManager Instance to ''{0}''",
-                                                        stateManager.getClass().getName()));
-        }
-
-    }
-
-
-    /**
-     * @see Application#setActionListener(javax.faces.event.ActionListener)
-     */
-    public synchronized void setActionListener(ActionListener actionListener) {
-
-        Util.notNull("actionListener", actionListener);
-
-        this.actionListener = actionListener;
-
-        if (LOGGER.isLoggable(Level.FINE)) {
-            LOGGER.fine(MessageFormat.format("set ActionListener Instance to ''{0}''",
-                                             actionListener.getClass().getName()));
-        }
-    }
-
-
-    /**
-     * @see javax.faces.application.Application#getNavigationHandler()
-     */
-    public NavigationHandler getNavigationHandler() {
-        return navigationHandler;
-    }
-
-
-    /**
-     * @see javax.faces.application.Application#setNavigationHandler(javax.faces.application.NavigationHandler)
-     */
-    public synchronized void setNavigationHandler(NavigationHandler navigationHandler) {
-
-        Util.notNull("navigationHandler", navigationHandler);
-
-        this.navigationHandler = navigationHandler;
-
-        if (LOGGER.isLoggable(Level.FINE)) {
-            LOGGER.fine(MessageFormat.format("set NavigationHandler Instance to ''{0}''",
-                                             navigationHandler.getClass().getName()));
-        }
-    }
-
-    /**
-     * @see javax.faces.application.Application#setPropertyResolver(javax.faces.el.PropertyResolver)
-     */
-    @SuppressWarnings("deprecation")
-    public PropertyResolver getPropertyResolver() {
-        return propertyResolver;
-    }
-
-
-    /**
-     * @see javax.faces.application.Application#getResourceBundle(javax.faces.context.FacesContext, String)
-     */
-    @Override
-    public ResourceBundle getResourceBundle(FacesContext context, String var) {
-
-        Util.notNull("context", context);
-        Util.notNull("var", var);
-        return associate.getResourceBundle(context, var);
-
-    }
-
-
-    /**
-     * @see javax.faces.application.Application#setPropertyResolver(javax.faces.el.PropertyResolver)
-     */
-    @SuppressWarnings("deprecation")
-    public void setPropertyResolver(PropertyResolver propertyResolver) {
-
-        Util.notNull("propertyResolver", propertyResolver);
-
-        if (associate.hasRequestBeenServiced()) {
-            throw new IllegalStateException(
-                  MessageUtils.getExceptionMessageString(
-                        MessageUtils.ILLEGAL_ATTEMPT_SETTING_APPLICATION_ARTIFACT_ID, "PropertyResolver"));
-        }
-
-        this.propertyResolver.setDelegate(ELUtils.getDelegatePR(associate, true));
-        associate.setLegacyPropertyResolver(propertyResolver);
-        propertyResolver = new PropertyResolverImpl();
-
-
-        if (LOGGER.isLoggable(Level.FINE)) {
-            LOGGER.fine(MessageFormat.format("set PropertyResolver Instance to ''{0}''", propertyResolver.getClass().getName()));
-        }
-    }
-
-
-    /**
-     * @see javax.faces.application.Application#createMethodBinding(String, Class[])
-     */
-    @SuppressWarnings("deprecation")
-    public MethodBinding createMethodBinding(String ref, Class<?> params[]) {
-
-        Util.notNull("ref", ref);
-
-        if (!(ref.startsWith("#{") && ref.endsWith("}"))) {
-            if (LOGGER.isLoggable(Level.FINE)) {
-                LOGGER.fine(MessageFormat.format("Expression ''{0}'' does not follow the syntax #{...}", ref));
-            }
-            throw new ReferenceSyntaxException(ref);
-        }
-        FacesContext context = FacesContext.getCurrentInstance();
-        MethodExpression result;
-        try {
-            // return a MethodBinding that wraps a MethodExpression.
-            if (null == params) {
-                params = RIConstants.EMPTY_CLASS_ARGS;
-            }
-            result =
-                  getExpressionFactory().
-                        createMethodExpression(context.getELContext(), ref, null,
-                                               params);
-        } catch (ELException elex) {
-            throw new ReferenceSyntaxException(elex);
-        }
-        return (new MethodBindingMethodExpressionAdapter(result));
-
-    }
-
-
-    /**
-     * @see javax.faces.application.Application#createValueBinding(String)
-     */
-    @SuppressWarnings("deprecation")
-    public ValueBinding createValueBinding(String ref)
-    throws ReferenceSyntaxException {
-
-        Util.notNull("ref", ref);
-        ValueExpression result;
-        FacesContext context = FacesContext.getCurrentInstance();
-         // return a ValueBinding that wraps a ValueExpression.
-         try {
-             result= getExpressionFactory().
-                     createValueExpression(context.getELContext(),ref,
-                     Object.class);     
-         } catch (ELException elex) {
-            throw new ReferenceSyntaxException(elex);
-         } 
-         return (new ValueBindingValueExpressionAdapter(result));
-
-    }
-
-
-    /**
-     * @see javax.faces.application.Application#getVariableResolver()
-     */
-    @SuppressWarnings("deprecation")
-    public VariableResolver getVariableResolver() {       
-        return variableResolver;
-    }
-
-
-    /**
-     * @see javax.faces.application.Application#setVariableResolver(javax.faces.el.VariableResolver)
-     */
-    @SuppressWarnings("deprecation")
-    public void setVariableResolver(VariableResolver variableResolver) {
-
-        Util.notNull("variableResolver", variableResolver);
-
-        if (associate.hasRequestBeenServiced()) {
-            throw new IllegalStateException(
-                  MessageUtils.getExceptionMessageString(
-                        MessageUtils.ILLEGAL_ATTEMPT_SETTING_APPLICATION_ARTIFACT_ID, "VariableResolver"));
-        }
-
-        this.variableResolver.setDelegate(ELUtils.getDelegateVR(associate, true));
-        associate.setLegacyVariableResolver(variableResolver);
-        variableResolver = new VariableResolverImpl();
-
-        if (LOGGER.isLoggable(Level.FINE)) {
-            LOGGER.fine(MessageFormat.format("set VariableResolver Instance to ''{0}''",
-                                             variableResolver.getClass().getName()));
-        }
-
-    }
-
-    /**
-     * @see javax.faces.application.Application#addBehavior(String, String)
-     */
-    public void addBehavior(String behaviorId, String behaviorClass) {
-
-        Util.notNull("behaviorId", behaviorId);
-        Util.notNull("behaviorClass", behaviorClass);
-
-        if (LOGGER.isLoggable(Level.FINE) && behaviorMap.containsKey(behaviorId)) {
-            LOGGER.log(Level.FINE,
-                       "behaviorId {0} has already been registered.  Replacing existing behavior class type {1} with {2}.",
-                       new Object[] { behaviorId, behaviorMap.get(behaviorId), behaviorClass });
-        }
-        behaviorMap.put(behaviorId, behaviorClass);
-
-        if (LOGGER.isLoggable(Level.FINE)) {
-            LOGGER.fine(MessageFormat.format("added behavior of type ''{0}'' class ''{1}''",
-                                             behaviorId,
-                                             behaviorClass));
-        }
-
-    }
-
-    /**
-     * @see javax.faces.application.Application#createBehavior(String)
-     */
-    public Behavior createBehavior(String behaviorId) throws FacesException {
-
-        Util.notNull("behaviorId", behaviorId);
-        Behavior returnVal = (Behavior) newThing(behaviorId, behaviorMap);
-        if (returnVal == null) {
-            Object[] params = {behaviorId};
-            if (LOGGER.isLoggable(Level.SEVERE)) {
-                LOGGER.log(Level.SEVERE,
-                        "jsf.cannot_instantiate_behavior_error", params);
-            }
-            throw new FacesException(MessageUtils.getExceptionMessageString(
-                MessageUtils.NAMED_OBJECT_NOT_FOUND_ERROR_MESSAGE_ID, params));
-        }
-        if (LOGGER.isLoggable(Level.FINE)) {
-            LOGGER.fine(MessageFormat.format("created behavior of type ''{0}''",
-                                             behaviorId));
-        }
-        associate.getAnnotationManager().applyBehaviorAnnotations(FacesContext.getCurrentInstance(), returnVal);
-        return returnVal;
-    }
-
-    /**
-     * @see javax.faces.application.Application#getBehaviorIds()
-     */
-    public Iterator<String> getBehaviorIds() {
-
-        return behaviorMap.keySet().iterator();
-
-    }
-
-    /**
-     * @see javax.faces.application.Application#addComponent(String, String)
-     */
-    public void addComponent(String componentType, String componentClass) {
-
-        Util.notNull("componentType", componentType);
-        Util.notNull("componentType", componentClass);
-
-        if (LOGGER.isLoggable(Level.FINE) && componentMap.containsKey(componentType)) {
-            LOGGER.log(Level.FINE,
-                       "componentType {0} has already been registered.  Replacing existing component class type {1} with {2}.",
-                       new Object[] { componentType, componentMap.get(componentType), componentClass });
-        }
-        componentMap.put(componentType, componentClass);
-        
-        if (LOGGER.isLoggable(Level.FINE)) {
-            LOGGER.fine(MessageFormat.format("added component of type ''{0}'' and class ''{1}''",
-                                             componentType,
-                                             componentClass));
-        }
-        
-    }
-
-
-    /**
-     * @see javax.faces.application.Application#createComponent(String)
-     */
-    public UIComponent createComponent(String componentType) throws FacesException {
-
-        Util.notNull("componentType", componentType);
-
-        return createComponentApplyAnnotations(FacesContext.getCurrentInstance(),
-                                               componentType,
-                                               null,
-                                               true);
-
-    }
-
-
-    /**
-     * @see javax.faces.application.Application#createComponent(javax.faces.context.FacesContext, javax.faces.application.Resource)
-     */
-    @Override
-    public UIComponent createComponent(FacesContext context, Resource componentResource) throws FacesException {
-
-        // RELEASE_PENDING (rlubke,driscoll) this method needs review.
-
-        Util.notNull("context", context);
-        Util.notNull("componentResource", componentResource);
-
-        UIComponent result = null;
-
-        // use the application defined in the FacesContext as we may be calling
-        // overriden methods
-        Application app = context.getApplication();
-
-        ViewDeclarationLanguage pdl = app.getViewHandler().getViewDeclarationLanguage(context, context.getViewRoot().getViewId());
-        BeanInfo componentMetadata = pdl.getComponentMetadata(context,
-                                                              componentResource);
-        if (null != componentMetadata){
-            BeanDescriptor componentBeanDescriptor = componentMetadata.getBeanDescriptor();
-            
-            // Step 1.  See if the composite component author explicitly
-            // gave a componentType as part of the composite component metadata
-            ValueExpression ve = (ValueExpression)
-                  componentBeanDescriptor.getValue(UIComponent.COMPOSITE_COMPONENT_TYPE_KEY);
-            if (null != ve) {
-                String componentType = (String) ve.getValue(context.getELContext());
-                if (null != componentType && 0 < componentType.length()) {
-                    result = app.createComponent(componentType);
-                }
-            }
-        }
-
-
-        // Step 2. If that didn't work, if a script based resource can be 
-        // found for the scriptComponentResource,
-        // see if a component can be generated from it
-        if (null == result) {
-            Resource scriptComponentResource = pdl.getScriptComponentResource(context, componentResource);
-
-            if (null != scriptComponentResource) {
-                result = createComponentFromScriptResource(context,
-                        scriptComponentResource, componentResource);
-            }
-        }
-
-        // Step 3. Use the libraryName of the resource as the java package
-        // and use the resourceName as the class name.  See
-        // if a Java class can be loaded
-        if (null == result) {
-            String packageName = componentResource.getLibraryName();
-            String className = componentResource.getResourceName();
-            className = packageName + '.' + className.substring(0, className.lastIndexOf('.'));
-            try {
-                Class<?> clazz = (Class<?>) componentMap.get(className);
-                if (clazz == null) {
-                    clazz = Util.loadClass(className, this);
-                }
-                if (clazz != ComponentResourceClassNotFound.class) {
-                    if (!associate.isDevModeEnabled()) {
-                        componentMap.put(className, clazz);
-                    }
-                    result = (UIComponent) clazz.newInstance();
-                }
-            } catch (ClassNotFoundException ex) {
-                if (!associate.isDevModeEnabled()) {
-                    componentMap.put(className, ComponentResourceClassNotFound.class);
-                }
-            } catch (InstantiationException ie) {
-                throw new FacesException(ie);
-            } catch (IllegalAccessException iae) {
-                throw new FacesException(iae);
-            } catch (ClassCastException cce) {
-                throw new FacesException(cce);
-            } catch (Exception otherwise) {
-                if (LOGGER.isLoggable(Level.SEVERE)) {
-                    LOGGER.log(Level.SEVERE,
-                               otherwise.toString(),
-                               otherwise);
-                }
-            }
-        }
-
-        // Step 4. Use javax.faces.NamingContainer as the component type
-        if (null == result) {
-            result = app.createComponent("javax.faces.NamingContainer");
-        }
-
-        assert (null != result);
-
-        result.setRendererType("javax.faces.Composite");
-        Map<String, Object> attrs = result.getAttributes();
-        attrs.put(Resource.COMPONENT_RESOURCE_KEY,
-                componentResource);
-        attrs.put(UIComponent.BEANINFO_KEY,
-                componentMetadata);
-
-        associate.getAnnotationManager().applyComponentAnnotations(context, result);
-        pushDeclaredDefaultValuesToAttributesMap(context, componentMetadata, attrs);
-
-
-        return result;
-    }
-
-
-    /*
-     * This method makes it so that any cc:attribute elements that have
-     * a "default" attribute value have those values pushed into the
-     * composite component attribute map so that programmatic access 
-     * (as opposed to EL access) will find the attribute values.
-     *
-     */
-    private void pushDeclaredDefaultValuesToAttributesMap(FacesContext context,
-            BeanInfo componentMetadata, Map<String, Object> attrs) {
-        PropertyDescriptor[] declaredAttributes = componentMetadata.getPropertyDescriptors();
-        Object defaultValue;
-        String key;
-        for (PropertyDescriptor cur : declaredAttributes) {
-            defaultValue = cur.getValue("default");
-            if (null != defaultValue) {
-                key = cur.getName();
-                if (defaultValue instanceof ValueExpression) {
-                    if (((ValueExpression)defaultValue).isLiteralText()) {
-                        defaultValue = ((ValueExpression)defaultValue).getValue(context.getELContext());
-                    }
-                }
-                // ensure this attribute is not a method-signature.  method-signature
-                // declared default values are handled in retargetMethodExpressions.
-                if (null == cur.getValue("method-signature") || null != cur.getValue("type")) {
-                    attrs.put(key, defaultValue);
-                }
-            }
-        }
-    }
-    
-
-        
-
-    /**
-     * @see javax.faces.application.Application#createComponent(javax.faces.el.ValueBinding, javax.faces.context.FacesContext, String)
-     */
-    @SuppressWarnings("deprecation")
-    public UIComponent createComponent(ValueBinding componentBinding,
-                                       FacesContext context,
-                                       String componentType)
-    throws FacesException {
-
-        Util.notNull("componentBinding", componentBinding);
-        Util.notNull("context", context);
-        Util.notNull("componentType", componentType);
-
-        Object result;
-        boolean createOne = false;
-        try {
-            result = componentBinding.getValue(context);
-            if (result != null) {
-                createOne = (!(result instanceof UIComponent));
-            }
-
-            if (result == null || createOne) {
-                result = this.createComponentApplyAnnotations(context,
-                                                              componentType,
-                                                              null,
-                                                              false);
-                componentBinding.setValue(context, result);
-            }
-        } catch (Exception ex) {
-            throw new FacesException(ex);
-        }
-
-        return (UIComponent) result;
-
-    }
-
-
-    /**
-     * @see javax.faces.application.Application#createComponent(javax.el.ValueExpression, javax.faces.context.FacesContext, String, String)
-     */
-    @Override
-    public UIComponent createComponent(ValueExpression componentExpression,
-                                       FacesContext context,
-                                       String componentType,
-                                       String rendererType) {
-
-        Util.notNull("componentExpression", componentExpression);
-        Util.notNull("context", context);
-        Util.notNull("componentType", componentType);
-
-        return createComponentApplyAnnotations(context,
-                                               componentExpression,
-                                               componentType,
-                                               rendererType,
-                                               true);
-
-    }
-
-
-    /**
-     * @see javax.faces.application.Application#createComponent(javax.faces.context.FacesContext, String, String)
-     */
-    @Override
-    public UIComponent createComponent(FacesContext context,
-                                       String componentType,
-                                       String rendererType) {
-
-        Util.notNull("context", context);
-        Util.notNull("componentType", componentType);
-
-        return createComponentApplyAnnotations(context,
-                                               componentType,
-                                               rendererType,
-                                               true);
-
-    }
-
-
-    /**
-     * @see javax.faces.application.Application#getComponentTypes()
-     */
-    public Iterator<String> getComponentTypes() {
-
-        return componentMap.keySet().iterator();
-
-    }
-
-
-    /**
-     * @see javax.faces.application.Application#addConverter(String, String)
-     */
-    public void addConverter(String converterId, String converterClass) {
-
-        Util.notNull("converterId", converterId);
-        Util.notNull("converterClass", converterClass);
-
-        if (LOGGER.isLoggable(Level.FINE) && converterIdMap.containsKey(converterId)) {
-            LOGGER.log(Level.FINE,
-                       "converterId {0} has already been registered.  Replacing existing converter class type {1} with {2}.",
-                       new Object[] { converterId, converterIdMap.get(converterId), converterClass });
-        }
-
-        converterIdMap.put(converterId, converterClass);
-
-        Class<?>[] types = STANDARD_CONV_ID_TO_TYPE_MAP.get(converterId);
-        if (types != null) {
-            for (Class<?> clazz : types) {
-                // go directly against map to prevent cyclic method calls
-                converterTypeMap.put(clazz, converterClass);
-                addPropertyEditorIfNecessary(clazz);
-            }
-        }
-        
-        if (LOGGER.isLoggable(Level.FINE)) {
-            LOGGER.fine(MessageFormat.format("added converter of type ''{0}'' and class ''{1}''",
-                                             converterId,
-                                             converterClass));
-        }
-    }
-
-
-    /**
-     * @see javax.faces.application.Application#addConverter(Class, String)
-     */
-    public void addConverter(Class<?> targetClass, String converterClass) {
-
-        Util.notNull("targetClass", targetClass);
-        Util.notNull("converterClass", converterClass);
-
-        String converterId = STANDARD_TYPE_TO_CONV_ID_MAP.get(targetClass);
-        if (converterId != null) {
-            addConverter(converterId, converterClass);
-        } else {
-            if (LOGGER.isLoggable(Level.FINE) && converterTypeMap
-                  .containsKey(targetClass)) {
-                LOGGER.log(Level.FINE,
-                           "converter target class {0} has already been registered.  Replacing existing converter class type {1} with {2}.",
-                           new Object[]{
-                                 targetClass.getName(),
-                                 converterTypeMap.get(targetClass),
-                                 converterClass});
-            }
-            converterTypeMap.put(targetClass, converterClass);
-            addPropertyEditorIfNecessary(targetClass);
-        }                
-        
-        if (LOGGER.isLoggable(Level.FINE)) {
-            LOGGER.fine(MessageFormat.format("added converter of class type ''{0}''", converterClass));
-        }
-    }
-    
-    private final String [] STANDARD_BY_TYPE_CONVERTER_CLASSES = {
-      "java.math.BigDecimal",
-      "java.lang.Boolean",
-      "java.lang.Byte",
-      "java.lang.Character",
-      "java.lang.Double",
-      "java.lang.Float",
-      "java.lang.Integer",
-      "java.lang.Long",
-      "java.lang.Short",
-      "java.lang.Enum"
-    };
-    
-    /**
-     * <p>To enable EL Coercion to use JSF Custom converters, this 
-     * method will call <code>PropertyEditorManager.registerEditor()</code>,
-     * passing the <code>ConverterPropertyEditor</code> class for the
-     * <code>targetClass</code> if the target class is not one of the standard
-     * by-type converter target classes.
-     * @param targetClass the target class for which a PropertyEditory may or
-     *  may not be created
-     */
-    
-    private void addPropertyEditorIfNecessary(Class<?> targetClass) {
-        
-        if (!registerPropertyEditors) {
-            return;
-        }
-
-        PropertyEditor editor = PropertyEditorManager.findEditor(targetClass);
-        if (null != editor) {
-            return;
-        }
-        String className = targetClass.getName();
-        // Don't add a PropertyEditor for the standard by-type converters.
-        if (targetClass.isPrimitive()) {
-            return;
-        }
-        for (String standardClass : STANDARD_BY_TYPE_CONVERTER_CLASSES) {
-            if (-1 != standardClass.indexOf(className)) {
-                return;
-            }
-        }
-        Class<?> editorClass = ConverterPropertyEditorFactory.getDefaultInstance().definePropertyEditorClassFor(targetClass);
-        if (editorClass != null) {
-            PropertyEditorManager.registerEditor(targetClass, editorClass);
-        } else {
-        	if (LOGGER.isLoggable(Level.WARNING)) {
-        		LOGGER.warning(MessageFormat.format("definePropertyEditorClassFor({0}) returned null.", targetClass.getName()));
-        	}
-        }
-    }
-
-
-    /**
-     * @see javax.faces.application.Application#createConverter(String)
-     */
-    public Converter createConverter(String converterId) {
-
-        Util.notNull("converterId", converterId);
-        Converter returnVal = (Converter) newThing(converterId, converterIdMap);
-        if (returnVal == null) {
-            Object[] params = {converterId};
-            if (LOGGER.isLoggable(Level.SEVERE)) {
-                LOGGER.log(Level.SEVERE,
-                        "jsf.cannot_instantiate_converter_error", converterId);
-            }
-            throw new FacesException(MessageUtils.getExceptionMessageString(
-                MessageUtils.NAMED_OBJECT_NOT_FOUND_ERROR_MESSAGE_ID, params));
-        }
-        if (LOGGER.isLoggable(Level.FINE)) {
-            LOGGER.fine(MessageFormat.format("created converter of type ''{0}''", converterId));
-        }
-        if (passDefaultTimeZone && returnVal instanceof DateTimeConverter) {
-            ((DateTimeConverter) returnVal).setTimeZone(systemTimeZone);
-        }
-        associate.getAnnotationManager().applyConverterAnnotations(FacesContext.getCurrentInstance(), returnVal);
-        return returnVal;
-    }
-
-
-    /**
-     * @see javax.faces.application.Application#createConverter(Class)
-     */
-    public Converter createConverter(Class<?> targetClass) {
-
-        Util.notNull("targetClass", targetClass);
-        Converter returnVal = (Converter) newConverter(targetClass,
-                                                   converterTypeMap,targetClass);
-        if (returnVal != null) {
-            if (LOGGER.isLoggable(Level.FINE)) {
-                LOGGER.fine(MessageFormat.format("Created converter of type ''{0}''",
-                                                 returnVal.getClass().getName()));
-            }
-            if (passDefaultTimeZone
-                && returnVal instanceof DateTimeConverter) {
-                ((DateTimeConverter) returnVal).setTimeZone(systemTimeZone);
-            }
-            associate.getAnnotationManager().applyConverterAnnotations(FacesContext.getCurrentInstance(), returnVal);
-            return returnVal;
-        } 
-
-        //Search for converters registered to interfaces implemented by
-        //targetClass
-        Class<?>[] interfaces = targetClass.getInterfaces();
-        if (interfaces != null) {
-            for (int i = 0; i < interfaces.length; i++) {
-                returnVal = createConverterBasedOnClass(interfaces[i], targetClass);
-                if (returnVal != null) {
-                   if (LOGGER.isLoggable(Level.FINE)) {
-                       LOGGER.fine(MessageFormat.format("Created converter of type ''{0}''",
-                                                        returnVal.getClass().getName()));
-                    }
-                    if (passDefaultTimeZone
-                        && returnVal instanceof DateTimeConverter) {
-                        ((DateTimeConverter) returnVal)
-                              .setTimeZone(systemTimeZone);
-                    }
-                    associate.getAnnotationManager().applyConverterAnnotations(FacesContext.getCurrentInstance(), returnVal);
-                    return returnVal;
-                }
-            }
-        }
-
-        //Search for converters registered to superclasses of targetClass
-        Class<?> superclass = targetClass.getSuperclass();
-        if (superclass != null) {
-            returnVal = createConverterBasedOnClass(superclass, targetClass);
-            if (returnVal != null) {
-                if (LOGGER.isLoggable(Level.FINE)) {
-                    LOGGER.fine(MessageFormat.format("Created converter of type ''{0}''",
-                                                     returnVal.getClass().getName()));
-                }
-                if (passDefaultTimeZone
-                    && returnVal instanceof DateTimeConverter) {
-                    ((DateTimeConverter) returnVal).setTimeZone(systemTimeZone);
-                }
-                associate.getAnnotationManager().applyConverterAnnotations(FacesContext.getCurrentInstance(), returnVal);
-                return returnVal;
-            }
-        }
-
-        return returnVal;
-    }
-
-    protected Converter createConverterBasedOnClass(Class<?> targetClass,
-            Class<?> baseClass) {
-        
-        Converter returnVal = (Converter) newConverter(targetClass,
-                converterTypeMap, baseClass);
-        if (returnVal != null) {
-            if (LOGGER.isLoggable(Level.FINE)) {
-                LOGGER.fine(MessageFormat.format("Created converter of type ''{0}''",
-                                                 returnVal.getClass().getName()));
-            }
-            return returnVal;
-        } 
-
-        //Search for converters registered to interfaces implemented by
-        //targetClass
-        Class<?>[] interfaces = targetClass.getInterfaces();
-        if (interfaces != null) {
-            for (int i = 0; i < interfaces.length; i++) {
-                returnVal = createConverterBasedOnClass(interfaces[i], null);
-                if (returnVal != null) {
-                   if (LOGGER.isLoggable(Level.FINE)) {
-                       LOGGER.fine(MessageFormat.format("Created converter of type ''{0}''",
-                                                        returnVal.getClass().getName()));
-                    }
-                    return returnVal;
-                }
-            }
-        }
-
-        //Search for converters registered to superclasses of targetClass
-        Class<?> superclass = targetClass.getSuperclass();
-        if (superclass != null) {
-            returnVal = createConverterBasedOnClass(superclass, null);
-            if (returnVal != null) {
-                if (LOGGER.isLoggable(Level.FINE)) {
-                    LOGGER.fine(MessageFormat.format("Created converter of type ''{0}''",
-                                                     returnVal.getClass().getName()));
-                }
-                return returnVal;
-            }
-        } 
-        return returnVal;
-    }
-
-
-    /**
-     * @see javax.faces.application.Application#getConverterIds()
-     */
-    public Iterator<String> getConverterIds() {
-       
-        return converterIdMap.keySet().iterator();
-        
-    }
-
-
-    /**
-     * @see javax.faces.application.Application#getConverterTypes()
-     */
-    public Iterator<Class<?>> getConverterTypes() {
-                
-        return converterTypeMap.keySet().iterator();
-        
-    }
-
-
-    /**
-     * @see javax.faces.application.Application#getSupportedLocales()
-     */
-    public Iterator<Locale> getSupportedLocales() {
-
-            if (null != supportedLocales) {
-                return supportedLocales.iterator();
-            } else {
-                return Collections.<Locale>emptyList().iterator();
-            }
-
-    }
-
-
-    /**
-     * @see javax.faces.application.Application#setSupportedLocales(java.util.Collection)
-     */
-    public synchronized void setSupportedLocales(Collection<Locale> newLocales) {
-
-        Util.notNull("newLocales", newLocales);
-
-        supportedLocales = new ArrayList<Locale>(newLocales);
-
-        if (LOGGER.isLoggable(Level.FINE)) {
-            LOGGER.log(Level.FINE, MessageFormat.format("set Supported Locales ''{0}''",
-                                                        supportedLocales.toString()));
-        }
-
-    }
-
-
-    /**
-     * @see javax.faces.application.Application#getDefaultLocale()
-     */
-    public Locale getDefaultLocale() {
-        return defaultLocale;
-    }
-
-
-    /**
-     * @see javax.faces.application.Application#setDefaultLocale(java.util.Locale)
-     */
-    public synchronized void setDefaultLocale(Locale locale) {
-
-        Util.notNull("locale", locale);
-
-        defaultLocale = locale;
-
-        if (LOGGER.isLoggable(Level.FINE)) {
-            LOGGER.log(Level.FINE, (MessageFormat.format("set defaultLocale ''{0}''",
-                                                         defaultLocale.getClass().getName())));
-        }
-    }
-
-
-    protected String defaultRenderKitId = null;
-
-
-    /**
-     * @see javax.faces.application.Application#getDefaultRenderKitId()
-     */
-    public String getDefaultRenderKitId() {
-        return defaultRenderKitId;
-    }
-
-
-    /**
-     * @see javax.faces.application.Application#setDefaultRenderKitId(String)
-     */
-    public void setDefaultRenderKitId(String renderKitId) {
-        defaultRenderKitId = renderKitId;
-    }
-
-
-    /**
-     * @see javax.faces.application.Application#addValidator(String, String)
-     */
-    public void addValidator(String validatorId, String validatorClass) {
-
-        Util.notNull("validatorId", validatorId);
-        Util.notNull("validatorClass", validatorClass);
-
-        if (LOGGER.isLoggable(Level.FINE) && validatorMap.containsKey(validatorId)) {
-            LOGGER.log(Level.FINE,
-                       "validatorId {0} has already been registered.  Replacing existing validator class type {1} with {2}.",
-                       new Object[] { validatorId, validatorMap.get(validatorId), validatorClass });    
-        }
-
-        validatorMap.put(validatorId, validatorClass);
-        
-        if (LOGGER.isLoggable(Level.FINE)) {
-            LOGGER.fine(MessageFormat.format("added validator of type ''{0}'' class ''{1}''",
-                                             validatorId,
-                                             validatorClass));
-        }
-
-    }
-
-
-    /**
-     * @see javax.faces.application.Application#createValidator(String)
-     */
-    public Validator createValidator(String validatorId) throws FacesException {
-
-        Util.notNull("validatorId", validatorId);
-        Validator returnVal = (Validator) newThing(validatorId, validatorMap);
-        if (returnVal == null) {
-            Object[] params = {validatorId};
-            if (LOGGER.isLoggable(Level.SEVERE)) {
-                LOGGER.log(Level.SEVERE,
-                        "jsf.cannot_instantiate_validator_error", params);
-            }
-            throw new FacesException(MessageUtils.getExceptionMessageString(
-                MessageUtils.NAMED_OBJECT_NOT_FOUND_ERROR_MESSAGE_ID, params));
-        }
-        if (LOGGER.isLoggable(Level.FINE)) {
-            LOGGER.fine(MessageFormat.format("created validator of type ''{0}''",
-                                             validatorId));
-        }
-        associate.getAnnotationManager().applyValidatorAnnotations(FacesContext.getCurrentInstance(), returnVal);
-        return returnVal;
-    }
-
-
-    /**
-     * @see javax.faces.application.Application#getValidatorIds()
-     */
-    public Iterator<String> getValidatorIds() {        
-        
-        return validatorMap.keySet().iterator();
-               
-    }
-
-    /**
-     * @see javax.faces.application.Application#addDefaultValidatorId(String)
-     */
-    public synchronized void addDefaultValidatorId(String validatorId) {
-
-        Util.notNull("validatorId", validatorId);
-        defaultValidatorInfo = null;
-        defaultValidatorIds.add(validatorId);
-
-    }
-
-    /**
-     * @see javax.faces.application.Application#getDefaultValidatorInfo() 
-     */
-    public Map<String,String> getDefaultValidatorInfo() {
-
-        if (defaultValidatorInfo == null) {
-            synchronized (this) {
-                if (defaultValidatorInfo == null) {
-                    defaultValidatorInfo = new LinkedHashMap<String, String>();
-                    if (!defaultValidatorIds.isEmpty()) {
-                        for (String id : defaultValidatorIds) {
-                            String validatorClass;
-                            Object result = validatorMap.get(id);
-                            if (null != result) {
-                                if (result instanceof Class) {
-                                    validatorClass = ((Class) result).getName();
-                                } else {
-                                    validatorClass = result.toString();
-                                }
-                                defaultValidatorInfo.put(id, validatorClass);
-                            }
-                        }
-
-                    }
-                }
-            }
-            defaultValidatorInfo =
-                  Collections.unmodifiableMap(defaultValidatorInfo);
-        }
-
-        return defaultValidatorInfo;
-
-    }
-
-    /**
-     * @see javax.faces.application.Application#setMessageBundle(String)
-     */
-    public synchronized void setMessageBundle(String messageBundle) {
-        Util.notNull("messageBundle", messageBundle);
-
-        this.messageBundle = messageBundle;
-
-        if (LOGGER.isLoggable(Level.FINE)) {
-            LOGGER.log(Level.FINE, MessageFormat.format("set messageBundle ''{0}''",
-                                                        messageBundle));
-        }
-    }
-
-
-    /**
-     * @see javax.faces.application.Application#getMessageBundle()
-     */
-    public String getMessageBundle() {
-        return messageBundle;
-    }
-    
-    
-    /**
-     * <p>PRECONDITIONS: the values in the Map are either Strings
-     * representing fully qualified java class names, or java.lang.Class
-     * instances.</p>
-     * <p>ALGORITHM: Look in the argument map for a value for the argument
-     * key.  If found, if the value is instanceof String, assume the String
-     * specifies a fully qualified java class name and obtain the
-     * java.lang.Class instance for that String using Util.loadClass().
-     * Replace the String instance in the argument map with the Class
-     * instance.  If the value is instanceof Class, proceed.  Assert that the
-     * value is either instanceof java.lang.Class or java.lang.String.</p>
-     * <p>Now that you have a java.lang.class, call its newInstance and
-     * return it as the result of this method.</p>
-     *
-     * @param key Used to look up the value in the <code>Map</code>.
-     * @param map The <code>Map</code> that will be searched.
-     * @return The new object instance.
-     */
-    protected Object newThing(String key, Map<String, Object> map) {
-        assert (key != null && map != null);
-
-        Object result;
-        Class<?> clazz;
-        Object value;
-
-        value = map.get(key);
-        if (value == null) {
-            return null;
-        }
-        assert (value instanceof String || value instanceof Class);
-        if (value instanceof String) {
-             String cValue = (String) value;
-             try {
-               clazz = Util.loadClass(cValue, value);
-                if (!associate.isDevModeEnabled()) {
-                    map.put(key, clazz);
-                }
-                assert (clazz != null);
-             } catch (Exception e) {
-                 throw new FacesException(e.getMessage(), e);
-             }
-        } else {
-            clazz = (Class) value;
-        }
-        
-        try {
-            result = clazz.newInstance();
-        } catch (Throwable t) {
-            Throwable previousT;
-            do {
-                previousT = t;
-                if (LOGGER.isLoggable(Level.SEVERE)) {
-                	LOGGER.log(Level.SEVERE, "Unable to load class: ", t);
-                }
-            } while (null != (t = t.getCause()));
-            t = previousT;
-            
-            throw new FacesException((MessageUtils.getExceptionMessageString(
-                  MessageUtils.CANT_INSTANTIATE_CLASS_ERROR_MESSAGE_ID,
-                  clazz.getName())), t);
-        }
-        return result;
-    }
-    
-    /**
-     * <p>The same as newThing except that a single argument constructor
-     * that accepts a Class is looked for before calling the no-arg version.</p>
-     *
-     * <p>PRECONDITIONS: the values in the Map are either Strings
-     * representing fully qualified java class names, or java.lang.Class
-     * instances.</p>
-     * <p>ALGORITHM: Look in the argument map for a value for the argument
-     * key.  If found, if the value is instanceof String, assume the String
-     * specifies a fully qualified java class name and obtain the
-     * java.lang.Class instance for that String using Util.loadClass().
-     * Replace the String instance in the argument map with the Class
-     * instance.  If the value is instanceof Class, proceed.  Assert that the
-     * value is either instanceof java.lang.Class or java.lang.String.</p>
-     * <p>Now that you have a java.lang.class, call its newInstance and
-     * return it as the result of this method.</p>
-     *
-     * @param key Used to look up the value in the <code>Map</code>.
-     * @param map The <code>Map</code> that will be searched.
-     * @param targetClass the target class for the single argument ctor
-     * @return The new object instance.
-     */
-    protected Object newConverter(Class<?> key, Map<Class<?>,Object> map, Class<?> targetClass) {
-        assert (key != null && map != null);
-
-        Object result = null;
-        Class<?> clazz;
-        Object value;
-
-        value = map.get(key);
-        if (value == null) {
-            return null;
-        }
-        assert (value instanceof String || value instanceof Class);
-        if (value instanceof String) {
-            String cValue = (String) value;
-             try {
-                clazz = Util.loadClass(cValue, value);
-                if (!associate.isDevModeEnabled()) {
-                    map.put(key, clazz);
-                }
-                assert (clazz != null);
-             } catch (Exception e) {
-                 throw new FacesException(e.getMessage(), e);
-             }
-        } else {
-            clazz = (Class) value;
-        }
-        
-        Constructor ctor = 
-              ReflectionUtils.lookupConstructor(clazz, Class.class);
-        Throwable cause = null;
-        if (ctor != null) {
-            try {
-                result = ctor.newInstance(targetClass);
-            } catch (Exception e) {
-                cause = e;
-            }
-        } else {
-            try {
-                result = clazz.newInstance();
-            } catch (Exception e) {
-                cause = e;
-            }
-        }       
-        
-        if (null != cause) {           
-            throw new FacesException((MessageUtils.getExceptionMessageString(
-                    MessageUtils.CANT_INSTANTIATE_CLASS_ERROR_MESSAGE_ID, 
-                    clazz.getName())), cause);
-            
-        }
-        return result;
-    }
-
-
-    // --------------------------------------------------------- Private Methods
-
-    public static final String THIS_LIBRARY = 
-            "com.sun.faces.composite.this.library";
-
-    private UIComponent createComponentFromScriptResource(FacesContext context,
-                                                          Resource scriptComponentResource,
-                                                          Resource componentResource) {
-
-        UIComponent result = null;
-
-        String className = scriptComponentResource.getResourceName();
-        int lastDot = className.lastIndexOf('.');
-        className = className.substring(0, lastDot);
-
-        try {
-
-            Class<?> componentClass = (Class<?>) componentMap.get(className);
-            if (componentClass == null) {
-                componentClass = Util.loadClass(className, this);
-            }
-            if (!associate.isDevModeEnabled()) {
-                componentMap.put(className, componentClass);
-            }
-            result = (UIComponent) componentClass.newInstance();
-        } catch (IllegalAccessException ex) {
-        	if (LOGGER.isLoggable(Level.SEVERE)) {
-        		LOGGER.log(Level.SEVERE, null, ex);
-        	}
-        } catch (InstantiationException ex) {
-        	if (LOGGER.isLoggable(Level.SEVERE)) {
-        		LOGGER.log(Level.SEVERE, null, ex);
-        	}
-        } catch (ClassNotFoundException ex) {
-        	if (LOGGER.isLoggable(Level.SEVERE)) {
-        		LOGGER.log(Level.SEVERE, null, ex);
-        	}
-        }
-
-        if (result != null) {
-            // Make sure the resource is there for the annotation processor.
-            result.getAttributes().put(Resource.COMPONENT_RESOURCE_KEY, 
-                componentResource);
-            // In case there are any "this" references, 
-            // make sure they can be resolved.
-            context.getAttributes().put(THIS_LIBRARY,
-                    componentResource.getLibraryName());
-            try {
-                associate.getAnnotationManager()
-                        .applyComponentAnnotations(context, result);
-            }
-            finally {
-                context.getAttributes().remove(THIS_LIBRARY);
-            }
-        }
-
-        return result;
-        
-    }
-
-
-    /**
-     * Leveraged by {@link Application#createComponent(String)} and {@link Application#createComponent(javax.faces.context.FacesContext, String, String)}
-     * This method will apply any component and render annotations that may be present.
-     */
-    private UIComponent createComponentApplyAnnotations(FacesContext ctx,
-                                                        String componentType,
-                                                        String rendererType,
-                                                        boolean applyAnnotations) {
-
-        UIComponent c;
-        try {
-            c = (UIComponent) newThing(componentType, componentMap);
-        } catch (Exception ex) {
-            if (LOGGER.isLoggable(Level.SEVERE)) {
-                LOGGER.log(Level.SEVERE,
-                           "jsf.cannot_instantiate_component_error",
-                           componentType);
-            }
-            throw new FacesException(ex);
-        }
-        if (c == null) {
-            Object[] params = {componentType};
-            if (LOGGER.isLoggable(Level.SEVERE)) {
-                    LOGGER.log(Level.SEVERE,
-                               "jsf.cannot_instantiate_component_error",
-                               params);
-            }
-            throw new FacesException(MessageUtils.getExceptionMessageString(
-                    MessageUtils.NAMED_OBJECT_NOT_FOUND_ERROR_MESSAGE_ID, params));
-        }
-
-        if (LOGGER.isLoggable(Level.FINE)) {
-            LOGGER.log(Level.FINE, MessageFormat.format("Created component with component type of ''{0}''",
-                                                        componentType));
-        }
-
-        if (applyAnnotations) {
-            applyAnnotations(ctx, rendererType, c);
-        }
-        return c;
-
-    }
-
-
-    /**
-     * Leveraged by {@link Application#createComponent(javax.el.ValueExpression, javax.faces.context.FacesContext, String)} and
-     * {@link Application#createComponent(javax.el.ValueExpression, javax.faces.context.FacesContext, String, String)}.
-     * This method will apply any component and render annotations that may be present.
-     */
-    private UIComponent createComponentApplyAnnotations(FacesContext ctx,
-                                                        ValueExpression componentExpression,
-                                                        String componentType,
-                                                        String rendererType,
-                                                        boolean applyAnnotations) {
-
-        UIComponent c;
-
-        try {
-            c = (UIComponent) componentExpression
-                  .getValue(ctx.getELContext());
-
-            if (c == null) {
-                c = this.createComponentApplyAnnotations(ctx,
-                                                         componentType,
-                                                         rendererType,
-                                                         applyAnnotations);
-                componentExpression.setValue((ctx.getELContext()), c);
-            }
-        } catch (Exception ex) {
-            throw new FacesException(ex);
-        }
-
-        return c;
-
-    }
-
-
-    /**
-     * Process any annotations associated with this component/renderer.
-     */
-    private void applyAnnotations(FacesContext ctx,
-                                  String rendererType,
-                                  UIComponent c) {
-
-        if (c != null && ctx != null) {
-            associate.getAnnotationManager()
-                  .applyComponentAnnotations(ctx, c);
-            if (rendererType != null) {
-                Renderer r =
-                      ctx.getRenderKit()
-                            .getRenderer(c.getFamily(), rendererType);
-                if (r != null) {
-                    c.setRendererType(rendererType);
-                    associate.getAnnotationManager()
-                          .applyRendererAnnotations(ctx, r, c);
-                } else {
-                    if (LOGGER.isLoggable(Level.FINE)) {
-                        LOGGER.log(Level.FINE,
-                                   "Unable to create Renderer with rendererType {0} for component with component type of {1}",
-                                   new Object[] { rendererType, c.getFamily() });
-                    }
-                }
-            }
-
-        }
-
-    }
-
-
-    /**
-     * @return the SystemEventListeners that should be used for the
-     * provided combination of SystemEvent and source.
-     */
-    private Set<SystemEventListener> getListeners(Class<? extends SystemEvent> systemEvent,
-                                                  Class<?> sourceClass) {
-
-        Set<SystemEventListener> listeners = null;
-        EventInfo sourceInfo =
-              systemEventHelper.getEventInfo(systemEvent, sourceClass);
-        if (sourceInfo != null) {
-            listeners = sourceInfo.getListeners();
-        }
-
-        return listeners;
-
-    }
-
-    private SystemEvent invokeViewListenersFor(FacesContext ctx,
-                                               Class<? extends SystemEvent> systemEventClass,
-                                               SystemEvent event,
-                                               Object source) {
-        SystemEvent result = event;
-
-        Map<Object, Object> ctxMap = ctx.getAttributes();
-        if (ctxMap.containsKey(IS_PROCESSING_LISTENERS_KEY)) {
-            return result;
-        }
-        ctxMap.put(IS_PROCESSING_LISTENERS_KEY, Boolean.TRUE);
-
-
-        UIViewRoot root = ctx.getViewRoot();
-        if (root != null) {
-            EventInfo rootEventInfo =
-                  systemEventHelper.getEventInfo(systemEventClass,
-                                                 UIViewRoot.class);
-            // process view listeners
-            result = processListenersAccountingForAdds(root.getViewListenersForEventClass(systemEventClass),
-                                                       event,
-                                                       source,
-                                                       rootEventInfo);
-        }
-        ctxMap.remove(IS_PROCESSING_LISTENERS_KEY);
-        return result;
-
-    }
-
-    /**
-     * @return process any listeners for the specified SystemEventListenerHolder
-     *  and return any SystemEvent that may have been created as a side-effect
-     *  of processing the listeners.
-     */
-    private SystemEvent invokeComponentListenersFor(Class<? extends SystemEvent> systemEventClass,
-                                                    Object source) {
-
-        if (source instanceof SystemEventListenerHolder) {
-            EventInfo eventInfo =
-                  compSysEventHelper.getEventInfo(systemEventClass,
-                                                  source.getClass());
-            return processListeners(((SystemEventListenerHolder) source).getListenersForEventClass(systemEventClass),
-                                    null,
-                                    source,
-                                    eventInfo);
-        }
-        return null;
-
-    }
-
-    /**
-     * Traverse the <code>List</code> of listeners and invoke any that are relevent
-     * for the specified source.
-     *
-     * @throws javax.faces.event.AbortProcessingException propagated from the listener invocation
-     */
-    private SystemEvent invokeListenersFor(Class<? extends SystemEvent> systemEventClass,
-                                           SystemEvent event,
-                                           Object source,
-                                           Class<?> sourceBaseType,
-                                           boolean useSourceLookup)
-    throws AbortProcessingException {
-
-        EventInfo eventInfo = systemEventHelper.getEventInfo(systemEventClass,
-                                                             source,
-                                                             sourceBaseType,
-                                                             useSourceLookup);
-        if (eventInfo != null) {
-            Set<SystemEventListener> listeners = eventInfo.getListeners();
-            event = processListeners(listeners, event, source, eventInfo);
-        }
-
-        return event;
-
-    }
-
-    /**
-     * Iterate through and invoke the listeners.  If the passed event was
-     * <code>null</code>, create the event, and return it.
-     */
-    private SystemEvent processListeners(Collection<SystemEventListener> listeners,
-                                         SystemEvent event,
-                                         Object source,
-                                         EventInfo eventInfo) {
-
-          if (listeners != null && !listeners.isEmpty()) {
-            for (SystemEventListener curListener : listeners) {
-                if (curListener != null && curListener.isListenerForSource(source)) {
-                    if (event == null) {
-                        event = eventInfo.createSystemEvent(source);
-                    }
-                    assert (event != null);
-                    if (event.isAppropriateListener(curListener)) {
-                        event.processListener(curListener);
-                    }
-                }
-            }
-        }
-
-        return event;
-
-    }
-
-    private SystemEvent processListenersAccountingForAdds(List<SystemEventListener> listeners,
-                                         SystemEvent event,
-                                         Object source,
-                                         EventInfo eventInfo) {
-
-          if (listeners != null && !listeners.isEmpty()) {
-
-              // copy listeners
-              // go thru copy completely
-              // compare copy to original
-              // if original differs from copy, make a new copy.
-              // The new copy consists of the original list - processed
-
-              SystemEventListener listenersCopy[] =
-                      new SystemEventListener[listeners.size()];
-              int i = 0;
-              for (i = 0; i < listenersCopy.length; i++) {
-                  listenersCopy[i] = listeners.get(i);
-              }
-
-              Map<SystemEventListener, Boolean> processedListeners =
-                      new HashMap<SystemEventListener, Boolean>(listeners.size());
-              boolean processedSomeEvents = false,
-                      originalDiffersFromCopy = false;
-
-              do {
-                  i = 0;
-                  originalDiffersFromCopy = false;
-                  if (0 < listenersCopy.length) {
-                      for (i = 0; i < listenersCopy.length; i++) {
-                          SystemEventListener curListener = listenersCopy[i];
-                          if (curListener != null && curListener.isListenerForSource(source)) {
-                              if (event == null) {
-                                  event = eventInfo.createSystemEvent(source);
-                              }
-                              assert (event != null);
-                              if (!processedListeners.containsKey(curListener)
-                                       && event.isAppropriateListener(curListener)) {
-                                  processedSomeEvents = true;
-                                  event.processListener(curListener);
-                                  processedListeners.put(curListener, Boolean.TRUE);
-                              }
-                          }
-                      }
-                      if (originalDiffersFromCopy(listeners, listenersCopy)) {
-                          originalDiffersFromCopy = true;
-                          listenersCopy = copyListWithExclusions(listeners, processedListeners);
-                      }
-                  }
-              } while (originalDiffersFromCopy && processedSomeEvents);
-        }
-
-        return event;
-
-    }
-
-    private boolean originalDiffersFromCopy(Collection<SystemEventListener> original,
-            SystemEventListener copy[]) {
-        boolean foundDifference = false;
-        int i = 0, originalLen = original.size(), copyLen = copy.length;
-
-        if (originalLen == copyLen) {
-            SystemEventListener originalItem, copyItem;
-            Iterator<SystemEventListener> iter = original.iterator();
-            while (iter.hasNext() && !foundDifference) {
-                originalItem = iter.next();
-                copyItem = copy[i++];
-                foundDifference = originalItem != copyItem;
-            }
-        } else {
-            foundDifference = true;
-        }
-
-        return foundDifference;
-    }
-
-    private SystemEventListener [] copyListWithExclusions(Collection<SystemEventListener> original,
-            Map<SystemEventListener, Boolean> excludes) {
-        SystemEventListener [] result = null,
-                temp = new SystemEventListener[original.size()];
-        int i = 0;
-        for (SystemEventListener cur : original) {
-            if (!excludes.containsKey(cur)) {
-                temp[i++] = cur;
-            }
-        }
-        result = new SystemEventListener[i];
-        System.arraycopy(temp, 0, result, 0, i);
-        temp = null;
-
-        return result;
-    }
-    
-	private boolean needsProcessing(FacesContext context, Class<? extends SystemEvent> systemEventClass) {
-		return context.isProcessingEvents() || ExceptionQueuedEvent.class.isAssignableFrom(systemEventClass);
-	}
-
-
-    // ----------------------------------------------------------- Inner Classes
-
-
-    /**
-     * Utility class for dealing with application events.
-     */
-    private static class SystemEventHelper {
-
-        private final Cache<Class<? extends SystemEvent>, SystemEventInfo> systemEventInfoCache;
-
-
-        // -------------------------------------------------------- Constructors
-
-
-        public SystemEventHelper() {
-
-            systemEventInfoCache =
-                  new Cache<Class<? extends SystemEvent>, SystemEventInfo>(
-                        new Factory<Class<? extends SystemEvent>, SystemEventInfo>() {
-                            public SystemEventInfo newInstance(final Class<? extends SystemEvent> arg)
-                                  throws InterruptedException {
-                                return new SystemEventInfo(arg);
-                            }
-                        }
-                  );
-
-        }
-
-
-        // ------------------------------------------------------ Public Methods
-
-
-        public EventInfo getEventInfo(Class<? extends SystemEvent> systemEventClass,
-                                      Class<?> sourceClass) {
-
-            EventInfo info = null;
-            SystemEventInfo systemEventInfo = systemEventInfoCache.get(systemEventClass);
-            if (systemEventInfo != null) {
-                info = systemEventInfo.getEventInfo(sourceClass);
-            }
-
-            return info;
-
-        }
-
-
-        public EventInfo getEventInfo(Class<? extends SystemEvent> systemEventClass,
-                                      Object source,
-                                      Class<?> sourceBaseType,
-                                      boolean useSourceForLookup) {
-
-            Class<?> sourceClass =
-                  ((useSourceForLookup) ?
-                       ((sourceBaseType != null)
-                                          ? sourceBaseType
-                                          : source.getClass())
-                                        : Void.class);
-            return getEventInfo(systemEventClass, sourceClass);
-
-        }
-
-
-    } // END SystemEventHelper
-
-
-    /**
-     * Utility class for dealing with {@link javax.faces.component.UIComponent} events.
-     */
-    private static class ComponentSystemEventHelper {
-
-        private Cache<Class<?>,Cache<Class<? extends SystemEvent>,EventInfo>> sourceCache;
-
-
-        // -------------------------------------------------------- Constructors
-
-
-        public ComponentSystemEventHelper() {
-
-            // Initialize the 'sources' cache for, ahem, readability...
-            // ~generics++
-            Factory<Class<?>, Cache<Class<? extends SystemEvent>, EventInfo>> eventCacheFactory =
-                  new Factory<Class<?>, Cache<Class<? extends SystemEvent>, EventInfo>>() {
-                      public Cache<Class<? extends SystemEvent>, EventInfo> newInstance(
-                            final Class<?> sourceClass)
-                            throws InterruptedException {
-                          Factory<Class<? extends SystemEvent>, EventInfo> eventInfoFactory =
-                                new Factory<Class<? extends SystemEvent>, EventInfo>() {
-                                    public EventInfo newInstance(final Class<? extends SystemEvent> systemEventClass)
-                                          throws InterruptedException {
-                                        return new EventInfo(systemEventClass, sourceClass);
-                                    }
-                                };
-                          return new Cache<Class<? extends SystemEvent>, EventInfo>(eventInfoFactory);
-                      }
-                  };
-            sourceCache = new Cache<Class<?>,Cache<Class<? extends SystemEvent>,EventInfo>>(eventCacheFactory);
-
-        }
-
-        // ------------------------------------------------------ Public Methods
-
-
-        public EventInfo getEventInfo(Class<? extends SystemEvent> systemEvent,
-                                      Class<?> sourceClass) {
-
-            Cache<Class<? extends SystemEvent>, EventInfo> eventsCache =
-                  sourceCache.get(sourceClass);
-            return eventsCache.get(systemEvent);
-
-        }
-
-    } // END ComponentSystemEventHelper
-
-
-    /**
-     * Simple wrapper class for application level SystemEvents.  It provides the
-     * structure to map a single SystemEvent to multiple sources which are
-     * represented by <code>SourceInfo</code> instances.
-     */
-    private static class SystemEventInfo {
-
-        private Cache<Class<?>,EventInfo> cache = new Cache<Class<?>,EventInfo>(
-              new Factory<Class<?>, EventInfo>() {
-                  public EventInfo newInstance(Class<?> arg)
-                        throws InterruptedException {
-                      return new EventInfo(systemEvent, arg);
-                  }
-              }
-        );
-        private Class<? extends SystemEvent> systemEvent;
-
-
-        // -------------------------------------------------------- Constructors
-
-
-        private SystemEventInfo(Class<? extends SystemEvent> systemEvent) {
-
-            this.systemEvent = systemEvent;
-
-        }
-
-
-        // ------------------------------------------------------ Public Methods
-
-
-        public EventInfo getEventInfo(Class<?> source) {
-
-            Class<?> sourceClass = ((source == null) ? Void.class : source);
-            return cache.get(sourceClass);
-
-        }
-
-    } // END SystemEventInfo
-
-
-    /**
-     * Represent a logical association between a SystemEvent and a Source.
-     * This call will contain the Listeners specific to this association
-     * as well as provide a method to construct new SystemEvents as required.
-     */
-    private static class EventInfo {
-        private Class<? extends SystemEvent> systemEvent;
-        private Class<?> sourceClass;
-        private Set<SystemEventListener> listeners;
-        private Constructor eventConstructor;
-        private Map<Class<?>,Constructor> constructorMap;
-
-        // -------------------------------------------------------- Constructors
-
-
-        public EventInfo(Class<? extends SystemEvent> systemEvent,
-                         Class<?> sourceClass) {
-
-            this.systemEvent = systemEvent;
-            this.sourceClass = sourceClass;
-            this.listeners = new CopyOnWriteArraySet<SystemEventListener>();
-            this.constructorMap = new HashMap<Class<?>,Constructor>();
-            if (!sourceClass.equals(Void.class)) {
-                eventConstructor = getEventConstructor(sourceClass);
-            }
-
-        }
-
-        // ------------------------------------------------------ Public Methods
-
-
-        public Set<SystemEventListener> getListeners() {
-
-            return listeners;
-
-        }
-
-
-        public SystemEvent createSystemEvent(Object source) {
-
-            Constructor toInvoke = getCachedConstructor(source.getClass());
-            if (toInvoke != null) {
-                try {
-                    return (SystemEvent) toInvoke.newInstance(source);
-                } catch (Exception e) {
-                    throw new FacesException(e);
-                }
-            }
-            return null;
-
-        }
-
-
-        // ----------------------------------------------------- Private Methods
-
-
-        private Constructor getCachedConstructor(Class<?> source) {
-
-            if (eventConstructor != null) {
-                return eventConstructor;
-            } else {
-                Constructor c = constructorMap.get(source);
-                if (c == null) {
-                    c = getEventConstructor(source);
-                    if (c != null) {
-                        constructorMap.put(source, c);
-                    }
-                }
-                return c;
-            }
-
-        }
-
-
-        private Constructor getEventConstructor(Class<?> source) {
-
-            Constructor ctor = null;
-            try {
-                return systemEvent.getDeclaredConstructor(source);
-            } catch (NoSuchMethodException ignored) {
-                Constructor[] ctors = systemEvent.getConstructors();
-                if (ctors != null) {
-                    for (Constructor c : ctors) {
-                        Class<?>[] params = c.getParameterTypes();
-                        if (params.length != 1) {
-                            continue;
-                        }
-                        if (params[0].isAssignableFrom(source)) {
-                            return c;
-                        }
-                    }
-                }
-                if (eventConstructor == null) {
-                    if (LOGGER.isLoggable(Level.FINE)) {
-                        LOGGER.log(Level.FINE,
-                                   "Unable to find Constructor within {0} that accepts {1} instances.",
-                                   new Object[] { systemEvent.getName(), sourceClass.getName() });
-                    }
-                }
-            }
-            return ctor;
-
-        }
-
-    } // END SourceInfo
-
-
-    private static final class ComponentResourceClassNotFound { }
-
-}
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.application;
+
+import com.sun.faces.spi.InjectionProviderException;
+
+import java.beans.*;
+import java.lang.reflect.Constructor;
+import java.text.MessageFormat;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Locale;
+import java.util.Map;
+import java.util.ResourceBundle;
+import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.CopyOnWriteArraySet;
+import java.util.concurrent.CopyOnWriteArrayList;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import javax.el.CompositeELResolver;
+import javax.el.ELContextListener;
+import javax.el.ELException;
+import javax.el.ELResolver;
+import javax.el.ExpressionFactory;
+import javax.el.MethodExpression;
+import javax.faces.FacesException;
+import javax.faces.application.Application;
+import javax.faces.application.NavigationHandler;
+import javax.faces.application.ResourceHandler;
+import javax.faces.application.StateManager;
+import javax.faces.application.ViewHandler;
+import javax.faces.application.ProjectStage;
+import javax.faces.component.UIComponent;
+import javax.faces.component.UIViewRoot;
+import javax.faces.component.behavior.Behavior;
+import javax.faces.context.FacesContext;
+import javax.faces.convert.Converter;
+import javax.faces.convert.DateTimeConverter;
+import javax.faces.el.MethodBinding;
+import javax.faces.el.PropertyResolver;
+import javax.faces.el.ReferenceSyntaxException;
+import javax.faces.el.ValueBinding;
+import javax.faces.el.VariableResolver;
+import javax.faces.event.AbortProcessingException;
+import javax.faces.event.ActionListener;
+import javax.faces.flow.FlowHandler;
+import javax.faces.validator.Validator;
+
+import com.sun.faces.RIConstants;
+import com.sun.faces.config.WebConfiguration;
+import com.sun.faces.config.WebConfiguration.WebContextInitParameter;
+import static com.sun.faces.config.WebConfiguration.BooleanWebContextInitParameter.DateTimeConverterUsesSystemTimezone;
+import static com.sun.faces.config.WebConfiguration.BooleanWebContextInitParameter.RegisterConverterPropertyEditors;
+import com.sun.faces.el.ELUtils;
+import com.sun.faces.el.FacesCompositeELResolver;
+import com.sun.faces.el.PropertyResolverImpl;
+import com.sun.faces.el.VariableResolverImpl;
+import com.sun.faces.spi.InjectionProvider;
+import com.sun.faces.util.Cache;
+import com.sun.faces.util.Cache.Factory;
+import com.sun.faces.util.FacesLogger;
+import com.sun.faces.util.MessageUtils;
+import com.sun.faces.util.ReflectionUtils;
+import com.sun.faces.util.Util;
+import java.util.HashSet;
+
+import java.util.LinkedHashSet;
+
+import javax.faces.event.ExceptionQueuedEvent;
+import javax.faces.event.PostAddToViewEvent;
+import javax.faces.event.SystemEvent;
+import javax.faces.event.SystemEventListener;
+import javax.faces.event.SystemEventListenerHolder;
+import javax.faces.event.ExceptionQueuedEventContext;
+
+import java.util.List;
+import java.util.TimeZone;
+import java.util.LinkedHashMap;
+
+import javax.el.ValueExpression;
+import javax.faces.application.Resource;
+import javax.faces.render.RenderKit;
+import javax.faces.render.Renderer;
+import javax.faces.view.ViewDeclarationLanguage;
+
+
+/**
+ * <p><strong>Application</strong> represents a per-web-application
+ * singleton object where applications based on JavaServer Faces (or
+ * implementations wishing to provide extended functionality) can
+ * register application-wide singletons that provide functionality
+ * required by JavaServer Faces.
+ */
+public class ApplicationImpl extends Application {
+
+    // Log instance for this class
+    private static final Logger LOGGER = FacesLogger.APPLICATION.getLogger();
+
+    private static final ELContextListener[] EMPTY_EL_CTX_LIST_ARRAY = { };
+
+    private static final Map<String,Class<?>[]> STANDARD_CONV_ID_TO_TYPE_MAP =
+         new HashMap<String,Class<?>[]>(8, 1.0f);
+    private static final Map<Class<?>,String> STANDARD_TYPE_TO_CONV_ID_MAP =
+         new HashMap<Class<?>,String>(16, 1.0f);
+
+    static {
+        STANDARD_CONV_ID_TO_TYPE_MAP.put("javax.faces.Byte", new Class[] { Byte.TYPE, Byte.class});
+        STANDARD_CONV_ID_TO_TYPE_MAP.put("javax.faces.Boolean", new Class[] { Boolean.TYPE, Boolean.class});
+        STANDARD_CONV_ID_TO_TYPE_MAP.put("javax.faces.Character", new Class[] { Character.TYPE, Character.class});
+        STANDARD_CONV_ID_TO_TYPE_MAP.put("javax.faces.Short", new Class[] { Short.TYPE, Short.class });
+        STANDARD_CONV_ID_TO_TYPE_MAP.put("javax.faces.Integer", new Class[] { Integer.TYPE, Integer.class });
+        STANDARD_CONV_ID_TO_TYPE_MAP.put("javax.faces.Long", new Class[] { Long.TYPE, Long.class });
+        STANDARD_CONV_ID_TO_TYPE_MAP.put("javax.faces.Float", new Class[] { Float.TYPE, Float.class });
+        STANDARD_CONV_ID_TO_TYPE_MAP.put("javax.faces.Double", new Class[] { Double.TYPE, Double.class });
+        for (Map.Entry<String,Class<?>[]> entry : STANDARD_CONV_ID_TO_TYPE_MAP.entrySet()) {
+            Class<?>[] types = entry.getValue();
+            String key = entry.getKey();
+            for (Class<?> clazz : types) {
+                STANDARD_TYPE_TO_CONV_ID_MAP.put(clazz, key);
+            }
+        }
+    }
+
+    // Relationship Instance Variables
+
+    private ApplicationAssociate associate = null;
+    private ProjectStage projectStage;
+
+    private volatile ActionListener actionListener = null;
+    private volatile NavigationHandler navigationHandler = null;
+    private volatile PropertyResolverImpl propertyResolver = null;
+    volatile VariableResolverImpl variableResolver = null;
+    private volatile ViewHandler viewHandler = null;
+    private volatile ResourceHandler resourceHandler;
+    private volatile StateManager stateManager = null;
+    private volatile ArrayList<Locale> supportedLocales = null;
+    private volatile Locale defaultLocale = null;
+    //
+    // This map stores reference expression | value binding instance
+    // mappings.
+    //
+    
+    //
+    // These four maps store store "identifier" | "class name"
+    // mappings.
+    //
+    private ApplicationInstanceFactoryMetadataMap<String,Object> behaviorMap = null;
+    private ApplicationInstanceFactoryMetadataMap<String,Object> componentMap = null;
+    private ApplicationInstanceFactoryMetadataMap<String,Object> converterIdMap = null;
+    private ApplicationInstanceFactoryMetadataMap<String,Object> validatorMap = null;
+
+    private Map<Class<?>,Object> converterTypeMap = null;
+    private Set<String> defaultValidatorIds = null;
+    private volatile Map<String,String> defaultValidatorInfo = null;
+    private volatile String messageBundle = null;
+
+    private List<ELContextListener> elContextListeners = null;
+    CompositeELResolver elResolvers = null;
+    FacesCompositeELResolver compositeELResolver = null;
+    private final SystemEventHelper systemEventHelper = new SystemEventHelper();
+    private final ComponentSystemEventHelper compSysEventHelper = new ComponentSystemEventHelper();
+    private boolean passDefaultTimeZone;
+    private boolean registerPropertyEditors;
+    private TimeZone systemTimeZone;
+
+    /**
+     * Constructor
+     */
+    public ApplicationImpl() {
+        super();
+        associate = new ApplicationAssociate(this);
+        componentMap = new ApplicationInstanceFactoryMetadataMap(new ConcurrentHashMap<String, Object>());
+        converterIdMap = new ApplicationInstanceFactoryMetadataMap(new ConcurrentHashMap<String, Object>());
+        converterTypeMap = new ConcurrentHashMap<Class<?>, Object>();
+        validatorMap = new ApplicationInstanceFactoryMetadataMap(new ConcurrentHashMap<String, Object>());
+        defaultValidatorIds = new LinkedHashSet<String>();
+        behaviorMap = new ApplicationInstanceFactoryMetadataMap(new ConcurrentHashMap<String, Object>());
+        elContextListeners = new CopyOnWriteArrayList<ELContextListener>();
+        propertyResolver = new PropertyResolverImpl();
+        variableResolver = new VariableResolverImpl();
+        elResolvers = new CompositeELResolver();
+
+        FacesContext ctx = FacesContext.getCurrentInstance();
+        WebConfiguration webConfig = WebConfiguration.getInstance(ctx.getExternalContext());
+        passDefaultTimeZone = webConfig.isOptionEnabled(DateTimeConverterUsesSystemTimezone);
+        registerPropertyEditors = webConfig.isOptionEnabled(RegisterConverterPropertyEditors);
+        if (passDefaultTimeZone) {
+            systemTimeZone = TimeZone.getDefault();
+        }
+        if (LOGGER.isLoggable(Level.FINE)) {
+            LOGGER.log(Level.FINE, "Created Application instance ");
+        }
+    }
+
+
+    /**
+     * @see javax.faces.application.Application#publishEvent(FacesContext, Class, Object)
+     */
+    @Override
+    public void publishEvent(FacesContext context,
+                             Class<? extends SystemEvent> systemEventClass,
+                             Object source) {
+
+        publishEvent(context, systemEventClass, null, source);
+
+    }
+
+
+    /**
+     * @see javax.faces.application.Application#publishEvent(FacesContext, Class, Object)
+     */
+    @Override
+    public void publishEvent(FacesContext context,
+                             Class<? extends SystemEvent> systemEventClass,
+                             Class<?> sourceBaseType,
+                             Object source) {
+
+        Util.notNull("context", context);
+        Util.notNull("systemEventClass", systemEventClass);
+        Util.notNull("source", source);
+        if (!needsProcessing(context, systemEventClass)) {
+            return;
+        }
+        // source is not compatible with the provided base type.
+        // Log a warning that the types are incompatible and return. 
+        if (getProjectStage() == ProjectStage.Development
+              && sourceBaseType != null
+              && !sourceBaseType.isInstance(source)) {
+            if (LOGGER.isLoggable(Level.WARNING)) {
+                LOGGER.log(Level.WARNING,
+                           "jsf.application.publish.event.base_type_mismatch",
+                           new Object[] { source.getClass().getName(),
+                                          sourceBaseType.getName() });                
+            }
+            return;
+        }
+
+        try {
+            // The side-effect of calling invokeListenersFor
+            // will create a SystemEvent object appropriate to event/source
+            // combination.  This event will be passed on subsequent invocations
+            // of invokeListenersFor
+            SystemEvent event;
+
+            // Look for and invoke any listeners stored on the source instance.
+            event = invokeComponentListenersFor(systemEventClass, source);
+
+            // Look for and invoke any 'view' listeners 
+            event = invokeViewListenersFor(context, systemEventClass, event, source);
+
+            // look for and invoke any listeners stored on the application
+            // using source type.
+            event = invokeListenersFor(systemEventClass,
+                                       event,
+                                       source,
+                                       sourceBaseType,
+                                       true);
+
+            // look for and invoke any listeners not specific to the source class
+            invokeListenersFor(systemEventClass, event, source, null, false);
+        } catch (AbortProcessingException ape) {
+            context.getApplication().publishEvent(context,
+                                                  ExceptionQueuedEvent.class,
+                                                  new ExceptionQueuedEventContext(context, ape));
+        }
+
+    }
+
+
+    /**
+     * @see Application#subscribeToEvent(Class, Class, javax.faces.event.SystemEventListener)
+     */
+    @Override
+    public void subscribeToEvent(Class<? extends SystemEvent> systemEventClass,
+                                 Class<?> sourceClass,
+                                 SystemEventListener listener) {
+
+        Util.notNull("systemEventClass", systemEventClass);
+        Util.notNull("listener", listener);
+
+        Set<SystemEventListener> listeners =
+              getListeners(systemEventClass, sourceClass);
+        listeners.add(listener);
+
+    }
+
+
+    /**
+     * @see Application#subscribeToEvent(Class, javax.faces.event.SystemEventListener)
+     */
+    @Override
+    public void subscribeToEvent(Class<? extends SystemEvent> systemEventClass,
+                                 SystemEventListener listener) {
+
+        subscribeToEvent(systemEventClass, null, listener);
+
+    }
+
+
+    /**
+     * @see Application#unsubscribeFromEvent(Class, Class, javax.faces.event.SystemEventListener)
+     */
+    @Override
+    public void unsubscribeFromEvent(Class<? extends SystemEvent> systemEventClass,
+                                     Class<?> sourceClass,
+                                     SystemEventListener listener) {
+
+        Util.notNull("systemEventClass", systemEventClass);
+        Util.notNull("listener", listener);
+
+        Set<SystemEventListener> listeners =
+              getListeners(systemEventClass, sourceClass);
+        if (listeners != null) {
+            listeners.remove(listener);
+        }
+
+    }
+
+    /**
+     * @see Application#unsubscribeFromEvent(Class, javax.faces.event.SystemEventListener)
+     */
+    @Override
+    public void unsubscribeFromEvent(Class<? extends SystemEvent> systemEventClass,
+                                     SystemEventListener listener) {
+
+        unsubscribeFromEvent(systemEventClass, null, listener);
+
+    }
+
+
+    /**
+     * @see javax.faces.application.Application#addELContextListener(javax.el.ELContextListener)
+     */
+    @Override
+    public void addELContextListener(ELContextListener listener) {
+        if (listener != null) {
+            elContextListeners.add(listener);
+        }
+    }
+
+
+    /**
+     * @see javax.faces.application.Application#removeELContextListener(javax.el.ELContextListener)
+     */
+    @Override
+    public void removeELContextListener(ELContextListener listener) {
+        if (listener != null) {
+            elContextListeners.remove(listener);
+        }
+    }
+
+
+    /**
+     * @see javax.faces.application.Application#getELContextListeners()
+     */
+    @Override
+    public ELContextListener [] getELContextListeners() {
+        if (!elContextListeners.isEmpty()) {
+            return (elContextListeners.toArray(
+                       new ELContextListener[elContextListeners.size()]));
+        } else {
+            return (EMPTY_EL_CTX_LIST_ARRAY);
+        }
+    }
+
+
+    /**
+     * @see javax.faces.application.Application#getExpressionFactory()
+     */
+    @Override
+    public ExpressionFactory getExpressionFactory() {
+        return associate.getExpressionFactory();
+    }
+
+    @Override
+    public FlowHandler getFlowHandler() {
+        return associate.getFlowHandler();
+    }
+    
+    @Override
+    public synchronized void setFlowHandler(FlowHandler flowHandler) {
+
+        Util.notNull("flowHandler", flowHandler);
+
+        associate.setFlowHandler(flowHandler);
+
+        if (LOGGER.isLoggable(Level.FINE)) {
+            LOGGER.fine(MessageFormat.format("set FlowHandler Instance to ''{0}''",
+                                             flowHandler.getClass().getName()));
+        }
+    }
+
+    
+
+
+    /**
+     * @see javax.faces.application.Application#evaluateExpressionGet(javax.faces.context.FacesContext, String, Class)
+     */
+    @Override
+    public <T> T evaluateExpressionGet(FacesContext context,
+                                       String expression,
+                                       Class<? extends T> expectedType) throws ELException {
+        ValueExpression ve = 
+          getExpressionFactory().createValueExpression(context.getELContext(), 
+                                                       expression,
+                                                       expectedType);
+        //noinspection unchecked
+        return (T)(ve.getValue(context.getELContext()));
+    }
+
+
+    @Override
+    public UIComponent createComponent(ValueExpression componentExpression,
+                                       FacesContext context,
+                                       String componentType)
+    throws FacesException {
+
+        Util.notNull("componentExpression", componentExpression);
+        Util.notNull("context", context);
+        Util.notNull("componentType", componentType);
+
+        return createComponentApplyAnnotations(context,
+                                               componentExpression,
+                                               componentType,
+                                               null,
+                                               true);
+
+    }
+
+
+    /**
+     * @see javax.faces.application.Application#getELResolver()
+     */
+    @Override
+    public ELResolver getELResolver() {
+
+        if (compositeELResolver == null) {
+            performOneTimeELInitialization();
+        }
+
+        return compositeELResolver;
+
+    }
+
+
+    /**
+     * @see javax.faces.application.Application#addELResolver(javax.el.ELResolver)
+     */
+    @Override
+    public void addELResolver(ELResolver resolver) {
+
+        if (associate.hasRequestBeenServiced()) {
+            throw new IllegalStateException(
+                  MessageUtils.getExceptionMessageString(
+                        MessageUtils.ILLEGAL_ATTEMPT_SETTING_APPLICATION_ARTIFACT_ID, "ELResolver"));
+        }
+
+        elResolvers.add(resolver);
+
+    }
+
+
+    /**
+     * @see javax.faces.application.Application#getProjectStage() 
+     */
+    @Override
+    public ProjectStage getProjectStage() {
+        
+        if (projectStage == null) {
+            WebConfiguration webConfig =
+                  WebConfiguration.getInstance(
+                        FacesContext.getCurrentInstance().getExternalContext());
+            String value = webConfig.getEnvironmentEntry(WebConfiguration.WebEnvironmentEntry.ProjectStage);
+            if (value != null) {
+                if (LOGGER.isLoggable(Level.FINE)) {
+                    LOGGER.log(Level.FINE,
+                               "ProjectStage configured via JNDI: {0}",
+                               value);
+                }
+            } else {
+                value = webConfig.getOptionValue(WebContextInitParameter.JavaxFacesProjectStage);
+                if (value != null && LOGGER.isLoggable(Level.FINE)) {
+                    LOGGER.log(Level.FINE,
+                       "ProjectStage configured via servlet context init parameter: {0}", 
+                       value);
+                }
+            }
+            if (value != null) {
+                try {
+                    projectStage = ProjectStage.valueOf(value);
+                } catch (IllegalArgumentException iae) {
+                    if (LOGGER.isLoggable(Level.INFO)) {
+                        LOGGER.log(Level.INFO,
+                                   "Unable to discern ProjectStage for value {0}.",
+                                   value);
+                    }
+                }
+            }
+            if (projectStage == null) {
+                projectStage = ProjectStage.Production;
+            }
+            if (projectStage == ProjectStage.Development) {
+                subscribeToEvent(PostAddToViewEvent.class, new ValidateComponentNesting());
+            }
+           
+        }
+        return projectStage;
+
+    }
+
+    public CompositeELResolver getApplicationELResolvers() {
+        return elResolvers;
+    }
+
+
+    /**
+     * @see javax.faces.application.Application#getActionListener()
+     */
+    public ActionListener getActionListener() {
+        return actionListener;
+    }
+
+
+    /**
+     * @see javax.faces.application.Application#getViewHandler()
+     */
+    public ViewHandler getViewHandler() {
+        return viewHandler;
+    }
+
+
+    /**
+     * @see javax.faces.application.Application#setViewHandler(javax.faces.application.ViewHandler)
+     */
+    public synchronized void setViewHandler(ViewHandler viewHandler) {
+
+        Util.notNull("viewHandler", viewHandler);
+
+        if (associate.hasRequestBeenServiced()) {
+            throw new IllegalStateException(
+                  MessageUtils.getExceptionMessageString(
+                        MessageUtils.ILLEGAL_ATTEMPT_SETTING_APPLICATION_ARTIFACT_ID, "ViewHandler"));
+        }
+
+        this.viewHandler = viewHandler;
+        if (LOGGER.isLoggable(Level.FINE)) {
+            LOGGER.log(Level.FINE, MessageFormat.format("set ViewHandler Instance to ''{0}''", viewHandler.getClass().getName()));
+        }
+
+    }
+
+    /**
+     * @see javax.faces.application.Application#getResourceHandler()
+     */
+    @Override
+    public ResourceHandler getResourceHandler() {
+
+        return resourceHandler;
+
+    }
+
+
+    /**
+     * @see javax.faces.application.Application#setResourceHandler(javax.faces.application.ResourceHandler)
+     */
+    @Override
+    public synchronized void setResourceHandler(ResourceHandler resourceHandler) {
+
+        Util.notNull("resourceHandler", resourceHandler);
+
+        if (associate.hasRequestBeenServiced()) {
+            throw new IllegalStateException(
+                  MessageUtils.getExceptionMessageString(
+                        MessageUtils.ILLEGAL_ATTEMPT_SETTING_APPLICATION_ARTIFACT_ID, "ResourceHandler"));
+        }
+
+        this.resourceHandler = resourceHandler;
+        if (LOGGER.isLoggable(Level.FINE)) {
+            LOGGER.log(Level.FINE,
+                       "set ResourceHandler Instance to ''{0}''",
+                       resourceHandler.getClass().getName());
+        }
+
+    }
+
+
+    /**
+     * @see javax.faces.application.Application#getStateManager()
+     */
+    public StateManager getStateManager() {
+        return stateManager;
+    }
+
+
+    /**
+     * @see javax.faces.application.Application#setStateManager(javax.faces.application.StateManager)
+     */
+    public synchronized void setStateManager(StateManager stateManager) {
+
+        Util.notNull("stateManager", stateManager);
+
+        if (associate.hasRequestBeenServiced()) {
+            throw new IllegalStateException(
+                  MessageUtils.getExceptionMessageString(
+                        MessageUtils.ILLEGAL_ATTEMPT_SETTING_APPLICATION_ARTIFACT_ID, "StateManager"));
+        }
+
+        this.stateManager = stateManager;
+        if (LOGGER.isLoggable(Level.FINE)) {
+            LOGGER.log(Level.FINE, MessageFormat.format("set StateManager Instance to ''{0}''",
+                                                        stateManager.getClass().getName()));
+        }
+
+    }
+
+
+    /**
+     * @see Application#setActionListener(javax.faces.event.ActionListener)
+     */
+    public synchronized void setActionListener(ActionListener actionListener) {
+
+        Util.notNull("actionListener", actionListener);
+
+        this.actionListener = actionListener;
+
+        if (LOGGER.isLoggable(Level.FINE)) {
+            LOGGER.fine(MessageFormat.format("set ActionListener Instance to ''{0}''",
+                                             actionListener.getClass().getName()));
+        }
+    }
+
+
+    /**
+     * @see javax.faces.application.Application#getNavigationHandler()
+     */
+    public NavigationHandler getNavigationHandler() {
+        return navigationHandler;
+    }
+
+
+    /**
+     * @see javax.faces.application.Application#setNavigationHandler(javax.faces.application.NavigationHandler)
+     */
+    public synchronized void setNavigationHandler(NavigationHandler navigationHandler) {
+
+        Util.notNull("navigationHandler", navigationHandler);
+
+        this.navigationHandler = navigationHandler;
+
+        if (LOGGER.isLoggable(Level.FINE)) {
+            LOGGER.fine(MessageFormat.format("set NavigationHandler Instance to ''{0}''",
+                                             navigationHandler.getClass().getName()));
+        }
+    }
+
+    /**
+     * @see javax.faces.application.Application#setPropertyResolver(javax.faces.el.PropertyResolver)
+     */
+    @SuppressWarnings("deprecation")
+    public PropertyResolver getPropertyResolver() {
+        if (compositeELResolver == null) {
+            performOneTimeELInitialization();
+        }
+        return propertyResolver;
+    }
+
+
+    /**
+     * @see javax.faces.application.Application#getResourceBundle(javax.faces.context.FacesContext, String)
+     */
+    @Override
+    public ResourceBundle getResourceBundle(FacesContext context, String var) {
+
+        Util.notNull("context", context);
+        Util.notNull("var", var);
+        return associate.getResourceBundle(context, var);
+
+    }
+
+
+    /**
+     * @see javax.faces.application.Application#setPropertyResolver(javax.faces.el.PropertyResolver)
+     */
+    @SuppressWarnings("deprecation")
+    public void setPropertyResolver(PropertyResolver resolver) {
+        // Throw Illegal State Exception if  a PropertyResolver is set after 
+        // a request has been processed.
+        if (associate.hasRequestBeenServiced()) {
+            throw new IllegalStateException(
+                    MessageUtils.getExceptionMessageString(
+                        MessageUtils.ILLEGAL_ATTEMPT_SETTING_APPLICATION_ARTIFACT_ID, "PropertyResolver"));
+        }
+        if (resolver == null) {
+            String message = MessageUtils.getExceptionMessageString
+                (MessageUtils.NULL_PARAMETERS_ERROR_MESSAGE_ID, "resolver");
+            throw new NullPointerException(message);
+        }
+
+        propertyResolver.setDelegate(ELUtils.getDelegatePR(associate, true));
+        associate.setLegacyPropertyResolver(resolver);
+        propertyResolver = new PropertyResolverImpl();
+
+
+        if (LOGGER.isLoggable(Level.FINE)) {
+            LOGGER.fine(MessageFormat.format("set PropertyResolver Instance to ''{0}''", resolver.getClass().getName()));
+        }
+    }
+
+
+    /**
+     * @see javax.faces.application.Application#createMethodBinding(String, Class[])
+     */
+    @SuppressWarnings("deprecation")
+    public MethodBinding createMethodBinding(String ref, Class<?> params[]) {
+
+        Util.notNull("ref", ref);
+
+        if (!(ref.startsWith("#{") && ref.endsWith("}"))) {
+            if (LOGGER.isLoggable(Level.FINE)) {
+                LOGGER.fine(MessageFormat.format("Expression ''{0}'' does not follow the syntax #{...}", ref));
+            }
+            throw new ReferenceSyntaxException(ref);
+        }
+        FacesContext context = FacesContext.getCurrentInstance();
+        MethodExpression result;
+        try {
+            // return a MethodBinding that wraps a MethodExpression.
+            if (null == params) {
+                params = RIConstants.EMPTY_CLASS_ARGS;
+            }
+            result =
+                  getExpressionFactory().
+                        createMethodExpression(context.getELContext(), ref, null,
+                                               params);
+        } catch (ELException elex) {
+            throw new ReferenceSyntaxException(elex);
+        }
+        return (new MethodBindingMethodExpressionAdapter(result));
+
+    }
+
+
+    /**
+     * @see javax.faces.application.Application#createValueBinding(String)
+     */
+    @SuppressWarnings("deprecation")
+    public ValueBinding createValueBinding(String ref)
+    throws ReferenceSyntaxException {
+
+        Util.notNull("ref", ref);
+        ValueExpression result;
+        FacesContext context = FacesContext.getCurrentInstance();
+         // return a ValueBinding that wraps a ValueExpression.
+         try {
+             result= getExpressionFactory().
+                     createValueExpression(context.getELContext(),ref,
+                     Object.class);     
+         } catch (ELException elex) {
+            throw new ReferenceSyntaxException(elex);
+         } 
+         return (new ValueBindingValueExpressionAdapter(result));
+
+    }
+
+
+    /**
+     * @see javax.faces.application.Application#getVariableResolver()
+     */
+    @SuppressWarnings("deprecation")
+    public VariableResolver getVariableResolver() {       
+        if (compositeELResolver == null) {
+            performOneTimeELInitialization();
+        }
+
+        return variableResolver;
+    }
+
+
+    /**
+     * @see javax.faces.application.Application#setVariableResolver(javax.faces.el.VariableResolver)
+     */
+    @SuppressWarnings("deprecation")
+    public void setVariableResolver(VariableResolver resolver) {
+        Util.notNull("variableResolver", resolver);
+
+        if (associate.hasRequestBeenServiced()) {
+            throw new IllegalStateException(
+                    MessageUtils.getExceptionMessageString(
+                        MessageUtils.ILLEGAL_ATTEMPT_SETTING_APPLICATION_ARTIFACT_ID, "VariableResolver"));
+        }
+
+        variableResolver.setDelegate(ELUtils.getDelegateVR(associate, true));
+        associate.setLegacyVariableResolver(resolver);
+
+        if (LOGGER.isLoggable(Level.FINE)) {
+            LOGGER.fine(MessageFormat.format("set VariableResolver Instance to ''{0}''",
+                                             variableResolver.getClass().getName()));
+        }
+    }
+
+    /**
+     * @see javax.faces.application.Application#addBehavior(String, String)
+     */
+    public void addBehavior(String behaviorId, String behaviorClass) {
+
+        Util.notNull("behaviorId", behaviorId);
+        Util.notNull("behaviorClass", behaviorClass);
+
+        if (LOGGER.isLoggable(Level.FINE) && behaviorMap.containsKey(behaviorId)) {
+            LOGGER.log(Level.FINE,
+                       "behaviorId {0} has already been registered.  Replacing existing behavior class type {1} with {2}.",
+                       new Object[] { behaviorId, behaviorMap.get(behaviorId), behaviorClass });
+        }
+        behaviorMap.put(behaviorId, behaviorClass);
+
+        if (LOGGER.isLoggable(Level.FINE)) {
+            LOGGER.fine(MessageFormat.format("added behavior of type ''{0}'' class ''{1}''",
+                                             behaviorId,
+                                             behaviorClass));
+        }
+
+    }
+
+    /**
+     * @see javax.faces.application.Application#createBehavior(String)
+     */
+    public Behavior createBehavior(String behaviorId) throws FacesException {
+
+        Util.notNull("behaviorId", behaviorId);
+        Behavior returnVal = (Behavior) newThing(behaviorId, behaviorMap);
+        if (returnVal == null) {
+            Object[] params = {behaviorId};
+            if (LOGGER.isLoggable(Level.SEVERE)) {
+                LOGGER.log(Level.SEVERE,
+                        "jsf.cannot_instantiate_behavior_error", params);
+            }
+            throw new FacesException(MessageUtils.getExceptionMessageString(
+                MessageUtils.NAMED_OBJECT_NOT_FOUND_ERROR_MESSAGE_ID, params));
+        }
+        if (LOGGER.isLoggable(Level.FINE)) {
+            LOGGER.fine(MessageFormat.format("created behavior of type ''{0}''",
+                                             behaviorId));
+        }
+        associate.getAnnotationManager().applyBehaviorAnnotations(FacesContext.getCurrentInstance(), returnVal);
+        return returnVal;
+    }
+
+    /**
+     * @see javax.faces.application.Application#getBehaviorIds()
+     */
+    public Iterator<String> getBehaviorIds() {
+
+        return behaviorMap.keySet().iterator();
+
+    }
+
+    /**
+     * @see javax.faces.application.Application#addComponent(java.lang.String, java.lang.String)
+     */
+    public void addComponent(String componentType, String componentClass) {
+
+        Util.notNull("componentType", componentType);
+        Util.notNull("componentType", componentClass);
+
+        if (LOGGER.isLoggable(Level.FINE) && componentMap.containsKey(componentType)) {
+            LOGGER.log(Level.FINE,
+                       "componentType {0} has already been registered.  Replacing existing component class type {1} with {2}.",
+                       new Object[] { componentType, componentMap.get(componentType), componentClass });
+        }
+        componentMap.put(componentType, componentClass);
+        
+        if (LOGGER.isLoggable(Level.FINE)) {
+            LOGGER.fine(MessageFormat.format("added component of type ''{0}'' and class ''{1}''",
+                                             componentType,
+                                             componentClass));
+        }
+        
+    }
+
+
+    public UIComponent createComponent(String componentType) throws FacesException {
+
+        Util.notNull("componentType", componentType);
+
+        return createComponentApplyAnnotations(FacesContext.getCurrentInstance(),
+                                               componentType,
+                                               null,
+                                               true);
+
+    }
+
+
+    @Override
+    public UIComponent createComponent(FacesContext context, Resource componentResource) throws FacesException {
+
+        // RELEASE_PENDING (rlubke,driscoll) this method needs review.
+
+        Util.notNull("context", context);
+        Util.notNull("componentResource", componentResource);
+
+        UIComponent result = null;
+
+        // use the application defined in the FacesContext as we may be calling
+        // overriden methods
+        Application app = context.getApplication();
+
+        ViewDeclarationLanguage pdl = app.getViewHandler().getViewDeclarationLanguage(context, context.getViewRoot().getViewId());
+        BeanInfo componentMetadata = pdl.getComponentMetadata(context,
+                                                              componentResource);
+        if (null != componentMetadata){
+            BeanDescriptor componentBeanDescriptor = componentMetadata.getBeanDescriptor();
+            
+            // Step 1.  See if the composite component author explicitly
+            // gave a componentType as part of the composite component metadata
+            ValueExpression ve = (ValueExpression)
+                  componentBeanDescriptor.getValue(UIComponent.COMPOSITE_COMPONENT_TYPE_KEY);
+            if (null != ve) {
+                String componentType = (String) ve.getValue(context.getELContext());
+                if (null != componentType && 0 < componentType.length()) {
+                    result = app.createComponent(componentType);
+                }
+            }
+        }
+
+
+        // Step 2. If that didn't work, if a script based resource can be 
+        // found for the scriptComponentResource,
+        // see if a component can be generated from it
+        if (null == result) {
+            Resource scriptComponentResource = pdl.getScriptComponentResource(context, componentResource);
+
+            if (null != scriptComponentResource) {
+                result = createComponentFromScriptResource(context,
+                        scriptComponentResource, componentResource);
+            }
+        }
+
+        // Step 3. Use the libraryName of the resource as the java package
+        // and use the resourceName as the class name.  See
+        // if a Java class can be loaded
+        if (null == result) {
+            String packageName = componentResource.getLibraryName();
+            String className = componentResource.getResourceName();
+            className = packageName + '.' + className.substring(0, className.lastIndexOf('.'));
+            try {
+                Class<?> clazz = (Class<?>) componentMap.get(className);
+                if (clazz == null) {
+                    clazz = Util.loadClass(className, this);
+                }
+                if (clazz != ComponentResourceClassNotFound.class) {
+                    if (!associate.isDevModeEnabled()) {
+                        componentMap.put(className, clazz);
+                    }
+                    result = (UIComponent) clazz.newInstance();
+                }
+            } catch (ClassNotFoundException ex) {
+                if (!associate.isDevModeEnabled()) {
+                    componentMap.put(className, ComponentResourceClassNotFound.class);
+                }
+            } catch (InstantiationException ie) {
+                throw new FacesException(ie);
+            } catch (IllegalAccessException iae) {
+                throw new FacesException(iae);
+            } catch (ClassCastException cce) {
+                throw new FacesException(cce);
+            } catch (Exception otherwise) {
+                if (LOGGER.isLoggable(Level.SEVERE)) {
+                    LOGGER.log(Level.SEVERE,
+                               otherwise.toString(),
+                               otherwise);
+                }
+            }
+        }
+
+        // Step 4. Use javax.faces.NamingContainer as the component type
+        if (null == result) {
+            result = app.createComponent("javax.faces.NamingContainer");
+        }
+
+        assert (null != result);
+
+        result.setRendererType("javax.faces.Composite");
+        Map<String, Object> attrs = result.getAttributes();
+        attrs.put(Resource.COMPONENT_RESOURCE_KEY,
+                componentResource);
+        attrs.put(UIComponent.BEANINFO_KEY,
+                componentMetadata);
+
+        associate.getAnnotationManager().applyComponentAnnotations(context, result);
+        pushDeclaredDefaultValuesToAttributesMap(context, componentMetadata, attrs, result);
+
+
+        return result;
+    }
+
+
+    /*
+     * This method makes it so that any cc:attribute elements that have
+     * a "default" attribute value have those values pushed into the
+     * composite component attribute map so that programmatic access 
+     * (as opposed to EL access) will find the attribute values.
+     *
+     */
+    private void pushDeclaredDefaultValuesToAttributesMap(FacesContext context,
+            BeanInfo componentMetadata, Map<String, Object> attrs, UIComponent component) {
+        PropertyDescriptor[] declaredAttributes = componentMetadata.getPropertyDescriptors();
+        Object defaultValue;
+        String key;
+        Collection<String> attributesWithDeclaredDefaultValues = null;
+
+        PropertyDescriptor[] pd = null;
+
+        for (PropertyDescriptor cur : declaredAttributes) {
+            defaultValue = cur.getValue("default");
+            if (null != defaultValue) {
+                key = cur.getName();
+                boolean isLiteralText = false;
+                if (defaultValue instanceof ValueExpression) {
+                    isLiteralText = ((ValueExpression)defaultValue).isLiteralText();
+                    if (isLiteralText) {
+                        defaultValue = ((ValueExpression)defaultValue).getValue(context.getELContext());
+                    }
+                }
+                // ensure this attribute is not a method-signature.  method-signature
+                // declared default values are handled in retargetMethodExpressions.
+                if (null == cur.getValue("method-signature") || null != cur.getValue("type")) {
+
+                    if (null == attributesWithDeclaredDefaultValues) {
+                        BeanDescriptor desc = componentMetadata.getBeanDescriptor();
+                        attributesWithDeclaredDefaultValues = (Collection<String>)
+                                desc.getValue(UIComponent.ATTRS_WITH_DECLARED_DEFAULT_VALUES);
+                        if (null == attributesWithDeclaredDefaultValues) {
+                            attributesWithDeclaredDefaultValues = new HashSet<String>();
+                            desc.setValue(UIComponent.ATTRS_WITH_DECLARED_DEFAULT_VALUES,
+                                    attributesWithDeclaredDefaultValues);
+                        }
+                    }
+                    attributesWithDeclaredDefaultValues.add(key);
+
+                    // Only store the attribute if it is literal text.  If it
+                    // is a ValueExpression, it will be handled explicitly in
+                    // CompositeComponentAttributesELResolver.ExpressionEvalMap.get().
+                    // If it is a MethodExpression, it will be dealt with in
+                    // retargetMethodExpressions.
+                    if (isLiteralText) {
+                        try {
+                            if (null == pd) {
+                                pd = Introspector.getBeanInfo(component.getClass()).getPropertyDescriptors();
+                            }
+                        } catch (IntrospectionException e) {
+                            throw new FacesException(e);
+                        }
+                        defaultValue = convertValueToTypeIfNecessary(key, defaultValue, pd);
+                        attrs.put(key, defaultValue);
+                    }
+                }
+            }
+        }
+    }
+    
+
+        
+
+    @SuppressWarnings("deprecation")
+    public UIComponent createComponent(ValueBinding componentBinding,
+                                       FacesContext context,
+                                       String componentType)
+    throws FacesException {
+
+        Util.notNull("componentBinding", componentBinding);
+        Util.notNull("context", context);
+        Util.notNull("componentType", componentType);
+
+        Object result;
+        boolean createOne = false;
+        try {
+            result = componentBinding.getValue(context);
+            if (result != null) {
+                createOne = (!(result instanceof UIComponent));
+            }
+
+            if (result == null || createOne) {
+                result = this.createComponentApplyAnnotations(context,
+                                                              componentType,
+                                                              null,
+                                                              false);
+                componentBinding.setValue(context, result);
+            }
+        } catch (Exception ex) {
+            throw new FacesException(ex);
+        }
+
+        return (UIComponent) result;
+
+    }
+
+
+    @Override
+    public UIComponent createComponent(ValueExpression componentExpression,
+                                       FacesContext context,
+                                       String componentType,
+                                       String rendererType) {
+
+        Util.notNull("componentExpression", componentExpression);
+        Util.notNull("context", context);
+        Util.notNull("componentType", componentType);
+
+        return createComponentApplyAnnotations(context,
+                                               componentExpression,
+                                               componentType,
+                                               rendererType,
+                                               true);
+
+    }
+
+
+    @Override
+    public UIComponent createComponent(FacesContext context,
+                                       String componentType,
+                                       String rendererType) {
+
+        Util.notNull("context", context);
+        Util.notNull("componentType", componentType);
+
+        return createComponentApplyAnnotations(context,
+                                               componentType,
+                                               rendererType,
+                                               true);
+
+    }
+
+    /**
+     * @see javax.faces.application.Application#getComponentTypes()
+     */
+    public Iterator<String> getComponentTypes() {
+
+        return componentMap.keySet().iterator();
+
+    }
+
+
+    /**
+     * @see javax.faces.application.Application#addConverter(String, String)
+     */
+    public void addConverter(String converterId, String converterClass) {
+
+        Util.notNull("converterId", converterId);
+        Util.notNull("converterClass", converterClass);
+
+        if (LOGGER.isLoggable(Level.FINE) && converterIdMap.containsKey(converterId)) {
+            LOGGER.log(Level.FINE,
+                       "converterId {0} has already been registered.  Replacing existing converter class type {1} with {2}.",
+                       new Object[] { converterId, converterIdMap.get(converterId), converterClass });
+        }
+
+        converterIdMap.put(converterId, converterClass);
+
+        Class<?>[] types = STANDARD_CONV_ID_TO_TYPE_MAP.get(converterId);
+        if (types != null) {
+            for (Class<?> clazz : types) {
+                // go directly against map to prevent cyclic method calls
+                converterTypeMap.put(clazz, converterClass);
+                addPropertyEditorIfNecessary(clazz);
+            }
+        }
+        
+        if (LOGGER.isLoggable(Level.FINE)) {
+            LOGGER.fine(MessageFormat.format("added converter of type ''{0}'' and class ''{1}''",
+                                             converterId,
+                                             converterClass));
+        }
+    }
+
+
+    /**
+     * @see javax.faces.application.Application#addConverter(Class, String)
+     */
+    public void addConverter(Class<?> targetClass, String converterClass) {
+
+        Util.notNull("targetClass", targetClass);
+        Util.notNull("converterClass", converterClass);
+
+        String converterId = STANDARD_TYPE_TO_CONV_ID_MAP.get(targetClass);
+        if (converterId != null) {
+            addConverter(converterId, converterClass);
+        } else {
+            if (LOGGER.isLoggable(Level.FINE) && converterTypeMap
+                  .containsKey(targetClass)) {
+                LOGGER.log(Level.FINE,
+                           "converter target class {0} has already been registered.  Replacing existing converter class type {1} with {2}.",
+                           new Object[]{
+                                 targetClass.getName(),
+                                 converterTypeMap.get(targetClass),
+                                 converterClass});
+            }
+            converterTypeMap.put(targetClass, converterClass);
+            addPropertyEditorIfNecessary(targetClass);
+        }                
+        
+        if (LOGGER.isLoggable(Level.FINE)) {
+            LOGGER.fine(MessageFormat.format("added converter of class type ''{0}''", converterClass));
+        }
+    }
+    
+    private final String [] STANDARD_BY_TYPE_CONVERTER_CLASSES = {
+      "java.math.BigDecimal",
+      "java.lang.Boolean",
+      "java.lang.Byte",
+      "java.lang.Character",
+      "java.lang.Double",
+      "java.lang.Float",
+      "java.lang.Integer",
+      "java.lang.Long",
+      "java.lang.Short",
+      "java.lang.Enum"
+    };
+
+    /**
+     * Helper method to convert a value to a type as defined in PropertyDescriptor(s)
+     * @param name
+     * @param value
+     * @param pd
+     * @return value
+     */
+    private Object convertValueToTypeIfNecessary(String name, Object value, PropertyDescriptor[] pd) {
+        for (PropertyDescriptor aPd : pd) {
+            if (aPd.getName().equals(name)) {
+                value = getExpressionFactory().coerceToType(value, aPd.getPropertyType());
+                break;
+            }
+        }
+        return value;
+    }
+
+    /**
+     * <p>To enable EL Coercion to use JSF Custom converters, this 
+     * method will call <code>PropertyEditorManager.registerEditor()</code>,
+     * passing the <code>ConverterPropertyEditor</code> class for the
+     * <code>targetClass</code> if the target class is not one of the standard
+     * by-type converter target classes.
+     * @param targetClass the target class for which a PropertyEditory may or
+     *  may not be created
+     */
+    
+    private void addPropertyEditorIfNecessary(Class<?> targetClass) {
+        
+        if (!registerPropertyEditors) {
+            return;
+        }
+
+        PropertyEditor editor = PropertyEditorManager.findEditor(targetClass);
+        if (null != editor) {
+            return;
+        }
+        String className = targetClass.getName();
+        // Don't add a PropertyEditor for the standard by-type converters.
+        if (targetClass.isPrimitive()) {
+            return;
+        }
+        for (String standardClass : STANDARD_BY_TYPE_CONVERTER_CLASSES) {
+            if (-1 != standardClass.indexOf(className)) {
+                return;
+            }
+        }
+        Class<?> editorClass = ConverterPropertyEditorFactory.getDefaultInstance().definePropertyEditorClassFor(targetClass);
+        if (editorClass != null) {
+            PropertyEditorManager.registerEditor(targetClass, editorClass);
+        } else {
+        	if (LOGGER.isLoggable(Level.WARNING)) {
+        		LOGGER.warning(MessageFormat.format("definePropertyEditorClassFor({0}) returned null.", targetClass.getName()));
+        	}
+        }
+    }
+
+    private void performOneTimeELInitialization() {
+        if (null != compositeELResolver) {
+            throw new IllegalStateException("Class invariant invalidated: " +
+                    "The Application instance's ELResolver is not null " +
+                    "and it should be.");
+        }
+        associate.initializeELResolverChains();
+    }
+
+
+    /**
+     * @see javax.faces.application.Application#createConverter(String)
+     */
+    public Converter createConverter(String converterId) {
+
+        Util.notNull("converterId", converterId);
+        Converter returnVal = (Converter) newThing(converterId, converterIdMap);
+        if (returnVal == null) {
+            Object[] params = {converterId};
+            if (LOGGER.isLoggable(Level.SEVERE)) {
+                LOGGER.log(Level.SEVERE,
+                        "jsf.cannot_instantiate_converter_error", converterId);
+            }
+            throw new FacesException(MessageUtils.getExceptionMessageString(
+                MessageUtils.NAMED_OBJECT_NOT_FOUND_ERROR_MESSAGE_ID, params));
+        }
+        if (LOGGER.isLoggable(Level.FINE)) {
+            LOGGER.fine(MessageFormat.format("created converter of type ''{0}''", converterId));
+        }
+        if (passDefaultTimeZone && returnVal instanceof DateTimeConverter) {
+            ((DateTimeConverter) returnVal).setTimeZone(systemTimeZone);
+        }
+        associate.getAnnotationManager().applyConverterAnnotations(FacesContext.getCurrentInstance(), returnVal);
+        return returnVal;
+    }
+
+
+    /**
+     * @see javax.faces.application.Application#createConverter(Class)
+     */
+    public Converter createConverter(Class<?> targetClass) {
+
+        Util.notNull("targetClass", targetClass);
+        Converter returnVal = (Converter) newConverter(targetClass,
+                                                   converterTypeMap,targetClass);
+        if (returnVal != null) {
+            if (LOGGER.isLoggable(Level.FINE)) {
+                LOGGER.fine(MessageFormat.format("Created converter of type ''{0}''",
+                                                 returnVal.getClass().getName()));
+            }
+            if (passDefaultTimeZone
+                && returnVal instanceof DateTimeConverter) {
+                ((DateTimeConverter) returnVal).setTimeZone(systemTimeZone);
+            }
+            associate.getAnnotationManager().applyConverterAnnotations(FacesContext.getCurrentInstance(), returnVal);
+            return returnVal;
+        } 
+
+        //Search for converters registered to interfaces implemented by
+        //targetClass
+        Class<?>[] interfaces = targetClass.getInterfaces();
+        if (interfaces != null) {
+            for (int i = 0; i < interfaces.length; i++) {
+                returnVal = createConverterBasedOnClass(interfaces[i], targetClass);
+                if (returnVal != null) {
+                   if (LOGGER.isLoggable(Level.FINE)) {
+                       LOGGER.fine(MessageFormat.format("Created converter of type ''{0}''",
+                                                        returnVal.getClass().getName()));
+                    }
+                    if (passDefaultTimeZone
+                        && returnVal instanceof DateTimeConverter) {
+                        ((DateTimeConverter) returnVal)
+                              .setTimeZone(systemTimeZone);
+                    }
+                    associate.getAnnotationManager().applyConverterAnnotations(FacesContext.getCurrentInstance(), returnVal);
+                    return returnVal;
+                }
+            }
+        }
+
+        //Search for converters registered to superclasses of targetClass
+        Class<?> superclass = targetClass.getSuperclass();
+        if (superclass != null) {
+            returnVal = createConverterBasedOnClass(superclass, targetClass);
+            if (returnVal != null) {
+                if (LOGGER.isLoggable(Level.FINE)) {
+                    LOGGER.fine(MessageFormat.format("Created converter of type ''{0}''",
+                                                     returnVal.getClass().getName()));
+                }
+                if (passDefaultTimeZone
+                    && returnVal instanceof DateTimeConverter) {
+                    ((DateTimeConverter) returnVal).setTimeZone(systemTimeZone);
+                }
+                associate.getAnnotationManager().applyConverterAnnotations(FacesContext.getCurrentInstance(), returnVal);
+                return returnVal;
+            }
+        }
+
+        return returnVal;
+    }
+
+    protected Converter createConverterBasedOnClass(Class<?> targetClass,
+            Class<?> baseClass) {
+        
+        Converter returnVal = (Converter) newConverter(targetClass,
+                converterTypeMap, baseClass);
+        if (returnVal != null) {
+            if (LOGGER.isLoggable(Level.FINE)) {
+                LOGGER.fine(MessageFormat.format("Created converter of type ''{0}''",
+                                                 returnVal.getClass().getName()));
+            }
+            return returnVal;
+        } 
+
+        //Search for converters registered to interfaces implemented by
+        //targetClass
+        Class<?>[] interfaces = targetClass.getInterfaces();
+        if (interfaces != null) {
+            for (int i = 0; i < interfaces.length; i++) {
+                returnVal = createConverterBasedOnClass(interfaces[i], null);
+                if (returnVal != null) {
+                   if (LOGGER.isLoggable(Level.FINE)) {
+                       LOGGER.fine(MessageFormat.format("Created converter of type ''{0}''",
+                                                        returnVal.getClass().getName()));
+                    }
+                    return returnVal;
+                }
+            }
+        }
+
+        //Search for converters registered to superclasses of targetClass
+        Class<?> superclass = targetClass.getSuperclass();
+        if (superclass != null) {
+            returnVal = createConverterBasedOnClass(superclass, targetClass);
+            if (returnVal != null) {
+                if (LOGGER.isLoggable(Level.FINE)) {
+                    LOGGER.fine(MessageFormat.format("Created converter of type ''{0}''",
+                                                     returnVal.getClass().getName()));
+                }
+                return returnVal;
+            }
+        } 
+        return returnVal;
+    }
+
+
+    /**
+     * @see javax.faces.application.Application#getConverterIds()
+     */
+    public Iterator<String> getConverterIds() {
+       
+        return converterIdMap.keySet().iterator();
+        
+    }
+
+
+    /**
+     * @see javax.faces.application.Application#getConverterTypes()
+     */
+    public Iterator<Class<?>> getConverterTypes() {
+                
+        return converterTypeMap.keySet().iterator();
+        
+    }
+
+
+    /**
+     * @see javax.faces.application.Application#getSupportedLocales()
+     */
+    public Iterator<Locale> getSupportedLocales() {
+
+            if (null != supportedLocales) {
+                return supportedLocales.iterator();
+            } else {
+                return Collections.<Locale>emptyList().iterator();
+            }
+
+    }
+
+
+    /**
+     * @see javax.faces.application.Application#setSupportedLocales(java.util.Collection)
+     */
+    public synchronized void setSupportedLocales(Collection<Locale> newLocales) {
+
+        Util.notNull("newLocales", newLocales);
+
+        supportedLocales = new ArrayList<Locale>(newLocales);
+
+        if (LOGGER.isLoggable(Level.FINE)) {
+            LOGGER.log(Level.FINE, MessageFormat.format("set Supported Locales ''{0}''",
+                                                        supportedLocales.toString()));
+        }
+
+    }
+
+
+    /**
+     * @see javax.faces.application.Application#getDefaultLocale()
+     */
+    public Locale getDefaultLocale() {
+        return defaultLocale;
+    }
+
+
+    /**
+     * @see javax.faces.application.Application#setDefaultLocale(java.util.Locale)
+     */
+    public synchronized void setDefaultLocale(Locale locale) {
+
+        Util.notNull("locale", locale);
+
+        defaultLocale = locale;
+
+        if (LOGGER.isLoggable(Level.FINE)) {
+            LOGGER.log(Level.FINE, (MessageFormat.format("set defaultLocale ''{0}''",
+                                                         defaultLocale.getClass().getName())));
+        }
+    }
+
+
+    protected String defaultRenderKitId = null;
+
+
+    /**
+     * @see javax.faces.application.Application#getDefaultRenderKitId()
+     */
+    public String getDefaultRenderKitId() {
+        return defaultRenderKitId;
+    }
+
+
+    /**
+     * @see javax.faces.application.Application#setDefaultRenderKitId(String)
+     */
+    public void setDefaultRenderKitId(String renderKitId) {
+        defaultRenderKitId = renderKitId;
+    }
+
+
+    /**
+     * @see javax.faces.application.Application#addValidator(String, String)
+     */
+    public void addValidator(String validatorId, String validatorClass) {
+
+        Util.notNull("validatorId", validatorId);
+        Util.notNull("validatorClass", validatorClass);
+
+        if (LOGGER.isLoggable(Level.FINE) && validatorMap.containsKey(validatorId)) {
+            LOGGER.log(Level.FINE,
+                       "validatorId {0} has already been registered.  Replacing existing validator class type {1} with {2}.",
+                       new Object[] { validatorId, validatorMap.get(validatorId), validatorClass });    
+        }
+
+        validatorMap.put(validatorId, validatorClass);
+        
+        if (LOGGER.isLoggable(Level.FINE)) {
+            LOGGER.fine(MessageFormat.format("added validator of type ''{0}'' class ''{1}''",
+                                             validatorId,
+                                             validatorClass));
+        }
+
+    }
+
+
+    /**
+     * @see javax.faces.application.Application#createValidator(String)
+     */
+    public Validator createValidator(String validatorId) throws FacesException {
+
+        Util.notNull("validatorId", validatorId);
+        Validator returnVal = (Validator) newThing(validatorId, validatorMap);
+        if (returnVal == null) {
+            Object[] params = {validatorId};
+            if (LOGGER.isLoggable(Level.SEVERE)) {
+                LOGGER.log(Level.SEVERE,
+                        "jsf.cannot_instantiate_validator_error", params);
+            }
+            throw new FacesException(MessageUtils.getExceptionMessageString(
+                MessageUtils.NAMED_OBJECT_NOT_FOUND_ERROR_MESSAGE_ID, params));
+        }
+        if (LOGGER.isLoggable(Level.FINE)) {
+            LOGGER.fine(MessageFormat.format("created validator of type ''{0}''",
+                                             validatorId));
+        }
+        associate.getAnnotationManager().applyValidatorAnnotations(FacesContext.getCurrentInstance(), returnVal);
+        return returnVal;
+    }
+
+
+    /**
+     * @see javax.faces.application.Application#getValidatorIds()
+     */
+    public Iterator<String> getValidatorIds() {        
+        
+        return validatorMap.keySet().iterator();
+               
+    }
+
+    /**
+     * @see javax.faces.application.Application#addDefaultValidatorId(String)
+     */
+    public synchronized void addDefaultValidatorId(String validatorId) {
+
+        Util.notNull("validatorId", validatorId);
+        defaultValidatorInfo = null;
+        defaultValidatorIds.add(validatorId);
+
+    }
+
+    /**
+     * @see javax.faces.application.Application#getDefaultValidatorInfo() 
+     */
+    public Map<String,String> getDefaultValidatorInfo() {
+
+        if (defaultValidatorInfo == null) {
+            synchronized (this) {
+                if (defaultValidatorInfo == null) {
+                    defaultValidatorInfo = new LinkedHashMap<String, String>();
+                    if (!defaultValidatorIds.isEmpty()) {
+                        for (String id : defaultValidatorIds) {
+                            String validatorClass;
+                            Object result = validatorMap.get(id);
+                            if (null != result) {
+                                if (result instanceof Class) {
+                                    validatorClass = ((Class) result).getName();
+                                } else {
+                                    validatorClass = result.toString();
+                                }
+                                defaultValidatorInfo.put(id, validatorClass);
+                            }
+                        }
+
+                    }
+                }
+            }
+            defaultValidatorInfo =
+                  Collections.unmodifiableMap(defaultValidatorInfo);
+        }
+
+        return defaultValidatorInfo;
+
+    }
+
+    /**
+     * @see javax.faces.application.Application#setMessageBundle(String)
+     */
+    public synchronized void setMessageBundle(String messageBundle) {
+        Util.notNull("messageBundle", messageBundle);
+
+        this.messageBundle = messageBundle;
+
+        if (LOGGER.isLoggable(Level.FINE)) {
+            LOGGER.log(Level.FINE, MessageFormat.format("set messageBundle ''{0}''",
+                                                        messageBundle));
+        }
+    }
+
+
+    /**
+     * @see javax.faces.application.Application#getMessageBundle()
+     */
+    public String getMessageBundle() {
+        return messageBundle;
+    }
+    
+    
+    /**
+     * <p>PRECONDITIONS: the values in the Map are either Strings
+     * representing fully qualified java class names, or java.lang.Class
+     * instances.</p>
+     * <p>ALGORITHM: Look in the argument map for a value for the argument
+     * key.  If found, if the value is instanceof String, assume the String
+     * specifies a fully qualified java class name and obtain the
+     * java.lang.Class instance for that String using Util.loadClass().
+     * Replace the String instance in the argument map with the Class
+     * instance.  If the value is instanceof Class, proceed.  Assert that the
+     * value is either instanceof java.lang.Class or java.lang.String.</p>
+     * <p>Now that you have a java.lang.class, call its newInstance and
+     * return it as the result of this method.</p>
+     *
+     * @param key Used to look up the value in the <code>Map</code>.
+     * @param map The <code>Map</code> that will be searched.
+     * @return The new object instance.
+     */
+    protected Object newThing(String key, ApplicationInstanceFactoryMetadataMap<String, Object> map) {
+        assert (key != null && map != null);
+
+        Object result;
+        Class<?> clazz;
+        Object value;
+
+        value = map.get(key);
+        if (value == null) {
+            return null;
+        }
+        assert (value instanceof String || value instanceof Class);
+        if (value instanceof String) {
+             String cValue = (String) value;
+             try {
+               clazz = Util.loadClass(cValue, value);
+                if (!associate.isDevModeEnabled()) {
+                    map.put(key, clazz);
+                } else {
+                  map.scanForAnnotations(key, clazz);
+                }
+                assert (clazz != null);
+             } catch (Exception e) {
+                 throw new FacesException(e.getMessage(), e);
+             }
+        } else {
+            clazz = (Class) value;
+        }
+        
+        try {
+            result = clazz.newInstance();
+        } catch (Throwable t) {
+            Throwable previousT;
+            do {
+                previousT = t;
+                if (LOGGER.isLoggable(Level.SEVERE)) {
+                	LOGGER.log(Level.SEVERE, "Unable to load class: ", t);
+                }
+            } while (null != (t = t.getCause()));
+            t = previousT;
+            
+            throw new FacesException((MessageUtils.getExceptionMessageString(
+                  MessageUtils.CANT_INSTANTIATE_CLASS_ERROR_MESSAGE_ID,
+                  clazz.getName())), t);
+        }
+
+        if (map.hasAnnotations(key)) {
+            InjectionProvider injectionProvider = associate.getInjectionProvider();
+            try {
+                injectionProvider.invokePostConstruct(result);
+            } catch (InjectionProviderException ex) {
+               LOGGER.log(Level.SEVERE, "Unable to invoke @PostConstruct annotated method on instance " + key, ex);
+               throw new FacesException(ex);
+            }
+
+            try {
+                injectionProvider.inject(result);
+            } catch (InjectionProviderException ex) {
+               LOGGER.log(Level.SEVERE, "Unable to inject instance" + key, ex);
+               throw new FacesException(ex);
+            }
+        }
+
+        return result;
+    }
+    
+    /**
+     * <p>The same as newThing except that a single argument constructor
+     * that accepts a Class is looked for before calling the no-arg version.</p>
+     *
+     * <p>PRECONDITIONS: the values in the Map are either Strings
+     * representing fully qualified java class names, or java.lang.Class
+     * instances.</p>
+     * <p>ALGORITHM: Look in the argument map for a value for the argument
+     * key.  If found, if the value is instanceof String, assume the String
+     * specifies a fully qualified java class name and obtain the
+     * java.lang.Class instance for that String using Util.loadClass().
+     * Replace the String instance in the argument map with the Class
+     * instance.  If the value is instanceof Class, proceed.  Assert that the
+     * value is either instanceof java.lang.Class or java.lang.String.</p>
+     * <p>Now that you have a java.lang.class, call its newInstance and
+     * return it as the result of this method.</p>
+     *
+     * @param key Used to look up the value in the <code>Map</code>.
+     * @param map The <code>Map</code> that will be searched.
+     * @param targetClass the target class for the single argument ctor
+     * @return The new object instance.
+     */
+    protected Object newConverter(Class<?> key, Map<Class<?>,Object> map, Class<?> targetClass) {
+        assert (key != null && map != null);
+
+        Object result = null;
+        Class<?> clazz;
+        Object value;
+
+        value = map.get(key);
+        if (value == null) {
+            return null;
+        }
+        assert (value instanceof String || value instanceof Class);
+        if (value instanceof String) {
+            String cValue = (String) value;
+             try {
+                clazz = Util.loadClass(cValue, value);
+                if (!associate.isDevModeEnabled()) {
+                    map.put(key, clazz);
+                }
+                assert (clazz != null);
+             } catch (Exception e) {
+                 throw new FacesException(e.getMessage(), e);
+             }
+        } else {
+            clazz = (Class) value;
+        }
+        
+        Constructor ctor = 
+              ReflectionUtils.lookupConstructor(clazz, Class.class);
+        Throwable cause = null;
+        if (ctor != null) {
+            try {
+                result = ctor.newInstance(targetClass);
+            } catch (Exception e) {
+                cause = e;
+            }
+        } else {
+            try {
+                result = clazz.newInstance();
+            } catch (Exception e) {
+                cause = e;
+            }
+        }       
+        
+        if (null != cause) {           
+            throw new FacesException((MessageUtils.getExceptionMessageString(
+                    MessageUtils.CANT_INSTANTIATE_CLASS_ERROR_MESSAGE_ID, 
+                    clazz.getName())), cause);
+            
+        }
+        return result;
+    }
+
+
+    // --------------------------------------------------------- Private Methods
+
+    public static final String THIS_LIBRARY = 
+            "com.sun.faces.composite.this.library";
+
+    private UIComponent createComponentFromScriptResource(FacesContext context,
+                                                          Resource scriptComponentResource,
+                                                          Resource componentResource) {
+
+        UIComponent result = null;
+
+        String className = scriptComponentResource.getResourceName();
+        int lastDot = className.lastIndexOf('.');
+        className = className.substring(0, lastDot);
+
+        try {
+
+            Class<?> componentClass = (Class<?>) componentMap.get(className);
+            if (componentClass == null) {
+                componentClass = Util.loadClass(className, this);
+            }
+            if (!associate.isDevModeEnabled()) {
+                componentMap.put(className, componentClass);
+            }
+            result = (UIComponent) componentClass.newInstance();
+        } catch (IllegalAccessException ex) {
+        	if (LOGGER.isLoggable(Level.SEVERE)) {
+        		LOGGER.log(Level.SEVERE, null, ex);
+        	}
+        } catch (InstantiationException ex) {
+        	if (LOGGER.isLoggable(Level.SEVERE)) {
+        		LOGGER.log(Level.SEVERE, null, ex);
+        	}
+        } catch (ClassNotFoundException ex) {
+        	if (LOGGER.isLoggable(Level.SEVERE)) {
+        		LOGGER.log(Level.SEVERE, null, ex);
+        	}
+        }
+
+        if (result != null) {
+            // Make sure the resource is there for the annotation processor.
+            result.getAttributes().put(Resource.COMPONENT_RESOURCE_KEY, 
+                componentResource);
+            // In case there are any "this" references, 
+            // make sure they can be resolved.
+            context.getAttributes().put(THIS_LIBRARY,
+                    componentResource.getLibraryName());
+            try {
+                associate.getAnnotationManager()
+                        .applyComponentAnnotations(context, result);
+            }
+            finally {
+                context.getAttributes().remove(THIS_LIBRARY);
+            }
+        }
+
+        return result;
+        
+    }
+
+
+    /**
+     * Leveraged by {@link Application#createComponent(String)} and {@link Application#createComponent(javax.faces.context.FacesContext, String, String)}
+     * This method will apply any component and render annotations that may be present.
+     */
+    private UIComponent createComponentApplyAnnotations(FacesContext ctx,
+                                                        String componentType,
+                                                        String rendererType,
+                                                        boolean applyAnnotations) {
+
+        UIComponent c;
+        try {
+            c = (UIComponent) newThing(componentType, componentMap);
+        } catch (Exception ex) {
+            if (LOGGER.isLoggable(Level.SEVERE)) {
+                LOGGER.log(Level.SEVERE,
+                           "jsf.cannot_instantiate_component_error",
+                           componentType);
+            }
+            throw new FacesException(ex);
+        }
+        if (c == null) {
+            Object[] params = {componentType};
+            if (LOGGER.isLoggable(Level.SEVERE)) {
+                    LOGGER.log(Level.SEVERE,
+                               "jsf.cannot_instantiate_component_error",
+                               params);
+            }
+            throw new FacesException(MessageUtils.getExceptionMessageString(
+                    MessageUtils.NAMED_OBJECT_NOT_FOUND_ERROR_MESSAGE_ID, params));
+        }
+
+        if (LOGGER.isLoggable(Level.FINE)) {
+            LOGGER.log(Level.FINE, MessageFormat.format("Created component with component type of ''{0}''",
+                                                        componentType));
+        }
+
+        if (applyAnnotations) {
+            applyAnnotations(ctx, rendererType, c);
+        }
+        return c;
+
+    }
+
+
+    /**
+     * Leveraged by {@link Application#createComponent(javax.el.ValueExpression, javax.faces.context.FacesContext, String)} and
+     * {@link Application#createComponent(javax.el.ValueExpression, javax.faces.context.FacesContext, String, String)}.
+     * This method will apply any component and render annotations that may be present.
+     */
+    private UIComponent createComponentApplyAnnotations(FacesContext ctx,
+                                                        ValueExpression componentExpression,
+                                                        String componentType,
+                                                        String rendererType,
+                                                        boolean applyAnnotations) {
+
+        UIComponent c;
+
+        try {
+            c = (UIComponent) componentExpression
+                  .getValue(ctx.getELContext());
+            
+            if (c == null) {
+                c = this.createComponentApplyAnnotations(ctx,
+                                                         componentType,
+                                                         rendererType,
+                                                         applyAnnotations);
+                componentExpression.setValue((ctx.getELContext()), c);
+            } else if (applyAnnotations) {
+                this.applyAnnotations(ctx, rendererType, c);
+            }
+        } catch (Exception ex) {
+            throw new FacesException(ex);
+        }
+
+        return c;
+
+    }
+
+
+    /**
+     * Process any annotations associated with this component/renderer.
+     */
+    private void applyAnnotations(FacesContext ctx,
+                                  String rendererType,
+                                  UIComponent c) {
+
+        if (c != null && ctx != null) {
+            associate.getAnnotationManager()
+                  .applyComponentAnnotations(ctx, c);
+            if (rendererType != null) {
+                RenderKit rk = ctx.getRenderKit();
+                Renderer r = null;
+                if (rk != null) {
+                    r = rk.getRenderer(c.getFamily(), rendererType);
+                    if (r != null) {
+                        c.setRendererType(rendererType);
+                        associate.getAnnotationManager()
+                           .applyRendererAnnotations(ctx, r, c);
+                    }
+                }
+                if ((rk == null || r == null) && LOGGER.isLoggable(Level.FINE)) {
+                    LOGGER.log(Level.FINE,
+                       "Unable to create Renderer with rendererType {0} for component with component type of {1}",
+                       new Object[] { rendererType, c.getFamily() });
+                }
+            }
+        }
+    }
+
+    /**
+     * @return the SystemEventListeners that should be used for the
+     * provided combination of SystemEvent and source.
+     */
+    private Set<SystemEventListener> getListeners(Class<? extends SystemEvent> systemEvent,
+                                                  Class<?> sourceClass) {
+
+        Set<SystemEventListener> listeners = null;
+        EventInfo sourceInfo =
+              systemEventHelper.getEventInfo(systemEvent, sourceClass);
+        if (sourceInfo != null) {
+            listeners = sourceInfo.getListeners();
+        }
+
+        return listeners;
+
+    }
+
+    private SystemEvent invokeViewListenersFor(FacesContext ctx,
+                                               Class<? extends SystemEvent> systemEventClass,
+                                               SystemEvent event,
+                                               Object source) {
+        SystemEvent result = event;
+
+        if (listenerInvocationGuard.isGuardSet(ctx, systemEventClass)) {
+            return result;
+        }
+        listenerInvocationGuard.setGuard(ctx, systemEventClass);
+
+
+        UIViewRoot root = ctx.getViewRoot();
+        try {
+            if (root != null) {
+                List<SystemEventListener> listeners = root.getViewListenersForEventClass(systemEventClass);
+                if (null == listeners) {
+                    return null;
+                }
+
+                EventInfo rootEventInfo =
+                        systemEventHelper.getEventInfo(systemEventClass,
+                        UIViewRoot.class);
+                // process view listeners
+                result = processListenersAccountingForAdds(listeners,
+                        event,
+                        source,
+                        rootEventInfo);
+            }
+        } finally {
+            listenerInvocationGuard.clearGuard(ctx, systemEventClass);
+        }
+        return result;
+
+    }
+
+    /*
+     * This class encapsulates the behavior to prevent infinite loops
+     * when the publishing of one event leads to the queueing of another
+     * event of the same type.  Special provision is made to allow the
+     * case where this guaring mechanims happens on a per-FacesContext,
+     * per-SystemEvent.class type basis.
+     */
+
+    private ReentrantLisneterInvocationGuard listenerInvocationGuard = new ReentrantLisneterInvocationGuard();
+
+    private class ReentrantLisneterInvocationGuard {
+
+        public boolean isGuardSet(FacesContext ctx, Class<? extends SystemEvent> systemEventClass) {
+            Boolean result;
+            Map<Class<? extends SystemEvent>, Boolean> data = getDataStructure(ctx);
+            result = data.get(systemEventClass);
+
+            return (null == result ? false : result);
+        }
+
+        public void setGuard(FacesContext ctx, Class<? extends SystemEvent> systemEventClass) {
+            Map<Class<? extends SystemEvent>, Boolean> data = getDataStructure(ctx);
+            data.put(systemEventClass, Boolean.TRUE);
+
+        }
+
+        public void clearGuard(FacesContext ctx, Class<? extends SystemEvent> systemEventClass) {
+            Map<Class<? extends SystemEvent>, Boolean> data = getDataStructure(ctx);
+            data.put(systemEventClass, Boolean.FALSE);
+            
+        }
+
+        private Map<Class<? extends SystemEvent>, Boolean> getDataStructure(FacesContext ctx) {
+            Map<Class<? extends SystemEvent>, Boolean> result = null;
+            Map<Object, Object> ctxMap = ctx.getAttributes();
+            final String IS_PROCESSING_LISTENERS_KEY =
+                    "com.sun.faces.application.ApplicationImpl.IS_PROCESSING_LISTENERS";
+
+            if (null == (result = (Map<Class<? extends SystemEvent>, Boolean>)
+                         ctxMap.get(IS_PROCESSING_LISTENERS_KEY))) {
+                result = new HashMap<Class<? extends SystemEvent>, Boolean>(12);
+                ctxMap.put(IS_PROCESSING_LISTENERS_KEY, result);
+            }
+
+            return result;
+        }
+
+    }
+
+    /**
+     * @return process any listeners for the specified SystemEventListenerHolder
+     *  and return any SystemEvent that may have been created as a side-effect
+     *  of processing the listeners.
+     */
+    private SystemEvent invokeComponentListenersFor(Class<? extends SystemEvent> systemEventClass,
+                                                    Object source) {
+
+        if (source instanceof SystemEventListenerHolder) {
+
+            List<SystemEventListener> listeners = ((SystemEventListenerHolder) source).getListenersForEventClass(systemEventClass);
+            if (null == listeners) {
+                return null;
+            }
+            EventInfo eventInfo =
+                  compSysEventHelper.getEventInfo(systemEventClass,
+                                                  source.getClass());
+            return processListeners(listeners,
+                                    null,
+                                    source,
+                                    eventInfo);
+        }
+        return null;
+
+    }
+
+    /**
+     * Traverse the <code>List</code> of listeners and invoke any that are relevent
+     * for the specified source.
+     *
+     * @throws javax.faces.event.AbortProcessingException propagated from the listener invocation
+     */
+    private SystemEvent invokeListenersFor(Class<? extends SystemEvent> systemEventClass,
+                                           SystemEvent event,
+                                           Object source,
+                                           Class<?> sourceBaseType,
+                                           boolean useSourceLookup)
+    throws AbortProcessingException {
+
+        EventInfo eventInfo = systemEventHelper.getEventInfo(systemEventClass,
+                                                             source,
+                                                             sourceBaseType,
+                                                             useSourceLookup);
+        if (eventInfo != null) {
+            Set<SystemEventListener> listeners = eventInfo.getListeners();
+            event = processListeners(listeners, event, source, eventInfo);
+        }
+
+        return event;
+
+    }
+
+    /**
+     * Iterate through and invoke the listeners.  If the passed event was
+     * <code>null</code>, create the event, and return it.
+     */
+    private SystemEvent processListeners(Collection<SystemEventListener> listeners,
+                                         SystemEvent event,
+                                         Object source,
+                                         EventInfo eventInfo) {
+
+          if (listeners != null && !listeners.isEmpty()) {
+            ArrayList<SystemEventListener> list = 
+                    new ArrayList<SystemEventListener>(listeners);
+            
+            for (SystemEventListener curListener : list) {
+                if (curListener != null && curListener.isListenerForSource(source)) {
+                    if (event == null) {
+                        event = eventInfo.createSystemEvent(source);
+                    }
+                    assert (event != null);
+                    if (event.isAppropriateListener(curListener)) {
+                        event.processListener(curListener);
+                    }
+                }
+            }
+        }
+
+        return event;
+
+    }
+
+    private SystemEvent processListenersAccountingForAdds(List<SystemEventListener> listeners,
+                                         SystemEvent event,
+                                         Object source,
+                                         EventInfo eventInfo) {
+
+          if (listeners != null && !listeners.isEmpty()) {
+
+              // copy listeners
+              // go thru copy completely
+              // compare copy to original
+              // if original differs from copy, make a new copy.
+              // The new copy consists of the original list - processed
+
+              SystemEventListener listenersCopy[] =
+                      new SystemEventListener[listeners.size()];
+              int i = 0;
+              for (i = 0; i < listenersCopy.length; i++) {
+                  listenersCopy[i] = listeners.get(i);
+              }
+
+              Map<SystemEventListener, Boolean> processedListeners =
+                      new HashMap<SystemEventListener, Boolean>(listeners.size());
+              boolean processedSomeEvents = false,
+                      originalDiffersFromCopy = false;
+
+              do {
+                  i = 0;
+                  originalDiffersFromCopy = false;
+                  if (0 < listenersCopy.length) {
+                      for (i = 0; i < listenersCopy.length; i++) {
+                          SystemEventListener curListener = listenersCopy[i];
+                          if (curListener != null && curListener.isListenerForSource(source)) {
+                              if (event == null) {
+                                  event = eventInfo.createSystemEvent(source);
+                              }
+                              assert (event != null);
+                              if (!processedListeners.containsKey(curListener)
+                                       && event.isAppropriateListener(curListener)) {
+                                  processedSomeEvents = true;
+                                  event.processListener(curListener);
+                                  processedListeners.put(curListener, Boolean.TRUE);
+                              }
+                          }
+                      }
+                      if (originalDiffersFromCopy(listeners, listenersCopy)) {
+                          originalDiffersFromCopy = true;
+                          listenersCopy = copyListWithExclusions(listeners, processedListeners);
+                      }
+                  }
+              } while (originalDiffersFromCopy && processedSomeEvents);
+        }
+
+        return event;
+
+    }
+
+    private boolean originalDiffersFromCopy(Collection<SystemEventListener> original,
+            SystemEventListener copy[]) {
+        boolean foundDifference = false;
+        int i = 0, originalLen = original.size(), copyLen = copy.length;
+
+        if (originalLen == copyLen) {
+            SystemEventListener originalItem, copyItem;
+            Iterator<SystemEventListener> iter = original.iterator();
+            while (iter.hasNext() && !foundDifference) {
+                originalItem = iter.next();
+                copyItem = copy[i++];
+                foundDifference = originalItem != copyItem;
+            }
+        } else {
+            foundDifference = true;
+        }
+
+        return foundDifference;
+    }
+
+    private SystemEventListener [] copyListWithExclusions(Collection<SystemEventListener> original,
+            Map<SystemEventListener, Boolean> excludes) {
+        SystemEventListener [] result = null,
+                temp = new SystemEventListener[original.size()];
+        int i = 0;
+        for (SystemEventListener cur : original) {
+            if (!excludes.containsKey(cur)) {
+                temp[i++] = cur;
+            }
+        }
+        result = new SystemEventListener[i];
+        System.arraycopy(temp, 0, result, 0, i);
+
+        return result;
+    }
+    
+	private boolean needsProcessing(FacesContext context, Class<? extends SystemEvent> systemEventClass) {
+		return context.isProcessingEvents() || ExceptionQueuedEvent.class.isAssignableFrom(systemEventClass);
+	}
+
+
+    // ----------------------------------------------------------- Inner Classes
+
+
+    /**
+     * Utility class for dealing with application events.
+     */
+    private static class SystemEventHelper {
+
+        private final Cache<Class<? extends SystemEvent>, SystemEventInfo> systemEventInfoCache;
+
+
+        // -------------------------------------------------------- Constructors
+
+
+        public SystemEventHelper() {
+
+            systemEventInfoCache =
+                  new Cache<Class<? extends SystemEvent>, SystemEventInfo>(
+                        new Factory<Class<? extends SystemEvent>, SystemEventInfo>() {
+                            public SystemEventInfo newInstance(final Class<? extends SystemEvent> arg)
+                                  throws InterruptedException {
+                                return new SystemEventInfo(arg);
+                            }
+                        }
+                  );
+
+        }
+
+
+        // ------------------------------------------------------ Public Methods
+
+
+        public EventInfo getEventInfo(Class<? extends SystemEvent> systemEventClass,
+                                      Class<?> sourceClass) {
+
+            EventInfo info = null;
+            SystemEventInfo systemEventInfo = systemEventInfoCache.get(systemEventClass);
+            if (systemEventInfo != null) {
+                info = systemEventInfo.getEventInfo(sourceClass);
+            }
+
+            return info;
+
+        }
+
+
+        public EventInfo getEventInfo(Class<? extends SystemEvent> systemEventClass,
+                                      Object source,
+                                      Class<?> sourceBaseType,
+                                      boolean useSourceForLookup) {
+
+            Class<?> sourceClass =
+                  ((useSourceForLookup) ?
+                       ((sourceBaseType != null)
+                                          ? sourceBaseType
+                                          : source.getClass())
+                                        : Void.class);
+            return getEventInfo(systemEventClass, sourceClass);
+
+        }
+
+
+    } // END SystemEventHelper
+
+
+    /**
+     * Utility class for dealing with {@link javax.faces.component.UIComponent} events.
+     */
+    private static class ComponentSystemEventHelper {
+
+        private Cache<Class<?>,Cache<Class<? extends SystemEvent>,EventInfo>> sourceCache;
+
+
+        // -------------------------------------------------------- Constructors
+
+
+        public ComponentSystemEventHelper() {
+
+            // Initialize the 'sources' cache for, ahem, readability...
+            // ~generics++
+            Factory<Class<?>, Cache<Class<? extends SystemEvent>, EventInfo>> eventCacheFactory =
+                  new Factory<Class<?>, Cache<Class<? extends SystemEvent>, EventInfo>>() {
+                      public Cache<Class<? extends SystemEvent>, EventInfo> newInstance(
+                            final Class<?> sourceClass)
+                            throws InterruptedException {
+                          Factory<Class<? extends SystemEvent>, EventInfo> eventInfoFactory =
+                                new Factory<Class<? extends SystemEvent>, EventInfo>() {
+                                    public EventInfo newInstance(final Class<? extends SystemEvent> systemEventClass)
+                                          throws InterruptedException {
+                                        return new EventInfo(systemEventClass, sourceClass);
+                                    }
+                                };
+                          return new Cache<Class<? extends SystemEvent>, EventInfo>(eventInfoFactory);
+                      }
+                  };
+            sourceCache = new Cache<Class<?>,Cache<Class<? extends SystemEvent>,EventInfo>>(eventCacheFactory);
+
+        }
+
+        // ------------------------------------------------------ Public Methods
+
+
+        public EventInfo getEventInfo(Class<? extends SystemEvent> systemEvent,
+                                      Class<?> sourceClass) {
+
+            Cache<Class<? extends SystemEvent>, EventInfo> eventsCache =
+                  sourceCache.get(sourceClass);
+            return eventsCache.get(systemEvent);
+
+        }
+
+    } // END ComponentSystemEventHelper
+
+
+    /**
+     * Simple wrapper class for application level SystemEvents.  It provides the
+     * structure to map a single SystemEvent to multiple sources which are
+     * represented by <code>SourceInfo</code> instances.
+     */
+    private static class SystemEventInfo {
+
+        private Cache<Class<?>,EventInfo> cache = new Cache<Class<?>,EventInfo>(
+              new Factory<Class<?>, EventInfo>() {
+                  public EventInfo newInstance(Class<?> arg)
+                        throws InterruptedException {
+                      return new EventInfo(systemEvent, arg);
+                  }
+              }
+        );
+        private Class<? extends SystemEvent> systemEvent;
+
+
+        // -------------------------------------------------------- Constructors
+
+
+        private SystemEventInfo(Class<? extends SystemEvent> systemEvent) {
+
+            this.systemEvent = systemEvent;
+
+        }
+
+
+        // ------------------------------------------------------ Public Methods
+
+
+        public EventInfo getEventInfo(Class<?> source) {
+
+            Class<?> sourceClass = ((source == null) ? Void.class : source);
+            return cache.get(sourceClass);
+
+        }
+
+    } // END SystemEventInfo
+
+
+    /**
+     * Represent a logical association between a SystemEvent and a Source.
+     * This call will contain the Listeners specific to this association
+     * as well as provide a method to construct new SystemEvents as required.
+     */
+    private static class EventInfo {
+        private Class<? extends SystemEvent> systemEvent;
+        private Class<?> sourceClass;
+        private Set<SystemEventListener> listeners;
+        private Constructor eventConstructor;
+        private Map<Class<?>,Constructor> constructorMap;
+
+        // -------------------------------------------------------- Constructors
+
+
+        public EventInfo(Class<? extends SystemEvent> systemEvent,
+                         Class<?> sourceClass) {
+
+            this.systemEvent = systemEvent;
+            this.sourceClass = sourceClass;
+            this.listeners = new CopyOnWriteArraySet<SystemEventListener>();
+            this.constructorMap = new HashMap<Class<?>,Constructor>();
+            if (!sourceClass.equals(Void.class)) {
+                eventConstructor = getEventConstructor(sourceClass);
+            }
+
+        }
+
+        // ------------------------------------------------------ Public Methods
+
+
+        public Set<SystemEventListener> getListeners() {
+
+            return listeners;
+
+        }
+
+
+        public SystemEvent createSystemEvent(Object source) {
+
+            Constructor toInvoke = getCachedConstructor(source.getClass());
+            if (toInvoke != null) {
+                try {
+                    return (SystemEvent) toInvoke.newInstance(source);
+                } catch (Exception e) {
+                    throw new FacesException(e);
+                }
+            }
+            return null;
+
+        }
+
+
+        // ----------------------------------------------------- Private Methods
+
+
+        private Constructor getCachedConstructor(Class<?> source) {
+
+            if (eventConstructor != null) {
+                return eventConstructor;
+            } else {
+                Constructor c = constructorMap.get(source);
+                if (c == null) {
+                    c = getEventConstructor(source);
+                    if (c != null) {
+                        constructorMap.put(source, c);
+                    }
+                }
+                return c;
+            }
+
+        }
+
+
+        private Constructor getEventConstructor(Class<?> source) {
+
+            Constructor ctor = null;
+            try {
+                return systemEvent.getDeclaredConstructor(source);
+            } catch (NoSuchMethodException ignored) {
+                Constructor[] ctors = systemEvent.getConstructors();
+                if (ctors != null) {
+                    for (Constructor c : ctors) {
+                        Class<?>[] params = c.getParameterTypes();
+                        if (params.length != 1) {
+                            continue;
+                        }
+                        if (params[0].isAssignableFrom(source)) {
+                            return c;
+                        }
+                    }
+                }
+                if (eventConstructor == null && LOGGER.isLoggable(Level.FINE)) {
+                    LOGGER.log(Level.FINE,
+                        "Unable to find Constructor within {0} that accepts {1} instances.",
+                        new Object[] { systemEvent.getName(), sourceClass.getName() });
+                }
+            }
+            return ctor;
+
+        }
+
+    } // END SourceInfo
+
+
+    private static final class ComponentResourceClassNotFound { }
+
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/application/ApplicationInstanceFactoryMetadataMap.java b/jsf-ri/src/main/java/com/sun/faces/application/ApplicationInstanceFactoryMetadataMap.java
new file mode 100644
index 0000000..ea0601c
--- /dev/null
+++ b/jsf-ri/src/main/java/com/sun/faces/application/ApplicationInstanceFactoryMetadataMap.java
@@ -0,0 +1,84 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright 1997-2011 Sun Microsystems, Inc. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License. You can obtain
+ * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
+ * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
+ * Sun designates this particular file as subject to the "Classpath" exception
+ * as provided by Sun in the GPL Version 2 section of the License file that
+ * accompanied this code.  If applicable, add the following below the License
+ * Header, with the fields enclosed by brackets [] replaced by your own
+ * identifying information: "Portions Copyrighted [year]
+ * [name of copyright owner]"
+ *
+ * Contributor(s):
+ *
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.application;
+
+import com.sun.faces.util.MetadataWrapperMap;
+import com.sun.faces.util.Util;
+import java.util.HashMap;
+import java.util.Map;
+
+public class ApplicationInstanceFactoryMetadataMap<K, V> extends MetadataWrapperMap<String, Object> {
+    public enum METADATA {
+        hasAnnotations
+    };
+
+    public ApplicationInstanceFactoryMetadataMap(Map<String, Object> toWrap) {
+        super(toWrap);
+    }
+
+    public boolean hasAnnotations(String key) {
+        boolean result = false;
+        Map<Object, Object> metadataForKey = getMetadata().get(key);
+        Object objResult = metadataForKey.get(METADATA.hasAnnotations);
+        if (null != objResult) {
+            result = (Boolean) objResult;
+        }
+
+        return result;
+    }
+
+    public void scanForAnnotations(String key, Class value) {
+        onPut(key, value);
+    }
+
+    @Override
+    protected Object onPut(String key, Object value) {
+        if (value instanceof Class) {
+            Map<Object, Object> metadataForKey = getMetadata().get(key);
+            if (null == metadataForKey) {
+                metadataForKey = new HashMap<Object, Object>();
+                getMetadata().put(key, metadataForKey);
+            }
+            metadataForKey.put(METADATA.hasAnnotations, (Boolean)
+                        Util.classHasAnnotations((Class) value));
+
+        }
+        return null;
+    }
+
+
+
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/application/ApplicationResourceBundle.java b/jsf-ri/src/main/java/com/sun/faces/application/ApplicationResourceBundle.java
index a5ac766..aacc670 100644
--- a/jsf-ri/src/main/java/com/sun/faces/application/ApplicationResourceBundle.java
+++ b/jsf-ri/src/main/java/com/sun/faces/application/ApplicationResourceBundle.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/application/ApplicationStateInfo.java b/jsf-ri/src/main/java/com/sun/faces/application/ApplicationStateInfo.java
index 88d5a1f..ae84b35 100644
--- a/jsf-ri/src/main/java/com/sun/faces/application/ApplicationStateInfo.java
+++ b/jsf-ri/src/main/java/com/sun/faces/application/ApplicationStateInfo.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -38,13 +42,13 @@ package com.sun.faces.application;
 
 import com.sun.faces.config.WebConfiguration;
 
-import javax.faces.context.FacesContext;
 import java.util.Arrays;
 import java.util.HashSet;
 import java.util.Set;
 
 import static com.sun.faces.config.WebConfiguration.BooleanWebContextInitParameter.PartialStateSaving;
 import static com.sun.faces.config.WebConfiguration.WebContextInitParameter.FullStateSavingViewIds;
+import com.sun.faces.util.MessageUtils;
 
 /**
  * This class maintains per-application information pertaining
@@ -79,11 +83,17 @@ public class ApplicationStateInfo {
 
     /**
      * @param viewId the view ID to check
+     * @throws IllegalArgumentException if viewId is null
      * @return <code>true</code> if partial state saving should be used for the
      *  specified view ID, otherwise <code>false</code>
      */
     public boolean usePartialStateSaving(String viewId) {
 
+        if (viewId == null) {
+            throw new IllegalArgumentException(MessageUtils.getExceptionMessageString(
+                MessageUtils.NULL_VIEW_ID_ERROR_MESSAGE_ID));
+        }
+
         return (partialStateSaving && !fullStateViewIds.contains(viewId));
 
     }
diff --git a/jsf-ri/src/main/java/com/sun/faces/application/ByteArrayWebOutputStream.java b/jsf-ri/src/main/java/com/sun/faces/application/ByteArrayWebOutputStream.java
index 7fc7563..87c83f6 100644
--- a/jsf-ri/src/main/java/com/sun/faces/application/ByteArrayWebOutputStream.java
+++ b/jsf-ri/src/main/java/com/sun/faces/application/ByteArrayWebOutputStream.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/application/ConverterPropertyEditorBase.java b/jsf-ri/src/main/java/com/sun/faces/application/ConverterPropertyEditorBase.java
index 8175357..cf07436 100644
--- a/jsf-ri/src/main/java/com/sun/faces/application/ConverterPropertyEditorBase.java
+++ b/jsf-ri/src/main/java/com/sun/faces/application/ConverterPropertyEditorBase.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -33,6 +37,7 @@
  * only if the new code is made subject to such option by the copyright
  * holder.
  */
+
 package com.sun.faces.application;
 
 import java.beans.PropertyEditorSupport;
@@ -126,4 +131,4 @@ public abstract class ConverterPropertyEditorBase
             return super.getAsText();
         }
     }
-}
\ No newline at end of file
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/application/ConverterPropertyEditorFactory.java b/jsf-ri/src/main/java/com/sun/faces/application/ConverterPropertyEditorFactory.java
index b10dc3f..4c35382 100644
--- a/jsf-ri/src/main/java/com/sun/faces/application/ConverterPropertyEditorFactory.java
+++ b/jsf-ri/src/main/java/com/sun/faces/application/ConverterPropertyEditorFactory.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -33,6 +37,7 @@
  * only if the new code is made subject to such option by the copyright
  * holder.
  */
+
 package com.sun.faces.application;
 
 import java.io.ByteArrayOutputStream;
@@ -459,6 +464,9 @@ public class ConverterPropertyEditorFactory {
                 try {
                     c = myLoader.loadClass(name);
                 } catch (ClassNotFoundException ignored) {
+                    if (LOGGER.isLoggable(Level.FINEST)) {
+                        LOGGER.log(Level.FINEST, "Ignoring ClassNotFoundException, continuing with parent ClassLoader.", ignored);
+                    }
                 }
             }
             // Otherwise go ahead with the targetLoader and with the dynamic
@@ -566,7 +574,7 @@ public class ConverterPropertyEditorFactory {
     /**
      * Return a PropertyEditor class appropriate for editing the given
      * <code>targetClass</code>. The new class will be defined from a
-     * {@link DisposableClassLoader}.
+     * DisposableClassLoader.
      * 
      * @param targetClass
      *            the class of object that the returned property editor class
@@ -636,6 +644,9 @@ public class ConverterPropertyEditorFactory {
         try {
             utf8 = text.getBytes("UTF-8");
         } catch (UnsupportedEncodingException e) {
+            // The DM_DEFAULT_ENCODING warning is acceptable here
+            // because we explicitly *want* to use the Java runtime's
+            // default encoding.
             utf8 = text.getBytes();
         }
         byte[] info = new byte[utf8.length + 3];
diff --git a/jsf-ri/src/main/java/com/sun/faces/application/ConverterPropertyEditorFor_XXXX.java b/jsf-ri/src/main/java/com/sun/faces/application/ConverterPropertyEditorFor_XXXX.java
index f6d3e39..2160769 100644
--- a/jsf-ri/src/main/java/com/sun/faces/application/ConverterPropertyEditorFor_XXXX.java
+++ b/jsf-ri/src/main/java/com/sun/faces/application/ConverterPropertyEditorFor_XXXX.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/application/InjectionApplicationFactory.java b/jsf-ri/src/main/java/com/sun/faces/application/InjectionApplicationFactory.java
index da19a2b..991cdaf 100644
--- a/jsf-ri/src/main/java/com/sun/faces/application/InjectionApplicationFactory.java
+++ b/jsf-ri/src/main/java/com/sun/faces/application/InjectionApplicationFactory.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -47,6 +51,7 @@ import javax.faces.context.FacesContext;
 
 import com.sun.faces.util.FacesLogger;
 import com.sun.faces.util.Util;
+import java.util.Map;
 import javax.faces.FacesWrapper;
 
 /**
@@ -68,6 +73,8 @@ public class InjectionApplicationFactory extends ApplicationFactory implements F
 
     // ------------------------------------------------------------ Constructors
 
+    public InjectionApplicationFactory() {
+    }
 
     public InjectionApplicationFactory(ApplicationFactory delegate) {
 
@@ -126,11 +133,8 @@ public class InjectionApplicationFactory extends ApplicationFactory implements F
 
         if (defaultApplication == null) {
             FacesContext ctx = FacesContext.getCurrentInstance();
-            String attrName = ApplicationImpl.class.getName();
-            defaultApplication = (Application) ctx.getExternalContext()
-                  .getApplicationMap().get(attrName);
-            ctx.getExternalContext().getApplicationMap()
-                  .remove(attrName);
+            defaultApplication = InjectionApplicationFactory.
+                    removeApplicationInstance(ctx.getExternalContext().getApplicationMap());
         }
         if (defaultApplication != null) {
             try {
@@ -154,4 +158,15 @@ public class InjectionApplicationFactory extends ApplicationFactory implements F
         }
     }
 
+    // ------------------------------------------------- Package private Methods
+
+    static void setApplicationInstance(Application app) {
+        Map<String, Object> appMap = FacesContext.getCurrentInstance().getExternalContext().getApplicationMap();
+        appMap.put(InjectionApplicationFactory.class.getName(), app);
+    }
+
+    static Application removeApplicationInstance(Map<String, Object> appMap) {
+        return (Application) appMap.remove(InjectionApplicationFactory.class.getName());
+    }
+
 }
diff --git a/jsf-ri/src/main/java/com/sun/faces/application/JavaFlowLoaderHelper.java b/jsf-ri/src/main/java/com/sun/faces/application/JavaFlowLoaderHelper.java
new file mode 100644
index 0000000..bee0435
--- /dev/null
+++ b/jsf-ri/src/main/java/com/sun/faces/application/JavaFlowLoaderHelper.java
@@ -0,0 +1,119 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.application;
+
+import com.sun.faces.config.WebConfiguration;
+import com.sun.faces.flow.FlowDiscoveryCDIExtension;
+import com.sun.faces.util.FacesLogger;
+import com.sun.faces.util.Util;
+import java.io.IOException;
+import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.enterprise.inject.spi.Bean;
+import javax.enterprise.inject.spi.BeanManager;
+import javax.enterprise.inject.spi.Producer;
+import javax.faces.context.FacesContext;
+import javax.faces.flow.Flow;
+import javax.faces.flow.FlowHandler;
+import javax.faces.flow.builder.FlowDefinition;
+
+class JavaFlowLoaderHelper {
+    private static final Logger LOGGER = FacesLogger.APPLICATION.getLogger();
+
+    
+    synchronized void loadFlows(FacesContext context, FlowHandler flowHandler) throws IOException {
+        BeanManager beanManager = (BeanManager) 
+                Util.getCDIBeanManager(context.getExternalContext().getApplicationMap());
+        Bean<?> extensionImpl = beanManager.resolve(beanManager.getBeans(FlowDiscoveryCDIExtension.class));
+        if (null == extensionImpl) {
+            if (LOGGER.isLoggable(Level.SEVERE)) {
+                LOGGER.log(Level.SEVERE, "Unable to obtain {0} from CDI implementation.  Flows described with {1} are unavailable.", 
+                        new String [] {
+                            FlowDiscoveryCDIExtension.class.getName(),
+                            FlowDefinition.class.getName()
+                        });
+            }
+            return;
+        }
+        javax.enterprise.context.spi.CreationalContext<?> creationalContext = beanManager.createCreationalContext(extensionImpl);
+        FlowDiscoveryCDIExtension myExtension = 
+                (FlowDiscoveryCDIExtension) beanManager.getReference(extensionImpl, 
+                FlowDiscoveryCDIExtension.class, creationalContext);
+        
+        List<Producer<Flow>> flowProducers = myExtension.getFlowProducers();
+        WebConfiguration config = WebConfiguration.getInstance();
+        if (!flowProducers.isEmpty()) {
+            enableClientWindowModeIfNecessary(context);
+        }
+        
+        for (Producer<Flow> cur : flowProducers) {
+            Flow toAdd = cur.produce(beanManager.<Flow>createCreationalContext(null));
+            if (null == toAdd) {
+                LOGGER.log(Level.SEVERE, "Flow producer method {0}() returned null.  Ignoring.", cur.toString());
+            } else {
+                flowHandler.addFlow(context, toAdd);
+                config.setHasFlows(true);
+            }
+        }
+        
+    }
+    
+    private void enableClientWindowModeIfNecessary(FacesContext context) {
+        
+        WebConfiguration config = WebConfiguration.getInstance(context.getExternalContext());
+        
+        String optionValue = config.getOptionValue(WebConfiguration.WebContextInitParameter.ClientWindowMode);
+        boolean clientWindowNeedsEnabling = false;
+        if ("none".equals(optionValue)) {
+            clientWindowNeedsEnabling = true;
+            String featureName = 
+                    WebConfiguration.WebContextInitParameter.ClientWindowMode.getQualifiedName();
+            LOGGER.log(Level.WARNING, 
+                    "{0} was set to none, but Faces Flows requires {0} is enabled.  Setting to ''url''.", new Object[]{featureName});
+        } else if (null == optionValue) {
+            clientWindowNeedsEnabling = true;
+        }
+        if (clientWindowNeedsEnabling) {
+            config.setOptionValue(WebConfiguration.WebContextInitParameter.ClientWindowMode, "url");
+        }
+    }
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/application/NamedEventManager.java b/jsf-ri/src/main/java/com/sun/faces/application/NamedEventManager.java
index 87e00b6..44244a4 100644
--- a/jsf-ri/src/main/java/com/sun/faces/application/NamedEventManager.java
+++ b/jsf-ri/src/main/java/com/sun/faces/application/NamedEventManager.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/application/NavigationHandlerImpl.java b/jsf-ri/src/main/java/com/sun/faces/application/NavigationHandlerImpl.java
index 13e1aa3..3b430b0 100644
--- a/jsf-ri/src/main/java/com/sun/faces/application/NavigationHandlerImpl.java
+++ b/jsf-ri/src/main/java/com/sun/faces/application/NavigationHandlerImpl.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -36,6 +40,11 @@
 
 package com.sun.faces.application;
 
+import com.sun.faces.RIConstants;
+import com.sun.faces.config.InitFacesContext;
+import com.sun.faces.flow.FlowHandlerImpl;
+import com.sun.faces.flow.FlowImpl;
+import com.sun.faces.flow.builder.MutableNavigationCase;
 import javax.faces.FacesException;
 import javax.faces.application.NavigationCase;
 import javax.faces.application.ViewHandler;
@@ -43,18 +52,32 @@ import javax.faces.component.UIViewRoot;
 import javax.faces.context.ExternalContext;
 import javax.faces.context.FacesContext;
 import javax.faces.context.PartialViewContext;
-
 import java.util.*;
 import java.util.regex.Pattern;
 import java.util.regex.Matcher;
 import java.util.logging.Level;
 import java.util.logging.Logger;
-
 import com.sun.faces.util.MessageUtils;
 import com.sun.faces.util.Util;
 import com.sun.faces.util.FacesLogger;
+import java.util.concurrent.ConcurrentHashMap;
+import javax.el.ELContext;
+import javax.el.MethodExpression;
+import javax.el.ValueExpression;
 import javax.faces.application.ConfigurableNavigationHandler;
 import javax.faces.application.FacesMessage;
+import javax.faces.component.UIViewAction;
+import javax.faces.context.Flash;
+import javax.faces.flow.FlowCallNode;
+import javax.faces.flow.Flow;
+import javax.faces.flow.FlowHandler;
+import javax.faces.flow.FlowNode;
+import javax.faces.flow.MethodCallNode;
+import javax.faces.flow.Parameter;
+import javax.faces.flow.ReturnNode;
+import javax.faces.flow.SwitchCase;
+import javax.faces.flow.SwitchNode;
+import javax.faces.flow.ViewNode;
 
 /**
  * <p><strong>NavigationHandlerImpl</strong> is the class that implements
@@ -71,7 +94,7 @@ public class NavigationHandlerImpl extends ConfigurableNavigationHandler {
     /**
      * <code>Map</code> containing configured navigation cases.
      */
-    private volatile NavigationMap navigationMap;
+    private volatile Map<String, NavigationInfo> navigationMaps;
 
 
     /**
@@ -114,9 +137,16 @@ public class NavigationHandlerImpl extends ConfigurableNavigationHandler {
     @Override
     public NavigationCase getNavigationCase(FacesContext context, String fromAction, String outcome) {
 
+        return getNavigationCase(context, fromAction, outcome, "");
+        
+    }
+
+    @Override
+    public NavigationCase getNavigationCase(FacesContext context, String fromAction, String outcome, String toFlowDocumentId) {
         Util.notNull("context", context);
+        Util.notNull("toFlowDocumentId", toFlowDocumentId);
         NavigationCase result = null;
-        CaseStruct caseStruct = getViewId(context, fromAction, outcome);
+        CaseStruct caseStruct = getViewId(context, fromAction, outcome, toFlowDocumentId);
         if (null != caseStruct) {
             result = caseStruct.navCase;
         }
@@ -124,6 +154,8 @@ public class NavigationHandlerImpl extends ConfigurableNavigationHandler {
         return result;
         
     }
+    
+    
 
 
     /**
@@ -131,109 +163,280 @@ public class NavigationHandlerImpl extends ConfigurableNavigationHandler {
      */
     @Override
     public Map<String, Set<NavigationCase>> getNavigationCases() {
+        FacesContext context = FacesContext.getCurrentInstance();
+        Map<String, Set<NavigationCase>> result = getNavigationMap(context);
 
-        if (navigationMap == null) {
-            navigationMap = new NavigationMap();
-        }
-        return navigationMap;
+        return result;
 
     }
 
+    @Override
+    public void inspectFlow(FacesContext context, Flow flow) {
+        initializeNavigationFromFlow(context, flow);
+    }
 
     // ------------------------------------------ Methods from NavigationHandler
-    
-
-    /**
-     * @see javax.faces.application.NavigationHandler#handleNavigation(javax.faces.context.FacesContext, String, String)
-     */
+    @Override
     public void handleNavigation(FacesContext context,
                                  String fromAction,
                                  String outcome) {
+        this.handleNavigation(context, fromAction, outcome, "");
+    }
 
+    @Override
+    public void handleNavigation(FacesContext context, String fromAction, String outcome, String toFlowDocumentId) {
         Util.notNull("context", context);
 
-        CaseStruct caseStruct = getViewId(context, fromAction, outcome);
+        CaseStruct caseStruct = getViewId(context, fromAction, outcome, toFlowDocumentId);
         if (caseStruct != null) {
             ExternalContext extContext = context.getExternalContext();
             ViewHandler viewHandler = Util.getViewHandler(context);
             assert (null != viewHandler);
-            if (caseStruct.navCase.isRedirect()) {
+            Flash flash = extContext.getFlash();
+            boolean isUIViewActionBroadcastAndViewdsDiffer = false;
+            if (UIViewAction.isProcessingBroadcast(context)) {
+                flash.setKeepMessages(true);
+                String viewIdBefore = context.getViewRoot().getViewId();
+                viewIdBefore = (null == viewIdBefore) ? "" : viewIdBefore;
+                String viewIdAfter = caseStruct.navCase.getToViewId(context);
+                viewIdAfter = (null == viewIdAfter) ? "" : viewIdAfter;
+                isUIViewActionBroadcastAndViewdsDiffer = !viewIdBefore.equals(viewIdAfter);
+            } 
+            if (caseStruct.navCase.isRedirect() || isUIViewActionBroadcastAndViewdsDiffer) {
+                
                 // perform a 302 redirect.
                 String redirectUrl =
                       viewHandler.getRedirectURL(context,
                                                  caseStruct.viewId,
-                                                 caseStruct.navCase.getParameters(),
+                                                 SharedUtils.evaluateExpressions(context, caseStruct.navCase.getParameters()),
                                                  caseStruct.navCase.isIncludeViewParams());
                 try {
                     if (logger.isLoggable(Level.FINE)) {
-                        logger.fine("Redirecting to path " + redirectUrl
-                                    + " for outcome " + outcome +
-                                    "and viewId " + caseStruct.viewId);
+                        logger.log(Level.FINE, "Redirecting to path {0} for outcome {1}and viewId {2}", new Object[]{redirectUrl, outcome, caseStruct.viewId});
                     }
                     // encode the redirect to ensure session state
                     // is maintained
-                    clearViewMapIfNecessary(context.getViewRoot(), caseStruct.viewId);
                     updateRenderTargets(context, caseStruct.viewId);
-                    extContext.getFlash().setRedirect(true);
+                    flash.setRedirect(true);
                     extContext.redirect(redirectUrl);
                 } catch (java.io.IOException ioe) {
-                    if (logger.isLoggable(Level.SEVERE)) {
-                        logger.log(Level.SEVERE,"jsf.redirect_failed_error",
+                    if (logger.isLoggable(Level.FINE)) {
+                        logger.log(Level.FINE,"jsf.redirect_failed_error",
                                    redirectUrl);
                     }
                     throw new FacesException(ioe.getMessage(), ioe);
                 }
                 context.responseComplete();
                if (logger.isLoggable(Level.FINE)) {
-                   logger.fine("Response complete for " + caseStruct.viewId);
+                   logger.log(Level.FINE, "Response complete for {0}", caseStruct.viewId);
                }
             } else {
                 UIViewRoot newRoot = viewHandler.createView(context,
                                                             caseStruct.viewId);
                 updateRenderTargets(context, caseStruct.viewId);
                 context.setViewRoot(newRoot);
+                FlowHandler flowHandler = context.getApplication().getFlowHandler();
+                if (null != flowHandler && !isDidTransition(context)) {
+                    flowHandler.transition(context, 
+                            caseStruct.currentFlow, caseStruct.newFlow, 
+                            caseStruct.facesFlowCallNode, caseStruct.viewId);
+                    setDidTransition(context, false);
+                }
                 if (logger.isLoggable(Level.FINE)) {
-                    logger.fine("Set new view in FacesContext for " +
-                                caseStruct.viewId);
+                    logger.log(Level.FINE, "Set new view in FacesContext for {0}", caseStruct.viewId);
                 }
             }
+            clearViewMapIfNecessary(context, caseStruct.viewId);
         } 
     }
-
+    
     // --------------------------------------------------------- Private Methods
+    private static final String ROOT_NAVIGATION_MAP_ID = NavigationHandlerImpl.class.getName() + ".NAVIGATION_MAP";
+    
+    private Map<String, Set<NavigationCase>> getRootNavigationMap(FacesContext context) {
+        Map<String, Set<NavigationCase>> result = null;
+        NavigationInfo info = null;
+        if (null == navigationMaps) {
+            createNavigationMaps();
+            result = navigationMaps.get(ROOT_NAVIGATION_MAP_ID).ruleSet;
+        } else {
+            info = navigationMaps.get(ROOT_NAVIGATION_MAP_ID);
+            if (null == info.ruleSet) {
+                result = Collections.emptyMap();
+            } else {
+                result = info.ruleSet;
+            }
+            
+        }
+        return result;
+    }
+    
+    private Map<String, Set<NavigationCase>> getNavigationMap(FacesContext context) {
+        Map<String, Set<NavigationCase>> result = null;
+        NavigationInfo info = null;
+        if (null == navigationMaps) {
+            createNavigationMaps();
+            result = navigationMaps.get(ROOT_NAVIGATION_MAP_ID).ruleSet;
+        } else {
+            FlowHandler fh = context.getApplication().getFlowHandler();
+            if (null != fh) {
+                Flow currentFlow = fh.getCurrentFlow(context);
+                if (null != currentFlow) {
+                    info = navigationMaps.get(currentFlow.getDefiningDocumentId() + currentFlow.getId());
+                    // We are in a flow, but there are no navigation rules for 
+                    // this flow.
+                    if (null == info) {
+                        return Collections.emptyMap();
+                    }
+                }
+            }
+            if (null == info) {
+                info = navigationMaps.get(ROOT_NAVIGATION_MAP_ID);
+            }
+            if (null == info.ruleSet) {
+                result = Collections.emptyMap();
+            } else {
+                result = info.ruleSet;
+            }
+        }
+        
+        return result;
+    }
+    
+    private void createNavigationMaps() {
+        if (null == navigationMaps) {
+            Map<String, NavigationInfo> maps = new ConcurrentHashMap<String, NavigationInfo>();
+            NavigationMap result = new NavigationMap();
+            NavigationInfo info = new NavigationInfo();
+            info.ruleSet = result;
+            maps.put(ROOT_NAVIGATION_MAP_ID, info);
+            navigationMaps = maps;
+        }
+    }
+    
+    private Map<String, Set<NavigationCase>> getRootNavigationMap() {
+        createNavigationMaps();
+        return navigationMaps.get(ROOT_NAVIGATION_MAP_ID).ruleSet;
+    }
+    
+    private Set<String> getWildCardMatchList(FacesContext context) {
+        Set<String> result = Collections.emptySet();
+        NavigationInfo info = null;
+        FlowHandler fh = context.getApplication().getFlowHandler();
+        if (null != fh) {
+            Flow currentFlow = fh.getCurrentFlow(context);
+            if (null != currentFlow) {
+                info = navigationMaps.get(currentFlow.getDefiningDocumentId() + currentFlow.getId());
+            }
+        }
+        if (null == info) {
+            info = navigationMaps.get(ROOT_NAVIGATION_MAP_ID);
+        }
+        if (null != info.ruleSet && null != info.ruleSet.wildcardMatchList) {
+            result = info.ruleSet.wildcardMatchList;
+        }
+        return result;
+    }
+    
+    private NavigationInfo getNavigationInfo(FacesContext context, String toFlowDocumentId, String flowId) {
+        NavigationInfo result = null;
+        assert(null != navigationMaps);
+        result = navigationMaps.get(toFlowDocumentId + flowId);
+        if (null == result) {
+            FlowHandler fh = context.getApplication().getFlowHandler();
+            if (null != fh) {
+                Flow currentFlow = fh.getCurrentFlow(context);
+                if (null != currentFlow) {
+                    result = navigationMaps.get(currentFlow.getDefiningDocumentId() + currentFlow.getId());
+                }
+            }
+        }
+        
+        return result;
+    }
 
     private void initializeNavigationFromAssociate() {
 
         ApplicationAssociate associate = ApplicationAssociate.getCurrentInstance();
         if (associate != null) {
             Map<String,Set<NavigationCase>> m = associate.getNavigationCaseListMappings();
-            navigationMap = new NavigationMap();
+            Map<String, Set<NavigationCase>> rootMap = getRootNavigationMap();
             if (m != null) {
-                navigationMap.putAll(m);
+                rootMap.putAll(m);
             }
         }
 
     }
-
+    
+    private void initializeNavigationFromFlow(FacesContext context, Flow toInspect) {
+        
+        if (context instanceof InitFacesContext) {
+            createNavigationMaps();
+            initializeNavigationFromFlowNonThreadSafe(toInspect);
+        } else {
+            // PENDING: When JAVASERVERFACES-2580 is done, the eager case will
+            // no longer be necessary and can be removed.
+
+            assert(null != navigationMaps);
+            initializeNavigationFromFlowThreadSafe(toInspect);
+        }
+        
+    }
+    
+    private void initializeNavigationFromFlowNonThreadSafe(Flow toInspect) {
+        String fullyQualifiedFlowId = toInspect.getDefiningDocumentId() + toInspect.getId();
+        // Is there an existing NavigationMap for this flowId
+        if (navigationMaps.containsKey(fullyQualifiedFlowId)) {
+            if (logger.isLoggable(Level.INFO)) {
+                logger.log(Level.INFO, "PENDING(edburns): merge existing map");
+            }
+            
+        } else {
+            Map<String, Set<NavigationCase>> navRules = toInspect.getNavigationCases();
+            Map<String, SwitchNode> switches = toInspect.getSwitches();
+
+            if (!navRules.isEmpty() || !switches.isEmpty()) {
+                NavigationInfo info = new NavigationInfo();
+                if (!switches.isEmpty()) {
+                    info.switches = new ConcurrentHashMap<String, SwitchNode>();
+                    for (Map.Entry<String, SwitchNode> cur : switches.entrySet()) {
+                        info.switches.put(cur.getKey(), cur.getValue());
+                    }
+                }
+                if (!navRules.isEmpty()) {
+                    info.ruleSet = new NavigationMap();
+                    info.ruleSet.putAll(navRules);
+                }
+                navigationMaps.put(fullyQualifiedFlowId, info);
+            }
+        }
+        
+    }
+    
+    private void initializeNavigationFromFlowThreadSafe(Flow toInspect) {
+        synchronized (this) {
+            initializeNavigationFromFlowNonThreadSafe(toInspect);
+        }
+    }
+    
     /**
      * Calls <code>clear()</code> on the ViewMap (if available) if the view
      * ID of the UIViewRoot differs from <code>newId</code>
      */
-    private void clearViewMapIfNecessary(UIViewRoot root, String newId) {
+    private void clearViewMapIfNecessary(FacesContext facesContext, String newId) {
+        UIViewRoot root = facesContext.getViewRoot();
 
-        if (!root.getViewId().equals(newId)) {
+        if (root != null && !root.getViewId().equals(newId)) {
             Map<String, Object> viewMap = root.getViewMap(false);
             if (viewMap != null) {
                 viewMap.clear();
             }
         }
-
     }
-
-
+    
     private void updateRenderTargets(FacesContext ctx, String newId) {
 
-        if (!ctx.getViewRoot().getViewId().equals(newId)) {
+        if (ctx.getViewRoot() == null || !ctx.getViewRoot().getViewId().equals(newId)) {
             PartialViewContext pctx = ctx.getPartialViewContext();
             if (!pctx.isRenderAll()) {
                 pctx.setRenderAll(true);
@@ -254,9 +457,9 @@ public class NavigationHandlerImpl extends ConfigurableNavigationHandler {
      */
     private CaseStruct getViewId(FacesContext ctx,
                                  String fromAction,
-                                 String outcome) {
+                                 String outcome, String toFlowDocumentId) {
 
-        if (navigationMap == null) {
+        if (navigationMaps == null) {
             synchronized (this) {
                 initializeNavigationFromAssociate();
             }
@@ -271,30 +474,82 @@ public class NavigationHandlerImpl extends ConfigurableNavigationHandler {
         // a navigation match, otherwise look for a match
         // based soley on the fromAction and outcome
         CaseStruct caseStruct = null;
+        Map<String, Set<NavigationCase>> navMap = getNavigationMap(ctx);
+        
         if (viewId != null) {
-            caseStruct = findExactMatch(ctx, viewId, fromAction, outcome);
+            caseStruct = findExactMatch(ctx, viewId, fromAction, outcome, toFlowDocumentId, navMap);
 
             if (caseStruct == null) {
-                caseStruct = findWildCardMatch(ctx, viewId, fromAction, outcome);
+                caseStruct = findWildCardMatch(ctx, viewId, fromAction, outcome, toFlowDocumentId, navMap);
             }
         }
 
         if (caseStruct == null) {
-            caseStruct = findDefaultMatch(ctx, fromAction, outcome);
+            caseStruct = findDefaultMatch(ctx, fromAction, outcome, toFlowDocumentId, navMap);
         }
         
+        // If the preceding steps found a match, but it was a flow call...
+        if (null != caseStruct && caseStruct.isFlowEntryFromExplicitRule) {
+            // Override the toFlowDocumentId with the value from the navigation-case, if present
+            toFlowDocumentId = (null != caseStruct.navCase.getToFlowDocumentId()) ? caseStruct.navCase.getToFlowDocumentId() : toFlowDocumentId;
+            // and try to call into the flow
+            caseStruct = findFacesFlowCallMatch(ctx, fromAction, outcome, toFlowDocumentId);
+        }
+        
+        // If we still don't have a match, see if this is a viewNode
+        if (null == caseStruct && null != fromAction && null != outcome) {
+            caseStruct = findViewNodeMatch(ctx, fromAction, outcome, toFlowDocumentId);
+        }
+
+        // If we still don't have a match, see if this is a switch
+        if (null == caseStruct && null != fromAction && null != outcome) {
+            caseStruct = findSwitchMatch(ctx, fromAction, outcome, toFlowDocumentId);
+        }
+
+        // If we still don't have a match, see if this is a method-call
+        if (null == caseStruct && null != fromAction && null != outcome) {
+            caseStruct = findMethodCallMatch(ctx, fromAction, outcome);
+        }
+        
+        // If we still don't have a match, see if this is a faces-flow-call
+        if (null == caseStruct && null != outcome) {
+            caseStruct = findFacesFlowCallMatch(ctx, fromAction, outcome, toFlowDocumentId);
+        }
+
+        // If we still don't have a match, see if this is a flow-return
+        if (null == caseStruct && null != outcome) {
+            caseStruct = findReturnMatch(ctx, fromAction, outcome);
+        }
+
         // If the navigation rules do not have a match...
         if (caseStruct == null && outcome != null && viewId != null) {
             // Treat empty string equivalent to null outcome.  JSF 2.0 Rev a
             // Changelog issue C063.
-            if (caseStruct == null && 0 == outcome.length()) {
+            if (0 == outcome.length()) {
                 outcome = null;
             } else {
-                caseStruct = findImplicitMatch(ctx, viewId, fromAction, outcome);
+                caseStruct = findImplicitMatch(ctx, viewId, fromAction, outcome,
+                        toFlowDocumentId);
             }
         }
+        
+        // If we still don't have a match...
+        if (caseStruct == null && outcome != null && viewId != null) {
 
-        // no navigation case fo
+            FlowHandler flowHandler = ctx.getApplication().getFlowHandler();
+            if (null != flowHandler) {
+
+                Flow currentFlow = null;
+                Flow newFlow = null;
+                currentFlow = flowHandler.getCurrentFlow(ctx);
+                if (null != currentFlow) {
+                    caseStruct = findRootNavigationMapAbandonedFlowMatch(ctx, viewId, fromAction, outcome, toFlowDocumentId);
+                }
+            }
+            
+        }
+        
+        // no navigation case found
         if (caseStruct == null && outcome != null && development) {
             String key;
             Object[] params;
@@ -328,9 +583,10 @@ public class NavigationHandlerImpl extends ConfigurableNavigationHandler {
     private CaseStruct findExactMatch(FacesContext ctx,
                                       String viewId,
                                       String fromAction,
-                                      String outcome) {
+                                      String outcome, String toFlowDocumentId,
+                                      Map<String, Set<NavigationCase>> navMap) {
 
-        Set<NavigationCase> caseSet = navigationMap.get(viewId);
+        Set<NavigationCase> caseSet = navMap.get(viewId);
 
         if (caseSet == null) {
             return null;
@@ -342,9 +598,17 @@ public class NavigationHandlerImpl extends ConfigurableNavigationHandler {
         // 2) elements specifying only from-outcome
         // 3) elements specifying only from-action
         // 4) elements where both from-action and from-outcome are null
+        
+        CaseStruct result = determineViewFromActionOutcome(ctx, caseSet, fromAction, outcome, toFlowDocumentId);
+        if (null != result) {
+            FlowHandler flowHandler = ctx.getApplication().getFlowHandler();
+            if (null != flowHandler) {
+                result.currentFlow = flowHandler.getCurrentFlow(ctx);
+                result.newFlow = result.currentFlow;
+            }
+        }
 
-
-        return determineViewFromActionOutcome(ctx, caseSet, fromAction, outcome);
+        return result;
     }
 
 
@@ -363,10 +627,11 @@ public class NavigationHandlerImpl extends ConfigurableNavigationHandler {
     private CaseStruct findWildCardMatch(FacesContext ctx,
                                          String viewId,
                                          String fromAction,
-                                         String outcome) {
+                                         String outcome, String toFlowDocumentId,
+                                      Map<String, Set<NavigationCase>> navMap) {
         CaseStruct result = null;
 
-        for (String fromViewId : navigationMap.wildcardMatchList) {
+        for (String fromViewId : getWildCardMatchList(ctx)) {
             // See if the entire wildcard string (without the trailing "*" is
             // contained in the incoming viewIdToTest.  
             // Ex: /foobar is contained with /foobarbaz
@@ -380,7 +645,7 @@ public class NavigationHandlerImpl extends ConfigurableNavigationHandler {
             // Append the trailing "*" so we can do our map lookup;
 
             String wcFromViewId = new StringBuilder(32).append(fromViewId).append('*').toString();
-            Set<NavigationCase> ccaseSet = navigationMap.get(wcFromViewId);
+            Set<NavigationCase> ccaseSet = navMap.get(wcFromViewId);
 
             if (ccaseSet == null) {
                 return null;
@@ -396,11 +661,19 @@ public class NavigationHandlerImpl extends ConfigurableNavigationHandler {
             result = determineViewFromActionOutcome(ctx,
                                                     ccaseSet,
                                                     fromAction,
-                                                    outcome);
+                                                    outcome, toFlowDocumentId);
             if (result != null) {
                 break;
             }
         }
+        if (null != result) {
+            FlowHandler flowHandler = ctx.getApplication().getFlowHandler();
+            if (null != flowHandler) {
+                result.currentFlow = flowHandler.getCurrentFlow(ctx);
+                result.newFlow = result.currentFlow;
+            }
+        }
+        
         return result;
     }
 
@@ -418,9 +691,10 @@ public class NavigationHandlerImpl extends ConfigurableNavigationHandler {
 
     private CaseStruct findDefaultMatch(FacesContext ctx,
                                         String fromAction,
-                                        String outcome) {
-
-        Set<NavigationCase> caseSet = navigationMap.get("*");
+                                        String outcome, String toFlowDocumentId,
+                                      Map<String, Set<NavigationCase>> navMap) {
+        
+        Set<NavigationCase> caseSet = navMap.get("*");
 
         if (caseSet == null) {
             return null;
@@ -432,9 +706,45 @@ public class NavigationHandlerImpl extends ConfigurableNavigationHandler {
         // 3) elements specifying only from-action
         // 4) elements where both from-action and from-outcome are null
 
-        return determineViewFromActionOutcome(ctx, caseSet, fromAction, outcome);
+        CaseStruct result = determineViewFromActionOutcome(ctx, caseSet, fromAction, outcome, toFlowDocumentId);
+        
+        if (null != result) {
+            FlowHandler flowHandler = ctx.getApplication().getFlowHandler();
+            if (null != flowHandler) {
+                result.currentFlow = flowHandler.getCurrentFlow(ctx);
+                result.newFlow = result.currentFlow;
+            }
+        }
+        
+        return result;
     }
-
+    
+    private CaseStruct findRootNavigationMapAbandonedFlowMatch(FacesContext ctx,
+                                         String viewId,
+                                         String fromAction,
+                                         String outcome, String toFlowDocumentId) {
+        CaseStruct caseStruct = null;
+        Map<String, Set<NavigationCase>> navMap = getRootNavigationMap(ctx);
+        
+        if (viewId != null) {
+            caseStruct = findExactMatch(ctx, viewId, fromAction, outcome, toFlowDocumentId, navMap);
+            
+            if (caseStruct == null) {
+                caseStruct = findWildCardMatch(ctx, viewId, fromAction, outcome, toFlowDocumentId, navMap);
+            }
+        }
+        
+        if (caseStruct == null) {
+            caseStruct = findDefaultMatch(ctx, fromAction, outcome, toFlowDocumentId, navMap);
+        }
+        
+        if (null != caseStruct) {
+            caseStruct.newFlow = FlowImpl.ABANDONED_FLOW;
+        }
+        
+        return caseStruct;
+    }
+    
 
     /**
      * <p>
@@ -451,7 +761,8 @@ public class NavigationHandlerImpl extends ConfigurableNavigationHandler {
     private CaseStruct findImplicitMatch(FacesContext context,
                                          String viewId,
                                          String fromAction,
-                                         String outcome) {
+                                         String outcome,
+                                         String flowDefiningDocumentId) {
 
         // look for an implicit match.
         String viewIdToTest = outcome;
@@ -459,6 +770,7 @@ public class NavigationHandlerImpl extends ConfigurableNavigationHandler {
         Map<String, List<String>> parameters = null;
         boolean isRedirect = false;
         boolean isIncludeViewParams = false;
+        CaseStruct result = null;
 
         int questionMark = viewIdToTest.indexOf('?');
         String queryString;
@@ -497,9 +809,11 @@ public class NavigationHandlerImpl extends ConfigurableNavigationHandler {
             }
 
             if (queryString != null && queryString.length() > 0) {
-                String[] queryElements = Util.split(queryString, "&|&");
+                Map<String, Object> appMap = context.getExternalContext().getApplicationMap();
+
+                String[] queryElements = Util.split(appMap, queryString, "&|&");
                 for (int i = 0, len = queryElements.length; i < len; i ++) {
-                    String[] elements = Util.split(queryElements[i], "=");
+                    String[] elements = Util.split(appMap, queryElements[i], "=");
                     if (elements.length == 2) {
                         if (parameters == null) {
                             parameters = new LinkedHashMap<String,List<String>>(len / 2, 1.0f);
@@ -538,27 +852,434 @@ public class NavigationHandlerImpl extends ConfigurableNavigationHandler {
         }
 
         ViewHandler viewHandler = Util.getViewHandler(context);
-        viewIdToTest = viewHandler.deriveViewId(context, viewIdToTest);
+        FlowHandler flowHandler = context.getApplication().getFlowHandler();
+        Flow currentFlow = null;
+        Flow newFlow = null;
+
+        if (null != flowHandler) {
+            
+            currentFlow = flowHandler.getCurrentFlow(context);
+            newFlow = currentFlow;
+            // If we are in a flow, use the implicit rules to ensure the view 
+            // is within that flow.  This means viewIdToTest must start with
+            // the current flow id
+            if (null != currentFlow && null != viewIdToTest && 
+                !viewIdToTest.startsWith("/" + currentFlow.getId())) {
+                // ... it must be out of the current flow.  
+                // If this is a flow return...
+                if (FlowHandler.NULL_FLOW.equals(flowDefiningDocumentId)) {
+                    // treat it as such
+                    newFlow = null;
+                    viewIdToTest = null;
+                } else {
+                    // otherwise Make sure the current flow is marked as abandoned.
+                    newFlow = FlowImpl.ABANDONED_FLOW;
+                }
 
+            }            
+        }
         if (null != viewIdToTest) {
-            CaseStruct caseStruct = new CaseStruct();
-            caseStruct.viewId = viewIdToTest;
-            caseStruct.navCase = new NavigationCase(currentViewId,
+            viewIdToTest = viewHandler.deriveViewId(context, viewIdToTest);
+        }
+        
+        if (null == result && null != viewIdToTest) {
+            result = new CaseStruct();
+            result.viewId = viewIdToTest;
+            // If this navigation case does not involve flows, make sure
+            // to convey that fact.
+            if (null == newFlow && null == currentFlow && 
+                !FlowHandlerImpl.NULL_FLOW.equals(flowDefiningDocumentId)) {
+                flowDefiningDocumentId = null;
+            }
+            result.navCase = new NavigationCase(currentViewId,
                                                     fromAction,
                                                     outcome,
                                                     null,
                                                     viewIdToTest,
+                                                    flowDefiningDocumentId,
                                                     parameters,
                                                     isRedirect,
                                                     isIncludeViewParams);
-            return caseStruct;
         }
+        if (null != result) {
+            result.currentFlow = currentFlow;
+            result.newFlow = newFlow;
+        }
+        
 
-        return null;
+        return result;
 
     }
+    
+    private CaseStruct findSwitchMatch(FacesContext context, String fromAction, 
+                                       String outcome, String toFlowDocumentId) {
+        CaseStruct result = null;
+        NavigationInfo info = getNavigationInfo(context, toFlowDocumentId, fromAction);
+        FlowHandler flowHandler = context.getApplication().getFlowHandler();
+        
+        if (null != flowHandler && 
+            null != info && null != info.switches && !info.switches.isEmpty()) {
+            SwitchNode switchNode = info.switches.get(outcome);
+            if (null != switchNode) {
+                List<SwitchCase> cases = switchNode.getCases();
+                for (SwitchCase cur : cases) {
+                    if (cur.getCondition(context)) {
+                        outcome = cur.getFromOutcome();
+                        Flow newFlow = flowHandler.getFlow(context, toFlowDocumentId, 
+                                fromAction);
+                        // If this outcome corresponds to an existing flow...
+                        if (null != newFlow) {
+                            result = synthesizeCaseStruct(context, newFlow, fromAction, outcome);
+                        } else {
+                            newFlow = flowHandler.getCurrentFlow(context);
+                            if (null != newFlow) {
+                                result = synthesizeCaseStruct(context, newFlow, fromAction, outcome);
+                            }
+                        }
+                        if (null != result) {
+                            break;
+                        }
+                    }
+                }
+                if (null == result) {
+                    outcome = switchNode.getDefaultOutcome(context);
+                    if (null != outcome) {
+                        Flow currentFlow = flowHandler.getCurrentFlow(context);
+                        if (null != currentFlow) {
+                            result = synthesizeCaseStruct(context, currentFlow, fromAction, outcome);
+                            if (null != result) {
+                                result.currentFlow = currentFlow;
+                                result.newFlow = currentFlow;
+                            }
+                        }
+                    }
+                }
+            }
+            
+        }
+        
+        return result;
+    }
+    
+    private CaseStruct synthesizeCaseStruct(FacesContext context, Flow flow, String fromAction, String outcome) {
+        CaseStruct result = null;
+        
+        FlowNode node = flow.getNode(outcome);
+        if (null != node) {
+            if (node instanceof ViewNode) {
+                result = new CaseStruct();
+                result.viewId = ((ViewNode)node).getVdlDocumentId();
+                result.navCase = new MutableNavigationCase(fromAction, 
+                        fromAction, outcome, null, result.viewId, 
+                        flow.getDefiningDocumentId(), null, false, false);
+            } else if (node instanceof ReturnNode) {
+                String fromOutcome = ((ReturnNode)node).getFromOutcome(context);
+                FlowHandler flowHandler = context.getApplication().getFlowHandler();
+                try {
+                    flowHandler.pushReturnMode(context);
+                    result = getViewId(context, fromAction, fromOutcome, FlowHandler.NULL_FLOW);
+                    // We are in a return node, but no result can be found from that
+                    // node.  Show the last displayed viewId from the preceding flow.
+                    if (null == result) {
+                        Flow precedingFlow = flowHandler.getCurrentFlow(context);
+                        if (null != precedingFlow) {
+                            String toViewId = flowHandler.getLastDisplayedViewId(context);
+                            if (null != toViewId) {
+                                result = new CaseStruct();
+                                result.viewId = toViewId;
+                                result.navCase = new MutableNavigationCase(context.getViewRoot().getViewId(),
+                                        fromAction,
+                                        outcome,
+                                        null,
+                                        toViewId,
+                                        FlowHandler.NULL_FLOW,                            
+                                        null,
+                                        false,
+                                        false);
+                                
+                            }
+                        }
+                    } else {
+                        result.newFlow = FlowImpl.SYNTHESIZED_RETURN_CASE_FLOW;
+                    }
+                }
+                finally {
+                    flowHandler.popReturnMode(context);
+                }
+                
+            }
+        } else {
+            // See if there is an implicit match within this flow, using outcome
+            // to derive a view id within this flow.
+            String currentViewId = outcome;
+            // If the viewIdToTest needs an extension, take one from the currentViewId.
+            String currentExtension;
+            int idx = currentViewId.lastIndexOf('.');
+            if (idx != -1) {
+                currentExtension = currentViewId.substring(idx);
+            } else {
+                // PENDING, don't hard code XHTML here, look it up from configuration
+                currentExtension = ".xhtml";
+            }
+            String viewIdToTest = "/" + flow.getId() + "/" + outcome + currentExtension;
+            ViewHandler viewHandler = Util.getViewHandler(context);
+            viewIdToTest = viewHandler.deriveViewId(context, viewIdToTest);
+            if (null != viewIdToTest) {
+                result = new CaseStruct();
+                result.viewId = viewIdToTest;
+                result.navCase = new MutableNavigationCase(fromAction, 
+                        fromAction, outcome, null, result.viewId, 
+                        null, false, false);
+            }
+            
+        }
+        return result;
+    }
+    
+    private CaseStruct findMethodCallMatch(FacesContext context, String fromAction, String outcome) {
+        CaseStruct result = null;
+        FlowHandler flowHandler = context.getApplication().getFlowHandler();
+        if (null == flowHandler) {
+            return null;
+        }
+        Flow currentFlow = flowHandler.getCurrentFlow(context);
+        if (null != currentFlow) {
+            FlowNode node = currentFlow.getNode(outcome);
+            if (node instanceof MethodCallNode) {
+                MethodCallNode methodCallNode = (MethodCallNode) node;
+                MethodExpression me = methodCallNode.getMethodExpression();
+                if (null != me) {
+                    List<Parameter> paramList= methodCallNode.getParameters();
+                    Object[] params = null;
+                    if (null != paramList) {
+                        params = new Object[paramList.size()];
+                        int i = 0;
+                        ELContext elContext = context.getELContext();
+                        for (Parameter cur : paramList) {
+                            params[i++] = cur.getValue().getValue(elContext);
+                        }
+                    }
+                    
+                    Object invokeResult = me.invoke(context.getELContext(), params);
+                    if (null == invokeResult) {
+                        ValueExpression ve = methodCallNode.getOutcome();
+                        if (null != ve) {
+                            invokeResult  = ve.getValue(context.getELContext());
+                        }
+                    }
+                    outcome = invokeResult.toString();
+                    result = synthesizeCaseStruct(context, currentFlow, fromAction, outcome);
+                    if (null != result) {
+                        // Here we need to detect the case when the
+                        // synthesizeCaseStruct() ended up hitting a <flow-return>.
+                        // In this case, we must ensure the new flow of null
+                        // is honored.
+                        result.currentFlow = currentFlow;
+                        if (result.newFlow == FlowImpl.SYNTHESIZED_RETURN_CASE_FLOW) {
+                            result.newFlow = null;
+                        } else {
+                            result.newFlow = currentFlow;
+                        }
+                    }
+                }
+            }
+        }
+        
+
+        return result;
+    }
+    
+    private CaseStruct findFacesFlowCallMatch(FacesContext context, 
+            String fromAction, String outcome, String toFlowDocumentId) {
+        CaseStruct result = null;
+
+        FlowHandler flowHandler = context.getApplication().getFlowHandler();
+        if (null == flowHandler) {
+            return null;
+        }
+        Flow currentFlow = flowHandler.getCurrentFlow(context);
+        Flow newFlow = null;
+        FlowCallNode facesFlowCallNode = null;
+        if (null != currentFlow) {
+            FlowNode node = currentFlow.getNode(outcome);
+            if (node instanceof FlowCallNode) {
+                facesFlowCallNode = (FlowCallNode) node;
+                String flowId = facesFlowCallNode.getCalledFlowId(context);
+                String flowDocumentId = facesFlowCallNode.getCalledFlowDocumentId(context);
+
+                if (null != flowId) {
+                    newFlow = flowHandler.getFlow(context, flowDocumentId, flowId);
+                    if (null != newFlow) {
+                        String startNodeId = newFlow.getStartNodeId();
+                        result = synthesizeCaseStruct(context, newFlow, fromAction, startNodeId);
+                        if (null == result) {
+                            assert(null != currentFlow);
+                            // If no CaseStruct can be synthesized, we must execute the
+                            // navigation handler algorithm to try to find the CaseStruct
+                            // for the start node.  However, in order to do that, we
+                            // must enter the new flow.  To preserve the intergity
+                            // of the state machine, we enter the flow now, and mark
+                            // that we must not enter it later.
+                            try {
+                                setDidTransition(context, true);
+                                flowHandler.transition(context, currentFlow, newFlow, null, startNodeId);
+                                result = getViewId(context, fromAction, startNodeId, toFlowDocumentId);
+                            }
+                            finally {
+                                if (null == result) {
+                                    // If we did not find a CaseStruct, preserve the 
+                                    // integrity of the state machine by transitioning 
+                                    // out of the flow.
+                                    flowHandler.transition(context, newFlow, currentFlow, null, outcome);
+                                    setDidTransition(context, false);
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+        } else {
+            // See if we are trying to enter a flow.
+            newFlow = flowHandler.getFlow(context, toFlowDocumentId, outcome);
+            if (null != newFlow) {
+                String startNodeId = newFlow.getStartNodeId();
+                result = synthesizeCaseStruct(context, newFlow, fromAction, startNodeId);
+                if (null == result) {
+                    assert(null == currentFlow);
+                    // If no CaseStruct can be synthesized, we must execute the
+                    // navigation handler algorithm to try to find the CaseStruct
+                    // for the start node.  However, in order to do that, we
+                    // must enter the new flow.  To preserve the intergity
+                    // of the state machine, we enter the flow now, and mark
+                    // that we must not enter it later.
+                    try {
+                        setDidTransition(context, true);
+                        flowHandler.transition(context, null, newFlow, null, startNodeId);
+                        result = getViewId(context, fromAction, startNodeId, toFlowDocumentId);
+                    }
+                    finally {
+                        if (null == result) {
+                            // If we did not find a CaseStruct, preserve the 
+                            // integrity of the state machine by transitioning 
+                            // out of the flow.
+                            flowHandler.transition(context, newFlow, null, null, outcome);
+                            setDidTransition(context, false);
+                        }
+                    }
+                } else if (!outcome.equals(startNodeId) && null != result.navCase) {
+                    ((MutableNavigationCase)result.navCase).setFromOutcome(outcome);
+                }
+            } 
+        }
+        if (null != result) {
+            result.currentFlow = currentFlow;
+            result.newFlow = newFlow;
+            result.facesFlowCallNode = facesFlowCallNode;
+        }
+        
+        return result;
+    }  
+    
+    private static final String DID_TRANSITION_FLAG = RIConstants.FACES_PREFIX + "NavigationHandlerDidTransition";
+    
+    private boolean isDidTransition(FacesContext context) {
+        boolean result = context.getAttributes().containsKey(DID_TRANSITION_FLAG);
+        
+        return result;
+    }
+    
+    private void setDidTransition(FacesContext context, boolean value) {
+        Map<Object,Object> contextMap = context.getAttributes();
+        if (value) {
+            contextMap.put(DID_TRANSITION_FLAG, Boolean.TRUE);
+        } else {
+            contextMap.remove(DID_TRANSITION_FLAG);
+        }
+        
+    }
+    
+    private CaseStruct findViewNodeMatch(FacesContext context, 
+            String fromAction, String outcome, String toFlowDocumentId) {
+        CaseStruct result = null;
+
+        FlowHandler flowHandler = context.getApplication().getFlowHandler();
+        if (null == flowHandler) {
+            return null;
+        }
+        Flow currentFlow = flowHandler.getCurrentFlow(context);
+        if (null != currentFlow) {
+            FlowNode node = currentFlow.getNode(outcome);
+            if (null != node) {
+                if (node instanceof ViewNode) {
+                    result = synthesizeCaseStruct(context, currentFlow, fromAction, outcome);
+                }
+            }
+        }
+        if (null != result) {
+            result.currentFlow = currentFlow;
+            result.newFlow = currentFlow;
+            result.facesFlowCallNode = null;
+        }
+        
+        return result;
+    }  
+    
+    
+    
+    private CaseStruct findReturnMatch(FacesContext context, 
+            String fromAction, String outcome) {
+        CaseStruct result = null;
+        FlowHandler flowHandler = context.getApplication().getFlowHandler();
+        if (null == flowHandler) {
+            return null;
+        }
+        Flow currentFlow = flowHandler.getCurrentFlow(context);
+        if (null != currentFlow) {
+            // If so, see if the outcome is one of this flow's 
+            // faces-flow-return nodes.
+            ReturnNode returnNode = currentFlow.getReturns().get(outcome);
+            if (null != returnNode) {
+                String fromOutcome = returnNode.getFromOutcome(context);
+                try {
+                    flowHandler.pushReturnMode(context);
+                    result = getViewId(context, fromAction, fromOutcome, FlowHandler.NULL_FLOW);
+                    // We are in a return node, but no result can be found from that
+                    // node.  Show the last displayed viewId from the preceding flow.
+                    if (null == result) {
+                        Flow precedingFlow = flowHandler.getCurrentFlow(context);
+                        if (null != precedingFlow) {
+                            String toViewId = flowHandler.getLastDisplayedViewId(context);
+                            if (null != toViewId) {
+                                result = new CaseStruct();
+                                result.viewId = toViewId;
+                                result.navCase = new NavigationCase(context.getViewRoot().getViewId(),
+                                        fromAction,
+                                        outcome,
+                                        null,
+                                        toViewId,
+                                        FlowHandler.NULL_FLOW,                            
+                                        null,
+                                        false,
+                                        false);
+                                
+                            }
+                        }
+                    }
+                }
+                finally {
+                    flowHandler.popReturnMode(context);
+                }
+            }
+        }
+        if (null != result) {
+            result.currentFlow = currentFlow;
+            result.newFlow = null;
+        }
 
+        return result;
+    }
 
+    
     /**
      * This method will attempt to find the <code>view</code> identifier based on action reference
      * and outcome.  Refer to section 7.4.2 of the specification for more details.
@@ -571,7 +1292,8 @@ public class NavigationHandlerImpl extends ConfigurableNavigationHandler {
     private CaseStruct determineViewFromActionOutcome(FacesContext ctx,
                                                       Set<NavigationCase> caseSet,
                                                       String fromAction,
-                                                      String outcome) {
+                                                      String outcome,
+                                                      String toFlowDocumentId) {
 
         CaseStruct result = new CaseStruct();
         boolean match = false;
@@ -612,6 +1334,13 @@ public class NavigationHandlerImpl extends ConfigurableNavigationHandler {
                 if (cncHasCondition && Boolean.FALSE.equals(cnc.getCondition(ctx))) {
                     match = false;
                 } else {
+                    toFlowDocumentId = (null != cnc.getToFlowDocumentId()) ? cnc.getToFlowDocumentId() : toFlowDocumentId;
+                    if (null != toFlowDocumentId) {
+                        FlowHandler fh = ctx.getApplication().getFlowHandler();
+                        if (null != outcome) {
+                            result.isFlowEntryFromExplicitRule = null != fh.getFlow(ctx, toFlowDocumentId, outcome);
+                        }
+                    }
                     return result;
                 }
             }
@@ -627,6 +1356,15 @@ public class NavigationHandlerImpl extends ConfigurableNavigationHandler {
     private static class CaseStruct {
         String viewId;
         NavigationCase navCase;
+        Flow currentFlow;
+        Flow newFlow;
+        FlowCallNode facesFlowCallNode;
+        boolean isFlowEntryFromExplicitRule = false;
+    }
+    
+    private static final class NavigationInfo {
+        private NavigationMap ruleSet;
+        private Map<String, SwitchNode> switches;
     }
 
 
@@ -699,25 +1437,30 @@ public class NavigationHandlerImpl extends ConfigurableNavigationHandler {
         public Set<String> keySet() {
             return new AbstractSet<String>() {
 
+                @Override
                 public Iterator<String> iterator() {
                     return new Iterator<String>() {
 
                         Iterator<Map.Entry<String,Set<NavigationCase>>> i = entrySet().iterator();
 
+                        @Override
                         public boolean hasNext() {
                             return i.hasNext();
                         }
 
+                        @Override
                         public String next() {
                             return i.next().getKey();
                         }
 
+                        @Override
                         public void remove() {
                             throw new UnsupportedOperationException();
                         }
                     };
                 }
 
+                @Override
                 public int size() {
                     return NavigationMap.this.size();
                 }
@@ -728,34 +1471,41 @@ public class NavigationHandlerImpl extends ConfigurableNavigationHandler {
         public Collection<Set<NavigationCase>> values() {
             return new AbstractCollection<Set<NavigationCase>>() {
 
+                @Override
                 public Iterator<Set<NavigationCase>> iterator() {
                     return new Iterator<Set<NavigationCase>>() {
 
                         Iterator<Map.Entry<String,Set<NavigationCase>>> i = entrySet().iterator();
 
+                        @Override
                         public boolean hasNext() {
                             return i.hasNext();
                         }
 
+                        @Override
                         public Set<NavigationCase> next() {
                             return i.next().getValue();
                         }
 
+                        @Override
                         public void remove() {
                             throw new UnsupportedOperationException();
                         }
                     };
                 }
 
+                @Override
                 public int size() {
                     return NavigationMap.this.size();
                 }
             };
         }
 
+        @Override
         public Set<Entry<String, Set<NavigationCase>>> entrySet() {
             return new AbstractSet<Entry<String, Set<NavigationCase>>>() {
 
+                @Override
                 public Iterator<Entry<String, Set<NavigationCase>>> iterator() {
 
                     return new Iterator<Entry<String,Set<NavigationCase>>>() {
@@ -763,20 +1513,24 @@ public class NavigationHandlerImpl extends ConfigurableNavigationHandler {
                         Iterator<Entry<String, Set<NavigationCase>>> i =
                               navigationMap.entrySet().iterator();
 
+                        @Override
                         public boolean hasNext() {
                             return i.hasNext();
                         }
 
+                        @Override
                         public Entry<String, Set<NavigationCase>> next() {
                             return i.next();
                         }
 
+                        @Override
                         public void remove() {
                             throw new UnsupportedOperationException();
                         }
                     };
                 }
 
+                @Override
                 public int size() {
                     return NavigationMap.this.size();
                 }
diff --git a/jsf-ri/src/main/java/com/sun/faces/application/ProjectStageJndiFactory.java b/jsf-ri/src/main/java/com/sun/faces/application/ProjectStageJndiFactory.java
index fc23c7c..d547825 100644
--- a/jsf-ri/src/main/java/com/sun/faces/application/ProjectStageJndiFactory.java
+++ b/jsf-ri/src/main/java/com/sun/faces/application/ProjectStageJndiFactory.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/application/PropertyEditorHelper.java b/jsf-ri/src/main/java/com/sun/faces/application/PropertyEditorHelper.java
index 2606434..7583312 100644
--- a/jsf-ri/src/main/java/com/sun/faces/application/PropertyEditorHelper.java
+++ b/jsf-ri/src/main/java/com/sun/faces/application/PropertyEditorHelper.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/application/StateManagerImpl.java b/jsf-ri/src/main/java/com/sun/faces/application/StateManagerImpl.java
index a27cd8e..7f03191 100644
--- a/jsf-ri/src/main/java/com/sun/faces/application/StateManagerImpl.java
+++ b/jsf-ri/src/main/java/com/sun/faces/application/StateManagerImpl.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -33,403 +37,110 @@
  * only if the new code is made subject to such option by the copyright
  * holder.
  */
-
 package com.sun.faces.application;
 
-import com.sun.faces.renderkit.RenderKitUtils;
-import com.sun.faces.util.Util;
-
-import javax.faces.FacesException;
-import javax.faces.application.ProjectStage;
+import com.sun.faces.application.view.JspStateManagementStrategy;
+import java.io.IOException;
+import java.util.Map;
 import javax.faces.application.StateManager;
-import javax.faces.component.UIComponent;
 import javax.faces.component.UIViewRoot;
 import javax.faces.context.FacesContext;
 import javax.faces.render.RenderKit;
 import javax.faces.render.ResponseStateManager;
 import javax.faces.view.StateManagementStrategy;
 import javax.faces.view.ViewDeclarationLanguage;
-import java.io.Externalizable;
-import java.io.IOException;
-import java.io.ObjectInput;
-import java.io.ObjectOutput;
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.concurrent.ConcurrentHashMap;
 
 /**
- * <p>
- * A <code>StateManager</code> implementation to meet the requirements
- * of the specification.
- * </p>
- *
- * <p>
- * For those who had compile dependencies on this class, we're sorry for any
- * inconvenience, but this had to be re-worked as the version you depended on
- * was incorrectly implemented.  
- * </p>
+ * <p> A
+ * <code>StateManager</code> implementation to meet the requirements of the
+ * specification. </p>
  */
 public class StateManagerImpl extends StateManager {
 
-    private boolean isDevelopmentMode;
-    private Map<String,Class<?>> classMap;
-
-
-    // ------------------------------------------------------------ Constructors
-
-
     /**
-     * Create a new <code>StateManagerImpl</code> instance.
-     */
-    public StateManagerImpl() {
-
-        isDevelopmentMode = FacesContext.getCurrentInstance().isProjectStage(ProjectStage.Development);
-        classMap = new ConcurrentHashMap<String,Class<?>>(32);
-
-    }
-
-
-    // ----------------------------------------------- Methods from StateManager
-
-
-    /**
-     * @see {@link javax.faces.application.StateManager#saveView(javax.faces.context.FacesContext))
+     * Save the view.
+     *
+     * @param context the Faces context.
+     * @return the saved view.
      */
     @Override
     public Object saveView(FacesContext context) {
+        Object result = null;
 
-        if (context == null) {
-            return null;
-        }
+        if (context != null && !context.getViewRoot().isTransient()) {
+            UIViewRoot viewRoot = context.getViewRoot();
+            StateManagementStrategy strategy = null;
+            String viewId = viewRoot.getViewId();
 
-        // irrespective of method to save the tree, if the root is transient
-        // no state information needs to  be persisted.
-        UIViewRoot viewRoot = context.getViewRoot();
-        if (viewRoot.isTransient()) {
-            return null;
-        }
-        
-        Object result;
-        String viewId = context.getViewRoot().getViewId();
-        StateManagementStrategy strategy = null;
-        ViewDeclarationLanguage vdl =
-              context.getApplication().getViewHandler().
+            ViewDeclarationLanguage vdl =
+                    context.getApplication().getViewHandler().
                     getViewDeclarationLanguage(context, viewId);
-        if (vdl != null) {
-            strategy = vdl.getStateManagementStrategy(context, viewId);
-        }
 
-        if (null != strategy) {
-            result = strategy.saveView(context);
-        } else {
-            // honor the requirement to check for id uniqueness
-            Util.checkIdUniqueness(context,
-                                   viewRoot,
-                                   new HashSet<String>(viewRoot.getChildCount() << 1));
+            if (vdl != null) {
+                strategy = vdl.getStateManagementStrategy(context, viewId);
+            }
 
-            List<TreeNode> treeList = new ArrayList<TreeNode>(32);
-            Object state = viewRoot.processSaveState(context);
-            captureChild(treeList, 0, viewRoot);
-            Object[] tree = treeList.toArray();
+            Map<Object, Object> contextAttributes = context.getAttributes();
 
-            result = new Object[]{tree, state};
+            try {
+                contextAttributes.put(StateManager.IS_SAVING_STATE, Boolean.TRUE);
+
+                if (strategy != null) {
+                    result = strategy.saveView(context);
+                } else {
+                    strategy = new JspStateManagementStrategy(context);
+                    result = strategy.saveView(context);
+                }
+            } finally {
+                contextAttributes.remove(StateManager.IS_SAVING_STATE);
+            }
         }
-        
-        return result;
 
+        return result;
     }
 
-
     /**
-     * @see {@link StateManager#writeState(javax.faces.context.FacesContext, Object)}
+     * Write out the state.
+     *
+     * @param context the Faces context.
+     * @param state the state.
+     * @throws IOException when an I/O error occurs.
      */
     @Override
-    public void writeState(FacesContext context, Object state)
-          throws IOException {
-
+    public void writeState(FacesContext context, Object state) throws IOException {
         RenderKit rk = context.getRenderKit();
         ResponseStateManager rsm = rk.getResponseStateManager();
         rsm.writeState(context, state);
-
     }
 
-
     /**
-     * @see {@link StateManager#restoreView(javax.faces.context.FacesContext, String, String)}
+     * Restores the view.
+     * 
+     * @param context the Faces context.
+     * @param viewId the view id.
+     * @param renderKitId the render kit id.
+     * @return the view root.
+     * @see StateManager#restoreView(javax.faces.context.FacesContext, java.lang.String, java.lang.String) 
      */
-    public UIViewRoot restoreView(FacesContext context,
-                                  String viewId,
-                                  String renderKitId) {
-        UIViewRoot result = null;
+    public UIViewRoot restoreView(FacesContext context, String viewId, String renderKitId) {
+        UIViewRoot result;
         StateManagementStrategy strategy = null;
-        
+
         ViewDeclarationLanguage vdl =
-              context.getApplication().getViewHandler().
-                    getViewDeclarationLanguage(context, viewId);
+                context.getApplication().getViewHandler().
+                getViewDeclarationLanguage(context, viewId);
+
         if (vdl != null) {
             strategy = vdl.getStateManagementStrategy(context, viewId);
         }
 
-        if (null != strategy) {
+        if (strategy != null) {
             result = strategy.restoreView(context, viewId, renderKitId);
         } else {
-            ResponseStateManager rsm =
-                    RenderKitUtils.getResponseStateManager(context, renderKitId);
-            Object[] state = (Object[]) rsm.getState(context, viewId);
-
-            if (state != null && state.length >= 2) {
-                // We need to clone the tree, otherwise we run the risk
-                // of being left in a state where the restored
-                // UIComponent instances are in the session instead
-                // of the TreeNode instances.  This is a problem
-                // for servers that persist session data since
-                // UIComponent instances are not serializable.
-                UIViewRoot viewRoot = null;
-                if (state[0] != null) {
-                    viewRoot = restoreTree(context,
-                                           renderKitId,
-                                           ((Object[]) state[0]).clone());
-                }
-                if (viewRoot != null && state[1] != null) {
-                    viewRoot.processRestoreState(context, state[1]);
-                }
-
-                result = viewRoot;
-            }
+            strategy = new JspStateManagementStrategy(context);
+            result = strategy.restoreView(context, viewId, renderKitId);
         }
 
         return result;
-
-    }
-
-
-    // --------------------------------------------------------- Private Methods
-
-
-    private static void captureChild(List<TreeNode> tree,
-                                     int parent,
-                                     UIComponent c) {
-
-        if (!c.isTransient()) {
-            TreeNode n = new TreeNode(parent, c);
-            int pos = tree.size();
-            tree.add(n);
-            captureRest(tree, pos, c);
-        }
-
     }
-
-
-    private static void captureFacet(List<TreeNode> tree, 
-                                     int parent, 
-                                     String name,
-                                     UIComponent c) {
-
-        if (!c.isTransient()) {
-            FacetNode n = new FacetNode(parent, name, c);
-            int pos = tree.size();
-            tree.add(n);
-            captureRest(tree, pos, c);
-        }
-
-    }
-
-
-    private static void captureRest(List<TreeNode> tree, 
-                                    int pos, 
-                                    UIComponent c) {
-
-        // store children
-        int sz = c.getChildCount();
-        if (sz > 0) {
-            List<UIComponent> child = c.getChildren();
-            for (int i = 0; i < sz; i++) {
-                captureChild(tree, pos, child.get(i));
-            }
-        }
-
-        // store facets
-        sz = c.getFacetCount();
-        if (sz > 0) {
-            for (Entry<String, UIComponent> entry : c.getFacets().entrySet()) {
-                captureFacet(tree,
-                             pos,
-                             entry.getKey(),
-                             entry.getValue());
-            }
-        }
-
-    }
-
-
-    private UIComponent newInstance(TreeNode n)
-    throws FacesException {
-
-        try {
-            Class<?> t = ((classMap != null) ? classMap.get(n.componentType) : null);
-            if (t == null) {
-                t = Util.loadClass(n.componentType, n);
-                if (t != null && classMap != null) {
-                    classMap.put(n.componentType, t);
-                } else {
-                    if (!isDevelopmentMode) {
-                        throw new NullPointerException();
-                    }
-                }
-            }
-
-            assert (t != null);
-            UIComponent c = (UIComponent) t.newInstance();
-            c.setId(n.id);
-
-            return c;
-        } catch (Exception e) {
-            throw new FacesException(e);
-        }
-
-    }   
-
-    private UIViewRoot restoreTree(FacesContext ctx,
-                                   String renderKitId,
-                                   Object[] tree)
-    throws FacesException {
-
-        UIComponent c;
-        FacetNode fn;
-        TreeNode tn;      
-        for (int i = 0; i < tree.length; i++) {
-            if (tree[i]instanceof FacetNode) {
-                fn = (FacetNode) tree[i];
-                c = newInstance(fn);
-                tree[i] = c;               
-                if (i != fn.parent) {
-                    ((UIComponent) tree[fn.parent]).getFacets()
-                          .put(fn.facetName, c);
-                }
-
-            } else {
-                tn = (TreeNode) tree[i];
-                c = newInstance(tn);
-                tree[i] = c;
-                if (i != tn.parent) {
-                    ((UIComponent) tree[tn.parent]).getChildren().add(c);
-                } else {
-                    assert(c instanceof UIViewRoot);
-                    UIViewRoot viewRoot = (UIViewRoot) c;
-                    ctx.setViewRoot(viewRoot);
-                    viewRoot.setRenderKitId(renderKitId);
-                }
-            }
-        }
-        return (UIViewRoot) tree[0];
-
-    }
-
-
-    // ----------------------------------------------------------- Inner Classes
-
-
-    private static class TreeNode implements Externalizable {
-
-        private static final String NULL_ID = "";
-
-        public String componentType;
-        public String id;       
-
-        public int parent;
-
-        private static final long serialVersionUID = -835775352718473281L;
-
-
-    // ------------------------------------------------------------ Constructors
-
-
-        public TreeNode() { }
-
-
-        public TreeNode(int parent, UIComponent c) {
-
-            this.parent = parent;
-            this.id = c.getId();
-            this.componentType = c.getClass().getName();
-
-        }
-
-
-    // --------------------------------------------- Methods From Externalizable
-
-        public void writeExternal(ObjectOutput out) throws IOException {
-
-            out.writeInt(this.parent);
-            out.writeUTF(this.componentType);
-            if (this.id != null) {
-                out.writeUTF(this.id);
-            } else {
-                out.writeUTF(NULL_ID);
-            }
-        }
-
-
-        public void readExternal(ObjectInput in)
-              throws IOException, ClassNotFoundException {
-
-            this.parent = in.readInt();
-            this.componentType = in.readUTF();
-            this.id = in.readUTF();
-            if (id.length() == 0) {
-                id = null;
-            }
-        }
-
-    } // END TreeNode
-
-
-    private static final class FacetNode extends TreeNode {
-
-
-        public String facetName;
-
-        private static final long serialVersionUID = -3777170310958005106L;
-
-
-    // ------------------------------------------------------------ Constructors
-
-        @SuppressWarnings({"UnusedDeclaration"})
-        public FacetNode() { } // for serialization purposes
-
-        public FacetNode(int parent, 
-                         String name, 
-                         UIComponent c) {
-
-            super(parent, c);
-            this.facetName = name;
-
-        }
-
-
-    // ---------------------------------------------------------- Public Methods
-
-        @Override
-        public void readExternal(ObjectInput in)
-              throws IOException, ClassNotFoundException {
-
-            super.readExternal(in);
-            this.facetName = in.readUTF();
-
-        }
-
-        @Override
-        public void writeExternal(ObjectOutput out) throws IOException {
-
-            super.writeExternal(out);
-            out.writeUTF(this.facetName);
-
-        }
-
-    } // END FacetNode
-
-
-} // END StateManagerImpl
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/application/ValidateComponentNesting.java b/jsf-ri/src/main/java/com/sun/faces/application/ValidateComponentNesting.java
new file mode 100644
index 0000000..bc8a53f
--- /dev/null
+++ b/jsf-ri/src/main/java/com/sun/faces/application/ValidateComponentNesting.java
@@ -0,0 +1,114 @@
+package com.sun.faces.application;
+
+import java.util.EnumSet;
+
+import javax.faces.application.FacesMessage;
+import javax.faces.application.ProjectStage;
+import javax.faces.component.ActionSource;
+import javax.faces.component.ActionSource2;
+import javax.faces.component.EditableValueHolder;
+import javax.faces.component.UIComponent;
+import javax.faces.component.UIForm;
+import javax.faces.component.UIViewAction;
+import javax.faces.component.UIViewParameter;
+import javax.faces.component.UIViewRoot;
+import javax.faces.component.visit.VisitCallback;
+import javax.faces.component.visit.VisitContext;
+import javax.faces.component.visit.VisitHint;
+import javax.faces.component.visit.VisitResult;
+import javax.faces.context.FacesContext;
+import javax.faces.event.AbortProcessingException;
+import javax.faces.event.SystemEvent;
+import javax.faces.event.SystemEventListener;
+
+
+import com.sun.faces.util.MessageUtils;
+
+/**
+ * <p>ValidateFormComponentNesting performs component tree validation to assure {@link ActionSource}
+ * , {@link ActionSource2} and {@link EditableValueHolder} components are placed inside a form.
+ * ValidateFormComponentNesting is installed automatically if {@link ProjectStage#Development} is
+ * active. </p>
+ * 
+ * @author dueni
+ * 
+ */
+public class ValidateComponentNesting implements SystemEventListener {
+
+    @Override
+    public boolean isListenerForSource(Object source) {
+        return (source instanceof UIViewRoot);
+    }
+
+    /**
+     * Process PostAddToViewEvent on UIViewRoot to validate form - action/input nesting.
+     */
+    @Override
+    public void processEvent(SystemEvent event) throws AbortProcessingException {
+        UIComponent root = (UIComponent) event.getSource();
+        FacesContext jsf = FacesContext.getCurrentInstance();
+        EnumSet<VisitHint> hints = EnumSet.of(VisitHint.SKIP_ITERATION);
+        VisitContext visitContext = VisitContext.createVisitContext(jsf, null, hints);
+
+        root.visitTree(visitContext, new ValidateFormNestingCallback());
+    }
+
+    static class ValidateFormNestingCallback implements VisitCallback {
+
+        // report missing form problem only once
+        boolean reportedOmittedFormOnce = false;
+
+        // report missing metadata problem only once
+        boolean reportedOmittedMetadataOnce = false;
+
+        @Override
+        public VisitResult visit(VisitContext context, UIComponent target) {
+            // default result: continue tree walk
+            VisitResult result = VisitResult.ACCEPT;
+
+            if (target instanceof UIForm || target.getFamily().endsWith("Form")
+                            || UIViewRoot.METADATA_FACET_NAME.equals(target.getId())) {
+                // stop tree walk if component is of type UIForm or component family ends on "Form"
+                // or if the component is the UIPanel with id METADATA_FACET_NAME 
+                result = VisitResult.REJECT;
+            } else if (target instanceof UIViewParameter || target instanceof UIViewAction) {
+                if (reportedOmittedMetadataOnce) {
+                    // report first detected problem only, then stop tree walk
+                    result = VisitResult.COMPLETE;
+                }
+                addOmittedMessage(context.getFacesContext(), target.getClientId(context
+                                .getFacesContext()), MessageUtils.MISSING_METADATA_ERROR);
+                reportedOmittedMetadataOnce = true;
+
+            } else if (target instanceof EditableValueHolder || target instanceof ActionSource
+                            || target instanceof ActionSource2) {
+                if (reportedOmittedFormOnce) {
+                    // report first detected problem only, then stop tree walk
+                    result = VisitResult.COMPLETE;
+                }
+                // if we find ActionSource, ActionSource2 or EditableValueHolder, that component
+                // must be outside of a form add warning message
+                addOmittedMessage(context.getFacesContext(), target.getClientId(context
+                                .getFacesContext()), MessageUtils.MISSING_FORM_ERROR);
+                reportedOmittedFormOnce = true;
+
+            }
+            return result;
+        }
+    }
+
+    /**
+     * method for adding a message regarding missing ancestor to context
+     * 
+     * @param ctx
+     * @param clientId
+     */
+    private static void addOmittedMessage(FacesContext jsf, String clientId, String key) {
+        Object[] params = new Object[] {};
+
+        FacesMessage m = MessageUtils.getExceptionMessage(key, params);
+        m.setSeverity(FacesMessage.SEVERITY_WARN);
+        jsf.addMessage(clientId, m);
+    }
+
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/application/ViewHandlerImpl.java b/jsf-ri/src/main/java/com/sun/faces/application/ViewHandlerImpl.java
index 8094e86..13bb989 100644
--- a/jsf-ri/src/main/java/com/sun/faces/application/ViewHandlerImpl.java
+++ b/jsf-ri/src/main/java/com/sun/faces/application/ViewHandlerImpl.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -34,7 +38,6 @@
  * holder.
  */
 
-
 // ViewHandlerImpl.java
 
 package com.sun.faces.application;
@@ -101,7 +104,8 @@ public class ViewHandlerImpl extends ViewHandler {
         WebConfiguration config = WebConfiguration.getInstance();
         String defaultSuffixConfig =
               config.getOptionValue(WebConfiguration.WebContextInitParameter.DefaultSuffix);
-        configuredExtensions = Util.split(defaultSuffixConfig, " ");
+        Map<String, Object> appMap = FacesContext.getCurrentInstance().getExternalContext().getApplicationMap();
+        configuredExtensions = Util.split(appMap, defaultSuffixConfig, " ");
     }
     
 
@@ -192,30 +196,36 @@ public class ViewHandlerImpl extends ViewHandler {
         }
         context.setResponseWriter(newWriter);
 
-        newWriter.startDocument();
+        try {
+            newWriter.startDocument();
 
-        doRenderView(context, viewToRender);
+            doRenderView(context, viewToRender);
 
-        newWriter.endDocument();
+            newWriter.endDocument();
 
-        // replace markers in the body content and write it to response.
+            // replace markers in the body content and write it to response.
 
-        // flush directly to the response
-        if (stateWriter.stateWritten()) {
-            stateWriter.flushToWriter();
+            // flush directly to the response
+            if (stateWriter.stateWritten()) {
+                stateWriter.flushToWriter();
+            }
         }
-
-        // clear the ThreadLocal reference.
-        stateWriter.release();
-
-        if (null != oldWriter) {
-            context.setResponseWriter(oldWriter);
+        finally {
+            
+            // clear the ThreadLocal reference.
+            stateWriter.release();
+            
+            if (null != oldWriter) {
+                context.setResponseWriter(oldWriter);
+            }
         }
 
         // write any AFTER_VIEW_CONTENT to the response
         // side effect: AFTER_VIEW_CONTENT removed
+        Map<String, Object> stateMap = RequestStateManager.getStateMap(context);
         ViewHandlerResponseWrapper wrapper = (ViewHandlerResponseWrapper)
-              RequestStateManager.remove(context, RequestStateManager.AFTER_VIEW_CONTENT);
+                stateMap.remove(RequestStateManager.AFTER_VIEW_CONTENT);
+
         if (null != wrapper) {
             wrapper.flushToWriter(response.getWriter(),
                     response.getCharacterEncoding());
@@ -432,8 +442,10 @@ public class ViewHandlerImpl extends ViewHandler {
         }
 
         ExternalContext extContext = context.getExternalContext();
+        Map<String, Object> stateMap = RequestStateManager.getStateMap(context);
+
 
-        if ("/*".equals(RequestStateManager.get(context, RequestStateManager.INVOCATION_PATH))) {
+        if ("/*".equals(stateMap.get(RequestStateManager.INVOCATION_PATH))) {
             throw new FacesException(MessageUtils.getExceptionMessageString(
                   MessageUtils.FACES_SERVLET_MAPPING_INCORRECT_ID));
         }
@@ -486,8 +498,7 @@ public class ViewHandlerImpl extends ViewHandler {
 
         // Put the AFTER_VIEW_CONTENT into request scope
         // temporarily
-        RequestStateManager.set(context,
-                                RequestStateManager.AFTER_VIEW_CONTENT,
+        stateMap.put(RequestStateManager.AFTER_VIEW_CONTENT,
                                 wrapped);
 
         return false;
@@ -541,8 +552,8 @@ public class ViewHandlerImpl extends ViewHandler {
             ResponseStateManager.RENDER_KIT_ID_PARAM);
 
         if (result == null) {
-            if (null ==
-                (result = context.getApplication().getDefaultRenderKitId())) {
+            result = context.getApplication().getDefaultRenderKitId();
+            if (null == result) {
                 result = RenderKitFactory.HTML_BASIC_RENDER_KIT;
             }
         }
@@ -644,7 +655,7 @@ public class ViewHandlerImpl extends ViewHandler {
             throw new NullPointerException(message);
         }
 
-        if (viewId.charAt(0) != '/') {
+        if (0 == viewId.length() || viewId.charAt(0) != '/') {
             String message =
                   MessageUtils.getExceptionMessageString(
                         MessageUtils.ILLEGAL_VIEW_ID_ID,
diff --git a/jsf-ri/src/main/java/com/sun/faces/application/ViewHandlerResponseWrapper.java b/jsf-ri/src/main/java/com/sun/faces/application/ViewHandlerResponseWrapper.java
index bca5d79..9562b5d 100644
--- a/jsf-ri/src/main/java/com/sun/faces/application/ViewHandlerResponseWrapper.java
+++ b/jsf-ri/src/main/java/com/sun/faces/application/ViewHandlerResponseWrapper.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/application/WebPrintWriter.java b/jsf-ri/src/main/java/com/sun/faces/application/WebPrintWriter.java
index ba17d94..e5b6877 100644
--- a/jsf-ri/src/main/java/com/sun/faces/application/WebPrintWriter.java
+++ b/jsf-ri/src/main/java/com/sun/faces/application/WebPrintWriter.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/application/WebappLifecycleListener.java b/jsf-ri/src/main/java/com/sun/faces/application/WebappLifecycleListener.java
index a0b7ce9..1f21aba 100644
--- a/jsf-ri/src/main/java/com/sun/faces/application/WebappLifecycleListener.java
+++ b/jsf-ri/src/main/java/com/sun/faces/application/WebappLifecycleListener.java
@@ -1,419 +1,409 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package com.sun.faces.application;
-
-import java.io.PrintWriter;
-import java.util.Enumeration;
-import java.util.List;
-import java.util.ArrayList;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-import javax.faces.event.AbortProcessingException;
-import javax.servlet.ServletContext;
-import javax.servlet.ServletContextAttributeEvent;
-import javax.servlet.ServletContextEvent;
-import javax.servlet.ServletRequest;
-import javax.servlet.ServletRequestAttributeEvent;
-import javax.servlet.ServletRequestEvent;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpSession;
-import javax.servlet.http.HttpSessionBindingEvent;
-import javax.servlet.http.HttpSessionEvent;
-
-import com.sun.faces.el.ELUtils;
-import com.sun.faces.io.FastStringWriter;
-import com.sun.faces.mgbean.BeanManager;
-import com.sun.faces.util.FacesLogger;
-import java.util.Map;
-import javax.faces.component.UIViewRoot;
-import javax.faces.context.FacesContext;
-import javax.faces.event.ExceptionQueuedEvent;
-import javax.faces.event.ExceptionQueuedEventContext;
-import javax.faces.event.SystemEvent;
-import javax.faces.event.PreDestroyViewMapEvent;
-import javax.faces.event.ViewMapListener;
-
-/**
- * <p>Central location for web application lifecycle events.<p>  
- * <p>The main purpose of this class is detect when we
- * should be invoking methods marked with the
- * <code>@PreDestroy</code> annotation.</p>
- */
-public class WebappLifecycleListener implements ViewMapListener {
-
-    // Log instance for this class
-    private static final Logger LOGGER = FacesLogger.APPLICATION.getLogger();
-    
-    private ServletContext servletContext;
-    private ApplicationAssociate applicationAssociate;
-    private List<HttpSession> activeSessions;
-
-
-    // ------------------------------------------------------------ Constructors
-
-
-    public WebappLifecycleListener() { }
-
-    public WebappLifecycleListener(ServletContext servletContext) {
-
-        this.servletContext = servletContext;
-
-    }
-
-
-    // ---------------------------------------------------------- Public Methods
-
-    /**
-     * The request is about to go out of scope of the web application.
-     *
-     * @param event the notification event
-     */
-    public void requestDestroyed(ServletRequestEvent event) {
-        FacesContext context = FacesContext.getCurrentInstance();
-        try {
-            ServletRequest request = event.getServletRequest();
-            for (Enumeration e = request.getAttributeNames(); e.hasMoreElements();) {
-                String beanName = (String) e.nextElement();
-                handleAttributeEvent(beanName,
-                        request.getAttribute(beanName),
-                        ELUtils.Scope.REQUEST);
-            }
-            syncSessionScopedBeans(request);
-        } catch (Throwable t) {
-            ExceptionQueuedEventContext eventContext =
-                    new ExceptionQueuedEventContext(context, t);
-            context.getApplication().publishEvent(context,
-                    ExceptionQueuedEvent.class, eventContext);
-            context.getExceptionHandler().handle();
-        }
-        finally {
-            if (null != context) {
-                context.release();
-            }
-            ApplicationAssociate.setCurrentInstance(null);
-        }
-    }
-
-    /**
-     * The request is about to come into scope of the web application.
-     *
-     * @param event the notification event
-     */
-    public void requestInitialized(ServletRequestEvent event) {
-        ApplicationAssociate.setCurrentInstance(getAssociate());
-    }
-
-    public boolean isListenerForSource(Object component) {
-        return (component instanceof UIViewRoot);
-    }
-
-    public void processEvent(SystemEvent event)
-    throws AbortProcessingException {
-        if (event instanceof PreDestroyViewMapEvent) {
-            Map<String, Object> viewMap =
-                  ((UIViewRoot) event.getSource()).getViewMap(false);
-            if (viewMap != null && viewMap.size() != 0) {
-                for (Map.Entry<String, Object> cur : viewMap.entrySet()) {
-                    handleAttributeEvent(cur.getKey(),
-                                         cur.getValue(),
-                                         ELUtils.Scope.VIEW);
-                }
-            }
-        }
-    }
-
-    /**
-     * Notfication that a session has been created.
-     * @param event the notification event
-     */
-    public void sessionCreated(HttpSessionEvent event) {
-        ApplicationAssociate associate = getAssociate();
-        // PENDING this should only create a new list if in dev mode
-         if (associate != null && associate.isDevModeEnabled()) {
-            if (activeSessions == null) {
-                activeSessions = new ArrayList<HttpSession>();
-            }
-            activeSessions.add(event.getSession());
-        }
-    }
-
-
-
-    /**
-     * Notification that a session is about to be invalidated.
-     *
-     * @param event the notification event
-     */
-    public void sessionDestroyed(HttpSessionEvent event) {        
-        HttpSession session = event.getSession();
-        if (activeSessions != null) {
-            activeSessions.remove(event.getSession());
-        }
-        for (Enumeration e = session.getAttributeNames(); e.hasMoreElements(); ) {
-            String beanName = (String)e.nextElement();
-            handleAttributeEvent(beanName, 
-                                 session.getAttribute(beanName), 
-                                 ELUtils.Scope.SESSION);
-        }
-    }
-
-    /**
-     * Notification that an existing attribute has been removed from the
-     * servlet request. Called after the attribute is removed.
-     * @param event the notification event
-     */
-    public void attributeRemoved(ServletRequestAttributeEvent event) {
-        handleAttributeEvent(event.getName(),
-                             event.getValue(),
-                             ELUtils.Scope.REQUEST);
-    }
-
-    /**
-     * Notification that an attribute was replaced on the
-     * servlet request. Called after the attribute is replaced.
-     *
-     * @param event the notification event
-     */
-    public void attributeReplaced(ServletRequestAttributeEvent event) {
-        String attrName = event.getName();
-        Object newValue = event.getServletRequest().getAttribute(attrName);
-
-        // perhaps a bit paranoid, but since the javadocs are a bit vague,
-        // only handle the event if oldValue and newValue are not the
-        // exact same object
-        //noinspection ObjectEquality
-        if (event.getValue() != newValue) {
-            handleAttributeEvent(attrName,
-                                 event.getValue(),
-                                 ELUtils.Scope.REQUEST);
-        }
-    }
-    
-
-    /**
-     * Notification that an attribute has been removed from a session.
-     * Called after the attribute is removed.
-     *
-     * @param event the nofication event
-     */
-    public void attributeRemoved(HttpSessionBindingEvent event) {
-        handleAttributeEvent(event.getName(),
-                             event.getValue(),
-                             ELUtils.Scope.SESSION);
-    }
-
-    /**
-     * Notification that an attribute has been replaced in a session.
-     * Called after the attribute is replaced.
-     *
-     * @param event the notification event
-     */
-    public void attributeReplaced(HttpSessionBindingEvent event) {
-        HttpSession session = event.getSession();
-        String attrName = event.getName();
-        Object newValue = session.getAttribute(attrName);
-
-        // perhaps a bit paranoid, but since the javadocs are a bit vague,
-        // only handle the event if oldValue and newValue are not the
-        // exact same object
-        //noinspection ObjectEquality
-        if (event.getValue() != newValue) {
-            handleAttributeEvent(attrName,
-                                 event.getValue(),
-                                 ELUtils.Scope.SESSION);
-        }
-
-    }
-
-
-    /**
-     * Notification that an existing attribute has been removed from the servlet context.
-     * Called after the attribute is removed.
-     *
-     * @param event the notification event
-     */
-    public void attributeRemoved(ServletContextAttributeEvent event) {
-        handleAttributeEvent(event.getName(),
-                             event.getValue(),
-                             ELUtils.Scope.APPLICATION);
-    }
-
-    /**
-     * Notification that an attribute on the servlet context has been replaced.
-     * Called after the attribute is replaced.
-     *
-     * @param event the notification event
-     */
-    public void attributeReplaced(ServletContextAttributeEvent event) {
-        ServletContext context = event.getServletContext();
-        String attrName = event.getName();
-        Object newValue = context.getAttribute(attrName);
-
-        // perhaps a bit paranoid, but since the javadocs are a bit vague,
-        // only handle the event if oldValue and newValue are not the
-        // exact same object
-        //noinspection ObjectEquality
-        if (event.getValue() != newValue) {
-            handleAttributeEvent(attrName,
-                                 event.getValue(),
-                                 ELUtils.Scope.APPLICATION);
-        }
-    }
-
-    private void handleAttributeEvent(String beanName,
-                                      Object bean,
-                                      ELUtils.Scope scope) {
-
-        ApplicationAssociate associate = getAssociate();
-        try {
-            if (associate != null) {
-                BeanManager beanManager = associate.getBeanManager();
-                if (beanManager != null && beanManager.isManaged(beanName)) {
-                    beanManager.destroy(beanName, bean);
-                }              
-            }
-        } catch (Exception e) {
-            String className = e.getClass().getName();
-            String message = e.getMessage();            
-            if (message == null) {
-                message = "";
-            }
-            if (LOGGER.isLoggable(Level.INFO)) {
-                LOGGER.log(Level.INFO,
-                           "jsf.config.listener.predestroy.error",
-                           new Object[]{
-                                 className,
-                                 beanName,
-                                 scope,
-                                 message});
-            }
-            if (LOGGER.isLoggable(Level.FINE)) {
-                FastStringWriter writer = new FastStringWriter(128);
-                e.printStackTrace(new PrintWriter(writer));
-                LOGGER.fine(writer.toString());
-            }
-        }
-
-    } // END handleAttributeEvent
-
-    /**
-     * Notification that the web application initialization
-     * process is starting.
-     * All ServletContextListeners are notified of context
-     * initialization before any filter or servlet in the web
-     * application is initialized.
-     *
-     * @param event the notification event
-     */
-    public void contextInitialized(ServletContextEvent event) {
-        if (this.servletContext == null) {
-            this.servletContext = event.getServletContext();
-        }
-    }
-
-    /**
-     * Notification that the servlet context is about to be shut down.
-     * All servlets and filters have been destroy()ed before any
-     * ServletContextListeners are notified of context
-     * destruction.
-     *
-     * @param event the nofication event
-     */
-    public void contextDestroyed(ServletContextEvent event) {
-        
-        for (Enumeration e = servletContext.getAttributeNames(); e.hasMoreElements(); ) {
-            String beanName = (String)e.nextElement();
-            handleAttributeEvent(beanName, 
-                                 servletContext.getAttribute(beanName), 
-                                 ELUtils.Scope.APPLICATION);
-        }
-        this.applicationAssociate = null;
-
-    }
-
-
-    public List<HttpSession> getActiveSessions() {
-        return new ArrayList<HttpSession>(activeSessions);
-    }
-
-
-    // --------------------------------------------------------- Private Methods
-
-
-    private ApplicationAssociate getAssociate() {
-
-        if (applicationAssociate == null) {
-            applicationAssociate = ApplicationAssociate.getInstance(servletContext);
-        }
-
-        return applicationAssociate;
-    }
-
-
-    /**
-     * This method ensures that session scoped managed beans will be
-     * synchronized properly in a clustered environment.
-     *
-     * @param request the current <code>ServletRequest</code>
-     */
-    private void syncSessionScopedBeans(ServletRequest request) {
-
-        if (request instanceof HttpServletRequest) {
-            HttpSession session = ((HttpServletRequest) request).getSession(false);
-            if (session != null) {
-                ApplicationAssociate associate = getAssociate();
-                if (associate == null) {
-                    return;
-                }
-                BeanManager manager = associate.getBeanManager();
-                if (manager != null) {
-                    for (Enumeration e = session.getAttributeNames();
-                         e.hasMoreElements();) {
-                        String name = (String) e.nextElement();
-                        if (manager.isManaged(name)) {
-                            session
-                                  .setAttribute(name, session.getAttribute(name));
-                        }
-                    }
-                }
-            }
-        }
-
-    }
-
-} // END WebappLifecycleListener
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.application;
+
+import com.sun.faces.application.view.ViewScopeManager;
+import com.sun.faces.config.InitFacesContext;
+import com.sun.faces.config.WebConfiguration;
+import java.io.PrintWriter;
+import java.util.Enumeration;
+import java.util.List;
+import java.util.ArrayList;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.servlet.ServletContext;
+import javax.servlet.ServletContextAttributeEvent;
+import javax.servlet.ServletContextEvent;
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletRequestAttributeEvent;
+import javax.servlet.ServletRequestEvent;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpSession;
+import javax.servlet.http.HttpSessionBindingEvent;
+import javax.servlet.http.HttpSessionEvent;
+import com.sun.faces.el.ELUtils;
+import com.sun.faces.flow.FlowCDIContext;
+import com.sun.faces.io.FastStringWriter;
+import com.sun.faces.mgbean.BeanManager;
+import com.sun.faces.util.FacesLogger;
+import com.sun.faces.util.Util;
+import javax.faces.context.FacesContext;
+import javax.faces.event.ExceptionQueuedEvent;
+import javax.faces.event.ExceptionQueuedEventContext;
+
+/**
+ * <p>Central location for web application lifecycle events.<p>  
+ * <p>The main purpose of this class is detect when we
+ * should be invoking methods marked with the
+ * <code>@PreDestroy</code> annotation.</p>
+ */
+public class WebappLifecycleListener {
+
+    // Log instance for this class
+    private static final Logger LOGGER = FacesLogger.APPLICATION.getLogger();
+    
+    private ServletContext servletContext;
+    private ApplicationAssociate applicationAssociate;
+    private List<HttpSession> activeSessions;
+
+
+    // ------------------------------------------------------------ Constructors
+
+
+    public WebappLifecycleListener() { }
+
+    public WebappLifecycleListener(ServletContext servletContext) {
+
+        this.servletContext = servletContext;
+
+    }
+
+
+    // ---------------------------------------------------------- Public Methods
+
+    /**
+     * The request is about to go out of scope of the web application.
+     *
+     * @param event the notification event
+     */
+    public void requestDestroyed(ServletRequestEvent event) {
+
+        try {
+            ServletRequest request = event.getServletRequest();
+            for (Enumeration e = request.getAttributeNames(); e.hasMoreElements();) {
+                String beanName = (String) e.nextElement();
+                handleAttributeEvent(beanName,
+                        request.getAttribute(beanName),
+                        ELUtils.Scope.REQUEST);
+            }
+            WebConfiguration config = WebConfiguration.getInstance(event.getServletContext());
+            if (config.isOptionEnabled(WebConfiguration.BooleanWebContextInitParameter.EnableAgressiveSessionDirtying)) {
+                syncSessionScopedBeans(request);
+            }
+        } catch (Throwable t) {
+            FacesContext context = new InitFacesContext(event.getServletContext());
+            ExceptionQueuedEventContext eventContext =
+                    new ExceptionQueuedEventContext(context, t);
+            context.getApplication().publishEvent(context,
+                    ExceptionQueuedEvent.class, eventContext);
+            context.getExceptionHandler().handle();
+        }
+        finally {
+            ApplicationAssociate.setCurrentInstance(null);
+        }
+    }
+
+    /**
+     * The request is about to come into scope of the web application.
+     *
+     * @param event the notification event
+     */
+    public void requestInitialized(ServletRequestEvent event) {
+        FacesContext facesContext = FacesContext.getCurrentInstance();
+        if (facesContext instanceof InitFacesContext) {
+            InitFacesContext initFacesContext = (InitFacesContext) facesContext;
+            initFacesContext.releaseCurrentInstance();
+        }
+        ApplicationAssociate.setCurrentInstance(getAssociate());
+    }
+
+    /**
+     * Notfication that a session has been created.
+     * @param event the notification event
+     */
+    public void sessionCreated(HttpSessionEvent event) {
+        ApplicationAssociate associate = getAssociate();
+        // PENDING this should only create a new list if in dev mode
+         if (associate != null && associate.isDevModeEnabled()) {
+            if (activeSessions == null) {
+                activeSessions = new ArrayList<HttpSession>();
+            }
+            activeSessions.add(event.getSession());
+        }
+    }
+
+
+
+    /**
+     * Notification that a session is about to be invalidated.
+     *
+     * @param event the notification event
+     */
+    public void sessionDestroyed(HttpSessionEvent event) {        
+        if (activeSessions != null) {
+            activeSessions.remove(event.getSession());
+        }
+                
+        if (Util.isCDIAvailable(servletContext)) {
+            FlowCDIContext.sessionDestroyed(event);
+        }
+
+        ViewScopeManager manager = (ViewScopeManager) servletContext.getAttribute(ViewScopeManager.VIEW_SCOPE_MANAGER);
+        if (manager != null) {
+            manager.sessionDestroyed(event);
+        }
+    }
+
+    /**
+     * Notification that an existing attribute has been removed from the
+     * servlet request. Called after the attribute is removed.
+     * @param event the notification event
+     */
+    public void attributeRemoved(ServletRequestAttributeEvent event) {
+        handleAttributeEvent(event.getName(),
+                             event.getValue(),
+                             ELUtils.Scope.REQUEST);
+    }
+
+    /**
+     * Notification that an attribute was replaced on the
+     * servlet request. Called after the attribute is replaced.
+     *
+     * @param event the notification event
+     */
+    public void attributeReplaced(ServletRequestAttributeEvent event) {
+        String attrName = event.getName();
+        Object newValue = event.getServletRequest().getAttribute(attrName);
+
+        // perhaps a bit paranoid, but since the javadocs are a bit vague,
+        // only handle the event if oldValue and newValue are not the
+        // exact same object
+        //noinspection ObjectEquality
+        if (event.getValue() != newValue) {
+            handleAttributeEvent(attrName,
+                                 event.getValue(),
+                                 ELUtils.Scope.REQUEST);
+        }
+    }
+    
+
+    /**
+     * Notification that an attribute has been removed from a session.
+     * Called after the attribute is removed.
+     *
+     * @param event the nofication event
+     */
+    public void attributeRemoved(HttpSessionBindingEvent event) {
+        handleAttributeEvent(event.getName(),
+                             event.getValue(),
+                             ELUtils.Scope.SESSION);
+    }
+
+    /**
+     * Notification that an attribute has been replaced in a session.
+     * Called after the attribute is replaced.
+     *
+     * @param event the notification event
+     */
+    public void attributeReplaced(HttpSessionBindingEvent event) {
+        HttpSession session = event.getSession();
+        String attrName = event.getName();
+        Object newValue = session.getAttribute(attrName);
+
+        // perhaps a bit paranoid, but since the javadocs are a bit vague,
+        // only handle the event if oldValue and newValue are not the
+        // exact same object
+        //noinspection ObjectEquality
+        if (event.getValue() != newValue) {
+            handleAttributeEvent(attrName,
+                                 event.getValue(),
+                                 ELUtils.Scope.SESSION);
+        }
+
+    }
+
+
+    /**
+     * Notification that an existing attribute has been removed from the servlet context.
+     * Called after the attribute is removed.
+     *
+     * @param event the notification event
+     */
+    public void attributeRemoved(ServletContextAttributeEvent event) {
+        handleAttributeEvent(event.getName(),
+                             event.getValue(),
+                             ELUtils.Scope.APPLICATION);
+    }
+
+    /**
+     * Notification that an attribute on the servlet context has been replaced.
+     * Called after the attribute is replaced.
+     *
+     * @param event the notification event
+     */
+    public void attributeReplaced(ServletContextAttributeEvent event) {
+        ServletContext context = event.getServletContext();
+        String attrName = event.getName();
+        Object newValue = context.getAttribute(attrName);
+
+        // perhaps a bit paranoid, but since the javadocs are a bit vague,
+        // only handle the event if oldValue and newValue are not the
+        // exact same object
+        //noinspection ObjectEquality
+        if (event.getValue() != newValue) {
+            handleAttributeEvent(attrName,
+                                 event.getValue(),
+                                 ELUtils.Scope.APPLICATION);
+        }
+    }
+
+    private void handleAttributeEvent(String beanName,
+                                      Object bean,
+                                      ELUtils.Scope scope) {
+
+        ApplicationAssociate associate = getAssociate();
+        try {
+            if (associate != null) {
+                BeanManager beanManager = associate.getBeanManager();
+                if (beanManager != null && beanManager.isManaged(beanName)) {
+                    beanManager.destroy(beanName, bean);
+                }              
+            }
+        } catch (Exception e) {
+            String className = e.getClass().getName();
+            String message = e.getMessage();            
+            if (message == null) {
+                message = "";
+            }
+            if (LOGGER.isLoggable(Level.INFO)) {
+                LOGGER.log(Level.INFO,
+                           "jsf.config.listener.predestroy.error",
+                           new Object[]{
+                                 className,
+                                 beanName,
+                                 scope,
+                                 message});
+            }
+            if (LOGGER.isLoggable(Level.FINE)) {
+                FastStringWriter writer = new FastStringWriter(128);
+                e.printStackTrace(new PrintWriter(writer));
+                LOGGER.fine(writer.toString());
+            }
+        }
+
+    } // END handleAttributeEvent
+
+    /**
+     * Notification that the web application initialization
+     * process is starting.
+     * All ServletContextListeners are notified of context
+     * initialization before any filter or servlet in the web
+     * application is initialized.
+     *
+     * @param event the notification event
+     */
+    public void contextInitialized(ServletContextEvent event) {
+        if (this.servletContext == null) {
+            this.servletContext = event.getServletContext();
+        }
+    }
+
+    /**
+     * Notification that the servlet context is about to be shut down.
+     * All servlets and filters have been destroy()ed before any
+     * ServletContextListeners are notified of context
+     * destruction.
+     *
+     * @param event the nofication event
+     */
+    public void contextDestroyed(ServletContextEvent event) {
+        
+        for (Enumeration e = servletContext.getAttributeNames(); e.hasMoreElements(); ) {
+            String beanName = (String)e.nextElement();
+            handleAttributeEvent(beanName, 
+                                 servletContext.getAttribute(beanName), 
+                                 ELUtils.Scope.APPLICATION);
+        }
+        this.applicationAssociate = null;
+
+    }
+
+
+    public List<HttpSession> getActiveSessions() {
+        return new ArrayList<HttpSession>(activeSessions);
+    }
+
+
+    // --------------------------------------------------------- Private Methods
+
+
+    private ApplicationAssociate getAssociate() {
+
+        if (applicationAssociate == null) {
+            applicationAssociate = ApplicationAssociate.getInstance(servletContext);
+        }
+
+        return applicationAssociate;
+    }
+
+
+    /**
+     * This method ensures that session scoped managed beans will be
+     * synchronized properly in a clustered environment.
+     *
+     * @param request the current <code>ServletRequest</code>
+     */
+    private void syncSessionScopedBeans(ServletRequest request) {
+
+        if (request instanceof HttpServletRequest) {
+            HttpSession session = ((HttpServletRequest) request).getSession(false);
+            if (session != null) {
+                ApplicationAssociate associate = getAssociate();
+                if (associate == null) {
+                    return;
+                }
+                BeanManager manager = associate.getBeanManager();
+                if (manager != null) {
+                    for (Enumeration e = session.getAttributeNames();
+                         e.hasMoreElements();) {
+                        String name = (String) e.nextElement();
+                        if (manager.isManaged(name)) {
+                            session
+                                  .setAttribute(name, session.getAttribute(name));
+                        }
+                    }
+                }
+            }
+        }
+
+    }
+
+} // END WebappLifecycleListener
diff --git a/jsf-ri/src/main/java/com/sun/faces/application/annotation/AnnotationManager.java b/jsf-ri/src/main/java/com/sun/faces/application/annotation/AnnotationManager.java
index f3c3830..9491852 100644
--- a/jsf-ri/src/main/java/com/sun/faces/application/annotation/AnnotationManager.java
+++ b/jsf-ri/src/main/java/com/sun/faces/application/annotation/AnnotationManager.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -75,19 +79,38 @@ public class AnnotationManager {
     private static final Logger LOGGER = FacesLogger.APPLICATION.getLogger();
     private static final Scanner RESOURCE_DEPENDENCY_SCANNER = new ResourceDependencyScanner();
     private static final Scanner LISTENER_FOR_SCANNER = new ListenerForScanner();
+    /*
+     * This code is the prototype implementation for @EJB, @Resource, ..... support.
+     * 
+    private static final Scanner EJB_SCANNER = new DelegatedEJBScanner();
+    private static final Scanner RESOURCE_SCANNER = new DelegatedResourceScanner();
+    private static final Scanner WEBSERVICE_REF_SCANNER = new DelegatedWebServiceRefScanner();
+    private static final Scanner PERSISTENCE_UNIT_SCANNER = new DelegatedPersistenceUnitScanner();
+    private static final Scanner PERSISTENCE_CONTEXT_SCANNER = new DelegatedPersistenceContextScanner();
+    */
 
     /**
      * {@link Scanner} instances to be used against {@link Behavior} classes.
      */
     private static final Scanner[] BEHAVIOR_SCANNERS = {
-          RESOURCE_DEPENDENCY_SCANNER
+          RESOURCE_DEPENDENCY_SCANNER /*,
+          EJB_SCANNER,
+          RESOURCE_SCANNER,
+          WEBSERVICE_REF_SCANNER,
+          PERSISTENCE_UNIT_SCANNER,
+          PERSISTENCE_CONTEXT_SCANNER */
     };
 
     /**
      * {@link Scanner} instances to be used against {@link ClientBehaviorRenderer} classes.
      */
     private static final Scanner[] CLIENT_BEHAVIOR_RENDERER_SCANNERS = {
-          RESOURCE_DEPENDENCY_SCANNER
+          RESOURCE_DEPENDENCY_SCANNER /*,
+          EJB_SCANNER,
+          RESOURCE_SCANNER,
+          WEBSERVICE_REF_SCANNER,
+          PERSISTENCE_UNIT_SCANNER,
+          PERSISTENCE_CONTEXT_SCANNER */
     };
 
     /**
@@ -95,21 +118,36 @@ public class AnnotationManager {
      */
     private static final Scanner[] UICOMPONENT_SCANNERS = {
           RESOURCE_DEPENDENCY_SCANNER,
-          LISTENER_FOR_SCANNER
+          LISTENER_FOR_SCANNER /*,
+          EJB_SCANNER,
+          RESOURCE_SCANNER,
+          WEBSERVICE_REF_SCANNER,
+          PERSISTENCE_UNIT_SCANNER,
+          PERSISTENCE_CONTEXT_SCANNER */
     };
 
     /**
      * {@link Scanner} instances to be used against {@link Validator} classes.
      */
     private static final Scanner[] VALIDATOR_SCANNERS = {
-          RESOURCE_DEPENDENCY_SCANNER
+          RESOURCE_DEPENDENCY_SCANNER /*,
+          EJB_SCANNER,
+          RESOURCE_SCANNER,
+          WEBSERVICE_REF_SCANNER,
+          PERSISTENCE_UNIT_SCANNER,
+          PERSISTENCE_CONTEXT_SCANNER */
     };
 
     /**
      * {@link Scanner} instances to be used against {@link Converter} classes.
      */
     private static final Scanner[] CONVERTER_SCANNERS = {
-          RESOURCE_DEPENDENCY_SCANNER
+          RESOURCE_DEPENDENCY_SCANNER /*,
+          EJB_SCANNER,
+          RESOURCE_SCANNER,
+          WEBSERVICE_REF_SCANNER,
+          PERSISTENCE_UNIT_SCANNER,
+          PERSISTENCE_CONTEXT_SCANNER */
     };
 
     /**
@@ -121,7 +159,7 @@ public class AnnotationManager {
     };
 
     private static final Scanner[] EVENTS_SCANNERS = {
-        RESOURCE_DEPENDENCY_SCANNER
+          RESOURCE_DEPENDENCY_SCANNER
     };
 
     /**
@@ -179,7 +217,7 @@ public class AnnotationManager {
      * @param annotatedClasses <code>Collection</code> of class names known
      *  to contain one or more Faces configuration annotations
      */
-    public void applyConfigAnntations(FacesContext ctx,
+    public void applyConfigAnnotations(FacesContext ctx,
                                       Class<? extends Annotation> annotationType,
                                       Set<? extends Class> annotatedClasses) {
 
@@ -428,25 +466,18 @@ public class AnnotationManager {
 
             Map<Class<? extends Annotation>, RuntimeAnnotationHandler> map = null;
             for (Scanner scanner : scanners) {
-                RuntimeAnnotationHandler handler = scanner.scan(clazz);
-                if (handler != null) {
-                    if (map == null) {
-                        map = new HashMap<Class<? extends Annotation>, RuntimeAnnotationHandler>(2, 1.0f);
+                    RuntimeAnnotationHandler handler = scanner.scan(clazz);
+                    if (handler != null) {
+                        if (map == null) {
+                            map = new HashMap<Class<? extends Annotation>, RuntimeAnnotationHandler>(2, 1.0f);
+                        }
+                        map.put(scanner.getAnnotation(), handler);
                     }
-                    map.put(scanner.getAnnotation(), handler);
                 }
-            }
 
             return ((map != null) ? map : EMPTY);
             
         }
 
     } // END ProcessAnnotationsTask
-
-
-
-
-
-    
-
 }
diff --git a/jsf-ri/src/main/java/com/sun/faces/application/annotation/BehaviorConfigHandler.java b/jsf-ri/src/main/java/com/sun/faces/application/annotation/BehaviorConfigHandler.java
index a66557c..47d8672 100644
--- a/jsf-ri/src/main/java/com/sun/faces/application/annotation/BehaviorConfigHandler.java
+++ b/jsf-ri/src/main/java/com/sun/faces/application/annotation/BehaviorConfigHandler.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/application/annotation/ComponentConfigHandler.java b/jsf-ri/src/main/java/com/sun/faces/application/annotation/ComponentConfigHandler.java
index 6fb9fa0..df82b74 100644
--- a/jsf-ri/src/main/java/com/sun/faces/application/annotation/ComponentConfigHandler.java
+++ b/jsf-ri/src/main/java/com/sun/faces/application/annotation/ComponentConfigHandler.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -36,6 +40,7 @@
 
 package com.sun.faces.application.annotation;
 
+import com.sun.faces.application.ApplicationAssociate;
 import java.lang.annotation.Annotation;
 import java.util.Collection;
 import java.util.Collections;
@@ -63,7 +68,8 @@ public class ComponentConfigHandler implements ConfigAnnotationHandler {
         HANDLES = Collections.unmodifiableCollection(handles);
     }
 
-    private Map<String,String> components;
+    // key: componentId 
+    private Map<String,FacesComponentUsage> components;
 
 
     // ------------------------------------- Methods from ComponentConfigHandler
@@ -85,9 +91,14 @@ public class ComponentConfigHandler implements ConfigAnnotationHandler {
     public void collect(Class<?> target, Annotation annotation) {
 
         if (components == null) {
-            components = new HashMap<String,String>();
+            components = new HashMap<String,FacesComponentUsage>();
         }
-        components.put(((FacesComponent) annotation).value(), target.getName());
+        String value = ((FacesComponent) annotation).value();
+        if (null == value || 0 == value.length()) {
+            value = target.getSimpleName();
+            value = Character.toLowerCase(value.charAt(0)) + value.substring(1);
+        }
+        components.put(value,new FacesComponentUsage(target, (FacesComponent) annotation));
 
     }
 
@@ -99,8 +110,12 @@ public class ComponentConfigHandler implements ConfigAnnotationHandler {
 
         if (components != null) {
             Application app = ctx.getApplication();
-            for (Map.Entry<String, String> entry : components.entrySet()) {
-                app.addComponent(entry.getKey(), entry.getValue());
+            ApplicationAssociate appAss = ApplicationAssociate.getCurrentInstance();
+            for (Map.Entry<String, FacesComponentUsage> entry : components.entrySet()) {
+                if (entry.getValue().getAnnotation().createTag()) {
+                    appAss.addFacesComponent(entry.getValue());
+                }
+                app.addComponent(entry.getKey(), entry.getValue().getTarget().getName());
             }
         }
 
diff --git a/jsf-ri/src/main/java/com/sun/faces/application/annotation/ConfigAnnotationHandler.java b/jsf-ri/src/main/java/com/sun/faces/application/annotation/ConfigAnnotationHandler.java
index edb7143..1cfd95c 100644
--- a/jsf-ri/src/main/java/com/sun/faces/application/annotation/ConfigAnnotationHandler.java
+++ b/jsf-ri/src/main/java/com/sun/faces/application/annotation/ConfigAnnotationHandler.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/application/annotation/ConverterConfigHandler.java b/jsf-ri/src/main/java/com/sun/faces/application/annotation/ConverterConfigHandler.java
index 641d384..0bc5352 100644
--- a/jsf-ri/src/main/java/com/sun/faces/application/annotation/ConverterConfigHandler.java
+++ b/jsf-ri/src/main/java/com/sun/faces/application/annotation/ConverterConfigHandler.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -36,12 +40,15 @@
 
 package com.sun.faces.application.annotation;
 
+import com.sun.faces.util.FacesLogger;
 import java.lang.annotation.Annotation;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.ArrayList;
 import java.util.Map;
 import java.util.HashMap;
+import java.util.logging.Level;
+import java.util.logging.Logger;
 
 import javax.faces.context.FacesContext;
 import javax.faces.application.Application;
@@ -55,7 +62,10 @@ import javax.faces.convert.FacesConverter;
  */
 public class ConverterConfigHandler implements ConfigAnnotationHandler {
 
+    private static final Logger LOGGER = FacesLogger.APPLICATION.getLogger();
+    
     private static final Collection<Class<? extends Annotation>> HANDLES;
+    
     static {
         Collection<Class<? extends Annotation>> handles =
               new ArrayList<Class<? extends Annotation>>(1);
@@ -82,13 +92,23 @@ public class ConverterConfigHandler implements ConfigAnnotationHandler {
     /**
      * @see com.sun.faces.application.annotation.ConfigAnnotationHandler#collect(Class, java.lang.annotation.Annotation)
      */
+    @Override
     public void collect(Class<?> target, Annotation annotation) {
 
         if (converters == null) {
             converters = new HashMap<Object,String>();
         }
-        Object key = null;
+        Object key;
         FacesConverter converterAnnotation = (FacesConverter) annotation;
+        
+        if (converterAnnotation.value().length() > 0 &&
+                converterAnnotation.forClass() != null &&
+                converterAnnotation.forClass() != Object.class) {
+            if (LOGGER.isLoggable(Level.WARNING)) {
+                LOGGER.log(Level.WARNING, "@FacesConverter is using both value and forClass, only value will be applied.");
+            }
+        }
+        
         if (0 == converterAnnotation.value().length()) {
             key = converterAnnotation.forClass();
         } else {
@@ -117,4 +137,4 @@ public class ConverterConfigHandler implements ConfigAnnotationHandler {
 
     }
 
-}
\ No newline at end of file
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/application/annotation/DelegatedEJBScanner.java b/jsf-ri/src/main/java/com/sun/faces/application/annotation/DelegatedEJBScanner.java
new file mode 100644
index 0000000..c3350fc
--- /dev/null
+++ b/jsf-ri/src/main/java/com/sun/faces/application/annotation/DelegatedEJBScanner.java
@@ -0,0 +1,88 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.application.annotation;
+
+import java.lang.annotation.Annotation;
+
+/**
+ * <code>Scanner</code> implementation responsible for EJB annotations.
+ *
+ * <p> Note this will delegate down to the EJBScanner so we can fail gracefully
+ * when JavaEE is not available. </p>
+ */
+public class DelegatedEJBScanner implements Scanner {
+
+    private Scanner delegate;
+
+    public DelegatedEJBScanner() {
+        try {
+            delegate = new EJBScanner();
+        } catch (Throwable throwable) {
+            throwable.printStackTrace(System.err);
+        }
+    }
+
+    /**
+     * Delegate to the actual EJB scanner.
+     *
+     * @return the annotation.
+     */
+    @Override
+    public Class<? extends Annotation> getAnnotation() {
+        if (delegate != null) {
+            return delegate.getAnnotation();
+        }
+        return null;
+    }
+
+    /**
+     * Delegate to the actual EBJ scanner.
+     *
+     * @param clazz the class.
+     * @return the runtime annotation handler.
+     */
+    @Override
+    public RuntimeAnnotationHandler scan(Class<?> clazz) {
+        if (delegate != null) {
+            return delegate.scan(clazz);
+        }
+        return null;
+    }
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/application/annotation/DelegatedPersistenceContextScanner.java b/jsf-ri/src/main/java/com/sun/faces/application/annotation/DelegatedPersistenceContextScanner.java
new file mode 100644
index 0000000..1d7966f
--- /dev/null
+++ b/jsf-ri/src/main/java/com/sun/faces/application/annotation/DelegatedPersistenceContextScanner.java
@@ -0,0 +1,89 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.application.annotation;
+
+import java.lang.annotation.Annotation;
+
+/**
+ * <code>Scanner</code> implementation responsible for PersistenceContext
+ * annotations.
+ *
+ * <p> Note this will delegate down to the PersistenceContextScanner so we can fail
+ * gracefully when JavaEE is not available. </p>
+ */
+public class DelegatedPersistenceContextScanner implements Scanner {
+
+    private Scanner delegate;
+
+    public DelegatedPersistenceContextScanner() {
+        try {
+            delegate = new PersistenceContextScanner();
+        } catch (Throwable throwable) {
+            throwable.printStackTrace(System.err);
+        }
+    }
+
+    /**
+     * Delegate to the actual PersistenceContext scanner.
+     *
+     * @return the annotation.
+     */
+    @Override
+    public Class<? extends Annotation> getAnnotation() {
+        if (delegate != null) {
+            return delegate.getAnnotation();
+        }
+        return null;
+    }
+
+    /**
+     * Delegate to the actual EBJ scanner.
+     *
+     * @param clazz the class.
+     * @return the runtime annotation handler.
+     */
+    @Override
+    public RuntimeAnnotationHandler scan(Class<?> clazz) {
+        if (delegate != null) {
+            return delegate.scan(clazz);
+        }
+        return null;
+    }
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/application/annotation/DelegatedPersistenceUnitScanner.java b/jsf-ri/src/main/java/com/sun/faces/application/annotation/DelegatedPersistenceUnitScanner.java
new file mode 100644
index 0000000..0d270a2
--- /dev/null
+++ b/jsf-ri/src/main/java/com/sun/faces/application/annotation/DelegatedPersistenceUnitScanner.java
@@ -0,0 +1,89 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.application.annotation;
+
+import java.lang.annotation.Annotation;
+
+/**
+ * <code>Scanner</code> implementation responsible for PersistenceUnit
+ * annotations.
+ *
+ * <p> Note this will delegate down to the PersistenceUnitScanner so we can fail
+ * gracefully when JavaEE is not available. </p>
+ */
+public class DelegatedPersistenceUnitScanner implements Scanner {
+
+    private Scanner delegate;
+
+    public DelegatedPersistenceUnitScanner() {
+        try {
+            delegate = new PersistenceUnitScanner();
+        } catch (Throwable throwable) {
+            throwable.printStackTrace(System.err);
+        }
+    }
+
+    /**
+     * Delegate to the actual PersistenceUnit scanner.
+     *
+     * @return the annotation.
+     */
+    @Override
+    public Class<? extends Annotation> getAnnotation() {
+        if (delegate != null) {
+            return delegate.getAnnotation();
+        }
+        return null;
+    }
+
+    /**
+     * Delegate to the actual EBJ scanner.
+     *
+     * @param clazz the class.
+     * @return the runtime annotation handler.
+     */
+    @Override
+    public RuntimeAnnotationHandler scan(Class<?> clazz) {
+        if (delegate != null) {
+            return delegate.scan(clazz);
+        }
+        return null;
+    }
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/application/annotation/DelegatedResourceScanner.java b/jsf-ri/src/main/java/com/sun/faces/application/annotation/DelegatedResourceScanner.java
new file mode 100644
index 0000000..10ab5be
--- /dev/null
+++ b/jsf-ri/src/main/java/com/sun/faces/application/annotation/DelegatedResourceScanner.java
@@ -0,0 +1,89 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.application.annotation;
+
+import java.lang.annotation.Annotation;
+
+/**
+ * <code>Scanner</code> implementation responsible for link Resource
+ * annotations.
+ *
+ * <p> Note this will delegate down to the ResourceScanner so we can fail
+ * gracefully when JavaEE is not available. </p>
+ */
+public class DelegatedResourceScanner implements Scanner {
+
+    private Scanner delegate;
+
+    public DelegatedResourceScanner() {
+        try {
+            delegate = new ResourceScanner();
+        } catch (Throwable throwable) {
+            throwable.printStackTrace(System.err);
+        }
+    }
+
+    /**
+     * Delegate to the actual Resource scanner.
+     *
+     * @return the annotation.
+     */
+    @Override
+    public Class<? extends Annotation> getAnnotation() {
+        if (delegate != null) {
+            return delegate.getAnnotation();
+        }
+        return null;
+    }
+
+    /**
+     * Delegate to the actual EBJ scanner.
+     *
+     * @param clazz the class.
+     * @return the runtime annotation handler.
+     */
+    @Override
+    public RuntimeAnnotationHandler scan(Class<?> clazz) {
+        if (delegate != null) {
+            return delegate.scan(clazz);
+        }
+        return null;
+    }
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/application/annotation/DelegatedWebServiceRefScanner.java b/jsf-ri/src/main/java/com/sun/faces/application/annotation/DelegatedWebServiceRefScanner.java
new file mode 100644
index 0000000..9a8fcf0
--- /dev/null
+++ b/jsf-ri/src/main/java/com/sun/faces/application/annotation/DelegatedWebServiceRefScanner.java
@@ -0,0 +1,89 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.application.annotation;
+
+import java.lang.annotation.Annotation;
+
+/**
+ * <code>Scanner</code> implementation responsible for {@link WebServiceRef}
+ * annotations.
+ *
+ * <p> Note this will delegate down to the WebServiceRefScanner so we can fail
+ * gracefully when JavaEE is not available. </p>
+ */
+class DelegatedWebServiceRefScanner implements Scanner {
+
+    private Scanner delegate;
+
+    public DelegatedWebServiceRefScanner() {
+        try {
+            delegate = new WebServiceRefScanner();
+        } catch (Throwable throwable) {
+            throwable.printStackTrace(System.err);
+        }
+    }
+
+    /**
+     * Delegate to the actual WebServiceRef scanner.
+     *
+     * @return the annotation.
+     */
+    @Override
+    public Class<? extends Annotation> getAnnotation() {
+        if (delegate != null) {
+            return delegate.getAnnotation();
+        }
+        return null;
+    }
+
+    /**
+     * Delegate to the actual EBJ scanner.
+     *
+     * @param clazz the class.
+     * @return the runtime annotation handler.
+     */
+    @Override
+    public RuntimeAnnotationHandler scan(Class<?> clazz) {
+        if (delegate != null) {
+            return delegate.scan(clazz);
+        }
+        return null;
+    }
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/application/annotation/EJBHandler.java b/jsf-ri/src/main/java/com/sun/faces/application/annotation/EJBHandler.java
new file mode 100644
index 0000000..cbcdebd
--- /dev/null
+++ b/jsf-ri/src/main/java/com/sun/faces/application/annotation/EJBHandler.java
@@ -0,0 +1,103 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.application.annotation;
+
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+import javax.faces.context.FacesContext;
+import javax.ejb.EJB;
+
+/**
+ * {@link RuntimeAnnotationHandler} responsible for processing EJB annotations.
+ */
+class EJBHandler extends JndiHandler implements RuntimeAnnotationHandler {
+
+    private static final String JAVA_MODULE = "java:module/";
+    private Field[] fields;
+    private EJB[] fieldAnnotations;
+    private Method[] methods;
+    private EJB[] methodAnnotations;
+
+    public EJBHandler(
+            Field[] fields, EJB[] fieldAnnotations,
+            Method[] methods, EJB[] methodAnnotations) {
+        this.fields = fields;
+        this.fieldAnnotations = fieldAnnotations;
+        this.methods = methods;
+        this.methodAnnotations = methodAnnotations;
+    }
+
+    @SuppressWarnings({"UnusedDeclaration"})
+    @Override
+    public void apply(FacesContext ctx, Object... params) {
+        Object object = params[0];
+        for (int i = 0; i < fields.length; i++) {
+            applyToField(ctx, fields[0], fieldAnnotations[0], object);
+        }
+
+        for (int i = 0; i < methods.length; i++) {
+            applyToMethod(ctx, methods[i], methodAnnotations[i], object);
+        }
+    }
+
+    private void applyToField(FacesContext facesContext, Field field, EJB ejb, Object instance) {
+        Object value;
+        if (ejb.lookup() != null && !"".equals(ejb.lookup().trim())) {
+            value = lookup(facesContext, ejb.lookup());
+        } else if (ejb.name() != null && !"".equals(ejb.name().trim())) {
+            value = lookup(facesContext, JAVA_COMP_ENV + ejb.name());
+        } else {
+            value = lookup(facesContext, JAVA_MODULE + field.getType().getSimpleName());
+        }
+        setField(facesContext, field, instance, value);
+    }
+
+    private void applyToMethod(FacesContext facesContext, Method method, EJB ejb, Object instance) {
+        if (method.getName().startsWith("set")) {
+            Object value = null;
+            if (ejb.lookup() != null && !"".equals(ejb.lookup().trim())) {
+                value = lookup(facesContext, ejb.lookup());
+            } else if (ejb.name() != null && !"".equals(ejb.name().trim())) {
+                value = lookup(facesContext, JAVA_COMP_ENV + ejb.name());
+            }
+            invokeMethod(facesContext, method, instance, value);
+        }
+    }
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/application/annotation/EJBScanner.java b/jsf-ri/src/main/java/com/sun/faces/application/annotation/EJBScanner.java
new file mode 100644
index 0000000..d1f43c4
--- /dev/null
+++ b/jsf-ri/src/main/java/com/sun/faces/application/annotation/EJBScanner.java
@@ -0,0 +1,104 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.application.annotation;
+
+import com.sun.faces.util.Util;
+import java.lang.annotation.Annotation;
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+import java.util.ArrayList;
+import javax.ejb.EJB;
+
+/**
+ * <code>Scanner</code> implementation responsible for EJB annotations.
+ */
+class EJBScanner implements Scanner {
+
+    /**
+     * Get the annotation we handle.
+     *
+     * @return the annotation we handle.
+     */
+    @Override
+    public Class<? extends Annotation> getAnnotation() {
+        return EJB.class;
+    }
+
+    /**
+     * Scan the specified class for the given annotation.
+     *
+     * @param clazz the class.
+     * @return the runtime annotation handler.
+     * @todo Make sure we get all the fields, handle method and class based injection, handle EJBs.
+     */
+    @Override
+    public RuntimeAnnotationHandler scan(Class<?> clazz) {
+        Util.notNull("clazz", clazz);
+        EJBHandler handler = null;
+
+        ArrayList<EJB> fieldAnnotations = new ArrayList<EJB>();
+        ArrayList<Field> fields = new ArrayList<Field>();
+
+        for (Field field : clazz.getDeclaredFields()) {
+            EJB fieldAnnotation = field.getAnnotation(EJB.class);
+            if (fieldAnnotation != null) {
+                fieldAnnotations.add(fieldAnnotation);
+                fields.add(field);
+            }
+        }
+        
+        ArrayList<EJB> methodAnnotations = new ArrayList<EJB>();
+        ArrayList<Method> methods = new ArrayList<Method>();
+
+        for (Method method : clazz.getDeclaredMethods()) {
+            EJB methodAnnotation = method.getAnnotation(EJB.class);
+            if (methodAnnotation != null) {
+                methodAnnotations.add(methodAnnotation);
+                methods.add(method);
+            }
+        }
+        if (!fieldAnnotations.isEmpty() || !methodAnnotations.isEmpty()) {
+            handler = new EJBHandler(
+                    fields.toArray(new Field[0]), (EJB[]) fieldAnnotations.toArray(new EJB[0]),
+                    methods.toArray(new Method[0]), (EJB[]) methodAnnotations.toArray(new EJB[0]));
+        }
+        return handler;
+    }
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/application/annotation/FacesComponentUsage.java b/jsf-ri/src/main/java/com/sun/faces/application/annotation/FacesComponentUsage.java
new file mode 100644
index 0000000..a6ec139
--- /dev/null
+++ b/jsf-ri/src/main/java/com/sun/faces/application/annotation/FacesComponentUsage.java
@@ -0,0 +1,65 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.application.annotation;
+
+import javax.faces.component.FacesComponent;
+
+public class FacesComponentUsage {
+    private Class<?> target;
+    private FacesComponent annotation;
+    
+    public FacesComponentUsage(Class<?> target, FacesComponent annotation) {
+        this.target = target;
+        this.annotation = annotation;
+    }
+
+    public FacesComponent getAnnotation() {
+        return annotation;
+    }
+
+    public Class<?> getTarget() {
+        return target;
+    }
+    
+    
+}
+
+    
diff --git a/jsf-ri/src/main/java/com/sun/faces/application/annotation/JndiHandler.java b/jsf-ri/src/main/java/com/sun/faces/application/annotation/JndiHandler.java
new file mode 100644
index 0000000..84e2489
--- /dev/null
+++ b/jsf-ri/src/main/java/com/sun/faces/application/annotation/JndiHandler.java
@@ -0,0 +1,167 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.application.annotation;
+
+import java.lang.reflect.Field;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.faces.application.FacesMessage;
+import javax.faces.application.ProjectStage;
+import javax.faces.context.FacesContext;
+import javax.naming.InitialContext;
+import javax.naming.NamingException;
+
+/**
+ * An abstract RuntimeAnnotationHandler that is capable of dealing with JNDI.
+ */
+public abstract class JndiHandler implements RuntimeAnnotationHandler {
+
+    /**
+     * Stores the logger.
+     */
+    private static final Logger LOGGER = Logger.getLogger(JndiHandler.class.getName());
+    /**
+     * Stores the java:comp/env/ prefix
+     */
+    protected static final String JAVA_COMP_ENV = "java:comp/env/";
+
+    /**
+     * Look up the given object using its JNDI name.
+     *
+     * @param facesContext the Faces context.
+     * @param name the JNDI name.
+     * @return the object, or null if an error occurs.
+     */
+    public Object lookup(FacesContext facesContext, String name) {
+        Object object = null;
+        try {
+            InitialContext context = new InitialContext();
+            object = context.lookup(name);
+        } catch (NamingException ne) {
+            if (LOGGER.isLoggable(Level.WARNING)) {
+                LOGGER.log(Level.WARNING, "Unable to lookup: " + name, ne);
+            }
+            if (facesContext.isProjectStage(ProjectStage.Development)) {
+                facesContext.addMessage(null, new FacesMessage("Unable to lookup: " + name, "Unable to lookup: " + name));
+            }
+        }
+        return object;
+    }
+
+    /**
+     * Set the field.
+     *
+     * @param facesContext the Faces context.
+     * @param field the field.
+     * @param instance the instance.
+     * @param value the value.
+     */
+    public void setField(FacesContext facesContext, Field field, Object instance, Object value) {
+        synchronized (instance) {
+            try {
+                boolean fieldAccessible = true;
+                if (!field.isAccessible()) {
+                    field.setAccessible(true);
+                    fieldAccessible = false;
+                }
+                field.set(instance, value);
+                if (!fieldAccessible) {
+                    field.setAccessible(false);
+                }
+            } catch (IllegalArgumentException iae) {
+                if (LOGGER.isLoggable(Level.WARNING)) {
+                    LOGGER.log(Level.WARNING, "Unable to set field: " + field.getName(), iae);
+                }
+                if (facesContext.isProjectStage(ProjectStage.Development)) {
+                    facesContext.addMessage(null, new FacesMessage("Unable to set field: " + field.getName(), "Unable to set field: " + field.getName()));
+                }
+            } catch (IllegalAccessException iae) {
+                if (LOGGER.isLoggable(Level.WARNING)) {
+                    LOGGER.log(Level.WARNING, "Unable to set field: " + field.getName(), iae);
+                }
+                if (facesContext.isProjectStage(ProjectStage.Development)) {
+                    facesContext.addMessage(null, new FacesMessage("Unable to set field: " + field.getName(), "Unable to set field: " + field.getName()));
+                }
+            }
+        }
+    }
+
+    /**
+     * Invoke the method.
+     * 
+     * @param facesContext the Faces context.
+     * @param method the method.
+     * @param instance the instance.
+     * @param value the value.
+     */
+    protected void invokeMethod(FacesContext facesContext, Method method, Object instance, Object value) {
+        synchronized (instance) {
+            try {
+                boolean accessible = method.isAccessible();
+                method.setAccessible(false);
+                method.invoke(instance, value);
+                method.setAccessible(accessible);
+            } catch (InvocationTargetException ite) {
+                if (LOGGER.isLoggable(Level.WARNING)) {
+                    LOGGER.log(Level.WARNING, "Unable to call method: " + method.getName(), ite);
+                }
+                if (facesContext.isProjectStage(ProjectStage.Development)) {
+                    facesContext.addMessage(null, new FacesMessage("Unable to call method: " + method.getName(), "Unable to call method: " + method.getName()));
+                }
+            } catch (IllegalArgumentException iae) {
+                if (LOGGER.isLoggable(Level.WARNING)) {
+                    LOGGER.log(Level.WARNING, "Unable to call method: " + method.getName(), iae);
+                }
+                if (facesContext.isProjectStage(ProjectStage.Development)) {
+                    facesContext.addMessage(null, new FacesMessage("Unable to call method: " + method.getName(), "Unable to call method: " + method.getName()));
+                }
+            } catch (IllegalAccessException iae) {
+                if (LOGGER.isLoggable(Level.WARNING)) {
+                    LOGGER.log(Level.WARNING, "Unable to call method: " + method.getName(), iae);
+                }
+                if (facesContext.isProjectStage(ProjectStage.Development)) {
+                    facesContext.addMessage(null, new FacesMessage("Unable to call method: " + method.getName(), "Unable to call method: " + method.getName()));
+                }
+            }
+        }
+    }
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/application/annotation/ListenerForHandler.java b/jsf-ri/src/main/java/com/sun/faces/application/annotation/ListenerForHandler.java
index 8c64af7..0890674 100644
--- a/jsf-ri/src/main/java/com/sun/faces/application/annotation/ListenerForHandler.java
+++ b/jsf-ri/src/main/java/com/sun/faces/application/annotation/ListenerForHandler.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/application/annotation/ListenerForScanner.java b/jsf-ri/src/main/java/com/sun/faces/application/annotation/ListenerForScanner.java
index c406105..1426e4c 100644
--- a/jsf-ri/src/main/java/com/sun/faces/application/annotation/ListenerForScanner.java
+++ b/jsf-ri/src/main/java/com/sun/faces/application/annotation/ListenerForScanner.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/application/annotation/ManagedBeanConfigHandler.java b/jsf-ri/src/main/java/com/sun/faces/application/annotation/ManagedBeanConfigHandler.java
index 6bb5e20..cf68d43 100644
--- a/jsf-ri/src/main/java/com/sun/faces/application/annotation/ManagedBeanConfigHandler.java
+++ b/jsf-ri/src/main/java/com/sun/faces/application/annotation/ManagedBeanConfigHandler.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -38,7 +42,6 @@ package com.sun.faces.application.annotation;
 
 import java.lang.annotation.Annotation;
 import java.lang.reflect.Field;
-import java.lang.reflect.Method;
 import java.util.Collection;
 import java.util.ArrayList;
 import java.util.Collections;
@@ -46,11 +49,8 @@ import java.util.Map;
 import java.util.HashMap;
 import java.util.List;
 import java.util.LinkedHashMap;
-import java.util.Set;
-
 import javax.faces.bean.*;
 import javax.faces.context.FacesContext;
-
 import com.sun.faces.application.ApplicationAssociate;
 import com.sun.faces.mgbean.BeanManager;
 import com.sun.faces.mgbean.ManagedBeanInfo;
@@ -205,36 +205,36 @@ public class ManagedBeanConfigHandler implements ConfigAnnotationHandler {
     }
 
 
-    private void collectAnnotatedMethods(Class<?> baseClass,
-                                         Map<String,Method> annotatedMethods,
-                                         Set<String> annotatedFields) {
-
-        Method[] methods = baseClass.getDeclaredMethods();
-        for (Method method : methods) {
-            ManagedProperty property = method.getAnnotation(ManagedProperty.class);
-            if (property != null) {
-
-                if (!method.getName().startsWith("set")
-                    || method.getParameterTypes().length != 1) {
-                    continue;
-                }
-                StringBuilder sb =
-                      new StringBuilder(method.getName().substring(3));
-                char c = sb.charAt(0);
-                sb.deleteCharAt(0);
-                sb.insert(0, Character.toLowerCase(c));
-                String propName = sb.toString();
-
-                if (!annotatedFields.contains(propName) && !annotatedMethods.containsKey(propName)) {
-                    annotatedMethods.put(propName, method);
-                }
-            }
-        }
-        Class<?> superClass = baseClass.getSuperclass();
-        if (!Object.class.equals(superClass)) {
-            collectAnnotatedMethods(superClass, annotatedMethods, annotatedFields);
-        }
-    }
+//    private void collectAnnotatedMethods(Class<?> baseClass,
+//                                         Map<String,Method> annotatedMethods,
+//                                         Set<String> annotatedFields) {
+//
+//        Method[] methods = baseClass.getDeclaredMethods();
+//        for (Method method : methods) {
+//            ManagedProperty property = method.getAnnotation(ManagedProperty.class);
+//            if (property != null) {
+//
+//                if (!method.getName().startsWith("set")
+//                    || method.getParameterTypes().length != 1) {
+//                    continue;
+//                }
+//                StringBuilder sb =
+//                      new StringBuilder(method.getName().substring(3));
+//                char c = sb.charAt(0);
+//                sb.deleteCharAt(0);
+//                sb.insert(0, Character.toLowerCase(c));
+//                String propName = sb.toString();
+//
+//                if (!annotatedFields.contains(propName) && !annotatedMethods.containsKey(propName)) {
+//                    annotatedMethods.put(propName, method);
+//                }
+//            }
+//        }
+//        Class<?> superClass = baseClass.getSuperclass();
+//        if (!Object.class.equals(superClass)) {
+//            collectAnnotatedMethods(superClass, annotatedMethods, annotatedFields);
+//        }
+//    }
 
 
     private void collectAnnotatedFields(Class<?> baseClass, Map<String,Field> annotatedFields) {
diff --git a/jsf-ri/src/main/java/com/sun/faces/application/annotation/NamedEventConfigHandler.java b/jsf-ri/src/main/java/com/sun/faces/application/annotation/NamedEventConfigHandler.java
index daff571..800ae4c 100644
--- a/jsf-ri/src/main/java/com/sun/faces/application/annotation/NamedEventConfigHandler.java
+++ b/jsf-ri/src/main/java/com/sun/faces/application/annotation/NamedEventConfigHandler.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -122,4 +126,4 @@ public class NamedEventConfigHandler implements ConfigAnnotationHandler {
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/application/annotation/PersistenceContextHandler.java b/jsf-ri/src/main/java/com/sun/faces/application/annotation/PersistenceContextHandler.java
new file mode 100644
index 0000000..bd02056
--- /dev/null
+++ b/jsf-ri/src/main/java/com/sun/faces/application/annotation/PersistenceContextHandler.java
@@ -0,0 +1,98 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.application.annotation;
+
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+import javax.faces.context.FacesContext;
+import javax.persistence.PersistenceContext;
+
+/**
+ * {@link RuntimeAnnotationHandler} responsible for processing annotations.
+ */
+class PersistenceContextHandler extends JndiHandler implements RuntimeAnnotationHandler {
+
+    private Method[] methods;
+    private PersistenceContext[] methodAnnotations;
+    private Field[] fields;
+    private PersistenceContext[] fieldAnnotations;
+
+    public PersistenceContextHandler(
+            Method[] methods, PersistenceContext[] methodAnnotations,
+            Field[] fields, PersistenceContext[] fieldAnnotations) {
+        this.methods = methods;
+        this.methodAnnotations = methodAnnotations;
+        this.fields = fields;
+        this.fieldAnnotations = fieldAnnotations;
+    }
+
+    @SuppressWarnings({"UnusedDeclaration"})
+    @Override
+    public void apply(FacesContext ctx, Object... params) {
+        Object object = params[0];
+        for (int i = 0; i < fields.length; i++) {
+            applyToField(ctx, fields[i], fieldAnnotations[i], object);
+        }
+
+        for (int i = 0; i < methods.length; i++) {
+            applyToMethod(ctx, methods[i], methodAnnotations[i], object);
+        }
+    }
+
+    private void applyToMethod(FacesContext facesContext, Method method, PersistenceContext unit, Object instance) {
+        if (method.getName().startsWith("set")) {
+            Object value = null;
+            if (unit.name() != null && !"".equals(unit.name().trim())) {
+                value = lookup(facesContext, JAVA_COMP_ENV + unit.name());
+            }
+            invokeMethod(facesContext, method, instance, value);
+        }
+    }
+
+    private void applyToField(FacesContext facesContext, Field field, PersistenceContext unit, Object instance) {
+        Object value;
+        if (unit.name() != null && !"".equals(unit.name().trim())) {
+            value = lookup(facesContext, JAVA_COMP_ENV + unit.name());
+        } else {
+            value = lookup(facesContext, field.getType().getSimpleName());
+        }
+        setField(facesContext, field, instance, value);
+    }
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/application/annotation/PersistenceContextScanner.java b/jsf-ri/src/main/java/com/sun/faces/application/annotation/PersistenceContextScanner.java
new file mode 100644
index 0000000..6eaf36a
--- /dev/null
+++ b/jsf-ri/src/main/java/com/sun/faces/application/annotation/PersistenceContextScanner.java
@@ -0,0 +1,104 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.application.annotation;
+
+import com.sun.faces.util.Util;
+import java.lang.annotation.Annotation;
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+import java.util.ArrayList;
+import javax.persistence.PersistenceContext;
+
+/**
+ * <code>Scanner</code> implementation responsible for {@link PersistenceContext} annotations.
+ */
+class PersistenceContextScanner implements Scanner {
+
+    /**
+     * Get the annotation we handle.
+     *
+     * @return the annotation we handle.
+     */
+    @Override
+    public Class<? extends Annotation> getAnnotation() {
+        return PersistenceContext.class;
+    }
+
+    /**
+     * Scan the specified class for the given annotation.
+     *
+     * @param clazz the class.
+     * @return the runtime annotation handler.
+     * @todo Make sure we get all the fields, handle method and class based injection, handle PersistenceContexts.
+     */
+    @Override
+    public RuntimeAnnotationHandler scan(Class<?> clazz) {
+        Util.notNull("clazz", clazz);
+        PersistenceContextHandler handler = null;
+
+        ArrayList<PersistenceContext> fieldAnnotations = new ArrayList<PersistenceContext>();
+        ArrayList<Field> fields = new ArrayList<Field>();
+
+        for (Field field : clazz.getDeclaredFields()) {
+            PersistenceContext fieldAnnotation = field.getAnnotation(PersistenceContext.class);
+            if (fieldAnnotation != null) {
+                fieldAnnotations.add(fieldAnnotation);
+                fields.add(field);
+            }
+        }
+        
+        ArrayList<PersistenceContext> methodAnnotations = new ArrayList<PersistenceContext>();
+        ArrayList<Method> methods = new ArrayList<Method>();
+        for (Method method : clazz.getDeclaredMethods()) {
+            PersistenceContext methodAnnotation = method.getAnnotation(PersistenceContext.class);
+            if (methodAnnotation != null) {
+                methodAnnotations.add(methodAnnotation);
+                methods.add(method);
+            }
+        }
+        
+        if (!fieldAnnotations.isEmpty() || !methodAnnotations.isEmpty()) {
+            handler = new PersistenceContextHandler(
+                    methods.toArray(new Method[0]), methodAnnotations.toArray(new PersistenceContext[0]),
+                    fields.toArray(new Field[0]), fieldAnnotations.toArray(new PersistenceContext[0]));
+        }
+        return handler;
+    }
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/application/annotation/PersistenceUnitHandler.java b/jsf-ri/src/main/java/com/sun/faces/application/annotation/PersistenceUnitHandler.java
new file mode 100644
index 0000000..885cecc
--- /dev/null
+++ b/jsf-ri/src/main/java/com/sun/faces/application/annotation/PersistenceUnitHandler.java
@@ -0,0 +1,99 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.application.annotation;
+
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+import javax.faces.context.FacesContext;
+import javax.persistence.PersistenceUnit;
+
+/**
+ * {@link RuntimeAnnotationHandler} responsible for processing
+ * {@link PersistenceUnit} annotations.
+ */
+class PersistenceUnitHandler extends JndiHandler implements RuntimeAnnotationHandler {
+
+    private Method[] methods;
+    private PersistenceUnit[] methodAnnotations;
+    private Field[] fields;
+    private PersistenceUnit[] fieldAnnotations;
+
+    public PersistenceUnitHandler(
+            Method[] methods, PersistenceUnit[] methodAnnotations,
+            Field[] fields, PersistenceUnit[] fieldAnnotations) {
+        this.methods = methods;
+        this.methodAnnotations = methodAnnotations;
+        this.fields = fields;
+        this.fieldAnnotations = fieldAnnotations;
+    }
+
+    @SuppressWarnings({"UnusedDeclaration"})
+    @Override
+    public void apply(FacesContext ctx, Object... params) {
+        Object object = params[0];
+        for (int i = 0; i < fields.length; i++) {
+            applyToField(ctx, fields[i], fieldAnnotations[i], object);
+        }
+        
+        for (int i=0; i<methods.length; i++) {
+            applyToMethod(ctx, methods[i], methodAnnotations[i], object);
+        }
+    }
+
+    private void applyToMethod(FacesContext facesContext, Method method, PersistenceUnit unit, Object instance) {
+        if (method.getName().startsWith("set")) {
+            Object value = null;
+            if (unit.name() != null && !"".equals(unit.name().trim())) {
+                value = lookup(facesContext, JAVA_COMP_ENV + unit.name());
+            }
+            invokeMethod(facesContext, method, instance, value);
+        }
+    }
+
+    private void applyToField(FacesContext facesContext, Field field, PersistenceUnit unit, Object instance) {
+        Object value;
+        if (unit.name() != null && !"".equals(unit.name().trim())) {
+            value = lookup(facesContext, JAVA_COMP_ENV + unit.name());
+        } else {
+            value = lookup(facesContext, field.getType().getSimpleName());
+        }
+        setField(facesContext, field, instance, value);
+    }
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/application/annotation/PersistenceUnitScanner.java b/jsf-ri/src/main/java/com/sun/faces/application/annotation/PersistenceUnitScanner.java
new file mode 100644
index 0000000..8f55740
--- /dev/null
+++ b/jsf-ri/src/main/java/com/sun/faces/application/annotation/PersistenceUnitScanner.java
@@ -0,0 +1,104 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.application.annotation;
+
+import com.sun.faces.util.Util;
+import java.lang.annotation.Annotation;
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+import java.util.ArrayList;
+import javax.persistence.PersistenceUnit;
+
+/**
+ * <code>Scanner</code> implementation responsible for {@link PersistenceUnit} annotations.
+ */
+class PersistenceUnitScanner implements Scanner {
+
+    /**
+     * Get the annotation we handle.
+     *
+     * @return the annotation we handle.
+     */
+    @Override
+    public Class<? extends Annotation> getAnnotation() {
+        return PersistenceUnit.class;
+    }
+
+    /**
+     * Scan the specified class for the given annotation.
+     *
+     * @param clazz the class.
+     * @return the runtime annotation handler.
+     * @todo Make sure we get all the fields, handle method and class based injection, handle PersistenceUnits.
+     */
+    @Override
+    public RuntimeAnnotationHandler scan(Class<?> clazz) {
+        Util.notNull("clazz", clazz);
+        PersistenceUnitHandler handler = null;
+
+        ArrayList<PersistenceUnit> fieldAnnotations = new ArrayList<PersistenceUnit>();
+        ArrayList<Field> fields = new ArrayList<Field>();
+
+        for (Field field : clazz.getDeclaredFields()) {
+            PersistenceUnit fieldAnnotation = field.getAnnotation(PersistenceUnit.class);
+            if (fieldAnnotation != null) {
+                fieldAnnotations.add(fieldAnnotation);
+                fields.add(field);
+            }
+        }
+        
+        ArrayList<PersistenceUnit> methodAnnotations = new ArrayList<PersistenceUnit>();
+        ArrayList<Method> methods = new ArrayList<Method>();
+        for (Method method : clazz.getDeclaredMethods()) {
+            PersistenceUnit methodAnnotation = method.getAnnotation(PersistenceUnit.class);
+            if (methodAnnotation != null) {
+                methodAnnotations.add(methodAnnotation);
+                methods.add(method);
+            }
+        }
+        
+        if (!fieldAnnotations.isEmpty() || !methodAnnotations.isEmpty()) {
+            handler = new PersistenceUnitHandler(
+                    methods.toArray(new Method[0]), methodAnnotations.toArray(new PersistenceUnit[0]),
+                    fields.toArray(new Field[0]), fieldAnnotations.toArray(new PersistenceUnit[0]));
+        }
+        return handler;
+    }
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/application/annotation/RenderKitConfigHandler.java b/jsf-ri/src/main/java/com/sun/faces/application/annotation/RenderKitConfigHandler.java
index 8dc5677..d02436c 100644
--- a/jsf-ri/src/main/java/com/sun/faces/application/annotation/RenderKitConfigHandler.java
+++ b/jsf-ri/src/main/java/com/sun/faces/application/annotation/RenderKitConfigHandler.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/application/annotation/ResourceDependencyHandler.java b/jsf-ri/src/main/java/com/sun/faces/application/annotation/ResourceDependencyHandler.java
index b780634..2d9ac58 100644
--- a/jsf-ri/src/main/java/com/sun/faces/application/annotation/ResourceDependencyHandler.java
+++ b/jsf-ri/src/main/java/com/sun/faces/application/annotation/ResourceDependencyHandler.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/application/annotation/ResourceDependencyScanner.java b/jsf-ri/src/main/java/com/sun/faces/application/annotation/ResourceDependencyScanner.java
index b69e16c..007c926 100644
--- a/jsf-ri/src/main/java/com/sun/faces/application/annotation/ResourceDependencyScanner.java
+++ b/jsf-ri/src/main/java/com/sun/faces/application/annotation/ResourceDependencyScanner.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/application/annotation/ResourceHandler.java b/jsf-ri/src/main/java/com/sun/faces/application/annotation/ResourceHandler.java
new file mode 100644
index 0000000..9e8ce95
--- /dev/null
+++ b/jsf-ri/src/main/java/com/sun/faces/application/annotation/ResourceHandler.java
@@ -0,0 +1,109 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.application.annotation;
+
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+import javax.annotation.Resource;
+import javax.faces.context.FacesContext;
+
+/**
+ * {@link RuntimeAnnotationHandler} responsible for processing Resource
+ * annotations.
+ */
+class ResourceHandler extends JndiHandler {
+
+    private Field[] fields;
+    private Resource[] fieldAnnotations;
+    private Method[] methods;
+    private Resource[] methodAnnotations;
+
+    public ResourceHandler(
+            Field[] fields, Resource[] fieldAnnotations,
+            Method[] methods, Resource[] methodAnnotations) {
+        this.fields = fields;
+        this.fieldAnnotations = fieldAnnotations;
+        this.methods = methods;
+        this.methodAnnotations = methodAnnotations;
+    }
+
+    @SuppressWarnings({"UnusedDeclaration"})
+    @Override
+    public void apply(FacesContext ctx, Object... params) {
+        Object object = params[0];
+        for (int i = 0; i < fields.length; i++) {
+            applyToField(ctx, fields[0], fieldAnnotations[0], object);
+        }
+
+        for (int i = 0; i < methods.length; i++) {
+            applyToMethod(ctx, methods[i], methodAnnotations[i], object);
+        }
+    }
+
+    private void applyToField(FacesContext facesContext, Field field, Resource resource, Object instance) {
+        Object value;
+        /*
+         if (resource.lookup() != null && !"".equals(resource.lookup().trim())) {
+         value = lookup(facesContext, resource.lookup());
+         } else
+         */
+        if (resource.name() != null && !"".equals(resource.name().trim())) {
+            value = lookup(facesContext, JAVA_COMP_ENV + resource.name());
+        } else {
+            value = lookup(facesContext, field.getName());
+        }
+        setField(facesContext, field, instance, value);
+    }
+
+    private void applyToMethod(FacesContext facesContext, Method method, Resource resource, Object instance) {
+        if (method.getName().startsWith("set")) {
+            Object value = null;
+            /*
+             if (resource.lookup() != null && !"".equals(resource.lookup().trim())) {
+             value = lookup(facesContext, resource.lookup());
+             } else
+             */
+            if (resource.name() != null && !"".equals(resource.name().trim())) {
+                value = lookup(facesContext, JAVA_COMP_ENV + resource.name());
+            }
+            invokeMethod(facesContext, method, instance, value);
+        }
+    }
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/application/annotation/ResourceScanner.java b/jsf-ri/src/main/java/com/sun/faces/application/annotation/ResourceScanner.java
new file mode 100644
index 0000000..96dcaea
--- /dev/null
+++ b/jsf-ri/src/main/java/com/sun/faces/application/annotation/ResourceScanner.java
@@ -0,0 +1,106 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.application.annotation;
+
+import com.sun.faces.util.Util;
+import java.lang.annotation.Annotation;
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+import java.util.ArrayList;
+import javax.annotation.Resource;
+
+/**
+ * <code>Scanner</code> implementation responsible for Resource annotations.
+ */
+class ResourceScanner implements Scanner {
+
+    /**
+     * Get the annotation we handle.
+     *
+     * @return the annotation we handle.
+     */
+    @Override
+    public Class<? extends Annotation> getAnnotation() {
+        return Resource.class;
+    }
+
+    /**
+     * Scan the specified class for the given annotation.
+     *
+     * @param clazz the class.
+     * @return the runtime annotation handler.
+     * @todo Make sure we get all the fields, handle method and class based
+     * injection.
+     */
+    @Override
+    public RuntimeAnnotationHandler scan(Class<?> clazz) {
+        Util.notNull("clazz", clazz);
+        ResourceHandler handler = null;
+
+        ArrayList<Resource> fieldAnnotations = new ArrayList<Resource>();
+        ArrayList<Field> fields = new ArrayList<Field>();
+
+        for (Field field : clazz.getDeclaredFields()) {
+            Resource fieldAnnotation = field.getAnnotation(Resource.class);
+            if (fieldAnnotation != null) {
+                fieldAnnotations.add(fieldAnnotation);
+                fields.add(field);
+            }
+        }
+
+        ArrayList<Resource> methodAnnotations = new ArrayList<Resource>();
+        ArrayList<Method> methods = new ArrayList<Method>();
+
+        for (Method method : clazz.getDeclaredMethods()) {
+            Resource methodAnnotation = method.getAnnotation(Resource.class);
+            if (methodAnnotation != null) {
+                methodAnnotations.add(methodAnnotation);
+                methods.add(method);
+            }
+        }
+
+        if (!fieldAnnotations.isEmpty() || !methodAnnotations.isEmpty()) {
+            handler = new ResourceHandler(
+                    fields.toArray(new Field[0]), (Resource[]) fieldAnnotations.toArray(new Resource[0]),
+                    methods.toArray(new Method[0]), (Resource[]) methodAnnotations.toArray(new Resource[0]));
+        }
+        return handler;
+    }
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/application/annotation/RuntimeAnnotationHandler.java b/jsf-ri/src/main/java/com/sun/faces/application/annotation/RuntimeAnnotationHandler.java
index 0ba946b..af93051 100644
--- a/jsf-ri/src/main/java/com/sun/faces/application/annotation/RuntimeAnnotationHandler.java
+++ b/jsf-ri/src/main/java/com/sun/faces/application/annotation/RuntimeAnnotationHandler.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -37,7 +41,6 @@
 package com.sun.faces.application.annotation;
 
 import javax.faces.context.FacesContext;
-import javax.faces.component.UIComponent;
 
 /**
  * Implementations of this class provide basic caching and processing of
diff --git a/jsf-ri/src/main/java/com/sun/faces/application/annotation/Scanner.java b/jsf-ri/src/main/java/com/sun/faces/application/annotation/Scanner.java
index 05f1bf1..6908667 100644
--- a/jsf-ri/src/main/java/com/sun/faces/application/annotation/Scanner.java
+++ b/jsf-ri/src/main/java/com/sun/faces/application/annotation/Scanner.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/application/annotation/ValidatorConfigHandler.java b/jsf-ri/src/main/java/com/sun/faces/application/annotation/ValidatorConfigHandler.java
index a94fa75..98a8ef1 100644
--- a/jsf-ri/src/main/java/com/sun/faces/application/annotation/ValidatorConfigHandler.java
+++ b/jsf-ri/src/main/java/com/sun/faces/application/annotation/ValidatorConfigHandler.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -88,7 +92,12 @@ public class ValidatorConfigHandler implements ConfigAnnotationHandler {
             validators = new HashMap<ValidatorInfo,String>();
         }
         FacesValidator validatorAnnotation = (FacesValidator) annotation;
-        ValidatorInfo info = new ValidatorInfo(validatorAnnotation.value(), validatorAnnotation.isDefault());
+        String value = ((FacesValidator) annotation).value();
+        if (null == value || 0 == value.length()) {
+            value = target.getSimpleName();
+            value = Character.toLowerCase(value.charAt(0)) + value.substring(1);
+        }
+        ValidatorInfo info = new ValidatorInfo(value, validatorAnnotation.isDefault());
         validators.put(info, target.getName());
 
     }
@@ -127,4 +136,4 @@ public class ValidatorConfigHandler implements ConfigAnnotationHandler {
 
     }
 
-}
\ No newline at end of file
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/application/annotation/WebServiceRefHandler.java b/jsf-ri/src/main/java/com/sun/faces/application/annotation/WebServiceRefHandler.java
new file mode 100644
index 0000000..da43e4f
--- /dev/null
+++ b/jsf-ri/src/main/java/com/sun/faces/application/annotation/WebServiceRefHandler.java
@@ -0,0 +1,109 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.application.annotation;
+
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+import javax.faces.context.FacesContext;
+import javax.xml.ws.WebServiceRef;
+
+/**
+ * {@link RuntimeAnnotationHandler} responsible for processing {@link WebServiceRef}
+ * annotations.
+ */
+class WebServiceRefHandler extends JndiHandler implements RuntimeAnnotationHandler {
+
+    private Field[] fields;
+    private WebServiceRef[] fieldAnnotations;
+    private Method[] methods;
+    private WebServiceRef[] methodAnnotations;
+
+    public WebServiceRefHandler(
+            Field[] fields, WebServiceRef[] fieldAnnotations,
+            Method[] methods, WebServiceRef[] methodAnnotations) {
+        this.fields = fields;
+        this.fieldAnnotations = fieldAnnotations;
+        this.methods = methods;
+        this.methodAnnotations = methodAnnotations;
+    }
+
+    @SuppressWarnings({"UnusedDeclaration"})
+    @Override
+    public void apply(FacesContext ctx, Object... params) {
+        Object object = params[0];
+        for (int i = 0; i < fields.length; i++) {
+            applyToField(ctx, fields[0], fieldAnnotations[0], object);
+        }
+
+        for (int i=0; i<methods.length; i++) {
+            applyToMethod(ctx, methods[i], methodAnnotations[i], object);
+        }
+    }
+
+    private void applyToField(FacesContext facesContext, Field field, WebServiceRef ref, Object instance) {
+        Object value = null;
+        /*
+        if (ref.lookup() != null && !"".equals(ref.lookup().trim())) {
+            value = lookup(facesContext, ref.lookup());
+        } else 
+        */
+        if (ref.name() != null && !"".equals(ref.name().trim())) {
+            value = lookup(facesContext, JAVA_COMP_ENV + ref.name());
+        } else {
+            value = lookup(facesContext, field.getName());
+        }
+        setField(facesContext, field, instance, value);
+    }
+
+    private void applyToMethod(FacesContext facesContext, Method method, WebServiceRef ref, Object instance) {
+        if (method.getName().startsWith("set")) {
+            Object value = null;
+            /*
+            if (ref.lookup() != null && !"".equals(ref.lookup().trim())) {
+                value = lookup(facesContext, ref.lookup());
+            } else 
+            */
+            if (ref.name() != null && !"".equals(ref.name().trim())) {
+                value = lookup(facesContext, JAVA_COMP_ENV + ref.name());
+            }
+            invokeMethod(facesContext, method, instance, value);
+        }
+    }
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/application/annotation/WebServiceRefScanner.java b/jsf-ri/src/main/java/com/sun/faces/application/annotation/WebServiceRefScanner.java
new file mode 100644
index 0000000..09cb5e8
--- /dev/null
+++ b/jsf-ri/src/main/java/com/sun/faces/application/annotation/WebServiceRefScanner.java
@@ -0,0 +1,109 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.application.annotation;
+
+import com.sun.faces.util.Util;
+import java.lang.annotation.Annotation;
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+import java.util.ArrayList;
+import javax.xml.ws.WebServiceRef;
+
+/**
+ * <code>Scanner</code> implementation responsible for {@link WebServiceRef} annotations.
+ */
+class WebServiceRefScanner implements Scanner {
+
+    /**
+     * Get the annotation we handle.
+     *
+     * @return the annotation we handle.
+     */
+    @Override
+    public Class<? extends Annotation> getAnnotation() {
+        return WebServiceRef.class;
+    }
+
+    /**
+     * Scan the specified class for the given annotation.
+     *
+     * @param clazz the class.
+     * @return the runtime annotation handler.
+     * @todo Make sure we get all the fields, handle method and class based injection, handle WebServiceRefs.
+     */
+    @Override
+    public RuntimeAnnotationHandler scan(Class<?> clazz) {
+        Util.notNull("clazz", clazz);
+        WebServiceRefHandler handler = null;
+
+        ArrayList<WebServiceRef> classAnnotations = new ArrayList<WebServiceRef>();
+        WebServiceRef classAnnotation = clazz.getAnnotation(WebServiceRef.class);
+        if (classAnnotation != null) {
+            classAnnotations.add(classAnnotation);
+        }
+        ArrayList<WebServiceRef> fieldAnnotations = new ArrayList<WebServiceRef>();
+        ArrayList<Field> fields = new ArrayList<Field>();
+
+        for (Field field : clazz.getDeclaredFields()) {
+            WebServiceRef fieldAnnotation = field.getAnnotation(WebServiceRef.class);
+            if (fieldAnnotation != null) {
+                fieldAnnotations.add(fieldAnnotation);
+                fields.add(field);
+            }
+        }
+        
+        ArrayList<WebServiceRef> methodAnnotations = new ArrayList<WebServiceRef>();
+        ArrayList<Method> methods = new ArrayList<Method>();
+        for (Method method : clazz.getDeclaredMethods()) {
+            WebServiceRef methodAnnotation = method.getAnnotation(WebServiceRef.class);
+            if (methodAnnotation != null) {
+                methodAnnotations.add(methodAnnotation);
+                methods.add(method);
+            }
+        }
+        
+        if (!classAnnotations.isEmpty() || !fieldAnnotations.isEmpty()) {
+            handler = new WebServiceRefHandler(
+                    fields.toArray(new Field[0]), (WebServiceRef[]) fieldAnnotations.toArray(new WebServiceRef[0]),
+                    methods.toArray(new Method[0]), (WebServiceRef[]) methodAnnotations.toArray(new WebServiceRef[0]));
+        }
+        return handler;
+    }
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/application/resource/ClasspathResourceHelper.java b/jsf-ri/src/main/java/com/sun/faces/application/resource/ClasspathResourceHelper.java
index e242674..4f61178 100644
--- a/jsf-ri/src/main/java/com/sun/faces/application/resource/ClasspathResourceHelper.java
+++ b/jsf-ri/src/main/java/com/sun/faces/application/resource/ClasspathResourceHelper.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -36,6 +40,10 @@
 
 package com.sun.faces.application.resource;
 
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.faces.component.UIViewRoot;
 import java.io.IOException;
 import java.io.InputStream;
 import java.net.URL;
@@ -46,6 +54,8 @@ import com.sun.faces.config.WebConfiguration;
 import com.sun.faces.util.Util;
 
 import static com.sun.faces.config.WebConfiguration.BooleanWebContextInitParameter.CacheResourceModificationTimestamp;
+import static com.sun.faces.config.WebConfiguration.BooleanWebContextInitParameter.EnableMissingResourceLibraryDetection;
+
 
 /**
  * <p>
@@ -60,6 +70,9 @@ public class ClasspathResourceHelper extends ResourceHelper {
 
     private static final String BASE_RESOURCE_PATH = "META-INF/resources";
     private boolean cacheTimestamp;
+    private volatile ZipDirectoryEntryScanner libraryScanner;
+    private boolean enableMissingResourceLibraryDetection;
+
 
 
     // ------------------------------------------------------------ Constructors
@@ -69,9 +82,38 @@ public class ClasspathResourceHelper extends ResourceHelper {
 
         WebConfiguration webconfig = WebConfiguration.getInstance();
         cacheTimestamp = webconfig.isOptionEnabled(CacheResourceModificationTimestamp);
+        enableMissingResourceLibraryDetection =
+                webconfig.isOptionEnabled(EnableMissingResourceLibraryDetection);
+
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (obj == null) {
+            return false;
+        }
+        if (getClass() != obj.getClass()) {
+            return false;
+        }
+        final ClasspathResourceHelper other = (ClasspathResourceHelper) obj;
+        if (this.cacheTimestamp != other.cacheTimestamp) {
+            return false;
+        }
+        if (this.enableMissingResourceLibraryDetection != other.enableMissingResourceLibraryDetection) {
+            return false;
+        }
+        return true;
+    }
 
+    @Override
+    public int hashCode() {
+        int hash = 5;
+        hash = 67 * hash + (this.cacheTimestamp ? 1 : 0);
+        hash = 67 * hash + (this.enableMissingResourceLibraryDetection ? 1 : 0);
+        return hash;
     }
 
+    
 
     // --------------------------------------------- Methods from ResourceHelper
 
@@ -85,27 +127,41 @@ public class ClasspathResourceHelper extends ResourceHelper {
 
     }
 
-
+    @Override
+    public String getBaseContractsPath() {
+        return WebConfiguration.META_INF_CONTRACTS_DIR;
+    }
+    
     /**
-     * @see ResourceHelper#getNonCompressedInputStream(ResourceInfo, javax.faces.context.FacesContext)
+     * @see ResourceHelper#getNonCompressedInputStream(com.sun.faces.application.resource.ResourceInfo, javax.faces.context.FacesContext)
      */
-    protected InputStream getNonCompressedInputStream(ResourceInfo resource, FacesContext ctx)
-    throws IOException {
+    protected InputStream getNonCompressedInputStream(ResourceInfo resource, FacesContext ctx) throws IOException {
 
-        ClassLoader loader = Util.getCurrentLoader(this.getClass());
-        String path = resource.getPath();
-        InputStream in = loader.getResourceAsStream(path);
-        if (in == null) {
-            // try using this class' loader (necessary when running in OSGi)
-            in = this.getClass().getClassLoader().getResourceAsStream(path);
+        InputStream in = null;
+        
+        if (ctx.isProjectStage(ProjectStage.Development)) {
+            ClassLoader loader = Util.getCurrentLoader(getClass());
+            String path = resource.getPath();
+            if (loader.getResource(path) != null) {
+                in = loader.getResource(path).openStream();
+            }
+            if (in == null && getClass().getClassLoader().getResource(path) != null) {
+                in = getClass().getClassLoader().getResource(path).openStream();
+            }
+        } else {        
+            ClassLoader loader = Util.getCurrentLoader(getClass());
+            String path = resource.getPath();
+            in = loader.getResourceAsStream(path);
+            if (in == null) {
+                in = getClass().getClassLoader().getResourceAsStream(path);
+            }
         }
         return in;
-
     }
 
 
     /**
-     * @see com.sun.faces.application.resource.ResourceHelper#getURL(ResourceInfo, javax.faces.context.FacesContext)
+     * @see ResourceHelper#getURL(com.sun.faces.application.resource.ResourceInfo, javax.faces.context.FacesContext)
      */
     public URL getURL(ResourceInfo resource, FacesContext ctx) {
 
@@ -119,20 +175,20 @@ public class ClasspathResourceHelper extends ResourceHelper {
 
     }
 
-
+    
     /**
-     * @see ResourceHelper#findLibrary(String, String, javax.faces.context.FacesContext)
+     * @see ResourceHelper#findLibrary(String, String, String, javax.faces.context.FacesContext)
      */
     public LibraryInfo findLibrary(String libraryName,
                                    String localePrefix,
-                                   FacesContext ctx) {
+                                   String contract, FacesContext ctx) {
 
         ClassLoader loader = Util.getCurrentLoader(this);
         String basePath;
         if (localePrefix == null) {
-            basePath = getBaseResourcePath() + '/' + libraryName + '/';
+            basePath = getBasePath(contract) + '/' + libraryName + '/';
         } else {
-            basePath = getBaseResourcePath()
+            basePath = getBasePath(contract)
                        + '/'
                        + localePrefix
                        + '/'
@@ -149,10 +205,50 @@ public class ClasspathResourceHelper extends ResourceHelper {
             }
         }
 
-        return new LibraryInfo(libraryName, null, localePrefix, this);
+        return new LibraryInfo(libraryName, null, localePrefix, contract, this);
         
     }
 
+    public LibraryInfo findLibraryWithZipDirectoryEntryScan(String libraryName,
+                                                            String localePrefix,
+                                                            String contract, FacesContext ctx, boolean forceScan) {
+
+        ClassLoader loader = Util.getCurrentLoader(this);
+        String basePath;
+        if (localePrefix == null) {
+            basePath = getBasePath(contract) + '/' + libraryName + '/';
+        } else {
+            basePath = getBasePath(contract)
+                       + '/'
+                       + localePrefix
+                       + '/'
+                       + libraryName
+                       + '/';
+        }
+
+        URL basePathURL = loader.getResource(basePath);
+        if (basePathURL == null) {
+            // try using this class' loader (necessary when running in OSGi)
+            basePathURL = this.getClass().getClassLoader().getResource(basePath);
+            if (basePathURL == null) {
+                if (null != localePrefix && libraryName.equals("javax.faces")) {
+                    return null;
+                }
+                if (enableMissingResourceLibraryDetection || forceScan) {
+                    if (null == libraryScanner) {
+                        libraryScanner = new ZipDirectoryEntryScanner();
+                    }
+                    if (!libraryScanner.libraryExists(libraryName, localePrefix)) {
+                        return null;
+                    }
+                }
+            }
+        }
+
+        return new LibraryInfo(libraryName, null, localePrefix, contract, this);
+    }
+
+
 
     /**
      * @see ResourceHelper#findResource(LibraryInfo, String, String, boolean, javax.faces.context.FacesContext)
@@ -163,48 +259,63 @@ public class ClasspathResourceHelper extends ResourceHelper {
                                      boolean compressable,
                                      FacesContext ctx) {
 
+        resourceName = trimLeadingSlash(resourceName);
+        ContractInfo [] outContract = new ContractInfo[1];
+        outContract[0] = null;
+        String [] outBasePath = new String[1];
+        outBasePath[0] = null;
+        
         ClassLoader loader = Util.getCurrentLoader(this);
-        String basePath;
-        if (library != null) {
-            basePath = library.getPath() + '/' + resourceName;
-        } else {
-            if (localePrefix == null) {
-                basePath = getBaseResourcePath() + '/' + resourceName;
-            } else {
-                basePath = getBaseResourcePath()
-                           + '/'
-                           + localePrefix
-                           + '/'
-                           + resourceName;
-            }
+        URL basePathURL = findPathConsideringContracts(loader, library, resourceName, 
+                localePrefix, outContract, outBasePath, ctx);
+        String basePath = outBasePath[0];
+        if (null == basePathURL) {
+            basePath = deriveBasePath(library, resourceName, localePrefix);
+            basePathURL = loader.getResource(basePath);
         }
 
-        URL basePathURL = loader.getResource(basePath);
-        if (basePathURL == null) {
+        if (null == basePathURL) {
             // try using this class' loader (necessary when running in OSGi)
             basePathURL = this.getClass().getClassLoader().getResource(basePath);
             if (basePathURL == null) {
-                return null;
+                // Try it without the localePrefix
+                if (library != null) {
+                    basePath = library.getPath(null) + '/' + resourceName;
+                } else {
+                    basePath = getBaseResourcePath() + '/' + resourceName;
+                }
+                basePathURL = loader.getResource(basePath);
+                if (basePathURL == null) {
+                    // try using this class' loader (necessary when running in OSGi)
+                    basePathURL = this.getClass().getClassLoader().getResource(basePath);
+                    if (basePathURL == null) {
+                        return null;
+                    }
+                }
+
+                localePrefix = null;
             }
         }
 
-        ResourceInfo value;
+        ClientResourceInfo value;
 
         if (library != null) {
-            value = new ResourceInfo(library,
+            value = new ClientResourceInfo(library,
+                                     outContract[0],
                                      resourceName,
                                      null,
                                      compressable,
-                                     resourceSupportsEL(resourceName, ctx),
+                                     resourceSupportsEL(resourceName, library.getName(), ctx),
                                      ctx.isProjectStage(ProjectStage.Development),
                                      cacheTimestamp);
         } else {
-            value = new ResourceInfo(resourceName,
+            value = new ClientResourceInfo(outContract[0],
+                                     resourceName,
                                      null,
                                      localePrefix,
                                      this,
                                      compressable,
-                                     resourceSupportsEL(resourceName, ctx),
+                                     resourceSupportsEL(resourceName, null, ctx),
                                      ctx.isProjectStage(ProjectStage.Development),
                                      cacheTimestamp);
         }
@@ -215,6 +326,84 @@ public class ClasspathResourceHelper extends ResourceHelper {
         return value;
 
     }
-
     
+    private String deriveBasePath(LibraryInfo library,
+            String resourceName,
+            String localePrefix) {
+        String basePath = null;
+        if (library != null) {
+            basePath = library.getPath(localePrefix) + '/' + resourceName;
+        } else {
+            if (localePrefix == null) {
+                basePath = getBaseResourcePath() + '/' + resourceName;
+            } else {
+                basePath = getBaseResourcePath()
+                        + '/'
+                        + localePrefix
+                        + '/'
+                        + resourceName;
+            }
+        }            
+        return basePath;
+    }
+
+    private URL findPathConsideringContracts(ClassLoader loader, 
+                                     LibraryInfo library,
+                                     String resourceName,
+                                     String localePrefix,
+                                     ContractInfo [] outContract,
+                                     String [] outBasePath,
+                                     FacesContext ctx) {
+        UIViewRoot root = ctx.getViewRoot();
+        List<String> contracts = null;
+        URL result = null;
+        
+        if (library != null) {
+        	contracts = new ArrayList<String>(1);
+        	contracts.add(library.getContract());
+        } else if (root == null) {
+            String contractName = ctx.getExternalContext().getRequestParameterMap()
+                  .get("con");
+            if (null != contractName && 0 < contractName.length()) {
+                contracts = new ArrayList<String>();
+                contracts.add(contractName);
+            } else {
+                return null;
+            }
+        } else {
+       		contracts = ctx.getResourceLibraryContracts();
+        }
+
+        String basePath = null;
+        
+        for (String curContract : contracts) {
+        
+            if (library != null) {
+                // PENDING(fcaputo) no need to iterate over the contracts, if we have a library
+                basePath = library.getPath(localePrefix) + '/' + resourceName;
+            } else {
+                if (localePrefix == null) {
+                    basePath = getBaseContractsPath() + '/' + curContract + '/' + resourceName;
+                } else {
+                    basePath = getBaseContractsPath()
+                            + '/' + curContract 
+                            + '/'
+                            + localePrefix
+                            + '/'
+                            + resourceName;
+                }
+            }
+            
+            if (null != (result = loader.getResource(basePath))) {
+                outContract[0] = new ContractInfo(curContract);
+                outBasePath[0] = basePath;
+                break;
+            } else {
+                basePath = null;
+            }
+        }
+            
+        return result;
+    }
+
 }
diff --git a/jsf-ri/src/main/java/com/sun/faces/application/resource/ClientResourceInfo.java b/jsf-ri/src/main/java/com/sun/faces/application/resource/ClientResourceInfo.java
new file mode 100644
index 0000000..72f4a6d
--- /dev/null
+++ b/jsf-ri/src/main/java/com/sun/faces/application/resource/ClientResourceInfo.java
@@ -0,0 +1,322 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.application.resource;
+
+import java.io.File;
+import java.util.logging.Logger;
+import java.util.logging.Level;
+
+import javax.faces.context.FacesContext;
+
+import com.sun.faces.util.FacesLogger;
+
+/**
+ * <p/>
+ * <code>ClientResourceInfo</code> is a simple wrapper class for information
+ * pertainant to building a complete resource path using a Library.
+ * <p/>
+ */
+public class ClientResourceInfo extends ResourceInfo {
+
+    private static final Logger LOGGER = FacesLogger.RESOURCE.getLogger();
+    private static final String COMPRESSED_CONTENT_DIRECTORY =
+          "jsf-compressed";
+    boolean cacheTimestamp;
+    boolean isDevStage;
+    String compressedPath;
+    boolean compressible;
+    boolean supportsEL;
+    private volatile long lastModified = Long.MIN_VALUE;
+
+
+    /**
+     * Constructs a new <code>ClientResourceInfo</code> using the specified details.
+     * The {@link ResourceHelper} of the resource will be the same as the
+     * {@link ResourceHelper} of the {@link LibraryInfo}.
+     * @param library the library containing this resource
+     * @param name the resource name
+     * @param version the version of this resource (if any)
+     * @param compressible if this resource should be compressed
+     * @param supportsEL <code>true</code> if this resource may contain
+     *   EL expressions
+     * @param isDevStage true if this context is development stage
+     * @param cacheTimestamp <code>true</code> if the modification time of the
+     *  resource should be cached.  The value of this parameter will be ignored
+     *  when {@link #isDevStage} is <code>true</code>
+     */
+    public ClientResourceInfo(LibraryInfo library,
+                        ContractInfo contract,
+                        String name,
+                        VersionInfo version,
+                        boolean compressible,
+                        boolean supportsEL,
+                        boolean isDevStage,
+                        boolean cacheTimestamp) {
+        super(library, contract, name, version);
+        this.compressible = compressible;
+        this.supportsEL = supportsEL;
+        this.isDevStage = isDevStage;
+        this.cacheTimestamp = (!isDevStage && cacheTimestamp);
+        initPath(isDevStage);
+    }
+
+    /**
+     * Constructs a new <code>ClientResourceInfo</code> using the specified details.
+     * @param name the resource name
+     * @param version the version of the resource
+     * @param localePrefix the locale prefix for this resource (if any)
+     * @param helper helper the helper class for this resource
+     * @param compressible if this resource should be compressed
+     * @param supportsEL <code>true</code> if this resource may contain
+     *   EL expressions
+     * @param isDevStage true if this context is development stage
+     * @param cacheTimestamp <code>true</code> if the modification time of the
+     *  resource should be cached.  The value of this parameter will be ignored
+     *  when {@link #isDevStage} is <code>true</code>
+     */
+    ClientResourceInfo(ContractInfo contract,
+                 String name,
+                 VersionInfo version,
+                 String localePrefix,
+                 ResourceHelper helper,
+                 boolean compressible,
+                 boolean supportsEL,
+                 boolean isDevStage,
+                 boolean cacheTimestamp) {
+        super(contract, name, version, helper);
+        this.name = name;
+        this.version = version;
+        this.localePrefix = localePrefix;
+        this.helper = helper;
+        this.compressible = compressible;
+        this.supportsEL = supportsEL;
+        this.isDevStage = isDevStage;
+        this.cacheTimestamp = (!isDevStage && cacheTimestamp);
+        initPath(isDevStage);
+    }
+    
+    ClientResourceInfo(ClientResourceInfo other, boolean copyLocalePrefix) {
+        super(other, copyLocalePrefix);
+        this.cacheTimestamp = other.cacheTimestamp;
+        this.compressedPath = other.compressedPath;
+        this.compressible = other.compressible;
+        this.isDevStage = other.isDevStage;
+        this.lastModified = other.lastModified;
+        this.supportsEL = other.supportsEL;
+        initPath(isDevStage);
+    }
+    
+    public void copy(ClientResourceInfo other) {
+        super.copy(other);
+        this.cacheTimestamp = other.cacheTimestamp;
+        this.compressedPath = other.compressedPath;
+        this.compressible = other.compressible;
+        this.isDevStage = other.isDevStage;
+        this.lastModified = other.lastModified;
+        this.supportsEL = other.supportsEL;
+    }
+
+
+    // ---------------------------------------------------------- Public Methods
+
+    /**
+     * @return the path to which the compressed bits for this resource
+     *  reside.  If this resource isn't compressible and this method is called,
+     *  it will return <code>null</code>
+     */
+    public String getCompressedPath() {
+        return compressedPath;
+    }
+
+    /**
+     * @return <code>true</code> if this resource should be compressed,
+     *  otherwise <code>false</code>
+     */
+    public boolean isCompressable() {
+        return compressible;
+    }
+
+    /**
+     * @return <code>true</code> if the this resource may contain EL expressions
+     *  that should be evaluated, otherwise, return <code>false</code>
+     */
+    public boolean supportsEL() {
+        return supportsEL;
+    }
+
+    /**
+     * Disables EL evaluation for this resource. 
+     */
+    public void disableEL() {
+        this.supportsEL = false;
+    }
+
+    /**
+     * Returns the time this resource was last modified.
+     * If {@link com.sun.faces.config.WebConfiguration.BooleanWebContextInitParameter#CacheResourceModificationTimestamp}
+     * is true, the value will be cached for the lifetime if this <code>ClientResourceInfo</code>
+     * instance.
+     *
+     * @param ctx the {@link FacesContext} for the current request
+     *
+     * @return the time this resource was last modified (number of milliseconds
+     *  since January 1, 1970 GMT).
+     *
+     */
+    public long getLastModified(FacesContext ctx) {
+
+        if (cacheTimestamp) {
+            if (lastModified == Long.MIN_VALUE) {
+                synchronized (this) {
+                    if (lastModified == Long.MIN_VALUE) {
+                        lastModified = helper.getLastModified(this, ctx);
+                    }
+                }
+            }
+            return lastModified;
+        } else {
+            return helper.getLastModified(this, ctx);
+        }
+        
+    }
+
+    @Override
+    public String toString() {
+        return "ResourceInfo{" +
+               "name='" + name + '\'' +
+               ", version=\'" + ((version != null) ? version : "NONE") + '\'' +
+               ", libraryName='" + libraryName + '\'' +
+               ", contractInfo='" + (contract != null ? contract.contract : "NONE") + '\'' +
+               ", libraryVersion='" + ((library != null) ? library.getVersion() : "NONE") + '\'' +
+               ", localePrefix='" + ((localePrefix != null) ? localePrefix : "NONE") + '\'' +
+               ", path='" + path + '\'' +
+               ", compressible='" + compressible + '\'' +
+               ", compressedPath=" + compressedPath +
+               '}';
+    }
+
+    // --------------------------------------------------------- Private Methods
+
+
+    /**
+     * Create the full path to the resource.  If the resource can be compressed,
+     * setup the compressedPath ivar so that the path refers to the
+     * directory refereneced by the context attribute <code>javax.servlet.context.tempdir</code>.  
+     */
+    private void initPath(boolean isDevStage) {
+
+        StringBuilder sb = new StringBuilder(32);
+        if (library != null) {
+            sb.append(library.getPath());
+        } else {
+            if (null != contract) {
+                sb.append(helper.getBaseContractsPath());
+                sb.append("/").append(contract);
+            } else {
+                sb.append(helper.getBaseResourcePath());
+            }
+        }
+        if (library == null && localePrefix != null) {
+            sb.append('/').append(localePrefix);
+        }
+        // Specialcasing for handling jsf.js in uncompressed state
+        if (isDevStage && "javax.faces".equals(libraryName) && "jsf.js".equals(name)) {
+            sb.append('/').append("jsf-uncompressed.js");
+        } else {
+            sb.append('/').append(name);
+        }
+        if (version != null) {
+            sb.append('/').append(version.getVersion());
+            String extension = version.getExtension();
+            if (extension != null) {
+                sb.append('.').append(extension);    
+            }
+        }
+        path = sb.toString();
+
+        if (compressible && !supportsEL) { // compression for static resources
+            FacesContext ctx = FacesContext.getCurrentInstance();
+            File servletTmpDir = (File) ctx.getExternalContext()
+                  .getApplicationMap().get("javax.servlet.context.tempdir");
+            if (servletTmpDir == null || !servletTmpDir.isDirectory()) {
+                if (LOGGER.isLoggable(Level.FINE)) {
+                    LOGGER.log(Level.FINE,
+                               "File ({0}) referenced by javax.servlet.context.tempdir attribute is null, or was is not a directory.  Compression for {1} will be unavailable.",
+                               new Object[]{((servletTmpDir == null)
+                                             ? "null"
+                                             : servletTmpDir.toString()),
+                                            path});
+                }
+                compressible = false;
+            } else {
+                String tPath = ((path.charAt(0) == '/') ? path : '/' + path);
+                File newDir = new File(servletTmpDir, COMPRESSED_CONTENT_DIRECTORY
+                                                      + tPath);
+
+                try {
+                    if (!newDir.exists()) {
+                        if (newDir.mkdirs()) {
+                            compressedPath = newDir.getCanonicalPath();
+                        } else {
+                            compressible = false;
+                            if (LOGGER.isLoggable(Level.WARNING)) {
+                                LOGGER.log(Level.WARNING,
+                                           "jsf.application.resource.unable_to_create_compression_directory",
+                                           newDir.getCanonicalPath());
+                            }
+                        }
+                    } else {
+                        compressedPath = newDir.getCanonicalPath();
+                    }
+                } catch (Exception e) {
+                	if (LOGGER.isLoggable(Level.SEVERE)) {
+	                    LOGGER.log(Level.SEVERE,
+	                               e.toString(),
+	                               e);
+                	}
+                    compressible = false;
+                }
+            }
+        }
+        
+    }
+
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/application/resource/ContractInfo.java b/jsf-ri/src/main/java/com/sun/faces/application/resource/ContractInfo.java
new file mode 100644
index 0000000..498f24f
--- /dev/null
+++ b/jsf-ri/src/main/java/com/sun/faces/application/resource/ContractInfo.java
@@ -0,0 +1,82 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.application.resource;
+
+public final class ContractInfo {
+    
+    private static final long serialVersionUID = 6585532979916457692L;
+    
+    String contract;
+
+    public ContractInfo(String contract) {
+        this.contract = contract;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (obj == null) {
+            return false;
+        }
+        if (getClass() != obj.getClass()) {
+            return false;
+        }
+        final ContractInfo other = (ContractInfo) obj;
+        if ((this.contract == null) ? (other.contract != null) : !this.contract.equals(other.contract)) {
+            return false;
+        }
+        return true;
+    }
+
+    @Override
+    public int hashCode() {
+        int hash = 7;
+        hash = 29 * hash + (this.contract != null ? this.contract.hashCode() : 0);
+        return hash;
+    }
+
+    @Override
+    public String toString() {
+        return contract;
+    }
+    
+    
+    
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/application/resource/FaceletLibraryInfo.java b/jsf-ri/src/main/java/com/sun/faces/application/resource/FaceletLibraryInfo.java
new file mode 100644
index 0000000..980d81b
--- /dev/null
+++ b/jsf-ri/src/main/java/com/sun/faces/application/resource/FaceletLibraryInfo.java
@@ -0,0 +1,60 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.application.resource;
+
+import java.net.URL;
+
+public class FaceletLibraryInfo extends LibraryInfo {
+    
+    private URL url;
+
+    public FaceletLibraryInfo(String name, VersionInfo version, String localePrefix, String contract, ResourceHelper helper, URL url) {
+        super(name, version, localePrefix, contract, helper);
+        this.url = url;
+    }
+
+    public URL getUrl() {
+        return url;
+    }
+    
+    
+    
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/application/resource/FaceletResourceInfo.java b/jsf-ri/src/main/java/com/sun/faces/application/resource/FaceletResourceInfo.java
new file mode 100644
index 0000000..5cea50f
--- /dev/null
+++ b/jsf-ri/src/main/java/com/sun/faces/application/resource/FaceletResourceInfo.java
@@ -0,0 +1,60 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.application.resource;
+
+import java.net.URL;
+
+public class FaceletResourceInfo extends ResourceInfo {
+
+    FaceletResourceInfo(ContractInfo contract, String name, VersionInfo version, 
+            ResourceHelper helper, URL url) {
+        super(contract, name, version, helper);
+        this.url = url;
+    }
+    
+    private URL url;
+
+    public URL getUrl() {
+        return url;
+    }
+    
+    
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/application/resource/FaceletWebappResourceHelper.java b/jsf-ri/src/main/java/com/sun/faces/application/resource/FaceletWebappResourceHelper.java
new file mode 100644
index 0000000..2c85b65
--- /dev/null
+++ b/jsf-ri/src/main/java/com/sun/faces/application/resource/FaceletWebappResourceHelper.java
@@ -0,0 +1,253 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.application.resource;
+
+import com.sun.faces.RIConstants;
+import com.sun.faces.application.ApplicationAssociate;
+import com.sun.faces.config.WebConfiguration;
+import com.sun.faces.util.Util;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.Enumeration;
+import java.util.List;
+import java.util.NoSuchElementException;
+import javax.faces.FacesException;
+import javax.faces.application.Application;
+import javax.faces.context.ExternalContext;
+import javax.faces.context.FacesContext;
+import javax.faces.flow.Flow;
+import javax.faces.flow.FlowHandler;
+
+public class FaceletWebappResourceHelper extends ResourceHelper {
+    
+    private final String webAppContractsDirectory;
+    private static final String META_INF_CONTRACTS_DIR = WebConfiguration.META_INF_CONTRACTS_DIR;
+
+    public FaceletWebappResourceHelper() {
+        WebConfiguration webConfig = WebConfiguration.getInstance();
+        webAppContractsDirectory = webConfig.getOptionValue(WebConfiguration.WebContextInitParameter.WebAppContractsDirectory);
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        return obj instanceof FaceletWebappResourceHelper;
+    }
+
+    @Override
+    public int hashCode() {
+        return 3;
+    }
+    
+    
+
+    @Override
+    public LibraryInfo findLibrary(String libraryName, String localePrefix, String contract, FacesContext ctx) {
+        LibraryInfo result = null;
+
+        try {
+            String path = libraryName;
+            // prepend the leading '/' if necessary.
+            if ('/' != path.charAt(0)) {
+                path = "/" + path;
+            }
+            if(contract != null) {
+                path = webAppContractsDirectory + '/' + contract + path;
+            }
+            if ('/' != path.charAt(0)) {
+                path = "/" + path;
+            }
+            URL url = Resource.getResourceUrl(ctx, path);
+            // By definition, FaceletWebappResourceHelper only deals with files
+            // in the web app root, not in the resource directories
+            if (null != url && -1 == url.getPath().indexOf("/META-INF/")) {
+                result = new FaceletLibraryInfo(libraryName, null, localePrefix, contract, this, url);
+            }
+        } catch (MalformedURLException ex) {
+            throw new FacesException(ex);
+        }
+        
+        
+        return result;
+    }
+
+    @Override
+    public ResourceInfo findResource(LibraryInfo library, String resourceName, String localePrefix, boolean compressable, FacesContext ctx) {
+        FaceletResourceInfo result = null;
+        try {
+            String path = resourceName;
+            if (null != library) {
+                path = library.getPath() + "/" + resourceName;
+            } else {
+                // prepend the leading '/' if necessary.
+                if ('/' != path.charAt(0)) {
+                    path = "/" + path;
+                }
+            }
+            
+            List<String> contracts = ctx.getResourceLibraryContracts();
+            ContractInfo [] outContract = new ContractInfo[1];
+            outContract[0] = null;
+            boolean doNotCache = false;
+
+            URL url = null;
+            // if the library is not null, we must not consider contracts here!
+            if (library == null && !contracts.isEmpty()) {
+                url = findResourceInfoConsideringContracts(ctx, resourceName,
+                        outContract,
+                        contracts);
+            }
+            if (null == url) {
+                url = Resource.getResourceUrl(ctx, path);
+            }
+            
+            if (null == url) {
+                ClassLoader cl = Util.getCurrentLoader(this);
+                Enumeration<URL> matches = cl.getResources(RIConstants.FLOW_IN_JAR_PREFIX + resourceName);
+                try {
+                    url = matches.nextElement();
+                } catch (NoSuchElementException nsee) {
+                    url = null;
+                }
+                if (null != url && matches.hasMoreElements()) {
+                    boolean keepGoing = true;
+                    FacesContext context = FacesContext.getCurrentInstance();
+                    Application application = context.getApplication();
+                    FlowHandler fh = application.getFlowHandler();
+                    Flow currentFlow = fh.getCurrentFlow(context);
+                    do {
+                        if (null != currentFlow && 0 < currentFlow.getDefiningDocumentId().length()) {
+                            String definingDocumentId = currentFlow.getDefiningDocumentId();
+                            ExternalContext extContext = context.getExternalContext();
+                            ApplicationAssociate associate = ApplicationAssociate.getInstance(extContext);
+                            if (associate.urlIsRelatedToDefiningDocumentInJar(url, definingDocumentId)) {
+                                keepGoing = false;
+                                doNotCache = true;
+                            } else {
+                                if (matches.hasMoreElements()) {
+                                    url = matches.nextElement();
+                                } else {
+                                    keepGoing = false;
+                                }
+                            }
+                        } else {
+                            keepGoing = false;
+                        }
+                    } while (keepGoing);
+                }
+            }
+            
+            if (null != url) {
+                result = new FaceletResourceInfo(outContract[0], resourceName, null, this, url);
+                if (doNotCache) {
+                    result.setDoNotCache(doNotCache);
+                }
+            }
+        } catch (IOException ex) {
+            throw new FacesException(ex);
+        } 
+        
+        return result;
+    }
+    
+    private URL findResourceInfoConsideringContracts(FacesContext ctx,
+            String baseResourceName,
+            ContractInfo [] outContract,
+            List<String> contracts) throws MalformedURLException {
+        URL url = null;
+        String resourceName;
+        
+        for (String curContract : contracts) {
+            if (baseResourceName.startsWith("/")) {
+                resourceName = webAppContractsDirectory + "/" + curContract + baseResourceName;
+            } else {
+                resourceName = webAppContractsDirectory + "/" + curContract + "/" + baseResourceName;
+            }
+            url = Resource.getResourceUrl(ctx, resourceName);
+            if (null != url) {
+                outContract[0] = new ContractInfo(curContract);
+                break;
+            } else {
+                if (baseResourceName.startsWith("/")) {
+                    resourceName = META_INF_CONTRACTS_DIR + "/" + curContract + baseResourceName;
+                } else {
+                    resourceName = META_INF_CONTRACTS_DIR + "/" + curContract + "/" + baseResourceName;
+                }
+                url = Util.getCurrentLoader(this).getResource(resourceName);
+                if (null != url) {
+                    outContract[0] = new ContractInfo(curContract);
+                    break;
+                }                
+            }
+            
+        }
+        
+        return url;
+    }
+    
+    
+
+    
+
+    @Override
+    public String getBaseResourcePath() {
+        return "";
+    }
+
+    @Override
+    public String getBaseContractsPath() {
+        return webAppContractsDirectory;
+    }
+
+    @Override
+    protected InputStream getNonCompressedInputStream(ResourceInfo info, FacesContext ctx) throws IOException {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    @Override
+    public URL getURL(ResourceInfo resource, FacesContext ctx) {
+        return ((FaceletResourceInfo)resource).getUrl();
+    }
+
+
+    
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/application/resource/LibraryInfo.java b/jsf-ri/src/main/java/com/sun/faces/application/resource/LibraryInfo.java
index f0c21c2..2083fb8 100644
--- a/jsf-ri/src/main/java/com/sun/faces/application/resource/LibraryInfo.java
+++ b/jsf-ri/src/main/java/com/sun/faces/application/resource/LibraryInfo.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -38,8 +42,8 @@ package com.sun.faces.application.resource;
 
 /**
  * <p>
- * <code>LibraryInfo</code> is a simple wrapper class for information pertainant to building
- * a complete resource path using a Library.
+ * <code>LibraryInfo</code> is a simple wrapper class for information pertinent to building
+ * a complete resource path using a Library and/or Contract.
  * <p>
  */
 public class LibraryInfo {
@@ -47,25 +51,42 @@ public class LibraryInfo {
     private String name;
     private VersionInfo version;
     private String localePrefix;
+    private String contract;
     private ResourceHelper helper;
     private String path;
+    private String nonLocalizedPath;
 
     /**
      * Constructs a new <code>LibraryInfo</code> using the specified details.
      * @param name the name of the library
      * @param version the version of the library, if any
+     * @param contract
      * @param helper the helper class for this resource
      */
     LibraryInfo(String name,
                 VersionInfo version,
                 String localePrefix,
-                ResourceHelper helper) {
+                String contract, ResourceHelper helper) {
         this.name = name;
         this.version = version;
         this.localePrefix = localePrefix;
+        this.contract = contract;
         this.helper = helper;
         initPath();
     }
+    
+    LibraryInfo(LibraryInfo other, boolean copyLocalePrefix) {
+        this.name = other.name;
+        this.version = other.version;
+        if (copyLocalePrefix) {
+            this.contract = other.contract;
+            
+            // http://java.net/jira/browse/JAVASERVERFACES_SPEC_PUBLIC-548 http://java.net/jira/browse/JAVASERVERFACES-2348
+            this.localePrefix = other.localePrefix;
+        }
+        this.helper = other.helper;
+        initPath();
+    }
 
     @Override
     public boolean equals(Object obj) {
@@ -88,6 +109,9 @@ public class LibraryInfo {
         if ((this.localePrefix == null) ? (other.localePrefix != null) : !this.localePrefix.equals(other.localePrefix)) {
             return false;
         }
+        if ((this.contract == null) ? (other.contract != null) : !this.contract.equals(other.contract)) {
+            return false;
+        }
         if ((this.path == null) ? (other.path != null) : !this.path.equals(other.path)) {
             return false;
         }
@@ -100,6 +124,7 @@ public class LibraryInfo {
         hash = 37 * hash + (this.name != null ? this.name.hashCode() : 0);
         hash = 37 * hash + (this.version != null ? this.version.hashCode() : 0);
         hash = 37 * hash + (this.localePrefix != null ? this.localePrefix.hashCode() : 0);
+        hash = 37 * hash + (this.contract != null ? this.contract.hashCode() : 0);
         hash = 37 * hash + (this.path != null ? this.path.hashCode() : 0);
         return hash;
     }
@@ -134,19 +159,37 @@ public class LibraryInfo {
     public String getPath() {
         return path;
     }
-
+    
+    public String getPath(String localePrefix) {
+        String result = null;
+        if (null == localePrefix) {
+            result = nonLocalizedPath;
+        } else {
+            result = path;
+        }
+        return result;
+    }
+    
     /**
      * @return the Locale prefix, if any.
      */
     public String getLocalePrefix() {
         return localePrefix;
     }
+    
+    /**
+     * @return active contract or null
+     */
+    public String getContract() {
+		return contract;
+	}
 
     public String toString() {
         return "LibraryInfo{" +
-               "name='" + name + '\'' +
+               "name='" + (name != null ? name : "NONE") + '\'' +
                ", version=" + ((version != null) ? version : "NONE") + '\'' +
                ", localePrefix='" + ((localePrefix != null) ? localePrefix : "NONE") + '\'' +
+               ", contract='" + ((contract != null) ? contract : "NONE") + '\'' +
                ", path='" + path + '\'' +
                '}';
     }
@@ -159,17 +202,33 @@ public class LibraryInfo {
      */
     private void initPath() {
 
-        StringBuilder sb = new StringBuilder(64);
-        sb.append(helper.getBaseResourcePath());
+        StringBuilder builder = new StringBuilder(64),
+                      noLocaleBuilder = new StringBuilder(64);
+
+        appendBasePath(builder);
+        appendBasePath(noLocaleBuilder);
+
         if (localePrefix != null) {
-            sb.append('/').append(localePrefix);
+            builder.append('/').append(localePrefix);
+        }
+        if (name != null) {
+	        builder.append('/').append(name);
+	        noLocaleBuilder.append('/').append(name);
         }
-        sb.append('/').append(name);
         if (version != null) {
-            sb.append('/').append(version.getVersion());
+            builder.append('/').append(version.getVersion());
+            noLocaleBuilder.append('/').append(version.getVersion());
+        }
+        path = builder.toString();
+        nonLocalizedPath = noLocaleBuilder.toString();
+    }
+
+    private void appendBasePath(StringBuilder builder) {
+        if (contract == null) {
+            builder.append(helper.getBaseResourcePath());
+        } else {
+            builder.append(helper.getBaseContractsPath()).append('/').append(contract);
         }
-        path = sb.toString();
-        
     }
 
 }
diff --git a/jsf-ri/src/main/java/com/sun/faces/application/resource/Resource.java b/jsf-ri/src/main/java/com/sun/faces/application/resource/Resource.java
new file mode 100644
index 0000000..3414db9
--- /dev/null
+++ b/jsf-ri/src/main/java/com/sun/faces/application/resource/Resource.java
@@ -0,0 +1,192 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ *
+ *
+ * This file incorporates work covered by the following copyright and
+ * permission notice:
+ *
+ * Copyright 2005-2007 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.sun.faces.application.resource;
+
+import com.sun.faces.util.FacesLogger;
+
+import javax.faces.context.ExternalContext;
+import javax.faces.context.FacesContext;
+import javax.servlet.ServletContext;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.net.URLConnection;
+import java.net.URLStreamHandler;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+/**
+ * @author Roland Huss
+ * 
+ */
+public final class Resource {
+
+    protected final static Logger log = FacesLogger.FACELETS_FACTORY.getLogger();
+
+    /**
+     * Get an URL of an internal resource. First,
+     * {@link javax.faces.context.ExternalContext#getResource(String)} is
+     * checked for an non-null URL return value. In the case of a null return
+     * value (as it is the case for Weblogic 8.1 for a packed war), a URL with a
+     * special URL handler is constructed, which can be used for
+     * <em>opening</em> a serlvet resource later. Internally, this special URL
+     * handler will call {@link ServletContext#getResourceAsStream(String)} when
+     * an inputstream is requested. This works even on Weblogic 8.1
+     * 
+     * @param ctx
+     *            the faces context from which to retrieve the resource
+     * @param path
+     *            an URL path
+     * 
+     * @return an url representing the URL and on which getInputStream() can be
+     *         called to get the resource
+     * @throws MalformedURLException
+     */
+    static URL getResourceUrl(FacesContext ctx, String path)
+            throws MalformedURLException {
+        final ExternalContext externalContext = ctx.getExternalContext();
+        URL url = externalContext.getResource(path);
+        if (log.isLoggable(Level.FINE)) {
+            log.fine("Resource-Url from external context: " + url);
+        }
+        // This might happen on Servlet container which doesnot return
+        // anything
+        // for getResource() (like weblogic 8.1 for packaged wars) we
+        // are trying
+        // to use an own URL protocol in order to use
+        // ServletContext.getResourceAsStream()
+        // when opening the url
+        if (url == null && resourceExist(externalContext, path)) {
+            url = getUrlForResourceAsStream(externalContext, path);
+        }
+        return url;
+    }
+
+    // This method could be used above to provide a 'fail fast' if a
+    // resource
+    // doesnt exist. Otherwise, the URL will fail on the first access.
+    private static boolean resourceExist(ExternalContext externalContext,
+            String path) {
+        if ("/".equals(path)) {
+            // The root context exists always
+            return true;
+        }
+        Object ctx = externalContext.getContext();
+        if (ctx instanceof ServletContext) {
+            ServletContext servletContext = (ServletContext) ctx;
+            InputStream stream = servletContext.getResourceAsStream(path);
+            if (stream != null) {
+                try {
+                    stream.close();
+                } catch (IOException e) {
+                    if (log.isLoggable(Level.FINEST)) {
+                        log.log(Level.FINEST, "Closing stream", e);
+                    }
+                }
+                return true;
+            }
+        }
+        return false;
+    }
+
+    // Construct URL with special URLStreamHandler for proxying
+    // ServletContext.getResourceAsStream()
+    private static URL getUrlForResourceAsStream(
+            final ExternalContext externalContext, String path)
+            throws MalformedURLException {
+        URLStreamHandler handler = new URLStreamHandler() {
+            protected URLConnection openConnection(URL u) throws IOException {
+                final String file = u.getFile();
+                return new URLConnection(u) {
+                    public void connect() throws IOException {
+                    }
+
+                    public InputStream getInputStream() throws IOException {
+                        if (log.isLoggable(Level.FINE)) {
+                            log.fine("Opening internal url to " + file);
+                        }
+                        Object ctx = externalContext.getContext();
+                        // Or maybe fetch the external context afresh ?
+                        // Object ctx =
+                        // FacesContext.getCurrentInstance().getExternalContext().getContext();
+
+                        if (ctx instanceof ServletContext) {
+                            ServletContext servletContext = (ServletContext) ctx;
+                            InputStream stream = servletContext
+                                    .getResourceAsStream(file);
+                            if (stream == null) {
+                                throw new FileNotFoundException(
+                                        "Cannot open resource " + file);
+                            }
+                            return stream;
+                        } else {
+                            throw new IOException(
+                                    "Cannot open resource for an context of "
+                                            + (ctx != null ? ctx.getClass()
+                                                    : null));
+                        }
+                    }
+                };
+            }
+        };
+        return new URL("internal", null, 0, path, handler);
+    }
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/application/resource/ResourceCache.java b/jsf-ri/src/main/java/com/sun/faces/application/resource/ResourceCache.java
index 00a2f73..94c5df9 100644
--- a/jsf-ri/src/main/java/com/sun/faces/application/resource/ResourceCache.java
+++ b/jsf-ri/src/main/java/com/sun/faces/application/resource/ResourceCache.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -36,6 +40,7 @@
 
 package com.sun.faces.application.resource;
 
+import java.util.List;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
@@ -72,7 +77,7 @@ public class ResourceCache {
     /**
      * The <code>ResourceInfo<code> cache.
      */
-    private MultiKeyConcurrentHashMap<String,ResourceInfoCheckPeriodProxy> resourceCache;
+    private MultiKeyConcurrentHashMap<Object,ResourceInfoCheckPeriodProxy> resourceCache;
 
 
     /**
@@ -94,7 +99,7 @@ public class ResourceCache {
         ServletContext sc = config.getServletContext();
         long period = getCheckPeriod(config);
         checkPeriod = ((period != -1) ? period * 1000L * 60L : -1);
-        resourceCache = new MultiKeyConcurrentHashMap<String,ResourceInfoCheckPeriodProxy>(30);
+        resourceCache = new MultiKeyConcurrentHashMap<Object,ResourceInfoCheckPeriodProxy>(30);
         if (LOGGER.isLoggable(Level.FINE)) {
             LOGGER.log(Level.FINE,
                        "ResourceCache constructed for {0}.  Check period is {1} minutes.",
@@ -112,10 +117,11 @@ public class ResourceCache {
      *
      * @param info resource metadata
      *
+     * @param contracts the contracts
      * @return previous value associated with specified key, or null
      *  if there was no mapping for key
      */
-    public ResourceInfo add(ResourceInfo info) {
+    public ResourceInfo add(ResourceInfo info, List<String> contracts) {
 
         Util.notNull("info", info);
 
@@ -128,6 +134,7 @@ public class ResourceCache {
               resourceCache.putIfAbsent(info.name,
                                         info.libraryName,
                                         info.localePrefix,
+                                        contracts,
                                         new ResourceInfoCheckPeriodProxy(info, checkPeriod));
         return ((proxy != null) ? proxy.getResourceInfo() : null);
 
@@ -138,17 +145,18 @@ public class ResourceCache {
      * @param name the resource name
      * @param libraryName the library name
      * @param localePrefix the locale prefix
+     * @param contracts the contracts
      * @return the {@link ResourceInfo} associated with <code>key<code>
      *  if any.
      */
-    public ResourceInfo get(String name, String libraryName, String localePrefix) {
+    public ResourceInfo get(String name, String libraryName, String localePrefix, List<String> contracts) {
 
         Util.notNull("name", name);
 
         ResourceInfoCheckPeriodProxy proxy =
-              resourceCache.get(name, libraryName, localePrefix);
+              resourceCache.get(name, libraryName, localePrefix, contracts);
         if (proxy != null && proxy.needsRefreshed()) {
-            resourceCache.remove(name, libraryName, localePrefix);
+            resourceCache.remove(name, libraryName, localePrefix, contracts);
             return null;
         } else {
             return ((proxy != null) ? proxy.getResourceInfo() : null);
@@ -212,15 +220,11 @@ public class ResourceCache {
                                             long checkPeriod) {
 
             this.resourceInfo = resourceInfo;
-            if (checkPeriod != -1L) {
-                if (!(resourceInfo.getHelper() instanceof ClasspathResourceHelper)) {
-                    checkTime = System.currentTimeMillis() + checkPeriod;
-                }
+            if (checkPeriod != -1L && (!(resourceInfo.getHelper() instanceof ClasspathResourceHelper))) {
+                checkTime = System.currentTimeMillis() + checkPeriod;
             }
-
         }
 
-
         private boolean needsRefreshed() {
 
             return (checkTime != null
diff --git a/jsf-ri/src/main/java/com/sun/faces/application/resource/ResourceHandlerImpl.java b/jsf-ri/src/main/java/com/sun/faces/application/resource/ResourceHandlerImpl.java
index 46736f8..62733e0 100644
--- a/jsf-ri/src/main/java/com/sun/faces/application/resource/ResourceHandlerImpl.java
+++ b/jsf-ri/src/main/java/com/sun/faces/application/resource/ResourceHandlerImpl.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -34,7 +38,6 @@
  * holder.
  */
 
-
 package com.sun.faces.application.resource;
 
 import com.sun.faces.application.ApplicationAssociate;
@@ -89,7 +92,7 @@ public class ResourceHandlerImpl extends ResourceHandler {
         webconfig = WebConfiguration.getInstance();
         ExternalContext extContext = FacesContext.getCurrentInstance().getExternalContext();
         manager = ApplicationAssociate.getInstance(extContext).getResourceManager();
-        initExclusions();
+        initExclusions(extContext.getApplicationMap());
         initMaxAge();
 
     }
@@ -109,6 +112,64 @@ public class ResourceHandlerImpl extends ResourceHandler {
 
     }
 
+    @Override
+    public Resource createViewResource(FacesContext facesContext, String resourceName) {
+
+        Util.notNull("resourceName", resourceName);
+
+        boolean development = facesContext.isProjectStage(ProjectStage.Development);
+
+        String ctype = getContentType(facesContext, resourceName);
+        ResourceInfo info = manager.findResource(null,
+                                                 resourceName,
+                                                 ctype,
+                                                 true,
+                                                 facesContext);
+        if (info == null) {
+            // prevent message from being when we're dealing with
+            // groovy is present and Application.createComponent()
+            // tries to resolve a .groovy file as backing UIComponent.
+            if (!development && "application/x-groovy".equals(ctype)) {
+                return null;
+            }
+            logMissingResource(facesContext, resourceName, null, null);
+            return null;
+        } else {
+            return new ResourceImpl(info, ctype, creationTime, maxAge);
+        }
+    }
+    
+    
+
+    /**
+     * @see ResourceHandler#createResourceFromId(String)
+     */
+    @Override
+    public Resource createResourceFromId(String resourceId) {
+        Util.notNull("resourceId", resourceId);
+        FacesContext ctx = FacesContext.getCurrentInstance();
+
+        boolean development = ctx.isProjectStage(ProjectStage.Development);
+        
+        ResourceInfo info = manager.findResource(resourceId);
+        String ctype = getContentType(ctx, resourceId);
+        if (info == null) {
+            // prevent message from being when we're dealing with
+            // groovy is present and Application.createComponent()
+            // tries to resolve a .groovy file as backing UIComponent.
+            if (!development && "application/x-groovy".equals(ctype)) {
+                return null;
+            }
+            logMissingResource(ctx, resourceId, null);
+            return null;
+        } else {
+            return new ResourceImpl(info, ctype, creationTime, maxAge);
+        }
+        
+    }
+    
+    
+
 
     /**
      * @see ResourceHandler#createResource(String, String)
@@ -163,7 +224,12 @@ public class ResourceHandlerImpl extends ResourceHandler {
             return false;
         }
         FacesContext context = FacesContext.getCurrentInstance();
-        LibraryInfo info = manager.findLibrary(libraryName, null, context);
+        // PENDING(fcaputo) do we need to iterate over the contracts here? I don't think so.
+        LibraryInfo info = manager.findLibrary(libraryName, null, null, context);
+        if (null == info) {
+            info = manager.findLibraryOnClasspathWithZipDirectoryEntryScan(libraryName, null, null, context, true);
+
+        }
         return (info != null);
 
     }
@@ -242,7 +308,10 @@ public class ResourceHandlerImpl extends ResourceHandler {
             assert(resourceName != null);
             libraryName = context.getExternalContext().getRequestParameterMap()
                   .get("ln");
-            resource = context.getApplication().getResourceHandler().createResource(resourceName, libraryName);
+            
+            if ((libraryName != null && !(libraryName.charAt(0) == '.')) || libraryName == null) {
+                resource = context.getApplication().getResourceHandler().createResource(resourceName, libraryName);
+            }
         }
 
         if (resource != null) {
@@ -281,13 +350,19 @@ public class ResourceHandlerImpl extends ResourceHandler {
 
                     }
 
-                    extContext.setResponseContentLength(size);
+                    if (!extContext.isResponseCommitted()) {
+                        extContext.setResponseContentLength(size);
+                    }
 
                 } catch (IOException ioe) {
                     send404(context, resourceName, libraryName, ioe, true);
                 } finally {
                     if (out != null) {
-                        out.close();
+                        try {
+                            out.close();
+                        } catch (IOException ignored) {
+                            // Maybe log a warning here?
+                        }
                     }
                     if (resourceChannel != null) {
                         resourceChannel.close();
@@ -428,6 +503,38 @@ public class ResourceHandlerImpl extends ResourceHandler {
 
     }
 
+    /**
+     * Log a message indicating a particular resource (reference by name and/or
+     * library) could not be found.  If this was due to an exception, the exception
+     * provided will be logged as well.
+     *
+     * @param ctx the {@link FacesContext} for the current request
+     * @param resourceName the resource name
+     * @param libraryName the resource library
+     * @param t the exception caught when attempting to find the resource
+     */
+    private void logMissingResource(FacesContext ctx,
+                                    String resourceId,
+                                    Throwable t) {
+
+        Level level;
+        if (!ctx.isProjectStage(ProjectStage.Production)) {
+            level = Level.WARNING;
+        } else {
+            level = ((t != null) ? Level.WARNING : Level.FINE);
+        }
+
+        if (LOGGER.isLoggable(level)) {
+                LOGGER.log(level,
+                           "jsf.application.resource.unable_to_serve",
+                           new Object[]{resourceId});
+                if (t != null) {
+                    LOGGER.log(level, "", t);
+                }
+        }
+
+    }
+
 
     /**
      * @param resourceName the resource of interest.  The resourceName in question
@@ -499,11 +606,11 @@ public class ResourceHandlerImpl extends ResourceHandler {
      * <ul>
      * will be used.
      */
-    private void initExclusions() {
+    private void initExclusions(Map<String, Object> appMap) {
 
         String excludesParam = webconfig
               .getOptionValue(ResourceExcludes);
-        String[] patterns = Util.split(excludesParam, " ");
+        String[] patterns = Util.split(appMap, excludesParam, " ");
         excludePatterns = new ArrayList<Pattern>(patterns.length);
         for (String pattern : patterns) {
             excludePatterns.add(Pattern.compile(".*\\" + pattern));
diff --git a/jsf-ri/src/main/java/com/sun/faces/application/resource/ResourceHelper.java b/jsf-ri/src/main/java/com/sun/faces/application/resource/ResourceHelper.java
index 69e1e62..c0f1043 100644
--- a/jsf-ri/src/main/java/com/sun/faces/application/resource/ResourceHelper.java
+++ b/jsf-ri/src/main/java/com/sun/faces/application/resource/ResourceHelper.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -48,10 +52,11 @@ import java.io.ByteArrayInputStream;
 import java.net.URL;
 import java.net.URLConnection;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.List;
-import java.util.Arrays;
+import java.util.Map;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 import java.util.regex.Pattern;
@@ -131,6 +136,15 @@ public abstract class ResourceHelper {
      * @return the base path in which resources will be stored
      */
     public abstract String getBaseResourcePath();
+    
+    public abstract String getBaseContractsPath();
+
+    protected String getBasePath(String contract) {
+        if(contract == null) {
+            return getBaseResourcePath();
+        }
+        return getBaseContractsPath() + '/' + contract;
+    }
 
 
     /**
@@ -144,29 +158,59 @@ public abstract class ResourceHelper {
      * to the compressed content, log the exception, and instead try to return
      * a stream to the original content.
      * </p>
-     * @param resource the resource to obtain an InputStream to
+     * @param toStream the resource to obtain an InputStream to
      * @param ctx the {@link javax.faces.context.FacesContext} for the current request
      * @return an <code>InputStream</code> to the resource, or
      *  <code>null</code> if no resource is found
      * @throws IOException if an error occurs obtaining the stream
      */
-    public InputStream getInputStream(ResourceInfo resource, FacesContext ctx)
+    public InputStream getInputStream(ResourceInfo toStream, FacesContext ctx)
     throws IOException {
 
+        // PENDING(edburns): this is a sub-optimal implementation choice
+        // done in the interest of prototyping.  It's never a good idea 
+        // to do a switch statement based on the type of an object.
+        
+        InputStream in = null;
+        
+        if (toStream instanceof ClientResourceInfo) {
+            ClientResourceInfo resource = (ClientResourceInfo) toStream;
+        
+            in = getInputStreamFromClientInfo(resource, ctx);
+            if (null == in) {
+                ClientResourceInfo resourceWithoutLocalePrefix = 
+                        new ClientResourceInfo(resource, false);
+                in = getInputStreamFromClientInfo(resourceWithoutLocalePrefix, ctx);
+                if (null != in) {
+                    resource.copy(resourceWithoutLocalePrefix);
+                }
+            }
+        
+        } 
+//        else {
+//            // PENDING(edburns): get the input stream from the facelet ResourceInfo.
+//        }
+        return in;
+
+    }
+    
+    private InputStream getInputStreamFromClientInfo(ClientResourceInfo resource,
+            FacesContext ctx) throws IOException {
         InputStream in = null;
+        
         if (resource.isCompressable() && clientAcceptsCompression(ctx)) {
             if (!resource.supportsEL()) {
                 try {
                     String path = resource.getCompressedPath();
                     in = new BufferedInputStream(
-                             new FileInputStream(path
-                                                    + File.separatorChar
-                                                    + COMPRESSED_CONTENT_FILENAME));
+                            new FileInputStream(path
+                            + File.separatorChar
+                            + COMPRESSED_CONTENT_FILENAME));
                 } catch (IOException ioe) {
                     if (LOGGER.isLoggable(Level.SEVERE)) {
                         LOGGER.log(Level.SEVERE,
-                                   ioe.getMessage(),
-                                   ioe);
+                                ioe.getMessage(),
+                                ioe);
                     }
                     // return null so that the override code will try to serve
                     // the non-compressed content
@@ -177,10 +221,10 @@ public abstract class ResourceHelper {
                 try {
                     // using dynamic compression here
                     temp = new BufferedInputStream(
-                             new ELEvaluatingInputStream(ctx,
-                                                         resource,
-                                                         getNonCompressedInputStream(resource,
-                                                                                     ctx)));
+                            new ELEvaluatingInputStream(ctx,
+                                    resource,
+                                    getNonCompressedInputStream(resource,
+                            ctx)));
                     byte[] buf = new byte[512];
                     ByteArrayOutputStream baos = new ByteArrayOutputStream(512);
                     OutputStream out = new GZIPOutputStream(baos);
@@ -190,38 +234,40 @@ public abstract class ResourceHelper {
                     out.flush();
                     out.close();
                     in = new BufferedInputStream(
-                          new ByteArrayInputStream(baos.toByteArray()));
-
+                            new ByteArrayInputStream(baos.toByteArray()));
+                    
                 } catch (IOException ioe) {
                     if (LOGGER.isLoggable(Level.SEVERE)) {
                         LOGGER.log(Level.SEVERE,
-                                   ioe.getMessage(),
-                                   ioe);
+                                ioe.getMessage(),
+                                ioe);
                     }
                 } finally {
                     if (temp != null) {
                         try {
                             temp.close();
                         } catch (IOException ioe) {
-                            // ignore
+                            if (LOGGER.isLoggable(Level.FINEST)) {
+                                LOGGER.log(Level.FINEST, "Closing stream", ioe);
+                            }
                         }
                     }
                 }
             }
         }
+        
         if (in == null) {
             if (resource.supportsEL()) {
                 return new BufferedInputStream(
-                           new ELEvaluatingInputStream(ctx,
-                                                       resource,
-                                                       getNonCompressedInputStream(resource,
-                                                                                   ctx)));
+                        new ELEvaluatingInputStream(ctx,
+                                resource,
+                                getNonCompressedInputStream(resource,
+                        ctx)));
             } else {
                 in = getNonCompressedInputStream(resource, ctx);
             }
         }
         return in;
-
     }
 
 
@@ -237,16 +283,17 @@ public abstract class ResourceHelper {
     /**
      * Search for the specified library/localPrefix combination in an
      * implementation dependent manner.
+     *
      * @param libraryName the name of the library
      * @param localePrefix the logicial identifier for a locale specific library.
      *  if no localePrefix is configured, pass <code>null</code>
-     * @param ctx the {@link FacesContext} for the current request
-     * @return a {@link LibraryInfo} if a matching library based off the inputs
+     * @param contract the name of the contract
+     *@param ctx the {@link javax.faces.context.FacesContext} for the current request  @return a {@link LibraryInfo} if a matching library based off the inputs
      *  can be found, otherwise returns <code>null</code>
      */
     public abstract LibraryInfo findLibrary(String libraryName,
                                             String localePrefix,
-                                            FacesContext ctx);
+                                            String contract, FacesContext ctx);
 
 
     /**
@@ -255,7 +302,7 @@ public abstract class ResourceHelper {
      * combination in an implementation dependent manner.
      * </p>
      * <p>
-     * If the resource is found, and is compressable, call {@link #handleCompression(ResourceInfo)}
+     * If the resource is found, and is compressable, call {@link #handleCompression(com.sun.faces.application.resource.ClientResourceInfo)}
      * to compress the content.
      * </p>
      *
@@ -296,25 +343,7 @@ public abstract class ResourceHelper {
         if (url == null) {
             return 0;
         }
-        long ret;
-        InputStream input = null;
-        try {
-            URLConnection con = url.openConnection();
-            con.setUseCaches(false);
-            con.connect();
-            input = con.getInputStream();
-            ret = con.getLastModified();
-        } catch (IOException ioe) {
-            ret = 0;
-        } finally {
-            if (input != null) {
-                try {
-                    input.close();
-                } catch (IOException ignored) { }
-            }
-        }
-
-        return ((ret >= 0) ? ret : 0);
+        return Util.getLastModified(url);
 
     }
 
@@ -377,14 +406,14 @@ public abstract class ResourceHelper {
 
     /**
      * Utility method to compress the content of the original resource
-     * to the temporary directory specified by {@link com.sun.faces.application.resource.ResourceInfo#getCompressedPath()}.
+     * to the temporary directory specified by {@link com.sun.faces.application.resource.ClientResourceInfo#getCompressedPath()}.
      *
      * @param info the resource to be compressed
      * @return <code>true</code> if compression succeeded <em>and</em> the compressed
      *  result is smaller than the original content, otherwise <code>false</code>
      * @throws IOException if any error occur reading/writing
      */
-    protected boolean compressContent(ResourceInfo info)
+    protected boolean compressContent(ClientResourceInfo info)
     throws IOException {
 
         InputStream source = null;
@@ -407,7 +436,11 @@ public abstract class ResourceHelper {
             dest.flush();
             try {
                 dest.close();
-            } catch (IOException ignored) { }
+            } catch (IOException ioe) { 
+                if (LOGGER.isLoggable(Level.FINEST)) {
+                    LOGGER.log(Level.FINEST, "Closing stream", ioe);
+                }
+            }
 
             if (baos.size() < totalRead) {
                 String outputFile = info.getCompressedPath()
@@ -423,15 +456,22 @@ public abstract class ResourceHelper {
             if (source != null) {
                 try {
                     source.close();
-                } catch (IOException ignored) { }
+                } catch (IOException ioe) { 
+                    if (LOGGER.isLoggable(Level.FINEST)) {
+                        LOGGER.log(Level.FINEST, "Closing stream", ioe);
+                    }
+                }
             }
             if (dest != null) {
                 try {
                     dest.close();
-                } catch (IOException ignored) { }
+                } catch (IOException ioe) { 
+                    if (LOGGER.isLoggable(Level.FINEST)) {
+                        LOGGER.log(Level.FINEST, "Closing stream", ioe);
+                    }
+                }
             }
         }
-
     }
 
 
@@ -514,7 +554,7 @@ public abstract class ResourceHelper {
      *  was successful, this should be the same instance.  If compression was
      *  not successful, it will be a different instance than what was passed.
      */
-    protected ResourceInfo handleCompression(ResourceInfo resource) {
+    protected ClientResourceInfo handleCompression(ClientResourceInfo resource) {
 
         try {
             if (!resource.supportsEL() && !compressContent(resource)) {
@@ -533,25 +573,42 @@ public abstract class ResourceHelper {
     }
 
 
-    protected boolean resourceSupportsEL(String resourceName, FacesContext ctx) {
+    protected boolean resourceSupportsEL(String resourceName, String libraryName, FacesContext ctx) {
 
         ExternalContext extContext = ctx.getExternalContext();
         String contentType = extContext.getMimeType(resourceName);
-        return (contentType != null
-                   && (Arrays.binarySearch(EL_CONTENT_TYPES, contentType) >= 0));
+        boolean result = (contentType != null
+                   && (Arrays.binarySearch(EL_CONTENT_TYPES, contentType) >= 0)) ||
+                (null != resourceName && null != libraryName && 
+                "javax.faces".equals(libraryName) && "jsf.js".equals(resourceName));
+        return result;
 
     }
-
     
+    /**
+     * @param s input String
+     * @return the String without a leading slash if it has one.
+     */
+    protected String trimLeadingSlash(String s) {
+
+        if (s.charAt(0) == '/') {
+            return s.substring(1);
+        } else {
+            return s;
+        }
+
+    }
+
     // --------------------------------------------------------- Private Methods
 
 
-    private ResourceInfo rebuildAsNonCompressed(ResourceInfo resource) {
+    private ClientResourceInfo rebuildAsNonCompressed(ClientResourceInfo resource) {
 
         LibraryInfo library = resource.getLibraryInfo();
-        ResourceInfo ret;
+        ClientResourceInfo ret;
         if (library != null) {
-            ret = new ResourceInfo(resource.library,
+            ret = new ClientResourceInfo(resource.library,
+                                   resource.contract,
                                    resource.name,
                                    resource.version,
                                    false,
@@ -559,7 +616,8 @@ public abstract class ResourceHelper {
                                    resource.isDevStage,
                                    resource.cacheTimestamp);
         } else {
-            ret = new ResourceInfo(resource.name,
+            ret = new ClientResourceInfo(resource.contract, 
+                                   resource.name,
                                    resource.version,
                                    resource.localePrefix,
                                    this,
@@ -583,7 +641,8 @@ public abstract class ResourceHelper {
      */
     private VersionInfo getVersion(String pathElement, boolean isResource) {
 
-        String[] pathElements = Util.split(pathElement, "/");
+        Map<String, Object> appMap = FacesContext.getCurrentInstance().getExternalContext().getApplicationMap();
+        String[] pathElements = Util.split(appMap, pathElement, "/");
         String path = pathElements[pathElements.length - 1];
 
         String extension = null;
@@ -611,15 +670,16 @@ public abstract class ResourceHelper {
         private boolean failedExpressionTest = false;
         private boolean writingExpression = false;
         private InputStream inner;
-        private ResourceInfo info;
+        private ClientResourceInfo info;
         private FacesContext ctx;
         private boolean expressionEvaluated;
+        private boolean endOfStreamReached;
 
         // ---------------------------------------------------- Constructors
 
 
         public ELEvaluatingInputStream(FacesContext ctx,
-                                       ResourceInfo info,
+                                       ClientResourceInfo info,
                                        InputStream inner) {
 
             this.inner = inner;
@@ -634,6 +694,10 @@ public abstract class ResourceHelper {
 
         @Override
         public int read() throws IOException {
+            if (null == inner) {
+                return -1;
+            }
+            
             int i;
             char c;
 
@@ -678,6 +742,10 @@ public abstract class ResourceHelper {
                 }
             }
 
+            if (i == -1) {
+                endOfStreamReached = true;
+            }
+
             return i;
         }
 
@@ -724,7 +792,9 @@ public abstract class ResourceHelper {
                                                            expressionBody);
                     throw new ELException(message);
                 }
-                String[] parts = Util.split(expressionBody, ":");
+                Map<String, Object> appMap = FacesContext.getCurrentInstance().getExternalContext().getApplicationMap();
+
+                String[] parts = Util.split(appMap, expressionBody, ":");
                 if (null == parts[0] || null == parts[1]) {
                     String message =
                           MessageUtils
@@ -738,7 +808,15 @@ public abstract class ResourceHelper {
                     char quoteMark = parts[0].charAt(mark - 1);
                     parts[0] = parts[0].substring(mark, colon);
                     if (parts[0].equals("this")) {
-                        parts[0] = info.getLibraryInfo().getName();
+                        LibraryInfo libInfo = info.getLibraryInfo();
+                        if (null != libInfo) {
+                            parts[0] = libInfo.getName();
+                        } else if (null != info.getContract()) {
+                            parts[0] = info.getContract();
+                        } else {
+                            throw new NullPointerException("Resource expression is not a library or resource library contract");
+                        }
+                        
                         mark = parts[1].indexOf("]") - 1;
                         parts[1] = parts[1].substring(0, mark);
                         expressionBody = "resource[" + quoteMark + parts[0] +
@@ -772,7 +850,7 @@ public abstract class ResourceHelper {
         @Override
         public void close() throws IOException {
 
-            if (!expressionEvaluated) {
+            if (endOfStreamReached && !expressionEvaluated) {
                 info.disableEL();
             }
             inner.close();
diff --git a/jsf-ri/src/main/java/com/sun/faces/application/resource/ResourceImpl.java b/jsf-ri/src/main/java/com/sun/faces/application/resource/ResourceImpl.java
index 3268615..f5d82b7 100644
--- a/jsf-ri/src/main/java/com/sun/faces/application/resource/ResourceImpl.java
+++ b/jsf-ri/src/main/java/com/sun/faces/application/resource/ResourceImpl.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -170,7 +174,7 @@ public class ResourceImpl extends Resource implements Externalizable {
      * @see javax.faces.application.Resource#getInputStream()
      */
     public InputStream getInputStream() throws IOException {
-
+		initResourceInfo();
         return resourceInfo.getHelper().getInputStream(resourceInfo,
                                                        FacesContext.getCurrentInstance());
 
@@ -225,7 +229,7 @@ public class ResourceImpl extends Resource implements Externalizable {
                 conn.setUseCaches(false);
                 conn.connect();
                 in = conn.getInputStream();
-                long lastModified = conn.getLastModified();
+                long lastModified = Util.getLastModified(url);
                 long contentLength = conn.getContentLength();
                 if (lastModified == 0) {
                     lastModified = initialTime;
@@ -238,12 +242,19 @@ public class ResourceImpl extends Resource implements Externalizable {
                                     + lastModified
                                     + '"');
                 }
-            } catch (IOException ignored) {
+            } catch (IOException ioe) { 
+                if (LOGGER.isLoggable(Level.FINEST)) {
+                    LOGGER.log(Level.FINEST, "Closing stream", ioe);
+                }
             } finally {
                 if (in != null) {
                     try {
                         in.close();
-                    } catch (IOException ignored) { }
+                    } catch (IOException ioe) { 
+                        if (LOGGER.isLoggable(Level.FINEST)) {
+                            LOGGER.log(Level.FINEST, "Closing stream", ioe);
+                        }
+                    }
                 }
             }
             return responseHeaders;
@@ -276,6 +287,7 @@ public class ResourceImpl extends Resource implements Externalizable {
             uri += "?ln=" + getLibraryName();
         }
         String version = "";
+        initResourceInfo();
         if (resourceInfo.getLibraryInfo() != null && resourceInfo.getLibraryInfo().getVersion() != null) {
             version += resourceInfo.getLibraryInfo().getVersion().toString();
         }
@@ -291,6 +303,13 @@ public class ResourceImpl extends Resource implements Externalizable {
             uri += ((queryStarted) ? "&loc=" : "?loc=") + localePrefix;
             queryStarted = true;
         }
+        
+        String contract = resourceInfo.getContract();
+        if (contract != null) {
+            uri += ((queryStarted) ? "&con=" : "?con=") + contract;
+            queryStarted = true;
+        }
+        
         if ("jsf.js".equals(getResourceName()) && "javax.faces".equals(getLibraryName())) {
             ProjectStage stage = context.getApplication().getProjectStage();
             switch (stage) {
@@ -321,6 +340,14 @@ public class ResourceImpl extends Resource implements Externalizable {
      * @see javax.faces.application.Resource#userAgentNeedsUpdate(javax.faces.context.FacesContext)
      */
     public boolean userAgentNeedsUpdate(FacesContext context) {
+        
+        // PENDING(edburns): this is a sub-optimal implementation choice
+        // done in the interest of prototyping.  It's never a good idea 
+        // to do a switch statement based on the type of an object.
+        
+        if (resourceInfo instanceof FaceletResourceInfo) {
+            return true;
+        }
 
         // http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html
         // 14.25 If-Modified-Since
@@ -337,9 +364,20 @@ public class ResourceImpl extends Resource implements Externalizable {
               context.getExternalContext().getRequestHeaderMap();
 
         if (requestHeaders.containsKey(IF_MODIFIED_SINCE)) {
-            long lastModifiedOfResource = resourceInfo.getLastModified(context);
+            initResourceInfo();
+            /*
+             * Make sure that we strip the milliseconds out of what comes back
+             * from the getLastModified call for a resource as the 
+             * 'If-Modified-Since' header does not use milliseconds.
+             */
+            long lastModifiedOfResource = (((ClientResourceInfo)resourceInfo).getLastModified(context) / 1000) * 1000;
             long lastModifiedHeader = getIfModifiedHeader(context.getExternalContext());
-            return lastModifiedOfResource > lastModifiedHeader;
+            if (0 == lastModifiedOfResource) {
+                long startupTime = ApplicationAssociate.getInstance(context.getExternalContext()).getTimeOfInstantiation();
+                return startupTime > lastModifiedHeader;
+            } else {
+                return lastModifiedOfResource > lastModifiedHeader;
+            }
         }
         return true;
 
@@ -407,15 +445,20 @@ public class ResourceImpl extends Resource implements Externalizable {
         setContentType((String) in.readObject());
         initialTime = in.readLong();
         maxAge = in.readLong();
+    }
 
+    private void initResourceInfo(){
+        if(resourceInfo!=null){
+            return;
+        }
         ResourceManager manager =
-              ApplicationAssociate.getInstance(FacesContext.getCurrentInstance().getExternalContext()).getResourceManager();
+                ApplicationAssociate.getInstance(FacesContext.getCurrentInstance().getExternalContext()).getResourceManager();
         resourceInfo = manager.findResource(getLibraryName(),
-                                            getResourceName(),
-                                            getContentType(),
-                                            FacesContext.getCurrentInstance());
+                getResourceName(),
+                getContentType(),
+                FacesContext.getCurrentInstance());
     }
-
+	
     // --------------------------------------------------------- Private Methods
 
 
diff --git a/jsf-ri/src/main/java/com/sun/faces/application/resource/ResourceInfo.java b/jsf-ri/src/main/java/com/sun/faces/application/resource/ResourceInfo.java
index 535688a..fe6e6d4 100644
--- a/jsf-ri/src/main/java/com/sun/faces/application/resource/ResourceInfo.java
+++ b/jsf-ri/src/main/java/com/sun/faces/application/resource/ResourceInfo.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- *
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- *
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- *
+ * 
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- *
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
  * Contributor(s):
- *
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -32,117 +36,64 @@
  * and therefore, elected the GPL Version 2 license, then the option applies
  * only if the new code is made subject to such option by the copyright
  * holder.
- */
 
+ */
 package com.sun.faces.application.resource;
 
-import java.io.File;
-import java.util.logging.Logger;
-import java.util.logging.Level;
-
-import javax.faces.context.FacesContext;
-
-import com.sun.faces.util.FacesLogger;
-
-/**
- * <p/>
- * <code>ResourceInfo</code> is a simple wrapper class for information
- * pertainant to building a complete resource path using a Library.
- * <p/>
- */
 public class ResourceInfo {
-
-    private static final Logger LOGGER = FacesLogger.RESOURCE.getLogger();
-    private static final String COMPRESSED_CONTENT_DIRECTORY =
-          "jsf-compressed";
-
-    String name;
-    String libraryName;
-    String localePrefix;
-    boolean cacheTimestamp;
-    boolean isDevStage;
-
-    VersionInfo version;
+    
     ResourceHelper helper;
     LibraryInfo library;
+    ContractInfo contract;
+    String libraryName;
+    String localePrefix;
+    String name;
     String path;
-    String compressedPath;
-    boolean compressible;
-    boolean supportsEL;
-    private volatile long lastModified = Long.MIN_VALUE;
-
+    VersionInfo version;
+    boolean doNotCache = false;
 
-    /**
-     * Constructs a new <code>ResourceInfo</code> using the specified details.
-     * The {@link ResourceHelper} of the resource will be the same as the
-     * {@link ResourceHelper} of the {@link LibraryInfo}.
-     * @param library the library containing this resource
-     * @param name the resource name
-     * @param version the version of this resource (if any)
-     * @param compressible if this resource should be compressed
-     * @param supportsEL <code>true</code> if this resource may contain
-     *   EL expressions
-     * @param isDevStage true if this context is development stage
-     * @param cacheTimestamp <code>true</code> if the modification time of the
-     *  resource should be cached.  The value of this parameter will be ignored
-     *  when {@link #isDevStage} is <code>true</code>
-     */
-    public ResourceInfo(LibraryInfo library,
-                        String name,
-                        VersionInfo version,
-                        boolean compressible,
-                        boolean supportsEL,
-                        boolean isDevStage,
-                        boolean cacheTimestamp) {
+    public ResourceInfo(LibraryInfo library, 
+            ContractInfo contract,
+            String name, 
+            VersionInfo version) {
+        this.contract = contract;
+        this.library = library;
+        this.helper = library.getHelper();
+        this.localePrefix = library.getLocalePrefix();
         this.name = name;
         this.version = version;
-        this.helper = library.getHelper();
-        this.library = library;
         this.libraryName = library.getName();
-        this.localePrefix = library.getLocalePrefix();
-        this.compressible = compressible;
-        this.supportsEL = supportsEL;
-        this.isDevStage = isDevStage;
-        this.cacheTimestamp = (!isDevStage && cacheTimestamp);
-        initPath(isDevStage);
+        
     }
-
-    /**
-     * Constructs a new <code>ResourceInfo</code> using the specified details.
-     * @param name the resource name
-     * @param version the version of the resource
-     * @param localePrefix the locale prefix for this resource (if any)
-     * @param helper helper the helper class for this resource
-     * @param compressible if this resource should be compressed
-     * @param supportsEL <code>true</code> if this resource may contain
-     *   EL expressions
-     * @param isDevStage true if this context is development stage
-     * @param cacheTimestamp <code>true</code> if the modification time of the
-     *  resource should be cached.  The value of this parameter will be ignored
-     *  when {@link #isDevStage} is <code>true</code>
-     */
-    ResourceInfo(String name,
-                 VersionInfo version,
-                 String localePrefix,
-                 ResourceHelper helper,
-                 boolean compressible,
-                 boolean supportsEL,
-                 boolean isDevStage,
-                 boolean cacheTimestamp) {
+    
+    public ResourceInfo(ContractInfo contract, String name, VersionInfo version, ResourceHelper helper) {
+        this.contract = contract;
         this.name = name;
         this.version = version;
-        this.localePrefix = localePrefix;
         this.helper = helper;
-        this.compressible = compressible;
-        this.supportsEL = supportsEL;
-        this.isDevStage = isDevStage;
-        this.cacheTimestamp = (!isDevStage && cacheTimestamp);
-        initPath(isDevStage);
     }
-
-
-    // ---------------------------------------------------------- Public Methods
-
+    
+    public ResourceInfo(ResourceInfo other, boolean copyLocalePrefix) {
+        this.helper = other.helper;
+        this.library = new LibraryInfo(other.library, copyLocalePrefix);
+        this.libraryName = library.getName();
+        if (copyLocalePrefix) {
+            this.localePrefix = other.localePrefix;
+        }
+        this.name = other.name;
+        this.path = other.path;
+        this.version = other.version;
+    }
+    
+    public void copy(ResourceInfo other) {
+        this.helper = other.helper;
+        this.library = other.library;
+        this.libraryName = other.libraryName;
+        this.localePrefix = other.localePrefix;
+        this.name = other.name;
+        this.path = other.path;
+        this.version = other.version;
+    }
 
     @Override
     public boolean equals(Object obj) {
@@ -152,11 +103,11 @@ public class ResourceInfo {
         if (getClass() != obj.getClass()) {
             return false;
         }
-        if (this == obj) {
-            return true;
-        }
         final ResourceInfo other = (ResourceInfo) obj;
-        if ((this.name == null) ? (other.name != null) : !this.name.equals(other.name)) {
+        if (this.helper != other.helper && (this.helper == null || !this.helper.equals(other.helper))) {
+            return false;
+        }
+        if (this.library != other.library && (this.library == null || !this.library.equals(other.library))) {
             return false;
         }
         if ((this.libraryName == null) ? (other.libraryName != null) : !this.libraryName.equals(other.libraryName)) {
@@ -165,13 +116,16 @@ public class ResourceInfo {
         if ((this.localePrefix == null) ? (other.localePrefix != null) : !this.localePrefix.equals(other.localePrefix)) {
             return false;
         }
-        if (this.version != other.version && (this.version == null || !this.version.equals(other.version))) {
+        if ((this.name == null) ? (other.name != null) : !this.name.equals(other.name)) {
             return false;
         }
-        if (this.library != other.library && (this.library == null || !this.library.equals(other.library))) {
+        if ((this.path == null) ? (other.path != null) : !this.path.equals(other.path)) {
             return false;
         }
-        if ((this.path == null) ? (other.path != null) : !this.path.equals(other.path)) {
+        if (this.version != other.version && (this.version == null || !this.version.equals(other.version))) {
+            return false;
+        }
+        if (this.doNotCache != other.doNotCache) {
             return false;
         }
         return true;
@@ -180,31 +134,26 @@ public class ResourceInfo {
     @Override
     public int hashCode() {
         int hash = 7;
-        hash = 97 * hash + (this.name != null ? this.name.hashCode() : 0);
-        hash = 97 * hash + (this.libraryName != null ? this.libraryName.hashCode() : 0);
-        hash = 97 * hash + (this.localePrefix != null ? this.localePrefix.hashCode() : 0);
-        hash = 97 * hash + (this.version != null ? this.version.hashCode() : 0);
-        hash = 97 * hash + (this.library != null ? this.library.hashCode() : 0);
-        hash = 97 * hash + (this.path != null ? this.path.hashCode() : 0);
+        hash = 17 * hash + (this.helper != null ? this.helper.hashCode() : 0);
+        hash = 17 * hash + (this.library != null ? this.library.hashCode() : 0);
+        hash = 17 * hash + (this.libraryName != null ? this.libraryName.hashCode() : 0);
+        hash = 17 * hash + (this.localePrefix != null ? this.localePrefix.hashCode() : 0);
+        hash = 17 * hash + (this.name != null ? this.name.hashCode() : 0);
+        hash = 17 * hash + (this.path != null ? this.path.hashCode() : 0);
+        hash = 17 * hash + (this.version != null ? this.version.hashCode() : 0);
+        hash = 17 * hash + (this.doNotCache ? 1 : 0);
         return hash;
     }
 
-    /**
-     * @return return the library name.
-     */
-    public String getName() {
-        return name;
+    public boolean isDoNotCache() {
+        return doNotCache;
     }
 
-    /**
-     * @return return the version of the resource, or <code>null</code> if the
-     *         resource isn't versioned.
-     */
-    public VersionInfo getVersion() {
-        return version;
+    public void setDoNotCache(boolean doNotCache) {
+        this.doNotCache = doNotCache;
     }
-
-   /**
+    
+    /**
      * @return return the {@link ResourceHelper} for this resource
      */
     public ResourceHelper getHelper() {
@@ -222,171 +171,34 @@ public class ResourceInfo {
      * @return the Locale prefix, if any.
      */
     public String getLocalePrefix() {
-        return localePrefix;   
-    }
-
-    /**
-     * @return the full path (including the library, if any) of the
-     *  resource.
-     */
-    public String getPath() {
-        return path;
-    }
-
-    /**
-     * @return the path to which the compressed bits for this resource
-     *  reside.  If this resource isn't compressible and this method is called,
-     *  it will return <code>null</code>
-     */
-    public String getCompressedPath() {
-        return compressedPath;
-    }
-
-    /**
-     * @return <code>true</code> if this resource should be compressed,
-     *  otherwise <code>false</code>
-     */
-    public boolean isCompressable() {
-        return compressible;
+        return localePrefix;
     }
 
     /**
-     * @return <code>true</code> if the this resource may contain EL expressions
-     *  that should be evaluated, otherwise, return <code>false</code>
-     */
-    public boolean supportsEL() {
-        return supportsEL;
-    }
-
-    /**
-     * Disables EL evaluation for this resource. 
+     * @return return the library name.
      */
-    public void disableEL() {
-        this.supportsEL = false;
+    public String getName() {
+        return name;
     }
 
     /**
-     * Returns the time this resource was last modified.
-     * If {@link com.sun.faces.config.WebConfiguration.BooleanWebContextInitParameter#CacheResourceModificationTimestamp}
-     * is true, the value will be cached for the lifetime if this <code>ResourceInfo</code>
-     * instance.
-     *
-     * @param ctx the {@link FacesContext} for the current request
-     *
-     * @return the time this resource was last modified (number of milliseconds
-     *  since January 1, 1970 GMT).
-     *
+     * @return the full path (including the library, if any) of the
+     *  resource.
      */
-    public long getLastModified(FacesContext ctx) {
-
-        if (cacheTimestamp) {
-            if (lastModified == Long.MIN_VALUE) {
-                synchronized (this) {
-                    if (lastModified == Long.MIN_VALUE) {
-                        lastModified = helper.getLastModified(this, ctx);
-                    }
-                }
-            }
-            return lastModified;
-        } else {
-            return helper.getLastModified(this, ctx);
-        }
-        
+    public String getPath() {
+        return path;
     }
-
-    @Override
-    public String toString() {
-        return "ResourceInfo{" +
-               "name='" + name + '\'' +
-               ", version=\'" + ((version != null) ? version : "NONE") + '\'' +
-               ", libraryName='" + libraryName + '\'' +
-               ", libraryVersion='" + ((library != null) ? library.getVersion() : "NONE") + '\'' +
-               ", localePrefix='" + ((localePrefix != null) ? localePrefix : "NONE") + '\'' +
-               ", path='" + path + '\'' +
-               ", compressible='" + compressible + '\'' +
-               ", compressedPath=" + compressedPath +
-               '}';
+    
+    public String getContract() {
+        return (null != contract) ? contract.toString() : null;
     }
 
-    // --------------------------------------------------------- Private Methods
-
-
     /**
-     * Create the full path to the resource.  If the resource can be compressed,
-     * setup the compressedPath ivar so that the path refers to the
-     * directory refereneced by the context attribute <code>javax.servlet.context.tempdir</code>.  
+     * @return return the version of the resource, or <code>null</code> if the
+     *         resource isn't versioned.
      */
-    private void initPath(boolean isDevStage) {
-
-        StringBuilder sb = new StringBuilder(32);
-        if (library != null) {
-            sb.append(library.getPath());
-        } else {
-            sb.append(helper.getBaseResourcePath());
-        }
-        if (library == null && localePrefix != null) {
-            sb.append('/').append(localePrefix);
-        }
-        // Specialcasing for handling jsf.js in uncompressed state
-        if (isDevStage && "javax.faces".equals(libraryName) && "jsf.js".equals(name)) {
-            sb.append('/').append("jsf-uncompressed.js");
-        } else {
-            sb.append('/').append(name);
-        }
-        if (version != null) {
-            sb.append('/').append(version.getVersion());
-            String extension = version.getExtension();
-            if (extension != null) {
-                sb.append('.').append(extension);    
-            }
-        }
-        path = sb.toString();
-
-        if (compressible && !supportsEL) { // compression for static resources
-            FacesContext ctx = FacesContext.getCurrentInstance();
-            File servletTmpDir = (File) ctx.getExternalContext()
-                  .getApplicationMap().get("javax.servlet.context.tempdir");
-            if (servletTmpDir == null || !servletTmpDir.isDirectory()) {
-                if (LOGGER.isLoggable(Level.FINE)) {
-                    LOGGER.log(Level.FINE,
-                               "File ({0}) referenced by javax.servlet.context.tempdir attribute is null, or was is not a directory.  Compression for {1} will be unavailable.",
-                               new Object[]{((servletTmpDir == null)
-                                             ? "null"
-                                             : servletTmpDir.toString()),
-                                            path});
-                }
-                compressible = false;
-            } else {
-                String tPath = ((path.charAt(0) == '/') ? path : '/' + path);
-                File newDir = new File(servletTmpDir, COMPRESSED_CONTENT_DIRECTORY
-                                                      + tPath);
-
-                try {
-                    if (!newDir.exists()) {
-                        if (newDir.mkdirs()) {
-                            compressedPath = newDir.getCanonicalPath();
-                        } else {
-                            compressible = false;
-                            if (LOGGER.isLoggable(Level.WARNING)) {
-                                LOGGER.log(Level.WARNING,
-                                           "jsf.application.resource.unable_to_create_compression_directory",
-                                           newDir.getCanonicalPath());
-                            }
-                        }
-                    } else {
-                        compressedPath = newDir.getCanonicalPath();
-                    }
-                } catch (Exception e) {
-                	if (LOGGER.isLoggable(Level.SEVERE)) {
-	                    LOGGER.log(Level.SEVERE,
-	                               e.toString(),
-	                               e);
-                	}
-                    compressible = false;
-                }
-            }
-        }
-        
+    public VersionInfo getVersion() {
+        return version;
     }
-
+    
 }
diff --git a/jsf-ri/src/main/java/com/sun/faces/application/resource/ResourceManager.java b/jsf-ri/src/main/java/com/sun/faces/application/resource/ResourceManager.java
index a1ff6f6..0587e08 100644
--- a/jsf-ri/src/main/java/com/sun/faces/application/resource/ResourceManager.java
+++ b/jsf-ri/src/main/java/com/sun/faces/application/resource/ResourceManager.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -36,11 +40,15 @@
 
 package com.sun.faces.application.resource;
 
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
 import java.util.Locale;
+import java.util.Map;
 import java.util.MissingResourceException;
 import java.util.ResourceBundle;
-import java.util.List;
-import java.util.ArrayList;
 import java.util.logging.Logger;
 import java.util.logging.Level;
 import java.util.concurrent.locks.ReentrantLock;
@@ -49,6 +57,7 @@ import java.util.regex.PatternSyntaxException;
 
 import javax.faces.application.ProjectStage;
 import javax.faces.application.ResourceHandler;
+import javax.faces.component.UIViewRoot;
 import javax.faces.context.FacesContext;
 
 import com.sun.faces.util.Util;
@@ -71,6 +80,8 @@ public class ResourceManager {
      */
     private static final Pattern CONFIG_MIMETYPE_PATTERN =
           Pattern.compile("[a-z-]*/[a-z0-9.\\*-]*");
+    
+    private ResourceHelper faceletResourceHelper = new FaceletWebappResourceHelper();
 
     /**
      * {@link ResourceHelper} used for looking up webapp-based resources.
@@ -80,7 +91,7 @@ public class ResourceManager {
     /**
      * {@link ResourceHelper} used for looking up classpath-based resources.
      */
-    private ResourceHelper classpathHelper = new ClasspathResourceHelper();
+    private ClasspathResourceHelper classpathHelper = new ClasspathResourceHelper();
 
     /**
      * Cache for storing {@link ResourceInfo} instances to reduce the cost
@@ -104,16 +115,27 @@ public class ResourceManager {
 
     // ------------------------------------------------------------ Constructors
 
+    /*
+     * This ctor is only ever called by test code.
+     */
+
+    public ResourceManager(ResourceCache cache) {
+
+        this.cache = cache;
+        Map<String, Object> throwAwayMap = new HashMap<String, Object>();
+        initCompressableTypes(throwAwayMap);
+
+    }
 
     /**
      * Constructs a new <code>ResourceManager</code>.  Note:  if the current
      * {@link ProjectStage} is {@link ProjectStage#Development} caching or
      * {@link ResourceInfo} instances will not occur.
      */
-    public ResourceManager(ResourceCache cache) {
+    public ResourceManager(Map<String, Object> appMap, ResourceCache cache) {
 
         this.cache = cache;
-        initCompressableTypes();
+        initCompressableTypes(appMap);
 
     }
 
@@ -155,23 +177,35 @@ public class ResourceManager {
                                      String contentType,
                                      FacesContext ctx) {
 
+        return findResource(libraryName, resourceName, contentType, false, ctx);
+    }
+    
+    public ResourceInfo findResource(String libraryName,
+                                     String resourceName,
+                                     String contentType,
+                                     boolean isViewResource,
+                                     FacesContext ctx) {
+        
         String localePrefix = getLocalePrefix(ctx);
+        List<String> contracts = getResourceLibraryContracts(ctx);
         ResourceInfo info =
-              getFromCache(resourceName, libraryName, localePrefix);
+              getFromCache(resourceName, libraryName, localePrefix, contracts);
         if (info == null) {
             boolean compressable = isCompressable(contentType, ctx);
             if (compressable) {
                 lock.lock();
                 try {
-                    info = getFromCache(resourceName, libraryName, localePrefix);
+                    info = getFromCache(resourceName, libraryName, localePrefix, contracts);
                     if (info == null) {
                         info = doLookup(libraryName,
                                         resourceName,
                                         localePrefix,
                                         compressable,
+                                        isViewResource,
+                                        contracts,
                                         ctx);
                         if (info != null) {
-                            addToCache(info);
+                            addToCache(info, contracts);
                         }
                     }
                 } finally {
@@ -182,9 +216,30 @@ public class ResourceManager {
                                 resourceName,
                                 localePrefix,
                                 compressable,
+                                isViewResource,
+                                contracts,
                                 ctx);
-                if (info != null) {
-                    addToCache(info);
+                
+                if (null == info && null != contracts) {
+                    // If the library name is equal to one of the contracts,
+                    // assume the resource to be found is within that contract
+                    for (String cur : contracts) {
+                        if (cur.equals(libraryName)) {
+                            libraryName = null;
+                            break;
+                        }
+                    }
+                    info = doLookup(libraryName,
+                            resourceName,
+                            localePrefix,
+                            compressable,
+                            isViewResource,
+                            contracts,
+                            ctx);
+                }
+
+                if (info != null && (!info.isDoNotCache())) {
+                    addToCache(info, contracts);
                 }
             }
 
@@ -205,8 +260,10 @@ public class ResourceManager {
      * @param resourceName the name of the resource
      * @param localePrefix the locale prefix for this resource (if any)
      * @param compressable if this resource can be compressed
+     * @param isViewResource 
+     * @param contracts the contracts to consider
      * @param ctx the {@link javax.faces.context.FacesContext} for the current
-     *  request
+*  request
      *
      * @return a {@link ResourceInfo} if a resource if found matching the
      *  provided arguments, otherwise, return <code>null</code>
@@ -215,28 +272,57 @@ public class ResourceManager {
                                   String resourceName,
                                   String localePrefix,
                                   boolean compressable,
+                                  boolean isViewResource,
+                                  List<String> contracts,
                                   FacesContext ctx) {
-        
+        // loop over the contracts as described in deriveResourceIdConsideringLocalePrefixAndContracts in the spec
         LibraryInfo library = null;
-        if (libraryName != null && !libraryName.contains("../")) {
-            library = findLibrary(libraryName, localePrefix, ctx);
+        for (String contract : contracts) {
+            ResourceInfo info = getResourceInfo(libraryName, resourceName, localePrefix, contract, compressable, isViewResource, ctx, library);
+            if(info != null) {
+                return info;
+            }
+        }
+        return getResourceInfo(libraryName, resourceName, localePrefix, null, compressable, isViewResource, ctx, library);
+
+    }
+
+    private ResourceInfo getResourceInfo(String libraryName, String resourceName, String localePrefix, String contract, boolean compressable, boolean isViewResource, FacesContext ctx, LibraryInfo library) {
+        if (libraryName != null && !nameContainsForbiddenSequence(libraryName)) {
+            library = findLibrary(libraryName, localePrefix, contract, ctx);
             if (library == null && localePrefix != null) {
                 // no localized library found.  Try to find
                 // a library that isn't localized.
-                library = findLibrary(libraryName, null, ctx);
+                library = findLibrary(libraryName, null, contract, ctx);
             }
             if (library == null) {
-                return null;
+                // If we don't have one by now, perhaps it's time to
+                // consider scanning directories.
+                library = findLibraryOnClasspathWithZipDirectoryEntryScan(libraryName, localePrefix, contract, ctx, false);
+                if (library == null && localePrefix != null) {
+                    // no localized library found.  Try to find
+                    // a library that isn't localized.
+                    library = findLibraryOnClasspathWithZipDirectoryEntryScan(libraryName, null, contract, ctx, false);
+                }
+                if (null == library) {
+                    return null;
+                }
             }
+        } else if (nameContainsForbiddenSequence(libraryName)) {
+            return null;
         }
 
         String resName = trimLeadingSlash(resourceName);
+        if (nameContainsForbiddenSequence(resName)) {
+            return null;
+        }
+
         ResourceInfo info =
-              findResource(library, resName, localePrefix, compressable, ctx);
+              findResource(library, resourceName, localePrefix, compressable, isViewResource,ctx);
         if (info == null && localePrefix != null) {
             // no localized resource found, try to find a
             // resource that isn't localized
-            info = findResource(library, resName, null, compressable, ctx);
+            info = findResource(library, resourceName, null, compressable, isViewResource, ctx);
         }
 
         // If no resource has been found so far, and we have a library that
@@ -246,9 +332,7 @@ public class ResourceManager {
         if (info == null
                 && library != null
                 && library.getHelper() instanceof WebappResourceHelper) {
-            LibraryInfo altLibrary = classpathHelper.findLibrary(libraryName,
-                                                                 localePrefix,
-                                                                 ctx);
+            LibraryInfo altLibrary = classpathHelper.findLibrary(libraryName, localePrefix, contract, ctx);
             if (altLibrary != null) {
                 VersionInfo originalVersion = library.getVersion();
                 VersionInfo altVersion = altLibrary.getVersion();
@@ -263,37 +347,78 @@ public class ResourceManager {
                 }
 
             }
-   
+
             if (library != null) {
-                info = findResource(library, resName, localePrefix, compressable, ctx);
+                info = findResource(library, resourceName, localePrefix, compressable, isViewResource, ctx);
                 if (info == null && localePrefix != null) {
                     // no localized resource found, try to find a
                     // resource that isn't localized
-                    info = findResource(library, resName, null, compressable, ctx);
+                    info = findResource(library, resourceName, null, compressable, isViewResource, ctx);
                 }
             }
 
         }
         return info;
+    }
+
+    /**
+     * @param s input String
+     * @return the String without a leading slash if it has one.
+     */
+    private String trimLeadingSlash(String s) {
+
+        if (s.charAt(0) == '/') {
+            return s.substring(1);
+        } else {
+            return s;
+        }
 
     }
+    
+    private static boolean nameContainsForbiddenSequence(String name) {
+        boolean result = false;
+        if (name != null) {
+        name = name.toLowerCase();
+
+        result = name.startsWith("./..") ||
+                 name.startsWith("..") ||
+                 name.contains("../") ||
+                 name.contains("..\\") ||
+                 name.startsWith("/") ||
+                 name.startsWith("\\") ||
+
+                 name.contains("..%2f") ||
+                 name.contains("..%5c") ||
+                 name.startsWith("%2f") ||
+                 name.startsWith("%5c") ||
+
+                 name.contains("..\\u002f") ||
+                 name.contains("..\\u005c") ||
+                 name.startsWith("\\u002f") ||
+                 name.startsWith("\\u005c")
+                 ;
+        }
+        return result;
+    }
 
 
     /**
+     *
      * @param name the resource name
      * @param library the library name
      * @param localePrefix the Locale prefix
+     * @param contracts
      * @return the {@link ResourceInfo} from the cache or <code>null</code>
      *  if no cached entry is found
      */
     private ResourceInfo getFromCache(String name,
                                       String library,
-                                      String localePrefix) {
+                                      String localePrefix, List<String> contracts) {
 
         if (cache == null) {
             return null;
         }
-        return cache.get(name, library, localePrefix);
+        return cache.get(name, library, localePrefix, contracts);
 
     }
 
@@ -301,52 +426,61 @@ public class ResourceManager {
     /**
      * Adds the the specified {@link ResourceInfo} to the cache.
      * @param info the @{link ResourceInfo} to add.
+     * @param contracts the contracts
      */
-    private void addToCache(ResourceInfo info) {
+    private void addToCache(ResourceInfo info, List<String> contracts) {
 
         if (cache == null) {
             return;
         }
-        cache.add(info);
+        cache.add(info, contracts);
 
     }
 
-
     /**
      * <p> Attempt to lookup and return a {@link LibraryInfo} based on the
      * specified <code>arguments</code>.
      * <p/>
      * <p> The lookup process will first search the file system of the web
-     * application.  If the library is not found, then it processed to
-     * searching the classpath.</p>
+     * application *within the resources directory*.  
+     * If the library is not found, then it processed to
+     * searching the classpath, if not found there, search from the webapp root
+     * *excluding* the resources directory.</p>
      * <p/>
      * <p> If a library is found, this method will return a {@link
      * LibraryInfo} instance that contains the name, version, and {@link
      * ResourceHelper}.</p>
      *
+     *
      * @param libraryName the library to find
      * @param localePrefix the prefix for the desired locale
-     * @param ctx         the {@link FacesContext} for the current request
-     *
-     * @return the Library instance for the specified library
+     * @param contract the contract to use
+     *@param ctx         the {@link javax.faces.context.FacesContext} for the current request
+     *  @return the Library instance for the specified library
      */
      LibraryInfo findLibrary(String libraryName,
                              String localePrefix,
-                             FacesContext ctx) {
+                             String contract, FacesContext ctx) {
 
-        LibraryInfo library = webappHelper.findLibrary(libraryName,
-                                                       localePrefix,
-                                                       ctx);
+        LibraryInfo library = webappHelper.findLibrary(libraryName, localePrefix, contract, ctx);
+        
         if (library == null) {
-            library = classpathHelper.findLibrary(libraryName,
-                                                  localePrefix,
-                                                  ctx);
+            library = classpathHelper.findLibrary(libraryName, localePrefix, contract, ctx);
+        }
+        
+        if (library == null) {
+            library = faceletResourceHelper.findLibrary(libraryName, localePrefix, contract, ctx);
         }
 
         // if not library is found at this point, let the caller deal with it
         return library;
     }
 
+     LibraryInfo findLibraryOnClasspathWithZipDirectoryEntryScan(String libraryName,
+                                                                 String localePrefix,
+                                                                 String contract, FacesContext ctx, boolean forceScan) {
+         return classpathHelper.findLibraryWithZipDirectoryEntryScan(libraryName, localePrefix, contract, ctx, forceScan);
+     }
 
    /**
      * <p> Attempt to lookup and return a {@link ResourceInfo} based on the
@@ -372,6 +506,7 @@ public class ResourceManager {
                                       String resourceName,
                                       String localePrefix,
                                       boolean compressable,
+                                      boolean skipToFaceletResourceHelper,
                                       FacesContext ctx) {
 
         if (library != null) {
@@ -381,22 +516,53 @@ public class ResourceManager {
                                                     compressable,
                                                     ctx);
         } else {
-            ResourceInfo resource = webappHelper.findResource(null,
-                                                              resourceName,
-                                                              localePrefix,
-                                                              compressable,
-                                                              ctx);
-            if (resource == null) {
+            ResourceInfo resource = null;
+            
+            if (!skipToFaceletResourceHelper) {
+                resource = webappHelper.findResource(null,
+                        resourceName,
+                        localePrefix,
+                        compressable,
+                        ctx);
+            }
+            if (resource == null && !skipToFaceletResourceHelper) {
                 resource = classpathHelper.findResource(null,
                                                         resourceName,
                                                         localePrefix,
                                                         compressable, 
                                                         ctx);
             }
+            if (resource == null) {
+                resource = faceletResourceHelper.findResource(library, 
+                    resourceName, 
+                    localePrefix, 
+                    compressable, 
+                    ctx);
+            }
             return resource;
         }
 
     }
+    
+    ResourceInfo findResource(String resourceId) {
+        // PENDING(fcaputo) do we need to handle contracts here?
+        String libraryName = null;
+        String resourceName = null;
+        int end = 0, start = 0;
+        if (-1 != (end = resourceId.lastIndexOf("/"))) {
+            resourceName = resourceId.substring(end+1);
+            if (-1 != (start = resourceId.lastIndexOf("/", end - 1))) {
+                libraryName = resourceId.substring(start+1, end);
+            } else {
+                libraryName = resourceId.substring(0, end);
+            }
+        }
+        FacesContext context = FacesContext.getCurrentInstance();
+        LibraryInfo info = this.findLibrary(libraryName, null, null, context);
+        ResourceInfo resourceInfo = this.findResource(info, resourceName, libraryName, true, false, context);
+        
+        return resourceInfo;
+    }
 
 
     /**
@@ -423,8 +589,14 @@ public class ResourceManager {
         String localePrefix = null;
         String appBundleName = context.getApplication().getMessageBundle();
         if (null != appBundleName) {
-            Locale locale = 
-                  context.getApplication().getViewHandler().calculateLocale(context);
+        	
+            Locale locale = null;
+            if (context.getViewRoot() != null) {
+                locale = context.getViewRoot().getLocale();
+            } else {
+                locale = context.getApplication().getViewHandler().calculateLocale(context);
+            }
+            
                 try {
                     ResourceBundle appBundle =
                           ResourceBundle.getBundle(appBundleName,
@@ -433,25 +605,32 @@ public class ResourceManager {
                     localePrefix =
                           appBundle
                                 .getString(ResourceHandler.LOCALE_PREFIX);
-                } catch (MissingResourceException ignored) { }
+                } catch (MissingResourceException mre) { 
+                    if (LOGGER.isLoggable(Level.FINEST)) {
+                        LOGGER.log(Level.FINEST, "Ignoring missing resource", mre);
+                    }
+                }
         }
         return localePrefix;
 
     }
 
+    private List<String> getResourceLibraryContracts(FacesContext context) {
+        UIViewRoot viewRoot = context.getViewRoot();
+        if(viewRoot == null) {
 
-    /**
-     * @param s input String
-     * @return the String without a leading slash if it has one.
-     */
-    private String trimLeadingSlash(String s) {
+            if(context.getApplication().getResourceHandler().isResourceRequest(context)) {
+                // it is a resource request. look at the parameter con=.
 
-        if (s.charAt(0) == '/') {
-            return s.substring(1);
-        } else {
-            return s;
+                String param = context.getExternalContext().getRequestParameterMap().get("con");
+                if(param != null && param.trim().length() > 0) {
+                    return Arrays.asList(param);
+                }
+            }
+            // PENDING(edburns): calculate the contracts!
+            return Collections.emptyList();
         }
-
+        return context.getResourceLibraryContracts();
     }
 
 
@@ -485,12 +664,12 @@ public class ResourceManager {
     /**
      * Init <code>compressableTypes</code> from the configuration.
      */
-    private void initCompressableTypes() {
+    private void initCompressableTypes(Map<String, Object> appMap) {
 
         WebConfiguration config = WebConfiguration.getInstance();
         String value = config.getOptionValue(WebConfiguration.WebContextInitParameter.CompressableMimeTypes);
         if (value != null && value.length() > 0) {
-            String[] values = Util.split(value, ",");
+            String[] values = Util.split(appMap, value, ",");
             if (values != null) {
                 for (String s : values) {
                     String pattern = s.trim();
diff --git a/jsf-ri/src/main/java/com/sun/faces/application/resource/VersionInfo.java b/jsf-ri/src/main/java/com/sun/faces/application/resource/VersionInfo.java
index b127074..253d3c3 100644
--- a/jsf-ri/src/main/java/com/sun/faces/application/resource/VersionInfo.java
+++ b/jsf-ri/src/main/java/com/sun/faces/application/resource/VersionInfo.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/application/resource/WebappResourceHelper.java b/jsf-ri/src/main/java/com/sun/faces/application/resource/WebappResourceHelper.java
index 1867f60..0d14cca 100644
--- a/jsf-ri/src/main/java/com/sun/faces/application/resource/WebappResourceHelper.java
+++ b/jsf-ri/src/main/java/com/sun/faces/application/resource/WebappResourceHelper.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -36,6 +40,9 @@
 
 package com.sun.faces.application.resource;
 
+import java.util.ArrayList;
+import java.util.List;
+import javax.faces.component.UIViewRoot;
 import java.io.IOException;
 import java.io.InputStream;
 import java.net.MalformedURLException;
@@ -66,7 +73,9 @@ public class WebappResourceHelper extends ResourceHelper {
 
     private static final Logger LOGGER = FacesLogger.RESOURCE.getLogger();
 
-    private static final String BASE_RESOURCE_PATH = "/resources";
+    private String BASE_RESOURCE_PATH;
+    
+    private String BASE_CONTRACTS_PATH;
 
     private boolean cacheTimestamp;
 
@@ -78,9 +87,42 @@ public class WebappResourceHelper extends ResourceHelper {
 
         WebConfiguration webconfig = WebConfiguration.getInstance();
         cacheTimestamp = webconfig.isOptionEnabled(CacheResourceModificationTimestamp);
+        BASE_RESOURCE_PATH = webconfig.getOptionValue(WebConfiguration.WebContextInitParameter.WebAppResourcesDirectory);
+        BASE_CONTRACTS_PATH = webconfig.getOptionValue(WebConfiguration.WebContextInitParameter.WebAppContractsDirectory);
 
     }
 
+    @Override
+    public boolean equals(Object obj) {
+        if (obj == null) {
+            return false;
+        }
+        if (getClass() != obj.getClass()) {
+            return false;
+        }
+        final WebappResourceHelper other = (WebappResourceHelper) obj;
+        if ((this.BASE_RESOURCE_PATH == null) ? (other.BASE_RESOURCE_PATH != null) : !this.BASE_RESOURCE_PATH.equals(other.BASE_RESOURCE_PATH)) {
+            return false;
+        }
+        if ((this.BASE_CONTRACTS_PATH == null) ? (other.BASE_CONTRACTS_PATH != null) : !this.BASE_CONTRACTS_PATH.equals(other.BASE_CONTRACTS_PATH)) {
+            return false;
+        }
+        if (this.cacheTimestamp != other.cacheTimestamp) {
+            return false;
+        }
+        return true;
+    }
+
+    @Override
+    public int hashCode() {
+        int hash = 5;
+        hash = 37 * hash + (this.BASE_RESOURCE_PATH != null ? this.BASE_RESOURCE_PATH.hashCode() : 0);
+        hash = 37 * hash + (this.BASE_CONTRACTS_PATH != null ? this.BASE_CONTRACTS_PATH.hashCode() : 0);
+        hash = 37 * hash + (this.cacheTimestamp ? 1 : 0);
+        return hash;
+    }
+
+    
 
     // --------------------------------------------- Methods from ResourceHelper
 
@@ -94,9 +136,13 @@ public class WebappResourceHelper extends ResourceHelper {
 
     }
 
-
+    @Override
+    public String getBaseContractsPath() {
+        return BASE_CONTRACTS_PATH;
+    }
+    
     /**
-     * @see ResourceHelper#getInputStream(ResourceInfo,javax.faces.context.FacesContext)
+     * @see ResourceHelper#getNonCompressedInputStream(com.sun.faces.application.resource.ResourceInfo, javax.faces.context.FacesContext) 
      */
     protected InputStream getNonCompressedInputStream(ResourceInfo resource, FacesContext ctx)
     throws IOException {
@@ -107,7 +153,7 @@ public class WebappResourceHelper extends ResourceHelper {
 
 
     /**
-     * @see ResourceHelper#getURL(ResourceInfo, javax.faces.context.FacesContext)
+     * @see ResourceHelper#getURL(com.sun.faces.application.resource.ResourceInfo, javax.faces.context.FacesContext) 
      */
     public URL getURL(ResourceInfo resource, FacesContext ctx) {
 
@@ -118,20 +164,23 @@ public class WebappResourceHelper extends ResourceHelper {
         }
 
     }
+    
+    
 
 
     /**
-     * @see ResourceHelper#findLibrary(String, String, javax.faces.context.FacesContext)
+     * @see ResourceHelper#findLibrary(String, String, String, javax.faces.context.FacesContext)
      */
     public LibraryInfo findLibrary(String libraryName,
                                    String localePrefix,
-                                   FacesContext ctx) {
+                                   String contract, FacesContext ctx) {
 
         String path;
+
         if (localePrefix == null) {
-            path = getBaseResourcePath() + '/' + libraryName;
+            path = getBasePath(contract) + '/' + libraryName;
         } else {
-            path = getBaseResourcePath()
+            path = getBasePath(contract)
                    + '/'
                    + localePrefix
                    + '/'
@@ -144,7 +193,7 @@ public class WebappResourceHelper extends ResourceHelper {
         // as non-existant and return null.
         if (resourcePaths != null && !resourcePaths.isEmpty()) {
             VersionInfo version = getVersion(resourcePaths, false);
-                return new LibraryInfo(libraryName, version, localePrefix, this);
+                return new LibraryInfo(libraryName, version, localePrefix, contract, this);
         }
 
         return null;
@@ -159,30 +208,40 @@ public class WebappResourceHelper extends ResourceHelper {
                                      String localePrefix,
                                      boolean compressable,
                                      FacesContext ctx) {
-
-        String basePath;
-        if (library != null) {
-            basePath = library.getPath() + '/' + resourceName;
-        } else {
-            if (localePrefix == null) {
-                basePath = getBaseResourcePath() + '/' + resourceName;
+        
+        resourceName = trimLeadingSlash(resourceName);
+        ContractInfo [] outContract = new ContractInfo[1];
+        outContract[0] = null;
+        
+        String basePath = findPathConsideringContracts(library, resourceName, 
+                localePrefix, outContract, ctx);
+        
+        if (null == basePath) {
+        
+            if (library != null) {
+                // PENDING(fcaputo) no need to iterate over the contracts, if we have a library
+                basePath = library.getPath(localePrefix) + '/' + resourceName;
             } else {
-                basePath = getBaseResourcePath()
-                           + '/'
-                           + localePrefix
-                           + '/'
-                           + resourceName;
+                if (localePrefix == null) {
+                    basePath = getBaseResourcePath() + '/' + resourceName;
+                } else {
+                    basePath = getBaseResourcePath()
+                            + '/'
+                            + localePrefix
+                            + '/'
+                            + resourceName;
+                }
             }
-        }
-
-        // first check to see if the resource exists, if not, return null.  Let
-        // the caller decide what to do.
-        try {
-            if (ctx.getExternalContext().getResource(basePath) == null) {
-                return null;
+            
+            // first check to see if the resource exists, if not, return null.  Let
+            // the caller decide what to do.
+            try {
+                if (ctx.getExternalContext().getResource(basePath) == null) {
+                    return null;
+                }
+            } catch (MalformedURLException e) {
+                throw new FacesException(e);
             }
-        } catch (MalformedURLException e) {
-            throw new FacesException(e);
         }
 
         // we got to hear, so we know the resource exists (either as a directory
@@ -191,52 +250,53 @@ public class WebappResourceHelper extends ResourceHelper {
               ctx.getExternalContext().getResourcePaths(basePath);
         // if getResourcePaths returns null or an empty set, this means that we have
         // a non-directory resource, therefor, this resource isn't versioned.
-        ResourceInfo value;
+        ClientResourceInfo value;
         if (resourcePaths == null || resourcePaths.size() == 0) {
             if (library != null) {
-                value = new ResourceInfo(library,
+                value = new ClientResourceInfo(library,
+                                         outContract[0],
                                          resourceName,
                                          null,
                                          compressable,
-                                         resourceSupportsEL(resourceName, ctx),
+                                         resourceSupportsEL(resourceName, library.getName(), ctx),
                                          ctx.isProjectStage(ProjectStage.Development),
                                          cacheTimestamp);
             } else {
-                value = new ResourceInfo(resourceName,
+                value = new ClientResourceInfo(outContract[0], 
+                                         resourceName,
                                          null,
                                          localePrefix,
                                          this,
                                          compressable,
-                                         resourceSupportsEL(resourceName, ctx),
+                                         resourceSupportsEL(resourceName, null, ctx),
                                          ctx.isProjectStage(ProjectStage.Development),
                                          cacheTimestamp);
             }
         } else {
             // ok, subdirectories exist, so find the latest 'version' directory
             VersionInfo version = getVersion(resourcePaths, true);
-            if (version == null) {
-                if (LOGGER.isLoggable(Level.WARNING)) {
-                    LOGGER.log(Level.WARNING,
-                               "jsf.application.resource.unable_to_determine_resource_version.",
-                               resourceName);
-                    return null;
-                }
+            if (version == null && LOGGER.isLoggable(Level.WARNING)) {
+                LOGGER.log(Level.WARNING,
+                        "jsf.application.resource.unable_to_determine_resource_version.",
+                        resourceName);
             }
             if (library != null) {
-                value = new ResourceInfo(library,
+                value = new ClientResourceInfo(library,
+                                         outContract[0],
                                          resourceName,
                                          version,
                                          compressable,
-                                         resourceSupportsEL(resourceName, ctx),
+                                         resourceSupportsEL(resourceName, library.getName(), ctx),
                                          ctx.isProjectStage(ProjectStage.Development),
                                          cacheTimestamp);
             } else {
-                value = new ResourceInfo(resourceName,
+                value = new ClientResourceInfo(outContract[0], 
+                                         resourceName,
                                          version,
                                          localePrefix,
                                          this,
                                          compressable,
-                                         resourceSupportsEL(resourceName, ctx),
+                                         resourceSupportsEL(resourceName, null, ctx),
                                          ctx.isProjectStage(ProjectStage.Development),
                                          cacheTimestamp);
             }
@@ -249,5 +309,63 @@ public class WebappResourceHelper extends ResourceHelper {
 
     }
 
+    private String findPathConsideringContracts(LibraryInfo library,
+                                     String resourceName,
+                                     String localePrefix,
+                                     ContractInfo [] outContract,
+                                     FacesContext ctx) {
+        UIViewRoot root = ctx.getViewRoot();
+        List<String> contracts = null;
+
+        if (library != null) {
+        	  contracts = new ArrayList<String>(1);
+        	  contracts.add(library.getContract());
+        } else if (root == null) {
+            String contractName = ctx.getExternalContext().getRequestParameterMap()
+                  .get("con");
+            if (null != contractName && 0 < contractName.length()) {
+                contracts = new ArrayList<String>();
+                contracts.add(contractName);
+            } else {
+                return null;
+            }
+        } else {
+        	contracts = ctx.getResourceLibraryContracts();
+        }
+
+        String basePath = null;
+        
+        for (String curContract : contracts) {
+        
+            if (library != null) {
+                // PENDING(fcaputo) no need to iterate over the contracts, if we have a library
+                basePath = library.getPath(localePrefix) + '/' + resourceName;
+            } else {
+                if (localePrefix == null) {
+                    basePath = getBaseContractsPath() + '/' + curContract + '/' + resourceName;
+                } else {
+                    basePath = getBaseContractsPath()
+                            + '/' + curContract 
+                            + '/'
+                            + localePrefix
+                            + '/'
+                            + resourceName;
+                }
+            }
+            
+            try {
+                if (ctx.getExternalContext().getResource(basePath) != null) {
+                    outContract[0] = new ContractInfo(curContract);
+                    break;
+                } else {
+                    basePath = null;
+                }
+            } catch (MalformedURLException e) {
+                throw new FacesException(e);
+            }
+        }
+            
+        return basePath;
+    }
 
 }
diff --git a/jsf-ri/src/main/java/com/sun/faces/application/resource/ZipDirectoryEntryScanner.java b/jsf-ri/src/main/java/com/sun/faces/application/resource/ZipDirectoryEntryScanner.java
new file mode 100644
index 0000000..60d75da
--- /dev/null
+++ b/jsf-ri/src/main/java/com/sun/faces/application/resource/ZipDirectoryEntryScanner.java
@@ -0,0 +1,127 @@
+
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.application.resource;
+
+import com.sun.faces.util.FacesLogger;
+import java.io.IOException;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipInputStream;
+import javax.faces.context.ExternalContext;
+import javax.faces.context.FacesContext;
+
+
+
+class ZipDirectoryEntryScanner {
+
+    private static final Logger LOGGER = FacesLogger.RESOURCE.getLogger();
+    private static final String prefix = "META-INF/resources";
+    private static final int prefixLen = prefix.length();
+    Map<String, Boolean> resourceLibraries;
+
+
+    ZipDirectoryEntryScanner() {
+        ExternalContext extContext = FacesContext.getCurrentInstance().getExternalContext();
+        Set<String> webInfLibJars = extContext.getResourcePaths("/WEB-INF/lib");
+        resourceLibraries = new ConcurrentHashMap<String, Boolean>();
+        ZipInputStream zis = null;
+        ZipEntry ze = null;
+        String entryName = null;
+        if (null != webInfLibJars) {
+            for (String cur : webInfLibJars) {
+                zis = new ZipInputStream(extContext.getResourceAsStream(cur));
+                try {
+                    while (null != (ze = zis.getNextEntry())) {
+                        entryName = ze.getName();
+                        if (entryName.startsWith(prefix) && prefixLen < entryName.length()) {
+                            entryName = entryName.substring(prefixLen + 1);
+                            if (!entryName.endsWith("/")) {
+                                // Assume this code is only reached if the zip entry
+                                // is NOT a 'directory' entry.
+                                int i = entryName.lastIndexOf("/");
+                                if (-1 != i) {
+                                    entryName = entryName.substring(0, i);
+                                    if (!resourceLibraries.containsKey(entryName)) {
+                                        resourceLibraries.put(entryName, Boolean.TRUE);
+                                    }
+                                }
+                            }
+                        }
+                    }
+
+                } catch (IOException ioe) {
+                    if (LOGGER.isLoggable(Level.SEVERE)) {
+                    LOGGER.log(Level.SEVERE, "Unable to inspect resource library " + cur, ioe);
+                    }
+                }
+            }
+        }
+
+        // remove the optional local prefix entries
+        Iterator<String> iter = resourceLibraries.keySet().iterator();
+        String cur;
+        while (iter.hasNext()) {
+            cur = iter.next();
+            if (cur.contains("/")) {
+                iter.remove();
+            }
+        }
+    }
+
+    boolean libraryExists(String libraryName, String localePrefix) {
+        boolean result = false;
+        if (null != localePrefix) {
+            result = resourceLibraries.containsKey(localePrefix + "/" + libraryName);
+        } else {
+            result = resourceLibraries.containsKey(libraryName);
+        }
+        return result;
+    }
+
+
+
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/application/view/FaceletFullStateManagementStrategy.java b/jsf-ri/src/main/java/com/sun/faces/application/view/FaceletFullStateManagementStrategy.java
new file mode 100644
index 0000000..a1955b4
--- /dev/null
+++ b/jsf-ri/src/main/java/com/sun/faces/application/view/FaceletFullStateManagementStrategy.java
@@ -0,0 +1,897 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.application.view;
+
+import com.sun.faces.context.StateContext;
+import com.sun.faces.renderkit.RenderKitUtils;
+import com.sun.faces.util.ComponentStruct;
+import com.sun.faces.util.FacesLogger;
+import com.sun.faces.util.Util;
+import java.io.Externalizable;
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+import java.util.ArrayList;
+import java.util.EnumSet;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.faces.FacesException;
+import javax.faces.application.ProjectStage;
+import javax.faces.component.NamingContainer;
+import javax.faces.component.UIComponent;
+import javax.faces.component.UIForm;
+import javax.faces.component.UIViewRoot;
+import javax.faces.component.visit.VisitCallback;
+import javax.faces.component.visit.VisitContext;
+import javax.faces.component.visit.VisitHint;
+import javax.faces.component.visit.VisitResult;
+import javax.faces.context.FacesContext;
+import javax.faces.render.ResponseStateManager;
+import javax.faces.view.StateManagementStrategy;
+import static com.sun.faces.RIConstants.DYNAMIC_ACTIONS;
+import static com.sun.faces.RIConstants.DYNAMIC_COMPONENT;
+import javax.faces.application.ViewHandler;
+import javax.faces.view.ViewDeclarationLanguage;
+
+/**
+ * A state management strategy for FSS.
+ *
+ * @author Manfred Riem (manfred.riem at oracle.com)
+ */
+public class FaceletFullStateManagementStrategy extends StateManagementStrategy {
+
+    /**
+     * Stores the logger.
+     */
+    private static final Logger LOGGER = FacesLogger.APPLICATION_VIEW.getLogger();
+    /**
+     * Stores the skip hint.
+     */
+    private static String SKIP_ITERATION_HINT = "javax.faces.visit.SKIP_ITERATION";
+    /**
+     * Stores the class map.
+     */
+    private Map<String, Class<?>> classMap;
+    /**
+     * Are we in development mode.
+     */
+    private boolean isDevelopmentMode;
+
+    /**
+     * Constructor.
+     */
+    public FaceletFullStateManagementStrategy() {
+        this(FacesContext.getCurrentInstance());
+    }
+
+    /**
+     * Constructor.
+     *
+     * @param context the Faces context.
+     */
+    public FaceletFullStateManagementStrategy(FacesContext context) {
+        isDevelopmentMode = context.isProjectStage(ProjectStage.Development);
+        classMap = new ConcurrentHashMap<String, Class<?>>(32);
+    }
+
+    /**
+     * Capture the child.
+     *
+     * @param tree the tree.
+     * @param parent the parent.
+     * @param c the component.
+     */
+    private void captureChild(List<TreeNode> tree, int parent, UIComponent c) {
+
+        if (!c.isTransient() && !c.getAttributes().containsKey(DYNAMIC_COMPONENT)) {
+            TreeNode n = new TreeNode(parent, c);
+            int pos = tree.size();
+            tree.add(n);
+            captureRest(tree, pos, c);
+        }
+    }
+
+    /**
+     * Capture the facet.
+     *
+     * @param tree the tree.
+     * @param parent the parent.
+     * @param name the facet name.
+     * @param c the component.
+     */
+    private void captureFacet(List<TreeNode> tree, int parent, String name, UIComponent c) {
+
+        if (!c.isTransient() && !c.getAttributes().containsKey(DYNAMIC_COMPONENT)) {
+            FacetNode n = new FacetNode(parent, name, c);
+            int pos = tree.size();
+            tree.add(n);
+            captureRest(tree, pos, c);
+        }
+    }
+
+    /**
+     * Capture the rest.
+     *
+     * @param tree the tree.
+     * @param pos the position.
+     * @param c the component.
+     */
+    private void captureRest(List<TreeNode> tree, int pos, UIComponent c) {
+
+        int sz = c.getChildCount();
+        if (sz > 0) {
+            List<UIComponent> child = c.getChildren();
+            for (int i = 0; i < sz; i++) {
+                captureChild(tree, pos, child.get(i));
+            }
+        }
+
+        sz = c.getFacetCount();
+        if (sz > 0) {
+            for (Map.Entry<String, UIComponent> entry : c.getFacets().entrySet()) {
+                captureFacet(tree, pos, entry.getKey(), entry.getValue());
+            }
+        }
+    }
+
+    /**
+     * Find the given component in the component tree.
+     *
+     * @param context the Faces context.
+     * @param clientId the client id of the component to find.
+     */
+    private UIComponent locateComponentByClientId(final FacesContext context, final UIComponent subTree, final String clientId) {
+        if (LOGGER.isLoggable(Level.FINEST)) {
+            LOGGER.log(Level.FINEST, "FaceletFullStateManagementStrategy.locateComponentByClientId", clientId);
+        }
+
+        final List<UIComponent> found = new ArrayList<UIComponent>();
+        UIComponent result = null;
+
+        try {
+            context.getAttributes().put(SKIP_ITERATION_HINT, true);
+            Set<VisitHint> hints = EnumSet.of(VisitHint.SKIP_ITERATION);
+
+            VisitContext visitContext = VisitContext.createVisitContext(context, null, hints);
+            subTree.visitTree(visitContext, new VisitCallback() {
+
+                public VisitResult visit(VisitContext visitContext, UIComponent component) {
+                    VisitResult result = VisitResult.ACCEPT;
+                    if (component.getClientId(visitContext.getFacesContext()).equals(clientId)) {
+                        /*
+                         * If the client id matches up we have found our match.
+                         */
+                        found.add(component);
+                        result = VisitResult.COMPLETE;
+                    } else if (component instanceof UIForm) {
+                        /*
+                         * If the component is a UIForm and it is prepending its
+                         * id then we can short circuit out of here if the the
+                         * client id of the component we are trying to find does
+                         * not begin with the id of the UIForm.
+                         */
+                        UIForm form = (UIForm) component;
+                        if (form.isPrependId() && !clientId.startsWith(form.getClientId(visitContext.getFacesContext()))) {
+                            result = VisitResult.REJECT;
+                        }
+                    } else if (component instanceof NamingContainer
+                            && !clientId.startsWith(component.getClientId(visitContext.getFacesContext()))) {
+                        /*
+                         * If the component is a naming container then assume it
+                         * is prepending its id so if our client id we are
+                         * looking for does not start with the naming container
+                         * id we can skip visiting this tree.
+                         */
+                        result = VisitResult.REJECT;
+                    }
+
+                    return result;
+                }
+            });
+        } finally {
+            context.getAttributes().remove(SKIP_ITERATION_HINT);
+        }
+
+        if (!found.isEmpty()) {
+            result = found.get(0);
+        }
+        return result;
+    }
+
+    /**
+     * Create a new component instance.
+     *
+     * @param n the tree node.
+     * @return the UI component.
+     * @throws FacesException when a serious error occurs.
+     */
+    private UIComponent newInstance(TreeNode n) throws FacesException {
+        if (LOGGER.isLoggable(Level.FINEST)) {
+            LOGGER.log(Level.FINEST, "FaceletFullStateManagementStrategy.newInstance", n.componentType);
+        }
+
+        try {
+            Class<?> t = ((classMap != null) ? classMap.get(n.componentType) : null);
+            if (t == null) {
+                t = Util.loadClass(n.componentType, n);
+                if (t != null && classMap != null) {
+                    classMap.put(n.componentType, t);
+                } else {
+                    if (!isDevelopmentMode) {
+                        throw new NullPointerException();
+                    }
+                }
+            }
+
+            assert (t != null);
+            UIComponent c = (UIComponent) t.newInstance();
+            c.setId(n.id);
+
+            return c;
+        } catch (Exception e) {
+            throw new FacesException(e);
+        }
+    }
+
+    /**
+     * Methods that takes care of pruning and re-adding an action to the dynamic
+     * action list.
+     *
+     * <p>
+     * If you remove a component, re-add it to the same parent and then remove
+     * it again, you only have to capture the FIRST remove. Similarly if you add
+     * a component, remove it, and then re-add it to the same parent you only
+     * need to capture the LAST add. </p>
+     *
+     * @param dynamicActionList the dynamic action list.
+     * @param struct the component struct to add.
+     */
+    private void pruneAndReAddToDynamicActions(List<ComponentStruct> dynamicActionList, ComponentStruct struct) {
+        if (LOGGER.isLoggable(Level.FINEST)) {
+            LOGGER.finest("FaceletFullStateManagementStrategy.pruneAndReAddToDynamicActions");
+        }
+
+        int firstIndex = dynamicActionList.indexOf(struct);
+        if (firstIndex == -1) {
+            dynamicActionList.add(struct);
+        } else {
+            int lastIndex = dynamicActionList.lastIndexOf(struct);
+            if (lastIndex == -1 || lastIndex == firstIndex) {
+                dynamicActionList.add(struct);
+            } else {
+                if (ComponentStruct.ADD.equals(struct.action)) {
+                    dynamicActionList.remove(lastIndex);
+                    dynamicActionList.remove(firstIndex);
+                    dynamicActionList.add(struct);
+                }
+                if (ComponentStruct.REMOVE.equals(struct.action)) {
+                    dynamicActionList.remove(lastIndex);
+                }
+            }
+        }
+    }
+
+    /**
+     * Restore the component state.
+     *
+     * @param context the Faces context.
+     * @param state the component state.
+     */
+    private void restoreComponentState(final FacesContext context, final HashMap<String, Object> state) {
+
+        final StateContext stateContext = StateContext.getStateContext(context);
+        final UIViewRoot viewRoot = context.getViewRoot();
+
+        try {
+            context.getAttributes().put(SKIP_ITERATION_HINT, true);
+            Set<VisitHint> hints = EnumSet.of(VisitHint.SKIP_ITERATION);
+            VisitContext visitContext = VisitContext.createVisitContext(context, null, hints);
+
+            viewRoot.visitTree(visitContext, new VisitCallback() {
+
+                public VisitResult visit(VisitContext visitContext, UIComponent component) {
+                    VisitResult result = VisitResult.ACCEPT;
+
+                    String cid = component.getClientId(context);
+                    Object stateObj = state.get(cid);
+
+                    if (stateObj != null && !stateContext.componentAddedDynamically(component)) {
+                        boolean restoreStateNow = true;
+                        if (stateObj instanceof StateHolderSaver) {
+                            restoreStateNow = !((StateHolderSaver) stateObj).componentAddedDynamically();
+                        }
+                        if (restoreStateNow) {
+                            try {
+                                component.restoreState(context, stateObj);
+                            } catch (Exception e) {
+                                throw new FacesException(e);
+                            }
+                        }
+                    }
+
+                    return result;
+                }
+            });
+        } finally {
+            context.getAttributes().remove(SKIP_ITERATION_HINT);
+        }
+    }
+
+    /**
+     * Restore the list of dynamic actions and replay them.
+     *
+     * @param context the Faces context.
+     * @param stateContext the state context.
+     * @param stateMap the state.
+     * @param viewRoot the view root.
+     */
+    private void restoreDynamicActions(FacesContext context, StateContext stateContext, HashMap<String, Object> state) {
+        if (LOGGER.isLoggable(Level.FINEST)) {
+            LOGGER.finest("FaceletFullStateManagementStrategy.restoreDynamicActions");
+        }
+
+        UIViewRoot viewRoot = context.getViewRoot();
+        List<Object> savedActions = (List<Object>) viewRoot.getAttributes().get(DYNAMIC_ACTIONS);
+        List<ComponentStruct> actions = stateContext.getDynamicActions();
+
+        if (savedActions != null && !savedActions.isEmpty()) {
+            for (Object object : savedActions) {
+                ComponentStruct action = new ComponentStruct();
+                action.restoreState(context, object);
+                if (ComponentStruct.ADD.equals(action.action)) {
+                    restoreDynamicAdd(context, state, action);
+                }
+                if (ComponentStruct.REMOVE.equals(action.action)) {
+                    restoreDynamicRemove(context, action);
+                }
+                pruneAndReAddToDynamicActions(actions, action);
+            }
+        }
+    }
+
+    /**
+     * Method that takes care of restoring a dynamic add.
+     *
+     * @param context the Faces context.
+     * @param state the state.
+     * @param struct the component struct.
+     */
+    private void restoreDynamicAdd(FacesContext context, Map<String, Object> state, ComponentStruct struct) {
+        if (LOGGER.isLoggable(Level.FINEST)) {
+            LOGGER.finest("FaceletFullStateManagementStrategy.restoreDynamicAdd");
+        }
+
+        UIComponent parent = locateComponentByClientId(context, context.getViewRoot(), struct.parentClientId);
+
+        if (parent != null) {
+            UIComponent child = locateComponentByClientId(context, parent, struct.clientId);
+
+            /*
+             * If Facelets engine restored the child before us we are going to
+             * use it, but we need to remove it before we can add it in the
+             * correct place.
+             */
+            if (child != null) {
+                if (struct.facetName == null) {
+                    parent.getChildren().remove(child);
+                } else {
+                    parent.getFacets().remove(struct.facetName);
+                }
+            }
+
+            /*
+             * The child was not build previously, so we are going to check if
+             * the component was saved in the state.
+             */
+            if (child == null) {
+                StateHolderSaver saver = (StateHolderSaver) state.get(struct.clientId);
+                if (saver != null) {
+                    child = (UIComponent) saver.restore(context);
+                }
+            }
+
+            /*
+             * Are we adding =BACK= in a component that was not in the state,
+             * because it was added by the initial buildView and removed by
+             * another dynamic action?
+             */
+            StateContext stateContext = StateContext.getStateContext(context);
+            if (child == null) {
+                child = stateContext.getDynamicComponents().get(struct.clientId);
+            }
+
+            /*
+             * Now if we have the child we are going to add it back in.
+             */
+            if (child != null) {
+                if (struct.facetName != null) {
+                    parent.getFacets().put(struct.facetName, child);
+                } else {
+                    int childIndex = -1;
+                    if (child.getAttributes().containsKey(DYNAMIC_COMPONENT)) {
+                        childIndex = (Integer) child.getAttributes().get(DYNAMIC_COMPONENT);
+                    }
+                    child.setId(struct.id);
+                    if (childIndex >= parent.getChildCount() || childIndex == -1) {
+                        parent.getChildren().add(child);
+                    } else {
+                        parent.getChildren().add(childIndex, child);
+                    }
+                    child.getClientId();
+                }
+                child.getAttributes().put(DYNAMIC_COMPONENT, child.getParent().getChildren().indexOf(child));
+                stateContext.getDynamicComponents().put(struct.clientId, child);
+            }
+        }
+    }
+
+    /**
+     * Method that takes care of restoring a dynamic remove.
+     *
+     * @param context the Faces context.
+     * @param struct the component struct.
+     */
+    private void restoreDynamicRemove(FacesContext context, ComponentStruct struct) {
+        if (LOGGER.isLoggable(Level.FINEST)) {
+            LOGGER.finest("FaceletFullStateManagementStrategy.restoreDynamicRemove");
+        }
+
+        UIComponent child = locateComponentByClientId(context, context.getViewRoot(), struct.clientId);
+        if (child != null) {
+            StateContext stateContext = StateContext.getStateContext(context);
+            stateContext.getDynamicComponents().put(struct.clientId, child);
+            UIComponent parent = child.getParent();
+            parent.getChildren().remove(child);
+        }
+    }
+
+    /**
+     * Restore the component tree.
+     *
+     * @param context the Faces context.
+     * @param renderKitId the render kit id.
+     * @param tree the saved tree.
+     * @return the view root.
+     * @throws FacesException when a serious error occurs.
+     */
+    private UIViewRoot restoreTree(FacesContext context, String renderKitId, Object[] tree) throws FacesException {
+        if (LOGGER.isLoggable(Level.FINEST)) {
+            LOGGER.log(Level.FINEST, "FaceletFullStateManagementStrategy.restoreTree", renderKitId);
+        }
+
+        UIComponent c;
+        FacetNode fn;
+        TreeNode tn;
+        for (int i = 0; i < tree.length; i++) {
+            if (tree[i] instanceof FacetNode) {
+                fn = (FacetNode) tree[i];
+                c = newInstance(fn);
+                tree[i] = c;
+                if (i != fn.parent) {
+                    ((UIComponent) tree[fn.parent]).getFacets().put(fn.facetName, c);
+                }
+
+            } else {
+                tn = (TreeNode) tree[i];
+                c = newInstance(tn);
+                tree[i] = c;
+                if (i != tn.parent) {
+                    ((UIComponent) tree[tn.parent]).getChildren().add(c);
+                } else {
+                    assert (c instanceof UIViewRoot);
+                    UIViewRoot viewRoot = (UIViewRoot) c;
+                    context.setViewRoot(viewRoot);
+                    viewRoot.setRenderKitId(renderKitId);
+                }
+            }
+        }
+
+        return (UIViewRoot) tree[0];
+    }
+
+    /**
+     * Restore the view.
+     *
+     * @param context the Faces context.
+     * @param viewId the view id.
+     * @param renderKitId the render kit id.
+     * @return the view root.
+     */
+    @Override
+    public UIViewRoot restoreView(FacesContext context, String viewId, String renderKitId) {
+        if (LOGGER.isLoggable(Level.FINEST)) {
+            LOGGER.log(Level.FINEST, "FaceletFullStateManagementStrategy.restoreView", new Object[]{viewId, renderKitId});
+        }
+
+        UIViewRoot result = null;
+
+        ResponseStateManager rsm = RenderKitUtils.getResponseStateManager(context, renderKitId);
+        Object[] state = (Object[]) rsm.getState(context, viewId);
+
+        if (state != null && state.length >= 2) {
+            /*
+             * Restore the component tree.
+             */
+            if (state[0] != null) {
+                result = restoreTree(context, renderKitId, ((Object[]) state[0]).clone());
+                context.setViewRoot(result);
+            }
+
+            if (result != null) {
+                StateContext stateContext = StateContext.getStateContext(context);
+                stateContext.startTrackViewModifications(context, result);
+                stateContext.setTrackViewModifications(false);
+
+                try {
+                    HashMap<String, Object> stateMap = (HashMap<String, Object>) state[1];
+                    if (stateMap != null) {
+                        /*
+                         * Restore the component state.
+                         */
+                        restoreComponentState(context, stateMap);
+
+                        /**
+                         * Restore the dynamic actions.
+                         */
+                        restoreDynamicActions(context, stateContext, stateMap);
+                    }
+                } finally {
+                    stateContext.setTrackViewModifications(true);
+                }
+            }
+        }
+
+        /*
+         * Make sure the library contracts get setup as well.
+         */
+        ViewHandler viewHandler = context.getApplication().getViewHandler();
+        ViewDeclarationLanguage vdl = viewHandler.getViewDeclarationLanguage(context, viewId);
+        context.setResourceLibraryContracts(vdl.calculateResourceLibraryContracts(context, viewId));
+
+        return result;
+    }
+
+    /**
+     * Save the component state.
+     *
+     * @param context the Faces context.
+     * @return the saved state.
+     */
+    private Object saveComponentState(FacesContext context) {
+
+        final HashMap<String, Object> stateMap = new HashMap<String, Object>();
+        final StateContext stateContext = StateContext.getStateContext(context);
+        final UIViewRoot viewRoot = context.getViewRoot();
+        final FacesContext finalContext = context;
+
+        context.getAttributes().put(SKIP_ITERATION_HINT, true);
+        Set<VisitHint> hints = EnumSet.of(VisitHint.SKIP_ITERATION);
+        VisitContext visitContext = VisitContext.createVisitContext(context, null, hints);
+
+        try {
+            viewRoot.visitTree(visitContext, new VisitCallback() {
+
+                public VisitResult visit(VisitContext context, UIComponent component) {
+                    VisitResult result = VisitResult.ACCEPT;
+                    Object stateObj;
+                    if (!component.isTransient()) {
+                        if (stateContext.componentAddedDynamically(component)) {
+                            component.getAttributes().put(DYNAMIC_COMPONENT, new Integer(getProperChildIndex(component)));
+                            stateObj = new StateHolderSaver(finalContext, component);
+                        } else {
+                            stateObj = component.saveState(finalContext);
+                        }
+                        if (stateObj != null) {
+                            stateMap.put(component.getClientId(finalContext), stateObj);
+                        }
+                    } else {
+                        result = VisitResult.REJECT;
+                    }
+                    return result;
+                }
+            });
+        } finally {
+            context.getAttributes().remove(SKIP_ITERATION_HINT);
+        }
+
+        return stateMap;
+    }
+
+    /**
+     * Save the dynamic actions.
+     *
+     * @param context the Faces context.
+     * @param stateContext the state context.
+     * @param stateMap the state.
+     */
+    private void saveDynamicActions(FacesContext context, StateContext stateContext, UIViewRoot viewRoot) {
+        if (LOGGER.isLoggable(Level.FINEST)) {
+            LOGGER.finest("FaceletFullStateManagementStrategy.saveDynamicActions");
+        }
+
+        List<ComponentStruct> actions = stateContext.getDynamicActions();
+        HashMap<String, UIComponent> componentMap = stateContext.getDynamicComponents();
+
+        if (actions != null) {
+            List<Object> savedActions = new ArrayList<Object>(actions.size());
+            for (ComponentStruct action : actions) {
+                UIComponent component = componentMap.get(action.clientId);
+                if (component == null && context.isProjectStage(ProjectStage.Development)) {
+                    LOGGER.log(
+                            Level.WARNING,
+                            "Unable to save dynamic action with clientId ''{0}'' because the UIComponent cannot be found",
+                            action.clientId);
+                }
+                if (component != null) {
+                    savedActions.add(action.saveState(context));
+                }
+            }
+            viewRoot.getAttributes().put(DYNAMIC_ACTIONS, savedActions);
+        }
+    }
+
+    /**
+     * Save the view.
+     *
+     * @param context the Faces context.
+     * @return the saved view.
+     */
+    @Override
+    public Object saveView(FacesContext context) {
+        if (LOGGER.isLoggable(Level.FINEST)) {
+            LOGGER.finest("FaceletFullStateManagementStrategy.saveView");
+        }
+
+        Object[] result;
+        UIViewRoot viewRoot = context.getViewRoot();
+
+        /*
+         * Check uniqueness.
+         */
+        Util.checkIdUniqueness(context, viewRoot, new HashSet<String>(viewRoot.getChildCount() << 1));
+
+        /**
+         * Save the dynamic actions.
+         */
+        StateContext stateContext = StateContext.getStateContext(context);
+        saveDynamicActions(context, stateContext, viewRoot);
+
+        /*
+         * Save the component state.
+         */
+        Object state = saveComponentState(context);
+
+        /*
+         * Save the tree structure.
+         */
+        List<TreeNode> treeList = new ArrayList<TreeNode>(32);
+        captureChild(treeList, 0, viewRoot);
+        Object[] tree = treeList.toArray();
+
+        result = new Object[]{tree, state};
+        StateContext.release(context);
+        return result;
+    }
+
+    /**
+     * Inner class used to store a facet in the saved component tree.
+     */
+    private static final class FacetNode extends TreeNode {
+
+        /**
+         * Stores the serial version UID.
+         */
+        private static final long serialVersionUID = -3777170310958005106L;
+        /**
+         * Stores the facet name.
+         */
+        public String facetName;
+
+        /**
+         * Constructor.
+         */
+        public FacetNode() {
+        }
+
+        /**
+         * Constructor.
+         *
+         * @param parent the parent.
+         * @param name the facet name.
+         * @param c the component.
+         */
+        public FacetNode(int parent, String name, UIComponent c) {
+
+            super(parent, c);
+            this.facetName = name;
+        }
+
+        /**
+         * Read the facet node in.
+         *
+         * @param in the object input.
+         * @throws IOException when an I/O error occurs.
+         * @throws ClassNotFoundException when the class could not be found.
+         */
+        @Override
+        public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
+
+            super.readExternal(in);
+            this.facetName = in.readUTF();
+
+        }
+
+        /**
+         * Write the facet node out.
+         *
+         * @param out the object output.
+         * @throws IOException when an I/O error occurs.
+         */
+        @Override
+        public void writeExternal(ObjectOutput out) throws IOException {
+
+            super.writeExternal(out);
+            out.writeUTF(this.facetName);
+
+        }
+    }
+
+    /**
+     * Inner class used to store a node in the saved component tree.
+     */
+    private static class TreeNode implements Externalizable {
+
+        /**
+         * Stores the serial version UID.
+         */
+        private static final long serialVersionUID = -835775352718473281L;
+        /**
+         * Stores the NULL_ID constant.
+         */
+        private static final String NULL_ID = "";
+        /**
+         * Stores the component type.
+         */
+        public String componentType;
+        /**
+         * Stores the id.
+         */
+        public String id;
+        /**
+         * Stores the parent.
+         */
+        public int parent;
+
+        /**
+         * Constructor.
+         */
+        public TreeNode() {
+        }
+
+        /**
+         * Constructor.
+         *
+         * @param parent the parent.
+         * @param c the component.
+         */
+        public TreeNode(int parent, UIComponent c) {
+
+            this.parent = parent;
+            this.id = c.getId();
+            this.componentType = c.getClass().getName();
+
+        }
+
+        /**
+         * Read the tree node in.
+         *
+         * @param in the object input.
+         * @throws IOException when an I/O error occurs.
+         * @throws ClassNotFoundException when the class could not be found.
+         */
+        public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
+
+            this.parent = in.readInt();
+            this.componentType = in.readUTF();
+            this.id = in.readUTF();
+            if (id.length() == 0) {
+                id = null;
+            }
+        }
+
+        /**
+         * Write the tree node out.
+         *
+         * @param out the object output.
+         * @throws IOException when an I/O error occurs.
+         */
+        public void writeExternal(ObjectOutput out) throws IOException {
+
+            out.writeInt(this.parent);
+            out.writeUTF(this.componentType);
+            if (this.id != null) {
+                out.writeUTF(this.id);
+            } else {
+                out.writeUTF(NULL_ID);
+            }
+        }
+    }
+
+    /**
+     * Helper method that determines what the index of the given child component
+     * will be taking transient siblings into account.
+     *
+     * @param component the UI component.
+     * @return the calculated index.
+     */
+    private int getProperChildIndex(UIComponent component) {
+        int result = -1;
+
+        if (component.getParent().getChildren().indexOf(component) != -1) {
+            UIComponent parent = component.getParent();
+            int index = 0;
+            Iterator<UIComponent> iterator = parent.getChildren().iterator();
+            while (iterator.hasNext()) {
+                UIComponent child = iterator.next();
+                if (child == component) {
+                    break;
+                } else {
+                    if (!child.isTransient()) {
+                        index++;
+                    }
+                }
+            }
+            if (index == 0 && !parent.getChildren().isEmpty()
+                    && parent.getChildren().get(0).isTransient()) {
+                index = -1;
+            }
+            result = index;
+        }
+
+        return result;
+    }
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/application/view/FaceletPartialStateManagementStrategy.java b/jsf-ri/src/main/java/com/sun/faces/application/view/FaceletPartialStateManagementStrategy.java
new file mode 100644
index 0000000..b401ec5
--- /dev/null
+++ b/jsf-ri/src/main/java/com/sun/faces/application/view/FaceletPartialStateManagementStrategy.java
@@ -0,0 +1,535 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.application.view;
+
+import com.sun.faces.context.StateContext;
+import com.sun.faces.renderkit.RenderKitUtils;
+import com.sun.faces.util.ComponentStruct;
+import com.sun.faces.util.FacesLogger;
+import com.sun.faces.util.MessageUtils;
+import com.sun.faces.util.Util;
+import java.util.ArrayList;
+import java.util.EnumSet;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.faces.FacesException;
+import javax.faces.component.NamingContainer;
+import javax.faces.component.UIComponent;
+import javax.faces.component.UIForm;
+import javax.faces.component.UIViewRoot;
+import javax.faces.component.visit.VisitCallback;
+import javax.faces.component.visit.VisitContext;
+import javax.faces.component.visit.VisitHint;
+import javax.faces.component.visit.VisitResult;
+import javax.faces.context.FacesContext;
+import javax.faces.render.ResponseStateManager;
+import javax.faces.view.StateManagementStrategy;
+import static com.sun.faces.RIConstants.DYNAMIC_ACTIONS;
+import static com.sun.faces.RIConstants.DYNAMIC_COMPONENT;
+import javax.faces.application.ProjectStage;
+
+/**
+ * The state management strategy for PSS.
+ *
+ * @author Manfred Riem (manfred.riem at oracle.com)
+ */
+public class FaceletPartialStateManagementStrategy extends StateManagementStrategy {
+
+    /**
+     * Stores the logger.
+     */
+    private static final Logger LOGGER = FacesLogger.APPLICATION_VIEW.getLogger();
+    /**
+     * Stores the skip hint.
+     */
+    private static String SKIP_ITERATION_HINT = "javax.faces.visit.SKIP_ITERATION";
+
+    /**
+     * Constructor.
+     */
+    public FaceletPartialStateManagementStrategy() {
+        this(FacesContext.getCurrentInstance());
+    }
+
+    /**
+     * Constructor.
+     *
+     * @param context the Faces context.
+     */
+    public FaceletPartialStateManagementStrategy(FacesContext context) {
+    }
+
+    /**
+     * Find the given component in the component tree.
+     *
+     * @param context the Faces context.
+     * @param clientId the client id of the component to find.
+     */
+    private UIComponent locateComponentByClientId(final FacesContext context, final UIComponent subTree, final String clientId) {
+        if (LOGGER.isLoggable(Level.FINEST)) {
+            LOGGER.log(Level.FINEST, "FaceletPartialStateManagementStrategy.locateComponentByClientId", clientId);
+        }
+
+        final List<UIComponent> found = new ArrayList<UIComponent>();
+        UIComponent result = null;
+
+        try {
+            context.getAttributes().put(SKIP_ITERATION_HINT, true);
+            Set<VisitHint> hints = EnumSet.of(VisitHint.SKIP_ITERATION);
+
+            VisitContext visitContext = VisitContext.createVisitContext(context, null, hints);
+            subTree.visitTree(visitContext, new VisitCallback() {
+
+                public VisitResult visit(VisitContext visitContext, UIComponent component) {
+                    VisitResult result = VisitResult.ACCEPT;
+                    if (component.getClientId(visitContext.getFacesContext()).equals(clientId)) {
+                        /*
+                         * If the client id matches up we have found our match.
+                         */
+                        found.add(component);
+                        result = VisitResult.COMPLETE;
+                    } else if (component instanceof UIForm) {
+                        /*
+                         * If the component is a UIForm and it is prepending its
+                         * id then we can short circuit out of here if the the
+                         * client id of the component we are trying to find does
+                         * not begin with the id of the UIForm.
+                         */
+                        UIForm form = (UIForm) component;
+                        if (form.isPrependId() && !clientId.startsWith(form.getClientId(visitContext.getFacesContext()))) {
+                            result = VisitResult.REJECT;
+                        }
+                    } else if (component instanceof NamingContainer &&
+                        !clientId.startsWith(component.getClientId(visitContext.getFacesContext()))) {
+                        /*
+                         * If the component is a naming container then assume it
+                         * is prepending its id so if our client id we are
+                         * looking for does not start with the naming container
+                         * id we can skip visiting this tree.
+                         */
+                        result = VisitResult.REJECT;
+                    }
+
+                    return result;
+                }
+            });
+        } finally {
+            context.getAttributes().remove(SKIP_ITERATION_HINT);
+        }
+
+        if (!found.isEmpty()) {
+            result = found.get(0);
+        }
+        return result;
+    }
+
+    /**
+     * Methods that takes care of pruning and re-adding an action to the dynamic
+     * action list.
+     *
+     * <p> If you remove a component, re-add it to the same parent and then
+     * remove it again, you only have to capture the FIRST remove. Similarly if
+     * you add a component, remove it, and then re-add it to the same parent you
+     * only need to capture the LAST add. </p>
+     *
+     * @param dynamicActionList the dynamic action list.
+     * @param struct the component struct to add.
+     */
+    private void pruneAndReAddToDynamicActions(List<ComponentStruct> dynamicActionList, ComponentStruct struct) {
+        if (LOGGER.isLoggable(Level.FINEST)) {
+            LOGGER.finest("FaceletPartialStateManagementStrategy.pruneAndReAddToDynamicActions");
+        }
+
+        int firstIndex = dynamicActionList.indexOf(struct);
+        if (firstIndex == -1) {
+            dynamicActionList.add(struct);
+        } else {
+            int lastIndex = dynamicActionList.lastIndexOf(struct);
+            if (lastIndex == -1 || lastIndex == firstIndex) {
+                dynamicActionList.add(struct);
+            } else {
+                if (ComponentStruct.ADD.equals(struct.action)) {
+                    dynamicActionList.remove(lastIndex);
+                    dynamicActionList.remove(firstIndex);
+                    dynamicActionList.add(struct);
+                }
+                if (ComponentStruct.REMOVE.equals(struct.action)) {
+                    dynamicActionList.remove(lastIndex);
+                }
+            }
+        }
+    }
+
+    /**
+     * Restore the list of dynamic actions and replay them.
+     *
+     * @param context the Faces context.
+     * @param stateContext the state context.
+     * @param stateMap the state.
+     * @param viewRoot the view root.
+     */
+    private void restoreDynamicActions(FacesContext context, StateContext stateContext, Map<String, Object> stateMap) {
+        if (LOGGER.isLoggable(Level.FINEST)) {
+            LOGGER.finest("FaceletPartialStateManagementStrategy.restoreDynamicActions");
+        }
+
+        List<Object> savedActions = (List<Object>) stateMap.get(DYNAMIC_ACTIONS);
+        List<ComponentStruct> actions = stateContext.getDynamicActions();
+
+        if (savedActions != null && !savedActions.isEmpty()) {
+            for (Object object : savedActions) {
+                ComponentStruct action = new ComponentStruct();
+                action.restoreState(context, object);
+                if (ComponentStruct.ADD.equals(action.action)) {
+                    restoreDynamicAdd(context, stateMap, action);
+                }
+                if (ComponentStruct.REMOVE.equals(action.action)) {
+                    restoreDynamicRemove(context, action);
+                }
+                pruneAndReAddToDynamicActions(actions, action);
+            }
+        }
+    }
+
+    /**
+     * Method that takes care of restoring a dynamic add.
+     *
+     * @param context the Faces context.
+     * @param state the state.
+     * @param struct the component struct.
+     */
+    private void restoreDynamicAdd(FacesContext context, Map<String, Object> state, ComponentStruct struct) {
+        if (LOGGER.isLoggable(Level.FINEST)) {
+            LOGGER.finest("FaceletPartialStateManagementStrategy.restoreDynamicAdd");
+        }
+
+        UIComponent parent = locateComponentByClientId(context, context.getViewRoot(), struct.parentClientId);
+
+        if (parent != null) {
+            UIComponent child = locateComponentByClientId(context, parent, struct.clientId);
+
+            /*
+             * If Facelets engine restored the child before us we are going to
+             * use it, but we need to remove it before we can add it in the
+             * correct place.
+             */
+            if (child != null) {
+                if (struct.facetName == null) {
+                    parent.getChildren().remove(child);
+                } else {
+                    parent.getFacets().remove(struct.facetName);
+                }
+            }
+
+            /*
+             * The child was not build previously, so we are going to check if
+             * the component was saved in the state.
+             */
+            if (child == null) {
+                StateHolderSaver saver = (StateHolderSaver) state.get(struct.clientId);
+                if (saver != null) {
+                    child = (UIComponent) saver.restore(context);
+                }
+            }
+
+            /*
+             * Are we adding =BACK= in a component that was not in the state,
+             * because it was added by the initial buildView and removed by
+             * another dynamic action?
+             */
+            StateContext stateContext = StateContext.getStateContext(context);
+            if (child == null) {
+                child = stateContext.getDynamicComponents().get(struct.clientId);
+            }
+
+            /*
+             * Now if we have the child we are going to add it back in.
+             */
+            if (child != null) {
+                if (struct.facetName != null) {
+                    parent.getFacets().put(struct.facetName, child);
+                } else {
+                    int childIndex = -1;
+                    if (child.getAttributes().containsKey(DYNAMIC_COMPONENT)) {
+                        childIndex = (Integer) child.getAttributes().get(DYNAMIC_COMPONENT);
+                    }
+                    child.setId(struct.id);
+                    if (childIndex >= parent.getChildCount() || childIndex == -1) {
+                        parent.getChildren().add(child);
+                    } else {
+                        parent.getChildren().add(childIndex, child);
+                    }
+                    child.getClientId();
+                }
+                child.getAttributes().put(DYNAMIC_COMPONENT, child.getParent().getChildren().indexOf(child));
+                stateContext.getDynamicComponents().put(struct.clientId, child);
+            }
+        }
+    }
+
+    /**
+     * Method that takes care of restoring a dynamic remove.
+     *
+     * @param context the Faces context.
+     * @param struct the component struct.
+     */
+    private void restoreDynamicRemove(FacesContext context, ComponentStruct struct) {
+        if (LOGGER.isLoggable(Level.FINEST)) {
+            LOGGER.finest("FaceletPartialStateManagementStrategy.restoreDynamicRemove");
+        }
+
+        UIComponent child = locateComponentByClientId(context, context.getViewRoot(), struct.clientId);
+        if (child != null) {
+            StateContext stateContext = StateContext.getStateContext(context);
+            stateContext.getDynamicComponents().put(struct.clientId, child);
+            UIComponent parent = child.getParent();
+            parent.getChildren().remove(child);
+        }
+    }
+
+    /**
+     * Restore the view.
+     *
+     * @param context the Faces context.
+     * @param viewId the view id.
+     * @param renderKitId the render kit id.
+     * @return the view root.
+     */
+    @Override
+    public UIViewRoot restoreView(FacesContext context, String viewId, String renderKitId) {
+
+        if (LOGGER.isLoggable(Level.FINEST)) {
+            LOGGER.log(Level.FINEST, "FaceletPartialStateManagementStrategy.restoreView", new Object[]{viewId, renderKitId});
+        }
+
+        ResponseStateManager rsm = RenderKitUtils.getResponseStateManager(context, renderKitId);
+        boolean processingEvents = context.isProcessingEvents();
+        UIViewRoot viewRoot = context.getViewRoot();
+
+        Object[] rawState = (Object[]) rsm.getState(context, viewId);
+        if (rawState == null) {
+            return null;
+        }
+
+        final Map<String, Object> state = (Map<String, Object>) rawState[1];
+        final StateContext stateContext = StateContext.getStateContext(context);
+
+        if (state != null) {
+            try {
+                stateContext.setTrackViewModifications(false);
+
+                context.getAttributes().put(SKIP_ITERATION_HINT, true);
+                Set<VisitHint> hints = EnumSet.of(VisitHint.SKIP_ITERATION, VisitHint.EXECUTE_LIFECYCLE);
+                VisitContext visitContext = VisitContext.createVisitContext(context, null, hints);
+                viewRoot.visitTree(visitContext, new VisitCallback() {
+
+                    public VisitResult visit(VisitContext context, UIComponent target) {
+                        VisitResult result = VisitResult.ACCEPT;
+                        String cid = target.getClientId(context.getFacesContext());
+                        Object stateObj = state.get(cid);
+                        if (stateObj != null && !stateContext.componentAddedDynamically(target)) {
+                            boolean restoreStateNow = true;
+                            if (stateObj instanceof StateHolderSaver) {
+                                restoreStateNow = !((StateHolderSaver) stateObj).componentAddedDynamically();
+                            }
+                            if (restoreStateNow) {
+                                try {
+                                    target.restoreState(context.getFacesContext(), stateObj);
+                                } catch (Exception e) {
+                                    String msg =
+                                            MessageUtils.getExceptionMessageString(
+                                            MessageUtils.PARTIAL_STATE_ERROR_RESTORING_ID,
+                                            cid,
+                                            e.toString());
+                                    throw new FacesException(msg, e);
+                                }
+                            }
+                        }
+
+                        return result;
+                    }
+                });
+                restoreDynamicActions(context, stateContext, state);
+            } finally {
+                stateContext.setTrackViewModifications(true);
+                context.getAttributes().remove(SKIP_ITERATION_HINT);
+            }
+        } else {
+            viewRoot = null;
+        }
+        context.setProcessingEvents(processingEvents);
+        return viewRoot;
+    }
+
+    /**
+     * Save the dynamic actions.
+     *
+     * @param context the Faces context.
+     * @param stateContext the state context.
+     * @param stateMap the state.
+     */
+    private void saveDynamicActions(FacesContext context, StateContext stateContext, Map<String, Object> stateMap) {
+        if (LOGGER.isLoggable(Level.FINEST)) {
+            LOGGER.finest("FaceletPartialStateManagementStrategy.saveDynamicActions");
+        }
+
+        List<ComponentStruct> actions = stateContext.getDynamicActions();
+        HashMap<String, UIComponent> componentMap = stateContext.getDynamicComponents();
+        
+        if (actions != null) {
+            List<Object> savedActions = new ArrayList<Object>(actions.size());
+            for (ComponentStruct action : actions) {
+                UIComponent component = componentMap.get(action.clientId);
+                if (component == null && context.isProjectStage(ProjectStage.Development)) {
+                    LOGGER.log(
+                            Level.WARNING,
+                            "Unable to save dynamic action with clientId ''{0}'' because the UIComponent cannot be found",
+                            action.clientId);
+                }
+                if (component != null) {
+                    savedActions.add(action.saveState(context));
+                }
+            }
+            stateMap.put(DYNAMIC_ACTIONS, savedActions);
+        }
+    }
+
+    /**
+     * Save the view.
+     *
+     * @param context the Faces context.
+     * @return the saved view.
+     */
+    @Override
+    public Object saveView(FacesContext context) {
+        if (LOGGER.isLoggable(Level.FINEST)) {
+            LOGGER.finest("FaceletPartialStateManagementStrategy.saveView");
+        }
+
+        if (context == null) {
+            return null;
+        }
+
+        UIViewRoot viewRoot = context.getViewRoot();
+        if (viewRoot.isTransient()) {
+            return null;
+        }
+
+        Util.checkIdUniqueness(context, viewRoot, new HashSet<String>(viewRoot.getChildCount() << 1));
+
+        final Map<String, Object> stateMap = new HashMap<String, Object>();
+        final StateContext stateContext = StateContext.getStateContext(context);
+
+        context.getAttributes().put(SKIP_ITERATION_HINT, true);
+        Set<VisitHint> hints = EnumSet.of(VisitHint.SKIP_ITERATION);
+        VisitContext visitContext = VisitContext.createVisitContext(context, null, hints);
+        final FacesContext finalContext = context;
+
+        try {
+            viewRoot.visitTree(visitContext, new VisitCallback() {
+
+                public VisitResult visit(VisitContext context, UIComponent target) {
+                    VisitResult result = VisitResult.ACCEPT;
+                    Object stateObj;
+                    if (!target.isTransient()) {
+                        if (stateContext.componentAddedDynamically(target)) {
+                            target.getAttributes().put(DYNAMIC_COMPONENT, new Integer(getProperChildIndex(target)));
+                            stateObj = new StateHolderSaver(finalContext, target);
+                        } else {
+                            stateObj = target.saveState(context.getFacesContext());
+                        }
+                        if (stateObj != null) {
+                            stateMap.put(target.getClientId(context.getFacesContext()), stateObj);
+                        }
+                    } else {
+                        return VisitResult.REJECT;
+                    }
+                    return result;
+                }
+            });
+        } finally {
+            context.getAttributes().remove(SKIP_ITERATION_HINT);
+        }
+
+        saveDynamicActions(context, stateContext, stateMap);
+        StateContext.release(context);
+        return new Object[]{null, stateMap};
+    }
+
+    /**
+     * Helper method that determines what the index of the given child component
+     * will be taking transient siblings into account.
+     *
+     * @param component the UI component.
+     * @return the calculated index.
+     */
+    private int getProperChildIndex(UIComponent component) {
+        int result = -1;
+
+        if (component.getParent().getChildren().indexOf(component) != -1) {
+            UIComponent parent = component.getParent();
+            int index = 0;
+            Iterator<UIComponent> iterator = parent.getChildren().iterator();
+            while (iterator.hasNext()) {
+                UIComponent child = iterator.next();
+                if (child == component) {
+                    break;
+                } else {
+                    if (!child.isTransient()) {
+                        index++;
+                    }
+                }
+            }
+            if (index == 0 && !parent.getChildren().isEmpty() &&
+                    parent.getChildren().get(0).isTransient()) {
+                index = -1;
+            }
+            result = index;
+        }
+
+        return result;
+    }
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/application/view/FaceletViewHandlingStrategy.java b/jsf-ri/src/main/java/com/sun/faces/application/view/FaceletViewHandlingStrategy.java
index 1ae5bcb..a659e4e 100644
--- a/jsf-ri/src/main/java/com/sun/faces/application/view/FaceletViewHandlingStrategy.java
+++ b/jsf-ri/src/main/java/com/sun/faces/application/view/FaceletViewHandlingStrategy.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -36,66 +40,60 @@
 
 package com.sun.faces.application.view;
 
+import com.sun.faces.RIConstants;
 import com.sun.faces.application.ApplicationAssociate;
-import static com.sun.faces.config.WebConfiguration.WebContextInitParameter.FaceletsViewMappings;
-import static com.sun.faces.config.WebConfiguration.WebContextInitParameter.FaceletsBufferSize;
-
 import com.sun.faces.context.StateContext;
-import com.sun.faces.facelets.Facelet;
-import com.sun.faces.facelets.FaceletFactory;
-import com.sun.faces.facelets.el.VariableMapperWrapper;
+import javax.faces.view.facelets.Facelet;
 import com.sun.faces.facelets.el.ContextualCompositeMethodExpression;
+import com.sun.faces.facelets.el.VariableMapperWrapper;
+import com.sun.faces.facelets.impl.DefaultFaceletFactory;
 import com.sun.faces.facelets.tag.composite.CompositeComponentBeanInfo;
 import com.sun.faces.facelets.tag.jsf.CompositeComponentTagHandler;
 import com.sun.faces.facelets.tag.ui.UIDebug;
 import com.sun.faces.scripting.groovy.GroovyHelper;
+import com.sun.faces.util.Cache.Factory;
+import com.sun.faces.util.Cache;
 import com.sun.faces.util.FacesLogger;
+import com.sun.faces.util.HtmlUtils;
 import com.sun.faces.util.RequestStateManager;
 import com.sun.faces.util.Util;
-import com.sun.faces.util.Cache;
-import com.sun.faces.util.Cache.Factory;
-
-import com.sun.faces.facelets.impl.DefaultFaceletFactory;
-
 import java.beans.BeanDescriptor;
-import javax.el.ValueExpression;
-import javax.el.VariableMapper;
-import javax.faces.FacesException;
-import javax.faces.application.Resource;
-import javax.faces.application.ResourceHandler;
-import javax.faces.application.ViewHandler;
-import javax.faces.component.UIComponent;
-import javax.faces.component.UIPanel;
-import javax.faces.component.UIViewRoot;
-import javax.faces.context.ExternalContext;
-import javax.faces.context.FacesContext;
-import javax.faces.context.ResponseWriter;
-import javax.faces.event.PostAddToViewEvent;
-import javax.faces.render.RenderKit;
-import javax.faces.view.StateManagementStrategy;
-import javax.faces.view.ViewMetadata;
-import javax.faces.view.facelets.FaceletContext;
-import javax.servlet.http.HttpServletResponse;
 import java.beans.BeanInfo;
 import java.beans.PropertyDescriptor;
 import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.io.Writer;
 import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
-import java.util.Iterator;
-import java.util.HashMap;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 import javax.el.ExpressionFactory;
 import javax.el.MethodExpression;
+import javax.el.ValueExpression;
+import javax.el.VariableMapper;
+import javax.faces.FacesException;
+import javax.faces.FactoryFinder;
+import javax.faces.application.Resource;
+import javax.faces.application.ResourceHandler;
+import javax.faces.application.StateManager;
+import javax.faces.application.ViewHandler;
 import javax.faces.component.ActionSource2;
 import javax.faces.component.EditableValueHolder;
+import javax.faces.component.UIComponent;
+import javax.faces.component.UIPanel;
+import javax.faces.component.UIViewRoot;
+import javax.faces.context.ExternalContext;
+import javax.faces.context.FacesContext;
+import javax.faces.context.ResponseWriter;
+import javax.faces.event.ActionEvent;
 import javax.faces.event.MethodExpressionActionListener;
 import javax.faces.event.MethodExpressionValueChangeListener;
+import javax.faces.event.PostAddToViewEvent;
 import javax.faces.event.ValueChangeEvent;
-import javax.faces.event.ActionEvent;
+import javax.faces.render.RenderKit;
 import javax.faces.validator.MethodExpressionValidator;
 import javax.faces.view.ActionSource2AttachedObjectHandler;
 import javax.faces.view.ActionSource2AttachedObjectTarget;
@@ -105,8 +103,32 @@ import javax.faces.view.BehaviorHolderAttachedObjectHandler;
 import javax.faces.view.BehaviorHolderAttachedObjectTarget;
 import javax.faces.view.EditableValueHolderAttachedObjectHandler;
 import javax.faces.view.EditableValueHolderAttachedObjectTarget;
+import javax.faces.view.StateManagementStrategy;
 import javax.faces.view.ValueHolderAttachedObjectHandler;
 import javax.faces.view.ValueHolderAttachedObjectTarget;
+import javax.faces.view.ViewDeclarationLanguage;
+import javax.faces.view.ViewDeclarationLanguageFactory;
+import javax.faces.view.ViewMetadata;
+import javax.faces.view.facelets.FaceletContext;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpSession;
+import static com.sun.faces.config.WebConfiguration.WebContextInitParameter.FaceletsBufferSize;
+import static com.sun.faces.config.WebConfiguration.WebContextInitParameter.FaceletsViewMappings;
+import static com.sun.faces.config.WebConfiguration.WebContextInitParameter.StateSavingMethod;
+import com.sun.faces.util.ComponentStruct;
+import static javax.faces.application.StateManager.IS_BUILDING_INITIAL_STATE;
+import javax.faces.component.ContextCallback;
+import javax.faces.component.visit.VisitCallback;
+import javax.faces.component.visit.VisitContext;
+import javax.faces.component.visit.VisitResult;
+import static com.sun.faces.RIConstants.DYNAMIC_COMPONENT;
+import com.sun.faces.facelets.impl.XMLFrontMatterSaver;
+import com.sun.faces.renderkit.RenderKitUtils;
+import java.util.Collections;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.CopyOnWriteArrayList;
+import javax.faces.application.ProjectStage;
+import javax.faces.render.ResponseStateManager;
 
 /**
  * This {@link ViewHandlingStrategy} handles Facelets/PDL-based views.
@@ -115,8 +137,9 @@ public class FaceletViewHandlingStrategy extends ViewHandlingStrategy {
 
     private static final Logger LOGGER = FacesLogger.APPLICATION.getLogger();
 
-    // FaceletFactory singleton for this application
-    private FaceletFactory faceletFactory;
+    private ViewDeclarationLanguageFactory vdlFactory;
+
+    private DefaultFaceletFactory faceletFactory;
 
     // Array of viewId extensions that should be handled by Facelets
     private String[] extensionsArray;
@@ -127,7 +150,9 @@ public class FaceletViewHandlingStrategy extends ViewHandlingStrategy {
     public static final String IS_BUILDING_METADATA =
           FaceletViewHandlingStrategy.class.getName() + ".IS_BUILDING_METADATA";
     
-    private volatile StateManagementStrategyImpl stateManagementStrategy;
+    public static final String RESOURCE_LIBRARY_CONTRACT_DATA_STRUCTURE_KEY = 
+              FaceletViewHandlingStrategy.class.getName() + ".RESOURCE_LIBRARY_CONTRACT_DATA_STRUCTURE";
+
     private MethodRetargetHandlerManager retargetHandlerManager =
           new MethodRetargetHandlerManager();
 
@@ -135,9 +160,15 @@ public class FaceletViewHandlingStrategy extends ViewHandlingStrategy {
     private boolean groovyAvailable;
     private int responseBufferSize;
     private boolean responseBufferSizeSet;
+    private boolean isTrinidadStateManager;
 
     private Cache<Resource, BeanInfo> metadataCache;
+    private Map<String, List<String>> contractMappings;
 
+    /**
+     * Stores the skip hint.
+     */
+    private static String SKIP_ITERATION_HINT = "javax.faces.visit.SKIP_ITERATION";
 
     // ------------------------------------------------------------ Constructors
 
@@ -158,24 +189,28 @@ public class FaceletViewHandlingStrategy extends ViewHandlingStrategy {
 
     @Override
     public StateManagementStrategy getStateManagementStrategy(FacesContext context, String viewId) {
-
+        StateManagementStrategy result;
+        
         StateContext stateCtx = StateContext.getStateContext(context);
-        if (stateCtx.partialStateSaving(viewId)) {
-            if (stateManagementStrategy == null) {
-                synchronized (this) {
-                    if (stateManagementStrategy == null) {
-                        stateManagementStrategy = new StateManagementStrategyImpl();
-                    }
-                }
-            }
-            return stateManagementStrategy;
+        if (stateCtx.isPartialStateSaving(context, viewId)) {
+            result = new FaceletPartialStateManagementStrategy(context);
+        } else {
+            // Spec for this method says:
+            
+            // Implementations that provide the VDL for Facelets for JSF 2.0 
+            // and later must return non-null from this method.
+            
+            // Limit the specification violating change to the case where
+            // we are running in Trinidad.
+            // 
+            result = isTrinidadStateManager ? null : new JspStateManagementStrategy(context);
         }
-        return null; // a null return means use full state saving
-
+        
+        return result;
     }
     
     /*
-     * Called by Application.createComponent(Resource).
+     * Called by Application._createComponent(Resource).
      * 
      * This method creates two temporary UIComponent instances to aid in
      * the creation of the compcomp metadata.  These instances no longer
@@ -205,9 +240,8 @@ public class FaceletViewHandlingStrategy extends ViewHandlingStrategy {
     public BeanInfo getComponentMetadata(FacesContext context, 
             Resource ccResource) {
 
-        FaceletFactory factory = (FaceletFactory)
+        DefaultFaceletFactory factory = (DefaultFaceletFactory)
                 RequestStateManager.get(context, RequestStateManager.FACELET_FACTORY);
-        assert(factory instanceof DefaultFaceletFactory);
         DefaultFaceletFactory ourFactory = (DefaultFaceletFactory) factory;
         if (ourFactory.needsToBeRefreshed(ccResource.getURL())) {
             metadataCache.remove(ccResource);
@@ -224,7 +258,7 @@ public class FaceletViewHandlingStrategy extends ViewHandlingStrategy {
         CompositeComponentBeanInfo result;
         FaceletContext ctx = (FaceletContext)
                 context.getAttributes().get(FaceletContext.FACELET_CONTEXT_KEY);
-        FaceletFactory factory = (FaceletFactory)
+        DefaultFaceletFactory factory = (DefaultFaceletFactory)
               RequestStateManager.get(context, RequestStateManager.FACELET_FACTORY);
         VariableMapper orig = ctx.getVariableMapper();
 
@@ -249,7 +283,7 @@ public class FaceletViewHandlingStrategy extends ViewHandlingStrategy {
         Facelet f;
 
         try {
-            f = factory.getFacelet(ccResource.getURL());
+            f = factory.getFacelet(context, ccResource.getURL());
             VariableMapper wrapper = new VariableMapperWrapper(orig) {
 
                 @Override
@@ -304,6 +338,8 @@ public class FaceletViewHandlingStrategy extends ViewHandlingStrategy {
 
     @Override
     public ViewMetadata getViewMetadata(FacesContext context, String viewId) {
+        Util.notNull("context", context);
+        Util.notNull("viewId", viewId);
 
         return new ViewMetadataImpl(viewId);
 
@@ -314,6 +350,8 @@ public class FaceletViewHandlingStrategy extends ViewHandlingStrategy {
      */
     public Resource getScriptComponentResource(FacesContext context,
             Resource componentResource) {
+        Util.notNull("context", context);
+        Util.notNull("componentResource", componentResource);
 
         if (!groovyAvailable) {
             return null;
@@ -355,7 +393,8 @@ public class FaceletViewHandlingStrategy extends ViewHandlingStrategy {
         try {
             // Only build the view if this view has not yet been built.
             if (!Util.isViewPopulated(ctx, viewToRender)) {
-                this.buildView(ctx, viewToRender);
+                ViewDeclarationLanguage vdl = vdlFactory.getViewDeclarationLanguage(viewToRender.getViewId());
+                vdl.buildView(ctx, viewToRender);
             }
 
             // setup writer and assign it to the ctx
@@ -365,6 +404,19 @@ public class FaceletViewHandlingStrategy extends ViewHandlingStrategy {
             }
 
             ExternalContext extContext = ctx.getExternalContext();
+            
+            /*
+             * Make sure we have a session here if we are using server state
+             * saving. The WriteBehindStateWriter needs an active session when
+             * it writes out state to a server session.
+             * 
+             * Note if you flag a view as transient then we won't acquire the
+             * session as you are stating it does not need one.
+             */
+            if (isServerStateSaving() && !viewToRender.isTransient()) {
+                getSession(ctx);
+            }            
+            
             Writer outputWriter = extContext.getResponseOutputWriter();
             stateWriter = new WriteBehindStateWriter(outputWriter,
                                                      ctx,
@@ -384,7 +436,22 @@ public class FaceletViewHandlingStrategy extends ViewHandlingStrategy {
                     }
                 }
             } else {
+                if (ctx.isProjectStage(ProjectStage.Development)) {
+                    FormOmittedChecker.check(ctx);
+                }
+                
                 // render the view to the response
+                String XMLDECL = Util.getXMLDECLFromFacesContextAttributes(ctx);
+                if (null != XMLDECL) {
+                    // Do not escape.
+                    writer.writePreamble(XMLDECL);
+                }
+
+                String DOCTYPE = Util.getDOCTYPEFromFacesContextAttributes(ctx);
+                if (null != DOCTYPE) {
+                    // Do not escape.
+                    writer.writeDoctype(DOCTYPE);
+                }
                 writer.startDocument();
                 viewToRender.encodeAll(ctx);
                 try {
@@ -419,24 +486,112 @@ public class FaceletViewHandlingStrategy extends ViewHandlingStrategy {
 
     }
 
+    /**
+     * Are we saving state server side?
+     * 
+     * @return true if we are, false otherwise.
+     */
+    private boolean isServerStateSaving() {
+        boolean result = false;
+        String stateMode = webConfig.getOptionValue(StateSavingMethod);
+        if (StateManager.STATE_SAVING_METHOD_SERVER.equals(stateMode)) {
+            result = true;
+        }
+        return result;
+    }
 
     /**
+     * Get a session (if we are using server state saving).
+     * 
+     * @param context the Faces context.
+     * @return the session, or null if we are not using server state saving.
+     */
+    private HttpSession getSession(FacesContext context) {
+        HttpSession result = null;
+        Object sessionObj = context.getExternalContext().getSession(true);
+        if (sessionObj instanceof HttpSession) {
+            result = (HttpSession) sessionObj;
+        }
+        return result;
+    }
+    
+    /**
      * <p>
      * If {@link UIDebug#debugRequest(javax.faces.context.FacesContext)}} is <code>true</code>,
      * simply return a new UIViewRoot(), otherwise, call the default logic.
      * </p>
-     * @see {@link javax.faces.view.ViewDeclarationLanguage#restoreView(javax.faces.context.FacesContext, String)}
+     * @see ViewDeclarationLanguage#restoreView(javax.faces.context.FacesContext, java.lang.String) 
      */
     @Override
-    public UIViewRoot restoreView(FacesContext ctx,
+    public UIViewRoot restoreView(FacesContext context,
                                   String viewId) {
+        Util.notNull("context", context);
+        Util.notNull("viewId", viewId);
 
-        if (UIDebug.debugRequest(ctx)) {
-            ctx.getApplication().createComponent(UIViewRoot.COMPONENT_TYPE);
+        if (UIDebug.debugRequest(context)) {
+            context.getApplication().createComponent(UIViewRoot.COMPONENT_TYPE);
+        }
+                        
+        UIViewRoot viewRoot;
+        
+        /*
+         * Check if we are stateless.
+         */
+        ViewHandler outerViewHandler = context.getApplication().getViewHandler();
+        String renderKitId = outerViewHandler.calculateRenderKitId(context);
+        ResponseStateManager rsm = RenderKitUtils.getResponseStateManager(context, renderKitId);
+                
+        if (rsm.isStateless(context, viewId))  {
+            try {
+                ViewDeclarationLanguage vdl = vdlFactory.getViewDeclarationLanguage(viewId);
+                viewRoot = vdl.createView(context, viewId);
+                context.setViewRoot(viewRoot);
+                vdl.buildView(context, viewRoot);
+                return viewRoot;
+            } catch (IOException ioe) {
+                throw new FacesException(ioe);
+            }
+        }
+        
+        if (StateContext.getStateContext(context).isPartialStateSaving(context, viewId)) {
+            try {
+                context.setProcessingEvents(false);
+                ViewDeclarationLanguage vdl = vdlFactory.getViewDeclarationLanguage(viewId);
+                viewRoot = vdl.getViewMetadata(context, viewId).createMetadataView(context);
+                context.setViewRoot(viewRoot);
+                outerViewHandler = context.getApplication().getViewHandler();
+                renderKitId = outerViewHandler.calculateRenderKitId(context);
+                rsm = RenderKitUtils.getResponseStateManager(context, renderKitId);
+                Object[] rawState = (Object[]) rsm.getState(context, viewId);
+                if (rawState != null) {
+                    Map<String, Object> state = (Map<String, Object>) rawState[1];
+                    if (state != null) {
+                        String cid = viewRoot.getClientId(context);
+                        Object stateObj = state.get(cid);
+                        if (stateObj != null) {
+                            context.getAttributes().put("com.sun.faces.application.view.restoreViewScopeOnly", true);
+                            viewRoot.restoreState(context, stateObj);
+                            context.getAttributes().remove("com.sun.faces.application.view.restoreViewScopeOnly");
+                        }
+                    }
+                }
+                context.setProcessingEvents(true);
+                vdl.buildView(context, viewRoot);
+            } catch (IOException ioe) {
+                throw new FacesException(ioe);
+            }
         }
 
-        return super.restoreView(ctx, viewId);
-
+        UIViewRoot root = super.restoreView(context, viewId);
+        
+        ViewHandler viewHandler = context.getApplication().getViewHandler();
+        ViewDeclarationLanguage vdl = viewHandler.getViewDeclarationLanguage(context, viewId);
+        context.setResourceLibraryContracts(vdl.calculateResourceLibraryContracts(context, viewId));       
+        
+        StateContext stateCtx = StateContext.getStateContext(context);
+        stateCtx.startTrackViewModifications(context, root);
+        
+        return root;
     }
 
 
@@ -448,6 +603,9 @@ public class FaceletViewHandlingStrategy extends ViewHandlingStrategy {
     public void retargetAttachedObjects(FacesContext context,
                                         UIComponent topLevelComponent,
                                         List<AttachedObjectHandler> handlers) {
+        Util.notNull("context", context);
+        Util.notNull("topLevelComponent", topLevelComponent);
+        Util.notNull("handlers", handlers);
 
         //List<AttachedObjectHandler> handlers =
         //      getAttachedObjectHandlers(topLevelComponent, false);
@@ -536,6 +694,8 @@ public class FaceletViewHandlingStrategy extends ViewHandlingStrategy {
     @Override
     public void retargetMethodExpressions(FacesContext context,
                                           UIComponent topLevelComponent) {
+        Util.notNull("context", context);
+        Util.notNull("topLevelComponent", topLevelComponent);
 
         BeanInfo componentBeanInfo = (BeanInfo) 
                 topLevelComponent.getAttributes().get(UIComponent.BEANINFO_KEY);
@@ -546,7 +706,7 @@ public class FaceletViewHandlingStrategy extends ViewHandlingStrategy {
 
         PropertyDescriptor attributes[] = componentBeanInfo.getPropertyDescriptors();
 
-        MethodMetadataIterator allMetadata = new MethodMetadataIterator(attributes);
+        MethodMetadataIterator allMetadata = new MethodMetadataIterator(context, attributes);
         for (CompCompInterfaceMethodMetadata metadata : allMetadata) {
 
             String attrName = metadata.getName();
@@ -582,12 +742,16 @@ public class FaceletViewHandlingStrategy extends ViewHandlingStrategy {
                 }
             }
 
+            String targetAttributeName = metadata.getTargetAttributeName(context);
+            UIComponent targetComp = null;
+            if (null != targetAttributeName) {
+                attrName = targetAttributeName;
+            }
             if (targets != null) {
                 MethodRetargetHandler handler = retargetHandlerManager.getRetargetHandler(attrName);
                 if (handler != null) {
                     for (String curTarget : targets) {
-                        UIComponent targetComp = topLevelComponent
-                              .findComponent(curTarget);
+                        targetComp = topLevelComponent.findComponent(curTarget);
                         if (null == targetComp) {
                             throw new FacesException(attrValue.toString()
                                                      + " : Unable to re-target MethodExpression as inner component referenced by target id '"
@@ -614,8 +778,16 @@ public class FaceletViewHandlingStrategy extends ViewHandlingStrategy {
                     handler.retarget(context, metadata, attrValue, topLevelComponent);
                 }
             } else {
-                MethodRetargetHandler handler = retargetHandlerManager.getDefaultHandler();
-                handler.retarget(context, metadata, attrValue, topLevelComponent);
+                MethodRetargetHandler handler = null;
+                if (null != targetAttributeName) {
+                    targetComp = topLevelComponent.findComponent(metadata.getName());
+                    handler = retargetHandlerManager.getRetargetHandler(attrName);
+                }
+                if (null == handler) {
+                    targetComp = topLevelComponent;
+                    handler = retargetHandlerManager.getDefaultHandler();
+                }
+                handler.retarget(context, metadata, attrValue, targetComp);
             }
 
             // clear out the ValueExpression that we've retargeted as a
@@ -628,12 +800,13 @@ public class FaceletViewHandlingStrategy extends ViewHandlingStrategy {
 
 
     /**
-     * @see javax.faces.view.ViewDeclarationLanguage#createView(javax.faces.context.FacesContext, String)
-     * @return
+     * @see ViewDeclarationLanguage#createView(javax.faces.context.FacesContext, java.lang.String)
      */
     @Override
     public UIViewRoot createView(FacesContext ctx,
                                  String viewId) {
+        Util.notNull("context", ctx);
+        Util.notNull("viewId", viewId);
 
         if (UIDebug.debugRequest(ctx)) {
             UIViewRoot root = (UIViewRoot)
@@ -642,8 +815,66 @@ public class FaceletViewHandlingStrategy extends ViewHandlingStrategy {
             return root;
         }
 
-        return super.createView(ctx, viewId);
+        UIViewRoot result = super.createView(ctx, viewId);
+        ViewHandler viewHandler = ctx.getApplication().getViewHandler();
+        ViewDeclarationLanguage vdl = viewHandler.getViewDeclarationLanguage(ctx, viewId);
+
+        ctx.setResourceLibraryContracts(vdl.calculateResourceLibraryContracts(ctx, viewId));
+        
+        return result;
+        
+    }
+
+    @Override
+    public UIComponent createComponent(FacesContext context, String taglibURI, String tagName, Map<String, Object> attributes) {
+        Util.notNull("context", context);
+        Util.notNull("taglibURI", taglibURI);
+        Util.notNull("tagName", tagName);
+        UIComponent result = null;
         
+        DefaultFaceletFactory ff = associate.getFaceletFactory();
+        result = ff._createComponent(context, taglibURI, tagName, attributes);
+                
+        return result;
+    }
+    
+    @Override
+    public List<String> calculateResourceLibraryContracts(FacesContext context, String viewId) {
+        List<String> result = null;
+        String longestPattern = null;
+        if (null == contractMappings) {
+            return Collections.emptyList();
+        }
+        
+        String longestMatch = null;
+        for (Map.Entry<String, List<String>> mappings : contractMappings.entrySet()) {
+            String urlPattern = mappings.getKey();
+            if (urlPattern.endsWith("*")) { 
+                String prefix = urlPattern.substring(0, urlPattern.length() - 1);
+                if (viewId.startsWith(prefix)) {
+                    if (longestPattern == null) {
+                        longestPattern = urlPattern;
+                        longestMatch = prefix;
+                    } else if (longestMatch.length() < prefix.length()) {
+                        longestPattern = urlPattern;
+                        longestMatch = prefix;
+                    }
+                }
+            } else if (viewId.equals(urlPattern)) {
+                longestPattern = urlPattern;
+                break;
+            }
+        }
+        
+        if (longestPattern != null) {
+            result = contractMappings.get(longestPattern);
+        }
+        
+        if (result == null) {
+            result = contractMappings.get("*");
+        }
+        
+        return result;
     }
     
 
@@ -661,6 +892,11 @@ public class FaceletViewHandlingStrategy extends ViewHandlingStrategy {
     @Override
     public boolean handlesViewId(String viewId) {
          if (viewId != null) {
+             
+             if (viewId.endsWith(RIConstants.FLOW_DEFINITION_ID_SUFFIX)) {
+                 return true;
+             }
+             
             // If there's no extensions array or prefixes array, then
             // assume defaults.  .xhtml extension is handled by
             // the FaceletViewHandler and .jsp will be handled by
@@ -689,6 +925,20 @@ public class FaceletViewHandlingStrategy extends ViewHandlingStrategy {
         return false;
     }
 
+    /**
+     * Mark the initial state if not already marked.
+     */
+    private void markInitialStateIfNotMarked(UIComponent component) {
+        if (!component.isTransient()) {
+            if (!component.getAttributes().containsKey(RIConstants.DYNAMIC_COMPONENT) && !component.initialStateMarked()) {
+                component.markInitialState();
+            }
+            for (Iterator<UIComponent> it = component.getFacetsAndChildren() ; it.hasNext() ; ) {
+                UIComponent child = it.next();
+                markInitialStateIfNotMarked(child);
+            }
+        }
+    }
 
     /**
      * Build the view.
@@ -700,15 +950,18 @@ public class FaceletViewHandlingStrategy extends ViewHandlingStrategy {
     @Override
     public void buildView(FacesContext ctx, UIViewRoot view)
     throws IOException {
-
+        StateContext stateCtx = StateContext.getStateContext(ctx);
         if (Util.isViewPopulated(ctx, view)) {
-            Facelet f = faceletFactory.getFacelet(view.getViewId());
-            StateContext stateCtx = StateContext.getStateContext(ctx);
+            Facelet f = faceletFactory.getFacelet(ctx, view.getViewId());
             // Disable events from being intercepted by the StateContext by
             // virute of re-applying the handlers. 
             try {
                 stateCtx.setTrackViewModifications(false);
                 f.apply(ctx, view);
+                reapplyDynamicActions(ctx);
+                if (stateCtx.isPartialStateSaving(ctx, view.getViewId())) {
+                    markInitialStateIfNotMarked(view);
+                }
             } finally {
                 stateCtx.setTrackViewModifications(true);
             }
@@ -728,19 +981,64 @@ public class FaceletViewHandlingStrategy extends ViewHandlingStrategy {
         RequestStateManager.set(ctx,
                                 RequestStateManager.FACELET_FACTORY,
                                 faceletFactory);
-        Facelet f = faceletFactory.getFacelet(view.getViewId());
+        Facelet f = faceletFactory.getFacelet(ctx, view.getViewId());
 
         // populate UIViewRoot
-        f.apply(ctx, view);
-        doPostBuildActions(ctx, view);
+        try {
+            ctx.getAttributes().put(IS_BUILDING_INITIAL_STATE, Boolean.TRUE);
+            stateCtx.setTrackViewModifications(false);
+            f.apply(ctx, view);
+            
+            if (f instanceof XMLFrontMatterSaver) {
+                XMLFrontMatterSaver frontMatterSaver = (XMLFrontMatterSaver) f;
+                String DOCTYPE = frontMatterSaver.getSavedDoctype();
+                if (null != DOCTYPE) {
+                    Util.saveDOCTYPEToFacesContextAttributes(DOCTYPE);
+                }
+                String XMLDECL = frontMatterSaver.getSavedXMLDecl();
+                if (null != XMLDECL) {
+                    Util.saveXMLDECLToFacesContextAttributes(XMLDECL);
+                }
+            }
+            
+            if (!stateCtx.isPartialStateSaving(ctx, view.getViewId())) {
+                reapplyDynamicActions(ctx);
+            }
+            
+            doPostBuildActions(ctx, view);
+        } finally {
+            ctx.getAttributes().remove(IS_BUILDING_INITIAL_STATE);
+        }
         ctx.getApplication().publishEvent(ctx,
                                           PostAddToViewEvent.class,
                                           UIViewRoot.class,
                                           view);
+        markInitialState(ctx, view);
+        
         Util.setViewPopulated(ctx, view);
 
     }
 
+    @Override
+    public boolean viewExists(FacesContext context, 
+                              String viewId) {
+        boolean result = false;
+        if (handlesViewId(viewId)) {
+            if (faceletFactory == null) {
+                faceletFactory = associate.getFaceletFactory();
+                assert (faceletFactory != null);
+            }
+            result = null != faceletFactory.getResourceResolver().resolveUrl(viewId);
+        }
+           
+        return result;
+        }
+
+    @Override 
+    public String getId() {
+        return FACELETS_VIEW_DECLARATION_LANGUAGE_ID;
+    }
+
 
     // ------------------------------------------------------- Protected Methods
 
@@ -779,6 +1077,28 @@ public class FaceletViewHandlingStrategy extends ViewHandlingStrategy {
             LOGGER.fine("Initialization Successful");
         }
 
+        vdlFactory = (ViewDeclarationLanguageFactory) FactoryFinder.getFactory(FactoryFinder.VIEW_DECLARATION_LANGUAGE_FACTORY);
+
+        FacesContext context = FacesContext.getCurrentInstance();
+        ExternalContext extContext = context.getExternalContext();
+        Map<String, Object> appMap = extContext.getApplicationMap();
+        Map<String, List<String>> contractDataStructure = 
+                (Map<String, List<String>>) 
+                appMap.remove(RESOURCE_LIBRARY_CONTRACT_DATA_STRUCTURE_KEY);
+        if (null != contractDataStructure && !contractDataStructure.isEmpty()) {
+            contractMappings = new ConcurrentHashMap<String, List<String>>();
+            for (Map.Entry<String, List<String>> cur : contractDataStructure.entrySet()) {
+                contractMappings.put(cur.getKey(), new CopyOnWriteArrayList<String>(cur.getValue()));
+                cur.getValue().clear();
+            }
+            contractDataStructure.clear();
+        }
+        if (null != context) {
+            StateManager stateManager = Util.getStateManager(context);
+            if (null != stateManager) {
+                isTrinidadStateManager = stateManager.getClass().getName().contains("trinidad");
+            }
+        }        
     }
 
 
@@ -789,7 +1109,9 @@ public class FaceletViewHandlingStrategy extends ViewHandlingStrategy {
 
         String viewMappings = webConfig.getOptionValue(FaceletsViewMappings);
         if ((viewMappings != null) && (viewMappings.length() > 0)) {
-            String[] mappingsArray = Util.split(viewMappings, ";");
+            Map<String, Object> appMap = FacesContext.getCurrentInstance().getExternalContext().getApplicationMap();
+
+            String[] mappingsArray = Util.split(appMap, viewMappings, ";");
 
             List<String> extensionsList = new ArrayList<String>(mappingsArray.length);
             List<String> prefixesList = new ArrayList<String>(mappingsArray.length);
@@ -847,7 +1169,7 @@ public class FaceletViewHandlingStrategy extends ViewHandlingStrategy {
 
         // get the encoding
         String encoding =
-              (String) context.getAttributes().get("facelets.Encoding");
+              (String) context.getAttributes().get(RIConstants.FACELETS_ENCODING_KEY);
 
         // Create a dummy ResponseWriter with a bogus writer,
         // so we can figure out what content type the ReponseWriter
@@ -860,7 +1182,10 @@ public class FaceletViewHandlingStrategy extends ViewHandlingStrategy {
         encoding = getResponseEncoding(context, writer.getCharacterEncoding());
 
         // apply them to the response
-        extContext.setResponseContentType(contentType);
+        char[] buffer = new char[1028];
+        HtmlUtils.writeTextForXML(writer, contentType, buffer);
+        String str = String.valueOf(buffer).trim();
+        extContext.setResponseContentType(str);
         extContext.setResponseCharacterEncoding(encoding);
 
         // Now, clone with the real writer
@@ -935,42 +1260,50 @@ public class FaceletViewHandlingStrategy extends ViewHandlingStrategy {
 
         String encoding = orig;
 
-        // see if we need to override the encoding
-        Map<Object,Object> ctxAttributes = context.getAttributes();
-        Map<String,Object> sessionMap =
-              context.getExternalContext().getSessionMap();
 
-        // 1. check the request attribute
-        if (ctxAttributes.containsKey("facelets.Encoding")) {
-            encoding = (String) ctxAttributes.get("facelets.Encoding");
-            if (LOGGER.isLoggable(Level.FINEST)) {
-                LOGGER.log(Level.FINEST,
-                           "Facelet specified alternate encoding {0}",
-                           encoding);
-            }
-            sessionMap.put(ViewHandler.CHARACTER_ENCODING_KEY, encoding);
-        }
+        // 1. get it from request
+        encoding = context.getExternalContext().getRequestCharacterEncoding();
 
-        // 2. get it from request
+        // 2. get it from the session
         if (encoding == null) {
-            encoding = context.getExternalContext().getRequestCharacterEncoding();
+            if (null != context.getExternalContext().getSession(false)) {
+                Map<String, Object> sessionMap = context.getExternalContext().getSessionMap();
+                encoding = (String) sessionMap.get(ViewHandler.CHARACTER_ENCODING_KEY);
+                if (LOGGER.isLoggable(Level.FINEST)) {
+                    LOGGER.log(Level.FINEST,
+                            "Session specified alternate encoding {0}",
+                            encoding);
+                }
+            }
         }
 
-        // 3. get it from the session
-        if (encoding == null) {
-            encoding = (String) sessionMap.get(ViewHandler.CHARACTER_ENCODING_KEY);
+        // see if we need to override the encoding
+        Map<Object,Object> ctxAttributes = context.getAttributes();
+
+
+        // 3. check the request attribute
+        if (ctxAttributes.containsKey(RIConstants.FACELETS_ENCODING_KEY)) {
+            encoding = (String) ctxAttributes.get(RIConstants.FACELETS_ENCODING_KEY);
             if (LOGGER.isLoggable(Level.FINEST)) {
                 LOGGER.log(Level.FINEST,
-                           "Session specified alternate encoding {0}",
+                           "Facelet specified alternate encoding {0}",
                            encoding);
             }
+            if (null != context.getExternalContext().getSession(false)) {
+                Map<String, Object> sessionMap = context.getExternalContext().getSessionMap();
+                sessionMap.put(ViewHandler.CHARACTER_ENCODING_KEY, encoding);
+            }
         }
 
         // 4. default it
         if (encoding == null) {
-            encoding = "UTF-8";
+            if (null != orig && 0 < orig.length()) {
+                encoding = orig;
+            } else {
+                encoding = "UTF-8";
+            }
             if (LOGGER.isLoggable(Level.FINEST)) {
-                LOGGER.finest("ResponseWriter created had a null CharacterEncoding, defaulting to UTF-8");
+                LOGGER.log(Level.FINEST, "ResponseWriter created had a null CharacterEncoding, defaulting to {0}", orig);
             }
         }
 
@@ -1028,15 +1361,41 @@ public class FaceletViewHandlingStrategy extends ViewHandlingStrategy {
 
     }
 
-
+     
     private void doPostBuildActions(FacesContext ctx, UIViewRoot root) {
         StateContext stateCtx = StateContext.getStateContext(ctx);
-        if (stateCtx.partialStateSaving(root.getViewId())) {
-            root.markInitialState();
-            stateCtx.startTrackViewModifications();
-        }
+//        if (stateCtx.isPartialStateSaving(ctx, root.getViewId())) {
+	    // lu4242            root.markInitialState();
+  //      }
+        stateCtx.startTrackViewModifications(ctx, root);
     }
 
+     private void markInitialState(FacesContext ctx, UIViewRoot root)
+     {
+         StateContext stateCtx = StateContext.getStateContext(ctx);
+         if (stateCtx.isPartialStateSaving(ctx, root.getViewId())) {
+             try {
+                 ctx.getAttributes().put(IS_BUILDING_INITIAL_STATE, Boolean.TRUE);
+                 if (!root.isTransient()) {
+                     markInitialState(root);
+                 }
+             } finally {
+                 ctx.getAttributes().remove(IS_BUILDING_INITIAL_STATE);
+             }
+         }
+     }
+     
+     private void markInitialState(final UIComponent component)
+     {
+         component.markInitialState();
+         for (Iterator<UIComponent> it = component.getFacetsAndChildren() ; it.hasNext() ; ) {
+             UIComponent child = it.next();
+             if (!child.isTransient()) {
+                 markInitialState(child);
+             }
+         }
+     }    
+
 
     private void retargetHandler(FacesContext context,
                                  AttachedObjectHandler handler,
@@ -1066,13 +1425,15 @@ public class FaceletViewHandlingStrategy extends ViewHandlingStrategy {
     private static final class MethodMetadataIterator implements Iterable<CompCompInterfaceMethodMetadata>, Iterator<CompCompInterfaceMethodMetadata> {
 
         private final PropertyDescriptor[] descriptors;
+        private FacesContext context;
         private int curIndex = -1;
 
         // -------------------------------------------------------- Constructors
 
 
-        MethodMetadataIterator(PropertyDescriptor[] descriptors) {
+        MethodMetadataIterator(FacesContext context, PropertyDescriptor[] descriptors) {
 
+            this.context = context;
             this.descriptors = descriptors;
             if (descriptors != null && descriptors.length > 0) {
                 curIndex = 0;
@@ -1134,9 +1495,11 @@ public class FaceletViewHandlingStrategy extends ViewHandlingStrategy {
         private boolean shouldSkip(PropertyDescriptor pd) {
             boolean result;
             String name = pd.getName();
-            boolean isSpecialAttributeName = name.equals("action") ||
-                            name.equals("actionListener") || name.equals("validator")
-                            || name.equals("valueChangeListener");
+            ValueExpression ve = (ValueExpression) pd.getValue("targetAttributeName");
+            String targetAttributeName = ((ve != null) ? (String) ve.getValue(context.getELContext()) : "");
+
+            boolean isSpecialAttributeName = Util.isSpecialAttributeName(name) ||
+                    Util.isSpecialAttributeName(targetAttributeName);
             result = (!isSpecialAttributeName &&
                      (pd.getValue("type") != null ||
                       pd.getValue("method-signature") == null));
@@ -1195,7 +1558,7 @@ public class FaceletViewHandlingStrategy extends ViewHandlingStrategy {
             if (ts != null) {
                 String targets = (String) ts.getValue(ctx.getELContext());
                 if (targets != null) {
-                    return Util.split(targets, " ");
+                    return Util.split(ctx.getExternalContext().getApplicationMap(), targets, " ");
                 }
             }
 
@@ -1203,6 +1566,12 @@ public class FaceletViewHandlingStrategy extends ViewHandlingStrategy {
 
         }
 
+        public String getTargetAttributeName(FacesContext ctx) {
+            ValueExpression ve = (ValueExpression) pd.getValue("targetAttributeName");
+            return ((ve != null) ? (String) ve.getValue(ctx.getELContext()) : null);
+
+        }
+
 
         /**
          * @param ctx the <code>FacesContext</code> for the current request
@@ -1681,4 +2050,128 @@ public class FaceletViewHandlingStrategy extends ViewHandlingStrategy {
 
     } // END NullWriter
 
+    /**
+     * Find the given component in the component tree.
+     *
+     * @param context the Faces context.
+     * @param clientId the client id of the component to find.
+     */
+    private UIComponent locateComponentByClientId(final FacesContext context, final UIComponent parent, final String clientId) {
+        final List<UIComponent> found = new ArrayList<UIComponent>();
+        UIComponent result = null;
+
+        parent.invokeOnComponent(context, clientId, new ContextCallback() {
+
+            public void invokeContextCallback(FacesContext context, UIComponent target) {
+                found.add(target);
+            }
+        });
+
+        /*
+         * Since we did not find it the cheaper way we need to assume there is a
+         * UINamingContainer that does not prepend its ID. So we are going to
+         * walk the tree to find it.
+         */
+        if (found.isEmpty()) {
+            VisitContext visitContext = VisitContext.createVisitContext(context);
+            parent.visitTree(visitContext, new VisitCallback() {
+
+                public VisitResult visit(VisitContext visitContext, UIComponent component) {
+                    VisitResult result = VisitResult.ACCEPT;
+                    if (component.getClientId(visitContext.getFacesContext()).equals(clientId)) {
+                        found.add(component);
+                        result = VisitResult.COMPLETE;
+                        }
+                    return result;
+                }
+            });
+        }
+        if (!found.isEmpty()) {
+            result = found.get(0);
+        }
+        return result;
+    }
+
+    /**
+     * Reapply the dynamic actions after Facelets reapply.
+     *
+     * <p> Note a precondition to this method is that tracking view
+     * modifications is turned off during the execution of this method. The
+     * caller of this method is responsible for turning tracking view
+     * modifications off and on as required. </p>
+     *
+     * @param context the Faces context.
+     */
+    private void reapplyDynamicActions(FacesContext context) {
+        StateContext stateContext = StateContext.getStateContext(context);
+        List<ComponentStruct> actions = stateContext.getDynamicActions();
+        if (actions != null) {
+            for (ComponentStruct action : actions) {
+                if (ComponentStruct.REMOVE.equals(action.action)) {
+                    reapplyDynamicRemove(context, action);
+                }
+                if (ComponentStruct.ADD.equals(action.action)) {
+                    reapplyDynamicAdd(context, action);
+                }
+            }
+        }
+    }
+
+    /**
+     * Reapply the dynamic add after Facelets reapply.
+     *
+     * @param context the Faces context. 
+     * @param struct the component struct.
+     */
+    private void reapplyDynamicAdd(FacesContext context, ComponentStruct struct) {
+        UIComponent parent = locateComponentByClientId(context, context.getViewRoot(), struct.parentClientId);
+
+        if (parent != null) {
+            
+            UIComponent child = locateComponentByClientId(context, parent, struct.clientId);
+            StateContext stateContext = StateContext.getStateContext(context);
+
+            if (child == null) {
+                child = stateContext.getDynamicComponents().get(struct.clientId);
+            }
+
+            if (child != null) {
+                if (struct.facetName != null) {
+                    parent.getFacets().remove(struct.facetName);
+                    parent.getFacets().put(struct.facetName, child);
+                    child.getClientId();
+                } else {
+                    int childIndex = -1;
+                    if (child.getAttributes().containsKey(DYNAMIC_COMPONENT)) {
+                        childIndex = (Integer) child.getAttributes().get(DYNAMIC_COMPONENT);
+                    }
+                    child.setId(struct.id);
+                    if (childIndex >= parent.getChildCount() || childIndex == -1) {
+                        parent.getChildren().add(child);
+                    } else {
+                        parent.getChildren().add(childIndex, child);
+                    }
+                    child.getClientId();
+                    child.getAttributes().put(DYNAMIC_COMPONENT, child.getParent().getChildren().indexOf(child));
+                }
+                stateContext.getDynamicComponents().put(struct.clientId, child);
+            }
+        }
+    }
+
+    /**
+     * Reapply the dynamic remove after Facelets reapply.
+     *
+     * @param context the Faces context.
+     * @param struct the component struct.
+     */
+    private void reapplyDynamicRemove(FacesContext context, ComponentStruct struct) {
+        UIComponent child = locateComponentByClientId(context, context.getViewRoot(), struct.clientId);
+        if (child != null) {
+            StateContext stateContext = StateContext.getStateContext(context);
+            stateContext.getDynamicComponents().put(struct.clientId, child);
+            UIComponent parent = child.getParent();
+            parent.getChildren().remove(child);
+        }
+    }
 }
diff --git a/jsf-ri/src/main/java/com/sun/faces/application/view/FormOmittedChecker.java b/jsf-ri/src/main/java/com/sun/faces/application/view/FormOmittedChecker.java
new file mode 100644
index 0000000..7740261
--- /dev/null
+++ b/jsf-ri/src/main/java/com/sun/faces/application/view/FormOmittedChecker.java
@@ -0,0 +1,160 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.application.view;
+
+import com.sun.faces.util.MessageUtils;
+import java.util.EnumSet;
+import java.util.List;
+import java.util.Set;
+import javax.faces.application.FacesMessage;
+import javax.faces.component.ActionSource;
+import javax.faces.component.ActionSource2;
+import javax.faces.component.EditableValueHolder;
+import javax.faces.component.UIComponent;
+import javax.faces.component.UIForm;
+import javax.faces.component.UIViewRoot;
+import javax.faces.component.visit.VisitCallback;
+import javax.faces.component.visit.VisitContext;
+import javax.faces.component.visit.VisitHint;
+import javax.faces.component.visit.VisitResult;
+import javax.faces.context.FacesContext;
+
+/**
+ * A convenience class that checks for omitted forms.
+ */
+class FormOmittedChecker {
+
+    /**
+     * Stores the skip hint.
+     */
+    private static String SKIP_ITERATION_HINT = "javax.faces.visit.SKIP_ITERATION";
+
+    /**
+     * Constructor.
+     */
+    private FormOmittedChecker() {
+    }
+
+    /**
+     * Check if omitted forms are present.
+     *
+     * @param context the Faces context.
+     */
+    public static void check(FacesContext context) {
+        final FacesContext finalContext = context;
+        UIViewRoot viewRoot = context.getViewRoot();
+        List<UIComponent> children = viewRoot.getChildren();
+
+        for (UIComponent child : children) {
+            try {
+                context.getAttributes().put(SKIP_ITERATION_HINT, true);
+                Set<VisitHint> hints = EnumSet.of(VisitHint.SKIP_ITERATION);
+
+                VisitContext visitContext = VisitContext.createVisitContext(context, null, hints);
+                child.visitTree(visitContext, new VisitCallback() {
+
+                    public VisitResult visit(VisitContext visitContext, UIComponent component) {
+                        VisitResult result = VisitResult.ACCEPT;
+
+                        if (isForm(component)) {
+                            result = VisitResult.REJECT;
+                        } else if (isInNeedOfForm(component)) {
+                            addFormOmittedMessage(finalContext);
+                        }
+                        return result;
+                    }
+                });
+            } finally {
+                context.getAttributes().remove(SKIP_ITERATION_HINT);
+            }
+        }
+    }
+
+    /**
+     * Is the component a form.
+     *
+     * <p> Note normally a form inherits from UIForm, but there might be some
+     * component libraries out there that might not honor that. So we check the
+     * component family to avoid warning in cases where 3rd party form component
+     * that does not extend UIForm (eg. tr:form) is used. </p>
+     *
+     * @param component the UI component.
+     * @return true if it is a form, false otherwise.
+     */
+    private static boolean isForm(UIComponent component) {
+        return (component instanceof UIForm || (component.getFamily() != null && component.getFamily().endsWith("Form")));
+    }
+
+    /**
+     * Is the component in need of a form.
+     *
+     * @param component the UI component.
+     * @return true if the component is in need of a form, false otherwise.
+     */
+    private static boolean isInNeedOfForm(UIComponent component) {
+        return (component instanceof ActionSource
+                || component instanceof ActionSource2
+                || component instanceof EditableValueHolder);
+    }
+
+    /**
+     * Add the form omitted message.
+     *
+     * @param context the Faces context.
+     */
+    private static void addFormOmittedMessage(FacesContext context) {
+        String key = MessageUtils.MISSING_FORM_ERROR;
+        Object[] parameters = new Object[]{};
+        boolean missingFormReported = false;
+
+        FacesMessage message = MessageUtils.getExceptionMessage(key, parameters);
+        List<FacesMessage> messages = context.getMessageList();
+        for (FacesMessage item : messages) {
+            if (item.getDetail().equals(message.getDetail())) {
+                missingFormReported = true;
+                break;
+            }
+        }
+        if (!missingFormReported) {
+            message.setSeverity(FacesMessage.SEVERITY_WARN);
+            context.addMessage(null, message);
+        }
+    }
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/application/view/JspStateManagementStrategy.java b/jsf-ri/src/main/java/com/sun/faces/application/view/JspStateManagementStrategy.java
new file mode 100644
index 0000000..c03e1aa
--- /dev/null
+++ b/jsf-ri/src/main/java/com/sun/faces/application/view/JspStateManagementStrategy.java
@@ -0,0 +1,459 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.application.view;
+
+import com.sun.faces.renderkit.RenderKitUtils;
+import com.sun.faces.util.FacesLogger;
+import com.sun.faces.util.Util;
+import java.io.Externalizable;
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.faces.FacesException;
+import javax.faces.application.ProjectStage;
+import javax.faces.component.UIComponent;
+import javax.faces.component.UIViewRoot;
+import javax.faces.context.FacesContext;
+import javax.faces.render.ResponseStateManager;
+import javax.faces.view.StateManagementStrategy;
+
+/**
+ * A state management strategy for JSP.
+ *
+ * @author Manfred Riem (manfred.riem at oracle.com)
+ */
+public class JspStateManagementStrategy extends StateManagementStrategy {
+
+    /**
+     * Stores the logger.
+     */
+    private static final Logger LOGGER = FacesLogger.APPLICATION_VIEW.getLogger();
+    /**
+     * Stores the class map.
+     */
+    private Map<String, Class<?>> classMap;
+    /**
+     * Are we in development mode.
+     */
+    private boolean isDevelopmentMode;
+
+    /**
+     * Constructor.
+     */
+    public JspStateManagementStrategy() {
+        this(FacesContext.getCurrentInstance());
+    }
+
+    /**
+     * Constructor.
+     *
+     * @param context the Faces context.
+     */
+    public JspStateManagementStrategy(FacesContext context) {
+        isDevelopmentMode = context.isProjectStage(ProjectStage.Development);
+        classMap = new ConcurrentHashMap<String, Class<?>>(32);
+    }
+
+    /**
+     * Capture the child.
+     *
+     * @param tree the tree.
+     * @param parent the parent.
+     * @param c the component.
+     */
+    private void captureChild(List<TreeNode> tree, int parent, UIComponent c) {
+
+        if (!c.isTransient()) {
+            TreeNode n = new TreeNode(parent, c);
+            int pos = tree.size();
+            tree.add(n);
+            captureRest(tree, pos, c);
+        }
+    }
+
+    /**
+     * Capture the facet.
+     *
+     * @param tree the tree.
+     * @param parent the parent.
+     * @param name the facet name.
+     * @param c the component.
+     */
+    private void captureFacet(List<TreeNode> tree, int parent, String name, UIComponent c) {
+
+        if (!c.isTransient()) {
+            FacetNode n = new FacetNode(parent, name, c);
+            int pos = tree.size();
+            tree.add(n);
+            captureRest(tree, pos, c);
+        }
+    }
+
+    /**
+     * Capture the rest.
+     *
+     * @param tree the tree.
+     * @param pos the position.
+     * @param c the component.
+     */
+    private void captureRest(List<TreeNode> tree, int pos, UIComponent c) {
+
+        int sz = c.getChildCount();
+        if (sz > 0) {
+            List<UIComponent> child = c.getChildren();
+            for (int i = 0; i < sz; i++) {
+                captureChild(tree, pos, child.get(i));
+            }
+        }
+
+        sz = c.getFacetCount();
+        if (sz > 0) {
+            for (Map.Entry<String, UIComponent> entry : c.getFacets().entrySet()) {
+                captureFacet(tree, pos, entry.getKey(), entry.getValue());
+            }
+        }
+    }
+
+    /**
+     * Create a new component instance.
+     *
+     * @param n the tree node.
+     * @return the UI component.
+     * @throws FacesException when a serious error occurs.
+     */
+    private UIComponent newInstance(TreeNode n) throws FacesException {
+        if (LOGGER.isLoggable(Level.FINEST)) {
+            LOGGER.log(Level.FINEST, "newInstance", n.componentType);
+        }
+
+        try {
+            Class<?> t = ((classMap != null) ? classMap.get(n.componentType) : null);
+            if (t == null) {
+                t = Util.loadClass(n.componentType, n);
+                if (t != null && classMap != null) {
+                    classMap.put(n.componentType, t);
+                } else {
+                    if (!isDevelopmentMode) {
+                        throw new NullPointerException();
+                    }
+                }
+            }
+
+            assert (t != null);
+            UIComponent c = (UIComponent) t.newInstance();
+            c.setId(n.id);
+
+            return c;
+        } catch (Exception e) {
+            throw new FacesException(e);
+        }
+
+    }
+
+    /**
+     * Restore the component tree.
+     *
+     * @param renderKitId the render kit id.
+     * @param tree the saved tree.
+     * @return the view root.
+     * @throws FacesException when a serious error occurs.
+     */
+    private UIViewRoot restoreTree(FacesContext context,
+                                   String renderKitId,
+                                   Object[] tree) throws FacesException {
+        if (LOGGER.isLoggable(Level.FINEST)) {
+            LOGGER.log(Level.FINEST, "restoreTree", renderKitId);
+        }
+
+        UIComponent c;
+        FacetNode fn;
+        TreeNode tn;
+        for (int i = 0; i < tree.length; i++) {
+            if (tree[i] instanceof FacetNode) {
+                fn = (FacetNode) tree[i];
+                c = newInstance(fn);
+                tree[i] = c;
+                if (i != fn.parent) {
+                    ((UIComponent) tree[fn.parent]).getFacets().put(fn.facetName, c);
+                }
+
+            } else {
+                tn = (TreeNode) tree[i];
+                c = newInstance(tn);
+                tree[i] = c;
+                if (i != tn.parent) {
+                    ((UIComponent) tree[tn.parent]).getChildren().add(c);
+                } else {
+                    assert (c instanceof UIViewRoot);
+                    UIViewRoot viewRoot = (UIViewRoot) c;
+                    context.setViewRoot(viewRoot);
+                    viewRoot.setRenderKitId(renderKitId);
+                }
+            }
+        }
+        return (UIViewRoot) tree[0];
+
+    }
+
+    /**
+     * Restore the view.
+     *
+     * @param context the Faces context.
+     * @param viewId the view id.
+     * @param renderKitId the render kit id.
+     * @return the view root.
+     */
+    @Override
+    public UIViewRoot restoreView(FacesContext context, String viewId, String renderKitId) {
+        if (LOGGER.isLoggable(Level.FINEST)) {
+            LOGGER.log(Level.FINEST, "restoreView", new Object[]{viewId, renderKitId});
+        }
+
+        UIViewRoot result = null;
+
+        ResponseStateManager rsm = RenderKitUtils.getResponseStateManager(context, renderKitId);
+        Object[] state = (Object[]) rsm.getState(context, viewId);
+
+        if (state != null && state.length >= 2) {
+            /*
+             * Restore the component tree.
+             */
+            if (state[0] != null) {
+                result = restoreTree(context, renderKitId, ((Object[]) state[0]).clone());
+                context.setViewRoot(result);
+            }
+            /*
+             * Restore the component state.
+             */
+            if (result != null && state[1] != null) {
+                result.processRestoreState(context, state[1]);
+            }
+        }
+
+        return result;
+    }
+
+    /**
+     * Save the view.
+     *
+     * @param context the Faces context.
+     * @return the saved view.
+     */
+    @Override
+    public Object saveView(FacesContext context) {
+        if (LOGGER.isLoggable(Level.FINEST)) {
+            LOGGER.finest("saveView");
+        }
+
+        Object[] result;
+        UIViewRoot viewRoot = context.getViewRoot();
+
+        /*
+         * Check uniqueness.
+         */
+        Util.checkIdUniqueness(context, viewRoot, new HashSet<String>(viewRoot.getChildCount() << 1));
+
+        /*
+         * Save the component state.
+         */
+        Object state = viewRoot.processSaveState(context);
+
+        /*
+         * Save the tree structure.
+         */
+        List<TreeNode> treeList = new ArrayList<TreeNode>(32);
+        captureChild(treeList, 0, viewRoot);
+        Object[] tree = treeList.toArray();
+
+        result = new Object[]{tree, state};
+        return result;
+    }
+
+    /**
+     * Inner class used to store a facet in the saved component tree.
+     */
+    private static final class FacetNode extends TreeNode {
+
+        /**
+         * Stores the serial version UID.
+         */
+        private static final long serialVersionUID = -3777170310958005106L;
+        /**
+         * Stores the facet name.
+         */
+        public String facetName;
+
+        /**
+         * Constructor.
+         */
+        public FacetNode() {
+        }
+
+        /**
+         * Constructor.
+         *
+         * @param parent the parent.
+         * @param name the facet name.
+         * @param c the component.
+         */
+        public FacetNode(int parent, String name, UIComponent c) {
+
+            super(parent, c);
+            this.facetName = name;
+        }
+
+        /**
+         * Read the facet node in.
+         *
+         * @param in the object input.
+         * @throws IOException when an I/O error occurs.
+         * @throws ClassNotFoundException when the class could not be found.
+         */
+        @Override
+        public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
+
+            super.readExternal(in);
+            this.facetName = in.readUTF();
+
+        }
+
+        /**
+         * Write the facet node out.
+         *
+         * @param out the object output.
+         * @throws IOException when an I/O error occurs.
+         */
+        @Override
+        public void writeExternal(ObjectOutput out) throws IOException {
+
+            super.writeExternal(out);
+            out.writeUTF(this.facetName);
+
+        }
+    }
+
+    /**
+     * Inner class used to store a node in the saved component tree.
+     */
+    private static class TreeNode implements Externalizable {
+
+        /**
+         * Stores the serial version UID.
+         */
+        private static final long serialVersionUID = -835775352718473281L;
+        /**
+         * Stores the NULL_ID constant.
+         */
+        private static final String NULL_ID = "";
+        /**
+         * Stores the component type.
+         */
+        public String componentType;
+        /**
+         * Stores the id.
+         */
+        public String id;
+        /**
+         * Stores the parent.
+         */
+        public int parent;
+
+        /**
+         * Constructor.
+         */
+        public TreeNode() {
+        }
+
+        /**
+         * Constructor.
+         *
+         * @param parent the parent.
+         * @param c the component.
+         */
+        public TreeNode(int parent, UIComponent c) {
+
+            this.parent = parent;
+            this.id = c.getId();
+            this.componentType = c.getClass().getName();
+
+        }
+
+        /**
+         * Read the tree node in.
+         *
+         * @param in the object input.
+         * @throws IOException when an I/O error occurs.
+         * @throws ClassNotFoundException when the class could not be found.
+         */
+        public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
+
+            this.parent = in.readInt();
+            this.componentType = in.readUTF();
+            this.id = in.readUTF();
+            if (id.length() == 0) {
+                id = null;
+            }
+        }
+
+        /**
+         * Write the tree node out.
+         *
+         * @param out the object output.
+         * @throws IOException when an I/O error occurs.
+         */
+        public void writeExternal(ObjectOutput out) throws IOException {
+
+            out.writeInt(this.parent);
+            out.writeUTF(this.componentType);
+            if (this.id != null) {
+                out.writeUTF(this.id);
+            } else {
+                out.writeUTF(NULL_ID);
+            }
+        }
+    }
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/application/view/JspViewHandlingStrategy.java b/jsf-ri/src/main/java/com/sun/faces/application/view/JspViewHandlingStrategy.java
index 94b27eb..8445072 100644
--- a/jsf-ri/src/main/java/com/sun/faces/application/view/JspViewHandlingStrategy.java
+++ b/jsf-ri/src/main/java/com/sun/faces/application/view/JspViewHandlingStrategy.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -57,7 +61,6 @@ import javax.servlet.http.HttpServletResponse;
 import javax.servlet.jsp.jstl.core.Config;
 
 import com.sun.faces.application.ViewHandlerResponseWrapper;
-import com.sun.faces.config.WebConfiguration;
 import com.sun.faces.util.FacesLogger;
 import com.sun.faces.util.MessageUtils;
 import com.sun.faces.util.RequestStateManager;
@@ -286,9 +289,10 @@ public class JspViewHandlingStrategy extends ViewHandlingStrategy {
 
     }
 
-
-
-
+    @Override 
+    public String getId() {
+        return JSP_VIEW_DECLARATION_LANGUAGE_ID;
+    }
 
     // --------------------------------------------------------- Private Methods
 
diff --git a/jsf-ri/src/main/java/com/sun/faces/application/view/MultiViewHandler.java b/jsf-ri/src/main/java/com/sun/faces/application/view/MultiViewHandler.java
index 4eead9b..53af1c7 100644
--- a/jsf-ri/src/main/java/com/sun/faces/application/view/MultiViewHandler.java
+++ b/jsf-ri/src/main/java/com/sun/faces/application/view/MultiViewHandler.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -50,15 +54,21 @@ import javax.servlet.http.HttpServletResponse;
 
 import com.sun.faces.RIConstants;
 import com.sun.faces.config.WebConfiguration;
+import com.sun.faces.renderkit.RenderKitUtils;
 import com.sun.faces.util.FacesLogger;
 import com.sun.faces.util.MessageUtils;
 import com.sun.faces.util.Util;
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
 import java.util.*;
-import java.net.MalformedURLException;
 
+import java.util.concurrent.CopyOnWriteArraySet;
 import javax.faces.FactoryFinder;
-import javax.faces.component.*;
-import javax.faces.view.*;
+import javax.faces.component.UIViewParameter;
+import javax.faces.component.UIViewRoot;
+import javax.faces.view.ViewDeclarationLanguage;
+import javax.faces.view.ViewDeclarationLanguageFactory;
+import javax.faces.view.ViewMetadata;
 
 /**
  * This {@link ViewHandler} implementation handles both JSP-based and
@@ -70,6 +80,7 @@ public class MultiViewHandler extends ViewHandler {
     private static final Logger logger = FacesLogger.APPLICATION.getLogger();
 
     private String[] configuredExtensions;
+    private Set<String> protectedViews;
     private boolean extensionsSet;
     
     private ViewDeclarationLanguageFactory vdlFactory;
@@ -86,6 +97,7 @@ public class MultiViewHandler extends ViewHandler {
         extensionsSet = config.isSet(WebConfiguration.WebContextInitParameter.DefaultSuffix);
         vdlFactory = (ViewDeclarationLanguageFactory)
                 FactoryFinder.getFactory(FactoryFinder.VIEW_DECLARATION_LANGUAGE_FACTORY);
+        protectedViews = new CopyOnWriteArraySet<String>();
 
     }
 
@@ -94,19 +106,13 @@ public class MultiViewHandler extends ViewHandler {
 
 
     /**
-     * Do not call the default implementation of {@link javax.faces.application.ViewHandler#initView(javax.faces.context.FacesContext)}
-     * if the {@link javax.faces.context.ExternalContext#getRequestCharacterEncoding()} returns a
-     * <code>non-null</code> result.
+     * Call the default implementation of {@link javax.faces.application.ViewHandler#initView(javax.faces.context.FacesContext)}
      *
      * @see javax.faces.application.ViewHandler#initView(javax.faces.context.FacesContext)
      */
     @Override
     public void initView(FacesContext context) throws FacesException {
-
-        if (context.getExternalContext().getRequestCharacterEncoding() == null) {
-            super.initView(context);
-        }
-
+        super.initView(context);
     }
 
 
@@ -236,8 +242,7 @@ public class MultiViewHandler extends ViewHandler {
     public void writeState(FacesContext context) throws IOException {
 
         Util.notNull("context", context);
-        if (!context.getPartialViewContext().isPartialRequest()
-              && !context.getViewRoot().isTransient()) {
+        if (!context.getPartialViewContext().isAjaxRequest()) {
             if (logger.isLoggable(Level.FINE)) {
                 logger.fine("Begin writing marker for viewId " +
                             context.getViewRoot().getViewId());
@@ -255,7 +260,6 @@ public class MultiViewHandler extends ViewHandler {
                             context.getViewRoot().getViewId());
             }
         }
-
     }
 
 
@@ -267,11 +271,55 @@ public class MultiViewHandler extends ViewHandler {
      * @see ViewHandler#getActionURL(javax.faces.context.FacesContext, String)
      */
     public String getActionURL(FacesContext context, String viewId) {
+        String result = getActionURLWithoutViewProtection(context, viewId);
+        // http://java.net/jira/browse/JAVASERVERFACES-2204
+        // PENDING: this code is optimized to be fast to write.
+        // It must be optimized to be fast to run.
+        
+        // See git clone ssh://edburns@git.java.net/grizzly~git 1_9_36 for
+        // how grizzly does this.
+        ViewHandler viewHandler = context.getApplication().getViewHandler();
+        Set<String> urlPatterns = viewHandler.getProtectedViewsUnmodifiable();
+        // Implement section 12.1 of the Servlet spec.
+        boolean viewIdIsProtected = false;
+        for (String cur : urlPatterns) {
+            if (cur.equals(viewId)) {
+                viewIdIsProtected = true;
+            }
+            if (viewIdIsProtected) {
+                break;
+            }
+        }
+        if (viewIdIsProtected) {
+            StringBuilder builder = new StringBuilder(result);
+            // If the result already has a query string...
+            if (result.contains("?")) {
+                // ...assume it also has one or more parameters, and 
+                // append an additional parameter.
+                builder.append("&");
+            } else {
+                // Otherwise, this is the first parameter in the result.
+                builder.append("?");
+            }
+            
+            String rkId = viewHandler.calculateRenderKitId(context);
+            ResponseStateManager rsm = RenderKitUtils.getResponseStateManager(context, rkId);
+            String tokenValue = rsm.getCryptographicallyStrongTokenFromSession(context);
+            builder.append(ResponseStateManager.NON_POSTBACK_VIEW_TOKEN_PARAM).
+                    append("=").append(tokenValue);
+            result = builder.toString();
+
+        }
+        
+        return result;
+    }
+
+    private String getActionURLWithoutViewProtection(FacesContext context, String viewId) {
 
         Util.notNull("context", context);
         Util.notNull("viewId", viewId);
 
-        if (viewId.charAt(0) != '/') {
+        if (0 == viewId.length() || viewId.charAt(0) != '/') {
             String message =
                   MessageUtils.getExceptionMessageString(
                         MessageUtils.ILLEGAL_VIEW_ID_ID,
@@ -308,7 +356,15 @@ public class MultiViewHandler extends ViewHandler {
         if (period < 0) {
             return (contextPath + viewId + mapping);
         } else if (!viewId.endsWith(mapping)) {
+
+            for (String ext : configuredExtensions) {
+                if (viewId.endsWith(ext)) {
+                    return (contextPath + viewId.substring(0, viewId.indexOf(ext)) + mapping);
+                }
+            }
+
             return (contextPath + viewId.substring(0, period) + mapping);
+         
         } else {
             return (contextPath + viewId);
         }
@@ -352,6 +408,20 @@ public class MultiViewHandler extends ViewHandler {
 
     }
 
+    @Override
+    public void addProtectedView(String urlPattern) {
+        protectedViews.add(urlPattern);
+    }
+
+    @Override
+    public Set<String> getProtectedViewsUnmodifiable() {
+        return Collections.unmodifiableSet(protectedViews);
+    }
+
+    @Override
+    public boolean removeProtectedView(String urlPattern) {
+        return protectedViews.remove(urlPattern);
+    }
 
     /**
      * @see ViewHandler#getRedirectURL(javax.faces.context.FacesContext, String, java.util.Map, boolean)
@@ -359,6 +429,35 @@ public class MultiViewHandler extends ViewHandler {
     @Override
     public String getRedirectURL(FacesContext context, String viewId, Map<String, List<String>> parameters, boolean includeViewParams) {
 
+        String encodingFromContext =
+              (String) context.getAttributes().get(RIConstants.FACELETS_ENCODING_KEY);
+        if (null == encodingFromContext) {
+            encodingFromContext = (String) context.getViewRoot().getAttributes().
+                    get(RIConstants.FACELETS_ENCODING_KEY);
+        }
+        
+        String responseEncoding = (null != encodingFromContext) ? encodingFromContext : context.getExternalContext().getResponseCharacterEncoding();
+
+        if (parameters != null) {
+            Map<String, List<String>> decodedParameters = new HashMap<String, List<String>>();
+            for (Map.Entry<String, List<String>> entry : parameters.entrySet()) {
+                String string = entry.getKey();
+                List<String> list = entry.getValue();
+                List<String> values = new ArrayList<String>();
+                for (Iterator<String> it = list.iterator(); it.hasNext();) {
+                    String value = it.next();
+                    try {
+                        value = URLDecoder.decode(value, responseEncoding);
+                    } catch(UnsupportedEncodingException e) {
+                        throw new RuntimeException("Unable to decode");
+                    }
+                    values.add(value);
+                }
+                decodedParameters.put(string, values);
+            }
+            parameters = decodedParameters;
+        }
+                
         Map<String,List<String>> params;
         if (includeViewParams) {
             params = getFullParameterList(context, viewId, parameters);
@@ -376,10 +475,7 @@ public class MultiViewHandler extends ViewHandler {
     @Override
     public ViewDeclarationLanguage getViewDeclarationLanguage(FacesContext context,
                                                               String viewId) {
-
-        String actualViewId = derivePhysicalViewId(context, viewId, false);
-        return vdlFactory.getViewDeclarationLanguage(actualViewId);
-
+        return vdlFactory.getViewDeclarationLanguage(viewId);
     }
 
     @Override
@@ -389,6 +485,13 @@ public class MultiViewHandler extends ViewHandler {
 
     }
 
+    @Override
+    public String deriveLogicalViewId(FacesContext context, String rawViewId) {
+
+        return derivePhysicalViewId(context, rawViewId, false);
+
+    }
+
 
     // ------------------------------------------------------- Protected Methods
 
@@ -451,17 +554,12 @@ public class MultiViewHandler extends ViewHandler {
             appendOrReplaceExtension(viewId, ext, length, extIdx, buffer);
 
             String convertedViewId = buffer.toString();
-            try {
-                if (context.getExternalContext().getResource(convertedViewId) != null) {
-                    // RELEASE_PENDING (rlubke,driscoll) cache the lookup
-                    return convertedViewId;
-                }
-            } catch (MalformedURLException e) {
-                if (logger.isLoggable(Level.SEVERE)) {
-                    logger.log(Level.SEVERE,
-                               e.toString(),
-                               e);
-                }
+
+            ViewDeclarationLanguage vdl = getViewDeclarationLanguage(context, convertedViewId);
+            
+            if (vdl.viewExists(context, convertedViewId)) {
+                // RELEASE_PENDING (rlubke,driscoll) cache the lookup
+                return convertedViewId;
             }
         }
 
@@ -492,22 +590,15 @@ public class MultiViewHandler extends ViewHandler {
                     }
 
                 }
-                try {
-                    if (checkPhysical) {
-                        return ((ctx.getExternalContext().getResource(viewId) != null) ? viewId : null);
-                    } else {
-                        return viewId;
-                    }
-                } catch (MalformedURLException mue) {
-                    if (logger.isLoggable(Level.SEVERE)) {
-                        logger.log(Level.SEVERE,
-                                   mue.toString(),
-                                   mue);
-                    }
-                    return null;
+
+                if (checkPhysical) {
+                    ViewDeclarationLanguage vdl = getViewDeclarationLanguage(ctx, viewId);
+                                                                                
+                    return (vdl.viewExists(ctx, viewId) ? viewId : null);
+                } else {
+                    return viewId;
                 }
             }
-
         }
         return rawViewId;
     }
@@ -535,7 +626,7 @@ public class MultiViewHandler extends ViewHandler {
 
         UIViewRoot currentRoot = ctx.getViewRoot();
         String currentViewId = currentRoot.getViewId();
-        Collection<UIViewParameter> toViewParams;
+        Collection<UIViewParameter> toViewParams = Collections.emptyList();
         Collection<UIViewParameter> currentViewParams;
         boolean currentIsSameAsNew = false;
         currentViewParams = ViewMetadata.getViewParameters(currentRoot);
@@ -547,8 +638,10 @@ public class MultiViewHandler extends ViewHandler {
         else {
             ViewDeclarationLanguage pdl = getViewDeclarationLanguage(ctx, viewId);
             ViewMetadata viewMetadata = pdl.getViewMetadata(ctx, viewId);
-            UIViewRoot root = viewMetadata.createMetadataView(ctx);
-            toViewParams = ViewMetadata.getViewParameters(root);
+            if (null != viewMetadata) {
+                UIViewRoot root = viewMetadata.createMetadataView(ctx);
+                toViewParams = ViewMetadata.getViewParameters(root);
+            }
         }
 
         if (toViewParams.isEmpty()) {
@@ -556,26 +649,31 @@ public class MultiViewHandler extends ViewHandler {
         }
 
         for (UIViewParameter viewParam : toViewParams) {
-            String value;
+            String value = null;
             // don't bother looking at view parameter if it's been overridden
             if (existingParameters.containsKey(viewParam.getName())) {
                 continue;
             }
-            else if (paramHasValueExpression(viewParam)) {
+            
+            if (paramHasValueExpression(viewParam)) {
                 value = viewParam.getStringValueFromModel(ctx);
-            } else {
-                // Anonymous view parameter:
-                // Get string value from UIViewParameter instance stored in current view
+            }
+
+            if (value == null) {
                 if (currentIsSameAsNew) {
+                    /*
+                     * Anonymous view parameter: get string value from UIViewParameter instance stored in current view.
+                     */
                     value = viewParam.getStringValue(ctx);
                 }
-                // ...or transfer string value from matching UIViewParameter instance stored in current view
                 else {
-                    value = getStringValueToTransfer(ctx,
-                                                     viewParam,
-                                                     currentViewParams);
+                    /*
+                     * Or transfer string value from matching UIViewParameter instance stored in current view.
+                     */
+                    value = getStringValueToTransfer(ctx, viewParam, currentViewParams);
                 }
             }
+            
             if (value != null) {
                 List<String> existing = existingParameters.get(viewParam.getName());
                 if (existing == null) {
@@ -584,7 +682,6 @@ public class MultiViewHandler extends ViewHandler {
                 }
                 existing.add(value);
             }
-
         }
     }
 
@@ -685,14 +782,11 @@ public class MultiViewHandler extends ViewHandler {
                 if ((null != candidate.getName() && null != param.getName()) &&
                     candidate.getName().equals(param.getName())) {
                     return candidate.getStringValue(context);
-                } else {
-                    return param.getStringValue(context);
                 }
             }
         }
 
-        return null;
-
+        return param.getStringValue(context);
     }
 
     // Utility method used by viewId conversion.  Appends the extension
diff --git a/jsf-ri/src/main/java/com/sun/faces/application/view/StateManagementStrategyImpl.java b/jsf-ri/src/main/java/com/sun/faces/application/view/StateManagementStrategyImpl.java
deleted file mode 100644
index ded24e6..0000000
--- a/jsf-ri/src/main/java/com/sun/faces/application/view/StateManagementStrategyImpl.java
+++ /dev/null
@@ -1,376 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package com.sun.faces.application.view;
-
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-import javax.faces.FactoryFinder;
-import javax.faces.component.UIComponent;
-import javax.faces.component.UIViewRoot;
-import javax.faces.component.visit.VisitResult;
-import javax.faces.context.FacesContext;
-import javax.faces.render.ResponseStateManager;
-
-import com.sun.faces.context.StateContext;
-import com.sun.faces.renderkit.RenderKitUtils;
-import com.sun.faces.util.ComponentStruct;
-import com.sun.faces.util.FacesLogger;
-import com.sun.faces.util.MessageUtils;
-import com.sun.faces.util.Util;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.io.IOException;
-import javax.faces.application.StateManager;
-import javax.faces.component.ContextCallback;
-import javax.faces.component.visit.VisitCallback;
-import javax.faces.component.visit.VisitContext;
-import javax.faces.view.StateManagementStrategy;
-import javax.faces.FacesException;
-import javax.faces.application.Application;
-import javax.faces.event.PostRestoreStateEvent;
-import javax.faces.view.ViewDeclarationLanguage;
-import javax.faces.view.ViewDeclarationLanguageFactory;
-
-/**
- * <p>
- * A <code>StateManager</code> implementation to meet the requirements
- * of the specification.
- * </p>
- *
- * <p>
- * For those who had compile dependencies on this class, we're sorry for any
- * inconvenience, but this had to be re-worked as the version you depended on
- * was incorrectly implemented.  
- * </p>
- */
-public class StateManagementStrategyImpl extends StateManagementStrategy {
-
-    private static final Logger LOGGER = FacesLogger.APPLICATION_VIEW.getLogger();
-
-    private final ViewDeclarationLanguageFactory vdlFactory;
-
-    private static final String CLIENTIDS_TO_REMOVE_NAME =
-            "com.sun.faces.application.view.CLIENTIDS_TO_REMOVE";
-    private static final String CLIENTIDS_TO_ADD_NAME =
-            "com.sun.faces.application.view.CLIENTIDS_TO_ADD";
-
-
-    // ------------------------------------------------------------ Constructors
-
-
-    /**
-     * Create a new <code>StateManagerImpl</code> instance.
-     */
-    public StateManagementStrategyImpl() {
-
-        vdlFactory = (ViewDeclarationLanguageFactory)
-              FactoryFinder.getFactory(FactoryFinder.VIEW_DECLARATION_LANGUAGE_FACTORY);
-
-    }
-
-    
-    // ----------------------------------------------- Methods from StateManager
-
-
-    /**
-     * @see {@link javax.faces.application.StateManager#saveView(javax.faces.context.FacesContext))
-     */
-    @Override
-    public Object saveView(FacesContext context) {
-
-        if (context == null) {
-            return null;
-        }
-
-        // irrespective of method to save the tree, if the root is transient
-        // no state information needs to  be persisted.
-        UIViewRoot viewRoot = context.getViewRoot();
-        if (viewRoot.isTransient()) {
-            return null;
-        }
-
-
-        // honor the requirement to check for id uniqueness
-        Util.checkIdUniqueness(context,
-                               viewRoot,
-                               new HashSet<String>(viewRoot.getChildCount() << 1));
-        final Map<String,Object> stateMap = new HashMap<String,Object>();
-
-// -----------------------------------------------------------------------------
-//        COMMENTED OUT DUE TO ISSUE 1310 UNTIL NEW VISIT HINTS CAN BE
-//        ADDED TO THE API
-// -----------------------------------------------------------------------------
-//        VisitContext visitContext = VisitContext.createVisitContext(context);
-//        final FacesContext finalContext = context;
-//        viewRoot.visitTree(visitContext, new VisitCallback() {
-//
-//            public VisitResult visit(VisitContext context, UIComponent target) {
-//                VisitResult result = VisitResult.ACCEPT;
-//                Object stateObj;
-//                if (!target.isTransient()) {
-//                    if (target.getAttributes().containsKey(DYNAMIC_COMPONENT)) {
-//                        stateObj = new StateHolderSaver(finalContext, target);
-//                    } else {
-//                        stateObj = target.saveState(context.getFacesContext());
-//                    }
-//                    if (null != stateObj) {
-//                        stateMap.put(target.getClientId(context.getFacesContext()),
-//                                                        stateObj);
-//                    }
-//                } else {
-//                    return result;
-//                }
-//
-//                return result;
-//            }
-//
-//        });
-// -----------------------------------------------------------------------------
-
-        StateContext stateContext = StateContext.getStateContext(context);
-
-        // ADDED FOR ISSUE 1310 - REMOVE ONCE NEW VISIT HINTS ARE ADDED TO THE
-        // API
-        saveComponentState(viewRoot, context, stateContext, stateMap);
-
-        // handle dynamic adds/removes
-        List<String> removeList = stateContext.getDynamicRemoves();
-        if (null != removeList && !removeList.isEmpty()) {
-            stateMap.put(CLIENTIDS_TO_REMOVE_NAME, removeList);
-        }
-        Map<String, ComponentStruct> addList = stateContext.getDynamicAdds();
-        if (null != addList && !addList.isEmpty()) {
-            List<Object> savedAddList = new ArrayList<Object>(addList.size());
-            for (ComponentStruct s : addList.values()) {
-                savedAddList.add(s.saveState(context));
-            }
-            stateMap.put(CLIENTIDS_TO_ADD_NAME, savedAddList.toArray());
-        }
-        //return stateMap;
-        return new Object[] { null, stateMap };
-
-    }
-
-
-    /**
-     * @see {@link StateManager#restoreView(javax.faces.context.FacesContext, String, String)}
-     */
-    @Override
-    public UIViewRoot restoreView(FacesContext context,
-                                  String viewId,
-                                  String renderKitId) {
-
-        ResponseStateManager rsm =
-              RenderKitUtils.getResponseStateManager(context, renderKitId);
-        boolean processingEvents = context.isProcessingEvents();
-        // Build the tree to initial state
-        UIViewRoot viewRoot;
-        try {
-            ViewDeclarationLanguage vdl = vdlFactory.getViewDeclarationLanguage(viewId);
-            viewRoot = vdl.getViewMetadata(context, viewId).createMetadataView(context);
-            context.setViewRoot(viewRoot);
-            context.setProcessingEvents(true);
-            vdl.buildView(context, viewRoot);
-        } catch (IOException ioe) {
-            throw new FacesException(ioe);
-        }
-        Object[] rawState = (Object[]) rsm.getState(context, viewId);
-        if (rawState == null) {
-            return null; // trigger a ViewExpiredException
-        }
-        //noinspection unchecked
-        final Map<String, Object> state = (Map<String,Object>) rawState[1];
-        final StateContext stateContext = StateContext.getStateContext(context);
-
-        if (null != state) {
-            final Application app = context.getApplication();
-            // We need to clone the tree, otherwise we run the risk
-            // of being left in a state where the restored
-            // UIComponent instances are in the session instead
-            // of the TreeNode instances.  This is a problem
-            // for servers that persist session data since
-            // UIComponent instances are not serializable.
-            VisitContext visitContext = VisitContext.createVisitContext(context);
-            viewRoot.visitTree(visitContext, new VisitCallback() {
-
-                public VisitResult visit(VisitContext context, UIComponent target) {
-                    VisitResult result = VisitResult.ACCEPT;
-                    String cid = target.getClientId(context.getFacesContext());
-                    Object stateObj = state.get(cid);
-                    if (stateObj != null && !stateContext.componentAddedDynamically(target)) {
-                        try {
-                            target.restoreState(context.getFacesContext(),
-                                                stateObj);
-                        } catch (Exception e) {
-                            String msg =
-                                  MessageUtils.getExceptionMessageString(
-                                        MessageUtils.PARTIAL_STATE_ERROR_RESTORING_ID,
-                                        cid,
-                                        e.toString());
-                            throw new FacesException(msg, e);
-                        }
-                    }
-
-                    return result;
-                }
-
-            });
-            
-            // Handle dynamic add/removes
-            //noinspection unchecked
-            List<String> removeList = (List<String>) state.get(CLIENTIDS_TO_REMOVE_NAME);
-            if (null != removeList && !removeList.isEmpty()) {
-                for (String cur : removeList) {
-                    boolean trackMods = stateContext.trackViewModifications();
-                    if (trackMods) {
-                        stateContext.setTrackViewModifications(false);
-                    }
-                    viewRoot.invokeOnComponent(context, cur, new ContextCallback() {
-
-                        public void invokeContextCallback(FacesContext context, UIComponent target) {
-                            UIComponent parent = target.getParent();
-                            if (null != parent) {
-                                parent.getChildren().remove(target);
-                            }
-                        }
-                        
-                    });
-                    if (trackMods) {
-                        stateContext.setTrackViewModifications(true);
-                    }
-                }
-            }
-
-            Object restoredAddList[] = (Object []) state.get(CLIENTIDS_TO_ADD_NAME);
-            if (restoredAddList != null && restoredAddList.length > 0) {
-                // Restore the list of added components
-                List<ComponentStruct> addList = new ArrayList<ComponentStruct>(restoredAddList.length);
-                for (Object aRestoredAddList : restoredAddList) {
-                    ComponentStruct cur = new ComponentStruct();
-                    cur.restoreState(context, aRestoredAddList);
-                    addList.add(cur);
-                }
-                // restore the components themselves
-                for (ComponentStruct cur : addList) {
-                    final ComponentStruct finalCur = cur;
-                    // Find the parent
-                    viewRoot.invokeOnComponent(context, finalCur.parentClientId,
-                            new ContextCallback() {
-                        public void invokeContextCallback(FacesContext context, UIComponent parent) {
-                            // Create the child
-                            StateHolderSaver saver = (StateHolderSaver) state.get(finalCur.clientId);
-                            UIComponent toAdd = (UIComponent) saver.restore(context);
-                            int idx = finalCur.indexOfChildInParent;
-                            if (idx == -1) {
-                                // add facet to the parent
-                                parent.getFacets().put(finalCur.facetName, toAdd);
-                            } else {
-                                // add the child to the parent at correct index
-                                try {
-                                    parent.getChildren().add(finalCur.indexOfChildInParent, toAdd);
-                                } catch (IndexOutOfBoundsException ioobe) {
-                                    // the indexing within the parent list is off during the restore.
-                                    // This is most likely due to a transient component added during
-                                    // RENDER_REPONSE phase.
-                                    if (LOGGER.isLoggable(Level.FINE)) {
-                                        LOGGER.log(Level.FINE,
-                                                   "Unable to insert child with client ID {0} into parent with client ID {1} into list at index {2}.",
-                                                   new Object[] { finalCur.clientId,
-                                                                  finalCur.parentClientId,
-                                                                  finalCur.indexOfChildInParent});
-                                    }
-                                    parent.getChildren().add(toAdd);
-                                }
-                            }
-                        }
-                    });
-                }
-            }          
-        } else {
-            viewRoot = null;
-        }
-        context.setProcessingEvents(processingEvents);
-        return viewRoot;
-
-    }
-
-
-
-
-    // --------------------------------------------------------- Private Methods
-
-
-    /**
-     * Temporary method added for issue 1310 to perform state saving as it
-     * was done in 1.2 as calling VisitTree in its current incarnation may
-     * have unintended side effects.
-     *
-     * @param c the component to process
-     * @param ctx the <code>FacesContext</code> for the current request
-     * @param stateMap a <code>Map</code> to push saved state keyed by
-     *  client ID
-     */
-    private void saveComponentState(UIComponent c,
-                                    FacesContext ctx,
-                                    StateContext stateContext,
-                                    Map<String, Object> stateMap) {
-
-        if (!c.isTransient()) {
-            Object stateObj;
-            if (stateContext.componentAddedDynamically(c)) {
-                stateObj = new StateHolderSaver(ctx, c);
-            } else {
-                stateObj = c.saveState(ctx);
-            }
-            if (null != stateObj) {
-                stateMap.put(c.getClientId(ctx), stateObj);
-            }
-            for (Iterator<UIComponent> i = c.getFacetsAndChildren(); i.hasNext();) {
-                saveComponentState(i.next(), ctx, stateContext, stateMap);
-            }
-        }
-
-
-    }
-
-}
diff --git a/jsf-ri/src/main/java/com/sun/faces/application/view/ViewDeclarationLanguageFactoryImpl.java b/jsf-ri/src/main/java/com/sun/faces/application/view/ViewDeclarationLanguageFactoryImpl.java
index 0c3f686..3e151ee 100644
--- a/jsf-ri/src/main/java/com/sun/faces/application/view/ViewDeclarationLanguageFactoryImpl.java
+++ b/jsf-ri/src/main/java/com/sun/faces/application/view/ViewDeclarationLanguageFactoryImpl.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -44,7 +48,9 @@ import javax.faces.view.ViewDeclarationLanguageFactory;
  */
 public class ViewDeclarationLanguageFactoryImpl extends ViewDeclarationLanguageFactory {
 
-    
+    public ViewDeclarationLanguageFactoryImpl() {
+    }
+
     private ViewHandlingStrategyManager viewHandlingStrategy;
 
 
diff --git a/jsf-ri/src/main/java/com/sun/faces/application/view/ViewHandlingStrategy.java b/jsf-ri/src/main/java/com/sun/faces/application/view/ViewHandlingStrategy.java
index d742129..99283c5 100644
--- a/jsf-ri/src/main/java/com/sun/faces/application/view/ViewHandlingStrategy.java
+++ b/jsf-ri/src/main/java/com/sun/faces/application/view/ViewHandlingStrategy.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/application/view/ViewHandlingStrategyManager.java b/jsf-ri/src/main/java/com/sun/faces/application/view/ViewHandlingStrategyManager.java
index c512a6a..3c8d29b 100644
--- a/jsf-ri/src/main/java/com/sun/faces/application/view/ViewHandlingStrategyManager.java
+++ b/jsf-ri/src/main/java/com/sun/faces/application/view/ViewHandlingStrategyManager.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/application/view/ViewHandlingStrategyNotFoundException.java b/jsf-ri/src/main/java/com/sun/faces/application/view/ViewHandlingStrategyNotFoundException.java
index 6199bfd..0919299 100644
--- a/jsf-ri/src/main/java/com/sun/faces/application/view/ViewHandlingStrategyNotFoundException.java
+++ b/jsf-ri/src/main/java/com/sun/faces/application/view/ViewHandlingStrategyNotFoundException.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -50,7 +54,7 @@ public class ViewHandlingStrategyNotFoundException extends FacesException {
     // ------------------------------------------------------------ Constructors
 
     /**
-     * @see javax.faces.FacesException#Exception()
+     * @see FacesException#FacesException() 
      */
     public ViewHandlingStrategyNotFoundException() {
 
diff --git a/jsf-ri/src/main/java/com/sun/faces/application/view/ViewMetadataImpl.java b/jsf-ri/src/main/java/com/sun/faces/application/view/ViewMetadataImpl.java
index 76e8934..808f7fe 100644
--- a/jsf-ri/src/main/java/com/sun/faces/application/view/ViewMetadataImpl.java
+++ b/jsf-ri/src/main/java/com/sun/faces/application/view/ViewMetadataImpl.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -36,12 +40,17 @@
 
 package com.sun.faces.application.view;
 
-import com.sun.faces.facelets.Facelet;
-import com.sun.faces.facelets.FaceletFactory;
+import com.sun.faces.RIConstants;
+import javax.faces.view.facelets.Facelet;
 import com.sun.faces.application.ApplicationAssociate;
+import com.sun.faces.context.FacesFileNotFoundException;
 
 
+import com.sun.faces.facelets.impl.DefaultFaceletFactory;
 import java.io.IOException;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
 import javax.faces.view.ViewMetadata;
 import javax.faces.component.UIViewRoot;
 import javax.faces.context.FacesContext;
@@ -55,7 +64,7 @@ import javax.faces.application.ViewHandler;
 public class ViewMetadataImpl extends ViewMetadata {
 
     private String viewId;
-    private FaceletFactory faceletFactory;
+    private DefaultFaceletFactory faceletFactory;
     
 
     // ------------------------------------------------------------ Constructors
@@ -88,7 +97,9 @@ public class ViewMetadataImpl extends ViewMetadata {
     public UIViewRoot createMetadataView(FacesContext context) {
 
         UIViewRoot result = null;
-
+        UIViewRoot currentViewRoot = context.getViewRoot();
+        Map<String, Object> currentViewMapShallowCopy = Collections.emptyMap();
+        
         try {
             context.setProcessingEvents(false);
             if (faceletFactory == null) {
@@ -99,16 +110,54 @@ public class ViewMetadataImpl extends ViewMetadata {
             }
             ViewHandler vh = context.getApplication().getViewHandler();
             result = vh.createView(context, viewId);
-            Facelet f = faceletFactory.getMetadataFacelet(result.getViewId());
+
+            // Stash away view id before invoking handlers so that 
+            // StateContext.partialStateSaving() can determine the current
+            // view. 
+            context.getAttributes().put(RIConstants.VIEWID_KEY_NAME, viewId);
+            // If the currentViewRoot has a viewMap, make sure the entries are
+            // copied to the temporary UIViewRoot before invoking handlers.
+            if (null != currentViewRoot) {
+                Map<String, Object> currentViewMap = currentViewRoot.getViewMap(false);
+
+                if (null != currentViewMap && !currentViewMap.isEmpty()) {
+                    currentViewMapShallowCopy = new HashMap<String, Object>(currentViewMap);
+                    Map<String, Object> resultViewMap = result.getViewMap(true);
+                    resultViewMap.putAll(currentViewMapShallowCopy);
+                }
+            }
+            
+            // Only replace the current context's UIViewRoot if there is 
+            // one to replace.
+            if (null != currentViewRoot) {
+                // This clear's the ViewMap of the current UIViewRoot before
+                // setting the argument as the new UIViewRoot.
+                context.setViewRoot(result);
+            }
+
+            Facelet f = faceletFactory.getMetadataFacelet(context, result.getViewId());
 
             f.apply(context, result);
+        } catch (FacesFileNotFoundException ffnfe) {
+            try {
+                context.getExternalContext().responseSendError(404, ffnfe.getMessage());
+            } catch(IOException ioe) {}
+            context.responseComplete();
         } catch (IOException ioe) {
             throw new FacesException(ioe);
         } finally {
+            context.getAttributes().remove(RIConstants.VIEWID_KEY_NAME);
             context.setProcessingEvents(true);
+            if (null != currentViewRoot) {
+                context.setViewRoot(currentViewRoot);
+                if (!currentViewMapShallowCopy.isEmpty()) {
+                    currentViewRoot.getViewMap(true).putAll(currentViewMapShallowCopy);
+                    currentViewMapShallowCopy.clear();
+                }
+            }
+            
         }
 
-
         return result;
         
     }
diff --git a/jsf-ri/src/main/java/com/sun/faces/application/view/ViewScopeContext.java b/jsf-ri/src/main/java/com/sun/faces/application/view/ViewScopeContext.java
new file mode 100644
index 0000000..567e476
--- /dev/null
+++ b/jsf-ri/src/main/java/com/sun/faces/application/view/ViewScopeContext.java
@@ -0,0 +1,174 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.application.view;
+
+import java.io.Serializable;
+import java.lang.annotation.Annotation;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.enterprise.context.ContextNotActiveException;
+import javax.enterprise.context.spi.Context;
+import javax.enterprise.context.spi.Contextual;
+import javax.enterprise.context.spi.CreationalContext;
+import javax.faces.component.UIViewRoot;
+import javax.faces.context.FacesContext;
+import javax.faces.view.ViewScoped;
+
+/**
+ * The CDI context for CDI ViewScoped beans.
+ */
+public class ViewScopeContext implements Context, Serializable {
+
+    /**
+     * Stores the logger.
+     */
+    private static final Logger LOGGER = Logger.getLogger(ViewScopeContext.class.getName());
+    /**
+     * Stores the serial version UID.
+     */
+    private static final long serialVersionUID = -6245899073989073951L;
+
+    /**
+     * Constructor.
+     */
+    public ViewScopeContext() {
+        if (LOGGER.isLoggable(Level.FINEST)) {
+            LOGGER.log(Level.FINEST, "Creating ViewScope CDI context");
+        }
+    }
+
+    /**
+     * Assert the context is active, otherwise throw ContextNotActiveException.
+     */
+    @SuppressWarnings({"FinalPrivateMethod"})
+    private final void assertNotReleased() {
+        if (!isActive()) {
+            if (LOGGER.isLoggable(Level.SEVERE)) {
+                LOGGER.log(Level.SEVERE, "Trying to access ViewScope CDI context while it is not active");
+            }
+            throw new ContextNotActiveException();
+        }
+    }
+
+
+    /**
+     * Get the ViewScoped bean for the given contextual.
+     *
+     * @param <T> the type.
+     * @param contextual the contextual.
+     * @return the view scoped bean, or null if not found.
+     */
+    @Override
+    public <T> T get(Contextual<T> contextual) {
+        assertNotReleased();
+
+        T result = null;
+        
+        FacesContext facesContext = FacesContext.getCurrentInstance();
+        if (facesContext != null) {
+            ViewScopeManager manager = ViewScopeManager.getInstance(facesContext);
+            if (manager != null) {
+                result = manager.getContextManager().getBean(facesContext, contextual);
+            }
+        }
+
+        return result;
+    }
+
+    /**
+     * Get the existing instance of the ViewScoped bean for the given contextual
+     * or create a new one.
+     *
+     * @param <T> the type.
+     * @param contextual the contextual.
+     * @param creational the creational.
+     * @return the instance.
+     * @throws ContextNotActiveException when the context is not active.
+     */
+    @Override
+    public <T> T get(Contextual<T> contextual, CreationalContext<T> creational) {
+        assertNotReleased();
+
+        T result = get(contextual);
+
+        if (result == null) {
+            FacesContext facesContext = FacesContext.getCurrentInstance();
+            if (facesContext != null) {
+                ViewScopeManager manager = ViewScopeManager.getInstance(facesContext);
+                result = (T) manager.getContextManager().getBean(facesContext, contextual);
+                if (result == null) {
+                    result = (T) manager.getContextManager().createBean(facesContext, contextual, creational);
+                }
+            }
+        }
+
+        return result;
+    }
+
+    /**
+     * Get the class of the scope object.
+     *
+     * @return the class.
+     */
+    @Override
+    public Class<? extends Annotation> getScope() {
+        return ViewScoped.class;
+    }
+
+    /**
+     * Determine if the context is active.
+     *
+     * @return true if there is a view root, false otherwise.
+     */
+    @Override
+    public boolean isActive() {
+        boolean result = false;
+
+        FacesContext facesContext = FacesContext.getCurrentInstance();
+        if (facesContext != null) {
+            UIViewRoot viewRoot = facesContext.getViewRoot();
+            if (viewRoot != null) {
+                result = true;
+            }
+        }
+
+        return result;
+    }
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/application/view/ViewScopeContextManager.java b/jsf-ri/src/main/java/com/sun/faces/application/view/ViewScopeContextManager.java
new file mode 100644
index 0000000..6962515
--- /dev/null
+++ b/jsf-ri/src/main/java/com/sun/faces/application/view/ViewScopeContextManager.java
@@ -0,0 +1,386 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.application.view;
+
+import com.sun.faces.util.FacesLogger;
+import com.sun.faces.util.Util;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.enterprise.context.spi.Contextual;
+import javax.enterprise.context.spi.CreationalContext;
+import javax.enterprise.inject.spi.Bean;
+import javax.enterprise.inject.spi.BeanManager;
+import javax.enterprise.inject.spi.PassivationCapable;
+import javax.faces.component.UIViewRoot;
+import javax.faces.context.ExternalContext;
+import javax.faces.context.FacesContext;
+import javax.inject.Named;
+import javax.servlet.http.HttpSession;
+import javax.servlet.http.HttpSessionEvent;
+
+/**
+ * The manager that deals with CDI ViewScoped beans.
+ */
+public class ViewScopeContextManager {
+
+    private static final Logger LOGGER = FacesLogger.APPLICATION_VIEW.getLogger();
+    private boolean isCdiOneOneOrGreater;
+    private Class viewScopedCDIEventFireHelperImplClass;
+    /**
+     * Stores the constant to keep track of all the active view scope contexts.
+     */
+    private static final String ACTIVE_VIEW_CONTEXTS = "com.sun.faces.application.view.activeViewContexts";
+    /**
+     * Stores the constants to keep track of the active view maps.
+     */
+    private static final String ACTIVE_VIEW_MAPS = "com.sun.faces.application.view.activeViewMaps";
+    private final BeanManager beanManager;
+
+    public ViewScopeContextManager() {
+        isCdiOneOneOrGreater = Util.isCdiOneOneOrGreater();
+        try {
+            viewScopedCDIEventFireHelperImplClass = Class.forName("com.sun.faces.application.view.ViewScopedCDIEventFireHelperImpl");
+        } catch (ClassNotFoundException ex) {
+            if (LOGGER.isLoggable(Level.SEVERE)) {
+                LOGGER.log(Level.SEVERE, "CDI 1.1 events not enabled", ex);
+            }
+        }
+        FacesContext facesContext = FacesContext.getCurrentInstance();
+        beanManager = (BeanManager) Util.getCDIBeanManager(facesContext.getExternalContext().getApplicationMap());
+    }
+
+    /**
+     * Clear the current view map using the Faces context.
+     *
+     * @param facesContext the Faces context.
+     */
+    public void clear(FacesContext facesContext) {
+        if (LOGGER.isLoggable(Level.FINEST)) {
+            LOGGER.log(Level.FINEST, "Clearing @ViewScoped CDI beans for current view map");
+        }
+        Map<String, Object> viewMap = facesContext.getViewRoot().getViewMap(false);
+        Map<String, ViewScopeContextObject> contextMap = getContextMap(facesContext, false);
+        if (contextMap != null) {
+            destroyBeans(viewMap, contextMap);
+        }
+    }
+
+    /**
+     * Clear the given view map.
+     *
+     * @param facesContext the Faces context.
+     * @param viewMap the given view map.
+     */
+    public void clear(FacesContext facesContext, Map<String, Object> viewMap) {
+        if (LOGGER.isLoggable(Level.FINEST)) {
+            LOGGER.log(Level.FINEST, "Clearing @ViewScoped CDI beans for given view map: {0}");
+        }
+        Map<String, ViewScopeContextObject> contextMap = getContextMap(facesContext, viewMap);
+        if (contextMap != null) {
+            destroyBeans(viewMap, contextMap);
+        }
+    }
+
+    /**
+     * Create the bean.
+     *
+     * @param <T> the type.
+     * @param facesContext the faces context.
+     * @param contextual the contextual.
+     * @param creational the creational.
+     * @return the value or null if not found.
+     */
+    public <T> T createBean(FacesContext facesContext, Contextual<T> contextual, CreationalContext<T> creational) {
+        if (LOGGER.isLoggable(Level.FINEST)) {
+            LOGGER.log(Level.FINEST, "Creating @ViewScoped CDI bean using contextual: {0}", contextual);
+        }
+
+        if (!(contextual instanceof PassivationCapable)) {
+            throw new IllegalArgumentException("ViewScoped bean " + contextual.toString() + " must be PassivationCapable, but is not.");
+        }
+            
+        T result = contextual.create(creational);
+
+        if (result != null) {
+            String name = getName(result);
+            facesContext.getViewRoot().getViewMap(true).put(name, result);
+            String passivationCapableId = ((PassivationCapable)contextual).getId();
+            
+            getContextMap(facesContext).put(passivationCapableId, 
+                    new ViewScopeContextObject(passivationCapableId, name));
+        }
+
+        return result;
+    }
+
+    /**
+     * Destroy the view scoped beans for the given view and context map.
+     *
+     * @param viewMap the view map.
+     * @param contextMap the context map.
+     */
+    private void destroyBeans(
+            Map<String, Object> viewMap, Map<String, ViewScopeContextObject> contextMap) {
+        ArrayList<String> removalNameList = new ArrayList<String>();
+
+        if (contextMap != null) {
+            for (Map.Entry<String, ViewScopeContextObject> entry : contextMap.entrySet()) {
+                String passivationCapableId = entry.getKey();
+                Contextual contextual = beanManager.getPassivationCapableBean(passivationCapableId);
+                
+                ViewScopeContextObject contextObject = entry.getValue();
+                CreationalContext creationalContext = beanManager.createCreationalContext(contextual);
+                // We can no longer get this from the contextObject. Instead we must call
+                // beanManager.createCreationalContext(contextual)
+                contextual.destroy(viewMap.get(contextObject.getName()), creationalContext);
+                removalNameList.add(contextObject.getName());
+            }
+
+            Iterator<String> removalNames = removalNameList.iterator();
+            while (removalNames.hasNext()) {
+                String name = removalNames.next();
+                viewMap.remove(name);
+            }
+        }
+    }
+
+    /**
+     * Get the value from the view map (or null if not found).
+     *
+     * @param <T> the type.
+     * @param facesContext the faces context.
+     * @param contextual the contextual.
+     * @return the value or null if not found.
+     */
+    public <T> T getBean(FacesContext facesContext, Contextual<T> contextual) {
+        T result = null;
+        Map<String, ViewScopeContextObject> contextMap = getContextMap(facesContext);
+
+        if (contextMap != null) {
+            if (!(contextual instanceof PassivationCapable)) {
+                throw new IllegalArgumentException("ViewScoped bean " + contextual.toString() + " must be PassivationCapable, but is not.");
+            }
+            
+            ViewScopeContextObject contextObject = contextMap.get(((PassivationCapable)contextual).getId());
+
+            if (contextObject != null) {
+                if (LOGGER.isLoggable(Level.FINEST)) {
+                    LOGGER.log(Level.FINEST, "Getting value for @ViewScoped bean with name: {0}", contextObject.getName());
+                }
+                result = (T) facesContext.getViewRoot().getViewMap(true).get(contextObject.getName());
+            }
+        }
+
+        return result;
+    }
+
+    /**
+     * Get the context map.
+     *
+     * @param facesContext the Faces context.
+     * @return the context map.
+     */
+    private Map<String, ViewScopeContextObject> getContextMap(FacesContext facesContext) {
+        return getContextMap(facesContext, true);
+    }
+
+    /**
+     * Get the context map.
+     *
+     * @param facesContext the Faces context.
+     * @param create flag to indicate if we are creating the context map.
+     * @return the context map.
+     */
+    private Map<String, ViewScopeContextObject> getContextMap(FacesContext facesContext, boolean create) {
+        Map<String, ViewScopeContextObject> result = null;
+
+        ExternalContext externalContext = facesContext.getExternalContext();
+        if (externalContext != null) {
+            Map<String, Object> sessionMap = externalContext.getSessionMap();
+            Map<Object, Map<String, ViewScopeContextObject>> activeViewScopeContexts =
+                    (Map<Object, Map<String, ViewScopeContextObject>>) sessionMap.get(ACTIVE_VIEW_CONTEXTS);
+            Map<String, Object> viewMap = facesContext.getViewRoot().getViewMap(false);
+
+            if (activeViewScopeContexts == null && create) {
+                synchronized (sessionMap) {
+                    activeViewScopeContexts = new ConcurrentHashMap<Object, Map<String, ViewScopeContextObject>>();
+                    sessionMap.put(ACTIVE_VIEW_CONTEXTS, activeViewScopeContexts);
+                }
+            }
+
+            if (activeViewScopeContexts != null && create) {
+                synchronized (activeViewScopeContexts) {
+                    if (!activeViewScopeContexts.containsKey(System.identityHashCode(viewMap)) && create) {
+                        activeViewScopeContexts.put(System.identityHashCode(viewMap),
+                                new ConcurrentHashMap<String, ViewScopeContextObject>());
+                        // If we are distributable, this will result in a dirtying of the
+                        // session data, forcing replication.  If we are not distributable,
+                        // this is a no-op.
+                        sessionMap.put(ACTIVE_VIEW_CONTEXTS, activeViewScopeContexts);
+                        
+                    }
+                }
+            }
+
+            if (activeViewScopeContexts != null) {
+                result = activeViewScopeContexts.get(System.identityHashCode(viewMap));
+            }
+        }
+
+        return result;
+    }
+
+    /**
+     * Get the context map.
+     *
+     * @param facesContext the Faces context.
+     * @param create flag to indicate if we are creating the context map.
+     * @return the context map.
+     */
+    private Map<String, ViewScopeContextObject> getContextMap(FacesContext facesContext, Map<String, Object> viewMap) {
+        Map<String, ViewScopeContextObject> result = null;
+
+        ExternalContext externalContext = facesContext.getExternalContext();
+        if (externalContext != null) {
+            Map<String, Object> sessionMap = externalContext.getSessionMap();
+            Map<Object, Map<String, ViewScopeContextObject>> activeViewScopeContexts =
+                    (Map<Object, Map<String, ViewScopeContextObject>>) sessionMap.get(ACTIVE_VIEW_CONTEXTS);
+
+            if (activeViewScopeContexts != null) {
+                result = activeViewScopeContexts.get(System.identityHashCode(viewMap));
+            }
+        }
+
+        return result;
+    }
+    
+    /**
+     * Get the name of the bean for the given object.
+     *
+     * @param instance the object.
+     * @return the name.
+     */
+    private String getName(Object instance) {
+        String name = instance.getClass().getSimpleName().substring(0, 1).toLowerCase()
+                + instance.getClass().getSimpleName().substring(1);
+
+        Named named = instance.getClass().getAnnotation(Named.class);
+        if (named != null && named.value() != null && !named.value().trim().equals("")) {
+            name = named.value();
+        }
+        return name;
+    }
+
+    /**
+     * Called when a session destroyed.
+     *
+     * @param hse the HTTP session event.
+     */
+    public void sessionDestroyed(HttpSessionEvent hse) {
+        if (LOGGER.isLoggable(Level.FINEST)) {
+            LOGGER.log(Level.FINEST, "Cleaning up session for CDI @ViewScoped beans");
+        }
+
+        HttpSession session = hse.getSession();
+
+        Map<Object, Map<String, ViewScopeContextObject>> activeViewScopeContexts =
+                (Map<Object, Map<String, ViewScopeContextObject>>) session.getAttribute(ACTIVE_VIEW_CONTEXTS);
+
+        if (activeViewScopeContexts != null) {
+            Map<String, Object> activeViewMaps = (Map<String, Object>) session.getAttribute(ACTIVE_VIEW_MAPS);
+            if (activeViewMaps != null) {
+                Iterator<Object> activeViewMapsIterator = activeViewMaps.values().iterator();
+                while (activeViewMapsIterator.hasNext()) {
+                    Map<String, Object> instanceMap = (Map<String, Object>) activeViewMapsIterator.next();
+                    Map<String, ViewScopeContextObject> contextMap =
+                            activeViewScopeContexts.get(System.identityHashCode(instanceMap));
+                    destroyBeans(instanceMap, contextMap);
+                }
+            }
+
+            activeViewScopeContexts.clear();
+            session.removeAttribute(ACTIVE_VIEW_CONTEXTS);
+        }
+    }
+
+    public void fireInitializedEvent(FacesContext facesContext, UIViewRoot root) {
+        if (isCdiOneOneOrGreater && null != viewScopedCDIEventFireHelperImplClass) {
+            BeanManager beanManager = (BeanManager) Util.getCDIBeanManager(facesContext.getExternalContext().getApplicationMap());
+            if (null != beanManager) {
+                Set<Bean<?>> availableBeans = beanManager.getBeans(viewScopedCDIEventFireHelperImplClass);
+                if (null != availableBeans && !availableBeans.isEmpty()) {
+                    Bean<?> bean = beanManager.resolve(availableBeans);
+                    CreationalContext<?> creationalContext =
+                            beanManager.createCreationalContext(null);
+                    ViewScopedCDIEventFireHelper eventHelper =
+                            (ViewScopedCDIEventFireHelper) beanManager.getReference(bean, bean.getBeanClass(),
+                            creationalContext);
+                    eventHelper.fireInitializedEvent(root);
+                }
+            }
+
+        }
+
+    }
+
+    public void fireDestroyedEvent(FacesContext facesContext, UIViewRoot root) {
+        if (isCdiOneOneOrGreater && null != viewScopedCDIEventFireHelperImplClass) {
+            BeanManager beanManager = (BeanManager) Util.getCDIBeanManager(facesContext.getExternalContext().getApplicationMap());
+            if (null != beanManager) {
+                Set<Bean<?>> availableBeans = beanManager.getBeans(viewScopedCDIEventFireHelperImplClass);
+                if (null != availableBeans && !availableBeans.isEmpty()) {
+                    Bean<?> bean = beanManager.resolve(availableBeans);
+                    CreationalContext<?> creationalContext =
+                            beanManager.createCreationalContext(null);
+                    ViewScopedCDIEventFireHelper eventHelper =
+                            (ViewScopedCDIEventFireHelper) beanManager.getReference(bean, bean.getBeanClass(),
+                            creationalContext);
+                    eventHelper.fireDestroyedEvent(root);
+                }
+            }
+        }
+
+    }
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/application/view/ViewScopeContextObject.java b/jsf-ri/src/main/java/com/sun/faces/application/view/ViewScopeContextObject.java
new file mode 100644
index 0000000..cc61ebb
--- /dev/null
+++ b/jsf-ri/src/main/java/com/sun/faces/application/view/ViewScopeContextObject.java
@@ -0,0 +1,94 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.application.view;
+
+import java.io.Serializable;
+
+/**
+ * An object used by ViewScopeContext to keep track of contextual and creational
+ * context.
+ */
+class ViewScopeContextObject implements Serializable {
+    private static final long serialVersionUID = 370695657651519831L;
+
+    private String passivationCapableId; 
+
+    /**
+     * Stores the name.
+     */
+    private String name;
+
+    /**
+     * Constructor.
+     *
+     * @param passivationCapableId the return from PassivationCapable.getId().
+     * @param creationalContext the creational context.
+     */
+    public ViewScopeContextObject(String passivationCapableId, String name) {
+        this.passivationCapableId = passivationCapableId;
+        this.name = name;
+    }
+
+    public String getPassivationCapableId() {
+        return this.passivationCapableId;
+    }
+    
+    /*
+     * Get the name.
+     * 
+     * @return the name.
+     */
+    public String getName() {
+        return this.name;
+    }
+
+    public void setPassivationCapableId(String passivationCapableId) {
+        this.passivationCapableId = passivationCapableId;
+    }
+
+    /**
+     * Set the name.
+     *
+     * @param name the name.
+     */
+    public void setName(String name) {
+        this.name = name;
+    }
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/application/view/ViewScopeEventListener.java b/jsf-ri/src/main/java/com/sun/faces/application/view/ViewScopeEventListener.java
new file mode 100644
index 0000000..56ac81a
--- /dev/null
+++ b/jsf-ri/src/main/java/com/sun/faces/application/view/ViewScopeEventListener.java
@@ -0,0 +1,81 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.application.view;
+
+import javax.faces.component.UIViewRoot;
+import javax.faces.context.FacesContext;
+import javax.faces.event.AbortProcessingException;
+import javax.faces.event.SystemEvent;
+import javax.faces.event.ViewMapListener;
+
+/**
+ * The ViewScope event listener.
+ *
+ * <p> To make it so the UIViewRoot.getViewMap is as independent as possible
+ * from implementation specific code we need to get notified when a view map is
+ * created or destroyed. This ViewMapListener is registered so we get notified
+ * of these events. </p>
+ *
+ * <p> See jsf-ri-config.xml for the actual registration of this listener. </p>
+ */
+public class ViewScopeEventListener implements ViewMapListener {
+
+    /**
+     * Handle the system event.
+     *
+     * @param se the system event.
+     * @throws AbortProcessingException
+     */
+    @Override
+    public void processEvent(SystemEvent se) throws AbortProcessingException {
+        ViewScopeManager.getInstance(FacesContext.getCurrentInstance()).processEvent(se);
+    }
+
+    /**
+     * Is listener for.
+     *
+     * @param source the source.
+     * @return true if UIViewRoot, false otherwise.
+     */
+    @Override
+    public boolean isListenerForSource(Object source) {
+        return (source instanceof UIViewRoot);
+    }
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/application/view/ViewScopeExtension.java b/jsf-ri/src/main/java/com/sun/faces/application/view/ViewScopeExtension.java
new file mode 100644
index 0000000..a7cfde2
--- /dev/null
+++ b/jsf-ri/src/main/java/com/sun/faces/application/view/ViewScopeExtension.java
@@ -0,0 +1,145 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.application.view;
+
+import com.sun.faces.util.FacesLogger;
+import com.sun.faces.util.Util;
+import com.sun.faces.util.cdi11.CDIUtil;
+import java.util.ServiceLoader;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.enterprise.event.Observes;
+import javax.enterprise.inject.spi.AfterBeanDiscovery;
+import javax.enterprise.inject.spi.Bean;
+import javax.enterprise.inject.spi.BeanManager;
+import javax.enterprise.inject.spi.BeforeBeanDiscovery;
+import javax.enterprise.inject.spi.Extension;
+import javax.enterprise.inject.spi.ProcessBean;
+import javax.faces.view.ViewScoped;
+
+/**
+ * The CDI extension that makes ViewScoped beans work in a CDI context.
+ */
+public class ViewScopeExtension implements Extension {
+
+   private boolean isCdiOneOneOrGreater = false;
+   private CDIUtil cdiUtil = null;
+
+   /**
+     * Stores the logger.
+     */
+    private static final Logger LOGGER = FacesLogger.APPLICATION_VIEW.getLogger();
+
+    /**
+     * Constructor.
+     */
+    public ViewScopeExtension() {
+        if (LOGGER.isLoggable(Level.FINEST)) {
+            LOGGER.finest("Constructor @ViewScoped CDI Extension called");
+        }
+        isCdiOneOneOrGreater = Util.isCdiOneOneOrGreater();
+    }
+
+    /**
+     * Processing bean.
+     *
+     * @param event the event.
+     */
+    public void processBean(@Observes ProcessBean<?> event) {
+        ViewScoped viewScoped = event.getAnnotated().getAnnotation(ViewScoped.class);
+        if (viewScoped != null && LOGGER.isLoggable(Level.FINEST)) {
+            LOGGER.finest("Processing occurrence of @ViewScoped");
+        }
+
+    }
+    
+    public void beforeBeanDiscovery(@Observes final BeforeBeanDiscovery event, BeanManager beanManager) {
+        event.addScope(ViewScoped.class, true, true);
+    }
+
+    /**
+     * After bean discovery.
+     *
+     * @param event the event.
+     */
+    public void afterBeanDiscovery(@Observes final AfterBeanDiscovery event, BeanManager beanManager) {
+        if (LOGGER.isLoggable(Level.FINEST)) {
+            LOGGER.finest("Adding @ViewScoped context to CDI runtime");
+        }
+        event.addContext(new ViewScopeContext());
+        
+
+       if (isCdiOneOneOrGreater) {
+           Class clazz = null;
+           try {
+               clazz = Class.forName("com.sun.faces.application.view.ViewScopedCDIEventFireHelperImpl");
+           } catch (ClassNotFoundException ex) {
+               if (LOGGER.isLoggable(Level.SEVERE)) {
+                   LOGGER.log(Level.SEVERE, "CDI 1.1 events not enabled", ex);
+               }
+               return;
+           }
+           
+           if (null == cdiUtil) {
+               ServiceLoader<CDIUtil> oneCdiUtil = ServiceLoader.load(CDIUtil.class);
+               for (CDIUtil oneAndOnly : oneCdiUtil) {
+                   if (null != cdiUtil) {
+                       String message = "Must only have one implementation of CDIUtil available";
+                       if (LOGGER.isLoggable(Level.SEVERE)) {
+                           LOGGER.log(Level.SEVERE, message);
+                       }
+                       throw new IllegalStateException(message);
+                   }
+                   cdiUtil = oneAndOnly;
+               }
+           }
+           
+           if (null != cdiUtil) {
+               Bean bean = cdiUtil.createHelperBean(beanManager, clazz);
+               event.addBean(bean);
+           } else if (LOGGER.isLoggable(Level.SEVERE)) {
+               LOGGER.log(Level.SEVERE, "Unable to obtain CDI 1.1 utilities for Mojarra");
+           }
+       }
+        
+    }
+    
+    
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/application/view/ViewScopeManager.java b/jsf-ri/src/main/java/com/sun/faces/application/view/ViewScopeManager.java
new file mode 100644
index 0000000..8b2b8fe
--- /dev/null
+++ b/jsf-ri/src/main/java/com/sun/faces/application/view/ViewScopeManager.java
@@ -0,0 +1,406 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.application.view;
+
+import com.sun.faces.application.ApplicationAssociate;
+import com.sun.faces.config.WebConfiguration;
+import static com.sun.faces.config.WebConfiguration.BooleanWebContextInitParameter.EnableDistributable;
+import com.sun.faces.mgbean.BeanManager;
+import com.sun.faces.util.LRUMap;
+import com.sun.faces.util.Util;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.UUID;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.faces.application.FacesMessage;
+import javax.faces.application.ProjectStage;
+import javax.faces.component.UIViewRoot;
+import javax.faces.context.FacesContext;
+import javax.faces.event.AbortProcessingException;
+import javax.faces.event.PostConstructViewMapEvent;
+import javax.faces.event.PreDestroyViewMapEvent;
+import javax.faces.event.SystemEvent;
+import javax.faces.event.ViewMapListener;
+import javax.servlet.http.HttpSession;
+import javax.servlet.http.HttpSessionEvent;
+import javax.servlet.http.HttpSessionListener;
+
+/**
+ * The manager that deals with non-CDI and CDI ViewScoped beans.
+ */
+public class ViewScopeManager implements HttpSessionListener, ViewMapListener {
+
+    /**
+     * Stores the logger.
+     */
+    private static final Logger LOGGER = Logger.getLogger(ViewScopeManager.class.getName());
+    /**
+     * Stores the constants to keep track of the active view maps.
+     */
+    public static final String ACTIVE_VIEW_MAPS = "com.sun.faces.application.view.activeViewMaps";
+    /**
+     * Stores the constant for the maximum active view map size.
+     */
+    public static final String ACTIVE_VIEW_MAPS_SIZE = "com.sun.faces.application.view.activeViewMapsSize";
+    /**
+     * Stores the view map.
+     */
+    public static final String VIEW_MAP = "com.sun.faces.application.view.viewMap";
+    /**
+     * Stores the view map id.
+     */
+    public static final String VIEW_MAP_ID = "com.sun.faces.application.view.viewMapId";
+    /**
+     * Stores the constant to keep track of the ViewScopeManager.
+     */
+    public static final String VIEW_SCOPE_MANAGER = "com.sun.faces.application.view.viewScopeManager";
+    /**
+     * Stores the CDI context manager.
+     */
+    private ViewScopeContextManager contextManager;
+    
+    private boolean distributable;
+
+    /**
+     * Constructor.
+     */
+    public ViewScopeManager() {
+        FacesContext context = FacesContext.getCurrentInstance();
+        try {
+            if (Util.isCDIAvailable(context.getExternalContext().getApplicationMap())) {
+                contextManager = new ViewScopeContextManager();
+            } else {
+                contextManager = null;
+            }
+        } catch (Exception exception) {
+            if (LOGGER.isLoggable(Level.INFO)) {
+                LOGGER.log(Level.INFO, "CDI @ViewScoped manager unavailable", exception);
+            }
+        }
+        WebConfiguration config = WebConfiguration.getInstance(context.getExternalContext());
+        distributable = config.isOptionEnabled(EnableDistributable);
+        
+    }
+
+    /**
+     * Clear the current view map using the Faces context.
+     *
+     * @param facesContext the Faces context.
+     */
+    public void clear(FacesContext facesContext) {
+        if (LOGGER.isLoggable(Level.FINEST)) {
+            LOGGER.log(Level.FINEST, "Clearing @ViewScoped beans from current view map");
+        }
+
+        if (contextManager != null) {
+            contextManager.clear(facesContext);
+        }
+
+        destroyBeans(facesContext, facesContext.getViewRoot().getViewMap(false));
+    }
+
+    /**
+     * Clear the given view map.
+     *
+     * @param facesContext the Faces context.
+     * @param viewMap the view map.
+     */
+    public void clear(FacesContext facesContext, Map<String, Object> viewMap) {
+        if (LOGGER.isLoggable(Level.FINEST)) {
+            LOGGER.log(Level.FINEST, "Clearing @ViewScoped beans from view map: {0}", viewMap);
+        }
+
+        if (contextManager != null) {
+            contextManager.clear(facesContext, viewMap);
+        }
+
+        destroyBeans(facesContext, viewMap);
+    }
+
+    /**
+     * Destroy the managed beans from the given view map.
+     *
+     * @param applicationAssociate the application associate.
+     * @param viewMap the view map.
+     */
+    private void destroyBeans(ApplicationAssociate applicationAssociate, Map<String, Object> viewMap) {
+        for (Map.Entry<String, Object> entry : viewMap.entrySet()) {
+            String name = entry.getKey();
+            Object bean = entry.getValue();
+
+            try {
+                if (applicationAssociate != null) {
+                    BeanManager beanManager = applicationAssociate.getBeanManager();
+                    if (beanManager != null && beanManager.isManaged(name)) {
+                        beanManager.destroy(name, bean);
+                    }
+                }
+            } catch (Exception exception) {
+                if (LOGGER.isLoggable(Level.WARNING)) {
+                    LOGGER.log(Level.WARNING, "Error calling @PreDestroy on bean with name: " + name, exception);
+                }
+            }
+        }
+    }
+
+    /**
+     * Destroy the managed beans from the given view map.
+     *
+     * @param facesContext the Faces Context.
+     * @param viewMap the view map.
+     */
+    public void destroyBeans(FacesContext facesContext, Map<String, Object> viewMap) {
+        if (LOGGER.isLoggable(Level.FINEST)) {
+            LOGGER.log(Level.FINEST, "Destroying @ViewScoped beans from view map: {0}", viewMap);
+        }
+        ApplicationAssociate applicationAssociate = ApplicationAssociate.getInstance(facesContext.getExternalContext());
+        if (applicationAssociate != null) {
+            destroyBeans(applicationAssociate, viewMap);
+        }
+    }
+
+    /**
+     * Get the CDI context manager.
+     *
+     * @return the CDI context manager.
+     */
+    ViewScopeContextManager getContextManager() {
+        return this.contextManager;
+    }
+
+    /**
+     * Get our instance.
+     *
+     * @param facesContext the FacesContext.
+     */
+    public static ViewScopeManager getInstance(FacesContext facesContext) {
+        if (!facesContext.getExternalContext().getApplicationMap().containsKey(VIEW_SCOPE_MANAGER)) {
+            facesContext.getExternalContext().getApplicationMap().put(VIEW_SCOPE_MANAGER, new ViewScopeManager());
+        }
+        return (ViewScopeManager) facesContext.getExternalContext().getApplicationMap().get(VIEW_SCOPE_MANAGER);
+    }
+
+    /**
+     * Is a listener for the given source.
+     *
+     * @param source the source.
+     * @return true if UIViewRoot, false otherwise.
+     */
+    @Override
+    public boolean isListenerForSource(Object source) {
+        return (source instanceof UIViewRoot);
+    }
+
+    /**
+     * Process the system event.
+     *
+     * @param se the system event.
+     * @throws AbortProcessingException when processing needs to be aborter.
+     */
+    @Override
+    public void processEvent(SystemEvent se) throws AbortProcessingException {
+        if (se instanceof PreDestroyViewMapEvent) {
+            processPreDestroyViewMap(se);
+        }
+
+        if (se instanceof PostConstructViewMapEvent) {
+            processPostConstructViewMap(se);
+        }
+    }
+
+    /**
+     * Process the PostConstructViewMap system event.
+     *
+     * @param se the system event.
+     */
+    private void processPostConstructViewMap(SystemEvent se) {
+        if (LOGGER.isLoggable(Level.FINEST)) {
+            LOGGER.log(Level.FINEST, "Handling PostConstructViewMapEvent");
+        }
+        
+        UIViewRoot viewRoot = (UIViewRoot) se.getSource();
+        Map<String, Object> viewMap = viewRoot.getViewMap(false);
+
+        if (viewMap != null) {            
+            FacesContext facesContext = FacesContext.getCurrentInstance();
+            
+            if (viewRoot.isTransient() && facesContext.isProjectStage(ProjectStage.Development)) {
+                FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_WARN,
+                    "@ViewScoped beans are not supported on stateless views",
+                    "@ViewScoped beans are not supported on stateless views");
+                facesContext.addMessage(viewRoot.getClientId(facesContext), message);                
+
+                if (LOGGER.isLoggable(Level.WARNING)) {
+                    LOGGER.log(Level.WARNING, "@ViewScoped beans are not supported on stateless views");
+                }
+            }
+            
+            Object session = facesContext.getExternalContext().getSession(true);
+
+            if (session != null) {
+                Map<String, Object> sessionMap = facesContext.getExternalContext().getSessionMap();
+                Integer size = (Integer) sessionMap.get(ACTIVE_VIEW_MAPS_SIZE);
+                if (size == null) {
+                    size = 25;
+                }
+
+                if (sessionMap.get(ACTIVE_VIEW_MAPS) == null) {
+                    sessionMap.put(ACTIVE_VIEW_MAPS, (Map<String, Object>) Collections.synchronizedMap(new LRUMap<String, Object>(size)));
+                }
+
+                Map<String, Object> viewMaps = (Map<String, Object>) sessionMap.get(ACTIVE_VIEW_MAPS);
+                synchronized (viewMaps) {
+                    String viewMapId = UUID.randomUUID().toString();
+                    while (viewMaps.containsKey(viewMapId)) {
+                        viewMapId = UUID.randomUUID().toString();
+                    }
+
+                    if (viewMaps.size() == size) {
+                        String eldestViewMapId = viewMaps.keySet().iterator().next();
+                        Map<String, Object> eldestViewMap = (Map<String, Object>) viewMaps.remove(eldestViewMapId);
+                        removeEldestViewMap(facesContext, eldestViewMap);
+                    }
+
+                    viewMaps.put(viewMapId, viewMap);
+                    viewRoot.getTransientStateHelper().putTransient(VIEW_MAP_ID, viewMapId);
+                    viewRoot.getTransientStateHelper().putTransient(VIEW_MAP, viewMap);
+                    if (distributable) {
+                        // If we are distributable, this will result in a dirtying of the
+                        // session data, forcing replication.  If we are not distributable,
+                        // this is a no-op.
+                        sessionMap.put(ACTIVE_VIEW_MAPS, viewMaps);
+                    }
+                }
+                if (null != contextManager) {
+                    contextManager.fireInitializedEvent(facesContext, viewRoot);
+                }
+            }
+        }
+    }
+
+    /**
+     * Process the PreDestroyViewMap system event.
+     *
+     * @param se the system event.
+     */
+    private void processPreDestroyViewMap(SystemEvent se) {
+        if (LOGGER.isLoggable(Level.FINEST)) {
+            LOGGER.log(Level.FINEST, "Handling PreDestroyViewMapEvent");
+        }
+        
+        UIViewRoot viewRoot = (UIViewRoot) se.getSource();
+        Map<String, Object> viewMap = viewRoot.getViewMap(false);
+
+        if (viewMap != null && !viewMap.isEmpty()) {
+            FacesContext facesContext = FacesContext.getCurrentInstance();
+
+            if (contextManager != null) {
+                contextManager.clear(facesContext, viewMap);
+                contextManager.fireDestroyedEvent(facesContext, viewRoot);
+            }
+
+            
+            destroyBeans(facesContext, viewMap);
+
+        }
+    }
+
+    /**
+     * Create the associated data in the session (if any).
+     * 
+     * @param se the HTTP session event.
+     */
+    @Override
+    public void sessionCreated(HttpSessionEvent se) {
+        if (LOGGER.isLoggable(Level.FINEST)) {
+            LOGGER.log(Level.FINEST, "Creating session for @ViewScoped beans");
+        }
+    }
+    
+    /**
+     * Destroy the associated data in the session.
+     *
+     * @param hse the HTTP session event.
+     */
+    @Override
+    public void sessionDestroyed(HttpSessionEvent hse) {
+        if (LOGGER.isLoggable(Level.FINEST)) {
+            LOGGER.log(Level.FINEST, "Cleaning up session for @ViewScoped beans");
+        }
+
+        if (contextManager != null) {
+            contextManager.sessionDestroyed(hse);
+        }
+
+        HttpSession session = hse.getSession();
+        Map<String, Object> activeViewMaps = (Map<String, Object>) session.getAttribute(ACTIVE_VIEW_MAPS);
+        if (activeViewMaps != null) {
+            Iterator<Object> activeViewMapsIterator = activeViewMaps.values().iterator();
+            ApplicationAssociate applicationAssociate = ApplicationAssociate.getInstance(hse.getSession().getServletContext());
+            while (activeViewMapsIterator.hasNext()) {
+                Map<String, Object> viewMap = (Map<String, Object>) activeViewMapsIterator.next();
+                destroyBeans(applicationAssociate, viewMap);
+            }
+
+            activeViewMaps.clear();
+            session.removeAttribute(ACTIVE_VIEW_MAPS);
+            session.removeAttribute(ACTIVE_VIEW_MAPS_SIZE);
+        }
+    }
+
+    /**
+     * Remove the eldest view map from the active view maps.
+     *
+     * @param eldestViewMap the eldest view map.
+     */
+    private void removeEldestViewMap(FacesContext facesContext, Map<String, Object> eldestViewMap) {
+        if (LOGGER.isLoggable(Level.FINEST)) {
+            LOGGER.log(Level.FINEST, "Removing eldest view map: {0}", eldestViewMap);
+        }
+
+        if (contextManager != null) {
+            contextManager.clear(facesContext, eldestViewMap);
+        }
+
+        destroyBeans(facesContext, eldestViewMap);
+    }
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/application/view/ViewScopedCDIEventFireHelper.java b/jsf-ri/src/main/java/com/sun/faces/application/view/ViewScopedCDIEventFireHelper.java
new file mode 100644
index 0000000..649ab63
--- /dev/null
+++ b/jsf-ri/src/main/java/com/sun/faces/application/view/ViewScopedCDIEventFireHelper.java
@@ -0,0 +1,49 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.application.view;
+
+import javax.faces.component.UIViewRoot;
+
+public interface ViewScopedCDIEventFireHelper {
+
+    void fireInitializedEvent(UIViewRoot root);
+
+    void fireDestroyedEvent(UIViewRoot root);
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/application/view/ViewScopedCDIEventFireHelperImpl.java b/jsf-ri/src/main/java/com/sun/faces/application/view/ViewScopedCDIEventFireHelperImpl.java
new file mode 100644
index 0000000..c47999e
--- /dev/null
+++ b/jsf-ri/src/main/java/com/sun/faces/application/view/ViewScopedCDIEventFireHelperImpl.java
@@ -0,0 +1,68 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.application.view;
+
+import java.io.Serializable;
+import javax.enterprise.context.Destroyed;
+import javax.enterprise.context.Initialized;
+import javax.enterprise.event.Event;
+import javax.faces.component.UIViewRoot;
+import javax.faces.view.ViewScoped;
+import javax.inject.Inject;
+
+public class ViewScopedCDIEventFireHelperImpl implements Serializable, ViewScopedCDIEventFireHelper {
+    
+    private static final long serialVersionUID = 5777997951420156171L;
+    
+    @Inject @Initialized(ViewScoped.class) Event<UIViewRoot> viewScopeInitializedEvent;
+    @Inject @Destroyed(ViewScoped.class) Event<UIViewRoot> viewScopeDestroyedEvent;
+    
+    @Override
+    public void fireInitializedEvent(UIViewRoot root) {
+        viewScopeInitializedEvent.fire(root);
+    }
+    
+    @Override
+    public void fireDestroyedEvent(UIViewRoot root) {
+        viewScopeDestroyedEvent.fire(root);
+    }
+        
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/application/view/WriteBehindStateWriter.java b/jsf-ri/src/main/java/com/sun/faces/application/view/WriteBehindStateWriter.java
index cbd5f9d..8aed41a 100644
--- a/jsf-ri/src/main/java/com/sun/faces/application/view/WriteBehindStateWriter.java
+++ b/jsf-ri/src/main/java/com/sun/faces/application/view/WriteBehindStateWriter.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -214,16 +218,10 @@ final class WriteBehindStateWriter extends Writer {
         // multiple forms.
         StateManager stateManager = Util.getStateManager(context);
         ResponseWriter origWriter = context.getResponseWriter();
-        FastStringWriter state =
-              new FastStringWriter((stateManager.isSavingStateInClient(
-                    context)) ? bufSize : 128);
-        context.setResponseWriter(origWriter.cloneWithWriter(state));
-        stateManager.writeState(context, stateManager.saveView(context));
-        context.setResponseWriter(origWriter);
+        StringBuilder stateBuilder = getState(stateManager, origWriter);
         StringBuilder builder = fWriter.getBuffer();
         // begin writing...
         int totalLen = builder.length();
-        StringBuilder stateBuilder = state.getBuffer();
         int stateLen = stateBuilder.length();
         int pos = 0;
         int tildeIdx = getNextDelimiterIndex(builder, pos);
@@ -278,6 +276,10 @@ final class WriteBehindStateWriter extends Writer {
 
                     }
                 }
+                
+                stateBuilder = getState(stateManager, origWriter);
+                stateLen = stateBuilder.length();
+                
             } else {
                 // we've written all of the state field markers.
                 // finish writing content
@@ -302,6 +304,32 @@ final class WriteBehindStateWriter extends Writer {
         out = orig;
 
     }
+    
+    /**
+     * Get the state.
+     * 
+     * <p>
+     *  In JSF 2.2 it is required by the specification that the view state in
+     *  each h:form has a unique view state id. So we have to call this method
+     *  multiple times as each h:form needs to generate the view state string
+     *  for itself.
+     * </p>
+     * 
+     * @param stateManager the state manager.
+     * @param origWriter the original response writer.
+     * @return the state.
+     * @throws IOException when an I/O error occurs. 
+     */
+    private StringBuilder getState(StateManager stateManager, ResponseWriter origWriter) throws IOException {
+        FastStringWriter state =
+                new FastStringWriter((stateManager.isSavingStateInClient(
+                        context)) ? bufSize : 128);
+        context.setResponseWriter(origWriter.cloneWithWriter(state));
+        stateManager.writeState(context, stateManager.saveView(context));
+        context.setResponseWriter(origWriter);
+        StringBuilder stateBuilder = state.getBuffer();
+        return stateBuilder;
+    }
 
 
     /**
diff --git a/jsf-ri/src/main/java/com/sun/faces/component/ComponentResourceContainer.java b/jsf-ri/src/main/java/com/sun/faces/component/ComponentResourceContainer.java
index 1eca9b9..649436e 100644
--- a/jsf-ri/src/main/java/com/sun/faces/component/ComponentResourceContainer.java
+++ b/jsf-ri/src/main/java/com/sun/faces/component/ComponentResourceContainer.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/component/CompositeComponentStackManager.java b/jsf-ri/src/main/java/com/sun/faces/component/CompositeComponentStackManager.java
index 8078ab1..025b91a 100644
--- a/jsf-ri/src/main/java/com/sun/faces/component/CompositeComponentStackManager.java
+++ b/jsf-ri/src/main/java/com/sun/faces/component/CompositeComponentStackManager.java
@@ -1,478 +1,483 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- *
- * Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
- *
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- *
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- *
- * Contributor(s):
- *
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package com.sun.faces.component;
-
-import javax.faces.context.FacesContext;
-import javax.faces.component.UIComponent;
-import javax.faces.view.Location;
-import javax.faces.application.Resource;
-import java.util.Stack;
-
-/**
- * <p>
- * <code>CompositeComponentStackManager</code> is responsible for managing the
- * two different composite component stacks currently used by Mojarra.
- * </p>
- *
- * <p>
- * The stacks are identified by the {@link StackType} enum which has two elements,
- * <code>TreeCreation<code> and <code>Evaluation</code>.
- * </p>
- *
- * <p>
- * The <code>TreeCreation</code> stack represents the composite components that
- * have been pushed by the TagHandlers responsible for building the tree.
- * </p>
- *
- * <p>
- * The <code>Evaluation</code> stack is used by the EL in order to properly
- * resolve nested composite component expressions.
- * </p>
- */
-public class CompositeComponentStackManager {
-
-
-    private static final String MANAGER_KEY =
-          CompositeComponentStackManager.class.getName();
-
-
-    public enum StackType {
-        TreeCreation,
-        Evaluation
-    }
-
-    private StackHandler treeCreation = new TreeCreationStackHandler();
-    private StackHandler runtime = new RuntimeStackHandler();
-    private FacesContext ctx;
-
-    
-    // ------------------------------------------------------------ Constructors
-
-
-    private CompositeComponentStackManager(FacesContext ctx) {
-
-        this.ctx = ctx;
-
-    }
-
-
-    // ---------------------------------------------------------- Public Methods
-
-
-    /**
-     * @param ctx the <code>FacesContext</code> for the current request
-     * @return the <code>CompositeComponentStackManager</code> for the current
-     *  request
-     */
-    public static CompositeComponentStackManager getManager(FacesContext ctx) {
-
-        CompositeComponentStackManager manager =
-              (CompositeComponentStackManager) ctx.getAttributes().get(MANAGER_KEY);
-        if (manager == null) {
-            manager = new CompositeComponentStackManager(ctx);
-            ctx.getAttributes().put(MANAGER_KEY, manager);
-        }
-
-        return manager;
-
-    }
-
-
-    /**
-     * <p>
-     * Pushes the specified composite component to the <code>Evaluation</code>
-     * stack.
-     * </p>
-     *
-     * @param compositeComponent the component to push
-     * @return <code>true</code> if the component was pushed, otherwise
-     *  returns <code>false</code>
-     */
-    public boolean push(UIComponent compositeComponent) {
-        return getStackHandler(StackType.Evaluation).push(compositeComponent);
-    }
-
-
-    /**
-     * <p>
-     * Pushes the specified composite component to the desired <code>StackType</code>
-     * stack.
-     * </p>
-     *
-     * @param compositeComponent the component to push
-     * @param stackType the stack to push to the component to
-     * @return <code>true</code> if the component was pushed, otherwise
-     *  returns <code>false</code>
-     */
-    public boolean push(UIComponent compositeComponent, StackType stackType) {
-        return getStackHandler(stackType).push(compositeComponent);
-    }
-
-
-    /**
-     * <p>
-     * Pushes a component derived by the push logic to the <code>Evaluation</code>
-     * stack.
-     * </p>
-     *
-     * @return <code>true</code> if the component was pushed, otherwise
-     *  returns <code>false</code>
-     */
-    public boolean push() {
-        return getStackHandler(StackType.Evaluation).push();
-    }
-
-
-    /**
-     * <p>
-     * Pushes a component derived by the push logic to the specified stack.
-     * </p>
-     *
-     * @param stackType the stack to push to the component to
-     *
-     * @return <code>true</code> if the component was pushed, otherwise
-     *  returns <code>false</code>
-     */
-    public boolean push(StackType stackType) {
-        return getStackHandler(stackType).push();
-    }
-
-
-    /**
-     * <p>
-     * Pops the top-level component from the stack.
-     * </p>
-     *
-     * @param stackType the stack to pop the top level component from
-     */
-    public void pop(StackType stackType) {
-        getStackHandler(stackType).pop();
-    }
-
-
-    /**
-     * <p>
-     * Pops the top-level component from the <code>Evaluation</code> stack.
-     * </p>
-     */
-    public void pop() {
-        getStackHandler(StackType.Evaluation).pop();
-    }
-
-
-    /**
-     * @return the top-level component from the <code>Evaluation</code> stack
-     *  without removing the element
-     */
-    public UIComponent peek() {
-        return getStackHandler(StackType.Evaluation).peek();
-    }
-
-
-    /**
-     * @param stackType the stack to push to the component to
-     * 
-     * @return the top-level component from the specified stack
-     *  without removing the element
-     */
-    public UIComponent peek(StackType stackType) {
-        return getStackHandler(stackType).peek();
-    }
-
-
-    public UIComponent getParentCompositeComponent(StackType stackType,
-                                                   FacesContext ctx,
-                                                   UIComponent forComponent) {
-        return getStackHandler(stackType).getParentCompositeComponent(ctx, forComponent);
-    }
-
-    public UIComponent findCompositeComponentUsingLocation(FacesContext ctx,
-                                                           Location location) {
-
-        StackHandler sh = getStackHandler(StackType.TreeCreation);
-        Stack<UIComponent> s = sh.getStack(false);
-        if (s != null) {
-            String path = location.getPath();
-            for (int i = s.size(); i > 0; i--) {
-                UIComponent cc = s.get(i - 1);
-                Resource r = (Resource) cc.getAttributes().get(Resource.COMPONENT_RESOURCE_KEY);
-                if (path.endsWith('/' + r.getResourceName()) && path.contains(r.getLibraryName())) {
-                    return cc;
-                }
-            }
-        } else {
-            // runtime eval
-            String path = location.getPath();
-            UIComponent cc = UIComponent.getCurrentCompositeComponent(ctx);
-            while (cc != null) {
-                Resource r = (Resource) cc.getAttributes().get(Resource.COMPONENT_RESOURCE_KEY);
-                if (path.endsWith('/' + r.getResourceName()) && path.contains(r.getLibraryName())) {
-                    return cc;
-                }
-                cc = UIComponent.getCompositeComponentParent(cc);
-            }
-        }
-        return null;
-    }
-
-
-    // --------------------------------------------------------- Private Methods
-
-
-    private StackHandler getStackHandler(StackType type) {
-
-        StackHandler handler = null;
-        switch (type) {
-            case TreeCreation: handler = treeCreation; break;
-            case Evaluation: handler = runtime; break;
-        }
-        return handler;
-
-    }
-
-
-    // ------------------------------------------------------ Private Interfaces
-
-
-    private interface StackHandler {
-
-        boolean push(UIComponent compositeComponent);
-        boolean push();
-        void pop();
-        UIComponent peek();
-        UIComponent getParentCompositeComponent(FacesContext ctx, UIComponent forComponent);
-        void delete();
-        Stack<UIComponent> getStack(boolean create);
-
-    }
-
-
-    // ---------------------------------------------------------- Nested Classes
-
-
-    private abstract class BaseStackHandler implements StackHandler {
-
-        protected Stack<UIComponent> stack;
-
-
-        // ------------------------------------------- Methods from StackHandler
-
-
-        public void delete() {
-
-            stack = null;
-
-        }
-
-
-        public Stack<UIComponent> getStack(boolean create) {
-
-            if (stack == null && create) {
-                stack = new Stack<UIComponent>();
-            }
-            return stack;
-
-        }
-
-
-        public UIComponent peek() {
-
-            if (stack != null && !stack.isEmpty()) {
-                return stack.peek();
-            }
-            return null;
-            
-        }
-
-    } // END BaseStackHandler
-
-
-    private final class RuntimeStackHandler extends BaseStackHandler {
-
-
-        // ------------------------------------------- Methods from StackHandler
-
-
-        public void delete() {
-
-            Stack s = getStack(false);
-            if (s != null) {
-                s.clear();
-            }
-
-        }
-
-
-        public void pop() {
-
-            Stack s = getStack(false);
-            if (s != null && !s.isEmpty()) {
-                s.pop();
-            }
-
-        }
-
-
-        public boolean push() {
-
-            return push(null);
-
-        }
-
-
-        public boolean push(UIComponent compositeComponent) {
-
-            Stack<UIComponent> tstack =
-                  CompositeComponentStackManager.this.treeCreation.getStack(false);
-            Stack<UIComponent> stack = getStack(false);
-            UIComponent ccp;
-            if (tstack != null) {
-                // We have access to the stack of composite components
-                // the tree creation process has made available.
-                // Since we can' reliably access the parent composite component
-                // of the current composite component, use the index of the
-                // current composite component within the stack to locate the
-                // parent.
-                ccp = compositeComponent;
-            } else {
-                // no tree creation stack available, so use the runtime stack.
-                // If the current stack isn't empty, then use the component
-                // on the stack as the current composite component.
-                stack = getStack(false);
-
-                if (compositeComponent == null) {
-                    if (stack != null && !stack.isEmpty()) {
-                        ccp = getCompositeParent(stack.peek());
-                    } else {
-                        ccp = getCompositeParent((UIComponent
-                              .getCurrentCompositeComponent(ctx)));
-                    }
-                } else {
-                    ccp = compositeComponent;
-                }
-            }
-
-
-            if (ccp != null) {
-                if (stack == null) {
-                    stack = getStack(true);
-                }
-                stack.push(ccp);
-                return true;
-            }
-            return false;
-
-        }
-
-        public UIComponent getParentCompositeComponent(FacesContext ctx,
-                                                       UIComponent forComponent) {
-
-            return getCompositeParent(forComponent);
-
-        }
-
-
-        // ----------------------------------------------------- Private Methods
-
-
-        private UIComponent getCompositeParent(UIComponent comp) {
-
-            return UIComponent.getCompositeComponentParent(comp);
-
-        }
-
-    } // END RuntimeStackHandler
-
-
-    private final class TreeCreationStackHandler extends BaseStackHandler {
-
-
-        // ------------------------------------------- Methods from StackHandler
-
-
-        public void pop() {
-
-            Stack s = getStack(false);
-            if (s != null && !stack.isEmpty()) {
-                stack.pop();
-                if (stack.isEmpty()) {
-                    delete();
-                }
-            }
-
-        }
-
-
-        public boolean push() {
-
-            return false;
-
-        }
-
-
-        public boolean push(UIComponent compositeComponent) {
-
-            if (compositeComponent != null) {
-                assert (UIComponent.isCompositeComponent(compositeComponent));
-                Stack<UIComponent> s = getStack(true);
-                s.push(compositeComponent);
-                return true;
-            }
-            return false;
-
-        }
-
-
-        public UIComponent getParentCompositeComponent(FacesContext ctx, UIComponent forComponent) {
-
-            Stack<UIComponent> s = getStack(false);
-            if (s == null) {
-                return null;
-            } else {
-                int idx = s.indexOf(forComponent);
-                if (idx == 0) { // no parent
-                    return null;
-                }
-                return (s.get(idx - 1));
-            }
-        }
-        
-    } // END TreeCreationStackHandler
-
-
-
-}
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.component;
+
+import javax.faces.context.FacesContext;
+import javax.faces.component.UIComponent;
+import javax.faces.view.Location;
+import javax.faces.application.Resource;
+import java.util.Stack;
+
+/**
+ * <p>
+ * <code>CompositeComponentStackManager</code> is responsible for managing the
+ * two different composite component stacks currently used by Mojarra.
+ * </p>
+ *
+ * <p>
+ * The stacks are identified by the {@link StackType} enum which has two elements,
+ * <code>TreeCreation<code> and <code>Evaluation</code>.
+ * </p>
+ *
+ * <p>
+ * The <code>TreeCreation</code> stack represents the composite components that
+ * have been pushed by the TagHandlers responsible for building the tree.
+ * </p>
+ *
+ * <p>
+ * The <code>Evaluation</code> stack is used by the EL in order to properly
+ * resolve nested composite component expressions.
+ * </p>
+ */
+public class CompositeComponentStackManager {
+
+
+    private static final String MANAGER_KEY =
+          CompositeComponentStackManager.class.getName();
+
+
+    public enum StackType {
+        TreeCreation,
+        Evaluation
+    }
+
+    private StackHandler treeCreation = new TreeCreationStackHandler();
+    private StackHandler runtime = new RuntimeStackHandler();
+
+    
+    // ------------------------------------------------------------ Constructors
+
+
+    private CompositeComponentStackManager() {
+    }
+
+
+    // ---------------------------------------------------------- Public Methods
+
+
+    /**
+     * @param ctx the <code>FacesContext</code> for the current request
+     * @return the <code>CompositeComponentStackManager</code> for the current
+     *  request
+     */
+    public static CompositeComponentStackManager getManager(FacesContext ctx) {
+
+        CompositeComponentStackManager manager =
+              (CompositeComponentStackManager) ctx.getAttributes().get(MANAGER_KEY);
+        if (manager == null) {
+            manager = new CompositeComponentStackManager();
+            ctx.getAttributes().put(MANAGER_KEY, manager);
+        }
+
+        return manager;
+
+    }
+
+
+    /**
+     * <p>
+     * Pushes the specified composite component to the <code>Evaluation</code>
+     * stack.
+     * </p>
+     *
+     * @param compositeComponent the component to push
+     * @return <code>true</code> if the component was pushed, otherwise
+     *  returns <code>false</code>
+     */
+    public boolean push(UIComponent compositeComponent) {
+        return getStackHandler(StackType.Evaluation).push(compositeComponent);
+    }
+
+
+    /**
+     * <p>
+     * Pushes the specified composite component to the desired <code>StackType</code>
+     * stack.
+     * </p>
+     *
+     * @param compositeComponent the component to push
+     * @param stackType the stack to push to the component to
+     * @return <code>true</code> if the component was pushed, otherwise
+     *  returns <code>false</code>
+     */
+    public boolean push(UIComponent compositeComponent, StackType stackType) {
+        return getStackHandler(stackType).push(compositeComponent);
+    }
+
+
+    /**
+     * <p>
+     * Pushes a component derived by the push logic to the <code>Evaluation</code>
+     * stack.
+     * </p>
+     *
+     * @return <code>true</code> if the component was pushed, otherwise
+     *  returns <code>false</code>
+     */
+    public boolean push() {
+        return getStackHandler(StackType.Evaluation).push();
+    }
+
+
+    /**
+     * <p>
+     * Pushes a component derived by the push logic to the specified stack.
+     * </p>
+     *
+     * @param stackType the stack to push to the component to
+     *
+     * @return <code>true</code> if the component was pushed, otherwise
+     *  returns <code>false</code>
+     */
+    public boolean push(StackType stackType) {
+        return getStackHandler(stackType).push();
+    }
+
+
+    /**
+     * <p>
+     * Pops the top-level component from the stack.
+     * </p>
+     *
+     * @param stackType the stack to pop the top level component from
+     */
+    public void pop(StackType stackType) {
+        getStackHandler(stackType).pop();
+    }
+
+
+    /**
+     * <p>
+     * Pops the top-level component from the <code>Evaluation</code> stack.
+     * </p>
+     */
+    public void pop() {
+        getStackHandler(StackType.Evaluation).pop();
+    }
+
+
+    /**
+     * @return the top-level component from the <code>Evaluation</code> stack
+     *  without removing the element
+     */
+    public UIComponent peek() {
+        return getStackHandler(StackType.Evaluation).peek();
+    }
+
+
+    /**
+     * @param stackType the stack to push to the component to
+     * 
+     * @return the top-level component from the specified stack
+     *  without removing the element
+     */
+    public UIComponent peek(StackType stackType) {
+        return getStackHandler(stackType).peek();
+    }
+
+
+    public UIComponent getParentCompositeComponent(StackType stackType,
+                                                   FacesContext ctx,
+                                                   UIComponent forComponent) {
+        return getStackHandler(stackType).getParentCompositeComponent(ctx, forComponent);
+    }
+
+    public UIComponent findCompositeComponentUsingLocation(FacesContext ctx,
+                                                           Location location) {
+
+        StackHandler sh = getStackHandler(StackType.TreeCreation);
+        Stack<UIComponent> s = sh.getStack(false);
+        if (s != null) {
+            String path = location.getPath();
+            for (int i = s.size(); i > 0; i--) {
+                UIComponent cc = s.get(i - 1);
+                Resource r = (Resource) cc.getAttributes().get(Resource.COMPONENT_RESOURCE_KEY);
+                if (path.endsWith('/' + r.getResourceName()) && path.contains(r.getLibraryName())) {
+                    return cc;
+                }
+            }
+        } else {
+            // runtime eval
+            String path = location.getPath();
+            UIComponent cc = UIComponent.getCurrentCompositeComponent(ctx);
+            while (cc != null) {
+                Resource r = (Resource) cc.getAttributes().get(Resource.COMPONENT_RESOURCE_KEY);
+                if (path.endsWith('/' + r.getResourceName()) && path.contains(r.getLibraryName())) {
+                    return cc;
+                }
+                cc = UIComponent.getCompositeComponentParent(cc);
+            }
+        }
+        
+        // we could not find the composite component because the location was not found,
+        // this will happen if the #{cc} refers to a composite component one level up,
+        // so we are going after the current composite component.
+        //
+        return UIComponent.getCurrentCompositeComponent(ctx);
+    }
+
+
+    // --------------------------------------------------------- Private Methods
+
+
+    private StackHandler getStackHandler(StackType type) {
+
+        StackHandler handler = null;
+        switch (type) {
+            case TreeCreation: handler = treeCreation; break;
+            case Evaluation: handler = runtime; break;
+        }
+        return handler;
+
+    }
+
+
+    // ------------------------------------------------------ Private Interfaces
+
+
+    private interface StackHandler {
+
+        boolean push(UIComponent compositeComponent);
+        boolean push();
+        void pop();
+        UIComponent peek();
+        UIComponent getParentCompositeComponent(FacesContext ctx, UIComponent forComponent);
+        void delete();
+        Stack<UIComponent> getStack(boolean create);
+
+    }
+
+
+    // ---------------------------------------------------------- Nested Classes
+
+
+    private abstract class BaseStackHandler implements StackHandler {
+
+        protected Stack<UIComponent> stack;
+
+
+        // ------------------------------------------- Methods from StackHandler
+
+
+        public void delete() {
+
+            stack = null;
+
+        }
+
+
+        public Stack<UIComponent> getStack(boolean create) {
+
+            if (stack == null && create) {
+                stack = new Stack<UIComponent>();
+            }
+            return stack;
+
+        }
+
+
+        public UIComponent peek() {
+
+            if (stack != null && !stack.isEmpty()) {
+                return stack.peek();
+            }
+            return null;
+            
+        }
+
+    } // END BaseStackHandler
+
+
+    private final class RuntimeStackHandler extends BaseStackHandler {
+
+
+        // ------------------------------------------- Methods from StackHandler
+
+
+        public void delete() {
+
+            Stack s = getStack(false);
+            if (s != null) {
+                s.clear();
+            }
+
+        }
+
+
+        public void pop() {
+
+            Stack s = getStack(false);
+            if (s != null && !s.isEmpty()) {
+                s.pop();
+            }
+
+        }
+
+
+        public boolean push() {
+
+            return push(null);
+
+        }
+
+
+        public boolean push(UIComponent compositeComponent) {
+
+            Stack<UIComponent> tstack =
+                  CompositeComponentStackManager.this.treeCreation.getStack(false);
+            Stack<UIComponent> stack = getStack(false);
+            UIComponent ccp;
+            if (tstack != null) {
+                // We have access to the stack of composite components
+                // the tree creation process has made available.
+                // Since we can' reliably access the parent composite component
+                // of the current composite component, use the index of the
+                // current composite component within the stack to locate the
+                // parent.
+                ccp = compositeComponent;
+            } else {
+                // no tree creation stack available, so use the runtime stack.
+                // If the current stack isn't empty, then use the component
+                // on the stack as the current composite component.
+                stack = getStack(false);
+
+                if (compositeComponent == null) {
+                    if (stack != null && !stack.isEmpty()) {
+                        ccp = getCompositeParent(stack.peek());
+                    } else {
+                        ccp = getCompositeParent((UIComponent
+                              .getCurrentCompositeComponent(FacesContext.getCurrentInstance())));
+                    }
+                } else {
+                    ccp = compositeComponent;
+                }
+            }
+
+
+            if (ccp != null) {
+                if (stack == null) {
+                    stack = getStack(true);
+                }
+                stack.push(ccp);
+                return true;
+            }
+            return false;
+
+        }
+
+        public UIComponent getParentCompositeComponent(FacesContext ctx,
+                                                       UIComponent forComponent) {
+
+            return getCompositeParent(forComponent);
+
+        }
+
+
+        // ----------------------------------------------------- Private Methods
+
+
+        private UIComponent getCompositeParent(UIComponent comp) {
+
+            return UIComponent.getCompositeComponentParent(comp);
+
+        }
+
+    } // END RuntimeStackHandler
+
+
+    private final class TreeCreationStackHandler extends BaseStackHandler {
+
+
+        // ------------------------------------------- Methods from StackHandler
+
+
+        public void pop() {
+
+            Stack s = getStack(false);
+            if (s != null && !stack.isEmpty()) {
+                stack.pop();
+                if (stack.isEmpty()) {
+                    delete();
+                }
+            }
+
+        }
+
+
+        public boolean push() {
+
+            return false;
+
+        }
+
+
+        public boolean push(UIComponent compositeComponent) {
+
+            if (compositeComponent != null) {
+                assert (UIComponent.isCompositeComponent(compositeComponent));
+                Stack<UIComponent> s = getStack(true);
+                s.push(compositeComponent);
+                return true;
+            }
+            return false;
+
+        }
+
+
+        public UIComponent getParentCompositeComponent(FacesContext ctx, UIComponent forComponent) {
+
+            Stack<UIComponent> s = getStack(false);
+            if (s == null) {
+                return null;
+            } else {
+                int idx = s.indexOf(forComponent);
+                if (idx == 0) { // no parent
+                    return null;
+                }
+                return (s.get(idx - 1));
+            }
+        }
+        
+    } // END TreeCreationStackHandler
+
+
+
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/component/PassthroughElement.java b/jsf-ri/src/main/java/com/sun/faces/component/PassthroughElement.java
new file mode 100644
index 0000000..affaab8
--- /dev/null
+++ b/jsf-ri/src/main/java/com/sun/faces/component/PassthroughElement.java
@@ -0,0 +1,358 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.component;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+
+import javax.faces.component.behavior.ClientBehaviorHolder;
+import javax.el.ValueExpression;
+
+
+/**
+ * <p>Causes all child components of this component
+ * to be rendered.  This is useful in scenarios
+ * where a parent component is expecting a single
+ * component to be present, but the application
+ * wishes to render more than one.</p>
+ * <p>By default, the <code>rendererType</code> property must be set to "<code>javax.faces.passthrough.Element</code>".
+ * This value can be changed by calling the <code>setRendererType()</code> method.</p>
+ */
+public class PassthroughElement extends javax.faces.component.UIPanel 
+    implements ClientBehaviorHolder {
+
+    private static final String OPTIMIZED_PACKAGE = "javax.faces.component.";
+
+    public PassthroughElement() {
+        super();
+        setRendererType("javax.faces.passthrough.Element");
+    }
+
+
+    /**
+     * <p>The standard component type for this component.</p>
+     */
+    public static final String COMPONENT_TYPE = "javax.faces.Panel";
+
+
+    protected enum PropertyKeys {
+        onclick,
+        ondblclick,
+        onkeydown,
+        onkeypress,
+        onkeyup,
+        onmousedown,
+        onmousemove,
+        onmouseout,
+        onmouseover,
+        onmouseup,
+        style,
+        styleClass,
+;
+        String toString;
+        PropertyKeys(String toString) { this.toString = toString; }
+        PropertyKeys() { }
+        public String toString() {
+            return ((toString != null) ? toString : super.toString());
+        }
+    }
+
+    /**
+     * <p>Return the value of the <code>onclick</code> property.</p>
+     * <p>Contents: Javascript code executed when a pointer button is
+     * clicked over this element.
+     */
+    public java.lang.String getOnclick() {
+        return (java.lang.String) getStateHelper().eval(PropertyKeys.onclick);
+
+    }
+
+    /**
+     * <p>Set the value of the <code>onclick</code> property.</p>
+     */
+    public void setOnclick(java.lang.String onclick) {
+        getStateHelper().put(PropertyKeys.onclick, onclick);
+        handleAttribute("onclick", onclick);
+    }
+
+
+    /**
+     * <p>Return the value of the <code>ondblclick</code> property.</p>
+     * <p>Contents: Javascript code executed when a pointer button is
+     * double clicked over this element.
+     */
+    public java.lang.String getOndblclick() {
+        return (java.lang.String) getStateHelper().eval(PropertyKeys.ondblclick);
+
+    }
+
+    /**
+     * <p>Set the value of the <code>ondblclick</code> property.</p>
+     */
+    public void setOndblclick(java.lang.String ondblclick) {
+        getStateHelper().put(PropertyKeys.ondblclick, ondblclick);
+        handleAttribute("ondblclick", ondblclick);
+    }
+
+
+    /**
+     * <p>Return the value of the <code>onkeydown</code> property.</p>
+     * <p>Contents: Javascript code executed when a key is
+     * pressed down over this element.
+     */
+    public java.lang.String getOnkeydown() {
+        return (java.lang.String) getStateHelper().eval(PropertyKeys.onkeydown);
+
+    }
+
+    /**
+     * <p>Set the value of the <code>onkeydown</code> property.</p>
+     */
+    public void setOnkeydown(java.lang.String onkeydown) {
+        getStateHelper().put(PropertyKeys.onkeydown, onkeydown);
+        handleAttribute("onkeydown", onkeydown);
+    }
+
+    /**
+     * <p>Return the value of the <code>onkeypress</code> property.</p>
+     * <p>Contents: Javascript code executed when a key is
+     * pressed and released over this element.
+     */
+    public java.lang.String getOnkeypress() {
+        return (java.lang.String) getStateHelper().eval(PropertyKeys.onkeypress);
+
+    }
+
+    /**
+     * <p>Set the value of the <code>onkeypress</code> property.</p>
+     */
+    public void setOnkeypress(java.lang.String onkeypress) {
+        getStateHelper().put(PropertyKeys.onkeypress, onkeypress);
+        handleAttribute("onkeypress", onkeypress);
+    }
+
+
+    /**
+     * <p>Return the value of the <code>onkeyup</code> property.</p>
+     * <p>Contents: Javascript code executed when a key is
+     * released over this element.
+     */
+    public java.lang.String getOnkeyup() {
+        return (java.lang.String) getStateHelper().eval(PropertyKeys.onkeyup);
+
+    }
+
+    /**
+     * <p>Set the value of the <code>onkeyup</code> property.</p>
+     */
+    public void setOnkeyup(java.lang.String onkeyup) {
+        getStateHelper().put(PropertyKeys.onkeyup, onkeyup);
+        handleAttribute("onkeyup", onkeyup);
+    }
+
+
+    /**
+     * <p>Return the value of the <code>onmousedown</code> property.</p>
+     * <p>Contents: Javascript code executed when a pointer button is
+     * pressed down over this element.
+     */
+    public java.lang.String getOnmousedown() {
+        return (java.lang.String) getStateHelper().eval(PropertyKeys.onmousedown);
+
+    }
+
+    /**
+     * <p>Set the value of the <code>onmousedown</code> property.</p>
+     */
+    public void setOnmousedown(java.lang.String onmousedown) {
+        getStateHelper().put(PropertyKeys.onmousedown, onmousedown);
+        handleAttribute("onmousedown", onmousedown);
+    }
+
+    /**
+     * <p>Return the value of the <code>onmousemove</code> property.</p>
+     * <p>Contents: Javascript code executed when a pointer button is
+     * moved within this element.
+     */
+    public java.lang.String getOnmousemove() {
+        return (java.lang.String) getStateHelper().eval(PropertyKeys.onmousemove);
+
+    }
+
+    /**
+     * <p>Set the value of the <code>onmousemove</code> property.</p>
+     */
+    public void setOnmousemove(java.lang.String onmousemove) {
+        getStateHelper().put(PropertyKeys.onmousemove, onmousemove);
+        handleAttribute("onmousemove", onmousemove);
+    }
+
+
+    /**
+     * <p>Return the value of the <code>onmouseout</code> property.</p>
+     * <p>Contents: Javascript code executed when a pointer button is
+     * moved away from this element.
+     */
+    public java.lang.String getOnmouseout() {
+        return (java.lang.String) getStateHelper().eval(PropertyKeys.onmouseout);
+
+    }
+
+    /**
+     * <p>Set the value of the <code>onmouseout</code> property.</p>
+     */
+    public void setOnmouseout(java.lang.String onmouseout) {
+        getStateHelper().put(PropertyKeys.onmouseout, onmouseout);
+        handleAttribute("onmouseout", onmouseout);
+    }
+
+    /**
+     * <p>Return the value of the <code>onmouseover</code> property.</p>
+     * <p>Contents: Javascript code executed when a pointer button is
+     * moved onto this element.
+     */
+    public java.lang.String getOnmouseover() {
+        return (java.lang.String) getStateHelper().eval(PropertyKeys.onmouseover);
+
+    }
+
+    /**
+     * <p>Set the value of the <code>onmouseover</code> property.</p>
+     */
+    public void setOnmouseover(java.lang.String onmouseover) {
+        getStateHelper().put(PropertyKeys.onmouseover, onmouseover);
+        handleAttribute("onmouseover", onmouseover);
+    }
+
+
+    /**
+     * <p>Return the value of the <code>onmouseup</code> property.</p>
+     * <p>Contents: Javascript code executed when a pointer button is
+     * released over this element.
+     */
+    public java.lang.String getOnmouseup() {
+        return (java.lang.String) getStateHelper().eval(PropertyKeys.onmouseup);
+
+    }
+
+    /**
+     * <p>Set the value of the <code>onmouseup</code> property.</p>
+     */
+    public void setOnmouseup(java.lang.String onmouseup) {
+        getStateHelper().put(PropertyKeys.onmouseup, onmouseup);
+        handleAttribute("onmouseup", onmouseup);
+    }
+
+
+    /**
+     * <p>Return the value of the <code>style</code> property.</p>
+     * <p>Contents: CSS style(s) to be applied when this component is rendered.
+     */
+    public java.lang.String getStyle() {
+        return (java.lang.String) getStateHelper().eval(PropertyKeys.style);
+
+    }
+
+    /**
+     * <p>Set the value of the <code>style</code> property.</p>
+     */
+    public void setStyle(java.lang.String style) {
+        getStateHelper().put(PropertyKeys.style, style);
+        handleAttribute("style", style);
+    }
+
+    /**
+     * <p>Return the value of the <code>styleClass</code> property.</p>
+     * <p>Contents: Space-separated list of CSS style class(es) to be applied when
+     * this element is rendered.  This value must be passed through
+     * as the "class" property on generated markup.
+     */
+    public java.lang.String getStyleClass() {
+        return (java.lang.String) getStateHelper().eval(PropertyKeys.styleClass);
+
+    }
+
+    /**
+     * <p>Set the value of the <code>styleClass</code> property.</p>
+     */
+    public void setStyleClass(java.lang.String styleClass) {
+        getStateHelper().put(PropertyKeys.styleClass, styleClass);
+    }
+
+    private static final Collection<String> EVENT_NAMES = Collections.unmodifiableCollection(
+        Arrays.asList("click","dblclick","keydown","keypress","keyup","mousedown","mousemove",
+        "mouseout","mouseover","mouseup"));
+
+    public Collection<String> getEventNames() {
+        return EVENT_NAMES;    
+    }
+
+
+    public String getDefaultEventName() {
+        return "click";    
+    }
+
+
+    private void handleAttribute(String name, Object value) {
+        List<String> setAttributes = (List<String>) this.getAttributes().get(
+            "javax.faces.component.UIComponentBase.attributesThatAreSet");
+        if (setAttributes == null) {
+            String cname = this.getClass().getName();
+            if (cname != null && cname.startsWith(OPTIMIZED_PACKAGE)) {
+                setAttributes = new ArrayList<String>(6);
+                this.getAttributes().put("javax.faces.component.UIComponentBase.attributesThatAreSet", setAttributes);
+            }
+        }
+        if (setAttributes != null) {
+            if (value == null) {
+                ValueExpression ve = getValueExpression(name);
+                if (ve == null) {
+                    setAttributes.remove(name);
+                }
+            } else if (!setAttributes.contains(name)) {
+                setAttributes.add(name);
+            }
+        }
+    }
+
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/component/behavior/AjaxBehaviors.java b/jsf-ri/src/main/java/com/sun/faces/component/behavior/AjaxBehaviors.java
index a68b686..a1e7907 100644
--- a/jsf-ri/src/main/java/com/sun/faces/component/behavior/AjaxBehaviors.java
+++ b/jsf-ri/src/main/java/com/sun/faces/component/behavior/AjaxBehaviors.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -33,12 +37,13 @@
  * only if the new code is made subject to such option by the copyright
  * holder.
  */
- 
+
 package com.sun.faces.component.behavior;
 
 import java.io.Serializable;
 
-import java.util.LinkedList;
+import java.util.ArrayDeque;
+import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
@@ -60,10 +65,10 @@ public class AjaxBehaviors implements Serializable {
 
     private static final String AJAX_BEHAVIORS = "javax.faces.component.AjaxBehaviors";
 
-    private LinkedList<BehaviorInfo> behaviorStack = null;
+    private ArrayDeque<BehaviorInfo> behaviorStack = null;
 
     public AjaxBehaviors() {
-        behaviorStack = new LinkedList<BehaviorInfo>();
+        behaviorStack = new ArrayDeque<BehaviorInfo>();
     }
 
     // Returns the AjaxBehaviors instance, creating it if necessary.
@@ -94,16 +99,15 @@ public class AjaxBehaviors implements Serializable {
         // way the nearest behaviors take precedence.  Behaviors that were
         // pushed earlier won't be added since we'll already have a 
         // submitting behavior attached.
-        int count = behaviorStack.size();
-        for (int i = count - 1; i >= 0; i--) {
-            behaviorStack.get(i).addBehavior(context, behaviorHolder);
+        Iterator<BehaviorInfo> descendingIter = behaviorStack.descendingIterator();
+        while (descendingIter.hasNext()) {
+            descendingIter.next().addBehavior(context, behaviorHolder);
         }
     }
 
 
     /**
-     * <p>Push the {@link AjaxBehavior} into scope making it available 
-     * for subsequent calls to {@link #getBehaviorForEvent}.</p>
+     * <p>Push the {@link AjaxBehavior} instance onto the <code>List</code>.</p>
      *
      * @param ajaxBehavior the {@link AjaxBehavior} instance
      * @param eventName the name of the event that the behavior is associated
@@ -131,9 +135,10 @@ public class AjaxBehaviors implements Serializable {
 
     // Helper class for storing and creating/applying inherited
     // AjaxBehaviors
-    public static class BehaviorInfo {
+    public static class BehaviorInfo implements Serializable {
         private String eventName;
         private Object behaviorState;
+        private static final long serialVersionUID = -7679229822647712959L;
 
         public BehaviorInfo(FacesContext context,
                             AjaxBehavior ajaxBehavior,
@@ -148,20 +153,20 @@ public class AjaxBehaviors implements Serializable {
         public void addBehavior(FacesContext context,
                                 ClientBehaviorHolder behaviorHolder) {
 
-            String eventName = this.eventName;
-            if (eventName == null) {
-                eventName = behaviorHolder.getDefaultEventName();
+            String myEventName = this.eventName;
+            if (myEventName == null) {
+                myEventName = behaviorHolder.getDefaultEventName();
 
                 // No event name, default or otherwise - we're done
-                if (eventName == null) {
+                if (myEventName == null) {
                     return;
                 }
             }
 
             // We only add the 
-            if (shouldAddBehavior(behaviorHolder, eventName)) {
+            if (shouldAddBehavior(behaviorHolder, myEventName)) {
                 ClientBehavior behavior = createBehavior(context);
-                behaviorHolder.addClientBehavior(eventName, behavior);
+                behaviorHolder.addClientBehavior(myEventName, behavior);
             }
 
         }
diff --git a/jsf-ri/src/main/java/com/sun/faces/component/validator/ComponentValidators.java b/jsf-ri/src/main/java/com/sun/faces/component/validator/ComponentValidators.java
index 571fa81..18216ae 100644
--- a/jsf-ri/src/main/java/com/sun/faces/component/validator/ComponentValidators.java
+++ b/jsf-ri/src/main/java/com/sun/faces/component/validator/ComponentValidators.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -46,6 +50,7 @@ import javax.faces.application.Application;
 import javax.faces.view.facelets.ValidatorHandler;
 import javax.faces.view.facelets.FaceletContext;
 import java.util.*;
+import javax.faces.event.PhaseId;
 
 /**
  * <p>
@@ -129,19 +134,20 @@ public class ComponentValidators {
     public static void addDefaultValidatorsToComponent(FacesContext ctx,
                                                        EditableValueHolder editableValueHolder) {
 
-        Set<String> keySet = ctx.getApplication().getDefaultValidatorInfo().keySet();
-        List<String> validatorIds = new ArrayList<String>(keySet.size());
-        Set<String> disabledValidatorIds = (Set<String>)
-              RequestStateManager.remove(ctx, RequestStateManager.DISABLED_VALIDATORS);
-        for (String key : keySet) {
-            if (disabledValidatorIds != null && disabledValidatorIds.contains(key)) {
-                continue;
+        if (!ctx.isPostback() || ctx.getCurrentPhaseId().equals(PhaseId.RESTORE_VIEW)) {
+            Set<String> keySet = ctx.getApplication().getDefaultValidatorInfo().keySet();
+            List<String> validatorIds = new ArrayList<String>(keySet.size());
+            Set<String> disabledValidatorIds = (Set<String>)
+                  RequestStateManager.remove(ctx, RequestStateManager.DISABLED_VALIDATORS);
+            for (String key : keySet) {
+                if (disabledValidatorIds != null && disabledValidatorIds.contains(key)) {
+                    continue;
+                }
+                validatorIds.add(key);
             }
-            validatorIds.add(key);
-        }
-
-        addValidatorsToComponent(ctx, validatorIds, editableValueHolder, null);
 
+            addValidatorsToComponent(ctx, validatorIds, editableValueHolder, null);
+        }
     }
 
 
diff --git a/jsf-ri/src/main/java/com/sun/faces/component/visit/FullVisitContext.java b/jsf-ri/src/main/java/com/sun/faces/component/visit/FullVisitContext.java
index 37968ec..9819e5b 100644
--- a/jsf-ri/src/main/java/com/sun/faces/component/visit/FullVisitContext.java
+++ b/jsf-ri/src/main/java/com/sun/faces/component/visit/FullVisitContext.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/component/visit/PartialVisitContext.java b/jsf-ri/src/main/java/com/sun/faces/component/visit/PartialVisitContext.java
index 4e28009..c1d1ec9 100644
--- a/jsf-ri/src/main/java/com/sun/faces/component/visit/PartialVisitContext.java
+++ b/jsf-ri/src/main/java/com/sun/faces/component/visit/PartialVisitContext.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -132,6 +136,10 @@ public class PartialVisitContext extends VisitContext {
         return clientIds;
     }
 
+    public Collection<String> getUnvisitedClientIds() {
+        return unvisitedClientIds;
+    }
+
     /**
      * @see VisitContext#getSubtreeIdsToVisit VisitContext.getSubtreeIdsToVisit()
      */
diff --git a/jsf-ri/src/main/java/com/sun/faces/component/visit/VisitContextFactoryImpl.java b/jsf-ri/src/main/java/com/sun/faces/component/visit/VisitContextFactoryImpl.java
index bd99340..6ffd2d3 100644
--- a/jsf-ri/src/main/java/com/sun/faces/component/visit/VisitContextFactoryImpl.java
+++ b/jsf-ri/src/main/java/com/sun/faces/component/visit/VisitContextFactoryImpl.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -50,6 +54,9 @@ import javax.faces.context.FacesContext;
  */
 public class VisitContextFactoryImpl extends VisitContextFactory {
 
+    public VisitContextFactoryImpl() {
+    }
+
     @Override
     public VisitContext getVisitContext(FacesContext context, 
             Collection<String> ids, 
diff --git a/jsf-ri/src/main/java/com/sun/faces/config/AnnotationScanner.java b/jsf-ri/src/main/java/com/sun/faces/config/AnnotationScanner.java
index 704e690..2bee0ae 100644
--- a/jsf-ri/src/main/java/com/sun/faces/config/AnnotationScanner.java
+++ b/jsf-ri/src/main/java/com/sun/faces/config/AnnotationScanner.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -36,6 +40,14 @@
 
 package com.sun.faces.config;
 
+import javax.faces.view.facelets.FaceletsResourceResolver;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
 import com.sun.faces.scripting.ScriptManager;
 import com.sun.faces.scripting.groovy.GroovyHelper;
 import com.sun.faces.scripting.groovy.GroovyScriptManager;
@@ -53,27 +65,15 @@ import javax.faces.render.FacesBehaviorRenderer;
 import javax.faces.render.FacesRenderer;
 import javax.faces.validator.FacesValidator;
 import javax.servlet.ServletContext;
-import java.io.IOException;
 import java.lang.annotation.Annotation;
-import java.net.JarURLConnection;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.nio.ByteBuffer;
-import java.nio.channels.Channels;
-import java.nio.channels.ReadableByteChannel;
-import java.util.*;
-import java.util.jar.JarEntry;
-import java.util.jar.JarFile;
 import java.util.logging.Level;
 import java.util.logging.Logger;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
 import static com.sun.faces.config.WebConfiguration.WebContextInitParameter.AnnotationScanPackages;
 
+
 /**
- * This class is responsible for scanning the class file bytes of
- * classes contained within the web application for any of the known
+ * This class is responsible for ensuring that the class file bytes of
+ * classes contained within the web application are scanned for any of the known
  * Faces configuration Annotations:
  * <ul>
  *  <li>javax.faces.component.FacesBehavior</li>
@@ -84,24 +84,32 @@ import static com.sun.faces.config.WebConfiguration.WebContextInitParameter.Anno
  *  <li>javax.faces.render.FacesRenderer</li>
  *  <li>javax.faces.bean.ManagedBean</li>
  *  <li>javax.faces.event.NamedEvent</li>
+ *  <li>javax.faces.view.facelets.FaceletsResourceResolver</li>
  * </ul>
  */
-public class AnnotationScanner extends AnnotationProvider {
+public abstract class AnnotationScanner extends AnnotationProvider {
 
-    private static final Logger LOGGER = FacesLogger.CONFIG.getLogger();
 
-    // Matcher.group(1) == the URL to the JAR file itself.
-    // Matcher.group(2) == the name of the JAR.
-    private static final Pattern JAR_PATTERN = Pattern.compile("(.*/(\\S*\\.jar)).*");
+    // <editor-fold defaultstate="collapsed" desc="data">
 
-    private static final String WEB_INF_CLASSES = "/WEB-INF/classes/";
+    // <editor-fold defaultstate="collapsed" desc="private class vars">
+
+    private static final Logger LOGGER = FacesLogger.CONFIG.getLogger();
     private static final String WILDCARD = "*";
+    
+    // </editor-fold>
 
-    private static final Set<String> FACES_ANNOTATIONS;
-    private static final Set<Class<? extends Annotation>> FACES_ANNOTATION_TYPE;
+    // <editor-fold defaultstate="collapsed" desc="protected class vars">
+
+    protected static final Set<String> FACES_ANNOTATIONS;
+    protected static final Set<Class<? extends Annotation>> FACES_ANNOTATION_TYPE;
+
+    // </editor-fold>
 
     static {
         HashSet<String> annotations = new HashSet<String>(8, 1.0f);
+        // JAVASERVERFACES-1835 this collection has the same information twice.
+        // Once in javap -s format, and once as fully qualified Java class names.
         Collections.addAll(annotations,
                            "Ljavax/faces/component/FacesComponent;",
                            "Ljavax/faces/convert/FacesConverter;",
@@ -110,7 +118,17 @@ public class AnnotationScanner extends AnnotationProvider {
                            "Ljavax/faces/bean/ManagedBean;",
                            "Ljavax/faces/event/NamedEvent;",
                            "Ljavax/faces/component/behavior/FacesBehavior;",
-                           "Ljavax/faces/render/FacesBehaviorRenderer;");
+                           "Ljavax/faces/render/FacesBehaviorRenderer;",
+                           "Ljavax/faces/view/facelets/FaceletsResourceResolver;",
+                           "javax.faces.component.FacesComponent",
+                           "javax.faces.convert.FacesConverter",
+                           "javax.faces.validator.FacesValidator",
+                           "javax.faces.render.FacesRenderer",
+                           "javax.faces.bean.ManagedBean",
+                           "javax.faces.event.NamedEvent",
+                           "javax.faces.component.behavior.FacesBehavior",
+                           "javax.faces.render.FacesBehaviorRenderer",
+                           "javax.faces.view.facelets.FaceletsResourceResolver");
         FACES_ANNOTATIONS = Collections.unmodifiableSet(annotations);
         HashSet<Class<? extends Annotation>> annotationInstances =
               new HashSet<Class<? extends Annotation>>(8, 1.0f);
@@ -122,17 +140,20 @@ public class AnnotationScanner extends AnnotationProvider {
                            ManagedBean.class,
                            NamedEvent.class,
                            FacesBehavior.class,
-                           FacesBehaviorRenderer.class);
+                           FacesBehaviorRenderer.class,
+                           FaceletsResourceResolver.class);
         FACES_ANNOTATION_TYPE = Collections.unmodifiableSet(annotationInstances);
     }
 
-    private ClassFile classFileScanner;
+    private List<ScriptManager> scriptManagers = new ArrayList<ScriptManager>();
+    private boolean isAnnotationScanPackagesSet = false;
     private String[] webInfClassesPackages;
     private Map<String,String[]> classpathPackages;
-    private List<ScriptManager> scriptManagers = new ArrayList<ScriptManager>();
 
-    // ------------------------------------------------------------ Constructors
 
+    // </editor-fold>
+
+    // <editor-fold defaultstate="collapsed" desc="constructors">
 
     /**
      * Creates a new <code>AnnotationScanner</code> instance.
@@ -143,350 +164,69 @@ public class AnnotationScanner extends AnnotationProvider {
     public AnnotationScanner(ServletContext sc) {
         super(sc);
 
-        classFileScanner = new ClassFile();
-        
         if (GroovyHelper.isGroovyAvailable(FacesContext.getCurrentInstance())) {
             scriptManagers.add(new GroovyScriptManager(sc));
         }
 
         WebConfiguration webConfig = WebConfiguration.getInstance(sc);
-        if (webConfig.isSet(AnnotationScanPackages)) {
-            classpathPackages = new HashMap<String,String[]>(4);
-            webInfClassesPackages = new String[0];
-            String[] options = webConfig.getOptionValue(AnnotationScanPackages, "\\s+");
-            List<String> packages = new ArrayList<String>(4);
-            for (String option : options) {
-                if (option.length() == 0) {
-                    continue;
-                }
-                if (option.startsWith("jar:")) {
-                    String[] parts = Util.split(option, ":");
-                    if (parts.length != 3) {
-                        if (LOGGER.isLoggable(Level.WARNING)) {
-                            LOGGER.log(Level.WARNING,
-                                       "jsf.annotation.scanner.configuration.invalid",
-                                       new String[] { AnnotationScanPackages.getQualifiedName(), option });
-                        }
-                    } else {
-                        if (WILDCARD.equals(parts[1]) && !classpathPackages.containsKey(WILDCARD)) {
-                            classpathPackages.clear();
-                            classpathPackages.put(WILDCARD, normalizeJarPackages(Util.split(parts[2], ",")));
-                        } else if (WILDCARD.equals(parts[1]) && classpathPackages.containsKey(WILDCARD)) {
-                            if (LOGGER.isLoggable(Level.WARNING)) {
-                                LOGGER.log(Level.WARNING,
-                                           "jsf.annotation.scanner.configuration.duplicate.wildcard",
-                                           new String[] { AnnotationScanPackages.getQualifiedName(), option });
-                            }
-                        } else {
-                            if (!classpathPackages.containsKey(WILDCARD)) {
-                                classpathPackages.put(parts[1], normalizeJarPackages(Util.split(parts[2], ",")));
-                            }
-                        }
-                    }
-                } else {
-                    if (WILDCARD.equals(option) && !packages.contains(WILDCARD)) {
-                        packages.clear();
-                        packages.add(WILDCARD);
-                    } else {
-                        if (!packages.contains(WILDCARD)) {
-                            packages.add(option);
-                        }
-                    }
-                }
-            }
-            webInfClassesPackages = packages.toArray(new String[packages.size()]);
-        }
-
+	initializeAnnotationScanPackages(sc, webConfig);
 
     }
 
+    // </editor-fold>
 
-    // ---------------------------------------------------------- Public Methods
+    // <editor-fold defaultstate="collapsed" desc="implementation details">
 
-
-    /**
-     * @return a <code>Map</code> of classes mapped to a specific annotation type.
-     *  If no annotations are present, or the application is considered
-     * <code>metadata-complete</code> <code>null</code> will be returned.
-     */
-    public Map<Class<? extends Annotation>,Set<Class<?>>> getAnnotatedClasses(Set<URL> urls) {
-
-        Set<String> classList = new HashSet<String>();
-
-        processWebInfClasses(sc, classList);
-        processClasspath(urls, classList);
-        processScripts(classList);
-
-        Map<Class<? extends Annotation>,Set<Class<?>>> annotatedClasses = null;
-        if (classList.size() > 0) {
-            annotatedClasses = new HashMap<Class<? extends Annotation>,Set<Class<?>>>(6, 1.0f);
-            for (String className : classList) {
-                try {
-                    Class<?> clazz = Util.loadClass(className, this);
-                    Annotation[] annotations = clazz.getAnnotations();
-                    for (Annotation annotation : annotations) {
-                        Class<? extends Annotation> annoType =
-                              annotation.annotationType();
-                        if (FACES_ANNOTATION_TYPE.contains(annoType)) {
-                            Set<Class<?>> classes = annotatedClasses.get(annoType);
-                            if (classes == null) {
-                                classes = new HashSet<Class<?>>();
-                                annotatedClasses.put(annoType, classes);
-                            }
-                            classes.add(clazz);
-                        }
-                    }
-                } catch (ClassNotFoundException cnfe) {
-                    // shouldn't happen..
-                    if (LOGGER.isLoggable(Level.SEVERE)) {
-                        LOGGER.log(Level.SEVERE,
-                                   "Unable to load annotated class: {0}",
-                                   className);
-                        LOGGER.log(Level.SEVERE, "", cnfe);
-                    }
-                } catch (NoClassDefFoundError ncdfe) {
-                    // this is more likely
-                    if (LOGGER.isLoggable(Level.SEVERE)) {
-                        LOGGER.log(Level.SEVERE,
-                                   "Unable to load annotated class: {0}, reason: {1}",
-                                   new Object[] { className, ncdfe.toString()});
-                    }
-                }
-            }
+    private void initializeAnnotationScanPackages(ServletContext sc, WebConfiguration webConfig) {
+        if (!webConfig.isSet(AnnotationScanPackages)) {
+            return;
         }
-
-        return ((annotatedClasses != null)
-                ? annotatedClasses
-                : Collections.<Class<? extends Annotation>, Set<Class<?>>>emptyMap());
-
-    }
-
-
-    // --------------------------------------------------------- Private Methods
-
-    private void processScripts(Set<String> classList) {
-        for (ScriptManager sm : scriptManagers) {
-            classList.addAll(sm.getScripts());
-        }
-    }
-
-    /**
-     * Scans for annotations on classes within JAR files on the classpath.
-     *
-     * @param urls to a faces-config documents that allow us to refer to
-     *  unique jar files on the classpath
-     * @param classList the <code>Set</code> to which annotated classes
-     *  will be added
-     */
-    private void processClasspath(Set<URL> urls, Set<String> classList) {
-
-        for (URL url : urls) {
-            try {
-                Matcher m = JAR_PATTERN.matcher(url.toString());
-                if (m.matches()) {
-                    String jarName = m.group(2);
-                    if (!processJar(jarName)) {
-                        continue;
-                    }
-                    StringBuilder sb = new StringBuilder(32);
-                    String us = m.group(1);
-                    if (!us.startsWith("jar:")) {
-                        sb.append("jar:");
-                    }
-                    sb.append(us).append("!/");
-                    URL u = new URL(sb.toString());
-                    JarFile jarFile =
-                          ((JarURLConnection) u.openConnection()).getJarFile();
-                    processJarEntries(jarFile,
-                                      ((classpathPackages != null)
-                                       ? classpathPackages.get(jarName)
-                                       : null),
-                                      classList);
-                } else {
-                    if (LOGGER.isLoggable(Level.FINE)) {
-                        LOGGER.fine("Unable to match URL to a jar file: " + url
-                              .toString());
-                    }
-                }
-            } catch (Exception e) {
-                if (LOGGER.isLoggable(Level.SEVERE)) {
-                    LOGGER.log(Level.SEVERE,
-                               "Unable to process annotations for url, {0}.  Reason: "
-                               + e.toString(),
-                               new Object[]{url});
-                    LOGGER.log(Level.SEVERE, "", e);
-                }
-            }
-        }
-
-    }
-
-
-    /**
-     * Called by {@link ConstantPoolInfo} when processing the bytes of the
-     * class file.
-     *
-     * @param value the String value as provided from {@link ConstantPoolInfo}
-     * @return <code>true</code> if the value is one of the known
-     *  Faces annotations, otherwise <code>false</code>
-     */
-    private static boolean isAnnotation(String value) {
-
-        return FACES_ANNOTATIONS.contains(value);
-
-    }
-
-
-    /**
-     * Process the entries in the provided <code>JarFile</code> looking for
-     * class files that may be annotated with any of the Faces configuration
-     * annotations.
-     *
-     * @param jarFile the JAR to process
-     * @param allowedPackages the packages that should be scanned within the jar
-     * @param classList the <code>Set</code> to which annotated classes
-     *  will be added
-     */
-    private void processJarEntries(JarFile jarFile, String[] allowedPackages, Set<String> classList) {
-
-        if (LOGGER.isLoggable(Level.FINE)) {
-            LOGGER.log(Level.FINE,
-                        "Scanning JAR {0} for annotations...",
-                        jarFile.getName());
-        }
-
-        for (Enumeration<JarEntry> entries = jarFile.entries(); entries.hasMoreElements(); ) {
-            JarEntry entry = entries.nextElement();
-            if (entry.isDirectory()) {
-                continue;
-            }
-
-            String name = entry.getName();
-            if (name.startsWith("META-INF")) {
+        isAnnotationScanPackagesSet = true;
+        classpathPackages = new HashMap<String,String[]>(4);
+        webInfClassesPackages = new String[0];
+        String[] options = webConfig.getOptionValue(AnnotationScanPackages, "\\s+");
+        List<String> packages = new ArrayList<String>(4);
+        for (String option : options) {
+            if (option.length() == 0) {
                 continue;
             }
-
-            if (name.endsWith(".class")) {
-                String cname = convertToClassName(name);
-                if (!processClass(cname, allowedPackages)) {
-                    continue;
-                }
-                ReadableByteChannel channel = null;
-                try {
-                    channel = Channels.newChannel(jarFile.getInputStream(entry));
-                    if (classFileScanner.containsAnnotation(channel)) {
-                        if (LOGGER.isLoggable(Level.FINE)) {
-                            LOGGER.log(Level.FINE,
-                                       "[JAR] Found annotated Class: {0}",
-                                       cname);
-                        }
-                        classList.add(cname);
+            if (option.startsWith("jar:")) {
+                String[] parts = Util.split(sc, option, ":");
+                if (parts.length != 3) {
+                    if (LOGGER.isLoggable(Level.WARNING)) {
+                        LOGGER.log(Level.WARNING,
+                                   "jsf.annotation.scanner.configuration.invalid",
+                                   new String[] { AnnotationScanPackages.getQualifiedName(), option });
                     }
-                } catch (IOException e) {
-                    if (LOGGER.isLoggable(Level.SEVERE)) {
-                        LOGGER.log(Level.SEVERE,
-                                   "Unexpected exception scanning JAR {0} for annotations",
-                                   jarFile.getName());
-                        LOGGER.log(Level.SEVERE,
-                                   e.toString(),
-                                   e);
-                    }
-                } finally {
-                    if (channel != null) {
-                        try {
-                            channel.close();
-                        } catch (IOException ignored) {
-                            if (LOGGER.isLoggable(Level.FINE)) {
-                                LOGGER.log(Level.FINE,
-                                           ignored.toString(),
-                                           ignored);
-                            }
+                } else {
+                    if (WILDCARD.equals(parts[1]) && !classpathPackages.containsKey(WILDCARD)) {
+                        classpathPackages.clear();
+                        classpathPackages.put(WILDCARD, normalizeJarPackages(Util.split(sc, parts[2], ",")));
+                    } else if (WILDCARD.equals(parts[1]) && classpathPackages.containsKey(WILDCARD)) {
+                        if (LOGGER.isLoggable(Level.WARNING)) {
+                            LOGGER.log(Level.WARNING,
+                                       "jsf.annotation.scanner.configuration.duplicate.wildcard",
+                                       new String[] { AnnotationScanPackages.getQualifiedName(), option });
+                        }
+                    } else {
+                        if (!classpathPackages.containsKey(WILDCARD)) {
+                            classpathPackages.put(parts[1], normalizeJarPackages(Util.split(sc, parts[2], ",")));
                         }
                     }
                 }
-            }
-        }
-
-    }
-
-
-    /**
-     * Scan <code>WEB-INF/classes</code> for classes that may be annotated
-     * with any of the Faces configuration annotations.
-     *
-     * @param sc the <code>ServletContext</code> for the application being
-     *  scanned
-     * @param classList the <code>Set</code> to which annotated classes
-     *  will be added
-     */
-    private void processWebInfClasses(ServletContext sc, Set<String> classList) {
-
-        processWebInfClasses(sc, WEB_INF_CLASSES, classList);
-
-    }
-
-
-    /**
-     * Scan <code>WEB-INF/classes</code> for classes that may be annotated
-     * with any of the Faces configuration annotations.
-     *
-     * @param sc the <code>ServletContext</code> for the application being
-     *  scanned
-     * @param path the path to start the scan from
-     * @param classList the <code>Set</code> to which annotated classes
-     *  will be added
-     */
-    private void processWebInfClasses(ServletContext sc,
-                                      String path,
-                                      Set<String> classList) {
-
-        //noinspection unchecked
-        Set<String> paths = sc.getResourcePaths(path);
-        processWebInfClasses(sc, paths, classList);
-
-    }
-
-
-    /**
-     * Scan <code>WEB-INF/classes</code> for classes that may be annotated
-     * with any of the Faces configuration annotations.
-     *
-     * @param sc the <code>ServletContext</code> for the application being
-     *  scanned
-     * @param paths a set of paths to process
-     * @param classList the <code>Set</code> to which annotated classes
-     *  will be added
-     */
-    private void processWebInfClasses(ServletContext sc,
-                                      Set<String> paths,
-                                      Set<String> classList) {
-
-        if (paths != null && !paths.isEmpty()) {
-            for (String pathElement : paths) {
-                if (pathElement.endsWith("/")) {
-                    processWebInfClasses(sc, pathElement, classList);
+            } else {
+                if (WILDCARD.equals(option) && !packages.contains(WILDCARD)) {
+                    packages.clear();
+                    packages.add(WILDCARD);
                 } else {
-                    if (pathElement.endsWith(".class")) {
-                        String cname = convertToClassName(WEB_INF_CLASSES,
-                                                              pathElement);
-                        if (!processClass(cname, webInfClassesPackages)) {
-                            continue;
-                        }
-                        if (containsAnnotation(sc, pathElement)) {
-                            if (LOGGER.isLoggable(Level.FINE)) {
-                                LOGGER.log(Level.FINE,
-                                           "[WEB-INF/classes] Found annotated Class: {0}",
-                                           cname);
-                            }
-                            classList.add(cname);
-                        }
+                    if (!packages.contains(WILDCARD)) {
+                        packages.add(option);
                     }
                 }
             }
         }
-
-    }
-
+        webInfClassesPackages = packages.toArray(new String[packages.size()]);
+   }
 
     private String[] normalizeJarPackages(String[] packages) {
 
@@ -507,106 +247,40 @@ public class AnnotationScanner extends AnnotationProvider {
 
     }
 
+    // </editor-fold>
 
-    /**
-     * @param sc the <code>ServletContext</code> for the application being
-     *  scanned
-     * @param pathElement the full path to the classfile to be scanned
-     * @return <code>true</code> if the class contains one of the Faces
-     *  configuration annotations
-     */
-    private boolean containsAnnotation(ServletContext sc, String pathElement) {
-
-        ReadableByteChannel channel = null;
-        try {
-            URL url = sc.getResource(pathElement);
-            channel = Channels.newChannel(url.openStream());
-            return classFileScanner.containsAnnotation(channel);
-        } catch (MalformedURLException e) {
-            if (LOGGER.isLoggable(Level.SEVERE)) {
-                LOGGER.log(Level.SEVERE,
-                           e.toString(),
-                           e);
-            }
-        } catch (IOException ioe) {
-            if (LOGGER.isLoggable(Level.SEVERE)) {
-                LOGGER.log(Level.SEVERE,
-                           ioe.toString(),
-                           ioe);
-            }
-        } finally {
-            if (channel != null) {
-                try {
-                    channel.close();
-                } catch (IOException ignored) {
-                    if (LOGGER.isLoggable(Level.FINE)) {
-                        LOGGER.log(Level.FINE,
-                                   ignored.toString(),
-                                   ignored);
-                    }
-                }
-            }
-        }
-        return false;
 
-    }
+    // --------------------------------------------------------- Protected Methods
 
+    protected boolean processJar(String entry) {
 
-    /**
-     * Utility method for converting paths to fully qualified class names.
-     *
-     * @param pathEntry a path entry to a class file
-     *
-     * @return a fully qualfied class name using dot notation
-     */
-    private String convertToClassName(String pathEntry) {
-
-        return convertToClassName(null, pathEntry);
-
-    }
-
-
-    /**
-     * Utility method for converting paths to fully qualified class names.
-     *
-     * @param prefix the prefix that should be stripped from the class name
-     *  before converting it
-     * @param pathEntry a path to a class file
-     *
-     * @return a fully qualfied class name using dot notation
-     */
-    private String convertToClassName(String prefix, String pathEntry) {
-
-        String className = pathEntry;
-
-        if (prefix != null) {
-            // remove the prefix
-            className = className.substring(prefix.length());
-        }
-        // remove the .class suffix
-        className = className.substring(0, (className.length() - 6));
-
-        return className.replace('/', '.');
-
-    }
-
-
-    private boolean processJar(String entry) {
+	// <editor-fold defaultstate="collapsed">
 
         return (classpathPackages == null
                   || (classpathPackages.containsKey(entry)
                          || classpathPackages.containsKey(WILDCARD)));
 
-    }
+	// </editor-fold>
 
+    }
 
     /**
      * @param candidate the class that should be processed
-     * @param packages the packages of classes that are allowed to be processed
      * @return <code>true</code> if the class should be processed further,
      *  otherwise, <code>false</code>
      */
-    private boolean processClass(String candidate, String[] packages) {
+    protected boolean processClass(String candidate) {
+
+	// <editor-fold defaultstate="collapsed">
+
+        return processClass(candidate, webInfClassesPackages);
+
+	// </editor-fold>
+    }
+
+    protected boolean processClass(String candidate, String [] packages) {
+
+	// <editor-fold defaultstate="collapsed">
 
         if (packages == null) {
             return true;
@@ -618,291 +292,83 @@ public class AnnotationScanner extends AnnotationProvider {
             }
         }
         return false;
-        
-    }
-
-
-    // ----------------------------------------------------------- Inner Classes
-
-
-    /**
-     * This class is encapsulating binary .class file information as defined at
-     * http://java.sun.com/docs/books/vmspec/2nd-edition/html/ClassFile.doc.html
-     * <p/>
-     * This is used by the annotation frameworks to quickly scan .class files
-     * for the presence of annotations. This avoid the annotation framework
-     * having to load each .class file in the class loader.
-     * <p/>
-     * Taken from the GlassFish V2 source base.
-     */
-    @SuppressWarnings({"UnusedDeclaration"})
-    private static final class ClassFile {
-
-        private static final int magic = 0xCAFEBABE;
-
-        public static final int ACC_PUBLIC = 0x1;
-        public static final int ACC_PRIVATE = 0x2;
-        public static final int ACC_PROTECTED = 0x4;
-        public static final int ACC_STATIC = 0x8;
-        public static final int ACC_FINAL = 0x10;
-        public static final int ACC_SYNCHRONIZED = 0x20;
-        public static final int ACC_THREADSAFE = 0x40;
-        public static final int ACC_TRANSIENT = 0x80;
-        public static final int ACC_NATIVE = 0x100;
-        public static final int ACC_INTERFACE = 0x200;
-        public static final int ACC_ABSTRACT = 0x400;
-
-        public short majorVersion;
-        public short minorVersion;
-        public ConstantPoolInfo constantPool[];
-        public short accessFlags;
-        public ConstantPoolInfo thisClass;
-        public ConstantPoolInfo superClass;
-        public ConstantPoolInfo interfaces[];
-
-        /**
-         * bunch of stuff I really don't care too much for now.
-         * <p/>
-         * FieldInfo           fields[]; MethodInfo          methods[];
-         * AttributeInfo       attributes[];
-         */
-
-        ByteBuffer header;
-        ConstantPoolInfo constantPoolInfo = new ConstantPoolInfo();
-
-        // ------------------------------------------------------------ Constructors
-
-
-        /**
-         * Creates a new instance of ClassFile
-         */
-        public ClassFile() {
-            header = ByteBuffer.allocate(12000);
-        }
-
-        // ---------------------------------------------------------- Public Methods
 
+	// </editor-fold>
+    }
 
-        public void setConstantPoolInfo(ConstantPoolInfo poolInfo) {
-            constantPoolInfo = poolInfo;
-        }
 
+    protected Map<Class<? extends Annotation>,Set<Class<?>>> processClassList(Set<String> classList) {
 
-        /**
-         * Read the input channel and initialize instance data structure.
-         *
-         * @param in a <code>ReadableByteChannel</code> that provides the bytes
-         *  of the classfile
-         *
-         * @return <code>true</code> if the bytes representing this classfile include
-         *  one of the annotations we're looking for.
-         *
-         * @throws IOException if an I/O error occurs while reading the class
-         */
-        public boolean containsAnnotation(ReadableByteChannel in)
-              throws IOException {
-
-            /**
-             * this is the .class file layout
-             *
-             ClassFile {
-             u4 magic;
-             u2 minor_version;
-             u2 major_version;
-             u2 constant_pool_count;
-             cp_info constant_pool[constant_pool_count-1];
-             u2 access_flags;
-             u2 this_class;
-             u2 super_class;
-             u2 interfaces_count;
-             u2 interfaces[interfaces_count];
-             u2 fields_count;
-             field_info fields[fields_count];
-             u2 methods_count;
-             method_info methods[methods_count];
-             u2 attributes_count;
-             attribute_info attributes[attributes_count];
-             }
-             **/
-            header.clear();
-            long read = (long) in.read(header);
-            if (read == -1) {
-                return false;
-            }
-            header.rewind();
+	// <editor-fold defaultstate="collapsed">
 
-            if (header.getInt() != magic) {
-                return false;
+        Map<Class<? extends Annotation>,Set<Class<?>>> annotatedClasses = null;
+        if (classList.size() > 0) {
+            annotatedClasses = new HashMap<Class<? extends Annotation>,Set<Class<?>>>(6, 1.0f);
+            for (String className : classList) {
+                try {
+                    Class<?> clazz = Util.loadClass(className, this);
+                    Annotation[] annotations = clazz.getAnnotations();
+                    for (Annotation annotation : annotations) {
+                        Class<? extends Annotation> annoType =
+                              annotation.annotationType();
+                        if (FACES_ANNOTATION_TYPE.contains(annoType)) {
+                            Set<Class<?>> classes = annotatedClasses.get(annoType);
+                            if (classes == null) {
+                                classes = new HashSet<Class<?>>();
+                                annotatedClasses.put(annoType, classes);
+                            }
+                            classes.add(clazz);
+                        }
+                    }
+                } catch (ClassNotFoundException cnfe) {
+                    // shouldn't happen..
+                    if (LOGGER.isLoggable(Level.SEVERE)) {
+                        LOGGER.log(Level.SEVERE,
+                                   "Unable to load annotated class: {0}",
+                                   className);
+                        LOGGER.log(Level.SEVERE, "", cnfe);
+                    }
+                } catch (NoClassDefFoundError ncdfe) {
+                    // this is more likely
+                    if (LOGGER.isLoggable(Level.SEVERE)) {
+                        LOGGER.log(Level.SEVERE,
+                                   "Unable to load annotated class: {0}, reason: {1}",
+                                   new Object[] { className, ncdfe.toString()});
+                    }
+                }
             }
-
-            minorVersion = header.getShort();
-            majorVersion = header.getShort();
-            int constantPoolSize = header.getShort();
-
-            return constantPoolInfo
-                  .containsAnnotation(constantPoolSize, header, in);
-
         }
 
-    } // END ClassFile
-
-
-    private static class ConstantPoolInfo {
-
-        private static final Logger LOGGER = FacesLogger.CONFIG.getLogger();
-
-        public static final byte CLASS = 7;
-        public static final int FIELDREF = 9;
-        public static final int METHODREF = 10;
-        public static final int STRING = 8;
-        public static final int INTEGER = 3;
-        public static final int FLOAT = 4;
-        public static final int LONG = 5;
-        public static final int DOUBLE = 6;
-        public static final int INTERFACEMETHODREF = 11;
-        public static final int NAMEANDTYPE = 12;
-        public static final int ASCIZ = 1;
-        public static final int UNICODE = 2;
-
-        byte[] bytes = new byte[Short.MAX_VALUE];
-
+        return ((annotatedClasses != null)
+                ? annotatedClasses
+                : Collections.<Class<? extends Annotation>, Set<Class<?>>>emptyMap());
 
-        // ------------------------------------------------------------ Constructors
+	// </editor-fold>
 
+    }
 
-        /**
-         * Creates a new instance of ConstantPoolInfo
-         */
-        public ConstantPoolInfo() {
-        }
+    protected void processScripts(Set<String> classList) {
 
+	// <editor-fold defaultstate="collapsed">
 
-        // ---------------------------------------------------------- Public Methods
-
-
-        /**
-         * Read the input channel and initialize instance data structure.
-         *
-         * @param constantPoolSize the constant pool size for this class file
-         * @param buffer the ByteBuffer used to store the bytes from <code>in</code>
-         * @param in ReadableByteChannel from which the class file bytes are
-         *  read
-         *
-         * @return <code>true</code> if the bytes representing this classfile include
-         *  one of the annotations we're looking for.
-         *
-         * @throws IOException if an I/O error occurs while reading the class
-         */
-        public boolean containsAnnotation(int constantPoolSize,
-                                          final ByteBuffer buffer,
-                                          final ReadableByteChannel in)
-        throws IOException {
-
-            for (int i = 1; i < constantPoolSize; i++) {
-                if (!refill(buffer, in, 1)) {
-                    return true;
-                }
-                final byte type = buffer.get();
-                switch (type) {
-                    case ASCIZ:
-                    case UNICODE:
-                        if (!refill(buffer, in, 2)) {
-                            return true;
-                        }
-                        final short length = buffer.getShort();
-                        if (length < 0 || length > Short.MAX_VALUE) {
-                            return true;
-                        }
-                        if (length > buffer.capacity()) {
-                            return true;
-                        }
-                        if (!refill(buffer, in, length)) {
-                            return true;
-                        }
-                        buffer.get(bytes, 0, length);
-                        /* to speed up the process, I am comparing the first few
-                         * bytes to Ljava since all annotations are in the java
-                         * package, the reduces dramatically the number or String
-                         * construction
-                         */
-                        if (bytes[0] == 'L' && bytes[1] == 'j' && bytes[2] == 'a') {
-                            String stringValue;
-                            if (type == ASCIZ) {
-                                stringValue =
-                                      new String(bytes, 0, length, "US-ASCII");
-                            } else {
-                                stringValue = new String(bytes, 0, length);
-                            }
-                            if (AnnotationScanner.isAnnotation(stringValue)) {
-                                return true;
-                            }
-                        }
-                        break;
-                    case CLASS:
-                    case STRING:
-                        if (!refill(buffer, in, 2)) {
-                            return true;
-                        }
-                        buffer.getShort();
-                        break;
-                    case FIELDREF:
-                    case METHODREF:
-                    case INTERFACEMETHODREF:
-                    case INTEGER:
-                    case FLOAT:
-                        if (!refill(buffer, in, 4)) {
-                            return true;
-                        }
-                        buffer.position(buffer.position() + 4);
-                        break;
-                    case LONG:
-                    case DOUBLE:
-                        if (!refill(buffer, in, 8)) {
-                            return true;
-                        }
-                        buffer.position(buffer.position() + 8);
-                        // for long, and double, they use 2 constantPool
-                        i++;
-                        break;
-                    case NAMEANDTYPE:
-                        if (!refill(buffer, in, 4)) {
-                            return true;
-                        }
-                        buffer.getShort();
-                        buffer.getShort();
-                        break;
-                    default:
-                        if (LOGGER.isLoggable(Level.SEVERE)) {
-                            LOGGER.log(Level.SEVERE,
-                                       "Unknow type constant pool {0} at position {1}",
-                                       new Object[]{type, i});
-                        }
-                        break;
-                }
-            }
-            return false;
+        for (ScriptManager sm : scriptManagers) {
+            classList.addAll(sm.getScripts());
         }
 
+	// </editor-fold>
 
-        // ----------------------------------------------------- Private Methods
+    }
 
-        private boolean refill(ByteBuffer buffer,
-                               ReadableByteChannel in,
-                               int requestLen) throws IOException {
-            
-            int cap = buffer.capacity();
-            if (buffer.position() + requestLen > cap) {
-                buffer.compact();
-                int read = in.read(buffer);
-                if (read < 0) {
-                    return false;
-                }
-                buffer.rewind();
-            }
-            return true;
+    protected boolean isAnnotationScanPackagesSet() {
+        return isAnnotationScanPackagesSet;
+    }
 
-        }
+    protected Map<String,String[]> getClasspathPackages() {
+        return classpathPackages;
+    }
 
-    } // END ConstantPoolInfo
+    protected String [] getWebInfClassesPackages() {
+        return webInfClassesPackages;
+    }
 
 }
diff --git a/jsf-ri/src/main/java/com/sun/faces/config/ConfigManager.java b/jsf-ri/src/main/java/com/sun/faces/config/ConfigManager.java
index 5a02037..883e46c 100644
--- a/jsf-ri/src/main/java/com/sun/faces/config/ConfigManager.java
+++ b/jsf-ri/src/main/java/com/sun/faces/config/ConfigManager.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -36,6 +40,7 @@
 
 package com.sun.faces.config;
 
+import com.sun.faces.RIConstants;
 import static com.sun.faces.config.WebConfiguration.BooleanWebContextInitParameter.ValidateFacesConfigFiles;
 import static com.sun.faces.config.WebConfiguration.BooleanWebContextInitParameter.DisableFaceletJSFViewHandler;
 import static com.sun.faces.config.WebConfiguration.BooleanWebContextInitParameter.EnableThreading;
@@ -43,12 +48,13 @@ import com.sun.faces.spi.ConfigurationResourceProvider;
 import com.sun.faces.spi.ConfigurationResourceProviderFactory;
 import com.sun.faces.spi.AnnotationProvider;
 import com.sun.faces.spi.AnnotationProviderFactory;
+import com.sun.faces.spi.HighAvailabilityEnabler;
 import static com.sun.faces.spi.ConfigurationResourceProviderFactory.ProviderType.*;
-import static com.sun.faces.spi.ConfigurationResourceProviderFactory.ProviderType.FaceletConfig;
 import com.sun.faces.config.configprovider.MetaInfFacesConfigResourceProvider;
 import com.sun.faces.config.configprovider.MojarraFacesConfigResourceProvider;
 import com.sun.faces.config.configprovider.WebFacesConfigResourceProvider;
 import com.sun.faces.config.configprovider.MetaInfFaceletTaglibraryConfigProvider;
+import com.sun.faces.config.configprovider.WebAppFlowConfigResourceProvider;
 import com.sun.faces.config.configprovider.WebFaceletTaglibResourceProvider;
 import com.sun.faces.config.processor.ApplicationConfigProcessor;
 import com.sun.faces.config.processor.BehaviorConfigProcessor;
@@ -62,8 +68,16 @@ import com.sun.faces.config.processor.NavigationConfigProcessor;
 import com.sun.faces.config.processor.RenderKitConfigProcessor;
 import com.sun.faces.config.processor.ValidatorConfigProcessor;
 import com.sun.faces.config.processor.FaceletTaglibConfigProcessor;
+import com.sun.faces.config.processor.FacesConfigExtensionProcessor;
+import com.sun.faces.config.processor.FacesFlowDefinitionConfigProcessor;
+import com.sun.faces.config.processor.ProtectedViewsConfigProcessor;
+import com.sun.faces.config.processor.ResourceLibraryContractsConfigProcessor;
+import com.sun.faces.el.ELContextImpl;
+import com.sun.faces.spi.InjectionProvider;
+import com.sun.faces.spi.InjectionProviderFactory;
 import com.sun.faces.util.FacesLogger;
 import com.sun.faces.util.Timer;
+import com.sun.faces.util.Util;
 import org.xml.sax.InputSource;
 
 import javax.faces.FacesException;
@@ -106,7 +120,16 @@ import java.util.concurrent.Future;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 import java.lang.annotation.Annotation;
-
+import java.net.URI;
+import java.util.Iterator;
+
+import java.util.ServiceLoader;
+import javax.el.ELContext;
+import javax.el.ELContextEvent;
+import javax.el.ELContextListener;
+import javax.faces.application.ApplicationConfigurationPopulator;
+import javax.faces.component.UIViewRoot;
+import javax.xml.validation.Schema;
 import org.w3c.dom.*;
 import org.xml.sax.SAXParseException;
 
@@ -167,7 +190,15 @@ public class ConfigManager {
 
 
     /**
-     * Name of the attribute added by {@link ParseTask} to indiciate a
+     * The initialization time FacesContext scoped key under which the
+     * InjectionProvider is stored.
+     */
+    public static final String INJECTION_PROVIDER_KEY =
+          ConfigManager.class.getName() + "_INJECTION_PROVIDER_TASK";
+
+
+    /**
+     * Name of the attribute added by ParseTask to indicate a
      * {@link Document} instance as a representation of
      * <code>/WEB-INF/faces-config.xml</code>.
      */
@@ -230,6 +261,7 @@ public class ConfigManager {
           new ArrayList<ConfigurationResourceProvider>(3);
         facesConfigProviders.add(new MojarraFacesConfigResourceProvider());
         facesConfigProviders.add(new MetaInfFacesConfigResourceProvider());
+        facesConfigProviders.add(new WebAppFlowConfigResourceProvider());
         facesConfigProviders.add(new WebFacesConfigResourceProvider());
         FACES_CONFIG_RESOURCE_PROVIDERS = Collections.unmodifiableList(facesConfigProviders);
 
@@ -252,6 +284,10 @@ public class ConfigManager {
              new RenderKitConfigProcessor(),
              new NavigationConfigProcessor(),
              new BehaviorConfigProcessor(),
+             new FacesConfigExtensionProcessor(),
+             new ProtectedViewsConfigProcessor(),
+             new FacesFlowDefinitionConfigProcessor(),
+             new ResourceLibraryContractsConfigProcessor()
         };
         for (int i = 0; i < configProcessors.length; i++) {
             ConfigProcessor p = configProcessors[i];
@@ -278,6 +314,15 @@ public class ConfigManager {
         return CONFIG_MANAGER;
 
     }
+    
+    private void initializeConfigProcessers(ServletContext sc) {
+        ConfigProcessor p = FACES_CONFIG_PROCESSOR_CHAIN;
+        do {
+            p.initializeClassMetadataMap(sc);
+            
+        } while (null != (p = p.getNext()));
+
+    }
 
 
     /**
@@ -292,6 +337,7 @@ public class ConfigManager {
 
         if (!hasBeenInitialized(sc)) {
             initializedContexts.add(sc);
+            initializeConfigProcessers(sc);
             ExecutorService executor = null;
             try {
                 WebConfiguration webConfig = WebConfiguration.getInstance(sc);
@@ -306,28 +352,85 @@ public class ConfigManager {
                                          executor,
                                          validating);
 
-                FacesConfigInfo webInfFacesConfigInfo =
+                FacesConfigInfo lastFacesConfigInfo =
                       new FacesConfigInfo(facesDocuments[facesDocuments.length - 1]);
 
-                facesDocuments = sortDocuments(facesDocuments, webInfFacesConfigInfo);
+                facesDocuments = sortDocuments(facesDocuments, lastFacesConfigInfo);
+                InitFacesContext context = (InitFacesContext) FacesContext.getCurrentInstance();
+
+                InjectionProvider containerConnector =
+                        InjectionProviderFactory.createInstance(context.getExternalContext());
+                context.getAttributes().put(INJECTION_PROVIDER_KEY, containerConnector);
 
-                boolean isFaceletsDisabled =
-                      isFaceletsDisabled(webConfig, webInfFacesConfigInfo);
-                if (!webInfFacesConfigInfo.isWebInfFacesConfig() || !webInfFacesConfigInfo.isMetadataComplete()) {
+                boolean isFaceletsDisabled = false;
+                
+                // Don't perform the check unless lastFacesConfigInfo is indeed
+                // *the* WEB-INF/faces-config.xml
+                if (lastFacesConfigInfo.isWebInfFacesConfig()) {
+                    isFaceletsDisabled = 
+                            isFaceletsDisabled(webConfig, lastFacesConfigInfo);
+                }
+                if (!lastFacesConfigInfo.isWebInfFacesConfig() || !lastFacesConfigInfo.isMetadataComplete()) {
                     // execute the Task responsible for finding annotation classes
-                    Set<URL> scanUrls = getAnnotationScanURLs(facesDocuments);
+                    ProvideMetadataToAnnotationScanTask taskMetadata = new ProvideMetadataToAnnotationScanTask(facesDocuments, containerConnector);
                     Future<Map<Class<? extends Annotation>,Set<Class<?>>>> annotationScan;
                     if (executor != null) {
-                        annotationScan = executor.submit(new AnnotationScanTask(sc, scanUrls));
+                        annotationScan = executor.submit(new AnnotationScanTask(sc, context, taskMetadata));
                         pushTaskToContext(sc, annotationScan);
                     } else {
                         annotationScan =
-                              new FutureTask<Map<Class<? extends Annotation>,Set<Class<?>>>>(new AnnotationScanTask(sc, scanUrls));
+                              new FutureTask<Map<Class<? extends Annotation>,Set<Class<?>>>>(new AnnotationScanTask(sc, context, taskMetadata));
                         ((FutureTask) annotationScan).run();
                     }
                     pushTaskToContext(sc, annotationScan);
                 }
 
+                //see if the app is running in a HA enabled env               
+                if (containerConnector instanceof HighAvailabilityEnabler) {                   
+                    ((HighAvailabilityEnabler)containerConnector).enableHighAvailability(sc);
+                }
+
+                ServiceLoader<ApplicationConfigurationPopulator> populators = 
+                        ServiceLoader.load(ApplicationConfigurationPopulator.class);
+                Document newDoc;
+                DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
+                dbf.setNamespaceAware(true);
+                DocumentBuilder builder = dbf.newDocumentBuilder();
+                DOMImplementation domImpl = builder.getDOMImplementation();
+                List<DocumentInfo> programmaticDocuments = new ArrayList<DocumentInfo>();
+                DocumentInfo newDocInfo;
+                for (ApplicationConfigurationPopulator pop : populators) {
+                    newDoc = domImpl.createDocument(RIConstants.JAVAEE_XMLNS, "faces-config", null);
+                    Attr versionAttribute = newDoc.createAttribute("version");
+                    versionAttribute.setValue("2.2");
+                    newDoc.getDocumentElement().getAttributes().setNamedItem(versionAttribute);
+                    
+                    try {
+                        pop.populateApplicationConfiguration(newDoc);
+                        newDocInfo = new DocumentInfo(newDoc, null);
+                        programmaticDocuments.add(newDocInfo);
+                    } catch (Throwable e) {
+                        if (LOGGER.isLoggable(Level.INFO)) {
+                            LOGGER.log(Level.INFO, "{0} thrown when invoking {1}.populateApplicationConfigurationResources: {2}", 
+                                    new String [] {
+                                        e.getClass().getName(),
+                                        pop.getClass().getName(),
+                                        e.getMessage()
+                                    }
+                            );
+                        }
+                    }
+                }
+                if (!programmaticDocuments.isEmpty()) {
+                    DocumentInfo [] newDocumentInfo = new DocumentInfo[facesDocuments.length + programmaticDocuments.size()];
+                    System.arraycopy(facesDocuments, 0, newDocumentInfo, 0, facesDocuments.length);
+                    int i = facesDocuments.length;
+                    for (DocumentInfo cur : programmaticDocuments) {
+                        newDocumentInfo[i] = cur;
+                    }
+                    facesDocuments = newDocumentInfo;
+                }
+                
                 // process the ordered documents
                 FACES_CONFIG_PROCESSOR_CHAIN.process(sc, facesDocuments);
                 if (!isFaceletsDisabled) {
@@ -338,18 +441,14 @@ public class ConfigManager {
                                              validating));
                 }
 
-                publishPostConfigEvent();
             } catch (Exception e) {
                 // clear out any configured factories
                 releaseFactories();
-                if (LOGGER.isLoggable(Level.INFO)) {
-                    LOGGER.log(Level.INFO,
-                               "Unsanitized stacktrace from failed start...",
-                               e);
+                Throwable t = e;
+                if (!(e instanceof ConfigurationException)) {
+                    t = new ConfigurationException("CONFIGURATION FAILED! " + t.getMessage(), t);
                 }
-                Throwable t = unwind(e);
-                throw new ConfigurationException("CONFIGURATION FAILED! " + t.getMessage(),
-                                                 t);
+                throw (ConfigurationException)t;
             } finally {
                 if (executor != null) {
                     executor.shutdown();
@@ -358,8 +457,9 @@ public class ConfigManager {
             }
         }
 
+        DbfFactory.removeSchemaMap(sc);
     }
-
+    
 
 
 
@@ -370,7 +470,7 @@ public class ConfigManager {
      * @param sc the <code>ServletContext</code> for the application that
      *  needs to be removed
      */
-    public void destory(ServletContext sc) {
+    public void destroy(ServletContext sc) {
 
         releaseFactories();
         initializedContexts.remove(sc);
@@ -414,29 +514,6 @@ public class ConfigManager {
     // --------------------------------------------------------- Private Methods
 
 
-    private static Set<URL> getAnnotationScanURLs(DocumentInfo[] documentInfos) {
-
-        Set<URL> urls = new HashSet<URL>(documentInfos.length);
-        Set<String> jarNames = new HashSet<String>(documentInfos.length);
-        for (DocumentInfo docInfo : documentInfos) {
-            Matcher m = JAR_PATTERN.matcher(docInfo.getSourceURL().toString());
-            if (m.matches()) {
-                String jarName = m.group(2);
-                if (!jarNames.contains(jarName)) {
-                    FacesConfigInfo configInfo = new FacesConfigInfo(docInfo);
-                    if (!configInfo.isMetadataComplete()) {
-                        urls.add(docInfo.getSourceURL());
-                        jarNames.add(jarName);
-                    }
-                }
-            }
-        }
-
-        return urls;
-
-    }
-
-
     private static boolean useThreads(ServletContext ctx) {
 
         WebConfiguration config = WebConfiguration.getInstance(ctx);
@@ -591,10 +668,27 @@ public class ConfigManager {
      * Publishes a {@link javax.faces.event.PostConstructApplicationEvent} event for the current
      * {@link Application} instance.
      */
-    private void publishPostConfigEvent() {
+    void publishPostConfigEvent() {
 
         FacesContext ctx = FacesContext.getCurrentInstance();
         Application app = ctx.getApplication();
+        if (null == ((InitFacesContext)ctx).getELContext()) {
+            ELContext elContext = new ELContextImpl(app.getELResolver());
+            elContext.putContext(FacesContext.class, ctx);
+            UIViewRoot root = ctx.getViewRoot();
+            if (null != root) {
+                elContext.setLocale(root.getLocale());
+            }
+            ELContextListener[] listeners = app.getELContextListeners();
+            if (listeners.length > 0) {
+                ELContextEvent event = new ELContextEvent(elContext);
+                for (ELContextListener listener: listeners) {
+                    listener.contextCreated(event);
+                }
+            }
+            ((InitFacesContext)ctx).setELContext(elContext);
+        }
+        
         app.publishEvent(ctx,
                          PostConstructApplicationEvent.class,
                          Application.class,
@@ -624,11 +718,11 @@ public class ConfigManager {
                                                  ExecutorService executor,
                                                  boolean validating) {
 
-        List<FutureTask<Collection<URL>>> urlTasks =
-             new ArrayList<FutureTask<Collection<URL>>>(providers.size());
+        List<FutureTask<Collection<URI>>> urlTasks =
+             new ArrayList<FutureTask<Collection<URI>>>(providers.size());
         for (ConfigurationResourceProvider p : providers) {
-            FutureTask<Collection<URL>> t =
-                 new FutureTask<Collection<URL>>(new URLTask(p, sc));
+            FutureTask<Collection<URI>> t =
+                 new FutureTask<Collection<URI>>(new URITask(p, sc));
             urlTasks.add(t);
             if (executor != null) {
                 executor.execute(t);
@@ -640,12 +734,12 @@ public class ConfigManager {
         List<FutureTask<DocumentInfo>> docTasks =
              new ArrayList<FutureTask<DocumentInfo>>(providers.size() << 1);
 
-        for (FutureTask<Collection<URL>> t : urlTasks) {
+        for (FutureTask<Collection<URI>> t : urlTasks) {
             try {
-                Collection<URL> l = t.get();
-                for (URL u : l) {
+                Collection<URI> l = t.get();
+                for (URI u : l) {
                     FutureTask<DocumentInfo> d =
-                         new FutureTask<DocumentInfo>(new ParseTask(validating, u));
+                         new FutureTask<DocumentInfo>(new ParseTask(sc, validating, u));
                     docTasks.add(d);
                     if (executor != null) {
                         executor.execute(d);
@@ -688,22 +782,22 @@ public class ConfigManager {
     }
 
 
-    /**
-     * @param throwable Throwable
-     * @return the root cause of this error
-     */
-    private Throwable unwind(Throwable throwable) {
-
-          Throwable t = null;
-          if (throwable != null) {
-              t =  unwind(throwable.getCause());
-              if (t == null) {
-                  t = throwable;
-              }
-          }
-          return t;
-
-    }
+//    /**
+//     * @param throwable Throwable
+//     * @return the root cause of this error
+//     */
+//    private Throwable unwind(Throwable throwable) {
+//
+//          Throwable t = null;
+//          if (throwable != null) {
+//              t =  unwind(throwable.getCause());
+//              if (t == null) {
+//                  t = throwable;
+//              }
+//          }
+//          return t;
+//
+//    }
 
 
     /**
@@ -725,6 +819,63 @@ public class ConfigManager {
 
     // ----------------------------------------------------------- Inner Classes
 
+    private static final class ProvideMetadataToAnnotationScanTask {
+        DocumentInfo [] documentInfos;
+        InjectionProvider containerConnector;
+        Set<URI> uris = null;
+        Set<String> jarNames = null;
+
+        private ProvideMetadataToAnnotationScanTask(DocumentInfo [] documentInfos,
+                InjectionProvider containerConnector) {
+            this.documentInfos = documentInfos;
+            this.containerConnector = containerConnector;
+        }
+
+        private void initializeIvars() {
+            if (null != uris || null != jarNames) {
+                assert(null != uris && null != jarNames);
+                return;
+            }
+            uris = new HashSet<URI>(documentInfos.length);
+            jarNames = new HashSet<String>(documentInfos.length);
+            for (DocumentInfo docInfo : documentInfos) {
+                URI sourceURI = docInfo.getSourceURI();
+                Matcher m = JAR_PATTERN.matcher(sourceURI.toString());
+                if (m.matches()) {
+                    String jarName = m.group(2);
+                    if (!jarNames.contains(jarName)) {
+                        FacesConfigInfo configInfo = new FacesConfigInfo(docInfo);
+                        if (!configInfo.isMetadataComplete()) {
+                            uris.add(sourceURI);
+                            jarNames.add(jarName);
+                        }
+                    }
+                }
+            }
+        }
+
+        private Set<URI> getAnnotationScanURIs() {
+            initializeIvars();
+
+            return uris;
+
+        }
+
+        private Set<String> getJarNames() {
+            initializeIvars();
+
+            return jarNames;
+        }
+
+        private com.sun.faces.spi.AnnotationScanner getAnnotationScanner() {
+            com.sun.faces.spi.AnnotationScanner result = null;
+            if (this.containerConnector instanceof com.sun.faces.spi.AnnotationScanner) {
+                result = (com.sun.faces.spi.AnnotationScanner) this.containerConnector;
+            }
+            return result;
+        }
+    }
+
 
     /**
      * Scans the class files within a web application returning a <code>Set</code>
@@ -733,17 +884,17 @@ public class ConfigManager {
     private static class AnnotationScanTask implements Callable<Map<Class<? extends Annotation>,Set<Class<?>>>> {
 
         private ServletContext sc;
-        private Set<URL> urls;
-        AnnotationProvider provider;
+        private InitFacesContext facesContext;
+        private AnnotationProvider provider;
+        private ProvideMetadataToAnnotationScanTask metadataGetter;
 
         // -------------------------------------------------------- Constructors
 
 
-        public AnnotationScanTask(ServletContext sc, Set<URL> urls) {
-
-            this.sc = sc;
-            this.urls = urls;
-            provider = AnnotationProviderFactory.createAnnotationProvider(sc);
+        public AnnotationScanTask(ServletContext sc, InitFacesContext facesContext, ProvideMetadataToAnnotationScanTask metadataGetter) {
+            this.facesContext = facesContext;
+            this.provider = AnnotationProviderFactory.createAnnotationProvider(sc);
+            this.metadataGetter = metadataGetter;
 
         }
 
@@ -758,9 +909,28 @@ public class ConfigManager {
                 t.startTiming();
             }
 
+            // We are executing on a different thread.
+            facesContext.callSetCurrentInstance();
+            Set<URI> scanUris = null;
+            com.sun.faces.spi.AnnotationScanner annotationScanner =
+                    metadataGetter.getAnnotationScanner();
+
+            // This is where we discover what kind of InjectionProvider
+            // we have.
+            if (provider instanceof DelegatingAnnotationProvider &&
+                null != annotationScanner) {
+                // This InjectionProvider is capable of annotation scanning *and*
+                // injection.
+                ((DelegatingAnnotationProvider)provider).setAnnotationScanner(annotationScanner,
+                        metadataGetter.getJarNames());
+                scanUris = Collections.emptySet();
+            } else {
+                // This InjectionProvider is capable of annotation scanning only
+                scanUris = metadataGetter.getAnnotationScanURIs();
+            }
             //AnnotationScanner scanner = new AnnotationScanner(sc);
             Map<Class<? extends Annotation>,Set<Class<?>>> annotatedClasses =
-                  provider.getAnnotatedClasses(urls);
+                  provider.getAnnotatedClasses(scanUris);
 
             if (t != null) {
                 t.stopTiming();
@@ -782,14 +952,17 @@ public class ConfigManager {
      * </p>
      */
     private static class ParseTask implements Callable<DocumentInfo> {
-        private static final String JAVAEE_SCHEMA_DEFAULT_NS =
+        private static final String JAVAEE_SCHEMA_LEGACY_DEFAULT_NS =
             "http://java.sun.com/xml/ns/javaee";
+        private static final String JAVAEE_SCHEMA_DEFAULT_NS =
+            "http://xmlns.jcp.org/xml/ns/javaee";
         private static final String EMPTY_FACES_CONFIG =
                 "com/sun/faces/empty-faces-config.xml";
-        private URL documentURL;
+        private ServletContext servletContext;
+        private URI documentURI;
         private DocumentBuilderFactory factory;
         private boolean validating;
-
+        
         // -------------------------------------------------------- Constructors
 
 
@@ -798,15 +971,15 @@ public class ConfigManager {
          *   Constructs a new ParseTask instance
          * </p>
          *
+         * @param servletContext the servlet context.
          * @param validating whether or not we're validating
-         * @param documentURL a URL to the configuration resource to be parsed
+         * @param documentURI a URL to the configuration resource to be parsed
          * @throws Exception general error
          */
-        public ParseTask(boolean validating, URL documentURL)
+        public ParseTask(ServletContext servletContext, boolean validating, URI documentURI)
         throws Exception {
-
-            this.documentURL = documentURL;
-            this.factory = DbfFactory.getFactory();
+            this.servletContext = servletContext;
+            this.documentURI = documentURI;
             this.validating = validating;
 
         }
@@ -831,14 +1004,14 @@ public class ConfigManager {
 
                 if (timer != null) {
                     timer.stopTiming();
-                    timer.logResult("Parse " + documentURL.toExternalForm());
+                    timer.logResult("Parse " + documentURI.toURL().toExternalForm());
                 }
 
-                return new DocumentInfo(d, documentURL);
+                return new DocumentInfo(d, documentURI);
             } catch (Exception e) {
                 throw new ConfigurationException(MessageFormat.format(
                      "Unable to parse document ''{0}'': {1}",
-                     documentURL.toExternalForm(),
+                     documentURI.toURL().toExternalForm(),
                      e.getMessage()), e);
             }
         }
@@ -848,7 +1021,7 @@ public class ConfigManager {
 
 
         /**
-         * @return <code>Document</code> based on <code>documentURL</code>.
+         * @return <code>Document</code> based on <code>documentURI</code>.
          * @throws Exception if an error occurs during the process of building a
          *  <code>Document</code>
          */
@@ -856,8 +1029,9 @@ public class ConfigManager {
 
             Document returnDoc;
             DocumentBuilder db = getNonValidatingBuilder();
+            URL documentURL = documentURI.toURL();
             InputSource is = new InputSource(getInputStream(documentURL));
-                is.setSystemId(documentURL.toExternalForm());
+                is.setSystemId(documentURI.toURL().toExternalForm());
             Document doc = null;
 
             try {
@@ -879,7 +1053,17 @@ public class ConfigManager {
                 } 
 
             }
-            String documentNS = doc.getDocumentElement().getNamespaceURI();
+
+            String documentNS = null;
+            if (null == doc) {
+                if (FacesFlowDefinitionConfigProcessor.uriIsFlowDefinition(documentURI)) {
+                    documentNS = RIConstants.JAVAEE_XMLNS;
+                    doc = FacesFlowDefinitionConfigProcessor.synthesizeEmptyFlowDefinition(documentURI);
+                }
+            } else {
+                documentNS = doc.getDocumentElement().getNamespaceURI();
+            }
+            
             if (validating && documentNS != null) {
                 DOMSource domSource
                      = new DOMSource(doc, documentURL.toExternalForm());
@@ -894,17 +1078,49 @@ public class ConfigManager {
                 if (JAVAEE_SCHEMA_DEFAULT_NS.equals(documentNS)) {
                     Attr version = (Attr)
                             documentElement.getAttributes().getNamedItem("version");
-                    DbfFactory.FacesSchema schema;
+                    Schema schema;
+                    if (version != null) {
+                        String versionStr = version.getValue();
+                        if ("2.2".equals(versionStr)) {
+                            if ("facelet-taglib".equals(documentElement.getLocalName())) {
+                                schema = DbfFactory.getSchema(servletContext, DbfFactory.FacesSchema.FACELET_TAGLIB_22);
+                            } else {
+                                schema = DbfFactory.getSchema(servletContext, DbfFactory.FacesSchema.FACES_22);
+                            }
+                        } else {
+                            throw new ConfigurationException("Unknown Schema version: " + versionStr);
+                        }
+                        DocumentBuilder builder = getBuilderForSchema(schema);
+                        if (builder.isValidating()) {
+                            builder.getSchema().newValidator().validate(domSource);
+                            returnDoc = ((Document) domSource.getNode());
+                        } else {
+                            returnDoc = ((Document) domSource.getNode());
+                        }
+                    } else {
+                        // this shouldn't happen, but...
+                        throw new ConfigurationException("No document version available.");
+                    }
+                } else if (JAVAEE_SCHEMA_LEGACY_DEFAULT_NS.equals(documentNS)) {
+                    Attr version = (Attr)
+                            documentElement.getAttributes().getNamedItem("version");
+                    Schema schema;
                     if (version != null) {
                         String versionStr = version.getValue();
                         if ("2.0".equals(versionStr)) {
                             if ("facelet-taglib".equals(documentElement.getLocalName())) {
-                                schema = DbfFactory.FacesSchema.FACELET_TAGLIB_20;
+                                schema = DbfFactory.getSchema(servletContext, DbfFactory.FacesSchema.FACELET_TAGLIB_20);
                             } else {
-                                schema = DbfFactory.FacesSchema.FACES_20;
+                                schema = DbfFactory.getSchema(servletContext, DbfFactory.FacesSchema.FACES_20);
+                            }
+                        } else if ("2.1".equals(versionStr)) {
+                            if ("facelet-taglib".equals(documentElement.getLocalName())) {
+                                schema = DbfFactory.getSchema(servletContext, DbfFactory.FacesSchema.FACELET_TAGLIB_20);
+                            } else {
+                                schema = DbfFactory.getSchema(servletContext, DbfFactory.FacesSchema.FACES_21);
                             }
                         } else if ("1.2".equals(versionStr)) {
-                            schema = DbfFactory.FacesSchema.FACES_12;
+                            schema = DbfFactory.getSchema(servletContext, DbfFactory.FacesSchema.FACES_12);
                         } else {
                             throw new ConfigurationException("Unknown Schema version: " + versionStr);
                         }
@@ -929,11 +1145,11 @@ public class ConfigManager {
                     ((Document) domResult.getNode())
                           .setDocumentURI(((Document) domSource
                                 .getNode()).getDocumentURI());
-                    DbfFactory.FacesSchema schemaToApply;
+                    Schema schemaToApply;
                     if (FACES_CONFIG_1_X_DEFAULT_NS.equals(documentNS)) {
-                        schemaToApply = DbfFactory.FacesSchema.FACES_11;
+                        schemaToApply = DbfFactory.getSchema(servletContext, DbfFactory.FacesSchema.FACES_11);
                     } else if (FACELETS_1_0_DEFAULT_NS.equals(documentNS)) {
-                        schemaToApply = DbfFactory.FacesSchema.FACELET_TAGLIB_20;
+                        schemaToApply = DbfFactory.getSchema(servletContext, DbfFactory.FacesSchema.FACELET_TAGLIB_20);
                     } else {
                         throw new IllegalStateException();
                     }
@@ -967,7 +1183,7 @@ public class ConfigManager {
             byte[] b = new byte[size];
             String s;
             while (!isZeroLengthOrEmpty && -1 != is.read(b, 0, size)) {
-                s = (new String(b)).trim();
+                s = (new String(b, RIConstants.CHAR_ENCODING)).trim();
                 isZeroLengthOrEmpty = 0 == s.length();
                 b[0] = 0;
                 for (int i = 1; i < size; i += i) {
@@ -989,7 +1205,8 @@ public class ConfigManager {
         private static Transformer getTransformer(String documentNS)
         throws Exception {
 
-            TransformerFactory factory = TransformerFactory.newInstance();
+            TransformerFactory factory = Util.createTransformerFactory();
+
             String xslToApply;
             if (FACES_CONFIG_1_X_DEFAULT_NS.equals(documentNS)) {
                 xslToApply = FACES_TO_1_1_PRIVATE_XSL;
@@ -1032,10 +1249,12 @@ public class ConfigManager {
 
         }
 
-        private DocumentBuilder getBuilderForSchema(DbfFactory.FacesSchema schema)
+        private DocumentBuilder getBuilderForSchema(Schema schema)
         throws Exception {
+            this.factory = DbfFactory.getFactory();
+
             try {
-                factory.setSchema(schema.getSchema());
+                factory.setSchema(schema);
             } catch (UnsupportedOperationException upe) {
                 return getNonValidatingBuilder();
             }
@@ -1055,7 +1274,7 @@ public class ConfigManager {
      *  processing.
      * </p>
      */
-    private static class URLTask implements Callable<Collection<URL>> {
+    private static class URITask implements Callable<Collection<URI>> {
 
         private ConfigurationResourceProvider provider;
         private ServletContext sc;
@@ -1065,12 +1284,12 @@ public class ConfigManager {
 
 
         /**
-         * Constructs a new <code>URLTask</code> instance.
+         * Constructs a new <code>URITask</code> instance.
          * @param provider the <code>ConfigurationResourceProvider</code> from
          *  which zero or more <code>URL</code>s will be returned
          * @param sc the <code>ServletContext</code> of the current application
          */
-        public URLTask(ConfigurationResourceProvider provider,
+        public URITask(ConfigurationResourceProvider provider,
                        ServletContext sc) {
             this.provider = provider;
             this.sc = sc;
@@ -1085,11 +1304,29 @@ public class ConfigManager {
          * @throws Exception if an Exception is thrown by the underlying
          *  <code>ConfigurationResourceProvider</code> 
          */
-        public Collection<URL> call() throws Exception {
-            return provider.getResources(sc);
+        public Collection<URI> call() throws Exception {
+            Collection untypedCollection = provider.getResources(sc);
+            Iterator untypedCollectionIterator = untypedCollection.iterator();
+            Collection<URI> result = Collections.emptyList();
+            if (untypedCollectionIterator.hasNext()) {
+                Object cur = untypedCollectionIterator.next();
+                // account for older versions of the provider that return Collection<URL>.
+                if (cur instanceof URL) {
+                    result = new ArrayList<URI>(untypedCollection.size());
+                    result.add(new URI(((URL)cur).toExternalForm()));
+                    while (untypedCollectionIterator.hasNext()) {
+                        cur = untypedCollectionIterator.next();
+                        result.add(new URI(((URL)cur).toExternalForm()));
+                    }
+                } else {
+                    result = (Collection<URI>) untypedCollection;
+                }
+            }
+
+            return result;
         }
 
-    } // END URLTask
+    } // END URITask
 
 
 }
diff --git a/jsf-ri/src/main/java/com/sun/faces/config/ConfigurationException.java b/jsf-ri/src/main/java/com/sun/faces/config/ConfigurationException.java
index 27d8e11..83e4a61 100644
--- a/jsf-ri/src/main/java/com/sun/faces/config/ConfigurationException.java
+++ b/jsf-ri/src/main/java/com/sun/faces/config/ConfigurationException.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/config/ConfigureListener.java b/jsf-ri/src/main/java/com/sun/faces/config/ConfigureListener.java
index db565ef..570512a 100644
--- a/jsf-ri/src/main/java/com/sun/faces/config/ConfigureListener.java
+++ b/jsf-ri/src/main/java/com/sun/faces/config/ConfigureListener.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -33,22 +37,19 @@
  * only if the new code is made subject to such option by the copyright
  * holder.
  */
-
 package com.sun.faces.config;
 
 import com.sun.faces.RIConstants;
 import com.sun.faces.application.ApplicationAssociate;
 import com.sun.faces.application.WebappLifecycleListener;
-
 import static com.sun.faces.config.WebConfiguration.BooleanWebContextInitParameter.EnableGroovyScripting;
-import static com.sun.faces.config.WebConfiguration.BooleanWebContextInitParameter.EnableHtmlTagLibraryValidator;
 import static com.sun.faces.config.WebConfiguration.BooleanWebContextInitParameter.EnableLazyBeanValidation;
 import static com.sun.faces.config.WebConfiguration.BooleanWebContextInitParameter.EnableThreading;
 import static com.sun.faces.config.WebConfiguration.BooleanWebContextInitParameter.ForceLoadFacesConfigFiles;
 import static com.sun.faces.config.WebConfiguration.BooleanWebContextInitParameter.VerifyFacesConfigObjects;
 import static com.sun.faces.config.WebConfiguration.WebContextInitParameter.JavaxFacesProjectStage;
-
 import com.sun.faces.config.WebConfiguration.WebContextInitParameter;
+import com.sun.faces.el.ChainTypeCompositeELResolver;
 import com.sun.faces.el.ELContextImpl;
 import com.sun.faces.el.ELContextListenerImpl;
 import com.sun.faces.el.ELUtils;
@@ -67,19 +68,14 @@ import org.xml.sax.Attributes;
 import org.xml.sax.InputSource;
 import org.xml.sax.SAXException;
 import org.xml.sax.helpers.DefaultHandler;
-
-import javax.el.CompositeELResolver;
 import javax.el.ELContext;
 import javax.el.ExpressionFactory;
 import javax.faces.FactoryFinder;
 import javax.faces.application.Application;
 import javax.faces.application.ApplicationFactory;
 import javax.faces.application.ProjectStage;
-import javax.faces.component.UIViewRoot;
 import javax.faces.context.FacesContext;
-import javax.faces.event.PostConstructViewMapEvent;
 import javax.faces.event.PreDestroyApplicationEvent;
-import javax.faces.event.PreDestroyViewMapEvent;
 import javax.servlet.ServletContext;
 import javax.servlet.ServletContextAttributeEvent;
 import javax.servlet.ServletContextAttributeListener;
@@ -101,6 +97,7 @@ import javax.xml.parsers.SAXParserFactory;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.StringReader;
+import java.net.URI;
 import java.net.URL;
 import java.net.URLConnection;
 import java.text.MessageFormat;
@@ -110,6 +107,7 @@ import java.util.Enumeration;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 import java.util.concurrent.ScheduledThreadPoolExecutor;
 import java.util.concurrent.TimeUnit;
 import java.util.logging.Level;
@@ -147,6 +145,12 @@ public class ConfigureListener implements ServletRequestListener,
             timer.startTiming();
         }
 
+        ConfigManager configManager = ConfigManager.getInstance();
+        if (configManager.hasBeenInitialized(context)) {
+            return;
+        }
+
+        InitFacesContext initContext = new InitFacesContext(context);
 
         if (LOGGER.isLoggable(Level.FINE)) {
             LOGGER.log(Level.FINE,
@@ -156,11 +160,6 @@ public class ConfigureListener implements ServletRequestListener,
         }
 
         webConfig = WebConfiguration.getInstance(context);
-        ConfigManager configManager = ConfigManager.getInstance();
-
-        if (configManager.hasBeenInitialized(context)) {
-            return;
-        }
 
         // Check to see if the FacesServlet is present in the
         // web.xml.   If it is, perform faces configuration as normal,
@@ -179,6 +178,7 @@ public class ConfigureListener implements ServletRequestListener,
                                 "No FacesServlet found in deployment descriptor - bypassing configuration");
                     }
                     WebConfiguration.clear(context);
+                    InitFacesContext.cleanupInitMaps(context);
                     return;
                 }
             } else {
@@ -188,13 +188,18 @@ public class ConfigureListener implements ServletRequestListener,
                 }
             }
         }
+        
+        if (webXmlProcessor.isDistributablePresent()) {
+            webConfig.setOptionEnabled(WebConfiguration.BooleanWebContextInitParameter.EnableDistributable, true);
+            context.setAttribute(WebConfiguration.BooleanWebContextInitParameter.EnableDistributable.getQualifiedName(), Boolean.TRUE);
+        }
 
 
         // bootstrap of faces required
         webAppListener = new WebappLifecycleListener(context);
         webAppListener.contextInitialized(sce);
-        InitFacesContext initContext = new InitFacesContext(context);
         ReflectionUtils.initCache(Thread.currentThread().getContextClassLoader());
+        Throwable caughtThrowable = null;
 
         try {
 
@@ -204,10 +209,6 @@ public class ConfigureListener implements ServletRequestListener,
                         getServletContextIdentifier(context));
             }
 
-            // see if we need to disable our TLValidator
-            Util.setHtmlTLVActive(
-                    webConfig.isOptionEnabled(EnableHtmlTagLibraryValidator));
-
             if (webConfig.isOptionEnabled(VerifyFacesConfigObjects)) {
                 if (LOGGER.isLoggable(Level.WARNING)) {
                     LOGGER.warning("jsf.config.verifyobjects.development_only");
@@ -225,15 +226,13 @@ public class ConfigureListener implements ServletRequestListener,
             // Step 7, verify that all the configured factories are available
             // and optionall that configured objects can be created. 
             Verifier v = Verifier.getCurrentInstance();
-            if (v != null && !v.isApplicationValid()) {
-                if (LOGGER.isLoggable(Level.SEVERE)) {
-                    LOGGER.severe("jsf.config.verifyobjects.failures_detected");
-                    StringBuilder sb = new StringBuilder(128);
-                    for (String m : v.getMessages()) {
-                        sb.append(m).append('\n');
-                    }
-                    LOGGER.severe(sb.toString());
+            if (v != null && !v.isApplicationValid() && LOGGER.isLoggable(Level.SEVERE)) {
+                LOGGER.severe("jsf.config.verifyobjects.failures_detected");
+                StringBuilder sb = new StringBuilder(128);
+                for (String m : v.getMessages()) {
+                    sb.append(m).append('\n');
                 }
+                LOGGER.severe(sb.toString());
             }
             registerELResolverAndListenerWithJsp(context, false);
             ELContext elctx = new ELContextImpl(initContext.getApplication().getELResolver());
@@ -256,19 +255,18 @@ public class ConfigureListener implements ServletRequestListener,
                         isErrorPagePresent);
 
             }
-            Application app = initContext.getApplication();
-            app.subscribeToEvent(PostConstructViewMapEvent.class,
-                    UIViewRoot.class,
-                    webAppListener);
-            app.subscribeToEvent(PreDestroyViewMapEvent.class,
-                    UIViewRoot.class,
-                    webAppListener);
 
-            webConfig.doLoggingActions();
+            webConfig.doPostBringupActions();
+            configManager.publishPostConfigEvent();
+
+        } catch (Throwable t) {
+            if (LOGGER.isLoggable(Level.SEVERE)) {
+                LOGGER.log(Level.SEVERE, "Critical error during deployment: ", t);
+            }
+            caughtThrowable = t;
 
         } finally {
             Verifier.setCurrentInstance(null);
-            initContext.release();
             if (LOGGER.isLoggable(Level.FINE)) {
                 LOGGER.log(Level.FINE,
                         "jsf.config.listener.version.complete");
@@ -278,15 +276,28 @@ public class ConfigureListener implements ServletRequestListener,
                 timer.logResult("Initialization of context " +
                         getServletContextIdentifier(context));
             }
+            if (null != caughtThrowable) {
+                throw new RuntimeException(caughtThrowable);
+            }
         }
     }
 
 
     public void contextDestroyed(ServletContextEvent sce) {
         ServletContext context = sce.getServletContext();
+
+        if (!ConfigManager.getInstance().hasBeenInitialized(context)) {
+            return;
+        }
+
         InitFacesContext initContext = null;
         try {
-            initContext = new InitFacesContext(context);
+            initContext = getInitFacesContext(context);
+            if (null == initContext) {
+                initContext = new InitFacesContext(context);
+            } else {
+                InitFacesContext.getThreadInitContextMap().put(Thread.currentThread(), initContext);
+            }
 
             if (webAppListener != null) {
                 webAppListener.contextDestroyed(sce);
@@ -295,9 +306,6 @@ public class ConfigureListener implements ServletRequestListener,
             if (webResourcePool != null) {
                 webResourcePool.shutdownNow();
             }
-            if (!ConfigManager.getInstance().hasBeenInitialized(context)) {
-                return;
-            }
             GroovyHelper helper = GroovyHelper.getCurrentInstance(context);
             if (helper != null) {
                 helper.setClassLoader();
@@ -307,8 +315,7 @@ public class ConfigureListener implements ServletRequestListener,
                            "ConfigureListener.contextDestroyed({0})",
                            context.getServletContextName());
             }
-
-
+            
             ELContext elctx = new ELContextImpl(initContext.getApplication().getELResolver());
             elctx.putContext(FacesContext.class, initContext);
             initContext.setELContext(elctx);
@@ -317,6 +324,7 @@ public class ConfigureListener implements ServletRequestListener,
                     PreDestroyApplicationEvent.class,
                     Application.class,
                     app);
+
         } catch (Exception e) {
             if (LOGGER.isLoggable(Level.SEVERE)) {
                 LOGGER.log(Level.SEVERE,
@@ -327,12 +335,11 @@ public class ConfigureListener implements ServletRequestListener,
             ApplicationAssociate.clearInstance(context);
             ApplicationAssociate.setCurrentInstance(null);
             // Release the initialization mark on this web application
-            ConfigManager.getInstance().destory(context);
-            if (initContext != null) {
-                initContext.release();
-            }
+            ConfigManager.getInstance().destroy(context);
+            FactoryFinder.releaseFactories();
             ReflectionUtils.clearCache(Thread.currentThread().getContextClassLoader());
             WebConfiguration.clear(context);
+            InitFacesContext.cleanupInitMaps(context);
         }
 
     }
@@ -453,11 +460,11 @@ public class ConfigureListener implements ServletRequestListener,
     private void initConfigMonitoring(ServletContext context) {
 
         //noinspection unchecked
-        Collection<URL> webURLs =
-                (Collection<URL>) context.getAttribute("com.sun.faces.webresources");
-        if (isDevModeEnabled() && webURLs != null && !webURLs.isEmpty()) {
+        Collection<URI> webURIs =
+                (Collection<URI>) context.getAttribute("com.sun.faces.webresources");
+        if (isDevModeEnabled() && webURIs != null && !webURIs.isEmpty()) {
             webResourcePool = new ScheduledThreadPoolExecutor(1, new MojarraThreadFactory("WebResourceMonitor"));
-            webResourcePool.scheduleAtFixedRate(new WebConfigResourceMonitor(context, webURLs),
+            webResourcePool.scheduleAtFixedRate(new WebConfigResourceMonitor(context, webURIs),
                     2000,
                     2000,
                     TimeUnit.MILLISECONDS);
@@ -502,15 +509,18 @@ public class ConfigureListener implements ServletRequestListener,
         }
         // tear down the application
         try {
-            List<HttpSession> sessions = webAppListener.getActiveSessions();
-            if (sessions != null) {
-                for (HttpSession session : sessions) {
-                    if (LOGGER.isLoggable(Level.INFO)) {
-                        LOGGER.log(Level.INFO,
-                                "Invalidating Session {0}",
-                                session.getId());
+            // this will only be true in the automated test usage scenario
+            if (null != webAppListener) {
+                List<HttpSession> sessions = webAppListener.getActiveSessions();
+                if (sessions != null) {
+                    for (HttpSession session : sessions) {
+                        if (LOGGER.isLoggable(Level.INFO)) {
+                            LOGGER.log(Level.INFO,
+                                    "Invalidating Session {0}",
+                                    session.getId());
+                        }
+                        session.invalidate();
                     }
-                    session.invalidate();
                 }
             }
             ApplicationAssociate associate = ApplicationAssociate.getInstance(sc);
@@ -540,7 +550,7 @@ public class ConfigureListener implements ServletRequestListener,
                     .clearInstance(initContext.getExternalContext());
             ApplicationAssociate.setCurrentInstance(null);
             // Release the initialization mark on this web application
-            ConfigManager.getInstance().destory(sc);
+            ConfigManager.getInstance().destroy(sc);
             initContext.release();
             ReflectionUtils.clearCache(Thread.currentThread().getContextClassLoader());
             WebConfiguration.clear(sc);
@@ -605,7 +615,9 @@ public class ConfigureListener implements ServletRequestListener,
         try {
             Class.forName("org.apache.jasper.compiler.JspRuntimeContext");
         } catch (ClassNotFoundException ignored) {
-            // ignored
+            if (LOGGER.isLoggable(Level.FINEST)) {
+                LOGGER.log(Level.FINEST, "Dected JSP 2.1", ignored);
+            }
         }
 
         if (JspFactory.getDefaultFactory() == null) {
@@ -653,8 +665,8 @@ public class ConfigureListener implements ServletRequestListener,
 
             // register an empty resolver for now. It will be populated after the 
             // first request is serviced.
-            CompositeELResolver compositeELResolverForJsp =
-                    new FacesCompositeELResolver(FacesCompositeELResolver.ELResolverChainType.JSP);
+            FacesCompositeELResolver compositeELResolverForJsp =
+                    new ChainTypeCompositeELResolver(FacesCompositeELResolver.ELResolverChainType.JSP);
             ApplicationAssociate associate =
                     ApplicationAssociate.getInstance(context);
             if (associate != null) {
@@ -714,6 +726,22 @@ public class ConfigureListener implements ServletRequestListener,
 
     }
 
+    private InitFacesContext getInitFacesContext(ServletContext context) {
+        Map initContextServletContext = InitFacesContext.getInitContextServletContextMap();
+        Set entries = initContextServletContext.entrySet();
+        InitFacesContext initContext = null;
+        for (Iterator iterator1 = entries.iterator(); iterator1.hasNext();) {
+            Map.Entry entry1 = (Map.Entry)iterator1.next();
+            Object initContextKey = entry1.getKey();
+            Object value1 = entry1.getValue();
+            if (context == value1) {
+                initContext =  (InitFacesContext)initContextKey;
+                break;
+            }
+        }
+        return initContext;
+    }
+
     // ----------------------------------------------------------- Inner classes
 
 
@@ -728,6 +756,7 @@ public class ConfigureListener implements ServletRequestListener,
 
         private boolean facesServletPresent;
         private boolean errorPagePresent;
+        private boolean distributablePresent;
 
 
         /**
@@ -770,6 +799,16 @@ public class ConfigureListener implements ServletRequestListener,
 
         }
 
+        /*
+         * return true if <distributable /> is present in the web.xml or a fragment.
+         * 
+         */
+        public boolean isDistributablePresent() {
+            return distributablePresent;
+        }
+        
+        
+
 
         /**
          * <p>Parse the web.xml for the current application and scan
@@ -799,7 +838,9 @@ public class ConfigureListener implements ServletRequestListener,
                         try {
                             in.close();
                         } catch (Exception ioe) {
-                            // ignored;
+                            if (LOGGER.isLoggable(Level.FINEST)) {
+                                LOGGER.log(Level.FINEST, "Closing stream", ioe);
+                            }
                         }
                     }
                 }
@@ -831,7 +872,10 @@ public class ConfigureListener implements ServletRequestListener,
                                 try {
                                     fragmentStream.close();
                                 } catch (IOException ioe) {
-                                    // ignore
+                                    if (LOGGER.isLoggable(Level.WARNING)) {
+                                        LOGGER.log(Level.WARNING,
+                                                "Exception whil scanning for FacesServlet", ioe);                                
+                                    }
                                 }
                             }
                         }
@@ -849,7 +893,7 @@ public class ConfigureListener implements ServletRequestListener,
          */
         private SAXParserFactory getConfiguredFactory() {
 
-            SAXParserFactory factory = SAXParserFactory.newInstance();
+            SAXParserFactory factory = Util.createSAXParserFactory();
             factory.setValidating(false);
             factory.setNamespaceAware(true);
             return factory;
@@ -897,11 +941,9 @@ public class ConfigureListener implements ServletRequestListener,
                                      String qName, Attributes attributes)
                     throws SAXException {
 
-                if (!errorPagePresent) {
-                    if (ERROR_PAGE.equals(localName)) {
-                        errorPagePresent = true;
-                        return;
-                    }
+                if (!errorPagePresent && ERROR_PAGE.equals(localName)) {
+                    errorPagePresent = true;
+                    return;
                 }
                 if (!facesServletPresent) {
                     if (SERVLET_CLASS.equals(localName)) {
@@ -912,6 +954,9 @@ public class ConfigureListener implements ServletRequestListener,
                         servletClassFound = false;
                     }
                 }
+                if ("distributable".equals(localName)) {
+                    distributablePresent = true;
+                }
 
 
             } // END startElement
@@ -930,10 +975,9 @@ public class ConfigureListener implements ServletRequestListener,
             public void endElement(String uri, String localName, String qName)
                     throws SAXException {
 
-                if (servletClassFound && !facesServletPresent) {
-                    if (FACES_SERVLET.equals(content.toString().trim())) {
-                        facesServletPresent = true;
-                    }
+                if (servletClassFound && !facesServletPresent && 
+                    FACES_SERVLET.equals(content.toString().trim())) {
+                    facesServletPresent = true;
                 }
 
             } // END endElement
@@ -951,21 +995,21 @@ public class ConfigureListener implements ServletRequestListener,
         // -------------------------------------------------------- Constructors
 
 
-        public WebConfigResourceMonitor(ServletContext sc, Collection<URL> urls) {
+        public WebConfigResourceMonitor(ServletContext sc, Collection<URI> uris) {
 
-            assert (urls != null);
+            assert (uris != null);
             this.sc = sc;
-            for (URL url : urls) {
+            for (URI uri : uris) {
                 if (monitors == null) {
-                    monitors = new ArrayList<Monitor>(urls.size());
+                    monitors = new ArrayList<Monitor>(uris.size());
                 }
                 try {
-                    Monitor m = new Monitor(url);
+                    Monitor m = new Monitor(uri);
                     monitors.add(m);
                 } catch (IOException ioe) {
                     if (LOGGER.isLoggable(Level.SEVERE)) {
                         LOGGER.severe("Unable to setup resource monitor for "
-                                      + url.toExternalForm()
+                                      + uri.toString()
                                       + ".  Resource will not be monitored for changes.");
                     }
                     if (LOGGER.isLoggable(Level.FINE)) {
@@ -999,7 +1043,7 @@ public class ConfigureListener implements ServletRequestListener,
                 } catch (IOException ioe) {
                     if (LOGGER.isLoggable(Level.SEVERE)) {
                         LOGGER.severe("Unable to access url "
-                                      + m.url.toExternalForm()
+                                      + m.uri.toString()
                                       + ".  Monitoring for this resource will no longer occur.");
                     }
                     if (LOGGER.isLoggable(Level.FINE)) {
@@ -1022,20 +1066,20 @@ public class ConfigureListener implements ServletRequestListener,
 
         private class Monitor {
 
-            private URL url;
+            private URI uri;
             private long timestamp = -1;
 
             // ---------------------------------------------------- Constructors
 
 
-            Monitor(URL url) throws IOException {
+            Monitor(URI uri) throws IOException {
 
-                this.url = url;
+                this.uri = uri;
                 this.timestamp = getLastModified();
                 if (LOGGER.isLoggable(Level.INFO)) {
                     LOGGER.log(Level.INFO,
                             "Monitoring {0} for modifications",
-                            url.toExternalForm());
+                            uri.toURL().toExternalForm());
                 }
 
             }
@@ -1051,7 +1095,7 @@ public class ConfigureListener implements ServletRequestListener,
                     if (LOGGER.isLoggable(Level.INFO)) {
                         LOGGER.log(Level.INFO,
                                 "{0} changed!",
-                                url.toExternalForm());
+                                uri.toURL().toExternalForm());
                     }
                     return true;
                 }
@@ -1067,7 +1111,7 @@ public class ConfigureListener implements ServletRequestListener,
 
                 InputStream in = null;
                 try {
-                    URLConnection conn = url.openConnection();
+                    URLConnection conn = uri.toURL().openConnection();
                     conn.connect();
                     in = conn.getInputStream();
                     return conn.getLastModified();
@@ -1076,6 +1120,10 @@ public class ConfigureListener implements ServletRequestListener,
                         try {
                             in.close();
                         } catch (IOException ignored) {
+                            if (LOGGER.isLoggable(Level.FINEST)) {
+                                LOGGER.log(Level.FINEST,
+                                        "Exception while closing stream", ignored);
+                            }
                         }
                     }
                 }
diff --git a/jsf-ri/src/main/java/com/sun/faces/config/DbfFactory.java b/jsf-ri/src/main/java/com/sun/faces/config/DbfFactory.java
index 9cbdb8f..86bb208 100644
--- a/jsf-ri/src/main/java/com/sun/faces/config/DbfFactory.java
+++ b/jsf-ri/src/main/java/com/sun/faces/config/DbfFactory.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -36,11 +40,15 @@
 
 package com.sun.faces.config;
 
-import org.xml.sax.*;
+import com.sun.faces.util.Util;
+import org.xml.sax.EntityResolver;
+import org.xml.sax.ErrorHandler;
+import org.xml.sax.InputSource;
+import org.xml.sax.SAXException;
+import org.xml.sax.SAXParseException;
 import org.xml.sax.helpers.DefaultHandler;
 import org.w3c.dom.ls.LSResourceResolver;
 import org.w3c.dom.ls.LSInput;
-
 import javax.xml.XMLConstants;
 import javax.xml.parsers.DocumentBuilderFactory;
 import javax.xml.transform.stream.StreamSource;
@@ -55,8 +63,12 @@ import java.net.MalformedURLException;
 import java.util.HashMap;
 import java.util.logging.Logger;
 import java.util.logging.Level;
-
+import javax.servlet.ServletContext;
 import com.sun.faces.util.FacesLogger;
+import java.util.Collections;
+import java.util.EnumMap;
+import java.util.Map;
+
 
 /**
  * <p>Create and configure DocumentBuilderFactory instances.</p>
@@ -90,12 +102,30 @@ public class DbfFactory {
         "/com/sun/faces/web-facelettaglibrary_2_0.xsd";
 
     /**
+     * Location of the facelet-taglib 2.2 Schema
+     */
+    private static final String FACELET_TAGLIB_2_2_XSD =
+        "/com/sun/faces/web-facelettaglibrary_2_2.xsd";
+
+    /**
      * Location of the Faces 2.0 Schema
      */
     private static final String FACES_2_0_XSD =
         "/com/sun/faces/web-facesconfig_2_0.xsd";
 
     /**
+     * Location of the Faces 2.1 Schema
+     */
+    private static final String FACES_2_1_XSD =
+        "/com/sun/faces/web-facesconfig_2_1.xsd";
+
+     /**
+     * Location of the Faces 2.2 Schema
+     */
+    private static final String FACES_2_2_XSD =
+        "/com/sun/faces/web-facesconfig_2_2.xsd";
+
+    /**
      * Location of the Faces 1.2 Schema
      */
     private static final String FACES_1_2_XSD =
@@ -116,37 +146,34 @@ public class DbfFactory {
           AS_SCHEMA_DIR + "web-facelettaglibrary_2_0.xsd";
 
     /**
-     * Location of the faces 2.0 xsd within GlassFish.
-     */
-    private static final String FACES_2_0_XSD_FILE =
-          AS_SCHEMA_DIR + "web-facesconfig_2_0.xsd";
-
-    /**
-     * Location of the faces 1.2 xsd within GlassFish.
+     * Location of the facelet taglib xsd within GlassFish.
      */
-    private static final String FACES_1_2_XSD_FILE =
-          AS_SCHEMA_DIR + "web-facesconfig_1_2.xsd";
-
+    private static final String FACELET_TAGLIB_2_2_XSD_FILE =
+          AS_SCHEMA_DIR + "web-facelettaglibrary_2_2.xsd";
 
     /**
-     * Our cached 2.0 facelet-taglib Schema object for validation
+     * Location of the faces 2.0 xsd within GlassFish.
      */
-    private static Schema FACELET_TAGLIB_20_SCHEMA;
+    private static final String FACES_2_0_XSD_FILE =
+          AS_SCHEMA_DIR + "web-facesconfig_2_0.xsd";
 
     /**
-     * Our cached 2.0 Schema object for validation
+     * Location of the faces 2.1 xsd within GlassFish.
      */
-    private static Schema FACES_20_SCHEMA;
+    private static final String FACES_2_1_XSD_FILE =
+          AS_SCHEMA_DIR + "web-facesconfig_2_1.xsd";
 
     /**
-     * Our cached 1.2 Schema object for validation
+     * Location of the faces 2.1 xsd within GlassFish.
      */
-    private static Schema FACES_12_SCHEMA;
+    private static final String FACES_2_2_XSD_FILE =
+          AS_SCHEMA_DIR + "web-facesconfig_2_2.xsd";
 
     /**
-     * Our cached 1.1 Schema object for validation
+     * Location of the faces 1.2 xsd within GlassFish.
      */
-    private static Schema FACES_11_SCHEMA;
+    private static final String FACES_1_2_XSD_FILE =
+          AS_SCHEMA_DIR + "web-facesconfig_1_2.xsd";
 
     /**
      * EntityResolver
@@ -154,27 +181,22 @@ public class DbfFactory {
     public static final EntityResolver FACES_ENTITY_RESOLVER =
          new FacesEntityResolver();
 
-
+    /**
+     * The constant that points to the schema map (in the servlet context).
+     */
+    private static final String SCHEMA_MAP = "com.sun.faces.config.schemaMap";
+    
     public enum FacesSchema {
 
-        FACES_20(FACES_20_SCHEMA),
-        FACES_12(FACES_12_SCHEMA),
-        FACES_11(FACES_11_SCHEMA),
-        FACELET_TAGLIB_20(FACELET_TAGLIB_20_SCHEMA);
-
-        private Schema schema;
-
-        FacesSchema(Schema schema) {
-            this.schema = schema;
-        }
-
-        public Schema getSchema() {
-            return schema;
-        }
-
+        FACES_20,
+        FACES_21,
+        FACES_22,
+        FACES_12,
+        FACES_11,
+        FACELET_TAGLIB_20,
+        FACELET_TAGLIB_22;        
     }
 
-
     /**
      * ErrorHandler
      */
@@ -182,18 +204,12 @@ public class DbfFactory {
          new FacesErrorHandler();
 
 
-    static {
-        initStatics();
-    }
-
-
-
     // ---------------------------------------------------------- Public Methods
 
 
     public static DocumentBuilderFactory getFactory() {
 
-        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+        DocumentBuilderFactory factory = Util.createDocumentBuilderFactory();
         factory.setNamespaceAware(true);
         factory.setIgnoringComments(true);
         factory.setIgnoringElementContentWhitespace(true);
@@ -202,75 +218,6 @@ public class DbfFactory {
     }   
 
 
-    /**
-     * Init our cache objects.
-     */
-    private static void initStatics() {
-        // First, cache the various files
-        // PENDING_RELEASE (rlubke) clean this up
-        try {
-            URL url = DbfFactory.class.getResource(FACES_1_2_XSD);
-            if (url == null) {
-                // try to load from the file
-                File f = new File(FACES_1_2_XSD_FILE);
-                if (!f.exists()) {
-                    throw new IllegalStateException("Unable to find web-facesconfig_1_2.xsd");
-                }
-                url = f.toURI().toURL();
-            }
-            URLConnection conn = url.openConnection();
-            conn.setUseCaches(false);
-            InputStream in = conn.getInputStream();
-            SchemaFactory factory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
-            factory.setResourceResolver((LSResourceResolver) DbfFactory.FACES_ENTITY_RESOLVER);
-            FACES_12_SCHEMA = factory.newSchema(new StreamSource(in));
-
-            url = DbfFactory.class.getResource(FACES_1_1_XSD);
-            conn = url.openConnection();
-            conn.setUseCaches(false);
-            in = conn.getInputStream();
-            factory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
-            factory.setResourceResolver((LSResourceResolver) DbfFactory.FACES_ENTITY_RESOLVER);
-            FACES_11_SCHEMA = factory.newSchema(new StreamSource(in));
-
-            url = DbfFactory.class.getResource(FACES_2_0_XSD);
-            if (url == null) {
-                // try to load from the file
-                File f = new File(FACES_2_0_XSD_FILE);
-                if (!f.exists()) {
-                    throw new IllegalStateException("Unable to find web-facesconfig_2_0.xsd");
-                }
-                url = f.toURI().toURL();
-            }
-            conn = url.openConnection();
-            conn.setUseCaches(false);
-            in = conn.getInputStream();
-            factory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
-            factory.setResourceResolver((LSResourceResolver) DbfFactory.FACES_ENTITY_RESOLVER);
-            FACES_20_SCHEMA = factory.newSchema(new StreamSource(in));
-
-            url = DbfFactory.class.getResource(FACELET_TAGLIB_2_0_XSD);
-            if (url == null) {
-                // try to load from the file
-                File f = new File(FACELET_TAGLIB_2_0_XSD_FILE);
-                if (!f.exists()) {
-                    throw new IllegalStateException("Unable to find web-facelettaglibrary_2_0.xsd");
-                }
-                url = f.toURI().toURL();
-            }
-            conn = url.openConnection();
-            conn.setUseCaches(false);
-            in = conn.getInputStream();
-            factory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
-            factory.setResourceResolver((LSResourceResolver) DbfFactory.FACES_ENTITY_RESOLVER);
-            FACELET_TAGLIB_20_SCHEMA = factory.newSchema(new StreamSource(in));
-
-        } catch (Exception e) {
-            throw new ConfigurationException(e);
-        }
-
-    }
-
     // ----------------------------------------------------------- Inner Classes
 
    private static class FacesEntityResolver extends DefaultHandler implements LSResourceResolver {
@@ -296,6 +243,16 @@ public class DbfFactory {
                  FACES_2_0_XSD_FILE
             },
             {
+                "web-facesconfig_2_1.xsd",
+                 FACES_2_1_XSD,
+                 FACES_2_1_XSD_FILE
+            },
+            {
+                "web-facesconfig_2_2.xsd",
+                 FACES_2_2_XSD,
+                 FACES_2_2_XSD_FILE
+            },
+            {
                 "facelet-taglib_1_0.dtd",
                 "/com/sun/faces/facelet-taglib_1_0.dtd",
                 null
@@ -321,11 +278,31 @@ public class DbfFactory {
                 AS_SCHEMA_DIR + "javaee_5.xsd"
             },
             {
+                "javaee_6.xsd",
+                "/com/sun/faces/javaee_6.xsd",
+                AS_SCHEMA_DIR + "javaee_6.xsd"
+            },
+            {
+                "javaee_7.xsd",
+                "/com/sun/faces/javaee_7.xsd",
+                AS_SCHEMA_DIR + "javaee_7.xsd"
+            },
+            {
                 "javaee_web_services_client_1_2.xsd",
                 "/com/sun/faces/javaee_web_services_client_1_2.xsd",
                 AS_SCHEMA_DIR + "javaee_web_services_client_1_2.xsd"
             },
             {
+                "javaee_web_services_client_1_3.xsd",
+                "/com/sun/faces/javaee_web_services_client_1_3.xsd",
+                AS_SCHEMA_DIR + "javaee_web_services_client_1_3.xsd"
+            },
+            {
+                "javaee_web_services_client_1_4.xsd",
+                "/com/sun/faces/javaee_web_services_client_1_4.xsd",
+                AS_SCHEMA_DIR + "javaee_web_services_client_1_4.xsd"
+            },
+            {
                 "xml.xsd",
                 "/com/sun/faces/xml.xsd",
                 AS_SCHEMA_DIR + "xml.xsd"
@@ -570,4 +547,192 @@ public class DbfFactory {
 
         public void setCertifiedText(boolean certifiedText) { }
     }
+
+    /**
+     * Get the schema for the given schema id.
+     *
+     * @param servletContext the backing servlet context.
+     * @param schemaId the schema id.
+     * @return the schema, or null if not found.
+     */
+    public static Schema getSchema(ServletContext servletContext, FacesSchema schemaId) {
+        Map<FacesSchema, Schema> schemaMap = getSchemaMap(servletContext);
+        if (!schemaMap.containsKey(schemaId)) {
+            loadSchema(schemaMap, schemaId);
+        }
+        return schemaMap.get(schemaId);
+    }
+    
+    /**
+     * Get the schema map from the servlet context (or create it).
+     * 
+     * @param servletContext the servlet context.
+     * @return the schema map.
+     */
+    private static Map<FacesSchema, Schema> getSchemaMap(ServletContext servletContext) {
+        Map<FacesSchema, Schema> schemaMap = (Map<FacesSchema, Schema>)
+                servletContext.getAttribute(SCHEMA_MAP);
+        
+        if (schemaMap == null) {
+            synchronized(servletContext) {
+                schemaMap = Collections.synchronizedMap(
+                    new EnumMap<FacesSchema, Schema>(FacesSchema.class));
+                servletContext.setAttribute(SCHEMA_MAP, schemaMap);
+            }
+        }
+        
+        return schemaMap;
+    }
+    
+    /**
+     * Remove the schema map from the servlet context.
+     * 
+     * @param servletContext the servlet context.
+     */
+    public static void removeSchemaMap(ServletContext servletContext) {
+        servletContext.removeAttribute(SCHEMA_MAP);
+    }
+    
+    /**
+     * Load the schema for the given schema id.
+     * 
+     * @param schemaMap the schema map.
+     * @param schemaId the schema id.
+     */
+    private static void loadSchema(Map<FacesSchema, Schema> schemaMap, FacesSchema schemaId) {
+        URL url;
+        URLConnection conn;
+        InputStream in;
+        SchemaFactory factory;
+        File f;
+        Schema schema;
+
+        try {
+            switch (schemaId) {
+                case FACES_12:
+                    url = DbfFactory.class.getResource(FACES_1_2_XSD);
+                    if (url == null) {
+                        // try to load from the file
+                        f = new File(FACES_1_2_XSD_FILE);
+                        if (!f.exists()) {
+                            throw new IllegalStateException("Unable to find web-facesconfig_1_2.xsd");
+                        }
+                        url = f.toURI().toURL();
+                    }
+                    conn = url.openConnection();
+                    conn.setUseCaches(false);
+                    in = conn.getInputStream();
+                    factory = Util.createSchemaFactory(XMLConstants.W3C_XML_SCHEMA_NS_URI);
+                    factory.setResourceResolver((LSResourceResolver) DbfFactory.FACES_ENTITY_RESOLVER);
+                    schema = factory.newSchema(new StreamSource(in));
+                    schemaMap.put(schemaId, schema);
+                    break;
+                case FACES_11:
+                    url = DbfFactory.class.getResource(FACES_1_1_XSD);
+                    conn = url.openConnection();
+                    conn.setUseCaches(false);
+                    in = conn.getInputStream();
+                    factory = Util.createSchemaFactory(XMLConstants.W3C_XML_SCHEMA_NS_URI);
+                    factory.setResourceResolver((LSResourceResolver) DbfFactory.FACES_ENTITY_RESOLVER);
+                    schema = factory.newSchema(new StreamSource(in));
+                    schemaMap.put(schemaId, schema);
+                    break;
+                case FACES_21:
+                    url = DbfFactory.class.getResource(FACES_2_1_XSD);
+                    if (url == null) {
+                        // try to load from the file
+                        f = new File(FACES_2_1_XSD_FILE);
+                        if (!f.exists()) {
+                            throw new IllegalStateException("Unable to find web-facesconfig_2_1.xsd");
+                        }
+                        url = f.toURI().toURL();
+                    }
+                    conn = url.openConnection();
+                    conn.setUseCaches(false);
+                    in = conn.getInputStream();
+                    factory = Util.createSchemaFactory(XMLConstants.W3C_XML_SCHEMA_NS_URI);
+                    factory.setResourceResolver((LSResourceResolver) DbfFactory.FACES_ENTITY_RESOLVER);
+                    schema = factory.newSchema(new StreamSource(in));
+                    schemaMap.put(schemaId, schema);
+                    break;
+                case FACES_22:
+                    url = DbfFactory.class.getResource(FACES_2_2_XSD);
+                    if (url == null) {
+                        // try to load from the file
+                        f = new File(FACES_2_2_XSD_FILE);
+                        if (!f.exists()) {
+                            throw new IllegalStateException("Unable to find web-facesconfig_2_2.xsd");
+                        }
+                        url = f.toURI().toURL();
+                    }
+                    conn = url.openConnection();
+                    conn.setUseCaches(false);
+                    in = conn.getInputStream();
+                    factory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
+                    factory.setResourceResolver((LSResourceResolver) DbfFactory.FACES_ENTITY_RESOLVER);
+                    schema = factory.newSchema(new StreamSource(in));
+                    schemaMap.put(schemaId, schema);
+                    break;
+                case FACES_20:
+                    url = DbfFactory.class.getResource(FACES_2_0_XSD);
+                    if (url == null) {
+                        // try to load from the file
+                        f = new File(FACES_2_0_XSD_FILE);
+                        if (!f.exists()) {
+                            throw new IllegalStateException("Unable to find web-facesconfig_2_0.xsd");
+                        }
+                        url = f.toURI().toURL();
+                    }
+                    conn = url.openConnection();
+                    conn.setUseCaches(false);
+                    in = conn.getInputStream();
+                    factory = Util.createSchemaFactory(XMLConstants.W3C_XML_SCHEMA_NS_URI);
+                    factory.setResourceResolver((LSResourceResolver) DbfFactory.FACES_ENTITY_RESOLVER);
+                    schema = factory.newSchema(new StreamSource(in));
+                    schemaMap.put(schemaId, schema);
+                    break;
+                case FACELET_TAGLIB_20:
+                    url = DbfFactory.class.getResource(FACELET_TAGLIB_2_0_XSD);
+                    if (url == null) {
+                        // try to load from the file
+                        f = new File(FACELET_TAGLIB_2_0_XSD_FILE);
+                        if (!f.exists()) {
+                            throw new IllegalStateException("Unable to find web-facelettaglibrary_2_0.xsd");
+                        }
+                        url = f.toURI().toURL();
+                    }
+                    conn = url.openConnection();
+                    conn.setUseCaches(false);
+                    in = conn.getInputStream();
+                    factory = Util.createSchemaFactory(XMLConstants.W3C_XML_SCHEMA_NS_URI);
+                    factory.setResourceResolver((LSResourceResolver) DbfFactory.FACES_ENTITY_RESOLVER);
+                    schema = factory.newSchema(new StreamSource(in));
+                    schemaMap.put(schemaId, schema);
+                    break;
+                case FACELET_TAGLIB_22:
+                    url = DbfFactory.class.getResource(FACELET_TAGLIB_2_2_XSD);
+                    if (url == null) {
+                        // try to load from the file
+                        f = new File(FACELET_TAGLIB_2_2_XSD_FILE);
+                        if (!f.exists()) {
+                            throw new IllegalStateException("Unable to find web-facelettaglibrary_2_2.xsd");
+                        }
+                        url = f.toURI().toURL();
+                    }
+                    conn = url.openConnection();
+                    conn.setUseCaches(false);
+                    in = conn.getInputStream();
+                    factory = Util.createSchemaFactory(XMLConstants.W3C_XML_SCHEMA_NS_URI);
+                    factory.setResourceResolver((LSResourceResolver) DbfFactory.FACES_ENTITY_RESOLVER);
+                    schema = factory.newSchema(new StreamSource(in));
+                    schemaMap.put(schemaId, schema);
+                    break;
+                default:
+                    throw new ConfigurationException("Unrecognized Faces Version: " + schemaId.toString());
+            }
+        }
+        catch (Exception e) {
+            throw new ConfigurationException(e);
+        }        
+    }
 }
diff --git a/jsf-ri/src/main/java/com/sun/faces/config/DelegateToGlassFishAnnotationScanner.java b/jsf-ri/src/main/java/com/sun/faces/config/DelegateToGlassFishAnnotationScanner.java
new file mode 100644
index 0000000..1038bd3
--- /dev/null
+++ b/jsf-ri/src/main/java/com/sun/faces/config/DelegateToGlassFishAnnotationScanner.java
@@ -0,0 +1,258 @@
+
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.config;
+
+import com.sun.faces.spi.InjectionProviderException;
+import com.sun.faces.util.FacesLogger;
+import static com.sun.faces.spi.AnnotationScanner.ScannedAnnotation;
+import java.lang.annotation.Annotation;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.net.URI;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.faces.context.ExternalContext;
+import javax.faces.context.FacesContext;
+import javax.servlet.ServletContext;
+
+class DelegateToGlassFishAnnotationScanner extends AnnotationScanner {
+
+    private static final Logger LOGGER = FacesLogger.CONFIG.getLogger();
+    private com.sun.faces.spi.AnnotationScanner annotationScanner = null;
+    Set<String> jarNamesWithoutMetadataComplete = null;
+
+    public DelegateToGlassFishAnnotationScanner(ServletContext sc) {
+        super(sc);
+    }
+
+    public void setAnnotationScanner(com.sun.faces.spi.AnnotationScanner containerConnector, Set<String> jarNamesWithoutMetadataComplete) {
+        this.annotationScanner = containerConnector;
+        this.jarNamesWithoutMetadataComplete = jarNamesWithoutMetadataComplete;
+    }
+
+    @Override
+    public Map<Class<? extends Annotation>, Set<Class<?>>> getAnnotatedClasses(Set<URI> uris) {
+
+        Set<String> classList = new HashSet<String>();
+
+        processAnnotations(classList);
+        processScripts(classList);
+
+        return processClassList(classList);
+    }
+
+    private Object getDeploymentContext(ExternalContext extContext) {
+        Object result = null;
+        Map<String, Object> appMap = extContext.getApplicationMap();
+
+        // This will work in GlassFish 3.1.1.
+        result = appMap.get("com.sun.enterprise.web.WebModule.DeploymentContext");
+
+        if (null == result) {
+            // Try the GlassFish 3.1 way.
+            Object defaultHabitat = appMap.get("org.glassfish.servlet.habitat");
+            if (null != defaultHabitat) {
+                try {
+                    Method getComponent = defaultHabitat.getClass().getDeclaredMethod("getComponent", Class.class);
+                    Class serverConfigLookupClass = Thread.currentThread().getContextClassLoader().loadClass("com.sun.enterprise.web.ServerConfigLookup");
+                    Object serverConfigLookup = getComponent.invoke(defaultHabitat, serverConfigLookupClass);
+                    
+                    Method getDeploymentContext = serverConfigLookupClass.getMethod("getDeploymentContext", ServletContext.class);
+                    result = getDeploymentContext.invoke(serverConfigLookup, extContext.getContext());
+                } catch(InvocationTargetException ite) { 
+                    Throwable targetException = ite.getTargetException();
+                    System.out.println(targetException);
+                } catch (Exception e) {
+                    if (LOGGER.isLoggable(Level.FINEST)) {
+                        LOGGER.log(Level.FINEST, "Problem getting deployment context information", e);
+                    }
+                }
+            }
+        
+        }
+
+        return result;
+    }
+
+    private String getCurrentWebModulePrefix(ExternalContext extContext) {
+        String result = null;
+        Object deploymentContext = getDeploymentContext(extContext);
+        if (null != deploymentContext) {
+            try {
+                // If this module is a war or an exploded war, then this will give the 
+                // prefix.
+                Method getSource = deploymentContext.getClass().getDeclaredMethod("getSource");
+                Object source = getSource.invoke(deploymentContext, (Object[]) null);
+                if (null != source) {
+                    Method getName = source.getClass().getDeclaredMethod("getName");
+                    if (null != getName) {
+                        result = (String) getName.invoke(source, (Object[]) null);
+                    }
+
+                }
+
+            } catch (Exception e) {
+                if (LOGGER.isLoggable(Level.FINEST)) {
+                    LOGGER.log(Level.FINEST, "Problem in getCurrentWebModulePrefix", e);
+                }
+            }
+        }
+        if (null == result && null != deploymentContext) {
+            try {
+                // If this module is an ear, then this will give the prefix.
+                Method getModuleUri = deploymentContext.getClass().getMethod("getModuleUri");
+                if (null != getModuleUri) {
+                    result = (String) getModuleUri.invoke(deploymentContext, (Object[]) null);
+                    if (null != result && result.endsWith(".war")) {
+                        result = result.substring(0, result.length() - 4);
+                    }
+                }
+
+            } catch (Exception e) {
+                if (LOGGER.isLoggable(Level.FINEST)) {
+                    LOGGER.log(Level.FINEST, "Problem in getCurrentWebModulePrefix", e);
+                }
+            }
+        }
+
+        if (null == result) {
+            result = extContext.getApplicationContextPath();
+        }
+
+        return result;
+    }
+
+    private void processAnnotations(Set<String> classList) {
+        try {
+            String archiveName = getCurrentWebModulePrefix(FacesContext.getCurrentInstance().getExternalContext());
+            Map<String, List<ScannedAnnotation>> classesByAnnotation =
+                    annotationScanner.getAnnotatedClassesInCurrentModule(this.sc);
+
+            for (String curAnnotationName : classesByAnnotation.keySet()) {
+                if (FACES_ANNOTATIONS.contains(curAnnotationName)) {
+                    for (ScannedAnnotation curAnnotation : classesByAnnotation.get(curAnnotationName)) {
+                        Collection<URI> definingUris = curAnnotation.getDefiningURIs();
+                        Iterator<URI> iter = definingUris.iterator();
+                        URI uri, jarUri = null;
+                        String uriString, nameOfJarInJarUri = null;
+                        boolean doAdd = false;
+                        while (!doAdd && iter.hasNext()) {
+                            uri = iter.next();
+                            uriString = uri.toASCIIString();
+
+                            // If the class is in the current web module
+                            boolean currentClassIsInCurrentWebModule =
+                                    (uriString.endsWith("WEB-INF/classes") || uriString.endsWith("WEB-INF/classes/"))
+                                    && uriString.contains(archiveName);
+                            // or it is from a jar that is *not* within a web module...
+                            boolean currentClassIsInJarNotInAnyWebModule =
+                                    uriString.endsWith(".jar")
+                                    && !uriString.contains(archiveName)
+                                    && !uriString.contains("WEB-INF/classes");
+                            if (currentClassIsInCurrentWebModule
+                                    || currentClassIsInJarNotInAnyWebModule) {
+                                doAdd = true;
+                            } else {
+                                for (String jarName : jarNamesWithoutMetadataComplete) {
+                                    if (uriString.contains(jarName)) {
+                                        doAdd = true;
+                                        jarUri = uri;
+                                        nameOfJarInJarUri = jarName;
+                                        break;
+                                    }
+                                }
+                            }
+                        }
+                        if (doAdd) {
+                            // If the annotationScanPackages context param is set, we
+                            // may yet have to exclude the class
+                            String fqcn = curAnnotation.getFullyQualifiedClassName();
+                            if (isAnnotationScanPackagesSet()) {
+                                // If the class with the annotation was found 
+                                // in a jar file
+                                if (null != jarUri) {
+                                    // see if the jar file is in the list of jars to include
+                                    String[] allowedPackages =
+                                            (getClasspathPackages() != null
+                                            && getClasspathPackages().get(nameOfJarInJarUri) != null)
+                                            ? getClasspathPackages().get(nameOfJarInJarUri)
+                                            : new String[0];
+                                    if (0 == allowedPackages.length) {
+                                        doAdd = false;
+                                    }
+                                    for (String curPackage : allowedPackages) {
+                                        doAdd = fqcn.contains(curPackage);
+                                        if (doAdd) {
+                                            break;
+                                        }
+                                    }
+                                } else {
+                                    doAdd = processClass(fqcn);
+                                }
+
+                            }
+
+                            if (doAdd) {
+                                classList.add(fqcn);
+                            }
+                        }
+                    }
+                }
+
+            }
+
+        } catch (InjectionProviderException ex) {
+            if (LOGGER.isLoggable(Level.SEVERE)) {
+                LOGGER.log(Level.SEVERE, "Unable to use GlassFish to perform "
+                        + "annotation scanning.  Annotated artifacts will not "
+                        + "be declared to runtime.", ex);
+            }
+
+        }
+
+    }
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/config/DelegatingAnnotationProvider.java b/jsf-ri/src/main/java/com/sun/faces/config/DelegatingAnnotationProvider.java
new file mode 100644
index 0000000..d3346ae
--- /dev/null
+++ b/jsf-ri/src/main/java/com/sun/faces/config/DelegatingAnnotationProvider.java
@@ -0,0 +1,103 @@
+
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.config;
+
+import com.sun.faces.spi.AnnotationProvider;
+import java.lang.annotation.Annotation;
+import java.net.URI;
+import java.util.Map;
+import java.util.Set;
+import javax.servlet.ServletContext;
+
+
+
+/*
+ * This class is the default implementation of AnnotationProvider
+ * referenced by the AnnotationProviderFactory.  Unless someone
+ * manualy provides one via in META-INF/services, this is the one
+ * that will actually be instantiated and installed into Mojarra.
+
+ * This class actually delegates the real work to one of two kinds of
+ * com.sun.faces.config.AnnotationScanner subclasses.
+ * JavaClassScanningAnnotationScanner or
+ * DelegateToGlassFishAnnotationScanner.
+ *
+ */
+
+public class DelegatingAnnotationProvider extends AnnotationProvider {
+
+    private AnnotationScanner scanner = null;
+
+    public DelegatingAnnotationProvider(ServletContext sc) {
+        super(sc);
+    }
+
+    /*
+     * Called during annotation scanning.  If we already have a scanner
+     * reference, use it.  If not, create a
+     * JavaClassScanningAnnotationScanner and use it as the scanner.
+     */
+
+    @Override
+    public Map<Class<? extends Annotation>, Set<Class<?>>> getAnnotatedClasses(Set<URI> urls) {
+        if (null == scanner) {
+            scanner = new JavaClassScanningAnnotationScanner(sc);
+        }
+        return scanner.getAnnotatedClasses(urls);
+    }
+    
+    /*
+     * This will only be called if the InjectionProvider offered by the
+     * container implements com.sun.faces.spi.AnnotationScanner.  In
+     * this case, we know that we can safely use
+     * DelegateToGlassFishAnnotationScanner as our scanner reference.
+     */
+    public void setAnnotationScanner(com.sun.faces.spi.AnnotationScanner containerConnector, Set<String> jarNamesWithoutMetadataComplete) {
+        assert(null == scanner);
+        DelegateToGlassFishAnnotationScanner impl =
+                new DelegateToGlassFishAnnotationScanner(sc);
+        impl.setAnnotationScanner(containerConnector, jarNamesWithoutMetadataComplete);
+        scanner = impl;
+    }
+
+
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/config/DocumentInfo.java b/jsf-ri/src/main/java/com/sun/faces/config/DocumentInfo.java
index 01b0538..481ca83 100644
--- a/jsf-ri/src/main/java/com/sun/faces/config/DocumentInfo.java
+++ b/jsf-ri/src/main/java/com/sun/faces/config/DocumentInfo.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -36,9 +40,9 @@
 
 package com.sun.faces.config;
 
+import java.net.URI;
 import org.w3c.dom.Document;
 
-import java.net.URL;
 
 
 /**
@@ -47,16 +51,16 @@ import java.net.URL;
 public class DocumentInfo {
 
     private Document document;
-    private URL sourceURL;
+    private URI sourceURI;
 
 
     // ------------------------------------------------------------ Constructors
 
 
-    public DocumentInfo(Document document, URL sourceURL) {
+    public DocumentInfo(Document document, URI sourceURL) {
 
         this.document = document;
-        this.sourceURL = sourceURL;
+        this.sourceURI = sourceURL;
 
     }
 
@@ -71,9 +75,9 @@ public class DocumentInfo {
     }
 
 
-    public URL getSourceURL() {
+    public URI getSourceURI() {
 
-        return sourceURL;
+        return sourceURI;
 
     }
     
diff --git a/jsf-ri/src/main/java/com/sun/faces/config/DocumentOrderingWrapper.java b/jsf-ri/src/main/java/com/sun/faces/config/DocumentOrderingWrapper.java
index e3ef294..2d671c9 100644
--- a/jsf-ri/src/main/java/com/sun/faces/config/DocumentOrderingWrapper.java
+++ b/jsf-ri/src/main/java/com/sun/faces/config/DocumentOrderingWrapper.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -318,12 +322,10 @@ public class DocumentOrderingWrapper {
                     break;
                 }
             }
-            if (!found) {
-                if (LOGGER.isLoggable(Level.WARNING)) {
-                    LOGGER.log(Level.WARNING,
-                               "jsf.configuration.absolute.order.missing.document",
-                               new Object[] { name });
-                }
+            if (!found && LOGGER.isLoggable(Level.WARNING)) {
+                LOGGER.log(Level.WARNING,
+                    "jsf.configuration.absolute.order.missing.document",
+                    new Object[] { name });
             }
         }
 
diff --git a/jsf-ri/src/main/java/com/sun/faces/config/FaceletsConfiguration.java b/jsf-ri/src/main/java/com/sun/faces/config/FaceletsConfiguration.java
new file mode 100644
index 0000000..b318a4e
--- /dev/null
+++ b/jsf-ri/src/main/java/com/sun/faces/config/FaceletsConfiguration.java
@@ -0,0 +1,195 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.config;
+
+import java.util.Map;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import javax.faces.context.FacesContext;
+
+
+/*
+ * This read-only singleton class is vended by the WebConfiguration.
+ * It is queried from any point in the program that needs to take action based
+ * on configuration options pertaining to facelets.
+ *
+ */
+public class FaceletsConfiguration {
+
+    public static final String FACELETS_CONFIGURATION_ATTRIBUTE_NAME = "com.sun.faces.config.FaceletsConfiguration";
+
+    private static final String ESCAPE_INLINE_TEXT_ATTRIBUTE_NAME = "com.sun.faces.config.EscapeInlineText";
+
+//    private static final String CONSUME_COMMENTS_ATTRIBUTE_NAME = "com.sun.faces.config.ConsumeComments";
+
+    private static Pattern EXTENSION_PATTERN = Pattern.compile("\\.[^/]+$");
+
+    private WebConfiguration config;
+
+    private  Map<String, String> faceletsProcessingMappings;
+
+
+    public FaceletsConfiguration(WebConfiguration config) {
+        this.config = config;
+
+        faceletsProcessingMappings =
+                config.getFacesConfigOptionValue(WebConfiguration.WebContextInitParameter.FaceletsProcessingFileExtensionProcessAs);
+
+    }
+
+    public boolean isProcessCurrentDocumentAsFaceletsXhtml(String alias) {
+        // We want to write the XML declaration if and only if
+        // The SuppressXmlDeclaration context-param is NOT enabled
+        // and the file extension for the current file has a mapping
+        // with the value of XHTML
+        boolean currentModeIsXhtml = true;
+
+        String extension = getExtension(alias);
+
+        assert (null != faceletsProcessingMappings);
+        if (faceletsProcessingMappings.containsKey(extension)) {
+            String value = faceletsProcessingMappings.get(extension);
+            currentModeIsXhtml = value.equals("xhtml");
+        }
+
+        return currentModeIsXhtml;
+    }
+    
+    public boolean isOutputHtml5Doctype(String alias) {
+        boolean currentModeIsHtml5 = true;
+        
+        String extension = getExtension(alias);
+
+        assert (null != faceletsProcessingMappings);
+        if (faceletsProcessingMappings.containsKey(extension)) {
+            String value = faceletsProcessingMappings.get(extension);
+            currentModeIsHtml5 = value.equals("html5");
+        }
+        
+        
+        return currentModeIsHtml5;
+    }
+
+    public boolean isConsumeComments(String alias) {
+        boolean consumeComments = false;
+
+        String extension = getExtension(alias);
+
+        assert (null != faceletsProcessingMappings);
+        if (faceletsProcessingMappings.containsKey(extension)) {
+            String value = faceletsProcessingMappings.get(extension);
+            consumeComments = value.equals("xml") || value.equals("jspx");
+        }
+
+        return consumeComments;
+
+    }
+
+    public boolean isConsumeCDATA(String alias) {
+        boolean consumeCDATA = false;
+
+        String extension = getExtension(alias);
+
+        assert (null != faceletsProcessingMappings);
+        if (faceletsProcessingMappings.containsKey(extension)) {
+            String value = faceletsProcessingMappings.get(extension);
+            consumeCDATA = value.equals("jspx") || value.equals("xml");
+        }
+
+        return consumeCDATA;
+
+    }
+
+    public boolean isEscapeInlineText(FacesContext context) {
+        Boolean result = Boolean.TRUE;
+
+        result = (Boolean) context.getAttributes().get(ESCAPE_INLINE_TEXT_ATTRIBUTE_NAME);
+        if (null == result) {
+        
+            String extension = getExtension(context.getViewRoot().getViewId());
+
+            assert (null != faceletsProcessingMappings);
+            if (faceletsProcessingMappings.containsKey(extension)) {
+                String value = faceletsProcessingMappings.get(extension);
+                result = value.equals("xml") || value.equals("xhtml");
+            } else {
+                result = Boolean.TRUE;
+            }
+            context.getAttributes().put(ESCAPE_INLINE_TEXT_ATTRIBUTE_NAME,
+                    result);
+        }
+
+        return result;
+    }
+
+    public static FaceletsConfiguration getInstance(FacesContext context) {
+        FaceletsConfiguration result = null;
+        Map<Object, Object> attrs = context.getAttributes();
+        result = (FaceletsConfiguration) attrs.get(FaceletsConfiguration.FACELETS_CONFIGURATION_ATTRIBUTE_NAME);
+        if (null == result) {
+            WebConfiguration config = WebConfiguration.getInstance(context.getExternalContext());
+            result = config.getFaceletsConfiguration();
+            attrs.put(FaceletsConfiguration.FACELETS_CONFIGURATION_ATTRIBUTE_NAME, result);
+        }
+        return result;
+    }
+
+    public static FaceletsConfiguration getInstance() {
+        FacesContext context = FacesContext.getCurrentInstance();
+        return FaceletsConfiguration.getInstance(context);
+    }
+
+    private static String getExtension(String alias) {
+        String ext = null;
+
+        if (alias != null) {
+            Matcher matcher = EXTENSION_PATTERN.matcher(alias);
+            if (matcher.find()) {
+                ext = alias.substring(matcher.start(), matcher.end());
+            }
+        }
+
+        return (ext == null) ? "xhtml": ext;
+    }
+
+
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/config/FacesConfigInfo.java b/jsf-ri/src/main/java/com/sun/faces/config/FacesConfigInfo.java
index 1c17d4c..b0193af 100644
--- a/jsf-ri/src/main/java/com/sun/faces/config/FacesConfigInfo.java
+++ b/jsf-ri/src/main/java/com/sun/faces/config/FacesConfigInfo.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -86,10 +90,8 @@ public class FacesConfigInfo {
         Document document = documentInfo.getDocument();
         isWebInfFacesConfig = isWebinfFacesConfig(document);
         version = getVersion(document);
-        if (isWebInfFacesConfig) {
-            if (isVersionGreaterOrEqual(2.0)) {
-                extractOrdering(document);
-            }
+        if (isWebInfFacesConfig && isVersionGreaterOrEqual(2.0)) {
+            extractOrdering(document);
         }
         metadataComplete = isMetadataComplete(document);
 
diff --git a/jsf-ri/src/main/java/com/sun/faces/config/FacesInitializer.java b/jsf-ri/src/main/java/com/sun/faces/config/FacesInitializer.java
index 941aa31..da10339 100644
--- a/jsf-ri/src/main/java/com/sun/faces/config/FacesInitializer.java
+++ b/jsf-ri/src/main/java/com/sun/faces/config/FacesInitializer.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 2009-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -60,8 +64,6 @@ import javax.servlet.ServletRegistration;
 import javax.servlet.annotation.HandlesTypes;
 import java.util.Set;
 import java.util.Map;
-import java.util.logging.Logger;
-import java.util.logging.Level;
 import java.net.MalformedURLException;
 
 /**
@@ -106,9 +108,13 @@ public class FacesInitializer implements ServletContainerInitializer {
 
 
     public void onStartup(Set<Class<?>> classes, ServletContext servletContext)
-          throws ServletException {
+        throws ServletException {
 
         if (shouldCheckMappings(classes, servletContext)) {
+            InitFacesContext initFacesContext = new InitFacesContext(servletContext);
+            if (null == initFacesContext) {
+                throw new ServletException("Unable to initialize Mojarra");
+            }
 
             Map<String,? extends ServletRegistration> existing = servletContext.getServletRegistrations();
             for (ServletRegistration registration : existing.values()) {
diff --git a/jsf-ri/src/main/java/com/sun/faces/config/InitFacesContext.java b/jsf-ri/src/main/java/com/sun/faces/config/InitFacesContext.java
index 4ac5266..eaafeb7 100644
--- a/jsf-ri/src/main/java/com/sun/faces/config/InitFacesContext.java
+++ b/jsf-ri/src/main/java/com/sun/faces/config/InitFacesContext.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -36,8 +40,11 @@
 
 package com.sun.faces.config;
 
+import com.sun.faces.RIConstants;
+import java.util.Map.Entry;
 import javax.faces.context.FacesContext;
 import javax.faces.context.ExternalContext;
+import javax.faces.context.Flash;
 import javax.faces.context.ResponseStream;
 import javax.faces.context.ResponseWriter;
 import javax.faces.component.UIViewRoot;
@@ -56,19 +63,27 @@ import java.util.*;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.UnsupportedEncodingException;
+import java.lang.reflect.Field;
 import java.net.URL;
 import java.net.MalformedURLException;
+import java.util.concurrent.ConcurrentHashMap;
 
 import com.sun.faces.context.ApplicationMap;
 import com.sun.faces.context.InitParameterMap;
+import com.sun.faces.util.FacesLogger;
+import com.sun.faces.util.Util;
+import java.util.logging.Level;
+import java.util.logging.Logger;
 
 /**
  * A special, minimal implementation of FacesContext used at application initialization time.
  * The ExternalContext returned by this FacesContext only exposes the ApplicationMap.
  */
-class InitFacesContext extends FacesContext {
-
-    private ExternalContext ec;
+public class InitFacesContext extends FacesContext {
+    
+    private static Logger LOGGER = FacesLogger.CONFIG.getLogger();
+    
+    private ServletContextAdapter ec;
     private UIViewRoot viewRoot;
     private FacesContext orig;
     private Map<Object,Object> attributes;
@@ -89,7 +104,30 @@ class InitFacesContext extends FacesContext {
     public InitFacesContext(ServletContext sc) {
         ec = new ServletContextAdapter(sc);
         orig = FacesContext.getCurrentInstance();
-        setCurrentInstance(this);
+        sc.setAttribute(INIT_FACES_CONTEXT_ATTR_NAME, this);
+        InitFacesContext.cleanupInitMaps(sc);
+        getThreadInitContextMap().put(Thread.currentThread(), this);
+        getInitContextServletContextMap().put(this, sc);
+    }
+    
+    public void reInitializeExternalContext(ServletContext sc) {
+        assert(Util.isUnitTestModeEnabled());
+        ec = new ServletContextAdapter(sc);
+    }
+    
+    private static final String INIT_FACES_CONTEXT_ATTR_NAME = RIConstants.FACES_PREFIX + "InitFacesContext";
+    
+    static InitFacesContext getInstance(ServletContext sc) {
+        InitFacesContext result = (InitFacesContext) sc.getAttribute(INIT_FACES_CONTEXT_ATTR_NAME);
+        if (null != result) {
+            result.callSetCurrentInstance();
+        }
+        
+        return result;
+    }
+
+    void callSetCurrentInstance() {
+        getThreadInitContextMap().put(Thread.currentThread(), this);
     }
 
     @Override
@@ -179,6 +217,7 @@ class InitFacesContext extends FacesContext {
         if (viewRoot == null) {
             viewRoot = new UIViewRoot();
             viewRoot.setLocale(Locale.getDefault());
+            viewRoot.setViewId(RIConstants.FACES_PREFIX + "xhtml");
         }
         return viewRoot;
     }
@@ -189,10 +228,30 @@ class InitFacesContext extends FacesContext {
 
     public void release() {
         setCurrentInstance(orig);
+        if (null != ec) {
+            Map<String, Object> appMap = ec.getApplicationMap();
+            if (null != appMap && appMap instanceof ApplicationMap) {
+                if (null != ((ApplicationMap)appMap).getContext()) {
+                    appMap.remove(INIT_FACES_CONTEXT_ATTR_NAME);
+                }
+            }
+            ec.release();
+        }
+        
         if (null != attributes) {
             attributes.clear();
             attributes = null;
         }
+        elContext = null;
+        if (null != viewRoot) {
+            Map viewMap = viewRoot.getViewMap(false);
+            if (null != viewMap) {
+                viewMap.clear();
+            }
+        }
+        viewRoot = null;
+        orig = null;
+
     }
 
     public void renderResponse() { }
@@ -211,18 +270,69 @@ class InitFacesContext extends FacesContext {
         this.elContext = elContext;        
     }
 
+    /**
+     * Clean up entries from the threadInitContext and initContextServletContext maps 
+     * using a ServletContext.  First remove entry(s) with matching ServletContext from
+     * initContextSerlvetContext map.  Then remove entries from threadInitContext map
+     * where the entry value(s) match the initFacesContext (associated with the ServletContext).
+     */
+    public static void cleanupInitMaps(ServletContext context) {
+        Map <Thread, InitFacesContext>threadInitContext = InitFacesContext.getThreadInitContextMap();
+        Map <InitFacesContext, ServletContext>initContextServletContext =
+            InitFacesContext.getInitContextServletContextMap();
+        Set<Map.Entry<InitFacesContext, ServletContext>> entries = initContextServletContext.entrySet();
+        for (Iterator<Map.Entry<InitFacesContext, ServletContext>> iterator1 =
+            entries.iterator(); iterator1.hasNext();) {
+            Map.Entry<InitFacesContext, ServletContext> entry1 = (Map.Entry)iterator1.next();
+            Object initContextKey = entry1.getKey();
+            Object value1 = entry1.getValue();
+            if (context == value1) {
+                initContextServletContext.remove(initContextKey);
+                Set<Map.Entry<Thread, InitFacesContext>> threadEntries = threadInitContext.entrySet();
+                for (Iterator<Map.Entry<Thread, InitFacesContext>> iterator2 =
+                    threadEntries.iterator(); iterator2.hasNext();) {
+                    Map.Entry<Thread, InitFacesContext>  entry2 = (Map.Entry)iterator2.next();
+                    Object thread = entry2.getKey();
+                    Object initContextValue = entry2.getValue();
+                    if (initContextKey == initContextValue) {
+                        threadInitContext.remove(thread);
+                    }
+                }
+            }
+        }
+    }
+
+    public void releaseCurrentInstance() {
+        Map <Thread, InitFacesContext>threadInitContext = InitFacesContext.getThreadInitContextMap();
+        threadInitContext.remove(Thread.currentThread());
+        setCurrentInstance(null);
+    }
+
     private static class ServletContextAdapter extends ExternalContext {
 
         private ServletContext servletContext = null;
         private ApplicationMap applicationMap = null;
         private InitParameterMap initMap = null;
-
+        private boolean isEnableTransitionTimeNoOpFlash = WebConfiguration.BooleanWebContextInitParameter.EnableTransitionTimeNoOpFlash.getDefaultValue();
+    
         public ServletContextAdapter(ServletContext sc) {
             this.servletContext = sc;
+            
+            Object paramValue = sc.getInitParameter(WebConfiguration.BooleanWebContextInitParameter.EnableTransitionTimeNoOpFlash.getQualifiedName());
+            if (null != paramValue) {
+                isEnableTransitionTimeNoOpFlash = Boolean.parseBoolean(paramValue.toString());
+            }
+            
         }
 
         public void dispatch(String path) throws IOException {
         }
+        
+        private void release() {
+            servletContext = null;
+            applicationMap = null;
+            initMap = null;
+        }
 
         public String encodeActionURL(String url) {
             return null;
@@ -245,6 +355,126 @@ class InitFacesContext extends FacesContext {
             return applicationMap;
         }
 
+        @Override
+        public Flash getFlash() {
+            if (isEnableTransitionTimeNoOpFlash) {
+                return new Flash() {
+                    
+                    @Override
+                    public void doPostPhaseActions(FacesContext ctx) {
+                        
+                    }
+                    
+                    @Override
+                    public void doPrePhaseActions(FacesContext ctx) {
+                        
+                    }
+                    
+                    @Override
+                    public boolean isKeepMessages() {
+                        return false;
+                    }
+                    
+                    @Override
+                    public boolean isRedirect() {
+                        return false;
+                    }
+                    
+                    @Override
+                    public void keep(String key) {
+                        
+                    }
+                    
+                    @Override
+                    public void putNow(String key, Object value) {
+                        
+                    }
+                    
+                    @Override
+                    public void setKeepMessages(boolean newValue) {
+                        
+                    }
+                    
+                    @Override
+                    public void setRedirect(boolean newValue) {
+                        
+                    }
+                    
+                    @Override
+                    public void clear() {
+                        
+                    }
+                    
+                    @Override
+                    public boolean containsKey(Object key) {
+                        return false;
+                    }
+                    
+                    @Override
+                    public boolean containsValue(Object value) {
+                        return false;
+                    }
+                    
+                    @Override
+                    public Set<Entry<String, Object>> entrySet() {
+                        return Collections.emptySet();
+                    }
+                    
+                    @Override
+                    public Object get(Object key) {
+                        return null;
+                    }
+                    
+                    @Override
+                    public boolean isEmpty() {
+                        return true;
+                    }
+                    
+                    @Override
+                    public Set<String> keySet() {
+                        return Collections.emptySet();
+                    }
+                    
+                    @Override
+                    public Object put(String key, Object value) {
+                        return null;
+                    }
+                    
+                    @Override
+                    public void putAll(Map<? extends String, ? extends Object> m) {
+                        
+                    }
+                    
+                    @Override
+                    public Object remove(Object key) {
+                        return null;
+                    }
+                    
+                    @Override
+                    public int size() {
+                        return 0;
+                    }
+                    
+                    @Override
+                    public Collection<Object> values() {
+                        return Collections.emptyList();
+                    }
+                    
+                    
+                };
+            } else {
+                return super.getFlash();
+            }
+        
+    }
+            
+            
+            
+        @Override
+        public String getApplicationContextPath() {
+            return servletContext.getContextPath();
+        }
+        
         public String getAuthType() {
             return null;
         }
@@ -442,4 +672,32 @@ class InitFacesContext extends FacesContext {
 
     } // END ServletContextAdapter
 
+    static Map getThreadInitContextMap() {
+        ConcurrentHashMap threadInitContext = null;
+        try {
+            Field threadMap = FacesContext.class.getDeclaredField("threadInitContext");
+            threadMap.setAccessible(true);
+            threadInitContext = (ConcurrentHashMap)threadMap.get(null);
+        } catch (Exception e) {
+            if (LOGGER.isLoggable(Level.FINEST)) {
+                LOGGER.log(Level.FINEST, "Unable to get (thread, init context) map", e);
+            }
+        }
+        return threadInitContext;
+    }
+
+    static Map getInitContextServletContextMap() {
+        ConcurrentHashMap initContextServletContext = null;
+        try {
+            Field initContextMap = FacesContext.class.getDeclaredField("initContextServletContext");
+            initContextMap.setAccessible(true);
+            initContextServletContext = (ConcurrentHashMap)initContextMap.get(null);
+        } catch (Exception e) {
+            if (LOGGER.isLoggable(Level.FINEST)) {
+                LOGGER.log(Level.FINEST, "Unable to get (init context, servlet context) map", e);
+            }
+        }
+        return initContextServletContext;
+    }
+
 }
diff --git a/jsf-ri/src/main/java/com/sun/faces/config/JavaClassScanningAnnotationScanner.java b/jsf-ri/src/main/java/com/sun/faces/config/JavaClassScanningAnnotationScanner.java
new file mode 100644
index 0000000..9027b13
--- /dev/null
+++ b/jsf-ri/src/main/java/com/sun/faces/config/JavaClassScanningAnnotationScanner.java
@@ -0,0 +1,727 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.config;
+
+import com.sun.faces.RIConstants;
+import java.net.URI;
+import com.sun.faces.util.FacesLogger;
+
+import javax.servlet.ServletContext;
+import java.io.IOException;
+import java.lang.annotation.Annotation;
+import java.net.JarURLConnection;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.nio.ByteBuffer;
+import java.nio.channels.Channels;
+import java.nio.channels.ReadableByteChannel;
+import java.util.*;
+import java.util.jar.JarEntry;
+import java.util.jar.JarFile;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+
+/**
+ * This class is responsible for scanning the class file bytes of
+ * classes contained within the web application for any of the known
+ * Faces configuration Annotations:
+ * <ul>
+ *  <li>javax.faces.component.FacesBehavior</li>
+ *  <li>javax.faces.render.FacesBehaviorRenderer</li>
+ *  <li>javax.faces.component.FacesComponent</li>
+ *  <li>javax.faces.convert.FacesConverter</li>
+ *  <li>javax.faces.validator.FacesValidator</li>
+ *  <li>javax.faces.render.FacesRenderer</li>
+ *  <li>javax.faces.bean.ManagedBean</li>
+ *  <li>javax.faces.event.NamedEvent</li>
+ * </ul>
+ */
+public class JavaClassScanningAnnotationScanner extends AnnotationScanner {
+
+    private static final Logger LOGGER = FacesLogger.CONFIG.getLogger();
+
+    // Matcher.group(1) == the URL to the JAR file itself.
+    // Matcher.group(2) == the name of the JAR.
+    private static final Pattern JAR_PATTERN = Pattern.compile("(.*/(\\S*\\.jar)).*");
+
+    private static final String WEB_INF_CLASSES = "/WEB-INF/classes/";
+
+    private ClassFile classFileScanner;
+
+    // ------------------------------------------------------------ Constructors
+
+
+    /**
+     * Creates a new <code>AnnotationScanner</code> instance.
+     *
+     * @param sc the <code>ServletContext</code> for the application to be
+     *  scanned
+     */
+    public JavaClassScanningAnnotationScanner(ServletContext sc) {
+        super(sc);
+
+        classFileScanner = new ClassFile();
+        
+
+
+    }
+
+
+    // ---------------------------------------------------------- Public Methods
+
+
+    /**
+     * @return a <code>Map</code> of classes mapped to a specific annotation type.
+     *  If no annotations are present, or the application is considered
+     * <code>metadata-complete</code> <code>null</code> will be returned.
+     */
+    @Override
+    public Map<Class<? extends Annotation>,Set<Class<?>>> getAnnotatedClasses(Set<URI> uris) {
+
+        Set<String> classList = new HashSet<String>();
+
+        processWebInfClasses(sc, classList);
+        processClasspath(uris, classList);
+        processScripts(classList);
+
+        return processClassList(classList);
+    }
+
+
+    // --------------------------------------------------------- Private Methods
+
+    /**
+     * Scans for annotations on classes within JAR files on the classpath.
+     *
+     * @param uris to a faces-config documents that allow us to refer to
+     *  unique jar files on the classpath
+     * @param classList the <code>Set</code> to which annotated classes
+     *  will be added
+     */
+    private void processClasspath(Set<URI> uris, Set<String> classList) {
+
+        for (URI uri : uris) {
+            try {
+                Matcher m = JAR_PATTERN.matcher(uri.toString());
+                if (m.matches()) {
+                    String jarName = m.group(2);
+                    if (!processJar(jarName)) {
+                        continue;
+                    }
+                    StringBuilder sb = new StringBuilder(32);
+                    String us = m.group(1);
+                    if (!us.startsWith("jar:")) {
+                        sb.append("jar:");
+                    }
+                    if (us.startsWith("zip:")) {
+                    	sb.append("file:").append(us.substring(4));
+                    } else if (us.startsWith("bundle:")) {
+                    	sb.append("file:").append(us.substring(7));
+                    } else {
+                    	sb.append(us);
+                    }
+                    sb.append("!/");
+                    URL u = new URL(sb.toString());
+                    JarFile jarFile =
+                          ((JarURLConnection) u.openConnection()).getJarFile();
+                    processJarEntries(jarFile,
+                                      ((getClasspathPackages() != null)
+                                       ? getClasspathPackages().get(jarName)
+                                       : null),
+                                      classList);
+                } else {
+                    if (LOGGER.isLoggable(Level.FINE)) {
+                        LOGGER.fine("Unable to match URL to a jar file: " + uri
+                              .toString());
+                    }
+                }
+            } catch (Exception e) {
+                if (LOGGER.isLoggable(Level.SEVERE)) {
+                    LOGGER.log(Level.SEVERE,
+                               "Unable to process annotations for url, {0}.  Reason: "
+                               + e.toString(),
+                               new Object[]{uri});
+                    LOGGER.log(Level.SEVERE, "", e);
+                }
+            }
+        }
+
+    }
+
+
+    /**
+     * Called by {@link ConstantPoolInfo} when processing the bytes of the
+     * class file.
+     *
+     * @param value the String value as provided from {@link ConstantPoolInfo}
+     * @return <code>true</code> if the value is one of the known
+     *  Faces annotations, otherwise <code>false</code>
+     */
+    private static boolean isAnnotation(String value) {
+
+        return FACES_ANNOTATIONS.contains(value);
+
+    }
+
+
+    /**
+     * Process the entries in the provided <code>JarFile</code> looking for
+     * class files that may be annotated with any of the Faces configuration
+     * annotations.
+     *
+     * @param jarFile the JAR to process
+     * @param allowedPackages the packages that should be scanned within the jar
+     * @param classList the <code>Set</code> to which annotated classes
+     *  will be added
+     */
+    private void processJarEntries(JarFile jarFile, String[] allowedPackages, Set<String> classList) {
+
+        if (LOGGER.isLoggable(Level.FINE)) {
+            LOGGER.log(Level.FINE,
+                        "Scanning JAR {0} for annotations...",
+                        jarFile.getName());
+        }
+
+        for (Enumeration<JarEntry> entries = jarFile.entries(); entries.hasMoreElements(); ) {
+            JarEntry entry = entries.nextElement();
+            if (entry.isDirectory()) {
+                continue;
+            }
+
+            String name = entry.getName();
+            if (name.startsWith("META-INF")) {
+                continue;
+            }
+
+            if (name.endsWith(".class")) {
+                String cname = convertToClassName(name);
+                if (!processClass(cname, allowedPackages)) {
+                    continue;
+                }
+                ReadableByteChannel channel = null;
+                try {
+                    channel = Channels.newChannel(jarFile.getInputStream(entry));
+                    if (classFileScanner.containsAnnotation(channel)) {
+                        if (LOGGER.isLoggable(Level.FINE)) {
+                            LOGGER.log(Level.FINE,
+                                       "[JAR] Found annotated Class: {0}",
+                                       cname);
+                        }
+                        classList.add(cname);
+                    }
+                } catch (IOException e) {
+                    if (LOGGER.isLoggable(Level.SEVERE)) {
+                        LOGGER.log(Level.SEVERE,
+                                   "Unexpected exception scanning JAR {0} for annotations",
+                                   jarFile.getName());
+                        LOGGER.log(Level.SEVERE,
+                                   e.toString(),
+                                   e);
+                    }
+                } finally {
+                    if (channel != null) {
+                        try {
+                            channel.close();
+                        } catch (IOException ignored) {
+                            if (LOGGER.isLoggable(Level.FINE)) {
+                                LOGGER.log(Level.FINE,
+                                           ignored.toString(),
+                                           ignored);
+                            }
+                        }
+                    }
+                }
+            }
+        }
+
+    }
+
+
+    /**
+     * Scan <code>WEB-INF/classes</code> for classes that may be annotated
+     * with any of the Faces configuration annotations.
+     *
+     * @param sc the <code>ServletContext</code> for the application being
+     *  scanned
+     * @param classList the <code>Set</code> to which annotated classes
+     *  will be added
+     */
+    private void processWebInfClasses(ServletContext sc, Set<String> classList) {
+
+        processWebInfClasses(sc, WEB_INF_CLASSES, classList);
+
+    }
+
+
+    /**
+     * Scan <code>WEB-INF/classes</code> for classes that may be annotated
+     * with any of the Faces configuration annotations.
+     *
+     * @param sc the <code>ServletContext</code> for the application being
+     *  scanned
+     * @param path the path to start the scan from
+     * @param classList the <code>Set</code> to which annotated classes
+     *  will be added
+     */
+    private void processWebInfClasses(ServletContext sc,
+                                      String path,
+                                      Set<String> classList) {
+
+        //noinspection unchecked
+        Set<String> paths = sc.getResourcePaths(path);
+        processWebInfClasses(sc, paths, classList);
+
+    }
+
+
+    /**
+     * Scan <code>WEB-INF/classes</code> for classes that may be annotated
+     * with any of the Faces configuration annotations.
+     *
+     * @param sc the <code>ServletContext</code> for the application being
+     *  scanned
+     * @param paths a set of paths to process
+     * @param classList the <code>Set</code> to which annotated classes
+     *  will be added
+     */
+    private void processWebInfClasses(ServletContext sc,
+                                      Set<String> paths,
+                                      Set<String> classList) {
+
+        if (paths != null && !paths.isEmpty()) {
+            for (String pathElement : paths) {
+                if (pathElement.endsWith("/")) {
+                    processWebInfClasses(sc, pathElement, classList);
+                } else {
+                    if (pathElement.endsWith(".class")) {
+                        String cname = convertToClassName(WEB_INF_CLASSES,
+                                                              pathElement);
+                        if (!processClass(cname)) {
+                            continue;
+                        }
+                        if (containsAnnotation(sc, pathElement)) {
+                            if (LOGGER.isLoggable(Level.FINE)) {
+                                LOGGER.log(Level.FINE,
+                                           "[WEB-INF/classes] Found annotated Class: {0}",
+                                           cname);
+                            }
+                            classList.add(cname);
+                        }
+                    }
+                }
+            }
+        }
+
+    }
+
+
+    /**
+     * @param sc the <code>ServletContext</code> for the application being
+     *  scanned
+     * @param pathElement the full path to the classfile to be scanned
+     * @return <code>true</code> if the class contains one of the Faces
+     *  configuration annotations
+     */
+    private boolean containsAnnotation(ServletContext sc, String pathElement) {
+
+        ReadableByteChannel channel = null;
+        try {
+            URL url = sc.getResource(pathElement);
+            channel = Channels.newChannel(url.openStream());
+            return classFileScanner.containsAnnotation(channel);
+        } catch (MalformedURLException e) {
+            if (LOGGER.isLoggable(Level.SEVERE)) {
+                LOGGER.log(Level.SEVERE,
+                           e.toString(),
+                           e);
+            }
+        } catch (IOException ioe) {
+            if (LOGGER.isLoggable(Level.SEVERE)) {
+                LOGGER.log(Level.SEVERE,
+                           ioe.toString(),
+                           ioe);
+            }
+        } finally {
+            if (channel != null) {
+                try {
+                    channel.close();
+                } catch (IOException ignored) {
+                    if (LOGGER.isLoggable(Level.FINE)) {
+                        LOGGER.log(Level.FINE,
+                                   ignored.toString(),
+                                   ignored);
+                    }
+                }
+            }
+        }
+        return false;
+
+    }
+
+
+    /**
+     * Utility method for converting paths to fully qualified class names.
+     *
+     * @param pathEntry a path entry to a class file
+     *
+     * @return a fully qualfied class name using dot notation
+     */
+    private String convertToClassName(String pathEntry) {
+
+        return convertToClassName(null, pathEntry);
+
+    }
+
+
+    /**
+     * Utility method for converting paths to fully qualified class names.
+     *
+     * @param prefix the prefix that should be stripped from the class name
+     *  before converting it
+     * @param pathEntry a path to a class file
+     *
+     * @return a fully qualfied class name using dot notation
+     */
+    private String convertToClassName(String prefix, String pathEntry) {
+
+        String className = pathEntry;
+
+        if (prefix != null) {
+            // remove the prefix
+            className = className.substring(prefix.length());
+        }
+        // remove the .class suffix
+        className = className.substring(0, (className.length() - 6));
+
+        return className.replace('/', '.');
+
+    }
+
+
+
+
+    // ----------------------------------------------------------- Inner Classes
+
+
+    /**
+     * This class is encapsulating binary .class file information as defined at
+     * http://java.sun.com/docs/books/vmspec/2nd-edition/html/ClassFile.doc.html
+     * <p/>
+     * This is used by the annotation frameworks to quickly scan .class files
+     * for the presence of annotations. This avoid the annotation framework
+     * having to load each .class file in the class loader.
+     * <p/>
+     * Taken from the GlassFish V2 source base.
+     */
+    @SuppressWarnings({"UnusedDeclaration"})
+    private static final class ClassFile {
+
+        private static final int magic = 0xCAFEBABE;
+
+        public static final int ACC_PUBLIC = 0x1;
+        public static final int ACC_PRIVATE = 0x2;
+        public static final int ACC_PROTECTED = 0x4;
+        public static final int ACC_STATIC = 0x8;
+        public static final int ACC_FINAL = 0x10;
+        public static final int ACC_SYNCHRONIZED = 0x20;
+        public static final int ACC_THREADSAFE = 0x40;
+        public static final int ACC_TRANSIENT = 0x80;
+        public static final int ACC_NATIVE = 0x100;
+        public static final int ACC_INTERFACE = 0x200;
+        public static final int ACC_ABSTRACT = 0x400;
+
+        public short majorVersion;
+        public short minorVersion;
+        public ConstantPoolInfo constantPool[];
+        public short accessFlags;
+        public ConstantPoolInfo thisClass;
+        public ConstantPoolInfo superClass;
+        public ConstantPoolInfo interfaces[];
+
+        /**
+         * bunch of stuff I really don't care too much for now.
+         * <p/>
+         * FieldInfo           fields[]; MethodInfo          methods[];
+         * AttributeInfo       attributes[];
+         */
+
+        ByteBuffer header;
+        ConstantPoolInfo constantPoolInfo = new ConstantPoolInfo();
+
+        // ------------------------------------------------------------ Constructors
+
+
+        /**
+         * Creates a new instance of ClassFile
+         */
+        public ClassFile() {
+            header = ByteBuffer.allocate(12000);
+        }
+
+        // ---------------------------------------------------------- Public Methods
+
+
+        public void setConstantPoolInfo(ConstantPoolInfo poolInfo) {
+            constantPoolInfo = poolInfo;
+        }
+
+
+        /**
+         * Read the input channel and initialize instance data structure.
+         *
+         * @param in a <code>ReadableByteChannel</code> that provides the bytes
+         *  of the classfile
+         *
+         * @return <code>true</code> if the bytes representing this classfile include
+         *  one of the annotations we're looking for.
+         *
+         * @throws IOException if an I/O error occurs while reading the class
+         */
+        public boolean containsAnnotation(ReadableByteChannel in)
+              throws IOException {
+
+            /**
+             * this is the .class file layout
+             *
+             ClassFile {
+             u4 magic;
+             u2 minor_version;
+             u2 major_version;
+             u2 constant_pool_count;
+             cp_info constant_pool[constant_pool_count-1];
+             u2 access_flags;
+             u2 this_class;
+             u2 super_class;
+             u2 interfaces_count;
+             u2 interfaces[interfaces_count];
+             u2 fields_count;
+             field_info fields[fields_count];
+             u2 methods_count;
+             method_info methods[methods_count];
+             u2 attributes_count;
+             attribute_info attributes[attributes_count];
+             }
+             **/
+            header.clear();
+            long read = (long) in.read(header);
+            if (read == -1) {
+                return false;
+            }
+            header.rewind();
+
+            if (header.getInt() != magic) {
+                return false;
+            }
+
+            minorVersion = header.getShort();
+            majorVersion = header.getShort();
+            int constantPoolSize = header.getShort();
+
+            return constantPoolInfo
+                  .containsAnnotation(constantPoolSize, header, in);
+
+        }
+
+    } // END ClassFile
+
+
+    private static class ConstantPoolInfo {
+
+        private static final Logger LOGGER = FacesLogger.CONFIG.getLogger();
+
+        public static final byte CLASS = 7;
+        public static final int FIELDREF = 9;
+        public static final int METHODREF = 10;
+        public static final int STRING = 8;
+        public static final int INTEGER = 3;
+        public static final int FLOAT = 4;
+        public static final int LONG = 5;
+        public static final int DOUBLE = 6;
+        public static final int INTERFACEMETHODREF = 11;
+        public static final int NAMEANDTYPE = 12;
+        public static final int ASCIZ = 1;
+        public static final int UNICODE = 2;
+
+        byte[] bytes = new byte[Short.MAX_VALUE];
+
+
+        // ------------------------------------------------------------ Constructors
+
+
+        /**
+         * Creates a new instance of ConstantPoolInfo
+         */
+        public ConstantPoolInfo() {
+        }
+
+
+        // ---------------------------------------------------------- Public Methods
+
+
+        /**
+         * Read the input channel and initialize instance data structure.
+         *
+         * @param constantPoolSize the constant pool size for this class file
+         * @param buffer the ByteBuffer used to store the bytes from <code>in</code>
+         * @param in ReadableByteChannel from which the class file bytes are
+         *  read
+         *
+         * @return <code>true</code> if the bytes representing this classfile include
+         *  one of the annotations we're looking for.
+         *
+         * @throws IOException if an I/O error occurs while reading the class
+         */
+        public boolean containsAnnotation(int constantPoolSize,
+                                          final ByteBuffer buffer,
+                                          final ReadableByteChannel in)
+        throws IOException {
+
+            for (int i = 1; i < constantPoolSize; i++) {
+                if (!refill(buffer, in, 1)) {
+                    return true;
+                }
+                final byte type = buffer.get();
+                switch (type) {
+                    case ASCIZ:
+                    case UNICODE:
+                        if (!refill(buffer, in, 2)) {
+                            return true;
+                        }
+                        final short length = buffer.getShort();
+                        if (length < 0 || length > Short.MAX_VALUE) {
+                            return true;
+                        }
+                        if (length > buffer.capacity()) {
+                            return true;
+                        }
+                        if (!refill(buffer, in, length)) {
+                            return true;
+                        }
+                        buffer.get(bytes, 0, length);
+                        /* to speed up the process, I am comparing the first few
+                         * bytes to Ljava since all annotations are in the java
+                         * package, the reduces dramatically the number or String
+                         * construction
+                         */
+                        if (bytes[0] == 'L' && bytes[1] == 'j' && bytes[2] == 'a') {
+                            String stringValue;
+                            if (type == ASCIZ) {
+                                stringValue =
+                                      new String(bytes, 0, length, "US-ASCII");
+                            } else {
+                                stringValue = new String(bytes, 0, length, RIConstants.CHAR_ENCODING);
+                            }
+                            if (JavaClassScanningAnnotationScanner.isAnnotation(stringValue)) {
+                                return true;
+                            }
+                        }
+                        break;
+                    case CLASS:
+                    case STRING:
+                        if (!refill(buffer, in, 2)) {
+                            return true;
+                        }
+                        buffer.getShort();
+                        break;
+                    case FIELDREF:
+                    case METHODREF:
+                    case INTERFACEMETHODREF:
+                    case INTEGER:
+                    case FLOAT:
+                        if (!refill(buffer, in, 4)) {
+                            return true;
+                        }
+                        buffer.position(buffer.position() + 4);
+                        break;
+                    case LONG:
+                    case DOUBLE:
+                        if (!refill(buffer, in, 8)) {
+                            return true;
+                        }
+                        buffer.position(buffer.position() + 8);
+                        // for long, and double, they use 2 constantPool
+                        i++;
+                        break;
+                    case NAMEANDTYPE:
+                        if (!refill(buffer, in, 4)) {
+                            return true;
+                        }
+                        buffer.getShort();
+                        buffer.getShort();
+                        break;
+                    default:
+                        if (LOGGER.isLoggable(Level.SEVERE)) {
+                            LOGGER.log(Level.SEVERE,
+                                       "Unknow type constant pool {0} at position {1}",
+                                       new Object[]{type, i});
+                        }
+                        break;
+                }
+            }
+            return false;
+        }
+
+
+        // ----------------------------------------------------- Private Methods
+
+        private boolean refill(ByteBuffer buffer,
+                               ReadableByteChannel in,
+                               int requestLen) throws IOException {
+            
+            int cap = buffer.capacity();
+            if (buffer.position() + requestLen > cap) {
+                buffer.compact();
+                int read = in.read(buffer);
+                if (read < 0) {
+                    return false;
+                }
+                buffer.rewind();
+            }
+            return true;
+
+        }
+
+    } // END ConstantPoolInfo
+
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/config/Verifier.java b/jsf-ri/src/main/java/com/sun/faces/config/Verifier.java
index da11707..09d0454 100644
--- a/jsf-ri/src/main/java/com/sun/faces/config/Verifier.java
+++ b/jsf-ri/src/main/java/com/sun/faces/config/Verifier.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/config/WebConfiguration.java b/jsf-ri/src/main/java/com/sun/faces/config/WebConfiguration.java
index c83d32a..1255378 100644
--- a/jsf-ri/src/main/java/com/sun/faces/config/WebConfiguration.java
+++ b/jsf-ri/src/main/java/com/sun/faces/config/WebConfiguration.java
@@ -1,1391 +1,1659 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- *
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- *
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- *
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- *
- * Contributor(s):
- *
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package com.sun.faces.config;
-
-import java.util.ArrayList;
-import java.util.EnumMap;
-import java.util.Enumeration;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-import java.util.regex.Pattern;
-
-import javax.faces.application.ResourceHandler;
-import javax.faces.application.ViewHandler;
-import javax.faces.application.StateManager;
-import javax.faces.context.ExternalContext;
-import javax.faces.context.FacesContext;
-import javax.naming.Context;
-import javax.naming.InitialContext;
-import javax.naming.NamingException;
-import javax.servlet.ServletContext;
-
-import com.sun.faces.util.FacesLogger;
-import com.sun.faces.util.Util;
-
-import java.util.HashMap;
-import javax.faces.component.UIInput;
-import javax.faces.validator.BeanValidator;
-import javax.faces.view.facelets.ResourceResolver;
-
-
-/** Class Documentation */
-public class WebConfiguration {
-
-
-    // Log instance for this class
-    private static final Logger LOGGER = FacesLogger.CONFIG.getLogger();
-
-    // A Simple regular expression of allowable boolean values
-    private static final Pattern ALLOWABLE_BOOLEANS =
-          Pattern.compile("true|false");
-
-    // Key under which we store our WebConfiguration instance.
-    private static final String WEB_CONFIG_KEY =
-          "com.sun.faces.config.WebConfiguration";
-
-    // Logging level.  Defaults to FINE
-    private Level loggingLevel = Level.FINE;
-
-    private Map<BooleanWebContextInitParameter, Boolean> booleanContextParameters =
-          new EnumMap<BooleanWebContextInitParameter, Boolean>(BooleanWebContextInitParameter.class);
-
-    private Map<WebContextInitParameter, String> contextParameters =
-          new EnumMap<WebContextInitParameter, String>(WebContextInitParameter.class);
-
-    private Map<WebEnvironmentEntry, String> envEntries =
-          new EnumMap<WebEnvironmentEntry, String>(WebEnvironmentEntry.class);
-
-    private Map<WebContextInitParameter, String []> cachedListParams;
-
-    private Set<String> setParams = new HashSet<String>();
-
-    private ServletContext servletContext;
-
-    private ArrayList<DeferredLoggingAction> deferredLoggingActions;
-
-
-    // ------------------------------------------------------------ Constructors
-
-
-    private WebConfiguration(ServletContext servletContext) {
-
-        this.servletContext = servletContext;
-
-        String contextName = getServletContextName();
-
-        initSetList(servletContext);
-        processBooleanParameters(servletContext, contextName);
-        processInitParameters(servletContext, contextName);
-        if (canProcessJndiEntries()) {
-            processJndiEntries(contextName);
-        }
-        
-        // build the cache of list type params
-        cachedListParams = new HashMap<WebContextInitParameter, String []>(3);
-        getOptionValue(WebContextInitParameter.ResourceExcludes, " ");
-        getOptionValue(WebContextInitParameter.DefaultSuffix, " ");
-        getOptionValue(WebContextInitParameter.FaceletsViewMappings, ";");
-
-    }
-
-
-    // ---------------------------------------------------------- Public Methods
-
-
-    /**
-     * Return the WebConfiguration instance for this application passing
-     * the result of FacesContext.getCurrentInstance().getExternalContext()
-     * to {@link #getInstance(javax.faces.context.ExternalContext)}.
-     * @return the WebConfiguration for this application or <code>null</code>
-     *  if no FacesContext is available.
-     */
-    public static WebConfiguration getInstance() {
-
-        FacesContext facesContext = FacesContext.getCurrentInstance();
-        return getInstance(facesContext.getExternalContext());
-
-    }
-
-
-    /**
-     * Return the WebConfiguration instance for this application.
-     * @param extContext the ExternalContext for this request
-     * @return the WebConfiguration for this application
-     */
-    public static WebConfiguration getInstance(ExternalContext extContext) {
-
-        WebConfiguration config = (WebConfiguration) extContext.getApplicationMap()
-              .get(WEB_CONFIG_KEY);
-        if (config == null) {
-            return getInstance((ServletContext) extContext.getContext());
-        } else {
-            return config;
-        }
-
-    }
-
-
-    /**
-     * Return the WebConfiguration instance for this application.
-     * @param servletContext the ServletContext
-     * @return the WebConfiguration for this application or <code>null</code>
-     *  if no WebConfiguration could be located
-     */
-    public static WebConfiguration getInstance(ServletContext servletContext) {
-
-        WebConfiguration webConfig = (WebConfiguration)
-              servletContext.getAttribute(WEB_CONFIG_KEY);
-
-        if (webConfig == null) {
-            webConfig = new WebConfiguration(servletContext);
-            servletContext.setAttribute(WEB_CONFIG_KEY, webConfig);
-        }
-        return webConfig;
-
-    }
-
-
-    /**
-     * @return The <code>ServletContext</code> originally used to construct
-     * this WebConfiguration instance
-     */
-    public ServletContext getServletContext() {
-
-        return servletContext;
-
-    }
-
-
-    /**
-     * Obtain the value of the specified boolean parameter
-     * @param param the parameter of interest
-     * @return the value of the specified boolean parameter
-     */
-    public boolean isOptionEnabled(BooleanWebContextInitParameter param) {
-
-        if (booleanContextParameters.get(param) != null) {
-            return booleanContextParameters.get(param);
-        } else {
-            return param.getDefaultValue();
-        }
-
-    }
-
-
-    /**
-     * Obtain the value of the specified parameter
-     * @param param the parameter of interest
-     * @return the value of the specified parameter
-     */
-    public String getOptionValue(WebContextInitParameter param) {
-        String result = contextParameters.get(param);
-        
-        if (null == result) {
-            WebContextInitParameter alternate = param.getAlternate();
-            if (null != alternate) {
-                result = contextParameters.get(alternate);
-            }
-        }
-
-        return result;
-
-    }
-    
-    public String[] getOptionValue(WebContextInitParameter param, String sep) {
-        String [] result;
-        
-        assert(null != cachedListParams);
-        if (null == (result = cachedListParams.get(param))) {
-            String value = getOptionValue(param);
-            if (null == value) {
-                result = new String[0];
-            } else {
-                result = Util.split(value, sep);
-            }
-            cachedListParams.put(param, result);
-        }
-        
-        return result;
-    }
-
-
-    /**
-     * Obtain the value of the specified env-entry
-     * @param entry the env-entry of interest
-     * @return the value of the specified env-entry
-     */
-    public String getEnvironmentEntry(WebEnvironmentEntry entry) {
-
-        return envEntries.get(entry);
-
-    }
-
-
-    /**
-     * @param param the init parameter of interest
-     * @return <code>true</code> if the parameter was explicitly set,
-     *  otherwise, <code>false</code>
-     */
-    public boolean isSet(WebContextInitParameter param) {
-
-        return isSet(param.getQualifiedName());
-
-    }
-
-
-    /**
-     * @param param the init parameter of interest
-     * @return <code>true</code> if the parameter was explicitly set,
-     *  otherwise, <code>false</code>
-     */
-    public boolean isSet(BooleanWebContextInitParameter param) {
-
-        return isSet(param.getQualifiedName());
-
-    }
-
-
-    /**
-     * @return the name of this application
-     */
-    public String getServletContextName() {
-
-        if (servletContext.getMajorVersion() == 2
-            && servletContext.getMinorVersion() <= 4) {
-            return servletContext.getServletContextName();
-        } else {
-            return servletContext.getContextPath();
-        }
-
-    }
-
-
-    public void overrideContextInitParameter(BooleanWebContextInitParameter param, boolean value) {
-
-        if (param == null) {
-            return;
-        }
-        boolean oldVal = booleanContextParameters.put(param, value);
-        if (LOGGER.isLoggable(Level.FINE) && oldVal != value) {
-            LOGGER.log(Level.FINE,
-                       "Overriding init parameter {0}.  Changing from {1} to {2}.",
-                       new Object[] { param.getQualifiedName(), oldVal, value});
-        }
-
-    }
-
-
-    public void overrideContextInitParameter(WebContextInitParameter param, String value) {
-
-        if (param == null || value == null || value.length() == 0) {
-            return;
-        }
-        value = value.trim();
-        String oldVal = contextParameters.put(param, value);
-        cachedListParams.remove(param);
-        if (oldVal != null) {
-            if (LOGGER.isLoggable(Level.FINE) && !(oldVal.equals(value))) {
-                LOGGER.log(Level.FINE,
-                           "Overriding init parameter {0}.  Changing from {1} to {2}.",
-                           new Object[]{param.getQualifiedName(),
-                                        oldVal,
-                                        value});
-            }
-        }
-
-
-    }
-
-
-    public void doLoggingActions() {
-
-        if (deferredLoggingActions != null) {
-            for (DeferredLoggingAction loggingAction : deferredLoggingActions) {
-                loggingAction.log();
-            }
-        }
-
-    }
-
-
-    // ------------------------------------------------- Package Private Methods
-
-
-    static void clear(ServletContext servletContext) {
-
-        servletContext.removeAttribute(WEB_CONFIG_KEY);
-
-    }
-
-
-    // --------------------------------------------------------- Private Methods
-
-
-    /**
-     * <p>Is the configured value valid against the default boolean pattern.</p>
-     * @param param the boolean parameter
-     * @param value the configured value
-     * @return <code>true</code> if the value is valid,
-     *  otherwise <code>false</code>
-     */
-    private boolean isValueValid(BooleanWebContextInitParameter param,
-                                 String value) {
-
-        if (!ALLOWABLE_BOOLEANS.matcher(value).matches()) {
-            if (LOGGER.isLoggable(Level.WARNING)) {
-                LOGGER.log(Level.WARNING,
-                           "jsf.config.webconfig.boolconfig.invalidvalue",
-                           new Object[]{
-                                 value,
-                                 param.getQualifiedName(),
-                                 "true|false"
-                           });
-            }
-            return false;
-        }
-
-        return true;
-
-    }
-
-
-    /**
-     * <p>Process all boolean context initialization parameters.</p>
-     * @param servletContext the ServletContext of interest
-     * @param contextName the context name
-     */
-    private void processBooleanParameters(ServletContext servletContext,
-                                          String contextName) {
-
-        // process boolean contxt parameters
-        for (BooleanWebContextInitParameter param : BooleanWebContextInitParameter
-              .values()) {
-            String strValue =
-                  servletContext.getInitParameter(param.getQualifiedName());
-            boolean value;
-
-            if (strValue != null && strValue.length() > 0 && param.isDeprecated()) {
-                BooleanWebContextInitParameter alternate = param.getAlternate();
-                if (LOGGER.isLoggable(Level.WARNING)) {
-                    if (alternate != null) {
-                        queueLoggingAction(new DeferredBooleanParameterLoggingAction(
-                              param,
-                              Level.WARNING,
-                              "jsf.config.webconfig.param.deprecated",
-                              new Object[]{
-                                    contextName,
-                                    param.getQualifiedName(),
-                                    alternate.getQualifiedName()}));
-
-                    } else {
-                        queueLoggingAction(new DeferredBooleanParameterLoggingAction(
-                              param,
-                              Level.WARNING,
-                              "jsf.config.webconfig.param.deprecated.no_replacement",
-                              new Object[]{
-                                    contextName,
-                                    param.getQualifiedName()}));
-
-                    }
-                }
-
-                if (alternate != null) {
-                    if (isValueValid(param, strValue)) {
-                        value = Boolean.valueOf(strValue);
-                    } else {
-                        value = param.getDefaultValue();
-                    }
-
-                    if (LOGGER.isLoggable(Level.INFO) && alternate != null) {
-                        queueLoggingAction(new DeferredBooleanParameterLoggingAction(
-                              param,
-                              Level.INFO,
-                              ((value)
-                               ? "jsf.config.webconfig.configinfo.reset.enabled"
-                               : "jsf.config.webconfig.configinfo.reset.disabled"),
-                              new Object[]{
-                                    contextName,
-                                    alternate.getQualifiedName()}));
-                    }
-
-                    booleanContextParameters.put(alternate, value);
-                }
-                continue;
-            }
-
-            if (!param.isDeprecated()) {
-                if (strValue == null) {
-                    value = param.getDefaultValue();
-                } else {
-                    if (isValueValid(param, strValue)) {
-                        value = Boolean.valueOf(strValue);
-                    } else {
-                        value = param.getDefaultValue();
-                    }
-                }
-
-                // first param processed should be
-                // com.sun.faces.displayConfiguration
-                if (BooleanWebContextInitParameter.DisplayConfiguration.equals(param) && value) {
-                    loggingLevel = Level.INFO;
-                }
-
-                if (LOGGER.isLoggable(loggingLevel)) {
-                    LOGGER.log(loggingLevel,
-                               ((value)
-                                ? "jsf.config.webconfig.boolconfiginfo.enabled"
-                                : "jsf.config.webconfig.boolconfiginfo.disabled"),
-                               new Object[]{contextName,
-                                            param.getQualifiedName()});
-                }
-
-                booleanContextParameters.put(param, value);
-            }
-
-        }
-
-    }
-
-
-    /**
-     * Adds all com.sun.faces init parameter names to a list.  This allows
-     * callers to determine if a parameter was explicitly set.
-     * @param servletContext the ServletContext of interest
-     */
-    private void initSetList(ServletContext servletContext) {
-
-        for (Enumeration e = servletContext.getInitParameterNames();
-              e.hasMoreElements(); ) {
-            String name = e.nextElement().toString();
-            if (name.startsWith("com.sun.faces") ||
-                  name.startsWith("javax.faces")) {
-                setParams.add(name);
-            }
-        }
-
-    }
-
-
-    /**
-     * @param name the param name
-     * @return <code>true</code> if the name was explicitly specified
-     */
-    private boolean isSet(String name) {
-
-        return setParams.contains(name);
-
-    }
-
-
-    /**
-     * <p>Process all non-boolean context initialization parameters.</p>
-     * @param servletContext the ServletContext of interest
-     * @param contextName the context name
-     */
-    private void processInitParameters(ServletContext servletContext,
-                                       String contextName) {
-
-        for (WebContextInitParameter param : WebContextInitParameter.values()) {
-            String value =
-                  servletContext.getInitParameter(param.getQualifiedName());
-
-            if (value != null && value.length() > 0 && param.isDeprecated()) {
-                WebContextInitParameter alternate = param.getAlternate();
-                DeprecationLoggingStrategy strategy = param.getDeprecationLoggingStrategy();
-                if (strategy == null || strategy.shouldBeLogged(this)) {
-                    if (LOGGER.isLoggable(Level.WARNING)) {
-                        if (alternate != null) {
-                            queueLoggingAction(new DeferredParameterLoggingAction(param, Level.WARNING,
-                                       "jsf.config.webconfig.param.deprecated",
-                                       new Object[]{
-                                             contextName,
-                                             param.getQualifiedName(),
-                                             alternate.getQualifiedName()}));
-
-                        } else {
-                            queueLoggingAction(new DeferredParameterLoggingAction(
-                                  param,
-                                  Level.WARNING,
-                                  "jsf.config.webconfig.param.deprecated.no_replacement",
-                                  new Object[]{
-                                        contextName,
-                                        param.getQualifiedName()}));
-                        }
-                    }
-                }
-
-                if (alternate != null) {
-                    queueLoggingAction(
-                          new DeferredParameterLoggingAction(param,
-                                                             Level.INFO,
-                                                             "jsf.config.webconfig.configinfo.reset",
-                                                             new Object[]{
-                                                                    contextName,
-                                                                    alternate.getQualifiedName(),
-                                                                    value}));
-
-                    contextParameters.put(alternate, value);
-                }
-                continue;
-            }
-
-            if ((value == null || value.length() == 0) && !param.isDeprecated()) {
-                value = param.getDefaultValue();
-            }
-            if (value == null || value.length() == 0) {
-                continue;
-            }
-
-            if (value.length() > 0) {
-                if (LOGGER.isLoggable(loggingLevel)) {
-                    LOGGER.log(loggingLevel,
-                               "jsf.config.webconfig.configinfo",
-                               new Object[]{contextName,
-                                            param.getQualifiedName(),
-                                            value});
-
-                }
-                contextParameters.put(param, value);
-            } else {
-                if (LOGGER.isLoggable(loggingLevel)) {
-                    LOGGER.log(loggingLevel,
-                               "jsf.config.webconfig.option.notconfigured",
-                               new Object[]{contextName,
-                                            param.getQualifiedName()});
-                }
-            }
-
-        }
-
-    }
-
-
-    /**
-     * <p>Process all JNDI entries.</p>
-     * @param contextName the context name
-     */
-    private void processJndiEntries(String contextName) {
-
-        Context initialContext = null;
-        try {
-            initialContext = new InitialContext();
-        } catch (NamingException ne) {
-            if (LOGGER.isLoggable(Level.WARNING)) {
-                LOGGER.log(Level.WARNING, ne.toString(), ne);
-            }
-        }
-
-        if (initialContext != null) {
-            // process environment entries
-            for (WebEnvironmentEntry entry : WebEnvironmentEntry.values()) {
-                String entryName = entry.getQualifiedName();
-                String value = null;
-
-                try {
-                    value = (String) initialContext.lookup(entryName);
-                } catch (NamingException root) {
-                    if (LOGGER.isLoggable(Level.FINE)) {
-                        LOGGER.fine(root.toString());
-                    }
-                }
-
-                if (value != null) {
-                    if (LOGGER.isLoggable(Level.INFO)) {
-                        // special logic for ClientStateSavingPassword
-                        if (!entry
-                              .equals(WebEnvironmentEntry.ClientStateSavingPassword)) {
-                            if (LOGGER
-                                  .isLoggable(loggingLevel)) {
-                                LOGGER.log(loggingLevel,
-                                           "jsf.config.webconfig.enventryinfo",
-                                           new Object[]{contextName,
-                                                        entryName,
-                                                        value});
-                            }
-                        } else {
-                            if (LOGGER
-                                  .isLoggable(loggingLevel)) {
-                                LOGGER.log(loggingLevel,
-                                           "jsf.config.webconfig.enventry.clientencrypt",
-                                           contextName);
-                            }
-                        }
-                    }
-                    envEntries.put(entry, value);
-                }
-            }
-        }
-
-    }
-
-
-    private boolean canProcessJndiEntries() {
-
-        try {
-            Util.getCurrentLoader(this).loadClass("javax.naming.InitialContext");
-        } catch (Exception e) {
-            if (LOGGER.isLoggable(Level.FINE)) {
-                LOGGER.fine(
-                      "javax.naming is unavailable.  JNDI entries related to Mojarra configuration will not be processed.");
-            }
-            return false;
-        }
-        return true;
-
-    }
-
-
-    private void queueLoggingAction(DeferredLoggingAction loggingAction) {
-
-        if (deferredLoggingActions == null) {
-            deferredLoggingActions = new ArrayList<DeferredLoggingAction>();
-        }
-        deferredLoggingActions.add(loggingAction);
-
-    }
-
-
-    // ------------------------------------------------------------------- Enums
-
-
-    /**
-     * <p>An <code>enum</code> of all non-boolean context initalization parameters
-     * recognized by the implementation.</p>
-     */
-    public enum WebContextInitParameter {
-
-
-        // implementation note:
-        // if a parameter is to be deprecated,
-        // then the <name>Deprecated enum element
-        // *must* appear after the one that is taking
-        // its place.  The reporting logic depends on this
-
-        ManagedBeanFactoryDecorator(
-              "com.sun.faces.managedBeanFactoryDecoratorClass",
-              ""
-        ),
-        StateSavingMethod(
-              "javax.faces.STATE_SAVING_METHOD",
-              "server"
-        ),
-        FaceletsSuffix(
-                ViewHandler.FACELETS_SUFFIX_PARAM_NAME,
-                ViewHandler.DEFAULT_FACELETS_SUFFIX
-        ),
-        DefaultSuffix(
-              ViewHandler.DEFAULT_SUFFIX_PARAM_NAME,
-              ViewHandler.DEFAULT_SUFFIX
-        ),
-        JavaxFacesConfigFiles(
-              "javax.faces.CONFIG_FILES",
-              ""
-        ),
-        JavaxFacesProjectStage(
-              "javax.faces.PROJECT_STAGE",
-              "Production"
-        ),
-        AlternateLifecycleId(
-              "javax.faces.LIFECYCLE_ID",
-              ""
-        ),
-        ResourceExcludes(
-            ResourceHandler.RESOURCE_EXCLUDES_PARAM_NAME,
-            ResourceHandler.RESOURCE_EXCLUDES_DEFAULT_VALUE + " .groovy"
-        ),
-        NumberOfViews(
-              "com.sun.faces.numberOfViewsInSession",
-              "15"
-        ),
-        NumberOfViewsDeprecated(
-              "com.sun.faces.NUMBER_OF_VIEWS_IN_SESSION",
-              "15",
-              true,
-              NumberOfViews
-        ),
-        NumberOfLogicalViews(
-              "com.sun.faces.numberOfLogicalViews",
-              "15"
-        ),
-        NumberOfLogicalViewsDeprecated(
-              "com.sun.faces.NUMBER_OF_VIEWS_IN_LOGICAL_VIEW_IN_SESSION",
-              "15",
-              true,
-              NumberOfLogicalViews
-        ),
-        NumberOfConcurrentFlashUsers(
-              "com.sun.faces.numberOfConcerrentFlashUsers",
-              "5000"
-        ),
-        NumberOfFlashesBetweenFlashReapings(
-              "com.sun.faces.numberOfFlashesBetweenFlashReapings",
-              "5000"
-        ),
-        InjectionProviderClass(
-                "com.sun.faces.injectionProvider",
-                ""
-        ),
-        SerializationProviderClass(
-              "com.sun.faces.serializationProvider",
-              ""
-        ),
-        ResponseBufferSize(
-              "com.sun.faces.responseBufferSize",
-              "1024"
-        ),
-        FaceletsBufferSize(
-              "javax.faces.FACELETS_BUFFER_SIZE",
-              "1024"
-        ),
-        FaceletsBufferSizeDeprecated(
-              "facelets.BUFFER_SIZE",
-              "1024",
-              true,
-              FaceletsBufferSize,
-              new FaceletsConfigParamLoggingStrategy()
-        ),
-        ClientStateWriteBufferSize(
-              "com.sun.faces.clientStateWriteBufferSize",
-              "8192"
-        ),
-        ResourceBufferSize(
-            "com.sun.faces.resourceBufferSize",
-            "2048"
-        ),
-        ExpressionFactory(
-              "com.sun.faces.expressionFactory",
-              "com.sun.el.ExpressionFactoryImpl"
-        ),
-        ClientStateTimeout(
-              "com.sun.faces.clientStateTimeout",
-              ""
-        ),
-        DefaultResourceMaxAge(
-              "com.sun.faces.defaultResourceMaxAge",
-              "604800000" // 7 days
-        ),
-        ResourceUpdateCheckPeriod(
-              "com.sun.faces.resourceUpdateCheckPeriod",
-              "5" // in minutes
-        ),
-        CompressableMimeTypes(
-              "com.sun.faces.compressableMimeTypes",
-              ""
-        ),
-        DisableUnicodeEscaping(
-            "com.sun.faces.disableUnicodeEscaping",
-            "auto"
-        ),
-        FaceletsDefaultRefreshPeriod(
-              "javax.faces.FACELETS_REFRESH_PERIOD",
-              "2"
-        ),
-        FaceletsDefaultRefreshPeriodDeprecated(
-              "facelets.REFRESH_PERIOD",
-              "2",
-              true,
-              FaceletsDefaultRefreshPeriod,
-              new FaceletsConfigParamLoggingStrategy()
-        ),
-        FaceletsResourceResolver(
-              ResourceResolver.FACELETS_RESOURCE_RESOLVER_PARAM_NAME,
-              ""
-        ),
-        FaceletsResourceResolverDeprecated(
-              "facelets.RESOURCE_RESOLVER",
-              "",
-              true,
-              FaceletsResourceResolver,
-              new FaceletsConfigParamLoggingStrategy()
-        ),
-         FaceletsViewMappings(
-              ViewHandler.FACELETS_VIEW_MAPPINGS_PARAM_NAME,
-              ""
-        ),
-        FaceletsViewMappingsDeprecated(
-              "facelets.VIEW_MAPPINGS",
-              "",
-              true,
-              FaceletsViewMappings,
-              new FaceletsConfigParamLoggingStrategy()
-        ),
-        FaceletsLibraries(
-              "javax.faces.FACELETS_LIBRARIES",
-              ""
-        ),
-        FaceletsLibrariesDeprecated(
-              "facelets.LIBRARIES",
-              "",
-              true,
-              FaceletsLibraries,
-              new FaceletsConfigParamLoggingStrategy()
-        ),
-        FaceletsDecorators(
-              "javax.faces.FACELETS_DECORATORS",
-              ""
-        ),
-        FaceletsDecoratorsDeprecated(
-              "facelets.DECORATORS",
-              "",
-              true,
-              FaceletsDecorators,
-              new FaceletsConfigParamLoggingStrategy()
-        ),
-        DuplicateJARPattern(
-            "com.sun.faces.duplicateJARPattern",
-            ""
-        ),
-        ValidateEmptyFields(
-              UIInput.VALIDATE_EMPTY_FIELDS_PARAM_NAME,
-              "auto"
-        ),
-        FullStateSavingViewIds(
-              StateManager.FULL_STATE_SAVING_VIEW_IDS_PARAM_NAME,
-              ""
-        ),
-        AnnotationScanPackages(
-              "com.sun.faces.annotationScanPackages",
-              ""
-        ),
-        FaceletFactory(
-              "com.sun.faces.faceletFactory",
-              ""
-        ),
-        FaceletCache(
-            "com.sun.faces.faceletCache",
-            ""
-        );
-
-
-
-        private String defaultValue;
-        private String qualifiedName;
-        private WebContextInitParameter alternate;
-        private boolean deprecated;
-        private DeprecationLoggingStrategy loggingStrategy;
-
-
-    // ---------------------------------------------------------- Public Methods
-
-
-        public String getDefaultValue() {
-
-            return defaultValue;
-
-        }
-
-
-        public String getQualifiedName() {
-
-            return qualifiedName;
-
-        }
-
-
-        DeprecationLoggingStrategy getDeprecationLoggingStrategy() {
-
-            return loggingStrategy;
-
-        }
-
-        
-    // ------------------------------------------------- Package Private Methods
-
-
-        WebContextInitParameter(String qualifiedName,
-                                String defaultValue) {
-
-            this(qualifiedName, defaultValue, false, null);
-
-        }
-
-
-        WebContextInitParameter(String qualifiedName,
-                                String defaultValue,
-                                boolean deprecated,
-                                WebContextInitParameter alternate) {
-
-            this.qualifiedName = qualifiedName;
-            this.defaultValue = defaultValue;
-            this.deprecated = deprecated;
-            this.alternate = alternate;
-
-        }
-
-
-        WebContextInitParameter(String qualifiedName,
-                                String defaultValue,
-                                boolean deprecated,
-                                WebContextInitParameter alternate,
-                                DeprecationLoggingStrategy loggingStrategy) {
-
-            this(qualifiedName, defaultValue, deprecated, alternate);
-            this.loggingStrategy = loggingStrategy;
-
-        }
-
-
-    // --------------------------------------------------------- Private Methods
-
-
-        private WebContextInitParameter getAlternate() {
-
-            return alternate;
-
-        }
-
-
-        private boolean isDeprecated() {
-
-            return deprecated;
-
-        }
-
-    }
-
-    /**
-     * <p>An <code>enum</code> of all boolean context initalization parameters
-     * recognized by the implementation.</p>
-     */
-    public enum BooleanWebContextInitParameter {
-
-
-        // implementation note:
-        // if a parameter is to be deprecated,
-        // then the <name>Deprecated enum element
-        // *must* appear after the one that is taking
-        // its place.  The reporting logic depends on this
-
-        DisplayConfiguration(
-              "com.sun.faces.displayConfiguration",
-              false
-        ),
-        ValidateFacesConfigFiles(
-              "com.sun.faces.validateXml",
-              false
-        ),
-        VerifyFacesConfigObjects(
-              "com.sun.faces.verifyObjects",
-              false
-        ),
-        ForceLoadFacesConfigFiles(
-              "com.sun.faces.forceLoadConfiguration",
-              false
-        ),
-        DisableArtifactVersioning(
-              "com.sun.faces.disableVersionTracking",
-              false,
-              true,
-              null
-        ),
-        EnableHtmlTagLibraryValidator(
-              "com.sun.faces.enableHtmlTagLibValidator",
-              false
-        ),
-        EnableCoreTagLibraryValidator(
-              "com.sun.faces.enableCoreTagLibValidator",
-              false
-        ),
-        PreferXHTMLContentType(
-              "com.sun.faces.preferXHTML",
-              false
-        ),
-        PreferXHTMLContextTypeDeprecated(
-              "com.sun.faces.PreferXHTML",
-              false,
-              true,
-              PreferXHTMLContentType
-        ),
-        CompressViewState(
-              "com.sun.faces.compressViewState",
-              true
-        ),
-        CompressViewStateDeprecated(
-              "com.sun.faces.COMPRESS_STATE",
-              true,
-              true,
-              CompressViewState
-        ),
-        CompressJavaScript(
-            "com.sun.faces.compressJavaScript",
-            true
-        ),
-        ExternalizeJavaScriptDeprecated(
-            "com.sun.faces.externalizeJavaScript",
-            true,
-            true,
-            null
-        ),
-        SendPoweredByHeader(
-              "com.sun.faces.sendPoweredByHeader",
-              true
-        ),
-        EnableJSStyleHiding(
-            "com.sun.faces.enableJSStyleHiding",
-             false
-        ),
-        EnableScriptInAttributeValue(
-            "com.sun.faces.enableScriptsInAttributeValues",
-             true
-        ),
-        WriteStateAtFormEnd(
-            "com.sun.faces.writeStateAtFormEnd",
-            true
-        ),
-        EnableLazyBeanValidation(
-             "com.sun.faces.enableLazyBeanValidation",
-             true
-        ),
-        EnableLoadBundle11Compatibility(
-             "com.sun.faces.enabledLoadBundle11Compatibility",
-             false
-        ),
-        EnableRestoreView11Compatibility(
-              "com.sun.faces.enableRestoreView11Compatibility",
-              false
-        ),
-        SerializeServerState(
-              "com.sun.faces.serializeServerState",
-              false
-        ),
-        EnableViewStateIdRendering(
-            "com.sun.faces.enableViewStateIdRendering",
-            true
-        ),
-        RegisterConverterPropertyEditors(
-            "com.sun.faces.registerConverterPropertyEditors",
-            false
-        ),
-        EnableGroovyScripting(
-            "com.sun.faces.enableGroovyScripting",
-            false
-        ),
-        DisableFaceletJSFViewHandler(
-              "javax.faces.DISABLE_FACELET_JSF_VIEWHANDLER",
-              false
-        ),
-        DisableDefaultBeanValidator(
-                BeanValidator.DISABLE_DEFAULT_BEAN_VALIDATOR_PARAM_NAME,
-                false),
-        DateTimeConverterUsesSystemTimezone(
-              "javax.faces.DATETIMECONVERTER_DEFAULT_TIMEZONE_IS_SYSTEM_TIMEZONE",
-              false
-        ),
-        FaceletsSkipComments(
-              "javax.faces.FACELETS_SKIP_COMMENTS",
-              false
-        ),
-        FaceletsSkipCommentsDeprecated(
-              "facelets.SKIP_COMMENTS",
-              false,
-              true, 
-              FaceletsSkipComments,
-              new FaceletsConfigParamLoggingStrategy()
-        ),
-        PartialStateSaving(
-              StateManager.PARTIAL_STATE_SAVING_PARAM_NAME,
-              true
-        ),
-        GenerateUniqueServerStateIds(
-              "com.sun.faces.generateUniqueServerStateIds",
-              true
-        ),
-        AutoCompleteOffOnViewState(
-              "com.sun.faces.autoCompleteOffOnViewState",
-              true
-        ),
-        EnableThreading(
-              "com.sun.faces.enableThreading",
-              false
-        ),
-        AllowTextChildren(
-            "com.sun.faces.allowTextChildren",
-            false
-        ),
-        CacheResourceModificationTimestamp(
-              "com.sun.faces.cacheResourceModificationTimestamp",
-              false
-        );
-
-        private BooleanWebContextInitParameter alternate;
-
-        private String qualifiedName;
-        private boolean defaultValue;
-        private boolean deprecated;
-        private DeprecationLoggingStrategy loggingStrategy;
-
-
-    // ---------------------------------------------------------- Public Methods
-
-
-        public boolean getDefaultValue() {
-
-            return defaultValue;
-
-        }
-
-
-        public String getQualifiedName() {
-
-            return qualifiedName;
-
-        }
-
-
-        DeprecationLoggingStrategy getDeprecationLoggingStrategy() {
-
-            return loggingStrategy;
-
-        }
-
-
-    // ------------------------------------------------- Package Private Methods
-
-
-        BooleanWebContextInitParameter(String qualifiedName,
-                                       boolean defaultValue) {
-
-            this(qualifiedName, defaultValue, false, null);
-
-        }
-
-
-        BooleanWebContextInitParameter(String qualifiedName,
-                                       boolean defaultValue,
-                                       boolean deprecated,
-                                       BooleanWebContextInitParameter alternate) {
-
-            this.qualifiedName = qualifiedName;
-            this.defaultValue = defaultValue;
-            this.deprecated = deprecated;
-            this.alternate = alternate;
-
-        }
-
-
-        BooleanWebContextInitParameter(String qualifiedName,
-                                      boolean defaultValue,
-                                      boolean deprecated,
-                                      BooleanWebContextInitParameter alternate,
-                                      DeprecationLoggingStrategy loggingStrategy) {
-
-            this(qualifiedName, defaultValue, deprecated, alternate);
-            this.loggingStrategy = loggingStrategy;
-
-        }
-
-
-    // --------------------------------------------------------- Private Methods
-
-
-        private BooleanWebContextInitParameter getAlternate() {
-
-            return alternate;
-
-        }
-
-
-        private boolean isDeprecated() {
-
-            return deprecated;
-
-        }
-
-    }
-
-    /**
-     * <p>An <code>enum</code> of all environment entries (specified in the
-     * web.xml) recognized by the implemenetation.</p>
-     */
-    public enum WebEnvironmentEntry {
-
-
-        ClientStateSavingPassword("ClientStateSavingPassword"),
-        ProjectStage(javax.faces.application.ProjectStage.PROJECT_STAGE_JNDI_NAME);
-
-        private static final String JNDI_PREFIX = "java:comp/env/";
-        private String qualifiedName;
-
-
-    // ---------------------------------------------------------- Public Methods
-
-
-         public String getQualifiedName() {
-
-            return qualifiedName;
-
-        }
-
-
-    // ------------------------------------------------- Package Private Methods
-
-
-        WebEnvironmentEntry(String qualifiedName) {
-
-            if (qualifiedName.startsWith(JNDI_PREFIX)) {
-                this.qualifiedName = qualifiedName;
-            } else {
-                this.qualifiedName = JNDI_PREFIX + qualifiedName;
-            }
-
-        }
-
-    }
-
-    /**
-     * <p>An <code>enum</code> of all possible values for the <code>disableUnicodeEscaping</code>
-     * configuration parameter.</p>
-     */
-    public enum DisableUnicodeEscaping {
-        True("true"),
-        False("false"),
-        Auto("auto");
-
-        private final String value;
-
-        DisableUnicodeEscaping(String value) {
-            this.value = value;
-        }
-
-        public static DisableUnicodeEscaping getByValue(String value)
-        {
-            for (DisableUnicodeEscaping disableUnicodeEscaping : DisableUnicodeEscaping.values()) {
-                if (disableUnicodeEscaping.value.equals(value)) {
-                    return disableUnicodeEscaping;
-                }
-            }
-
-            return null;
-        }
-    }
-
-
-    // ----------------------------------------------------------- Inner Classes
-
-
-    private interface DeprecationLoggingStrategy {
-
-        boolean shouldBeLogged(WebConfiguration configuration);
-
-    }
-
-
-    private static class FaceletsConfigParamLoggingStrategy implements DeprecationLoggingStrategy {
-
-        public boolean shouldBeLogged(WebConfiguration configuration) {
-            return !configuration.isOptionEnabled(BooleanWebContextInitParameter.DisableFaceletJSFViewHandler);
-        }
-
-    } // END FaceletsConfigParamLoggingStrategy
-
-
-    private interface DeferredLoggingAction {
-
-        void log();
-
-    } // END DeferredLogginAction
-
-
-    private class DeferredParameterLoggingAction implements DeferredLoggingAction {
-
-        private WebContextInitParameter parameter;
-        private Level loggingLevel;
-        private String logKey;
-        private Object[] params;
-
-
-        DeferredParameterLoggingAction(WebContextInitParameter parameter,
-                                       Level loggingLevel,
-                                       String logKey,
-                                       Object[] params) {
-
-            this.parameter = parameter;
-            this.loggingLevel = loggingLevel;
-            this.logKey = logKey;
-            this.params = params;
-
-        }
-
-        public void log() {
-
-            if (WebConfiguration.LOGGER.isLoggable(loggingLevel)) {
-                DeprecationLoggingStrategy strategy = parameter.getDeprecationLoggingStrategy();
-                if (strategy != null && strategy.shouldBeLogged(WebConfiguration.this)) {
-                    WebConfiguration.LOGGER.log(loggingLevel, logKey, params);
-                }
-            }
-
-        }
-
-    } // END DeferredParameterLogginAction
-
-
-    private class DeferredBooleanParameterLoggingAction implements DeferredLoggingAction {
-
-        private BooleanWebContextInitParameter parameter;
-        private Level loggingLevel;
-        private String logKey;
-        private Object[] params;
-
-        DeferredBooleanParameterLoggingAction(BooleanWebContextInitParameter parameter,
-                                              Level loggingLevel,
-                                              String logKey,
-                                              Object[] params) {
-            this.parameter = parameter;
-            this.loggingLevel = loggingLevel;
-            this.logKey = logKey;
-            this.params = params;
-        }
-
-        public void log() {
-
-            if (WebConfiguration.LOGGER.isLoggable(loggingLevel)) {
-                DeprecationLoggingStrategy strategy = parameter.getDeprecationLoggingStrategy();
-                if (strategy != null && strategy.shouldBeLogged(WebConfiguration.this)) {
-                    WebConfiguration.LOGGER.log(loggingLevel, logKey, params);
-                }
-            }
-
-        }
-
-    } // END DeferredBooleanParameterLoggingAction
-
-} // END WebConfiguration
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.config;
+
+import com.sun.faces.application.ApplicationAssociate;
+import com.sun.faces.application.view.FaceletViewHandlingStrategy;
+import com.sun.faces.facelets.util.Classpath;
+import com.sun.faces.lifecycle.HttpMethodRestrictionsPhaseListener;
+import java.util.ArrayList;
+import java.util.EnumMap;
+import java.util.Enumeration;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import java.util.regex.Pattern;
+
+import javax.faces.application.ResourceHandler;
+import javax.faces.application.ViewHandler;
+import javax.faces.application.StateManager;
+import javax.faces.context.ExternalContext;
+import javax.faces.context.FacesContext;
+import javax.naming.Context;
+import javax.naming.InitialContext;
+import javax.naming.NamingException;
+import javax.servlet.ServletContext;
+
+import com.sun.faces.util.FacesLogger;
+import com.sun.faces.util.Util;
+import java.io.IOException;
+import java.net.URL;
+import java.util.Collections;
+
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.concurrent.ConcurrentHashMap;
+import javax.faces.FactoryFinder;
+import javax.faces.application.ProjectStage;
+import javax.faces.component.UIInput;
+import javax.faces.convert.Converter;
+import javax.faces.event.PhaseListener;
+import javax.faces.lifecycle.ClientWindow;
+import javax.faces.lifecycle.Lifecycle;
+import javax.faces.lifecycle.LifecycleFactory;
+import javax.faces.validator.BeanValidator;
+import javax.faces.view.facelets.ResourceResolver;
+import javax.faces.webapp.FacesServlet;
+
+
+/** Class Documentation */
+public class WebConfiguration {
+
+
+    // Log instance for this class
+    private static final Logger LOGGER = FacesLogger.CONFIG.getLogger();
+
+    // A Simple regular expression of allowable boolean values
+    private static final Pattern ALLOWABLE_BOOLEANS =
+          Pattern.compile("true|false", Pattern.CASE_INSENSITIVE);
+
+    // Key under which we store our WebConfiguration instance.
+    private static final String WEB_CONFIG_KEY =
+          "com.sun.faces.config.WebConfiguration";
+    
+    public static final String META_INF_CONTRACTS_DIR = "META-INF" + 
+            WebContextInitParameter.WebAppContractsDirectory.getDefaultValue();
+    
+    private static final int META_INF_CONTRACTS_DIR_LEN = META_INF_CONTRACTS_DIR.length();
+    
+    private static final String RESOURCE_CONTRACT_SUFFIX = "/" + ResourceHandler.RESOURCE_CONTRACT_XML;
+        
+    // Logging level.  Defaults to FINE
+    private Level loggingLevel = Level.FINE;
+
+    private Map<BooleanWebContextInitParameter, Boolean> booleanContextParameters =
+          new EnumMap<BooleanWebContextInitParameter, Boolean>(BooleanWebContextInitParameter.class);
+
+    private Map<WebContextInitParameter, String> contextParameters =
+          new EnumMap<WebContextInitParameter, String>(WebContextInitParameter.class);
+
+    private Map<WebContextInitParameter, Map<String, String>> facesConfigParameters =
+            new EnumMap<WebContextInitParameter, Map<String, String>>(WebContextInitParameter.class);
+
+    private Map<WebEnvironmentEntry, String> envEntries =
+          new EnumMap<WebEnvironmentEntry, String>(WebEnvironmentEntry.class);
+
+    private Map<WebContextInitParameter, String []> cachedListParams;
+
+    private Set<String> setParams = new HashSet<String>();
+
+    private ServletContext servletContext;
+
+    private ArrayList<DeferredLoggingAction> deferredLoggingActions;
+
+    private FaceletsConfiguration faceletsConfig;
+    
+    private boolean hasFlows;
+
+
+    // ------------------------------------------------------------ Constructors
+
+
+    private WebConfiguration(ServletContext servletContext) {
+
+        this.servletContext = servletContext;
+
+        String contextName = getServletContextName();
+
+        initSetList(servletContext);
+        processBooleanParameters(servletContext, contextName);
+        processInitParameters(servletContext, contextName);
+        if (canProcessJndiEntries()) {
+            processJndiEntries(contextName);
+        }
+        
+        // build the cache of list type params
+        cachedListParams = new HashMap<WebContextInitParameter, String []>(3);
+        getOptionValue(WebContextInitParameter.ResourceExcludes, " ");
+        getOptionValue(WebContextInitParameter.DefaultSuffix, " ");
+        getOptionValue(WebContextInitParameter.FaceletsViewMappings, ";");
+
+    }
+
+
+    // ---------------------------------------------------------- Public Methods
+
+
+    /**
+     * Return the WebConfiguration instance for this application passing
+     * the result of FacesContext.getCurrentInstance().getExternalContext()
+     * to {@link #getInstance(javax.faces.context.ExternalContext)}.
+     * @return the WebConfiguration for this application or <code>null</code>
+     *  if no FacesContext is available.
+     */
+    public static WebConfiguration getInstance() {
+
+        FacesContext facesContext = FacesContext.getCurrentInstance();
+        return getInstance(facesContext.getExternalContext());
+
+    }
+
+
+    /**
+     * Return the WebConfiguration instance for this application.
+     * @param extContext the ExternalContext for this request
+     * @return the WebConfiguration for this application
+     */
+    public static WebConfiguration getInstance(ExternalContext extContext) {
+
+        WebConfiguration config = (WebConfiguration) extContext.getApplicationMap()
+              .get(WEB_CONFIG_KEY);
+        if (config == null) {
+            return getInstance((ServletContext) extContext.getContext());
+        } else {
+            return config;
+        }
+
+    }
+
+
+    /**
+     * Return the WebConfiguration instance for this application.
+     * @param servletContext the ServletContext
+     * @return the WebConfiguration for this application or <code>null</code>
+     *  if no WebConfiguration could be located
+     */
+    public static WebConfiguration getInstance(ServletContext servletContext) {
+
+        WebConfiguration webConfig = (WebConfiguration)
+              servletContext.getAttribute(WEB_CONFIG_KEY);
+
+        if (webConfig == null) {
+            webConfig = new WebConfiguration(servletContext);
+            servletContext.setAttribute(WEB_CONFIG_KEY, webConfig);
+        }
+        return webConfig;
+
+    }
+
+
+    /**
+     * @return The <code>ServletContext</code> originally used to construct
+     * this WebConfiguration instance
+     */
+    public ServletContext getServletContext() {
+
+        return servletContext;
+
+    }
+
+    public boolean isHasFlows() {
+        return hasFlows;
+    }
+
+    public void setHasFlows(boolean hasFlows) {
+        this.hasFlows = hasFlows;
+    }
+    
+    /**
+     * Obtain the value of the specified boolean parameter
+     * @param param the parameter of interest
+     * @return the value of the specified boolean parameter
+     */
+    public boolean isOptionEnabled(BooleanWebContextInitParameter param) {
+
+        if (booleanContextParameters.get(param) != null) {
+            return booleanContextParameters.get(param);
+        } else {
+            return param.getDefaultValue();
+        }
+
+    }
+
+
+    /**
+     * Obtain the value of the specified parameter
+     * @param param the parameter of interest
+     * @return the value of the specified parameter
+     */
+    public String getOptionValue(WebContextInitParameter param) {
+        String result = contextParameters.get(param);
+        
+        if (null == result) {
+            WebContextInitParameter alternate = param.getAlternate();
+            if (null != alternate) {
+                result = contextParameters.get(alternate);
+            }
+        }
+
+        return result;
+
+    }
+    
+    public void setOptionValue(WebContextInitParameter param, String value) {
+        contextParameters.put(param, value);
+    }
+    
+    public void setOptionEnabled(BooleanWebContextInitParameter param, boolean value) {
+        booleanContextParameters.put(param, value);
+    }
+
+    public FaceletsConfiguration getFaceletsConfiguration() {
+
+        if (null == faceletsConfig) {
+            faceletsConfig = new FaceletsConfiguration(this);
+        }
+        return faceletsConfig;
+
+    }
+
+    public Map<String, String> getFacesConfigOptionValue(WebContextInitParameter param, boolean create) {
+        Map<String, String> result = null;
+
+        assert(null != facesConfigParameters);
+
+        result = facesConfigParameters.get(param);
+        if (null == result) {
+            if (create) {
+                result = new ConcurrentHashMap<String, String>(3);
+                facesConfigParameters.put(param, result);
+            } else {
+                result = Collections.emptyMap();
+            }
+        }
+
+        return result;
+
+    }
+
+    public Map<String, String> getFacesConfigOptionValue(WebContextInitParameter param) {
+        return getFacesConfigOptionValue(param, false);
+    }
+
+    
+    public String[] getOptionValue(WebContextInitParameter param, String sep) {
+        String [] result;
+        
+        assert(null != cachedListParams);
+        if (null == (result = cachedListParams.get(param))) {
+            String value = getOptionValue(param);
+            if (null == value) {
+                result = new String[0];
+            } else {
+                Map<String, Object> appMap = FacesContext.getCurrentInstance().getExternalContext().getApplicationMap();
+                result = Util.split(appMap, value, sep);
+            }
+            cachedListParams.put(param, result);
+        }
+        
+        return result;
+    }
+
+
+    /**
+     * Obtain the value of the specified env-entry
+     * @param entry the env-entry of interest
+     * @return the value of the specified env-entry
+     */
+    public String getEnvironmentEntry(WebEnvironmentEntry entry) {
+
+        return envEntries.get(entry);
+
+    }
+
+
+    /**
+     * @param param the init parameter of interest
+     * @return <code>true</code> if the parameter was explicitly set,
+     *  otherwise, <code>false</code>
+     */
+    public boolean isSet(WebContextInitParameter param) {
+
+        return isSet(param.getQualifiedName());
+
+    }
+
+
+    /**
+     * @param param the init parameter of interest
+     * @return <code>true</code> if the parameter was explicitly set,
+     *  otherwise, <code>false</code>
+     */
+    public boolean isSet(BooleanWebContextInitParameter param) {
+
+        return isSet(param.getQualifiedName());
+
+    }
+
+
+    /**
+     * @return the name of this application
+     */
+    public String getServletContextName() {
+
+        if (servletContext.getMajorVersion() == 2
+            && servletContext.getMinorVersion() <= 4) {
+            return servletContext.getServletContextName();
+        } else {
+            return servletContext.getContextPath();
+        }
+
+    }
+
+
+    public void overrideContextInitParameter(BooleanWebContextInitParameter param, boolean value) {
+
+        if (param == null) {
+            return;
+        }
+        boolean oldVal = booleanContextParameters.put(param, value);
+        if (LOGGER.isLoggable(Level.FINE) && oldVal != value) {
+            LOGGER.log(Level.FINE,
+                       "Overriding init parameter {0}.  Changing from {1} to {2}.",
+                       new Object[] { param.getQualifiedName(), oldVal, value});
+        }
+
+    }
+
+
+    public void overrideContextInitParameter(WebContextInitParameter param, String value) {
+
+        if (param == null || value == null || value.length() == 0) {
+            return;
+        }
+        value = value.trim();
+        String oldVal = contextParameters.put(param, value);
+        cachedListParams.remove(param);
+        if (oldVal != null && LOGGER.isLoggable(Level.FINE) && !(oldVal.equals(value))) {
+            LOGGER.log(Level.FINE,
+                "Overriding init parameter {0}.  Changing from {1} to {2}.",
+                new Object[]{param.getQualifiedName(),
+                             oldVal,
+                             value});
+        }
+    }
+
+    public void doPostBringupActions() {
+
+        if (deferredLoggingActions != null) {
+            for (DeferredLoggingAction loggingAction : deferredLoggingActions) {
+                loggingAction.log();
+            }
+        }
+
+        // add the HttpMethodRestrictionPhaseListener if the parameter is enabled.
+        boolean enabled = this.isOptionEnabled(BooleanWebContextInitParameter.EnableHttpMethodRestrictionPhaseListener);
+        if (enabled) {
+            LifecycleFactory factory = (LifecycleFactory) FactoryFinder.getFactory(FactoryFinder.LIFECYCLE_FACTORY);
+            Iterator<String> ids = factory.getLifecycleIds();
+            PhaseListener listener = null;
+            Lifecycle cur;
+
+            while (ids.hasNext()) {
+                cur = factory.getLifecycle(ids.next());
+                boolean foundExistingListenerInstance = false;
+                for (PhaseListener curListener : cur.getPhaseListeners()) {
+                    if (curListener instanceof HttpMethodRestrictionsPhaseListener) {
+                        foundExistingListenerInstance = true;
+                        break;
+                    }
+                }
+                if (!foundExistingListenerInstance) {
+                    if (null == listener) {
+                        listener = new HttpMethodRestrictionsPhaseListener();
+                    }
+                    cur.addPhaseListener(listener);
+                }
+            }
+        }
+
+        discoverResourceLibraryContracts();
+
+    }
+    
+    private void discoverResourceLibraryContracts() {
+        FacesContext context = FacesContext.getCurrentInstance();
+        ExternalContext extContex = context.getExternalContext();
+        Set<String> foundContracts = new HashSet<String>();
+        Set<String> candidates;
+        
+        // Scan for "contractMappings" in the web app root
+        String contractsDirName = getOptionValue(WebContextInitParameter.WebAppContractsDirectory);
+        assert(null != contractsDirName);
+        candidates = extContex.getResourcePaths(contractsDirName);
+        if (null != candidates) {
+            int contractsDirNameLen = contractsDirName.length();
+            int end;
+            for (String cur : candidates) {
+                end = cur.length();
+                if (cur.endsWith("/")) {
+                    end--;
+                }
+                foundContracts.add(cur.substring(contractsDirNameLen + 1, end));
+            }
+        }
+        
+        // Scan for "META-INF" contractMappings in the classpath
+        try {
+            URL[] candidateURLs = Classpath.search(Util.getCurrentLoader(this),
+                                          META_INF_CONTRACTS_DIR,
+                                          RESOURCE_CONTRACT_SUFFIX,
+                    Classpath.SearchAdvice.FirstMatchOnly);
+            for (URL curURL : candidateURLs) {
+                String cur = curURL.toExternalForm();
+                
+                int i = cur.indexOf(META_INF_CONTRACTS_DIR) + META_INF_CONTRACTS_DIR_LEN + 1;
+                int j = cur.indexOf(RESOURCE_CONTRACT_SUFFIX);
+                if (i < j) {
+                    foundContracts.add(cur.substring(i,j));
+                }
+                
+            }
+        } catch (IOException ioe) {
+            if (LOGGER.isLoggable(Level.FINEST)) {
+                LOGGER.log(Level.FINEST, "Unable to scan " + META_INF_CONTRACTS_DIR, ioe);
+            }
+        }
+        
+        
+        if (foundContracts.isEmpty()) {
+            return;
+        }
+        
+        Map<String, List<String>> contractMappings = new HashMap<String, List<String>>();
+        
+        ApplicationAssociate associate = ApplicationAssociate.getCurrentInstance();
+        Map<String, List<String>> contractsFromConfig = associate.getResourceLibraryContracts();
+        List<String> contractsToExpose;
+        
+        if (null != contractsFromConfig && !contractsFromConfig.isEmpty()) {
+            List<String> contractsFromMapping;
+            for (Map.Entry<String, List<String>> cur : contractsFromConfig.entrySet()) {
+                // Verify that the contractsToExpose in this mapping actually exist
+                // in the application.  If not, log a message.
+                contractsFromMapping = cur.getValue();
+                if (null == contractsFromMapping || contractsFromMapping.isEmpty()) {
+                    if (LOGGER.isLoggable(Level.CONFIG)) {
+                        LOGGER.log(Level.CONFIG, "resource library contract mapping for pattern {0} has no contracts.", cur.getKey());
+                    }
+                } else {
+                    contractsToExpose = new ArrayList<String>();
+                    for (String curContractFromMapping : contractsFromMapping) {
+                        if (foundContracts.contains(curContractFromMapping)) {
+                            contractsToExpose.add(curContractFromMapping);
+                        } else {
+                            if (LOGGER.isLoggable(Level.CONFIG)) {
+                                LOGGER.log(Level.CONFIG, "resource library contract mapping for pattern {0} exposes contract {1}, but that contract is not available to the application.", 
+                                        new String [] { cur.getKey(), curContractFromMapping });
+                            }
+                        }
+                    }
+                    if (!contractsToExpose.isEmpty()) {
+                        contractMappings.put(cur.getKey(), contractsToExpose);
+                    }
+                }
+            }
+        } else {
+            contractsToExpose = new ArrayList<String>();
+            contractsToExpose.addAll(foundContracts);
+            contractMappings.put("*", contractsToExpose);
+        }
+        extContex.getApplicationMap().put(FaceletViewHandlingStrategy.RESOURCE_LIBRARY_CONTRACT_DATA_STRUCTURE_KEY, 
+                contractMappings);
+        
+    }
+
+
+    // ------------------------------------------------- Package Private Methods
+
+
+    static void clear(ServletContext servletContext) {
+
+        servletContext.removeAttribute(WEB_CONFIG_KEY);
+
+    }
+
+
+    // --------------------------------------------------------- Private Methods
+
+
+    /**
+     * <p>Is the configured value valid against the default boolean pattern.</p>
+     * @param param the boolean parameter
+     * @param value the configured value
+     * @return <code>true</code> if the value is valid,
+     *  otherwise <code>false</code>
+     */
+    private boolean isValueValid(BooleanWebContextInitParameter param,
+                                 String value) {
+
+        if (!ALLOWABLE_BOOLEANS.matcher(value).matches()) {
+            if (LOGGER.isLoggable(Level.WARNING)) {
+                LOGGER.log(Level.WARNING,
+                           "jsf.config.webconfig.boolconfig.invalidvalue",
+                           new Object[]{
+                                 value,
+                                 param.getQualifiedName(),
+                                 "true|false",
+                                 "true|false",
+                                 param.getDefaultValue()
+                           });
+            }
+            return false;
+        }
+
+        return true;
+
+    }
+
+
+    /**
+     * <p>Process all boolean context initialization parameters.</p>
+     * @param servletContext the ServletContext of interest
+     * @param contextName the context name
+     */
+    private void processBooleanParameters(ServletContext servletContext,
+                                          String contextName) {
+
+        // process boolean contxt parameters
+        for (BooleanWebContextInitParameter param : BooleanWebContextInitParameter
+              .values()) {
+            String strValue =
+                  servletContext.getInitParameter(param.getQualifiedName());
+            boolean value;
+
+            if (strValue != null && strValue.length() > 0 && param.isDeprecated()) {
+                BooleanWebContextInitParameter alternate = param.getAlternate();
+                if (LOGGER.isLoggable(Level.WARNING)) {
+                    if (alternate != null) {
+                        queueLoggingAction(new DeferredBooleanParameterLoggingAction(
+                              param,
+                              Level.WARNING,
+                              "jsf.config.webconfig.param.deprecated",
+                              new Object[]{
+                                    contextName,
+                                    param.getQualifiedName(),
+                                    alternate.getQualifiedName()}));
+
+                    } else {
+                        queueLoggingAction(new DeferredBooleanParameterLoggingAction(
+                              param,
+                              Level.WARNING,
+                              "jsf.config.webconfig.param.deprecated.no_replacement",
+                              new Object[]{
+                                    contextName,
+                                    param.getQualifiedName()}));
+
+                    }
+                }
+
+                if (alternate != null) {
+                    if (isValueValid(param, strValue)) {
+                        value = Boolean.valueOf(strValue);
+                    } else {
+                        value = param.getDefaultValue();
+                    }
+
+                    if (LOGGER.isLoggable(Level.INFO) && alternate != null) {
+                        queueLoggingAction(new DeferredBooleanParameterLoggingAction(
+                              param,
+                              Level.INFO,
+                              ((value)
+                               ? "jsf.config.webconfig.configinfo.reset.enabled"
+                               : "jsf.config.webconfig.configinfo.reset.disabled"),
+                              new Object[]{
+                                    contextName,
+                                    alternate.getQualifiedName()}));
+                    }
+
+                    booleanContextParameters.put(alternate, value);
+                }
+                continue;
+            }
+
+            if (!param.isDeprecated()) {
+                if (strValue == null) {
+                    value = param.getDefaultValue();
+                } else {
+                    if (isValueValid(param, strValue)) {
+                        value = Boolean.valueOf(strValue);
+                    } else {
+                        value = param.getDefaultValue();
+                    }
+                }
+
+                // first param processed should be
+                // com.sun.faces.displayConfiguration
+                if (BooleanWebContextInitParameter.DisplayConfiguration.equals(param) && value) {
+                    loggingLevel = Level.INFO;
+                }
+
+                if (LOGGER.isLoggable(loggingLevel)) {
+                    LOGGER.log(loggingLevel,
+                               ((value)
+                                ? "jsf.config.webconfig.boolconfiginfo.enabled"
+                                : "jsf.config.webconfig.boolconfiginfo.disabled"),
+                               new Object[]{contextName,
+                                            param.getQualifiedName()});
+                }
+
+                booleanContextParameters.put(param, value);
+            }
+
+        }
+
+    }
+
+
+    /**
+     * Adds all com.sun.faces init parameter names to a list.  This allows
+     * callers to determine if a parameter was explicitly set.
+     * @param servletContext the ServletContext of interest
+     */
+    private void initSetList(ServletContext servletContext) {
+
+        for (Enumeration e = servletContext.getInitParameterNames();
+              e.hasMoreElements(); ) {
+            String name = e.nextElement().toString();
+            if (name.startsWith("com.sun.faces") ||
+                  name.startsWith("javax.faces")) {
+                setParams.add(name);
+            }
+        }
+
+    }
+
+
+    /**
+     * @param name the param name
+     * @return <code>true</code> if the name was explicitly specified
+     */
+    private boolean isSet(String name) {
+
+        return setParams.contains(name);
+
+    }
+
+
+    /**
+     * <p>Process all non-boolean context initialization parameters.</p>
+     * @param servletContext the ServletContext of interest
+     * @param contextName the context name
+     */
+    private void processInitParameters(ServletContext servletContext,
+                                       String contextName) {
+
+        for (WebContextInitParameter param : WebContextInitParameter.values()) {
+            String value =
+                  servletContext.getInitParameter(param.getQualifiedName());
+
+            if (value != null && value.length() > 0 && param.isDeprecated()) {
+                WebContextInitParameter alternate = param.getAlternate();
+                DeprecationLoggingStrategy strategy = param.getDeprecationLoggingStrategy();
+                if (strategy == null || strategy.shouldBeLogged(this)) {
+                    if (LOGGER.isLoggable(Level.WARNING)) {
+                        if (alternate != null) {
+                            queueLoggingAction(new DeferredParameterLoggingAction(param, Level.WARNING,
+                                       "jsf.config.webconfig.param.deprecated",
+                                       new Object[]{
+                                             contextName,
+                                             param.getQualifiedName(),
+                                             alternate.getQualifiedName()}));
+
+                        } else {
+                            queueLoggingAction(new DeferredParameterLoggingAction(
+                                  param,
+                                  Level.WARNING,
+                                  "jsf.config.webconfig.param.deprecated.no_replacement",
+                                  new Object[]{
+                                        contextName,
+                                        param.getQualifiedName()}));
+                        }
+                    }
+                }
+
+                if (alternate != null) {
+                    queueLoggingAction(
+                          new DeferredParameterLoggingAction(param,
+                                                             Level.INFO,
+                                                             "jsf.config.webconfig.configinfo.reset",
+                                                             new Object[]{
+                                                                    contextName,
+                                                                    alternate.getQualifiedName(),
+                                                                    value}));
+
+                    contextParameters.put(alternate, value);
+                }
+                continue;
+            }
+
+            if ((value == null || value.length() == 0) && !param.isDeprecated()) {
+                value = param.getDefaultValue();
+            }
+            if (value == null || value.length() == 0) {
+                continue;
+            }
+
+            if (value.length() > 0) {
+                if (LOGGER.isLoggable(loggingLevel)) {
+                    LOGGER.log(loggingLevel,
+                               "jsf.config.webconfig.configinfo",
+                               new Object[]{contextName,
+                                            param.getQualifiedName(),
+                                            value});
+
+                }
+                contextParameters.put(param, value);
+            } else {
+                if (LOGGER.isLoggable(loggingLevel)) {
+                    LOGGER.log(loggingLevel,
+                               "jsf.config.webconfig.option.notconfigured",
+                               new Object[]{contextName,
+                                            param.getQualifiedName()});
+                }
+            }
+
+        }
+
+    }
+
+
+    /**
+     * <p>Process all JNDI entries.</p>
+     * @param contextName the context name
+     */
+    private void processJndiEntries(String contextName) {
+
+        Context initialContext = null;
+        try {
+            initialContext = new InitialContext();
+        } catch (NoClassDefFoundError nde) {
+          // on google app engine InitialContext is forbidden to use and GAE throws NoClassDefFoundError 
+          if (LOGGER.isLoggable(Level.FINE)) {
+            LOGGER.log(Level.FINE, nde.toString(), nde);
+          }
+        } catch (NamingException ne) {
+            if (LOGGER.isLoggable(Level.WARNING)) {
+                LOGGER.log(Level.WARNING, ne.toString(), ne);
+            }
+        }
+
+        if (initialContext != null) {
+            // process environment entries
+            for (WebEnvironmentEntry entry : WebEnvironmentEntry.values()) {
+                String entryName = entry.getQualifiedName();
+                String value = null;
+
+                try {
+                    value = (String) initialContext.lookup(entryName);
+                } catch (NamingException root) {
+                    if (LOGGER.isLoggable(Level.FINE)) {
+                        LOGGER.fine(root.toString());
+                    }
+                }
+
+                if (value != null) {
+                    if (LOGGER.isLoggable(Level.INFO)) {
+                        if (LOGGER
+                                .isLoggable(loggingLevel)) {
+                            LOGGER.log(loggingLevel,
+                                    "jsf.config.webconfig.enventryinfo",
+                                    new Object[]{contextName,
+                                        entryName,
+                                        value});
+                        }
+                    }
+                    envEntries.put(entry, value);
+                }
+            }
+            try {
+                Object beanManager = initialContext.lookup("java:comp/BeanManager");
+                if (null != beanManager) {
+                    Util.setCDIAvailable(servletContext, beanManager);
+                }
+            } catch (NamingException root) {
+                if (LOGGER.isLoggable(Level.FINE)) {
+                    LOGGER.fine(root.toString());
+                }
+            }
+            // JAVASERVERFACES-2922 Martin Kouba
+            if (!Util.isCDIAvailable(servletContext)) {
+                try {
+                    Object beanManager = initialContext.lookup("java:comp/env/BeanManager");
+                    if (null != beanManager) {
+                        Util.setCDIAvailable(servletContext, beanManager);
+                    }
+                } catch (NamingException root) {
+                    if (LOGGER.isLoggable(Level.FINE)) {
+                        LOGGER.fine(root.toString());
+                    }
+                }
+            }
+        }
+
+    }
+
+
+    public boolean canProcessJndiEntries() {
+
+        try {
+            Util.getCurrentLoader(this).loadClass("javax.naming.InitialContext");
+        } catch (Exception e) {
+            if (LOGGER.isLoggable(Level.FINE)) {
+                LOGGER.fine(
+                      "javax.naming is unavailable.  JNDI entries related to Mojarra configuration will not be processed.");
+            }
+            return false;
+        }
+        return true;
+
+    }
+
+
+    private void queueLoggingAction(DeferredLoggingAction loggingAction) {
+
+        if (deferredLoggingActions == null) {
+            deferredLoggingActions = new ArrayList<DeferredLoggingAction>();
+        }
+        deferredLoggingActions.add(loggingAction);
+
+    }
+
+
+    // ------------------------------------------------------------------- Enums
+
+
+    /**
+     * <p>An <code>enum</code> of all non-boolean context initalization parameters
+     * recognized by the implementation.</p>
+     */
+    public enum WebContextInitParameter {
+
+
+        // implementation note:
+        // if a parameter is to be deprecated,
+        // then the <name>Deprecated enum element
+        // *must* appear after the one that is taking
+        // its place.  The reporting logic depends on this
+
+        ManagedBeanFactoryDecorator(
+              "com.sun.faces.managedBeanFactoryDecoratorClass",
+              ""
+        ),
+        StateSavingMethod(
+              StateManager.STATE_SAVING_METHOD_PARAM_NAME,
+              "server"
+        ),
+        FaceletsSuffix(
+                ViewHandler.FACELETS_SUFFIX_PARAM_NAME,
+                ViewHandler.DEFAULT_FACELETS_SUFFIX
+        ),
+        DefaultSuffix(
+              ViewHandler.DEFAULT_SUFFIX_PARAM_NAME,
+              ViewHandler.DEFAULT_SUFFIX
+        ),
+        JavaxFacesConfigFiles(
+              FacesServlet.CONFIG_FILES_ATTR,
+              ""
+        ),
+        JavaxFacesProjectStage(
+              ProjectStage.PROJECT_STAGE_PARAM_NAME,
+              "Production"
+        ),
+        AlternateLifecycleId(
+              FacesServlet.LIFECYCLE_ID_ATTR,
+              ""
+        ),
+        ResourceExcludes(
+            ResourceHandler.RESOURCE_EXCLUDES_PARAM_NAME,
+            ResourceHandler.RESOURCE_EXCLUDES_DEFAULT_VALUE + " .groovy"
+        ),
+        NumberOfViews(
+              "com.sun.faces.numberOfViewsInSession",
+              "15"
+        ),
+        NumberOfViewsDeprecated(
+              "com.sun.faces.NUMBER_OF_VIEWS_IN_SESSION",
+              "15",
+              true,
+              NumberOfViews
+        ),
+        NumberOfLogicalViews(
+              "com.sun.faces.numberOfLogicalViews",
+              "15"
+        ),
+        NumberOfLogicalViewsDeprecated(
+              "com.sun.faces.NUMBER_OF_VIEWS_IN_LOGICAL_VIEW_IN_SESSION",
+              "15",
+              true,
+              NumberOfLogicalViews
+        ),
+        NumberOfConcurrentFlashUsers(
+              "com.sun.faces.numberOfConcerrentFlashUsers",
+              "5000"
+        ),
+        NumberOfFlashesBetweenFlashReapings(
+              "com.sun.faces.numberOfFlashesBetweenFlashReapings",
+              "5000"
+        ),
+        InjectionProviderClass(
+                "com.sun.faces.injectionProvider",
+                ""
+        ),
+        SerializationProviderClass(
+              "com.sun.faces.serializationProvider",
+              ""
+        ),
+        ResponseBufferSize(
+              "com.sun.faces.responseBufferSize",
+              "1024"
+        ),
+        FaceletsBufferSize(
+              ViewHandler.FACELETS_BUFFER_SIZE_PARAM_NAME,
+              "1024"
+        ),
+        FaceletsBufferSizeDeprecated(
+              "facelets.BUFFER_SIZE",
+              "1024",
+              true,
+              FaceletsBufferSize,
+              new FaceletsConfigParamLoggingStrategy()
+        ),
+        ClientStateWriteBufferSize(
+              "com.sun.faces.clientStateWriteBufferSize",
+              "8192"
+        ),
+        ResourceBufferSize(
+            "com.sun.faces.resourceBufferSize",
+            "2048"
+        ),
+        ExpressionFactory(
+              "com.sun.faces.expressionFactory",
+              "com.sun.el.ExpressionFactoryImpl"
+        ),
+        ClientStateTimeout(
+              "com.sun.faces.clientStateTimeout",
+              ""
+        ),
+        DefaultResourceMaxAge(
+              "com.sun.faces.defaultResourceMaxAge",
+              "604800000" // 7 days
+        ),
+        ResourceUpdateCheckPeriod(
+              "com.sun.faces.resourceUpdateCheckPeriod",
+              "5" // in minutes
+        ),
+        CompressableMimeTypes(
+              "com.sun.faces.compressableMimeTypes",
+              ""
+        ),
+        DisableUnicodeEscaping(
+            "com.sun.faces.disableUnicodeEscaping",
+            "auto"
+        ),
+        FaceletsDefaultRefreshPeriod(
+              ViewHandler.FACELETS_REFRESH_PERIOD_PARAM_NAME,
+              "2"
+        ),
+        FaceletsDefaultRefreshPeriodDeprecated(
+              "facelets.REFRESH_PERIOD",
+              "2",
+              true,
+              FaceletsDefaultRefreshPeriod,
+              new FaceletsConfigParamLoggingStrategy()
+        ),
+        FaceletsResourceResolver(
+              ResourceResolver.FACELETS_RESOURCE_RESOLVER_PARAM_NAME,
+              ""
+        ),
+        FaceletsResourceResolverDeprecated(
+              "facelets.RESOURCE_RESOLVER",
+              "",
+              true,
+              FaceletsResourceResolver,
+              new FaceletsConfigParamLoggingStrategy()
+        ),
+         FaceletsViewMappings(
+              ViewHandler.FACELETS_VIEW_MAPPINGS_PARAM_NAME,
+              ""
+        ),
+        FaceletsViewMappingsDeprecated(
+              "facelets.VIEW_MAPPINGS",
+              "",
+              true,
+              FaceletsViewMappings,
+              new FaceletsConfigParamLoggingStrategy()
+        ),
+        FaceletsLibraries(
+              ViewHandler.FACELETS_LIBRARIES_PARAM_NAME,
+              ""
+        ),
+        FaceletsLibrariesDeprecated(
+              "facelets.LIBRARIES",
+              "",
+              true,
+              FaceletsLibraries,
+              new FaceletsConfigParamLoggingStrategy()
+        ),
+        FaceletsDecorators(
+              ViewHandler.FACELETS_DECORATORS_PARAM_NAME,
+              ""
+        ),
+        FaceletsDecoratorsDeprecated(
+              "facelets.DECORATORS",
+              "",
+              true,
+              FaceletsDecorators,
+              new FaceletsConfigParamLoggingStrategy()
+        ),
+        DuplicateJARPattern(
+            "com.sun.faces.duplicateJARPattern",
+            ""
+        ),
+        ValidateEmptyFields(
+              UIInput.VALIDATE_EMPTY_FIELDS_PARAM_NAME,
+              "auto"
+        ),
+        FullStateSavingViewIds(
+              StateManager.FULL_STATE_SAVING_VIEW_IDS_PARAM_NAME,
+              ""
+        ),
+        AnnotationScanPackages(
+              "com.sun.faces.annotationScanPackages",
+              ""
+        ),
+        FaceletCache(
+            "com.sun.faces.faceletCache",
+            ""
+        ),
+        FaceletsProcessingFileExtensionProcessAs(
+                "",
+                ""
+        ),
+        ClientWindowMode(
+              ClientWindow.CLIENT_WINDOW_MODE_PARAM_NAME,
+              "none"
+        ),
+        WebAppResourcesDirectory(
+              ResourceHandler.WEBAPP_RESOURCES_DIRECTORY_PARAM_NAME,
+              "/resources"
+        ),
+        WebAppContractsDirectory(
+              ResourceHandler.WEBAPP_CONTRACTS_DIRECTORY_PARAM_NAME,
+              "/contracts"
+        );
+
+
+
+        private String defaultValue;
+        private String qualifiedName;
+        private WebContextInitParameter alternate;
+        private boolean deprecated;
+        private DeprecationLoggingStrategy loggingStrategy;
+
+
+    // ---------------------------------------------------------- Public Methods
+
+
+        public String getDefaultValue() {
+
+            return defaultValue;
+
+        }
+
+
+        public String getQualifiedName() {
+
+            return qualifiedName;
+
+        }
+
+
+        DeprecationLoggingStrategy getDeprecationLoggingStrategy() {
+
+            return loggingStrategy;
+
+        }
+
+        
+    // ------------------------------------------------- Package Private Methods
+
+
+        WebContextInitParameter(String qualifiedName,
+                                String defaultValue) {
+
+            this(qualifiedName, defaultValue, false, null);
+
+        }
+
+
+        WebContextInitParameter(String qualifiedName,
+                                String defaultValue,
+                                boolean deprecated,
+                                WebContextInitParameter alternate) {
+
+            this.qualifiedName = qualifiedName;
+            this.defaultValue = defaultValue;
+            this.deprecated = deprecated;
+            this.alternate = alternate;
+
+        }
+
+
+        WebContextInitParameter(String qualifiedName,
+                                String defaultValue,
+                                boolean deprecated,
+                                WebContextInitParameter alternate,
+                                DeprecationLoggingStrategy loggingStrategy) {
+
+            this(qualifiedName, defaultValue, deprecated, alternate);
+            this.loggingStrategy = loggingStrategy;
+
+        }
+
+
+    // --------------------------------------------------------- Private Methods
+
+
+        private WebContextInitParameter getAlternate() {
+
+            return alternate;
+
+        }
+
+
+        private boolean isDeprecated() {
+
+            return deprecated;
+
+        }
+
+    }
+
+    /**
+     * <p>An <code>enum</code> of all boolean context initalization parameters
+     * recognized by the implementation.</p>
+     */
+    public enum BooleanWebContextInitParameter {
+
+
+        // implementation note:
+        // if a parameter is to be deprecated,
+        // then the <name>Deprecated enum element
+        // *must* appear after the one that is taking
+        // its place.  The reporting logic depends on this
+
+        DisplayConfiguration(
+              "com.sun.faces.displayConfiguration",
+              false
+        ),
+        ValidateFacesConfigFiles(
+              "com.sun.faces.validateXml",
+              false
+        ),
+        VerifyFacesConfigObjects(
+              "com.sun.faces.verifyObjects",
+              false
+        ),
+        ForceLoadFacesConfigFiles(
+              "com.sun.faces.forceLoadConfiguration",
+              false
+        ),
+        DisableArtifactVersioning(
+              "com.sun.faces.disableVersionTracking",
+              false,
+              true,
+              null
+        ),
+        DisableClientStateEncryption(
+              "com.sun.faces.disableClientStateEncryption",
+              false
+        ),
+        EnableClientStateDebugging(
+              "com.sun.faces.enableClientStateDebugging",
+              false
+        ),
+        EnableHtmlTagLibraryValidator(
+              "com.sun.faces.enableHtmlTagLibValidator",
+              false
+        ),
+        EnableCoreTagLibraryValidator(
+              "com.sun.faces.enableCoreTagLibValidator",
+              false
+        ),
+        PreferXHTMLContentType(
+              "com.sun.faces.preferXHTML",
+              false
+        ),
+        PreferXHTMLContextTypeDeprecated(
+              "com.sun.faces.PreferXHTML",
+              false,
+              true,
+              PreferXHTMLContentType
+        ),
+        CompressViewState(
+              "com.sun.faces.compressViewState",
+              true
+        ),
+        CompressViewStateDeprecated(
+              "com.sun.faces.COMPRESS_STATE",
+              true,
+              true,
+              CompressViewState
+        ),
+        CompressJavaScript(
+            "com.sun.faces.compressJavaScript",
+            true
+        ),
+        ExternalizeJavaScriptDeprecated(
+            "com.sun.faces.externalizeJavaScript",
+            true,
+            true,
+            null
+        ),
+        SendPoweredByHeader(
+              "com.sun.faces.sendPoweredByHeader",
+              false
+        ),
+        EnableJSStyleHiding(
+            "com.sun.faces.enableJSStyleHiding",
+             false
+        ),
+        EnableScriptInAttributeValue(
+            "com.sun.faces.enableScriptsInAttributeValues",
+             true
+        ),
+        WriteStateAtFormEnd(
+            "com.sun.faces.writeStateAtFormEnd",
+            true
+        ),
+        EnableLazyBeanValidation(
+             "com.sun.faces.enableLazyBeanValidation",
+             true
+        ),
+        EnableLoadBundle11Compatibility(
+             "com.sun.faces.enabledLoadBundle11Compatibility",
+             false
+        ),
+        EnableRestoreView11Compatibility(
+              "com.sun.faces.enableRestoreView11Compatibility",
+              false
+        ),
+        SerializeServerState(
+              StateManager.SERIALIZE_SERVER_STATE_PARAM_NAME,
+              false
+        ),
+        SerializeServerStateDeprecated(
+              "com.sun.faces.serializeServerState",
+              false,
+               true,
+                SerializeServerState
+        ),
+        EnableViewStateIdRendering(
+            "com.sun.faces.enableViewStateIdRendering",
+            true
+        ),
+        RegisterConverterPropertyEditors(
+            "com.sun.faces.registerConverterPropertyEditors",
+            false
+        ),
+        EnableGroovyScripting(
+            "com.sun.faces.enableGroovyScripting",
+            false
+        ),
+        DisableFaceletJSFViewHandler(
+              ViewHandler.DISABLE_FACELET_JSF_VIEWHANDLER_PARAM_NAME,
+              false
+        ),
+        DisableDefaultBeanValidator(
+                BeanValidator.DISABLE_DEFAULT_BEAN_VALIDATOR_PARAM_NAME,
+                false),
+        DateTimeConverterUsesSystemTimezone(
+              Converter.DATETIMECONVERTER_DEFAULT_TIMEZONE_IS_SYSTEM_TIMEZONE_PARAM_NAME,
+              false
+        ),
+        EnableHttpMethodRestrictionPhaseListener(
+              "com.sun.faces.ENABLE_HTTP_METHOD_RESTRICTION_PHASE_LISTENER",
+              false
+        ),
+        FaceletsSkipComments(
+              ViewHandler.FACELETS_SKIP_COMMENTS_PARAM_NAME,
+              false
+        ),
+        FaceletsSkipCommentsDeprecated(
+              "facelets.SKIP_COMMENTS",
+              false,
+              true, 
+              FaceletsSkipComments,
+              new FaceletsConfigParamLoggingStrategy()
+        ),
+        PartialStateSaving(
+              StateManager.PARTIAL_STATE_SAVING_PARAM_NAME,
+              true
+        ),
+        GenerateUniqueServerStateIds(
+              "com.sun.faces.generateUniqueServerStateIds",
+              true
+        ),
+        AutoCompleteOffOnViewState(
+              "com.sun.faces.autoCompleteOffOnViewState",
+              true
+        ),
+        EnableThreading(
+              "com.sun.faces.enableThreading",
+              false
+        ),
+        AllowTextChildren(
+            "com.sun.faces.allowTextChildren",
+            false
+        ),
+        CacheResourceModificationTimestamp(
+              "com.sun.faces.cacheResourceModificationTimestamp",
+              false
+        ),
+        EnableAgressiveSessionDirtying(
+              "com.sun.faces.enableAgressiveSessionDirtying",
+              false
+        ),
+        EnableDistributable(
+              "com.sun.faces.enableDistributable",
+              false
+        ),
+        EnableMissingResourceLibraryDetection(
+              "com.sun.faces.enableMissingResourceLibraryDetection",
+              false
+        ),
+        DisableIdUniquenessCheck(
+            "com.sun.faces.disableIdUniquenessCheck",
+            false),
+        EnableTransitionTimeNoOpFlash(
+                "com.sun.faces.enableTransitionTimeNoOpFlash",
+                false),
+        NamespaceParameters(
+            "com.sun.faces.namespaceParameters",
+            false);
+
+        private BooleanWebContextInitParameter alternate;
+
+        private String qualifiedName;
+        private boolean defaultValue;
+        private boolean deprecated;
+        private DeprecationLoggingStrategy loggingStrategy;
+
+
+    // ---------------------------------------------------------- Public Methods
+
+
+        public boolean getDefaultValue() {
+
+            return defaultValue;
+
+        }
+
+
+        public String getQualifiedName() {
+
+            return qualifiedName;
+
+        }
+
+
+        DeprecationLoggingStrategy getDeprecationLoggingStrategy() {
+
+            return loggingStrategy;
+
+        }
+
+
+    // ------------------------------------------------- Package Private Methods
+
+
+        BooleanWebContextInitParameter(String qualifiedName,
+                                       boolean defaultValue) {
+
+            this(qualifiedName, defaultValue, false, null);
+
+        }
+
+
+        BooleanWebContextInitParameter(String qualifiedName,
+                                       boolean defaultValue,
+                                       boolean deprecated,
+                                       BooleanWebContextInitParameter alternate) {
+
+            this.qualifiedName = qualifiedName;
+            this.defaultValue = defaultValue;
+            this.deprecated = deprecated;
+            this.alternate = alternate;
+
+        }
+
+
+        BooleanWebContextInitParameter(String qualifiedName,
+                                      boolean defaultValue,
+                                      boolean deprecated,
+                                      BooleanWebContextInitParameter alternate,
+                                      DeprecationLoggingStrategy loggingStrategy) {
+
+            this(qualifiedName, defaultValue, deprecated, alternate);
+            this.loggingStrategy = loggingStrategy;
+
+        }
+
+
+    // --------------------------------------------------------- Private Methods
+
+
+        private BooleanWebContextInitParameter getAlternate() {
+
+            return alternate;
+
+        }
+
+
+        private boolean isDeprecated() {
+
+            return deprecated;
+
+        }
+
+    }
+
+    /**
+     * <p>An <code>enum</code> of all environment entries (specified in the
+     * web.xml) recognized by the implemenetation.</p>
+     */
+    public enum WebEnvironmentEntry {
+
+
+        ProjectStage(javax.faces.application.ProjectStage.PROJECT_STAGE_JNDI_NAME);
+
+        private static final String JNDI_PREFIX = "java:comp/env/";
+        private String qualifiedName;
+
+
+    // ---------------------------------------------------------- Public Methods
+
+
+         public String getQualifiedName() {
+
+            return qualifiedName;
+
+        }
+
+
+    // ------------------------------------------------- Package Private Methods
+
+
+        WebEnvironmentEntry(String qualifiedName) {
+
+            if (qualifiedName.startsWith(JNDI_PREFIX)) {
+                this.qualifiedName = qualifiedName;
+            } else {
+                this.qualifiedName = JNDI_PREFIX + qualifiedName;
+            }
+
+        }
+
+    }
+
+    /**
+     * <p>An <code>enum</code> of all possible values for the <code>disableUnicodeEscaping</code>
+     * configuration parameter.</p>
+     */
+    public enum DisableUnicodeEscaping {
+        True("true"),
+        False("false"),
+        Auto("auto");
+
+        private final String value;
+
+        DisableUnicodeEscaping(String value) {
+            this.value = value;
+        }
+
+        public static DisableUnicodeEscaping getByValue(String value)
+        {
+            for (DisableUnicodeEscaping disableUnicodeEscaping : DisableUnicodeEscaping.values()) {
+                if (disableUnicodeEscaping.value.equals(value)) {
+                    return disableUnicodeEscaping;
+                }
+            }
+
+            return null;
+        }
+    }
+
+
+    // ----------------------------------------------------------- Inner Classes
+
+
+    private interface DeprecationLoggingStrategy {
+
+        boolean shouldBeLogged(WebConfiguration configuration);
+
+    }
+
+
+    private static class FaceletsConfigParamLoggingStrategy implements DeprecationLoggingStrategy {
+
+        public boolean shouldBeLogged(WebConfiguration configuration) {
+            return !configuration.isOptionEnabled(BooleanWebContextInitParameter.DisableFaceletJSFViewHandler);
+        }
+
+    } // END FaceletsConfigParamLoggingStrategy
+
+
+    private interface DeferredLoggingAction {
+
+        void log();
+
+    } // END DeferredLogginAction
+
+
+    private class DeferredParameterLoggingAction implements DeferredLoggingAction {
+
+        private WebContextInitParameter parameter;
+        private Level loggingLevel;
+        private String logKey;
+        private Object[] params;
+
+
+        DeferredParameterLoggingAction(WebContextInitParameter parameter,
+                                       Level loggingLevel,
+                                       String logKey,
+                                       Object[] params) {
+
+            this.parameter = parameter;
+            this.loggingLevel = loggingLevel;
+            this.logKey = logKey;
+            this.params = params;
+
+        }
+
+        public void log() {
+
+            if (WebConfiguration.LOGGER.isLoggable(loggingLevel)) {
+                DeprecationLoggingStrategy strategy = parameter.getDeprecationLoggingStrategy();
+                if (strategy != null && strategy.shouldBeLogged(WebConfiguration.this)) {
+                    WebConfiguration.LOGGER.log(loggingLevel, logKey, params);
+                }
+            }
+
+        }
+
+    } // END DeferredParameterLogginAction
+
+
+    private class DeferredBooleanParameterLoggingAction implements DeferredLoggingAction {
+
+        private BooleanWebContextInitParameter parameter;
+        private Level loggingLevel;
+        private String logKey;
+        private Object[] params;
+
+        DeferredBooleanParameterLoggingAction(BooleanWebContextInitParameter parameter,
+                                              Level loggingLevel,
+                                              String logKey,
+                                              Object[] params) {
+            this.parameter = parameter;
+            this.loggingLevel = loggingLevel;
+            this.logKey = logKey;
+            this.params = params;
+        }
+
+        public void log() {
+
+            if (WebConfiguration.LOGGER.isLoggable(loggingLevel)) {
+                DeprecationLoggingStrategy strategy = parameter.getDeprecationLoggingStrategy();
+                if (strategy != null && strategy.shouldBeLogged(WebConfiguration.this)) {
+                    WebConfiguration.LOGGER.log(loggingLevel, logKey, params);
+                }
+            }
+
+        }
+
+    } // END DeferredBooleanParameterLoggingAction
+
+} // END WebConfiguration
diff --git a/jsf-ri/src/main/java/com/sun/faces/config/configprovider/BaseWebConfigResourceProvider.java b/jsf-ri/src/main/java/com/sun/faces/config/configprovider/BaseWebConfigResourceProvider.java
index 3ec3e3f..b47c808 100644
--- a/jsf-ri/src/main/java/com/sun/faces/config/configprovider/BaseWebConfigResourceProvider.java
+++ b/jsf-ri/src/main/java/com/sun/faces/config/configprovider/BaseWebConfigResourceProvider.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -54,6 +58,8 @@ import static com.sun.faces.config.WebConfiguration.WebContextInitParameter.Java
 import com.sun.faces.util.Util;
 import com.sun.faces.util.FacesLogger;
 import com.sun.faces.spi.ConfigurationResourceProvider;
+import java.net.URI;
+import java.net.URISyntaxException;
 
 /**
  * 
@@ -68,16 +74,16 @@ public abstract class BaseWebConfigResourceProvider implements
     // ------------------------------ Methods from ConfigurationResourceProvider
 
 
-    public Collection<URL> getResources(ServletContext context) {
+    public Collection<URI> getResources(ServletContext context) {
 
         WebConfiguration webConfig = WebConfiguration.getInstance(context);
         String paths = webConfig.getOptionValue(getParameter());
-        Set<URL> urls = new LinkedHashSet<URL>(6);
+        Set<URI> urls = new LinkedHashSet<URI>(6);
         if (paths != null) {
             for (String token : Util.split(context, paths.trim(), getSeparatorRegex())) {
                 String path = token.trim();
                 if (!isExcluded(path) && path.length() != 0) {
-                    URL u = getContextURLForPath(context, path);
+                    URI u = getContextURLForPath(context, path);
                     if (u != null) {
                         urls.add(u);
                     } else {
@@ -107,13 +113,22 @@ public abstract class BaseWebConfigResourceProvider implements
     protected abstract String getSeparatorRegex();
 
 
-    protected URL getContextURLForPath(ServletContext context, String path) {
+    protected URI getContextURLForPath(ServletContext context, String path) {
 
+        URI result = null;
         try {
-            return context.getResource(path);
+            URL url = context.getResource(path);
+            if (null != url) {
+                String urlString = url.toExternalForm();
+                urlString = urlString.replaceAll(" ", "%20");
+                result = new URI(urlString);            
+            }
         } catch (MalformedURLException mue) {
             throw new FacesException(mue);
+        } catch (URISyntaxException use) {
+            throw new FacesException(use);
         }
+        return result;
 
     }
 
diff --git a/jsf-ri/src/main/java/com/sun/faces/config/configprovider/MetaInfFaceletTaglibraryConfigProvider.java b/jsf-ri/src/main/java/com/sun/faces/config/configprovider/MetaInfFaceletTaglibraryConfigProvider.java
index b01e38d..de80751 100644
--- a/jsf-ri/src/main/java/com/sun/faces/config/configprovider/MetaInfFaceletTaglibraryConfigProvider.java
+++ b/jsf-ri/src/main/java/com/sun/faces/config/configprovider/MetaInfFaceletTaglibraryConfigProvider.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -36,6 +40,7 @@
 
 package com.sun.faces.config.configprovider;
 
+import java.net.URISyntaxException;
 import java.net.URL;
 import java.util.Collection;
 import java.util.List;
@@ -50,6 +55,7 @@ import javax.faces.FacesException;
 import com.sun.faces.facelets.util.Classpath;
 import com.sun.faces.util.Util;
 import com.sun.faces.spi.ConfigurationResourceProvider;
+import java.net.URI;
 
 /**
  *
@@ -73,22 +79,34 @@ public class MetaInfFaceletTaglibraryConfigProvider implements
         "META-INF/jstl-fn.taglib.xml"
     };
 
+    private static final String[] BUILT_IN_TAGLIB_XML_FILES = {
+        "META-INF/mojarra_ext.taglib.xml"
+        
+    };
 
     // -------------------------------------------- Methods from ConfigProcessor
 
 
-    public Collection<URL> getResources(ServletContext context) {
+    public Collection<URI> getResources(ServletContext context) {
 
         try {
-            URL[] urls = Classpath.search(Util.getCurrentLoader(this),
+            URL[] externalTaglibUrls = Classpath.search(Util.getCurrentLoader(this),
                                           "META-INF/",
                                           SUFFIX);
+            URL[] builtInTaglibUrls = new URL[BUILT_IN_TAGLIB_XML_FILES.length];
+            ClassLoader runtimeClassLoader = this.getClass().getClassLoader();
+            for (int i = 0; i < BUILT_IN_TAGLIB_XML_FILES.length; i++) {
+                builtInTaglibUrls[i] = runtimeClassLoader.getResource(BUILT_IN_TAGLIB_XML_FILES[i]);
+            }
+            URL[] urls = new URL[externalTaglibUrls.length + builtInTaglibUrls.length];
+            System.arraycopy(externalTaglibUrls, 0, urls, 0, externalTaglibUrls.length);
+            System.arraycopy(builtInTaglibUrls, 0, urls, externalTaglibUrls.length, builtInTaglibUrls.length);
             // perform some 'correctness' checking.  If the user has
             // removed the FaceletViewHandler from their configuration,
             // but has left the jsf-facelets.jar in the classpath, we
             // need to ignore the default configuration resouces from
             // that JAR.
-            List<URL> urlsList = pruneURLs(urls);
+            List<URI> urlsList = pruneURLs(urls);
 
             // special case for finding taglib files in WEB-INF/classes/META-INF
             Set paths = context.getResourcePaths(WEB_INF_CLASSES);
@@ -96,7 +114,11 @@ public class MetaInfFaceletTaglibraryConfigProvider implements
                 for (Object path : paths) {
                     String p = path.toString();
                     if (p.endsWith(".taglib.xml")) {
-                        urlsList.add(context.getResource(p));
+                        try {
+                            urlsList.add(new URI(context.getResource(p).toExternalForm()));
+                        } catch (URISyntaxException ex) {
+                            throw new FacesException(ex);
+                        }
                     }
                 }
             }
@@ -111,9 +133,9 @@ public class MetaInfFaceletTaglibraryConfigProvider implements
     // --------------------------------------------------------- Private Methods
 
 
-    private List<URL> pruneURLs(URL[] urls) {
+    private List<URI> pruneURLs(URL[] urls) {
 
-        List<URL> ret = null;
+        List<URI> ret = null;
         if (urls != null && urls.length > 0) {
             for (URL url : urls) {
                 String u = url.toString();
@@ -126,9 +148,15 @@ public class MetaInfFaceletTaglibraryConfigProvider implements
                 }
                 if (!found) {
                     if (ret == null) {
-                        ret = new ArrayList<URL>();
+                        ret = new ArrayList<URI>();
+                    }
+                    try {
+                        String urlString = url.toExternalForm();
+                        urlString = urlString.replaceAll(" ", "%20");
+                        ret.add(new URI(urlString));
+                    } catch (URISyntaxException ex) {
+                        throw new FacesException(ex);
                     }
-                    ret.add(url);
                 }
             }
         }
diff --git a/jsf-ri/src/main/java/com/sun/faces/config/configprovider/MetaInfFacesConfigResourceProvider.java b/jsf-ri/src/main/java/com/sun/faces/config/configprovider/MetaInfFacesConfigResourceProvider.java
index 988cf77..7a3b82f 100644
--- a/jsf-ri/src/main/java/com/sun/faces/config/configprovider/MetaInfFacesConfigResourceProvider.java
+++ b/jsf-ri/src/main/java/com/sun/faces/config/configprovider/MetaInfFacesConfigResourceProvider.java
@@ -1,171 +1,188 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package com.sun.faces.config.configprovider;
-
-import com.sun.faces.util.Util;
-import com.sun.faces.config.WebConfiguration;
-import com.sun.faces.facelets.util.Classpath;
-import com.sun.faces.spi.ConfigurationResourceProvider;
-
-import javax.faces.FacesException;
-import javax.servlet.ServletContext;
-import java.io.IOException;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.Enumeration;
-import java.util.List;
-import java.util.Map;
-import java.util.SortedMap;
-import java.util.TreeMap;
-import java.util.Collection;
-import java.util.Set;
-import java.util.HashSet;
-import java.util.Arrays;
-import java.util.regex.Pattern;
-import java.util.regex.Matcher;
-
-/**
- *
- */
-public class MetaInfFacesConfigResourceProvider implements
-      ConfigurationResourceProvider {
-
-    /**
-     * <p>This <code>Pattern</code> will pick the the JAR file name if present
-     * within a URL.</p>
-     */
-    private static final Pattern JAR_PATTERN = Pattern.compile(".*/(\\S*\\.jar).*");
-
-    /**
-     * <p>The resource path for faces-config files included in the
-     * <code>META-INF</code> directory of JAR files.</p>
-     */
-    private static final String META_INF_RESOURCES =
-         "META-INF/faces-config.xml";
-
-    private static final String WEB_INF_CLASSES =
-          "/WEB-INF/classes/META-INF";
-
-
-    // ------------------------------ Methods From ConfigurationResourceProvider
-
-
-    /**
-     * @see com.sun.faces.spi.ConfigurationResourceProvider#getResources(javax.servlet.ServletContext)
-     */
-    public Collection<URL> getResources(ServletContext context) {
-
-        WebConfiguration webConfig = WebConfiguration.getInstance(context);
-        String duplicateJarPattern = webConfig.getOptionValue(WebConfiguration.WebContextInitParameter.DuplicateJARPattern);
-        Pattern duplicatePattern = null;
-        if (duplicateJarPattern != null) {
-            duplicatePattern = Pattern.compile(duplicateJarPattern);
-        }
-        SortedMap<String, Set<URL>> sortedJarMap = new TreeMap<String, Set<URL>>();
-        //noinspection CollectionWithoutInitialCapacity
-        List<URL> unsortedResourceList = new ArrayList<URL>();
-
-        try {
-            for (URL url : loadURLs(context)) {
-
-                String jarUrl = url.toString();
-                String jarName = null;
-                Matcher m = JAR_PATTERN.matcher(jarUrl);
-                if (m.matches()) {
-                    jarName = m.group(1);
-                }
-                if (jarName != null) {
-                    if (duplicatePattern != null) {
-                        m = duplicatePattern.matcher(jarName);
-                        if (m.matches()) {
-                            jarName = m.group(1);
-                        }
-                    }
-
-                    Set<URL> urls = sortedJarMap.get(jarName);
-                    if (urls == null) {
-                        urls = new HashSet<URL>();
-                        sortedJarMap.put(jarName, urls);
-                    }
-                    urls.add(url);
-                } else {
-                    unsortedResourceList.add(0, url);
-                }
-            }
-        } catch (IOException e) {
-            throw new FacesException(e);
-        }
-        // Load the sorted resources first:
-        List<URL> result =
-              new ArrayList<URL>(sortedJarMap.size() + unsortedResourceList
-                    .size());
-        for (Map.Entry<String, Set<URL>> entry : sortedJarMap.entrySet()) {
-            result.addAll(entry.getValue());
-        }
-        // Then load the unsorted resources
-        result.addAll(unsortedResourceList);
-        return result;
-        
-    }
-
-
-    // --------------------------------------------------------- Private Methods
-
-
-    private Collection<URL> loadURLs(ServletContext context) throws IOException {
-
-        Set<URL> urls = new HashSet<URL>();
-        for (Enumeration<URL> e = Util.getCurrentLoader(this).getResources(META_INF_RESOURCES); e.hasMoreElements();) {
-            urls.add(e.nextElement());            
-        }
-        urls.addAll(Arrays.asList(Classpath.search("META-INF/", ".faces-config.xml")));
-        // special case for finding taglib files in WEB-INF/classes/META-INF
-        Set paths = context.getResourcePaths(WEB_INF_CLASSES);
-        if (paths != null) {
-            for (Object path : paths) {
-                String p = path.toString();
-                if (p.endsWith(".taglib.xml")) {
-                    urls.add(context.getResource(p));
-                }
-            }
-        }
-        return urls;
-        
-    }
-    
-
-}
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.config.configprovider;
+
+import com.sun.faces.util.Util;
+import com.sun.faces.config.WebConfiguration;
+import com.sun.faces.facelets.util.Classpath;
+import com.sun.faces.spi.ConfigurationResourceProvider;
+import java.net.URISyntaxException;
+
+import javax.faces.FacesException;
+import javax.servlet.ServletContext;
+import java.io.IOException;
+import java.net.URI;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.Enumeration;
+import java.util.List;
+import java.util.Map;
+import java.util.SortedMap;
+import java.util.TreeMap;
+import java.util.Collection;
+import java.util.Set;
+import java.util.HashSet;
+import java.util.regex.Pattern;
+import java.util.regex.Matcher;
+
+/**
+ *
+ */
+public class MetaInfFacesConfigResourceProvider implements
+      ConfigurationResourceProvider {
+
+    /**
+     * <p>This <code>Pattern</code> will pick the the JAR file name if present
+     * within a URL.</p>
+     */
+    private static final Pattern JAR_PATTERN = Pattern.compile(".*/(\\S*\\.jar).*");
+
+    /**
+     * <p>The resource path for faces-config files included in the
+     * <code>META-INF</code> directory of JAR files.</p>
+     */
+    private static final String META_INF_RESOURCES =
+         "META-INF/faces-config.xml";
+
+    private static final String WEB_INF_CLASSES =
+          "/WEB-INF/classes/META-INF";
+
+
+    // ------------------------------ Methods From ConfigurationResourceProvider
+
+
+    /**
+     * @see com.sun.faces.spi.ConfigurationResourceProvider#getResources(javax.servlet.ServletContext)
+     */
+    public Collection<URI> getResources(ServletContext context) {
+
+        WebConfiguration webConfig = WebConfiguration.getInstance(context);
+        String duplicateJarPattern = webConfig.getOptionValue(WebConfiguration.WebContextInitParameter.DuplicateJARPattern);
+        Pattern duplicatePattern = null;
+        if (duplicateJarPattern != null) {
+            duplicatePattern = Pattern.compile(duplicateJarPattern);
+        }
+        SortedMap<String, Set<URI>> sortedJarMap = new TreeMap<String, Set<URI>>();
+        //noinspection CollectionWithoutInitialCapacity
+        List<URI> unsortedResourceList = new ArrayList<URI>();
+
+        try {
+            for (URI uri : loadURLs(context)) {
+
+                String jarUrl = uri.toString();
+                String jarName = null;
+                Matcher m = JAR_PATTERN.matcher(jarUrl);
+                if (m.matches()) {
+                    jarName = m.group(1);
+                }
+                if (jarName != null) {
+                    if (duplicatePattern != null) {
+                        m = duplicatePattern.matcher(jarName);
+                        if (m.matches()) {
+                            jarName = m.group(1);
+                        }
+                    }
+
+                    Set<URI> uris = sortedJarMap.get(jarName);
+                    if (uris == null) {
+                        uris = new HashSet<URI>();
+                        sortedJarMap.put(jarName, uris);
+                    }
+                    uris.add(uri);
+                } else {
+                    unsortedResourceList.add(0, uri);
+                }
+            }
+        } catch (IOException e) {
+            throw new FacesException(e);
+        }
+        // Load the sorted resources first:
+        List<URI> result =
+              new ArrayList<URI>(sortedJarMap.size() + unsortedResourceList
+                    .size());
+        for (Map.Entry<String, Set<URI>> entry : sortedJarMap.entrySet()) {
+            result.addAll(entry.getValue());
+        }
+        // Then load the unsorted resources
+        result.addAll(unsortedResourceList);
+
+        return result;
+        
+    }
+
+
+    // --------------------------------------------------------- Private Methods
+
+
+    private Collection<URI> loadURLs(ServletContext context) throws IOException {
+
+        Set<URI> urls = new HashSet<URI>();
+        try {
+            for (Enumeration<URL> e = Util.getCurrentLoader(this).getResources(META_INF_RESOURCES); e.hasMoreElements();) {
+                String urlString = e.nextElement().toExternalForm();
+                urlString = urlString.replaceAll(" ", "%20");                
+                urls.add(new URI(urlString));
+            }
+            URL [] urlArray = Classpath.search("META-INF/", ".faces-config.xml");
+            for (URL cur : urlArray) {
+                String urlString = cur.toExternalForm();
+                urlString = urlString.replaceAll(" ", "%20");
+                urls.add(new URI(urlString));
+            }
+            // special case for finding taglib files in WEB-INF/classes/META-INF
+            Set paths = context.getResourcePaths(WEB_INF_CLASSES);
+            if (paths != null) {
+                for (Object path : paths) {
+                    String p = path.toString();
+                    if (p.endsWith(".taglib.xml")) {
+                        String urlString = context.getResource(p).toExternalForm();
+                        urlString = urlString.replaceAll(" ", "%20");
+                        urls.add(new URI(urlString));
+                    }
+                }
+            }
+        } catch (URISyntaxException ex) {
+            throw new IOException(ex);
+        }
+        return urls;
+        
+    }
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/config/configprovider/MojarraFacesConfigResourceProvider.java b/jsf-ri/src/main/java/com/sun/faces/config/configprovider/MojarraFacesConfigResourceProvider.java
index 99d0f63..a09c942 100644
--- a/jsf-ri/src/main/java/com/sun/faces/config/configprovider/MojarraFacesConfigResourceProvider.java
+++ b/jsf-ri/src/main/java/com/sun/faces/config/configprovider/MojarraFacesConfigResourceProvider.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -38,10 +42,13 @@ package com.sun.faces.config.configprovider;
 
 import com.sun.faces.spi.ConfigurationResourceProvider;
 
+import java.net.URI;
 import java.net.URL;
+import java.net.URISyntaxException;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
+import javax.faces.FacesException;
 
 import javax.servlet.ServletContext;
 
@@ -61,14 +68,24 @@ public class MojarraFacesConfigResourceProvider implements
     /**
      * @see ConfigurationResourceProvider#getResources(javax.servlet.ServletContext)
      */
-    public Collection<URL> getResources(ServletContext context) {
+    public Collection<URI> getResources(ServletContext context) {
 
-        List<URL> list = new ArrayList<URL>(1);
+        List<URI> list = new ArrayList<URI>(1);
         // Don't use Util.getCurrentLoader().  This config resource should
         // be available from the same classloader that loaded this instance.
         // Doing so allows us to be more OSGi friendly.
         ClassLoader loader = this.getClass().getClassLoader();
-        list.add(loader.getResource(JSF_RI_CONFIG));
+        try {
+            URL url = loader.getResource(JSF_RI_CONFIG);
+            String urlStr = url.toExternalForm();
+            if (urlStr.contains(" ")) {
+                urlStr = urlStr.replaceAll(" ", "%20");
+            }
+
+            list.add(new URI(urlStr));
+        } catch (URISyntaxException ex) {
+            throw new FacesException(ex);
+        }
         return list;
 
     }
diff --git a/jsf-ri/src/main/java/com/sun/faces/config/configprovider/WebAppFlowConfigResourceProvider.java b/jsf-ri/src/main/java/com/sun/faces/config/configprovider/WebAppFlowConfigResourceProvider.java
new file mode 100644
index 0000000..249420c
--- /dev/null
+++ b/jsf-ri/src/main/java/com/sun/faces/config/configprovider/WebAppFlowConfigResourceProvider.java
@@ -0,0 +1,139 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.config.configprovider;
+
+import com.sun.faces.RIConstants;
+import com.sun.faces.spi.ConfigurationResourceProvider;
+
+import com.sun.faces.util.FacesLogger;
+import java.net.MalformedURLException;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+
+import java.util.Set;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.servlet.ServletContext;
+
+/**
+ *
+ */
+public class WebAppFlowConfigResourceProvider implements
+      ConfigurationResourceProvider {
+    
+    private static final Logger logger = FacesLogger.CONFIG.getLogger();
+
+    // ------------------------------ Methods from ConfigurationResourceProvider
+
+
+    /**
+     * @see ConfigurationResourceProvider#getResources(javax.servlet.ServletContext)
+     */
+    @Override
+    public Collection<URI> getResources(ServletContext context) {
+
+        List<URI> list = Collections.emptyList();
+        Set<String> allPaths = context.getResourcePaths("/");
+        
+        if (null == allPaths) {
+            return list;
+        }
+        list = null;
+
+        for (String cur : allPaths) {
+            if (!cur.startsWith("/META-INF")) {
+                if (cur.equals("/WEB-INF/")) {
+                    Set<String> webInfPaths = context.getResourcePaths(cur);
+                    if (null != webInfPaths) {
+                        for (String webInfCur : webInfPaths) {
+                            if (!cur.equals("/WEB-INF/classes/") &&
+                                webInfCur.endsWith("/")) {
+                                list = inspectDirectory(context, webInfCur, list);
+                            }
+                        }
+                    }
+                } else if (cur.endsWith("/")) {
+                    list = inspectDirectory(context, cur, list);
+                }
+            }
+        }
+        
+        return (null == list) ? Collections.EMPTY_LIST : list;
+
+    }
+    
+    private List<URI> inspectDirectory(ServletContext context, String toInspect, List<URI> list) {
+        URL curUrl = null;
+        
+        Set<String> allPaths = context.getResourcePaths(toInspect);
+        if (null == allPaths) {
+            return list;
+        }
+        
+        for (String cur : allPaths) {
+            if (cur.endsWith(RIConstants.FLOW_DEFINITION_ID_SUFFIX)) {
+                if (null == list) {
+                    list = new ArrayList<URI>();
+                }
+                try {
+                    curUrl = context.getResource(cur);
+                    list.add(curUrl.toURI());
+                } catch (MalformedURLException ex) {
+                    if (logger.isLoggable(Level.SEVERE)) {
+                        logger.log(Level.SEVERE, "Unable to get resource for {0}" + cur, ex);
+                    }
+                } catch (URISyntaxException use) {
+                    if (logger.isLoggable(Level.SEVERE)) {
+                        logger.log(Level.SEVERE, "Unable to get URI for {0}" + curUrl.toExternalForm(), use);
+                    }
+                    
+                }
+            }
+        }
+        return list;
+    }
+
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/config/configprovider/WebFaceletTaglibResourceProvider.java b/jsf-ri/src/main/java/com/sun/faces/config/configprovider/WebFaceletTaglibResourceProvider.java
index 940d861..37f115a 100644
--- a/jsf-ri/src/main/java/com/sun/faces/config/configprovider/WebFaceletTaglibResourceProvider.java
+++ b/jsf-ri/src/main/java/com/sun/faces/config/configprovider/WebFaceletTaglibResourceProvider.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/config/configprovider/WebFacesConfigResourceProvider.java b/jsf-ri/src/main/java/com/sun/faces/config/configprovider/WebFacesConfigResourceProvider.java
index f22ba42..d37c67a 100644
--- a/jsf-ri/src/main/java/com/sun/faces/config/configprovider/WebFacesConfigResourceProvider.java
+++ b/jsf-ri/src/main/java/com/sun/faces/config/configprovider/WebFacesConfigResourceProvider.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -36,7 +40,7 @@
 
 package com.sun.faces.config.configprovider;
 
-import java.net.URL;
+import java.net.URI;
 import java.util.Collection;
 
 import javax.servlet.ServletContext;
@@ -67,12 +71,12 @@ public class WebFacesConfigResourceProvider extends BaseWebConfigResourceProvide
     /**
      * @see com.sun.faces.spi.ConfigurationResourceProvider#getResources(javax.servlet.ServletContext)
      */
-    public Collection<URL> getResources(ServletContext context) {
+    public Collection<URI> getResources(ServletContext context) {
 
-        Collection<URL> urls = super.getResources(context);
+        Collection<URI> urls = super.getResources(context);
 
         // Step 5, parse "/WEB-INF/faces-config.xml" if it exists
-        URL webFacesConfig = getContextURLForPath(context, WEB_INF_RESOURCE);
+        URI webFacesConfig = getContextURLForPath(context, WEB_INF_RESOURCE);
         if (webFacesConfig != null) {
             urls.add(webFacesConfig);
         }
diff --git a/jsf-ri/src/main/java/com/sun/faces/config/processor/AbstractConfigProcessor.java b/jsf-ri/src/main/java/com/sun/faces/config/processor/AbstractConfigProcessor.java
index 964127a..97d6f82 100644
--- a/jsf-ri/src/main/java/com/sun/faces/config/processor/AbstractConfigProcessor.java
+++ b/jsf-ri/src/main/java/com/sun/faces/config/processor/AbstractConfigProcessor.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -36,8 +40,9 @@
 
 package com.sun.faces.config.processor;
 
-import com.sun.faces.application.ApplicationResourceBundle;
 import com.sun.faces.application.ApplicationAssociate;
+import com.sun.faces.application.ApplicationResourceBundle;
+import com.sun.faces.application.ApplicationInstanceFactoryMetadataMap;
 import com.sun.faces.application.annotation.AnnotationManager;
 import com.sun.faces.config.ConfigurationException;
 import com.sun.faces.config.WebConfiguration;
@@ -52,6 +57,9 @@ import com.sun.faces.scripting.groovy.ELResolverProxy;
 import com.sun.faces.scripting.groovy.PhaseListenerProxy;
 import com.sun.faces.scripting.groovy.ViewHandlerProxy;
 import com.sun.faces.scripting.groovy.ActionListenerProxy;
+import com.sun.faces.spi.InjectionProvider;
+import com.sun.faces.spi.InjectionProviderException;
+import com.sun.faces.util.FacesLogger;
 import org.w3c.dom.NamedNodeMap;
 import org.w3c.dom.Node;
 
@@ -73,6 +81,11 @@ import java.text.MessageFormat;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.faces.FacesException;
+import javax.faces.application.ProjectStage;
 
 
 /**
@@ -85,10 +98,34 @@ public abstract class AbstractConfigProcessor implements ConfigProcessor {
 
 
     private ConfigProcessor nextProcessor;  
-
+    private static final Logger LOGGER = FacesLogger.CONFIG.getLogger();
 
     // -------------------------------------------- Methods from ConfigProcessor
+    
+    public AbstractConfigProcessor() {
+    }
 
+    private ApplicationInstanceFactoryMetadataMap<String,Object> getClassMetadataMap(ServletContext sc) {
+        ApplicationInstanceFactoryMetadataMap<String,Object> classMetadataMap = 
+                (ApplicationInstanceFactoryMetadataMap<String,Object>) sc.getAttribute(getClassMetadataMapKey());
+        if (null == classMetadataMap) {
+            classMetadataMap = new ApplicationInstanceFactoryMetadataMap(new ConcurrentHashMap<String, Object>());
+            sc.setAttribute(getClassMetadataMapKey(), classMetadataMap);
+        }
+        
+        return classMetadataMap;
+    }
+
+    @Override
+    public void initializeClassMetadataMap(ServletContext sc) {
+        getClassMetadataMap(sc);
+    }
+    
+    protected String getClassMetadataMapKey() {
+        return this.getClass().getName() + CLASS_METADATA_MAP_KEY_SUFFIX;
+    }
+    
+    private static final String CLASS_METADATA_MAP_KEY_SUFFIX = ".METADATA";
 
     /**
      * @see ConfigProcessor#setNext(ConfigProcessor)
@@ -99,6 +136,11 @@ public abstract class AbstractConfigProcessor implements ConfigProcessor {
         
     }
     
+    @Override
+    public ConfigProcessor getNext() {
+        return this.nextProcessor;
+    }
+    
 
     /**
      * @see ConfigProcessor#invokeNext(javax.servlet.ServletContext,com.sun.faces.config.DocumentInfo[])
@@ -199,12 +241,12 @@ public abstract class AbstractConfigProcessor implements ConfigProcessor {
 
     }
 
-    protected Class<?> findRootType(String source,
+    protected Class<?> findRootType(ServletContext sc, String source,
                                     Node sourceNode,
                                     Class<?>[] ctorArguments) {
 
         try {
-            Class<?> sourceClass = loadClass(source, this, null);
+            Class<?> sourceClass = loadClass(sc, source, this, null);
             for (Class<?> ctorArg : ctorArguments) {
                 if (ReflectionUtils.lookupConstructor(sourceClass, ctorArg) != null) {
                     return ctorArg;
@@ -221,11 +263,11 @@ public abstract class AbstractConfigProcessor implements ConfigProcessor {
     }
 
 
-    protected Object createInstance(String className, Node source) {
-        return createInstance(className, null, null, source);
+    protected Object createInstance(ServletContext sc, String className, Node source) {
+        return createInstance(sc, className, null, null, source);
     }
 
-    protected Object createInstance(String className,
+    protected Object createInstance(ServletContext sc, String className,
                                     Class rootType,
                                     Object root,
                                     Node source) {
@@ -233,9 +275,9 @@ public abstract class AbstractConfigProcessor implements ConfigProcessor {
         Object returnObject = null;
         if (className != null) {
             try {
-                clazz = loadClass(className, returnObject, null);
+                clazz = loadClass(sc, className, returnObject, null);
                 if (clazz != null) {
-                    if (isDevModeEnabled()) {
+                    if (isDevModeEnabled(sc)) {
                         Class<?>[] interfaces = clazz.getInterfaces();
                         if (interfaces != null) {
                             for (Class<?> c : interfaces) {
@@ -263,6 +305,28 @@ public abstract class AbstractConfigProcessor implements ConfigProcessor {
                     if (clazz != null && returnObject == null) {
                         returnObject = clazz.newInstance();
                     }
+                    
+                    ApplicationInstanceFactoryMetadataMap<String,Object>
+                            classMetadataMap = getClassMetadataMap(sc);
+
+                    if (classMetadataMap.hasAnnotations(className)) {
+                        InjectionProvider injectionProvider = (InjectionProvider) FacesContext.getCurrentInstance().getAttributes().get(ConfigManager.INJECTION_PROVIDER_KEY);
+
+                        try {
+                            injectionProvider.invokePostConstruct(returnObject);
+                        } catch (InjectionProviderException ex) {
+                            LOGGER.log(Level.SEVERE, "Unable to invoke @PostConstruct annotated method on instance " + className, ex);
+                            throw new FacesException(ex);
+                        }
+
+                        try {
+                            injectionProvider.inject(returnObject);
+                        } catch (InjectionProviderException ex) {
+                            LOGGER.log(Level.SEVERE, "Unable to inject instance" + className, ex);
+                            throw new FacesException(ex);
+                        }
+                    }
+                    
                 }
 
             } catch (ClassNotFoundException cnfe) {
@@ -299,12 +363,28 @@ public abstract class AbstractConfigProcessor implements ConfigProcessor {
     }
 
 
-    protected Class<?> loadClass(String className,
+    protected Class<?> loadClass(ServletContext sc, String className,
                                  Object fallback,
                                  Class<?> expectedType)
     throws ClassNotFoundException {
+        ApplicationInstanceFactoryMetadataMap<String,Object>
+                classMetadataMap = getClassMetadataMap(sc);
 
-        Class<?> clazz = Util.loadClass(className, fallback);
+        Class<?> clazz = (Class<?>) classMetadataMap.get(className);
+        if (null == clazz) {
+            try {
+                clazz =  Util.loadClass(className, fallback);
+                if (!this.isDevModeEnabled(sc)) {
+                    classMetadataMap.put(className, clazz);    
+                } else {
+                    classMetadataMap.scanForAnnotations(className, clazz);
+                }
+                assert (clazz != null);
+            } catch (Exception e) {
+                throw new FacesException(e.getMessage(), e);
+            }
+            
+        }
         if (expectedType != null && !expectedType.isAssignableFrom(clazz)) {
                 throw new ClassCastException();
         }
@@ -319,7 +399,7 @@ public abstract class AbstractConfigProcessor implements ConfigProcessor {
         ApplicationAssociate associate =
               ApplicationAssociate.getInstance(ctx.getExternalContext());
         AnnotationManager manager = associate.getAnnotationManager();
-        manager.applyConfigAnntations(ctx,
+        manager.applyConfigAnnotations(ctx,
                                       annotationType,
                                       ConfigManager.getAnnotatedClasses(ctx).get(annotationType));
         
@@ -360,11 +440,56 @@ public abstract class AbstractConfigProcessor implements ConfigProcessor {
     }
 
 
-    private boolean isDevModeEnabled() {
-        WebConfiguration webconfig = WebConfiguration.getInstance();
-        return (webconfig != null
-                  && "Development".equals(webconfig.getOptionValue(WebContextInitParameter.JavaxFacesProjectStage)));
+    private boolean isDevModeEnabled(ServletContext sc) {
+        return getProjectStage(sc).equals(ProjectStage.Development);
     }
+    
+    private ProjectStage getProjectStage(ServletContext sc) {
+        ProjectStage projectStage = null;
+        final String projectStageKey = AbstractConfigProcessor.class.getName() + ".PROJECTSTAGE";
+        projectStage = (ProjectStage) sc.getAttribute(projectStageKey);
+        
+        if (projectStage == null) {
+            WebConfiguration webConfig =
+                  WebConfiguration.getInstance(
+                        FacesContext.getCurrentInstance().getExternalContext());
+            String value = webConfig.getEnvironmentEntry(WebConfiguration.WebEnvironmentEntry.ProjectStage);
+            if (value != null) {
+                if (LOGGER.isLoggable(Level.FINE)) {
+                    LOGGER.log(Level.FINE,
+                               "ProjectStage configured via JNDI: {0}",
+                               value);
+                }
+            } else {
+                value = webConfig.getOptionValue(WebContextInitParameter.JavaxFacesProjectStage);
+                if (value != null) {
+                    if (LOGGER.isLoggable(Level.FINE)) {
+                        LOGGER.log(Level.FINE,
+                               "ProjectStage configured via servlet context init parameter: {0}", 
+                               value);
+                    }
+                }
+            }
+            if (value != null) {
+                try {
+                    projectStage = ProjectStage.valueOf(value);
+                } catch (IllegalArgumentException iae) {
+                    if (LOGGER.isLoggable(Level.INFO)) {
+                        LOGGER.log(Level.INFO,
+                                   "Unable to discern ProjectStage for value {0}.",
+                                   value);
+                    }
+                }
+            }
+            if (projectStage == null) {
+                projectStage = ProjectStage.Production;
+            }
+            sc.setAttribute(projectStageKey, projectStage);
+        }
+        return projectStage;
+
+    }
+    
 
 
 }
diff --git a/jsf-ri/src/main/java/com/sun/faces/config/processor/ApplicationConfigProcessor.java b/jsf-ri/src/main/java/com/sun/faces/config/processor/ApplicationConfigProcessor.java
index 674626a..70d4874 100644
--- a/jsf-ri/src/main/java/com/sun/faces/config/processor/ApplicationConfigProcessor.java
+++ b/jsf-ri/src/main/java/com/sun/faces/config/processor/ApplicationConfigProcessor.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -36,6 +40,7 @@
 
 package com.sun.faces.config.processor;
 
+import javax.naming.InitialContext;
 import java.text.MessageFormat;
 import java.util.ArrayList;
 import java.util.HashSet;
@@ -75,8 +80,14 @@ import com.sun.faces.config.DocumentInfo;
 
 import java.util.LinkedHashSet;
 import java.util.Map;
+import javax.faces.validator.BeanValidator;
+import javax.validation.Validator;
+import javax.validation.Validation;
+import javax.validation.ValidatorFactory;
 import static com.sun.faces.config.WebConfiguration.BooleanWebContextInitParameter.DisableFaceletJSFViewHandler;
 
+import javax.naming.Context;
+import javax.naming.NamingException;
 import org.w3c.dom.Element;
 import org.w3c.dom.Node;
 import org.w3c.dom.NodeList;
@@ -255,7 +266,7 @@ public class ApplicationConfigProcessor extends AbstractConfigProcessor {
             if (LOGGER.isLoggable(Level.FINE)) {
                 LOGGER.log(Level.FINE,
                            MessageFormat.format("Processing application elements for document: ''{0}''",
-                                                documentInfos[i].getSourceURL()));
+                                                documentInfos[i].getSourceURI()));
             }
             Document document = documentInfos[i].getDocument();
             String namespace =
@@ -280,22 +291,22 @@ public class ApplicationConfigProcessor extends AbstractConfigProcessor {
                             } else if (DEFAULT_RENDERKIT_ID.equals(n.getLocalName())) {
                                 setDefaultRenderKitId(app, n);
                             } else if (ACTION_LISTENER.equals(n.getLocalName())) {
-                                addActionListener(app, n);
+                                addActionListener(sc, app, n);
                             } else if (NAVIGATION_HANDLER.equals(n.getLocalName())) {
-                                setNavigationHandler(app, n);
+                                setNavigationHandler(sc, app, n);
                             } else if (VIEW_HANDLER.equals(n.getLocalName())) {
                                 String viewHandler = getNodeText(n);
                                 if (viewHandler != null) {
                                     viewHandlers.put(viewHandler, n);
                                 }
                             } else if (STATE_MANAGER.equals(n.getLocalName())) {
-                                setStateManager(app, n);
+                                setStateManager(sc, app, n);
                             } else if (EL_RESOLVER.equals(n.getLocalName())) {
-                                addELResolver(associate, n);
+                                addELResolver(sc, associate, n);
                             } else if (PROPERTY_RESOLVER.equals(n.getLocalName())) {
-                                addPropertyResolver(associate, n);
+                                addPropertyResolver(sc, associate, n);
                             } else if (VARIABLE_RESOLVER.equals(n.getLocalName())) {
-                                addVariableResolver(associate, n);
+                                addVariableResolver(sc, associate, n);
                             } else if (DEFAULT_LOCALE.equals(n.getLocalName())) {
                                 setDefaultLocale(app, n);
                             } else if (SUPPORTED_LOCALE.equals(n.getLocalName())) {
@@ -303,9 +314,9 @@ public class ApplicationConfigProcessor extends AbstractConfigProcessor {
                             } else if (RESOURCE_BUNDLE.equals(n.getLocalName())) {
                                 addResouceBundle(associate, n);
                             } else if (RESOURCE_HANDLER.equals(n.getLocalName())) {
-                                setResourceHandler(app, n);
+                                setResourceHandler(sc, app, n);
                             } else if (SYSTEM_EVENT_LISTENER.equals(n.getLocalName())) {
-                                addSystemEventListener(app, n);
+                                addSystemEventListener(sc, app, n);
                             } else if (DEFAULT_VALIDATORS.equals(n.getLocalName())) {
                                 if (defaultValidatorIds == null) {
                                     defaultValidatorIds = new LinkedHashSet<String>();
@@ -324,7 +335,7 @@ public class ApplicationConfigProcessor extends AbstractConfigProcessor {
         registerDefaultValidatorIds(app, defaultValidatorIds);
 
         // perform any special processing for ViewHandlers...
-        processViewHandlers(app, viewHandlers);
+        processViewHandlers(sc, app, viewHandlers);
 
         // process NamedEvent annotations, if any
         processAnnotations(NamedEvent.class);
@@ -348,7 +359,7 @@ public class ApplicationConfigProcessor extends AbstractConfigProcessor {
             if (isBeanValidatorAvailable()) {
                 WebConfiguration webConfig = WebConfiguration.getInstance();
                 if (!webConfig.isOptionEnabled(WebConfiguration.BooleanWebContextInitParameter.DisableDefaultBeanValidator)) {
-                    defaultValidatorIds.add("javax.faces.Bean");
+                    defaultValidatorIds.add(BeanValidator.VALIDATOR_ID);
                 }
             }
         }
@@ -376,20 +387,57 @@ public class ApplicationConfigProcessor extends AbstractConfigProcessor {
         } else {
             try {
                 Thread.currentThread().getContextClassLoader().loadClass("javax.validation.MessageInterpolator");
-                appMap.put(beansValidationAvailabilityCacheKey, result = true);
-            } catch (ClassNotFoundException cnfe) {
-                if (LOGGER.isLoggable(Level.FINE)) {
-                    LOGGER.fine("Unable to load Beans Validation");
+                // Check if the Implementation is available.
+                Object cachedObject = appMap.get(BeanValidator.VALIDATOR_FACTORY_KEY);
+                if(cachedObject instanceof ValidatorFactory) {
+                    result = true;
+                } else {
+                    Context initialContext = null;
+                    try {
+                        initialContext = new InitialContext();
+                    } catch (NoClassDefFoundError nde) {
+                        // on google app engine InitialContext is forbidden to use and GAE throws NoClassDefFoundError 
+                        if (LOGGER.isLoggable(Level.FINE)) {
+                            LOGGER.log(Level.FINE, nde.toString(), nde);
+                        }
+                    } catch (NamingException ne) {
+                        if (LOGGER.isLoggable(Level.WARNING)) {
+                            LOGGER.log(Level.WARNING, ne.toString(), ne);
+                        }
+                    }
+                    
+                    try {
+                        Object validatorFactory = initialContext.lookup("java:comp/ValidatorFactory");
+                        if (null != validatorFactory) {
+                            appMap.put(BeanValidator.VALIDATOR_FACTORY_KEY, validatorFactory);
+                            result = true;
+                        }
+                    } catch (NamingException root) {
+                        if (LOGGER.isLoggable(Level.FINE)) {
+                            String msg = "Could not build a default Bean Validator factory: " 
+                                    + root.getMessage();
+                            LOGGER.fine(msg);                       
+                        }
+                    }
+                    
+                    if (!result) {
+                        try {
+                            ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
+                            Validator validator = factory.getValidator();
+                            appMap.put(BeanValidator.VALIDATOR_FACTORY_KEY, factory);
+                            result = true;
+                        } catch(Throwable throwable) {
+                        }
+                    }
                 }
-                appMap.put(beansValidationAvailabilityCacheKey, Boolean.FALSE);
-            } catch (Throwable t) {
+
+            } catch (Throwable t) { // CNFE or ValidationException or any other
                 if (LOGGER.isLoggable(Level.FINE)) {
                     LOGGER.fine("Unable to load Beans Validation");
                 }
-                appMap.put(beansValidationAvailabilityCacheKey, Boolean.FALSE);
             }
+            appMap.put(beansValidationAvailabilityCacheKey, result);
         }
-
         return result;
     }
 
@@ -431,14 +479,14 @@ public class ApplicationConfigProcessor extends AbstractConfigProcessor {
 
     }
 
-    private void addActionListener(Application application,
+    private void addActionListener(ServletContext sc, Application application,
                                    Node actionListener) {
 
         if (actionListener != null) {
 
             String listener = getNodeText(actionListener);
             if (listener != null) {
-                Object instance = createInstance(listener,
+                Object instance = createInstance(sc, listener,
                                                  ActionListener.class,
                                                  application.getActionListener(),
                                                  actionListener);
@@ -457,20 +505,20 @@ public class ApplicationConfigProcessor extends AbstractConfigProcessor {
     }
 
 
-    private void setNavigationHandler(Application application,
+    private void setNavigationHandler(ServletContext sc, Application application,
                                       Node navigationHandler) {
 
         if (navigationHandler != null) {
 
             String handler = getNodeText(navigationHandler);
             if (handler != null) {
-                Class<?> rootType = findRootType(handler,
+                Class<?> rootType = findRootType(sc, handler,
                                                  navigationHandler,
                                                  new Class[] {
                                                        ConfigurableNavigationHandler.class,
                                                        NavigationHandler.class
                                                      });
-                Object instance = createInstance(handler,
+                Object instance = createInstance(sc, handler,
                                                  ((rootType != null) ? rootType : NavigationHandler.class),
                                                  application.getNavigationHandler(),
                                                  navigationHandler);
@@ -490,13 +538,13 @@ public class ApplicationConfigProcessor extends AbstractConfigProcessor {
     }
 
 
-    private void setStateManager(Application application,
+    private void setStateManager(ServletContext sc, Application application,
                                  Node stateManager) {
 
         if (stateManager != null) {
             String manager = getNodeText(stateManager);
             if (manager != null) {
-                Object instance = createInstance(manager,
+                Object instance = createInstance(sc, manager,
                                                  StateManager.class,
                                                  application.getStateManager(),
                                                  stateManager);
@@ -514,13 +562,13 @@ public class ApplicationConfigProcessor extends AbstractConfigProcessor {
 
     }
 
-    private void setViewHandler(Application application,
+    private void setViewHandler(ServletContext sc, Application application,
                                 Node viewHandler) {
 
         if (viewHandler != null) {
             String handler = getNodeText(viewHandler);
             if (handler != null) {
-                Object instance = createInstance(handler,
+                Object instance = createInstance(sc, handler,
                                                  ViewHandler.class,
                                                  application.getViewHandler(),
                                                  viewHandler);
@@ -539,7 +587,7 @@ public class ApplicationConfigProcessor extends AbstractConfigProcessor {
     }
 
 
-    private void addELResolver(ApplicationAssociate associate,
+    private void addELResolver(ServletContext sc, ApplicationAssociate associate,
                                Node elResolver) {
 
         if (elResolver != null) {
@@ -553,7 +601,7 @@ public class ApplicationConfigProcessor extends AbstractConfigProcessor {
                 }
                 String elResolverClass = getNodeText(elResolver);
                 if (elResolverClass != null) {
-                    Object elRes = createInstance(elResolverClass,
+                    Object elRes = createInstance(sc, elResolverClass,
                                                   ELResolver.class,
                                                   null,
                                                   elResolver);
@@ -574,7 +622,7 @@ public class ApplicationConfigProcessor extends AbstractConfigProcessor {
 
 
     @SuppressWarnings("deprecation")
-    private void addPropertyResolver(ApplicationAssociate associate,
+    private void addPropertyResolver(ServletContext sc, ApplicationAssociate associate,
                                      Node propertyResolver) {
 
         if (propertyResolver != null) {
@@ -586,7 +634,7 @@ public class ApplicationConfigProcessor extends AbstractConfigProcessor {
 
                 String resolver = getNodeText(propertyResolver);
                 if (resolver != null) {
-                    resolverImpl = createInstance(resolver,
+                    resolverImpl = createInstance(sc, resolver,
                                                   PropertyResolver.class,
                                                   resolverImpl,
                                                   propertyResolver);
@@ -608,7 +656,7 @@ public class ApplicationConfigProcessor extends AbstractConfigProcessor {
 
 
     @SuppressWarnings("deprecation")
-    private void addVariableResolver(ApplicationAssociate associate,
+    private void addVariableResolver(ServletContext sc, ApplicationAssociate associate,
                                      Node variableResolver) {
 
         if (variableResolver != null) {
@@ -619,7 +667,7 @@ public class ApplicationConfigProcessor extends AbstractConfigProcessor {
                 }
                 String resolver = getNodeText(variableResolver);
                 if (resolver != null) {
-                    resolverImpl = createInstance(resolver,
+                    resolverImpl = createInstance(sc, resolver,
                                                   VariableResolver.class,
                                                   resolverImpl,
                                                   variableResolver);
@@ -740,12 +788,12 @@ public class ApplicationConfigProcessor extends AbstractConfigProcessor {
     }
 
 
-    private void setResourceHandler(Application application, Node resourceHandler) {
+    private void setResourceHandler(ServletContext sc, Application application, Node resourceHandler) {
 
         if (resourceHandler != null) {
             String handler = getNodeText(resourceHandler);
             if (handler != null) {
-                Object instance = createInstance(handler,
+                Object instance = createInstance(sc, handler,
                                                  ResourceHandler.class,
                                                  application.getResourceHandler(),
                                                  resourceHandler);
@@ -763,7 +811,7 @@ public class ApplicationConfigProcessor extends AbstractConfigProcessor {
     }
 
 
-    private void addSystemEventListener(Application application,
+    private void addSystemEventListener(ServletContext sc, Application application,
                                         Node systemEventListener) {
 
         NodeList children = systemEventListener.getChildNodes();
@@ -784,7 +832,7 @@ public class ApplicationConfigProcessor extends AbstractConfigProcessor {
         }
         if (listenerClass != null) {
             SystemEventListener selInstance = (SystemEventListener)
-                  createInstance(listenerClass,
+                  createInstance(sc, listenerClass,
                                  SystemEventListener.class,
                                  null,
                                  systemEventListener);
@@ -793,8 +841,14 @@ public class ApplicationConfigProcessor extends AbstractConfigProcessor {
                     // If there is an eventClass, use it, otherwise use
                     // SystemEvent.class
                     //noinspection unchecked
-                    Class<? extends SystemEvent> eventClazz =
-                          (Class<? extends SystemEvent>) loadClass(eventClass, this, null);
+                    Class<? extends SystemEvent> eventClazz;
+                    
+                    if (eventClass != null) {
+                        eventClazz = (Class<? extends SystemEvent>) loadClass(sc, eventClass, this, null);
+                    } else {
+                        eventClazz = SystemEvent.class;
+                    }
+                    
                     // If there is a sourceClass, use it, otherwise use null
                     Class sourceClazz =
                           (sourceClass != null && sourceClass.length() != 0)
@@ -821,7 +875,7 @@ public class ApplicationConfigProcessor extends AbstractConfigProcessor {
     }
 
 
-    private void processViewHandlers(Application app,
+    private void processViewHandlers(ServletContext sc, Application app,
                                      LinkedHashMap<String, Node> viewHandlers) {
         // take special action on the ViewHandlers that have been
         // configured for the application.  If any of the ViewHandlers
@@ -840,7 +894,7 @@ public class ApplicationConfigProcessor extends AbstractConfigProcessor {
             }
         }
         for (Node n : viewHandlers.values()) {
-            setViewHandler(app, n);
+            setViewHandler(sc, app, n);
         }
     }
 
diff --git a/jsf-ri/src/main/java/com/sun/faces/config/processor/BehaviorConfigProcessor.java b/jsf-ri/src/main/java/com/sun/faces/config/processor/BehaviorConfigProcessor.java
index 5a4ef63..f3e6d38 100644
--- a/jsf-ri/src/main/java/com/sun/faces/config/processor/BehaviorConfigProcessor.java
+++ b/jsf-ri/src/main/java/com/sun/faces/config/processor/BehaviorConfigProcessor.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -97,7 +101,7 @@ public class BehaviorConfigProcessor extends AbstractConfigProcessor {
                 LOGGER.log(Level.FINE,
                            MessageFormat.format(
                                 "Processing behavior elements for document: ''{0}''",
-                                documentInfos[i].getSourceURL()));
+                                documentInfos[i].getSourceURI()));
             }
             Document document = documentInfos[i].getDocument();
             String namespace = document.getDocumentElement()
diff --git a/jsf-ri/src/main/java/com/sun/faces/config/processor/ComponentConfigProcessor.java b/jsf-ri/src/main/java/com/sun/faces/config/processor/ComponentConfigProcessor.java
index 332b3f3..c3b551c 100644
--- a/jsf-ri/src/main/java/com/sun/faces/config/processor/ComponentConfigProcessor.java
+++ b/jsf-ri/src/main/java/com/sun/faces/config/processor/ComponentConfigProcessor.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -99,7 +103,7 @@ public class ComponentConfigProcessor extends AbstractConfigProcessor {
                 LOGGER.log(Level.FINE,
                            MessageFormat.format(
                                 "Processing component elements for document: ''{0}''",
-                                documentInfos[i].getSourceURL()));
+                                documentInfos[i].getSourceURI()));
             }
             Document document = documentInfos[i].getDocument();
             String namespace = document.getDocumentElement()
diff --git a/jsf-ri/src/main/java/com/sun/faces/config/processor/ConfigProcessor.java b/jsf-ri/src/main/java/com/sun/faces/config/processor/ConfigProcessor.java
index 2abfa2a..1e5633f 100644
--- a/jsf-ri/src/main/java/com/sun/faces/config/processor/ConfigProcessor.java
+++ b/jsf-ri/src/main/java/com/sun/faces/config/processor/ConfigProcessor.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -59,6 +63,17 @@ public interface ConfigProcessor {
      */
     public void setNext(ConfigProcessor nextProcessor);
 
+    /**
+     * <p>Return the next config processor in the chain, or null.</p>
+     * 
+     */
+    public ConfigProcessor getNext();
+    
+    /*
+     * Called to initialize the per-application metadata used by the ConfigProcessor
+     */
+    
+    public void initializeClassMetadataMap(ServletContext sc);
 
     /**
      * <p>
diff --git a/jsf-ri/src/main/java/com/sun/faces/config/processor/ConverterConfigProcessor.java b/jsf-ri/src/main/java/com/sun/faces/config/processor/ConverterConfigProcessor.java
index f060691..2d39d72 100644
--- a/jsf-ri/src/main/java/com/sun/faces/config/processor/ConverterConfigProcessor.java
+++ b/jsf-ri/src/main/java/com/sun/faces/config/processor/ConverterConfigProcessor.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -108,7 +112,7 @@ public class ConverterConfigProcessor extends AbstractConfigProcessor {
                 LOGGER.log(Level.FINE,
                            MessageFormat.format(
                                 "Processing converter elements for document: ''{0}''",
-                                documentInfos[i].getSourceURL()));
+                                documentInfos[i].getSourceURI()));
             }
             Document document = documentInfos[i].getDocument();
             String namespace = document.getDocumentElement()
diff --git a/jsf-ri/src/main/java/com/sun/faces/config/processor/FaceletTaglibConfigProcessor.java b/jsf-ri/src/main/java/com/sun/faces/config/processor/FaceletTaglibConfigProcessor.java
index 96fd5f0..e63c96c 100644
--- a/jsf-ri/src/main/java/com/sun/faces/config/processor/FaceletTaglibConfigProcessor.java
+++ b/jsf-ri/src/main/java/com/sun/faces/config/processor/FaceletTaglibConfigProcessor.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(resourceId):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -71,7 +75,7 @@ public class FaceletTaglibConfigProcessor extends AbstractConfigProcessor {
 
     private static final Logger LOGGER = FacesLogger.CONFIG.getLogger();
 
-
+    
     /**
      * <p>
      * /facelet-taglib/library-class
@@ -143,6 +147,13 @@ public class FaceletTaglibConfigProcessor extends AbstractConfigProcessor {
 
     /**
      * <p>
+     * /facelet-taglib/tag/resource-id
+     * </p>
+     */
+    private static final String RESOURCE_ID = "resource-id";
+
+    /**
+     * <p>
      *   <ul>
      *     <li>/facelet-taglib/tag/tag-handler</li>
      *     <li>/facelet-taglib/tag/converter/handler-class</li>
@@ -244,7 +255,7 @@ public class FaceletTaglibConfigProcessor extends AbstractConfigProcessor {
                 LOGGER.log(Level.FINE,
                            MessageFormat.format(
                                  "Processing facelet-taglibrary document: ''{0}''",
-                                 documentInfos[i].getSourceURL()));
+                                 documentInfos[i].getSourceURI()));
             }
             Document document = documentInfos[i].getDocument();
             String namespace =
@@ -254,9 +265,9 @@ public class FaceletTaglibConfigProcessor extends AbstractConfigProcessor {
                   documentElement
                         .getElementsByTagNameNS(namespace, LIBRARY_CLASS);
             if (libraryClass != null && libraryClass.getLength() > 0) {
-                processTaglibraryClass(libraryClass, compiler);
+                processTaglibraryClass(sc, libraryClass, compiler);
             } else {
-                processTagLibrary(documentElement, namespace, compiler);
+                processTagLibrary(sc, documentElement, namespace, compiler);
             }
         }
 
@@ -268,18 +279,18 @@ public class FaceletTaglibConfigProcessor extends AbstractConfigProcessor {
     // --------------------------------------------------------- Private Methods
 
 
-    private void processTaglibraryClass(NodeList libraryClass,
+    private void processTaglibraryClass(ServletContext sc, NodeList libraryClass,
                                         Compiler compiler) {
 
         Node n = libraryClass.item(0);
         String className = getNodeText(n);
-        TagLibrary taglib = (TagLibrary) createInstance(className, n);
+        TagLibrary taglib = (TagLibrary) createInstance(sc, className, n);
         compiler.addTagLibrary(taglib);
 
     }
 
 
-    private void processTagLibrary(Element documentElement,
+    private void processTagLibrary(ServletContext sc, Element documentElement,
                                    String namespace,
                                    Compiler compiler) {
 
@@ -307,18 +318,18 @@ public class FaceletTaglibConfigProcessor extends AbstractConfigProcessor {
             }
             NodeList tags =
                   documentElement.getElementsByTagNameNS(namespace, TAG);
-            processTags(documentElement, tags, taglibrary);
+            processTags(sc, documentElement, tags, taglibrary);
             NodeList functions =
                   documentElement
                         .getElementsByTagNameNS(namespace, FUNCTION);
-            processFunctions(functions, taglibrary);
+            processFunctions(sc, functions, taglibrary);
             compiler.addTagLibrary(taglibrary);
         }
 
     }
 
 
-    private void processTags(Element documentElement,
+    private void processTags(ServletContext sc, Element documentElement,
                              NodeList tags,
                              TagLibraryImpl taglibrary) {
 
@@ -354,17 +365,17 @@ public class FaceletTaglibConfigProcessor extends AbstractConfigProcessor {
                     }
                 }
                 if (component != null) {
-                    processComponent(component, taglibrary, tagName);
+                    processComponent(sc, documentElement, component, taglibrary, tagName);
                 } else if (converter != null) {
-                    processConverter(converter, taglibrary, tagName);
+                    processConverter(sc, converter, taglibrary, tagName);
                 } else if (validator != null) {
-                    processValidator(validator, taglibrary, tagName);
+                    processValidator(sc, validator, taglibrary, tagName);
                 } else if (behavior != null) {
-                    processBehavior(behavior, taglibrary, tagName);
+                    processBehavior(sc, behavior, taglibrary, tagName);
                 } else if (source != null) {
                     processSource(documentElement, source, taglibrary, tagName);
                 } else if (handlerClass != null) {
-                    processHandlerClass(handlerClass, taglibrary, tagName);
+                    processHandlerClass(sc, handlerClass, taglibrary, tagName);
                 }
             }
         }
@@ -372,7 +383,7 @@ public class FaceletTaglibConfigProcessor extends AbstractConfigProcessor {
     }
 
 
-    private void processBehavior(NodeList behavior, TagLibraryImpl taglibrary,
+    private void processBehavior(ServletContext sc, NodeList behavior, TagLibraryImpl taglibrary,
 			String tagName) {
         if (behavior != null && behavior.getLength() > 0) {
             String behaviorId = null;
@@ -388,7 +399,7 @@ public class FaceletTaglibConfigProcessor extends AbstractConfigProcessor {
             }
             if (handlerClass != null) {
                 try {
-                    Class<?> clazz = loadClass(handlerClass, this, null);
+                    Class<?> clazz = loadClass(sc, handlerClass, this, null);
                     taglibrary.putBehavior(tagName, behaviorId, clazz);
                 } catch (ClassNotFoundException e) {
                     throw new ConfigurationException(e);
@@ -402,7 +413,7 @@ public class FaceletTaglibConfigProcessor extends AbstractConfigProcessor {
     }
 
 
-    private void processHandlerClass(Node handlerClass,
+    private void processHandlerClass(ServletContext sc, Node handlerClass,
                                      TagLibraryImpl taglibrary,
                                      String name) {
 
@@ -413,7 +424,7 @@ public class FaceletTaglibConfigProcessor extends AbstractConfigProcessor {
         try {
             Class<?> clazz;
             try {
-                clazz = loadClass(className, this, null);
+                clazz = loadClass(sc, className, this, null);
                 taglibrary.putTagHandler(name, clazz);
             } catch (NoClassDefFoundError defNotFound) {
                 String message = defNotFound.toString();
@@ -451,8 +462,17 @@ public class FaceletTaglibConfigProcessor extends AbstractConfigProcessor {
 
     }
 
+    private void processResourceId(Element documentElement,
+                               Node compositeSource,
+                               TagLibraryImpl taglibrary,
+                               String name) {
+
+        String resourceId = getNodeText(compositeSource);
+        taglibrary.putCompositeComponentTag(name, resourceId);
 
-    private void processValidator(NodeList validator,
+    }
+
+    private void processValidator(ServletContext sc, NodeList validator,
                                   TagLibraryImpl taglibrary,
                                   String name) {
 
@@ -470,7 +490,7 @@ public class FaceletTaglibConfigProcessor extends AbstractConfigProcessor {
             }
             if (handlerClass != null) {
                 try {
-                    Class<?> clazz = loadClass(handlerClass, this, null);
+                    Class<?> clazz = loadClass(sc, handlerClass, this, null);
                     taglibrary.putValidator(name, validatorId, clazz);
                 } catch (NoClassDefFoundError defNotFound) {
                     String message = defNotFound.toString();
@@ -496,7 +516,7 @@ public class FaceletTaglibConfigProcessor extends AbstractConfigProcessor {
     }
 
     
-    private void processConverter(NodeList converter,
+    private void processConverter(ServletContext sc, NodeList converter,
                                   TagLibraryImpl taglibrary,
                                   String name) {
 
@@ -515,7 +535,7 @@ public class FaceletTaglibConfigProcessor extends AbstractConfigProcessor {
             }
             if (handlerClass != null) {
                 try {
-                    Class<?> clazz = loadClass(handlerClass, this, null);
+                    Class<?> clazz = loadClass(sc, handlerClass, this, null);
                     taglibrary.putConverter(name, converterId, clazz);
                 } catch (NoClassDefFoundError defNotFound) {
                     String message = defNotFound.toString();
@@ -541,7 +561,7 @@ public class FaceletTaglibConfigProcessor extends AbstractConfigProcessor {
     }
 
 
-    private void processComponent(NodeList component,
+    private void processComponent(ServletContext sc, Element documentElement, NodeList component,
                                   TagLibraryImpl taglibrary,
                                   String name) {
 
@@ -549,6 +569,7 @@ public class FaceletTaglibConfigProcessor extends AbstractConfigProcessor {
             String componentType = null;
             String rendererType = null;
             String handlerClass = null;
+            Node resourceId = null;
             for (int i = 0, ilen = component.getLength(); i < ilen; i++) {
                 Node n = component.item(i);
                 if (COMPONENT_TYPE.equals(n.getLocalName())) {
@@ -557,11 +578,13 @@ public class FaceletTaglibConfigProcessor extends AbstractConfigProcessor {
                     rendererType = getNodeText(n);
                 } else if (HANDLER_CLASS.equals(n.getLocalName())) {
                     handlerClass = getNodeText(n);
+                }  else if (RESOURCE_ID.equals(n.getLocalName())) {
+                    resourceId = n;
                 }
             }
             if (handlerClass != null) {
                 try {
-                    Class<?> clazz = loadClass(handlerClass, this, null);
+                    Class<?> clazz = loadClass(sc, handlerClass, this, null);
                     taglibrary.putComponent(name,
                                             componentType,
                                             rendererType,
@@ -581,15 +604,18 @@ public class FaceletTaglibConfigProcessor extends AbstractConfigProcessor {
                 } catch (ClassNotFoundException e) {
                     throw new ConfigurationException(e);
                 }
+            } else if (resourceId != null) {
+                processResourceId(documentElement, resourceId, taglibrary, name);
             } else {
                 taglibrary.putComponent(name, componentType, rendererType);
             }
+            
         }
 
     }
 
 
-    private void processFunctions(NodeList functions, TagLibraryImpl taglibrary) {
+    private void processFunctions(ServletContext sc, NodeList functions, TagLibraryImpl taglibrary) {
 
         if (functions != null && functions.getLength() > 0) {
             for (int i = 0, ilen = functions.getLength(); i < ilen; i++) {
@@ -609,7 +635,7 @@ public class FaceletTaglibConfigProcessor extends AbstractConfigProcessor {
                     }
                 }
                 try {
-                    Class<?> clazz = loadClass(functionClass, this, null);
+                    Class<?> clazz = loadClass(sc, functionClass, this, null);
                     Method m = createMethod(clazz, functionSignature);
                     taglibrary.putFunction(functionName, m);
                 } catch (Exception e) {
@@ -621,8 +647,9 @@ public class FaceletTaglibConfigProcessor extends AbstractConfigProcessor {
     }
 
 
-    private static Method createMethod(Class type, String signature) throws Exception {
-
+    private static Method createMethod(Class type, String signatureParam) throws Exception {
+        // formatted XML might cause \n\t characters - make sure we only have space characters left  
+        String signature = signatureParam.replaceAll("\\s+", " "); 
         int pos = signature.indexOf(' ');
         if (pos == -1) {
             throw new Exception("Must Provide Return Type: " + signature);
@@ -664,4 +691,4 @@ public class FaceletTaglibConfigProcessor extends AbstractConfigProcessor {
 
     }
 
-}
\ No newline at end of file
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/config/processor/FacesConfigExtensionProcessor.java b/jsf-ri/src/main/java/com/sun/faces/config/processor/FacesConfigExtensionProcessor.java
new file mode 100644
index 0000000..be14340
--- /dev/null
+++ b/jsf-ri/src/main/java/com/sun/faces/config/processor/FacesConfigExtensionProcessor.java
@@ -0,0 +1,187 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.config.processor;
+
+import com.sun.faces.config.DocumentInfo;
+import com.sun.faces.config.WebConfiguration;
+import com.sun.faces.util.FacesLogger;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+import org.w3c.dom.Document;
+
+import javax.servlet.ServletContext;
+
+import java.text.MessageFormat;
+import java.util.Map;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+
+/**
+ * <p>
+ *  This <code>ConfigProcessor</code> handles all elements defined under
+ *  <code>/faces-config/factory</code>.
+ * </p>
+ */
+public class FacesConfigExtensionProcessor extends AbstractConfigProcessor {
+
+    private static final Logger LOGGER = FacesLogger.CONFIG.getLogger();
+
+    /**
+     * <code>/faces-config/faces-config-extension</code>
+     */
+    private static final String FACES_CONFIG_EXTENSION = "faces-config-extension";
+
+    /**
+     * <code>/faces-config/faces-config-extension/facelets-processing</code>
+     */
+    private static final String FACELETS_PROCESSING = "facelets-processing";
+
+    /**
+     * <code>/faces-config/faces-config-extension/facelets-processing/file-extension</code>
+     */
+    private static final String FILE_EXTENSION = "file-extension";
+
+    /**
+     * <code>/faces-config/faces-config-extension/facelets-processing/process-as</code>
+     */
+    private static final String PROCESS_AS = "process-as";
+
+    // ------------------------------------------------------------ Constructors
+
+    
+    public FacesConfigExtensionProcessor() { }
+
+
+    // -------------------------------------------- Methods from ConfigProcessor
+
+
+    /**
+     * @see ConfigProcessor#process(javax.servlet.ServletContext,com.sun.faces.config.DocumentInfo[])
+     */
+    public void process(ServletContext sc, DocumentInfo[] documentInfos)
+    throws Exception {
+
+        for (int i = 0; i < documentInfos.length; i++) {
+            if (LOGGER.isLoggable(Level.FINE)) {
+                LOGGER.log(Level.FINE,
+                           MessageFormat.format(
+                                "Processing faces-config-extension elements for document: ''{0}''",
+                                documentInfos[i].getSourceURI()));
+            }
+            Document document = documentInfos[i].getDocument();
+            String namespace = document.getDocumentElement()
+                 .getNamespaceURI();
+            NodeList facesConfigExtensions = document.getDocumentElement()
+                 .getElementsByTagNameNS(namespace, FACES_CONFIG_EXTENSION);
+            if (facesConfigExtensions != null && facesConfigExtensions.getLength() > 0) {
+                processFacesConfigExtensions(facesConfigExtensions,
+                                 namespace, documentInfos[i]);
+            }
+        }
+
+        // invoke the next config processor
+        invokeNext(sc, documentInfos);
+
+    }
+
+    // --------------------------------------------------------- Private Methods
+
+
+    private void processFacesConfigExtensions(NodeList facesConfigExtensions,
+                                  String namespace, DocumentInfo info) {
+        WebConfiguration config = null;
+
+        for (int i = 0, size = facesConfigExtensions.getLength(); i < size; i++) {
+            Node facesConfigExtension = facesConfigExtensions.item(i);
+            NodeList children = ((Element) facesConfigExtension)
+                 .getElementsByTagNameNS(namespace, "*");
+            for (int c = 0, csize = children.getLength(); c < csize; c++) {
+                Node n = children.item(c);
+                if (FACELETS_PROCESSING.equals(n.getLocalName())) {
+                    Node faceletsProcessing = n;
+                    NodeList faceletsProcessingChildren = ((Element) faceletsProcessing)
+                           .getElementsByTagNameNS(namespace, "*");
+                    String fileExtension = null, processAs = null;
+                    for (int fp = 0, fpsize = faceletsProcessingChildren.getLength(); fp < fpsize; fp++) {
+                        Node childOfInterset = faceletsProcessingChildren.item(fp);
+                        if (null == fileExtension &&
+                            FILE_EXTENSION.equals(childOfInterset.getLocalName())) {
+                            fileExtension = getNodeText(childOfInterset);
+                        } else if (null == processAs &&
+                                   PROCESS_AS.equals(childOfInterset.getLocalName())) {
+                            processAs = getNodeText(childOfInterset);
+                        } else {
+                            if (LOGGER.isLoggable(Level.WARNING)) {
+                                LOGGER.log(Level.WARNING,
+                                        MessageFormat.format(
+                                        "Processing faces-config-extension elements for document: ''{0}'', encountered unexpected configuration ''{1}'', ignoring and continuing",
+                                        info.getSourceURI(), getNodeText(childOfInterset)));
+                            }
+                        }
+
+                    }
+
+                    if (null != fileExtension && null != processAs) {
+                        if (null == config) {
+                            config = WebConfiguration.getInstance();
+                        }
+                        Map<String, String> faceletsProcessingMappings =
+                                config.getFacesConfigOptionValue(WebConfiguration.WebContextInitParameter.FaceletsProcessingFileExtensionProcessAs, true);
+                        faceletsProcessingMappings.put(fileExtension, processAs);
+
+                    } else {
+                        if (LOGGER.isLoggable(Level.WARNING)) {
+                            LOGGER.log(Level.WARNING,
+                                    MessageFormat.format(
+                                    "Processing faces-config-extension elements for document: ''{0}'', encountered <facelets-processing> elemnet without expected children",
+                                    info.getSourceURI()));
+                        }
+                    }
+                }
+            }
+        }
+
+    }
+
+
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/config/processor/FacesConfigNamespaceContext.java b/jsf-ri/src/main/java/com/sun/faces/config/processor/FacesConfigNamespaceContext.java
new file mode 100644
index 0000000..317b042
--- /dev/null
+++ b/jsf-ri/src/main/java/com/sun/faces/config/processor/FacesConfigNamespaceContext.java
@@ -0,0 +1,64 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.config.processor;
+
+import java.util.Collections;
+import java.util.Iterator;
+import javax.xml.namespace.NamespaceContext;
+
+class FacesConfigNamespaceContext implements NamespaceContext {
+
+    @Override
+    public String getNamespaceURI(String prefix) {
+        return "http://xmlns.jcp.org/xml/ns/javaee";
+    }
+
+    @Override
+    public String getPrefix(String namespaceURI) {
+        return "ns1";
+    }
+
+    @Override
+    public Iterator getPrefixes(String namespaceURI) {
+        return Collections.emptyList().iterator();
+    }
+    
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/config/processor/FacesFlowDefinitionConfigProcessor.java b/jsf-ri/src/main/java/com/sun/faces/config/processor/FacesFlowDefinitionConfigProcessor.java
new file mode 100644
index 0000000..01bb552
--- /dev/null
+++ b/jsf-ri/src/main/java/com/sun/faces/config/processor/FacesFlowDefinitionConfigProcessor.java
@@ -0,0 +1,853 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.config.processor;
+
+import com.sun.faces.RIConstants;
+import com.sun.faces.application.ApplicationAssociate;
+import com.sun.faces.config.DocumentInfo;
+import com.sun.faces.config.WebConfiguration;
+import com.sun.faces.facelets.util.ReflectionUtil;
+import com.sun.faces.flow.FlowImpl;
+import com.sun.faces.flow.ParameterImpl;
+import com.sun.faces.flow.builder.FlowBuilderImpl;
+import com.sun.faces.util.FacesLogger;
+import com.sun.faces.util.Util;
+import java.net.MalformedURLException;
+import java.net.URI;
+import java.text.MessageFormat;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.el.ELContext;
+import javax.el.ExpressionFactory;
+import javax.el.ValueExpression;
+import javax.faces.FacesException;
+import javax.faces.FactoryFinder;
+import javax.faces.application.Application;
+import javax.faces.context.FacesContext;
+import javax.faces.event.AbortProcessingException;
+import javax.faces.event.PostConstructApplicationEvent;
+import javax.faces.event.SystemEvent;
+import javax.faces.event.SystemEventListener;
+import javax.faces.flow.FlowHandler;
+import javax.faces.flow.FlowHandlerFactory;
+import javax.faces.flow.FlowNode;
+import javax.faces.flow.Parameter;
+import javax.faces.flow.builder.FlowBuilder;
+import javax.faces.flow.builder.FlowCallBuilder;
+import javax.faces.flow.builder.MethodCallBuilder;
+import javax.faces.flow.builder.NavigationCaseBuilder;
+import javax.faces.flow.builder.SwitchBuilder;
+import javax.servlet.ServletContext;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.xpath.XPath;
+import javax.xml.xpath.XPathConstants;
+import javax.xml.xpath.XPathExpressionException;
+import javax.xml.xpath.XPathFactory;
+import org.w3c.dom.Attr;
+import org.w3c.dom.DOMImplementation;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.NamedNodeMap;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+/**
+ * <p>
+ *  This <code>ConfigProcessor</code> handles all elements defined under
+ *  <code>/faces-config/flow-definition</code>.
+ * </p>
+ */
+public class FacesFlowDefinitionConfigProcessor extends AbstractConfigProcessor {
+
+    private static final Logger LOGGER = FacesLogger.CONFIG.getLogger();
+        
+    /**
+     * <code>/faces-config/flow-definition</code>
+     */
+    private static final String FACES_FLOW_DEFINITION = "flow-definition";
+    
+    public FacesFlowDefinitionConfigProcessor() {
+    }
+    
+    public static boolean uriIsFlowDefinition(URI uri) {
+        boolean result = false;
+        String path = uri.getPath();
+        String [] segments = path.split("/");
+        if (1 < segments.length) {
+            String flowName = segments[segments.length-2];
+            String definingName = segments[segments.length-1];
+            result = definingName.equals(flowName + "-flow.xml");
+        }
+        
+        return result;
+    }
+    
+    /*
+     * Implement the requirements of 11.4.3.3
+     * 
+     * @param uri
+     * @param toPopulate
+     * @return 
+     */
+    public static Document synthesizeEmptyFlowDefinition(URI uri) throws ParserConfigurationException {
+        Document newDoc = null;
+
+        String path = uri.getPath();
+        String [] segments = path.split("/");
+        if (segments.length < 2) {
+            return newDoc;
+        }
+        String flowName = segments[segments.length-2];
+        
+        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
+        dbf.setNamespaceAware(true);
+        DocumentBuilder builder = dbf.newDocumentBuilder();
+        DOMImplementation domImpl = builder.getDOMImplementation();
+        newDoc = domImpl.createDocument(RIConstants.JAVAEE_XMLNS, "faces-config", null);
+        Node documentElement = newDoc.getDocumentElement();
+        Attr versionAttribute = newDoc.createAttribute("version");
+        versionAttribute.setValue("2.2");
+        documentElement.getAttributes().setNamedItem(versionAttribute);
+        
+        Node facesConfig = newDoc.getFirstChild();
+        
+        Element flowDefinition = newDoc.createElementNS(RIConstants.JAVAEE_XMLNS, "flow-definition");
+        flowDefinition.setAttribute("id", flowName);
+        facesConfig.appendChild(flowDefinition);
+        final String flowReturnStr = flowName + "-return";
+        
+        Element flowReturn = newDoc.createElementNS(RIConstants.JAVAEE_XMLNS, "flow-return");
+        flowReturn.setAttribute("id", flowReturnStr);
+        flowDefinition.appendChild(flowReturn);
+        
+        Element fromOutcome = newDoc.createElementNS(RIConstants.JAVAEE_XMLNS, "from-outcome");
+        flowReturn.appendChild(fromOutcome);
+        fromOutcome.setTextContent("/" + flowReturnStr);
+        
+        return newDoc;
+    }
+    
+
+    @Override
+    public void process(ServletContext sc, DocumentInfo[] documentInfos)
+    throws Exception {
+
+        WebConfiguration config = WebConfiguration.getInstance(sc);
+        FacesContext context = FacesContext.getCurrentInstance();
+        
+        for (int i = 0; i < documentInfos.length; i++) {
+            URI definingDocumentURI = documentInfos[i].getSourceURI();
+            if (LOGGER.isLoggable(Level.FINE)) {
+                LOGGER.log(Level.FINE,
+                           MessageFormat.format(
+                                "Processing factory elements for document: ''{0}''",
+                                definingDocumentURI));
+            }
+            Document document = documentInfos[i].getDocument();
+            String namespace = document.getDocumentElement()
+                 .getNamespaceURI();
+            NodeList flowDefinitions = document.getDocumentElement()
+                 .getElementsByTagNameNS(namespace, FACES_FLOW_DEFINITION);
+            if (flowDefinitions != null && flowDefinitions.getLength() > 0) {
+                config.setHasFlows(true);
+                
+                saveFlowDefinition(context, definingDocumentURI, document);
+            }
+        }
+        
+        if (config.isHasFlows()) {
+            String optionValue = config.getOptionValue(WebConfiguration.WebContextInitParameter.ClientWindowMode);
+            boolean clientWindowNeedsEnabling = false;
+            if ("none".equals(optionValue)) {
+                clientWindowNeedsEnabling = true;
+                String featureName = 
+                        WebConfiguration.WebContextInitParameter.ClientWindowMode.getQualifiedName();
+                LOGGER.log(Level.WARNING, 
+                        "{0} was set to none, but Faces Flows requires {0} is enabled.  Setting to ''url''.", new Object[]{featureName});
+            } else if (null == optionValue) {
+                clientWindowNeedsEnabling = true;
+            }
+            if (clientWindowNeedsEnabling) {
+                config.setOptionValue(WebConfiguration.WebContextInitParameter.ClientWindowMode, "url");
+            }
+            
+            context.getApplication().subscribeToEvent(PostConstructApplicationEvent.class,
+                    Application.class, new PerformDeferredFlowProcessing());
+        }
+        
+        invokeNext(sc, documentInfos);
+    }
+    
+    // <editor-fold defaultstate="collapsed" desc="Enable deferred processing of flow definitions">
+    
+    private static final String flowDefinitionListKey = RIConstants.FACES_PREFIX + "FacesFlowDefinitions";
+    
+    private void saveFlowDefinition(FacesContext context, 
+            URI definingDocumentURI,
+            Document flowDefinitions) {
+        Map<String, Object> appMap = context.getExternalContext().getApplicationMap();
+        List<FlowDefinitionDocument> def = (List<FlowDefinitionDocument>) appMap.get(flowDefinitionListKey);
+        if (null == def) {
+            def = new ArrayList<FlowDefinitionDocument>();
+            appMap.put(flowDefinitionListKey, def);
+        }
+        def.add(new FlowDefinitionDocument(definingDocumentURI, flowDefinitions));
+    }
+    
+    private List<FlowDefinitionDocument> getSavedFlowDefinitions(FacesContext context) {
+        Map<String, Object> appMap = context.getExternalContext().getApplicationMap();
+        List<FlowDefinitionDocument> def = (List<FlowDefinitionDocument>) appMap.get(flowDefinitionListKey);
+        return (null != def) ? def : Collections.EMPTY_LIST;
+    }
+    
+    private void clearSavedFlowDefinitions(FacesContext context) {
+        Map<String, Object> appMap = context.getExternalContext().getApplicationMap();
+        List<FlowDefinitionDocument> def = (List<FlowDefinitionDocument>) appMap.get(flowDefinitionListKey);
+        if (null != def) {
+            for (FlowDefinitionDocument cur : def) {
+                cur.clear();
+            }
+            def.clear();
+            appMap.remove(flowDefinitionListKey);
+        }
+    }
+    
+    private static class FlowDefinitionDocument {
+        URI definingDocumentURI;
+        Document flowDefinitions;
+
+        public FlowDefinitionDocument(URI definingDocumentURI, 
+                Document flowDefinitions) {
+            this.definingDocumentURI = definingDocumentURI;
+            this.flowDefinitions = flowDefinitions;
+        }
+        
+        public void clear() {
+            this.definingDocumentURI = null;
+            this.flowDefinitions = null;
+        }
+        
+    }
+    
+    private class PerformDeferredFlowProcessing implements SystemEventListener {
+
+        @Override
+        public boolean isListenerForSource(Object source) {
+            return source instanceof Application;
+        }
+
+        @Override
+        public void processEvent(SystemEvent event) throws AbortProcessingException {
+            FacesContext context = FacesContext.getCurrentInstance();
+            List<FlowDefinitionDocument> flowDefinitions = 
+                    FacesFlowDefinitionConfigProcessor.this.getSavedFlowDefinitions(context);
+            for (FlowDefinitionDocument cur: flowDefinitions) {
+                try {
+                    FacesFlowDefinitionConfigProcessor.this.
+                            processFacesFlowDefinitions(cur.definingDocumentURI, cur.flowDefinitions);
+                } catch (XPathExpressionException ex) {
+                    throw new FacesException(ex);
+                }
+            }
+            FacesFlowDefinitionConfigProcessor.this.clearSavedFlowDefinitions(context);
+        }
+    }
+    
+    // </editor-fold>
+    
+    private void processFacesFlowDefinitions(URI definingDocumentURI,
+            Document document) throws XPathExpressionException {
+        String namespace = document.getDocumentElement()
+                .getNamespaceURI();
+        NodeList flowDefinitions = document.getDocumentElement()
+                .getElementsByTagNameNS(namespace, FACES_FLOW_DEFINITION);
+        
+        if (0 == flowDefinitions.getLength()) {
+            return;
+        }
+        FacesContext context = FacesContext.getCurrentInstance();
+        Application app = context.getApplication();
+        FlowHandler flowHandler = app.getFlowHandler();
+        if (null == flowHandler) {
+            FlowHandlerFactory flowHandlerFactory = (FlowHandlerFactory) FactoryFinder.getFactory(FactoryFinder.FLOW_HANDLER_FACTORY);
+            app.setFlowHandler(flowHandler = 
+                    flowHandlerFactory.createFlowHandler(context));
+        }
+        
+        XPath xpath = XPathFactory.newInstance().newXPath();
+        xpath.setNamespaceContext(new FacesConfigNamespaceContext());
+        
+        String nameStr = "";
+        NodeList nameList = (NodeList) xpath.evaluate("./ns1:name/text()", 
+                document.getDocumentElement(), XPathConstants.NODESET);
+        if (null != nameList && 1 < nameList.getLength()) {
+            throw new XPathExpressionException("<faces-config> must have at most one <name> element.");
+        }
+        if (null != nameList && 1 == nameList.getLength()) {
+            nameStr = nameList.item(0).getNodeValue().trim();
+            if (0 < nameStr.length()) {
+                ApplicationAssociate associate = ApplicationAssociate.getInstance(context.getExternalContext());
+                try {
+                    associate.relateUrlToDefiningDocumentInJar(definingDocumentURI.toURL(), nameStr);
+                } catch (MalformedURLException ex) {
+                    throw new XPathExpressionException(ex);
+                }
+            }
+        }
+        
+        for (int c = 0, size = flowDefinitions.getLength(); c < size; c++) {
+            Node flowDefinition = flowDefinitions.item(c);
+            String flowId = getIdAttribute(flowDefinition);
+            
+            String uriStr = definingDocumentURI.toASCIIString();
+            if (uriStr.endsWith(RIConstants.FLOW_DEFINITION_ID_SUFFIX)) {
+                nameStr = "";
+            }
+            
+            FlowBuilderImpl flowBuilder = new FlowBuilderImpl(context);
+            flowBuilder.id(nameStr, flowId);
+            
+            processViews(xpath, flowDefinition, flowBuilder);
+            processNavigationRules(xpath, flowDefinition, flowBuilder);
+            processReturns(xpath, flowDefinition, flowBuilder);
+            processInboundParameters(xpath, flowDefinition, flowBuilder);
+            processFlowCalls(xpath, flowDefinition, flowBuilder);
+            processSwitches(xpath, flowDefinition, flowBuilder);
+            processMethodCalls(context, xpath, flowDefinition, flowBuilder);
+            processInitializerFinalizer(xpath, flowDefinition, flowBuilder);
+            
+            String startNodeId = processStartNode(xpath, flowDefinition, flowBuilder);
+            
+            if (null != startNodeId) {
+                FlowImpl toAdd = flowBuilder._getFlow();
+                FlowNode startNode = toAdd.getNode(startNodeId);
+                if (null == startNode) {
+                    throw new XPathExpressionException("Unable to find flow node with id " + startNodeId + " to mark as start node");
+                } else {
+                    toAdd.setStartNodeId(startNodeId);
+                }
+            } else {
+                flowBuilder.viewNode(flowId, "/" + flowId + "/" + flowId + ".xhtml").markAsStartNode();
+            }
+            flowHandler.addFlow(context, flowBuilder.getFlow());
+            
+        }
+        
+    }
+
+    private void processNavigationRules(XPath xpath, Node flowDefinition, FlowBuilder flowBuilder) throws XPathExpressionException{
+        // <editor-fold defaultstate="collapsed">
+        NodeList navRules = (NodeList) xpath.evaluate(".//ns1:navigation-rule", 
+                flowDefinition, XPathConstants.NODESET);
+        for (int i_navRule = 0; i_navRule < navRules.getLength(); i_navRule++) {
+            Node navRule = navRules.item(i_navRule);
+            NodeList fromViewIdList = (NodeList) 
+                    xpath.evaluate(".//ns1:from-view-id/text()", navRule, XPathConstants.NODESET);
+            if (1 != fromViewIdList.getLength()) {
+                throw new XPathExpressionException("Within <navigation-rule> must have exactly one <from-view-id>");
+            }
+            String fromViewId = fromViewIdList.item(0).getNodeValue().trim();
+            
+            NodeList navCases = (NodeList) 
+                    xpath.evaluate(".//ns1:navigation-case", navRule, XPathConstants.NODESET);
+            for (int i_navCase = 0; i_navCase < navCases.getLength(); i_navCase++) {
+                Node navCase = navCases.item(i_navCase);
+                NodeList toViewIdList = (NodeList) 
+                        xpath.evaluate(".//ns1:to-view-id/text()", navCase, XPathConstants.NODESET);
+                if (1 != toViewIdList.getLength()) {
+                    throw new XPathExpressionException("Within <navigation-case>, must have exactly one <to-view-id>");
+                }
+                String toViewId = toViewIdList.item(0).getNodeValue().trim();
+                
+                NavigationCaseBuilder ncb = flowBuilder.navigationCase();
+                ncb.fromViewId(fromViewId).toViewId(toViewId);
+                
+                {
+                    NodeList fromOutcomeList = (NodeList) 
+                            xpath.evaluate(".//ns1:from-outcome/text()", navCase, XPathConstants.NODESET);
+                    if (null != fromOutcomeList && 1 < fromOutcomeList.getLength()) {
+                        throw new XPathExpressionException("Within <navigation-case>, must have at most one <from-outcome>");
+                    }
+                    if (null != fromOutcomeList && 1 == fromOutcomeList.getLength()) {
+                        String fromOutcome = fromOutcomeList.item(0).getNodeValue().trim();
+                        ncb.fromOutcome(fromOutcome);
+                    }
+                }
+                 
+                {
+                    NodeList fromActionList = (NodeList) 
+                            xpath.evaluate(".//ns1:from-action/text()", navCase, XPathConstants.NODESET);
+                    if (null != fromActionList && 1 < fromActionList.getLength()) {
+                        throw new XPathExpressionException("Within <navigation-case>, must have at most one <from-action>");
+                    }
+                    if (null != fromActionList && 1 == fromActionList.getLength()) {
+                        String fromAction = fromActionList.item(0).getNodeValue().trim();
+                        ncb.fromAction(fromAction);
+                    }
+                }
+
+                {
+                    NodeList ifList = (NodeList) 
+                            xpath.evaluate(".//ns1:if/text()", navCase, XPathConstants.NODESET);
+                    if (null != ifList && 1 < ifList.getLength()) {
+                        throw new XPathExpressionException("Within <navigation-case>, must have zero or one <if>");
+                    }
+                    if (null != ifList && 1 == ifList.getLength()) {
+                        String ifStr = ifList.item(0).getNodeValue().trim();
+                        ncb.condition(ifStr);
+                    }
+
+                }
+                
+                {
+                    NodeList redirectList = (NodeList) 
+                            xpath.evaluate(".//ns1:redirect", navCase, XPathConstants.NODESET);
+                    if (null != redirectList && 1 < redirectList.getLength()) {
+                        throw new XPathExpressionException("Within <navigation-case>, must have zero or one <redirect>");
+                    }
+                    if (null != redirectList && 1 == redirectList.getLength()) {
+                        NavigationCaseBuilder.RedirectBuilder redirector = ncb.redirect();
+                        Node redirectNode = redirectList.item(0);
+                        String includeViewParams = getAttribute(redirectNode, "include-view-params");
+                        if (null != includeViewParams && "true".equalsIgnoreCase(includeViewParams)) {
+                            redirector.includeViewParams();
+                        }
+                        NodeList viewParamList = (NodeList) 
+                                xpath.evaluate(".//ns1:redirect-param", redirectNode, XPathConstants.NODESET);
+                        if (null != viewParamList) {
+                            for (int i_viewParam = 0; i_viewParam < viewParamList.getLength(); i_viewParam++) {
+                                Node viewParam = viewParamList.item(i_viewParam);
+                                NodeList nameList = (NodeList) 
+                                        xpath.evaluate(".//ns1:name/text()", viewParam, XPathConstants.NODESET);
+                                if (null == nameList || 1 != nameList.getLength()) {
+                                    throw new XPathExpressionException("Within <redirect-param> must have <name>.");
+                                }
+                                String nameStr = nameList.item(0).getNodeValue().trim();
+                                
+                                NodeList valueList = (NodeList) 
+                                        xpath.evaluate(".//ns1:value/text()", viewParam, XPathConstants.NODESET);
+                                if (null == valueList || 1 != valueList.getLength()) {
+                                    throw new XPathExpressionException("Within <redirect-param> must have <value>.");
+                                }
+                                String valueStr = valueList.item(0).getNodeValue().trim();
+                                redirector.parameter(nameStr, valueStr);
+                            }
+                        }
+                    }
+                }
+                
+                
+            }
+        }
+        // </editor-fold>
+    }
+    
+    private void processViews(XPath xpath, Node flowDefinition, FlowBuilder flowBuilder) throws XPathExpressionException{
+        // <editor-fold defaultstate="collapsed">
+        NodeList views = (NodeList) xpath.evaluate(".//ns1:view", 
+                flowDefinition, XPathConstants.NODESET);
+        for (int i_view = 0; i_view < views.getLength(); i_view++) {
+            Node viewNode = views.item(i_view);
+            String viewNodeId = getIdAttribute(viewNode);
+            NodeList vdlDocumentList = (NodeList) 
+                    xpath.evaluate(".//ns1:vdl-document/text()", viewNode, XPathConstants.NODESET);
+            if (1 != vdlDocumentList.getLength()) {
+                throw new XPathExpressionException("Within <view> exactly one child is allowed, and it must be a <vdl-document>");
+            }
+            String vdlDocumentStr = vdlDocumentList.item(0).getNodeValue().trim();
+            flowBuilder.viewNode(viewNodeId, vdlDocumentStr);
+        }        
+        // </editor-fold>
+    }
+
+    private void processReturns(XPath xpath, Node flowDefinition, FlowBuilder flowBuilder) throws XPathExpressionException{
+        // <editor-fold defaultstate="collapsed">
+
+        NodeList returns = (NodeList) xpath.evaluate(".//ns1:flow-return", 
+                flowDefinition, XPathConstants.NODESET);
+        for (int i_return = 0; i_return < returns.getLength(); i_return++) {
+            Node returnNode = returns.item(i_return);
+            NodeList fromOutcomeList = (NodeList) 
+                    xpath.evaluate(".//ns1:from-outcome/text()", returnNode, XPathConstants.NODESET);
+            String id = getIdAttribute(returnNode);
+            if (null != fromOutcomeList && 1 < fromOutcomeList.getLength()) {
+                throw new XPathExpressionException("Within <flow-return id=\"" + id + "\"> only one child is allowed, and it must be a <from-outcome>");
+            } 
+            if (null != fromOutcomeList && 1 == fromOutcomeList.getLength()) {
+                String fromOutcomeStr = fromOutcomeList.item(0).getNodeValue().trim();
+                flowBuilder.returnNode(id).fromOutcome(fromOutcomeStr);
+            }
+            
+        }
+        // </editor-fold>
+    }
+    
+    private void processInboundParameters(XPath xpath, Node flowDefinition, FlowBuilder flowBuilder) throws XPathExpressionException {
+        // <editor-fold defaultstate="collapsed">
+        NodeList inboundParameters = (NodeList) xpath.evaluate(".//ns1:inbound-parameter", 
+                flowDefinition, XPathConstants.NODESET);
+        for (int i_inbound = 0; i_inbound < inboundParameters.getLength(); i_inbound++) {
+            Node inboundParamNode = inboundParameters.item(i_inbound);
+            NodeList nameList = (NodeList) 
+                    xpath.evaluate(".//ns1:name/text()", inboundParamNode, XPathConstants.NODESET);
+            if (1 < nameList.getLength()) {
+                throw new XPathExpressionException("Within <inbound-parameter> only one <name> child is allowed");
+            }
+            String nameStr = nameList.item(0).getNodeValue().trim();
+            
+            NodeList valueList = (NodeList) 
+                    xpath.evaluate(".//ns1:value/text()", inboundParamNode, XPathConstants.NODESET);
+            if (1 < valueList.getLength()) {
+                throw new XPathExpressionException("Within <inbound-parameter> only one <value> child is allowed");
+            }
+            String valueStr = valueList.item(0).getNodeValue().trim();
+            flowBuilder.inboundParameter(nameStr, valueStr);
+        }
+        // </editor-fold>
+    }
+    
+    private void processFlowCalls(XPath xpath, Node flowDefinition, FlowBuilder flowBuilder) throws XPathExpressionException {
+        // <editor-fold defaultstate="collapsed">
+        NodeList flowCalls = (NodeList) xpath.evaluate(".//ns1:flow-call", 
+                flowDefinition, XPathConstants.NODESET);
+        for (int i_flowCall = 0; i_flowCall < flowCalls.getLength(); i_flowCall++) {
+            Node flowCallNode = flowCalls.item(i_flowCall);
+            String flowCallId = getIdAttribute(flowCallNode);
+            NodeList facesFlowRefList = (NodeList) 
+                    xpath.evaluate(".//ns1:flow-reference", 
+                    flowCallNode, XPathConstants.NODESET);
+            if (null == facesFlowRefList || 1 != facesFlowRefList.getLength()) {
+                throw new XPathExpressionException("Within <flow-call> must have exactly one <flow-reference>");
+            }
+            Node facesFlowRefNode = facesFlowRefList.item(0);
+
+            NodeList facesFlowIdList = (NodeList) 
+                    xpath.evaluate(".//ns1:flow-id/text()", 
+                    facesFlowRefNode, XPathConstants.NODESET);
+            if (null == facesFlowIdList || 1 != facesFlowIdList.getLength()) {
+                throw new XPathExpressionException("Within <flow-reference> must have exactly one <flow-id>");
+            }
+            
+            String destinationId = facesFlowIdList.item(0).getNodeValue().trim();
+            
+            NodeList definingDocumentIdList = (NodeList) 
+                    xpath.evaluate(".//ns1:flow-document-id/text()", 
+                    facesFlowRefNode, XPathConstants.NODESET);
+            if (null == definingDocumentIdList && 1 != definingDocumentIdList.getLength()) {
+                throw new XPathExpressionException("Within <flow-reference> must have at most one <flow-document-id>");
+            }
+            String definingDocumentId = "";
+            if (null != definingDocumentIdList && 1 == definingDocumentIdList.getLength()) {
+                definingDocumentId = definingDocumentIdList.item(0).getNodeValue().trim();
+            }
+            
+            FlowCallBuilder flowCallBuilder = flowBuilder.flowCallNode(flowCallId);
+                    
+            flowCallBuilder.flowReference(definingDocumentId, destinationId);
+            
+            NodeList outboundParameters = (NodeList) xpath.evaluate(".//ns1:outbound-parameter", 
+                    flowDefinition, XPathConstants.NODESET);
+            if (null != outboundParameters) {
+                for (int i_outbound = 0; i_outbound < outboundParameters.getLength(); i_outbound++) {
+                    Node outboundParamNode = outboundParameters.item(i_outbound);
+                    NodeList nameList = (NodeList) 
+                            xpath.evaluate(".//ns1:name/text()", outboundParamNode, XPathConstants.NODESET);
+                    if (1 < nameList.getLength()) {
+                        throw new XPathExpressionException("Within <outbound-parameter> only one <name> child is allowed");
+                    }
+                    String nameStr = nameList.item(0).getNodeValue().trim();
+                    
+                    NodeList valueList = (NodeList) 
+                            xpath.evaluate(".//ns1:value/text()", outboundParamNode, XPathConstants.NODESET);
+                    if (1 < valueList.getLength()) {
+                        throw new XPathExpressionException("Within <inbound-parameter> only one <value> child is allowed");
+                    }
+                    String valueStr = valueList.item(0).getNodeValue().trim();
+                    flowCallBuilder.outboundParameter(nameStr, valueStr);
+                }
+            }
+            
+        }
+        // </editor-fold>
+    }
+    
+    private void processSwitches(XPath xpath, Node flowDefinition, FlowBuilder flowBuilder) throws XPathExpressionException {
+        // <editor-fold defaultstate="collapsed">
+        NodeList switches = (NodeList) xpath.evaluate(".//ns1:switch", 
+                flowDefinition, XPathConstants.NODESET);
+        if (null == switches) {
+            return;
+        }
+        for (int i_switch = 0; i_switch < switches.getLength(); i_switch++) {
+            Node switchNode = switches.item(i_switch);
+            String switchId = getIdAttribute(switchNode);
+            SwitchBuilder switchBuilder = flowBuilder.switchNode(switchId);
+            NodeList cases = (NodeList) xpath.evaluate(".//ns1:case", 
+                    switchNode, XPathConstants.NODESET);
+            if (null != cases) {
+                for (int i_case = 0; i_case < cases.getLength(); i_case++) {
+                    Node caseNode = cases.item(i_case);
+                    NodeList ifList = (NodeList) 
+                            xpath.evaluate(".//ns1:if/text()", caseNode, XPathConstants.NODESET);
+                    if (1 < ifList.getLength()) {
+                        throw new XPathExpressionException("Within <case> only one <if> child is allowed");
+                    }
+                    String ifStr = ifList.item(0).getNodeValue().trim();
+
+                    NodeList fromOutcomeList = (NodeList) 
+                            xpath.evaluate(".//ns1:from-outcome/text()", caseNode, XPathConstants.NODESET);
+                    if (1 < fromOutcomeList.getLength()) {
+                        throw new XPathExpressionException("Within <case> only one <from-outcome> child is allowed");
+                    }
+                    String fromOutcomeStr = fromOutcomeList.item(0).getNodeValue().trim();
+                    
+                    switchBuilder.switchCase().condition(ifStr).fromOutcome(fromOutcomeStr);
+                }
+            }
+            
+            NodeList defaultOutcomeList = (NodeList) 
+                    xpath.evaluate(".//ns1:default-outcome/text()", switchNode, XPathConstants.NODESET);
+            if (null != defaultOutcomeList && 1 < defaultOutcomeList.getLength()) {
+                throw new XPathExpressionException("Within <switch> only one <default-outcome> child is allowed");
+            }
+            if (null != defaultOutcomeList) {
+                Node defaultOutcomeNode = defaultOutcomeList.item(0);
+                if (null != defaultOutcomeNode) {
+                    String defaultOutcomeStr = defaultOutcomeNode.getNodeValue().trim();
+                    switchBuilder.defaultOutcome(defaultOutcomeStr);
+                }
+            }
+        }
+        
+        
+        // </editor-fold>
+    }
+    
+    private void processMethodCalls(FacesContext context, XPath xpath, Node flowDefinition, FlowBuilder flowBuilder) throws XPathExpressionException {
+        // <editor-fold defaultstate="collapsed">
+        NodeList methodCalls = (NodeList) xpath.evaluate(".//ns1:method-call", 
+                flowDefinition, XPathConstants.NODESET);
+        if (null == methodCalls) {
+            return;
+        }
+        for (int i_methodCall = 0; i_methodCall < methodCalls.getLength(); i_methodCall++) {
+            Node methodCallNode = methodCalls.item(i_methodCall);
+            String methodCallId = getIdAttribute(methodCallNode);
+            MethodCallBuilder methodCallBuilder = flowBuilder.methodCallNode(methodCallId);
+            NodeList methodList = (NodeList) 
+                    xpath.evaluate(".//ns1:method/text()", methodCallNode, XPathConstants.NODESET);
+            if (1 != methodList.getLength()) {
+                throw new XPathExpressionException("Within <method-call> exactly one <method> child is allowed");
+            }
+            String methodStr = methodList.item(0).getNodeValue().trim();
+            
+            NodeList params = (NodeList) xpath.evaluate(".//ns1:parameter", 
+                    methodCallNode, XPathConstants.NODESET);
+            if (null != params) {
+                List<Class> paramTypes = Collections.emptyList();
+                if (0 < params.getLength()) {
+                    paramTypes = new ArrayList<Class>();
+                    List<Parameter> paramList = new ArrayList<Parameter>();
+                    Parameter toAdd = null;
+                    ExpressionFactory ef = context.getApplication().getExpressionFactory();
+                    ELContext elContext = context.getELContext();
+                    ValueExpression ve = null;
+                    
+                    for (int i_param = 0; i_param < params.getLength(); i_param++) {
+                        Node param = params.item(i_param);
+                        NodeList valueList = (NodeList) 
+                                xpath.evaluate(".//ns1:value/text()", param, XPathConstants.NODESET);
+                        if (null == valueList || 1 != valueList.getLength()) {
+                            throw new XPathExpressionException("Within <parameter> exactly one <value> child is allowed");
+                        }
+                        String valueStr = valueList.item(0).getNodeValue().trim();
+                        String classStr = null;
+                        
+                        NodeList classList = (NodeList) 
+                                xpath.evaluate(".//ns1:class/text()", param, XPathConstants.NODESET);
+                        if (null != classList && 1 < classList.getLength()) {
+                            throw new XPathExpressionException("Within <parameter> at most one <class> child is allowed");
+                        }
+                        if (null != classList && 1 == classList.getLength()) {
+                            classStr = classList.item(0).getNodeValue().trim();
+                        }
+                        Class clazz = String.class; 
+                        if (null != classStr) {
+                            try {
+                                clazz = ReflectionUtil.forName(classStr);
+                            } catch (ClassNotFoundException e) {
+                                clazz = Object.class;
+                            }
+                        }
+                        
+                        ve = ef.createValueExpression(elContext, valueStr, clazz);
+                        toAdd = new ParameterImpl(classStr, ve);
+                        paramList.add(toAdd);
+                        paramTypes.add(clazz);
+                    }
+                    methodCallBuilder.parameters(paramList);
+                }
+                Class [] paramArray = new Class[paramTypes.size()];
+                paramTypes.toArray(paramArray);
+                methodCallBuilder.expression(methodStr, paramArray);
+            }
+            
+            NodeList defaultOutcomeList = (NodeList) 
+                    xpath.evaluate(".//ns1:default-outcome/text()", methodCallNode, XPathConstants.NODESET);
+            if (null != defaultOutcomeList && 1 < defaultOutcomeList.getLength()) {
+                throw new XPathExpressionException("Within <method-call> only one <default-outcome> child is allowed");
+            }
+            if (null != defaultOutcomeList) {
+                String defaultOutcomeStr = defaultOutcomeList.item(0).getNodeValue().trim();
+                methodCallBuilder.defaultOutcome(defaultOutcomeStr);
+            }
+            
+        }
+            
+        
+        // </editor-fold>
+    }
+    
+    private void processInitializerFinalizer(XPath xpath, Node flowDefinition, FlowBuilder flowBuilder) throws XPathExpressionException {
+        // <editor-fold defaultstate="collapsed">
+        NodeList initializerNodeList = (NodeList) 
+                xpath.evaluate(".//ns1:initializer/text()", flowDefinition, XPathConstants.NODESET);
+        if (1 < initializerNodeList.getLength()) {
+            throw new XPathExpressionException("At most one <initializer> is allowed.");
+        }
+        
+        if (1 == initializerNodeList.getLength()) {
+            String initializerStr = initializerNodeList.item(0).getNodeValue().trim();
+            flowBuilder.initializer(initializerStr);
+        }
+
+        NodeList finalizerNodeList = (NodeList) 
+                xpath.evaluate(".//ns1:finalizer/text()", flowDefinition, XPathConstants.NODESET);
+        if (1 < finalizerNodeList.getLength()) {
+            throw new XPathExpressionException("At most one <finalizer> is allowed.");
+        }
+        
+        if (1 == finalizerNodeList.getLength()) {
+            String finalizerStr = finalizerNodeList.item(0).getNodeValue().trim();
+            flowBuilder.finalizer(finalizerStr);
+        }
+        
+        // </editor-fold>
+        
+    }
+    
+    private String processStartNode(XPath xpath, Node flowDefinition, FlowBuilder flowBuilder) throws XPathExpressionException {
+        // <editor-fold defaultstate="collapsed">
+        String startNodeId = null;
+        NodeList startNodeList = (NodeList) xpath.evaluate(".//ns1:start-node/text()", 
+                flowDefinition, XPathConstants.NODESET);
+        if (1 < startNodeList.getLength()) {
+            throw new XPathExpressionException("Within <flow-definition> at most one <start-node> is allowed");
+        }
+        if (null != startNodeList && 1 == startNodeList.getLength()) {
+            startNodeId = startNodeList.item(0).getNodeValue().trim();
+        }
+        
+        return startNodeId;
+        // </editor-fold>
+    }
+    
+    protected String getAttribute(Node node, String attrName) {
+        // <editor-fold defaultstate="collapsed">
+        Util.notNull("flow definition element", node);
+        String result = null;
+        NamedNodeMap attrs = node.getAttributes();
+        
+        if (null != attrs) {
+            Attr idAttr = (Attr) attrs.getNamedItem(attrName);
+            if (null != idAttr) {
+                result = idAttr.getValue();
+            }
+        } 
+
+        return result;
+        // </editor-fold>
+    }
+    
+    protected String getIdAttribute(Node node) throws XPathExpressionException {
+        // <editor-fold defaultstate="collapsed">
+
+        Util.notNull("flow definition element", node);
+        String result = null;
+        NamedNodeMap attrs = node.getAttributes();
+        String localName = "";
+        boolean throwException = false;
+        
+        if (null != attrs) {
+            Attr idAttr = (Attr) attrs.getNamedItem("id");
+            if (null != idAttr) {
+                result = idAttr.getValue();
+                if (!idAttr.isId()) {
+                    if (LOGGER.isLoggable(Level.FINEST)) {
+                        LOGGER.log(Level.FINEST, "Element {0} has an id attribute, but it is not declared as type xsd:id", node.getLocalName());
+                    }
+                }
+            } else {
+                localName = node.getLocalName();
+                throwException = true;
+            }
+        } else {
+            localName = node.getLocalName();
+            throwException = true;
+        }
+        
+        if (throwException) {
+            throw new XPathExpressionException("<" + localName + 
+                    "> must have an \"id\" attribute.");
+        }
+        
+        return result;
+        // </editor-fold>
+    }
+
+    
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/config/processor/FactoryConfigProcessor.java b/jsf-ri/src/main/java/com/sun/faces/config/processor/FactoryConfigProcessor.java
index db48d7a..716b1c1 100644
--- a/jsf-ri/src/main/java/com/sun/faces/config/processor/FactoryConfigProcessor.java
+++ b/jsf-ri/src/main/java/com/sun/faces/config/processor/FactoryConfigProcessor.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -81,6 +85,11 @@ public class FactoryConfigProcessor extends AbstractConfigProcessor {
     private static final String EXCEPTION_HANDLER_FACTORY = "exception-handler-factory";
 
     /**
+     * <code>/faces-config/factory/flash-factory</code>
+     */
+    private static final String FLASH_FACTORY = "flash-factory";
+    
+    /**
      * <code>/faces-config/factory/visit-context-factory</code>
      */
     private static final String VISIT_CONTEXT_FACTORY = "visit-context-factory";
@@ -96,11 +105,21 @@ public class FactoryConfigProcessor extends AbstractConfigProcessor {
     private static final String TAG_HANDLER_DELEGATE_FACTORY = "tag-handler-delegate-factory";
 
     /**
+     * <code>/faces-config/factory/facelet-cache-factory</code>
+     */
+    private static final String FACELET_CACHE_FACTORY = "facelet-cache-factory";
+
+    /**
      * <code>/faces-config/factory/faces-context-factory</code>
      */
     private static final String FACES_CONTEXT_FACTORY = "faces-context-factory";
 
     /**
+     * <code>/faces-config/factory/client-window-factory</code>
+     */
+    private static final String CLIENT_WINDOW_FACTORY = "client-window-factory";
+
+    /**
      * <code>/faces-config/factory/partial-view-context-factory</code>
      */
     private static final String PARTIAL_VIEW_CONTEXT_FACTORY = "partial-view-context-factory";
@@ -119,22 +138,30 @@ public class FactoryConfigProcessor extends AbstractConfigProcessor {
      * <code>/faces-config/factory/external-context-factory</code>
      */
     private static final String EXTERNAL_CONTEXT_FACTORY = "external-context-factory";
+    
+    /**
+     * <code>/faces-config/factory/flow-handler-factory</code>
+     */
+    private static final String FLOW_HANDLER_FACTORY = "flow-handler-factory";
 
     /**
      * <code>Array of Factory names for post-configuration validation.</code>
      */
     private static final String[] FACTORY_NAMES = {
           FactoryFinder.APPLICATION_FACTORY,
+          FactoryFinder.CLIENT_WINDOW_FACTORY,
           FactoryFinder.EXCEPTION_HANDLER_FACTORY,
           FactoryFinder.EXTERNAL_CONTEXT_FACTORY,
-          FactoryFinder.FACES_CONTEXT_FACTORY,
+          FactoryFinder.FACES_CONTEXT_FACTORY,          
+          FactoryFinder.FLASH_FACTORY,
           FactoryFinder.LIFECYCLE_FACTORY,
           FactoryFinder.VIEW_DECLARATION_LANGUAGE_FACTORY,
           FactoryFinder.PARTIAL_VIEW_CONTEXT_FACTORY,
           FactoryFinder.RENDER_KIT_FACTORY,
           FactoryFinder.VISIT_CONTEXT_FACTORY,
-          FactoryFinder.TAG_HANDLER_DELEGATE_FACTORY
-    
+          FactoryFinder.FACELET_CACHE_FACTORY,
+          FactoryFinder.TAG_HANDLER_DELEGATE_FACTORY,
+          FactoryFinder.FLOW_HANDLER_FACTORY,
     };
 
     private boolean validateFactories = true;
@@ -178,7 +205,7 @@ public class FactoryConfigProcessor extends AbstractConfigProcessor {
                 LOGGER.log(Level.FINE,
                            MessageFormat.format(
                                 "Processing factory elements for document: ''{0}''",
-                                documentInfos[i].getSourceURL()));
+                                documentInfos[i].getSourceURI()));
             }
             Document document = documentInfos[i].getDocument();
             String namespace = document.getDocumentElement()
@@ -240,6 +267,12 @@ public class FactoryConfigProcessor extends AbstractConfigProcessor {
                 } else if (LIFECYCLE_FACTORY.equals(n.getLocalName())) {
                     setFactory(FactoryFinder.LIFECYCLE_FACTORY,
                                getNodeText(n));
+                } else if (FLASH_FACTORY.equals(n.getLocalName())) {
+                    setFactory(FactoryFinder.FLASH_FACTORY,
+                               getNodeText(n));
+                } else if (CLIENT_WINDOW_FACTORY.equals(n.getLocalName())) {
+                    setFactory(FactoryFinder.CLIENT_WINDOW_FACTORY,
+                               getNodeText(n));
                 } else if (FACES_CONTEXT_FACTORY.equals(n.getLocalName())) {
                     fcCount.incrementAndGet();
                     setFactory(FactoryFinder.FACES_CONTEXT_FACTORY,
@@ -253,16 +286,21 @@ public class FactoryConfigProcessor extends AbstractConfigProcessor {
                 } else if (TAG_HANDLER_DELEGATE_FACTORY.equals(n.getLocalName())) {
                     setFactory(FactoryFinder.TAG_HANDLER_DELEGATE_FACTORY,
                                getNodeText(n));
+                } else if (FACELET_CACHE_FACTORY.equals(n.getLocalName())) {
+                    setFactory(FactoryFinder.FACELET_CACHE_FACTORY,
+                               getNodeText(n));
                 } else if (EXTERNAL_CONTEXT_FACTORY.equals(n.getLocalName())) {
                     setFactory(FactoryFinder.EXTERNAL_CONTEXT_FACTORY,
                                getNodeText(n));
                 } else if (PARTIAL_VIEW_CONTEXT_FACTORY.equals(n.getLocalName())) {
                     setFactory(FactoryFinder.PARTIAL_VIEW_CONTEXT_FACTORY,
                                getNodeText(n));
+                } else if (FLOW_HANDLER_FACTORY.equals(n.getLocalName())) {
+                    setFactory(FactoryFinder.FLOW_HANDLER_FACTORY,
+                               getNodeText(n));
                 }
             }
         }
-
     }
 
 
diff --git a/jsf-ri/src/main/java/com/sun/faces/config/processor/LifecycleConfigProcessor.java b/jsf-ri/src/main/java/com/sun/faces/config/processor/LifecycleConfigProcessor.java
index 0c603d7..4204a52 100644
--- a/jsf-ri/src/main/java/com/sun/faces/config/processor/LifecycleConfigProcessor.java
+++ b/jsf-ri/src/main/java/com/sun/faces/config/processor/LifecycleConfigProcessor.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -91,7 +95,7 @@ public class LifecycleConfigProcessor extends AbstractConfigProcessor {
                 LOGGER.log(Level.FINE,
                            MessageFormat.format(
                                 "Processing lifecycle elements for document: ''{0}''",
-                                documentInfos[i].getSourceURL()));
+                                documentInfos[i].getSourceURI()));
             }
             Document document = documentInfos[i].getDocument();
             String namespace =
@@ -104,7 +108,7 @@ public class LifecycleConfigProcessor extends AbstractConfigProcessor {
                     if (n.getNodeType() == Node.ELEMENT_NODE) {
                         NodeList listeners = ((Element) n).getElementsByTagNameNS(namespace,
                                                                                   PHASE_LISTENER);
-                        addPhaseListeners(factory, listeners);
+                        addPhaseListeners(sc, factory, listeners);
                     }
                 }
             }            
@@ -117,7 +121,7 @@ public class LifecycleConfigProcessor extends AbstractConfigProcessor {
     // --------------------------------------------------------- Private Methods
 
 
-    private void addPhaseListeners(LifecycleFactory factory,
+    private void addPhaseListeners(ServletContext sc, LifecycleFactory factory,
                                    NodeList phaseListeners) {
 
         if (phaseListeners != null && phaseListeners.getLength() > 0) {
@@ -125,7 +129,7 @@ public class LifecycleConfigProcessor extends AbstractConfigProcessor {
                 Node plNode = phaseListeners.item(i);
                 String pl = getNodeText(plNode);
                 if (pl != null) {
-                    Object plInstance = createInstance(pl,
+                    Object plInstance = createInstance(sc, pl,
                                                        PhaseListener.class,
                                                        null,
                                                        plNode);
diff --git a/jsf-ri/src/main/java/com/sun/faces/config/processor/ManagedBeanConfigProcessor.java b/jsf-ri/src/main/java/com/sun/faces/config/processor/ManagedBeanConfigProcessor.java
index 06ed1e0..c043f91 100644
--- a/jsf-ri/src/main/java/com/sun/faces/config/processor/ManagedBeanConfigProcessor.java
+++ b/jsf-ri/src/main/java/com/sun/faces/config/processor/ManagedBeanConfigProcessor.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -246,7 +250,7 @@ public class ManagedBeanConfigProcessor extends AbstractConfigProcessor {
                 LOGGER.log(Level.FINE,
                            MessageFormat.format(
                                 "Processing managed-bean elements for document: ''{0}''",
-                                documentInfos[i].getSourceURL()));
+                                documentInfos[i].getSourceURI()));
             }
             Document document = documentInfos[i].getDocument();
             String namespace = document.getDocumentElement().getNamespaceURI();
@@ -525,4 +529,4 @@ public class ManagedBeanConfigProcessor extends AbstractConfigProcessor {
     }
    
 
-}
\ No newline at end of file
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/config/processor/NavigationConfigProcessor.java b/jsf-ri/src/main/java/com/sun/faces/config/processor/NavigationConfigProcessor.java
index cbd0b80..a82c780 100644
--- a/jsf-ri/src/main/java/com/sun/faces/config/processor/NavigationConfigProcessor.java
+++ b/jsf-ri/src/main/java/com/sun/faces/config/processor/NavigationConfigProcessor.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -53,7 +57,6 @@ import java.util.logging.Level;
 import java.util.logging.Logger;
 import java.text.MessageFormat;
 
-import com.sun.faces.el.ELUtils;
 import com.sun.faces.config.DocumentInfo;
 
 
@@ -103,6 +106,11 @@ public class NavigationConfigProcessor extends AbstractConfigProcessor {
     private static final String TO_VIEW_ID = "to-view-id";
 
     /**
+     * <p>/faces-config/navigation-rule/navigation-case/to-flow-document-id</p>
+     */
+    private static final String TO_FLOW_DOCUMENT_ID = "to-flow-document-id";
+
+    /**
      * <p>/faces-config/navigation-rule/navigation-case/redirect</p>
      */
     private static final String REDIRECT = "redirect";
@@ -148,7 +156,7 @@ public class NavigationConfigProcessor extends AbstractConfigProcessor {
                 LOGGER.log(Level.FINE,
                         MessageFormat.format(
                                 "Processing navigation-rule elements for document: ''{0}''",
-                                documentInfo.getSourceURL()));
+                                documentInfo.getSourceURI()));
             }
             Document document = documentInfo.getDocument();
             String namespace = document.getDocumentElement()
@@ -175,25 +183,26 @@ public class NavigationConfigProcessor extends AbstractConfigProcessor {
 
             for (int i = 0, size = navigationRules.getLength(); i < size; i++) {
                 Node navigationRule = navigationRules.item(i);
-                if (navigationRule.getNodeType() == Node.ELEMENT_NODE) {
+                if ((!("flow-definition".equals(navigationRule.getParentNode().getLocalName()))) &&
+                    (navigationRule.getNodeType() == Node.ELEMENT_NODE)) {
                     NodeList children = navigationRule.getChildNodes();
                     String fromViewId = FROM_VIEW_ID_DEFAULT;
                     List<Node> navigationCases = null;
                     for (int c = 0, csize = children.getLength();
-                         c < csize;
-                         c++) {
+                            c < csize;
+                            c++) {
                         Node n = children.item(c);
                         if (n.getNodeType() == Node.ELEMENT_NODE) {
                             if (FROM_VIEW_ID.equals(n.getLocalName())) {
                                 String t = getNodeText(n);
                                 fromViewId = ((t == null)
-                                              ? FROM_VIEW_ID_DEFAULT
-                                              : t);
+                                        ? FROM_VIEW_ID_DEFAULT
+                                        : t);
                                 if (!fromViewId.equals(FROM_VIEW_ID_DEFAULT) && fromViewId.charAt(0) != '/') {
                                     if (LOGGER.isLoggable(Level.WARNING)) {
-                                    LOGGER.log(Level.WARNING,
-                                               "jsf.config.navigation.from_view_id_leading_slash",
-                                               new String[] { fromViewId });
+                                        LOGGER.log(Level.WARNING,
+                                                "jsf.config.navigation.from_view_id_leading_slash",
+                                                new String[] { fromViewId });
                                     }
                                     fromViewId = '/' + fromViewId;
                                 }
@@ -205,17 +214,17 @@ public class NavigationConfigProcessor extends AbstractConfigProcessor {
                             }
                         }
                     }
-
+                    
                     if (LOGGER.isLoggable(Level.FINE)) {
                         LOGGER.log(Level.FINE,
-                                   MessageFormat.format(
-                                        "Processing navigation rule with 'from-view-id' of ''{0}''",
-                                        fromViewId));
+                                MessageFormat.format(
+                                "Processing navigation rule with 'from-view-id' of ''{0}''",
+                                fromViewId));
                     }
                     addNavigationCasesForRule(fromViewId,
-                                              navigationCases,
-                                              navHandler,
-                                              sc);
+                            navigationCases,
+                            navHandler,
+                            sc);
                 }
             }
     }
@@ -239,6 +248,7 @@ public class NavigationConfigProcessor extends AbstractConfigProcessor {
                 String action = null;
                 String condition = null;
                 String toViewId = null;
+                String toFlowDocumentId = null;
                 Map<String,List<String>> parameters = null;
                 boolean redirect = false;
                 boolean includeViewParams = false;
@@ -251,7 +261,7 @@ public class NavigationConfigProcessor extends AbstractConfigProcessor {
                             action = getNodeText(n);
                         } else if (IF.equals(n.getLocalName())) {
                             String expression = getNodeText(n);
-                            if (ELUtils.isExpression(expression) && !ELUtils.isMixedExpression(expression)) {
+                            if (SharedUtils.isExpression(expression) && !SharedUtils.isMixedExpression(expression)) {
                                 condition = expression;
                             }
                             else {
@@ -274,6 +284,8 @@ public class NavigationConfigProcessor extends AbstractConfigProcessor {
                             } else {
                                 toViewId = toViewIdString;
                             }
+                        } else if (TO_FLOW_DOCUMENT_ID.equals(n.getLocalName())) {
+                            toFlowDocumentId = getNodeText(n);
                         } else if (REDIRECT.equals(n.getLocalName())) {
                             parameters = processParameters(n.getChildNodes());
                             includeViewParams = isIncludeViewParams(n);
@@ -288,6 +300,7 @@ public class NavigationConfigProcessor extends AbstractConfigProcessor {
                                         outcome,
                                         condition,
                                         toViewId,
+                                        toFlowDocumentId,
                                         parameters,
                                         redirect,
                                         includeViewParams);
diff --git a/jsf-ri/src/main/java/com/sun/faces/config/processor/ProtectedViewsConfigProcessor.java b/jsf-ri/src/main/java/com/sun/faces/config/processor/ProtectedViewsConfigProcessor.java
new file mode 100644
index 0000000..63300fb
--- /dev/null
+++ b/jsf-ri/src/main/java/com/sun/faces/config/processor/ProtectedViewsConfigProcessor.java
@@ -0,0 +1,168 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.config.processor;
+
+import com.sun.faces.config.DocumentInfo;
+import com.sun.faces.config.WebConfiguration;
+import com.sun.faces.util.FacesLogger;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+import org.w3c.dom.Document;
+
+import javax.servlet.ServletContext;
+
+import java.text.MessageFormat;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.faces.application.ViewHandler;
+import javax.faces.context.FacesContext;
+
+
+/**
+ * <p>
+ *  This <code>ConfigProcessor</code> handles all elements defined under
+ *  <code>/protected-views</code>.
+ * </p>
+ */
+public class ProtectedViewsConfigProcessor extends AbstractConfigProcessor {
+
+    private static final Logger LOGGER = FacesLogger.CONFIG.getLogger();
+
+    /**
+     * <code>/faces-config/protected-views</code>
+     */
+    private static final String PROTECTED_VIEWS = "protected-views";
+
+    /**
+     * <code>/faces-config/protected-views/url-pattern</code>
+     */
+    private static final String URL_PATTERN = "url-pattern";
+
+    // ------------------------------------------------------------ Constructors
+
+    
+    public ProtectedViewsConfigProcessor() { }
+
+
+    // -------------------------------------------- Methods from ConfigProcessor
+
+
+    /**
+     * @see ConfigProcessor#process(javax.servlet.ServletContext,com.sun.faces.config.DocumentInfo[])
+     */
+    public void process(ServletContext sc, DocumentInfo[] documentInfos)
+    throws Exception {
+
+        for (int i = 0; i < documentInfos.length; i++) {
+            if (LOGGER.isLoggable(Level.FINE)) {
+                LOGGER.log(Level.FINE,
+                           MessageFormat.format(
+                                "Processing protected-views element for document: ''{0}''",
+                                documentInfos[i].getSourceURI()));
+            }
+            Document document = documentInfos[i].getDocument();
+            String namespace = document.getDocumentElement()
+                 .getNamespaceURI();
+            NodeList protectedViews = document.getDocumentElement()
+                 .getElementsByTagNameNS(namespace, PROTECTED_VIEWS);
+            if (protectedViews != null && protectedViews.getLength() > 0) {
+                processProtectedViews(protectedViews,
+                                 namespace, documentInfos[i]);
+            }
+        }
+
+        // invoke the next config processor
+        invokeNext(sc, documentInfos);
+
+    }
+
+    // --------------------------------------------------------- Private Methods
+
+
+    private void processProtectedViews(NodeList protectedViews,
+                                  String namespace, DocumentInfo info) {
+        WebConfiguration config = null;
+        ViewHandler viewHandler = null;
+
+        for (int i = 0, size = protectedViews.getLength(); i < size; i++) {
+            Node urlPatterns = protectedViews.item(i);
+            NodeList children = ((Element) urlPatterns)
+                 .getElementsByTagNameNS(namespace, "*");
+            for (int c = 0, csize = children.getLength(); c < csize; c++) {
+                Node n = children.item(c);
+                String urlPattern = null;
+                if (URL_PATTERN.equals(n.getLocalName())) {
+                    urlPattern = getNodeText(n);
+                } else {
+                    if (LOGGER.isLoggable(Level.WARNING)) {
+                        LOGGER.log(Level.WARNING,
+                                MessageFormat.format(
+                                "Processing protected-views elements for document: ''{0}'', encountered unexpected configuration ''{1}'', ignoring and continuing",
+                                info.getSourceURI(), getNodeText(n)));
+                    }
+                }
+                
+                if (null != urlPattern) {
+                    if (null == config) {
+                        config = WebConfiguration.getInstance();
+                    }
+                    if (null == viewHandler) {
+                        FacesContext context = FacesContext.getCurrentInstance();
+                        viewHandler = context.getApplication().getViewHandler();
+                    }
+                    viewHandler.addProtectedView(urlPattern);
+                    
+                } else {
+                    if (LOGGER.isLoggable(Level.WARNING)) {
+                        LOGGER.log(Level.WARNING,
+                                MessageFormat.format(
+                                "Processing protected-views elements for document: ''{0}'', encountered <url-pattern> element without expected children",
+                                info.getSourceURI()));
+                    }
+                }
+            }
+        }
+
+    }
+
+
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/config/processor/RenderKitConfigProcessor.java b/jsf-ri/src/main/java/com/sun/faces/config/processor/RenderKitConfigProcessor.java
index f614a94..44bb2a3 100644
--- a/jsf-ri/src/main/java/com/sun/faces/config/processor/RenderKitConfigProcessor.java
+++ b/jsf-ri/src/main/java/com/sun/faces/config/processor/RenderKitConfigProcessor.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -143,7 +147,7 @@ public class RenderKitConfigProcessor extends AbstractConfigProcessor {
                 LOGGER.log(Level.FINE,
                            MessageFormat.format(
                                 "Processing render-kit elements for document: ''{0}''",
-                                documentInfos[i].getSourceURL()));
+                                documentInfos[i].getSourceURI()));
             }
             Document document = documentInfos[i].getDocument();
             String namespace = document.getDocumentElement()
@@ -152,7 +156,7 @@ public class RenderKitConfigProcessor extends AbstractConfigProcessor {
                  .getElementsByTagNameNS(namespace, RENDERKIT);
 
             if (renderkits != null && renderkits.getLength() > 0) {
-                addRenderKits(renderkits, document, renderers, behaviorRenderers, rkf);
+                addRenderKits(sc, renderkits, document, renderers, behaviorRenderers, rkf);
             }
         }
 
@@ -172,7 +176,7 @@ public class RenderKitConfigProcessor extends AbstractConfigProcessor {
             }
             
             for (Map.Entry<Document,List<Node>> renderEntry : entry.getValue().entrySet()) {
-                addRenderers(rk, renderEntry.getKey(), renderEntry.getValue());
+                addRenderers(sc, rk, renderEntry.getKey(), renderEntry.getValue());
             }
         }
         // now add the accumulated behavior renderers to the RenderKits
@@ -186,7 +190,7 @@ public class RenderKitConfigProcessor extends AbstractConfigProcessor {
             }
             
             for (Map.Entry<Document,List<Node>> renderEntry : entry.getValue().entrySet()) {
-                addClientBehaviorRenderers(rk, renderEntry.getKey(), renderEntry.getValue());
+                addClientBehaviorRenderers(sc, rk, renderEntry.getKey(), renderEntry.getValue());
             }
         }
         invokeNext(sc, documentInfos);
@@ -197,7 +201,7 @@ public class RenderKitConfigProcessor extends AbstractConfigProcessor {
     // --------------------------------------------------------- Private Methods
 
 
-    private void addRenderKits(NodeList renderKits,
+    private void addRenderKits(ServletContext sc, NodeList renderKits,
                                Document owningDocument,
                                Map<String,Map<Document,List<Node>>> renderers,
                                Map<String,Map<Document,List<Node>>> behaviorRenderers,
@@ -235,7 +239,7 @@ public class RenderKitConfigProcessor extends AbstractConfigProcessor {
             if (rkClass != null) {
                 RenderKit previous = rkf.getRenderKit(FacesContext.getCurrentInstance(), 
                         rkId);
-                RenderKit rk = (RenderKit) createInstance(rkClass,
+                RenderKit rk = (RenderKit) createInstance(sc, rkClass,
                                                           RenderKit.class,
                                                           previous,
                                                           renderKit);
@@ -280,7 +284,7 @@ public class RenderKitConfigProcessor extends AbstractConfigProcessor {
 
     }
 
-    private void addRenderers(RenderKit renderKit,
+    private void addRenderers(ServletContext sc, RenderKit renderKit,
                               Document owningDocument,
                               List<Node> renderers) {
 
@@ -306,7 +310,7 @@ public class RenderKitConfigProcessor extends AbstractConfigProcessor {
             if ((rendererFamily != null)
                   && (rendererType != null)
                   && (rendererClass != null)) {
-                Renderer r = (Renderer) createInstance(rendererClass,
+                Renderer r = (Renderer) createInstance(sc, rendererClass,
                                                        Renderer.class,
                                                        null,
                                                        renderer);
@@ -327,7 +331,7 @@ public class RenderKitConfigProcessor extends AbstractConfigProcessor {
 
     }
 
-    private void addClientBehaviorRenderers(RenderKit renderKit,
+    private void addClientBehaviorRenderers(ServletContext sc, RenderKit renderKit,
                               Document owningDocument,
                               List<Node> behaviorRenderers) {
 
@@ -349,7 +353,7 @@ public class RenderKitConfigProcessor extends AbstractConfigProcessor {
 
             if ((behaviorRendererType != null)
                   && (behaviorRendererClass != null)) {
-                ClientBehaviorRenderer r = (ClientBehaviorRenderer) createInstance(behaviorRendererClass,
+                ClientBehaviorRenderer r = (ClientBehaviorRenderer) createInstance(sc, behaviorRendererClass,
                                                        ClientBehaviorRenderer.class,
                                                        null,
                                                        behaviorRenderer);                
diff --git a/jsf-ri/src/main/java/com/sun/faces/config/processor/ResourceLibraryContractsConfigProcessor.java b/jsf-ri/src/main/java/com/sun/faces/config/processor/ResourceLibraryContractsConfigProcessor.java
new file mode 100644
index 0000000..133509e
--- /dev/null
+++ b/jsf-ri/src/main/java/com/sun/faces/config/processor/ResourceLibraryContractsConfigProcessor.java
@@ -0,0 +1,205 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.config.processor;
+
+import com.sun.faces.application.ApplicationAssociate;
+import com.sun.faces.config.DocumentInfo;
+import com.sun.faces.util.FacesLogger;
+import java.text.MessageFormat;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.servlet.ServletContext;
+import javax.xml.xpath.XPath;
+import javax.xml.xpath.XPathConstants;
+import javax.xml.xpath.XPathExpressionException;
+import javax.xml.xpath.XPathFactory;
+import org.w3c.dom.Document;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+public class ResourceLibraryContractsConfigProcessor extends AbstractConfigProcessor {
+
+    /**
+     * Stores the logger.
+     */
+    private static final Logger LOGGER = FacesLogger.CONFIG.getLogger();
+    /**
+     * <code>/faces-config/resource-library-contracts</code>
+     */
+    private static final String RESOURCE_LIBRARY_CONTRACTS = "resource-library-contracts";
+
+    /**
+     * Constructor.
+     */
+    public ResourceLibraryContractsConfigProcessor() {
+    }
+
+    /**
+     * Process the configuration documents.
+     *
+     * @param servletContext the servlet context.
+     * @param documentInfos the document info(s).
+     * @throws Exception when an error occurs.
+     */
+    @Override
+    public void process(ServletContext servletContext, DocumentInfo[] documentInfos) throws Exception {
+
+        HashMap<String, List<String>> map = new HashMap<String, List<String>>();
+        for (int i = 0; i < documentInfos.length; i++) {
+            if (LOGGER.isLoggable(Level.FINE)) {
+                LOGGER.log(Level.FINE, MessageFormat.format(
+                        "Processing factory elements for document: ''{0}''",
+                        documentInfos[i].getSourceURI()));
+            }
+            Document document = documentInfos[i].getDocument();
+            String namespace = document.getDocumentElement().getNamespaceURI();
+            NodeList resourceLibraryContracts = document.getDocumentElement().getElementsByTagNameNS(namespace, RESOURCE_LIBRARY_CONTRACTS);
+            if (resourceLibraryContracts != null && resourceLibraryContracts.getLength() > 0) {
+                processResourceLibraryContracts(resourceLibraryContracts, map);
+            }
+
+        }
+
+        if (!map.isEmpty()) {
+            ApplicationAssociate associate = ApplicationAssociate.getCurrentInstance();
+            associate.setResourceLibraryContracts(map);
+        }
+
+        invokeNext(servletContext, documentInfos);
+    }
+
+    /**
+     * Process the resource library contracts.
+     *
+     * @param resourceLibraryContracts the resource library contracts.
+     * @param map the set of resource library contracts.
+     */
+    private void processResourceLibraryContracts(NodeList resourceLibraryContracts, HashMap<String, List<String>> map) {
+        XPath xpath = XPathFactory.newInstance().newXPath();
+        xpath.setNamespaceContext(new FacesConfigNamespaceContext());
+        for (int c = 0; c < resourceLibraryContracts.getLength(); c++) {
+            Node node = resourceLibraryContracts.item(c);
+            try {
+                NodeList mappings = (NodeList) xpath.evaluate(".//ns1:contract-mapping", node, XPathConstants.NODESET);
+                if (mappings != null) {
+                    for (int m = 0; m < mappings.getLength(); m++) {
+                        Node contractMapping = mappings.item(m);
+                        NodeList urlPatterns = (NodeList) xpath.evaluate(".//ns1:url-pattern/text()", contractMapping, XPathConstants.NODESET);
+                        if (urlPatterns != null) {
+                            for (int p = 0; p < urlPatterns.getLength(); p++) {
+                                String urlPattern = urlPatterns.item(p).getNodeValue().trim();
+
+                                if (LOGGER.isLoggable(Level.INFO)) {
+                                    LOGGER.log(Level.INFO, "Processing resource library contract mapping for url-pattern: {0}", urlPattern);
+                                }
+
+                                if (!map.containsKey(urlPattern)) {
+                                    /*
+                                     * If there is no urlPattern then add it to the list,
+                                     */
+                                    ArrayList<String> list = new ArrayList<String>();
+                                    NodeList contracts = (NodeList) xpath.evaluate(".//ns1:contracts/text()", contractMapping, XPathConstants.NODESET);
+                                    if (contracts != null && contracts.getLength() > 0) {
+                                        for (int j = 0; j < contracts.getLength(); j++) {
+                                            String[] contractStrings = contracts.item(j).getNodeValue().trim().split(",");
+                                            for (int k = 0; k < contractStrings.length; k++) {
+                                                if (!list.contains(contractStrings[k])) {
+                                                    if (LOGGER.isLoggable(Level.INFO)) {
+                                                        LOGGER.log(Level.INFO,
+                                                                "Added contract: {0} for url-pattern: {1}",
+                                                                new Object[]{contractStrings[k], urlPattern});
+                                                    }
+                                                    list.add(contractStrings[k]);
+                                                } else {
+                                                    /*
+                                                     * We found the contract again in the list for the specified url-pattern.
+                                                     */
+                                                    if (LOGGER.isLoggable(Level.INFO)) {
+                                                        LOGGER.log(Level.INFO,
+                                                                "Duplicate contract: {0} found for url-pattern: {1}",
+                                                                new Object[]{contractStrings[k], urlPattern});
+                                                    }
+                                                }
+                                            }
+                                        }
+                                    }
+
+                                    if (!list.isEmpty()) {
+                                        /*
+                                         * Now add the url-pattern and its contracts.
+                                         */
+                                        map.put(urlPattern, list);
+                                    } else {
+                                        /*
+                                         * The list was empty, log there were no contracts specified.
+                                         */
+                                        if (LOGGER.isLoggable(Level.INFO)) {
+                                            LOGGER.log(Level.INFO, "No contracts found for url-pattern: {0}", urlPattern);
+                                        }
+                                    }
+                                } else {
+                                    /*
+                                     * Otherwise log there is a duplicate url-pattern found.
+                                     */
+                                    if (LOGGER.isLoggable(Level.INFO)) {
+                                        LOGGER.log(Level.INFO, "Duplicate url-patern found: {0}, ignoring it", urlPattern);
+                                    }
+                                }
+                            }
+                        }
+                    }
+                }
+            } catch (XPathExpressionException exception) {
+                /*
+                 * This particular exception will never happen since the 
+                 * above valid XPath expressions never change, but the XPath 
+                 * runtime defines it as a checked exception so we have to 
+                 * deal with it.
+                 */
+                if (LOGGER.isLoggable(Level.FINEST)) {
+                    LOGGER.log(Level.FINEST, "Unable to parse XPath expression", exception);
+                }
+            }
+        }
+    }
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/config/processor/ValidatorConfigProcessor.java b/jsf-ri/src/main/java/com/sun/faces/config/processor/ValidatorConfigProcessor.java
index 1c896be..2997389 100644
--- a/jsf-ri/src/main/java/com/sun/faces/config/processor/ValidatorConfigProcessor.java
+++ b/jsf-ri/src/main/java/com/sun/faces/config/processor/ValidatorConfigProcessor.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -101,7 +105,7 @@ public class ValidatorConfigProcessor extends AbstractConfigProcessor {
                 LOGGER.log(Level.FINE,
                            MessageFormat.format(
                                 "Processing validator elements for document: ''{0}''",
-                                documentInfos[i].getSourceURL()));
+                                documentInfos[i].getSourceURI()));
             }
             Document document = documentInfos[i].getDocument();
             String namespace = document.getDocumentElement().getNamespaceURI();
diff --git a/jsf-ri/src/main/java/com/sun/faces/context/AjaxExceptionHandlerImpl.java b/jsf-ri/src/main/java/com/sun/faces/context/AjaxExceptionHandlerImpl.java
index 01f8080..4d6a5bd 100644
--- a/jsf-ri/src/main/java/com/sun/faces/context/AjaxExceptionHandlerImpl.java
+++ b/jsf-ri/src/main/java/com/sun/faces/context/AjaxExceptionHandlerImpl.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -57,6 +61,8 @@ import javax.faces.event.ExceptionQueuedEventContext;
 import javax.faces.event.PhaseId;
 
 import com.sun.faces.util.FacesLogger;
+import java.io.PrintWriter;
+import java.io.StringWriter;
 
 
 /**
@@ -93,8 +99,9 @@ public class AjaxExceptionHandlerImpl extends ExceptionHandlerWrapper {
     }
 
     /**
-     * @see ExceptionHandlerWrapper at getHandledExceptionQueuedEvent()
+     * @see ExceptionHandler#getHandledExceptionQueuedEvent() 
      */
+    @Override
     public ExceptionQueuedEvent getHandledExceptionQueuedEvent() {
 
         return handled;
@@ -113,13 +120,13 @@ public class AjaxExceptionHandlerImpl extends ExceptionHandlerWrapper {
                 Throwable t = context.getException();
                 if (isRethrown(t)) {
                     handled = event;
-                    t.printStackTrace();
                     Throwable unwrapped = getRootCause(t);
+
                     if (unwrapped != null) {
-                        handlePartialResponseError(context.getContext(), unwrapped); 
+                        handlePartialResponseError(context.getContext(), unwrapped);
                     } else {
                         if (t instanceof FacesException) {
-                            handlePartialResponseError(context.getContext(), t); 
+                            handlePartialResponseError(context.getContext(), t);
                         } else {
                             handlePartialResponseError(context.getContext(), 
                                     new FacesException(t.getMessage(), t));
@@ -167,7 +174,6 @@ public class AjaxExceptionHandlerImpl extends ExceptionHandlerWrapper {
 
     /**
      * @see javax.faces.context.ExceptionHandlerWrapper#getHandledExceptionQueuedEvents()
-     * @return
      */
     public Iterable<ExceptionQueuedEvent> getHandledExceptionQueuedEvents() {
 
@@ -194,15 +200,24 @@ public class AjaxExceptionHandlerImpl extends ExceptionHandlerWrapper {
 
              writer.startDocument();
              writer.startError(t.getClass().toString());
+             String msg = "";
              if (t.getCause() != null) {
-                 String msg = t.getCause().getMessage();
+                 msg = t.getCause().getMessage();
                  writer.write(((msg != null) ? msg : ""));
              } else {
-                 String msg = t.getMessage();
+                 msg = t.getMessage();
                  writer.write(((msg != null) ? msg : ""));
              }
              writer.endError();
              writer.endDocument();
+             
+             if (LOGGER.isLoggable(Level.SEVERE)) {
+                 StringWriter sw = new StringWriter();
+                 PrintWriter pw = new PrintWriter(sw);
+                 t.printStackTrace(pw);
+                 LOGGER.log(Level.SEVERE, sw.toString());
+             }
+             
              context.responseComplete();
          } catch (IOException ioe) {
             if (LOGGER.isLoggable(Level.SEVERE)) {
diff --git a/jsf-ri/src/main/java/com/sun/faces/context/AjaxNoAjaxExceptionHandler.java b/jsf-ri/src/main/java/com/sun/faces/context/AjaxNoAjaxExceptionHandler.java
new file mode 100644
index 0000000..84e0547
--- /dev/null
+++ b/jsf-ri/src/main/java/com/sun/faces/context/AjaxNoAjaxExceptionHandler.java
@@ -0,0 +1,69 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.context;
+
+import javax.faces.context.ExceptionHandler;
+import javax.faces.context.ExceptionHandlerWrapper;
+import javax.faces.context.FacesContext;
+
+public class AjaxNoAjaxExceptionHandler extends ExceptionHandlerWrapper {
+    
+    private AjaxExceptionHandlerImpl ajaxExceptionHandlerImpl;
+    private ExceptionHandlerImpl exceptionHandlerImpl;
+
+    public AjaxNoAjaxExceptionHandler(AjaxExceptionHandlerImpl ajaxExceptionHandlerImpl, ExceptionHandlerImpl exceptionHandlerImpl) {
+        this.ajaxExceptionHandlerImpl = ajaxExceptionHandlerImpl;
+        this.exceptionHandlerImpl = exceptionHandlerImpl;
+    }
+
+    @Override
+    public ExceptionHandler getWrapped() {
+        FacesContext fc = FacesContext.getCurrentInstance();
+        if (null != fc && fc.getPartialViewContext().isAjaxRequest()) {
+            return ajaxExceptionHandlerImpl;
+        }
+        return exceptionHandlerImpl;
+        
+    }
+    
+    
+    
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/context/AlwaysPuttingSessionMap.java b/jsf-ri/src/main/java/com/sun/faces/context/AlwaysPuttingSessionMap.java
new file mode 100644
index 0000000..a9b7f90
--- /dev/null
+++ b/jsf-ri/src/main/java/com/sun/faces/context/AlwaysPuttingSessionMap.java
@@ -0,0 +1,65 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.context;
+
+import javax.faces.application.ProjectStage;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpSession;
+
+public class AlwaysPuttingSessionMap extends SessionMap {
+
+    public AlwaysPuttingSessionMap(HttpServletRequest request, ProjectStage stage) {
+        super(request, stage);
+    }
+
+    @Override
+    public Object put(String key, Object value) {
+        HttpSession session = getSession(true);
+        Object result = session.getAttribute(key);
+        session.setAttribute(key, value);
+        
+        return result;
+    }
+    
+    
+    
+    
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/context/ApplicationMap.java b/jsf-ri/src/main/java/com/sun/faces/context/ApplicationMap.java
index e03510d..38b8730 100644
--- a/jsf-ri/src/main/java/com/sun/faces/context/ApplicationMap.java
+++ b/jsf-ri/src/main/java/com/sun/faces/context/ApplicationMap.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -58,6 +62,10 @@ public class ApplicationMap extends BaseContextMap<Object> {
     public ApplicationMap(ServletContext servletContext) {
         this.servletContext = servletContext;
     }
+    
+    public Object getContext() {
+        return this.servletContext;
+    }
 
 
     // -------------------------------------------------------- Methods from Map
diff --git a/jsf-ri/src/main/java/com/sun/faces/context/BaseContextMap.java b/jsf-ri/src/main/java/com/sun/faces/context/BaseContextMap.java
index 3a33d20..e4620dd 100644
--- a/jsf-ri/src/main/java/com/sun/faces/context/BaseContextMap.java
+++ b/jsf-ri/src/main/java/com/sun/faces/context/BaseContextMap.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/context/ExceptionHandlerFactoryImpl.java b/jsf-ri/src/main/java/com/sun/faces/context/ExceptionHandlerFactoryImpl.java
index 9558850..50bc213 100644
--- a/jsf-ri/src/main/java/com/sun/faces/context/ExceptionHandlerFactoryImpl.java
+++ b/jsf-ri/src/main/java/com/sun/faces/context/ExceptionHandlerFactoryImpl.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -51,18 +55,21 @@ public class ExceptionHandlerFactoryImpl extends ExceptionHandlerFactory {
 
     // ------------------------------------ Methods from ExceptionHandlerFactory
 
+    public ExceptionHandlerFactoryImpl() {
+    }
+
     
     /**
      * @see javax.faces.context.ExceptionHandlerFactory#getExceptionHandler()
      */
     public ExceptionHandler getExceptionHandler() {
-
         FacesContext fc = FacesContext.getCurrentInstance();
-        if (fc.getPartialViewContext().isAjaxRequest()) {
-            return new AjaxExceptionHandlerImpl(new ExceptionHandlerImpl(Boolean.TRUE));
-        }
-        ApplicationAssociate associate = getAssociate(fc);
-        return new ExceptionHandlerImpl(((associate != null) ? associate.isErrorPagePresent() : Boolean.TRUE));
+        ApplicationAssociate myAssociate = getAssociate(fc);
+
+        ExceptionHandler result = new AjaxNoAjaxExceptionHandler(
+                new AjaxExceptionHandlerImpl(new ExceptionHandlerImpl(Boolean.TRUE)),
+                new ExceptionHandlerImpl(((myAssociate != null) ? myAssociate.isErrorPagePresent() : Boolean.TRUE)));
+        return result;
 
     }
 
diff --git a/jsf-ri/src/main/java/com/sun/faces/context/ExceptionHandlerImpl.java b/jsf-ri/src/main/java/com/sun/faces/context/ExceptionHandlerImpl.java
index 3304514..36d8ef1 100644
--- a/jsf-ri/src/main/java/com/sun/faces/context/ExceptionHandlerImpl.java
+++ b/jsf-ri/src/main/java/com/sun/faces/context/ExceptionHandlerImpl.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -56,6 +60,7 @@ import javax.el.ELException;
 
 import com.sun.faces.util.FacesLogger;
 import com.sun.faces.renderkit.RenderKitUtils;
+import javax.faces.context.ExternalContext;
 
 
 /**
@@ -80,7 +85,10 @@ public class ExceptionHandlerImpl extends ExceptionHandler {
           "jsf.context.exception.handler.log_after";
     private static final String LOG_KEY =
           "jsf.context.exception.handler.log";
-
+    
+    
+   public static final java.util.logging.Level INCIDENT_ERROR =
+           Level.parse(Integer.toString(Level.SEVERE.intValue() + 100));
     
     private LinkedList<ExceptionQueuedEvent> unhandledExceptions;
     private LinkedList<ExceptionQueuedEvent> handledExceptions;
@@ -108,9 +116,6 @@ public class ExceptionHandlerImpl extends ExceptionHandler {
     // ------------------------------------------- Methods from ExceptionHandler
 
 
-    /**
-     * @see ExceptionHandler at getHandledExceptionQueuedEvent()
-     */
     public ExceptionQueuedEvent getHandledExceptionQueuedEvent() {
 
         return handled;
@@ -143,6 +148,10 @@ public class ExceptionHandlerImpl extends ExceptionHandler {
                                     new FacesException(t.getMessage(), t));
                         }
                     }
+                    if (LOGGER.isLoggable(INCIDENT_ERROR)) {
+                        log(context);
+                    }
+                    
                 } else {
                     log(context);
                 }
@@ -224,7 +233,6 @@ public class ExceptionHandlerImpl extends ExceptionHandler {
 
     /**
      * @see javax.faces.context.ExceptionHandler#getHandledExceptionQueuedEvents()
-     * @return
      */
     public Iterable<ExceptionQueuedEvent> getHandledExceptionQueuedEvents() {
 
@@ -241,6 +249,21 @@ public class ExceptionHandlerImpl extends ExceptionHandler {
     private void throwIt(FacesContext ctx, FacesException fe) {
 
         boolean isDevelopment = ctx.isProjectStage(ProjectStage.Development);
+        ExternalContext extContext = ctx.getExternalContext();
+        Throwable wrapped = fe.getCause();
+        try {
+            extContext.responseReset();
+        } catch (Exception e) {
+            if (LOGGER.isLoggable(Level.INFO)) {
+                LOGGER.log(Level.INFO, "Exception when handling error trying to reset the response.", wrapped);
+            }
+        }
+        if (null != wrapped && wrapped instanceof FacesFileNotFoundException) {
+            extContext.setResponseStatus(404);
+         } else {
+            extContext.setResponseStatus(500);
+         }
+
         if (isDevelopment && !errorPagePresent) {
             // RELEASE_PENDING_2_1
             // thThe error page here will be text/html which means not all device
@@ -285,16 +308,24 @@ public class ExceptionHandlerImpl extends ExceptionHandler {
         PhaseId phaseId = exceptionContext.getPhaseId();
         Throwable t = exceptionContext.getException();
         String key = getLoggingKey(beforePhase, afterPhase);
-        if (LOGGER.isLoggable(Level.SEVERE)) {
-            LOGGER.log(Level.SEVERE,
+        // If both SEVERE and INCIDENT_ERROR are loggable, just use
+        // INCIDENT ERROR, otherwise just use SEVERE.
+        Level level = LOGGER.isLoggable(INCIDENT_ERROR) && LOGGER.isLoggable(Level.SEVERE) ? INCIDENT_ERROR : Level.SEVERE;
+        
+        if (LOGGER.isLoggable(level)) {
+            LOGGER.log(level,
                        key,
                        new Object[] { t.getClass().getName(),
                                       phaseId.toString(),
                                       ((c != null) ? c.getClientId(exceptionContext.getContext()) : ""),
                                       t.getMessage()});
-            LOGGER.log(Level.SEVERE, t.getMessage(), t);
+            if (t.getMessage() != null) {
+                LOGGER.log(level, t.getMessage(), t);
+            } else {
+                LOGGER.log(level, "No associated message", t);
+            }
         }
-
+        
     }
 
     private String getLoggingKey(boolean beforePhase, boolean afterPhase) {
diff --git a/jsf-ri/src/main/java/com/sun/faces/context/ExternalContextFactoryImpl.java b/jsf-ri/src/main/java/com/sun/faces/context/ExternalContextFactoryImpl.java
index 874e98e..2cd4cbf 100644
--- a/jsf-ri/src/main/java/com/sun/faces/context/ExternalContextFactoryImpl.java
+++ b/jsf-ri/src/main/java/com/sun/faces/context/ExternalContextFactoryImpl.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -38,7 +42,6 @@ package com.sun.faces.context;
 
 
 import com.sun.faces.util.Util;
-import com.sun.faces.util.MessageUtils;
 
 import javax.faces.FacesException;
 import javax.faces.context.ExternalContext;
@@ -52,7 +55,9 @@ public class ExternalContextFactoryImpl extends ExternalContextFactory {
     public static final String DEFAULT_EXTERNAL_CONTEXT_KEY =
           ExternalContextFactoryImpl.class.getName() + "_KEY";
 
-    
+    public ExternalContextFactoryImpl() {
+    }
+
     // ---------------------------------------- Methods from ExternalContextFactory
 
 
diff --git a/jsf-ri/src/main/java/com/sun/faces/context/ExternalContextImpl.java b/jsf-ri/src/main/java/com/sun/faces/context/ExternalContextImpl.java
index 31644b1..c5f139a 100644
--- a/jsf-ri/src/main/java/com/sun/faces/context/ExternalContextImpl.java
+++ b/jsf-ri/src/main/java/com/sun/faces/context/ExternalContextImpl.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -36,6 +40,7 @@
 
 package com.sun.faces.context;
 
+import com.sun.faces.RIConstants;
 import java.io.OutputStream;
 import javax.faces.FacesException;
 import javax.faces.context.ExternalContext;
@@ -72,10 +77,16 @@ import java.util.logging.Level;
 
 import com.sun.faces.config.WebConfiguration;
 import static com.sun.faces.config.WebConfiguration.BooleanWebContextInitParameter.SendPoweredByHeader;
+import static com.sun.faces.config.WebConfiguration.BooleanWebContextInitParameter.EnableDistributable;
 import com.sun.faces.util.TypedCollections;
 import com.sun.faces.util.Util;
 import com.sun.faces.util.FacesLogger;
+import com.sun.faces.util.MessageUtils;
 import com.sun.faces.context.flash.ELFlash;
+import javax.faces.FactoryFinder;
+import javax.faces.context.FlashFactory;
+import javax.faces.lifecycle.ClientWindow;
+import javax.faces.render.ResponseStateManager;
 
 /**
  * <p>This implementation of {@link ExternalContext} is specific to the
@@ -88,6 +99,7 @@ public class ExternalContextImpl extends ExternalContext {
     private ServletContext servletContext = null;
     private ServletRequest request = null;
     private ServletResponse response = null;
+    private ClientWindow clientWindow = null;
 
     private Map<String,Object> applicationMap = null;
     private Map<String,Object> sessionMap = null;
@@ -99,13 +111,15 @@ public class ExternalContextImpl extends ExternalContext {
     private Map<String,Object> cookieMap = null;
     private Map<String,String> initParameterMap = null;
     private Map<String,String> fallbackContentTypeMap = null;
-    private ELFlash flash;
+    private Flash flash;
+    private boolean distributable;
 
     private enum ALLOWABLE_COOKIE_PROPERTIES {
         domain,
         maxAge,
         path,
-        secure
+        secure,
+        httpOnly
     }
 
     static final Class theUnmodifiableMapClass =
@@ -130,8 +144,9 @@ public class ExternalContextImpl extends ExternalContext {
         this.response = response;
         WebConfiguration config = WebConfiguration.getInstance(sc);
         if (config.isOptionEnabled(SendPoweredByHeader)) {
-            ((HttpServletResponse) response).addHeader("X-Powered-By", "JSF/2.0");
+            ((HttpServletResponse) response).addHeader("X-Powered-By", "JSF/2.2");
         }
+        distributable = config.isOptionEnabled(EnableDistributable);
         fallbackContentTypeMap = new HashMap<String,String>(3, 1.0f);
         fallbackContentTypeMap.put("js", "text/javascript");
         fallbackContentTypeMap.put("css", "text/css");
@@ -151,6 +166,17 @@ public class ExternalContextImpl extends ExternalContext {
         return (((HttpServletRequest) request).getSession(create));
     }
 
+    @Override
+    public String getSessionId(boolean create) {
+        HttpSession session = null;
+        String id = null;
+        
+        session = (HttpSession)getSession(create);
+        if (null != session) {
+            id = session.getId();
+        }
+        return id;
+    }
 
     /**
      * @see javax.faces.context.ExternalContext#getContext()
@@ -183,8 +209,7 @@ public class ExternalContextImpl extends ExternalContext {
     public Object getRequest() {
         return this.request;
     }
-
-
+    
     /**
      * @see ExternalContext#setRequest(Object)
      */
@@ -226,6 +251,15 @@ public class ExternalContextImpl extends ExternalContext {
         }
     }
 
+    @Override
+    public ClientWindow getClientWindow() {
+        return clientWindow;
+    }
+
+    @Override
+    public void setClientWindow(ClientWindow window) {
+        this.clientWindow = window;
+    }
 
     /**
      * @see ExternalContext#setResponseCharacterEncoding(String)
@@ -245,15 +279,25 @@ public class ExternalContextImpl extends ExternalContext {
         return applicationMap;
     }
 
-
+    @Override
+    public String getApplicationContextPath() {
+        return this.servletContext.getContextPath();
+    }
+    
     /**
      * @see javax.faces.context.ExternalContext#getSessionMap()
      */
     public Map<String,Object> getSessionMap() {
         if (sessionMap == null) {
-            sessionMap = new SessionMap((HttpServletRequest) request,
-                                        FacesContext.getCurrentInstance()
-                                              .getApplication().getProjectStage());
+            if (distributable) {
+                sessionMap = new AlwaysPuttingSessionMap((HttpServletRequest) request,
+                        FacesContext.getCurrentInstance()
+                        .getApplication().getProjectStage());
+            } else {
+                sessionMap = new SessionMap((HttpServletRequest) request,
+                        FacesContext.getCurrentInstance()
+                        .getApplication().getProjectStage());
+            }
         }
         return sessionMap;
     }
@@ -469,6 +513,9 @@ public class ExternalContextImpl extends ExternalContext {
      * @see javax.faces.context.ExternalContext#getInitParameter(String)
      */
     public String getInitParameter(String name) {
+        if (name == null) {
+            throw new NullPointerException("Init parameter name cannot be null");
+        }
         return servletContext.getInitParameter(name);
     }
 
@@ -477,6 +524,11 @@ public class ExternalContextImpl extends ExternalContext {
      * @see javax.faces.context.ExternalContext#getResourcePaths(String)
      */
     public Set<String> getResourcePaths(String path) {
+        if (null == path) {
+            String message = MessageUtils.getExceptionMessageString
+                (MessageUtils.NULL_PARAMETERS_ERROR_MESSAGE_ID, "path");
+            throw new NullPointerException(message);
+        }
         return TypedCollections.dynamicallyCastSet(servletContext.getResourcePaths(path), String.class);
     }
 
@@ -485,6 +537,11 @@ public class ExternalContextImpl extends ExternalContext {
      * @see javax.faces.context.ExternalContext#getResourceAsStream(String)
      */
     public InputStream getResourceAsStream(String path) {
+        if (null == path) {
+            String message = MessageUtils.getExceptionMessageString
+                (MessageUtils.NULL_PARAMETERS_ERROR_MESSAGE_ID, "path");
+            throw new NullPointerException(message);
+        }
         return servletContext.getResourceAsStream(path);
     }
 
@@ -493,6 +550,11 @@ public class ExternalContextImpl extends ExternalContext {
      * @see ExternalContext#getResource(String)
      */
     public URL getResource(String path) {
+        if (null == path) {
+            String message = MessageUtils.getExceptionMessageString
+                (MessageUtils.NULL_PARAMETERS_ERROR_MESSAGE_ID, "path");
+            throw new NullPointerException(message);
+        }
         URL url;
         try {
             url = servletContext.getResource(path);
@@ -507,6 +569,38 @@ public class ExternalContextImpl extends ExternalContext {
      * @see ExternalContext#encodeActionURL(String)
      */
     public String encodeActionURL(String url) {
+        Util.notNull("url", url);
+        FacesContext context = FacesContext.getCurrentInstance();
+        ClientWindow  cw = context.getExternalContext().getClientWindow();
+        boolean appendClientWindow = false;
+        if (null != cw) {
+            appendClientWindow = cw.isClientWindowRenderModeEnabled(context);
+        }
+        if (appendClientWindow && -1 == url.indexOf(ResponseStateManager.CLIENT_WINDOW_URL_PARAM)) {
+            if (null != cw) {
+                String clientWindowId = cw.getId();
+                StringBuilder builder = new StringBuilder(url);
+                int q = url.indexOf(UrlBuilder.QUERY_STRING_SEPARATOR);
+                if (-1 == q) {
+                    builder.append(UrlBuilder.QUERY_STRING_SEPARATOR);
+                } else {
+                    builder.append(UrlBuilder.PARAMETER_PAIR_SEPARATOR);
+                }
+                builder.append(ResponseStateManager.CLIENT_WINDOW_URL_PARAM).append(UrlBuilder.PARAMETER_NAME_VALUE_SEPARATOR).append(clientWindowId);
+    
+                Map<String, String> additionalParams = cw.getQueryURLParameters(context);
+                if (null != additionalParams) {
+                    for (Map.Entry<String, String> cur : additionalParams.entrySet()) {
+                        builder.append(UrlBuilder.PARAMETER_NAME_VALUE_SEPARATOR);
+                        builder.append(cur.getKey()).
+                                append(UrlBuilder.PARAMETER_NAME_VALUE_SEPARATOR).
+                                append(cur.getValue());                        
+                    }
+                }
+                url = builder.toString();
+            }
+        }
+        // If we have a query string, append it
         return ((HttpServletResponse) response).encodeURL(url);
     }
 
@@ -515,6 +609,12 @@ public class ExternalContextImpl extends ExternalContext {
      * @see ExternalContext#encodeResourceURL(String)
      */
     public String encodeResourceURL(String url) {
+        if (null == url) {
+            String message = MessageUtils.getExceptionMessageString
+                (MessageUtils.NULL_PARAMETERS_ERROR_MESSAGE_ID, "url");
+            throw new NullPointerException(message);
+        }
+
         return ((HttpServletResponse) response).encodeURL(url);
     }
 
@@ -552,9 +652,13 @@ public class ExternalContextImpl extends ExternalContext {
     public void redirect(String requestURI) throws IOException {
 
         FacesContext ctx = FacesContext.getCurrentInstance();
-        getELFlash().doLastPhaseActions(ctx, true);
+        doLastPhaseActions(ctx, true);
 
         if (ctx.getPartialViewContext().isPartialRequest()) {
+            if (getSession(true) instanceof HttpSession &&
+                ctx.getResponseComplete()) {
+                throw new IllegalStateException();
+            }
             PartialResponseWriter pwriter;
             ResponseWriter writer = ctx.getResponseWriter();
             if (writer instanceof PartialResponseWriter) {
@@ -565,6 +669,7 @@ public class ExternalContextImpl extends ExternalContext {
             setResponseContentType("text/xml");
             setResponseCharacterEncoding("UTF-8");
             addResponseHeader("Cache-Control", "no-cache");
+//            pwriter.writePreamble("<?xml version='1.0' encoding='UTF-8'?>\n");
             pwriter.startDocument();
             pwriter.redirect(requestURI);
             pwriter.endDocument();
@@ -580,6 +685,11 @@ public class ExternalContextImpl extends ExternalContext {
      * @see ExternalContext#log(String)
      */
     public void log(String message) {
+        if (null == message) {
+            String msg = MessageUtils.getExceptionMessageString
+                (MessageUtils.NULL_PARAMETERS_ERROR_MESSAGE_ID, "message");
+            throw new NullPointerException(msg);
+        }
         servletContext.log(message);
     }
 
@@ -588,6 +698,16 @@ public class ExternalContextImpl extends ExternalContext {
      * @see ExternalContext#log(String, Throwable)
      */
     public void log(String message, Throwable throwable) {
+        if (null == message) {
+            String msg = MessageUtils.getExceptionMessageString
+                (MessageUtils.NULL_PARAMETERS_ERROR_MESSAGE_ID, "message");
+            throw new NullPointerException(msg);
+        }
+        if (null == throwable) {
+            String msg = MessageUtils.getExceptionMessageString
+                (MessageUtils.NULL_PARAMETERS_ERROR_MESSAGE_ID, "throwable");
+            throw new NullPointerException(msg);
+        }
         servletContext.log(message, throwable);
     }
 
@@ -639,6 +759,11 @@ public class ExternalContextImpl extends ExternalContext {
      * @see javax.faces.context.ExternalContext#isUserInRole(String)
      */
     public boolean isUserInRole(String role) {
+        if (null == role) {
+            String message = MessageUtils.getExceptionMessageString
+                (MessageUtils.NULL_PARAMETERS_ERROR_MESSAGE_ID, "role");
+            throw new NullPointerException(message);
+        }
         return ((HttpServletRequest) request).isUserInRole(role);
     }
 
@@ -689,6 +814,9 @@ public class ExternalContextImpl extends ExternalContext {
                     case secure:
                         cookie.setSecure((Boolean) v);
                         break;
+                    case httpOnly:
+                        cookie.setHttpOnly((Boolean) v);
+                        break;
                     default:
                         throw new IllegalStateException(); // shouldn't happen
                 }
@@ -850,7 +978,10 @@ public class ExternalContextImpl extends ExternalContext {
      */
     @Override
     public void responseFlushBuffer() throws IOException {
-        getELFlash().doLastPhaseActions(FacesContext.getCurrentInstance(), false);
+        FacesContext facesContext = FacesContext.getCurrentInstance();
+        if (facesContext != null) {
+            doLastPhaseActions(facesContext, false);
+        }
 
         response.flushBuffer();
 
@@ -867,8 +998,18 @@ public class ExternalContextImpl extends ExternalContext {
     }
 
     /**
+     * @see javax.faces.context.ExternalContext#setSessionMaxInactiveInterval(int)
+     */
+    @Override
+    public void setSessionMaxInactiveInterval(int interval) {
+
+        HttpSession session = ((HttpServletRequest) request).getSession();
+	session.setMaxInactiveInterval(interval);
+
+    }
+
+    /**
      * @see javax.faces.context.ExternalContext#getResponseBufferSize()
-     * @return
      */
     @Override
     public int getResponseBufferSize() {
@@ -877,11 +1018,40 @@ public class ExternalContextImpl extends ExternalContext {
 
     }
 
+    /**
+     * @see javax.faces.context.ExternalContext#getSessionMaxInactiveInterval()
+\     */
+    @Override
+    public int getSessionMaxInactiveInterval() {
+
+        HttpSession session = ((HttpServletRequest) request).getSession();
+	return session.getMaxInactiveInterval();
+
+    }
+
+    /**
+     * @see javax.faces.context.ExternalContext#isSecure()
+     * @return boolean
+     */
+    @Override
+    public boolean isSecure() {
+        return ((HttpServletRequest) request).isSecure();
+    }
+
     @Override
     public String encodeBookmarkableURL(String baseUrl,
                                         Map<String, List<String>> parameters) {
+        FacesContext context = FacesContext.getCurrentInstance();
+        String encodingFromContext =
+              (String) context.getAttributes().get(RIConstants.FACELETS_ENCODING_KEY);
+        if (null == encodingFromContext) {
+            encodingFromContext = (String) context.getViewRoot().getAttributes().
+                    get(RIConstants.FACELETS_ENCODING_KEY);
+        }
+        
+        String currentResponseEncoding = (null != encodingFromContext) ? encodingFromContext : getResponseCharacterEncoding();
 
-        UrlBuilder builder = new UrlBuilder(baseUrl, getResponseCharacterEncoding());
+        UrlBuilder builder = new UrlBuilder(baseUrl, currentResponseEncoding);
         builder.addParameters(parameters);
         return builder.createUrl();
 
@@ -890,8 +1060,17 @@ public class ExternalContextImpl extends ExternalContext {
     @Override
     public String encodeRedirectURL(String baseUrl,
                                     Map<String, List<String>> parameters) {
+        FacesContext context = FacesContext.getCurrentInstance();
+        String encodingFromContext =
+              (String) context.getAttributes().get(RIConstants.FACELETS_ENCODING_KEY);
+        if (null == encodingFromContext) {
+            encodingFromContext = (String) context.getViewRoot().getAttributes().
+                    get(RIConstants.FACELETS_ENCODING_KEY);
+        }
+        
+        String currentResponseEncoding = (null != encodingFromContext) ? encodingFromContext : getResponseCharacterEncoding();
 
-        UrlBuilder builder = new UrlBuilder(baseUrl, getResponseCharacterEncoding());
+        UrlBuilder builder = new UrlBuilder(baseUrl, currentResponseEncoding);
         builder.addParameters(parameters);
         return builder.createUrl();
         
@@ -899,25 +1078,46 @@ public class ExternalContextImpl extends ExternalContext {
 
     /**
      * @see javax.faces.context.ExternalContext#encodePartialActionURL(String)
-     * @return
      */
     @Override
     public String encodePartialActionURL(String url) {
-        UrlBuilder builder = new UrlBuilder(url, getResponseCharacterEncoding());
+        if (null == url) {
+            String message = MessageUtils.getExceptionMessageString
+                (MessageUtils.NULL_PARAMETERS_ERROR_MESSAGE_ID, "url");
+            throw new NullPointerException(message);
+        }
+        FacesContext context = FacesContext.getCurrentInstance();
+        String encodingFromContext =
+              (String) context.getAttributes().get(RIConstants.FACELETS_ENCODING_KEY);
+        if (null == encodingFromContext) {
+            encodingFromContext = (String) context.getViewRoot().getAttributes().
+                    get(RIConstants.FACELETS_ENCODING_KEY);
+        }
+        
+        String currentResponseEncoding = (null != encodingFromContext) ? encodingFromContext : getResponseCharacterEncoding();
+        
+        UrlBuilder builder = new UrlBuilder(url, currentResponseEncoding);
         return ((HttpServletResponse) response).encodeURL(builder.createUrl());
     }
 
     @Override
     public Flash getFlash() {
-        return getELFlash();
-    }
-
-    private ELFlash getELFlash() {
-
         if (null == flash) {
-            flash = ELFlash.getFlash(this, true);
+            FlashFactory ff = (FlashFactory) FactoryFinder.getFactory(FactoryFinder.FLASH_FACTORY);
+            flash = ff.getFlash(true);
         }
         return flash;
+    }
+
+    private void doLastPhaseActions(FacesContext context, 
+            boolean outgoingResponseIsRedirect) {
+        Map<Object, Object> attrs = context.getAttributes();
+        try {
+            attrs.put(ELFlash.ACT_AS_DO_LAST_PHASE_ACTIONS, outgoingResponseIsRedirect);
+            getFlash().doPostPhaseActions(context);
+        } finally {
+            attrs.remove(ELFlash.ACT_AS_DO_LAST_PHASE_ACTIONS);
+        }
 
     }
 
diff --git a/jsf-ri/src/main/java/com/sun/faces/context/FacesContextFactoryImpl.java b/jsf-ri/src/main/java/com/sun/faces/context/FacesContextFactoryImpl.java
index 15a3f2e..11b2a83 100644
--- a/jsf-ri/src/main/java/com/sun/faces/context/FacesContextFactoryImpl.java
+++ b/jsf-ri/src/main/java/com/sun/faces/context/FacesContextFactoryImpl.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -37,26 +41,27 @@
 package com.sun.faces.context;
 
 
+import com.sun.faces.config.WebConfiguration;
+import static com.sun.faces.config.WebConfiguration.BooleanWebContextInitParameter.PartialStateSaving;
 import com.sun.faces.util.Util;
-import com.sun.faces.util.MessageUtils;
 
+import java.util.Map;
 import javax.faces.FacesException;
 import javax.faces.FactoryFinder;
+import javax.faces.component.UIComponent;
 import javax.faces.context.ExceptionHandlerFactory;
+import javax.faces.context.ExternalContext;
 import javax.faces.context.ExternalContextFactory;
 import javax.faces.context.FacesContext;
 import javax.faces.context.FacesContextFactory;
 import javax.faces.lifecycle.Lifecycle;
-import javax.servlet.ServletContext;
-import javax.servlet.ServletRequest;
-import javax.servlet.ServletResponse;
 
 public class FacesContextFactoryImpl extends FacesContextFactory {
 
     
 
-    private ExceptionHandlerFactory exceptionHandlerFactory;
-    private ExternalContextFactory externalContextFactory;
+    private final ExceptionHandlerFactory exceptionHandlerFactory;
+    private final ExternalContextFactory externalContextFactory;
 
 
     // ------------------------------------------------------------ Constructors
@@ -75,6 +80,7 @@ public class FacesContextFactoryImpl extends FacesContextFactory {
     // ---------------------------------------- Methods from FacesContextFactory
 
 
+    @Override
     public FacesContext getFacesContext(Object sc,
                                         Object request,
                                         Object response,
@@ -85,17 +91,35 @@ public class FacesContextFactoryImpl extends FacesContextFactory {
         Util.notNull("request", request);
         Util.notNull("response", response);
         Util.notNull("lifecycle", lifecycle);
+        ExternalContext extContext;
         
         FacesContext ctx =
               new FacesContextImpl(
-                  externalContextFactory.getExternalContext(sc, request, response),
+                  extContext = externalContextFactory.getExternalContext(sc, request, response),
                   lifecycle);
 
         ctx.setExceptionHandler(exceptionHandlerFactory.getExceptionHandler());
+        WebConfiguration webConfig = WebConfiguration.getInstance(extContext);
 
+        savePerRequestInitParams(ctx, webConfig);
         return ctx;
         
     }
+    
+    /*
+     * Copy the value of any init params that must be checked during
+     * this request to our FacesContext attribute map.  
+     */
+    private void savePerRequestInitParams(FacesContext context, WebConfiguration webConfig) {
+        String val = context.getExternalContext().getInitParameter(UIComponent.HONOR_CURRENT_COMPONENT_ATTRIBUTES_PARAM_NAME);
+        boolean setCurrentComponent = Boolean.valueOf(val);
+        Map<Object, Object> attrs = context.getAttributes();
+        attrs.put(UIComponent.HONOR_CURRENT_COMPONENT_ATTRIBUTES_PARAM_NAME, 
+                setCurrentComponent ? Boolean.TRUE : Boolean.FALSE);
+        attrs.put(PartialStateSaving, webConfig.isOptionEnabled(PartialStateSaving) ?
+                Boolean.TRUE : Boolean.FALSE);
+        
+    }
 
     // The testcase for this class is TestSerlvetFacesContextFactory.java
 
diff --git a/jsf-ri/src/main/java/com/sun/faces/context/FacesContextImpl.java b/jsf-ri/src/main/java/com/sun/faces/context/FacesContextImpl.java
index b2d2e57..d90729b 100644
--- a/jsf-ri/src/main/java/com/sun/faces/context/FacesContextImpl.java
+++ b/jsf-ri/src/main/java/com/sun/faces/context/FacesContextImpl.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -81,7 +85,7 @@ public class FacesContextImpl extends FacesContext {
           new ThreadLocal<FacesContext>();
 
     // Log instance for this class
-    private static Logger LOGGER = FacesLogger.CONTEXT.getLogger();
+    private static final Logger LOGGER = FacesLogger.CONTEXT.getLogger();
 
     private boolean released;
 
@@ -100,6 +104,7 @@ public class FacesContextImpl extends FacesContext {
     private boolean responseComplete = false;
     private boolean validationFailed = false;
     private Map<Object, Object> attributes;
+    private List<String> resourceLibraryContracts;
     private PhaseId currentPhaseId;
     private PartialViewContext partialViewContext = null;
     private ExceptionHandler exceptionHandler = null;
@@ -111,8 +116,6 @@ public class FacesContextImpl extends FacesContext {
      */
     private Map<String, List<FacesMessage>> componentMessageLists;
 
-    // ----------------------------------------------------------- Constructors
-
 
     public FacesContextImpl(ExternalContext ec, Lifecycle lifecycle) {
         Util.notNull("ec", ec);
@@ -131,6 +134,7 @@ public class FacesContextImpl extends FacesContext {
     /**
      * @see javax.faces.context.FacesContext#getExternalContext()
      */
+    @Override
     public ExternalContext getExternalContext() {
         assertNotReleased();
         return externalContext;
@@ -140,6 +144,7 @@ public class FacesContextImpl extends FacesContext {
     /**
      * @see javax.faces.context.FacesContext#getApplication()
      */
+    @Override
     public Application getApplication() {
         assertNotReleased();
         if (null != application) {
@@ -175,13 +180,14 @@ public class FacesContextImpl extends FacesContext {
     /**
      * @see javax.faces.context.FacesContext#getPartialViewContext()
      */
+    @Override
     public PartialViewContext getPartialViewContext() {
 
         assertNotReleased();
         if (partialViewContext == null) {
             PartialViewContextFactory f = (PartialViewContextFactory)
                   FactoryFinder.getFactory(FactoryFinder.PARTIAL_VIEW_CONTEXT_FACTORY);
-            partialViewContext = f.getPartialViewContext(this);
+            partialViewContext = f.getPartialViewContext(FacesContext.getCurrentInstance());
         }
         return partialViewContext;
         
@@ -214,6 +220,13 @@ public class FacesContextImpl extends FacesContext {
 
     }
 
+    /**
+     * @see javax.faces.context.FacesContext#isReleased()
+     */
+    @Override
+    public boolean isReleased() {
+        return released;
+    }
 
     /**
      * @see javax.faces.context.FacesContext#getAttributes()
@@ -239,7 +252,7 @@ public class FacesContextImpl extends FacesContext {
         if (elContext == null) {
             Application app = getApplication();
             elContext = new ELContextImpl(app.getELResolver());
-            elContext.putContext(FacesContext.class, this);
+            elContext.putContext(FacesContext.class, FacesContext.getCurrentInstance());
             UIViewRoot root = this.getViewRoot();
             if (null != root) {
                 elContext.setLocale(root.getLocale());
@@ -260,6 +273,7 @@ public class FacesContextImpl extends FacesContext {
     /**
      * @see javax.faces.context.FacesContext#getClientIdsWithMessages()
      */
+    @Override
     public Iterator<String> getClientIdsWithMessages() {
         assertNotReleased();
         return ((componentMessageLists == null)
@@ -271,6 +285,7 @@ public class FacesContextImpl extends FacesContext {
     /**
      * @see javax.faces.context.FacesContext#getMaximumSeverity()
      */
+    @Override
     public Severity getMaximumSeverity() {
         assertNotReleased();
         Severity result = null;
@@ -338,6 +353,7 @@ public class FacesContextImpl extends FacesContext {
     /**
      * @see javax.faces.context.FacesContext#getMessages()
      */
+    @Override
     public Iterator<FacesMessage> getMessages() {
         assertNotReleased();
         if (null == componentMessageLists) {
@@ -356,6 +372,7 @@ public class FacesContextImpl extends FacesContext {
     /**
      * @see FacesContext#getMessages(String)
      */
+    @Override
     public Iterator<FacesMessage> getMessages(String clientId) {
         assertNotReleased();
 
@@ -378,6 +395,7 @@ public class FacesContextImpl extends FacesContext {
     /**
      * @see javax.faces.context.FacesContext#getRenderKit()
      */
+    @Override
     public RenderKit getRenderKit() {
         assertNotReleased();
         UIViewRoot vr = getViewRoot();
@@ -394,6 +412,14 @@ public class FacesContextImpl extends FacesContext {
             return lastRk;
         } else {
             lastRk = rkFactory.getRenderKit(this, renderKitId);
+            if (lastRk == null) {
+                if (LOGGER.isLoggable(Level.SEVERE)) {
+                    LOGGER.log(Level.SEVERE, "Unable to locate renderkit "
+                            + "instance for render-kit-id {0}.  Using {1} instead.",
+                            new String[]{renderKitId,
+                                RenderKitFactory.HTML_BASIC_RENDER_KIT});
+                }
+            }
             lastRkId = renderKitId;
             return lastRk;
         }
@@ -403,6 +429,7 @@ public class FacesContextImpl extends FacesContext {
     /**
      * @see javax.faces.context.FacesContext#getResponseStream()
      */
+    @Override
     public ResponseStream getResponseStream() {
         assertNotReleased();
         return responseStream;
@@ -412,6 +439,7 @@ public class FacesContextImpl extends FacesContext {
     /**
      * @see FacesContext#setResponseStream(javax.faces.context.ResponseStream)
      */
+    @Override
     public void setResponseStream(ResponseStream responseStream) {
         assertNotReleased();
         Util.notNull("responseStrean", responseStream);
@@ -422,6 +450,7 @@ public class FacesContextImpl extends FacesContext {
     /**
      * @see javax.faces.context.FacesContext#getViewRoot()
      */
+    @Override
     public UIViewRoot getViewRoot() {
         assertNotReleased();
         return viewRoot;
@@ -431,6 +460,7 @@ public class FacesContextImpl extends FacesContext {
     /**
      * @see FacesContext#setViewRoot(javax.faces.component.UIViewRoot)
      */
+    @Override
     public void setViewRoot(UIViewRoot root) {
         assertNotReleased();
         Util.notNull("root", root);
@@ -449,6 +479,7 @@ public class FacesContextImpl extends FacesContext {
     /**
      * @see javax.faces.context.FacesContext#getResponseWriter()
      */
+    @Override
     public ResponseWriter getResponseWriter() {
         assertNotReleased();
         return responseWriter;
@@ -458,6 +489,7 @@ public class FacesContextImpl extends FacesContext {
     /**
      * @see FacesContext#setResponseWriter(javax.faces.context.ResponseWriter)
      */
+    @Override
     public void setResponseWriter(ResponseWriter responseWriter) {
         assertNotReleased();
         Util.notNull("responseWriter", responseWriter);
@@ -467,6 +499,7 @@ public class FacesContextImpl extends FacesContext {
     /**
      * @see FacesContext#addMessage(String, javax.faces.application.FacesMessage)
      */
+    @Override
     public void addMessage(String clientId, FacesMessage message) {
         assertNotReleased();
         // Validate our preconditions
@@ -512,6 +545,8 @@ public class FacesContextImpl extends FacesContext {
         return currentPhaseId;
 
     }
+    
+    
 
 
     /**
@@ -529,6 +564,7 @@ public class FacesContextImpl extends FacesContext {
     /**
      * @see javax.faces.context.FacesContext#release()
      */
+    @Override
     public void release() {
 
         released = true;
@@ -547,6 +583,13 @@ public class FacesContextImpl extends FacesContext {
             attributes.clear();
             attributes = null;
         }
+        if (null != resourceLibraryContracts) {
+            resourceLibraryContracts.clear();
+            resourceLibraryContracts = null;
+        }
+        if (partialViewContext != null) {
+            partialViewContext.release();
+        }
         partialViewContext = null;
         exceptionHandler = null;
         elContext = null;
@@ -570,6 +613,7 @@ public class FacesContextImpl extends FacesContext {
     /**
      * @see javax.faces.context.FacesContext#renderResponse()
      */
+    @Override
     public void renderResponse() {
         assertNotReleased();
         renderResponse = true;
@@ -579,6 +623,7 @@ public class FacesContextImpl extends FacesContext {
     /**
      * @see javax.faces.context.FacesContext#responseComplete()
      */
+    @Override
     public void responseComplete() {
         assertNotReleased();
         responseComplete = true;
@@ -587,6 +632,7 @@ public class FacesContextImpl extends FacesContext {
     /**
      * @see javax.faces.context.FacesContext#validationFailed()
      */
+    @Override
     public void validationFailed() {
         assertNotReleased();
         validationFailed = true;
@@ -595,15 +641,38 @@ public class FacesContextImpl extends FacesContext {
     /**
      * @see javax.faces.context.FacesContext#getRenderResponse()
      */
+    @Override
     public boolean getRenderResponse() {
         assertNotReleased();
         return renderResponse;
     }
 
+    @Override
+    public List<String> getResourceLibraryContracts() {
+        assertNotReleased();
+        return (null == resourceLibraryContracts) ? Collections.EMPTY_LIST : resourceLibraryContracts;
+    }
+
+    @Override
+    public void setResourceLibraryContracts(List<String> contracts) {
+        assertNotReleased();
+        if (null == contracts || contracts.isEmpty()) {
+            if (null != resourceLibraryContracts) {
+                resourceLibraryContracts.clear();
+                resourceLibraryContracts = null;
+            }
+        } else {
+            resourceLibraryContracts = new ArrayList<String>(contracts);
+        }
+        
+    }
+
+    
 
     /**
      * @see javax.faces.context.FacesContext#getResponseComplete()
      */
+    @Override
     public boolean getResponseComplete() {
         assertNotReleased();
         return responseComplete;
@@ -612,6 +681,7 @@ public class FacesContextImpl extends FacesContext {
     /**
      * @see javax.faces.context.FacesContext#isValidationFailed()
      */
+    @Override
     public boolean isValidationFailed() {
         assertNotReleased();
         return validationFailed;
diff --git a/jsf-ri/src/main/java/com/sun/faces/context/FacesFileNotFoundException.java b/jsf-ri/src/main/java/com/sun/faces/context/FacesFileNotFoundException.java
new file mode 100644
index 0000000..80eb99d
--- /dev/null
+++ b/jsf-ri/src/main/java/com/sun/faces/context/FacesFileNotFoundException.java
@@ -0,0 +1,71 @@
+
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.context;
+
+import java.io.FileNotFoundException;
+
+
+/*
+ * This exception thrown in cases when a resource is not found entirely
+ * due to error originating in the user agent, as opposed to an error
+ * originating due to the server side code.  For example it is thrown
+ * when the user agent requests a non-existent Facelet page.  It is not
+ * thrown when a Facelet template client cannot load it's template.
+ * 
+ * The default ExceptionHandler looks for the existence of this
+ * exception as a way to tell when it should send an HTTP 404 status
+ * code, or an HTTP 500 status code.
+
+ */
+public class FacesFileNotFoundException extends FileNotFoundException {
+    private static final long serialVersionUID = 7593137790944497673L;
+
+    public FacesFileNotFoundException(String s) {
+        super(s);
+    }
+
+    public FacesFileNotFoundException() {
+    }
+
+
+
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/context/InitParameterMap.java b/jsf-ri/src/main/java/com/sun/faces/context/InitParameterMap.java
index d4e9cfd..31808a3 100644
--- a/jsf-ri/src/main/java/com/sun/faces/context/InitParameterMap.java
+++ b/jsf-ri/src/main/java/com/sun/faces/context/InitParameterMap.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/context/InjectionFacesContextFactory.java b/jsf-ri/src/main/java/com/sun/faces/context/InjectionFacesContextFactory.java
index 845083b..ed2a2ab 100644
--- a/jsf-ri/src/main/java/com/sun/faces/context/InjectionFacesContextFactory.java
+++ b/jsf-ri/src/main/java/com/sun/faces/context/InjectionFacesContextFactory.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -67,9 +71,11 @@ public class InjectionFacesContextFactory extends FacesContextFactory implements
     private Field defaultExternalContext;
 
 
-    
+
     // ------------------------------------------------------------ Constructors
 
+    public InjectionFacesContextFactory() {
+    }
 
     public InjectionFacesContextFactory(FacesContextFactory delegate) {
 
diff --git a/jsf-ri/src/main/java/com/sun/faces/context/PartialViewContextFactoryImpl.java b/jsf-ri/src/main/java/com/sun/faces/context/PartialViewContextFactoryImpl.java
index 3bb4f4d..81c998d 100644
--- a/jsf-ri/src/main/java/com/sun/faces/context/PartialViewContextFactoryImpl.java
+++ b/jsf-ri/src/main/java/com/sun/faces/context/PartialViewContextFactoryImpl.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -47,6 +51,8 @@ import javax.faces.context.FacesContext;
  */
 public class PartialViewContextFactoryImpl extends PartialViewContextFactory {
 
+    public PartialViewContextFactoryImpl() {
+    }
 
     // ---------------------------------- Methods from PartialViewContextFactory
 
diff --git a/jsf-ri/src/main/java/com/sun/faces/context/PartialViewContextImpl.java b/jsf-ri/src/main/java/com/sun/faces/context/PartialViewContextImpl.java
index 4f79fda..6c08164 100644
--- a/jsf-ri/src/main/java/com/sun/faces/context/PartialViewContextImpl.java
+++ b/jsf-ri/src/main/java/com/sun/faces/context/PartialViewContextImpl.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -36,6 +40,8 @@
 
 package com.sun.faces.context;
 
+import com.sun.faces.component.visit.PartialVisitContext;
+import javax.faces.FacesException;
 import javax.faces.component.UIComponent;
 import javax.faces.component.UIViewRoot;
 import javax.faces.component.visit.VisitCallback;
@@ -60,9 +66,15 @@ import java.util.Arrays;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
-import com.sun.faces.component.visit.PartialVisitContext;
 import com.sun.faces.util.FacesLogger;
 import com.sun.faces.util.Util;
+import javax.faces.FactoryFinder;
+import static javax.faces.FactoryFinder.VISIT_CONTEXT_FACTORY;
+import javax.faces.component.visit.VisitContextFactory;
+import javax.faces.component.visit.VisitContextWrapper;
+import javax.faces.lifecycle.ClientWindow;
+import javax.faces.render.RenderKit;
+import javax.faces.render.RenderKitFactory;
 
  public class PartialViewContextImpl extends PartialViewContext {
 
@@ -79,6 +91,7 @@ import com.sun.faces.util.Util;
     private Boolean partialRequest;
     private Boolean renderAll;
     private FacesContext ctx;
+    private boolean processingPhases = false;
 
     private static final String ORIGINAL_WRITER = "com.sun.faces.ORIGINAL_WRITER";
 
@@ -103,6 +116,10 @@ import com.sun.faces.util.Util;
         if (ajaxRequest == null) {
             ajaxRequest = "partial/ajax".equals(ctx.
                 getExternalContext().getRequestHeaderMap().get("Faces-Request"));
+            if (!ajaxRequest) {
+                ajaxRequest = "partial/ajax".equals(ctx.getExternalContext().getRequestParameterMap().
+                    get("Faces-Request"));
+            }
         }
         return ajaxRequest;
 
@@ -156,8 +173,7 @@ import com.sun.faces.util.Util;
         return renderAll;
 
     }
-
-     
+    
     /**
      * @see javax.faces.context.PartialViewContext#setRenderAll(boolean) 
      */
@@ -169,6 +185,12 @@ import com.sun.faces.util.Util;
     }
 
     @Override
+    public boolean isResetValues() {
+        Object value = ctx.getExternalContext().getRequestParameterMap().get(RESET_VALUES_PARAM_NAME);
+        return (null != value && "true".equals(value)) ? true : false;
+    }
+
+    @Override
     public void setPartialRequest(boolean isPartialRequest) {
         this.partialRequest = isPartialRequest;
     }
@@ -216,13 +238,13 @@ import com.sun.faces.util.Util;
     }
 
     /**
-     * @see javax.faces.context.PartialViewContext#processPartial(javax.faces.event.PhaseId))
+     * @see PartialViewContext#processPartial(javax.faces.event.PhaseId) 
      */
     @Override
     public void processPartial(PhaseId phaseId) {
         PartialViewContext pvc = ctx.getPartialViewContext();
-        Collection <String> executeIds = pvc.getExecuteIds();
-        Collection <String> renderIds = pvc.getRenderIds();
+        Collection <String> myExecuteIds = pvc.getExecuteIds();
+        Collection <String> myRenderIds = pvc.getRenderIds();
         UIViewRoot viewRoot = ctx.getViewRoot();
 
         if (phaseId == PhaseId.APPLY_REQUEST_VALUES ||
@@ -232,15 +254,23 @@ import com.sun.faces.util.Util;
             // Skip this processing if "none" is specified in the render list,
             // or there were no execute phase client ids.
 
-            if (executeIds == null || executeIds.isEmpty()) {
-                // RELEASE_PENDING LOG ERROR OR WARNING
+            if (myExecuteIds == null || myExecuteIds.isEmpty()) {
+                if (LOGGER.isLoggable(Level.FINE)) {
+                    LOGGER.log(Level.FINE,
+                        "No execute and render identifiers specified.  Skipping component processing.");
+                }
                 return;
             }
 
             try {
-                processComponents(viewRoot, phaseId, executeIds, ctx);
+                processComponents(viewRoot, phaseId, myExecuteIds, ctx);
             } catch (Exception e) {
-                // RELEASE_PENDING LOG EXCEPTION
+                if (LOGGER.isLoggable(Level.INFO)) {
+                    LOGGER.log(Level.INFO,
+                           e.toString(),
+                           e);
+                }
+                throw new FacesException(e);
             }
 
             // If we have just finished APPLY_REQUEST_VALUES phase, install the
@@ -267,7 +297,18 @@ import com.sun.faces.util.Util;
                 ExternalContext exContext = ctx.getExternalContext();
                 exContext.setResponseContentType("text/xml");
                 exContext.addResponseHeader("Cache-Control", "no-cache");
+                
+//                String encoding = writer.getCharacterEncoding( );
+//                if( encoding == null ) {
+//                    encoding = "UTF-8";
+//                }
+//                writer.writePreamble("<?xml version='1.0' encoding='" + encoding + "'?>\n");
                 writer.startDocument();
+                
+                if (isResetValues()) {
+                    viewRoot.resetValues(ctx, myRenderIds);
+                }
+                
                 if (isRenderAll()) {
                     renderAll(ctx, viewRoot);
                     renderState(ctx);
@@ -277,9 +318,8 @@ import com.sun.faces.util.Util;
 
                 // Skip this processing if "none" is specified in the render list,
                 // or there were no render phase client ids.
-                if (renderIds == null || renderIds.isEmpty()) {
-                } else {
-                    processComponents(viewRoot, phaseId, renderIds, ctx);
+                if (myRenderIds != null && !myRenderIds.isEmpty()) {
+                    processComponents(viewRoot, phaseId, myRenderIds, ctx);
                 }
 
                 renderState(ctx);
@@ -336,7 +376,8 @@ import com.sun.faces.util.Util;
         if (param == null) {
             return new ArrayList<String>();
         } else {
-            String[] pcs = Util.split(param, "[ \t]+");
+            Map<String, Object> appMap = FacesContext.getCurrentInstance().getExternalContext().getApplicationMap();
+            String[] pcs = Util.split(appMap, param, "[ \t]+");
             return ((pcs != null && pcs.length != 0)
                     ? new ArrayList<String>(Arrays.asList(pcs))
                     : new ArrayList<String>());
@@ -353,45 +394,103 @@ import com.sun.faces.util.Util;
         // VisitCallback that will be invoked for each component that
         // is visited.  Note that we use the SKIP_UNRENDERED hint as we
         // only want to visit the rendered subtree.
-        EnumSet<VisitHint> hints = EnumSet.of(VisitHint.SKIP_UNRENDERED);
-        PartialVisitContext visitContext =
-            new PartialVisitContext(context, phaseClientIds, hints);
+        EnumSet<VisitHint> hints = EnumSet.of(VisitHint.SKIP_UNRENDERED, VisitHint.EXECUTE_LIFECYCLE);
+        VisitContextFactory visitContextFactory = (VisitContextFactory) 
+                FactoryFinder.getFactory(VISIT_CONTEXT_FACTORY);
+        VisitContext visitContext = visitContextFactory.getVisitContext(context, phaseClientIds, hints);
         PhaseAwareVisitCallback visitCallback =
             new PhaseAwareVisitCallback(ctx, phaseId);
         component.visitTree(visitContext, visitCallback);
+
+        PartialVisitContext partialVisitContext = unwrapPartialVisitContext(visitContext);
+        if (partialVisitContext != null) {
+            if (LOGGER.isLoggable(Level.FINER) && !partialVisitContext.getUnvisitedClientIds().isEmpty()) {
+                Collection<String> unvisitedClientIds = partialVisitContext.getUnvisitedClientIds();
+                String message;
+                StringBuilder builder = new StringBuilder();
+                for (String cur : unvisitedClientIds) {
+                    builder.append(cur).append(" ");
+                }
+                LOGGER.log(Level.FINER,
+                        "jsf.context.partial_visit_context_unvisited_children",
+                        new Object[]{builder.toString()});
+            }
+        }    
     }
 
+    /**
+     * Unwraps {@link PartialVisitContext} from a chain of {@link VisitContextWrapper}s.
+     *
+     * If no {@link PartialVisitContext} is found in the chain, null is returned instead.
+     * 
+     * @param visitContext the visit context.
+     * @return the (unwrapped) partial visit context.
+     */
+    private static PartialVisitContext unwrapPartialVisitContext(VisitContext visitContext) {
+        if (visitContext == null) {
+            return null;
+        }
+        if (visitContext instanceof PartialVisitContext) {
+            return (PartialVisitContext) visitContext;
+        }
+        if (visitContext instanceof VisitContextWrapper) {
+            return unwrapPartialVisitContext(((VisitContextWrapper) visitContext).getWrapped());
+        }
+        return null;
+    }
+    
     private void renderAll(FacesContext context, UIViewRoot viewRoot) throws IOException {
         // If this is a "render all via ajax" request,
         // make sure to wrap the entire page in a <render> elemnt
-        // with the special id of VIEW_ROOT_ID.  This is how the client
+        // with the special viewStateId of VIEW_ROOT_ID.  This is how the client
         // JavaScript knows how to replace the entire document with
         // this response.
         PartialViewContext pvc = context.getPartialViewContext();
         PartialResponseWriter writer = pvc.getPartialResponseWriter();
-        writer.startUpdate(PartialResponseWriter.RENDER_ALL_MARKER);
-
-        if (viewRoot.getChildCount() > 0) {
-            for (UIComponent uiComponent : viewRoot.getChildren()) {
-                uiComponent.encodeAll(context);
+        
+        if (!Util.isPortletRequest(context)) {
+            writer.startUpdate(PartialResponseWriter.RENDER_ALL_MARKER);
+            if (viewRoot.getChildCount() > 0) {
+                for (UIComponent uiComponent : viewRoot.getChildren()) {
+                    uiComponent.encodeAll(context);
+                }
             }
+            writer.endUpdate();
+        }
+        else {
+            /*
+             * If we have a portlet request, start rendering at the view root.
+             */
+            writer.startUpdate(viewRoot.getClientId(ctx));
+            viewRoot.encodeBegin(context);
+            if (viewRoot.getChildCount() > 0) {
+                for (UIComponent uiComponent : viewRoot.getChildren()) {
+                    uiComponent.encodeAll(context);
+                }
+            }
+            viewRoot.encodeEnd(context);
+            writer.endUpdate();
         }
-
-        writer.endUpdate();
     }
 
     private void renderState(FacesContext context) throws IOException {
+        // Get the view state and write it to the response..
+        PartialViewContext pvc = context.getPartialViewContext();
+        PartialResponseWriter writer = pvc.getPartialResponseWriter();
+        String viewStateId = Util.getViewStateId(context);
 
-        if (!context.getViewRoot().isTransient()) {
-            // Get the view state and write it to the response..
-            PartialViewContext pvc = context.getPartialViewContext();
-            PartialResponseWriter writer = pvc.getPartialResponseWriter();
-            writer.startUpdate(PartialResponseWriter.VIEW_STATE_MARKER);
-            String state = context.getApplication().getStateManager().getViewState(context);
-            writer.write(state);
+        writer.startUpdate(viewStateId);
+        String state = context.getApplication().getStateManager().getViewState(context);
+        writer.write(state);
+        writer.endUpdate();
+
+        ClientWindow window = context.getExternalContext().getClientWindow();
+        if (null != window) {
+            String clientWindowId = Util.getClientWindowId(context);
+            writer.startUpdate(clientWindowId);
+            writer.write(window.getId());
             writer.endUpdate();
         }
-
     }
 
     private PartialResponseWriter createPartialResponseWriter() {
@@ -412,9 +511,17 @@ import com.sun.faces.util.Util;
         }
 
         if (out != null) {
-            responseWriter =
-                ctx.getRenderKit().createResponseWriter(out,
-                "text/xml", encoding);
+            UIViewRoot viewRoot = ctx.getViewRoot();
+            if (viewRoot != null) {
+                responseWriter =
+                    ctx.getRenderKit().createResponseWriter(out,
+                    "text/xml", encoding);
+            } else {
+                RenderKitFactory factory = (RenderKitFactory)
+                    FactoryFinder.getFactory(FactoryFinder.RENDER_KIT_FACTORY);
+                RenderKit renderKit = factory.getRenderKit(ctx, RenderKitFactory.HTML_BASIC_RENDER_KIT);
+                responseWriter = renderKit.createResponseWriter(out, "text/xml", encoding);
+            }
         }
         if (responseWriter instanceof PartialResponseWriter)  {
             return (PartialResponseWriter) responseWriter;
@@ -440,7 +547,6 @@ import com.sun.faces.util.Util;
         }
     }
 
-
     // ----------------------------------------------------------- Inner Classes
 
 
@@ -470,27 +576,12 @@ import com.sun.faces.util.Util;
                 } else if (curPhase == PhaseId.UPDATE_MODEL_VALUES) {
                     comp.processUpdates(ctx);
                 } else if (curPhase == PhaseId.RENDER_RESPONSE) {
-
                     PartialResponseWriter writer = ctx.getPartialViewContext().getPartialResponseWriter();
-
                     writer.startUpdate(comp.getClientId(ctx));
-                    try {
-                        // do the default behavior...
-                        comp.encodeAll(ctx);
-                    }
-                    catch (Exception ce) {
-                        if (LOGGER.isLoggable(Level.SEVERE)) {
-                            LOGGER.severe(ce.toString());
-                        }
-                        if (LOGGER.isLoggable(Level.FINE)) {
-                            LOGGER.log(Level.FINE,
-                            ce.toString(),
-                            ce);
-                        }
-                    }
+                    // do the default behavior...
+                    comp.encodeAll(ctx);
                     writer.endUpdate();
-                }
-                else {
+                } else {
                     throw new IllegalStateException("I18N: Unexpected " +
                                                     "PhaseId passed to " +
                                               " PhaseAwareContextCallback: " +
@@ -498,7 +589,15 @@ import com.sun.faces.util.Util;
                 }
             }
             catch (IOException ex) {
-                ex.printStackTrace();
+                if (LOGGER.isLoggable(Level.SEVERE)) {
+                    LOGGER.severe(ex.toString());
+                }
+                if (LOGGER.isLoggable(Level.FINE)) {
+                    LOGGER.log(Level.FINE,
+                    ex.toString(),
+                    ex);
+                }
+                throw new FacesException(ex);
             }
 
             // Once we visit a component, there is no need to visit
diff --git a/jsf-ri/src/main/java/com/sun/faces/context/RequestCookieMap.java b/jsf-ri/src/main/java/com/sun/faces/context/RequestCookieMap.java
index fb49689..777d3e0 100644
--- a/jsf-ri/src/main/java/com/sun/faces/context/RequestCookieMap.java
+++ b/jsf-ri/src/main/java/com/sun/faces/context/RequestCookieMap.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/context/RequestHeaderMap.java b/jsf-ri/src/main/java/com/sun/faces/context/RequestHeaderMap.java
index bc9a10c..722a313 100644
--- a/jsf-ri/src/main/java/com/sun/faces/context/RequestHeaderMap.java
+++ b/jsf-ri/src/main/java/com/sun/faces/context/RequestHeaderMap.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/context/RequestHeaderValuesMap.java b/jsf-ri/src/main/java/com/sun/faces/context/RequestHeaderValuesMap.java
index b5e662c..ca2b715 100644
--- a/jsf-ri/src/main/java/com/sun/faces/context/RequestHeaderValuesMap.java
+++ b/jsf-ri/src/main/java/com/sun/faces/context/RequestHeaderValuesMap.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/context/RequestMap.java b/jsf-ri/src/main/java/com/sun/faces/context/RequestMap.java
index 571166a..f66bd76 100644
--- a/jsf-ri/src/main/java/com/sun/faces/context/RequestMap.java
+++ b/jsf-ri/src/main/java/com/sun/faces/context/RequestMap.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/context/RequestParameterMap.java b/jsf-ri/src/main/java/com/sun/faces/context/RequestParameterMap.java
index 2aaecb2..5f729f5 100644
--- a/jsf-ri/src/main/java/com/sun/faces/context/RequestParameterMap.java
+++ b/jsf-ri/src/main/java/com/sun/faces/context/RequestParameterMap.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -42,8 +46,14 @@ import java.util.Collections;
 import java.util.Collection;
 import java.util.Iterator;
 
+import javax.faces.application.Application;
+import javax.faces.component.NamingContainer;
+import javax.faces.component.UIViewRoot;
+import javax.faces.context.FacesContext;
 import javax.servlet.ServletRequest;
 
+import com.sun.faces.config.WebConfiguration;
+import com.sun.faces.config.WebConfiguration.BooleanWebContextInitParameter;
 import com.sun.faces.util.Util;
 
 /**
@@ -51,7 +61,10 @@ import com.sun.faces.util.Util;
  */
 public class RequestParameterMap extends BaseContextMap<String> {
 
+    private String namingContainerId;
+    private final boolean namespaceParameters;
     private final ServletRequest request;
+    private boolean inspectedParameterNames = false;
 
 
     // ------------------------------------------------------------ Constructors
@@ -59,6 +72,9 @@ public class RequestParameterMap extends BaseContextMap<String> {
 
     public RequestParameterMap(ServletRequest request) {
         this.request = request;
+        WebConfiguration webConfig = WebConfiguration.getInstance();
+        namespaceParameters = webConfig.isOptionEnabled(
+                  BooleanWebContextInitParameter.NamespaceParameters);
     }
 
 
@@ -68,7 +84,19 @@ public class RequestParameterMap extends BaseContextMap<String> {
     @Override
     public String get(Object key) {
         Util.notNull("key", key);
-        return request.getParameter(key.toString());
+        if (!inspectedParameterNames) {
+            inspectedParameterNames = true;
+            request.getParameterNames();
+        }
+    	String mapKey = key.toString();
+        String mapValue = null;
+        if (namespaceParameters) {
+            mapValue = request.getParameter(getNamingContainerId() + mapKey);
+        }
+        if (mapValue == null) {
+        	mapValue = request.getParameter(mapKey);
+        }
+        return mapValue;
     }
 
 
@@ -84,6 +112,24 @@ public class RequestParameterMap extends BaseContextMap<String> {
     }
 
 
+    protected String getNamingContainerId() {
+        if (null == namingContainerId) {
+            FacesContext context = FacesContext.getCurrentInstance();
+            UIViewRoot viewRoot = context.getViewRoot();
+            if (viewRoot == null) {
+                Application application = context.getApplication();
+                viewRoot = (UIViewRoot) application.createComponent(UIViewRoot.COMPONENT_TYPE);
+            }
+            if (viewRoot instanceof NamingContainer) {
+                namingContainerId = viewRoot.getContainerClientId(context);
+            } else {
+                namingContainerId = "";
+            }
+        }
+        return namingContainerId;
+    }
+
+
     @Override
     public Collection<String> values() {
         return Collections.unmodifiableCollection(super.values());
@@ -91,8 +137,16 @@ public class RequestParameterMap extends BaseContextMap<String> {
 
 
     @Override
-    public boolean containsKey(Object key) {
-        return (request.getParameter(key.toString()) != null);
+    public boolean containsKey(Object key) {    	
+    	boolean containsKey = false;
+    	String mapKey = key.toString();
+        if (namespaceParameters) {
+            containsKey = (request.getParameter(getNamingContainerId() + mapKey) != null);
+        }
+        if (!containsKey) {
+        	containsKey = (request.getParameter(mapKey) != null);
+        }
+        return containsKey;
     }
 
 
diff --git a/jsf-ri/src/main/java/com/sun/faces/context/RequestParameterValuesMap.java b/jsf-ri/src/main/java/com/sun/faces/context/RequestParameterValuesMap.java
index 77c63be..73a3e80 100644
--- a/jsf-ri/src/main/java/com/sun/faces/context/RequestParameterValuesMap.java
+++ b/jsf-ri/src/main/java/com/sun/faces/context/RequestParameterValuesMap.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/context/SessionMap.java b/jsf-ri/src/main/java/com/sun/faces/context/SessionMap.java
index 57769ce..ff0bb4c 100644
--- a/jsf-ri/src/main/java/com/sun/faces/context/SessionMap.java
+++ b/jsf-ri/src/main/java/com/sun/faces/context/SessionMap.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -129,7 +133,15 @@ public class SessionMap extends BaseContextMap<Object> {
         	}
         }
         //noinspection NonSerializableObjectBoundToHttpSession
-        session.setAttribute(key, value);
+        boolean doSet = true;
+        if (null != value && null != result) {
+            int valCode = System.identityHashCode(value);
+            int resultCode = System.identityHashCode(result);
+            doSet = valCode != resultCode;
+        }
+        if (doSet) {
+            session.setAttribute(key, value);
+        }
         return (result);
     }
 
@@ -221,7 +233,7 @@ public class SessionMap extends BaseContextMap<Object> {
     // --------------------------------------------------------- Private Methods
 
 
-    private HttpSession getSession(boolean createNew) {
+    protected HttpSession getSession(boolean createNew) {
         return request.getSession(createNew);
     }
 
diff --git a/jsf-ri/src/main/java/com/sun/faces/context/StateContext.java b/jsf-ri/src/main/java/com/sun/faces/context/StateContext.java
index 59b80d9..789adea 100644
--- a/jsf-ri/src/main/java/com/sun/faces/context/StateContext.java
+++ b/jsf-ri/src/main/java/com/sun/faces/context/StateContext.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 2012 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -36,10 +40,10 @@
 
 package com.sun.faces.context;
 
+import com.sun.faces.RIConstants;
 import com.sun.faces.application.ApplicationAssociate;
 import com.sun.faces.application.ApplicationStateInfo;
 import com.sun.faces.util.ComponentStruct;
-
 import javax.faces.component.UIComponent;
 import javax.faces.component.UIViewRoot;
 import javax.faces.context.FacesContext;
@@ -48,13 +52,24 @@ import javax.faces.event.PostAddToViewEvent;
 import javax.faces.event.PreRemoveFromViewEvent;
 import javax.faces.event.SystemEvent;
 import javax.faces.event.SystemEventListener;
-
 import java.lang.ref.WeakReference;
 import java.util.ArrayList;
-import java.util.LinkedHashMap;
+import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
-
+import java.util.HashMap;
+import java.util.Map.Entry;
+import java.util.Set;
+import static com.sun.faces.RIConstants.DYNAMIC_CHILD_COUNT;
+import static com.sun.faces.RIConstants.DYNAMIC_COMPONENT;
+import com.sun.faces.facelets.tag.jsf.ComponentSupport;
+import com.sun.faces.util.FacesLogger;
+import com.sun.faces.util.MostlySingletonSet;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.logging.Logger;
+import javax.faces.FacesException;
 
 /**
  * Context for dealing with partial state saving mechanics.
@@ -63,25 +78,26 @@ public class StateContext {
 
 
     private static final String KEY = StateContext.class.getName() + "_KEY";
-    private static final String DYNAMIC_COMPONENT =
-            StateContext.class.getName() + "_DYNAMIC_COMPONENT";
-
-
+    
+    // Expando attribute used to mark dynamic UIComponents that have had their
+    // ComponentSupport.MARK_CREATED expando removed.
+    private static final String MARK_CREATED_REMOVED =
+            StateContext.class.getName() + "_MARK_CREATED_REMOVED";
+    
     private boolean partial;
     private boolean partialLocked;
     private boolean trackMods = true;
     private AddRemoveListener modListener;
     private ApplicationStateInfo stateInfo;
-    private FacesContext ctx;
     private WeakReference<UIViewRoot> viewRootRef = new WeakReference<UIViewRoot>(null);
 
+    private static final Logger LOGGER = FacesLogger.CONTEXT.getLogger();
 
     // ------------------------------------------------------------ Constructors
 
 
-    private StateContext(FacesContext ctx, ApplicationStateInfo stateInfo) {
+    private StateContext(ApplicationStateInfo stateInfo) {
 
-        this.ctx = ctx;
         this.stateInfo = stateInfo;
 
     }
@@ -89,6 +105,20 @@ public class StateContext {
 
     // ---------------------------------------------------------- Public Methods
 
+    /**
+     * Release the state context.
+     * 
+     * @param facesContext the Faces context.
+     */
+    public static void release(FacesContext facesContext) {
+        StateContext stateContext = (StateContext) facesContext.getAttributes().get(KEY);
+        UIViewRoot viewRoot = facesContext.getViewRoot();
+        if (viewRoot != null && stateContext.modListener != null) {
+            viewRoot.unsubscribeFromViewEvent(PostAddToViewEvent.class, stateContext.modListener);
+            viewRoot.unsubscribeFromViewEvent(PreRemoveFromViewEvent.class, stateContext.modListener);
+        }
+        facesContext.getAttributes().remove(KEY);
+    }
 
     /**
      * @param ctx the <code>FacesContext</code> for the current request
@@ -100,20 +130,20 @@ public class StateContext {
         if (stateCtx == null) {
             ApplicationAssociate associate = ApplicationAssociate.getCurrentInstance();
             ApplicationStateInfo info = associate.getApplicationStateInfo();
-            stateCtx = new StateContext(ctx, info);
+            stateCtx = new StateContext(info);
             ctx.getAttributes().put(KEY, stateCtx);
         }
         return stateCtx;
 
     }
 
-
     /**
-     * @param viewId the view ID to check
+     * @param ctx FacesContext.
+     * @param viewId the view ID to check or null if viewId is unknown.
      * @return <code>true</code> if partial state saving should be used for the
      *  specified view ID, otherwise <code>false</code>
      */
-    public boolean partialStateSaving(String viewId) {
+    public boolean isPartialStateSaving(FacesContext ctx, String viewId) {
         // track UIViewRoot changes
         UIViewRoot root = ctx.getViewRoot();
         UIViewRoot refRoot = viewRootRef.get();
@@ -133,8 +163,18 @@ public class StateContext {
         }
 
         if (!partialLocked) {
-            partial = stateInfo.usePartialStateSaving(viewId);
-            partialLocked = true;
+                  if (viewId == null) {
+                          if (root != null) {
+                                  viewId = root.getViewId();
+                          } else {
+                                  // View root has not yet been initialized.  Check to see whether
+                                  // the target view id has been stashed away for us.
+                                  viewId = (String)ctx.getAttributes().get(RIConstants.VIEWID_KEY_NAME);
+                                }
+                  }
+        
+                  partial = stateInfo.usePartialStateSaving(viewId);
+                  partialLocked = true;
         }
         return partial;
 
@@ -156,25 +196,27 @@ public class StateContext {
      * Installs a <code>SystemEventListener</code> on the <code>UIViewRoot</code>
      * to track components added to or removed from the view.
      */
-    public void startTrackViewModifications() {
-
+    public void startTrackViewModifications(FacesContext ctx, UIViewRoot root) {
         if (modListener == null) {
-            modListener = new AddRemoveListener(ctx);
-            UIViewRoot root = ctx.getViewRoot();
-            root.subscribeToViewEvent(PostAddToViewEvent.class, modListener);
-            root.subscribeToViewEvent(PreRemoveFromViewEvent.class, modListener);
+            if (root != null) {
+                modListener = createAddRemoveListener(ctx, root);
+                root.subscribeToViewEvent(PostAddToViewEvent.class, modListener);
+                root.subscribeToViewEvent(PreRemoveFromViewEvent.class, modListener);
+            } else {
+                LOGGER.warning("Unable to attach AddRemoveListener to UIViewRoot because it is null");
+            }
         }
-        setTrackViewModifications(true);
-        
+        setTrackViewModifications(true);        
     }
 
 
     /**
      * Toggles the current modification tracking status.
-     * @param trackMods if <code>true</code> and the listener installed by
-     *  {@link #startTrackViewModifications()} is present, then view modifications
-     *  will be tracked.  If <code>false</code>, then modification events
-     *  will be ignored.
+     * 
+     * @param trackMods if <code>true</code> and the listener installed by 
+     * {@link #startTrackViewModifications(javax.faces.context.FacesContext, javax.faces.component.UIViewRoot) 
+     * is present, then view modifications will be tracked.  If 
+     * <code>false</code>, then modification events will be ignored.
      */
     public void setTrackViewModifications(boolean trackMods) {
 
@@ -189,148 +231,548 @@ public class StateContext {
      *  view construction
      */
     public boolean componentAddedDynamically(UIComponent c) {
-
         return c.getAttributes().containsKey(DYNAMIC_COMPONENT);
-
     }
 
+    public int getIndexOfDynamicallyAddedChildInParent(UIComponent c) {
+        int result = -1;
+        Map<String, Object> attrs = c.getAttributes();
+        if (attrs.containsKey(DYNAMIC_COMPONENT)) {
+            result = (Integer) attrs.get(DYNAMIC_COMPONENT);
+        }
+        return result;
+    }
 
-    /**
-     * @return a <code>Map</code> containing information about all components
-     *  added after the initial view construction.
-     */
-    public Map<String,ComponentStruct> getDynamicAdds() {
+    public boolean hasOneOrMoreDynamicChild(UIComponent parent) {
+        return parent.getAttributes().containsKey(DYNAMIC_CHILD_COUNT);
+    }
 
-        return ((modListener != null) ? modListener.dynamicAdds : null);
+    private int incrementDynamicChildCount(FacesContext context, UIComponent parent) {
+        int result;
+        Map<String, Object> attrs = parent.getAttributes();
+        Integer cur = (Integer) attrs.get(DYNAMIC_CHILD_COUNT);
+        if (null != cur) {
+            result = cur++;
+        } else {
+            result = 1;
+        }
+        attrs.put(DYNAMIC_CHILD_COUNT, (Integer) result);
+        context.getViewRoot().getAttributes().put(RIConstants.TREE_HAS_DYNAMIC_COMPONENTS, Boolean.TRUE);
 
+        return result;
     }
 
+    private int decrementDynamicChildCount(FacesContext context, UIComponent parent) {
+        int result = 0;
+        Map<String, Object> attrs = parent.getAttributes();
+        Integer cur = (Integer) attrs.get(DYNAMIC_CHILD_COUNT);
+        if (null != cur) {
+            result = (0 < cur) ? cur-- : 0;
 
-    /**
-     * @return a <code>List</code> of client IDs that have been removed after
-     *  the initial view construction.
-     */
-    public List<String> getDynamicRemoves() {
+        }
+        if (0 == result && null != cur){
+            attrs.remove(DYNAMIC_CHILD_COUNT);
+        }
+        context.getViewRoot().getAttributes().put(RIConstants.TREE_HAS_DYNAMIC_COMPONENTS, Boolean.TRUE);
 
-        return ((modListener != null) ? modListener.dynamicRemoves : null);
+        return result;
+    }
 
+    /**
+     * Get the dynamic list (of adds and removes).
+     */
+    public List<ComponentStruct> getDynamicActions() {
+        return ((modListener != null) ? modListener.getDynamicActions() : null);
     }
 
+    /**
+     * Get the hash map of dynamic components.
+     * 
+     * @return the hash map of dynamic components.
+     */
+    public HashMap<String, UIComponent> getDynamicComponents() {
+        return ((modListener != null) ? modListener.getDynamicComponents() : null);
+    }
 
     // ---------------------------------------------------------- Nested Classes
 
 
-    public static class AddRemoveListener implements SystemEventListener {
+    private AddRemoveListener createAddRemoveListener(FacesContext context, UIViewRoot root) {
+        return isPartialStateSaving(context, root.getViewId()) ?
+                new DynamicAddRemoveListener(context) :
+                new StatelessAddRemoveListener(context);
+    }
 
-        private FacesContext ctx;
+    abstract private class AddRemoveListener implements SystemEventListener {
+ 
+        /**
+         * Stores the state context we work for,
+         */
         private StateContext stateCtx;
-        private LinkedHashMap<String, ComponentStruct> dynamicAdds;
-        private List<String> dynamicRemoves;
-
 
-        // -------------------------------------------------------- Constructors
-
-
-        public AddRemoveListener(FacesContext ctx) {
-            this.ctx = ctx;
-            stateCtx = StateContext.getStateContext(ctx);
+        /**
+         * Constructor.
+         * 
+         * @param context the Faces context. 
+         */
+        protected AddRemoveListener(FacesContext context) {
+            stateCtx = StateContext.getStateContext(context);
         }
 
-
-        // ------------------------------------ Methods From SystemEventListener
-
-
+        /**
+         * Get the list of adds/removes.
+         * 
+         * @return the list of adds/removes.
+         */
+        abstract public List<ComponentStruct> getDynamicActions();
+
+        /**
+         * Get the hash map of dynamic components.
+         * 
+         * @return the hash map of dynamic components.
+         */
+        abstract public HashMap<String, UIComponent> getDynamicComponents();
+        
+        /**
+         * Process the add/remove event.
+         * 
+         * @param event the add/remove event.
+         * @throws AbortProcessingException when processing should be aborted.
+         */
         public void processEvent(SystemEvent event)
               throws AbortProcessingException {
-
+            FacesContext ctx = FacesContext.getCurrentInstance();
             if (event instanceof PreRemoveFromViewEvent) {
                 if (stateCtx.trackViewModifications()) {
-                    handleRemoveEvent(ctx, (PreRemoveFromViewEvent) event);
+                    handleRemove(ctx, ((PreRemoveFromViewEvent) event).getComponent());
+                    ctx.getViewRoot().getAttributes().put(RIConstants.TREE_HAS_DYNAMIC_COMPONENTS, Boolean.TRUE);
                 }
             } else {
                 if (stateCtx.trackViewModifications()) {
-                    handleAddEvent(ctx, (PostAddToViewEvent) event);
+                    handleAdd(ctx, ((PostAddToViewEvent) event).getComponent());
+                    ctx.getViewRoot().getAttributes().put(RIConstants.TREE_HAS_DYNAMIC_COMPONENTS, Boolean.TRUE);
                 }
             }
         }
 
+        /**
+         * Are we listening for these particular changes.
+         * 
+         * <p>
+         *  Note we are only interested in UIComponent adds/removes that are
+         *  not the UIViewRoot itself.
+         * </p>
+         * 
+         * @param source the source object we might be listening for.
+         * @return true if the source is OK, false otherwise.
+         */
         public boolean isListenerForSource(Object source) {
-            return (source instanceof UIComponent);
+            return (source instanceof UIComponent && !(source instanceof UIViewRoot));
         }
+        
+        /**
+         * Handle the remove.
+         * 
+         * @param context the Faces context.
+         * @param component the UI component to add to the list as a REMOVE.
+         */
+        abstract protected void handleRemove(FacesContext context, UIComponent component);
+
+        /**
+         * Handle the add.
+         * 
+         * @param context the Faces context.
+         * @param component the UI component to add to the list as an ADD.
+         */
+        abstract protected void handleAdd(FacesContext context, UIComponent component);
+    }
 
+    public class NoopAddRemoveListener extends AddRemoveListener {
 
-        // ----------------------------------------------------- Private Methods
+        // This is silly.  We should be able to use Colletions.emptyMap(),
+        // but cannot as StateContext.getDynamicComponents() API returns a
+        // HashMap instead of a Map.
+        private HashMap emptyComponentsMap = new HashMap();
+
+        public NoopAddRemoveListener(FacesContext context) {
+            super(context);
+        }
 
+        @Override
+        public List<ComponentStruct> getDynamicActions() {
+            return Collections.emptyList();
+        }
+
+        @Override
+        public HashMap<String, UIComponent> getDynamicComponents() {
+            return emptyComponentsMap;
+        }
 
-        private void handleRemoveEvent(FacesContext context,
-                                       PreRemoveFromViewEvent event) {
+        @Override
+        protected void handleRemove(FacesContext context, UIComponent component) {
+        }
 
-            UIComponent removed = event.getComponent();
-            if (removed.isTransient()) {
+        @Override
+        protected void handleAdd(FacesContext context, UIComponent component) {
+        }
+    }
+ 
+    /**
+     * An AddRemoveListener that implements the new dynamic component
+     * strategy where no state is managed by the listener itself.  Instead,
+     * we use expando attributes on the dynamic components (and their parents)
+     * to track/preserve the dynamic nature of these components.
+     */
+    public class StatelessAddRemoveListener extends NoopAddRemoveListener {
+        
+        public StatelessAddRemoveListener(FacesContext context) {
+            super(context);
+        }
+ 
+        private boolean thisEventCorrespondsToSubtreeRootRemove(FacesContext context, UIComponent c) {
+            boolean result = false;
+            if (null != c) {
+                c = c.getParent();
+                if (null != c) {
+                    result = c.isInView();
+                }
+            }
+            
+            return result;
+        }
+        
+        private boolean thisEventCorrespondsToSubtreeRootAdd(FacesContext context, UIComponent c) {
+            boolean result = false;
+            Map<Object, Object> contextMap = context.getAttributes();
+            UIViewRoot root = context.getViewRoot();
+            UIComponent originalComponent = c;
+            if (null != c) {
+                Collection<UIComponent> dynamics = getDynamicComponentCollection(contextMap);
+                if (!dynamics.contains(c)) {
+                    c = c.getParent();
+                    while (null != c && !dynamics.contains(c)) {
+                        c = c.getParent();
+                    }
+                    if (null == c || root.equals(c)) {
+                        dynamics.add(originalComponent);
+                        result = true;
+                    }
+                }
+            }
+            
+            return result;
+        }
+        
+        private static final String DYNAMIC_COMPONENT_ADD_COLLECTION = 
+                RIConstants.FACES_PREFIX + "DynamicComponentSubtreeRoots";
+        
+        private Collection<UIComponent> getDynamicComponentCollection(Map<Object, Object> contextMap) {
+            Collection<UIComponent> result = (Collection<UIComponent>) contextMap.get(DYNAMIC_COMPONENT_ADD_COLLECTION);
+            if (null == result) {
+                result = new HashSet<UIComponent>();
+                contextMap.put(DYNAMIC_COMPONENT_ADD_COLLECTION, result);
+            }
+            return result;
+        }
+        
+        @Override
+        protected void handleRemove(FacesContext context, UIComponent component) {
+            if (!thisEventCorrespondsToSubtreeRootRemove(context, component)) {
                 return;
             }
-            if (dynamicRemoves == null) {
-                dynamicRemoves = new ArrayList<String>();
+            
+            Map<String, Object> attrs = component.getAttributes();
+
+            // If the component is a tag-created child, we remove its
+            // MARK_CREATED expando so that it will now be treated as
+            // a dynamic/non-tag created component.
+            String tagId = (String)attrs.remove(ComponentSupport.MARK_CREATED);
+            if (tagId != null) {
+                // Actually, we don't just remove the MARK_CREATED - we need
+                // to stash it away so that we can restore it later if the
+                // component happens to be re-added to its original parent.
+                attrs.put(MARK_CREATED_REMOVED, tagId);
+                childRemovedFromParent(component.getParent(), tagId);
             }
-            String clientId = event.getComponent().getClientId(context);
-            if (dynamicAdds != null && dynamicAdds.containsKey(clientId)) {
-                dynamicAdds.remove(clientId);
+        }
+        
+        private void childRemovedFromParent(UIComponent parent, String childTagId) {
+            if (parent !=null) {
+                Collection<String> removedChildrenIds = getPreviouslyRemovedChildren(parent);                
+                removedChildrenIds.add(childTagId);
+                
+                markChildrenModified(parent);
             }
-            dynamicRemoves.add(clientId);
         }
 
+        private Collection<String> getPreviouslyRemovedChildren(UIComponent parent) {
+            Map<String, Object> attrs = parent.getAttributes();
+            Collection<String> removedChildrenIds = (Collection<String>)
+                    attrs.get(ComponentSupport.REMOVED_CHILDREN);
+            
+            if (removedChildrenIds == null) {
+                removedChildrenIds = new MostlySingletonSet<String>();
+                attrs.put(ComponentSupport.REMOVED_CHILDREN, removedChildrenIds);
+            }
 
-        private void handleAddEvent(FacesContext context,
-                                    PostAddToViewEvent event) {
+            return removedChildrenIds;
+        }
 
-            // if the root is transient, then no action is ever needed here
-            if (context.getViewRoot().isTransient()) {
-                return;
-            }
+        private void markChildrenModified(UIComponent parent) {
+          parent.getAttributes().put(ComponentSupport.MARK_CHILDREN_MODIFIED, true); 
+        }
 
-            UIComponent added = event.getComponent();
-            if (added.isTransient() || added instanceof UIViewRoot) {
+        @Override
+        protected void handleAdd(FacesContext context, UIComponent component) {
+            if (!thisEventCorrespondsToSubtreeRootAdd(context, component)) {
                 return;
             }
+            
+            Map<String, Object> attrs = component.getAttributes();
+            String tagId = (String)attrs.get(MARK_CREATED_REMOVED);
+            
+            if (childAddedToSameParentAsBefore(component, tagId)) {
+                
+                // Restore MARK_CREATED if the added component was originally
+                // created as a tag-based child of this parent.
+                attrs.remove(MARK_CREATED_REMOVED);
+                attrs.put(ComponentSupport.MARK_CREATED, tagId);
+            }
+            
+            markChildrenModified(component.getParent());
+        }
 
-            // this component, while not transient may be a child or facet
-            // of component that is.  We'll have to search the parent hierarchy
-            // to the root to confirm.
-            UIComponent parent = added.getParent();
-            while (parent != null) {
-                if (parent.isTransient()) {
-                    return;
+        // Handles the addition of a new child to the parent.  Returns true
+        // if the child was previously removed from this parent.
+        private boolean childAddedToSameParentAsBefore(UIComponent parent, String childTagId) {
+            if (parent != null) {
+                Map<String, Object> attrs = parent.getAttributes();
+                Collection<String> removedChildrenIds = (Collection<String>)
+                        attrs.get(ComponentSupport.REMOVED_CHILDREN);
+                if ((removedChildrenIds != null) && removedChildrenIds.remove(childTagId)) {
+                    if (removedChildrenIds.isEmpty()) {
+                        attrs.remove(ComponentSupport.REMOVED_CHILDREN);
+                    }
+                    return true;
                 }
-                parent = parent.getParent();
             }
+            
+            return false;
+        }
+    }
 
-            parent = added.getParent();
-            if (dynamicAdds == null) {
-                dynamicAdds = new LinkedHashMap<String, ComponentStruct>();
+    /**
+     * A system event listener which is used to listen for changes on the 
+     * component tree after restore view and before rendering out the view.
+     */
+    public class DynamicAddRemoveListener extends AddRemoveListener {
+
+        /**
+         * Stores the list of adds/removes.
+         */
+        private List<ComponentStruct> dynamicActions;
+        /**
+         * Stores the hash map of dynamic components.
+         */
+        private transient HashMap<String, UIComponent> dynamicComponents;
+
+        /**
+         * Constructor.
+         * 
+         * @param context the Faces context. 
+         */
+        public DynamicAddRemoveListener(FacesContext context) {
+            super(context);
+        }
+
+        /**
+         * Get the list of adds/removes.
+         * 
+         * @return the list of adds/removes.
+         */
+        @Override
+        public List<ComponentStruct> getDynamicActions() {
+            synchronized(this) {
+                if (dynamicActions == null) {
+                    dynamicActions = new ArrayList<ComponentStruct>();
+                }
             }
-            ComponentStruct toAdd = new ComponentStruct();
-
-            toAdd.clientId = added.getClientId(context);
-            toAdd.parentClientId = parent.getClientId(context);
-            // this needs work
-            int idx = parent.getChildren().indexOf(added);
-            if (idx == -1) {
-                // this must be a facet
-                for (Map.Entry<String, UIComponent> facet : parent.getFacets().entrySet()) {
-                    if (facet.getValue() == added) {
-                        toAdd.facetName = facet.getKey();
-                        break;
-                    }
+            return dynamicActions;
+        }
+
+        /**
+         * Get the hash map of dynamic components.
+         * 
+         * @return the hash map of dynamic components.
+         */
+        @Override
+        public HashMap<String, UIComponent> getDynamicComponents() {
+            synchronized(this) {
+                if (dynamicComponents == null) {
+                    dynamicComponents = new HashMap<String, UIComponent>();
                 }
-            } else {
-                toAdd.indexOfChildInParent = parent.getChildren().indexOf(added);
             }
-            if (dynamicRemoves != null) {
-                dynamicRemoves.remove(toAdd.clientId);
+            return dynamicComponents;
+        }
+        
+        /**
+         * Handle the remove.
+         * 
+         * @param context the Faces context.
+         * @param component the UI component to add to the list as a REMOVE.
+         */
+        @Override
+        protected void handleRemove(FacesContext context, UIComponent component) {
+            if (component.isInView()) {
+                decrementDynamicChildCount(context, component.getParent());
+                ComponentStruct struct = new ComponentStruct();
+                struct.action = ComponentStruct.REMOVE;
+                struct.clientId = component.getClientId(context);
+                struct.id = component.getId();
+                handleAddRemoveWithAutoPrune(component, struct);
+            }            
+        }
+
+        /**
+         * Handle the add.
+         * 
+         * @param context the Faces context.
+         * @param component the UI component to add to the list as an ADD.
+         */
+        @Override
+        protected void handleAdd(FacesContext context, UIComponent component) {
+            if (component.getParent() != null && component.getParent().isInView()) {
+                String id = component.getId();
+
+                /*
+                * Since adding a component, can mean you are really reparenting 
+                * it, we need to make sure the OLD clientId is not cached, we do 
+                * that by setting the id.
+                */
+                if (id != null) {
+                    component.setId(id);
+                }
+
+                String facetName = findFacetNameForComponent(component);
+                if (facetName != null) {
+                    incrementDynamicChildCount(context, component.getParent());
+                    component.clearInitialState();
+                    component.getAttributes().put(DYNAMIC_COMPONENT, component.getParent().getChildren().indexOf(component));
+                    ComponentStruct struct = new ComponentStruct();
+                    struct.action = ComponentStruct.ADD;
+                    struct.facetName = facetName;
+                    struct.parentClientId = component.getParent().getClientId(context);
+                    struct.clientId = component.getClientId(context);
+                    struct.id = component.getId();
+                    handleAddRemoveWithAutoPrune(component, struct);
+                }
+                else {
+                    incrementDynamicChildCount(context, component.getParent());
+                    component.clearInitialState();
+                    component.getAttributes().put(DYNAMIC_COMPONENT, component.getParent().getChildren().indexOf(component));
+                    ComponentStruct struct = new ComponentStruct();
+                    struct.action = ComponentStruct.ADD;
+                    struct.parentClientId = component.getParent().getClientId(context);
+                    struct.clientId = component.getClientId(context);
+                    struct.id = component.getId();
+                    handleAddRemoveWithAutoPrune(component, struct);
+                }
             }
-            added.getAttributes().put(DYNAMIC_COMPONENT, Boolean.TRUE);
-            dynamicAdds.put(toAdd.clientId, toAdd);
+        }
 
+        /**
+         * Return the facet name for the given component or null if the
+         * component is not the value of a facets map entry.
+         * 
+         * @param component the component to look for in the facets map entry value.
+         * @return the facet name or null if the component is not the value of a facets map entry.
+         */
+        private String findFacetNameForComponent(UIComponent component) {
+            Set<Entry<String, UIComponent>> entrySet = component.getParent().getFacets().entrySet();
+            Iterator<Entry<String, UIComponent>> entries = entrySet.iterator();
+            while (entries.hasNext()) {
+                Entry<String, UIComponent> candidate = entries.next();
+                if (component == candidate.getValue()) {
+                    return candidate.getKey();
+                }
+            }
+            return null;
+        }
+        
+        /**
+         * Methods that takes care of pruning and adding an action to the 
+         * dynamic action list.
+         *
+         * <pre>
+         *  If you add a component and the dynamic action list does not contain
+         *  the component yet then add it to the dynamic action list, regardless
+         *  whether or not if was an ADD or REMOVE.
+         * </pre>
+         * 
+         * <pre>
+         *  Else if you add a component and it is already in the dynamic action 
+         *  list and it is the only action for that client id in the dynamic 
+         *  action list then:
+         *   1) If the previous action was an ADD then
+         *      a) If the current action is a REMOVE then remove the component 
+         *         out of the dynamic action list.
+         *      b) If the current action is an ADD then throw a FacesException.
+         *   2) If the previous action was a REMOVE then
+         *      a) If the current action is an ADD then add it to the dynamic
+         *         action list.
+         *      b) If the current action is a REMOVE then throw a FacesException.
+         * </pre>
+         * 
+         * <pre>
+         *  Else if a REMOVE and ADD where captured before then:
+         *   1) If the current action is REMOVE then remove the last dynamic 
+         *      action out of the dynamic action list.
+         *   2) If the current action is ADD then throw a FacesException.
+         * </pre>
+         * 
+         * @param component the UI component.
+         * @param struct the dynamic action.
+         */
+        private void handleAddRemoveWithAutoPrune(UIComponent component, ComponentStruct struct) {
+
+            List<ComponentStruct> actionList = getDynamicActions();
+            HashMap<String, UIComponent> componentMap = getDynamicComponents();
+            
+            int firstIndex = actionList.indexOf(struct);
+            if (firstIndex == -1) {
+                actionList.add(struct);
+                componentMap.put(struct.clientId, component);
+            } else {
+                int lastIndex = actionList.lastIndexOf(struct);
+                if (lastIndex == firstIndex) {
+                    ComponentStruct previousStruct = actionList.get(firstIndex);
+                    if (ComponentStruct.ADD.equals(previousStruct.action)) {
+                        if (ComponentStruct.ADD.equals(struct.action)) {
+                            throw new FacesException("Cannot add the same component twice: " + struct.clientId);
+                        }
+                        if (ComponentStruct.REMOVE.equals(struct.action)) {
+                            actionList.remove(firstIndex);
+                            componentMap.remove(struct.clientId);
+                        }
+                    }
+                    if (ComponentStruct.REMOVE.equals(previousStruct.action)) {
+                        if (ComponentStruct.ADD.equals(struct.action)) {
+                            actionList.add(struct);
+                            componentMap.put(struct.clientId, component);                            
+                        }
+                        if (ComponentStruct.REMOVE.equals(struct.action)) {
+                            throw new FacesException("Cannot remove the same component twice: " + struct.clientId);
+                        }
+                    }
+                } else {
+                    if (ComponentStruct.ADD.equals(struct.action)) {
+                        throw new FacesException("Cannot add the same component twice: " + struct.clientId);
+                    }
+                    if (ComponentStruct.REMOVE.equals(struct.action)) {
+                        actionList.remove(lastIndex);
+                    }
+                }
+            }
         }
 
     } // END AddRemoveListener
diff --git a/jsf-ri/src/main/java/com/sun/faces/context/StringArrayValuesMap.java b/jsf-ri/src/main/java/com/sun/faces/context/StringArrayValuesMap.java
index 23bb477..a1079ae 100644
--- a/jsf-ri/src/main/java/com/sun/faces/context/StringArrayValuesMap.java
+++ b/jsf-ri/src/main/java/com/sun/faces/context/StringArrayValuesMap.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/context/UrlBuilder.java b/jsf-ri/src/main/java/com/sun/faces/context/UrlBuilder.java
index 21a4e8b..ba16f83 100644
--- a/jsf-ri/src/main/java/com/sun/faces/context/UrlBuilder.java
+++ b/jsf-ri/src/main/java/com/sun/faces/context/UrlBuilder.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -36,18 +40,19 @@
 
 package com.sun.faces.context;
 
-import com.sun.faces.el.ELUtils;
 import com.sun.faces.util.Util;
 
-import javax.faces.context.FacesContext;
-import javax.faces.application.Application;
 import java.io.UnsupportedEncodingException;
 import java.net.URLEncoder;
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.Iterator;
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
+import javax.faces.context.FacesContext;
+import javax.faces.lifecycle.ClientWindow;
+import javax.faces.render.ResponseStateManager;
 
 /**
  * <p>The <strong>UrlBuilder</strong> provides a convenient way to assemble a URL. It
@@ -75,8 +80,6 @@ class UrlBuilder {
     private String fragment;
     private Map<String, List<String>> parameters;
     private String encoding;
-    private FacesContext ctx;
-    private Application app;
 
 
     // ------------------------------------------------------------ Constructors
@@ -90,8 +93,6 @@ class UrlBuilder {
         extractSegments(url);
         this.encoding = encoding;
         // PERF TL lookup per-instance
-        ctx = FacesContext.getCurrentInstance();
-        app = ctx.getApplication();
     }
 
 
@@ -122,7 +123,7 @@ class UrlBuilder {
                     throw new IllegalArgumentException("Parameter name cannot be empty");
                 }
                 List<String> values = entry.getValue();
-                List<String> retValues = evaluateExpressions(values);
+                List<String> retValues = values;
                 addValuesToParameter(entry.getKey().trim(), retValues, true);
             }
         }
@@ -195,9 +196,11 @@ class UrlBuilder {
             return;
         }
         
-        String[] pairs = Util.split(queryString, PARAMETER_PAIR_SEPARATOR);
+        Map<String, Object> appMap = FacesContext.getCurrentInstance().getExternalContext().getApplicationMap();
+
+        String[] pairs = Util.split(appMap, queryString, PARAMETER_PAIR_SEPARATOR);
         for (String pair : pairs) {
-            String[] nameAndValue = Util.split(pair, PARAMETER_NAME_VALUE_SEPARATOR);
+            String[] nameAndValue = Util.split(appMap, pair, PARAMETER_NAME_VALUE_SEPARATOR);
             // ignore malformed pair
             if (nameAndValue.length != 2
                 || nameAndValue[0].trim().length() == 0) {
@@ -217,6 +220,7 @@ class UrlBuilder {
 
 
     protected void appendQueryString() {
+        boolean hasQueryString = false;
         if (parameters != null) {
             // parse residual query string
             parseQueryString();
@@ -226,23 +230,45 @@ class UrlBuilder {
                     url.append(nextSeparatorChar);
                     url.append(param.getKey());
                     url.append(PARAMETER_NAME_VALUE_SEPARATOR);
-                    if (encoding != null) {
-                        try {
-                            url.append(URLEncoder.encode(value, encoding));
-                        } catch (UnsupportedEncodingException ex) {
-                            throw new RuntimeException(ex);
-                        }
-                    }
-                    else {
-                        url.append(value);
-                    }
+                    url.append(value);
                     nextSeparatorChar = PARAMETER_PAIR_SEPARATOR;
                 }
             }
+            hasQueryString = true;
         }
         else if (queryString != null) {
             url.append(QUERY_STRING_SEPARATOR).append(queryString);
+            hasQueryString = true;
         }
+        
+        FacesContext context = FacesContext.getCurrentInstance();
+        ClientWindow  cw = context.getExternalContext().getClientWindow();
+        boolean appendClientWindow = false;
+        if (null != cw) {
+            appendClientWindow = cw.isClientWindowRenderModeEnabled(context);
+        }
+        if (appendClientWindow && -1 == url.indexOf(ResponseStateManager.CLIENT_WINDOW_URL_PARAM)) {
+            if (null != cw) {
+                String clientWindow = cw.getId();
+                if (!hasQueryString) {
+                    url.append(QUERY_STRING_SEPARATOR);
+                } else {
+                    url.append(PARAMETER_PAIR_SEPARATOR);
+                }
+                url.append(ResponseStateManager.CLIENT_WINDOW_URL_PARAM).append(PARAMETER_NAME_VALUE_SEPARATOR).append(clientWindow);
+    
+                Map<String, String> additionalParams = cw.getQueryURLParameters(context);
+                if (null != additionalParams) {
+                    for (Map.Entry<String, String> cur : additionalParams.entrySet()) {
+                        url.append(PARAMETER_NAME_VALUE_SEPARATOR);
+                        url.append(cur.getKey()).
+                                append(UrlBuilder.PARAMETER_NAME_VALUE_SEPARATOR).
+                                append(cur.getValue());                        
+                    }
+                }
+            }
+        }
+        
     }
 
 
@@ -285,7 +311,19 @@ class UrlBuilder {
     protected void addValuesToParameter(String name, List<String> valuesRef, boolean replace) {
         List<String> values = new ArrayList<String>();
         if (valuesRef != null) {
-            values.addAll(valuesRef);
+            for (Iterator<String> it = valuesRef.iterator(); it.hasNext();) {
+                String string = it.next();
+                    if (encoding != null) {
+                        try {
+                            values.add(URLEncoder.encode(string, encoding));
+                        } catch (UnsupportedEncodingException ex) {
+                            throw new RuntimeException(ex);
+                        }
+                    }
+                    else {
+                        values.add(string);
+                    }
+            }
             values.removeAll(NULL_LIST);
         }
 
@@ -306,27 +344,6 @@ class UrlBuilder {
     // --------------------------------------------------------- Private Methods
 
 
-    private List<String> evaluateExpressions(List<String> values) {
-        if (!values.isEmpty()) {
-            List<String> ret = new ArrayList<String>(values.size());
-            for (String val : values) {
-                if (val != null) {
-                    String value = val.trim();
-                    if (ELUtils.isExpression(value)) {
-                        value = app.evaluateExpressionGet(ctx,
-                                                          value,
-                                                          String.class);
-                    }
-                    ret.add(value);
-                }
-            }
-            
-            return ret;
-        }
-        return values;
-    }
-
-
     private void cleanFragment() {
         if (fragment != null) {
             String f = fragment;
diff --git a/jsf-ri/src/main/java/com/sun/faces/context/flash/ELFlash.java b/jsf-ri/src/main/java/com/sun/faces/context/flash/ELFlash.java
index c054192..904ee3c 100644
--- a/jsf-ri/src/main/java/com/sun/faces/context/flash/ELFlash.java
+++ b/jsf-ri/src/main/java/com/sun/faces/context/flash/ELFlash.java
@@ -1,1461 +1,1663 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- *
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- *
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- *
- * Contributor(s):
- *
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-
-package com.sun.faces.context.flash;
-
-import com.sun.faces.config.WebConfiguration;
-import com.sun.faces.config.WebConfiguration.WebContextInitParameter;
-import com.sun.faces.facelets.tag.ui.UIDebug;
-import com.sun.faces.util.FacesLogger;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.atomic.AtomicLong;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-import javax.faces.application.FacesMessage;
-import javax.faces.component.UIViewRoot;
-import javax.faces.context.ExternalContext;
-import javax.faces.context.FacesContext;
-import javax.faces.context.Flash;
-import javax.faces.event.PhaseId;
-import javax.servlet.http.Cookie;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-/**
- * <p>How this implementation works</p>
-
- * <p>This class is an application singleton.  It has one ivar, {@link
- * #innerMap}.  Entries are added to and removed from this map as needed
- * according to how the flash scope is defined in the spec.  This
- * implementation never touches the session, nor does it cause the
- * session to be created.</p>
-
- * <p>Most of the hairy logic is encapsulated with in the inner class
- * {@link #PreviousNextFlashInfoManager}.  An instance of this class is
- * obtained by calling one of the variants of getCurrentFlashManager().
- * When the instance is no longer needed for this request, call
- * releaseCurrentFlashManager().</p>
-
- * <p>Two very important methods are {@link getPhaseMapForWriting} and
- * {@link getPhaseMapForReading}.  These methods are the basis for the
- * Map implementation methods.  Methods that need to write to the map
- * use getPhaseMapForWriting(), those that need to read use
- * getPhaseMapForReading().  These methods allow for the laziness that
- * allows us to only incur a cost when the flash is actually written
- * to.</p>
-
- * <p>The operation of this class is intimately tied to the request
- * processing lifecycle.  Let's break down every run thru the request
- * processing lifecycle into two parts called "previous" and "next".  We
- * use the names "previous" and "next" to indicate the persistence and
- * timing of the data that is stored in the flash.  Consider two runs
- * through the requset processing lifecle: N and N+1.  On request N,
- * there is no "previous" request.  On Request N, any writes to the
- * flash that happen during RENDER RESPONSE go to the "next" flash map.
- * This means they are available for the ENTIRE run though the request
- * processing lifecycle on request N+1.  Any entries put into the "next"
- * flash map on request N will be expired at the end of request N+1.
- * Now, when we get into request N+1 what was considered "next" on
- * request N, is now called "previous" from the perspective of request
- * N+1.  Any reads from the flash during request N+1 come from the
- * "previous" map.  Any writes to the flash before RENDER RESPONSE go to
- * the "previous" map.  Any writes to the flash during RENDER RESPNOSE
- * go to the "next" map.</p>
- */
-
-public class ELFlash extends Flash {
-
-    // <editor-fold defaultstate="collapsed" desc="ivars">
-
-    /**
-     * <p>Keys in this map are the string version of sequence numbers
-     * obtained via calls to {@link #getNewSequenceNumber}.  Values are
-     * the actual Map instances that back the actual Map methods on this
-     * class.  All writes to and reads from this map are done by the
-     * {@link PreviousNextFlashInfoManager} inner class.</p>
-     * 
-     */
-    private Map<String,Map<String, Object>> flashInnerMap = null;
-
-    private final AtomicLong sequenceNumber = new AtomicLong(0);
-
-    private int numberOfConcurentFlashUsers = Integer.
-     parseInt(WebContextInitParameter.NumberOfConcurrentFlashUsers.getDefaultValue());
-
-    private long numberOfFlashesBetweenFlashReapings = Long.
-     parseLong(WebContextInitParameter.NumberOfFlashesBetweenFlashReapings.getDefaultValue());
-
-    private long lastReaping;
-
-    // </editor-fold>
-
-    // <editor-fold defaultstate="collapsed" desc="class vars">
-
-    private static final Logger LOGGER = FacesLogger.FLASH.getLogger();
-
-    /**
-     * <p>These constants are referenced from other source files in this
-     * package.  This one is a disambiguator prefix.</p>
-     */
-    static final String PREFIX = "csfcf";
-
-    /**
-     * <p>This constant is used as the key in the application map that
-     * stores the singleton ELFlash instance.</p>
-     */
-    static final String FLASH_ATTRIBUTE_NAME = PREFIX + "f";
-
-    /**
-     * <p>This constant is used as the name of the cookie sent to the
-     * client.</p>
-     */
-    static final String FLASH_COOKIE_NAME = PREFIX + "c";
-
-
-    /**
-     * <p>This constant is used as the key the request map used, in the
-     * FlashELResolver, to convey the name of the property being
-     * accessed via 'now'.</p>
-     */
-    static final String FLASH_NOW_REQUEST_KEY = FLASH_ATTRIBUTE_NAME + "n";
-
-    private enum CONSTANTS {
-
-	/**
-	 * The key in the FacesContext attributes map (hereafter
-	 * referred to as contextMap) for the request scoped {@link
-	 * PreviousNextFlashInfoManager}.
-	 */
-
-        RequestFlashManager,
-
-	/**
-	 * At the beginning of every phase, we save the value of the
-	 * facesContext.getResponseComplete() into the contextMap under
-	 * this key.  We check this value after the phase to see if this
-	 * is the phase where the user called responseComplete().  This
-	 * is important to cover cases when the user does some funny
-	 * lifecycle stuff.
-	 */
-
-        SavedResponseCompleteFlagValue,
-
-        /**
-	 * This is used as the key in the flash itself to store the messages
-	 * if they are being tracked.
-	 */
-
-        FacesMessageAttributeName,
-
-        /**
-	 * This is used as the key in the flash itself to track whether or not
-	 * messages are being saved across request/response boundaries.
-	 */
-
-        KeepAllMessagesAttributeName,
-
-        /**
-         * This key is used in the contextMap to indicate that the next
-         * get should be treated as a keep.
-         *
-         */
-        KeepFlagAttributeName,
-
-        /**
-         * This key is used in the contextMap to prevent setting the cookie
-         * twice.
-         */
-        DidWriteCookieAttributeName,
-
-    }
-
-    // </editor-fold>
-
-    // <editor-fold defaultstate="collapsed" desc="Constructors and instance accessors">
-
-    /** Creates a new instance of ELFlash */
-    private ELFlash() {
-        flashInnerMap = new ConcurrentHashMap<String,Map<String, Object>>();
-        WebConfiguration config = WebConfiguration.getInstance();
-        String value;
-        try {
-            value = config.getOptionValue(WebContextInitParameter.NumberOfConcurrentFlashUsers);
-            numberOfConcurentFlashUsers = Integer.parseInt(value);
-        } catch (NumberFormatException nfe) {
-	    if (LOGGER.isLoggable(Level.WARNING)) {
-		LOGGER.log(Level.WARNING,
-			   "Unable to set number of concurrent flash users.  Defaulting to " +
-                           numberOfConcurentFlashUsers);
-	    }
-
-        }
-
-        try {
-            value = config.getOptionValue(WebContextInitParameter.NumberOfFlashesBetweenFlashReapings);
-            numberOfFlashesBetweenFlashReapings = Long.parseLong(value);
-        } catch (NumberFormatException nfe) {
-	    if (LOGGER.isLoggable(Level.WARNING)) {
-		LOGGER.log(Level.WARNING,
-			   "Unable to set number flashes between flash repaings.  Defaulting to " +
-                           numberOfFlashesBetweenFlashReapings);
-	    }
-
-        }
-
-    }
-
-    /**
-     * <p>Returns the flash <code>Map</code> for this application.  This is
-     * a convenience method that calls
-     * <code>FacesContext.getCurrentInstance()</code> and then calls the
-     * overloaded <code>getFlash()</code> that takes a
-     * <code>FacesContext</code> with it.</p>
-     * 
-     * @return The flash <code>Map</code> for this session.
-     */
-    
-    public static Map<String,Object> getFlash() {
-        FacesContext context = FacesContext.getCurrentInstance();
-        return getFlash(context.getExternalContext(), true);
-    }
-
-    /**
-     *
-     * @param extContext the <code>ExternalContext</code> for this request.
-     *
-     * @param create <code>true</code> to create a new instance for this request if 
-     * necessary; <code>false</code> to return <code>null</code> if there's no 
-     * instance in the current <code>session</code>.
-     * 
-     * @return The flash <code>Map</code> for this session.
-     */
-    
-    public static ELFlash getFlash(ExternalContext extContext, boolean create) {
-        Map<String, Object> appMap = extContext.getApplicationMap();
-        ELFlash flash = (ELFlash) 
-            appMap.get(FLASH_ATTRIBUTE_NAME);
-        if (null == flash && create) {
-            synchronized (extContext.getContext()) {
-                if (null == (flash = (ELFlash)
-                    appMap.get(FLASH_ATTRIBUTE_NAME))) {
-                    flash = new ELFlash();
-                    appMap.put(FLASH_ATTRIBUTE_NAME, flash);
-                }
-            }
-        }
-        return flash;
-    }
-    
-    // </editor-fold>
-
-    // <editor-fold defaultstate="collapsed" desc="Abstract class overrides">
-
-    
-    public boolean isKeepMessages() {
-        boolean result = false;
-        Map<String, Object> phaseMap;
-
-        if (null != (phaseMap = loggingGetPhaseMapForReading(false))) {
-            Object value = phaseMap.get(CONSTANTS.KeepAllMessagesAttributeName.toString());
-            result = (null != value) ? (Boolean) value : false;
-        }
-        
-        return result;
-    }
-    
-    
-    public void setKeepMessages(boolean newValue) {
-
-        loggingGetPhaseMapForWriting(false).put(CONSTANTS.KeepAllMessagesAttributeName.toString(),
-                Boolean.valueOf(newValue));
-
-    }
-    
-    
-    public boolean isRedirect() {
-        boolean result = false;
-
-        FacesContext context = FacesContext.getCurrentInstance();
-        Map<Object, Object> contextMap = context.getAttributes();
-        PreviousNextFlashInfoManager flashManager;
-        if (null != (flashManager = getCurrentFlashManager(contextMap, false))) {
-            result = flashManager.getPreviousRequestFlashInfo().isIsRedirect();
-        }
-
-        return result;
-    }
-    
-
-    // PENDING(edburns): I'm going to make an entry to the errata.  This
-    // method can't be implemented because the decision of whether or
-    // not to redirect is made by the navigationHandler.
-    public void setRedirect(boolean newValue) {
-    }
-
-    // </editor-fold>
-
-    // <editor-fold defaultstate="collapsed" desc="Map overrides">
-
-    
-    @SuppressWarnings("element-type-mismatch")
-    public Object get(Object key) {
-        Object result = null;
-
-        if (null != key) {
-            if (key.equals("keepMessages")) {
-                result = this.isKeepMessages();
-            } else if (key.equals("redirect")) {
-                result = this.isRedirect();
-            } else {
-                FacesContext context = FacesContext.getCurrentInstance();
-                if (isKeepFlagSet(context)) {
-                    result = getPhaseMapForReading().get(key);
-                    keep(key.toString());
-                    clearKeepFlag(context);
-                    return result;
-                }
-
-            }
-
-        }
-        
-        if (null == result) {
-            result = getPhaseMapForReading().get(key);
-        }
-
-        if (LOGGER.isLoggable(Level.FINEST)) {
-            LOGGER.log(Level.FINEST, "get({0}) = {1}", new Object [] { key, result});
-        }
-
-        return result;
-    }
-
-
-    public Object put(String key, Object value) {
-        Boolean b = null;
-        Object result = null;
-
-        if (null != key) {
-            if (key.equals("keepMessages")) {
-                this.setKeepMessages(b = Boolean.parseBoolean((String) value));
-            }
-            if (key.equals("redirect")) {
-                this.setRedirect(b = Boolean.parseBoolean((String) value));
-            }
-        }
-        result = (null == b) ? getPhaseMapForWriting().put(key, value) : b;
-        if (LOGGER.isLoggable(Level.FINEST)) {
-            LOGGER.log(Level.FINEST, "put({0},{1})", new Object [] { key, value});
-        }
-
-        return result;
-    }
-
-    @SuppressWarnings("element-type-mismatch")
-    public Object remove(Object key) {
-        Object result = null;
-
-        result = getPhaseMapForWriting().remove(key);
-
-        return result;
-    }
-
-    
-    @SuppressWarnings("element-type-mismatch")
-    public boolean containsKey(Object key) {
-        boolean result = false;
-
-        result = getPhaseMapForReading().containsKey(key);
-
-        return result;
-    }
-
-    
-    public boolean containsValue(Object value) {
-        boolean result = false;
-
-        result = getPhaseMapForReading().containsValue(value);
-
-        return result;
-    }
-
-    
-    public void putAll(Map<? extends String, ?> t) {
-
-        getPhaseMapForWriting().putAll(t);
-
-    }
-
-    
-    public Collection<Object> values() {
-        Collection<Object> result = null;
-
-        result = getPhaseMapForReading().values();
-
-        return result;
-    }
-
-    
-    public int size() {
-        int result = 0;
-
-        result = getPhaseMapForReading().size();
-
-        return result;
-    }
-
-    
-    public void clear() {
-
-        getPhaseMapForWriting().clear();
-
-    }
-
-    
-    @SuppressWarnings({"CloneDoesntCallSuperClone"})
-    @Override
-    protected Object clone() throws CloneNotSupportedException {
-        throw new CloneNotSupportedException();
-    }
-
-    
-    public Set<Map.Entry<String, Object>> entrySet() {
-        Set<Map.Entry<String, Object>> 
-                readingMapEntrySet = getPhaseMapForReading().entrySet(),
-                writingMapEntrySet = getPhaseMapForWriting().entrySet(),
-                result = null;
-
-        result = new HashSet<Map.Entry<String, Object>>();
-        result.addAll(readingMapEntrySet);
-        result.addAll(writingMapEntrySet);
-
-        return result;
-    }
-
-    
-    public boolean isEmpty() {
-        boolean 
-                readingMapIsEmpty = getPhaseMapForReading().isEmpty(),
-                writingMapIsEmpty = getPhaseMapForWriting().isEmpty(),
-                result = false;
-
-        result = readingMapIsEmpty && writingMapIsEmpty;
-
-        return result;
-    }
-
-    
-    public Set<String> keySet() {
-        Set<String>
-                readingMapKeySet = getPhaseMapForReading().keySet(),
-                writingMapKeySet = getPhaseMapForWriting().keySet(),
-                result = null;
-
-        result = new HashSet<String>();
-        result.addAll(readingMapKeySet);
-        result.addAll(writingMapKeySet);
-
-        return result;
-    }
-
-    // </editor-fold>
-
-    // <editor-fold defaultstate="collapsed" desc="Flash overrides">
-
-    
-    public void keep(String key) {
-        FacesContext context = FacesContext.getCurrentInstance();
-        Map<String, Object> requestMap = context.getExternalContext().getRequestMap();
-        Map<Object, Object> contextMap = context.getAttributes();
-        PreviousNextFlashInfoManager flashManager;
-        if (null != (flashManager = getCurrentFlashManager(contextMap, true))) {
-            Object toKeep;
-
-            if (null == (toKeep = requestMap.remove(key))) {
-                FlashInfo flashInfo = null;
-                if (null != (flashInfo = flashManager.getPreviousRequestFlashInfo())) {
-                    toKeep = flashInfo.getFlashMap().remove(key);
-                }
-            }
-
-            if (null != toKeep) {
-                getPhaseMapForWriting().put(key, toKeep);
-            }
-        }
-
-
-    }
-
-    
-    public void putNow(String key, Object value) {
-        FacesContext context = FacesContext.getCurrentInstance();
-        Map<Object, Object> contextMap = context.getAttributes();
-        PreviousNextFlashInfoManager flashManager;
-        if (null != (flashManager = getCurrentFlashManager(contextMap, true))) {
-            FlashInfo flashInfo = null;
-            if (null != (flashInfo = flashManager.getPreviousRequestFlashInfo())) {
-                flashInfo.getFlashMap().put(key, value);
-            }
-        }
-    }
-    
-    public void doPrePhaseActions(FacesContext context) {
-        PhaseId currentPhase = context.getCurrentPhaseId();
-        Map<Object, Object> contextMap = context.getAttributes();
-        contextMap.put(CONSTANTS.SavedResponseCompleteFlagValue,
-                context.getResponseComplete());
-
-        if (currentPhase.equals(PhaseId.RESTORE_VIEW)) {
-            Cookie cookie = null;
-
-            if (null != (cookie = getCookie(context.getExternalContext()))) {
-                getCurrentFlashManager(context, contextMap, cookie);
-            }
-
-            if (this.isKeepMessages()) {
-                this.restoreAllMessages(context);
-            }
-        }
-    }
-
-    public void doPostPhaseActions(FacesContext context) {
-        PhaseId currentPhase = context.getCurrentPhaseId();
-        Map<Object, Object> contextMap = context.getAttributes();
-        boolean
-                responseCompleteJustSetTrue = responseCompleteWasJustSetTrue(context, contextMap),
-                lastPhaseForThisRequest = responseCompleteJustSetTrue ||
-                                          currentPhase == PhaseId.RENDER_RESPONSE;
-        if (lastPhaseForThisRequest) {
-            doLastPhaseActions(context, false);
-        }
-    }
-
-    /**
-     * <p>This is the most magic of methods.  There are several scenarios
-     * in which this method can be called, but the first time it is
-     * called for a request it takes action, while on subsequent times
-     * it returns without taking action.  This is due to the call to
-     * {@link #releaseCurrentFlashManager}.  After this call, any calls
-     * to {@link #getCurrentFlashManager} will return null.</p>
-
-     * <p>Scenario 1: normal request ending.  This will be called after
-     * the RENDER_RESPONSE phase executes.  outgoingResponseIsRedirect will be false.</p>
-
-     * <p>Scenario 2: navigationHandler asks extContext for redirect.
-     * In this case, extContext calls this method directly,
-     * outgoingResponseIsRedirect will be true.</p>
-
-     * <p>Scenario 3: extContext.flushBuffer(): As far as I can tell,
-     * this is only called in the JSP case, but it's good to call it
-     * from there anyway, because we need to write our cookie before the
-     * response is committed.  outgoingResponseIsRedirect is false.</p>
-
-     * <p>Scenario 4: after rendering the response in JSP, but before
-     * the buffer is flushed.  In the JSP case, I've found this necessary
-     * because the call to extContext.flushBuffer() is too late, the
-     * response has already been committed by that
-     * point. outgoingResponseIsRedirect is false.</p>
-     */
-
-    public void doLastPhaseActions(FacesContext context, boolean outgoingResponseIsRedirect) {
-        ExternalContext extContext = context.getExternalContext();
-        Map<Object, Object> contextMap = context.getAttributes();
-        PreviousNextFlashInfoManager flashManager = getCurrentFlashManager(contextMap, false);
-        if (null == flashManager) {
-            return;
-        }
-        if (this.isKeepMessages()) {
-            this.saveAllMessages(context);
-        }
-        releaseCurrentFlashManager(contextMap);
-
-	// What we do in this if-else statement has consequences for
-	// PreviousNextFlashInfoManager.decode().
-        
-        if (outgoingResponseIsRedirect) {
-            FlashInfo previousRequestFlashInfo = flashManager.getPreviousRequestFlashInfo();
-	    // Next two methods are VITALLY IMPORTANT!
-            previousRequestFlashInfo.setIsRedirect(true);
-            flashManager.expireNext_MovePreviousToNext();
-        } else {
-            FlashInfo flashInfo = flashManager.getPreviousRequestFlashInfo();
-            if (null != flashInfo && flashInfo.getLifetimeMarker() ==
-                LifetimeMarker.SecondTimeThru) {
-                flashManager.expirePrevious();
-            }
-        }
-        if (LOGGER.isLoggable(Level.FINEST)) {
-            LOGGER.log(Level.FINEST, "---------------------------------------");
-        }
-
-
-        setCookie(context, flashManager, flashManager.encode());
-
-    }
-
-    // </editor-fold>
-
-    // <editor-fold defaultstate="collapsed" desc="Helpers">
-
-    private void maybeWriteCookie(FacesContext context,
-            PreviousNextFlashInfoManager flashManager) {
-        FlashInfo flashInfo = flashManager.getPreviousRequestFlashInfo();
-        if (null != flashInfo && flashInfo.getLifetimeMarker() ==
-            LifetimeMarker.SecondTimeThru) {
-            PreviousNextFlashInfoManager copiedFlashManager =
-                    flashManager.copyWithoutInnerMap();
-            copiedFlashManager.expirePrevious();
-            setCookie(context, flashManager,
-                    copiedFlashManager.encode());
-        }
-    }
-
-
-    void setKeepFlag(FacesContext context) {
-        context.getAttributes().put(CONSTANTS.KeepFlagAttributeName, Boolean.TRUE);
-    }
-
-    void clearKeepFlag(FacesContext context) {
-        context.getAttributes().remove(CONSTANTS.KeepFlagAttributeName);
-    }
-
-    boolean isKeepFlagSet(FacesContext context) {
-        return Boolean.TRUE ==
-                context.getAttributes().get(CONSTANTS.KeepFlagAttributeName);
-    }
-
-
-
-    private long getNewSequenceNumber() {
-        long result = sequenceNumber.incrementAndGet();
-
-        if (0 == result % numberOfFlashesBetweenFlashReapings) {
-            reapFlashes();
-        }
-
-        if (result == Long.MAX_VALUE) {
-            result = 1;
-            sequenceNumber.set(1);
-        }
-
-        return result;
-    }
-
-    private void reapFlashes() {
-
-        if (flashInnerMap.size() < numberOfConcurentFlashUsers) {
-            return;
-        }
-
-        Set<String> keys = flashInnerMap.keySet();
-        long
-                sequenceNumberToTest,
-                currentSequenceNumber = sequenceNumber.get();
-        Map<String, Object> curFlash;
-        for (String cur : keys) {
-            sequenceNumberToTest = Long.parseLong(cur);
-            if (numberOfConcurentFlashUsers < currentSequenceNumber - sequenceNumberToTest) {
-                if (null != (curFlash = flashInnerMap.get(cur))) {
-                    curFlash.clear();
-                }
-                flashInnerMap.remove(cur);
-            }
-        }
-    }
-
-    private boolean responseCompleteWasJustSetTrue(FacesContext context,
-            Map<Object, Object> contextMap) {
-        boolean result = false;
-
-        // If it was false, but it's now true, return true
-        result = (Boolean.FALSE == contextMap.get(CONSTANTS.SavedResponseCompleteFlagValue) &&
-                 context.getResponseComplete());
-
-        return result;
-    }
-
-    private static String getLogPrefix(FacesContext context) {
-        StringBuilder result = new StringBuilder();
-        ExternalContext extContext = context.getExternalContext();
-        Object request = extContext.getRequest();
-        if (request instanceof HttpServletRequest) {
-            result.append(((HttpServletRequest)request).getMethod()).append(" ");
-        }
-        UIViewRoot root = context.getViewRoot();
-        if (null != root) {
-            String viewId = root.getViewId();
-            if (null != viewId) {
-                result.append(viewId).append(" ");
-            }
-        }
-
-        return result.toString();
-    }
-
-    private Map<String, Object> loggingGetPhaseMapForWriting(boolean loggingEnabled) {
-        FacesContext context = FacesContext.getCurrentInstance();
-        Map<String, Object> result = null;
-        PhaseId currentPhase = context.getCurrentPhaseId();
-        Map<Object, Object> contextMap = context.getAttributes();
-
-        PreviousNextFlashInfoManager flashManager;
-        if (null != (flashManager = getCurrentFlashManager(contextMap, true))) {
-            FlashInfo flashInfo;
-            boolean isDebugLog = loggingEnabled && LOGGER.isLoggable(Level.FINEST);
-
-            if (currentPhase.getOrdinal() < PhaseId.RENDER_RESPONSE.getOrdinal()) {
-                flashInfo = flashManager.getPreviousRequestFlashInfo();
-                if (isDebugLog) {
-                    LOGGER.log(Level.FINEST, "{0}previous[{1}]",
-                            new Object[]{getLogPrefix(context),
-                                flashInfo.getSequenceNumber()});
-                }
-            } else {
-                flashInfo = flashManager.getNextRequestFlashInfo(this, true);
-                if (isDebugLog) {
-                    LOGGER.log(Level.FINEST, "{0}next[{1}]",
-                            new Object[]{getLogPrefix(context),
-                                flashInfo.getSequenceNumber()});
-                }
-                maybeWriteCookie(context, flashManager);
-            }
-            result = flashInfo.getFlashMap();
-        }
-
-        return result;
-
-    }
-
-    /**
-     * <p>If the current phase is earlier than RENDER_RESPONSE, return
-     * the map for the "previous" request.  Otherwise, return the map
-     * for the "next" request.  Note that we use
-     * getCurrentFlashManager(contextMap,true).  This is because if this
-     * method is being called, we know we actually need the map, so we
-     * have to ensure the underlying data structure is present before
-     * trying to access it.</p>
-     */
-
-    private Map<String, Object> getPhaseMapForWriting() {
-        return loggingGetPhaseMapForWriting(true);
-    }
-
-
-    private Map<String, Object> loggingGetPhaseMapForReading(boolean loggingEnabled) {
-        FacesContext context = FacesContext.getCurrentInstance();
-        Map<String, Object> result = Collections.emptyMap();
-        Map<Object, Object> contextMap = context.getAttributes();
-
-        PreviousNextFlashInfoManager flashManager;
-        if (null != (flashManager = getCurrentFlashManager(contextMap, false))) {
-            FlashInfo flashInfo;
-
-            if (null != (flashInfo = flashManager.getPreviousRequestFlashInfo())) {
-                boolean isDebugLog = loggingEnabled && LOGGER.isLoggable(Level.FINEST);
-                if (isDebugLog) {
-                    LOGGER.log(Level.FINEST, "{0}previous[{1}]",
-                            new Object[]{getLogPrefix(context),
-                                flashInfo.getSequenceNumber()});
-                }
-
-                result = flashInfo.getFlashMap();
-            }
-        }
-
-        return result;
-    }
-
-    /**
-     * <p>Always return the map for the "previous" request.  Note that
-     * we use getCurrentFlashManager(contextMap,false).  This is because
-     * if this method is being called, and there is pre-existing data in
-     * the flash from a previous write, then the
-     * PreviousNextFlashInfoManager will already have been created.  If
-     * there is not pre-existing data, we don't create the
-     * PreviousNextFlashInfoManager, and therefore just return the empty
-     * map.</p>
-     */
-
-    private Map<String, Object> getPhaseMapForReading() {
-        return loggingGetPhaseMapForReading(true);
-    }
-
-    void saveAllMessages(FacesContext context) {
-        // take no action on the GET that comes after a REDIRECT
-        Map<Object, Object> contextMap = context.getAttributes();
-        PreviousNextFlashInfoManager flashManager;
-        if (null == (flashManager = getCurrentFlashManager(contextMap, true))) {
-            return;
-        }
-        if (flashManager.getPreviousRequestFlashInfo().isIsRedirect()) {
-            return;
-        }
-
-        Iterator<String> messageClientIds = context.getClientIdsWithMessages();
-        List<FacesMessage> facesMessages;
-        Map<String, List<FacesMessage>> allFacesMessages = null;
-        Iterator<FacesMessage> messageIter;
-        String curMessageId;
-
-        // Save all the FacesMessages into a Map, which we store in the flash.
-
-        // Step 1, go through the FacesMessage instances for each clientId
-        // in the messageClientIds list.
-        while (messageClientIds.hasNext()) {
-            curMessageId = messageClientIds.next();
-            // Get the messages for this clientId
-            messageIter = context.getMessages(curMessageId);
-            facesMessages = new ArrayList<FacesMessage>();
-            while (messageIter.hasNext()) {
-                facesMessages.add(messageIter.next());
-            }
-            // Add the list to the map
-            if (null == allFacesMessages) {
-                allFacesMessages = new HashMap<String, List<FacesMessage>>();
-            }
-            allFacesMessages.put(curMessageId, facesMessages);
-        }
-        facesMessages = null;
-
-        // Step 2, go through the FacesMessages that do not have a client
-        // id associated with them.
-        messageIter = context.getMessages(null);
-        // Make sure to overwrite the previous facesMessages list
-        facesMessages = new ArrayList<FacesMessage>();
-        while (messageIter.hasNext()) {
-            facesMessages.add(messageIter.next());
-        }
-        if (null != facesMessages) {
-            // Add the list to the map
-            if (null == allFacesMessages) {
-                allFacesMessages = new HashMap<String, List<FacesMessage>>();
-            }
-            allFacesMessages.put(null, facesMessages);
-        }
-        getPhaseMapForWriting().put(CONSTANTS.FacesMessageAttributeName.toString(),
-                allFacesMessages);
-
-    }
-
-    @SuppressWarnings("element-type-mismatch")
-    void restoreAllMessages(FacesContext context) {
-        Map<String, List<FacesMessage>> allFacesMessages;
-        Map<String, Object> phaseMap = getPhaseMapForReading();
-        List<FacesMessage> facesMessages;
-
-
-        if (null != (allFacesMessages = (Map<String, List<FacesMessage>>)
-                phaseMap.get(CONSTANTS.FacesMessageAttributeName.toString()))) {
-            for (Map.Entry<String, List<FacesMessage>> cur : allFacesMessages.entrySet()) {
-                if (null != (facesMessages = allFacesMessages.get(cur.getKey()))) {
-                    for (FacesMessage curMessage : facesMessages) {
-                        context.addMessage(cur.getKey(), curMessage);
-                    }
-                }
-            }
-            phaseMap.remove(CONSTANTS.FacesMessageAttributeName);
-        }
-    }
-
-
-    /**
-     * <p>Return the cookie that came from the browser, if any.</p>
-     */
-    private Cookie getCookie(ExternalContext extContext) {
-        Cookie result = null;
-
-        result = (Cookie) extContext.getRequestCookieMap().get(FLASH_COOKIE_NAME);
-
-        return result;
-    }
-
-    /** 
-     * <p>Set the cookie iff the response was not yet committed.  If the response
-     * was committed, log a warning.</p>
-     */
-
-    private void setCookie(FacesContext context, 
-            PreviousNextFlashInfoManager flashManager,
-            Cookie toSet) {
-        Map<Object, Object> contextMap = context.getAttributes();
-        ExternalContext extContext = context.getExternalContext();
-        if (contextMap.containsKey(CONSTANTS.DidWriteCookieAttributeName)) {
-            return;
-        }
-        FlashInfo
-                nextFlash = flashManager.getNextRequestFlashInfo(),
-                prevFlash = flashManager.getPreviousRequestFlashInfo();
-
-        // Don't try to write the cookie unless there is data in the flash.
-        if ((null != nextFlash && !nextFlash.getFlashMap().isEmpty()) ||
-            (null != prevFlash && !prevFlash.getFlashMap().isEmpty())) {
-            HttpServletResponse resp = (HttpServletResponse) extContext.getResponse();
-            if (resp.isCommitted()) {
-                if (LOGGER.isLoggable(Level.WARNING)) {
-                    LOGGER.log(Level.WARNING,
-                            "jsf.externalcontext.flash.response.already.committed");
-                }
-            } else {
-                resp.addCookie(toSet);
-            }
-            contextMap.put(CONSTANTS.DidWriteCookieAttributeName, Boolean.TRUE);
-        }
-    }
-
-    // </editor-fold>
-
-    // <editor-fold defaultstate="collapsed" desc="Inner classes">
-
-    private enum LifetimeMarker {
-
-        // these must be unique
-        
-        FirstTimeThru("f"),
-        SecondTimeThru("s"),
-        IsRedirect("r"),
-        IsNormal("n");
-
-        private static char FIRST_TIME_THRU = 'f';
-        private static char SECOND_TIME_THRU = 's';
-        private static char IS_REDIRECT = 'r';
-        private static char IS_NORMAL = 'n';
-
-        private String name;
-
-        private LifetimeMarker(String name) {
-            this.name = name;
-        }
-
-        @Override
-        public String toString() {
-            return name;
-        }
-        
-        public char encode() {
-            return name.charAt(0);
-        }
-
-        public static LifetimeMarker decode(char c) {
-            LifetimeMarker result = FirstTimeThru;
-
-            if (FIRST_TIME_THRU == c) {
-                result = FirstTimeThru;
-            } else if (SECOND_TIME_THRU == c) {
-                result = SecondTimeThru;
-            } else if (IS_REDIRECT == c) {
-                result = IsRedirect;
-            } else if (IS_NORMAL == c) {
-                result = IsNormal;
-            } else {
-                throw new IllegalStateException("class invariant failed: invalid lifetime marker");
-            }
-
-            return result;
-        }
-                
-    }
-
-    private void releaseCurrentFlashManager(Map<Object, Object> contextMap) {
-        contextMap.remove(CONSTANTS.RequestFlashManager);
-    }
-
-    /**
-     * <p>Called when you need to get access to the flashManager.  If
-     * argument create is true, and no instance of the FlashManager
-     * exists for this request, create it and store it in the
-     * contextMap.</p>
-     */
-    private PreviousNextFlashInfoManager getCurrentFlashManager(Map<Object, Object> contextMap,
-            boolean create) {
-        PreviousNextFlashInfoManager result = (PreviousNextFlashInfoManager)
-                contextMap.get(CONSTANTS.RequestFlashManager);
-
-        if (null == result && create) {
-            result = new PreviousNextFlashInfoManager(flashInnerMap);
-            result.initializeBaseCase(this);
-            contextMap.put(CONSTANTS.RequestFlashManager, result);
-
-        }
-        return result;
-    }
-
-    /**
-     * <p>Called on the preRestoreView phase if the browser sent us a
-     * cookie.  If no instance of the FlashManager exists for this
-     * request, create it and store it in the contextMap.</p>
-     */
-    private PreviousNextFlashInfoManager getCurrentFlashManager(FacesContext context,
-            Map<Object, Object> contextMap,
-            Cookie cookie) {
-        PreviousNextFlashInfoManager result = (PreviousNextFlashInfoManager)
-                contextMap.get(CONSTANTS.RequestFlashManager);
-
-        if (null == result) {
-            result = new PreviousNextFlashInfoManager(flashInnerMap);
-            result.decode(context, this, cookie);
-            contextMap.put(CONSTANTS.RequestFlashManager, result);
-
-        }
-        return result;
-    }
-
-    /**
-     * <p>On any given request, there are actually two maps behind the
-     * flash.  Which one is actually used on a given Map method depends
-     * on the current lifecycle phase at the time the method is invoked.
-     * There is a "next" map, and a "previous" map.  This class manages
-     * the complexities of dealing with these two maps, and does so by
-     * relying on another inner class, FlashInfo.</p>
-
-     * <p>The "next" map is used in only one case, which happens to be a
-     * VERY common case: write operations to the flash that happen
-     * during render response.</p>
-
-     * <p>The "previous" map is used for write operations that happen
-     * before render response, and for all read operations.</p>
-
-     * <p>This class knows how to "decode" its state from an incoming
-     * cookie, written by a previous call to "encode".</p>
-
-     * <p>See the docs for FlashInfo for more information.</p>
-     */
-
-    private static final class PreviousNextFlashInfoManager {
-
-        private FlashInfo previousRequestFlashInfo;
-
-        private FlashInfo nextRequestFlashInfo;
-
-        private boolean incomingCookieCameFromRedirect = false;
-
-        private Map<String,Map<String, Object>> innerMap;
-
-        private PreviousNextFlashInfoManager() {}
-
-        private PreviousNextFlashInfoManager(Map<String,Map<String, Object>> innerMap) {
-            this.innerMap = innerMap;
-        }
-
-        protected PreviousNextFlashInfoManager copyWithoutInnerMap() {
-            PreviousNextFlashInfoManager result = new PreviousNextFlashInfoManager();
-            result.innerMap = Collections.emptyMap();
-            if (null != previousRequestFlashInfo) {
-                result.previousRequestFlashInfo = (FlashInfo)
-                     this.previousRequestFlashInfo.copyWithoutInnerMap();
-            }
-            if (null != nextRequestFlashInfo) {
-                result.nextRequestFlashInfo = (FlashInfo)
-                     this.nextRequestFlashInfo.copyWithoutInnerMap();
-            }
-            result.incomingCookieCameFromRedirect = this.incomingCookieCameFromRedirect;
-
-            return result;
-        }
-
-
-
-        @Override
-        public String toString() {
-            String result = null;
-
-            result = "previousRequestSequenceNumber: " +
-                    ((null != previousRequestFlashInfo) ? previousRequestFlashInfo.getSequenceNumber() : "null") +
-                    " nextRequestSequenceNumber: " +
-                    ((null != nextRequestFlashInfo) ? nextRequestFlashInfo.getSequenceNumber() : "null");
-
-            return result;
-        }
-
-        void initializeBaseCase(ELFlash flash) {
-            Map<String, Object> flashMap = null;
-
-            previousRequestFlashInfo = new FlashInfo(flash.getNewSequenceNumber(),
-                    LifetimeMarker.FirstTimeThru, false);
-            innerMap.put(previousRequestFlashInfo.getSequenceNumber() + "",
-                    flashMap = new HashMap<String, Object>());
-            previousRequestFlashInfo.setFlashMap(flashMap);
-
-            nextRequestFlashInfo = new FlashInfo(flash.getNewSequenceNumber(),
-                    LifetimeMarker.FirstTimeThru, false);
-            innerMap.put(nextRequestFlashInfo.getSequenceNumber() + "",
-                    flashMap = new HashMap<String, Object>());
-            nextRequestFlashInfo.setFlashMap(flashMap);
-        }
-
-        void expirePrevious() {
-            // expire previous
-            if (null != previousRequestFlashInfo) {
-                Map<String, Object> flashMap;
-                // clear the old map
-                if (null != (flashMap = previousRequestFlashInfo.getFlashMap())) {
-                    if (LOGGER.isLoggable(Level.FINEST)) {
-                        LOGGER.log(Level.FINEST, "{0} expire previous[{1}]",
-                                new Object[]{getLogPrefix(FacesContext.getCurrentInstance()),
-                                    previousRequestFlashInfo.getSequenceNumber()});
-
-                    }
-                    flashMap.clear();
-                }
-                // remove it from the flash
-                innerMap.remove(previousRequestFlashInfo.getSequenceNumber() + "");
-                previousRequestFlashInfo = null;
-            }
-        }
-
-        void expireNext_MovePreviousToNext() {
-            if (null != nextRequestFlashInfo) {
-                if (LOGGER.isLoggable(Level.FINEST)) {
-                    LOGGER.log(Level.FINEST, "{0} expire next[{1}], move previous to next",
-                            new Object[]{getLogPrefix(FacesContext.getCurrentInstance()),
-                                nextRequestFlashInfo.getSequenceNumber()});
-
-                }
-                // clear the old map
-                nextRequestFlashInfo.getFlashMap().clear();
-                // remove it from the flash
-                innerMap.remove(nextRequestFlashInfo.getSequenceNumber() + "");
-                nextRequestFlashInfo = null;
-            }
-
-            nextRequestFlashInfo = previousRequestFlashInfo;
-            previousRequestFlashInfo = null;
-        }
-
-	/**
-	 * <p>Decode the state of the PreviousNextFlashInfoManager from
-	 * a Cookie.  This entire method is wrapped in a try-catch block
-	 * to prevent any errors from malformed cookies from polluting
-	 * the system.  When any error occurs, the flash is not usable
-	 * for this request, and a nice error message is logged.</p>
-
-	 * <p>This method is where the LifetimeMarker is incremeted,
-	 * UNLESS the incoming request is the GET after the REDIRECT
-	 * after POST, in which case we don't increment it because the
-	 * system will expire the entries in the doLastPhaseActions.</p>
-	 *
-	 */
-
-        void decode(FacesContext context, ELFlash flash, Cookie cookie) {
-            String temp, value = cookie.getValue();
-            try {
-                int i = value.indexOf("_");
-
-                // IMPORTANT: what was "next" when the cookie was
-                // encoded is now "previous".  Therefore decode "next" first.
-                temp = value.substring(0, i++);
-
-                if (0 < temp.length()) {
-                    nextRequestFlashInfo = new FlashInfo();
-                    nextRequestFlashInfo.decode(temp);
-                }
-                // invariant we must always have something after the _
-                previousRequestFlashInfo = new FlashInfo();
-                previousRequestFlashInfo.decode(value.substring(i));
-
-		// handle the consequences of action taken on doLastPhaseActions
-                if (previousRequestFlashInfo.isIsRedirect()) {
-                    this.setIncomingCookieCameFromRedirect(true);
-                    previousRequestFlashInfo.setIsRedirect(false);
-                } else {
-                    // Don't make the flash older on debug requests
-                    if (!UIDebug.debugRequest(context)) {
-                        previousRequestFlashInfo.setLifetimeMarker(LifetimeMarker.SecondTimeThru);
-                    }
-                }
-                Map<String, Object> flashMap;
-                // If the browser sent a cookie that is valid, but
-                // doesn't correspond to a map in memory...
-                if (null == (flashMap = innerMap.get(previousRequestFlashInfo.getSequenceNumber() + ""))) {
-                    // create a new map
-                    previousRequestFlashInfo = new FlashInfo();
-                    previousRequestFlashInfo.setSequenceNumber(flash.getNewSequenceNumber());
-                    previousRequestFlashInfo.setLifetimeMarker(LifetimeMarker.FirstTimeThru);
-                    previousRequestFlashInfo.setIsRedirect(false);
-                    // put it in the flash
-                    innerMap.put(previousRequestFlashInfo.getSequenceNumber() + "",
-                            flashMap = new HashMap<String, Object>());
-                }
-                previousRequestFlashInfo.setFlashMap(flashMap);
-                if (null != nextRequestFlashInfo) {
-                    if (null == (flashMap = innerMap.get(nextRequestFlashInfo.getSequenceNumber() + ""))) {
-                        // create a new map
-                        nextRequestFlashInfo = new FlashInfo();
-                        nextRequestFlashInfo.setSequenceNumber(flash.getNewSequenceNumber());
-                        nextRequestFlashInfo.setLifetimeMarker(LifetimeMarker.FirstTimeThru);
-                        nextRequestFlashInfo.setIsRedirect(false);
-                        // put it in the flash
-                        innerMap.put(nextRequestFlashInfo.getSequenceNumber() + "",
-                                flashMap = new HashMap<String, Object>());
-                    }
-                    nextRequestFlashInfo.setFlashMap(flashMap);
-                }
-            } catch (Throwable t) {
-                if (LOGGER.isLoggable(Level.SEVERE)) {
-                    LOGGER.log(Level.SEVERE,
-                            "jsf.externalcontext.flash.bad.cookie",
-                            new Object [] { value });
-                }
-            }
-
-        }
-
-	/**
-	 * <p>Encode the current state of the
-	 * PreviousNextFlashInfoManager to the cookie.</p>
-	 */
-        Cookie encode() {
-            Cookie result = null;
-
-            String value = ((null != previousRequestFlashInfo) ? previousRequestFlashInfo.encode() : "")  + "_" +
-                           ((null != nextRequestFlashInfo) ? nextRequestFlashInfo.encode() : "");
-            result = new Cookie(FLASH_COOKIE_NAME, value);
-            if (1 == value.length()) {
-                result.setMaxAge(0);
-                result.setPath("/");
-            }
-
-            return result;
-        }
-
-        FlashInfo getPreviousRequestFlashInfo() {
-            return previousRequestFlashInfo;
-        }
-
-        void setPreviousRequestFlashInfo(FlashInfo thisRequestFlashInfo) {
-            this.previousRequestFlashInfo = thisRequestFlashInfo;
-        }
-
-        FlashInfo getNextRequestFlashInfo() {
-            return nextRequestFlashInfo;
-        }
-
-        FlashInfo getNextRequestFlashInfo(ELFlash flash, boolean create) {
-            if (create && null == nextRequestFlashInfo) {
-                nextRequestFlashInfo = new FlashInfo();
-                nextRequestFlashInfo.setSequenceNumber(flash.getNewSequenceNumber());
-                nextRequestFlashInfo.setLifetimeMarker(LifetimeMarker.FirstTimeThru);
-                nextRequestFlashInfo.setIsRedirect(false);
-                // put it in the flash
-                Map<String, Object> flashMap = null;
-                innerMap.put(nextRequestFlashInfo.getSequenceNumber() + "",
-                        flashMap = new HashMap<String, Object>());
-                nextRequestFlashInfo.setFlashMap(flashMap);
-            }
-            return nextRequestFlashInfo;
-        }
-
-        void setNextRequestFlashInfo(FlashInfo nextRequestFlashInfo) {
-            this.nextRequestFlashInfo = nextRequestFlashInfo;
-        }
-
-        boolean isIncomingCookieCameFromRedirect() {
-            return incomingCookieCameFromRedirect;
-        }
-
-        void setIncomingCookieCameFromRedirect(boolean incomingCookieCameFromRedirect) {
-            this.incomingCookieCameFromRedirect = incomingCookieCameFromRedirect;
-        }
-
-    }
-
-    /**
-     * <p>Encapsulate one of the two maps that back the flash for the
-     * current request.</p>
-     */
-    private static final class FlashInfo {
-
-	/**
-	 * <p>Set to true by the Flash when the extContext tells us
-	 * there is a redirect.</p>
-	 */
-        private boolean isRedirect;
-
-	/**
-	 * <p>How many times has this map been through the lifecycle?</p>
-	 */
-        private LifetimeMarker lifetimeMarker;
-
-	/**
-	 * <p>Application Unique key in the innerMap.</p>
-	 */
-
-        private long sequenceNumber;
-
-	/**
-	 * <p>The Map that stores the data. This map itself is stored in
-	 * innerMap under the key given by the value of
-	 * sequenceNumber.</p>
-	 */
-        private Map<String, Object> flashMap;
-
-        private FlashInfo() {
-
-        }
-
-        FlashInfo(long sequenceNumber, LifetimeMarker lifetimeMarker,
-                boolean isRedirect) {
-            setSequenceNumber(sequenceNumber);
-            setLifetimeMarker(lifetimeMarker);
-            setIsRedirect(isRedirect);
-        }
-
-        FlashInfo copyWithoutInnerMap()  {
-            FlashInfo result = new FlashInfo(this.sequenceNumber, 
-                    this.lifetimeMarker, this.isRedirect);
-
-            return result;
-        }
-
-        @Override
-        public boolean equals(Object obj) {
-            if (obj == null) {
-                return false;
-            }
-            if (getClass() != obj.getClass()) {
-                return false;
-            }
-            final FlashInfo other = (FlashInfo) obj;
-            if (this.isRedirect != other.isRedirect) {
-                return false;
-            }
-            if (this.lifetimeMarker != other.lifetimeMarker && (this.lifetimeMarker == null || !this.lifetimeMarker.equals(other.lifetimeMarker))) {
-                return false;
-            }
-            if (this.sequenceNumber != other.sequenceNumber) {
-                return false;
-            }
-            return true;
-        }
-
-        @Override
-        public int hashCode() {
-            int hash = 7;
-            hash = 71 * hash + (this.isRedirect ? 1 : 0);
-            hash = 71 * hash + (this.lifetimeMarker != null ? this.lifetimeMarker.hashCode() : 0);
-            hash = 71 * hash + (int) (this.sequenceNumber ^ (this.sequenceNumber >>> 32));
-            return hash;
-        }
-
-        
-
-        void decode(String value) {
-            if (null == value || 0 == value.length()) {
-
-                // PENDING(edburns): REMOVE THIS
-                return;
-            }
-
-            int i = value.indexOf('X');
-
-            // decode the sequence number
-            setSequenceNumber(Long.parseLong(value.substring(0, i++)));
-
-            // decode the lifetime marker
-            setLifetimeMarker(LifetimeMarker.decode(value.charAt(i++)));
-            
-            // decode the redirect flag
-            setIsRedirect(LifetimeMarker.IsRedirect ==
-                    LifetimeMarker.decode(value.charAt(i++)));
-        }
-
-        String encode() {
-            String value = null;
-
-            // The cookie value is an encoding of the sequence number, the
-            // lifetime marker, and the redirect flag
-            if (isIsRedirect()) {
-                value = Long.toString(getSequenceNumber()) + "X" +
-                        getLifetimeMarker().encode() +
-                        LifetimeMarker.IsRedirect.encode();
-            } else {
-                value = Long.toString(getSequenceNumber()) + "X" +
-                        getLifetimeMarker().encode() +
-                        LifetimeMarker.IsNormal.encode();
-            }
-
-            return value;
-        }
-
-        boolean isIsRedirect() {
-            return isRedirect;
-        }
-
-        void setIsRedirect(boolean isRedirect) {
-            this.isRedirect = isRedirect;
-        }
-
-        long getSequenceNumber() {
-            return sequenceNumber;
-        }
-
-        void setSequenceNumber(long sequenceNumber) {
-            this.sequenceNumber = sequenceNumber;
-        }
-
-        LifetimeMarker getLifetimeMarker() {
-            return lifetimeMarker;
-        }
-
-        void setLifetimeMarker(LifetimeMarker lifetimeMarker) {
-            this.lifetimeMarker = lifetimeMarker;
-        }
-
-        Map<String, Object> getFlashMap() {
-            return flashMap;
-        }
-
-        void setFlashMap(Map<String, Object> flashMap) {
-            this.flashMap = flashMap;
-        }
-
-        
-
-    }
-
-    // </editor-fold>
-
-
-}
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.context.flash;
+
+import com.sun.faces.config.WebConfiguration;
+import com.sun.faces.config.WebConfiguration.WebContextInitParameter;
+import static com.sun.faces.config.WebConfiguration.BooleanWebContextInitParameter.EnableDistributable;
+import com.sun.faces.facelets.tag.ui.UIDebug;
+import com.sun.faces.util.ByteArrayGuardAESCTR;
+import com.sun.faces.util.FacesLogger;
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+import java.net.URLEncoder;
+import java.security.InvalidKeyException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.atomic.AtomicLong;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.faces.application.FacesMessage;
+import javax.faces.component.UIViewRoot;
+import javax.faces.context.ExternalContext;
+import javax.faces.context.FacesContext;
+import javax.faces.context.Flash;
+import javax.faces.event.PhaseId;
+import javax.faces.event.PostKeepFlashValueEvent;
+import javax.faces.event.PostPutFlashValueEvent;
+import javax.faces.event.PreClearFlashEvent;
+import javax.faces.event.PreRemoveFlashValueEvent;
+import javax.servlet.http.Cookie;
+import javax.servlet.http.HttpServletRequest;
+
+/**
+ * <p>How this implementation works</p>
+
+ * <p>This class is an application singleton.  It has one ivar, 
+ * innerMap.  Entries are added to and removed from this map as needed
+ * according to how the flash scope is defined in the spec.  This
+ * implementation never touches the session, nor does it cause the
+ * session to be created.</p>
+
+ * <p>Most of the hairy logic is encapsulated with in the inner class
+ * PreviousNextFlashInfoManager.  An instance of this class is
+ * obtained by calling one of the variants of getCurrentFlashManager().
+ * When the instance is no longer needed for this request, call
+ * releaseCurrentFlashManager().</p>
+
+ * <p>Two very important methods are getPhaseMapForWriting() and
+ * getPhaseMapForReading().  These methods are the basis for the
+ * Map implementation methods.  Methods that need to write to the map
+ * use getPhaseMapForWriting(), those that need to read use
+ * getPhaseMapForReading().  These methods allow for the laziness that
+ * allows us to only incur a cost when the flash is actually written
+ * to.</p>
+
+ * <p>The operation of this class is intimately tied to the request
+ * processing lifecycle.  Let's break down every run thru the request
+ * processing lifecycle into two parts called "previous" and "next".  We
+ * use the names "previous" and "next" to indicate the persistence and
+ * timing of the data that is stored in the flash.  Consider two runs
+ * through the requset processing lifecle: N and N+1.  On request N,
+ * there is no "previous" request.  On Request N, any writes to the
+ * flash that happen during RENDER RESPONSE go to the "next" flash map.
+ * This means they are available for the ENTIRE run though the request
+ * processing lifecycle on request N+1.  Any entries put into the "next"
+ * flash map on request N will be expired at the end of request N+1.
+ * Now, when we get into request N+1 what was considered "next" on
+ * request N, is now called "previous" from the perspective of request
+ * N+1.  Any reads from the flash during request N+1 come from the
+ * "previous" map.  Any writes to the flash before RENDER RESPONSE go to
+ * the "previous" map.  Any writes to the flash during RENDER RESPNOSE
+ * go to the "next" map.</p>
+ */
+
+public class ELFlash extends Flash {
+
+    // <editor-fold defaultstate="collapsed" desc="ivars">
+
+    /**
+     * <p>Keys in this map are the string version of sequence numbers
+     * obtained via calls to {@link #getNewSequenceNumber}.  Values are
+     * the actual Map instances that back the actual Map methods on this
+     * class.  All writes to and reads from this map are done by the
+     * {@link PreviousNextFlashInfoManager} inner class.</p>
+     * 
+     */
+    private Map<String,Map<String, Object>> flashInnerMap = null;
+
+    private final AtomicLong sequenceNumber = new AtomicLong(0);
+
+    private int numberOfConcurentFlashUsers = Integer.
+     parseInt(WebContextInitParameter.NumberOfConcurrentFlashUsers.getDefaultValue());
+
+    private long numberOfFlashesBetweenFlashReapings = Long.
+     parseLong(WebContextInitParameter.NumberOfFlashesBetweenFlashReapings.getDefaultValue());
+    
+    private final boolean distributable;
+    
+    private ByteArrayGuardAESCTR guard;
+    
+    // </editor-fold>
+
+    // <editor-fold defaultstate="collapsed" desc="class vars">
+    
+    private static final String ELEMENT_TYPE_MISMATCH = "element-type-mismatch";
+    
+    private static final Logger LOGGER = FacesLogger.FLASH.getLogger();
+
+    /**
+     * <p>These constants are referenced from other source files in this
+     * package.  This one is a disambiguator prefix.</p>
+     */
+    static final String PREFIX = "csfcf";
+
+    /**
+     * <p>This constant is used as the key in the application map that
+     * stores the singleton ELFlash instance.</p>
+     */
+    static final String FLASH_ATTRIBUTE_NAME = PREFIX + "f";
+    
+    /**
+     * <p>This constant is used as the name of the cookie sent to the
+     * client.  The cookie is used to allow the flash scope to
+     * be used to support POST REDIRECT GET navigation.</p>
+     */
+    static final String FLASH_COOKIE_NAME = PREFIX + "c";
+
+
+    /**
+     * <p>This constant is used as the key the request map used, in the
+     * FlashELResolver, to convey the name of the property being
+     * accessed via 'now'.</p>
+     */
+    static final String FLASH_NOW_REQUEST_KEY = FLASH_ATTRIBUTE_NAME + "n";
+
+    private enum CONSTANTS {
+
+	/**
+	 * The key in the FacesContext attributes map (hereafter
+	 * referred to as contextMap) for the request scoped {@link
+	 * PreviousNextFlashInfoManager}.
+	 */
+
+        RequestFlashManager,
+
+	/**
+	 * At the beginning of every phase, we save the value of the
+	 * facesContext.getResponseComplete() into the contextMap under
+	 * this key.  We check this value after the phase to see if this
+	 * is the phase where the user called responseComplete().  This
+	 * is important to cover cases when the user does some funny
+	 * lifecycle stuff.
+	 */
+
+        SavedResponseCompleteFlagValue,
+
+        /**
+	 * This is used as the key in the flash itself to store the messages
+	 * if they are being tracked.
+	 */
+
+        FacesMessageAttributeName,
+
+        /**
+	 * This is used as the key in the flash itself to track whether or not
+	 * messages are being saved across request/response boundaries.
+	 */
+
+        KeepAllMessagesAttributeName,
+
+        /**
+         * This key is used in the contextMap to indicate that the next
+         * get should be treated as a keep.
+         *
+         */
+        KeepFlagAttributeName,
+
+        /**
+         * This key is used in the contextMap to prevent setting the cookie
+         * twice.
+         */
+        DidWriteCookieAttributeName,
+        
+        /**
+         * Force setMaxAge(0)
+         */
+        ForceSetMaxAgeZero,
+
+    }
+
+    // </editor-fold>
+
+    // <editor-fold defaultstate="collapsed" desc="Constructors and instance accessors">
+
+    /** Creates a new instance of ELFlash */
+    private ELFlash(ExternalContext extContext) {
+        flashInnerMap = new ConcurrentHashMap<String,Map<String, Object>>();
+        WebConfiguration config = WebConfiguration.getInstance(extContext);
+        String value;
+        try {
+            value = config.getOptionValue(WebContextInitParameter.NumberOfConcurrentFlashUsers);
+            numberOfConcurentFlashUsers = Integer.parseInt(value);
+        } catch (NumberFormatException nfe) {
+	    if (LOGGER.isLoggable(Level.WARNING)) {
+		LOGGER.log(Level.WARNING, "Unable to set number of concurrent flash users.  Defaulting to {0}", numberOfConcurentFlashUsers);
+	    }
+
+        }
+
+        try {
+            value = config.getOptionValue(WebContextInitParameter.NumberOfFlashesBetweenFlashReapings);
+            numberOfFlashesBetweenFlashReapings = Long.parseLong(value);
+        } catch (NumberFormatException nfe) {
+	    if (LOGGER.isLoggable(Level.WARNING)) {
+		LOGGER.log(Level.WARNING, "Unable to set number flashes between flash repaings.  Defaulting to {0}", numberOfFlashesBetweenFlashReapings);
+	    }
+
+        }
+        
+        distributable = config.isOptionEnabled(EnableDistributable);
+        
+        guard = new ByteArrayGuardAESCTR();
+
+    }
+
+    /**
+     * <p>Returns the flash <code>Map</code> for this application.  This is
+     * a convenience method that calls
+     * <code>FacesContext.getCurrentInstance()</code> and then calls the
+     * overloaded <code>getFlash()</code> that takes a
+     * <code>FacesContext</code> with it.</p>
+     * 
+     * @return The flash <code>Map</code> for this session.
+     */
+    
+    public static Map<String,Object> getFlash() {
+        FacesContext context = FacesContext.getCurrentInstance();
+        return getFlash(context.getExternalContext(), true);
+    }
+
+    /**
+     *
+     * @param extContext the <code>ExternalContext</code> for this request.
+     *
+     * @param create <code>true</code> to create a new instance for this request if 
+     * necessary; <code>false</code> to return <code>null</code> if there's no 
+     * instance in the current <code>session</code>.
+     * 
+     * @return The flash <code>Map</code> for this session.
+     */
+    
+    static ELFlash getFlash(ExternalContext extContext, boolean create) {
+        Map<String, Object> appMap = extContext.getApplicationMap();
+        ELFlash flash = (ELFlash) 
+            appMap.get(FLASH_ATTRIBUTE_NAME);
+        if (null == flash && create) {
+            synchronized (extContext.getContext()) {
+                if (null == (flash = (ELFlash)
+                        appMap.get(FLASH_ATTRIBUTE_NAME))) {
+                    flash = new ELFlash(extContext);
+                    appMap.put(FLASH_ATTRIBUTE_NAME, flash);
+                }
+            }            
+        }
+            
+        // If we are in a clustered environment, store a helper to ensure
+        // our innerMap gets successfully replicated
+        if (null != appMap.get(EnableDistributable.getQualifiedName())) {
+            synchronized (extContext.getContext()) {            
+                SessionHelper sessionHelper = 
+                        SessionHelper.getInstance(extContext);
+                if (null == sessionHelper) {
+                    sessionHelper = new SessionHelper();
+                }
+                sessionHelper.update(extContext, flash);
+            }
+        }
+        return flash;
+    }
+    
+    // </editor-fold>
+
+    // <editor-fold defaultstate="collapsed" desc="Abstract class overrides">
+
+    
+    public boolean isKeepMessages() {
+        boolean result = false;
+        Map<String, Object> phaseMap;
+
+        if (null != (phaseMap = loggingGetPhaseMapForReading(false))) {
+            Object value = phaseMap.get(CONSTANTS.KeepAllMessagesAttributeName.toString());
+            result = (null != value) ? (Boolean) value : false;
+        }
+        
+        return result;
+    }
+    
+    
+    public void setKeepMessages(boolean newValue) {
+
+        loggingGetPhaseMapForWriting(false).put(CONSTANTS.KeepAllMessagesAttributeName.toString(),
+                Boolean.valueOf(newValue));
+
+    }
+    
+    
+    public boolean isRedirect() {
+        boolean result = false;
+
+        FacesContext context = FacesContext.getCurrentInstance();
+        Map<Object, Object> contextMap = context.getAttributes();
+        PreviousNextFlashInfoManager flashManager;
+        if (null != (flashManager = getCurrentFlashManager(contextMap, false))) {
+            result = flashManager.getPreviousRequestFlashInfo().isIsRedirect();
+        }
+
+        return result;
+    }
+    
+
+    // PENDING(edburns): I'm going to make an entry to the errata.  This
+    // method can't be implemented because the decision of whether or
+    // not to redirect is made by the navigationHandler.
+    public void setRedirect(boolean newValue) {
+    }
+
+    // </editor-fold>
+
+    // <editor-fold defaultstate="collapsed" desc="Map overrides">
+
+    
+    @SuppressWarnings(ELEMENT_TYPE_MISMATCH)
+    public Object get(Object key) {
+        Object result = null;
+
+        FacesContext context = FacesContext.getCurrentInstance();
+        if (null != key) {
+            if (key.equals("keepMessages")) {
+                result = this.isKeepMessages();
+            } else if (key.equals("redirect")) {
+                result = this.isRedirect();
+            } else {
+                if (isKeepFlagSet(context)) {
+                    result = getPhaseMapForReading().get(key);
+                    keep(key.toString());
+                    clearKeepFlag(context);
+                    return result;
+                }
+
+            }
+
+        }
+        
+        if (null == result) {
+            result = getPhaseMapForReading().get(key);
+        }
+        if (distributable) {
+            SessionHelper sessionHelper = 
+                    SessionHelper.getInstance(context.getExternalContext());
+            assert(null != sessionHelper);
+            sessionHelper.update(context.getExternalContext(), this);
+        }
+
+        if (LOGGER.isLoggable(Level.FINEST)) {
+            LOGGER.log(Level.FINEST, "get({0}) = {1}", new Object [] { key, result});
+        }
+
+        return result;
+    }
+
+
+    public Object put(String key, Object value) {
+        Boolean b = null;
+        Object result = null;
+        boolean wasSpecialPut = false;
+
+        if (null != key) {
+            if (key.equals("keepMessages")) {
+                this.setKeepMessages(b = Boolean.parseBoolean((String) value));
+                wasSpecialPut = true;
+            }
+            if (key.equals("redirect")) {
+                this.setRedirect(b = Boolean.parseBoolean((String) value));
+                wasSpecialPut = true;
+            }
+        }
+        FacesContext context = FacesContext.getCurrentInstance();
+        if (!wasSpecialPut) {
+            result = (null == b) ? getPhaseMapForWriting().put(key, value) : b;
+            if (LOGGER.isLoggable(Level.FINEST)) {
+                LOGGER.log(Level.FINEST, "put({0},{1})", new Object [] { key, value});
+            }
+            context.getApplication().publishEvent(context, PostPutFlashValueEvent.class, key);
+        }
+        if (distributable) {
+            SessionHelper sessionHelper = 
+                    SessionHelper.getInstance(context.getExternalContext());
+            assert(null != sessionHelper);
+            sessionHelper.update(context.getExternalContext(), this);
+        }
+        
+        return result;
+    }
+
+    @SuppressWarnings(ELEMENT_TYPE_MISMATCH)
+    public Object remove(Object key) {
+        Object result = null;
+
+        FacesContext context = FacesContext.getCurrentInstance();
+        context.getApplication().publishEvent(context, PreRemoveFlashValueEvent.class, key);
+        result = getPhaseMapForWriting().remove(key);
+
+        return result;
+    }
+
+    
+    @SuppressWarnings(ELEMENT_TYPE_MISMATCH)
+    public boolean containsKey(Object key) {
+        boolean result = false;
+
+        result = getPhaseMapForReading().containsKey(key);
+
+        return result;
+    }
+
+    
+    public boolean containsValue(Object value) {
+        boolean result = false;
+
+        result = getPhaseMapForReading().containsValue(value);
+
+        return result;
+    }
+
+    
+    public void putAll(Map<? extends String, ?> t) {
+
+        getPhaseMapForWriting().putAll(t);
+
+    }
+
+    
+    public Collection<Object> values() {
+        Collection<Object> result = null;
+
+        result = getPhaseMapForReading().values();
+
+        return result;
+    }
+
+    
+    public int size() {
+        int result = 0;
+
+        result = getPhaseMapForReading().size();
+
+        return result;
+    }
+
+    
+    public void clear() {
+
+        getPhaseMapForWriting().clear();
+
+    }
+
+    
+    @SuppressWarnings({"CloneDoesntCallSuperClone"})
+    @Override
+    protected Object clone() throws CloneNotSupportedException {
+        throw new CloneNotSupportedException();
+    }
+
+    
+    public Set<Map.Entry<String, Object>> entrySet() {
+        Set<Map.Entry<String, Object>> 
+                readingMapEntrySet = getPhaseMapForReading().entrySet(),
+                writingMapEntrySet = getPhaseMapForWriting().entrySet(),
+                result = null;
+
+        result = new HashSet<Map.Entry<String, Object>>();
+        result.addAll(readingMapEntrySet);
+        result.addAll(writingMapEntrySet);
+
+        return result;
+    }
+
+    
+    public boolean isEmpty() {
+        boolean 
+                readingMapIsEmpty = getPhaseMapForReading().isEmpty(),
+                writingMapIsEmpty = getPhaseMapForWriting().isEmpty(),
+                result = false;
+
+        result = readingMapIsEmpty && writingMapIsEmpty;
+
+        return result;
+    }
+
+    
+    public Set<String> keySet() {
+        Set<String>
+                readingMapKeySet = getPhaseMapForReading().keySet(),
+                writingMapKeySet = getPhaseMapForWriting().keySet(),
+                result = null;
+
+        result = new HashSet<String>();
+        result.addAll(readingMapKeySet);
+        result.addAll(writingMapKeySet);
+
+        return result;
+    }
+
+    // </editor-fold>
+
+    // <editor-fold defaultstate="collapsed" desc="Flash overrides">
+
+    
+    public void keep(String key) {
+        FacesContext context = FacesContext.getCurrentInstance();
+        Map<String, Object> requestMap = context.getExternalContext().getRequestMap();
+        Map<Object, Object> contextMap = context.getAttributes();
+        PreviousNextFlashInfoManager flashManager;
+        if (null != (flashManager = getCurrentFlashManager(contextMap, true))) {
+            Object toKeep;
+
+            if (null == (toKeep = requestMap.remove(key))) {
+                FlashInfo flashInfo = null;
+                if (null != (flashInfo = flashManager.getPreviousRequestFlashInfo())) {
+                    toKeep = flashInfo.getFlashMap().remove(key);
+                }
+            }
+
+            if (null != toKeep) {
+                getPhaseMapForWriting().put(key, toKeep);
+                context.getApplication().publishEvent(context, PostKeepFlashValueEvent.class, key);
+
+            }
+        }
+
+
+    }
+
+    
+    public void putNow(String key, Object value) {
+        FacesContext context = FacesContext.getCurrentInstance();
+        Map<Object, Object> contextMap = context.getAttributes();
+        PreviousNextFlashInfoManager flashManager;
+        if (null != (flashManager = getCurrentFlashManager(contextMap, true))) {
+            FlashInfo flashInfo = null;
+            if (null != (flashInfo = flashManager.getPreviousRequestFlashInfo())) {
+                flashInfo.getFlashMap().put(key, value);
+            }
+        }
+    }
+    
+    public void doPrePhaseActions(FacesContext context) {
+        PhaseId currentPhase = context.getCurrentPhaseId();
+        Map<Object, Object> contextMap = context.getAttributes();
+        contextMap.put(CONSTANTS.SavedResponseCompleteFlagValue,
+                context.getResponseComplete());
+
+        if (currentPhase.equals(PhaseId.RESTORE_VIEW)) {
+            Cookie cookie = null;
+
+            if (null != (cookie = getCookie(context.getExternalContext()))) {
+                getCurrentFlashManager(context, contextMap, cookie);
+            }
+
+            if (this.isKeepMessages()) {
+                this.restoreAllMessages(context);
+            }
+        }
+    }
+
+    public void doPostPhaseActions(FacesContext context) {
+        if (context.getAttributes().containsKey(ACT_AS_DO_LAST_PHASE_ACTIONS)) {
+            Boolean outgoingResponseIsRedirect = 
+                    (Boolean) context.getAttributes().get(ACT_AS_DO_LAST_PHASE_ACTIONS);
+            doLastPhaseActions(context, outgoingResponseIsRedirect);
+            return;
+        }
+        
+        PhaseId currentPhase = context.getCurrentPhaseId();
+        Map<Object, Object> contextMap = context.getAttributes();
+        boolean
+                responseCompleteJustSetTrue = responseCompleteWasJustSetTrue(context, contextMap),
+                lastPhaseForThisRequest = responseCompleteJustSetTrue ||
+                                          currentPhase == PhaseId.RENDER_RESPONSE;
+        if (lastPhaseForThisRequest) {
+            doLastPhaseActions(context, false);
+        }
+    }
+    
+    public static final String ACT_AS_DO_LAST_PHASE_ACTIONS = 
+            ELFlash.class.getPackage().getName() + ".ACT_AS_DO_LAST_PHASE_ACTIONS";
+
+    /**
+     * <p>This is the most magic of methods.  There are several scenarios
+     * in which this method can be called, but the first time it is
+     * called for a request it takes action, while on subsequent times
+     * it returns without taking action.  This is due to the call to
+     * {@link #releaseCurrentFlashManager}.  After this call, any calls
+     * to {@link #getCurrentFlashManager} will return null.</p>
+
+     * <p>Scenario 1: normal request ending.  This will be called after
+     * the RENDER_RESPONSE phase executes.  outgoingResponseIsRedirect will be false.</p>
+
+     * <p>Scenario 2: navigationHandler asks extContext for redirect.
+     * In this case, extContext calls this method directly,
+     * outgoingResponseIsRedirect will be true.</p>
+
+     * <p>Scenario 3: extContext.flushBuffer(): As far as I can tell,
+     * this is only called in the JSP case, but it's good to call it
+     * from there anyway, because we need to write our cookie before the
+     * response is committed.  outgoingResponseIsRedirect is false.</p>
+
+     * <p>Scenario 4: after rendering the response in JSP, but before
+     * the buffer is flushed.  In the JSP case, I've found this necessary
+     * because the call to extContext.flushBuffer() is too late, the
+     * response has already been committed by that
+     * point. outgoingResponseIsRedirect is false.</p>
+     */
+
+    public void doLastPhaseActions(FacesContext context, boolean outgoingResponseIsRedirect) {
+        Map<Object, Object> contextMap = context.getAttributes();
+        PreviousNextFlashInfoManager flashManager = getCurrentFlashManager(contextMap, false);
+        if (null == flashManager) {
+            return;
+        }
+        if (this.isKeepMessages()) {
+            this.saveAllMessages(context);
+        }
+        releaseCurrentFlashManager(contextMap);
+
+	// What we do in this if-else statement has consequences for
+	// PreviousNextFlashInfoManager.decode().
+        
+        if (outgoingResponseIsRedirect) {
+            FlashInfo previousRequestFlashInfo = flashManager.getPreviousRequestFlashInfo();
+	    // Next two methods are VITALLY IMPORTANT!
+            previousRequestFlashInfo.setIsRedirect(true);
+            flashManager.expireNext_MovePreviousToNext();
+        } else {
+            FlashInfo flashInfo = flashManager.getPreviousRequestFlashInfo();
+            if (null != flashInfo && flashInfo.getLifetimeMarker() ==
+                LifetimeMarker.SecondTimeThru) {
+                flashManager.expirePrevious();
+            }
+        }
+        if (LOGGER.isLoggable(Level.FINEST)) {
+            LOGGER.log(Level.FINEST, "---------------------------------------");
+        }
+
+
+        setCookie(context, flashManager, flashManager.encode());
+
+    }
+
+    // </editor-fold>
+    
+    // <editor-fold defaultstate="collapsed" desc="Helpers">
+    
+    void setFlashInnerMap(Map<String,Map<String, Object>> flashInnerMap) {
+        this.flashInnerMap = flashInnerMap;
+    }
+    
+    Map<String, Map<String,Object>> getFlashInnerMap() {
+        return flashInnerMap;
+    }
+    
+    public String toString() {
+        StringBuilder builder = new StringBuilder();
+        builder.append("[\n");
+        for (Map.Entry<String, Object> entry : this.entrySet()) {
+            builder.append("{").append(entry.getKey()).append(", ").append(entry.getValue()).append("}\n");
+        }
+        builder.append("]\n");
+        return builder.toString();
+    }
+
+    private void maybeWriteCookie(FacesContext context,
+            PreviousNextFlashInfoManager flashManager) {
+        FlashInfo flashInfo = flashManager.getPreviousRequestFlashInfo();
+        if (null != flashInfo && flashInfo.getLifetimeMarker() ==
+            LifetimeMarker.SecondTimeThru) {
+            PreviousNextFlashInfoManager copiedFlashManager =
+                    flashManager.copyWithoutInnerMap();
+            copiedFlashManager.expirePrevious();
+            setCookie(context, flashManager,
+                    copiedFlashManager.encode());
+        }
+    }
+
+
+    static void setKeepFlag(FacesContext context) {
+        context.getAttributes().put(CONSTANTS.KeepFlagAttributeName, Boolean.TRUE);
+    }
+
+    void clearKeepFlag(FacesContext context) {
+        context.getAttributes().remove(CONSTANTS.KeepFlagAttributeName);
+    }
+
+    boolean isKeepFlagSet(FacesContext context) {
+        return Boolean.TRUE ==
+                context.getAttributes().get(CONSTANTS.KeepFlagAttributeName);
+    }
+
+
+
+    private long getNewSequenceNumber() {
+        long result = sequenceNumber.incrementAndGet();
+
+        if (0 == result % numberOfFlashesBetweenFlashReapings) {
+            reapFlashes();
+        }
+
+        if (result == Long.MAX_VALUE) {
+            result = 1;
+            sequenceNumber.set(1);
+        }
+
+        return result;
+    }
+
+    private void reapFlashes() {
+
+        if (flashInnerMap.size() < numberOfConcurentFlashUsers) {
+            return;
+        }
+        
+        Set<String> keys = flashInnerMap.keySet();
+            long
+                    sequenceNumberToTest,
+                    currentSequenceNumber = sequenceNumber.get();
+        Map<String, Object> curFlash;
+        for (String cur : keys) {
+            sequenceNumberToTest = Long.parseLong(cur);
+            if (numberOfConcurentFlashUsers < currentSequenceNumber - sequenceNumberToTest) {
+                if (null != (curFlash = flashInnerMap.get(cur))) {
+                    curFlash.clear();
+                }
+                flashInnerMap.remove(cur);
+            }
+        }
+        if (distributable) {
+            ExternalContext extContext = FacesContext.getCurrentInstance().getExternalContext();
+            SessionHelper sessionHelper = SessionHelper.getInstance(extContext);
+            if (null != sessionHelper) {
+                sessionHelper.remove(extContext);
+                sessionHelper = new SessionHelper();
+                sessionHelper.update(extContext, this);
+            }
+        }        
+    }
+
+    private boolean responseCompleteWasJustSetTrue(FacesContext context,
+            Map<Object, Object> contextMap) {
+        boolean result = false;
+
+        // If it was false, but it's now true, return true
+        result = (Boolean.FALSE == contextMap.get(CONSTANTS.SavedResponseCompleteFlagValue) &&
+                 context.getResponseComplete());
+
+        return result;
+    }
+
+    private static String getLogPrefix(FacesContext context) {
+        StringBuilder result = new StringBuilder();
+        ExternalContext extContext = context.getExternalContext();
+        Object request = extContext.getRequest();
+        if (request instanceof HttpServletRequest) {
+            result.append(((HttpServletRequest)request).getMethod()).append(" ");
+        }
+        UIViewRoot root = context.getViewRoot();
+        if (null != root) {
+            String viewId = root.getViewId();
+            if (null != viewId) {
+                result.append(viewId).append(" ");
+            }
+        }
+
+        return result.toString();
+    }
+
+    private Map<String, Object> loggingGetPhaseMapForWriting(boolean loggingEnabled) {
+        FacesContext context = FacesContext.getCurrentInstance();
+        Map<String, Object> result = null;
+        PhaseId currentPhase = context.getCurrentPhaseId();
+        Map<Object, Object> contextMap = context.getAttributes();
+
+        PreviousNextFlashInfoManager flashManager;
+        if (null != (flashManager = getCurrentFlashManager(contextMap, true))) {
+            FlashInfo flashInfo;
+            boolean isDebugLog = loggingEnabled && LOGGER.isLoggable(Level.FINEST);
+
+            if (currentPhase.getOrdinal() < PhaseId.RENDER_RESPONSE.getOrdinal()) {
+                flashInfo = flashManager.getPreviousRequestFlashInfo();
+                if (isDebugLog) {
+                    LOGGER.log(Level.FINEST, "{0}previous[{1}]",
+                            new Object[]{getLogPrefix(context),
+                                flashInfo.getSequenceNumber()});
+                }
+            } else {
+                flashInfo = flashManager.getNextRequestFlashInfo(this, true);
+                if (isDebugLog) {
+                    LOGGER.log(Level.FINEST, "{0}next[{1}]",
+                            new Object[]{getLogPrefix(context),
+                                flashInfo.getSequenceNumber()});
+                }
+                maybeWriteCookie(context, flashManager);
+            }
+            result = flashInfo.getFlashMap();
+        }
+
+        return result;
+
+    }
+
+    /**
+     * <p>If the current phase is earlier than RENDER_RESPONSE, return
+     * the map for the "previous" request.  Otherwise, return the map
+     * for the "next" request.  Note that we use
+     * getCurrentFlashManager(contextMap,true).  This is because if this
+     * method is being called, we know we actually need the map, so we
+     * have to ensure the underlying data structure is present before
+     * trying to access it.</p>
+     */
+
+    private Map<String, Object> getPhaseMapForWriting() {
+        return loggingGetPhaseMapForWriting(true);
+    }
+
+
+    private Map<String, Object> loggingGetPhaseMapForReading(boolean loggingEnabled) {
+        FacesContext context = FacesContext.getCurrentInstance();
+        Map<String, Object> result = Collections.emptyMap();
+        Map<Object, Object> contextMap = context.getAttributes();
+
+        PreviousNextFlashInfoManager flashManager;
+        if (null != (flashManager = getCurrentFlashManager(contextMap, false))) {
+            FlashInfo flashInfo;
+
+            if (null != (flashInfo = flashManager.getPreviousRequestFlashInfo())) {
+                boolean isDebugLog = loggingEnabled && LOGGER.isLoggable(Level.FINEST);
+                if (isDebugLog) {
+                    LOGGER.log(Level.FINEST, "{0}previous[{1}]",
+                            new Object[]{getLogPrefix(context),
+                                flashInfo.getSequenceNumber()});
+                }
+
+                result = flashInfo.getFlashMap();
+            }
+        }
+
+        return result;
+    }
+
+    /**
+     * <p>Always return the map for the "previous" request.  Note that
+     * we use getCurrentFlashManager(contextMap,false).  This is because
+     * if this method is being called, and there is pre-existing data in
+     * the flash from a previous write, then the
+     * PreviousNextFlashInfoManager will already have been created.  If
+     * there is not pre-existing data, we don't create the
+     * PreviousNextFlashInfoManager, and therefore just return the empty
+     * map.</p>
+     */
+
+    private Map<String, Object> getPhaseMapForReading() {
+        return loggingGetPhaseMapForReading(true);
+    }
+
+    void saveAllMessages(FacesContext context) {
+        // take no action on the GET that comes after a REDIRECT
+        Map<Object, Object> contextMap = context.getAttributes();
+        PreviousNextFlashInfoManager flashManager;
+        if (null == (flashManager = getCurrentFlashManager(contextMap, true))) {
+            return;
+        }
+        if (flashManager.getPreviousRequestFlashInfo().isIsRedirect()) {
+            return;
+        }
+
+        Iterator<String> messageClientIds = context.getClientIdsWithMessages();
+        List<FacesMessage> facesMessages;
+        Map<String, List<FacesMessage>> allFacesMessages = null;
+        Iterator<FacesMessage> messageIter;
+        String curMessageId;
+
+        // Save all the FacesMessages into a Map, which we store in the flash.
+
+        // Step 1, go through the FacesMessage instances for each clientId
+        // in the messageClientIds list.
+        while (messageClientIds.hasNext()) {
+            curMessageId = messageClientIds.next();
+            // Get the messages for this clientId
+            messageIter = context.getMessages(curMessageId);
+            facesMessages = new ArrayList<FacesMessage>();
+            while (messageIter.hasNext()) {
+                facesMessages.add(messageIter.next());
+            }
+            // Add the list to the map
+            if (null == allFacesMessages) {
+                allFacesMessages = new HashMap<String, List<FacesMessage>>();
+            }
+            allFacesMessages.put(curMessageId, facesMessages);
+        }
+        facesMessages = null;
+
+        // Step 2, go through the FacesMessages that do not have a client
+        // id associated with them.
+        messageIter = context.getMessages(null);
+        // Make sure to overwrite the previous facesMessages list
+        facesMessages = new ArrayList<FacesMessage>();
+        while (messageIter.hasNext()) {
+            facesMessages.add(messageIter.next());
+        }
+        if (null != facesMessages) {
+            // Add the list to the map
+            if (null == allFacesMessages) {
+                allFacesMessages = new HashMap<String, List<FacesMessage>>();
+            }
+            allFacesMessages.put(null, facesMessages);
+        }
+        getPhaseMapForWriting().put(CONSTANTS.FacesMessageAttributeName.toString(),
+                allFacesMessages);
+
+    }
+
+    @SuppressWarnings(ELEMENT_TYPE_MISMATCH)
+    void restoreAllMessages(FacesContext context) {
+        Map<String, List<FacesMessage>> allFacesMessages;
+        Map<String, Object> phaseMap = getPhaseMapForReading();
+        List<FacesMessage> facesMessages;
+
+
+        if (null != (allFacesMessages = (Map<String, List<FacesMessage>>)
+                phaseMap.get(CONSTANTS.FacesMessageAttributeName.toString()))) {
+            for (Map.Entry<String, List<FacesMessage>> cur : allFacesMessages.entrySet()) {
+                if (null != (facesMessages = allFacesMessages.get(cur.getKey()))) {
+                    for (FacesMessage curMessage : facesMessages) {
+                        context.addMessage(cur.getKey(), curMessage);
+                    }
+                }
+            }
+            phaseMap.remove(CONSTANTS.FacesMessageAttributeName.toString());
+        }
+    }
+
+
+    /**
+     * <p>Return the cookie that came from the browser, if any.</p>
+     */
+    private Cookie getCookie(ExternalContext extContext) {
+        Cookie result = null;
+
+        result = (Cookie) extContext.getRequestCookieMap().get(FLASH_COOKIE_NAME);
+
+        return result;
+    }
+
+    /** 
+     * <p>Set the cookie iff the response was not yet committed.  If the response
+     * was committed, log a warning.</p>
+     */
+
+    private void setCookie(FacesContext context, 
+            PreviousNextFlashInfoManager flashManager,
+            Cookie toSet) {
+        Map<Object, Object> contextMap = context.getAttributes();
+        ExternalContext extContext = context.getExternalContext();
+        if (contextMap.containsKey(CONSTANTS.DidWriteCookieAttributeName)) {
+            return;
+        }
+        FlashInfo
+                nextFlash = flashManager.getNextRequestFlashInfo(),
+                prevFlash = flashManager.getPreviousRequestFlashInfo();
+        if (context.getAttributes().containsKey(CONSTANTS.ForceSetMaxAgeZero)) {
+            removeCookie(extContext, toSet);
+            return;
+        }
+
+        // Don't try to write the cookie unless there is data in the flash.
+        if ((null != nextFlash && !nextFlash.getFlashMap().isEmpty()) ||
+            (null != prevFlash && !prevFlash.getFlashMap().isEmpty())) {
+            if (extContext.isResponseCommitted()) {
+                if (LOGGER.isLoggable(Level.WARNING)) {
+                    LOGGER.log(Level.WARNING,
+                            "jsf.externalcontext.flash.response.already.committed");
+                }
+            } else {
+                Map<String, Object> properties = new HashMap();
+                Object val;
+                
+                if (null != (val = toSet.getComment())) {
+                    properties.put("comment", val);
+                }
+                if (null != (val = toSet.getDomain())) {
+                    properties.put("domain", val);
+                }
+                if (null != (val = toSet.getMaxAge())) {
+                    properties.put("maxAge", val);
+                }
+                if (extContext.isSecure()) {
+                    properties.put("secure", Boolean.TRUE);
+                } else if (null != (val = toSet.getSecure())) {
+                    properties.put("secure", val);
+                }
+                if (null != (val = toSet.getPath())) {
+                    properties.put("path", val);
+                }
+                properties.put("httpOnly", Boolean.TRUE);
+                extContext.addResponseCookie(toSet.getName(), toSet.getValue(), 
+                        !properties.isEmpty() ? properties : null);
+                properties = null;
+            }
+            contextMap.put(CONSTANTS.DidWriteCookieAttributeName, Boolean.TRUE);
+        } else {
+            removeCookie(extContext, toSet);
+        }
+    }
+    
+    private void removeCookie(ExternalContext extContext, Cookie toRemove) {
+        if (extContext.isResponseCommitted()) {
+            return;
+        }
+        Map<String, Object> properties = new HashMap();
+        Object val;
+        toRemove.setMaxAge(0);
+        
+        if (null != (val = toRemove.getComment())) {
+            properties.put("comment", val);
+        }
+        if (null != (val = toRemove.getDomain())) {
+            properties.put("domain", val);
+        }
+        if (null != (val = toRemove.getMaxAge())) {
+            properties.put("maxAge", val);
+        }
+        if (extContext.isSecure()) {
+            properties.put("secure", Boolean.TRUE);
+        } else if (null != (val = toRemove.getSecure())) {
+            properties.put("secure", val);
+        }
+        if (null != (val = toRemove.getPath())) {
+            properties.put("path", val);
+        }
+        properties.put("httpOnly", Boolean.TRUE);
+        extContext.addResponseCookie(toRemove.getName(), toRemove.getValue(), 
+                !properties.isEmpty() ? properties : null);
+        properties = null;           
+        
+    }
+
+    // </editor-fold>
+
+    // <editor-fold defaultstate="collapsed" desc="Inner classes">
+
+    private enum LifetimeMarker {
+
+        // these must be unique
+        
+        FirstTimeThru("f"),
+        SecondTimeThru("s"),
+        IsRedirect("r"),
+        IsNormal("n");
+
+        private static char FIRST_TIME_THRU = 'f';
+        private static char SECOND_TIME_THRU = 's';
+        private static char IS_REDIRECT = 'r';
+        private static char IS_NORMAL = 'n';
+
+        private String name;
+
+        private LifetimeMarker(String name) {
+            this.name = name;
+        }
+
+        @Override
+        public String toString() {
+            return name;
+        }
+        
+        public char encode() {
+            return name.charAt(0);
+        }
+
+        public static LifetimeMarker decode(char c) {
+            LifetimeMarker result = FirstTimeThru;
+
+            if (FIRST_TIME_THRU == c) {
+                result = FirstTimeThru;
+            } else if (SECOND_TIME_THRU == c) {
+                result = SecondTimeThru;
+            } else if (IS_REDIRECT == c) {
+                result = IsRedirect;
+            } else if (IS_NORMAL == c) {
+                result = IsNormal;
+            } else {
+                throw new IllegalStateException("class invariant failed: invalid lifetime marker");
+            }
+
+            return result;
+        }
+                
+    }
+
+    private void releaseCurrentFlashManager(Map<Object, Object> contextMap) {
+        contextMap.remove(CONSTANTS.RequestFlashManager);
+    }
+
+    /**
+     * <p>Called when you need to get access to the flashManager.  If
+     * argument create is true, and no instance of the FlashManager
+     * exists for this request, create it and store it in the
+     * contextMap.</p>
+     */
+    private PreviousNextFlashInfoManager getCurrentFlashManager(Map<Object, Object> contextMap,
+            boolean create) {
+        PreviousNextFlashInfoManager result = (PreviousNextFlashInfoManager)
+                contextMap.get(CONSTANTS.RequestFlashManager);
+
+        if (null == result && create) {
+            result = new PreviousNextFlashInfoManager(guard, flashInnerMap);
+            result.initializeBaseCase(this);
+            contextMap.put(CONSTANTS.RequestFlashManager, result);
+
+        }
+        return result;
+    }
+
+    /**
+     * <p>Called on the preRestoreView phase if the browser sent us a
+     * cookie.  If no instance of the FlashManager exists for this
+     * request, create it and store it in the contextMap.</p>
+     */
+    private PreviousNextFlashInfoManager getCurrentFlashManager(FacesContext context,
+            Map<Object, Object> contextMap,
+            Cookie cookie) {
+        PreviousNextFlashInfoManager result = (PreviousNextFlashInfoManager)
+                contextMap.get(CONSTANTS.RequestFlashManager);
+
+        if (null == result) {
+            result = new PreviousNextFlashInfoManager(guard, flashInnerMap);
+            try {
+                result.decode(context, this, cookie);
+                contextMap.put(CONSTANTS.RequestFlashManager, result);
+            } catch (InvalidKeyException ike) {
+                contextMap.put(CONSTANTS.ForceSetMaxAgeZero, Boolean.TRUE);
+                if (LOGGER.isLoggable(Level.SEVERE)) {
+                    result = getCurrentFlashManager(contextMap, true);
+                    LOGGER.log(Level.SEVERE,
+                            "jsf.externalcontext.flash.bad.cookie",
+                            new Object [] { ike.getMessage() });
+                }
+                
+            }
+
+        }
+        return result;
+    }
+
+    /**
+     * <p>On any given request, there are actually two maps behind the
+     * flash.  Which one is actually used on a given Map method depends
+     * on the current lifecycle phase at the time the method is invoked.
+     * There is a "next" map, and a "previous" map.  This class manages
+     * the complexities of dealing with these two maps, and does so by
+     * relying on another inner class, FlashInfo.</p>
+
+     * <p>The "next" map is used in only one case, which happens to be a
+     * VERY common case: write operations to the flash that happen
+     * during render response.</p>
+
+     * <p>The "previous" map is used for write operations that happen
+     * before render response, and for all read operations.</p>
+
+     * <p>This class knows how to "decode" its state from an incoming
+     * cookie, written by a previous call to "encode".</p>
+
+     * <p>See the docs for FlashInfo for more information.</p>
+     */
+
+    private static final class PreviousNextFlashInfoManager {
+
+        private FlashInfo previousRequestFlashInfo;
+
+        private FlashInfo nextRequestFlashInfo;
+
+        private boolean incomingCookieCameFromRedirect = false;
+
+        private Map<String,Map<String, Object>> innerMap;
+        
+        private ByteArrayGuardAESCTR guard;
+
+        private PreviousNextFlashInfoManager(ByteArrayGuardAESCTR guard) {
+            this.guard = guard;
+        }
+
+        private PreviousNextFlashInfoManager(ByteArrayGuardAESCTR guard, Map<String,Map<String, Object>> innerMap) {
+            this.guard = guard;
+            this.innerMap = innerMap;
+        }
+
+        protected PreviousNextFlashInfoManager copyWithoutInnerMap() {
+            PreviousNextFlashInfoManager result = new PreviousNextFlashInfoManager(guard);
+            result.innerMap = Collections.emptyMap();
+            if (null != previousRequestFlashInfo) {
+                result.previousRequestFlashInfo = (FlashInfo)
+                     this.previousRequestFlashInfo.copyWithoutInnerMap();
+            }
+            if (null != nextRequestFlashInfo) {
+                result.nextRequestFlashInfo = (FlashInfo)
+                     this.nextRequestFlashInfo.copyWithoutInnerMap();
+            }
+            result.incomingCookieCameFromRedirect = this.incomingCookieCameFromRedirect;
+
+            return result;
+        }
+
+
+
+        @Override
+        public String toString() {
+            String result = null;
+
+            result = "previousRequestSequenceNumber: " +
+                    ((null != previousRequestFlashInfo) ? previousRequestFlashInfo.getSequenceNumber() : "null") +
+                    " nextRequestSequenceNumber: " +
+                    ((null != nextRequestFlashInfo) ? nextRequestFlashInfo.getSequenceNumber() : "null");
+
+            return result;
+        }
+
+        void initializeBaseCase(ELFlash flash) {
+            Map<String, Object> flashMap = null;
+
+            previousRequestFlashInfo = new FlashInfo(flash.getNewSequenceNumber(),
+                    LifetimeMarker.FirstTimeThru, false);
+            innerMap.put(previousRequestFlashInfo.getSequenceNumber() + "",
+                    flashMap = new HashMap<String, Object>());
+            previousRequestFlashInfo.setFlashMap(flashMap);
+
+            nextRequestFlashInfo = new FlashInfo(flash.getNewSequenceNumber(),
+                    LifetimeMarker.FirstTimeThru, false);
+            innerMap.put(nextRequestFlashInfo.getSequenceNumber() + "",
+                    flashMap = new HashMap<String, Object>());
+            nextRequestFlashInfo.setFlashMap(flashMap);
+        }
+
+        void expirePrevious() {
+            // expire previous
+            if (null != previousRequestFlashInfo) {
+                Map<String, Object> flashMap;
+                // clear the old map
+                if (null != (flashMap = previousRequestFlashInfo.getFlashMap())) {
+                    if (LOGGER.isLoggable(Level.FINEST)) {
+                        LOGGER.log(Level.FINEST, "{0} expire previous[{1}]",
+                                new Object[]{getLogPrefix(FacesContext.getCurrentInstance()),
+                                    previousRequestFlashInfo.getSequenceNumber()});
+
+                    }
+                    FacesContext context = FacesContext.getCurrentInstance();
+                    context.getApplication().publishEvent(context, PreClearFlashEvent.class, 
+                            flashMap);
+                    flashMap.clear();
+                }
+                // remove it from the flash
+                innerMap.remove(previousRequestFlashInfo.getSequenceNumber() + "");
+                previousRequestFlashInfo = null;
+            }
+        }
+
+        void expireNext_MovePreviousToNext() {
+            if (null != nextRequestFlashInfo) {
+                if (LOGGER.isLoggable(Level.FINEST)) {
+                    LOGGER.log(Level.FINEST, "{0} expire next[{1}], move previous to next",
+                            new Object[]{getLogPrefix(FacesContext.getCurrentInstance()),
+                                nextRequestFlashInfo.getSequenceNumber()});
+
+                }
+                Map<String, Object> flashMap = nextRequestFlashInfo.getFlashMap();
+                                
+                FacesContext context = FacesContext.getCurrentInstance();
+                context.getApplication().publishEvent(context, PreClearFlashEvent.class, 
+                        flashMap);
+                
+                // clear the old map
+                flashMap.clear();
+                // remove it from the flash
+                innerMap.remove(nextRequestFlashInfo.getSequenceNumber() + "");
+                nextRequestFlashInfo = null;
+            }
+
+            nextRequestFlashInfo = previousRequestFlashInfo;
+            previousRequestFlashInfo = null;
+        }
+
+	/**
+	 * <p>Decode the state of the PreviousNextFlashInfoManager from
+	 * a Cookie.  This entire method is wrapped in a try-catch block
+	 * to prevent any errors from malformed cookies from polluting
+	 * the system.  When any error occurs, the flash is not usable
+	 * for this request, and a nice error message is logged.</p>
+
+	 * <p>This method is where the LifetimeMarker is incremented,
+	 * UNLESS the incoming request is the GET after the REDIRECT
+	 * after POST, in which case we don't increment it because the
+	 * system will expire the entries in the doLastPhaseActions.</p>
+	 *
+	 */
+
+        void decode(FacesContext context, ELFlash flash, Cookie cookie) throws InvalidKeyException {
+            String temp;
+            String value;
+            
+            String urlDecodedValue = null;
+            
+            try {
+                urlDecodedValue = URLDecoder.decode(cookie.getValue(), "UTF-8");
+            } catch (UnsupportedEncodingException uee) {
+                urlDecodedValue = cookie.getValue();
+            }
+            
+            value = guard.decrypt(urlDecodedValue);
+            
+            try {
+                int i = value.indexOf("_");
+
+                // IMPORTANT: what was "next" when the cookie was
+                // encoded is now "previous".  Therefore decode "next" first.
+                temp = value.substring(0, i++);
+
+                if (0 < temp.length()) {
+                    nextRequestFlashInfo = new FlashInfo();
+                    nextRequestFlashInfo.decode(temp);
+                }
+                // invariant we must always have something after the _
+                previousRequestFlashInfo = new FlashInfo();
+                previousRequestFlashInfo.decode(value.substring(i));
+
+		// handle the consequences of action taken on doLastPhaseActions
+                if (previousRequestFlashInfo.isIsRedirect()) {
+                    this.setIncomingCookieCameFromRedirect(true);
+                    previousRequestFlashInfo.setIsRedirect(false);
+                } else {
+                    // Don't make the flash older on debug requests
+                    if (!UIDebug.debugRequest(context)) {
+                        previousRequestFlashInfo.setLifetimeMarker(LifetimeMarker.SecondTimeThru);
+                        nextRequestFlashInfo = null;
+                    }
+                }
+                Map<String, Object> flashMap;
+                // If the browser sent a cookie that is valid, but
+                // doesn't correspond to a map in memory...
+                if (null == (flashMap = innerMap.get(previousRequestFlashInfo.getSequenceNumber() + ""))) {
+                    // create a new map
+                    previousRequestFlashInfo = new FlashInfo();
+                    previousRequestFlashInfo.setSequenceNumber(flash.getNewSequenceNumber());
+                    previousRequestFlashInfo.setLifetimeMarker(LifetimeMarker.FirstTimeThru);
+                    previousRequestFlashInfo.setIsRedirect(false);
+                    // put it in the flash
+                    innerMap.put(previousRequestFlashInfo.getSequenceNumber() + "",
+                            flashMap = new HashMap<String, Object>());
+                }
+                previousRequestFlashInfo.setFlashMap(flashMap);
+                if (null != nextRequestFlashInfo) {
+                    if (null == (flashMap = innerMap.get(nextRequestFlashInfo.getSequenceNumber() + ""))) {
+                        // create a new map
+                        nextRequestFlashInfo = new FlashInfo();
+                        nextRequestFlashInfo.setSequenceNumber(flash.getNewSequenceNumber());
+                        nextRequestFlashInfo.setLifetimeMarker(LifetimeMarker.FirstTimeThru);
+                        nextRequestFlashInfo.setIsRedirect(false);
+                        // put it in the flash
+                        innerMap.put(nextRequestFlashInfo.getSequenceNumber() + "",
+                                flashMap = new HashMap<String, Object>());
+                    }
+                    nextRequestFlashInfo.setFlashMap(flashMap);
+                }
+            } catch (Throwable t) {
+                context.getAttributes().put(CONSTANTS.ForceSetMaxAgeZero, Boolean.TRUE);
+                if (LOGGER.isLoggable(Level.SEVERE)) {
+                    LOGGER.log(Level.SEVERE,
+                            "jsf.externalcontext.flash.bad.cookie",
+                            new Object [] { value });
+                }
+            }
+
+        }
+
+	/**
+	 * <p>Encode the current state of the
+	 * PreviousNextFlashInfoManager to the cookie.</p>
+	 */
+        Cookie encode() {
+            Cookie result = null;
+
+            String value = ((null != previousRequestFlashInfo) ? previousRequestFlashInfo.encode() : "")  + "_" +
+                           ((null != nextRequestFlashInfo) ? nextRequestFlashInfo.encode() : "");
+            String encryptedValue = guard.encrypt(value);
+            try {
+                result = new Cookie(FLASH_COOKIE_NAME, URLEncoder.encode(encryptedValue, "UTF-8"));
+            } catch (UnsupportedEncodingException uee) {
+                result = new Cookie(FLASH_COOKIE_NAME, encryptedValue);
+            }
+                
+            if (1 == value.length()) {
+                result.setMaxAge(0);
+            }            
+            String requestContextPath = FacesContext.getCurrentInstance().getExternalContext().getRequestContextPath();
+            if (requestContextPath.isEmpty()) {
+                requestContextPath = "/";
+            }
+            result.setPath(requestContextPath);
+            return result;
+        }
+
+        FlashInfo getPreviousRequestFlashInfo() {
+            return previousRequestFlashInfo;
+        }
+
+        void setPreviousRequestFlashInfo(FlashInfo thisRequestFlashInfo) {
+            this.previousRequestFlashInfo = thisRequestFlashInfo;
+        }
+
+        FlashInfo getNextRequestFlashInfo() {
+            return nextRequestFlashInfo;
+        }
+
+        FlashInfo getNextRequestFlashInfo(ELFlash flash, boolean create) {
+            if (create && null == nextRequestFlashInfo) {
+                nextRequestFlashInfo = new FlashInfo();
+                nextRequestFlashInfo.setSequenceNumber(flash.getNewSequenceNumber());
+                nextRequestFlashInfo.setLifetimeMarker(LifetimeMarker.FirstTimeThru);
+                nextRequestFlashInfo.setIsRedirect(false);
+                // put it in the flash
+                Map<String, Object> flashMap = null;
+                innerMap.put(nextRequestFlashInfo.getSequenceNumber() + "",
+                        flashMap = new HashMap<String, Object>());
+                nextRequestFlashInfo.setFlashMap(flashMap);
+            }
+            return nextRequestFlashInfo;
+        }
+
+        void setNextRequestFlashInfo(FlashInfo nextRequestFlashInfo) {
+            this.nextRequestFlashInfo = nextRequestFlashInfo;
+        }
+
+        boolean isIncomingCookieCameFromRedirect() {
+            return incomingCookieCameFromRedirect;
+        }
+
+        void setIncomingCookieCameFromRedirect(boolean incomingCookieCameFromRedirect) {
+            this.incomingCookieCameFromRedirect = incomingCookieCameFromRedirect;
+        }
+
+    }
+
+    /**
+     * <p>Encapsulate one of the two maps that back the flash for the
+     * current request.</p>
+     */
+    private static final class FlashInfo {
+
+	/**
+	 * <p>Set to true by the Flash when the extContext tells us
+	 * there is a redirect.</p>
+	 */
+        private boolean isRedirect;
+
+	/**
+	 * <p>How many times has this map been through the lifecycle?</p>
+	 */
+        private LifetimeMarker lifetimeMarker;
+
+	/**
+	 * <p>Application Unique key in the innerMap.</p>
+	 */
+
+        private long sequenceNumber;
+
+	/**
+	 * <p>The Map that stores the data. This map itself is stored in
+	 * innerMap under the key given by the value of
+	 * sequenceNumber.</p>
+	 */
+        private Map<String, Object> flashMap;
+
+        private FlashInfo() {
+
+        }
+
+        FlashInfo(long sequenceNumber, LifetimeMarker lifetimeMarker,
+                boolean isRedirect) {
+            setSequenceNumber(sequenceNumber);
+            setLifetimeMarker(lifetimeMarker);
+            setIsRedirect(isRedirect);
+        }
+
+        FlashInfo copyWithoutInnerMap()  {
+            FlashInfo result = new FlashInfo(this.sequenceNumber, 
+                    this.lifetimeMarker, this.isRedirect);
+
+            return result;
+        }
+
+        @Override
+        public boolean equals(Object obj) {
+            if (obj == null) {
+                return false;
+            }
+            if (getClass() != obj.getClass()) {
+                return false;
+            }
+            final FlashInfo other = (FlashInfo) obj;
+            if (this.isRedirect != other.isRedirect) {
+                return false;
+            }
+            if (this.lifetimeMarker != other.lifetimeMarker && (this.lifetimeMarker == null || !this.lifetimeMarker.equals(other.lifetimeMarker))) {
+                return false;
+            }
+            if (this.sequenceNumber != other.sequenceNumber) {
+                return false;
+            }
+            return true;
+        }
+
+        @Override
+        public int hashCode() {
+            int hash = 7;
+            hash = 71 * hash + (this.isRedirect ? 1 : 0);
+            hash = 71 * hash + (this.lifetimeMarker != null ? this.lifetimeMarker.hashCode() : 0);
+            hash = 71 * hash + (int) (this.sequenceNumber ^ (this.sequenceNumber >>> 32));
+            return hash;
+        }
+
+        
+
+        void decode(String value) {
+            if (null == value || 0 == value.length()) {
+
+                // PENDING(edburns): REMOVE THIS
+                return;
+            }
+
+            int i = value.indexOf('X');
+
+            // decode the sequence number
+            setSequenceNumber(Long.parseLong(value.substring(0, i++)));
+
+            // decode the lifetime marker
+            setLifetimeMarker(LifetimeMarker.decode(value.charAt(i++)));
+            
+            // decode the redirect flag
+            setIsRedirect(LifetimeMarker.IsRedirect ==
+                    LifetimeMarker.decode(value.charAt(i++)));
+        }
+
+        String encode() {
+            String value = null;
+
+            // The cookie value is an encoding of the sequence number, the
+            // lifetime marker, and the redirect flag
+            if (isIsRedirect()) {
+                value = Long.toString(getSequenceNumber()) + "X" +
+                        getLifetimeMarker().encode() +
+                        LifetimeMarker.IsRedirect.encode();
+            } else {
+                value = Long.toString(getSequenceNumber()) + "X" +
+                        getLifetimeMarker().encode() +
+                        LifetimeMarker.IsNormal.encode();
+            }
+
+            return value;
+        }
+
+        boolean isIsRedirect() {
+            return isRedirect;
+        }
+
+        void setIsRedirect(boolean isRedirect) {
+            this.isRedirect = isRedirect;
+        }
+
+        long getSequenceNumber() {
+            return sequenceNumber;
+        }
+
+        void setSequenceNumber(long sequenceNumber) {
+            this.sequenceNumber = sequenceNumber;
+        }
+
+        LifetimeMarker getLifetimeMarker() {
+            return lifetimeMarker;
+        }
+
+        void setLifetimeMarker(LifetimeMarker lifetimeMarker) {
+            this.lifetimeMarker = lifetimeMarker;
+        }
+
+        Map<String, Object> getFlashMap() {
+            return flashMap;
+        }
+
+        void setFlashMap(Map<String, Object> flashMap) {
+            this.flashMap = flashMap;
+        }
+
+        
+
+    }
+
+    // </editor-fold>
+
+
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/context/flash/FlashELResolver.java b/jsf-ri/src/main/java/com/sun/faces/context/flash/FlashELResolver.java
index 6a305fc..7ab3b61 100644
--- a/jsf-ri/src/main/java/com/sun/faces/context/flash/FlashELResolver.java
+++ b/jsf-ri/src/main/java/com/sun/faces/context/flash/FlashELResolver.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -34,8 +38,6 @@
  * holder.
  */
 
-
-
 package com.sun.faces.context.flash;
 
 import javax.el.ELContext;
@@ -49,6 +51,10 @@ import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.Map;
 
+import javax.faces.FactoryFinder;
+import javax.faces.context.Flash;
+import javax.faces.context.FlashFactory;
+
 /**
  * <p>Provide a feature semantically identical to the <a target="_"
  * href="http://api.rubyonrails.com/classes/ActionController/Flash.html">
@@ -169,9 +175,8 @@ public class FlashELResolver extends ELResolver {
      * <p>Hook into the EL resolution process to introduce the
      * <code>flash</code> implicit object.  If
      * <code>property</code> is <code>null</code>, take no action
-     * and return <code>null</code>.  If <code>base</code> is
-     * <code>null</code> and value is the literal string "flash", return
-     * the {@link ELFlash} instance, which is a Map.  If
+     * and return <code>null</code>.  if <code>base</code> is null, return null.
+     * If
      * <code>base</code> is an instance of <code>ELFlash</code> and
      * property is the literal string "keep", set a ThreadLocal property
      * that will be inspected by the flash on the next link in the
@@ -187,66 +192,63 @@ public class FlashELResolver extends ELResolver {
      *                                   <code>null</code>.
      */
 
-    public Object getValue(ELContext elContext, Object base, Object property) {
-        Object result = null;
-        Map<String, Object> flash;
+  public Object getValue(ELContext elContext, Object base, Object property)
+  {
+    if (null == property)
+    {
+      // take no action.
+      return null;
+    }
 
-        if (null == property) {
-            // take no action.
-            return null;
-        }
+    Object result = null;
 
+    if (null == base)
+    {
+      return null;
+    }
+    // If the base argument is the flash itself...
+    else if (base instanceof Flash)
+    {
         FacesContext facesContext =
                 (FacesContext) elContext.getContext(FacesContext.class);
         ExternalContext extCtx = facesContext.getExternalContext();
-        // try to get the flash from the session.
-        flash = ELFlash.getFlash(extCtx, false);
-
-        // Deal with getValue(null, "flash").
-        if (null == base) {
-            // If the property is the implicit object "flash"...
-            if (property.toString().equals(FLASH_VARIABLE_NAME)) {
-                elContext.setPropertyResolved(true);
-                if (null == flash) {
-                    // create a new one and store it in the session.
-                    flash = ELFlash.getFlash(extCtx, true);
-                    extCtx.getSessionMap().put(ELFlash.FLASH_ATTRIBUTE_NAME,
-                            flash);
-                }
-                result = flash;
-            }
+        
+        // and the property argument is "keep"...
+        if (property.toString().equals(FLASH_KEEP_VARIABLE_NAME))
+        {
+            elContext.setPropertyResolved(true);
+          
+            // then this is a request to promote the value
+            // "property", which is assumed to have been previously
+            // stored in request scope via the "flash.now"
+            // expression, to flash scope.
+            result = base;
+            // Set a flag so the flash itself can look in the request
+            // and promote the value to the next request
+            FlashFactory ff = (FlashFactory) 
+                    FactoryFinder.getFactory(FactoryFinder.FLASH_FACTORY);
+            ff.getFlash(true);
+            ELFlash.setKeepFlag(facesContext);
         }
-        // If the base argument is the flash itself...
-        else if (base == flash) {
-            // and the property argument is "keep"...
-            if (property.toString().equals(FLASH_KEEP_VARIABLE_NAME)) {
-                elContext.setPropertyResolved(true);
-                // then this is a request to promote the value
-                // "property", which is assumed to have been previously
-                // stored in request scope via the "flash.now"
-                // expression, to flash scope.
-                result = base;
-                // Set a flag so the flash itself can look in the request
-                // and promote the value to the next request
-                ELFlash.getFlash(extCtx, true).setKeepFlag(facesContext);
-
-            }
-            // Otherwise, if base is the flash, and property is "now"...
-            else if (property.toString().equals(FLASH_NOW_VARIABLE_NAME)) {
-		// PENDING(edburns): use FacesContext.getAttributes() instead of 
-		// request scope.
-                Map<String, Object> requestMap = extCtx.getRequestMap();
-                requestMap.put(ELFlash.FLASH_NOW_REQUEST_KEY, property);
-                elContext.setPropertyResolved(true);
-                result = requestMap;
-            } else {
-                result = null;
-            }
+        // Otherwise, if base is the flash, and property is "now"...
+        else if (property.toString().equals(FLASH_NOW_VARIABLE_NAME))
+        {
+            // PENDING(edburns): use FacesContext.getAttributes() instead of 
+            // request scope.
+            Map<String, Object> requestMap = extCtx.getRequestMap();
+            requestMap.put(ELFlash.FLASH_NOW_REQUEST_KEY, property);
+            elContext.setPropertyResolved(true);
+            result = requestMap;
+        }
+        else
+        {
+            result = null;
         }
-
-        return result;
     }
 
+    return result;
+  }
+
     /**
      * <p>Return the valid <code>Class</code> for a future set
      * operation, which will always be <code>null</code> because sets
@@ -356,8 +358,7 @@ public class FlashELResolver extends ELResolver {
         ExternalContext extCtx = facesContext.getExternalContext();
 
         //noinspection unchecked
-        if (null != (flash = (Map<String, Object>)
-                extCtx.getSessionMap().get(ELFlash.FLASH_ATTRIBUTE_NAME))) {
+        if (null != (flash = extCtx.getFlash())) {
             Iterator<Map.Entry<String, Object>> iter = flash.entrySet().iterator();
             Map.Entry<String, Object> cur;
             ArrayList<FeatureDescriptor> fds;
diff --git a/jsf-ri/src/main/java/com/sun/faces/context/flash/FlashFactoryImpl.java b/jsf-ri/src/main/java/com/sun/faces/context/flash/FlashFactoryImpl.java
new file mode 100644
index 0000000..c76761e
--- /dev/null
+++ b/jsf-ri/src/main/java/com/sun/faces/context/flash/FlashFactoryImpl.java
@@ -0,0 +1,63 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.context.flash;
+
+import javax.faces.context.ExternalContext;
+import javax.faces.context.FacesContext;
+import javax.faces.context.Flash;
+import javax.faces.context.FlashFactory;
+
+public class FlashFactoryImpl extends FlashFactory {
+
+    public FlashFactoryImpl() {
+    }
+
+    @Override
+    public Flash getFlash(boolean create) {
+        ExternalContext context = FacesContext.getCurrentInstance().getExternalContext();
+        Flash result = ELFlash.getFlash(context, create);
+        
+        return result;
+    }
+    
+    
+    
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/context/flash/SessionHelper.java b/jsf-ri/src/main/java/com/sun/faces/context/flash/SessionHelper.java
new file mode 100644
index 0000000..c86b31a
--- /dev/null
+++ b/jsf-ri/src/main/java/com/sun/faces/context/flash/SessionHelper.java
@@ -0,0 +1,98 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.context.flash;
+
+import java.io.Serializable;
+import java.util.Map;
+import javax.faces.context.ExternalContext;
+import javax.servlet.http.HttpSessionActivationListener;
+import javax.servlet.http.HttpSessionEvent;
+
+class SessionHelper implements Serializable, HttpSessionActivationListener {
+    
+    private static final long serialVersionUID = -4146679754778263071L;
+    
+    static final String FLASH_SESSIONACTIVATIONLISTENER_ATTRIBUTE_NAME = 
+            ELFlash.FLASH_ATTRIBUTE_NAME + "FSAL";
+
+    private static final String FLASH_INNER_MAP_KEY = ELFlash.FLASH_ATTRIBUTE_NAME + "FIM";
+    private boolean didPassivate;
+    
+    static SessionHelper getInstance(ExternalContext extContext) {
+        return (SessionHelper) 
+                extContext.getSessionMap().get(FLASH_SESSIONACTIVATIONLISTENER_ATTRIBUTE_NAME);
+    }
+
+    void update(ExternalContext extContext,
+            ELFlash flash) {
+        Map<String, Object> sessionMap = extContext.getSessionMap();
+        if (didPassivate) {
+            Map<String, Map<String, Object>> flashInnerMap = 
+                    (Map<String, Map<String, Object>>) sessionMap.get(FLASH_INNER_MAP_KEY);
+            flash.setFlashInnerMap(flashInnerMap);
+            didPassivate = false;
+        } else {
+            sessionMap.put(FLASH_SESSIONACTIVATIONLISTENER_ATTRIBUTE_NAME, this);
+            sessionMap.put(FLASH_INNER_MAP_KEY, flash.getFlashInnerMap());
+        }
+    }
+    
+    void remove(ExternalContext extContext) {
+        Map<String, Object> sessionMap = extContext.getSessionMap();
+        sessionMap.remove(FLASH_SESSIONACTIVATIONLISTENER_ATTRIBUTE_NAME);
+        sessionMap.remove(FLASH_INNER_MAP_KEY);
+    }
+    
+    
+    @Override
+    public void sessionDidActivate(HttpSessionEvent hse) {
+        didPassivate = true;
+    }
+
+    @Override
+    public void sessionWillPassivate(HttpSessionEvent hse) {
+        didPassivate = true;
+
+    }
+    
+    
+    
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/el/ChainAwareVariableResolver.java b/jsf-ri/src/main/java/com/sun/faces/el/ChainAwareVariableResolver.java
index f3212a9..51a8ae8 100644
--- a/jsf-ri/src/main/java/com/sun/faces/el/ChainAwareVariableResolver.java
+++ b/jsf-ri/src/main/java/com/sun/faces/el/ChainAwareVariableResolver.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -86,7 +90,7 @@ public class ChainAwareVariableResolver extends VariableResolver {
     public Object resolveVariable(FacesContext context, String name)
             throws EvaluationException {
         Object result = null;
-        ELResolverChainType type = null;
+        ELResolverChainType type = ELResolverChainType.Faces;
         Object valueObject = RequestStateManager.get(context,
                                                      RequestStateManager.EL_RESOLVER_CHAIN_TYPE_NAME);
         if (null != valueObject && 
diff --git a/jsf-ri/src/main/java/com/sun/faces/el/ChainTypeCompositeELResolver.java b/jsf-ri/src/main/java/com/sun/faces/el/ChainTypeCompositeELResolver.java
new file mode 100644
index 0000000..0f10406
--- /dev/null
+++ b/jsf-ri/src/main/java/com/sun/faces/el/ChainTypeCompositeELResolver.java
@@ -0,0 +1,227 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.el;
+
+import com.sun.faces.util.RequestStateManager;
+import java.beans.FeatureDescriptor;
+import java.util.Iterator;
+import java.util.Map;
+import javax.el.ELContext;
+import javax.el.ELException;
+import javax.el.ELResolver;
+import javax.faces.context.FacesContext;
+
+/**
+ * Maintains an ordered composite list of child <code>ELResolver for JSF</code>.
+ *
+ */
+public final class ChainTypeCompositeELResolver extends FacesCompositeELResolver
+{
+  @Override
+  public void addRootELResolver(ELResolver elResolver)
+  {
+    _wrapped.addRootELResolver(elResolver);
+  }
+
+  public void addPropertyELResolver(ELResolver elResolver)
+  {
+    _wrapped.addPropertyELResolver(elResolver);
+  }
+
+  public void add(ELResolver elResolver)
+  {
+    _wrapped.add(elResolver);    
+  }
+
+  @Override
+  public Object getValue(ELContext context, Object base, Object property) throws ELException
+  {      
+    FacesContext ctx = getFacesContext(context);
+    if (ctx == null)
+    {
+      return null;
+    }
+
+    Map<String,Object> stateMap = 
+	RequestStateManager.getStateMap(ctx);
+    
+    stateMap.put(RequestStateManager.EL_RESOLVER_CHAIN_TYPE_NAME,
+		 _chainType);
+    Object result = null;
+    try {
+        result = _wrapped.getValue(context, base, property);
+    } finally {
+        stateMap.remove(RequestStateManager.EL_RESOLVER_CHAIN_TYPE_NAME);
+    }
+    
+    return result;
+  }
+  
+  @Override
+  public Class<?> getType(ELContext context, Object base, Object property) throws ELException
+  {
+
+    FacesContext ctx = getFacesContext(context);
+    
+    if (ctx == null)
+    {
+      return null;
+    }
+    
+    Map<String,Object> stateMap =
+	RequestStateManager.getStateMap(ctx);
+
+    stateMap.put(RequestStateManager.EL_RESOLVER_CHAIN_TYPE_NAME,
+		 _chainType);
+    Class<?> result = null;
+    try {
+        result = _wrapped.getType(context, base, property);
+    } finally {
+        stateMap.remove(RequestStateManager.EL_RESOLVER_CHAIN_TYPE_NAME);
+    }
+
+    return result;
+  }
+  
+  @Override
+  public void setValue(ELContext context, Object base, Object property, Object val)
+    throws ELException
+  {
+    FacesContext ctx = getFacesContext(context);
+    if (ctx == null)
+    {
+      return;
+    }
+    
+    Map<String,Object> stateMap =
+	RequestStateManager.getStateMap(ctx);
+
+    stateMap.put(RequestStateManager.EL_RESOLVER_CHAIN_TYPE_NAME,
+		 _chainType);
+    try {
+        _wrapped.setValue(context, base, property, val);
+    } finally {
+        stateMap.remove(RequestStateManager.EL_RESOLVER_CHAIN_TYPE_NAME);
+    }
+  }
+    
+  @Override
+  public boolean isReadOnly(ELContext context, Object base, Object property) throws ELException
+  {
+    FacesContext ctx = getFacesContext(context);
+    if (ctx == null)
+    {
+      return false;
+    }
+    
+    Map<String,Object> stateMap =
+	RequestStateManager.getStateMap(ctx);
+
+    stateMap.put(RequestStateManager.EL_RESOLVER_CHAIN_TYPE_NAME,
+		 _chainType);
+    boolean result = false;
+    try {
+        result = _wrapped.isReadOnly(context, base, property);
+    } finally {
+        stateMap.remove(RequestStateManager.EL_RESOLVER_CHAIN_TYPE_NAME);
+    }
+    
+    return result;
+  }
+  
+  @Override
+  public Iterator<FeatureDescriptor> getFeatureDescriptors(ELContext context, Object base)
+  {
+    FacesContext ctx = getFacesContext(context);
+    Iterator<FeatureDescriptor> result = null;
+    if (ctx != null) {
+        Map<String,Object> stateMap =
+            RequestStateManager.getStateMap(ctx);
+
+        stateMap.put(RequestStateManager.EL_RESOLVER_CHAIN_TYPE_NAME,
+                     _chainType);
+        try {
+            result = _wrapped.getFeatureDescriptors(context, base);
+        } finally {
+            stateMap.remove(RequestStateManager.EL_RESOLVER_CHAIN_TYPE_NAME);
+        }
+    }
+    return result;
+  }
+   
+  @Override
+  public ELResolverChainType getChainType()
+  {
+    return _chainType;
+  }
+    
+  private final FacesCompositeELResolver _wrapped;
+  private final ELResolverChainType _chainType;
+
+  /**
+   * <p>Guarantee that this instance knows of what chain it is a
+   * member.</p>
+   * @param chainType the ELResolverChainType
+   */
+  public ChainTypeCompositeELResolver(ELResolverChainType chainType)
+  {
+    _wrapped = new DemuxCompositeELResolver(chainType);
+    _chainType = chainType;
+  }
+
+  public ChainTypeCompositeELResolver(FacesCompositeELResolver delegate)
+  {
+    _wrapped = delegate;
+    _chainType = delegate.getChainType();
+  }
+
+  /**
+   * @param elContext context for the current expression evaluation
+   * @return the <code>FacesContext</code> associated with this expression
+   *  evaluation
+   */
+  private FacesContext getFacesContext(ELContext elContext) {
+
+      return (FacesContext) elContext.getContext(FacesContext.class);
+
+  }
+}
+
diff --git a/jsf-ri/src/main/java/com/sun/faces/el/CompositeComponentAttributesELResolver.java b/jsf-ri/src/main/java/com/sun/faces/el/CompositeComponentAttributesELResolver.java
index c5f4958..2c4e3c9 100644
--- a/jsf-ri/src/main/java/com/sun/faces/el/CompositeComponentAttributesELResolver.java
+++ b/jsf-ri/src/main/java/com/sun/faces/el/CompositeComponentAttributesELResolver.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -42,6 +46,7 @@ import java.util.Map;
 import java.util.Set;
 import java.util.Collection;
 import java.util.HashMap;
+import java.util.logging.Logger;
 
 import javax.el.ELResolver;
 import javax.el.ELContext;
@@ -55,6 +60,7 @@ import com.sun.faces.util.Util;
 import com.sun.faces.component.CompositeComponentStackManager;
 import static com.sun.faces.component.CompositeComponentStackManager.StackType.TreeCreation;
 import static com.sun.faces.component.CompositeComponentStackManager.StackType.Evaluation;
+import com.sun.faces.util.FacesLogger;
 
 import java.beans.BeanInfo;
 import java.beans.PropertyDescriptor;
@@ -66,6 +72,9 @@ import java.beans.PropertyDescriptor;
  * </p>
  */
 public class CompositeComponentAttributesELResolver extends ELResolver {
+    
+    // Log instance for this class
+    private static final Logger LOGGER = FacesLogger.CONTEXT.getLogger();
 
     /**
      * Implicit object related only to the cc implicitObject.
@@ -163,13 +172,48 @@ public class CompositeComponentAttributesELResolver extends ELResolver {
      * @see ELResolver#getType(javax.el.ELContext, Object, Object)
      */
     public Class<?> getType(ELContext context, Object base, Object property) {
-
         Util.notNull("context", context);
-        return null;
-
-    }
+        if (!(base instanceof ExpressionEvalMap && property instanceof String)) {
+            return null;
+        }
+        Class<?> exprType = null;
+        Class<?> metaType = null;
 
+        ExpressionEvalMap evalMap = (ExpressionEvalMap) base;
+        ValueExpression ve = evalMap.getExpression((String) property);
+        if (ve != null) {
+            exprType = ve.getType(context);
+        }
 
+        if (!"".equals(property)) {
+            FacesContext facesContext = (FacesContext) context.getContext(FacesContext.class);
+            UIComponent cc = UIComponent.getCurrentCompositeComponent(facesContext);
+            BeanInfo metadata = (BeanInfo) cc.getAttributes().get(UIComponent.BEANINFO_KEY);
+            assert(null != metadata);
+            PropertyDescriptor[] attributes = metadata.getPropertyDescriptors();
+            if (null != attributes) {
+                for (PropertyDescriptor cur : attributes) {
+                    if (property.equals(cur.getName())) {
+                        Object type = cur.getValue("type");
+                        if (null != type) {
+                            assert(type instanceof Class);
+                            metaType = (Class) type;
+                            break;
+                        }
+                    }
+                }
+            }
+        }
+        if (metaType != null) {
+            // override exprType only if metaType is narrower:
+            if (exprType == null || exprType.isAssignableFrom(metaType)) {
+                context.setPropertyResolved(true);
+                return metaType;
+            }
+        }
+        return exprType;
+    }
+    
     /**
      * <p>
      * This is a no-op.
@@ -261,11 +305,15 @@ public class CompositeComponentAttributesELResolver extends ELResolver {
             evalMap = new ExpressionEvalMap(ctx, c);
             topMap.put(c, evalMap);
         }
-        if (evalMap == null) {
+        else {
             evalMap = topMap.get(c);
             if (evalMap == null) {
                 evalMap = new ExpressionEvalMap(ctx, c);
                 topMap.put(c, evalMap);
+            } else {
+        	// JAVASERVERFACES-2508 - running as Portlet2 FacesContext must be updated for rendering, or 
+        	// ExpressionEvalMap would have to be reconstructed for the second Portlet phase
+        	((ExpressionEvalMap)evalMap).updateFacesContext(ctx);
             }
         }
         return evalMap;
@@ -328,7 +376,11 @@ public class CompositeComponentAttributesELResolver extends ELResolver {
         }
 
         public boolean containsKey(Object key) {
-            throw new UnsupportedOperationException();
+            boolean result = attributesMap.containsKey(key);
+            if (!result) {
+                result = null != getDeclaredDefaultValue(key);
+            }
+            return result;
         }
 
         public boolean containsValue(Object value) {
@@ -417,6 +469,11 @@ public class CompositeComponentAttributesELResolver extends ELResolver {
 
             return result;
         }
-
+        
+        public void updateFacesContext(FacesContext ctx) {
+        	if (this.ctx != ctx) {
+        		this.ctx = ctx;
+        	}
+        }
     }
 }
diff --git a/jsf-ri/src/main/java/com/sun/faces/el/DemuxCompositeELResolver.java b/jsf-ri/src/main/java/com/sun/faces/el/DemuxCompositeELResolver.java
new file mode 100644
index 0000000..e780cb0
--- /dev/null
+++ b/jsf-ri/src/main/java/com/sun/faces/el/DemuxCompositeELResolver.java
@@ -0,0 +1,414 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.el;
+
+import java.beans.FeatureDescriptor;
+
+import java.util.Iterator;
+
+import java.util.NoSuchElementException;
+
+import javax.el.ELResolver;
+import javax.el.ELContext;
+import javax.el.ELException;
+
+/**
+ * Maintains an ordered composite list of child <code>ELResolver for JSF</code>.
+ *
+ */
+public class DemuxCompositeELResolver extends FacesCompositeELResolver
+{
+  private final ELResolverChainType _chainType;
+  
+  private ELResolver[] _rootELResolvers = new ELResolver[2];
+  private ELResolver[] _propertyELResolvers = new ELResolver[2];
+  private ELResolver[] _allELResolvers = new ELResolver[2];
+
+  private int _rootELResolverCount = 0;
+  private int _propertyELResolverCount = 0;
+  private int _allELResolverCount = 0;
+
+  public DemuxCompositeELResolver(ELResolverChainType chainType)
+  {
+    if (chainType == null)
+      throw new NullPointerException();
+    
+    _chainType = chainType;
+  }
+  
+  public ELResolverChainType getChainType()
+  {
+    return _chainType;
+  }
+  
+  private void _addAllELResolver(ELResolver elResolver)
+  {
+    if (elResolver == null)
+      throw new NullPointerException();
+    
+    // grow array, if necessary
+    if (_allELResolverCount == _allELResolvers.length)
+    {
+      ELResolver[] biggerResolvers = new ELResolver[_allELResolverCount * 2];
+      System.arraycopy(_allELResolvers, 0, biggerResolvers, 0, _allELResolverCount);
+      _allELResolvers = biggerResolvers;
+    }
+    
+    // assign new resolver to end
+    _allELResolvers[_allELResolverCount] = elResolver;
+    _allELResolverCount++;    
+  }
+
+  private void _addRootELResolver(ELResolver elResolver)
+  {
+    if (elResolver == null)
+      throw new NullPointerException();
+    
+    // grow array, if necessary
+    if (_rootELResolverCount == _rootELResolvers.length)
+    {
+      ELResolver[] biggerResolvers = new ELResolver[_rootELResolverCount * 2];
+      System.arraycopy(_rootELResolvers, 0, biggerResolvers, 0, _rootELResolverCount);
+      _rootELResolvers = biggerResolvers;
+    }
+    
+    // assign new resolver to end
+    _rootELResolvers[_rootELResolverCount] = elResolver;
+    _rootELResolverCount++;    
+  }
+  
+  public void _addPropertyELResolver(ELResolver elResolver)
+  {
+    if (elResolver == null)
+      throw new NullPointerException();
+    
+    // grow array, if necessary
+    if (_propertyELResolverCount == _propertyELResolvers.length)
+    {
+      ELResolver[] biggerResolvers = new ELResolver[_propertyELResolverCount * 2];
+      System.arraycopy(_propertyELResolvers, 0, biggerResolvers, 0, _propertyELResolverCount);
+      _propertyELResolvers = biggerResolvers;
+    }
+    
+    // assign new resolver to end
+    _propertyELResolvers[_propertyELResolverCount] = elResolver;
+    _propertyELResolverCount++;
+  }
+
+  public void addRootELResolver(ELResolver elResolver)
+  {
+    // pass ELResolver to CompositeELResolver so that J2EE6 invoke() method works.  Once we can
+    // have a compile dependency on J2EE6, we can override invoke() ourselves and remove this.
+    super.add(elResolver);
+    
+    _addRootELResolver(elResolver);
+    _addAllELResolver(elResolver);
+  }
+
+  public void addPropertyELResolver(ELResolver elResolver)
+  {
+    // pass ELResolver to CompositeELResolver so that J2EE6 invoke() method works.  Once we can
+    // have a compile dependency on J2EE6, we can override invoke() ourselves and remove this.
+    super.add(elResolver);
+    
+    _addPropertyELResolver(elResolver);
+    _addAllELResolver(elResolver);
+  }
+  
+  public void add(ELResolver elResolver)
+  {
+    // pass ELResolver to CompositeELResolver so that J2EE6 invoke() method works.  Once we can
+    // have a compile dependency on J2EE6, we can override invoke() ourselves and remove this.
+    super.add(elResolver);
+
+    _addRootELResolver(elResolver);
+    _addPropertyELResolver(elResolver);
+    _addAllELResolver(elResolver);
+  }
+
+  private Object _getValue(
+    int resolverCount,
+    ELResolver[] resolvers,
+    ELContext context,
+    Object base,
+    Object property) throws ELException
+  {
+    for (int i = 0; i < resolverCount; i++)
+    {
+      Object result = resolvers[i].getValue(context, base, property);
+      
+      if (context.isPropertyResolved())
+        return result;
+    }
+    
+    return null;
+  }
+  
+  public Object getValue(ELContext context, Object base, Object property) throws ELException
+  {
+    context.setPropertyResolved(false);
+    
+    int resolverCount;
+    ELResolver[] resolvers;
+    
+    if (base == null)
+    {
+      resolverCount = _rootELResolverCount;
+      resolvers     = _rootELResolvers;
+    }
+    else
+    {
+      resolverCount = _propertyELResolverCount;
+      resolvers     = _propertyELResolvers;
+    }
+    
+    return _getValue(resolverCount, resolvers, context, base, property);      
+  }
+
+  private Class<?> _getType(
+    int resolverCount,
+    ELResolver[] resolvers,
+    ELContext context,
+    Object base,
+    Object property) throws ELException
+  {
+    for (int i = 0; i < resolverCount; i++)
+    {
+      Class<?> type = resolvers[i].getType(context, base, property);
+      
+      if (context.isPropertyResolved())
+        return type;
+    }
+    
+    return null;
+  }
+
+  public Class<?> getType(ELContext context, Object base, Object property) throws ELException
+  {
+    context.setPropertyResolved(false);
+
+    int resolverCount;
+    ELResolver[] resolvers;
+    
+    if (base == null)
+    {
+      resolverCount = _rootELResolverCount;
+      resolvers     = _rootELResolvers;
+    }
+    else
+    {
+      resolverCount = _propertyELResolverCount;
+      resolvers     = _propertyELResolvers;
+    }
+    
+    return _getType(resolverCount, resolvers, context, base, property);      
+  }
+
+  private void _setValue(
+    int resolverCount,
+    ELResolver[] resolvers,
+    ELContext context,
+    Object base,
+    Object property,
+    Object val) throws ELException
+  {
+    for (int i = 0; i < resolverCount; i++)
+    {
+      resolvers[i].setValue(context, base, property, val);
+      
+      if (context.isPropertyResolved())
+        return;
+    }
+  }
+
+  public void setValue(ELContext context, Object base, Object property, Object val)
+    throws ELException
+  {
+    context.setPropertyResolved(false);
+
+    int resolverCount;
+    ELResolver[] resolvers;
+    
+    if (base == null)
+    {
+      resolverCount = _rootELResolverCount;
+      resolvers     = _rootELResolvers;
+    }
+    else
+    {
+      resolverCount = _propertyELResolverCount;
+      resolvers     = _propertyELResolvers;
+    }
+
+    _setValue(resolverCount, resolvers, context, base, property, val);          
+  }
+  
+  private boolean _isReadOnly(
+    int resolverCount,
+    ELResolver[] resolvers,
+    ELContext context,
+    Object base,
+    Object property) throws ELException
+  {
+    for (int i = 0; i < resolverCount; i++)
+    {
+      boolean isReadOnly = resolvers[i].isReadOnly(context, base, property);
+      
+      if (context.isPropertyResolved())
+        return isReadOnly;
+    }
+    
+    return false;        
+  }
+
+  @Override
+  public boolean isReadOnly(ELContext context, Object base, Object property)
+    throws ELException
+  {
+    context.setPropertyResolved(false);
+
+    int resolverCount;
+    ELResolver[] resolvers;
+    
+    if (base == null)
+    {
+      resolverCount = _rootELResolverCount;
+      resolvers     = _rootELResolvers;
+    }
+    else
+    {
+      resolverCount = _propertyELResolverCount;
+      resolvers     = _propertyELResolvers;
+    }
+
+    return _isReadOnly(resolverCount, resolvers, context, base, property);      
+  }
+  
+  public Iterator<FeatureDescriptor> getFeatureDescriptors(ELContext context, Object base)
+  {
+    return new DescriptorIterator(context, base, _allELResolvers, _allELResolverCount);
+  }
+  
+  private final static class DescriptorIterator implements Iterator<FeatureDescriptor>
+  {
+    // snapshot the ELResolver array to avoid using a non-static inner class that needs to
+    // make function calls
+    public DescriptorIterator(
+      ELContext context,
+      Object base,
+      ELResolver[] resolvers,
+      int resolverCount)
+    {
+      _context       = context;
+      _base          = base;
+      _resolvers     = resolvers;
+      _resolverCount = resolverCount;
+    }
+   
+    public boolean hasNext()
+    {
+      do
+      {
+          // A null return does *not* mean hasNext() should return false.
+        Iterator<FeatureDescriptor> currIterator = _getCurrIterator();
+
+        if (null != currIterator) {
+            if (currIterator.hasNext()) {
+                return true;
+            } else {
+                _currIterator = null;
+                _currResolverIndex++;
+            }
+        } else {
+            if (_currResolverIndex < _resolverCount) {
+                continue;
+            } else {
+                return false;
+            }
+        }
+      
+      } while (true);
+    }
+    
+    private Iterator<FeatureDescriptor> _getCurrIterator()
+    {
+      Iterator<FeatureDescriptor> currIterator = _currIterator;
+      
+      if (currIterator == null)
+      {
+        if (_currResolverIndex < _resolverCount)
+        {
+          currIterator = _resolvers[_currResolverIndex].getFeatureDescriptors(_context, _base);
+          _currResolverIndex++;
+          _currIterator = currIterator;
+        }
+      }
+      
+      return currIterator;
+    }
+
+    public FeatureDescriptor next()
+    {
+      if (hasNext())
+        return _getCurrIterator().next();
+      else
+        throw new NoSuchElementException();    
+    }
+
+    public void remove()
+    {
+      throw new UnsupportedOperationException();
+    }
+    
+    private final ELContext _context;
+    private final Object    _base;
+    private final ELResolver[] _resolvers;
+    private final int _resolverCount;
+    private int _currResolverIndex;
+    private Iterator<FeatureDescriptor> _currIterator;
+  }
+    
+  public Class<?> getCommonPropertyType(ELContext context, Object base)
+  {
+    return null;
+  }
+}
+
diff --git a/jsf-ri/src/main/java/com/sun/faces/el/DummyPropertyResolverImpl.java b/jsf-ri/src/main/java/com/sun/faces/el/DummyPropertyResolverImpl.java
index 5c411f9..975c9b9 100644
--- a/jsf-ri/src/main/java/com/sun/faces/el/DummyPropertyResolverImpl.java
+++ b/jsf-ri/src/main/java/com/sun/faces/el/DummyPropertyResolverImpl.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -108,4 +112,4 @@ public class DummyPropertyResolverImpl extends PropertyResolver {
         return null;
     }
     
-}
\ No newline at end of file
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/el/ELConstants.java b/jsf-ri/src/main/java/com/sun/faces/el/ELConstants.java
index 8e2041c..4a53e4a 100644
--- a/jsf-ri/src/main/java/com/sun/faces/el/ELConstants.java
+++ b/jsf-ri/src/main/java/com/sun/faces/el/ELConstants.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -33,6 +37,7 @@
  * only if the new code is made subject to such option by the copyright
  * holder.
  */
+
 package com.sun.faces.el;
 
 /**
@@ -51,28 +56,33 @@ public interface ELConstants {
 
     public static final int FACES_CONTEXT = 5;
 
-    public static final int HEADER = 6;
+    public static final int FLASH = 6;
+
+    public static final int FACES_FLOW = 7;
 
-    public static final int HEADER_VALUES = 7;
+    public static final int HEADER = 8;
 
-    public static final int INIT_PARAM = 8;
+    public static final int HEADER_VALUES = 9;
 
-    public static final int PARAM = 9;
+    public static final int INIT_PARAM = 10;
 
-    public static final int PARAM_VALUES = 10;
+    public static final int PARAM = 11;
 
-    public static final int REQUEST = 11;
+    public static final int PARAM_VALUES = 12;
 
-    public static final int REQUEST_SCOPE = 12;
+    public static final int REQUEST = 13;
 
-    public static final int RESOURCE = 13;
+    public static final int REQUEST_SCOPE = 14;
 
-    public static final int SESSION = 14;
+    public static final int RESOURCE = 15;
 
-    public static final int SESSION_SCOPE = 15;
+    public static final int SESSION = 16;
 
-    public static final int VIEW = 16;
+    public static final int SESSION_SCOPE = 17;
 
-    public static final int VIEW_SCOPE = 17;
+    public static final int VIEW = 18;
+
+    public static final int VIEW_SCOPE = 19;
+    
     
 }
diff --git a/jsf-ri/src/main/java/com/sun/faces/el/ELContextImpl.java b/jsf-ri/src/main/java/com/sun/faces/el/ELContextImpl.java
index bfff260..c24da92 100644
--- a/jsf-ri/src/main/java/com/sun/faces/el/ELContextImpl.java
+++ b/jsf-ri/src/main/java/com/sun/faces/el/ELContextImpl.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -33,6 +37,7 @@
  * only if the new code is made subject to such option by the copyright
  * holder.
  */
+
 package com.sun.faces.el;
 
 
diff --git a/jsf-ri/src/main/java/com/sun/faces/el/ELContextListenerImpl.java b/jsf-ri/src/main/java/com/sun/faces/el/ELContextListenerImpl.java
index 1f0435a..9da8446 100644
--- a/jsf-ri/src/main/java/com/sun/faces/el/ELContextListenerImpl.java
+++ b/jsf-ri/src/main/java/com/sun/faces/el/ELContextListenerImpl.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -34,7 +38,6 @@
  * holder.
  */
 
-
 package com.sun.faces.el;
 
 import javax.faces.context.FacesContext;
diff --git a/jsf-ri/src/main/java/com/sun/faces/el/ELUtils.java b/jsf-ri/src/main/java/com/sun/faces/el/ELUtils.java
index dbc2e4d..d7a1a84 100644
--- a/jsf-ri/src/main/java/com/sun/faces/el/ELUtils.java
+++ b/jsf-ri/src/main/java/com/sun/faces/el/ELUtils.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -36,11 +40,17 @@
 
 package com.sun.faces.el;
 
+import com.sun.faces.RIConstants;
 import com.sun.faces.application.ApplicationAssociate;
 import com.sun.faces.context.flash.FlashELResolver;
 import com.sun.faces.mgbean.BeanManager;
 import com.sun.faces.util.MessageUtils;
 
+import com.sun.faces.util.ReflectionUtils;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.util.logging.Level;
+import java.util.logging.Logger;
 import javax.el.ArrayELResolver;
 import javax.el.BeanELResolver;
 import javax.el.CompositeELResolver;
@@ -64,6 +74,7 @@ import java.util.List;
 import java.util.Map;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
+import javax.el.ExpressionFactory;
 
 /**
  * <p>Utility class for EL related methods.</p>
@@ -216,7 +227,7 @@ public class ELUtils {
      * @param composite a <code>CompositeELResolver</code>
      * @param associate our ApplicationAssociate
      */
-    public static void buildFacesResolver(CompositeELResolver composite,
+    public static void buildFacesResolver(FacesCompositeELResolver composite,
                                           ApplicationAssociate associate) {
 
         if (associate == null) {
@@ -231,24 +242,47 @@ public class ELUtils {
             throw new NullPointerException(message);
         }
 
-        composite.add(IMPLICIT_RESOLVER);
+        composite.addRootELResolver(IMPLICIT_RESOLVER);
         composite.add(FLASH_RESOLVER);
-        composite.add(COMPOSITE_COMPONENT_ATTRIBUTES_EL_RESOLVER);
+        composite.addPropertyELResolver(COMPOSITE_COMPONENT_ATTRIBUTES_EL_RESOLVER);
         addELResolvers(composite, associate.getELResolversFromFacesConfig());
-        addVariableResolvers(composite, associate);
+        addVariableResolvers(composite, FacesCompositeELResolver.ELResolverChainType.Faces,
+                associate);
         addPropertyResolvers(composite, associate);
-        addELResolvers(composite, associate.getApplicationELResolvers());
-        composite.add(MANAGED_BEAN_RESOLVER);
-        composite.add(RESOURCE_RESOLVER);
-        composite.add(BUNDLE_RESOLVER);
-        composite.add(FACES_BUNDLE_RESOLVER);
-        composite.add(MAP_RESOLVER);
-        composite.add(LIST_RESOLVER);
-        composite.add(ARRAY_RESOLVER);
-        composite.add(BEAN_RESOLVER);
-        composite.add(SCOPED_RESOLVER);
+        composite.add(associate.getApplicationELResolvers());
+        composite.addRootELResolver(MANAGED_BEAN_RESOLVER);
+        composite.addPropertyELResolver(RESOURCE_RESOLVER);
+        composite.addPropertyELResolver(BUNDLE_RESOLVER);
+        composite.addRootELResolver(FACES_BUNDLE_RESOLVER);
+        addEL3_0_Resolvers(composite, associate);
+        composite.addPropertyELResolver(MAP_RESOLVER);
+        composite.addPropertyELResolver(LIST_RESOLVER);
+        composite.addPropertyELResolver(ARRAY_RESOLVER);
+        composite.addPropertyELResolver(BEAN_RESOLVER);
+        composite.addRootELResolver(SCOPED_RESOLVER);
 
     }
+    
+    private static void addEL3_0_Resolvers(FacesCompositeELResolver composite, 
+            ApplicationAssociate associate) {
+        ExpressionFactory ef = associate.getExpressionFactory();
+        Method getStreamELResolverMethod = ReflectionUtils.lookupMethod(ExpressionFactory.class, 
+                "getStreamELResolver", RIConstants.EMPTY_CLASS_ARGS);
+        if (null != getStreamELResolverMethod) {
+            try {
+                ELResolver streamELResolver = (ELResolver) 
+                        getStreamELResolverMethod.invoke(ef, (Object[]) null);
+                composite.addRootELResolver(streamELResolver);
+                // Assume that if we have getStreamELResolver, then we must have
+                // javax.el.staticFieldELResolver
+                composite.addRootELResolver((ELResolver)
+                        ReflectionUtils.newInstance("javax.el.StaticFieldELResolver"));
+                
+            } catch (Throwable t) {
+                // This is normal on containers that do not have these ELResolvers
+            }
+        }
+    }
 
 
     /**
@@ -256,7 +290,7 @@ public class ELUtils {
      * @param composite a <code>CompositeELResolver</code>
      * @param associate our ApplicationAssociate
      */
-    public static void buildJSPResolver(CompositeELResolver composite,
+    public static void buildJSPResolver(FacesCompositeELResolver composite,
                                         ApplicationAssociate associate) {
 
         if (associate == null) {
@@ -271,15 +305,16 @@ public class ELUtils {
             throw new NullPointerException(message);
         }
 
-        composite.add(IMPLICIT_JSP_RESOLVER);
+        composite.addRootELResolver(IMPLICIT_JSP_RESOLVER);
         composite.add(FLASH_RESOLVER);
-        composite.add(MANAGED_BEAN_RESOLVER);
-        composite.add(RESOURCE_RESOLVER);
-        composite.add(FACES_BUNDLE_RESOLVER);
+        composite.addRootELResolver(MANAGED_BEAN_RESOLVER);
+        composite.addPropertyELResolver(RESOURCE_RESOLVER);
+        composite.addRootELResolver(FACES_BUNDLE_RESOLVER);
         addELResolvers(composite, associate.getELResolversFromFacesConfig());
-        addVariableResolvers(composite, associate);
+        addVariableResolvers(composite, FacesCompositeELResolver.ELResolverChainType.JSP,
+	                associate);
         addPropertyResolvers(composite, associate);
-        addELResolvers(composite, associate.getApplicationELResolvers());
+        composite.add(associate.getApplicationELResolvers());
 
     }
 
@@ -594,12 +629,19 @@ public class ELUtils {
      * @param associate our ApplicationAssociate
      */
     @SuppressWarnings("deprecation")
-    private static void addVariableResolvers(CompositeELResolver target,
+    private static void addVariableResolvers(FacesCompositeELResolver target,
+                                             FacesCompositeELResolver.ELResolverChainType chainType,
                                              ApplicationAssociate associate) {
 
-        VariableResolver vr = getDelegateVR(associate, false);
+        VariableResolver vr = getDelegateVR(associate, true);
         if (vr != null) {
-            target.add(new VariableResolverChainWrapper(vr));
+            VariableResolverChainWrapper vrChainWrapper = new VariableResolverChainWrapper(vr);
+            target.addRootELResolver(vrChainWrapper);
+            if (chainType == FacesCompositeELResolver.ELResolverChainType.JSP) {
+                associate.setLegacyVRChainHeadWrapperForJsp(vrChainWrapper);
+            } else {
+                associate.setLegacyVRChainHeadWrapperForFaces(vrChainWrapper);
+            }
         }
 
     }
@@ -665,7 +707,7 @@ public class ELUtils {
 
     public static Scope getScopeForExpression(String expression) {
 
-        if (isMixedExpression(expression)) {
+        if (SharedUtils.isMixedExpression(expression)) {
             return (getNarrowestScopeFromExpression(expression));
         } else {
             return (getScopeForSingleExpression(expression));
@@ -782,40 +824,6 @@ public class ELUtils {
     }
 
 
-    /*
-    * Determine whether String is a mixed value binding expression or not.
-    */
-    public static boolean isMixedExpression(String expression) {
-
-        if (null == expression) {
-            return false;
-        }
-
-        // if it doesn't start and end with delimiters
-        return (!(expression.startsWith("#{") && expression.endsWith("}")))
-                  && isExpression(expression);
-
-    }
-
-
-    /*
-    * Determine whether String is a value binding expression or not.
-    */
-    public static boolean isExpression(String expression) {
-
-        if (null == expression) {
-            return false;
-        }
-        int start = expression.indexOf("#{");
-
-        //check to see if attribute has an expression
-        return (expression.indexOf("#{") != -1) &&
-               (start < expression.indexOf('}'));
-
-
-    }
-
-
     public static boolean isScopeValid(String scopeName) {
         if (scopeName == null) {
             return false;
diff --git a/jsf-ri/src/main/java/com/sun/faces/el/FacesCompositeELResolver.java b/jsf-ri/src/main/java/com/sun/faces/el/FacesCompositeELResolver.java
index f7a9493..71897f7 100644
--- a/jsf-ri/src/main/java/com/sun/faces/el/FacesCompositeELResolver.java
+++ b/jsf-ri/src/main/java/com/sun/faces/el/FacesCompositeELResolver.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -34,156 +38,34 @@
  * holder.
  */
 
-
 package com.sun.faces.el;
 
-import com.sun.faces.util.RequestStateManager;
-
-import java.beans.FeatureDescriptor;
-import java.util.Iterator;
-
 import javax.el.ELResolver;
-import javax.el.ELContext;
 import javax.el.CompositeELResolver;
-import javax.el.ELException;
-
-import javax.faces.context.FacesContext;
 
 /**
  * Maintains an ordered composite list of child <code>ELResolver for JSF</code>.
  *
  */
-public class FacesCompositeELResolver extends CompositeELResolver {
-    
-    public void add(ELResolver elResolver) {                                                                             
-        super.add(elResolver);
-    }
-
-    public Object getValue(ELContext context, Object base, Object property) 
-        throws ELException {
-        
-        context.setPropertyResolved(false);
-        FacesContext ctx = getFacesContext(context);
-        if (ctx == null) {
-            return null;
-        }
-        setChainType(ctx);
-        Object result = super.getValue(context, base, property);
-        clearChainType(ctx);
-        
-        return result;
-    }
-
-    public Class<?> getType(ELContext context, Object base, Object property) 
-        throws ELException {
-
-        context.setPropertyResolved(false);
-        FacesContext ctx = getFacesContext(context);
-        if (ctx == null) {
-            return null;
-        }
-        setChainType(ctx);
-        Class<?> result = super.getType(context, base, property);
-        clearChainType(ctx);
-
-        return result;
-    }
-
-    
-    public void setValue(ELContext context, Object base, Object property,
-        Object val) throws ELException {
-        context.setPropertyResolved(false);
-        FacesContext ctx = getFacesContext(context);
-        if (ctx == null) {
-            return;
-        }
-        setChainType(ctx);
-        super.setValue(context, base, property, val);
-        clearChainType(ctx);
-    }
-
-    
-    public boolean isReadOnly(ELContext context, Object base, Object property) 
-        throws ELException {
-        context.setPropertyResolved(false);
-        FacesContext ctx = getFacesContext(context);
-        if (ctx == null) {
-            return false;
-        }
-        setChainType(ctx);
-        boolean result = super.isReadOnly(context, base, property);
-        clearChainType(ctx);
-        return result;
-    }
-
-    
-    public Iterator<FeatureDescriptor> getFeatureDescriptors(ELContext context, Object base) {
-        FacesContext ctx = getFacesContext(context);
-        setChainType(ctx);
-        Iterator<FeatureDescriptor> result = super.getFeatureDescriptors(context, base);
-        clearChainType(ctx);
-        return result;
-    }
-    
-    public Class<?> getCommonPropertyType(ELContext context, Object base) {
-        return null;
-    }
-
-    /**
-     * <p><b>JSP</b> indicates this CompositeELResolver instance is the
-     * JSP chain, specified in section 5.6.1 of the spec.</p>
-     *
-     * <p><b>Faces</b> indicates this CompositeELResolver instance is the
-     * JSF chain, specified in section 5.6.2 of the spec.</p>
-     */
-
-    public enum ELResolverChainType {
-        JSP,
-        Faces
-    }
-
-    private ELResolverChainType chainType;
-
-    /**
-     * <p>Guarantee that this instance knows of what chain it is a
-     * member.</p>
-     * @param chainType the {@link ELResolverChainType} 
-     */
-    public FacesCompositeELResolver(ELResolverChainType chainType) {
-        this.chainType = chainType;
-    }
-
-    /**
-     * <p>Set a request scoped attribute indicating what kind of chain
-     * the current expression is.</p>
-     */
-
-    private void setChainType(FacesContext ctx) {
-        RequestStateManager.set(ctx,
-                                RequestStateManager.EL_RESOLVER_CHAIN_TYPE_NAME,
-                                chainType);
-    }
-
-    /**
-     * <p>Clear the request scoped attribute indicating what kind of
-     * chain the current expression is.</p>
-     */
-    
-    private void clearChainType(FacesContext ctx) {
-        RequestStateManager.remove(ctx, RequestStateManager.EL_RESOLVER_CHAIN_TYPE_NAME);
-    }
-
-
-    /**
-     * @param elContext context for the current expression evaluation
-     * @return the <code>FacesContext</code> associated with this expression
-     *  evaluation
-     */
-    private FacesContext getFacesContext(ELContext elContext) {
-
-        return (FacesContext) elContext.getContext(FacesContext.class);
-
-    }
-
+public abstract class FacesCompositeELResolver extends CompositeELResolver
+{
+  /**
+   * <p><b>JSP</b> indicates this CompositeELResolver instance is the
+   * JSP chain, specified in section 5.6.1 of the spec.</p>
+   *
+   * <p><b>Faces</b> indicates this CompositeELResolver instance is the
+   * JSF chain, specified in section 5.6.2 of the spec.</p>
+   */
+
+  public enum ELResolverChainType {
+      JSP,
+      Faces
+  }
+
+  public abstract ELResolverChainType getChainType();
+
+  public abstract void addRootELResolver(ELResolver elResolver);
+
+  public abstract void addPropertyELResolver(ELResolver elResolver);
 }
 
diff --git a/jsf-ri/src/main/java/com/sun/faces/el/FacesResourceBundleELResolver.java b/jsf-ri/src/main/java/com/sun/faces/el/FacesResourceBundleELResolver.java
index 9de5f4d..90d299c 100644
--- a/jsf-ri/src/main/java/com/sun/faces/el/FacesResourceBundleELResolver.java
+++ b/jsf-ri/src/main/java/com/sun/faces/el/FacesResourceBundleELResolver.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/el/ImplicitObjectELResolver.java b/jsf-ri/src/main/java/com/sun/faces/el/ImplicitObjectELResolver.java
index 69465df..49b83f4 100644
--- a/jsf-ri/src/main/java/com/sun/faces/el/ImplicitObjectELResolver.java
+++ b/jsf-ri/src/main/java/com/sun/faces/el/ImplicitObjectELResolver.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -34,12 +38,10 @@
  * holder.
  */
 
-
 package com.sun.faces.el;
 
 import java.beans.FeatureDescriptor;
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.Iterator;
 import java.util.Map;
 
@@ -56,17 +58,32 @@ import javax.faces.context.FacesContext;
 import com.sun.faces.util.Util;
 import com.sun.faces.util.MessageUtils;
 import com.sun.faces.component.CompositeComponentStackManager;
+import java.util.HashMap;
+import javax.faces.flow.FlowHandler;
 
 public class ImplicitObjectELResolver extends ELResolver implements ELConstants{
 
-    static String[] IMPLICIT_OBJECTS = new String[] {
+    protected static final Map<String, Integer> IMPLICIT_OBJECTS;
+
+    static
+    {
+        String[] implictNames = new String[]{
         "application", "applicationScope", "cc", "component", "cookie", "facesContext",
+        "flash",
+        "flowScope",
         "header", "headerValues", "initParam", "param", "paramValues",
         "request", "requestScope", "resource", "session", "sessionScope", 
         "view", "viewScope" };
-    static {
-        Arrays.sort(IMPLICIT_OBJECTS);
-    }
+        int nameCount = implictNames.length;
+
+        Map<String, Integer> implicitObjects = new HashMap<String, Integer>((int) (nameCount * 1.5f));
+
+        for (int nameIndex = 0; nameIndex < nameCount; nameIndex++) {
+            implicitObjects.put(implictNames[nameIndex], nameIndex);
+        }
+
+        IMPLICIT_OBJECTS = implicitObjects;
+  }
 
     public ImplicitObjectELResolver() {
     }
@@ -84,14 +101,14 @@ public class ImplicitObjectELResolver extends ELResolver implements ELConstants{
             throw new PropertyNotFoundException(message);
         }
 
-        FacesContext facesContext =
-            (FacesContext) context.getContext(FacesContext.class);
-        ExternalContext extCtx = facesContext.getExternalContext();
-        int index = Arrays.binarySearch(IMPLICIT_OBJECTS, property);
-        if (index < 0) {
+        Integer index = IMPLICIT_OBJECTS.get(property.toString());
+
+        if (index == null) {
             return null;
         } else {
-            switch (index) {
+            FacesContext facesContext = (FacesContext) context.getContext(FacesContext.class);
+            ExternalContext extCtx = facesContext.getExternalContext();
+	            switch (index) {
                 case APPLICATION:
                     context.setPropertyResolved(true);
                     return extCtx.getContext();
@@ -126,6 +143,18 @@ public class ImplicitObjectELResolver extends ELResolver implements ELConstants{
                 case FACES_CONTEXT:
                     context.setPropertyResolved(true);
                     return facesContext;
+                case FLASH:
+                    context.setPropertyResolved(true);
+                    return facesContext.getExternalContext().getFlash();
+                case FACES_FLOW:
+                    FlowHandler flowHandler = facesContext.getApplication().getFlowHandler();
+                    if (null != flowHandler) {
+                        Map<Object, Object> flowScope = flowHandler.getCurrentFlowScope();
+                        if (null != flowScope) {
+                            context.setPropertyResolved(true);
+                        }
+                        return flowScope;
+                    }
                 case HEADER:
                     context.setPropertyResolved(true);
                     return extCtx.getRequestHeaderMap();
@@ -182,9 +211,9 @@ public class ImplicitObjectELResolver extends ELResolver implements ELConstants{
             throw new PropertyNotFoundException(message);
         }
 
-        int index = Arrays.binarySearch(IMPLICIT_OBJECTS, property);
-        if (index >= 0) {
-            throw new PropertyNotWritableException((String)property);
+        Integer index = IMPLICIT_OBJECTS.get(property.toString());
+        if (index != null) {
+            throw new PropertyNotWritableException((String) property);
         }
     }
 
@@ -199,8 +228,9 @@ public class ImplicitObjectELResolver extends ELResolver implements ELConstants{
             throw new PropertyNotFoundException(message);
         }
 
-        int index = Arrays.binarySearch(IMPLICIT_OBJECTS, property);
-        if (index >= 0) {
+        Integer index = IMPLICIT_OBJECTS.get(property.toString());
+
+        if (index != null) {
             context.setPropertyResolved(true);
             return true;
         }
@@ -218,13 +248,15 @@ public class ImplicitObjectELResolver extends ELResolver implements ELConstants{
             throw new PropertyNotFoundException(message);
         }
 
-        int index = Arrays.binarySearch(IMPLICIT_OBJECTS, property);
-        if (index >= 0) {
+        Integer index = IMPLICIT_OBJECTS.get(property.toString());
+
+        if (index != null) {
             context.setPropertyResolved(true);
         }
         return null;
     }
 
+    @Override
     public Iterator<FeatureDescriptor> getFeatureDescriptors(ELContext context, Object base) {
         if (base != null) {
             return null;
@@ -234,10 +266,18 @@ public class ImplicitObjectELResolver extends ELResolver implements ELConstants{
                                            "application",false, false, true, Object.class, Boolean.TRUE));
         list.add(Util.getFeatureDescriptor("applicationScope", "applicationScope",
                                            "applicationScope",false, false, true, Map.class, Boolean.TRUE));
+        list.add(Util.getFeatureDescriptor("cc", "cc",
+                                           "cc",false, false, true, UIComponent.class, Boolean.TRUE));
+        list.add(Util.getFeatureDescriptor("component", "component",
+                                           "component",false, false, true, UIComponent.class, Boolean.TRUE));
         list.add(Util.getFeatureDescriptor("cookie", "cookie",
                                            "cookie",false, false, true, Map.class, Boolean.TRUE));
         list.add(Util.getFeatureDescriptor("facesContext", "facesContext",
                                            "facesContext",false, false, true, FacesContext.class, Boolean.TRUE));
+        list.add(Util.getFeatureDescriptor("flash", "flash",
+                                           "flash",false, false, true, Map.class, Boolean.TRUE));
+        list.add(Util.getFeatureDescriptor("flowScope", "flowScope",
+                                           "flowScope",false, false, true, Map.class, Boolean.TRUE));
         list.add(Util.getFeatureDescriptor("view", "view",
                                            "root",false, false, true, UIViewRoot.class, Boolean.TRUE));
         list.add(Util.getFeatureDescriptor("header", "header",
@@ -254,10 +294,14 @@ public class ImplicitObjectELResolver extends ELResolver implements ELConstants{
                                            "request",false, false, true, Object.class, Boolean.TRUE));
         list.add(Util.getFeatureDescriptor("requestScope", "requestScope",
                                            "requestScope",false, false, true, Map.class, Boolean.TRUE));
+        list.add(Util.getFeatureDescriptor("resource", "resource",
+                                           "resource",false, false, true, Object.class, Boolean.TRUE));
         list.add(Util.getFeatureDescriptor("session", "session",
                                            "session",false, false, true, Object.class, Boolean.TRUE));
         list.add(Util.getFeatureDescriptor("sessionScope", "sessionScope",
                                            "sessionScope",false, false, true, Map.class, Boolean.TRUE));
+        list.add(Util.getFeatureDescriptor("viewScope", "viewScope",
+                                           "viewScope",false, false, true, Map.class, Boolean.TRUE));
 
         return list.iterator();
 
diff --git a/jsf-ri/src/main/java/com/sun/faces/el/ImplicitObjectELResolverForJsp.java b/jsf-ri/src/main/java/com/sun/faces/el/ImplicitObjectELResolverForJsp.java
index 3f24a50..55fcc1f 100644
--- a/jsf-ri/src/main/java/com/sun/faces/el/ImplicitObjectELResolverForJsp.java
+++ b/jsf-ri/src/main/java/com/sun/faces/el/ImplicitObjectELResolverForJsp.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -38,7 +42,6 @@ package com.sun.faces.el;
 
 import java.beans.FeatureDescriptor;
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.Iterator;
 
 import javax.el.ELContext;
@@ -69,17 +72,23 @@ public class ImplicitObjectELResolverForJsp extends ImplicitObjectELResolver {
             throw new PropertyNotFoundException(message);
         }
 
-        FacesContext facesContext =
-            (FacesContext)context.getContext(FacesContext.class);
-
-        int index = Arrays.binarySearch(IMPLICIT_OBJECTS, property);
-        if (index < 0) {
-            return null;
+        Integer index = IMPLICIT_OBJECTS.get(property.toString());
+        
+        if (index == null)
+        {
+          return null;
         }
-        switch (index) {
+ 
+        FacesContext facesContext =
+          (FacesContext)context.getContext(FacesContext.class);
+       
+        switch (index.intValue()) {
             case FACES_CONTEXT:
                 context.setPropertyResolved(true);
                 return facesContext;
+            case FLASH:
+                context.setPropertyResolved(true);
+                return facesContext.getExternalContext().getFlash();
             case VIEW:
                 context.setPropertyResolved(true);
                 return facesContext.getViewRoot();
@@ -106,8 +115,9 @@ public class ImplicitObjectELResolverForJsp extends ImplicitObjectELResolver {
             throw new PropertyNotFoundException(message);
         }
 
-        int index = Arrays.binarySearch(IMPLICIT_OBJECTS, property);
-        if (index < 0) {
+        Integer index = IMPLICIT_OBJECTS.get(property.toString());
+        
+        if (index == null) {
             return null;
         }
         switch (index) {
@@ -131,8 +141,8 @@ public class ImplicitObjectELResolverForJsp extends ImplicitObjectELResolver {
             throw new PropertyNotFoundException(message);
         }
 
-        int index = Arrays.binarySearch(IMPLICIT_OBJECTS, property);
-        if (index < 0) {
+        Integer index = IMPLICIT_OBJECTS.get(property.toString());
+        if (index == null) {
             return;
         }
         switch (index) {
@@ -158,8 +168,8 @@ public class ImplicitObjectELResolverForJsp extends ImplicitObjectELResolver {
         }
         // return value will be ignored unless context.propertyResolved is
         // set to true.
-        int index = Arrays.binarySearch(IMPLICIT_OBJECTS, property);
-        if (index < 0) {
+        Integer index = IMPLICIT_OBJECTS.get(property.toString());
+        if (index == null) {
             return false;
         }
         switch (index) {
diff --git a/jsf-ri/src/main/java/com/sun/faces/el/ManagedBeanELResolver.java b/jsf-ri/src/main/java/com/sun/faces/el/ManagedBeanELResolver.java
index 2a4bc01..2f60f41 100644
--- a/jsf-ri/src/main/java/com/sun/faces/el/ManagedBeanELResolver.java
+++ b/jsf-ri/src/main/java/com/sun/faces/el/ManagedBeanELResolver.java
@@ -1,8 +1,51 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+/*
+ * $Id: ManagedBeanELResolver.java,v 1.19.4.6 2010/04/13 19:38:42 rogerk Exp $
+ */
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * 
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
@@ -10,7 +53,7 @@
  * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
  * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- *
+ * 
  * When distributing the software, include this License Header Notice in each
  * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
  * Sun designates this particular file as subject to the "Classpath" exception
@@ -19,9 +62,9 @@
  * Header, with the fields enclosed by brackets [] replaced by your own
  * identifying information: "Portions Copyrighted [year]
  * [name of copyright owner]"
- *
+ * 
  * Contributor(s):
- *
+ * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -53,6 +96,7 @@ import java.util.Collections;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
+import javax.faces.context.ExternalContext;
 
 public class ManagedBeanELResolver extends ELResolver {
 
@@ -70,15 +114,17 @@ public class ManagedBeanELResolver extends ELResolver {
             throw new PropertyNotFoundException(message);
         }
 
-        return resolveBean(context, property);
+        return resolveBean(context, property, true);
+
     }
 
+
     public Class<?> getType(ELContext context, Object base, Object property)
         throws ELException {
 
         if (base == null && property == null) {
             String message = MessageUtils.getExceptionMessageString
-                (MessageUtils.NULL_PARAMETERS_ERROR_MESSAGE_ID, "base and property");
+                (MessageUtils.NULL_PARAMETERS_ERROR_MESSAGE_ID, "property");
             throw new PropertyNotFoundException(message);
         }
 
@@ -86,8 +132,11 @@ public class ManagedBeanELResolver extends ELResolver {
 
     }
 
-    public void setValue(ELContext context, Object base, Object property,
-                          Object val) throws ELException {
+    public void setValue(ELContext context,
+                         Object base,
+                         Object property,
+                         Object val)
+    throws ELException {
 
         if (base == null && property == null) {
             String message = MessageUtils.getExceptionMessageString
@@ -96,7 +145,12 @@ public class ManagedBeanELResolver extends ELResolver {
         }
 
         if (base == null) {
-            resolveBean(context, property);
+            // create the bean if it doesn't exist.  We won't mark the property
+            // as resolved in this case, since the spec requires us to actually
+            // wait to set the value until the ScopeAttributeELResolved so that
+            // implicit scopes with higher priority than this one have a crack
+            // at resolving the bean first
+            resolveBean(context, property, false);
         }
 
     }
@@ -177,7 +231,7 @@ public class ManagedBeanELResolver extends ELResolver {
 
     }
 
-    private Object resolveBean(ELContext context, Object property) {
+    private Object resolveBean(ELContext context, Object property, boolean markAsResolvedIfCreated) {
         Object result = null;
         BeanManager manager = getBeanManager();
         if (manager != null) {
@@ -186,15 +240,28 @@ public class ManagedBeanELResolver extends ELResolver {
             if (builder != null) {
                 FacesContext facesContext = (FacesContext)
                     context.getContext(FacesContext.class);
+
+                // JAVASERVERFACES-2989: Make sure to check request, session, and application.
+                ExternalContext extContext = facesContext.getExternalContext();
+                if (extContext.getRequestMap().containsKey(beanName)) {
+                    return null;
+                } else if (null != extContext.getSession(false) &&
+                           extContext.getSessionMap().containsKey(beanName)) {
+                    return null;
+                } else if (extContext.getApplicationMap().containsKey(beanName)) {
+                    return null;
+                }                
+                
                 result = manager.getBeanFromScope(beanName, builder, facesContext);
                 if (result == null) {
-                    result = manager.create(beanName, builder, facesContext);
+                        result = manager.create(beanName, builder, facesContext);
                 }
-                context.setPropertyResolved(result != null);
+                context.setPropertyResolved(markAsResolvedIfCreated && (result != null));
             }
         }
-    
+
         return result;
     }
 
+
 }
diff --git a/jsf-ri/src/main/java/com/sun/faces/el/PropertyResolverChainWrapper.java b/jsf-ri/src/main/java/com/sun/faces/el/PropertyResolverChainWrapper.java
index 362be97..d319315 100644
--- a/jsf-ri/src/main/java/com/sun/faces/el/PropertyResolverChainWrapper.java
+++ b/jsf-ri/src/main/java/com/sun/faces/el/PropertyResolverChainWrapper.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -34,7 +38,6 @@
  * holder.
  */
 
-
 package com.sun.faces.el;
 
 import javax.el.ELContext;
diff --git a/jsf-ri/src/main/java/com/sun/faces/el/PropertyResolverImpl.java b/jsf-ri/src/main/java/com/sun/faces/el/PropertyResolverImpl.java
index 41c5b33..91bf41f 100644
--- a/jsf-ri/src/main/java/com/sun/faces/el/PropertyResolverImpl.java
+++ b/jsf-ri/src/main/java/com/sun/faces/el/PropertyResolverImpl.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/el/ResourceELResolver.java b/jsf-ri/src/main/java/com/sun/faces/el/ResourceELResolver.java
index 4accfac..64daa73 100644
--- a/jsf-ri/src/main/java/com/sun/faces/el/ResourceELResolver.java
+++ b/jsf-ri/src/main/java/com/sun/faces/el/ResourceELResolver.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -34,11 +38,11 @@
  * holder.
  */
 
-
 package com.sun.faces.el;
 
 import java.beans.FeatureDescriptor;
 import java.util.Iterator;
+import java.util.Map;
 
 import javax.el.ELContext;
 import javax.el.ELException;
@@ -46,11 +50,11 @@ import javax.el.ELResolver;
 import javax.el.PropertyNotFoundException;
 import javax.faces.application.Resource;
 import javax.faces.application.ResourceHandler;
+import javax.faces.component.UIComponent;
 import javax.faces.context.FacesContext;
 
 import com.sun.faces.util.MessageUtils;
 import com.sun.faces.util.Util;
-import javax.faces.component.UIComponent;
 
 /**
  * ELResolver to resolve expressions like the following:
@@ -108,7 +112,9 @@ public class ResourceELResolver extends ELResolver {
                     // RELEASE_PENDING i18n
                     throw new ELException("Invalid resource format.  Property " + prop + " contains more than one colon (:)");
                 }
-                String[] parts = Util.split(prop, ":");
+                Map<String, Object> appMap = FacesContext.getCurrentInstance().getExternalContext().getApplicationMap();
+
+                String[] parts = Util.split(appMap, prop, ":");
                 
                 // If the enclosing entity for this expression is itself 
                 // a resource, the "this" syntax for the library name must
diff --git a/jsf-ri/src/main/java/com/sun/faces/el/ScopedAttributeELResolver.java b/jsf-ri/src/main/java/com/sun/faces/el/ScopedAttributeELResolver.java
index bb02826..f25739b 100644
--- a/jsf-ri/src/main/java/com/sun/faces/el/ScopedAttributeELResolver.java
+++ b/jsf-ri/src/main/java/com/sun/faces/el/ScopedAttributeELResolver.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -73,7 +77,7 @@ public class ScopedAttributeELResolver extends ELResolver {
             throw new PropertyNotFoundException(message);
         }
         context.setPropertyResolved(true);
-        String attribute = (String) property;
+        String attribute = property.toString();
         FacesContext facesContext = (FacesContext)
             context.getContext(FacesContext.class);
         ExternalContext ec = facesContext.getExternalContext();
@@ -115,10 +119,8 @@ public class ScopedAttributeELResolver extends ELResolver {
         ApplicationAssociate associate = ApplicationAssociate.getCurrentInstance();
         if (associate != null) {
             BeanManager manager = associate.getBeanManager();
-            if (manager != null) {
-                if (manager.isManaged(attribute)) {
-                    return manager.getBeanFromScope(attribute, facesContext);
-                }
+            if (manager != null && manager.isManaged(attribute)) {
+                return manager.getBeanFromScope(attribute, facesContext);
             }
         }
 
@@ -161,7 +163,7 @@ public class ScopedAttributeELResolver extends ELResolver {
         ExternalContext ec = facesContext.getExternalContext();
         if ((ec.getRequestMap().get(attribute)) != null) {
             ec.getRequestMap().put(attribute, val);
-        } else if ((facesContext.getViewRoot().getViewMap().get(attribute)) != null) {
+        } else if ((facesContext.getViewRoot()) != null && (facesContext.getViewRoot().getViewMap().get(attribute)) != null) {
             facesContext.getViewRoot().getViewMap().put(attribute, val);
         } else if ((ec.getSessionMap().get(attribute)) != null) {
             ec.getSessionMap().put(attribute, val);
diff --git a/jsf-ri/src/main/java/com/sun/faces/el/VariableResolverChainWrapper.java b/jsf-ri/src/main/java/com/sun/faces/el/VariableResolverChainWrapper.java
index 3d9cee1..77b7582 100644
--- a/jsf-ri/src/main/java/com/sun/faces/el/VariableResolverChainWrapper.java
+++ b/jsf-ri/src/main/java/com/sun/faces/el/VariableResolverChainWrapper.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -60,11 +64,20 @@ public class VariableResolverChainWrapper extends ELResolver {
         this.legacyVR = variableResolver;
     }
 
+    public void setWrapped(VariableResolver newVR) {
+        this.legacyVR = newVR;
+    }
+
     @Override
     @SuppressWarnings("deprecation")
     public Object getValue(ELContext context, Object base, Object property)
         throws ELException {
 
+        // Don't call into the chain unless it's been decorated.
+        if (legacyVR instanceof ChainAwareVariableResolver) {
+            return null;
+        }
+
         if (base != null) {
             return null;
         }
@@ -79,12 +92,12 @@ public class VariableResolverChainWrapper extends ELResolver {
         FacesContext facesContext = (FacesContext)
             context.getContext(FacesContext.class);
         String propString = property.toString();
+        Map<String,Object> stateMap = RequestStateManager.getStateMap(facesContext);
         try {
         // If we are already in the midst of an expression evaluation
         // that touched this resolver...
             //noinspection unchecked
-            List<String> varNames = (List<String>) RequestStateManager.get(facesContext,
-                                                                           RequestStateManager.REENTRANT_GUARD);
+            List<String> varNames = (List<String>) stateMap.get(RequestStateManager.REENTRANT_GUARD);
             if (varNames != null
                  && !varNames.isEmpty()
                  && varNames.contains(propString)) {
@@ -95,9 +108,7 @@ public class VariableResolverChainWrapper extends ELResolver {
             // Make sure subsequent calls don't take action.
             if (varNames == null) {
                 varNames = new ArrayList<String>();
-                RequestStateManager.set(facesContext,
-                                        RequestStateManager.REENTRANT_GUARD,
-                                        varNames);
+                stateMap.put(RequestStateManager.REENTRANT_GUARD, varNames);
             }
             varNames.add(propString);
             
@@ -109,8 +120,7 @@ public class VariableResolverChainWrapper extends ELResolver {
         } finally {
             // Make sure to remove the guard after the call returns
             //noinspection unchecked
-            List<String> varNames = (List<String>) RequestStateManager.get(facesContext,
-                                                                           RequestStateManager.REENTRANT_GUARD);
+            List<String> varNames = (List<String>) stateMap.get(RequestStateManager.REENTRANT_GUARD);
             if (varNames != null && !varNames.isEmpty()) {
                 varNames.remove(propString);
             }
@@ -125,6 +135,11 @@ public class VariableResolverChainWrapper extends ELResolver {
     public Class<?> getType(ELContext context, Object base, Object property)
         throws ELException {
 
+        // Don't call into the chain unless it's been decorated.
+        if (legacyVR instanceof ChainAwareVariableResolver) {
+            return null;
+        }
+
         Object result = getValue(context, base, property);
         context.setPropertyResolved(result != null);
         if (result != null) {
@@ -136,14 +151,25 @@ public class VariableResolverChainWrapper extends ELResolver {
     @Override
     public void  setValue(ELContext context, Object base, Object property,
                           Object val) throws ELException {
-    if (null == base && null == property) {
-        throw new PropertyNotFoundException();
-    }
+        // Don't call into the chain unless it's been decorated.
+        if (legacyVR instanceof ChainAwareVariableResolver) {
+            return;
+        }
+
+        if (null == base && null == property) {
+            throw new PropertyNotFoundException();
+        }
     }
 
     @Override
     public boolean isReadOnly(ELContext context, Object base, Object property)
         throws ELException {
+
+        // Don't call into the chain unless it's been decorated.
+        if (legacyVR instanceof ChainAwareVariableResolver) {
+            return false;
+        }
+
         if (null == base && null == property) {
         throw new PropertyNotFoundException();
     }
@@ -158,6 +184,12 @@ public class VariableResolverChainWrapper extends ELResolver {
 
     @Override
     public Class<?> getCommonPropertyType(ELContext context, Object base) {
+
+        // Don't call into the chain unless it's been decorated.
+        if (legacyVR instanceof ChainAwareVariableResolver) {
+            return null;
+        }
+        
         if ( base == null ) {
             return String.class;
         }
diff --git a/jsf-ri/src/main/java/com/sun/faces/el/VariableResolverImpl.java b/jsf-ri/src/main/java/com/sun/faces/el/VariableResolverImpl.java
index 4a02aaa..35dff24 100644
--- a/jsf-ri/src/main/java/com/sun/faces/el/VariableResolverImpl.java
+++ b/jsf-ri/src/main/java/com/sun/faces/el/VariableResolverImpl.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -94,4 +98,8 @@ public class VariableResolverImpl extends VariableResolver {
         this.delegate = delegate;
 
     }
+
+    public VariableResolver getDelegate() {
+        return this.delegate;
+    }
 }
diff --git a/jsf-ri/src/main/java/com/sun/faces/ext/component/UIFocus.java b/jsf-ri/src/main/java/com/sun/faces/ext/component/UIFocus.java
index 78a218e..20e111a 100644
--- a/jsf-ri/src/main/java/com/sun/faces/ext/component/UIFocus.java
+++ b/jsf-ri/src/main/java/com/sun/faces/ext/component/UIFocus.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -51,4 +55,4 @@ public class UIFocus extends UIComponentBase {
     public String getFamily() {
         return FAMILY;
     }
-}  
\ No newline at end of file
+}  
diff --git a/jsf-ri/src/main/java/com/sun/faces/ext/render/FocusHTMLRenderer.java b/jsf-ri/src/main/java/com/sun/faces/ext/render/FocusHTMLRenderer.java
index 7d7b346..5458238 100644
--- a/jsf-ri/src/main/java/com/sun/faces/ext/render/FocusHTMLRenderer.java
+++ b/jsf-ri/src/main/java/com/sun/faces/ext/render/FocusHTMLRenderer.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/ext/taglib/CreditCardValidatorTag.java b/jsf-ri/src/main/java/com/sun/faces/ext/taglib/CreditCardValidatorTag.java
index 4cd05d2..3c8508a 100644
--- a/jsf-ri/src/main/java/com/sun/faces/ext/taglib/CreditCardValidatorTag.java
+++ b/jsf-ri/src/main/java/com/sun/faces/ext/taglib/CreditCardValidatorTag.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -33,6 +37,7 @@
  * only if the new code is made subject to such option by the copyright
  * holder.
  */
+
 package com.sun.faces.ext.taglib;
 
 import com.sun.faces.ext.validator.CreditCardValidator;
diff --git a/jsf-ri/src/main/java/com/sun/faces/ext/taglib/FocusTag.java b/jsf-ri/src/main/java/com/sun/faces/ext/taglib/FocusTag.java
index 3a79bb9..b77b4b1 100644
--- a/jsf-ri/src/main/java/com/sun/faces/ext/taglib/FocusTag.java
+++ b/jsf-ri/src/main/java/com/sun/faces/ext/taglib/FocusTag.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -93,4 +97,4 @@ public class FocusTag extends UIComponentELTag {
         this.forID = forID;
     }
     
-}
\ No newline at end of file
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/ext/validator/CreditCardValidator.java b/jsf-ri/src/main/java/com/sun/faces/ext/validator/CreditCardValidator.java
index bdeaba7..1b76c5a 100644
--- a/jsf-ri/src/main/java/com/sun/faces/ext/validator/CreditCardValidator.java
+++ b/jsf-ri/src/main/java/com/sun/faces/ext/validator/CreditCardValidator.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -33,6 +37,7 @@
  * only if the new code is made subject to such option by the copyright
  * holder.
  */
+
 package com.sun.faces.ext.validator;
 
 import javax.faces.validator.Validator;
diff --git a/jsf-ri/src/main/java/com/sun/faces/ext/validator/MojarraMessageFactory.java b/jsf-ri/src/main/java/com/sun/faces/ext/validator/MojarraMessageFactory.java
index fd438b1..5b85a4d 100644
--- a/jsf-ri/src/main/java/com/sun/faces/ext/validator/MojarraMessageFactory.java
+++ b/jsf-ri/src/main/java/com/sun/faces/ext/validator/MojarraMessageFactory.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -33,6 +37,7 @@
  * only if the new code is made subject to such option by the copyright
  * holder.
  */
+
 package com.sun.faces.ext.validator;
 
 import javax.el.ValueExpression;
@@ -48,6 +53,8 @@ import java.text.MessageFormat;
 import java.util.Locale;
 import java.util.MissingResourceException;
 import java.util.ResourceBundle;
+import java.util.logging.Level;
+import java.util.logging.Logger;
 
 /**
  * 
@@ -56,6 +63,8 @@ import java.util.ResourceBundle;
  */
 class MojarraMessageFactory {
 
+    private static final Logger LOGGER = Logger.getLogger(MojarraMessageFactory.class.getPackage().getName());
+    
     private MojarraMessageFactory() {
     }
 
@@ -153,7 +162,9 @@ class MojarraMessageFactory {
                     summary = bundle.getString(messageId);
                     detail = bundle.getString(messageId + "_detail");
                 } catch (MissingResourceException e) {
-                    // ignore
+                    if (LOGGER.isLoggable(Level.FINEST)) {
+                        LOGGER.log(Level.FINEST, "Unable to get resource", e);
+                    }
                 }
             }
         }
@@ -176,7 +187,9 @@ class MojarraMessageFactory {
                 }
                 detail = bundle.getString(messageId + "_detail");
             } catch (MissingResourceException e) {
-                // ignore
+                if (LOGGER.isLoggable(Level.FINEST)) {
+                    LOGGER.log(Level.FINEST, "Unable to get resource", e);
+                }
             }
         }
         // At this point, we have a summary and a bundle.     
diff --git a/jsf-ri/src/main/java/com/sun/faces/ext/validator/mojarraMessages.properties b/jsf-ri/src/main/java/com/sun/faces/ext/validator/mojarraMessages.properties
index 95c52f4..96eb16f 100644
--- a/jsf-ri/src/main/java/com/sun/faces/ext/validator/mojarraMessages.properties
+++ b/jsf-ri/src/main/java/com/sun/faces/ext/validator/mojarraMessages.properties
@@ -1,3 +1,43 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
 # comment
 
 com.sun.faces.ext.validator.regexValidator.PATTERN_NOT_SET=Regex pattern must be set.
@@ -13,4 +53,4 @@ com.sun.faces.ext.validator.creditcardValidator.NOT_STRING_detail=Only string va
 com.sun.faces.ext.validator.creditcardValidator.INVALID_CHARS=Invalid characters in value.
 com.sun.faces.ext.validator.creditcardValidator.INVALID_CHARS_detail=Invalid characters in value - only numbers, spaces and dashes are allowed.
 com.sun.faces.ext.validator.creditcardValidator.INVALID_NUMBER=Not a valid credit card number.
-com.sun.faces.ext.validator.creditcardValidator.INVALID_NUMBER_detail=Not a valid credit card number.
\ No newline at end of file
+com.sun.faces.ext.validator.creditcardValidator.INVALID_NUMBER_detail=Not a valid credit card number.
diff --git a/jsf-ri/src/main/java/com/sun/faces/ext/validator/mojarraMessages_en.properties b/jsf-ri/src/main/java/com/sun/faces/ext/validator/mojarraMessages_en.properties
index 4d02d73..6d374e6 100644
--- a/jsf-ri/src/main/java/com/sun/faces/ext/validator/mojarraMessages_en.properties
+++ b/jsf-ri/src/main/java/com/sun/faces/ext/validator/mojarraMessages_en.properties
@@ -1,3 +1,43 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
 # comment
 
 com.sun.faces.ext.validator.regexValidator.PATTERN_NOT_SET=Regex pattern must be set.
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/Facelet.java b/jsf-ri/src/main/java/com/sun/faces/facelets/Facelet.java
deleted file mode 100644
index bef3ec6..0000000
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/Facelet.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- *
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- *
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- *
- * Contributor(s):
- *
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- *
- *
- * This file incorporates work covered by the following copyright and
- * permission notice:
- *
- * Copyright 2005-2007 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
-package com.sun.faces.facelets;
-
-import javax.el.ELException;
-import javax.faces.FacesException;
-import javax.faces.component.UIComponent;
-import javax.faces.context.FacesContext;
-import javax.faces.view.facelets.FaceletException;
-import java.io.IOException;
-
-/**
- * The parent or root object in a FaceletHandler composition. The Facelet will
- * take care of populating the passed UIComponent parent in relation to the
- * create/restore lifecycle of JSF.
- * 
- * @author Jacob Hookom
- */
-public abstract class Facelet {
-
-    /**
-     * The passed UIComponent parent will be populated/restored in accordance
-     * with the JSF 1.2 specification.
-     * 
-     * @param facesContext
-     *            The current FacesContext (Should be the same as
-     *            FacesContext.getInstance())
-     * @param parent
-     *            The UIComponent to populate in a compositional fashion. In
-     *            most cases a Facelet will be base a UIViewRoot.
-     * @throws IOException
-     * @throws FacesException
-     * @throws FaceletException
-     * @throws ELException
-     */
-    public abstract void apply(FacesContext facesContext, UIComponent parent)
-    throws IOException;
-}
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/FaceletCache.java b/jsf-ri/src/main/java/com/sun/faces/facelets/FaceletCache.java
index 0ba7ea6..43c8ee0 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/FaceletCache.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/FaceletCache.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -40,12 +44,13 @@ import java.io.IOException;
 
 import java.net.URL;
 
-
+ at Deprecated
 public abstract class FaceletCache<V> {
     
     /**
      * Factory interface for creating Facelets.
      */
+    @Deprecated
     public interface InstanceFactory<V> {
         public V newInstance(final URL key) throws IOException;
     }
@@ -55,7 +60,6 @@ public abstract class FaceletCache<V> {
      * @param url URL for the Facelet being retrieved
      * @return cached Facelet instance, If no instance is available,
      * it will be created using the Facelet InstanceFactory and stored in the cache
-     * @see getFaceletInstanceFactory
      */
     public abstract V getFacelet(URL url) throws IOException;
 
@@ -71,7 +75,6 @@ public abstract class FaceletCache<V> {
      * @param url URL for the Metadata Facelet being retrieved
      * @return cached Metadata Facelet instance, If no instance is available,
      * it will be created using the Metadata Facelet InstanceFactory and stored in the cache
-     * @see getMetadataFaceletInstanceFactory
      */
     public abstract V getMetadataFacelet(URL url) throws IOException;
 
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/FaceletContextImplBase.java b/jsf-ri/src/main/java/com/sun/faces/facelets/FaceletContextImplBase.java
index fb005ae..d54379e 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/FaceletContextImplBase.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/FaceletContextImplBase.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/FaceletFactory.java b/jsf-ri/src/main/java/com/sun/faces/facelets/FaceletFactory.java
deleted file mode 100644
index ea71bf5..0000000
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/FaceletFactory.java
+++ /dev/null
@@ -1,125 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- *
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- *
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- *
- * Contributor(s):
- *
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- *
- *
- * This file incorporates work covered by the following copyright and
- * permission notice:
- *
- * Copyright 2005-2007 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
-package com.sun.faces.facelets;
-
-import javax.el.ELException;
-import javax.faces.FacesException;
-import javax.faces.view.facelets.FaceletException;
-import javax.faces.view.facelets.ResourceResolver;
-import java.io.IOException;
-import java.net.URL;
-
-/**
- * FaceletFactory for producing Facelets relative to the context of the
- * underlying implementation.
- * 
- * @author Jacob Hookom
- */
-public abstract class FaceletFactory {
-
-    private static ThreadLocal<FaceletFactory> INSTANCE =
-          new ThreadLocal<FaceletFactory>();
-
-    /**
-     * Return a Facelet instance as specified by the file at the passed URI.
-     * 
-     * @param uri
-     * @return
-     * @throws IOException
-     * @throws FaceletException
-     * @throws FacesException
-     * @throws ELException
-     */
-    public abstract Facelet getFacelet(String uri) throws IOException;
-    
-    public abstract Facelet getFacelet(URL url) throws IOException;
-
-    public abstract Facelet getMetadataFacelet(String uri) throws IOException;
-
-    public abstract Facelet getMetadataFacelet(URL url) throws IOException;
-
-    public abstract ResourceResolver getResourceResolver();
-
-    public abstract long getRefreshPeriod();
-
-    /**
-     * NOT CURRENTLY USED.  However, this class may be moved to the API and
-     * the TL lookup may end up being the preferred way to get a hold of this
-     * instance.
-     *
-     * Set the static instance
-     * 
-     * @param factory
-     */
-    public static void setInstance(FaceletFactory factory) {
-        if (factory == null) {
-            INSTANCE.remove();
-        } else {
-            INSTANCE.set(factory);
-        }
-    }
-
-    /**
-     * NOT CURRENTLY USED.  However, this class may be moved to the API and
-     * the TL lookup may end up being the preferred way to get a hold of this
-     * instance.
-     * 
-     * @return
-     */
-    public static FaceletFactory getInstance() {
-        return INSTANCE.get();
-    }
-}
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/PrivateApiFaceletCacheAdapter.java b/jsf-ri/src/main/java/com/sun/faces/facelets/PrivateApiFaceletCacheAdapter.java
new file mode 100644
index 0000000..4d6b852
--- /dev/null
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/PrivateApiFaceletCacheAdapter.java
@@ -0,0 +1,113 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.facelets;
+
+import com.sun.faces.facelets.FaceletCache.InstanceFactory;
+import java.io.IOException;
+import java.net.URL;
+import javax.faces.view.facelets.FaceletCache;
+import javax.faces.view.facelets.FaceletCache.MemberFactory;
+
+public class PrivateApiFaceletCacheAdapter<V> extends FaceletCache<V> {
+
+    private com.sun.faces.facelets.FaceletCache<V> privateApi;
+
+    public PrivateApiFaceletCacheAdapter(com.sun.faces.facelets.FaceletCache<V> privateApi) {
+        this.privateApi = privateApi;
+    }
+
+    @Override
+    public V getFacelet(URL url) throws IOException {
+        return privateApi.getFacelet(url);
+    }
+
+    @Override
+    public V getViewMetadataFacelet(URL url) throws IOException {
+        return privateApi.getMetadataFacelet(url);
+    }
+
+    @Override
+    public boolean isFaceletCached(URL url) {
+        return privateApi.isFaceletCached(url);
+    }
+
+    @Override
+    public boolean isViewMetadataFaceletCached(URL url) {
+        return privateApi.isMetadataFaceletCached(url);
+    }
+
+    private MemberFactory<V> memberFactory;
+    private MemberFactory<V> metadataMemberFactory;
+
+    @Override
+    public void setMemberFactories(final MemberFactory<V> faceletFactory, 
+            final MemberFactory<V> viewMetadataFaceletFactory) {
+        InstanceFactory<V> instanceFactory = new InstanceFactory<V>() {
+
+            public V newInstance(URL key) throws IOException {
+                return faceletFactory.newInstance(key);
+            }
+
+        };
+        InstanceFactory<V> metadataInstanceFactory = new InstanceFactory<V>() {
+
+            public V newInstance(URL key) throws IOException {
+                return viewMetadataFaceletFactory.newInstance(key);
+            }
+
+        };
+
+        privateApi.init(instanceFactory, metadataInstanceFactory);
+    }
+
+    @Override
+    public MemberFactory<V> getMemberFactory() {
+        return memberFactory;
+    }
+
+    @Override
+    public MemberFactory<V> getMetadataMemberFactory() {
+        return metadataMemberFactory;
+    }
+
+
+
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/StateWriter.java b/jsf-ri/src/main/java/com/sun/faces/facelets/StateWriter.java
index 83f0159..bb009d4 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/StateWriter.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/StateWriter.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -52,8 +56,6 @@
  * limitations under the License.
  */
 
-
-
 package com.sun.faces.facelets;
 
 import com.sun.faces.facelets.util.FastWriter;
@@ -173,4 +175,4 @@ final class StateWriter extends Writer {
     }
 
     static private final ThreadLocal CURRENT_WRITER = new ThreadLocal();
-}
\ No newline at end of file
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/TemplateClient.java b/jsf-ri/src/main/java/com/sun/faces/facelets/TemplateClient.java
index 94d98dc..e679e15 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/TemplateClient.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/TemplateClient.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -52,15 +56,10 @@
  * limitations under the License.
  */
 
-
-
 package com.sun.faces.facelets;
 
-import javax.el.ELException;
-import javax.faces.FacesException;
 import javax.faces.component.UIComponent;
 import javax.faces.view.facelets.FaceletContext;
-import javax.faces.view.facelets.FaceletException;
 import java.io.IOException;
 
 /**
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/AbstractUIHandler.java b/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/AbstractUIHandler.java
index e621a65..ee909b2 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/AbstractUIHandler.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/AbstractUIHandler.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -52,7 +56,6 @@
  * limitations under the License.
  */
 
-
 package com.sun.faces.facelets.compiler;
 
 import com.sun.faces.facelets.tag.jsf.ComponentSupport;
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/AttributeInstruction.java b/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/AttributeInstruction.java
index 3a93c58..2c6fc2b 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/AttributeInstruction.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/AttributeInstruction.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -52,7 +56,6 @@
  * limitations under the License.
  */
 
-
 package com.sun.faces.facelets.compiler;
 
 
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/CommentInstruction.java b/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/CommentInstruction.java
index 6d59456..5125979 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/CommentInstruction.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/CommentInstruction.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -52,8 +56,6 @@
  * limitations under the License.
  */
 
-
-
 package com.sun.faces.facelets.compiler;
 
 import com.sun.faces.facelets.el.ELText;
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/CompilationManager.java b/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/CompilationManager.java
index 456b5ef..6520e45 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/CompilationManager.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/CompilationManager.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -52,10 +56,10 @@
  * limitations under the License.
  */
 
-
-
 package com.sun.faces.facelets.compiler;
 
+import com.sun.faces.RIConstants;
+import com.sun.faces.config.WebConfiguration;
 import com.sun.faces.facelets.tag.TagAttributesImpl;
 import com.sun.faces.facelets.tag.TagLibrary;
 import com.sun.faces.facelets.tag.composite.CompositeLibrary;
@@ -68,6 +72,7 @@ import com.sun.faces.util.FacesLogger;
 
 import javax.faces.view.facelets.*;
 import java.util.ArrayList;
+import java.util.Iterator;
 import java.util.List;
 import java.util.Stack;
 import java.util.logging.Level;
@@ -102,6 +107,8 @@ final class CompilationManager {
     private final String alias;
     
     private CompilationMessageHolder messageHolder = null;
+
+    private WebConfiguration config;
     
     public CompilationManager(String alias, Compiler compiler) {
         
@@ -125,9 +132,11 @@ final class CompilationManager {
         // our compilationunit stack
         this.units = new Stack<CompilationUnit>();
         this.units.push(new CompilationUnit());
+
+        config = WebConfiguration.getInstance();
         
     }
-    
+        
     private InterfaceUnit interfaceUnit;
     private InterfaceUnit getInterfaceUnit() {
         return interfaceUnit;
@@ -139,6 +148,14 @@ final class CompilationManager {
         }
         return messageHolder;
     }
+
+    public String getAlias() {
+        return alias;
+    }
+
+    public WebConfiguration getWebConfiguration() {
+        return config;
+    }
     
     public void setCompilationMessageHolder(CompilationMessageHolder messageHolder) {
         this.messageHolder = messageHolder;
@@ -243,10 +260,15 @@ final class CompilationManager {
         	if (log.isLoggable(Level.FINE)) {
         		log.fine("Composition Found, Popping Parent Tags");
         	}
+           
+            CompilationUnit viewRootUnit = getViewRootUnitFromStack(units);
             this.units.clear();
             NamespaceUnit nsUnit = this.namespaceManager
                     .toNamespaceUnit(this.tagLibrary);
             this.units.push(nsUnit);
+            if (viewRootUnit != null) {
+                this.currentUnit().addChild(viewRootUnit);
+            }
             this.startUnit(new TrimmedTagUnit(this.tagLibrary, qname[0], qname[1], t, this
                     .nextTagId()));
             if (log.isLoggable(Level.FINE)) {
@@ -343,9 +365,10 @@ final class CompilationManager {
             log.fine("Namespace Pushed " + prefix + ": " + uri);
         }
 
+        boolean alreadyPresent = this.namespaceManager.getNamespace(prefix) != null;
         this.namespaceManager.pushNamespace(prefix, uri);
         NamespaceUnit unit;
-        if (this.currentUnit() instanceof NamespaceUnit) {
+        if (this.currentUnit() instanceof NamespaceUnit && !alreadyPresent) {
             unit = (NamespaceUnit) this.currentUnit();
         } else {
             unit = new NamespaceUnit(this.tagLibrary);
@@ -374,16 +397,16 @@ final class CompilationManager {
         }
     }
 
-    private CompilationUnit searchUnits(Class type) {
-        CompilationUnit unit = null;
-        int i = this.units.size();
-        while (unit == null && --i >= 0) {
-            if (type.isAssignableFrom(this.units.get(i).getClass())) {
-                unit = (CompilationUnit) this.units.get(i);
-            }
-        }
-        return unit;
-    }
+//    private CompilationUnit searchUnits(Class type) {
+//        CompilationUnit unit = null;
+//        int i = this.units.size();
+//        while (unit == null && --i >= 0) {
+//            if (type.isAssignableFrom(this.units.get(i).getClass())) {
+//                unit = (CompilationUnit) this.units.get(i);
+//            }
+//        }
+//        return unit;
+//    }
 
     private void startUnit(CompilationUnit unit) {
 
@@ -404,27 +427,27 @@ final class CompilationManager {
     }
 
     protected static boolean isRemove(String ns, String name) {
-        return UILibrary.Namespace.equals(ns)
+        return (UILibrary.Namespace.equals(ns) || UILibrary.XMLNSNamespace.equals(ns))
                 && "remove".equals(name);
     }
 
     // edburns: This is the magic line that tells the system to trim out the 
     // extra content above and below the tag.
     protected static boolean isTrimmed(String ns, String name) {
-        boolean matchInUILibrary = UILibrary.Namespace.equals(ns) && 
+        boolean matchInUILibrary = (UILibrary.Namespace.equals(ns) || UILibrary.XMLNSNamespace.equals(ns)) && 
                 (CompositionHandler.Name.equals(name) || 
                 ComponentRefHandler.Name.equals(name));
         return matchInUILibrary;
     }
 
     protected static boolean isImplementation(String ns, String name) {
-        boolean matchInCompositeLibrary = CompositeLibrary.Namespace.equals(ns) && 
+        boolean matchInCompositeLibrary = (CompositeLibrary.Namespace.equals(ns) || CompositeLibrary.XMLNSNamespace.equals(ns)) && 
                 (ImplementationHandler.Name.equals(name));
         return matchInCompositeLibrary;
     }
 
     protected static boolean isInterface(String ns, String name) {
-        boolean matchInCompositeLibrary = CompositeLibrary.Namespace.equals(ns) && 
+        boolean matchInCompositeLibrary = (CompositeLibrary.Namespace.equals(ns) || CompositeLibrary.XMLNSNamespace.equals(ns)) && 
                 (InterfaceHandler.Name.equals(name));
         return matchInCompositeLibrary;
     }
@@ -502,4 +525,27 @@ final class CompilationManager {
                     .getLocalName(), tag.getQName(), new TagAttributesImpl(attr));
         }
     }
+
+    /**
+     * 
+     * @param units the compilation units.
+     * @return Get the view 
+     */
+    private CompilationUnit getViewRootUnitFromStack(Stack<CompilationUnit> units) {
+        CompilationUnit result = null;
+        Iterator<CompilationUnit> iterator = units.iterator();
+        while(iterator.hasNext()) {
+            CompilationUnit compilationUnit = iterator.next();
+            if (compilationUnit instanceof TagUnit) {
+                TagUnit tagUnit = (TagUnit) compilationUnit;
+                String ns = tagUnit.getTag().getNamespace();
+                if ((ns.equals(RIConstants.CORE_NAMESPACE) || ns.equals(RIConstants.CORE_NAMESPACE_NEW)) &&
+                        tagUnit.getTag().getLocalName().equals("view")) {
+                    result = tagUnit;
+                    break;
+                }
+            }
+        }
+        return result;
+    }
 }
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/CompilationMessageHolder.java b/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/CompilationMessageHolder.java
index 3db8278..869d692 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/CompilationMessageHolder.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/CompilationMessageHolder.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/CompilationMessageHolderImpl.java b/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/CompilationMessageHolderImpl.java
index 306635f..d969f44 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/CompilationMessageHolderImpl.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/CompilationMessageHolderImpl.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/CompilationUnit.java b/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/CompilationUnit.java
index c386979..b77ed10 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/CompilationUnit.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/CompilationUnit.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -52,7 +56,6 @@
  * limitations under the License.
  */
 
-
 package com.sun.faces.facelets.compiler;
 
 import javax.faces.component.UIComponent;
@@ -66,7 +69,7 @@ import java.util.List;
 /**
  * 
  * @author Jacob Hookom
- * @version $Id: CompilationUnit.java 8384 2010-05-17 14:59:38Z jdlee $
+ * @version $Id: CompilationUnit.java 8641 2010-10-04 20:54:50Z edburns $
  */
 class CompilationUnit {
 
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/Compiler.java b/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/Compiler.java
index 720992a..54cd146 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/Compiler.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/Compiler.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -52,8 +56,6 @@
  * limitations under the License.
  */
 
-
-
 package com.sun.faces.facelets.compiler;
 
 import com.sun.faces.facelets.tag.CompositeTagDecorator;
@@ -81,7 +83,7 @@ import java.util.logging.Logger;
  * A Compiler instance may handle compiling multiple sources
  * 
  * @author Jacob Hookom
- * @version $Id: Compiler.java 8384 2010-05-17 14:59:38Z jdlee $
+ * @version $Id: Compiler.java 11242 2012-12-19 16:03:38Z mriem $
  */
 public abstract class Compiler {
 
@@ -163,7 +165,9 @@ public abstract class Compiler {
                 	}
                 }
             } catch (Exception e) {
-                // do nothing
+                if (log.isLoggable(Level.FINEST)) {
+                    log.log(Level.FINEST, "Unable to get ExpressionFactory because of: ", e);
+                }
             }
         }
         if (el == null) {
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/CompilerPackageCompilationMessageHolder.java b/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/CompilerPackageCompilationMessageHolder.java
index 7f87e63..703b3e7 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/CompilerPackageCompilationMessageHolder.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/CompilerPackageCompilationMessageHolder.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/EncodingHandler.java b/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/EncodingHandler.java
index 66ffec6..d5b5fc5 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/EncodingHandler.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/EncodingHandler.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -52,13 +56,15 @@
  * limitations under the License.
  */
 
-
 package com.sun.faces.facelets.compiler;
 
+import com.sun.faces.RIConstants;
 import javax.faces.component.UIComponent;
 import javax.faces.view.facelets.FaceletContext;
 import javax.faces.view.facelets.FaceletHandler;
 import java.io.IOException;
+import java.util.Map;
+import javax.faces.context.FacesContext;
 
 public class EncodingHandler implements FaceletHandler {
 
@@ -75,11 +81,15 @@ public class EncodingHandler implements FaceletHandler {
 
     public void apply(FaceletContext ctx, UIComponent parent)
             throws IOException {
-        ctx.getFacesContext().getAttributes().put("facelets.compilationMessages", this.messageHolder);
+        FacesContext context = ctx.getFacesContext();
+        Map<Object,Object> ctxAttributes = context.getAttributes();
+        ctxAttributes.put("facelets.compilationMessages", this.messageHolder);
         this.next.apply(ctx, parent);
-        ctx.getFacesContext().getAttributes().remove("facelets.compilationMessages");
+        ctxAttributes.remove("facelets.compilationMessages");
         this.messageHolder.processCompilationMessages(ctx.getFacesContext());
-        ctx.getFacesContext().getAttributes().put("facelets.Encoding", this.encoding);
+        if (!ctxAttributes.containsKey(RIConstants.FACELETS_ENCODING_KEY)) {
+            ctx.getFacesContext().getAttributes().put(RIConstants.FACELETS_ENCODING_KEY, this.encoding);
+        }
     }
     
     public static CompilationMessageHolder getCompilationMessageHolder(FaceletContext ctx) {
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/EndElementInstruction.java b/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/EndElementInstruction.java
index a16314d..1aebdec 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/EndElementInstruction.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/EndElementInstruction.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -52,8 +56,6 @@
  * limitations under the License.
  */
 
-
-
 package com.sun.faces.facelets.compiler;
 
 
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/ImplementationUnit.java b/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/ImplementationUnit.java
index da1b8a9..1ecdbef 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/ImplementationUnit.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/ImplementationUnit.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -52,8 +56,6 @@
  * limitations under the License.
  */
 
-
-
 package com.sun.faces.facelets.compiler;
 
 import com.sun.faces.facelets.tag.TagLibrary;
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/Instruction.java b/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/Instruction.java
index 823e8be..c208cb7 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/Instruction.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/Instruction.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -52,8 +56,6 @@
  * limitations under the License.
  */
 
-
-
 package com.sun.faces.facelets.compiler;
 
 import javax.el.ELContext;
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/InterfaceUnit.java b/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/InterfaceUnit.java
index 9e40453..6704d1f 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/InterfaceUnit.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/InterfaceUnit.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -52,7 +56,6 @@
  * limitations under the License.
  */
 
-
 package com.sun.faces.facelets.compiler;
 
 import com.sun.faces.facelets.tag.TagLibrary;
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/LiteralAttributeInstruction.java b/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/LiteralAttributeInstruction.java
index 9f6f261..a17fff5 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/LiteralAttributeInstruction.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/LiteralAttributeInstruction.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -52,8 +56,6 @@
  * limitations under the License.
  */
 
-
-
 package com.sun.faces.facelets.compiler;
 
 import javax.el.ELContext;
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/LiteralCommentInstruction.java b/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/LiteralCommentInstruction.java
index 15a6b61..426af9c 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/LiteralCommentInstruction.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/LiteralCommentInstruction.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -52,8 +56,6 @@
  * limitations under the License.
  */
 
-
-
 package com.sun.faces.facelets.compiler;
 
 import javax.el.ELContext;
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/LiteralTextInstruction.java b/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/LiteralTextInstruction.java
index cca210e..066785b 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/LiteralTextInstruction.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/LiteralTextInstruction.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -52,13 +56,13 @@
  * limitations under the License.
  */
 
-
 package com.sun.faces.facelets.compiler;
 
-import javax.el.ELContext;
-import javax.el.ExpressionFactory;
+import com.sun.faces.config.FaceletsConfiguration;
 import javax.faces.context.FacesContext;
 import java.io.IOException;
+import javax.el.ELContext;
+import javax.el.ExpressionFactory;
 
 final class LiteralTextInstruction implements Instruction {
     private final String text;
@@ -68,7 +72,11 @@ final class LiteralTextInstruction implements Instruction {
     }
 
     public void write(FacesContext context) throws IOException {
-        context.getResponseWriter().writeText(this.text, null);
+        if (FaceletsConfiguration.getInstance(context).isEscapeInlineText(context)) {
+            context.getResponseWriter().writeText(this.text, null);
+        } else {
+            context.getResponseWriter().write(this.text);
+        }
     }
 
     public Instruction apply(ExpressionFactory factory, ELContext ctx) {
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/LiteralXMLInstruction.java b/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/LiteralXMLInstruction.java
index 2218253..17ecc2b 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/LiteralXMLInstruction.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/LiteralXMLInstruction.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -52,7 +56,6 @@
  * limitations under the License.
  */
 
-
 package com.sun.faces.facelets.compiler;
 
 import javax.el.ELContext;
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/NamespaceHandler.java b/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/NamespaceHandler.java
index 92fd60b..e21afd8 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/NamespaceHandler.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/NamespaceHandler.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/NamespaceManager.java b/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/NamespaceManager.java
index af2342d..78dc876 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/NamespaceManager.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/NamespaceManager.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -61,7 +65,7 @@ import java.util.List;
 
 /**
  * @author Jacob Hookom
- * @version $Id: NamespaceManager.java 8384 2010-05-17 14:59:38Z jdlee $
+ * @version $Id: NamespaceManager.java 10788 2012-10-02 16:21:29Z mriem $
  */
 final class NamespaceManager {
 
@@ -116,7 +120,7 @@ final class NamespaceManager {
         }
     }
     
-    public final NamespaceUnit toNamespaceUnit(TagLibrary library) {
+    public NamespaceUnit toNamespaceUnit(TagLibrary library) {
         NamespaceUnit unit = new NamespaceUnit(library);
         if (this.namespaces.size() > 0) {
             NS ns = null;
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/NamespaceUnit.java b/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/NamespaceUnit.java
index 6e664d5..0950d4c 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/NamespaceUnit.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/NamespaceUnit.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -63,7 +67,7 @@ import java.util.Map;
 /**
  * 
  * @author Jacob Hookom
- * @version $Id: NamespaceUnit.java 8384 2010-05-17 14:59:38Z jdlee $
+ * @version $Id: NamespaceUnit.java 8641 2010-10-04 20:54:50Z edburns $
  */
 final class NamespaceUnit extends CompilationUnit {
 
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/RemoveUnit.java b/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/RemoveUnit.java
index 2d27743..f763ea3 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/RemoveUnit.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/RemoveUnit.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -59,7 +63,7 @@ import javax.faces.view.facelets.FaceletHandler;
 /**
  * 
  * @author Jacob Hookom
- * @version $Id: RemoveUnit.java 8384 2010-05-17 14:59:38Z jdlee $
+ * @version $Id: RemoveUnit.java 8641 2010-10-04 20:54:50Z edburns $
  */
 final class RemoveUnit extends CompilationUnit {
 
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/SAXCompiler.java b/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/SAXCompiler.java
index 13d0545..fb64b6a 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/SAXCompiler.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/SAXCompiler.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -55,8 +59,11 @@
 package com.sun.faces.facelets.compiler;
 
 import com.sun.faces.RIConstants;
+import com.sun.faces.config.FaceletsConfiguration;
+import com.sun.faces.config.WebConfiguration;
 import com.sun.faces.facelets.tag.TagAttributeImpl;
 import com.sun.faces.facelets.tag.TagAttributesImpl;
+import com.sun.faces.util.Util;
 import org.xml.sax.*;
 import org.xml.sax.ext.LexicalHandler;
 import org.xml.sax.helpers.DefaultHandler;
@@ -70,16 +77,18 @@ import java.io.BufferedInputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.net.URL;
+import java.util.logging.Level;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
+import javax.faces.context.ExternalContext;
+import javax.faces.context.FacesContext;
 
 /**
  * Compiler implementation that uses SAX
  * 
- * @see {@link com.sun.faces.facelets.compiler.Compiler}
- * 
  * @author Jacob Hookom
- * @version $Id: SAXCompiler.java 8384 2010-05-17 14:59:38Z jdlee $
+ * @see Compiler
+ * @version $Id: SAXCompiler.java 12577 2013-10-04 16:26:14Z mriem $
  */
 public final class SAXCompiler extends Compiler {
     
@@ -95,7 +104,7 @@ public final class SAXCompiler extends Compiler {
         protected Locator locator;
 
         protected final CompilationManager unit;
-        
+
         public CompilationHandler(CompilationManager unit, String alias) {
             this.unit = unit;
             this.alias = alias;
@@ -111,13 +120,15 @@ public final class SAXCompiler extends Compiler {
         public void comment(char[] ch, int start, int length)
                 throws SAXException {
             if (this.inDocument) {
-                this.unit.writeComment(new String(ch, start, length));
+                if (!unit.getWebConfiguration().getFaceletsConfiguration().isConsumeComments(alias)) {
+                    this.unit.writeComment(new String(ch, start, length));
+                }
             }
         }
 
-        protected TagAttributes createAttributes(Attributes attrs) {
+        protected TagAttributesImpl createAttributes(Attributes attrs) {
             int len = attrs.getLength();
-            TagAttribute[] ta = new TagAttribute[len];
+            TagAttributeImpl[] ta = new TagAttributeImpl[len];
             for (int i = 0; i < len; i++) {
                 ta[i] = new TagAttributeImpl(this.createLocation(),
                         attrs.getURI(i), attrs.getLocalName(i), attrs
@@ -127,13 +138,23 @@ public final class SAXCompiler extends Compiler {
         }
 
         protected Location createLocation() {
-            return new Location(this.alias, this.locator.getLineNumber(),
+            Location result = null;
+            if (null != locator) {
+                result = new Location(this.alias, this.locator.getLineNumber(),
                     this.locator.getColumnNumber());
+            } else {
+                if (log.isLoggable(Level.SEVERE)) {
+                    log.log(Level.SEVERE, "Unable to create Location due to null locator instance variable.");
+                }
+            }
+            return result;
         }
 
         public void endCDATA() throws SAXException {
             if (this.inDocument) {
-                this.unit.writeInstruction("]]>");
+                if (!unit.getWebConfiguration().getFaceletsConfiguration().isConsumeCDATA(alias)) {
+                    this.unit.writeInstruction("]]>");
+                }
             }
         }
 
@@ -147,6 +168,7 @@ public final class SAXCompiler extends Compiler {
 
         public void endElement(String uri, String localName, String qName)
                 throws SAXException {
+            
             this.unit.popTag();
         }
 
@@ -191,7 +213,9 @@ public final class SAXCompiler extends Compiler {
 
         public void startCDATA() throws SAXException {
             if (this.inDocument) {
-                this.unit.writeInstruction("<![CDATA[");
+                if (!unit.getWebConfiguration().getFaceletsConfiguration().isConsumeCDATA(alias)) {
+                    this.unit.writeInstruction("<![CDATA[");
+                }
             }
         }
 
@@ -201,7 +225,15 @@ public final class SAXCompiler extends Compiler {
 
         public void startDTD(String name, String publicId, String systemId)
                 throws SAXException {
-            if (this.inDocument) {
+            // If there is a process-as value for the extension, only allow
+            // the PI to be written if its value is xhtml
+            FaceletsConfiguration facelets = this.unit.getWebConfiguration().getFaceletsConfiguration();
+            boolean processAsXhtml =
+                    facelets.isProcessCurrentDocumentAsFaceletsXhtml(alias);
+
+
+            if (this.inDocument && (processAsXhtml || facelets.isOutputHtml5Doctype(alias))) {
+                boolean isHtml5 = facelets.isOutputHtml5Doctype(alias);
                 // If we're in an ajax request, this is unnecessary and bugged
                 // RELEASE_PENDING - this is a hack, and should probably not be here -
                 // but the alternative is to somehow figure out how *not* to escape the "<!"
@@ -209,24 +241,30 @@ public final class SAXCompiler extends Compiler {
                 // remind me to have rlubke take a look.  But I'm stumped.
                 StringBuffer sb = new StringBuffer(64);
                 sb.append("<!DOCTYPE ").append(name);
-                if (publicId != null) {
+                if (!isHtml5 && publicId != null) {
                     sb.append(" PUBLIC \"").append(publicId).append("\"");
                     if (systemId != null) {
                         sb.append(" \"").append(systemId).append("\"");
                     }
-                } else if (systemId != null) {
+                } else if (!isHtml5 && systemId != null) {
                     sb.append(" SYSTEM \"").append(systemId).append("\"");
                 }
                 sb.append(">\n");
-                this.unit.writeInstruction(sb.toString());
+                // It is essential to save the doctype here because this is the 
+                // *only* time we will have access to it.
+                Util.saveDOCTYPEToFacesContextAttributes(sb.toString());
             }
             this.inDocument = false;
         }
 
         public void startElement(String uri, String localName, String qName,
                 Attributes attributes) throws SAXException {
-            this.unit.pushTag(new Tag(this.createLocation(), uri, localName,
-                    qName, this.createAttributes(attributes)));
+
+            TagAttributes tagAttrs = this.createAttributes(attributes);
+            Tag tag = new Tag(this.createLocation(), uri, localName, qName, tagAttrs);
+            tagAttrs.setTag(tag);
+            this.unit.pushTag(tag);
+            
         }
 
         public void startEntity(String name) throws SAXException {
@@ -240,10 +278,18 @@ public final class SAXCompiler extends Compiler {
         public void processingInstruction(String target, String data)
                 throws SAXException {
             if (this.inDocument) {
-                StringBuffer sb = new StringBuffer(64);
-                sb.append("<?").append(target).append(' ').append(data).append(
-                        "?>\n");
-                this.unit.writeInstruction(sb.toString());
+
+                // If there is a process-as value for the extension, only allow
+                // the PI to be written if its value is xhtml
+                boolean processAsXhtml =
+                        this.unit.getWebConfiguration().getFaceletsConfiguration().isProcessCurrentDocumentAsFaceletsXhtml(alias);
+
+                if (processAsXhtml) {
+                    StringBuffer sb = new StringBuffer(64);
+                    sb.append("<?").append(target).append(' ').append(data).append(
+                            "?>\n");
+                    this.unit.writeInstruction(sb.toString());
+                }
             }
         }
     }
@@ -272,7 +318,15 @@ public final class SAXCompiler extends Compiler {
         @Override
         public void characters(char[] ch, int start, int length)
         throws SAXException {
-            // no-op
+            if (!metadataProcessed) {
+                if (processingMetadata) {
+                    // PENDING consider optimizing this to be a no-op
+                    // on whitespace, but don't instantiate the String 
+                    // just to test that.
+                    this.unit.writeText(new String(ch, start, length));
+                }
+            }
+
         }
 
         @Override
@@ -321,7 +375,10 @@ public final class SAXCompiler extends Compiler {
         throws SAXException {
 
             if (!metadataProcessed) {
-                if (!processingMetadata && RIConstants.CORE_NAMESPACE.equals(uri)) {
+                if (!processingMetadata && 
+                        (RIConstants.CORE_NAMESPACE.equals(uri) ||
+                         RIConstants.CORE_NAMESPACE_NEW.equals(uri)                      
+                        )) {
                     if (METADATA_HANDLER.equals(localName)) {
                         processingMetadata = true;
                     }
@@ -329,8 +386,11 @@ public final class SAXCompiler extends Compiler {
                 if (processingMetadata) {
                     super.startElement(uri, localName, qName, attributes);
                 }
+            } 
+            if ((localName.equals("view") && 
+                    (RIConstants.CORE_NAMESPACE.equals(uri) || RIConstants.CORE_NAMESPACE_NEW.equals(uri)))) {
+                super.startElement(uri, localName, qName, attributes);
             }
-
         }
 
         @Override
@@ -341,14 +401,20 @@ public final class SAXCompiler extends Compiler {
                 if (processingMetadata) {
                     super.endElement(uri, localName, qName);
                 }
-                if (processingMetadata && RIConstants.CORE_NAMESPACE.equals(uri)) {
+                if (processingMetadata && 
+                        (RIConstants.CORE_NAMESPACE.equals(uri) ||
+                         RIConstants.CORE_NAMESPACE_NEW.equals(uri)
+                        )) {
                     if (METADATA_HANDLER.equals(localName)) {
                         processingMetadata = false;
                         metadataProcessed = true;
                     }
                 }
             }
-
+            if ((localName.equals("view") && 
+                    (RIConstants.CORE_NAMESPACE.equals(uri) || RIConstants.CORE_NAMESPACE_NEW.equals(uri)))) {
+                super.endElement(uri, localName, qName);
+            }
         }
 
     }
@@ -380,10 +446,10 @@ public final class SAXCompiler extends Compiler {
     throws IOException {
 
         InputStream is = null;
-        String encoding = "UTF-8";
+        String encoding = getEncoding();
         try {
             is = new BufferedInputStream(src.openStream(), 1024);
-            encoding = writeXmlDecl(is, mngr);
+            writeXmlDecl(is, encoding, mngr);
             SAXParser parser = this.createSAXParser(handler);
             parser.parse(is, handler);
         } catch (SAXException e) {
@@ -406,32 +472,49 @@ public final class SAXCompiler extends Compiler {
         return result;
 
     }
+    
+    private String getEncoding() {
+        String result;
+        String encodingFromRequest = null;
+        FacesContext context = FacesContext.getCurrentInstance();
+        if (null != context) {
+            ExternalContext extContext = context.getExternalContext();
+            encodingFromRequest = extContext.getRequestCharacterEncoding();
+        }
+        result = (null != encodingFromRequest) ? encodingFromRequest : RIConstants.CHAR_ENCODING;
+        
+        return result;
+    }
 
-    protected static String writeXmlDecl(InputStream is, CompilationManager mngr)
+    protected static void writeXmlDecl(InputStream is, String encoding, CompilationManager mngr)
             throws IOException {
         is.mark(128);
-        String encoding = "UTF-8";
         try {
             byte[] b = new byte[128];
             if (is.read(b) > 0) {
-                String r = new String(b);
+                String r = new String(b, encoding);
                 Matcher m = XmlDeclaration.matcher(r);
                 if (m.find()) {
-                    mngr.writeInstruction(m.group(0) + "\n");
-                    if (m.group(3) != null) {
-                        encoding = m.group(3);
+                    WebConfiguration config = mngr.getWebConfiguration();
+                    FaceletsConfiguration faceletsConfig = config.getFaceletsConfiguration();
+                    boolean currentModeIsXhtml = faceletsConfig.isProcessCurrentDocumentAsFaceletsXhtml(mngr.getAlias());
+
+                    // We want to write the XML declaration if and only if
+                    // the file extension for the current file has a mapping
+                    // with the value of XHTML
+                    if (currentModeIsXhtml) {
+                        Util.saveXMLDECLToFacesContextAttributes(m.group(0) + "\n");
                     }
                 }
             }
         } finally {
             is.reset();
         }
-        return encoding;
     }
 
     private SAXParser createSAXParser(CompilationHandler handler)
             throws SAXException, ParserConfigurationException {
-        SAXParserFactory factory = SAXParserFactory.newInstance();
+        SAXParserFactory factory = Util.createSAXParserFactory();
         factory.setNamespaceAware(true);
         factory.setFeature("http://xml.org/sax/features/namespace-prefixes",
                 true);
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/StartElementInstruction.java b/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/StartElementInstruction.java
index 474cf8f..7172f09 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/StartElementInstruction.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/StartElementInstruction.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -52,7 +56,6 @@
  * limitations under the License.
  */
 
-
 package com.sun.faces.facelets.compiler;
 
 
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/TagUnit.java b/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/TagUnit.java
index d1bc261..87aad41 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/TagUnit.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/TagUnit.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -54,6 +58,7 @@
 
 package com.sun.faces.facelets.compiler;
 
+import com.sun.faces.RIConstants;
 import com.sun.faces.facelets.tag.TagLibrary;
 
 import javax.faces.view.facelets.FaceletException;
@@ -64,7 +69,7 @@ import javax.faces.view.facelets.TagConfig;
 /**
  * 
  * @author Jacob Hookom
- * @version $Id: TagUnit.java 8384 2010-05-17 14:59:38Z jdlee $
+ * @version $Id: TagUnit.java 12012 2013-06-19 23:01:19Z edburns $
  */
 class TagUnit extends CompilationUnit implements TagConfig {
 
@@ -95,7 +100,7 @@ class TagUnit extends CompilationUnit implements TagConfig {
 
     @Override
     protected void startNotify(CompilationManager manager) {
-        if (this.name.equals("composition") && this.namespace.equals("http://java.sun.com/jsf/facelets")) {
+        if (this.name.equals("composition") && (this.namespace.equals(RIConstants.FACELET_NAMESPACE) || this.namespace.equals(RIConstants.FACELET_NAMESPACE))) {
             CompilerPackageCompilationMessageHolder messageHolder =
                     (CompilerPackageCompilationMessageHolder) manager.getCompilationMessageHolder();
             CompilationManager compositeComponentCompilationManager = messageHolder.
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/TextInstruction.java b/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/TextInstruction.java
index 8c29129..836a330 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/TextInstruction.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/TextInstruction.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -52,7 +56,6 @@
  * limitations under the License.
  */
 
-
 package com.sun.faces.facelets.compiler;
 
 
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/TextUnit.java b/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/TextUnit.java
index 1edb9f9..6834184 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/TextUnit.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/TextUnit.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -65,7 +69,7 @@ import java.util.Stack;
 /**
  * 
  * @author Jacob Hookom
- * @version $Id: TextUnit.java 8384 2010-05-17 14:59:38Z jdlee $
+ * @version $Id: TextUnit.java 12736 2013-12-20 16:41:31Z edburns $
  */
 final class TextUnit extends CompilationUnit {
 
@@ -84,7 +88,7 @@ final class TextUnit extends CompilationUnit {
     private final String alias;
 
     private final String id;
-
+    
     public TextUnit(String alias, String id) {
         this.alias = alias;
         this.id = id;
@@ -132,7 +136,7 @@ final class TextUnit extends CompilationUnit {
                 s = trimRight(s);
             }
             if (s.length() > 0) {
-                ELText txt = ELText.parse(s);
+                ELText txt = ELText.parse(s, alias);
                 if (txt != null) {
                     if (txt.isLiteral()) {
                         this.instructionBuffer.add(new LiteralTextInstruction(
@@ -247,8 +251,8 @@ final class TextUnit extends CompilationUnit {
 
     protected void flushBufferToConfig(boolean child) {
 
-        // NEW IMPLEMENTATION
-        if (true) {
+//        // NEW IMPLEMENTATION
+//        if (true) {
 
             this.flushTextBuffer(child);
 
@@ -280,37 +284,37 @@ final class TextUnit extends CompilationUnit {
                 }
             }
 
-            // KEEP THESE SEPARATE SO LOGIC DOESN'T GET FUBARED
-        } else if (this.buffer.length() > 0) {
-            String s = this.buffer.toString();
-            if (s.trim().length() > 0) {
-                if (child) {
-                    s = trimRight(s);
-                }
-                if (s.length() > 0) {
-                    try {
-                        ELText txt = ELText.parse(s);
-                        if (txt != null) {
-                            if (txt.isLiteral()) {
-                                this.children.add(new UILiteralTextHandler(txt
-                                        .toString()));
-                            } else {
-                                this.children.add(new UITextHandler(this.alias,
-                                        txt));
-                            }
-                        }
-                    } catch (ELException e) {
-                        if (this.tags.size() > 0) {
-                            throw new TagException((Tag) this.tags.peek(), e
-                                    .getMessage());
-                        } else {
-                            throw new ELException(this.alias + ": "
-                                    + e.getMessage(), e.getCause());
-                        }
-                    }
-                }
-            }
-        }
+//            // KEEP THESE SEPARATE SO LOGIC DOESN'T GET FUBARED
+//        } else if (this.buffer.length() > 0) {
+//            String s = this.buffer.toString();
+//            if (s.trim().length() > 0) {
+//                if (child) {
+//                    s = trimRight(s);
+//                }
+//                if (s.length() > 0) {
+//                    try {
+//                        ELText txt = ELText.parse(s);
+//                        if (txt != null) {
+//                            if (txt.isLiteral()) {
+//                                this.children.add(new UILiteralTextHandler(txt
+//                                        .toString()));
+//                            } else {
+//                                this.children.add(new UITextHandler(this.alias,
+//                                        txt));
+//                            }
+//                        }
+//                    } catch (ELException e) {
+//                        if (this.tags.size() > 0) {
+//                            throw new TagException((Tag) this.tags.peek(), e
+//                                    .getMessage());
+//                        } else {
+//                            throw new ELException(this.alias + ": "
+//                                    + e.getMessage(), e.getCause());
+//                        }
+//                    }
+//                }
+//            }
+//        }
 
         // ALWAYS CLEAR FOR BOTH IMPL
         this.buffer.setLength(0);
@@ -320,7 +324,7 @@ final class TextUnit extends CompilationUnit {
         return this.tags.empty();
     }
 
-    private final static String trimRight(String s) {
+    private static String trimRight(String s) {
         int i = s.length() - 1;
         while (i >= 0) {
             if (Character.isWhitespace(s.charAt(i))) {
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/TrimmedTagUnit.java b/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/TrimmedTagUnit.java
index c3a4519..a931517 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/TrimmedTagUnit.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/TrimmedTagUnit.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/UIInstructionHandler.java b/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/UIInstructionHandler.java
index 4e06a1c..4726594 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/UIInstructionHandler.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/UIInstructionHandler.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -69,7 +73,7 @@ import java.io.Writer;
 
 /**
  * @author Adam Winer
- * @version $Id: UIInstructionHandler.java 8384 2010-05-17 14:59:38Z jdlee $
+ * @version $Id: UIInstructionHandler.java 13280 2014-05-23 21:33:52Z edburns $
  */
 final class UIInstructionHandler extends AbstractUIHandler {
 
@@ -108,13 +112,14 @@ final class UIInstructionHandler extends AbstractUIHandler {
 
 
     public void apply(FaceletContext ctx, UIComponent parent)
-          throws IOException {
+            throws IOException {
         if (parent != null) {
             // our id
             String id = ctx.generateUniqueId(this.id);
-
+            FacesContext context = ctx.getFacesContext();
+            
             // grab our component
-            UIComponent c = ComponentSupport.findChildByTagId(parent, id);
+            UIComponent c = ComponentSupport.findUIInstructionChildByTagId(context, parent, id);
             boolean componentFound = false;
             boolean suppressEvents = false;
             if (c != null) {
@@ -155,7 +160,6 @@ final class UIInstructionHandler extends AbstractUIHandler {
                 c.getAttributes().put(ComponentSupport.MARK_CREATED, id);
             }
             // finish cleaning up orphaned children
-            FacesContext context = ctx.getFacesContext();
             if (componentFound) {
                 ComponentSupport.finalizeForDeletion(c);
                 if (suppressEvents) {
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/UIInstructions.java b/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/UIInstructions.java
index 8e36fb5..a4daef7 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/UIInstructions.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/UIInstructions.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -62,9 +66,9 @@ import java.util.Arrays;
 
 public final class UIInstructions extends UILeaf {
 
-    private final ELText txt;
+    transient private final ELText txt;
 
-    private final Instruction[] instructions;
+    transient private final Instruction[] instructions;
 
     public UIInstructions(ELText txt, Instruction[] instructions) {
         this.txt = txt;
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/UILeaf.java b/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/UILeaf.java
index 6fb4dfd..728a0cc 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/UILeaf.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/UILeaf.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -113,7 +117,7 @@ public class UILeaf extends UIComponentBase {
 
     public void setParent(UIComponent parent) {
         this.parent = parent;
-    }
+                }
 
     public String getRendererType() {
         return null;
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/UILiteralText.java b/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/UILiteralText.java
index a2e51cf..b787a16 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/UILiteralText.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/UILiteralText.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -52,7 +56,6 @@
  * limitations under the License.
  */
 
-
 package com.sun.faces.facelets.compiler;
 
 import javax.faces.context.FacesContext;
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/UILiteralTextHandler.java b/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/UILiteralTextHandler.java
index b7b9f93..52e93d4 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/UILiteralTextHandler.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/UILiteralTextHandler.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -52,7 +56,6 @@
  * limitations under the License.
  */
 
-
 package com.sun.faces.facelets.compiler;
 
 import com.sun.faces.facelets.tag.jsf.ComponentSupport;
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/UIText.java b/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/UIText.java
index 72676e9..634c316 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/UIText.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/UIText.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -52,7 +56,6 @@
  * limitations under the License.
  */
 
-
 package com.sun.faces.facelets.compiler;
 
 import com.sun.faces.facelets.el.ELText;
@@ -64,7 +67,7 @@ import java.io.IOException;
 
 /**
  * @author Jacob Hookom
- * @version $Id: UIText.java 8384 2010-05-17 14:59:38Z jdlee $
+ * @version $Id: UIText.java 8641 2010-10-04 20:54:50Z edburns $
  */
 public final class UIText extends UILeaf {
 
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/UITextHandler.java b/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/UITextHandler.java
index 1919350..0508242 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/UITextHandler.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/UITextHandler.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -52,7 +56,6 @@
  * limitations under the License.
  */
 
-
 package com.sun.faces.facelets.compiler;
 
 import com.sun.faces.facelets.el.ELText;
@@ -68,7 +71,7 @@ import java.io.Writer;
 
 /**
  * @author Jacob Hookom
- * @version $Id: UITextHandler.java 8384 2010-05-17 14:59:38Z jdlee $
+ * @version $Id: UITextHandler.java 8641 2010-10-04 20:54:50Z edburns $
  */
 final class UITextHandler extends AbstractUIHandler {
 
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/XMLInstruction.java b/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/XMLInstruction.java
index 596026c..c83bb15 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/XMLInstruction.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/compiler/XMLInstruction.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -52,7 +56,6 @@
  * limitations under the License.
  */
 
-
 package com.sun.faces.facelets.compiler;
 
 import com.sun.faces.facelets.el.ELText;
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/component/RepeatRenderer.java b/jsf-ri/src/main/java/com/sun/faces/facelets/component/RepeatRenderer.java
index a9e46cf..935a7d2 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/component/RepeatRenderer.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/component/RepeatRenderer.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -52,7 +56,6 @@
  * limitations under the License.
  */
 
-
 package com.sun.faces.facelets.component;
 
 import javax.faces.component.UIComponent;
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/component/UIRepeat.java b/jsf-ri/src/main/java/com/sun/faces/facelets/component/UIRepeat.java
index c6b32e5..67c6209 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/component/UIRepeat.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/component/UIRepeat.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -67,6 +71,7 @@ import javax.faces.component.UIData;
 import javax.faces.component.UINamingContainer;
 import javax.faces.component.visit.VisitContext;
 import javax.faces.component.visit.VisitCallback;
+import javax.faces.component.visit.VisitHint;
 import javax.faces.component.visit.VisitResult;
 import javax.faces.context.FacesContext;
 import javax.faces.event.AbortProcessingException;
@@ -90,6 +95,8 @@ import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.Collection;
+import java.util.concurrent.ConcurrentHashMap;
+import static javax.faces.component.UINamingContainer.getSeparatorChar;
 
 
 public class UIRepeat extends UINamingContainer {
@@ -116,6 +123,10 @@ public class UIRepeat extends UINamingContainer {
     private Integer begin;
     private Integer end;
     private Integer step;
+    private Integer size;
+    
+    private Map<String, SavedState> initialChildState;
+    private String initialClientId;
 
     public UIRepeat() {
         this.setRendererType("facelets.ui.Repeat");
@@ -143,13 +154,13 @@ public class UIRepeat extends UINamingContainer {
     }
 
     public void setSize(Integer size) {
-        this.end = size;
+        this.size = size;
     }
 
     public Integer getSize() {
 
-        if (this.end != null) {
-            return end;
+        if (this.size != null) {
+            return size;
         }
         ValueExpression ve = this.getValueExpression("size");
         if (ve != null) {
@@ -338,6 +349,10 @@ public class UIRepeat extends UINamingContainer {
         }
         return this.childState;
     }
+    
+    private void clearChildState() {
+    	this.childState = null;
+    }
 
     private void saveChildState(FacesContext ctx) {
         if (this.getChildCount() > 0) {
@@ -348,6 +363,32 @@ public class UIRepeat extends UINamingContainer {
         }
     }
 
+    private void removeChildState(FacesContext ctx) {
+        if (this.getChildCount() > 0) {
+
+            for (UIComponent uiComponent : this.getChildren()) {
+                this.removeChildState(ctx, uiComponent);
+            }
+            
+            if (this.childState != null) {
+                this.childState.remove(this.getClientId(ctx));
+            }
+        }
+    }
+
+    private void removeChildState(FacesContext faces, UIComponent c) {
+        String id = c.getId();
+        c.setId(id);        
+        
+        Iterator itr = c.getFacetsAndChildren();
+        while (itr.hasNext()) {
+            removeChildState(faces, (UIComponent) itr.next());
+        }
+        if (this.childState != null) {
+            this.childState.remove(c.getClientId(faces));
+        }
+    }
+    
     private void saveChildState(FacesContext faces, UIComponent c) {
 
         if (c instanceof EditableValueHolder && !c.isTransient()) {
@@ -389,7 +430,15 @@ public class UIRepeat extends UINamingContainer {
             if (ss != null) {
                 ss.apply(evh);
             } else {
-                NullState.apply(evh);
+                String childId = clientId.substring(initialClientId.length() + 1);
+                childId = childId.substring(childId.indexOf(getSeparatorChar(faces)) + 1);
+                childId = initialClientId + getSeparatorChar(faces) + childId;
+                if (initialChildState.containsKey(childId)) {
+                    SavedState initialState = initialChildState.get(childId);
+                    initialState.apply(evh);
+                } else {
+                    NullState.apply(evh);
+                }
             }
         }
 
@@ -409,7 +458,7 @@ public class UIRepeat extends UINamingContainer {
     private boolean hasErrorMessages(FacesContext context) {
 
         FacesMessage.Severity sev = context.getMaximumSeverity();
-        return (sev != null && (FacesMessage.SEVERITY_ERROR.compareTo(sev) >= 0));
+        return (sev != null && (FacesMessage.SEVERITY_ERROR.compareTo(sev) <= 0));
         
     }
 
@@ -425,13 +474,66 @@ public class UIRepeat extends UINamingContainer {
         return false;
     }
 
+    /**
+     * Save the initial child state.
+     * 
+     * <p>
+     *  In order to be able to restore each row to a pristine condition if NO
+     *  state was necessary to be saved for a given row we need to store the
+     *  initial state (a.k.a the state of the skeleton) so we can restore the
+     *  skeleton as if it was just created by the page markup.
+     * </p>
+     * 
+     * @param facesContext the Faces context. 
+     */
+    private void saveInitialChildState(FacesContext facesContext) {
+        index = -1;
+        initialChildState = new ConcurrentHashMap<String, SavedState>();
+        initialClientId = getClientId(facesContext);
+        if (getChildCount() > 0) {
+            for (UIComponent child : getChildren()) {
+                saveInitialChildState(facesContext, child);
+            }
+        }
+    }
+
+    /**
+     * Recursively create the initial state for the given component.
+     * 
+     * @param facesContext the Faces context.
+     * @param component the UI component to save the state for.
+     * @see #saveInitialChildState(javax.faces.context.FacesContext) 
+     */
+    private void saveInitialChildState(FacesContext facesContext, UIComponent component) {
+        if (component instanceof EditableValueHolder && !component.isTransient()) {
+            String clientId = component.getClientId(facesContext);
+            SavedState state = new SavedState();
+            initialChildState.put(clientId, state);
+            state.populate((EditableValueHolder) component);
+        }
+
+        Iterator<UIComponent> iterator = component.getFacetsAndChildren();
+        while (iterator.hasNext()) {
+            saveChildState(facesContext, iterator.next());
+        }
+    }
+
     private void setIndex(FacesContext ctx, int index) {
 
+        DataModel localModel = getDataModel();
+        
+        if (index == -1 && initialChildState == null) {
+            saveInitialChildState(ctx);
+        }
+        
         // save child state
-        this.saveChildState(ctx);
+        if (this.index != -1 && localModel.isRowAvailable()) {
+            this.saveChildState(ctx);
+        } else if (this.index >= 0 && this.childState != null) {
+            this.removeChildState(ctx);
+        }
 
         this.index = index;
-        DataModel localModel = getDataModel();
         localModel.setRowIndex(index);
 
         if (this.index != -1 && this.var != null && localModel.isRowAvailable()) {
@@ -440,7 +542,9 @@ public class UIRepeat extends UINamingContainer {
         }
 
         // restore child state
-        this.restoreChildState(ctx);
+        if (this.index != -1 && localModel.isRowAvailable()) {
+            this.restoreChildState(ctx);
+        }
     }
 
     private void updateIterationStatus(FacesContext ctx, IterationStatus status) {
@@ -463,8 +567,13 @@ public class UIRepeat extends UINamingContainer {
         // clear datamodel
         this.resetDataModel();
 
+        // We must clear the child state if we just entered the Render Phase, and there are no error messages
+        if (PhaseId.RENDER_RESPONSE.equals(phase) && !hasErrorMessages(faces)) {
+        	this.clearChildState();
+        }
+
         // reset index
-        this.captureOrigValue(faces);
+        this.captureOrigValue(faces);        
         this.setIndex(faces, -1);
 
         try {
@@ -476,6 +585,16 @@ public class UIRepeat extends UINamingContainer {
                 Integer begin = this.getBegin();
                 Integer step = this.getStep();
                 Integer end = this.getEnd();
+                Integer offset = this.getOffset();
+
+                if (null != offset && offset > 0) {
+                    begin = offset;
+                }
+
+                Integer size = this.getSize();
+                if (null != size) {
+                    end = size;
+                }
 
                 // grab renderer
                 String rendererType = getRendererType();
@@ -489,6 +608,9 @@ public class UIRepeat extends UINamingContainer {
                 int e = ((end != null) ? end : rowCount);
                 int s = ((step != null) ? step : 1);
                 validateIterationControlValues(rowCount, i, e);
+                if (null != size && size > 0) {
+                    e = size - 1;
+                }
 
                 this.setIndex(faces, i);
                 this.updateIterationStatus(faces, new IterationStatus(true, (i + s > e || rowCount == 1), i, begin, end, step));
@@ -525,13 +647,36 @@ public class UIRepeat extends UINamingContainer {
             this.setIndex(faces, -1);
             this.restoreOrigValue(faces);
         }
+
+        /*
+         * Once rendering is done we need to make sure the child components
+         * are not still having client ids that use an index.
+         */
+        if (PhaseId.RENDER_RESPONSE.equals(phase)) {
+            resetClientIds(this);
+        }
+    }
+    
+    private void resetClientIds(UIComponent component) {
+        Iterator<UIComponent> iterator = component.getFacetsAndChildren();
+        while(iterator.hasNext()) {
+            UIComponent child = iterator.next();
+            resetClientIds(child);
+            child.setId(child.getId());
+        }
     }
 
      public boolean invokeOnComponent(FacesContext faces, String clientId,
             ContextCallback callback) throws FacesException {
         String id = super.getClientId(faces);
         if (clientId.equals(id)) {
-            callback.invokeContextCallback(faces, this);
+            this.pushComponentToEL(faces, this);
+            try {
+                callback.invokeContextCallback(faces, this);
+            }
+            finally {
+                this.popComponentFromEL(faces);
+            }
             return true;
         } else if (clientId.startsWith(id)) {
             int prevIndex = this.index;
@@ -573,15 +718,18 @@ public class UIRepeat extends UINamingContainer {
         if (!isVisitable(context)) {
             return false;
         }
-
+        
         FacesContext facesContext = context.getFacesContext();
-        boolean visitRows = requiresRowIteration(facesContext);
+        boolean visitRows = requiresRowIteration(context);
+
         int oldRowIndex = -1;
         if (visitRows) {
             oldRowIndex = getDataModel().getRowIndex();
             setIndex(facesContext, -1);
         }
 
+        this.setDataModel(null);
+
         // Push ourselves to EL
         pushComponentToEL(facesContext, null);
 
@@ -626,9 +774,9 @@ public class UIRepeat extends UINamingContainer {
         return false;
     }
 
-    private boolean requiresRowIteration(FacesContext ctx) {
+    private boolean requiresRowIteration(VisitContext ctx) {
 
-        return (!PhaseId.RESTORE_VIEW.equals(ctx.getCurrentPhaseId()));
+        return !ctx.getHints().contains(VisitHint.SKIP_ITERATION);
 
     }
 
@@ -639,7 +787,12 @@ public class UIRepeat extends UINamingContainer {
         // Just need to check whether there are any ids under this
         // subtree.  Make sure row index is cleared out since
         // getSubtreeIdsToVisit() needs our row-less client id.
-        setIndex(context.getFacesContext(), -1);
+        //
+        // We only need to position if row iteration is actually needed.
+        //
+        if (requiresRowIteration(context)) {
+            setIndex(context.getFacesContext(), -1);
+        }
         Collection<String> idsToVisit = context.getSubtreeIdsToVisit(this);
         assert(idsToVisit != null);
 
@@ -689,7 +842,7 @@ public class UIRepeat extends UINamingContainer {
                                                        begin,
                                                        end,
                                                        step));
-        while (i <= e && this.isIndexAvailable()) {
+        while (i < e && this.isIndexAvailable()) {
 
             this.setIndex(faces, i);
             this.updateIterationStatus(faces,
@@ -789,7 +942,7 @@ public class UIRepeat extends UINamingContainer {
         }
 
         public void populate(EditableValueHolder evh) {
-            this.value = evh.getValue();
+            this.value = evh.getLocalValue();
             this.valid = evh.isValid();
             this.submittedValue = evh.getSubmittedValue();
             this.localValueSet = evh.isLocalValueSet();
@@ -806,6 +959,8 @@ public class UIRepeat extends UINamingContainer {
 
     private static final class IndexedEvent extends FacesEvent {
 
+        private static final long serialVersionUID = 1L;
+        
         private final FacesEvent target;
 
         private final int index;
@@ -868,7 +1023,7 @@ public class UIRepeat extends UINamingContainer {
                 Integer begin = this.getBegin();
                 Integer end = this.getEnd();
                 Integer step = this.getStep();
-                int b = ((end != null) ? end : 0);
+                int b = ((begin != null) ? begin : 0);
                 int e = ((end != null) ? end : rowCount);
                 int s = ((step != null) ? step : 1);
                 this.updateIterationStatus(ctx,
@@ -927,6 +1082,8 @@ public class UIRepeat extends UINamingContainer {
     }
 
     public Object saveState(FacesContext faces) {
+        resetClientIds(this);
+        
         if (faces == null) {
             throw new NullPointerException();
         }
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/el/CompositeFunctionMapper.java b/jsf-ri/src/main/java/com/sun/faces/facelets/el/CompositeFunctionMapper.java
index 58b87e1..e3d61c5 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/el/CompositeFunctionMapper.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/el/CompositeFunctionMapper.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -52,7 +56,6 @@
  * limitations under the License.
  */
 
-
 package com.sun.faces.facelets.el;
 
 import javax.el.FunctionMapper;
@@ -66,7 +69,7 @@ import java.lang.reflect.Method;
  * @see java.lang.reflect.Method
  * 
  * @author Jacob Hookom
- * @version $Id: CompositeFunctionMapper.java 8384 2010-05-17 14:59:38Z jdlee $
+ * @version $Id: CompositeFunctionMapper.java 8641 2010-10-04 20:54:50Z edburns $
  */
 public final class CompositeFunctionMapper extends FunctionMapper {
 
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/el/CompositeVariableMapper.java b/jsf-ri/src/main/java/com/sun/faces/facelets/el/CompositeVariableMapper.java
index b24b3f2..916e1f0 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/el/CompositeVariableMapper.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/el/CompositeVariableMapper.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -65,7 +69,7 @@ import javax.el.VariableMapper;
  * @see javax.el.ValueExpression
  * 
  * @author Jacob Hookom
- * @version $Id: CompositeVariableMapper.java 8384 2010-05-17 14:59:38Z jdlee $
+ * @version $Id: CompositeVariableMapper.java 8641 2010-10-04 20:54:50Z edburns $
  */
 public final class CompositeVariableMapper extends VariableMapper {
 
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/el/ContextualCompositeMethodExpression.java b/jsf-ri/src/main/java/com/sun/faces/facelets/el/ContextualCompositeMethodExpression.java
index b457f62..8118bab 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/el/ContextualCompositeMethodExpression.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/el/ContextualCompositeMethodExpression.java
@@ -1,262 +1,339 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- *
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- *
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- *
- * Contributor(s):
- *
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- *
- *
- * This file incorporates work covered by the following copyright and
- * permission notice:
- *
- * Copyright 2005-2007 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
-package com.sun.faces.facelets.el;
-
-import com.sun.faces.component.CompositeComponentStackManager;
-
-import javax.el.MethodExpression;
-import javax.el.ValueExpression;
-import javax.el.MethodInfo;
-import javax.el.ELContext;
-import javax.el.ELException;
-import javax.faces.component.UIComponent;
-import javax.faces.context.FacesContext;
-import javax.faces.view.Location;
-
-/**
- * <p>
- * This specialized <code>MethodExpression</code> enables the evaluation of
- * composite component expressions.  Instances of this expression will be created
- * when {@link com.sun.faces.facelets.tag.TagAttributeImpl#getValueExpression(javax.faces.view.facelets.FaceletContext, Class)}
- * is invoked and the expression represents a composite component expression (i.e. #{cc.[properties]}).
- * </p>
- *
- * <p>
- * It's important to note that these <code>MethodExpression</code>s are context
- * sensitive in that they leverage the location in which they were referenced
- * in order to push the proper composite component to the evaluation context
- * prior to evaluating the expression itself.
- * </p>
- *
- * Here's an example:
- *
- * <pre>
- * Using Page test.xhtml
- * ---------------------------------
- *    <ez:comp1 do="#{bean.action}" />
- *
- *
- * comp1.xhtml
- * ---------------------------------
- * <composite:interface>
- *    <composite:attribute name="do" method-signature="String f()" required="true" />
- * </composite:interface>
- * <composite:implementation>
- *    <ez:nesting>
- *       <h:commandButton value="Click Me!" action="#{cc.attrs.do} />
- *    </ez:nesting>
- * </composite:implementation>
- *
- * nesting.xhtml
- * ---------------------------------
- * <composite:interface />
- * <composite:implementation>
- *    <composite:insertChildren>
- * </composite:implementation>
- * </pre>
- *
- * When <code>commandButton</code> is clicked, the <code>ContextualCompositeMethodExpression</code>
- * first is looked up by {@link com.sun.faces.facelets.tag.TagAttributeImpl.AttributeLookupMethodExpression}
- * which results an instance of <code>ContextualCompositeMethodExpression</code>.
- * When this <code>ContextualCompositeMethodExpression is invoked, the {@link javax.faces.view.Location}
- * object necessary to find the proper composite component will be derived from
- * source <code>ValueExpression</code> provided at construction time.  Using the
- * derived {@link javax.faces.view.Location}, we can find the composite component
- * that matches 'owns' the template in which the expression was defined in by
- * comparing the path of the Location with the name and library of the {@link javax.faces.application.Resource}
- * instance associated with each composite component.  If a matching composite
- * component is found, it will be made available to the EL by calling {@link CompositeComponentStackManager#push(javax.faces.component.UIComponent)}.
- * </p>
- */
-public class ContextualCompositeMethodExpression extends MethodExpression {
-
-    private final MethodExpression delegate;
-    private final ValueExpression source;
-    private final Location location;
-
-
-    // -------------------------------------------------------- Constructors
-
-
-    public ContextualCompositeMethodExpression(ValueExpression source,
-                                               MethodExpression delegate) {
-
-        this.delegate = delegate;
-        this.source = source;
-        this.location = null;
-
-    }
-
-
-    public ContextualCompositeMethodExpression(Location location,
-                                               MethodExpression delegate) {
-
-        this.delegate = delegate;
-        this.location = location;
-        this.source = null;
-    }
-
-
-    // ------------------------------------------- Methods from MethodExpression
-
-
-    public MethodInfo getMethodInfo(ELContext elContext) {
-
-        return delegate.getMethodInfo(elContext);
-
-    }
-
-    public Object invoke(ELContext elContext, Object[] objects) {
-
-        FacesContext ctx = (FacesContext) elContext.getContext(FacesContext.class);
-        try {
-            boolean pushed = pushCompositeComponent(ctx);
-            try {
-                return delegate.invoke(elContext, objects);
-            } finally {
-                if (pushed) {
-                    popCompositeComponent(ctx);
-                }
-            }
-        } catch (ELException ele) {
-            if (source != null) {
-                // special handling when an ELException handling.  This is necessary
-                // when there are multiple levels of composite component nesting.
-                // When this happens, we need to evaluate the source expression
-                // to find and invoke the MethodExpression at the next highest
-                // nesting level.  Is there a cleaner way to detect this case?
-                Object fallback = source.getValue(elContext);
-                if (fallback != null && fallback instanceof MethodExpression) {
-                    return ((MethodExpression) fallback).invoke(elContext, objects);
-                } else {
-                    throw ele;
-                }
-            }
-            throw ele;
-        }
-
-    }
-
-
-    // ------------------------------------------------- Methods from Expression
-
-
-    public String getExpressionString() {
-
-        return delegate.getExpressionString();
-
-    }
-
-
-    @SuppressWarnings({"EqualsWhichDoesntCheckParameterClass"})
-    public boolean equals(Object o) {
-
-        return delegate.equals(o);
-
-    }
-
-
-    public int hashCode() {
-
-        return delegate.hashCode();
-
-    }
-
-
-    public boolean isLiteralText() {
-
-        return delegate.isLiteralText();
-
-    }
-
-
-    // ----------------------------------------------------- Private Methods
-
-
-    private boolean pushCompositeComponent(FacesContext ctx) {
-
-        CompositeComponentStackManager manager =
-              CompositeComponentStackManager.getManager(ctx);
-        UIComponent cc = null;
-
-        if (location != null) {
-            cc = manager.findCompositeComponentUsingLocation(ctx, location);
-        } else {
-            // We need to obtain the Location of the source expression in order
-            // to find the composite component that needs to be available within
-            // the evaluation stack.
-            if (source instanceof TagValueExpression) {
-                ValueExpression orig = ((TagValueExpression) source).getWrapped();
-                if (orig instanceof ContextualCompositeValueExpression) {
-                    cc = manager.findCompositeComponentUsingLocation(ctx, ((ContextualCompositeValueExpression) orig).getLocation());
-                }
-            }
-        }
-
-        return manager.push(cc);
-
-    }
-
-
-    private void popCompositeComponent(FacesContext ctx) {
-
-        CompositeComponentStackManager manager =
-              CompositeComponentStackManager.getManager(ctx);
-        manager.pop();
-
-    }
-
-} // END ContextualCompositeMethodExpression
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ *
+ *
+ * This file incorporates work covered by the following copyright and
+ * permission notice:
+ *
+ * Copyright 2005-2007 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.sun.faces.facelets.el;
+
+import com.sun.faces.component.CompositeComponentStackManager;
+
+import com.sun.faces.util.FacesLogger;
+
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import javax.el.MethodExpression;
+import javax.el.ValueExpression;
+import javax.el.MethodInfo;
+import javax.el.ELContext;
+import javax.el.ELException;
+import javax.el.MethodNotFoundException;
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.event.AbortProcessingException;
+import javax.faces.event.ComponentSystemEvent;
+import javax.faces.event.ComponentSystemEventListener;
+import javax.faces.event.PostAddToViewEvent;
+import javax.faces.validator.ValidatorException;
+import javax.faces.view.Location;
+
+/**
+ * <p>
+ * This specialized <code>MethodExpression</code> enables the evaluation of
+ * composite component expressions.  Instances of this expression will be created
+ * when {@link com.sun.faces.facelets.tag.TagAttributeImpl#getValueExpression(javax.faces.view.facelets.FaceletContext, Class)}
+ * is invoked and the expression represents a composite component expression (i.e. #{cc.[properties]}).
+ * </p>
+ *
+ * <p>
+ * It's important to note that these <code>MethodExpression</code>s are context
+ * sensitive in that they leverage the location in which they were referenced
+ * in order to push the proper composite component to the evaluation context
+ * prior to evaluating the expression itself.
+ * </p>
+ *
+ * Here's an example:
+ *
+ * <pre>
+ * Using Page test.xhtml
+ * ---------------------------------
+ *    <ez:comp1 do="#{bean.action}" />
+ *
+ *
+ * comp1.xhtml
+ * ---------------------------------
+ * <composite:interface>
+ *    <composite:attribute name="do" method-signature="String f()" required="true" />
+ * </composite:interface>
+ * <composite:implementation>
+ *    <ez:nesting>
+ *       <h:commandButton value="Click Me!" action="#{cc.attrs.do} />
+ *    </ez:nesting>
+ * </composite:implementation>
+ *
+ * nesting.xhtml
+ * ---------------------------------
+ * <composite:interface />
+ * <composite:implementation>
+ *    <composite:insertChildren>
+ * </composite:implementation>
+ * </pre>
+ *
+ * When <code>commandButton</code> is clicked, the <code>ContextualCompositeMethodExpression</code>
+ * first is looked up by {@link com.sun.faces.facelets.tag.TagAttributeImpl.AttributeLookupMethodExpression}
+ * which results an instance of <code>ContextualCompositeMethodExpression</code>.
+ * When this <code>ContextualCompositeMethodExpression is invoked, the {@link javax.faces.view.Location}
+ * object necessary to find the proper composite component will be derived from
+ * source <code>ValueExpression</code> provided at construction time.  Using the
+ * derived {@link javax.faces.view.Location}, we can find the composite component
+ * that matches 'owns' the template in which the expression was defined in by
+ * comparing the path of the Location with the name and library of the {@link javax.faces.application.Resource}
+ * instance associated with each composite component.  If a matching composite
+ * component is found, it will be made available to the EL by calling {@link CompositeComponentStackManager#push(javax.faces.component.UIComponent)}.
+ * </p>
+ */
+public class ContextualCompositeMethodExpression extends MethodExpression {
+
+    private static final long serialVersionUID = -6281398928485392830L;
+    
+    // Log instance for this class
+    private static final Logger LOGGER = FacesLogger.FACELETS_EL.getLogger();
+
+    private final MethodExpression delegate;
+    private final ValueExpression source;
+    private final Location location;
+    private String ccClientId;
+
+
+    // -------------------------------------------------------- Constructors
+
+
+    public ContextualCompositeMethodExpression(ValueExpression source,
+                                               MethodExpression delegate) {
+
+        this.delegate = delegate;
+        this.source = source;
+        this.location = null;
+        FacesContext ctx = FacesContext.getCurrentInstance();
+        UIComponent cc = UIComponent.getCurrentCompositeComponent(ctx);
+        cc.subscribeToEvent(PostAddToViewEvent.class, new SetClientIdListener(this));
+    }
+
+
+    public ContextualCompositeMethodExpression(Location location,
+                                               MethodExpression delegate) {
+
+
+        this.delegate = delegate;
+        this.location = location;
+        this.source = null;
+        FacesContext ctx = FacesContext.getCurrentInstance();
+        UIComponent cc = UIComponent.getCurrentCompositeComponent(ctx);
+        cc.subscribeToEvent(PostAddToViewEvent.class, new SetClientIdListener(this));
+    }
+
+
+    // ------------------------------------------- Methods from MethodExpression
+
+
+    public MethodInfo getMethodInfo(ELContext elContext) {
+
+        return delegate.getMethodInfo(elContext);
+
+    }
+
+    public Object invoke(ELContext elContext, Object[] objects) {
+
+        FacesContext ctx = (FacesContext) elContext.getContext(FacesContext.class);
+        try {
+            boolean pushed = pushCompositeComponent(ctx);
+            try {
+                return delegate.invoke(elContext, objects);
+            } finally {
+                if (pushed) {
+                    popCompositeComponent(ctx);
+                }
+            }
+        } catch (ELException ele) {
+            /*
+             * If we got a validator exception it is actually correct to 
+             * immediately bubble it up. 
+             */
+            if (ele.getCause() != null && ele.getCause() instanceof ValidatorException) {
+                throw (ValidatorException) ele.getCause();
+            }
+            
+            if (source != null && ele instanceof MethodNotFoundException) {
+                // special handling when an ELException handling.  This is necessary
+                // when there are multiple levels of composite component nesting.
+                // When this happens, we need to evaluate the source expression
+                // to find and invoke the MethodExpression at the next highest
+                // nesting level.  Is there a cleaner way to detect this case?
+                try {
+                    Object fallback = source.getValue(elContext);
+                    if (fallback != null && fallback instanceof MethodExpression) {
+                        return ((MethodExpression) fallback).invoke(elContext, objects);
+
+                    }
+
+                } catch(ELException ex) {
+                    
+                    /*
+                     * If we got a validator exception it is actually correct to 
+                     * immediately bubble it up. 
+                     */
+                    if (ex.getCause() != null && ex.getCause() instanceof ValidatorException) {
+                        throw (ValidatorException) ex.getCause();
+                    }
+                    
+                    if (LOGGER.isLoggable(Level.WARNING)) {
+                        LOGGER.log(Level.WARNING, ele.toString());
+                        LOGGER.log(Level.WARNING,
+                            "jsf.facelets.el.method.expression.invoke.error: {0} {1}",
+                                   new Object[] { ex.toString(),
+                                                  source.getExpressionString() });
+                    }
+                    
+                    if (!(ex instanceof MethodNotFoundException)) {
+                        throw ex;
+                    }
+                }
+            }
+            throw ele;
+        }
+
+    }
+
+
+    // ------------------------------------------------- Methods from Expression
+
+
+    public String getExpressionString() {
+
+        return delegate.getExpressionString();
+
+    }
+
+
+    @SuppressWarnings({"EqualsWhichDoesntCheckParameterClass"})
+    public boolean equals(Object o) {
+
+        return delegate.equals(o);
+
+    }
+
+
+    public int hashCode() {
+
+        return delegate.hashCode();
+
+    }
+
+
+    public boolean isLiteralText() {
+
+        return delegate.isLiteralText();
+
+    }
+
+
+    // ----------------------------------------------------- Private Methods
+
+
+    private boolean pushCompositeComponent(FacesContext ctx) {
+
+        CompositeComponentStackManager manager =
+              CompositeComponentStackManager.getManager(ctx);
+        UIComponent foundCc = null;
+
+        if (location != null) {
+            foundCc = manager.findCompositeComponentUsingLocation(ctx, location);
+        } else {
+            // We need to obtain the Location of the source expression in order
+            // to find the composite component that needs to be available within
+            // the evaluation stack.
+            if (source instanceof TagValueExpression) {
+                ValueExpression orig = ((TagValueExpression) source).getWrapped();
+                if (orig instanceof ContextualCompositeValueExpression) {
+                    foundCc = manager.findCompositeComponentUsingLocation(ctx, ((ContextualCompositeValueExpression) orig).getLocation());
+                }
+            }
+        }
+        if (null == foundCc) {
+            foundCc = ctx.getViewRoot().findComponent(ccClientId);
+        }
+
+        return manager.push(foundCc);
+    }
+
+
+    private void popCompositeComponent(FacesContext ctx) {
+
+        CompositeComponentStackManager manager =
+              CompositeComponentStackManager.getManager(ctx);
+        manager.pop();
+
+    }
+
+    private class SetClientIdListener implements ComponentSystemEventListener {
+
+        private ContextualCompositeMethodExpression ccME;
+        
+        public SetClientIdListener() {
+        }
+        
+        public SetClientIdListener(ContextualCompositeMethodExpression ccME) {
+            this.ccME = ccME;
+        }
+
+        @Override
+        public void processEvent(ComponentSystemEvent event) throws AbortProcessingException {
+            ccME.ccClientId = event.getComponent().getClientId();
+            event.getComponent().unsubscribeFromEvent(PostAddToViewEvent.class, this);
+        }
+    }
+
+} // END ContextualCompositeMethodExpression
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/el/ContextualCompositeValueExpression.java b/jsf-ri/src/main/java/com/sun/faces/facelets/el/ContextualCompositeValueExpression.java
index cae9a6c..e92e15d 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/el/ContextualCompositeValueExpression.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/el/ContextualCompositeValueExpression.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -52,7 +56,6 @@
  * limitations under the License.
  */
 
-
 package com.sun.faces.facelets.el;
 
 import com.sun.faces.component.CompositeComponentStackManager;
@@ -121,6 +124,8 @@ import javax.faces.context.FacesContext;
  * </p>
  */
 public final class ContextualCompositeValueExpression extends ValueExpression {
+    
+    private static final long serialVersionUID = -2637560875633456679L;
 
     private ValueExpression originalVE;
     private Location location;
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/el/DefaultFunctionMapper.java b/jsf-ri/src/main/java/com/sun/faces/facelets/el/DefaultFunctionMapper.java
index 27a9b78..21dc5ac 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/el/DefaultFunctionMapper.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/el/DefaultFunctionMapper.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -52,7 +56,6 @@
  * limitations under the License.
  */
 
-
 package com.sun.faces.facelets.el;
 
 import com.sun.faces.facelets.util.ReflectionUtil;
@@ -71,7 +74,7 @@ import java.util.Map;
  * Default implementation of the FunctionMapper
  *
  * @author Jacob Hookom
- * @version $Id: DefaultFunctionMapper.java 8384 2010-05-17 14:59:38Z jdlee $
+ * @version $Id: DefaultFunctionMapper.java 8641 2010-10-04 20:54:50Z edburns $
  * @see java.lang.reflect.Method
  * @see javax.el.FunctionMapper
  */
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/el/DefaultVariableMapper.java b/jsf-ri/src/main/java/com/sun/faces/facelets/el/DefaultVariableMapper.java
index d28d335..163f721 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/el/DefaultVariableMapper.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/el/DefaultVariableMapper.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -67,7 +71,7 @@ import java.util.Map;
  * @see java.util.Map
  * 
  * @author Jacob Hookom
- * @version $Id: DefaultVariableMapper.java 8384 2010-05-17 14:59:38Z jdlee $
+ * @version $Id: DefaultVariableMapper.java 8641 2010-10-04 20:54:50Z edburns $
  */
 public final class DefaultVariableMapper extends VariableMapper {
 
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/el/ELText.java b/jsf-ri/src/main/java/com/sun/faces/facelets/el/ELText.java
index 649f7fd..52323ad 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/el/ELText.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/el/ELText.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -54,6 +58,7 @@
 
 package com.sun.faces.facelets.el;
 
+import com.sun.faces.el.ELUtils;
 import javax.el.ELContext;
 import javax.el.ELException;
 import javax.el.ExpressionFactory;
@@ -64,12 +69,17 @@ import java.io.Writer;
 import java.util.ArrayList;
 import java.util.List;
 
+import com.sun.faces.util.HtmlUtils;
+import com.sun.faces.util.MessageUtils;
+import javax.faces.context.FacesContext;
+import javax.faces.view.Location;
+
 /**
  * Handles parsing EL Strings in accordance with the EL-API Specification. The
  * parser accepts either <code>${..}</code> or <code>#{..}</code>.
  * 
  * @author Jacob Hookom
- * @version $Id: ELText.java 8384 2010-05-17 14:59:38Z jdlee $
+ * @version $Id: ELText.java 12773 2014-01-14 18:34:24Z mriem $
  */
 public class ELText {
 
@@ -194,15 +204,23 @@ public class ELText {
         }
 
         public ELText apply(ExpressionFactory factory, ELContext ctx) {
-            return new ELTextVariable(factory.createValueExpression(ctx,
+            ELText result = null;
+            if (this.ve instanceof ContextualCompositeValueExpression) {
+                result = new ELTextVariable(ve);
+            } else {
+                result = new ELTextVariable(factory.createValueExpression(ctx,
                     this.ve.getExpressionString(), String.class));
+            }
+            
+            return result;
         }
 
         public void write(Writer out, ELContext ctx) throws ELException,
                 IOException {
             Object v = this.ve.getValue(ctx);
             if (v != null) {
-                out.write((String) v);
+                char[] buffer = new char[1028];
+                HtmlUtils.writeTextForXML(out, v.toString(), buffer);
             }
         }
 
@@ -219,7 +237,7 @@ public class ELText {
                 throws ELException, IOException {
             Object v = this.ve.getValue(ctx);
             if (v != null) {
-                out.writeText((String) v, null);
+                out.writeText(v.toString(), null);
             }
         }
     }
@@ -307,7 +325,9 @@ public class ELText {
     /**
      * Factory method for creating an unvalidated ELText instance. NOTE: All
      * expressions in the passed String are treated as
-     * {@link com.sun.faces.facelets.el.ELText.LiteralValueExpression}
+     * {@link com.sun.faces.facelets.el.ELText.LiteralValueExpression}, with one
+     * exception: composite component expressions.  These are treated as
+     * ContextualCompositeValueExpressions.
      * 
      * @param in
      *            String to parse
@@ -317,6 +337,15 @@ public class ELText {
     public static ELText parse(String in) throws ELException {
         return parse(null, null, in);
     }
+    
+    public static ELText parse(String in, String alias) throws ELException {
+        return parse(null, null, in, alias);
+    }
+    
+    public static ELText parse(ExpressionFactory fact, ELContext ctx, String in)
+            throws ELException {
+        return parse(null, null, in, null);
+    }    
 
     /**
      * Factory method for creating a validated ELText instance. When an
@@ -333,7 +362,8 @@ public class ELText {
      * @return ELText that can be re-applied later
      * @throws javax.el.ELException
      */
-    public static ELText parse(ExpressionFactory fact, ELContext ctx, String in)
+    public static ELText parse(ExpressionFactory fact, ELContext ctx, String in,
+            String alias)
             throws ELException {
         char[] ca = in.toCharArray();
         int i = 0;
@@ -369,8 +399,26 @@ public class ELText {
                                     i, vlen), String.class);
                             t = new ELTextVariable(ve);
                         } else {
-                            t = new ELTextVariable(new LiteralValueExpression(
-                                    new String(ca, i, vlen)));
+                            String expr = new String(ca, i, vlen);
+                            if (null != alias && ELUtils.isCompositeComponentExpr(expr)) {
+                                if (ELUtils.isCompositeComponentLookupWithArgs(expr)) {
+                                    String message =
+                                            MessageUtils.getExceptionMessageString(MessageUtils.ARGUMENTS_NOT_LEGAL_CC_ATTRS_EXPR);
+                                    throw new ELException(message);
+                                }    
+                                FacesContext context = FacesContext.getCurrentInstance();
+                                ELContext elContext = context.getELContext();
+                                ValueExpression delegate = 
+                                        context.getApplication().getExpressionFactory().
+                                        createValueExpression(elContext, expr, Object.class);
+                                Location location = new Location(alias, -1, -1);                                
+                                ve = new ContextualCompositeValueExpression(location,
+                                                                            delegate);
+                                
+                            } else {
+                                ve = new LiteralValueExpression(expr);
+                            }
+                            t = new ELTextVariable(ve);
                         }
                         text.add(t);
                         i += vlen;
@@ -388,8 +436,8 @@ public class ELText {
             buff.setLength(0);
         }
 
-        if (text.size() == 0) {
-            return null;
+        if (text.isEmpty()) {
+            return new ELText("");
         } else if (text.size() == 1) {
             return (ELText) text.get(0);
         } else {
@@ -403,18 +451,30 @@ public class ELText {
         int len = ca.length;
         char c = 0;
         int str = 0;
+        int nested = 0;
+        boolean insideString = false;
         while (i < len) {
             c = ca[i];
             if ('\\' == c && i<len-1) {
                 i++;
             } else if ('\'' == c || '"' == c) {
                 if (str == c) {
+                    insideString = false;
                     str = 0;
                 } else {
+                    insideString = true;
                     str = c;
                 }
+            } else if ('{' == c && !insideString) {
+                nested++;
             } else if (str == 0 && ('}' == c)) {
-                return i - s + 1;
+                if (nested > 1) {
+                    nested--;
+                } else {
+                    return i - s + 1;
+                }
+            } else if ('}' == c && !insideString) {
+                nested--;
             }
             i++;
         }
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/el/LegacyELContext.java b/jsf-ri/src/main/java/com/sun/faces/facelets/el/LegacyELContext.java
index 6b56d13..5c80350 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/el/LegacyELContext.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/el/LegacyELContext.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -52,7 +56,6 @@
  * limitations under the License.
  */
 
-
 package com.sun.faces.facelets.el;
 
 import javax.el.*;
@@ -69,7 +72,7 @@ import java.util.*;
  * 
  * 
  * @author Jacob Hookom
- * @version $Id: LegacyELContext.java 8384 2010-05-17 14:59:38Z jdlee $
+ * @version $Id: LegacyELContext.java 10784 2012-10-02 15:51:00Z mriem $
  * @deprecated
  */
 public final class LegacyELContext extends ELContext {
@@ -241,7 +244,7 @@ public final class LegacyELContext extends ELContext {
 
         }
 
-        private final Map resolveScope(String var) {
+        private Map resolveScope(String var) {
             ExternalContext ext = faces.getExternalContext();
 
             // cycle through the scopes to find a match, if no
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/el/LegacyMethodBinding.java b/jsf-ri/src/main/java/com/sun/faces/facelets/el/LegacyMethodBinding.java
index cf91ca1..5f55408 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/el/LegacyMethodBinding.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/el/LegacyMethodBinding.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -52,7 +56,6 @@
  * limitations under the License.
  */
 
-
 package com.sun.faces.facelets.el;
 
 import javax.el.ELException;
@@ -67,7 +70,7 @@ import java.io.Serializable;
  * For legacy ActionSources
  * 
  * @author Jacob Hookom
- * @version $Id: LegacyMethodBinding.java 8384 2010-05-17 14:59:38Z jdlee $
+ * @version $Id: LegacyMethodBinding.java 8641 2010-10-04 20:54:50Z edburns $
  * @deprecated
  */
 public final class LegacyMethodBinding extends
@@ -117,4 +120,4 @@ public final class LegacyMethodBinding extends
     public String getExpressionString() {
         return m.getExpressionString();
     }
-}
\ No newline at end of file
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/el/LegacyValueBinding.java b/jsf-ri/src/main/java/com/sun/faces/facelets/el/LegacyValueBinding.java
index c58cacf..0235390 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/el/LegacyValueBinding.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/el/LegacyValueBinding.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -71,7 +75,7 @@ import java.io.ObjectOutput;
  * 
  * 
  * @author Jacob Hookom
- * @version $Id: LegacyValueBinding.java 8384 2010-05-17 14:59:38Z jdlee $
+ * @version $Id: LegacyValueBinding.java 8641 2010-10-04 20:54:50Z edburns $
  * @deprecated
  */
 public final class LegacyValueBinding extends ValueBinding implements Externalizable {
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/el/TagMethodExpression.java b/jsf-ri/src/main/java/com/sun/faces/facelets/el/TagMethodExpression.java
index e8773cd..1caf169 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/el/TagMethodExpression.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/el/TagMethodExpression.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -52,7 +56,6 @@
  * limitations under the License.
  */
 
-
 package com.sun.faces.facelets.el;
 
 import javax.el.*;
@@ -66,7 +69,7 @@ import java.io.ObjectOutput;
  * 
  * 
  * @author Jacob Hookom
- * @version $Id: TagMethodExpression.java 8384 2010-05-17 14:59:38Z jdlee $
+ * @version $Id: TagMethodExpression.java 8641 2010-10-04 20:54:50Z edburns $
  */
 public final class TagMethodExpression extends MethodExpression implements
         Externalizable {
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/el/TagValueExpression.java b/jsf-ri/src/main/java/com/sun/faces/facelets/el/TagValueExpression.java
index 56a4a09..bd814f0 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/el/TagValueExpression.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/el/TagValueExpression.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -52,7 +56,6 @@
  * limitations under the License.
  */
 
-
 package com.sun.faces.facelets.el;
 
 import javax.el.*;
@@ -66,7 +69,7 @@ import java.io.ObjectOutput;
  * 
  * 
  * @author Jacob Hookom
- * @version $Id: TagValueExpression.java 8384 2010-05-17 14:59:38Z jdlee $
+ * @version $Id: TagValueExpression.java 9219 2011-07-25 20:54:43Z dueni $
  */
 public final class TagValueExpression extends ValueExpression implements
         Externalizable {
@@ -95,9 +98,9 @@ public final class TagValueExpression extends ValueExpression implements
             return this.orig.getType(context);
         } catch (PropertyNotFoundException pnfe) {
             throw new PropertyNotFoundException(this.attr + ": "
-                    + pnfe.getMessage(), pnfe.getCause());
+                    + pnfe.getMessage(), pnfe);
         } catch (ELException e) {
-            throw new ELException(this.attr + ": " + e.getMessage(), e.getCause());
+            throw new ELException(this.attr + ": " + e.getMessage(), e);
         }
     }
 
@@ -106,9 +109,9 @@ public final class TagValueExpression extends ValueExpression implements
             return this.orig.getValue(context);
         } catch (PropertyNotFoundException pnfe) {
             throw new PropertyNotFoundException(this.attr + ": "
-                    + pnfe.getMessage(), pnfe.getCause());
+                    + pnfe.getMessage(), pnfe);
         } catch (ELException e) {
-            throw new ELException(this.attr + ": " + e.getMessage(), e.getCause());
+            throw new ELException(this.attr + ": " + e.getMessage(), e);
         }
     }
 
@@ -117,9 +120,9 @@ public final class TagValueExpression extends ValueExpression implements
             return this.orig.isReadOnly(context);
         } catch (PropertyNotFoundException pnfe) {
             throw new PropertyNotFoundException(this.attr + ": "
-                    + pnfe.getMessage(), pnfe.getCause());
+                    + pnfe.getMessage(), pnfe);
         } catch (ELException e) {
-            throw new ELException(this.attr + ": " + e.getMessage(), e.getCause());
+            throw new ELException(this.attr + ": " + e.getMessage(), e);
         }
     }
 
@@ -128,12 +131,12 @@ public final class TagValueExpression extends ValueExpression implements
             this.orig.setValue(context, value);
         } catch (PropertyNotFoundException pnfe) {
             throw new PropertyNotFoundException(this.attr + ": "
-                    + pnfe.getMessage(), pnfe.getCause());
+                    + pnfe.getMessage(), pnfe);
         } catch (PropertyNotWritableException pnwe) {
             throw new PropertyNotWritableException(this.attr + ": "
-                    + pnwe.getMessage(), pnwe.getCause());
+                    + pnwe.getMessage(), pnwe);
         } catch (ELException e) {
-            throw new ELException(this.attr + ": " + e.getMessage(), e.getCause());
+            throw new ELException(this.attr + ": " + e.getMessage(), e);
         }
     }
 
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/el/VariableMapperWrapper.java b/jsf-ri/src/main/java/com/sun/faces/facelets/el/VariableMapperWrapper.java
index 50668a4..d4c0df7 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/el/VariableMapperWrapper.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/el/VariableMapperWrapper.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -52,7 +56,6 @@
  * limitations under the License.
  */
 
-
 package com.sun.faces.facelets.el;
 
 import javax.el.ELException;
@@ -68,7 +71,7 @@ import java.util.Map;
  * contain the ValueExpression requested.
  *
  * @author Jacob Hookom
- * @version $Id: VariableMapperWrapper.java 8384 2010-05-17 14:59:38Z jdlee $
+ * @version $Id: VariableMapperWrapper.java 8641 2010-10-04 20:54:50Z edburns $
  */
 public class VariableMapperWrapper extends VariableMapper {
 
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/impl/DefaultFacelet.java b/jsf-ri/src/main/java/com/sun/faces/facelets/impl/DefaultFacelet.java
index 364b9f8..6e32daa 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/impl/DefaultFacelet.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/impl/DefaultFacelet.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -54,19 +58,16 @@
 
 package com.sun.faces.facelets.impl;
 
-import com.sun.faces.facelets.Facelet;
+import javax.faces.view.facelets.Facelet;
 import com.sun.faces.facelets.tag.jsf.ComponentSupport;
 import com.sun.faces.util.FacesLogger;
 import com.sun.faces.util.Util;
 
-import javax.el.ELException;
 import javax.el.ExpressionFactory;
-import javax.faces.FacesException;
 import javax.faces.application.ProjectStage;
 import javax.faces.component.UIComponent;
 import javax.faces.context.FacesContext;
 import javax.faces.view.facelets.FaceletContext;
-import javax.faces.view.facelets.FaceletException;
 import javax.faces.view.facelets.FaceletHandler;
 import java.io.Externalizable;
 import java.io.IOException;
@@ -83,9 +84,9 @@ import java.util.logging.Logger;
  * Default Facelet implementation.
  * 
  * @author Jacob Hookom
- * @version $Id: DefaultFacelet.java 8384 2010-05-17 14:59:38Z jdlee $
+ * @version $Id: DefaultFacelet.java 11724 2013-03-11 20:16:53Z mriem $
  */
-final class DefaultFacelet extends Facelet {
+final class DefaultFacelet extends Facelet implements XMLFrontMatterSaver {
 
     private static final Logger log = FacesLogger.FACELETS_FACELET.getLogger();
 
@@ -102,13 +103,15 @@ final class DefaultFacelet extends Facelet {
 
     private final long refreshPeriod;
 
-    private final Map<String,URL> relativePaths;
-
     private final FaceletHandler root;
 
     private final URL src;
 
     private IdMapper mapper;
+    
+    private String savedDoctype;
+    
+    private String savedXMLDecl;
 
     public DefaultFacelet(DefaultFaceletFactory factory,
                           ExpressionFactory el,
@@ -124,9 +127,19 @@ final class DefaultFacelet extends Facelet {
         this.mapper = factory.idMappers.get(alias);
         this.createTime = System.currentTimeMillis();
         this.refreshPeriod = this.factory.getRefreshPeriod();
-        this.relativePaths = new WeakHashMap<String,URL>();
-
 
+        String DOCTYPE = Util.getDOCTYPEFromFacesContextAttributes(FacesContext.getCurrentInstance());
+        if (null != DOCTYPE) {
+            // This will happen on the request that causes the facelets to be compiled
+            this.setSavedDoctype(DOCTYPE);
+        }        
+
+        String XMLDECL = Util.getXMLDECLFromFacesContextAttributes(FacesContext.getCurrentInstance());
+        if (null != XMLDECL) {
+            // This will happen on the request that causes the facelets to be compiled
+            this.setSavedXMLDecl(XMLDECL);
+        }        
+        
     }
 
     /**
@@ -267,12 +280,7 @@ final class DefaultFacelet extends Facelet {
      *             if there is a problem creating the URL for the path specified
      */
     private URL getRelativePath(String path) throws IOException {
-        URL url = this.relativePaths.get(path);
-        if (url == null) {
-            url = this.factory.resolveURL(this.src, path);
-            this.relativePaths.put(path, url);
-        }
-        return url;
+        return this.factory.resolveURL(this.src, path);
     }
 
     /**
@@ -359,7 +367,7 @@ final class DefaultFacelet extends Facelet {
      */
     public void include(DefaultFaceletContext ctx, UIComponent parent, URL url)
     throws IOException {
-        DefaultFacelet f = (DefaultFacelet) this.factory.getFacelet(url);
+        DefaultFacelet f = (DefaultFacelet) this.factory.getFacelet(ctx.getFacesContext(), url);
         f.include(ctx, parent);
     }
 
@@ -391,8 +399,31 @@ final class DefaultFacelet extends Facelet {
     public String toString() {
         return this.alias;
     }
+    
+    // ---------------------------------------------------------- Helper Methods
 
+    @Override
+    public String getSavedDoctype() {
+        return savedDoctype;
+    }
+
+    @Override
+    public void setSavedDoctype(String savedDoctype) {
+        this.savedDoctype = savedDoctype;
+    }
 
+    @Override
+    public String getSavedXMLDecl() {
+        return savedXMLDecl;
+    }
+
+    @Override
+    public void setSavedXMLDecl(String savedXMLDecl) {
+        this.savedXMLDecl = savedXMLDecl;
+    }
+    
+    
+    
     // --------------------------------------------------------- Private Methods
 
 
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/impl/DefaultFaceletCache.java b/jsf-ri/src/main/java/com/sun/faces/facelets/impl/DefaultFaceletCache.java
index 3c662b7..07cf7f5 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/impl/DefaultFaceletCache.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/impl/DefaultFaceletCache.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 2010-2013 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -37,19 +41,20 @@
 package com.sun.faces.facelets.impl;
 
 
-import com.sun.faces.facelets.FaceletCache;
+import javax.faces.view.facelets.FaceletCache;
 import com.sun.faces.util.ConcurrentCache;
 import com.sun.faces.util.ExpiringConcurrentCache;
+import com.sun.faces.util.FacesLogger;
+import com.sun.faces.util.Util;
 
 import javax.faces.FacesException;
 import java.io.IOException;
-import java.io.InputStream;
 
 import java.net.URL;
-import java.net.URLConnection;
 
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.atomic.AtomicLong;
+import java.util.logging.Logger;
 
 
 /**
@@ -57,9 +62,11 @@ import java.util.concurrent.atomic.AtomicLong;
  */
 final class DefaultFaceletCache extends FaceletCache<DefaultFacelet> {
 
+    private final static Logger LOGGER = FacesLogger.FACELETS_FACTORY.getLogger();
+    
     /**
      *Constructor
-     * @param refreshPeriod cache refresh period (in milliseconds).
+     * @param refreshPeriod cache refresh period (in seconds).
      * 0 means 'always refresh', negative value means 'never refresh'
      */
     DefaultFaceletCache(final long refreshPeriod) {
@@ -75,9 +82,9 @@ final class DefaultFaceletCache extends FaceletCache<DefaultFacelet> {
             public Record newInstance(final URL key) throws IOException {
                 // Make sure that the expensive timestamp retrieval is not done
                 // if no expiry check is going to be performed
-                long lastModified = checkExpiry ? _getLastModified(key) : 0;
+                long lastModified = checkExpiry ? Util.getLastModified(key) : 0;
                 return new Record(System.currentTimeMillis(), lastModified,
-                                  getFaceletInstanceFactory().newInstance(key), refreshPeriod);
+                                  getMemberFactory().newInstance(key), refreshPeriod);
             }
         };
 
@@ -86,9 +93,9 @@ final class DefaultFaceletCache extends FaceletCache<DefaultFacelet> {
             public Record newInstance(final URL key) throws IOException {
                 // Make sure that the expensive timestamp retrieval is not done
                 // if no expiry check is going to be performed
-                long lastModified = checkExpiry ? _getLastModified(key) : 0;
+                long lastModified = checkExpiry ? Util.getLastModified(key) : 0;
                 return new Record(System.currentTimeMillis(), lastModified,
-                                  getMetadataFaceletInstanceFactory().newInstance(key), refreshPeriod);
+                                  getMetadataMemberFactory().newInstance(key), refreshPeriod);
             }
         };
 
@@ -108,7 +115,9 @@ final class DefaultFaceletCache extends FaceletCache<DefaultFacelet> {
         }
     }
 
+    @Override
     public DefaultFacelet getFacelet(URL url) throws IOException {
+        com.sun.faces.util.Util.notNull("url", url);
         DefaultFacelet f = null;
         
         try {
@@ -119,12 +128,18 @@ final class DefaultFaceletCache extends FaceletCache<DefaultFacelet> {
         return f;
     }
 
+    @Override
     public boolean isFaceletCached(URL url) {
+        com.sun.faces.util.Util.notNull("url", url);
+
         return _faceletCache.containsKey(url);
     }
 
 
-    public DefaultFacelet getMetadataFacelet(URL url) throws IOException {
+    @Override
+    public DefaultFacelet getViewMetadataFacelet(URL url) throws IOException {
+        com.sun.faces.util.Util.notNull("url", url);
+
         DefaultFacelet f = null;
         
         try {
@@ -135,7 +150,10 @@ final class DefaultFaceletCache extends FaceletCache<DefaultFacelet> {
         return f;
     }
 
-    public boolean isMetadataFaceletCached(URL url) {
+    @Override
+    public boolean isViewMetadataFaceletCached(URL url) {
+        com.sun.faces.util.Util.notNull("url", url);
+
         return _metadataFaceletCache.containsKey(url);
     }
 
@@ -144,32 +162,15 @@ final class DefaultFaceletCache extends FaceletCache<DefaultFacelet> {
         if (t instanceof IOException) {
             throw (IOException)t;
         }
+        if (t.getCause() instanceof IOException) {
+            throw (IOException)t.getCause();
+        }
         if (t instanceof RuntimeException) {
             throw (RuntimeException)t;
         }
         throw new FacesException(t);
     }
     
-    private static long _getLastModified(URL url) {
-        InputStream is = null;
-        try {
-            URLConnection conn = url.openConnection();
-            is = conn.getInputStream();
-            return conn.getLastModified();
-        } catch (Exception e) {
-            throw new FacesException("Error Checking Last Modified for " +
-                                       url, e);
-        } finally {
-            if (is != null) {
-                try {
-                    is.close();
-                } catch (Exception e) {
-                    // do nothing
-                }
-            }
-        }
-    }
-
     private final ConcurrentCache<URL, Record> _faceletCache;
     private final ConcurrentCache<URL, Record> _metadataFaceletCache;
 
@@ -214,7 +215,7 @@ final class DefaultFaceletCache extends FaceletCache<DefaultFacelet> {
             // getNextRefreshTime() incremenets the next refresh time atomically
             long ttl = record.getNextRefreshTime();
             if (System.currentTimeMillis() > ttl) {
-                long lastModified = _getLastModified(url);
+                long lastModified = Util.getLastModified(url);
                 // The record is considered expired if its original last modified time
                 // is older than the URL's current last modified time
                 return (lastModified > record.getLastModified());
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/impl/DefaultFaceletContext.java b/jsf-ri/src/main/java/com/sun/faces/facelets/impl/DefaultFaceletContext.java
index 7f09066..370f411 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/impl/DefaultFaceletContext.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/impl/DefaultFaceletContext.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -52,10 +56,9 @@
  * limitations under the License.
  */
 
-
 package com.sun.faces.facelets.impl;
 
-import com.sun.faces.facelets.Facelet;
+import javax.faces.view.facelets.Facelet;
 import com.sun.faces.facelets.FaceletContextImplBase;
 import com.sun.faces.facelets.TemplateClient;
 import com.sun.faces.facelets.el.DefaultVariableMapper;
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/impl/DefaultFaceletFactory.java b/jsf-ri/src/main/java/com/sun/faces/facelets/impl/DefaultFaceletFactory.java
index fe3cbd2..4686aad 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/impl/DefaultFaceletFactory.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/impl/DefaultFaceletFactory.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -52,31 +56,44 @@
  * limitations under the License.
  */
 
-
 package com.sun.faces.facelets.impl;
 
-import com.sun.faces.facelets.Facelet;
-import com.sun.faces.facelets.FaceletCache;
-import com.sun.faces.facelets.FaceletFactory;
+import com.sun.faces.RIConstants;
+import com.sun.faces.context.FacesFileNotFoundException;
+import java.net.MalformedURLException;
+import javax.faces.FactoryFinder;
+import javax.faces.component.UIComponent;
+import javax.faces.view.facelets.Facelet;
+import javax.faces.view.facelets.FaceletCache;
 import com.sun.faces.facelets.compiler.Compiler;
 import com.sun.faces.util.Cache;
 import com.sun.faces.util.FacesLogger;
 import com.sun.faces.util.Util;
 
-import javax.faces.view.facelets.FaceletException;
+import java.io.ByteArrayInputStream;
+import java.io.File;
+import javax.faces.view.facelets.FaceletCacheFactory;
 import javax.faces.view.facelets.FaceletHandler;
 import javax.faces.view.facelets.ResourceResolver;
 import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
 import java.io.IOException;
-import java.io.InputStream;
+import java.io.OutputStreamWriter;
+import java.io.UnsupportedEncodingException;
+import java.lang.reflect.Method;
 import java.net.URL;
-import java.net.URLConnection;
 
+import java.util.List;
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentMap;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 import java.util.regex.Pattern;
+import javax.faces.FacesException;
+import javax.faces.application.Application;
+import javax.faces.context.ExternalContext;
+import javax.faces.context.FacesContext;
 
 
 /**
@@ -86,21 +103,24 @@ import java.util.regex.Pattern;
  * @version $Id: DefaultFaceletFactory.java,v 1.10 2007/04/09 01:13:17 youngm
  *          Exp $
  */
-public class DefaultFaceletFactory extends FaceletFactory {
+public class DefaultFaceletFactory {
 
     protected final static Logger log = FacesLogger.FACELETS_FACTORY.getLogger();
 
-    private final Compiler compiler;
+    private Compiler compiler;
 
-    private Map<String, URL> relativeLocations;
+    // We continue to use a ResourceResolver just in case someone
+    // provides a custom one.  The DefaultResourceResolver simply uses
+    // the ResourceHandler to do its work.
+    private ResourceResolver resolver;
 
-    private final ResourceResolver resolver;
-
-    private final URL baseUrl;
+    private  URL baseUrl;
     
-    private final long refreshPeriod;
+    private long refreshPeriod;
+
+    private FaceletCache<DefaultFacelet> cache;
 
-    private final FaceletCache<DefaultFacelet> cache;
+    private ConcurrentMap<String, FaceletCache<DefaultFacelet>> cachePerContract;
 
     Cache<String,IdMapper> idMappers;
     
@@ -108,7 +128,15 @@ public class DefaultFaceletFactory extends FaceletFactory {
 
     // ------------------------------------------------------------ Constructors
 
-
+    public DefaultFaceletFactory() {
+        this.compiler = null;
+        this.resolver = null;
+        this.refreshPeriod = -1;
+        this.cache = null;
+        this.baseUrl = null;
+    }
+    
+    
     public DefaultFaceletFactory(Compiler compiler, ResourceResolver resolver)
     throws IOException {
 
@@ -127,11 +155,17 @@ public class DefaultFaceletFactory extends FaceletFactory {
                                  ResourceResolver resolver,
                                  long refreshPeriod,
                                  FaceletCache cache) {
-
+        this.init(compiler, resolver, refreshPeriod, cache);
+    }
+    
+    public final void init(Compiler compiler,
+            ResourceResolver resolver,
+            long refreshPeriod,
+            FaceletCache cache) {
         Util.notNull("compiler", compiler);
         Util.notNull("resolver", resolver);
         this.compiler = compiler;
-        this.relativeLocations = new ConcurrentHashMap<String, URL>();
+        this.cachePerContract = new ConcurrentHashMap<String, FaceletCache<DefaultFacelet>>();
         this.resolver = resolver;
         this.baseUrl = resolver.resolveUrl("/");
         this.idMappers = new Cache<String,IdMapper>(new IdMapperFactory());
@@ -139,37 +173,52 @@ public class DefaultFaceletFactory extends FaceletFactory {
         refreshPeriod = (refreshPeriod >= 0) ? refreshPeriod * 1000 : -1;
         this.refreshPeriod = refreshPeriod;
         if (log.isLoggable(Level.FINE)) {
-            log.fine("Using ResourceResolver: " + resolver);
-            log.fine("Using Refresh Period: " + refreshPeriod);
-        }
-        if (cache == null) {
-            cache = new DefaultFaceletCache(refreshPeriod);
+            log.log(Level.FINE, "Using ResourceResolver: {0}", resolver);
+            log.log(Level.FINE, "Using Refresh Period: {0}", refreshPeriod);
         }
         
         // We can cast to the FaceletCache<DefaultFacelet> here because we know
         // that the Generics information is only used at compile time, and all cache
         // implementations will be using instance factories provided by us and returning DefaultFacelet
-        this.cache = (FaceletCache<DefaultFacelet>)cache;
-        
+        this.cache = initCache((FaceletCache<DefaultFacelet>)cache);
+    }
+
+    private FaceletCache<DefaultFacelet> initCache(FaceletCache<DefaultFacelet> cache) {
+
+        if(cache == null) {
+            FaceletCacheFactory cacheFactory = (FaceletCacheFactory)
+                    FactoryFinder.getFactory(FactoryFinder.FACELET_CACHE_FACTORY);
+            cache = cacheFactory.getFaceletCache();
+        }
+
         // Create instance factories for the  cache, so that the cache can
         // create Facelets and Metadata Facelets
-        FaceletCache.InstanceFactory<DefaultFacelet> faceletFactory = 
-            new FaceletCache.InstanceFactory<DefaultFacelet>() {
+        FaceletCache.MemberFactory<DefaultFacelet> faceletFactory =
+            new FaceletCache.MemberFactory<DefaultFacelet>() {
                 public DefaultFacelet newInstance(final URL key) throws IOException {
                     return createFacelet(key);
                 }
             };
-        FaceletCache.InstanceFactory<DefaultFacelet> metadataFaceletFactory = 
-            new FaceletCache.InstanceFactory<DefaultFacelet>() {
+        FaceletCache.MemberFactory<DefaultFacelet> metadataFaceletFactory =
+            new FaceletCache.MemberFactory<DefaultFacelet>() {
                 public DefaultFacelet newInstance(final URL key) throws IOException {
                     return createMetadataFacelet(key);
                 }
             };
-        
-        this.cache.init(faceletFactory, metadataFaceletFactory);
+        try {
+            // We must call this method using reflection because it is protected.
+            Method m = FaceletCache.class.getDeclaredMethod("setMemberFactories", FaceletCache.MemberFactory.class, FaceletCache.MemberFactory.class);
+            m.setAccessible(true);
+            m.invoke(cache, faceletFactory, metadataFaceletFactory);
+        } catch (Exception ex) {
+            if (log.isLoggable(Level.SEVERE)) {
+                log.log(Level.SEVERE, null, ex);
+            }
+            throw new FacesException(ex);
+        }
+        return cache;
     }
 
-
     /*
       * (non-Javadoc)
       *
@@ -185,17 +234,16 @@ public class DefaultFaceletFactory extends FaceletFactory {
       *
       * @see com.sun.facelets.FaceletFactory#getFacelet(java.lang.String)
       */
-    public Facelet getFacelet(String uri) throws IOException {
+    public Facelet getFacelet(FacesContext context, String uri) throws IOException {
 
-        return this.getFacelet(resolveURL(uri));
+        return this.getFacelet(context, resolveURL(uri));
 
     }
 
 
+    public Facelet getMetadataFacelet(FacesContext context, String uri) throws IOException {
 
-    public Facelet getMetadataFacelet(String uri) throws IOException {
-
-        return this.getMetadataFacelet(resolveURL(uri));
+        return this.getMetadataFacelet(context, resolveURL(uri));
 
     }
 
@@ -215,10 +263,11 @@ public class DefaultFaceletFactory extends FaceletFactory {
      * @throws IOException
      */
     public URL resolveURL(URL source, String path) throws IOException {
+        // PENDING(FCAPUTO): always go to the resolver to make resource libary contracts work with relative urls
         if (path.startsWith("/")) {
             URL url = this.resolver.resolveUrl(path);
             if (url == null) {
-                throw new FileNotFoundException(path
+                throw new FacesFileNotFoundException(path
                                                 + " Not Found in ExternalContext as a Resource");
             }
             return url;
@@ -241,34 +290,172 @@ public class DefaultFaceletFactory extends FaceletFactory {
      * @throws FacesException
      * @throws ELException
      */
-    public Facelet getFacelet(URL url) throws IOException {
-        return this.cache.getFacelet(url);
+    public Facelet getFacelet(FacesContext context, URL url) throws IOException {
+        
+        Facelet result = getCache(context).getFacelet(url);
+
+        DefaultFacelet _facelet = null;
+        if (result instanceof DefaultFacelet) {
+            _facelet = (DefaultFacelet) result;
+            String docType = _facelet.getSavedDoctype();
+            if (null != docType) {
+                Util.saveDOCTYPEToFacesContextAttributes(docType);
+            }
+            
+            String xmlDecl = _facelet.getSavedXMLDecl();
+            if (null != xmlDecl) {
+                Util.saveXMLDECLToFacesContextAttributes(xmlDecl);
+            }
+        }
+
+        return result;
+        
     }
 
-    public Facelet getMetadataFacelet(URL url) throws IOException {
-        return this.cache.getMetadataFacelet(url);
+    public Facelet getMetadataFacelet(FacesContext context, URL url) throws IOException {
+        return getCache(context).getViewMetadataFacelet(url);
     }
 
     public boolean needsToBeRefreshed(URL url) {
-        return !this.cache.isFaceletCached(url);
+        if(!cache.isFaceletCached(url)) {
+            return true;
+        }
+        if (cachePerContract == null) {
+            return false;
+        }
+        // PENDING(FCAPUTO) not sure, if this is what we want.
+        for (FaceletCache<DefaultFacelet> faceletCache : cachePerContract.values()) {
+            if(!faceletCache.isFaceletCached(url)) {
+                return true;
+            }
+        }
+        return false;
     }
 
-    
+    private FaceletCache<DefaultFacelet> getCache(FacesContext context) {
+        List<String> contracts = context.getResourceLibraryContracts();
+        if(!contracts.isEmpty()) {
+            StringBuilder builder = new StringBuilder();
+            for (int i=0; i<contracts.size(); i++) {
+                builder.append(contracts.get(i));
+                if (i + 1 != contracts.size()) {
+                    builder.append(",");
+                }
+            }
+            String contractsKey = builder.toString();
+            FaceletCache<DefaultFacelet> faceletCache = cachePerContract.get(contractsKey);
+            if(faceletCache == null) {
+                // PENDING(FCAPUTO) we don't support com.sun.faces.config.WebConfiguration.WebContextInitParameter#FaceletCache for contracts
+                faceletCache = initCache(null);
+                cachePerContract.putIfAbsent(contractsKey, faceletCache);
+                faceletCache = cachePerContract.get(contractsKey);
+            }
+            return faceletCache;
+        }
+        return this.cache;
+    }
 
     private URL resolveURL(String uri) throws IOException {
-
-        URL url = this.relativeLocations.get(uri);
+        // PENDING(FCAPUTO) Deactivated caching for resource library contracts. If we still want to cache it, we need a cache per contract libraries list.
+        //         But the ResourceHandler caches on his own (using ResourceManager).
+        URL url = this.resolveURL(this.baseUrl, uri);
         if (url == null) {
-            url = this.resolveURL(this.baseUrl, uri);
-            if (url != null) {
-                this.relativeLocations.put(uri, url);
-            } else {
-                throw new IOException("'" + uri + "' not found.");
-            }
+            throw new IOException("'" + uri + "' not found.");
         }
         return url;
+    }
 
+    public UIComponent _createComponent(FacesContext context, String taglibURI, String tagName, 
+    Map<String, Object> attributes) {
+        // PENDING(FCAPUTO) does this work for resource library contracts? I think so.
+        UIComponent result = null;
+        Application app = context.getApplication();
+        ExternalContext extContext = context.getExternalContext();
+        File tmpDir = (File) extContext.getApplicationMap().get("javax.servlet.context.tempdir");
+        File tempFile = null;
+        OutputStreamWriter osw = null;
+        try {
+            
+            // create a temporary file in that directory
+            tempFile = File.createTempFile("mojarra", ".tmp", tmpDir);
+            osw = new OutputStreamWriter(new FileOutputStream(tempFile), RIConstants.CHAR_ENCODING);
+            osw.append("<?xml version='1.0' encoding='");
+            osw.append(RIConstants.CHAR_ENCODING);
+            osw.append("' ?>");
+            osw.append("<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">");
+            osw.append("<html xmlns=\"http://www.w3.org/1999/xhtml\"\n");
+            osw.append("      xmlns:j=\"").append(taglibURI).append("\">");
+            osw.append("  <j:").append(tagName).append(" ");
+            if (null != attributes && !attributes.isEmpty()) {
+                for (Map.Entry<String,Object> attr : attributes.entrySet()) {
+                    osw.append(attr.getKey()).append("=\"").append(attr.getValue().toString()).append("\"").append(" ");
+                }
+            }
+            String tempId = context.getViewRoot().createUniqueId(context, tagName);
+            osw.append(" id=\"").append(tempId).append("\" />");
+            osw.append("</html>");
+            try {
+                osw.flush();
+                osw.close();
+            } catch (IOException ex) {
+                if (log.isLoggable(Level.FINEST)) {
+                    log.log(Level.FINEST, "Flushing and closing stream", ex);
+                }
+            }
+                  
+            URL fabricatedFaceletPage = tempFile.toURI().toURL();
+            Facelet f = createFacelet(fabricatedFaceletPage);
+            UIComponent tmp = (UIComponent)
+                    app.createComponent("javax.faces.NamingContainer");
+            tmp.setId(context.getViewRoot().createUniqueId());
+            f.apply(context, tmp);
+                result = tmp.findComponent(tempId);
+            tmp.getChildren().clear();
+            osw = null;
+            
+        } catch (MalformedURLException mue) {
+            if (log.isLoggable(Level.FINEST)) {
+                log.log(Level.FINEST, "Invalid URL", mue);
+            }
+        } catch (IOException ioe) {
+            if (log.isLoggable(Level.FINEST)) {
+                log.log(Level.FINEST, "I/O error", ioe);
+            }
+        } finally {
+            if (null != osw) {
+                try {
+                    osw.close();
+                } catch (IOException ioe) {
+                    if (log.isLoggable(Level.FINEST)) {
+                        log.log(Level.FINEST, "Closing stream", ioe);
+                    }
+                }
+            }
+            if (null != tempFile) {
+                boolean successful = tempFile.delete();
+                if (!successful && log.isLoggable(Level.FINEST)) {
+                    log.log(Level.FINEST, "Unable to delete temporary file.");
+                }
+            }
+        }
+        
+        try {
+            byte [] faceletPage = "facelet".getBytes(RIConstants.CHAR_ENCODING);
+            ByteArrayInputStream bais = new ByteArrayInputStream(faceletPage);
+        } catch (UnsupportedEncodingException uee) {
+            if (log.isLoggable(Level.SEVERE)) {
+                log.log(Level.SEVERE, "Unsupported encoding when creating component for " + tagName + " in " + taglibURI,
+                        uee);
+            }
+        }
+              
+        if (null != result) {
+            result.setId(null);        
+        }
+        return result;
     }
+    
+    
 
 
     /**
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/impl/DefaultResourceResolver.java b/jsf-ri/src/main/java/com/sun/faces/facelets/impl/DefaultResourceResolver.java
index a2fcc16..156c5d4 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/impl/DefaultResourceResolver.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/impl/DefaultResourceResolver.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -54,27 +58,28 @@
 
 package com.sun.faces.facelets.impl;
 
-import com.sun.faces.facelets.util.Resource;
-
-import javax.faces.FacesException;
-import javax.faces.context.FacesContext;
 import javax.faces.view.facelets.ResourceResolver;
-import java.io.IOException;
 import java.net.URL;
+import javax.faces.application.ResourceHandler;
+import javax.faces.application.ViewResource;
+import javax.faces.context.FacesContext;
 
 public class DefaultResourceResolver extends ResourceResolver {
+    
+    private ResourceHandler resourceHandler = null;
 
-    public DefaultResourceResolver() {
+    public DefaultResourceResolver(ResourceHandler resourceHandler) {
         super();
+        this.resourceHandler = resourceHandler;
     }
 
     public URL resolveUrl(String path) {
-        try {
-            return Resource.getResourceUrl(FacesContext.getCurrentInstance(),
-                    path);
-        } catch (IOException e) {
-            throw new FacesException(e);
+        ViewResource faceletResource = resourceHandler.createViewResource(FacesContext.getCurrentInstance(), path);
+        URL result = null;
+        if (null != faceletResource) {
+            result = faceletResource.getURL();
         }
+        return result;
     }
 
     @Override
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/impl/FaceletCacheFactoryImpl.java b/jsf-ri/src/main/java/com/sun/faces/facelets/impl/FaceletCacheFactoryImpl.java
new file mode 100644
index 0000000..8dedf05
--- /dev/null
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/impl/FaceletCacheFactoryImpl.java
@@ -0,0 +1,66 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.facelets.impl;
+
+import com.sun.faces.config.WebConfiguration;
+import javax.faces.view.facelets.FaceletCache;
+import javax.faces.view.facelets.FaceletCacheFactory;
+
+
+
+public class FaceletCacheFactoryImpl extends FaceletCacheFactory {
+
+    public FaceletCacheFactoryImpl() {
+    }
+
+    @Override
+    public FaceletCache getFaceletCache() {
+        WebConfiguration webConfig = WebConfiguration.getInstance();
+        String refreshPeriod = webConfig.getOptionValue(WebConfiguration.WebContextInitParameter.FaceletsDefaultRefreshPeriod);
+        long period = Long.parseLong(refreshPeriod) * 1000;
+        FaceletCache<DefaultFacelet> result = new DefaultFaceletCache(period);
+        return result;
+
+    }
+
+
+
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/impl/IdMapper.java b/jsf-ri/src/main/java/com/sun/faces/facelets/impl/IdMapper.java
index f1592cc..c473735 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/impl/IdMapper.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/impl/IdMapper.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -52,7 +56,6 @@
  * limitations under the License.
  */
 
-
 package com.sun.faces.facelets.impl;
 
 import com.sun.faces.util.Cache;
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/impl/XMLFrontMatterSaver.java b/jsf-ri/src/main/java/com/sun/faces/facelets/impl/XMLFrontMatterSaver.java
new file mode 100644
index 0000000..5041291
--- /dev/null
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/impl/XMLFrontMatterSaver.java
@@ -0,0 +1,53 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.facelets.impl;
+
+public interface XMLFrontMatterSaver {
+    
+    public String getSavedDoctype();
+
+    public void setSavedDoctype(String savedDoctype);
+    
+    public String getSavedXMLDecl();
+    
+    public void setSavedXMLDecl(String savedXmlDecl);
+    
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/AbstractTagLibrary.java b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/AbstractTagLibrary.java
index b17c2f1..1bd6b19 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/AbstractTagLibrary.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/AbstractTagLibrary.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -52,9 +56,9 @@
  * limitations under the License.
  */
 
-
 package com.sun.faces.facelets.tag;
 
+import com.sun.faces.facelets.tag.jsf.CompositeComponentTagHandler;
 import javax.el.ELException;
 import javax.faces.FacesException;
 import javax.faces.view.facelets.*;
@@ -64,6 +68,10 @@ import java.lang.reflect.Method;
 import java.net.URL;
 import java.util.HashMap;
 import java.util.Map;
+import javax.faces.application.Resource;
+import javax.faces.application.ResourceHandler;
+import javax.faces.context.FacesContext;
+import javax.faces.view.Location;
 
 /**
  * Base class for defining TagLibraries in Java
@@ -249,6 +257,36 @@ public abstract class AbstractTagLibrary implements TagLibrary {
         }
     }
 
+    private static class CompositeComponentTagFactory implements TagHandlerFactory {
+        protected final String resourceId;
+
+        public CompositeComponentTagFactory(String resourceId) {
+            this.resourceId = resourceId;
+        }
+
+        public TagHandler createHandler(TagConfig cfg) throws FacesException,
+                ELException {
+            ComponentConfig componentConfig = 
+                    new ComponentConfigWrapper(cfg, 
+                    "javax.faces.NamingContainer",
+                    "javax.faces.Composite");
+            ResourceHandler resourceHandler = 
+                    FacesContext.getCurrentInstance().getApplication().getResourceHandler();
+            TagHandler result = null;
+            // Use the naming convention to extract the library name and
+            // component name from the resourceId.
+            Resource resource = resourceHandler.createResourceFromId(resourceId);
+            if (null != resource) {
+                result = new CompositeComponentTagHandler(resource, componentConfig);
+            } else {
+                Location loc = new Location(resourceId, 0, 0);
+                Tag tag = new Tag(loc, "", "", "", null);
+                throw new TagException(tag, "Cannot create composite component tag handler for composite-source element in taglib.xml file");
+            }
+            return result;
+        }
+    }
+
     private static class ComponentHandlerFactory implements TagHandlerFactory {
 
         protected final String componentType;
@@ -487,7 +525,6 @@ public abstract class AbstractTagLibrary implements TagLibrary {
      * Add a ComponentHandlerImpl with the specified componentType and rendererType,
      * aliased by the tag name.
      * 
-     * @see ComponentHandlerImpl
      * @see javax.faces.application.Application#createComponent(java.lang.String)
      * @param name
      *            name to use, "foo" would be <my:foo />
@@ -507,7 +544,6 @@ public abstract class AbstractTagLibrary implements TagLibrary {
      * aliased by the tag name. The Facelet will be compiled with the specified
      * HandlerType (which must extend AbstractComponentHandler).
      * 
-     * @see ComponentHandlerImpl
      * @param name
      *            name to use, "foo" would be <my:foo />
      * @param componentType
@@ -515,7 +551,7 @@ public abstract class AbstractTagLibrary implements TagLibrary {
      * @param rendererType
      *            rendererType to use
      * @param handlerType
-     *            a Class that extends AbstractComponentHandler
+     *            a Class that extends ComponentHandler
      */
     protected final void addComponent(String name, String componentType,
             String rendererType, Class handlerType) {
@@ -623,6 +659,18 @@ public abstract class AbstractTagLibrary implements TagLibrary {
         this.factories.put(name, new UserTagFactory(source));
     }
     
+    /**
+     * Add a CompositeComponentTagHandler for the specified resource.
+     * 
+     * @see UserTagHandler
+     * @param name
+     *            name to use, "foo" would be <my:foo />
+     * @param resourceId source where the Facelet (Tag) source is
+     */
+    protected final void addCompositeComponentTag(String name, String resourceId) {
+        this.factories.put(name, new CompositeComponentTagFactory(resourceId));
+    }
+    
     
     /**
      * Add a Method to be used as a Function at Compilation.
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/BeanPropertyTagRule.java b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/BeanPropertyTagRule.java
index bef64a7..896b072 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/BeanPropertyTagRule.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/BeanPropertyTagRule.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -52,7 +56,6 @@
  * limitations under the License.
  */
 
-
 package com.sun.faces.facelets.tag;
 
 import javax.faces.view.facelets.*;
@@ -62,7 +65,7 @@ import java.lang.reflect.Method;
 /**
  * 
  * @author Jacob Hookom
- * @version $Id: BeanPropertyTagRule.java 8384 2010-05-17 14:59:38Z jdlee $
+ * @version $Id: BeanPropertyTagRule.java 8641 2010-10-04 20:54:50Z edburns $
  */
 final class BeanPropertyTagRule extends MetaRule {
     
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/CompositeTagDecorator.java b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/CompositeTagDecorator.java
index 173a681..2a07423 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/CompositeTagDecorator.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/CompositeTagDecorator.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -52,7 +56,6 @@
  * limitations under the License.
  */
 
-
 package com.sun.faces.facelets.tag;
 
 import com.sun.faces.util.Util;
@@ -66,24 +69,32 @@ import javax.faces.view.facelets.TagDecorator;
  * TagDecorators return a value other than null.
  * 
  * @author Jacob Hookom
- * @version $Id: CompositeTagDecorator.java 8384 2010-05-17 14:59:38Z jdlee $
+ * @version $Id: CompositeTagDecorator.java 10664 2012-09-20 05:53:15Z edburns $
  */
 public final class CompositeTagDecorator implements TagDecorator {
 
     private final TagDecorator[] decorators;
 
+    private final DefaultTagDecorator defaultTagDecorator;
+
     public CompositeTagDecorator(TagDecorator[] decorators) {
         Util.notNull("decorators", decorators);
         this.decorators = decorators;
+        this.defaultTagDecorator = new DefaultTagDecorator();
     }
 
     /**
      * Uses the chain of responsibility pattern to stop processing if any of
      * the TagDecorators return a value other than null.
-     * 
-     * @see com.sun.faces.facelets.TagDecorator#decorate(com.sun.faces.facelets.Tag)
      */
     public Tag decorate(Tag tag) {
+        // eliminate the jsf: attributes
+        Tag noJsfAttributes = defaultTagDecorator.decorate(tag);
+        if(noJsfAttributes != null) {
+            // pass the converted tag to the other decorators
+            tag = noJsfAttributes;
+        }
+
         Tag t = null;
         for (int i = 0; i < this.decorators.length; i++) {
             t = this.decorators[i].decorate(tag);
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/CompositeTagLibrary.java b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/CompositeTagLibrary.java
index 4a23f75..316528f 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/CompositeTagLibrary.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/CompositeTagLibrary.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -52,11 +56,12 @@
  * limitations under the License.
  */
 
-
 package com.sun.faces.facelets.tag;
 
 import com.sun.faces.facelets.compiler.CompilationMessageHolder;
 import com.sun.faces.facelets.tag.jsf.CompositeComponentTagLibrary;
+import com.sun.faces.facelets.tag.jsf.FacesComponentTagLibrary;
+import com.sun.faces.facelets.tag.jsf.LazyTagLibrary;
 import com.sun.faces.util.Util;
 
 import javax.faces.FacesException;
@@ -75,7 +80,7 @@ import java.util.List;
  * children handles the requested method.
  * 
  * @author Jacob Hookom
- * @version $Id: CompositeTagLibrary.java 8384 2010-05-17 14:59:38Z jdlee $
+ * @version $Id: CompositeTagLibrary.java 9670 2012-02-13 22:55:54Z edburns $
  */
 public final class CompositeTagLibrary implements TagLibrary {
 
@@ -105,13 +110,21 @@ public final class CompositeTagLibrary implements TagLibrary {
             }
         }
         // PENDING: this is a terribly inefficient impl.  Needs refactoring.
-        CompositeComponentTagLibrary toTest = new CompositeComponentTagLibrary(ns);
-        if (toTest.tagLibraryForNSExists(ns)) {
+        LazyTagLibrary lazyLibraries [] = new LazyTagLibrary[2];
+        lazyLibraries[0] = new CompositeComponentTagLibrary(ns);
+        lazyLibraries[1] = new FacesComponentTagLibrary(ns);
+        LazyTagLibrary toTest = null;
+        for (int i = 0; i < lazyLibraries.length; i++) {
+            if (lazyLibraries[i].tagLibraryForNSExists(ns)) {
+                toTest = lazyLibraries[i];
+                break;
+            }
+        }
+        if (null != toTest) {
             TagLibrary [] librariesPlusOne = new TagLibrary[libraries.length+1];
             System.arraycopy(this.libraries, 0, librariesPlusOne, 
                     0, libraries.length);
-            librariesPlusOne[libraries.length] = 
-                    new CompositeComponentTagLibrary(ns);
+            librariesPlusOne[libraries.length] = toTest;
             for (int i = 0; i < this.libraries.length; i++) {
                 libraries[i] = null;
             }
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/DefaultTagDecorator.java b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/DefaultTagDecorator.java
new file mode 100644
index 0000000..96b03e2
--- /dev/null
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/DefaultTagDecorator.java
@@ -0,0 +1,315 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDLGPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.facelets.tag;
+
+import com.sun.faces.facelets.tag.jsf.PassThroughAttributeLibrary;
+import com.sun.faces.facelets.tag.jsf.PassThroughElementLibrary;
+import com.sun.faces.facelets.tag.jsf.html.HtmlLibrary;
+
+import javax.faces.render.Renderer;
+import javax.faces.view.Location;
+import javax.faces.view.facelets.FaceletException;
+import javax.faces.view.facelets.Tag;
+import javax.faces.view.facelets.TagAttribute;
+import javax.faces.view.facelets.TagAttributes;
+import javax.faces.view.facelets.TagDecorator;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * A simple tag decorator to enable jsf: syntax
+ */
+class DefaultTagDecorator implements TagDecorator {
+
+    private static enum Mapper {
+        a(
+                new ElementConverter("h:commandLink", "jsf:action"),
+                new ElementConverter("h:commandLink", "jsf:actionListener"),
+                new ElementConverter("h:outputLink", "jsf:value"),
+                new ElementConverter("h:link", "jsf:outcome")),
+
+        img("h:graphicImage"), body("h:body"), head("h:head"), label("h:outputLabel"), script("h:outputScript"),
+        link("h:outputStylesheet"),
+
+        form("h:form"), textarea("h:inputTextarea"),
+        // TODO if we want the name of the button to become the id, we have to do .id("name")
+        button(new ElementConverter("h:button", "jsf:outcome"), new ElementConverter("h:commandButton")),
+
+        select(new ElementConverter("h:selectManyListbox", "multiple").id("name"),
+                // TODO this is a little bit ugly to handle the name as if it were jsf:id. we should not support this
+                new ElementConverter("h:selectOneListbox").id("name")),
+
+        input(new ElementConverter("h:inputText", "type")
+                // TODO this is a little bit ugly to handle the name as if it were jsf:id. we should not support this
+                .id("name")
+                .map("hidden", "inputHidden")
+                .map("password", "inputSecret")
+                .map("number", "inputText")
+                .map("search", "inputText")
+                .map("email", "inputText")
+                .map("datetime", "inputText")
+                .map("date", "inputText")
+                .map("month", "inputText")
+                .map("week", "inputText")
+                .map("time", "inputText")
+                .map("datetime-local", "inputText")
+                .map("range", "inputText")
+                .map("color", "inputText")
+                .map("url", "inputText")
+                .map("checkbox", "selectBooleanCheckbox")
+                .map("file", "inputFile")
+                .map("submit", "commandButton")
+                .map("reset", "commandButton")
+                .map("button", "button"));
+
+        private ElementConverter elementConverter;
+
+        private Mapper(final ElementConverter... elementConverters) {
+            if (elementConverters.length == 1) {
+                this.elementConverter = elementConverters[0];
+            } else {
+                this.elementConverter = new ElementConverter() {
+                    @Override
+                    public Tag decorate(Tag tag) {
+                        for (ElementConverter converter : elementConverters) {
+                            Tag decorated = converter.decorate(tag);
+                            if (decorated != null) {
+                                return decorated;
+                            }
+                        }
+                        return null;
+                    }
+                };
+            }
+        }
+
+        private Mapper(String faceletTag) {
+            elementConverter = new ElementConverter(faceletTag);
+        }
+    }
+
+    private static enum Namespace {
+        p(PassThroughAttributeLibrary.Namespace),
+        jsf(PassThroughElementLibrary.Namespace),
+        h(HtmlLibrary.Namespace);
+
+        private String uri;
+
+        Namespace(String uri) {
+            this.uri = uri;
+        }
+    }
+
+    private ElementConverter defaultElementConverter = new ElementConverter("jsf:element");
+
+    public Tag decorate(Tag tag) {
+        String ns = tag.getNamespace();
+        if (!hasJsfAttribute(tag)) {
+            // return immediately, if we have no jsf: attribute
+            return null;
+        }
+        // we only handle html tags!
+        if (!("".equals(ns) || "http://www.w3.org/1999/xhtml".equals(ns))) {
+            throw new FaceletException("Elements with namespace " +
+                    ns + " may not have attributes in namespace " +
+                    Namespace.jsf.uri + "." +
+                    " Namespace " + Namespace.jsf.uri +
+                    " is intended for otherwise non-JSF-aware markup, such as <input type=\"text\" jsf:id >" +
+                    " It is not valid to have <h:commandButton jsf:id=\"button\" />.");
+        }
+        for (Mapper mapper : Mapper.values()) {
+            if (tag.getLocalName().equals(mapper.name())) {
+                return mapper.elementConverter.decorate(tag);
+            }
+        }
+
+        return defaultElementConverter.decorate(tag);
+    }
+
+    private boolean hasJsfAttribute(Tag tag) {
+        for (String ns : tag.getAttributes().getNamespaces()) {
+            if (Namespace.jsf.uri.equals(ns)) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    private static class ElementConverter implements TagDecorator {
+        private String localName;
+        private Namespace namespace;
+        private String arbiterAttributeName;
+        private String arbiterAttributeNamespace = "";
+        private Map<String, String> additionalMappings = new HashMap<String, String>();
+        private String otherHtmlIdAttribute;
+
+        private ElementConverter() {
+            super();
+        }
+
+        private ElementConverter(String faceletsTag) {
+            this(faceletsTag, null);
+        }
+
+        private ElementConverter(String faceletsTag, String arbiterAttributeName) {
+            String[] strings = faceletsTag.split(":");
+            this.namespace = Namespace.valueOf(strings[0]);
+            this.localName = strings[1];
+            this.arbiterAttributeName = arbiterAttributeName;
+
+            if (arbiterAttributeName != null && arbiterAttributeName.indexOf(':') > 0) {
+                strings = arbiterAttributeName.split(":");
+                this.arbiterAttributeNamespace = Namespace.valueOf(strings[0]).uri;
+                this.arbiterAttributeName = strings[1];
+            }
+        }
+
+        private ElementConverter map(String arbiterAttributeValue, String faceletsTagLocalName) {
+            additionalMappings.put(arbiterAttributeValue, faceletsTagLocalName);
+            return this;
+        }
+
+        private ElementConverter id(String otherHtmlIdAttribute) {
+            this.otherHtmlIdAttribute = otherHtmlIdAttribute;
+            return this;
+        }
+
+        public Tag decorate(Tag tag) {
+            if (arbiterAttributeName == null) {
+                // no arbiter
+                return convertTag(tag, namespace, localName);
+            }
+
+            TagAttribute arbiterAttribute = tag.getAttributes().get(arbiterAttributeNamespace, arbiterAttributeName);
+
+            if (arbiterAttribute == null) {
+                // no arbiter
+                return null;//convertTag(tag, namespace, localName);
+            }
+
+            // PENDING 
+            /**
+             if (!arbiterAttribute.isLiteral()) {
+             // TODO should we throw an exception here?
+             }
+             **/
+
+            String myLocalName = additionalMappings.get(arbiterAttribute.getValue());
+
+            if (myLocalName == null) {
+                myLocalName = this.localName;
+            }
+
+            return convertTag(tag, namespace, myLocalName);
+        }
+
+        protected Tag convertTag(Tag tag, Namespace namespace, String localName) {
+            Location location = tag.getLocation();
+            String ns = namespace.uri;
+            String qName = namespace.name() + ":" + localName;
+
+            TagAttributes attributes = convertAttributes(tag.getAttributes());
+
+            Tag converted = new Tag(location, ns, localName, qName, attributes);
+
+            for (TagAttribute tagAttribute : attributes.getAll()) {
+                // set the correct tag
+                tagAttribute.setTag(converted);
+            }
+
+            return converted;
+        }
+
+        protected TagAttributes convertAttributes(TagAttributes original) {
+            Map<String, TagAttribute> attributes = new HashMap<String, TagAttribute>();
+            TagAttribute elementName = createElementName(original.getTag());
+            attributes.put(elementName.getQName(), elementName);
+
+            for (TagAttribute attribute : original.getAll()) {
+                TagAttribute converted = convertTagAttribute(attribute);
+                // avoid duplicates
+                attributes.put(converted.getQName(), converted);
+            }
+
+            return new TagAttributesImpl(attributes.values().toArray(new TagAttribute[attributes.size()]));
+        }
+
+        private TagAttribute createElementName(Tag tag) {
+            Location location = tag.getLocation();
+            String ns = Namespace.p.uri;
+            String myLocalName = Renderer.PASSTHROUGH_RENDERER_LOCALNAME_KEY;
+            String qName = "p:" + myLocalName;
+            String value = tag.getLocalName();
+
+            return new TagAttributeImpl(location, ns, myLocalName, qName, value);
+        }
+
+
+        protected TagAttribute convertTagAttribute(TagAttribute attribute) {
+            Location location = attribute.getLocation();
+            String ns = attribute.getNamespace();
+            String myLocalName = attribute.getLocalName();
+            String qName;
+            String value = attribute.getValue();
+
+            if (Namespace.jsf.uri.equals(attribute.getNamespace())) {
+                // make this a component attribute
+                qName = myLocalName;
+                ns = "";
+            } else {
+                if (ns.length() != 0 && !ns.equals(attribute.getTag().getNamespace())) {
+                    // the attribute has a different namespace than the tag. preserve it.
+                    return attribute;
+                }
+                if (attribute.getLocalName().equals(otherHtmlIdAttribute)) {
+                    // special case for input name
+                    qName = "id";
+                    myLocalName = "id";
+                } else {
+                    // make this a pass through attribute
+                    qName = "p:" + myLocalName;
+                    ns = Namespace.p.uri;
+                }
+            }
+            return new TagAttributeImpl(location, ns, myLocalName, qName, value);
+        }
+    }
+
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/IterationStatus.java b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/IterationStatus.java
index e49b708..e74dd0e 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/IterationStatus.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/IterationStatus.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -52,14 +56,13 @@
  * limitations under the License.
  */
 
-
 package com.sun.faces.facelets.tag;
 
 import java.io.Serializable;
 
 /**
  * @author Jacob Hookom
- * @version $Id: IterationStatus.java 8384 2010-05-17 14:59:38Z jdlee $
+ * @version $Id: IterationStatus.java 8641 2010-10-04 20:54:50Z edburns $
  */
 public class IterationStatus implements Serializable {
 
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/MetaRulesetImpl.java b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/MetaRulesetImpl.java
index 325a74a..d394118 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/MetaRulesetImpl.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/MetaRulesetImpl.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -52,7 +56,6 @@
  * limitations under the License.
  */
 
-
 package com.sun.faces.facelets.tag;
 
 import com.sun.faces.util.FacesLogger;
@@ -63,17 +66,18 @@ import java.beans.IntrospectionException;
 import java.util.*;
 import java.util.logging.Level;
 import java.util.logging.Logger;
+import java.lang.ref.WeakReference;
 
 /**
  * 
  * @author Jacob Hookom
- * @version $Id: MetaRulesetImpl.java 8384 2010-05-17 14:59:38Z jdlee $
+ * @version $Id: MetaRulesetImpl.java 12514 2013-09-10 17:00:23Z mriem $
  */
 public class MetaRulesetImpl extends MetaRuleset {
 
     private final static Logger LOGGER = FacesLogger.FACELETS_META.getLogger();
-    private final static WeakHashMap<Class, MetadataTarget> metadata =
-          new WeakHashMap<Class, MetadataTarget>();
+    private final static WeakHashMap<Class, WeakReference<MetadataTarget>> metadata =
+          new WeakHashMap<Class, WeakReference<MetadataTarget>>();
 
     private final Tag tag;
     private final Class type;
@@ -96,7 +100,11 @@ public class MetaRulesetImpl extends MetaRuleset {
         // setup attributes
         TagAttribute[] attrs = this.tag.getAttributes().getAll();
         for (int i = 0; i < attrs.length; i++) {
-            attributes.put(attrs[i].getLocalName(), attrs[i]);
+            if (attrs[i].getLocalName().equals("class")) {
+                attributes.put("styleClass", attrs[i]);
+            } else {
+                attributes.put(attrs[i].getLocalName(), attrs[i]);
+            }
         }
 
         // add default rules
@@ -200,8 +208,8 @@ public class MetaRulesetImpl extends MetaRuleset {
 
 
     protected MetadataTarget getMetadataTarget() {
-
-        MetadataTarget meta = metadata.get(type);
+        WeakReference<MetadataTarget> metaRef = metadata.get(type);
+        MetadataTarget meta = metaRef == null ? null : metaRef.get();
         if (meta == null) {
             try {
                 meta = new MetadataTargetImpl(type);
@@ -209,7 +217,7 @@ public class MetaRulesetImpl extends MetaRuleset {
                 throw new TagException(this.tag,
                         "Error Creating TargetMetadata", e);
             }
-            metadata.put(type, meta);
+            metadata.put(type, new WeakReference<MetadataTarget>(meta));
         }
         return meta;
 
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/MetaTagHandlerImpl.java b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/MetaTagHandlerImpl.java
index 355cf0a..4186740 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/MetaTagHandlerImpl.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/MetaTagHandlerImpl.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -65,7 +69,7 @@ import javax.faces.view.facelets.TagConfig;
  * the time of creating a MetaRuleset.
  * 
  * @author Jacob Hookom
- * @version $Id: MetaTagHandlerImpl.java 8384 2010-05-17 14:59:38Z jdlee $
+ * @version $Id: MetaTagHandlerImpl.java 10324 2012-07-24 14:46:42Z mriem $
  */
 public abstract class MetaTagHandlerImpl extends MetaTagHandler {
 
@@ -77,7 +81,6 @@ public abstract class MetaTagHandlerImpl extends MetaTagHandler {
      * Extend this method in order to add your own rules.
      * 
      * @param type
-     * @return
      */
     protected MetaRuleset createMetaRuleset(Class type) {
         Util.notNull("type", type);
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/MetadataImpl.java b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/MetadataImpl.java
index 9b3fcf2..4f8ec00 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/MetadataImpl.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/MetadataImpl.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -60,7 +64,7 @@ import javax.faces.view.facelets.Metadata;
 /**
  * 
  * @author Jacob Hookom
- * @version $Id: MetadataImpl.java 8384 2010-05-17 14:59:38Z jdlee $
+ * @version $Id: MetadataImpl.java 8641 2010-10-04 20:54:50Z edburns $
  */
 final class MetadataImpl extends Metadata {
 
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/MetadataTargetImpl.java b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/MetadataTargetImpl.java
index 0b4acd8..ed9beca 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/MetadataTargetImpl.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/MetadataTargetImpl.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -66,7 +70,7 @@ import java.util.Map;
 /**
  * 
  * @author Jacob Hookom
- * @version $Id: MetadataTargetImpl.java 8384 2010-05-17 14:59:38Z jdlee $
+ * @version $Id: MetadataTargetImpl.java 8641 2010-10-04 20:54:50Z edburns $
  */
 public class MetadataTargetImpl extends MetadataTarget {
 
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/MethodRule.java b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/MethodRule.java
index 189a49e..5466fec 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/MethodRule.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/MethodRule.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/TagAttributeImpl.java b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/TagAttributeImpl.java
index 2039745..6b7cab4 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/TagAttributeImpl.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/TagAttributeImpl.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -52,7 +56,6 @@
  * limitations under the License.
  */
 
-
 package com.sun.faces.facelets.tag;
 
 import com.sun.faces.el.ELUtils;
@@ -73,6 +76,7 @@ import javax.el.MethodInfo;
 import javax.el.ELContext;
 import javax.faces.view.Location;
 import javax.faces.view.facelets.FaceletContext;
+import javax.faces.view.facelets.Tag;
 import javax.faces.view.facelets.TagAttribute;
 import javax.faces.view.facelets.TagAttributeException;
 import javax.faces.FacesException;
@@ -81,9 +85,9 @@ import javax.faces.FacesException;
  * Representation of a Tag's attribute in a Facelet File
  * 
  * @author Jacob Hookom
- * @version $Id: TagAttributeImpl.java 8384 2010-05-17 14:59:38Z jdlee $
+ * @version $Id: TagAttributeImpl.java 11838 2013-04-02 19:09:10Z mriem $
  */
-public final class TagAttributeImpl extends TagAttribute {
+public class TagAttributeImpl extends TagAttribute {
 
     private final boolean literal;
 
@@ -98,12 +102,25 @@ public final class TagAttributeImpl extends TagAttribute {
     private final String value;
 
     private String string;
+    
+    private Tag tag;
+    
+    public TagAttributeImpl() {
+        this.literal = false;
+        this.localName = null;
+        this.location = null;
+        this.namespace = null;
+        this.qName = null;
+        this.value = null;
+        this.string = null;
+        this.tag = null;
+    } 
 
     public TagAttributeImpl(Location location, String ns, String localName,
             String qName, String value) {
         this.location = location;
         this.namespace = ns;
-        this.localName = localName;
+        this.localName = (null == localName || 0 == localName.length()) ? qName : localName;
         this.qName = qName;
         this.value = value;
         try {
@@ -130,7 +147,11 @@ public final class TagAttributeImpl extends TagAttribute {
         if (this.literal) {
             return Boolean.valueOf(this.value);
         } else {
-            return ((Boolean) this.getObject(ctx, Boolean.class));
+            Boolean bool = (Boolean) this.getObject(ctx, Boolean.class);
+            if (bool == null) {
+                bool = false;
+            }
+            return bool;
         }
     }
 
@@ -265,6 +286,15 @@ public final class TagAttributeImpl extends TagAttribute {
         return this.qName;
     }
 
+    @Override
+    public Tag getTag() {
+        return this.tag;
+    }
+    
+    public void setTag(Tag tag) {
+        this.tag = tag;
+    }
+
     /**
      * Return the literal value of this attribute
      * 
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/TagAttributesImpl.java b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/TagAttributesImpl.java
index 6491cbe..88890ac 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/TagAttributesImpl.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/TagAttributesImpl.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -51,19 +55,20 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+
 package com.sun.faces.facelets.tag;
 
 import javax.faces.view.facelets.TagAttribute;
 import javax.faces.view.facelets.TagAttributes;
 import java.util.*;
+import javax.faces.view.facelets.Tag;
 
 /**
  * A set of TagAttributesImpl, usually representing all attributes on a Tag.
  * 
- * @see com.sun.faces.facelets.tag.Tag
  * @see javax.faces.view.facelets.TagAttribute
  * @author Jacob Hookom
- * @version $Id: TagAttributesImpl.java 8384 2010-05-17 14:59:38Z jdlee $
+ * @version $Id: TagAttributesImpl.java 10331 2012-07-25 13:26:07Z mriem $
  */
 public final class TagAttributesImpl extends TagAttributes {
     private final static TagAttribute[] EMPTY = new TagAttribute[0];
@@ -73,6 +78,8 @@ public final class TagAttributesImpl extends TagAttributes {
     private final String[] ns;
 
     private final List nsattrs;
+    
+    private Tag tag;
 
     /**
      * 
@@ -184,6 +191,18 @@ public final class TagAttributesImpl extends TagAttributes {
         return this.ns;
     }
 
+    @Override
+    public Tag getTag() {
+        return this.tag;
+    }
+    
+    public void setTag(Tag tag) {
+        this.tag = tag;
+        for (TagAttribute cur : attrs) {
+            cur.setTag(tag);
+        }
+    }
+
     /*
      * (non-Javadoc)
      * 
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/TagHandlerFactory.java b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/TagHandlerFactory.java
index 5eb6029..8b00cce 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/TagHandlerFactory.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/TagHandlerFactory.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -52,7 +56,6 @@
  * limitations under the License.
  */
 
-
 package com.sun.faces.facelets.tag;
 
 import javax.el.ELException;
@@ -65,7 +68,7 @@ import javax.faces.view.facelets.TagHandler;
  * 
  * @see TagLibrary
  * @author Jacob Hookom
- * @version $Id: TagHandlerFactory.java 8384 2010-05-17 14:59:38Z jdlee $
+ * @version $Id: TagHandlerFactory.java 8641 2010-10-04 20:54:50Z edburns $
  */
 interface TagHandlerFactory {
     /**
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/TagHandlerImpl.java b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/TagHandlerImpl.java
index f26a1e6..fb34f28 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/TagHandlerImpl.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/TagHandlerImpl.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/TagLibrary.java b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/TagLibrary.java
index cc29f6a..c241434 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/TagLibrary.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/TagLibrary.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -64,7 +68,7 @@ import java.lang.reflect.Method;
  * A library of Tags associated with one or more namespaces.
  * 
  * @author Jacob Hookom
- * @version $Id: TagLibrary.java 8384 2010-05-17 14:59:38Z jdlee $
+ * @version $Id: TagLibrary.java 10303 2012-07-19 17:54:12Z mriem $
  */
 public interface TagLibrary {
 
@@ -86,7 +90,6 @@ public interface TagLibrary {
      *            namespace
      * @param localName
      *            local name
-     * @return 
      */
     public boolean containsTagHandler(String ns, String localName);
 
@@ -119,7 +122,6 @@ public interface TagLibrary {
      * 
      * @param ns namespace
      * @param name function name
-     * @return
      */
     public Method createFunction(String ns, String name);
 }
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/TagLibraryImpl.java b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/TagLibraryImpl.java
index fcf5da4..e3c8c6d 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/TagLibraryImpl.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/TagLibraryImpl.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -106,7 +110,6 @@ public class TagLibraryImpl extends AbstractTagLibrary {
         public void putComponent(String name, String componentType,
                 String rendererType, Class handlerClass) {
             Util.notNull("name", name);
-            Util.notNull("componentType", componentType);
             Util.notNull("handlerClass", handlerClass);
             this.addComponent(name, componentType, rendererType, handlerClass);
         }
@@ -118,9 +121,15 @@ public class TagLibraryImpl extends AbstractTagLibrary {
             this.addUserTag(name, source);
         }
 
+        public void putCompositeComponentTag(String name, String resourceId) {
+            Util.notNull("name", name);
+            Util.notNull("resourceId", resourceId);
+            this.addCompositeComponentTag(name, resourceId);
+        }
+
         public void putFunction(String name, Method method) {
             Util.notNull("name", name);
             Util.notNull("method", method);
             this.addFunction(name, method);
         }
-    }
\ No newline at end of file
+    }
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/UserTagHandler.java b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/UserTagHandler.java
index c42bca5..163f0a5 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/UserTagHandler.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/UserTagHandler.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -52,7 +56,6 @@
  * limitations under the License.
  */
 
-
 package com.sun.faces.facelets.tag;
 
 import com.sun.faces.facelets.FaceletContextImplBase;
@@ -78,7 +81,7 @@ import java.util.Map;
  * sets them on the FaceletContext before including the targeted Facelet file.
  * 
  * @author Jacob Hookom
- * @version $Id: UserTagHandler.java 8384 2010-05-17 14:59:38Z jdlee $
+ * @version $Id: UserTagHandler.java 8641 2010-10-04 20:54:50Z edburns $
  */
 final class UserTagHandler extends TagHandlerImpl implements TemplateClient {
 
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/composite/ActionSource2AttachedObjectTargetHandler.java b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/composite/ActionSource2AttachedObjectTargetHandler.java
index 951dd41..44e8c26 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/composite/ActionSource2AttachedObjectTargetHandler.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/composite/ActionSource2AttachedObjectTargetHandler.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -52,7 +56,6 @@
  * limitations under the License.
  */
 
-
 package com.sun.faces.facelets.tag.composite;
 
 import javax.faces.view.facelets.TagConfig;
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/composite/ActionSource2AttachedObjectTargetImpl.java b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/composite/ActionSource2AttachedObjectTargetImpl.java
index e07e2d6..5766222 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/composite/ActionSource2AttachedObjectTargetImpl.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/composite/ActionSource2AttachedObjectTargetImpl.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/composite/AttachedObjectTargetHandler.java b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/composite/AttachedObjectTargetHandler.java
index 9df107a..84edf86 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/composite/AttachedObjectTargetHandler.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/composite/AttachedObjectTargetHandler.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -52,7 +56,6 @@
  * limitations under the License.
  */
 
-
 package com.sun.faces.facelets.tag.composite;
 
 import com.sun.faces.application.view.FaceletViewHandlingStrategy;
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/composite/AttachedObjectTargetImpl.java b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/composite/AttachedObjectTargetImpl.java
index af64394..be0b3c1 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/composite/AttachedObjectTargetImpl.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/composite/AttachedObjectTargetImpl.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -52,7 +56,6 @@
  * limitations under the License.
  */
 
-
 package com.sun.faces.facelets.tag.composite;
 
 import com.sun.faces.util.Util;
@@ -64,6 +67,7 @@ import javax.faces.context.FacesContext;
 import javax.faces.view.AttachedObjectTarget;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
 
 
 public class AttachedObjectTargetImpl implements AttachedObjectTarget {
@@ -84,7 +88,8 @@ public class AttachedObjectTargetImpl implements AttachedObjectTarget {
         FacesContext ctx = FacesContext.getCurrentInstance();
         if (null != targetsList) {
             String targetsListStr = (String) targetsList.getValue(ctx.getELContext());
-            String[] targetArray = Util.split(targetsListStr, " ");
+            Map<String, Object> appMap = FacesContext.getCurrentInstance().getExternalContext().getApplicationMap();
+            String[] targetArray = Util.split(appMap, targetsListStr, " ");
             result = new ArrayList<UIComponent>(targetArray.length);
             for (int i = 0, len = targetArray.length; i < len; i++) {
                 UIComponent comp = topLevelComponent.findComponent(
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/composite/AttributeHandler.java b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/composite/AttributeHandler.java
index 08efb20..6e9b127 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/composite/AttributeHandler.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/composite/AttributeHandler.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -52,10 +56,12 @@
  * limitations under the License.
  */
 
-
 package com.sun.faces.facelets.tag.composite;
 
 import com.sun.faces.facelets.tag.TagHandlerImpl;
+import com.sun.faces.facelets.util.ReflectionUtil;
+import com.sun.faces.util.FacesLogger;
+import java.lang.reflect.Method;
 
 import javax.el.ValueExpression;
 import javax.faces.component.UIComponent;
@@ -65,13 +71,20 @@ import java.beans.PropertyDescriptor;
 import java.io.IOException;
 import java.util.List;
 import java.util.Map;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.el.ELContext;
+import javax.faces.context.FacesContext;
 
 
 public class AttributeHandler extends TagHandlerImpl {
+    
+    private final Logger LOGGER = FacesLogger.TAGLIB.getLogger();    
 
     private static final String[] COMPOSITE_ATTRIBUTE_ATTRIBUTES = {
           "required",
           "targets",
+          "targetAttributeName",
           "default",
           "displayName",
           "preferred",
@@ -127,23 +140,100 @@ public class AttributeHandler extends TagHandlerImpl {
 
         PropertyDescriptor propertyDescriptor;
         try {
-            propertyDescriptor = new PropertyDescriptor(strValue, null, null);
+            propertyDescriptor = new CCAttributePropertyDescriptor(strValue, null, null);
             declaredAttributes.add(propertyDescriptor);
         } catch (IntrospectionException ex) {
             throw new  TagException(tag, "Unable to create property descriptor for property " + strValue, ex);
         }
 
+        TagAttribute defaultTagAttribute = null;
+        PropertyHandler defaultHandler = null;
         for (TagAttribute tagAttribute : this.tag.getAttributes().getAll()) {
             String attributeName = tagAttribute.getLocalName();
-            PropertyHandler handler = ATTRIBUTE_MANAGER.getHandler(ctx, attributeName);
-            if (handler != null) {
-                handler.apply(ctx, attributeName, propertyDescriptor, tagAttribute);
+            if("default".equals(attributeName)) {
+                // store the TagAttribute and the PropertyHandler for later
+                // execution, as the handler for the default-attribute requires,
+                // that the PropertyHandler for 'type' - if it exists - has been
+                // applied first.
+                defaultTagAttribute = tagAttribute;
+                defaultHandler = ATTRIBUTE_MANAGER.getHandler(ctx, "default");
+            } else {
+                PropertyHandler handler =
+                        ATTRIBUTE_MANAGER.getHandler(ctx, attributeName);
+                if (handler != null) {
+                    handler.apply(ctx, attributeName, propertyDescriptor,
+                            tagAttribute);
+                }
+            }
+        }
+        if(defaultHandler!=null) {
+            // If the 'default'-attribute of cc:attribute was set, apply the
+            // previously stored PropertyHandler (see above) now, as now it is
+            // guaranteed that if a 'type'-attribute existed, that its handler
+            // was already applied
+            try {
+                defaultHandler.apply(ctx, "default", propertyDescriptor,
+                        defaultTagAttribute);
+            } catch (IllegalArgumentException ex) {
+                // If the type (according to the type-attribute) can not be
+                // found, the DefaultPropertyHandler will wrapp the
+                // ClassNotFoundException into an IllegalArgumentException,
+                // which is unwrapped into a TagException here.
+                throw new TagException(tag, 
+                        "'type' could not be resolved: " + ex.getCause(),
+                        ex.getCause());
             }
-
         }
         
         this.nextHandler.apply(ctx, parent);
         
     }
+    
+    private class CCAttributePropertyDescriptor extends PropertyDescriptor {
+
+        public CCAttributePropertyDescriptor(String propertyName, Method readMethod, Method writeMethod) throws IntrospectionException {
+            super(propertyName, readMethod, writeMethod);
+        }
+
+        @Override
+        public Object getValue(String attributeName) {
+            Object result = super.getValue(attributeName);
+            if ("type".equals(attributeName)) {
+                if ((null != result) && !(result instanceof Class)) {
+                    FacesContext context = FacesContext.getCurrentInstance();
+                    ELContext elContext = context.getELContext();
+                    String classStr = (String) ((ValueExpression)result).getValue(elContext);
+                    if (null != classStr) {
+                        try {
+                            result = ReflectionUtil.forName(classStr);
+
+                            this.setValue(attributeName, result);
+                        } catch (ClassNotFoundException ex) {
+                            classStr = "java.lang." + classStr;
+                            boolean throwException = false;
+                            try {
+                                result = ReflectionUtil.forName(classStr);
+                                
+                                this.setValue(attributeName, result);
+                            } catch (ClassNotFoundException ex2) {
+                                throwException = true;
+                            }
+                            if (throwException) {
+                                String message = "Unable to obtain class for " + classStr;
+                                if (LOGGER.isLoggable(Level.INFO)) {
+                                    LOGGER.log(Level.INFO, message, ex);
+                                }
+                                throw new TagAttributeException(tag, name, message, ex);
+                            }
+                        }
+                    }
+                    
+                }
+            }
+            return result;
+        }
+        
+        
+    }
 
 }
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/composite/BehaviorHolderAttachedObjectTargetHandler.java b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/composite/BehaviorHolderAttachedObjectTargetHandler.java
index 86f9b39..136bd54 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/composite/BehaviorHolderAttachedObjectTargetHandler.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/composite/BehaviorHolderAttachedObjectTargetHandler.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -56,14 +60,26 @@ public class BehaviorHolderAttachedObjectTargetHandler extends
     AttachedObjectTargetImpl newAttachedObjectTargetImpl() {
         BehaviorHolderAttachedObjectTargetImpl target = new BehaviorHolderAttachedObjectTargetImpl();
         TagAttribute event = this.getAttribute("event");
+        FaceletContext ctx = null;
+
         if (null != event) {
-            target.setEvent(event.getValue());
+            if (!event.isLiteral()) {
+                FacesContext facesContext = FacesContext.getCurrentInstance();
+                ctx = (FaceletContext) facesContext.getAttributes()
+                  .get(FaceletContext.FACELET_CONTEXT_KEY);
+                String eventStr = (String)event.getValueExpression(ctx, String.class).getValue(ctx);
+                target.setEvent(eventStr);
+            } else {
+                target.setEvent(event.getValue());
+            }
         }
         TagAttribute defaultAttr = this.getAttribute("default");
         if (null != defaultAttr) {
-            FacesContext facesContext = FacesContext.getCurrentInstance();
-            FaceletContext ctx = (FaceletContext) facesContext.getAttributes()
+            if (null == ctx) {
+                FacesContext facesContext = FacesContext.getCurrentInstance();
+                ctx = (FaceletContext) facesContext.getAttributes()
                   .get(FaceletContext.FACELET_CONTEXT_KEY);
+            }
             target.setDefaultEvent(defaultAttr.getBoolean(ctx));
         }
         return target;
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/composite/BehaviorHolderAttachedObjectTargetImpl.java b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/composite/BehaviorHolderAttachedObjectTargetImpl.java
index 76d63d1..ccb6e19 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/composite/BehaviorHolderAttachedObjectTargetImpl.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/composite/BehaviorHolderAttachedObjectTargetImpl.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/composite/BehaviorHolderWrapper.java b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/composite/BehaviorHolderWrapper.java
index 67fbec0..913a2d8 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/composite/BehaviorHolderWrapper.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/composite/BehaviorHolderWrapper.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -116,6 +120,11 @@ public class BehaviorHolderWrapper extends UIComponent implements
         return parent.getAttributes();
     }
 
+    @Override
+    public Map<String, Object> getPassThroughAttributes(boolean create) {
+        return parent.getPassThroughAttributes(create);
+    }
+
     /**
      * @see javax.faces.component.UIComponent#getChildCount()
      */
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/composite/CompositeComponentBeanInfo.java b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/composite/CompositeComponentBeanInfo.java
index da077c2..5271dec 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/composite/CompositeComponentBeanInfo.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/composite/CompositeComponentBeanInfo.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -52,7 +56,6 @@
  * limitations under the License.
  */
 
-
 package com.sun.faces.facelets.tag.composite;
 
 import java.beans.BeanDescriptor;
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/composite/CompositeLibrary.java b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/composite/CompositeLibrary.java
index 48d8d09..06a3dc8 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/composite/CompositeLibrary.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/composite/CompositeLibrary.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -58,16 +62,21 @@ import com.sun.faces.facelets.tag.AbstractTagLibrary;
 
 /**
  * @author Jacob Hookom
- * @version $Id: CompositeLibrary.java 8384 2010-05-17 14:59:38Z jdlee $
+ * @version $Id: CompositeLibrary.java 12012 2013-06-19 23:01:19Z edburns $
  */
 public final class CompositeLibrary extends AbstractTagLibrary {
 
     public final static String Namespace = "http://java.sun.com/jsf/composite";
+    public final static String XMLNSNamespace = "http://xmlns.jcp.org/jsf/composite";
 
     public final static CompositeLibrary Instance = new CompositeLibrary();
 
     public CompositeLibrary() {
-        super(Namespace);
+        this(Namespace);
+    }
+    
+    public CompositeLibrary(String namespace) {
+        super(namespace);
 
         // The interface section
         this.addTagHandler("interface", InterfaceHandler.class);
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/composite/DeclareFacetHandler.java b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/composite/DeclareFacetHandler.java
index e44d5a8..ffa7c13 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/composite/DeclareFacetHandler.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/composite/DeclareFacetHandler.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -52,7 +56,6 @@
  * limitations under the License.
  */
 
-
 package com.sun.faces.facelets.tag.composite;
 
 import com.sun.faces.facelets.tag.TagHandlerImpl;
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/composite/EditableValueHolderAttachedObjectTargetHandler.java b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/composite/EditableValueHolderAttachedObjectTargetHandler.java
index 3a5f80f..a1fc6fb 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/composite/EditableValueHolderAttachedObjectTargetHandler.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/composite/EditableValueHolderAttachedObjectTargetHandler.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/composite/EditableValueHolderAttachedObjectTargetImpl.java b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/composite/EditableValueHolderAttachedObjectTargetImpl.java
index 9e9521e..f74ffa7 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/composite/EditableValueHolderAttachedObjectTargetImpl.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/composite/EditableValueHolderAttachedObjectTargetImpl.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/composite/ExtensionHandler.java b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/composite/ExtensionHandler.java
index f5aa03d..7b5c725 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/composite/ExtensionHandler.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/composite/ExtensionHandler.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/composite/ImplementationHandler.java b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/composite/ImplementationHandler.java
index 4526f67..5909d67 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/composite/ImplementationHandler.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/composite/ImplementationHandler.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/composite/InsertChildrenHandler.java b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/composite/InsertChildrenHandler.java
index 9035307..1bff263 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/composite/InsertChildrenHandler.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/composite/InsertChildrenHandler.java
@@ -1,204 +1,224 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- *
- * Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
- *
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- *
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- *
- * Contributor(s):
- *
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-
-package com.sun.faces.facelets.tag.composite;
-
-import com.sun.faces.facelets.tag.TagHandlerImpl;
-import com.sun.faces.util.FacesLogger;
-
-import javax.faces.component.UIComponent;
-import javax.faces.view.facelets.FaceletContext;
-import javax.faces.view.facelets.TagAttribute;
-import javax.faces.view.facelets.TagConfig;
-import javax.faces.view.facelets.TagException;
-import javax.faces.view.Location;
-import javax.faces.event.ComponentSystemEvent;
-import javax.faces.event.AbortProcessingException;
-import javax.faces.event.PostAddToViewEvent;
-import javax.faces.application.Resource;
-import java.io.IOException;
-import java.util.List;
-import java.util.logging.Logger;
-import java.util.logging.Level;
-
-/**
- * This <code>TagHandler</code> is responsible for relocating children
- * defined within a composite component to a component within the
- * composite component's <code>composite:implementation</code> section.
- */
-public class InsertChildrenHandler extends TagHandlerImpl {
-
-    private final Logger LOGGER = FacesLogger.TAGLIB.getLogger();
-    private static final String REQUIRED_ATTRIBUTE = "required";
-
-    // This attribute is not required.  If not defined, then assume the facet
-    // isn't necessary.
-    private TagAttribute required;
-
-    
-    // ------------------------------------------------------------ Constructors
-
-
-    public InsertChildrenHandler(TagConfig config) {
-
-        super(config);
-        required = getAttribute(REQUIRED_ATTRIBUTE);
-
-    }
-
-
-    // ------------------------------------------------- Methods from TagHandler
-
-
-    public void apply(FaceletContext ctx, UIComponent parent)
-          throws IOException {
-
-        UIComponent compositeParent =
-              UIComponent.getCurrentCompositeComponent(ctx.getFacesContext());
-        if (compositeParent != null) {
-            int count = parent.getChildCount();
-            compositeParent.subscribeToEvent(PostAddToViewEvent.class,
-                                             new RelocateChildrenListener(ctx,
-                                                                          parent,
-                                                                          count,
-                                                                          this.tag.getLocation()));
-        }
-
-    }
-
-
-
-    // ----------------------------------------------------------- Inner Classes
-
-
-    private class RelocateChildrenListener extends RelocateListener {
-
-
-        private FaceletContext ctx;
-        private UIComponent component;
-        private int idx;
-        private Location location;
-
-
-        // -------------------------------------------------------- Constructors
-
-
-        RelocateChildrenListener(FaceletContext ctx,
-                                 UIComponent component,
-                                 int idx,
-                                 Location location) {
-
-            this.ctx = ctx;
-            this.component = component;
-            if (!component.getAttributes().containsKey("idx")) {
-                component.getAttributes().put("idx", idx);
-            }
-            this.idx = idx;
-            this.location = location;
-
-        }
-
-        // --------------------------- Methods from ComponentSystemEventListener
-
-
-        public void processEvent(ComponentSystemEvent event)
-        throws AbortProcessingException {
-
-            UIComponent compositeParent = event.getComponent();
-            if (compositeParent == null) {
-                return;
-            }
-
-            // ensure we're working with the expected composite component as
-            // nesting levels may mask this.
-            Resource resource = getBackingResource(compositeParent);
-            while (compositeParent != null && !resourcesMatch(resource, location)) {
-                compositeParent = UIComponent.getCompositeComponentParent(compositeParent);
-                if (compositeParent != null) {
-                    resource = getBackingResource(compositeParent);
-                }
-            }
-
-            if (compositeParent == null) {
-                if (LOGGER.isLoggable(Level.WARNING)) {
-                    LOGGER.log(Level.WARNING,
-                               "jsf.composite.component.insertchildren.missing.template",
-                               location.toString());
-                }
-                return;
-            }
-
-            if (compositeParent.getChildCount() == 0 && isRequired()) {
-                throwRequiredException(ctx, compositeParent);
-            }
-
-            List<UIComponent> compositeChildren = compositeParent.getChildren();
-            List<UIComponent> parentChildren = component.getChildren();
-            parentChildren.addAll(getIdx(), compositeChildren);
-            
-        }
-
-
-        // ----------------------------------------------------- Private Methods
-
-        private int getIdx() {
-            Integer idx = (Integer) component.getAttributes().get("idx");
-            return ((idx != null) ? idx : this.idx);
-        }
-
-        private void throwRequiredException(FaceletContext ctx,
-                                        UIComponent compositeParent) {
-
-            throw new TagException(tag,
-                                   "Unable to find any children components "
-                                     + "nested within parent composite component with id '"
-                                     + compositeParent .getClientId(ctx.getFacesContext())
-                                     + '\'');
-
-        }
-
-
-        private boolean isRequired() {
-
-            return ((required != null) && required.getBoolean(ctx));
-
-        }
-
-
-    } // END RelocateChildrenListener
-
-}
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.facelets.tag.composite;
+
+import com.sun.faces.facelets.tag.TagHandlerImpl;
+import com.sun.faces.facelets.tag.jsf.ComponentSupport;
+import com.sun.faces.util.FacesLogger;
+
+import javax.faces.component.UIComponent;
+import javax.faces.view.facelets.FaceletContext;
+import javax.faces.view.facelets.TagAttribute;
+import javax.faces.view.facelets.TagConfig;
+import javax.faces.view.facelets.TagException;
+import javax.faces.view.Location;
+import javax.faces.event.ComponentSystemEvent;
+import javax.faces.event.AbortProcessingException;
+import javax.faces.event.PostAddToViewEvent;
+import javax.faces.application.Resource;
+import java.io.IOException;
+import java.util.List;
+import java.util.logging.Logger;
+import java.util.logging.Level;
+
+/**
+ * This <code>TagHandler</code> is responsible for relocating children
+ * defined within a composite component to a component within the
+ * composite component's <code>composite:implementation</code> section.
+ */
+public class InsertChildrenHandler extends TagHandlerImpl {
+
+    private final Logger LOGGER = FacesLogger.TAGLIB.getLogger();
+    private static final String REQUIRED_ATTRIBUTE = "required";
+
+    // This attribute is not required.  If not defined, then assume the facet
+    // isn't necessary.
+    private TagAttribute required;
+
+    
+    // ------------------------------------------------------------ Constructors
+
+
+    public InsertChildrenHandler(TagConfig config) {
+
+        super(config);
+        required = getAttribute(REQUIRED_ATTRIBUTE);
+
+    }
+
+
+    // ------------------------------------------------- Methods from TagHandler
+
+
+    public void apply(FaceletContext ctx, UIComponent parent)
+          throws IOException {
+
+        UIComponent compositeParent =
+              UIComponent.getCurrentCompositeComponent(ctx.getFacesContext());
+        if (compositeParent != null) {
+            int count = parent.getChildCount();
+            compositeParent.subscribeToEvent(PostAddToViewEvent.class,
+                                             new RelocateChildrenListener(ctx,
+                                                                          parent,
+                                                                          count,
+                                                                          this.tag.getLocation()));
+        }
+
+    }
+
+
+
+    // ----------------------------------------------------------- Inner Classes
+
+
+    private class RelocateChildrenListener extends RelocateListener {
+
+
+        private FaceletContext ctx;
+        private UIComponent component;
+        private int idx;
+        private Location location;
+
+
+        // -------------------------------------------------------- Constructors
+
+
+        RelocateChildrenListener(FaceletContext ctx,
+                                 UIComponent component,
+                                 int idx,
+                                 Location location) {
+
+            this.ctx = ctx;
+            this.component = component;
+            if (!component.getAttributes().containsKey("idx")) {
+                component.getAttributes().put("idx", idx);
+            }
+            this.idx = idx;
+            this.location = location;
+
+        }
+
+        // --------------------------- Methods from ComponentSystemEventListener
+
+
+        public void processEvent(ComponentSystemEvent event)
+        throws AbortProcessingException {
+
+            UIComponent compositeParent = event.getComponent();
+            if (compositeParent == null) {
+                return;
+            }
+
+            // ensure we're working with the expected composite component as
+            // nesting levels may mask this.
+            Resource resource = getBackingResource(compositeParent);
+            while (compositeParent != null && !resourcesMatch(resource, location)) {
+                compositeParent = UIComponent.getCompositeComponentParent(compositeParent);
+                if (compositeParent != null) {
+                    resource = getBackingResource(compositeParent);
+                }
+            }
+
+            if (compositeParent == null) {
+                if (LOGGER.isLoggable(Level.WARNING)) {
+                    LOGGER.log(Level.WARNING,
+                               "jsf.composite.component.insertchildren.missing.template",
+                               location.toString());
+                }
+                return;
+            }
+
+            if (compositeParent.getChildCount() == 0 && isRequired()) {
+                throwRequiredException(ctx, compositeParent);
+            }
+
+            List<UIComponent> compositeChildren = compositeParent.getChildren();
+            List<UIComponent> parentChildren = component.getChildren();
+
+            //store the new parent's info per child in the old parent's attr map
+            //<child id, new parent>
+            for (UIComponent c : compositeChildren) {
+                String key =  (String)c.getAttributes().get(ComponentSupport.MARK_CREATED);
+                String value = component.getId();
+                if (key != null && value != null) {
+                    compositeParent.getAttributes().put(key, value);
+                }
+            }
+
+            if (parentChildren.size() < getIdx()) {
+                parentChildren.addAll(compositeChildren);
+            } else {
+                parentChildren.addAll(getIdx(), compositeChildren);
+            }
+
+            
+        }
+
+
+        // ----------------------------------------------------- Private Methods
+
+        private int getIdx() {
+            Integer idx = (Integer) component.getAttributes().get("idx");
+            return ((idx != null) ? idx : this.idx);
+        }
+
+        private void throwRequiredException(FaceletContext ctx,
+                                        UIComponent compositeParent) {
+
+            throw new TagException(tag,
+                                   "Unable to find any children components "
+                                     + "nested within parent composite component with id '"
+                                     + compositeParent .getClientId(ctx.getFacesContext())
+                                     + '\'');
+
+        }
+
+
+        private boolean isRequired() {
+
+            return ((required != null) && required.getBoolean(ctx));
+
+        }
+
+
+    } // END RelocateChildrenListener
+
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/composite/InsertFacetHandler.java b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/composite/InsertFacetHandler.java
index 2f4518a..b7fb6b3 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/composite/InsertFacetHandler.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/composite/InsertFacetHandler.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -37,6 +41,7 @@
 package com.sun.faces.facelets.tag.composite;
 
 import com.sun.faces.facelets.tag.TagHandlerImpl;
+import com.sun.faces.facelets.tag.jsf.ComponentSupport;
 import com.sun.faces.util.FacesLogger;
 
 import javax.faces.component.UIComponent;
@@ -177,6 +182,15 @@ public class InsertFacetHandler extends TagHandlerImpl {
             }
             if (facet != null) {
                 component.getFacets().put(facetName, facet);
+
+                String key = (String)facet.getAttributes().get(ComponentSupport.MARK_CREATED);
+               
+                String value = component.getId();
+                if (key != null && value != null) {
+                    //store the new parent's info per child in the old parent's attr map
+                    compositeParent.getAttributes().put(key, value);
+                }
+
             } else {
                 // In the case of full state saving, the compositeParent won't
                 // have the facet to be relocated as its own - it will have already
@@ -187,7 +201,7 @@ public class InsertFacetHandler extends TagHandlerImpl {
                     throwRequiredException(ctx, facetName, compositeParent);
                 }
             }
-
+         
         }
 
 
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/composite/InterfaceHandler.java b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/composite/InterfaceHandler.java
index 5887365..c6640cd 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/composite/InterfaceHandler.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/composite/InterfaceHandler.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -52,7 +56,6 @@
  * limitations under the License.
  */
 
-
 package com.sun.faces.facelets.tag.composite;
 
 import com.sun.faces.application.view.FaceletViewHandlingStrategy;
@@ -173,9 +176,8 @@ public class InterfaceHandler extends TagHandlerImpl {
                     found = attrs.containsKey(key);
                     // Special case: nested composite components
                     if (!found) {
-                        Object obj = context.getApplication().evaluateExpressionGet(context,
-                                "#{cc.attrs." + key + "}", Object.class);
-                        found = null != obj;
+                        // Check if an EL expression was given.
+                        found = (null!=cc.getValueExpression(key));
                     }
                 }
                 if (!found) {
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/composite/PropertyHandler.java b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/composite/PropertyHandler.java
index 6e29f77..0e70fa9 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/composite/PropertyHandler.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/composite/PropertyHandler.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -52,12 +56,10 @@
  * limitations under the License.
  */
 
-
 package com.sun.faces.facelets.tag.composite;
 
 import javax.faces.view.facelets.FaceletContext;
 import javax.faces.view.facelets.TagAttribute;
-import java.beans.PropertyDescriptor;
 import java.beans.FeatureDescriptor;
 
 
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/composite/PropertyHandlerManager.java b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/composite/PropertyHandlerManager.java
index 2ed0c5b..ad82975 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/composite/PropertyHandlerManager.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/composite/PropertyHandlerManager.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -52,9 +56,10 @@
  * limitations under the License.
  */
 
-
 package com.sun.faces.facelets.tag.composite;
 
+import com.sun.faces.facelets.el.TagValueExpression;
+import com.sun.faces.util.Util;
 import javax.faces.view.facelets.FaceletContext;
 import javax.faces.view.facelets.TagAttribute;
 import javax.faces.component.UIComponent;
@@ -72,9 +77,10 @@ class PropertyHandlerManager {
           new HashMap<String,PropertyHandler>(12, 1.0f);
     static {
         ALL_HANDLERS.put("targets", new StringValueExpressionPropertyHandler());
+        ALL_HANDLERS.put("targetAttributeName", new StringValueExpressionPropertyHandler());
         ALL_HANDLERS.put("method-signature", new StringValueExpressionPropertyHandler());
         ALL_HANDLERS.put("type", new StringValueExpressionPropertyHandler());
-        ALL_HANDLERS.put("default", new StringValueExpressionPropertyHandler());
+        ALL_HANDLERS.put("default", new DefaultPropertyHandler());
         ALL_HANDLERS.put("displayName", new DisplayNamePropertyHandler());
         ALL_HANDLERS.put("shortDescription", new ShortDescriptionPropertyHandler());
         ALL_HANDLERS.put("expert", new ExpertPropertyHandler());
@@ -240,6 +246,44 @@ class PropertyHandlerManager {
 
     } // END ObjectValueExpressionPropertyHandler
 
+    /**
+     * This PropertyHandler will apply the default-value of a cc:attribute
+     * tag, taking an eventually provided type into account.
+     */
+    private static class DefaultPropertyHandler
+            implements PropertyHandler {
+
+        public void apply(FaceletContext ctx,
+                String propName,
+                FeatureDescriptor target,
+                TagAttribute attribute) {
+
+            // try to get the type from the 'type'-attribute and default to
+            // Object.class, if no type-attribute was set.
+            Class<?> type = Object.class;
+            Object obj = target.getValue("type");
+            if ((null != obj) && !(obj instanceof Class)) {
+                TagValueExpression typeVE = (TagValueExpression) obj;
+                Object value = typeVE.getValue(ctx);
+                if (value instanceof Class<?>) {
+                    type = (Class<?>) value;
+                } else if (value != null) {
+                    try {
+                        type = Util.loadClass(String.valueOf(value), this);
+                    } catch (ClassNotFoundException ex) {
+                        // Wrap the ClassNotFoundException into a
+                        // RuntimeException, so that it can be unwrapped in the
+                        // caller
+                        throw new IllegalArgumentException(ex);
+                    }
+                }
+            } else {
+                type = null != obj ? (Class) obj : Object.class;
+            }
+            target.setValue(propName, attribute.getValueExpression(ctx, type));
+        }
+        
+    }
 
     private static class ComponentTypePropertyHandler
           extends StringValueExpressionPropertyHandler {
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/composite/RelocateListener.java b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/composite/RelocateListener.java
index 34d22ab..e777fa6 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/composite/RelocateListener.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/composite/RelocateListener.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/composite/RenderFacetHandler.java b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/composite/RenderFacetHandler.java
index 581bf0b..0b09e4f 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/composite/RenderFacetHandler.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/composite/RenderFacetHandler.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -52,7 +56,6 @@
  * limitations under the License.
  */
 
-
 package com.sun.faces.facelets.tag.composite;
 
 import javax.faces.component.UIComponent;
@@ -97,21 +100,18 @@ public class RenderFacetHandler extends ComponentHandler {
         if (compositeParent == null) {
             return;
         }
-        boolean required =
+        boolean requiredValue =
               ((this.required != null) && this.required.getBoolean(ctx));
-        String name = this.name.getValue(ctx);
+        String nameValue = this.name.getValue(ctx);
 
-        if (compositeParent.getFacetCount() == 0 && required) {
-            throwRequiredException(ctx, name, compositeParent);
+        if (compositeParent.getFacetCount() == 0 && requiredValue) {
+            throwRequiredException(ctx, nameValue, compositeParent);
         }
 
         Map<String,UIComponent> facetMap = compositeParent.getFacets();
-        if (facetMap.containsKey(name)) {
-            c.getAttributes().put(UIComponent.FACETS_KEY, name);
-        } else {
-            if (required) {
-                throwRequiredException(ctx, name, compositeParent);
-            }
+        c.getAttributes().put(UIComponent.FACETS_KEY, nameValue);
+        if (requiredValue && !facetMap.containsKey(nameValue)) {
+            throwRequiredException(ctx, nameValue, compositeParent);
         }
 
     }
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/composite/TypedPropertyHandler.java b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/composite/TypedPropertyHandler.java
index 82e6729..e6c5a62 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/composite/TypedPropertyHandler.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/composite/TypedPropertyHandler.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -52,7 +56,6 @@
  * limitations under the License.
  */
 
-
 package com.sun.faces.facelets.tag.composite;
 
 
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/composite/ValueHolderAttachedObjectTargetHandler.java b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/composite/ValueHolderAttachedObjectTargetHandler.java
index 5089b44..cbad47a 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/composite/ValueHolderAttachedObjectTargetHandler.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/composite/ValueHolderAttachedObjectTargetHandler.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/composite/ValueHolderAttachedObjectTargetImpl.java b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/composite/ValueHolderAttachedObjectTargetImpl.java
index 35d23dc..0deff4b 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/composite/ValueHolderAttachedObjectTargetImpl.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/composite/ValueHolderAttachedObjectTargetImpl.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -52,7 +56,6 @@
  * limitations under the License.
  */
 
-
 package com.sun.faces.facelets.tag.composite;
 
 import javax.faces.view.ValueHolderAttachedObjectTarget;
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/ActionSourceRule.java b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/ActionSourceRule.java
index 442a635..0f343af 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/ActionSourceRule.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/ActionSourceRule.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -56,6 +60,8 @@ package com.sun.faces.facelets.tag.jsf;
 
 import com.sun.faces.facelets.el.LegacyMethodBinding;
 
+import javax.el.ExpressionFactory;
+import javax.el.MethodExpression;
 import javax.faces.component.ActionSource;
 import javax.faces.component.ActionSource2;
 import javax.faces.event.ActionEvent;
@@ -65,13 +71,14 @@ import javax.faces.view.facelets.*;
 /**
  * 
  * @author Jacob Hookom
- * @version $Id: ActionSourceRule.java 8384 2010-05-17 14:59:38Z jdlee $
+ * @version $Id: ActionSourceRule.java 11952 2013-05-09 15:54:28Z mriem $
  */
 final class ActionSourceRule extends MetaRule {
 
     public final static Class[] ACTION_SIG = new Class[0];
 
     public final static Class[] ACTION_LISTENER_SIG = new Class[] { ActionEvent.class };
+    public final static Class[] ACTION_LISTENER_ZEROARG_SIG = new Class[] { };
 
     final static class ActionMapper extends Metadata {
 
@@ -83,7 +90,7 @@ final class ActionSourceRule extends MetaRule {
 
         public void applyMetadata(FaceletContext ctx, Object instance) {
             ((ActionSource) instance).setAction(new LegacyMethodBinding(
-                    this.attr.getMethodExpression(ctx, String.class,
+                    this.attr.getMethodExpression(ctx, Object.class,
                             ActionSourceRule.ACTION_SIG)));
         }
     }
@@ -98,7 +105,7 @@ final class ActionSourceRule extends MetaRule {
 
         public void applyMetadata(FaceletContext ctx, Object instance) {
             ((ActionSource2) instance).setActionExpression(this.attr
-                    .getMethodExpression(ctx, String.class,
+                    .getMethodExpression(ctx, Object.class,
                             ActionSourceRule.ACTION_SIG));
         }
 
@@ -130,10 +137,20 @@ final class ActionSourceRule extends MetaRule {
         }
 
         public void applyMetadata(FaceletContext ctx, Object instance) {
+            
+            ExpressionFactory expressionFactory = ctx.getExpressionFactory();
+
+            MethodExpression methodExpressionOneArg = attr.getMethodExpression(
+                ctx, null, ActionSourceRule.ACTION_LISTENER_SIG);
+            
+            MethodExpression methodExpressionZeroArg = 
+                    expressionFactory.createMethodExpression(
+                        ctx, methodExpressionOneArg.getExpressionString(), 
+                        Void.class, ActionSourceRule.ACTION_LISTENER_ZEROARG_SIG);            
+            
             ((ActionSource2) instance)
                     .addActionListener(new MethodExpressionActionListener(
-                            this.attr.getMethodExpression(ctx, null,
-                                    ActionSourceRule.ACTION_LISTENER_SIG)));
+                            methodExpressionOneArg, methodExpressionZeroArg));
 
         }
 
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/AttachedBehaviors.java b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/AttachedBehaviors.java
index a2775ad..633b908 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/AttachedBehaviors.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/AttachedBehaviors.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/BehaviorTagHandlerDelegateImpl.java b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/BehaviorTagHandlerDelegateImpl.java
index 8fcfb92..f2fd4bf 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/BehaviorTagHandlerDelegateImpl.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/BehaviorTagHandlerDelegateImpl.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -73,6 +77,8 @@ class BehaviorTagHandlerDelegateImpl extends TagHandlerDelegate implements Attac
         if (parent == null || !(parent.getParent() == null)) {
             return;
         }
+        ComponentSupport.copyPassthroughAttributes(ctx, parent, owner.getTag());
+        
         if (UIComponent.isCompositeComponent(parent)) {
             // Check composite component event name:
             BeanInfo componentBeanInfo = (BeanInfo) parent.getAttributes().get(
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/ComponentRule.java b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/ComponentRule.java
index 944dc67..f03b138 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/ComponentRule.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/ComponentRule.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -52,7 +56,6 @@
  * limitations under the License.
  */
 
-
 package com.sun.faces.facelets.tag.jsf;
 
 import com.sun.faces.facelets.el.LegacyValueBinding;
@@ -66,7 +69,7 @@ import java.util.logging.Logger;
 /**
  * 
  * @author Jacob Hookom
- * @version $Id: ComponentRule.java 8384 2010-05-17 14:59:38Z jdlee $
+ * @version $Id: ComponentRule.java 10664 2012-09-20 05:53:15Z edburns $
  */
 final class ComponentRule extends MetaRule {
 
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/ComponentSupport.java b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/ComponentSupport.java
index e6f9862..ccc4131 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/ComponentSupport.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/ComponentSupport.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -54,9 +58,11 @@
 
 package com.sun.faces.facelets.tag.jsf;
 
+import com.sun.faces.RIConstants;
 import com.sun.faces.context.StateContext;
 import com.sun.faces.facelets.tag.jsf.core.FacetHandler;
-
+import static com.sun.faces.config.WebConfiguration.BooleanWebContextInitParameter.PartialStateSaving;
+import com.sun.faces.util.Util;
 import javax.faces.FacesException;
 import javax.faces.component.UIComponent;
 import javax.faces.component.UIPanel;
@@ -65,24 +71,37 @@ import javax.faces.context.FacesContext;
 import javax.faces.view.facelets.FaceletContext;
 import javax.faces.view.facelets.TagAttribute;
 import javax.faces.view.facelets.TagAttributeException;
+import javax.faces.view.facelets.Tag;
 import java.io.IOException;
+import java.util.ArrayList;
 import java.util.Collection;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Locale;
 import java.util.Map;
-import javax.faces.view.facelets.Tag;
+import java.util.Map.Entry;
+import java.util.Set;
+import javax.faces.event.PhaseId;
 
 /**
  * 
  * @author Jacob Hookom
- * @version $Id: ComponentSupport.java 8384 2010-05-17 14:59:38Z jdlee $
+ * @version $Id: ComponentSupport.java 13340 2014-06-06 04:21:20Z edburns $
  */
 public final class ComponentSupport {
 
     private final static String MARK_DELETED = "com.sun.faces.facelets.MARK_DELETED";
     public final static String MARK_CREATED = "com.sun.faces.facelets.MARK_ID";
+
+    // Expando boolean attribute used to identify parent components that have had
+    // a dynamic child addition or removal.
+    public final static String MARK_CHILDREN_MODIFIED = "com.sun.faces.facelets.MARK_CHILDREN_MODIFIED";
+    
+    // Expando Collection<String> attribute used to identify tagIds of child components that
+    // have been removed from a parent component.
+    public final static String REMOVED_CHILDREN = "com.sun.faces.facelets.REMOVED_CHILDREN";
+
     private final static String IMPLICIT_PANEL = "com.sun.faces.facelets.IMPLICIT_PANEL";
 
     /**
@@ -115,14 +134,30 @@ public final class ComponentSupport {
             }
         }
 
+        Map<String, UIComponent> facets = c.getFacets();
         // remove any facets marked as deleted
-        if (c.getFacets().size() > 0) {
-            Collection col = c.getFacets().values();
+        if (facets.size() > 0) {
+            Set<Entry<String, UIComponent>> col = facets.entrySet();
             UIComponent fc;
-            for (Iterator itr = col.iterator(); itr.hasNext();) {
-                fc = (UIComponent) itr.next();
-                if (fc.getAttributes().containsKey(MARK_DELETED)) {
+            Entry<String, UIComponent> curEntry;
+            for (Iterator<Entry<String, UIComponent>> itr = col.iterator(); itr.hasNext();) {
+                curEntry = itr.next();
+                fc = curEntry.getValue();
+                Map<String, Object> attrs = fc.getAttributes();
+                if (attrs.containsKey(MARK_DELETED)) {
                     itr.remove();
+                } else if (attrs.containsKey(IMPLICIT_PANEL) &&
+                           !curEntry.getKey().equals(UIViewRoot.METADATA_FACET_NAME)) {
+                    List<UIComponent> implicitPanelChildren = fc.getChildren();
+                    UIComponent innerChild;
+                    for (Iterator<UIComponent> innerItr = implicitPanelChildren.iterator();
+                         innerItr.hasNext();) {
+                        innerChild = innerItr.next();
+                        if (innerChild.getAttributes().containsKey(MARK_DELETED)) {
+                            innerItr.remove();
+                        }
+
+                    }
                 }
             }
         }
@@ -178,18 +213,77 @@ public final class ComponentSupport {
         return null;
     }
     
+    // Obvious performance optimization.  First, assume this method
+    // is only called from UIInstructionHandler.apply().  With that assumption
+    // in place a few optimizations can be had on the cheap.
+    
+    // If this method is called on an initial page 
+    // render it will always return null, so we can just return 
+    // null in that case without any iteration.  
+    
+    // If this method is called during RestoreView, it will always return null
+    // so we can just return null in that case without any iteration.  
+    
+    // If PartialStateSaving is false, the UIInstruction components will
+    // never be in the tree at this point, so we can return null and skip iterating.
+    
+    public static UIComponent findUIInstructionChildByTagId(FacesContext context, UIComponent parent, String id) {
+        UIComponent result = null;
+        if (!context.isPostback() || context.getCurrentPhaseId().equals(PhaseId.RESTORE_VIEW)) {
+            return null;
+        }
+        Map<Object, Object> attrs = context.getAttributes();
+        if (attrs.containsKey(PartialStateSaving)) {
+            if ((Boolean)attrs.get(PartialStateSaving)) {
+                result = findChildByTagId(context, parent, id);
+            }
+        }
+
+        
+        return result;
+    }
+    
     /**
      * By TagId, find Child
-     * @param parent
-     * @param id
-     * @return
+     * 
+     * @param parent the parent UI component
+     * @param id the id
+     * @return the UI component
      */
-    public static UIComponent findChildByTagId(UIComponent parent, String id) {
-        Iterator itr = parent.getFacetsAndChildren();
+    public static UIComponent findChildByTagId(FacesContext context, UIComponent parent, String id) {
+        if (!context.isPostback() || context.getCurrentPhaseId().equals(PhaseId.RESTORE_VIEW)) {
+            return null;
+        }
         UIComponent c = null;
+        UIViewRoot root = context.getViewRoot();
+        boolean hasDynamicComponents = (null != root && 
+                root.getAttributes().containsKey(RIConstants.TREE_HAS_DYNAMIC_COMPONENTS));
         String cid = null;
-        while (itr.hasNext()) {
-            c = (UIComponent) itr.next();
+        List<UIComponent> components;
+        String facetName = getFacetName(parent);
+        if (null != facetName) {
+            c = parent.getFacet(facetName);
+            // We will have a facet name, but no corresponding facet in the
+            // case of facets with composite components.  In this case,
+            // we must do the brute force search.
+            if (null != c) {
+                cid = (String) c.getAttributes().get(MARK_CREATED);
+                if (id.equals(cid)) {
+                    return c;
+                }
+            } 
+        }
+        if (0 < parent.getFacetCount()) {
+            components = new ArrayList<UIComponent>();
+            components.addAll(parent.getFacets().values());
+            components.addAll(parent.getChildren());
+        } else {
+            components = parent.getChildren();
+        }
+
+        int len = components.size();
+        for (int i = 0; i < len; i++) {
+            c = components.get(i);
             cid = (String) c.getAttributes().get(MARK_CREATED);
             if (id.equals(cid)) {
                 return c;
@@ -202,23 +296,23 @@ public final class ComponentSupport {
                     }
                 }
             }
+            if (hasDynamicComponents) {
+                /*
+                 * Make sure we look for the child recursively it might have moved
+                 * into a different parent in the parent hierarchy. Note currently
+                 * we are only looking down the tree. Maybe it would be better
+                 * to use the VisitTree API instead.
+                 */
+                UIComponent foundChild = findChildByTagId(context, c, id);
+                if (foundChild != null) {
+                    return foundChild;
+                }
+            }
         }
-//        int sz = parent.getChildCount();
-//        if (sz > 0) {
-//            UIComponent c = null;
-//            List cl = parent.getChildren();
-//            String cid = null;
-//            while (--sz >= 0) {
-//                c = (UIComponent) cl.get(sz);
-//                cid = (String) c.getAttributes().get(MARK_CREATED);
-//                if (id.equals(cid)) {
-//                    return c;
-//                }
-//            }
-//        }
+
         return null;
     }
-
+    
     /**
      * According to JSF 1.2 tag specs, this helper method will use the
      * TagAttribute passed in determining the Locale intended.
@@ -239,19 +333,12 @@ public final class ComponentSupport {
         }
         if (obj instanceof String) {
             String s = (String) obj;
-            if (s.length() == 2) {
-                return new Locale(s);
+            try {
+                return Util.getLocaleFromString(s);
             }
-            if (s.length() == 5) {
-                return new Locale(s.substring(0, 2), s.substring(3, 5)
-                        .toUpperCase());
+            catch(IllegalArgumentException iae) {
+                throw new TagAttributeException(attr, "Invalid Locale Specified: " + s);
             }
-            if (s.length() >= 7) {
-                return new Locale(s.substring(0, 2), s.substring(3, 5)
-                        .toUpperCase(), s.substring(6, s.length()));
-            }
-            throw new TagAttributeException(attr, "Invalid Locale Specified: "
-                    + s);
         } else {
             throw new TagAttributeException(attr,
                     "Attribute did not evaluate to a String or Locale: " + obj);
@@ -311,8 +398,18 @@ public final class ComponentSupport {
             UIComponent fc;
             for (Iterator itr = col.iterator(); itr.hasNext();) {
                 fc = (UIComponent) itr.next();
-                if (fc.getAttributes().containsKey(MARK_CREATED)) {
-                    fc.getAttributes().put(MARK_DELETED, Boolean.TRUE);
+                Map<String, Object> attrs = fc.getAttributes();
+                if (attrs.containsKey(MARK_CREATED)) {
+                    attrs.put(MARK_DELETED, Boolean.TRUE);
+                } else if (attrs.containsKey(IMPLICIT_PANEL)) {
+                    List<UIComponent> implicitPanelChildren = fc.getChildren();
+                    Map<String, Object> innerAttrs = null;
+                    for (UIComponent cur : implicitPanelChildren) {
+                        innerAttrs = cur.getAttributes();
+                        if (innerAttrs.containsKey(MARK_CREATED)) {
+                            innerAttrs.put(MARK_DELETED, Boolean.TRUE);
+                        }
+                    }
                 }
             }
         }
@@ -370,7 +467,7 @@ public final class ComponentSupport {
             }
         }
     }
-    
+
     /**
      * <p class="changed_added_2_0">Add the child component to the parent. If the parent is a facet,
      * check to see whether the facet is already defined. If it is, wrap the existing component
@@ -378,21 +475,29 @@ public final class ComponentSupport {
      * does not yet exist, make the child the facet.</p>
      */
     public static void addComponent(FaceletContext ctx, UIComponent parent, UIComponent child) {
- 
+
         String facetName = getFacetName(parent);
         if (facetName == null) {
-            parent.getChildren().add(child);
+            if (child.getAttributes().containsKey(RIConstants.DYNAMIC_COMPONENT)) {
+                int childIndex = (Integer) child.getAttributes().get(RIConstants.DYNAMIC_COMPONENT);
+                if (childIndex >= parent.getChildCount() || childIndex == -1) {
+                    parent.getChildren().add(child);
+                } else {
+                    parent.getChildren().add(childIndex, child);
+                }                
+            } else {
+                parent.getChildren().add(child);
+            }
         } else {
             UIComponent existing = parent.getFacets().get(facetName);
-            if (existing != null) {
-                if (!(existing instanceof UIPanel)) {
+            if (existing != null && existing != child) {
+                if (existing.getAttributes().get(ComponentSupport.IMPLICIT_PANEL) == null) {
                     // move existing component under a panel group
                     UIComponent panelGroup = ctx.getFacesContext().getApplication().createComponent(UIPanel.COMPONENT_TYPE);
-                    panelGroup.setId(getViewRoot(ctx.getFacesContext(), parent).createUniqueId());
-                    panelGroup.getAttributes().put(ComponentSupport.IMPLICIT_PANEL, true);
-                    panelGroup.getChildren().add(existing);
-                    // the panel group becomes the facet
                     parent.getFacets().put(facetName, panelGroup);
+                    Map<String, Object> attrs = panelGroup.getAttributes();
+                    attrs.put(ComponentSupport.IMPLICIT_PANEL, true);
+                    panelGroup.getChildren().add(existing);
                     existing = panelGroup;
                 }
                 if (existing.getAttributes().get(ComponentSupport.IMPLICIT_PANEL) != null) {
@@ -405,7 +510,6 @@ public final class ComponentSupport {
                 parent.getFacets().put(facetName, child);
             }
         }
-        
     }
 
     public static String getFacetName(UIComponent parent) {
@@ -421,38 +525,53 @@ public final class ComponentSupport {
             String viewId = root.getViewId();
             if (viewId != null) {
                 StateContext stateCtx = StateContext.getStateContext(ctx);
-                return stateCtx
-                      .partialStateSaving(viewId);
+                return stateCtx.isPartialStateSaving(ctx, viewId);
             }
         }
         return false;
 
     }
-
-
-    // --------------------------------------------------------- private classes
-
-
-    private static UIViewRoot getViewRoot(FacesContext ctx, UIComponent parent) {
-
-        if (parent instanceof UIViewRoot) {
-            return (UIViewRoot) parent;
-        }
-        UIViewRoot root = ctx.getViewRoot();
-        if (root != null) {
-            return root;
+    
+    public static void copyPassthroughAttributes(FaceletContext ctx, UIComponent c, Tag t) {
+        
+        if (null == c || null == t) {
+            return;
         }
-        UIComponent c = parent.getParent();
-        while (c != null) {
-            if (c instanceof UIViewRoot) {
-                root = (UIViewRoot) c;
-                break;
-            } else {
-                c = c.getParent();
+        
+        TagAttribute[] passthroughAttrs = t.getAttributes().getAll(PassThroughAttributeLibrary.Namespace);
+        if (null != passthroughAttrs && 0 < passthroughAttrs.length) {
+            Map<String, Object> componentPassthroughAttrs = c.getPassThroughAttributes(true);
+            Object attrValue = null;
+            for (TagAttribute cur : passthroughAttrs) {
+                attrValue = (cur.isLiteral()) ? cur.getValue(ctx) : cur.getValueExpression(ctx, Object.class);
+                componentPassthroughAttrs.put(cur.getLocalName(), attrValue);
             }
         }
+    }
 
-        return root;
+    // --------------------------------------------------------- private classes
 
-    }
+
+//    private static UIViewRoot getViewRoot(FacesContext ctx, UIComponent parent) {
+//
+//        if (parent instanceof UIViewRoot) {
+//            return (UIViewRoot) parent;
+//        }
+//        UIViewRoot root = ctx.getViewRoot();
+//        if (root != null) {
+//            return root;
+//        }
+//        UIComponent c = parent.getParent();
+//        while (c != null) {
+//            if (c instanceof UIViewRoot) {
+//                root = (UIViewRoot) c;
+//                break;
+//            } else {
+//                c = c.getParent();
+//            }
+//        }
+//
+//        return root;
+//
+//    }
 }
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/ComponentTagHandlerDelegateImpl.java b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/ComponentTagHandlerDelegateImpl.java
index affe696..1a868c8 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/ComponentTagHandlerDelegateImpl.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/ComponentTagHandlerDelegateImpl.java
@@ -1,507 +1,647 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package com.sun.faces.facelets.tag.jsf;
-
-import com.sun.faces.RIConstants;
-import com.sun.faces.component.behavior.AjaxBehaviors;
-import com.sun.faces.component.validator.ComponentValidators;
-import com.sun.faces.component.CompositeComponentStackManager;
-import static com.sun.faces.component.CompositeComponentStackManager.StackType.TreeCreation;
-import com.sun.faces.context.StateContext;
-import com.sun.faces.facelets.impl.IdMapper;
-import com.sun.faces.facelets.tag.MetaRulesetImpl;
-import com.sun.faces.facelets.tag.jsf.core.FacetHandler;
-import com.sun.faces.util.FacesLogger;
-import com.sun.faces.util.Util;
-
-import javax.el.ValueExpression;
-import javax.faces.application.Application;
-import javax.faces.application.ProjectStage;
-import javax.faces.component.*;
-import javax.faces.component.behavior.ClientBehaviorHolder;
-import javax.faces.context.FacesContext;
-import javax.faces.view.facelets.ComponentConfig;
-import javax.faces.view.facelets.ComponentHandler;
-import javax.faces.view.facelets.FaceletContext;
-import javax.faces.view.facelets.MetaRuleset;
-import javax.faces.view.facelets.TagAttribute;
-import javax.faces.view.facelets.TagException;
-import javax.faces.view.facelets.TagHandlerDelegate;
-import java.io.IOException;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-public class ComponentTagHandlerDelegateImpl extends TagHandlerDelegate {
-    
-    private ComponentHandler owner;
-    
-    private final static Logger log = FacesLogger.FACELETS_COMPONENT.getLogger();
-    
-    private final TagAttribute binding;
-
-    protected String componentType;
-
-    protected final TagAttribute id;
-
-    private final String rendererType;
-    
-    private CreateComponentDelegate createCompositeComponentDelegate;
-
-
-    public ComponentTagHandlerDelegateImpl(ComponentHandler owner) {
-        this.owner = owner;
-        ComponentConfig config = owner.getComponentConfig();
-        this.componentType = config.getComponentType();
-        this.rendererType = config.getRendererType();
-        this.id = owner.getTagAttribute("id");
-        this.binding = owner.getTagAttribute("binding");
-        
-    }
-
-    /**
-     * Method handles UIComponent tree creation in accordance with the JSF 1.2
-     * spec.
-     * <ol>
-     * <li>First determines this UIComponent's id by calling
-     * {@link javax.faces.view.facelets.ComponentHandler#getTagId()}.</li>
-     * <li>Search the parent for an existing UIComponent of the id we just
-     * grabbed</li>
-     * <li>If found, {@link com.sun.faces.facelets.tag.jsf.ComponentSupport#markForDeletion(javax.faces.component.UIComponent) mark}
-     * its children for deletion.</li>
-     * <li>If <i>not</i> found, call
-     * {@link #createComponent(FaceletContext) createComponent}.
-     * <ol>
-     * <li>Only here do we apply
-     * {@link com.sun.faces.facelets.tag.MetaTagHandlerImpl#setAttributes(FaceletContext, Object)}</li>
-     * <li>Set the UIComponent's id</li>
-     * <li>Set the RendererType of this instance</li>
-     * </ol>
-     * </li>
-     * <li>Now apply the nextHandler, passing the UIComponent we've
-     * created/found.</li>
-     * <li>Now add the UIComponent to the passed parent</li>
-     * <li>Lastly, if the UIComponent already existed (found), then
-     * {@link ComponentSupport#finalizeForDeletion(UIComponent) finalize} for deletion.</li>
-     * </ol>
-     *
-     * @throws TagException
-     *             if the UIComponent parent is null
-     */
-    
-    @Override
-    public void apply(FaceletContext ctx, UIComponent parent) throws IOException {
-        FacesContext context = ctx.getFacesContext();
-
-        // make sure our parent is not null
-        if (parent == null) {
-            throw new TagException(owner.getTag(), "Parent UIComponent was null");
-        }
-
-        // our id
-        String id = ctx.generateUniqueId(owner.getTagId());
-
-        // grab our component
-        UIComponent c = findChild(ctx, parent, id);
-        boolean componentFound = false;
-        if (c != null) {
-           componentFound = true;
-           doExistingComponentActions(id, c);
-        } else {
-            c = this.createComponent(ctx);
-            
-            doNewComponentActions(ctx, id, c);
-            assignUniqueId(ctx, parent, id, c);
-
-            // hook method
-            owner.onComponentCreated(ctx, c, parent);
-        }
-
-       CompositeComponentStackManager ccStackManager =
-              CompositeComponentStackManager.getManager(context);
-        boolean compcompPushed = pushComponentToEL(ctx, c, ccStackManager);
-
-        if (ProjectStage.Development == context.getApplication().getProjectStage()) {
-            ComponentSupport.setTagForComponent(context, c, this.owner.getTag());
-        }
-
-        // first allow c to get populated
-        owner.applyNextHandler(ctx, c);
-
-        // finish cleaning up orphaned children
-        if (componentFound) {
-           doOrphanedChildCleanup(ctx, parent, c);
-        }
-
-        this.privateOnComponentPopulated(ctx, c);
-        owner.onComponentPopulated(ctx, c, parent);
-        // add to the tree afterwards
-        // this allows children to determine if it's
-        // been part of the tree or not yet
-        addComponentToView(ctx, parent, c, componentFound);
-        popComponentFromEL(ctx, c, ccStackManager, compcompPushed);
-
-        if (shouldMarkInitialState(ctx.getFacesContext())) {
-            c.markInitialState();
-        }
-        
-    }
-
-    @Override
-    public MetaRuleset createMetaRuleset(Class type) {
-        Util.notNull("type", type);
-        MetaRuleset m = new MetaRulesetImpl(owner.getTag(), type);
-
-        // ignore standard component attributes
-        m.ignore("binding").ignore("id");
-        
-        // add auto wiring for attributes
-        m.addRule(ComponentRule.Instance);
-        
-        // if it's an ActionSource
-        if (ActionSource.class.isAssignableFrom(type)) {
-            m.addRule(ActionSourceRule.Instance);
-        }
-        
-        // if it's a ValueHolder
-        if (ValueHolder.class.isAssignableFrom(type)) {
-            m.addRule(ValueHolderRule.Instance);
-            
-            // if it's an EditableValueHolder
-            if (EditableValueHolder.class.isAssignableFrom(type)) {
-                m.ignore("submittedValue");
-                m.ignore("valid");
-                m.addRule(EditableValueHolderRule.Instance);
-            }
-        }
-
-        // if it's a selectone or selectmany
-        if (UISelectOne.class.isAssignableFrom(type) || UISelectMany.class.isAssignableFrom(type)) {
-            m.addRule(RenderPropertyRule.Instance);
-        }
-        
-        return m;
-    }
-
-
-        // ------------------------------------------------------- Protected Methods
-
-
-    protected void addComponentToView(FaceletContext ctx,
-                                      UIComponent parent,
-                                      UIComponent c,
-                                      boolean componentFound) {
-
-        FacesContext context = ctx.getFacesContext();
-        boolean suppressEvents = ComponentSupport.suppressViewModificationEvents(context);
-        boolean compcomp = UIComponent.isCompositeComponent(c);
-
-        if (suppressEvents && componentFound && !compcomp) {
-            context.setProcessingEvents(false);
-        }
-
-        ComponentSupport.addComponent(ctx, parent, c);
-
-        if (suppressEvents && componentFound && !compcomp) {
-            context.setProcessingEvents(true);
-        }
-
-    }
-
-
-    protected boolean pushComponentToEL(FaceletContext ctx,
-                                        UIComponent c,
-                                        CompositeComponentStackManager ccStackManager) {
-
-        c.pushComponentToEL(ctx.getFacesContext(), c);
-        boolean compcompPushed = false;
-
-        if (UIComponent.isCompositeComponent(c)) {
-            compcompPushed = ccStackManager.push(c, TreeCreation);
-        }
-        return compcompPushed;
-
-    }
-
-
-    protected void popComponentFromEL(FaceletContext ctx,
-                                      UIComponent c,
-                                      CompositeComponentStackManager ccStackManager,
-                                      boolean compCompPushed) {
-
-        c.popComponentFromEL(ctx.getFacesContext());
-        if (compCompPushed) {
-            ccStackManager.pop(TreeCreation);
-        }
-
-    }
-
-
-    protected void doOrphanedChildCleanup(FaceletContext ctx,
-                                          UIComponent parent,
-                                          UIComponent c) {
-
-        ComponentSupport.finalizeForDeletion(c);
-        if (getFacetName(parent) == null) {
-            FacesContext context = ctx.getFacesContext();
-            boolean suppressEvents =
-                  ComponentSupport.suppressViewModificationEvents(context);
-
-            if (suppressEvents) {
-                // if the component has already been found, it will be removed
-                // and added back to the view.  We don't want to publish events
-                // for this case.
-                context.setProcessingEvents(false);
-            }
-            // suppress the remove event for this case since it will be re-added
-            parent.getChildren().remove(c);
-            if (suppressEvents) {
-                // re-enable event processing
-                context.setProcessingEvents(true);
-            }
-        }
-
-    }
-
-
-    protected void assignUniqueId(FaceletContext ctx,
-                                  UIComponent parent,
-                                  String id,
-                                  UIComponent c) {
-
-        if (this.id != null) {
-            c.setId(this.id.getValue(ctx));
-        } else {
-            UIViewRoot root = ComponentSupport.getViewRoot(ctx, parent);
-            if (root != null) {
-                String uid;
-                IdMapper mapper = IdMapper.getMapper(ctx.getFacesContext());
-                String mid = ((mapper != null) ? mapper.getAliasedId(id) : id);
-                UIComponent ancestorNamingContainer = parent
-                      .getNamingContainer();
-                if (null != ancestorNamingContainer &&
-                    ancestorNamingContainer instanceof UniqueIdVendor) {
-                    uid = ((UniqueIdVendor) ancestorNamingContainer)
-                          .createUniqueId(ctx.getFacesContext(), mid);
-                } else {
-                    uid = root.createUniqueId(ctx.getFacesContext(), mid);
-                }
-                c.setId(uid);
-            }
-
-        }
-
-        if (this.rendererType != null) {
-            c.setRendererType(this.rendererType);
-        }
-
-    }
-
-
-    protected void doNewComponentActions(FaceletContext ctx,
-                                         String id,
-                                         UIComponent c) {
-
-        if (log.isLoggable(Level.FINE)) {
-            log.fine(owner.getTag() + " Component["+id+"] Created: "
-                    + c.getClass().getName());
-        }
-        // If this is NOT a composite component...
-        if (null == createCompositeComponentDelegate) {
-            // set the attributes and properties into the UIComponent instance.
-            owner.setAttributes(ctx, c);
-        }
-        // otherwise, allow the composite component code to do it.
-
-        // mark it owned by a facelet instance
-        c.getAttributes().put(ComponentSupport.MARK_CREATED, id);
-
-        if (ctx.getFacesContext().isProjectStage(ProjectStage.Development)) {
-            // inject the location into the component
-            c.getAttributes().put(UIComponent.VIEW_LOCATION_KEY,
-                                  owner.getTag().getLocation());
-        }
-
-    }
-
-
-    protected void doExistingComponentActions(String id, UIComponent c) {
-
-        // mark all children for cleaning
-        if (log.isLoggable(Level.FINE)) {
-            log.fine(owner.getTag()
-                     + " Component["
-                     + id
-                     + "] Found, marking children for cleanup");
-        }
-        ComponentSupport.markForDeletion(c);
-
-    }
-
-
-    @SuppressWarnings({"UnusedDeclaration"})
-    protected UIComponent findChild(FaceletContext ctx,
-                                    UIComponent parent,
-                                    String tagId) {
-
-        return ComponentSupport.findChildByTagId(parent, tagId);
-
-    }
-
-
-    // ------------------------------------------------- Package Private Methods
-
-    
-    void setCreateCompositeComponentDelegate(CreateComponentDelegate createComponentDelegate) {
-        this.createCompositeComponentDelegate = createComponentDelegate;
-    }
-
-
-
-    /**
-     * @param ctx the <code>FacesContext</code> for the current request.
-     * @return <code>true</code> if <code>UIComponent.markInitialState()</code>
-     *  should be called on the component that is being processed, otherwise
-     *  return <code>false</code>
-     */
-    private boolean shouldMarkInitialState(FacesContext ctx) {
-
-        // RELEASE_PENDING - this is *ugly*.  We need to *not*
-        // call PartialStateHolder.markInitialState() if the component
-        // has a composite component parent under the assumption that
-        // the CompositeComponentTagHandler will take care of it.
-
-        return (StateContext.getStateContext(ctx).partialStateSaving((String)ctx.getAttributes().get(RIConstants.VIEWID_KEY_NAME))
-                 && UIComponent.getCurrentCompositeComponent(ctx) == null);
-
-    }
-
-    
-    /**
-     * If the binding attribute was specified, use that in conjuction with our
-     * componentType String variable to call createComponent on the Application,
-     * otherwise just pass the componentType String.
-     * <p />
-     * If the binding was used, then set the ValueExpression "binding" on the
-     * created UIComponent.
-     * 
-     * @see Application#createComponent(javax.faces.el.ValueBinding,
-     *      javax.faces.context.FacesContext, java.lang.String)
-     * @see Application#createComponent(java.lang.String)
-     * @param ctx
-     *            FaceletContext to use in creating a component
-     * @return
-     */
-    private UIComponent createComponent(FaceletContext ctx) {
-        
-        if (null != createCompositeComponentDelegate) {
-            return createCompositeComponentDelegate.createComponent(ctx);
-        }
-        
-        UIComponent c;
-        FacesContext faces = ctx.getFacesContext();
-        Application app = faces.getApplication();
-        if (this.binding != null) {
-            ValueExpression ve = this.binding.getValueExpression(ctx,
-                                                                 Object.class);
-            c = app.createComponent(ve, faces, this.componentType, this.rendererType);
-            if (c != null) {
-                // Make sure the component supports 1.2
-                c.setValueExpression("binding", ve);
-            }
-        } else {
-            c = app.createComponent(faces, this.componentType, this.rendererType);
-        }
-        return c;
-    }
-
-    /*
-     * Internal hook that allows us to perform common processing for all
-     * components after they are populated.  At the moment, the only common
-     * processing we need to perform is applying wrapping AjaxBehaviors,
-     * if any exist.
-     */
-    private void privateOnComponentPopulated(FaceletContext ctx, UIComponent c) {
-
-        if (c instanceof ClientBehaviorHolder) {
-            FacesContext context = ctx.getFacesContext();
-            AjaxBehaviors ajaxBehaviors = AjaxBehaviors.getAjaxBehaviors(context, false);
-            if (ajaxBehaviors != null) {
-                ajaxBehaviors.addBehaviors(context, (ClientBehaviorHolder)c);
-            }
-        }
-        if (c instanceof EditableValueHolder) {
-            processValidators(ctx.getFacesContext(), (EditableValueHolder) c);
-        }
-    }
-
-
-    /**
-     * Process default validatior/wrapping validation information and install
-     * <code>Validators</code> based off the result.
-     */
-    private void processValidators(FacesContext ctx,
-                                   EditableValueHolder editableValueHolder) {
-
-        ComponentValidators componentValidators =
-              ComponentValidators.getValidators(ctx, false);
-        if (componentValidators != null) {
-            // process any elements on the stack.  
-            componentValidators.addValidators(ctx, editableValueHolder);
-        } else {
-            // no custom handling required, so add the default validators
-            ComponentValidators.addDefaultValidatorsToComponent(ctx, editableValueHolder);
-        }
-
-    }
-
-    /**
-     * @return the Facet name we are scoped in, otherwise null
-     */
-    private String getFacetName(UIComponent parent) {
-        return (String) parent.getAttributes().get(FacetHandler.KEY);
-    }
-
-
-
-
-    interface CreateComponentDelegate {
-
-        public UIComponent createComponent(FaceletContext ctx);
-        
-    }
-
-}
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.facelets.tag.jsf;
+
+import com.sun.faces.component.behavior.AjaxBehaviors;
+import com.sun.faces.component.validator.ComponentValidators;
+import com.sun.faces.component.CompositeComponentStackManager;
+import com.sun.faces.context.StateContext;
+import com.sun.faces.facelets.impl.IdMapper;
+import com.sun.faces.facelets.tag.MetaRulesetImpl;
+import com.sun.faces.facelets.tag.jsf.core.FacetHandler;
+import com.sun.faces.util.FacesLogger;
+import com.sun.faces.util.Util;
+import javax.el.ValueExpression;
+import javax.faces.application.Application;
+import javax.faces.application.ProjectStage;
+import javax.faces.component.*;
+import javax.faces.component.behavior.ClientBehaviorHolder;
+import javax.faces.context.FacesContext;
+import javax.faces.view.facelets.ComponentConfig;
+import javax.faces.view.facelets.ComponentHandler;
+import javax.faces.view.facelets.FaceletContext;
+import javax.faces.view.facelets.MetaRuleset;
+import javax.faces.view.facelets.TagAttribute;
+import javax.faces.view.facelets.TagException;
+import javax.faces.view.facelets.TagHandlerDelegate;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import static com.sun.faces.RIConstants.DYNAMIC_COMPONENT;
+import static com.sun.faces.component.CompositeComponentStackManager.StackType.TreeCreation;
+import java.util.Collection;
+
+public class ComponentTagHandlerDelegateImpl extends TagHandlerDelegate {
+    
+    private ComponentHandler owner;
+    
+    private final static Logger log = FacesLogger.FACELETS_COMPONENT.getLogger();
+    
+    private final TagAttribute binding;
+
+    protected String componentType;
+
+    protected final TagAttribute id;
+
+    private final String rendererType;
+    
+    private CreateComponentDelegate createCompositeComponentDelegate;
+
+
+    public ComponentTagHandlerDelegateImpl(ComponentHandler owner) {
+        this.owner = owner;
+        ComponentConfig config = owner.getComponentConfig();
+        this.componentType = config.getComponentType();
+        this.rendererType = config.getRendererType();
+        this.id = owner.getTagAttribute("id");
+        this.binding = owner.getTagAttribute("binding");
+        
+    }
+
+    /**
+     * Method handles UIComponent tree creation in accordance with the JSF 1.2
+     * spec.
+     * <ol>
+     * <li>First determines this UIComponent's id by calling
+     * {@link javax.faces.view.facelets.ComponentHandler#getTagId()}.</li>
+     * <li>Search the parent for an existing UIComponent of the id we just
+     * grabbed</li>
+     * <li>If found, {@link com.sun.faces.facelets.tag.jsf.ComponentSupport#markForDeletion(javax.faces.component.UIComponent) mark}
+     * its children for deletion.</li>
+     * <li>If <i>not</i> found, call
+     * {@link #createComponent(FaceletContext) createComponent}.
+     * <ol>
+     * <li>Only here do we apply
+     * {@link com.sun.faces.facelets.tag.MetaTagHandlerImpl#setAttributes(FaceletContext, Object)}</li>
+     * <li>Set the UIComponent's id</li>
+     * <li>Set the RendererType of this instance</li>
+     * </ol>
+     * </li>
+     * <li>Now apply the nextHandler, passing the UIComponent we've
+     * created/found.</li>
+     * <li>Now add the UIComponent to the passed parent</li>
+     * <li>Lastly, if the UIComponent already existed (found), then
+     * {@link ComponentSupport#finalizeForDeletion(UIComponent) finalize} for deletion.</li>
+     * </ol>
+     *
+     * @throws TagException
+     *             if the UIComponent parent is null
+     */
+    
+    @Override
+    public void apply(FaceletContext ctx, UIComponent parent) throws IOException {
+        FacesContext context = ctx.getFacesContext();
+
+        // make sure our parent is not null
+        if (parent == null) {
+            throw new TagException(owner.getTag(), "Parent UIComponent was null");
+        }
+
+        // our id
+        String id = ctx.generateUniqueId(owner.getTagId());
+
+        // grab our component
+        UIComponent c = findChild(ctx, parent, id);
+        if (null == c &&
+            context.isPostback() &&
+            UIComponent.isCompositeComponent(parent) &&
+            parent.getAttributes().get(id) != null) {
+            c = findReparentedComponent(ctx, parent, id);
+        }
+        else {
+            /**
+             * If we found a child that is dynamic, the actual parent might 
+             * have changed, so we need to remove it from the actual parent.
+             * The reapplyDynamicActions will then replay the actions and
+             * will make sure it ends up in the correct order.
+             */
+            if (c != null && c.getParent() != parent && 
+                c.getAttributes().containsKey(DYNAMIC_COMPONENT)) {
+                c.getParent().getChildren().remove(c);
+            }
+        }
+        
+        boolean componentFound = false;
+        boolean parentModified = false;
+        if (c != null) {
+            componentFound = true;
+            doExistingComponentActions(ctx, id, c);
+        } else if (suppressRemovedChild(parent, id)) {
+            return;
+        } else {
+            //hook method
+            c = owner.createComponent(ctx);
+            if (c == null) {
+                c = this.createComponent(ctx);
+            }
+            
+            doNewComponentActions(ctx, id, c);
+            assignUniqueId(ctx, parent, id, c);
+
+            // hook method
+            owner.onComponentCreated(ctx, c, parent);
+        }
+
+       CompositeComponentStackManager ccStackManager =
+              CompositeComponentStackManager.getManager(context);
+        boolean compcompPushed = pushComponentToEL(ctx, c, ccStackManager);
+
+        if (ProjectStage.Development == context.getApplication().getProjectStage()) {
+            ComponentSupport.setTagForComponent(context, c, this.owner.getTag());
+        }
+
+        // If this this a naming container, stop generating unique Ids
+        // for the repeated tags
+        boolean isNaming = false;
+        if (c instanceof NamingContainer) {
+            isNaming = true;
+            IterationIdManager.startNamingContainer(ctx);
+        }
+        try {
+            // first allow c to get populated
+            owner.applyNextHandler(ctx, c);
+        } finally {
+            if (isNaming)
+            {
+                IterationIdManager.stopNamingContainer(ctx);
+            }
+        }
+
+        // finish cleaning up orphaned children
+        if (componentFound) {
+               parentModified = isParentChildrenModified(parent);
+               doOrphanedChildCleanup(ctx, parent, c, parentModified);
+            }
+
+        this.privateOnComponentPopulated(ctx, c);
+        owner.onComponentPopulated(ctx, c, parent);
+        // add to the tree afterwards
+        // this allows children to determine if it's
+        // been part of the tree or not yet
+        addComponentToView(ctx, parent, c, componentFound, parentModified);
+        ComponentSupport.copyPassthroughAttributes(ctx, c, owner.getTag());
+        adjustIndexOfDynamicChildren(context, c);
+        popComponentFromEL(ctx, c, ccStackManager, compcompPushed);
+    }
+
+    // Tests whether the component associated with the specified tagId was
+    // a child of the parent component that has been dynamically removed.  If
+    // so, we want to suppress re-creation of this child
+    private boolean suppressRemovedChild(UIComponent parent, String childTagId) {
+        Collection<String> removedChildren = (Collection<String>)
+                parent.getAttributes().get(ComponentSupport.REMOVED_CHILDREN);
+        return ((removedChildren != null) && removedChildren.contains(childTagId));
+    }
+    
+    // Tests whether the specified parent component has had any dynamic 
+    // child additions or removals.  If so, we avoid re-ordering its children
+    // during tag re-execution, since we want to preserve the dynamically
+    // specified order.
+    private boolean isParentChildrenModified(UIComponent parent) {
+        return (parent.getAttributes().get(ComponentSupport.MARK_CHILDREN_MODIFIED) != null);    
+    }
+ 
+    private void adjustIndexOfDynamicChildren(FacesContext context, 
+            UIComponent parent) {
+        StateContext stateContext = StateContext.getStateContext(context);
+        if (!stateContext.hasOneOrMoreDynamicChild(parent)) {
+            return;
+        }
+
+        List<UIComponent> children = parent.getChildren();
+        List<UIComponent> dynamicChildren = Collections.emptyList();
+
+        for (UIComponent cur : children) {
+            if (stateContext.componentAddedDynamically(cur)) {
+                if (dynamicChildren.isEmpty()) {
+                    dynamicChildren = new ArrayList<UIComponent>(children.size());
+                }
+                dynamicChildren.add(cur);
+            }
+        }
+        
+        // First remove all the dynamic children, this puts the non-dynamic children at
+        // their original position 
+        for (UIComponent cur : dynamicChildren) {
+            int i = stateContext.getIndexOfDynamicallyAddedChildInParent(cur);
+            if (-1 != i) {
+                children.remove(cur);
+            }
+        }
+        
+        // Now that the non-dynamic children are in the correct position add the dynamic children
+        // back in.
+        for (UIComponent cur : dynamicChildren) {
+            int i = stateContext.getIndexOfDynamicallyAddedChildInParent(cur);
+            if (-1 != i) {
+                if (i < children.size()) {
+                    children.add(i, cur);
+                } else {
+                    children.add(cur);
+                }
+            }
+        }
+    }
+
+    @Override
+    public MetaRuleset createMetaRuleset(Class type) {
+        Util.notNull("type", type);
+        MetaRuleset m = new MetaRulesetImpl(owner.getTag(), type);
+
+        // ignore standard component attributes
+        m.ignore("binding").ignore("id");
+        
+        // add auto wiring for attributes
+        m.addRule(ComponentRule.Instance);
+        
+        // if it's an ActionSource
+        if (ActionSource.class.isAssignableFrom(type)) {
+            m.addRule(ActionSourceRule.Instance);
+        }
+        
+        // if it's a ValueHolder
+        if (ValueHolder.class.isAssignableFrom(type)) {
+            m.addRule(ValueHolderRule.Instance);
+            
+            // if it's an EditableValueHolder
+            if (EditableValueHolder.class.isAssignableFrom(type)) {
+                m.ignore("submittedValue");
+                m.ignore("valid");
+                m.addRule(EditableValueHolderRule.Instance);
+            }
+        }
+
+        // if it's a selectone or selectmany
+        if (UISelectOne.class.isAssignableFrom(type) || UISelectMany.class.isAssignableFrom(type)) {
+            m.addRule(RenderPropertyRule.Instance);
+        }
+        
+        return m;
+    }
+
+
+        // ------------------------------------------------------- Protected Methods
+
+
+    private void addComponentToView(FaceletContext ctx,
+                                    UIComponent parent,
+                                    UIComponent c,
+                                    boolean componentFound,
+                                    boolean parentModified) {
+        if (!componentFound || !parentModified) {
+            addComponentToView(ctx, parent, c, componentFound);   
+        }
+    }
+
+    protected void addComponentToView(FaceletContext ctx,
+                                      UIComponent parent,
+                                      UIComponent c,
+                                      boolean componentFound) {
+
+        FacesContext context = ctx.getFacesContext();
+        boolean suppressEvents = ComponentSupport.suppressViewModificationEvents(context);
+        boolean compcomp = UIComponent.isCompositeComponent(c);
+
+        if (suppressEvents && componentFound && !compcomp) {
+            context.setProcessingEvents(false);
+        }
+
+        ComponentSupport.addComponent(ctx, parent, c);
+
+        if (suppressEvents && componentFound && !compcomp) {
+            context.setProcessingEvents(true);
+        }
+
+    }
+
+
+    protected boolean pushComponentToEL(FaceletContext ctx,
+                                        UIComponent c,
+                                        CompositeComponentStackManager ccStackManager) {
+
+        c.pushComponentToEL(ctx.getFacesContext(), c);
+        boolean compcompPushed = false;
+
+        if (UIComponent.isCompositeComponent(c)) {
+            compcompPushed = ccStackManager.push(c, TreeCreation);
+        }
+        return compcompPushed;
+
+    }
+
+
+    protected void popComponentFromEL(FaceletContext ctx,
+                                      UIComponent c,
+                                      CompositeComponentStackManager ccStackManager,
+                                      boolean compCompPushed) {
+
+        c.popComponentFromEL(ctx.getFacesContext());
+        if (compCompPushed) {
+            ccStackManager.pop(TreeCreation);
+        }
+
+    }
+
+    private void doOrphanedChildCleanup(FaceletContext ctx,
+                                          UIComponent parent,
+                                          UIComponent c,
+                                          boolean parentModified) {
+        if (parentModified) {
+            ComponentSupport.finalizeForDeletion(c);
+        } else {
+            doOrphanedChildCleanup(ctx, parent, c);
+        }
+    }
+
+    protected void doOrphanedChildCleanup(FaceletContext ctx,
+                                          UIComponent parent,
+                                          UIComponent c) {
+
+        ComponentSupport.finalizeForDeletion(c);
+        if (getFacetName(parent) == null) {
+            FacesContext context = ctx.getFacesContext();
+            boolean suppressEvents =
+                  ComponentSupport.suppressViewModificationEvents(context);
+
+            if (suppressEvents) {
+                // if the component has already been found, it will be removed
+                // and added back to the view.  We don't want to publish events
+                // for this case.
+                context.setProcessingEvents(false);
+            }
+            // suppress the remove event for this case since it will be re-added
+            parent.getChildren().remove(c);
+            if (suppressEvents) {
+                // re-enable event processing
+                context.setProcessingEvents(true);
+            }
+        }
+
+    }
+
+
+    protected void assignUniqueId(FaceletContext ctx,
+                                  UIComponent parent,
+                                  String id,
+                                  UIComponent c) {
+
+        // If the id is specified as a literal, and the component is being
+        // repeated (by c:forEach, for example), use generated unique ids
+        // after the first instance 
+        
+        if (this.id != null && !(this.id.isLiteral() && IterationIdManager.registerLiteralId(ctx, this.id.getValue()))) {
+            c.setId(this.id.getValue(ctx));
+        } else {
+            UIViewRoot root = ComponentSupport.getViewRoot(ctx, parent);
+            if (root != null) {
+                String uid;
+                IdMapper mapper = IdMapper.getMapper(ctx.getFacesContext());
+                String mid = ((mapper != null) ? mapper.getAliasedId(id) : id);
+                UIComponent ancestorNamingContainer = parent
+                      .getNamingContainer();
+                if (null != ancestorNamingContainer &&
+                    ancestorNamingContainer instanceof UniqueIdVendor) {
+                    uid = ((UniqueIdVendor) ancestorNamingContainer)
+                          .createUniqueId(ctx.getFacesContext(), mid);
+                } else {
+                    uid = root.createUniqueId(ctx.getFacesContext(), mid);
+                }
+                c.setId(uid);
+            }
+
+        }
+
+        if (this.rendererType != null) {
+            c.setRendererType(this.rendererType);
+        }
+
+    }
+
+
+    protected void doNewComponentActions(FaceletContext ctx,
+                                         String id,
+                                         UIComponent c) {
+
+        if (log.isLoggable(Level.FINE)) {
+            log.fine(owner.getTag() + " Component["+id+"] Created: "
+                    + c.getClass().getName());
+        }
+        // If this is NOT a composite component...
+        if (null == createCompositeComponentDelegate) {
+            // set the attributes and properties into the UIComponent instance.
+            owner.setAttributes(ctx, c);
+        }
+        // otherwise, allow the composite component code to do it.
+
+        // mark it owned by a facelet instance
+        c.getAttributes().put(ComponentSupport.MARK_CREATED, id);
+
+        if (ctx.getFacesContext().isProjectStage(ProjectStage.Development)) {
+            // inject the location into the component
+            c.getAttributes().put(UIComponent.VIEW_LOCATION_KEY,
+                                  owner.getTag().getLocation());
+        }
+
+    }
+
+
+    protected void doExistingComponentActions(FaceletContext ctx, String id, UIComponent c) {
+
+        // mark all children for cleaning
+        if (log.isLoggable(Level.FINE)) {
+            log.fine(owner.getTag()
+                     + " Component["
+                     + id
+                     + "] Found, marking children for cleanup");
+        }
+        ComponentSupport.markForDeletion(c);
+        
+        if (this.id != null){
+            /*
+             * Note that registerLiteralId() needs to be called here regardless of whether we keep the code for 
+             * reapplying Ids below.
+             * This makes IterationIdManager aware of all literal Ids on the page, so that it can ensure Id uniqueness for components
+             * added during postback.
+             */
+            boolean autoGenerated = (this.id.isLiteral() && IterationIdManager.registerLiteralId(ctx, this.id.getValue()));
+            
+            /*
+             * Repply the id, for the case when the component tree was changed, and the id's are set explicitly.
+             */
+            if (!autoGenerated) {
+                c.setId(this.id.getValue(ctx));
+            }
+        }
+    }
+
+
+    @SuppressWarnings({"UnusedDeclaration"})
+    protected UIComponent findChild(FaceletContext ctx,
+                                    UIComponent parent,
+                                    String tagId) {
+
+        return ComponentSupport.findChildByTagId(ctx.getFacesContext(), parent, tagId);
+
+    }
+
+    @SuppressWarnings({"UnusedDeclaration"})
+    protected UIComponent findReparentedComponent(FaceletContext ctx,
+                                    UIComponent parent,
+                                    String tagId) {
+        UIComponent facet = parent.getFacets().get(UIComponent.COMPOSITE_FACET_NAME);
+        if (facet != null) {
+            UIComponent newParent = facet.findComponent(
+               (String)parent.getAttributes().get(tagId));
+            if (newParent != null)
+                return ComponentSupport.findChildByTagId(ctx.getFacesContext(), newParent, tagId);
+        }
+        return null;
+    }
+
+    // ------------------------------------------------- Package Private Methods
+
+    
+    void setCreateCompositeComponentDelegate(CreateComponentDelegate createComponentDelegate) {
+        this.createCompositeComponentDelegate = createComponentDelegate;
+    }
+
+
+
+    /**
+     * If the binding attribute was specified, use that in conjuction with our
+     * componentType String variable to call createComponent on the Application,
+     * otherwise just pass the componentType String.
+     * <p />
+     * If the binding was used, then set the ValueExpression "binding" on the
+     * created UIComponent.
+     * 
+     * @see Application#createComponent(javax.faces.el.ValueBinding,
+     *      javax.faces.context.FacesContext, java.lang.String)
+     * @see Application#createComponent(java.lang.String)
+     * @param ctx
+     *            FaceletContext to use in creating a component
+     * @return
+     */
+    private UIComponent createComponent(FaceletContext ctx) {
+        
+        if (null != createCompositeComponentDelegate) {
+            return createCompositeComponentDelegate.createComponent(ctx);
+        }
+        
+        UIComponent c;
+        FacesContext faces = ctx.getFacesContext();
+        Application app = faces.getApplication();
+        if (this.binding != null) {
+            ValueExpression ve = this.binding.getValueExpression(ctx,
+                                                                 Object.class);
+            c = app.createComponent(ve, faces, this.componentType, this.rendererType);
+            if (c != null) {
+                // Make sure the component supports 1.2
+                c.setValueExpression("binding", ve);
+            }
+        } else {
+            c = app.createComponent(faces, this.componentType, this.rendererType);
+        }
+        return c;
+    }
+
+    /*
+     * Internal hook that allows us to perform common processing for all
+     * components after they are populated.  At the moment, the only common
+     * processing we need to perform is applying wrapping AjaxBehaviors,
+     * if any exist.
+     */
+    private void privateOnComponentPopulated(FaceletContext ctx, UIComponent c) {
+
+        if (c instanceof ClientBehaviorHolder) {
+            FacesContext context = ctx.getFacesContext();
+            AjaxBehaviors ajaxBehaviors = AjaxBehaviors.getAjaxBehaviors(context, false);
+            if (ajaxBehaviors != null) {
+                ajaxBehaviors.addBehaviors(context, (ClientBehaviorHolder)c);
+            }
+        }
+        if (c instanceof EditableValueHolder) {
+            processValidators(ctx.getFacesContext(), (EditableValueHolder) c);
+        }
+    }
+
+
+    /**
+     * Process default validatior/wrapping validation information and install
+     * <code>Validators</code> based off the result.
+     */
+    private void processValidators(FacesContext ctx,
+                                   EditableValueHolder editableValueHolder) {
+
+        ComponentValidators componentValidators =
+              ComponentValidators.getValidators(ctx, false);
+        if (componentValidators != null) {
+            // process any elements on the stack.  
+            componentValidators.addValidators(ctx, editableValueHolder);
+        } else {
+            // no custom handling required, so add the default validators
+            ComponentValidators.addDefaultValidatorsToComponent(ctx, editableValueHolder);
+        }
+
+    }
+
+    /**
+     * @return the Facet name we are scoped in, otherwise null
+     */
+    private String getFacetName(UIComponent parent) {
+        return (String) parent.getAttributes().get(FacetHandler.KEY);
+    }
+
+
+
+
+    interface CreateComponentDelegate {
+
+        public UIComponent createComponent(FaceletContext ctx);
+        public void setCompositeComponent(FacesContext context, UIComponent cc);
+        public UIComponent getCompositeComponent(FacesContext context);
+        
+    }
+
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/CompositeComponentImpl.java b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/CompositeComponentImpl.java
index 3ba4aa2..637a294 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/CompositeComponentImpl.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/CompositeComponentImpl.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/CompositeComponentTagHandler.java b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/CompositeComponentTagHandler.java
index 33d36c2..e3b017d 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/CompositeComponentTagHandler.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/CompositeComponentTagHandler.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -55,18 +59,14 @@
 package com.sun.faces.facelets.tag.jsf;
 
 import com.sun.faces.RIConstants;
-import com.sun.faces.context.StateContext;
-import com.sun.faces.facelets.Facelet;
-import com.sun.faces.facelets.FaceletFactory;
 import com.sun.faces.facelets.util.ReflectionUtil;
 import com.sun.faces.facelets.el.VariableMapperWrapper;
 import com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.CreateComponentDelegate;
 import com.sun.faces.facelets.tag.MetaRulesetImpl;
 import com.sun.faces.facelets.tag.MetadataTargetImpl;
-import com.sun.faces.util.RequestStateManager;
 import com.sun.faces.util.Util;
 import com.sun.faces.util.FacesLogger;
-
+import java.beans.BeanDescriptor;
 import javax.el.ELException;
 import javax.el.ValueExpression;
 import javax.el.VariableMapper;
@@ -96,8 +96,8 @@ import java.beans.BeanInfo;
 import java.beans.IntrospectionException;
 import java.io.IOException;
 import java.util.ArrayList;
+import java.util.Collection;
 import java.util.Collections;
-import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.logging.Logger;
@@ -117,14 +117,13 @@ public class CompositeComponentTagHandler extends ComponentHandler implements Cr
 
     private static final Logger LOGGER = FacesLogger.TAGLIB.getLogger();
     private Resource ccResource;
-    private UIComponent cc;
     private TagAttribute binding;
 
 
     // ------------------------------------------------------------ Constructors
 
 
-    CompositeComponentTagHandler(Resource ccResource, ComponentConfig config) {
+    public CompositeComponentTagHandler(Resource ccResource, ComponentConfig config) {
         super(config);
         this.ccResource = ccResource;
         this.binding = config.getTag().getAttributes().get("binding");
@@ -139,6 +138,7 @@ public class CompositeComponentTagHandler extends ComponentHandler implements Cr
     public UIComponent createComponent(FaceletContext ctx) {
         
         FacesContext context = ctx.getFacesContext();
+        UIComponent cc;
         // we have to handle the binding here, as Application doesn't
         // expose a method to do so with Resource.
         if (binding != null) {
@@ -154,11 +154,14 @@ public class CompositeComponentTagHandler extends ComponentHandler implements Cr
             }
             if (cc == null) {
                 cc = context.getApplication().createComponent(context, ccResource);
+                cc.setValueExpression("binding", ve);
                 ve.setValue(ctx, cc);
             }
         } else {
             cc = context.getApplication().createComponent(context, ccResource);
         }
+        context.getViewRoot().getAttributes().put(RIConstants.TREE_HAS_DYNAMIC_COMPONENTS, Boolean.TRUE);
+        setCompositeComponent(context, cc);
 
         return cc;
 
@@ -196,20 +199,37 @@ public class CompositeComponentTagHandler extends ComponentHandler implements Cr
             vdl.retargetAttachedObjects(context, c,
                     getAttachedObjectHandlers(c, false));
             vdl.retargetMethodExpressions(context, c);
+            getAttachedObjectHandlers(c).clear();
 
-            // RELEASE_PENDING This is *ugly*.  See my comments in
-            // ComponentTagHandlerDelegateImpl at the end of the apply()
-            // method
-            if (StateContext.getStateContext(context).partialStateSaving((String)context.getAttributes().get(RIConstants.VIEWID_KEY_NAME))) {
-                markInitialState(c);
-            }
+//            getAttachedObjectHandlers(c, false).clear();
+        }
 
+    }
+    
+    
+    // The value of this string, prepended to this.tagId, is used as a
+    // key in the FacesContext attributes map, the value for which is
+    // the UIComponent that formerly was stored in an instance variable called
+    // cc.
+    private static final String ccInstanceVariableStandinKey = CompositeComponentTagHandler.class.getName() + "_";
 
+    @Override
+    public void setCompositeComponent(FacesContext context, UIComponent cc) {
+        Map contextMap = context.getAttributes();
+        String key = ccInstanceVariableStandinKey + this.tagId;
+        if (!contextMap.containsKey(key)) {
+            contextMap.put(key, cc);
         }
-
     }
 
+    public UIComponent getCompositeComponent(FacesContext context) {
+        Map contextMap = context.getAttributes();
+        String key = ccInstanceVariableStandinKey + this.tagId;
+        UIComponent result = (UIComponent) contextMap.get(key);
 
+        return result;
+    }
+    
     /**
      * Specialized implementation to prevent caching of the MetaRuleset when
      * ProjectStage is Development.
@@ -244,6 +264,14 @@ public class CompositeComponentTagHandler extends ComponentHandler implements Cr
     protected MetaRuleset createMetaRuleset(Class type) {
 
         Util.notNull("type", type);
+        FacesContext context = FacesContext.getCurrentInstance();
+        UIComponent cc = getCompositeComponent(context);
+        if (null == cc) {        
+            FaceletContext faceletContext = (FaceletContext) context.getAttributes().get(FaceletContext.FACELET_CONTEXT_KEY);
+            cc = createComponent(faceletContext);
+            setCompositeComponent(context, cc);
+            
+        }
         MetaRuleset m = new CompositeComponentMetaRuleset(getTag(), type, (BeanInfo) cc.getAttributes().get(UIComponent.BEANINFO_KEY));
 
         // ignore standard component attributes
@@ -287,18 +315,28 @@ public class CompositeComponentTagHandler extends ComponentHandler implements Cr
 
     }
     
+    
+    /**
+     * <p class="changed_added_2_2">The key in the value set of the
+     * <em>composite component <code>BeanDescriptor</code></em>, the
+     * value for which is a
+     * <code>List<AttachedObjectHandler></code>.</p>
+     */
+    private static final String ATTACHED_OBJECT_HANDLERS_KEY =
+            "javax.faces.view.AttachedObjectHandlers";
+    
 
     @SuppressWarnings({"unchecked"})
     public static List<AttachedObjectHandler> getAttachedObjectHandlers(UIComponent component,
                                                                         boolean create) {
         Map<String, Object> attrs = component.getAttributes();
         List<AttachedObjectHandler> result = (List<AttachedObjectHandler>)
-              attrs.get("javax.faces.RetargetableHandlers");
+              attrs.get(ATTACHED_OBJECT_HANDLERS_KEY);
 
         if (result == null) {
             if (create) {
                 result = new ArrayList<AttachedObjectHandler>();
-                attrs.put("javax.faces.RetargetableHandlers", result);
+                attrs.put(ATTACHED_OBJECT_HANDLERS_KEY, result);
             } else {
                 result = Collections.EMPTY_LIST;
             }
@@ -316,8 +354,6 @@ public class CompositeComponentTagHandler extends ComponentHandler implements Cr
     throws IOException {
 
         FacesContext facesContext = ctx.getFacesContext();
-        FaceletFactory factory = (FaceletFactory)
-              RequestStateManager.get(facesContext, RequestStateManager.FACELET_FACTORY);
         VariableMapper orig = ctx.getVariableMapper();
         
         UIPanel facetComponent;
@@ -333,40 +369,29 @@ public class CompositeComponentTagHandler extends ComponentHandler implements Cr
         }
         assert(null != facetComponent);
         
-        try {
-            Facelet f = factory.getFacelet(ccResource.getURL());
-
+        try {            
             VariableMapper wrapper = new VariableMapperWrapper(orig) {
 
                 @Override
                 public ValueExpression resolveVariable(String variable) {
                     return super.resolveVariable(variable);
-                }
-                
+            }
+            
             };
             ctx.setVariableMapper(wrapper);
-            f.apply(facesContext, facetComponent);
+            
+            /*
+             * We need to use includeFacelet because our facelet component map
+             * expects each Facelet component to generate a unique id (MARK_ID).
+             */
+            ctx.includeFacelet(facetComponent, ccResource.getURL());
         } finally {
             ctx.setVariableMapper(orig);
         }
-
     }
 
 
 
-
-
-
-    private void markInitialState(UIComponent c) {
-        if (!c.initialStateMarked()) {
-            c.markInitialState();
-            for (Iterator<UIComponent> i = c.getFacetsAndChildren(); i.hasNext(); ) {
-                markInitialState(i.next());
-            }
-        }
-    }
-
-
     // ---------------------------------------------------------- Nested Classes
 
 
@@ -436,10 +461,9 @@ public class CompositeComponentTagHandler extends ComponentHandler implements Cr
                 PropertyDescriptor compDescriptor = findDescriptor(name);
                 if (compDescriptor != null) {
                     // composite:attribute declaration...
-                    ValueExpression typeVE = (ValueExpression) compDescriptor.getValue("type");
-                    if (typeVE == null) {
-                        return Object.class;
-                    } else {
+                    Object obj = compDescriptor.getValue("type");
+                    if ((null != obj) && !(obj instanceof Class)) {
+                        ValueExpression typeVE = (ValueExpression) obj;
                         String className = (String) typeVE.getValue(FacesContext.getCurrentInstance().getELContext());
                         if (className != null) {
                             className = prefix(className);
@@ -451,6 +475,8 @@ public class CompositeComponentTagHandler extends ComponentHandler implements Cr
                         } else {
                             return Object.class;
                         }
+                    } else {
+                        return (Class) obj;
                     }
                 } else {
                     // defer to the default processing which will inspect the
@@ -558,7 +584,12 @@ public class CompositeComponentTagHandler extends ComponentHandler implements Cr
             public void applyMetadata(FaceletContext ctx, Object instance) {
 
                 UIComponent c = (UIComponent) instance;
-                c.getAttributes().put(name, attribute.getObject(ctx, type));
+                Object value = attribute.getObject(ctx,type);
+                // don't set the attributes value in the components attributemap
+                // if it is null, as this will throw a NullPointerException.
+                if(value!=null) {
+                    c.getAttributes().put(name, value);
+                }
 
             }
 
@@ -600,6 +631,18 @@ public class CompositeComponentTagHandler extends ComponentHandler implements Cr
                 ValueExpression ve = attr.getValueExpression(ctx, type);
                 UIComponent cc = (UIComponent) instance;
                 assert (UIComponent.isCompositeComponent(cc));
+                Map<String, Object> attrs = cc.getAttributes();
+                BeanInfo componentMetadata = (BeanInfo) attrs.get(UIComponent.BEANINFO_KEY);
+                BeanDescriptor desc = componentMetadata.getBeanDescriptor();
+                Collection<String> attributesWithDeclaredDefaultValues = (Collection<String>)
+                        desc.getValue(UIComponent.ATTRS_WITH_DECLARED_DEFAULT_VALUES);
+                if (null != attributesWithDeclaredDefaultValues &&
+                        attributesWithDeclaredDefaultValues.contains(name) && attrs.containsKey(name)) {
+                    // It is necessary to remove the value from the attribute
+                    // map because the ELexpression transparancy doesn't know
+                    // about the value's existence.
+                    attrs.remove(name);
+                }
                 cc.setValueExpression(name, ve);
 
             }
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/CompositeComponentTagLibrary.java b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/CompositeComponentTagLibrary.java
index 0bfaacf..061f4f7 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/CompositeComponentTagLibrary.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/CompositeComponentTagLibrary.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -54,7 +58,9 @@
 
 package com.sun.faces.facelets.tag.jsf;
 
-import com.sun.faces.facelets.tag.TagLibraryImpl;
+import com.sun.faces.config.WebConfiguration;
+import com.sun.faces.facelets.tag.composite.CompositeLibrary;
+import static com.sun.faces.config.WebConfiguration.BooleanWebContextInitParameter.EnableMissingResourceLibraryDetection;
 import com.sun.faces.util.FacesLogger;
 
 import javax.faces.FacesException;
@@ -70,7 +76,7 @@ import java.util.logging.Level;
 import java.util.logging.Logger;
 
 
-public class CompositeComponentTagLibrary extends TagLibraryImpl {
+public class CompositeComponentTagLibrary extends LazyTagLibrary {
     
     private static final Logger LOGGER = FacesLogger.FACELETS_COMPONENT.getLogger();
 
@@ -80,6 +86,7 @@ public class CompositeComponentTagLibrary extends TagLibraryImpl {
             throw new NullPointerException();
         }
         this.ns = ns;
+        this.init();
     }
     
     public CompositeComponentTagLibrary(String ns, String compositeLibraryName) {
@@ -92,11 +99,19 @@ public class CompositeComponentTagLibrary extends TagLibraryImpl {
             throw new NullPointerException();
         }
         this.compositeLibraryName = compositeLibraryName;
+        this.init();
         
     }
+
+    private void init() {
+        WebConfiguration webconfig = WebConfiguration.getInstance();
+        enableMissingResourceLibraryDetection =
+                webconfig.isOptionEnabled(EnableMissingResourceLibraryDetection);
+    }
     
     private String ns = null;
     private String compositeLibraryName;
+    private boolean enableMissingResourceLibraryDetection;
 
     public boolean containsTagHandler(String ns, String localName) {
         boolean result = false;
@@ -108,12 +123,22 @@ public class CompositeComponentTagLibrary extends TagLibraryImpl {
             InputStream componentStream = null;
             try {
                 componentStream = ccResource.getInputStream();
+                result = (componentStream != null);
             } catch (IOException ex) {
                 if (LOGGER.isLoggable(Level.SEVERE)) {
                     LOGGER.log(Level.SEVERE, ex.toString(), ex);
                 }
+            } finally {
+                try {
+                    if (result) {
+                        componentStream.close();
+                    }
+                } catch (IOException ex) {
+                    if (LOGGER.isLoggable(Level.SEVERE)) {
+                        LOGGER.log(Level.SEVERE, ex.toString(), ex);
+                    }
+                } 
             }
-            result = (componentStream != null);
         }
         return result || super.containsTagHandler(ns, localName);
     }
@@ -151,15 +176,25 @@ public class CompositeComponentTagLibrary extends TagLibraryImpl {
     }
     
     private static final String NS_COMPOSITE_COMPONENT_PREFIX = 
-            "http://java.sun.com/jsf/composite/";
+            CompositeLibrary.Namespace + "/";
+    private static final String XMLNS_COMPOSITE_COMPONENT_PREFIX = 
+            CompositeLibrary.XMLNSNamespace + "/";
     
+    @Override
     public boolean tagLibraryForNSExists(String toTest) {
         boolean result = false;
         
         String resourceId = null;
         if (null != (resourceId = getCompositeComponentLibraryName(toTest))) {
-            result = FacesContext.getCurrentInstance().getApplication().
-                    getResourceHandler().libraryExists(resourceId);
+            if (enableMissingResourceLibraryDetection) {
+                result = FacesContext.getCurrentInstance().getApplication().
+                        getResourceHandler().libraryExists(resourceId);
+            } else {
+                if (LOGGER.isLoggable(Level.FINE)) {
+                    LOGGER.log(Level.FINE, "Skipping call to libraryExists().  Please set context-param {0} to true to verify if library {1} actually exists", new Object[]{EnableMissingResourceLibraryDetection.getQualifiedName(), toTest});
+                }
+                result = true;
+            }
         }
         
         return result;
@@ -171,13 +206,25 @@ public class CompositeComponentTagLibrary extends TagLibraryImpl {
 
         Resource scriptComponentResource = context.getApplication().getViewHandler().getViewDeclarationLanguage(context, context.getViewRoot().getViewId()).getScriptComponentResource(context, 
                 componentResource);
+        InputStream is = null;
         try {
-            result = (null != scriptComponentResource) && (null != scriptComponentResource.getInputStream());
+            is = scriptComponentResource.getInputStream();
+            result = (null != scriptComponentResource) && (null != is);
         } catch (IOException ex) {
             if (LOGGER.isLoggable(Level.SEVERE)) {
                 LOGGER.log(Level.SEVERE, ex.toString(), ex);
             }
-        }
+        } finally {
+                try {
+                    if (null != is) {
+                        is.close();
+                    }
+                } catch (IOException ex) {
+                    if (LOGGER.isLoggable(Level.SEVERE)) {
+                        LOGGER.log(Level.SEVERE, ex.toString(), ex);
+                    }
+                } 
+            }
         
         return result;
     }
@@ -195,6 +242,12 @@ public class CompositeComponentTagLibrary extends TagLibraryImpl {
                     resourceId = toTest.substring(resourceIdIndex);
                 }
             }
+            if (-1 != (resourceIdIndex = toTest.indexOf(XMLNS_COMPOSITE_COMPONENT_PREFIX))) {
+                resourceIdIndex += XMLNS_COMPOSITE_COMPONENT_PREFIX.length();
+                if (resourceIdIndex < toTest.length()) {
+                    resourceId = toTest.substring(resourceIdIndex);
+                }
+            }
         }
         
         return resourceId;
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/ConverterTagHandlerDelegateImpl.java b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/ConverterTagHandlerDelegateImpl.java
index c4cb3a4..31ac89b 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/ConverterTagHandlerDelegateImpl.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/ConverterTagHandlerDelegateImpl.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -40,7 +44,6 @@ import com.sun.faces.facelets.tag.MetaRulesetImpl;
 import com.sun.faces.util.Util;
 
 import javax.el.ValueExpression;
-import javax.faces.application.Resource;
 import javax.faces.component.UIComponent;
 import javax.faces.component.ValueHolder;
 import javax.faces.context.FacesContext;
@@ -69,6 +72,7 @@ public class ConverterTagHandlerDelegateImpl extends TagHandlerDelegate implemen
         if (parent == null || !(parent.getParent() == null)) {
             return;
         }
+        ComponentSupport.copyPassthroughAttributes(ctx, parent, owner.getTag());
         if (parent instanceof ValueHolder) {
             owner.applyAttachedObject(ctx.getFacesContext(), parent);
         } else if (UIComponent.isCompositeComponent(parent)) {
@@ -98,7 +102,13 @@ public class ConverterTagHandlerDelegateImpl extends TagHandlerDelegate implemen
         TagAttribute attr = owner.getTagAttribute("for");
         
         if (null != attr) {
-            result = attr.getValue();
+            if (attr.isLiteral()) {
+                result = attr.getValue();
+            } else {
+                FacesContext context = FacesContext.getCurrentInstance();
+                FaceletContext ctx = (FaceletContext) context.getAttributes().get(FaceletContext.FACELET_CONTEXT_KEY);
+                result = (String)attr.getValueExpression(ctx, String.class).getValue(ctx);
+            }
         }
         return result;
         
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/EditableValueHolderRule.java b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/EditableValueHolderRule.java
index 787ba11..3fc1b1e 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/EditableValueHolderRule.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/EditableValueHolderRule.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/FacesComponentTagLibrary.java b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/FacesComponentTagLibrary.java
new file mode 100644
index 0000000..b5934e2
--- /dev/null
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/FacesComponentTagLibrary.java
@@ -0,0 +1,161 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.facelets.tag.jsf;
+
+import com.sun.faces.application.ApplicationAssociate;
+import com.sun.faces.application.annotation.FacesComponentUsage;
+import com.sun.faces.util.FacesLogger;
+import com.sun.faces.util.Util;
+import java.util.List;
+import java.util.logging.Logger;
+import javax.faces.FacesException;
+import javax.faces.component.FacesComponent;
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.view.facelets.TagConfig;
+import javax.faces.view.facelets.TagHandler;
+
+public class FacesComponentTagLibrary extends LazyTagLibrary {
+    
+    private static final Logger LOGGER = FacesLogger.FACELETS_COMPONENT.getLogger();
+
+    private ApplicationAssociate appAss;
+    
+    
+    public FacesComponentTagLibrary(String ns) {
+        super(ns);
+        if (null == ns) {
+            throw new NullPointerException();
+        }
+        appAss = ApplicationAssociate.getCurrentInstance();
+    }
+
+
+    @Override
+    public boolean containsTagHandler(String ns, String localName) {
+        Util.notNull("namespace", ns);
+        Util.notNull("tagName", localName);
+        
+        if (!ns.equals(this.getNamespace())) {
+            return false;
+        }
+        
+        // Check the cache maintained by our superclass...
+        boolean containsTagHandler = super.containsTagHandler(ns, localName);
+        if (!containsTagHandler) {
+            FacesComponentUsage matchingFacesComponentUsage = 
+                    findFacesComponentUsageForLocalName(ns, localName);
+            containsTagHandler = null != matchingFacesComponentUsage;
+            
+        }
+        return containsTagHandler;
+    }
+    
+    private FacesComponentUsage findFacesComponentUsageForLocalName(String ns, String localName) {
+        FacesComponentUsage result = null;
+        
+        Util.notNull("namespace", ns);
+        Util.notNull("tagName", localName);
+        
+        if (!ns.equals(this.getNamespace())) {
+            return result;
+        }
+        List<FacesComponentUsage> componentsForNamespace = appAss.getComponentsForNamespace(ns);
+        String tagName;
+        for (FacesComponentUsage cur: componentsForNamespace) {
+            FacesComponent curFacesComponent = cur.getAnnotation();
+            tagName = curFacesComponent.tagName();
+            // if the current entry has an explicitly declared tagName...
+            if (null != tagName && 0 < tagName.length()) {
+                // compare it to the argument tagName
+                if (localName.equals(tagName)) {
+                    result = cur;
+                    break;
+                }
+            } else if (null != tagName) {
+                tagName = cur.getTarget().getSimpleName();
+                tagName = tagName.substring(0, 1).toLowerCase() + tagName.substring(1);
+                if (localName.equals(tagName)) {
+                    result = cur;
+                    break;
+                }
+            }
+        }
+        
+        return result;
+    }
+
+    @Override
+    public TagHandler createTagHandler(String ns, String localName, TagConfig tag) throws FacesException {
+        assert(containsTagHandler(ns, localName));
+        TagHandler result = super.createTagHandler(ns, localName, tag);
+        if (null == result) {
+            FacesComponentUsage facesComponentUsage = 
+                    findFacesComponentUsageForLocalName(ns, localName);
+            String componentType = facesComponentUsage.getAnnotation().value();
+
+            if (null == componentType || 0 == componentType.length()) {
+                componentType = facesComponentUsage.getTarget().getSimpleName();
+                componentType = Character.toLowerCase(componentType.charAt(0)) + 
+                        componentType.substring(1);
+            }
+            
+            UIComponent throwAwayComponent = FacesContext.getCurrentInstance().
+                    getApplication().createComponent(componentType);
+            String rendererType = throwAwayComponent.getRendererType();
+            super.addComponent(localName, componentType, rendererType);
+            result = super.createTagHandler(ns, localName, tag);
+        }
+        return result;
+    }
+
+    @Override
+    public boolean tagLibraryForNSExists(String ns) {
+        boolean result = false;
+        List<FacesComponentUsage> componentsForNamespace = appAss.getComponentsForNamespace(ns);
+        
+        result = !componentsForNamespace.isEmpty();
+        
+        return result;
+    }
+
+    
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/IterationIdManager.java b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/IterationIdManager.java
new file mode 100644
index 0000000..6178703
--- /dev/null
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/IterationIdManager.java
@@ -0,0 +1,71 @@
+package com.sun.faces.facelets.tag.jsf;
+
+import java.util.Deque;
+import java.util.HashSet;
+import java.util.LinkedList;
+import java.util.Set;
+
+import javax.faces.view.facelets.FaceletContext;
+
+public class IterationIdManager {
+    
+    /**
+     * Registers a literal Id with this manager and determines whether the same Id has been seen before
+     * @param ctx Facelets Context
+     * @param id literal Id
+     * @return true if the same Id is already being tracked, false otherwise
+     */
+    public static boolean registerLiteralId(FaceletContext ctx, String id) {
+        Set<String> trackedIds = _getStackOfTrackedIds(ctx).peek();
+        
+        if (trackedIds == null) {
+            return false;
+        }
+        
+        if (trackedIds.contains(id)) {
+            return true;
+        }
+        
+        trackedIds.add(id);
+        return false;
+    }
+    
+    public static void startIteration(FaceletContext ctx) {
+        Deque<Set<String>> stack = _getStackOfTrackedIds(ctx);
+        
+        // Reuse existing set of Ids if we are already tracking them for the parent iteration
+        Set<String> current = stack.peek();
+        
+        if (current == null) {
+           current = new HashSet<String>();
+        }
+        
+        stack.push(current);
+    }
+    
+    public static void stopIteration(FaceletContext ctx) {
+        _getStackOfTrackedIds(ctx).pop();
+    }
+    
+    public static void startNamingContainer(FaceletContext ctx) {
+        // Push null on the stack to suspend Id tracking
+        _getStackOfTrackedIds(ctx).push(null);
+    }
+    
+    public static void stopNamingContainer(FaceletContext ctx) {
+        _getStackOfTrackedIds(ctx).pop();
+    }
+    
+    
+    private static Deque<Set<String>> _getStackOfTrackedIds(FaceletContext ctx) {
+        Deque<Set<String>> stack = (Deque<Set<String>>)ctx.getAttribute(_STACK_OF_TRACKED_IDS);
+        if (stack == null) {
+            stack = new LinkedList<Set<String>>();
+            ctx.setAttribute(_STACK_OF_TRACKED_IDS, stack);
+        }
+        return stack;
+    }
+        
+    
+    private static final String _STACK_OF_TRACKED_IDS = "com.sun.faces.facelets.tag.js._TRACKED_IDS"; 
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/LazyTagLibrary.java b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/LazyTagLibrary.java
new file mode 100644
index 0000000..326c3e5
--- /dev/null
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/LazyTagLibrary.java
@@ -0,0 +1,53 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.facelets.tag.jsf;
+
+import com.sun.faces.facelets.tag.TagLibraryImpl;
+
+public abstract class LazyTagLibrary extends TagLibraryImpl {
+
+    public LazyTagLibrary(String namespace) {
+        super(namespace);
+    }
+
+    public abstract boolean tagLibraryForNSExists(String toTest);
+    
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/PassThroughAttributeLibrary.java b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/PassThroughAttributeLibrary.java
new file mode 100644
index 0000000..66e22f1
--- /dev/null
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/PassThroughAttributeLibrary.java
@@ -0,0 +1,55 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.facelets.tag.jsf;
+
+import com.sun.faces.facelets.tag.AbstractTagLibrary;
+
+
+public final class PassThroughAttributeLibrary extends AbstractTagLibrary {
+
+    public final static String Namespace = "http://xmlns.jcp.org/jsf/passthrough";
+
+    public final static PassThroughAttributeLibrary Instance = new PassThroughAttributeLibrary();
+
+    public PassThroughAttributeLibrary() {
+        super(Namespace);
+    }
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/PassThroughElementComponentHandler.java b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/PassThroughElementComponentHandler.java
new file mode 100644
index 0000000..decdbf5
--- /dev/null
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/PassThroughElementComponentHandler.java
@@ -0,0 +1,107 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ *
+ */
+
+package com.sun.faces.facelets.tag.jsf;
+
+import com.sun.faces.util.Util;
+import java.util.Map;
+import javax.faces.FacesException;
+import javax.faces.component.UIComponent;
+import javax.faces.render.Renderer;
+import javax.faces.view.facelets.ComponentConfig;
+import javax.faces.view.facelets.ComponentHandler;
+import javax.faces.view.facelets.FaceletContext;
+import javax.faces.view.facelets.TagAttribute;
+import javax.faces.view.facelets.TagException;
+
+public class PassThroughElementComponentHandler extends ComponentHandler {
+    
+    private final TagAttribute elementName;
+    
+    protected final TagAttribute getRequiredPassthroughAttribute(String localName)
+            throws TagException {
+        TagAttribute attr = this.tag.getAttributes().get(PassThroughAttributeLibrary.Namespace, localName);
+        if (attr == null) {
+            throw new TagException(this.tag, "Attribute '" + localName
+                    + "' is required");
+        }
+        return attr;
+    }
+    
+    
+
+    public PassThroughElementComponentHandler(ComponentConfig config) {
+        super(config);
+        
+        elementName = this.getRequiredPassthroughAttribute(Renderer.PASSTHROUGH_RENDERER_LOCALNAME_KEY);
+    }
+    
+    @Override
+    public UIComponent createComponent(FaceletContext ctx) {
+        UIComponent result = null;
+        try {
+            Class clazz = Util.loadClass("com.sun.faces.component.PassthroughElement", this);
+            result = (UIComponent)clazz.newInstance();
+        } catch (ClassNotFoundException cnfe) {
+            throw new FacesException(cnfe);
+        } catch (IllegalAccessException iae) {
+            throw new FacesException(iae);
+        } catch (InstantiationException ie) {
+            throw new FacesException(ie);
+        }
+        
+        return result;
+    }
+
+    @Override
+    public void onComponentCreated(FaceletContext ctx, UIComponent c, UIComponent parent) {
+        if (parent.getParent() == null) {
+            Map<String,Object> passThroughAttrs = c.getPassThroughAttributes(true);
+            Object attrValue;
+            attrValue = (this.elementName.isLiteral()) ? this.elementName.getValue(ctx) : this.elementName.getValueExpression(ctx, Object.class);
+            passThroughAttrs.put(Renderer.PASSTHROUGH_RENDERER_LOCALNAME_KEY, attrValue);
+        }
+        
+    }
+    
+    
+    
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/PassThroughElementLibrary.java b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/PassThroughElementLibrary.java
new file mode 100644
index 0000000..95188d5
--- /dev/null
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/PassThroughElementLibrary.java
@@ -0,0 +1,58 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.facelets.tag.jsf;
+
+import com.sun.faces.facelets.tag.AbstractTagLibrary;
+
+
+public final class PassThroughElementLibrary extends AbstractTagLibrary {
+
+    public final static String Namespace = "http://xmlns.jcp.org/jsf";
+
+    public final static PassThroughElementLibrary Instance = new PassThroughElementLibrary();
+
+    public PassThroughElementLibrary() {
+        super(Namespace);
+        
+        this.addComponent("element", "javax.faces.Panel",
+                "javax.faces.passthrough.Element", PassThroughElementComponentHandler.class);
+    }
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/RenderPropertyRule.java b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/RenderPropertyRule.java
index 2b5be78..aae3dab 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/RenderPropertyRule.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/RenderPropertyRule.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -112,4 +116,4 @@ public final class RenderPropertyRule extends MetaRule {
         return null;
     }
 
-}
\ No newline at end of file
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/TagHandlerDelegateFactoryImpl.java b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/TagHandlerDelegateFactoryImpl.java
index 3d80bf3..ffa493e 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/TagHandlerDelegateFactoryImpl.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/TagHandlerDelegateFactoryImpl.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -45,6 +49,9 @@ import javax.faces.view.facelets.*;
 
 public class TagHandlerDelegateFactoryImpl extends TagHandlerDelegateFactory {
 
+    public TagHandlerDelegateFactoryImpl() {
+    }
+
     @Override
     public TagHandlerDelegate createComponentHandlerDelegate(ComponentHandler owner) {
         if (owner instanceof StylesheetResourceHandler) {
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/ValidatorTagHandlerDelegateImpl.java b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/ValidatorTagHandlerDelegateImpl.java
index 266197a..1d7b5ec 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/ValidatorTagHandlerDelegateImpl.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/ValidatorTagHandlerDelegateImpl.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -77,6 +81,7 @@ public class ValidatorTagHandlerDelegateImpl extends TagHandlerDelegate implemen
     public void apply(FaceletContext ctx, UIComponent parent)
     throws IOException {
 
+        ComponentSupport.copyPassthroughAttributes(ctx, parent, owner.getTag());
         if (wrapping) {
             applyWrapping(ctx, parent);
         } else {
@@ -134,8 +139,20 @@ public class ValidatorTagHandlerDelegateImpl extends TagHandlerDelegate implemen
             throw new TagException(owner.getTag(), "No Validator was created");
         }
         owner.setAttributes(ctx, v);
-        evh.addValidator(v);
-
+        
+        Validator[] validators = evh.getValidators();
+        boolean found = false;
+        
+        for (Validator validator : validators) {
+            if (validator.getClass().equals(v.getClass())) {
+                found = true;
+                break;
+            }
+        }
+        
+        if (!found) {
+            evh.addValidator(v);
+        }
     }
 
 
@@ -145,7 +162,13 @@ public class ValidatorTagHandlerDelegateImpl extends TagHandlerDelegate implemen
         TagAttribute attr = owner.getTagAttribute("for");
         
         if (null != attr) {
-            result = attr.getValue();
+            if (attr.isLiteral()) {
+                result = attr.getValue();
+            } else {
+                FacesContext context = FacesContext.getCurrentInstance();
+                FaceletContext ctx = (FaceletContext) context.getAttributes().get(FaceletContext.FACELET_CONTEXT_KEY);
+                result = (String)attr.getValueExpression(ctx, String.class).getValue(ctx);
+            }
         }
         return result;
         
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/ValueHolderRule.java b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/ValueHolderRule.java
index 930000a..726db39 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/ValueHolderRule.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/ValueHolderRule.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -65,7 +69,7 @@ import javax.faces.view.facelets.*;
 /**
  * 
  * @author Jacob Hookom
- * @version $Id: ValueHolderRule.java 8384 2010-05-17 14:59:38Z jdlee $
+ * @version $Id: ValueHolderRule.java 8641 2010-10-04 20:54:50Z edburns $
  */
 final class ValueHolderRule extends MetaRule {
 
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/core/ActionListenerHandler.java b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/core/ActionListenerHandler.java
index 598e5ba..9ce9352 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/core/ActionListenerHandler.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/core/ActionListenerHandler.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -52,15 +56,11 @@
  * limitations under the License.
  */
 
-
 package com.sun.faces.facelets.tag.jsf.core;
 
-import com.sun.faces.facelets.tag.TagHandlerImpl;
-import com.sun.faces.facelets.tag.jsf.CompositeComponentTagHandler;
 import com.sun.faces.facelets.util.ReflectionUtil;
 
 import javax.el.ValueExpression;
-import javax.faces.application.Resource;
 import javax.faces.component.ActionSource;
 import javax.faces.component.UIComponent;
 import javax.faces.context.FacesContext;
@@ -69,7 +69,6 @@ import javax.faces.event.ActionEvent;
 import javax.faces.event.ActionListener;
 import javax.faces.view.ActionSource2AttachedObjectHandler;
 import javax.faces.view.facelets.*;
-import java.io.IOException;
 import java.io.Serializable;
 
 /**
@@ -82,7 +81,7 @@ import java.io.Serializable;
  * @see javax.faces.event.ActionListener
  * @see javax.faces.component.ActionSource
  */
-public final class ActionListenerHandler extends TagHandlerImpl
+public final class ActionListenerHandler extends ActionListenerHandlerBase
       implements ActionSource2AttachedObjectHandler {
 
     private final static class LazyActionListener
@@ -93,7 +92,6 @@ public final class ActionListenerHandler extends TagHandlerImpl
         private final String type;
         private final ValueExpression binding;
 
-
         public LazyActionListener(String type, ValueExpression binding) {
             this.type = type;
             this.binding = binding;
@@ -131,7 +129,9 @@ public final class ActionListenerHandler extends TagHandlerImpl
 
     private final TagAttribute binding;
 
-    private final String listenerType;
+    private String listenerType;
+
+    private final TagAttribute typeAttribute;
 
     /**
      * @param config
@@ -139,58 +139,25 @@ public final class ActionListenerHandler extends TagHandlerImpl
     public ActionListenerHandler(TagConfig config) {
         super(config);
         this.binding = this.getAttribute("binding");
-        TagAttribute type = this.getAttribute("type");
-        if (type != null) {
-            if (!type.isLiteral()) {
-                throw new TagAttributeException(type,
-                                                "Must be a literal class name of type ActionListener");
+        this.typeAttribute = this.getAttribute("type");
+        if (null != this.typeAttribute) {
+            String stringType = null;
+            if (!this.typeAttribute.isLiteral()) {
+                FacesContext context = FacesContext.getCurrentInstance();
+                FaceletContext ctx = (FaceletContext) context.getAttributes().get(FaceletContext.FACELET_CONTEXT_KEY);
+                stringType = (String) this.typeAttribute.getValueExpression(ctx, String.class).getValue(ctx);
             } else {
-                // test it out
-                try {
-                    ReflectionUtil.forName(type.getValue());
-                } catch (ClassNotFoundException e) {
-                    throw new TagAttributeException(type,
-                                                    "Couldn't qualify ActionListener", e);
-                }
+                stringType = this.typeAttribute.getValue();
             }
-            this.listenerType = type.getValue();
+            checkType(stringType);
+            this.listenerType = stringType;
         } else {
             this.listenerType = null;
         }
     }
 
-    /*
-     * (non-Javadoc)
-     * 
-     * @see com.sun.facelets.FaceletHandler#apply(com.sun.facelets.FaceletContext,
-     *      javax.faces.component.UIComponent)
-     */
-    public void apply(FaceletContext ctx, UIComponent parent)
-          throws IOException {
-        if (null == parent || !(ComponentHandler.isNew(parent))) {
-            return;
-        }
-        if (parent instanceof ActionSource) {
-            applyAttachedObject(ctx.getFacesContext(), parent);
-        } else if (parent.getAttributes()
-              .containsKey(Resource.COMPONENT_RESOURCE_KEY)) {
-            if (null == getFor()) {
-                // PENDING(): I18N
-                throw new TagException(this.tag,
-                                       "actionListener tags nested within composite components must have a non-null \"for\" attribute");
-            }
-            // Allow the composite component to know about the target
-            // component.
-            CompositeComponentTagHandler.getAttachedObjectHandlers(parent)
-                  .add(this);
-
-        } else {
-            throw new TagException(this.tag,
-                                   "Parent is not of type ActionSource, type is: "
-                                   + parent);
-        }
-    }
 
+    @Override
     public void applyAttachedObject(FacesContext context, UIComponent parent) {
         FaceletContext ctx = (FaceletContext) context.getAttributes()
               .get(FaceletContext.FACELET_CONTEXT_KEY);
@@ -204,15 +171,12 @@ public final class ActionListenerHandler extends TagHandlerImpl
     }
 
 
-    public String getFor() {
-        String result = null;
-        TagAttribute attr = this.getAttribute("for");
-
-        if (null != attr) {
-            result = attr.getValue();
+    private void checkType(String type) {
+        try {
+            ReflectionUtil.forName(type);
+        } catch (ClassNotFoundException e) {
+            throw new TagAttributeException(typeAttribute,
+                "Couldn't qualify ActionListener", e);
         }
-        return result;
-
     }
-
 }
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/core/ActionListenerHandlerBase.java b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/core/ActionListenerHandlerBase.java
new file mode 100644
index 0000000..aab27f8
--- /dev/null
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/core/ActionListenerHandlerBase.java
@@ -0,0 +1,145 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ *
+ *
+ * This file incorporates work covered by the following copyright and
+ * permission notice:
+ *
+ * Copyright 2005-2007 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.sun.faces.facelets.tag.jsf.core;
+
+import com.sun.faces.facelets.tag.TagHandlerImpl;
+import com.sun.faces.facelets.tag.jsf.CompositeComponentTagHandler;
+
+import javax.faces.application.Resource;
+import javax.faces.component.ActionSource;
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.view.ActionSource2AttachedObjectHandler;
+import javax.faces.view.facelets.*;
+import java.io.IOException;
+
+/**
+ * Register an ActionListener instance on the UIComponent associated with the
+ * closest parent UIComponent custom action. <p/> See <a target="_new"
+ * href="http://java.sun.com/j2ee/javaserverfaces/1.1_01/docs/tlddocs/f/actionListener.html">tag
+ * documentation</a>.
+ *
+ * @author Jacob Hookom
+ * @see javax.faces.event.ActionListener
+ * @see javax.faces.component.ActionSource
+ */
+public abstract class ActionListenerHandlerBase extends TagHandlerImpl
+      implements ActionSource2AttachedObjectHandler {
+
+    /**
+     * @param config
+     */
+    public ActionListenerHandlerBase(TagConfig config) {
+        super(config);
+    }
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see com.sun.facelets.FaceletHandler#apply(com.sun.facelets.FaceletContext,
+     *      javax.faces.component.UIComponent)
+     */
+    public void apply(FaceletContext ctx, UIComponent parent)
+          throws IOException {
+        if (null == parent || !(ComponentHandler.isNew(parent))) {
+            return;
+        }
+
+        if (parent instanceof ActionSource) {
+            applyAttachedObject(ctx.getFacesContext(), parent);
+        } else if (parent.getAttributes()
+              .containsKey(Resource.COMPONENT_RESOURCE_KEY)) {
+            if (null == getFor()) {
+                // PENDING(): I18N
+                throw new TagException(this.tag,
+                                       "actionListener tags nested within composite components must have a non-null \"for\" attribute");
+            }
+            // Allow the composite component to know about the target
+            // component.
+            CompositeComponentTagHandler.getAttachedObjectHandlers(parent)
+                  .add(this);
+
+        } else {
+            throw new TagException(this.tag,
+                                   "Parent is not of type ActionSource, type is: "
+                                   + parent);
+        }
+    }
+
+    public abstract void applyAttachedObject(FacesContext context, UIComponent parent);
+
+
+    public String getFor() {
+        String result = null;
+        TagAttribute attr = this.getAttribute("for");
+
+        if (null != attr) {
+            if (attr.isLiteral()) {
+                result = attr.getValue();
+            } else {
+                FacesContext context = FacesContext.getCurrentInstance();
+                FaceletContext ctx = (FaceletContext) context.getAttributes().get(FaceletContext.FACELET_CONTEXT_KEY);
+                result = (String)attr.getValueExpression(ctx, String.class).getValue(ctx);
+            }
+        }
+        return result;
+
+    }
+
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/core/AjaxHandler.java b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/core/AjaxHandler.java
index 5b9514a..024e6d9 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/core/AjaxHandler.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/core/AjaxHandler.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -52,7 +56,6 @@
  * limitations under the License.
  */
 
-
 package com.sun.faces.facelets.tag.jsf.core;
 
 import com.sun.faces.renderkit.RenderKitUtils;
@@ -88,10 +91,14 @@ import java.util.TreeSet;
 
 
 /**
- * <p class="changed_added_2_0">Enable one or more components in the view
+ * <p class="changed_added_2_0"><span class="changed_modified_2_2">Enable</span>
+ * one or more components in the view
  * to perform Ajax operations.  This tag handler must create an instance
  * of {@link javax.faces.component.behavior.AjaxBehavior} using the tag attribute
- * values.  If this tag is nested within a single 
+ * values.  <div class="changed_modified_2_2">The <code>events</code> attribute for
+ * this tag that can be a <code>ValueExpression</code> must be evaluated at tag
+ * execution time since the event name is used in the process of <code>Behavior</code>
+ * creation.</div>  If this tag is nested within a single
  * {@link ClientBehaviorHolder} component:
  * <ul>
  * <li>If the <code>events</code> attribute value is not specified, 
@@ -133,7 +140,9 @@ public final class AjaxHandler extends TagHandlerImpl implements BehaviorHolderA
     private final TagAttribute onerror;
     private final TagAttribute disabled;
     private final TagAttribute immediate;
+    private final TagAttribute resetValues;
     private final TagAttribute listener;
+    private final TagAttribute delay;
 
     private final boolean wrapping;
 
@@ -149,7 +158,9 @@ public final class AjaxHandler extends TagHandlerImpl implements BehaviorHolderA
         this.onerror = this.getAttribute("onerror");
         this.disabled = this.getAttribute("disabled");
         this.immediate = this.getAttribute("immediate");
+        this.resetValues = this.getAttribute("resetValues");
         this.listener = this.getAttribute("listener");
+        this.delay = this.getAttribute("delay");
 
         this.wrapping = isWrapping();
     }
@@ -188,7 +199,9 @@ public final class AjaxHandler extends TagHandlerImpl implements BehaviorHolderA
      * @see javax.faces.view.BehaviorHolderAttachedObjectHandler#getEventName()
      */
     public String getEventName() {
-        return (this.event != null) ? this.event.getValue() : null;
+        FacesContext context = FacesContext.getCurrentInstance();
+        FaceletContext ctx = (FaceletContext) context.getAttributes().get(FaceletContext.FACELET_CONTEXT_KEY);
+        return (this.event != null) ? this.event.getValue(ctx) : null;
     }
 
     // Tests whether the <f:ajax> is wrapping other tags.
@@ -338,8 +351,10 @@ public final class AjaxHandler extends TagHandlerImpl implements BehaviorHolderA
         setBehaviorAttribute(ctx, behavior, this.onerror, String.class);
         setBehaviorAttribute(ctx, behavior, this.disabled, Boolean.class);
         setBehaviorAttribute(ctx, behavior, this.immediate, Boolean.class);
+        setBehaviorAttribute(ctx, behavior, this.resetValues, Boolean.class);
         setBehaviorAttribute(ctx, behavior, this.execute, Object.class);
         setBehaviorAttribute(ctx, behavior, this.render, Object.class);
+        setBehaviorAttribute(ctx, behavior, this.delay, String.class);
 
         if (null != listener) {
             behavior.addAjaxBehaviorListener(new AjaxBehaviorListenerImpl(
@@ -445,6 +460,9 @@ class AjaxBehaviorListenerImpl implements AjaxBehaviorListener, Serializable {
         } catch (MethodNotFoundException mnfe) {
             // Attempt to call public void method(AjaxBehaviorEvent event)
             oneArgListener.invoke(elContext, new Object[]{event});
+        } catch (IllegalArgumentException iae) {
+            // Attempt to call public void method(AjaxBehaviorEvent event)
+            oneArgListener.invoke(elContext, new Object[]{event});
         }
     }
 }
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/core/AttributeHandler.java b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/core/AttributeHandler.java
index 4d7a02f..00f97ac 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/core/AttributeHandler.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/core/AttributeHandler.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/core/AttributesHandler.java b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/core/AttributesHandler.java
new file mode 100644
index 0000000..eeb7872
--- /dev/null
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/core/AttributesHandler.java
@@ -0,0 +1,122 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ *
+ *
+ * This file incorporates work covered by the following copyright and
+ * permission notice:
+ *
+ * Copyright 2005-2007 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.sun.faces.facelets.tag.jsf.core;
+
+import com.sun.faces.facelets.tag.TagHandlerImpl;
+
+import javax.faces.component.UIComponent;
+import javax.faces.view.facelets.FaceletContext;
+import javax.faces.view.facelets.TagAttribute;
+import javax.faces.view.facelets.TagConfig;
+import javax.faces.view.facelets.TagException;
+import java.io.IOException;
+import java.util.Map;
+import javax.el.ValueExpression;
+
+public final class AttributesHandler extends TagHandlerImpl 
+    implements javax.faces.view.facelets.AttributeHandler {
+
+    private final TagAttribute value;
+
+    public AttributesHandler(TagConfig config) {
+        super(config);
+        this.value = this.getRequiredAttribute("value");
+    }
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see com.sun.facelets.FaceletHandler#apply(com.sun.facelets.FaceletContext,
+     *      javax.faces.component.UIComponent)
+     */
+    public void apply(FaceletContext ctx, UIComponent parent)
+            throws IOException {
+        if (parent == null) {
+            throw new TagException(this.tag, "Parent UIComponent was null");
+        }
+
+        // only process if the parent is new to the tree
+        if (parent.getParent() == null) {
+            
+            Map<String, Object> tagAttrs = (Map<String, Object>) this.value.getObject(ctx, Map.class);
+            for (Map.Entry<String, Object> cur : tagAttrs.entrySet()) {
+                String n = cur.getKey();
+                Object curVal = cur.getValue();
+                if (!parent.getAttributes().containsKey(n)) {
+                    
+                    if (curVal instanceof ValueExpression) {
+                        parent.setValueExpression(n, (ValueExpression) curVal);
+                    } else {
+                        parent.getAttributes().put(n, curVal);
+                    }
+                    
+                }
+            }
+            
+            
+        }
+    }
+
+
+    // javax.faces.view.facelets.tag.AttributeHandler.getAttributeName()
+    // implementation.
+    public String getAttributeName(FaceletContext ctxt) {
+        return "value";
+    }
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/core/ConvertDateTimeHandler.java b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/core/ConvertDateTimeHandler.java
index f90703a..c5c0744 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/core/ConvertDateTimeHandler.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/core/ConvertDateTimeHandler.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -52,7 +56,6 @@
  * limitations under the License.
  */
 
-
 package com.sun.faces.facelets.tag.jsf.core;
 
 import com.sun.faces.facelets.tag.jsf.ComponentSupport;
@@ -71,7 +74,7 @@ import java.util.TimeZone;
  * documentation</a>.
  * 
  * @author Jacob Hookom
- * @version $Id: ConvertDateTimeHandler.java 8384 2010-05-17 14:59:38Z jdlee $
+ * @version $Id: ConvertDateTimeHandler.java 10320 2012-07-24 03:05:00Z mriem $
  */
 public final class ConvertDateTimeHandler extends ConverterHandler {
 
@@ -104,7 +107,6 @@ public final class ConvertDateTimeHandler extends ConverterHandler {
      * Returns a new DateTimeConverter
      * 
      * @see DateTimeConverter
-     * @see com.sun.faces.facelets.tag.jsf.ConverterHandler#createConverter(com.sun.faces.facelets.FaceletContext)
      */
     protected Converter createConverter(FaceletContext ctx)
             throws FacesException, ELException, FaceletException {
@@ -114,8 +116,6 @@ public final class ConvertDateTimeHandler extends ConverterHandler {
 
     /**
      * Implements tag spec, see taglib documentation.
-     * 
-     * @see com.sun.faces.facelets.tag.MetaTagHandler#setAttributes(com.sun.faces.facelets.FaceletContext, Object)
      */
     @Override
     public void setAttributes(FaceletContext ctx, Object obj) {
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/core/ConvertDelegateHandler.java b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/core/ConvertDelegateHandler.java
index ac582f0..9f78391 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/core/ConvertDelegateHandler.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/core/ConvertDelegateHandler.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -52,7 +56,6 @@
  * limitations under the License.
  */
 
-
 package com.sun.faces.facelets.tag.jsf.core;
 
 import javax.el.ELException;
@@ -84,7 +87,6 @@ public final class ConvertDelegateHandler extends ConverterHandler {
      * Uses the specified "converterId" to pull an instance from the Application
      * 
      * @see javax.faces.application.Application#createComponent(java.lang.String)
-     * @see com.sun.faces.facelets.tag.jsf.ConverterHandler#createConverter(com.sun.faces.facelets.FaceletContext)
      */
     protected Converter createConverter(FaceletContext ctx)
             throws FacesException, ELException, FaceletException {
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/core/ConvertNumberHandler.java b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/core/ConvertNumberHandler.java
index eb3539a..3cbb1ad 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/core/ConvertNumberHandler.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/core/ConvertNumberHandler.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -69,7 +73,7 @@ import javax.faces.view.facelets.*;
  * documentation</a>.
  * 
  * @author Jacob Hookom
- * @version $Id: ConvertNumberHandler.java 8384 2010-05-17 14:59:38Z jdlee $
+ * @version $Id: ConvertNumberHandler.java 10337 2012-07-25 18:51:59Z mriem $
  */
 public final class ConvertNumberHandler extends ConverterHandler {
 
@@ -87,7 +91,6 @@ public final class ConvertNumberHandler extends ConverterHandler {
      * Returns a new NumberConverter
      * 
      * @see NumberConverter
-     * @see com.sun.faces.facelets.tag.jsf.ConverterHandler#createConverter(com.sun.faces.facelets.FaceletContext)
      */
     protected Converter createConverter(FaceletContext ctx)
             throws FacesException, ELException, FaceletException {
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/core/CoreLibrary.java b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/core/CoreLibrary.java
index 3acd2e9..0642ec6 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/core/CoreLibrary.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/core/CoreLibrary.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -52,7 +56,6 @@
  * limitations under the License.
  */
 
-
 package com.sun.faces.facelets.tag.jsf.core;
 
 import com.sun.faces.facelets.tag.AbstractTagLibrary;
@@ -60,6 +63,7 @@ import com.sun.faces.facelets.tag.AbstractTagLibrary;
 import javax.faces.component.UIParameter;
 import javax.faces.component.UISelectItem;
 import javax.faces.component.UISelectItems;
+import javax.faces.component.UIViewAction;
 import javax.faces.component.UIViewParameter;
 import javax.faces.convert.DateTimeConverter;
 import javax.faces.convert.NumberConverter;
@@ -71,23 +75,34 @@ import javax.faces.validator.*;
  * documentation</a>.
  *
  * @author Jacob Hookom
- * @version $Id: CoreLibrary.java 8384 2010-05-17 14:59:38Z jdlee $
+ * @version $Id: CoreLibrary.java 13288 2014-05-28 15:02:00Z edburns $
  */
 public final class CoreLibrary extends AbstractTagLibrary {
 
-    public final static String Namespace = "http://java.sun.com/jsf/core";
+    public final static String Namespace =    "http://java.sun.com/jsf/core";
+    public final static String XMLNSNamespace = "http://xmlns.jcp.org/jsf/core";
 
     public final static CoreLibrary Instance = new CoreLibrary();
 
     public CoreLibrary() {
-        super(Namespace);
-
+        this(Namespace);
+    }
+    
+    public CoreLibrary(String namespace) {
+        super(namespace);
+        
         this.addTagHandler("actionListener", ActionListenerHandler.class);
 
         this.addTagHandler("ajax", AjaxHandler.class);
 
         this.addTagHandler("attribute", AttributeHandler.class);
 
+        this.addTagHandler("attributes", AttributesHandler.class);
+
+        this.addTagHandler("passThroughAttribute", PassThroughAttributeHandler.class);
+
+        this.addTagHandler("passThroughAttributes", PassThroughAttributesHandler.class);
+
         this.addConverter("convertDateTime", DateTimeConverter.CONVERTER_ID, ConvertDateTimeHandler.class);
 
         this.addConverter("convertNumber", NumberConverter.CONVERTER_ID, ConvertNumberHandler.class);
@@ -102,7 +117,11 @@ public final class CoreLibrary extends AbstractTagLibrary {
 
         this.addTagHandler("loadBundle", LoadBundleHandler.class);
 
+        this.addTagHandler("resetValues", ResetValuesHandler.class);
+
         this.addComponent("viewParam", UIViewParameter.COMPONENT_TYPE, null);
+        
+        this.addComponent("viewAction", UIViewAction.COMPONENT_TYPE, null);
 
         this.addComponent("param", UIParameter.COMPONENT_TYPE, null);
         
@@ -136,6 +155,6 @@ public final class CoreLibrary extends AbstractTagLibrary {
         this.addTagHandler("view", ViewHandler.class);
         
         this.addComponent("verbatim", "javax.faces.HtmlOutputText",
-                          "javax.faces.Text", VerbatimHandler.class);
+                          "javax.faces.Text", VerbatimHandler.class);       
     }
 }
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/core/EventHandler.java b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/core/EventHandler.java
index f1388ee..f97ee8c 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/core/EventHandler.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/core/EventHandler.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -125,6 +129,9 @@ class DeclarativeSystemEventListener implements ComponentSystemEventListener, Se
         } catch (MethodNotFoundException mnfe) {
             // Attempt to call public void method(ComponentSystemEvent event)
             oneArgListener.invoke(elContext, new Object[]{event});
+        } catch (IllegalArgumentException iae) {
+            // Attempt to call public void method(ComponentSystemEvent event)
+            oneArgListener.invoke(elContext, new Object[]{event});
         }
     }
 
@@ -161,4 +168,4 @@ class DeclarativeSystemEventListener implements ComponentSystemEventListener, Se
                                 : 0);
         return result;
     }
-}
\ No newline at end of file
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/core/FacetHandler.java b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/core/FacetHandler.java
index dd21b1e..cefcc65 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/core/FacetHandler.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/core/FacetHandler.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -52,7 +56,6 @@
  * limitations under the License.
  */
 
-
 package com.sun.faces.facelets.tag.jsf.core;
 
 import com.sun.faces.facelets.tag.TagHandlerImpl;
@@ -71,7 +74,7 @@ import java.io.IOException;
  * documentation</a>.
  *
  * @author Jacob Hookom
- * @version $Id: FacetHandler.java 8384 2010-05-17 14:59:38Z jdlee $
+ * @version $Id: FacetHandler.java 8641 2010-10-04 20:54:50Z edburns $
  */
 public final class FacetHandler extends TagHandlerImpl
     implements javax.faces.view.facelets.FacetHandler {
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/core/LoadBundleHandler.java b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/core/LoadBundleHandler.java
index 37cfc2e..1402b42 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/core/LoadBundleHandler.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/core/LoadBundleHandler.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -52,7 +56,6 @@
  * limitations under the License.
  */
 
-
 package com.sun.faces.facelets.tag.jsf.core;
 
 import com.sun.faces.facelets.tag.TagHandlerImpl;
@@ -76,7 +79,7 @@ import java.util.*;
  * documentation</a>.
  * 
  * @author Jacob Hookom
- * @version $Id: LoadBundleHandler.java 8384 2010-05-17 14:59:38Z jdlee $
+ * @version $Id: LoadBundleHandler.java 10340 2012-07-26 14:35:52Z mriem $
  */
 public final class LoadBundleHandler extends TagHandlerImpl {
 
@@ -210,8 +213,6 @@ public final class LoadBundleHandler extends TagHandlerImpl {
 
     /**
      * See taglib documentation.
-     * 
-     * @see com.sun.faces.facelets.FaceletHandler#apply(com.sun.faces.facelets.FaceletContext, javax.faces.component.UIComponent)
      */
     public void apply(FaceletContext ctx, UIComponent parent)
             throws IOException {
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/core/MetadataHandler.java b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/core/MetadataHandler.java
index e4cd9dd..032480e 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/core/MetadataHandler.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/core/MetadataHandler.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -108,6 +112,8 @@ public class MetadataHandler extends TagHandlerImpl {
                 panelGroup.getChildren().add(facetComponent);
                 root.getFacets().put(UIViewRoot.METADATA_FACET_NAME, panelGroup);
                 facetComponent = panelGroup;
+            }
+            if (null != facetComponent) {
                 facetComponent.setId(UIViewRoot.METADATA_FACET_NAME);
             }
         }
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/core/PassThroughAttributeHandler.java b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/core/PassThroughAttributeHandler.java
new file mode 100644
index 0000000..169eec5
--- /dev/null
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/core/PassThroughAttributeHandler.java
@@ -0,0 +1,129 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ *
+ *
+ * This file incorporates work covered by the following copyright and
+ * permission notice:
+ *
+ * Copyright 2005-2007 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.sun.faces.facelets.tag.jsf.core;
+
+import com.sun.faces.facelets.tag.TagHandlerImpl;
+import java.io.IOException;
+import java.util.Map;
+import javax.faces.component.UIComponent;
+import javax.faces.view.facelets.FaceletContext;
+import javax.faces.view.facelets.TagAttribute;
+import javax.faces.view.facelets.TagConfig;
+import javax.faces.view.facelets.TagException;
+
+/**
+ * Sets the specified name and attribute on the parent UIComponent. If the
+ * "value" specified is not a literal, it will instead set the ValueExpression
+ * on the UIComponent.
+ * <p />
+ * See <a target="_new"
+ * href="http://java.sun.com/j2ee/javaserverfaces/1.1_01/docs/tlddocs/f/attribute.html">tag
+ * documentation</a>.
+ * 
+ * @see javax.faces.component.UIComponent#getAttributes()
+ * @see javax.faces.component.UIComponent#setValueExpression(java.lang.String,
+ *      javax.el.ValueExpression)
+ * @author Jacob Hookom
+ */
+public final class PassThroughAttributeHandler extends TagHandlerImpl 
+    implements javax.faces.view.facelets.AttributeHandler {
+
+    private final TagAttribute name;
+
+    private final TagAttribute value;
+
+    /**
+     * @param config
+     */
+    public PassThroughAttributeHandler(TagConfig config) {
+        super(config);
+        this.name = this.getRequiredAttribute("name");
+        this.value = this.getRequiredAttribute("value");
+    }
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see com.sun.facelets.FaceletHandler#apply(com.sun.facelets.FaceletContext,
+     *      javax.faces.component.UIComponent)
+     */
+    public void apply(FaceletContext ctx, UIComponent parent)
+            throws IOException {
+        if (parent == null) {
+            throw new TagException(this.tag, "Parent UIComponent was null");
+        }
+
+        // only process if the parent is new to the tree
+        if (parent.getParent() == null) {
+            Map<String,Object> passThroughAttrs = parent.getPassThroughAttributes(true);
+            String attrName;
+            Object attrValue;
+            attrName = this.name.getValue(ctx);
+            attrValue = (this.value.isLiteral()) ? this.value.getValue(ctx) : this.value.getValueExpression(ctx, Object.class);
+            passThroughAttrs.put(attrName, attrValue);
+        }
+    }
+
+
+    // javax.faces.view.facelets.tag.AttributeHandler.getAttributeName()
+    // implementation.
+    public String getAttributeName(FaceletContext ctxt) {
+        return this.name.getValue(ctxt);
+    }
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/core/PassThroughAttributesHandler.java b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/core/PassThroughAttributesHandler.java
new file mode 100644
index 0000000..3949771
--- /dev/null
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/core/PassThroughAttributesHandler.java
@@ -0,0 +1,103 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ *
+ *
+ * This file incorporates work covered by the following copyright and
+ * permission notice:
+ *
+ * Copyright 2005-2007 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.sun.faces.facelets.tag.jsf.core;
+
+import com.sun.faces.facelets.tag.TagHandlerImpl;
+
+import javax.faces.component.UIComponent;
+import javax.faces.view.facelets.FaceletContext;
+import javax.faces.view.facelets.TagAttribute;
+import javax.faces.view.facelets.TagConfig;
+import javax.faces.view.facelets.TagException;
+import java.io.IOException;
+import java.util.Map;
+
+public final class PassThroughAttributesHandler extends TagHandlerImpl 
+    implements javax.faces.view.facelets.AttributeHandler {
+
+    private final TagAttribute value;
+
+    public PassThroughAttributesHandler(TagConfig config) {
+        super(config);
+        this.value = this.getRequiredAttribute("value");
+    }
+
+    public void apply(FaceletContext ctx, UIComponent parent)
+            throws IOException {
+        if (parent == null) {
+            throw new TagException(this.tag, "Parent UIComponent was null");
+        }
+
+        // only process if the parent is new to the tree
+        if (parent.getParent() == null) {
+            Map<String, Object> componentPassThroughAttrs = parent.getPassThroughAttributes(true);
+            Map<String, Object> tagPassThroughAttrs = (Map<String, Object>) this.value.getObject(ctx, Map.class);
+            for (Map.Entry<String, Object> cur : tagPassThroughAttrs.entrySet()) {
+                componentPassThroughAttrs.put(cur.getKey(), cur.getValue());
+            }
+        }
+    }
+
+
+    // javax.faces.view.facelets.tag.AttributeHandler.getAttributeName()
+    // implementation.
+    public String getAttributeName(FaceletContext ctxt) {
+        return "value";
+    }
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/core/PhaseListenerHandler.java b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/core/PhaseListenerHandler.java
index d7d1b1d..cda5b06 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/core/PhaseListenerHandler.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/core/PhaseListenerHandler.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -52,10 +56,8 @@
  * limitations under the License.
  */
 
-
 package com.sun.faces.facelets.tag.jsf.core;
 
-import com.sun.faces.application.view.FaceletViewHandlingStrategy;
 import com.sun.faces.facelets.tag.TagHandlerImpl;
 import com.sun.faces.facelets.tag.jsf.ComponentSupport;
 import com.sun.faces.facelets.util.ReflectionUtil;
@@ -173,24 +175,23 @@ public class PhaseListenerHandler extends TagHandlerImpl {
 
     private final String listenerType;
 
+    private final TagAttribute typeAttribute;
+
     public PhaseListenerHandler(TagConfig config) {
         super(config);
-        TagAttribute type = this.getAttribute("type");
         this.binding = this.getAttribute("binding");
-        if (type != null) {
-            if (!type.isLiteral()) {
-                throw new TagAttributeException(type,
-                                                "Must be a literal class name of type PhaseListener");
+        this.typeAttribute = this.getAttribute("type");
+        if (null != this.typeAttribute) {
+            String stringType = null;
+            if (!this.typeAttribute.isLiteral()) {
+                FacesContext context = FacesContext.getCurrentInstance();
+                FaceletContext ctx = (FaceletContext) context.getAttributes().get(FaceletContext.FACELET_CONTEXT_KEY);
+                stringType = (String) this.typeAttribute.getValueExpression(ctx, String.class).getValue(ctx);
             } else {
-                // test it out
-                try {
-                    ReflectionUtil.forName(type.getValue());
-                } catch (ClassNotFoundException e) {
-                    throw new TagAttributeException(type,
-                                                    "Couldn't qualify PhaseListener", e);
-                }
+                stringType = this.typeAttribute.getValue();
             }
-            this.listenerType = type.getValue();
+            checkType(stringType);
+            this.listenerType = stringType;
         } else {
             this.listenerType = null;
         }
@@ -210,17 +211,20 @@ public class PhaseListenerHandler extends TagHandlerImpl {
 
             PhaseListener pl = new LazyPhaseListener(this.listenerType, b);
 
-            // special handling for UIViewRoot since ComponentHandler.isNew()
-            // will always return true
-            if (parent instanceof UIViewRoot) {
-                List<PhaseListener> listeners = root.getPhaseListeners();
-                if (!listeners.contains(pl)) {
-                    root.addPhaseListener(pl);
-                }
-            } else {
+            List<PhaseListener> listeners = root.getPhaseListeners();
+            if (!listeners.contains(pl)) {
                 root.addPhaseListener(pl);
             }
         }
     }
 
+    private void checkType(String type) {
+        try {
+            ReflectionUtil.forName(type);
+        } catch (ClassNotFoundException e) {
+            throw new TagAttributeException(typeAttribute,
+                "Couldn't qualify ActionListener", e);
+        }
+    }
+
 }
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/core/ResetValuesHandler.java b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/core/ResetValuesHandler.java
new file mode 100644
index 0000000..bb5feee
--- /dev/null
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/core/ResetValuesHandler.java
@@ -0,0 +1,154 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ *
+ *
+ * This file incorporates work covered by the following copyright and
+ * permission notice:
+ *
+ * Copyright 2005-2007 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.sun.faces.facelets.tag.jsf.core;
+
+
+import javax.faces.component.ActionSource;
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.event.AbortProcessingException;
+import javax.faces.event.ActionEvent;
+import javax.faces.event.ActionListener;
+import javax.faces.view.ActionSource2AttachedObjectHandler;
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.regex.Pattern;
+import javax.faces.component.UIViewRoot;
+import javax.faces.view.facelets.FaceletContext;
+import javax.faces.view.facelets.TagAttribute;
+import javax.faces.view.facelets.TagConfig;
+
+public final class ResetValuesHandler extends ActionListenerHandlerBase
+      implements ActionSource2AttachedObjectHandler {
+    
+    private final TagAttribute render;
+
+    // Pattern used for execute/render string splitting
+    private static Pattern SPLIT_PATTERN = Pattern.compile(" ");
+    
+    
+    private final static class LazyActionListener
+          implements ActionListener, Serializable {
+        Collection<String> render;
+
+        private static final long serialVersionUID = -5676209243297546166L;
+
+        public LazyActionListener(Collection<String> render) {
+            this.render = new ArrayList<String>(render);
+        }
+
+        public void processAction(ActionEvent event)
+              throws AbortProcessingException {
+            FacesContext context = FacesContext.getCurrentInstance();
+            UIViewRoot root = context.getViewRoot();
+            root.resetValues(context, render);
+        }
+    }
+
+    /**
+     * @param config
+     */
+    public ResetValuesHandler(TagConfig config) {
+        super(config);
+        this.render = this.getAttribute("render");
+    }
+
+
+    @Override
+    public void applyAttachedObject(FacesContext context, UIComponent parent) {
+        FaceletContext ctx = (FaceletContext) context.getAttributes()
+              .get(FaceletContext.FACELET_CONTEXT_KEY);
+        ActionSource as = (ActionSource) parent;
+        String renderStr = (String) render.getObject(ctx, String.class);
+        ActionListener listener = new LazyActionListener(toList(renderStr));
+        as.addActionListener(listener);
+    }
+    
+    // Converts the specified object to a List<String>
+    private static List<String> toList(String strValue) {
+
+        
+        // If the value contains no spaces, we can optimize.
+        // This is worthwhile, since the execute/render lists
+        // will often only contain a single value.
+        if (strValue.indexOf(' ') == -1) {
+            return Collections.singletonList(strValue);
+        }
+        
+        // We're stuck splitting up the string.
+        String[] values = SPLIT_PATTERN.split(strValue);
+        if ((values == null) || (values.length == 0)) {
+            return null;
+        }
+        
+        // Note that we could create a Set out of the values if
+        // we care about removing duplicates.  However, the
+        // presence of duplicates does not real harm.  They will
+        // be consolidated during the partial view traversal.  So,
+        // just create an list - garbage in, garbage out.
+        return Collections.unmodifiableList(Arrays.asList(values));
+    
+    }
+    
+
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/core/SetPropertyActionListenerHandler.java b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/core/SetPropertyActionListenerHandler.java
index 452f9c5..82dd937 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/core/SetPropertyActionListenerHandler.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/core/SetPropertyActionListenerHandler.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -52,7 +56,6 @@
  * limitations under the License.
  */
 
-
 package com.sun.faces.facelets.tag.jsf.core;
 
 import com.sun.faces.facelets.el.LegacyValueBinding;
@@ -73,7 +76,6 @@ import javax.faces.event.ActionListener;
 import javax.faces.view.facelets.*;
 import java.io.IOException;
 import java.io.Serializable;
-import javax.faces.application.Resource;
 import javax.faces.view.ActionSource2AttachedObjectHandler;
 
 public class SetPropertyActionListenerHandler extends TagHandlerImpl implements ActionSource2AttachedObjectHandler {
@@ -144,7 +146,13 @@ public class SetPropertyActionListenerHandler extends TagHandlerImpl implements
         TagAttribute attr = this.getAttribute("for");
 
         if (null != attr) {
-            result = attr.getValue();
+            if (attr.isLiteral()) {
+                result = attr.getValue();
+            } else {
+                FacesContext context = FacesContext.getCurrentInstance();
+                FaceletContext ctx = (FaceletContext) context.getAttributes().get(FaceletContext.FACELET_CONTEXT_KEY);
+                result = (String)attr.getValueExpression(ctx, String.class).getValue(ctx);
+            }
         }
         return result;
     }
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/core/ValidateDelegateHandler.java b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/core/ValidateDelegateHandler.java
index a98192a..45749cd 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/core/ValidateDelegateHandler.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/core/ValidateDelegateHandler.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -63,7 +67,7 @@ import javax.faces.view.facelets.*;
  * documentation</a>.
  * 
  * @author Jacob Hookom
- * @version $Id: ValidateDelegateHandler.java 8384 2010-05-17 14:59:38Z jdlee $
+ * @version $Id: ValidateDelegateHandler.java 10356 2012-07-27 15:17:09Z mriem $
  */
 public final class ValidateDelegateHandler extends ValidatorHandler {
 
@@ -79,7 +83,6 @@ public final class ValidateDelegateHandler extends ValidatorHandler {
      * Validator instance from the Application.
      * 
      * @see javax.faces.application.Application#createValidator(java.lang.String)
-     * @see com.sun.faces.facelets.tag.jsf.ValidatorHandler#getValidator(com.sun.faces.facelets.FaceletContext)
      */
     protected String getValidator(FaceletContext ctx) {
         return ((validatorId != null) ? this.validatorId.getValue(ctx) : null);
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/core/ValueChangeListenerHandler.java b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/core/ValueChangeListenerHandler.java
index dd84aa0..e8b97a0 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/core/ValueChangeListenerHandler.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/core/ValueChangeListenerHandler.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -52,7 +56,6 @@
  * limitations under the License.
  */
 
-
 package com.sun.faces.facelets.tag.jsf.core;
 
 import com.sun.faces.facelets.tag.TagHandlerImpl;
@@ -131,24 +134,23 @@ public final class ValueChangeListenerHandler extends TagHandlerImpl implements
 
     private final String listenerType;
 
+    private final TagAttribute typeAttribute;
+
     public ValueChangeListenerHandler(TagConfig config) {
         super(config);
         this.binding = this.getAttribute("binding");
-        TagAttribute type = this.getAttribute("type");
-        if (type != null) {
-            if (!type.isLiteral()) {
-                throw new TagAttributeException(type,
-                                                "Must be a literal class name of type ValueChangeListener");
+        this.typeAttribute = this.getAttribute("type");
+        if (null != this.typeAttribute) {
+            String stringType = null;
+            if (!this.typeAttribute.isLiteral()) {
+                FacesContext context = FacesContext.getCurrentInstance();
+                FaceletContext ctx = (FaceletContext) context.getAttributes().get(FaceletContext.FACELET_CONTEXT_KEY);
+                stringType = (String) this.typeAttribute.getValueExpression(ctx, String.class).getValue(ctx);
             } else {
-                // test it out
-                try {
-                    ReflectionUtil.forName(type.getValue());
-                } catch (ClassNotFoundException e) {
-                    throw new TagAttributeException(type,
-                                                    "Couldn't qualify ValueChangeListener", e);
-                }
+                stringType = this.typeAttribute.getValue();
             }
-            this.listenerType = type.getValue();
+            checkType(stringType);
+            this.listenerType = stringType;
         } else {
             this.listenerType = null;
         }
@@ -156,8 +158,6 @@ public final class ValueChangeListenerHandler extends TagHandlerImpl implements
 
     /**
      * See taglib documentation.
-     *
-     * @see com.sun.faces.facelets.FaceletHandler#apply(com.sun.faces.facelets.FaceletContext, javax.faces.component.UIComponent)
      */
     public void apply(FaceletContext ctx, UIComponent parent)
             throws IOException {
@@ -195,11 +195,28 @@ public final class ValueChangeListenerHandler extends TagHandlerImpl implements
         TagAttribute attr = this.getAttribute("for");
 
         if (null != attr) {
-            result = attr.getValue();
+            if (attr.isLiteral()) {
+                result = attr.getValue();
+            } else {
+                FacesContext context = FacesContext.getCurrentInstance();
+                FaceletContext ctx = (FaceletContext) context.getAttributes().get(FaceletContext.FACELET_CONTEXT_KEY);
+                result = (String)attr.getValueExpression(ctx, String.class).getValue(ctx);
+            }
         }
         return result;
 
     }
+
+    private void checkType(String type) {
+        try {
+            ReflectionUtil.forName(type);
+        } catch (ClassNotFoundException e) {
+            throw new TagAttributeException(typeAttribute,
+                "Couldn't qualify ActionListener", e);
+        }
+    }
+
+
         
 
 }
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/core/VerbatimHandler.java b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/core/VerbatimHandler.java
index 9fee796..a10a8cc 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/core/VerbatimHandler.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/core/VerbatimHandler.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -52,7 +56,6 @@
  * limitations under the License.
  */
 
-
 package com.sun.faces.facelets.tag.jsf.core;
 
 import com.sun.faces.facelets.tag.TagHandlerImpl;
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/core/ViewHandler.java b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/core/ViewHandler.java
index 4eaf6d6..5f1486a 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/core/ViewHandler.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/core/ViewHandler.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -55,10 +59,10 @@
 package com.sun.faces.facelets.tag.jsf.core;
 
 import com.sun.faces.RIConstants;
-import com.sun.faces.context.StateContext;
 import com.sun.faces.facelets.tag.TagHandlerImpl;
 import com.sun.faces.facelets.tag.jsf.ComponentSupport;
 
+import com.sun.faces.util.FacesLogger;
 import javax.el.MethodExpression;
 import javax.faces.component.UIComponent;
 import javax.faces.component.UIViewRoot;
@@ -67,7 +71,14 @@ import javax.faces.view.facelets.FaceletContext;
 import javax.faces.view.facelets.TagAttribute;
 import javax.faces.view.facelets.TagConfig;
 import java.io.IOException;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Locale;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.faces.application.ProjectStage;
 import javax.faces.context.FacesContext;
+import javax.faces.view.facelets.TagAttributeException;
 
 /**
  * Container for all JavaServer Faces core and custom component actions used on
@@ -76,9 +87,11 @@ import javax.faces.context.FacesContext;
  * documentation</a>.
  * 
  * @author Jacob Hookom
- * @version $Id: ViewHandler.java 8384 2010-05-17 14:59:38Z jdlee $
+ * @version $Id: ViewHandler.java 12782 2014-01-22 21:13:16Z mriem $
  */
 public final class ViewHandler extends TagHandlerImpl {
+    
+    private static final Logger LOGGER = FacesLogger.TAGLIB.getLogger();
 
     private final static Class[] LISTENER_SIG = new Class[] { PhaseEvent.class };
 
@@ -93,6 +106,13 @@ public final class ViewHandler extends TagHandlerImpl {
     private final TagAttribute beforePhase;
 
     private final TagAttribute afterPhase;
+    
+    private final TagAttribute transientFlag;
+    
+    /**
+     * Stores the contracts tag attribute.
+     */
+    private final TagAttribute contracts;
 
     /**
      * @param config
@@ -109,22 +129,18 @@ public final class ViewHandler extends TagHandlerImpl {
         testForNull = this.getAttribute("afterPhase");
         this.afterPhase = (null == testForNull) ?
                          this.getAttribute("afterPhaseListener") : testForNull;
+        this.contracts = this.getAttribute("contracts");
+        this.transientFlag = this.getAttribute("transient");
     }
 
     /**
      * See taglib documentation.
-     * 
-     * @see com.sun.faces.facelets.FaceletHandler#apply(com.sun.faces.facelets.FaceletContext, javax.faces.component.UIComponent)
      */
+    @Override
     public void apply(FaceletContext ctx, UIComponent parent)
             throws IOException {
         UIViewRoot root = ComponentSupport.getViewRoot(ctx, parent);
-        Object partialStateSavingVal = null;
         if (root != null) {
-            if (this.locale != null) {
-                root.setLocale(ComponentSupport.getLocale(ctx,
-                        this.locale));
-            }
             if (this.renderKitId != null) {
                 String v = this.renderKitId.getValue(ctx);
                 root.setRenderKitId(v);
@@ -135,7 +151,8 @@ public final class ViewHandler extends TagHandlerImpl {
             }
             if (this.encoding != null) {
                 String v = this.encoding.getValue(ctx);
-                ctx.getFacesContext().getAttributes().put("facelets.Encoding", v);
+                ctx.getFacesContext().getAttributes().put(RIConstants.FACELETS_ENCODING_KEY, v);
+                root.getAttributes().put(RIConstants.FACELETS_ENCODING_KEY, v);
             }
             if (this.beforePhase != null) {
                 MethodExpression m = this.beforePhase
@@ -147,12 +164,64 @@ public final class ViewHandler extends TagHandlerImpl {
                         .getMethodExpression(ctx, null, LISTENER_SIG);
                 root.setAfterPhaseListener(m);
             }
-            FacesContext context = ctx.getFacesContext();
-            if (StateContext.getStateContext(context).partialStateSaving((String)context.getAttributes().get(RIConstants.VIEWID_KEY_NAME))) {
-                root.markInitialState();
+
+            if (this.contracts != null) {
+                /*
+                 * JAVASERVERFACES-3139: We are relaxing when the contracts
+                 * attribute can be used. In Development mode we will still 
+                 * blurb a message that the user is not using it at the top
+                 * level, which could cause problems.
+                 */
+                if (ctx.getFacesContext().getAttributes().containsKey("com.sun.faces.uiCompositionCount") &&
+                        LOGGER.isLoggable(Level.INFO) && 
+                        ctx.getFacesContext().getApplication().getProjectStage().equals(ProjectStage.Development)) {
+                        LOGGER.log(Level.INFO, "f:view contracts attribute found, but not used at top level");
+                }
+                String contractsValue = this.contracts.getValue(ctx);
+                if (contractsValue != null) {
+                    List<String> contractList = Arrays.asList(contractsValue.split(","));
+                    ctx.getFacesContext().setResourceLibraryContracts(contractList);
+                }
+            }
+            
+            if (this.transientFlag != null) {
+                Boolean b = Boolean.valueOf(this.transientFlag.getValue(ctx));
+                root.setTransient(b);
             }
+
+            String viewId = root.getViewId();
+
+            // At this point in the lifecycle we should have a non-null/empty
+            // view id.  The partial state saving check below requires this.
+            assert(null != viewId);
+            assert(0 < viewId.length());
+
         }
 
+        /*
+         * Fixes https://java.net/jira/browse/JAVASERVERFACES-3021.
+         * 
+         * The rational behind moving this here is that we need to make sure
+         * we establish the locale in all cases.
+         */
+        if (this.locale != null && root != null) {
+            try {
+                root.setLocale(ComponentSupport.getLocale(ctx, this.locale));
+            } catch (TagAttributeException tae) {
+                Object result = this.locale.getObject(ctx);
+                if (null == result) {
+                    Locale l = Locale.getDefault();
+                    // Special case for bugdb 13582626
+                    if (LOGGER.isLoggable(Level.WARNING)) {
+                        LOGGER.log(Level.WARNING, 
+                                "Using {0} for locale because expression {1} returned null.", 
+                                new Object[]{l, this.locale.toString()});
+                    }
+                    root.setLocale(l);
+                }
+            }
+        }        
+
         this.nextHandler.apply(ctx, parent);
     }
 
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/html/AbstractHtmlLibrary.java b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/html/AbstractHtmlLibrary.java
index 29d9a73..53b9ccb 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/html/AbstractHtmlLibrary.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/html/AbstractHtmlLibrary.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/html/ComponentResourceDelegate.java b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/html/ComponentResourceDelegate.java
index 27e8a84..e074466 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/html/ComponentResourceDelegate.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/html/ComponentResourceDelegate.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/html/HtmlComponentHandler.java b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/html/HtmlComponentHandler.java
index aa368a4..8e75186 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/html/HtmlComponentHandler.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/html/HtmlComponentHandler.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -60,7 +64,7 @@ import javax.faces.view.facelets.MetaRuleset;
 
 /**
  * @author Jacob Hookom
- * @version $Id: HtmlComponentHandler.java 8384 2010-05-17 14:59:38Z jdlee $
+ * @version $Id: HtmlComponentHandler.java 8641 2010-10-04 20:54:50Z edburns $
  */
 public class HtmlComponentHandler extends ComponentHandler {
 
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/html/HtmlDecorator.java b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/html/HtmlDecorator.java
index 4b98fb3..90df2c7 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/html/HtmlDecorator.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/html/HtmlDecorator.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -52,7 +56,6 @@
  * limitations under the License.
  */
 
-
 package com.sun.faces.facelets.tag.jsf.html;
 
 import com.sun.faces.facelets.tag.TagAttributesImpl;
@@ -120,6 +123,11 @@ public final class HtmlDecorator implements TagDecorator {
                                 HtmlLibrary.Namespace, "commandButton", tag
                                         .getQName(), na);
                     }
+                    if ("file".equals(t)) {
+                        return new Tag(tag.getLocation(),
+                                HtmlLibrary.Namespace, "inputFile", tag
+                                        .getQName(), na);
+                    }
                 }
             }
         }
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/html/HtmlLibrary.java b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/html/HtmlLibrary.java
index 37da0e5..dd81d6d 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/html/HtmlLibrary.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/html/HtmlLibrary.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -60,13 +64,18 @@ package com.sun.faces.facelets.tag.jsf.html;
 public final class HtmlLibrary extends AbstractHtmlLibrary {
 
     public final static String Namespace = "http://java.sun.com/jsf/html";
+    public final static String XMLNSNamespace = "http://xmlns.jcp.org/jsf/html";
 
     public final static HtmlLibrary Instance = new HtmlLibrary();
 
     public HtmlLibrary() {
-        super(Namespace);
-
-        this.addHtmlComponent("body", "javax.faces.Output",
+        this(Namespace);
+    }
+    
+    public HtmlLibrary(String namespace) {
+        super(namespace);
+        
+        this.addHtmlComponent("body", "javax.faces.OutputBody",
                 "javax.faces.Body");
 
         this.addHtmlComponent("button", "javax.faces.HtmlOutcomeTargetButton",
@@ -92,6 +101,15 @@ public final class HtmlLibrary extends AbstractHtmlLibrary {
         this.addHtmlComponent("head", "javax.faces.Output",
                 "javax.faces.Head");
 
+        this.addHtmlComponent("html", "javax.faces.Output",
+                "javax.faces.Html");
+
+        this.addHtmlComponent("doctype", "javax.faces.Output",
+                "javax.faces.Doctype");
+
+        this.addHtmlComponent("inputFile", "javax.faces.HtmlInputFile",
+                "javax.faces.File");
+
         this.addHtmlComponent("inputHidden", "javax.faces.HtmlInputHidden",
                 "javax.faces.Hidden");
 
@@ -162,6 +180,9 @@ public final class HtmlLibrary extends AbstractHtmlLibrary {
 
         this.addHtmlComponent("selectOneRadio",
                 "javax.faces.HtmlSelectOneRadio", "javax.faces.Radio");
+
+        this.addHtmlComponent("title", "javax.faces.Output",
+                "javax.faces.Title");
     }
 
 }
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/html/ScriptResourceDelegate.java b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/html/ScriptResourceDelegate.java
index a6b91d0..d08f99d 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/html/ScriptResourceDelegate.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/html/ScriptResourceDelegate.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/html/ScriptResourceHandler.java b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/html/ScriptResourceHandler.java
index 37621e0..4a00c06 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/html/ScriptResourceHandler.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/html/ScriptResourceHandler.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/html/StylesheetResourceDelegate.java b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/html/StylesheetResourceDelegate.java
index b02d6c2..3eecc5b 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/html/StylesheetResourceDelegate.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/html/StylesheetResourceDelegate.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/html/StylesheetResourceHandler.java b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/html/StylesheetResourceHandler.java
index e59f28b..cfe6ca7 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/html/StylesheetResourceHandler.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/html/StylesheetResourceHandler.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/html/package.html b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/html/package.html
index 458cc26..17368c7 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/html/package.html
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jsf/html/package.html
@@ -1,9 +1,51 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
 <html>
 <head>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
 </head>
 <body bgcolor="white">
 Tag Library for <b><a target="_new" href="http://java.sun.com/j2ee/javaserverfaces/1.1_01/docs/tlddocs/h/tld-summary.html">http://java.sun.com/jsf/html</a></b>.
 See JSF HTML Tag Javadocs for attributes/functionality.
 </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jstl/core/CatchHandler.java b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jstl/core/CatchHandler.java
index cf90b6b..b5101b6 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jstl/core/CatchHandler.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jstl/core/CatchHandler.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jstl/core/ChooseHandler.java b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jstl/core/ChooseHandler.java
index 6ceb590..a262d8a 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jstl/core/ChooseHandler.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jstl/core/ChooseHandler.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jstl/core/ChooseOtherwiseHandler.java b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jstl/core/ChooseOtherwiseHandler.java
index 34a4251..87f8edf 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jstl/core/ChooseOtherwiseHandler.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jstl/core/ChooseOtherwiseHandler.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jstl/core/ChooseWhenHandler.java b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jstl/core/ChooseWhenHandler.java
index 5c02b56..db2e6ea 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jstl/core/ChooseWhenHandler.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jstl/core/ChooseWhenHandler.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -52,7 +56,6 @@
  * limitations under the License.
  */
 
-
 package com.sun.faces.facelets.tag.jstl.core;
 
 import com.sun.faces.facelets.tag.TagHandlerImpl;
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jstl/core/ForEachHandler.java b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jstl/core/ForEachHandler.java
index f24f37e..8f2fb2e 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jstl/core/ForEachHandler.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jstl/core/ForEachHandler.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -52,10 +56,12 @@
  * limitations under the License.
  */
 
-
 package com.sun.faces.facelets.tag.jstl.core;
 
 import com.sun.faces.facelets.tag.TagHandlerImpl;
+import com.sun.faces.facelets.tag.jsf.ComponentSupport;
+
+import com.sun.faces.facelets.tag.jsf.IterationIdManager;
 
 import javax.el.ValueExpression;
 import javax.el.VariableMapper;
@@ -183,6 +189,9 @@ public final class ForEachHandler extends TagHandlerImpl {
                 int mi = 0;
                 Object value = null;
                 int count = 0;
+                
+                IterationIdManager.startIteration(ctx);
+                
                 try {
                     boolean first = true;
                     while (i <= e && itr.hasNext()) {
@@ -194,7 +203,7 @@ public final class ForEachHandler extends TagHandlerImpl {
                             if (t || srcVE == null) {
                                 ctx.setAttribute(v, value);
                             } else {
-                                ve = this.getVarExpr(srcVE, src, value, i);
+                                ve = this.getVarExpr(srcVE, src, value, i, s);
                                 vars.setVariable(v, ve);
                             }
                         }
@@ -210,6 +219,7 @@ public final class ForEachHandler extends TagHandlerImpl {
                             }
                         }
 
+
                         // execute body
                         this.nextHandler.apply(ctx, parent);
 
@@ -231,73 +241,74 @@ public final class ForEachHandler extends TagHandlerImpl {
                     if (vs != null) {
                         vars.setVariable(vs, vsO);
                     }
+                    IterationIdManager.stopIteration(ctx);
                 }
             }
         }
     }
 
-    private final ValueExpression capture(String name, VariableMapper vars) {
+    private ValueExpression capture(String name, VariableMapper vars) {
         if (name != null) {
             return vars.setVariable(name, null);
         }
         return null;
     }
 
-    private final int getBegin(FaceletContext ctx) {
+    private int getBegin(FaceletContext ctx) {
         if (this.begin != null) {
             return this.begin.getInt(ctx);
         }
         return 0;
     }
 
-    private final int getEnd(FaceletContext ctx) {
+    private int getEnd(FaceletContext ctx) {
         if (this.end != null) {
             return this.end.getInt(ctx);
         }
         return Integer.MAX_VALUE - 1; //hotspot bug in the JVM
     }
 
-    private final int getStep(FaceletContext ctx) {
+    private int getStep(FaceletContext ctx) {
         if (this.step != null) {
             return this.step.getInt(ctx);
         }
         return 1;
     }
 
-    private final boolean getTransient(FaceletContext ctx) {
+    private boolean getTransient(FaceletContext ctx) {
         if (this.tranzient != null) {
             return this.tranzient.getBoolean(ctx);
         }
         return false;
     }
 
-    private final ValueExpression getVarExpr(ValueExpression ve, Object src,
-            Object value, int i) {
+    private ValueExpression getVarExpr(ValueExpression ve, Object src,
+            Object value, int i, int start) {
         if (src instanceof List || src.getClass().isArray()) {
             return new IndexedValueExpression(ve, i);
         } else if (src instanceof Map && value instanceof Map.Entry) {
             return new MappedValueExpression(ve, (Map.Entry) value);
         } else if (src instanceof Collection) {
-            return new IteratedValueExpression(ve, value);
+            return new IteratedValueExpression(ve, start, i);
         }
         throw new IllegalStateException("Cannot create VE for: " + src);
     }
 
-    private final String getVarName(FaceletContext ctx) {
+    private String getVarName(FaceletContext ctx) {
         if (this.var != null) {
             return this.var.getValue(ctx);
         }
         return null;
     }
 
-    private final String getVarStatusName(FaceletContext ctx) {
+    private String getVarStatusName(FaceletContext ctx) {
         if (this.varStatus != null) {
             return this.varStatus.getValue(ctx);
         }
         return null;
     }
 
-    private final Iterator toIterator(Object src) {
+    private Iterator toIterator(Object src) {
         if (src == null) {
             return null;
         } else if (src instanceof Collection) {
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jstl/core/IfHandler.java b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jstl/core/IfHandler.java
index 23b1a2e..8397b99 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jstl/core/IfHandler.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jstl/core/IfHandler.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -52,7 +56,6 @@
  * limitations under the License.
  */
 
-
 package com.sun.faces.facelets.tag.jstl.core;
 
 import com.sun.faces.facelets.tag.TagHandlerImpl;
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jstl/core/IndexedValueExpression.java b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jstl/core/IndexedValueExpression.java
index c391115..d8da6ab 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jstl/core/IndexedValueExpression.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jstl/core/IndexedValueExpression.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -52,7 +56,6 @@
  * limitations under the License.
  */
 
-
 package com.sun.faces.facelets.tag.jstl.core;
 
 import javax.el.ELContext;
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jstl/core/IteratedValueExpression.java b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jstl/core/IteratedValueExpression.java
index 2764a6d..d6752f3 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jstl/core/IteratedValueExpression.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jstl/core/IteratedValueExpression.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -52,10 +56,12 @@
  * limitations under the License.
  */
 
-
 package com.sun.faces.facelets.tag.jstl.core;
 
+import java.util.Collection;
+import java.util.Iterator;
 import javax.el.ELContext;
+import javax.el.ELException;
 import javax.el.PropertyNotWritableException;
 import javax.el.ValueExpression;
 
@@ -65,12 +71,13 @@ public final class IteratedValueExpression extends ValueExpression {
 
     private ValueExpression orig;
 
-    private Object value;
-
+    private int start;
+    private int index;
 
-    public IteratedValueExpression(ValueExpression orig, Object value) {
+    public IteratedValueExpression(ValueExpression orig, int start, int index) {
         this.orig = orig;
-        this.value = value;
+        this.start = start;
+        this.index = index;
     }
 
     /*
@@ -79,7 +86,29 @@ public final class IteratedValueExpression extends ValueExpression {
      * @see javax.el.ValueExpression#getValue(javax.el.ELContext)
      */
     public Object getValue(ELContext context) {
-        return value;
+        Collection collection = (Collection) orig.getValue(context);
+        Iterator iterator = collection.iterator();
+        Object result = null;
+        int i = start;
+        if (i != 0) {
+            while(i != 0) {
+                result = iterator.next();
+                if (!iterator.hasNext()) {
+                    throw new ELException("Unable to position start");
+                }
+                i--;
+            }
+        } else {
+            result = iterator.next();
+        }
+        while(i < index) {
+            if (!iterator.hasNext()) {
+                throw new ELException("Unable to get given value");
+            }
+            i++;
+            result = iterator.next();
+        }
+        return result;
     }
 
     /*
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jstl/core/IterationStatusExpression.java b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jstl/core/IterationStatusExpression.java
index 8f69425..e631e58 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jstl/core/IterationStatusExpression.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jstl/core/IterationStatusExpression.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -52,7 +56,6 @@
  * limitations under the License.
  */
 
-
 package com.sun.faces.facelets.tag.jstl.core;
 
 import com.sun.faces.facelets.tag.IterationStatus;
@@ -62,7 +65,7 @@ import javax.el.ValueExpression;
 
 /**
  * @author Jacob Hookom
- * @version $Id: IterationStatusExpression.java 8384 2010-05-17 14:59:38Z jdlee $
+ * @version $Id: IterationStatusExpression.java 12360 2013-08-07 21:28:56Z edburns $
  */
 public final class IterationStatusExpression extends ValueExpression {
 
@@ -135,15 +138,21 @@ public final class IterationStatusExpression extends ValueExpression {
         return this.toString();
     }
 
-    /*
-     * (non-Javadoc)
-     * 
-     * @see javax.el.Expression#equals(java.lang.Object)
-     */
+    @Override
     public boolean equals(Object obj) {
-        return this.status.equals(obj);
+        if (obj == null) {
+            return false;
+        }
+        if (getClass() != obj.getClass()) {
+            return false;
+        }
+        final IterationStatusExpression other = (IterationStatusExpression) obj;
+        if (this.status != other.status && (this.status == null || !this.status.equals(other.status))) {
+            return false;
+        }
+        return true;
     }
-
+    
     /*
      * (non-Javadoc)
      * 
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jstl/core/JstlCoreLibrary.java b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jstl/core/JstlCoreLibrary.java
index 0a58e43..1f5e0cc 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jstl/core/JstlCoreLibrary.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jstl/core/JstlCoreLibrary.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -51,37 +55,55 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-
-
 package com.sun.faces.facelets.tag.jstl.core;
 
 import com.sun.faces.facelets.tag.AbstractTagLibrary;
 
 /**
+ * The JSTL c library.
+ *
  * @author Jacob Hookom
  */
 public final class JstlCoreLibrary extends AbstractTagLibrary {
 
+    /**
+     * Stores the default namespace.
+     */
     public final static String Namespace = "http://java.sun.com/jsp/jstl/core";
+    public final static String IncorrectNamespace = "http://java.sun.com/jstl/core";
+    public final static String XMLNSNamespace = "http://xmlns.jcp.org/jsp/jstl/core";
 
-    public final static JstlCoreLibrary Instance = new JstlCoreLibrary();
-
+    /**
+     * Default constructor.
+     */
     public JstlCoreLibrary() {
         super(Namespace);
-
         this.addTagHandler("if", IfHandler.class);
-
         this.addTagHandler("forEach", ForEachHandler.class);
-
         this.addTagHandler("catch", CatchHandler.class);
-        
         this.addTagHandler("choose", ChooseHandler.class);
-        
         this.addTagHandler("when", ChooseWhenHandler.class);
-        
         this.addTagHandler("otherwise", ChooseOtherwiseHandler.class);
-        
         this.addTagHandler("set", SetHandler.class);
     }
 
+    /**
+     * Constructor.
+     *
+     * <p> This constructor is used to allow the namespace
+     * 'http://java.sun.com/jstl/core' to be used as another way to resolve to
+     * the JSTL c library. This is used for backwards compatibility. </p>
+     *
+     * @param namespace the namespace.
+     */
+    public JstlCoreLibrary(String namespace) {
+        super(namespace);
+        this.addTagHandler("if", IfHandler.class);
+        this.addTagHandler("forEach", ForEachHandler.class);
+        this.addTagHandler("catch", CatchHandler.class);
+        this.addTagHandler("choose", ChooseHandler.class);
+        this.addTagHandler("when", ChooseWhenHandler.class);
+        this.addTagHandler("otherwise", ChooseOtherwiseHandler.class);
+        this.addTagHandler("set", SetHandler.class);
+    }
 }
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jstl/core/JstlIterationStatus.java b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jstl/core/JstlIterationStatus.java
index 3ae1ed9..3610e10 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jstl/core/JstlIterationStatus.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jstl/core/JstlIterationStatus.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 2009-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jstl/core/MappedValueExpression.java b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jstl/core/MappedValueExpression.java
index c5959cc..3f70131 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jstl/core/MappedValueExpression.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jstl/core/MappedValueExpression.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -52,7 +56,6 @@
  * limitations under the License.
  */
 
-
 package com.sun.faces.facelets.tag.jstl.core;
 
 import javax.el.ELContext;
@@ -62,7 +65,7 @@ import java.util.Map;
 
 /**
  * @author Jacob Hookom
- * @version $Id: MappedValueExpression.java 8384 2010-05-17 14:59:38Z jdlee $
+ * @version $Id: MappedValueExpression.java 8641 2010-10-04 20:54:50Z edburns $
  */
 public final class MappedValueExpression extends ValueExpression {
 
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jstl/core/SetHandler.java b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jstl/core/SetHandler.java
index dfee66f..3809930 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jstl/core/SetHandler.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jstl/core/SetHandler.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -52,14 +56,12 @@
  * limitations under the License.
  */
 
-
 package com.sun.faces.facelets.tag.jstl.core;
 
 import com.sun.faces.facelets.tag.TagHandlerImpl;
 
 import javax.el.ValueExpression;
 import javax.faces.component.UIComponent;
-import javax.faces.event.PhaseId;
 import javax.faces.view.facelets.*;
 import java.io.IOException;
 import java.util.Iterator;
@@ -68,7 +70,7 @@ import java.util.Iterator;
  * Simplified implementation of c:set
  * 
  * @author Jacob Hookom
- * @version $Id: SetHandler.java 8384 2010-05-17 14:59:38Z jdlee $
+ * @version $Id: SetHandler.java 12550 2013-09-17 14:48:29Z mriem $
  */
 public class SetHandler extends TagHandlerImpl {
 
@@ -113,11 +115,6 @@ public class SetHandler extends TagHandlerImpl {
         // seem to enforce much in the way of this, so I edburns needs to check
         // with an authority on the matter, probabyl Kin-Man Chung
         
-        // If var is set, value must be set, otherwise an error is thrown
-        if (this.var != null && !valSet) {
-            throw new TagException(tag, "var set with null or empty value");
-        }
-
         ValueExpression veObj;
         ValueExpression lhs;
         String expr;
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jstl/fn/JstlFunction.java b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jstl/fn/JstlFunction.java
index 7364bcc..8cdbf4a 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jstl/fn/JstlFunction.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/jstl/fn/JstlFunction.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -52,7 +56,6 @@
  * limitations under the License.
  */
 
-
 package com.sun.faces.facelets.tag.jstl.fn;
 
 import java.lang.reflect.Array;
@@ -103,7 +106,6 @@ public final class JstlFunction {
             value = "";
         }
         StringBuilder b = new StringBuilder(value.length());
-        final char[] lookahead = { 'a', 'm', 'p', ';' };
         for (int i = 0, len = value.length(); i < len; i++) {
             char c = value.charAt(i);
             if (c == '<') {
@@ -115,16 +117,6 @@ public final class JstlFunction {
             } else if (c == '"') {
                 b.append(""");
             } else if (c == '&') {
-                boolean matched = true;
-                for (int j = 0, jlen = lookahead.length; j < jlen; j++) {
-                    if (lookahead[j] != value.charAt(i + (j + 1))) {
-                        matched = false;
-                        break;
-                    }
-                }
-                if (matched) {
-                    i += 4;
-                } 
                 b.append("&");
             } else {
                 b.append(c);
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/ui/ComponentRef.java b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/ui/ComponentRef.java
index 361bce8..f303fa1 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/ui/ComponentRef.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/ui/ComponentRef.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/ui/ComponentRefHandler.java b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/ui/ComponentRefHandler.java
index 4246447..b6afc70 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/ui/ComponentRefHandler.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/ui/ComponentRefHandler.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/ui/CompositionHandler.java b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/ui/CompositionHandler.java
index 9b54980..371f555 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/ui/CompositionHandler.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/ui/CompositionHandler.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -54,6 +58,7 @@
 
 package com.sun.faces.facelets.tag.ui;
 
+import com.sun.faces.config.WebConfiguration;
 import com.sun.faces.facelets.FaceletContextImplBase;
 import com.sun.faces.facelets.TemplateClient;
 import com.sun.faces.facelets.el.VariableMapperWrapper;
@@ -70,6 +75,7 @@ import java.io.IOException;
 import java.util.*;
 import java.util.logging.Level;
 import java.util.logging.Logger;
+import javax.faces.context.FacesContext;
 
 /**
  * @author Jacob Hookom
@@ -135,6 +141,16 @@ public final class CompositionHandler extends TagHandlerImpl implements
         FaceletContextImplBase ctx = (FaceletContextImplBase) ctxObj;
 
         if (this.template != null) {
+
+            FacesContext facesContext = ctx.getFacesContext();
+            Integer compositionCount = (Integer) facesContext.getAttributes().get("com.sun.faces.uiCompositionCount");
+            if (compositionCount == null) {
+                compositionCount = 1;
+            } else {
+                compositionCount++;
+            }
+            facesContext.getAttributes().put("com.sun.faces.uiCompositionCount", compositionCount);
+            
             VariableMapper orig = ctx.getVariableMapper();
             if (this.params != null) {
                 VariableMapper vm = new VariableMapperWrapper(orig);
@@ -147,7 +163,14 @@ public final class CompositionHandler extends TagHandlerImpl implements
             ctx.extendClient(this);
             String path = null;
             try {
-                path = this.template.getValue(ctx);                
+                path = this.template.getValue(ctx);
+                if (path.trim().length() == 0) {
+                    throw new TagAttributeException(this.tag, this.template, "Invalid path : " + path);
+                }
+                WebConfiguration webConfig = WebConfiguration.getInstance(); 
+                if (path.startsWith(webConfig.getOptionValue(WebConfiguration.WebContextInitParameter.WebAppContractsDirectory))) {
+                    throw new TagAttributeException(this.tag, this.template, "Invalid path, contract resources cannot be accessed this way : " + path);
+                }
                 ctx.includeFacelet(parent, path);
             } catch (IOException e) {
                 if (log.isLoggable(Level.FINE)) {
@@ -157,6 +180,15 @@ public final class CompositionHandler extends TagHandlerImpl implements
             } finally {
                 ctx.popClient(this);
                 ctx.setVariableMapper(orig);
+                
+                compositionCount = (Integer) facesContext.getAttributes().get("com.sun.faces.uiCompositionCount");
+                compositionCount--;
+                
+                if (compositionCount == 0) {
+                    facesContext.getAttributes().remove("com.sun.faces.uiCompositionCount");
+                } else {
+                    facesContext.getAttributes().put("com.sun.faces.uiCompositionCount", compositionCount);
+                }
             }
         } else {
             this.nextHandler.apply(ctx, parent);
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/ui/DecorateHandler.java b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/ui/DecorateHandler.java
index 3c50493..1cd4886 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/ui/DecorateHandler.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/ui/DecorateHandler.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -54,6 +58,7 @@
 
 package com.sun.faces.facelets.tag.ui;
 
+import com.sun.faces.config.WebConfiguration;
 import com.sun.faces.facelets.FaceletContextImplBase;
 import com.sun.faces.facelets.TemplateClient;
 import com.sun.faces.facelets.el.VariableMapperWrapper;
@@ -138,6 +143,13 @@ public final class DecorateHandler extends TagHandlerImpl implements TemplateCli
         String path = null;
         try {
             path = this.template.getValue(ctx);
+            if (path.trim().length() == 0) {
+                throw new TagAttributeException(this.tag, this.template, "Invalid path : " + path);
+            }
+            WebConfiguration webConfig = WebConfiguration.getInstance(); 
+            if (path.startsWith(webConfig.getOptionValue(WebConfiguration.WebContextInitParameter.WebAppContractsDirectory))) {
+                throw new TagAttributeException(this.tag, this.template, "Invalid path, contract resources cannot be accessed this way : " + path);
+            }
             ctx.includeFacelet(parent, path);
         } catch (IOException e) {
             if (log.isLoggable(Level.FINE)) {
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/ui/DefineHandler.java b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/ui/DefineHandler.java
index ec90ea0..008014d 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/ui/DefineHandler.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/ui/DefineHandler.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -57,9 +61,9 @@ package com.sun.faces.facelets.tag.ui;
 import com.sun.faces.facelets.tag.TagHandlerImpl;
 
 import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
 import javax.faces.view.facelets.FaceletContext;
 import javax.faces.view.facelets.TagAttribute;
-import javax.faces.view.facelets.TagAttributeException;
 import javax.faces.view.facelets.TagConfig;
 import java.io.IOException;
 
@@ -77,9 +81,12 @@ public final class DefineHandler extends TagHandlerImpl {
         super(config);
         TagAttribute attr = this.getRequiredAttribute("name");
         if (!attr.isLiteral()) {
-            throw new TagAttributeException(this.tag, attr, "Must be Literal");
+            FacesContext context = FacesContext.getCurrentInstance();
+            FaceletContext ctx = (FaceletContext) context.getAttributes().get(FaceletContext.FACELET_CONTEXT_KEY);
+            name = (String) attr.getValueExpression(ctx, String.class).getValue(ctx);
+        } else {
+            name = attr.getValue();
         }
-        this.name = attr.getValue();
     }
 
     /*
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/ui/IncludeHandler.java b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/ui/IncludeHandler.java
index 445b7ba..16cfc03 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/ui/IncludeHandler.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/ui/IncludeHandler.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -51,9 +55,9 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-
 package com.sun.faces.facelets.tag.ui;
 
+import com.sun.faces.config.WebConfiguration;
 import com.sun.faces.facelets.el.VariableMapperWrapper;
 import com.sun.faces.facelets.tag.TagHandlerImpl;
 import com.sun.faces.util.FacesLogger;
@@ -67,6 +71,7 @@ import javax.faces.view.facelets.TagConfig;
 import java.io.IOException;
 import java.util.logging.Level;
 import java.util.logging.Logger;
+import javax.faces.view.facelets.TagException;
 
 /**
  * @author Jacob Hookom
@@ -82,7 +87,18 @@ public final class IncludeHandler extends TagHandlerImpl {
      */
     public IncludeHandler(TagConfig config) {
         super(config);
-        this.src = this.getRequiredAttribute("src");
+        TagAttribute attr = null;
+        attr = this.getAttribute("src");
+        if (null == attr) {
+            attr = this.getAttribute("file");
+        }
+        if (null == attr) {
+            attr = this.getAttribute("page");
+        }
+        if (null == attr) {
+            throw new TagException(this.tag, "Attribute 'src', 'file' or 'page' is required");
+        }
+        this.src = attr;
     }
 
     /*
@@ -101,6 +117,10 @@ public final class IncludeHandler extends TagHandlerImpl {
         ctx.setVariableMapper(new VariableMapperWrapper(orig));
         try {
             this.nextHandler.apply(ctx, null);
+            WebConfiguration webConfig = WebConfiguration.getInstance();
+            if (path.startsWith(webConfig.getOptionValue(WebConfiguration.WebContextInitParameter.WebAppContractsDirectory))) {
+                throw new TagAttributeException(this.tag, this.src, "Invalid src, contract resources cannot be accessed this way : " + path);
+            }
             ctx.includeFacelet(parent, path);
         } catch (IOException e) {
             if (log.isLoggable(Level.FINE)) {
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/ui/InsertHandler.java b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/ui/InsertHandler.java
index d5b8e91..77344eb 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/ui/InsertHandler.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/ui/InsertHandler.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -59,9 +63,9 @@ import com.sun.faces.facelets.TemplateClient;
 import com.sun.faces.facelets.tag.TagHandlerImpl;
 
 import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
 import javax.faces.view.facelets.FaceletContext;
 import javax.faces.view.facelets.TagAttribute;
-import javax.faces.view.facelets.TagAttributeException;
 import javax.faces.view.facelets.TagConfig;
 import java.io.IOException;
 
@@ -80,9 +84,12 @@ public final class InsertHandler extends TagHandlerImpl implements TemplateClien
         TagAttribute attr = this.getAttribute("name");
         if (attr != null) {
             if (!attr.isLiteral()) {
-                throw new TagAttributeException(this.tag, attr, "Must be Literal");
+                FacesContext context = FacesContext.getCurrentInstance();
+                FaceletContext ctx = (FaceletContext) context.getAttributes().get(FaceletContext.FACELET_CONTEXT_KEY);
+                this.name = (String) attr.getValueExpression(ctx, String.class).getValue(ctx);
+            } else {
+                this.name = attr.getValue();
             }
-            this.name = attr.getValue();
         } else {
             this.name = null;
         }
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/ui/ParamHandler.java b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/ui/ParamHandler.java
index 6a6cbfc..d9e5173 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/ui/ParamHandler.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/ui/ParamHandler.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/ui/RepeatHandler.java b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/ui/RepeatHandler.java
index ebe5063..3f6ce9c 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/ui/RepeatHandler.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/ui/RepeatHandler.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -54,24 +58,37 @@
 
 package com.sun.faces.facelets.tag.ui;
 
+import com.sun.faces.util.FacesLogger;
 import javax.faces.component.UIComponent;
-import javax.faces.view.facelets.*;
 import java.beans.Introspector;
 import java.beans.PropertyDescriptor;
 import java.util.HashSet;
 import java.util.Map;
 import java.util.Set;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.faces.view.facelets.ComponentConfig;
+import javax.faces.view.facelets.ComponentHandler;
+import javax.faces.view.facelets.FaceletContext;
+import javax.faces.view.facelets.MetaRuleset;
+import javax.faces.view.facelets.Metadata;
+import javax.faces.view.facelets.TagAttribute;
 
 public class RepeatHandler extends ComponentHandler {
 
+    private static final Logger log = FacesLogger.FACELETS_COMPOSITION.getLogger();
+    
     public RepeatHandler(ComponentConfig config) {
         super(config);
     }
 
+    @Override
     protected MetaRuleset createMetaRuleset(Class type) {
         MetaRuleset meta = super.createMetaRuleset(type);
+        String myNamespace = this.tag.getNamespace();
 
-        if (!UILibrary.Namespace.equals(this.tag.getNamespace())) {
+        if ((!UILibrary.Namespace.equals(myNamespace)) &&
+            (!UILibrary.XMLNSNamespace.equals(myNamespace))) {
             meta.add(new TagMetaData(type));
         }
         
@@ -103,11 +120,14 @@ public class RepeatHandler extends ComponentHandler {
                     }
                 }
             } catch (Exception e) {
-                // do nothing
+                if (log.isLoggable(Level.FINEST)) {
+                    log.log(Level.FINEST, "Unable to get bean info", e);
+                }
             }
             this.attrs = (String[]) s.toArray(new String[s.size()]);
         }
 
+        @Override
         public void applyMetadata(FaceletContext ctx, Object instance) {
             UIComponent c = (UIComponent) instance;
             Map localAttrs = c.getAttributes();
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/ui/SchemaCompliantRemoveHandler.java b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/ui/SchemaCompliantRemoveHandler.java
index 123180a..0ac7fd3 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/ui/SchemaCompliantRemoveHandler.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/ui/SchemaCompliantRemoveHandler.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -50,7 +54,7 @@ public class SchemaCompliantRemoveHandler extends TagHandler {
     }
 
     public void apply(FaceletContext ctx, UIComponent parent) throws IOException {
-        throw new FaceletException("Error: The Facelet parser is responsible for handling the <ui:remove> element.  This TagHandler implementation is only provided to allow the ui.taglib.xml file to be compliant with web-facelettaglibrary_2_0.xsd.  If you are seeing this exception, there is something wrong with how the JSF runtime is configuring its Facelets compiler.");
+        throw new FaceletException("Error: The Facelet parser is responsible for handling the <ui:remove> element.  This TagHandler implementation is only provided to allow the ui.taglib.xml file to be compliant with web-facelettaglibrary_2_2.xsd.  If you are seeing this exception, there is something wrong with how the JSF runtime is configuring its Facelets compiler.");
     }
 
 
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/ui/UIDebug.java b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/ui/UIDebug.java
index 5bd47f2..4165a9a 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/ui/UIDebug.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/ui/UIDebug.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -51,7 +55,6 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-
 package com.sun.faces.facelets.tag.ui;
 
 import com.sun.faces.facelets.util.DevTools;
@@ -78,11 +81,10 @@ public final class UIDebug extends UIComponentBase {
     private final static String KEY = "facelets.ui.DebugOutput";
     public final static String DEFAULT_HOTKEY = "D";
     private String hotkey = DEFAULT_HOTKEY;
-    
+
     public UIDebug() {
         super();
         this.setTransient(true);
-        this.setRendered(true);
         this.setRendererType(null);
     }
 
@@ -92,6 +94,7 @@ public final class UIDebug extends UIComponentBase {
 
     public List getChildren() {
         return new ArrayList() {
+
             public boolean add(Object o) {
                 throw new IllegalStateException("<ui:debug> does not support children");
             }
@@ -102,51 +105,62 @@ public final class UIDebug extends UIComponentBase {
         };
     }
 
-    public void encodeBegin(FacesContext faces) throws IOException {
-
-        pushComponentToEL(faces, this);
-        String actionId = faces.getApplication().getViewHandler().getActionURL(faces, faces.getViewRoot().getViewId());
-        
-        StringBuffer sb = new StringBuffer(512);
-        sb.append("//<![CDATA[\n");
-        sb.append("function faceletsDebug(URL) { day = new Date(); id = day.getTime(); eval(\"page\" + id + \" = window.open(URL, '\" + id + \"', 'toolbar=0,scrollbars=1,location=0,statusbar=0,menubar=0,resizable=1,width=800,height=600,left = 240,top = 212');\"); };");
-        sb.append("var faceletsOrigKeyup = document.onkeyup; document.onkeyup = function(e) { if (window.event) e = window.event; if (String.fromCharCode(e.keyCode) == '" + this.getHotkey() + "' & e.shiftKey & e.ctrlKey) faceletsDebug('");
-        sb.append(actionId);
-        sb.append('?');
-        sb.append(KEY);
-        sb.append('=');
-        sb.append(writeDebugOutput(faces));
-        sb.append("'); else if (faceletsOrigKeyup) faceletsOrigKeyup(e); };\n");
-        sb.append("//]]>\n");
-
-        ResponseWriter writer = faces.getResponseWriter();
-        writer.startElement("script", this);
-        writer.writeAttribute("language", "javascript", "language");
-        writer.writeAttribute("type", "text/javascript", "type");
-        writer.writeText(sb.toString(), this, null);
-        writer.endElement("script");
+    public void encodeBegin(FacesContext facesContext) throws IOException {
         
+        if (isRendered()) {
+            pushComponentToEL(facesContext, this);
+            String actionId = facesContext.getApplication().getViewHandler().getActionURL(facesContext, facesContext.getViewRoot().getViewId());
+
+            StringBuffer sb = new StringBuffer(512);
+            sb.append("//<![CDATA[\n");
+            sb.append("function faceletsDebug(URL) {");
+            sb.append("day = new Date();");
+            sb.append("id = day.getTime();");
+            sb.append("eval(\"page\" + id + \" = window.open(URL, '\" + id + \"', 'toolbar=0,scrollbars=1,location=0,statusbar=0,menubar=0,resizable=1,width=800,height=600,left = 240,top = 212');\"); };");
+            sb.append("(function() { if (typeof jsfFaceletsDebug === 'undefined') { var jsfFaceletsDebug = false; } if (!jsfFaceletsDebug) {");
+            sb.append("var faceletsOrigKeyup = document.onkeyup;");
+            sb.append("document.onkeyup = function(e) { if (window.event) e = window.event; if (String.fromCharCode(e.keyCode) == '" + this.getHotkey() + "' & e.shiftKey & e.ctrlKey) faceletsDebug('");
+            sb.append(actionId);
+            sb.append(actionId.indexOf('?') == -1 ? '?' : '&');
+            sb.append(KEY);
+            sb.append('=');
+            sb.append(writeDebugOutput(facesContext));
+            sb.append("'); jsfFaceletsDebug = true; if (faceletsOrigKeyup) faceletsOrigKeyup(e); };\n");
+            sb.append("}})();");
+            sb.append("//]]>\n");
+
+            ResponseWriter writer = facesContext.getResponseWriter();
+            writer.startElement("span", this);
+            writer.writeAttribute("id", getClientId(facesContext), "id");
+            writer.startElement("script", this);
+            writer.writeAttribute("language", "javascript", "language");
+            writer.writeAttribute("type", "text/javascript", "type");
+            writer.writeText(sb.toString(), this, null);
+            writer.endElement("script");
+            writer.endElement("span");
+        }
     }
-    
+
     private static String writeDebugOutput(FacesContext faces) throws IOException {
         FastWriter fw = new FastWriter();
         DevTools.debugHtml(fw, faces);
-        
+
         Map session = faces.getExternalContext().getSessionMap();
         Map debugs = (Map) session.get(KEY);
         if (debugs == null) {
             debugs = new LinkedHashMap() {
+
                 protected boolean removeEldestEntry(Map.Entry eldest) {
                     return (this.size() > 5);
                 }
             };
-            session.put(KEY, debugs);
         }
+        session.put(KEY, debugs);
         String id = "" + nextId++;
         debugs.put(id, fw.toString());
         return id;
     }
-    
+
     private static String fetchDebugOutput(FacesContext faces, String id) {
         Map session = faces.getExternalContext().getSessionMap();
         Map debugs = (Map) session.get(KEY);
@@ -155,13 +169,13 @@ public final class UIDebug extends UIComponentBase {
         }
         return null;
     }
-    
+
     public static boolean debugRequest(FacesContext faces) {
         String id = (String) faces.getExternalContext().getRequestParameterMap().get(KEY);
         if (id != null) {
             Object resp = faces.getExternalContext().getResponse();
             if (!faces.getResponseComplete()
-                && resp instanceof HttpServletResponse) {
+                    && resp instanceof HttpServletResponse) {
                 try {
                     HttpServletResponse httpResp = (HttpServletResponse) resp;
                     String page = fetchDebugOutput(faces, id);
@@ -182,13 +196,12 @@ public final class UIDebug extends UIComponentBase {
         }
         return false;
     }
-    
+
     public String getHotkey() {
         return this.hotkey;
     }
-    
+
     public void setHotkey(String hotkey) {
         this.hotkey = (hotkey != null) ? hotkey.toUpperCase() : "";
     }
-
 }
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/ui/UILibrary.java b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/ui/UILibrary.java
index 9512943..6489757 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/ui/UILibrary.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/ui/UILibrary.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -63,12 +67,17 @@ import com.sun.faces.facelets.tag.AbstractTagLibrary;
 public final class UILibrary extends AbstractTagLibrary {
 
     public final static String Namespace = "http://java.sun.com/jsf/facelets";
+    public final static String XMLNSNamespace = "http://xmlns.jcp.org/jsf/facelets";
 
     public final static UILibrary Instance = new UILibrary();
 
     public UILibrary() {
-        super(Namespace);
-
+        this(Namespace);
+    }
+    
+    public UILibrary(String namespace) {
+        super(namespace);
+        
         this.addTagHandler("include", IncludeHandler.class);
 
         this.addTagHandler("composition", CompositionHandler.class);
@@ -87,6 +96,6 @@ public final class UILibrary extends AbstractTagLibrary {
         
         this.addComponent("repeat", UIRepeat.COMPONENT_TYPE, null, RepeatHandler.class);
         
-        this.addComponent("debug", UIDebug.COMPONENT_TYPE, null);
+        this.addComponent("debug", UIDebug.COMPONENT_TYPE, null);     
     }
 }
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/ui/package.html b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/ui/package.html
index 0798225..cfe24f3 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/tag/ui/package.html
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/tag/ui/package.html
@@ -1,9 +1,51 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
 <html>
 <head>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
 </head>
 <body bgcolor="white">
 Tag Library for <b>http://java.sun.com/jsf/ui</b>.
 See JSF Core Tag Javadocs for attributes/functionality.
 </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/util/Classpath.java b/jsf-ri/src/main/java/com/sun/faces/facelets/util/Classpath.java
index 79ff848..f171e0f 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/util/Classpath.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/util/Classpath.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -52,7 +56,6 @@
  * limitations under the License.
  */
 
-
 package com.sun.faces.facelets.util;
 
 import java.io.File;
@@ -77,20 +80,43 @@ import java.util.zip.ZipInputStream;
  */
 public final class Classpath {
 
+    // discard any urls that begin with rar: and sar:
+    // or end with their counterparts
+    // as these should not be looked at for JSF related content.
+    private static final String [] PREFIXES_TO_EXCLUDE = {
+        "rar:",
+        "sar:"
+    };
+    private static final String [] EXTENSIONS_TO_EXCLUDE = {
+        ".rar",
+        ".sar"
+    };
+
     /**
      *
      */
     public Classpath() {
         super();
     }
+    
+    public enum SearchAdvice {
+        FirstMatchOnly,
+        AllMatches
+    };
 
     public static URL[] search(String prefix, String suffix)
           throws IOException {
         return search(Thread.currentThread().getContextClassLoader(), prefix,
-                      suffix);
+                      suffix, SearchAdvice.AllMatches);
+    }
+    
+    public static URL[] search(ClassLoader cl, String prefix, String suffix) 
+            throws IOException {
+        return search(cl, prefix, suffix, SearchAdvice.AllMatches);
     }
 
-    public static URL[] search(ClassLoader cl, String prefix, String suffix)
+    public static URL[] search(ClassLoader cl, String prefix, String suffix,
+            SearchAdvice advice)
           throws IOException {
         Enumeration[] e = new Enumeration[]{
               cl.getResources(prefix),
@@ -103,16 +129,25 @@ public final class Classpath {
         for (int i = 0, s = e.length; i < s; ++i) {
             while (e[i].hasMoreElements()) {
                 url = (URL) e[i].nextElement();
+                // Defensive programming.  Due to issue 13045 this collection
+                // can contain URLs that have their spaces incorrectly escaped
+                // by having %20 replaced with %2520.  This quick conditional 
+                // check catches this particular case and averts it.
+                String str = url.getPath();
+                if (-1 != str.indexOf("%2520")) {
+                    str = url.toExternalForm();
+                    str = str.replace("%2520", "%20");
+                    url = new URL(str);
+                }
                 conn = url.openConnection();
                 conn.setUseCaches(false);
-                conn.setDefaultUseCaches(false);
                 if (conn instanceof JarURLConnection) {
                     jarFile = ((JarURLConnection) conn).getJarFile();
                 } else {
                     jarFile = getAlternativeJarFile(url);
                 }
                 if (jarFile != null) {
-                    searchJar(cl, all, jarFile, prefix, suffix);
+                    searchJar(cl, all, jarFile, prefix, suffix, advice);
                 } else {
                     boolean searchDone =
                           searchDir(all, new File(URLDecoder.decode(url.getFile(), "UTF-8")), suffix);
@@ -196,7 +231,13 @@ public final class Classpath {
             prefix = join(split, true);
             String end = join(split, false);
             int p = urlString.lastIndexOf(end);
-            url = new URL(urlString.substring(0, p));
+            urlString = urlString.substring(0, p);
+            for (String cur : PREFIXES_TO_EXCLUDE) {
+                if (urlString.startsWith(cur)) {
+                    return;
+                }
+            }
+            url = new URL(urlString);
             searchFromURL(result, prefix, suffix, url);
         }
     }
@@ -241,12 +282,24 @@ public final class Classpath {
      */
     private static JarFile getAlternativeJarFile(URL url) throws IOException {
         String urlFile = url.getFile();
+        return getAlternativeJarFile(urlFile);
+    }
+    
+    static JarFile getAlternativeJarFile(String urlFile) throws IOException {
+        JarFile result = null;
         // Trim off any suffix - which is prefixed by "!/" on Weblogic
-        int separatorIndex = urlFile.indexOf("!/");
-
-        // OK, didn't find that. Try the less safe "!", used on OC4J
-        if (separatorIndex == -1) {
-            separatorIndex = urlFile.indexOf('!');
+        int bangSlash = urlFile.indexOf("!/");
+        // Try the less safe "!", used on OC4J
+        int bang = urlFile.indexOf('!');
+        int separatorIndex = -1;
+        
+        // if either are found, take the first one.
+        if (-1 != bangSlash || -1 != bang) {
+            if (bangSlash < bang) {
+                separatorIndex = bangSlash;
+            } else {
+                separatorIndex = bang;
+            }
         }
 
         if (separatorIndex != -1) {
@@ -256,13 +309,25 @@ public final class Classpath {
                 jarFileUrl = jarFileUrl.substring("file:".length());
                 jarFileUrl = URLDecoder.decode(jarFileUrl, "UTF-8");
             }
-            return new JarFile(jarFileUrl);
+            boolean foundExclusion = false;
+            for (int i = 0; i < PREFIXES_TO_EXCLUDE.length; i++) {
+                if (jarFileUrl.startsWith(PREFIXES_TO_EXCLUDE[i]) ||
+                    jarFileUrl.endsWith(EXTENSIONS_TO_EXCLUDE[i])) {
+                    foundExclusion = true;
+                    break;
+                }
+            }
+            if (!foundExclusion) {
+                result = new JarFile(jarFileUrl);
+            }
+
+            return result;
         }
         return null;
     }
 
     private static void searchJar(ClassLoader cl, Set result, JarFile file,
-                                  String prefix, String suffix)
+                                  String prefix, String suffix, SearchAdvice advice)
           throws IOException {
         Enumeration e = file.entries();
         JarEntry entry;
@@ -278,6 +343,9 @@ public final class Classpath {
                 Enumeration e2 = cl.getResources(name);
                 while (e2.hasMoreElements()) {
 					result.add(e2.nextElement());
+                                        if (advice == SearchAdvice.FirstMatchOnly) {
+                                            return;
+                                        }
 				}
 			}
 		}
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/util/DevTools.java b/jsf-ri/src/main/java/com/sun/faces/facelets/util/DevTools.java
index a868816..e239825 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/util/DevTools.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/util/DevTools.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -52,9 +56,9 @@
  * limitations under the License.
  */
 
-
 package com.sun.faces.facelets.util;
 
+import com.sun.faces.RIConstants;
 import com.sun.faces.util.Util;
 
 import javax.el.Expression;
@@ -72,6 +76,7 @@ import java.lang.reflect.Method;
 import java.text.DateFormat;
 import java.util.*;
 import java.util.logging.Level;
+import java.util.logging.Logger;
 
 /**
  * <p>
@@ -83,11 +88,15 @@ import java.util.logging.Level;
  * the namespace <code>http://java.sun.com/mojarra/private/functions</code>
  * </p>
  *
- * @see com.sun.faces.application.ApplicationAssociate#createCompiler(com.sun.faces.config.WebConfiguration)
  *
  */
 public final class DevTools {
     
+    public final static String Namespace = "http://java.sun.com/mojarra/private/functions";
+    public final static String NewNamespace = "http://xmlns.jcp.org/mojarra/private/functions";
+
+    private static final Logger LOGGER = Logger.getLogger(DevTools.class.getPackage().getName());
+    
     private final static String TS = "<";
     
     private static final String ERROR_TEMPLATE = "META-INF/facelet-dev-error.xml";
@@ -206,7 +215,9 @@ public final class DevTools {
         try {
             flash = ctx.getFlash();
         } catch (UnsupportedOperationException uoe) {
-            // ignore
+            if (LOGGER.isLoggable(Level.FINEST)) {
+                LOGGER.log(Level.FINEST, "Flash not supported", uoe);
+            }
         }
         if (flash != null) {
             writeVariables(writer, flash, "Flash Attributes");
@@ -304,7 +315,7 @@ public final class DevTools {
         while ((read = is.read(buff)) != -1) {
             baos.write(buff, 0, read);
         }
-        String str = baos.toString();
+        String str = baos.toString(RIConstants.CHAR_ENCODING);
         return str.split("@@");
 
     }
@@ -393,7 +404,9 @@ public final class DevTools {
                             writer.write("\"");
                         }
                     } catch (Exception e) {
-                        // do nothing
+                        if (LOGGER.isLoggable(Level.FINEST)) {
+                            LOGGER.log(Level.FINEST, "Error writing out attribute", e);
+                        }
                     }
                 }
             }
@@ -405,7 +418,9 @@ public final class DevTools {
                 writer.write("\"");
             }
         } catch (Exception e) {
-            // do nothing
+            if (LOGGER.isLoggable(Level.FINEST)) {
+                LOGGER.log(Level.FINEST, "Error writing out attributes", e);
+            }
         }
 
     }
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/util/FastWriter.java b/jsf-ri/src/main/java/com/sun/faces/facelets/util/FastWriter.java
index 609573c..45899f9 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/util/FastWriter.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/util/FastWriter.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -52,8 +56,6 @@
  * limitations under the License.
  */
 
-
-
 package com.sun.faces.facelets.util;
 
 import java.io.IOException;
@@ -86,7 +88,7 @@ public final class FastWriter extends Writer {
         // do nothing
     }
     
-    private final void overflow(int len) {
+    private void overflow(int len) {
         if (this.size + len > this.buff.length) {
             char[] next = new char[(this.size + len) * 2];
             System.arraycopy(this.buff, 0, next, 0, this.size);
@@ -125,4 +127,4 @@ public final class FastWriter extends Writer {
     public String toString() {
         return new String(this.buff, 0, this.size);
     }
-}
\ No newline at end of file
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/util/FunctionLibrary.java b/jsf-ri/src/main/java/com/sun/faces/facelets/util/FunctionLibrary.java
index 1e7bbcb..4ffe6fb 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/util/FunctionLibrary.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/util/FunctionLibrary.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -54,8 +58,12 @@ import java.util.Map;
  * as EL functions.</p>
  */
 public class FunctionLibrary implements TagLibrary {
+    
+    public final static String Namespace = "http://java.sun.com/jsp/jstl/functions";
+    public final static String XMLNSNamespace = "http://xmlns.jcp.org/jsp/jstl/functions";
+    
 
-    private String namespace;
+    private String _namespace;
     private Map<String,Method> functions;
 
     // ------------------------------------------------------------ Constructors
@@ -66,7 +74,7 @@ public class FunctionLibrary implements TagLibrary {
         Util.notNull("functionsClass", functionsClass);
         Util.notNull("namespace", namespace);
 
-        this.namespace = namespace;
+        this._namespace = namespace;
 
         try {
             Method[] methods = functionsClass.getMethods();
@@ -86,7 +94,7 @@ public class FunctionLibrary implements TagLibrary {
     // ------------------------------------------------- Methods from TagLibrary
 
     public boolean containsNamespace(String ns, Tag t) {
-        return namespace.equals(ns);
+        return _namespace.equals(ns);
     }
 
     public boolean containsTagHandler(String ns, String localName) {
@@ -99,11 +107,11 @@ public class FunctionLibrary implements TagLibrary {
     }
 
     public boolean containsFunction(String ns, String name) {
-        return namespace.equals(ns) && this.functions.containsKey(name);
+        return _namespace.equals(ns) && this.functions.containsKey(name);
     }
 
     public Method createFunction(String ns, String name) {
-        if (namespace.equals(ns)) {
+        if (_namespace.equals(ns)) {
             return this.functions.get(name);
         }
         return null;
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/util/Path.java b/jsf-ri/src/main/java/com/sun/faces/facelets/util/Path.java
index c7d32b9..c29f8a4 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/util/Path.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/util/Path.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -52,8 +56,6 @@
  * limitations under the License.
  */
 
-
-
 package com.sun.faces.facelets.util;
 
 /**
@@ -61,7 +63,7 @@ package com.sun.faces.facelets.util;
  */
 public final class Path {
 
-    public static final String normalize(String path) {
+    public static String normalize(String path) {
         if (path.length() == 0)
             return path;
         String n = path;
@@ -94,7 +96,7 @@ public final class Path {
         return n;
     }
 
-    public static final String relative(String ctx, String path) {
+    public static String relative(String ctx, String path) {
         if (path.length() == 0) {
             return context(ctx);
         }
@@ -117,7 +119,7 @@ public final class Path {
         return p;
     }
 
-    public static final String context(String path) {
+    public static String context(String path) {
         int idx = path.lastIndexOf('/');
         if (idx == -1) {
             return "/";
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/util/ReflectionUtil.java b/jsf-ri/src/main/java/com/sun/faces/facelets/util/ReflectionUtil.java
index 850a6c0..7a5dd78 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/util/ReflectionUtil.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/util/ReflectionUtil.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -52,7 +56,6 @@
  * limitations under the License.
  */
 
-
 package com.sun.faces.facelets.util;
 
 import com.sun.faces.config.ConfigurationException;
@@ -64,8 +67,6 @@ import com.sun.faces.util.Util;
 import javax.faces.view.facelets.ResourceResolver;
 import java.lang.reflect.Array;
 import java.lang.reflect.Constructor;
-import java.lang.reflect.Method;
-import java.lang.reflect.Modifier;
 import java.text.MessageFormat;
 import java.util.Arrays;
 
@@ -114,8 +115,9 @@ public class ReflectionUtil {
 
     /**
      * Converts an array of Class names to Class types
-     * @param s
-     * @return
+     * 
+     * @param s the array of class names.
+     * @return the array of classes.
      * @throws ClassNotFoundException
      */
     public static Class[] toTypeArray(String[] s) throws ClassNotFoundException {
@@ -130,8 +132,9 @@ public class ReflectionUtil {
 
     /**
      * Converts an array of Class types to Class names
-     * @param c
-     * @return
+     * 
+     * @param c the array of classes.
+     * @return the array of class names.
      */
     public static String[] toTypeNameArray(Class[] c) {
         if (c == null)
@@ -143,45 +146,45 @@ public class ReflectionUtil {
         return s;
     }
 
-    /*
-     * Get a public method form a public class or interface of a given method.
-     * Note that if the base is an instance of a non-public class that
-     * implements a public interface,  calling Class.getMethod() with the base
-     * will not find the method.  To correct this, a version of the
-     * same method must be found in a superclass or interface.
-     **/
-
-    static private Method getMethod(Class cl, String methodName,
-                                    Class[] paramTypes) {
-
-        Method m = null;
-        try {
-            m = cl.getMethod(methodName, paramTypes);
-        } catch (NoSuchMethodException ex) {
-            return null;
-        }
-
-        Class dclass  = m.getDeclaringClass();
-        if (Modifier.isPublic(dclass.getModifiers())) {
-            return m;
-        }
-
-        Class[] intf = dclass.getInterfaces();
-        for (int i = 0; i < intf.length; i++) {
-            m = getMethod(intf[i], methodName, paramTypes);
-            if (m != null) {
-                return m;
-            }
-        }
-        Class c = dclass.getSuperclass();
-        if (c != null) {
-            m = getMethod(c, methodName, paramTypes);
-            if (m != null) {
-                return m;
-            }
-        }
-        return null;
-    }
+//    /*
+//     * Get a public method form a public class or interface of a given method.
+//     * Note that if the base is an instance of a non-public class that
+//     * implements a public interface,  calling Class.getMethod() with the base
+//     * will not find the method.  To correct this, a version of the
+//     * same method must be found in a superclass or interface.
+//     **/
+//
+//    static private Method getMethod(Class cl, String methodName,
+//                                    Class[] paramTypes) {
+//
+//        Method m = null;
+//        try {
+//            m = cl.getMethod(methodName, paramTypes);
+//        } catch (NoSuchMethodException ex) {
+//            return null;
+//        }
+//
+//        Class dclass  = m.getDeclaringClass();
+//        if (Modifier.isPublic(dclass.getModifiers())) {
+//            return m;
+//        }
+//
+//        Class[] intf = dclass.getInterfaces();
+//        for (int i = 0; i < intf.length; i++) {
+//            m = getMethod(intf[i], methodName, paramTypes);
+//            if (m != null) {
+//                return m;
+//            }
+//        }
+//        Class c = dclass.getSuperclass();
+//        if (c != null) {
+//            m = getMethod(c, methodName, paramTypes);
+//            if (m != null) {
+//                return m;
+//            }
+//        }
+//        return null;
+//    }
 
     protected static final String paramString(Class[] types) {
         if (types != null) {
@@ -197,6 +200,52 @@ public class ReflectionUtil {
         return null;
     }
     
+    public static Object decorateInstance(Class clazz,
+                                    Class rootType,
+                                    Object root) {
+        Object returnObject = null;
+        try {
+            if (isDevModeEnabled()) {
+                Class<?>[] interfaces = clazz.getInterfaces();
+                if (interfaces != null) {
+                    for (Class<?> c : interfaces) {
+                        if ("groovy.lang.GroovyObject"
+                                .equals(c.getName())) {
+                            // all groovy classes will implement this interface
+                            returnObject =
+                                    createScriptProxy(rootType, clazz.getName(), root);
+                            break;
+                        }
+                    }
+                }
+            }
+            if (returnObject == null) {
+                // Look for an adapter constructor if we've got
+                // an object to adapt
+                if ((rootType != null) && (root != null)) {
+                    Constructor construct =
+                            ReflectionUtils.lookupConstructor(
+                            clazz,
+                            rootType);
+                    if (construct != null) {
+                        returnObject = construct.newInstance(root);
+                    }
+                }
+            }
+            if (clazz != null && returnObject == null) {
+                returnObject = clazz.newInstance();
+            }
+        }
+        catch (Exception e) {
+            throw new ConfigurationException(
+                    buildMessage(MessageFormat.format("Unable to create a new instance of ''{0}'': {1}",
+                    clazz.getName(),
+                    e.toString())), e);
+        }
+        return returnObject;
+
+    }
+    
     public static Object decorateInstance(String className,
                                     Class rootType,
                                     Object root) {
@@ -206,36 +255,7 @@ public class ReflectionUtil {
             try {
                 clazz = loadClass(className, returnObject, null);
                 if (clazz != null) {
-                    if (isDevModeEnabled()) {
-                        Class<?>[] interfaces = clazz.getInterfaces();
-                        if (interfaces != null) {
-                            for (Class<?> c : interfaces) {
-                                if ("groovy.lang.GroovyObject"
-                                      .equals(c.getName())) {
-                                    // all groovy classes will implement this interface
-                                    returnObject =
-                                          createScriptProxy(rootType, className, root);
-                                    break;
-                                }
-                            }
-                        }
-                    }
-                    if (returnObject == null) {
-                        // Look for an adapter constructor if we've got
-                        // an object to adapt
-                        if ((rootType != null) && (root != null)) {
-                            Constructor construct =
-                                  ReflectionUtils.lookupConstructor(
-                                        clazz,
-                                        rootType);
-                            if (construct != null) {
-                                returnObject = construct.newInstance(root);
-                            }
-                        }
-                    }
-                    if (clazz != null && returnObject == null) {
-                        returnObject = clazz.newInstance();
-                    }
+                    returnObject = decorateInstance(clazz, rootType, root);
                 }
 
             } catch (ClassNotFoundException cnfe) {
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/util/Resource.java b/jsf-ri/src/main/java/com/sun/faces/facelets/util/Resource.java
deleted file mode 100644
index 48a85c9..0000000
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/util/Resource.java
+++ /dev/null
@@ -1,189 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- *
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- *
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- *
- * Contributor(s):
- *
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- *
- *
- * This file incorporates work covered by the following copyright and
- * permission notice:
- *
- * Copyright 2005-2007 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.sun.faces.facelets.util;
-
-import com.sun.faces.util.FacesLogger;
-
-import javax.faces.context.ExternalContext;
-import javax.faces.context.FacesContext;
-import javax.servlet.ServletContext;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.net.URLConnection;
-import java.net.URLStreamHandler;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-/**
- * @author Roland Huss
- * 
- */
-public final class Resource {
-
-    protected final static Logger log = FacesLogger.FACELETS_FACTORY.getLogger();
-
-    /**
-     * Get an URL of an internal resource. First,
-     * {@link javax.faces.context.ExternalContext#getResource(String)} is
-     * checked for an non-null URL return value. In the case of a null return
-     * value (as it is the case for Weblogic 8.1 for a packed war), a URL with a
-     * special URL handler is constructed, which can be used for
-     * <em>opening</em> a serlvet resource later. Internally, this special URL
-     * handler will call {@link ServletContext#getResourceAsStream(String)} when
-     * an inputstream is requested. This works even on Weblogic 8.1
-     * 
-     * @param ctx
-     *            the faces context from which to retrieve the resource
-     * @param path
-     *            an URL path
-     * 
-     * @return an url representing the URL and on which getInputStream() can be
-     *         called to get the resource
-     * @throws MalformedURLException
-     */
-    public static URL getResourceUrl(FacesContext ctx, String path)
-            throws MalformedURLException {
-        final ExternalContext externalContext = ctx.getExternalContext();
-        URL url = externalContext.getResource(path);
-        if (log.isLoggable(Level.FINE)) {
-            log.fine("Resource-Url from external context: " + url);
-        }
-        if (url == null) {
-            // This might happen on Servlet container which doesnot return
-            // anything
-            // for getResource() (like weblogic 8.1 for packaged wars) we
-            // are trying
-            // to use an own URL protocol in order to use
-            // ServletContext.getResourceAsStream()
-            // when opening the url
-            if (resourceExist(externalContext, path)) {
-                url = getUrlForResourceAsStream(externalContext, path);
-            }
-        }
-        return url;
-    }
-
-    // This method could be used above to provide a 'fail fast' if a
-    // resource
-    // doesnt exist. Otherwise, the URL will fail on the first access.
-    private static boolean resourceExist(ExternalContext externalContext,
-            String path) {
-        if ("/".equals(path)) {
-            // The root context exists always
-            return true;
-        }
-        Object ctx = externalContext.getContext();
-        if (ctx instanceof ServletContext) {
-            ServletContext servletContext = (ServletContext) ctx;
-            InputStream stream = servletContext.getResourceAsStream(path);
-            if (stream != null) {
-                try {
-                    stream.close();
-                } catch (IOException e) {
-                    // Ignore here, since we donnot wanted to read from this
-                    // resource anyway
-                }
-                return true;
-            }
-        }
-        return false;
-    }
-
-    // Construct URL with special URLStreamHandler for proxying
-    // ServletContext.getResourceAsStream()
-    private static URL getUrlForResourceAsStream(
-            final ExternalContext externalContext, String path)
-            throws MalformedURLException {
-        URLStreamHandler handler = new URLStreamHandler() {
-            protected URLConnection openConnection(URL u) throws IOException {
-                final String file = u.getFile();
-                return new URLConnection(u) {
-                    public void connect() throws IOException {
-                    }
-
-                    public InputStream getInputStream() throws IOException {
-                        if (log.isLoggable(Level.FINE)) {
-                            log.fine("Opening internal url to " + file);
-                        }
-                        Object ctx = externalContext.getContext();
-                        // Or maybe fetch the external context afresh ?
-                        // Object ctx =
-                        // FacesContext.getCurrentInstance().getExternalContext().getContext();
-
-                        if (ctx instanceof ServletContext) {
-                            ServletContext servletContext = (ServletContext) ctx;
-                            InputStream stream = servletContext
-                                    .getResourceAsStream(file);
-                            if (stream == null) {
-                                throw new FileNotFoundException(
-                                        "Cannot open resource " + file);
-                            }
-                            return stream;
-                        } else {
-                            throw new IOException(
-                                    "Cannot open resource for an context of "
-                                            + (ctx != null ? ctx.getClass()
-                                                    : null));
-                        }
-                    }
-                };
-            }
-        };
-        return new URL("internal", null, 0, path, handler);
-    }
-}
diff --git a/jsf-ri/src/main/java/com/sun/faces/facelets/util/ResourceResolverProxy.java b/jsf-ri/src/main/java/com/sun/faces/facelets/util/ResourceResolverProxy.java
index b963aa6..423818c 100644
--- a/jsf-ri/src/main/java/com/sun/faces/facelets/util/ResourceResolverProxy.java
+++ b/jsf-ri/src/main/java/com/sun/faces/facelets/util/ResourceResolverProxy.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/flow/FlowCDIContext.java b/jsf-ri/src/main/java/com/sun/faces/flow/FlowCDIContext.java
new file mode 100644
index 0000000..047da6b
--- /dev/null
+++ b/jsf-ri/src/main/java/com/sun/faces/flow/FlowCDIContext.java
@@ -0,0 +1,509 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.flow;
+
+import com.sun.faces.RIConstants;
+import com.sun.faces.util.FacesLogger;
+import com.sun.faces.util.Util;
+import java.io.Serializable;
+import javax.faces.flow.FlowScoped;
+import java.lang.annotation.Annotation;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.enterprise.context.ContextNotActiveException;
+import javax.enterprise.context.spi.Context;
+import javax.enterprise.context.spi.Contextual;
+import javax.enterprise.context.spi.CreationalContext;
+import javax.enterprise.event.Observes;
+import javax.enterprise.inject.spi.Bean;
+import javax.enterprise.inject.spi.BeanManager;
+import javax.enterprise.inject.spi.BeforeShutdown;
+import javax.enterprise.inject.spi.PassivationCapable;
+import javax.faces.context.ExternalContext;
+import javax.faces.context.FacesContext;
+import javax.faces.flow.Flow;
+import javax.faces.flow.FlowHandler;
+import javax.faces.lifecycle.ClientWindow;
+import javax.servlet.http.HttpSession;
+import javax.servlet.http.HttpSessionEvent;
+
+public class FlowCDIContext implements Context, Serializable {
+    
+    private static final long serialVersionUID = -7144653402477623609L;
+    private static final String FLOW_SCOPE_MAP_KEY = RIConstants.FACES_PREFIX + "FLOW_SCOPE_MAP";
+    private static final Logger LOGGER = FacesLogger.FLOW.getLogger();
+    
+    private transient Map<Contextual<?>, FlowBeanInfo> flowIds;
+
+    static class FlowBeanInfo {
+        String definingDocumentId;
+        String id;
+
+        @Override
+        public boolean equals(Object obj) {
+            if (obj == null) {
+                return false;
+            }
+            if (getClass() != obj.getClass()) {
+                return false;
+            }
+            final FlowBeanInfo other = (FlowBeanInfo) obj;
+            if ((this.definingDocumentId == null) ? (other.definingDocumentId != null) : !this.definingDocumentId.equals(other.definingDocumentId)) {
+                return false;
+            }
+            if ((this.id == null) ? (other.id != null) : !this.id.equals(other.id)) {
+                return false;
+            }
+            return true;
+        }
+
+        @Override
+        public int hashCode() {
+            int hash = 7;
+            hash = 79 * hash + (this.definingDocumentId != null ? this.definingDocumentId.hashCode() : 0);
+            hash = 79 * hash + (this.id != null ? this.id.hashCode() : 0);
+            return hash;
+        }
+
+        @Override
+        public String toString() {
+            return "FlowBeanInfo{" + "definingDocumentId=" + definingDocumentId + ", id=" + id + '}';
+        }
+        
+        
+    }
+    
+    // This should be vended from a factory for decoration purposes.
+    
+    FlowCDIContext(Map<Contextual<?>, FlowBeanInfo> flowIds) {
+        this.flowIds = new ConcurrentHashMap<Contextual<?>, FlowBeanInfo>(flowIds);
+    }
+    
+    private static final String PER_SESSION_BEAN_MAP_LIST = FlowCDIContext.class.getPackage().getName() + ".PER_SESSION_BEAN_MAP_LIST";
+    private static final String PER_SESSION_CREATIONAL_LIST = FlowCDIContext.class.getPackage().getName() + ".PER_SESSION_CREATIONAL_LIST";
+    
+    // -------------------------------------------------------- Private Methods
+    
+    // <editor-fold defaultstate="collapsed" desc="Private helpers">  
+    
+    /*
+     * Encapsulate access to the two maps we need to provide.
+     * 
+     */
+    private static class FlowScopeMapHelper {
+        // <editor-fold defaultstate="collapsed">  
+        private transient final String flowBeansForClientWindowKey;
+        private transient final String creationalForClientWindowKey;
+        private transient final Map<String, Object> sessionMap;
+        
+        private FlowScopeMapHelper(FacesContext facesContext) {
+            ExternalContext extContext = facesContext.getExternalContext();
+            this.sessionMap = extContext.getSessionMap();
+            Flow currentFlow = getCurrentFlow(facesContext);
+            if (null != currentFlow) {
+                ClientWindow curWindow = facesContext.getExternalContext().getClientWindow();
+                if (null == curWindow) { 
+                    throw new IllegalStateException("Unable to obtain current ClientWindow.  Is the ClientWindow feature enabled?");
+                }
+                final String clientWindow = currentFlow.getClientWindowFlowId(curWindow);
+                
+                flowBeansForClientWindowKey = clientWindow + "_beans";
+                creationalForClientWindowKey = clientWindow + "_creational";
+            } else {
+                flowBeansForClientWindowKey = creationalForClientWindowKey = null;
+            }
+            
+        }
+        
+        private void createMaps() {
+            getFlowScopedBeanMapForCurrentFlow();
+            getFlowScopedCreationalMapForCurrentFlow();
+        }
+        
+        private boolean isFlowExists() {
+            return (null != flowBeansForClientWindowKey && null != creationalForClientWindowKey);
+        }
+
+        public String getCreationalForClientWindowKey() {
+            return creationalForClientWindowKey;
+        }
+        
+        public String getFlowBeansForClientWindowKey() {
+            return flowBeansForClientWindowKey;
+        }
+        
+        private Map<String, Object> getFlowScopedBeanMapForCurrentFlow() {
+            if (null == flowBeansForClientWindowKey && null == creationalForClientWindowKey) {
+                return Collections.emptyMap();
+            }
+            Map<String, Object> result;
+            result = (Map<String, Object>) sessionMap.get(flowBeansForClientWindowKey);
+            if (null == result) {
+                result = new ConcurrentHashMap<String, Object>();
+                sessionMap.put(flowBeansForClientWindowKey, result);
+                ensureBeanMapCleanupOnSessionDestroyed(sessionMap, flowBeansForClientWindowKey);
+            }
+            return result;
+        }
+        
+        private Map<String, CreationalContext<?>> getFlowScopedCreationalMapForCurrentFlow() {
+            if (null == flowBeansForClientWindowKey && null == creationalForClientWindowKey) {
+                return Collections.emptyMap();
+            }
+            Map<String, CreationalContext<?>> result;
+            result = (Map<String, CreationalContext<?>>) sessionMap.get(creationalForClientWindowKey);
+            if (null == result) {
+                result = new ConcurrentHashMap<String, CreationalContext<?>>();
+                sessionMap.put(creationalForClientWindowKey, result);
+                ensureCreationalCleanupOnSessionDestroyed(sessionMap, creationalForClientWindowKey);
+            }
+            return result;
+        }
+        
+        private void updateSession() {
+            if (null == flowBeansForClientWindowKey && null == creationalForClientWindowKey) {
+                return;
+            }
+            sessionMap.put(flowBeansForClientWindowKey, getFlowScopedBeanMapForCurrentFlow());
+            sessionMap.put(creationalForClientWindowKey, getFlowScopedCreationalMapForCurrentFlow());
+            Object obj = sessionMap.get(PER_SESSION_BEAN_MAP_LIST);
+            if (null != obj) {
+                sessionMap.put(PER_SESSION_BEAN_MAP_LIST, obj);
+            }
+            obj = sessionMap.get(PER_SESSION_CREATIONAL_LIST);
+            if (null != obj) {
+                sessionMap.put(PER_SESSION_CREATIONAL_LIST, obj);
+            }
+        }
+        // </editor-fold>
+    }
+        
+    private static void ensureBeanMapCleanupOnSessionDestroyed(Map<String, Object> sessionMap, String flowBeansForClientWindow) {
+        List<String> beanMapList = (List<String>) sessionMap.get(PER_SESSION_BEAN_MAP_LIST);
+        if (null == beanMapList) {
+            beanMapList = new ArrayList<String>();
+            sessionMap.put(PER_SESSION_BEAN_MAP_LIST, beanMapList);
+        }
+        beanMapList.add(flowBeansForClientWindow);
+    }
+    
+    private static void ensureCreationalCleanupOnSessionDestroyed(Map<String, Object> sessionMap, String creationalForClientWindow) {
+        List<String> beanMapList = (List<String>) sessionMap.get(PER_SESSION_CREATIONAL_LIST);
+        if (null == beanMapList) {
+            beanMapList = new ArrayList<String>();
+            sessionMap.put(PER_SESSION_CREATIONAL_LIST, beanMapList);
+        }
+        beanMapList.add(creationalForClientWindow);
+    }
+    
+    @SuppressWarnings({"FinalPrivateMethod"})
+    private final void assertNotReleased() {
+        if (!isActive()) {
+            throw new IllegalStateException();
+        }
+    }
+    
+    private Flow getCurrentFlow() {
+        Flow result = null;
+        
+        FacesContext context = FacesContext.getCurrentInstance();
+        result = getCurrentFlow(context);
+        
+        return result;
+    }
+    
+    private static Flow getCurrentFlow(FacesContext context) {
+        FlowHandler flowHandler = context.getApplication().getFlowHandler();
+        if (null == flowHandler) {
+            return null;
+        }
+        
+        Flow result = flowHandler.getCurrentFlow(context);
+        
+        return result;
+        
+    }
+    
+    // </editor-fold>    
+
+    // <editor-fold defaultstate="collapsed" desc="Called from code not related to flow">       
+    
+    /*
+     * Called from WebappLifecycleListener.sessionDestroyed()
+     */
+    
+    public static void sessionDestroyed(HttpSessionEvent hse) {
+        HttpSession session = hse.getSession();
+        
+        List<String> beanMapList = (List<String>) session.getAttribute(PER_SESSION_BEAN_MAP_LIST);
+        if (null != beanMapList) {
+            for (String cur : beanMapList) {
+                Map<Contextual<?>, Object> beanMap = 
+                        (Map<Contextual<?>, Object>) session.getAttribute(cur);
+                beanMap.clear();
+                session.removeAttribute(cur);
+            }
+            session.removeAttribute(PER_SESSION_BEAN_MAP_LIST);
+            beanMapList.clear();
+        }
+        
+        List<String> creationalList = (List<String>) session.getAttribute(PER_SESSION_CREATIONAL_LIST);
+        if (null != creationalList) {
+            for (String cur : creationalList) {
+                Map<Contextual<?>, CreationalContext<?>> beanMap = 
+                        (Map<Contextual<?>, CreationalContext<?>>) session.getAttribute(cur);
+                beanMap.clear();
+                session.removeAttribute(cur);
+            }
+            session.removeAttribute(PER_SESSION_CREATIONAL_LIST);
+            creationalList.clear();
+        }
+        
+        
+    }
+    
+    // </editor-fold>
+
+    // <editor-fold defaultstate="collapsed" desc="Called from code related to flow">  
+    
+    static Map<Object, Object> getCurrentFlowScopeAndUpdateSession() {
+        FacesContext facesContext = FacesContext.getCurrentInstance();
+        FlowScopeMapHelper mapHelper = new FlowScopeMapHelper(facesContext);
+        return getCurrentFlowScopeAndUpdateSession(mapHelper);
+
+    }
+    
+    private static Map<Object, Object> getCurrentFlowScopeAndUpdateSession(FlowScopeMapHelper mapHelper) {
+        Map<String, Object> flowScopedBeanMap = mapHelper.getFlowScopedBeanMapForCurrentFlow();
+        Map<Object, Object> result = null;
+        if (mapHelper.isFlowExists()) {
+            result = (Map<Object, Object>) flowScopedBeanMap.get(FLOW_SCOPE_MAP_KEY);
+            if (null == result) {
+                result = new ConcurrentHashMap<Object, Object>();
+                flowScopedBeanMap.put(FLOW_SCOPE_MAP_KEY, result);
+            }
+        }
+        mapHelper.updateSession();
+        return result; 
+    }
+        
+    static void flowExited() {
+        FacesContext facesContext = FacesContext.getCurrentInstance();
+        FlowScopeMapHelper mapHelper = new FlowScopeMapHelper(facesContext);
+        Map<String, Object> flowScopedBeanMap = mapHelper.getFlowScopedBeanMapForCurrentFlow();
+        Map<String, CreationalContext<?>> creationalMap = mapHelper.getFlowScopedCreationalMapForCurrentFlow();
+        assert(!flowScopedBeanMap.isEmpty());
+        assert(!creationalMap.isEmpty());
+        List<String> flowScopedBeansToRemove = new ArrayList<String>();
+        BeanManager beanManager = (BeanManager) Util.getCDIBeanManager(facesContext.getExternalContext().getApplicationMap());
+        
+        for (Entry<String, Object> entry : flowScopedBeanMap.entrySet()) {
+            String passivationCapableId = entry.getKey();
+            if (FLOW_SCOPE_MAP_KEY.equals(passivationCapableId)) {
+                continue;
+            }
+            Contextual owner = beanManager.getPassivationCapableBean(passivationCapableId);
+            Object bean = entry.getValue();
+            CreationalContext creational = creationalMap.get(passivationCapableId);
+            
+            owner.destroy(bean, creational);
+            flowScopedBeansToRemove.add(passivationCapableId);
+        }
+        
+        for (String cur : flowScopedBeansToRemove) {
+            flowScopedBeanMap.remove(cur);
+            creationalMap.remove(cur);
+        }
+        mapHelper.updateSession();
+        
+        if (Util.isCdiOneOneOrGreater()) {
+            Class flowCDIEventFireHelperImplClass = null;
+            try {
+                flowCDIEventFireHelperImplClass = Class.forName("com.sun.faces.flow.FlowCDIEventFireHelperImpl");
+            } catch (ClassNotFoundException ex) {
+                if (LOGGER.isLoggable(Level.SEVERE)) {
+                    LOGGER.log(Level.SEVERE, "CDI 1.1 events not enabled", ex);
+                }
+            }
+            
+            if (null != flowCDIEventFireHelperImplClass) {
+                Set<Bean<?>> availableBeans = beanManager.getBeans(flowCDIEventFireHelperImplClass);
+                if (null != availableBeans && !availableBeans.isEmpty()) {
+                    Bean<?> bean = beanManager.resolve(availableBeans);
+                    CreationalContext<?> creationalContext =
+                            beanManager.createCreationalContext(null);
+                    FlowCDIEventFireHelper eventHelper = 
+                            (FlowCDIEventFireHelper)  beanManager.getReference(bean, bean.getBeanClass(),
+                            creationalContext);
+                    eventHelper.fireDestroyedEvent(getCurrentFlow(facesContext));
+                }
+            }
+        }
+    }
+    
+    static void flowEntered() {
+        FacesContext facesContext = FacesContext.getCurrentInstance();
+        FlowScopeMapHelper mapHelper = new FlowScopeMapHelper(facesContext);
+        mapHelper.createMaps();
+        
+        getCurrentFlowScopeAndUpdateSession(mapHelper);
+        
+        if (Util.isCdiOneOneOrGreater()) {
+            Class flowCDIEventFireHelperImplClass = null;
+            try {
+                flowCDIEventFireHelperImplClass = Class.forName("com.sun.faces.flow.FlowCDIEventFireHelperImpl");
+            } catch (ClassNotFoundException ex) {
+                if (LOGGER.isLoggable(Level.SEVERE)) {
+                    LOGGER.log(Level.SEVERE, "CDI 1.1 events not enabled", ex);
+                }
+            }
+            if (null != flowCDIEventFireHelperImplClass) {
+                BeanManager beanManager = (BeanManager) Util.getCDIBeanManager(facesContext.getExternalContext().getApplicationMap());
+                Set<Bean<?>> availableBeans = beanManager.getBeans(flowCDIEventFireHelperImplClass);
+                if (null != availableBeans && !availableBeans.isEmpty()) {
+                    Bean<?> bean = beanManager.resolve(availableBeans);
+                    CreationalContext<?> creationalContext =
+                            beanManager.createCreationalContext(null);
+                    FlowCDIEventFireHelper eventHelper = 
+                            (FlowCDIEventFireHelper)  beanManager.getReference(bean, bean.getBeanClass(),
+                            creationalContext);
+                    eventHelper.fireInitializedEvent(getCurrentFlow(facesContext));
+                }
+            }
+        }
+    }
+
+// </editor-fold>
+    
+    // <editor-fold defaultstate="collapsed" desc="spi.Context implementation">       
+    
+    @Override
+    public <T> T get(Contextual<T> contextual, CreationalContext<T> creational) {
+        assertNotReleased();
+        
+        FacesContext facesContext = FacesContext.getCurrentInstance();
+        FlowScopeMapHelper mapHelper = new FlowScopeMapHelper(facesContext);
+        T result = get(mapHelper, contextual);
+        
+        if (null == result) {
+            Map<String, Object> flowScopedBeanMap = mapHelper.getFlowScopedBeanMapForCurrentFlow();
+            Map<String, CreationalContext<?>> creationalMap = mapHelper.getFlowScopedCreationalMapForCurrentFlow();
+            
+            String passivationCapableId = ((PassivationCapable)contextual).getId();
+
+            synchronized (flowScopedBeanMap) {
+                result = (T) flowScopedBeanMap.get(passivationCapableId);
+                if (null == result) {
+                    
+                    FlowHandler flowHandler = facesContext.getApplication().getFlowHandler();
+                    
+                    if (null == flowHandler) {
+                        return null;
+                    }
+                    
+                    FlowBeanInfo fbi = flowIds.get(contextual);
+                    if (!flowHandler.isActive(facesContext, fbi.definingDocumentId, fbi.id)) {
+                        throw new ContextNotActiveException("Request to activate bean in flow '" + fbi + "', but that flow is not active.");
+                    }
+
+                    
+                    result = contextual.create(creational);
+                    
+                    if (null != result) {
+                        flowScopedBeanMap.put(passivationCapableId, result);
+                        creationalMap.put(passivationCapableId, creational);
+                        mapHelper.updateSession();
+                    }
+                }
+            }
+        }
+        mapHelper = null;
+        
+        return result;
+
+    }
+    
+    @Override
+    public <T> T get(Contextual<T> contextual) {
+        assertNotReleased();
+        if (!(contextual instanceof PassivationCapable)) {
+            throw new IllegalArgumentException("FlowScoped bean " + contextual.toString() + " must be PassivationCapable, but is not.");
+        }
+        FlowScopeMapHelper mapHelper = new FlowScopeMapHelper(FacesContext.getCurrentInstance());
+        T result = get(mapHelper, contextual);
+        mapHelper = null;
+
+        return result;
+    }
+    
+    private <T> T get(FlowScopeMapHelper mapHelper, Contextual<T> contextual) {
+        assertNotReleased();
+        if (!(contextual instanceof PassivationCapable)) {
+            throw new IllegalArgumentException("FlowScoped bean " + contextual.toString() + " must be PassivationCapable, but is not.");
+        }
+        String passivationCapableId = ((PassivationCapable)contextual).getId();
+        return (T) mapHelper.getFlowScopedBeanMapForCurrentFlow().get(passivationCapableId);
+    }
+    
+    @Override
+    public Class<? extends Annotation> getScope() {
+        return FlowScoped.class;
+    }
+    
+    @Override
+    public boolean isActive() {
+        return null != getCurrentFlow();
+    }
+    
+    void beforeShutdown(@Observes final BeforeShutdown event, BeanManager beanManager) {
+    }
+    
+    // </editor-fold>
+    
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/flow/FlowCDIEventFireHelper.java b/jsf-ri/src/main/java/com/sun/faces/flow/FlowCDIEventFireHelper.java
new file mode 100644
index 0000000..f270bba
--- /dev/null
+++ b/jsf-ri/src/main/java/com/sun/faces/flow/FlowCDIEventFireHelper.java
@@ -0,0 +1,51 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.flow;
+
+import javax.faces.flow.Flow;
+
+public interface FlowCDIEventFireHelper {
+    
+    void fireInitializedEvent(Flow currentFlow);
+    void fireDestroyedEvent(Flow currentFlow);
+    
+    
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/flow/FlowCDIEventFireHelperImpl.java b/jsf-ri/src/main/java/com/sun/faces/flow/FlowCDIEventFireHelperImpl.java
new file mode 100644
index 0000000..e0d47aa
--- /dev/null
+++ b/jsf-ri/src/main/java/com/sun/faces/flow/FlowCDIEventFireHelperImpl.java
@@ -0,0 +1,68 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.flow;
+
+import java.io.Serializable;
+import javax.enterprise.context.Destroyed;
+import javax.enterprise.context.Initialized;
+import javax.enterprise.event.Event;
+import javax.faces.flow.Flow;
+import javax.faces.flow.FlowScoped;
+import javax.inject.Inject;
+
+public class FlowCDIEventFireHelperImpl implements Serializable, FlowCDIEventFireHelper {
+    
+    private static final long serialVersionUID = -5689195252450178355L;
+    
+    @Inject @Initialized(FlowScoped.class) Event<Flow> flowInitializedEvent;
+    @Inject @Destroyed(FlowScoped.class) Event<Flow> flowDestroyedEvent;
+    
+    @Override
+    public void fireInitializedEvent(Flow currentFlow) {
+        flowInitializedEvent.fire(currentFlow);
+    }
+    
+    @Override
+    public void fireDestroyedEvent(Flow currentFlow) {
+        flowDestroyedEvent.fire(currentFlow);
+    }
+        
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/flow/FlowCDIExtension.java b/jsf-ri/src/main/java/com/sun/faces/flow/FlowCDIExtension.java
new file mode 100644
index 0000000..e3ccb63
--- /dev/null
+++ b/jsf-ri/src/main/java/com/sun/faces/flow/FlowCDIExtension.java
@@ -0,0 +1,130 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+
+package com.sun.faces.flow;
+
+import com.sun.faces.util.FacesLogger;
+import com.sun.faces.util.Util;
+import com.sun.faces.util.cdi11.CDIUtil;
+import java.util.Map;
+import java.util.ServiceLoader;
+import java.util.concurrent.ConcurrentHashMap;
+
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.enterprise.context.spi.Contextual;
+import javax.enterprise.event.Observes;
+import javax.enterprise.inject.spi.AfterBeanDiscovery;
+import javax.enterprise.inject.spi.Bean;
+import javax.enterprise.inject.spi.BeanManager;
+import javax.enterprise.inject.spi.BeforeBeanDiscovery;
+import javax.enterprise.inject.spi.Extension;
+import javax.enterprise.inject.spi.ProcessBean;
+import javax.faces.flow.FlowScoped;
+
+public class FlowCDIExtension implements Extension {
+
+
+   private Map<Contextual<?>, FlowCDIContext.FlowBeanInfo> flowScopedBeanFlowIds;
+   private boolean isCdiOneOneOrGreater = false;
+   private CDIUtil cdiUtil = null;
+
+   private static final Logger LOGGER = FacesLogger.FLOW.getLogger();
+
+   public FlowCDIExtension() {
+       flowScopedBeanFlowIds = new ConcurrentHashMap<Contextual<?>, FlowCDIContext.FlowBeanInfo>();
+       isCdiOneOneOrGreater = Util.isCdiOneOneOrGreater();
+   }
+   
+   public void processBean(@Observes ProcessBean<?> event) {
+       FlowScoped flowScoped = event.getAnnotated().getAnnotation(FlowScoped.class);
+       if (null != flowScoped) {
+           FlowCDIContext.FlowBeanInfo fbi = new FlowCDIContext.FlowBeanInfo();
+           fbi.definingDocumentId = flowScoped.definingDocumentId();
+           fbi.id = flowScoped.value();
+           flowScopedBeanFlowIds.put(event.getBean(), fbi);
+       }
+   }
+   
+   public void beforeBeanDiscovery(@Observes final BeforeBeanDiscovery event, BeanManager beanManager) {
+       event.addScope(FlowScoped.class, true, true);
+   }
+
+   void afterBeanDiscovery(@Observes final AfterBeanDiscovery event, BeanManager beanManager) {
+       event.addContext(new FlowCDIContext(flowScopedBeanFlowIds));
+       flowScopedBeanFlowIds.clear();
+       
+       if (isCdiOneOneOrGreater) {
+           Class clazz = null;
+           try {
+               clazz = Class.forName("com.sun.faces.flow.FlowCDIEventFireHelperImpl");
+           } catch (ClassNotFoundException ex) {
+               if (LOGGER.isLoggable(Level.SEVERE)) {
+                   LOGGER.log(Level.SEVERE, "CDI 1.1 events not enabled", ex);
+               }
+               return;
+           }
+           if (null == cdiUtil){
+               ServiceLoader<CDIUtil> oneCdiUtil = ServiceLoader.load(CDIUtil.class);
+               for (CDIUtil oneAndOnly : oneCdiUtil) {
+                   if (null != cdiUtil) {
+                       String message = "Must only have one implementation of CDIUtil available";
+                       if (LOGGER.isLoggable(Level.SEVERE)) {
+                           LOGGER.log(Level.SEVERE, message);
+                       }
+                       throw new IllegalStateException(message);
+                   }
+                   cdiUtil = oneAndOnly;
+               }
+               
+           }
+           if (null != cdiUtil) {
+               Bean bean = cdiUtil.createHelperBean(beanManager, clazz);
+               event.addBean(bean);
+           } else if (LOGGER.isLoggable(Level.SEVERE)) {
+               LOGGER.log(Level.SEVERE, "Unable to obtain CDI 1.1 utilities for Mojarra");
+           }
+           
+       }
+       
+   }
+   
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/flow/FlowCallNodeImpl.java b/jsf-ri/src/main/java/com/sun/faces/flow/FlowCallNodeImpl.java
new file mode 100644
index 0000000..f9793fa
--- /dev/null
+++ b/jsf-ri/src/main/java/com/sun/faces/flow/FlowCallNodeImpl.java
@@ -0,0 +1,165 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.flow;
+
+import java.io.Serializable;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+import javax.el.ValueExpression;
+import javax.faces.context.FacesContext;
+import javax.faces.flow.FlowCallNode;
+import javax.faces.flow.Parameter;
+
+public class FlowCallNodeImpl extends FlowCallNode implements Serializable {
+    private static final long serialVersionUID = 543332738561754405L;
+    
+    private final String id;
+    private final ValueExpression calledFlowIdVE;
+    
+    private final ValueExpression calledFlowDocumentIdVE;
+    
+    private Map<String, Parameter> _outboundParameters;
+    private Map<String, Parameter> outboundParameters;
+
+    public FlowCallNodeImpl(String id, 
+            String calledFlowDocumentId, 
+            String calledFlowId, 
+            List<Parameter> outboundParametersFromConfig) {
+        FacesContext context = FacesContext.getCurrentInstance();
+        this.id = id;
+        
+        if (null != calledFlowDocumentId) {
+            this.calledFlowDocumentIdVE = context.getApplication().getExpressionFactory().createValueExpression(context.getELContext(), calledFlowDocumentId, String.class);
+        } else {
+            this.calledFlowDocumentIdVE = null;
+        }
+        
+        if (null != calledFlowId) {
+            this.calledFlowIdVE = context.getApplication().getExpressionFactory().createValueExpression(context.getELContext(), calledFlowId, String.class);
+        } else {
+            this.calledFlowIdVE = null;
+        }
+        
+        _outboundParameters = new ConcurrentHashMap<String, Parameter>();            
+        if (null != outboundParametersFromConfig) {
+            for (Parameter cur : outboundParametersFromConfig) {
+                _outboundParameters.put(cur.getName(), cur);
+            }
+        }
+        outboundParameters = Collections.unmodifiableMap(_outboundParameters);
+        
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (obj == null) {
+            return false;
+        }
+        if (getClass() != obj.getClass()) {
+            return false;
+        }
+        final FlowCallNodeImpl other = (FlowCallNodeImpl) obj;
+        if ((this.id == null) ? (other.id != null) : !this.id.equals(other.id)) {
+            return false;
+        }
+        if (this.calledFlowIdVE != other.calledFlowIdVE && (this.calledFlowIdVE == null || !this.calledFlowIdVE.equals(other.calledFlowIdVE))) {
+            return false;
+        }
+        if (this.calledFlowDocumentIdVE != other.calledFlowDocumentIdVE && (this.calledFlowDocumentIdVE == null || !this.calledFlowDocumentIdVE.equals(other.calledFlowDocumentIdVE))) {
+            return false;
+        }
+        if (this._outboundParameters != other._outboundParameters && (this._outboundParameters == null || !this._outboundParameters.equals(other._outboundParameters))) {
+            return false;
+        }
+        return true;
+    }
+
+    @Override
+    public int hashCode() {
+        int hash = 3;
+        hash = 59 * hash + (this.id != null ? this.id.hashCode() : 0);
+        hash = 59 * hash + (this.calledFlowIdVE != null ? this.calledFlowIdVE.hashCode() : 0);
+        hash = 59 * hash + (this.calledFlowDocumentIdVE != null ? this.calledFlowDocumentIdVE.hashCode() : 0);
+        hash = 59 * hash + (this._outboundParameters != null ? this._outboundParameters.hashCode() : 0);
+        return hash;
+    }
+    
+    
+    
+
+    @Override
+    public String getId() {
+        return id;
+    }
+
+    @Override
+    public String getCalledFlowDocumentId(FacesContext context) {
+        String result = null;
+        
+        if (null != calledFlowDocumentIdVE) {
+            result = (String) calledFlowDocumentIdVE.getValue(context.getELContext());
+        }
+        
+        return result;
+    }
+
+    @Override
+    public String getCalledFlowId(FacesContext context) {
+        String result = null;
+        
+        if (null != calledFlowIdVE) {
+            result = (String) calledFlowIdVE.getValue(context.getELContext());
+        }
+        
+        return result;
+    }
+
+    public Map<String, Parameter> _getOutboundParameters() {
+        return _outboundParameters;
+    }
+
+    @Override
+    public Map<String, Parameter> getOutboundParameters() {
+        return _outboundParameters;
+    }
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/flow/FlowDiscoveryCDIExtension.java b/jsf-ri/src/main/java/com/sun/faces/flow/FlowDiscoveryCDIExtension.java
new file mode 100644
index 0000000..d7e744e
--- /dev/null
+++ b/jsf-ri/src/main/java/com/sun/faces/flow/FlowDiscoveryCDIExtension.java
@@ -0,0 +1,118 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+
+package com.sun.faces.flow;
+
+import com.sun.faces.util.FacesLogger;
+import java.util.List;
+import java.util.concurrent.CopyOnWriteArrayList;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import javax.enterprise.event.Observes;
+import javax.enterprise.inject.spi.AnnotatedType;
+import javax.enterprise.inject.spi.BeanManager;
+import javax.enterprise.inject.spi.BeforeBeanDiscovery;
+import javax.enterprise.inject.spi.Extension;
+import javax.enterprise.inject.spi.ProcessProducer;
+import javax.enterprise.inject.spi.Producer;
+import javax.faces.flow.Flow;
+import javax.faces.flow.builder.FlowDefinition;
+
+/*
+ *  This is the hook into the bootstrapping of the entire feature.  
+ *
+ *  Use the CDI anntation scanning feature to find all beans annotated
+ *  with @FlowDefinition.  The scanning work done here is leveraged
+ *  in FlowDiscoveryCDIHelper.discoverFlows().
+ *
+ *  Use BeforeBeanDiscovery to manually register an application scoped
+ *  bean FlowDiscoveryCDIHelper.  I would rather not do this, but I
+ *  couldn't get the system to find this bean in any other way.  I think
+ *  this may have something to do with CDI being told not to scan within
+ *  javax.faces.jar, or something like that.
+ *
+ *  Use AfterBeanDiscovery to add a custom Context.  This is necessary
+ *  because it was the only way I found that actually worked that let me
+ *  pass in the results of the scanning into something I could invoke in
+ *  when processing the JSF PostConstructApplicationEvent.
+ *
+ *  Use ProcessBean to build up a tuple for each bean annotated with
+ *  @FlowDefinition { definingClass, flow-id, defining-document-id }.  A
+ *  data structure containing all the tuples is passed to
+ *  FlowDiscoveryCDIContext.
+ * 
+ */
+
+public class FlowDiscoveryCDIExtension implements Extension {
+
+
+    // Log instance for this class
+    private static final Logger LOGGER = FacesLogger.FLOW.getLogger();
+    private List<Producer<Flow>> flowProducers;
+    
+    public FlowDiscoveryCDIExtension() {
+        flowProducers = new CopyOnWriteArrayList<Producer<Flow>>();
+        
+    }
+    
+    public List<Producer<Flow>> getFlowProducers() {
+        return flowProducers;
+    }
+    
+    void beforeBeanDiscovery(@Observes final BeforeBeanDiscovery event, BeanManager beanManager) {
+        AnnotatedType flowDiscoveryHelper = beanManager.createAnnotatedType(FlowDiscoveryCDIHelper.class);
+        event.addAnnotatedType(flowDiscoveryHelper);
+        
+    }
+    
+    <T> void findFlowDefiners(@Observes ProcessProducer<T, Flow> pp) {
+    	if (pp.getAnnotatedMember().isAnnotationPresent(FlowDefinition.class)) {
+            flowProducers.add(pp.getProducer());
+            if (LOGGER.isLoggable(Level.FINE)) {
+                LOGGER.log(Level.FINE, "Discovered Flow Producer {0}", pp.getProducer().toString());
+            }
+
+    	}
+    }
+    
+    
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/flow/FlowDiscoveryCDIHelper.java b/jsf-ri/src/main/java/com/sun/faces/flow/FlowDiscoveryCDIHelper.java
new file mode 100644
index 0000000..b3f7f83
--- /dev/null
+++ b/jsf-ri/src/main/java/com/sun/faces/flow/FlowDiscoveryCDIHelper.java
@@ -0,0 +1,77 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.flow;
+
+import com.sun.faces.flow.builder.FlowBuilderImpl;
+import com.sun.faces.RIConstants;
+import java.io.Serializable;
+import javax.enterprise.context.Dependent;
+import javax.enterprise.inject.Produces;
+import javax.faces.context.FacesContext;
+import javax.faces.flow.builder.FlowBuilder;
+import javax.faces.flow.builder.FlowBuilderParameter;
+import javax.inject.Named;
+
+/*
+ * This is an application scoped bean named with a well-defined,
+ * but Mojarra private, name.  ApplicationAssociate.loadFlowsFromJars()
+ * uses this class to cause any flows defined in this way to be 
+ * built using the FlowBuilder API.
+ * 
+ * A better way is to @Inject the extension directly but this doesn't
+ * seem to work in the version of weld we have.
+ */
+
+ at Named(RIConstants.FLOW_DISCOVERY_CDI_HELPER_BEAN_NAME)
+ at Dependent
+public class FlowDiscoveryCDIHelper implements Serializable {
+    
+public FlowDiscoveryCDIHelper() {
+    }
+    
+    @Produces @FlowBuilderParameter
+    FlowBuilder createFlowBuilder() {
+        FacesContext context = FacesContext.getCurrentInstance();
+        FlowBuilder result = new FlowBuilderImpl(context);
+        return result;
+    }
+    
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/flow/FlowDiscoveryInfo.java b/jsf-ri/src/main/java/com/sun/faces/flow/FlowDiscoveryInfo.java
new file mode 100644
index 0000000..cd78634
--- /dev/null
+++ b/jsf-ri/src/main/java/com/sun/faces/flow/FlowDiscoveryInfo.java
@@ -0,0 +1,81 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.flow;
+
+public class FlowDiscoveryInfo {
+    
+    private Class definingClass;
+    private String id;
+    private String definingDocument;
+
+    public String getDefiningDocument() {
+        return definingDocument;
+    }
+
+    public void setDefiningDocument(String definingDocument) {
+        this.definingDocument = definingDocument;
+    }
+
+    public FlowDiscoveryInfo(Class definingClass, String id, String definingDocument) {
+        this.definingClass = definingClass;
+        this.id = id;
+        this.definingDocument = definingDocument;
+    }
+    
+    
+
+    public Class getDefiningClass() {
+        return definingClass;
+    }
+
+    public void setDefiningClass(Class definingClass) {
+        this.definingClass = definingClass;
+    }
+
+    public String getId() {
+        return id;
+    }
+
+    public void setId(String id) {
+        this.id = id;
+    }
+
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/flow/FlowHandlerFactoryImpl.java b/jsf-ri/src/main/java/com/sun/faces/flow/FlowHandlerFactoryImpl.java
new file mode 100644
index 0000000..0d81c52
--- /dev/null
+++ b/jsf-ri/src/main/java/com/sun/faces/flow/FlowHandlerFactoryImpl.java
@@ -0,0 +1,61 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.flow;
+
+import javax.faces.context.FacesContext;
+import javax.faces.flow.FlowHandler;
+import javax.faces.flow.FlowHandlerFactory;
+
+public class FlowHandlerFactoryImpl extends FlowHandlerFactory {
+
+    public FlowHandlerFactoryImpl() {
+    }
+
+    /**
+     * Create the flow handler.
+     * 
+     * @param context the Faces context.
+     * @return the flow handler.
+     */
+    @Override
+    public FlowHandler createFlowHandler(FacesContext context) {
+        return new FlowHandlerImpl();
+    }
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/flow/FlowHandlerImpl.java b/jsf-ri/src/main/java/com/sun/faces/flow/FlowHandlerImpl.java
new file mode 100644
index 0000000..4e1450f
--- /dev/null
+++ b/jsf-ri/src/main/java/com/sun/faces/flow/FlowHandlerImpl.java
@@ -0,0 +1,558 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.flow;
+
+import com.sun.faces.util.Util;
+import java.io.Serializable;
+import java.text.MessageFormat;
+import java.util.ArrayDeque;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.CopyOnWriteArrayList;
+import javax.el.ELContext;
+import javax.el.MethodExpression;
+import javax.el.ValueExpression;
+import javax.faces.application.ConfigurableNavigationHandler;
+import javax.faces.application.NavigationHandler;
+import javax.faces.context.ExternalContext;
+import javax.faces.context.FacesContext;
+import javax.faces.flow.FlowCallNode;
+import javax.faces.flow.Flow;
+import javax.faces.flow.FlowHandler;
+import javax.faces.flow.Parameter;
+
+public class FlowHandlerImpl extends FlowHandler {
+    
+    public static final String ABANDONED_FLOW = "javax.faces.flow.AbandonedFlow";
+
+    public FlowHandlerImpl() {
+        flowFeatureIsEnabled = false;
+        flows = new ConcurrentHashMap<String, Map<String, Flow>>();
+        flowsByFlowId = new ConcurrentHashMap<String, List<Flow>>();
+    }
+    
+    private boolean flowFeatureIsEnabled;
+
+    // key: definingDocumentId, value: Map<flowId, Flow>
+    private Map<String, Map<String, Flow>> flows;
+    
+    // key: flowId, List<Flow>
+    private Map<String, List<Flow>> flowsByFlowId;
+
+    @Override
+    public Map<Object, Object> getCurrentFlowScope() {
+        return FlowCDIContext.getCurrentFlowScopeAndUpdateSession();
+    }
+    
+    @Override
+    public Flow getFlow(FacesContext context, String definingDocumentId, String id) {
+        Util.notNull("context", context);
+        Util.notNull("definingDocumentId", definingDocumentId);
+        Util.notNull("id", id);
+        Flow result = null;
+        Map<String, Flow> mapsForDefiningDocument = flows.get(definingDocumentId);
+        
+        if (null != mapsForDefiningDocument) {
+            result = mapsForDefiningDocument.get(id);
+        }
+        
+        return result;
+    }
+
+    @Override
+    public void addFlow(FacesContext context, Flow toAdd) {
+        Util.notNull("context", context);
+        Util.notNull("toAdd", toAdd);
+
+        String id = toAdd.getId();
+        if (null == id || 0 == id.length()) {
+            throw new IllegalArgumentException("The id of the flow may not be null or zero-length.");
+        }
+        String definingDocumentId = toAdd.getDefiningDocumentId();
+        if (null == definingDocumentId) {
+            throw new IllegalArgumentException("The definingDocumentId of the flow may not be null.");
+        }
+        Map<String, Flow> mapsForDefiningDocument = flows.get(definingDocumentId);
+        if (null == mapsForDefiningDocument) {
+            mapsForDefiningDocument = new ConcurrentHashMap<String, Flow>();
+            flows.put(toAdd.getDefiningDocumentId(), mapsForDefiningDocument);
+        }
+        
+        Flow oldFlow = mapsForDefiningDocument.put(id, toAdd);
+        if (null != oldFlow) {
+            String message = MessageFormat.format("Flow with id \"{0}\" and definingDocumentId \"{1}\" already exists.", 
+                    id, definingDocumentId);
+            throw new IllegalStateException(message);
+        }
+
+        // Make it possible for the "transition" method to map from view nodes
+        // to flow instances.
+        List<Flow> flowsWithId = flowsByFlowId.get(id);
+        if (null == flowsWithId) {
+            flowsWithId = new CopyOnWriteArrayList<Flow>();
+            flowsByFlowId.put(id, flowsWithId);
+        }
+        flowsWithId.add(toAdd);
+        
+        NavigationHandler navigationHandler = context.getApplication().getNavigationHandler();
+        if (navigationHandler instanceof ConfigurableNavigationHandler) {
+            ((ConfigurableNavigationHandler)navigationHandler).inspectFlow(context, toAdd);
+        }
+        flowFeatureIsEnabled = true;
+    }
+
+    @Override
+    public boolean isActive(FacesContext context, String definingDocumentId, 
+                            String id) {
+        Util.notNull("context", context);
+        Util.notNull("definingDocumentId", definingDocumentId);
+        Util.notNull("id", id);
+        boolean result = false;
+        FlowDeque<Flow> flowStack = getFlowStack(context);
+        for (Flow cur : flowStack) {
+            if (id.equals(cur.getId()) &&
+                definingDocumentId.equals(cur.getDefiningDocumentId())) {
+                result = true;
+                break;
+            }
+        }
+        
+        return result;
+    }
+    
+    
+    
+    
+    @Override
+    public Flow getCurrentFlow(FacesContext context) {
+        Util.notNull("context", context);
+        
+        if (!flowFeatureIsEnabled) {
+            return null;
+        }
+        Flow result = null;
+        // If there is no session, there cannot possibly be a flow, so
+        // don't create one just to check.
+        if (null == context.getExternalContext().getSession(false)) {
+            return null;
+        }
+        
+        FlowDeque<Flow> flowStack = getFlowStack(context);
+        int returnDepth = flowStack.getReturnDepth();
+        if (flowStack.size() <= returnDepth) {
+            return null;
+        }
+        if (0 < returnDepth) {
+            Iterator<Flow> stackIter = flowStack.iterator();
+            int i = 0;
+            stackIter.next();
+            if (stackIter.hasNext()) {
+                do {
+                    result = stackIter.next();
+                    i++;
+                } while (i < returnDepth);
+            }
+        } else {
+            result = getFlowStack(context).peekFirst();
+        }
+        return result;
+    }
+
+    @Override
+    public String getLastDisplayedViewId(FacesContext context) {
+        Util.notNull("context", context);
+        String result = null;
+        FlowDeque<Flow> flowStack = getFlowStack(context);
+        result = flowStack.peekLastDisplayedViewId();
+        return result;
+    }
+    
+    public static final String FLOW_RETURN_DEPTH_PARAM_NAME = "jffrd";
+    
+    public int getAndClearReturnModeDepth(FacesContext context) {
+        int result = 0;
+        FlowDeque<Flow> flowStack = getFlowStack(context);
+        result = flowStack.getAndClearMaxReturnDepth(context);
+        
+        return result;
+    }
+
+    @Override
+    public void pushReturnMode(FacesContext context) {
+        Util.notNull("context", context);
+        FlowDeque<Flow> flowStack = getFlowStack(context);
+        flowStack.pushReturnMode();
+    }
+
+    @Override
+    public void popReturnMode(FacesContext context) {
+        Util.notNull("context", context);
+        FlowDeque<Flow> flowStack = getFlowStack(context);
+        flowStack.popReturnMode();
+    }
+    // We need a method that takes a view id of a view that is in a flow
+    // and makes the system "enter" the flow.
+    
+    @Override
+    @SuppressWarnings(value="")
+    public void transition(FacesContext context, Flow sourceFlow, 
+                           Flow targetFlow, FlowCallNode outboundCallNode,
+                           String toViewId) {
+        Util.notNull("context", context);
+        Util.notNull("toViewId", toViewId);
+        if (!flowFeatureIsEnabled) {
+           return;
+        }
+        
+        // there has to be a better way to structure this logic
+        if (!flowsEqual(sourceFlow, targetFlow)) {
+            // Do we have an outboundCallNode?
+            Map<String, Object> evaluatedParams = null;
+            if (null != outboundCallNode) {
+                Map<String, Parameter> outboundParameters = outboundCallNode.getOutboundParameters();
+                Map<String, Parameter> inboundParameters = targetFlow.getInboundParameters();
+                // Are we passing parameters?
+                if (null != outboundParameters && !outboundParameters.isEmpty() &&
+                        null != inboundParameters && !inboundParameters.isEmpty()) {
+                    
+                    ELContext elContext = context.getELContext();
+                    String curName;
+                    // for each outbound parameter...
+                    for (Map.Entry<String, Parameter> curOutbound : outboundParameters.entrySet()) {
+                        curName = curOutbound.getKey();
+                        if (inboundParameters.containsKey(curName)) {
+                            if (null == evaluatedParams) {
+                                evaluatedParams = new HashMap<String, Object>();
+                            }
+                            // Evaluate it and put it in the temporary map.
+                            // It is necessary to do this before the flow
+                            // transition because EL expressions may refer to
+                            // things in the current flow scope.
+                            evaluatedParams.put(curName, curOutbound.getValue().getValue().getValue(elContext));
+                        }
+                    }
+                }
+            }
+            
+            performPops(context, sourceFlow, targetFlow);
+            if (null != targetFlow && !targetFlow.equals(FlowImpl.ABANDONED_FLOW)) {
+                pushFlow(context, targetFlow, toViewId);
+            }
+            // Now the new flow is active, it's time to evaluate the inbound
+            // parameters.
+            if (null != evaluatedParams) {
+                Map<String, Parameter> inboundParameters = targetFlow.getInboundParameters();
+                ELContext elContext = context.getELContext();
+                String curName;
+                ValueExpression toSet;
+                for (Map.Entry<String, Object> curOutbound : evaluatedParams.entrySet()) {
+                    curName = curOutbound.getKey();
+                    assert(inboundParameters.containsKey(curName));
+                    toSet = inboundParameters.get(curName).getValue();
+                    toSet.setValue(elContext, curOutbound.getValue());
+                }
+            }
+        } 
+    }
+
+    @Override
+    public void clientWindowTransition(FacesContext context) {
+        Map<String, String> requestParamMap = context.getExternalContext().getRequestParameterMap();
+        String toFlowDocumentId = requestParamMap.get(TO_FLOW_DOCUMENT_ID_REQUEST_PARAM_NAME);
+        String flowId = requestParamMap.get(FLOW_ID_REQUEST_PARAM_NAME);
+        if (null != toFlowDocumentId) {
+            // don't use *this*, due to decoration
+            FlowHandler fh = context.getApplication().getFlowHandler();
+            Flow sourceFlow = fh.getCurrentFlow(context);
+            Flow targetFlow = null;            
+            FlowCallNode flowCallNode = null;
+            // if this is not a return...
+            if (null != flowId && !FlowHandler.NULL_FLOW.equals(toFlowDocumentId)) {
+                targetFlow = fh.getFlow(context, toFlowDocumentId, flowId);
+                if (null != targetFlow && null != sourceFlow) {
+                    flowCallNode = sourceFlow.getFlowCall(targetFlow);
+                }
+            } else {
+                String maxReturnDepthStr = requestParamMap.get(FLOW_RETURN_DEPTH_PARAM_NAME);
+                int maxReturnDepth = Integer.valueOf(maxReturnDepthStr).intValue();
+                FlowDeque<Flow> flowStack = getFlowStack(context);
+                flowStack.setMaxReturnDepth(context, maxReturnDepth);
+            }
+            
+            fh.transition(context, sourceFlow, targetFlow, flowCallNode, context.getViewRoot().getViewId());
+            
+        }
+    }
+    
+    private void performPops(FacesContext context, Flow sourceFlow, Flow targetFlow) {
+        // case 0: sourceFlow is null.  There must be nothing to pop.
+        if (null == sourceFlow) {
+            assert(null == peekFlow(context));
+            return;
+        }
+                
+        // case 1: target is null
+        if (null == targetFlow) {
+            FlowDeque<Flow> flowStack = getFlowStack(context);
+            int maxReturns = flowStack.getAndClearMaxReturnDepth(context);
+            for (int i=0; i < maxReturns; i++) {
+                popFlow(context);
+            }
+            return;
+        } 
+        
+        if (FlowImpl.ABANDONED_FLOW.equals(targetFlow)) {
+            FlowDeque<Flow> flowStack = getFlowStack(context);
+            int depth = flowStack.size();
+            for (int i=0; i<depth; i++) {
+                popFlow(context);
+            }
+            return;
+        }
+        
+        // case 3: neither source nor target are null.  If source does not
+        // have a call that calls target, we must pop source.
+        if (null == sourceFlow.getFlowCall(targetFlow)) {
+            popFlow(context);            
+        }
+
+    }
+    
+    /*
+     * The Flow.equals() method alone is insufficient because we need to account
+     * for the case where one or the other or both operands may be null.
+     * 
+     */
+    private boolean flowsEqual(Flow flow1, Flow flow2) {
+        boolean result = false;
+        if (flow1 == flow2) {
+            result = true;
+        } else if ((null == flow1) || (null == flow2)) {
+            result = false;
+        } else {
+            result = flow1.equals(flow2);
+        }
+        return result;
+    }
+    
+    
+    // <editor-fold defaultstate="collapsed" desc="Helper Methods">
+    
+    private void pushFlow(FacesContext context, Flow toPush, String lastDisplayedViewId) {
+        FlowDeque<Flow> flowStack = getFlowStack(context);
+        flowStack.addFirst(toPush, lastDisplayedViewId);
+        FlowCDIContext.flowEntered();
+        MethodExpression me  = toPush.getInitializer();
+        if (null != me) {
+            me.invoke(context.getELContext(), null);
+        }
+        forceSessionUpdateForFlowStack(context, flowStack);
+    }
+    
+    private Flow peekFlow(FacesContext context) {
+        FlowDeque<Flow> flowStack = getFlowStack(context);
+        return flowStack.peekFirst();
+    }
+    
+    private Flow popFlow(FacesContext context) {
+        FlowDeque<Flow> flowStack = getFlowStack(context);
+        Flow currentFlow = peekFlow(context);
+        if (null != currentFlow) {
+            callFinalizer(context, currentFlow);
+        }
+        Flow result = flowStack.pollFirst();
+        forceSessionUpdateForFlowStack(context, flowStack);
+        return result;
+        
+    }
+    
+    private void callFinalizer(FacesContext context, Flow currentFlow) {
+        MethodExpression me  = currentFlow.getFinalizer();
+        if (null != me) {
+            me.invoke(context.getELContext(), null);
+        }
+        FlowCDIContext.flowExited();
+    }
+    
+    private FlowDeque<Flow> getFlowStack(FacesContext context) {
+        FlowDeque<Flow> result = null;
+        ExternalContext extContext = context.getExternalContext();
+        String sessionKey = extContext.getClientWindow().getId() + "_flowStack";
+        Map<String, Object> sessionMap = extContext.getSessionMap();
+        result = (FlowDeque<Flow>) sessionMap.get(sessionKey);
+        if (null == result) {
+            result = new FlowDeque<Flow>(sessionKey);
+            sessionMap.put(sessionKey, result);
+        }
+        
+        return result;
+    }
+    
+    private void forceSessionUpdateForFlowStack(FacesContext context, FlowDeque<Flow> stack) {
+        ExternalContext extContext = context.getExternalContext();
+        Map<String, Object> sessionMap = extContext.getSessionMap();
+        sessionMap.put(stack.getSessionKey(), stack);
+    }
+    
+    private static class FlowDeque<E> implements Iterable<E>, Serializable {
+        
+        private static final long serialVersionUID = 7915803727932706270L;
+        
+        private int returnDepth = 0;
+        private ArrayDeque<E> data;
+        private static class RideAlong implements Serializable {
+            String lastDisplayedViewId;
+
+            public RideAlong(String lastDisplayedViewId) {
+                this.lastDisplayedViewId = lastDisplayedViewId;
+            }
+            
+        }
+        private ArrayDeque<RideAlong> rideAlong;
+        private final String sessionKey;
+
+        public FlowDeque(final String sessionKey) {
+            data = new ArrayDeque<E>();
+            rideAlong = new ArrayDeque<RideAlong>();
+            this.sessionKey = sessionKey;
+        }
+        
+        public String getSessionKey() {
+            return sessionKey;
+        }
+        
+        public int size() {
+            return data.size();
+        }
+
+        @Override
+        public Iterator<E> iterator() {
+            return data.iterator();
+        }
+        
+        public void addFirst(E e, String lastDisplayedViewId) {
+            rideAlong.addFirst(new RideAlong(lastDisplayedViewId));
+            data.addFirst(e);
+        }
+        
+        public E pollFirst() {
+            rideAlong.pollFirst();
+            return data.pollFirst();
+        }
+        
+        public E peekFirst() {
+            return data.peekFirst();
+        }
+        
+        public String peekLastDisplayedViewId() {
+            String result = null;
+            RideAlong helper = null;
+            int myReturnDepth = this.getReturnDepth();
+            if (0 < myReturnDepth) {
+                Iterator<RideAlong> stackIter = rideAlong.iterator();
+                stackIter.next();
+                int i = 0;
+                if (stackIter.hasNext()) {
+                    do {
+                        helper = stackIter.next();
+                        i++;
+                    } while (i < myReturnDepth);
+                }
+            } else {
+                helper = rideAlong.peekFirst();
+            }
+            
+            if (null != helper) {
+                result = helper.lastDisplayedViewId;
+            }
+            
+            return result;
+        }
+        
+        public int getReturnDepth() {
+            return returnDepth;
+        }
+        
+        private void setMaxReturnDepth(FacesContext context, int value) {
+            Map<Object, Object> attrs = context.getAttributes();
+            attrs.put(FLOW_RETURN_DEPTH_PARAM_NAME, value);
+        }
+        
+        private int getAndClearMaxReturnDepth(FacesContext context) {
+            Map<Object, Object> attrs = context.getAttributes();
+            int result = 0;
+            if (attrs.containsKey(FLOW_RETURN_DEPTH_PARAM_NAME)) {
+              result = ((Integer)attrs.remove(FLOW_RETURN_DEPTH_PARAM_NAME)).intValue();
+            } 
+            return result;
+        }
+        
+        private void incrementMaxReturnDepth() {
+            FacesContext context = FacesContext.getCurrentInstance();
+            Map<Object, Object> attrs = context.getAttributes();
+            if (!attrs.containsKey(FLOW_RETURN_DEPTH_PARAM_NAME)) {
+                attrs.put(FLOW_RETURN_DEPTH_PARAM_NAME, (Integer) 1);
+            } else {
+                Integer cur = (Integer) attrs.get(FLOW_RETURN_DEPTH_PARAM_NAME);
+                attrs.put(FLOW_RETURN_DEPTH_PARAM_NAME, (Integer) cur + 1);
+            }
+            
+        }
+        
+        public void pushReturnMode() {
+            this.incrementMaxReturnDepth();
+            this.returnDepth++;
+        }
+        
+        public void popReturnMode() {
+            this.returnDepth--;
+        }
+
+
+        
+    }
+        
+    // </editor-fold>
+    
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/flow/FlowImpl.java b/jsf-ri/src/main/java/com/sun/faces/flow/FlowImpl.java
new file mode 100644
index 0000000..fd81a62
--- /dev/null
+++ b/jsf-ri/src/main/java/com/sun/faces/flow/FlowImpl.java
@@ -0,0 +1,405 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.flow;
+
+import com.sun.faces.util.Util;
+import java.io.Serializable;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.CopyOnWriteArrayList;
+import javax.el.MethodExpression;
+import javax.faces.application.NavigationCase;
+import javax.faces.context.FacesContext;
+import javax.faces.flow.FlowCallNode;
+import javax.faces.flow.Flow;
+import javax.faces.flow.FlowHandler;
+import javax.faces.flow.FlowNode;
+import javax.faces.flow.MethodCallNode;
+import javax.faces.flow.Parameter;
+import javax.faces.flow.ReturnNode;
+import javax.faces.flow.SwitchNode;
+import javax.faces.flow.ViewNode;
+import javax.faces.lifecycle.ClientWindow;
+
+public class FlowImpl extends Flow implements Serializable {
+
+    private static final long serialVersionUID = 5287030395068302998L;
+
+    public static final Flow SYNTHESIZED_RETURN_CASE_FLOW = new FlowImpl(FlowHandler.NULL_FLOW);
+    
+    public static final Flow ABANDONED_FLOW = new FlowImpl(FlowHandlerImpl.ABANDONED_FLOW);
+
+    // <editor-fold defaultstate="collapsed" desc="Instance variables">    
+    
+    private String id;
+    private String definingDocumentId;
+    private String startNodeId;
+    private ConcurrentHashMap<String, Set<NavigationCase>> _navigationCases;
+    private Map<String, Set<NavigationCase>> navigationCases;
+    private CopyOnWriteArrayList<ViewNode> _views;
+    private List<ViewNode> views;
+    private CopyOnWriteArrayList<MethodCallNode> _methodCalls;
+    private List<MethodCallNode> methodCalls;
+    private ConcurrentHashMap<String, Parameter> _inboundParameters;
+    private Map<String,Parameter> inboundParameters;
+    private ConcurrentHashMap<String, ReturnNode> _returns;
+    private Map<String, ReturnNode> returns;
+    private ConcurrentHashMap<String, SwitchNode> _switches;
+    private Map<String, SwitchNode> switches;
+    private ConcurrentHashMap<String, FlowCallNode> _facesFlowCalls;
+    private Map<String, FlowCallNode> facesFlowCalls;
+    private ConcurrentHashMap<String, FlowCallNode> _facesFlowCallsByTargetFlowId;
+    private MethodExpression initializer;
+    private MethodExpression finalizer;
+    private boolean hasBeenInitialized = false;
+    
+    // </editor-fold>
+    
+    // <editor-fold defaultstate="collapsed" desc="Constructors">       
+
+    public FlowImpl() {
+        _inboundParameters = new ConcurrentHashMap<String, Parameter>();
+        inboundParameters = Collections.unmodifiableMap(_inboundParameters);
+        _returns = new ConcurrentHashMap<String, ReturnNode>();
+        returns = Collections.unmodifiableMap(_returns);
+        _switches = new ConcurrentHashMap<String, SwitchNode>();
+        switches = Collections.unmodifiableMap(_switches);
+        _facesFlowCalls = new ConcurrentHashMap<String, FlowCallNode>();
+        facesFlowCalls = Collections.unmodifiableMap(_facesFlowCalls);
+        _facesFlowCallsByTargetFlowId = new ConcurrentHashMap<String, FlowCallNode>();
+        _views = new CopyOnWriteArrayList<ViewNode>();
+        views = Collections.unmodifiableList(_views);
+        _navigationCases = new ConcurrentHashMap<String, Set<NavigationCase>>();
+        navigationCases = Collections.unmodifiableMap(_navigationCases);
+        _methodCalls = new CopyOnWriteArrayList<MethodCallNode>();
+        methodCalls = Collections.unmodifiableList(_methodCalls);
+    }
+    
+    private FlowImpl(String id) {
+        this.id = id;
+        definingDocumentId = null;
+        startNodeId = null;
+        _navigationCases = null;
+        navigationCases = null;
+        _views = null;
+        views = null;
+        _methodCalls = null;
+        methodCalls = null;
+        _inboundParameters = null;
+        inboundParameters = null;
+        _returns = null;
+        returns = null;
+        _switches = null;
+        switches = null;
+        _facesFlowCalls = null;
+        facesFlowCalls = null;
+        _facesFlowCallsByTargetFlowId = null;
+        initializer = null;
+        finalizer = null;
+        hasBeenInitialized = true;
+    }    
+
+    // </editor-fold>
+
+    // <editor-fold defaultstate="collapsed" desc="Object helpers">       
+        
+    @Override
+    public boolean equals(Object obj) {
+        if (obj == null) {
+            return false;
+        }
+        if (getClass() != obj.getClass()) {
+            return false;
+        }
+        final Flow other = (Flow) obj;
+        if ((this.id == null) ? (other.getId() != null) : !this.id.equals(other.getId())) {
+            return false;
+        }
+        if ((this.startNodeId == null) ? (other.getStartNodeId() != null) : !this.startNodeId.equals(other.getStartNodeId())) {
+            return false;
+        }
+        if (this._views != other.getViews() && (this._views == null || !this._views.equals(other.getViews()))) {
+            return false;
+        }
+        FacesContext context = FacesContext.getCurrentInstance();
+        if (null != context) {
+            if (this._returns != other.getReturns() && (this._returns == null || !this._returns.equals(other.getReturns()))) {
+                return false;
+            }
+            if (this.initializer != other.getInitializer() && (this.initializer == null || !this.initializer.equals(other.getInitializer()))) {
+                return false;
+            }
+            if (this.finalizer != other.getFinalizer() && (this.finalizer == null || !this.finalizer.equals(other.getFinalizer()))) {
+                return false;
+            }
+        }
+        return true;
+    }
+
+    @Override
+    public int hashCode() {
+        int hash = 3;
+        hash = 59 * hash + (this.id != null ? this.id.hashCode() : 0);
+        hash = 59 * hash + (this.startNodeId != null ? this.startNodeId.hashCode() : 0);
+        hash = 59 * hash + (this._views != null ? this._views.hashCode() : 0);
+        hash = 59 * hash + (this._returns != null ? this._returns.hashCode() : 0);
+        hash = 59 * hash + (this.initializer != null ? this.initializer.hashCode() : 0);
+        hash = 59 * hash + (this.finalizer != null ? this.finalizer.hashCode() : 0);
+        return hash;
+    }
+
+    // </editor-fold>
+    
+   
+    // <editor-fold defaultstate="collapsed" desc="Simple properties">       
+
+
+    @Override
+    public String getId() {
+        return id;
+    }
+
+    @Override
+    public String getDefiningDocumentId() {
+        return definingDocumentId;
+    }
+
+    public void setId(String definingDocumentId, String id) {
+        Util.notNull("definingDocumentId", definingDocumentId);
+        Util.notNull("flowId", id);
+        this.id = id;
+        this.definingDocumentId = definingDocumentId;
+    }
+
+    @Override
+    public String getStartNodeId() {
+        return startNodeId;
+    }
+
+    public void setStartNodeId(String defaultNodeId) {
+        this.startNodeId = defaultNodeId;
+    }
+
+    @Override
+    public MethodExpression getFinalizer() {
+        return finalizer;
+    }
+
+    public void setFinalizer(MethodExpression finalizer) {
+        this.finalizer = finalizer;
+    }
+
+    @Override
+    public MethodExpression getInitializer() {
+        return initializer;
+    }
+
+    public void setInitializer(MethodExpression initializer) {
+        this.initializer = initializer;
+    }
+    
+    @Override
+    public Map<String, Parameter> getInboundParameters() {
+        return inboundParameters;
+    }    
+    
+    public Map<String, Parameter> _getInboundParameters() {
+        return _inboundParameters;
+    }    
+    
+    // </editor-fold>
+
+    
+    // <editor-fold defaultstate="collapsed" desc="Graph properties">       
+
+    @Override
+    public List<ViewNode> getViews() {
+        return views;
+    }
+
+    public List<ViewNode> _getViews() {
+        return _views;
+    }
+
+    @Override
+    public Map<String,ReturnNode> getReturns() {
+        return returns;
+    }
+    
+    public Map<String,ReturnNode> _getReturns() {
+        return _returns;
+    }
+
+    @Override
+    public Map<String,SwitchNode> getSwitches() {
+        return switches;
+    }
+    
+    public Map<String,SwitchNode> _getSwitches() {
+        return _switches;
+    }
+
+    @Override
+    public Map<String,FlowCallNode> getFlowCalls() {
+        return facesFlowCalls;
+    }
+
+    public Map<String,FlowCallNode> _getFlowCalls() {
+        return _facesFlowCalls;
+    }
+
+    @Override
+    public Map<String, Set<NavigationCase>> getNavigationCases() {
+        return navigationCases;
+    }
+    
+    public Map<String, Set<NavigationCase>> _getNavigationCases() {
+        return _navigationCases;
+    }
+    
+    @Override
+    public FlowCallNode getFlowCall(Flow targetFlow) {
+        String targetFlowId = targetFlow.getId();
+        if (!hasBeenInitialized) {
+            FacesContext context = FacesContext.getCurrentInstance();
+            this.init(context);
+        }
+        FlowCallNode result = _facesFlowCallsByTargetFlowId.get(targetFlowId);
+        
+        return result;
+    }
+
+    @Override
+    public List<MethodCallNode> getMethodCalls() {
+        return methodCalls;
+    }
+
+    public List<MethodCallNode> _getMethodCalls() {
+        return _methodCalls;
+    }
+
+    // </editor-fold>
+
+    
+    // <editor-fold defaultstate="collapsed" desc="Graph navigation">       
+    
+    @Override
+    public FlowNode getNode(String nodeId) {
+        List<ViewNode> myViews = getViews();
+        FlowNode result = null;
+        
+        if (null != myViews) {
+            for (ViewNode cur : myViews) {
+                if (nodeId.equals(cur.getId())) {
+                    result = cur;
+                    break;
+                }
+            }
+        }
+        if (null == result) {
+            Map<String, SwitchNode> mySwitches = getSwitches();
+            result = mySwitches.get(nodeId);
+        }
+        if (null == result) {
+            List<MethodCallNode> myMethods = getMethodCalls();
+            for (MethodCallNode cur : myMethods) {
+                if (nodeId.equals(cur.getId())) {
+                    result = cur;
+                    break;
+                }
+            }
+        }
+        if (null == result) {
+            Map<String, FlowCallNode> myCalls = getFlowCalls();
+            result = myCalls.get(nodeId);
+        }
+        
+        if (null == result) {
+            Map<String, ReturnNode> myReturns = getReturns();
+            result = myReturns.get(nodeId);
+        }
+        
+        return result;
+        
+    }
+    
+    // </editor-fold>
+
+    
+    // <editor-fold defaultstate="collapsed" desc="Outside interaction">       
+    
+    
+    @Override
+    public String getClientWindowFlowId(ClientWindow curWindow) {
+        String result = null;
+
+        result = curWindow.getId() + "_" + getId();
+        
+        return result;
+    }
+    
+    // </editor-fold>
+    
+    
+    // <editor-fold defaultstate="collapsed" desc="Helpers">
+    
+    public void init(FacesContext context) {
+        if (hasBeenInitialized) {
+            return;
+        }
+        hasBeenInitialized = true;
+        
+        // Populate lookup data structures.
+        FlowCallNode curNode = null;
+        String curTargetFlowId = null;
+        for (Map.Entry<String,FlowCallNode> cur : _facesFlowCalls.entrySet()) {
+            curNode = cur.getValue();
+            curTargetFlowId = curNode.getCalledFlowId(context);
+            _facesFlowCallsByTargetFlowId.put(curTargetFlowId, curNode);
+        }
+    }
+    
+    // </editor-fold>
+    
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/flow/MethodCallNodeImpl.java b/jsf-ri/src/main/java/com/sun/faces/flow/MethodCallNodeImpl.java
new file mode 100644
index 0000000..9040138
--- /dev/null
+++ b/jsf-ri/src/main/java/com/sun/faces/flow/MethodCallNodeImpl.java
@@ -0,0 +1,159 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.flow;
+
+
+import com.sun.faces.facelets.util.ReflectionUtil;
+import com.sun.faces.util.FacesLogger;
+import java.io.Serializable;
+import java.util.Collections;
+import java.util.List;
+import java.util.concurrent.CopyOnWriteArrayList;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.el.ELContext;
+import javax.el.ExpressionFactory;
+import javax.el.MethodExpression;
+import javax.el.ValueExpression;
+import javax.faces.context.FacesContext;
+import javax.faces.flow.MethodCallNode;
+import javax.faces.flow.Parameter;
+
+public class MethodCallNodeImpl extends MethodCallNode implements Serializable {
+
+    private static final long serialVersionUID = -5400138716176841428L;
+    
+    private final String id;
+    
+    private static final Logger LOGGER = FacesLogger.FLOW.getLogger();
+    
+    public MethodCallNodeImpl(String id) {
+        this.id = id;
+        _parameters = new CopyOnWriteArrayList<Parameter>();            
+    }
+    
+    public MethodCallNodeImpl(FacesContext context, String id, 
+            String methodExpressionString,
+            String defaultOutcomeString,
+            List<Parameter> parametersFromConfig) {
+        this(id);
+        if (null != parametersFromConfig) {
+            _parameters.addAll(parametersFromConfig);
+        }
+        parameters = Collections.unmodifiableList(_parameters);
+        
+        ExpressionFactory ef = context.getApplication().getExpressionFactory();
+        Class [] paramTypes = new Class[0];
+        if (0 < parameters.size()) {
+            paramTypes = new Class[parameters.size()];
+            int i = 0;
+            for (Parameter cur : parameters) {
+                if (null != cur.getName()) {
+                    try {
+                        paramTypes[i] = ReflectionUtil.forName(cur.getName());
+                    } catch (ClassNotFoundException cnfe) {
+                        if (LOGGER.isLoggable(Level.SEVERE)) {
+                            LOGGER.log(Level.SEVERE, "parameter " + cur.getName() + 
+                                    "incorrect type", cnfe);
+                        }
+                        paramTypes[i] = null;
+                    }
+                } else {
+                    paramTypes[i] = String.class;
+                }
+                i++;
+            }
+        }
+        ELContext elContext = context.getELContext();
+        methodExpression = ef.createMethodExpression(elContext, 
+                methodExpressionString, null, paramTypes);
+        
+        if (null != defaultOutcomeString) {
+            outcome = ef.createValueExpression(elContext, defaultOutcomeString, 
+                    Object.class);
+        }
+        
+    }
+    
+    private MethodExpression methodExpression;
+    
+    private ValueExpression outcome;
+
+    private List<Parameter> _parameters;
+    private List<Parameter> parameters;
+
+    @Override
+    public String getId() {
+        return id;
+    }
+
+    @Override
+    public List<Parameter> getParameters() {
+        return parameters;
+    }
+    
+    public List<Parameter> _getParameters() {
+        if (null == parameters) {
+            parameters = Collections.unmodifiableList(_parameters);
+        }
+        return _parameters;
+    }
+
+    @Override
+    public MethodExpression getMethodExpression() {
+        return methodExpression;
+    }
+    
+    public void setMethodExpression(MethodExpression methodExpression) {
+        this.methodExpression = methodExpression;
+    }
+    
+    @Override
+    public ValueExpression getOutcome() {
+        return outcome;
+    }
+
+    public void setOutcome(ValueExpression outcome) {
+        this.outcome = outcome;
+    }
+    
+    
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/flow/ParameterImpl.java b/jsf-ri/src/main/java/com/sun/faces/flow/ParameterImpl.java
new file mode 100644
index 0000000..c95e4d5
--- /dev/null
+++ b/jsf-ri/src/main/java/com/sun/faces/flow/ParameterImpl.java
@@ -0,0 +1,83 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.flow;
+
+import java.io.Serializable;
+import javax.el.ValueExpression;
+import javax.faces.flow.Parameter;
+
+public class ParameterImpl extends Parameter implements Serializable {
+    
+    private static final long serialVersionUID = -5433802753213440653L;
+
+    private String name;
+    private ValueExpression value;
+    
+    public ParameterImpl() {
+        
+    }
+
+    public ParameterImpl(String name, ValueExpression value) {
+        this.name = name;
+        this.value = value;
+    }
+    
+    @Override
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    @Override
+    public ValueExpression getValue() {
+        return value;
+    }
+
+    public void setValue(ValueExpression value) {
+        this.value = value;
+    }
+    
+    
+    
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/flow/ReturnNodeImpl.java b/jsf-ri/src/main/java/com/sun/faces/flow/ReturnNodeImpl.java
new file mode 100644
index 0000000..bb73aca
--- /dev/null
+++ b/jsf-ri/src/main/java/com/sun/faces/flow/ReturnNodeImpl.java
@@ -0,0 +1,98 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.flow;
+
+import com.sun.faces.util.Util;
+import java.io.Serializable;
+import javax.el.ExpressionFactory;
+import javax.el.ValueExpression;
+import javax.faces.context.FacesContext;
+import javax.faces.flow.ReturnNode;
+
+public class ReturnNodeImpl extends ReturnNode implements Serializable {
+    
+    private static final long serialVersionUID = 7159675814039078231L;
+    
+    private final String id;
+    private ValueExpression fromOutcome;
+
+    public ReturnNodeImpl(String id) {
+        this.id = id;
+        this.fromOutcome = null;
+    }
+
+    @Override
+    public String getFromOutcome(FacesContext context) {
+        Util.notNull("context", context);
+        String result = null;
+        
+        if (null != fromOutcome) {
+            Object objResult = fromOutcome.getValue(context.getELContext());
+            result = (null != objResult) ? objResult.toString() : null;
+        }
+        return result;
+    }
+    
+    public void setFromOutcome(String fromOutcome) {
+        if (null == fromOutcome) {
+            this.fromOutcome = null;
+        }
+        FacesContext context = FacesContext.getCurrentInstance();
+        ExpressionFactory eFactory = context.getApplication().getExpressionFactory();
+        this.fromOutcome = eFactory.createValueExpression(context.getELContext(), 
+                fromOutcome, Object.class);
+        
+    }
+    
+    public void setFromOutcome(ValueExpression fromOutcome) {
+        this.fromOutcome = fromOutcome;
+    }
+
+    @Override
+    public String getId() {
+        return id;
+    }
+    
+    
+    
+    
+    
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/flow/SwitchCaseImpl.java b/jsf-ri/src/main/java/com/sun/faces/flow/SwitchCaseImpl.java
new file mode 100644
index 0000000..9d8fac8
--- /dev/null
+++ b/jsf-ri/src/main/java/com/sun/faces/flow/SwitchCaseImpl.java
@@ -0,0 +1,104 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.flow;
+
+import java.io.Serializable;
+import javax.el.ExpressionFactory;
+import javax.el.ValueExpression;
+import javax.faces.context.FacesContext;
+import javax.faces.flow.SwitchCase;
+
+public class SwitchCaseImpl extends SwitchCase implements Serializable {
+    
+    private static final long serialVersionUID = -8982500105361921446L;
+
+    // This is the id of the <return> or <switch>
+    private String enclosingId;
+    private String fromOutcome;
+    private String condition;
+    private ValueExpression conditionExpr;
+
+    public ValueExpression getConditionExpression () {
+        return conditionExpr;
+    }
+
+    @Override
+    public Boolean getCondition(FacesContext context) {
+        if (conditionExpr == null && condition != null) {
+            ExpressionFactory factory =
+                  context.getApplication().getExpressionFactory();
+            conditionExpr = factory.createValueExpression(context.getELContext(),
+                                                          condition,
+                                                          Boolean.class);
+        }
+
+        return ((conditionExpr != null)
+                ? (Boolean) conditionExpr.getValue(context.getELContext())
+                : Boolean.FALSE);
+    }
+    
+    public void setCondition(String condition) {
+        this.condition = condition;
+    }
+
+    public void setConditionExpression(ValueExpression conditionExpression) {
+        this.conditionExpr = conditionExpression;
+    }
+    
+    @Override
+    public String getFromOutcome() {
+        return fromOutcome;
+    }
+    
+    public void setFromOutcome(String fromOutcome) {
+        this.fromOutcome = fromOutcome;
+    }
+
+    public String getEnclosingId() {
+        return enclosingId;
+    }
+
+    public void setEnclosingId(String returnId) {
+        this.enclosingId = returnId;
+    }
+
+    
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/flow/SwitchNodeImpl.java b/jsf-ri/src/main/java/com/sun/faces/flow/SwitchNodeImpl.java
new file mode 100644
index 0000000..a2ca94f
--- /dev/null
+++ b/jsf-ri/src/main/java/com/sun/faces/flow/SwitchNodeImpl.java
@@ -0,0 +1,140 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.flow;
+
+import java.io.Serializable;
+import java.util.Collections;
+import java.util.List;
+import java.util.concurrent.CopyOnWriteArrayList;
+import javax.el.ExpressionFactory;
+import javax.el.ValueExpression;
+import javax.faces.context.FacesContext;
+import javax.faces.flow.SwitchCase;
+import javax.faces.flow.SwitchNode;
+
+public class SwitchNodeImpl extends SwitchNode implements Serializable {
+    
+    private static final long serialVersionUID = -9203493858518714933L;
+        
+    private final String id;
+    private ValueExpression defaultOutcome;
+    private CopyOnWriteArrayList<SwitchCase> _cases;
+    private List<SwitchCase> cases;
+
+    public SwitchNodeImpl(String id) {
+        this.id = id;
+        
+        this.defaultOutcome = null;
+        _cases = new CopyOnWriteArrayList<SwitchCase>();
+        cases = Collections.unmodifiableList(_cases);
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (obj == null) {
+            return false;
+        }
+        if (getClass() != obj.getClass()) {
+            return false;
+        }
+        final SwitchNodeImpl other = (SwitchNodeImpl) obj;
+        if ((this.id == null) ? (other.id != null) : !this.id.equals(other.id)) {
+            return false;
+        }
+        if (this.defaultOutcome != other.defaultOutcome && (this.defaultOutcome == null || !this.defaultOutcome.equals(other.defaultOutcome))) {
+            return false;
+        }
+        if (this._cases != other._cases && (this._cases == null || !this._cases.equals(other._cases))) {
+            return false;
+        }
+        return true;
+    }
+
+    @Override
+    public int hashCode() {
+        int hash = 5;
+        hash = 47 * hash + (this.id != null ? this.id.hashCode() : 0);
+        hash = 47 * hash + (this.defaultOutcome != null ? this.defaultOutcome.hashCode() : 0);
+        hash = 47 * hash + (this._cases != null ? this._cases.hashCode() : 0);
+        return hash;
+    }
+    
+    @Override
+    public String getId() {
+        return id;
+    }
+        
+    @Override
+    public List<SwitchCase> getCases() {
+        return cases;
+    }
+
+    public List<SwitchCase> _getCases() {
+        return _cases;
+    }
+
+    @Override
+    public String getDefaultOutcome(FacesContext context) {
+        String result = null;
+        
+        if (null != defaultOutcome) {
+            Object objResult = defaultOutcome.getValue(context.getELContext());
+            result = (null != objResult) ? objResult.toString() : null;
+        }
+        return result;
+    }
+    
+    public void setDefaultOutcome(String defaultOutcome) {
+        if (null == defaultOutcome) {
+            this.defaultOutcome = null;
+        }
+        FacesContext context = FacesContext.getCurrentInstance();
+        ExpressionFactory eFactory = context.getApplication().getExpressionFactory();
+        this.defaultOutcome = eFactory.createValueExpression(context.getELContext(), 
+                defaultOutcome, Object.class);
+    }
+    
+    public void setDefaultOutcome(ValueExpression defaultOutcome) {
+        this.defaultOutcome = defaultOutcome;
+    }
+
+    
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/flow/ViewNodeImpl.java b/jsf-ri/src/main/java/com/sun/faces/flow/ViewNodeImpl.java
new file mode 100644
index 0000000..f86b1cf
--- /dev/null
+++ b/jsf-ri/src/main/java/com/sun/faces/flow/ViewNodeImpl.java
@@ -0,0 +1,79 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.flow;
+
+import java.io.Serializable;
+import javax.faces.flow.ViewNode;
+
+public class ViewNodeImpl extends ViewNode implements Serializable {
+    
+    private static final long serialVersionUID = -7577859001307479164L;
+    
+    private final String id;
+    private final String vdlDocumentId;
+
+    public ViewNodeImpl(String id, String vdlDocumentIdIn) {
+        this.id = id;
+        
+        int i = vdlDocumentIdIn.indexOf("META-INF/flows");
+        
+        if (-1 != i) { 
+            vdlDocumentIdIn = vdlDocumentIdIn.substring(i + 14);
+        } else if (vdlDocumentIdIn.startsWith("/WEB-INF")) {
+            vdlDocumentIdIn = vdlDocumentIdIn.substring(8);
+        } else if (vdlDocumentIdIn.startsWith("WEB-INF")) {
+            vdlDocumentIdIn = vdlDocumentIdIn.substring(7);
+        }
+        this.vdlDocumentId = vdlDocumentIdIn;
+        
+    }
+
+    @Override
+    public String getId() {
+        return id;
+    }
+    
+    @Override
+    public String getVdlDocumentId() {
+        return vdlDocumentId;
+    }
+    
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/flow/builder/FlowBuilderImpl.java b/jsf-ri/src/main/java/com/sun/faces/flow/builder/FlowBuilderImpl.java
new file mode 100644
index 0000000..d5a5d7b
--- /dev/null
+++ b/jsf-ri/src/main/java/com/sun/faces/flow/builder/FlowBuilderImpl.java
@@ -0,0 +1,209 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.flow.builder;
+
+import com.sun.faces.flow.FlowImpl;
+import com.sun.faces.flow.ParameterImpl;
+import com.sun.faces.util.Util;
+import javax.el.ELContext;
+import javax.el.ExpressionFactory;
+import javax.el.MethodExpression;
+import javax.el.ValueExpression;
+import javax.faces.context.FacesContext;
+import javax.faces.flow.Flow;
+import javax.faces.flow.builder.FlowBuilder;
+import javax.faces.flow.builder.FlowCallBuilder;
+import javax.faces.flow.builder.MethodCallBuilder;
+import javax.faces.flow.builder.NavigationCaseBuilder;
+import javax.faces.flow.builder.ReturnBuilder;
+import javax.faces.flow.builder.SwitchBuilder;
+import javax.faces.flow.builder.ViewBuilder;
+
+public class FlowBuilderImpl extends FlowBuilder {
+    
+    private FlowImpl flow;
+    private ExpressionFactory expressionFactory;
+    private ELContext elContext;
+    private FacesContext context;
+    private boolean didInit;
+    private boolean hasId;
+    
+    public FlowBuilderImpl(FacesContext context) {
+        flow = new FlowImpl();
+        this.context = context;
+        this.expressionFactory = context.getApplication().getExpressionFactory();
+        this.elContext = context.getELContext();
+        this.didInit = false;
+        this.hasId = false;
+
+    }
+    
+    // <editor-fold defaultstate="collapsed" desc="Create Flow Nodes">   
+
+    @Override
+    public NavigationCaseBuilder navigationCase() {
+        return new NavigationCaseBuilderImpl(this);
+    }
+
+    @Override
+    public ViewBuilder viewNode(String viewNodeId, String vdlDocumentId) {
+        Util.notNull("viewNodeId", viewNodeId);
+        Util.notNull("vdlDocumentId", vdlDocumentId);
+        ViewBuilder result = new ViewBuilderImpl(this, viewNodeId, vdlDocumentId);
+        return result;
+    }
+
+    @Override
+    public SwitchBuilder switchNode(String switchNodeId) {
+        Util.notNull("switchNodeId", switchNodeId);
+        return new SwitchBuilderImpl(this, switchNodeId);
+    }
+    
+    @Override
+    public ReturnBuilder returnNode(String returnNodeId) {
+        Util.notNull("returnNodeId", returnNodeId);
+        return new ReturnBuilderImpl(this, returnNodeId);
+    }
+    
+    @Override
+    public MethodCallBuilder methodCallNode(String methodCallNodeId) {
+        Util.notNull("methodCallNodeId", methodCallNodeId);
+        return new MethodCallBuilderImpl(this, methodCallNodeId);
+    }
+    
+    @Override
+    public FlowCallBuilder flowCallNode(String flowCallNodeId) {
+        return new FlowCallBuilderImpl(this, flowCallNodeId);
+    }
+
+    // </editor-fold>
+
+    // <editor-fold defaultstate="collapsed" desc="Flow-wide Settings">     
+    
+    @Override
+    public FlowBuilder id(String definingDocumentId, String flowId) {
+        Util.notNull("definingDocumentId", definingDocumentId);
+        Util.notNull("flowId", flowId);
+        flow.setId(definingDocumentId, flowId);
+        this.hasId = true;
+        return this;
+    }
+    
+    @Override
+    public FlowBuilder initializer(MethodExpression methodExpression) {
+        Util.notNull("methodExpression", methodExpression);
+        flow.setInitializer(methodExpression);
+        return this;
+    }
+
+    @Override
+    public FlowBuilder initializer(String methodExpression) {
+        Util.notNull("methodExpression", methodExpression);
+        MethodExpression me = expressionFactory.createMethodExpression(elContext, methodExpression, null, new Class[] {});
+        flow.setInitializer(me);
+        return this;
+    }
+    
+    @Override
+    public FlowBuilder finalizer(MethodExpression methodExpression) {
+        flow.setFinalizer(methodExpression);
+        return this;
+    }
+
+    @Override
+    public FlowBuilder finalizer(String methodExpression) {
+        MethodExpression me = expressionFactory.createMethodExpression(elContext, methodExpression, null, new Class[] {});
+        flow.setFinalizer(me);
+        return this;
+    }
+    
+    @Override
+    public FlowBuilder inboundParameter(String name, ValueExpression value) {
+        ParameterImpl param = new ParameterImpl(name, value);
+        flow._getInboundParameters().put(name, param);
+        
+        return this;
+    }
+
+    @Override
+    public FlowBuilder inboundParameter(String name, String value) {
+        ValueExpression ve = expressionFactory.createValueExpression(elContext, value, Object.class);
+        inboundParameter(name, ve);
+        return this;
+    }
+
+    // </editor-fold>
+        
+    @Override
+    public Flow getFlow() {
+        if (!hasId) {
+            throw new IllegalStateException("Flow must have a defining document id and flow id.");
+        }
+        if (!didInit) {
+            flow.init(context);
+            String startNodeId = flow.getStartNodeId();
+            if (null == startNodeId) {
+                String flowId = flow.getId();
+                this.viewNode(flowId, "/" + flowId + "/" + flowId + ".xhtml").markAsStartNode();
+            }
+            didInit = true;
+        }
+        return flow;
+    }
+    
+    public FlowImpl _getFlow() {
+        return flow;
+    }
+    
+    // <editor-fold defaultstate="collapsed" desc="Package private helpers">
+    
+    ExpressionFactory getExpressionFactory() {
+        return expressionFactory;
+    }
+    
+    ELContext getELContext() {
+        return elContext;
+    }
+    
+    // </editor-fold>
+
+    
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/flow/builder/FlowCallBuilderImpl.java b/jsf-ri/src/main/java/com/sun/faces/flow/builder/FlowCallBuilderImpl.java
new file mode 100644
index 0000000..4132e4b
--- /dev/null
+++ b/jsf-ri/src/main/java/com/sun/faces/flow/builder/FlowCallBuilderImpl.java
@@ -0,0 +1,115 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.flow.builder;
+
+import com.sun.faces.flow.FlowCallNodeImpl;
+import com.sun.faces.flow.ParameterImpl;
+import com.sun.faces.util.Util;
+import java.util.Map;
+import javax.el.ValueExpression;
+import javax.faces.flow.FlowCallNode;
+import javax.faces.flow.builder.FlowCallBuilder;
+
+public class FlowCallBuilderImpl extends FlowCallBuilder {
+    
+    private FlowBuilderImpl root;
+    private String flowCallNodeId;
+    private String flowDocumentId;
+    private String flowId;
+    
+
+    public FlowCallBuilderImpl(FlowBuilderImpl root, String id) {
+        this.root = root;
+        this.flowCallNodeId = id;
+    }
+
+    @Override
+    public FlowCallBuilder flowReference(String flowDocumentId, String flowId) {
+        Util.notNull("flowDocumentId", flowDocumentId);
+        Util.notNull("flowId", flowId);
+        this.flowDocumentId = flowDocumentId;
+        this.flowId = flowId;
+        getFlowCall();
+        return this;
+    }
+    
+    private FlowCallNodeImpl getFlowCall() {
+        Util.notNull("flowCallNodeId", flowCallNodeId);
+        Util.notNull("flowwDocumentId", flowDocumentId);
+        Util.notNull("flowId", flowId);
+        
+        Map<String, FlowCallNode> flowCalls = root._getFlow()._getFlowCalls();
+        FlowCallNodeImpl flowCall = (FlowCallNodeImpl) flowCalls.get(flowCallNodeId);
+        if (null == flowCall) {
+            flowCall = new FlowCallNodeImpl(flowCallNodeId, flowDocumentId, flowId, null);
+            flowCalls.put(flowCallNodeId, flowCall);
+        }
+        return flowCall;
+    }
+
+    @Override
+    public FlowCallBuilder outboundParameter(String name, ValueExpression value) {
+        Util.notNull("name", name);
+        Util.notNull("value", value);
+        ParameterImpl param = new ParameterImpl(name, value);
+        FlowCallNodeImpl flowCall = getFlowCall();
+        flowCall._getOutboundParameters().put(name, param);
+        return this;
+    }
+
+    @Override
+    public FlowCallBuilder outboundParameter(String name, String value) {
+        Util.notNull("name", name);
+        Util.notNull("value", value);
+        ValueExpression ve = root.getExpressionFactory().createValueExpression(root.getELContext(), value, Object.class);
+        outboundParameter(name, ve);
+        return this;
+    }
+
+    @Override
+    public FlowCallBuilder markAsStartNode() {
+        root._getFlow().setStartNodeId(flowCallNodeId);
+        return this;
+    }
+    
+    
+    
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/flow/builder/MethodCallBuilderImpl.java b/jsf-ri/src/main/java/com/sun/faces/flow/builder/MethodCallBuilderImpl.java
new file mode 100644
index 0000000..8324a86
--- /dev/null
+++ b/jsf-ri/src/main/java/com/sun/faces/flow/builder/MethodCallBuilderImpl.java
@@ -0,0 +1,117 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.flow.builder;
+
+import com.sun.faces.flow.MethodCallNodeImpl;
+import java.util.List;
+import javax.el.ELContext;
+import javax.el.MethodExpression;
+import javax.el.ValueExpression;
+import javax.faces.flow.Parameter;
+import javax.faces.flow.builder.MethodCallBuilder;
+
+public class MethodCallBuilderImpl extends MethodCallBuilder {
+    
+    private FlowBuilderImpl root;
+    private String methodCallId;
+    private MethodCallNodeImpl methodCallNode;
+    private static final Class[] EMPTY_ARGS = new Class[0];
+
+    public MethodCallBuilderImpl(FlowBuilderImpl root, String id) {
+        this.root = root;
+        this.methodCallId = id;
+        this.methodCallNode = new MethodCallNodeImpl(id);
+        this.root._getFlow()._getMethodCalls().add(methodCallNode);
+                
+    }
+
+    @Override
+    public MethodCallBuilder defaultOutcome(String outcome) {
+        ELContext elc = root.getELContext();
+        ValueExpression ve = root.getExpressionFactory().createValueExpression(elc, outcome, String.class);
+        methodCallNode.setOutcome(ve);
+        return this;
+    }
+
+    @Override
+    public MethodCallBuilder defaultOutcome(ValueExpression ve) {
+        methodCallNode.setOutcome(ve);
+        return this;
+    }
+
+    @Override
+    public MethodCallBuilder expression(String methodExpression) {
+        ELContext elc = root.getELContext();
+        MethodExpression me = root.getExpressionFactory().createMethodExpression(elc, methodExpression, null, EMPTY_ARGS);
+        methodCallNode.setMethodExpression(me);
+        return this;
+    }
+
+    @Override
+    public MethodCallBuilder expression(String methodExpression, Class[] paramTypes) {
+        ELContext elc = root.getELContext();
+        MethodExpression me = root.getExpressionFactory().createMethodExpression(elc, methodExpression, null, paramTypes);
+        methodCallNode.setMethodExpression(me);
+        return this;
+    }
+
+    @Override
+    public MethodCallBuilder parameters(List<Parameter> parameters) {
+        methodCallNode._getParameters().addAll(parameters);
+        return this;
+    }
+    
+    @Override
+    public MethodCallBuilder expression(MethodExpression me) {
+        methodCallNode.setMethodExpression(me);
+        return this;
+    }
+
+    @Override
+    public MethodCallBuilder markAsStartNode() {
+        root._getFlow().setStartNodeId(methodCallId);
+        return this;
+    }
+    
+    
+    
+    
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/flow/builder/MutableNavigationCase.java b/jsf-ri/src/main/java/com/sun/faces/flow/builder/MutableNavigationCase.java
new file mode 100644
index 0000000..0080906
--- /dev/null
+++ b/jsf-ri/src/main/java/com/sun/faces/flow/builder/MutableNavigationCase.java
@@ -0,0 +1,339 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.flow.builder;
+
+import java.util.Collections;
+import javax.faces.application.*;
+import java.util.Map;
+import java.util.List;
+import java.util.concurrent.ConcurrentHashMap;
+import javax.el.ValueExpression;
+import javax.el.ExpressionFactory;
+import javax.faces.context.FacesContext;
+
+/**
+ * <p class="changed_added_2_0"><strong class="changed_modified_2_2">
+ * NavigationCase</strong>
+ * represents a <code><navigation-case></code> in the navigation
+ * rule base, as well as the <span class="changed_modified_2_2"><code><from-view-id></code> with
+ * which this <code><navigation-case></code> is a sibling</span>.</p>
+ *
+ * @since 2.0
+ */
+public class MutableNavigationCase extends NavigationCase {
+
+    private String fromViewId;
+    private String fromAction;
+    private String fromOutcome;
+    private String condition;
+    private String toViewId;
+    private String toFlowDocumentId;
+    private Map<String,List<String>> parameters;
+    private boolean redirect;
+    private boolean includeViewParams;
+
+    private ValueExpression toViewIdExpr;
+    private ValueExpression conditionExpr;
+    private String toString;
+    private int hashCode;
+
+
+    // ------------------------------------------------------------ Constructors
+
+    public MutableNavigationCase() {
+        this(null, null, null, null, null, null, null, false, false);
+        parameters = new ConcurrentHashMap<String, List<String>>();
+    }
+    
+    public MutableNavigationCase(String fromViewId,
+                          String fromAction,
+                          String fromOutcome,
+                          String condition,
+                          String toViewId,
+                          String toFlowDocumentId,
+                          Map<String,List<String>> parameters,
+                          boolean redirect,
+                          boolean includeViewParams) {
+        super(fromViewId, fromAction, fromOutcome, condition, toViewId, toFlowDocumentId, parameters, redirect, includeViewParams);
+
+        this.fromViewId = fromViewId;
+        this.fromAction = fromAction;
+        this.fromOutcome = fromOutcome;
+        this.condition = condition;
+        this.toViewId = toViewId;
+        this.toFlowDocumentId = toFlowDocumentId;
+        this.parameters = (null != parameters) ? parameters : new ConcurrentHashMap<String, List<String>>();
+        this.redirect = redirect;
+        this.includeViewParams = includeViewParams;
+
+    }
+
+    public MutableNavigationCase(String fromViewId, 
+                        String fromAction, String fromOutcome, String condition, String toViewId, 
+                        String toFlowDocumentId, boolean redirect, boolean includeViewParams) {
+        super(fromViewId, fromAction, fromOutcome, condition, toViewId, toFlowDocumentId, Collections.EMPTY_MAP, redirect, includeViewParams);
+
+        this.fromViewId = fromViewId;
+        this.fromAction = fromAction;
+        this.fromOutcome = fromOutcome;
+        this.condition = condition;
+        this.toViewId = toViewId;
+        this.toFlowDocumentId = toFlowDocumentId;
+        this.parameters = Collections.emptyMap();
+        this.redirect = redirect;
+        this.includeViewParams = includeViewParams;
+        
+    }
+
+    // ---------------------------------------------------------- Public Methods
+
+    @Override
+    public String getFromViewId() {
+
+        return fromViewId;
+
+    }
+    
+    public void setFromViewId(String fromViewId) {
+        this.fromViewId = fromViewId;
+    }
+
+
+    @Override
+    public String getFromAction() {
+
+        return fromAction;
+
+    }
+    
+    public void setFromAction(String fromAction) {
+        this.fromAction = fromAction;
+    }
+
+
+    @Override
+    public String getFromOutcome() {
+
+        return fromOutcome;
+
+    }
+    
+    public void setFromOutcome(String fromOutcome) {
+        this.fromOutcome = fromOutcome;
+    }
+
+    @Override
+    public String getToViewId(FacesContext context) {
+
+        if (toViewIdExpr == null) {
+            ExpressionFactory factory =
+                  context.getApplication().getExpressionFactory();
+            toViewIdExpr = factory.createValueExpression(context.getELContext(),
+                                                         toViewId,
+                                                         String.class);
+        }
+        String result = (String) toViewIdExpr.getValue(context.getELContext());
+        if (result.charAt(0) != '/') {
+            result = '/' + result;
+        }
+
+        return result;
+
+    }
+    
+    public void setToViewId(String toViewId) {
+        this.toViewId = toViewId;
+        toViewIdExpr = null;
+    }
+
+    @Override
+    public String getToFlowDocumentId() {
+
+        return toFlowDocumentId;
+
+    }
+    
+    public void setToFlowDocumentId(String toFlowDocumentId) {
+        this.toFlowDocumentId = toFlowDocumentId;
+    }
+    
+    @Override
+    public boolean hasCondition() {
+
+        return (condition != null);
+
+    }
+
+    @Override
+    public Boolean getCondition(FacesContext context) {
+
+        if (conditionExpr == null && condition != null) {
+            ExpressionFactory factory =
+                  context.getApplication().getExpressionFactory();
+            conditionExpr = factory.createValueExpression(context.getELContext(),
+                                                          condition,
+                                                          Boolean.class);
+        }
+
+        return ((conditionExpr != null)
+                ? (Boolean) conditionExpr.getValue(context.getELContext())
+                : null);
+
+    }
+    
+    public void setCondition(String condition) {
+        this.condition = condition;
+        this.conditionExpr = null;
+    }
+    
+    public void setConditionExpression(ValueExpression conditionExpression) {
+        this.conditionExpr = conditionExpression;
+    }
+
+    @Override
+    public Map<String, List<String>> getParameters() {
+
+        return parameters;
+
+    }
+    
+    @Override
+    public boolean isRedirect() {
+
+        return redirect;
+
+    }
+    
+    public void setRedirect(boolean redirect) {
+        this.redirect = redirect;
+    }
+    
+
+
+    @Override
+    public boolean isIncludeViewParams() {
+
+        return includeViewParams;
+
+    }
+    
+    public void setIncludeViewParams(boolean includeViewParams) {
+        this.includeViewParams = includeViewParams;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (obj == null) {
+            return false;
+        }
+        if (getClass() != obj.getClass()) {
+            return false;
+        }
+        final MutableNavigationCase other = (MutableNavigationCase) obj;
+        if ((this.fromViewId == null) ? (other.fromViewId != null) : !this.fromViewId.equals(other.fromViewId)) {
+            return false;
+        }
+        if ((this.fromAction == null) ? (other.fromAction != null) : !this.fromAction.equals(other.fromAction)) {
+            return false;
+        }
+        if ((this.fromOutcome == null) ? (other.fromOutcome != null) : !this.fromOutcome.equals(other.fromOutcome)) {
+            return false;
+        }
+        if ((this.condition == null) ? (other.condition != null) : !this.condition.equals(other.condition)) {
+            return false;
+        }
+        if ((this.toViewId == null) ? (other.toViewId != null) : !this.toViewId.equals(other.toViewId)) {
+            return false;
+        }
+        if ((this.toFlowDocumentId == null) ? (other.toFlowDocumentId != null) : !this.toFlowDocumentId.equals(other.toFlowDocumentId)) {
+            return false;
+        }
+        if (this.parameters != other.parameters && (this.parameters == null || !this.parameters.equals(other.parameters))) {
+            return false;
+        }
+        if (this.redirect != other.redirect) {
+            return false;
+        }
+        if (this.includeViewParams != other.includeViewParams) {
+            return false;
+        }
+        return true;
+    }
+
+    @Override
+    public int hashCode() {
+        int hash = 3;
+        hash = 29 * hash + (this.fromViewId != null ? this.fromViewId.hashCode() : 0);
+        hash = 29 * hash + (this.fromAction != null ? this.fromAction.hashCode() : 0);
+        hash = 29 * hash + (this.fromOutcome != null ? this.fromOutcome.hashCode() : 0);
+        hash = 29 * hash + (this.condition != null ? this.condition.hashCode() : 0);
+        hash = 29 * hash + (this.toViewId != null ? this.toViewId.hashCode() : 0);
+        hash = 29 * hash + (this.toFlowDocumentId != null ? this.toFlowDocumentId.hashCode() : 0);
+        hash = 29 * hash + (this.parameters != null ? this.parameters.hashCode() : 0);
+        hash = 29 * hash + (this.redirect ? 1 : 0);
+        hash = 29 * hash + (this.includeViewParams ? 1 : 0);
+        return hash;
+    }
+    
+
+
+    @Override
+    public String toString() {
+
+        if (toString == null) {
+            StringBuilder sb = new StringBuilder(64);
+            sb.append("NavigationCase{");
+            sb.append("fromViewId='").append(fromViewId).append('\'');
+            sb.append(", fromAction='").append(fromAction).append('\'');
+            sb.append(", fromOutcome='").append(fromOutcome).append('\'');
+            sb.append(", if='").append(condition).append('\'');
+            sb.append(", toViewId='").append(toViewId).append('\'');
+            sb.append(", faces-redirect=").append(redirect);
+            sb.append(", includeViewParams=").append(includeViewParams).append('\'');
+            sb.append(", parameters=").append(((parameters != null) ? parameters.toString() : ""));
+            sb.append('}');
+            toString = sb.toString();
+        }
+        return toString;
+
+    }
+ 
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/flow/builder/NavigationCaseBuilderImpl.java b/jsf-ri/src/main/java/com/sun/faces/flow/builder/NavigationCaseBuilderImpl.java
new file mode 100644
index 0000000..f188469
--- /dev/null
+++ b/jsf-ri/src/main/java/com/sun/faces/flow/builder/NavigationCaseBuilderImpl.java
@@ -0,0 +1,156 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.flow.builder;
+
+import com.sun.faces.util.Util;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.CopyOnWriteArrayList;
+import java.util.concurrent.CopyOnWriteArraySet;
+import javax.el.ValueExpression;
+import javax.faces.application.NavigationCase;
+import javax.faces.flow.builder.NavigationCaseBuilder;
+
+public class NavigationCaseBuilderImpl extends NavigationCaseBuilder {
+    
+    private FlowBuilderImpl root;
+    private MutableNavigationCase navCase;
+
+    public NavigationCaseBuilderImpl(FlowBuilderImpl root) {
+        navCase = new MutableNavigationCase();
+        this.root = root;
+    }
+    
+    @Override
+    public NavigationCaseBuilder toFlowDocumentId(String toFlowDocumentId) {
+        Util.notNull("toFlowDocumentId", toFlowDocumentId);
+        navCase.setToFlowDocumentId(toFlowDocumentId);
+        return this;
+    }
+
+    @Override
+    public NavigationCaseBuilder fromAction(String fromAction) {
+        Util.notNull("fromAction", fromAction);
+        navCase.setFromAction(fromAction);
+        return this;
+    }
+
+    @Override
+    public NavigationCaseBuilder fromOutcome(String fromOutcome) {
+        Util.notNull("fromOutcome", fromOutcome);
+        navCase.setFromOutcome(fromOutcome);
+        return this;
+    }
+
+    @Override
+    public NavigationCaseBuilder fromViewId(String fromViewId) {
+        Util.notNull("fromViewId", fromViewId);
+        navCase.setFromViewId(fromViewId);
+        Map<String,Set<NavigationCase>> rules = root._getFlow()._getNavigationCases();
+        Set<NavigationCase> cases = rules.get(fromViewId);
+        if (null == cases) {
+            cases = new CopyOnWriteArraySet<NavigationCase>();
+            rules.put(fromViewId, cases);
+        }
+        cases.add(navCase);
+        return this;
+    }
+
+    @Override
+    public NavigationCaseBuilder toViewId(String toViewId) {
+        Util.notNull("toViewId", toViewId);
+        navCase.setToViewId(toViewId);
+        return this;
+    }
+
+    @Override
+    public NavigationCaseBuilder condition(String condition) {
+        Util.notNull("condition", condition);
+        navCase.setCondition(condition);
+        return this;
+    }
+
+    @Override
+    public NavigationCaseBuilder condition(ValueExpression condition) {
+        Util.notNull("condition", condition);
+        navCase.setConditionExpression(condition);
+        return this;
+    }
+
+    @Override
+    public RedirectBuilder redirect() {
+        navCase.setRedirect(true);
+        return new RedirectBuilderImpl();
+    }
+
+    private class RedirectBuilderImpl extends NavigationCaseBuilder.RedirectBuilder {
+
+        public RedirectBuilderImpl() {
+        }
+
+        @Override
+        public RedirectBuilder parameter(String name, String value) {
+            Util.notNull("name", name);
+            Util.notNull("value", value);
+            Map<String, List<String>> redirectParams = NavigationCaseBuilderImpl.this.navCase.getParameters();
+            List<String> values = redirectParams.get(name);
+            if (null == values) {
+                values = new CopyOnWriteArrayList<String>();
+                redirectParams.put(name, values);
+            }
+            values.add(value);
+            return this;
+        }
+
+        @Override
+        public RedirectBuilder includeViewParams() {
+            NavigationCaseBuilderImpl.this.navCase.isIncludeViewParams();
+            return this;
+        }
+    
+        
+        
+        
+    }
+    
+    
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/flow/builder/ReturnBuilderImpl.java b/jsf-ri/src/main/java/com/sun/faces/flow/builder/ReturnBuilderImpl.java
new file mode 100644
index 0000000..7b658c1
--- /dev/null
+++ b/jsf-ri/src/main/java/com/sun/faces/flow/builder/ReturnBuilderImpl.java
@@ -0,0 +1,83 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.flow.builder;
+
+import com.sun.faces.flow.ReturnNodeImpl;
+import com.sun.faces.util.Util;
+import javax.el.ValueExpression;
+import javax.faces.flow.builder.ReturnBuilder;
+
+public class ReturnBuilderImpl extends ReturnBuilder {
+    
+    private FlowBuilderImpl root;
+    String id;
+
+    public ReturnBuilderImpl(FlowBuilderImpl root, String id) {
+        this.root = root;
+        this.id = id;
+    }
+
+    @Override
+    public ReturnBuilder markAsStartNode() {
+        root._getFlow().setStartNodeId(id);
+        return this;
+    }
+    
+    @Override
+    public ReturnBuilder fromOutcome(String outcome) {
+        Util.notNull("outcome", outcome);
+        ReturnNodeImpl returnNode = new ReturnNodeImpl(id);
+        returnNode.setFromOutcome(outcome);
+        root._getFlow()._getReturns().put(id, returnNode);
+        return this;
+    }
+
+    @Override
+    public ReturnBuilder fromOutcome(ValueExpression outcome) {
+        Util.notNull("outcome", outcome);
+        ReturnNodeImpl returnNode = new ReturnNodeImpl(id);
+        returnNode.setFromOutcome(outcome);
+        root._getFlow()._getReturns().put(id, returnNode);
+
+        return this;
+    }
+
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/flow/builder/SwitchBuilderImpl.java b/jsf-ri/src/main/java/com/sun/faces/flow/builder/SwitchBuilderImpl.java
new file mode 100644
index 0000000..d88cc09
--- /dev/null
+++ b/jsf-ri/src/main/java/com/sun/faces/flow/builder/SwitchBuilderImpl.java
@@ -0,0 +1,99 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.flow.builder;
+
+import com.sun.faces.flow.SwitchNodeImpl;
+import com.sun.faces.util.Util;
+import javax.el.ValueExpression;
+import javax.faces.flow.builder.SwitchBuilder;
+import javax.faces.flow.builder.SwitchCaseBuilder;
+
+public class SwitchBuilderImpl extends SwitchBuilder {
+    
+    private FlowBuilderImpl root;
+    private String switchId;
+    private SwitchNodeImpl switchNode;
+    private SwitchCaseBuilderImpl switchCaseBuilder;
+
+    
+    SwitchBuilderImpl(FlowBuilderImpl root, String id) {
+        this.root = root;
+        this.switchId = id;
+        this.switchNode = new SwitchNodeImpl(id);
+        root._getFlow()._getSwitches().put(id, switchNode);
+        this.switchCaseBuilder = new SwitchCaseBuilderImpl(this);
+    }
+
+    @Override
+    public SwitchCaseBuilder defaultOutcome(String outcome) {
+        Util.notNull("outcome", outcome);
+        switchNode.setDefaultOutcome(outcome);
+        return switchCaseBuilder;
+    }
+
+    @Override
+    public SwitchCaseBuilder defaultOutcome(ValueExpression outcome) {
+        Util.notNull("outcome", outcome);
+        switchNode.setDefaultOutcome(outcome);
+        return switchCaseBuilder;
+    }
+
+    @Override
+    public SwitchBuilderImpl markAsStartNode() {
+        root._getFlow().setStartNodeId(switchId);
+        return this;
+    }
+
+    @Override
+    public SwitchCaseBuilder switchCase() {
+        return switchCaseBuilder.switchCase();
+    }
+    
+    FlowBuilderImpl getRoot() {
+        return root;
+    }
+    
+    SwitchNodeImpl getSwitchNode() {
+        return switchNode;
+    }
+    
+    
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/flow/builder/SwitchCaseBuilderImpl.java b/jsf-ri/src/main/java/com/sun/faces/flow/builder/SwitchCaseBuilderImpl.java
new file mode 100644
index 0000000..9e25436
--- /dev/null
+++ b/jsf-ri/src/main/java/com/sun/faces/flow/builder/SwitchCaseBuilderImpl.java
@@ -0,0 +1,91 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.flow.builder;
+
+import com.sun.faces.flow.SwitchCaseImpl;
+import com.sun.faces.util.Util;
+import javax.el.ValueExpression;
+import javax.faces.flow.builder.SwitchCaseBuilder;
+
+public class SwitchCaseBuilderImpl extends SwitchCaseBuilder {
+    
+    private SwitchBuilderImpl root;
+    private SwitchCaseImpl myCase;
+
+    public SwitchCaseBuilderImpl(SwitchBuilderImpl root) {
+        this.root = root;
+        this.myCase = null;
+    }
+    
+    public SwitchCaseImpl getNavigationCase() {
+        return myCase;
+    }
+
+    @Override
+    public SwitchCaseBuilder switchCase() {
+        SwitchCaseBuilderImpl result = new SwitchCaseBuilderImpl(root);
+        result.myCase = new SwitchCaseImpl();
+        root.getSwitchNode()._getCases().add(result.myCase);
+        return result;
+    }
+    
+    @Override
+    public SwitchCaseBuilder condition(ValueExpression expression) {
+        Util.notNull("expression", expression);
+        myCase.setConditionExpression(expression);
+        return this;
+    }
+
+    @Override
+    public SwitchCaseBuilder condition(String expression) {
+        Util.notNull("expression", expression);
+        myCase.setCondition(expression);
+        return this;
+    }
+
+    @Override
+    public SwitchCaseBuilder fromOutcome(String outcome) {
+        Util.notNull("outcome", outcome);
+        myCase.setFromOutcome(outcome);
+        return this;
+    }
+
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/flow/builder/ViewBuilderImpl.java b/jsf-ri/src/main/java/com/sun/faces/flow/builder/ViewBuilderImpl.java
new file mode 100644
index 0000000..da2ef9d
--- /dev/null
+++ b/jsf-ri/src/main/java/com/sun/faces/flow/builder/ViewBuilderImpl.java
@@ -0,0 +1,68 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.flow.builder;
+
+import com.sun.faces.flow.ViewNodeImpl;
+import java.util.List;
+import javax.faces.flow.ViewNode;
+import javax.faces.flow.builder.ViewBuilder;
+
+public class ViewBuilderImpl extends ViewBuilder {
+    
+    private FlowBuilderImpl root;
+    private ViewNodeImpl viewNode;
+
+    public ViewBuilderImpl(FlowBuilderImpl root, String viewNodeId, String vdlDocumentId) {
+        this.root = root;
+        
+        List<ViewNode> viewNodes = root._getFlow()._getViews();
+        viewNode = new ViewNodeImpl(viewNodeId, vdlDocumentId);
+        viewNodes.add(viewNode);
+    }
+    
+    @Override
+    public ViewBuilder markAsStartNode() {
+        root._getFlow().setStartNodeId(viewNode.getId());
+        return this;
+    }
+    
+    
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/io/Base64InputStream.java b/jsf-ri/src/main/java/com/sun/faces/io/Base64InputStream.java
index 702c9e0..7acd420 100644
--- a/jsf-ri/src/main/java/com/sun/faces/io/Base64InputStream.java
+++ b/jsf-ri/src/main/java/com/sun/faces/io/Base64InputStream.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -33,6 +37,7 @@
  * only if the new code is made subject to such option by the copyright
  * holder.
  */
+
 /*
  * Copyright (c) 2004, Mikael Grev, MiG InfoCom AB. (base64 @ miginfocom . com)
  * All rights reserved.
diff --git a/jsf-ri/src/main/java/com/sun/faces/io/Base64OutputStreamWriter.java b/jsf-ri/src/main/java/com/sun/faces/io/Base64OutputStreamWriter.java
index 5ac17ba..8885114 100644
--- a/jsf-ri/src/main/java/com/sun/faces/io/Base64OutputStreamWriter.java
+++ b/jsf-ri/src/main/java/com/sun/faces/io/Base64OutputStreamWriter.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -33,6 +37,7 @@
  * only if the new code is made subject to such option by the copyright
  * holder.
  */
+
 /*
  * Copyright (c) 2004, Mikael Grev, MiG InfoCom AB. (base64 @ miginfocom . com)
  * All rights reserved.
diff --git a/jsf-ri/src/main/java/com/sun/faces/io/FastStringWriter.java b/jsf-ri/src/main/java/com/sun/faces/io/FastStringWriter.java
index dbde502..cc37e85 100644
--- a/jsf-ri/src/main/java/com/sun/faces/io/FastStringWriter.java
+++ b/jsf-ri/src/main/java/com/sun/faces/io/FastStringWriter.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/lifecycle/ApplyRequestValuesPhase.java b/jsf-ri/src/main/java/com/sun/faces/lifecycle/ApplyRequestValuesPhase.java
index deebfda..d01681f 100644
--- a/jsf-ri/src/main/java/com/sun/faces/lifecycle/ApplyRequestValuesPhase.java
+++ b/jsf-ri/src/main/java/com/sun/faces/lifecycle/ApplyRequestValuesPhase.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/lifecycle/ClientWindowFactoryImpl.java b/jsf-ri/src/main/java/com/sun/faces/lifecycle/ClientWindowFactoryImpl.java
new file mode 100644
index 0000000..15d9b99
--- /dev/null
+++ b/jsf-ri/src/main/java/com/sun/faces/lifecycle/ClientWindowFactoryImpl.java
@@ -0,0 +1,102 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.lifecycle;
+
+import com.sun.faces.config.WebConfiguration;
+import java.util.Map;
+import javax.faces.application.Application;
+import javax.faces.context.ExternalContext;
+import javax.faces.context.FacesContext;
+import javax.faces.event.AbortProcessingException;
+import javax.faces.event.PostConstructApplicationEvent;
+import javax.faces.event.SystemEvent;
+import javax.faces.event.SystemEventListener;
+import javax.faces.lifecycle.ClientWindow;
+import javax.faces.lifecycle.ClientWindowFactory;
+
+public class ClientWindowFactoryImpl extends ClientWindowFactory {
+    
+    private boolean isClientWindowEnabled = false;
+    private WebConfiguration config = null;
+
+    public ClientWindowFactoryImpl() {
+        FacesContext context = FacesContext.getCurrentInstance();
+        context.getApplication().subscribeToEvent(PostConstructApplicationEvent.class,
+                         Application.class, new PostConstructApplicationListener());
+    }
+    
+    public ClientWindowFactoryImpl(boolean ignored) {
+        isClientWindowEnabled = false;
+    }
+    
+    private class PostConstructApplicationListener implements SystemEventListener {
+
+        @Override
+        public boolean isListenerForSource(Object source) {
+            return source instanceof Application;
+        }
+
+        @Override
+        public void processEvent(SystemEvent event) throws AbortProcessingException {
+            ClientWindowFactoryImpl.this.postConstructApplicationInitialization();
+        }
+        
+    }
+    
+    private void postConstructApplicationInitialization() {
+        FacesContext context = FacesContext.getCurrentInstance();
+        ExternalContext extContext = context.getExternalContext();
+        config = WebConfiguration.getInstance(extContext);
+        String optionValue = config.getOptionValue(WebConfiguration.WebContextInitParameter.ClientWindowMode);
+        
+        isClientWindowEnabled = (null != optionValue) && "url".equals(optionValue);
+    }
+    
+    
+    @Override
+    public ClientWindow getClientWindow(FacesContext context) {
+        if (!isClientWindowEnabled) {
+            return null;
+        }
+        
+        return new ClientWindowImpl();
+    }
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/lifecycle/ClientWindowImpl.java b/jsf-ri/src/main/java/com/sun/faces/lifecycle/ClientWindowImpl.java
new file mode 100644
index 0000000..35a263c
--- /dev/null
+++ b/jsf-ri/src/main/java/com/sun/faces/lifecycle/ClientWindowImpl.java
@@ -0,0 +1,101 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.lifecycle;
+
+import java.util.Map;
+import javax.faces.component.UINamingContainer;
+import javax.faces.context.ExternalContext;
+import javax.faces.context.FacesContext;
+import javax.faces.lifecycle.ClientWindow;
+import javax.faces.render.ResponseStateManager;
+
+public class ClientWindowImpl extends ClientWindow {
+    
+    String id;
+
+    public ClientWindowImpl() {
+    }
+
+    @Override
+    public Map<String, String> getQueryURLParameters(FacesContext context) {
+        return null;
+    }
+    
+    
+
+    @Override
+    public void decode(FacesContext context) {
+        Map<String, String> requestParamMap = context.getExternalContext().getRequestParameterMap();
+        if (isClientWindowRenderModeEnabled(context)) {
+            id = requestParamMap.get(ResponseStateManager.CLIENT_WINDOW_URL_PARAM);
+        }
+        // The hidden field always takes precedence, if present.
+        if (requestParamMap.containsKey(ResponseStateManager.CLIENT_WINDOW_PARAM)) {
+            id = requestParamMap.get(ResponseStateManager.CLIENT_WINDOW_PARAM);
+        }
+        if (null == id) {
+            id = calculateClientWindow(context);
+        }
+    }
+    
+    private String calculateClientWindow(FacesContext context) {
+        synchronized(context.getExternalContext().getSession(true)) {
+            final String clientWindowCounterKey = "com.sun.faces.lifecycle.ClientWindowCounterKey";
+            ExternalContext extContext = context.getExternalContext();
+            Map<String, Object> sessionAttrs = extContext.getSessionMap();
+            Integer counter = (Integer) sessionAttrs.get(clientWindowCounterKey);
+            if (null == counter) {
+                counter = Integer.valueOf(0);
+            }
+            char sep = UINamingContainer.getSeparatorChar(context);
+            id = extContext.getSessionId(true) + sep +
+                    + counter;
+
+            sessionAttrs.put(clientWindowCounterKey, ++counter);
+        }
+        return id;
+    }
+
+    @Override
+    public String getId() {
+        return id;
+    }
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/lifecycle/ELResolverInitPhaseListener.java b/jsf-ri/src/main/java/com/sun/faces/lifecycle/ELResolverInitPhaseListener.java
index ae3a054..21b959a 100644
--- a/jsf-ri/src/main/java/com/sun/faces/lifecycle/ELResolverInitPhaseListener.java
+++ b/jsf-ri/src/main/java/com/sun/faces/lifecycle/ELResolverInitPhaseListener.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -40,7 +44,8 @@ import com.sun.faces.application.ApplicationAssociate;
 import com.sun.faces.util.FacesLogger;
 import com.sun.faces.el.ELUtils;
 
-import javax.el.CompositeELResolver;
+import com.sun.faces.el.FacesCompositeELResolver;
+
 import javax.faces.FactoryFinder;
 import javax.faces.context.FacesContext;
 import javax.faces.event.PhaseEvent;
@@ -51,6 +56,7 @@ import javax.faces.lifecycle.LifecycleFactory;
 import java.util.Iterator;
 import java.util.logging.Level;
 import java.util.logging.Logger;
+import javax.faces.application.Application;
 
 /**
  * <p>This class is used to register the JSF <code>ELResolver</code>
@@ -73,7 +79,6 @@ public class ELResolverInitPhaseListener implements PhaseListener {
 
     private boolean preInitCompleted;
 
-
     // ---------------------------------------------- Methods From PhaseListener
 
     /**
@@ -116,8 +121,12 @@ public class ELResolverInitPhaseListener implements PhaseListener {
     public synchronized void beforePhase(PhaseEvent event) {
 
         if (!preInitCompleted) {
-            
-            populateFacesELResolverForJsp(event.getFacesContext());
+            ApplicationAssociate associate =
+                 ApplicationAssociate.getInstance(
+                      FacesContext.getCurrentInstance().getExternalContext());
+            associate.setRequestServiced();
+            associate.initializeELResolverChains();
+            associate.installProgrammaticallyAddedResolvers();
             preInitCompleted = true;
 
         }
@@ -157,7 +166,13 @@ public class ELResolverInitPhaseListener implements PhaseListener {
 
         ApplicationAssociate appAssociate =
               ApplicationAssociate.getInstance(context.getExternalContext());
-        CompositeELResolver compositeELResolverForJsp =
+        populateFacesELResolverForJsp(context.getApplication(), appAssociate);
+
+    }
+
+    public static void populateFacesELResolverForJsp(Application app,
+            ApplicationAssociate appAssociate) {
+        FacesCompositeELResolver compositeELResolverForJsp =
               appAssociate.getFacesELResolverForJsp();
         if (compositeELResolverForJsp == null) {
             if (LOGGER.isLoggable(Level.INFO)) {
@@ -170,11 +185,6 @@ public class ELResolverInitPhaseListener implements PhaseListener {
 
         ELUtils.buildJSPResolver(compositeELResolverForJsp, appAssociate);
 
-        // somewhat of a hack, but since we're here, trigger the creation
-        // of the FacesResolvers as well by calling Application.getELResolver()
-        // to avoid a sync block on that method.
-        context.getApplication().getELResolver();
-
         if (LOGGER.isLoggable(Level.FINE)) {
             LOGGER.log(Level.FINE,
                        "jsf.lifecycle.initphaselistener.resolvers_registered",
@@ -183,4 +193,20 @@ public class ELResolverInitPhaseListener implements PhaseListener {
 
     }
 
-} // END InitializingPhaseListener
\ No newline at end of file
+    public static void removeELResolverInitPhaseListener() {
+        LifecycleFactory factory = (LifecycleFactory)
+                FactoryFinder.getFactory(FactoryFinder.LIFECYCLE_FACTORY);
+        // remove ourselves from the list of listeners maintained by
+        // the lifecycle instances
+        for (Iterator<String> i = factory.getLifecycleIds(); i.hasNext();) {
+            Lifecycle lifecycle = factory.getLifecycle(i.next());
+            for (PhaseListener cur : lifecycle.getPhaseListeners()) {
+                if (cur instanceof ELResolverInitPhaseListener) {
+                    lifecycle.removePhaseListener(cur);
+                }
+            }
+        }
+
+    }
+
+} // END InitializingPhaseListener
diff --git a/jsf-ri/src/main/java/com/sun/faces/lifecycle/HttpMethodRestrictionsPhaseListener.java b/jsf-ri/src/main/java/com/sun/faces/lifecycle/HttpMethodRestrictionsPhaseListener.java
new file mode 100644
index 0000000..c9c7778
--- /dev/null
+++ b/jsf-ri/src/main/java/com/sun/faces/lifecycle/HttpMethodRestrictionsPhaseListener.java
@@ -0,0 +1,79 @@
+
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.lifecycle;
+
+import javax.faces.context.ExternalContext;
+import javax.faces.context.FacesContext;
+import javax.faces.event.PhaseEvent;
+import javax.faces.event.PhaseId;
+import javax.faces.event.PhaseListener;
+import javax.servlet.http.HttpServletRequest;
+
+
+public class HttpMethodRestrictionsPhaseListener implements PhaseListener {
+    
+    public HttpMethodRestrictionsPhaseListener() {
+    }
+    
+    public void afterPhase(PhaseEvent event) {
+    }
+
+    public void beforePhase(PhaseEvent event) {
+        FacesContext context = event.getFacesContext();
+        ExternalContext extContext = context.getExternalContext();
+        
+        Object requestObj = extContext.getRequest();
+        if (requestObj instanceof HttpServletRequest) {
+            String method = ((HttpServletRequest)requestObj).getMethod();
+            if (method.equals("OPTIONS")) {
+                context.responseComplete();
+            }
+        }
+
+    }
+
+    public PhaseId getPhaseId() {
+        return PhaseId.RESTORE_VIEW;
+    }
+    
+    
+    
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/lifecycle/InvokeApplicationPhase.java b/jsf-ri/src/main/java/com/sun/faces/lifecycle/InvokeApplicationPhase.java
index ee8373f..3ed3b75 100644
--- a/jsf-ri/src/main/java/com/sun/faces/lifecycle/InvokeApplicationPhase.java
+++ b/jsf-ri/src/main/java/com/sun/faces/lifecycle/InvokeApplicationPhase.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/lifecycle/LifecycleFactoryImpl.java b/jsf-ri/src/main/java/com/sun/faces/lifecycle/LifecycleFactoryImpl.java
index ed18290..f78303a 100644
--- a/jsf-ri/src/main/java/com/sun/faces/lifecycle/LifecycleFactoryImpl.java
+++ b/jsf-ri/src/main/java/com/sun/faces/lifecycle/LifecycleFactoryImpl.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -40,15 +44,14 @@ package com.sun.faces.lifecycle;
 
 import com.sun.faces.util.FacesLogger;
 import com.sun.faces.util.MessageUtils;
-
 import javax.faces.FacesException;
 import javax.faces.lifecycle.Lifecycle;
 import javax.faces.lifecycle.LifecycleFactory;
-
 import java.util.Iterator;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.logging.Level;
 import java.util.logging.Logger;
+import javax.faces.context.FacesContext;
 
 /**
  * <B>LifecycleFactoryImpl</B> is the stock implementation of Lifecycle
@@ -75,7 +78,9 @@ public class LifecycleFactoryImpl extends LifecycleFactory {
 
         // We must have an implementation under this key.
         lifecycleMap.put(LifecycleFactory.DEFAULT_LIFECYCLE,
-                         new LifecycleImpl());
+                         new LifecycleImpl(FacesContext.getCurrentInstance()));
+//        lifecycleMap.put(ActionLifecycle.ACTION_LIFECYCLE,
+//                         new ActionLifecycle());
         if (LOGGER.isLoggable(Level.FINE)) {
             LOGGER.fine("Created Default Lifecycle");
         }
diff --git a/jsf-ri/src/main/java/com/sun/faces/lifecycle/LifecycleImpl.java b/jsf-ri/src/main/java/com/sun/faces/lifecycle/LifecycleImpl.java
index 7554f8f..12feb4f 100644
--- a/jsf-ri/src/main/java/com/sun/faces/lifecycle/LifecycleImpl.java
+++ b/jsf-ri/src/main/java/com/sun/faces/lifecycle/LifecycleImpl.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -36,19 +40,30 @@
 
 package com.sun.faces.lifecycle;
 
+import com.sun.faces.util.Util;
+
+import com.sun.faces.config.WebConfiguration;
 import java.util.List;
 import java.util.concurrent.CopyOnWriteArrayList;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
 import javax.faces.FacesException;
+import javax.faces.FactoryFinder;
 import javax.faces.context.FacesContext;
 import javax.faces.event.PhaseListener;
 import javax.faces.lifecycle.Lifecycle;
 
 import com.sun.faces.util.FacesLogger;
 import com.sun.faces.util.MessageUtils;
-
+import javax.faces.application.Application;
+import javax.faces.context.ExternalContext;
+import javax.faces.event.AbortProcessingException;
+import javax.faces.event.PostConstructApplicationEvent;
+import javax.faces.event.SystemEvent;
+import javax.faces.event.SystemEventListener;
+import javax.faces.lifecycle.ClientWindow;
+import javax.faces.lifecycle.ClientWindowFactory;
 
 /**
  * <p><b>LifecycleImpl</b> is the stock implementation of the standard
@@ -85,11 +100,80 @@ public class LifecycleImpl extends Lifecycle {
     // List for registered PhaseListeners
     private List<PhaseListener> listeners =
           new CopyOnWriteArrayList<PhaseListener>();
+    private boolean isClientWindowEnabled = false;
+    private WebConfiguration config;
+    
+    public LifecycleImpl() {
+        
+    }
+
+    public LifecycleImpl(FacesContext context) {
+        ExternalContext extContext = context.getExternalContext();
+        config = WebConfiguration.getInstance(extContext);
+        context.getApplication().subscribeToEvent(PostConstructApplicationEvent.class,
+                         Application.class, new PostConstructApplicationListener());
+        
+    }
+    
+    private class PostConstructApplicationListener implements SystemEventListener {
+
+        public boolean isListenerForSource(Object source) {
+            return source instanceof Application;
+        }
 
+        public void processEvent(SystemEvent event) throws AbortProcessingException {
+            LifecycleImpl.this.postConstructApplicationInitialization();
+        }
         
+    }
+    
+    private void postConstructApplicationInitialization() {
+        String optionValue = config.getOptionValue(WebConfiguration.WebContextInitParameter.ClientWindowMode);
+        isClientWindowEnabled = (null != optionValue) && !optionValue.equals(WebConfiguration.WebContextInitParameter.ClientWindowMode.getDefaultValue());
+    }
 
     // ------------------------------------------------------- Lifecycle Methods
 
+    @Override
+    public void attachWindow(FacesContext context) {
+        if (!isClientWindowEnabled) {
+            return;
+        }
+        if (context == null) {
+            throw new NullPointerException
+                (MessageUtils.getExceptionMessageString
+                 (MessageUtils.NULL_PARAMETERS_ERROR_MESSAGE_ID, "context"));
+        }
+
+        ExternalContext extContext = context.getExternalContext();
+        ClientWindow myWindow = extContext.getClientWindow();
+        if (null == myWindow) {
+            myWindow = createClientWindow(context);
+            if (null != myWindow) {
+                myWindow.decode(context);
+                extContext.setClientWindow(myWindow);
+            }
+        }
+        
+        
+        // If you need to do the "send down the HTML" trick, be sure to
+        // mark responseComplete true after doing so.  That way
+        // the remaining lifecycle methods will not execute.
+        
+    }
+
+    private ClientWindow createClientWindow(FacesContext context) {
+        ClientWindowFactory clientWindowFactory = null;
+
+        if (Util.isUnitTestModeEnabled()) {
+            clientWindowFactory = new ClientWindowFactoryImpl(false);
+        } else {
+            clientWindowFactory = (ClientWindowFactory)
+                FactoryFinder.getFactory(FactoryFinder.CLIENT_WINDOW_FACTORY);
+        }
+
+        return clientWindowFactory.getClientWindow(context);
+    }
 
     // Execute the phases up to but not including Render Response
     public void execute(FacesContext context) throws FacesException {
diff --git a/jsf-ri/src/main/java/com/sun/faces/lifecycle/Phase.java b/jsf-ri/src/main/java/com/sun/faces/lifecycle/Phase.java
index f1d0a59..6d7c505 100644
--- a/jsf-ri/src/main/java/com/sun/faces/lifecycle/Phase.java
+++ b/jsf-ri/src/main/java/com/sun/faces/lifecycle/Phase.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/lifecycle/ProcessValidationsPhase.java b/jsf-ri/src/main/java/com/sun/faces/lifecycle/ProcessValidationsPhase.java
index 360ea07..88935f6 100644
--- a/jsf-ri/src/main/java/com/sun/faces/lifecycle/ProcessValidationsPhase.java
+++ b/jsf-ri/src/main/java/com/sun/faces/lifecycle/ProcessValidationsPhase.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/lifecycle/RenderResponsePhase.java b/jsf-ri/src/main/java/com/sun/faces/lifecycle/RenderResponsePhase.java
index 698a7ea..65dd287 100644
--- a/jsf-ri/src/main/java/com/sun/faces/lifecycle/RenderResponsePhase.java
+++ b/jsf-ri/src/main/java/com/sun/faces/lifecycle/RenderResponsePhase.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -43,7 +47,6 @@ import javax.faces.FacesException;
 import javax.faces.view.ViewDeclarationLanguage;
 import javax.faces.application.ViewHandler;
 import javax.faces.context.FacesContext;
-import javax.faces.context.PartialViewContext;
 import javax.faces.event.PhaseId;
 
 import java.io.IOException;
@@ -83,7 +86,7 @@ public class RenderResponsePhase extends Phase {
         }
         // For requests intended to produce a partial response, we need prohibit
         // writing any content outside of the view itself (f:view).
-        PartialViewContext partialViewContext = facesContext.getPartialViewContext();
+        facesContext.getPartialViewContext();
         
         try {
 
diff --git a/jsf-ri/src/main/java/com/sun/faces/lifecycle/RestoreViewPhase.java b/jsf-ri/src/main/java/com/sun/faces/lifecycle/RestoreViewPhase.java
index abe3ab7..f1d48c1 100644
--- a/jsf-ri/src/main/java/com/sun/faces/lifecycle/RestoreViewPhase.java
+++ b/jsf-ri/src/main/java/com/sun/faces/lifecycle/RestoreViewPhase.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -38,10 +42,11 @@
 
 package com.sun.faces.lifecycle;
 
-import com.sun.faces.RIConstants;
+import java.util.EnumSet;
 import java.util.ListIterator;
 import java.util.logging.Level;
 import java.util.logging.Logger;
+import java.util.Set;
 
 import javax.faces.FacesException;
 import javax.faces.application.ViewExpiredException;
@@ -49,6 +54,7 @@ import javax.faces.application.ViewHandler;
 import javax.faces.component.UIComponent;
 import javax.faces.component.UIViewRoot;
 import javax.faces.component.visit.VisitContext;
+import javax.faces.component.visit.VisitHint;
 import javax.faces.component.visit.VisitResult;
 import javax.faces.context.FacesContext;
 import javax.el.MethodExpression;
@@ -59,17 +65,22 @@ import javax.faces.lifecycle.Lifecycle;
 
 import com.sun.faces.config.WebConfiguration;
 import com.sun.faces.config.WebConfiguration.BooleanWebContextInitParameter;
+import com.sun.faces.renderkit.RenderKitUtils;
 import com.sun.faces.util.FacesLogger;
 import com.sun.faces.util.MessageUtils;
 import com.sun.faces.util.Util;
-import java.util.Collection;
+import java.net.URI;
+import java.net.URISyntaxException;
 import java.util.Map;
-import javax.faces.component.UIViewParameter;
+import javax.faces.application.ProtectedViewException;
 import javax.faces.component.visit.VisitCallback;
+import javax.faces.context.ExternalContext;
 import javax.faces.event.AbortProcessingException;
 import javax.faces.event.PostRestoreStateEvent;
 import javax.faces.event.ExceptionQueuedEvent;
 import javax.faces.event.ExceptionQueuedEventContext;
+import javax.faces.flow.FlowHandler;
+import javax.faces.render.ResponseStateManager;
 import javax.faces.view.ViewDeclarationLanguage;
 import javax.faces.view.ViewMetadata;
 
@@ -84,10 +95,13 @@ public class RestoreViewPhase extends Phase {
     private static final String WEBAPP_ERROR_PAGE_MARKER =
             "javax.servlet.error.message";
 
-    private static Logger LOGGER = FacesLogger.LIFECYCLE.getLogger();
+    private static final Logger LOGGER = FacesLogger.LIFECYCLE.getLogger();
 
     private WebConfiguration webConfig;
 
+    private static String SKIP_ITERATION_HINT =
+        "javax.faces.visit.SKIP_ITERATION";
+
 
     // ---------------------------------------------------------- Public Methods
 
@@ -126,7 +140,7 @@ public class RestoreViewPhase extends Phase {
             throw new FacesException(MessageUtils.getExceptionMessageString(
                   MessageUtils.NULL_CONTEXT_ERROR_MESSAGE_ID));
         }
-
+        
         // If an app had explicitely set the tree in the context, use that;
         //
         UIViewRoot viewRoot = facesContext.getViewRoot();
@@ -145,6 +159,7 @@ public class RestoreViewPhase extends Phase {
             }
             return;
         }
+        FacesException thrownException = null;
 
         try {
 
@@ -178,7 +193,7 @@ public class RestoreViewPhase extends Phase {
             boolean isPostBack = (facesContext.isPostback() && !isErrorPage(facesContext));
             if (isPostBack) {
                 facesContext.setProcessingEvents(false);
-            // try to restore the view
+                // try to restore the view
                 viewRoot = viewHandler.restoreView(facesContext, viewId);
                 if (viewRoot == null) {
                     if (is11CompatEnabled(facesContext)) {
@@ -209,27 +224,29 @@ public class RestoreViewPhase extends Phase {
                 if (LOGGER.isLoggable(Level.FINE)) {
                     LOGGER.fine("New request: creating a view for " + viewId);
                 }
-
-                ViewDeclarationLanguage vdl = facesContext.getApplication().getViewHandler().getViewDeclarationLanguage(facesContext, viewId);
-                facesContext.getAttributes().put(RIConstants.VIEWID_KEY_NAME, viewId);
-
+                
+                String derivedViewId = viewHandler.deriveLogicalViewId(facesContext, viewId);
+                ViewDeclarationLanguage vdl = viewHandler.getViewDeclarationLanguage(facesContext, derivedViewId);
+                
+                maybeTakeProtectedViewAction(facesContext, viewHandler, vdl, viewId);
+                    
+                ViewMetadata metadata  = null;
                 if (vdl != null) {
                     // If we have one, get the ViewMetadata...
-                    ViewMetadata metadata = vdl.getViewMetadata(facesContext, viewId);
-
+                    metadata = vdl.getViewMetadata(facesContext, viewId);
+                    
                     if (metadata != null) { // perhaps it's not supported
                         // and use it to create the ViewRoot.  This will have, at most
                         // the UIViewRoot and its metadata facet.
                         viewRoot = metadata.createMetadataView(facesContext);
-
-                        // Only skip to render response if there are no view parameters
-                        Collection<UIViewParameter> params =
-                                ViewMetadata.getViewParameters(viewRoot);
-                        if (params.isEmpty()) {
+                        
+                        // Only skip to render response if there is no metadata
+                        if (!ViewMetadata.hasMetadata(viewRoot)) {
                             facesContext.renderResponse();
                         }
                     }
-                } else {
+                } 
+                if (null == vdl || null == metadata) {
                     facesContext.renderResponse();
                 }
 
@@ -240,9 +257,23 @@ public class RestoreViewPhase extends Phase {
                 facesContext.setViewRoot(viewRoot);
                 assert (null != viewRoot);
             }
-        }
-        finally {
-            deliverPostRestoreStateEvent(facesContext);
+        } catch (Throwable fe) {
+            if (fe instanceof FacesException) {
+              thrownException = (FacesException) fe;
+            } else {
+              thrownException = new FacesException(fe);
+            }
+        } finally {
+            if (null == thrownException) {
+                FlowHandler flowHandler = facesContext.getApplication().getFlowHandler();
+                if (null != flowHandler) {
+                    flowHandler.clientWindowTransition(facesContext);
+                }
+                
+                deliverPostRestoreStateEvent(facesContext);
+            } else {
+                throw thrownException;
+            }
         }
 
         if (LOGGER.isLoggable(Level.FINE)) {
@@ -250,13 +281,159 @@ public class RestoreViewPhase extends Phase {
         }
 
     }
-
+    
+    private void maybeTakeProtectedViewAction(FacesContext context, 
+            ViewHandler viewHandler, 
+            ViewDeclarationLanguage vdl, String viewId) {
+        // http://java.net/jira/browse/JAVASERVERFACES-2204
+        // PENDING: this code is optimized to be fast to write.
+        // It must be optimized to be fast to run.
+        
+        // See git clone ssh://edburns@git.java.net/grizzly~git 1_9_36 for
+        // how grizzly does this.
+        
+        Set<String> urlPatterns = viewHandler.getProtectedViewsUnmodifiable();
+        // Implement section 12.1 of the Servlet spec.
+        boolean currentViewIsProtected = isProtectedView(viewId, urlPatterns);       
+        if (currentViewIsProtected) {
+            ExternalContext extContext = context.getExternalContext();
+            Map<String, String> headers = extContext.getRequestHeaderMap();
+            
+            //Check the token
+            String rkId = viewHandler.calculateRenderKitId(context);
+            ResponseStateManager rsm = RenderKitUtils.getResponseStateManager(context, rkId);
+            String incomingSecretKeyValue = extContext.getRequestParameterMap().
+                get(ResponseStateManager.NON_POSTBACK_VIEW_TOKEN_PARAM);
+            String correctSecretKeyValue = rsm.getCryptographicallyStrongTokenFromSession(context);
+            if (null == incomingSecretKeyValue || 
+                !correctSecretKeyValue.equals(incomingSecretKeyValue)) {
+                throw new ProtectedViewException();
+            }
+            String sep = "/";
+            // Check the referer header
+            if (headers.containsKey("Referer")) {
+                String referer = headers.get("Referer");
+                boolean refererIsInProtectedSet = isProtectedView(referer, urlPatterns);
+                if (!refererIsInProtectedSet) {
+                    boolean refererOriginatesInThisWebapp = false;
+                    try {
+                        refererOriginatesInThisWebapp = originatesInWebapp(context, referer, vdl);
+                    } catch(URISyntaxException ue) {
+                        throw new ProtectedViewException(ue);    
+                    }
+                    if (!refererOriginatesInThisWebapp) {
+                        String message = FacesLogger.LIFECYCLE.interpolateMessage(context, 
+                            "jsf.lifecycle.invalid.referer", new String [] { referer, viewId });
+                        if (LOGGER.isLoggable(Level.SEVERE)) {
+                            LOGGER.log(Level.SEVERE, message);
+                        }
+                        throw new ProtectedViewException(message);                
+                    }
+                }
+            }
+            // Check the origin header
+            if (headers.containsKey("Origin")) {
+                String origin = headers.get("Origin");
+                boolean originIsInProtectedSet = isProtectedView(origin, urlPatterns);
+                if (!originIsInProtectedSet) {
+                    boolean originOriginatesInThisWebapp = false;
+                    try {
+                        originOriginatesInThisWebapp = originatesInWebapp(context, origin, vdl);
+                    } catch(URISyntaxException ue) {
+                        throw new ProtectedViewException(ue);    
+                    }
+                    if (!originOriginatesInThisWebapp) {
+                        String message = FacesLogger.LIFECYCLE.interpolateMessage(context, 
+                            "jsf.lifecycle.invalid.origin", new String [] { origin, viewId });
+                        if (LOGGER.isLoggable(Level.SEVERE)) {
+                            LOGGER.log(Level.SEVERE, message);
+                        }
+                        throw new ProtectedViewException(message);                
+                    }
+                }
+            }
+        }
+    }
+    
+    private boolean isProtectedView(String viewToCheck, Set<String>urlPatterns) {
+        boolean isProtected = false;
+        for (String cur : urlPatterns) {
+            if (cur.equals(viewToCheck)) {
+                isProtected = true;
+                break;
+            }
+        }       
+        return isProtected;
+    }
+    
+    private boolean originatesInWebapp(FacesContext context, String view, ViewDeclarationLanguage vdl) throws URISyntaxException {
+        boolean doesOriginate = false;
+        ExternalContext extContext = context.getExternalContext();
+        String sep = "/";
+        URI uri = null;
+        String path = null;
+        boolean isAbsoluteURI = view.matches("^[a-z]+://.*");
+        if (!isAbsoluteURI) {
+            URI absoluteURI = null;
+            URI relativeURI = null;
+            String base = extContext.getRequestScheme() + ":" +
+                sep + sep + extContext.getRequestServerName() +
+                ":" + extContext.getRequestServerPort();
+                absoluteURI = new URI(base);
+                relativeURI = new URI(view);
+                uri = absoluteURI.resolve(relativeURI);  
+        }
+        boolean hostsMatch = false,
+            portsMatch = false,
+            contextPathsMatch = false,
+            originatesInThisWebapp = false;
+            
+        if (null == uri) {
+            uri = new URI(view);
+        }
+        if (null == uri.getHost()) {
+            hostsMatch = false;
+        } else {
+            hostsMatch = uri.getHost().equals(extContext.getRequestServerName());    
+        }
+        if (-1 == uri.getPort()) {
+            portsMatch = false;
+        } else {
+            portsMatch = uri.getPort() == extContext.getRequestServerPort();
+        }
+        path = uri.getPath();
+        contextPathsMatch = path.contains(extContext.getApplicationContextPath());
+            
+        doesOriginate = hostsMatch && portsMatch && contextPathsMatch;
+        
+        if (!doesOriginate) {
+            // Last chance view originates in this web app.
+            int idx = path.lastIndexOf(sep);
+            if (-1 != idx) {
+                path = path.substring(idx);
+            } 
+            if (null == path || !vdl.viewExists(context, path)) {
+                doesOriginate = false;
+            }    else {
+                doesOriginate = true;
+            }
+        }
+        return doesOriginate;      
+    }
+    
     private void deliverPostRestoreStateEvent(FacesContext facesContext) throws FacesException {
         UIViewRoot root = facesContext.getViewRoot();
         final PostRestoreStateEvent postRestoreStateEvent = new PostRestoreStateEvent(root);
         try {
-            root.visitTree(VisitContext.createVisitContext(facesContext),
-                    new VisitCallback() {
+            // PENDING: This is included for those component frameworks that don't utilize the
+            // new VisitHint(s) yet - but still wish to know that they should be non-iterating
+            // during state saving.  It should be removed at some point.
+            facesContext.getAttributes().put(SKIP_ITERATION_HINT, true);
+            facesContext.getApplication().publishEvent(facesContext, PostRestoreStateEvent.class, root);
+
+            Set<VisitHint> hints = EnumSet.of(VisitHint.SKIP_ITERATION);
+            VisitContext visitContext = VisitContext.createVisitContext(facesContext, null, hints);
+            root.visitTree(visitContext, new VisitCallback() {
 
                         public VisitResult visit(VisitContext context, UIComponent target) {
                             postRestoreStateEvent.setComponent(target);
@@ -272,8 +449,12 @@ public class RestoreViewPhase extends Phase {
                     e,
                     null,
                     PhaseId.RESTORE_VIEW));
+        } finally {
+            // PENDING: This is included for those component frameworks that don't utilize the
+            // new VisitHint(s) yet - but still wish to know that they should be non-iterating
+            // during state saving.  It should be removed at some point.
+            facesContext.getAttributes().remove(SKIP_ITERATION_HINT);
         }
-
     }
 
     // --------------------------------------------------------- Private Methods
@@ -285,6 +466,9 @@ public class RestoreViewPhase extends Phase {
      */
     private void notifyAfter(FacesContext context, Lifecycle lifecycle) {
         UIViewRoot viewRoot = context.getViewRoot();
+        if (null == viewRoot) {
+            return;
+        }
         MethodExpression afterPhase = viewRoot.getAfterPhaseListener();
         if (null != afterPhase) {
             try {
diff --git a/jsf-ri/src/main/java/com/sun/faces/lifecycle/UpdateModelValuesPhase.java b/jsf-ri/src/main/java/com/sun/faces/lifecycle/UpdateModelValuesPhase.java
index d66ea33..d9157cd 100644
--- a/jsf-ri/src/main/java/com/sun/faces/lifecycle/UpdateModelValuesPhase.java
+++ b/jsf-ri/src/main/java/com/sun/faces/lifecycle/UpdateModelValuesPhase.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/mgbean/BeanBuilder.java b/jsf-ri/src/main/java/com/sun/faces/mgbean/BeanBuilder.java
index 6d0fe4a..3d5345c 100644
--- a/jsf-ri/src/main/java/com/sun/faces/mgbean/BeanBuilder.java
+++ b/jsf-ri/src/main/java/com/sun/faces/mgbean/BeanBuilder.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -50,8 +54,6 @@ import javax.el.ValueExpression;
 import javax.faces.context.FacesContext;
 import java.lang.reflect.Constructor;
 import java.lang.reflect.Modifier;
-import java.lang.reflect.Field;
-import java.lang.reflect.Method;
 import java.util.ArrayList;
 import java.util.LinkedHashMap;
 import java.util.List;
@@ -446,7 +448,7 @@ public abstract class BeanBuilder {
 
             if (!hasMessages()) {
                 // class is ok, scan for annotations
-                this.isInjectible = scanForAnnotations(clazz);
+                this.isInjectible = Util.classHasAnnotations(clazz);
             }
             return clazz;
         }
@@ -459,7 +461,7 @@ public abstract class BeanBuilder {
         String scope = beanInfo.getScope();
         if (!ELUtils.isScopeValid(scope)) {
             // custom scope - make sure it's valid
-            if (!ELUtils.isExpression(scope)) {
+            if (!SharedUtils.isExpression(scope)) {
                 String message = MessageUtils.getExceptionMessageString(
                          MessageUtils.MANAGED_BEAN_INVALID_SCOPE_ERROR_ID,
                          beanInfo.getName());
@@ -470,34 +472,6 @@ public abstract class BeanBuilder {
     }
 
 
-    private boolean scanForAnnotations(Class<?> clazz) {
-        if (clazz != null) {
-            while (clazz != Object.class) {
-                Field[] fields = clazz.getDeclaredFields();
-                if (fields != null) {
-                    for (Field field : fields) {
-                        if (field.getAnnotations().length > 0) {
-                            return true;
-                        }
-                    }
-                }
-
-                Method[] methods = clazz.getDeclaredMethods();
-                if (methods != null) {
-                    for (Method method : methods) {
-                        if (method.getDeclaredAnnotations().length > 0) {
-                            return true;
-                        }
-                    }
-                }
-
-                clazz = clazz.getSuperclass();
-            }
-        }
-
-        return false;
-    }
-
     // ----------------------------------------------------------- Inner Classes
 
 
@@ -524,7 +498,7 @@ public abstract class BeanBuilder {
             this.expressionString = expressionString;
             this.expectedType = expectedType;
 
-            if (ELUtils.isExpression(this.expressionString)) {
+            if (SharedUtils.isExpression(this.expressionString)) {
                 List<String> expressions = ELUtils.getExpressionsFromString(this.expressionString);
                 if (!expressions.isEmpty()) {
                     for (String expression : expressions) {
@@ -540,7 +514,7 @@ public abstract class BeanBuilder {
                         segment[0] = null;
                     }
                 }
-                if (!ELUtils.isExpression(beanInfo.getScope())) {
+                if (!SharedUtils.isExpression(beanInfo.getScope())) {
                     ELUtils.Scope expressionScope = ELUtils
                           .getNarrowestScopeFromExpression(this.expressionString);
                     if (expressionScope != null) {
diff --git a/jsf-ri/src/main/java/com/sun/faces/mgbean/BeanManager.java b/jsf-ri/src/main/java/com/sun/faces/mgbean/BeanManager.java
index 58d324e..7f2692c 100644
--- a/jsf-ri/src/main/java/com/sun/faces/mgbean/BeanManager.java
+++ b/jsf-ri/src/main/java/com/sun/faces/mgbean/BeanManager.java
@@ -1,782 +1,789 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package com.sun.faces.mgbean;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Locale;
-import java.util.concurrent.ConcurrentMap;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-import javax.faces.context.FacesContext;
-import javax.faces.event.*;
-import javax.el.ExpressionFactory;
-import javax.el.ValueExpression;
-import javax.el.ELContext;
-import javax.el.ELResolver;
-import javax.el.FunctionMapper;
-import javax.el.VariableMapper;
-
-import com.sun.faces.el.ELUtils;
-import com.sun.faces.spi.InjectionProvider;
-import com.sun.faces.util.FacesLogger;
-import com.sun.faces.util.MessageUtils;
-
-/**
- * <p>Main interface for dealing with JSF managed beans</p>
- */
-public class BeanManager implements SystemEventListener {
-
-    private static final Logger LOGGER = FacesLogger.MANAGEDBEAN.getLogger();
-
-    @SuppressWarnings({"CollectionWithoutInitialCapacity"})
-    private Map<String,BeanBuilder> managedBeans =
-         new HashMap<String,BeanBuilder>();
-    private InjectionProvider injectionProvider;
-    private boolean configPreprocessed;
-    private boolean lazyBeanValidation;
-    private List<String> eagerBeans = new ArrayList<String>(4);
-
-    // ------------------------------------------------------------ Constructors
-
-
-    public BeanManager(InjectionProvider injectionProvider,
-                       boolean lazyBeanValidation) {
-
-        this.injectionProvider = injectionProvider;
-        this.lazyBeanValidation = lazyBeanValidation;
-
-    }
-
-
-    public BeanManager(InjectionProvider injectionProvider,
-                       Map<String,BeanBuilder> managedBeans,
-                       boolean lazyBeanValidation) {
-
-        this(injectionProvider, lazyBeanValidation);
-        this.managedBeans = managedBeans;
-
-    }
-
-
-    // ---------------------------------------- Methods from SystemEventListener
-
-
-    /**
-     * <p>
-     * Invoke PreDestroy methods on any managed beans within the provided scope.
-     * </p>
-     *
-     * @param event the {@link ScopeContext}
-     *
-     * @throws AbortProcessingException
-     */
-    public void processEvent(SystemEvent event)
-    throws AbortProcessingException {
-
-        ScopeContext scopeContext = ((PreDestroyCustomScopeEvent) event).getContext();
-        Map<String,Object> scope = scopeContext.getScope();
-        for (Map.Entry<String,Object> entry : scope.entrySet()) {
-            String name = entry.getKey();
-            if (isManaged(name)) {
-                BeanBuilder builder = getBuilder(name);
-                builder.destroy(injectionProvider, entry.getValue());
-            }
-        }
-
-
-    }
-
-
-    /**
-     * @see SystemEventListener#isListenerForSource(Object)
-     */
-    public boolean isListenerForSource(Object source) {
-
-        return (source instanceof ScopeContext);
-
-    }
-
-
-    // ---------------------------------------------------------- Public Methods
-
-
-    public void register(ManagedBeanInfo beanInfo) {
-        BeanBuilder builder;
-        if (beanInfo.hasListEntry()) {
-            if (beanInfo.hasMapEntry() || beanInfo.hasManagedProperties()) {
-                String message =
-                     MessageUtils.getExceptionMessageString(
-                          MessageUtils.MANAGED_BEAN_AS_LIST_CONFIG_ERROR_ID,
-                          beanInfo.getName());
-                builder = new ErrorBean(beanInfo, message);
-                //addBean(beanInfo.getName(), new ErrorBean(beanInfo, message));
-            } else {
-                builder = new ManagedListBeanBuilder(beanInfo);
-                //addBean(beanInfo.getName(),
-                //        new ManagedListBeanBuilder(beanInfo));
-            }
-        } else if (beanInfo.hasMapEntry()) {
-            if (beanInfo.hasManagedProperties()) {
-                String message =
-                     MessageUtils.getExceptionMessageString(
-                          MessageUtils.MANAGED_BEAN_AS_MAP_CONFIG_ERROR_ID,
-                          beanInfo.getName());
-                builder = new ErrorBean(beanInfo, message);
-                //addBean(beanInfo.getName(), new ErrorBean(beanInfo, message));
-            } else {
-                builder = new ManagedMapBeanBuilder(beanInfo);
-                //addBean(beanInfo.getName(), new ManagedMapBeanBuilder(beanInfo));
-            }
-        } else {
-            builder = new ManagedBeanBuilder(beanInfo);
-            //addBean(beanInfo.getName(), new ManagedBeanBuilder(beanInfo));
-        }
-
-        addBean(beanInfo.getName(), builder);
-        if (beanInfo.isEager()) {
-            eagerBeans.add(beanInfo.getName());
-        }
-
-    }
-
-    
-    public List<String> getEagerBeanNames() {
-
-        return eagerBeans;
-
-    }
-
-
-    public Map<String,BeanBuilder> getRegisteredBeans() {
-
-        return managedBeans;
-
-    }
-
-
-     public boolean isManaged(String name) {
-
-        return (managedBeans != null && managedBeans.containsKey(name));
-
-    }
-
-
-    public BeanBuilder getBuilder(String name) {
-
-        if (managedBeans != null) {
-            return managedBeans.get(name);
-        }
-        return null;
-
-    }
-
-
-    /**
-     * This should only be called during application init
-     */
-    public void preProcessesBeans() {
-
-        if (!configPreprocessed && !lazyBeanValidation) {
-            configPreprocessed = true;
-            for (Map.Entry<String, BeanBuilder> entry : managedBeans
-                 .entrySet()) {
-                preProcessBean(entry.getKey(), entry.getValue());
-            }
-        }
-
-    }
-
-
-    public boolean isBeanInScope(String name, BeanBuilder builder, FacesContext context) {
-        return ScopeManager.isInScope(name, builder.getScope(), context);
-
-    }
-
-
-    public Object getBeanFromScope(String name, BeanBuilder builder, FacesContext context) {
-        return ScopeManager.getFromScope(name, builder.getScope(), context);
-    }
-
-    public Object getBeanFromScope(String name, FacesContext context) {
-
-        String scope = this.getBuilder(name).getScope();
-        return ScopeManager.getFromScope(name, scope, context);
-
-    }
-
-
-
-
-    // ------------------------------------------------------- Lifecycle Methods
-
-    public Object create(String name, FacesContext facesContext) {
-        return create(name, managedBeans.get(name), facesContext);
-    }
-    
-    public Object create(String name, BeanBuilder builder, FacesContext facesContext) {
-        if (builder != null) {
-            if (lazyBeanValidation && !builder.isBaked()) {
-                preProcessBean(name, builder);
-            }
-            if (builder.hasMessages()) {
-                throw new ManagedBeanCreationException(buildMessage(name,
-                                                                    builder.getMessages(),
-                                                                    true));
-            } else {
-                return createAndPush(name, builder, facesContext);
-            }
-        }
-
-        return null;
-
-    }
-
-
-
-    public void destroy(String beanName, Object bean) {
-
-        BeanBuilder builder = managedBeans.get(beanName);
-        if (builder != null) {
-            builder.destroy(injectionProvider, bean);
-        }
-
-    }
-
-
-    // --------------------------------------------------------- Private Methods
-
-
-    private void addBean(String beanName, BeanBuilder builder) {
-
-        if (configPreprocessed) {
-            preProcessBean(beanName, builder);
-        }
-        if (LOGGER.isLoggable(Level.WARNING) && managedBeans.containsKey(beanName)) {
-            LOGGER.log(Level.WARNING,
-                       "jsf.managed.bean.duplicate",
-                       new Object[] { beanName,
-                                      managedBeans.get(beanName).beanInfo.getClassName(),
-                                      builder.beanInfo.getClassName() });
-        }
-        managedBeans.put(beanName, builder);
-
-    }
-
-
-    private void validateReferences(BeanBuilder builder,
-                                    List<String> references,
-                                    List<String> messages) {
-
-        List<String> refs = builder.getReferences();
-        if (refs != null) {
-            for (String ref : refs) {
-                if (isManaged(ref)) {
-                    if (references.contains(ref)) {
-                        StringBuilder sb = new StringBuilder(64);
-                        String[] ra =
-                             references.toArray(new String[references.size()]);
-                        for (String reference : ra) {
-                            sb.append(reference);
-                            sb.append(" -> ");
-                        }
-                        sb.append(ref);
-
-                        String message = MessageUtils
-                             .getExceptionMessageString(MessageUtils.CYCLIC_REFERENCE_ERROR_ID,
-                                                        ra[0],
-                                                        sb.toString());
-                        messages.add(message);
-                    } else {
-                        BeanBuilder b = getBuilder(ref);
-                        // If the bean has no references, then it's not
-                        // a target for cyclic detection.  
-                        if (b.getReferences() != null) {
-                            references.add(ref);
-                            validateReferences(b, references, messages);
-                            references.remove(ref);
-                        }
-                    }
-                }
-            }
-        }
-
-    }
-
-
-    private synchronized void preProcessBean(String beanName,
-                                             BeanBuilder builder) {
-        if (!builder.isBaked()) {
-            try {
-                builder.bake();
-
-                // preProcess any dependent beans
-                List<String> propRefs = builder.getReferences();
-                if (propRefs != null) {
-                    for (String reference : propRefs) {
-                        if (isManaged(reference)) {
-                            BeanBuilder b = getBuilder(reference);
-                            preProcessBean(reference, b);
-                        }
-                    }
-                }
-
-                //noinspection CollectionWithoutInitialCapacity
-                List<String> refs = new ArrayList<String>();
-                refs.add(beanName);
-                //noinspection CollectionWithoutInitialCapacity
-                ArrayList<String> messages = new ArrayList<String>();
-                validateReferences(builder, refs, messages);
-                if (!messages.isEmpty()) {
-                    builder.queueMessages(messages);
-                }
-
-                if (builder.hasMessages()) {
-                    if (LOGGER.isLoggable(Level.SEVERE)) {
-                        LOGGER.log(Level.SEVERE,
-                                   buildMessage(beanName,
-                                                builder.getMessages(),
-                                                false));
-                    }
-                }
-            } catch (ManagedBeanPreProcessingException mbpe) {
-                if (ManagedBeanPreProcessingException.Type.CHECKED
-                     .equals(mbpe.getType())) {
-                    builder.queueMessage(mbpe.getMessage());
-                    if (LOGGER.isLoggable(Level.SEVERE)) {
-                        LOGGER.log(Level.SEVERE,
-                                   buildMessage(beanName,
-                                                builder.getMessages(),
-                                                false));
-                    }
-                } else {
-                    String message = MessageUtils.getExceptionMessageString(
-                         MessageUtils.MANAGED_BEAN_UNKNOWN_PROCESSING_ERROR_ID,
-                         beanName);
-                    throw new ManagedBeanPreProcessingException(message, mbpe);
-                }
-            }
-        }
-
-    }
-
-    private Object createAndPush(String name,
-                                 BeanBuilder builder,
-                                 FacesContext facesContext) {
-
-        Object bean = builder.build(injectionProvider, facesContext);
-        ScopeManager.pushToScope(name, bean, builder.getScope(), facesContext);
-        return bean;
-
-    }
-
-
-    private String buildMessage(String name, List<String> messages,
-                                boolean runtime) {
-
-        StringBuilder sb = new StringBuilder(128);
-        if (runtime) {
-        sb.append(MessageUtils.getExceptionMessageString(
-             MessageUtils.MANAGED_BEAN_PROBLEMS_ERROR_ID, name));
-        } else {
-            sb.append(MessageUtils.getExceptionMessageString(
-                 MessageUtils.MANAGED_BEAN_PROBLEMS_STARTUP_ERROR_ID, name));
-        }
-        for (String message : messages) {
-            sb.append("\n     - ").append(message);
-        }
-        return sb.toString();
-
-    }
-
-
-    // ----------------------------------------------------------- Inner Classes
-
-
-    private static class ScopeManager {
-
-        private static final ConcurrentMap<String,ScopeHandler> handlerMap =
-             new ConcurrentHashMap<String,ScopeHandler>(5);
-        
-        static {
-            handlerMap.put(ELUtils.Scope.REQUEST.toString(), new RequestScopeHandler());
-            handlerMap.put(ELUtils.Scope.VIEW.toString(), new ViewScopeHandler());
-            handlerMap.put(ELUtils.Scope.SESSION.toString(), new SessionScopeHandler());
-            handlerMap.put(ELUtils.Scope.APPLICATION.toString(), new ApplicationScopeHandler());
-            handlerMap.put(ELUtils.Scope.NONE.toString(), new NoneScopeHandler());
-        }
-
-
-        static void pushToScope(String name,
-                                Object bean,
-                                String customScope,
-                                FacesContext context) {
-
-            ScopeHandler handler = getScopeHandler(customScope, context);
-            handler.handle(name, bean, context);
-
-        }
-
-
-        static boolean isInScope(String name,
-                                 String customScope,
-                                 FacesContext context) {
-
-            ScopeHandler handler = getScopeHandler(customScope, context);
-            return handler.isInScope(name, context);
-
-        }
-
-        static Object getFromScope(String name,
-                                   String customScope,
-                                   FacesContext context) {
-
-            ScopeHandler handler = getScopeHandler(customScope, context);
-            return handler.getFromScope(name, context);
-
-        }
-
-        private static ScopeHandler getScopeHandler(String customScope,
-                                                    FacesContext context) {
-
-            ScopeHandler handler = handlerMap.get(customScope);
-            if (handler == null) {
-                ExpressionFactory factory = context.getApplication().getExpressionFactory();
-                ValueExpression ve =
-                    factory.createValueExpression(context.getELContext(),
-                                                  customScope,
-                                                  Map.class);
-                handler = new CustomScopeHandler(ve);
-                handlerMap.putIfAbsent(customScope, handler);
-            }
-            return handler;
-
-        }
-
-        private interface ScopeHandler {
-
-            void handle(String name, Object bean, FacesContext context);
-
-            boolean isInScope(String name, FacesContext context);
-
-            Object getFromScope(String name, FacesContext context);
-
-        }
-
-        private static class NoneScopeHandler implements ScopeHandler {
-
-            public void handle(String name, Object bean, FacesContext context) {
-                // no-op
-            }
-
-            public boolean isInScope(String name, FacesContext context) {
-                return false;
-            }
-
-            public Object getFromScope(String name, FacesContext context) {
-                return null;
-            }
-        }
-
-        private static class RequestScopeHandler implements ScopeHandler {
-
-            public void handle(String name, Object bean, FacesContext context) {
-
-                context.getExternalContext().getRequestMap().put(name, bean);
-
-            }
-
-            public boolean isInScope(String name, FacesContext context) {
-
-                return context.getExternalContext().getRequestMap().containsKey(name);
-
-            }
-
-            public Object getFromScope(String name, FacesContext context) {
-
-                return context.getExternalContext().getRequestMap().get(name);
-
-            }
-
-        } // END RequestScopeHandler
-
-
-        private static class ViewScopeHandler implements ScopeHandler {
-
-            public void handle(String name, Object bean, FacesContext context) {
-
-                context.getViewRoot().getViewMap().put(name, bean);
-
-            }
-
-            public boolean isInScope(String name, FacesContext context) {
-
-                Map<String,Object> viewMap = context.getViewRoot().getViewMap(false);
-                return ((viewMap != null) && viewMap.containsKey(name));
-
-            }
-
-            public Object getFromScope(String name, FacesContext context) {
-
-                Map<String,Object> viewMap = context.getViewRoot().getViewMap(false);
-                return ((viewMap != null) ? viewMap.get(name) : null);
-
-            }
-
-        } // END ViewScopeHandler
-        
-
-        private static class SessionScopeHandler implements ScopeHandler  {
-
-            public void handle(String name, Object bean, FacesContext context) {
-
-                synchronized (context.getExternalContext().getSession(true)) {
-                    context.getExternalContext().getSessionMap().put(name, bean);
-                }
-
-            }
-
-            public boolean isInScope(String name, FacesContext context) {
-
-                return context.getExternalContext().getSessionMap().containsKey(name);
-
-            }
-
-            public Object getFromScope(String name, FacesContext context) {
-
-                return context.getExternalContext().getSessionMap().get(name);
-
-            }
-
-        } // END SessionScopeHandler
-
-
-        private static class ApplicationScopeHandler implements ScopeHandler {
-
-            public void handle(String name, Object bean, FacesContext context) {
-
-                synchronized (context.getExternalContext().getContext()) {
-                    context.getExternalContext().getApplicationMap().put(name, bean);
-                }
-
-            }
-
-            public boolean isInScope(String name, FacesContext context) {
-
-                return context.getExternalContext().getApplicationMap().containsKey(name);
-
-            }
-
-
-            public Object getFromScope(String name, FacesContext context) {
-
-                return context.getExternalContext().getApplicationMap().get(name);
-
-            }
-
-        } // END ApplicationScopeHandler
-
-
-        private static class CustomScopeHandler implements ScopeHandler {
-
-            private ValueExpression scope;
-
-            CustomScopeHandler(ValueExpression scope) {
-                this.scope = scope;
-            }
-
-            public void handle(String name, Object bean, FacesContext context) {
-
-                Map scopeMap = (Map) scope.getValue(getELContext(context));
-                
-                // IMPLEMENTATION PENDING.  I've added this to the Frame doc:
-                
-                /**
-                 * The runtime must must allow the value of this element to be 
-                 * an EL ValueExpression. If so, and the expression evaluates to
-                 * null, an informative error message including the expression 
-                 * string and the name of the bean must be logged. If the
-                 * expression evaluates to a Map, that Map is used as the
-                 * scope into which the bean will be stored. If storing the 
-                 * bean into the Map causes an Exception, the exception is 
-                 * allowed to flow up to the ExceptionHandler. If the 
-                 * ValueExpression does not evaluate to a Map, a
-                 * FacesException must be thrown with a message that includes 
-                 * the expression string, the toString() of the value, and 
-                 * the type of the value.
-                 * 
-                 */
-                
-                if (scopeMap != null) {
-                    synchronized (this) {
-                        //noinspection unchecked
-                        scopeMap.put(name, bean);
-                    }
-                } else {
-                    if (LOGGER.isLoggable(Level.WARNING)) {
-                        LOGGER.log(Level.WARNING,
-                                   "jsf.managed.bean.custom.scope.eval.null",
-                                   new Object[] { scope.getExpressionString() });
-                    }
-                }
-            }
-
-            public boolean isInScope(String name, FacesContext context) {
-
-                Map scopeMap = (Map) scope.getValue(getELContext(context));
-                if (scopeMap != null) {
-                    return scopeMap.containsKey(name);
-                } else {
-                    if (LOGGER.isLoggable(Level.WARNING)) {
-                        LOGGER.log(Level.WARNING,
-                                   "jsf.managed.bean.custom.scope.eval.null.existence",
-                                   new Object[] { scope.getExpressionString() });
-                    }
-                    // since the scope evaluated to null, return true to prevent
-                    // the managed bean from being needlessly created
-                    return true;
-                }
-            }
-
-            public Object getFromScope(String name, FacesContext context) {
-
-                Map scopeMap = (Map) scope.getValue(getELContext(context));
-                if (scopeMap != null) {
-                    return scopeMap.get(name);
-                } else {
-                    if (LOGGER.isLoggable(Level.WARNING)) {
-                        LOGGER.log(Level.WARNING,
-                                   "jsf.managed.bean.custom.scope.eval.null.existence",
-                                   new Object[] { scope.getExpressionString() });
-                    }
-                    return null;
-                }
-            }
-
-
-            // ------------------------------------------------- Private Methods
-
-
-            private ELContext getELContext(FacesContext ctx) {
-
-                return new CustomScopeELContext(ctx.getELContext());
-
-            }
-
-
-            // -------------------------------------------------- Nested Classes
-
-
-            /**
-             * We have to use a different ELContext when evaluating the expressions
-             * for the custom scopes as we don't want to cause the resolved
-             * flag on the original ELContext to be changed.  
-             */
-            private static final class CustomScopeELContext extends ELContext {
-
-                private ELContext delegate;
-
-                // ------------------------------------------------ Constructors
-
-
-                public CustomScopeELContext(ELContext delegate) {
-
-                    this.delegate = delegate;
-
-                }
-
-                // -------------------------------------- Methods from ELContext
-
-
-                @Override
-                public void putContext(Class aClass, Object o) {
-
-                    delegate.putContext(aClass, o);
-
-                }
-
-                @Override
-                public Object getContext(Class aClass) {
-
-                    return delegate.getContext(aClass);
-
-                }
-
-                @Override
-                public Locale getLocale() {
-
-                    return delegate.getLocale();
-
-                }
-
-                @Override
-                public void setLocale(Locale locale) {
-
-                    delegate.setLocale(locale);
-
-                }
-
-                @Override
-                public ELResolver getELResolver() {
-
-                    return delegate.getELResolver();
-
-                }
-
-                @Override
-                public FunctionMapper getFunctionMapper() {
-
-                    return delegate.getFunctionMapper();
-
-                }
-
-                @Override
-                public VariableMapper getVariableMapper() {
-
-                    return delegate.getVariableMapper();
-
-                }
-            }
-
-        } // END CustomScopeHandler
-    }
-
-}
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.mgbean;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Locale;
+import java.util.concurrent.ConcurrentMap;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import javax.faces.context.FacesContext;
+import javax.faces.event.*;
+import javax.el.ExpressionFactory;
+import javax.el.ValueExpression;
+import javax.el.ELContext;
+import javax.el.ELResolver;
+import javax.el.FunctionMapper;
+import javax.el.VariableMapper;
+
+import com.sun.faces.el.ELUtils;
+import com.sun.faces.spi.InjectionProvider;
+import com.sun.faces.util.FacesLogger;
+import com.sun.faces.util.MessageUtils;
+
+/**
+ * <p>Main interface for dealing with JSF managed beans</p>
+ */
+public class BeanManager implements SystemEventListener {
+
+    private static final Logger LOGGER = FacesLogger.MANAGEDBEAN.getLogger();
+
+    @SuppressWarnings({"CollectionWithoutInitialCapacity"})
+    private Map<String,BeanBuilder> managedBeans =
+         new HashMap<String,BeanBuilder>();
+    private InjectionProvider injectionProvider;
+    private boolean configPreprocessed;
+    private boolean lazyBeanValidation;
+    private List<String> eagerBeans = new ArrayList<String>(4);
+
+    // ------------------------------------------------------------ Constructors
+
+
+    public BeanManager(InjectionProvider injectionProvider,
+                       boolean lazyBeanValidation) {
+
+        this.injectionProvider = injectionProvider;
+        this.lazyBeanValidation = lazyBeanValidation;
+
+    }
+
+
+    public BeanManager(InjectionProvider injectionProvider,
+                       Map<String,BeanBuilder> managedBeans,
+                       boolean lazyBeanValidation) {
+
+        this(injectionProvider, lazyBeanValidation);
+        this.managedBeans = managedBeans;
+
+    }
+
+
+    // ---------------------------------------- Methods from SystemEventListener
+
+
+    /**
+     * <p>
+     * Invoke PreDestroy methods on any managed beans within the provided scope.
+     * </p>
+     *
+     * @param event the {@link ScopeContext}
+     *
+     * @throws AbortProcessingException
+     */
+    public void processEvent(SystemEvent event)
+    throws AbortProcessingException {
+
+        ScopeContext scopeContext = ((PreDestroyCustomScopeEvent) event).getContext();
+        Map<String,Object> scope = scopeContext.getScope();
+        for (Map.Entry<String,Object> entry : scope.entrySet()) {
+            String name = entry.getKey();
+            if (isManaged(name)) {
+                BeanBuilder builder = getBuilder(name);
+                builder.destroy(injectionProvider, entry.getValue());
+            }
+        }
+
+
+    }
+
+
+    /**
+     * @see SystemEventListener#isListenerForSource(Object)
+     */
+    public boolean isListenerForSource(Object source) {
+
+        return (source instanceof ScopeContext);
+
+    }
+
+
+    // ---------------------------------------------------------- Public Methods
+
+
+    public void register(ManagedBeanInfo beanInfo) {
+        BeanBuilder builder;
+        if (beanInfo.hasListEntry()) {
+            if (beanInfo.hasMapEntry() || beanInfo.hasManagedProperties()) {
+                String message =
+                     MessageUtils.getExceptionMessageString(
+                          MessageUtils.MANAGED_BEAN_AS_LIST_CONFIG_ERROR_ID,
+                          beanInfo.getName());
+                builder = new ErrorBean(beanInfo, message);
+                //addBean(beanInfo.getName(), new ErrorBean(beanInfo, message));
+            } else {
+                builder = new ManagedListBeanBuilder(beanInfo);
+                //addBean(beanInfo.getName(),
+                //        new ManagedListBeanBuilder(beanInfo));
+            }
+        } else if (beanInfo.hasMapEntry()) {
+            if (beanInfo.hasManagedProperties()) {
+                String message =
+                     MessageUtils.getExceptionMessageString(
+                          MessageUtils.MANAGED_BEAN_AS_MAP_CONFIG_ERROR_ID,
+                          beanInfo.getName());
+                builder = new ErrorBean(beanInfo, message);
+                //addBean(beanInfo.getName(), new ErrorBean(beanInfo, message));
+            } else {
+                builder = new ManagedMapBeanBuilder(beanInfo);
+                //addBean(beanInfo.getName(), new ManagedMapBeanBuilder(beanInfo));
+            }
+        } else {
+            builder = new ManagedBeanBuilder(beanInfo);
+            //addBean(beanInfo.getName(), new ManagedBeanBuilder(beanInfo));
+        }
+
+        addBean(beanInfo.getName(), builder);
+        if (beanInfo.isEager()) {
+            eagerBeans.add(beanInfo.getName());
+        }
+
+    }
+
+    
+    public List<String> getEagerBeanNames() {
+
+        return eagerBeans;
+
+    }
+
+
+    public Map<String,BeanBuilder> getRegisteredBeans() {
+
+        return managedBeans;
+
+    }
+
+
+     public boolean isManaged(String name) {
+
+        return (managedBeans != null && managedBeans.containsKey(name));
+
+    }
+
+
+    public BeanBuilder getBuilder(String name) {
+
+        if (managedBeans != null) {
+            return managedBeans.get(name);
+        }
+        return null;
+
+    }
+
+
+    /**
+     * This should only be called during application init
+     */
+    public void preProcessesBeans() {
+
+        if (!configPreprocessed && !lazyBeanValidation) {
+            configPreprocessed = true;
+            for (Map.Entry<String, BeanBuilder> entry : managedBeans
+                 .entrySet()) {
+                preProcessBean(entry.getKey(), entry.getValue());
+            }
+        }
+
+    }
+
+
+    public boolean isBeanInScope(String name, BeanBuilder builder, FacesContext context) {
+        return ScopeManager.isInScope(name, builder.getScope(), context);
+
+    }
+
+
+    public Object getBeanFromScope(String name, BeanBuilder builder, FacesContext context) {
+        return ScopeManager.getFromScope(name, builder.getScope(), context);
+    }
+
+    public Object getBeanFromScope(String name, FacesContext context) {
+
+        String scope = this.getBuilder(name).getScope();
+        return ScopeManager.getFromScope(name, scope, context);
+
+    }
+
+
+
+
+    // ------------------------------------------------------- Lifecycle Methods
+
+    public Object create(String name, FacesContext facesContext) {
+        return create(name, managedBeans.get(name), facesContext);
+    }
+    
+    public Object create(String name, BeanBuilder builder, FacesContext facesContext) {
+        if (builder != null) {
+            if (lazyBeanValidation && !builder.isBaked()) {
+                preProcessBean(name, builder);
+            }
+            if (builder.hasMessages()) {
+                throw new ManagedBeanCreationException(buildMessage(name,
+                                                                    builder.getMessages(),
+                                                                    true));
+            } else {
+                return createAndPush(name, builder, facesContext);
+            }
+        }
+
+        return null;
+
+    }
+
+
+
+    public void destroy(String beanName, Object bean) {
+
+        BeanBuilder builder = managedBeans.get(beanName);
+        if (builder != null) {
+            builder.destroy(injectionProvider, bean);
+        }
+
+    }
+
+
+    // --------------------------------------------------------- Private Methods
+
+
+    private void addBean(String beanName, BeanBuilder builder) {
+
+        if (configPreprocessed) {
+            preProcessBean(beanName, builder);
+        }
+        if (LOGGER.isLoggable(Level.WARNING) && managedBeans.containsKey(beanName)) {
+            LOGGER.log(Level.WARNING,
+                       "jsf.managed.bean.duplicate",
+                       new Object[] { beanName,
+                                      managedBeans.get(beanName).beanInfo.getClassName(),
+                                      builder.beanInfo.getClassName() });
+        }
+        managedBeans.put(beanName, builder);
+
+    }
+
+
+    private void validateReferences(BeanBuilder builder,
+                                    List<String> references,
+                                    List<String> messages) {
+
+        List<String> refs = builder.getReferences();
+        if (refs != null) {
+            for (String ref : refs) {
+                if (isManaged(ref)) {
+                    if (references.contains(ref)) {
+                        StringBuilder sb = new StringBuilder(64);
+                        String[] ra =
+                             references.toArray(new String[references.size()]);
+                        for (String reference : ra) {
+                            sb.append(reference);
+                            sb.append(" -> ");
+                        }
+                        sb.append(ref);
+
+                        String message = MessageUtils
+                             .getExceptionMessageString(MessageUtils.CYCLIC_REFERENCE_ERROR_ID,
+                                                        ra[0],
+                                                        sb.toString());
+                        messages.add(message);
+                    } else {
+                        BeanBuilder b = getBuilder(ref);
+                        // If the bean has no references, then it's not
+                        // a target for cyclic detection.  
+                        if (b.getReferences() != null) {
+                            references.add(ref);
+                            validateReferences(b, references, messages);
+                            references.remove(ref);
+                        }
+                    }
+                }
+            }
+        }
+
+    }
+
+
+    private synchronized void preProcessBean(String beanName,
+                                             BeanBuilder builder) {
+        if (!builder.isBaked()) {
+            try {
+                builder.bake();
+
+                // preProcess any dependent beans
+                List<String> propRefs = builder.getReferences();
+                if (propRefs != null) {
+                    for (String reference : propRefs) {
+                        if (isManaged(reference)) {
+                            BeanBuilder b = getBuilder(reference);
+                            preProcessBean(reference, b);
+                        }
+                    }
+                }
+
+                //noinspection CollectionWithoutInitialCapacity
+                List<String> refs = new ArrayList<String>();
+                refs.add(beanName);
+                //noinspection CollectionWithoutInitialCapacity
+                ArrayList<String> messages = new ArrayList<String>();
+                validateReferences(builder, refs, messages);
+                if (!messages.isEmpty()) {
+                    builder.queueMessages(messages);
+                }
+
+                if (builder.hasMessages()) {
+                    if (LOGGER.isLoggable(Level.SEVERE)) {
+                        LOGGER.log(Level.SEVERE,
+                                   buildMessage(beanName,
+                                                builder.getMessages(),
+                                                false));
+                    }
+                }
+            } catch (ManagedBeanPreProcessingException mbpe) {
+                if (ManagedBeanPreProcessingException.Type.CHECKED
+                     .equals(mbpe.getType())) {
+                    builder.queueMessage(mbpe.getMessage());
+                    if (LOGGER.isLoggable(Level.SEVERE)) {
+                        LOGGER.log(Level.SEVERE,
+                                   buildMessage(beanName,
+                                                builder.getMessages(),
+                                                false));
+                    }
+                } else {
+                    String message = MessageUtils.getExceptionMessageString(
+                         MessageUtils.MANAGED_BEAN_UNKNOWN_PROCESSING_ERROR_ID,
+                         beanName);
+                    throw new ManagedBeanPreProcessingException(message, mbpe);
+                }
+            }
+        }
+
+    }
+
+    private Object createAndPush(String name,
+                                 BeanBuilder builder,
+                                 FacesContext facesContext) {
+
+        Object bean = builder.build(injectionProvider, facesContext);
+        ScopeManager.pushToScope(name, bean, builder.getScope(), facesContext);
+        return bean;
+
+    }
+
+
+    private String buildMessage(String name, List<String> messages,
+                                boolean runtime) {
+
+        StringBuilder sb = new StringBuilder(128);
+        if (runtime) {
+        sb.append(MessageUtils.getExceptionMessageString(
+             MessageUtils.MANAGED_BEAN_PROBLEMS_ERROR_ID, name));
+        } else {
+            sb.append(MessageUtils.getExceptionMessageString(
+                 MessageUtils.MANAGED_BEAN_PROBLEMS_STARTUP_ERROR_ID, name));
+        }
+        for (String message : messages) {
+            sb.append("\n     - ").append(message);
+        }
+        return sb.toString();
+
+    }
+
+
+    // ----------------------------------------------------------- Inner Classes
+
+
+    private static class ScopeManager {
+
+        private static final ConcurrentMap<String,ScopeHandler> handlerMap =
+             new ConcurrentHashMap<String,ScopeHandler>(5);
+        
+        static {
+            handlerMap.put(ELUtils.Scope.REQUEST.toString(), new RequestScopeHandler());
+            handlerMap.put(ELUtils.Scope.VIEW.toString(), new ViewScopeHandler());
+            handlerMap.put(ELUtils.Scope.SESSION.toString(), new SessionScopeHandler());
+            handlerMap.put(ELUtils.Scope.APPLICATION.toString(), new ApplicationScopeHandler());
+            handlerMap.put(ELUtils.Scope.NONE.toString(), new NoneScopeHandler());
+        }
+
+
+        static void pushToScope(String name,
+                                Object bean,
+                                String customScope,
+                                FacesContext context) {
+
+            ScopeHandler handler = getScopeHandler(customScope, context);
+            handler.handle(name, bean, context);
+
+        }
+
+
+        static boolean isInScope(String name,
+                                 String customScope,
+                                 FacesContext context) {
+
+            ScopeHandler handler = getScopeHandler(customScope, context);
+            return handler.isInScope(name, context);
+
+        }
+
+        static Object getFromScope(String name,
+                                   String customScope,
+                                   FacesContext context) {
+
+            ScopeHandler handler = getScopeHandler(customScope, context);
+            return handler.getFromScope(name, context);
+
+        }
+
+        private static ScopeHandler getScopeHandler(String customScope,
+                                                    FacesContext context) {
+
+            ScopeHandler handler = handlerMap.get(customScope);
+            if (handler == null) {
+                ExpressionFactory factory = context.getApplication().getExpressionFactory();
+                ValueExpression ve =
+                    factory.createValueExpression(context.getELContext(),
+                                                  customScope,
+                                                  Map.class);
+                handler = new CustomScopeHandler(ve);
+                handlerMap.putIfAbsent(customScope, handler);
+            }
+            return handler;
+
+        }
+
+        private interface ScopeHandler {
+
+            void handle(String name, Object bean, FacesContext context);
+
+            boolean isInScope(String name, FacesContext context);
+
+            Object getFromScope(String name, FacesContext context);
+
+        }
+
+        private static class NoneScopeHandler implements ScopeHandler {
+
+            public void handle(String name, Object bean, FacesContext context) {
+                // no-op
+            }
+
+            public boolean isInScope(String name, FacesContext context) {
+                return false;
+            }
+
+            public Object getFromScope(String name, FacesContext context) {
+                return null;
+            }
+        }
+
+        private static class RequestScopeHandler implements ScopeHandler {
+
+            public void handle(String name, Object bean, FacesContext context) {
+
+                context.getExternalContext().getRequestMap().put(name, bean);
+
+            }
+
+            public boolean isInScope(String name, FacesContext context) {
+
+                return context.getExternalContext().getRequestMap().containsKey(name);
+
+            }
+
+            public Object getFromScope(String name, FacesContext context) {
+
+                return context.getExternalContext().getRequestMap().get(name);
+
+            }
+
+        } // END RequestScopeHandler
+
+
+        private static class ViewScopeHandler implements ScopeHandler {
+
+            public void handle(String name, Object bean, FacesContext context) {
+
+                Map<String, Object> viewMap = context.getViewRoot().getViewMap();
+                
+                if (viewMap != null) {
+                    viewMap.put(name, bean);
+                }
+            }
+
+            public boolean isInScope(String name, FacesContext context) {
+
+                Map<String,Object> viewMap = context.getViewRoot().getViewMap(false);
+                return ((viewMap != null) && viewMap.containsKey(name));
+
+            }
+
+            public Object getFromScope(String name, FacesContext context) {
+
+                Map<String,Object> viewMap = context.getViewRoot().getViewMap(false);
+                return ((viewMap != null) ? viewMap.get(name) : null);
+
+            }
+
+        } // END ViewScopeHandler
+        
+
+        private static class SessionScopeHandler implements ScopeHandler  {
+
+            public void handle(String name, Object bean, FacesContext context) {
+
+                synchronized (context.getExternalContext().getSession(true)) {
+                    context.getExternalContext().getSessionMap().put(name, bean);
+                }
+
+            }
+
+            public boolean isInScope(String name, FacesContext context) {
+
+                return context.getExternalContext().getSessionMap().containsKey(name);
+
+            }
+
+            public Object getFromScope(String name, FacesContext context) {
+
+                return context.getExternalContext().getSessionMap().get(name);
+
+            }
+
+        } // END SessionScopeHandler
+
+
+        private static class ApplicationScopeHandler implements ScopeHandler {
+
+            public void handle(String name, Object bean, FacesContext context) {
+
+                synchronized (context.getExternalContext().getContext()) {
+                    context.getExternalContext().getApplicationMap().put(name, bean);
+                }
+
+            }
+
+            public boolean isInScope(String name, FacesContext context) {
+
+                return context.getExternalContext().getApplicationMap().containsKey(name);
+
+            }
+
+
+            public Object getFromScope(String name, FacesContext context) {
+
+                return context.getExternalContext().getApplicationMap().get(name);
+
+            }
+
+        } // END ApplicationScopeHandler
+
+
+        private static class CustomScopeHandler implements ScopeHandler {
+
+            private ValueExpression scope;
+
+            CustomScopeHandler(ValueExpression scope) {
+                this.scope = scope;
+            }
+
+            public void handle(String name, Object bean, FacesContext context) {
+
+                Map scopeMap = (Map) scope.getValue(getELContext(context));
+                
+                // IMPLEMENTATION PENDING.  I've added this to the Frame doc:
+                
+                /**
+                 * The runtime must must allow the value of this element to be 
+                 * an EL ValueExpression. If so, and the expression evaluates to
+                 * null, an informative error message including the expression 
+                 * string and the name of the bean must be logged. If the
+                 * expression evaluates to a Map, that Map is used as the
+                 * scope into which the bean will be stored. If storing the 
+                 * bean into the Map causes an Exception, the exception is 
+                 * allowed to flow up to the ExceptionHandler. If the 
+                 * ValueExpression does not evaluate to a Map, a
+                 * FacesException must be thrown with a message that includes 
+                 * the expression string, the toString() of the value, and 
+                 * the type of the value.
+                 * 
+                 */
+                
+                if (scopeMap != null) {
+                    synchronized (this) {
+                        //noinspection unchecked
+                        scopeMap.put(name, bean);
+                    }
+                } else {
+                    if (LOGGER.isLoggable(Level.WARNING)) {
+                        LOGGER.log(Level.WARNING,
+                                   "jsf.managed.bean.custom.scope.eval.null",
+                                   new Object[] { scope.getExpressionString() });
+                    }
+                }
+            }
+
+            public boolean isInScope(String name, FacesContext context) {
+
+                Map scopeMap = (Map) scope.getValue(getELContext(context));
+                if (scopeMap != null) {
+                    return scopeMap.containsKey(name);
+                } else {
+                    if (LOGGER.isLoggable(Level.WARNING)) {
+                        LOGGER.log(Level.WARNING,
+                                   "jsf.managed.bean.custom.scope.eval.null.existence",
+                                   new Object[] { scope.getExpressionString() });
+                    }
+                    // since the scope evaluated to null, return true to prevent
+                    // the managed bean from being needlessly created
+                    return true;
+                }
+            }
+
+            public Object getFromScope(String name, FacesContext context) {
+
+                Map scopeMap = (Map) scope.getValue(getELContext(context));
+                if (scopeMap != null) {
+                    return scopeMap.get(name);
+                } else {
+                    if (LOGGER.isLoggable(Level.WARNING)) {
+                        LOGGER.log(Level.WARNING,
+                                   "jsf.managed.bean.custom.scope.eval.null.existence",
+                                   new Object[] { scope.getExpressionString() });
+                    }
+                    return null;
+                }
+            }
+
+
+            // ------------------------------------------------- Private Methods
+
+
+            private ELContext getELContext(FacesContext ctx) {
+
+                return new CustomScopeELContext(ctx.getELContext());
+
+            }
+
+
+            // -------------------------------------------------- Nested Classes
+
+
+            /**
+             * We have to use a different ELContext when evaluating the expressions
+             * for the custom scopes as we don't want to cause the resolved
+             * flag on the original ELContext to be changed.  
+             */
+            private static final class CustomScopeELContext extends ELContext {
+
+                private ELContext delegate;
+
+                // ------------------------------------------------ Constructors
+
+
+                public CustomScopeELContext(ELContext delegate) {
+
+                    this.delegate = delegate;
+
+                }
+
+                // -------------------------------------- Methods from ELContext
+
+
+                @Override
+                public void putContext(Class aClass, Object o) {
+
+                    delegate.putContext(aClass, o);
+
+                }
+
+                @Override
+                public Object getContext(Class aClass) {
+
+                    return delegate.getContext(aClass);
+
+                }
+
+                @Override
+                public Locale getLocale() {
+
+                    return delegate.getLocale();
+
+                }
+
+                @Override
+                public void setLocale(Locale locale) {
+
+                    delegate.setLocale(locale);
+
+                }
+
+                @Override
+                public ELResolver getELResolver() {
+
+                    return delegate.getELResolver();
+
+                }
+
+                @Override
+                public FunctionMapper getFunctionMapper() {
+
+                    return delegate.getFunctionMapper();
+
+                }
+
+                @Override
+                public VariableMapper getVariableMapper() {
+
+                    return delegate.getVariableMapper();
+
+                }
+            }
+
+        } // END CustomScopeHandler
+    }
+
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/mgbean/ErrorBean.java b/jsf-ri/src/main/java/com/sun/faces/mgbean/ErrorBean.java
index 1dbd8d0..d8b5ec5 100644
--- a/jsf-ri/src/main/java/com/sun/faces/mgbean/ErrorBean.java
+++ b/jsf-ri/src/main/java/com/sun/faces/mgbean/ErrorBean.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/mgbean/ManagedBeanBuilder.java b/jsf-ri/src/main/java/com/sun/faces/mgbean/ManagedBeanBuilder.java
index 6661a4f..d5fa77d 100644
--- a/jsf-ri/src/main/java/com/sun/faces/mgbean/ManagedBeanBuilder.java
+++ b/jsf-ri/src/main/java/com/sun/faces/mgbean/ManagedBeanBuilder.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/mgbean/ManagedBeanCreationException.java b/jsf-ri/src/main/java/com/sun/faces/mgbean/ManagedBeanCreationException.java
index c97cfeb..3b162db 100644
--- a/jsf-ri/src/main/java/com/sun/faces/mgbean/ManagedBeanCreationException.java
+++ b/jsf-ri/src/main/java/com/sun/faces/mgbean/ManagedBeanCreationException.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/mgbean/ManagedBeanInfo.java b/jsf-ri/src/main/java/com/sun/faces/mgbean/ManagedBeanInfo.java
index 836ccd9..b26361d 100644
--- a/jsf-ri/src/main/java/com/sun/faces/mgbean/ManagedBeanInfo.java
+++ b/jsf-ri/src/main/java/com/sun/faces/mgbean/ManagedBeanInfo.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/mgbean/ManagedBeanPreProcessingException.java b/jsf-ri/src/main/java/com/sun/faces/mgbean/ManagedBeanPreProcessingException.java
index ab69ac7..3ca9f6b 100644
--- a/jsf-ri/src/main/java/com/sun/faces/mgbean/ManagedBeanPreProcessingException.java
+++ b/jsf-ri/src/main/java/com/sun/faces/mgbean/ManagedBeanPreProcessingException.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/mgbean/ManagedListBeanBuilder.java b/jsf-ri/src/main/java/com/sun/faces/mgbean/ManagedListBeanBuilder.java
index d0fa685..0f411d4 100644
--- a/jsf-ri/src/main/java/com/sun/faces/mgbean/ManagedListBeanBuilder.java
+++ b/jsf-ri/src/main/java/com/sun/faces/mgbean/ManagedListBeanBuilder.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/mgbean/ManagedMapBeanBuilder.java b/jsf-ri/src/main/java/com/sun/faces/mgbean/ManagedMapBeanBuilder.java
index cc96cc4..e69909c 100644
--- a/jsf-ri/src/main/java/com/sun/faces/mgbean/ManagedMapBeanBuilder.java
+++ b/jsf-ri/src/main/java/com/sun/faces/mgbean/ManagedMapBeanBuilder.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/renderkit/ApplicationObjectInputStream.java b/jsf-ri/src/main/java/com/sun/faces/renderkit/ApplicationObjectInputStream.java
index 1f5f810..b498b3c 100644
--- a/jsf-ri/src/main/java/com/sun/faces/renderkit/ApplicationObjectInputStream.java
+++ b/jsf-ri/src/main/java/com/sun/faces/renderkit/ApplicationObjectInputStream.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/renderkit/Attribute.java b/jsf-ri/src/main/java/com/sun/faces/renderkit/Attribute.java
index 0086e75..82965b8 100644
--- a/jsf-ri/src/main/java/com/sun/faces/renderkit/Attribute.java
+++ b/jsf-ri/src/main/java/com/sun/faces/renderkit/Attribute.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/renderkit/ByteArrayGuard.java b/jsf-ri/src/main/java/com/sun/faces/renderkit/ByteArrayGuard.java
index f62179d..38b43f7 100644
--- a/jsf-ri/src/main/java/com/sun/faces/renderkit/ByteArrayGuard.java
+++ b/jsf-ri/src/main/java/com/sun/faces/renderkit/ByteArrayGuard.java
@@ -1,221 +1,253 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package com.sun.faces.renderkit;
-
-import javax.crypto.Cipher;
-import javax.crypto.NullCipher;
-import javax.crypto.SecretKeyFactory;
-import javax.crypto.spec.DESedeKeySpec;
-import javax.crypto.spec.IvParameterSpec;
-import javax.faces.FacesException;
-
-import java.security.Key;
-import java.security.MessageDigest;
-import java.security.SecureRandom;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-import com.sun.faces.util.FacesLogger;
-
-/**
- * <p>This utility class is to provide both encryption and
- * decryption <code>Ciphers</code> to <code>ResponseStateManager</code>
- * implementations wishing to provide encryption support.</p>
- * 
- * <p>The algorithm used to encrypt byte array is 3DES with CBC.</p>
- *  
- * <p>Original author Inderjeet Singh, J2EE Blue Prints Team. Modified to suit JSF
- * needs.</p> 
- */
-public final class ByteArrayGuard {
-
-
-     // Log instance for this class
-    private static final Logger LOGGER = FacesLogger.RENDERKIT.getLogger();
-    private static final int IV_LENGTH = 8;        
-    private static final int KEY_LENGTH = 24;
-      
-    private static Cipher NULL_CIPHER = new NullCipher();               
-    
-    private Cipher decryptCipher = NULL_CIPHER;
-    private Cipher encryptCipher = NULL_CIPHER;  
-
-    // ------------------------------------------------------------ Constructors
-
-
-    /**
-     * Constructs a new <code>ByteArrayGuard</code> using the specified
-     * <code>keyLength</code>, <code>macLength</code>, <code>ivLength</code>.    
-     * @param password the password to seed the encryption 
-     */
-    public ByteArrayGuard(String password) {
-       
-        if (password != null) {
-            if (LOGGER.isLoggable(Level.FINE)) {
-                LOGGER.log(Level.FINE,
-                           "Client state saving encryption enabled.");
-            }
-            byte[] passwordKey = convertPasswordToKey(password.getBytes());           
-            try {
-                SecureRandom prng = SecureRandom.getInstance("SHA1PRNG");
-                SecretKeyFactory keygen = SecretKeyFactory.getInstance("DESede");
-                encryptCipher =
-                      getBlockCipherForEncryption(keygen, prng, passwordKey);
-                byte[] iVector = encryptCipher.getIV();
-                decryptCipher =
-                      getBlockCipherForDecryption(keygen, 
-                                                  prng, 
-                                                  passwordKey,
-                                                  iVector);
-            } catch (Exception e) {
-                if (LOGGER.isLoggable(Level.SEVERE)) {
-                    LOGGER.log(Level.SEVERE,
-                               "Unexpected exception initializing encryption."
-                               + "  No encryption will be performed.",
-                               e);
-                }               
-                               
-                encryptCipher = NULL_CIPHER;
-                decryptCipher = NULL_CIPHER;              
-               
-            }
-        }       
-    }
-
-
-    // ---------------------------------------------------------- Public Methods    
-
-
-    public Cipher getEncryptionCipher() {
-        return encryptCipher;
-    }
-    
-    public Cipher getDecryptionCipher() {
-        return decryptCipher;
-    }
-    
-
-    // --------------------------------------------------------- Private Methods
-    
-
-
-    /**
-     * This method converts the specified password into a key in a
-     * deterministic manner. The key is then usable for creating ciphers
-     * and MACs.
-     * 
-     * @param password plain text password
-     * 
-     * @return a byte array containing a key based on the specified
-     * password. The length of the returned byte array is KEY_LENGTH.
-     */
-    private byte[] convertPasswordToKey(byte[] password) {
-
-        try {
-            MessageDigest md = MessageDigest.getInstance("SHA");
-            byte[] seed = md.digest(password);
-
-            SecureRandom random = SecureRandom.getInstance("SHA1PRNG");
-            random.setSeed(seed);
-
-            byte[] rawkey = new byte[KEY_LENGTH];
-            random.nextBytes(rawkey);
-            return rawkey;
-        } catch (Exception e) {
-            throw new FacesException(e);
-        }
-
-    }
-
-
-    /** 
-     * Obtain a <code>Cipher</code> for decrypting data.
-     * @param keyGen the key factory
-     * @param random secure random
-     * @param rawKey must be 24 bytes in length.
-     * @param iv initialization vector  @return a 3DES block cipher to be used for decryption based on the
-     * specified key
-     * @return an initialized <code>Cipher</code> for decryption
-     */
-    private Cipher getBlockCipherForDecryption(SecretKeyFactory keyGen,
-                                               SecureRandom random,
-                                               byte[] rawKey,
-                                               byte[] iv) {
-
-        try {           
-            DESedeKeySpec keyspec = new DESedeKeySpec(rawKey);
-            Key key = keyGen.generateSecret(keyspec);
-            Cipher cipher = Cipher.getInstance("DESede/CBC/PKCS5Padding");
-            IvParameterSpec ivspec = new IvParameterSpec(iv);
-            cipher.init(Cipher.DECRYPT_MODE, key, ivspec, random);
-            return cipher;
-        } catch (Exception e) {
-            throw new FacesException(e);
-        }
-
-    }
-
-
-    /** 
-     * Obtain a <code>Cipher</code> for encrypting data.
-     * @param keyGen the key factory
-     * @param random secure random
-     * @param rawKey must be 24 bytes in length.  @return a 3DES block cipher to be used for encryption based on the
-     * specified key
-     * @return an initialized <code>Cipher</code> for decryption
-     */
-    private Cipher getBlockCipherForEncryption(SecretKeyFactory keyGen,
-                                               SecureRandom random,
-                                               byte[] rawKey) {
-
-        try {           
-            DESedeKeySpec keyspec = new DESedeKeySpec(rawKey);
-            Key key = keyGen.generateSecret(keyspec);
-            Cipher cipher = Cipher.getInstance("DESede/CBC/PKCS5Padding");
-            byte[] iv = new byte[IV_LENGTH];
-            random.nextBytes(iv);
-            IvParameterSpec ivspec = new IvParameterSpec(iv);
-            cipher.init(Cipher.ENCRYPT_MODE, key, ivspec, random);
-            return cipher;
-        } catch (Exception e) {
-            throw new FacesException(e);
-        }
-
-    }
-
-    
-}
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.renderkit;
+
+import javax.crypto.Cipher;
+import javax.crypto.KeyGenerator;
+import javax.crypto.Mac;
+import javax.crypto.SecretKey;
+import javax.crypto.spec.IvParameterSpec;
+import javax.faces.FacesException;
+import java.security.SecureRandom;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import com.sun.faces.util.FacesLogger;
+import javax.crypto.spec.SecretKeySpec;
+import javax.naming.InitialContext;
+import javax.naming.NamingException;
+import javax.xml.bind.DatatypeConverter;
+
+/**
+ * <p>This utility class is to provide both encryption and
+ * decryption <code>Ciphers</code> to <code>ResponseStateManager</code>
+ * implementations wishing to provide encryption support.</p>
+ * 
+ * <p>The algorithm used to encrypt byte array is AES with CBC.</p>
+ *  
+ * <p>Original author Inderjeet Singh, J2EE Blue Prints Team. Modified to suit JSF
+ * needs.</p> 
+ */
+public final class ByteArrayGuard {
+
+
+     // Log instance for this class
+    private static final Logger LOGGER = FacesLogger.RENDERKIT.getLogger();
+
+    private static final int MAC_LENGTH = 32;
+    private static final int KEY_LENGTH = 128;
+    private static final int IV_LENGTH = 16;
+
+    private static final String KEY_ALGORITHM = "AES";
+    private static final String CIPHER_CODE = "AES/CBC/PKCS5Padding";
+    private static final String MAC_CODE = "HmacSHA256";
+    private SecretKey sk;
+
+    // ------------------------------------------------------------ Constructors
+
+    public ByteArrayGuard() {
+
+        try {
+            setupKeyAndMac();
+        } catch (Exception e) {
+            if (LOGGER.isLoggable(Level.SEVERE)) { 
+                LOGGER.log(Level.SEVERE,
+                           "Unexpected exception initializing encryption."
+                           + "  No encryption will be performed.",
+                           e);
+            }
+            System.err.println("ERROR: Initializing Ciphers");
+        }
+    }
+
+    // ---------------------------------------------------------- Public Methods    
+
+
+    /**
+     * This method:
+     *    Encrypts bytes using a cipher.  
+     *    Generates MAC for intialization vector of the cipher
+     *    Generates MAC for encrypted data
+     *    Returns a byte array consisting of the following concatenated together:
+     *       |MAC for cnrypted Data | MAC for Init Vector | Encrypted Data |
+     * @param bytes The byte array to be encrypted.
+     * @return the encrypted byte array.
+     */
+    public byte[] encrypt(byte[] bytes) {
+        byte[] securedata = null;
+        try {
+            // Generate IV
+            SecureRandom rand = new SecureRandom();
+            byte[] iv = new byte[16];
+            rand.nextBytes(iv);
+            IvParameterSpec ivspec = new IvParameterSpec(iv);
+            Cipher encryptCipher = Cipher.getInstance(CIPHER_CODE);
+            encryptCipher.init(Cipher.ENCRYPT_MODE, sk, ivspec);
+            Mac encryptMac = Mac.getInstance(MAC_CODE);
+            encryptMac.init(sk);
+            encryptMac.update(iv);
+            // encrypt the plaintext
+            byte[] encdata = encryptCipher.doFinal(bytes);
+            byte[] macBytes = encryptMac.doFinal(encdata);
+            byte[] tmp = concatBytes(macBytes, iv);
+            securedata = concatBytes(tmp, encdata);
+        } catch (Exception e) {
+            if (LOGGER.isLoggable(Level.SEVERE)) {
+                LOGGER.log(Level.SEVERE,
+                           "Unexpected exception initializing encryption."
+                           + "  No encryption will be performed.",
+                           e);
+            }
+            return null;
+        }
+        return securedata;
+    }
+
+    /**
+     * This method decrypts the provided byte array.
+     * The decryption is only performed if the regenerated MAC
+     * is the same as the MAC for the received value.
+     * @param bytes Encrypted byte array to be decrypted.
+     * @return Decrypted byte array.
+     */
+    public byte[] decrypt(byte[] bytes) {
+        try {
+            // Extract MAC
+            byte[] macBytes = new byte[MAC_LENGTH];
+            System.arraycopy(bytes, 0, macBytes, 0, macBytes.length);
+
+            // Extract IV
+            byte[] iv = new byte[IV_LENGTH];
+            System.arraycopy(bytes, macBytes.length, iv, 0, iv.length);
+
+            // Extract encrypted data
+            byte[] encdata = new byte[bytes.length - macBytes.length - iv.length];
+            System.arraycopy(bytes, macBytes.length + iv.length, encdata, 0, encdata.length);
+
+            IvParameterSpec ivspec = new IvParameterSpec(iv);
+            Cipher decryptCipher = Cipher.getInstance(CIPHER_CODE);
+            decryptCipher.init(Cipher.DECRYPT_MODE, sk, ivspec);
+
+            // verify MAC by regenerating it and comparing it with the received value
+            Mac decryptMac = Mac.getInstance(MAC_CODE);
+            decryptMac.init(sk);
+            decryptMac.update(iv);
+            decryptMac.update(encdata);
+            byte[] macBytesCalculated = decryptMac.doFinal();
+            if (areArrayEqualsConstantTime(macBytes, macBytesCalculated)) {
+                // continue only if the MAC was valid
+                // System.out.println("Valid MAC found!");
+                byte[] plaindata = decryptCipher.doFinal(encdata);
+                return plaindata;
+            } else {
+                System.err.println("ERROR: MAC did not verify!");
+                return null;
+            }
+        } catch (Exception e) {
+            System.err.println("ERROR: Decrypting:"+e.getCause());
+            return null; // Signal to JSF runtime
+        }
+    }
+
+    private boolean areArrayEqualsConstantTime(byte[] array1, byte[] array2) {
+        boolean result = true;
+        for(int i=0; i<array1.length; i++) {
+            if (array1[i] != array2[i]) {
+                result = false;
+            }
+        }
+        return result;
+    }
+
+    // --------------------------------------------------------- Private Methods
+
+    /**
+     * Generates secret key.
+     * Initializes MAC(s).
+     */
+    private void setupKeyAndMac() {
+
+        /*
+         * Lets see if an encoded key was given to the application, if so use
+         * it and skip the code to generate it.
+         */
+        try {
+            InitialContext context = new InitialContext();
+            String encodedKeyArray = (String) context.lookup("java:comp/env/jsf/ClientSideSecretKey");
+            byte[] keyArray = DatatypeConverter.parseBase64Binary(encodedKeyArray);
+            sk = new SecretKeySpec(keyArray, KEY_ALGORITHM);
+        }
+        catch(NamingException exception) {
+            if (LOGGER.isLoggable(Level.FINEST)) { 
+                LOGGER.log(Level.FINEST, "Unable to find the encoded key.", exception);
+            }
+        }
+        
+        if (sk == null) {
+            try {
+                KeyGenerator kg = KeyGenerator.getInstance(KEY_ALGORITHM);
+                kg.init(KEY_LENGTH);   // 256 if you're using the Unlimited Policy Files
+                sk = kg.generateKey(); 
+//                System.out.print("SecretKey: " + DatatypeConverter.printBase64Binary(sk.getEncoded()));
+
+            } catch (Exception e) {
+                throw new FacesException(e);
+            }
+        }
+    }
+
+    /**
+     * This method concatenates two byte arrays
+     * @return a byte array of array1||array2
+     * @param array1 first byte array to be concatenated
+     * @param array2 second byte array to be concatenated
+     */
+    private static byte[] concatBytes(byte[] array1, byte[] array2) {
+        byte[] cBytes = new byte[array1.length + array2.length];
+        try {
+            System.arraycopy(array1, 0, cBytes, 0, array1.length);
+            System.arraycopy(array2, 0, cBytes, array1.length, array2.length);
+        } catch(Exception e) {
+            throw new FacesException(e);
+        }
+        return cBytes;
+    }    
+}
\ No newline at end of file
diff --git a/jsf-ri/src/main/java/com/sun/faces/renderkit/ClientSideStateHelper.java b/jsf-ri/src/main/java/com/sun/faces/renderkit/ClientSideStateHelper.java
index 020b383..9bb96e3 100644
--- a/jsf-ri/src/main/java/com/sun/faces/renderkit/ClientSideStateHelper.java
+++ b/jsf-ri/src/main/java/com/sun/faces/renderkit/ClientSideStateHelper.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -36,30 +40,43 @@
 
 package com.sun.faces.renderkit;
 
+import com.sun.faces.RIConstants;
+import static com.sun.faces.config.WebConfiguration.BooleanWebContextInitParameter.AutoCompleteOffOnViewState;
+import static com.sun.faces.config.WebConfiguration.BooleanWebContextInitParameter.EnableViewStateIdRendering;
+import static com.sun.faces.config.WebConfiguration.BooleanWebContextInitParameter.NamespaceParameters;
+import static com.sun.faces.config.WebConfiguration.WebContextInitParameter.ClientStateTimeout;
+import static com.sun.faces.config.WebConfiguration.WebContextInitParameter.ClientStateWriteBufferSize;
+
 import java.io.BufferedOutputStream;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
+import java.io.InvalidClassException;
 import java.io.ObjectInputStream;
 import java.io.ObjectOutputStream;
 import java.io.OutputStream;
 import java.io.Writer;
+import java.util.Map;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 import java.util.zip.GZIPInputStream;
 import java.util.zip.GZIPOutputStream;
 
-import javax.crypto.CipherInputStream;
-import javax.crypto.CipherOutputStream;
 import javax.faces.FacesException;
+import javax.faces.component.NamingContainer;
+import javax.faces.component.UIViewRoot;
 import javax.faces.context.FacesContext;
 import javax.faces.context.ResponseWriter;
+import javax.faces.render.ResponseStateManager;
 
-import static com.sun.faces.config.WebConfiguration.WebContextInitParameter.ClientStateTimeout;
-import static com.sun.faces.config.WebConfiguration.WebContextInitParameter.ClientStateWriteBufferSize;
-import static com.sun.faces.config.WebConfiguration.WebEnvironmentEntry.ClientStateSavingPassword;
+import com.sun.faces.config.WebConfiguration.BooleanWebContextInitParameter;
 import com.sun.faces.io.Base64InputStream;
 import com.sun.faces.io.Base64OutputStreamWriter;
+import com.sun.faces.util.DebugObjectOutputStream;
+import com.sun.faces.util.DebugUtil;
 import com.sun.faces.util.FacesLogger;
+import com.sun.faces.util.Util;
 
 /**
  * <p>
@@ -74,8 +91,6 @@ public class ClientSideStateHelper extends StateHelper {
      * <p>
      * Enabled encryption of view state.  Encryption is disabled by default.
      * </p>
-     *
-     * @see {@link com.sun.faces.config.WebConfiguration.WebEnvironmentEntry#ClientStateSavingPassword}
      */
     private ByteArrayGuard guard;
 
@@ -121,6 +136,15 @@ public class ClientSideStateHelper extends StateHelper {
      * @see {@link com.sun.faces.config.WebConfiguration.WebContextInitParameter#ClientStateWriteBufferSize}
      */
     private int csBuffSize;
+    
+    
+    private boolean debugSerializedState;
+
+
+    /**
+     * Flag determining whether or not javax.faces.ViewState should be namespaced.
+     */
+    protected boolean namespaceParameters;
 
 
     // ------------------------------------------------------------ Constructors
@@ -153,44 +177,72 @@ public class ClientSideStateHelper extends StateHelper {
      * state will be appended to the provided <code>StringBuilder</code> without any markup
      * included or any content written to the client.
      *
-     * @see {@link com.sun.faces.renderkit.StateHelper#writeState(javax.faces.context.FacesContext, Object, StringBuilder)}
+     * @see StateHelper#writeState(javax.faces.context.FacesContext, java.lang.Object, java.lang.StringBuilder)
      */
     public void writeState(FacesContext ctx,
                            Object state,
                            StringBuilder stateCapture) throws IOException {
 
         if (stateCapture != null) {
-            doWriteState(state, new StringBuilderWriter(stateCapture));
+            doWriteState(ctx, state, new StringBuilderWriter(stateCapture));
         } else {
             ResponseWriter writer = ctx.getResponseWriter();
-            writer.write(stateFieldStart);
-            doWriteState(state, writer);
-            writer.write(stateFieldEnd);
+
+            writer.startElement("input", null);
+            writer.writeAttribute("type", "hidden", null);
+            String viewStateParam = ResponseStateManager.VIEW_STATE_PARAM;
+            
+            if (namespaceParameters) {
+                UIViewRoot viewRoot = ctx.getViewRoot();
+                if (viewRoot instanceof NamingContainer) {
+                    String namingContainerId = viewRoot.getContainerClientId(ctx);
+                    if (namingContainerId != null) {
+                        viewStateParam = namingContainerId + viewStateParam;
+                    }
+                }
+            }
+            writer.writeAttribute("name", viewStateParam, null);
+            if (webConfig.isOptionEnabled(EnableViewStateIdRendering)) {
+                String viewStateId = Util.getViewStateId(ctx);
+                writer.writeAttribute("id", viewStateId, null);
+            }
+            StringBuilder stateBuilder = new StringBuilder();
+            doWriteState(ctx, state, new StringBuilderWriter(stateBuilder));
+            writer.writeAttribute("value", stateBuilder.toString(), null);
+            if (webConfig.isOptionEnabled(AutoCompleteOffOnViewState)) {
+                writer.writeAttribute("autocomplete", "off", null);
+            }
+            writer.endElement("input");
+
+            writeClientWindowField(ctx, writer);
             writeRenderKitIdField(ctx, writer);
         }
-
     }
 
 
     /**
      * <p>Inspects the incoming request parameters for the standardized state
      * parameter name.  In this case, the parameter value will be a Base64 encoded
-     * string previously encoded by {@link com.sun.faces.renderkit.ServerSideStateHelper#writeState(javax.faces.context.FacesContext, Object, StringBuilder)}.</p>
+     * string previously encoded by ServerSideStateHelper#writeState(FacesContext, Object, StringBuilder).</p>
      *
      * <p>The string will be Base64-decoded and the state reconstructed using standard
      * Java serialization.</p>
      *
-     * @see {@link com.sun.faces.renderkit.StateHelper#getState(javax.faces.context.FacesContext, String)}
+     * @see StateHelper#getState(javax.faces.context.FacesContext, java.lang.String)
      */
     public Object getState(FacesContext ctx, String viewId) throws IOException {
 
-
         String stateString = getStateParamValue(ctx);
+        
         if (stateString == null) {
             return null;
         }
-        return doGetState(stateString);
+        
+        if ("stateless".equals(stateString)) {
+            return "stateless";
+        }
 
+        return doGetState(stateString);
     }
 
 
@@ -205,9 +257,32 @@ public class ClientSideStateHelper extends StateHelper {
      * @return the view state reconstructed from <code>stateString</code>
      */
     protected Object doGetState(String stateString) {
+        
+        if ("stateless".equals(stateString)) {
+            return null;
+        }
+        
         ObjectInputStream ois = null;
+        InputStream bis = new Base64InputStream(stateString);
         try {
-            ois = initInputStream(stateString);
+            if (guard != null) {
+                byte[] bytes = stateString.getBytes(RIConstants.CHAR_ENCODING);
+                int numRead = bis.read(bytes, 0, bytes.length);
+                byte[] decodedBytes = new byte[numRead];
+                bis.reset();
+                bis.read(decodedBytes, 0, decodedBytes.length);
+
+                bytes = guard.decrypt(decodedBytes);
+                if (bytes == null) return null;
+                bis = new ByteArrayInputStream(bytes);
+            }
+
+
+            if (compressViewState) {
+                bis = new GZIPInputStream(bis);
+            }
+            
+            ois = serialProvider.createObjectInputStream(bis);
 
             long stateTime = 0;
             if (stateTimeoutEnabled) {
@@ -247,6 +322,13 @@ public class ClientSideStateHelper extends StateHelper {
         		LOGGER.log(Level.SEVERE, cnfe.getMessage(), cnfe);
         	}
             throw new FacesException(cnfe);
+        } catch (InvalidClassException ice) {
+            /*
+             * Thrown when the JSF runtime is trying to deserialize a client-side
+             * state that has been saved with a previous version of Mojarra. Instead
+             * of blowing up, force a ViewExpiredException.
+             */
+            return null;
         } catch (IOException iox) {
         	if (LOGGER.isLoggable(Level.SEVERE)) {
         		LOGGER.log(Level.SEVERE, iox.getMessage(), iox);
@@ -257,7 +339,9 @@ public class ClientSideStateHelper extends StateHelper {
                 try {
                     ois.close();
                 } catch (IOException ioe) {
-                    // ignore
+                    if (LOGGER.isLoggable(Level.FINEST)) {
+                        LOGGER.log(Level.FINEST, "Closing stream", ioe);
+                    }
                 }
             }
         }
@@ -268,33 +352,94 @@ public class ClientSideStateHelper extends StateHelper {
      * Serializes and Base64 encodes the provided <code>state</code> to the
      * provided <code>writer</code>/
      *
+     * @param facesContext the Faces context.
      * @param state view state
      * @param writer the <code>Writer</code> to write the content to
      * @throws IOException if an error occurs writing the state to the client
      */
-    protected void doWriteState(Object state, Writer writer)
+    protected void doWriteState(FacesContext facesContext, Object state, Writer writer)
     throws IOException {
+        
+        if (facesContext.getViewRoot().isTransient()) {
+            writer.write("stateless");
+            writer.flush();
+            return;
+        }
+        
+        ByteArrayOutputStream baos = new ByteArrayOutputStream();
+        OutputStream base = null;
+        if (compressViewState) {
+            base = new GZIPOutputStream(baos, csBuffSize);
+        } else {
+            base = baos;
+        }
 
-        Object[] stateToWrite = (Object[]) state;
         ObjectOutputStream oos = null;
-        try {
 
-            Base64OutputStreamWriter bos =
-                  new Base64OutputStreamWriter(csBuffSize,
-                                               writer);
-            oos = initOutputStream(bos);
+        try {
+            oos = serialProvider
+                .createObjectOutputStream(new BufferedOutputStream(base));
 
             if (stateTimeoutEnabled) {
                 oos.writeLong(System.currentTimeMillis());
+
+            }
+
+            Object[] stateToWrite = (Object[]) state;
+
+
+            if (debugSerializedState) {
+                ByteArrayOutputStream discard = new ByteArrayOutputStream();
+                DebugObjectOutputStream out =
+                        new DebugObjectOutputStream(discard);
+                try {
+                        out.writeObject(stateToWrite[0]);
+                } catch (Exception e) {
+                    throw new FacesException(
+                            "Serialization error. Path to offending instance: " 
+                            + out.getStack(), e);
+                }            
+
             }
+
             //noinspection NonSerializableObjectPassedToObjectStream
-            oos.writeObject(stateToWrite[0]);
+                oos.writeObject(stateToWrite[0]);
+
+            if (debugSerializedState) {
+                ByteArrayOutputStream discard = new ByteArrayOutputStream();
+
+                DebugObjectOutputStream out =
+                        new DebugObjectOutputStream(discard);
+                try {
+                        out.writeObject(stateToWrite[1]);
+                } catch (Exception e) {
+                    DebugUtil.printState((Map)stateToWrite[1], LOGGER);
+                    throw new FacesException(
+                            "Serialization error. Path to offending instance: " 
+                            + out.getStack(), e);
+                }            
+
+            }
+
             //noinspection NonSerializableObjectPassedToObjectStream
-            oos.writeObject(stateToWrite[1]);
+                oos.writeObject(stateToWrite[1]);
+
             oos.flush();
             oos.close();
+            oos = null;
 
-            // flush everything to the underlying writer
+            // get bytes for encrypting
+            byte[] bytes = baos.toByteArray();
+
+            if (guard != null) {
+                // this will MAC
+                bytes = guard.encrypt(bytes);
+            }
+
+            // Base 64 encode
+            Base64OutputStreamWriter bos =
+                new Base64OutputStreamWriter(bytes.length, writer);
+            bos.write(bytes, 0, bytes.length);
             bos.finish();
 
             if (LOGGER.isLoggable(Level.FINE)) {
@@ -307,76 +452,14 @@ public class ClientSideStateHelper extends StateHelper {
                 try {
                     oos.close();
                 } catch (IOException ioe) {
-                    // ignore
+                    if (LOGGER.isLoggable(Level.FINEST)) {
+                        LOGGER.log(Level.FINEST, "Closing stream", ioe);
+                    }
                 }
             }
-
-        }
-    }
-
-
-    /**
-     * @param stateString the state string from which Objects will be
-     *  deserialized from.
-     * @return an <code>ObjectInputStream</code> configured appropriately
-     *  based on the user configuration from which to read objects from.
-     * @throws IOException if any issues arrise reading the state
-     */
-    private ObjectInputStream initInputStream(String stateString)
-    throws IOException {
-
-        InputStream bis;
-        if (compressViewState) {
-            bis = new GZIPInputStream(new Base64InputStream(stateString));
-        } else {
-            bis = new Base64InputStream(stateString);
-        }
-
-        ObjectInputStream ois;
-        if (guard != null) {
-            ois = serialProvider
-                  .createObjectInputStream(new CipherInputStream(bis, guard.getDecryptionCipher()));
-        } else {
-            ois = serialProvider.createObjectInputStream(bis);
-        }
-        return ois;
-
-    }
-
-
-    /**
-     * @param bos the Base64OutputStream to ultimately write the seriazed
-     *  objects to
-     * @return an <code>ObjectOutputStream</code> configured appropriately
-     *  based on the user configuration from which to write objects to
-     * @throws IOException if any issues arrise reading the state
-     */
-    protected ObjectOutputStream initOutputStream(Base64OutputStreamWriter bos)
-    throws IOException {
-
-        OutputStream base;
-        if (compressViewState) {
-            base = new GZIPOutputStream(bos, 1024);
-        } else {
-            base = bos;
         }
-
-        ObjectOutputStream oos;
-        if (guard != null) {
-            oos = serialProvider.createObjectOutputStream(
-                  new BufferedOutputStream(
-                        new CipherOutputStream(base, guard.getEncryptionCipher())));
-        } else {
-            oos = serialProvider
-                  .createObjectOutputStream(new BufferedOutputStream(
-                        base,
-                        1024));
-        }
-        return oos;
-
     }
 
-
     /**
      * <p>If the {@link com.sun.faces.config.WebConfiguration.WebContextInitParameter#ClientStateTimeout} init parameter
      * is set, calculate the elapsed time between the time the client state was
@@ -408,10 +491,14 @@ public class ClientSideStateHelper extends StateHelper {
      */
     protected void init() {
 
-        String pass = webConfig.getEnvironmentEntry(
-              ClientStateSavingPassword);
-        if (pass != null) {
-            guard = new ByteArrayGuard(pass);
+        if (webConfig.canProcessJndiEntries() &&
+        		!webConfig.isSet(BooleanWebContextInitParameter.DisableClientStateEncryption)) {
+            guard = new ByteArrayGuard();
+        } else {
+            if (LOGGER.isLoggable(Level.FINE)) {
+                LOGGER.log(Level.FINE, "jsf.config.webconfig.enventry.clientencrypt");
+        }
+
         }
 
         stateTimeoutEnabled = webConfig.isSet(ClientStateTimeout);
@@ -460,8 +547,39 @@ public class ClientSideStateHelper extends StateHelper {
             csBuffSize = Integer.parseInt(defaultSize);
         }
 
+        debugSerializedState = webConfig.isOptionEnabled(BooleanWebContextInitParameter.EnableClientStateDebugging);
+
+        namespaceParameters = webConfig.isOptionEnabled(NamespaceParameters);
+
     }
 
+    /**
+     * Is stateless.
+     * 
+     * @param facesContext the Faces context.
+     * @param viewId the view id.
+     * @return true if stateless, false otherwise.
+     * @throws IllegalStateException when the request was not a postback.
+     */
+    @Override
+    public boolean isStateless(FacesContext facesContext, String viewId) throws IllegalStateException {
+        if (facesContext.isPostback()) {
+            Object stateObject;
+
+            try {
+                stateObject = getState(facesContext, viewId);
+            } catch(IOException ioe) {
+                throw new IllegalStateException("Cannot determine whether or not the request is stateless", ioe);
+            }
+            if (stateObject instanceof String && "stateless".equals((String) stateObject)) {
+                return true;
+            }
+
+            return false;
+        }
+        
+        throw new IllegalStateException("Cannot determine whether or not the request is stateless");
+    }
 
     // ----------------------------------------------------------- Inner Classes
 
diff --git a/jsf-ri/src/main/java/com/sun/faces/renderkit/RenderKitFactoryImpl.java b/jsf-ri/src/main/java/com/sun/faces/renderkit/RenderKitFactoryImpl.java
index 35aac85..565baa1 100644
--- a/jsf-ri/src/main/java/com/sun/faces/renderkit/RenderKitFactoryImpl.java
+++ b/jsf-ri/src/main/java/com/sun/faces/renderkit/RenderKitFactoryImpl.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/renderkit/RenderKitImpl.java b/jsf-ri/src/main/java/com/sun/faces/renderkit/RenderKitImpl.java
index add5a70..60491a1 100644
--- a/jsf-ri/src/main/java/com/sun/faces/renderkit/RenderKitImpl.java
+++ b/jsf-ri/src/main/java/com/sun/faces/renderkit/RenderKitImpl.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -185,6 +189,13 @@ public class RenderKitImpl extends RenderKit {
             
     }   
 
+    public Iterator<String> getClientBehaviorRendererTypes() {
+        if (null == behaviorRenderers) {
+            Set<String> empty = Collections.emptySet();
+            return empty.iterator();
+        }
+        return behaviorRenderers.keySet().iterator();
+    }
 
 
     public synchronized ResponseStateManager getResponseStateManager() {
@@ -317,7 +328,8 @@ public class RenderKitImpl extends RenderKit {
 
 
     private String[] contentTypeSplit(String contentTypeString) {
-        String[] result = Util.split(contentTypeString, ",");
+        Map<String, Object> appMap = FacesContext.getCurrentInstance().getExternalContext().getApplicationMap();
+        String[] result = Util.split(appMap, contentTypeString, ",");
         for (int i = 0; i < result.length; i++) {
             int semicolon = result[i].indexOf(";");
             if (-1 != semicolon) {
diff --git a/jsf-ri/src/main/java/com/sun/faces/renderkit/RenderKitUtils.java b/jsf-ri/src/main/java/com/sun/faces/renderkit/RenderKitUtils.java
index 9436882..50a9b7e 100644
--- a/jsf-ri/src/main/java/com/sun/faces/renderkit/RenderKitUtils.java
+++ b/jsf-ri/src/main/java/com/sun/faces/renderkit/RenderKitUtils.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -61,6 +65,7 @@ import javax.faces.render.ResponseStateManager;
 import javax.faces.render.Renderer;
 
 import com.sun.faces.RIConstants;
+import com.sun.faces.config.WebConfiguration;
 import com.sun.faces.facelets.util.DevTools;
 import com.sun.faces.util.FacesLogger;
 import com.sun.faces.util.Util;
@@ -205,13 +210,30 @@ public class RenderKitUtils {
                       FactoryFinder
                             .getFactory(FactoryFinder.RENDER_KIT_FACTORY);
                 if (factory == null) {
-                    throw new IllegalStateException();
+                    throw new FacesException("Unable to locate RenderKitFactory for " + FactoryFinder.RENDER_KIT_FACTORY);
                 } else {
                     RequestStateManager.set(context,
                                             RequestStateManager.RENDER_KIT_IMPL_REQ,
                                             factory);
                 }
                 renderKit = factory.getRenderKit(context, renderKitId);
+                if (renderKit == null) {
+                    if (LOGGER.isLoggable(Level.SEVERE)) {
+                        LOGGER.log(Level.SEVERE, "Unable to locate renderkit "
+                                + "instance for render-kit-id {0}.  Using {1} instead.",
+                                new String [] { renderKitId,
+                                  RenderKitFactory.HTML_BASIC_RENDER_KIT} );
+                    }
+                    renderKitId = RenderKitFactory.HTML_BASIC_RENDER_KIT;
+                    UIViewRoot root = context.getViewRoot();
+                    if (null != root) {
+                        root.setRenderKitId(renderKitId);
+                    }
+                }
+                renderKit = factory.getRenderKit(context, renderKitId);
+                if (renderKit == null) {
+                    throw new FacesException("Unable to locate renderkit instance for render-kit-id " + renderKitId);
+                }
             }
         }
         return renderKit.getResponseStateManager();
@@ -233,7 +255,7 @@ public class RenderKitUtils {
      *                                  is <code>null</code>
      * @return a List of the select items for the specified component
      */
-    public static Iterator<SelectItem> getSelectItems(FacesContext context,
+    public static SelectItemsIterator<SelectItem> getSelectItems(FacesContext context,
                                                      UIComponent component) {
 
         Util.notNull("context", context);
@@ -338,7 +360,7 @@ public class RenderKitUtils {
                                                 behaviors);
         }
     }
-
+    
     // Renders the onchange handler for input components.  Handles
     // chaining together the user-provided onchange handler with
     // any Behavior scripts.
@@ -477,8 +499,34 @@ public class RenderKitUtils {
         assert (writer != null);
         assert (component != null);
 
+        List<String> excludedAttributes = null;
+
+        renderXHTMLStyleBooleanAttributes(writer, component, excludedAttributes);
+    }
+    
+    /**
+     * <p>Renders the attributes from {@link #BOOLEAN_ATTRIBUTES}
+     * using <code>XHMTL</code> semantics (i.e., disabled="disabled").</p>
+     *
+     * @param writer writer the {@link ResponseWriter} to be used when writing
+     *  the attributes
+     * @param component the component
+     * @param excludedAttributes a <code>List</code> of attributes that are to be excluded from rendering
+     * @throws IOException if an error occurs writing the attributes
+     */
+    public static void renderXHTMLStyleBooleanAttributes(ResponseWriter writer,
+                                                         UIComponent component,
+                                                         List excludedAttributes)
+        throws IOException {
+
+        assert (writer != null);
+        assert (component != null);
+
         Map attrMap = component.getAttributes();
         for (String attrName : BOOLEAN_ATTRIBUTES) {
+            if (isExcludedAttribute(attrName, excludedAttributes)) {
+                continue;
+            }
             Object val = attrMap.get(attrName);
             if (val == null) {
                 continue;
@@ -759,6 +807,27 @@ public class RenderKitUtils {
     }
 
     /**
+     * <p>This method expects a <code>List</code> of attribute names that are to
+     * be excluded from rendering.  A <code>Renderer</code> may include an attribute name in this
+     * list for exclusion. For example, <code>h:link</code> may use the <code>disabled</code>
+     * attribute with a value of <code>true</code>.  However we don't want <code>disabled</code>
+     * passed through and rendered on the <code>span</code> element as it is invalid HTML.</p>
+     *
+     * @param attributeName the attribute name that is to be tested for exclusion
+     * @param excludedAttributes the list of attribute names that are to be excluded from rendering
+     * @return <code>true</code> if the attribute name is not in the exclude list.
+     */
+    private static boolean isExcludedAttribute(String attributeName, List excludedAttributes) {
+        if (null == excludedAttributes) {
+            return false;
+        }
+        if (excludedAttributes.contains(attributeName)) {
+            return true;
+        }
+        return false;
+    }
+
+    /**
      * <p>This method builds a two element array structure as follows:
      * Example:
      *     Given the following accept string:
@@ -789,9 +858,10 @@ public class RenderKitUtils {
         String subtype;
         String level = null;
         String quality = null;
+        Map<String, Object> appMap = FacesContext.getCurrentInstance().getExternalContext().getApplicationMap();
 
         // Parse "types"
-        String[] types = Util.split(accept, CONTENT_TYPE_DELIMITER);
+        String[] types = Util.split(appMap, accept, CONTENT_TYPE_DELIMITER);
         String[][] arrayAccept = new String[types.length][MAX_CONTENT_TYPE_PARTS];
         int index = -1;
         for (int i=0; i<types.length; i++) {
@@ -801,7 +871,7 @@ public class RenderKitUtils {
             // to add uniqueness to a type/subtype, and/or delimits a qualifier value:
             //    Example: text/html;level=1,text/html;level=2; q=.5
             if (token.contains(";")) {
-                String[] typeParts = Util.split(token, ";");
+                String[] typeParts = Util.split(appMap, token, ";");
                 typeSubType = new StringBuilder(typeParts[0].trim());
                 for (int j=1; j<typeParts.length; j++) {
                     quality = "not set";
@@ -809,14 +879,14 @@ public class RenderKitUtils {
                     // if "level" is present, make sure it gets included in the "type/subtype"
                     if (token.contains("level")) {
                         typeSubType.append(';').append(token);
-                        String[] levelParts = Util.split(token, "=");
+                        String[] levelParts = Util.split(appMap, token, "=");
                         level = levelParts[0].trim();
                         if (level.equalsIgnoreCase("level")) {
                             level = levelParts[1].trim();
                         }
                     } else {
                         quality = token;
-                        String[] qualityParts = Util.split(quality, "=");
+                        String[] qualityParts = Util.split(appMap, quality, "=");
                         quality = qualityParts[0].trim();
                         if (quality.equalsIgnoreCase("q")) {
                             quality = qualityParts[1].trim();
@@ -832,7 +902,7 @@ public class RenderKitUtils {
             }
             // now split type and subtype
             if (typeSubType.indexOf(CONTENT_TYPE_SUBTYPE_DELIMITER) >= 0) {
-                String[] typeSubTypeParts = Util.split(typeSubType.toString(), CONTENT_TYPE_SUBTYPE_DELIMITER);
+                String[] typeSubTypeParts = Util.split(appMap, typeSubType.toString(), CONTENT_TYPE_SUBTYPE_DELIMITER);
                 // Apparently there are user-agents that send invalid
                 // Accept headers containing no subtype (i.e. text/).
                 // For those cases, assume "*" for the subtype.
@@ -1131,12 +1201,14 @@ public class RenderKitUtils {
 
         ExternalContext extContext = ctx.getExternalContext();
         if (!extContext.isResponseCommitted()) {
-            extContext.responseReset();
             extContext.setResponseContentType("text/html; charset=UTF-8");
-            extContext.setResponseStatus(500);
             try {
                 Writer w = extContext.getResponseOutputWriter();
-                DevTools.debugHtml(w, ctx, fe.getCause());
+                if (ctx.isProjectStage(ProjectStage.Development)) {
+                    DevTools.debugHtml(w, ctx, fe.getCause());
+                } else {
+                    w.write("Please see your server log for the actual error");
+                }
                 w.flush();
             } catch (IOException ioe) {
                 if (LOGGER.isLoggable(Level.SEVERE)) {
@@ -1199,6 +1271,25 @@ public class RenderKitUtils {
      */
     public static String getFormClientId(UIComponent component,
                                    FacesContext context) {
+        UIForm form = getForm(component, context);
+        if (form != null) {
+            return form.getClientId(context);
+        }
+
+        return null;
+    }
+
+    
+       /**
+     * <p>Utility method to return the client ID of the parent form.</p>
+     *
+     * @param component typically a command component
+     * @param context   the <code>FacesContext</code> for the current request
+     *
+     * @return the parent form, if any
+     */
+    public static UIForm getForm(UIComponent component,
+                                   FacesContext context) {
 
         UIComponent parent = component.getParent();
         while (parent != null) {
@@ -1210,13 +1301,12 @@ public class RenderKitUtils {
         
         UIForm form = (UIForm) parent;
         if (form != null) {
-            return form.getClientId(context);
+            return form;
         }
 
         return null;
     }
-
-
+    
     /**
      * @param context the <code>FacesContext</code> for the current request
      *
@@ -1261,13 +1351,26 @@ public class RenderKitUtils {
     public static String getImageSource(FacesContext context, UIComponent component, String attrName) {
 
         String resName = (String) component.getAttributes().get("name");
+        ResourceHandler handler = context.getApplication().getResourceHandler();
         if (resName != null) {
             String libName = (String) component.getAttributes().get("library");
-            ResourceHandler handler = context.getApplication().getResourceHandler();
+            WebConfiguration webConfig = WebConfiguration.getInstance();
+
+            if (libName == null && resName.startsWith(webConfig.getOptionValue(WebConfiguration.WebContextInitParameter.WebAppContractsDirectory))) {
+                if (context.isProjectStage(ProjectStage.Development)) {
+                    String msg = "Illegal path, direct contract references are not allowed: " + resName;
+                    context.addMessage(component.getClientId(context),
+                                       new FacesMessage(FacesMessage.SEVERITY_ERROR,
+                                                        msg,
+                                                        msg));
+                }
+                return "RES_NOT_FOUND";
+            }
+
             Resource res = handler.createResource(resName, libName);
             if (res == null) {
                 if (context.isProjectStage(ProjectStage.Development)) {
-                    String msg = "Unable to find resource " + resName;
+                    String msg = "Unable to find resource " + (libName == null ? "" : libName + ", ") + resName;
                     context.addMessage(component.getClientId(context),
                                        new FacesMessage(FacesMessage.SEVERITY_ERROR,
                                                         msg,
@@ -1275,7 +1378,8 @@ public class RenderKitUtils {
                 }
                 return "RES_NOT_FOUND";
             } else {
-                return res.getRequestPath();
+            	String requestPath = res.getRequestPath();
+            	return context.getExternalContext().encodeResourceURL(requestPath);
             }
         } else {
             
@@ -1283,7 +1387,19 @@ public class RenderKitUtils {
             if (value == null || value.length() == 0) {
                 return "";
             }
-            if (value.contains(ResourceHandler.RESOURCE_IDENTIFIER)) {
+            WebConfiguration webConfig = WebConfiguration.getInstance();
+            if (value.startsWith(webConfig.getOptionValue(WebConfiguration.WebContextInitParameter.WebAppContractsDirectory))) {
+                if (context.isProjectStage(ProjectStage.Development)) {
+                    String msg = "Illegal path, direct contract references are not allowed: " + value;
+                    context.addMessage(component.getClientId(context),
+                                       new FacesMessage(FacesMessage.SEVERITY_ERROR,
+                                                        msg,
+                                                        msg));
+                }
+                return "RES_NOT_FOUND";
+            }
+            
+            if (handler.isResourceURL(value)) {
                 return value;
             } else {
                 value = context.getApplication().getViewHandler().
@@ -1307,6 +1423,10 @@ public class RenderKitUtils {
             return;
         }
 
+        if (builder.length() == 0) {
+            builder.append("jsf.util.chain(this,event,");
+        }
+
         if (builder.charAt(builder.length() - 1) != ',')
             builder.append(',');
 
@@ -1525,7 +1645,6 @@ public class RenderKitUtils {
 
         // Hard to pre-compute builder initial capacity
         StringBuilder builder = new StringBuilder(100);
-        builder.append("jsf.util.chain(this,event,");
 
         appendScriptToChain(builder, userHandler);
 
@@ -1555,6 +1674,10 @@ public class RenderKitUtils {
             submitting = true;
         }
 
+        if (builder.length() == 0) {
+            return null;
+        }
+
         builder.append(")");
 
         // If we're submitting (either via a behavior, or by rendering
@@ -1585,15 +1708,8 @@ public class RenderKitUtils {
 
         String script = behavior.getScript(bContext);
 
-        // TODO: The "action".equals(behaviorEventName) is a bit awkward - we
-        // should find a better solution.  The problem that we are trying
-        // to avoid is that we do not want to prevent the default behavior
-        // (ie. we do not want to return false), for handlers most handlers.
-        // However, for actions we do since the HTML content (links, buttons)
-        // has native default behavior.  We should generalize this so that
-        // we do not have to perform that explicitly check for "action".
         boolean preventDefault = ((needsSubmit || isSubmitting(behavior)) &&
-                                  ("action".equals(behaviorEventName) || "click".equals(behaviorEventName)));
+                                  (component instanceof ActionSource || component instanceof ActionSource2));
 
          if (script == null) {
              if (needsSubmit) {
diff --git a/jsf-ri/src/main/java/com/sun/faces/renderkit/ResponseStateManagerImpl.java b/jsf-ri/src/main/java/com/sun/faces/renderkit/ResponseStateManagerImpl.java
index 6ac2896..a7d9ae8 100644
--- a/jsf-ri/src/main/java/com/sun/faces/renderkit/ResponseStateManagerImpl.java
+++ b/jsf-ri/src/main/java/com/sun/faces/renderkit/ResponseStateManagerImpl.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -34,7 +38,6 @@
  * holder.
  */
 
-
 package com.sun.faces.renderkit;
 
 import java.io.IOException;
@@ -62,7 +65,7 @@ public class ResponseStateManagerImpl extends ResponseStateManager {
         WebConfiguration webConfig = WebConfiguration.getInstance();
         String stateMode =
               webConfig.getOptionValue(StateSavingMethod);
-        helper = ((StateManager.STATE_SAVING_METHOD_CLIENT.equals(stateMode)
+        helper = ((StateManager.STATE_SAVING_METHOD_CLIENT.equalsIgnoreCase(stateMode)
                    ? new ClientSideStateHelper()
                    : new ServerSideStateHelper()));
 
@@ -73,7 +76,7 @@ public class ResponseStateManagerImpl extends ResponseStateManager {
 
 
     /**
-     * @see {@link ResponseStateManager#isPostback(javax.faces.context.FacesContext)}
+     * @see ResponseStateManager#isPostback(javax.faces.context.FacesContext) 
      */
     @Override
     public boolean isPostback(FacesContext context) {
@@ -83,9 +86,13 @@ public class ResponseStateManagerImpl extends ResponseStateManager {
 
     }
 
+    @Override
+    public String getCryptographicallyStrongTokenFromSession(FacesContext context) {
+        return helper.getCryptographicallyStrongTokenFromSession(context);
+    }
 
     /**
-     * @see {@link javax.faces.render.ResponseStateManager#getState(javax.faces.context.FacesContext, String)}
+     * @see ResponseStateManager#getState(javax.faces.context.FacesContext, java.lang.String) 
      */
     @Override
     public Object getState(FacesContext context, String viewId) {
@@ -110,7 +117,7 @@ public class ResponseStateManagerImpl extends ResponseStateManager {
 
 
     /**
-     * @see {@link javax.faces.render.ResponseStateManager#writeState(javax.faces.context.FacesContext, Object)}
+     * @see ResponseStateManager#writeState(javax.faces.context.FacesContext, java.lang.Object) 
      */
     @Override
     public void writeState(FacesContext context, Object state)
@@ -122,7 +129,7 @@ public class ResponseStateManagerImpl extends ResponseStateManager {
 
 
     /**
-     * @see {@link javax.faces.render.ResponseStateManager#getViewState(javax.faces.context.FacesContext, Object)}
+     * @see ResponseStateManager#getViewState(javax.faces.context.FacesContext, java.lang.Object) 
      */
     @Override
     public String getViewState(FacesContext context, Object state) {
@@ -149,5 +156,15 @@ public class ResponseStateManagerImpl extends ResponseStateManager {
         return null;
 
     }
-    
-} 
\ No newline at end of file
+
+    /**
+     * @param facesContext the Faces context.
+     * @param viewId the view id.
+     * @return true if "stateless" was found, false otherwise.
+     * @throws IllegalStateException when the request is not a postback.
+     */
+    @Override
+    public boolean isStateless(FacesContext facesContext, String viewId) {
+        return helper.isStateless(facesContext, viewId);
+    }
+} 
diff --git a/jsf-ri/src/main/java/com/sun/faces/renderkit/SelectItemsIterator.java b/jsf-ri/src/main/java/com/sun/faces/renderkit/SelectItemsIterator.java
index 6959a0b..8481eca 100644
--- a/jsf-ri/src/main/java/com/sun/faces/renderkit/SelectItemsIterator.java
+++ b/jsf-ri/src/main/java/com/sun/faces/renderkit/SelectItemsIterator.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -61,7 +65,7 @@ import javax.faces.component.UISelectOne;
  *
  * // RELEASE_PENDING (rlubke,driscoll) performanc review
  */
-final class SelectItemsIterator implements Iterator<SelectItem> {
+public final class SelectItemsIterator<T extends SelectItem> implements Iterator<SelectItem> {
 
 
     // ------------------------------------------------------------ Constructors
@@ -89,7 +93,7 @@ final class SelectItemsIterator implements Iterator<SelectItem> {
      * <p>Iterator over the SelectItem elements pointed at by a
      * <code>UISelectItems</code> component, or <code>null</code>.</p>
      */
-    private Iterator<SelectItem> items;
+    private ComponentAwareSelectItemIterator<SelectItem> items;
 
 
     /**
@@ -157,6 +161,12 @@ final class SelectItemsIterator implements Iterator<SelectItem> {
         return next();
 
     }
+    
+    public UIComponent currentSelectComponent() {
+        UIComponent result = items.currentSelectComponent();
+        
+        return result;
+    }
 
 
     /**
@@ -191,14 +201,14 @@ final class SelectItemsIterator implements Iterator<SelectItem> {
                                       ui.isItemEscaped(),
                                       ui.isNoSelectionOption());
             }
-            updateSingeItemIterator(item);
+            updateSingeItemIterator(ui, item);
             items = singleItemIterator;
         } else if (kid instanceof UISelectItems) {
             UISelectItems ui = (UISelectItems) kid;
             Object value = ui.getValue();
             if (value != null) {
                 if (value instanceof SelectItem) {
-                    updateSingeItemIterator((SelectItem) value);
+                    updateSingeItemIterator(ui, (SelectItem) value);
                     items = singleItemIterator;
                 } else if (value.getClass().isArray()) {
                     items = new ArrayIterator(ctx, (UISelectItems) kid, value);
@@ -207,7 +217,7 @@ final class SelectItemsIterator implements Iterator<SelectItem> {
                                                      (UISelectItems) kid,
                                                      (Iterable<?>) value);
                 } else if (value instanceof Map) {
-                    items = new MapIterator((Map) value);
+                    items = new MapIterator((Map) value, ui.getParent());
                 } else {
                     throw new IllegalArgumentException();
                 }
@@ -244,12 +254,12 @@ final class SelectItemsIterator implements Iterator<SelectItem> {
      * <code>item</code>
      * @param item the {@link SelectItem} to expose as an Iterator
      */
-    private void updateSingeItemIterator(SelectItem item) {
+    private void updateSingeItemIterator(UIComponent selectComponent, SelectItem item) {
 
         if (singleItemIterator == null) {
             singleItemIterator = new SingleElementIterator();
         }
-        singleItemIterator.updateItem(item);
+        singleItemIterator.updateItem(selectComponent, item);
 
     }
 
@@ -260,12 +270,19 @@ final class SelectItemsIterator implements Iterator<SelectItem> {
     /**
      * Exposes single {@link SelectItem} instances as an Iterator.
      */
-    private static final class SingleElementIterator implements Iterator<SelectItem> {
+    private static final class SingleElementIterator implements ComponentAwareSelectItemIterator<SelectItem> {
 
         private SelectItem item;
+        private transient UIComponent selectComponent;
         private boolean nextCalled;
 
 
+        // ----------------------------------------------- Methods from ComponentAwareSelectItemIterator
+
+        public UIComponent currentSelectComponent() {
+            return selectComponent;
+        }
+        
         // ----------------------------------------------- Methods from Iterator
 
 
@@ -297,9 +314,10 @@ final class SelectItemsIterator implements Iterator<SelectItem> {
         // ----------------------------------------------------- Private Methods
 
 
-        private void updateItem(SelectItem item) {
+        private void updateItem(UIComponent selectComponent, SelectItem item) {
 
             this.item = item;
+            this.selectComponent = selectComponent;
             nextCalled = false;
 
         }
@@ -312,22 +330,29 @@ final class SelectItemsIterator implements Iterator<SelectItem> {
      * Note that this will do so re-using the same SelectItem but changing
      * the value and label as appropriate.
      */
-    private static final class MapIterator implements Iterator<SelectItem> {
+    private static final class MapIterator implements ComponentAwareSelectItemIterator<SelectItem> {
 
         private SelectItem item = new SelectItem();
         private Iterator iterator;
+        private transient UIComponent parent;
 
 
         // -------------------------------------------------------- Constructors
 
 
-        private MapIterator(Map map) {
+        private MapIterator(Map map, UIComponent parent) {
 
             this.iterator = map.entrySet().iterator();
-
+            this.parent = parent;
         }
 
 
+        // ----------------------------------------------- Methods from ComponentAwareSelectItemIterator
+
+        public UIComponent currentSelectComponent() {
+            return parent;
+        }
+        
         // ----------------------------------------------- Methods from Iterator
 
 
@@ -365,7 +390,7 @@ final class SelectItemsIterator implements Iterator<SelectItem> {
      * or may not contain <code>SelectItem</code> instances.
      * </p>
      */
-    private static abstract class GenericObjectSelectItemIterator implements Iterator<SelectItem> {
+    private static abstract class GenericObjectSelectItemIterator implements ComponentAwareSelectItemIterator<SelectItem> {
 
         /**
          * SelectItem that is updated based on the current Object being
@@ -376,7 +401,7 @@ final class SelectItemsIterator implements Iterator<SelectItem> {
         /**
          * The source <code>UISelectItems</code>.
          */
-        protected UISelectItems sourceComponent;
+        protected transient UISelectItems sourceComponent;
 
 
         // -------------------------------------------------------- Constructors
@@ -388,7 +413,12 @@ final class SelectItemsIterator implements Iterator<SelectItem> {
 
         }
 
+        // -------------------------------------------------------- Constructors
 
+        public UIComponent currentSelectComponent() {
+            return sourceComponent;
+        }
+        
         // --------------------------------------------------- Protected Methods
 
 
@@ -479,7 +509,7 @@ final class SelectItemsIterator implements Iterator<SelectItem> {
                                         : null));
                     setEscape(((itemEscapedResult != null)
                                    ? Boolean.valueOf(itemEscapedResult.toString())
-                                   : false));
+                                   : true));
                     setDisabled(((itemDisabledResult != null)
                                      ? Boolean.valueOf(itemDisabledResult.toString())
                                      : false));
@@ -521,6 +551,9 @@ final class SelectItemsIterator implements Iterator<SelectItem> {
 
     } // END GenericObjectSelectItemIterator
 
+    private static interface ComponentAwareSelectItemIterator<E extends Object> extends Iterator<E> {
+        public UIComponent currentSelectComponent();
+    }
 
     /**
      * Handles arrays of <code>SelectItem</code>s, generic Objects,
diff --git a/jsf-ri/src/main/java/com/sun/faces/renderkit/ServerSideStateHelper.java b/jsf-ri/src/main/java/com/sun/faces/renderkit/ServerSideStateHelper.java
index 35506c3..919558b 100644
--- a/jsf-ri/src/main/java/com/sun/faces/renderkit/ServerSideStateHelper.java
+++ b/jsf-ri/src/main/java/com/sun/faces/renderkit/ServerSideStateHelper.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -34,7 +38,6 @@
  * holder.
  */
 
-
 package com.sun.faces.renderkit;
 
 import java.util.logging.Level;
@@ -54,9 +57,11 @@ import javax.faces.context.FacesContext;
 import javax.faces.context.ExternalContext;
 import javax.faces.context.ResponseWriter;
 import javax.faces.FacesException;
+import javax.faces.component.NamingContainer;
 import javax.faces.component.UIViewRoot;
 
 import com.sun.faces.config.WebConfiguration.WebContextInitParameter;
+import static com.sun.faces.config.WebConfiguration.BooleanWebContextInitParameter.SerializeServerStateDeprecated;
 import static com.sun.faces.config.WebConfiguration.BooleanWebContextInitParameter.SerializeServerState;
 import static com.sun.faces.config.WebConfiguration.BooleanWebContextInitParameter.GenerateUniqueServerStateIds;
 import com.sun.faces.util.FacesLogger;
@@ -65,9 +70,14 @@ import com.sun.faces.util.LRUMap;
 import com.sun.faces.util.Util;
 import com.sun.faces.util.RequestStateManager;
 
+import static com.sun.faces.config.WebConfiguration.BooleanWebContextInitParameter.AutoCompleteOffOnViewState;
+import static com.sun.faces.config.WebConfiguration.BooleanWebContextInitParameter.EnableViewStateIdRendering;
+import static com.sun.faces.config.WebConfiguration.BooleanWebContextInitParameter.NamespaceParameters;
 import static com.sun.faces.config.WebConfiguration.WebContextInitParameter.NumberOfLogicalViews;
 import static com.sun.faces.config.WebConfiguration.WebContextInitParameter.NumberOfViews;
 import com.sun.faces.config.WebConfiguration;
+import java.util.Collections;
+import javax.faces.render.ResponseStateManager;
 
 /**
  * <p>
@@ -112,6 +122,12 @@ public class ServerSideStateHelper extends StateHelper {
 
 
     /**
+     * Flag determining whether or not javax.faces.ViewState should be namespaced.
+     */
+    protected boolean namespaceParameters;
+
+
+    /**
      * Used to generate unique server state IDs.
      */
     protected final Random random;
@@ -135,6 +151,7 @@ public class ServerSideStateHelper extends StateHelper {
         } else {
             random = null;
         }
+        namespaceParameters = webConfig.isOptionEnabled(NamespaceParameters);
 
     }
 
@@ -153,11 +170,9 @@ public class ServerSideStateHelper extends StateHelper {
      * the client as a hidden field using the <code>ResponseWriter</code>
      * from the provided <code>FacesContext</code>.</p>
      *
-     * <p>If <code>stateCapture</code> is not <code>null</code>, the compisite
+     * <p>If <code>stateCapture</code> is not <code>null</code>, the composite
      * key will be appended to the <code>StringBuilder<code> without any markup
      * included or any content written to the client.
-     *
-     * @see {@link com.sun.faces.renderkit.StateHelper#writeState(javax.faces.context.FacesContext, Object, StringBuilder)}
      */
     public void writeState(FacesContext ctx,
                            Object state,
@@ -165,96 +180,131 @@ public class ServerSideStateHelper extends StateHelper {
     throws IOException {
 
         Util.notNull("context", ctx);
-        Util.notNull("state", state);
 
-        Object[] stateToWrite = (Object[]) state;
-        ExternalContext externalContext = ctx.getExternalContext();
-        Object sessionObj = externalContext.getSession(true);
-        Map<String, Object> sessionMap = externalContext.getSessionMap();
+        String id;
+        
+        UIViewRoot viewRoot = ctx.getViewRoot();
+
+        if (!viewRoot.isTransient()) {
+            if (!ctx.getAttributes().containsKey("com.sun.faces.ViewStateValue")) {
+                Util.notNull("state", state);
+                Object[] stateToWrite = (Object[]) state;
+                ExternalContext externalContext = ctx.getExternalContext();
+                Object sessionObj = externalContext.getSession(true);
+                Map<String, Object> sessionMap = externalContext.getSessionMap();
+
+                //noinspection SynchronizationOnLocalVariableOrMethodParameter
+                synchronized (sessionObj) {
+                    Map<String, Map> logicalMap = TypedCollections.dynamicallyCastMap(
+                          (Map) sessionMap
+                                .get(LOGICAL_VIEW_MAP), String.class, Map.class);
+                    if (logicalMap == null) {
+                        logicalMap = Collections.synchronizedMap(new LRUMap<String, Map>(numberOfLogicalViews));
+                        sessionMap.put(LOGICAL_VIEW_MAP, logicalMap);
+                    }
 
-        //noinspection SynchronizationOnLocalVariableOrMethodParameter
-        synchronized (sessionObj) {
-            Map<String, Map> logicalMap = TypedCollections.dynamicallyCastMap(
-                  (Map) sessionMap
-                        .get(LOGICAL_VIEW_MAP), String.class, Map.class);
-            if (logicalMap == null) {
-                logicalMap = new LRUMap<String, Map>(numberOfLogicalViews);
-                sessionMap.put(LOGICAL_VIEW_MAP, logicalMap);
-            }
+                    Object structure = stateToWrite[0];
+                    Object savedState = handleSaveState(stateToWrite[1]);
 
-            Object structure = stateToWrite[0];
-            Object savedState = handleSaveState(stateToWrite[1]);
+                    String idInLogicalMap = (String)
+                              RequestStateManager.get(ctx, RequestStateManager.LOGICAL_VIEW_MAP);
+                    if (idInLogicalMap == null) {
+                        idInLogicalMap = ((generateUniqueStateIds)
+                                              ? createRandomId()
+                                              : createIncrementalRequestId(ctx));
+                    }
+                    String idInActualMap = null;
+                    if(ctx.getPartialViewContext().isPartialRequest()){
+                        // If partial request, do not change actual view Id, because page not actually changed.
+                        // Otherwise partial requests will soon overflow cache with values that would be never used.
+                        idInActualMap = (String) RequestStateManager.get(ctx, RequestStateManager.ACTUAL_VIEW_MAP);
+                    }
+                    if (null == idInActualMap) {
+                            idInActualMap = ((generateUniqueStateIds) ? createRandomId()
+                                                        : createIncrementalRequestId(ctx));
+                    }
+                    Map<String, Object[]> actualMap =
+                          TypedCollections.dynamicallyCastMap(
+                                logicalMap.get(idInLogicalMap), String.class, Object[].class);
+                    if (actualMap == null) {
+                        actualMap = new LRUMap<String, Object[]>(numberOfViews);
+                        logicalMap.put(idInLogicalMap, actualMap);
+                    }
 
-            String idInLogicalMap = (String)
-                      RequestStateManager.get(ctx, RequestStateManager.LOGICAL_VIEW_MAP);
-            if (idInLogicalMap == null) {
-                idInLogicalMap = ((generateUniqueStateIds)
-                                      ? createRandomId()
-                                      : createIncrementalRequestId(ctx));
-            }
-            String idInActualMap = null;
-            if(ctx.getPartialViewContext().isPartialRequest()){
-                // If partial request, do not change actual view Id, because page not actually changed.
-                // Otherwise partial requests will soon overflow cache with values that would be never used.
-                idInActualMap = (String) RequestStateManager.get(ctx, RequestStateManager.ACTUAL_VIEW_MAP);
-            }
-            if (null == idInActualMap) {
-                    idInActualMap = ((generateUniqueStateIds) ? createRandomId()
-                                                : createIncrementalRequestId(ctx));
-            }
-            Map<String, Object[]> actualMap =
-                  TypedCollections.dynamicallyCastMap(
-                        logicalMap.get(idInLogicalMap), String.class, Object[].class);
-            if (actualMap == null) {
-                actualMap = new LRUMap<String, Object[]>(numberOfViews);
-                logicalMap.put(idInLogicalMap, actualMap);
-            }
+                    id = idInLogicalMap + ':' + idInActualMap;
 
-            String id = idInLogicalMap + ':' + idInActualMap;
+                    Object[] stateArray = actualMap.get(idInActualMap);
+                    // reuse the array if possible
+                    if (stateArray != null) {
+                        stateArray[0] = structure;
+                        stateArray[1] = savedState;
+                    } else {
+                        actualMap.put(idInActualMap, new Object[]{ structure, savedState });
+                    }
 
-            Object[] stateArray = actualMap.get(idInActualMap);
-            // reuse the array if possible
-            if (stateArray != null) {
-                stateArray[0] = structure;
-                stateArray[1] = savedState;
+                    // always call put/setAttribute as we may be in a clustered environment.
+                    sessionMap.put(LOGICAL_VIEW_MAP, logicalMap);
+                    ctx.getAttributes().put("com.sun.faces.ViewStateValue", id);
+                }
             } else {
-                actualMap.put(idInActualMap, new Object[]{ structure, savedState });
+                id = (String) ctx.getAttributes().get("com.sun.faces.ViewStateValue");
             }
-
-            // always call put/setAttribute as we may be in a clustered environment.
-            sessionMap.put(LOGICAL_VIEW_MAP, logicalMap);
-
-             if (stateCapture != null) {
-                stateCapture.append(id);
-             } else {
-                 ResponseWriter writer = ctx.getResponseWriter();
-                 writer.write(stateFieldStart);
-                 writer.write(id);
-                 writer.write(stateFieldEnd);
-                 writeRenderKitIdField(ctx, writer);
-             }
+        } else {
+            id = "stateless";
         }
+        
+        if (stateCapture != null) {
+            stateCapture.append(id);
+        } else {
+            ResponseWriter writer = ctx.getResponseWriter();
 
+            writer.startElement("input", null);
+            writer.writeAttribute("type", "hidden", null);
+
+            String viewStateParam = ResponseStateManager.VIEW_STATE_PARAM;
+            
+            if ((namespaceParameters) && (viewRoot instanceof NamingContainer)) {
+                String namingContainerId = viewRoot.getContainerClientId(ctx);
+                if (namingContainerId != null) {
+            	    viewStateParam = namingContainerId + viewStateParam;
+                }
+            }
+            writer.writeAttribute("name", viewStateParam, null);
+            if (webConfig.isOptionEnabled(EnableViewStateIdRendering)) {
+                String viewStateId = Util.getViewStateId(ctx);
+                writer.writeAttribute("id", viewStateId, null);
+            }
+            writer.writeAttribute("value", id, null);
+            if (webConfig.isOptionEnabled(AutoCompleteOffOnViewState)) {
+                writer.writeAttribute("autocomplete", "off", null);
+            }
+            writer.endElement("input");
 
+            writeClientWindowField(ctx, writer); 
+            writeRenderKitIdField(ctx, writer);
+        }
     }
 
 
     /**
      * <p>Inspects the incoming request parameters for the standardized state
      * parameter name.  In this case, the parameter value will be the composite
-     * ID generated by {@link com.sun.faces.renderkit.ServerSideStateHelper#writeState(javax.faces.context.FacesContext, Object, StringBuilder)}.</p>
+     * ID generated by ServerSideStateHelper#writeState(FacesContext, Object, StringBuilder).</p>
      *
      * <p>The composite key will be used to find the appropriate view within the
      * session obtained from the provided <code>FacesContext</code>
-     *
-     * @see {@link com.sun.faces.renderkit.StateHelper#getState(javax.faces.context.FacesContext, String)}
      */
     public Object getState(FacesContext ctx, String viewId) {
 
         String compoundId = getStateParamValue(ctx);
+        
         if (compoundId == null) {
             return null;
         }
+        
+        if ("stateless".equals(compoundId)) {
+            return "stateless";
+        }
 
         int sep = compoundId.indexOf(':');
         assert (sep != -1);
@@ -286,16 +336,21 @@ public class ServerSideStateHelper extends StateHelper {
                                             RequestStateManager.LOGICAL_VIEW_MAP,
                                             idInLogicalMap);
                     Object[] state = (Object[]) actualMap.get(idInActualMap);
+                    Object[] restoredState = new Object[2];
+                    
+                    restoredState[0] = state[0];
+                    restoredState[1] = state[1];
+                    
                     if(state != null){
                         RequestStateManager.set(ctx,
                                                 RequestStateManager.ACTUAL_VIEW_MAP,
                                                 idInActualMap);
                         if (state.length == 2 && state[1] != null) {
-                            state[1] = handleRestoreState(state[1]);
+                            restoredState[1] = handleRestoreState(state[1]);
                         }
                     }
 
-                    return state;
+                    return restoredState;
                 }
             }
         }
@@ -331,7 +386,9 @@ public class ServerSideStateHelper extends StateHelper {
             try {
                 value = Integer.valueOf(defaultValue);
             } catch (NumberFormatException ne) {
-                // won't occur
+                if (LOGGER.isLoggable(Level.FINEST)) {
+                    LOGGER.log(Level.FINEST, "Unable to convert number", ne);
+                }
             }
         }
 
@@ -342,13 +399,13 @@ public class ServerSideStateHelper extends StateHelper {
 
     /**
      * @param state the object returned from <code>UIView.processSaveState</code>
-     * @return If {@link com.sun.faces.config.WebConfiguration.BooleanWebContextInitParameter#SerializeServerState} is
+     * @return If {@link com.sun.faces.config.WebConfiguration.BooleanWebContextInitParameter#SerializeServerStateDeprecated} is
      *  <code>true</code>, serialize and return the state, otherwise, return
      *  <code>state</code> unchanged.
      */
     protected Object handleSaveState(Object state) {
 
-        if (webConfig.isOptionEnabled(SerializeServerState)) {
+        if (webConfig.isOptionEnabled(SerializeServerStateDeprecated) || webConfig.isOptionEnabled(SerializeServerState)) {
             ByteArrayOutputStream baos = new ByteArrayOutputStream(1024);
             ObjectOutputStream oas = null;
             try {
@@ -365,7 +422,11 @@ public class ServerSideStateHelper extends StateHelper {
                 if (oas != null) {
                     try {
                         oas.close();
-                    } catch (IOException ignored) { }
+                    } catch (IOException ioe) { 
+                        if (LOGGER.isLoggable(Level.FINEST)) {
+                            LOGGER.log(Level.FINEST, "Closing stream", ioe);
+                        }
+                    }
                 }
             }
             return baos.toByteArray();
@@ -379,12 +440,12 @@ public class ServerSideStateHelper extends StateHelper {
     /**
      * @param state the state as it was stored in the session
      * @return an object that can be passed to <code>UIViewRoot.processRestoreState</code>.
-     *  If {@link com.sun.faces.config.WebConfiguration.BooleanWebContextInitParameter#SerializeServerState} de-serialize the
+     *  If {@link com.sun.faces.config.WebConfiguration.BooleanWebContextInitParameter#SerializeServerStateDeprecated} de-serialize the
      *  state prior to returning it, otherwise return <code>state</code> as is.
      */
     protected Object handleRestoreState(Object state) {
 
-        if (webConfig.isOptionEnabled(SerializeServerState)) {
+        if (webConfig.isOptionEnabled(SerializeServerStateDeprecated) || webConfig.isOptionEnabled(SerializeServerState)) {
             ByteArrayInputStream bais = new ByteArrayInputStream((byte[]) state);
             ObjectInputStream ois = null;
             try {
@@ -399,7 +460,11 @@ public class ServerSideStateHelper extends StateHelper {
                 if (ois != null) {
                     try {
                         ois.close();
-                    } catch (IOException ignored) { }
+                    } catch (IOException ioe) { 
+                        if (LOGGER.isLoggable(Level.FINEST)) {
+                            LOGGER.log(Level.FINEST, "Closing stream", ioe);
+                        }
+                    }
                 }
             }
         } else {
@@ -436,5 +501,25 @@ public class ServerSideStateHelper extends StateHelper {
 
     }
 
+    /**
+     * Is stateless.
+     * 
+     * @param facesContext the Faces context.
+     * @param viewId the view id.
+     * @return true if stateless, false otherwise.
+     * @throws IllegalStateException when the request was not a postback.
+     */
+    @Override
+    public boolean isStateless(FacesContext facesContext, String viewId) throws IllegalStateException {
+        if (facesContext.isPostback()) {
+            Object stateObject = getState(facesContext, viewId);
+            if (stateObject instanceof String && "stateless".equals((String) stateObject)) {
+                return true;
+            }
 
+            return false;
+        }
+        
+        throw new IllegalStateException("Cannot determine whether or not the request is stateless");
+    }
 }
diff --git a/jsf-ri/src/main/java/com/sun/faces/renderkit/StateHelper.java b/jsf-ri/src/main/java/com/sun/faces/renderkit/StateHelper.java
index d79bddf..b243540 100644
--- a/jsf-ri/src/main/java/com/sun/faces/renderkit/StateHelper.java
+++ b/jsf-ri/src/main/java/com/sun/faces/renderkit/StateHelper.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -37,8 +41,14 @@
 package com.sun.faces.renderkit;
 
 
+import javax.faces.lifecycle.ClientWindow;
+
+import com.sun.faces.RIConstants;
+
 import java.io.IOException;
 
+import javax.faces.component.NamingContainer;
+import javax.faces.component.UIViewRoot;
 import javax.faces.context.FacesContext;
 import javax.faces.context.ResponseWriter;
 import javax.faces.render.ResponseStateManager;
@@ -47,8 +57,10 @@ import javax.faces.render.RenderKitFactory;
 import com.sun.faces.spi.SerializationProviderFactory;
 import com.sun.faces.spi.SerializationProvider;
 import com.sun.faces.config.WebConfiguration;
+import com.sun.faces.config.WebConfiguration.BooleanWebContextInitParameter;
+import com.sun.faces.util.Util;
+
 import static com.sun.faces.config.WebConfiguration.BooleanWebContextInitParameter.CompressViewState;
-import static com.sun.faces.config.WebConfiguration.BooleanWebContextInitParameter.EnableViewStateIdRendering;
 import static com.sun.faces.config.WebConfiguration.BooleanWebContextInitParameter.AutoCompleteOffOnViewState;
 
 
@@ -59,40 +71,30 @@ public abstract class StateHelper {
 
     /**
      * <p>
-     * State hidden field start.  Content after this is the actual
-     * state representation followed by the {@link #STATE_FIELD_END}.
+     * The first portion of the hidden state field.
      * </p>
      *
-     * @see {@link com.sun.faces.config.WebConfiguration.BooleanWebContextInitParameter#EnableViewStateIdRendering}
      */
     protected static final char[] STATE_FIELD_START =
           ("<input type=\"hidden\" name=\""
            + ResponseStateManager.VIEW_STATE_PARAM
-           + "\" id=\""
-           + ResponseStateManager.VIEW_STATE_PARAM
-           + "\" value=\"").toCharArray();
+           + "\" id=\"").toCharArray();
 
     /**
      * <p>
-     * Alternate hidden field to generate W3C valid XHTML.  This version
-     * includes no id attribute.  This version will be used when the
-     * <code>EnableViewStateIdRendering</code> is disabled.
+     * The second portion of the hidden state field.
      * </p>
      *
-     * @see {@link com.sun.faces.config.WebConfiguration.BooleanWebContextInitParameter#EnableViewStateIdRendering}
      */
-    protected static final char[] STATE_FIELD_START_NO_ID =
-          ("<input type=\"hidden\" name=\""
-           + ResponseStateManager.VIEW_STATE_PARAM
-           + "\" value=\"").toCharArray();
-
+    protected static final char[] FIELD_MIDDLE =
+          ("\" value=\"").toCharArray();
 
     /**
      * <p>
      * The end of the hidden state field.
      * </p>
      */
-    protected static final char[] STATE_FIELD_END =
+    protected static final char[] FIELD_END =
           "\" />".toCharArray();
 
     /**
@@ -106,10 +108,8 @@ public abstract class StateHelper {
     /**
      * <p>
      * Factory for serialization streams.  These are pluggable via
-     * the {@link com.sun.faces.config.WebConfiguration.WebContextInitParameter#SerializationProviderClass}.
+     * the WebConfiguration.WebContextInitParameter#SerializationProviderClass.
      * </p>
-     *
-     * @see {@link com.sun.faces.config.WebConfiguration.WebContextInitParameter#SerializationProviderClass}
      */
     protected SerializationProvider serialProvider;
 
@@ -127,27 +127,36 @@ public abstract class StateHelper {
      * the memory/bandwidth footprint.  This option is common to both types
      * of state saving.
      * </p>
-     *
-     * @see {@link com.sun.faces.config.WebConfiguration.BooleanWebContextInitParameter#CompressViewState}
      */
     protected boolean compressViewState;
 
 
     /**
      * This will be used the by the different <code>StateHelper</code> implementations
-     * when writing the start of the state field.  This value of this field is
-     * determined by the value of the {@link com.sun.faces.config.WebConfiguration.BooleanWebContextInitParameter#EnableViewStateIdRendering}<code>
+     * when writing the start of the state field.
      */
     protected char[] stateFieldStart;
+    
+    /**
+     * This will be used by the different <code>StateHelper</code> implementations
+     * when writing the middle of the state or viewId fields.
+     */
+    
+    protected char[] fieldMiddle;
 
 
     /**
      * This will be used the by the different <code>StateHelper</code> implementations
-     * when writing the end of the state field.  This value of this field is
+     * when writing the end of the state or viewId field.  This value of this field is
      * determined by the value of the {@link com.sun.faces.config.WebConfiguration.BooleanWebContextInitParameter#AutoCompleteOffOnViewState}<code>
      */
-    protected char[] stateFieldEnd;
+    protected char[] fieldEnd;
 
+    
+    /**
+     * Flag determining whether or not javax.faces.ViewState should be namespaced.
+     */
+    protected boolean namespaceParameters;
 
     // ------------------------------------------------------------ Constructors
 
@@ -162,12 +171,11 @@ public abstract class StateHelper {
               .createInstance(ctx.getExternalContext());
         webConfig = WebConfiguration.getInstance(ctx.getExternalContext());
         compressViewState = webConfig.isOptionEnabled(CompressViewState);
-        stateFieldStart = (webConfig.isOptionEnabled(EnableViewStateIdRendering)
-                           ? STATE_FIELD_START
-                           : STATE_FIELD_START_NO_ID);
-        stateFieldEnd = (webConfig.isOptionEnabled(AutoCompleteOffOnViewState)
+        stateFieldStart = STATE_FIELD_START;
+        fieldMiddle = FIELD_MIDDLE;
+        fieldEnd = (webConfig.isOptionEnabled(AutoCompleteOffOnViewState)
                            ? STATE_FIELD_AUTOCOMPLETE_END
-                           : STATE_FIELD_END);
+                           : FIELD_END);
 
 
         if (serialProvider == null) {
@@ -175,8 +183,30 @@ public abstract class StateHelper {
                   .createInstance(FacesContext
                         .getCurrentInstance().getExternalContext());
         }
+        namespaceParameters =
+                webConfig.isOptionEnabled(
+                     BooleanWebContextInitParameter.NamespaceParameters);
 
     }
+    
+    private String createCryptographicallyStrongToken() {
+        // PENDING: http://java.net/jira/browse/JAVASERVERFACES-2204
+        String result = "" + System.currentTimeMillis();
+        
+        return result;
+    }
+    
+    private static final String TOKEN_NAME = RIConstants.FACES_PREFIX + "TOKEN";
+    
+    public String getCryptographicallyStrongTokenFromSession(FacesContext context) {
+        String result = (String) 
+                context.getExternalContext().getSessionMap().get(TOKEN_NAME);
+        if (null == result) {
+            result = createCryptographicallyStrongToken();
+            context.getExternalContext().getSessionMap().put(TOKEN_NAME, result);
+        }
+        return result;
+    }
 
 
     // ---------------------------------------------------------- Public Methods
@@ -184,12 +214,12 @@ public abstract class StateHelper {
 
     /**
      * <p>
-     * Functionally similar to {@link ResponseStateManager#writeState(javax.faces.context.FacesContext, Object)}
+     * Functionally similar to ResponseStateManager#writeState(FacesContext, Object)
      * with an option to write the state directly to the provided <code>StringBuilder</code>
      * without sending any markup to the client.
      * </p>
      *
-     * @see {@link javax.faces.render.ResponseStateManager#writeState(javax.faces.context.FacesContext, Object)}
+     * @see ResponseStateManager#writeState(javax.faces.context.FacesContext, java.lang.Object) 
      */
     public abstract void writeState(FacesContext ctx,
                                     Object state,
@@ -203,6 +233,11 @@ public abstract class StateHelper {
     public abstract Object getState(FacesContext ctx, String viewId)
     throws IOException;
 
+    
+    /**
+     * @see javax.faces.render.ResponseStateManager#isStateless(javax.faces.context.FacesContext, String)
+     */
+    public abstract boolean isStateless(FacesContext ctx, String viewId) throws IllegalStateException;
 
     // ------------------------------------------------------- Protected Methods
 
@@ -240,13 +275,26 @@ public abstract class StateHelper {
                                          ResponseWriter writer)
     throws IOException {
 
-        String result = context.getApplication().getDefaultRenderKitId();
+        String result = context.getViewRoot().getRenderKitId();
+        String defaultRkit = context.getApplication().getDefaultRenderKitId();
+        if (null == defaultRkit) {
+            defaultRkit = RenderKitFactory.HTML_BASIC_RENDER_KIT;
+        }
+
         if (result != null
-            && !RenderKitFactory.HTML_BASIC_RENDER_KIT.equals(result)) {
+            && !defaultRkit.equals(result)) {
             writer.startElement("input", context.getViewRoot());
             writer.writeAttribute("type", "hidden", "type");
+            String renderKitIdParam = ResponseStateManager.RENDER_KIT_ID_PARAM;
+            UIViewRoot viewRoot = context.getViewRoot();
+            if ((namespaceParameters) && (viewRoot instanceof NamingContainer)) {
+                String namingContainerId = viewRoot.getContainerClientId(context);
+                if (namingContainerId != null) {
+                	renderKitIdParam = namingContainerId + renderKitIdParam;
+                }
+            }
             writer.writeAttribute("name",
-                                  ResponseStateManager.RENDER_KIT_ID_PARAM,
+                                  renderKitIdParam,
                                   "name");
             writer.writeAttribute("value",
                                   result,
@@ -255,5 +303,34 @@ public abstract class StateHelper {
         }
 
     }
-
+    
+    /**
+     * Write the client window state field.
+     * 
+     * @param context the Faces context.
+     * @param writer the response writer.
+     * @throws IOException when an I/O error occurs.
+     */
+    protected void writeClientWindowField(FacesContext context, ResponseWriter writer) throws IOException {
+        ClientWindow window = context.getExternalContext().getClientWindow();
+        if (null != window) {       
+            writer.startElement("input", null);
+            writer.writeAttribute("type", "hidden", null);
+            String clientWindowParam = ResponseStateManager.CLIENT_WINDOW_PARAM;
+            UIViewRoot viewRoot = context.getViewRoot();
+            if ((namespaceParameters) && (viewRoot instanceof NamingContainer)) {
+                String namingContainerId = viewRoot.getContainerClientId(context);
+                if (namingContainerId != null) {
+                	clientWindowParam = namingContainerId + clientWindowParam;
+                }
+            }
+            writer.writeAttribute("name", clientWindowParam, null);
+            writer.writeAttribute("id", Util.getClientWindowId(context), null);
+            writer.writeAttribute("value", window.getId(), null);
+            if (webConfig.isOptionEnabled(AutoCompleteOffOnViewState)) {
+                writer.writeAttribute("autocomplete", "off", null);
+            }
+            writer.endElement("input");
+        }        
+    }
 }
diff --git a/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/AjaxBehaviorRenderer.java b/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/AjaxBehaviorRenderer.java
index bcb295a..c154e6d 100644
--- a/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/AjaxBehaviorRenderer.java
+++ b/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/AjaxBehaviorRenderer.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -43,10 +47,12 @@ import java.util.LinkedList;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
-import javax.faces.FacesException;
 import javax.faces.component.ActionSource;
 import javax.faces.component.EditableValueHolder;
+import javax.faces.component.NamingContainer;
 import javax.faces.component.UIComponent;
+import javax.faces.component.UINamingContainer;
+import javax.faces.component.UIViewRoot;
 import javax.faces.component.behavior.AjaxBehavior;
 import javax.faces.component.behavior.ClientBehavior;
 import javax.faces.component.behavior.ClientBehaviorContext;
@@ -55,6 +61,8 @@ import javax.faces.event.AjaxBehaviorEvent;
 import javax.faces.event.PhaseId;
 import javax.faces.render.ClientBehaviorRenderer;
 
+import com.sun.faces.config.WebConfiguration;
+import com.sun.faces.config.WebConfiguration.BooleanWebContextInitParameter;
 import com.sun.faces.renderkit.RenderKitUtils;
 
 /*
@@ -67,7 +75,18 @@ public class AjaxBehaviorRenderer extends ClientBehaviorRenderer  {
     // Log instance for this class
     protected static final Logger logger = FacesLogger.RENDERKIT.getLogger();
 
-    
+    /**
+     * Flag determining whether or not javax.faces.ViewState should be namespaced.
+     */
+    protected transient boolean namespaceParameters;
+
+    public AjaxBehaviorRenderer() {
+        WebConfiguration webConfig = WebConfiguration.getInstance();
+        namespaceParameters =
+             webConfig.isOptionEnabled(
+                  BooleanWebContextInitParameter.NamespaceParameters);
+    }
+
     // ------------------------------------------------------ Rendering Methods
 
     @Override
@@ -79,7 +98,10 @@ public class AjaxBehaviorRenderer extends ClientBehaviorRenderer  {
                 "Instance of javax.faces.component.behavior.AjaxBehavior required: " + behavior);
         }
 
-        return buildAjaxCommand(behaviorContext, (AjaxBehavior)behavior);
+        if (((AjaxBehavior)behavior).isDisabled()) {
+            return null;
+        }
+        return buildAjaxCommand(behaviorContext, (AjaxBehavior)behavior, namespaceParameters);
     }
 
 
@@ -150,8 +172,10 @@ public class AjaxBehaviorRenderer extends ClientBehaviorRenderer  {
 
         return immediate;
     }
+
     private static String buildAjaxCommand(ClientBehaviorContext behaviorContext,
-                                           AjaxBehavior ajaxBehavior) {
+                                           AjaxBehavior ajaxBehavior,
+                                           boolean namespaceParameters) {
 
         // First things first - if AjaxBehavior is disabled, we are done.
         if (ajaxBehavior.isDisabled()) {
@@ -167,6 +191,11 @@ public class AjaxBehaviorRenderer extends ClientBehaviorRenderer  {
         String onevent = ajaxBehavior.getOnevent();
         String onerror = ajaxBehavior.getOnerror();
         String sourceId = behaviorContext.getSourceId();
+        String delay = ajaxBehavior.getDelay();
+        Boolean resetValues = null;
+        if (ajaxBehavior.isResetValuesSet()) {
+            resetValues = ajaxBehavior.isResetValues();
+        }
         Collection<ClientBehaviorContext.Parameter> params = behaviorContext.getParameters();
 
         // Needed workaround for SelectManyCheckbox - if execute doesn't have sourceId,
@@ -186,8 +215,10 @@ public class AjaxBehaviorRenderer extends ClientBehaviorRenderer  {
             try {
                 // And since this is a hack, we now try to remove the param
                 params.remove(foundparam);
-            } catch (UnsupportedOperationException unop) {
-                // nothing we can do about it
+            } catch (UnsupportedOperationException uoe) {
+                if (logger.isLoggable(Level.FINEST)) {
+                    logger.log(Level.FINEST, "Unsupported operation", uoe);
+                }
             }
         }
 
@@ -208,11 +239,27 @@ public class AjaxBehaviorRenderer extends ClientBehaviorRenderer  {
         appendIds(component, ajaxCommand, execute);
         ajaxCommand.append(",");
         appendIds(component, ajaxCommand, render);
+        
+        String namingContainerId = null;
+        if (namespaceParameters) {
+            FacesContext context = behaviorContext.getFacesContext();
+            UIViewRoot viewRoot = context.getViewRoot();
+            if (viewRoot instanceof NamingContainer) {
+                namingContainerId = viewRoot.getContainerClientId(context);
+            }
+        }
 
-        if ((onevent != null) || (onerror != null) || !params.isEmpty())  {
+        if ((namingContainerId != null) || (onevent != null) || (onerror != null) || (delay != null) || 
+                (resetValues != null) || !params.isEmpty())  {
 
             ajaxCommand.append(",{");
 
+            if (namingContainerId != null) {
+                // the literal string must exactly match the corresponding value 
+                // in jsf.js.
+                RenderKitUtils.appendProperty(ajaxCommand, "com.sun.faces.namingContainerId", namingContainerId, true);
+            }
+
             if (onevent != null) {
                 RenderKitUtils.appendProperty(ajaxCommand, "onevent", onevent, false);
             }
@@ -220,6 +267,14 @@ public class AjaxBehaviorRenderer extends ClientBehaviorRenderer  {
             if (onerror != null) {
                 RenderKitUtils.appendProperty(ajaxCommand, "onerror", onerror, false);
             }
+            
+            if (delay != null) {
+                RenderKitUtils.appendProperty(ajaxCommand, "delay", delay, true);
+            }
+            
+            if (resetValues != null) {
+                RenderKitUtils.appendProperty(ajaxCommand, "resetValues", resetValues, false);
+            }
 
             if (!params.isEmpty()) {
                 for (ClientBehaviorContext.Parameter param : params) {
@@ -252,6 +307,9 @@ public class AjaxBehaviorRenderer extends ClientBehaviorRenderer  {
         boolean first = true;
 
         for (String id : ids) {
+            if (id.trim().length() == 0) {
+                continue;
+            }
             if (!first) {
                 builder.append(' ');
             } else {
@@ -274,11 +332,10 @@ public class AjaxBehaviorRenderer extends ClientBehaviorRenderer  {
 
         UIComponent resolvedComponent = component.findComponent(id);
         if (resolvedComponent == null) {
-            // RELEASE_PENDING  i18n
-            throw new FacesException(
-                "<f:ajax> contains an unknown id '"
-                + id
-                + "' - cannot locate it in the context of the component "+component.getId());
+            if (id.charAt(0) == UINamingContainer.getSeparatorChar(FacesContext.getCurrentInstance())) {
+                return id.substring(1);
+            }
+            return id;
         }
 
         return resolvedComponent.getClientId();
diff --git a/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/BaseTableRenderer.java b/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/BaseTableRenderer.java
index 34361cb..b899442 100644
--- a/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/BaseTableRenderer.java
+++ b/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/BaseTableRenderer.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -325,7 +329,6 @@ public abstract class BaseTableRenderer extends HtmlBasicRenderer {
 
     protected static class TableMetaInfo {
 
-        private static final UIColumn PLACE_HOLDER_COLUMN = new UIColumn();
         private static final String[] EMPTY_STRING_ARRAY = new String[0];
         public static final String KEY = TableMetaInfo.class.getName();
 
@@ -418,7 +421,8 @@ public abstract class BaseTableRenderer extends HtmlBasicRenderer {
             if (values == null) {
                 return EMPTY_STRING_ARRAY;
             }
-            return Util.split(values.trim(), ",");
+            Map<String, Object> appMap = FacesContext.getCurrentInstance().getExternalContext().getApplicationMap();
+            return Util.split(appMap, values.trim(), ",");
 
         }
 
@@ -461,7 +465,7 @@ public abstract class BaseTableRenderer extends HtmlBasicRenderer {
                 }
                 List<UIColumn> result = new ArrayList<UIColumn>(count);
                 for (int i = 0; i < count; i++) {
-                    result.add(PLACE_HOLDER_COLUMN);
+                    result.add(new UIColumn());
                 }
                 return result;
             }
@@ -510,7 +514,8 @@ public abstract class BaseTableRenderer extends HtmlBasicRenderer {
             if (values == null) {
                 return (EMPTY_STRING_ARRAY);
             }
-            return Util.split(values.trim(), ",");
+            Map<String, Object> appMap = FacesContext.getCurrentInstance().getExternalContext().getApplicationMap();
+            return Util.split(appMap, values.trim(), ",");
 
         }
 
diff --git a/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/BodyRenderer.java b/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/BodyRenderer.java
index 9b450b7..893a447 100644
--- a/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/BodyRenderer.java
+++ b/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/BodyRenderer.java
@@ -1,103 +1,120 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- *
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- *
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- *
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- *
- * Contributor(s):
- *
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package com.sun.faces.renderkit.html_basic;
-
-import java.io.IOException;
-import java.util.ListIterator;
-
-import javax.faces.component.UIComponent;
-import javax.faces.component.UIViewRoot;
-import javax.faces.context.FacesContext;
-import javax.faces.context.ResponseWriter;
-import javax.faces.render.Renderer;
-
-import com.sun.faces.renderkit.RenderKitUtils;
-import com.sun.faces.renderkit.Attribute;
-import com.sun.faces.renderkit.AttributeManager;
-
-/**
- * <p>This <code>Renderer</code> is responsible for rendering
- * the standard HTML body element as well as rendering any resources
- * that should be output before the <code>body</code> tag is closed.</p>
- */
-public class BodyRenderer extends Renderer {
-
-    private static final Attribute[] BODY_ATTRIBUTES =
-             AttributeManager.getAttributes(AttributeManager.Key.OUTPUTBODY);
-
-
-    @Override
-    public void decode(FacesContext context, UIComponent component) {
-        // no-op
-    }
-
-    @Override
-    public void encodeBegin(FacesContext context, UIComponent component)
-          throws IOException {
-        ResponseWriter writer = context.getResponseWriter();
-        writer.startElement("body", component);
-        String styleClass = (String) component.getAttributes().get("styleClass");
-        if (styleClass != null && styleClass.length() != 0) {
-            writer.writeAttribute("class", styleClass, "styleClass");
-        }
-        RenderKitUtils.renderPassThruAttributes(context,
-                                                writer,
-                                                component,
-                                                BODY_ATTRIBUTES);
-    }
-
-    @Override
-    public void encodeChildren(FacesContext context, UIComponent component)
-          throws IOException {
-        // no-op
-    }
-
-    @Override
-    public void encodeEnd(FacesContext context, UIComponent component)
-          throws IOException {
-        ResponseWriter writer = context.getResponseWriter();
-        UIViewRoot viewRoot = context.getViewRoot();
-        ListIterator iter = (viewRoot.getComponentResources(context, "body")).listIterator();
-        while (iter.hasNext()) {
-            UIComponent resource = (UIComponent)iter.next();
-            resource.encodeAll(context);
-        }
-        RenderKitUtils.renderUnhandledMessages(context);
-        writer.endElement("body");
-    }
-    
-}
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.renderkit.html_basic;
+
+import java.io.IOException;
+import java.util.ListIterator;
+import javax.faces.component.UIComponent;
+import javax.faces.component.UIViewRoot;
+import javax.faces.context.FacesContext;
+import javax.faces.context.ResponseWriter;
+import com.sun.faces.renderkit.RenderKitUtils;
+import com.sun.faces.renderkit.Attribute;
+import com.sun.faces.renderkit.AttributeManager;
+
+/**
+ * <p>This <code>Renderer</code> is responsible for rendering
+ * the standard HTML body element as well as rendering any resources
+ * that should be output before the <code>body</code> tag is closed.</p>
+ */
+public class BodyRenderer extends HtmlBasicRenderer {
+
+    private static final Attribute[] BODY_ATTRIBUTES =
+             AttributeManager.getAttributes(AttributeManager.Key.OUTPUTBODY);
+
+
+    @Override
+    public void decode(FacesContext context, UIComponent component) {
+        // no-op
+    }
+
+    /**
+     * Encode the beginning.
+     * 
+     * @param context the Faces context.
+     * @param component the UI component.
+     * @throws IOException when an I/O error occurs.
+     */
+    @Override
+    public void encodeBegin(FacesContext context, UIComponent component)
+          throws IOException {
+        ResponseWriter writer = context.getResponseWriter();
+        writer.startElement("body", component);
+        writeIdAttributeIfNecessary(context, writer, component);
+        String styleClass = (String) component.getAttributes().get("styleClass");
+        if (styleClass != null && styleClass.length() != 0) {
+            writer.writeAttribute("class", styleClass, "styleClass");
+        }
+        RenderKitUtils.renderPassThruAttributes(context,
+                                                writer,
+                                                component,
+                                                BODY_ATTRIBUTES);
+    }
+
+    @Override
+    public void encodeChildren(FacesContext context, UIComponent component)
+          throws IOException {
+        // no-op
+    }
+
+    @Override
+    public void encodeEnd(FacesContext context, UIComponent component)
+          throws IOException {
+        ResponseWriter writer = context.getResponseWriter();
+        UIViewRoot viewRoot = context.getViewRoot();
+        ListIterator iter = (viewRoot.getComponentResources(context, "body")).listIterator();
+        while (iter.hasNext()) {
+            UIComponent resource = (UIComponent)iter.next();
+            resource.encodeAll(context);
+        }
+        RenderKitUtils.renderUnhandledMessages(context);
+        writer.endElement("body");
+    }
+    
+    /**
+     * Do we render our children.
+     * 
+     * @return false.
+     */
+    @Override
+    public boolean getRendersChildren() {
+        return false;
+    }
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/ButtonRenderer.java b/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/ButtonRenderer.java
index 84e45fc..e2a59bc 100644
--- a/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/ButtonRenderer.java
+++ b/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/ButtonRenderer.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -165,8 +169,12 @@ public class ButtonRenderer extends HtmlBasicRenderer {
                                      null,
                                      false);
 
-        writer.endElement("input");
+        // PENDING(edburns): Prior to i_spec_1111, this element 
+        // was rendered unconditionally
 
+        if(component.getChildCount() == 0) {
+            writer.endElement("input");
+        }
     }
 
     @Override
@@ -175,6 +183,12 @@ public class ButtonRenderer extends HtmlBasicRenderer {
 
         rendererParamsNotNull(context, component);
 
+        // PENDING(edburns): Prior to i_spec_1111, this element 
+        // was rendered unconditionally
+
+        if(component.getChildCount() > 0) {
+            context.getResponseWriter().endElement("input");
+        }
     }
 
     // --------------------------------------------------------- Private Methods
diff --git a/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/CheckboxRenderer.java b/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/CheckboxRenderer.java
index d239308..b720c6d 100644
--- a/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/CheckboxRenderer.java
+++ b/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/CheckboxRenderer.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/CommandLinkRenderer.java b/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/CommandLinkRenderer.java
index 57817bf..1d3579c 100644
--- a/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/CommandLinkRenderer.java
+++ b/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/CommandLinkRenderer.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/CompositeFacetRenderer.java b/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/CompositeFacetRenderer.java
index e97546c..b45d185 100644
--- a/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/CompositeFacetRenderer.java
+++ b/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/CompositeFacetRenderer.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -34,7 +38,6 @@
  * holder.
  */
 
-
 package com.sun.faces.renderkit.html_basic;
 
 import com.sun.faces.util.FacesLogger;
diff --git a/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/CompositeRenderer.java b/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/CompositeRenderer.java
index c836db4..2480e4b 100644
--- a/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/CompositeRenderer.java
+++ b/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/CompositeRenderer.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -34,7 +38,6 @@
  * holder.
  */
 
-
 package com.sun.faces.renderkit.html_basic;
 
 import com.sun.faces.util.Util;
diff --git a/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/DoctypeRenderer.java b/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/DoctypeRenderer.java
new file mode 100644
index 0000000..680d984
--- /dev/null
+++ b/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/DoctypeRenderer.java
@@ -0,0 +1,93 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.renderkit.html_basic;
+
+import com.sun.faces.renderkit.Attribute;
+import com.sun.faces.renderkit.AttributeManager;
+
+import java.io.IOException;
+import java.util.Map;
+
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.context.ResponseWriter;
+import javax.faces.render.Renderer;
+
+public class DoctypeRenderer extends Renderer {
+
+    private static final Attribute[] DOCTYPE_ATTRIBUTES =
+          AttributeManager.getAttributes(AttributeManager.Key.OUTPUTDOCTYPE);
+
+    @Override
+    public void decode(FacesContext context, UIComponent component) {
+        // no-op
+    }
+
+    @Override
+    public void encodeBegin(FacesContext context, UIComponent component)
+          throws IOException {
+        ResponseWriter writer = context.getResponseWriter();
+        Map<String, Object> attrs = component.getAttributes();
+        writer.append("<!DOCTYPE ");
+        writer.append(attrs.get("rootElement").toString());
+        if (attrs.containsKey("public")) {
+            writer.append(" PUBLIC \"").append((String)attrs.get("public")).append("\"");
+        }
+        if (attrs.containsKey("system")) {
+            writer.append(" \"").append((String)attrs.get("system")).append("\"");
+        }
+        writer.append(">");
+    }
+
+    @Override
+    public void encodeChildren(FacesContext context, UIComponent component)
+          throws IOException {
+        // no-op
+    }
+
+    @Override
+    public void encodeEnd(FacesContext context, UIComponent component)
+          throws IOException {
+        context.getResponseWriter();
+    }
+
+    
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/FileRenderer.java b/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/FileRenderer.java
new file mode 100644
index 0000000..b0ec917
--- /dev/null
+++ b/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/FileRenderer.java
@@ -0,0 +1,147 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+// FileRenderer.java
+
+package com.sun.faces.renderkit.html_basic;
+
+import com.sun.faces.renderkit.RenderKitUtils;
+import java.io.IOException;
+import java.util.Collection;
+import java.util.Map;
+
+import javax.faces.FacesException;
+import javax.faces.application.FacesMessage;
+import javax.faces.application.ProjectStage;
+import javax.faces.component.UIComponent;
+import javax.faces.component.UIForm;
+import javax.faces.context.ExternalContext;
+import javax.faces.context.FacesContext;
+import javax.faces.convert.ConverterException;
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.Part;
+
+public class FileRenderer extends TextRenderer {
+
+   // ---------------------------------------------------------- Public Methods
+
+	@Override
+	public void decode(FacesContext context, UIComponent component) {
+
+		rendererParamsNotNull(context, component);
+
+        if (!shouldDecode(component)) {
+            return;
+        }
+
+        String clientId = decodeBehaviors(context, component);
+
+        if (clientId == null) {
+            clientId = component.getClientId(context);
+        }
+
+        assert(clientId != null);
+        ExternalContext externalContext = context.getExternalContext();
+        Map<String, String> requestMap = externalContext.getRequestParameterMap();
+        
+        if (requestMap.containsKey(clientId)) {
+            setSubmittedValue(component, requestMap.get(clientId));
+        }
+
+        HttpServletRequest request = (HttpServletRequest) externalContext.getRequest();
+        try {
+            Collection<Part> parts = request.getParts();
+            for (Part cur : parts) {
+                if (clientId.equals(cur.getName())) {
+                    component.setTransient(true);
+                    setSubmittedValue(component, cur);
+                }
+            }
+        } catch (IOException ioe) {
+            throw new FacesException(ioe);
+        } catch (ServletException se) {
+            throw new FacesException(se);
+        }
+            
+    }
+    
+    // If we are in Project Stage Development mode, the parent form 
+    // must have an enctype of "multipart/form-data" for this component.
+    // If not, produce a message.
+    @Override
+    public void encodeBegin(FacesContext context, UIComponent component)
+          throws IOException {
+        if (context.isProjectStage(ProjectStage.Development)) {
+            boolean produceMessage = false;
+            UIForm form = RenderKitUtils.getForm(component, context);
+            if (null != form) {
+                String encType = (String)form.getAttributes().get("enctype");
+                if (null == encType || !encType.equals("multipart/form-data")) {
+                    produceMessage = true;
+                } 
+            } else {
+                produceMessage = true;
+            }
+            
+            if (produceMessage) {
+                FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_WARN,
+                    "File upload component requires a form with an enctype of multipart/form-data",
+                    "File upload component requires a form with an enctype of multipart/form-data");
+                context.addMessage(component.getClientId(context), message);   
+            }       
+        }
+        super.encodeBegin(context, component);
+    }
+
+    @Override
+    public Object getConvertedValue(FacesContext context, UIComponent component, Object submittedValue) throws ConverterException {
+        if (submittedValue instanceof Part) {
+            Part part = (Part) submittedValue;
+            if ((part.getHeader("content-disposition") == null || part.getHeader("content-disposition").endsWith("filename=\"\"")) && part.getSize() <= 0) {
+                return null;
+            }
+        }
+        return submittedValue;
+    }
+        
+        
+
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/FormRenderer.java b/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/FormRenderer.java
index fbbc183..8871228 100644
--- a/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/FormRenderer.java
+++ b/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/FormRenderer.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -43,6 +47,7 @@ import java.util.ListIterator;
 import java.util.Map;
 import java.util.logging.Level;
 
+import javax.faces.component.NamingContainer;
 import javax.faces.component.UIComponent;
 import javax.faces.component.UIForm;
 import javax.faces.component.UIViewRoot;
@@ -55,7 +60,6 @@ import com.sun.faces.config.WebConfiguration.BooleanWebContextInitParameter;
 import com.sun.faces.renderkit.Attribute;
 import com.sun.faces.renderkit.AttributeManager;
 import com.sun.faces.renderkit.RenderKitUtils;
-import javax.faces.render.Renderer;
 
 /** <B>FormRenderer</B> is a class that renders a <code>UIForm<code> as a Form. */
 
@@ -64,8 +68,12 @@ public class FormRenderer extends HtmlBasicRenderer {
     private static final Attribute[] ATTRIBUTES =
           AttributeManager.getAttributes(AttributeManager.Key.FORMFORM);
 
-    private boolean writeStateAtEnd;
+    /**
+     * Flag determining whether or not javax.faces.ViewState should be namespaced.
+     */
+    protected transient boolean namespaceParameters;
 
+    private boolean writeStateAtEnd;
 
     // ------------------------------------------------------------ Constructors
 
@@ -75,7 +83,9 @@ public class FormRenderer extends HtmlBasicRenderer {
         writeStateAtEnd =
              webConfig.isOptionEnabled(
                   BooleanWebContextInitParameter.WriteStateAtFormEnd);
-
+        namespaceParameters =
+                webConfig.isOptionEnabled(
+                     BooleanWebContextInitParameter.NamespaceParameters);
     }
 
     // ---------------------------------------------------------- Public Methods
@@ -151,30 +161,39 @@ public class FormRenderer extends HtmlBasicRenderer {
 
         // this hidden field will be checked in the decode method to
         // determine if this form has been submitted.         
-        writer.startElement("input", component);
+        writer.startElement("input", null);
         writer.writeAttribute("type", "hidden", "type");
         writer.writeAttribute("name", clientId,
                               "clientId");
         writer.writeAttribute("value", clientId, "value");
         writer.endElement("input");
         writer.write('\n');
+        
+        UIViewRoot viewRoot = context.getViewRoot();
 
         // Write out special hhidden field for partial submits
-        String viewId = context.getViewRoot().getViewId();
+        String viewId = viewRoot.getViewId();
         String actionURL =
             context.getApplication().getViewHandler().getActionURL(context, viewId);
         ExternalContext externalContext = context.getExternalContext();
         String encodedActionURL = externalContext.encodeActionURL(actionURL);
         String encodedPartialActionURL = externalContext.encodePartialActionURL(actionURL);
-        if (encodedPartialActionURL != null) {
-            if (!encodedPartialActionURL.equals(encodedActionURL)) {
-                writer.startElement("input", component);
-                writer.writeAttribute("type", "hidden", "type");
-                writer.writeAttribute("name", "javax.faces.encodedURL", null);
-                writer.writeAttribute("value", encodedPartialActionURL, "value");
-                writer.endElement("input");
-                writer.write('\n');
+        if (encodedPartialActionURL != null && 
+            (!encodedPartialActionURL.equals(encodedActionURL))) {
+            writer.startElement("input", null);
+            writer.writeAttribute("type", "hidden", "type");
+            String attributeName = "javax.faces.encodedURL";
+            
+            if (namespaceParameters && (viewRoot instanceof NamingContainer)) {
+                String namingContainerId = viewRoot.getContainerClientId(context);
+                if (namingContainerId != null) {
+                    attributeName = namingContainerId + attributeName;
+                }
             }
+            writer.writeAttribute("name", attributeName, null);
+            writer.writeAttribute("value", encodedPartialActionURL, "value");
+            writer.endElement("input");
+            writer.write('\n');
         }
 
         if (!writeStateAtEnd) {
@@ -210,6 +229,7 @@ public class FormRenderer extends HtmlBasicRenderer {
         if (writeStateAtEnd) {
             context.getApplication().getViewHandler().writeState(context);
         }
+        
         writer.writeText("\n", component, null);
         writer.endElement("form");
 
diff --git a/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/GridRenderer.java b/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/GridRenderer.java
index f2375ae..4824f8f 100644
--- a/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/GridRenderer.java
+++ b/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/GridRenderer.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/GroupRenderer.java b/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/GroupRenderer.java
index 1a8ad70..abc8f78 100644
--- a/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/GroupRenderer.java
+++ b/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/GroupRenderer.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -36,6 +40,9 @@
 
 package com.sun.faces.renderkit.html_basic;
 
+import com.sun.faces.renderkit.Attribute;
+import com.sun.faces.renderkit.AttributeManager;
+import com.sun.faces.renderkit.RenderKitUtils;
 import java.io.IOException;
 import java.util.Iterator;
 
@@ -50,6 +57,8 @@ import javax.faces.context.ResponseWriter;
  */
 public class GroupRenderer extends HtmlBasicRenderer {
 
+private static final Attribute[] ATTRIBUTES =
+          AttributeManager.getAttributes(AttributeManager.Key.PANELGROUP);
     // ---------------------------------------------------------- Public Methods
 
 
@@ -77,10 +86,14 @@ public class GroupRenderer extends HtmlBasicRenderer {
             if (styleClass != null) {
                 writer.writeAttribute("class", styleClass, "styleClass");
             }
-            if (style != null) {
-                writer.writeAttribute("style", style, "style");
-            }
+            // JAVASERVERFACES-3270: do not manually render "style" as it is handled
+            // in renderPassThruAttributes().
         }
+        
+        RenderKitUtils.renderPassThruAttributes(context,
+                                                writer,
+                                                component,
+                                                ATTRIBUTES);
 
     }
 
diff --git a/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/HeadRenderer.java b/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/HeadRenderer.java
index 384a211..af75415 100644
--- a/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/HeadRenderer.java
+++ b/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/HeadRenderer.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -36,6 +40,8 @@
 
 package com.sun.faces.renderkit.html_basic;
 
+import com.sun.faces.config.FaceletsConfiguration;
+import com.sun.faces.config.WebConfiguration;
 import com.sun.faces.renderkit.RenderKitUtils;
 import com.sun.faces.renderkit.Attribute;
 import com.sun.faces.renderkit.AttributeManager;
@@ -73,7 +79,12 @@ public class HeadRenderer extends Renderer {
                                                 writer,
                                                 component,
                                                 HEAD_ATTRIBUTES);
-        encodeHeadResources(context);
+        WebConfiguration webConfig = WebConfiguration.getInstance(context.getExternalContext());
+        FaceletsConfiguration faceletsConfig = webConfig.getFaceletsConfiguration();
+        if (faceletsConfig.isOutputHtml5Doctype(context.getViewRoot().getViewId())) {
+            String clientId = component.getClientId(context);
+            writer.writeAttribute("id", clientId, "clientId");
+        }
     }
 
     @Override
@@ -86,6 +97,7 @@ public class HeadRenderer extends Renderer {
     public void encodeEnd(FacesContext context, UIComponent component)
           throws IOException {
         ResponseWriter writer = context.getResponseWriter();
+        encodeHeadResources(context);
         writer.endElement("head");
     }
 
diff --git a/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/HiddenRenderer.java b/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/HiddenRenderer.java
index 2e8f84f..d622e53 100644
--- a/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/HiddenRenderer.java
+++ b/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/HiddenRenderer.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/HtmlBasicInputRenderer.java b/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/HtmlBasicInputRenderer.java
index b217907..1a464ad 100644
--- a/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/HtmlBasicInputRenderer.java
+++ b/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/HtmlBasicInputRenderer.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/HtmlBasicRenderer.java b/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/HtmlBasicRenderer.java
index 48e0288..9c15469 100644
--- a/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/HtmlBasicRenderer.java
+++ b/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/HtmlBasicRenderer.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -203,7 +207,7 @@ public abstract class HtmlBasicRenderer extends Renderer {
         if (null != behaviorEvent) {
             List<ClientBehavior> behaviorsForEvent = behaviors.get(behaviorEvent);
 
-            if (behaviors.size() > 0) {
+            if (behaviorsForEvent != null && behaviorsForEvent.size() > 0) {
                String behaviorSource = params.get("javax.faces.source");
                String clientId = component.getClientId();
                if (isBehaviorSource(context, behaviorSource, clientId)) {
@@ -440,7 +444,9 @@ public abstract class HtmlBasicRenderer extends Renderer {
                       findUIComponentBelow(context.getViewRoot(), forComponent);
             }
         } catch (Exception e) {
-            // ignore - log the warning
+            if (logger.isLoggable(Level.FINEST)) {
+                logger.log(Level.FINEST, "Unable to find for component", e);
+            }
         }
         // log a message if we were unable to find the specified
         // component (probably a misconfigured 'for' attribute
diff --git a/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/HtmlResponseWriter.java b/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/HtmlResponseWriter.java
index d839511..66b5106 100644
--- a/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/HtmlResponseWriter.java
+++ b/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/HtmlResponseWriter.java
@@ -1,1225 +1,1400 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package com.sun.faces.renderkit.html_basic;
-
-import java.io.IOException;
-import java.io.Writer;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import javax.faces.FacesException;
-import javax.faces.component.UIComponent;
-import javax.faces.context.FacesContext;
-import javax.faces.context.ResponseWriter;
-
-import com.sun.faces.RIConstants;
-import com.sun.faces.config.WebConfiguration;
-import com.sun.faces.config.WebConfiguration.BooleanWebContextInitParameter;
-import com.sun.faces.io.FastStringWriter;
-import com.sun.faces.util.HtmlUtils;
-import com.sun.faces.util.MessageUtils;
-import javax.faces.context.ExternalContext;
-
-
-/**
- * <p><strong>HtmlResponseWriter</strong> is an Html specific implementation
- * of the <code>ResponseWriter</code> abstract class.
- * Kudos to Adam Winer (Oracle) for much of this code.
- */
-public class HtmlResponseWriter extends ResponseWriter {
-
-
-    // Content Type for this Writer.
-    //
-    private String contentType = "text/html";
-
-    // Character encoding of that Writer - this may be null
-    // if the encoding isn't known.
-    //
-    private String encoding = null;
-
-    // Writer to use for output;
-    //
-    private Writer writer = null;
-
-    // True when we need to close a start tag
-    //
-    private boolean closeStart;
-
-    // Configuration flag regarding disableUnicodeEscaping
-    //
-    private WebConfiguration.DisableUnicodeEscaping disableUnicodeEscaping;
-
-    //Flag to escape Unicode
-    //
-    private boolean escapeUnicode;
-
-    // Flag to escape ISO-8859-1 codes
-    //
-    private boolean escapeIso;
-
-    // True when we shouldn't be escaping output (basically,
-    // inside of <script> and <style> elements).   Note
-    // that this will *not* be set for CDATA blocks - that's
-    // instead the writingCdata flag
-    //
-    private boolean dontEscape;
-
-    // flag to indicate we're writing a CDATA section
-    private boolean writingCdata;
-
-    // flat to indicate the current element is CDATA
-    private boolean isCdata;
-
-    // flag to indicate that we're writing a 'script' or 'style' element
-    private boolean isScript;
-
-    // flag to indicate that we're writing a 'style' element
-    private boolean isStyle;
-
-    // flag to indicate that we're writing a 'src' attribute as part of
-    // 'script' or 'style' element
-    private boolean scriptOrStyleSrc;
-
-    // flag to indicate if this is a partial response
-    private boolean isPartial;
-
-    // flag to indicate if the content type is XHTML
-    private boolean isXhtml;
-
-    // HtmlResponseWriter to use when buffering is required
-    private Writer origWriter;
-
-    // Keep one instance of the script buffer per Writer
-    private FastStringWriter scriptBuffer;
-
-    // Keep one instance of attributesBuffer to buffer the writing
-    // of all attributes for a particular element to reduce the number
-    // of writes
-    private FastStringWriter attributesBuffer;
-    
-    // Enables hiding of inlined script and style
-    // elements from old browsers
-    private Boolean isScriptHidingEnabled;
-
-    // Enables scripts to be included in attribute values
-    private Boolean isScriptInAttributeValueEnabled;
-
-    // Internal buffer used when outputting properly escaped information
-    // using HtmlUtils class.
-    //
-    private char[] buffer = new char[1028];
-
-    // Internal buffer used when outputting properly escaped CData information.
-    //
-    private final static int cdataBufferSize = 1024;
-    private char[] cdataBuffer = new char[cdataBufferSize];
-    private int cdataBufferLength = 0;
-    // Secondary cdata buffer, used for writeText
-    private final static int cdataTextBufferSize = 128;
-    private char[] cdataTextBuffer = new char[cdataTextBufferSize];
-
-    // Internal buffer for to store the result of String.getChars() for
-    // values passed to the writer as String to reduce the overhead
-    // of String.charAt().  This buffer will be grown, if necessary, to
-    // accomodate larger values.
-    private char[] textBuffer = new char[128];
-
-    private char[] charHolder = new char[1];
-
-
-    private static final String BREAKCDATA = "]]><![CDATA[";
-    private static final char[] ESCAPEDSINGLEBRACKET = ("]"+BREAKCDATA).toCharArray();
-    private static final char[] ESCAPEDLT= ("<"+BREAKCDATA).toCharArray();
-    private static final char[] ESCAPEDSTART= ("<"+BREAKCDATA+"![").toCharArray();
-    private static final char[] ESCAPEDEND= ("]"+BREAKCDATA+"]>").toCharArray();
-
-    private static final int CLOSEBRACKET = (int)']';
-    private static final int LT = (int)'<';
-
-    static final Pattern CDATA_START_SLASH_SLASH;
-
-    static final Pattern CDATA_END_SLASH_SLASH;
-
-    static final Pattern CDATA_START_SLASH_STAR;
-
-    static final Pattern CDATA_END_SLASH_STAR;
-
-    static {
-        // At the beginning of a line, match // followed by any amount of
-        // whitespace, followed by <![CDATA[
-        CDATA_START_SLASH_SLASH = Pattern.compile("^//\\s*\\Q<![CDATA[\\E");
-
-        // At the end of a line, match // followed by any amout of whitespace,
-        // followed by ]]>
-        CDATA_END_SLASH_SLASH = Pattern.compile("//\\s*\\Q]]>\\E$");
-
-        // At the beginning of a line, match /* followed by any amout of
-        // whitespace, followed by <![CDATA[, followed by any amount of whitespace,
-        // followed by */
-        CDATA_START_SLASH_STAR = Pattern.compile("^/\\*\\s*\\Q<![CDATA[\\E\\s*\\*/");
-
-        // At the end of a line, match /* followed by any amount of whitespace,
-        // followed by ]]> followed by any amount of whitespace, followed by */
-        CDATA_END_SLASH_STAR = Pattern.compile("/\\*\\s*\\Q]]>\\E\\s*\\*/$");
-
-    }
-
-    // ------------------------------------------------------------ Constructors
-
-
-    /**
-     * Constructor sets the <code>ResponseWriter</code> and
-     * encoding, and enables script hiding by default.
-     *
-     * @param writer      the <code>ResponseWriter</code>
-     * @param contentType the content type.
-     * @param encoding    the character encoding.
-     *
-     * @throws javax.faces.FacesException the encoding is not recognized.
-     */
-    public HtmlResponseWriter(Writer writer,
-                              String contentType,
-                              String encoding)
-    throws FacesException {
-        this(writer, contentType, encoding, null, null, null, false);
-    }
-
-    /**
-     * <p>Constructor sets the <code>ResponseWriter</code> and
-     * encoding.</p>
-     *
-     * <p>The argument configPrefs is a map of configurable prefs that affect
-     * this instance's behavior.  Supported keys are:</p>
-     *
-     * <p>BooleanWebContextInitParameter.EnableJSStyleHiding: <code>true</code>
-     * if the writer should attempt to hide JS from older browsers</p>
-     *
-     * @param writer      the <code>ResponseWriter</code>
-     * @param contentType the content type.
-     * @param encoding    the character encoding.
-     *
-     * @throws javax.faces.FacesException the encoding is not recognized.
-     */
-    public HtmlResponseWriter(Writer writer,
-                              String contentType,
-                              String encoding,
-                              Boolean isScriptHidingEnabled,
-                              Boolean isScriptInAttributeValueEnabled,
-                              WebConfiguration.DisableUnicodeEscaping disableUnicodeEscaping,
-                              boolean isPartial)
-    throws FacesException {
-
-        this.writer = writer;
-
-        if (null != contentType) {
-            this.contentType = contentType;
-        }
-
-        this.encoding = encoding;
-
-        // init those configuration parameters not yet initialized
-        WebConfiguration webConfig = null;
-        if (isScriptHidingEnabled == null) {
-            webConfig = getWebConfiguration(webConfig);
-            isScriptHidingEnabled = (null == webConfig) ? BooleanWebContextInitParameter.EnableJSStyleHiding.getDefaultValue() :
-                                webConfig.isOptionEnabled(
-                                BooleanWebContextInitParameter.EnableJSStyleHiding);
-        }
-
-        if (isScriptInAttributeValueEnabled == null) {
-            webConfig = getWebConfiguration(webConfig);
-            isScriptInAttributeValueEnabled = (null == webConfig) ? BooleanWebContextInitParameter.EnableScriptInAttributeValue.getDefaultValue() :
-                             webConfig.isOptionEnabled(
-                             BooleanWebContextInitParameter.EnableScriptInAttributeValue);
-        }
-
-        if (disableUnicodeEscaping == null) {
-            webConfig = getWebConfiguration(webConfig);
-            disableUnicodeEscaping =
-                    WebConfiguration.DisableUnicodeEscaping.getByValue(
-                        (null == webConfig) ? WebConfiguration.WebContextInitParameter.DisableUnicodeEscaping.getDefaultValue() :
-                                webConfig.getOptionValue(
-                                 WebConfiguration.WebContextInitParameter.DisableUnicodeEscaping));
-            if (disableUnicodeEscaping == null) {
-                disableUnicodeEscaping = WebConfiguration.DisableUnicodeEscaping.False;
-            }
-        }
-
-        // and store them for later use
-        this.isPartial = isPartial;
-        this.isScriptHidingEnabled = isScriptHidingEnabled;
-        this.isScriptInAttributeValueEnabled = isScriptInAttributeValueEnabled;
-        this.disableUnicodeEscaping = disableUnicodeEscaping;
-
-        this.attributesBuffer = new FastStringWriter(128);
-
-        // Check the character encoding
-        if (!HtmlUtils.validateEncoding(encoding)) {
-            throw new IllegalArgumentException(MessageUtils.getExceptionMessageString(
-                  MessageUtils.ENCODING_ERROR_MESSAGE_ID));
-        }
-
-        String charsetName = encoding.toUpperCase();
-
-        switch (disableUnicodeEscaping)
-        {
-            case True:
-                // html escape noting (except the dangerous characters like "<>'" etc
-                escapeUnicode = false;
-                escapeIso = false;
-                break;
-            case False:
-                // html escape any non-ascii character
-                escapeUnicode = true;
-                escapeIso = true;
-                break;
-            case Auto:
-                // is stream capable of rendering unicode, do not escape
-                escapeUnicode = !HtmlUtils.isUTFencoding(charsetName);
-                // is stream capable of rendering unicode or iso-8859-1, do not escape
-                escapeIso = !HtmlUtils.isISO8859_1encoding(charsetName) && !HtmlUtils.isUTFencoding(charsetName);
-                break;
-        }
-    }
-
-    private WebConfiguration getWebConfiguration(WebConfiguration webConfig) {
-        if (webConfig != null)
-        {
-            return webConfig;
-        }
-
-        FacesContext context = FacesContext.getCurrentInstance();
-        if (null != context) {
-            ExternalContext extContext = context.getExternalContext();
-            if (null != extContext) {
-                webConfig = WebConfiguration.getInstance(extContext);
-            }
-        }
-        return webConfig;
-    }
-
-    // -------------------------------------------------- Methods From Closeable
-
-
-    /** Methods From <code>java.io.Writer</code> */
-
-    public void close() throws IOException {
-
-        closeStartIfNecessary();
-        writer.close();
-
-    }
-
-    // -------------------------------------------------- Methods From Flushable
-
-
-    /**
-     * Flush any buffered output to the contained writer.
-     *
-     * @throws IOException if an input/output error occurs.
-     */
-    public void flush() throws IOException {
-
-        // NOTE: Internal buffer's contents (the ivar "buffer") is
-        // written to the contained writer in the HtmlUtils class - see
-        // HtmlUtils.flushBuffer method; Buffering is done during
-        // writeAttribute/writeText - otherwise, output is written
-        // directly to the writer (ex: writer.write(....)..
-        //
-        // close any previously started element, if necessary
-        closeStartIfNecessary();
-
-    }
-
-    // ---------------------------------------------------------- Public Methods
-
-
-    /** @return the content type such as "text/html" for this ResponseWriter. */
-    public String getContentType() {
-
-        return contentType;
-
-    }
-
-
-    /**
-     * <p>Create a new instance of this <code>ResponseWriter</code> using
-     * a different <code>Writer</code>.
-     *
-     * @param writer The <code>Writer</code> that will be used to create
-     *               another <code>ResponseWriter</code>.
-     */
-    public ResponseWriter cloneWithWriter(Writer writer) {
-
-        try {
-            return new HtmlResponseWriter(writer,
-                                          getContentType(),
-                                          getCharacterEncoding(),
-                                          isScriptHidingEnabled,
-                                          isScriptInAttributeValueEnabled,
-                                          disableUnicodeEscaping,
-                                          isPartial);
-        } catch (FacesException e) {
-            // This should never happen
-            throw new IllegalStateException();
-        }
-
-    }
-
-
-    /** Output the text for the end of a document. */
-    public void endDocument() throws IOException {
-
-        writer.flush();
-
-    }
-
-
-    /**
-     * <p>Write the end of an element. This method will first
-     * close any open element created by a call to
-     * <code>startElement()</code>.
-     *
-     * @param name Name of the element to be ended
-     *
-     * @throws IOException          if an input/output error occurs
-     * @throws NullPointerException if <code>name</code>
-     *                              is <code>null</code>
-     */
-    public void endElement(String name) throws IOException {
-
-        if (name == null) {
-            throw new NullPointerException(MessageUtils.getExceptionMessageString(
-                  MessageUtils.NULL_PARAMETERS_ERROR_MESSAGE_ID, "name"));
-        }
-
-        // always turn escaping back on once an element ends
-        dontEscape = false;
-
-        isXhtml = getContentType().equals(
-            RIConstants.XHTML_CONTENT_TYPE);
-
-        if (isScriptOrStyle(name)
-             && !scriptOrStyleSrc
-             && writer instanceof FastStringWriter) {
-            String result = ((FastStringWriter) writer).getBuffer().toString();
-            writer = origWriter;
-
-            if (result != null) {
-                String trim = result.trim();
-                if (isXhtml) {
-                    if (isScript) {
-                        Matcher
-                            cdataStartSlashSlash =
-                              CDATA_START_SLASH_SLASH.matcher(trim),
-                            cdataEndSlashSlash =
-                              CDATA_END_SLASH_SLASH.matcher(trim),
-                            cdataStartSlashStar =
-                              CDATA_START_SLASH_STAR.matcher(trim),
-                            cdataEndSlashStar =
-                              CDATA_END_SLASH_STAR.matcher(trim);
-                        int trimLen = trim.length(), start, end;
-                        // case 1 start is // end is //
-                        if (cdataStartSlashSlash.find() &&
-                            cdataEndSlashSlash.find()) {
-                            start = cdataStartSlashSlash.end() - cdataStartSlashSlash.start();
-                            end = trimLen - (cdataEndSlashSlash.end() - cdataEndSlashSlash.start());
-                            writer.write(trim.substring(start, end));
-                        }
-                        // case 2 start is // end is /* */
-                        else if ((null != cdataStartSlashSlash.reset() && cdataStartSlashSlash.find()) &&
-                                 cdataEndSlashStar.find()) {
-                            start = cdataStartSlashSlash.end() - cdataStartSlashSlash.start();
-                            end = trimLen - (cdataEndSlashStar.end() - cdataEndSlashStar.start());
-                            writer.write(trim.substring(start, end));
-                        }
-                        // case 3 start is /* */ end is /* */
-                        else if (cdataStartSlashStar.find() &&
-                                 (null != cdataEndSlashStar.reset() && cdataEndSlashStar.find())) {
-                            start = cdataStartSlashStar.end() - cdataStartSlashStar.start();
-                            end = trimLen - (cdataEndSlashStar.end() - cdataEndSlashStar.start());
-                            writer.write(trim.substring(start, end));
-                        }
-                        // case 4 start is /* */ end is //
-                        else if ((null != cdataStartSlashStar.reset() && cdataStartSlashStar.find()) &&
-                                 (null != cdataEndSlashStar.reset() && cdataEndSlashSlash.find())) {
-                            start = cdataStartSlashStar.end() - cdataStartSlashStar.start();
-                            end = trimLen - (cdataEndSlashSlash.end() - cdataEndSlashSlash.start());
-                            writer.write(trim.substring(start, end));
-                        }
-                        // case 5 no commented out cdata present.
-                        else {
-                            writer.write(result);
-                        }
-                    } else {
-                        if (trim.startsWith("<![CDATA[") && trim.endsWith("]]>")) {
-                            writer.write(trim.substring(9, trim.length() - 3));
-                        } else {
-                            writer.write(result);
-                        }
-                    }
-                } else {
-                    if (trim.startsWith("<!--") && trim.endsWith("//-->")) {
-                        writer.write(trim.substring(4, trim.length() - 5));
-                    } else {
-                        writer.write(result);
-                    }
-                }
-            }
-            if (isXhtml) {
-                if (!writingCdata) {
-                    if (isScript) {
-                        writer.write("\n//]]>\n");
-                    } else {
-                        writer.write("\n]]>\n");
-                    }
-                }
-            } else {
-                if (isScriptHidingEnabled) {
-                    writer.write("\n//-->\n");
-                }
-            }
-        }
-        isScript = false;
-        isStyle = false;
-        if ("cdata".equalsIgnoreCase(name)) {
-            endCDATA();
-            return;
-        }
-        // See if we need to close the start of the last element
-        if (closeStart) {
-            boolean isEmptyElement = HtmlUtils.isEmptyElement(name);
-
-            // Tricky: we need to use the writer ivar here, rather than the
-            // one from the FacesContext because we don't want
-            // spurious /> characters to appear in the output.
-            if (isEmptyElement) {
-                flushAttributes();
-                writer.write(" />");
-                closeStart = false;
-                return;
-            }
-            flushAttributes();
-            writer.write('>');
-            closeStart = false;
-        }
-
-        writer.write("</");
-        writer.write(name);
-        writer.write('>');
-
-    }
-
-
-    /**
-     * @return the character encoding, such as "ISO-8859-1" for this
-     *         ResponseWriter.  Refer to:
-     *         <a href="http://www.iana.org/assignments/character-sets">theIANA</a>
-     *         for a list of character encodings.
-     */
-    public String getCharacterEncoding() {
-
-        return encoding;
-
-    }
-
-
-    /**
-     * <p>Write the text that should begin a response.</p>
-     *
-     * @throws IOException if an input/output error occurs
-     */
-    public void startDocument() throws IOException {
-
-        // do nothing;
-
-    }
-
-
-    /**
-     * <p>Write the start of an element, up to and including the
-     * element name.  Clients call <code>writeAttribute()</code> or
-     * <code>writeURIAttribute()</code> methods to add attributes after
-     * calling this method.
-     *
-     * @param name                Name of the starting element
-     * @param componentForElement The UIComponent instance that applies to this
-     *                            element.  This argument may be <code>null</code>.
-     *
-     * @throws IOException          if an input/output error occurs
-     * @throws NullPointerException if <code>name</code>
-     *                              is <code>null</code>
-     */
-    public void startElement(String name, UIComponent componentForElement)
-          throws IOException {
-
-        if (name == null) {
-            throw new NullPointerException(MessageUtils.getExceptionMessageString(
-                  MessageUtils.NULL_PARAMETERS_ERROR_MESSAGE_ID, "name"));
-        }
-        closeStartIfNecessary();
-        isScriptOrStyle(name);
-        scriptOrStyleSrc = false;
-        if ("cdata".equalsIgnoreCase(name)) {
-            isCdata = true;
-            startCDATA();
-            return;
-        } else if (writingCdata) {
-            // starting an element within a cdata section,
-            // keep escaping disabled
-            isCdata = false;
-            writingCdata = true;
-        }
-
-        writer.write('<');
-        writer.write(name);
-        closeStart = true;
-
-    }
-
-
-    /**
-     * Starts a CDATA block.  Nested blocks are not allowed.
-     *
-     * @since 2.0
-     * @throws IOException on a read/write error
-     * @throws IllegalStateException If startCDATA is called a second time before endCDATA.
-     */
-    // RELEASE_PENDING_2_1 edburns, rogerk - need to expand on this description.
-    public void startCDATA() throws IOException {
-        if (writingCdata) {
-            throw new IllegalStateException("CDATA tags may not nest");
-        }
-        closeStartIfNecessary();        
-        writingCdata = true;
-        writer.write("<![CDATA[");
-        closeStart = false;
-    }
-
-    /**
-     * Closes the CDATA block.
-     *
-     * @since 2.0
-     * @throws IOException
-     */
-    // RELEASE_PENDING_2_1 edburns, rogerk - need to expand on this description.
-    public void endCDATA() throws IOException {
-        closeStartIfNecessary();
-        writer.write("]]>");
-        writingCdata = false;
-    }
-
-    @Override
-    public void write(char[] cbuf) throws IOException {
-        closeStartIfNecessary();
-        writer.write(cbuf);
-    }
-
-    @Override
-    public void write(int c) throws IOException {
-        closeStartIfNecessary();
-        writer.write(c);
-    }
-
-    @Override
-    public void write(String str) throws IOException {
-        closeStartIfNecessary();
-        writer.write(str);
-    }
-
-    @Override
-    public void write(char[] cbuf, int off, int len) throws IOException {
-        closeStartIfNecessary();
-        writer.write(cbuf, off, len);
-    }
-
-    @Override
-    public void write(String str, int off, int len) throws IOException {
-        closeStartIfNecessary();
-        writer.write(str, off, len);
-    }
-
-
-    /**
-     * <p>Write a properly escaped attribute name and the corresponding
-     * value.  The value text will be converted to a String if
-     * necessary.  This method may only be called after a call to
-     * <code>startElement()</code>, and before the opened element has been
-     * closed.</p>
-     *
-     * @param name                  Attribute name to be added
-     * @param value                 Attribute value to be added
-     * @param componentPropertyName The name of the component property to
-     *                              which this attribute argument applies.  This argument may be
-     *                              <code>null</code>.
-     *
-     * @throws IllegalStateException if this method is called when there
-     *                               is no currently open element
-     * @throws IOException           if an input/output error occurs
-     * @throws NullPointerException  if <code>name</code> is <code>null</code>
-     */
-    public void writeAttribute(String name, Object value,
-                               String componentPropertyName)
-          throws IOException {
-
-        if (name == null) {
-            throw new NullPointerException(MessageUtils.getExceptionMessageString(
-                  MessageUtils.NULL_PARAMETERS_ERROR_MESSAGE_ID, "name"));
-        }
-        if (value == null) {
-            return;
-        }
-
-        if (isCdata) {
-            return;
-        }
-
-        if (name.equalsIgnoreCase("src") && isScriptOrStyle()) {
-            scriptOrStyleSrc = true;
-        }
-
-        Class valueClass = value.getClass();
-
-        // Output Boolean values specially
-        if (valueClass == Boolean.class) {
-            if (Boolean.TRUE.equals(value)) {
-                // NOTE:  HTML 4.01 states that boolean attributes
-                //        may legally take a single value which is the
-                //        name of the attribute itself or appear using
-                //        minimization.
-                //  http://www.w3.org/TR/html401/intro/sgmltut.html#h-3.3.4.2
-                attributesBuffer.write(' ');
-                attributesBuffer.write(name);
-                attributesBuffer.write("=\"");
-                attributesBuffer.write(name);
-                attributesBuffer.write('"');
-            }
-        } else {
-            attributesBuffer.write(' ');
-            attributesBuffer.write(name);
-            attributesBuffer.write("=\"");
-            // write the attribute value
-            String val = value.toString();
-            ensureTextBufferCapacity(val);
-            HtmlUtils.writeAttribute(attributesBuffer,
-                                     escapeUnicode,
-                                     escapeIso,
-                                     buffer,
-                                     val,
-                                     textBuffer,
-                                     isScriptInAttributeValueEnabled);
-            attributesBuffer.write('"');
-        }
-
-    }
-
-
-    /**
-     * <p>Write a comment string containing the specified text.
-     * The text will be converted to a String if necessary.
-     * If there is an open element that has been created by a call
-     * to <code>startElement()</code>, that element will be closed
-     * first.</p>
-     *
-     * @param comment Text content of the comment
-     *
-     * @throws IOException          if an input/output error occurs
-     * @throws NullPointerException if <code>comment</code>
-     *                              is <code>null</code>
-     */
-    public void writeComment(Object comment) throws IOException {
-
-        if (comment == null) {
-            throw new NullPointerException(MessageUtils.getExceptionMessageString(
-                  MessageUtils.NULL_PARAMETERS_ERROR_MESSAGE_ID));
-        }
-
-        if (writingCdata) {
-            return;
-        }
-
-        closeStartIfNecessary();
-        // Don't include a trailing space after the '<!--'
-        // or a leading space before the '-->' to support
-        // IE conditional commentsoth
-        writer.write("<!--");
-        writer.write(comment.toString());
-        writer.write("-->");
-
-    }
-
-
-    /**
-     * <p>Write a properly escaped single character, If there
-     * is an open element that has been created by a call to
-     * <code>startElement()</code>, that element will be closed first.</p>
-     * <p/>
-     * <p>All angle bracket occurrences in the argument must be escaped
-     * using the &gt; &lt; syntax.</p>
-     *
-     * @param text Text to be written
-     *
-     * @throws IOException if an input/output error occurs
-     */
-    public void writeText(char text) throws IOException {
-
-        closeStartIfNecessary();
-        if (dontEscape) {
-            writer.write(text);
-        } else if (isPartial || !writingCdata) {
-            charHolder[0] = text;
-            HtmlUtils.writeText(writer, escapeUnicode, escapeIso, buffer, charHolder);
-        } else {  // if writingCdata
-            assert writingCdata;
-            charHolder[0] = text;
-            writeEscaped(charHolder, 0, 1);
-        }
-
-    }
-
-
-    /**
-     * <p>Write properly escaped text from a character array.
-     * The output from this command is identical to the invocation:
-     * <code>writeText(c, 0, c.length)</code>.
-     * If there is an open element that has been created by a call to
-     * <code>startElement()</code>, that element will be closed first.</p>
-     * </p>
-     * <p/>
-     * <p>All angle bracket occurrences in the argument must be escaped
-     * using the &gt; &lt; syntax.</p>
-     *
-     * @param text Text to be written
-     *
-     * @throws IOException          if an input/output error occurs
-     * @throws NullPointerException if <code>text</code>
-     *                              is <code>null</code>
-     */
-    public void writeText(char text[]) throws IOException {
-
-        if (text == null) {
-            throw new NullPointerException(MessageUtils.getExceptionMessageString(
-                  MessageUtils.NULL_PARAMETERS_ERROR_MESSAGE_ID, "text"));
-        }
-        closeStartIfNecessary();
-
-        if (dontEscape) {
-            writer.write(text);
-        } else if (isPartial || !writingCdata) {
-            HtmlUtils.writeText(writer, escapeUnicode, escapeIso, buffer, text);
-        } else { // if writingCdata
-            assert writingCdata;
-            writeEscaped(text, 0, text.length);
-        }
-
-    }
-
-
-    /**
-     * <p>Write a properly escaped object. The object will be converted
-     * to a String if necessary.  If there is an open element
-     * that has been created by a call to <code>startElement()</code>,
-     * that element will be closed first.</p>
-     *
-     * @param text                  Text to be written
-     * @param componentPropertyName The name of the component property to
-     *                              which this text argument applies.  This argument may be <code>null</code>.
-     *
-     * @throws IOException          if an input/output error occurs
-     * @throws NullPointerException if <code>text</code>
-     *                              is <code>null</code>
-     */
-    public void writeText(Object text, String componentPropertyName)
-          throws IOException {
-
-        if (text == null) {
-            throw new NullPointerException(MessageUtils.getExceptionMessageString(
-                  MessageUtils.NULL_PARAMETERS_ERROR_MESSAGE_ID, "text"));
-        }
-        closeStartIfNecessary();
-        String textStr = text.toString();
-
-        if (dontEscape) {
-            writer.write(textStr);
-        } else if (isPartial || !writingCdata) {
-            ensureTextBufferCapacity(textStr);
-            HtmlUtils.writeText(writer,
-                                escapeUnicode,
-                                escapeIso,
-                                buffer,
-                                textStr,
-                                textBuffer);
-        } else { // if writingCdata
-            assert writingCdata;
-            int textLen = textStr.length();
-            if (textLen > cdataTextBufferSize) {
-                writeEscaped(textStr.toCharArray(), 0, textLen);
-            } else if (textLen >= 16) { // >16, < cdataTextBufferSize
-                textStr.getChars(0, textLen, cdataTextBuffer, 0);
-                writeEscaped(cdataTextBuffer, 0, textLen);
-            } else { // <16
-                for (int i=0; i < textLen;  i++)  {
-                    cdataTextBuffer[i] = textStr.charAt(i);
-                }
-                writeEscaped(cdataTextBuffer, 0, textLen);
-            }
-        }
-    }
-
-
-    /**
-     * <p>Write properly escaped text from a character array.
-     * If there is an open element that has been created by a call
-     * to <code>startElement()</code>, that element will be closed
-     * first.</p>
-     * <p/>
-     * <p>All angle bracket occurrences in the argument must be escaped
-     * using the &gt; &lt; syntax.</p>
-     *
-     * @param text Text to be written
-     * @param off  Starting offset (zero-relative)
-     * @param len  Number of characters to be written
-     *
-     * @throws IndexOutOfBoundsException if the calculated starting or
-     *                                   ending position is outside the bounds of the character array
-     * @throws IOException               if an input/output error occurs
-     * @throws NullPointerException      if <code>text</code>
-     *                                   is <code>null</code>
-     */
-    public void writeText(char text[], int off, int len)
-          throws IOException {
-
-        if (text == null) {
-            throw new NullPointerException(MessageUtils.getExceptionMessageString(
-                  MessageUtils.NULL_PARAMETERS_ERROR_MESSAGE_ID, "text"));
-        }
-        if (off < 0 || off > text.length || len < 0 || len > text.length) {
-            throw new IndexOutOfBoundsException();
-        }
-        closeStartIfNecessary();
-
-        // optimize away zero length write, called by Facelets to close tags
-        if (len == 0) return;
-
-        if (dontEscape) {
-            writer.write(text, off, len);
-        } else if (isPartial || !writingCdata) {
-            HtmlUtils.writeText(writer, escapeUnicode, escapeIso, buffer, text, off, len);
-        } else { // if (writingCdata)
-            assert writingCdata;
-            writeEscaped(text, off, len);
-        }
-
-    }
-
-
-    /**
-     * <p>Write a properly encoded URI attribute name and the corresponding
-     * value. The value text will be converted to a String if necessary).
-     * This method may only be called after a call to
-     * <code>startElement()</code>, and before the opened element has been
-     * closed.</p>
-     *
-     * @param name                  Attribute name to be added
-     * @param value                 Attribute value to be added
-     * @param componentPropertyName The name of the component property to
-     *                              which this attribute argument applies.  This argument may be
-     *                              <code>null</code>.
-     *
-     * @throws IllegalStateException if this method is called when there
-     *                               is no currently open element
-     * @throws IOException           if an input/output error occurs
-     * @throws NullPointerException  if <code>name</code> or
-     *                               <code>value</code> is <code>null</code>
-     */
-    public void writeURIAttribute(String name, Object value,
-                                  String componentPropertyName)
-          throws IOException {
-
-        if (name == null) {
-            throw new NullPointerException(MessageUtils.getExceptionMessageString(
-                  MessageUtils.NULL_PARAMETERS_ERROR_MESSAGE_ID, "name"));
-        }
-        if (value == null) {
-            throw new NullPointerException(MessageUtils.getExceptionMessageString(
-                  MessageUtils.NULL_PARAMETERS_ERROR_MESSAGE_ID, "value"));
-        }
-
-        if (isCdata) {
-            return;
-        }
-
-        if (name.equalsIgnoreCase("src") && isScriptOrStyle()) {
-            scriptOrStyleSrc = true;
-        }
-
-        attributesBuffer.write(' ');
-        attributesBuffer.write(name);
-        attributesBuffer.write("=\"");
-
-        String stringValue = value.toString();
-        ensureTextBufferCapacity(stringValue);
-        // Javascript URLs should not be URL-encoded
-        if (stringValue.startsWith("javascript:")) {
-            HtmlUtils.writeAttribute(attributesBuffer,
-                                     escapeUnicode,
-                                     escapeIso,
-                                     buffer,
-                                     stringValue,
-                                     textBuffer,
-                                     isScriptInAttributeValueEnabled);
-        } else {
-            HtmlUtils.writeURL(attributesBuffer,
-                               stringValue,
-                               textBuffer,
-                               encoding);
-        }
-
-        attributesBuffer.write('"');
-
-    }
-
-    // --------------------------------------------------------- Private Methods
-
-    private void ensureTextBufferCapacity(String source) {
-        int len = source.length();
-        if (textBuffer.length < len) {
-            textBuffer = new char[len * 2];
-        }
-    }
-
-    /**
-     * This method automatically closes a previous element (if not
-     * already closed).
-     * @throws IOException if an error occurs writing
-     */
-    private void closeStartIfNecessary() throws IOException {
-
-        if (closeStart) {
-            flushAttributes();
-            writer.write('>');
-            closeStart = false;
-            if (isScriptOrStyle() && !scriptOrStyleSrc) {
-                isXhtml = getContentType().equals(
-                     RIConstants.XHTML_CONTENT_TYPE);
-                if (isXhtml) {
-                    if (!writingCdata) {
-                        if (isScript) {
-                            writer.write("\n//<![CDATA[\n");
-                        } else {
-                            writer.write("\n<![CDATA[\n");
-                        }
-                    }
-                } else {
-                    if (isScriptHidingEnabled) {
-                        writer.write("\n<!--\n");
-                    }
-                }
-                origWriter = writer;
-                if (scriptBuffer == null) {
-                    scriptBuffer = new FastStringWriter(1024);
-                }
-                scriptBuffer.reset();
-                writer = scriptBuffer;
-                isScript = false;
-                isStyle = false;
-            }
-        }
-
-    }
-
-
-    private void flushAttributes() throws IOException {
-
-        // a little complex, but the end result is, potentially, two
-        // fewer temp objects created per call.
-        StringBuilder b = attributesBuffer.getBuffer();
-        int totalLength = b.length();
-        if (totalLength != 0) {
-            int curIdx = 0;
-            while (curIdx < totalLength) {
-                if ((totalLength - curIdx) > buffer.length) {
-                    int end = curIdx + buffer.length;
-                    b.getChars(curIdx, end, buffer, 0);
-                    writer.write(buffer);
-                    curIdx += buffer.length;
-                } else {
-                    int len = totalLength - curIdx;
-                    b.getChars(curIdx, curIdx + len, buffer, 0);
-                    writer.write(buffer, 0, len);
-                    curIdx += len;
-                }
-            }
-            attributesBuffer.reset();
-        }
-
-    }
-
-
-    private boolean isScriptOrStyle(String name) {
-        if ("script".equalsIgnoreCase(name)) {
-            isScript = true;
-            dontEscape = true;
-        } else if ("style".equalsIgnoreCase(name)) {
-            isStyle = true;
-            dontEscape = true;
-        } else {
-            isScript = false;
-            isStyle = false;
-            dontEscape = false;
-        }
-
-        return (isScript || isStyle);
-    }
-
-    private boolean isScriptOrStyle() {
-        return (isScript || isStyle);
-    }
-
-/*
- *  Method to escape all CDATA instances in a character array, then write to writer.
- *
- * This method looks for occurrences of "<![" and "]]>"
- */
-private void writeEscaped(char cbuf[], int offset, int length) throws IOException {
-    if (cbuf == null || cbuf.length == 0 || length == 0) {
-        return;
-    }
-
-   if (offset < 0 || length < 0 || offset + length > cbuf.length ) {
-        throw new IndexOutOfBoundsException("off < 0 || len < 0 || off + len > cbuf.length");
-   }
-
-    // Single char case
-    if (length == 1) {
-        if (cbuf[offset] == '<') {
-            appendBuffer(ESCAPEDLT);
-        } else if (cbuf[offset] == ']') {
-            appendBuffer(ESCAPEDSINGLEBRACKET);
-        } else {
-            appendBuffer(cbuf[offset]);
-        }
-        flushBuffer();
-        return;
-    }
-    // two char case
-    if (length == 2) {
-        if (cbuf[offset] == '<' && cbuf[offset + 1] == '!') {
-            appendBuffer(ESCAPEDLT);
-            appendBuffer(cbuf[offset + 1]);
-        } else if (cbuf[offset] == ']' && cbuf[offset + 1] == ']') {
-            appendBuffer(ESCAPEDSINGLEBRACKET);
-            appendBuffer(ESCAPEDSINGLEBRACKET);
-        } else {
-            appendBuffer(cbuf[offset]);
-            appendBuffer(cbuf[offset + 1]);
-        }
-        flushBuffer();
-        return;
-    }
-    // > 2 char case
-    boolean last = false;
-    for (int i = offset; i < length - 2; i++) {
-        if (cbuf[i] == '<' && cbuf[i + 1] == '!' && cbuf[i + 2] == '[') {
-            appendBuffer(ESCAPEDSTART);
-            i += 2;
-        } else if (cbuf[i] == ']' && cbuf[i + 1] == ']' && cbuf[i + 2] == '>') {
-            appendBuffer(ESCAPEDEND);
-            i += 2;
-        } else {
-            appendBuffer(cbuf[i]);
-        }
-        if (i == (offset + length - 1)) {
-            last = true;
-        }
-    }
-    // if we didn't look at the last characters, look at them now
-    if (!last) {
-        if (cbuf[offset + length - 2] == '<') {
-            appendBuffer(ESCAPEDLT);
-        } else if (cbuf[offset + length - 2] == ']') {
-            appendBuffer(ESCAPEDSINGLEBRACKET);
-        } else {
-            appendBuffer(cbuf[offset + length - 2]);
-        }
-        if (cbuf[offset + length - 1] == '<') {
-            appendBuffer(ESCAPEDLT);
-        } else if (cbuf[offset + length - 1] == ']') {
-            appendBuffer(ESCAPEDSINGLEBRACKET);
-        } else {
-            appendBuffer(cbuf[offset + length - 1]);
-        }
-    }
-    flushBuffer();
-}
-
-/*
- *  append a character array to the cdatabuffer
- */
-private void appendBuffer(char[] cbuf) throws IOException {
-    if (cbuf.length + cdataBufferLength >= cdataBufferSize) {
-        flushBuffer();
-    }
-    if (cbuf.length >= cdataBufferSize) {  // bigger than the buffer, direct write
-        writer.write(cbuf);
-    }
-    System.arraycopy(cbuf, 0, cdataBuffer, cdataBufferLength, cbuf.length);
-    cdataBufferLength = cdataBufferLength + cbuf.length;
-}
-/*
- * append a character to the cdatabuffer
- */
-private void appendBuffer(char c) throws IOException {
-    if (cdataBufferLength + 1 >= cdataBufferSize) {
-        flushBuffer();
-    }
-    cdataBuffer[cdataBufferLength] = c;
-    cdataBufferLength++;
-}
-
-/*
- * flush the cdatabuffer to the writer
- */
-private void flushBuffer() throws IOException {
-    if (cdataBufferLength == 0) {
-        return;
-    }
-    writer.write(cdataBuffer, 0, cdataBufferLength);
-    cdataBufferLength = 0;
-}
-}
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.renderkit.html_basic;
+
+import java.io.IOException;
+import java.io.Writer;
+import java.util.LinkedList;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import javax.faces.FacesException;
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.context.ResponseWriter;
+
+import com.sun.faces.RIConstants;
+import com.sun.faces.config.WebConfiguration;
+import com.sun.faces.config.WebConfiguration.BooleanWebContextInitParameter;
+import com.sun.faces.io.FastStringWriter;
+import com.sun.faces.util.HtmlUtils;
+import com.sun.faces.util.MessageUtils;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+import javax.el.ValueExpression;
+import javax.faces.context.ExternalContext;
+import javax.faces.render.Renderer;
+
+
+/**
+ * <p><strong>HtmlResponseWriter</strong> is an Html specific implementation
+ * of the <code>ResponseWriter</code> abstract class.
+ * Kudos to Adam Winer (Oracle) for much of this code.
+ */
+public class HtmlResponseWriter extends ResponseWriter {
+
+
+    // Content Type for this Writer.
+    //
+    private String contentType = "text/html";
+
+    // Character encoding of that Writer - this may be null
+    // if the encoding isn't known.
+    //
+    private String encoding = null;
+
+    // Writer to use for output;
+    //
+    private Writer writer = null;
+
+    // True when we need to close a start tag
+    //
+    private boolean closeStart;
+
+    // Configuration flag regarding disableUnicodeEscaping
+    //
+    private WebConfiguration.DisableUnicodeEscaping disableUnicodeEscaping;
+
+    //Flag to escape Unicode
+    //
+    private boolean escapeUnicode;
+
+    // Flag to escape ISO-8859-1 codes
+    //
+    private boolean escapeIso;
+
+    // True when we shouldn't be escaping output (basically,
+    // inside of <script> and <style> elements).   Note
+    // that this will *not* be set for CDATA blocks - that's
+    // instead the writingCdata flag
+    //
+    private boolean dontEscape;
+
+    // flag to indicate we're writing a CDATA section
+    private boolean writingCdata;
+
+    // flat to indicate the current element is CDATA
+    private boolean isCdata;
+
+    // flag to indicate that we're writing a 'script' or 'style' element
+    private boolean isScript;
+
+    // flag to indicate that we're writing a 'style' element
+    private boolean isStyle;
+
+    // flag to indicate if we are within a script element
+    private boolean withinScript;
+
+    // flag to indicate if we are within a style element
+    private boolean withinStyle;
+
+    // flag to indicate that we're writing a 'src' attribute as part of
+    // 'script' or 'style' element
+    private boolean scriptOrStyleSrc;
+
+    // flag to indicate if this is a partial response
+    private boolean isPartial;
+
+    // flag to indicate if the content type is XHTML
+    private boolean isXhtml;
+
+    // HtmlResponseWriter to use when buffering is required
+    private Writer origWriter;
+
+    // Keep one instance of the script buffer per Writer
+    private FastStringWriter scriptBuffer;
+
+    // Keep one instance of attributesBuffer to buffer the writing
+    // of all attributes for a particular element to reduce the number
+    // of writes
+    private FastStringWriter attributesBuffer;
+    
+    // Enables hiding of inlined script and style
+    // elements from old browsers
+    private Boolean isScriptHidingEnabled;
+
+    // Enables scripts to be included in attribute values
+    private Boolean isScriptInAttributeValueEnabled;
+
+    // Internal buffer used when outputting properly escaped information
+    // using HtmlUtils class.
+    //
+    private char[] buffer = new char[1028];
+
+    // Internal buffer used when outputting properly escaped CData information.
+    //
+    private final static int cdataBufferSize = 1024;
+    private char[] cdataBuffer = new char[cdataBufferSize];
+    private int cdataBufferLength = 0;
+    // Secondary cdata buffer, used for writeText
+    private final static int cdataTextBufferSize = 128;
+    private char[] cdataTextBuffer = new char[cdataTextBufferSize];
+    
+    private Map<String, Object> passthroughAttributes;
+
+    // Internal buffer for to store the result of String.getChars() for
+    // values passed to the writer as String to reduce the overhead
+    // of String.charAt().  This buffer will be grown, if necessary, to
+    // accomodate larger values.
+    private char[] textBuffer = new char[128];
+
+    private char[] charHolder = new char[1];
+
+    private LinkedList<String> elementNames;
+
+    private static final String BREAKCDATA = "]]><![CDATA[";
+    private static final char[] ESCAPEDSINGLEBRACKET = ("]"+BREAKCDATA).toCharArray();
+    private static final char[] ESCAPEDLT= ("<"+BREAKCDATA).toCharArray();
+    private static final char[] ESCAPEDSTART= ("<"+BREAKCDATA+"![").toCharArray();
+    private static final char[] ESCAPEDEND= ("]"+BREAKCDATA+"]>").toCharArray();
+
+    private static final int CLOSEBRACKET = (int)']';
+    private static final int LT = (int)'<';
+
+    static final Pattern CDATA_START_SLASH_SLASH;
+
+    static final Pattern CDATA_END_SLASH_SLASH;
+
+    static final Pattern CDATA_START_SLASH_STAR;
+
+    static final Pattern CDATA_END_SLASH_STAR;
+
+    static {
+        // At the beginning of a line, match // followed by any amount of
+        // whitespace, followed by <![CDATA[
+        CDATA_START_SLASH_SLASH = Pattern.compile("^//\\s*\\Q<![CDATA[\\E");
+
+        // At the end of a line, match // followed by any amout of whitespace,
+        // followed by ]]>
+        CDATA_END_SLASH_SLASH = Pattern.compile("//\\s*\\Q]]>\\E$");
+
+        // At the beginning of a line, match /* followed by any amout of
+        // whitespace, followed by <![CDATA[, followed by any amount of whitespace,
+        // followed by */
+        CDATA_START_SLASH_STAR = Pattern.compile("^/\\*\\s*\\Q<![CDATA[\\E\\s*\\*/");
+
+        // At the end of a line, match /* followed by any amount of whitespace,
+        // followed by ]]> followed by any amount of whitespace, followed by */
+        CDATA_END_SLASH_STAR = Pattern.compile("/\\*\\s*\\Q]]>\\E\\s*\\*/$");
+
+    }
+
+    // ------------------------------------------------------------ Constructors
+
+
+    /**
+     * Constructor sets the <code>ResponseWriter</code> and
+     * encoding, and enables script hiding by default.
+     *
+     * @param writer      the <code>ResponseWriter</code>
+     * @param contentType the content type.
+     * @param encoding    the character encoding.
+     *
+     * @throws javax.faces.FacesException the encoding is not recognized.
+     */
+    public HtmlResponseWriter(Writer writer,
+                              String contentType,
+                              String encoding)
+    throws FacesException {
+        this(writer, contentType, encoding, null, null, null, false);
+    }
+
+    /**
+     * <p>Constructor sets the <code>ResponseWriter</code> and
+     * encoding.</p>
+     *
+     * <p>The argument configPrefs is a map of configurable prefs that affect
+     * this instance's behavior.  Supported keys are:</p>
+     *
+     * <p>BooleanWebContextInitParameter.EnableJSStyleHiding: <code>true</code>
+     * if the writer should attempt to hide JS from older browsers</p>
+     *
+     * @param writer      the <code>ResponseWriter</code>
+     * @param contentType the content type.
+     * @param encoding    the character encoding.
+     *
+     * @throws javax.faces.FacesException the encoding is not recognized.
+     */
+    public HtmlResponseWriter(Writer writer,
+                              String contentType,
+                              String encoding,
+                              Boolean isScriptHidingEnabled,
+                              Boolean isScriptInAttributeValueEnabled,
+                              WebConfiguration.DisableUnicodeEscaping disableUnicodeEscaping,
+                              boolean isPartial)
+    throws FacesException {
+
+        this.writer = writer;
+
+        if (null != contentType) {
+            this.contentType = contentType;
+        }
+
+        this.encoding = encoding;
+
+        // init those configuration parameters not yet initialized
+        WebConfiguration webConfig = null;
+        if (isScriptHidingEnabled == null) {
+            webConfig = getWebConfiguration(webConfig);
+            isScriptHidingEnabled = (null == webConfig) ? BooleanWebContextInitParameter.EnableJSStyleHiding.getDefaultValue() :
+                                webConfig.isOptionEnabled(
+                                BooleanWebContextInitParameter.EnableJSStyleHiding);
+        }
+
+        if (isScriptInAttributeValueEnabled == null) {
+            webConfig = getWebConfiguration(webConfig);
+            isScriptInAttributeValueEnabled = (null == webConfig) ? BooleanWebContextInitParameter.EnableScriptInAttributeValue.getDefaultValue() :
+                             webConfig.isOptionEnabled(
+                             BooleanWebContextInitParameter.EnableScriptInAttributeValue);
+        }
+
+        if (disableUnicodeEscaping == null) {
+            webConfig = getWebConfiguration(webConfig);
+            disableUnicodeEscaping =
+                    WebConfiguration.DisableUnicodeEscaping.getByValue(
+                        (null == webConfig) ? WebConfiguration.WebContextInitParameter.DisableUnicodeEscaping.getDefaultValue() :
+                                webConfig.getOptionValue(
+                                 WebConfiguration.WebContextInitParameter.DisableUnicodeEscaping));
+            if (disableUnicodeEscaping == null) {
+                disableUnicodeEscaping = WebConfiguration.DisableUnicodeEscaping.False;
+            }
+        }
+
+        // and store them for later use
+        this.isPartial = isPartial;
+        this.isScriptHidingEnabled = isScriptHidingEnabled;
+        this.isScriptInAttributeValueEnabled = isScriptInAttributeValueEnabled;
+        this.disableUnicodeEscaping = disableUnicodeEscaping;
+
+        this.attributesBuffer = new FastStringWriter(128);
+
+        // Check the character encoding
+        if (!HtmlUtils.validateEncoding(encoding)) {
+            throw new IllegalArgumentException(MessageUtils.getExceptionMessageString(
+                  MessageUtils.ENCODING_ERROR_MESSAGE_ID));
+        }
+
+        String charsetName = encoding.toUpperCase();
+
+        switch (disableUnicodeEscaping)
+        {
+            case True:
+                // html escape noting (except the dangerous characters like "<>'" etc
+                escapeUnicode = false;
+                escapeIso = false;
+                break;
+            case False:
+                // html escape any non-ascii character
+                escapeUnicode = true;
+                escapeIso = true;
+                break;
+            case Auto:
+                // is stream capable of rendering unicode, do not escape
+                escapeUnicode = !HtmlUtils.isUTFencoding(charsetName);
+                // is stream capable of rendering unicode or iso-8859-1, do not escape
+                escapeIso = !HtmlUtils.isISO8859_1encoding(charsetName) && !HtmlUtils.isUTFencoding(charsetName);
+                break;
+        }
+    }
+
+    private WebConfiguration getWebConfiguration(WebConfiguration webConfig) {
+        if (webConfig != null)
+        {
+            return webConfig;
+        }
+
+        FacesContext context = FacesContext.getCurrentInstance();
+        if (null != context) {
+            ExternalContext extContext = context.getExternalContext();
+            if (null != extContext) {
+                webConfig = WebConfiguration.getInstance(extContext);
+            }
+        }
+        return webConfig;
+    }
+
+    // -------------------------------------------------- Methods From Closeable
+
+
+    /** Methods From <code>java.io.Writer</code> */
+
+    public void close() throws IOException {
+
+        closeStartIfNecessary();
+        writer.close();
+
+    }
+
+    // -------------------------------------------------- Methods From Flushable
+
+
+    /**
+     * Flush any buffered output to the contained writer.
+     *
+     * @throws IOException if an input/output error occurs.
+     */
+    public void flush() throws IOException {
+
+        // NOTE: Internal buffer's contents (the ivar "buffer") is
+        // written to the contained writer in the HtmlUtils class - see
+        // HtmlUtils.flushBuffer method; Buffering is done during
+        // writeAttribute/writeText - otherwise, output is written
+        // directly to the writer (ex: writer.write(....)..
+        //
+        // close any previously started element, if necessary
+        closeStartIfNecessary();
+
+    }
+
+    // ---------------------------------------------------------- Public Methods
+
+
+    /** @return the content type such as "text/html" for this ResponseWriter. */
+    public String getContentType() {
+
+        return contentType;
+
+    }
+
+
+    /**
+     * <p>Create a new instance of this <code>ResponseWriter</code> using
+     * a different <code>Writer</code>.
+     *
+     * @param writer The <code>Writer</code> that will be used to create
+     *               another <code>ResponseWriter</code>.
+     */
+    public ResponseWriter cloneWithWriter(Writer writer) {
+
+        try {
+            HtmlResponseWriter responseWriter =  new HtmlResponseWriter(writer,
+                                          getContentType(),
+                                          getCharacterEncoding(),
+                                          isScriptHidingEnabled,
+                                          isScriptInAttributeValueEnabled,
+                                          disableUnicodeEscaping,
+                                          isPartial);
+            responseWriter.dontEscape = this.dontEscape;
+            responseWriter.writingCdata = this.writingCdata;
+            return responseWriter;
+            
+        } catch (FacesException e) {
+            // This should never happen
+            throw new IllegalStateException();
+        }
+
+    }
+
+
+    /** Output the text for the end of a document. */
+    public void endDocument() throws IOException {
+
+        writer.flush();
+
+    }
+
+
+    /**
+     * <p>Write the end of an element. This method will first
+     * close any open element created by a call to
+     * <code>startElement()</code>.
+     *
+     * @param name Name of the element to be ended
+     *
+     * @throws IOException          if an input/output error occurs
+     * @throws NullPointerException if <code>name</code>
+     *                              is <code>null</code>
+     */
+    public void endElement(String name) throws IOException {
+
+        if (name == null) {
+            throw new NullPointerException(MessageUtils.getExceptionMessageString(
+                  MessageUtils.NULL_PARAMETERS_ERROR_MESSAGE_ID, "name"));
+        }
+
+        // Keep track when we are exiting a script or style element
+        // for escaping purposes.
+
+        if ("script".equalsIgnoreCase(name)) {
+            withinScript = false;
+        }
+
+        if ("style".equalsIgnoreCase(name)) {
+            withinStyle = false;
+        }
+
+        // always turn escaping back on once an element ends
+        if (!withinScript && !withinStyle) {
+            dontEscape = false;
+        }
+
+        isXhtml = getContentType().equals(
+            RIConstants.XHTML_CONTENT_TYPE);
+
+        if (isScriptOrStyle(name)
+             && !scriptOrStyleSrc
+             && writer instanceof FastStringWriter) {
+            String result = ((FastStringWriter) writer).getBuffer().toString();
+            writer = origWriter;
+
+            if (result != null) {
+                String trim = result.trim();
+                if (isXhtml) {
+                    if (isScript) {
+                        Matcher
+                            cdataStartSlashSlash =
+                              CDATA_START_SLASH_SLASH.matcher(trim),
+                            cdataEndSlashSlash =
+                              CDATA_END_SLASH_SLASH.matcher(trim),
+                            cdataStartSlashStar =
+                              CDATA_START_SLASH_STAR.matcher(trim),
+                            cdataEndSlashStar =
+                              CDATA_END_SLASH_STAR.matcher(trim);
+                        int trimLen = trim.length(), start, end;
+                        // case 1 start is // end is //
+                        if (cdataStartSlashSlash.find() &&
+                            cdataEndSlashSlash.find()) {
+                            start = cdataStartSlashSlash.end() - cdataStartSlashSlash.start();
+                            end = trimLen - (cdataEndSlashSlash.end() - cdataEndSlashSlash.start());
+                            writer.write(trim.substring(start, end));
+                        }
+                        // case 2 start is // end is /* */
+                        else if ((null != cdataStartSlashSlash.reset() && cdataStartSlashSlash.find()) &&
+                                 cdataEndSlashStar.find()) {
+                            start = cdataStartSlashSlash.end() - cdataStartSlashSlash.start();
+                            end = trimLen - (cdataEndSlashStar.end() - cdataEndSlashStar.start());
+                            writer.write(trim.substring(start, end));
+                        }
+                        // case 3 start is /* */ end is /* */
+                        else if (cdataStartSlashStar.find() &&
+                                 (null != cdataEndSlashStar.reset() && cdataEndSlashStar.find())) {
+                            start = cdataStartSlashStar.end() - cdataStartSlashStar.start();
+                            end = trimLen - (cdataEndSlashStar.end() - cdataEndSlashStar.start());
+                            writer.write(trim.substring(start, end));
+                        }
+                        // case 4 start is /* */ end is //
+                        else if ((null != cdataStartSlashStar.reset() && cdataStartSlashStar.find()) &&
+                                 (null != cdataEndSlashStar.reset() && cdataEndSlashSlash.find())) {
+                            start = cdataStartSlashStar.end() - cdataStartSlashStar.start();
+                            end = trimLen - (cdataEndSlashSlash.end() - cdataEndSlashSlash.start());
+                            writer.write(trim.substring(start, end));
+                        }
+                        // case 5 no commented out cdata present.
+                        else {
+                            writer.write(result);
+                        }
+                    } else {
+                        if (trim.startsWith("<![CDATA[") && trim.endsWith("]]>")) {
+                            writer.write(trim.substring(9, trim.length() - 3));
+                        } else {
+                            writer.write(result);
+                        }
+                    }
+                } else {
+                    if (trim.startsWith("<!--") && trim.endsWith("//-->")) {
+                        writer.write(trim.substring(4, trim.length() - 5));
+                    } else {
+                        writer.write(result);
+                    }
+                }
+            }
+            if (isXhtml) {
+                if (!writingCdata) {
+                    if (isScript) {
+                        writer.write("\n//]]>\n");
+                    } else {
+                        writer.write("\n]]>\n");
+                    }
+                }
+            } else {
+                if (isScriptHidingEnabled) {
+                    writer.write("\n//-->\n");
+                }
+            }
+        }
+        isScript = false;
+        isStyle = false;
+        
+        dontEscape = false;
+        
+        if ("cdata".equalsIgnoreCase(name)) {
+            endCDATA();
+            return;
+        }
+        // See if we need to close the start of the last element
+        if (closeStart) {
+            boolean isEmptyElement = HtmlUtils.isEmptyElement(name);
+
+            // Tricky: we need to use the writer ivar here, rather than the
+            // one from the FacesContext because we don't want
+            // spurious /> characters to appear in the output.
+            if (isEmptyElement) {
+                flushAttributes();
+                writer.write(" />");
+                closeStart = false;
+                popElementName(name);
+                return;
+            }
+            flushAttributes();
+            writer.write('>');
+            closeStart = false;
+        }
+
+        writer.write("</");
+        writer.write(popElementName(name));
+        writer.write('>');
+
+    }
+
+
+    /**
+     * @return the character encoding, such as "ISO-8859-1" for this
+     *         ResponseWriter.  Refer to:
+     *         <a href="http://www.iana.org/assignments/character-sets">theIANA</a>
+     *         for a list of character encodings.
+     */
+    public String getCharacterEncoding() {
+
+        return encoding;
+
+    }
+
+
+    /**
+     * <p>Write the text that should begin a response.</p>
+     *
+     * @throws IOException if an input/output error occurs
+     */
+    public void startDocument() throws IOException {
+
+        // do nothing;
+
+    }
+
+
+    /**
+     * <p>Write the start of an element, up to and including the
+     * element name.  Clients call <code>writeAttribute()</code> or
+     * <code>writeURIAttribute()</code> methods to add attributes after
+     * calling this method.
+     *
+     * @param name                Name of the starting element
+     * @param componentForElement The UIComponent instance that applies to this
+     *                            element.  This argument may be <code>null</code>.
+     *
+     * @throws IOException          if an input/output error occurs
+     * @throws NullPointerException if <code>name</code>
+     *                              is <code>null</code>
+     */
+    public void startElement(String name, UIComponent componentForElement)
+          throws IOException {
+
+        if (name == null) {
+            throw new NullPointerException(MessageUtils.getExceptionMessageString(
+                  MessageUtils.NULL_PARAMETERS_ERROR_MESSAGE_ID, "name"));
+        }
+
+        // Keep track if we are in either a script or style element so we
+        // know we do not want to escape.
+
+        if ("script".equalsIgnoreCase(name)) {
+            withinScript = true;
+        }
+
+        if ("style".equalsIgnoreCase(name)) {
+            withinStyle = true;
+        }
+
+        closeStartIfNecessary();
+        isScriptOrStyle(name);
+        scriptOrStyleSrc = false;
+        if ("cdata".equalsIgnoreCase(name)) {
+            isCdata = true;
+            startCDATA();
+            return;
+        } else if (writingCdata) {
+            // starting an element within a cdata section,
+            // keep escaping disabled
+            isCdata = false;
+            writingCdata = true;
+        }
+
+        if (null != componentForElement) {
+            Map<String, Object> passThroughAttrs = componentForElement.getPassThroughAttributes(false);
+            if (null != passThroughAttrs && !passThroughAttrs.isEmpty()) {
+                considerPassThroughAttributes(passThroughAttrs);
+            }
+        }
+
+        writer.write('<');
+        String elementName = pushElementName(name);
+        writer.write(elementName);
+        
+        closeStart = true;
+
+    }
+
+
+    /**
+     * Starts a CDATA block.  Nested blocks are not allowed.
+     *
+     * @since 2.0
+     * @throws IOException on a read/write error
+     * @throws IllegalStateException If startCDATA is called a second time before endCDATA.
+     */
+    // RELEASE_PENDING_2_1 edburns, rogerk - need to expand on this description.
+    public void startCDATA() throws IOException {
+        if (writingCdata) {
+            throw new IllegalStateException("CDATA tags may not nest");
+        }
+        closeStartIfNecessary();        
+        writingCdata = true;
+        writer.write("<![CDATA[");
+        closeStart = false;
+    }
+
+    /**
+     * Closes the CDATA block.
+     *
+     * @since 2.0
+     * @throws IOException
+     */
+    // RELEASE_PENDING_2_1 edburns, rogerk - need to expand on this description.
+    public void endCDATA() throws IOException {
+        closeStartIfNecessary();
+        writer.write("]]>");
+        writingCdata = false;
+    }
+
+    @Override
+    public void write(char[] cbuf) throws IOException {
+        closeStartIfNecessary();
+        writer.write(cbuf);
+    }
+
+    @Override
+    public void write(int c) throws IOException {
+        closeStartIfNecessary();
+        writer.write(c);
+    }
+
+    @Override
+    public void write(String str) throws IOException {
+        closeStartIfNecessary();
+        writer.write(str);
+    }
+
+    @Override
+    public void write(char[] cbuf, int off, int len) throws IOException {
+        closeStartIfNecessary();
+        writer.write(cbuf, off, len);
+    }
+
+    @Override
+    public void write(String str, int off, int len) throws IOException {
+        closeStartIfNecessary();
+        writer.write(str, off, len);
+    }
+
+
+    /**
+     * <p>Write a properly escaped attribute name and the corresponding
+     * value.  The value text will be converted to a String if
+     * necessary.  This method may only be called after a call to
+     * <code>startElement()</code>, and before the opened element has been
+     * closed.</p>
+     *
+     * @param name                  Attribute name to be added
+     * @param value                 Attribute value to be added
+     * @param componentPropertyName The name of the component property to
+     *                              which this attribute argument applies.  This argument may be
+     *                              <code>null</code>.
+     *
+     * @throws IllegalStateException if this method is called when there
+     *                               is no currently open element
+     * @throws IOException           if an input/output error occurs
+     * @throws NullPointerException  if <code>name</code> is <code>null</code>
+     */
+    public void writeAttribute(String name, Object value,
+                               String componentPropertyName)
+          throws IOException {
+
+        if (name == null) {
+            throw new NullPointerException(MessageUtils.getExceptionMessageString(
+                  MessageUtils.NULL_PARAMETERS_ERROR_MESSAGE_ID, "name"));
+        }
+        if (value == null) {
+            return;
+        }
+
+        if (isCdata) {
+            return;
+        }
+        
+        if (containsPassThroughAttribute(name)) {
+            return;
+        }
+
+        if (name.equalsIgnoreCase("src") && isScriptOrStyle()) {
+            scriptOrStyleSrc = true;
+        }
+
+        Class valueClass = value.getClass();
+
+        // Output Boolean values specially
+        if (valueClass == Boolean.class) {
+            if (Boolean.TRUE.equals(value)) {
+                // NOTE:  HTML 4.01 states that boolean attributes
+                //        may legally take a single value which is the
+                //        name of the attribute itself or appear using
+                //        minimization.
+                //  http://www.w3.org/TR/html401/intro/sgmltut.html#h-3.3.4.2
+                attributesBuffer.write(' ');
+                attributesBuffer.write(name);
+                attributesBuffer.write("=\"");
+                attributesBuffer.write(name);
+                attributesBuffer.write('"');
+            }
+        } else {
+            attributesBuffer.write(' ');
+            attributesBuffer.write(name);
+            attributesBuffer.write("=\"");
+            // write the attribute value
+            String val = value.toString();
+            ensureTextBufferCapacity(val);
+            HtmlUtils.writeAttribute(attributesBuffer,
+                                     escapeUnicode,
+                                     escapeIso,
+                                     buffer,
+                                     val,
+                                     textBuffer,
+                                     isScriptInAttributeValueEnabled);
+            attributesBuffer.write('"');
+        }
+
+    }
+
+
+    /**
+     * <p>Write a comment string containing the specified text.
+     * The text will be converted to a String if necessary.
+     * If there is an open element that has been created by a call
+     * to <code>startElement()</code>, that element will be closed
+     * first.</p>
+     *
+     * @param comment Text content of the comment
+     *
+     * @throws IOException          if an input/output error occurs
+     * @throws NullPointerException if <code>comment</code>
+     *                              is <code>null</code>
+     */
+    public void writeComment(Object comment) throws IOException {
+
+        if (comment == null) {
+            throw new NullPointerException(MessageUtils.getExceptionMessageString(
+                  MessageUtils.NULL_PARAMETERS_ERROR_MESSAGE_ID));
+        }
+
+        if (writingCdata) {
+            return;
+        }
+
+        closeStartIfNecessary();
+        // Don't include a trailing space after the '<!--'
+        // or a leading space before the '-->' to support
+        // IE conditional commentsoth
+        writer.write("<!--");
+        String str = comment.toString();
+        ensureTextBufferCapacity(str);
+        HtmlUtils.writeText(writer, true, true, buffer, str, textBuffer);
+        writer.write("-->");
+
+    }
+
+
+    /**
+     * <p>Write a properly escaped single character, If there
+     * is an open element that has been created by a call to
+     * <code>startElement()</code>, that element will be closed first.</p>
+     * <p/>
+     * <p>All angle bracket occurrences in the argument must be escaped
+     * using the &gt; &lt; syntax.</p>
+     *
+     * @param text Text to be written
+     *
+     * @throws IOException if an input/output error occurs
+     */
+    public void writeText(char text) throws IOException {
+
+        closeStartIfNecessary();
+        if (dontEscape) {
+            writer.write(text);
+        } else if (isPartial || !writingCdata) {
+            charHolder[0] = text;
+            HtmlUtils.writeText(writer, escapeUnicode, escapeIso, buffer, charHolder);
+        } else {  // if writingCdata
+            assert writingCdata;
+            charHolder[0] = text;
+            writeEscaped(charHolder, 0, 1);
+        }
+
+    }
+
+
+    /**
+     * <p>Write properly escaped text from a character array.
+     * The output from this command is identical to the invocation:
+     * <code>writeText(c, 0, c.length)</code>.
+     * If there is an open element that has been created by a call to
+     * <code>startElement()</code>, that element will be closed first.</p>
+     * </p>
+     * <p/>
+     * <p>All angle bracket occurrences in the argument must be escaped
+     * using the &gt; &lt; syntax.</p>
+     *
+     * @param text Text to be written
+     *
+     * @throws IOException          if an input/output error occurs
+     * @throws NullPointerException if <code>text</code>
+     *                              is <code>null</code>
+     */
+    public void writeText(char text[]) throws IOException {
+
+        if (text == null) {
+            throw new NullPointerException(MessageUtils.getExceptionMessageString(
+                  MessageUtils.NULL_PARAMETERS_ERROR_MESSAGE_ID, "text"));
+        }
+        closeStartIfNecessary();
+
+        if (dontEscape) {
+            writer.write(text);
+        } else if (isPartial || !writingCdata) {
+            HtmlUtils.writeText(writer, escapeUnicode, escapeIso, buffer, text);
+        } else { // if writingCdata
+            assert writingCdata;
+            writeEscaped(text, 0, text.length);
+        }
+
+    }
+
+
+    /**
+     * <p>Write a properly escaped object. The object will be converted
+     * to a String if necessary.  If there is an open element
+     * that has been created by a call to <code>startElement()</code>,
+     * that element will be closed first.</p>
+     *
+     * @param text                  Text to be written
+     * @param componentPropertyName The name of the component property to
+     *                              which this text argument applies.  This argument may be <code>null</code>.
+     *
+     * @throws IOException          if an input/output error occurs
+     * @throws NullPointerException if <code>text</code>
+     *                              is <code>null</code>
+     */
+    public void writeText(Object text, String componentPropertyName)
+          throws IOException {
+
+        if (text == null) {
+            throw new NullPointerException(MessageUtils.getExceptionMessageString(
+                  MessageUtils.NULL_PARAMETERS_ERROR_MESSAGE_ID, "text"));
+        }
+        closeStartIfNecessary();
+        String textStr = text.toString();
+
+        if (dontEscape) {
+            writer.write(textStr);
+        } else if (isPartial || !writingCdata) {
+            ensureTextBufferCapacity(textStr);
+            HtmlUtils.writeText(writer,
+                                escapeUnicode,
+                                escapeIso,
+                                buffer,
+                                textStr,
+                                textBuffer);
+        } else { // if writingCdata
+            assert writingCdata;
+            int textLen = textStr.length();
+            if (textLen > cdataTextBufferSize) {
+                writeEscaped(textStr.toCharArray(), 0, textLen);
+            } else if (textLen >= 16) { // >16, < cdataTextBufferSize
+                textStr.getChars(0, textLen, cdataTextBuffer, 0);
+                writeEscaped(cdataTextBuffer, 0, textLen);
+            } else { // <16
+                for (int i=0; i < textLen;  i++)  {
+                    cdataTextBuffer[i] = textStr.charAt(i);
+                }
+                writeEscaped(cdataTextBuffer, 0, textLen);
+            }
+        }
+    }
+
+
+    /**
+     * <p>Write properly escaped text from a character array.
+     * If there is an open element that has been created by a call
+     * to <code>startElement()</code>, that element will be closed
+     * first.</p>
+     * <p/>
+     * <p>All angle bracket occurrences in the argument must be escaped
+     * using the &gt; &lt; syntax.</p>
+     *
+     * @param text Text to be written
+     * @param off  Starting offset (zero-relative)
+     * @param len  Number of characters to be written
+     *
+     * @throws IndexOutOfBoundsException if the calculated starting or
+     *                                   ending position is outside the bounds of the character array
+     * @throws IOException               if an input/output error occurs
+     * @throws NullPointerException      if <code>text</code>
+     *                                   is <code>null</code>
+     */
+    public void writeText(char text[], int off, int len)
+          throws IOException {
+
+        if (text == null) {
+            throw new NullPointerException(MessageUtils.getExceptionMessageString(
+                  MessageUtils.NULL_PARAMETERS_ERROR_MESSAGE_ID, "text"));
+        }
+        if (off < 0 || off > text.length || len < 0 || len > text.length) {
+            throw new IndexOutOfBoundsException();
+        }
+        closeStartIfNecessary();
+
+        // optimize away zero length write, called by Facelets to close tags
+        if (len == 0) return;
+
+        if (dontEscape) {
+            writer.write(text, off, len);
+        } else if (isPartial || !writingCdata) {
+            HtmlUtils.writeText(writer, escapeUnicode, escapeIso, buffer, text, off, len);
+        } else { // if (writingCdata)
+            assert writingCdata;
+            writeEscaped(text, off, len);
+        }
+
+    }
+
+
+    /**
+     * <p>Write a properly encoded URI attribute name and the corresponding
+     * value. The value text will be converted to a String if necessary).
+     * This method may only be called after a call to
+     * <code>startElement()</code>, and before the opened element has been
+     * closed.</p>
+     *
+     * @param name                  Attribute name to be added
+     * @param value                 Attribute value to be added
+     * @param componentPropertyName The name of the component property to
+     *                              which this attribute argument applies.  This argument may be
+     *                              <code>null</code>.
+     *
+     * @throws IllegalStateException if this method is called when there
+     *                               is no currently open element
+     * @throws IOException           if an input/output error occurs
+     * @throws NullPointerException  if <code>name</code> or
+     *                               <code>value</code> is <code>null</code>
+     */
+    public void writeURIAttribute(String name, Object value,
+                                  String componentPropertyName)
+          throws IOException {
+        if (null != name && containsPassThroughAttribute(name)) {
+            return;
+        }
+        writeURIAttributeIgnoringPassThroughAttributes(name, value, 
+                componentPropertyName, false);
+
+    }
+    
+    private void writeURIAttributeIgnoringPassThroughAttributes(String name, Object value,
+            String componentPropertyName, boolean isPassthrough) throws IOException {
+        
+        if (name == null) {
+            throw new NullPointerException(MessageUtils.getExceptionMessageString(
+                  MessageUtils.NULL_PARAMETERS_ERROR_MESSAGE_ID, "name"));
+        }
+        if (value == null) {
+            throw new NullPointerException(MessageUtils.getExceptionMessageString(
+                  MessageUtils.NULL_PARAMETERS_ERROR_MESSAGE_ID, "value"));
+        }
+
+        if (isCdata) {
+            return;
+        }
+        
+        if (name.equals(Renderer.PASSTHROUGH_RENDERER_LOCALNAME_KEY)) {
+            return;
+        }
+
+        if (name.equalsIgnoreCase("src") && isScriptOrStyle()) {
+            scriptOrStyleSrc = true;
+        }
+
+        attributesBuffer.write(' ');
+        attributesBuffer.write(name);
+        attributesBuffer.write("=\"");
+
+        String stringValue = value.toString();
+        ensureTextBufferCapacity(stringValue);
+        // Javascript URLs should not be URL-encoded
+        if (stringValue.startsWith("javascript:") || isPassthrough) {
+            HtmlUtils.writeAttribute(attributesBuffer,
+                                     escapeUnicode,
+                                     escapeIso,
+                                     buffer,
+                                     stringValue,
+                                     textBuffer,
+                                     isScriptInAttributeValueEnabled);
+        } else {
+            HtmlUtils.writeURL(attributesBuffer,
+                               stringValue,
+                               textBuffer,
+                               encoding);
+        }
+
+        attributesBuffer.write('"');
+
+    }
+
+    // --------------------------------------------------------- Private Methods
+
+    private void ensureTextBufferCapacity(String source) {
+        int len = source.length();
+        if (textBuffer.length < len) {
+            textBuffer = new char[len * 2];
+        }
+        if (buffer.length < len) {
+            buffer = new char[len * 2];
+        }
+    }
+
+    /**
+     * This method automatically closes a previous element (if not
+     * already closed).
+     * @throws IOException if an error occurs writing
+     */
+    private void closeStartIfNecessary() throws IOException {
+
+        if (closeStart) {
+            flushAttributes();
+            writer.write('>');
+            closeStart = false;
+            if (isScriptOrStyle() && !scriptOrStyleSrc) {
+                isXhtml = getContentType().equals(
+                     RIConstants.XHTML_CONTENT_TYPE);
+                if (isXhtml) {
+                    if (!writingCdata) {
+                        if (isScript) {
+                            writer.write("\n//<![CDATA[\n");
+                        } else {
+                            writer.write("\n<![CDATA[\n");
+                        }
+                    }
+                } else {
+                    if (isScriptHidingEnabled) {
+                        writer.write("\n<!--\n");
+                    }
+                }
+                origWriter = writer;
+                if (scriptBuffer == null) {
+                    scriptBuffer = new FastStringWriter(1024);
+                }
+                scriptBuffer.reset();
+                writer = scriptBuffer;
+                isScript = false;
+                isStyle = false;
+            }
+        }
+
+    }
+    
+    private void considerPassThroughAttributes(Map<String, Object> toCopy) {
+        assert(null != toCopy && !toCopy.isEmpty());
+        
+        if (null != passthroughAttributes) {
+            throw new IllegalStateException("Error, this method should only be called once per instance.");
+        }
+        passthroughAttributes = new ConcurrentHashMap<String, Object>(toCopy);
+    }
+    
+    private boolean containsPassThroughAttribute(String attrName) {
+        boolean result = false;
+        if (null != passthroughAttributes) {
+            result = passthroughAttributes.containsKey(attrName);
+        }
+        return result;
+    }
+
+
+    private void flushAttributes() throws IOException {
+        boolean hasPassthroughAttributes = 
+                null != passthroughAttributes && !passthroughAttributes.isEmpty();
+        
+        if (hasPassthroughAttributes) {
+            FacesContext context = FacesContext.getCurrentInstance();
+            for (Map.Entry<String, Object> entry : passthroughAttributes.entrySet()) {
+                Object valObj = entry.getValue();
+                String val = getAttributeValue(context, valObj);
+                String key = entry.getKey();
+                if (val != null) {
+                    writeURIAttributeIgnoringPassThroughAttributes(key, val, key, true);
+                }
+            }
+        }
+
+
+        // a little complex, but the end result is, potentially, two
+        // fewer temp objects created per call.
+        StringBuilder b = attributesBuffer.getBuffer();
+        int totalLength = b.length();
+        if (totalLength != 0) {
+            int curIdx = 0;
+            while (curIdx < totalLength) {
+                if ((totalLength - curIdx) > buffer.length) {
+                    int end = curIdx + buffer.length;
+                    b.getChars(curIdx, end, buffer, 0);
+                    writer.write(buffer);
+                    curIdx += buffer.length;
+                } else {
+                    int len = totalLength - curIdx;
+                    b.getChars(curIdx, curIdx + len, buffer, 0);
+                    writer.write(buffer, 0, len);
+                    curIdx += len;
+                }
+            }
+            attributesBuffer.reset();
+        }
+        
+        if (hasPassthroughAttributes) {
+            passthroughAttributes.clear();
+            passthroughAttributes = null;
+        }
+        
+    }
+
+    private String getAttributeValue(FacesContext context, Object valObj) {
+        String val;
+        if (valObj instanceof ValueExpression) {
+            Object result = ((ValueExpression) valObj).getValue(context.getELContext());
+            val = result != null ? result.toString() : null;
+        } else {
+            val = valObj.toString();
+        }
+        return val;
+    }
+
+    private String pushElementName(String original) {
+        
+        if (original.equals("option")) {
+            return original;
+        }
+        
+        String name = getElementName(original);
+
+        if(passthroughAttributes != null) {
+            passthroughAttributes.remove(Renderer.PASSTHROUGH_RENDERER_LOCALNAME_KEY);
+            if(passthroughAttributes.isEmpty()) {
+                passthroughAttributes = null;
+            }
+        }
+
+        if(!original.equals(name) || elementNames != null) {
+            if(elementNames == null) {
+                elementNames = new LinkedList<String>();
+            }
+            elementNames.push(name);
+        }
+        return name;
+    }
+
+    private String popElementName(String original) {
+        if(elementNames == null || elementNames.isEmpty()) {
+            return original;
+        }
+        return elementNames.pop();
+    }
+
+    private String getElementName(String name) {
+        if(containsPassThroughAttribute(Renderer.PASSTHROUGH_RENDERER_LOCALNAME_KEY)) {
+            FacesContext context = FacesContext.getCurrentInstance();
+
+            String elementName = getAttributeValue(context, passthroughAttributes.get(Renderer.PASSTHROUGH_RENDERER_LOCALNAME_KEY));
+            if(elementName != null && elementName.trim().length() > 0) {
+                return elementName;
+            }
+        }
+        return name;
+    }
+
+    private boolean isScriptOrStyle(String name) {
+        if ("script".equalsIgnoreCase(name)) {
+            isScript = true;
+            dontEscape = true;
+        } else if ("style".equalsIgnoreCase(name)) {
+            isStyle = true;
+            dontEscape = true;
+        } else {
+            isScript = false;
+            isStyle = false;
+            if (!withinScript && !withinStyle) {
+                dontEscape = false;
+            }
+        }
+
+        return (isScript || isStyle);
+    }
+
+    private boolean isScriptOrStyle() {
+        return (isScript || isStyle);
+    }
+
+/*
+ *  Method to escape all CDATA instances in a character array, then write to writer.
+ *
+ * This method looks for occurrences of "<![" and "]]>"
+ */
+private void writeEscaped(char cbuf[], int offset, int length) throws IOException {
+    if (cbuf == null || cbuf.length == 0 || length == 0) {
+        return;
+    }
+
+   if (offset < 0 || length < 0 || offset + length > cbuf.length ) {
+        throw new IndexOutOfBoundsException("off < 0 || len < 0 || off + len > cbuf.length");
+   }
+
+    // Single char case
+    if (length == 1) {
+        if (cbuf[offset] == '<') {
+            appendBuffer(ESCAPEDLT);
+        } else if (cbuf[offset] == ']') {
+            appendBuffer(ESCAPEDSINGLEBRACKET);
+        } else {
+            appendBuffer(cbuf[offset]);
+        }
+        flushBuffer();
+        return;
+    }
+    // two char case
+    if (length == 2) {
+        if (cbuf[offset] == '<' && cbuf[offset + 1] == '!') {
+            appendBuffer(ESCAPEDLT);
+            appendBuffer(cbuf[offset + 1]);
+        } else if (cbuf[offset] == ']' && cbuf[offset + 1] == ']') {
+            appendBuffer(ESCAPEDSINGLEBRACKET);
+            appendBuffer(ESCAPEDSINGLEBRACKET);
+        } else {
+            appendBuffer(cbuf[offset]);
+            appendBuffer(cbuf[offset + 1]);
+        }
+        flushBuffer();
+        return;
+    }
+    // > 2 char case
+    boolean last = false;
+    for (int i = offset; i < length - 2; i++) {
+        if (cbuf[i] == '<' && cbuf[i + 1] == '!' && cbuf[i + 2] == '[') {
+            appendBuffer(ESCAPEDSTART);
+            i += 2;
+        } else if (cbuf[i] == ']' && cbuf[i + 1] == ']' && cbuf[i + 2] == '>') {
+            appendBuffer(ESCAPEDEND);
+            i += 2;
+        } else {
+            appendBuffer(cbuf[i]);
+        }
+        if (i == (offset + length - 1)) {
+            last = true;
+        }
+    }
+    // if we didn't look at the last characters, look at them now
+    if (!last) {
+        if (cbuf[offset + length - 2] == '<') {
+            appendBuffer(ESCAPEDLT);
+        } else if (cbuf[offset + length - 2] == ']') {
+            appendBuffer(ESCAPEDSINGLEBRACKET);
+        } else {
+            appendBuffer(cbuf[offset + length - 2]);
+        }
+        if (cbuf[offset + length - 1] == '<') {
+            appendBuffer(ESCAPEDLT);
+        } else if (cbuf[offset + length - 1] == ']') {
+            appendBuffer(ESCAPEDSINGLEBRACKET);
+        } else {
+            appendBuffer(cbuf[offset + length - 1]);
+        }
+    }
+    flushBuffer();
+}
+
+/*
+ *  append a character array to the cdatabuffer
+ */
+private void appendBuffer(char[] cbuf) throws IOException {
+    if (cbuf.length + cdataBufferLength >= cdataBufferSize) {
+        flushBuffer();
+    }
+    if (cbuf.length >= cdataBufferSize) {  // bigger than the buffer, direct write
+        writer.write(cbuf);
+    }
+    System.arraycopy(cbuf, 0, cdataBuffer, cdataBufferLength, cbuf.length);
+    cdataBufferLength = cdataBufferLength + cbuf.length;
+}
+/*
+ * append a character to the cdatabuffer
+ */
+private void appendBuffer(char c) throws IOException {
+    if (cdataBufferLength + 1 >= cdataBufferSize) {
+        flushBuffer();
+    }
+    cdataBuffer[cdataBufferLength] = c;
+    cdataBufferLength++;
+}
+
+/*
+ * flush the cdatabuffer to the writer
+ */
+private void flushBuffer() throws IOException {
+    if (cdataBufferLength == 0) {
+        return;
+    }
+    writer.write(cdataBuffer, 0, cdataBufferLength);
+    cdataBufferLength = 0;
+}
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/ImageRenderer.java b/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/ImageRenderer.java
index 4587ac8..f59bd2c 100644
--- a/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/ImageRenderer.java
+++ b/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/ImageRenderer.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/LabelRenderer.java b/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/LabelRenderer.java
index d9858da..3690777 100644
--- a/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/LabelRenderer.java
+++ b/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/LabelRenderer.java
@@ -1,200 +1,203 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-// LabelRenderer.java
-
-package com.sun.faces.renderkit.html_basic;
-
-import java.io.IOException;
-import java.util.logging.Level;
-
-import javax.faces.component.NamingContainer;
-import javax.faces.component.UIComponent;
-import javax.faces.component.UINamingContainer;
-import javax.faces.context.FacesContext;
-import javax.faces.context.ResponseWriter;
-
-import com.sun.faces.renderkit.Attribute;
-import com.sun.faces.renderkit.AttributeManager;
-import com.sun.faces.renderkit.RenderKitUtils;
-
-/** <p><B>LabelRenderer</B> renders Label element.<p>. */
-public class LabelRenderer extends HtmlBasicInputRenderer {
-
-
-    private static final Attribute[] ATTRIBUTES =
-          AttributeManager.getAttributes(AttributeManager.Key.OUTPUTLABEL);
-
-
-    private static final String RENDER_END_ELEMENT =
-          "com.sun.faces.RENDER_END_ELEMENT";
-
-    // ---------------------------------------------------------- Public Methods
-
-
-    @Override
-    public void encodeBegin(FacesContext context, UIComponent component)
-          throws IOException {
-
-        rendererParamsNotNull(context, component);
-
-        if (!shouldEncode(component)) {
-            return;
-        }
-
-        ResponseWriter writer = context.getResponseWriter();
-        assert(writer != null);
-
-        String forClientId = null;
-        String forValue = (String) component.getAttributes().get("for");
-        if (forValue != null) {
-            forValue = augmentIdReference(forValue, component);
-            UIComponent forComponent = getForComponent(context, forValue, component);
-            if (forComponent == null) {
-                // it could that the component hasn't been created yet. So
-                // construct the clientId for component.
-                forClientId = getForComponentClientId(component, context,
-                                                      forValue);
-            } else {
-                forClientId = forComponent.getClientId(context);
-            }
-        }
-
-        // set a temporary attribute on the component to indicate that
-        // label end element needs to be rendered.
-        component.getAttributes().put(RENDER_END_ELEMENT, "yes");
-        writer.startElement("label", component);
-        writeIdAttributeIfNecessary(context, writer, component);
-        if (forClientId != null) {
-            writer.writeAttribute("for", forClientId, "for");
-        }
-
-        RenderKitUtils.renderPassThruAttributes(context,
-                                                writer,
-                                                component,
-                                                ATTRIBUTES);
-        String styleClass = (String)
-            component.getAttributes().get("styleClass");
-        if (null != styleClass) {
-            writer.writeAttribute("class", styleClass, "styleClass");
-        }
-        writer.writeText("\n", component, null);
-
-        // render the curentValue as label text if specified.
-        String value = getCurrentValue(context, component);
-        if (logger.isLoggable(Level.FINE)) {
-            logger.fine("Value to be rendered " + value);
-        }
-        if (value != null && value.length() != 0) {
-            Object val = component.getAttributes().get("escape");
-            boolean escape = (val != null) && Boolean.valueOf(val.toString());
-
-            if (escape) {
-                writer.writeText(value, component, "value");
-            } else {
-                writer.write(value);
-            }
-        }
-        writer.flush();
-
-    }
-
-
-    @Override
-    public void encodeEnd(FacesContext context, UIComponent component)
-          throws IOException {
-
-        rendererParamsNotNull(context, component);
-
-        if (!shouldEncode(component)) {
-            return;
-        }
-
-        // render label end element if RENDER_END_ELEMENT is set.
-        String render = (String) component.getAttributes().get(
-              RENDER_END_ELEMENT);
-        if ("yes".equals(render)) {
-            component.getAttributes().remove(RENDER_END_ELEMENT);
-            ResponseWriter writer = context.getResponseWriter();
-            assert(writer != null);
-            writer.endElement("label");
-        }
-
-    }
-
-    // ------------------------------------------------------- Private Methods
-
-
-    /**
-     * Builds and returns the clientId of the component that is
-     * represented by the forValue. Since the component has not been created
-     * yet, invoking <code>getClientId(context)</code> is not possible.
-     *
-     * @param component UIComponent that represents the label
-     * @param context   FacesContext for this request
-     * @param forValue  String representing the "id" of the component
-     *                  that this label represents.
-     *
-     * @return String clientId of the component represented by the forValue.
-     */
-    protected String getForComponentClientId(UIComponent component,
-                                             FacesContext context,
-                                             String forValue) {
-
-        String result = null;
-        // ASSUMPTION: The component for which this acts as the label
-        // as well ths label component are part of the same form.
-        // locate the nearest NamingContainer and get its clientId.
-        UIComponent parent = component.getParent();
-        while (parent != null) {
-            if (parent instanceof NamingContainer) {
-                break;
-            }
-            parent = parent.getParent();
-        }
-        if (parent == null) {
-            return result;
-        }
-        String parentClientId = parent.getClientId(context);
-        // prepend the clientId of the nearest container to the forValue.
-        result = parentClientId + UINamingContainer.getSeparatorChar(context) + forValue;
-        return result;
-
-    }
-
-    // The testcase for this class is TestRenderResponsePhase.java
-
-} // end of class LabelRenderer
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+// LabelRenderer.java
+
+package com.sun.faces.renderkit.html_basic;
+
+import java.io.IOException;
+import java.util.logging.Level;
+
+import javax.faces.component.NamingContainer;
+import javax.faces.component.UIComponent;
+import javax.faces.component.UINamingContainer;
+import javax.faces.context.FacesContext;
+import javax.faces.context.ResponseWriter;
+
+import com.sun.faces.renderkit.Attribute;
+import com.sun.faces.renderkit.AttributeManager;
+import com.sun.faces.renderkit.RenderKitUtils;
+
+/** <p><B>LabelRenderer</B> renders Label element.<p>. */
+public class LabelRenderer extends HtmlBasicInputRenderer {
+
+
+    private static final Attribute[] ATTRIBUTES =
+          AttributeManager.getAttributes(AttributeManager.Key.OUTPUTLABEL);
+
+
+    private static final String RENDER_END_ELEMENT =
+          "com.sun.faces.RENDER_END_ELEMENT";
+
+    // ---------------------------------------------------------- Public Methods
+
+
+    @Override
+    public void encodeBegin(FacesContext context, UIComponent component)
+          throws IOException {
+
+        rendererParamsNotNull(context, component);
+
+        if (!shouldEncode(component)) {
+            return;
+        }
+
+        ResponseWriter writer = context.getResponseWriter();
+        assert(writer != null);
+
+        String forClientId = null;
+        String forValue = (String) component.getAttributes().get("for");
+        if (forValue != null) {
+            forValue = augmentIdReference(forValue, component);
+            UIComponent forComponent = getForComponent(context, forValue, component);
+            if (forComponent == null) {
+                // it could that the component hasn't been created yet. So
+                // construct the clientId for component.
+                forClientId = getForComponentClientId(component, context,
+                                                      forValue);
+            } else {
+                forClientId = forComponent.getClientId(context);
+            }
+        }
+
+        // set a temporary attribute on the component to indicate that
+        // label end element needs to be rendered.
+        component.getAttributes().put(RENDER_END_ELEMENT, "yes");
+        writer.startElement("label", component);
+        writeIdAttributeIfNecessary(context, writer, component);
+        if (forClientId != null) {
+            writer.writeAttribute("for", forClientId, "for");
+        }
+
+        RenderKitUtils.renderPassThruAttributes(context,
+                                                writer,
+                                                component,
+                                                ATTRIBUTES);
+        String styleClass = (String)
+            component.getAttributes().get("styleClass");
+        if (null != styleClass) {
+            writer.writeAttribute("class", styleClass, "styleClass");
+        }
+
+        // render the curentValue as label text if specified.
+        String value = getCurrentValue(context, component);
+        if (logger.isLoggable(Level.FINE)) {
+            logger.fine("Value to be rendered " + value);
+        }
+        if (value != null && value.length() != 0) {
+            Object val = component.getAttributes().get("escape");
+            boolean escape = (val != null) && Boolean.valueOf(val.toString());
+
+            if (escape) {
+                writer.writeText(value, component, "value");
+            } else {
+                writer.write(value);
+            }
+        }
+        writer.flush();
+
+    }
+
+
+    @Override
+    public void encodeEnd(FacesContext context, UIComponent component)
+          throws IOException {
+
+        rendererParamsNotNull(context, component);
+
+        if (!shouldEncode(component)) {
+            return;
+        }
+
+        // render label end element if RENDER_END_ELEMENT is set.
+        String render = (String) component.getAttributes().get(
+              RENDER_END_ELEMENT);
+        if ("yes".equals(render)) {
+            component.getAttributes().remove(RENDER_END_ELEMENT);
+            ResponseWriter writer = context.getResponseWriter();
+            assert(writer != null);
+            writer.endElement("label");
+        }
+
+    }
+
+    // ------------------------------------------------------- Private Methods
+
+
+    /**
+     * Builds and returns the clientId of the component that is
+     * represented by the forValue. Since the component has not been created
+     * yet, invoking <code>getClientId(context)</code> is not possible.
+     *
+     * @param component UIComponent that represents the label
+     * @param context   FacesContext for this request
+     * @param forValue  String representing the "id" of the component
+     *                  that this label represents.
+     *
+     * @return String clientId of the component represented by the forValue.
+     */
+    protected String getForComponentClientId(UIComponent component,
+                                             FacesContext context,
+                                             String forValue) {
+
+        String result = null;
+        // ASSUMPTION: The component for which this acts as the label
+        // as well ths label component are part of the same form.
+        // locate the nearest NamingContainer and get its clientId.
+        UIComponent parent = component.getParent();
+        while (parent != null) {
+            if (parent instanceof NamingContainer) {
+                break;
+            }
+            parent = parent.getParent();
+        }
+        if (parent == null) {
+            return result;
+        }
+        String parentClientId = parent.getClientId(context);
+        // prepend the clientId of the nearest container to the forValue.
+        result = parentClientId + UINamingContainer.getSeparatorChar(context) + forValue;
+        return result;
+
+    }
+
+    // The testcase for this class is TestRenderResponsePhase.java
+
+} // end of class LabelRenderer
diff --git a/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/LinkRenderer.java b/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/LinkRenderer.java
index 0784942..36cd5d1 100644
--- a/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/LinkRenderer.java
+++ b/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/LinkRenderer.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/ListboxRenderer.java b/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/ListboxRenderer.java
index f3beee1..9c1b0ce 100644
--- a/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/ListboxRenderer.java
+++ b/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/ListboxRenderer.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/MenuRenderer.java b/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/MenuRenderer.java
index 3b122d4..80dce8a 100644
--- a/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/MenuRenderer.java
+++ b/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/MenuRenderer.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -52,8 +56,6 @@ import java.lang.reflect.Modifier;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
-import java.util.Iterator;
-import java.util.List;
 import java.util.Map;
 import java.util.Set;
 import java.util.HashSet;
@@ -83,6 +85,7 @@ import com.sun.faces.io.FastStringWriter;
 import com.sun.faces.renderkit.Attribute;
 import com.sun.faces.renderkit.AttributeManager;
 import com.sun.faces.renderkit.RenderKitUtils;
+import com.sun.faces.renderkit.SelectItemsIterator;
 import com.sun.faces.util.MessageUtils;
 import com.sun.faces.util.Util;
 import com.sun.faces.util.RequestStateManager;
@@ -519,6 +522,7 @@ public class MenuRenderer extends HtmlBasicInputRenderer {
 
     protected boolean renderOption(FacesContext context,
                                    UIComponent component,
+                                   UIComponent selectComponent,
                                    Converter converter,
                                    SelectItem curItem,
                                    Object currentSelections,
@@ -555,7 +559,7 @@ public class MenuRenderer extends HtmlBasicInputRenderer {
         ResponseWriter writer = context.getResponseWriter();
         assert (writer != null);
         writer.writeText("\t", component, null);
-        writer.startElement("option", component);
+        writer.startElement("option", (null != selectComponent) ? selectComponent : component);
         writer.writeAttribute("value", valueString, "value");
 
         if (isSelected) {
@@ -731,7 +735,7 @@ public class MenuRenderer extends HtmlBasicInputRenderer {
 
     protected int renderOptions(FacesContext context,
                                 UIComponent component,
-                                Iterator<SelectItem> items)
+                                SelectItemsIterator<SelectItem> items)
     throws IOException {
 
         ResponseWriter writer = context.getResponseWriter();
@@ -757,10 +761,11 @@ public class MenuRenderer extends HtmlBasicInputRenderer {
                                 component);
         while (items.hasNext()) {
             SelectItem item = items.next();
+            UIComponent selectComponent = items.currentSelectComponent();
 
             if (item instanceof SelectItemGroup) {
                 // render OPTGROUP
-                writer.startElement("optgroup", component);
+                writer.startElement("optgroup", (null != selectComponent) ? selectComponent : component);
                 writer.writeAttribute("label", item.getLabel(), "label");
 
                 // if the component is disabled, "disabled" attribute would be rendered
@@ -775,6 +780,7 @@ public class MenuRenderer extends HtmlBasicInputRenderer {
                 for (int i = 0; i < itemsArray.length; ++i) {
                     if (renderOption(context,
                                      component,
+                                     selectComponent,
                                      converter,
                                      itemsArray[i],
                                      currentSelections,
@@ -787,6 +793,7 @@ public class MenuRenderer extends HtmlBasicInputRenderer {
             } else {
                 if (renderOption(context,
                                  component,
+                                 selectComponent,
                                  converter,
                                  item,
                                  currentSelections,
@@ -831,7 +838,7 @@ public class MenuRenderer extends HtmlBasicInputRenderer {
         // Determine how many option(s) we need to render, and update
         // the component's "size" attribute accordingly;  The "size"
         // attribute will be rendered as one of the "pass thru" attributes
-        Iterator<SelectItem> items = RenderKitUtils.getSelectItems(context, component);
+        SelectItemsIterator<SelectItem> items = RenderKitUtils.getSelectItems(context, component);
 
         // render the options to a buffer now so that we can determine
         // the size
diff --git a/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/MessageRenderer.java b/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/MessageRenderer.java
index 1ded2f3..5f0bf85 100644
--- a/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/MessageRenderer.java
+++ b/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/MessageRenderer.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -251,13 +255,13 @@ public class MessageRenderer extends HtmlBasicRenderer {
         boolean isTooltip = (val != null) && Boolean.valueOf(val.toString());
 
         boolean wroteTooltip = false;
-        if (showSummary && showDetail && isTooltip) {
+        if ((showSummary || showDetail) && isTooltip) {
 
             if (!wroteSpan) {
                 writer.startElement("span", component);
             }            
             if (title == null || title.length() == 0) {
-                writer.writeAttribute("title", summary, "title");
+                writer.writeAttribute("title", detail, "title");
             }
             writer.flush();
             writer.writeText("\t", component, null);
@@ -266,7 +270,7 @@ public class MessageRenderer extends HtmlBasicRenderer {
             writer.flush();
         }
 
-        if (!wroteTooltip && showSummary) {
+        if (showSummary) {
             writer.writeText("\t", component, null);
             writer.writeText(summary, component, null);
             writer.writeText(" ", component, null);
diff --git a/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/MessagesRenderer.java b/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/MessagesRenderer.java
index e08e422..54af633 100644
--- a/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/MessagesRenderer.java
+++ b/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/MessagesRenderer.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -218,18 +222,18 @@ public class MessagesRenderer extends HtmlBasicRenderer {
             boolean isTooltip = (val != null) && Boolean.valueOf(val.toString());
 
             boolean wroteTooltip = false;
-            if (showSummary && showDetail && isTooltip) {
+            if (isTooltip) {
                 writer.startElement("span", component);
                 String title = (String) component.getAttributes().get("title");
                 if (title == null || title.length() == 0) {
-                    writer.writeAttribute("title", summary, "title");
+                    writer.writeAttribute("title", detail, "title");
                 }
                 writer.flush();
                 writer.writeText("\t", component, null);
                 wroteTooltip = true;
             }
 
-            if (!wroteTooltip && showSummary) {
+            if (showSummary) {
                 writer.writeText("\t", component, null);
                 writer.writeText(summary, component, null);
                 writer.writeText(" ", component, null);
diff --git a/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/OutcomeTargetButtonRenderer.java b/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/OutcomeTargetButtonRenderer.java
index 5d73e84..4ab432b 100644
--- a/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/OutcomeTargetButtonRenderer.java
+++ b/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/OutcomeTargetButtonRenderer.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -105,17 +109,11 @@ public class OutcomeTargetButtonRenderer extends OutcomeTargetRenderer {
             writer.writeAttribute("class", styleClass, "styleClass");
         }
 
-        renderPassThruAttributes(context, writer, component, ATTRIBUTES);
-
-        writer.endElement("input");
-
-    }
-
+        renderPassThruAttributes(context, writer, component, ATTRIBUTES, null);
 
-    @Override
-    public boolean getRendersChildren() {
-
-        return false;
+        if(component.getChildCount() == 0) {
+            writer.endElement("input");
+        }
 
     }
 
@@ -124,7 +122,11 @@ public class OutcomeTargetButtonRenderer extends OutcomeTargetRenderer {
     public void encodeEnd(FacesContext context, UIComponent component)
     throws IOException {
 
-        // no-op
+        rendererParamsNotNull(context, component);
+
+        if(component.getChildCount() > 0) {
+            context.getResponseWriter().endElement("input");
+        }
 
     }
 
diff --git a/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/OutcomeTargetLinkRenderer.java b/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/OutcomeTargetLinkRenderer.java
index fe1e53e..990a990 100644
--- a/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/OutcomeTargetLinkRenderer.java
+++ b/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/OutcomeTargetLinkRenderer.java
@@ -1,205 +1,213 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- *
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- *
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- *
- * Contributor(s):
- *
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package com.sun.faces.renderkit.html_basic;
-
-import com.sun.faces.renderkit.AttributeManager;
-import com.sun.faces.renderkit.Attribute;
-import com.sun.faces.util.MessageUtils;
-import com.sun.faces.util.Util;
-import java.io.IOException;
-import javax.faces.application.NavigationCase;
-import javax.faces.application.ProjectStage;
-import javax.faces.component.UIComponent;
-import javax.faces.context.FacesContext;
-import javax.faces.context.ResponseWriter;
-
-public class OutcomeTargetLinkRenderer extends OutcomeTargetRenderer {
-
-    private static final Attribute[] ATTRIBUTES =
-        AttributeManager.getAttributes(AttributeManager.Key.OUTPUTLINK);
-
-    private static final String NO_NAV_CASE =
-          OutcomeTargetLinkRenderer.class.getName() + "_NO_NAV_CASE";
-
-
-    // --------------------------------------------------- Methods from Renderer
-
-
-    @Override
-    public void encodeBegin(FacesContext context, UIComponent component)
-    throws IOException {
-
-        rendererParamsNotNull(context, component);
-
-        if (!shouldEncode(component)) {
-            return;
-        }
-
-        NavigationCase navCase = null;
-        boolean failedToResolveNavigationCase = false;
-        boolean disabled = Util.componentIsDisabled(component);
-
-        if (!disabled) {
-            navCase = getNavigationCase(context, component);
-            if (navCase == null) {
-                failedToResolveNavigationCase = true;
-                context.getAttributes().put(NO_NAV_CASE, true);
-            }
-
-        }
-
-        if (disabled || navCase == null) {
-            renderAsDisabled(context, component, failedToResolveNavigationCase);
-        } else {
-            renderAsActive(context, navCase, component);
-        }
-
-    }
-
-
-    @Override
-    public void encodeEnd(FacesContext context, UIComponent component) throws IOException {
-
-        rendererParamsNotNull(context, component);
-
-        if (!shouldEncode(component)) {
-            return;
-        }
-
-        ResponseWriter writer = context.getResponseWriter();
-        assert(writer != null);
-        String endElement = ((Util.componentIsDisabled(component) || context.getAttributes().remove(NO_NAV_CASE) != null) 
-                                ? "span"
-                                : "a");
-        writer.endElement(endElement);
-
-    }
-
-
-    // ------------------------------------------------------- Protected Methods
-
-
-    protected void renderAsDisabled(FacesContext context,
-                                    UIComponent component,
-                                    boolean failedToResolveNavigationCase)
-    throws IOException {
-
-        ResponseWriter writer = context.getResponseWriter();
-        assert(writer != null);
-
-        writer.startElement("span", component);
-        writeIdAndNameAttributes(context, writer, component);
-        renderLinkCommonAttributes(writer, component);
-        renderPassThruAttributes(context, writer, component, ATTRIBUTES);
-        writeValue(writer, component);
-
-        // shame that we can't put this in encodeEnd, but then we have to attempt to resolve the navigation case again
-        if (failedToResolveNavigationCase) {
-            if (!context.isProjectStage(ProjectStage.Production)) {
-                writer.write(MessageUtils.getExceptionMessageString(MessageUtils.OUTCOME_TARGET_LINK_NO_MATCH));
-            }
-        }
-
-    }
-
-    protected void renderAsActive(FacesContext context,
-                                  NavigationCase navCase,
-                                  UIComponent component)
-    throws IOException {
-
-        ResponseWriter writer = context.getResponseWriter();
-        assert(writer != null);
-
-        writer.startElement("a", component);
-        writeIdAndNameAttributes(context, writer, component);
-
-        String hrefVal = getEncodedTargetURL(context, component, navCase);
-        hrefVal += getFragment(component);
-        writer.writeURIAttribute("href", hrefVal, "outcome");
-
-        renderLinkCommonAttributes(writer, component);
-        renderPassThruAttributes(context, writer, component, ATTRIBUTES);
-        writeValue(writer, component);
-
-    }
-
-    protected void writeIdAndNameAttributes(FacesContext context,
-                                            ResponseWriter writer,
-                                            UIComponent component)
-    throws IOException {
-
-        String writtenId = writeIdAttributeIfNecessary(context, writer, component);
-        if (null != writtenId) {
-            writer.writeAttribute("name", writtenId, "name");
-        }
-
-    }
-
-    protected void writeValue(ResponseWriter writer, UIComponent component)
-    throws IOException {
-
-        writer.writeText(getLabel(component), component, null);
-        writer.flush();
-        
-    }
-
-
-    protected void renderLinkCommonAttributes(ResponseWriter writer,
-                                              UIComponent component)
-    throws IOException {
-
-        // this is common to both link and button target renderers
-        String styleClass = (String) component.getAttributes().get("styleClass");
-        if (styleClass != null && styleClass.length() > 0) {
-            writer.writeAttribute("class", styleClass, "styleClass");
-        }
-
-        // target/onclick should be pass through, but right now, due to command Link,
-        // they all share the same base properties file which marks them as non
-        // pass-through
-        String target = (String) component.getAttributes().get("target");
-        if (target != null && target.length() > 0) {
-            writer.writeAttribute("target", target, "target");
-        }
-
-        String onclick = (String) component.getAttributes().get("onclick");
-        if (onclick != null && onclick.length() > 0) {
-            writer.writeAttribute("onclick", onclick, "onclick");
-        }
-    }
-
-}
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.renderkit.html_basic;
+
+import com.sun.faces.renderkit.AttributeManager;
+import com.sun.faces.renderkit.Attribute;
+import com.sun.faces.util.MessageUtils;
+import com.sun.faces.util.Util;
+import java.io.IOException;
+import java.util.Arrays;
+import java.util.List;
+import javax.faces.application.NavigationCase;
+import javax.faces.application.ProjectStage;
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.context.ResponseWriter;
+
+public class OutcomeTargetLinkRenderer extends OutcomeTargetRenderer {
+
+    private static final Attribute[] ATTRIBUTES =
+        AttributeManager.getAttributes(AttributeManager.Key.OUTCOMETARGETLINK);
+
+    private static final String NO_NAV_CASE =
+          OutcomeTargetLinkRenderer.class.getName() + "_NO_NAV_CASE";
+
+    //Attributes that are to excluded from rendering for this renderer.
+    private static final List<String> EXCLUDED_ATTRIBUTES = Arrays.asList("disabled");
+
+    // --------------------------------------------------- Methods from Renderer
+
+
+    @Override
+    public void encodeBegin(FacesContext context, UIComponent component)
+    throws IOException {
+
+        rendererParamsNotNull(context, component);
+
+        if (!shouldEncode(component)) {
+            return;
+        }
+
+        NavigationCase navCase = null;
+        boolean failedToResolveNavigationCase = false;
+        boolean disabled = Util.componentIsDisabled(component);
+
+        if (!disabled) {
+            navCase = getNavigationCase(context, component);
+            if (navCase == null) {
+                failedToResolveNavigationCase = true;
+                context.getAttributes().put(NO_NAV_CASE, true);
+            }
+
+        }
+
+        if (disabled || navCase == null) {
+            renderAsDisabled(context, component, failedToResolveNavigationCase);
+        } else {
+            renderAsActive(context, navCase, component);
+        }
+
+    }
+
+
+    @Override
+    public void encodeEnd(FacesContext context, UIComponent component) throws IOException {
+
+        rendererParamsNotNull(context, component);
+
+        if (!shouldEncode(component)) {
+            return;
+        }
+
+        ResponseWriter writer = context.getResponseWriter();
+        assert(writer != null);
+        String endElement = ((Util.componentIsDisabled(component) || context.getAttributes().remove(NO_NAV_CASE) != null) 
+                                ? "span"
+                                : "a");
+        writer.endElement(endElement);
+
+    }
+
+
+    // ------------------------------------------------------- Protected Methods
+
+
+    protected void renderAsDisabled(FacesContext context,
+                                    UIComponent component,
+                                    boolean failedToResolveNavigationCase)
+    throws IOException {
+
+        ResponseWriter writer = context.getResponseWriter();
+        assert(writer != null);
+
+        writer.startElement("span", component);
+        writeIdAndNameAttributes(context, writer, component);
+        renderLinkCommonAttributes(writer, component);
+        renderPassThruAttributes(context, writer, component, ATTRIBUTES, EXCLUDED_ATTRIBUTES);
+        writeValue(writer, component);
+
+        // shame that we can't put this in encodeEnd, but then we have to attempt to resolve the navigation case again
+        if (failedToResolveNavigationCase) {
+            if (!context.isProjectStage(ProjectStage.Production)) {
+                writer.write(MessageUtils.getExceptionMessageString(MessageUtils.OUTCOME_TARGET_LINK_NO_MATCH));
+            }
+        }
+
+    }
+
+    protected void renderAsActive(FacesContext context,
+                                  NavigationCase navCase,
+                                  UIComponent component)
+    throws IOException {
+
+        ResponseWriter writer = context.getResponseWriter();
+        assert(writer != null);
+
+        writer.startElement("a", component);
+        writeIdAndNameAttributes(context, writer, component);
+
+        String hrefVal = getEncodedTargetURL(context, component, navCase);
+        hrefVal += getFragment(component);
+        writer.writeURIAttribute("href", hrefVal, "outcome");
+
+        renderLinkCommonAttributes(writer, component);
+        renderPassThruAttributes(context, writer, component, ATTRIBUTES, null);
+        writeValue(writer, component);
+
+    }
+
+    protected void writeIdAndNameAttributes(FacesContext context,
+                                            ResponseWriter writer,
+                                            UIComponent component)
+    throws IOException {
+
+        String writtenId = writeIdAttributeIfNecessary(context, writer, component);
+        if (null != writtenId) {
+            writer.writeAttribute("name", writtenId, "name");
+        }
+
+    }
+
+    protected void writeValue(ResponseWriter writer, UIComponent component)
+    throws IOException {
+
+        writer.writeText(getLabel(component), component, null);
+        writer.flush();
+        
+    }
+
+
+    protected void renderLinkCommonAttributes(ResponseWriter writer,
+                                              UIComponent component)
+    throws IOException {
+
+        // this is common to both link and button target renderers
+        String styleClass = (String) component.getAttributes().get("styleClass");
+        if (styleClass != null && styleClass.length() > 0) {
+            writer.writeAttribute("class", styleClass, "styleClass");
+        }
+
+        // target/onclick should be pass through, but right now, due to command Link,
+        // they all share the same base properties file which marks them as non
+        // pass-through
+        String target = (String) component.getAttributes().get("target");
+        if (target != null && target.length() > 0) {
+            writer.writeAttribute("target", target, "target");
+        }
+
+        String onclick = (String) component.getAttributes().get("onclick");
+        if (onclick != null && onclick.length() > 0) {
+            writer.writeAttribute("onclick", onclick, "onclick");
+        }
+    }
+
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/OutcomeTargetRenderer.java b/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/OutcomeTargetRenderer.java
index 191300b..829d46f 100644
--- a/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/OutcomeTargetRenderer.java
+++ b/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/OutcomeTargetRenderer.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -36,6 +40,7 @@
 
 package com.sun.faces.renderkit.html_basic;
 
+import com.sun.faces.flow.FlowHandlerImpl;
 import com.sun.faces.renderkit.RenderKitUtils;
 import com.sun.faces.renderkit.Attribute;
 import com.sun.faces.util.Util;
@@ -51,6 +56,9 @@ import javax.faces.component.UIComponent;
 import javax.faces.component.UIOutcomeTarget;
 import javax.faces.context.FacesContext;
 import javax.faces.context.ResponseWriter;
+import javax.faces.event.ActionListener;
+import javax.faces.flow.FlowHandler;
+import javax.faces.lifecycle.ClientWindow;
 
 public abstract class OutcomeTargetRenderer extends HtmlBasicRenderer {
 
@@ -63,10 +71,11 @@ public abstract class OutcomeTargetRenderer extends HtmlBasicRenderer {
     protected void renderPassThruAttributes(FacesContext ctx,
                                             ResponseWriter writer,
                                             UIComponent component,
-                                            Attribute[] attributes)
+                                            Attribute[] attributes,
+                                            List excludedAttributes)
     throws IOException {
         RenderKitUtils.renderPassThruAttributes(ctx, writer, component, attributes);
-        RenderKitUtils.renderXHTMLStyleBooleanAttributes(writer, component);
+        RenderKitUtils.renderXHTMLStyleBooleanAttributes(writer, component, excludedAttributes);
 
         
     }
@@ -131,13 +140,18 @@ public abstract class OutcomeTargetRenderer extends HtmlBasicRenderer {
             //String viewId = context.getViewRoot().getViewId();
             //return new NavigationCase(viewId, null, null, null, viewId, false, false);
         }
-        NavigationCase navCase = ((ConfigurableNavigationHandler) navHandler).getNavigationCase(context, null, outcome);
-        if (navCase == null) {
-            if (logger.isLoggable(Level.WARNING)) {
-                logger.log(Level.WARNING,
-                           "jsf.outcometarget.navigation.case.not.resolved",
-                           component.getId());
-            }
+        String toFlowDocumentId = (String) component.getAttributes().get(ActionListener.TO_FLOW_DOCUMENT_ID_ATTR_NAME);
+        NavigationCase navCase = null;
+        if (null == toFlowDocumentId) {
+            navCase = ((ConfigurableNavigationHandler) navHandler).getNavigationCase(context, null, outcome);            
+        } else {
+            navCase = ((ConfigurableNavigationHandler) navHandler).getNavigationCase(context, null, outcome, toFlowDocumentId);            
+        }
+
+        if (navCase == null && logger.isLoggable(Level.WARNING)) {
+            logger.log(Level.WARNING,
+                    "jsf.outcometarget.navigation.case.not.resolved",
+                    component.getId());
         }
         return navCase;
     }
@@ -159,26 +173,91 @@ public abstract class OutcomeTargetRenderer extends HtmlBasicRenderer {
         String toViewId = navCase.getToViewId(context);
         Map<String,List<String>> params = getParamOverrides(component);
         addNavigationParams(navCase, params);
-        return Util.getViewHandler(context).getBookmarkableURL(context,
+        String result = null;
+        boolean didDisableClientWindowRendering = false;
+        ClientWindow cw = null;
+
+        
+        try {
+            Map<String, Object> attrs = component.getAttributes();
+            Object val = attrs.get("disableClientWindow");
+            if (null != val) {
+                didDisableClientWindowRendering = "true".equalsIgnoreCase(val.toString());
+            }
+            if (didDisableClientWindowRendering) {
+                cw = context.getExternalContext().getClientWindow();
+                if (null != cw) {
+                    cw.disableClientWindowRenderMode(context);
+                }
+            }
+            
+            result = Util.getViewHandler(context).getBookmarkableURL(context,
                                                                toViewId,
                                                                params,
                                                                isIncludeViewParams(component, navCase));
+        } finally {
+            if (didDisableClientWindowRendering && null != cw) {
+                cw.enableClientWindowRenderMode(context);
+            }
+        }
+        
+        return result;
     }
 
     protected void addNavigationParams(NavigationCase navCase,
                                        Map<String,List<String>> existingParams) {
 
         Map<String,List<String>> navParams = navCase.getParameters();
-        if (navParams == null || navParams.isEmpty()) {
-            return;
+        if (navParams != null && !navParams.isEmpty()) {
+            for (Map.Entry<String,List<String>> entry : navParams.entrySet()) {
+                String navParamName = entry.getKey();
+                // only add the navigation params to the existing params collection
+                // if the parameter name isn't already present within the existing
+                // collection
+                if (!existingParams.containsKey(navParamName)) {
+                    if (entry.getValue().size() == 1) {
+                        String value = entry.getValue().get(0);
+                        if (value.trim().startsWith("#{") || value.trim().startsWith("${")) {
+                            FacesContext fc = FacesContext.getCurrentInstance();
+                            value = fc.getApplication().evaluateExpressionGet(fc, value, String.class);
+                            List<String> values = new ArrayList<String>();
+                            values.add(value);
+                            existingParams.put(navParamName, values);
+                        } else {
+                            existingParams.put(navParamName, entry.getValue());
+                        }
+                    } else {
+                        existingParams.put(navParamName, entry.getValue());
+                    }
+                }
+            }
         }
-        for (Map.Entry<String,List<String>> entry : navParams.entrySet()) {
-            String navParamName = entry.getKey();
-            // only add the navigation params to the existing params collection
-            // if the parameter name isn't already present within the existing
-            // collection
-            if (!existingParams.containsKey(navParamName)) {
-                existingParams.put(navParamName, entry.getValue());
+        
+        String toFlowDocumentId = navCase.getToFlowDocumentId();
+        if (null != toFlowDocumentId) {
+            if (FlowHandler.NULL_FLOW.equals(toFlowDocumentId)) {
+                List<String> flowDocumentIdValues = new ArrayList<String>();
+                flowDocumentIdValues.add(FlowHandler.NULL_FLOW);
+                existingParams.put(FlowHandler.TO_FLOW_DOCUMENT_ID_REQUEST_PARAM_NAME, flowDocumentIdValues);
+                
+                FacesContext context = FacesContext.getCurrentInstance();
+                FlowHandler fh = context.getApplication().getFlowHandler();
+                if (fh instanceof FlowHandlerImpl) {
+                    FlowHandlerImpl fhi = (FlowHandlerImpl) fh;
+                    List<String> flowReturnDepthValues = new ArrayList<String>();
+                    flowReturnDepthValues.add("" + fhi.getAndClearReturnModeDepth(context));
+                    existingParams.put(FlowHandlerImpl.FLOW_RETURN_DEPTH_PARAM_NAME, flowReturnDepthValues);
+                }
+                
+            } else {
+                String flowId = navCase.getFromOutcome();
+                List<String> flowDocumentIdValues = new ArrayList<String>();
+                flowDocumentIdValues.add(toFlowDocumentId);
+                existingParams.put(FlowHandler.TO_FLOW_DOCUMENT_ID_REQUEST_PARAM_NAME, flowDocumentIdValues);
+                
+                List<String> flowIdValues = new ArrayList<String>();
+                flowIdValues.add(flowId);
+                existingParams.put(FlowHandler.FLOW_ID_REQUEST_PARAM_NAME, flowIdValues);
             }
         }
 
diff --git a/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/OutputLinkRenderer.java b/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/OutputLinkRenderer.java
index 9ceba37..744794d 100644
--- a/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/OutputLinkRenderer.java
+++ b/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/OutputLinkRenderer.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -43,9 +47,12 @@ import java.util.logging.Level;
 
 import javax.faces.component.UIComponent;
 import javax.faces.component.UIOutput;
+import javax.faces.component.UIViewRoot;
 import javax.faces.context.FacesContext;
 import javax.faces.context.ResponseWriter;
 
+import com.sun.faces.config.WebConfiguration;
+import com.sun.faces.config.WebConfiguration.BooleanWebContextInitParameter;
 import com.sun.faces.renderkit.Attribute;
 import com.sun.faces.renderkit.AttributeManager;
 import com.sun.faces.renderkit.RenderKitUtils;
@@ -67,10 +74,15 @@ public class OutputLinkRenderer extends LinkRenderer {
     private static final Attribute[] ATTRIBUTES =
           AttributeManager.getAttributes(AttributeManager.Key.OUTPUTLINK);
 
+    protected boolean namespaceParameters;
 
     // ---------------------------------------------------------- Public Methods
 
 
+    public OutputLinkRenderer() {
+        WebConfiguration webConfig = WebConfiguration.getInstance();
+        namespaceParameters = webConfig.isOptionEnabled(BooleanWebContextInitParameter.NamespaceParameters);
+    }
 
     @Override
     public void decode(FacesContext context, UIComponent component) {
@@ -217,10 +229,18 @@ public class OutputLinkRenderer extends LinkRenderer {
         Param paramList[] = getParamList(component);
         StringBuffer sb = new StringBuffer();
         sb.append(hrefVal);
-        boolean paramWritten = false;
+        boolean paramWritten = (hrefVal.indexOf('?') > 0);
+        String namingContainerId = null;
+        if (namespaceParameters) {
+            UIViewRoot viewRoot = context.getViewRoot();
+            namingContainerId = viewRoot.getContainerClientId(context);
+        }
         for (int i = 0, len = paramList.length; i < len; i++) {
             String pn = paramList[i].name;
             if (pn != null && pn.length() != 0) {
+            	if (namingContainerId != null) {
+            		pn = namingContainerId + pn;
+            	}
                 String pv = paramList[i].value;
                 sb.append((paramWritten) ? '&' : '?');
                 sb.append(URLEncoder.encode(pn,"UTF-8"));
diff --git a/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/OutputMessageRenderer.java b/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/OutputMessageRenderer.java
index 8780ac4..76567fd 100644
--- a/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/OutputMessageRenderer.java
+++ b/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/OutputMessageRenderer.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -46,7 +50,6 @@ import java.util.List;
 
 import javax.faces.component.UIComponent;
 import javax.faces.component.UIParameter;
-import javax.faces.component.ValueHolder;
 import javax.faces.context.FacesContext;
 import javax.faces.context.ResponseWriter;
 
@@ -55,7 +58,7 @@ import com.sun.faces.renderkit.RenderKitUtils;
 
 /** <B>OutputMessageRenderer</B> is a class that renderes UIOutput */
 
-public class OutputMessageRenderer extends HtmlBasicRenderer {
+public class OutputMessageRenderer extends HtmlBasicInputRenderer {
 
     // ---------------------------------------------------------- Public Methods
 
@@ -79,17 +82,11 @@ public class OutputMessageRenderer extends HtmlBasicRenderer {
             return;
         }
 
-
-
-        Object currentObj = ((ValueHolder) component).getValue();
-        String currentValue;
-        if (currentObj != null) {
-            currentValue = currentObj.toString();
-        } else {
-            // if the value is null, do not output anything.
+        String currentValue = getCurrentValue(context, component);
+        // If null, do not putput anything - return.
+        if (null == currentValue) {
             return;
         }
-
         int childCount = component.getChildCount();
         List<Object> parameterList;
 
diff --git a/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/PassthroughRenderer.java b/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/PassthroughRenderer.java
new file mode 100644
index 0000000..12e3cb6
--- /dev/null
+++ b/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/PassthroughRenderer.java
@@ -0,0 +1,130 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.renderkit.html_basic;
+
+
+import com.sun.faces.renderkit.Attribute;
+import com.sun.faces.renderkit.AttributeManager;
+import com.sun.faces.renderkit.RenderKitUtils;
+import javax.faces.FacesException;
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.context.ResponseWriter;
+import javax.faces.render.Renderer;
+import java.io.IOException;
+import java.util.Iterator;
+import java.util.Map;
+
+public class PassthroughRenderer extends HtmlBasicRenderer {
+
+// We are purposely piggy backing off the PANELGROUP attributes since they are 
+// identical for this renderer.
+private static final Attribute[] ATTRIBUTES =
+          AttributeManager.getAttributes(AttributeManager.Key.PANELGROUP);
+
+    @Override
+    public void encodeBegin(FacesContext context, UIComponent component)
+            throws IOException {
+
+        rendererParamsNotNull(context, component);
+
+        if (!shouldEncode(component)) {
+            return;
+        }
+
+        Map<String, Object> attrs = component.getPassThroughAttributes();
+        String localName = (String) attrs.get(Renderer.PASSTHROUGH_RENDERER_LOCALNAME_KEY);
+        if (null == localName) {
+            String clientId = component.getClientId(context);
+            throw new FacesException("Unable to determine localName for component with clientId " + clientId);
+        }
+
+        ResponseWriter writer = context.getResponseWriter();
+        writer.startElement(localName, component);
+
+        writeIdAttributeIfNecessary(context, writer, component);
+        
+        RenderKitUtils.renderPassThruAttributes(context,
+                                                writer,
+                                                component,
+                                                ATTRIBUTES);
+
+    }
+
+
+    @Override
+    public void encodeChildren(FacesContext context, UIComponent component) throws IOException {
+        rendererParamsNotNull(context, component);
+
+        if (!shouldEncodeChildren(component)) {
+            return;
+        }
+
+        // Render our children recursively
+        Iterator<UIComponent> kids = getChildren(component);
+        while (kids.hasNext()) {
+            encodeRecursive(context, kids.next());
+        }
+
+    }
+
+
+    @Override
+    public void encodeEnd(FacesContext context, UIComponent component) throws IOException {
+
+        rendererParamsNotNull(context, component);
+
+        if (!shouldEncode(component)) {
+            return;
+        }
+
+        Map<String, Object> attrs = component.getPassThroughAttributes();
+        String localName = (String) attrs.get(Renderer.PASSTHROUGH_RENDERER_LOCALNAME_KEY);
+        context.getResponseWriter().endElement(localName);
+    }
+
+
+    @Override
+    public boolean getRendersChildren() {
+        return true;
+    }
+
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/RadioRenderer.java b/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/RadioRenderer.java
index 99ed7d1..786e0ec 100644
--- a/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/RadioRenderer.java
+++ b/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/RadioRenderer.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/ScriptRenderer.java b/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/ScriptRenderer.java
index dfeddc6..e53cdcb 100644
--- a/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/ScriptRenderer.java
+++ b/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/ScriptRenderer.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -36,13 +40,15 @@
 
 package com.sun.faces.renderkit.html_basic;
 
+import com.sun.faces.config.WebConfiguration;
 import java.io.IOException;
 import java.util.Map;
-
+import javax.faces.application.FacesMessage;
+import javax.faces.application.ProjectStage;
+import javax.faces.application.Resource;
 import javax.faces.component.UIComponent;
 import javax.faces.context.FacesContext;
 import javax.faces.context.ResponseWriter;
-import javax.faces.application.Resource;
 
 /**
  * <p>This <code>Renderer</code> handles the rendering of external <code>script</code>
@@ -101,18 +107,44 @@ public class ScriptRenderer extends ScriptStyleBaseRenderer {
         ResponseWriter writer = context.getResponseWriter();
         this.startElement(writer, component);
 
-        String resourceSrc;
+        String resourceSrc = "RES_NOT_FOUND";
+        
+        WebConfiguration webConfig = WebConfiguration.getInstance();
+        
+        if (library == null && name != null && 
+                name.startsWith(webConfig.getOptionValue(WebConfiguration.WebContextInitParameter.WebAppContractsDirectory))) {
+            
+            if (context.isProjectStage(ProjectStage.Development)) {
+            
+            String msg = "Illegal path, direct contract references are not allowed: " + name;
+            context.addMessage(component.getClientId(context),
+                               new FacesMessage(FacesMessage.SEVERITY_ERROR,
+                                                msg,
+                                                msg));  
+            }
+            resource = null;
+        } 
+        
         if (resource == null) {
-            resourceSrc = "RES_NOT_FOUND";
+            
+            if (context.isProjectStage(ProjectStage.Development)) {
+                String msg = "Unable to find resource " + (library == null ? "" : library + ", ") + name;
+                context.addMessage(component.getClientId(context),
+                               new FacesMessage(FacesMessage.SEVERITY_ERROR,
+                                                msg,
+                                                msg));
+            }
+            
         } else {
             resourceSrc = resource.getRequestPath();
             if (query != null) {
                 resourceSrc = resourceSrc +
-                        ((resourceSrc.indexOf("?") > -1) ? "+" : "?") +
+                        ((resourceSrc.indexOf("?") > -1) ? "&" : "?") +
                         query;
             }
+            resourceSrc = context.getExternalContext().encodeResourceURL(resourceSrc);
         }
-
+        
         writer.writeURIAttribute("src", resourceSrc, "src");
         this.endElement(writer);
         super.encodeEnd(context, component);
diff --git a/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/ScriptStyleBaseRenderer.java b/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/ScriptStyleBaseRenderer.java
index 7249cc6..b8f5d7c 100644
--- a/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/ScriptStyleBaseRenderer.java
+++ b/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/ScriptStyleBaseRenderer.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -143,17 +147,19 @@ public abstract class ScriptStyleBaseRenderer extends Renderer implements Compon
           throws IOException {
 
         String ccID = (String) component.getAttributes().get(COMP_KEY);
-        UIComponent cc = context.getViewRoot().findComponent(':' + ccID);
-        UIComponent curCC = UIComponent.getCurrentCompositeComponent(context);
-        if (cc != curCC) {
-            // the first pop maps to the component we're rendering.
-            // push the composite component to the 'stack' and then re-push
-            // the component we're rendering so the current component is
-            // correct.
-            component.popComponentFromEL(context);
-            component.pushComponentToEL(context, cc);
-            component.pushComponentToEL(context, component);
-        } 
+        if (null != ccID) {
+            UIComponent cc = context.getViewRoot().findComponent(':' + ccID);
+            UIComponent curCC = UIComponent.getCurrentCompositeComponent(context);
+            if (cc != curCC) {
+                // the first pop maps to the component we're rendering.
+                // push the composite component to the 'stack' and then re-push
+                // the component we're rendering so the current component is
+                // correct.
+                component.popComponentFromEL(context);
+                component.pushComponentToEL(context, cc);
+                component.pushComponentToEL(context, component);
+            }
+        }
 
     }
         
diff --git a/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/SecretRenderer.java b/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/SecretRenderer.java
index 2bb423a..060a7d0 100644
--- a/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/SecretRenderer.java
+++ b/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/SecretRenderer.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/SelectManyCheckboxListRenderer.java b/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/SelectManyCheckboxListRenderer.java
index 95824e1..43be0b2 100644
--- a/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/SelectManyCheckboxListRenderer.java
+++ b/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/SelectManyCheckboxListRenderer.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -207,8 +211,13 @@ public class SelectManyCheckboxListRenderer extends MenuRenderer {
             return false;
         }
         char sepChar = UINamingContainer.getSeparatorChar(ctx);
-        String actualBehaviorId =
-              behaviorSourceId.substring(0, behaviorSourceId.lastIndexOf(sepChar));
+        String actualBehaviorId;
+        if (behaviorSourceId.lastIndexOf(sepChar) != -1) { 
+            actualBehaviorId = behaviorSourceId.substring(0, behaviorSourceId.lastIndexOf(sepChar));
+        } else {
+            actualBehaviorId = behaviorSourceId;
+        }
+        
         return (actualBehaviorId.equals(componentClientId));
 
     }
@@ -354,7 +363,7 @@ public class SelectManyCheckboxListRenderer extends MenuRenderer {
 
         RenderKitUtils.renderXHTMLStyleBooleanAttributes(writer, component);
         
-        RenderKitUtils.renderSelectOnclick(context, component, true);
+        RenderKitUtils.renderSelectOnclick(context, component, false);
 
         writer.endElement("input");
         writer.startElement("label", component);
@@ -399,11 +408,11 @@ public class SelectManyCheckboxListRenderer extends MenuRenderer {
         } else {
             writer.writeText(itemLabel, component, "label");
         }
-        if (isSelected(context, component, itemValue, valuesArray, converter)) {
-            
-        } else { // not selected
-            
-        }
+//        if (isSelected(context, component, itemValue, valuesArray, converter)) {
+//            
+//        } else { // not selected
+//            
+//        }
         writer.endElement("label");
         writer.endElement("td");
         writer.writeText("\n", component, null);
diff --git a/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/StylesheetRenderer.java b/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/StylesheetRenderer.java
index 7439ba4..e4cf956 100644
--- a/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/StylesheetRenderer.java
+++ b/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/StylesheetRenderer.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -36,9 +40,12 @@
 
 package com.sun.faces.renderkit.html_basic;
 
+import com.sun.faces.config.WebConfiguration;
 import java.io.IOException;
 import java.util.Map;
 
+import javax.faces.application.FacesMessage;
+import javax.faces.application.ProjectStage;
 import javax.faces.application.Resource;
 import javax.faces.component.UIComponent;
 import javax.faces.context.FacesContext;
@@ -77,6 +84,8 @@ public class StylesheetRenderer extends ScriptStyleBaseRenderer {
         String name = (String) attributes.get("name");
         String library = (String) attributes.get("library");
         String key = name + library;
+
+        String media = (String) attributes.get("media");
         
         if (null == name) {
             return;
@@ -95,11 +104,36 @@ public class StylesheetRenderer extends ScriptStyleBaseRenderer {
         writer.startElement("link", component);
         writer.writeAttribute("type", "text/css", "type");
         writer.writeAttribute("rel", "stylesheet", "rel");
-        writer.writeURIAttribute("href",
-                              ((resource != null)
-                                  ? resource.getRequestPath()
-                                  : "RES_NOT_FOUND"),
-                              "href");
+
+        String resourceUrl = "RES_NOT_FOUND";
+
+        WebConfiguration webConfig = WebConfiguration.getInstance();
+
+        if (library == null 
+                && name.startsWith(webConfig.getOptionValue(WebConfiguration.WebContextInitParameter.WebAppContractsDirectory))
+                && context.isProjectStage(ProjectStage.Development)) {
+            String msg = "Illegal path, direct contract references are not allowed: " + name;
+            context.addMessage(component.getClientId(context),
+                               new FacesMessage(FacesMessage.SEVERITY_ERROR,
+                                                msg,
+                                                msg));                
+            resource = null;
+        }
+        
+        if (resource != null) {
+        	resourceUrl = context.getExternalContext().encodeResourceURL(resource.getRequestPath());
+        } else if (context.isProjectStage(ProjectStage.Development)) {
+            String msg = "Unable to find resource " + (library == null ? "" : library + ", ") + name;
+            context.addMessage(component.getClientId(context),
+                               new FacesMessage(FacesMessage.SEVERITY_ERROR,
+                                                msg,
+                                                msg));
+        }
+        
+        writer.writeURIAttribute("href", resourceUrl, "href");
+        if (media != null) {
+            writer.writeAttribute("media", media, "media");
+        }
         writer.endElement("link");
         super.encodeEnd(context, component);
     }
diff --git a/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/TableRenderer.java b/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/TableRenderer.java
index 681e6db..1f32b6e 100644
--- a/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/TableRenderer.java
+++ b/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/TableRenderer.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -37,21 +41,21 @@
 package com.sun.faces.renderkit.html_basic;
 
 
+import com.sun.faces.renderkit.Attribute;
+import com.sun.faces.renderkit.AttributeManager;
+import com.sun.faces.util.Util;
 import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collections;
 import java.util.Iterator;
 import java.util.List;
-import java.util.ArrayList;
-
+import java.util.Map;
 import javax.faces.component.UIColumn;
 import javax.faces.component.UIComponent;
 import javax.faces.component.UIData;
 import javax.faces.context.FacesContext;
 import javax.faces.context.ResponseWriter;
 
-import com.sun.faces.renderkit.Attribute;
-import com.sun.faces.renderkit.AttributeManager;
-import com.sun.faces.util.Util;
-
 /** <p>Render a {@link UIData} component as a two-dimensional table.</p> */
 
 public class TableRenderer extends BaseTableRenderer {
@@ -122,7 +126,7 @@ public class TableRenderer extends BaseTableRenderer {
         int processed = 0;
         int rowIndex = data.getFirst() - 1;
         int rows = data.getRows();
-        List<Integer> bodyRows = getBodyRows(data);
+        List<Integer> bodyRows = getBodyRows(context.getExternalContext().getApplicationMap(), data);
         boolean hasBodyRows = (bodyRows != null && !bodyRows.isEmpty());
         boolean wroteTableBody = false;
         if (!hasBodyRows) {
@@ -202,12 +206,12 @@ public class TableRenderer extends BaseTableRenderer {
     // ------------------------------------------------------- Protected Methods
 
 
-    private List<Integer> getBodyRows(UIData data) {
+    private List<Integer> getBodyRows(Map<String, Object> appMap, UIData data) {
 
         List<Integer> result = null;
         String bodyRows = (String) data.getAttributes().get("bodyrows");
         if (bodyRows != null) {
-            String [] rows = Util.split(bodyRows, ",");
+            String [] rows = Util.split(appMap, bodyRows, ",");
             if (rows != null) {
                 result = new ArrayList<Integer>(rows.length);
                 for (String curRow : rows) {
@@ -261,6 +265,7 @@ public class TableRenderer extends BaseTableRenderer {
                 }
                 UIComponent facet = getFacet(column, "footer");
                 if (facet != null) {
+                    writer.writeText("", table, null);
                     encodeRecursive(context, facet);
                 }
                 writer.endElement("td");
@@ -354,7 +359,11 @@ public class TableRenderer extends BaseTableRenderer {
         for (UIColumn column : info.columns) {
 
             // Render the beginning of this cell
-            boolean isRowHeader = Boolean.TRUE.equals(column.getAttributes().get("rowHeader"));
+            boolean isRowHeader = false;
+            Object rowHeaderValue = column.getAttributes().get("rowHeader");
+            if (null != rowHeaderValue ) {
+                isRowHeader = Boolean.valueOf(rowHeaderValue.toString());
+            }
             if (isRowHeader) {
                 writer.startElement("th", column);
                 writer.writeAttribute("scope", "row", null);
@@ -406,10 +415,38 @@ public class TableRenderer extends BaseTableRenderer {
     		throws IOException {
     	
     	writer.startElement("tr", component);
-    	writer.startElement("td", component);
-    	writer.endElement("td");
+        List<UIColumn> columns = getColumns(component);
+        for (UIColumn column : columns) {
+            if (column.isRendered()) {
+                writer.startElement("td", component);
+                writer.endElement("td");
+            }
+        }
     	writer.endElement("tr");
-    
     }
 
+    /**
+     * <p>Return an Iterator over the <code>UIColumn</code> children of the
+     * specified <code>UIData</code> that have a <code>rendered</code> property
+     * of <code>true</code>.</p>
+     *
+     * @param table the table from which to extract children
+     *
+     * @return the List of all UIColumn children
+     */
+    private List<UIColumn> getColumns(UIComponent table) {
+        int childCount = table.getChildCount();
+        if (childCount > 0) {
+            List<UIColumn> results =
+                  new ArrayList<UIColumn>(childCount);
+            for (UIComponent kid : table.getChildren()) {
+                if ((kid instanceof UIColumn) && kid.isRendered()) {
+                    results.add((UIColumn) kid);
+                }
+            }
+            return results;
+        } else {
+            return Collections.emptyList();
+        }
+    }
 }
diff --git a/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/TextRenderer.java b/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/TextRenderer.java
index 4c385eb..b0b0b04 100644
--- a/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/TextRenderer.java
+++ b/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/TextRenderer.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -40,6 +44,7 @@ package com.sun.faces.renderkit.html_basic;
 
 import java.io.IOException;
 
+import javax.faces.component.html.HtmlInputFile; // FILE_UPLOAD
 import javax.faces.component.UIComponent;
 import javax.faces.component.UIInput;
 import javax.faces.component.UIOutput;
@@ -50,6 +55,7 @@ import com.sun.faces.renderkit.Attribute;
 import com.sun.faces.renderkit.AttributeManager;
 import com.sun.faces.renderkit.RenderKitUtils;
 import com.sun.faces.config.WebConfiguration;
+import java.util.Map;
 
 /**
  * <B>TextRenderer</B> is a class that renders the current value of
@@ -95,10 +101,18 @@ public class TextRenderer extends HtmlBasicInputRenderer {
         String dir = (String) component.getAttributes().get("dir");
         String lang = (String) component.getAttributes().get("lang");
         String title = (String) component.getAttributes().get("title");
+        Map<String, Object> passthroughAttributes = component.getPassThroughAttributes(false);
+        boolean hasPassthroughAttributes = null != passthroughAttributes && !passthroughAttributes.isEmpty();
         if (component instanceof UIInput) {
             writer.startElement("input", component);
             writeIdAttributeIfNecessary(context, writer, component);
-            writer.writeAttribute("type", "text", null);
+            
+            if (component instanceof HtmlInputFile) {
+                writer.writeAttribute("type", "file", null);
+            }
+            else {
+                writer.writeAttribute("type", "text", null);
+            }
             writer.writeAttribute("name", (component.getClientId(context)),
                                   "clientId");
 
@@ -138,6 +152,7 @@ public class TextRenderer extends HtmlBasicInputRenderer {
                  || dir != null
                  || lang != null
                  || title != null
+                 || hasPassthroughAttributes
                  || (shouldWriteIdAttribute = shouldWriteIdAttribute(component))) {
                 writer.startElement("span", component);
                 writeIdAttributeIfNecessary(context, writer, component);
@@ -165,6 +180,7 @@ public class TextRenderer extends HtmlBasicInputRenderer {
                  || dir != null
                  || lang != null
                  || title != null
+                 || hasPassthroughAttributes
                  || (shouldWriteIdAttribute))) {
             writer.endElement("span");
         }
diff --git a/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/TextareaRenderer.java b/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/TextareaRenderer.java
index 019da97..4ceb145 100644
--- a/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/TextareaRenderer.java
+++ b/jsf-ri/src/main/java/com/sun/faces/renderkit/html_basic/TextareaRenderer.java
@@ -1,115 +1,122 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-// TextareaRenderer.java
-
-package com.sun.faces.renderkit.html_basic;
-
-import java.io.IOException;
-
-import javax.faces.component.UIComponent;
-import javax.faces.context.FacesContext;
-import javax.faces.context.ResponseWriter;
-
-import com.sun.faces.renderkit.Attribute;
-import com.sun.faces.renderkit.AttributeManager;
-import com.sun.faces.renderkit.RenderKitUtils;
-import com.sun.faces.util.MessageUtils;
-
-/**
- * <B>TextareaRenderer</B> is a class that renders the current value of
- * <code>UIInput<code> component as a Textarea.
- */
-
-public class TextareaRenderer extends HtmlBasicInputRenderer {
-
-
-    private static final Attribute[] ATTRIBUTES =
-          AttributeManager.getAttributes(AttributeManager.Key.INPUTTEXTAREA);
-
-    // ---------------------------------------------------------- Public Methods
-
-
-    @Override
-    public void encodeBegin(FacesContext context, UIComponent component)
-          throws IOException {
-
-        rendererParamsNotNull(context, component);
-
-    }
-
-    // ------------------------------------------------------- Protected Methods
-
-
-    @Override
-    protected void getEndTextToRender(FacesContext context,
-                                      UIComponent component,
-                                      String currentValue) throws IOException {
-
-        ResponseWriter writer = context.getResponseWriter();
-        assert(writer != null);
-
-        String styleClass =
-              (String) component.getAttributes().get("styleClass");
-
-        writer.startElement("textarea", component);
-        writeIdAttributeIfNecessary(context, writer, component);
-        writer.writeAttribute("name", component.getClientId(context),
-                              "clientId");
-        if (null != styleClass) {
-            writer.writeAttribute("class", styleClass, "styleClass");
-        }
-
-        // style is rendered as a passthru attribute
-        RenderKitUtils.renderPassThruAttributes(context,
-                                                writer,
-                                                component,
-                                                ATTRIBUTES);
-        RenderKitUtils.renderXHTMLStyleBooleanAttributes(writer, component);
-
-        RenderKitUtils.renderOnchange(context, component, false);
-        
-
-        // render default text specified
-        if (currentValue != null) {
-            writer.writeText(currentValue, component, "value");
-        }
-
-        writer.endElement("textarea");
-
-    }
-
-} // end of class TextareaRenderer
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+// TextareaRenderer.java
+
+package com.sun.faces.renderkit.html_basic;
+
+import java.io.IOException;
+
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.context.ResponseWriter;
+
+import com.sun.faces.renderkit.Attribute;
+import com.sun.faces.renderkit.AttributeManager;
+import com.sun.faces.renderkit.RenderKitUtils;
+
+/**
+ * <B>TextareaRenderer</B> is a class that renders the current value of
+ * <code>UIInput<code> component as a Textarea.
+ */
+
+public class TextareaRenderer extends HtmlBasicInputRenderer {
+
+
+    private static final Attribute[] ATTRIBUTES =
+          AttributeManager.getAttributes(AttributeManager.Key.INPUTTEXTAREA);
+
+    // ---------------------------------------------------------- Public Methods
+
+
+    @Override
+    public void encodeBegin(FacesContext context, UIComponent component)
+          throws IOException {
+
+        rendererParamsNotNull(context, component);
+
+    }
+
+    // ------------------------------------------------------- Protected Methods
+
+
+    @Override
+    protected void getEndTextToRender(FacesContext context,
+                                      UIComponent component,
+                                      String currentValue) throws IOException {
+
+        ResponseWriter writer = context.getResponseWriter();
+        assert(writer != null);
+
+        String styleClass =
+              (String) component.getAttributes().get("styleClass");
+
+        writer.startElement("textarea", component);
+        writeIdAttributeIfNecessary(context, writer, component);
+        writer.writeAttribute("name", component.getClientId(context),
+                              "clientId");
+        if (null != styleClass) {
+            writer.writeAttribute("class", styleClass, "styleClass");
+        }
+
+        // style is rendered as a passthru attribute
+        RenderKitUtils.renderPassThruAttributes(context,
+                                                writer,
+                                                component,
+                                                ATTRIBUTES);
+        RenderKitUtils.renderXHTMLStyleBooleanAttributes(writer, component);
+
+        RenderKitUtils.renderOnchange(context, component, false);
+
+        if (component.getAttributes().containsKey("com.sun.faces.addNewLineAtStart") &&
+                "true".equalsIgnoreCase((String) component.getAttributes().get("com.sun.faces.addNewLineAtStart"))) {
+            writer.writeText("\n", null);
+        }
+
+        // render default text specified
+        if (currentValue != null) {
+            writer.writeText(currentValue, component, "value");
+        }
+
+        writer.endElement("textarea");
+
+    }
+
+} // end of class TextareaRenderer
diff --git a/jsf-ri/src/main/java/com/sun/faces/scripting/GroovySupportFilter.java b/jsf-ri/src/main/java/com/sun/faces/scripting/GroovySupportFilter.java
index 3cd6ad2..314ee11 100644
--- a/jsf-ri/src/main/java/com/sun/faces/scripting/GroovySupportFilter.java
+++ b/jsf-ri/src/main/java/com/sun/faces/scripting/GroovySupportFilter.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -36,7 +40,7 @@
 
 package com.sun.faces.scripting;
 
-import com.sun.faces.scripting.groovy.GroovyHelper;
+import com.sun.faces.util.Util;
 import java.io.IOException;
 
 import javax.servlet.Filter;
@@ -49,35 +53,29 @@ import javax.servlet.ServletContext;
 
 public class GroovySupportFilter implements Filter {
 
-    private boolean helperChecked;
-    private GroovyHelper helper;
     private ServletContext sc;
+    
+    private Filter delegate;
 
     public void init(FilterConfig filterConfig) throws ServletException {
         sc = filterConfig.getServletContext();
+        if (Util.isCDIAvailable(sc)) {
+            delegate = new WeldAwareGroovySupportFilter();
+        } else {
+            delegate = new NonWeldAwareGroovySupportFilter();
+        }
+        delegate.init(filterConfig);
     }
 
     public void doFilter(ServletRequest servletRequest,
                          ServletResponse servletResponse,
                          FilterChain filterChain)
           throws IOException, ServletException {
-
-        if (!helperChecked) {
-            helper = GroovyHelper.getCurrentInstance(sc);
-            // if null at this point, it will be null for the remainder
-            // of the app.  Set a flag so that we don't continually hit
-            // the ServletContext looking up the helper.
-            helperChecked = true;
-        }
-        if (helper != null) {
-            helper.setClassLoader();
-        }
-        filterChain.doFilter(servletRequest, servletResponse);
-        
+        delegate.doFilter(servletRequest, servletResponse, filterChain);        
     }
 
     public void destroy() {
-        // no-op
+        delegate.destroy();
     }
     
 }
diff --git a/jsf-ri/src/main/java/com/sun/faces/scripting/NonWeldAwareGroovySupportFilter.java b/jsf-ri/src/main/java/com/sun/faces/scripting/NonWeldAwareGroovySupportFilter.java
new file mode 100644
index 0000000..00fbd82
--- /dev/null
+++ b/jsf-ri/src/main/java/com/sun/faces/scripting/NonWeldAwareGroovySupportFilter.java
@@ -0,0 +1,87 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.scripting;
+
+import com.sun.faces.scripting.groovy.GroovyHelper;
+import java.io.IOException;
+
+import javax.servlet.Filter;
+import javax.servlet.FilterConfig;
+import javax.servlet.ServletException;
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletResponse;
+import javax.servlet.FilterChain;
+import javax.servlet.ServletContext;
+
+class NonWeldAwareGroovySupportFilter implements Filter {
+
+    private boolean helperChecked;
+    private GroovyHelper helper;
+    private ServletContext sc;
+
+    public void init(FilterConfig filterConfig) throws ServletException {
+        sc = filterConfig.getServletContext();
+    }
+
+    public void doFilter(ServletRequest servletRequest,
+                         ServletResponse servletResponse,
+                         FilterChain filterChain)
+          throws IOException, ServletException {
+
+        if (!helperChecked) {
+            helper = GroovyHelper.getCurrentInstance(sc);
+            // if null at this point, it will be null for the remainder
+            // of the app.  Set a flag so that we don't continually hit
+            // the ServletContext looking up the helper.
+            helperChecked = true;
+        }
+        if (helper != null) {
+            helper.setClassLoader();
+        }
+        filterChain.doFilter(servletRequest, servletResponse);
+        
+    }
+
+    public void destroy() {
+        // no-op
+    }
+    
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/scripting/ScriptManager.java b/jsf-ri/src/main/java/com/sun/faces/scripting/ScriptManager.java
index 4743539..1e65a1a 100644
--- a/jsf-ri/src/main/java/com/sun/faces/scripting/ScriptManager.java
+++ b/jsf-ri/src/main/java/com/sun/faces/scripting/ScriptManager.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -33,9 +37,9 @@
  * only if the new code is made subject to such option by the copyright
  * holder.
  */
+
 package com.sun.faces.scripting;
 
-import javax.faces.context.ExternalContext;
 import java.util.Set;
 
 public interface ScriptManager {
diff --git a/jsf-ri/src/main/java/com/sun/faces/scripting/WeldAwareGroovySupportFilter.java b/jsf-ri/src/main/java/com/sun/faces/scripting/WeldAwareGroovySupportFilter.java
new file mode 100644
index 0000000..4dd0837
--- /dev/null
+++ b/jsf-ri/src/main/java/com/sun/faces/scripting/WeldAwareGroovySupportFilter.java
@@ -0,0 +1,167 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.scripting;
+
+import com.sun.faces.scripting.groovy.GroovyHelper;
+import java.io.IOException;
+
+import java.lang.reflect.Field;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.servlet.Filter;
+import javax.servlet.FilterConfig;
+import javax.servlet.ServletException;
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletResponse;
+import javax.servlet.FilterChain;
+import javax.servlet.ServletContext;
+
+class WeldAwareGroovySupportFilter implements Filter {
+
+    private boolean helperChecked;
+    private GroovyHelper helper;
+    private ServletContext sc;
+    
+    private Class containerClass;
+    private Field instanceField;
+    private Method instanceMethod;
+    
+    private Class singletonClass;
+    private Method singletonSetMethod;
+
+    public void init(FilterConfig filterConfig) throws ServletException {
+        sc = filterConfig.getServletContext();
+        try {
+            obtainReflectionReferences();
+        } catch (Exception ex) {
+            throw new ServletException(ex);
+        }
+    }
+    
+    private void obtainReflectionReferences() throws Exception {
+        ClassLoader tccl = Thread.currentThread().getContextClassLoader();
+        
+        containerClass = tccl.loadClass("org.jboss.weld.Container");
+        instanceField = containerClass.getDeclaredField("instance");
+        instanceField.setAccessible(true);
+        Class [] paramTypes = new Class[0];
+        instanceMethod = containerClass.getDeclaredMethod("instance", paramTypes);
+        instanceMethod.setAccessible(true);
+        
+        singletonClass = tccl.loadClass("org.jboss.weld.bootstrap.api.Singleton");
+        paramTypes = new Class[1];
+        paramTypes[0] = Object.class;
+        singletonSetMethod = singletonClass.getDeclaredMethod("set", paramTypes);
+        
+    }
+
+    public void doFilter(ServletRequest servletRequest,
+                         ServletResponse servletResponse,
+                         FilterChain filterChain)
+          throws IOException, ServletException {
+
+        if (!helperChecked) {
+            helper = GroovyHelper.getCurrentInstance(sc);
+            // if null at this point, it will be null for the remainder
+            // of the app.  Set a flag so that we don't continually hit
+            // the ServletContext looking up the helper.
+            helperChecked = true;
+        }
+        if (helper != null) {
+            // Get the "real" ContextClassLoader
+            Thread currentThread = Thread.currentThread();
+            ClassLoader contextClassLoader = currentThread.getContextClassLoader();
+            
+            // Get the MojarraGroovyClassLoader
+            helper.setClassLoader();
+            ClassLoader mojarraGroovyClassLoader = currentThread.getContextClassLoader();
+            
+            // Set the ContextClassLoader back
+            currentThread.setContextClassLoader(contextClassLoader);
+            
+            // Obtain the Container
+            Object c = null;
+            try {
+                c = getWeldContainerInstance();
+            } catch (Exception ex) {
+                Logger.getLogger(WeldAwareGroovySupportFilter.class.getName()).log(Level.SEVERE, null, ex);
+            }
+            
+            // Set the MojarraGroovyClassLoader back
+            currentThread.setContextClassLoader(mojarraGroovyClassLoader);
+            try {
+                installMojarraGroovyClassLoaderToContainer(c);
+            } catch (Exception ex) {
+                Logger.getLogger(WeldAwareGroovySupportFilter.class.getName()).log(Level.SEVERE, null, ex);
+            }
+            
+            // Re-install the MojarraGroovyClassLoader
+            helper.setClassLoader();
+
+
+        }
+        filterChain.doFilter(servletRequest, servletResponse);
+        
+    }
+    
+    private Object getWeldContainerInstance() throws Exception {
+        Object [] args = new Object[0];
+        Object result = instanceMethod.invoke(null, args);
+        
+        return result;
+    }
+    
+    private void installMojarraGroovyClassLoaderToContainer(Object c) throws NoSuchFieldException, NoSuchMethodException, IllegalArgumentException, IllegalAccessException, InvocationTargetException {
+        Object aclSingletonProvider = instanceField.get(null);
+        
+        singletonSetMethod.invoke(aclSingletonProvider, c);
+        
+        
+    }
+    
+
+    public void destroy() {
+        // no-op
+    }
+    
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/scripting/groovy/ActionListenerProxy.java b/jsf-ri/src/main/java/com/sun/faces/scripting/groovy/ActionListenerProxy.java
index 63bc7d7..5ee9725 100644
--- a/jsf-ri/src/main/java/com/sun/faces/scripting/groovy/ActionListenerProxy.java
+++ b/jsf-ri/src/main/java/com/sun/faces/scripting/groovy/ActionListenerProxy.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -34,7 +38,6 @@
  * holder.
  */
 
-
 package com.sun.faces.scripting.groovy;
 
 import javax.faces.event.AbortProcessingException;
diff --git a/jsf-ri/src/main/java/com/sun/faces/scripting/groovy/ELResolverProxy.java b/jsf-ri/src/main/java/com/sun/faces/scripting/groovy/ELResolverProxy.java
index 42fa7ac..eeed301 100644
--- a/jsf-ri/src/main/java/com/sun/faces/scripting/groovy/ELResolverProxy.java
+++ b/jsf-ri/src/main/java/com/sun/faces/scripting/groovy/ELResolverProxy.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/scripting/groovy/GroovyHelper.java b/jsf-ri/src/main/java/com/sun/faces/scripting/groovy/GroovyHelper.java
index f5edb09..f8b4318 100644
--- a/jsf-ri/src/main/java/com/sun/faces/scripting/groovy/GroovyHelper.java
+++ b/jsf-ri/src/main/java/com/sun/faces/scripting/groovy/GroovyHelper.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -43,13 +47,16 @@ import javax.faces.context.FacesContext;
 import javax.servlet.ServletContext;
 import java.lang.reflect.Constructor;
 import java.net.URL;
-import java.util.Set;
+import java.util.logging.Level;
+import java.util.logging.Logger;
 
 /**
  * Base class for interfacing with Groovy.
  */
 public abstract class GroovyHelper {
 
+    private static final Logger LOGGER = Logger.getLogger(GroovyHelper.class.getPackage().getName());
+    
     public static boolean isGroovyAvailable(FacesContext ctx) {
 
         return (ctx.getExternalContext().getApplicationMap().get("com.sun.faces.groovyhelper") != null);
@@ -109,7 +116,10 @@ public abstract class GroovyHelper {
         if (root != null) {
             try {
                 return groovyClass.getConstructor(ctorArgument);
-            } catch (Exception ignored) {
+            } catch (Exception e) {
+                if (LOGGER.isLoggable(Level.FINEST)) {
+                    LOGGER.log(Level.FINE, "Unable to get constructor", e);
+                }
             }
         }
         return null;
diff --git a/jsf-ri/src/main/java/com/sun/faces/scripting/groovy/GroovyHelperFactory.java b/jsf-ri/src/main/java/com/sun/faces/scripting/groovy/GroovyHelperFactory.java
index 520882e..c5b7951 100644
--- a/jsf-ri/src/main/java/com/sun/faces/scripting/groovy/GroovyHelperFactory.java
+++ b/jsf-ri/src/main/java/com/sun/faces/scripting/groovy/GroovyHelperFactory.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -71,9 +75,11 @@ public class GroovyHelperFactory {
                     }
                 }
             }
-        } catch (ClassNotFoundException ignored) {
+        } catch (ClassNotFoundException cnfe) {
+            if (LOGGER.isLoggable(Level.FINEST)) {
+                LOGGER.log(Level.FINEST, "Unable to find class", cnfe);
+            }
         }
         return null;
     }
-
 }
diff --git a/jsf-ri/src/main/java/com/sun/faces/scripting/groovy/GroovyHelperImpl.java b/jsf-ri/src/main/java/com/sun/faces/scripting/groovy/GroovyHelperImpl.java
index 101fbd7..7caa78d 100644
--- a/jsf-ri/src/main/java/com/sun/faces/scripting/groovy/GroovyHelperImpl.java
+++ b/jsf-ri/src/main/java/com/sun/faces/scripting/groovy/GroovyHelperImpl.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -43,9 +47,7 @@ import groovy.util.GroovyScriptEngine;
 import javax.faces.FacesException;
 import javax.faces.context.ExternalContext;
 import javax.faces.context.FacesContext;
-import java.io.BufferedReader;
 import java.io.IOException;
-import java.io.InputStreamReader;
 import java.net.MalformedURLException;
 import java.net.URL;
 import java.net.URLClassLoader;
@@ -53,11 +55,12 @@ import java.util.*;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
+import javax.servlet.ServletContext;
 
 /**
  * Helper class to interface with the Groovy runtime.
  */
-class GroovyHelperImpl extends GroovyHelper {
+public class GroovyHelperImpl extends GroovyHelper {
 
 
     private static final Logger LOGGER = FacesLogger.APPLICATION.getLogger();
@@ -69,7 +72,6 @@ class GroovyHelperImpl extends GroovyHelper {
 
 
     GroovyHelperImpl() throws Exception {
-
         FacesContext facesContext = FacesContext.getCurrentInstance();
         ExternalContext extContext = facesContext.getExternalContext();
         ClassLoader curLoader = Thread.currentThread().getContextClassLoader();
@@ -89,6 +91,7 @@ class GroovyHelperImpl extends GroovyHelper {
             }
             extContext.getApplicationMap().put("com.sun.faces.groovyhelper",
                     this);
+            ((ServletContext)(extContext.getContext())).setAttribute("com.sun.faces.groovyhelper", this);
         }
 
     }
@@ -189,12 +192,13 @@ class GroovyHelperImpl extends GroovyHelper {
 
     // ----------------------------------------------------------- Inner Classes
 
-    private static final class MojarraGroovyClassLoader extends URLClassLoader {
+    public static final class MojarraGroovyClassLoader extends URLClassLoader {
 
         private GroovyScriptEngine gse;
 
         public MojarraGroovyClassLoader(GroovyScriptEngine gse) {
             super(new URL[0], gse.getGroovyClassLoader());
+	    gse.getGroovyClassLoader().setShouldRecompile(Boolean.TRUE);
             this.gse = gse;
         }
 
@@ -209,12 +213,12 @@ class GroovyHelperImpl extends GroovyHelper {
             }
             Class<?> c;
             try {
-                c = gse.getGroovyClassLoader().getParent().loadClass(name);
-            } catch (ClassNotFoundException cnfe) {
+                c = gse.loadScriptByName(name);
+            } catch (Exception e) {
                 try {
-                    c = gse.loadScriptByName(name);
-                } catch (Exception e) {
-                    throw new ClassNotFoundException(name, e);
+                    c = gse.getGroovyClassLoader().loadClass(name);
+                } catch (ClassNotFoundException cnfe) {
+                    throw new ClassNotFoundException(name, cnfe);
                 }
             }
             if (c == null) {
@@ -225,4 +229,4 @@ class GroovyHelperImpl extends GroovyHelper {
 
     }
 
-}
\ No newline at end of file
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/scripting/groovy/GroovyScriptManager.java b/jsf-ri/src/main/java/com/sun/faces/scripting/groovy/GroovyScriptManager.java
index b585f16..f7a1cf3 100644
--- a/jsf-ri/src/main/java/com/sun/faces/scripting/groovy/GroovyScriptManager.java
+++ b/jsf-ri/src/main/java/com/sun/faces/scripting/groovy/GroovyScriptManager.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -36,10 +40,10 @@
 
 package com.sun.faces.scripting.groovy;
 
+import com.sun.faces.RIConstants;
 import com.sun.faces.scripting.ScriptManager;
 import com.sun.faces.util.FacesLogger;
 
-import javax.faces.context.ExternalContext;
 import javax.servlet.ServletContext;
 import java.io.BufferedReader;
 import java.io.InputStreamReader;
@@ -116,7 +120,7 @@ public class GroovyScriptManager implements ScriptManager {
         BufferedReader in = null;
         try {
             URL url = sc.getResource(pathElement);
-            in = new BufferedReader(new InputStreamReader(url.openStream()));
+            in = new BufferedReader(new InputStreamReader(url.openStream(), RIConstants.CHAR_ENCODING));
             String line = in.readLine();
             while ((line != null) && (!containsAnnotation)) {
                 line = line.trim();
@@ -139,8 +143,10 @@ public class GroovyScriptManager implements ScriptManager {
             if (in != null) {
                 try {
                     in.close();
-                } catch (Exception ignore) {
-                    //
+                } catch (Exception e) {
+                    if (LOGGER.isLoggable(Level.FINEST)) {
+                        LOGGER.log(Level.FINEST, "Closing stream", e);
+                    }
                 }
             }
         }
@@ -167,4 +173,4 @@ public class GroovyScriptManager implements ScriptManager {
 
         return className.replace('/', '.');
     }
-}
\ No newline at end of file
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/scripting/groovy/NavigationHandlerProxy.java b/jsf-ri/src/main/java/com/sun/faces/scripting/groovy/NavigationHandlerProxy.java
index aa7c6b1..5791a81 100644
--- a/jsf-ri/src/main/java/com/sun/faces/scripting/groovy/NavigationHandlerProxy.java
+++ b/jsf-ri/src/main/java/com/sun/faces/scripting/groovy/NavigationHandlerProxy.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/scripting/groovy/PhaseListenerProxy.java b/jsf-ri/src/main/java/com/sun/faces/scripting/groovy/PhaseListenerProxy.java
index b9a0d07..e9d6f9d 100644
--- a/jsf-ri/src/main/java/com/sun/faces/scripting/groovy/PhaseListenerProxy.java
+++ b/jsf-ri/src/main/java/com/sun/faces/scripting/groovy/PhaseListenerProxy.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/scripting/groovy/RendererProxy.java b/jsf-ri/src/main/java/com/sun/faces/scripting/groovy/RendererProxy.java
index 481d0ec..4f084e0 100644
--- a/jsf-ri/src/main/java/com/sun/faces/scripting/groovy/RendererProxy.java
+++ b/jsf-ri/src/main/java/com/sun/faces/scripting/groovy/RendererProxy.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/scripting/groovy/ViewHandlerProxy.java b/jsf-ri/src/main/java/com/sun/faces/scripting/groovy/ViewHandlerProxy.java
index 5a74134..8d3a9a8 100644
--- a/jsf-ri/src/main/java/com/sun/faces/scripting/groovy/ViewHandlerProxy.java
+++ b/jsf-ri/src/main/java/com/sun/faces/scripting/groovy/ViewHandlerProxy.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -43,10 +47,8 @@ import java.util.Map;
 
 import javax.faces.FacesException;
 import javax.faces.view.ViewDeclarationLanguage;
-import javax.faces.view.AttachedObjectHandler;
 import javax.faces.application.ViewHandler;
 import javax.faces.component.UIViewRoot;
-import javax.faces.component.UIComponent;
 import javax.faces.context.FacesContext;
 
 /**
@@ -111,6 +113,12 @@ public class ViewHandlerProxy extends ViewHandler {
     }
 
     @Override
+    public String deriveLogicalViewId(FacesContext context, String input) {
+        return getGroovyDelegate().deriveLogicalViewId(context, input);
+    }
+
+
+    @Override
     public String getRedirectURL(FacesContext context,
                                  String viewId,
                                  Map<String,List<String>> parameters,
diff --git a/jsf-ri/src/main/java/com/sun/faces/spi/AnnotationProvider.java b/jsf-ri/src/main/java/com/sun/faces/spi/AnnotationProvider.java
index 1b62c77..e8ae40e 100644
--- a/jsf-ri/src/main/java/com/sun/faces/spi/AnnotationProvider.java
+++ b/jsf-ri/src/main/java/com/sun/faces/spi/AnnotationProvider.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -38,9 +42,9 @@ package com.sun.faces.spi;
 
 import javax.servlet.ServletContext;
 import java.lang.annotation.Annotation;
+import java.net.URI;
 import java.util.Set;
 import java.util.Map;
-import java.net.URL;
 
 /**
  * <p>
@@ -55,6 +59,7 @@ import java.net.URL;
  *  <li>FacesComponent</li>
  *  <li>FacesConverter</li>
  *  <li>FacesRenderer</li>
+ *  <li>FacesValidator</li>
  *  <li>ManagedBean</li>
  *  <li>NamedEvent</li>
  *  <li>FacesBehavior</li>
@@ -123,6 +128,6 @@ public abstract class AnnotationProvider {
      * @return a <code>Map</code> of classes mapped to a specific annotation type.
      *  If no annotations are present, this method returns an empty <code>Map</code>.
      */
-    public abstract Map<Class<? extends Annotation>,Set<Class<?>>> getAnnotatedClasses(Set<URL> urls);
+    public abstract Map<Class<? extends Annotation>,Set<Class<?>>> getAnnotatedClasses(Set<URI> urls);
 
 } // END AnnotationProvider
diff --git a/jsf-ri/src/main/java/com/sun/faces/spi/AnnotationProviderFactory.java b/jsf-ri/src/main/java/com/sun/faces/spi/AnnotationProviderFactory.java
index 4dcbb11..880b512 100644
--- a/jsf-ri/src/main/java/com/sun/faces/spi/AnnotationProviderFactory.java
+++ b/jsf-ri/src/main/java/com/sun/faces/spi/AnnotationProviderFactory.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -36,7 +40,7 @@
 
 package com.sun.faces.spi;
 
-import com.sun.faces.config.AnnotationScanner;
+import com.sun.faces.config.DelegatingAnnotationProvider;
 
 import javax.servlet.ServletContext;
 import javax.faces.FacesException;
@@ -48,7 +52,7 @@ import java.lang.reflect.Constructor;
 public class AnnotationProviderFactory {
 
     private static final Class<? extends AnnotationProvider> DEFAULT_ANNOTATION_PROVIDER =
-       AnnotationScanner.class;
+       DelegatingAnnotationProvider.class;
 
     private static final String ANNOTATION_PROVIDER_SERVICE_KEY =
          "com.sun.faces.spi.annotationprovider";
@@ -85,13 +89,15 @@ public class AnnotationProviderFactory {
 
 
     private static AnnotationProvider createDefaultProvider(ServletContext sc) {
+        AnnotationProvider result = null;
+        Constructor c;
 
         try {
-            Constructor c = DEFAULT_ANNOTATION_PROVIDER.getDeclaredConstructor(new Class<?>[] { ServletContext.class });
-            return (AnnotationProvider) c.newInstance(sc);
-        } catch (Exception e) {
-            throw new FacesException(e);
+            c = DEFAULT_ANNOTATION_PROVIDER.getDeclaredConstructor(new Class<?>[] { ServletContext.class });
+            result = (AnnotationProvider) c.newInstance(sc);
+        } catch (Exception e2) {
+            throw new FacesException(e2);
         }
-
+        return result;
     }
 }
diff --git a/jsf-ri/src/main/java/com/sun/faces/spi/AnnotationScanner.java b/jsf-ri/src/main/java/com/sun/faces/spi/AnnotationScanner.java
new file mode 100644
index 0000000..c737ead
--- /dev/null
+++ b/jsf-ri/src/main/java/com/sun/faces/spi/AnnotationScanner.java
@@ -0,0 +1,65 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.spi;
+
+import java.net.URI;
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+import javax.servlet.ServletContext;
+
+/**
+ *
+ */
+public interface AnnotationScanner {
+
+    public abstract Map<String, List<ScannedAnnotation>> getAnnotatedClassesInCurrentModule(ServletContext extContext)
+    throws InjectionProviderException;
+
+    public interface ScannedAnnotation {
+
+        public Collection<URI> getDefiningURIs();
+
+        public String getFullyQualifiedClassName();
+
+    }
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/spi/ConfigurationResourceProvider.java b/jsf-ri/src/main/java/com/sun/faces/spi/ConfigurationResourceProvider.java
index ff6b1a3..ecec1e2 100644
--- a/jsf-ri/src/main/java/com/sun/faces/spi/ConfigurationResourceProvider.java
+++ b/jsf-ri/src/main/java/com/sun/faces/spi/ConfigurationResourceProvider.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -36,9 +40,9 @@
 
 package com.sun.faces.spi;
 
+import java.net.URI;
 import javax.servlet.ServletContext;
 
-import java.net.URL;
 import java.util.Collection;
 
 /**
@@ -57,6 +61,6 @@ public interface ConfigurationResourceProvider {
      * @return a List zero or more <code>URL</code> instances representing
      *         application configuration resources
      */
-    public Collection<URL> getResources(ServletContext context);
+    public Collection<URI> getResources(ServletContext context);
 
-}
\ No newline at end of file
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/spi/ConfigurationResourceProviderFactory.java b/jsf-ri/src/main/java/com/sun/faces/spi/ConfigurationResourceProviderFactory.java
index 23a84b3..69b02c7 100644
--- a/jsf-ri/src/main/java/com/sun/faces/spi/ConfigurationResourceProviderFactory.java
+++ b/jsf-ri/src/main/java/com/sun/faces/spi/ConfigurationResourceProviderFactory.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -85,26 +89,28 @@ public class ConfigurationResourceProviderFactory {
         List<ConfigurationResourceProvider> providers = new ArrayList<ConfigurationResourceProvider>();
         if (serviceEntries.length > 0) {
             for (String serviceEntry : serviceEntries) {
-                ConfigurationResourceProvider provider = (ConfigurationResourceProvider)
-                      ServiceFactoryUtils.getProviderFromEntry(serviceEntry, null, null);
-                if (provider != null) {
-                    if (ProviderType.FacesConfig == providerType) {
-                        if (!(provider instanceof FacesConfigResourceProvider)) {
-                            throw new IllegalStateException("Expected ConfigurationResourceProvider type to be an instance of FacesConfigResourceProvider");
-                        }
-                    } else {
-                        if (!(provider instanceof FaceletConfigResourceProvider)) {
-                            throw new IllegalStateException("Expected ConfigurationResourceProvider type to be an instance of FaceletConfigResourceProvider");
+                try {
+                    ConfigurationResourceProvider provider = (ConfigurationResourceProvider)
+                          ServiceFactoryUtils.getProviderFromEntry(serviceEntry, null, null);
+                    if (provider != null) {
+                        if (ProviderType.FacesConfig == providerType) {
+                            if (!(provider instanceof FacesConfigResourceProvider)) {
+                                throw new IllegalStateException("Expected ConfigurationResourceProvider type to be an instance of FacesConfigResourceProvider");
+                            }
+                        } else {
+                            if (!(provider instanceof FaceletConfigResourceProvider)) {
+                                throw new IllegalStateException("Expected ConfigurationResourceProvider type to be an instance of FaceletConfigResourceProvider");
+                            }
                         }
+                        providers.add(provider);
                     }
-                    providers.add(provider);
+                } catch(ClassCastException cce) {
+                    // we are going to ignore these for now.
                 }
             }
             return providers.toArray(new ConfigurationResourceProvider[providers.size()]);
         } else {
             return new ConfigurationResourceProvider[0];
-        }
-        
+        }        
     }
-    
 }
diff --git a/jsf-ri/src/main/java/com/sun/faces/spi/DiscoverableInjectionProvider.java b/jsf-ri/src/main/java/com/sun/faces/spi/DiscoverableInjectionProvider.java
index 9b3c569..4a6d01d 100644
--- a/jsf-ri/src/main/java/com/sun/faces/spi/DiscoverableInjectionProvider.java
+++ b/jsf-ri/src/main/java/com/sun/faces/spi/DiscoverableInjectionProvider.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/spi/FaceletConfigResourceProvider.java b/jsf-ri/src/main/java/com/sun/faces/spi/FaceletConfigResourceProvider.java
index 609ecd0..8499a80 100644
--- a/jsf-ri/src/main/java/com/sun/faces/spi/FaceletConfigResourceProvider.java
+++ b/jsf-ri/src/main/java/com/sun/faces/spi/FaceletConfigResourceProvider.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/spi/FacesConfigResourceProvider.java b/jsf-ri/src/main/java/com/sun/faces/spi/FacesConfigResourceProvider.java
index f3d0035..0c9e1d1 100644
--- a/jsf-ri/src/main/java/com/sun/faces/spi/FacesConfigResourceProvider.java
+++ b/jsf-ri/src/main/java/com/sun/faces/spi/FacesConfigResourceProvider.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/spi/HighAvailabilityEnabler.java b/jsf-ri/src/main/java/com/sun/faces/spi/HighAvailabilityEnabler.java
new file mode 100644
index 0000000..446bac3
--- /dev/null
+++ b/jsf-ri/src/main/java/com/sun/faces/spi/HighAvailabilityEnabler.java
@@ -0,0 +1,55 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+
+package com.sun.faces.spi;
+
+import javax.servlet.ServletContext;
+
+/**
+ * This interface is for JSF to check if the app server has HA enabled.
+ *
+ * @author sheetalv
+ */
+public interface HighAvailabilityEnabler {
+
+    public void enableHighAvailability(ServletContext ctx);
+
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/spi/InjectionProvider.java b/jsf-ri/src/main/java/com/sun/faces/spi/InjectionProvider.java
index 8200a61..9dced59 100644
--- a/jsf-ri/src/main/java/com/sun/faces/spi/InjectionProvider.java
+++ b/jsf-ri/src/main/java/com/sun/faces/spi/InjectionProvider.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -33,58 +37,59 @@
  * only if the new code is made subject to such option by the copyright
  * holder.
  */
-
-package com.sun.faces.spi;
-
-/**
- * <p>This interface defines an integration point for Java EE vendors.
- * Each vendor will need to provide an implementation of this interface
- * which will provide the JSF implementation the necessary hooks to 
- * perform resource injection.</p>  
- * 
- * <p>The implementation of this interface *must* be thread-safe and must
- * provider either a no-arg constructor, or a constructor accepting
- * a <code>ServletContext</code> instance.</p>
- */
-public interface InjectionProvider {
-
-    /**
-     * <p>The implementation of this method must perform the following
-     * steps:
-     *    <ul>
-     *        <li>Inject the supported resources per the Servlet 2.5
-     *           specification into the provided object</li>        
-     *    </ul>
-     * </p>
-     * <p>This method <em>must not</em> invoke any methods
-     * annotated with <code>@PostConstruct</code>
-     * @param managedBean the target managed bean
-     * @throws InjectionProviderException if an error occurs during 
-     *  resource injection
-     */
-    public void inject(Object managedBean) throws InjectionProviderException;
-
-    
-    /**
-     * <p>The implemenation of this method must invoke any
-     * method marked with the <code>@PreDestroy</code> annotation
-     * (per the Common Annotations Specification).
-     * @param managedBean the target managed bean
-     * @throws InjectionProviderException if an error occurs when invoking
-     *  the method annotated by the <code>@PreDestroy</code> annotation
-     */
-    public void invokePreDestroy(Object managedBean) 
-    throws InjectionProviderException;
-    
-    
-    /**
-     * <p>The implemenation of this method must invoke any
-     * method marked with the <code>@PostConstruct</code> annotation
-     * (per the Common Annotations Specification).
-     * @param managedBean the target managed bean
-     * @throws InjectionProviderException if an error occurs when invoking
-     *  the method annotated by the <code>@PostConstruct</code> annotation
-     */
-    public void invokePostConstruct(Object managedBean) 
-    throws InjectionProviderException;
-}
+
+package com.sun.faces.spi;
+
+/**
+ * <p>This interface defines an integration point for Java EE vendors.
+ * Each vendor will need to provide an implementation of this interface
+ * which will provide the JSF implementation the necessary hooks to 
+ * perform resource injection.</p>  
+ * 
+ * <p>The implementation of this interface *must* be thread-safe and must
+ * provider either a no-arg constructor, or a constructor accepting
+ * a <code>ServletContext</code> instance.</p>
+ */
+public interface InjectionProvider {
+
+    /**
+     * <p>The implementation of this method must perform the following
+     * steps:
+     *    <ul>
+     *        <li>Inject the supported resources per the Servlet 2.5
+     *           specification into the provided object</li>        
+     *    </ul>
+     * </p>
+     * <p>This method <em>must not</em> invoke any methods
+     * annotated with <code>@PostConstruct</code>
+     * @param managedBean the target managed bean
+     * @throws InjectionProviderException if an error occurs during 
+     *  resource injection
+     */
+    public void inject(Object managedBean) throws InjectionProviderException;
+
+    
+    /**
+     * <p>The implemenation of this method must invoke any
+     * method marked with the <code>@PreDestroy</code> annotation
+     * (per the Common Annotations Specification).
+     * @param managedBean the target managed bean
+     * @throws InjectionProviderException if an error occurs when invoking
+     *  the method annotated by the <code>@PreDestroy</code> annotation
+     */
+    public void invokePreDestroy(Object managedBean) 
+    throws InjectionProviderException;
+    
+    
+    /**
+     * <p>The implemenation of this method must invoke any
+     * method marked with the <code>@PostConstruct</code> annotation
+     * (per the Common Annotations Specification).
+     * @param managedBean the target managed bean
+     * @throws InjectionProviderException if an error occurs when invoking
+     *  the method annotated by the <code>@PostConstruct</code> annotation
+     */
+    public void invokePostConstruct(Object managedBean) 
+    throws InjectionProviderException;
+    
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/spi/InjectionProviderException.java b/jsf-ri/src/main/java/com/sun/faces/spi/InjectionProviderException.java
index a8429b1..479a236 100644
--- a/jsf-ri/src/main/java/com/sun/faces/spi/InjectionProviderException.java
+++ b/jsf-ri/src/main/java/com/sun/faces/spi/InjectionProviderException.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -62,4 +66,4 @@ public class InjectionProviderException extends Exception {
         super(message, cause);        
     }
     
-} // END InjectionProviderException
\ No newline at end of file
+} // END InjectionProviderException
diff --git a/jsf-ri/src/main/java/com/sun/faces/spi/InjectionProviderFactory.java b/jsf-ri/src/main/java/com/sun/faces/spi/InjectionProviderFactory.java
index 9162664..f343c3e 100644
--- a/jsf-ri/src/main/java/com/sun/faces/spi/InjectionProviderFactory.java
+++ b/jsf-ri/src/main/java/com/sun/faces/spi/InjectionProviderFactory.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -34,7 +38,6 @@
  * holder.
  */
 
-
 package com.sun.faces.spi;
 
 import java.io.BufferedReader;
@@ -50,6 +53,8 @@ import java.util.logging.Level;
 import java.util.logging.Logger;
 import java.net.URL;
 import java.net.URLConnection;
+import java.util.Collections;
+import java.util.Map;
 
 import javax.faces.context.ExternalContext;
 import javax.servlet.ServletContext;
@@ -277,7 +282,7 @@ public class InjectionProviderFactory {
             String[] serviceEntries = getServiceEntries();
             if (serviceEntries.length > 0) {
                 for (int i = 0; i < serviceEntries.length; i++) {
-                    provider = getProviderFromEntry(serviceEntries[i]);
+                    provider = getProviderFromEntry(extContext.getApplicationMap(), serviceEntries[i]);
                     if (provider != null) {
                         break;
                     }
@@ -292,13 +297,13 @@ public class InjectionProviderFactory {
     }
 
 
-    private static String getProviderFromEntry(String entry) {
+    private static String getProviderFromEntry(Map<String, Object> appMap, String entry) {
 
         if (entry == null) {
             return null;
         }
 
-        String[] parts = Util.split(entry, ":");
+        String[] parts = Util.split(appMap, entry, ":");
         if (parts.length != 2) {
             if (LOGGER.isLoggable(Level.SEVERE)) {
                 LOGGER.log(Level.SEVERE,
@@ -375,6 +380,9 @@ public class InjectionProviderFactory {
                             reader =
                                   new BufferedReader(new InputStreamReader(input, "UTF-8"));
                         } catch (Exception e) {
+                            // The DM_DEFAULT_ENCODING warning is acceptable here
+                            // because we explicitly *want* to use the Java runtime's
+                            // default encoding.
                             reader =
                                   new BufferedReader(new InputStreamReader(input));
                         }
@@ -397,13 +405,19 @@ public class InjectionProviderFactory {
                     if (input != null) {
                         try {
                             input.close();
-                        } catch (Exception ignored) {
+                        } catch (Exception e) {
+                            if (LOGGER.isLoggable(Level.FINEST)) {
+                                LOGGER.log(Level.FINEST, "Closing stream", e);
+                            }
                         }
                     }
                     if (reader != null) {
                         try {
                             reader.close();
-                        } catch (Exception ignored) {
+                        } catch (Exception e) {
+                            if (LOGGER.isLoggable(Level.FINEST)) {
+                                LOGGER.log(Level.FINEST, "Closing stream", e);
+                            }
                         }
                     }
                 }
@@ -422,7 +436,7 @@ public class InjectionProviderFactory {
      * be used when the #INJECTION_PROVIDER_PROPERTY is not specified or
      * is invalid.</p>
      */
-    private static final class NoopInjectionProvider implements InjectionProvider {
+    private static final class NoopInjectionProvider implements InjectionProvider, AnnotationScanner {
 
         /**
          * <p>This is a no-op.</p>
@@ -430,6 +444,12 @@ public class InjectionProviderFactory {
          */
         public void inject(Object managedBean) { }
 
+        public Map<String, List<AnnotationScanner.ScannedAnnotation>> getAnnotatedClassesInCurrentModule(ServletContext extContext) throws InjectionProviderException {
+            return Collections.emptyMap();
+        }
+
+
+
 
         /**
          * <p>This is a no-op.</p>
@@ -446,4 +466,4 @@ public class InjectionProviderFactory {
 
     }
 
-} // END InjectionProviderFactory
\ No newline at end of file
+} // END InjectionProviderFactory
diff --git a/jsf-ri/src/main/java/com/sun/faces/spi/SerializationProvider.java b/jsf-ri/src/main/java/com/sun/faces/spi/SerializationProvider.java
index af3361f..11609a6 100644
--- a/jsf-ri/src/main/java/com/sun/faces/spi/SerializationProvider.java
+++ b/jsf-ri/src/main/java/com/sun/faces/spi/SerializationProvider.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -89,4 +93,4 @@ public interface SerializationProvider {
     throws IOException;
 
 
-} // END SerializationProvider
\ No newline at end of file
+} // END SerializationProvider
diff --git a/jsf-ri/src/main/java/com/sun/faces/spi/SerializationProviderFactory.java b/jsf-ri/src/main/java/com/sun/faces/spi/SerializationProviderFactory.java
index 26d07e6..f8cac99 100644
--- a/jsf-ri/src/main/java/com/sun/faces/spi/SerializationProviderFactory.java
+++ b/jsf-ri/src/main/java/com/sun/faces/spi/SerializationProviderFactory.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/spi/ServiceFactory.java b/jsf-ri/src/main/java/com/sun/faces/spi/ServiceFactory.java
index 87b0b84..a3e6552 100644
--- a/jsf-ri/src/main/java/com/sun/faces/spi/ServiceFactory.java
+++ b/jsf-ri/src/main/java/com/sun/faces/spi/ServiceFactory.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -129,6 +133,9 @@ final class ServiceFactoryUtils {
                                   new BufferedReader(new InputStreamReader(input,
                                                                            "UTF-8"));
                         } catch (Exception e) {
+                            // The DM_DEFAULT_ENCODING warning is acceptable here
+                            // because we explicitly *want* to use the Java runtime's
+                            // default encoding.
                             reader =
                                   new BufferedReader(new InputStreamReader(input));
                         }
@@ -151,13 +158,19 @@ final class ServiceFactoryUtils {
                     if (input != null) {
                         try {
                             input.close();
-                        } catch (Exception ignored) {
+                        } catch (Exception e) {
+                            if (LOGGER.isLoggable(Level.FINEST)) {
+                                LOGGER.log(Level.FINEST, "Closing stream", e);
+                            }
                         }
                     }
                     if (reader != null) {
                         try {
                             reader.close();
-                        } catch (Exception ignored) {
+                        } catch (Exception e) {
+                            if (LOGGER.isLoggable(Level.FINEST)) {
+                                LOGGER.log(Level.FINEST, "Closing stream", e);
+                            }
                         }
                     }
                 }
diff --git a/jsf-ri/src/main/java/com/sun/faces/taglib/FacesValidator.java b/jsf-ri/src/main/java/com/sun/faces/taglib/FacesValidator.java
index 057d8e2..6e5c7a5 100644
--- a/jsf-ri/src/main/java/com/sun/faces/taglib/FacesValidator.java
+++ b/jsf-ri/src/main/java/com/sun/faces/taglib/FacesValidator.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -45,6 +49,7 @@ import javax.xml.parsers.ParserConfigurationException;
 import javax.xml.parsers.SAXParser;
 import javax.xml.parsers.SAXParserFactory;
 
+import com.sun.faces.util.Util;
 import org.xml.sax.Attributes;
 import org.xml.sax.SAXException;
 import org.xml.sax.helpers.DefaultHandler;
@@ -262,7 +267,7 @@ public abstract class FacesValidator extends TagLibraryValidator {
 	    }
 
             // parse the page
-            SAXParserFactory f = SAXParserFactory.newInstance();
+            SAXParserFactory f = Util.createSAXParserFactory();
             f.setNamespaceAware(true);
             f.setValidating(true);
             SAXParser p = f.newSAXParser();
diff --git a/jsf-ri/src/main/java/com/sun/faces/taglib/TagParser.java b/jsf-ri/src/main/java/com/sun/faces/taglib/TagParser.java
index 6a5a35d..d299751 100644
--- a/jsf-ri/src/main/java/com/sun/faces/taglib/TagParser.java
+++ b/jsf-ri/src/main/java/com/sun/faces/taglib/TagParser.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/taglib/ValidatorInfo.java b/jsf-ri/src/main/java/com/sun/faces/taglib/ValidatorInfo.java
index 0d713df..5e0c551 100644
--- a/jsf-ri/src/main/java/com/sun/faces/taglib/ValidatorInfo.java
+++ b/jsf-ri/src/main/java/com/sun/faces/taglib/ValidatorInfo.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/taglib/html_basic/ColumnTag.java b/jsf-ri/src/main/java/com/sun/faces/taglib/html_basic/ColumnTag.java
index 3205647..1415419 100644
--- a/jsf-ri/src/main/java/com/sun/faces/taglib/html_basic/ColumnTag.java
+++ b/jsf-ri/src/main/java/com/sun/faces/taglib/html_basic/ColumnTag.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -34,7 +38,6 @@
  * holder.
  */
 
-
 package com.sun.faces.taglib.html_basic;
 
 import javax.faces.component.UIColumn;
diff --git a/jsf-ri/src/main/java/com/sun/faces/taglib/html_basic/CommandTagParserImpl.java b/jsf-ri/src/main/java/com/sun/faces/taglib/html_basic/CommandTagParserImpl.java
index b7d93ad..2918574 100644
--- a/jsf-ri/src/main/java/com/sun/faces/taglib/html_basic/CommandTagParserImpl.java
+++ b/jsf-ri/src/main/java/com/sun/faces/taglib/html_basic/CommandTagParserImpl.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -74,7 +78,7 @@ public class CommandTagParserImpl implements TagParser {
      * <p>Set the validator info object that has the current tag
      * information</p>
      *
-     * @param ValidatorInfo object with current tag info
+     * @param validatorInfo object with current tag info
      */
     public void setValidatorInfo(ValidatorInfo validatorInfo) {
         this.validatorInfo = validatorInfo;
diff --git a/jsf-ri/src/main/java/com/sun/faces/taglib/html_basic/HtmlBasicValidator.java b/jsf-ri/src/main/java/com/sun/faces/taglib/html_basic/HtmlBasicValidator.java
index 39b7103..a45ddd0 100644
--- a/jsf-ri/src/main/java/com/sun/faces/taglib/html_basic/HtmlBasicValidator.java
+++ b/jsf-ri/src/main/java/com/sun/faces/taglib/html_basic/HtmlBasicValidator.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -84,10 +88,8 @@ public class HtmlBasicValidator extends FacesValidator {
 
 
     protected DefaultHandler getSAXHandler() {
-	// don't run the TLV if we're in designTime, or the RIConstants
-	// says not to.
-	if (java.beans.Beans.isDesignTime() || 
-	    !Util.isHtmlTLVActive()) {
+	// don't run the TLV if we're in designTime
+	if (java.beans.Beans.isDesignTime()) {
 	    return null;
 	}
 	
diff --git a/jsf-ri/src/main/java/com/sun/faces/taglib/jsf_core/AbstractConverterTag.java b/jsf-ri/src/main/java/com/sun/faces/taglib/jsf_core/AbstractConverterTag.java
index 155f0c1..a238277 100644
--- a/jsf-ri/src/main/java/com/sun/faces/taglib/jsf_core/AbstractConverterTag.java
+++ b/jsf-ri/src/main/java/com/sun/faces/taglib/jsf_core/AbstractConverterTag.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/taglib/jsf_core/AbstractValidatorTag.java b/jsf-ri/src/main/java/com/sun/faces/taglib/jsf_core/AbstractValidatorTag.java
index e987007..3e41b3a 100644
--- a/jsf-ri/src/main/java/com/sun/faces/taglib/jsf_core/AbstractValidatorTag.java
+++ b/jsf-ri/src/main/java/com/sun/faces/taglib/jsf_core/AbstractValidatorTag.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -36,7 +40,6 @@
 
 package com.sun.faces.taglib.jsf_core;
 
-import com.sun.faces.util.Util;
 import com.sun.faces.util.MessageUtils;
 import com.sun.faces.util.FacesLogger;
 
diff --git a/jsf-ri/src/main/java/com/sun/faces/taglib/jsf_core/ActionListenerTag.java b/jsf-ri/src/main/java/com/sun/faces/taglib/jsf_core/ActionListenerTag.java
index ec562ce..14bb20b 100644
--- a/jsf-ri/src/main/java/com/sun/faces/taglib/jsf_core/ActionListenerTag.java
+++ b/jsf-ri/src/main/java/com/sun/faces/taglib/jsf_core/ActionListenerTag.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/taglib/jsf_core/AttributeTag.java b/jsf-ri/src/main/java/com/sun/faces/taglib/jsf_core/AttributeTag.java
index cc05a2a..56df145 100644
--- a/jsf-ri/src/main/java/com/sun/faces/taglib/jsf_core/AttributeTag.java
+++ b/jsf-ri/src/main/java/com/sun/faces/taglib/jsf_core/AttributeTag.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/taglib/jsf_core/ConvertDateTimeTag.java b/jsf-ri/src/main/java/com/sun/faces/taglib/jsf_core/ConvertDateTimeTag.java
index 2ff1fdb..55cf31c 100644
--- a/jsf-ri/src/main/java/com/sun/faces/taglib/jsf_core/ConvertDateTimeTag.java
+++ b/jsf-ri/src/main/java/com/sun/faces/taglib/jsf_core/ConvertDateTimeTag.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/taglib/jsf_core/ConvertNumberTag.java b/jsf-ri/src/main/java/com/sun/faces/taglib/jsf_core/ConvertNumberTag.java
index b00f2ef..196e600 100644
--- a/jsf-ri/src/main/java/com/sun/faces/taglib/jsf_core/ConvertNumberTag.java
+++ b/jsf-ri/src/main/java/com/sun/faces/taglib/jsf_core/ConvertNumberTag.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/taglib/jsf_core/ConverterTag.java b/jsf-ri/src/main/java/com/sun/faces/taglib/jsf_core/ConverterTag.java
index 0c466d8..240c313 100644
--- a/jsf-ri/src/main/java/com/sun/faces/taglib/jsf_core/ConverterTag.java
+++ b/jsf-ri/src/main/java/com/sun/faces/taglib/jsf_core/ConverterTag.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/taglib/jsf_core/CoreTagParserImpl.java b/jsf-ri/src/main/java/com/sun/faces/taglib/jsf_core/CoreTagParserImpl.java
old mode 100644
new mode 100755
index f6a9ccd..37b14b1
--- a/jsf-ri/src/main/java/com/sun/faces/taglib/jsf_core/CoreTagParserImpl.java
+++ b/jsf-ri/src/main/java/com/sun/faces/taglib/jsf_core/CoreTagParserImpl.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/taglib/jsf_core/CoreValidator.java b/jsf-ri/src/main/java/com/sun/faces/taglib/jsf_core/CoreValidator.java
index ba36dbf..4cc6aec 100644
--- a/jsf-ri/src/main/java/com/sun/faces/taglib/jsf_core/CoreValidator.java
+++ b/jsf-ri/src/main/java/com/sun/faces/taglib/jsf_core/CoreValidator.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -38,7 +42,6 @@ package com.sun.faces.taglib.jsf_core;
 
 import com.sun.faces.taglib.FacesValidator;
 import com.sun.faces.taglib.ValidatorInfo;
-import com.sun.faces.util.Util;
 
 import org.xml.sax.Attributes;
 import org.xml.sax.helpers.DefaultHandler;
@@ -107,8 +110,7 @@ public class CoreValidator extends FacesValidator {
      * <p>Get the validator handler</p>
      */
     protected DefaultHandler getSAXHandler() {
-        if (java.beans.Beans.isDesignTime() || 
-	    !Util.isCoreTLVActive()) {
+        if (java.beans.Beans.isDesignTime()) {
 	    return null;
 	}
         return new CoreValidatorHandler();
diff --git a/jsf-ri/src/main/java/com/sun/faces/taglib/jsf_core/IdTagParserImpl.java b/jsf-ri/src/main/java/com/sun/faces/taglib/jsf_core/IdTagParserImpl.java
index 07dcb80..4a9160a 100644
--- a/jsf-ri/src/main/java/com/sun/faces/taglib/jsf_core/IdTagParserImpl.java
+++ b/jsf-ri/src/main/java/com/sun/faces/taglib/jsf_core/IdTagParserImpl.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/taglib/jsf_core/LoadBundleTag.java b/jsf-ri/src/main/java/com/sun/faces/taglib/jsf_core/LoadBundleTag.java
index 11479df..a8e7e34 100644
--- a/jsf-ri/src/main/java/com/sun/faces/taglib/jsf_core/LoadBundleTag.java
+++ b/jsf-ri/src/main/java/com/sun/faces/taglib/jsf_core/LoadBundleTag.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -371,14 +375,14 @@ public class LoadBundleTag extends TagSupport {
     
     static List<UIComponent> getPreViewLoadBundleComponentList() {
         FacesContext ctx = FacesContext.getCurrentInstance();
+        Map<String,Object> stateMap = RequestStateManager.getStateMap(ctx);
+
         //noinspection unchecked
         List<UIComponent> result = (List<UIComponent>)
-              RequestStateManager.get(ctx, PRE_VIEW_LOADBUNDLES_LIST_ATTR_NAME);
+              stateMap.get(PRE_VIEW_LOADBUNDLES_LIST_ATTR_NAME);
         if (result == null) {
             result = new ArrayList<UIComponent>();
-            RequestStateManager.set(ctx,
-                                    PRE_VIEW_LOADBUNDLES_LIST_ATTR_NAME,
-                                    result);
+            stateMap.put(PRE_VIEW_LOADBUNDLES_LIST_ATTR_NAME, result);
         }
         
         return result;
diff --git a/jsf-ri/src/main/java/com/sun/faces/taglib/jsf_core/MaxMinValidatorTag.java b/jsf-ri/src/main/java/com/sun/faces/taglib/jsf_core/MaxMinValidatorTag.java
index 262118d..fb27753 100644
--- a/jsf-ri/src/main/java/com/sun/faces/taglib/jsf_core/MaxMinValidatorTag.java
+++ b/jsf-ri/src/main/java/com/sun/faces/taglib/jsf_core/MaxMinValidatorTag.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/taglib/jsf_core/ParameterTag.java b/jsf-ri/src/main/java/com/sun/faces/taglib/jsf_core/ParameterTag.java
index aec0ccb..bfeaba2 100644
--- a/jsf-ri/src/main/java/com/sun/faces/taglib/jsf_core/ParameterTag.java
+++ b/jsf-ri/src/main/java/com/sun/faces/taglib/jsf_core/ParameterTag.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/taglib/jsf_core/PhaseListenerTag.java b/jsf-ri/src/main/java/com/sun/faces/taglib/jsf_core/PhaseListenerTag.java
index 424bfc0..24edac8 100644
--- a/jsf-ri/src/main/java/com/sun/faces/taglib/jsf_core/PhaseListenerTag.java
+++ b/jsf-ri/src/main/java/com/sun/faces/taglib/jsf_core/PhaseListenerTag.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/taglib/jsf_core/RegexValidatorTag.java b/jsf-ri/src/main/java/com/sun/faces/taglib/jsf_core/RegexValidatorTag.java
index 7c47178..c3deb92 100644
--- a/jsf-ri/src/main/java/com/sun/faces/taglib/jsf_core/RegexValidatorTag.java
+++ b/jsf-ri/src/main/java/com/sun/faces/taglib/jsf_core/RegexValidatorTag.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -34,14 +38,11 @@
  * holder.
  */
 
-
 package com.sun.faces.taglib.jsf_core;
 
 import javax.faces.validator.RegexValidator;
-import javax.faces.application.Application;
 import javax.faces.context.FacesContext;
 import javax.faces.validator.Validator;
-import javax.faces.webapp.ValidatorELTag;
 import javax.el.ValueExpression;
 import javax.el.ExpressionFactory;
 import javax.servlet.jsp.JspException;
diff --git a/jsf-ri/src/main/java/com/sun/faces/taglib/jsf_core/SelectItemTag.java b/jsf-ri/src/main/java/com/sun/faces/taglib/jsf_core/SelectItemTag.java
index 26d4c72..11240e7 100644
--- a/jsf-ri/src/main/java/com/sun/faces/taglib/jsf_core/SelectItemTag.java
+++ b/jsf-ri/src/main/java/com/sun/faces/taglib/jsf_core/SelectItemTag.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/taglib/jsf_core/SelectItemsTag.java b/jsf-ri/src/main/java/com/sun/faces/taglib/jsf_core/SelectItemsTag.java
index ed4dbc4..7ccaff0 100644
--- a/jsf-ri/src/main/java/com/sun/faces/taglib/jsf_core/SelectItemsTag.java
+++ b/jsf-ri/src/main/java/com/sun/faces/taglib/jsf_core/SelectItemsTag.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -131,7 +135,7 @@ public class SelectItemsTag extends UIComponentELTag {
             component.getAttributes().put("var", var);
         }
         if (itemValue != null) {
-            component.setValueExpression("itemValue", value);
+            component.setValueExpression("itemValue", itemValue);
         }
         if (itemLabel != null) {
             component.setValueExpression("itemLabel", itemLabel);
diff --git a/jsf-ri/src/main/java/com/sun/faces/taglib/jsf_core/SetPropertyActionListenerImpl.java b/jsf-ri/src/main/java/com/sun/faces/taglib/jsf_core/SetPropertyActionListenerImpl.java
index 218627d..6c73f29 100644
--- a/jsf-ri/src/main/java/com/sun/faces/taglib/jsf_core/SetPropertyActionListenerImpl.java
+++ b/jsf-ri/src/main/java/com/sun/faces/taglib/jsf_core/SetPropertyActionListenerImpl.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -34,7 +38,6 @@
  * holder.
  */
 
-
 package com.sun.faces.taglib.jsf_core;
 
 import javax.el.ELContext;
diff --git a/jsf-ri/src/main/java/com/sun/faces/taglib/jsf_core/SetPropertyActionListenerTag.java b/jsf-ri/src/main/java/com/sun/faces/taglib/jsf_core/SetPropertyActionListenerTag.java
index a91fa7c..6cde317 100644
--- a/jsf-ri/src/main/java/com/sun/faces/taglib/jsf_core/SetPropertyActionListenerTag.java
+++ b/jsf-ri/src/main/java/com/sun/faces/taglib/jsf_core/SetPropertyActionListenerTag.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/taglib/jsf_core/SubviewTag.java b/jsf-ri/src/main/java/com/sun/faces/taglib/jsf_core/SubviewTag.java
index 23229b5..a88749a 100644
--- a/jsf-ri/src/main/java/com/sun/faces/taglib/jsf_core/SubviewTag.java
+++ b/jsf-ri/src/main/java/com/sun/faces/taglib/jsf_core/SubviewTag.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -54,6 +58,7 @@ import com.sun.faces.util.RequestStateManager;
 import com.sun.faces.util.ReflectionUtils;
 import com.sun.faces.util.FacesLogger;
 import com.sun.faces.RIConstants;
+import java.util.Map;
 
 public class SubviewTag extends UIComponentELTag {
 
@@ -207,12 +212,14 @@ public class SubviewTag extends UIComponentELTag {
     static Stack<UIComponentClassicTagBase> getViewTagStack() {
 
         FacesContext ctx = FacesContext.getCurrentInstance();
+        Map<String,Object> stateMap = RequestStateManager.getStateMap(ctx);
+
         //noinspection unchecked
         Stack<UIComponentClassicTagBase> result = (Stack<UIComponentClassicTagBase>)
-              RequestStateManager.get(ctx, RequestStateManager.VIEWTAG_STACK_ATTR_NAME);
+              stateMap.get(RequestStateManager.VIEWTAG_STACK_ATTR_NAME);
         if (result == null) {
             result = new Stack<UIComponentClassicTagBase>();
-            RequestStateManager.set(ctx, RequestStateManager.VIEWTAG_STACK_ATTR_NAME, result);
+            stateMap.put(RequestStateManager.VIEWTAG_STACK_ATTR_NAME, result);
         }
         
         return result;
diff --git a/jsf-ri/src/main/java/com/sun/faces/taglib/jsf_core/ValidateDoubleRangeTag.java b/jsf-ri/src/main/java/com/sun/faces/taglib/jsf_core/ValidateDoubleRangeTag.java
index ab3410b..530b466 100644
--- a/jsf-ri/src/main/java/com/sun/faces/taglib/jsf_core/ValidateDoubleRangeTag.java
+++ b/jsf-ri/src/main/java/com/sun/faces/taglib/jsf_core/ValidateDoubleRangeTag.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/taglib/jsf_core/ValidateLengthTag.java b/jsf-ri/src/main/java/com/sun/faces/taglib/jsf_core/ValidateLengthTag.java
index 867606c..8055c17 100644
--- a/jsf-ri/src/main/java/com/sun/faces/taglib/jsf_core/ValidateLengthTag.java
+++ b/jsf-ri/src/main/java/com/sun/faces/taglib/jsf_core/ValidateLengthTag.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/taglib/jsf_core/ValidateLongRangeTag.java b/jsf-ri/src/main/java/com/sun/faces/taglib/jsf_core/ValidateLongRangeTag.java
index 59e5210..672a761 100644
--- a/jsf-ri/src/main/java/com/sun/faces/taglib/jsf_core/ValidateLongRangeTag.java
+++ b/jsf-ri/src/main/java/com/sun/faces/taglib/jsf_core/ValidateLongRangeTag.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/taglib/jsf_core/ValidatorTag.java b/jsf-ri/src/main/java/com/sun/faces/taglib/jsf_core/ValidatorTag.java
index 194d9c6..9eba063 100644
--- a/jsf-ri/src/main/java/com/sun/faces/taglib/jsf_core/ValidatorTag.java
+++ b/jsf-ri/src/main/java/com/sun/faces/taglib/jsf_core/ValidatorTag.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/taglib/jsf_core/ValueChangeListenerTag.java b/jsf-ri/src/main/java/com/sun/faces/taglib/jsf_core/ValueChangeListenerTag.java
index 672ec09..9bc3e28 100644
--- a/jsf-ri/src/main/java/com/sun/faces/taglib/jsf_core/ValueChangeListenerTag.java
+++ b/jsf-ri/src/main/java/com/sun/faces/taglib/jsf_core/ValueChangeListenerTag.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/taglib/jsf_core/VerbatimTag.java b/jsf-ri/src/main/java/com/sun/faces/taglib/jsf_core/VerbatimTag.java
index d42935f..ed82039 100644
--- a/jsf-ri/src/main/java/com/sun/faces/taglib/jsf_core/VerbatimTag.java
+++ b/jsf-ri/src/main/java/com/sun/faces/taglib/jsf_core/VerbatimTag.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/taglib/jsf_core/ViewTag.java b/jsf-ri/src/main/java/com/sun/faces/taglib/jsf_core/ViewTag.java
index f153980..1348282 100644
--- a/jsf-ri/src/main/java/com/sun/faces/taglib/jsf_core/ViewTag.java
+++ b/jsf-ri/src/main/java/com/sun/faces/taglib/jsf_core/ViewTag.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -58,12 +62,10 @@ import javax.servlet.jsp.jstl.core.Config;
 import javax.servlet.jsp.tagext.BodyContent;
 import javax.servlet.jsp.tagext.BodyTag;
 
-import java.io.IOException;
 import java.util.Locale;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 import java.lang.reflect.Method;
-import java.lang.reflect.InvocationTargetException;
 
 import com.sun.faces.util.MessageUtils;
 import com.sun.faces.util.FacesLogger;
@@ -343,16 +345,16 @@ public class ViewTag extends UIComponentELTag {
                         viewLocale = getLocaleFromString((String) result);
                     }
         }
-
-        assert(null != viewLocale);
-
-        ((UIViewRoot) component).setLocale(viewLocale);
-        // update the JSTL locale attribute in request scope so that
-        // JSTL picks up the locale from viewRoot. This attribute
-        // must be updated before the JSTL setBundle tag is called
-        // because that is when the new LocalizationContext object
-        // is created based on the locale.
-        Config.set(pageContext.getRequest(),Config.FMT_LOCALE, viewLocale);
+        }
+        // BUGDB 10235218
+        if (null != viewLocale) {
+            ((UIViewRoot) component).setLocale(viewLocale);
+            // update the JSTL locale attribute in request scope so that
+            // JSTL picks up the locale from viewRoot. This attribute
+            // must be updated before the JSTL setBundle tag is called
+            // because that is when the new LocalizationContext object
+            // is created based on the locale.
+            Config.set(pageContext.getRequest(), Config.FMT_LOCALE, viewLocale);
         }
 
         if (null != beforePhase) {
diff --git a/jsf-ri/src/main/java/com/sun/faces/util/ByteArrayGuardAESCTR.java b/jsf-ri/src/main/java/com/sun/faces/util/ByteArrayGuardAESCTR.java
new file mode 100644
index 0000000..88a3ec4
--- /dev/null
+++ b/jsf-ri/src/main/java/com/sun/faces/util/ByteArrayGuardAESCTR.java
@@ -0,0 +1,224 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.util;
+
+import java.nio.charset.Charset;
+import java.security.InvalidAlgorithmParameterException;
+import java.security.InvalidKeyException;
+import java.security.NoSuchAlgorithmException;
+import javax.crypto.Cipher;
+import javax.crypto.KeyGenerator;
+import javax.crypto.SecretKey;
+import javax.crypto.spec.IvParameterSpec;
+import javax.faces.FacesException;
+import java.security.SecureRandom;
+import java.util.SortedMap;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.crypto.BadPaddingException;
+import javax.crypto.IllegalBlockSizeException;
+import javax.crypto.NoSuchPaddingException;
+import javax.crypto.spec.SecretKeySpec;
+import javax.naming.InitialContext;
+import javax.naming.NamingException;
+import javax.xml.bind.DatatypeConverter;
+
+/**
+ * <p>This utility class is to provide both encryption and
+ * decryption <code>Ciphers</code> to <code>ResponseStateManager</code>
+ * implementations wishing to provide encryption support.</p>
+ * 
+ * <p>The algorithm used to encrypt byte array is AES with CBC.</p>
+ *  
+ * <p>Original author Inderjeet Singh, J2EE Blue Prints Team. Modified to suit JSF
+ * needs.</p> 
+ */
+public final class ByteArrayGuardAESCTR {
+
+
+     // Log instance for this class
+    private static final Logger LOGGER = FacesLogger.RENDERKIT.getLogger();
+
+    private static final int KEY_LENGTH = 128;
+    private static final int IV_LENGTH = 16;
+
+    private static final String KEY_ALGORITHM = "AES";
+    private static final String CIPHER_CODE = "AES/CTR/NoPadding";
+    
+    private SecretKey sk;
+    
+    private IvParameterSpec ivspec;
+    
+    private Charset utf8;
+
+    // ------------------------------------------------------------ Constructors
+
+    public ByteArrayGuardAESCTR() {
+
+        try {
+            setupKeyAndCharset();
+        } catch (Exception e) {
+            if (LOGGER.isLoggable(Level.SEVERE)) { 
+                LOGGER.log(Level.SEVERE,
+                           "Unexpected exception initializing encryption."
+                           + "  No encryption will be performed.",
+                           e);
+            }
+            System.err.println("ERROR: Initializing Ciphers");
+        }
+    }
+
+    // ---------------------------------------------------------- Public Methods    
+
+
+    /**
+     * This method:
+     *    Encrypts bytes using a cipher.  
+     *    Generates MAC for intialization vector of the cipher
+     *    Generates MAC for encrypted data
+     *    Returns a byte array consisting of the following concatenated together:
+     *       |MAC for cnrypted Data | MAC for Init Vector | Encrypted Data |
+     * @param bytes The byte array to be encrypted.
+     * @return the encrypted byte array.
+     */
+    public String encrypt(String value) {
+        String securedata = null;
+        byte[] bytes = value.getBytes(utf8);
+        try {
+            Cipher encryptCipher = Cipher.getInstance(CIPHER_CODE);
+            encryptCipher.init(Cipher.ENCRYPT_MODE, sk, ivspec);
+            // encrypt the plaintext
+            byte[] encdata = encryptCipher.doFinal(bytes);
+            // Base64 encode the encrypted bytes
+            securedata = DatatypeConverter.printBase64Binary(encdata);
+        } catch (Exception e) {
+            if (LOGGER.isLoggable(Level.SEVERE)) {
+                LOGGER.log(Level.SEVERE,
+                           "Unexpected exception initializing encryption."
+                           + "  No encryption will be performed.",
+                           e);
+            }
+            return null;
+        }
+        return securedata;
+    }
+
+    public String decrypt(String value) throws InvalidKeyException {
+        
+        byte[] bytes = DatatypeConverter.parseBase64Binary(value);;
+        
+        try {
+            Cipher decryptCipher = Cipher.getInstance(CIPHER_CODE);
+            decryptCipher.init(Cipher.DECRYPT_MODE, sk, ivspec);
+
+            byte[] plaindata = decryptCipher.doFinal(bytes);
+            for (byte cur : plaindata) {
+                // Values < 0 cause the conversion to text to fail.
+                if (cur < 0 || cur > Byte.MAX_VALUE) {
+                    throw new InvalidKeyException("Invalid characters in decrypted value");
+                }
+            }
+            return new String(plaindata, utf8);
+        } catch (NoSuchAlgorithmException nsae) {
+            throw new InvalidKeyException(nsae);
+        } catch (NoSuchPaddingException nspe) {
+            throw new InvalidKeyException(nspe);
+        } catch (InvalidAlgorithmParameterException iape) {
+            throw new InvalidKeyException(iape);
+        } catch (IllegalBlockSizeException ibse) {
+            throw new InvalidKeyException(ibse);
+        } catch (BadPaddingException bpe) {
+            throw new InvalidKeyException(bpe);
+        }
+    }
+    
+    // --------------------------------------------------------- Private Methods
+
+    private void setupKeyAndCharset() {
+
+        try {
+            InitialContext context = new InitialContext();
+            String encodedKeyArray = (String) context.lookup("java:comp/env/jsf/FlashSecretKey");
+            if (null != encodedKeyArray) {
+                byte[] keyArray = DatatypeConverter.parseBase64Binary(encodedKeyArray);
+                if (keyArray.length < 17) {
+                    throw new FacesException("key must be at least 16 bytes long.");
+                }
+                sk = new SecretKeySpec(keyArray, KEY_ALGORITHM);
+                byte[] iv = new byte[16];
+                System.arraycopy(keyArray, 0, iv, 0, 16);
+                ivspec = new IvParameterSpec(iv);
+            }
+        } catch(NamingException exception) {
+            if (LOGGER.isLoggable(Level.FINEST)) { 
+                LOGGER.log(Level.FINEST, "Unable to find the encoded key.", exception);
+            }
+        } catch (Exception e) {
+            throw new FacesException(e);
+        }
+        
+        if (null == sk) {
+            try {
+                KeyGenerator kg = KeyGenerator.getInstance(KEY_ALGORITHM);
+                kg.init(KEY_LENGTH);   // 256 if you're using the Unlimited Policy Files
+                sk = kg.generateKey(); 
+                SecureRandom rand = new SecureRandom();
+                byte[] iv = new byte[16];
+                rand.nextBytes(iv);
+                ivspec = new IvParameterSpec(iv);
+            } catch (Exception e) {
+                throw new FacesException(e);
+            }
+        }
+        
+            
+        SortedMap<String,Charset> availableCharsets = Charset.availableCharsets();
+        if (availableCharsets.containsKey("UTF-8")) {
+            utf8 = availableCharsets.get("UTF-8");
+        } else if (availableCharsets.containsKey("UTF8")) {
+            utf8 = availableCharsets.get("UTF8");
+        } else {
+            throw new FacesException("Unable to get UTF-8 Charset.");
+        }
+        
+    }
+
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/util/Cache.java b/jsf-ri/src/main/java/com/sun/faces/util/Cache.java
index f16bde8..1246898 100644
--- a/jsf-ri/src/main/java/com/sun/faces/util/Cache.java
+++ b/jsf-ri/src/main/java/com/sun/faces/util/Cache.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -36,16 +40,9 @@
 
 package com.sun.faces.util;
 
-import java.util.concurrent.Callable;
-import java.util.concurrent.CancellationException;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ConcurrentMap;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.Future;
-import java.util.concurrent.FutureTask;
-import java.util.logging.Level;
 import java.util.logging.Logger;
-import javax.faces.FacesException;
 
     /**
      * A concurrent caching mechanism.
@@ -66,9 +63,9 @@ public class Cache<K, V> {
     } // END Factory
 
 
-        private ConcurrentMap<K,Future<V>> cache =
-              new ConcurrentHashMap<K,Future<V>>();
-        private Factory<K,V> factory;
+        private final ConcurrentMap<K,V> cache =
+              new ConcurrentHashMap<K,V>();
+        private final Factory<K,V> factory;
 
 
         // -------------------------------------------------------- Constructors
@@ -100,78 +97,34 @@ public class Cache<K, V> {
          * @return the value for the specified key, if any
          */
         public V get(final K key) {
-
-            while (true) {
-                Future<V> f = cache.get(key);
-                if (f == null) {
-                    Callable<V> callable = new Callable<V>() {
-                        public V call() throws Exception {
-                            return factory.newInstance(key);
-                        }
-                    };
-                    FutureTask<V> ft = new FutureTask<V>(callable);
-                    // here is the real beauty of the concurrent utilities.
-                    // 1.  putIfAbsent() is atomic
-                    // 2.  putIfAbsent() will return the value already associated
-                    //     with the specified key
-                    // So, if multiple threads make it to this point
-                    // they will all be calling f.get() on the same
-                    // FutureTask instance, so this guarantees that the instances
-                    // that the invoked Callable will return will be created once
-                    f = cache.putIfAbsent(key, ft);
-                    if (f == null) {
-                        f = ft;
-                        ft.run();
-                    }
-                }
-                try {
-                    return f.get();
-                } catch (CancellationException ce) {
-                    if (LOGGER.isLoggable(Level.FINEST)) {
-                        LOGGER.log(Level.FINEST,
-                                   ce.toString(),
-                                   ce);
-                    }
-                    cache.remove(key);
-                } catch (InterruptedException ie) {
-                    if (LOGGER.isLoggable(Level.FINEST)) {
-                        LOGGER.log(Level.FINEST,
-                                   ie.toString(),
-                                   ie);
-                    }
-                    cache.remove(key);
-                } catch (ExecutionException ee) {
-                    throw new FacesException(ee);
-                }
+          V result = cache.get(key);
+          
+          if (result == null)
+          {
+            try
+            {
+              result = factory.newInstance(key);
             }
-
+            catch (InterruptedException ie)
+            {
+              // will never happen. Just for testing
+              throw new RuntimeException(ie);
+            }
+            
+            // put could be used instead if it didn't matter whether we replaced
+            // an existing entry
+            V oldResult = cache.putIfAbsent(key, result);
+            
+            if (oldResult != null)
+              result = oldResult;
+          }
+          
+          return result;
         }
 
         public V remove(final K key) {
-            Future<V> t = cache.remove(key);
-            V result = null;
-
-            if (null != t) {
-                try {
-                    result = t.get();
-                } catch (CancellationException ce) {
-                    if (LOGGER.isLoggable(Level.FINEST)) {
-                        LOGGER.log(Level.FINEST,
-                                ce.toString(),
-                                ce);
-                    }
-                } catch (InterruptedException ie) {
-                    if (LOGGER.isLoggable(Level.FINEST)) {
-                        LOGGER.log(Level.FINEST,
-                                ie.toString(),
-                                ie);
-                    }
-                } catch (ExecutionException ee) {
-                    throw new FacesException(ee);
-                }
-            }
+          return cache.remove(key);
 
-            return result;
     }
 
     } // END Cache
diff --git a/jsf-ri/src/main/java/com/sun/faces/util/CollectionsUtils.java b/jsf-ri/src/main/java/com/sun/faces/util/CollectionsUtils.java
index 487ba91..ef7d827 100644
--- a/jsf-ri/src/main/java/com/sun/faces/util/CollectionsUtils.java
+++ b/jsf-ri/src/main/java/com/sun/faces/util/CollectionsUtils.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -36,7 +40,6 @@
 
 package com.sun.faces.util;
 
-import java.util.Arrays;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
diff --git a/jsf-ri/src/main/java/com/sun/faces/util/ComponentStruct.java b/jsf-ri/src/main/java/com/sun/faces/util/ComponentStruct.java
index cfc278a..f5eeb5f 100644
--- a/jsf-ri/src/main/java/com/sun/faces/util/ComponentStruct.java
+++ b/jsf-ri/src/main/java/com/sun/faces/util/ComponentStruct.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 2012 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -43,11 +47,20 @@ import javax.faces.context.FacesContext;
  * Utility class to enable partial state saving of components that have been
  * dynamically added to the view.
  */
-public class ComponentStruct implements StateHolder {
+public class ComponentStruct implements StateHolder {    
+    /**
+     * Marker that specifies this is an ADD.
+     */
+    public static final String ADD = "ADD";
+    /**
+     * Marker that specifies this is a REMOVE.
+     */
+    public static final String REMOVE = "REMOVE";
 
+    public String action;
     public String parentClientId;
+    public String id;
     public String clientId;
-    public int indexOfChildInParent = -1;
     public String facetName;
 
     public boolean isTransient() {
@@ -62,26 +75,53 @@ public class ComponentStruct implements StateHolder {
             return;
         }
         Object s[] = (Object[]) state;
-        this.parentClientId = s[0].toString();
-        this.clientId = s[1].toString();
-        this.indexOfChildInParent = (Integer) s[2];
-        this.facetName = (String) s[3];
+        this.action = (String) s[0];
+        this.parentClientId = (String) s[1];
+        this.clientId = (String) s[2];
+        this.id = (String) s[3];
+        this.facetName = (String) s[4];
     }
 
     public Object saveState(FacesContext ctx) {
         if (ctx == null) {
             throw new NullPointerException();
         }
-        Object state[] = new Object[4];
-        state[0] = this.parentClientId;
-        state[1] = this.clientId;
-        state[2] = this.indexOfChildInParent;
-        state[3] = this.facetName;
+        Object state[] = new Object[5];
+        state[0] = this.action;
+        state[1] = this.parentClientId;
+        state[2] = this.clientId;
+        state[3] = this.id;
+        state[4] = this.facetName;
         return state;
     }
 
     public void setTransient(boolean trans) {
     }
 
+    @Override
+    public boolean equals(Object obj) {
+        boolean result = false;
+        
+        if (obj instanceof ComponentStruct) {
+            ComponentStruct struct = (ComponentStruct) obj;
+            result = struct.clientId.equals(this.clientId);
+        }
+        
+        return result;
+    }
+
+    /**
+     * Hash code.
+     * 
+     * @return the hashcode.
+     */
+    @Override
+    public int hashCode() {
+        int hash = 5;
+        hash = 89 * hash + (this.clientId != null ? this.clientId.hashCode() : 0);
+        return hash;
+    }
+
 
+    
 } // END ComponentStruct
diff --git a/jsf-ri/src/main/java/com/sun/faces/util/ConcurrentCache.java b/jsf-ri/src/main/java/com/sun/faces/util/ConcurrentCache.java
index f186151..1b6642d 100644
--- a/jsf-ri/src/main/java/com/sun/faces/util/ConcurrentCache.java
+++ b/jsf-ri/src/main/java/com/sun/faces/util/ConcurrentCache.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -69,7 +73,8 @@ public abstract class ConcurrentCache<K, V> {
     
     /**
      * Constructs this cache using the specified <code>Factory</code>.
-     * @param factory
+     * 
+     * @param f
      */
     public ConcurrentCache(Factory<K,V> f) {
         _f = f;
diff --git a/jsf-ri/src/main/java/com/sun/faces/util/DebugObjectOutputStream.java b/jsf-ri/src/main/java/com/sun/faces/util/DebugObjectOutputStream.java
new file mode 100644
index 0000000..20e63b1
--- /dev/null
+++ b/jsf-ri/src/main/java/com/sun/faces/util/DebugObjectOutputStream.java
@@ -0,0 +1,179 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ * This file incorporates work covered by the following copyright and
+ * permission notice:
+ *
+ * Copyright 2005-2007 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+
+
+ */
+package com.sun.faces.util;
+
+
+import java.io.ObjectOutputStream;
+import java.io.OutputStream;
+import java.io.IOException;
+import java.lang.reflect.Field;
+import java.util.List;
+import java.util.ArrayList;
+
+/*
+ * From: http://blog.crazybob.org/2007/02/debugging-serialization.html
+ * 
+ * Usage example:
+
+                DebugObjectOutputStream out =
+                        new DebugObjectOutputStream(oos);
+                try {
+                    out.writeObject(stateToWrite[1]);
+                } catch (Exception e) {
+                    DebugUtil.printState((Map)stateToWrite[1], LOGGER);
+                    throw new FacesException(
+                            "Serialization error. Path to offending instance: " 
+                            + out.getStack(), e);
+                }            
+
+ 
+ 
+ * 
+ * 
+ */
+
+public class DebugObjectOutputStream
+    extends ObjectOutputStream {
+
+  private static final Field DEPTH_FIELD;
+  static {
+    try {
+      DEPTH_FIELD = ObjectOutputStream.class
+          .getDeclaredField("depth");
+      DEPTH_FIELD.setAccessible(true);
+    } catch (NoSuchFieldException e) {
+      throw new AssertionError(e);
+    }
+  }
+
+  final List<Object> stack
+      = new ArrayList<Object>();
+
+  /**
+   * Indicates whether or not OOS has tried to
+   * write an IOException (presumably as the
+   * result of a serialization error) to the
+   * stream.
+   */
+  boolean broken = false;
+
+  public DebugObjectOutputStream(
+      OutputStream out) throws IOException {
+    super(out);
+    enableReplaceObject(true);
+  }
+
+  /**
+   * Abuse {@code replaceObject()} as a hook to
+   * maintain our stack.
+   */
+  protected Object replaceObject(Object o) {
+    // ObjectOutputStream writes serialization
+    // exceptions to the stream. Ignore
+    // everything after that so we don't lose
+    // the path to a non-serializable object. So
+    // long as the user doesn't write an
+    // IOException as the root object, we're OK.
+    int currentDepth = currentDepth();
+    if (o instanceof IOException
+        && currentDepth == 0) {
+      broken = true;
+    }
+    if (!broken) {
+      truncate(currentDepth);
+      stack.add(o);
+    }
+    return o;
+  }
+
+  private void truncate(int depth) {
+    while (stack.size() > depth) {
+      pop();
+    }
+  }
+
+  private Object pop() {
+    return stack.remove(stack.size() - 1);
+  }
+
+  /**
+   * Returns a 0-based depth within the object
+   * graph of the current object being
+   * serialized.
+   */
+  private int currentDepth() {
+    try {
+      Integer oneBased
+          = ((Integer) DEPTH_FIELD.get(this));
+      return oneBased - 1;
+    } catch (IllegalAccessException e) {
+      throw new AssertionError(e);
+    }
+  }
+
+  /**
+   * Returns the path to the last object
+   * serialized. If an exception occurred, this
+   * should be the path to the non-serializable
+   * object.
+   */
+  public List<Object> getStack() {
+    return stack;
+  }
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/util/DebugUtil.java b/jsf-ri/src/main/java/com/sun/faces/util/DebugUtil.java
index 234295a..c762479 100644
--- a/jsf-ri/src/main/java/com/sun/faces/util/DebugUtil.java
+++ b/jsf-ri/src/main/java/com/sun/faces/util/DebugUtil.java
@@ -1,377 +1,498 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package com.sun.faces.util;
-
-// DebugUtil.java
-
-import java.io.IOException;
-import java.io.PrintStream;
-import java.io.PrintWriter;
-import java.io.StringWriter;
-import java.io.Writer;
-import java.util.Iterator;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-import javax.faces.component.UIComponent;
-import javax.faces.component.ValueHolder;
-import javax.faces.context.FacesContext;
-import javax.faces.model.SelectItem;
-import javax.el.ValueExpression;
-
-import com.sun.faces.io.FastStringWriter;
-import com.sun.faces.renderkit.RenderKitUtils;
-
-/**
- * <B>DebugUtil</B> is a class ...
- * <p/>
- * <B>Lifetime And Scope</B> <P>
- */
-
-public class DebugUtil {
-
-//
-// Protected Constants
-//
-
-//
-// Class Variables
-//
-
-    private static boolean keepWaiting = true;
-
-    private static int curDepth = 0;
-
-//
-// Instance Variables
-//
-
-// Attribute Instance Variables
-
-// Relationship Instance Variables
-
-//
-// Constructors and Initializers    
-//
-
-    public DebugUtil() {
-        super();
-        // Util.parameterNonNull();
-        this.init();
-    }
-
-
-    protected void init() {
-        // super.init();
-    }
-
-//
-// Class methods
-//
-
-    public static void setKeepWaiting(boolean keepWaiting) {
-
-        DebugUtil.keepWaiting = keepWaiting;
-
-    }
-
-    /**
-     * Usage: <P>
-     * <p/>
-     * Place a call to this method in the earliest possible entry point of
-     * your servlet app.  It will cause the app to enter into an infinite
-     * loop, sleeping until the static var keepWaiting is set to false.  The
-     * idea is that you attach your debugger to the servlet, then, set a
-     * breakpont in this method.  When it is hit, you use the debugger to set
-     * the keepWaiting class var to false.
-     */
-
-    public static void waitForDebugger() {
-        while (keepWaiting) {
-            try {
-                Thread.sleep(5000);
-            } catch (InterruptedException e) {
-                System.out.println("DebugUtil.waitForDebugger(): Exception: " +
-                                   e.getMessage());
-            }
-        }
-    }
-
-
-    private static void indentPrintln(Writer out, String str) {
-
-        // handle indentation
-        try {
-            for (int i = 0; i < curDepth; i++) {
-                out.write("  ");
-            }
-            out.write(str + "\n");
-        } catch (IOException ignored) {}
-    }
-
-    /**
-     * @param root the root component
-     * @return the output of printTree() as a String.
-     * Useful when used with a Logger. For example:
-     *    logger.log(DebugUtil.printTree(root));
-     */
-    public static String printTree(UIComponent root) {
-        Writer writer = new FastStringWriter(1024);
-        printTree(root, writer);
-        return writer.toString();
-    }
-
-    /**
-     * Output of printTree() to a PrintStream.
-     * Usage:
-     *    DebugUtil.printTree(root, System.out);
-     *
-     * @param root the root component
-     * @param out the PrintStream to write to
-     */
-    public static void printTree(UIComponent root, PrintStream out) {
-        PrintWriter writer = new PrintWriter(out);
-        printTree(root, writer);
-        writer.flush();
-    }
-    
-    public static void printTree(UIComponent root, Logger logger, Level level) {
-        StringWriter sw = new StringWriter();
-        printTree(root, sw);
-        logger.log(level, sw.toString());
-    }
-
-    public static void printTree(UIComponent root, Writer out) {
-        if (null == root) {
-            return;
-        }
-        Object value = null;
-
-/* PENDING
-   indentPrintln(out, "===>Type:" + root.getComponentType());
-*/
-        indentPrintln(out, "id:" + root.getId());
-        indentPrintln(out, "type:" + root.getClass().getName());
-
-        if (root instanceof javax.faces.component.UISelectOne) {
-            Iterator<SelectItem> items = null;
-            try {
-                items = RenderKitUtils.getSelectItems(FacesContext.getCurrentInstance(),
-                                                      root);
-            } catch (Exception e) {
-                 // select items couldn't be resolved at this time
-                indentPrintln(out, " { SelectItem(s) not resolvable at this point in time }");
-            }
-            if (items != null) {
-                indentPrintln(out, " {");
-                while (items.hasNext()) {
-                    SelectItem curItem = items.next();
-                    indentPrintln(out, "\t value = "
-                                       + curItem.getValue()
-                                       +
-                                       ", label = "
-                                       + curItem.getLabel()
-                                       + ", description = "
-                                       +
-                                       curItem.getDescription());
-                }
-                indentPrintln(out, " }");
-            }
-        } else {
-            ValueExpression ve = null;
-            if (root instanceof ValueHolder) {
-                ve = root.getValueExpression("value");
-                try {
-                    value = ((ValueHolder) root).getValue();
-                } catch (Exception e) {
-                    value = "UNAVAILABLE";
-                }
-            }
-            if (ve != null) {
-                indentPrintln(out, "expression/value = " + ve.getExpressionString() + " : " + value);
-            } else {
-                indentPrintln(out, "value = " + value);
-            }
-
-            Iterator<String> it = root.getAttributes().keySet().iterator();
-            if (it != null) {
-                while (it.hasNext()) {                   
-                    String attrName = it.next();
-                    ve = root.getValueExpression(attrName);
-                    String expr = null;
-                    if (ve != null) {
-                        expr = ve.getExpressionString();
-                    }
-                    String val;
-                    try {
-                        val = root.getAttributes().get(attrName).toString();
-                    } catch (Exception e) {
-                        val = "UNAVAILABLE";
-                    }
-                    if (expr != null) {
-                        indentPrintln(out, "attr = " + attrName + " : [" + expr + " : " + val + " ]");
-                    } else {
-                        indentPrintln(out, "attr = " + attrName + " : " + val);
-                    }
-                }
-            }
-        }
-
-        curDepth++;
-        Iterator<UIComponent> it = root.getChildren().iterator();
-        // print all the facets of this component
-        for (UIComponent uiComponent : root.getFacets().values()) {
-            printTree(uiComponent, out);
-        }
-        // print all the children of this component
-        while (it.hasNext()) {
-            printTree(it.next(), out);
-        }
-        curDepth--;
-    }
-    
-    public static void simplePrintTree(UIComponent root, 
-                                      String duplicateId,
-                                       Writer out) {
-        if (null == root) {
-            return;
-        }                     
-
-        if (duplicateId.equals(root.getId())) {
-            indentPrintln(out, "+id: " + root.getId() + "  <===============");
-        } else {
-            indentPrintln(out, "+id: " + root.getId());
-        }
-        indentPrintln(out, " type: " + root.toString());           
-
-        curDepth++;       
-        // print all the facets of this component
-        for (UIComponent uiComponent : root.getFacets().values()) {
-            simplePrintTree(uiComponent, duplicateId, out);
-        }
-        // print all the children of this component
-        for (UIComponent uiComponent : root.getChildren()) {
-            simplePrintTree(uiComponent, duplicateId, out);
-        }
-        curDepth--;
-    }
-
-
-//    /**
-//     * Output of printTree() as a String. 
-//     * Useful when used with a Logger. For example:
-//     *    logger.log(DebugUtil.printTree(root));
-//     */
-//    public static String printTree(TreeStructure root) {
-//        Writer writer = new FastStringWriter(1024);
-//        printTree(root, writer);
-//        return writer.toString();
-//    }
-//
-//    /**
-//     * Output of printTree() to a PrintStream. 
-//     * Usage:
-//     *    DebugUtil.printTree(root, System.out);
-//     */
-//    public static void printTree(TreeStructure root, PrintStream out) {
-//        PrintWriter writer = new PrintWriter(out);
-//        printTree(root, writer);
-//        writer.flush();
-//    }
-//
-//    public static void printTree(TreeStructure root, Writer out) {
-//        if (null == root) {
-//            return;
-//        }
-//        int i = 0;
-//        Object value = null;
-//
-///* PENDING
-//   indentPrintln(out, "===>Type:" + root.getComponentType());
-//*/
-//        indentPrintln(out, "id:" + root.id);
-//        indentPrintln(out, "type:" + root.className);
-//
-//        Iterator items = null;
-//        SelectItem curItem = null;
-//        int j = 0;
-//
-//        curDepth++;
-//        if (null != root.children) {
-//            Iterator<TreeStructure> it = root.children.iterator();
-//            while (it.hasNext()) {
-//                printTree(it.next(), out);
-//            }
-//        }
-//        curDepth--;
-//    }
-
-    public static void printTree(Object [] root, Writer out) {
-        if (null == root) {
-            indentPrintln(out, "null");
-            return;
-        }
-
-/* PENDING
-   indentPrintln(out, "===>Type:" + root.getComponentType());
-*/
-        // drill down to the bottom of the first element in the array
-        boolean foundBottom = false;
-        Object [] myState = root;
-        while (!foundBottom) {
-            Object state = myState[0];
-            foundBottom = !state.getClass().isArray();
-            if (!foundBottom) {
-                myState = (Object []) state;
-            }
-        }
-
-        indentPrintln(out, "type:" + myState[8]);
-
-        curDepth++;
-        root = (Object []) root[1];
-        for (int i = 0; i < root.length; i++) {
-            printTree((Object []) root[i], out);
-        }
-        curDepth--;
-    }
-//
-// General Methods
-//
-
-
-} // end of class DebugUtil
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.util;
+
+// DebugUtil.java
+
+import com.sun.faces.RIConstants;
+import java.io.IOException;
+import java.io.PrintStream;
+import java.io.PrintWriter;
+import java.io.StringWriter;
+import java.io.UnsupportedEncodingException;
+import java.io.Writer;
+import java.util.Iterator;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import javax.faces.component.UIComponent;
+import javax.faces.component.ValueHolder;
+import javax.faces.context.FacesContext;
+import javax.faces.model.SelectItem;
+import javax.el.ValueExpression;
+
+import com.sun.faces.io.FastStringWriter;
+import com.sun.faces.renderkit.RenderKitUtils;
+import java.io.ByteArrayOutputStream;
+import java.io.ObjectOutputStream;
+import java.io.OutputStream;
+import java.io.Serializable;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * <B>DebugUtil</B> is a class ...
+ * <p/>
+ * <B>Lifetime And Scope</B> <P>
+ */
+
+public class DebugUtil {
+
+    private static final Logger LOGGER = Logger.getLogger(DebugUtil.class.getPackage().getName());
+    
+//
+// Protected Constants
+//
+
+//
+// Class Variables
+//
+
+    private static boolean keepWaiting = true;
+
+    private static int curDepth = 0;
+
+//
+// Instance Variables
+//
+
+// Attribute Instance Variables
+
+// Relationship Instance Variables
+
+//
+// Constructors and Initializers    
+//
+
+    public DebugUtil() {
+        super();
+        // Util.parameterNonNull();
+        this.init();
+    }
+
+
+    protected void init() {
+        // super.init();
+    }
+
+//
+// Class methods
+//
+
+    public static void setKeepWaiting(boolean keepWaiting) {
+
+        DebugUtil.keepWaiting = keepWaiting;
+
+    }
+
+    /**
+     * Usage: <P>
+     * <p/>
+     * Place a call to this method in the earliest possible entry point of
+     * your servlet app.  It will cause the app to enter into an infinite
+     * loop, sleeping until the static var keepWaiting is set to false.  The
+     * idea is that you attach your debugger to the servlet, then, set a
+     * breakpont in this method.  When it is hit, you use the debugger to set
+     * the keepWaiting class var to false.
+     */
+
+    public static void waitForDebugger() {
+        while (keepWaiting) {
+            try {
+                Thread.sleep(5000);
+            } catch (InterruptedException e) {
+                System.out.println("DebugUtil.waitForDebugger(): Exception: " +
+                                   e.getMessage());
+            }
+        }
+    }
+
+
+    private static void indentPrintln(Writer out, String str) {
+
+        // handle indentation
+        try {
+            for (int i = 0; i < curDepth; i++) {
+                out.write("  ");
+            }
+            out.write(str + "\n");
+        } catch (IOException ioe) {
+            if (LOGGER.isLoggable(Level.FINEST)) {
+                LOGGER.log(Level.FINEST, "Unable to write indent", ioe);
+            }
+        }
+    }
+    
+    private static void assertSerializability(StringBuilder builder, Object toPrint) {
+        DebugObjectOutputStream doos = null;
+        try {
+            OutputStream base = new ByteArrayOutputStream();
+            ObjectOutputStream oos = new ObjectOutputStream(base);
+            doos = new DebugObjectOutputStream(oos);
+            doos.writeObject(toPrint);
+        }
+        catch (IOException ioe) {
+            List pathToBadObject = doos.getStack();
+            builder.append("Path to non-Serializable Object: \n");
+            for (Object cur : pathToBadObject) {
+                builder.append(cur.toString()).append("\n");
+            }
+        }
+    }
+
+    private static void indentPrintln(Logger out, Object toPrint) {
+        
+        StringBuilder builder = new StringBuilder();
+        String str = (null == toPrint) ? "null" : toPrint.toString();
+
+        // handle indentation
+        for (int i = 0; i < curDepth; i++) {
+            builder.append("  ");
+        }
+        builder.append(str + "\n");
+        
+        if (!(toPrint instanceof String)) {
+            assertSerializability(builder, toPrint);
+        }
+        
+        out.severe(builder.toString());
+        
+        
+    }
+
+    /**
+     * @param root the root component
+     * @return the output of printTree() as a String.
+     * Useful when used with a Logger. For example:
+     *    logger.log(DebugUtil.printTree(root));
+     */
+    public static String printTree(UIComponent root) {
+        Writer writer = new FastStringWriter(1024);
+        printTree(root, writer);
+        return writer.toString();
+    }
+
+    /**
+     * Output of printTree() to a PrintStream.
+     * Usage:
+     *    DebugUtil.printTree(root, System.out);
+     *
+     * @param root the root component
+     * @param out the PrintStream to write to
+     */
+    public static void printTree(UIComponent root, PrintStream out) {
+        PrintWriter writer;
+        try {
+            writer = new PrintWriter(new PrintStream(out, true, RIConstants.CHAR_ENCODING));
+            printTree(root, writer);
+            writer.flush();
+
+        } catch (UnsupportedEncodingException ex) {
+            System.out.println(ex.getMessage());
+        }
+    }
+    
+    public static void printTree(UIComponent root, Logger logger, Level level) {
+        StringWriter sw = new StringWriter();
+        printTree(root, sw);
+        logger.log(level, sw.toString());
+    }
+
+    public static void printTree(UIComponent root, Writer out) {
+        if (null == root) {
+            return;
+        }
+        Object value = null;
+
+/* PENDING
+   indentPrintln(out, "===>Type:" + root.getComponentType());
+*/
+        indentPrintln(out, "id:" + root.getId());
+        indentPrintln(out, "type:" + root.getClass().getName());
+
+        if (root instanceof javax.faces.component.UISelectOne) {
+            Iterator<SelectItem> items = null;
+            try {
+                items = RenderKitUtils.getSelectItems(FacesContext.getCurrentInstance(),
+                                                      root);
+            } catch (Exception e) {
+                 // select items couldn't be resolved at this time
+                indentPrintln(out, " { SelectItem(s) not resolvable at this point in time }");
+            }
+            if (items != null) {
+                indentPrintln(out, " {");
+                while (items.hasNext()) {
+                    SelectItem curItem = items.next();
+                    indentPrintln(out, "\t value = "
+                                       + curItem.getValue()
+                                       +
+                                       ", label = "
+                                       + curItem.getLabel()
+                                       + ", description = "
+                                       +
+                                       curItem.getDescription());
+                }
+                indentPrintln(out, " }");
+            }
+        } else {
+            ValueExpression ve = null;
+            if (root instanceof ValueHolder) {
+                ve = root.getValueExpression("value");
+                try {
+                    value = ((ValueHolder) root).getValue();
+                } catch (Exception e) {
+                    value = "UNAVAILABLE";
+                }
+            }
+            if (ve != null) {
+                indentPrintln(out, "expression/value = " + ve.getExpressionString() + " : " + value);
+            } else {
+                indentPrintln(out, "value = " + value);
+            }
+
+            Iterator<String> it = root.getAttributes().keySet().iterator();
+            if (it != null) {
+                while (it.hasNext()) {                   
+                    String attrName = it.next();
+                    ve = root.getValueExpression(attrName);
+                    String expr = null;
+                    if (ve != null) {
+                        expr = ve.getExpressionString();
+                    }
+                    String val;
+                    try {
+                        val = root.getAttributes().get(attrName).toString();
+                    } catch (Exception e) {
+                        val = "UNAVAILABLE";
+                    }
+                    if (expr != null) {
+                        indentPrintln(out, "attr = " + attrName + " : [" + expr + " : " + val + " ]");
+                    } else {
+                        indentPrintln(out, "attr = " + attrName + " : " + val);
+                    }
+                }
+            }
+        }
+
+        curDepth++;
+        Iterator<UIComponent> it = root.getChildren().iterator();
+        // print all the facets of this component
+        for (UIComponent uiComponent : root.getFacets().values()) {
+            printTree(uiComponent, out);
+        }
+        // print all the children of this component
+        while (it.hasNext()) {
+            printTree(it.next(), out);
+        }
+        curDepth--;
+    }
+    
+    public static void simplePrintTree(UIComponent root, 
+                                      String duplicateId,
+                                       Writer out) {
+        if (null == root) {
+            return;
+        }                     
+
+        if (duplicateId.equals(root.getClientId())) {
+            indentPrintln(out, "+id: " + root.getId() + "  <===============");
+        } else {
+            indentPrintln(out, "+id: " + root.getId());
+        }
+        indentPrintln(out, " type: " + root.toString());           
+
+        curDepth++;       
+        // print all the facets of this component
+        for (UIComponent uiComponent : root.getFacets().values()) {
+            simplePrintTree(uiComponent, duplicateId, out);
+        }
+        // print all the children of this component
+        for (UIComponent uiComponent : root.getChildren()) {
+            simplePrintTree(uiComponent, duplicateId, out);
+        }
+        curDepth--;
+    }
+    
+    public static void printState(Map state, Logger out) {
+        Set<Map.Entry> entrySet = state.entrySet();
+        Object key, value;
+        String keyIsSerializable, valueIsSerializable;
+        for (Map.Entry cur : entrySet) {
+            key = cur.getKey();
+            value = cur.getValue();
+            keyIsSerializable = (key instanceof Serializable) ? "true" : "+_+_+_+FALSE+_+_+_+_";
+            valueIsSerializable = (value instanceof Serializable) ? "true" : "+_+_+_+FALSE+_+_+_+_";
+            out.severe("key: " + key.toString() + " class:" + key.getClass() + " Serializable: " + 
+                    keyIsSerializable);
+            out.severe("value: " + value.toString() + " class:" + key.getClass() + " Serializable: " + 
+                    keyIsSerializable);
+            if (value instanceof Object []) {
+                printTree((Object []) value, out);
+            }
+        }
+        
+    }
+
+
+//    /**
+//     * Output of printTree() as a String. 
+//     * Useful when used with a Logger. For example:
+//     *    logger.log(DebugUtil.printTree(root));
+//     */
+//    public static String printTree(TreeStructure root) {
+//        Writer writer = new FastStringWriter(1024);
+//        printTree(root, writer);
+//        return writer.toString();
+//    }
+//
+//    /**
+//     * Output of printTree() to a PrintStream. 
+//     * Usage:
+//     *    DebugUtil.printTree(root, System.out);
+//     */
+//    public static void printTree(TreeStructure root, PrintStream out) {
+//        PrintWriter writer = new PrintWriter(out);
+//        printTree(root, writer);
+//        writer.flush();
+//    }
+//
+//    public static void printTree(TreeStructure root, Writer out) {
+//        if (null == root) {
+//            return;
+//        }
+//        int i = 0;
+//        Object value = null;
+//
+///* PENDING
+//   indentPrintln(out, "===>Type:" + root.getComponentType());
+//*/
+//        indentPrintln(out, "id:" + root.id);
+//        indentPrintln(out, "type:" + root.className);
+//
+//        Iterator items = null;
+//        SelectItem curItem = null;
+//        int j = 0;
+//
+//        curDepth++;
+//        if (null != root.children) {
+//            Iterator<TreeStructure> it = root.children.iterator();
+//            while (it.hasNext()) {
+//                printTree(it.next(), out);
+//            }
+//        }
+//        curDepth--;
+//    }
+
+    public static void printTree(Object [] root, Writer out) {
+        
+        if (null == root) {
+            indentPrintln(out, "null");
+            return;
+        }
+        
+        Object obj;
+        for (int i = 0; i < root.length; i++) {
+            obj = root[i];
+            if (null == obj) {
+                indentPrintln(out, "null");
+            } else {
+                if (obj.getClass().isArray()) {
+                    curDepth++;
+                    printTree((Object [])obj, out);
+                    curDepth--;
+                } else {
+                    indentPrintln(out, obj.toString());
+                }
+                
+            }
+        }
+        
+        
+    }
+
+    public static void printTree(Object [] root, Logger out) {
+        
+        if (null == root) {
+            indentPrintln(out, "null");
+            return;
+        }
+        
+        Object obj;
+        for (int i = 0; i < root.length; i++) {
+            obj = root[i];
+            if (null == obj) {
+                indentPrintln(out, "null");
+            } else {
+                if (obj.getClass().isArray()) {
+                    curDepth++;
+                    printTree((Object [])obj, out);
+                    curDepth--;
+                } else if (obj instanceof List) {
+                    printList((List) obj, out);
+                } else {
+                    indentPrintln(out, obj);
+                }
+                
+            }
+        }
+        
+        
+    }
+    
+    public static void printList(List list, Logger out) {
+        for (Object cur : list) {
+            if (cur instanceof List) {
+                curDepth++;
+                printList((List)cur, out);
+                curDepth--;
+            } else {
+                indentPrintln(out, cur);
+            }
+        }
+    }
+    
+    //
+// General Methods
+//
+
+
+} // end of class DebugUtil
diff --git a/jsf-ri/src/main/java/com/sun/faces/util/ExpiringConcurrentCache.java b/jsf-ri/src/main/java/com/sun/faces/util/ExpiringConcurrentCache.java
index ef4d198..c2869e2 100644
--- a/jsf-ri/src/main/java/com/sun/faces/util/ExpiringConcurrentCache.java
+++ b/jsf-ri/src/main/java/com/sun/faces/util/ExpiringConcurrentCache.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -72,7 +76,7 @@ public final class ExpiringConcurrentCache<K, V> extends ConcurrentCache<K, V> {
     
     /**
      * Public constructor.
-     * @param factory used to create new instances of objects that are not already available
+     * @param f used to create new instances of objects that are not already available
      * @param checker used to check whether an object in the cache has expired
      */
     public ExpiringConcurrentCache(Factory<K, V> f, ExpiryChecker<K, V> checker) {
@@ -178,7 +182,7 @@ public final class ExpiringConcurrentCache<K, V> extends ConcurrentCache<K, V> {
     
 
 
-    private final ExpiryChecker<K, V> _getExpiryChecker() {
+    private ExpiryChecker<K, V> _getExpiryChecker() {
         return _checker;
     }
     
diff --git a/jsf-ri/src/main/java/com/sun/faces/util/FacesLogger.java b/jsf-ri/src/main/java/com/sun/faces/util/FacesLogger.java
index 9f18143..ee2b2a5 100644
--- a/jsf-ri/src/main/java/com/sun/faces/util/FacesLogger.java
+++ b/jsf-ri/src/main/java/com/sun/faces/util/FacesLogger.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -33,10 +37,16 @@
  * only if the new code is made subject to such option by the copyright
  * holder.
  */
- 
+
 package com.sun.faces.util;
 
+import java.text.MessageFormat;
+import java.util.Locale;
+import java.util.MissingResourceException;
+import java.util.ResourceBundle;
 import java.util.logging.Logger;
+import javax.faces.component.UIViewRoot;
+import javax.faces.context.FacesContext;
 
 /**
  * <p/>
@@ -52,12 +62,14 @@ public enum FacesLogger {
     CONTEXT("context"),
     FACELETS_COMPILER("facelets.compiler"),
     FACELETS_COMPONENT("facelets.tag.component"),
+    FACELETS_EL("facelets.el"),
     FACELETS_META("facelets.tag.meta"),
     FACELETS_COMPOSITION("facelets.tag.ui.composition"),
     FACELETS_DECORATE("facelets.tag.ui.decorate"),
     FACELETS_INCLUDE("facelets.tag.ui.include"),
     FACELETS_FACELET("faclets.facelet"),
     FACELETS_FACTORY("facelets.factory"),
+    FLOW("flow"),
     LIFECYCLE("lifecycle"),
     MANAGEDBEAN("managedbean"),
     RENDERKIT("renderkit"),
@@ -90,5 +102,33 @@ public enum FacesLogger {
     public Logger getLogger() {
         return Logger.getLogger(loggerName, LOGGER_RESOURCES);
     }
+    
+    public String interpolateMessage(FacesContext context,
+          String messageId,
+          Object [] params) {
+        String result = null;
+        ResourceBundle rb = null;
+        UIViewRoot root = context.getViewRoot();
+        Locale curLocale;
+        ClassLoader loader = Util.getCurrentLoader(this);
+        if (null == root) {
+            curLocale = Locale.getDefault();
+        } else {
+            curLocale = root.getLocale();
+        }
+        try {
+            rb = ResourceBundle.getBundle(getResourcesName(), curLocale, loader);
+            String message = rb.getString(messageId);
+            if (params != null) {
+                result = MessageFormat.format(message, params);
+            } else {
+                result = message;
+            }
+        } catch (MissingResourceException mre) {
+            result = messageId;
+        }
+        
+        return result;
+    }
 
 }
diff --git a/jsf-ri/src/main/java/com/sun/faces/util/HtmlUtils.java b/jsf-ri/src/main/java/com/sun/faces/util/HtmlUtils.java
index d3da2a0..3199242 100644
--- a/jsf-ri/src/main/java/com/sun/faces/util/HtmlUtils.java
+++ b/jsf-ri/src/main/java/com/sun/faces/util/HtmlUtils.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -36,6 +40,7 @@
 
 package com.sun.faces.util;
 
+import com.sun.faces.RIConstants;
 import com.sun.faces.config.WebConfiguration;
 
 import java.io.ByteArrayOutputStream;
@@ -168,11 +173,11 @@ public class HtmlUtils {
                                             buffLength,
                                             AMP_CHARS);
                 } else if (ch == '"') {
-                     nextIndex = addToBuffer(out,
-                                             buff,
-                                             buffIndex,
-                                             buffLength,
-                                             QUOT_CHARS);
+                        nextIndex = addToBuffer(out,
+                             buff,
+                             buffIndex,
+                             buffLength,
+                             "\"".toCharArray());
                 } else {
                     nextIndex = addToBuffer(out, buff, buffIndex,
                                             buffLength, ch);
@@ -742,14 +747,7 @@ public class HtmlUtils {
             char ch = textBuff[i];
 
             if ((ch < 33) || (ch > 126)) {
-                if (ch == ' ') {
-                    out.write('+');
-                } else {
-                    // ISO-8859-1.  Blindly assume the character will be < 255.
-                    // Not much we can do if it isn't.
-                    writeURIDoubleHex(out, ch);
-
-                }
+                writeURIDoubleHex(out, ch);
             }
             // DO NOT encode '%'.  If you do, then for starters,
             // we'll double-encode anything that's pre-encoded.
@@ -780,6 +778,15 @@ public class HtmlUtils {
         }
     }
 
+    static public void writeTextForXML(Writer out, String text, char[] outbuf)
+        throws IOException {
+        char[] textBuffer = new char[128];
+        int len = text.toString().length();
+        if (textBuffer.length < len) {
+            textBuffer = new char[len * 2];
+        }
+        HtmlUtils.writeText(out, true, true, outbuf, text, textBuffer);
+    }
 
     // Encode a String into URI-encoded form.  This code will
     // appear rather (ahem) similar to java.net.URLEncoder
@@ -813,7 +820,7 @@ public class HtmlUtils {
                     if (encoding != null) {
                         writer = new OutputStreamWriter(buf, encoding);
                     } else {
-                        writer = new OutputStreamWriter(buf);
+                        writer = new OutputStreamWriter(buf, RIConstants.CHAR_ENCODING);
                     }
                     charArray = new char[1];
                 }
@@ -874,7 +881,7 @@ public class HtmlUtils {
                     if (encoding != null) {
                         writer = new OutputStreamWriter(buf, encoding);
                     } else {
-                        writer = new OutputStreamWriter(buf);
+                        writer = new OutputStreamWriter(buf, RIConstants.CHAR_ENCODING);
                     }
                     charArray = new char[1];
                 }
diff --git a/jsf-ri/src/main/java/com/sun/faces/util/LRUMap.java b/jsf-ri/src/main/java/com/sun/faces/util/LRUMap.java
index e6eea4a..8dd859f 100644
--- a/jsf-ri/src/main/java/com/sun/faces/util/LRUMap.java
+++ b/jsf-ri/src/main/java/com/sun/faces/util/LRUMap.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/util/MessageUtils.java b/jsf-ri/src/main/java/com/sun/faces/util/MessageUtils.java
index 999cca7..1f414b4 100644
--- a/jsf-ri/src/main/java/com/sun/faces/util/MessageUtils.java
+++ b/jsf-ri/src/main/java/com/sun/faces/util/MessageUtils.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -258,6 +262,8 @@ public class MessageUtils {
           "com.sun.faces.NULL_RESPONSE_VIEW_ERROR";
     public static final String NULL_RESPONSE_WRITER_ERROR_MESSAGE_ID =
           "com.sun.faces.NULL_RESPONSE_WRITER_ERROR";
+    public static final String NULL_VIEW_ID_ERROR_MESSAGE_ID =
+          "com.sun.faces.NULL_VIEW_ID";
     public static final String OBJECT_CREATION_ERROR_ID =
           "com.sun.faces.OBJECT_CREATION_ERROR";
     public static final String OBJECT_IS_READONLY =
@@ -332,7 +338,10 @@ public class MessageUtils {
             "com.sun.faces.MISSING_COMPONENT_FACET";
     public static final String MISSING_COMPONENT_METADATA =
             "com.sun.faces.MISSING_COMPONENT_METADATA";
-
+    public static final String MISSING_FORM_ERROR =
+        "com.sun.faces.MISSING_FORM_ERROR";
+    public static final String MISSING_METADATA_ERROR =
+        "com.sun.faces.MISSING_METADATA_ERROR";
 
     // ------------------------------------------------------------ Constructors
 
diff --git a/jsf-ri/src/main/java/com/sun/faces/util/MetadataWrapperMap.java b/jsf-ri/src/main/java/com/sun/faces/util/MetadataWrapperMap.java
new file mode 100644
index 0000000..e0e8596
--- /dev/null
+++ b/jsf-ri/src/main/java/com/sun/faces/util/MetadataWrapperMap.java
@@ -0,0 +1,115 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright 1997-2011 Sun Microsystems, Inc. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License. You can obtain
+ * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
+ * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
+ * Sun designates this particular file as subject to the "Classpath" exception
+ * as provided by Sun in the GPL Version 2 section of the License file that
+ * accompanied this code.  If applicable, add the following below the License
+ * Header, with the fields enclosed by brackets [] replaced by your own
+ * identifying information: "Portions Copyrighted [year]
+ * [name of copyright owner]"
+ *
+ * Contributor(s):
+ *
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.util;
+
+import java.util.Collection;
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
+
+public abstract class MetadataWrapperMap<K, V> implements Map<K, V> {
+
+    public MetadataWrapperMap(Map<K, V> toWrap) {
+        this.wrapped = toWrap;
+        metadata = new ConcurrentHashMap<K, Map<Object, Object>>();
+    }
+
+    protected Map<K, Map<Object, Object>> getMetadata() {
+        return metadata;
+    }
+
+    private Map<K, V> wrapped;
+    private Map<K, Map<Object, Object>> metadata;
+
+    public void clear() {
+	this.wrapped.clear();
+    }
+
+    @SuppressWarnings(value="")
+    public boolean containsKey(Object key) {
+	return this.wrapped.containsKey(key);
+    }
+
+    @SuppressWarnings(value="")
+    public boolean containsValue(Object value) {
+	return this.wrapped.containsValue(value);
+    }
+
+    public Set<Map.Entry<K,V>> entrySet() {
+	return this.wrapped.entrySet();
+    }
+
+    @SuppressWarnings(value="")
+    public V get(Object key) {
+	return this.wrapped.get(key);
+    }
+
+
+    public boolean isEmpty() {
+	return this.wrapped.isEmpty();
+    }
+
+    public Set<K> keySet() {
+	return this.wrapped.keySet();
+    }
+
+    public V put(K key, V value) {
+        this.onPut(key, value);
+        return this.wrapped.put(key, value);
+    }
+
+    protected abstract V onPut(K key, V value);
+
+    public void putAll(Map m) {
+	this.wrapped.putAll(m);
+    }
+
+    @SuppressWarnings(value="")
+    public V remove(Object key) {
+	return this.wrapped.remove(key);
+    }
+
+    public int size() {
+	return this.wrapped.size();
+    }
+
+    public Collection<V> values() {
+	return this.wrapped.values();
+    }
+
+
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/util/MojarraThreadFactory.java b/jsf-ri/src/main/java/com/sun/faces/util/MojarraThreadFactory.java
index 99f9f52..2d027c9 100644
--- a/jsf-ri/src/main/java/com/sun/faces/util/MojarraThreadFactory.java
+++ b/jsf-ri/src/main/java/com/sun/faces/util/MojarraThreadFactory.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -78,4 +82,4 @@ public class MojarraThreadFactory implements ThreadFactory {
 
     }
 
-} // END MojarraThreadFactory
\ No newline at end of file
+} // END MojarraThreadFactory
diff --git a/jsf-ri/src/main/java/com/sun/faces/util/MostlySingletonSet.java b/jsf-ri/src/main/java/com/sun/faces/util/MostlySingletonSet.java
new file mode 100644
index 0000000..13bff2d
--- /dev/null
+++ b/jsf-ri/src/main/java/com/sun/faces/util/MostlySingletonSet.java
@@ -0,0 +1,353 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.util;
+
+import java.io.Serializable;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Set;
+
+/*
+ * Non-thread safe implementation of Set for use when most of the time there
+ * is only one element, but sometimes there are more than one.
+ * 
+ */
+public class MostlySingletonSet<E> implements Set<E>, Serializable {
+    
+    private static final long serialVersionUID = 2818326518724772145L;
+    
+    private Set<E> inner;
+    
+    public MostlySingletonSet() {
+        
+    }
+    
+    // <editor-fold defaultstate="collapsed" desc="Mutating methods">
+
+    @Override
+    public boolean add(E e) {
+        boolean result = true;
+        if (null == inner) {
+            inner = Collections.singleton(e);
+        } else {
+            // If we need to transition from one to more-than-one
+            if (1 == inner.size()) {
+                HashSet<E> newSet = new HashSet<E>();
+                newSet.add(inner.iterator().next());
+                inner = newSet;
+            }
+            result = inner.add(e);
+        }
+        
+        return result;
+    }
+
+    @Override
+    public boolean addAll(Collection<? extends E> c) {
+        boolean result = true;
+        
+        if (null == inner && 1 == c.size()) {
+            inner = (Set<E>) Collections.singleton(c.iterator().next());
+        } else {
+            // If we need to transition from one to more-than-one
+            if (1 == inner.size()) {
+                HashSet<E> newSet = new HashSet<E>();
+                newSet.add(inner.iterator().next());
+                inner = newSet;
+            }
+            result = inner.addAll(c);
+        }
+        return result;
+    }
+
+    @Override
+    public void clear() {
+        if (null != inner) {
+            // If we need to transition from more-than-one to zero
+            if (1 < inner.size()) {
+                inner.clear();
+            }
+            inner = null;
+        }
+    }
+    
+    
+    @Override
+    public boolean remove(Object o) {
+        boolean didRemove = false;
+        
+        if (null != inner) {
+            if (1 == inner.size()) {
+                // If we need to transition from one to zero
+                E e = inner.iterator().next();
+                // If our element is not null, and the argument is not null
+                if (null != e && null != o) {
+                    didRemove = e.equals(o);
+                } else {
+                    didRemove = null == o;
+                }
+                if (didRemove) {
+                    inner = null;
+                }
+                
+            } else {
+                didRemove = inner.remove(o);
+                if (didRemove && 1 == inner.size()) {
+                    Set<E> newInner = Collections.singleton(inner.iterator().next());
+                    inner.clear();
+                    inner = newInner;
+                }
+            }
+            
+            
+        }
+        
+        return didRemove;
+    }
+
+    @Override
+    public boolean removeAll(Collection<?> c) {
+        boolean result = false;
+        
+        if (null != inner) {
+            if (1 == inner.size()) {
+                // May throw NPE per spec for Collection.removeAll()
+                Iterator incomingIter = c.iterator();
+                E oneAndOnlyElement = inner.iterator().next();
+                // Iterate over the incoming collection
+                // looking for a member that is equal to our one and only
+                // element.
+                while (incomingIter.hasNext()) {
+                    Object cur = incomingIter.next();
+                    if (null != oneAndOnlyElement) {
+                        // This handles null == cur.
+                        if (result = oneAndOnlyElement.equals(cur)) {
+                            break;
+                        } 
+                    } else {
+                        // oneAndOnlyElement is null
+                        if (result = cur == null) {
+                            break;
+                        }
+                    }
+                }
+                if (result) {
+                    inner = null;
+                }
+            } else {
+                result = inner.removeAll(c);
+                if (result && 0 == inner.size()) {
+                    inner = null;
+                }
+                
+            }
+        }
+        
+        return result;
+    }
+
+    @Override
+    public boolean retainAll(Collection<?> c) {
+        boolean didModify = false;
+        
+        if (null != inner) {
+            if (1 == inner.size()) {
+                Iterator incomingIter = c.iterator();
+                E oneAndOnlyElement = inner.iterator().next();
+                // Iterate over the incoming collection
+                // looking for a member that is equal to our one and only
+                // element.  If found, we take no action, otherwise
+                // we remove the oneAndOnlyElement.
+                boolean found = false;
+                while (incomingIter.hasNext()) {
+                    Object cur = incomingIter.next();
+                    if (null != oneAndOnlyElement) {
+                        if (found = oneAndOnlyElement.equals(cur)) {
+                            break;
+                        }
+                    } else {
+                        if (found = cur == null) {
+                            break;
+                        }
+                    }
+                }
+                if (didModify = !found) {
+                    inner = null;
+                }
+                
+            } else {
+                didModify = inner.retainAll(c);
+            }
+        }
+        
+        return didModify;
+    }
+
+    // </editor-fold>
+
+    // <editor-fold defaultstate="collapsed" desc="Non-mutating methods">
+    
+    @Override
+    public boolean contains(Object o) {
+        boolean result = false;
+        
+        if (null != inner) {
+            result = inner.contains(o);
+        }
+        
+        return result;
+    }
+
+    @Override
+    public boolean containsAll(Collection<?> c) {
+        boolean result = false;
+        
+        if (null != inner) {
+            result = inner.containsAll(c);
+        }
+        
+        return result;
+    }
+
+    @Override
+    public boolean isEmpty() {
+        boolean result = true;
+        
+        if (null != inner) {
+            result = inner.isEmpty();
+        }
+        
+        return result;
+    }
+
+
+    @Override
+    public int size() {
+        int size = 0;
+        if (null != inner) {
+            size = inner.size();
+        }
+        return size;
+    }
+    
+    @Override
+    public boolean equals(Object obj) {
+        boolean result = false;
+        if (obj != null) {
+            if (obj instanceof MostlySingletonSet) {
+                final MostlySingletonSet<E> other = (MostlySingletonSet<E>) obj;
+                if (this.inner != other.inner && (this.inner == null || !this.inner.equals(other.inner))) {
+                    result = false;
+                } else {
+                    result = true;
+                }
+            } else if (obj instanceof Collection) {
+                Collection otherCollection = (Collection) obj;
+                
+                if (null != inner) {
+                    result = inner.equals(otherCollection);
+                } else {
+                    result = otherCollection.isEmpty();
+                }
+                
+            } 
+        }
+        return result;
+    }
+
+    @Override
+    public int hashCode() {
+        int hash = 5;
+        hash = 83 * hash + (this.inner != null ? this.inner.hashCode() : 0);
+        return hash;
+    }
+
+    @Override
+    public String toString() {
+        String result = "empty";
+        if (null != inner) {
+            result = inner.toString();
+        }
+        return result;
+    }
+    
+    
+    
+    // </editor-fold>
+    
+    // <editor-fold defaultstate="collapsed" desc="Iteration and array">
+
+    @Override
+    public Iterator<E> iterator() {
+        Iterator<E> result;
+
+        if (null != inner) {
+            result = inner.iterator();
+        } else {
+            result = Collections.EMPTY_SET.iterator();
+        }
+        
+        return result;
+    }
+
+    @Override
+    public Object[] toArray() {
+        Object [] result = null;
+        if (null != inner) {
+            result = inner.toArray();
+        }
+        return result;
+    }
+
+    @Override
+    public <T> T[] toArray(T[] a) {
+        T [] result = null;
+        if (null != inner) {
+            result = inner.toArray(a);
+        }
+        return result;
+    }
+    
+    // </editor-fold>
+    
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/util/MultiKeyConcurrentHashMap.java b/jsf-ri/src/main/java/com/sun/faces/util/MultiKeyConcurrentHashMap.java
index 5344944..95652eb 100644
--- a/jsf-ri/src/main/java/com/sun/faces/util/MultiKeyConcurrentHashMap.java
+++ b/jsf-ri/src/main/java/com/sun/faces/util/MultiKeyConcurrentHashMap.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -333,7 +337,7 @@ public class MultiKeyConcurrentHashMap<K, V> {
                     if ((e.hash == hash && key1.equals(e.key1))
                         && ((key2 == null && e.key2 == null) || (key2 != null && key2.equals(e.key2)))
                         && ((key3 == null && e.key3 == null) || (key3 != null && key3.equals(e.key3)))
-                        && ((key4 == null && e.key4 == null) || (key4 != null && key4.equals(e.key2)))) {
+                        && ((key4 == null && e.key4 == null) || (key4 != null && key4.equals(e.key4)))) {
                         V v = e.value;
                         if (v != null) {
                             return v;
@@ -357,7 +361,7 @@ public class MultiKeyConcurrentHashMap<K, V> {
                     if ((e.hash == hash && key1.equals(e.key1))
                         && ((key2 == null && e.key2 == null) || (key2 != null && key2.equals(e.key2)))
                         && ((key3 == null && e.key3 == null) || (key3 != null && key3.equals(e.key3)))
-                        && ((key4 == null && e.key4 == null) || (key4 != null && key4.equals(e.key2)))) {
+                        && ((key4 == null && e.key4 == null) || (key4 != null && key4.equals(e.key4)))) {
                         return true;
                     }
                     e = e.next;
diff --git a/jsf-ri/src/main/java/com/sun/faces/util/ReflectionUtils.java b/jsf-ri/src/main/java/com/sun/faces/util/ReflectionUtils.java
index ac34786..f736473 100644
--- a/jsf-ri/src/main/java/com/sun/faces/util/ReflectionUtils.java
+++ b/jsf-ri/src/main/java/com/sun/faces/util/ReflectionUtils.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -476,4 +480,4 @@ public final class ReflectionUtils {
     }
 
     
-} // END ReflectionUtils
\ No newline at end of file
+} // END ReflectionUtils
diff --git a/jsf-ri/src/main/java/com/sun/faces/util/RequestStateManager.java b/jsf-ri/src/main/java/com/sun/faces/util/RequestStateManager.java
index 7ae759b..034a052 100644
--- a/jsf-ri/src/main/java/com/sun/faces/util/RequestStateManager.java
+++ b/jsf-ri/src/main/java/com/sun/faces/util/RequestStateManager.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -170,6 +174,14 @@ public class RequestStateManager {
           PROCESSED_RESOURCE_DEPENDENCIES
     };
 
+    /**
+     * <p>The key under with the Map containing the implementation specific
+     * attributes will be stored within the request.<p>
+     */
+    private static final String KEY =
+          RequestStateManager.class.getName();
+
+
     private static final Map<PhaseId,String[]> PHASE_ATTRIBUTES =
         new HashMap<PhaseId,String[]>(2, 1.0f);
 
@@ -277,4 +289,24 @@ public class RequestStateManager {
 
     }
 
+    /**
+     * @param ctx the <code>FacesContext</code> for the current request
+     * @return the Map from the request containing the implementation specific
+     *  attributes needed for processing
+     */
+    public static Map<String,Object> getStateMap(FacesContext ctx) {
+
+        assert (ctx != null); // all callers guard against a null context
+        Map<Object,Object> contextMap = ctx.getAttributes();
+        //noinspection unchecked
+        Map<String,Object> reqState = (Map<String,Object>) contextMap.get(KEY);
+        if (reqState == null) {
+            reqState = new HashMap<String,Object>();
+            contextMap.put(KEY, reqState);
+        }
+        return reqState;
+
+    }
+
+
 }
diff --git a/jsf-ri/src/main/java/com/sun/faces/util/Timer.java b/jsf-ri/src/main/java/com/sun/faces/util/Timer.java
index e824e6c..dada1aa 100644
--- a/jsf-ri/src/main/java/com/sun/faces/util/Timer.java
+++ b/jsf-ri/src/main/java/com/sun/faces/util/Timer.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/src/main/java/com/sun/faces/util/Util.java b/jsf-ri/src/main/java/com/sun/faces/util/Util.java
index 85369f9..51cc0f8 100644
--- a/jsf-ri/src/main/java/com/sun/faces/util/Util.java
+++ b/jsf-ri/src/main/java/com/sun/faces/util/Util.java
@@ -1,827 +1,1137 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-// Util.java
-
-package com.sun.faces.util;
-
-import com.sun.faces.RIConstants;
-import com.sun.faces.io.FastStringWriter;
-
-import javax.el.ELResolver;
-import javax.el.ValueExpression;
-import javax.faces.FacesException;
-import javax.faces.application.Application;
-import javax.faces.application.StateManager;
-import javax.faces.application.ViewHandler;
-import javax.faces.component.UIComponent;
-import javax.faces.component.UIViewRoot;
-import javax.faces.context.ExternalContext;
-import javax.faces.context.FacesContext;
-import javax.faces.convert.Converter;
-import javax.faces.event.AbortProcessingException;
-import java.beans.FeatureDescriptor;
-import java.lang.reflect.Method;
-import java.util.HashMap;
-import java.util.Locale;
-import java.util.Map;
-import java.util.Set;
-import java.util.Iterator;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-import java.util.regex.Pattern;
-import javax.servlet.ServletContext;
-
-/**
- * <B>Util</B> is a class ...
- * <p/>
- * <B>Lifetime And Scope</B> <P>
- *
- */
-
-public class Util {
-
-    
-    // Log instance for this class
-    private static final Logger LOGGER = FacesLogger.APPLICATION.getLogger();
-
-    // README - make sure to add the message identifier constant
-    // (ex: Util.CONVERSION_ERROR_MESSAGE_ID) and the number of substitution
-    // parameters to test/com/sun/faces/util/TestUtil_messages (see comment there).
-
-
-    /**
-     * Flag that enables/disables the core TLV.
-     */
-    private static final String coreTLVEnabled = RIConstants.FACES_PREFIX + "coreTLVEnabled";
-
-    /**
-     * Flag that enables/disables the html TLV.
-     */
-    private static final String htmlTLVEnabled = RIConstants.FACES_PREFIX + "htmlTLVEnabled";
-    
-    /**
-     * RegEx patterns
-     */
-    private static final String patternCacheKey = RIConstants.FACES_PREFIX + "patternCache";
-
-
-    private Util() {
-        throw new IllegalStateException();
-    }
-
-    /**
-     * <p>The <code>ThreadLocal</code> when invoking methods on this class
-     * from outside the scope of the FacesContext, this threadLocal is used
-     * to serve as the ApplicationMap.</p>
-     */
-    private static ThreadLocal<Map<String, Object>> nonFacesContextApplicationMap;
-
-
-    private static void setNonFacesContextApplicationMap(Map<String, Object> instance) {
-        lazilyInitializeNonFacesContextApplicationMap();
-        if (null == instance) {
-            nonFacesContextApplicationMap.remove();
-        } else {
-            nonFacesContextApplicationMap.set(instance);
-        }
-    }
-
-    private static void lazilyInitializeNonFacesContextApplicationMap() {
-        if (null == nonFacesContextApplicationMap) {
-            nonFacesContextApplicationMap = new ThreadLocal<Map<String, Object>>() {
-                @Override
-                protected Map<String, Object> initialValue() {
-                    return (null);
-                }
-            };
-        }
-    }
-
-    private static Map<String, Object> getNonFacesContextApplicationMap() {
-        lazilyInitializeNonFacesContextApplicationMap();
-        return nonFacesContextApplicationMap.get();
-    }
-
-    private static Map<String, Object> getApplicationMap() {
-        Map<String, Object> result = null;
-        FacesContext context = FacesContext.getCurrentInstance();
-        if (null != context) {
-            ExternalContext externalContext = context.getExternalContext();
-            if (null != externalContext) {
-                result = externalContext.getApplicationMap();
-            }
-        }
-        // This will be true if FacesServlet.service is not on the callstack
-        if (null == result) {
-            result = getNonFacesContextApplicationMap();
-            if (null == result) {
-                result = new HashMap<String, Object>();
-                setNonFacesContextApplicationMap(result);
-            }
-        }
-
-        return result;
-    }
-
-    private static Map<String,Pattern> getPatternCache() {
-        Map<String, Object> appMap = getApplicationMap();
-        Map<String,Pattern> result = 
-                (Map<String,Pattern>) appMap.get(patternCacheKey);
-        if (null == result) {
-            result = new LRUMap<String,Pattern>(15);
-            appMap.put(patternCacheKey, result);
-        }
-        
-        return result;
-    }
-
-    private static Map<String,Pattern> getPatternCache(ServletContext sc) {
-        Map<String,Pattern> result =
-                (Map<String,Pattern>) sc.getAttribute(patternCacheKey);
-        if (null == result) {
-            result = new LRUMap<String,Pattern>(15);
-            sc.setAttribute(patternCacheKey, result);
-        }
-
-        return result;
-    }
-
-    /**
-     * <p>
-     * Convenience method for determining if the request associated
-     * with the specified <code>FacesContext</code> is a PortletRequest
-     * submitted by the JSR-301 bridge.
-     * </p>
-     * @param context the <code>FacesContext</code> associated with
-     *  the request.
-     */
-    public static boolean isPortletRequest (FacesContext context) {
-        return (context.getExternalContext().getRequestMap().get("javax.portlet.faces.phase") != null);
-    }
-    
-
-    /**
-     * <p>Factory method for creating the varius JSF listener
-     *  instances that may be referenced by <code>type</code>
-     *  or <code>binding</code>.</p>
-     * <p>If <code>binding</code> is not <code>null</code>
-     * and the evaluation result is not <code>null</code> return
-     * that instance.  Otherwise try to instantiate an instances
-     * based on <code>type</code>.</p>
-     * 
-     * @param type the <code>Listener</code> type
-     * @param binding a <code>ValueExpression</code> which resolves
-     *  to a <code>Listener</code> instance
-     * @return a <code>Listener</code> instance based off the provided
-     *  <code>type</code> and <binding>
-     */
-    public static Object getListenerInstance(ValueExpression type,
-                                             ValueExpression binding) {
-
-        FacesContext faces = FacesContext.getCurrentInstance();
-        Object instance = null;
-        if (faces == null) {
-            return null;
-        }
-        if (binding != null) {
-            instance = binding.getValue(faces.getELContext());
-        }
-        if (instance == null && type != null) {
-            try {
-                instance = ReflectionUtils.newInstance(((String) type.getValue(faces.getELContext())));
-            } catch (Exception e) {
-                throw new AbortProcessingException(e.getMessage(), e);
-            }
-
-            if (binding != null) {
-                binding.setValue(faces.getELContext(), instance);
-            }
-        }
-
-        return instance;
-
-    }
-
-
-    public static void setCoreTLVActive(boolean active) {
-        Map<String, Object> appMap = getApplicationMap();
-        appMap.put(coreTLVEnabled, (Boolean) active);
-    }
-
-    public static boolean isCoreTLVActive() {
-        Boolean result = true;
-        Map<String, Object> appMap = getApplicationMap();
-        return (null == (result = (Boolean) appMap.get(coreTLVEnabled)) ? true
-                : result.booleanValue());
-    }
-
-    public static void setHtmlTLVActive(boolean active) {
-        Map<String, Object> appMap = getApplicationMap();
-        appMap.put(htmlTLVEnabled, (Boolean) active);
-    }
-
-    public static boolean isHtmlTLVActive() {
-        Boolean result = true;
-        Map<String, Object> appMap = getApplicationMap();
-        return (null == (result = (Boolean) appMap.get(htmlTLVEnabled)) ? true
-                : result.booleanValue());
-    }
-
-
-    public static Class loadClass(String name,
-                                  Object fallbackClass)
-        throws ClassNotFoundException {
-        ClassLoader loader = Util.getCurrentLoader(fallbackClass);
-        // Where to begin...
-        // JDK 6 introduced CR 6434149 where one couldn't pass
-        // in a literal for an array type ([Ljava.lang.String) and
-        // get the Class representation using ClassLoader.loadClass().
-        // It was recommended to use Class.forName(String, boolean, ClassLoader)
-        // for all ClassLoading requests.
-        // HOWEVER, when trying to eliminate the need for .groovy extensions
-        // being specified in the faces-config.xml for Groovy-based artifacts,
-        // by using a an adapter to the GroovyScriptEngine, I found that the class
-        // instance was cached somewhere, so that no matter what change I made,
-        // Class.forName() always returned the same instance.  I haven't been
-        // able to determine why this happens in the appserver environment
-        // as the same adapter in a standalone program works as one might expect.
-        // So, for now, if the classname starts with '[', then use Class.forName()
-        // to avoid CR 643419 and for all other cases, use ClassLoader.loadClass().
-        if (name.charAt(0) == '[') {
-            return Class.forName(name, true, loader);
-        } else {
-            return loader.loadClass(name);
-        }
-    }
-
-
-    public static ClassLoader getCurrentLoader(Object fallbackClass) {
-        ClassLoader loader =
-            Thread.currentThread().getContextClassLoader();
-        if (loader == null) {
-            loader = fallbackClass.getClass().getClassLoader();
-        }
-        return loader;
-    }
-
-
-    public static void notNull(String varname, Object var) {
-
-        if (var == null) {
-            throw new NullPointerException(
-                  MessageUtils.getExceptionMessageString(
-                      MessageUtils.NULL_PARAMETERS_ERROR_MESSAGE_ID, varname));
-        }
-        
-    }
-
-
-    /**
-     * @param context the <code>FacesContext</code> for the current request
-     * @return the Locale from the UIViewRoot, the the value of Locale.getDefault()
-     */
-    public static Locale getLocaleFromContextOrSystem(FacesContext context) {
-        Locale result, temp = Locale.getDefault();
-        UIViewRoot root;
-        result = temp;
-        if (null != context) {
-            if (null != (root = context.getViewRoot())) {
-                if (null == (result = root.getLocale())) {
-                    result = temp;
-                }
-            }
-        }
-        return result;
-    }
-
-
-    public static Converter getConverterForClass(Class converterClass,
-                                                 FacesContext context) {
-        if (converterClass == null) {
-            return null;
-        }
-        try {            
-            Application application = context.getApplication();
-            return (application.createConverter(converterClass));
-        } catch (Exception e) {
-            return (null);
-        }
-    }
-
-
-    public static Converter getConverterForIdentifer(String converterId,
-                                                     FacesContext context) {
-        if (converterId == null) {
-            return null;
-        }
-        try {            
-            Application application = context.getApplication();
-            return (application.createConverter(converterId));
-        } catch (Exception e) {
-            return (null);
-        }
-    }
-
-
-    public static StateManager getStateManager(FacesContext context)
-        throws FacesException {
-        return (context.getApplication().getStateManager());
-    }
-    
-    public static Class getTypeFromString(String type) throws ClassNotFoundException {
-        Class result;
-        if (type.equals("byte")) {
-            result = Byte.TYPE;
-        } else if (type.equals("short")) {
-            result = Short.TYPE;
-        } else if (type.equals("int")) {
-            result = Integer.TYPE;
-        } else if (type.equals("long")) {
-            result = Long.TYPE;
-        } else if (type.equals("float")) {
-            result = Float.TYPE;
-        } else if (type.equals("double")) {
-            result = Double.TYPE;
-        } else if (type.equals("boolean")) {
-            result = Boolean.TYPE;
-        } else if (type.equals("char")) {
-            result = Character.TYPE;
-        } else if (type.equals("void")) {
-            result = Void.TYPE;
-        } else {
-            if (type.indexOf('.') == -1) {
-                type = "java.lang." + type;
-            }
-            result = Util.loadClass(type, Void.TYPE);
-        }
-
-        return result;
-    }
-
-
-    public static ViewHandler getViewHandler(FacesContext context)
-        throws FacesException {
-        // Get Application instance
-        Application application = context.getApplication();
-        assert (application != null);
-
-        // Get the ViewHandler
-        ViewHandler viewHandler = application.getViewHandler();
-        assert (viewHandler != null);
-
-        return viewHandler;
-    }
-
-
-    public static boolean componentIsDisabled(UIComponent component) {
-
-        return (Boolean.valueOf(String.valueOf(component.getAttributes().get("disabled"))));
-
-    }
-
-
-    public static boolean componentIsDisabledOrReadonly(UIComponent component) {
-        return Boolean.valueOf(String.valueOf(component.getAttributes().get("disabled"))) || Boolean.valueOf(String.valueOf(component.getAttributes().get("readonly")));
-    }
-
-
-    // W3C XML specification refers to IETF RFC 1766 for language code
-    // structure, therefore the value for the xml:lang attribute should
-    // be in the form of language or language-country or
-    // language-country-variant.
-
-    public static Locale getLocaleFromString(String localeStr)
-        throws IllegalArgumentException {
-        // length must be at least 2.
-        if (null == localeStr || localeStr.length() < 2) {
-            throw new IllegalArgumentException("Illegal locale String: " +
-                                               localeStr);
-        }
-
-        Locale result = null;
-        String lang = null;
-        String country = null;
-        String variant = null;
-        char[] seps = {
-            '-',
-            '_'
-        };
-        int inputLength = localeStr.length();
-        int i = 0;
-        int j = 0;
-
-        // to have a language, the length must be >= 2
-        if ((inputLength >= 2) &&
-            ((i = indexOfSet(localeStr, seps, 0)) == -1)) {
-            // we have only Language, no country or variant
-            if (2 != localeStr.length()) {
-                throw new
-                    IllegalArgumentException("Illegal locale String: " +
-                                             localeStr);
-            }
-            lang = localeStr.toLowerCase();
-        }
-
-        // we have a separator, it must be either '-' or '_'
-        if (i != -1) {
-            lang = localeStr.substring(0, i);
-            // look for the country sep.
-            // to have a country, the length must be >= 5
-            if ((inputLength >= 5) &&
-                ((j = indexOfSet(localeStr, seps, i + 1)) == -1)) {
-                // no further separators, length must be 5
-                if (inputLength != 5) {
-                    throw new
-                        IllegalArgumentException("Illegal locale String: " +
-                                                 localeStr);
-                }
-                country = localeStr.substring(i + 1);
-            }
-            if (j != -1) {
-                country = localeStr.substring(i + 1, j);
-                // if we have enough separators for language, locale,
-                // and variant, the length must be >= 8.
-                if (inputLength >= 8) {
-                    variant = localeStr.substring(j + 1);
-                } else {
-                    throw new
-                        IllegalArgumentException("Illegal locale String: " +
-                                                 localeStr);
-                }
-            }
-        }
-        if (variant != null && country != null && lang != null) {
-            result = new Locale(lang, country, variant);
-        } else if (lang != null && country != null) {
-            result = new Locale(lang, country);
-        } else if (lang != null) {
-            result = new Locale(lang, "");
-        }
-        return result;
-    }
-
-
-    /**
-     * @param str local string
-     * @param set the substring
-     * @param fromIndex starting index
-     * @return starting at <code>fromIndex</code>, the index of the
-     *         first occurrence of any substring from <code>set</code> in
-     *         <code>toSearch</code>, or -1 if no such match is found
-     */
-    public static int indexOfSet(String str, char[] set, int fromIndex) {
-        int result = -1;
-        for (int i = fromIndex, len = str.length(); i < len; i++) {
-            for (int j = 0, innerLen = set.length; j < innerLen; j++) {
-                if (str.charAt(i) == set[j]) {
-                    result = i;
-                    break;
-                }
-            }
-            if (-1 != result) {
-                break;
-            }
-        }
-        return result;
-    }
-
-
-    /**
-     * <p>Leverage the Throwable.getStackTrace() method to produce a String
-     * version of the stack trace, with a "\n" before each line.</p>
-     *
-     * @param e the Throwable to obtain the stacktrace from
-     *
-     * @return the String representation ofthe stack trace obtained by calling
-     *         getStackTrace() on the passed in exception.  If null is passed
-     *         in, we return the empty String.
-     */
-    public static String getStackTraceString(Throwable e) {
-        if (null == e) {
-            return "";
-        }
-
-        StackTraceElement[] stacks = e.getStackTrace();
-        StringBuffer sb = new StringBuffer();
-        for (StackTraceElement stack : stacks) {
-            sb.append(stack.toString()).append('\n');
-        }
-        return sb.toString();
-    }
-
-    /**
-     * <p>PRECONDITION: argument <code>response</code> is non-null and
-     * has a method called <code>getContentType</code> that takes no
-     * arguments and returns a String, with no side-effects.</p>
-     *
-     * <p>This method allows us to get the contentType in both the
-     * servlet and portlet cases, without introducing a compile-time
-     * dependency on the portlet api.</p>
-     *
-     * @param response the current response
-     * @return the content type of the response
-     */
-    public static String getContentTypeFromResponse(Object response) {
-        String result = null;
-        if (null != response) {           
-
-            try {
-                Method method = ReflectionUtils.lookupMethod(
-                      response.getClass(),
-                      "getContentType",
-                      RIConstants.EMPTY_CLASS_ARGS
-                );
-                if (null != method) {
-                    Object obj =
-                          method.invoke(response, RIConstants.EMPTY_METH_ARGS);
-                    if (null != obj) {
-                        result = obj.toString();
-                    }
-                }
-            } catch (Exception e) {
-                throw new FacesException(e);
-            }
-        }
-        return result;
-    }
-
-    public static FeatureDescriptor getFeatureDescriptor(String name, String
-        displayName, String desc, boolean expert, boolean hidden, 
-        boolean preferred, Object type, Boolean designTime) {
-            
-        FeatureDescriptor fd = new FeatureDescriptor();
-        fd.setName(name);
-        fd.setDisplayName(displayName);
-        fd.setShortDescription(desc);
-        fd.setExpert(expert);
-        fd.setHidden(hidden);
-        fd.setPreferred(preferred);
-        fd.setValue(ELResolver.TYPE, type);
-        fd.setValue(ELResolver.RESOLVABLE_AT_DESIGN_TIME, designTime);
-        return fd;
-    }
-   
-
-    /**
-     * <p>A slightly more efficient version of 
-     * <code>String.split()</code> which caches
-     * the <code>Pattern</code>s in an LRUMap instead of
-     * creating a new <code>Pattern</code> on each
-     * invocation.</p>
-     * @param toSplit the string to split
-     * @param regex the regex used for splitting
-     * @return the result of <code>Pattern.spit(String, int)</code>
-     */
-    public synchronized static String[] split(String toSplit, String regex) {
-        Map<String, Pattern> patternCache = getPatternCache();
-        Pattern pattern = patternCache.get(regex);
-        if (pattern == null) {
-            pattern = Pattern.compile(regex);
-            patternCache.put(regex, pattern);
-        }
-        return  pattern.split(toSplit, 0);
-    }
-
-     public synchronized static String[] split(ServletContext sc,
-             String toSplit, String regex) {
-        Map<String, Pattern> patternCache = getPatternCache(sc);
-        Pattern pattern = patternCache.get(regex);
-        if (pattern == null) {
-            pattern = Pattern.compile(regex);
-            patternCache.put(regex, pattern);
-        }
-        return  pattern.split(toSplit, 0);
-    }
-
-
-    /**
-     * <p>Returns the URL pattern of the
-     * {@link javax.faces.webapp.FacesServlet} that
-     * is executing the current request.  If there are multiple
-     * URL patterns, the value returned by
-     * <code>HttpServletRequest.getServletPath()</code> and
-     * <code>HttpServletRequest.getPathInfo()</code> is
-     * used to determine which mapping to return.</p>
-     * If no mapping can be determined, it most likely means
-     * that this particular request wasn't dispatched through
-     * the {@link javax.faces.webapp.FacesServlet}.
-     *
-     * @param context the {@link FacesContext} of the current request
-     *
-     * @return the URL pattern of the {@link javax.faces.webapp.FacesServlet}
-     *         or <code>null</code> if no mapping can be determined
-     *
-     * @throws NullPointerException if <code>context</code> is null
-     */
-    public static String getFacesMapping(FacesContext context) {
-
-        if (context == null) {
-            String message = MessageUtils.getExceptionMessageString
-                  (MessageUtils.NULL_PARAMETERS_ERROR_MESSAGE_ID, "context");
-            throw new NullPointerException(message);
-        }
-
-        // Check for a previously stored mapping   
-        ExternalContext extContext = context.getExternalContext();
-        String mapping =
-              (String) RequestStateManager.get(context, RequestStateManager.INVOCATION_PATH);
-
-        if (mapping == null) {
-         
-            // first check for javax.servlet.forward.servlet_path
-            // and javax.servlet.forward.path_info for non-null
-            // values.  if either is non-null, use this
-            // information to generate determine the mapping.
-
-            String servletPath = extContext.getRequestServletPath();
-            String pathInfo = extContext.getRequestPathInfo();
-
-            mapping = getMappingForRequest(servletPath, pathInfo);
-            if (mapping == null) {
-                if (LOGGER.isLoggable(Level.FINE)) {
-                    LOGGER.log(Level.FINE,
-                               "jsf.faces_servlet_mapping_cannot_be_determined_error",
-                               new Object[]{servletPath});
-                }
-            }
-        }
-        
-        // if the FacesServlet is mapped to /* throw an 
-        // Exception in order to prevent an endless 
-        // RequestDispatcher loop
-        //if ("/*".equals(mapping)) {
-        //    throw new FacesException(MessageUtils.getExceptionMessageString(
-        //          MessageUtils.FACES_SERVLET_MAPPING_INCORRECT_ID));
-        //}
-
-        if (mapping != null) {
-            RequestStateManager.set(context,
-                                    RequestStateManager.INVOCATION_PATH,
-                                    mapping);
-        }
-        if (LOGGER.isLoggable(Level.FINE)) {
-            LOGGER.log(Level.FINE,
-                       "URL pattern of the FacesServlet executing the current request "
-                       + mapping);
-        }
-        return mapping;
-    }
-
-    /**
-     * <p>Return the appropriate {@link javax.faces.webapp.FacesServlet} mapping
-     * based on the servlet path of the current request.</p>
-     *
-     * @param servletPath the servlet path of the request
-     * @param pathInfo    the path info of the request
-     *
-     * @return the appropriate mapping based on the current request
-     *
-     * @see javax.servlet.http.HttpServletRequest#getServletPath()
-     */
-    private static String getMappingForRequest(String servletPath, String pathInfo) {
-
-        if (servletPath == null) {
-            return null;
-        }
-        if (LOGGER.isLoggable(Level.FINE)) {
-            LOGGER.log(Level.FINE, "servletPath " + servletPath);
-            LOGGER.log(Level.FINE, "pathInfo " + pathInfo);
-        }
-        // If the path returned by HttpServletRequest.getServletPath()
-        // returns a zero-length String, then the FacesServlet has
-        // been mapped to '/*'.
-        if (servletPath.length() == 0) {
-            return "/*";
-        }
-
-        // presence of path info means we were invoked
-        // using a prefix path mapping
-        if (pathInfo != null) {
-            return servletPath;
-        } else if (servletPath.indexOf('.') < 0) {
-            // if pathInfo is null and no '.' is present, assume the
-            // FacesServlet was invoked using prefix path but without
-            // any pathInfo - i.e. GET /contextroot/faces or
-            // GET /contextroot/faces/
-            return servletPath;
-        } else {
-            // Servlet invoked using extension mapping
-            return servletPath.substring(servletPath.lastIndexOf('.'));
-        }
-    }
-    
-    
-    /**
-     * <p>Returns true if the provided <code>url-mapping</code> is
-     * a prefix path mapping (starts with <code>/</code>).</p>
-     *
-     * @param mapping a <code>url-pattern</code>
-     * @return true if the mapping starts with <code>/</code>
-     */
-    public static boolean isPrefixMapped(String mapping) {
-        return (mapping.charAt(0) == '/');
-    }
-
-
-    /**
-     * @param ctx the {@link FacesContext} for the current request
-     * @param viewToRender the {@link UIViewRoot} to check
-     * @return <code>true</code> if the {@link FacesContext} attributes map
-     *  contains a reference to the {@link UIViewRoot}'s view ID
-     */
-    public static boolean isViewPopulated(FacesContext ctx, UIViewRoot viewToRender) {
-
-        return ctx.getAttributes().containsKey(viewToRender);
-
-    }
-
-
-    /**
-     * <p>
-     * Flag the specified {@link UIViewRoot} as populated.
-     * </p>
-     * @param ctx the {@link FacesContext} for the current request
-     * @param viewToRender the {@link UIViewRoot} to mark as populated
-     */
-    public static void setViewPopulated(FacesContext ctx,
-                                        UIViewRoot viewToRender) {
-
-        ctx.getAttributes().put(viewToRender, Boolean.TRUE);
-
-    }
-
-
-    /**
-     * Utility method to validate ID uniqueness for the tree represented
-     * by <code>component</code>.
-     */
-    public static void checkIdUniqueness(FacesContext context,
-                                          UIComponent component,
-                                          Set<String> componentIds) {
-
-        // deal with children/facets that are marked transient.
-        for (Iterator<UIComponent> kids = component.getFacetsAndChildren();
-             kids.hasNext();) {
-
-            UIComponent kid = kids.next();
-            // check for id uniqueness
-            String id = kid.getClientId(context);
-            if (componentIds.add(id)) {
-                checkIdUniqueness(context, kid, componentIds);
-            } else {
-                if (LOGGER.isLoggable(Level.SEVERE)) {
-                    LOGGER.log(Level.SEVERE,
-                               "jsf.duplicate_component_id_error",
-                               id);
-
-
-                    FastStringWriter writer = new FastStringWriter(128);
-                    DebugUtil.simplePrintTree(context.getViewRoot(), id, writer);
-                    LOGGER.severe(writer.toString());
-                }
-
-                String message =
-                      MessageUtils.getExceptionMessageString(
-                            MessageUtils.DUPLICATE_COMPONENT_ID_ERROR_ID, id);
-                throw new IllegalStateException(message);
-            }
-        }
-
-    }
-
-
-} // end of class Util
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+// Util.java
+
+package com.sun.faces.util;
+
+import com.sun.faces.RIConstants;
+import com.sun.faces.config.WebConfiguration;
+import com.sun.faces.io.FastStringWriter;
+import com.sun.faces.scripting.groovy.GroovyHelper;
+
+import javax.el.ELResolver;
+import javax.el.ValueExpression;
+import javax.faces.FacesException;
+import javax.faces.application.Application;
+import javax.faces.application.StateManager;
+import javax.faces.application.ViewHandler;
+import javax.faces.component.UIComponent;
+import javax.faces.component.UIViewRoot;
+import javax.faces.context.ExternalContext;
+import javax.faces.context.FacesContext;
+import javax.faces.convert.Converter;
+import javax.faces.event.AbortProcessingException;
+import java.beans.FeatureDescriptor;
+import java.io.InputStream;
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+import java.net.JarURLConnection;
+import java.net.URL;
+import java.net.URLConnection;
+import java.util.Locale;
+import java.util.Map;
+import java.util.Set;
+import java.util.Iterator;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import java.util.regex.Pattern;
+import javax.faces.application.ProjectStage;
+import javax.faces.component.UINamingContainer;
+import javax.faces.render.ResponseStateManager;
+import javax.servlet.ServletContext;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.SAXParserFactory;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.validation.SchemaFactory;
+
+/**
+ * <B>Util</B> is a class ...
+ * <p/>
+ * <B>Lifetime And Scope</B> <P>
+ *
+ */
+
+public class Util {
+
+    
+    // Log instance for this class
+    private static final Logger LOGGER = FacesLogger.APPLICATION.getLogger();
+
+    // README - make sure to add the message identifier constant
+    // (ex: Util.CONVERSION_ERROR_MESSAGE_ID) and the number of substitution
+    // parameters to test/com/sun/faces/util/TestUtil_messages (see comment there).
+
+    /**
+     * Flag that, when true, enables special behavior in the RI to enable
+     * unit testing.
+     */
+    private static boolean unitTestModeEnabled = false;
+    
+    /**
+     * RegEx patterns
+     */
+    private static final String patternCacheKey = RIConstants.FACES_PREFIX + "patternCache";
+
+
+    private Util() {
+        throw new IllegalStateException();
+    }
+
+    private static Map<String,Pattern> getPatternCache(Map<String, Object> appMap) {
+        Map<String,Pattern> result = 
+                (Map<String,Pattern>) appMap.get(patternCacheKey);
+        if (null == result) {
+            result = new LRUMap<String,Pattern>(15);
+            appMap.put(patternCacheKey, result);
+        }
+        
+        return result;
+    }
+
+    private static Map<String,Pattern> getPatternCache(ServletContext sc) {
+        Map<String,Pattern> result =
+                (Map<String,Pattern>) sc.getAttribute(patternCacheKey);
+        if (null == result) {
+            result = new LRUMap<String,Pattern>(15);
+            sc.setAttribute(patternCacheKey, result);
+        }
+
+        return result;
+    }
+    
+    private static final String CDI_AVAILABLE_PER_APP_KEY = Util.class.getName() + "_CDI_AVAILABLE";
+    
+    public static boolean isCDIAvailable(Map<String, Object> appMap) {
+        boolean result = appMap.containsKey(CDI_AVAILABLE_PER_APP_KEY);
+        return result;
+    }
+
+    public static boolean isCDIAvailable(ServletContext sc) {
+        boolean result = null != sc.getAttribute(CDI_AVAILABLE_PER_APP_KEY);
+        return result;
+    }
+    
+    public static Object getCDIBeanManager(Map<String, Object> appMap) {
+        Object beanManager = appMap.get(CDI_AVAILABLE_PER_APP_KEY);
+        return beanManager;
+    }
+    
+    public static void setCDIAvailable(ServletContext sc, Object beanManager) {
+        sc.setAttribute(CDI_AVAILABLE_PER_APP_KEY, beanManager);
+        }
+    
+    public static boolean isCdiOneOneOrGreater() {
+
+        // The following try/catch is a hack to discover
+        // if CDI 1.1 or greater is available
+        boolean result = false;
+        try {
+            Class.forName("javax.enterprise.context.Initialized");
+            result = true;
+        } catch (ClassNotFoundException ignored) {
+            if (LOGGER.isLoggable(Level.FINEST)) {
+                LOGGER.log(Level.FINEST, "Dected CDI 1.0", ignored);
+            }
+        }
+        return result;
+    }
+
+    /**
+     * <p>
+     * Convenience method for determining if the request associated
+     * with the specified <code>FacesContext</code> is a PortletRequest
+     * submitted by the JSR-301 bridge.
+     * </p>
+     * @param context the <code>FacesContext</code> associated with
+     *  the request.
+     */
+    public static boolean isPortletRequest (FacesContext context) {
+        return (context.getExternalContext().getRequestMap().get("javax.portlet.faces.phase") != null);
+    }
+    
+
+    /**
+     * <p>Factory method for creating the varius JSF listener
+     *  instances that may be referenced by <code>type</code>
+     *  or <code>binding</code>.</p>
+     * <p>If <code>binding</code> is not <code>null</code>
+     * and the evaluation result is not <code>null</code> return
+     * that instance.  Otherwise try to instantiate an instances
+     * based on <code>type</code>.</p>
+     * 
+     * @param type the <code>Listener</code> type
+     * @param binding a <code>ValueExpression</code> which resolves
+     *  to a <code>Listener</code> instance
+     * @return a <code>Listener</code> instance based off the provided
+     *  <code>type</code> and <binding>
+     */
+    public static Object getListenerInstance(ValueExpression type,
+                                             ValueExpression binding) {
+
+        FacesContext faces = FacesContext.getCurrentInstance();
+        Object instance = null;
+        if (faces == null) {
+            return null;
+        }
+        if (binding != null) {
+            instance = binding.getValue(faces.getELContext());
+        }
+        if (instance == null && type != null) {
+            try {
+                instance = ReflectionUtils.newInstance(((String) type.getValue(faces.getELContext())));
+            } catch (Exception e) {
+                throw new AbortProcessingException(e.getMessage(), e);
+            }
+
+            if (binding != null) {
+                binding.setValue(faces.getELContext(), instance);
+            }
+        }
+
+        return instance;
+
+    }
+
+    public static void setUnitTestModeEnabled(boolean enabled) {
+        unitTestModeEnabled = enabled;
+    }
+
+    public static boolean isUnitTestModeEnabled() {
+        return unitTestModeEnabled;
+    }
+
+    public static TransformerFactory createTransformerFactory() {
+         ClassLoader cl = Thread.currentThread().getContextClassLoader();
+         TransformerFactory factory;
+         try {
+             Thread.currentThread().setContextClassLoader(Util.class.getClassLoader());
+             factory = TransformerFactory.newInstance();
+         } finally {
+             Thread.currentThread().setContextClassLoader(cl);
+         }
+         return factory;
+     }
+
+    public static SAXParserFactory createSAXParserFactory() {
+        ClassLoader cl = Thread.currentThread().getContextClassLoader();
+        SAXParserFactory factory;
+        try {
+            Thread.currentThread().setContextClassLoader(Util.class.getClassLoader());
+            factory = SAXParserFactory.newInstance();
+        } finally {
+            Thread.currentThread().setContextClassLoader(cl);
+        }
+        return factory;
+    }
+
+    public static DocumentBuilderFactory createDocumentBuilderFactory() {
+        ClassLoader cl = Thread.currentThread().getContextClassLoader();
+        DocumentBuilderFactory factory;
+        try {
+            Thread.currentThread().setContextClassLoader(Util.class.getClassLoader());
+            factory = DocumentBuilderFactory.newInstance();
+        } finally {
+            Thread.currentThread().setContextClassLoader(cl);
+        }
+        return factory;
+    }
+
+    public static SchemaFactory createSchemaFactory(String uri) {
+        ClassLoader cl = Thread.currentThread().getContextClassLoader();
+        SchemaFactory factory;
+        try {
+            Thread.currentThread().setContextClassLoader(Util.class.getClassLoader());
+            factory = SchemaFactory.newInstance(uri);
+        } finally {
+            Thread.currentThread().setContextClassLoader(cl);
+        }
+        return factory;
+    }
+
+
+    public static Class loadClass(String name,
+                                  Object fallbackClass)
+        throws ClassNotFoundException {
+        ClassLoader loader = Util.getCurrentLoader(fallbackClass);
+        
+        String[] primitiveNames = { "byte", "short", "int", "long", "float", "double", "boolean", "char" };
+        Class[] primitiveClasses = { byte.class, short.class, int.class, long.class, float.class, double.class, boolean.class, char.class };
+        
+        for(int i=0; i<primitiveNames.length; i++) {
+            if (primitiveNames[i].equals(name)) {
+                return primitiveClasses[i];
+            }
+        }
+        // Where to begin...
+        // JDK 6 introduced CR 6434149 where one couldn't pass
+        // in a literal for an array type ([Ljava.lang.String) and
+        // get the Class representation using ClassLoader.loadClass().
+        // It was recommended to use Class.forName(String, boolean, ClassLoader)
+        // for all ClassLoading requests.
+        // HOWEVER, when trying to eliminate the need for .groovy extensions
+        // being specified in the faces-config.xml for Groovy-based artifacts,
+        // by using an adapter to the GroovyScriptEngine, I found that the class
+        // instance was cached somewhere, so that no matter what change I made,
+        // Class.forName() always returned the same instance.  I haven't been
+        // able to determine why this happens in the appserver environment
+        // as the same adapter in a standalone program works as one might expect.
+        // So, for now, if the classname starts with '[', then use Class.forName()
+        // to avoid CR 643419 and for all other cases, use ClassLoader.loadClass().
+        if (loader.getClass() == com.sun.faces.scripting.groovy.GroovyHelperImpl.MojarraGroovyClassLoader.class) {
+            if (name.charAt(0) == '[') {
+                return Class.forName(name, true, loader);
+            } else {
+                return loader.loadClass(name);
+            }
+        }        
+        return Class.forName(name, true, loader);
+    }
+
+
+    public static ClassLoader getCurrentLoader(Object fallbackClass) {
+        ClassLoader loader = getContextClassLoader();
+        if (loader == null) {
+            loader = fallbackClass.getClass().getClassLoader();
+        }
+        return loader;
+    }
+
+    private static ClassLoader getContextClassLoader() {
+        if (System.getSecurityManager() == null) {
+            return Thread.currentThread().getContextClassLoader();
+        } else {
+            return (ClassLoader)
+                java.security.AccessController.doPrivileged(
+                    new java.security.PrivilegedAction() {
+                        public java.lang.Object run() {
+                            return Thread.currentThread().getContextClassLoader();
+                        }
+                    });
+        }
+    }
+
+
+    public static String removeAllButLastSlashPathSegment(String input) {
+        // Trim the leading lastSlash, if any.
+        if (input.charAt(0) == '/') {
+            input = input.substring(1);
+        }
+        int len = input.length();
+        // Trim the trailing lastSlash, if any.
+        if (input.charAt(len - 1) == '/') {
+            input = input.substring(0, len - 1);
+        }
+        
+        // Trim any path segments that remain, leaving only the 
+        // last path segment.
+        int slash = input.lastIndexOf("/");
+        
+        // Do we have a "/"?
+        if (-1 != slash) {
+            input = input.substring(slash + 1);
+        }
+        
+        return input;
+    }
+    
+    public static String removeAllButNextToLastSlashPathSegment(String input) {
+        // Trim the leading lastSlash, if any.
+        if (input.charAt(0) == '/') {
+            input = input.substring(1);
+        }
+        int len = input.length();
+        // Trim the trailing lastSlash, if any.
+        if (input.charAt(len - 1) == '/') {
+            input = input.substring(0, len - 1);
+        }
+        
+        // Trim any path segments that remain, leaving only the 
+        // last path segment.
+        int lastSlash = input.lastIndexOf("/");
+        
+        // Do we have a "/"?
+        if (-1 != lastSlash) {
+        
+            int startOrPreviousSlash = input.lastIndexOf("/", lastSlash - 1);
+            startOrPreviousSlash = (-1 == startOrPreviousSlash) ? 0 : startOrPreviousSlash;
+            
+            input = input.substring(startOrPreviousSlash, lastSlash);
+        }
+        
+        return input;
+    }
+    
+    public static String removeLastPathSegment(String input) {
+        int slash = input.lastIndexOf("/");
+        
+        // Do we have a "/"?
+        if (-1 != slash) {
+            input = input.substring(0, slash);
+        }
+        
+        return input;
+    }
+
+    /*
+     * Apply a series of conventions to the component to arrive at a potential
+     * flowId, which may or may not correspond to an actual defined flow.
+     * 
+     * Assume the target is a UIViewRoot.
+     * 
+     * Get its viewId.
+     * 
+     * Strip the leading lastSlash, if any.
+     * 
+     * If the viewId has multiple segments assume the next to last is the flowId.
+     * 
+     * Otherwise, remove the extension and assume the result is the flowId.
+     * 
+     * 
+     */
+    public static String getFlowIdFromComponent(FacesContext context, UIComponent target) {
+        String result = "";
+        if (target instanceof javax.faces.component.UIViewRoot) {
+            result = Util.removeAllButNextToLastSlashPathSegment(((javax.faces.component.UIViewRoot)target).getViewId());
+            
+            int dot = result.indexOf(".");
+            if (-1 != dot) {
+                result = result.substring(0, dot);
+            }
+        }
+        
+        return result;
+    }
+
+    
+
+    public static void notNull(String varname, Object var) {
+
+        if (var == null) {
+            throw new NullPointerException(
+                  MessageUtils.getExceptionMessageString(
+                      MessageUtils.NULL_PARAMETERS_ERROR_MESSAGE_ID, varname));
+        }
+        
+    }
+
+
+    /**
+     * @param context the <code>FacesContext</code> for the current request
+     * @return the Locale from the UIViewRoot, the the value of Locale.getDefault()
+     */
+    public static Locale getLocaleFromContextOrSystem(FacesContext context) {
+        Locale result, temp = Locale.getDefault();
+        UIViewRoot root;
+        result = temp;
+        if (null != context && null != (root = context.getViewRoot()) && null == (result = root.getLocale())) {
+            result = temp;
+        }
+        return result;
+    }
+
+
+    public static Converter getConverterForClass(Class converterClass,
+                                                 FacesContext context) {
+        if (converterClass == null) {
+            return null;
+        }
+        try {            
+            Application application = context.getApplication();
+            return (application.createConverter(converterClass));
+        } catch (Exception e) {
+            return (null);
+        }
+    }
+
+
+    public static Converter getConverterForIdentifer(String converterId,
+                                                     FacesContext context) {
+        if (converterId == null) {
+            return null;
+        }
+        try {            
+            Application application = context.getApplication();
+            return (application.createConverter(converterId));
+        } catch (Exception e) {
+            return (null);
+        }
+    }
+
+
+    public static StateManager getStateManager(FacesContext context)
+        throws FacesException {
+        return (context.getApplication().getStateManager());
+    }
+    
+    public static Class getTypeFromString(String type) throws ClassNotFoundException {
+        Class result;
+        if (type.equals("byte")) {
+            result = Byte.TYPE;
+        } else if (type.equals("short")) {
+            result = Short.TYPE;
+        } else if (type.equals("int")) {
+            result = Integer.TYPE;
+        } else if (type.equals("long")) {
+            result = Long.TYPE;
+        } else if (type.equals("float")) {
+            result = Float.TYPE;
+        } else if (type.equals("double")) {
+            result = Double.TYPE;
+        } else if (type.equals("boolean")) {
+            result = Boolean.TYPE;
+        } else if (type.equals("char")) {
+            result = Character.TYPE;
+        } else if (type.equals("void")) {
+            result = Void.TYPE;
+        } else {
+            if (type.indexOf('.') == -1) {
+                type = "java.lang." + type;
+            }
+            result = Util.loadClass(type, Void.TYPE);
+        }
+
+        return result;
+    }
+
+
+    public static ViewHandler getViewHandler(FacesContext context)
+        throws FacesException {
+        // Get Application instance
+        Application application = context.getApplication();
+        assert (application != null);
+
+        // Get the ViewHandler
+        ViewHandler viewHandler = application.getViewHandler();
+        assert (viewHandler != null);
+
+        return viewHandler;
+    }
+
+
+    public static boolean componentIsDisabled(UIComponent component) {
+
+        return (Boolean.valueOf(String.valueOf(component.getAttributes().get("disabled"))));
+
+    }
+
+
+    public static boolean componentIsDisabledOrReadonly(UIComponent component) {
+        return Boolean.valueOf(String.valueOf(component.getAttributes().get("disabled"))) || Boolean.valueOf(String.valueOf(component.getAttributes().get("readonly")));
+    }
+
+
+    // W3C XML specification refers to IETF RFC 1766 for language code
+    // structure, therefore the value for the xml:lang attribute should
+    // be in the form of language or language-country or
+    // language-country-variant.
+
+    public static Locale getLocaleFromString(String localeStr)
+        throws IllegalArgumentException {
+        // length must be at least 2.
+        if (null == localeStr || localeStr.length() < 2) {
+            throw new IllegalArgumentException("Illegal locale String: " +
+                                               localeStr);
+        }
+        Locale result = null;
+        
+        try {
+            Method method = Locale.class.getMethod("forLanguageTag", String.class);
+            if (method != null) {
+                result = (Locale) method.invoke(null, localeStr);
+            }
+        } catch(Throwable throwable) {
+            // if we are NOT running JavaSE 7 we end up here and we will 
+            // default to the previous way of determining the Locale below.
+        }
+
+        if (result == null || result.getLanguage().equals("")) {
+            String lang = null;
+            String country = null;
+            String variant = null;
+            char[] seps = {
+                '-',
+                '_'
+            };
+            int inputLength = localeStr.length();
+            int i = 0;
+            int j = 0;
+
+            // to have a language, the length must be >= 2
+            if ((inputLength >= 2) &&
+                ((i = indexOfSet(localeStr, seps, 0)) == -1)) {
+                // we have only Language, no country or variant
+                if (2 != localeStr.length()) {
+                    throw new
+                        IllegalArgumentException("Illegal locale String: " +
+                                                 localeStr);
+                }
+                lang = localeStr.toLowerCase();
+            }
+
+            // we have a separator, it must be either '-' or '_'
+            if (i != -1) {
+                lang = localeStr.substring(0, i);
+                // look for the country sep.
+                // to have a country, the length must be >= 5
+                if ((inputLength >= 5) &&
+                    ((j = indexOfSet(localeStr, seps, i + 1)) == -1)) {
+                    // no further separators, length must be 5
+                    if (inputLength != 5) {
+                        throw new
+                            IllegalArgumentException("Illegal locale String: " +
+                                                     localeStr);
+                    }
+                    country = localeStr.substring(i + 1);
+                }
+                if (j != -1) {
+                    country = localeStr.substring(i + 1, j);
+                    // if we have enough separators for language, locale,
+                    // and variant, the length must be >= 8.
+                    if (inputLength >= 8) {
+                        variant = localeStr.substring(j + 1);
+                    } else {
+                        throw new
+                            IllegalArgumentException("Illegal locale String: " +
+                                                     localeStr);
+                    }
+                }
+            }
+            if (variant != null && country != null && lang != null) {
+                result = new Locale(lang, country, variant);
+            } else if (lang != null && country != null) {
+                result = new Locale(lang, country);
+            } else if (lang != null) {
+                result = new Locale(lang, "");
+            }
+        }
+        
+        return result;
+    }
+
+    /**
+     * @param str local string
+     * @param set the substring
+     * @param fromIndex starting index
+     * @return starting at <code>fromIndex</code>, the index of the
+     *         first occurrence of any substring from <code>set</code> in
+     *         <code>toSearch</code>, or -1 if no such match is found
+     */
+    public static int indexOfSet(String str, char[] set, int fromIndex) {
+        int result = -1;
+        for (int i = fromIndex, len = str.length(); i < len; i++) {
+            for (int j = 0, innerLen = set.length; j < innerLen; j++) {
+                if (str.charAt(i) == set[j]) {
+                    result = i;
+                    break;
+                }
+            }
+            if (-1 != result) {
+                break;
+            }
+        }
+        return result;
+    }
+
+
+    /**
+     * <p>Leverage the Throwable.getStackTrace() method to produce a String
+     * version of the stack trace, with a "\n" before each line.</p>
+     *
+     * @param e the Throwable to obtain the stacktrace from
+     *
+     * @return the String representation ofthe stack trace obtained by calling
+     *         getStackTrace() on the passed in exception.  If null is passed
+     *         in, we return the empty String.
+     */
+    public static String getStackTraceString(Throwable e) {
+        if (null == e) {
+            return "";
+        }
+
+        StackTraceElement[] stacks = e.getStackTrace();
+        StringBuffer sb = new StringBuffer();
+        for (StackTraceElement stack : stacks) {
+            sb.append(stack.toString()).append('\n');
+        }
+        return sb.toString();
+    }
+
+    /**
+     * <p>PRECONDITION: argument <code>response</code> is non-null and
+     * has a method called <code>getContentType</code> that takes no
+     * arguments and returns a String, with no side-effects.</p>
+     *
+     * <p>This method allows us to get the contentType in both the
+     * servlet and portlet cases, without introducing a compile-time
+     * dependency on the portlet api.</p>
+     *
+     * @param response the current response
+     * @return the content type of the response
+     */
+    public static String getContentTypeFromResponse(Object response) {
+        String result = null;
+        if (null != response) {           
+
+            try {
+                Method method = ReflectionUtils.lookupMethod(
+                      response.getClass(),
+                      "getContentType",
+                      RIConstants.EMPTY_CLASS_ARGS
+                );
+                if (null != method) {
+                    Object obj =
+                          method.invoke(response, RIConstants.EMPTY_METH_ARGS);
+                    if (null != obj) {
+                        result = obj.toString();
+                    }
+                }
+            } catch (Exception e) {
+                throw new FacesException(e);
+            }
+        }
+        return result;
+    }
+
+    public static FeatureDescriptor getFeatureDescriptor(String name, String
+        displayName, String desc, boolean expert, boolean hidden, 
+        boolean preferred, Object type, Boolean designTime) {
+            
+        FeatureDescriptor fd = new FeatureDescriptor();
+        fd.setName(name);
+        fd.setDisplayName(displayName);
+        fd.setShortDescription(desc);
+        fd.setExpert(expert);
+        fd.setHidden(hidden);
+        fd.setPreferred(preferred);
+        fd.setValue(ELResolver.TYPE, type);
+        fd.setValue(ELResolver.RESOLVABLE_AT_DESIGN_TIME, designTime);
+        return fd;
+    }
+   
+
+    /**
+     * <p>A slightly more efficient version of 
+     * <code>String.split()</code> which caches
+     * the <code>Pattern</code>s in an LRUMap instead of
+     * creating a new <code>Pattern</code> on each
+     * invocation.</p>
+     * @param appMap the Application Map
+     * @param toSplit the string to split
+     * @param regex the regex used for splitting
+     * @return the result of <code>Pattern.spit(String, int)</code>
+     */
+    public synchronized static String[] split(Map<String, Object> appMap, String toSplit, String regex) {
+        Map<String, Pattern> patternCache = getPatternCache(appMap);
+        Pattern pattern = patternCache.get(regex);
+        if (pattern == null) {
+            pattern = Pattern.compile(regex);
+            patternCache.put(regex, pattern);
+        }
+        return  pattern.split(toSplit, 0);
+    }
+
+     public synchronized static String[] split(ServletContext sc,
+             String toSplit, String regex) {
+        Map<String, Pattern> patternCache = getPatternCache(sc);
+        Pattern pattern = patternCache.get(regex);
+        if (pattern == null) {
+            pattern = Pattern.compile(regex);
+            patternCache.put(regex, pattern);
+        }
+        return  pattern.split(toSplit, 0);
+    }
+
+
+    /**
+     * <p>Returns the URL pattern of the
+     * {@link javax.faces.webapp.FacesServlet} that
+     * is executing the current request.  If there are multiple
+     * URL patterns, the value returned by
+     * <code>HttpServletRequest.getServletPath()</code> and
+     * <code>HttpServletRequest.getPathInfo()</code> is
+     * used to determine which mapping to return.</p>
+     * If no mapping can be determined, it most likely means
+     * that this particular request wasn't dispatched through
+     * the {@link javax.faces.webapp.FacesServlet}.
+     *
+     * @param context the {@link FacesContext} of the current request
+     *
+     * @return the URL pattern of the {@link javax.faces.webapp.FacesServlet}
+     *         or <code>null</code> if no mapping can be determined
+     *
+     * @throws NullPointerException if <code>context</code> is null
+     */
+    public static String getFacesMapping(FacesContext context) {
+
+        if (context == null) {
+            String message = MessageUtils.getExceptionMessageString
+                  (MessageUtils.NULL_PARAMETERS_ERROR_MESSAGE_ID, "context");
+            throw new NullPointerException(message);
+        }
+
+        // Check for a previously stored mapping   
+        ExternalContext extContext = context.getExternalContext();
+        String mapping =
+              (String) RequestStateManager.get(context, RequestStateManager.INVOCATION_PATH);
+
+        if (mapping == null) {
+         
+            // first check for javax.servlet.forward.servlet_path
+            // and javax.servlet.forward.path_info for non-null
+            // values.  if either is non-null, use this
+            // information to generate determine the mapping.
+
+            String servletPath = extContext.getRequestServletPath();
+            String pathInfo = extContext.getRequestPathInfo();
+
+            mapping = getMappingForRequest(servletPath, pathInfo);
+            if (mapping == null && LOGGER.isLoggable(Level.FINE)) {
+                LOGGER.log(Level.FINE,
+                        "jsf.faces_servlet_mapping_cannot_be_determined_error",
+                        new Object[]{servletPath});
+            }
+        }
+        
+        // if the FacesServlet is mapped to /* throw an 
+        // Exception in order to prevent an endless 
+        // RequestDispatcher loop
+        //if ("/*".equals(mapping)) {
+        //    throw new FacesException(MessageUtils.getExceptionMessageString(
+        //          MessageUtils.FACES_SERVLET_MAPPING_INCORRECT_ID));
+        //}
+
+        if (mapping != null) {
+            RequestStateManager.set(context,
+                                    RequestStateManager.INVOCATION_PATH,
+                                    mapping);
+        }
+        if (LOGGER.isLoggable(Level.FINE)) {
+            LOGGER.log(Level.FINE,
+                       "URL pattern of the FacesServlet executing the current request "
+                       + mapping);
+        }
+        return mapping;
+    }
+
+    /**
+     * <p>Return the appropriate {@link javax.faces.webapp.FacesServlet} mapping
+     * based on the servlet path of the current request.</p>
+     *
+     * @param servletPath the servlet path of the request
+     * @param pathInfo    the path info of the request
+     *
+     * @return the appropriate mapping based on the current request
+     *
+     * @see javax.servlet.http.HttpServletRequest#getServletPath()
+     */
+    private static String getMappingForRequest(String servletPath, String pathInfo) {
+
+        if (servletPath == null) {
+            return null;
+        }
+        if (LOGGER.isLoggable(Level.FINE)) {
+            LOGGER.log(Level.FINE, "servletPath " + servletPath);
+            LOGGER.log(Level.FINE, "pathInfo " + pathInfo);
+        }
+        // If the path returned by HttpServletRequest.getServletPath()
+        // returns a zero-length String, then the FacesServlet has
+        // been mapped to '/*'.
+        if (servletPath.length() == 0) {
+            return "/*";
+        }
+
+        // presence of path info means we were invoked
+        // using a prefix path mapping
+        if (pathInfo != null) {
+            return servletPath;
+        } else if (servletPath.indexOf('.') < 0) {
+            // if pathInfo is null and no '.' is present, assume the
+            // FacesServlet was invoked using prefix path but without
+            // any pathInfo - i.e. GET /contextroot/faces or
+            // GET /contextroot/faces/
+            return servletPath;
+        } else {
+            // Servlet invoked using extension mapping
+            return servletPath.substring(servletPath.lastIndexOf('.'));
+        }
+    }
+    
+    
+    /**
+     * <p>Returns true if the provided <code>url-mapping</code> is
+     * a prefix path mapping (starts with <code>/</code>).</p>
+     *
+     * @param mapping a <code>url-pattern</code>
+     * @return true if the mapping starts with <code>/</code>
+     */
+    public static boolean isPrefixMapped(String mapping) {
+        return (mapping.charAt(0) == '/');
+    }
+
+    public static boolean isSpecialAttributeName(String name) {
+        boolean isSpecialAttributeName = name.equals("action")  ||
+                            name.equals("actionListener") || name.equals("validator")
+                            || name.equals("valueChangeListener");
+        return isSpecialAttributeName;
+    }
+
+
+    /**
+     * @param ctx the {@link FacesContext} for the current request
+     * @param viewToRender the {@link UIViewRoot} to check
+     * @return <code>true</code> if the {@link FacesContext} attributes map
+     *  contains a reference to the {@link UIViewRoot}'s view ID
+     */
+    public static boolean isViewPopulated(FacesContext ctx, UIViewRoot viewToRender) {
+
+        return ctx.getAttributes().containsKey(viewToRender);
+
+    }
+
+
+    /**
+     * <p>
+     * Flag the specified {@link UIViewRoot} as populated.
+     * </p>
+     * @param ctx the {@link FacesContext} for the current request
+     * @param viewToRender the {@link UIViewRoot} to mark as populated
+     */
+    public static void setViewPopulated(FacesContext ctx,
+                                        UIViewRoot viewToRender) {
+
+        ctx.getAttributes().put(viewToRender, Boolean.TRUE);
+
+    }
+
+
+    /**
+     * Utility method to validate ID uniqueness for the tree represented
+     * by <code>component</code>.
+     */
+    public static void checkIdUniqueness(FacesContext context,
+                                          UIComponent component,
+                                          Set<String> componentIds) {
+
+        boolean uniquenessCheckDisabled = false;
+        
+        if (context.isProjectStage(ProjectStage.Production)) {
+            WebConfiguration config = WebConfiguration.getInstance(context.getExternalContext());
+            uniquenessCheckDisabled = config.isOptionEnabled(
+                WebConfiguration.BooleanWebContextInitParameter.DisableIdUniquenessCheck);
+        }
+        
+        if (!uniquenessCheckDisabled) {
+        
+            // deal with children/facets that are marked transient.
+            for (Iterator<UIComponent> kids = component.getFacetsAndChildren();
+                kids.hasNext();) {
+
+                UIComponent kid = kids.next();
+                // check for id uniqueness
+                String id = kid.getClientId(context);
+                if (componentIds.add(id)) {
+                    checkIdUniqueness(context, kid, componentIds);
+                } else {
+                    if (LOGGER.isLoggable(Level.SEVERE)) {
+                        LOGGER.log(Level.SEVERE,
+                                   "jsf.duplicate_component_id_error",
+                                   id);
+
+
+                        FastStringWriter writer = new FastStringWriter(128);
+                        DebugUtil.simplePrintTree(context.getViewRoot(), id, writer);
+                        LOGGER.severe(writer.toString());
+                    }
+
+                    String message =
+                          MessageUtils.getExceptionMessageString(
+                                MessageUtils.DUPLICATE_COMPONENT_ID_ERROR_ID, id);
+                    throw new IllegalStateException(message);
+                }
+            }
+        }
+    }
+
+    static public boolean classHasAnnotations(Class<?> clazz) {
+        if (clazz != null) {
+            while (clazz != Object.class) {
+                Field[] fields = clazz.getDeclaredFields();
+                if (fields != null) {
+                    for (Field field : fields) {
+                        if (field.getAnnotations().length > 0) {
+                            return true;
+                        }
+                    }
+                }
+
+                Method[] methods = clazz.getDeclaredMethods();
+                if (methods != null) {
+                    for (Method method : methods) {
+                        if (method.getDeclaredAnnotations().length > 0) {
+                            return true;
+                        }
+                    }
+                }
+
+                clazz = clazz.getSuperclass();
+            }
+        }
+
+        return false;
+    }
+    
+    public static String getViewStateId(FacesContext context) {
+        String result = null;
+        final String viewStateCounterKey = "com.sun.faces.util.ViewStateCounterKey";
+        Map<Object, Object> contextAttrs = context.getAttributes();
+        Integer counter = (Integer) contextAttrs.get(viewStateCounterKey);
+        if (null == counter) {
+            counter = Integer.valueOf(0);
+        }
+        
+        char sep = UINamingContainer.getSeparatorChar(context);
+        UIViewRoot root = context.getViewRoot();
+        result = root.getContainerClientId(context) + sep + 
+                ResponseStateManager.VIEW_STATE_PARAM + sep +
+                + counter;
+        contextAttrs.put(viewStateCounterKey, ++counter);
+        
+        return result;
+    }
+
+    public static String getClientWindowId(FacesContext context) {
+        String result = null;
+        final String clientWindowIdCounterKey = "com.sun.faces.util.ClientWindowCounterKey";
+        Map<Object, Object> contextAttrs = context.getAttributes();
+        Integer counter = (Integer) contextAttrs.get(clientWindowIdCounterKey);
+        if (null == counter) {
+            counter = Integer.valueOf(0);
+        }
+        
+        char sep = UINamingContainer.getSeparatorChar(context);
+        result = context.getViewRoot().getContainerClientId(context) + sep + 
+                ResponseStateManager.CLIENT_WINDOW_PARAM + sep + counter;
+        contextAttrs.put(clientWindowIdCounterKey, ++counter);
+        
+        return result;
+    }
+
+    private static final String FACES_CONTEXT_ATTRIBUTES_DOCTYPE_KEY = Util.class.getName() + "_FACES_CONTEXT_ATTRS_DOCTYPE_KEY";
+    
+    public static void saveDOCTYPEToFacesContextAttributes(String DOCTYPE) {
+        FacesContext context = FacesContext.getCurrentInstance();
+        if (null == context) {
+            return;
+        }
+        Map<Object, Object> attrs = context.getAttributes();
+        attrs.put(FACES_CONTEXT_ATTRIBUTES_DOCTYPE_KEY, DOCTYPE);
+        
+    }
+    
+    public static String getDOCTYPEFromFacesContextAttributes(FacesContext context) {
+        if (null == context) {
+            return null;
+        }
+        Map<Object, Object> attrs = context.getAttributes();
+        return (String) attrs.get(FACES_CONTEXT_ATTRIBUTES_DOCTYPE_KEY);
+    }
+    
+    private static final String FACES_CONTEXT_ATTRIBUTES_XMLDECL_KEY = Util.class.getName() + "_FACES_CONTEXT_ATTRS_XMLDECL_KEY";
+    
+    public static void saveXMLDECLToFacesContextAttributes(String XMLDECL) {
+        FacesContext context = FacesContext.getCurrentInstance();
+        if (null == context) {
+            return;
+        }
+        Map<Object, Object> attrs = context.getAttributes();
+        attrs.put(FACES_CONTEXT_ATTRIBUTES_XMLDECL_KEY, XMLDECL);
+        
+    }
+    
+    public static String getXMLDECLFromFacesContextAttributes(FacesContext context) {
+        if (null == context) {
+            return null;
+        }
+        Map<Object, Object> attrs = context.getAttributes();
+        return (String) attrs.get(FACES_CONTEXT_ATTRIBUTES_XMLDECL_KEY);
+    }
+    
+    public static long getLastModified(URL url) {
+        long lastModified;
+        URLConnection conn;
+        InputStream is = null;
+
+        try {
+            conn = url.openConnection();
+
+            if (conn instanceof JarURLConnection) { 
+                /*
+                 * Note this is a work around for JarURLConnection since the
+                 * getLastModified method is buggy. See JAVASERVERFACES-2725
+                 * and JAVASERVERFACES-2734.
+                 */
+                JarURLConnection jarUrlConnection = (JarURLConnection) conn; 
+                URL jarFileUrl = jarUrlConnection.getJarFileURL(); 
+                URLConnection jarFileConnection = jarFileUrl.openConnection(); 
+                lastModified = jarFileConnection.getLastModified(); 
+                jarFileConnection.getInputStream().close(); 
+            }
+            else { 
+                is = conn.getInputStream(); 
+                lastModified = conn.getLastModified(); 
+            } 
+        } catch (Exception e) { 
+            throw new FacesException("Error Checking Last Modified for " + url, e);
+        } finally {
+            if (is != null) {
+                try { 
+                    is.close();
+                } catch (Exception e) {
+                    if (LOGGER.isLoggable(Level.FINEST)) {
+                        LOGGER.log(Level.FINEST, "Closing stream", e);
+                    }
+                }
+            }
+        }
+        return lastModified;
+    }
+
+} // end of class Util
diff --git a/jsf-ri/src/main/java/com/sun/faces/util/cdi11/CDIUtil.java b/jsf-ri/src/main/java/com/sun/faces/util/cdi11/CDIUtil.java
new file mode 100644
index 0000000..07a6ef0
--- /dev/null
+++ b/jsf-ri/src/main/java/com/sun/faces/util/cdi11/CDIUtil.java
@@ -0,0 +1,66 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.util.cdi11;
+
+import javax.enterprise.inject.spi.Bean;
+import javax.enterprise.inject.spi.BeanManager;
+
+/*
+ * This interface will only ever be loaded and accessed in CDI 1.1 or greater
+ * runtimes.
+ * 
+ */
+
+public interface CDIUtil {
+    
+    /*
+     * Allow for the programmatic instantiation of a CDI bean "on demand", 
+     * so to speak.  This is in contrast to the usual way of CDI beans, 
+     * where instantiation happens lazily.
+     * 
+     * Two clients of this interface are the CDI extensions for ViewScoped
+     * and FlowScoped so that they may fire the Initialized and Destroyed
+     * events as necessary.
+     * 
+     */
+    Bean createHelperBean(BeanManager beanManager, Class beanClass);
+    
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/util/cdi11/CDIUtilImpl.java b/jsf-ri/src/main/java/com/sun/faces/util/cdi11/CDIUtilImpl.java
new file mode 100644
index 0000000..f976152
--- /dev/null
+++ b/jsf-ri/src/main/java/com/sun/faces/util/cdi11/CDIUtilImpl.java
@@ -0,0 +1,176 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.util.cdi11;
+
+import java.io.Serializable;
+import java.lang.annotation.Annotation;
+import java.lang.reflect.Type;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Set;
+import javax.enterprise.context.Dependent;
+import javax.enterprise.context.spi.CreationalContext;
+import javax.enterprise.inject.Any;
+import javax.enterprise.inject.Default;
+import javax.enterprise.inject.spi.AnnotatedType;
+import javax.enterprise.inject.spi.Bean;
+import javax.enterprise.inject.spi.BeanManager;
+import javax.enterprise.inject.spi.InjectionPoint;
+import javax.enterprise.inject.spi.InjectionTarget;
+import javax.enterprise.inject.spi.InjectionTargetFactory;
+import javax.enterprise.util.AnnotationLiteral;
+
+public class CDIUtilImpl implements Serializable, CDIUtil {
+    
+    private static final long serialVersionUID = -8101770583567814803L;
+    
+    public CDIUtilImpl() {
+        
+    }
+    
+    @Override
+    public Bean createHelperBean(BeanManager beanManager, Class beanClass) {
+       BeanWrapper result = null;
+       
+       AnnotatedType annotatedType = beanManager.createAnnotatedType(
+               beanClass );
+       
+       InjectionTargetFactory factory = beanManager.getInjectionTargetFactory(annotatedType);
+       
+       result = new BeanWrapper(beanClass);
+       //use this to create the class and inject dependencies
+       final InjectionTarget injectionTarget =
+               factory.createInjectionTarget(result);
+       result.setInjectionTarget(injectionTarget);
+       
+       return result;
+   }
+   
+   
+   private static class BeanWrapper implements Bean {
+       private Class beanClass;
+       private InjectionTarget injectionTarget = null;
+       
+       public BeanWrapper( Class beanClass) {
+           this.beanClass = beanClass;
+           
+       }
+       private void setInjectionTarget(InjectionTarget injectionTarget) {
+           this.injectionTarget = injectionTarget;
+       }
+       
+       @Override
+       public Class<?> getBeanClass() {
+           return beanClass;
+       }
+       
+       @Override
+       public Set<InjectionPoint> getInjectionPoints() {
+           return injectionTarget.getInjectionPoints();
+       }
+       
+       @Override
+       public String getName() {
+           return null;
+       }
+       
+       @Override
+       public Set<Annotation> getQualifiers() {
+           Set<Annotation> qualifiers = new HashSet<Annotation>();
+           qualifiers.add( new DefaultAnnotationLiteral());
+           qualifiers.add( new AnyAnnotationLiteral());
+           return qualifiers;
+       }
+       
+       public static class DefaultAnnotationLiteral extends AnnotationLiteral<Default> {
+           private static final long serialVersionUID = -9065007202240742004L;           
+           
+       }
+       
+       public static class AnyAnnotationLiteral extends AnnotationLiteral<Any> {
+           private static final long serialVersionUID = -4700109250603725375L;
+       }
+       
+       @Override
+       public Class<? extends Annotation> getScope() {
+           return Dependent.class;
+       }
+       
+       @Override
+       public Set<Class<? extends Annotation>> getStereotypes() {
+           return Collections.emptySet();
+       }
+       
+       @Override
+       public Set<Type> getTypes() {
+           Set<Type> types = new HashSet<Type>();
+           types.add( beanClass );
+           types.add( Object.class );
+           return types;
+       }
+       
+       @Override
+       public boolean isAlternative() {
+           return false;
+       }
+       
+       @Override
+       public boolean isNullable() {
+           return false;
+       }
+       
+       @Override
+       public Object create( CreationalContext ctx ) {
+           Object instance = injectionTarget.produce( ctx );
+           injectionTarget.inject( instance, ctx );
+           injectionTarget.postConstruct( instance );
+           return instance;
+       }
+       
+       @Override
+       public void destroy( Object instance, CreationalContext ctx ) {
+           injectionTarget.preDestroy( instance );
+           injectionTarget.dispose( instance );
+           ctx.release();
+       }
+   }   
+    
+}
diff --git a/jsf-ri/src/main/java/com/sun/faces/vendor/WebContainerInjectionProvider.java b/jsf-ri/src/main/java/com/sun/faces/vendor/WebContainerInjectionProvider.java
index b395217..9fa1ea1 100644
--- a/jsf-ri/src/main/java/com/sun/faces/vendor/WebContainerInjectionProvider.java
+++ b/jsf-ri/src/main/java/com/sun/faces/vendor/WebContainerInjectionProvider.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -38,7 +42,6 @@ package com.sun.faces.vendor;
 
 import com.sun.faces.spi.InjectionProvider;
 import com.sun.faces.spi.InjectionProviderException;
-import com.sun.faces.util.Util;
 import com.sun.faces.util.FacesLogger;
 
 import javax.annotation.PreDestroy;
@@ -46,6 +49,7 @@ import javax.annotation.PostConstruct;
 import java.lang.reflect.Method;
 import java.lang.reflect.Modifier;
 import java.lang.annotation.Annotation;
+import java.util.concurrent.ConcurrentHashMap;
 import java.util.logging.Logger;
 import java.util.logging.Level;
 
@@ -115,6 +119,22 @@ public class WebContainerInjectionProvider implements InjectionProvider {
         }
 
     }
+    
+    private static class MethodHolder {
+        
+        private final Method method;
+
+        public MethodHolder(Method method){
+            this.method = method;
+        }
+
+        public Method getMethod() {
+            return method;
+        }
+    }
+    
+    private static ConcurrentHashMap<Class, ConcurrentHashMap<Class<? extends Annotation>, MethodHolder>> methodsPerClazz =
+            new ConcurrentHashMap<Class, ConcurrentHashMap<Class<? extends Annotation>, MethodHolder>>();
 
 
     private static Method getAnnotatedMethod(Object managedBean,
@@ -122,63 +142,99 @@ public class WebContainerInjectionProvider implements InjectionProvider {
 
         Class<?> clazz = managedBean.getClass();
         while (!Object.class.equals(clazz)) {
+            
+            ConcurrentHashMap<Class<? extends Annotation>, MethodHolder> methodsMap = methodsPerClazz.get(clazz);
+            
+            if(methodsMap==null) {
+                
+                ConcurrentHashMap<Class<? extends Annotation>, MethodHolder> newMethodsMap = 
+                        new ConcurrentHashMap<Class<? extends Annotation>, MethodHolder>();
+                
+                methodsMap = methodsPerClazz.putIfAbsent(clazz, newMethodsMap);
+                
+                if(methodsMap==null) {
+                    methodsMap = newMethodsMap;
+                }                           
+            }
+            
+            MethodHolder methodHolder = methodsMap.get(annotation);
+            
+            if(methodHolder==null) {
+                Method[] methods = clazz.getDeclaredMethods();
+                Method method = getAnnotatedMethodForMethodArr(methods, annotation);
+                
+                MethodHolder newMethodHolder = new MethodHolder(method);
+                
+                methodHolder = methodsMap.putIfAbsent(annotation, newMethodHolder);
+
+                if(methodHolder==null) {
+                    methodHolder = newMethodHolder;
+                }
+            }
 
-            Method[] methods = clazz.getDeclaredMethods();
-            for (Method method : methods) {
-                if (method.isAnnotationPresent(annotation)) {
-                    // validate method
-                    if (Modifier.isStatic(method.getModifiers())) {
-                        if (LOGGER.isLoggable(Level.WARNING)) {
-                            LOGGER.log(Level.WARNING,
-                                       "jsf.core.web.injection.method_not_static",
-                                       new Object[] { method.toString(),
-                                                      annotation.getName() });
-                        }
-                        continue;
+            if(methodHolder.getMethod()!=null) {
+                return methodHolder.getMethod();
+            }
+
+            clazz = clazz.getSuperclass();
+        }
+
+        return null;
+    }
+
+    private static Method getAnnotatedMethodForMethodArr(Method[] methods, Class<? extends Annotation> annotation) {
+        for (Method method : methods) {
+            if (method.isAnnotationPresent(annotation)) {
+                // validate method
+                if (Modifier.isStatic(method.getModifiers())) {
+                    if (LOGGER.isLoggable(Level.WARNING)) {
+                        LOGGER.log(Level.WARNING,
+                                   "jsf.core.web.injection.method_not_static",
+                                   new Object[] { method.toString(),
+                                                  annotation.getName() });
                     }
-                    if (!Void.TYPE.equals(method.getReturnType())) {
-                        if (LOGGER.isLoggable(Level.WARNING)) {
-                            LOGGER.log(Level.WARNING,
-                                       "jsf.core.web.injection.method_return_not_void",
-                                       new Object[] { method.toString(),
-                                                      annotation.getName() });
+                    continue;
+                }
+                if (!Void.TYPE.equals(method.getReturnType())) {
+                    if (LOGGER.isLoggable(Level.WARNING)) {
+                        LOGGER.log(Level.WARNING,
+                                   "jsf.core.web.injection.method_return_not_void",
+                                   new Object[] { method.toString(),
+                                                  annotation.getName() });
+                    }
+                    continue;
+                }
+                if (method.getParameterTypes().length != 0) {
+                    if (LOGGER.isLoggable(Level.WARNING)) {
+                        LOGGER.log(Level.WARNING,
+                                   "jsf.core.web.injection.method_no_params",
+                                   new Object[] { method.toString(),
+                                                  annotation.getName() });
+                    }
+                    continue;
+                }
+                Class<?>[] exceptions = method.getExceptionTypes();
+                if (method.getExceptionTypes().length != 0) {
+                    boolean hasChecked = false;
+                    for (Class<?> excClass : exceptions) {
+                        if (!RuntimeException.class.isAssignableFrom(excClass)) {
+                            hasChecked = true;
+                            break;
                         }
-                        continue;
                     }
-                    if (method.getParameterTypes().length != 0) {
+                    if (hasChecked) {
                         if (LOGGER.isLoggable(Level.WARNING)) {
                             LOGGER.log(Level.WARNING,
-                                       "jsf.core.web.injection.method_no_params",
-                                       new Object[] { method.toString(),
-                                                      annotation.getName() });
+                                 "jsf.core.web.injection.method_no_checked_exceptions",
+                                 new Object[]{method.toString(),
+                                      annotation.getName()});
                         }
                         continue;
                     }
-                    Class<?>[] exceptions = method.getExceptionTypes();
-                    if (method.getExceptionTypes().length != 0) {
-                        boolean hasChecked = false;
-                        for (Class<?> excClass : exceptions) {
-                            if (!RuntimeException.class.isAssignableFrom(excClass)) {
-                                hasChecked = true;
-                                break;
-                            }
-                        }
-                        if (hasChecked) {
-                            if (LOGGER.isLoggable(Level.WARNING)) {
-                                LOGGER.log(Level.WARNING,
-                                     "jsf.core.web.injection.method_no_checked_exceptions",
-                                     new Object[]{method.toString(),
-                                          annotation.getName()});
-                            }
-                            continue;
-                        }
-                    }
-                    // we found a match.
-                    return method;
                 }
+                // we found a match.
+                return method;
             }
-
-            clazz = clazz.getSuperclass();
         }
 
         return null;
diff --git a/jsf-ri/src/main/resources/com/sun/faces/LogStrings.properties b/jsf-ri/src/main/resources/com/sun/faces/LogStrings.properties
index 5a13016..cae3fda 100644
--- a/jsf-ri/src/main/resources/com/sun/faces/LogStrings.properties
+++ b/jsf-ri/src/main/resources/com/sun/faces/LogStrings.properties
@@ -1,27 +1,31 @@
 #
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 #
-# Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+# Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
 #
 # The contents of this file are subject to the terms of either the GNU
 # General Public License Version 2 only ("GPL") or the Common Development
 # and Distribution License("CDDL") (collectively, the "License").  You
-# may not use this file except in compliance with the License. You can obtain
-# a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
-# or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
 # language governing permissions and limitations under the License.
 #
 # When distributing the software, include this License Header Notice in each
-# file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
-# Sun designates this particular file as subject to the "Classpath" exception
-# as provided by Sun in the GPL Version 2 section of the License file that
-# accompanied this code.  If applicable, add the following below the License
-# Header, with the fields enclosed by brackets [] replaced by your own
-# identifying information: "Portions Copyrighted [year]
-# [name of copyright owner]"
+# file and include the License file at packager/legal/LICENSE.txt.
 #
-# Contributor(s):
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
 #
+# Contributor(s):
 # If you wish your version of this file to be governed by only the CDDL or
 # only the GPL Version 2, indicate your decision by adding "[Contributor]
 # elects to include this software in this distribution under the [CDDL or GPL
@@ -59,7 +63,7 @@ jsf.config.webconfig.boolconfiginfo.enabled=JSF1021: [{0}] Configuration option
 jsf.config.webconfig.boolconfiginfo.disabled=JSF1021: [{0}] Configuration option ''{1}'' - DISABLED
 jsf.config.webconfig.boolconfig.invalidvalue=JSF1022: [{0}] Invalid value ''{1}'' for configuration option ''{2}''.  Valid values are ''{3}''.  Falling back to the default of ''{4}''.
 jsf.config.webconfig.enventryinfo=JSF1023: [{0}] Environment entry ''{1}'' processed, value ''{2}''
-jsf.config.webconfig.enventry.clientencrypt=JSF1024: [{0}] Client state encryption: ENABLED
+jsf.config.webconfig.enventry.clientencrypt=JSF1024: Client state encryption: DISABLED
 jsf.config.webconfig.param.deprecated=JSF1025: [{0}] Context initialization parameter ''{1}'' is deprecated.  The option will still be configured, but please use ''{2}'' in the future.
 jsf.config.webconfig.param.deprecated.no_replacement=JSF1025: [{0}] Context initialization parameter ''{1}'' is deprecated and will have no effect.  
 jsf.config.webconfig.option.notconfigured=JSF1026: [{0}] Configuration option ''{1}'' not configured
@@ -145,3 +149,6 @@ jsf.externalcontext.flash.bad.cookie=JSF1094: Could not decode flash data from i
 jsf.externalcontext.flash.response.already.committed=JSF1095: The response was already committed by the time we tried to set the outgoing cookie for the flash.  Any values stored to the flash will not be available on the next request.
 jsf.metadata.uiviewroot.unavailable=JSF1096: UIViewRoot unavailable at the time view metadata was being processed.  Metadata will be unavailable.
 jsf.application.resource.invalid_if_modified_since_header=JSF1097: Unable to parse date sent by User Agent for If-Modified-Since header, {0}.
+jsf.context.partial_visit_context_unvisited_children=JSF1098: The following clientIds were not visited after a partial traversal: {0}.  This is a waste of processor time and could be due to an error in the VDL page.
+jsf.lifecycle.invalid.referer=JSF1099: Referer [sic] header value {0} does not appear to be a protected view. Preventing display of viewId {1}
+jsf.lifecycle.invalid.origin=JSF1100: Origin [sic] header value {0} does not appear to be a protected view. Preventing display of viewId {1}
diff --git a/jsf-ri/src/main/resources/com/sun/faces/LogStrings_de.properties b/jsf-ri/src/main/resources/com/sun/faces/LogStrings_de.properties
index a25bd20..c8d8d7a 100644
--- a/jsf-ri/src/main/resources/com/sun/faces/LogStrings_de.properties
+++ b/jsf-ri/src/main/resources/com/sun/faces/LogStrings_de.properties
@@ -1,27 +1,31 @@
 #
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 #
-# Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+# Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
 #
 # The contents of this file are subject to the terms of either the GNU
 # General Public License Version 2 only ("GPL") or the Common Development
 # and Distribution License("CDDL") (collectively, the "License").  You
-# may not use this file except in compliance with the License. You can obtain
-# a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
-# or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
 # language governing permissions and limitations under the License.
 #
 # When distributing the software, include this License Header Notice in each
-# file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
-# Sun designates this particular file as subject to the "Classpath" exception
-# as provided by Sun in the GPL Version 2 section of the License file that
-# accompanied this code.  If applicable, add the following below the License
-# Header, with the fields enclosed by brackets [] replaced by your own
-# identifying information: "Portions Copyrighted [year]
-# [name of copyright owner]"
+# file and include the License file at packager/legal/LICENSE.txt.
 #
-# Contributor(s):
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
 #
+# Contributor(s):
 # If you wish your version of this file to be governed by only the CDDL or
 # only the GPL Version 2, indicate your decision by adding "[Contributor]
 # elects to include this software in this distribution under the [CDDL or GPL
@@ -59,7 +63,7 @@ jsf.config.webconfig.boolconfiginfo.enabled=JSF1021: [{0}] Konfigurationsoption
 jsf.config.webconfig.boolconfiginfo.disabled=JSF1021: [{0}] Konfigurationsoption ''{1}'' - DISABLED
 jsf.config.webconfig.boolconfig.invalidvalue=JSF1022: [{0}] Ung\u00fcltiger Wert ''{1}'' f\u00fcr Konfigurationsoption ''{2}''.  G\u00fcltige Werte sind ''{3}''.  Standard ''{4}'' wird wiederhergestellt.
 jsf.config.webconfig.enventryinfo=JSF1023: [{0}] Umgebungseintrag ''{1}'' verarbeitet, Wert ''{2}''
-jsf.config.webconfig.enventry.clientencrypt=JSF1024: [{0}] Clientstatusverschl\u00fcsselung: ENABLED
+jsf.config.webconfig.enventry.clientencrypt=JSF1024: Clientstatusverschl\u00fcsselung: DISABLED
 jsf.config.webconfig.param.deprecated=JSF1025: [{0}] Kontextinitialisierungs-Parameter ''{1}'' wurde abgelehnt.  Die Option wird trotzdem konfiguriert, aber bitte verwenden Sie in Zukunft ''{2}''.
 jsf.config.webconfig.param.deprecated.no_replacement=JSF1025: [{0}] Kontextinitialiasierungsparameter ''{1}'' wurde abgelehnt und wird nicht wirksam.  
 jsf.config.webconfig.option.notconfigured=JSF1026: [{0}] Konfigurationsoption ''{1}'' wurde nicht konfiguriert
@@ -143,3 +147,6 @@ jsf.externalcontext.flash.bad.cookie=JSF1094: Could not decode flash data from i
 jsf.externalcontext.flash.response.already.committed=JSF1095: The response was already committed by the time we tried to set the outgoing cookie for the flash.  Any values stored to the flash will not be available on the next request.
 jsf.metadata.uiviewroot.unavailable=JSF1096: UIViewRoot unavailable at the time view metadata was being processed.  Metadata will be unavailable.
 jsf.application.resource.invalid_if_modified_since_header=JSF1097: Unable to parse date sent by User Agent for If-Modified-Since header, {0}.
+jsf.context.partial_visit_context_unvisited_children=JSF1098: The following clientIds were not visited after a partial traversal: {0}.  This is a waste of processor time and could be due to an error in the VDL page.
+jsf.lifecycle.invalid.referer=JSF1099: Referer [sic] header value {0} does not appear to be a protected view. Preventing display of viewId {1}
+jsf.lifecycle.invalid.origin=JSF1100: Origin [sic] header value {0} does not appear to be a protected view. Preventing display of viewId {1}
diff --git a/jsf-ri/src/main/resources/com/sun/faces/LogStrings_es.properties b/jsf-ri/src/main/resources/com/sun/faces/LogStrings_es.properties
index 3cb78be..7953ced 100644
--- a/jsf-ri/src/main/resources/com/sun/faces/LogStrings_es.properties
+++ b/jsf-ri/src/main/resources/com/sun/faces/LogStrings_es.properties
@@ -1,27 +1,31 @@
 #
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 #
-# Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+# Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
 #
 # The contents of this file are subject to the terms of either the GNU
 # General Public License Version 2 only ("GPL") or the Common Development
 # and Distribution License("CDDL") (collectively, the "License").  You
-# may not use this file except in compliance with the License. You can obtain
-# a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
-# or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
 # language governing permissions and limitations under the License.
 #
 # When distributing the software, include this License Header Notice in each
-# file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
-# Sun designates this particular file as subject to the "Classpath" exception
-# as provided by Sun in the GPL Version 2 section of the License file that
-# accompanied this code.  If applicable, add the following below the License
-# Header, with the fields enclosed by brackets [] replaced by your own
-# identifying information: "Portions Copyrighted [year]
-# [name of copyright owner]"
+# file and include the License file at packager/legal/LICENSE.txt.
 #
-# Contributor(s):
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
 #
+# Contributor(s):
 # If you wish your version of this file to be governed by only the CDDL or
 # only the GPL Version 2, indicate your decision by adding "[Contributor]
 # elects to include this software in this distribution under the [CDDL or GPL
@@ -59,7 +63,7 @@ jsf.config.webconfig.boolconfiginfo.enabled=JSF1021: [{0}] opci\u00f3n de config
 jsf.config.webconfig.boolconfiginfo.disabled=JSF1021: [{0}] opci\u00f3n de configuraci\u00f3n ''{1}'' - DESACTIVADO
 jsf.config.webconfig.boolconfig.invalidvalue=JSF1022: [{0}] valor no v\u00e1lido ''{1}'' para la opci\u00f3n de configuraci\u00f3n ''{2}''.  Los valores v\u00e1lidos son '{3}''.  Retrocediendo al valor predeterminado ''{4}''.
 jsf.config.webconfig.enventryinfo=JSF1023: [{0}] entrada de entorno ''{1}'' procesada, valor ''{2}''
-jsf.config.webconfig.enventry.clientencrypt=JSF1024: [{0}] cifrado de estado de cliente: ACTIVADO
+jsf.config.webconfig.enventry.clientencrypt=JSF1024: cifrado de estado de cliente: DESACTIVADO
 jsf.config.webconfig.param.deprecated=JSF1025: [{0}] el par\u00e1metro de inicializaci\u00f3n del contexto''{1}'' se ha desaprobado.  La opci\u00f3n se configurar\u00e1, en lo sucesivo utilice ''{2}''.
 jsf.config.webconfig.param.deprecated.no_replacement=JSF1025: [{0}] el par\u00e1metro de inicializaci\u00f3n del contexto''{1}'' se ha desaprobado y no tendr\u00e1 efecto.  
 jsf.config.webconfig.option.notconfigured=JSF1026: [{0}] opci\u00f3n de configuraci\u00f3n ''{1}'' no configurada
@@ -143,3 +147,7 @@ jsf.externalcontext.flash.bad.cookie=JSF1094: Could not decode flash data from i
 jsf.externalcontext.flash.response.already.committed=JSF1095: The response was already committed by the time we tried to set the outgoing cookie for the flash.  Any values stored to the flash will not be available on the next request.
 jsf.metadata.uiviewroot.unavailable=JSF1096: UIViewRoot unavailable at the time view metadata was being processed.  Metadata will be unavailable.
 jsf.application.resource.invalid_if_modified_since_header=JSF1097: Unable to parse date sent by User Agent for If-Modified-Since header, {0}.
+jsf.context.partial_visit_context_unvisited_children=JSF1098: The following clientIds were not visited after a partial traversal: {0}.  This is a waste of processor time and could be due to an error in the VDL page.
+jsf.lifecycle.invalid.referer=JSF1099: Referer [sic] header value {0} does not appear to be a protected view. Preventing display of viewId {1}
+jsf.lifecycle.invalid.origin=JSF1100: Origin [sic] header value {0} does not appear to be a protected view. Preventing display of viewId {1}
+
diff --git a/jsf-ri/src/main/resources/com/sun/faces/LogStrings_fr.properties b/jsf-ri/src/main/resources/com/sun/faces/LogStrings_fr.properties
index f1eaf3d..bcd757a 100644
--- a/jsf-ri/src/main/resources/com/sun/faces/LogStrings_fr.properties
+++ b/jsf-ri/src/main/resources/com/sun/faces/LogStrings_fr.properties
@@ -1,27 +1,31 @@
 #
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 #
-# Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+# Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
 #
 # The contents of this file are subject to the terms of either the GNU
 # General Public License Version 2 only ("GPL") or the Common Development
 # and Distribution License("CDDL") (collectively, the "License").  You
-# may not use this file except in compliance with the License. You can obtain
-# a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
-# or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
 # language governing permissions and limitations under the License.
 #
 # When distributing the software, include this License Header Notice in each
-# file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
-# Sun designates this particular file as subject to the "Classpath" exception
-# as provided by Sun in the GPL Version 2 section of the License file that
-# accompanied this code.  If applicable, add the following below the License
-# Header, with the fields enclosed by brackets [] replaced by your own
-# identifying information: "Portions Copyrighted [year]
-# [name of copyright owner]"
+# file and include the License file at packager/legal/LICENSE.txt.
 #
-# Contributor(s):
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
 #
+# Contributor(s):
 # If you wish your version of this file to be governed by only the CDDL or
 # only the GPL Version 2, indicate your decision by adding "[Contributor]
 # elects to include this software in this distribution under the [CDDL or GPL
@@ -35,111 +39,114 @@
 #
 
 jsf.managed_bean_creation_error=JSF1001 : Impossible de cr\u00e9er le bean g\u00e9r\u00e9 {0}.
-jsf.cannot_instantiate_validator_error=JSF1005 : Impossible d''instancier un valideur de type {0}
-jsf.cannot_instantiate_converter_error=JSF1006: Impossible d''instancier un convertisseur de type {0}
+jsf.cannot_instantiate_validator_error=JSF1005 : Impossible d\u2019instancier un valideur de type {0}
+jsf.cannot_instantiate_converter_error=JSF1006: Impossible d\u2019instancier un convertisseur de type {0}
 jsf.duplicate_component_id_error=JSF1007 : ID de composant {0} en double dans la vue.
 jsf.redirect_failed_error=JSF1008 : Echec de la redirection vers le chemin {0}
-jsf.faces_servlet_mapping_cannot_be_determined_error=JSF1009 : Impossible de d\u00e9terminer le mappage FaceServlet pour le chemin d''acc\u00e8s au servlet {0}
-jsf.illegal_view_id_error=JSF1010 : ID de vue {0} non admis. L''ID doit commencer par ''''/''''.
-jsf.util.no.adapter.ctor.available="JSF1016 : La classe cible ''{0}'' n''a pas de constructeur d''adaptateur pour accepter ''{1}'', et cr\u00e9e donc une nouvelle instance \u00e0 la place.
+jsf.faces_servlet_mapping_cannot_be_determined_error=JSF1009 : Impossible de d\u00e9terminer le mappage FaceServlet pour le chemin d\u2019acc\u00e8s au servlet {0}
+jsf.illegal_view_id_error=JSF1010 : ID de vue {0} non admis. L\u2019ID doit commencer par \u2019\u2019/\u2019\u2019.
+jsf.util.no.adapter.ctor.available="JSF1016 : La classe cible \u00ab{0}\u00bb n\u2019a pas de constructeur d\u2019adaptateur pour accepter \u00ab{1}\u00bb, et cr\u00e9e donc une nouvelle instance \u00e0 la place.
 # core tags
-jsf.core.tags.eval_result_not_expected_type=JSF1011 : L''\u00e9valuation de l''expression de l''attribut ''{0}'' a donn\u00e9 un type inattendu.  {1} \u00e9tait attendu, mais {2} a \u00e9t\u00e9 re\u00e7u.
-jsf.util_no_annotation_processed=JSF1014 : Impossible de charger la classe d''annotation ''{0}''.  Cette annotation ne sera donc pas trait\u00e9e.
-jsf.config.listener.version=Initialisation de Mojarra |version.string| pour le contexte ''{0}''
-jsf.config.listener.version.complete=Initialisation de Mojarra termin\u00e9e (|version.string|) pour le contexte ''{0}''
-jsf.config.listener.predestroy.error=JSF1017 : ''{0}'' \u00e9mis lors du traitement de la ou des annotations PreDestroy pour le bean ''{1}'' dans l''\u00e9tendue ''{2}''.  Message : {3}
-jsf.viewhandler.requestpath.recursion=JSF1015 : Le chemin de requ\u00eate ''{0}'' commence par une ou plusieurs occurrences du mappage du pr\u00e9fixe FacesServlet ''{1}''.
-jsf.non_displayed_message=AVERTISSEMENT : Les FacesMessage(s) ont \u00e9t\u00e9 mis en file d''attente, mais n''ont peut-\u00eatre pas \u00e9t\u00e9 affich\u00e9s.{0}
+jsf.core.tags.eval_result_not_expected_type=JSF1011 : L\u2019\u00e9valuation de l\u2019expression de l\u2019attribut \u00ab{0}\u00bb a donn\u00e9 un type inattendu.  {1} \u00e9tait attendu, mais {2} a \u00e9t\u00e9 re\u00e7u.
+jsf.util_no_annotation_processed=JSF1014 : Impossible de charger la classe d\u2019annotation \u00ab{0}\u00bb.  Cette annotation ne sera donc pas trait\u00e9e.
+jsf.config.listener.version=Initialisation de Mojarra |version.string| pour le contexte \u00ab{0}\u00bb
+jsf.config.listener.version.complete=Initialisation de Mojarra termin\u00e9e (|version.string|) pour le contexte \u00ab{0}\u00bb
+jsf.config.listener.predestroy.error=JSF1017 : \u00ab{0}\u00bb \u00e9mis lors du traitement de la ou des annotations PreDestroy pour le bean \u00ab{1}\u00bb dans l\u2019\u00e9tendue \u00ab{2}\u00bb.  Message : {3}
+jsf.viewhandler.requestpath.recursion=JSF1015 : Le chemin de requ\u00eate \u00ab{0}\u00bb commence par une ou plusieurs occurrences du mappage du pr\u00e9fixe FacesServlet \u00ab{1}\u00bb.
+jsf.non_displayed_message=AVERTISSEMENT : Les FacesMessage(s) ont \u00e9t\u00e9 mis en file d\u2019attente, mais n\u2019ont peut-\u00eatre pas \u00e9t\u00e9 affich\u00e9s.{0}
 
-jsf.config.webconfig.configinfo=JSF1018 : [{0}] option de configuration ''{1}'' d\u00e9finie sur ''{2}''
-jsf.config.webconfig.configinfo.reset=JSF1019 : [{0}] option de configuration ''{1}'' r\u00e9initialis\u00e9e sur ''{2}''
-jsf.config.webconfig.configinfo.reset.enabled=JSF1020 : [{0}] option de configuration ''{1}'' r\u00e9initialis\u00e9e sur Activ\u00e9e
-jsf.config.webconfig.configinfo.reset.disabled=JSF1020 : [{0}] option de configuration ''{1}'' r\u00e9initialis\u00e9e sur D\u00e9sactiv\u00e9e
-jsf.config.webconfig.boolconfiginfo.enabled=JSF1021 : [{0}] option de configuration ''{1}'' - Activ\u00e9e
-jsf.config.webconfig.boolconfiginfo.disabled=JSF1021 : [{0}] option de configuration ''{1}'' - D\u00e9sactiv\u00e9e
-jsf.config.webconfig.boolconfig.invalidvalue=JSF1022 : [{0}] valeur incorrecte ''{1}'' pour l''option de configuration ''{2}''.  Les valeurs valides sont ''{3}''.  R\u00e9tablissement de la valeur par d\u00e9faut ''{4}''
-jsf.config.webconfig.enventryinfo=JSF1023 : [{0}] Entr\u00e9e d''environnement ''{1}'' trait\u00e9e, valeur ''{2}''
-jsf.config.webconfig.enventry.clientencrypt=JSF1024 : [{0}] Cryptage de l''\u00e9tat du client\u00a0: Activ\u00e9
-jsf.config.webconfig.param.deprecated=JSF1025 : [{0}] le param\u00e8tre d''initialisation du contexte ''{1}'' est d\u00e9sapprouv\u00e9.  Cette option sera toujours configur\u00e9e, mais \u00e0 l''avenir, utilisez ''{2}''.
-jsf.config.webconfig.param.deprecated.no_replacement=JSF1025 : [{0}] le param\u00e8tre d''initialisation du contexte ''{1}'' est d\u00e9sapprouv\u00e9 et n''aura aucun effet.  
-jsf.config.webconfig.option.notconfigured=JSF1026: [{0}] L''option de configuration ''{1}'' n''est pas configur\u00e9e.
-jsf.lifecycle.initphaselistener.resolvers_not_registered=JSF1027 : [{0}] Les objets ELResolvers de JSF n''ont pas \u00e9t\u00e9 enregistr\u00e9s avec le conteneur JSP.
+jsf.config.webconfig.configinfo=JSF1018 : [{0}] option de configuration \u00ab{1}\u00bb d\u00e9finie sur \u00ab{2}\u00bb
+jsf.config.webconfig.configinfo.reset=JSF1019 : [{0}] option de configuration \u00ab{1}\u00bb r\u00e9initialis\u00e9e sur \u00ab{2}\u00bb
+jsf.config.webconfig.configinfo.reset.enabled=JSF1020 : [{0}] option de configuration \u00ab{1}\u00bb r\u00e9initialis\u00e9e sur Activ\u00e9e
+jsf.config.webconfig.configinfo.reset.disabled=JSF1020 : [{0}] option de configuration \u00ab{1}\u00bb r\u00e9initialis\u00e9e sur D\u00e9sactiv\u00e9e
+jsf.config.webconfig.boolconfiginfo.enabled=JSF1021 : [{0}] option de configuration \u00ab{1}\u00bb - Activ\u00e9e
+jsf.config.webconfig.boolconfiginfo.disabled=JSF1021 : [{0}] option de configuration \u00ab{1}\u00bb - D\u00e9sactiv\u00e9e
+jsf.config.webconfig.boolconfig.invalidvalue=JSF1022 : [{0}] valeur incorrecte \u00ab{1}\u00bb pour l\u2019option de configuration \u00ab{2}\u00bb.  Les valeurs valides sont \u00ab{3}\u00bb.  R\u00e9tablissement de la valeur par d\u00e9faut \u00ab{4}\u00bb
+jsf.config.webconfig.enventryinfo=JSF1023 : [{0}] Entr\u00e9e d\u2019environnement \u00ab{1}\u00bb trait\u00e9e, valeur \u00ab{2}\u00bb
+jsf.config.webconfig.enventry.clientencrypt=JSF1024 : Cryptage de l\u2019\u00e9tat du client\u00a0: D\u00e9sactiv\u00e9e
+jsf.config.webconfig.param.deprecated=JSF1025 : [{0}] le param\u00e8tre d\u2019initialisation du contexte \u00ab{1}\u00bb est d\u00e9sapprouv\u00e9.  Cette option sera toujours configur\u00e9e, mais \u00e0 l\u2019avenir, utilisez \u00ab{2}\u00bb.
+jsf.config.webconfig.param.deprecated.no_replacement=JSF1025 : [{0}] le param\u00e8tre d\u2019initialisation du contexte \u00ab{1}\u00bb est d\u00e9sapprouv\u00e9 et n\u2019aura aucun effet.  
+jsf.config.webconfig.option.notconfigured=JSF1026: [{0}] L\u2019option de configuration \u00ab{1}\u00bb n\u2019est pas configur\u00e9e.
+jsf.lifecycle.initphaselistener.resolvers_not_registered=JSF1027 : [{0}] Les objets ELResolvers de JSF n\u2019ont pas \u00e9t\u00e9 enregistr\u00e9s avec le conteneur JSP.
 jsf.lifecycle.initphaselistener.resolvers_registered=JSF1028 : [{0}] Les objets ELResolvers de JSF ont bien \u00e9t\u00e9 enregistr\u00e9s avec le conteneur JSP.
-jsf.spi.injection.provider_not_implemented=JSF1029 : L''impl\u00e9mentation sp\u00e9cifi\u00e9e d''InjectionProvider ''{0}'' n''impl\u00e9mente pas l''interface InjectionProvider. 
-jsf.spi.injection.provider_not_found=JSF1030 : Impossible de charger l''impl\u00e9mentation sp\u00e9cifi\u00e9e d''InjectionProvider ''{0}''
-jsf.spi.injection.provider_cannot_instantiate=JSF1031 : Impossible d''instancier l''InjectionProvider sp\u00e9cifi\u00e9 ''{0}''
-jsf.spi.injection.provider_configured=JSF1032 : Injection des ressources ACTIV\u00c9E \u00e0 l''aide de l''InjectionProvider ''{0}''.
-jsf.spi.injection.no_injection=JSF1033 : L''injection des ressources est D\u00e9sactiv\u00e9e.
-jsf.spi.serialization.provider_not_implemented=JSF1036 : L''impl\u00e9mentation sp\u00e9cifi\u00e9e de SerializationProvider ''{0}'' n''impl\u00e9mente pas l''interface SerializationProvider. 
-jsf.spi.serialization.provider_not_found=JSF1037 : Impossible de charger l''impl\u00e9mentation sp\u00e9cifi\u00e9e du SerializationProvider ''{0}''
-jsf.spi.serialization.provider_cannot_instantiate=JSF1038 : Impossible d''instancier le SerializationProvider sp\u00e9cifi\u00e9 ''{0}''
-jsf.spi.serialization.provider_configured=JSF1039 : Injection des ressources ACTIV\u00c9E \u00e0 l''aide de l''InjectionProvider ''{0}''.
-jsf.renderkit.resstatemgr.clientbuf_div_two=JSF1034 : La valeur ''{1}'' de ''{0}'' doit \u00eatre divisible par 2.  \u00c9tablissement de la valeur par d\u00e9faut ''{2}''
-jsf.renderkit.resstatemgr.clientbuf_not_integer=JSF1035 : La valeur ''{1}'' de ''{0}'' n''est pas un nombre entier.  \u00c9tablissement de la valeur par d\u00e9faut ''{2}''
-jsf.core.taglib.invalid_locale_value=JSF1041 : La langue sp\u00e9cifi\u00e9e ''{0}'' est incorrecte.  La valeur de l''attribut de langue doit \u00eatre un code de langue ISO\u00a0639 valide ne contenant ni pays ni variante.
-jsf.core.taglib.invalid_language=JSF1042 : La langue sp\u00e9cifi\u00e9e ''{0}'' n''est pas un code de langue ISO\u00a0639 connu.
-jsf.core.taglib.action_or_valuechange_listener.null_type_binding=JSF1043 : Le {0} du composant ''{1}'' ne sera pas trait\u00e9 car les valeurs de ''binding'' et ''type'' sont nulles.
-jsf.core.taglib.phaselistener.null_type_binding=JSF1043 : Le PhaseListener (sp\u00e9cifi\u00e9 via PhaseListenerTag) ne sera pas trait\u00e9 car les valeurs de ''binding'' et ''type'' sont nulles.
-jsf.core.web.injection.method_not_static=JSF1044 : La m\u00e9thode ''{0}'' marqu\u00e9e avec l''annotation ''{1}'' ne peut pas \u00eatre statique.  Cette m\u00e9thode sera ignor\u00e9e.
-jsf.core.web.injection.method_return_not_void=JSF1045 : La m\u00e9thode ''{0}'' marqu\u00e9e avec l''annotation ''{1}'' ne peut renvoyer que la valeur void.  Cette m\u00e9thode sera ignor\u00e9e.
-jsf.core.web.injection.method_no_params=JSF1046 : La m\u00e9thode ''{0}'' marqu\u00e9e avec l''annotation ''{1}'' ne peut pas avoir de param\u00e8tres.  Cette m\u00e9thode sera ignor\u00e9e.
-jsf.core.web.injection.method_no_checked_exceptions=JSF1047 : La m\u00e9thode ''{0}'' marqu\u00e9e avec l''annotation ''{1}'' ne peut d\u00e9clarer aucune exception v\u00e9rifi\u00e9e.  Cette m\u00e9thode sera ignor\u00e9e.
-jsf.core.injection.provider_generic_web_configured=JSF1048 : Pr\u00e9sence d''annotations PostConstruct/PreDestroy  Les m\u00e9thodes de beans g\u00e9r\u00e9s marqu\u00e9es avec ces annotations auront des annotations dites trait\u00e9es.
-jsf.spi.injection.provider.invalid_service_entry=JSF1049 : Entr\u00e9e de service non valide ''{0}''.  Le format doit \u00eatre ''''<DiscoverableInjectionProviderClass>:<DelegateClass>''''.  Cette entr\u00e9e sera ignor\u00e9e.
-jsf.spi.injection.provider.discovery_error=JSF1050 : Erreur lors de l''invocation de DiscoverableInjectionProvider.isProviderAppropriate(String) pour l''entr\u00e9e ''{0}''.  Cette entr\u00e9e sera ignor\u00e9e.
-jsf.spi.injection.provider.entry_not_discoverable=JSF1051 : L''entr\u00e9e du service ''{0}'' n''\u00e9tend pas le DiscoverableInjectionProvider.  Cette entr\u00e9e sera ignor\u00e9e.
-jsf.spi.provider.cannot_read_service=JSF1052 : Erreur inattendue lors du traitement de l''entr\u00e9e du service ''{0}''.
-jsf.lifecycle.phaselistener.exception=JSF1053 : (Listener : {0}, ID de la Phase : {1}, ID de la vue : {2}) Exception \u00e9mise lors de l''ex\u00e9cution du phase-listener\u00a0: {3}
-jsf.lifecycle.phase.exception=JSF1054 : (ID de la Phase : {0}, ID de la vue : {1}) Exception \u00e9mise lors de l''ex\u00e9cution de la phase : {2}
-jsf.config.cannot_resolve_entities=JSF1055 : Impossible de localiser la ressource locale ''{0}''.  La r\u00e9solution standard des entit\u00e9s sera utilis\u00e9e en cas de pr\u00e9sence d''une requ\u00eate pour ''{1}''.
-jsf.config.cannot_create_inputsource=JSF1056 : Impossible de cr\u00e9er une InputSource pour l''URL ''{0}''.
-jsf.config.navigation.from_view_id_leading_slash=JSF1057 : La ressource r\u00e9f\u00e9renc\u00e9e par from-view-id, ''{0}'', ne commence pas par ''''/''''.  Ce caract\u00e8re sera ajout\u00e9 pour vous, mais l''erreur doit \u00eatre corrig\u00e9e. 
-jsf.config.navigation.to_view_id_leading_slash=JSF1058 : La ressource r\u00e9f\u00e9renc\u00e9e par to-view-id, ''{0}'', pour la navigation depuis ''{1}'', ne commence pas par ''''/''''.  Ce caract\u00e8re sera ajout\u00e9 pour vous, mais l''erreur doit \u00eatre corrig\u00e9e.
-jsf.config.navigation.if_invalid_expression=JSF1070 : La condition ''{0}'' pour la navigation depuis ''{1}'' n''est pas une expression \u00e0 valeur contig\u00fce et sera ignor\u00e9e.
-jsf.config.verifyobjects.development_only=JSF1059 : AVERTISSEMENT !  La fonctionnalit\u00e9 com.sun.faces.verifyObjects est destin\u00e9e \u00e0 aider les d\u00e9veloppeurs \u00e0 se passer des outils.  Elle ne doit pas \u00eatre activ\u00e9e si vous utilisez un EDI, ou si cette application est d\u00e9ploy\u00e9e en production car cela risque d''affecter la dur\u00e9e du d\u00e9marrage.
+jsf.spi.injection.provider_not_implemented=JSF1029 : L\u2019impl\u00e9mentation sp\u00e9cifi\u00e9e d\u2019InjectionProvider \u00ab{0}\u00bb n\u2019impl\u00e9mente pas l\u2019interface InjectionProvider. 
+jsf.spi.injection.provider_not_found=JSF1030 : Impossible de charger l\u2019impl\u00e9mentation sp\u00e9cifi\u00e9e d\u2019InjectionProvider \u00ab{0}\u00bb
+jsf.spi.injection.provider_cannot_instantiate=JSF1031 : Impossible d\u2019instancier l\u2019InjectionProvider sp\u00e9cifi\u00e9 \u00ab{0}\u00bb
+jsf.spi.injection.provider_configured=JSF1032 : Injection des ressources ACTIV\u00c9E \u00e0 l\u2019aide de l\u2019InjectionProvider \u00ab{0}\u00bb.
+jsf.spi.injection.no_injection=JSF1033 : L\u2019injection des ressources est D\u00e9sactiv\u00e9e.
+jsf.spi.serialization.provider_not_implemented=JSF1036 : L\u2019impl\u00e9mentation sp\u00e9cifi\u00e9e de SerializationProvider \u00ab{0}\u00bb n\u2019impl\u00e9mente pas l\u2019interface SerializationProvider. 
+jsf.spi.serialization.provider_not_found=JSF1037 : Impossible de charger l\u2019impl\u00e9mentation sp\u00e9cifi\u00e9e du SerializationProvider \u00ab{0}\u00bb
+jsf.spi.serialization.provider_cannot_instantiate=JSF1038 : Impossible d\u2019instancier le SerializationProvider sp\u00e9cifi\u00e9 \u00ab{0}\u00bb
+jsf.spi.serialization.provider_configured=JSF1039 : Injection des ressources ACTIV\u00c9E \u00e0 l\u2019aide de l\u2019InjectionProvider \u00ab{0}\u00bb.
+jsf.renderkit.resstatemgr.clientbuf_div_two=JSF1034 : La valeur \u00ab{1}\u00bb de \u00ab{0}\u00bb doit \u00eatre divisible par 2.  \u00c9tablissement de la valeur par d\u00e9faut \u00ab{2}\u00bb
+jsf.renderkit.resstatemgr.clientbuf_not_integer=JSF1035 : La valeur \u00ab{1}\u00bb de \u00ab{0}\u00bb n\u2019est pas un nombre entier.  \u00c9tablissement de la valeur par d\u00e9faut \u00ab{2}\u00bb
+jsf.core.taglib.invalid_locale_value=JSF1041 : La langue sp\u00e9cifi\u00e9e \u00ab{0}\u00bb est incorrecte.  La valeur de l\u2019attribut de langue doit \u00eatre un code de langue ISO\u00a0639 valide ne contenant ni pays ni variante.
+jsf.core.taglib.invalid_language=JSF1042 : La langue sp\u00e9cifi\u00e9e \u00ab{0}\u00bb n\u2019est pas un code de langue ISO\u00a0639 connu.
+jsf.core.taglib.action_or_valuechange_listener.null_type_binding=JSF1043 : Le {0} du composant \u00ab{1}\u00bb ne sera pas trait\u00e9 car les valeurs de \u2019binding\u2019 et \u2019type\u2019 sont nulles.
+jsf.core.taglib.phaselistener.null_type_binding=JSF1043 : Le PhaseListener (sp\u00e9cifi\u00e9 via PhaseListenerTag) ne sera pas trait\u00e9 car les valeurs de \u2019binding\u2019 et \u2019type\u2019 sont nulles.
+jsf.core.web.injection.method_not_static=JSF1044 : La m\u00e9thode \u00ab{0}\u00bb marqu\u00e9e avec l\u2019annotation \u00ab{1}\u00bb ne peut pas \u00eatre statique.  Cette m\u00e9thode sera ignor\u00e9e.
+jsf.core.web.injection.method_return_not_void=JSF1045 : La m\u00e9thode \u00ab{0}\u00bb marqu\u00e9e avec l\u2019annotation \u00ab{1}\u00bb ne peut renvoyer que la valeur void.  Cette m\u00e9thode sera ignor\u00e9e.
+jsf.core.web.injection.method_no_params=JSF1046 : La m\u00e9thode \u00ab{0}\u00bb marqu\u00e9e avec l\u2019annotation \u00ab{1}\u00bb ne peut pas avoir de param\u00e8tres.  Cette m\u00e9thode sera ignor\u00e9e.
+jsf.core.web.injection.method_no_checked_exceptions=JSF1047 : La m\u00e9thode \u00ab{0}\u00bb marqu\u00e9e avec l\u2019annotation \u00ab{1}\u00bb ne peut d\u00e9clarer aucune exception v\u00e9rifi\u00e9e.  Cette m\u00e9thode sera ignor\u00e9e.
+jsf.core.injection.provider_generic_web_configured=JSF1048 : Pr\u00e9sence d\u2019annotations PostConstruct/PreDestroy  Les m\u00e9thodes de beans g\u00e9r\u00e9s marqu\u00e9es avec ces annotations auront des annotations dites trait\u00e9es.
+jsf.spi.injection.provider.invalid_service_entry=JSF1049 : Entr\u00e9e de service non valide \u00ab{0}\u00bb.  Le format doit \u00eatre \u2019\u2019<DiscoverableInjectionProviderClass>:<DelegateClass>\u2019\u2019.  Cette entr\u00e9e sera ignor\u00e9e.
+jsf.spi.injection.provider.discovery_error=JSF1050 : Erreur lors de l\u2019invocation de DiscoverableInjectionProvider.isProviderAppropriate(String) pour l\u2019entr\u00e9e \u00ab{0}\u00bb.  Cette entr\u00e9e sera ignor\u00e9e.
+jsf.spi.injection.provider.entry_not_discoverable=JSF1051 : L\u2019entr\u00e9e du service \u00ab{0}\u00bb n\u2019\u00e9tend pas le DiscoverableInjectionProvider.  Cette entr\u00e9e sera ignor\u00e9e.
+jsf.spi.provider.cannot_read_service=JSF1052 : Erreur inattendue lors du traitement de l\u2019entr\u00e9e du service \u00ab{0}\u00bb.
+jsf.lifecycle.phaselistener.exception=JSF1053 : (Listener : {0}, ID de la Phase : {1}, ID de la vue : {2}) Exception \u00e9mise lors de l\u2019ex\u00e9cution du phase-listener\u00a0: {3}
+jsf.lifecycle.phase.exception=JSF1054 : (ID de la Phase : {0}, ID de la vue : {1}) Exception \u00e9mise lors de l\u2019ex\u00e9cution de la phase : {2}
+jsf.config.cannot_resolve_entities=JSF1055 : Impossible de localiser la ressource locale \u00ab{0}\u00bb.  La r\u00e9solution standard des entit\u00e9s sera utilis\u00e9e en cas de pr\u00e9sence d\u2019une requ\u00eate pour \u00ab{1}\u00bb.
+jsf.config.cannot_create_inputsource=JSF1056 : Impossible de cr\u00e9er une InputSource pour l\u2019URL \u00ab{0}\u00bb.
+jsf.config.navigation.from_view_id_leading_slash=JSF1057 : La ressource r\u00e9f\u00e9renc\u00e9e par from-view-id, \u00ab{0}\u00bb, ne commence pas par \u2019\u2019/\u2019\u2019.  Ce caract\u00e8re sera ajout\u00e9 pour vous, mais l\u2019erreur doit \u00eatre corrig\u00e9e. 
+jsf.config.navigation.to_view_id_leading_slash=JSF1058 : La ressource r\u00e9f\u00e9renc\u00e9e par to-view-id, \u00ab{0}\u00bb, pour la navigation depuis \u00ab{1}\u00bb, ne commence pas par \u2019\u2019/\u2019\u2019.  Ce caract\u00e8re sera ajout\u00e9 pour vous, mais l\u2019erreur doit \u00eatre corrig\u00e9e.
+jsf.config.navigation.if_invalid_expression=JSF1070 : La condition \u00ab{0}\u00bb pour la navigation depuis \u00ab{1}\u00bb n\u2019est pas une expression \u00e0 valeur contig\u00fce et sera ignor\u00e9e.
+jsf.config.verifyobjects.development_only=JSF1059 : AVERTISSEMENT !  La fonctionnalit\u00e9 com.sun.faces.verifyObjects est destin\u00e9e \u00e0 aider les d\u00e9veloppeurs \u00e0 se passer des outils.  Elle ne doit pas \u00eatre activ\u00e9e si vous utilisez un EDI, ou si cette application est d\u00e9ploy\u00e9e en production car cela risque d\u2019affecter la dur\u00e9e du d\u00e9marrage.
 jsf.config.verifyobjects.failures_detected=JSF1060 : La v\u00e9rification a provoqu\u00e9 une ou plusieurs d\u00e9faillances.  Des d\u00e9tails suivent ce message.
-jsf.lifecycle.duplicate_phase_listener_detected=JSF1061 : AVERTISSEMENT ! Une tentative d''ajout d''un listener de phase en double s''est produite\u00a0: {0}.  Ce double sera ignor\u00e9.
-jsf.core.taglib.viewtag.interweaving_failed=JSF1062 : AVERTISSEMENT !  L''objet r\u00e9ponse renvoy\u00e9 par la m\u00e9thode ExternalContext.getResponse() ne fournit pas de m\u00e9thode avec signature ''public void flushContentToWrappedResponse()''.  Cette m\u00e9thode est n\u00e9cessaire pour fournir l''inter-tramage du contenu dans un environnement JSP.  En son absence, le contenu ne s''affichera pas correctement.
-jsf.core.taglib.subviewtag.interweaving_failed_isbytes=JSF1062 : AVERTISSEMENT !  L''objet r\u00e9ponse renvoy\u00e9 par la m\u00e9thode ExternalContext.getResponse() ne fournit pas de m\u00e9thode avec signature ''public boolean isBytes()''. Cette m\u00e9thode est n\u00e9cessaire pour fournir l''inter-tramage du contenu dans un environnement JSP.  En son absence, le contenu ne s''affichera pas correctement.
-jsf.core.taglib.subviewtag.interweaving_failed_ischars=JSF1062 : AVERTISSEMENT !  L''objet r\u00e9ponse renvoy\u00e9 par la m\u00e9thode ExternalContext.getResponse() ne fournit pas de m\u00e9thode avec signature ''public boolean isChars()''. Cette m\u00e9thode est n\u00e9cessaire pour fournir l''inter-tramage du contenu dans un environnement JSP.  En son absence, le contenu ne s''affichera pas correctement.
-jsf.core.taglib.subviewtag.interweaving_failed_getchars=JSF1062 : AVERTISSEMENT !  L''objet r\u00e9ponse renvoy\u00e9 par la m\u00e9thode ExternalContext.getResponse() ne fournit pas de m\u00e9thode avec signature ''public char[] getChars()''. Cette m\u00e9thode est n\u00e9cessaire pour fournir l''inter-tramage du contenu dans un environnement JSP.  En son absence, le contenu ne s''affichera pas correctement.
-jsf.core.taglib.subviewtag.interweaving_failed_resetbuffers=JSF1062 : AVERTISSEMENT !  L''objet r\u00e9ponse renvoy\u00e9 par la m\u00e9thode ExternalContext.getResponse() ne fournit pas de m\u00e9thode avec signature ''public void resetBuffers''. Cette m\u00e9thode est n\u00e9cessaire pour fournir l''inter-tramage du contenu dans un environnement JSP.  En son absence, le contenu ne s''affichera pas correctement.
-jsf.context.extcontext.sessionmap.nonserializable=JSF1063 : AVERTISSEMENT ! D\u00e9finition d''une valeur d''attribut non-s\u00e9rialisable dans HttpSession (cl\u00e9 : {0}, classe de la valeur : {1}).
+jsf.lifecycle.duplicate_phase_listener_detected=JSF1061 : AVERTISSEMENT ! Une tentative d\u2019ajout d\u2019un listener de phase en double s\u2019est produite\u00a0: {0}.  Ce double sera ignor\u00e9.
+jsf.core.taglib.viewtag.interweaving_failed=JSF1062 : AVERTISSEMENT !  L\u2019objet r\u00e9ponse renvoy\u00e9 par la m\u00e9thode ExternalContext.getResponse() ne fournit pas de m\u00e9thode avec signature \u2019public void flushContentToWrappedResponse()\u2019.  Cette m\u00e9thode est n\u00e9cessaire pour fournir l\u2019inter-tramage du contenu dans un environnement JSP.  En son absence, le contenu ne s\u2019affichera pas correctement.
+jsf.core.taglib.subviewtag.interweaving_failed_isbytes=JSF1062 : AVERTISSEMENT !  L\u2019objet r\u00e9ponse renvoy\u00e9 par la m\u00e9thode ExternalContext.getResponse() ne fournit pas de m\u00e9thode avec signature \u2019public boolean isBytes()\u2019. Cette m\u00e9thode est n\u00e9cessaire pour fournir l\u2019inter-tramage du contenu dans un environnement JSP.  En son absence, le contenu ne s\u2019affichera pas correctement.
+jsf.core.taglib.subviewtag.interweaving_failed_ischars=JSF1062 : AVERTISSEMENT !  L\u2019objet r\u00e9ponse renvoy\u00e9 par la m\u00e9thode ExternalContext.getResponse() ne fournit pas de m\u00e9thode avec signature \u2019public boolean isChars()\u2019. Cette m\u00e9thode est n\u00e9cessaire pour fournir l\u2019inter-tramage du contenu dans un environnement JSP.  En son absence, le contenu ne s\u2019affichera pas correctement.
+jsf.core.taglib.subviewtag.interweaving_failed_getchars=JSF1062 : AVERTISSEMENT !  L\u2019objet r\u00e9ponse renvoy\u00e9 par la m\u00e9thode ExternalContext.getResponse() ne fournit pas de m\u00e9thode avec signature \u2019public char[] getChars()\u2019. Cette m\u00e9thode est n\u00e9cessaire pour fournir l\u2019inter-tramage du contenu dans un environnement JSP.  En son absence, le contenu ne s\u2019affichera pas correctement.
+jsf.core.taglib.subviewtag.interweaving_failed_resetbuffers=JSF1062 : AVERTISSEMENT !  L\u2019objet r\u00e9ponse renvoy\u00e9 par la m\u00e9thode ExternalContext.getResponse() ne fournit pas de m\u00e9thode avec signature \u2019public void resetBuffers\u2019. Cette m\u00e9thode est n\u00e9cessaire pour fournir l\u2019inter-tramage du contenu dans un environnement JSP.  En son absence, le contenu ne s\u2019affichera pas correctement.
+jsf.context.extcontext.sessionmap.nonserializable=JSF1063 : AVERTISSEMENT ! D\u00e9finition d\u2019une valeur d\u2019attribut non-s\u00e9rialisable dans HttpSession (cl\u00e9 : {0}, classe de la valeur : {1}).
 jsf.application.resource.unable_to_serve_from_library=JSF1064 : Impossible de localiser ou de servir une ressource, {0}, depuis la biblioth\u00e8que {1}.
 jsf.application.resource.unable_to_serve=JSF1064 : Impossible de localiser ou de servir une ressource, {0}.
 jsf.application.resource.unable_to_determine_resource_version=JSF1065 : Impossible de d\u00e9terminer la version de la ressource nomm\u00e9e {0}.
 jsf.application.resource.unable_to_create_compression_directory=JSF1065: Impossible de cr\u00e9er un r\u00e9pertoire {0} pour stocker la ressource compress\u00e9e.
-jsf.application.publish.event.base_type_mismatch=JSF1066 : L''objet source {0} n''est pas une instance du type de base fourni {1}.  La recherche d''\u00e9v\u00e9nements ne sera pas r\u00e9alis\u00e9e.
-jsf.config.web_resource_not_found=JSF1067 : La ressource {0} sp\u00e9cifi\u00e9e par l''option de configuration {1} est introuvable.  Cette ressource sera ignor\u00e9e.
-jsf.cannot_instantiate_component_error=JSF1068 : Impossible d''instancier un composant dont le type est {0}
-jsf.application.legacy_facelet_viewhandler_detected=JSF1069 : Le ViewHandler de Facelets JSF 2.0 a \u00e9t\u00e9 d\u00e9sactiv\u00e9 car un FaceletViewHandler plus ancien, {0}, a \u00e9t\u00e9 configur\u00e9 explicitement. Ce comportement n''est pas d\u00e9sir\u00e9. Retirez l''ancien FaceletViewHandler et sa biblioth\u00e8que de votre application.
+jsf.application.publish.event.base_type_mismatch=JSF1066 : L\u2019objet source {0} n\u2019est pas une instance du type de base fourni {1}.  La recherche d\u2019\u00e9v\u00e9nements ne sera pas r\u00e9alis\u00e9e.
+jsf.config.web_resource_not_found=JSF1067 : La ressource {0} sp\u00e9cifi\u00e9e par l\u2019option de configuration {1} est introuvable.  Cette ressource sera ignor\u00e9e.
+jsf.cannot_instantiate_component_error=JSF1068 : Impossible d\u2019instancier un composant dont le type est {0}
+jsf.application.legacy_facelet_viewhandler_detected=JSF1069 : Le ViewHandler de Facelets JSF 2.0 a \u00e9t\u00e9 d\u00e9sactiv\u00e9 car un FaceletViewHandler plus ancien, {0}, a \u00e9t\u00e9 configur\u00e9 explicitement. Ce comportement n\u2019est pas d\u00e9sir\u00e9. Retirez l\u2019ancien FaceletViewHandler et sa biblioth\u00e8que de votre application.
 jsf.navigation_invalid_query_string=JSF1070 : Cha\u00eene de requ\u00eate non valide dans le r\u00e9sultat de navigation {0}
 # the following three messages are duplicated in javax.faces.LogStrings.properties
 jsf.context.exception.handler.log_before=JSF1071 : {0} intercept\u00e9 durant le traitement beforePhase() de {1} : UIComponent-ClientId={2}, Message={3}
 jsf.context.exception.handler.log_after=JSF1072 : {0} intercept\u00e9 durant le traitement afterPhase() de {1} : UIComponent-ClientId={2}, Message={3}
 jsf.context.exception.handler.log=JSF1073 : {0} intercept\u00e9 durant le traitement de {1} : UIComponent-ClientId={2}, Message={3}
-jsf.managed.bean.duplicate=JSF1074 : Le bean g\u00e9r\u00e9 nomm\u00e9 ''{0}'' a d\u00e9j\u00e0 \u00e9t\u00e9 enregistr\u00e9.  Remplacement du type de classe du bean g\u00e9r\u00e9 existant {1} par {2}.
+jsf.managed.bean.duplicate=JSF1074 : Le bean g\u00e9r\u00e9 nomm\u00e9 \u00ab{0}\u00bb a d\u00e9j\u00e0 \u00e9t\u00e9 enregistr\u00e9.  Remplacement du type de classe du bean g\u00e9r\u00e9 existant {1} par {2}.
 jsf.resource.mime.type.configration.invalid=JSF1075 : Le type Mime {0} ne correspond pas au mod\u00e8le attendu {1}. Ignor\u00e9
 jsf.annotation.scanner.configuration.invalid=JSF1076 : [{0}] {1} : format de sp\u00e9cification jar non valide.  Format jar attendu :<jar name or *>:<package or *>.  Cette entr\u00e9e sera ignor\u00e9e.
 jsf.annotation.scanner.configuration.duplicate.wildcard=JSF1077 : [{0}] {1} : entr\u00e9e g\u00e9n\u00e9rique en double pour le nom jar d\u00e9tect\u00e9.  Cette entr\u00e9e sera ignor\u00e9e.
-jsf.configuration.web.xml.parse.failed=JSF1078 : Impossible de traiter le descripteur de d\u00e9ploiement pour le contexte ''{0}''.
+jsf.configuration.web.xml.parse.failed=JSF1078 : Impossible de traiter le descripteur de d\u00e9ploiement pour le contexte \u00ab{0}\u00bb.
 jsf.configuration.absolute.order.duplicate.document=JSF1079 : Plusieurs documents nomm\u00e9s {0} ont \u00e9t\u00e9 d\u00e9tect\u00e9s lors du traitement du tri absolu.  Seul le premier document nomm\u00e9 sera trait\u00e9.
-jsf.configuration.absolute.order.missing.document=JSF1080 : Impossible de localiser le document nomm\u00e9 ''{0}'' lors du tri absolu.
+jsf.configuration.absolute.order.missing.document=JSF1080 : Impossible de localiser le document nomm\u00e9 \u00ab{0}\u00bb lors du tri absolu.
 jsf.configuration.web.faces.config.contains.ordering=JSF1081 : /WEB-INF/faces-config.xml contient des \u00e9l\u00e9ments <ordering>.  Ces \u00e9l\u00e9ments seront ignor\u00e9s.
-jsf.configuration.illegal.eager.bean=JSF1082 : L''instanciation d''un bean travailleur est autoris\u00e9e uniquement pour les beans avec \u00e9tendue d''application.  Le bean g\u00e9r\u00e9 ''{0}'' est configur\u00e9 en tant que travailleur, mais l''\u00e9tendue ''{1}'' n''est pas valide.
-jsf.composite.component.insertchildren.missing.template=JSF1083 : Impossible de localiser un mod\u00e8le de composant composite propri\u00e9taire pour le gestionnaire insertChildren \u00e0 l''emplacement {0}"
-jsf.composite.component.insertfacet.missing.template=JSF1084 : Impossible de localiser un mod\u00e8le de composant composite propri\u00e9taire pour le gestionnaire insertFacet \u00e0 l''emplacement {0}"
-jsf.managed.bean.custom.scope.eval.null=JSF1085 : L''\u00e9tendue personnalis\u00e9e ''{0}'' a renvoy\u00e9 la valeur null.  Le bean g\u00e9r\u00e9 n''a pas \u00e9t\u00e9 envoy\u00e9 \u00e0 l''\u00e9tendue.
-jsf.managed.bean.custom.scope.eval.null.existence=JSF1086 : L''\u00e9tendue personnalis\u00e9e ''{0}'' a renvoy\u00e9 la valeur null.  Impossible de savoir si un bean g\u00e9r\u00e9 est pr\u00e9sent
-jsf.facelets.error.page.response.committed=JSF1087 : Impossible de g\u00e9n\u00e9rer une page d''erreur Facelets car la r\u00e9ponse a d\u00e9j\u00e0 \u00e9t\u00e9 valid\u00e9e.
-jsf.state.server.cannot.parse.int.option=JSF1088 : Erreur lors de l''analyse du param\u00e8tre d''initialisation du contexte {0}.  La valeur par d\u00e9faut {1} sera utilis\u00e9e \u00e0 sa place.
+jsf.configuration.illegal.eager.bean=JSF1082 : L\u2019instanciation d\u2019un bean travailleur est autoris\u00e9e uniquement pour les beans avec \u00e9tendue d\u2019application.  Le bean g\u00e9r\u00e9 \u00ab{0}\u00bb est configur\u00e9 en tant que travailleur, mais l\u2019\u00e9tendue \u00ab{1}\u00bb n\u2019est pas valide.
+jsf.composite.component.insertchildren.missing.template=JSF1083 : Impossible de localiser un mod\u00e8le de composant composite propri\u00e9taire pour le gestionnaire insertChildren \u00e0 l\u2019emplacement {0}"
+jsf.composite.component.insertfacet.missing.template=JSF1084 : Impossible de localiser un mod\u00e8le de composant composite propri\u00e9taire pour le gestionnaire insertFacet \u00e0 l\u2019emplacement {0}"
+jsf.managed.bean.custom.scope.eval.null=JSF1085 : L\u2019\u00e9tendue personnalis\u00e9e \u00ab{0}\u00bb a renvoy\u00e9 la valeur null.  Le bean g\u00e9r\u00e9 n\u2019a pas \u00e9t\u00e9 envoy\u00e9 \u00e0 l\u2019\u00e9tendue.
+jsf.managed.bean.custom.scope.eval.null.existence=JSF1086 : L\u2019\u00e9tendue personnalis\u00e9e \u00ab{0}\u00bb a renvoy\u00e9 la valeur null.  Impossible de savoir si un bean g\u00e9r\u00e9 est pr\u00e9sent
+jsf.facelets.error.page.response.committed=JSF1087 : Impossible de g\u00e9n\u00e9rer une page d\u2019erreur Facelets car la r\u00e9ponse a d\u00e9j\u00e0 \u00e9t\u00e9 valid\u00e9e.
+jsf.state.server.cannot.parse.int.option=JSF1088 : Erreur lors de l\u2019analyse du param\u00e8tre d\u2019initialisation du contexte {0}.  La valeur par d\u00e9faut {1} sera utilis\u00e9e \u00e0 sa place.
 jsf.outcometarget.invalid.navigationhandler.type=JSF1089 : Le NavigationHandler doit \u00eatre une instance du ConfigurableNavigationHandler pour utiliser un composant UIOutputTarget {0}.
-jsf.outcometarget.navigation.case.not.resolved=JSF1090 : Le cas de navigation n''est pas r\u00e9solu pour le composant {0}.
-jsf.externalcontext.no.mime.type.found=JSF1091 : Aucun type mime d\u00e9tect\u00e9 pour le fichier {0}.  Pour r\u00e9soudre ce probl\u00e8me, ajoutez un mappage mime-type au fichier web.xml de l''application.
-jsf.config.legacy.facelet.warning=JSF1029 : La version de l''application est 2.0 (soit explicitement par la version du fichier /WEB-INF/faces-config.xml ou par l''absence de fichier /WEB-INF/faces-confg.xml). Toutefois, la classe ''{0}'' d\u00e9pend d''une classe de facelet h\u00e9rit\u00e9e.  L''artefact de facelet repr\u00e9sent\u00e9 par cette classe ne sera pas enregistr\u00e9.
-jsf.compcomp.unecessary.targets.attribute=JSF1092: {0} : Unnecessary specification of the ''targets'' attribute for composite attribute ''{1}''.  The ''targets'' attribute is only necessary when the composite attribute is named ''action'', ''actionListener'', ''validator'', or ''valueChangeListener''.
+jsf.outcometarget.navigation.case.not.resolved=JSF1090 : Le cas de navigation n\u2019est pas r\u00e9solu pour le composant {0}.
+jsf.externalcontext.no.mime.type.found=JSF1091 : Aucun type mime d\u00e9tect\u00e9 pour le fichier {0}.  Pour r\u00e9soudre ce probl\u00e8me, ajoutez un mappage mime-type au fichier web.xml de l\u2019application.
+jsf.config.legacy.facelet.warning=JSF1029 : La version de l\u2019application est 2.0 (soit explicitement par la version du fichier /WEB-INF/faces-config.xml ou par l\u2019absence de fichier /WEB-INF/faces-confg.xml). Toutefois, la classe \u00ab{0}\u00bb d\u00e9pend d\u2019une classe de facelet h\u00e9rit\u00e9e.  L\u2019artefact de facelet repr\u00e9sent\u00e9 par cette classe ne sera pas enregistr\u00e9.
+jsf.compcomp.unecessary.targets.attribute=JSF1092: {0} : Unnecessary specification of the \u2019targets\u2019 attribute for composite attribute \u00ab{1}\u00bb.  The \u2019targets\u2019 attribute is only necessary when the composite attribute is named \u2019action\u2019, \u2019actionListener\u2019, \u2019validator\u2019, or \u2019valueChangeListener\u2019.
 jsf.compcomp.binding.eval.non.compcomp=JSF1093: {0} : UIComponent returned by expression evaluation is not a valid composite component.  Value will be ignored.
 jsf.externalcontext.flash.bad.cookie=JSF1094: Could not decode flash data from incoming cookie value {0}.  Processing will continue, but the flash is unavailable for this request.
 jsf.externalcontext.flash.response.already.committed=JSF1095: The response was already committed by the time we tried to set the outgoing cookie for the flash.  Any values stored to the flash will not be available on the next request.
 jsf.metadata.uiviewroot.unavailable=JSF1096: UIViewRoot unavailable at the time view metadata was being processed.  Metadata will be unavailable.
 jsf.application.resource.invalid_if_modified_since_header=JSF1097: Unable to parse date sent by User Agent for If-Modified-Since header, {0}.
+jsf.context.partial_visit_context_unvisited_children=JSF1098: The following clientIds were not visited after a partial traversal: {0}.  This is a waste of processor time and could be due to an error in the VDL page.
+jsf.lifecycle.invalid.referer=JSF1099: Referer [sic] header value {0} does not appear to be a protected view. Preventing display of viewId {1}
+jsf.lifecycle.invalid.origin=JSF1100: Origin [sic] header value {0} does not appear to be a protected view. Preventing display of viewId {1}
diff --git a/jsf-ri/src/main/resources/com/sun/faces/LogStrings_ja.properties b/jsf-ri/src/main/resources/com/sun/faces/LogStrings_ja.properties
index 7310f74..4d49915 100644
--- a/jsf-ri/src/main/resources/com/sun/faces/LogStrings_ja.properties
+++ b/jsf-ri/src/main/resources/com/sun/faces/LogStrings_ja.properties
@@ -1,27 +1,31 @@
 #
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 #
-# Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+# Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
 #
 # The contents of this file are subject to the terms of either the GNU
 # General Public License Version 2 only ("GPL") or the Common Development
 # and Distribution License("CDDL") (collectively, the "License").  You
-# may not use this file except in compliance with the License. You can obtain
-# a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
-# or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
 # language governing permissions and limitations under the License.
 #
 # When distributing the software, include this License Header Notice in each
-# file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
-# Sun designates this particular file as subject to the "Classpath" exception
-# as provided by Sun in the GPL Version 2 section of the License file that
-# accompanied this code.  If applicable, add the following below the License
-# Header, with the fields enclosed by brackets [] replaced by your own
-# identifying information: "Portions Copyrighted [year]
-# [name of copyright owner]"
+# file and include the License file at packager/legal/LICENSE.txt.
 #
-# Contributor(s):
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
 #
+# Contributor(s):
 # If you wish your version of this file to be governed by only the CDDL or
 # only the GPL Version 2, indicate your decision by adding "[Contributor]
 # elects to include this software in this distribution under the [CDDL or GPL
@@ -59,7 +63,7 @@ jsf.config.webconfig.boolconfiginfo.enabled=JSF1021: [{0}] \u69cb\u6210\u30aa\u3
 jsf.config.webconfig.boolconfiginfo.disabled=JSF1021: [{0}] \u69cb\u6210\u30aa\u30d7\u30b7\u30e7\u30f3 ''{1}'' - \u7121\u52b9
 jsf.config.webconfig.boolconfig.invalidvalue=JSF1022: [{0}] \u69cb\u6210\u30aa\u30d7\u30b7\u30e7\u30f3 ''{2}'' \u306b\u5bfe\u3057\u3066\u5024 ''{1}'' \u306f\u7121\u52b9\u3067\u3059\u3002\u6709\u52b9\u306a\u5024\u306f ''{3}'' \u3067\u3059\u3002\u30c7\u30d5\u30a9\u30eb\u30c8\u306e ''{4}'' \u304c\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002
 jsf.config.webconfig.enventryinfo=JSF1023: [{0}] \u74b0\u5883\u30a8\u30f3\u30c8\u30ea ''{1}'' \u304c\u51e6\u7406\u3055\u308c\u307e\u3057\u305f\u3002\u5024\u306f ''{2}'' \u3067\u3059
-jsf.config.webconfig.enventry.clientencrypt=JSF1024: [{0}] \u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u72b6\u614b\u306e\u6697\u53f7\u5316: \u6709\u52b9
+jsf.config.webconfig.enventry.clientencrypt=JSF1024: \u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u72b6\u614b\u306e\u6697\u53f7\u5316: \u7121\u52b9
 jsf.config.webconfig.param.deprecated=JSF1025: [{0}] \u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u521d\u671f\u5316\u30d1\u30e9\u30e1\u30fc\u30bf ''{1}'' \u306f\u63a8\u5968\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002\u30aa\u30d7\u30b7\u30e7\u30f3\u306f\u69cb\u6210\u3055\u308c\u307e\u3059\u304c\u3001\u4eca\u5f8c\u306f ''{2}'' \u3092\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044\u3002
 jsf.config.webconfig.param.deprecated.no_replacement=JSF1025: [{0}] \u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u521d\u671f\u5316\u30d1\u30e9\u30e1\u30fc\u30bf ''{1}'' \u306f\u975e\u63a8\u5968\u3067\u3001\u52b9\u679c\u304c\u3042\u308a\u307e\u305b\u3093\u3002  
 jsf.config.webconfig.option.notconfigured=JSF1026: [{0}] \u69cb\u6210\u30aa\u30d7\u30b7\u30e7\u30f3 ''{1}'' \u304c\u69cb\u6210\u3055\u308c\u3066\u3044\u307e\u305b\u3093
@@ -143,3 +147,6 @@ jsf.externalcontext.flash.bad.cookie=JSF1094: Could not decode flash data from i
 jsf.externalcontext.flash.response.already.committed=JSF1095: The response was already committed by the time we tried to set the outgoing cookie for the flash.  Any values stored to the flash will not be available on the next request.
 jsf.metadata.uiviewroot.unavailable=JSF1096: UIViewRoot unavailable at the time view metadata was being processed.  Metadata will be unavailable.
 jsf.application.resource.invalid_if_modified_since_header=JSF1097: Unable to parse date sent by User Agent for If-Modified-Since header, {0}.
+jsf.context.partial_visit_context_unvisited_children=JSF1098: The following clientIds were not visited after a partial traversal: {0}.  This is a waste of processor time and could be due to an error in the VDL page.
+jsf.lifecycle.invalid.referer=JSF1099: Referer [sic] header value {0} does not appear to be a protected view. Preventing display of viewId {1}
+jsf.lifecycle.invalid.origin=JSF1100: Origin [sic] header value {0} does not appear to be a protected view. Preventing display of viewId {1}
diff --git a/jsf-ri/src/main/resources/com/sun/faces/LogStrings_ko.properties b/jsf-ri/src/main/resources/com/sun/faces/LogStrings_ko.properties
index c1b05b0..c67bb29 100644
--- a/jsf-ri/src/main/resources/com/sun/faces/LogStrings_ko.properties
+++ b/jsf-ri/src/main/resources/com/sun/faces/LogStrings_ko.properties
@@ -1,27 +1,31 @@
 #
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 #
-# Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+# Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
 #
 # The contents of this file are subject to the terms of either the GNU
 # General Public License Version 2 only ("GPL") or the Common Development
 # and Distribution License("CDDL") (collectively, the "License").  You
-# may not use this file except in compliance with the License. You can obtain
-# a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
-# or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
 # language governing permissions and limitations under the License.
 #
 # When distributing the software, include this License Header Notice in each
-# file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
-# Sun designates this particular file as subject to the "Classpath" exception
-# as provided by Sun in the GPL Version 2 section of the License file that
-# accompanied this code.  If applicable, add the following below the License
-# Header, with the fields enclosed by brackets [] replaced by your own
-# identifying information: "Portions Copyrighted [year]
-# [name of copyright owner]"
+# file and include the License file at packager/legal/LICENSE.txt.
 #
-# Contributor(s):
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
 #
+# Contributor(s):
 # If you wish your version of this file to be governed by only the CDDL or
 # only the GPL Version 2, indicate your decision by adding "[Contributor]
 # elects to include this software in this distribution under the [CDDL or GPL
@@ -59,7 +63,7 @@ jsf.config.webconfig.boolconfiginfo.enabled=JSF1021: [{0}] \uad6c\uc131 \uc635\u
 jsf.config.webconfig.boolconfiginfo.disabled=JSF1021: [{0}] \uad6c\uc131 \uc635\uc158 ''{1}'' - \ube44\ud65c\uc131\ud654
 jsf.config.webconfig.boolconfig.invalidvalue=JSF1022: [{0}] \uad6c\uc131 \uc635\uc158 ''{2}''\uc758 ''{1}'' \uac12\uc774 \uc798\ubabb\ub418\uc5c8\uc2b5\ub2c8\ub2e4.  \uc720\ud6a8\ud55c \uac12\uc740 ''{3}''\uc785\ub2c8\ub2e4.  \uae30\ubcf8\uac12 ''{4}''(\uc73c)\ub85c \ub2e4\uc2dc \uc9c0\uc815\ub429\ub2c8\ub2e4.
 jsf.config.webconfig.enventryinfo=JSF1023: [{0}] \ud658\uacbd \ud56d\ubaa9 ''{1}''\uc774(\uac00) \ucc98\ub9ac\ub418\uc5c8\uc2b5\ub2c8\ub2e4. \uac12\uc740 ''{2}''\uc785\ub2c8\ub2e4.
-jsf.config.webconfig.enventry.clientencrypt=JSF1024: [{0}] \ud074\ub77c\uc774\uc5b8\ud2b8 \uc0c1\ud0dc \uc554\ud638\ud654: \ud65c\uc131\ud654
+jsf.config.webconfig.enventry.clientencrypt=JSF1024: \ud074\ub77c\uc774\uc5b8\ud2b8 \uc0c1\ud0dc \uc554\ud638\ud654: \ube44\ud65c\uc131\ud654
 jsf.config.webconfig.param.deprecated=JSF1025: [{0}] \ucee8\ud14d\uc2a4\ud2b8 \ucd08\uae30\ud654 \ub9e4\uac1c \ubcc0\uc218 ''{1}''\uc740(\ub294) \ub354 \uc774\uc0c1 \uc0ac\uc6a9\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.  \uc635\uc158\uc774 \uacc4\uc18d \uad6c\uc131\ub418\uc9c0\ub9cc \uc774\ud6c4\uc5d0\ub294 ''{2}''\uc744(\ub97c) \uc0ac\uc6a9\ud558\uc2ed\uc2dc\uc624.
 jsf.config.webconfig.param.deprecated.no_replacement=JSF1025: [{0}] \ucee8\ud14d\uc2a4\ud2b8 \ucd08\uae30\ud654 \ub9e4\uac1c \ubcc0\uc218 ''{1}''\uc740(\ub294) \ub354 \uc774\uc0c1 \uc0ac\uc6a9\ud558\uc9c0 \uc54a\uc73c\ubbc0\ub85c \uc544\ubb34\ub7f0 \uc601\ud5a5\uc744 \uc8fc\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.  
 jsf.config.webconfig.option.notconfigured=JSF1026: [{0}] \uad6c\uc131 \uc635\uc158 ''{1}''\uc774(\uac00) \uad6c\uc131\ub418\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4.
@@ -143,3 +147,6 @@ jsf.externalcontext.flash.bad.cookie=JSF1094: Could not decode flash data from i
 jsf.externalcontext.flash.response.already.committed=JSF1095: The response was already committed by the time we tried to set the outgoing cookie for the flash.  Any values stored to the flash will not be available on the next request.
 jsf.metadata.uiviewroot.unavailable=JSF1096: UIViewRoot unavailable at the time view metadata was being processed.  Metadata will be unavailable.
 jsf.application.resource.invalid_if_modified_since_header=JSF1097: Unable to parse date sent by User Agent for If-Modified-Since header, {0}.
+jsf.context.partial_visit_context_unvisited_children=JSF1098: The following clientIds were not visited after a partial traversal: {0}.  This is a waste of processor time and could be due to an error in the VDL page.
+jsf.lifecycle.invalid.referer=JSF1099: Referer [sic] header value {0} does not appear to be a protected view. Preventing display of viewId {1}
+jsf.lifecycle.invalid.origin=JSF1100: Origin [sic] header value {0} does not appear to be a protected view. Preventing display of viewId {1}
diff --git a/jsf-ri/src/main/resources/com/sun/faces/LogStrings_pt_BR.properties b/jsf-ri/src/main/resources/com/sun/faces/LogStrings_pt_BR.properties
index 09a2068..7deedcf 100644
--- a/jsf-ri/src/main/resources/com/sun/faces/LogStrings_pt_BR.properties
+++ b/jsf-ri/src/main/resources/com/sun/faces/LogStrings_pt_BR.properties
@@ -1,27 +1,31 @@
 #
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 #
-# Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+# Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
 #
 # The contents of this file are subject to the terms of either the GNU
 # General Public License Version 2 only ("GPL") or the Common Development
 # and Distribution License("CDDL") (collectively, the "License").  You
-# may not use this file except in compliance with the License. You can obtain
-# a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
-# or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
 # language governing permissions and limitations under the License.
 #
 # When distributing the software, include this License Header Notice in each
-# file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
-# Sun designates this particular file as subject to the "Classpath" exception
-# as provided by Sun in the GPL Version 2 section of the License file that
-# accompanied this code.  If applicable, add the following below the License
-# Header, with the fields enclosed by brackets [] replaced by your own
-# identifying information: "Portions Copyrighted [year]
-# [name of copyright owner]"
+# file and include the License file at packager/legal/LICENSE.txt.
 #
-# Contributor(s):
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
 #
+# Contributor(s):
 # If you wish your version of this file to be governed by only the CDDL or
 # only the GPL Version 2, indicate your decision by adding "[Contributor]
 # elects to include this software in this distribution under the [CDDL or GPL
@@ -59,7 +63,7 @@ jsf.config.webconfig.boolconfiginfo.enabled=JSF1021: [{0}] Op\u00e7\u00e3o de co
 jsf.config.webconfig.boolconfiginfo.disabled=JSF1021: [{0}] Op\u00e7\u00e3o de configura\u00e7\u00e3o ''{1}'' - DESATIVADO
 jsf.config.webconfig.boolconfig.invalidvalue=JSF1022: [{0}] Valor inv\u00e1lido ''{1}'' para a op\u00e7\u00e3o de configura\u00e7\u00e3o ''{2}''.  Os valores v\u00e1lidos s\u00e3o ''{3}''.  Falha ao redefinir para o padr\u00e3o de ''{4}''.
 jsf.config.webconfig.enventryinfo=JSF1023: [{0}] Entrada do ambiente ''{1}'' processada, valor ''{2}''
-jsf.config.webconfig.enventry.clientencrypt=JSF1024: [{0}] Criptografia de estado de cliente: ATIVADA
+jsf.config.webconfig.enventry.clientencrypt=JSF1024: Criptografia de estado de cliente: DESATIVADO
 jsf.config.webconfig.param.deprecated=JSF1025: [{0}] O par\u00e2metro de inicializa\u00e7\u00e3o de contexto ''{1}'' est\u00e1 desaprovado.  A op\u00e7\u00e3o continuar\u00e1 configurada, mas use ''{2}'' no futuro.
 jsf.config.webconfig.param.deprecated.no_replacement=JSF1025: [{0}] O par\u00e2metro de iniciali\u00e7\u00e3o de contexto ''{1}'' est\u00e1 desaprovado e n\u00e3o ter\u00e1 efeito.  
 jsf.config.webconfig.option.notconfigured=JSF1026: [{0}] A op\u00e7\u00e3o de configura\u00e7\u00e3o ''{1}'' n\u00e3o est\u00e1 configurada
@@ -143,3 +147,6 @@ jsf.externalcontext.flash.bad.cookie=JSF1094: Could not decode flash data from i
 jsf.externalcontext.flash.response.already.committed=JSF1095: The response was already committed by the time we tried to set the outgoing cookie for the flash.  Any values stored to the flash will not be available on the next request.
 jsf.metadata.uiviewroot.unavailable=JSF1096: UIViewRoot unavailable at the time view metadata was being processed.  Metadata will be unavailable.
 jsf.application.resource.invalid_if_modified_since_header=JSF1097: Unable to parse date sent by User Agent for If-Modified-Since header, {0}.
+jsf.context.partial_visit_context_unvisited_children=JSF1098: The following clientIds were not visited after a partial traversal: {0}.  This is a waste of processor time and could be due to an error in the VDL page.
+jsf.lifecycle.invalid.referer=JSF1099: Referer [sic] header value {0} does not appear to be a protected view. Preventing display of viewId {1}
+jsf.lifecycle.invalid.origin=JSF1100: Origin [sic] header value {0} does not appear to be a protected view. Preventing display of viewId {1}
diff --git a/jsf-ri/src/main/resources/com/sun/faces/LogStrings_zh_CN.properties b/jsf-ri/src/main/resources/com/sun/faces/LogStrings_zh_CN.properties
index c46abdd..71272d8 100644
--- a/jsf-ri/src/main/resources/com/sun/faces/LogStrings_zh_CN.properties
+++ b/jsf-ri/src/main/resources/com/sun/faces/LogStrings_zh_CN.properties
@@ -1,27 +1,31 @@
 #
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 #
-# Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+# Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
 #
 # The contents of this file are subject to the terms of either the GNU
 # General Public License Version 2 only ("GPL") or the Common Development
 # and Distribution License("CDDL") (collectively, the "License").  You
-# may not use this file except in compliance with the License. You can obtain
-# a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
-# or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
 # language governing permissions and limitations under the License.
 #
 # When distributing the software, include this License Header Notice in each
-# file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
-# Sun designates this particular file as subject to the "Classpath" exception
-# as provided by Sun in the GPL Version 2 section of the License file that
-# accompanied this code.  If applicable, add the following below the License
-# Header, with the fields enclosed by brackets [] replaced by your own
-# identifying information: "Portions Copyrighted [year]
-# [name of copyright owner]"
+# file and include the License file at packager/legal/LICENSE.txt.
 #
-# Contributor(s):
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
 #
+# Contributor(s):
 # If you wish your version of this file to be governed by only the CDDL or
 # only the GPL Version 2, indicate your decision by adding "[Contributor]
 # elects to include this software in this distribution under the [CDDL or GPL
@@ -59,7 +63,7 @@ jsf.config.webconfig.boolconfiginfo.enabled=JSF1021\uff1a[{0}] \u914d\u7f6e\u900
 jsf.config.webconfig.boolconfiginfo.disabled=JSF1021\uff1a[{0}] \u914d\u7f6e\u9009\u9879 ''{1}'' - \u5df2\u7981\u7528
 jsf.config.webconfig.boolconfig.invalidvalue=JSF1022\uff1a[{0}] \u914d\u7f6e\u9009\u9879 ''{2}'' \u7684\u503c ''{1}'' \u65e0\u6548\u3002\u6709\u6548\u503c\u4e3a ''{3}''\u3002\u6062\u590d\u4e3a\u9ed8\u8ba4\u503c ''{4}''\u3002
 jsf.config.webconfig.enventryinfo=JSF1023\uff1a[{0}] \u73af\u5883\u6761\u76ee ''{1}'' \u5df2\u5904\u7406\uff0c\u503c\u4e3a ''{2}''
-jsf.config.webconfig.enventry.clientencrypt=JSF1024\uff1a[{0}] \u5ba2\u6237\u673a\u72b6\u6001\u52a0\u5bc6\uff1a\u5df2\u542f\u7528
+jsf.config.webconfig.enventry.clientencrypt=JSF1024\uff1a \u5ba2\u6237\u673a\u72b6\u6001\u52a0\u5bc6\uff1a\u5df2\u7981\u7528
 jsf.config.webconfig.param.deprecated=JSF1025\uff1a[{0}] \u4e0a\u4e0b\u6587\u521d\u59cb\u5316\u53c2\u6570 ''{1}'' \u5df2\u8fc7\u65f6\u3002\u4ecd\u5c06\u914d\u7f6e\u8be5\u9009\u9879\uff0c\u4f46\u4ee5\u540e\u8bf7\u4f7f\u7528 ''{2}''\u3002
 jsf.config.webconfig.param.deprecated.no_replacement=JSF1025\uff1a[{0}] \u4e0a\u4e0b\u6587\u521d\u59cb\u5316\u53c2\u6570 ''{1}'' \u5df2\u8fc7\u65f6\uff0c\u4e0d\u8d77\u4f5c\u7528\u3002  
 jsf.config.webconfig.option.notconfigured=JSF1026\uff1a[{0}] \u914d\u7f6e\u9009\u9879 ''{1}'' \u672a\u914d\u7f6e
@@ -143,3 +147,6 @@ jsf.externalcontext.flash.bad.cookie=JSF1094: Could not decode flash data from i
 jsf.externalcontext.flash.response.already.committed=JSF1095: The response was already committed by the time we tried to set the outgoing cookie for the flash.  Any values stored to the flash will not be available on the next request.
 jsf.metadata.uiviewroot.unavailable=JSF1096: UIViewRoot unavailable at the time view metadata was being processed.  Metadata will be unavailable.
 jsf.application.resource.invalid_if_modified_since_header=JSF1097: Unable to parse date sent by User Agent for If-Modified-Since header, {0}.
+jsf.context.partial_visit_context_unvisited_children=JSF1098: The following clientIds were not visited after a partial traversal: {0}.  This is a waste of processor time and could be due to an error in the VDL page.
+jsf.lifecycle.invalid.referer=JSF1099: Referer [sic] header value {0} does not appear to be a protected view. Preventing display of viewId {1}
+jsf.lifecycle.invalid.origin=JSF1100: Origin [sic] header value {0} does not appear to be a protected view. Preventing display of viewId {1}
diff --git a/jsf-ri/src/main/resources/com/sun/faces/LogStrings_zh_HK.properties b/jsf-ri/src/main/resources/com/sun/faces/LogStrings_zh_HK.properties
new file mode 100644
index 0000000..f435e96
--- /dev/null
+++ b/jsf-ri/src/main/resources/com/sun/faces/LogStrings_zh_HK.properties
@@ -0,0 +1,152 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
+jsf.managed_bean_creation_error=JSF1001\uff1a\u7121\u6cd5\u5efa\u7acb Managedbean {0}\u3002
+jsf.cannot_instantiate_validator_error=JSF1005\uff1a\u7121\u6cd5\u5be6\u4f8b\u5316\u985e\u578b {0} \u7684\u9a57\u8b49\u7a0b\u5f0f
+jsf.cannot_instantiate_converter_error=JSF1006\uff1a\u7121\u6cd5\u5be6\u4f8b\u5316\u985e\u578b {0} \u7684\u8f49\u63db\u5668
+jsf.duplicate_component_id_error=JSF1007\uff1a\u5728\u6aa2\u8996\u4e2d\u627e\u5230\u91cd\u8907\u7684\u5143\u4ef6 ID {0}\u3002
+jsf.redirect_failed_error=JSF1008\uff1a\u91cd\u65b0\u5c0e\u5411\u81f3\u8def\u5f91 {0} \u5931\u6557
+jsf.faces_servlet_mapping_cannot_be_determined_error=JSF1009\uff1a\u7121\u6cd5\u78ba\u5b9a Servlet \u8def\u5f91 {0} \u7684 FaceServlet \u5c0d\u6620\u3002
+jsf.illegal_view_id_error=JSF1010\uff1a\u975e\u6cd5\u7684\u6aa2\u8996 ID {0}\u3002ID \u5fc5\u9808\u4ee5\u300c/\u300d\u958b\u982d
+jsf.util.no.adapter.ctor.available=JSF1016\uff1a\u76ee\u6a19\u985e\u5225\u300c{0}\u300d\u4e0d\u5177\u6709\u914d\u63a5\u5361\u5efa\u69cb\u5b50\u4ee5\u63a5\u53d7\u300c{1}\u300d\uff0c\u6240\u4ee5\u6539\u70ba\u5efa\u7acb\u65b0\u7684\u5be6\u4f8b\u3002
+# core tags
+jsf.core.tags.eval_result_not_expected_type=JSF1011\uff1a\u5c6c\u6027\u300c{0}\u300d\u8868\u793a\u5f0f\u7684\u8a66\u7528\u5f97\u5230\u672a\u9810\u671f\u7684\u985e\u578b\u3002\u9810\u671f\u70ba {1}\uff0c\u4f46\u6536\u5230 {2}\u3002
+jsf.util_no_annotation_processed=JSF1014\uff1a\u7121\u6cd5\u8f09\u5165\u9644\u8a3b\u985e\u5225\u300c{0}\u300d\u3002\u56e0\u6b64\uff0c\u5c07\u4e0d\u6703\u8655\u7406\u6b64\u9644\u8a3b\u3002
+jsf.config.listener.version=\u6b63\u5728\u521d\u59cb\u5316\u74b0\u5883\u300c{0}\u300d\u7684 Mojarra |version.string|
+jsf.config.listener.version.complete=\u5df2\u5b8c\u6210\u521d\u59cb\u5316\u74b0\u5883\u300c{0}\u300d\u7684 Mojarra (|version.string|)
+jsf.config.listener.predestroy.error=JSF1017\uff1a\u5728\u7bc4\u570d\u300c{2}\u300d\u4e2d\u8655\u7406 Bean\u300c{1}\u300d\u7684 PreDestroy \u9644\u8a3b\u6642\u4e1f\u51fa\u300c{0}\u300d\u3002\u8a0a\u606f: {3}
+jsf.viewhandler.requestpath.recursion=JSF1015\uff1a\u8acb\u6c42\u8def\u5f91\u300c{0}\u300d\u4ee5\u4e00\u500b\u6216\u591a\u500b FacesServlet \u524d\u7db4\u8def\u5f91\u5c0d\u6620\u300c{1}\u300d\u958b\u982d\u3002
+jsf.non_displayed_message=\u8b66\u544a\uff1aFacesMessage \u5df2\u6392\u5165\u4f47\u5217\uff0c\u4f46\u53ef\u80fd\u5c1a\u672a\u986f\u793a\u3002{0}
+
+jsf.config.webconfig.configinfo=JSF1018\uff1a[{0}] \u914d\u7f6e\u9078\u9805\u300c{1}\u300d\u8a2d\u70ba\u300c{2}\u300d
+jsf.config.webconfig.configinfo.reset=JSF1019\uff1a[{0}] \u914d\u7f6e\u9078\u9805\u300c{1}\u300d\u91cd\u8a2d\u70ba\u300c{2}\u300d
+jsf.config.webconfig.configinfo.reset.enabled=JSF1020\uff1a[{0}] \u914d\u7f6e\u9078\u9805\u300c{1}\u300d\u91cd\u8a2d\u70ba\u5df2\u555f\u7528
+jsf.config.webconfig.configinfo.reset.disabled=JSF1020\uff1a[{0}] \u914d\u7f6e\u9078\u9805\u300c{1}\u300d\u91cd\u8a2d\u70ba\u5df2\u505c\u7528
+jsf.config.webconfig.boolconfiginfo.enabled=JSF1021\uff1a[{0}] \u914d\u7f6e\u9078\u9805\u300c{1}\u300d- \u5df2\u555f\u7528
+jsf.config.webconfig.boolconfiginfo.disabled=JSF1021\uff1a[{0}] \u914d\u7f6e\u9078\u9805\u300c{1}\u300d- \u5df2\u505c\u7528
+jsf.config.webconfig.boolconfig.invalidvalue=JSF1022\uff1a[{0}] \u914d\u7f6e\u9078\u9805\u300c{2}\u300d\u7684\u503c\u300c{1}\u300d\u7121\u6548\u3002\u6709\u6548\u503c\u70ba\u300c{3}\u300d\u3002\u8f49\u81f3\u5099\u7528\u9810\u8a2d\u503c\u300c{4}\u300d\u3002
+jsf.config.webconfig.enventryinfo=JSF1023\uff1a[{0}] \u74b0\u5883\u9805\u76ee\u300c{1}\u300d\u5df2\u8655\u7406\uff0c\u503c\u300c{2}\u300d
+jsf.config.webconfig.enventry.clientencrypt=JSF1024\uff1a \u7528\u6236\u7aef\u72c0\u614b\u52a0\u5bc6\uff1a\u5df2\u505c\u7528
+jsf.config.webconfig.param.deprecated=JSF1025\uff1a[{0}] \u74b0\u5883\u521d\u59cb\u5316\u53c3\u6578\u300c{1}\u300d\u5df2\u505c\u7528\u3002\u4ecd\u6703\u914d\u7f6e\u6b64\u9078\u9805\uff0c\u4f46\u5c07\u4f86\u8acb\u6539\u7528\u300c{2}\u300d\u3002
+jsf.config.webconfig.param.deprecated.no_replacement=JSF1025\uff1a[{0}] \u74b0\u5883\u521d\u59cb\u5316\u53c3\u6578\u300c{1}\u300d\u5df2\u505c\u7528\uff0c\u5c07\u7121\u4f5c\u7528\u3002  
+jsf.config.webconfig.option.notconfigured=JSF1026\uff1a[{0}] \u914d\u7f6e\u9078\u9805\u300c{1}\u300d\u672a\u914d\u7f6e
+jsf.lifecycle.initphaselistener.resolvers_not_registered=JSF1027\uff1a[{0}] JSF \u7684 ELResolvers \u672a\u5728 JSP \u5bb9\u5668\u4e2d\u8a3b\u518a\u3002
+jsf.lifecycle.initphaselistener.resolvers_registered=JSF1028\uff1a[{0}] JSF \u7684 ELResolvers \u5df2\u5728 JSP \u5bb9\u5668\u4e2d\u6210\u529f\u8a3b\u518a\u3002
+jsf.spi.injection.provider_not_implemented=JSF1029\uff1a\u6307\u5b9a\u7684 InjectionProvider \u5be6\u4f5c\u300c{0}\u300d\u672a\u5be6\u4f5c InjectionProvider \u4ecb\u9762\u3002 
+jsf.spi.injection.provider_not_found=JSF1030\uff1a\u7121\u6cd5\u8f09\u5165\u6307\u5b9a\u7684 InjectionProvider \u5be6\u4f5c\u300c{0}\u300d\u3002
+jsf.spi.injection.provider_cannot_instantiate=JSF1031\uff1a\u7121\u6cd5\u5be6\u4f8b\u5316\u6307\u5b9a\u7684 InjectionProvider\u300c{0}\u300d\u3002
+jsf.spi.injection.provider_configured=JSF1032\uff1a\u4f7f\u7528 InjectionProvider\u300c{0}\u300d\u555f\u7528\u8cc7\u6e90\u5f15\u5165\u3002
+jsf.spi.injection.no_injection=JSF1033\uff1a\u8cc7\u6e90\u5f15\u5165\u505c\u7528\u3002
+jsf.spi.serialization.provider_not_implemented=JSF1036\uff1a\u6307\u5b9a\u7684 SerializationProvider \u5be6\u4f5c\u300c{0}\u300d\u672a\u5be6\u4f5c SerializationProvider \u4ecb\u9762\u3002 
+jsf.spi.serialization.provider_not_found=JSF1037\uff1a\u7121\u6cd5\u8f09\u5165\u6307\u5b9a\u7684 SerializationProvider \u5be6\u4f5c\u300c{0}\u300d\u3002
+jsf.spi.serialization.provider_cannot_instantiate=JSF1038\uff1a\u7121\u6cd5\u5be6\u4f8b\u5316\u6307\u5b9a\u7684 SerializationProvider\u300c{0}\u300d\u3002
+jsf.spi.serialization.provider_configured=JSF1039\uff1a\u4f7f\u7528 InjectionProvider\u300c{0}\u300d\u555f\u7528\u8cc7\u6e90\u5f15\u5165\u3002
+jsf.renderkit.resstatemgr.clientbuf_div_two=JSF1034\uff1a\u300c{0}\u300d\u7684\u503c\u300c{1}\u300d\u5fc5\u9808\u88ab 2 \u6574\u9664\u3002\u9810\u8a2d\u70ba\u300c{2}\u300d\u3002
+jsf.renderkit.resstatemgr.clientbuf_not_integer=JSF1035\uff1a\u300c{0}\u300d\u7684\u503c\u300c{1}\u300d\u4e0d\u662f\u6574\u6578\u3002\u9810\u8a2d\u70ba\u300c{2}\u300d\u3002
+jsf.core.taglib.invalid_locale_value=JSF1041\uff1a\u6307\u5b9a\u7684\u8a9e\u8a00\u74b0\u5883\u300c{0}\u300d\u7121\u6548\u3002\u8a9e\u8a00\u74b0\u5883\u5c6c\u6027\u503c\u5fc5\u9808\u662f\u4e0d\u542b\u570b\u5bb6/\u5730\u5340\u6216\u8b8a\u9ad4\u7684\u6709\u6548 ISO 639 \u8a9e\u8a00\u78bc\u3002
+jsf.core.taglib.invalid_language=JSF1042\uff1a\u6307\u5b9a\u7684\u8a9e\u8a00\u300c{0}\u300d\u4e0d\u662f\u5df2\u77e5\u7684 ISO 639 \u8a9e\u8a00\u78bc\u3002
+jsf.core.taglib.action_or_valuechange_listener.null_type_binding=JSF1043\uff1a\u5c07\u4e0d\u6703\u8655\u7406\u5143\u4ef6\u300c{1}\u300d\u7684 {0} -\u300cbinding\u300d\u548c\u300ctype\u300d\u5747\u70ba\u7a7a\u503c\u3002
+jsf.core.taglib.phaselistener.null_type_binding=JSF1043\uff1a\u5c07\u4e0d\u6703\u8655\u7406 PhaseListener (\u900f\u904e PhaseListenerTag \u6307\u5b9a) -\u300cbinding\u300d\u548c\u300ctype\u300d\u5747\u70ba\u7a7a\u503c\u3002
+jsf.core.web.injection.method_not_static=JSF1044\uff1a\u6a19\u793a\u300c{1}\u300d\u9644\u8a3b\u7684\u65b9\u6cd5\u300c{0}\u300d\u4e0d\u80fd\u662f\u975c\u614b\u3002\u6b64\u65b9\u6cd5\u5c07\u88ab\u5ffd\u7565\u3002
+jsf.core.web.injection.method_return_not_void=JSF1045\uff1a\u6a19\u793a\u300c{1}\u300d\u9644\u8a3b\u7684\u65b9\u6cd5\u300c{0}\u300d\u53ea\u80fd\u50b3\u56de Void\u3002\u6b64\u65b9\u6cd5\u5c07\u88ab\u5ffd\u7565\u3002
+jsf.core.web.injection.method_no_params=JSF1046\uff1a\u6a19\u793a\u300c{1}\u300d\u9644\u8a3b\u7684\u65b9\u6cd5\u300c{0}\u300d\u4e0d\u80fd\u6709\u4efb\u4f55\u53c3\u6578\u3002\u6b64\u65b9\u6cd5\u5c07\u88ab\u5ffd\u7565\u3002
+jsf.core.web.injection.method_no_checked_exceptions=JSF1047\uff1a\u6a19\u793a\u300c{1}\u300d\u9644\u8a3b\u7684\u65b9\u6cd5\u300c{0}\u300d\u4e0d\u80fd\u5ba3\u544a\u4efb\u4f55\u52fe\u9078\u7684\u7570\u5e38\u3002\u6b64\u65b9\u6cd5\u5c07\u88ab\u5ffd\u7565\u3002
+jsf.core.injection.provider_generic_web_configured=JSF1048\uff1a\u5b58\u5728 PostConstruct/PreDestroy \u9644\u8a3b\u3002\u6a19\u793a\u9019\u4e9b\u9644\u8a3b\u7684 ManagedBeans \u65b9\u6cd5\u5c07\u8868\u793a\u9644\u8a3b\u5df2\u8655\u7406\u3002
+jsf.spi.injection.provider.invalid_service_entry=JSF1049\uff1a\u7121\u6548\u7684\u670d\u52d9\u9805\u76ee\u300c{0}\u300d\u3002\u683c\u5f0f\u61c9\u70ba\u300c<DiscoverableInjectionProviderClass>:<DelegateClass>\u300d\u3002\u9805\u76ee\u5c07\u88ab\u5ffd\u7565\u3002
+jsf.spi.injection.provider.discovery_error=JSF1050\uff1a\u547c\u53eb\u9805\u76ee\u300c{0}\u300d\u7684 DiscoverableInjectionProvider.isProviderAppropriate(String) \u6642\u767c\u751f\u932f\u8aa4\u3002\u9805\u76ee\u5c07\u88ab\u5ffd\u7565\u3002
+jsf.spi.injection.provider.entry_not_discoverable=JSF1051\uff1a\u670d\u52d9\u9805\u76ee\u300c{0}\u300d\u4e0d\u6703\u5ef6\u4f38 DiscoverableInjectionProvider\u3002\u9805\u76ee\u5c07\u88ab\u5ffd\u7565\u3002
+jsf.spi.provider.cannot_read_service=JSF1052\uff1a\u8655\u7406\u670d\u52d9\u9805\u76ee\u300c{0}\u300d\u6642\u767c\u751f\u672a\u9810\u671f\u7684\u932f\u8aa4\u3002
+jsf.lifecycle.phaselistener.exception=JSF1053\uff1a(\u5075\u807d\u7a0b\u5f0f: {0}\uff0c\u968e\u6bb5 ID: {1}\uff0c\u6aa2\u8996 ID: {2}) \u968e\u6bb5\u5075\u807d\u7a0b\u5f0f\u57f7\u884c\u671f\u9593\u4e1f\u51fa\u7570\u5e38: {3}
+jsf.lifecycle.phase.exception=JSF1054\uff1a(\u968e\u6bb5 ID: {0}\uff0c\u6aa2\u8996 ID: {1}) \u968e\u6bb5\u57f7\u884c\u671f\u9593\u4e1f\u51fa\u7570\u5e38: {2}
+jsf.config.cannot_resolve_entities=JSF1055\uff1a\u627e\u4e0d\u5230\u672c\u6a5f\u8cc7\u6e90\u300c{0}\u300d\u3002 \u7576\u5b58\u5728\u5c0d\u300c{1}\u300d\u7684\u8acb\u6c42\u6642\uff0c\u5c07\u4f7f\u7528\u6a19\u6e96\u5be6\u9ad4\u89e3\u6790\u3002
+jsf.config.cannot_create_inputsource=JSF1056\uff1a\u7121\u6cd5\u5efa\u7acb URL\u300c{0}\u300d\u7684 InputSource\u3002
+jsf.config.navigation.from_view_id_leading_slash=JSF1057\uff1afrom-view-id \u53c3\u7167\u7684\u8cc7\u6e90\u300c{0}\u300d\u672a\u4ee5\u300c/\u300d\u958b\u982d\u3002\u7cfb\u7d71\u5c07\u70ba\u60a8\u81ea\u52d5\u589e\u52a0\uff0c\u4f46\u61c9\u66f4\u6b63\u6b64\u932f\u8aa4\u3002 
+jsf.config.navigation.to_view_id_leading_slash=JSF1058\uff1ato-view-id \u53c3\u7167\u7684\u8cc7\u6e90\u300c{0}\u300d(\u4ee5\u5f9e\u300c{1}\u300d\u700f\u89bd) \u672a\u4ee5\u300c/\u300d\u958b\u982d\u3002\u7cfb\u7d71\u5c07\u70ba\u60a8\u81ea\u52d5\u589e\u52a0\uff0c\u4f46\u61c9\u66f4\u6b63\u6b64\u932f\u8aa4\u3002
+jsf.config.navigation.if_invalid_expression=JSF1070\uff1a\u5f9e\u300c{1}\u300d\u700f\u89bd\u6240\u9700\u7684\u689d\u4ef6\u300c{0}\u300d\u4e0d\u662f\u9023\u7e8c\u7684\u503c\u8868\u793a\u5f0f\uff0c\u5c07\u88ab\u5ffd\u7565\u3002
+jsf.config.verifyobjects.development_only=JSF1059\uff1a\u8b66\u544a\uff01com.sun.faces.verifyObjects \u529f\u80fd\u662f\u7528\u4f86\u5354\u52a9\u4e0d\u4f7f\u7528\u5de5\u5177\u7684\u958b\u767c\u4eba\u54e1\u3002\u5982\u679c\u4f7f\u7528 IDE\uff0c\u6216\u5982\u679c\u6b64\u61c9\u7528\u7a0b\u5f0f\u662f\u90e8\u7f72\u4f9b\u751f\u7522\u4f7f\u7528\uff0c\u5247\u4e0d\u61c9\u555f\u7528\u5b83\uff0c\u56e0\u70ba\u9019\u6703\u5f71\u97ff\u61c9\u7528\u7a0b\u5f0f\u7684\u555f\u52d5\u6642\u9593\u3002
+jsf.config.verifyobjects.failures_detected=JSF1060\uff1a\u9a57\u8b49\u7522\u751f\u4e00\u6216\u591a\u9805\u5931\u6557\u3002\u6b64\u8a0a\u606f\u4e4b\u5f8c\u6703\u6709\u8a73\u7d30\u8cc7\u8a0a\u3002
+jsf.lifecycle.duplicate_phase_listener_detected=JSF1061\uff1a\u8b66\u544a\uff01\u5df2\u5617\u8a66\u589e\u52a0\u91cd\u8907\u7684\u968e\u6bb5\u5075\u807d\u7a0b\u5f0f: {0}\u3002\u6b64\u91cd\u8907\u7684\u9805\u76ee\u5c07\u88ab\u5ffd\u7565\u3002
+jsf.core.taglib.viewtag.interweaving_failed=JSF1062\uff1a\u8b66\u544a\uff01ExternalContext.getResponse() \u50b3\u56de\u7684\u56de\u61c9\u7269\u4ef6\u672a\u63d0\u4f9b\u5177\u6709\u7c3d\u540d\u300cpublic void flushContentToWrappedResponse()\u300d\u7684\u65b9\u6cd5\u3002\u9019\u662f\u5728 JSP \u74b0\u5883\u4e2d\u63d0\u4f9b\u5167\u5bb9\u7d50\u5408\u6240\u9700\u7684\u65b9\u6cd5\u3002\u56e0\u6b64\uff0c\u5167\u5bb9\u5c07\u7121\u6cd5\u6b63\u78ba\u986f\u793a\u3002
+jsf.core.taglib.subviewtag.interweaving_failed_isbytes=JSF1062\uff1a\u8b66\u544a\uff01ExternalContext.getResponse() \u50b3\u56de\u7684\u56de\u61c9\u7269\u4ef6\u672a\u63d0\u4f9b\u5177\u6709\u7c3d\u540d\u300cpublic boolean isBytes()\u300d\u7684\u65b9\u6cd5\u3002\u9019\u662f\u5728 JSP \u74b0\u5883\u4e2d\u63d0\u4f9b\u5167\u5bb9\u7d50\u5408\u6240\u9700\u7684\u65b9\u6cd5\u3002\u56e0\u6b64\uff0c\u5167\u5bb9\u5c07\u7121\u6cd5\u6b63\u78ba\u986f\u793a\u3002
+jsf.core.taglib.subviewtag.interweaving_failed_ischars=JSF1062\uff1a\u8b66\u544a\uff01ExternalContext.getResponse() \u50b3\u56de\u7684\u56de\u61c9\u7269\u4ef6\u672a\u63d0\u4f9b\u5177\u6709\u7c3d\u540d\u300cpublic boolean isChars()\u300d\u7684\u65b9\u6cd5\u3002\u9019\u662f\u5728 JSP \u74b0\u5883\u4e2d\u63d0\u4f9b\u5167\u5bb9\u7d50\u5408\u6240\u9700\u7684\u65b9\u6cd5\u3002\u56e0\u6b64\uff0c\u5167\u5bb9\u5c07\u7121\u6cd5\u6b63\u78ba\u986f\u793a\u3002
+jsf.core.taglib.subviewtag.interweaving_failed_getchars=JSF1062\uff1a\u8b66\u544a\uff01ExternalContext.getResponse() \u50b3\u56de\u7684\u56de\u61c9\u7269\u4ef6\u672a\u63d0\u4f9b\u5177\u6709\u7c3d\u540d\u300cpublic char[] getChars()\u300d\u7684\u65b9\u6cd5\u3002\u9019\u662f\u5728 JSP \u74b0\u5883\u4e2d\u63d0\u4f9b\u5167\u5bb9\u7d50\u5408\u6240\u9700\u7684\u65b9\u6cd5\u3002\u56e0\u6b64\uff0c\u5167\u5bb9\u5c07\u7121\u6cd5\u6b63\u78ba\u986f\u793a\u3002
+jsf.core.taglib.subviewtag.interweaving_failed_resetbuffers=JSF1062\uff1a\u8b66\u544a\uff01ExternalContext.getResponse() \u50b3\u56de\u7684\u56de\u61c9\u7269\u4ef6\u672a\u63d0\u4f9b\u5177\u6709\u7c3d\u540d\u300cpublic void resetBuffers\u300d\u7684\u65b9\u6cd5\u3002\u9019\u662f\u5728 JSP \u74b0\u5883\u4e2d\u63d0\u4f9b\u5167\u5bb9\u7d50\u5408\u6240\u9700\u7684\u65b9\u6cd5\u3002\u56e0\u6b64\uff0c\u5167\u5bb9\u5c07\u7121\u6cd5\u6b63\u78ba\u986f\u793a\u3002
+jsf.context.extcontext.sessionmap.nonserializable=JSF1063\uff1a\u8b66\u544a\uff01\u5c07\u4e0d\u53ef\u4e32\u5217\u5316\u7684\u5c6c\u6027\u503c\u8a2d\u70ba HttpSession (\u6a5f\u78bc: {0}\uff0c\u503c\u985e\u5225: {1})\u3002
+jsf.application.resource.unable_to_serve_from_library=JSF1064\uff1a\u5f9e\u7a0b\u5f0f\u5eab {1} \u627e\u4e0d\u5230\u6216\u7121\u6cd5\u63d0\u4f9b\u8cc7\u6e90 {0}\u3002
+jsf.application.resource.unable_to_serve=JSF1064\uff1a\u627e\u4e0d\u5230\u6216\u7121\u6cd5\u63d0\u4f9b\u8cc7\u6e90 {0}\u3002
+jsf.application.resource.unable_to_determine_resource_version=JSF1065\uff1a\u7121\u6cd5\u5224\u65b7\u8cc7\u6e90\u540d\u7a31 {0} \u7684\u7248\u672c\u3002
+jsf.application.resource.unable_to_create_compression_directory=JSF1065\uff1a\u7121\u6cd5\u5efa\u7acb\u76ee\u9304 {0} \u4f86\u5132\u5b58\u58d3\u7e2e\u7684\u8cc7\u6e90\u3002
+jsf.application.publish.event.base_type_mismatch=JSF1066\uff1a\u4f86\u6e90\u7269\u4ef6 {0} \u4e0d\u662f\u6240\u63d0\u4f9b\u4e4b\u57fa\u5e95\u985e\u578b {1} \u7684\u5be6\u4f8b\u3002\u4e8b\u4ef6\u641c\u5c0b\u5c07\u4e0d\u6703\u57f7\u884c\u3002
+jsf.config.web_resource_not_found=JSF1067\uff1a\u627e\u4e0d\u5230 {1} \u914d\u7f6e\u9078\u9805\u6307\u5b9a\u7684\u8cc7\u6e90 {0}\u3002\u6b64\u8cc7\u6e90\u5c07\u88ab\u5ffd\u7565\u3002
+jsf.cannot_instantiate_component_error=JSF1068\uff1a\u7121\u6cd5\u5be6\u4f8b\u5316\u5143\u4ef6\u985e\u578b\u70ba {0} \u7684\u5143\u4ef6
+jsf.application.legacy_facelet_viewhandler_detected=JSF1069\uff1a\u505c\u7528 JSF 2.0 Facelets ViewHandler\uff0c\u56e0\u5df2\u660e\u78ba\u914d\u7f6e\u4f7f\u7528\u820a\u7248 FaceletViewHandler {0}\u3002\u5982\u679c\u9019\u4e0d\u662f\u6240\u8981\u7684\u904b\u4f5c\u65b9\u5f0f\uff0c\u8acb\u5f9e\u61c9\u7528\u7a0b\u5f0f\u79fb\u9664\u820a\u7248 FaceletViewHandler \u548c\u7a0b\u5f0f\u5eab\u3002
+jsf.navigation_invalid_query_string=JSF1070\uff1a\u700f\u89bd\u7d50\u679c {0} \u4e2d\u6709\u7121\u6548\u7684\u67e5\u8a62\u5b57\u4e32
+# the following three messages are duplicated in javax.faces.LogStrings.properties
+jsf.context.exception.handler.log_before=JSF1071\uff1a\u5728 {1} \u7684 beforePhase() \u8655\u7406\u671f\u9593\u622a\u7372 {0}\uff1aUIComponent-ClientId={2}\uff0c\u8a0a\u606f={3}
+jsf.context.exception.handler.log_after=JSF1072\uff1a\u5728 {1} \u7684 afterPhase() \u8655\u7406\u671f\u9593\u622a\u7372 {0}\uff1aUIComponent-ClientId={2}\uff0c\u8a0a\u606f={3}
+jsf.context.exception.handler.log=JSF1073\uff1a\u5728 {1} \u7684\u8655\u7406\u671f\u9593\u622a\u7372 {0}\uff1aUIComponent-ClientId={2}\uff0c\u8a0a\u606f={3}
+jsf.managed.bean.duplicate=JSF1074\uff1a\u540d\u70ba\u300c{0}\u300d\u7684\u53d7\u7ba1 Bean \u5df2\u7d93\u8a3b\u518a\u3002\u5c07\u73fe\u6709\u7684\u53d7\u7ba1 Bean \u985e\u5225\u985e\u578b {1} \u53d6\u4ee3\u6210 {2}\u3002
+jsf.resource.mime.type.configration.invalid=JSF1075\uff1aMime \u985e\u578b {0} \u8207\u9810\u671f\u7684\u6a21\u5f0f {1} \u4e0d\u7b26\u3002\u5c07\u5ffd\u7565\u3002
+jsf.annotation.scanner.configuration.invalid=JSF1076\uff1a[{0}] {1}\uff1a\u7121\u6548\u7684 jar \u898f\u683c\u683c\u5f0f\u3002\u9810\u671f\u7684 jar\uff1a<jar \u540d\u7a31\u6216 *>:<\u5957\u88dd\u6a21\u7d44\u6216 *>\u3002\u9805\u76ee\u5c07\u88ab\u5ffd\u7565\u3002
+jsf.annotation.scanner.configuration.duplicate.wildcard=JSF1077\uff1a[{0}] {1}\uff1ajar \u540d\u7a31\u627e\u5230\u91cd\u8907\u7684\u842c\u7528\u5b57\u5143\u9805\u76ee\u3002\u9805\u76ee\u5c07\u88ab\u5ffd\u7565\u3002
+jsf.configuration.web.xml.parse.failed=JSF1078\uff1a\u7121\u6cd5\u8655\u7406\u74b0\u5883\u300c{0}\u300d\u7684\u90e8\u7f72\u63cf\u8ff0\u5143\u3002
+jsf.configuration.absolute.order.duplicate.document=JSF1079\uff1a\u8655\u7406\u7d55\u5c0d\u6392\u5e8f\u6642\u627e\u5230\u591a\u500b\u540d\u70ba {0} \u7684\u6587\u4ef6\u3002\u7cfb\u7d71\u53ea\u6703\u8655\u7406\u7b2c\u4e00\u500b\u5177\u6709\u8a72\u540d\u7a31\u7684\u6587\u4ef6\u3002
+jsf.configuration.absolute.order.missing.document=JSF1080\uff1a\u57f7\u884c\u7d55\u5c0d\u6392\u5e8f\u8655\u7406\u6642\u627e\u4e0d\u5230\u540d\u70ba\u300c{0}\u300d\u7684\u6587\u4ef6\u3002
+jsf.configuration.web.faces.config.contains.ordering=JSF1081\uff1a/WEB-INF/faces-config.xml \u542b\u6709 <ordering> \u5143\u4ef6\u3002\u9019\u4e9b\u5143\u4ef6\u5c07\u88ab\u5ffd\u7565\u3002
+jsf.configuration.illegal.eager.bean=JSF1082\uff1a\u53ea\u6709\u61c9\u7528\u7a0b\u5f0f\u7bc4\u570d Bean \u624d\u80fd\u9032\u884c\u7dca\u6025\u53d7\u7ba1 Bean \u5be6\u4f8b\u5316\u3002\u53d7\u7ba1 Bean\u300c{0}\u300d\u914d\u7f6e\u70ba\u7dca\u6025\uff0c\u4f46\u7bc4\u570d\u300c{1}\u300d\u7121\u6548\u3002
+jsf.composite.component.insertchildren.missing.template=JSF1083\uff1a\u5728\u4f4d\u7f6e:\u300c{0}\u300d\u627e\u4e0d\u5230\u64c1\u6709\u8907\u5408\u5143\u4ef6\u7bc4\u672c\u7684 insertChildren \u8655\u7406\u5668
+jsf.composite.component.insertfacet.missing.template=JSF1084\uff1a\u5728\u4f4d\u7f6e:\u300c{0}\u300d\u627e\u4e0d\u5230 insertFacet \u8655\u7406\u5668\u7684\u64c1\u6709\u8907\u5408\u5143\u4ef6\u7bc4\u672c
+jsf.managed.bean.custom.scope.eval.null=JSF1085\uff1a\u81ea\u8a02\u7bc4\u570d\u300c{0}\u300d\u8a08\u7b97\u70ba\u7a7a\u503c\u3002\u672a\u5c07\u53d7\u7ba1 Bean \u63a8\u81f3\u7bc4\u570d\u3002
+jsf.managed.bean.custom.scope.eval.null.existence=JSF1086\uff1a\u81ea\u8a02\u7bc4\u570d\u300c{0}\u300d\u8a08\u7b97\u70ba\u7a7a\u503c\u3002\u7121\u6cd5\u5224\u65b7\u53d7\u7ba1 Bean \u662f\u5426\u5b58\u5728\u3002
+jsf.facelets.error.page.response.committed=JSF1087\uff1a\u7121\u6cd5\u7522\u751f Facelet \u932f\u8aa4\u9801\uff0c\u56e0\u70ba\u56de\u61c9\u5df2\u78ba\u5b9a\u3002
+jsf.state.server.cannot.parse.int.option=JSF1088\uff1a\u5256\u6790\u74b0\u5883 init \u53c3\u6578 {0} \u6642\u767c\u751f\u932f\u8aa4\u3002\u6539\u7528\u9810\u8a2d\u503c {1}\u3002
+jsf.outcometarget.invalid.navigationhandler.type=JSF1089\uff1aNavigationHandler \u5fc5\u9808\u662f ConfigurableNavigationHandler \u7684\u5be6\u4f8b\u624d\u80fd\u4f7f\u7528 UIOutputTarget \u5143\u4ef6 {0}\u3002
+jsf.outcometarget.navigation.case.not.resolved=JSF1090\uff1a\u672a\u89e3\u6790\u5143\u4ef6 {0} \u7684\u700f\u89bd\u689d\u4ef6\u3002
+jsf.externalcontext.no.mime.type.found=JSF1091\uff1a\u627e\u4e0d\u5230\u6a94\u6848 {0} \u7684 mime \u985e\u578b\u3002\u82e5\u8981\u89e3\u6c7a\u6b64\u554f\u984c\uff0c\u8acb\u5c07 mime \u985e\u578b\u5c0d\u6620\u589e\u52a0\u5230\u61c9\u7528\u7a0b\u5f0f\u7684 web.xml\u3002
+jsf.config.legacy.facelet.warning=JSF1029\uff1a\u61c9\u7528\u7a0b\u5f0f\u8a2d\u70ba\u7248\u672c 2.0 (\u7531 /WEB-INF/faces-config.xml \u7684\u7248\u672c\u6216\u7531\u65bc\u7f3a\u5c11 /WEB-INF/faces-confg.xml \u800c\u660e\u78ba\u8a2d\u5b9a)\uff0c\u4f46\u985e\u5225\u300c{0}\u300d\u76f8\u4f9d\u65bc\u820a\u7248 Facelet \u985e\u5225\u3002\u6b64\u985e\u5225\u4ee3\u8868\u7684 Facelet \u5de5\u4ef6\u5c07\u4e0d\u6703\u8a3b\u518a\u3002
+jsf.compcomp.unecessary.targets.attribute=JSF1092: {0} : Unnecessary specification of the ''targets'' attribute for composite attribute ''{1}''.  The ''targets'' attribute is only necessary when the composite attribute is named ''action'', ''actionListener'', ''validator'', or ''valueChangeListener''.
+jsf.compcomp.binding.eval.non.compcomp=JSF1093: {0} : UIComponent returned by expression evaluation is not a valid composite component.  Value will be ignored.
+jsf.externalcontext.flash.bad.cookie=JSF1094: Could not decode flash data from incoming cookie value {0}.  Processing will continue, but the flash is unavailable for this request.
+jsf.externalcontext.flash.response.already.committed=JSF1095: The response was already committed by the time we tried to set the outgoing cookie for the flash.  Any values stored to the flash will not be available on the next request.
+jsf.metadata.uiviewroot.unavailable=JSF1096: UIViewRoot unavailable at the time view metadata was being processed.  Metadata will be unavailable.
+jsf.application.resource.invalid_if_modified_since_header=JSF1097: Unable to parse date sent by User Agent for If-Modified-Since header, {0}.
+jsf.context.partial_visit_context_unvisited_children=JSF1098: The following clientIds were not visited after a partial traversal: {0}.  This is a waste of processor time and could be due to an error in the VDL page.
+jsf.lifecycle.invalid.referer=JSF1099: Referer [sic] header value {0} does not appear to be a protected view. Preventing display of viewId {1}
+jsf.lifecycle.invalid.origin=JSF1100: Origin [sic] header value {0} does not appear to be a protected view. Preventing display of viewId {1}
diff --git a/jsf-ri/src/main/resources/com/sun/faces/LogStrings_zh_TW.properties b/jsf-ri/src/main/resources/com/sun/faces/LogStrings_zh_TW.properties
index 889e777..f435e96 100644
--- a/jsf-ri/src/main/resources/com/sun/faces/LogStrings_zh_TW.properties
+++ b/jsf-ri/src/main/resources/com/sun/faces/LogStrings_zh_TW.properties
@@ -1,27 +1,31 @@
 #
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 #
-# Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+# Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
 #
 # The contents of this file are subject to the terms of either the GNU
 # General Public License Version 2 only ("GPL") or the Common Development
 # and Distribution License("CDDL") (collectively, the "License").  You
-# may not use this file except in compliance with the License. You can obtain
-# a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
-# or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
 # language governing permissions and limitations under the License.
 #
 # When distributing the software, include this License Header Notice in each
-# file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
-# Sun designates this particular file as subject to the "Classpath" exception
-# as provided by Sun in the GPL Version 2 section of the License file that
-# accompanied this code.  If applicable, add the following below the License
-# Header, with the fields enclosed by brackets [] replaced by your own
-# identifying information: "Portions Copyrighted [year]
-# [name of copyright owner]"
+# file and include the License file at packager/legal/LICENSE.txt.
 #
-# Contributor(s):
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
 #
+# Contributor(s):
 # If you wish your version of this file to be governed by only the CDDL or
 # only the GPL Version 2, indicate your decision by adding "[Contributor]
 # elects to include this software in this distribution under the [CDDL or GPL
@@ -59,7 +63,7 @@ jsf.config.webconfig.boolconfiginfo.enabled=JSF1021\uff1a[{0}] \u914d\u7f6e\u907
 jsf.config.webconfig.boolconfiginfo.disabled=JSF1021\uff1a[{0}] \u914d\u7f6e\u9078\u9805\u300c{1}\u300d- \u5df2\u505c\u7528
 jsf.config.webconfig.boolconfig.invalidvalue=JSF1022\uff1a[{0}] \u914d\u7f6e\u9078\u9805\u300c{2}\u300d\u7684\u503c\u300c{1}\u300d\u7121\u6548\u3002\u6709\u6548\u503c\u70ba\u300c{3}\u300d\u3002\u8f49\u81f3\u5099\u7528\u9810\u8a2d\u503c\u300c{4}\u300d\u3002
 jsf.config.webconfig.enventryinfo=JSF1023\uff1a[{0}] \u74b0\u5883\u9805\u76ee\u300c{1}\u300d\u5df2\u8655\u7406\uff0c\u503c\u300c{2}\u300d
-jsf.config.webconfig.enventry.clientencrypt=JSF1024\uff1a[{0}] \u7528\u6236\u7aef\u72c0\u614b\u52a0\u5bc6\uff1a\u5df2\u555f\u7528
+jsf.config.webconfig.enventry.clientencrypt=JSF1024\uff1a \u7528\u6236\u7aef\u72c0\u614b\u52a0\u5bc6\uff1a\u5df2\u505c\u7528
 jsf.config.webconfig.param.deprecated=JSF1025\uff1a[{0}] \u74b0\u5883\u521d\u59cb\u5316\u53c3\u6578\u300c{1}\u300d\u5df2\u505c\u7528\u3002\u4ecd\u6703\u914d\u7f6e\u6b64\u9078\u9805\uff0c\u4f46\u5c07\u4f86\u8acb\u6539\u7528\u300c{2}\u300d\u3002
 jsf.config.webconfig.param.deprecated.no_replacement=JSF1025\uff1a[{0}] \u74b0\u5883\u521d\u59cb\u5316\u53c3\u6578\u300c{1}\u300d\u5df2\u505c\u7528\uff0c\u5c07\u7121\u4f5c\u7528\u3002  
 jsf.config.webconfig.option.notconfigured=JSF1026\uff1a[{0}] \u914d\u7f6e\u9078\u9805\u300c{1}\u300d\u672a\u914d\u7f6e
@@ -143,3 +147,6 @@ jsf.externalcontext.flash.bad.cookie=JSF1094: Could not decode flash data from i
 jsf.externalcontext.flash.response.already.committed=JSF1095: The response was already committed by the time we tried to set the outgoing cookie for the flash.  Any values stored to the flash will not be available on the next request.
 jsf.metadata.uiviewroot.unavailable=JSF1096: UIViewRoot unavailable at the time view metadata was being processed.  Metadata will be unavailable.
 jsf.application.resource.invalid_if_modified_since_header=JSF1097: Unable to parse date sent by User Agent for If-Modified-Since header, {0}.
+jsf.context.partial_visit_context_unvisited_children=JSF1098: The following clientIds were not visited after a partial traversal: {0}.  This is a waste of processor time and could be due to an error in the VDL page.
+jsf.lifecycle.invalid.referer=JSF1099: Referer [sic] header value {0} does not appear to be a protected view. Preventing display of viewId {1}
+jsf.lifecycle.invalid.origin=JSF1100: Origin [sic] header value {0} does not appear to be a protected view. Preventing display of viewId {1}
diff --git a/jsf-ri/src/main/resources/com/sun/faces/resources/Messages.properties b/jsf-ri/src/main/resources/com/sun/faces/resources/Messages.properties
index c9b4bf8..188fe2a 100644
--- a/jsf-ri/src/main/resources/com/sun/faces/resources/Messages.properties
+++ b/jsf-ri/src/main/resources/com/sun/faces/resources/Messages.properties
@@ -1,27 +1,31 @@
 #
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 #
-# Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+# Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
 #
 # The contents of this file are subject to the terms of either the GNU
 # General Public License Version 2 only ("GPL") or the Common Development
 # and Distribution License("CDDL") (collectively, the "License").  You
-# may not use this file except in compliance with the License. You can obtain
-# a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
-# or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
 # language governing permissions and limitations under the License.
 #
 # When distributing the software, include this License Header Notice in each
-# file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
-# Sun designates this particular file as subject to the "Classpath" exception
-# as provided by Sun in the GPL Version 2 section of the License file that
-# accompanied this code.  If applicable, add the following below the License
-# Header, with the fields enclosed by brackets [] replaced by your own
-# identifying information: "Portions Copyrighted [year]
-# [name of copyright owner]"
+# file and include the License file at packager/legal/LICENSE.txt.
 #
-# Contributor(s):
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
 #
+# Contributor(s):
 # If you wish your version of this file to be governed by only the CDDL or
 # only the GPL Version 2, indicate your decision by adding "[Contributor]
 # elects to include this software in this distribution under the [CDDL or GPL
@@ -132,6 +136,7 @@ com.sun.faces.NULL_REQUEST_VIEW_ERROR=Argument Error: Request View argument is n
 com.sun.faces.NULL_RESPONSE_STREAM_ERROR=Argument Error: ResponseStream argument is null.
 com.sun.faces.NULL_RESPONSE_VIEW_ERROR=Argument Error: ResponseView argument is null.
 com.sun.faces.NULL_RESPONSE_WRITER_ERROR=Argument Error: ResponseWriter argument is null.
+com.sun.faces.NULL_VIEW_ID=Argument Error: view id argument is null.
 com.sun.faces.OBJECT_CREATION_ERROR=One or more confgured application objects could not be created.  Check your web application logs for details.
 com.sun.faces.OPTION_NOT_SELECT_ITEM=Argument Error: An option for component ''{0}'' was not an instance of javax.faces.model.SelectItem.  Type found: ''{1}''.
 com.sun.faces.OUTCOME_TARGET_BUTTON_NO_MATCH=: This button is disabled because a navigation case could not be matched.
@@ -179,3 +184,5 @@ com.sun.faces.partial.statesaving.ERROR_RESTORING_STATE_FOR_COMPONENT=Unexpected
 com.sun.faces.MISSING_COMPONENT_ATTRIBUTE_VALUE=The following attribute(s) are required, but no values have been supplied for them: ''{0}''.
 com.sun.faces.MISSING_COMPONENT_FACET=The following facets(s) are required, but no facets have been supplied for them: ''{0}''.
 com.sun.faces.MISSING_COMPONENT_METADATA=The composite component metadata for component with clientid ''{0}'' cannot be found.  
+com.sun.faces.MISSING_FORM_ERROR=The form component needs to have a UIForm in its ancestry. Suggestion: enclose the necessary components within <h:form>
+com.sun.faces.MISSING_METADATA_ERROR=The metadata component needs to be nested within a f:metadata tag. Suggestion: enclose the necessary components within <f:metadata>
diff --git a/jsf-ri/src/main/resources/com/sun/faces/resources/Messages_de.properties b/jsf-ri/src/main/resources/com/sun/faces/resources/Messages_de.properties
index f2b7a89..3411c82 100644
--- a/jsf-ri/src/main/resources/com/sun/faces/resources/Messages_de.properties
+++ b/jsf-ri/src/main/resources/com/sun/faces/resources/Messages_de.properties
@@ -1,27 +1,31 @@
 #
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 #
-# Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+# Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
 #
 # The contents of this file are subject to the terms of either the GNU
 # General Public License Version 2 only ("GPL") or the Common Development
 # and Distribution License("CDDL") (collectively, the "License").  You
-# may not use this file except in compliance with the License. You can obtain
-# a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
-# or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
 # language governing permissions and limitations under the License.
 #
 # When distributing the software, include this License Header Notice in each
-# file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
-# Sun designates this particular file as subject to the "Classpath" exception
-# as provided by Sun in the GPL Version 2 section of the License file that
-# accompanied this code.  If applicable, add the following below the License
-# Header, with the fields enclosed by brackets [] replaced by your own
-# identifying information: "Portions Copyrighted [year]
-# [name of copyright owner]"
+# file and include the License file at packager/legal/LICENSE.txt.
 #
-# Contributor(s):
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
 #
+# Contributor(s):
 # If you wish your version of this file to be governed by only the CDDL or
 # only the GPL Version 2, indicate your decision by adding "[Contributor]
 # elects to include this software in this distribution under the [CDDL or GPL
@@ -132,6 +136,7 @@ com.sun.faces.NULL_REQUEST_VIEW_ERROR=Argumentfehler: Anforderungsansicht-Argume
 com.sun.faces.NULL_RESPONSE_STREAM_ERROR=Argumentfehler: ResponseStream-Argument ist null.
 com.sun.faces.NULL_RESPONSE_VIEW_ERROR=Argumentfehler: ResponseView-Argument ist null.
 com.sun.faces.NULL_RESPONSE_WRITER_ERROR=Argumentfehler: ResponseWriter-Argument ist null.
+com.sun.faces.NULL_VIEW_ID=Argument Error: view id argument is null.
 com.sun.faces.OBJECT_CREATION_ERROR=Ein oder mehr konfigurierte Anwendungsobjekte konnten nicht erstellt werden.  Details finden Sie in den Webanwendungsprotokollen. 
 com.sun.faces.OPTION_NOT_SELECT_ITEM=Argumentfehler: Eine Option f\u00fcr Komponente ''{0}'' war keine Instanz von javax.faces.model.SelectItem.  Gefundener Typ: ''{1}''.
 com.sun.faces.OUTCOME_TARGET_BUTTON_NO_MATCH=: Diese Schaltfl\u00e4che ist deaktiviert, da ein Navigationsfall nicht abgeglichen werden konnte.
@@ -176,6 +181,8 @@ com.sun.faces.JS_RESOURCE_WRITING_ERROR=Die JavaScript-Datei kann nicht in den C
 com.sun.faces.RESOURCE_TARGET_NOT_AVAILABLE=Eine oder mehrere Ressourcen haben das Ziel ''{0}'', aber es wurde keine Komponente ''{0}'' in der Ansicht definiert.
 com.sun.faces.ARGUMENTS_NOT_LEGAL_WITH_CC_ATTRS_EXPR=Illegal attempt to pass arguments to a composite component lookup expression (i.e. cc.attrs.[identifier]).
 com.sun.faces.partial.statesaving.ERROR_RESTORING_STATE_FOR_COMPONENT=Unexpected error restoring state for component with id ''{0}''.  Cause: {1}.
-com.sun.faces.MISSING_COMPONENT_ATTRIBUTE_VALUE=Folgendes Eigenschaften sind erforderlich, aber leider Sie haben keinen Werte �bergegeben: ''{0}''.
-com.sun.faces.MISSING_COMPONENT_FACET=Folgendes facets(s) sind erforderlich, aber lieder Sie haben keinen Facets �bergegeben: ''{0}''.
-com.sun.faces.MISSING_COMPONENT_METADATA=Composite Component metadata f�r component clientid ''{0}'' nicht gefunden.  
+com.sun.faces.MISSING_COMPONENT_ATTRIBUTE_VALUE=Folgendes Eigenschaften sind erforderlich, aber leider Sie haben keinen Werte \u00fcbergegeben: ''{0}''.
+com.sun.faces.MISSING_COMPONENT_FACET=Folgendes facets(s) sind erforderlich, aber lieder Sie haben keinen Facets \u00fcbergegeben: ''{0}''.
+com.sun.faces.MISSING_COMPONENT_METADATA=Composite Component metadata f\u00fcr component clientid ''{0}'' nicht gefunden.  
+com.sun.faces.MISSING_FORM_ERROR=The button/link/text component needs to have a Form in its ancestry. Please add <h:form>.
+com.sun.faces.MISSING_METADATA_ERROR=The metadata component needs to be nested within a f:metadata tag. Suggestion: enclose the necessary components within <f:metadata>
diff --git a/jsf-ri/src/main/resources/com/sun/faces/resources/Messages_en.properties b/jsf-ri/src/main/resources/com/sun/faces/resources/Messages_en.properties
index b137ca0..5fec97e 100644
--- a/jsf-ri/src/main/resources/com/sun/faces/resources/Messages_en.properties
+++ b/jsf-ri/src/main/resources/com/sun/faces/resources/Messages_en.properties
@@ -1,27 +1,31 @@
 #
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 #
-# Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+# Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
 #
 # The contents of this file are subject to the terms of either the GNU
 # General Public License Version 2 only ("GPL") or the Common Development
 # and Distribution License("CDDL") (collectively, the "License").  You
-# may not use this file except in compliance with the License. You can obtain
-# a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
-# or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
 # language governing permissions and limitations under the License.
 #
 # When distributing the software, include this License Header Notice in each
-# file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
-# Sun designates this particular file as subject to the "Classpath" exception
-# as provided by Sun in the GPL Version 2 section of the License file that
-# accompanied this code.  If applicable, add the following below the License
-# Header, with the fields enclosed by brackets [] replaced by your own
-# identifying information: "Portions Copyrighted [year]
-# [name of copyright owner]"
+# file and include the License file at packager/legal/LICENSE.txt.
 #
-# Contributor(s):
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
 #
+# Contributor(s):
 # If you wish your version of this file to be governed by only the CDDL or
 # only the GPL Version 2, indicate your decision by adding "[Contributor]
 # elects to include this software in this distribution under the [CDDL or GPL
@@ -132,6 +136,7 @@ com.sun.faces.NULL_REQUEST_VIEW_ERROR=Argument Error: Request View argument is n
 com.sun.faces.NULL_RESPONSE_STREAM_ERROR=Argument Error: ResponseStream argument is null.
 com.sun.faces.NULL_RESPONSE_VIEW_ERROR=Argument Error: ResponseView argument is null.
 com.sun.faces.NULL_RESPONSE_WRITER_ERROR=Argument Error: ResponseWriter argument is null.
+com.sun.faces.NULL_VIEW_ID=Argument Error: view id argument is null.
 com.sun.faces.OBJECT_CREATION_ERROR=One or more confgured application objects could not be created.  Check your web application logs for details.
 com.sun.faces.OPTION_NOT_SELECT_ITEM=Argument Error: An option for component ''{0}'' was not an instance of javax.faces.model.SelectItem.  Type found: ''{1}''.
 com.sun.faces.OUTCOME_TARGET_BUTTON_NO_MATCH=: This button is disabled because a navigation case could not be matched.
@@ -179,3 +184,5 @@ com.sun.faces.partial.statesaving.ERROR_RESTORING_STATE_FOR_COMPONENT=Unexpected
 com.sun.faces.MISSING_COMPONENT_ATTRIBUTE_VALUE=The following attribute(s) are required, but no values have been supplied for them: ''{0}''.
 com.sun.faces.MISSING_COMPONENT_FACET=The following facets(s) are required, but no facets have been supplied for them: ''{0}''.
 com.sun.faces.MISSING_COMPONENT_METADATA=The composite component metadata for component with clientid ''{0}'' cannot be found.  
+com.sun.faces.MISSING_FORM_ERROR=The form component needs to have a UIForm in its ancestry. Suggestion: enclose the necessary components within <h:form>
+com.sun.faces.MISSING_METADATA_ERROR=The metadata component needs to be nested within a f:metadata tag. Suggestion: enclose the necessary components within <f:metadata>
diff --git a/jsf-ri/src/main/resources/com/sun/faces/resources/Messages_es.properties b/jsf-ri/src/main/resources/com/sun/faces/resources/Messages_es.properties
index cef325d..92012cb 100644
--- a/jsf-ri/src/main/resources/com/sun/faces/resources/Messages_es.properties
+++ b/jsf-ri/src/main/resources/com/sun/faces/resources/Messages_es.properties
@@ -1,27 +1,31 @@
 #
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 #
-# Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+# Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
 #
 # The contents of this file are subject to the terms of either the GNU
 # General Public License Version 2 only ("GPL") or the Common Development
 # and Distribution License("CDDL") (collectively, the "License").  You
-# may not use this file except in compliance with the License. You can obtain
-# a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
-# or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
 # language governing permissions and limitations under the License.
 #
 # When distributing the software, include this License Header Notice in each
-# file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
-# Sun designates this particular file as subject to the "Classpath" exception
-# as provided by Sun in the GPL Version 2 section of the License file that
-# accompanied this code.  If applicable, add the following below the License
-# Header, with the fields enclosed by brackets [] replaced by your own
-# identifying information: "Portions Copyrighted [year]
-# [name of copyright owner]"
+# file and include the License file at packager/legal/LICENSE.txt.
 #
-# Contributor(s):
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
 #
+# Contributor(s):
 # If you wish your version of this file to be governed by only the CDDL or
 # only the GPL Version 2, indicate your decision by adding "[Contributor]
 # elects to include this software in this distribution under the [CDDL or GPL
@@ -132,6 +136,7 @@ com.sun.faces.NULL_REQUEST_VIEW_ERROR=Error de argumento: el argumento RequestVi
 com.sun.faces.NULL_RESPONSE_STREAM_ERROR=Error de argumento: el argumento ResponseStream es nulo.
 com.sun.faces.NULL_RESPONSE_VIEW_ERROR=Error de argumento: el argumento ResponseView es nulo.
 com.sun.faces.NULL_RESPONSE_WRITER_ERROR=Error de argumento: el argumento ResponseWriter es nulo.
+com.sun.faces.NULL_VIEW_ID=Argument Error: view id argument is null.
 com.sun.faces.OBJECT_CREATION_ERROR=No se han podido crear uno o varios objetos de aplicaci\u00f3n configurados.  Compruebe los registros de aplicaci\u00f3n Web para m\u00e1s informaci\u00f3n.
 com.sun.faces.OPTION_NOT_SELECT_ITEM=Error de argumento: una opci\u00f3n del componente ''{0}'' no era una instancia de javax.faces.model.SelectItem.  Tipo encontrado: ''{1}''.
 com.sun.faces.OUTCOME_TARGET_BUTTON_NO_MATCH=: Este bot\u00f3n est\u00e1 desactivado porque no se ha podido asignar un caso de navegaci\u00f3n.
@@ -179,3 +184,5 @@ com.sun.faces.partial.statesaving.ERROR_RESTORING_STATE_FOR_COMPONENT=Unexpected
 com.sun.faces.MISSING_COMPONENT_ATTRIBUTE_VALUE=The following attribute(s) are required, but no values have been supplied for them: ''{0}''.
 com.sun.faces.MISSING_COMPONENT_FACET=The following facets(s) are required, but no facets have been supplied for them: ''{0}''.
 com.sun.faces.MISSING_COMPONENT_METADATA=The composite component metadata for component with clientid ''{0}'' cannot be found.  
+com.sun.faces.MISSING_FORM_ERROR=The button/link/text component needs to have a Form in its ancestry. Please add <h:form>.
+com.sun.faces.MISSING_METADATA_ERROR=The metadata component needs to be nested within a f:metadata tag. Suggestion: enclose the necessary components within <f:metadata>
diff --git a/jsf-ri/src/main/resources/com/sun/faces/resources/Messages_fr.properties b/jsf-ri/src/main/resources/com/sun/faces/resources/Messages_fr.properties
index 789708c..b41b338 100644
--- a/jsf-ri/src/main/resources/com/sun/faces/resources/Messages_fr.properties
+++ b/jsf-ri/src/main/resources/com/sun/faces/resources/Messages_fr.properties
@@ -1,27 +1,31 @@
 #
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 #
-# Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+# Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
 #
 # The contents of this file are subject to the terms of either the GNU
 # General Public License Version 2 only ("GPL") or the Common Development
 # and Distribution License("CDDL") (collectively, the "License").  You
-# may not use this file except in compliance with the License. You can obtain
-# a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
-# or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
 # language governing permissions and limitations under the License.
 #
 # When distributing the software, include this License Header Notice in each
-# file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
-# Sun designates this particular file as subject to the "Classpath" exception
-# as provided by Sun in the GPL Version 2 section of the License file that
-# accompanied this code.  If applicable, add the following below the License
-# Header, with the fields enclosed by brackets [] replaced by your own
-# identifying information: "Portions Copyrighted [year]
-# [name of copyright owner]"
+# file and include the License file at packager/legal/LICENSE.txt.
 #
-# Contributor(s):
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
 #
+# Contributor(s):
 # If you wish your version of this file to be governed by only the CDDL or
 # only the GPL Version 2, indicate your decision by adding "[Contributor]
 # elects to include this software in this distribution under the [CDDL or GPL
@@ -34,148 +38,151 @@
 # holder.
 #
 
-com.sun.faces.APPLICATION_ASSOCIATE_CTOR_WRONG_CALLSTACK=ApplicationAssociate ctor non appel\u00e9 dans la m\u00eame pile d''appels que ConfigureListener.contextInitialized().
+com.sun.faces.APPLICATION_ASSOCIATE_CTOR_WRONG_CALLSTACK=ApplicationAssociate ctor non appel\u00e9 dans la m\u00eame pile d\u2019appels que ConfigureListener.contextInitialized().
 com.sun.faces.APPLICATION_ASSOCIATE_EXISTS=ApplicationAssociate existe d\u00e9j\u00e0 pour cette application Web.
-com.sun.faces.ASSERTION_FAILED=Echec de l''assertion
-com.sun.faces.ATTRIBUTE_NOT_SUPORTED=L''attribut ''{0}'' n''est pas pris en charge pour le type de composant ''{1}''.
-com.sun.faces.CANT_CONVERT_VALUE=Impossible de convertir la propri\u00e9t\u00e9 ''{0}'' en type de valeur ''{1}''.
-com.sun.faces.CANT_CLOSE_INPUT_STREAM=Impossible de fermer le flux d''entr\u00e9e.
-com.sun.faces.CANT_CREATE_LIFECYCLE_ERROR=Impossible de cr\u00e9er le Lifecycle pour l''id ''{0}''.
-com.sun.faces.CANT_INSTANTIATE_CLASS=Impossible d''instancier la classe ''{0}''.
-com.sun.faces.CANT_INTROSPECT_CLASS=Impossible d''appliquer une introspection \u00e0 la classe ''{0}''.
-com.sun.faces.CANT_PARSE_FILE=Impossible d''analyser le fichier ''{0}''. Erreur \u00e0 la ligne {1} colonne {2} : {3}.
-com.sun.faces.CHILD_NOT_OF_EXPECTED_TYPE=Le type de composant enfant ''{0}'' \u00e9tait attendu pour le type de composant ''{1}({2})''''.  ''{3}'' d\u00e9tect\u00e9.
-com.sun.faces.COMMAND_LINK_NO_FORM_MESSAGE=: ce lien est d\u00e9sactiv\u00e9 car il n''est pas imbriqu\u00e9 dans un formulaire JSF.
-com.sun.faces.COMMAND_NOT_NESTED_WITHIN_FORM=Une ou plusieurs instances d''UICommand d\u00e9tect\u00e9es dans la vue et non imbriqu\u00e9es dans un formulaire UIForm.  Les actions associ\u00e9es \u00e0 ces commandes ne seront pas invoqu\u00e9es.
-com.sun.faces.COMPONENT_NOT_FOUND_ERROR=Composant non d\u00e9tect\u00e9 pour l''identificateur ''{0}''.
-com.sun.faces.COMPONENT_NOT_FOUND_IN_VIEW_WARNING=Impossible de d\u00e9tecter le composant dont l''ID est ''{0}'' dans la vue.
+com.sun.faces.ASSERTION_FAILED=Echec de l\u2019assertion
+com.sun.faces.ATTRIBUTE_NOT_SUPORTED=L\u2019attribut \u00ab{0}\u00bb n\u2019est pas pris en charge pour le type de composant \u00ab{1}\u00bb.
+com.sun.faces.CANT_CONVERT_VALUE=Impossible de convertir la propri\u00e9t\u00e9 \u00ab{0}\u00bb en type de valeur \u00ab{1}\u00bb.
+com.sun.faces.CANT_CLOSE_INPUT_STREAM=Impossible de fermer le flux d\u2019entr\u00e9e.
+com.sun.faces.CANT_CREATE_LIFECYCLE_ERROR=Impossible de cr\u00e9er le Lifecycle pour l\u2019id \u00ab{0}\u00bb.
+com.sun.faces.CANT_INSTANTIATE_CLASS=Impossible d\u2019instancier la classe \u00ab{0}\u00bb.
+com.sun.faces.CANT_INTROSPECT_CLASS=Impossible d\u2019appliquer une introspection \u00e0 la classe \u00ab{0}\u00bb.
+com.sun.faces.CANT_PARSE_FILE=Impossible d\u2019analyser le fichier \u00ab{0}\u00bb. Erreur \u00e0 la ligne {1} colonne {2} : {3}.
+com.sun.faces.CHILD_NOT_OF_EXPECTED_TYPE=Le type de composant enfant \u00ab{0}\u00bb \u00e9tait attendu pour le type de composant \u2019{1}({2})\u2019\u2019.  \u00ab{3}\u00bb d\u00e9tect\u00e9.
+com.sun.faces.COMMAND_LINK_NO_FORM_MESSAGE=: ce lien est d\u00e9sactiv\u00e9 car il n\u2019est pas imbriqu\u00e9 dans un formulaire JSF.
+com.sun.faces.COMMAND_NOT_NESTED_WITHIN_FORM=Une ou plusieurs instances d\u2019UICommand d\u00e9tect\u00e9es dans la vue et non imbriqu\u00e9es dans un formulaire UIForm.  Les actions associ\u00e9es \u00e0 ces commandes ne seront pas invoqu\u00e9es.
+com.sun.faces.COMPONENT_NOT_FOUND_ERROR=Composant non d\u00e9tect\u00e9 pour l\u2019identificateur \u00ab{0}\u00bb.
+com.sun.faces.COMPONENT_NOT_FOUND_IN_VIEW_WARNING=Impossible de d\u00e9tecter le composant dont l\u2019ID est \u00ab{0}\u00bb dans la vue.
 com.sun.faces.CONTENT_TYPE_ERROR=Type de contenu non reconnu
-com.sun.faces.CONFIG_RENDERER_REGISTRATION_MISSING_RENDERKIT=Impossible d''enregistrer des renderers avec RenderKit \u00e0 l''aide de l''id {0}.  RenderKit inexistant.
-com.sun.faces.DUPLICATE_COMPONENT_ID_ERROR=L''ID de composant ''{0}'' a d\u00e9j\u00e0 \u00e9t\u00e9 d\u00e9tect\u00e9 dans la vue.
+com.sun.faces.CONFIG_RENDERER_REGISTRATION_MISSING_RENDERKIT=Impossible d\u2019enregistrer des renderers avec RenderKit \u00e0 l\u2019aide de l\u2019id {0}.  RenderKit inexistant.
+com.sun.faces.DUPLICATE_COMPONENT_ID_ERROR=L\u2019ID de composant \u00ab{0}\u00bb a d\u00e9j\u00e0 \u00e9t\u00e9 d\u00e9tect\u00e9 dans la vue.
 com.sun.faces.EMPTY_PARAMETER=Param\u00e8tre vide
 com.sun.faces.ENCODING_ERROR=Codage des caract\u00e8res non reconnu
-com.sun.faces.ERROR_GETTING_VALUE_BINDING=Impossible d''obtenir la ValueBinding pour la valeur ''{0}''.
-com.sun.faces.ERROR_GETTING_VALUEREF_VALUE=Impossible d''obtenir la valeur de l''expression d''appel par valeur ''{0}''.
-com.sun.faces.ERROR_OPENING_FILE=Impossible d''ouvrir le fichier de configuration ''{0}''.
-com.sun.faces.ERROR_PROCESSING_CONFIG=Une erreur inattendue s''est produite pendant le traitement de la configuration. 
-com.sun.faces.ERROR_REGISTERING_DTD=Impossible d''enregistrer le fichier DTD ''{0}''.
-com.sun.faces.ERROR_SETTING_BEAN_PROPERTY=Impossible de d\u00e9finir la propri\u00e9t\u00e9 de bean g\u00e9r\u00e9 ''{0}''.
-com.sun.faces.EVAL_ATTR_UNEXPECTED_TYPE=L''\u00e9valuation de l''expression de l''attribut ''{0}'' a g\u00e9n\u00e9r\u00e9 un type inattendu.  Valeur attendue : {1} ; valeur re\u00e7ue : {2}.
-com.sun.faces.FACES_CONTEXT_CONSTRUCTION_ERROR=Erreur de construction : un ou plusieurs param\u00e8tres d''entr\u00e9e peuvent \u00eatre null.
-com.sun.faces.FACES_SERVLET_MAPPING_CANNOT_BE_DETERMINED=Impossible de d\u00e9terminer le mappage de FaceServlet pour le chemin de servlet ''{0}''.
-com.sun.faces.FACES_SERVLET_MAPPING_INCORRECT=Le FacesServlet ne peut pas avoir d''\u00e9l\u00e9ment url-pattern ''/*''.  D\u00e9finissez un autre \u00e9l\u00e9ment url-pattern.
-com.sun.faces.FACES_CONTEXT_NOT_FOUND=Aucun FacesContext n''est disponible pour le traitement de cette requ\u00eate.  Ceci est probablement d\u00fb au fait que la requ\u00eate a \u00e9t\u00e9 envoy\u00e9e vers un chemin d''acc\u00e8s erron\u00e9.
-com.sun.faces.FILE_NOT_FOUND=Fichier non d\u00e9tect\u00e9 pour le fichier ''{0}''.
-com.sun.faces.ILLEGAL_ATTEMPT_SETTING_APPLICATION_ARTIFACT=Tentative non autoris\u00e9e de d\u00e9finition de {0} apr\u00e8s la restitution d''une r\u00e9ponse.
+com.sun.faces.ERROR_GETTING_VALUE_BINDING=Impossible d\u2019obtenir la ValueBinding pour la valeur \u00ab{0}\u00bb.
+com.sun.faces.ERROR_GETTING_VALUEREF_VALUE=Impossible d\u2019obtenir la valeur de l\u2019expression d\u2019appel par valeur \u00ab{0}\u00bb.
+com.sun.faces.ERROR_OPENING_FILE=Impossible d\u2019ouvrir le fichier de configuration \u00ab{0}\u00bb.
+com.sun.faces.ERROR_PROCESSING_CONFIG=Une erreur inattendue s\u2019est produite pendant le traitement de la configuration. 
+com.sun.faces.ERROR_REGISTERING_DTD=Impossible d\u2019enregistrer le fichier DTD \u00ab{0}\u00bb.
+com.sun.faces.ERROR_SETTING_BEAN_PROPERTY=Impossible de d\u00e9finir la propri\u00e9t\u00e9 de bean g\u00e9r\u00e9 \u00ab{0}\u00bb.
+com.sun.faces.EVAL_ATTR_UNEXPECTED_TYPE=L\u2019\u00e9valuation de l\u2019expression de l\u2019attribut \u00ab{0}\u00bb a g\u00e9n\u00e9r\u00e9 un type inattendu.  Valeur attendue : {1} ; valeur re\u00e7ue : {2}.
+com.sun.faces.FACES_CONTEXT_CONSTRUCTION_ERROR=Erreur de construction : un ou plusieurs param\u00e8tres d\u2019entr\u00e9e peuvent \u00eatre null.
+com.sun.faces.FACES_SERVLET_MAPPING_CANNOT_BE_DETERMINED=Impossible de d\u00e9terminer le mappage de FaceServlet pour le chemin de servlet \u00ab{0}\u00bb.
+com.sun.faces.FACES_SERVLET_MAPPING_INCORRECT=Le FacesServlet ne peut pas avoir d\u2019\u00e9l\u00e9ment url-pattern \u2019/*\u2019.  D\u00e9finissez un autre \u00e9l\u00e9ment url-pattern.
+com.sun.faces.FACES_CONTEXT_NOT_FOUND=Aucun FacesContext n\u2019est disponible pour le traitement de cette requ\u00eate.  Ceci est probablement d\u00fb au fait que la requ\u00eate a \u00e9t\u00e9 envoy\u00e9e vers un chemin d\u2019acc\u00e8s erron\u00e9.
+com.sun.faces.FILE_NOT_FOUND=Fichier non d\u00e9tect\u00e9 pour le fichier \u00ab{0}\u00bb.
+com.sun.faces.ILLEGAL_ATTEMPT_SETTING_APPLICATION_ARTIFACT=Tentative non autoris\u00e9e de d\u00e9finition de {0} apr\u00e8s la restitution d\u2019une r\u00e9ponse.
 com.sun.faces.ILLEGAL_CHARACTERS_ERROR=Caract\u00e8res non autoris\u00e9s
-com.sun.faces.ILLEGAL_IDENTIFIER_LVALUE_MODE=Utilisation non autoris\u00e9e d''un identificateur d''objet implicite en mode lValue : ''{0}''
-com.sun.faces.ILLEGAL_MODEL_REFERENCE=R\u00e9f\u00e9rence de mod\u00e8le non autoris\u00e9e dans ce contexte pour l''expression ''{0}''.
-com.sun.faces.ILLEGAL_VIEW_ID=ID de vue ''{0}'' non autoris\u00e9.  L''ID doit commencer par ''''/''''.
-com.sun.faces.INVALID_EXPRESSION=Expression non autoris\u00e9e : ''{0}''.
-com.sun.faces.INVALID_INIT_PARAM=Valeur incorrecte : ''{0}'', pour le param\u00e8tre d''initialisation ''{1}''.  Les valeurs tol\u00e9r\u00e9es sont ''true'' ou ''false''.  D\u00e9finition de la valeur par d\u00e9faut ''false''.
-com.sun.faces.INVALID_MESSAGE_SEVERITY_IN_CONFIG=Gravit\u00e9 de message non valide ''{0}'' d\u00e9finie dans la configuration.
-com.sun.faces.INVALID_SCOPE_LIFESPAN=L''\u00e9tendue de l''objet r\u00e9f\u00e9renc\u00e9 par l''expression ''{0}'', ''{1}'', est plus courte que celle du bean g\u00e9r\u00e9 r\u00e9f\u00e9rant (''{2}'') ''{3}''.
-com.sun.faces.LIFECYCLE_ID_ALREADY_ADDED=LifecycleId d\u00e9j\u00e0 ajout\u00e9 pour l''id ''{0}''.
-com.sun.faces.LIFECYCLE_ID_NOT_FOUND=LifecycleId non d\u00e9tect\u00e9 pour l''id ''{0}''.
-com.sun.faces.MAXIMUM_EVENTS_REACHED=Nombre maximum d''\u00e9v\u00e9nements ''{0}'' atteint.
-com.sun.faces.MANAGED_BEAN_CANNOT_SET_LIST_ARRAY_PROPERTY=Impossible de d\u00e9finir la propri\u00e9t\u00e9 cible ''{0}'' dans le bean g\u00e9r\u00e9 ''{1}''. La propri\u00e9t\u00e9 doit accepter des instances de List ou Array.
-com.sun.faces.MANAGED_BEAN_MAP_PROPERTY_INCORRECT_SETTER_ERROR=La propri\u00e9t\u00e9 ''{0}'' du bean g\u00e9r\u00e9 ''{1}'' est d\u00e9finie en tant que propri\u00e9t\u00e9 Map, mais le mutateur de la classe n''accepte pas d''instances de Map.
-com.sun.faces.MANAGED_BEAN_MAP_PROPERTY_INCORRECT_GETTER_ERROR=La propri\u00e9t\u00e9 ''{0}'' du bean g\u00e9r\u00e9 ''{1}'' est d\u00e9finie en tant que propri\u00e9t\u00e9 Map, mais le m\u00e9canisme d''obtention de la classe ne renvoie pas d''instances de Map.
-com.sun.faces.MANAGED_BEAN_LIST_SETTER_DOES_NOT_ACCEPT_LIST_OR_ARRAY_ERROR=La propri\u00e9t\u00e9 ''{0}'' du bean g\u00e9r\u00e9 ''{1}'' est d\u00e9finie en tant que propri\u00e9t\u00e9 list, mais le mutateur de la classe n''accepte pas d''instances de List ou d''Array.
-com.sun.faces.MANAGED_BEAN_LIST_SETTER_DOES_NOT_RETURN_LIST_OR_ARRAY_ERROR=La propri\u00e9t\u00e9 ''{0}'' du bean g\u00e9r\u00e9 ''{1}'' est d\u00e9finie en tant que propri\u00e9t\u00e9 list, mais le m\u00e9canisme d''obtention de la classe ne renvoie pas d''instances de List ou d''Array.
-com.sun.faces.MANAGED_BEAN_LIST_GETTER_ARRAY_NO_SETTER_ERROR=La propri\u00e9t\u00e9 ''{0}'' du bean g\u00e9r\u00e9 ''{1}'' est d\u00e9finie en tant que propri\u00e9t\u00e9 list.  Le m\u00e9canisme d''obtention renvoie un type array, mais il n''y a pas de mutateur associ\u00e9. 
-com.sun.faces.MANAGED_BEAN_EXISTING_VALUE_NOT_LIST=Impossible de d\u00e9finir la propri\u00e9t\u00e9 cible ''{0}'' dans le bean g\u00e9r\u00e9 ''{1}''. La propri\u00e9t\u00e9 cible a renvoy\u00e9 une valeur existante qui n''\u00e9tait pas une instance de List.
-com.sun.faces.MANAGED_BEAN_AS_LIST_CONFIG_ERROR=Configuration incorrecte du bean g\u00e9r\u00e9 ''{0}''. Le bean g\u00e9r\u00e9 est configur\u00e9 en tant que List, mais tente \u00e9galement de d\u00e9finir des entr\u00e9es de mappage ou des propri\u00e9t\u00e9s g\u00e9r\u00e9es.
-com.sun.faces.MANAGED_BEAN_AS_MAP_CONFIG_ERROR=Configuration incorrecte du bean g\u00e9r\u00e9 ''{0}''. Le bean g\u00e9r\u00e9 est configur\u00e9 en tant que Map, mais tente \u00e9galement de d\u00e9finir des propri\u00e9t\u00e9s g\u00e9r\u00e9es.
-com.sun.faces.MANAGED_BEAN_LIST_PROPERTY_CONFIG_ERROR=Configuration incorrecte du bean g\u00e9r\u00e9 ''{0}''. Le bean g\u00e9r\u00e9 contient une propri\u00e9t\u00e9 g\u00e9r\u00e9e nomm\u00e9e ''{1}'' avec des entr\u00e9es de liste, mais a ill\u00e9galement d\u00e9fini une valeur et/ou des entr\u00e9es de mappage.
-com.sun.faces.MANAGED_BEAN_MAP_PROPERTY_CONFIG_ERROR=Configuration incorrecte du bean g\u00e9r\u00e9 ''{0}''. Le bean g\u00e9r\u00e9 contient une propri\u00e9t\u00e9 g\u00e9r\u00e9e nomm\u00e9e ''{1}'' avec des entr\u00e9es de mappage, mais il a aussi ill\u00e9galement d\u00e9fini une valeur.
-com.sun.faces.MANAGED_BEAN_PROPERTY_CONFIG_ERROR=Configuration incorrecte du bean g\u00e9r\u00e9 ''{0}''. Le bean g\u00e9r\u00e9 contient une propri\u00e9t\u00e9 nomm\u00e9e ''{1}'' sans entr\u00e9es de liste ou de mappage ni \u00e9l\u00e9ments de valeur.
-com.sun.faces.MANAGED_BEAN_TYPE_CONVERSION_ERROR=Erreur lors de la conversion de la valeur ''{0}'' du bean g\u00e9r\u00e9 ''{3}'' du type ''{1}'' vers le type ''{2}''.
-com.sun.faces.MANAGED_BEAN_CLASS_NOT_FOUND_ERROR=La classe de bean ou de propri\u00e9t\u00e9 ''{0}'' du bean g\u00e9r\u00e9 ''{1}'' est introuvable.
-com.sun.faces.MANAGED_BEAN_CLASS_DEPENDENCY_NOT_FOUND_ERROR=La classe de bean ou de propri\u00e9t\u00e9 ''{0}'' du bean g\u00e9r\u00e9 ''{1}'' ne peut pas \u00eatre charg\u00e9e \u00e0 cause de l''absence de la d\u00e9pendance {2}.
-com.sun.faces.MANAGED_BEAN_CLASS_IS_NOT_PUBLIC_ERROR=La classe de bean g\u00e9r\u00e9 ''{0}'' du bean g\u00e9r\u00e9 ''{1}'' n''est pas d\u00e9clar\u00e9e publique.
-com.sun.faces.MANAGED_BEAN_CLASS_IS_ABSTRACT_ERROR=La classe de bean g\u00e9r\u00e9 ''{0}'' du bean g\u00e9r\u00e9 ''{1}'' est d\u00e9clar\u00e9e abstraite ou en tant qu''interface.
-com.sun.faces.MANAGED_BEAN_CLASS_NO_PUBLIC_NOARG_CTOR_ERROR=La classe de bean g\u00e9r\u00e9 ''{0}'' du bean g\u00e9r\u00e9 ''{1}'' ne d\u00e9clare pas de constructeur public sans argument.
-com.sun.faces.MANAGED_BEAN_INJECTION_ERROR=Erreur lors de l''injection de ressources dans le bean g\u00e9r\u00e9 ''{0}''
-com.sun.faces.MANAGED_BEAN_DEFINED_PROPERTY_CLASS_NOT_COMPATIBLE_ERROR=La propri\u00e9t\u00e9 ''{0}'' du bean g\u00e9r\u00e9 ''{1}'' est d\u00e9finie avec une classe de propri\u00e9t\u00e9 de ''{2}'', mais cette classe ne peut pas \u00eatre affect\u00e9e \u00e0 la propri\u00e9t\u00e9.
-com.sun.faces.MANAGED_BEAN_INTROSPECTION_ERROR=Introspection du bean g\u00e9r\u00e9 ''{0}'' impossible
-com.sun.faces.MANAGED_BEAN_PROPERTY_DOES_NOT_EXIST_ERROR=La propri\u00e9t\u00e9 ''{0}'' du bean g\u00e9r\u00e9 ''{1}'' n''existe pas.
-com.sun.faces.MANAGED_BEAN_PROPERTY_HAS_NO_SETTER_ERROR=La propri\u00e9t\u00e9 ''{0}'' du bean g\u00e9r\u00e9 ''{1}'' n''a pas de mutateur. 
-com.sun.faces.MANAGED_BEAN_PROPERTY_INCORRECT_ARGS_ERROR=La propri\u00e9t\u00e9 ''{0}'' du bean g\u00e9r\u00e9 ''{1}'' accepte plusieurs arguments.
-com.sun.faces.MANAGED_BEAN_UNABLE_TO_SET_PROPERTY_ERROR=Impossible de d\u00e9finir la propri\u00e9t\u00e9 ''{0}'' du bean g\u00e9r\u00e9 ''{1}''.
-com.sun.faces.MANAGED_BEAN_PROBLEMS_ERROR=Impossible de cr\u00e9er le bean g\u00e9r\u00e9 ''{0}''.  Les probl\u00e8mes suivants ont \u00e9t\u00e9 d\u00e9tect\u00e9s\u00a0:
-com.sun.faces.MANAGED_BEAN_PROBLEMS_STARTUP_ERROR=JSF ne pourra pas cr\u00e9\u00e9 le bean g\u00e9r\u00e9 ''{0}'' lorsqu''il sera demand\u00e9.  Les probl\u00e8mes suivants ont \u00e9t\u00e9 d\u00e9tect\u00e9s\u00a0:
-com.sun.faces.MANAGED_BEAN_UNKNOWN_PROCESSING_ERROR=Erreur inattendue lors du traitement du bean g\u00e9r\u00e9 ''{0}''
-com.sun.faces.MANAGED_BEAN_PROPERTY_UNKNOWN_PROCESSING_ERROR=Erreur inattendue lors du traitement de la propri\u00e9t\u00e9 g\u00e9r\u00e9e ''{0}''
-com.sun.faces.MANAGED_BEAN_INVALID_SCOPE=L''\u00e9tendue ''{0}'' ne repr\u00e9sente ni ''''view'''', ''''request'''', ''''session'''', ''''application'''', ni une ValueExpression (#{...}).
-com.sun.faces.MISSING_CLASS_ERROR=Classe manquante\u00a0: impossible de charger la classe ''{0}''.
-com.sun.faces.MISSING_RESOURCE_ERROR=Ressource manquante\u00a0: impossible d''obtenir le ResourceBundle. 
-com.sun.faces.MODELUPDATE_ERROR=Echec de la mise \u00e0 jour du mod\u00e8le pour la valeur ''{0}'' du mod\u00e8le ''{1}''.
-com.sun.faces.NAVIGATION_NO_MATCHING_OUTCOME=Impossible de trouver un cas de navigation correspondant depuis l''ID de vue ''{0}'' pour le r\u00e9sultat ''{1}''
-com.sun.faces.NAVIGATION_NO_MATCHING_OUTCOME_ACTION=Impossible de trouver un cas de navigation correspondant depuis l''ID de vue ''{0}'' pour l''action ''{1}'' avec le r\u00e9sultat ''{2}''.
-com.sun.faces.NAVIGATION_INVALID_QUERY_STRING=Cha\u00eene de requ\u00eate non valide dans le r\u00e9sultat ''{0}''
-com.sun.faces.NAMED_OBJECT_NOT_FOUND_ERROR=Erreur d''expression : objet nomm\u00e9 ''{0}'' non d\u00e9tect\u00e9
-com.sun.faces.NOT_NESTED_IN_FACES_TAG_ERROR=Non imbriqu\u00e9 dans une erreur UIComponentTag pour la balise avec classe de gestionnaire ''{0}''.
+com.sun.faces.ILLEGAL_IDENTIFIER_LVALUE_MODE=Utilisation non autoris\u00e9e d\u2019un identificateur d\u2019objet implicite en mode lValue : \u00ab{0}\u00bb
+com.sun.faces.ILLEGAL_MODEL_REFERENCE=R\u00e9f\u00e9rence de mod\u00e8le non autoris\u00e9e dans ce contexte pour l\u2019expression \u00ab{0}\u00bb.
+com.sun.faces.ILLEGAL_VIEW_ID=ID de vue \u00ab{0}\u00bb non autoris\u00e9.  L\u2019ID doit commencer par \u2019\u2019/\u2019\u2019.
+com.sun.faces.INVALID_EXPRESSION=Expression non autoris\u00e9e : \u00ab{0}\u00bb.
+com.sun.faces.INVALID_INIT_PARAM=Valeur incorrecte : \u00ab{0}\u00bb, pour le param\u00e8tre d\u2019initialisation \u00ab{1}\u00bb.  Les valeurs tol\u00e9r\u00e9es sont \u2019true\u2019 ou \u2019false\u2019.  D\u00e9finition de la valeur par d\u00e9faut \u2019false\u2019.
+com.sun.faces.INVALID_MESSAGE_SEVERITY_IN_CONFIG=Gravit\u00e9 de message non valide \u00ab{0}\u00bb d\u00e9finie dans la configuration.
+com.sun.faces.INVALID_SCOPE_LIFESPAN=L\u2019\u00e9tendue de l\u2019objet r\u00e9f\u00e9renc\u00e9 par l\u2019expression \u00ab{0}\u00bb, \u00ab{1}\u00bb, est plus courte que celle du bean g\u00e9r\u00e9 r\u00e9f\u00e9rant (\u00ab{2}\u00bb) \u00ab{3}\u00bb.
+com.sun.faces.LIFECYCLE_ID_ALREADY_ADDED=LifecycleId d\u00e9j\u00e0 ajout\u00e9 pour l\u2019id \u00ab{0}\u00bb.
+com.sun.faces.LIFECYCLE_ID_NOT_FOUND=LifecycleId non d\u00e9tect\u00e9 pour l\u2019id \u00ab{0}\u00bb.
+com.sun.faces.MAXIMUM_EVENTS_REACHED=Nombre maximum d\u2019\u00e9v\u00e9nements \u00ab{0}\u00bb atteint.
+com.sun.faces.MANAGED_BEAN_CANNOT_SET_LIST_ARRAY_PROPERTY=Impossible de d\u00e9finir la propri\u00e9t\u00e9 cible \u00ab{0}\u00bb dans le bean g\u00e9r\u00e9 \u00ab{1}\u00bb. La propri\u00e9t\u00e9 doit accepter des instances de List ou Array.
+com.sun.faces.MANAGED_BEAN_MAP_PROPERTY_INCORRECT_SETTER_ERROR=La propri\u00e9t\u00e9 \u00ab{0}\u00bb du bean g\u00e9r\u00e9 \u00ab{1}\u00bb est d\u00e9finie en tant que propri\u00e9t\u00e9 Map, mais le mutateur de la classe n\u2019accepte pas d\u2019instances de Map.
+com.sun.faces.MANAGED_BEAN_MAP_PROPERTY_INCORRECT_GETTER_ERROR=La propri\u00e9t\u00e9 \u00ab{0}\u00bb du bean g\u00e9r\u00e9 \u00ab{1}\u00bb est d\u00e9finie en tant que propri\u00e9t\u00e9 Map, mais le m\u00e9canisme d\u2019obtention de la classe ne renvoie pas d\u2019instances de Map.
+com.sun.faces.MANAGED_BEAN_LIST_SETTER_DOES_NOT_ACCEPT_LIST_OR_ARRAY_ERROR=La propri\u00e9t\u00e9 \u00ab{0}\u00bb du bean g\u00e9r\u00e9 \u00ab{1}\u00bb est d\u00e9finie en tant que propri\u00e9t\u00e9 list, mais le mutateur de la classe n\u2019accepte pas d\u2019instances de List ou d\u2019Array.
+com.sun.faces.MANAGED_BEAN_LIST_SETTER_DOES_NOT_RETURN_LIST_OR_ARRAY_ERROR=La propri\u00e9t\u00e9 \u00ab{0}\u00bb du bean g\u00e9r\u00e9 \u00ab{1}\u00bb est d\u00e9finie en tant que propri\u00e9t\u00e9 list, mais le m\u00e9canisme d\u2019obtention de la classe ne renvoie pas d\u2019instances de List ou d\u2019Array.
+com.sun.faces.MANAGED_BEAN_LIST_GETTER_ARRAY_NO_SETTER_ERROR=La propri\u00e9t\u00e9 \u00ab{0}\u00bb du bean g\u00e9r\u00e9 \u00ab{1}\u00bb est d\u00e9finie en tant que propri\u00e9t\u00e9 list.  Le m\u00e9canisme d\u2019obtention renvoie un type array, mais il n\u2019y a pas de mutateur associ\u00e9. 
+com.sun.faces.MANAGED_BEAN_EXISTING_VALUE_NOT_LIST=Impossible de d\u00e9finir la propri\u00e9t\u00e9 cible \u00ab{0}\u00bb dans le bean g\u00e9r\u00e9 \u00ab{1}\u00bb. La propri\u00e9t\u00e9 cible a renvoy\u00e9 une valeur existante qui n\u2019\u00e9tait pas une instance de List.
+com.sun.faces.MANAGED_BEAN_AS_LIST_CONFIG_ERROR=Configuration incorrecte du bean g\u00e9r\u00e9 \u00ab{0}\u00bb. Le bean g\u00e9r\u00e9 est configur\u00e9 en tant que List, mais tente \u00e9galement de d\u00e9finir des entr\u00e9es de mappage ou des propri\u00e9t\u00e9s g\u00e9r\u00e9es.
+com.sun.faces.MANAGED_BEAN_AS_MAP_CONFIG_ERROR=Configuration incorrecte du bean g\u00e9r\u00e9 \u00ab{0}\u00bb. Le bean g\u00e9r\u00e9 est configur\u00e9 en tant que Map, mais tente \u00e9galement de d\u00e9finir des propri\u00e9t\u00e9s g\u00e9r\u00e9es.
+com.sun.faces.MANAGED_BEAN_LIST_PROPERTY_CONFIG_ERROR=Configuration incorrecte du bean g\u00e9r\u00e9 \u00ab{0}\u00bb. Le bean g\u00e9r\u00e9 contient une propri\u00e9t\u00e9 g\u00e9r\u00e9e nomm\u00e9e \u00ab{1}\u00bb avec des entr\u00e9es de liste, mais a ill\u00e9galement d\u00e9fini une valeur et/ou des entr\u00e9es de mappage.
+com.sun.faces.MANAGED_BEAN_MAP_PROPERTY_CONFIG_ERROR=Configuration incorrecte du bean g\u00e9r\u00e9 \u00ab{0}\u00bb. Le bean g\u00e9r\u00e9 contient une propri\u00e9t\u00e9 g\u00e9r\u00e9e nomm\u00e9e \u00ab{1}\u00bb avec des entr\u00e9es de mappage, mais il a aussi ill\u00e9galement d\u00e9fini une valeur.
+com.sun.faces.MANAGED_BEAN_PROPERTY_CONFIG_ERROR=Configuration incorrecte du bean g\u00e9r\u00e9 \u00ab{0}\u00bb. Le bean g\u00e9r\u00e9 contient une propri\u00e9t\u00e9 nomm\u00e9e \u00ab{1}\u00bb sans entr\u00e9es de liste ou de mappage ni \u00e9l\u00e9ments de valeur.
+com.sun.faces.MANAGED_BEAN_TYPE_CONVERSION_ERROR=Erreur lors de la conversion de la valeur \u00ab{0}\u00bb du bean g\u00e9r\u00e9 \u00ab{3}\u00bb du type \u00ab{1}\u00bb vers le type \u00ab{2}\u00bb.
+com.sun.faces.MANAGED_BEAN_CLASS_NOT_FOUND_ERROR=La classe de bean ou de propri\u00e9t\u00e9 \u00ab{0}\u00bb du bean g\u00e9r\u00e9 \u00ab{1}\u00bb est introuvable.
+com.sun.faces.MANAGED_BEAN_CLASS_DEPENDENCY_NOT_FOUND_ERROR=La classe de bean ou de propri\u00e9t\u00e9 \u00ab{0}\u00bb du bean g\u00e9r\u00e9 \u00ab{1}\u00bb ne peut pas \u00eatre charg\u00e9e \u00e0 cause de l\u2019absence de la d\u00e9pendance {2}.
+com.sun.faces.MANAGED_BEAN_CLASS_IS_NOT_PUBLIC_ERROR=La classe de bean g\u00e9r\u00e9 \u00ab{0}\u00bb du bean g\u00e9r\u00e9 \u00ab{1}\u00bb n\u2019est pas d\u00e9clar\u00e9e publique.
+com.sun.faces.MANAGED_BEAN_CLASS_IS_ABSTRACT_ERROR=La classe de bean g\u00e9r\u00e9 \u00ab{0}\u00bb du bean g\u00e9r\u00e9 \u00ab{1}\u00bb est d\u00e9clar\u00e9e abstraite ou en tant qu\u2019interface.
+com.sun.faces.MANAGED_BEAN_CLASS_NO_PUBLIC_NOARG_CTOR_ERROR=La classe de bean g\u00e9r\u00e9 \u00ab{0}\u00bb du bean g\u00e9r\u00e9 \u00ab{1}\u00bb ne d\u00e9clare pas de constructeur public sans argument.
+com.sun.faces.MANAGED_BEAN_INJECTION_ERROR=Erreur lors de l\u2019injection de ressources dans le bean g\u00e9r\u00e9 \u00ab{0}\u00bb
+com.sun.faces.MANAGED_BEAN_DEFINED_PROPERTY_CLASS_NOT_COMPATIBLE_ERROR=La propri\u00e9t\u00e9 \u00ab{0}\u00bb du bean g\u00e9r\u00e9 \u00ab{1}\u00bb est d\u00e9finie avec une classe de propri\u00e9t\u00e9 de \u00ab{2}\u00bb, mais cette classe ne peut pas \u00eatre affect\u00e9e \u00e0 la propri\u00e9t\u00e9.
+com.sun.faces.MANAGED_BEAN_INTROSPECTION_ERROR=Introspection du bean g\u00e9r\u00e9 \u00ab{0}\u00bb impossible
+com.sun.faces.MANAGED_BEAN_PROPERTY_DOES_NOT_EXIST_ERROR=La propri\u00e9t\u00e9 \u00ab{0}\u00bb du bean g\u00e9r\u00e9 \u00ab{1}\u00bb n\u2019existe pas.
+com.sun.faces.MANAGED_BEAN_PROPERTY_HAS_NO_SETTER_ERROR=La propri\u00e9t\u00e9 \u00ab{0}\u00bb du bean g\u00e9r\u00e9 \u00ab{1}\u00bb n\u2019a pas de mutateur. 
+com.sun.faces.MANAGED_BEAN_PROPERTY_INCORRECT_ARGS_ERROR=La propri\u00e9t\u00e9 \u00ab{0}\u00bb du bean g\u00e9r\u00e9 \u00ab{1}\u00bb accepte plusieurs arguments.
+com.sun.faces.MANAGED_BEAN_UNABLE_TO_SET_PROPERTY_ERROR=Impossible de d\u00e9finir la propri\u00e9t\u00e9 \u00ab{0}\u00bb du bean g\u00e9r\u00e9 \u00ab{1}\u00bb.
+com.sun.faces.MANAGED_BEAN_PROBLEMS_ERROR=Impossible de cr\u00e9er le bean g\u00e9r\u00e9 \u00ab{0}\u00bb.  Les probl\u00e8mes suivants ont \u00e9t\u00e9 d\u00e9tect\u00e9s\u00a0:
+com.sun.faces.MANAGED_BEAN_PROBLEMS_STARTUP_ERROR=JSF ne pourra pas cr\u00e9\u00e9 le bean g\u00e9r\u00e9 \u00ab{0}\u00bb lorsqu\u2019il sera demand\u00e9.  Les probl\u00e8mes suivants ont \u00e9t\u00e9 d\u00e9tect\u00e9s\u00a0:
+com.sun.faces.MANAGED_BEAN_UNKNOWN_PROCESSING_ERROR=Erreur inattendue lors du traitement du bean g\u00e9r\u00e9 \u00ab{0}\u00bb
+com.sun.faces.MANAGED_BEAN_PROPERTY_UNKNOWN_PROCESSING_ERROR=Erreur inattendue lors du traitement de la propri\u00e9t\u00e9 g\u00e9r\u00e9e \u00ab{0}\u00bb
+com.sun.faces.MANAGED_BEAN_INVALID_SCOPE=L\u2019\u00e9tendue \u00ab{0}\u00bb ne repr\u00e9sente ni \u2019\u2019view\u2019\u2019, \u2019\u2019request\u2019\u2019, \u2019\u2019session\u2019\u2019, \u2019\u2019application\u2019\u2019, ni une ValueExpression (#{...}).
+com.sun.faces.MISSING_CLASS_ERROR=Classe manquante\u00a0: impossible de charger la classe \u00ab{0}\u00bb.
+com.sun.faces.MISSING_RESOURCE_ERROR=Ressource manquante\u00a0: impossible d\u2019obtenir le ResourceBundle. 
+com.sun.faces.MODELUPDATE_ERROR=Echec de la mise \u00e0 jour du mod\u00e8le pour la valeur \u00ab{0}\u00bb du mod\u00e8le \u00ab{1}\u00bb.
+com.sun.faces.NAVIGATION_NO_MATCHING_OUTCOME=Impossible de trouver un cas de navigation correspondant depuis l\u2019ID de vue \u00ab{0}\u00bb pour le r\u00e9sultat \u00ab{1}\u00bb
+com.sun.faces.NAVIGATION_NO_MATCHING_OUTCOME_ACTION=Impossible de trouver un cas de navigation correspondant depuis l\u2019ID de vue \u00ab{0}\u00bb pour l\u2019action \u00ab{1}\u00bb avec le r\u00e9sultat \u00ab{2}\u00bb.
+com.sun.faces.NAVIGATION_INVALID_QUERY_STRING=Cha\u00eene de requ\u00eate non valide dans le r\u00e9sultat \u00ab{0}\u00bb
+com.sun.faces.NAMED_OBJECT_NOT_FOUND_ERROR=Erreur d\u2019expression : objet nomm\u00e9 \u00ab{0}\u00bb non d\u00e9tect\u00e9
+com.sun.faces.NOT_NESTED_IN_FACES_TAG_ERROR=Non imbriqu\u00e9 dans une erreur UIComponentTag pour la balise avec classe de gestionnaire \u00ab{0}\u00bb.
 com.sun.faces.NOT_NESTED_IN_TYPE_TAG_ERROR=La balise {0} doit \u00eatre imbriqu\u00e9e dans une balise associ\u00e9e \u00e0 un composant du type {1}.
-com.sun.faces.NO_DTD_FOUND_ERROR=Impossible de localiser un fichier DTD avec PUBLIC ID ''{0}'' \u00e0 l''adresse ''{1}''.
-com.sun.faces.NULL_BODY_CONTENT_ERROR=BodyContent est null pour la balise avec classe de gestionnaire ''{0}''.
-com.sun.faces.NULL_COMPONENT_ERROR=Erreur de construction : l''argument du composant est null.
-com.sun.faces.NULL_CONFIGURATION=Aucune configuration charg\u00e9e pour l''application
-com.sun.faces.NULL_CONTEXT_ERROR=Erreur d''argument : l''argument du contexte est null.
-com.sun.faces.NULL_EVENT_ERROR=Erreur d''argument : l''argument de l''\u00e9v\u00e9nement est null.
+com.sun.faces.NO_DTD_FOUND_ERROR=Impossible de localiser un fichier DTD avec PUBLIC ID \u00ab{0}\u00bb \u00e0 l\u2019adresse \u00ab{1}\u00bb.
+com.sun.faces.NULL_BODY_CONTENT_ERROR=BodyContent est null pour la balise avec classe de gestionnaire \u00ab{0}\u00bb.
+com.sun.faces.NULL_COMPONENT_ERROR=Erreur de construction : l\u2019argument du composant est null.
+com.sun.faces.NULL_CONFIGURATION=Aucune configuration charg\u00e9e pour l\u2019application
+com.sun.faces.NULL_CONTEXT_ERROR=Erreur d\u2019argument : l\u2019argument du contexte est null.
+com.sun.faces.NULL_EVENT_ERROR=Erreur d\u2019argument : l\u2019argument de l\u2019\u00e9v\u00e9nement est null.
 com.sun.faces.NULL_FORVALUE=Composant "{0}" non d\u00e9tect\u00e9
-com.sun.faces.NULL_HANDLER_ERROR=Erreur d''argument : l''argument de Handler est null.
-com.sun.faces.NULL_LOCALE_ERROR=Erreur d''argument : l''argument de Locale est null.
-com.sun.faces.NULL_MESSAGE_ERROR=Erreur d''argument : le param\u00e8tre Message ne peut pas \u00eatre null.
-com.sun.faces.NULL_PARAMETERS_ERROR=Erreur d''argument : le param\u00e8tre ''{0}'' est null.
-com.sun.faces.NULL_REQUEST_VIEW_ERROR=Erreur d''argument : l''argument Request View est null.
-com.sun.faces.NULL_RESPONSE_STREAM_ERROR=Erreur d''argument : l''argument ResponseStream est null.
-com.sun.faces.NULL_RESPONSE_VIEW_ERROR=Erreur d''argument : l''argument ResponseView est null.
-com.sun.faces.NULL_RESPONSE_WRITER_ERROR=Erreur d''argument : l''argument ResponseWriter est null.
-com.sun.faces.OBJECT_CREATION_ERROR=Un ou plusieurs objets d''application configur\u00e9s n''ont pas pu \u00eatre cr\u00e9\u00e9s.  V\u00e9rifiez les journaux de votre application Web pour plus de d\u00e9tails.
-com.sun.faces.OPTION_NOT_SELECT_ITEM=Erreur d''argument : une option du composant ''{0}'' n''\u00e9tait pas une instance de javax.faces.model.SelectItem.  Type d\u00e9tect\u00e9\u00a0: ''{1}''.
-com.sun.faces.OUTCOME_TARGET_BUTTON_NO_MATCH=: ce bouton est d\u00e9sactiv\u00e9 car un cas de navigation n''a pas eu de correspondance.
-com.sun.faces.OUTCOME_TARGET_LINK_NO_MATCH=: ce lien est d\u00e9sactiv\u00e9 car un cas de navigation n''a pas eu de correspondance.
-com.sun.faces.PHASE_ID_OUT_OF_BOUNDS=PhaseId hors limites pour l''id ''{0}''.
-com.sun.faces.RENDERER_NOT_FOUND=Renderer non d\u00e9tect\u00e9 pour le type de Renderer ''{0}''.
-com.sun.faces.REQUEST_VIEW_ALREADY_SET_ERROR=Erreur d''\u00e9tat : RequestView a d\u00e9j\u00e0 \u00e9t\u00e9 d\u00e9fini pour cette requ\u00eate.
-com.sun.faces.RESOURCE_INVALID_FORMAT_ERROR=""Format de ressource non valide.  La propri\u00e9t\u00e9 ''{0}'' ne peut pas \u00eatre analys\u00e9e."
-com.sun.faces.RESOURCE_INVALID_FORMAT_COLON_ERROR=Format de ressource non valide.  La propri\u00e9t\u00e9 ''{0}'' contient plusieurs caract\u00e8res deux-points (:).
-com.sun.faces.RESOURCE_INVALID_FORMAT_NO_LIBRARY_NAME_ERROR=Format de ressource non valide.  La propri\u00e9t\u00e9 ''{0}'' ne peut pas \u00eatre analys\u00e9e pour extraire le nom de la ressource et le nom de la biblioth\u00e8que."
-com.sun.faces.SAVING_STATE_ERROR=Erreur lors de l''enregistrement de l''\u00e9tat.
-com.sun.faces.SUPPORTS_COMPONENT_ERROR=Erreur d''argument : ''{0}'' n''est pas pris en charge pour ce renderer.
-com.sun.faces.TYPECONVERSION_ERROR=Erreur de conversion lors de la d\u00e9finition de la valeur ''{0}'' pour ''{1}''. 
-com.sun.faces.VALIDATION_COMMAND_ERROR=Erreur de validation ''{0}'' doit avoir une valeur ou un attribut d''image.
-com.sun.faces.VALIDATION_EL_ERROR=Erreur de validation Expression non valide pour ''{0}''
-com.sun.faces.VALIDATION_ID_ERROR=Erreur de validation Les balises JSF suivantes doivent contenir des ID : ''{0}''
-com.sun.faces.CANNOT_CONVERT=Impossible de r\u00e9soudre une instance de Converter \u00e0 l''aide de converterId ''{0}'' ou de binding ''{1}''.
-com.sun.faces.CANNOT_VALIDATE=Impossible de r\u00e9soudre une instance de Validator \u00e0 l''aide de validatorId ''{0}'' ou de binding ''{1}''.
-com.sun.faces.verifier.CLASS_NOT_FOUND=La classe [{0}:{1}] n''existe pas.
-com.sun.faces.verifier.CLASS_MISSING_DEP=Impossible de charger la classe [{0}:{1}] en l''absence de la d\u00e9pendance -> {2}
-com.sun.faces.verifier.NON_PUBLIC_DEF_CTOR=La classe [{0}:{1}] contient un constructeur sans argument, mais n''est pas publique.
+com.sun.faces.NULL_HANDLER_ERROR=Erreur d\u2019argument : l\u2019argument de Handler est null.
+com.sun.faces.NULL_LOCALE_ERROR=Erreur d\u2019argument : l\u2019argument de Locale est null.
+com.sun.faces.NULL_MESSAGE_ERROR=Erreur d\u2019argument : le param\u00e8tre Message ne peut pas \u00eatre null.
+com.sun.faces.NULL_PARAMETERS_ERROR=Erreur d\u2019argument : le param\u00e8tre \u00ab{0}\u00bb est null.
+com.sun.faces.NULL_REQUEST_VIEW_ERROR=Erreur d\u2019argument : l\u2019argument Request View est null.
+com.sun.faces.NULL_RESPONSE_STREAM_ERROR=Erreur d\u2019argument : l\u2019argument ResponseStream est null.
+com.sun.faces.NULL_RESPONSE_VIEW_ERROR=Erreur d\u2019argument : l\u2019argument ResponseView est null.
+com.sun.faces.NULL_RESPONSE_WRITER_ERROR=Erreur d\u2019argument : l\u2019argument ResponseWriter est null.
+com.sun.faces.NULL_VIEW_ID=Argument Error: view id argument is null.
+com.sun.faces.OBJECT_CREATION_ERROR=Un ou plusieurs objets d\u2019application configur\u00e9s n\u2019ont pas pu \u00eatre cr\u00e9\u00e9s.  V\u00e9rifiez les journaux de votre application Web pour plus de d\u00e9tails.
+com.sun.faces.OPTION_NOT_SELECT_ITEM=Erreur d\u2019argument : une option du composant \u00ab{0}\u00bb n\u2019\u00e9tait pas une instance de javax.faces.model.SelectItem.  Type d\u00e9tect\u00e9\u00a0: \u00ab{1}\u00bb.
+com.sun.faces.OUTCOME_TARGET_BUTTON_NO_MATCH=: ce bouton est d\u00e9sactiv\u00e9 car un cas de navigation n\u2019a pas eu de correspondance.
+com.sun.faces.OUTCOME_TARGET_LINK_NO_MATCH=: ce lien est d\u00e9sactiv\u00e9 car un cas de navigation n\u2019a pas eu de correspondance.
+com.sun.faces.PHASE_ID_OUT_OF_BOUNDS=PhaseId hors limites pour l\u2019id \u00ab{0}\u00bb.
+com.sun.faces.RENDERER_NOT_FOUND=Renderer non d\u00e9tect\u00e9 pour le type de Renderer \u00ab{0}\u00bb.
+com.sun.faces.REQUEST_VIEW_ALREADY_SET_ERROR=Erreur d\u2019\u00e9tat : RequestView a d\u00e9j\u00e0 \u00e9t\u00e9 d\u00e9fini pour cette requ\u00eate.
+com.sun.faces.RESOURCE_INVALID_FORMAT_ERROR=""Format de ressource non valide.  La propri\u00e9t\u00e9 \u00ab{0}\u00bb ne peut pas \u00eatre analys\u00e9e."
+com.sun.faces.RESOURCE_INVALID_FORMAT_COLON_ERROR=Format de ressource non valide.  La propri\u00e9t\u00e9 \u00ab{0}\u00bb contient plusieurs caract\u00e8res deux-points (:).
+com.sun.faces.RESOURCE_INVALID_FORMAT_NO_LIBRARY_NAME_ERROR=Format de ressource non valide.  La propri\u00e9t\u00e9 \u00ab{0}\u00bb ne peut pas \u00eatre analys\u00e9e pour extraire le nom de la ressource et le nom de la biblioth\u00e8que."
+com.sun.faces.SAVING_STATE_ERROR=Erreur lors de l\u2019enregistrement de l\u2019\u00e9tat.
+com.sun.faces.SUPPORTS_COMPONENT_ERROR=Erreur d\u2019argument : \u00ab{0}\u00bb n\u2019est pas pris en charge pour ce renderer.
+com.sun.faces.TYPECONVERSION_ERROR=Erreur de conversion lors de la d\u00e9finition de la valeur \u00ab{0}\u00bb pour \u00ab{1}\u00bb. 
+com.sun.faces.VALIDATION_COMMAND_ERROR=Erreur de validation \u00ab{0}\u00bb doit avoir une valeur ou un attribut d\u2019image.
+com.sun.faces.VALIDATION_EL_ERROR=Erreur de validation Expression non valide pour \u00ab{0}\u00bb
+com.sun.faces.VALIDATION_ID_ERROR=Erreur de validation Les balises JSF suivantes doivent contenir des ID : \u00ab{0}\u00bb
+com.sun.faces.CANNOT_CONVERT=Impossible de r\u00e9soudre une instance de Converter \u00e0 l\u2019aide de converterId \u00ab{0}\u00bb ou de binding \u00ab{1}\u00bb.
+com.sun.faces.CANNOT_VALIDATE=Impossible de r\u00e9soudre une instance de Validator \u00e0 l\u2019aide de validatorId \u00ab{0}\u00bb ou de binding \u00ab{1}\u00bb.
+com.sun.faces.verifier.CLASS_NOT_FOUND=La classe [{0}:{1}] n\u2019existe pas.
+com.sun.faces.verifier.CLASS_MISSING_DEP=Impossible de charger la classe [{0}:{1}] en l\u2019absence de la d\u00e9pendance -> {2}
+com.sun.faces.verifier.NON_PUBLIC_DEF_CTOR=La classe [{0}:{1}] contient un constructeur sans argument, mais n\u2019est pas publique.
 com.sun.faces.verifier.NO_DEF_CTOR=La classe [{0}:{1}] ne contient pas de constructeur public sans argument.
-com.sun.faces.verifier.WRONG_TYPE=La classe [{0}:{1}] n''impl\u00e9mente pas ni n''\u00e9tend {2}.
+com.sun.faces.verifier.WRONG_TYPE=La classe [{0}:{1}] n\u2019impl\u00e9mente pas ni n\u2019\u00e9tend {2}.
 
 
-com.sun.faces.CYCLIC_REFERENCE_ERROR=Le bean g\u00e9r\u00e9 ''{0}'' contient des r\u00e9f\u00e9rences cycliques.  Chemin d''\u00e9valuation : ''{1}''.
-com.sun.faces.OBJECT_IS_READONLY=L''objet {0} est en lecture seule.
-com.sun.faces.INCORRECT_JSP_VERSION=Il semble que la version JSP du conteneur soit ant\u00e9rieure \u00e0 2.1 et soit donc incapable de localiser la fabrique d''expressions EL RI, ''{0}''.  Si vous n''utilisez ni JSP ni la fabrique EL RI, assurez-vous que le param\u00e8tre d''initialisation du contexte, ''{1}'', soit d\u00e9fini correctement.
+com.sun.faces.CYCLIC_REFERENCE_ERROR=Le bean g\u00e9r\u00e9 \u00ab{0}\u00bb contient des r\u00e9f\u00e9rences cycliques.  Chemin d\u2019\u00e9valuation : \u00ab{1}\u00bb.
+com.sun.faces.OBJECT_IS_READONLY=L\u2019objet {0} est en lecture seule.
+com.sun.faces.INCORRECT_JSP_VERSION=Il semble que la version JSP du conteneur soit ant\u00e9rieure \u00e0 2.1 et soit donc incapable de localiser la fabrique d\u2019expressions EL RI, \u00ab{0}\u00bb.  Si vous n\u2019utilisez ni JSP ni la fabrique EL RI, assurez-vous que le param\u00e8tre d\u2019initialisation du contexte, \u00ab{1}\u00bb, soit d\u00e9fini correctement.
 
 #com.sun.faces.el.PropertyResolverImpl
 com.sun.faces.OUT_OF_BOUNDS_ERROR=Index {1} hors limites pour {0}
-com.sun.faces.PROPERTY_TYPE_ERROR={0} n''est pas de type Array ou List.
+com.sun.faces.PROPERTY_TYPE_ERROR={0} n\u2019est pas de type Array ou List.
 com.sun.faces.SIZE_OUT_OF_BOUNDS_ERROR=Index {1} hors limites pour {0} avec une longueur de {2}
-com.sun.faces.RESTORE_VIEW_ERROR=La vue ''{0}'' n''a pas pu \u00eatre restaur\u00e9e.
+com.sun.faces.RESTORE_VIEW_ERROR=La vue \u00ab{0}\u00bb n\u2019a pas pu \u00eatre restaur\u00e9e.
 
-com.sun.faces.CANT_WRITE_ID_ATTRIBUTE=Impossible d''\u00e9crire l''attribut d''ID ''{0}''.
+com.sun.faces.CANT_WRITE_ID_ATTRIBUTE=Impossible d\u2019\u00e9crire l\u2019attribut d\u2019ID \u00ab{0}\u00bb.
 com.sun.faces.NOT_NESTED_IN_UICOMPONENT_TAG_ERROR=Non imbriqu\u00e9 dans un UIComponentTag.
-com.sun.faces.NO_COMPONENT_ASSOCIATED_WITH_UICOMPONENT_TAG=Aucun composant n''est associ\u00e9 \u00e0 UIComponentTag.
+com.sun.faces.NO_COMPONENT_ASSOCIATED_WITH_UICOMPONENT_TAG=Aucun composant n\u2019est associ\u00e9 \u00e0 UIComponentTag.
 
-com.sun.faces.JS_RESOURCE_WRITING_ERROR=Impossible d''\u00e9crire le fichier JavaScript sur le client.
+com.sun.faces.JS_RESOURCE_WRITING_ERROR=Impossible d\u2019\u00e9crire le fichier JavaScript sur le client.
 
-com.sun.faces.RESOURCE_TARGET_NOT_AVAILABLE=Une ou plusieurs ressources partagent la cible ''{0}'', mais aucun composant ''{0}'' n''a \u00e9t\u00e9 d\u00e9fini dans la vue.
+com.sun.faces.RESOURCE_TARGET_NOT_AVAILABLE=Une ou plusieurs ressources partagent la cible \u00ab{0}\u00bb, mais aucun composant \u00ab{0}\u00bb n\u2019a \u00e9t\u00e9 d\u00e9fini dans la vue.
 com.sun.faces.ARGUMENTS_NOT_LEGAL_WITH_CC_ATTRS_EXPR=Illegal attempt to pass arguments to a composite component lookup expression (i.e. cc.attrs.[identifier]).
-com.sun.faces.partial.statesaving.ERROR_RESTORING_STATE_FOR_COMPONENT=Unexpected error restoring state for component with id ''{0}''.  Cause: {1}.
-com.sun.faces.MISSING_COMPONENT_ATTRIBUTE_VALUE=The following attribute(s) are required, but no values have been supplied for them: ''{0}''.
-com.sun.faces.MISSING_COMPONENT_FACET=The following facets(s) are required, but no facets have been supplied for them: ''{0}''.
-com.sun.faces.MISSING_COMPONENT_METADATA=The composite component metadata for component with clientid ''{0}'' cannot be found.  
+com.sun.faces.partial.statesaving.ERROR_RESTORING_STATE_FOR_COMPONENT=Unexpected error restoring state for component with id \u00ab{0}\u00bb.  Cause: {1}.
+com.sun.faces.MISSING_COMPONENT_ATTRIBUTE_VALUE=The following attribute(s) are required, but no values have been supplied for them: \u00ab{0}\u00bb.
+com.sun.faces.MISSING_COMPONENT_FACET=The following facets(s) are required, but no facets have been supplied for them: \u00ab{0}\u00bb.
+com.sun.faces.MISSING_COMPONENT_METADATA=The composite component metadata for component with clientid \u00ab{0}\u00bb cannot be found.  
+com.sun.faces.MISSING_FORM_ERROR=The button/link/text component needs to have a Form in its ancestry. Please add <h:form>.
+com.sun.faces.MISSING_METADATA_ERROR=The metadata component needs to be nested within a f:metadata tag. Suggestion: enclose the necessary components within <f:metadata>
diff --git a/jsf-ri/src/main/resources/com/sun/faces/resources/Messages_ja.properties b/jsf-ri/src/main/resources/com/sun/faces/resources/Messages_ja.properties
index 441d50d..1ae9620 100644
--- a/jsf-ri/src/main/resources/com/sun/faces/resources/Messages_ja.properties
+++ b/jsf-ri/src/main/resources/com/sun/faces/resources/Messages_ja.properties
@@ -1,27 +1,31 @@
 #
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 #
-# Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+# Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
 #
 # The contents of this file are subject to the terms of either the GNU
 # General Public License Version 2 only ("GPL") or the Common Development
 # and Distribution License("CDDL") (collectively, the "License").  You
-# may not use this file except in compliance with the License. You can obtain
-# a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
-# or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
 # language governing permissions and limitations under the License.
 #
 # When distributing the software, include this License Header Notice in each
-# file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
-# Sun designates this particular file as subject to the "Classpath" exception
-# as provided by Sun in the GPL Version 2 section of the License file that
-# accompanied this code.  If applicable, add the following below the License
-# Header, with the fields enclosed by brackets [] replaced by your own
-# identifying information: "Portions Copyrighted [year]
-# [name of copyright owner]"
+# file and include the License file at packager/legal/LICENSE.txt.
 #
-# Contributor(s):
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
 #
+# Contributor(s):
 # If you wish your version of this file to be governed by only the CDDL or
 # only the GPL Version 2, indicate your decision by adding "[Contributor]
 # elects to include this software in this distribution under the [CDDL or GPL
@@ -132,6 +136,7 @@ com.sun.faces.NULL_REQUEST_VIEW_ERROR=\u5f15\u6570\u30a8\u30e9\u30fc: Request Vi
 com.sun.faces.NULL_RESPONSE_STREAM_ERROR=\u5f15\u6570\u30a8\u30e9\u30fc: ResponseStream \u5f15\u6570\u304c null \u3067\u3059\u3002
 com.sun.faces.NULL_RESPONSE_VIEW_ERROR=\u5f15\u6570\u30a8\u30e9\u30fc: ResponseView \u5f15\u6570\u304c null \u3067\u3059\u3002
 com.sun.faces.NULL_RESPONSE_WRITER_ERROR=\u5f15\u6570\u30a8\u30e9\u30fc: ResponseWriter \u5f15\u6570\u304c null \u3067\u3059\u3002
+com.sun.faces.NULL_VIEW_ID=Argument Error: view id argument is null.
 com.sun.faces.OBJECT_CREATION_ERROR=1 \u3064\u4ee5\u4e0a\u306e\u69cb\u6210\u3055\u308c\u305f\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u4f5c\u6210\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002\u8a73\u7d30\u306f\u3001Web \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30ed\u30b0\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002
 com.sun.faces.OPTION_NOT_SELECT_ITEM=\u5f15\u6570\u30a8\u30e9\u30fc: \u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8 ''{0}'' \u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u304c\u3001javax.faces.model.SelectItem \u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u898b\u3064\u304b\u3063\u305f\u30bf\u30a4\u30d7: ''{1}''\u3002
 com.sun.faces.OUTCOME_TARGET_BUTTON_NO_MATCH=: \u4e00\u81f4\u3059\u308b\u30ca\u30d3\u30b2\u30fc\u30b7\u30e7\u30f3\u30b1\u30fc\u30b9\u304c\u306a\u3044\u305f\u3081\u3001\u3053\u306e\u30dc\u30bf\u30f3\u306f\u7121\u52b9\u3067\u3059\u3002
@@ -179,3 +184,5 @@ com.sun.faces.partial.statesaving.ERROR_RESTORING_STATE_FOR_COMPONENT=Unexpected
 com.sun.faces.MISSING_COMPONENT_ATTRIBUTE_VALUE=The following attribute(s) are required, but no values have been supplied for them: ''{0}''.
 com.sun.faces.MISSING_COMPONENT_FACET=The following facets(s) are required, but no facets have been supplied for them: ''{0}''.
 com.sun.faces.MISSING_COMPONENT_METADATA=The composite component metadata for component with clientid ''{0}'' cannot be found.  
+com.sun.faces.MISSING_FORM_ERROR=The button/link/text component needs to have a Form in its ancestry. Please add <h:form>.
+com.sun.faces.MISSING_METADATA_ERROR=The metadata component needs to be nested within a f:metadata tag. Suggestion: enclose the necessary components within <f:metadata>
diff --git a/jsf-ri/src/main/resources/com/sun/faces/resources/Messages_ko.properties b/jsf-ri/src/main/resources/com/sun/faces/resources/Messages_ko.properties
index 0a1a48f..5d57544 100644
--- a/jsf-ri/src/main/resources/com/sun/faces/resources/Messages_ko.properties
+++ b/jsf-ri/src/main/resources/com/sun/faces/resources/Messages_ko.properties
@@ -1,27 +1,31 @@
 #
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 #
-# Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+# Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
 #
 # The contents of this file are subject to the terms of either the GNU
 # General Public License Version 2 only ("GPL") or the Common Development
 # and Distribution License("CDDL") (collectively, the "License").  You
-# may not use this file except in compliance with the License. You can obtain
-# a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
-# or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
 # language governing permissions and limitations under the License.
 #
 # When distributing the software, include this License Header Notice in each
-# file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
-# Sun designates this particular file as subject to the "Classpath" exception
-# as provided by Sun in the GPL Version 2 section of the License file that
-# accompanied this code.  If applicable, add the following below the License
-# Header, with the fields enclosed by brackets [] replaced by your own
-# identifying information: "Portions Copyrighted [year]
-# [name of copyright owner]"
+# file and include the License file at packager/legal/LICENSE.txt.
 #
-# Contributor(s):
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
 #
+# Contributor(s):
 # If you wish your version of this file to be governed by only the CDDL or
 # only the GPL Version 2, indicate your decision by adding "[Contributor]
 # elects to include this software in this distribution under the [CDDL or GPL
@@ -132,6 +136,7 @@ com.sun.faces.NULL_REQUEST_VIEW_ERROR=\uc778\uc218 \uc624\ub958: \uc694\uccad \u
 com.sun.faces.NULL_RESPONSE_STREAM_ERROR=\uc778\uc218 \uc624\ub958: ResponseStream \uc778\uc218\uac00 null\uc785\ub2c8\ub2e4.
 com.sun.faces.NULL_RESPONSE_VIEW_ERROR=\uc778\uc218 \uc624\ub958: ResponseView \uc778\uc218\uac00 null\uc785\ub2c8\ub2e4.
 com.sun.faces.NULL_RESPONSE_WRITER_ERROR=\uc778\uc218 \uc624\ub958: ResponseWriter \uc778\uc218\uac00 null\uc785\ub2c8\ub2e4.
+com.sun.faces.NULL_VIEW_ID=Argument Error: view id argument is null.
 com.sun.faces.OBJECT_CREATION_ERROR=\uad6c\uc131\ub41c \uc751\uc6a9 \ud504\ub85c\uadf8\ub7a8 \uac1d\uccb4\ub97c \ud558\ub098 \uc774\uc0c1 \ub9cc\ub4e4 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.  \uc790\uc138\ud55c \ub0b4\uc6a9\uc740 \uc6f9 \uc751\uc6a9 \ud504\ub85c\uadf8\ub7a8 \ub85c\uadf8\ub97c \ud655\uc778\ud558\uc2ed\uc2dc\uc624.
 com.sun.faces.OPTION_NOT_SELECT_ITEM=\uc778\uc218 \uc624\ub958: \uad6c\uc131 \uc694\uc18c \uc635\uc158 "{0}"\uc740(\ub294) javax.faces.model.SelectItem\uc758 \uc778\uc2a4\ud134\uc2a4\uac00 \uc544\ub2d9\ub2c8\ub2e4.  \uc720\ud615\uc744 \ucc3e\uc558\uc2b5\ub2c8\ub2e4: ''{1}''.
 com.sun.faces.OUTCOME_TARGET_BUTTON_NO_MATCH=: \ud0d0\uc0c9 \ud56d\ubaa9\uc744 \uc77c\uce58\uc2dc\ud0ac \uc218 \uc5c6\uc5b4\uc11c \uc774 \ubc84\ud2bc\uc774 \ube44\ud65c\uc131\ud654\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
@@ -179,3 +184,5 @@ com.sun.faces.partial.statesaving.ERROR_RESTORING_STATE_FOR_COMPONENT=Unexpected
 com.sun.faces.MISSING_COMPONENT_ATTRIBUTE_VALUE=The following attribute(s) are required, but no values have been supplied for them: ''{0}''.
 com.sun.faces.MISSING_COMPONENT_FACET=The following facets(s) are required, but no facets have been supplied for them: ''{0}''.
 com.sun.faces.MISSING_COMPONENT_METADATA=The composite component metadata for component with clientid ''{0}'' cannot be found.  
+com.sun.faces.MISSING_FORM_ERROR=The button/link/text component needs to have a Form in its ancestry. Please add <h:form>.
+com.sun.faces.MISSING_METADATA_ERROR=The metadata component needs to be nested within a f:metadata tag. Suggestion: enclose the necessary components within <f:metadata>
diff --git a/jsf-ri/src/main/resources/com/sun/faces/resources/Messages_pt_BR.properties b/jsf-ri/src/main/resources/com/sun/faces/resources/Messages_pt_BR.properties
index b59cc14..95eedd5 100644
--- a/jsf-ri/src/main/resources/com/sun/faces/resources/Messages_pt_BR.properties
+++ b/jsf-ri/src/main/resources/com/sun/faces/resources/Messages_pt_BR.properties
@@ -1,27 +1,31 @@
 #
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 #
-# Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+# Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
 #
 # The contents of this file are subject to the terms of either the GNU
 # General Public License Version 2 only ("GPL") or the Common Development
 # and Distribution License("CDDL") (collectively, the "License").  You
-# may not use this file except in compliance with the License. You can obtain
-# a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
-# or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
 # language governing permissions and limitations under the License.
 #
 # When distributing the software, include this License Header Notice in each
-# file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
-# Sun designates this particular file as subject to the "Classpath" exception
-# as provided by Sun in the GPL Version 2 section of the License file that
-# accompanied this code.  If applicable, add the following below the License
-# Header, with the fields enclosed by brackets [] replaced by your own
-# identifying information: "Portions Copyrighted [year]
-# [name of copyright owner]"
+# file and include the License file at packager/legal/LICENSE.txt.
 #
-# Contributor(s):
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
 #
+# Contributor(s):
 # If you wish your version of this file to be governed by only the CDDL or
 # only the GPL Version 2, indicate your decision by adding "[Contributor]
 # elects to include this software in this distribution under the [CDDL or GPL
@@ -132,6 +136,7 @@ com.sun.faces.NULL_REQUEST_VIEW_ERROR=Erro de argumento: O argumento RequestView
 com.sun.faces.NULL_RESPONSE_STREAM_ERROR=Erro de argumento: O argumento ResponseStream \u00e9 nulo.
 com.sun.faces.NULL_RESPONSE_VIEW_ERROR=Erro de argumento: O argumento ResponseView \u00e9 nulo.
 com.sun.faces.NULL_RESPONSE_WRITER_ERROR=Erro de argumento: O argumento ResponseWriter \u00e9 nulo.
+com.sun.faces.NULL_VIEW_ID=Argument Error: view id argument is null.
 com.sun.faces.OBJECT_CREATION_ERROR=Um ou mais objetos de aplicativo configurados n\u00e3o puderam ser criados.  Verifique os logs de aplicativo Web para obter detalhes.
 com.sun.faces.OPTION_NOT_SELECT_ITEM=Erro de argumento: Uma op\u00e7\u00e3o para o componente ''{0}'' n\u00e3o era uma inst\u00e2ncia de javax.faces.model.SelectItem.  Tipo encontrado: ''{1}''.
 com.sun.faces.OUTCOME_TARGET_BUTTON_NO_MATCH=: Este bot\u00e3o est\u00e1 desativado porque um caso de navega\u00e7\u00e3o n\u00e3o p\u00f4de ser correspondido.
@@ -179,3 +184,5 @@ com.sun.faces.partial.statesaving.ERROR_RESTORING_STATE_FOR_COMPONENT=Unexpected
 com.sun.faces.MISSING_COMPONENT_ATTRIBUTE_VALUE=The following attribute(s) are required, but no values have been supplied for them: ''{0}''.
 com.sun.faces.MISSING_COMPONENT_FACET=The following facets(s) are required, but no facets have been supplied for them: ''{0}''.
 com.sun.faces.MISSING_COMPONENT_METADATA=The composite component metadata for component with clientid ''{0}'' cannot be found.  
+com.sun.faces.MISSING_FORM_ERROR=The button/link/text component needs to have a Form in its ancestry. Please add <h:form>.
+com.sun.faces.MISSING_METADATA_ERROR=The metadata component needs to be nested within a f:metadata tag. Suggestion: enclose the necessary components within <f:metadata>
diff --git a/jsf-ri/src/main/resources/com/sun/faces/resources/Messages_zh_CN.properties b/jsf-ri/src/main/resources/com/sun/faces/resources/Messages_zh_CN.properties
index 243145e..4fd1602 100644
--- a/jsf-ri/src/main/resources/com/sun/faces/resources/Messages_zh_CN.properties
+++ b/jsf-ri/src/main/resources/com/sun/faces/resources/Messages_zh_CN.properties
@@ -1,27 +1,31 @@
 #
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 #
-# Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+# Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
 #
 # The contents of this file are subject to the terms of either the GNU
 # General Public License Version 2 only ("GPL") or the Common Development
 # and Distribution License("CDDL") (collectively, the "License").  You
-# may not use this file except in compliance with the License. You can obtain
-# a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
-# or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
 # language governing permissions and limitations under the License.
 #
 # When distributing the software, include this License Header Notice in each
-# file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
-# Sun designates this particular file as subject to the "Classpath" exception
-# as provided by Sun in the GPL Version 2 section of the License file that
-# accompanied this code.  If applicable, add the following below the License
-# Header, with the fields enclosed by brackets [] replaced by your own
-# identifying information: "Portions Copyrighted [year]
-# [name of copyright owner]"
+# file and include the License file at packager/legal/LICENSE.txt.
 #
-# Contributor(s):
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
 #
+# Contributor(s):
 # If you wish your version of this file to be governed by only the CDDL or
 # only the GPL Version 2, indicate your decision by adding "[Contributor]
 # elects to include this software in this distribution under the [CDDL or GPL
@@ -132,6 +136,7 @@ com.sun.faces.NULL_REQUEST_VIEW_ERROR=\u53c2\u6570\u9519\u8bef\uff1aRequest View
 com.sun.faces.NULL_RESPONSE_STREAM_ERROR=\u53c2\u6570\u9519\u8bef\uff1aResponseStream \u53c2\u6570\u4e3a null\u3002
 com.sun.faces.NULL_RESPONSE_VIEW_ERROR=\u53c2\u6570\u9519\u8bef\uff1aResponseView \u53c2\u6570\u4e3a null\u3002
 com.sun.faces.NULL_RESPONSE_WRITER_ERROR=\u53c2\u6570\u9519\u8bef\uff1aResponseWriter \u53c2\u6570\u4e3a null\u3002
+com.sun.faces.NULL_VIEW_ID=Argument Error: view id argument is null.
 com.sun.faces.OBJECT_CREATION_ERROR=\u65e0\u6cd5\u521b\u5efa\u4e00\u4e2a\u6216\u591a\u4e2a\u914d\u7f6e\u7684\u5e94\u7528\u7a0b\u5e8f\u5bf9\u8c61\u3002\u6709\u5173\u8be6\u7ec6\u4fe1\u606f\uff0c\u8bf7\u68c0\u67e5\u60a8\u7684 web \u5e94\u7528\u7a0b\u5e8f\u65e5\u5fd7\u3002
 com.sun.faces.OPTION_NOT_SELECT_ITEM=\u53c2\u6570\u9519\u8bef\uff1a\u7ec4\u4ef6 ''{0}'' \u7684\u67d0\u4e2a\u9009\u9879\u4e0d\u662f javax.faces.model.SelectItem \u7684\u5b9e\u4f8b\u3002\u627e\u5230\u7684\u7c7b\u578b\uff1a''{1}''\u3002
 com.sun.faces.OUTCOME_TARGET_BUTTON_NO_MATCH=: \u6b64\u6309\u94ae\u5df2\u7981\u7528\uff0c\u56e0\u4e3a\u65e0\u6cd5\u5339\u914d\u5bfc\u822a\u6761\u4ef6\u3002
@@ -179,3 +184,5 @@ com.sun.faces.partial.statesaving.ERROR_RESTORING_STATE_FOR_COMPONENT=Unexpected
 com.sun.faces.MISSING_COMPONENT_ATTRIBUTE_VALUE=The following attribute(s) are required, but no values have been supplied for them: ''{0}''.
 com.sun.faces.MISSING_COMPONENT_FACET=The following facets(s) are required, but no facets have been supplied for them: ''{0}''.
 com.sun.faces.MISSING_COMPONENT_METADATA=The composite component metadata for component with clientid ''{0}'' cannot be found.  
+com.sun.faces.MISSING_FORM_ERROR=The button/link/text component needs to have a Form in its ancestry. Please add <h:form>.
+com.sun.faces.MISSING_METADATA_ERROR=The metadata component needs to be nested within a f:metadata tag. Suggestion: enclose the necessary components within <f:metadata>
diff --git a/jsf-ri/src/main/resources/com/sun/faces/resources/Messages_zh_HK.properties b/jsf-ri/src/main/resources/com/sun/faces/resources/Messages_zh_HK.properties
new file mode 100644
index 0000000..405db68
--- /dev/null
+++ b/jsf-ri/src/main/resources/com/sun/faces/resources/Messages_zh_HK.properties
@@ -0,0 +1,188 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
+com.sun.faces.APPLICATION_ASSOCIATE_CTOR_WRONG_CALLSTACK=\u672a\u5728\u547c\u53eb ConfigureListener.contextInitialized() \u7684\u76f8\u540c\u547c\u53eb\u5806\u758a\u4e2d\u547c\u53eb ApplicationAssociate ctor\u3002
+com.sun.faces.APPLICATION_ASSOCIATE_EXISTS=\u5c0d\u65bc\u6b64 Web \u61c9\u7528\u7a0b\u5f0f\uff0cApplicationAssociate \u5df2\u7d93\u5b58\u5728\u3002
+com.sun.faces.ASSERTION_FAILED=\u6307\u5b9a\u5931\u6557
+com.sun.faces.ATTRIBUTE_NOT_SUPORTED=\u5143\u4ef6\u985e\u578b\u300c{1}\u300d\u4e0d\u652f\u63f4\u5c6c\u6027\u300c{0}\u300d\u3002
+com.sun.faces.CANT_CONVERT_VALUE=\u7121\u6cd5\u5c07\u7279\u6027\u300c{0}\u300d\u8f49\u63db\u70ba\u503c\u985e\u578b\u300c{1}\u300d\u3002
+com.sun.faces.CANT_CLOSE_INPUT_STREAM=\u7121\u6cd5\u95dc\u9589\u8f38\u5165\u4e32\u6d41\u3002
+com.sun.faces.CANT_CREATE_LIFECYCLE_ERROR=\u7121\u6cd5\u5efa\u7acb ID\u300c{0}\u300d\u7684\u751f\u547d\u9031\u671f\u3002
+com.sun.faces.CANT_INSTANTIATE_CLASS=\u7121\u6cd5\u5be6\u4f8b\u5316\u985e\u5225:\u300c{0}\u300d\u3002
+com.sun.faces.CANT_INTROSPECT_CLASS=\u7121\u6cd5\u5167\u8996\u985e\u5225:\u300c{0}\u300d
+com.sun.faces.CANT_PARSE_FILE=\u7121\u6cd5\u5256\u6790\u6a94\u6848\u300c{0}\u300d\uff1a\u884c {1} \u6b04 {2} \u767c\u751f\u932f\u8aa4: {3}\u3002
+com.sun.faces.CHILD_NOT_OF_EXPECTED_TYPE=\u5c0d\u65bc\u5143\u4ef6\u985e\u578b\u300c{1}({2})\u300d\uff0c\u9810\u671f\u7684\u5b50\u5143\u4ef6\u985e\u578b\u70ba\u300c{0}\u300d\u3002\u4f46\u662f\u537b\u627e\u5230\u300c{3}\u300d\u3002
+com.sun.faces.COMMAND_LINK_NO_FORM_MESSAGE=\uff1a\u6b64\u9023\u7d50\u5df2\u505c\u7528\uff0c\u56e0\u70ba\u5b83\u672a\u5d4c\u5957\u5728 JSF \u8868\u55ae\u5167\u3002
+com.sun.faces.COMMAND_NOT_NESTED_WITHIN_FORM=\u6aa2\u8996\u5167\u627e\u5230\u4e00\u6216\u591a\u500b UICommand \u5be6\u4f8b\u672a\u5d4c\u5957\u5728 UIForm \u5167\u3002\u5c07\u4e0d\u6703\u547c\u53eb\u8207\u9019\u4e9b\u6307\u4ee4\u76f8\u95dc\u806f\u7684\u52d5\u4f5c\u3002
+com.sun.faces.COMPONENT_NOT_FOUND_ERROR=\u672a\u627e\u5230\u8b58\u5225\u78bc\u300c{0}\u300d\u7684\u5143\u4ef6\u3002
+com.sun.faces.COMPONENT_NOT_FOUND_IN_VIEW_WARNING=\u5728\u6aa2\u8996\u4e2d\u627e\u4e0d\u5230 ID \u70ba\u300c{0}\u300d\u7684\u5143\u4ef6\u3002
+com.sun.faces.CONTENT_TYPE_ERROR=\u7121\u6cd5\u8fa8\u8b58\u7684\u5167\u5bb9\u985e\u578b\u3002
+com.sun.faces.CONFIG_RENDERER_REGISTRATION_MISSING_RENDERKIT=\u7121\u6cd5\u4f7f\u7528 ID {0} \u8a3b\u518a\u5177\u6709 RenderKit \u7684\u7de8\u8b6f\u5668\u3002RenderKit \u4e0d\u5b58\u5728\u3002
+com.sun.faces.DUPLICATE_COMPONENT_ID_ERROR=\u5728\u6aa2\u8996\u4e2d\u5df2\u627e\u5230\u5143\u4ef6 ID\u300c{0}\u300d\u3002
+com.sun.faces.EMPTY_PARAMETER=\u53c3\u6578\u662f\u7a7a\u7684
+com.sun.faces.ENCODING_ERROR=\u7121\u6cd5\u8fa8\u8b58\u7684\u5b57\u5143\u7de8\u78bc\u3002
+com.sun.faces.ERROR_GETTING_VALUE_BINDING=\u7121\u6cd5\u53d6\u5f97\u503c\u300c{0}\u300d\u7684 ValueBinding\u3002
+com.sun.faces.ERROR_GETTING_VALUEREF_VALUE=\u7121\u6cd5\u5f9e\u9023\u7d50\u8868\u793a\u5f0f\u300c{0}\u300d\u53d6\u5f97\u503c\u3002
+com.sun.faces.ERROR_OPENING_FILE=\u7121\u6cd5\u958b\u555f\u914d\u7f6e\u6a94\u6848:\u300c{0}\u300d\u3002
+com.sun.faces.ERROR_PROCESSING_CONFIG=\u914d\u7f6e\u8655\u7406\u671f\u9593\u767c\u751f\u672a\u9810\u671f\u7684\u932f\u8aa4\u3002 
+com.sun.faces.ERROR_REGISTERING_DTD=\u7121\u6cd5\u8a3b\u518a DTD:\u300c{0}\u300d\u3002
+com.sun.faces.ERROR_SETTING_BEAN_PROPERTY=\u7121\u6cd5\u8a2d\u5b9a\u53d7\u7ba1 Bean \u7279\u6027:\u300c{0}\u300d\u3002
+com.sun.faces.EVAL_ATTR_UNEXPECTED_TYPE=\u5c6c\u6027\u300c{0}\u300d\u8868\u793a\u5f0f\u7684\u8a08\u7b97\u5f97\u5230\u672a\u9810\u671f\u7684\u985e\u578b\u3002\u9810\u671f\u70ba {1}\uff0c\u4f46\u6536\u5230 {2}\u3002
+com.sun.faces.FACES_CONTEXT_CONSTRUCTION_ERROR=\u5efa\u69cb\u932f\u8aa4\uff1a\u4e00\u6216\u591a\u500b\u8f38\u5165\u53c3\u6578\u53ef\u80fd\u70ba\u7a7a\u503c\u3002
+com.sun.faces.FACES_SERVLET_MAPPING_CANNOT_BE_DETERMINED=\u7121\u6cd5\u78ba\u5b9a Servlet \u8def\u5f91\u300c{0}\u300d\u7684 FaceServlet \u5c0d\u6620\u3002
+com.sun.faces.FACES_SERVLET_MAPPING_INCORRECT=FacesServlet \u4e0d\u80fd\u6709\u300c/*\u300durl-pattern\u3002\u8acb\u5b9a\u7fa9\u4e0d\u540c\u7684 url-pattern\u3002
+com.sun.faces.FACES_CONTEXT_NOT_FOUND=\u7121 FacesContext \u53ef\u7528\u65bc\u8655\u7406\u6b64\u8acb\u6c42\u3002\u5f88\u53ef\u80fd\u662f\u7531\u65bc\u5c07\u8acb\u6c42\u50b3\u9001\u81f3\u932f\u8aa4\u7684\u8def\u5f91\u3002
+com.sun.faces.FILE_NOT_FOUND=\u627e\u4e0d\u5230\u6a94\u6848:\u300c{0}\u300d\u3002
+com.sun.faces.ILLEGAL_ATTEMPT_SETTING_APPLICATION_ARTIFACT=\u7522\u751f\u56de\u61c9\u5f8c\uff0c\u8a2d\u5b9a {0} \u7684\u5617\u8a66\u975e\u6cd5\u3002
+com.sun.faces.ILLEGAL_CHARACTERS_ERROR=\u4e0d\u5141\u8a31\u5b57\u5143\u3002
+com.sun.faces.ILLEGAL_IDENTIFIER_LVALUE_MODE=lValue \u6a21\u5f0f\u300c{0}\u300d\u4e2d\u4f7f\u7528\u96b1\u5f0f\u7269\u4ef6\u8b58\u5225\u78bc\u975e\u6cd5
+com.sun.faces.ILLEGAL_MODEL_REFERENCE=\u5728\u6b64\u74b0\u5883\u4e2d\uff0c\u8868\u793a\u5f0f\u300c{0}\u300d\u7684\u6a21\u578b\u53c3\u7167\u975e\u6cd5\u3002
+com.sun.faces.ILLEGAL_VIEW_ID=\u975e\u6cd5\u6aa2\u8996 ID\u300c{0}\u300d\u3002ID \u5fc5\u9808\u4ee5\u300c/\u300d\u958b\u982d
+com.sun.faces.INVALID_EXPRESSION=\u7121\u6548\u7684\u8868\u793a\u5f0f:\u300c{0}\u300d\u3002
+com.sun.faces.INVALID_INIT_PARAM=\u521d\u59cb\u5316\u53c3\u6578\u300c{1}\u300d\u7684\u503c\u300c{0}\u300d\u7121\u6548\u3002\u53ef\u63a5\u53d7\u7684\u503c\u70ba\u300ctrue\u300d\u6216\u300cfalse\u300d\u3002\u9810\u8a2d\u70ba\u300cfalse\u300d\u3002
+com.sun.faces.INVALID_MESSAGE_SEVERITY_IN_CONFIG=\u914d\u7f6e\u4e2d\u5b9a\u7fa9\u7684\u8a0a\u606f\u56b4\u91cd\u6027\u300c{0}\u300d\u7121\u6548\u3002
+com.sun.faces.INVALID_SCOPE_LIFESPAN=\u8868\u793a\u5f0f\u300c{0}\u300d\u53c3\u7167\u7684\u7269\u4ef6\u7bc4\u570d\u300c{1}\u300d\u6bd4\u53c3\u7167\u300c{3}\u300d\u7684\u53d7\u7ba1 Bean (\u300c{2}\u300d) \u7bc4\u570d\u77ed\u3002
+com.sun.faces.LIFECYCLE_ID_ALREADY_ADDED=\u5df2\u589e\u52a0 ID\u300c{0}\u300d\u7684 LifecycleId\u3002
+com.sun.faces.LIFECYCLE_ID_NOT_FOUND=\u627e\u4e0d\u5230 ID\u300c{0}\u300d\u7684 LifecycleId\u3002
+com.sun.faces.MAXIMUM_EVENTS_REACHED=\u5df2\u9054\u4e8b\u4ef6\u7684\u6700\u5927\u6578\u76ee\u300c{0}\u300d\u3002
+com.sun.faces.MANAGED_BEAN_CANNOT_SET_LIST_ARRAY_PROPERTY=\u7121\u6cd5\u5728\u53d7\u7ba1 Bean\u300c{1}\u300d\u4e2d\u8a2d\u5b9a\u76ee\u6a19\u7279\u6027\u300c{0}\u300d\u3002\u6b64\u7279\u6027\u5fc5\u9808\u63a5\u53d7\u6e05\u55ae\u6216\u9663\u5217\u5be6\u4f8b\u3002
+com.sun.faces.MANAGED_BEAN_MAP_PROPERTY_INCORRECT_SETTER_ERROR=\u53d7\u7ba1 Bean\u300c{1}\u300d\u4e2d\u7684\u7279\u6027\u300c{0}\u300d\u5b9a\u7fa9\u70ba\u5c0d\u6620\u7279\u6027\uff0c\u4f46\u985e\u5225\u4e2d\u7684 setter \u4e0d\u63a5\u53d7\u5c0d\u6620\u5be6\u4f8b\u3002
+com.sun.faces.MANAGED_BEAN_MAP_PROPERTY_INCORRECT_GETTER_ERROR=\u53d7\u7ba1 Bean\u300c{1}\u300d\u4e2d\u7684\u7279\u6027\u300c{0}\u300d\u5b9a\u7fa9\u70ba\u5c0d\u6620\u7279\u6027\uff0c\u4f46\u985e\u5225\u4e2d\u7684 getter \u4e0d\u6703\u50b3\u56de\u5c0d\u6620\u5be6\u4f8b\u3002
+com.sun.faces.MANAGED_BEAN_LIST_SETTER_DOES_NOT_ACCEPT_LIST_OR_ARRAY_ERROR=\u53d7\u7ba1 Bean\u300c{1}\u300d\u4e2d\u7684\u7279\u6027\u300c{0}\u300d\u5b9a\u7fa9\u70ba\u6e05\u55ae\u7279\u6027\uff0c\u4f46\u985e\u5225\u4e2d\u7684 setter \u4e0d\u63a5\u53d7\u6e05\u55ae\u6216\u9663\u5217\u5be6\u4f8b\u3002
+com.sun.faces.MANAGED_BEAN_LIST_SETTER_DOES_NOT_RETURN_LIST_OR_ARRAY_ERROR=\u53d7\u7ba1 Bean\u300c{1}\u300d\u4e2d\u7684\u7279\u6027\u300c{0}\u300d\u5b9a\u7fa9\u70ba\u6e05\u55ae\u7279\u6027\uff0c\u4f46\u985e\u5225\u4e2d\u7684 getter \u4e0d\u6703\u50b3\u56de\u6e05\u55ae\u6216\u9663\u5217\u5be6\u4f8b\u3002
+com.sun.faces.MANAGED_BEAN_LIST_GETTER_ARRAY_NO_SETTER_ERROR=\u53d7\u7ba1 Bean\u300c{1}\u300d\u4e2d\u7684\u7279\u6027\u300c{0}\u300d\u5b9a\u7fa9\u70ba\u6e05\u55ae\u7279\u6027\u3002getter \u6703\u50b3\u56de\u9663\u5217\u985e\u578b\uff0c\u4f46\u6c92\u6709\u76f8\u95dc\u806f\u7684 setter\u3002
+com.sun.faces.MANAGED_BEAN_EXISTING_VALUE_NOT_LIST=\u7121\u6cd5\u5728\u53d7\u7ba1 Bean\u300c{1}\u300d\u4e2d\u8a2d\u5b9a\u76ee\u6a19\u7279\u6027\u300c{0}\u300d\u3002\u76ee\u6a19\u7279\u6027\u50b3\u56de\u7684\u73fe\u6709\u503c\u4e0d\u662f\u6e05\u55ae\u7684\u5be6\u4f8b\u3002
+com.sun.faces.MANAGED_BEAN_AS_LIST_CONFIG_ERROR=\u53d7\u7ba1 Bean\u300c{0}\u300d\u7684\u914d\u7f6e\u4e0d\u6b63\u78ba\u3002\u53d7\u7ba1 Bean \u914d\u7f6e\u70ba\u6e05\u55ae\uff0c\u4f46\u4e5f\u5617\u8a66\u5b9a\u7fa9\u5c0d\u6620\u9805\u76ee\u6216\u53d7\u7ba1\u7279\u6027\u3002
+com.sun.faces.MANAGED_BEAN_AS_MAP_CONFIG_ERROR=\u53d7\u7ba1 Bean\u300c{0}\u300d\u7684\u914d\u7f6e\u4e0d\u6b63\u78ba\u3002\u53d7\u7ba1 Bean \u914d\u7f6e\u70ba\u5c0d\u6620\uff0c\u4f46\u4e5f\u5617\u8a66\u5b9a\u7fa9\u53d7\u7ba1\u7279\u6027\u3002
+com.sun.faces.MANAGED_BEAN_LIST_PROPERTY_CONFIG_ERROR=\u53d7\u7ba1 Bean\u300c{0}\u300d\u7684\u914d\u7f6e\u4e0d\u6b63\u78ba\u3002\u53d7\u7ba1 Bean \u542b\u6709\u5177\u6709\u6e05\u55ae\u9805\u76ee\u7684\u53d7\u7ba1\u7279\u6027\u300c{1}\u300d\uff0c\u4f46\u975e\u6cd5\u5b9a\u7fa9\u4e86\u503c\u548c/\u6216\u5c0d\u6620\u9805\u76ee\u3002
+com.sun.faces.MANAGED_BEAN_MAP_PROPERTY_CONFIG_ERROR=\u53d7\u7ba1 Bean\u300c{0}\u300d\u7684\u914d\u7f6e\u4e0d\u6b63\u78ba\u3002\u53d7\u7ba1 Bean \u542b\u6709\u5177\u6709\u5c0d\u6620\u9805\u76ee\u7684\u53d7\u7ba1\u7279\u6027\u300c{1}\u300d\uff0c\u4f46\u4e5f\u975e\u6cd5\u5b9a\u7fa9\u4e86\u503c\u3002
+com.sun.faces.MANAGED_BEAN_PROPERTY_CONFIG_ERROR=\u53d7\u7ba1 Bean\u300c{0}\u300d\u7684\u914d\u7f6e\u4e0d\u6b63\u78ba\u3002\u53d7\u7ba1 Bean \u542b\u6709\u672a\u5305\u542b\u6e05\u55ae\u6216\u5c0d\u6620\u9805\u76ee\u6216\u4efb\u4f55\u503c\u5143\u7d20\u7684\u53d7\u7ba1\u7279\u6027\u300c{1}\u300d\u3002
+com.sun.faces.MANAGED_BEAN_TYPE_CONVERSION_ERROR=\u91dd\u5c0d\u53d7\u7ba1 Bean\u300c{3}\u300d\uff0c\u5c07\u985e\u578b\u300c{1}\u300d\u7684\u503c\u300c{0}\u300d\u8f49\u63db\u70ba\u985e\u578b\u300c{2}\u300d\u6642\u767c\u751f\u932f\u8aa4\u3002
+com.sun.faces.MANAGED_BEAN_CLASS_NOT_FOUND_ERROR=\u627e\u4e0d\u5230\u53d7\u7ba1 Bean\u300c{1}\u300d\u7684 Bean \u6216\u7279\u6027\u985e\u5225\u300c{0}\u300d\u3002
+com.sun.faces.MANAGED_BEAN_CLASS_DEPENDENCY_NOT_FOUND_ERROR=\u7121\u6cd5\u8f09\u5165\u53d7\u7ba1 Bean\u300c{1}\u300d\u7684 Bean \u6216\u7279\u6027\u985e\u5225\u300c{0}\u300d\uff0c\u539f\u56e0\u662f\u7f3a\u5c11\u76f8\u4f9d\u6027: {2}\u3002
+com.sun.faces.MANAGED_BEAN_CLASS_IS_NOT_PUBLIC_ERROR=\u53d7\u7ba1 Bean\u300c{1}\u300d\u7684\u53d7\u7ba1 Bean \u985e\u5225\u300c{0}\u300d\u672a\u5ba3\u544a\u70ba\u516c\u7528\u3002
+com.sun.faces.MANAGED_BEAN_CLASS_IS_ABSTRACT_ERROR=\u53d7\u7ba1 Bean\u300c{1}\u300d\u7684\u53d7\u7ba1 Bean \u985e\u5225\u300c{0}\u300d\u5ba3\u544a\u70ba\u62bd\u8c61\u6216\u4ecb\u9762\u3002
+com.sun.faces.MANAGED_BEAN_CLASS_NO_PUBLIC_NOARG_CTOR_ERROR=\u53d7\u7ba1 Bean\u300c{1}\u300d\u7684\u53d7\u7ba1 Bean \u985e\u5225\u300c{0}\u300d\u672a\u5ba3\u544a\u516c\u7528\u7121\u5f15\u6578\u5efa\u69cb\u5b50\u3002
+com.sun.faces.MANAGED_BEAN_INJECTION_ERROR=\u5728\u53d7\u7ba1 Bean\u300c{0}\u300d\u4e0a\u57f7\u884c\u8cc7\u6e90\u5f15\u5165\u6642\u767c\u751f\u932f\u8aa4\u3002
+com.sun.faces.MANAGED_BEAN_DEFINED_PROPERTY_CLASS_NOT_COMPATIBLE_ERROR=\u53d7\u7ba1 Bean\u300c{1}\u300d\u7684\u7279\u6027\u300c{0}\u300d\u4f7f\u7528\u7279\u6027\u985e\u5225\u300c{2}\u300d\u5b9a\u7fa9\uff0c\u4f46\u6b64\u985e\u5225\u7121\u6cd5\u6307\u5b9a\u7d66\u7279\u6027\u3002
+com.sun.faces.MANAGED_BEAN_INTROSPECTION_ERROR=\u7121\u6cd5\u5167\u8996\u53d7\u7ba1 Bean\u300c{0}\u300d
+com.sun.faces.MANAGED_BEAN_PROPERTY_DOES_NOT_EXIST_ERROR=\u53d7\u7ba1 Bean\u300c{1}\u300d\u7684\u7279\u6027\u300c{0}\u300d\u4e0d\u5b58\u5728\u3002
+com.sun.faces.MANAGED_BEAN_PROPERTY_HAS_NO_SETTER_ERROR=\u53d7\u7ba1 Bean\u300c{1}\u300d\u7684\u7279\u6027\u300c{0}\u300d\u6c92\u6709 setter\u3002
+com.sun.faces.MANAGED_BEAN_PROPERTY_INCORRECT_ARGS_ERROR=\u53d7\u7ba1 Bean\u300c{1}\u300d\u7684\u7279\u6027\u300c{0}\u300d\u63a5\u53d7\u8d85\u904e\u4e00\u500b\u5f15\u6578\u3002
+com.sun.faces.MANAGED_BEAN_UNABLE_TO_SET_PROPERTY_ERROR=\u7121\u6cd5\u8a2d\u5b9a\u53d7\u7ba1 Bean\u300c{1}\u300d\u7684\u7279\u6027\u300c{0}\u300d\u3002
+com.sun.faces.MANAGED_BEAN_PROBLEMS_ERROR=\u7121\u6cd5\u5efa\u7acb\u53d7\u7ba1 Bean\u300c{0}\u300d\u3002\u627e\u5230\u4e0b\u5217\u554f\u984c\uff1a
+com.sun.faces.MANAGED_BEAN_PROBLEMS_STARTUP_ERROR=JSF \u6536\u5230\u8acb\u6c42\u6642\u5c07\u7121\u6cd5\u5efa\u7acb\u53d7\u7ba1 Bean\u300c{0}\u300d\u3002\u627e\u5230\u4e0b\u5217\u554f\u984c\uff1a
+com.sun.faces.MANAGED_BEAN_UNKNOWN_PROCESSING_ERROR=\u8655\u7406\u53d7\u7ba1 Bean\u300c{0}\u300d\u6642\u767c\u751f\u672a\u9810\u671f\u7684\u932f\u8aa4
+com.sun.faces.MANAGED_BEAN_PROPERTY_UNKNOWN_PROCESSING_ERROR=\u8655\u7406\u53d7\u7ba1\u7279\u6027\u300c{0}\u300d\u6642\u767c\u751f\u672a\u9810\u671f\u7684\u932f\u8aa4
+com.sun.faces.MANAGED_BEAN_INVALID_SCOPE=\u7bc4\u570d\u300c{0}\u300d\u4e0d\u662f\u300cview\u300d\u300crequest\u300d\u300csession\u300d\u3001\u300capplication\u300d\u5176\u4e2d\u4e4b\u4e00\uff0c\u4e5f\u4e0d\u662f\u4ee3\u8868 ValueExpression (#{...})
+com.sun.faces.MISSING_CLASS_ERROR=\u7f3a\u5c11\u985e\u5225\uff1a\u7121\u6cd5\u8f09\u5165\u985e\u5225\u300c{0}\u300d\u3002
+com.sun.faces.MISSING_RESOURCE_ERROR=\u7f3a\u5c11\u8cc7\u6e90\uff1a\u7121\u6cd5\u53d6\u5f97 ResourceBundle\u3002
+com.sun.faces.MODELUPDATE_ERROR=\u6a21\u578b\u66f4\u65b0\u5931\u6557\uff0c\u56e0\u70ba\u6a21\u578b\u300c{1}\u300d\u4e2d\u5b58\u5728\u503c\u300c{0}\u300d\u3002
+com.sun.faces.NAVIGATION_NO_MATCHING_OUTCOME=\u7121\u6cd5\u5f9e\u6aa2\u8996 ID\u300c{0}\u300d\u4e2d\u70ba\u7d50\u679c\u300c{1}\u300d\u627e\u5230\u76f8\u7b26\u7684\u700f\u89bd\u689d\u4ef6
+com.sun.faces.NAVIGATION_NO_MATCHING_OUTCOME_ACTION=\u7121\u6cd5\u5f9e\u6aa2\u8996 ID\u300c{0}\u300d\u4e2d\u70ba\u5177\u6709\u7d50\u679c\u300c{2}\u300d\u7684\u52d5\u4f5c\u300c{1}\u300d\u627e\u5230\u76f8\u7b26\u7684\u700f\u89bd\u689d\u4ef6
+com.sun.faces.NAVIGATION_INVALID_QUERY_STRING=\u7d50\u679c\u300c{0}\u300d\u4e2d\u7684\u67e5\u8a62\u5b57\u4e32\u7121\u6548
+com.sun.faces.NAMED_OBJECT_NOT_FOUND_ERROR=\u8868\u793a\u5f0f\u932f\u8aa4\uff1a\u627e\u4e0d\u5230\u5df2\u547d\u540d\u7684\u7269\u4ef6:\u300c{0}\u300d\u3002
+com.sun.faces.NOT_NESTED_IN_FACES_TAG_ERROR=\u8655\u7406\u7a0b\u5f0f\u985e\u5225\u70ba\u300c{0}\u300d\u6a19\u8a18\u767c\u751f\u300c\u672a\u5d4c\u5957\u65bc UIComponentTag \u4e2d\u300d\u7684\u932f\u8aa4\u3002
+com.sun.faces.NOT_NESTED_IN_TYPE_TAG_ERROR={0} \u6a19\u8a18\u61c9\u8a72\u5d4c\u5957\u5728\u8207 {1} \u985e\u578b\u5143\u4ef6\u76f8\u95dc\u806f\u7684\u6a19\u8a18\u4e2d\u3002
+com.sun.faces.NO_DTD_FOUND_ERROR=\u5728\u8def\u5f91\u300c{1}\u300d\u4e2d\u627e\u4e0d\u5230\u5177\u6709 PUBLIC ID\u300c{0}\u300d\u7684 DTD\u3002
+com.sun.faces.NULL_BODY_CONTENT_ERROR=\u5c0d\u65bc\u5177\u6709\u8655\u7406\u5668\u985e\u5225:\u300c{0}\u300d\u7684\u6a19\u8a18\uff0cBodyContent \u70ba\u7a7a\u503c\u3002
+com.sun.faces.NULL_COMPONENT_ERROR=\u5efa\u69cb\u932f\u8aa4\uff1a\u5143\u4ef6\u5f15\u6578\u70ba\u7a7a\u503c\u3002
+com.sun.faces.NULL_CONFIGURATION=\u672a\u8f09\u5165\u61c9\u7528\u7a0b\u5f0f\u7684\u914d\u7f6e\u3002
+com.sun.faces.NULL_CONTEXT_ERROR=\u5f15\u6578\u932f\u8aa4\uff1a\u74b0\u5883\u5f15\u6578\u70ba\u7a7a\u503c\u3002
+com.sun.faces.NULL_EVENT_ERROR=\u5f15\u6578\u932f\u8aa4\uff1a\u4e8b\u4ef6\u5f15\u6578\u70ba\u7a7a\u503c\u3002
+com.sun.faces.NULL_FORVALUE=\u627e\u4e0d\u5230\u5143\u4ef6\u300c{0}\u300d
+com.sun.faces.NULL_HANDLER_ERROR=\u5f15\u6578\u932f\u8aa4\uff1a\u8655\u7406\u5668\u5f15\u6578\u70ba\u7a7a\u503c\u3002
+com.sun.faces.NULL_LOCALE_ERROR=\u5f15\u6578\u932f\u8aa4\uff1a\u8a9e\u8a00\u74b0\u5883\u5f15\u6578\u70ba\u7a7a\u503c\u3002
+com.sun.faces.NULL_MESSAGE_ERROR=\u5f15\u6578\u932f\u8aa4\uff1a\u8a0a\u606f\u53c3\u6578\u4e0d\u80fd\u70ba\u7a7a\u503c
+com.sun.faces.NULL_PARAMETERS_ERROR=\u5f15\u6578\u932f\u8aa4\uff1a\u53c3\u6578\u300c{0}\u300d\u70ba\u7a7a\u503c
+com.sun.faces.NULL_REQUEST_VIEW_ERROR=\u5f15\u6578\u932f\u8aa4\uff1a\u8acb\u6c42\u6aa2\u8996\u5f15\u6578\u70ba\u7a7a\u503c\u3002
+com.sun.faces.NULL_RESPONSE_STREAM_ERROR=\u5f15\u6578\u932f\u8aa4\uff1aResponseStream \u5f15\u6578\u70ba\u7a7a\u503c\u3002
+com.sun.faces.NULL_RESPONSE_VIEW_ERROR=\u5f15\u6578\u932f\u8aa4\uff1aResponseView \u5f15\u6578\u70ba\u7a7a\u503c\u3002
+com.sun.faces.NULL_RESPONSE_WRITER_ERROR=\u5f15\u6578\u932f\u8aa4\uff1aResponseWriter \u5f15\u6578\u70ba\u7a7a\u503c\u3002
+com.sun.faces.NULL_VIEW_ID=Argument Error: view id argument is null.
+com.sun.faces.OBJECT_CREATION_ERROR=\u7121\u6cd5\u5efa\u7acb\u4e00\u6216\u591a\u500b\u914d\u7f6e\u7684\u61c9\u7528\u7a0b\u5f0f\u7269\u4ef6\u3002\u8a73\u7d30\u8cc7\u8a0a\u8acb\u67e5\u770b Web \u61c9\u7528\u7a0b\u5f0f\u8a18\u9304\u6a94\u3002
+com.sun.faces.OPTION_NOT_SELECT_ITEM=\u5f15\u6578\u932f\u8aa4\uff1a\u5143\u4ef6\u300c{0}\u300d\u7684\u9078\u9805\u4e0d\u662f javax.faces.model.SelectItem \u7684\u5be6\u4f8b\u3002\u627e\u5230\u985e\u578b\uff1a\u300c{1}\u300d\u3002
+com.sun.faces.OUTCOME_TARGET_BUTTON_NO_MATCH=\uff1a\u6b64\u6309\u9215\u505c\u7528\uff0c\u539f\u56e0\u662f\u700f\u89bd\u689d\u4ef6\u4e0d\u7b26\u3002
+com.sun.faces.OUTCOME_TARGET_LINK_NO_MATCH=\uff1a\u6b64\u9023\u7d50\u505c\u7528\uff0c\u539f\u56e0\u662f\u700f\u89bd\u689d\u4ef6\u4e0d\u7b26\u3002
+com.sun.faces.PHASE_ID_OUT_OF_BOUNDS= PhaseId \u8d85\u51fa ID\u300c{0}\u300d\u7684\u754c\u9650\u3002
+com.sun.faces.RENDERER_NOT_FOUND=\u627e\u4e0d\u5230\u7de8\u8b6f\u5668\u985e\u578b\u70ba\u300c{0}\u300d\u7684\u7de8\u8b6f\u5668\u3002
+com.sun.faces.REQUEST_VIEW_ALREADY_SET_ERROR=\u72c0\u614b\u932f\u8aa4\uff1a\u6b64\u8acb\u6c42\u5df2\u8a2d\u5b9a RequestView\u3002
+com.sun.faces.RESOURCE_INVALID_FORMAT_ERROR=\u8cc7\u6e90\u683c\u5f0f\u7121\u6548\u3002\u7121\u6cd5\u5256\u6790\u7279\u6027\u300c{0}\u300d\u3002
+com.sun.faces.RESOURCE_INVALID_FORMAT_COLON_ERROR=\u8cc7\u6e90\u683c\u5f0f\u7121\u6548\u3002\u7279\u6027\u300c{0}\u300d\u542b\u6709\u8d85\u904e\u4e00\u500b\u5192\u865f (:)\u3002
+com.sun.faces.RESOURCE_INVALID_FORMAT_NO_LIBRARY_NAME_ERROR=\u8cc7\u6e90\u683c\u5f0f\u7121\u6548\u3002\u7121\u6cd5\u5256\u6790\u7279\u6027\u300c{0}\u300d\u4f86\u64f7\u53d6\u8cc7\u6e90\u540d\u7a31\u548c\u7a0b\u5f0f\u5eab\u540d\u7a31\u3002
+com.sun.faces.SAVING_STATE_ERROR=\u5132\u5b58\u72c0\u614b\u6642\u767c\u751f\u932f\u8aa4\u3002
+com.sun.faces.SUPPORTS_COMPONENT_ERROR=\u5f15\u6578\u932f\u8aa4\uff1a\u6b64\u7de8\u8b6f\u5668\u4e0d\u652f\u63f4\u300c{0}\u300d\u3002
+com.sun.faces.TYPECONVERSION_ERROR=\u8a2d\u5b9a\u300c{1}\u300d\u7684\u503c\u300c{0}\u300d\u6642\u767c\u751f\u8f49\u63db\u932f\u8aa4\u3002 
+com.sun.faces.VALIDATION_COMMAND_ERROR=\u9a57\u8b49\u932f\u8aa4\u3002\u300c{0}\u300d\u5fc5\u9808\u5177\u6709\u503c\u6216\u5f71\u50cf\u5c6c\u6027\u3002
+com.sun.faces.VALIDATION_EL_ERROR=\u9a57\u8b49\u932f\u8aa4\u3002\u8868\u793a\u5f0f\u5c0d\u65bc\u300c{0}\u300d\u7121\u6548
+com.sun.faces.VALIDATION_ID_ERROR=\u9a57\u8b49\u932f\u8aa4\u3002\u4e0b\u5217 JSF \u6a19\u8a18\u5fc5\u9808\u542b\u6709 ID:\u300c{0}\u300d
+com.sun.faces.CANNOT_CONVERT=\u7121\u6cd5\u4f7f\u7528 converterId\u300c{0}\u300d\u6216 binding\u300c{1}\u300d\u89e3\u6790\u8f49\u63db\u5668\u5be6\u4f8b\u3002
+com.sun.faces.CANNOT_VALIDATE=\u7121\u6cd5\u4f7f\u7528 validatorId\u300c{0}\u300d\u6216 binding\u300c{1}\u300d\u89e3\u6790\u9a57\u8b49\u5668\u5be6\u4f8b\u3002
+com.sun.faces.verifier.CLASS_NOT_FOUND=[{0}:{1}] \u985e\u5225\u4e0d\u5b58\u5728
+com.sun.faces.verifier.CLASS_MISSING_DEP=[{0}:{1}] \u7121\u6cd5\u8f09\u5165\u985e\u5225\uff0c\u539f\u56e0\u662f\u7f3a\u5c11\u76f8\u4f9d\u6027 -> {2}
+com.sun.faces.verifier.NON_PUBLIC_DEF_CTOR=[{0}:{1}] \u985e\u5225\u542b\u6709\u7121\u5f15\u6578\u5efa\u69cb\u5b50\uff0c\u4f46\u5b83\u4e0d\u662f\u516c\u7528\u7684
+com.sun.faces.verifier.NO_DEF_CTOR=[{0}:{1}] \u985e\u5225\u542b\u6709\u7121\u516c\u7528\u3001\u7121\u5f15\u6578\u5efa\u69cb\u5b50
+com.sun.faces.verifier.WRONG_TYPE=[{0}:{1}] \u985e\u5225\u672a\u5be6\u4f5c\u6216\u5ef6\u4f38 {2}
+
+
+com.sun.faces.CYCLIC_REFERENCE_ERROR=\u53d7\u7ba1 Bean\u300c{0}\u300d\u542b\u6709\u5faa\u74b0\u53c3\u7167\u3002\u8a08\u7b97\u8def\u5f91:\u300c{1}\u300d\u3002
+com.sun.faces.OBJECT_IS_READONLY={0} \u7269\u4ef6\u70ba\u552f\u8b80
+com.sun.faces.INCORRECT_JSP_VERSION=\u5bb9\u5668\u7684 JSP \u7248\u672c\u4f3c\u4e4e\u6bd4 2.1 \u7248\u66f4\u820a\uff0c\u56e0\u6b64\u627e\u4e0d\u5230 EL RI \u8868\u793a\u5f0f\u5de5\u5ee0\u300c{0}\u300d\u3002\u5982\u679c\u672a\u4f7f\u7528 JSP \u6216 EL RI\uff0c\u8acb\u78ba\u5b9a\u74b0\u5883\u521d\u59cb\u5316\u53c3\u6578\u300c{1}\u300d\u6b63\u78ba\u8a2d\u5b9a\u3002
+
+#com.sun.faces.el.PropertyResolverImpl
+com.sun.faces.OUT_OF_BOUNDS_ERROR=\u7d22\u5f15 {1} \u8d85\u51fa {0} \u7684\u754c\u9650
+com.sun.faces.PROPERTY_TYPE_ERROR={0} \u4e0d\u662f\u9663\u5217\u6216\u6e05\u55ae\u985e\u578b\u3002
+com.sun.faces.SIZE_OUT_OF_BOUNDS_ERROR=\u7d22\u5f15 {1} \u7684\u9577\u5ea6\u70ba {2}\uff0c\u8d85\u51fa {0} \u7684\u754c\u9650
+com.sun.faces.RESTORE_VIEW_ERROR=\u6aa2\u8996\u300c{0}\u300d\u7121\u6cd5\u5fa9\u539f\u3002
+
+com.sun.faces.CANT_WRITE_ID_ATTRIBUTE=\u7121\u6cd5\u5beb\u5165 ID \u5c6c\u6027:\u300c{0}\u300d\u3002
+com.sun.faces.NOT_NESTED_IN_UICOMPONENT_TAG_ERROR=\u672a\u5d4c\u5957\u5728 UIComponentTag \u4e2d\u3002
+com.sun.faces.NO_COMPONENT_ASSOCIATED_WITH_UICOMPONENT_TAG=\u6c92\u6709\u8207 UIComponentTag \u76f8\u95dc\u806f\u7684\u5143\u4ef6\u3002
+
+com.sun.faces.JS_RESOURCE_WRITING_ERROR=\u7121\u6cd5\u5c07 JavaScript \u6a94\u6848\u5beb\u5165\u7528\u6236\u7aef\u3002
+
+com.sun.faces.RESOURCE_TARGET_NOT_AVAILABLE=\u4e00\u6216\u591a\u500b\u8cc7\u6e90\u5177\u6709\u76ee\u6a19\u300c{0}\u300d\uff0c\u4f46\u6aa2\u8996\u5167\u672a\u5b9a\u7fa9\u4efb\u4f55\u300c{0}\u300d\u5143\u4ef6\u3002
+com.sun.faces.ARGUMENTS_NOT_LEGAL_WITH_CC_ATTRS_EXPR=Illegal attempt to pass arguments to a composite component lookup expression (i.e. cc.attrs.[identifier]).
+com.sun.faces.partial.statesaving.ERROR_RESTORING_STATE_FOR_COMPONENT=Unexpected error restoring state for component with id ''{0}''.  Cause: {1}.
+com.sun.faces.MISSING_COMPONENT_ATTRIBUTE_VALUE=The following attribute(s) are required, but no values have been supplied for them: ''{0}''.
+com.sun.faces.MISSING_COMPONENT_FACET=The following facets(s) are required, but no facets have been supplied for them: ''{0}''.
+com.sun.faces.MISSING_COMPONENT_METADATA=The composite component metadata for component with clientid ''{0}'' cannot be found.  
+com.sun.faces.MISSING_FORM_ERROR=The button/link/text component needs to have a Form in its ancestry. Please add <h:form>.
+com.sun.faces.MISSING_METADATA_ERROR=The metadata component needs to be nested within a f:metadata tag. Suggestion: enclose the necessary components within <f:metadata>
diff --git a/jsf-ri/src/main/resources/com/sun/faces/resources/Messages_zh_TW.properties b/jsf-ri/src/main/resources/com/sun/faces/resources/Messages_zh_TW.properties
index c8de8db..405db68 100644
--- a/jsf-ri/src/main/resources/com/sun/faces/resources/Messages_zh_TW.properties
+++ b/jsf-ri/src/main/resources/com/sun/faces/resources/Messages_zh_TW.properties
@@ -1,27 +1,31 @@
 #
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 #
-# Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+# Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
 #
 # The contents of this file are subject to the terms of either the GNU
 # General Public License Version 2 only ("GPL") or the Common Development
 # and Distribution License("CDDL") (collectively, the "License").  You
-# may not use this file except in compliance with the License. You can obtain
-# a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
-# or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
 # language governing permissions and limitations under the License.
 #
 # When distributing the software, include this License Header Notice in each
-# file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
-# Sun designates this particular file as subject to the "Classpath" exception
-# as provided by Sun in the GPL Version 2 section of the License file that
-# accompanied this code.  If applicable, add the following below the License
-# Header, with the fields enclosed by brackets [] replaced by your own
-# identifying information: "Portions Copyrighted [year]
-# [name of copyright owner]"
+# file and include the License file at packager/legal/LICENSE.txt.
 #
-# Contributor(s):
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
 #
+# Contributor(s):
 # If you wish your version of this file to be governed by only the CDDL or
 # only the GPL Version 2, indicate your decision by adding "[Contributor]
 # elects to include this software in this distribution under the [CDDL or GPL
@@ -132,6 +136,7 @@ com.sun.faces.NULL_REQUEST_VIEW_ERROR=\u5f15\u6578\u932f\u8aa4\uff1a\u8acb\u6c42
 com.sun.faces.NULL_RESPONSE_STREAM_ERROR=\u5f15\u6578\u932f\u8aa4\uff1aResponseStream \u5f15\u6578\u70ba\u7a7a\u503c\u3002
 com.sun.faces.NULL_RESPONSE_VIEW_ERROR=\u5f15\u6578\u932f\u8aa4\uff1aResponseView \u5f15\u6578\u70ba\u7a7a\u503c\u3002
 com.sun.faces.NULL_RESPONSE_WRITER_ERROR=\u5f15\u6578\u932f\u8aa4\uff1aResponseWriter \u5f15\u6578\u70ba\u7a7a\u503c\u3002
+com.sun.faces.NULL_VIEW_ID=Argument Error: view id argument is null.
 com.sun.faces.OBJECT_CREATION_ERROR=\u7121\u6cd5\u5efa\u7acb\u4e00\u6216\u591a\u500b\u914d\u7f6e\u7684\u61c9\u7528\u7a0b\u5f0f\u7269\u4ef6\u3002\u8a73\u7d30\u8cc7\u8a0a\u8acb\u67e5\u770b Web \u61c9\u7528\u7a0b\u5f0f\u8a18\u9304\u6a94\u3002
 com.sun.faces.OPTION_NOT_SELECT_ITEM=\u5f15\u6578\u932f\u8aa4\uff1a\u5143\u4ef6\u300c{0}\u300d\u7684\u9078\u9805\u4e0d\u662f javax.faces.model.SelectItem \u7684\u5be6\u4f8b\u3002\u627e\u5230\u985e\u578b\uff1a\u300c{1}\u300d\u3002
 com.sun.faces.OUTCOME_TARGET_BUTTON_NO_MATCH=\uff1a\u6b64\u6309\u9215\u505c\u7528\uff0c\u539f\u56e0\u662f\u700f\u89bd\u689d\u4ef6\u4e0d\u7b26\u3002
@@ -179,3 +184,5 @@ com.sun.faces.partial.statesaving.ERROR_RESTORING_STATE_FOR_COMPONENT=Unexpected
 com.sun.faces.MISSING_COMPONENT_ATTRIBUTE_VALUE=The following attribute(s) are required, but no values have been supplied for them: ''{0}''.
 com.sun.faces.MISSING_COMPONENT_FACET=The following facets(s) are required, but no facets have been supplied for them: ''{0}''.
 com.sun.faces.MISSING_COMPONENT_METADATA=The composite component metadata for component with clientid ''{0}'' cannot be found.  
+com.sun.faces.MISSING_FORM_ERROR=The button/link/text component needs to have a Form in its ancestry. Please add <h:form>.
+com.sun.faces.MISSING_METADATA_ERROR=The metadata component needs to be nested within a f:metadata tag. Suggestion: enclose the necessary components within <f:metadata>
diff --git a/jsf-ri/src/main/resources/com/sun/faces/resources/Resources.properties b/jsf-ri/src/main/resources/com/sun/faces/resources/Resources.properties
index 6af6356..66179aa 100644
--- a/jsf-ri/src/main/resources/com/sun/faces/resources/Resources.properties
+++ b/jsf-ri/src/main/resources/com/sun/faces/resources/Resources.properties
@@ -1,3 +1,43 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
 #########################################################################
 # Generic tag error messages
 #
diff --git a/jsf-ri/src/main/resources/com/sun/faces/standard-html-renderkit-impl.xml b/jsf-ri/src/main/resources/com/sun/faces/standard-html-renderkit-impl.xml
index 026ac3a..3e97754 100644
--- a/jsf-ri/src/main/resources/com/sun/faces/standard-html-renderkit-impl.xml
+++ b/jsf-ri/src/main/resources/com/sun/faces/standard-html-renderkit-impl.xml
@@ -1,37 +1,43 @@
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
 
 <root>
@@ -50,6 +56,12 @@
     <graphic-image-renderer-class>
         com.sun.faces.renderkit.html_basic.ImageRenderer
     </graphic-image-renderer-class>
+    <input-file-renderer-class>
+        com.sun.faces.renderkit.html_basic.FileRenderer
+    </input-file-renderer-class>
+    <passthrough-renderer-class>
+        com.sun.faces.renderkit.html_basic.PassthroughRenderer
+    </passthrough-renderer-class>
     <input-hidden-renderer-class>
         com.sun.faces.renderkit.html_basic.HiddenRenderer
     </input-hidden-renderer-class>
@@ -89,6 +101,9 @@
     <output-body-renderer-class>
         com.sun.faces.renderkit.html_basic.BodyRenderer
     </output-body-renderer-class>
+    <output-doctype-renderer-class>
+        com.sun.faces.renderkit.html_basic.DoctypeRenderer
+    </output-doctype-renderer-class>
     <output-head-renderer-class>
         com.sun.faces.renderkit.html_basic.HeadRenderer
     </output-head-renderer-class>
diff --git a/jsf-ri/src/main/resources/com/sun/faces/web-facesconfig_1_1.xsd b/jsf-ri/src/main/resources/com/sun/faces/web-facesconfig_1_1.xsd
index 7c31669..7b4444d 100644
--- a/jsf-ri/src/main/resources/com/sun/faces/web-facesconfig_1_1.xsd
+++ b/jsf-ri/src/main/resources/com/sun/faces/web-facesconfig_1_1.xsd
@@ -1,4 +1,45 @@
 <?xml version = "1.0" encoding = "UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
 
 <xsd:schema
      targetNamespace="http://java.sun.com/xml/ns/javaee"
@@ -18,35 +59,43 @@
     <xsd:annotation>
         <xsd:documentation>
 
-            Copyright 2005 Sun Microsystems, Inc., 
-            901 San Antonio Road, 
-            Palo Alto, California 94303, U.S.A. 
-            All rights reserved.
-
-            Sun Microsystems, Inc. has intellectual property 
-            rights relating to technology described in this document. In
-            particular, and without limitation, these intellectual
-            property rights may include one or more of the U.S. patents
-            listed at http://www.sun.com/patents and one or more
-            additional patents or pending patent applications in the
-            U.S. and other countries.
-
-            This document and the technology which it describes are
-            distributed under licenses restricting their use, copying,
-            distribution, and decompilation. No part of this document
-            may be reproduced in any form by any means without prior
-            written authorization of Sun and its licensors, if any.
-
-            Third-party software, including font technology, is
-            copyrighted and licensed from Sun suppliers.
-
-            Sun, Sun Microsystems, the Sun logo, Solaris, Java, Java EE,
-            JavaServer Pages, Enterprise JavaBeans and the Java Coffee
-            Cup logo are trademarks or registered trademarks of Sun
-            Microsystems, Inc. in the U.S. and other countries.
-
-            Federal Acquisitions: Commercial Software - Government Users
-            Subject to Standard License Terms and Conditions.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
         </xsd:documentation>
     </xsd:annotation>
diff --git a/jsf-ri/systest-per-webapp/absolute-ordering/src/java/com/sun/faces/systest/AbsoluteOrderingTestCase.java b/jsf-ri/systest-per-webapp/absolute-ordering/src/java/com/sun/faces/systest/AbsoluteOrderingTestCase.java
index 40fb5ad..f0cb9d6 100644
--- a/jsf-ri/systest-per-webapp/absolute-ordering/src/java/com/sun/faces/systest/AbsoluteOrderingTestCase.java
+++ b/jsf-ri/systest-per-webapp/absolute-ordering/src/java/com/sun/faces/systest/AbsoluteOrderingTestCase.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -39,9 +43,9 @@ package com.sun.faces.systest;
 import junit.framework.Test;
 import junit.framework.TestSuite;
 import com.gargoylesoftware.htmlunit.html.HtmlPage;
-import com.sun.faces.htmlunit.AbstractTestCase;
+import com.sun.faces.htmlunit.HtmlUnitFacesTestCase;
 
-public class AbsoluteOrderingTestCase extends AbstractTestCase {
+public class AbsoluteOrderingTestCase extends HtmlUnitFacesTestCase {
 
 
     public AbsoluteOrderingTestCase(String name) {
diff --git a/jsf-ri/systest-per-webapp/absolute-ordering/src/java/com/sun/faces/systest/PhaseListenerA.java b/jsf-ri/systest-per-webapp/absolute-ordering/src/java/com/sun/faces/systest/PhaseListenerA.java
index 8120232..50767d4 100644
--- a/jsf-ri/systest-per-webapp/absolute-ordering/src/java/com/sun/faces/systest/PhaseListenerA.java
+++ b/jsf-ri/systest-per-webapp/absolute-ordering/src/java/com/sun/faces/systest/PhaseListenerA.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/systest-per-webapp/absolute-ordering/src/java/com/sun/faces/systest/PhaseListenerB.java b/jsf-ri/systest-per-webapp/absolute-ordering/src/java/com/sun/faces/systest/PhaseListenerB.java
index 3fa5952..2e7e98e 100644
--- a/jsf-ri/systest-per-webapp/absolute-ordering/src/java/com/sun/faces/systest/PhaseListenerB.java
+++ b/jsf-ri/systest-per-webapp/absolute-ordering/src/java/com/sun/faces/systest/PhaseListenerB.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -58,4 +62,4 @@ public class PhaseListenerB implements PhaseListener {
         return PhaseId.ANY_PHASE;
     }
 
-}
\ No newline at end of file
+}
diff --git a/jsf-ri/systest-per-webapp/absolute-ordering/src/java/com/sun/faces/systest/PhaseListenerC.java b/jsf-ri/systest-per-webapp/absolute-ordering/src/java/com/sun/faces/systest/PhaseListenerC.java
index 80adb51..fa04042 100644
--- a/jsf-ri/systest-per-webapp/absolute-ordering/src/java/com/sun/faces/systest/PhaseListenerC.java
+++ b/jsf-ri/systest-per-webapp/absolute-ordering/src/java/com/sun/faces/systest/PhaseListenerC.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -58,4 +62,4 @@ public class PhaseListenerC implements PhaseListener {
         return PhaseId.ANY_PHASE;
     }
 
-}
\ No newline at end of file
+}
diff --git a/jsf-ri/systest-per-webapp/absolute-ordering/src/java/com/sun/faces/systest/PhaseListenerD.java b/jsf-ri/systest-per-webapp/absolute-ordering/src/java/com/sun/faces/systest/PhaseListenerD.java
index 4bb66e1..f4bd075 100644
--- a/jsf-ri/systest-per-webapp/absolute-ordering/src/java/com/sun/faces/systest/PhaseListenerD.java
+++ b/jsf-ri/systest-per-webapp/absolute-ordering/src/java/com/sun/faces/systest/PhaseListenerD.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -58,4 +62,4 @@ public class PhaseListenerD implements PhaseListener {
         return PhaseId.ANY_PHASE;
     }
 
-}
\ No newline at end of file
+}
diff --git a/jsf-ri/systest-per-webapp/absolute-ordering/src/java/com/sun/faces/systest/model/OrderingBean.java b/jsf-ri/systest-per-webapp/absolute-ordering/src/java/com/sun/faces/systest/model/OrderingBean.java
index 0e1441b..cee22a6 100644
--- a/jsf-ri/systest-per-webapp/absolute-ordering/src/java/com/sun/faces/systest/model/OrderingBean.java
+++ b/jsf-ri/systest-per-webapp/absolute-ordering/src/java/com/sun/faces/systest/model/OrderingBean.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/systest-per-webapp/absolute-ordering/web/WEB-INF/faces-config.xml b/jsf-ri/systest-per-webapp/absolute-ordering/web/WEB-INF/faces-config.xml
index 75a0dc5..d3f9f9d 100644
--- a/jsf-ri/systest-per-webapp/absolute-ordering/web/WEB-INF/faces-config.xml
+++ b/jsf-ri/systest-per-webapp/absolute-ordering/web/WEB-INF/faces-config.xml
@@ -1,39 +1,44 @@
 <?xml version='1.0' encoding='UTF-8'?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
 
 <faces-config xmlns="http://java.sun.com/xml/ns/javaee"
diff --git a/jsf-ri/systest-per-webapp/absolute-ordering/web/WEB-INF/faces-configB.xml b/jsf-ri/systest-per-webapp/absolute-ordering/web/WEB-INF/faces-configB.xml
index b143710..7926de8 100644
--- a/jsf-ri/systest-per-webapp/absolute-ordering/web/WEB-INF/faces-configB.xml
+++ b/jsf-ri/systest-per-webapp/absolute-ordering/web/WEB-INF/faces-configB.xml
@@ -1,39 +1,44 @@
 <?xml version='1.0' encoding='UTF-8'?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
 
 <faces-config xmlns="http://java.sun.com/xml/ns/javaee"
diff --git a/jsf-ri/systest-per-webapp/absolute-ordering/web/WEB-INF/web.xml b/jsf-ri/systest-per-webapp/absolute-ordering/web/WEB-INF/web.xml
index 51443bd..103a588 100644
--- a/jsf-ri/systest-per-webapp/absolute-ordering/web/WEB-INF/web.xml
+++ b/jsf-ri/systest-per-webapp/absolute-ordering/web/WEB-INF/web.xml
@@ -1,39 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
+
 <web-app version="2.5"
          xmlns="http://java.sun.com/xml/ns/javaee"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
diff --git a/jsf-ri/systest-per-webapp/absolute-ordering/web/test.xhtml b/jsf-ri/systest-per-webapp/absolute-ordering/web/test.xhtml
index 566e5e8..ca44bea 100644
--- a/jsf-ri/systest-per-webapp/absolute-ordering/web/test.xhtml
+++ b/jsf-ri/systest-per-webapp/absolute-ordering/web/test.xhtml
@@ -1,41 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
-  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
-  Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
-
-  The contents of this file are subject to the terms of either the GNU
-  General Public License Version 2 only ("GPL") or the Common Development
-  and Distribution License("CDDL") (collectively, the "License").  You
-  may not use this file except in compliance with the License. You can obtain
-  a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
-  or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
-  language governing permissions and limitations under the License.
-
-  When distributing the software, include this License Header Notice in each
-  file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
-  Sun designates this particular file as subject to the "Classpath" exception
-  as provided by Sun in the GPL Version 2 section of the License file that
-  accompanied this code.  If applicable, add the following below the License
-  Header, with the fields enclosed by brackets [] replaced by your own
-  identifying information: "Portions Copyrighted [year]
-  [name of copyright owner]"
-
-  Contributor(s):
-
-  If you wish your version of this file to be governed by only the CDDL or
-  only the GPL Version 2, indicate your decision by adding "[Contributor]
-  elects to include this software in this distribution under the [CDDL or GPL
-  Version 2] license."  If you don't indicate a single choice of license, a
-  recipient has the option to distribute your version of this file under
-  either the CDDL, the GPL Version 2 or to extend the choice of license to
-  its licensees as provided above.  However, if you add GPL Version 2 code
-  and therefore, elected the GPL Version 2 license, then the option applies
-  only if the new code is made subject to such option by the copyright
-  holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html
         PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
@@ -47,4 +52,4 @@
 <body>
     <h:outputText value="Order Correct: #{orderingBean.orderCorrect}"/>
 </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/jsf-ri/systest-per-webapp/add-er-replace-vr/src/java/com/sun/faces/systest/AddELResolverAndReplaceVariableresolverProgrammaticallyTestCase.java b/jsf-ri/systest-per-webapp/add-er-replace-vr/src/java/com/sun/faces/systest/AddELResolverAndReplaceVariableresolverProgrammaticallyTestCase.java
new file mode 100644
index 0000000..3126522
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/add-er-replace-vr/src/java/com/sun/faces/systest/AddELResolverAndReplaceVariableresolverProgrammaticallyTestCase.java
@@ -0,0 +1,126 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+
+package com.sun.faces.systest;
+
+
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.sun.faces.htmlunit.HtmlUnitFacesTestCase;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+
+
+
+/**
+ * <p>Make sure that an application that replaces the ApplicationFactory
+ * but uses the decorator pattern to allow the existing ApplicationImpl
+ * to do the bulk of the requests works.</p>
+ */
+
+public class AddELResolverAndReplaceVariableresolverProgrammaticallyTestCase extends HtmlUnitFacesTestCase {
+
+
+    // ------------------------------------------------------------ Constructors
+
+
+    /**
+     * Construct a new instance of this test case.
+     *
+     * @param name Name of the test case
+     */
+    public AddELResolverAndReplaceVariableresolverProgrammaticallyTestCase(String name) {
+        super(name);
+    }
+
+
+    // ------------------------------------------------------ Instance Variables
+
+
+    // ---------------------------------------------------- Overall Test Methods
+
+
+    /**
+     * Set up instance variables required by this test case.
+     */
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+
+
+    /**
+     * Return the tests included in this test suite.
+     */
+    public static Test suite() {
+        return (new TestSuite(AddELResolverAndReplaceVariableresolverProgrammaticallyTestCase.class));
+    }
+
+
+    /**
+     * Tear down instance variables required by this test case.
+     */
+    public void tearDown() {
+        super.tearDown();
+    }
+
+
+    // ------------------------------------------------------ Instance Variables
+
+
+
+    // ------------------------------------------------- Individual Test Methods
+
+    /**
+     *
+     * <p>Verify that the bean is successfully resolved</p>
+     */
+
+    public void testAddELResolverAndReplaceVariableresolverProgrammatically() throws Exception {
+	HtmlPage page = getPage("/faces/test.jsp");
+	assertTrue(-1 != page.asText().indexOf("Invoking the variable resolver chain: success."));
+	assertTrue(-1 != page.asText().indexOf("Invoking the variable resolver directly: success."));
+	assertTrue(-1 != page.asText().indexOf("Invoking the EL resolver directly: true."));
+	assertTrue(-1 != page.asText().indexOf("result: isReadOnly invoked directly."));
+	assertTrue(-1 != page.asText().indexOf("Invoking the EL resolver via chain: true."));
+	assertTrue(-1 != page.asText().indexOf("result: isReadOnly invoked thru chain."));
+    }
+
+}
diff --git a/jsf-ri/systest-per-webapp/add-er-replace-vr/src/java/com/sun/faces/systest/Bean.java b/jsf-ri/systest-per-webapp/add-er-replace-vr/src/java/com/sun/faces/systest/Bean.java
new file mode 100644
index 0000000..b97b52e
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/add-er-replace-vr/src/java/com/sun/faces/systest/Bean.java
@@ -0,0 +1,134 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+/*
+ * Bean.java
+ *
+ * Created on April 29, 2006, 1:57 PM
+ *
+ * To change this template, choose Tools | Template Manager
+ * and open the template in the editor.
+ */
+
+package com.sun.faces.systest;
+
+import com.sun.faces.systest.model.TestBean;
+import javax.el.ELResolver;
+import javax.faces.context.FacesContext;
+import javax.faces.el.EvaluationException;
+import javax.faces.el.VariableResolver;
+
+/**
+ *
+ * @author edburns
+ */
+public class Bean {
+    
+    /** Creates a new instance of Bean */
+    public Bean() {
+    }
+    
+    public String callMethodsOnVariableResolver(FacesContext context, 
+            VariableResolver vr) throws EvaluationException {
+        Object result = null;
+        
+        result = vr.resolveVariable(context, "noneBean");
+        
+        if (!(result instanceof TestBean)) {
+            throw new IllegalStateException("Bean not of correct type");
+        }
+        
+        result = vr.resolveVariable(context, "custom");
+        
+        if (!result.equals("custom")) {
+            throw new IllegalStateException("Bean not of correct type");
+        }
+        
+        return "success";
+    }
+    
+    public String getInvokeVariableResolverThruChain() throws EvaluationException {
+        FacesContext context = FacesContext.getCurrentInstance();
+        VariableResolver vr = context.getApplication().getVariableResolver();
+        return callMethodsOnVariableResolver(context, vr);
+    }
+    
+    public String getInvokeVariableResolverDirectly() throws EvaluationException {
+        FacesContext context = FacesContext.getCurrentInstance();
+        VariableResolver vr = (VariableResolver) context.getExternalContext().getApplicationMap().get("newVR");
+        return callMethodsOnVariableResolver(context, vr);
+    }
+    
+    public String getInvokeELResolverThruChain() throws EvaluationException {
+        FacesContext context = FacesContext.getCurrentInstance();
+        ELResolver er = context.getApplication().getELResolver();
+        boolean isReadOnly = er.isReadOnly(context.getELContext(), "newERThruChain", null);
+
+        return Boolean.valueOf(isReadOnly).toString();
+    }
+
+    public String getInvokeELResolverDirectly() throws EvaluationException {
+        FacesContext context = FacesContext.getCurrentInstance();
+        ELResolver er = (ELResolver) context.getExternalContext().getApplicationMap().get("newER");
+        boolean isReadOnly = er.isReadOnly(context.getELContext(), "newERDirect", null);
+
+        return Boolean.valueOf(isReadOnly).toString();
+    }
+
+    public String getInvokeVariableResolverThruChain1() throws EvaluationException {
+        FacesContext context = FacesContext.getCurrentInstance();
+        VariableResolver vr = context.getApplication().getVariableResolver();
+        Object result = vr.resolveVariable(context, "nonmanaged");
+        if (!(result instanceof TestBean)) {
+            throw new IllegalStateException("Bean not of correct type");
+        }
+        return "success";
+    }
+    
+    public String getInvokeVariableResolverDirectly1() throws EvaluationException {
+        FacesContext context = FacesContext.getCurrentInstance();
+        VariableResolver vr = (VariableResolver) context.getExternalContext().getApplicationMap().get("newVR");
+        Object result = vr.resolveVariable(context, "nonmanaged");
+        if (!(result instanceof TestBean)) {
+            throw new IllegalStateException("Bean not of correct type");
+        }
+        return "success";
+    }
+}
diff --git a/jsf-ri/systest-per-webapp/add-er-replace-vr/src/java/com/sun/faces/systest/EagerApplicationScopedBean.java b/jsf-ri/systest-per-webapp/add-er-replace-vr/src/java/com/sun/faces/systest/EagerApplicationScopedBean.java
new file mode 100644
index 0000000..b2d829e
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/add-er-replace-vr/src/java/com/sun/faces/systest/EagerApplicationScopedBean.java
@@ -0,0 +1,69 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest;
+
+import com.sun.faces.systest.*;
+import javax.annotation.PostConstruct;
+import javax.el.ELResolver;
+import javax.faces.application.Application;
+import javax.faces.bean.ApplicationScoped;
+import javax.faces.bean.ManagedBean;
+import javax.faces.context.FacesContext;
+import javax.faces.el.VariableResolver;
+
+ at ManagedBean(eager=true)
+ at ApplicationScoped
+public class EagerApplicationScopedBean {
+
+    @PostConstruct
+    public void installProgrammaticListener() {
+        Application app = null;
+        FacesContext context = FacesContext.getCurrentInstance();
+        app = context.getApplication();
+        ELResolver newER = new NewELResolver(context);
+        app.addELResolver(newER);
+        VariableResolver oldVr = app.getVariableResolver();
+        VariableResolver newVr = new NewVariableResolver(oldVr, context);
+        app.setVariableResolver(newVr);
+
+    }
+
+}
diff --git a/jsf-ri/systest-per-webapp/add-er-replace-vr/src/java/com/sun/faces/systest/NewELResolver.java b/jsf-ri/systest-per-webapp/add-er-replace-vr/src/java/com/sun/faces/systest/NewELResolver.java
new file mode 100644
index 0000000..611aa76
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/add-er-replace-vr/src/java/com/sun/faces/systest/NewELResolver.java
@@ -0,0 +1,110 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest;
+
+import java.beans.FeatureDescriptor;
+import java.util.Collections;
+import java.util.Iterator;
+import javax.el.ELContext;
+import javax.el.ELResolver;
+import javax.faces.context.FacesContext;
+
+public class NewELResolver extends ELResolver {
+
+    public NewELResolver() {
+        FacesContext.getCurrentInstance().getExternalContext().getApplicationMap().put("newER", this);
+    }
+
+    public NewELResolver(FacesContext context) {
+        context.getExternalContext().getApplicationMap().put("newER", this);
+    }
+
+
+    @Override
+    public Class<?> getCommonPropertyType(ELContext elc, Object o) {
+        return Object.class;
+    }
+
+    @Override
+    public Iterator<FeatureDescriptor> getFeatureDescriptors(ELContext elc, Object o) {
+        return Collections.EMPTY_LIST.iterator();
+    }
+
+    @Override
+    public Class<?> getType(ELContext elc, Object o, Object o1) {
+        return Object.class;
+    }
+
+    @Override
+    public Object getValue(ELContext elc, Object o, Object o1) {
+        return null;
+    }
+
+    @Override
+    public boolean isReadOnly(ELContext elc, Object o, Object o1) {
+        boolean result = false;
+        FacesContext facesContext = (FacesContext) elc.getContext(FacesContext.class);
+
+        if (null != o) {
+            if (o.equals("newERDirect")) {
+                facesContext.getExternalContext().getRequestMap().put("newERDirect",
+                        "isReadOnly invoked directly");
+                elc.setPropertyResolved(true);
+                result = true;
+            } else if (o.equals("newERThruChain")) {
+                facesContext.getExternalContext().getRequestMap().put("newERThruChain",
+                        "isReadOnly invoked thru chain");
+                elc.setPropertyResolved(true);
+                result = true;
+            }
+
+        }
+        return result;
+    }
+
+    @Override
+    public void setValue(ELContext elc, Object o, Object o1, Object o2) {
+        
+    }
+
+
+
+}
diff --git a/jsf-ri/systest-per-webapp/add-er-replace-vr/src/java/com/sun/faces/systest/NewVariableResolver.java b/jsf-ri/systest-per-webapp/add-er-replace-vr/src/java/com/sun/faces/systest/NewVariableResolver.java
new file mode 100644
index 0000000..3632b62
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/add-er-replace-vr/src/java/com/sun/faces/systest/NewVariableResolver.java
@@ -0,0 +1,119 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+/*
+ * NewVariableResolver.java
+ *
+ * Created on April 29, 2006, 1:50 PM
+ *
+ * To change this template, choose Tools | Template Manager
+ * and open the template in the editor.
+ */
+
+package com.sun.faces.systest;
+
+import com.sun.faces.util.Util;
+import javax.faces.context.FacesContext;
+import javax.faces.el.EvaluationException;
+import javax.faces.el.VariableResolver;
+
+/**
+ *
+ * @author edburns
+ */
+public class NewVariableResolver extends VariableResolver {
+    
+    private VariableResolver original = null;
+    
+    /** Creates a new instance of NewVariableResolver */
+    public NewVariableResolver(VariableResolver original) {
+        this.original = original;
+        
+        FacesContext.getCurrentInstance().getExternalContext().getApplicationMap().put("newVR", this);
+    }
+
+    public NewVariableResolver(VariableResolver original, FacesContext context) {
+        this.original = original;
+
+        context.getExternalContext().getApplicationMap().put("newVR", this);
+    }
+
+    public Object resolveVariable(FacesContext context, String name) throws EvaluationException {
+        Object result = null;
+        
+        // This expects a plain old bean that is not configured as a Faces
+        // managed bean.  However, an additional check is done to make sure
+        // that is not configured as a managed bean.  So, we've resolved 
+        // the name as a "non" managed bean, but want to do some additional
+        // checks to make sure that name does not also resolve to a 
+        // managed bean. 
+        //  
+        if (name.equals("nonmanaged")) {
+            Object bean = null;
+            Object managedBean = null;             
+            try {
+                Class clazz = Util.loadClass("com.sun.faces.systest.model.TestBean", context);
+                bean = clazz.newInstance();
+            } catch (Exception e) {
+            } 
+            managedBean = original.resolveVariable(context, name); 
+            if (bean == null) {
+                if (managedBean==null) {
+                    return null;
+                } else {
+                    result = managedBean;
+                }
+            } else {
+                result = bean;
+            }
+            return result;
+        }
+
+        if (name.equals("custom")) {
+            result = "custom";
+        }
+        else {
+            result = original.resolveVariable(context, name);
+        }
+        
+        return result;
+    }
+    
+}
diff --git a/jsf-ri/systest-per-webapp/add-er-replace-vr/web/WEB-INF/faces-config.xml b/jsf-ri/systest-per-webapp/add-er-replace-vr/web/WEB-INF/faces-config.xml
new file mode 100644
index 0000000..73c1b71
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/add-er-replace-vr/web/WEB-INF/faces-config.xml
@@ -0,0 +1,65 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
+    version="2.0">
+
+  <managed-bean>
+    <managed-bean-name>noneBean</managed-bean-name>
+    <managed-bean-class>
+      com.sun.faces.systest.model.TestBean
+    </managed-bean-class>
+    <managed-bean-scope>none</managed-bean-scope>
+  </managed-bean>
+
+  <managed-bean>
+    <managed-bean-name>requestBean</managed-bean-name>
+    <managed-bean-class>
+      com.sun.faces.systest.Bean
+    </managed-bean-class>
+    <managed-bean-scope>request</managed-bean-scope>
+  </managed-bean>
+
+</faces-config>
diff --git a/jsf-ri/systest-per-webapp/add-er-replace-vr/web/WEB-INF/web.xml b/jsf-ri/systest-per-webapp/add-er-replace-vr/web/WEB-INF/web.xml
new file mode 100644
index 0000000..caa121f
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/add-er-replace-vr/web/WEB-INF/web.xml
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee web-app_3_0.xsd">
+    <description>
+       JSF Systests
+    </description>
+    <display-name>JSF Systests</display-name>
+    <!-- Validate the Application Configuration Resources -->
+    <context-param>
+        <param-name>com.sun.faces.validateXml</param-name>
+        <param-value>true</param-value>
+    </context-param>
+    <context-param>
+        <param-name>com.sun.faces.enableHtmlTagLibValidator</param-name>
+        <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>
+    <!-- Faces Servlet -->
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup> 1 </load-on-startup>
+    </servlet>
+    <!-- Faces Servlet Mapping -->
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+</web-app>
diff --git a/jsf-ri/systest-per-webapp/add-er-replace-vr/web/test.jsp b/jsf-ri/systest-per-webapp/add-er-replace-vr/web/test.jsp
new file mode 100644
index 0000000..3e13aa0
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/add-er-replace-vr/web/test.jsp
@@ -0,0 +1,78 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+  <head>
+    <title>test</title>
+    <%@ taglib uri="http://java.sun.com/jsf/core"  prefix="f" %>
+    <%@ taglib uri="http://java.sun.com/jsf/html"  prefix="h" %>
+  </head>
+
+  <body>
+    <h1>test</h1>
+
+<f:view>
+
+  <h:form>
+
+    <p>Invoking the variable resolver chain: <h:outputText value="#{requestBean.invokeVariableResolverThruChain}" />.</p>
+    
+    <p>Invoking the variable resolver directly: <h:outputText value="#{requestBean.invokeVariableResolverDirectly}" />.</p>
+
+    <p>Invoking the EL resolver directly: <h:outputText value="#{requestBean.invokeELResolverDirectly}" />.</p>
+
+    <p>result: <h:outputText value="#{requestScope['newERDirect']}" />.</p>
+
+    <p>Invoking the EL resolver via chain: <h:outputText value="#{requestBean.invokeELResolverThruChain}" />.</p>
+
+    <p>result: <h:outputText value="#{requestScope['newERThruChain']}" />.</p>
+
+  </h:form>
+
+</f:view>
+
+    <hr>
+  </body>
+</html>
diff --git a/jsf-ri/systest-per-webapp/add-er-replace-vr/web/test1.jsp b/jsf-ri/systest-per-webapp/add-er-replace-vr/web/test1.jsp
new file mode 100644
index 0000000..266a91d
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/add-er-replace-vr/web/test1.jsp
@@ -0,0 +1,70 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+  <head>
+    <title>test</title>
+    <%@ taglib uri="http://java.sun.com/jsf/core"  prefix="f" %>
+    <%@ taglib uri="http://java.sun.com/jsf/html"  prefix="h" %>
+  </head>
+
+  <body>
+    <h1>test</h1>
+
+<f:view>
+
+  <h:form>
+
+    <p>Invoking the resolver chain: <h:outputText value="#{requestBean.invokeVariableResolverThruChain1}" />.</p>
+    
+    <p>Invoking the resolver directly: <h:outputText value="#{requestBean.invokeVariableResolverDirectly1}" />.</p>
+
+  </h:form>
+
+</f:view>
+
+    <hr>
+  </body>
+</html>
diff --git a/jsf-ri/systest-per-webapp/annotation-restrictions/src/java/com/sun/faces/systest/AnnotationProcessingTestCase.java b/jsf-ri/systest-per-webapp/annotation-restrictions/src/java/com/sun/faces/systest/AnnotationProcessingTestCase.java
index 0e9ffde..ff5a479 100644
--- a/jsf-ri/systest-per-webapp/annotation-restrictions/src/java/com/sun/faces/systest/AnnotationProcessingTestCase.java
+++ b/jsf-ri/systest-per-webapp/annotation-restrictions/src/java/com/sun/faces/systest/AnnotationProcessingTestCase.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -39,9 +43,9 @@ package com.sun.faces.systest;
 import junit.framework.Test;
 import junit.framework.TestSuite;
 import com.gargoylesoftware.htmlunit.html.HtmlPage;
-import com.sun.faces.htmlunit.AbstractTestCase;
+import com.sun.faces.htmlunit.HtmlUnitFacesTestCase;
 
-public class AnnotationProcessingTestCase extends AbstractTestCase {
+public class AnnotationProcessingTestCase extends HtmlUnitFacesTestCase {
 
 
     public AnnotationProcessingTestCase(String name) {
diff --git a/jsf-ri/systest-per-webapp/annotation-restrictions/src/java/com/sun/faces/systest/model/AnnotationProcessingBean.java b/jsf-ri/systest-per-webapp/annotation-restrictions/src/java/com/sun/faces/systest/model/AnnotationProcessingBean.java
index 69a32f6..ca7d9b0 100644
--- a/jsf-ri/systest-per-webapp/annotation-restrictions/src/java/com/sun/faces/systest/model/AnnotationProcessingBean.java
+++ b/jsf-ri/systest-per-webapp/annotation-restrictions/src/java/com/sun/faces/systest/model/AnnotationProcessingBean.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/systest-per-webapp/annotation-restrictions/src/java/com/sun/faces/systest/test/NotFoundWebInfClasses.java b/jsf-ri/systest-per-webapp/annotation-restrictions/src/java/com/sun/faces/systest/test/NotFoundWebInfClasses.java
index 8004ff5..9b01496 100644
--- a/jsf-ri/systest-per-webapp/annotation-restrictions/src/java/com/sun/faces/systest/test/NotFoundWebInfClasses.java
+++ b/jsf-ri/systest-per-webapp/annotation-restrictions/src/java/com/sun/faces/systest/test/NotFoundWebInfClasses.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/systest-per-webapp/annotation-restrictions/web/WEB-INF/web.xml b/jsf-ri/systest-per-webapp/annotation-restrictions/web/WEB-INF/web.xml
index 66ae800..5e778b4 100644
--- a/jsf-ri/systest-per-webapp/annotation-restrictions/web/WEB-INF/web.xml
+++ b/jsf-ri/systest-per-webapp/annotation-restrictions/web/WEB-INF/web.xml
@@ -1,39 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
+
 <web-app version="2.5"
          xmlns="http://java.sun.com/xml/ns/javaee"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
diff --git a/jsf-ri/systest-per-webapp/annotation-restrictions/web/test.xhtml b/jsf-ri/systest-per-webapp/annotation-restrictions/web/test.xhtml
index 5407a43..3faa60f 100644
--- a/jsf-ri/systest-per-webapp/annotation-restrictions/web/test.xhtml
+++ b/jsf-ri/systest-per-webapp/annotation-restrictions/web/test.xhtml
@@ -1,41 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
-  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
-  Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
-
-  The contents of this file are subject to the terms of either the GNU
-  General Public License Version 2 only ("GPL") or the Common Development
-  and Distribution License("CDDL") (collectively, the "License").  You
-  may not use this file except in compliance with the License. You can obtain
-  a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
-  or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
-  language governing permissions and limitations under the License.
-
-  When distributing the software, include this License Header Notice in each
-  file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
-  Sun designates this particular file as subject to the "Classpath" exception
-  as provided by Sun in the GPL Version 2 section of the License file that
-  accompanied this code.  If applicable, add the following below the License
-  Header, with the fields enclosed by brackets [] replaced by your own
-  identifying information: "Portions Copyrighted [year]
-  [name of copyright owner]"
-
-  Contributor(s):
-
-  If you wish your version of this file to be governed by only the CDDL or
-  only the GPL Version 2, indicate your decision by adding "[Contributor]
-  elects to include this software in this distribution under the [CDDL or GPL
-  Version 2] license."  If you don't indicate a single choice of license, a
-  recipient has the option to distribute your version of this file under
-  either the CDDL, the GPL Version 2 or to extend the choice of license to
-  its licensees as provided above.  However, if you add GPL Version 2 code
-  and therefore, elected the GPL Version 2 license, then the option applies
-  only if the new code is made subject to such option by the copyright
-  holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html
         PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
@@ -47,4 +52,4 @@
 <body>
     <h:outputText value="#{ap.validationResult}"/>
 </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/jsf-ri/systest-per-webapp/bogus-render-kit-id/src/java/com/sun/faces/systest/render/BogusRenderKitIdTestCase.java b/jsf-ri/systest-per-webapp/bogus-render-kit-id/src/java/com/sun/faces/systest/render/BogusRenderKitIdTestCase.java
new file mode 100644
index 0000000..0be21cd
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/bogus-render-kit-id/src/java/com/sun/faces/systest/render/BogusRenderKitIdTestCase.java
@@ -0,0 +1,95 @@
+
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.render;
+
+import com.gargoylesoftware.htmlunit.FailingHttpStatusCodeException;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.sun.faces.htmlunit.HtmlUnitFacesTestCase;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+
+
+public class BogusRenderKitIdTestCase extends HtmlUnitFacesTestCase {
+
+
+    public BogusRenderKitIdTestCase(String name) {
+        super(name);
+    }
+
+    public static Test suite() {
+        return (new TestSuite(BogusRenderKitIdTestCase.class));
+    }
+
+    public void testPerViewRenderKitIdOverride() throws Exception {
+
+        HtmlPage page = getPage("/faces/use-basic-render-kit-id.xhtml");
+        String text = page.asText();
+        assertTrue("Expected: Configured render-kit-id: "
+                + "org.apache.myfaces.trinidad.coreBAD. "
+                + "UIViewRoot render-kit-id: HTML_BASIC." 
+                + " actual: " + text,
+                text.matches("(?s).*Configured\\s*render-kit-id:\\s*org.apache.myfaces.trinidad.coreBAD.*UIViewRoot\\s*render-kit-id:\\s*HTML_BASIC.*"
+
+));
+    }
+
+    public void testExceptionContainsConfiguredRenderKitId() throws Exception {
+        client.setThrowExceptionOnFailingStatusCode(false);
+        HtmlPage page = getPage("/faces/use-configured-render-kit-id.xhtml");
+        assertTrue(page.asText().contains("org.apache.myfaces.trinidad.coreBAD"));
+
+        client.setThrowExceptionOnFailingStatusCode(true);
+        boolean exceptionThrown = false;
+        try {
+            page = getPage("/faces/use-configured-render-kit-id.xhtml");
+        }
+        catch (FailingHttpStatusCodeException e) {
+            exceptionThrown = true;
+            assertEquals(500, e.getStatusCode());
+        }
+        assertTrue(exceptionThrown);
+
+
+
+    }
+}
diff --git a/jsf-ri/systest-per-webapp/bogus-render-kit-id/src/java/com/sun/faces/systest/render/model/BogusRenderKitIdBean.java b/jsf-ri/systest-per-webapp/bogus-render-kit-id/src/java/com/sun/faces/systest/render/model/BogusRenderKitIdBean.java
new file mode 100644
index 0000000..61dedf6
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/bogus-render-kit-id/src/java/com/sun/faces/systest/render/model/BogusRenderKitIdBean.java
@@ -0,0 +1,64 @@
+
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.render.model;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.RequestScoped;
+import javax.faces.context.FacesContext;
+
+
+ at ManagedBean
+ at RequestScoped
+public class BogusRenderKitIdBean {
+
+    public String getConfiguredRenderKitId() {
+        FacesContext context = FacesContext.getCurrentInstance();
+        return context.getApplication().getViewHandler().calculateRenderKitId(context);
+    }
+
+    public String getViewRootRenderKitId() {
+        FacesContext context = FacesContext.getCurrentInstance();
+        return context.getViewRoot().getRenderKitId();
+
+    }
+
+}
diff --git a/jsf-ri/systest-per-webapp/bogus-render-kit-id/web/WEB-INF/faces-config.xml b/jsf-ri/systest-per-webapp/bogus-render-kit-id/web/WEB-INF/faces-config.xml
new file mode 100644
index 0000000..0c94b13
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/bogus-render-kit-id/web/WEB-INF/faces-config.xml
@@ -0,0 +1,14 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<faces-config
+  xmlns="http://java.sun.com/xml/ns/javaee"
+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_1.xsd"
+  version="2.1">
+
+<application>
+    <default-render-kit-id>
+      org.apache.myfaces.trinidad.coreBAD
+    </default-render-kit-id>
+</application>
+
+</faces-config>
diff --git a/jsf-ri/systest-per-webapp/bogus-render-kit-id/web/use-basic-render-kit-id.xhtml b/jsf-ri/systest-per-webapp/bogus-render-kit-id/web/use-basic-render-kit-id.xhtml
new file mode 100644
index 0000000..ac09290
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/bogus-render-kit-id/web/use-basic-render-kit-id.xhtml
@@ -0,0 +1,24 @@
+<!DOCTYPE html
+     PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<f:view xmlns:h="http://java.sun.com/jsf/html"
+        xmlns:f="http://java.sun.com/jsf/core"
+        renderKitId="HTML_BASIC">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+    <title>Hello JSF 2!</title>
+</head>
+<body>
+<h:form id="form">
+<p>Configured render-kit-id: #{bogusRenderKitIdBean.configuredRenderKitId}.</p>
+
+<p>UIViewRoot render-kit-id: #{bogusRenderKitIdBean.viewRootRenderKitId}.</p>
+
+    <h:commandButton id="command" value="submit" />
+</h:form>
+</body>
+</html>
+
+</f:view>
+
diff --git a/jsf-ri/systest-per-webapp/bogus-render-kit-id/web/use-configured-render-kit-id.xhtml b/jsf-ri/systest-per-webapp/bogus-render-kit-id/web/use-configured-render-kit-id.xhtml
new file mode 100644
index 0000000..5591e8b
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/bogus-render-kit-id/web/use-configured-render-kit-id.xhtml
@@ -0,0 +1,20 @@
+<!DOCTYPE html
+     PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"
+      xmlns:h="http://java.sun.com/jsf/html">
+<head>
+    <title>Hello JSF 2!</title>
+</head>
+<body>
+<h:form id="form">
+<p>Configured render-kit-id: #{bogusRenderKitIdBean.configuredRenderKitId}.</p>
+
+<p>UIViewRoot render-kit-id: #{bogusRenderKitIdBean.viewRootRenderKitId}.</p>
+
+    <h:commandButton id="command" value="submit" />
+</h:form>
+</body>
+</html>
+
+
diff --git a/jsf-ri/systest-per-webapp/build-tests.xml b/jsf-ri/systest-per-webapp/build-tests.xml
index c1f307f..36862c4 100644
--- a/jsf-ri/systest-per-webapp/build-tests.xml
+++ b/jsf-ri/systest-per-webapp/build-tests.xml
@@ -1,39 +1,44 @@
 <?xml version='1.0' encoding='UTF-8'?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
 
 <!-- ********** JSF System Integration Test File ************************** -->
@@ -49,44 +54,6 @@
     <property file="../../build.properties"/>
     <import file="${jsf.build.home}/common/ant/common.xml"/>
 
-    <!-- Property containing all of the currenly running systests.
-         This property list *must* match the one defined in the
-         systest-per-webapp build.xml. -->
-    <property name="applications"
-              value="annotation-restrictions,
-                   clientside-statesaving,
-                   absolute-ordering,
-                   document-ordering,
-                   empty-string-as-null,
-                   resource-locale-prefix,
-                   nested-loadbundles,
-                   replace-application,
-                   invalid-mapping,
-                   replace-statemanager,
-                   nested-datatables,
-                   jar-ordering,
-                   replace-lifecycle,
-                   string-converter,
-                   replace-variableresolver,
-                   converter-property-editor,
-                   disable-unicode-escaping,
-                   late-bindings,
-                   property-resolver-jsp,
-                   never-unwrap-exceptions,
-                   write-attribute-script-disabled,
-                   write-attribute-script-enabled,
-                   wcag-datatable,
-                   flash,
-                   jsp-flash,
-                   disable-bean-validator"/>
-    <!--
-       EXCLUDED APPLICATIONS:
-          view-expired
-          core-tags
-          el-performance
-          command-link-redirect
-    -->
-
     <!-- Property definitions to map the application to a JUnit test case -->
     <property  name="annotation-restrictions"
                value="com/sun/faces/systest/AnnotationProcessingTestCase.class" />
@@ -96,8 +63,6 @@
               value="com/sun/faces/systest/clientside/AjaxMultiformTestCase.class"/>
     <property name="document-ordering"
               value="com/sun/faces/systest/DocumentOrderingTestCase.class"/>
-    <property name="empty-string-as-null"
-              value="com/sun/faces/systest/EmptyStringAsNullTestCase.class"/>
     <property name="flash"
               value="com/sun/faces/systest/FlashTestCase.class"/>
     <property name="jsp-flash"
@@ -120,9 +85,15 @@
               value="com/sun/faces/systest/ReplaceLifecycleTestCase.class"/>
     <property name="string-converter"
               value="com/sun/faces/systest/StringConverterTestCase.class"/>
-    <property name="replace-variableresolver"
+    <property name="replace-variableresolver" 
               value="com/sun/faces/systest/ReplaceVariableResolverTestCase.class"/>
-    <property name="converter-property-editor"
+    <property name="replace-variableresolver-programmatically" 
+              value="com/sun/faces/systest/ReplaceVariableResolverTestCase.class"/>
+    <property name="add-er-replace-vr" 
+              value="com/sun/faces/systest/AddELResolverAndReplaceVariableresolverProgrammaticallyTestCase.class"/>
+    <property name="replace-vr-add-er" 
+              value="com/sun/faces/systest/ReplaceVariableResolverAndAddELResolverProgrammaticallyTestCase.class"/>
+    <property name="converter-property-editor" 
               value="com/sun/faces/systest/ConverterPropertyEditorTestCase.class"/>
     <property name="late-bindings"
               value="com/sun/faces/systest/LateBindingTestCase.class"/>
@@ -130,6 +101,8 @@
               value="com/sun/faces/systest/PropertyResolverJspTestCase.class"/>
     <property name="never-unwrap-exceptions"
               value="com/sun/faces/systest/NeverUnwrapExceptionsTestCase.class"/>
+    <property name="write-attribute-script-enabled"
+              value="com/sun/faces/systest/WriteAttributeScriptEnabledTestCase.class"/>
     <property name="write-attribute-script-disabled"
               value="com/sun/faces/systest/WriteAttributeScriptDisabledTestCase.class"/>
     <property name="write-attribute-script-enabled"
@@ -140,6 +113,28 @@
               value="com/sun/faces/systest/WcagDataTableTestCase.class"/>
     <property name="disable-bean-validator"
               value="com/sun/faces/systest/DisableBeanValidatorTestCase.class"/>
+    <property  name="no-web-xml"
+               value="com/sun/faces/systest/NoWebXMLTestCase.class" />
+    <property  name="injection"
+               value="com/sun/faces/systest/InjectionTestCase.class" />
+    <property  name="suppress-xml-decl"
+               value="com/sun/faces/systest/SuppressXmlDeclTestCase.class" />
+    <property  name="myfaces-uidata-component-state-test"
+               value="com/sun/faces/systest/myfaces_uidata_component_state_test/MyFacesUIDataTestCase.class" />
+    <property  name="process-as-jspx"
+               value="com/sun/faces/systest/ProcessAsJspxTestCase.class" />
+    <property  name="request-char-encoding-no-session"
+               value="com/sun/faces/systest/NoSessionCharEncTestCase.class" />
+    <property  name="request-char-encoding-no-session"
+               value="com/sun/faces/systest/NoSessionCharEncTestCase.class" />
+    <property  name="bogus-render-kit-id"
+               value="com/sun/faces/systest/render/BogusRenderKitIdTestCase.class" />
+    <property  name="characterCombat"
+               value="characterCombat/CharacterCombatTestCase.class" />
+    <property  name="cluster-no-agressive-session-dirtying"
+               value="com/sun/faces/systest/ClusterNoAgressiveSessionDirtyingTestCase.class" />
+    <property  name="find-resources-in-jar"
+               value="com/sun/faces/systest/FindResourcesInJarTestCase.class"/>
 
     <!--
         EXCLUDED APPLICATIONS:
@@ -154,55 +149,71 @@
     <!-- ======================== Test Execution ============================== -->
 
 
-    <target name="test"
+    <target name="test" depends="define.scenario.aware.port"
+            description="Execute all tests against installed applications">
+        <property name="systest-per-webapp.results.dir" 
+                  value="${impl.test.results.dir}/systest-per-webapp" />
+
+        <mkdir dir="${systest-per-webapp.results.dir}" />
+
+        <for list="${applications}" param="app" trim="true">
+            <sequential>
+              <propertycopy name="test.name"
+                            from="@{app}"
+                            override="true"/>
+              <test-webapp app-name="@{app}"
+                           app-base-dir="${basedir}/@{app}"
+                           test-case="${test.name}"
+                           test-results-dir="${systest-per-webapp.results.dir}" />
+            </sequential>
+        </for>
+
+        <rename.test-results prefix="non-virtual-server" 
+                             destdir="${impl.test.results.dir}"
+                             srcdir="${systest-per-webapp.results.dir}" />
+        <delete failonerror="false" dir="${systest-per-webapp.results.dir}" />
+
+    </target>
+
+    <target name="test-virtual-server" depends="define.virtual-server.aware.port"
             description="Execute all tests against installed applications">
+        <property name="systest-per-webapp.results.dir" 
+                  value="${impl.test.results.dir}/systest-per-webapp-virtual-server" />
+
+        <mkdir dir="${systest-per-webapp.results.dir}" />
 
         <for list="${applications}" param="app" trim="true">
             <sequential>
-	      <if>
-                <and>
-                  <contains string="${applications-for-v3-only}"
-                            substring="@{app}" />
-                  <not>
-                    <equals arg1="${container.name}" arg2="glassfishV3" />
-                  </not>
-                </and>
-                <then>
-                  <echo message="Skipping @{app}.  That one runs on v3 only, and our current container is ${container.name}" />
-                </then>
-		<else>
-		  <propertycopy name="test.name"
-				from="@{app}"
-				override="true"/>
-		  <test-webapp app-name="@{app}"
-			       app-base-dir="${basedir}/@{app}"
-			       test-case="${test.name}"/>
-		</else>
-	      </if>
+              <propertycopy name="test.name"
+                            from="@{app}"
+                            override="true"/>
+              <test-webapp app-name="@{app}"
+                           app-base-dir="${basedir}/@{app}"
+                           test-case="${test.name}" virtual-server="true"
+                           test-results-dir="${systest-per-webapp.results.dir}"/>
             </sequential>
         </for>
+        <rename.test-results prefix="virtual-server" 
+                             destdir="${impl.test.results.dir}"
+                             srcdir="${systest-per-webapp.results.dir}" />
+        <delete failonerror="false" dir="${systest-per-webapp.results.dir}" />
+
 
     </target>
 
-    <macrodef name="test-webapp">
-        <attribute name="app-name"/>
-        <attribute name="app-base-dir"/>
-        <attribute name="test-case"/>
-        <sequential>
-            <path id="test.classpath">
-                <pathelement location="@{app-base-dir}/build/classes"/>
-                <pathelement location="${basedir}/build/classes"/>
-                <path refid="htmlunit.runtime.classpath"/>
-            </path>
-            <jsf.junit classpath-refid="test.classpath"
-                       context-path="/jsf-@{app-name}"
-                       test-results-dir="${impl.test.results.dir}">
-                <tests>
-                    <fileset dir="@{app-base-dir}/build/classes"
-                             includes="@{test-case}"/>
-                </tests>
-            </jsf.junit>
-        </sequential>
+    <macrodef name="rename.test-results">
+      <attribute name="prefix" />
+      <attribute name="srcdir" />
+      <attribute name="destdir" />
+      <sequential>
+        <move todir="@{destdir}" 
+              includeemptydirs="false" overwrite="true">
+                <fileset dir="@{srcdir}">
+                  <exclude name="**/TEST-@{prefix}-*.xml"/>
+                </fileset>
+                <mapper type="glob" from="TEST-*.xml" to="TEST-@{prefix}-*.xml"/>
+        </move>
+      </sequential>
     </macrodef>
 
 </project>
diff --git a/jsf-ri/systest-per-webapp/build.xml b/jsf-ri/systest-per-webapp/build.xml
index 619a5ee..2adb771 100644
--- a/jsf-ri/systest-per-webapp/build.xml
+++ b/jsf-ri/systest-per-webapp/build.xml
@@ -1,41 +1,45 @@
 <?xml version='1.0' encoding='UTF-8'?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
--->
 
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
 
 <!-- ************ JSF build file ************************************** -->
 
@@ -54,8 +58,10 @@
 
     <!-- Construct compile classpath -->
     <path id="test.compile.classpath">
-        <pathelement location="${jsf-api.jar}"/>
-        <pathelement location="${jsf-impl.jar}"/>
+        <pathelement location="${javax.faces.jar}"/>
+        <pathelement location="${javax-enterprise.jar}"/>
+        <pathelement location="${javax-inject.jar}"/>
+        <pathelement location="${jsf.test.jar}"/>
         <pathelement location="${jsf.test.jar}"/>
         <path refid="compile.classpath"/>
         <pathelement location="${basedir}/build/classes"/>       
@@ -63,28 +69,43 @@
         <path refid="htmlunit.compile.classpath"/>
     </path>
 
-    <property name="applications-for-v3-only"
-              value="disable-bean-validator" />
+    <property name="deploy-exploded-applications"
+              value="" />
 
-    <!-- Property containing all of the currenly running systests.  
-         This property list *must* match the one defined in the
-         systest-per-webapp build-tests.xml. -->
-    <property name="applications"
-              value="annotation-restrictions,
+    <property name="applications-for-V3-only"
+              value="disable-bean-validator,
+                     no-web-xml" />
+
+    <property name="applications-for-V3.1-only"
+              value="disable-bean-validator,
+                     injection,
+                     no-web-xml,
+                     cluster-no-agressive-session-dirtying" />
+
+    <property name="applications-for-V3.1_no_cluster-only"
+              value="disable-bean-validator,
+                     injection,
+                     no-web-xml" />
+
+    <property name="container-agnostic-applications"
+              value="
+                   find-resources-in-jar,
+                   annotation-restrictions,
                    clientside-statesaving,
                    absolute-ordering,
                    document-ordering,
-                   empty-string-as-null,
                    resource-locale-prefix,
                    nested-loadbundles,
                    replace-application,
-                   replace-statemanager,  
+                   replace-statemanager,
                    invalid-mapping,
                    nested-datatables,
-                   jar-ordering,                  
+                   jar-ordering,
                    replace-lifecycle,
                    string-converter,
                    replace-variableresolver,
+                   replace-variableresolver-programmatically,
+                   add-er-replace-vr,
                    converter-property-editor,
                    disable-unicode-escaping,
                    late-bindings,
@@ -95,8 +116,12 @@
                    wcag-datatable,
                    flash,
                    jsp-flash,
-                   disable-bean-validator"/>
-    <!-- 
+                   suppress-xml-decl,
+                   process-as-jspx,
+                   request-char-encoding-no-session,
+                   bogus-render-kit-id,
+                   characterCombat"/>
+    <!--
 
        EXCLUDED APPLICATIONS:
           view-expired
@@ -107,6 +132,33 @@
                    jsp-flash
     -->
 
+   <property name="applications-for-V3.1_no_cluster-virtual-server"
+             value="
+                   find-resources-in-jar,
+                   annotation-restrictions,
+                   clientside-statesaving,
+                   resource-locale-prefix,
+                   nested-loadbundles,
+                   replace-application,
+                   replace-statemanager,
+                   invalid-mapping,
+                   nested-datatables,
+                   jar-ordering,
+                   replace-lifecycle,
+                   string-converter,
+                   replace-variableresolver,
+                   converter-property-editor,
+                   late-bindings,
+                   property-resolver-jsp,
+                   never-unwrap-exceptions,
+                   write-attribute-script-disabled,
+                   write-attribute-script-enabled,
+                   wcag-datatable,
+                   suppress-xml-decl,
+                   process-as-jspx,
+                   bogus-render-kit-id,
+                   characterCombat"/>
+
     <!-- ************ Executable Targets ************************************** -->
 
 
@@ -125,69 +177,54 @@
         <attribute name="base-app-dir"/>
         <attribute name="appname"/>
         <sequential>
-            <if>
-              <and>
-                <contains string="${applications-for-v3-only}"
-                          substring="@{appname}" />
-                <not>
-                  <equals arg1="${container.name}" arg2="glassfishV3" />
-                </not>
-              </and>
-              <then>
-                <echo message="Skipping @{appname}.  That one runs on v3 only, and our current container is ${container.name}" />
-              </then>
-              <else>
-                <mkdir dir="@{base-app-dir}/build/classes"/>
-                <jsf.javac srcdir="@{base-app-dir}/src/java"
-                           destdir="@{base-app-dir}/build/classes">
-                    <classpath>
-                        <path refid="test.compile.classpath"/>
-                    </classpath>
-                </jsf.javac>
-                  <jsf.war archive-name="jsf-@{appname}"
-                           basedir="@{base-app-dir}/build"
-                           webxml="@{base-app-dir}/web/WEB-INF/web.xml">
-                      <archive-elements>
-                          <zipfileset dir="@{base-app-dir}/web"
-                                      includes="**/*"/>
-                          <zipfileset dir="@{base-app-dir}/build/classes"
-                                      prefix="WEB-INF/classes"
-                                      excludes="**/*TestCase.class"/>
-                          <zipfileset dir="@{base-app-dir}/src/java"
-                                      includes="**/*.properties,**/*.xml"
-                                      prefix="WEB-INF/classes"/>
-                          <zipfileset dir="${basedir}/build/classes"
-                                      prefix="WEB-INF/classes"
-                                      excludes="**/*TestCase.class"/>
-                      </archive-elements>
-                  </jsf.war>
-                <mkdir dir="@{base-app-dir}/build/jsf-@{appname}" />
-                <unwar src="@{base-app-dir}/build/jsf-@{appname}.war"
-                       dest="@{base-app-dir}/build/jsf-@{appname}" />
-              </else>
-            </if>
+          <mkdir dir="@{base-app-dir}/build/classes"/>
+          <jsf.javac srcdir="@{base-app-dir}/src/java"
+                     destdir="@{base-app-dir}/build/classes">
+              <classpath>
+                  <path refid="test.compile.classpath"/>
+              </classpath>
+          </jsf.javac>
+            <jsf.war archive-name="jsf-@{appname}"
+                     basedir="@{base-app-dir}/build"
+                     webxml="@{base-app-dir}/web/WEB-INF/web.xml">
+                <archive-elements>
+                    <zipfileset dir="@{base-app-dir}/web"
+                                includes="**/*"/>
+                    <zipfileset dir="@{base-app-dir}/build/classes"
+                                prefix="WEB-INF/classes"
+                                excludes="**/*TestCase.class"/>
+                    <zipfileset dir="@{base-app-dir}/src/java"
+                                includes="**/*.properties,**/*.xml"
+                                prefix="WEB-INF/classes"/>
+                    <zipfileset dir="${basedir}/build/classes"
+                                prefix="WEB-INF/classes"
+                                includes="com/sun/faces/systest/model/*.class"
+                                excludes="**/*TestCase*"/>
+                </archive-elements>
+            </jsf.war>
+          <mkdir dir="@{base-app-dir}/build/jsf-@{appname}" />
+          <unwar src="@{base-app-dir}/build/jsf-@{appname}.war"
+                 dest="@{base-app-dir}/build/jsf-@{appname}" />
         </sequential>
     </macrodef>
 
     <macrodef name="deploy.app">
         <attribute name="base-app-dir"/>
         <attribute name="appname"/>
+        <attribute name="use-virtual-servers" default="false"/>
         <sequential>
           <if>
-            <and>
-              <contains string="${applications-for-v3-only}"
-                        substring="@{appname}" />
-              <not>
-                <equals arg1="${container.name}" arg2="glassfishV3" />
-              </not>
-            </and>
+            <contains string="${deploy-exploded-applications}" substring="@{appname}" />
             <then>
-              <echo message="Skipping @{appname}.  That one runs on v3 only, and our current container is ${container.name}" />
+              <deploydir.artifact
+                    explodedWarDir="@{base-app-dir}/build/jsf-@{appname}"
+                    appName="jsf-@{appname}"/>
             </then>
             <else>
               <deploy.artifact
                     artifact="@{base-app-dir}/build/jsf-@{appname}.war"
-                    appName="jsf-@{appname}"/>
+                    appName="jsf-@{appname}" 
+                    use-virtual-servers="@{use-virtual-servers}"/>
             </else>
           </if>
         </sequential>
@@ -211,11 +248,52 @@
         </jsf.javac>
     </target>
 
-    <target name="install" depends="compile.base.sources">
+    <target name="define.applications" depends="discover.container.version,define.V2.applications,define.V3.applications,define.V3.1.applications,define.V3.1_no_cluster.applications" />
+
+    <target name="define.applications.virtual-server" depends="discover.container.version,define.V3.1_no_cluster.applications.virtual.server">
+      <property name="applications" value="" />
+      <property name="instance.numbers" value="1,2" />
+    </target>
+
+    <target name="query.is.V3.1_no_cluster">
+        <condition property="container.is.V3.1_no_cluster">
+          <equals arg1="glassfishV3.1_no_cluster" arg2="${container.name}" />
+        </condition>
+    </target>
+
+    <target name="define.V2.applications" if="container.is.V2">
+       <property name="applications" value="${container-agnostic-applications}" />
+    </target>
+
+    <target name="define.V3.applications" if="container.is.V3">
+       <property name="applications" 
+                 value="${container-agnostic-applications},${applications-for-V3-only}" />
+    </target>
+
+    <target name="define.V3.1.applications" if="container.is.V3.1">
+       <property name="applications" 
+                 value="${container-agnostic-applications},${applications-for-V3.1-only}" />
+    </target>
+
+    <target name="define.V3.1_no_cluster.applications.virtual.server" 
+            if="container.is.V3.1_no_cluster">
+       <property name="applications"
+                 value="${applications-for-V3.1_no_cluster-virtual-server}" />
+    </target>
+
+
+
+    <target name="define.V3.1_no_cluster.applications" if="container.is.V3.1_no_cluster">
+       <property name="applications" 
+                 value="${container-agnostic-applications},${applications-for-V3.1_no_cluster-only}" />
+    </target>
+
+    <target name="install" depends="compile.base.sources,define.applications">
         
         <for list="${applications}" param="app" trim="true">
             <sequential>
                 <undeploy.app appname="@{app}"/>
+
                 <build.app appname="@{app}"
                             base-app-dir="${basedir}/@{app}"/>
                 <deploy.app appname="@{app}"
@@ -225,42 +303,76 @@
 
     </target>
 
-    <target name="build" depends="compile.base.sources">
-        
+<target name="install-virtual-server" depends="compile.base.sources,define.applications.virtual-server">
+    <if>
+        <or>
+            <equals arg1="${create-virtual-servers}" arg2="true"
+                   casesensitive="false" trim="true" />
+            <contains string="${create-virtual-servers}" substring="create-virtual-servers"
+                   />
+        </or>
+        <then>
+          <delete.virtual.servers/>
+          <create.virtual.servers/>
+        </then>
+      </if>
+         
         <for list="${applications}" param="app" trim="true">
             <sequential>
+                <undeploy.app appname="@{app}"/>
                 <build.app appname="@{app}"
+                           base-app-dir="${basedir}/@{app}"/>               
+                <deploy.app appname="@{app}" use-virtual-servers="true"
                             base-app-dir="${basedir}/@{app}"/>
             </sequential>
         </for>
+        
+    </target>
+
+    <target name="build" depends="define.applications,compile.base.sources">
+        
+        <for list="${applications}" param="app" trim="true">
+            <sequential>
+                <build.app appname="@{app}"
+                            base-app-dir="${basedir}/@{app}"/>               
+            </sequential>
+        </for>
 
     </target>
 
-    <target name="remove">
+    <target name="remove" depends="define.applications">
         
         <for list="${applications}" param="app" trim="true">
             <sequential>
-              <if>
-                <and>
-                  <contains string="${applications-for-v3-only}"
-                            substring="@{app}" />
-                  <not>
-                    <equals arg1="${container.name}" arg2="glassfishV3" />
-                  </not>
-                </and>
-                <then>
-                  <echo message="Skipping @{app}.  That one runs on v3 only, and our current container is ${container.name}" />
-                </then>
-                <else>
-                  <undeploy.app appname="@{app}"/>              
-                </else>
-              </if>
+              <undeploy.app appname="@{app}"/>              
+            </sequential>
+        </for>
+        
+    </target>
+
+    <target name="remove-virtual-server" depends="define.applications.virtual-server">
+
+        <for list="${applications}" param="app" trim="true">
+            <sequential>
+              <undeploy.app appname="@{app}"/>              
             </sequential>
         </for>
+
+      <if>
+        <or>
+           <equals arg1="${create-virtual-servers}" arg2="true"
+                   casesensitive="false" trim="true" />
+           <contains string="${create-virtual-servers}" substring="create-virtual-servers"
+                   />
+        </or>
+        <then>
+          <delete.virtual.servers/>
+        </then>
+      </if>
         
     </target>
 
-    <target name="clean"
+    <target name="clean" depends="define.applications"
             description="Clean build and distribution directories">
         
         <delete dir="${basedir}/build"/>
@@ -276,7 +388,7 @@
 
     <!-- ********** Test Execution Targets ************************************ -->
 
-    <target name="test.no.install" 
+    <target name="test.no.install" depends="define.applications"
             description="Execute all tests against installed /jsf-* applications">
 
         <ant antfile="build-tests.xml" target="test">
@@ -291,11 +403,17 @@
 
         <ant antfile="build-tests.xml" target="test">
           <property name="applications" value="${applications}" />
-          <property name="applications-for-v3-only" 
-                    value="${applications-for-v3-only}" />
-          <property name="container.name" value="${container.name}" />
         </ant>
 
-    </target>    
+    </target>
+
+    <target name="test-virtual-server" depends="define.applications.virtual-server"
+            description="Execute all tests against installed /jsf-* applications">
+
+        <ant antfile="build-tests.xml" target="test-virtual-server">        
+          <property name="glassfishV3.1-virtual-server" value="true" />
+        </ant>
+    </target>
+
         
 </project>
diff --git a/jsf-ri/systest-per-webapp/characterCombat/src/java/characterCombat/CharacterBean.java b/jsf-ri/systest-per-webapp/characterCombat/src/java/characterCombat/CharacterBean.java
new file mode 100644
index 0000000..f16d8a8
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/characterCombat/src/java/characterCombat/CharacterBean.java
@@ -0,0 +1,71 @@
+/*
+ * The contents of this file are subject to the terms
+ * of the Common Development and Distribution License
+ * (the License). You may not use this file except in
+ * compliance with the License.
+ * 
+ * You can obtain a copy of the License at
+ * https://javaserverfaces.dev.java.net/CDDL.html or
+ * legal/CDDLv1.0.txt. 
+ * See the License for the specific language governing
+ * permission and limitations under the License.
+ * 
+ * When distributing Covered Code, include this CDDL
+ * Header Notice in each file and include the License file
+ * at legal/CDDLv1.0.txt.    
+ * If applicable, add the following below the CDDL Header,
+ * with the fields enclosed by brackets [] replaced by
+ * your own identifying information:
+ * "Portions Copyrighted [year] [name of copyright owner]"
+ * 
+ * [Name of File] [ver.__] [Date]
+ * 
+ * Copyright 2005 Sun Microsystems Inc. All Rights Reserved
+ */
+
+package characterCombat;
+
+/** <p>CharacterBean represents the data of an individual character</p> */
+public class CharacterBean {
+
+    String name = null;
+
+    /**
+     * <p>Get the character name</p>
+     *
+     * @return character name String
+     */
+    public String getName() {
+        return name;
+    }
+
+    /**
+     * <p>Set the character name</p>
+     *
+     * @param name
+     */
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    SpeciesBean species = null;
+
+    /**
+     * <p>Get the species bean</p>
+     *
+     * @return species SpeciesBean
+     */
+    public SpeciesBean getSpecies() {
+        return species;
+    }
+
+    /**
+     * <p>Set the species bean</p>
+     *
+     * @param species SpeciesBean
+     */
+    public void setSpecies(SpeciesBean species) {
+        this.species = species;
+    }
+
+}
diff --git a/jsf-ri/systest-per-webapp/characterCombat/src/java/characterCombat/CharacterCombatTestCase.java b/jsf-ri/systest-per-webapp/characterCombat/src/java/characterCombat/CharacterCombatTestCase.java
new file mode 100644
index 0000000..354629f
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/characterCombat/src/java/characterCombat/CharacterCombatTestCase.java
@@ -0,0 +1,89 @@
+
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package characterCombat;
+
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import com.sun.faces.htmlunit.HtmlUnitFacesTestCase;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+
+
+public class CharacterCombatTestCase extends HtmlUnitFacesTestCase {
+
+
+    public CharacterCombatTestCase(String name) {
+        super(name);
+    }
+
+    public static Test suite() {
+        return (new TestSuite(CharacterCombatTestCase.class));
+    }
+
+    public void test01() throws Exception {
+
+       HtmlPage page = getPage("/main.faces");
+       HtmlSubmitInput nextButton = (HtmlSubmitInput) page.getElementById("wizard-buttons:next");
+       page = nextButton.click();
+       String text = page.asText();
+       assertTrue(text.contains("Gandalf"));
+       assertTrue(text.contains("Frodo"));
+       assertTrue(text.contains("Legolas"));
+
+       nextButton = (HtmlSubmitInput) page.getElementById("wizard-buttons:next");
+       page = nextButton.click();
+
+       text = page.asXml();
+       assertFalse(text.contains("value=\"Gandalf\""));
+       assertTrue(text.contains("Frodo"));
+       assertTrue(text.contains("Legolas"));
+
+       nextButton = (HtmlSubmitInput) page.getElementById("wizard-buttons:next");
+       page = nextButton.click();
+
+       text = page.asText();
+       assertTrue(text.matches("(?s).*If\\s*[a-zA-Z]*\\s*and\\s*[a-zA-Z].*winner\\swould be.*[a-zA-Z]*.*"));
+
+
+    }
+}
diff --git a/jsf-ri/systest-per-webapp/characterCombat/src/java/characterCombat/ModelBean.java b/jsf-ri/systest-per-webapp/characterCombat/src/java/characterCombat/ModelBean.java
new file mode 100644
index 0000000..32d4dd1
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/characterCombat/src/java/characterCombat/ModelBean.java
@@ -0,0 +1,451 @@
+/*
+ * The contents of this file are subject to the terms
+ * of the Common Development and Distribution License
+ * (the License). You may not use this file except in
+ * compliance with the License.
+ * 
+ * You can obtain a copy of the License at
+ * https://javaserverfaces.dev.java.net/CDDL.html or
+ * legal/CDDLv1.0.txt. 
+ * See the License for the specific language governing
+ * permission and limitations under the License.
+ * 
+ * When distributing Covered Code, include this CDDL
+ * Header Notice in each file and include the License file
+ * at legal/CDDLv1.0.txt.    
+ * If applicable, add the following below the CDDL Header,
+ * with the fields enclosed by brackets [] replaced by
+ * your own identifying information:
+ * "Portions Copyrighted [year] [name of copyright owner]"
+ * 
+ * [Name of File] [ver.__] [Date]
+ * 
+ * Copyright 2005 Sun Microsystems Inc. All Rights Reserved
+ */
+
+package characterCombat;
+
+import javax.faces.event.AbortProcessingException;
+import javax.faces.event.ActionEvent;
+import javax.faces.model.SelectItem;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+
+
+/**
+ * <p>ModelBean is the backing bean for the CombatCharacter application.
+ * It contains available characters and species types. It also contains
+ * action handlers that process current bean state and return appropriate
+ * results based on the action.</p>
+ */
+public class ModelBean {
+
+    // -------------------------------------------------------------------------
+    // Class Variables ---------------------------------------------------------
+    // -------------------------------------------------------------------------
+
+    /** <p>Array of SelectItem entries for the available species</p> */
+    private static SelectItem characterSpeciesOptions[] = {
+          new SelectItem("Maia"),
+          new SelectItem("Istari"),
+          new SelectItem("Ent"),
+          new SelectItem("Elf"),
+          new SelectItem("Man"),
+          new SelectItem("Dwarf"),
+          new SelectItem("Hobbit")
+    };
+
+    /** <p>Tie result String</p> */
+    private static String tieResult = "No One";
+
+    // -------------------------------------------------------------------------
+    // Instance Variables ------------------------------------------------------
+    // -------------------------------------------------------------------------
+
+    /**
+     * <p>Map of available species and their respective properties. Map
+     * is keyed by species type and contains SpeciesBean entries</p>
+     */
+    private HashMap<String, SpeciesBean> speciesPropertyMap = null;
+
+    // -------------------------------------------------------------------------
+    // Constructor -------------------------------------------------------------
+    // -------------------------------------------------------------------------
+
+    /**
+     * <p> Populate Map instance with species and their characteristics.
+     * Populate a list of characters</p>
+     */
+    public ModelBean() {
+        //create List of Map instances for pre-defined characters
+        populate();
+    }
+
+    // -------------------------------------------------------------------------
+    // Value Properties --------------------------------------------------------
+    // -------------------------------------------------------------------------
+
+    ArrayList<CharacterBean> dataList = null;
+
+    /**
+     * <p>Returns List of characters</p>
+     *
+     * @return the list of characters
+     */
+    public List<CharacterBean> getDataList() {
+        return dataList;
+    }
+
+    /**
+     * <p>Set the internal list of characters</p>
+     *
+     * @param dataList List of characters
+     */
+    public void setDataList(ArrayList<CharacterBean> dataList) {
+        this.dataList = dataList;
+    }
+
+    private String customName = null;
+
+    /**
+     * <p>Get the custom entry's name</p>
+     *
+     * @return custom name String
+     */
+    public String getCustomName() {
+        return customName;
+    }
+
+    /**
+     * <p>Set the custom entry's name</p>
+     *
+     * @param customName custom name
+     */
+    public void setCustomName(String customName) {
+        this.customName = customName;
+    }
+
+    private String customSpecies = null;
+
+    /**
+     * <p>Get the custom entry's species</p>
+     *
+     * @return custom species String
+     */
+    public String getCustomSpecies() {
+        return customSpecies;
+    }
+
+    /**
+     * <p>Set the custom entry's species</p>
+     *
+     * @param customSpecies
+     */
+    public void setCustomSpecies(String customSpecies) {
+        this.customSpecies = customSpecies;
+    }
+
+    private String currentSelection = null;
+
+    /**
+     * <p>Get the current character name. If there is no current
+     * name, get one from a list of available characters</p>
+     *
+     * @return current character name String
+     */
+    public String getCurrentSelection() {
+        return currentSelection;
+    }
+
+    /**
+     * <p>Set the current character name</p>
+     *
+     * @param currentSelection
+     */
+    public void setCurrentSelection(String currentSelection) {
+        this.currentSelection = currentSelection;
+    }
+
+    private String firstSelection = null;
+
+    /**
+     * <p>Get the first selected character name</p>
+     *
+     * @return first selected character name String
+     */
+    public String getFirstSelection() {
+        if (null == firstSelection) {
+            firstSelection = (dataList.get(0)).getName();
+        }
+        return firstSelection;
+    }
+
+    /**
+     * <p>Set the first selected character name</p>
+     *
+     * @param firstSelection
+     */
+    public void setFirstSelection(String firstSelection) {
+        this.firstSelection = firstSelection;
+    }
+
+    private String secondSelection = null;
+
+    /**
+     * <p>Get the second selected character name</p>
+     *
+     * @return second selected character name String
+     */
+    public String getSecondSelection() {
+        if (null == secondSelection) {
+            List<SelectItem> available = getCharactersToSelect();
+            secondSelection = (String) (available.get(0)).getValue();
+        }
+        return secondSelection;
+    }
+
+    /**
+     * <p>Set the second selected character name</p>
+     *
+     * @param secondSelection
+     */
+    public void setSecondSelection(String secondSelection) {
+        this.secondSelection = secondSelection;
+    }
+
+    // -------------------------------------------------------------------------
+    // Data Properties ---------------------------------------------------------
+    // -------------------------------------------------------------------------
+
+    /**
+     * <p>Get the list of available species options</p>
+     *
+     * @return List of available species options
+     */
+    public List<SelectItem> getSpeciesOptions() {
+        return Arrays.asList(characterSpeciesOptions);
+    }
+
+    /**
+     * <p>Get list of characters available for selection.
+     * If a character has already been selected, do not
+     * display it in the available characters list. Wrap
+     * the list in SelectItems so that the items can
+     * be handled by the JSF framework as selectable items</p>
+     *
+     * @return List of available SelectItem characters
+     */
+    public List<SelectItem> getCharactersToSelect() {
+        List<SelectItem> selectItemList = new ArrayList<SelectItem>();
+        Iterator<CharacterBean> iter = dataList.iterator();
+        SelectItem selectItem;
+
+        while (iter.hasNext()) {
+            CharacterBean item = iter.next();
+
+            //If a character has been selected, do not include it
+            if (!item.getName().equals(firstSelection)) {
+                selectItem = new SelectItem(item.getName());
+                selectItemList.add(selectItem);
+            }
+        }
+
+        return selectItemList;
+    }
+
+    /**
+     * <p>Get the list of all characters, regardless of whether or not
+     * they are selected</p>
+     *
+     * @return List of all SelectItem characters
+     */
+    public List<SelectItem> getAllCharactersToSelect() {
+        List<SelectItem> selectItemList = new ArrayList<SelectItem>();
+        Iterator<CharacterBean> iter = dataList.iterator();
+        SelectItem selectItem;
+
+        while (iter.hasNext()) {
+            CharacterBean item = iter.next();
+
+            selectItem = new SelectItem(item.getName());
+            selectItemList.add(selectItem);
+        }
+
+        return selectItemList;
+    }
+
+    /**
+     * <p>Very simple algorithm to determine combat winner based on
+     * species. If both characters are the same species, the result is
+     * a tie.</p>
+     * <p>This method could be expanded to include other criteria
+     * and randomization.</p>
+     *
+     * @return combat winner name String
+     */
+    public String getCombatWinner() {
+        String firstSelectionSpecies = getSpeciesByName(firstSelection);
+        String secondSelectionSpecies = getSpeciesByName(secondSelection);
+
+        int firstCount = -1;
+        int secondCount = -1;
+        for (int i = 0; i < characterSpeciesOptions.length; i++) {
+            if (firstSelectionSpecies.equals(
+                  characterSpeciesOptions[i].getLabel())) {
+                firstCount = i;
+            }
+            if (secondSelectionSpecies.equals(
+                  characterSpeciesOptions[i].getLabel())) {
+                secondCount = i;
+            }
+        }
+
+        if (firstCount == secondCount) {
+            return tieResult;
+        }
+        return (firstCount < secondCount) ? firstSelection : secondSelection;
+    }
+
+    // -------------------------------------------------------------------------
+    // Action Handlers ---------------------------------------------------------
+    // -------------------------------------------------------------------------
+
+    /**
+     * <p>Add the new name to character list if name is not empty or does
+     * not already exist in the list<p>
+     *
+     * @param event the ActionEvent that triggered the action
+     */
+    public void addCustomName(ActionEvent event)
+          throws AbortProcessingException {
+        if ((customName != null) && (!customName.trim().equals(""))) {
+            customName = customName.trim();
+
+            //check to see if name already exists in list
+            for (CharacterBean item : dataList) {
+                if (item.getName().equals(customName)) {
+                    reset();
+                    return;
+                }
+            }
+
+            //create new entry
+            CharacterBean item = new CharacterBean();
+            item.setName(customName);
+            item.setSpecies(speciesPropertyMap.get(customSpecies));
+            dataList.add(item);
+        }
+    }
+
+    // -------------------------------------------------------------------------
+    // Private Methods ---------------------------------------------------------
+    // -------------------------------------------------------------------------
+
+    /**
+     * <p>Get species type based on character name<p>
+     *
+     * @param name
+     *
+     * @return species type String
+     */
+    private String getSpeciesByName(String name) {
+
+        for (CharacterBean item : dataList) {
+            if (item.getName().equals(name)) {
+                return item.getSpecies().getType();
+            }
+        }
+        return null;
+    }
+
+    /**
+     * <p>Populate both the species property map of species type to
+     * species property bean mappings as well as initial list of
+     * available characters</p>
+     */
+    private void populate() {
+        populateSpeciesMap();
+        populateCharacterList();
+    }
+
+
+    /** <p>Populate species type to properties mappings</p> */
+    private void populateSpeciesMap() {
+        speciesPropertyMap = new HashMap<String, SpeciesBean>();
+        SpeciesBean species = new SpeciesBean();
+        species.setType("Maia");
+        species.setLanguage("Black Speech");
+        species.setImmortal(true);
+        speciesPropertyMap.put(species.getType(), species);
+
+        species = new SpeciesBean();
+        species.setType("Istari");
+        species.setLanguage("Common Tongue");
+        species.setImmortal(true);
+        speciesPropertyMap.put(species.getType(), species);
+
+        species = new SpeciesBean();
+        species.setType("Elf");
+        species.setLanguage("Quenya/Sindarin");
+        species.setImmortal(true);
+        speciesPropertyMap.put(species.getType(), species);
+
+        species = new SpeciesBean();
+        species.setType("Ent");
+        species.setLanguage("Quenya/Sindarin");
+        species.setImmortal(true);
+        speciesPropertyMap.put(species.getType(), species);
+
+        species = new SpeciesBean();
+        species.setType("Man");
+        species.setLanguage("Common Tongue");
+        species.setImmortal(false);
+        speciesPropertyMap.put(species.getType(), species);
+
+        species = new SpeciesBean();
+        species.setType("Dwarf");
+        species.setLanguage("Dwarfish");
+        species.setImmortal(false);
+        speciesPropertyMap.put(species.getType(), species);
+
+        species = new SpeciesBean();
+        species.setType("Hobbit");
+        species.setLanguage("Common Tongue");
+        species.setImmortal(false);
+        speciesPropertyMap.put(species.getType(), species);
+    }
+
+    /** <p>Populate initial characters list</p> */
+    private void populateCharacterList() {
+        dataList = new ArrayList<CharacterBean>();
+        CharacterBean item = new CharacterBean();
+        item.setName("Gandalf");
+        item.setSpecies(speciesPropertyMap.get("Istari"));
+        dataList.add(item);
+
+        item = new CharacterBean();
+        item.setName("Frodo");
+        item.setSpecies(speciesPropertyMap.get("Hobbit"));
+        dataList.add(item);
+
+        item = new CharacterBean();
+        item.setName("Legolas");
+        item.setSpecies(speciesPropertyMap.get("Elf"));
+        dataList.add(item);
+    }
+
+    /**
+     * <p>Clear out internal selection strings in preparation to go
+     * to the selection pages</p>
+     */
+    private void reset() {
+        currentSelection = null;
+        firstSelection = null;
+        secondSelection = null;
+    }
+
+}
diff --git a/jsf-ri/systest-per-webapp/characterCombat/src/java/characterCombat/SpeciesBean.java b/jsf-ri/systest-per-webapp/characterCombat/src/java/characterCombat/SpeciesBean.java
new file mode 100644
index 0000000..34037fd
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/characterCombat/src/java/characterCombat/SpeciesBean.java
@@ -0,0 +1,91 @@
+/*
+ * The contents of this file are subject to the terms
+ * of the Common Development and Distribution License
+ * (the License). You may not use this file except in
+ * compliance with the License.
+ * 
+ * You can obtain a copy of the License at
+ * https://javaserverfaces.dev.java.net/CDDL.html or
+ * legal/CDDLv1.0.txt. 
+ * See the License for the specific language governing
+ * permission and limitations under the License.
+ * 
+ * When distributing Covered Code, include this CDDL
+ * Header Notice in each file and include the License file
+ * at legal/CDDLv1.0.txt.    
+ * If applicable, add the following below the CDDL Header,
+ * with the fields enclosed by brackets [] replaced by
+ * your own identifying information:
+ * "Portions Copyrighted [year] [name of copyright owner]"
+ * 
+ * [Name of File] [ver.__] [Date]
+ * 
+ * Copyright 2005 Sun Microsystems Inc. All Rights Reserved
+ */
+
+package characterCombat;
+
+/** <p>SpeciesBean represents the data associated with a species type</p> */
+public class SpeciesBean {
+
+    String type = null;
+
+    /**
+     * <p>Get the species type</p>
+     *
+     * @return species type String
+     */
+    public String getType() {
+        return type;
+    }
+
+    /**
+     * <p>Set the species type</p>
+     *
+     * @param type - species type
+     */
+    public void setType(String type) {
+        this.type = type;
+    }
+
+    String language = null;
+
+    /**
+     * <p>Get the language associated with the species</p>
+     *
+     * @return species language String
+     */
+    public String getLanguage() {
+        return language;
+    }
+
+    /**
+     * <p>Set the language associated with the species</p>
+     *
+     * @param language - species language
+     */
+    public void setLanguage(String language) {
+        this.language = language;
+    }
+
+    boolean immortal = false;
+
+    /**
+     * <p>Get the immortal state associated with the species</p>
+     *
+     * @return species immortal boolean
+     */
+    public boolean isImmortal() {
+        return immortal;
+    }
+
+    /**
+     * <p>Set the immortal state associated with the species</p>
+     *
+     * @param immortal - is the species immortal
+     */
+    public void setImmortal(boolean immortal) {
+        this.immortal = immortal;
+    }
+
+}
diff --git a/jsf-ri/systest-per-webapp/characterCombat/src/java/characterCombat/WizardButtons.java b/jsf-ri/systest-per-webapp/characterCombat/src/java/characterCombat/WizardButtons.java
new file mode 100644
index 0000000..341f292
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/characterCombat/src/java/characterCombat/WizardButtons.java
@@ -0,0 +1,267 @@
+/*
+ * The contents of this file are subject to the terms
+ * of the Common Development and Distribution License
+ * (the License). You may not use this file except in
+ * compliance with the License.
+ * 
+ * You can obtain a copy of the License at
+ * https://javaserverfaces.dev.java.net/CDDL.html or
+ * legal/CDDLv1.0.txt. 
+ * See the License for the specific language governing
+ * permission and limitations under the License.
+ * 
+ * When distributing Covered Code, include this CDDL
+ * Header Notice in each file and include the License file
+ * at legal/CDDLv1.0.txt.    
+ * If applicable, add the following below the CDDL Header,
+ * with the fields enclosed by brackets [] replaced by
+ * your own identifying information:
+ * "Portions Copyrighted [year] [name of copyright owner]"
+ * 
+ * [Name of File] [ver.__] [Date]
+ * 
+ * Copyright 2005 Sun Microsystems Inc. All Rights Reserved
+ */
+
+package characterCombat;
+
+import javax.el.ELContext;
+import javax.faces.application.Application;
+import javax.faces.application.FacesMessage;
+import javax.faces.application.FacesMessage.Severity;
+import javax.faces.application.NavigationHandler;
+import javax.faces.component.UIViewRoot;
+import javax.faces.context.ExternalContext;
+import javax.faces.context.FacesContext;
+import javax.faces.context.ResponseStream;
+import javax.faces.context.ResponseWriter;
+import javax.faces.render.RenderKit;
+
+import java.util.Iterator;
+
+/**
+ * <p>Backing bean for wizard style navigation.  This class provides
+ * methods that you can point to from your wizard buttons that will
+ * return true or false depending on the current page in the
+ * application.</p>
+ */
+public class WizardButtons {
+
+    /**
+     * <p>Check to see whether the current page should have a back button</p>
+     *
+     * @return true if the current page has a "back" page.
+     */
+    public boolean isHasBack() {
+        FacesContext
+              realContext = FacesContext.getCurrentInstance(),
+              copyContext = createShadowFacesContext(realContext);
+        NavigationHandler nav =
+              copyContext.getApplication().getNavigationHandler();
+        nav.handleNavigation(copyContext, null, "back");
+        return compareUIViewRoots(realContext.getViewRoot(),
+                                  copyContext.getViewRoot());
+    }
+
+    /**
+     * <p>Check to see whether the current page should have a next button</p>
+     *
+     * @return true if the current page has a "next" page.
+     */
+    public boolean isHasNext() {
+        FacesContext
+              realContext = FacesContext.getCurrentInstance(),
+              copyContext = createShadowFacesContext(realContext);
+        NavigationHandler nav =
+              copyContext.getApplication().getNavigationHandler();
+        nav.handleNavigation(copyContext, null, "next");
+        return compareUIViewRoots(realContext.getViewRoot(),
+                                  copyContext.getViewRoot());
+    }
+
+    /**
+     * <p>Check to see whether the current page should have a finish button</p>
+     *
+     * @return true if the current page should have a "finish" button
+     *         instead of a "next" button
+     */
+    public boolean isFinishPage() {
+        FacesContext
+              realContext = FacesContext.getCurrentInstance(),
+              copyContext = createShadowFacesContext(realContext),
+              nextCopyContext;
+        NavigationHandler nav =
+              copyContext.getApplication().getNavigationHandler();
+        // get the next outcome
+        nav.handleNavigation(copyContext, null, "next");
+        nextCopyContext = createShadowFacesContext(copyContext);
+        nav.handleNavigation(nextCopyContext, null, "next");
+        return compareUIViewRoots(copyContext.getViewRoot(),
+                                  nextCopyContext.getViewRoot());
+    }
+
+    /**
+     * <p>Get the label for the "next" button.</p>
+     *
+     * @return String next button label
+     */
+    public String getNextLabel() {
+        String result = "Next >";
+        if (isFinishPage()) {
+            result = "Finish";
+        }
+        return result;
+    }
+
+    /**
+     * <p>Take two View roots and compare them.</p>
+     *
+     * @param one the first ViewRoot
+     * @param two the second ViewRoot
+     *
+     * @return boolean the result of the comparison.
+     */
+    public boolean compareUIViewRoots(UIViewRoot one, UIViewRoot two) {
+        if (null == one && null == two) {
+            return true;
+        }
+        if (null != one && null != two) {
+            if (null == one.getViewId() && null == two.getViewId()) {
+                return true;
+            }
+            if (null != one.getViewId() && null != two.getViewId()) {
+                return one.getViewId().equals(two.getViewId());
+            } else {
+                return false;
+            }
+        }
+        return false;
+    }
+
+    /**
+     * <p>createShadowFacesContext creates a shallow copy of the
+     * argument FacesContext, but with a deep copy of the viewRoot
+     * property.  This allows us to call the NavigationHandler.handleNavigaton
+     * method without modifying the real FacesContext.</p>
+     *
+     * @param context the FacesContext to be copied
+     *
+     * @return FacesContext shallow copy of FacesContext
+     */
+    public FacesContext createShadowFacesContext(FacesContext context) {
+        //final FacesContext oldContext = context;
+
+        class FacesContextImpl extends FacesContext
+        {
+            private FacesContext oldContext = null;
+            private UIViewRoot root = null;
+            private Application application = null;
+
+            public FacesContextImpl(FacesContext context)
+            {
+                this.oldContext = context;
+                this.root = oldContext.getViewRoot();
+                this.application = oldContext.getApplication();
+            }
+
+            public Application getApplication()
+            {
+                return this.application;
+            }
+
+            public Iterator<String> getClientIdsWithMessages()
+            {
+                return oldContext.getClientIdsWithMessages();
+            }
+
+            public ExternalContext getExternalContext()
+            {
+                return oldContext.getExternalContext();
+            }
+
+            public Severity getMaximumSeverity()
+            {
+                return oldContext.getMaximumSeverity();
+            }
+
+            public Iterator<FacesMessage> getMessages()
+            {
+                return oldContext.getMessages();
+            }
+
+            public Iterator<FacesMessage> getMessages(String clientId)
+            {
+                return oldContext.getMessages(clientId);
+            }
+
+            public RenderKit getRenderKit()
+            {
+                return oldContext.getRenderKit();
+            }
+
+            public boolean getRenderResponse()
+            {
+                return oldContext.getRenderResponse();
+            }
+
+            public boolean getResponseComplete()
+            {
+                return oldContext.getResponseComplete();
+            }
+
+            public ResponseStream getResponseStream()
+            {
+                return oldContext.getResponseStream();
+            }
+
+            public void setResponseStream(ResponseStream responseStream)
+            {
+                oldContext.setResponseStream(responseStream);
+            }
+
+            public ResponseWriter getResponseWriter()
+            {
+                return oldContext.getResponseWriter();
+            }
+
+            public void setResponseWriter(ResponseWriter responseWriter)
+            {
+                oldContext.setResponseWriter(responseWriter);
+            }
+
+            public UIViewRoot getViewRoot()
+            {
+                return this.root;
+            }
+
+            public void setViewRoot(UIViewRoot root)
+            {
+                this.root = root;
+            }
+
+            public void addMessage(String clientId, FacesMessage message)
+            {
+                oldContext.addMessage(clientId, message);
+            }
+
+            public void release()
+            {
+            }
+
+            public void renderResponse()
+            {
+            }
+
+            public ELContext getELContext()
+            {
+                return oldContext.getELContext();
+            }
+
+            public void responseComplete()
+            {
+            }
+        }
+
+        return new FacesContextImpl(context);
+    }
+}
diff --git a/jsf-ri/systest-per-webapp/characterCombat/web/WEB-INF/faces-config.xml b/jsf-ri/systest-per-webapp/characterCombat/web/WEB-INF/faces-config.xml
new file mode 100644
index 0000000..8b79862
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/characterCombat/web/WEB-INF/faces-config.xml
@@ -0,0 +1,122 @@
+<?xml version='1.0' encoding='UTF-8'?>
+
+<!--
+ The contents of this file are subject to the terms
+ of the Common Development and Distribution License
+ (the License). You may not use this file except in
+ compliance with the License.
+ 
+ You can obtain a copy of the License at
+ https://javaserverfaces.dev.java.net/CDDL.html or
+ legal/CDDLv1.0.txt. 
+ See the License for the specific language governing
+ permission and limitations under the License.
+ 
+ When distributing Covered Code, include this CDDL
+ Header Notice in each file and include the License file
+ at legal/CDDLv1.0.txt.    
+ If applicable, add the following below the CDDL Header,
+ with the fields enclosed by brackets [] replaced by
+ your own identifying information:
+ "Portions Copyrighted [year] [name of copyright owner]"
+ 
+ [Name of File] [ver.__] [Date]
+ 
+ Copyright 2005 Sun Microsystems Inc. All Rights Reserved
+-->
+
+
+<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd"
+    version="1.2">
+
+  <managed-bean>
+    <managed-bean-name>modelBean</managed-bean-name>
+    <managed-bean-class>characterCombat.ModelBean</managed-bean-class>
+    <managed-bean-scope>session</managed-bean-scope>
+  </managed-bean>
+
+  <managed-bean>
+    <managed-bean-name>wizardButtons</managed-bean-name>
+    <managed-bean-class>characterCombat.WizardButtons</managed-bean-class>
+    <managed-bean-scope>request</managed-bean-scope>
+  </managed-bean>
+
+  <!-- wizard based navigation rules -->
+
+  <navigation-rule>
+    <from-view-id>/main.jsp</from-view-id>
+    <navigation-case>
+      <description>
+        If the action returns "next", goto
+        firstSelection.jsp
+      </description>
+      <from-outcome>next</from-outcome>
+      <to-view-id>/firstSelection.jsp</to-view-id>
+    </navigation-case>
+  </navigation-rule>
+
+  <navigation-rule>
+    <from-view-id>/firstSelection.jsp</from-view-id>
+    <navigation-case>
+      <description>
+        If the action returns "next", goto
+        secondSelection.jsp
+      </description>
+      <from-outcome>next</from-outcome>
+      <to-view-id>/secondSelection.jsp</to-view-id>
+    </navigation-case>
+    <navigation-case>
+      <description>
+        If the action returns "back", goto
+        main.jsp
+      </description>
+      <from-outcome>back</from-outcome>
+      <to-view-id>/main.jsp</to-view-id>
+    </navigation-case>
+
+  </navigation-rule>
+
+  <navigation-rule>
+    <from-view-id>/secondSelection.jsp</from-view-id>
+    <navigation-case>
+      <description>
+        If the action returns "next", goto
+        results.jsp
+      </description>
+      <from-outcome>next</from-outcome>
+      <to-view-id>/results.jsp</to-view-id>
+    </navigation-case>
+    <navigation-case>
+      <description>
+        If the action returns "back", goto
+        firstSelection.jsp
+      </description>
+      <from-outcome>back</from-outcome>
+      <to-view-id>/firstSelection.jsp</to-view-id>
+    </navigation-case>
+  </navigation-rule>
+
+  <navigation-rule>
+    <from-view-id>/results.jsp</from-view-id>
+    <navigation-case>
+      <description>
+        If the action returns "next", goto
+        main.jsp
+      </description>
+      <from-outcome>startOver</from-outcome>
+      <to-view-id>/main.jsp</to-view-id>
+    </navigation-case>
+    <navigation-case>
+      <description>
+        If the action returns "back", goto
+        results.jsp
+      </description>
+      <from-outcome>back</from-outcome>
+      <to-view-id>/secondSelection.jsp</to-view-id>
+    </navigation-case>
+  </navigation-rule>
+
+
+</faces-config>
diff --git a/jsf-ri/systest-per-webapp/characterCombat/web/WEB-INF/web.xml b/jsf-ri/systest-per-webapp/characterCombat/web/WEB-INF/web.xml
new file mode 100644
index 0000000..1efa873
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/characterCombat/web/WEB-INF/web.xml
@@ -0,0 +1,53 @@
+<?xml version='1.0' encoding='UTF-8'?>
+
+<!--
+ The contents of this file are subject to the terms
+ of the Common Development and Distribution License
+ (the License). You may not use this file except in
+ compliance with the License.
+ 
+ You can obtain a copy of the License at
+ https://javaserverfaces.dev.java.net/CDDL.html or
+ legal/CDDLv1.0.txt. 
+ See the License for the specific language governing
+ permission and limitations under the License.
+ 
+ When distributing Covered Code, include this CDDL
+ Header Notice in each file and include the License file
+ at legal/CDDLv1.0.txt.    
+ If applicable, add the following below the CDDL Header,
+ with the fields enclosed by brackets [] replaced by
+ your own identifying information:
+ "Portions Copyrighted [year] [name of copyright owner]"
+ 
+ [Name of File] [ver.__] [Date]
+ 
+ Copyright 2005 Sun Microsystems Inc. All Rights Reserved
+-->
+
+
+<web-app version="2.5"
+         xmlns="http://java.sun.com/xml/ns/javaee"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" >
+
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>client</param-value>
+    </context-param>
+
+    <!-- Faces Servlet -->
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+
+
+    <!-- Faces Servlet Mapping -->
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>*.faces</url-pattern>
+    </servlet-mapping>
+
+</web-app>
diff --git a/jsf-ri/systest-per-webapp/characterCombat/web/firstSelection.jsp b/jsf-ri/systest-per-webapp/characterCombat/web/firstSelection.jsp
new file mode 100644
index 0000000..c68975e
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/characterCombat/web/firstSelection.jsp
@@ -0,0 +1,73 @@
+<!--
+ The contents of this file are subject to the terms
+ of the Common Development and Distribution License
+ (the License). You may not use this file except in
+ compliance with the License.
+ 
+ You can obtain a copy of the License at
+ https://javaserverfaces.dev.java.net/CDDL.html or
+ legal/CDDLv1.0.txt. 
+ See the License for the specific language governing
+ permission and limitations under the License.
+ 
+ When distributing Covered Code, include this CDDL
+ Header Notice in each file and include the License file
+ at legal/CDDLv1.0.txt.    
+ If applicable, add the following below the CDDL Header,
+ with the fields enclosed by brackets [] replaced by
+ your own identifying information:
+ "Portions Copyrighted [year] [name of copyright owner]"
+ 
+ [Name of File] [ver.__] [Date]
+ 
+ Copyright 2005 Sun Microsystems Inc. All Rights Reserved
+-->
+
+<%@ taglib uri="http://java.sun.com/jsf/core"  prefix="f" %>
+<%@ taglib uri="http://java.sun.com/jsf/html"  prefix="h" %>
+<f:view>
+<html>
+<head>
+  <title>
+    First Selection Page
+  </title>
+  <link rel="stylesheet" type="text/css"
+    href='<%= request.getContextPath() + "/stylesheet.css" %>'>
+</head>
+
+<body>
+
+  <h:graphicImage url="/images/header.jpg" />
+
+  <h2>First Selection Page</h2>
+
+  <p>This page illustrates how the same data from the model can be
+     displayed in a different format using the built-in JavaServer
+     Faces components</p>
+
+  <p>You may now choose your first character that will be waging a
+  magical combat</p>
+
+  <h:form prependId="false">
+
+    <h:panelGrid columns="1">
+
+      <h:selectOneRadio 
+        layout="pageDirection" 
+        required="true"
+        value="#{modelBean.firstSelection}">
+        <f:selectItems 
+          value="#{modelBean.allCharactersToSelect}" />
+      </h:selectOneRadio>
+
+      <h:messages />
+
+    </h:panelGrid>
+
+    <jsp:include page="wizard-buttons.jsp"/>
+
+  </h:form>
+
+</body>
+</html>
+</f:view>
diff --git a/jsf-ri/systest-per-webapp/characterCombat/web/images/header.jpg b/jsf-ri/systest-per-webapp/characterCombat/web/images/header.jpg
new file mode 100644
index 0000000..6f6b12d
Binary files /dev/null and b/jsf-ri/systest-per-webapp/characterCombat/web/images/header.jpg differ
diff --git a/jsf-ri/systest-per-webapp/characterCombat/web/index.jsp b/jsf-ri/systest-per-webapp/characterCombat/web/index.jsp
new file mode 100644
index 0000000..e9d3425
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/characterCombat/web/index.jsp
@@ -0,0 +1,37 @@
+<!--
+ The contents of this file are subject to the terms
+ of the Common Development and Distribution License
+ (the License). You may not use this file except in
+ compliance with the License.
+ 
+ You can obtain a copy of the License at
+ https://javaserverfaces.dev.java.net/CDDL.html or
+ legal/CDDLv1.0.txt. 
+ See the License for the specific language governing
+ permission and limitations under the License.
+ 
+ When distributing Covered Code, include this CDDL
+ Header Notice in each file and include the License file
+ at legal/CDDLv1.0.txt.    
+ If applicable, add the following below the CDDL Header,
+ with the fields enclosed by brackets [] replaced by
+ your own identifying information:
+ "Portions Copyrighted [year] [name of copyright owner]"
+ 
+ [Name of File] [ver.__] [Date]
+ 
+ Copyright 2005 Sun Microsystems Inc. All Rights Reserved
+-->
+
+<html>
+<head>
+  <link rel="stylesheet" type="text/css"
+    href='<%= request.getContextPath() + "/stylesheet.css" %>'>
+</head>
+<body>
+
+  <jsp:forward page="main.faces" />
+
+</body>
+</html>
+
diff --git a/jsf-ri/systest-per-webapp/characterCombat/web/main.jsp b/jsf-ri/systest-per-webapp/characterCombat/web/main.jsp
new file mode 100644
index 0000000..a753d2c
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/characterCombat/web/main.jsp
@@ -0,0 +1,133 @@
+<!--
+ The contents of this file are subject to the terms
+ of the Common Development and Distribution License
+ (the License). You may not use this file except in
+ compliance with the License.
+ 
+ You can obtain a copy of the License at
+ https://javaserverfaces.dev.java.net/CDDL.html or
+ legal/CDDLv1.0.txt. 
+ See the License for the specific language governing
+ permission and limitations under the License.
+ 
+ When distributing Covered Code, include this CDDL
+ Header Notice in each file and include the License file
+ at legal/CDDLv1.0.txt.    
+ If applicable, add the following below the CDDL Header,
+ with the fields enclosed by brackets [] replaced by
+ your own identifying information:
+ "Portions Copyrighted [year] [name of copyright owner]"
+ 
+ [Name of File] [ver.__] [Date]
+ 
+ Copyright 2005 Sun Microsystems Inc. All Rights Reserved
+-->
+
+<%@ taglib uri="http://java.sun.com/jsf/core"  prefix="f" %>
+<%@ taglib uri="http://java.sun.com/jsf/html"  prefix="h" %>
+
+<f:view>
+<html>
+<head>
+  <title>
+    CharacterCombat Main Page
+  </title>
+  <link rel="stylesheet" type="text/css"
+    href='<%= request.getContextPath() + "/stylesheet.css" %>'>
+</head>
+
+<body>
+
+  <h:graphicImage url="/images/header.jpg" />
+
+  <h2>Welcome to the Character Combat</h2>
+  <p>This sample application illustrates how you can easily display data
+     from a backing bean, process user input, handle navigation, and
+     display the results all using the JavaServer Faces Framework</p>
+<p>This initial page displays a list of available characters in a table
+     format. You can choose to add your own character to the list using
+     the input text field or simply go on to the next page</p>
+
+  <h:dataTable columnClasses="list-column-center,
+                              list-column-center,
+                              list-column-center,
+                              list-column-center"
+               headerClass="list-header"
+               styleClass="list-background"
+               value="#{modelBean.dataList}"
+               var="character" >
+
+    <f:facet name="header">
+      <h:outputText value="List of Available Characters"/>
+    </f:facet>
+
+    <h:column>
+      <f:facet name="header">
+        <h:outputText value="Name"/>
+      </f:facet>
+
+      <h:outputText value="#{character.name}"/>
+
+    </h:column>
+
+    <h:column>
+      <f:facet name="header">
+        <h:outputText value="Species"/>
+      </f:facet>
+
+      <h:outputText value="#{character.species.type}"/>
+
+    </h:column>
+
+    <h:column>
+      <f:facet name="header">
+        <h:outputText value="Language"/>
+      </f:facet>
+
+      <h:outputText value="#{character.species.language}"/>
+
+    </h:column>
+
+    <h:column>
+      <f:facet name="header">
+        <h:outputText value="Immortal"/>
+      </f:facet>
+
+      <h:outputText value="#{character.species.immortal}"/>
+
+    </h:column>
+
+  </h:dataTable>
+
+<br>
+
+  <h:form prependId="false">
+    <h:panelGrid columnClasses="list-column-center,
+                                list-column-center"
+                 headerClass="list-header"
+                 styleClass="inputList-background"
+                 columns="2">
+      <f:facet name="header">
+        <h:outputText value="Customize Character:"/>
+      </f:facet>
+      <h:inputText value="#{modelBean.customName}" />
+      <h:selectOneListbox value="#{modelBean.customSpecies}"
+        required="true" size="1" >
+        <f:selectItems value="#{modelBean.speciesOptions}"/>
+      </h:selectOneListbox>
+    </h:panelGrid>
+<br>
+    <h:panelGrid columns="1">
+      <h:commandButton actionListener="#{modelBean.addCustomName}" 
+                       value="Add Name"/>
+    </h:panelGrid>
+
+    <jsp:include page="wizard-buttons.jsp"/>
+
+
+  </h:form>
+
+</body>
+
+</html>
+</f:view>
diff --git a/jsf-ri/systest-per-webapp/characterCombat/web/results.jsp b/jsf-ri/systest-per-webapp/characterCombat/web/results.jsp
new file mode 100644
index 0000000..a72ba0a
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/characterCombat/web/results.jsp
@@ -0,0 +1,65 @@
+<!--
+ The contents of this file are subject to the terms
+ of the Common Development and Distribution License
+ (the License). You may not use this file except in
+ compliance with the License.
+ 
+ You can obtain a copy of the License at
+ https://javaserverfaces.dev.java.net/CDDL.html or
+ legal/CDDLv1.0.txt. 
+ See the License for the specific language governing
+ permission and limitations under the License.
+ 
+ When distributing Covered Code, include this CDDL
+ Header Notice in each file and include the License file
+ at legal/CDDLv1.0.txt.    
+ If applicable, add the following below the CDDL Header,
+ with the fields enclosed by brackets [] replaced by
+ your own identifying information:
+ "Portions Copyrighted [year] [name of copyright owner]"
+ 
+ [Name of File] [ver.__] [Date]
+ 
+ Copyright 2005 Sun Microsystems Inc. All Rights Reserved
+-->
+
+<%@ taglib uri="http://java.sun.com/jsf/core"  prefix="f" %>
+<%@ taglib uri="http://java.sun.com/jsf/html"  prefix="h" %>
+
+<f:view>
+<html>
+<head>
+  <title>
+    Combat Results Page
+  </title>
+  <link rel="stylesheet" type="text/css"
+    href='<%= request.getContextPath() + "/stylesheet.css" %>'>
+</head>
+
+<body>
+
+  <h:graphicImage url="/images/header.jpg" />
+
+  <h2>Combat Results Page</h2>
+
+  <p>The results page determines the winner of the two selections
+     based on a magically simple algorithm</p>
+
+  <p>If 
+     <i><h:outputText value="#{modelBean.firstSelection}" /></i>
+     and 
+     <i><h:outputText value="#{modelBean.secondSelection}" /></i>
+     were to wage a magical war, the winner would be: 
+     <b><h:outputText value="#{modelBean.combatWinner}" /></b>
+     !
+  </p>
+
+  <h:form>
+    <h:commandButton value="Start Over" action="startOver" />
+    <jsp:include page="wizard-buttons.jsp"/>
+  </h:form>
+
+
+</body>
+</html>
+</f:view>
diff --git a/jsf-ri/systest-per-webapp/characterCombat/web/secondSelection.jsp b/jsf-ri/systest-per-webapp/characterCombat/web/secondSelection.jsp
new file mode 100644
index 0000000..ba6ef5c
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/characterCombat/web/secondSelection.jsp
@@ -0,0 +1,75 @@
+<!--
+ The contents of this file are subject to the terms
+ of the Common Development and Distribution License
+ (the License). You may not use this file except in
+ compliance with the License.
+ 
+ You can obtain a copy of the License at
+ https://javaserverfaces.dev.java.net/CDDL.html or
+ legal/CDDLv1.0.txt. 
+ See the License for the specific language governing
+ permission and limitations under the License.
+ 
+ When distributing Covered Code, include this CDDL
+ Header Notice in each file and include the License file
+ at legal/CDDLv1.0.txt.    
+ If applicable, add the following below the CDDL Header,
+ with the fields enclosed by brackets [] replaced by
+ your own identifying information:
+ "Portions Copyrighted [year] [name of copyright owner]"
+ 
+ [Name of File] [ver.__] [Date]
+ 
+ Copyright 2005 Sun Microsystems Inc. All Rights Reserved
+-->
+
+<%@ taglib uri="http://java.sun.com/jsf/core"  prefix="f" %>
+<%@ taglib uri="http://java.sun.com/jsf/html"  prefix="h" %>
+
+<f:view>
+<html>
+<head>
+  <title>
+    Second Selection Page
+  </title>
+  <link rel="stylesheet" type="text/css"
+    href='<%= request.getContextPath() + "/stylesheet.css" %>'>
+</head>
+
+<body>
+
+  <h:graphicImage url="/images/header.jpg" />
+
+  <h2>Second Selection Page</h2>
+
+  <p>This page displays the same data as the previous page except it
+     does not include the user's first combat choice so that character
+     will not be picked twice.</p>
+
+  <p>You may now choose your second character that will be waging a
+  magical combat with <h:outputText value="#{modelBean.firstSelection}" />.</p>
+
+  <h:form prependId="false">
+
+    <h:panelGrid columns="1">
+
+      <h:selectOneRadio
+        layout="pageDirection" 
+        required="true"
+        value="#{modelBean.secondSelection}">
+        <f:selectItems
+          value="#{modelBean.charactersToSelect}" />
+      </h:selectOneRadio>
+
+      <h:messages />
+
+    </h:panelGrid>
+
+    <jsp:include page="wizard-buttons.jsp"/>
+
+
+  </h:form>
+
+</body>
+</html>
+</f:view>
diff --git a/jsf-ri/systest-per-webapp/characterCombat/web/stylesheet.css b/jsf-ri/systest-per-webapp/characterCombat/web/stylesheet.css
new file mode 100644
index 0000000..384b5d9
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/characterCombat/web/stylesheet.css
@@ -0,0 +1,56 @@
+/*
+ * The contents of this file are subject to the terms
+ * of the Common Development and Distribution License
+ * (the License). You may not use this file except in
+ * compliance with the License.
+ * 
+ * You can obtain a copy of the License at
+ * https://javaserverfaces.dev.java.net/CDDL.html or
+ * legal/CDDLv1.0.txt. 
+ * See the License for the specific language governing
+ * permission and limitations under the License.
+ * 
+ * When distributing Covered Code, include this CDDL
+ * Header Notice in each file and include the License file
+ * at legal/CDDLv1.0.txt.    
+ * If applicable, add the following below the CDDL Header,
+ * with the fields enclosed by brackets [] replaced by
+ * your own identifying information:
+ * "Portions Copyrighted [year] [name of copyright owner]"
+ * 
+ * [Name of File] [ver.__] [Date]
+ * 
+ * Copyright 2005 Sun Microsystems Inc. All Rights Reserved
+ */
+
+.list-background {
+  background-color: #8AA9D3;
+  border: 5px;
+  border-collapse: collapse;
+  font-family: sans-serif;
+  font-size: 14pt;
+  padding: 10px;
+  width: 90%;
+}
+
+.list-column-center {
+  text-align: center;
+  width: 15%;
+}
+
+.list-header {
+  background-color: #DA825B;
+  color: #FFFFFF;
+  font-weight: bold;
+  text-align: center;
+}
+
+.inputList-background {
+  background-color: #8AA9D3;
+  border: 1px;
+  border-collapse: collapse;
+  font-family: sans-serif;
+  font-size: 8pt;
+  padding: 15px;
+  width: 40%;
+}
diff --git a/jsf-ri/systest-per-webapp/characterCombat/web/wizard-buttons.jsp b/jsf-ri/systest-per-webapp/characterCombat/web/wizard-buttons.jsp
new file mode 100644
index 0000000..e99fc87
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/characterCombat/web/wizard-buttons.jsp
@@ -0,0 +1,41 @@
+<!--
+ The contents of this file are subject to the terms
+ of the Common Development and Distribution License
+ (the License). You may not use this file except in
+ compliance with the License.
+ 
+ You can obtain a copy of the License at
+ https://javaserverfaces.dev.java.net/CDDL.html or
+ legal/CDDLv1.0.txt. 
+ See the License for the specific language governing
+ permission and limitations under the License.
+ 
+ When distributing Covered Code, include this CDDL
+ Header Notice in each file and include the License file
+ at legal/CDDLv1.0.txt.    
+ If applicable, add the following below the CDDL Header,
+ with the fields enclosed by brackets [] replaced by
+ your own identifying information:
+ "Portions Copyrighted [year] [name of copyright owner]"
+ 
+ [Name of File] [ver.__] [Date]
+ 
+ Copyright 2005 Sun Microsystems Inc. All Rights Reserved
+-->
+<%@ page contentType="text/html" language="java" %>
+<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
+<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %>
+
+<f:subview id="wizard-buttons">
+
+  <h:panelGrid columns="2">
+
+    <h:commandButton id="back" value="< Back" action="back" 
+                     disabled="#{wizardButtons.hasBack}" />
+
+    <h:commandButton id="next" value="#{wizardButtons.nextLabel}" action="next" 
+                     disabled="#{wizardButtons.hasNext}"/>
+
+  </h:panelGrid>
+
+</f:subview>
diff --git a/jsf-ri/systest-per-webapp/clientside-statesaving/src/java/com/sun/faces/systest/clientside/AjaxMultiformTestCase.java b/jsf-ri/systest-per-webapp/clientside-statesaving/src/java/com/sun/faces/systest/clientside/AjaxMultiformTestCase.java
index f1b63ba..adf4128 100644
--- a/jsf-ri/systest-per-webapp/clientside-statesaving/src/java/com/sun/faces/systest/clientside/AjaxMultiformTestCase.java
+++ b/jsf-ri/systest-per-webapp/clientside-statesaving/src/java/com/sun/faces/systest/clientside/AjaxMultiformTestCase.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -36,13 +40,12 @@
 
 package com.sun.faces.systest.clientside;
 
-import com.sun.faces.htmlunit.AbstractTestCase;
-import com.sun.faces.ajax.AjaxTagTestCase;
+import com.sun.faces.htmlunit.HtmlUnitFacesTestCase;
 import junit.framework.Test;
 import junit.framework.TestSuite;
 import com.gargoylesoftware.htmlunit.html.*;
 
-public class AjaxMultiformTestCase extends AbstractTestCase {
+public class AjaxMultiformTestCase extends HtmlUnitFacesTestCase {
 
     public AjaxMultiformTestCase(String name) {
         super(name);
@@ -101,4 +104,4 @@ public class AjaxMultiformTestCase extends AbstractTestCase {
         // Check that the request did NOT update the rest of the page.
         checkTrue("out2","3");
     }
-}
\ No newline at end of file
+}
diff --git a/jsf-ri/systest-per-webapp/clientside-statesaving/src/java/com/sun/faces/systest/clientside/AjaxRequestBean.java b/jsf-ri/systest-per-webapp/clientside-statesaving/src/java/com/sun/faces/systest/clientside/AjaxRequestBean.java
index e8a24b1..2577148 100644
--- a/jsf-ri/systest-per-webapp/clientside-statesaving/src/java/com/sun/faces/systest/clientside/AjaxRequestBean.java
+++ b/jsf-ri/systest-per-webapp/clientside-statesaving/src/java/com/sun/faces/systest/clientside/AjaxRequestBean.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -113,4 +117,4 @@ public class AjaxRequestBean {
         count = 0;
     }
 
-}
\ No newline at end of file
+}
diff --git a/jsf-ri/systest-per-webapp/clientside-statesaving/web/WEB-INF/web.xml b/jsf-ri/systest-per-webapp/clientside-statesaving/web/WEB-INF/web.xml
index 54d9f07..f87a8ee 100644
--- a/jsf-ri/systest-per-webapp/clientside-statesaving/web/WEB-INF/web.xml
+++ b/jsf-ri/systest-per-webapp/clientside-statesaving/web/WEB-INF/web.xml
@@ -1,39 +1,44 @@
 <?xml version="1.0" encoding="ISO-8859-1"?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
 
 <web-app xmlns="http://java.sun.com/xml/ns/javaee"
diff --git a/jsf-ri/systest-per-webapp/clientside-statesaving/web/ajaxMultiform.xhtml b/jsf-ri/systest-per-webapp/clientside-statesaving/web/ajaxMultiform.xhtml
index 7335d39..fc2e653 100644
--- a/jsf-ri/systest-per-webapp/clientside-statesaving/web/ajaxMultiform.xhtml
+++ b/jsf-ri/systest-per-webapp/clientside-statesaving/web/ajaxMultiform.xhtml
@@ -1,41 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
-  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
-  Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
 
-  The contents of this file are subject to the terms of either the GNU
-  General Public License Version 2 only ("GPL") or the Common Development
-  and Distribution License("CDDL") (collectively, the "License").  You
-  may not use this file except in compliance with the License. You can obtain
-  a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
-  or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
-  language governing permissions and limitations under the License.
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
 
-  When distributing the software, include this License Header Notice in each
-  file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
-  Sun designates this particular file as subject to the "Classpath" exception
-  as provided by Sun in the GPL Version 2 section of the License file that
-  accompanied this code.  If applicable, add the following below the License
-  Header, with the fields enclosed by brackets [] replaced by your own
-  identifying information: "Portions Copyrighted [year]
-  [name of copyright owner]"
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
 
-  Contributor(s):
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
 
-  If you wish your version of this file to be governed by only the CDDL or
-  only the GPL Version 2, indicate your decision by adding "[Contributor]
-  elects to include this software in this distribution under the [CDDL or GPL
-  Version 2] license."  If you don't indicate a single choice of license, a
-  recipient has the option to distribute your version of this file under
-  either the CDDL, the GPL Version 2 or to extend the choice of license to
-  its licensees as provided above.  However, if you add GPL Version 2 code
-  and therefore, elected the GPL Version 2 license, then the option applies
-  only if the new code is made subject to such option by the copyright
-  holder.
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html
         PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
@@ -92,4 +97,4 @@
     <h:outputText id="out2" value="#{ajaxrequest.count}"/>
 
 </h:body>
-</html>
\ No newline at end of file
+</html>
diff --git a/jsf-ri/systest-per-webapp/cluster-no-agressive-session-dirtying/src/java/com/sun/faces/systest/ClusterNoAgressiveSessionDirtyingTestCase.java b/jsf-ri/systest-per-webapp/cluster-no-agressive-session-dirtying/src/java/com/sun/faces/systest/ClusterNoAgressiveSessionDirtyingTestCase.java
new file mode 100644
index 0000000..ccdba9d
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/cluster-no-agressive-session-dirtying/src/java/com/sun/faces/systest/ClusterNoAgressiveSessionDirtyingTestCase.java
@@ -0,0 +1,131 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest;
+
+
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
+import com.sun.faces.htmlunit.HtmlUnitFacesTestCase;
+import java.util.List;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+
+public class ClusterNoAgressiveSessionDirtyingTestCase extends HtmlUnitFacesTestCase {
+
+    public ClusterNoAgressiveSessionDirtyingTestCase(String name) {
+        super(name);
+    }
+
+    /**
+     * Return the tests included in this test suite.
+     */
+    public static Test suite() {
+        return (new TestSuite(ClusterNoAgressiveSessionDirtyingTestCase.class));
+    }
+
+    
+    // ------------------------------------------------------------ Test Methods
+    
+    public void testSimpleObject() throws Exception {
+        List<Integer> instNums = getInstanceNumbers();
+
+        // Get the page from the first instance in the cluster
+        // and store a simple string into the session.
+        HtmlPage page = getPageFromInstanceN("/faces/session.xhtml", instNums.get(0));
+        HtmlTextInput input = (HtmlTextInput) page.getElementById("input");
+        String inputValue = "simple session value" + System.currentTimeMillis();
+        input.setValueAttribute(inputValue);
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("button");
+        button.click();
+
+        // Get the same page from each of the subsequent intstances
+        // in the cluster and assert that the session value is the same.
+	for (int i = 0; i < instNums.size(); i++) {
+	    assertSimpleObjectOutput(instNums.get(i), inputValue);
+	}
+
+    }
+
+    public void testComplexObject() throws Exception {
+        List<Integer> instNums = getInstanceNumbers();
+
+        // Get the page from the first instance in the cluster
+        // and store a simple string into the session.
+        HtmlPage page = getPageFromInstanceN("/faces/sessionComplex.xhtml", instNums.get(0));
+        HtmlTextInput input = (HtmlTextInput) page.getElementById("input");
+        String inputValue = "complex session value";
+        input.setValueAttribute(inputValue);
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("button");
+        button.click();
+
+        // Get the same page from each of the subsequent intstances
+        // in the cluster and assert that the session value is the same.
+	for (int i = 0; i < instNums.size(); i++) {
+	    assertComplexObjectOutput(instNums.get(i), inputValue);
+	}
+
+    }
+
+
+    private void assertSimpleObjectOutput(int instanceNumber, 
+					  final String inputValue) throws Exception {
+	HtmlPage page = getPageFromInstanceN("/faces/session.xhtml", 
+					     instanceNumber);
+	String text = page.asText();
+	assertTrue(text.contains(inputValue));
+	Thread.sleep(1000);
+    }
+
+    private void assertComplexObjectOutput(int instanceNumber, 
+					  final String inputValue) throws Exception {
+	HtmlPage page = getPageFromInstanceN("/faces/sessionComplex.xhtml", 
+					     instanceNumber);
+        HtmlTextInput input = (HtmlTextInput) page.getElementById("input");
+	String value = input.getValueAttribute();
+	assertTrue(value.contains(inputValue));
+	assertTrue(inputValue.length() < value.length());
+
+	Thread.sleep(1000);
+    }
+}
+
diff --git a/jsf-ri/systest-per-webapp/cluster-no-agressive-session-dirtying/src/java/com/sun/faces/systest/RequestScopedBean.java b/jsf-ri/systest-per-webapp/cluster-no-agressive-session-dirtying/src/java/com/sun/faces/systest/RequestScopedBean.java
new file mode 100644
index 0000000..9b297af
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/cluster-no-agressive-session-dirtying/src/java/com/sun/faces/systest/RequestScopedBean.java
@@ -0,0 +1,64 @@
+
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest;
+
+import java.io.Serializable;
+import javax.enterprise.context.RequestScoped;
+import javax.inject.Inject;
+import javax.inject.Named;
+
+
+
+ at Named
+ at RequestScoped
+public class RequestScopedBean implements Serializable {
+    private static final long serialVersionUID = 6353708101283353031L;
+
+    @Inject SessionScopedBean bean;
+
+
+    public void modifyPropertyOfSessionScopedBean() {
+        String a = bean.getA();
+        bean.setA(a + " " + System.currentTimeMillis());
+
+    }
+}
diff --git a/jsf-ri/systest-per-webapp/cluster-no-agressive-session-dirtying/src/java/com/sun/faces/systest/SessionScopedBean.java b/jsf-ri/systest-per-webapp/cluster-no-agressive-session-dirtying/src/java/com/sun/faces/systest/SessionScopedBean.java
new file mode 100644
index 0000000..9fdd567
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/cluster-no-agressive-session-dirtying/src/java/com/sun/faces/systest/SessionScopedBean.java
@@ -0,0 +1,65 @@
+
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest;
+
+import java.io.Serializable;
+import javax.enterprise.context.SessionScoped;
+import javax.inject.Named;
+
+
+
+ at Named
+ at SessionScoped
+public class SessionScopedBean implements Serializable {
+    private static final long serialVersionUID = -369713870298246712L;
+
+    String a;
+
+    public String getA() {
+        return a;
+    }
+
+    public void setA(String a) {
+        this.a = a;
+    }
+
+}
diff --git a/jsf-ri/systest-per-webapp/cluster-no-agressive-session-dirtying/web/WEB-INF/beans.xml b/jsf-ri/systest-per-webapp/cluster-no-agressive-session-dirtying/web/WEB-INF/beans.xml
new file mode 100644
index 0000000..e69de29
diff --git a/jsf-ri/systest-per-webapp/cluster-no-agressive-session-dirtying/web/WEB-INF/web.xml b/jsf-ri/systest-per-webapp/cluster-no-agressive-session-dirtying/web/WEB-INF/web.xml
new file mode 100644
index 0000000..61dee87
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/cluster-no-agressive-session-dirtying/web/WEB-INF/web.xml
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<web-app version="2.5" 
+         xmlns="http://java.sun.com/xml/ns/javaee" 
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee web-app_2_5.xsd">
+  <description>
+       Webapp to validate ViewExpiredException is properly handled.
+  </description>
+  <display-name>View Expired Test</display-name>
+  <!-- Validate the Application Configuration Resources -->
+  <context-param>
+        <param-name>com.sun.faces.enableAgressiveSessionDirtying</param-name>
+        <param-value>false</param-value>
+  </context-param>
+
+  <distributable />
+
+  <!-- Faces Servlet -->
+  <servlet>
+    <servlet-name>Faces Servlet</servlet-name>
+    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+    <load-on-startup> 1 </load-on-startup>
+  </servlet>
+    
+  <servlet-mapping>
+    <servlet-name>Faces Servlet</servlet-name>
+    <url-pattern>/faces/*</url-pattern>
+  </servlet-mapping>
+
+  
+    
+</web-app>
diff --git a/jsf-ri/systest-per-webapp/cluster-no-agressive-session-dirtying/web/error.jsp b/jsf-ri/systest-per-webapp/cluster-no-agressive-session-dirtying/web/error.jsp
new file mode 100644
index 0000000..f4b06ee
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/cluster-no-agressive-session-dirtying/web/error.jsp
@@ -0,0 +1,50 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<html>
+<head>
+    <title>View Expired</title>
+</head>
+<body>
+Error page invoked
+</body>
+</html>
diff --git a/jsf-ri/systest-per-webapp/cluster-no-agressive-session-dirtying/web/session.xhtml b/jsf-ri/systest-per-webapp/cluster-no-agressive-session-dirtying/web/session.xhtml
new file mode 100644
index 0000000..abf7daa
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/cluster-no-agressive-session-dirtying/web/session.xhtml
@@ -0,0 +1,64 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:c="http://java.sun.com/jsp/jstl/core"
+      xmlns:f="http://java.sun.com/jsf/core">
+<h:head>
+    <title>Simple Session Sharing</title>
+</h:head>
+
+<h:body>
+
+  <h:form prependId="false">
+
+    <h:inputText id="input" value="#{sessionScope['clusterSession']}" />
+    <h:commandButton id="button" value="submit" />
+
+  </h:form>
+
+</h:body>
+</html>
diff --git a/jsf-ri/systest-per-webapp/cluster-no-agressive-session-dirtying/web/sessionComplex.xhtml b/jsf-ri/systest-per-webapp/cluster-no-agressive-session-dirtying/web/sessionComplex.xhtml
new file mode 100644
index 0000000..d05737f
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/cluster-no-agressive-session-dirtying/web/sessionComplex.xhtml
@@ -0,0 +1,65 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:c="http://java.sun.com/jsp/jstl/core"
+      xmlns:f="http://java.sun.com/jsf/core">
+<h:head>
+    <title>Complex Session Sharing</title>
+</h:head>
+
+<h:body>
+
+  <h:form prependId="false">
+
+    <h:inputText id="input" value="#{sessionScopedBean.a}" />
+    <h:commandButton id="button" value="submit"
+     actionListener="#{requestScopedBean.modifyPropertyOfSessionScopedBean}" />
+
+  </h:form>
+
+</h:body>
+</html>
diff --git a/jsf-ri/systest-per-webapp/cluster-no-agressive-session-dirtying/web/test.jsp b/jsf-ri/systest-per-webapp/cluster-no-agressive-session-dirtying/web/test.jsp
new file mode 100644
index 0000000..e391c7d
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/cluster-no-agressive-session-dirtying/web/test.jsp
@@ -0,0 +1,66 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+  <head>
+    <title>test</title>
+    <%@ taglib uri="http://java.sun.com/jsf/core"  prefix="f" %>
+    <%@ taglib uri="http://java.sun.com/jsf/html"  prefix="h" %>
+  </head>
+
+  <body>
+    <h1>test</h1>
+
+<f:view>
+
+  <h:form>        
+    <h:commandButton id="submit" value="Click me in about 1 minute"/>
+  </h:form>
+
+</f:view>
+
+    <hr>
+  </body>
+</html>
diff --git a/jsf-ri/systest-per-webapp/command-link-back-button/src/java/com/sun/faces/systest/CommandLinkBackButtonTestCase.java b/jsf-ri/systest-per-webapp/command-link-back-button/src/java/com/sun/faces/systest/CommandLinkBackButtonTestCase.java
index de2c575..b921d64 100644
--- a/jsf-ri/systest-per-webapp/command-link-back-button/src/java/com/sun/faces/systest/CommandLinkBackButtonTestCase.java
+++ b/jsf-ri/systest-per-webapp/command-link-back-button/src/java/com/sun/faces/systest/CommandLinkBackButtonTestCase.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -48,7 +52,7 @@ import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
 import com.gargoylesoftware.htmlunit.html.HtmlRadioButtonInput;
 import com.gargoylesoftware.htmlunit.html.HtmlSelect;
 import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
-import com.sun.faces.htmlunit.AbstractTestCase;
+import com.sun.faces.htmlunit.HtmlUnitFacesTestCase;
 import junit.framework.Test;
 import junit.framework.TestCase;
 import junit.framework.TestSuite;
@@ -65,7 +69,7 @@ import javax.faces.component.NamingContainer;
  * is submitted along with a button press.</p>
  */
 
-public class CommandLinkBackButtonTestCase extends AbstractTestCase {
+public class CommandLinkBackButtonTestCase extends HtmlUnitFacesTestCase {
 
 
     // ------------------------------------------------------------ Constructors
diff --git a/jsf-ri/systest-per-webapp/command-link-back-button/src/java/com/sun/faces/systest/model/BackingBean.java b/jsf-ri/systest-per-webapp/command-link-back-button/src/java/com/sun/faces/systest/model/BackingBean.java
index 38c63a5..347106f 100644
--- a/jsf-ri/systest-per-webapp/command-link-back-button/src/java/com/sun/faces/systest/model/BackingBean.java
+++ b/jsf-ri/systest-per-webapp/command-link-back-button/src/java/com/sun/faces/systest/model/BackingBean.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -34,7 +38,6 @@
  * holder.
  */
 
-
 package com.sun.faces.systest.model;
 
 public class BackingBean extends Object {
diff --git a/jsf-ri/systest-per-webapp/command-link-back-button/web/WEB-INF/faces-config.xml b/jsf-ri/systest-per-webapp/command-link-back-button/web/WEB-INF/faces-config.xml
index 5a4f421..6369948 100644
--- a/jsf-ri/systest-per-webapp/command-link-back-button/web/WEB-INF/faces-config.xml
+++ b/jsf-ri/systest-per-webapp/command-link-back-button/web/WEB-INF/faces-config.xml
@@ -1,41 +1,45 @@
 <?xml version='1.0' encoding='UTF-8'?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
--->
 
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
 
 <faces-config xmlns="http://java.sun.com/xml/ns/javaee"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
diff --git a/jsf-ri/systest-per-webapp/command-link-back-button/web/WEB-INF/web.xml b/jsf-ri/systest-per-webapp/command-link-back-button/web/WEB-INF/web.xml
index 9a038b9..5223135 100644
--- a/jsf-ri/systest-per-webapp/command-link-back-button/web/WEB-INF/web.xml
+++ b/jsf-ri/systest-per-webapp/command-link-back-button/web/WEB-INF/web.xml
@@ -1,39 +1,44 @@
 <?xml version="1.0" encoding="ISO-8859-1"?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
 
 <web-app xmlns="http://java.sun.com/xml/ns/javaee"
diff --git a/jsf-ri/systest-per-webapp/command-link-back-button/web/buttonPressed.jsp b/jsf-ri/systest-per-webapp/command-link-back-button/web/buttonPressed.jsp
index 4907c40..ce099df 100644
--- a/jsf-ri/systest-per-webapp/command-link-back-button/web/buttonPressed.jsp
+++ b/jsf-ri/systest-per-webapp/command-link-back-button/web/buttonPressed.jsp
@@ -1,63 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- The contents of this file are subject to the terms
- of the Common Development and Distribution License
- (the License). You may not use this file except in
- compliance with the License.
- 
- You can obtain a copy of the License at
- https://javaserverfaces.dev.java.net/CDDL.html or
- legal/CDDLv1.0.txt. 
- See the License for the specific language governing
- permission and limitations under the License.
- 
- When distributing Covered Code, include this CDDL
- Header Notice in each file and include the License file
- at legal/CDDLv1.0.txt.    
- If applicable, add the following below the CDDL Header,
- with the fields enclosed by brackets [] replaced by
- your own identifying information:
- "Portions Copyrighted [year] [name of copyright owner]"
- 
- [Name of File] [ver.__] [Date]
- 
- Copyright 2005 Sun Microsystems Inc. All Rights Reserved
--->
+
 
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
diff --git a/jsf-ri/systest-per-webapp/command-link-back-button/web/linkPressed.jsp b/jsf-ri/systest-per-webapp/command-link-back-button/web/linkPressed.jsp
index fdda748..e10a196 100644
--- a/jsf-ri/systest-per-webapp/command-link-back-button/web/linkPressed.jsp
+++ b/jsf-ri/systest-per-webapp/command-link-back-button/web/linkPressed.jsp
@@ -1,63 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- The contents of this file are subject to the terms
- of the Common Development and Distribution License
- (the License). You may not use this file except in
- compliance with the License.
- 
- You can obtain a copy of the License at
- https://javaserverfaces.dev.java.net/CDDL.html or
- legal/CDDLv1.0.txt. 
- See the License for the specific language governing
- permission and limitations under the License.
- 
- When distributing Covered Code, include this CDDL
- Header Notice in each file and include the License file
- at legal/CDDLv1.0.txt.    
- If applicable, add the following below the CDDL Header,
- with the fields enclosed by brackets [] replaced by
- your own identifying information:
- "Portions Copyrighted [year] [name of copyright owner]"
- 
- [Name of File] [ver.__] [Date]
- 
- Copyright 2005 Sun Microsystems Inc. All Rights Reserved
--->
+
 
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
diff --git a/jsf-ri/systest-per-webapp/command-link-back-button/web/test.jsp b/jsf-ri/systest-per-webapp/command-link-back-button/web/test.jsp
index 4584b14..dbd4742 100644
--- a/jsf-ri/systest-per-webapp/command-link-back-button/web/test.jsp
+++ b/jsf-ri/systest-per-webapp/command-link-back-button/web/test.jsp
@@ -1,63 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- The contents of this file are subject to the terms
- of the Common Development and Distribution License
- (the License). You may not use this file except in
- compliance with the License.
- 
- You can obtain a copy of the License at
- https://javaserverfaces.dev.java.net/CDDL.html or
- legal/CDDLv1.0.txt. 
- See the License for the specific language governing
- permission and limitations under the License.
- 
- When distributing Covered Code, include this CDDL
- Header Notice in each file and include the License file
- at legal/CDDLv1.0.txt.    
- If applicable, add the following below the CDDL Header,
- with the fields enclosed by brackets [] replaced by
- your own identifying information:
- "Portions Copyrighted [year] [name of copyright owner]"
- 
- [Name of File] [ver.__] [Date]
- 
- Copyright 2005 Sun Microsystems Inc. All Rights Reserved
--->
+
 
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
diff --git a/jsf-ri/systest-per-webapp/command-link-redirect/web/WEB-INF/faces-config.xml b/jsf-ri/systest-per-webapp/command-link-redirect/web/WEB-INF/faces-config.xml
index 40c7362..6ba4744 100644
--- a/jsf-ri/systest-per-webapp/command-link-redirect/web/WEB-INF/faces-config.xml
+++ b/jsf-ri/systest-per-webapp/command-link-redirect/web/WEB-INF/faces-config.xml
@@ -1,41 +1,45 @@
 <?xml version='1.0' encoding='UTF-8'?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
--->
 
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
 
 <faces-config xmlns="http://java.sun.com/xml/ns/javaee"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
diff --git a/jsf-ri/systest-per-webapp/command-link-redirect/web/WEB-INF/web.xml b/jsf-ri/systest-per-webapp/command-link-redirect/web/WEB-INF/web.xml
index 9a038b9..5223135 100644
--- a/jsf-ri/systest-per-webapp/command-link-redirect/web/WEB-INF/web.xml
+++ b/jsf-ri/systest-per-webapp/command-link-redirect/web/WEB-INF/web.xml
@@ -1,39 +1,44 @@
 <?xml version="1.0" encoding="ISO-8859-1"?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
 
 <web-app xmlns="http://java.sun.com/xml/ns/javaee"
diff --git a/jsf-ri/systest-per-webapp/command-link-redirect/web/five.jsp b/jsf-ri/systest-per-webapp/command-link-redirect/web/five.jsp
index 1511ddb..a5b2eb2 100644
--- a/jsf-ri/systest-per-webapp/command-link-redirect/web/five.jsp
+++ b/jsf-ri/systest-per-webapp/command-link-redirect/web/five.jsp
@@ -1,63 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- The contents of this file are subject to the terms
- of the Common Development and Distribution License
- (the License). You may not use this file except in
- compliance with the License.
- 
- You can obtain a copy of the License at
- https://javaserverfaces.dev.java.net/CDDL.html or
- legal/CDDLv1.0.txt. 
- See the License for the specific language governing
- permission and limitations under the License.
- 
- When distributing Covered Code, include this CDDL
- Header Notice in each file and include the License file
- at legal/CDDLv1.0.txt.    
- If applicable, add the following below the CDDL Header,
- with the fields enclosed by brackets [] replaced by
- your own identifying information:
- "Portions Copyrighted [year] [name of copyright owner]"
- 
- [Name of File] [ver.__] [Date]
- 
- Copyright 2005 Sun Microsystems Inc. All Rights Reserved
--->
+
 
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
diff --git a/jsf-ri/systest-per-webapp/command-link-redirect/web/four.jsp b/jsf-ri/systest-per-webapp/command-link-redirect/web/four.jsp
index 991cb38..656b9a3 100644
--- a/jsf-ri/systest-per-webapp/command-link-redirect/web/four.jsp
+++ b/jsf-ri/systest-per-webapp/command-link-redirect/web/four.jsp
@@ -1,63 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- The contents of this file are subject to the terms
- of the Common Development and Distribution License
- (the License). You may not use this file except in
- compliance with the License.
- 
- You can obtain a copy of the License at
- https://javaserverfaces.dev.java.net/CDDL.html or
- legal/CDDLv1.0.txt. 
- See the License for the specific language governing
- permission and limitations under the License.
- 
- When distributing Covered Code, include this CDDL
- Header Notice in each file and include the License file
- at legal/CDDLv1.0.txt.    
- If applicable, add the following below the CDDL Header,
- with the fields enclosed by brackets [] replaced by
- your own identifying information:
- "Portions Copyrighted [year] [name of copyright owner]"
- 
- [Name of File] [ver.__] [Date]
- 
- Copyright 2005 Sun Microsystems Inc. All Rights Reserved
--->
+
 
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
diff --git a/jsf-ri/systest-per-webapp/command-link-redirect/web/one.jsp b/jsf-ri/systest-per-webapp/command-link-redirect/web/one.jsp
index edadbf3..a9bea50 100644
--- a/jsf-ri/systest-per-webapp/command-link-redirect/web/one.jsp
+++ b/jsf-ri/systest-per-webapp/command-link-redirect/web/one.jsp
@@ -1,63 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- The contents of this file are subject to the terms
- of the Common Development and Distribution License
- (the License). You may not use this file except in
- compliance with the License.
- 
- You can obtain a copy of the License at
- https://javaserverfaces.dev.java.net/CDDL.html or
- legal/CDDLv1.0.txt. 
- See the License for the specific language governing
- permission and limitations under the License.
- 
- When distributing Covered Code, include this CDDL
- Header Notice in each file and include the License file
- at legal/CDDLv1.0.txt.    
- If applicable, add the following below the CDDL Header,
- with the fields enclosed by brackets [] replaced by
- your own identifying information:
- "Portions Copyrighted [year] [name of copyright owner]"
- 
- [Name of File] [ver.__] [Date]
- 
- Copyright 2005 Sun Microsystems Inc. All Rights Reserved
--->
+
 
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
diff --git a/jsf-ri/systest-per-webapp/command-link-redirect/web/three.jsp b/jsf-ri/systest-per-webapp/command-link-redirect/web/three.jsp
index 7b415b9..451b852 100644
--- a/jsf-ri/systest-per-webapp/command-link-redirect/web/three.jsp
+++ b/jsf-ri/systest-per-webapp/command-link-redirect/web/three.jsp
@@ -1,63 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- The contents of this file are subject to the terms
- of the Common Development and Distribution License
- (the License). You may not use this file except in
- compliance with the License.
- 
- You can obtain a copy of the License at
- https://javaserverfaces.dev.java.net/CDDL.html or
- legal/CDDLv1.0.txt. 
- See the License for the specific language governing
- permission and limitations under the License.
- 
- When distributing Covered Code, include this CDDL
- Header Notice in each file and include the License file
- at legal/CDDLv1.0.txt.    
- If applicable, add the following below the CDDL Header,
- with the fields enclosed by brackets [] replaced by
- your own identifying information:
- "Portions Copyrighted [year] [name of copyright owner]"
- 
- [Name of File] [ver.__] [Date]
- 
- Copyright 2005 Sun Microsystems Inc. All Rights Reserved
--->
+
 
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
diff --git a/jsf-ri/systest-per-webapp/command-link-redirect/web/two.jsp b/jsf-ri/systest-per-webapp/command-link-redirect/web/two.jsp
index 7d75dc4..11acc17 100644
--- a/jsf-ri/systest-per-webapp/command-link-redirect/web/two.jsp
+++ b/jsf-ri/systest-per-webapp/command-link-redirect/web/two.jsp
@@ -1,63 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- The contents of this file are subject to the terms
- of the Common Development and Distribution License
- (the License). You may not use this file except in
- compliance with the License.
- 
- You can obtain a copy of the License at
- https://javaserverfaces.dev.java.net/CDDL.html or
- legal/CDDLv1.0.txt. 
- See the License for the specific language governing
- permission and limitations under the License.
- 
- When distributing Covered Code, include this CDDL
- Header Notice in each file and include the License file
- at legal/CDDLv1.0.txt.    
- If applicable, add the following below the CDDL Header,
- with the fields enclosed by brackets [] replaced by
- your own identifying information:
- "Portions Copyrighted [year] [name of copyright owner]"
- 
- [Name of File] [ver.__] [Date]
- 
- Copyright 2005 Sun Microsystems Inc. All Rights Reserved
--->
+
 
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
diff --git a/jsf-ri/systest-per-webapp/converter-property-editor/src/java/com/sun/faces/systest/ConverterPropertyEditorTestCase.java b/jsf-ri/systest-per-webapp/converter-property-editor/src/java/com/sun/faces/systest/ConverterPropertyEditorTestCase.java
index 0339205..b739d1f 100644
--- a/jsf-ri/systest-per-webapp/converter-property-editor/src/java/com/sun/faces/systest/ConverterPropertyEditorTestCase.java
+++ b/jsf-ri/systest-per-webapp/converter-property-editor/src/java/com/sun/faces/systest/ConverterPropertyEditorTestCase.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -33,10 +37,8 @@
  * only if the new code is made subject to such option by the copyright
  * holder.
  */
-
 package com.sun.faces.systest;
 
-
 import com.gargoylesoftware.htmlunit.WebClient;
 import com.gargoylesoftware.htmlunit.html.HtmlBody;
 import com.gargoylesoftware.htmlunit.html.HtmlElement;
@@ -46,7 +48,7 @@ import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
 import com.gargoylesoftware.htmlunit.html.HtmlRadioButtonInput;
 import com.gargoylesoftware.htmlunit.html.HtmlSelect;
 import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
-import com.sun.faces.htmlunit.AbstractTestCase;
+import com.sun.faces.htmlunit.HtmlUnitFacesTestCase;
 import junit.framework.Test;
 import junit.framework.TestCase;
 import junit.framework.TestSuite;
@@ -57,19 +59,14 @@ import java.util.ResourceBundle;
 
 import javax.faces.component.NamingContainer;
 
-
 /**
- * <p>Make sure that an application that replaces the ApplicationFactory
- * but uses the decorator pattern to allow the existing ApplicationImpl
- * to do the bulk of the requests works.</p>
+ * <p>Make sure that an application that replaces the ApplicationFactory but
+ * uses the decorator pattern to allow the existing ApplicationImpl to do the
+ * bulk of the requests works.</p>
  */
-
-public class ConverterPropertyEditorTestCase extends AbstractTestCase {
-
+public class ConverterPropertyEditorTestCase extends HtmlUnitFacesTestCase {
 
     // ------------------------------------------------------------ Constructors
-
-
     /**
      * Construct a new instance of this test case.
      *
@@ -79,13 +76,8 @@ public class ConverterPropertyEditorTestCase extends AbstractTestCase {
         super(name);
     }
 
-
     // ------------------------------------------------------ Instance Variables
-
-
     // ---------------------------------------------------- Overall Test Methods
-
-
     /**
      * Set up instance variables required by this test case.
      */
@@ -93,7 +85,6 @@ public class ConverterPropertyEditorTestCase extends AbstractTestCase {
         super.setUp();
     }
 
-
     /**
      * Return the tests included in this test suite.
      */
@@ -101,7 +92,6 @@ public class ConverterPropertyEditorTestCase extends AbstractTestCase {
         return (new TestSuite(ConverterPropertyEditorTestCase.class));
     }
 
-
     /**
      * Tear down instance variables required by this test case.
      */
@@ -109,64 +99,57 @@ public class ConverterPropertyEditorTestCase extends AbstractTestCase {
         super.tearDown();
     }
 
-
     // ------------------------------------------------------ Instance Variables
-
-
-
     // ------------------------------------------------- Individual Test Methods
-
     /**
      *
      * <p>Verify that selectOne conversion has successfully occurred.</p>
      */
-
     public void testConverterPropertyEditor() throws Exception {
-	HtmlPage page;
-	List list;
-	HtmlSubmitInput button;
-
-	page = getPage("/faces/selectone.jsp");
-	list = getAllElementsOfGivenClass(page, null, 
-					  HtmlSubmitInput.class); 
-	button = (HtmlSubmitInput) list.get(0);
-	page = (HtmlPage) button.click();
-
-	assertTrue(-1 != page.asText().indexOf("This selectOneMenu is bound to a list of test.Payment"));
-    assertTrue(!page.asText().contains("Validation Error"));
-
-    page = getPage("/faces/selectoneRadio.jsp");
-	list = getAllElementsOfGivenClass(page, null, HtmlSubmitInput.class); 
-	button = (HtmlSubmitInput) list.get(0);
-	page = (HtmlPage) button.click();
-
-	assertTrue(-1 != page.asText().indexOf("This selectOneRadio is bound to a list of test.Payment"));
-    assertTrue(!page.asText().contains("Validation Error"));
-
-    page = getPage("/faces/selectmany.jsp");
-	list = getAllElementsOfGivenClass(page, null, HtmlSubmitInput.class); 
-	button = (HtmlSubmitInput) list.get(0);
-	page = (HtmlPage) button.click();
-
-	assertTrue(-1 != page.asText().indexOf("This selectManyMenu is bound to a list of test.Payment"));
-    assertTrue(!page.asText().contains("Validation Error"));
-
-        page = getPage("/faces/selectmanyListbox.jsp");
-        list = getAllElementsOfGivenClass(page, null, HtmlSubmitInput.class); 
-        button = (HtmlSubmitInput) list.get(0);
-        page = (HtmlPage) button.click();
-
-        assertTrue(-1 != page.asText().indexOf("This selectManyListbox is bound to a list of test.Payment"));
-        assertTrue(!page.asText().contains("Validation Error"));
-
-        page = getPage("/faces/selectmanyCheckbox.jsp");
-        list = getAllElementsOfGivenClass(page, null, HtmlSubmitInput.class); 
-        button = (HtmlSubmitInput) list.get(0);
-        page = (HtmlPage) button.click();
-
-        assertTrue(-1 != page.asText().indexOf("This selectManyCheckbox is bound to a list of test.Payment"));
-        assertTrue(!page.asText().contains("Validation Error"));
-
+//        HtmlPage page;
+//        List list;
+//        HtmlSubmitInput button;
+//
+//        page = getPage("/faces/selectone.jsp");
+//        list = getAllElementsOfGivenClass(page, null,
+//                HtmlSubmitInput.class);
+//        button = (HtmlSubmitInput) list.get(0);
+//        page = (HtmlPage) button.click();
+//
+//        assertTrue(-1 != page.asText().indexOf("This selectOneMenu is bound to a list of test.Payment"));
+//        assertTrue(!page.asText().contains("Validation Error"));
+//
+//        page = getPage("/faces/selectoneRadio.jsp");
+//        list = getAllElementsOfGivenClass(page, null, HtmlSubmitInput.class);
+//        button = (HtmlSubmitInput) list.get(0);
+//        page = (HtmlPage) button.click();
+//
+//        assertTrue(-1 != page.asText().indexOf("This selectOneRadio is bound to a list of test.Payment"));
+//        assertTrue(!page.asText().contains("Validation Error"));
+//
+//        page = getPage("/faces/selectmany.jsp");
+//        list = getAllElementsOfGivenClass(page, null, HtmlSubmitInput.class);
+//        button = (HtmlSubmitInput) list.get(0);
+//        page = (HtmlPage) button.click();
+//
+//        assertTrue(-1 != page.asText().indexOf("This selectManyMenu is bound to a list of test.Payment"));
+//        assertTrue(!page.asText().contains("Validation Error"));
+//
+//        page = getPage("/faces/selectmanyListbox.jsp");
+//        list = getAllElementsOfGivenClass(page, null, HtmlSubmitInput.class);
+//        button = (HtmlSubmitInput) list.get(0);
+//        page = (HtmlPage) button.click();
+//
+//        assertTrue(-1 != page.asText().indexOf("This selectManyListbox is bound to a list of test.Payment"));
+//        assertTrue(!page.asText().contains("Validation Error"));
+//
+//        page = getPage("/faces/selectmanyCheckbox.jsp");
+//        list = getAllElementsOfGivenClass(page, null, HtmlSubmitInput.class);
+//        button = (HtmlSubmitInput) list.get(0);
+//        page = (HtmlPage) button.click();
+//
+//        assertTrue(-1 != page.asText().indexOf("This selectManyCheckbox is bound to a list of test.Payment"));
+//        assertTrue(!page.asText().contains("Validation Error"));
+//
     }
-
 }
diff --git a/jsf-ri/systest-per-webapp/converter-property-editor/src/java/test/Payment.java b/jsf-ri/systest-per-webapp/converter-property-editor/src/java/test/Payment.java
index a4acdce..ae54cd5 100644
--- a/jsf-ri/systest-per-webapp/converter-property-editor/src/java/test/Payment.java
+++ b/jsf-ri/systest-per-webapp/converter-property-editor/src/java/test/Payment.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/systest-per-webapp/converter-property-editor/src/java/test/PaymentConverter.java b/jsf-ri/systest-per-webapp/converter-property-editor/src/java/test/PaymentConverter.java
index 31188a2..24d8939 100644
--- a/jsf-ri/systest-per-webapp/converter-property-editor/src/java/test/PaymentConverter.java
+++ b/jsf-ri/systest-per-webapp/converter-property-editor/src/java/test/PaymentConverter.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/systest-per-webapp/converter-property-editor/src/java/test/TestBean.java b/jsf-ri/systest-per-webapp/converter-property-editor/src/java/test/TestBean.java
index dc6b1dc..daa1c2b 100644
--- a/jsf-ri/systest-per-webapp/converter-property-editor/src/java/test/TestBean.java
+++ b/jsf-ri/systest-per-webapp/converter-property-editor/src/java/test/TestBean.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/systest-per-webapp/converter-property-editor/web/WEB-INF/faces-config.xml b/jsf-ri/systest-per-webapp/converter-property-editor/web/WEB-INF/faces-config.xml
index 7e1dd14..024d951 100644
--- a/jsf-ri/systest-per-webapp/converter-property-editor/web/WEB-INF/faces-config.xml
+++ b/jsf-ri/systest-per-webapp/converter-property-editor/web/WEB-INF/faces-config.xml
@@ -1,41 +1,45 @@
 <?xml version='1.0' encoding='UTF-8'?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
--->
 
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
 
 <!-- =========== FULL CONFIGURATION FILE ================================== -->
 
diff --git a/jsf-ri/systest-per-webapp/converter-property-editor/web/WEB-INF/sun-web.xml b/jsf-ri/systest-per-webapp/converter-property-editor/web/WEB-INF/sun-web.xml
index 1b656ab..7ba84ec 100644
--- a/jsf-ri/systest-per-webapp/converter-property-editor/web/WEB-INF/sun-web.xml
+++ b/jsf-ri/systest-per-webapp/converter-property-editor/web/WEB-INF/sun-web.xml
@@ -1,39 +1,44 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
 
 <!DOCTYPE sun-web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Application Server 9.0 Servlet 2.5//EN" "http://www.sun.com/software/appserver/dtds/sun-web-app_2_5-0.dtd">
diff --git a/jsf-ri/systest-per-webapp/converter-property-editor/web/WEB-INF/web.xml b/jsf-ri/systest-per-webapp/converter-property-editor/web/WEB-INF/web.xml
index c46571c..e7dee4b 100644
--- a/jsf-ri/systest-per-webapp/converter-property-editor/web/WEB-INF/web.xml
+++ b/jsf-ri/systest-per-webapp/converter-property-editor/web/WEB-INF/web.xml
@@ -1,39 +1,44 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
 
 <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
diff --git a/jsf-ri/systest-per-webapp/converter-property-editor/web/index.jsp b/jsf-ri/systest-per-webapp/converter-property-editor/web/index.jsp
index db37d7c..50901ae 100644
--- a/jsf-ri/systest-per-webapp/converter-property-editor/web/index.jsp
+++ b/jsf-ri/systest-per-webapp/converter-property-editor/web/index.jsp
@@ -1,40 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<%@page contentType="text/html"%>
-<%@page pageEncoding="UTF-8"%>
-
+<%@page contentType="text/html"%>
+<%@page pageEncoding="UTF-8"%>
+
 <jsp:forward page="faces/selectone.jsp"/>
diff --git a/jsf-ri/systest-per-webapp/converter-property-editor/web/selectmany.jsp b/jsf-ri/systest-per-webapp/converter-property-editor/web/selectmany.jsp
index 2405acf..776d7b2 100644
--- a/jsf-ri/systest-per-webapp/converter-property-editor/web/selectmany.jsp
+++ b/jsf-ri/systest-per-webapp/converter-property-editor/web/selectmany.jsp
@@ -1,37 +1,43 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
 <%@page contentType="text/html"%>
diff --git a/jsf-ri/systest-per-webapp/converter-property-editor/web/selectmanyCheckbox.jsp b/jsf-ri/systest-per-webapp/converter-property-editor/web/selectmanyCheckbox.jsp
index f982523..9cc858a 100644
--- a/jsf-ri/systest-per-webapp/converter-property-editor/web/selectmanyCheckbox.jsp
+++ b/jsf-ri/systest-per-webapp/converter-property-editor/web/selectmanyCheckbox.jsp
@@ -1,37 +1,43 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
 <%@page contentType="text/html"%>
diff --git a/jsf-ri/systest-per-webapp/converter-property-editor/web/selectmanyListbox.jsp b/jsf-ri/systest-per-webapp/converter-property-editor/web/selectmanyListbox.jsp
index 60e14e8..b83b1d6 100644
--- a/jsf-ri/systest-per-webapp/converter-property-editor/web/selectmanyListbox.jsp
+++ b/jsf-ri/systest-per-webapp/converter-property-editor/web/selectmanyListbox.jsp
@@ -1,37 +1,43 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
 <%@page contentType="text/html"%>
diff --git a/jsf-ri/systest-per-webapp/converter-property-editor/web/selectone.jsp b/jsf-ri/systest-per-webapp/converter-property-editor/web/selectone.jsp
index eddd3d5..ff8755c 100644
--- a/jsf-ri/systest-per-webapp/converter-property-editor/web/selectone.jsp
+++ b/jsf-ri/systest-per-webapp/converter-property-editor/web/selectone.jsp
@@ -1,37 +1,43 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
 <%@page contentType="text/html"%>
diff --git a/jsf-ri/systest-per-webapp/converter-property-editor/web/selectoneRadio.jsp b/jsf-ri/systest-per-webapp/converter-property-editor/web/selectoneRadio.jsp
index c81cf9e..18c88c8 100644
--- a/jsf-ri/systest-per-webapp/converter-property-editor/web/selectoneRadio.jsp
+++ b/jsf-ri/systest-per-webapp/converter-property-editor/web/selectoneRadio.jsp
@@ -1,37 +1,43 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
 <%@page contentType="text/html"%>
diff --git a/jsf-ri/systest-per-webapp/converter-property-editor/web/welcome.jsp b/jsf-ri/systest-per-webapp/converter-property-editor/web/welcome.jsp
index b48d661..c378cf2 100644
--- a/jsf-ri/systest-per-webapp/converter-property-editor/web/welcome.jsp
+++ b/jsf-ri/systest-per-webapp/converter-property-editor/web/welcome.jsp
@@ -1,56 +1,62 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<%@page contentType="text/html"%>
-<%@page pageEncoding="UTF-8"%>
-
-<%@taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
-<%@taglib prefix="h" uri="http://java.sun.com/jsf/html"%>
-
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
-   "http://www.w3.org/TR/html4/loose.dtd">
-
-<html>
-    <head>
-        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-        <title>JSP Page</title>
-    </head>
-    <body>
-        <f:view>
-            <h:form>
+<%@page contentType="text/html"%>
+<%@page pageEncoding="UTF-8"%>
+
+<%@taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
+<%@taglib prefix="h" uri="http://java.sun.com/jsf/html"%>
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+   "http://www.w3.org/TR/html4/loose.dtd">
+
+<html>
+    <head>
+        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+        <title>JSP Page</title>
+    </head>
+    <body>
+        <f:view>
+            <h:form>
 
 <p>This selectOneMenu is bound to a list test.Payment instances.  There
 is a converter-for-class registered for the test.Payment class.  This
@@ -64,17 +70,17 @@ Sun's JSF Impl.</p>
 
 <p>This test uses UISelcOne.</p>
 
-                <h:selectOneMenu value="#{testBean.payment}">
-                    <f:selectItem itemLabel="cc1" itemValue="1"/>
-                    <f:selectItem itemLabel="cc2" itemValue="2"/>
-                </h:selectOneMenu>
-                <h:commandButton id="press" value="submit" />
-            </h:form>
+                <h:selectOneMenu value="#{testBean.payment}">
+                    <f:selectItem itemLabel="cc1" itemValue="1"/>
+                    <f:selectItem itemLabel="cc2" itemValue="2"/>
+                </h:selectOneMenu>
+                <h:commandButton id="press" value="submit" />
+            </h:form>
 
 <p>Test <a href="selectmany.jsp">UISelectMany</a>.</p>
 
 
 
-        </f:view>
-    </body>
-</html>
+        </f:view>
+    </body>
+</html>
diff --git a/jsf-ri/systest-per-webapp/core-tags/src/java/com/sun/faces/systest/CoreTagsListener.java b/jsf-ri/systest-per-webapp/core-tags/src/java/com/sun/faces/systest/CoreTagsListener.java
index 922703c..272da6d 100644
--- a/jsf-ri/systest-per-webapp/core-tags/src/java/com/sun/faces/systest/CoreTagsListener.java
+++ b/jsf-ri/systest-per-webapp/core-tags/src/java/com/sun/faces/systest/CoreTagsListener.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/systest-per-webapp/core-tags/src/java/com/sun/faces/systest/CoreTagsTestCase.java b/jsf-ri/systest-per-webapp/core-tags/src/java/com/sun/faces/systest/CoreTagsTestCase.java
index 1c9fb3e..01d874b 100644
--- a/jsf-ri/systest-per-webapp/core-tags/src/java/com/sun/faces/systest/CoreTagsTestCase.java
+++ b/jsf-ri/systest-per-webapp/core-tags/src/java/com/sun/faces/systest/CoreTagsTestCase.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -48,7 +52,7 @@ import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
 import com.gargoylesoftware.htmlunit.html.HtmlRadioButtonInput;
 import com.gargoylesoftware.htmlunit.html.HtmlSelect;
 import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
-import com.sun.faces.htmlunit.AbstractTestCase;
+import com.sun.faces.htmlunit.HtmlUnitFacesTestCase;
 import junit.framework.Test;
 import junit.framework.TestCase;
 import junit.framework.TestSuite;
@@ -65,7 +69,7 @@ import javax.faces.component.NamingContainer;
  * is submitted along with a button press.</p>
  */
 
-public class CoreTagsTestCase extends AbstractTestCase {
+public class CoreTagsTestCase extends HtmlUnitFacesTestCase {
 
 
     // ------------------------------------------------------------ Constructors
diff --git a/jsf-ri/systest-per-webapp/core-tags/web/WEB-INF/web.xml b/jsf-ri/systest-per-webapp/core-tags/web/WEB-INF/web.xml
index 6e3f721..c7b3821 100644
--- a/jsf-ri/systest-per-webapp/core-tags/web/WEB-INF/web.xml
+++ b/jsf-ri/systest-per-webapp/core-tags/web/WEB-INF/web.xml
@@ -1,39 +1,44 @@
 <?xml version="1.0" encoding="ISO-8859-1"?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
 
 <web-app xmlns="http://java.sun.com/xml/ns/javaee"
diff --git a/jsf-ri/systest-per-webapp/core-tags/web/converter_noval.jsp b/jsf-ri/systest-per-webapp/core-tags/web/converter_noval.jsp
index fe14238..697f1e9 100644
--- a/jsf-ri/systest-per-webapp/core-tags/web/converter_noval.jsp
+++ b/jsf-ri/systest-per-webapp/core-tags/web/converter_noval.jsp
@@ -1,64 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
 
-<!--
- The contents of this file are subject to the terms
- of the Common Development and Distribution License
- (the License). You may not use this file except in
- compliance with the License.
- 
- You can obtain a copy of the License at
- https://javaserverfaces.dev.java.net/CDDL.html or
- legal/CDDLv1.0.txt. 
- See the License for the specific language governing
- permission and limitations under the License.
- 
- When distributing Covered Code, include this CDDL
- Header Notice in each file and include the License file
- at legal/CDDLv1.0.txt.    
- If applicable, add the following below the CDDL Header,
- with the fields enclosed by brackets [] replaced by
- your own identifying information:
- "Portions Copyrighted [year] [name of copyright owner]"
- 
- [Name of File] [ver.__] [Date]
- 
- Copyright 2005 Sun Microsystems Inc. All Rights Reserved
--->
 
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
diff --git a/jsf-ri/systest-per-webapp/core-tags/web/listener_noval.jsp b/jsf-ri/systest-per-webapp/core-tags/web/listener_noval.jsp
old mode 100644
new mode 100755
index 19ad424..175374a
--- a/jsf-ri/systest-per-webapp/core-tags/web/listener_noval.jsp
+++ b/jsf-ri/systest-per-webapp/core-tags/web/listener_noval.jsp
@@ -1,64 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
 
-<!--
- The contents of this file are subject to the terms
- of the Common Development and Distribution License
- (the License). You may not use this file except in
- compliance with the License.
- 
- You can obtain a copy of the License at
- https://javaserverfaces.dev.java.net/CDDL.html or
- legal/CDDLv1.0.txt. 
- See the License for the specific language governing
- permission and limitations under the License.
- 
- When distributing Covered Code, include this CDDL
- Header Notice in each file and include the License file
- at legal/CDDLv1.0.txt.    
- If applicable, add the following below the CDDL Header,
- with the fields enclosed by brackets [] replaced by
- your own identifying information:
- "Portions Copyrighted [year] [name of copyright owner]"
- 
- [Name of File] [ver.__] [Date]
- 
- Copyright 2005 Sun Microsystems Inc. All Rights Reserved
--->
 
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
diff --git a/jsf-ri/systest-per-webapp/core-tags/web/validator_noval.jsp b/jsf-ri/systest-per-webapp/core-tags/web/validator_noval.jsp
index 920d320..e33fec3 100644
--- a/jsf-ri/systest-per-webapp/core-tags/web/validator_noval.jsp
+++ b/jsf-ri/systest-per-webapp/core-tags/web/validator_noval.jsp
@@ -1,64 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
 
-<!--
- The contents of this file are subject to the terms
- of the Common Development and Distribution License
- (the License). You may not use this file except in
- compliance with the License.
- 
- You can obtain a copy of the License at
- https://javaserverfaces.dev.java.net/CDDL.html or
- legal/CDDLv1.0.txt. 
- See the License for the specific language governing
- permission and limitations under the License.
- 
- When distributing Covered Code, include this CDDL
- Header Notice in each file and include the License file
- at legal/CDDLv1.0.txt.    
- If applicable, add the following below the CDDL Header,
- with the fields enclosed by brackets [] replaced by
- your own identifying information:
- "Portions Copyrighted [year] [name of copyright owner]"
- 
- [Name of File] [ver.__] [Date]
- 
- Copyright 2005 Sun Microsystems Inc. All Rights Reserved
--->
 
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
diff --git a/jsf-ri/systest-per-webapp/disable-bean-validator/src/java/com/sun/faces/systest/DisableBeanValidatorTestCase.java b/jsf-ri/systest-per-webapp/disable-bean-validator/src/java/com/sun/faces/systest/DisableBeanValidatorTestCase.java
index 0d9d5c9..7cddd00 100644
--- a/jsf-ri/systest-per-webapp/disable-bean-validator/src/java/com/sun/faces/systest/DisableBeanValidatorTestCase.java
+++ b/jsf-ri/systest-per-webapp/disable-bean-validator/src/java/com/sun/faces/systest/DisableBeanValidatorTestCase.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -46,7 +50,7 @@ import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
 import com.gargoylesoftware.htmlunit.html.HtmlRadioButtonInput;
 import com.gargoylesoftware.htmlunit.html.HtmlSelect;
 import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
-import com.sun.faces.htmlunit.AbstractTestCase;
+import com.sun.faces.htmlunit.HtmlUnitFacesTestCase;
 import junit.framework.Test;
 import junit.framework.TestCase;
 import junit.framework.TestSuite;
@@ -64,7 +68,7 @@ import javax.faces.component.NamingContainer;
  * to do the bulk of the requests works.</p>
  */
 
-public class DisableBeanValidatorTestCase extends AbstractTestCase {
+public class DisableBeanValidatorTestCase extends HtmlUnitFacesTestCase {
 
 
     // ------------------------------------------------------------ Constructors
diff --git a/jsf-ri/systest-per-webapp/disable-bean-validator/web/WEB-INF/web.xml b/jsf-ri/systest-per-webapp/disable-bean-validator/web/WEB-INF/web.xml
old mode 100644
new mode 100755
index 3feccd4..0eeb0ef
--- a/jsf-ri/systest-per-webapp/disable-bean-validator/web/WEB-INF/web.xml
+++ b/jsf-ri/systest-per-webapp/disable-bean-validator/web/WEB-INF/web.xml
@@ -1,27 +1,45 @@
 <?xml version="1.0" encoding="UTF-8"?>
+<!--
 
-<!--  
-
- The contents of this file are subject to the terms 
- of the Common Development and Distribution License 
- (the "License").  You may not use this file except 
- in compliance with the License.
- 
- You can obtain a copy of the license at 
- glassfish/bootstrap/legal/CDDLv1.0.txt or 
- https://glassfish.dev.java.net/public/CDDLv1.0.html. 
- See the License for the specific language governing 
- permissions and limitations under the License.
- 
- When distributing Covered Code, include this CDDL 
- HEADER in each file and include the License file at 
- glassfish/bootstrap/legal/CDDLv1.0.txt.  If applicable, 
- add the following below this CDDL HEADER, with the 
- fields enclosed by brackets "[]" replaced with your 
- own identifying information: Portions Copyright [yyyy] 
- [name of copyright owner]
-
- -->
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
 
 <web-app version="2.5"
          xmlns="http://java.sun.com/xml/ns/javaee"
diff --git a/jsf-ri/systest-per-webapp/disable-bean-validator/web/enable.xhtml b/jsf-ri/systest-per-webapp/disable-bean-validator/web/enable.xhtml
index ef68d50..400e0b3 100644
--- a/jsf-ri/systest-per-webapp/disable-bean-validator/web/enable.xhtml
+++ b/jsf-ri/systest-per-webapp/disable-bean-validator/web/enable.xhtml
@@ -1,37 +1,43 @@
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
 
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
diff --git a/jsf-ri/systest-per-webapp/disable-bean-validator/web/index.html b/jsf-ri/systest-per-webapp/disable-bean-validator/web/index.html
index dc9261e..46260f6 100644
--- a/jsf-ri/systest-per-webapp/disable-bean-validator/web/index.html
+++ b/jsf-ri/systest-per-webapp/disable-bean-validator/web/index.html
@@ -1,40 +1,45 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!doctype html public "-//w3c//dtd html 4.0 transitional//en">
 <html>
 <head>
diff --git a/jsf-ri/systest-per-webapp/disable-bean-validator/web/index.xhtml b/jsf-ri/systest-per-webapp/disable-bean-validator/web/index.xhtml
index 70b5b4e..be57361 100644
--- a/jsf-ri/systest-per-webapp/disable-bean-validator/web/index.xhtml
+++ b/jsf-ri/systest-per-webapp/disable-bean-validator/web/index.xhtml
@@ -1,37 +1,43 @@
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
 
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
diff --git a/jsf-ri/systest-per-webapp/disable-unicode-escaping/src/java/com/sun/faces/systest/UnicodeBean.java b/jsf-ri/systest-per-webapp/disable-unicode-escaping/src/java/com/sun/faces/systest/UnicodeBean.java
index f6bd324..437b563 100644
--- a/jsf-ri/systest-per-webapp/disable-unicode-escaping/src/java/com/sun/faces/systest/UnicodeBean.java
+++ b/jsf-ri/systest-per-webapp/disable-unicode-escaping/src/java/com/sun/faces/systest/UnicodeBean.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/systest-per-webapp/disable-unicode-escaping/src/java/com/sun/faces/systest/UnicodeBeanFilter.java b/jsf-ri/systest-per-webapp/disable-unicode-escaping/src/java/com/sun/faces/systest/UnicodeBeanFilter.java
index 98a8482..8d4ce38 100644
--- a/jsf-ri/systest-per-webapp/disable-unicode-escaping/src/java/com/sun/faces/systest/UnicodeBeanFilter.java
+++ b/jsf-ri/systest-per-webapp/disable-unicode-escaping/src/java/com/sun/faces/systest/UnicodeBeanFilter.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -33,6 +37,7 @@
  * only if the new code is made subject to such option by the copyright
  * holder.
  */
+
 package com.sun.faces.systest;
 
 import javax.servlet.Filter;
diff --git a/jsf-ri/systest-per-webapp/disable-unicode-escaping/src/java/com/sun/faces/systest/UnicodeTestCase.java b/jsf-ri/systest-per-webapp/disable-unicode-escaping/src/java/com/sun/faces/systest/UnicodeTestCase.java
index 695d0d8..3656164 100644
--- a/jsf-ri/systest-per-webapp/disable-unicode-escaping/src/java/com/sun/faces/systest/UnicodeTestCase.java
+++ b/jsf-ri/systest-per-webapp/disable-unicode-escaping/src/java/com/sun/faces/systest/UnicodeTestCase.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -37,7 +41,7 @@
 package com.sun.faces.systest;
 
 import com.gargoylesoftware.htmlunit.html.HtmlPage;
-import com.sun.faces.htmlunit.AbstractTestCase;
+import com.sun.faces.htmlunit.HtmlUnitFacesTestCase;
 import junit.framework.Test;
 import junit.framework.TestSuite;
 
@@ -47,7 +51,7 @@ import junit.framework.TestSuite;
  * bulk of the requests works. </p>
  */
 
-public class UnicodeTestCase extends AbstractTestCase {
+public class UnicodeTestCase extends HtmlUnitFacesTestCase {
 
     // ------------------------------------------------------------ Constructors
 
diff --git a/jsf-ri/systest-per-webapp/disable-unicode-escaping/web/WEB-INF/faces-config.xml b/jsf-ri/systest-per-webapp/disable-unicode-escaping/web/WEB-INF/faces-config.xml
index cc97928..54e7fae 100644
--- a/jsf-ri/systest-per-webapp/disable-unicode-escaping/web/WEB-INF/faces-config.xml
+++ b/jsf-ri/systest-per-webapp/disable-unicode-escaping/web/WEB-INF/faces-config.xml
@@ -1,39 +1,44 @@
 <?xml version='1.0' encoding='UTF-8'?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
 
 <faces-config xmlns="http://java.sun.com/xml/ns/javaee"
diff --git a/jsf-ri/systest-per-webapp/disable-unicode-escaping/web/WEB-INF/web.xml b/jsf-ri/systest-per-webapp/disable-unicode-escaping/web/WEB-INF/web.xml
index 58066ea..e3d3bde 100644
--- a/jsf-ri/systest-per-webapp/disable-unicode-escaping/web/WEB-INF/web.xml
+++ b/jsf-ri/systest-per-webapp/disable-unicode-escaping/web/WEB-INF/web.xml
@@ -1,39 +1,44 @@
 <?xml version='1.0' encoding='UTF-8'?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
 
 <web-app version="2.5"
diff --git a/jsf-ri/systest-per-webapp/disable-unicode-escaping/web/indexISO8859_1.jsp b/jsf-ri/systest-per-webapp/disable-unicode-escaping/web/indexISO8859_1.jsp
index 92589ea..82b96bd 100644
--- a/jsf-ri/systest-per-webapp/disable-unicode-escaping/web/indexISO8859_1.jsp
+++ b/jsf-ri/systest-per-webapp/disable-unicode-escaping/web/indexISO8859_1.jsp
@@ -1,67 +1,50 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
 --%>
 
 <!DOCTYPE html
 PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 
-<!--
- The contents of this file are subject to the terms
- of the Common Development and Distribution License
- (the License). You may not use this file except in
- compliance with the License.
-
- You can obtain a copy of the License at
- https://javaserverfaces.dev.java.net/CDDL.html or
- legal/CDDLv1.0.txt.
- See the License for the specific language governing
- permission and limitations under the License.
-
- When distributing Covered Code, include this CDDL
- Header Notice in each file and include the License file
- at legal/CDDLv1.0.txt.
- If applicable, add the following below the CDDL Header,
- with the fields enclosed by brackets [] replaced by
- your own identifying information:
- "Portions Copyrighted [year] [name of copyright owner]"
-
- [Name of File] [ver.__] [Date]
 
- Copyright 2005 Sun Microsystems Inc. All Rights Reserved
--->
 <%@ page contentType="application/xhtml+xml" pageEncoding="ISO-8859-1" %>
 <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
 <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
diff --git a/jsf-ri/systest-per-webapp/disable-unicode-escaping/web/indexUSASCII.jsp b/jsf-ri/systest-per-webapp/disable-unicode-escaping/web/indexUSASCII.jsp
index 1950506..1f3d55a 100644
--- a/jsf-ri/systest-per-webapp/disable-unicode-escaping/web/indexUSASCII.jsp
+++ b/jsf-ri/systest-per-webapp/disable-unicode-escaping/web/indexUSASCII.jsp
@@ -1,67 +1,50 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
 --%>
 
 <!DOCTYPE html
 PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 
-<!--
- The contents of this file are subject to the terms
- of the Common Development and Distribution License
- (the License). You may not use this file except in
- compliance with the License.
-
- You can obtain a copy of the License at
- https://javaserverfaces.dev.java.net/CDDL.html or
- legal/CDDLv1.0.txt.
- See the License for the specific language governing
- permission and limitations under the License.
-
- When distributing Covered Code, include this CDDL
- Header Notice in each file and include the License file
- at legal/CDDLv1.0.txt.
- If applicable, add the following below the CDDL Header,
- with the fields enclosed by brackets [] replaced by
- your own identifying information:
- "Portions Copyrighted [year] [name of copyright owner]"
-
- [Name of File] [ver.__] [Date]
 
- Copyright 2005 Sun Microsystems Inc. All Rights Reserved
--->
 <%@ page contentType="application/xhtml+xml" pageEncoding="US-ASCII" %>
 <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
 <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
diff --git a/jsf-ri/systest-per-webapp/disable-unicode-escaping/web/indexUTF.jsp b/jsf-ri/systest-per-webapp/disable-unicode-escaping/web/indexUTF.jsp
index af14e77..971c3d2 100644
--- a/jsf-ri/systest-per-webapp/disable-unicode-escaping/web/indexUTF.jsp
+++ b/jsf-ri/systest-per-webapp/disable-unicode-escaping/web/indexUTF.jsp
@@ -1,67 +1,50 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
 --%>
 
 <!DOCTYPE html
 PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 
-<!--
- The contents of this file are subject to the terms
- of the Common Development and Distribution License
- (the License). You may not use this file except in
- compliance with the License.
-
- You can obtain a copy of the License at
- https://javaserverfaces.dev.java.net/CDDL.html or
- legal/CDDLv1.0.txt.
- See the License for the specific language governing
- permission and limitations under the License.
-
- When distributing Covered Code, include this CDDL
- Header Notice in each file and include the License file
- at legal/CDDLv1.0.txt.
- If applicable, add the following below the CDDL Header,
- with the fields enclosed by brackets [] replaced by
- your own identifying information:
- "Portions Copyrighted [year] [name of copyright owner]"
-
- [Name of File] [ver.__] [Date]
 
- Copyright 2005 Sun Microsystems Inc. All Rights Reserved
--->
 <%@ page contentType="application/xhtml+xml" pageEncoding="UTF-8" %>
 <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
 <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
diff --git a/jsf-ri/systest-per-webapp/document-ordering/src/java/com/sun/faces/systest/DocumentOrderingTestCase.java b/jsf-ri/systest-per-webapp/document-ordering/src/java/com/sun/faces/systest/DocumentOrderingTestCase.java
index 48023df..7dd59ae 100644
--- a/jsf-ri/systest-per-webapp/document-ordering/src/java/com/sun/faces/systest/DocumentOrderingTestCase.java
+++ b/jsf-ri/systest-per-webapp/document-ordering/src/java/com/sun/faces/systest/DocumentOrderingTestCase.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -39,9 +43,9 @@ package com.sun.faces.systest;
 import junit.framework.Test;
 import junit.framework.TestSuite;
 import com.gargoylesoftware.htmlunit.html.HtmlPage;
-import com.sun.faces.htmlunit.AbstractTestCase;
+import com.sun.faces.htmlunit.HtmlUnitFacesTestCase;
 
-public class DocumentOrderingTestCase extends AbstractTestCase {
+public class DocumentOrderingTestCase extends HtmlUnitFacesTestCase {
 
 
     public DocumentOrderingTestCase(String name) {
diff --git a/jsf-ri/systest-per-webapp/document-ordering/src/java/com/sun/faces/systest/PhaseListenerA.java b/jsf-ri/systest-per-webapp/document-ordering/src/java/com/sun/faces/systest/PhaseListenerA.java
index 8120232..50767d4 100644
--- a/jsf-ri/systest-per-webapp/document-ordering/src/java/com/sun/faces/systest/PhaseListenerA.java
+++ b/jsf-ri/systest-per-webapp/document-ordering/src/java/com/sun/faces/systest/PhaseListenerA.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/systest-per-webapp/document-ordering/src/java/com/sun/faces/systest/PhaseListenerB.java b/jsf-ri/systest-per-webapp/document-ordering/src/java/com/sun/faces/systest/PhaseListenerB.java
index 3fa5952..2e7e98e 100644
--- a/jsf-ri/systest-per-webapp/document-ordering/src/java/com/sun/faces/systest/PhaseListenerB.java
+++ b/jsf-ri/systest-per-webapp/document-ordering/src/java/com/sun/faces/systest/PhaseListenerB.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -58,4 +62,4 @@ public class PhaseListenerB implements PhaseListener {
         return PhaseId.ANY_PHASE;
     }
 
-}
\ No newline at end of file
+}
diff --git a/jsf-ri/systest-per-webapp/document-ordering/src/java/com/sun/faces/systest/PhaseListenerC.java b/jsf-ri/systest-per-webapp/document-ordering/src/java/com/sun/faces/systest/PhaseListenerC.java
index 80adb51..fa04042 100644
--- a/jsf-ri/systest-per-webapp/document-ordering/src/java/com/sun/faces/systest/PhaseListenerC.java
+++ b/jsf-ri/systest-per-webapp/document-ordering/src/java/com/sun/faces/systest/PhaseListenerC.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -58,4 +62,4 @@ public class PhaseListenerC implements PhaseListener {
         return PhaseId.ANY_PHASE;
     }
 
-}
\ No newline at end of file
+}
diff --git a/jsf-ri/systest-per-webapp/document-ordering/src/java/com/sun/faces/systest/PhaseListenerD.java b/jsf-ri/systest-per-webapp/document-ordering/src/java/com/sun/faces/systest/PhaseListenerD.java
index 4bb66e1..f4bd075 100644
--- a/jsf-ri/systest-per-webapp/document-ordering/src/java/com/sun/faces/systest/PhaseListenerD.java
+++ b/jsf-ri/systest-per-webapp/document-ordering/src/java/com/sun/faces/systest/PhaseListenerD.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -58,4 +62,4 @@ public class PhaseListenerD implements PhaseListener {
         return PhaseId.ANY_PHASE;
     }
 
-}
\ No newline at end of file
+}
diff --git a/jsf-ri/systest-per-webapp/document-ordering/src/java/com/sun/faces/systest/model/OrderingBean.java b/jsf-ri/systest-per-webapp/document-ordering/src/java/com/sun/faces/systest/model/OrderingBean.java
index 91ddeb4..45a32ed 100644
--- a/jsf-ri/systest-per-webapp/document-ordering/src/java/com/sun/faces/systest/model/OrderingBean.java
+++ b/jsf-ri/systest-per-webapp/document-ordering/src/java/com/sun/faces/systest/model/OrderingBean.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/systest-per-webapp/document-ordering/web/WEB-INF/faces-config.xml b/jsf-ri/systest-per-webapp/document-ordering/web/WEB-INF/faces-config.xml
index 44b542a..314bb5e 100644
--- a/jsf-ri/systest-per-webapp/document-ordering/web/WEB-INF/faces-config.xml
+++ b/jsf-ri/systest-per-webapp/document-ordering/web/WEB-INF/faces-config.xml
@@ -1,39 +1,44 @@
 <?xml version='1.0' encoding='UTF-8'?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
 
 <faces-config xmlns="http://java.sun.com/xml/ns/javaee"
diff --git a/jsf-ri/systest-per-webapp/document-ordering/web/WEB-INF/faces-configB.xml b/jsf-ri/systest-per-webapp/document-ordering/web/WEB-INF/faces-configB.xml
index b143710..7926de8 100644
--- a/jsf-ri/systest-per-webapp/document-ordering/web/WEB-INF/faces-configB.xml
+++ b/jsf-ri/systest-per-webapp/document-ordering/web/WEB-INF/faces-configB.xml
@@ -1,39 +1,44 @@
 <?xml version='1.0' encoding='UTF-8'?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
 
 <faces-config xmlns="http://java.sun.com/xml/ns/javaee"
diff --git a/jsf-ri/systest-per-webapp/document-ordering/web/WEB-INF/web.xml b/jsf-ri/systest-per-webapp/document-ordering/web/WEB-INF/web.xml
index 6b07d4a..52923ad 100644
--- a/jsf-ri/systest-per-webapp/document-ordering/web/WEB-INF/web.xml
+++ b/jsf-ri/systest-per-webapp/document-ordering/web/WEB-INF/web.xml
@@ -1,39 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
+
 <web-app version="2.5"
          xmlns="http://java.sun.com/xml/ns/javaee"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
diff --git a/jsf-ri/systest-per-webapp/document-ordering/web/test.xhtml b/jsf-ri/systest-per-webapp/document-ordering/web/test.xhtml
index f1ab8d5..ca44bea 100644
--- a/jsf-ri/systest-per-webapp/document-ordering/web/test.xhtml
+++ b/jsf-ri/systest-per-webapp/document-ordering/web/test.xhtml
@@ -1,41 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html
         PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
@@ -47,4 +52,4 @@
 <body>
     <h:outputText value="Order Correct: #{orderingBean.orderCorrect}"/>
 </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/jsf-ri/systest-per-webapp/el-performance/src/java/com/sun/faces/systest/EvaluatorBean.java b/jsf-ri/systest-per-webapp/el-performance/src/java/com/sun/faces/systest/EvaluatorBean.java
index 3df4361..774da51 100644
--- a/jsf-ri/systest-per-webapp/el-performance/src/java/com/sun/faces/systest/EvaluatorBean.java
+++ b/jsf-ri/systest-per-webapp/el-performance/src/java/com/sun/faces/systest/EvaluatorBean.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/systest-per-webapp/el-performance/web/WEB-INF/faces-config.xml b/jsf-ri/systest-per-webapp/el-performance/web/WEB-INF/faces-config.xml
index 6ecffeb..770020d 100644
--- a/jsf-ri/systest-per-webapp/el-performance/web/WEB-INF/faces-config.xml
+++ b/jsf-ri/systest-per-webapp/el-performance/web/WEB-INF/faces-config.xml
@@ -1,41 +1,45 @@
 <?xml version='1.0' encoding='UTF-8'?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
--->
 
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
 
 <faces-config xmlns="http://java.sun.com/xml/ns/javaee"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
diff --git a/jsf-ri/systest-per-webapp/el-performance/web/WEB-INF/web.xml b/jsf-ri/systest-per-webapp/el-performance/web/WEB-INF/web.xml
index 9a038b9..5223135 100644
--- a/jsf-ri/systest-per-webapp/el-performance/web/WEB-INF/web.xml
+++ b/jsf-ri/systest-per-webapp/el-performance/web/WEB-INF/web.xml
@@ -1,39 +1,44 @@
 <?xml version="1.0" encoding="ISO-8859-1"?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
 
 <web-app xmlns="http://java.sun.com/xml/ns/javaee"
diff --git a/jsf-ri/systest-per-webapp/el-performance/web/attribute-test.jsp b/jsf-ri/systest-per-webapp/el-performance/web/attribute-test.jsp
index a80c2d7..8204b30 100644
--- a/jsf-ri/systest-per-webapp/el-performance/web/attribute-test.jsp
+++ b/jsf-ri/systest-per-webapp/el-performance/web/attribute-test.jsp
@@ -1,63 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- The contents of this file are subject to the terms
- of the Common Development and Distribution License
- (the License). You may not use this file except in
- compliance with the License.
- 
- You can obtain a copy of the License at
- https://javaserverfaces.dev.java.net/CDDL.html or
- legal/CDDLv1.0.txt. 
- See the License for the specific language governing
- permission and limitations under the License.
- 
- When distributing Covered Code, include this CDDL
- Header Notice in each file and include the License file
- at legal/CDDLv1.0.txt.    
- If applicable, add the following below the CDDL Header,
- with the fields enclosed by brackets [] replaced by
- your own identifying information:
- "Portions Copyrighted [year] [name of copyright owner]"
- 
- [Name of File] [ver.__] [Date]
- 
- Copyright 2005 Sun Microsystems Inc. All Rights Reserved
--->
+
 
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
diff --git a/jsf-ri/systest-per-webapp/el-performance/web/test.jsp b/jsf-ri/systest-per-webapp/el-performance/web/test.jsp
index ffbebb7..b871c88 100644
--- a/jsf-ri/systest-per-webapp/el-performance/web/test.jsp
+++ b/jsf-ri/systest-per-webapp/el-performance/web/test.jsp
@@ -1,63 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- The contents of this file are subject to the terms
- of the Common Development and Distribution License
- (the License). You may not use this file except in
- compliance with the License.
- 
- You can obtain a copy of the License at
- https://javaserverfaces.dev.java.net/CDDL.html or
- legal/CDDLv1.0.txt. 
- See the License for the specific language governing
- permission and limitations under the License.
- 
- When distributing Covered Code, include this CDDL
- Header Notice in each file and include the License file
- at legal/CDDLv1.0.txt.    
- If applicable, add the following below the CDDL Header,
- with the fields enclosed by brackets [] replaced by
- your own identifying information:
- "Portions Copyrighted [year] [name of copyright owner]"
- 
- [Name of File] [ver.__] [Date]
- 
- Copyright 2005 Sun Microsystems Inc. All Rights Reserved
--->
+
 
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
diff --git a/jsf-ri/systest-per-webapp/empty-string-as-null/src/java/com/sun/faces/systest/EmptyStringAsNullTestCase.java b/jsf-ri/systest-per-webapp/empty-string-as-null/src/java/com/sun/faces/systest/EmptyStringAsNullTestCase.java
deleted file mode 100644
index 354322b..0000000
--- a/jsf-ri/systest-per-webapp/empty-string-as-null/src/java/com/sun/faces/systest/EmptyStringAsNullTestCase.java
+++ /dev/null
@@ -1,163 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package com.sun.faces.systest;
-
-import com.gargoylesoftware.htmlunit.html.HtmlPage;
-import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
-import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
-import com.sun.faces.htmlunit.AbstractTestCase;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-public class EmptyStringAsNullTestCase extends AbstractTestCase {
-
-    public EmptyStringAsNullTestCase(String name) {
-        super(name);
-    }
-
-    /**
-     * Set up instance variables required by this test case.
-     */
-    public void setUp() throws Exception {
-        super.setUp();
-    }
-
-
-    /**
-     * Return the tests included in this test suite.
-     */
-    public static Test suite() {
-        return (new TestSuite(EmptyStringAsNullTestCase.class));
-    }
-
-
-    /**
-     * Tear down instance variables required by this test case.
-     */
-    public void tearDown() {
-        super.tearDown();
-    }
-    
-    
-    // ------------------------------------------------------------ Test Methods
-    
-    public void testWriteAttributeDisabled() throws Exception {
-
-        HtmlPage page = getPage("/faces/test.xhtml");
-
-        HtmlTextInput stringInput = (HtmlTextInput) getInputContainingGivenId(page, "string");
-        HtmlTextInput integerInput = (HtmlTextInput) getInputContainingGivenId(page, "integer");
-
-        assertNotNull(stringInput);
-        assertNotNull(integerInput);
-        assertEquals(stringInput.getValueAttribute(), "");
-        assertEquals(integerInput.getValueAttribute(), "");
-
-        String pageAsText = page.asText();
-        assertTrue(pageAsText.contains("VC1 Fired: false"));
-        assertTrue(pageAsText.contains("VC2 Fired: false"));
-        assertTrue(pageAsText.contains("String model set with null: false"));
-        assertTrue(pageAsText.contains("Integer model set with null: false"));
-
-        HtmlSubmitInput submit = (HtmlSubmitInput) getInputContainingGivenId(page, "command");
-        assertNotNull(submit);
-
-        stringInput.setValueAttribute("11");
-        integerInput.setValueAttribute("11");
-
-        page = (HtmlPage) submit.click();
-
-        stringInput = (HtmlTextInput) getInputContainingGivenId(page, "string");
-        integerInput = (HtmlTextInput) getInputContainingGivenId(page, "integer");
-
-        assertNotNull(stringInput);
-        assertNotNull(integerInput);
-        assertEquals(stringInput.getValueAttribute(), "11");
-        assertEquals(integerInput.getValueAttribute(), "11");
-
-        pageAsText = page.asText();
-        assertTrue(pageAsText.contains("VC1 Fired: true"));
-        assertTrue(pageAsText.contains("VC2 Fired: true"));
-        assertTrue(pageAsText.contains("String model set with null: false"));
-        assertTrue(pageAsText.contains("Integer model set with null: false"));
-
-        submit = (HtmlSubmitInput) getInputContainingGivenId(page, "command");
-        assertNotNull(submit);
-
-        stringInput.setValueAttribute("");
-        integerInput.setValueAttribute("");
-
-        page = (HtmlPage) submit.click();
-
-        stringInput = (HtmlTextInput) getInputContainingGivenId(page, "string");
-        integerInput = (HtmlTextInput) getInputContainingGivenId(page, "integer");
-
-        assertNotNull(stringInput);
-        assertNotNull(integerInput);
-        assertEquals(stringInput.getValueAttribute(), "");
-        assertEquals(integerInput.getValueAttribute(), "");
-
-        pageAsText = page.asText();
-        assertTrue(pageAsText.contains("VC1 Fired: true"));
-        assertTrue(pageAsText.contains("VC2 Fired: true"));
-        assertTrue(pageAsText.contains("String model set with null: true"));
-        assertTrue(pageAsText.contains("Integer model set with null: true"));
-
-        submit = (HtmlSubmitInput) getInputContainingGivenId(page, "command");
-        assertNotNull(submit);
-
-        stringInput.setValueAttribute("");
-        integerInput.setValueAttribute("");
-
-        page = (HtmlPage) submit.click();
-
-        stringInput = (HtmlTextInput) getInputContainingGivenId(page, "string");
-        integerInput = (HtmlTextInput) getInputContainingGivenId(page, "integer");
-
-        assertNotNull(stringInput);
-        assertNotNull(integerInput);
-        assertEquals(stringInput.getValueAttribute(), "");
-        assertEquals(integerInput.getValueAttribute(), "");
-
-        pageAsText = page.asText();
-        assertTrue(pageAsText.contains("VC1 Fired: false"));
-        assertTrue(pageAsText.contains("VC2 Fired: false"));
-        assertTrue(pageAsText.contains("String model set with null: true"));
-        assertTrue(pageAsText.contains("Integer model set with null: true"));
-        
-    }
-}
diff --git a/jsf-ri/systest-per-webapp/empty-string-as-null/src/java/com/sun/faces/systest/model/Bean.java b/jsf-ri/systest-per-webapp/empty-string-as-null/src/java/com/sun/faces/systest/model/Bean.java
deleted file mode 100644
index 387e02e..0000000
--- a/jsf-ri/systest-per-webapp/empty-string-as-null/src/java/com/sun/faces/systest/model/Bean.java
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- *
- * Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
- *
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- *
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- *
- * Contributor(s):
- *
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package com.sun.faces.systest.model;
-
-import javax.faces.event.ValueChangeEvent;
-
-public class Bean {
-
-    Object integerPropertySet = "";
-    Integer integerProperty;
-    Object stringPropertySet = "";
-    String stringProperty;
-    boolean vceFired;
-    boolean vce2Fired;
-
-    public Integer getIntegerProperty() {
-        return integerProperty;
-    }
-
-    public void setIntegerProperty(Integer integerProperty) {
-        integerPropertySet = integerProperty;
-        this.integerProperty = integerProperty;
-    }
-
-    public String getStringProperty() {
-        return stringProperty;
-    }
-
-    public void setStringProperty(String stringProperty) {
-        stringPropertySet = stringProperty;
-        this.stringProperty = stringProperty;
-    }
-
-    public boolean isVceFired() {
-        boolean tmp = vceFired;
-        vceFired = false;
-        return tmp;
-    }
-
-    public boolean isVce2Fired() {
-        boolean tmp = vce2Fired;
-        vce2Fired = false;
-        return tmp;
-    }
-
-    public boolean isStringNull() {
-        boolean isNull = (this.stringPropertySet == null);
-        this.stringPropertySet = "";
-        return (isNull);
-    }
-
-    public boolean isIntegerNull() {
-        boolean isNull = (this.integerPropertySet == null);
-        this.integerPropertySet = "";
-        return (isNull);
-    }
-
-    public void valueChange(ValueChangeEvent event) {
-        vceFired = true;
-    }
-
-    public void valueChange2(ValueChangeEvent event) {
-        vce2Fired = true;
-    }
-}
diff --git a/jsf-ri/systest-per-webapp/empty-string-as-null/web/WEB-INF/faces-config.xml b/jsf-ri/systest-per-webapp/empty-string-as-null/web/WEB-INF/faces-config.xml
deleted file mode 100644
index d72db07..0000000
--- a/jsf-ri/systest-per-webapp/empty-string-as-null/web/WEB-INF/faces-config.xml
+++ /dev/null
@@ -1,51 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-
-<!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
--->
-
-<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
-    version="2.0">
-
-  <managed-bean>
-    <managed-bean-name>bean</managed-bean-name>
-    <managed-bean-class>com.sun.faces.systest.model.Bean</managed-bean-class>
-    <managed-bean-scope>session</managed-bean-scope>
-  </managed-bean>
-
-
-</faces-config>
diff --git a/jsf-ri/systest-per-webapp/empty-string-as-null/web/WEB-INF/web.xml b/jsf-ri/systest-per-webapp/empty-string-as-null/web/WEB-INF/web.xml
deleted file mode 100644
index f6224c6..0000000
--- a/jsf-ri/systest-per-webapp/empty-string-as-null/web/WEB-INF/web.xml
+++ /dev/null
@@ -1,66 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
--->
-<web-app version="2.5"
-         xmlns="http://java.sun.com/xml/ns/javaee"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
-  <description>
-       Verify empty Strings are treated as null when so configured.
-  </description>
-  <display-name>Empty String As Null Test</display-name>
-
-    <context-param>
-        <param-name>javax.faces.INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL</param-name>
-        <param-value>true</param-value>
-    </context-param>
-  <context-param>
-        <param-name>com.sun.faces.enableThreading</param-name>
-        <param-value>true</param-value>
-    </context-param>
-  <!-- Faces Servlet -->
-  <servlet>
-    <servlet-name>Faces Servlet</servlet-name>
-    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
-    <load-on-startup> 1 </load-on-startup>
-  </servlet>
-    
-  <servlet-mapping>
-    <servlet-name>Faces Servlet</servlet-name>
-    <url-pattern>/faces/*</url-pattern>
-  </servlet-mapping>
-    
-</web-app>
diff --git a/jsf-ri/systest-per-webapp/empty-string-as-null/web/test.xhtml b/jsf-ri/systest-per-webapp/empty-string-as-null/web/test.xhtml
deleted file mode 100644
index dfa45e4..0000000
--- a/jsf-ri/systest-per-webapp/empty-string-as-null/web/test.xhtml
+++ /dev/null
@@ -1,62 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
-
--->
-<!DOCTYPE html
-     PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"
-      xmlns:h="http://java.sun.com/jsf/html">
-  <head>
-    <title>Empty String As Null Test</title>
-  </head>
-  <body>
-  <h:form id="form">
-    <h:inputText id="string"
-                 value="#{bean.stringProperty}"
-                 valueChangeListener="#{bean.valueChange}"/>
-    <h:inputText id="integer"
-                 value="#{bean.integerProperty}"
-                 valueChangeListener="#{bean.valueChange2}"/>
-    <h:commandButton id="command" value="Submit"/>
-  </h:form>
-  VC1 Fired: <h:outputText value="#{bean.vceFired}"/><br />
-  VC2 Fired: <h:outputText value="#{bean.vce2Fired}"/><br />
-  <h:outputText value="String model set with null: #{bean.stringNull}"/><br />
-  <h:outputText value="Integer model set with null: #{bean.integerNull}"/><br />  
-  </body>
-</html>
\ No newline at end of file
diff --git a/jsf-ri/systest-per-webapp/find-resources-in-jar/src/java/com/sun/faces/systest/FindResourcesInJarTestCase.java b/jsf-ri/systest-per-webapp/find-resources-in-jar/src/java/com/sun/faces/systest/FindResourcesInJarTestCase.java
new file mode 100644
index 0000000..8cb71bb
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/find-resources-in-jar/src/java/com/sun/faces/systest/FindResourcesInJarTestCase.java
@@ -0,0 +1,110 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest;
+
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlImage;
+import javax.imageio.ImageReader;
+
+import com.sun.faces.htmlunit.HtmlUnitFacesTestCase;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+import java.util.List;
+import java.io.IOException;
+
+public class FindResourcesInJarTestCase extends HtmlUnitFacesTestCase {
+
+    public FindResourcesInJarTestCase(String name) {
+        super(name);
+    }
+
+    /**
+     * Set up instance variables required by this test case.
+     */
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+
+
+    /**
+     * Return the tests included in this test suite.
+     */
+    public static Test suite() {
+        return (new TestSuite(FindResourcesInJarTestCase.class));
+    }
+
+
+    /**
+     * Tear down instance variables required by this test case.
+     */
+    public void tearDown() {
+        super.tearDown();
+    }
+
+
+    // ------------------------------------------------------------ Test Methods
+
+    public void testFindResourcesInJar() throws Exception {
+
+//        HtmlPage page = getPage("/faces/index.xhtml");
+//
+//        List list = getAllElementsOfGivenClass(page, null,
+//                HtmlImage.class);
+//
+//        HtmlImage image = (HtmlImage)list.get(0);
+//        try {
+//            ImageReader iReader = image.getImageReader(); //performance issue with this api
+//            assertTrue(image!=null);
+//        } catch (IOException io) {
+//            assertFalse(image!=null);
+//        }
+//
+//        image = (HtmlImage)list.get(1);
+//        try {
+//            ImageReader iReader = image.getImageReader();
+//            assertTrue(image!=null);
+//        } catch (IOException io) {
+//            assertFalse(image!=null);
+//        }
+          
+    }
+}
diff --git a/jsf-ri/systest-per-webapp/find-resources-in-jar/web/index.xhtml b/jsf-ri/systest-per-webapp/find-resources-in-jar/web/index.xhtml
new file mode 100644
index 0000000..f45d4d4
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/find-resources-in-jar/web/index.xhtml
@@ -0,0 +1,25 @@
+<!DOCTYPE html
+     PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <head>
+        <title>Hello JSF 2!</title>
+    </head>
+    <body>
+        <h:form id="form">
+            Image resource from jar with missing directory entries:
+
+            <img  src="#{resource['images:user.png']}" name="user"/>
+
+            <br/>
+
+            Image resource from jar with directory entries:
+
+            <img src="#{resource['images2:delete.png']}" name="delete"/>
+
+        </h:form>
+    </body>
+</html>
+
+
diff --git a/jsf-ri/systest-per-webapp/flash/src/java/com/sun/faces/CustomerBean.java b/jsf-ri/systest-per-webapp/flash/src/java/com/sun/faces/CustomerBean.java
new file mode 100644
index 0000000..fbeebf8
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/flash/src/java/com/sun/faces/CustomerBean.java
@@ -0,0 +1,49 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces;
+
+public class CustomerBean {
+    
+    /**
+     * Constructor.
+     */
+    public CustomerBean(String arg1, String arg2, String arg3, int arg4) {
+    }
+}
diff --git a/jsf-ri/systest-per-webapp/flash/src/java/com/sun/faces/model/Bean.java b/jsf-ri/systest-per-webapp/flash/src/java/com/sun/faces/model/Bean.java
index b5ac65d..2f580ae 100644
--- a/jsf-ri/systest-per-webapp/flash/src/java/com/sun/faces/model/Bean.java
+++ b/jsf-ri/systest-per-webapp/flash/src/java/com/sun/faces/model/Bean.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -92,4 +96,8 @@ public class Bean {
         return "flash12?faces-redirect=true";
     }
 
+    public String test2087() {
+        FacesContext.getCurrentInstance().getExternalContext().getFlash().put("foo", "read strobist");;
+        return "flash13?faces-redirect=true";
+    }
 }
diff --git a/jsf-ri/systest-per-webapp/flash/src/java/com/sun/faces/model/SessionScopedBean.java b/jsf-ri/systest-per-webapp/flash/src/java/com/sun/faces/model/SessionScopedBean.java
new file mode 100644
index 0000000..cf53eff
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/flash/src/java/com/sun/faces/model/SessionScopedBean.java
@@ -0,0 +1,125 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.model;
+
+import java.util.Map;
+import javax.annotation.PreDestroy;
+import javax.faces.application.Application;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.SessionScoped;
+import javax.faces.context.FacesContext;
+import javax.faces.context.Flash;
+import javax.faces.event.AbortProcessingException;
+import javax.faces.event.PostKeepFlashValueEvent;
+import javax.faces.event.PostPutFlashValueEvent;
+import javax.faces.event.PreClearFlashEvent;
+import javax.faces.event.PreRemoveFlashValueEvent;
+import javax.faces.event.SystemEvent;
+import javax.faces.event.SystemEventListener;
+import java.io.Serializable;
+
+ at ManagedBean
+ at SessionScoped
+public class SessionScopedBean implements Serializable {
+    
+    private FlashListener listener;
+    
+    public SessionScopedBean() {
+        FacesContext context = FacesContext.getCurrentInstance();
+        Application app = context.getApplication();
+        listener = new FlashListener();
+        
+        app.subscribeToEvent(PreRemoveFlashValueEvent.class, listener);
+        app.subscribeToEvent(PostKeepFlashValueEvent.class, listener);
+        app.subscribeToEvent(PreClearFlashEvent.class, listener);
+        app.subscribeToEvent(PostPutFlashValueEvent.class, listener);
+        
+    }
+
+    @PreDestroy
+    public void destroy() {
+        FacesContext context = FacesContext.getCurrentInstance();
+        Application app = context.getApplication();
+        
+        app.unsubscribeFromEvent(PreRemoveFlashValueEvent.class, listener);
+        app.unsubscribeFromEvent(PostKeepFlashValueEvent.class, listener);
+        app.unsubscribeFromEvent(PreClearFlashEvent.class, listener);
+        app.unsubscribeFromEvent(PostPutFlashValueEvent.class, listener);
+        
+    }
+    
+    public String getMessage() {
+        FacesContext context = FacesContext.getCurrentInstance();
+        Map<String, Object> sessionMap = context.getExternalContext().getSessionMap();
+        String result = (sessionMap.containsKey("builder")) ? ((StringBuilder)sessionMap.get("builder")).toString() : "no message";
+        
+        return result;
+    }
+    
+    public static class FlashListener implements SystemEventListener {
+
+        public boolean isListenerForSource(Object source) {
+            return ((source instanceof String) || (source instanceof Map));
+        }
+
+        public void processEvent(SystemEvent event) throws AbortProcessingException {
+            appendMessage("[received " + event.getClass().getName() + " source:"
+                          + event.getSource() + "]");
+            
+        }
+        
+        private void appendMessage(String message) {
+            FacesContext context = FacesContext.getCurrentInstance();
+            Map<String, Object> sessionMap = context.getExternalContext().getSessionMap();
+            StringBuilder builder;
+            builder = (StringBuilder) sessionMap.get("builder");
+            if (null == builder) {
+                builder = new StringBuilder();
+                sessionMap.put("builder", builder);
+            }
+            builder.append(message);
+        }
+        
+        
+        
+    }
+    
+}
diff --git a/jsf-ri/systest-per-webapp/flash/src/java/com/sun/faces/run_time_test/ResultSetBean.java b/jsf-ri/systest-per-webapp/flash/src/java/com/sun/faces/run_time_test/ResultSetBean.java
index 0714f7e..8eef4b3 100644
--- a/jsf-ri/systest-per-webapp/flash/src/java/com/sun/faces/run_time_test/ResultSetBean.java
+++ b/jsf-ri/systest-per-webapp/flash/src/java/com/sun/faces/run_time_test/ResultSetBean.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/systest-per-webapp/flash/src/java/com/sun/faces/systest/FlashTestCase.java b/jsf-ri/systest-per-webapp/flash/src/java/com/sun/faces/systest/FlashTestCase.java
index 88fbd82..4b6e691 100644
--- a/jsf-ri/systest-per-webapp/flash/src/java/com/sun/faces/systest/FlashTestCase.java
+++ b/jsf-ri/systest-per-webapp/flash/src/java/com/sun/faces/systest/FlashTestCase.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -41,7 +45,7 @@ import com.gargoylesoftware.htmlunit.html.HtmlPage;
 import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
 import com.gargoylesoftware.htmlunit.html.HtmlAnchor;
 import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
-import com.sun.faces.htmlunit.AbstractTestCase;
+import com.sun.faces.htmlunit.HtmlUnitFacesTestCase;
 import junit.framework.Test;
 import junit.framework.TestSuite;
 
@@ -54,7 +58,7 @@ import junit.framework.TestSuite;
  * to do the bulk of the requests works.</p>
  */
 
-public class FlashTestCase extends AbstractTestCase {
+public class FlashTestCase extends HtmlUnitFacesTestCase {
 
 
     // ------------------------------------------------------------ Constructors
@@ -193,46 +197,46 @@ public class FlashTestCase extends AbstractTestCase {
         // See that it still has banzai
         assertTrue(pageText.matches("(?s)(?m).*<span.*id=\"flash4BuckarooValueId\">\\s*banzai\\s*</span>.*"));
 
-        // click the link http://localhost:8080/jsf-flash/flash5.jsf?id=1
+        // click the link http://localhost:${container.port}/jsf-flash/flash5.jsf?id=1
         HtmlAnchor link = (HtmlAnchor) page.getElementById("link");
         page = link.click();
 
         // on flash5
         link = (HtmlAnchor) page.getElementById("link");
-        page = link.click(); // clicks http://localhost:8080/jsf-flash/flash6.jsf
+        page = link.click(); // clicks http://localhost:${container.port}/jsf-flash/flash6.jsf
 
         assertTrue(page.asText().contains("Value is 1."));
 
         // click the link on the next page
-        link = (HtmlAnchor) page.getElementById("link"); // http://localhost:8080/jsf-flash/flash7.jsf
+        link = (HtmlAnchor) page.getElementById("link"); // http://localhost:${container.port}/jsf-flash/flash7.jsf
         page = link.click();
 
         assertTrue(page.asText().contains("Value is 1."));
 
         // click the link on the same page
-        link = (HtmlAnchor) page.getElementById("link"); // http://localhost:8080/jsf-flash/flash7.jsf
+        link = (HtmlAnchor) page.getElementById("link"); // http://localhost:${container.port}/jsf-flash/flash7.jsf
         page = link.click();
 
         assertTrue(page.asText().contains("Value is 1."));
 
         // click the link on the same page
-        link = (HtmlAnchor) page.getElementById("link"); // http://localhost:8080/jsf-flash/flash7.jsf
+        link = (HtmlAnchor) page.getElementById("link"); // http://localhost:${container.port}/jsf-flash/flash7.jsf
         page = link.click();
 
         assertTrue(page.asText().contains("Value is 1."));
 
-        link = (HtmlAnchor) page.getElementById("link2"); // http://localhost:8080/jsf-flash/flash8.jsf
+        link = (HtmlAnchor) page.getElementById("link2"); // http://localhost:${container.port}/jsf-flash/flash8.jsf
         page = link.click();
 
         assertTrue(page.asText().contains("Value is 1."));
 
-        link = (HtmlAnchor) page.getElementById("link"); // http://localhost:8080/jsf-flash/flash8.jsf
+        link = (HtmlAnchor) page.getElementById("link"); // http://localhost:${container.port}/jsf-flash/flash8.jsf
         page = link.click();
 
         // it went away because there was no keep
         assertTrue(page.asText().contains("Value is ."));
 
-        page = getPage("/faces/flash9.xhtml"); // http://localhost:8080/jsf-flash/flash9.jsf
+        page = getPage("/faces/flash9.xhtml"); // http://localhost:${container.port}/jsf-flash/flash9.jsf
 
         text = (HtmlTextInput) page.getHtmlElementById("valueA");
         text.setValueAttribute("a value");
@@ -244,7 +248,7 @@ public class FlashTestCase extends AbstractTestCase {
         text.setValueAttribute("c value");
 
         button = (HtmlSubmitInput) page.getHtmlElementById("keep");
-        page = (HtmlPage) button.click();  // http://localhost:8080/jsf-flash/flash11.jsf
+        page = (HtmlPage) button.click();  // http://localhost:${container.port}/jsf-flash/flash11.jsf
 
         pageText = page.asText();
 
@@ -252,7 +256,7 @@ public class FlashTestCase extends AbstractTestCase {
         assertTrue(pageText.contains("valueB: b value"));
         assertTrue(pageText.contains("valueC: c value"));
 
-        link = (HtmlAnchor) page.getElementById("flash9"); // http://localhost:8080/jsf-flash/flash9.jsf
+        link = (HtmlAnchor) page.getElementById("flash9"); // http://localhost:${container.port}/jsf-flash/flash9.jsf
         page = link.click();
 
         text = (HtmlTextInput) page.getHtmlElementById("valueA");
@@ -264,7 +268,7 @@ public class FlashTestCase extends AbstractTestCase {
         text = (HtmlTextInput) page.getHtmlElementById("valueC");
         assertEquals(text.getValueAttribute(), "c value");
 
-        page = getPage("/faces/flash9.xhtml"); // http://localhost:8080/jsf-flash/flash9.jsf
+        page = getPage("/faces/flash9.xhtml"); // http://localhost:${container.port}/jsf-flash/flash9.jsf
         text = (HtmlTextInput) page.getHtmlElementById("valueA");
         assertEquals(text.getValueAttribute(), "");
 
@@ -284,7 +288,7 @@ public class FlashTestCase extends AbstractTestCase {
         text.setValueAttribute("C value");
 
         button = (HtmlSubmitInput) page.getHtmlElementById("nokeep");
-        page = (HtmlPage) button.click();  // http://localhost:8080/jsf-flash/flash10.jsf
+        page = (HtmlPage) button.click();  // http://localhost:${container.port}/jsf-flash/flash10.jsf
 
         pageText = page.asText();
 
@@ -293,7 +297,7 @@ public class FlashTestCase extends AbstractTestCase {
         assertTrue(pageText.contains("valueC: C value"));
 
         button = (HtmlSubmitInput) page.getHtmlElementById("reload");
-        page = (HtmlPage) button.click();  // http://localhost:8080/jsf-flash/flash10.jsf
+        page = (HtmlPage) button.click();  // http://localhost:${container.port}/jsf-flash/flash10.jsf
 
         pageText = page.asText();
 
@@ -304,7 +308,7 @@ public class FlashTestCase extends AbstractTestCase {
         // content from Sebastian Hennebrueder
         page = getPage("/faces/flash12.xhtml");
         button = (HtmlSubmitInput) page.getHtmlElementById("start");
-        page = (HtmlPage) button.click();  // http://localhost:8080/jsf-flash/flash10.jsf
+        page = (HtmlPage) button.click();  // http://localhost:${container.port}/jsf-flash/flash10.jsf
 
         pageText = page.asText();
         assertTrue(pageText.contains("4711"));
@@ -314,6 +318,31 @@ public class FlashTestCase extends AbstractTestCase {
         pageText = page.asText();
         assertTrue(!pageText.contains("4711"));
 
+        // Test for JAVASERVERFACES-2087
+        page = getPage("/faces/flash13.xhtml");
+        button = (HtmlSubmitInput) page.getHtmlElementById("flashbtn");
+        page = (HtmlPage) button.click();  // http://localhost:${container.port}/jsf-flash/flash13.jsf
+        
+        pageText = page.asText();
+        assertTrue(pageText.contains("read strobist"));
+
+        page = getPage("/faces/flash13.xhtml");
+        pageText = page.asText();
+        assertTrue(!pageText.contains("read strobist"));
+
+        page = getPage("/faces/flash13.xhtml");
+        pageText = page.asText();
+        assertTrue(!pageText.contains("read strobist"));
+
+        // Only execute this assertion 
+        // in non-cluster scenario
+        if (getInstanceNumbers().size() < 2) {
+            page = getPage("/faces/flash14.xhtml");
+            pageText = page.asText();
+            assertTrue(pageText.matches("(?s).*\\[received javax.faces.event.PreClearFlashEvent source:\\{\\}\\].*"));
+        }
+        
+
     }
 
 }
diff --git a/jsf-ri/systest-per-webapp/flash/web/WEB-INF/faces-config.xml b/jsf-ri/systest-per-webapp/flash/web/WEB-INF/faces-config.xml
index 6829935..c27a9c2 100644
--- a/jsf-ri/systest-per-webapp/flash/web/WEB-INF/faces-config.xml
+++ b/jsf-ri/systest-per-webapp/flash/web/WEB-INF/faces-config.xml
@@ -1,24 +1,44 @@
 <?xml version='1.0' encoding='UTF-8'?>
-
 <!--
- The contents of this file are subject to the terms 
- of the Common Development and Distribution License 
- (the "License").  You may not use this file except 
- in compliance with the License.
- 
- You can obtain a copy of the license at 
- glassfish/bootstrap/legal/CDDLv1.0.txt or 
- https://glassfish.dev.java.net/public/CDDLv1.0.html. 
- See the License for the specific language governing 
- permissions and limitations under the License.
- 
- When distributing Covered Code, include this CDDL 
- HEADER in each file and include the License file at 
- glassfish/bootstrap/legal/CDDLv1.0.txt.  If applicable, 
- add the following below this CDDL HEADER, with the 
- fields enclosed by brackets "[]" replaced with your 
- own identifying information: Portions Copyright [yyyy] 
- [name of copyright owner]
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
 
 <faces-config xmlns="http://java.sun.com/xml/ns/javaee"
diff --git a/jsf-ri/systest-per-webapp/flash/web/WEB-INF/web.xml b/jsf-ri/systest-per-webapp/flash/web/WEB-INF/web.xml
old mode 100644
new mode 100755
index 40f506e..a2e27fd
--- a/jsf-ri/systest-per-webapp/flash/web/WEB-INF/web.xml
+++ b/jsf-ri/systest-per-webapp/flash/web/WEB-INF/web.xml
@@ -1,25 +1,43 @@
 <?xml version="1.0" encoding="UTF-8"?>
+<!--
 
-<!--  
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
- The contents of this file are subject to the terms 
- of the Common Development and Distribution License 
- (the "License").  You may not use this file except 
- in compliance with the License.
- 
- You can obtain a copy of the license at 
- glassfish/bootstrap/legal/CDDLv1.0.txt or 
- https://glassfish.dev.java.net/public/CDDLv1.0.html. 
- See the License for the specific language governing 
- permissions and limitations under the License.
- 
- When distributing Covered Code, include this CDDL 
- HEADER in each file and include the License file at 
- glassfish/bootstrap/legal/CDDLv1.0.txt.  If applicable, 
- add the following below this CDDL HEADER, with the 
- fields enclosed by brackets "[]" replaced with your 
- own identifying information: Portions Copyright [yyyy] 
- [name of copyright owner]
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
 
diff --git a/jsf-ri/systest-per-webapp/flash/web/flash10.xhtml b/jsf-ri/systest-per-webapp/flash/web/flash10.xhtml
index 7acd68e..b7e83a3 100644
--- a/jsf-ri/systest-per-webapp/flash/web/flash10.xhtml
+++ b/jsf-ri/systest-per-webapp/flash/web/flash10.xhtml
@@ -1,38 +1,45 @@
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 2009 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2009-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:h="http://java.sun.com/jsf/html"
diff --git a/jsf-ri/systest-per-webapp/flash/web/flash11.xhtml b/jsf-ri/systest-per-webapp/flash/web/flash11.xhtml
index 4565bcd..1ab2e5d 100644
--- a/jsf-ri/systest-per-webapp/flash/web/flash11.xhtml
+++ b/jsf-ri/systest-per-webapp/flash/web/flash11.xhtml
@@ -1,38 +1,45 @@
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 2009 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2009-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:h="http://java.sun.com/jsf/html"
diff --git a/jsf-ri/systest-per-webapp/flash/web/flash12.xhtml b/jsf-ri/systest-per-webapp/flash/web/flash12.xhtml
index 186d2c6..ecb601d 100644
--- a/jsf-ri/systest-per-webapp/flash/web/flash12.xhtml
+++ b/jsf-ri/systest-per-webapp/flash/web/flash12.xhtml
@@ -1,38 +1,45 @@
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 2009 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2009-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:h="http://java.sun.com/jsf/html"
diff --git a/jsf-ri/systest-per-webapp/flash/web/flash13.xhtml b/jsf-ri/systest-per-webapp/flash/web/flash13.xhtml
new file mode 100644
index 0000000..9614c69
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/flash/web/flash13.xhtml
@@ -0,0 +1,57 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2009-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:c="http://java.sun.com/jsp/jstl/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+<body>
+  <h3>flash13</h3>
+  #{flash.foo}
+  <h:form prependId="false">
+    <h:commandButton id="flashbtn" action="#{bean.test2087}" value="Flash me, baby" />
+  </h:form>
+  <ui:debug/>
+</body>
+</html>
diff --git a/jsf-ri/systest-per-webapp/flash/web/flash14.xhtml b/jsf-ri/systest-per-webapp/flash/web/flash14.xhtml
new file mode 100644
index 0000000..5769ffe
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/flash/web/flash14.xhtml
@@ -0,0 +1,53 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2009-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:c="http://java.sun.com/jsp/jstl/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+<body>
+  <h3>flash14</h3>
+  #{sessionScopedBean.message}
+</body>
+</html>
diff --git a/jsf-ri/systest-per-webapp/flash/web/flash2.xhtml b/jsf-ri/systest-per-webapp/flash/web/flash2.xhtml
index cc4814e..cbe4259 100644
--- a/jsf-ri/systest-per-webapp/flash/web/flash2.xhtml
+++ b/jsf-ri/systest-per-webapp/flash/web/flash2.xhtml
@@ -1,37 +1,43 @@
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 2009 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2009-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
 
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
diff --git a/jsf-ri/systest-per-webapp/flash/web/flash3.xhtml b/jsf-ri/systest-per-webapp/flash/web/flash3.xhtml
index b247c38..560196c 100644
--- a/jsf-ri/systest-per-webapp/flash/web/flash3.xhtml
+++ b/jsf-ri/systest-per-webapp/flash/web/flash3.xhtml
@@ -1,37 +1,43 @@
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 2009 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2009-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
 
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
diff --git a/jsf-ri/systest-per-webapp/flash/web/flash4.xhtml b/jsf-ri/systest-per-webapp/flash/web/flash4.xhtml
index 4131fb5..f9818ca 100644
--- a/jsf-ri/systest-per-webapp/flash/web/flash4.xhtml
+++ b/jsf-ri/systest-per-webapp/flash/web/flash4.xhtml
@@ -1,37 +1,43 @@
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 2009 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2009-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
 
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
diff --git a/jsf-ri/systest-per-webapp/flash/web/flash5.xhtml b/jsf-ri/systest-per-webapp/flash/web/flash5.xhtml
index a6d2eab..da7761b 100644
--- a/jsf-ri/systest-per-webapp/flash/web/flash5.xhtml
+++ b/jsf-ri/systest-per-webapp/flash/web/flash5.xhtml
@@ -1,38 +1,45 @@
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
- Copyright 2009 Sun Microsystems, Inc. All rights reserved.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
+    Copyright (c) 2009-2010 Oracle and/or its affiliates. All rights reserved.
 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
 
- Contributor(s):
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:h="http://java.sun.com/jsf/html"
diff --git a/jsf-ri/systest-per-webapp/flash/web/flash6.xhtml b/jsf-ri/systest-per-webapp/flash/web/flash6.xhtml
index 6c9f5c4..0cb8ba1 100644
--- a/jsf-ri/systest-per-webapp/flash/web/flash6.xhtml
+++ b/jsf-ri/systest-per-webapp/flash/web/flash6.xhtml
@@ -1,38 +1,45 @@
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 2009 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2009-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:h="http://java.sun.com/jsf/html"
diff --git a/jsf-ri/systest-per-webapp/flash/web/flash7.xhtml b/jsf-ri/systest-per-webapp/flash/web/flash7.xhtml
index d82384e..f554b4b 100644
--- a/jsf-ri/systest-per-webapp/flash/web/flash7.xhtml
+++ b/jsf-ri/systest-per-webapp/flash/web/flash7.xhtml
@@ -1,38 +1,45 @@
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 2009 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2009-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:h="http://java.sun.com/jsf/html"
diff --git a/jsf-ri/systest-per-webapp/flash/web/flash8.xhtml b/jsf-ri/systest-per-webapp/flash/web/flash8.xhtml
index d1d3b40..490b151 100644
--- a/jsf-ri/systest-per-webapp/flash/web/flash8.xhtml
+++ b/jsf-ri/systest-per-webapp/flash/web/flash8.xhtml
@@ -1,38 +1,45 @@
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 2009 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2009-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:h="http://java.sun.com/jsf/html"
diff --git a/jsf-ri/systest-per-webapp/flash/web/flash9.xhtml b/jsf-ri/systest-per-webapp/flash/web/flash9.xhtml
index a929237..94d6553 100644
--- a/jsf-ri/systest-per-webapp/flash/web/flash9.xhtml
+++ b/jsf-ri/systest-per-webapp/flash/web/flash9.xhtml
@@ -1,38 +1,45 @@
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 2009 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2009-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:h="http://java.sun.com/jsf/html"
diff --git a/jsf-ri/systest-per-webapp/flash/web/index.html b/jsf-ri/systest-per-webapp/flash/web/index.html
index e754f2c..f3fea1d 100644
--- a/jsf-ri/systest-per-webapp/flash/web/index.html
+++ b/jsf-ri/systest-per-webapp/flash/web/index.html
@@ -1,40 +1,45 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 2009 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2009-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!doctype html public "-//w3c//dtd html 4.0 transitional//en">
 <html>
 <head>
diff --git a/jsf-ri/systest-per-webapp/flash/web/index.xhtml b/jsf-ri/systest-per-webapp/flash/web/index.xhtml
index 20d4840..f39d352 100644
--- a/jsf-ri/systest-per-webapp/flash/web/index.xhtml
+++ b/jsf-ri/systest-per-webapp/flash/web/index.xhtml
@@ -1,37 +1,43 @@
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 2009 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2009-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
 
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
@@ -46,6 +52,8 @@
 <h:body bgcolor="white">
   <h:form prependId="false" id="form1">
 
+  #{sessionScopedBean.message}
+
   <c:set target="#{flash}" property="foo" value="fooValue" />
 
   <h:panelGrid columns="2" border="1" width="600">
diff --git a/jsf-ri/systest-per-webapp/formOmittedTrinidad/README.txt b/jsf-ri/systest-per-webapp/formOmittedTrinidad/README.txt
new file mode 100644
index 0000000..dfe1b2f
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/formOmittedTrinidad/README.txt
@@ -0,0 +1,11 @@
+This test has been written to test JAVASERVERFACES-1930.
+It has the following files that are necessary to get Trinidad working with Mojarra :
+1> trinidad-config.xml
+2> WEB-INF/lib/trinidad-api-2.0.0-beta-1.jar
+3> WEB-INF/lib/trinidad-impl-2.0.0-beta-1.jar
+4> changes to web.xml
+5> changes to faces-config.xml
+6> changes to the facelet formOmitted.xhtml to incorporate Trinidad components
+
+
+Please refer to http://myfaces.apache.org/trinidad/devguide/index.html
\ No newline at end of file
diff --git a/jsf-ri/systest-per-webapp/injection/jsf-injection.war b/jsf-ri/systest-per-webapp/injection/jsf-injection.war
new file mode 100644
index 0000000..775d4ec
Binary files /dev/null and b/jsf-ri/systest-per-webapp/injection/jsf-injection.war differ
diff --git a/jsf-ri/systest-per-webapp/injection/src/java/com/sun/faces/systest/Foo.java b/jsf-ri/systest-per-webapp/injection/src/java/com/sun/faces/systest/Foo.java
new file mode 100644
index 0000000..8f34d98
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/injection/src/java/com/sun/faces/systest/Foo.java
@@ -0,0 +1,45 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest;
+
+public class Foo {
+
+}
diff --git a/jsf-ri/systest-per-webapp/injection/src/java/com/sun/faces/systest/Injection.java b/jsf-ri/systest-per-webapp/injection/src/java/com/sun/faces/systest/Injection.java
new file mode 100644
index 0000000..897935c
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/injection/src/java/com/sun/faces/systest/Injection.java
@@ -0,0 +1,83 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.Resource;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.SessionScoped;
+import javax.inject.Inject;
+
+
+ at ManagedBean(name = "injection")
+ at SessionScoped
+
+public class Injection {
+
+   private boolean initCalled = false;
+
+   private int postConstructCalled = 0;
+
+   @Inject
+   private Foo foo;
+
+   @Inject
+   public void initialize(Foo foo) {
+      initCalled = foo != null;
+   }
+
+   public boolean isInitCalled() {
+      return initCalled;
+   }
+
+   public boolean isFooInjected() {
+      return foo != null;
+   }
+
+   @PostConstruct
+   public void concall() {
+       postConstructCalled++;
+   } 
+
+   public String getPostConstructCalled() {
+       return new Integer(postConstructCalled).toString();
+   }
+}
diff --git a/jsf-ri/systest-per-webapp/injection/src/java/com/sun/faces/systest/InjectionTestCase.java b/jsf-ri/systest-per-webapp/injection/src/java/com/sun/faces/systest/InjectionTestCase.java
new file mode 100644
index 0000000..96fdaf0
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/injection/src/java/com/sun/faces/systest/InjectionTestCase.java
@@ -0,0 +1,125 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest;
+
+
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import com.gargoylesoftware.htmlunit.html.HtmlAnchor;
+import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
+import com.sun.faces.htmlunit.HtmlUnitFacesTestCase;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+
+
+
+/**
+ * <p>Make sure that an application that replaces the ApplicationFactory
+ * but uses the decorator pattern to allow the existing ApplicationImpl
+ * to do the bulk of the requests works.</p>
+ */
+
+public class InjectionTestCase extends HtmlUnitFacesTestCase {
+
+
+    // ------------------------------------------------------------ Constructors
+
+
+    /**
+     * Construct a new instance of this test case.
+     *
+     * @param name Name of the test case
+     */
+    public InjectionTestCase(String name) {
+        super(name);
+    }
+
+
+    // ------------------------------------------------------ Instance Variables
+
+
+    // ---------------------------------------------------- Overall Test Methods
+
+
+    /**
+     * Set up instance variables required by this test case.
+     */
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+
+
+    /**
+     * Return the tests included in this test suite.
+     */
+    public static Test suite() {
+        return (new TestSuite(InjectionTestCase.class));
+    }
+
+
+    /**
+     * Tear down instance variables required by this test case.
+     */
+    public void tearDown() {
+        super.tearDown();
+    }
+
+
+    // ------------------------------------------------------ Instance Variables
+
+
+
+    // ------------------------------------------------- Individual Test Methods
+
+    /**
+     *
+     * <p>Verify that the bean is successfully resolved</p>
+     */
+
+    public void testInjection() throws Exception {
+
+        HtmlPage page = getPage("/faces/injection.xhtml");
+        String pageAsText = page.asText();
+        assertTrue(pageAsText.contains("Injection works"));
+        assertTrue(pageAsText.contains("Initializer works"));
+    }
+}
diff --git a/jsf-ri/systest-per-webapp/injection/web/WEB-INF/beans.xml b/jsf-ri/systest-per-webapp/injection/web/WEB-INF/beans.xml
new file mode 100644
index 0000000..e69de29
diff --git a/jsf-ri/systest-per-webapp/injection/web/WEB-INF/web.xml b/jsf-ri/systest-per-webapp/injection/web/WEB-INF/web.xml
new file mode 100755
index 0000000..6dd56ae
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/injection/web/WEB-INF/web.xml
@@ -0,0 +1,91 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<web-app version="3.0"
+         xmlns="http://java.sun.com/xml/ns/javaee"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+
+  <description>Test Webapp for jsf-extensions-run-time </description>
+  <display-name>jsf-run-time-test</display-name>
+
+  <context-param>
+    <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+    <param-value>server</param-value>
+  </context-param>
+  <context-param>
+        <param-name>com.sun.faces.enableThreading</param-name>
+        <param-value>true</param-value>
+    </context-param>
+  <context-param>
+    <param-name>javax.faces.DEFAULT_SUFFIX</param-name>
+    <param-value>.xhtml</param-value>
+  </context-param>
+  <context-param>
+      <param-name>facelets.DEVELOPMENT</param-name>
+      <param-value>true</param-value>
+  </context-param>
+  <context-param>
+      <param-name>javax.faces.PROJECT_STAGE</param-name>
+      <param-value>Development</param-value>
+  </context-param>
+  <context-param>
+      <param-name>com.sun.faces.validateXml</param-name>
+      <param-value>true</param-value>
+  </context-param>
+
+  <!-- Faces Servlet -->
+  <servlet>
+    <servlet-name>Faces Servlet</servlet-name>
+    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+    <load-on-startup>1</load-on-startup>
+  </servlet>
+
+  <!-- Faces Servlet Mapping -->
+  <servlet-mapping>
+    <servlet-name>Faces Servlet</servlet-name>
+    <url-pattern>/faces/*</url-pattern>
+    <url-pattern>*.jsf</url-pattern>
+  </servlet-mapping>
+
+</web-app>
diff --git a/jsf-ri/systest-per-webapp/injection/web/injection.xhtml b/jsf-ri/systest-per-webapp/injection/web/injection.xhtml
new file mode 100644
index 0000000..3c81bfb
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/injection/web/injection.xhtml
@@ -0,0 +1,19 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+    xmlns:ui="http://java.sun.com/jsf/facelets"
+    xmlns:h="http://java.sun.com/jsf/html"
+    xmlns:f="http://java.sun.com/jsf/core">
+
+ <head>
+  <title>Injection Test Page</title>
+ </head>
+ <body>
+   <f:view>
+     <h1>
+      <h:outputText value="#{injection.fooInjected ? 'Injection works' : 'Injection is broken'}"/>
+      <h:outputText value="#{injection.initCalled ? 'Initializer works' : 'Initializer is broken'}"/>
+      <h:outputText value="#{injection.postConstructCalled}"/>
+     </h1>
+   </f:view>
+ </body>
+</html>
diff --git a/jsf-ri/systest-per-webapp/invalid-mapping/src/java/com/sun/faces/systest/InvalidMappingTestCase.java b/jsf-ri/systest-per-webapp/invalid-mapping/src/java/com/sun/faces/systest/InvalidMappingTestCase.java
index d70f778..f7a175b 100644
--- a/jsf-ri/systest-per-webapp/invalid-mapping/src/java/com/sun/faces/systest/InvalidMappingTestCase.java
+++ b/jsf-ri/systest-per-webapp/invalid-mapping/src/java/com/sun/faces/systest/InvalidMappingTestCase.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -38,12 +42,12 @@ package com.sun.faces.systest;
 
 import com.gargoylesoftware.htmlunit.WebClient;
 import com.gargoylesoftware.htmlunit.html.HtmlPage;
-import com.sun.faces.htmlunit.AbstractTestCase;
+import com.sun.faces.htmlunit.HtmlUnitFacesTestCase;
 import junit.framework.Test;
 import junit.framework.TestSuite;
 
 
-public class InvalidMappingTestCase extends AbstractTestCase {
+public class InvalidMappingTestCase extends HtmlUnitFacesTestCase {
 
     public InvalidMappingTestCase(String name) {
         super(name);
@@ -79,7 +83,23 @@ public class InvalidMappingTestCase extends AbstractTestCase {
         WebClient client = new WebClient();
         client.setThrowExceptionOnFailingStatusCode(false);
         client.setTimeout(0);                
-        HtmlPage page = (HtmlPage) getPage("/test.jsp", client);       
-        assertTrue(page.asText().contains("The FacesServlet cannot have a url-pattern of /*"));
+        HtmlPage page = (HtmlPage) getPage("/test.jsp", client);
+        // this assert will fail on machines with system locale other then en-us: 
+        //assertTrue(page.asText(), page.asText().contains("The FacesServlet cannot have a url-pattern of /*"));
+
+        // therefore test fo language independent parts of the expected message only:
+        assertEquals(500, page.getWebResponse().getStatusCode());
+        String pageText = page.asText();
+        int pos = pageText.indexOf("javax.servlet.ServletException");
+        assertTrue(pos > 0);  // pageText contains "javax.servlet.ServletException"
+        pos += "javax.servlet.ServletException".length();
+        int end = pageText.indexOf("root cause");
+        String exceptionMsg = pageText.substring(pos, end);
+        // now exceptionMsg must contain the exception message of ServletException, this msg must contain
+        // "FacesServlet" once, "url-pattern" twice and "/*" once.
+        assertEquals(exceptionMsg, 2, exceptionMsg.split("FacesServlet").length); // split must result in two parts
+        assertEquals(exceptionMsg, 3, exceptionMsg.split("url-pattern").length); // split must result in three parts
+        assertEquals(exceptionMsg, 2, exceptionMsg.split("/\\*").length); // split must result in three parts
+        
     }
 }
diff --git a/jsf-ri/systest-per-webapp/invalid-mapping/web/WEB-INF/web.xml b/jsf-ri/systest-per-webapp/invalid-mapping/web/WEB-INF/web.xml
index 12ab22c..a0d4f83 100644
--- a/jsf-ri/systest-per-webapp/invalid-mapping/web/WEB-INF/web.xml
+++ b/jsf-ri/systest-per-webapp/invalid-mapping/web/WEB-INF/web.xml
@@ -1,39 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
+
 <web-app version="2.5"
          xmlns="http://java.sun.com/xml/ns/javaee"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
diff --git a/jsf-ri/systest-per-webapp/invalid-mapping/web/test.jsp b/jsf-ri/systest-per-webapp/invalid-mapping/web/test.jsp
index 1538566..14b5f1d 100644
--- a/jsf-ri/systest-per-webapp/invalid-mapping/web/test.jsp
+++ b/jsf-ri/systest-per-webapp/invalid-mapping/web/test.jsp
@@ -1,63 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
-The contents of this file are subject to the terms
-of the Common Development and Distribution License
-(the License). You may not use this file except in
-compliance with the License.
-
-You can obtain a copy of the License at
-https://javaserverfaces.dev.java.net/CDDL.html or
-legal/CDDLv1.0.txt.
-See the License for the specific language governing
-permission and limitations under the License.
-
-When distributing Covered Code, include this CDDL
-Header Notice in each file and include the License file
-at legal/CDDLv1.0.txt.
-If applicable, add the following below the CDDL Header,
-with the fields enclosed by brackets [] replaced by
-your own identifying information:
-"Portions Copyrighted [year] [name of copyright owner]"
-
-[Name of File] [ver.__] [Date]
-
-Copyright 2005 Sun Microsystems Inc. All Rights Reserved
--->
+
 
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
diff --git a/jsf-ri/systest-per-webapp/jar-ordering/src/java/com/sun/faces/systest/JarOrderingTestCase.java b/jsf-ri/systest-per-webapp/jar-ordering/src/java/com/sun/faces/systest/JarOrderingTestCase.java
index d3dece2..9b8820b 100644
--- a/jsf-ri/systest-per-webapp/jar-ordering/src/java/com/sun/faces/systest/JarOrderingTestCase.java
+++ b/jsf-ri/systest-per-webapp/jar-ordering/src/java/com/sun/faces/systest/JarOrderingTestCase.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -46,7 +50,7 @@ import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
 import com.gargoylesoftware.htmlunit.html.HtmlRadioButtonInput;
 import com.gargoylesoftware.htmlunit.html.HtmlSelect;
 import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
-import com.sun.faces.htmlunit.AbstractTestCase;
+import com.sun.faces.htmlunit.HtmlUnitFacesTestCase;
 import junit.framework.Test;
 import junit.framework.TestCase;
 import junit.framework.TestSuite;
@@ -62,7 +66,7 @@ import javax.faces.component.NamingContainer;
  * <p>Make sure that only unique view ids are saved in the session</p>
  */
 
-public class JarOrderingTestCase extends AbstractTestCase {
+public class JarOrderingTestCase extends HtmlUnitFacesTestCase {
 
 
     // ------------------------------------------------------------ Constructors
diff --git a/jsf-ri/systest-per-webapp/jar-ordering/web/WEB-INF/web.xml b/jsf-ri/systest-per-webapp/jar-ordering/web/WEB-INF/web.xml
index 54d9f07..f87a8ee 100644
--- a/jsf-ri/systest-per-webapp/jar-ordering/web/WEB-INF/web.xml
+++ b/jsf-ri/systest-per-webapp/jar-ordering/web/WEB-INF/web.xml
@@ -1,39 +1,44 @@
 <?xml version="1.0" encoding="ISO-8859-1"?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
 
 <web-app xmlns="http://java.sun.com/xml/ns/javaee"
diff --git a/jsf-ri/systest-per-webapp/jar-ordering/web/test.jsp b/jsf-ri/systest-per-webapp/jar-ordering/web/test.jsp
index b6af2da..9890716 100644
--- a/jsf-ri/systest-per-webapp/jar-ordering/web/test.jsp
+++ b/jsf-ri/systest-per-webapp/jar-ordering/web/test.jsp
@@ -1,63 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- The contents of this file are subject to the terms
- of the Common Development and Distribution License
- (the License). You may not use this file except in
- compliance with the License.
- 
- You can obtain a copy of the License at
- https://javaserverfaces.dev.java.net/CDDL.html or
- legal/CDDLv1.0.txt. 
- See the License for the specific language governing
- permission and limitations under the License.
- 
- When distributing Covered Code, include this CDDL
- Header Notice in each file and include the License file
- at legal/CDDLv1.0.txt.    
- If applicable, add the following below the CDDL Header,
- with the fields enclosed by brackets [] replaced by
- your own identifying information:
- "Portions Copyrighted [year] [name of copyright owner]"
- 
- [Name of File] [ver.__] [Date]
- 
- Copyright 2005 Sun Microsystems Inc. All Rights Reserved
--->
+
 
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
diff --git a/jsf-ri/systest-per-webapp/jsp-flash/src/java/com/sun/faces/systest/JspFlashTestCase.java b/jsf-ri/systest-per-webapp/jsp-flash/src/java/com/sun/faces/systest/JspFlashTestCase.java
index 439fb8e..29fede2 100644
--- a/jsf-ri/systest-per-webapp/jsp-flash/src/java/com/sun/faces/systest/JspFlashTestCase.java
+++ b/jsf-ri/systest-per-webapp/jsp-flash/src/java/com/sun/faces/systest/JspFlashTestCase.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -41,7 +45,7 @@ import com.sun.faces.systest.*;
 import com.gargoylesoftware.htmlunit.html.HtmlPage;
 import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
 import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
-import com.sun.faces.htmlunit.AbstractTestCase;
+import com.sun.faces.htmlunit.HtmlUnitFacesTestCase;
 import junit.framework.Test;
 import junit.framework.TestSuite;
 
@@ -54,7 +58,7 @@ import junit.framework.TestSuite;
  * to do the bulk of the requests works.</p>
  */
 
-public class JspFlashTestCase extends AbstractTestCase {
+public class JspFlashTestCase extends HtmlUnitFacesTestCase {
 
 
     // ------------------------------------------------------------ Constructors
diff --git a/jsf-ri/systest-per-webapp/jsp-flash/src/java/com/sun/faces/systest/model/Bean.java b/jsf-ri/systest-per-webapp/jsp-flash/src/java/com/sun/faces/systest/model/Bean.java
index a18d43c..5b041e6 100644
--- a/jsf-ri/systest-per-webapp/jsp-flash/src/java/com/sun/faces/systest/model/Bean.java
+++ b/jsf-ri/systest-per-webapp/jsp-flash/src/java/com/sun/faces/systest/model/Bean.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/systest-per-webapp/jsp-flash/web/WEB-INF/faces-config.xml b/jsf-ri/systest-per-webapp/jsp-flash/web/WEB-INF/faces-config.xml
index 9a25f0c..606f8fe 100644
--- a/jsf-ri/systest-per-webapp/jsp-flash/web/WEB-INF/faces-config.xml
+++ b/jsf-ri/systest-per-webapp/jsp-flash/web/WEB-INF/faces-config.xml
@@ -1,24 +1,44 @@
 <?xml version='1.0' encoding='UTF-8'?>
-
 <!--
- The contents of this file are subject to the terms 
- of the Common Development and Distribution License 
- (the "License").  You may not use this file except 
- in compliance with the License.
- 
- You can obtain a copy of the license at 
- glassfish/bootstrap/legal/CDDLv1.0.txt or 
- https://glassfish.dev.java.net/public/CDDLv1.0.html. 
- See the License for the specific language governing 
- permissions and limitations under the License.
- 
- When distributing Covered Code, include this CDDL 
- HEADER in each file and include the License file at 
- glassfish/bootstrap/legal/CDDLv1.0.txt.  If applicable, 
- add the following below this CDDL HEADER, with the 
- fields enclosed by brackets "[]" replaced with your 
- own identifying information: Portions Copyright [yyyy] 
- [name of copyright owner]
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
 
 <faces-config xmlns="http://java.sun.com/xml/ns/javaee"
diff --git a/jsf-ri/systest-per-webapp/jsp-flash/web/WEB-INF/web.xml b/jsf-ri/systest-per-webapp/jsp-flash/web/WEB-INF/web.xml
old mode 100644
new mode 100755
index 726184f..ef14736
--- a/jsf-ri/systest-per-webapp/jsp-flash/web/WEB-INF/web.xml
+++ b/jsf-ri/systest-per-webapp/jsp-flash/web/WEB-INF/web.xml
@@ -1,27 +1,45 @@
 <?xml version="1.0" encoding="UTF-8"?>
+<!--
 
-<!--  
-
- The contents of this file are subject to the terms 
- of the Common Development and Distribution License 
- (the "License").  You may not use this file except 
- in compliance with the License.
- 
- You can obtain a copy of the license at 
- glassfish/bootstrap/legal/CDDLv1.0.txt or 
- https://glassfish.dev.java.net/public/CDDLv1.0.html. 
- See the License for the specific language governing 
- permissions and limitations under the License.
- 
- When distributing Covered Code, include this CDDL 
- HEADER in each file and include the License file at 
- glassfish/bootstrap/legal/CDDLv1.0.txt.  If applicable, 
- add the following below this CDDL HEADER, with the 
- fields enclosed by brackets "[]" replaced with your 
- own identifying information: Portions Copyright [yyyy] 
- [name of copyright owner]
-
- -->
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
 
 <web-app xmlns="http://java.sun.com/xml/ns/javaee"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.5"
diff --git a/jsf-ri/systest-per-webapp/jsp-flash/web/bottomPanel.jsp b/jsf-ri/systest-per-webapp/jsp-flash/web/bottomPanel.jsp
index d3604b0..da52b22 100644
--- a/jsf-ri/systest-per-webapp/jsp-flash/web/bottomPanel.jsp
+++ b/jsf-ri/systest-per-webapp/jsp-flash/web/bottomPanel.jsp
@@ -1,38 +1,43 @@
 <%--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 --%>
+
 <p>Step through each one of the pages in the example and read the text.</p>
diff --git a/jsf-ri/systest-per-webapp/jsp-flash/web/flash2.jsp b/jsf-ri/systest-per-webapp/jsp-flash/web/flash2.jsp
index bf0de56..89af331 100644
--- a/jsf-ri/systest-per-webapp/jsp-flash/web/flash2.jsp
+++ b/jsf-ri/systest-per-webapp/jsp-flash/web/flash2.jsp
@@ -1,38 +1,42 @@
 <%--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 --%>
 
diff --git a/jsf-ri/systest-per-webapp/jsp-flash/web/flash3.jsp b/jsf-ri/systest-per-webapp/jsp-flash/web/flash3.jsp
index b446f23..40c5bd9 100644
--- a/jsf-ri/systest-per-webapp/jsp-flash/web/flash3.jsp
+++ b/jsf-ri/systest-per-webapp/jsp-flash/web/flash3.jsp
@@ -1,38 +1,42 @@
 <%--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 --%>
 
diff --git a/jsf-ri/systest-per-webapp/jsp-flash/web/flash4.jsp b/jsf-ri/systest-per-webapp/jsp-flash/web/flash4.jsp
index f232dbe..462966d 100644
--- a/jsf-ri/systest-per-webapp/jsp-flash/web/flash4.jsp
+++ b/jsf-ri/systest-per-webapp/jsp-flash/web/flash4.jsp
@@ -1,38 +1,42 @@
 <%--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 --%>
 
diff --git a/jsf-ri/systest-per-webapp/jsp-flash/web/home-flash.jsp b/jsf-ri/systest-per-webapp/jsp-flash/web/home-flash.jsp
index 515a74c..f0074a1 100644
--- a/jsf-ri/systest-per-webapp/jsp-flash/web/home-flash.jsp
+++ b/jsf-ri/systest-per-webapp/jsp-flash/web/home-flash.jsp
@@ -75,7 +75,7 @@ JavaServer Faces Extensions Flash
 
 
 
-<!-- BEGIN WRAPPER TABLE, 2 COLUMN, MAIN/RIGHT -->
+
 <table border="0" cellpadding="0" cellspacing="10" width="100%">
 <tr valign="top"><td>
 
diff --git a/jsf-ri/systest-per-webapp/jsp-flash/web/index.html b/jsf-ri/systest-per-webapp/jsp-flash/web/index.html
index a278d14..75aae9d 100644
--- a/jsf-ri/systest-per-webapp/jsp-flash/web/index.html
+++ b/jsf-ri/systest-per-webapp/jsp-flash/web/index.html
@@ -1,40 +1,45 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!doctype html public "-//w3c//dtd html 4.0 transitional//en">
 <html>
 <head>
diff --git a/jsf-ri/systest-per-webapp/jsp-flash/web/rightColumn.jsp b/jsf-ri/systest-per-webapp/jsp-flash/web/rightColumn.jsp
index bd02d5e..833f512 100644
--- a/jsf-ri/systest-per-webapp/jsp-flash/web/rightColumn.jsp
+++ b/jsf-ri/systest-per-webapp/jsp-flash/web/rightColumn.jsp
@@ -1,40 +1,45 @@
 <%--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 --%>
+
 <div class="navtitle">Example Files</div>
 
 <div class="bluearrows"><a href="ShowSource.jsp?filename=/home-flash.jsp">home-flash.jsp</a></div>
diff --git a/jsf-ri/systest-per-webapp/late-bindings/src/java/com/sun/faces/systest/LateBindingTestCase.java b/jsf-ri/systest-per-webapp/late-bindings/src/java/com/sun/faces/systest/LateBindingTestCase.java
index 0e93150..ead3538 100644
--- a/jsf-ri/systest-per-webapp/late-bindings/src/java/com/sun/faces/systest/LateBindingTestCase.java
+++ b/jsf-ri/systest-per-webapp/late-bindings/src/java/com/sun/faces/systest/LateBindingTestCase.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -36,7 +40,7 @@
 
 package com.sun.faces.systest;
 
-import com.sun.faces.htmlunit.AbstractTestCase;
+import com.sun.faces.htmlunit.HtmlUnitFacesTestCase;
 import com.gargoylesoftware.htmlunit.html.HtmlPage;
 import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
 import junit.framework.Test;
@@ -50,7 +54,7 @@ import java.util.List;
  * to do the bulk of the requests works.</p>
  */
 
-public class LateBindingTestCase extends AbstractTestCase {
+public class LateBindingTestCase extends HtmlUnitFacesTestCase {
 
     // ------------------------------------------------------------ Constructors
 
diff --git a/jsf-ri/systest-per-webapp/late-bindings/src/java/com/sun/faces/systest/late/Bean.java b/jsf-ri/systest-per-webapp/late-bindings/src/java/com/sun/faces/systest/late/Bean.java
index 70c4632..f3c8f20 100644
--- a/jsf-ri/systest-per-webapp/late-bindings/src/java/com/sun/faces/systest/late/Bean.java
+++ b/jsf-ri/systest-per-webapp/late-bindings/src/java/com/sun/faces/systest/late/Bean.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/systest-per-webapp/late-bindings/src/java/com/sun/faces/systest/late/LBConverter.java b/jsf-ri/systest-per-webapp/late-bindings/src/java/com/sun/faces/systest/late/LBConverter.java
index 4a2d919..dc53fa0 100644
--- a/jsf-ri/systest-per-webapp/late-bindings/src/java/com/sun/faces/systest/late/LBConverter.java
+++ b/jsf-ri/systest-per-webapp/late-bindings/src/java/com/sun/faces/systest/late/LBConverter.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/systest-per-webapp/late-bindings/src/java/com/sun/faces/systest/late/LBValidator.java b/jsf-ri/systest-per-webapp/late-bindings/src/java/com/sun/faces/systest/late/LBValidator.java
index ebd9110..e5bb2d1 100644
--- a/jsf-ri/systest-per-webapp/late-bindings/src/java/com/sun/faces/systest/late/LBValidator.java
+++ b/jsf-ri/systest-per-webapp/late-bindings/src/java/com/sun/faces/systest/late/LBValidator.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/systest-per-webapp/late-bindings/web/Test.jsp b/jsf-ri/systest-per-webapp/late-bindings/web/Test.jsp
index fc80935..e33d115 100644
--- a/jsf-ri/systest-per-webapp/late-bindings/web/Test.jsp
+++ b/jsf-ri/systest-per-webapp/late-bindings/web/Test.jsp
@@ -1,39 +1,44 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
---%>
 
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
 
 <%@ page contentType="text/html;charset=UTF-8" language="java" %>
 <%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %>
@@ -64,4 +69,4 @@
       </h:form>
   </f:view>
   </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/jsf-ri/systest-per-webapp/late-bindings/web/WEB-INF/faces-config.xml b/jsf-ri/systest-per-webapp/late-bindings/web/WEB-INF/faces-config.xml
index 5dd8cdd..e731b89 100644
--- a/jsf-ri/systest-per-webapp/late-bindings/web/WEB-INF/faces-config.xml
+++ b/jsf-ri/systest-per-webapp/late-bindings/web/WEB-INF/faces-config.xml
@@ -1,41 +1,45 @@
 <?xml version='1.0' encoding='UTF-8'?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
--->
 
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
 
 <faces-config xmlns="http://java.sun.com/xml/ns/javaee"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
diff --git a/jsf-ri/systest-per-webapp/late-bindings/web/WEB-INF/web.xml b/jsf-ri/systest-per-webapp/late-bindings/web/WEB-INF/web.xml
index e2824f7..d6516a1 100644
--- a/jsf-ri/systest-per-webapp/late-bindings/web/WEB-INF/web.xml
+++ b/jsf-ri/systest-per-webapp/late-bindings/web/WEB-INF/web.xml
@@ -1,39 +1,44 @@
 <?xml version="1.0" encoding="ISO-8859-1"?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
 
 <web-app xmlns="http://java.sun.com/xml/ns/javaee"
diff --git a/jsf-ri/systest-per-webapp/myfaces-uidata-component-state-test/src/java/com/sun/faces/systest/myfaces_uidata_component_state_test/InvokeOnComponentBean.java b/jsf-ri/systest-per-webapp/myfaces-uidata-component-state-test/src/java/com/sun/faces/systest/myfaces_uidata_component_state_test/InvokeOnComponentBean.java
new file mode 100644
index 0000000..fdf03db
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/myfaces-uidata-component-state-test/src/java/com/sun/faces/systest/myfaces_uidata_component_state_test/InvokeOnComponentBean.java
@@ -0,0 +1,119 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.myfaces_uidata_component_state_test;
+
+import com.sun.faces.util.FacesLogger;
+import java.util.logging.Logger;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.SessionScoped;
+import javax.faces.component.ContextCallback;
+import javax.faces.component.UIComponent;
+import javax.faces.component.UIInput;
+import javax.faces.component.UIViewRoot;
+import javax.faces.context.FacesContext;
+import javax.faces.event.ActionEvent;
+
+ at ManagedBean
+ at SessionScoped
+public class InvokeOnComponentBean {
+
+    private static Logger log = FacesLogger.APPLICATION_VIEW.getLogger();
+	
+	private String clientId;
+	
+	private String currentValue;
+
+	public String getCurrentValue() {
+		return currentValue;
+	}
+
+	public void setCurrentValue(String currentValue) {
+		this.currentValue = currentValue;
+	}
+
+	public String getClientId() {
+		return clientId;
+	}
+
+	public void setClientId(String clientId) {
+		this.clientId = clientId;
+	}
+	
+	int countInvoke = 0;
+	
+	public void invokeSetValueOnComponent(ActionEvent evt) {
+	
+		ContextCallback contextCallback = new LoadInputValue(); 
+		
+		FacesContext faces = FacesContext.getCurrentInstance();
+		UIViewRoot root = faces.getViewRoot();
+
+		boolean found = root.invokeOnComponent(faces, clientId, contextCallback);
+
+		if (!found)
+			this.setCurrentValue(clientId + " not found!");
+		
+		countInvoke++;
+		System.out.println("COUNT:"+countInvoke);
+	}
+
+	
+	public class LoadInputValue implements ContextCallback{
+		
+		public void invokeContextCallback(FacesContext ctx, UIComponent c) {
+			
+			if (c instanceof UIInput){
+				UIInput input = (UIInput) c;
+				//System.out.println("The currentValue:"+input.getValue());
+				Object value = input.getValue();
+				c.getAttributes().put("style", "background:red"); 				
+				c.getAttributes().put("styleClass", "redbackground");
+				if (value instanceof SimpleCity){
+					currentValue = ((SimpleCity)value).toString();
+				}else{
+					currentValue = (String) input.getValue();
+				}
+			}else{
+				//System.out.println("nocurrentValue:");
+			}
+		}
+	}
+}
diff --git a/jsf-ri/systest-per-webapp/myfaces-uidata-component-state-test/src/java/com/sun/faces/systest/myfaces_uidata_component_state_test/MyFacesUIDataTestCase.java b/jsf-ri/systest-per-webapp/myfaces-uidata-component-state-test/src/java/com/sun/faces/systest/myfaces_uidata_component_state_test/MyFacesUIDataTestCase.java
new file mode 100644
index 0000000..fd5944b
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/myfaces-uidata-component-state-test/src/java/com/sun/faces/systest/myfaces_uidata_component_state_test/MyFacesUIDataTestCase.java
@@ -0,0 +1,218 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.myfaces_uidata_component_state_test;
+
+import com.gargoylesoftware.htmlunit.html.*;
+import com.sun.faces.htmlunit.HtmlUnitFacesTestCase;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+public class MyFacesUIDataTestCase extends HtmlUnitFacesTestCase {
+
+    // ------------------------------------------------------------ Constructors
+
+
+    /**
+     * Construct a new instance of this test case.
+     *
+     * @param name Name of the test case
+     */
+    public MyFacesUIDataTestCase(String name) {
+        super(name);
+    }
+
+    // ------------------------------------------------------ Instance Variables
+
+    // ---------------------------------------------------- Overall Test Methods
+
+
+    /**
+     * Set up instance variables required by this test case.
+     */
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+
+
+    /**
+     * Return the tests included in this test suite.
+     */
+    public static Test suite() {
+        return (new TestSuite(MyFacesUIDataTestCase.class));
+    }
+
+
+    /**
+     * Tear down instance variables required by this test case.
+     */
+    public void tearDown() {
+        super.tearDown();
+    }
+
+    // ------------------------------------------------- Individual Test Methods
+
+    public void testShowProblem() throws Exception {
+        HtmlPage page = getPage("/showProblem.jsf");
+        assertNoRedText(page);
+
+        HtmlTextInput field = (HtmlTextInput) page.getElementById("form:inputClientId");
+        field.setValueAttribute("form:data:2:cities:3:city");
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("form:button");
+
+        page = button.click();
+
+        assertRedTextCount(page, 18);
+
+
+    }
+
+    public void testSimpleDatatable() throws Exception {
+        HtmlPage page = getPage("/simpleDatatable.jsf");
+        assertNoRedText(page);
+
+        HtmlTextInput field = (HtmlTextInput) page.getElementById("form:inputClientId");
+        field.setValueAttribute("form:data:1:isoCode");
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("form:button");
+
+        page = button.click();
+
+        assertRedTextCount(page, 1);
+
+
+    }
+
+    public void testNestedDatatable() throws Exception {
+        HtmlPage page = getPage("/nestedDatatable.jsf");
+        assertNoRedText(page);
+
+        HtmlTextInput field = (HtmlTextInput) page.getElementById("form:inputClientId");
+        field.setValueAttribute("form:data:2:cities:3:city");
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("form:button");
+
+        page = button.click();
+
+        assertRedTextCount(page, 1);
+
+
+    }
+
+    public void testSimpleDatatableCCResource() throws Exception {
+        HtmlPage page = getPage("/simpleDatatableCCResource.jsf");
+        assertNoRedText(page);
+
+        HtmlTextInput field = (HtmlTextInput) page.getElementById("form:inputClientId");
+        field.setValueAttribute("form:data:1:isoCode:text");
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("form:button");
+
+        page = button.click();
+
+        assertRedTextCount(page, 1);
+
+
+    }
+
+    public void testNestedDatatableCCResource() throws Exception {
+        HtmlPage page = getPage("/nestedDatatableCCResource.jsf");
+        assertNoRedText(page);
+
+        HtmlTextInput field = (HtmlTextInput) page.getElementById("form:inputClientId");
+        field.setValueAttribute("form:data:2:cities:3:city:text");
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("form:button");
+
+        page = button.click();
+
+        assertRedTextCount(page, 1);
+
+
+    }
+
+    public void testSimpleDatatableCCInsertChildren() throws Exception {
+        HtmlPage page = getPage("/simpleDatatableCCInsertChildren.jsf");
+        assertNoRedText(page);
+
+        HtmlTextInput field = (HtmlTextInput) page.getElementById("form:inputClientId");
+        field.setValueAttribute("form:data:1:text:isoCode");
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("form:button");
+
+        page = button.click();
+
+        assertRedTextCount(page, 1);
+
+
+    }
+
+    public void testNestedDatatableCCInsertChildren() throws Exception {
+        HtmlPage page = getPage("/nestedDatatableCCInsertChildren.jsf");
+        assertNoRedText(page);
+
+        HtmlTextInput field = (HtmlTextInput) page.getElementById("form:inputClientId");
+        field.setValueAttribute("form:data:2:cities:3:text:city");
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("form:button");
+
+        page = button.click();
+
+        assertRedTextCount(page, 1);
+
+
+    }
+
+    public void assertNoRedText(HtmlPage page) {
+        String xml = page.asXml();
+        assertFalse(xml.contains("class=\"redbackground\""));
+    }
+
+    public void assertRedTextCount(HtmlPage page, int redCount) {
+        String xml = page.asXml();
+        int i = 0, j = 0, k = 0;
+
+         while (-1 != j) {
+            j = xml.indexOf("class=\"redbackground\"", k);
+            if (j == -1) {
+                break;
+            }
+            i++;
+            k = j + 1;
+        }
+        assertEquals(redCount, i);
+    }
+
+
+}
diff --git a/jsf-ri/systest-per-webapp/myfaces-uidata-component-state-test/src/java/com/sun/faces/systest/myfaces_uidata_component_state_test/SimpleCity.java b/jsf-ri/systest-per-webapp/myfaces-uidata-component-state-test/src/java/com/sun/faces/systest/myfaces_uidata_component_state_test/SimpleCity.java
new file mode 100644
index 0000000..be69fb7
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/myfaces-uidata-component-state-test/src/java/com/sun/faces/systest/myfaces_uidata_component_state_test/SimpleCity.java
@@ -0,0 +1,110 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.myfaces_uidata_component_state_test;
+
+import java.io.Serializable;
+
+/**
+ * @author MBroekelmann
+ *
+ */
+public class SimpleCity implements Serializable
+{  
+    /**
+     * serial id for serialisation versioning
+     */
+    private static final long serialVersionUID = 1L;
+    private String mName;
+
+    private boolean selected;
+    
+	public boolean isSelected() {
+		return selected;
+	}
+
+	public void setSelected(boolean selected) {
+		this.selected = selected;
+	}
+	
+	public void unselect(){
+		setSelected(false);
+	}
+	
+
+	/**
+	 * 
+	 */
+	public SimpleCity(String name)
+	{
+		mName = name;
+	}
+
+	/**
+	 * 
+	 */
+	public SimpleCity()
+	{
+	}
+
+	/**
+	 * @return Returns the name.
+	 */
+	public String getName()
+	{
+		return mName;
+	}
+
+	/**
+	 * @param name The name to set.
+	 */
+	public void setName(String name)
+	{
+		mName = name;
+	}
+
+	/**
+	 * @see java.lang.Object#toString()
+	 */
+	public String toString()
+	{
+		return getName();
+	}
+}
diff --git a/jsf-ri/systest-per-webapp/myfaces-uidata-component-state-test/src/java/com/sun/faces/systest/myfaces_uidata_component_state_test/SimpleCountry.java b/jsf-ri/systest-per-webapp/myfaces-uidata-component-state-test/src/java/com/sun/faces/systest/myfaces_uidata_component_state_test/SimpleCountry.java
new file mode 100644
index 0000000..302aa76
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/myfaces-uidata-component-state-test/src/java/com/sun/faces/systest/myfaces_uidata_component_state_test/SimpleCountry.java
@@ -0,0 +1,234 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.myfaces_uidata_component_state_test;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.List;
+
+import javax.faces.component.UIComponent;
+import javax.faces.component.UIData;
+import javax.faces.component.html.HtmlDataTable;
+import javax.faces.event.ActionEvent;
+
+/**
+ * DOCUMENT ME!
+ * @author Thomas Spiegl (latest modification by $Author: lu4242 $)
+ * @version $Revision: 692962 $ $Date: 2008-09-08 02:10:51 +0200 (Mo, 08 Sep 2008) $
+ */
+public class SimpleCountry implements Serializable
+{
+    /**
+     * serial id for serialisation versioning
+     */
+    private static final long serialVersionUID = 1L;
+    private long _id;
+	private String _name;
+	private String _isoCode;
+	private BigDecimal _size;
+	private boolean _remove = false;
+	private List _cities;
+	private String mSortCitiesColumn;
+	private boolean mIsSortCitiesAscending;
+	
+	public SimpleCountry(long id, String name, String isoCode, BigDecimal size, SimpleCity[] cities)
+	{
+		_id = id;
+		_name = name;
+		_isoCode = isoCode;
+		_size = size;
+
+		if (cities != null)
+			_cities = new ArrayList(Arrays.asList(cities));
+		else
+			_cities = new ArrayList();
+	}
+
+	public long getId()
+	{
+		return _id;
+	}
+
+	public String getName()
+	{
+		return _name;
+	}
+
+	public String getIsoCode()
+	{
+		return _isoCode;
+	}
+
+	public BigDecimal getSize()
+	{
+		return _size;
+	}
+
+	public List getCities()
+	{
+		if (mSortCitiesColumn != null)
+		{
+			Collections.sort(_cities, new Comparator()
+			{
+				public int compare(Object arg0, Object arg1)
+				{
+					SimpleCity lhs;
+					SimpleCity rhs;
+					if (isSortCitiesAscending())
+					{
+						lhs = (SimpleCity) arg0;
+						rhs = (SimpleCity) arg1;
+					}
+					else
+					{
+						rhs = (SimpleCity) arg0;
+						lhs = (SimpleCity) arg1;
+					}
+					String lhsName = lhs.getName();
+					String rhsName = rhs.getName();
+					if (lhsName != null)
+					{
+						if(rhsName != null)
+						{
+							return lhsName.compareToIgnoreCase(rhsName);
+						}
+						return -1;
+					}
+					else if (rhsName != null)
+					{
+						return 1;
+					}
+					return 0;
+				}
+			});
+		}
+		return _cities;
+	}
+
+	public void setId(long id)
+	{
+		_id = id;
+	}
+
+	public void setIsoCode(String isoCode)
+	{
+		_isoCode = isoCode;
+	}
+
+	public void setName(String name)
+	{
+		_name = name;
+	}
+
+	public void setSize(BigDecimal size)
+	{
+		_size = size;
+	}
+
+	public boolean isRemove()
+	{
+		return _remove;
+	}
+
+	public void setRemove(boolean remove)
+	{
+		_remove = remove;
+	}
+
+	public String addCity()
+	{
+		getCities().add(new SimpleCity());
+		return null;
+	}
+
+	public void deleteCity(ActionEvent ev)
+	{
+		UIData datatable = findParentHtmlDataTable(ev.getComponent());
+		getCities().remove(datatable.getRowIndex() + datatable.getFirst());
+	}
+
+	public void setSortCitiesColumn(String columnName)
+	{
+		mSortCitiesColumn = columnName;
+	}
+
+	/**
+	 * @return Returns the sortCitiesColumn.
+	 */
+	public String getSortCitiesColumn()
+	{
+		return mSortCitiesColumn;
+	}
+
+	public boolean isSortCitiesAscending()
+	{
+		return mIsSortCitiesAscending;
+	}
+
+	/**
+	 * @param isSortCitiesAscending The isSortCitiesAscending to set.
+	 */
+	public void setSortCitiesAscending(boolean isSortCitiesAscending)
+	{
+		mIsSortCitiesAscending = isSortCitiesAscending;
+	}
+
+	/**
+	 * @param component
+	 * @return
+	 */
+	private HtmlDataTable findParentHtmlDataTable(UIComponent component)
+	{
+		if (component == null)
+		{
+			return null;
+		}
+		if (component instanceof HtmlDataTable)
+		{
+			return (HtmlDataTable) component;
+		}
+		return findParentHtmlDataTable(component.getParent());
+	}
+}
diff --git a/jsf-ri/systest-per-webapp/myfaces-uidata-component-state-test/src/java/com/sun/faces/systest/myfaces_uidata_component_state_test/SimpleCountryList.java b/jsf-ri/systest-per-webapp/myfaces-uidata-component-state-test/src/java/com/sun/faces/systest/myfaces_uidata_component_state_test/SimpleCountryList.java
new file mode 100644
index 0000000..c8ffe6a
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/myfaces-uidata-component-state-test/src/java/com/sun/faces/systest/myfaces_uidata_component_state_test/SimpleCountryList.java
@@ -0,0 +1,205 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.myfaces_uidata_component_state_test;
+
+import javax.faces.component.html.HtmlDataTable;
+
+import javax.faces.event.ActionEvent;
+import javax.faces.component.UIComponent;
+import javax.faces.component.UIData;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.SessionScoped;
+
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.HashMap;
+
+ at ManagedBean(name="countryList")
+ at SessionScoped
+public class SimpleCountryList
+{
+    private List _countries = new ArrayList();
+    static
+    {
+    }
+
+    SimpleCountry getSimpleCountry(long id)
+    {
+        for (int i = 0; i < _countries.size(); i++)
+        {
+            SimpleCountry country = (SimpleCountry)_countries.get(i);
+            if (country.getId() == id)
+            {
+                return country;
+            }
+        }
+        return null;
+    }
+
+    long getNewSimpleCountryId()
+    {
+        long maxId = 0;
+        for (int i = 0; i < _countries.size(); i++)
+        {
+            SimpleCountry country = (SimpleCountry)_countries.get(i);
+            if (country.getId() > maxId)
+            {
+                maxId = country.getId();
+            }
+        }
+        return maxId + 1;
+    }
+
+    void saveSimpleCountry(SimpleCountry simpleCountry)
+    {
+        if (simpleCountry.getId() == 0)
+        {
+            simpleCountry.setId(getNewSimpleCountryId());
+        }
+        boolean found = false;
+        for (int i = 0; i < _countries.size(); i++)
+        {
+            SimpleCountry country = (SimpleCountry)_countries.get(i);
+            if (country.getId() == simpleCountry.getId())
+            {
+                _countries.set(i, simpleCountry);
+                found = true;
+            }
+        }
+        if (!found)
+        {
+            _countries.add(simpleCountry);
+        }
+    }
+
+    void deleteSimpleCountry(SimpleCountry simpleCountry)
+    {
+        for (int i = 0; i < _countries.size(); i++)
+        {
+            SimpleCountry country = (SimpleCountry)_countries.get(i);
+            if (country.getId() == simpleCountry.getId())
+            {
+                _countries.remove(i);
+            }
+        }
+    }
+
+    public SimpleCountryList()
+    {
+        _countries.add(new SimpleCountry(1, "AUSTRIA", "AT", new BigDecimal(123L), createCities(new String[]{"Wien","Graz","Linz","Salzburg"})));
+        _countries.add(new SimpleCountry(2, "AZERBAIJAN", "AZ", new BigDecimal(535L), createCities(new String[]{"Baku","Sumgait","Qabala","Agdam"})));
+        _countries.add(new SimpleCountry(3, "BAHAMAS", "BS", new BigDecimal(1345623L), createCities(new String[]{"Nassau","Alice Town","Church Grove","West End"})));
+        _countries.add(new SimpleCountry(4, "BAHRAIN", "BH", new BigDecimal(346L), createCities(new String[]{"Bahrain"})));
+        _countries.add(new SimpleCountry(5, "BANGLADESH", "BD", new BigDecimal(456L), createCities(new String[]{"Chittagong","Chandpur","Bogra","Feni"})));
+        _countries.add(new SimpleCountry(6, "BARBADOS", "BB", new BigDecimal(45645L), createCities(new String[]{"Grantley Adams"})));
+    }
+
+    /**
+	 * @param names
+	 * @return
+	 */
+	private SimpleCity[] createCities(String[] names)
+	{
+		SimpleCity[] result = new SimpleCity[names.length];
+		for (int i = 0; i < result.length; i++)
+		{
+			result[i] = new SimpleCity(names[i]);
+		}
+		return result;
+	}
+
+	public List getCountries()
+    {
+        return _countries;
+    }
+    
+    public Map getCountryMap()
+    {
+        Map map = new HashMap();
+
+        List li = getCountries();
+
+        for (int i = 0; i < li.size(); i++)
+        {
+            SimpleCountry simpleCountry = (SimpleCountry) li.get(i);
+            map.put(simpleCountry.getIsoCode(),simpleCountry.getName());
+        }
+
+        return map;
+    }
+    
+    public void setCountries(List countries)
+    {
+        _countries = countries;
+    }
+
+    public String addCountry()
+    {
+        List list = getCountries();
+        list.add(new SimpleCountry(list.size() + 1, "", "", new BigDecimal(0), createCities(new String[] {})));
+        return "ok";
+    }
+
+	public void deleteCountry(ActionEvent ev)
+	{
+		UIData datatable = findParentHtmlDataTable(ev.getComponent());
+		getCountries().remove(datatable.getRowIndex() + datatable.getFirst());
+	}
+
+	/**
+	 * @param component
+	 * @return
+	 */
+	private HtmlDataTable findParentHtmlDataTable(UIComponent component)
+	{
+		if (component == null)
+		{
+			return null;
+		}
+		if (component instanceof HtmlDataTable)
+		{
+			return (HtmlDataTable) component;
+		}
+		return findParentHtmlDataTable(component.getParent());
+	}
+}
diff --git a/jsf-ri/systest-per-webapp/myfaces-uidata-component-state-test/src/java/com/sun/faces/systest/myfaces_uidata_component_state_test/example_messages.properties b/jsf-ri/systest-per-webapp/myfaces-uidata-component-state-test/src/java/com/sun/faces/systest/myfaces_uidata_component_state_test/example_messages.properties
new file mode 100644
index 0000000..ffaa8d0
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/myfaces-uidata-component-state-test/src/java/com/sun/faces/systest/myfaces_uidata_component_state_test/example_messages.properties
@@ -0,0 +1,236 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
+welcome = Welcome to
+today = Today's date is {0,date,short}.
+
+
+nav_Home            = Home
+nav_Examples        = Examples
+nav_Sample_1        = Sample 1
+nav_Sample_2        = Sample 2
+nav_aliasBean       = Alias Bean
+nav_buffer          = Buffer
+nav_dataTable       = Master/Detail Example
+nav_sortTable       = Sortable Table
+nav_Documentation   = Documentation
+nav_Features        = Features
+nav_Info            = Info
+nav_Contact         = Contact
+nav_Copyright       = Copyright
+nav_Options         = Options
+nav_Components      = Components
+nav_Selectbox       = Selectboxes
+nav_FileUpload      = File upload
+nav_TabbedPane      = Tabbed Pane
+nav_Calendar        = Calendar
+nav_Popup           = Popup
+nav_JsListener      = JavaScript Listener
+nav_dataList        = Dynamic Lists
+nav_tree            = Tree
+nav_tree2           = Tree2
+nav_treeTable       = Tree Table
+nav_Validate		= Validations
+nav_rssTicker		= RssTicker
+nav_dataScroller    = DataScroller
+nav_Date			= Date
+nav_panelstack      = Panel Stack
+nav_css             = Stylesheet
+nav_newspaperTable  = Newspaper Table
+nav_InputHtml		= Html Editor
+nav_InputTextHelp	= Input Text Help
+nav_forceId         = ForceId
+nav_selectOneCountry= Select a country box
+nav_panelnavigation = PanelNavigation Menu
+
+nav_swapimage       = SwapImage
+nav_crossDataTable  = Crosstable
+
+# buttons
+
+button_save = Save
+button_apply = Apply
+button_cancel = Cancel
+button_delete = Delete
+button_submit = Submit
+
+alt_logo = MyFaces - the open source JSF implementation
+
+option_lang = View this page in
+option_layout = Layout
+
+empty_selitem = Please select ...
+
+# sample1
+
+sample1_form = A Form
+sample1_another_form = Another Form
+sample1_validation = Validation
+sample1_number = Number
+sample1_add = Add them
+sample1_sub = Subtract them
+sample1_add_link = Add them by clicking this link
+sample1_sub_link = Subtract them by clicking this link
+sample1_result = Result
+sample1_text = Text
+sample1_uppercase = Make it uppercase
+sample1_lowercase = Make it lowercase
+sample1_disable_validation = Disable validation
+sample1_enable_validation = Enable validation
+
+# sample2
+
+sample2_add_quote = Add quotes
+sample2_remove_quote = Remove quotes
+sample2_select_quote = select a quote character
+sample2_select_unquote = select an unquote character
+
+# components examples
+
+label_cars = Model
+label_colors = Colors
+label_color = Color
+label_extras = Extras
+button_calcprice = Calculate price
+msg_price = {0,choice,0#Configure your fondest wish!|1< Your price: \u20ac�{0}}
+color_black = black
+color_blue = blue
+color_marine = marine blue
+color_red = red
+label_interior_color = Interior Color
+extra_aircond = Aircondition
+extra_sideab = Sideairbag
+extra_mirrowheat = Heated Mirrors
+extra_leaderseat = Leatherseats
+discount_0 = I want no rebate
+discount_1 = I want an aggregated rebate
+discount_2 = I want a corporate client rebate
+discount_2_0 = BeachBoys are great
+discount_2_1 = Red Hot Chillis are better
+discount_2_2 = My favourite Band
+radio_hint = This Radio is a myfaces extension - you can use html code here!
+sort_cartype = Car type
+sort_carcolor = Car color
+sales_tax = Sales Tax
+doors=Doors
+
+validate_email = Email
+validate_credit = Credit Card
+validate_url = Url
+validate_regexp = Regular Expression
+validate_equal = Equal
+validate_compare_to = Compare To
+
+label_country_name = Country
+label_country_iso = Iso-Code
+label_country_cities = Cities
+new_country = Add New Country \uffbb
+country_edit_table = Edit all Countries \uffbb
+label_country_city_add = Add new City
+label_country_city_delete = delete
+label_city = City
+
+dataList_simple = Simple list
+dataList_ul = Unordered list
+dataList_ol = Ordered list
+
+dataScroller_pages = {0} Cars found, displaying {1} cars, from {2} to {3}. Page {4} / {5}
+date_comp_header=Date input tag
+date_comp_text1=Gimme a date
+date_comp_text2=Date is:
+date_comp_text3=Gimme a time
+date_comp_text4=Time is:
+date_comp_text5=Gimme a date & time
+date_comp_text6=Date time is:
+date_comp_button=Update
+popup_today_string=Today is :
+popup_week_string=Wk
+
+
+selectBoxPanel=SelectBox Panel
+treePanel=Tree Panel
+
+fileupload_title=File upload
+fileupload_gimmeimage=Gimme an image:
+fileupload_name=and give it a name: 
+fileupload_button=load it up
+fileupload_msg1=The image you loaded up:
+fileupload_msg2=Link to download (and save) the image :
+fileupload_msg3=Link to show the image directly:
+fileupload_dlimg=Download image
+
+tabbed_tab1=Tab1
+tabbed_tab2=Tab2
+tabbed_tab3=Tab3
+tabbed_visible1=Tab 1 visible
+tabbed_visible2=Tab 2 visible
+tabbed_visible3=Tab 3 visible
+tabbed_submit=Common submit button
+tabbed_common= A common paragraph 
+
+js_popup=Calendar as a JavaScript popup.
+js_form=Calendar as a form.
+js_submit=Submit
+css_msg=A simple test for the 
+
+forceOne=Value 1
+forceTwo=Value 2 (with forceId)
+
+crosstable_field_column=column label
+crosstable_add_column=add a column
+crosstable_remove_column=remove the column
+crosstable_save_values=save values
+
+panelnav_products = Product Information
+panelnav_serach = � Search Products
+panelnav_serach_acc = � Search Accessory
+panelnav_search_adv = � Advanced Serach
+panelnav_serach1 = Search Products
+panelnav_serach_acc1 = Search Accessory
+panelnav_search_adv1 = Advanced Serach
+panelnav_shop = Online Shop
+panelnav_corporate = Corporate Information
+panelnav_news = � News Releases
+panelnav_investor = � Inverstors Relations
+panelnav_news1 = News Releases
+panelnav_investor1 = Inverstors Relations
+panelnav_contact = Contact
+
+external_link = http://www.irian.at
diff --git a/jsf-ri/systest-per-webapp/myfaces-uidata-component-state-test/web/WEB-INF/faces-config.xml b/jsf-ri/systest-per-webapp/myfaces-uidata-component-state-test/web/WEB-INF/faces-config.xml
new file mode 100644
index 0000000..7bd4047
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/myfaces-uidata-component-state-test/web/WEB-INF/faces-config.xml
@@ -0,0 +1,54 @@
+<?xml version="1.0"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<faces-config version="2.0" xmlns="http://java.sun.com/xml/ns/javaee"
+  xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd">
+  <application>
+    <resource-bundle>
+      <base-name>com.sun.faces.systest.myfaces_uidata_component_state_test.example_messages</base-name>
+      <var>bundle</var>
+    </resource-bundle>
+  </application>
+
+</faces-config>
diff --git a/jsf-ri/systest-per-webapp/myfaces-uidata-component-state-test/web/WEB-INF/web.xml b/jsf-ri/systest-per-webapp/myfaces-uidata-component-state-test/web/WEB-INF/web.xml
new file mode 100644
index 0000000..04d2097
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/myfaces-uidata-component-state-test/web/WEB-INF/web.xml
@@ -0,0 +1,156 @@
+<?xml version="1.0"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<web-app xmlns="http://java.sun.com/xml/ns/javaee"
+        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
+        version="2.5">
+
+    <description>MyProject web.xml</description>
+
+    <!-- JSF standard parameters -->
+    <context-param>
+        <description>Project stage for the application (new in 2.0). Expects one of
+            the following values: Development, Production, SystemTest, UnitTest
+        </description>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>Development</param-value>
+    </context-param>
+    <context-param>
+        <description>
+            If this parameter is set to true and the submitted value of a component is
+            the empty string, the submitted value will be set to null
+        </description>
+        <param-name>javax.faces.INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL</param-name>
+        <param-value>true</param-value>
+    </context-param>
+    <context-param>
+        <description>State saving method: "client" or "server" (= default)
+            See JSF Specification 2.5.3</description>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>client</param-value>
+    </context-param>
+
+    <!-- MyFaces specific parameters -->
+    <context-param>
+        <description>Only applicable if state saving method is "server" (= default).
+            Defines the amount (default = 20) of the latest views are stored in session.</description>
+        <param-name>org.apache.myfaces.NUMBER_OF_VIEWS_IN_SESSION</param-name>
+        <param-value>20</param-value>
+    </context-param>
+    <context-param>
+        <description>Only applicable if state saving method is "server" (= default).
+            If true (default) the state will be serialized to a byte stream before it
+            is written to the session.
+            If false the state will not be serialized to a byte stream.</description>
+        <param-name>org.apache.myfaces.SERIALIZE_STATE_IN_SESSION</param-name>
+        <param-value>true</param-value>
+    </context-param>
+    <context-param>
+        <description>Only applicable if state saving method is "server" (= default) and if
+            org.apache.myfaces.SERIALIZE_STATE_IN_SESSION is true (= default)
+            If true (default) the serialized state will be compressed before it
+            is written to the session. If false the state will not be compressed.</description>
+        <param-name>org.apache.myfaces.COMPRESS_STATE_IN_SESSION</param-name>
+        <param-value>true</param-value>
+    </context-param>
+    <context-param>
+        <description>This parameter tells MyFaces if javascript code should be allowed in the
+            rendered HTML output.
+            If javascript is allowed, command_link anchors will have javascript code
+            that submits the corresponding form.
+            If javascript is not allowed, the state saving info and nested parameters
+            will be added as url parameters.
+            Default: "true"</description>
+        <param-name>org.apache.myfaces.ALLOW_JAVASCRIPT</param-name>
+        <param-value>true</param-value>
+    </context-param>
+    <context-param>
+        <param-name>org.apache.myfaces.DETECT_JAVASCRIPT</param-name>
+        <param-value>false</param-value>
+    </context-param>
+    <context-param>
+        <description>If true, rendered HTML code will be formatted, so that it is "human readable".
+            i.e. additional line separators and whitespace will be written, that do not
+            influence the HTML code.
+            Default: "true"</description>
+        <param-name>org.apache.myfaces.PRETTY_HTML</param-name>
+        <param-value>true</param-value>
+    </context-param>
+    <context-param>
+        <description>If true, a javascript function will be rendered that is able to restore the
+            former vertical scroll on every request. Convenient feature if you have pages
+            with long lists and you do not want the browser page to always jump to the top
+            if you trigger a link or button action that stays on the same page.
+            Default: "false"</description>
+        <param-name>org.apache.myfaces.AUTO_SCROLL</param-name>
+        <param-value>true</param-value>
+    </context-param>
+    <context-param>
+        <description>Used for encrypting view state. Only relevant for client side
+            state saving. See MyFaces wiki/web site documentation for instructions
+            on how to configure an application for diffenent encryption strengths.
+        </description>
+        <param-name>org.apache.myfaces.SECRET</param-name>
+        <param-value>NzY1NDMyMTA=</param-value>
+    </context-param>
+
+    <!-- Faces Servlet -->
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+
+    <!-- Faces Servlet Mapping -->
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>*.jsf</url-pattern>
+    </servlet-mapping>
+
+    <!-- Welcome files -->
+    <welcome-file-list>
+        <welcome-file>index.html</welcome-file>
+    </welcome-file-list>
+
+</web-app>
diff --git a/jsf-ri/systest-per-webapp/myfaces-uidata-component-state-test/web/home.xhtml b/jsf-ri/systest-per-webapp/myfaces-uidata-component-state-test/web/home.xhtml
new file mode 100644
index 0000000..e485446
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/myfaces-uidata-component-state-test/web/home.xhtml
@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+<h:head>
+    <title>Myfaces Test For UIData Component State Fix</title>
+</h:head>
+<h:body>
+    <h:outputStylesheet name="style.css" library="css"/>
+    <div id="container">
+        <h1>Myfaces Test For UIData Component State Fix</h1>
+        <h:panelGrid id="grid" columns="1">
+           <h:outputLink value="showProblem.jsf">
+               <h:outputText value="Example that show the problem" />
+           </h:outputLink>
+           <h:outputLink value="simpleDatatable.jsf">
+               <h:outputText value="Example with simple datatable" />
+           </h:outputLink>
+           <h:outputLink value="nestedDatatable.jsf">
+               <h:outputText value="Example with nested datatable" />
+           </h:outputLink>
+           <h:outputLink value="simpleDatatableCCResource.jsf">
+               <h:outputText value="Example with simple datatable and composite component with relocatable resource" />
+           </h:outputLink>
+           <h:outputLink value="nestedDatatableCCResource.jsf">
+               <h:outputText value="Example with nested datatable and composite component with relocatable resource" />
+           </h:outputLink>
+           <h:outputLink value="simpleDatatableCCInsertChildren.jsf">
+               <h:outputText value="Example with simple datatable and composite component using cc:insertChildren" />
+           </h:outputLink>
+           <h:outputLink value="nestedDatatableCCInsertChildren.jsf">
+               <h:outputText value="Example with nested datatable and composite component using cc:insertChildren" />
+           </h:outputLink>
+        </h:panelGrid>
+    </div>
+</h:body>
+</html>
diff --git a/jsf-ri/systest-per-webapp/myfaces-uidata-component-state-test/web/index.html b/jsf-ri/systest-per-webapp/myfaces-uidata-component-state-test/web/index.html
new file mode 100644
index 0000000..b22c9ba
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/myfaces-uidata-component-state-test/web/index.html
@@ -0,0 +1,5 @@
+<html>
+<head>
+    <meta http-equiv="refresh" content="0; URL=home.jsf">
+</head>
+</html>
\ No newline at end of file
diff --git a/jsf-ri/systest-per-webapp/myfaces-uidata-component-state-test/web/nestedDatatable.xhtml b/jsf-ri/systest-per-webapp/myfaces-uidata-component-state-test/web/nestedDatatable.xhtml
new file mode 100644
index 0000000..2cf84bc
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/myfaces-uidata-component-state-test/web/nestedDatatable.xhtml
@@ -0,0 +1,126 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:h="http://java.sun.com/jsf/html"
+ xmlns:f="http://java.sun.com/jsf/core"
+ >
+<h:head>
+<style type="text/css">
+.redbackground
+{
+    background: red;
+}
+</style>
+</h:head>
+<h:body>
+    <h:outputStylesheet name="style.css" library="css"/>
+    <h:outputStylesheet name="basic.css"/>
+    <div id="container">
+    <h1>Myfaces Test For UIData Component State Fix: Example using nested datatable</h1>
+    
+    <p>
+        Try with form:data:2:cities:3:city and click go, if everything is fine only 
+        one text field will become red. 
+    </p>
+    
+    <h:form id="form">
+       <h:panelGrid id="panelGrid2" columns="2">        
+            <h:outputLabel for="inputClientId" value="Enter a client id:"/>
+            <h:inputText id="inputClientId" value="#{invokeOnComponentBean.clientId}" />
+            <h:outputLabel for="button" value="Get value using invokeOnComponent and set red background"/>
+            <h:commandButton id="button" value="GO!"
+                actionListener="#{invokeOnComponentBean.invokeSetValueOnComponent}"/>
+            <h:outputLabel for="curValue1" value="Value of this component:"/>
+            <h:outputText id="curValue1" value="#{invokeOnComponentBean.currentValue}" />
+       </h:panelGrid>
+        
+       <h:outputLabel for="input3" value="form:input3"/>
+       <h:inputText id="input3" value="input3"></h:inputText>
+    
+        <h:dataTable id="data" styleClass="standardTable"
+            headerClass="standardTable_Header" footerClass="standardTable_Header"
+            rowClasses="standardTable_Row1,standardTable_Row2"
+            columnClasses="standardTable_Column,standardTable_ColumnCentered,standardTable_Column"
+            var="country" value="#{countryList.countries}" rowStatePreserved="true">
+            <h:column headerClass="customTable_header"
+                footerClass="customTable_footer">
+                <f:facet name="header">
+                    <h:outputText value="#{bundle['label_country_name']}" />
+                </f:facet>
+                <h:outputText value="#{country.name}" />
+                <f:facet name="footer">
+                    <h:outputText value="FOOTER" />
+                </f:facet>
+            </h:column>
+
+            <h:column>
+                <f:facet name="header">
+                    <h:outputText value="#{bundle['label_country_iso']}" />
+                </f:facet>              
+                <h:inputText id="isoCode" value="#{country.isoCode}" />
+            </h:column>
+
+            <h:column>
+                <f:facet name="header">
+                    <h:outputText value="#{bundle['label_country_cities']}" />
+                </f:facet>
+                <h:dataTable id="cities" styleClass="standardTable_Column"
+                    var="city" value="#{country.cities}" rowStatePreserved="true">
+                    <h:column>
+                        <h:inputText id="city" value="#{city}" style="font-size: 11px" />
+                    </h:column>
+                </h:dataTable>
+            </h:column>
+        </h:dataTable>
+    </h:form>
+    
+    <h:outputLink value="home.jsf">
+       <h:outputText value="HOME" />
+    </h:outputLink>
+    
+    </div>
+</h:body>
+</html>
diff --git a/jsf-ri/systest-per-webapp/myfaces-uidata-component-state-test/web/nestedDatatableCCInsertChildren.xhtml b/jsf-ri/systest-per-webapp/myfaces-uidata-component-state-test/web/nestedDatatableCCInsertChildren.xhtml
new file mode 100644
index 0000000..4f02288
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/myfaces-uidata-component-state-test/web/nestedDatatableCCInsertChildren.xhtml
@@ -0,0 +1,131 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:h="http://java.sun.com/jsf/html"
+ xmlns:f="http://java.sun.com/jsf/core"
+ xmlns:test="http://java.sun.com/jsf/composite/test"
+ >
+<h:head>
+<style type="text/css">
+.redbackground
+{
+    background: red;
+}
+</style>
+</h:head>
+<h:body>
+    <h:outputStylesheet name="style.css" library="css"/>
+    <h:outputStylesheet name="basic.css"/>
+    <div id="container">
+    <h1>Myfaces Test For UIData Component State Fix: Example using nested datatable</h1>
+    
+    <p>
+        Try with form:data:2:cities:3:text:city and click go, if everything is fine only 
+        one text field will become red. 
+    </p>
+    
+    <h:form id="form">
+       <h:panelGrid id="panelGrid2" columns="2">        
+            <h:outputLabel for="inputClientId" value="Enter a client id:"/>
+            <h:inputText id="inputClientId" value="#{invokeOnComponentBean.clientId}" />
+            <h:outputLabel for="button" value="Get value using invokeOnComponent and set red background"/>
+            <h:commandButton id="button" value="GO!"
+                actionListener="#{invokeOnComponentBean.invokeSetValueOnComponent}"/>
+            <h:outputLabel for="curValue1" value="Value of this component:"/>
+            <h:outputText id="curValue1" value="#{invokeOnComponentBean.currentValue}" />
+       </h:panelGrid>
+        
+       <h:outputLabel for="input3" value="form:input3"/>
+       <h:inputText id="input3" value="input3"></h:inputText>
+    
+        <h:dataTable id="data" styleClass="standardTable"
+            headerClass="standardTable_Header" footerClass="standardTable_Header"
+            rowClasses="standardTable_Row1,standardTable_Row2"
+            columnClasses="standardTable_Column,standardTable_ColumnCentered,standardTable_Column"
+            var="country" value="#{countryList.countries}" rowStatePreserved="true">
+            <h:column headerClass="customTable_header"
+                footerClass="customTable_footer">
+                <f:facet name="header">
+                    <h:outputText value="#{bundle['label_country_name']}" />
+                </f:facet>
+                <h:outputText value="#{country.name}" />
+                <f:facet name="footer">
+                    <h:outputText value="FOOTER" />
+                </f:facet>
+            </h:column>
+
+            <h:column>
+                <f:facet name="header">
+                    <h:outputText value="#{bundle['label_country_iso']}" />
+                </f:facet>              
+                <test:simpleInsertChildren id="text">
+                    <h:inputText id="isoCode" value="#{country.isoCode}" />
+                </test:simpleInsertChildren>
+            </h:column>
+
+            <h:column>
+                <f:facet name="header">
+                    <h:outputText value="#{bundle['label_country_cities']}" />
+                </f:facet>
+                <h:dataTable id="cities" styleClass="standardTable_Column"
+                    var="city" value="#{country.cities}" rowStatePreserved="true">
+                    <h:column>
+                        <test:simpleInsertChildren id="text">
+                            <h:inputText id="city" value="#{city}" style="font-size: 11px" />
+                        </test:simpleInsertChildren>
+                    </h:column>
+                </h:dataTable>
+            </h:column>
+        </h:dataTable>
+    </h:form>
+    
+    <h:outputLink value="home.jsf">
+       <h:outputText value="HOME" />
+    </h:outputLink>
+    
+    </div>
+</h:body>
+</html>
diff --git a/jsf-ri/systest-per-webapp/myfaces-uidata-component-state-test/web/nestedDatatableCCResource.xhtml b/jsf-ri/systest-per-webapp/myfaces-uidata-component-state-test/web/nestedDatatableCCResource.xhtml
new file mode 100644
index 0000000..0b18929
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/myfaces-uidata-component-state-test/web/nestedDatatableCCResource.xhtml
@@ -0,0 +1,127 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:h="http://java.sun.com/jsf/html"
+ xmlns:f="http://java.sun.com/jsf/core"
+ xmlns:test="http://java.sun.com/jsf/composite/test"
+ >
+<h:head>
+<style type="text/css">
+.redbackground
+{
+    background: red;
+}
+</style>
+</h:head>
+<h:body>
+    <h:outputStylesheet name="style.css" library="css"/>
+    <h:outputStylesheet name="basic.css"/>
+    <div id="container">
+    <h1>Myfaces Test For UIData Component State Fix: Example using nested datatable and composite component</h1>
+    
+    <p>
+        Try with form:data:2:cities:3:city:text and click go, if everything is fine only 
+        one text field will become red. 
+    </p>
+    
+    <h:form id="form">
+       <h:panelGrid id="panelGrid2" columns="2">        
+            <h:outputLabel for="inputClientId" value="Enter a client id:"/>
+            <h:inputText id="inputClientId" value="#{invokeOnComponentBean.clientId}" />
+            <h:outputLabel for="button" value="Get value using invokeOnComponent and set red background"/>
+            <h:commandButton id="button" value="GO!"
+                actionListener="#{invokeOnComponentBean.invokeSetValueOnComponent}"/>
+            <h:outputLabel for="curValue1" value="Value of this component:"/>
+            <h:outputText id="curValue1" value="#{invokeOnComponentBean.currentValue}" />
+       </h:panelGrid>
+        
+       <h:outputLabel for="input3" value="form:input3"/>
+       <h:inputText id="input3" value="input3"></h:inputText>
+    
+        <h:dataTable id="data" styleClass="standardTable"
+            headerClass="standardTable_Header" footerClass="standardTable_Header"
+            rowClasses="standardTable_Row1,standardTable_Row2"
+            columnClasses="standardTable_Column,standardTable_ColumnCentered,standardTable_Column"
+            var="country" value="#{countryList.countries}" rowStatePreserved="true">
+            <h:column headerClass="customTable_header"
+                footerClass="customTable_footer">
+                <f:facet name="header">
+                    <h:outputText value="#{bundle['label_country_name']}" />
+                </f:facet>
+                <h:outputText value="#{country.name}" />
+                <f:facet name="footer">
+                    <h:outputText value="FOOTER" />
+                </f:facet>
+            </h:column>
+
+            <h:column>
+                <f:facet name="header">
+                    <h:outputText value="#{bundle['label_country_iso']}" />
+                </f:facet>              
+                <test:inputText id="isoCode" value="#{country.isoCode}"/>
+            </h:column>
+
+            <h:column>
+                <f:facet name="header">
+                    <h:outputText value="#{bundle['label_country_cities']}" />
+                </f:facet>
+                <h:dataTable id="cities" styleClass="standardTable_Column"
+                    var="city" value="#{country.cities}" rowStatePreserved="true">
+                    <h:column>
+                        <test:inputText id="city" value="#{city}" style="font-size: 11px"/>
+                    </h:column>
+                </h:dataTable>
+            </h:column>
+        </h:dataTable>
+    </h:form>
+    
+    <h:outputLink value="home.jsf">
+       <h:outputText value="HOME" />
+    </h:outputLink>
+    
+    </div>
+</h:body>
+</html>
diff --git a/jsf-ri/systest-per-webapp/myfaces-uidata-component-state-test/web/resources/basic.css b/jsf-ri/systest-per-webapp/myfaces-uidata-component-state-test/web/resources/basic.css
new file mode 100644
index 0000000..588ecb5
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/myfaces-uidata-component-state-test/web/resources/basic.css
@@ -0,0 +1,686 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+body {
+	font-family : arial, verdana, Geneva, Arial, Helvetica, sans-serif;
+    font-size : 12px;
+}
+
+.standard {
+	font-family : verdana, Geneva, Arial, Helvetica, sans-serif;
+	font-size: 12px;
+	color: #000000;
+}
+
+.standard_bold {
+	font-family : verdana, Geneva, Arial, Helvetica, sans-serif;
+	font-size: 12px;
+	color: #000000;
+    font-weight: bold;
+}
+
+.scrollerTable {
+	font-family : verdana, Geneva, Arial, Helvetica, sans-serif;
+	font-size: 12px;
+	color: #000000;
+    padding: 2;
+    border-style: solid;
+    border-width: 1px;
+    width: 400px;
+}
+
+.scroller {
+    padding-left:20px;
+}
+
+.paginator {
+	font-family : verdana, Geneva, Arial, Helvetica, sans-serif;
+	font-size: 12px;
+}
+
+
+.standardTable {
+	font-family : verdana, Geneva, Arial, Helvetica, sans-serif;
+	font-size: 12px;
+	color: #000000;
+    padding: 2;
+    border-style: solid;
+    border-width: 1px;
+}
+
+.standardTable_Header {
+	color: #000000;
+    background-color: #FFDD00;
+    padding: 3;
+    text-align: center;
+    border: none;
+}
+
+.standardTable_SortHeader {
+    background-color: #FFDD00;
+    color: #000000;
+    padding: 3;
+    text-align: center;
+    border: none;
+    font-weight: bold;
+}
+
+.standardTable_Footer {
+    background-color: #FFFFE0;
+}
+
+.standardTable_Row1 {
+    background-color: #FFFFE0;
+}
+
+.standardTable_Row2 {
+    background-color: #FFFFE0;
+}
+
+.standardTable_Column {
+}
+
+.standardTable_ColumnCentered {
+    text-align: center
+}
+
+a
+{
+	color: #333366;
+    text-decoration: underline;
+    font-size: 12px;
+}
+
+a:hover
+{
+	color: #333366;
+    text-decoration: underline;
+}
+
+.error {
+	font-family : verdana, Geneva, Arial, Helvetica, sans-serif;
+	font-size: 10px;
+	color: #FF0000;
+}
+
+.sortLink {
+	color: #333366;
+    text-decoration: none;
+}
+
+
+.pageLayout {
+    width:760px;
+    height:100%;
+}
+
+.pageHeader {
+    background-color: #6392C6;
+    text-align: center;
+    vertical-align: middle;
+    height:1px;
+    overflow:visible;
+    color: #FFFFFF;
+    padding: 0px;
+    margin: 0px;
+}
+
+.pageHeader1 {
+}
+.pageHeader2 {
+    width:100%;
+}
+.pageHeader2col1 {
+    background-color: #FFFFFF;
+}
+
+.pageNavigation {
+    text-align: left;
+    vertical-align: top;
+    width: 200px;
+    background-color: #E7EFF7;
+    border: 1px solid #6392C6;
+    padding: 10px;
+}
+
+.pageBody {
+    text-align: left;
+    vertical-align: top;
+    width: 560px;
+    padding: 20px;
+    background-color: #FFFFFF;
+}
+
+.pageFooter {
+    text-align: right;
+    font-size: xx-small;
+    height:1px;
+    overflow:visible;
+    background-color: #6392C6;
+    color: #FFFFFF;
+}
+
+
+
+.navigation {
+	font-family : verdana, Geneva, Arial, Helvetica, sans-serif;
+	font-size: 12px;
+    width: 100%;
+}
+
+.navitem {
+	white-space : nowrap;
+    text-decoration : none;
+}
+
+a.navitem:hover,active {
+	white-space : nowrap;
+	text-decoration: none;
+    color: #6392C6;
+}
+
+.navitem_open {
+	white-space : nowrap;
+	text-decoration: none;
+	font-weight : bold;
+}
+
+a.navitem_open:hover,active {
+	white-space : nowrap;
+	text-decoration: none;
+	font-weight : bold;
+    color: #6392C6;
+}
+
+.navitem_active {
+	white-space : nowrap;
+	text-decoration: none;
+	font-weight : bold;
+    background-color: #6392C6;
+	width: 100%;
+    color: #FFFFFF;
+}
+
+a.navitem_active:hover,active {
+	white-space : nowrap;
+	text-decoration: none;
+	font-weight : bold;
+    background-color: #6392C6;
+	width: 100%;
+    color: #FFFFFF;
+}
+
+
+.navseparator {
+    line-height: 12px;
+    border-bottom: 1px solid #A2B7C5;
+}
+
+
+
+.fileUploadInput {
+	font-family : verdana, Geneva, Arial, Helvetica, sans-serif;
+	font-size: 12px;
+	color: #000000;
+    width: 250px;
+}
+
+
+
+
+.emptyHeader {
+    background-color: #FFFFFF;
+    border-top: 0px none;
+    border-right: 0px none;
+    border-bottom: 0px none;
+    border-left: 0px none;
+}
+
+
+
+div.titlebar {
+  background: #C7D0D9;
+  color: black;
+  border: 1px solid #8CACBB;
+  padding-left: 1px;
+  padding-right: 1px;
+  padding-top: 1px;
+  padding-bottom: 1px;
+  margin: 1px 1px;
+  clear: both;
+}
+
+/*
+   ------------------------------------------------------------
+   Calendar component
+   ------------------------------------------------------------
+*/
+
+.yearMonthHeader {
+    background-color: #DDDDDD;
+    color: #000000;
+    text-align: center;
+    border: none;
+    font-weight: bold;
+}
+
+.weekHeader {
+    background-color: #E7E7E7;
+    color: #000000;
+    text-align: center;
+    border: none;
+}
+
+.currentDayCell {
+    background-color: #DDDDDD;
+    color: #000000;
+    border: none;
+}
+
+
+/*
+   ------------------------------------------------------------
+   End Calendar component
+   ------------------------------------------------------------
+*/
+
+/*
+   ------------------------------------------------------------
+   Popup component
+   ------------------------------------------------------------
+*/
+
+.popup {
+    background-color:rgb(255,255,255);
+    color: #000000;
+    border: 1px solid #CCCCCC;
+    font-size:smaller;
+    padding: 5px;
+}
+
+.popup table {
+    font-size:smaller;
+}
+
+
+/*
+   ------------------------------------------------------------
+   End popup component
+   ------------------------------------------------------------
+*/
+
+
+.countryFormTable {
+	font-family : verdana, Geneva, Arial, Helvetica, sans-serif;
+	font-size: 12px;
+	color: #000000;
+    padding: 2;
+    border-style: solid;
+    border-width: 1px;
+}
+
+.countryFormHeader {
+	font-family : verdana, Geneva, Arial, Helvetica, sans-serif;
+	font-size: 12px;
+	color: #000000;
+    padding: 2;
+    border-style: none;
+    background-color: #FFDD00;
+    text-align: center;
+	font-weight : normal;
+}
+
+.countryFormFooter {
+	font-family : verdana, Geneva, Arial, Helvetica, sans-serif;
+	font-size: 12px;
+	color: #000000;
+    padding: 2;
+    border-style: none;
+    background-color: #FFDD00;
+    text-align: center;
+	font-weight : normal;
+}
+
+.countryFormLabels {
+	font-family : verdana, Geneva, Arial, Helvetica, sans-serif;
+	font-size: 12px;
+	color: #000000;
+    padding: 2;
+    border-style: none;
+    text-align: right;
+	font-weight : bold;
+}
+
+.countryFormInputs {
+	font-family : verdana, Geneva, Arial, Helvetica, sans-serif;
+	font-size: 12px;
+	color: #000000;
+    padding: 2;
+    border-style: none;
+}
+
+/*
+   ------------------------------------------------------------
+   Tree component
+   ------------------------------------------------------------
+*/
+
+.nodeFolder
+{
+    font-size: 10px;
+    font-family: Verdana, Geneva, sans-serif;
+    text-decoration: none
+}
+.document
+{
+    color: blue;
+    font-size: 10px;
+    font-family: Verdana, Geneva, sans-serif;
+    text-decoration: none
+}
+.documentSelected
+{
+    color: blue;
+    font-size: 10px;
+    font-family: Verdana, Geneva, sans-serif;
+    text-decoration: none;
+    font-weight: bold
+}
+
+.childCount
+{
+    color: blue;
+    font-size: 10px;
+    font-family: Verdana, Geneva, sans-serif;
+    text-decoration: none
+}
+
+/*
+   ------------------------------------------------------------
+   Panelnavigation
+   ------------------------------------------------------------
+*/
+#subnavigation {
+margin-left: 0px;
+margin-right: 20px;
+padding: 0px 0px 20px 0px;
+border: 1px solid #546359;
+background-color: #EAF4F4;
+}
+
+#subnavigation_outer {
+float: left;
+width: 220px;
+padding: 0px;
+margin: 0px 0px 0px 0px;
+}
+#subnavigation_outer h1  {
+font-size: 1.5em;
+margin: 0px;
+padding: 0px 0px 15px 0px;
+}
+
+/*
+   --------------------------------------------------------------
+    Horizontal Panelnavigation
+   --------------------------------------------------------------
+*/
+#hNav_outer {
+    margin: 0;
+    padding: 0;   
+    height: 60px;
+    width: 800px;
+}
+#hNav_outer ul {    
+    padding: 0;
+    margin: 0;    
+}
+#hNav_outer ul li ul {
+    margin: 0;
+    padding: 0;
+}
+#hNav_outer ul a {
+    text-decoration: none;
+}
+#hNav_outer ul li { /*float the main list items*/
+    margin: 0;
+    float: left;
+    display: block;
+    padding: 5px;
+}
+#hNav_outer ul li ul {
+    display: none;
+}
+#hNav_outer ul li.off ul, #hNav_outer ul li.on ul { /*put the subnav below*/
+    position: absolute;
+    top: 36px;
+    *top: 44px;/*reposition for IE*/    
+    background: #224d6f;    
+    left: 13px;
+    *left: 15px;
+    width: 740px;    
+}
+#hNav_outer ul li.on ul {    
+    display: block;
+    background: #f90;
+}
+#hNav_outer ul li.on:hover ul, #hNav_outer ul li.over ul { /*for ie*/
+    background: #224d6f;
+}
+#hNav_outer ul li a {
+    color: #224d6f;
+    font-weight: bold;
+    display: block;
+    padding: 5;
+}
+#hNav_outer ul li.on a {   
+    color: #fff;
+    background: #f90;
+}
+#hNav_outer ul li.on ul a, #hNav_outer ul li.off ul a {
+    float: left; /*ie doesn't inherit the float*/
+    border: 0;
+    color: #f90;
+    width: auto;    
+}
+#hNav_outer ul li.on:hover ul a, #hNav_outer ul li.over ul li a { /*for ie - the specificity is necessary*/
+    background: #224d6f;
+}
+#hNav_outer ul li.off:hover ul, #hNav_outer ul li.over ul {
+    display: block;
+    z-index: 6000;
+}		
+#hNav_outer ul li.off a:hover, #hNav_outer ul li:hover a, #hNav_outer ul li.over a {
+    background: #29497b;
+    color: #f90;
+}
+#hNav_outer ul li.off a:hover, #hNav_outer ul li.on a:hover { 
+    color: #f90;
+}		
+/*subnav formatting*/
+#hNav_outer ul li.off ul a {
+    display: block;
+    background: #224d6f;
+    color: #fff;    
+}		
+#hNav_outer ul li.on ul a {       
+    display: block;
+    background: #f90;
+    color: #fff;    
+}
+
+/**************************************************
+ * css layers and classes for list navigation list
+ **************************************************/
+#subnavigation ul li  a {
+display:block;
+background-color: #D1E4E4;
+color: #294747;
+text-decoration: none;
+border-bottom: 1px solid #87A8A8;
+padding: 2px 20px;
+margin: 0px;
+}
+
+#subnavigation ul li a:visited {color:#294747;}
+#subnavigation ul li a:hover {color: #FFFFFF;  background-color: #87A8A8;}
+#subnavigation ul li a:active { color:#294747;}
+
+#subnavigation ul li a.selected {
+font-weight: bold;
+color:#294747;
+background-color: #FFFFFF;
+}
+
+#subnavigation ul ul li a {
+padding: 2px 20px 2px 25px;
+margin: 0px;
+background-color: #FFFFFF;}
+
+#subnavigation ul ul li ul li a {
+padding: 2px 20px 2px 30px;
+margin: 0px;
+}
+
+#subnavigation ul {
+list-style-type: none;
+padding: 0px;
+margin: 0px;
+}
+
+#subnavigation li{
+margin: 0px;
+padding: 0px;
+display:inline;
+}
+
+#subnavigation ul.mypage li a {
+padding: 2px 20px 2px 20px;
+margin: 0px;
+background-color: #EAF4F4;
+}
+
+#subnavigation ul.mypage ul li a:hover {color: #FFFFFF;  background-color: #87A8A8;}
+/*
+    body, th, td, input, select {
+        font-family: Verdana, Helvetica, Arial, sans-serif;
+    }
+
+    table, th, td {
+        font-size: small;
+        border: none;
+    }
+
+    .treeHeader {
+        background-color: #bbb;
+        border: 0.75px solid #fff;
+        padding: 2px 3px;
+        text-align: left;
+    }
+
+    .treeFooter {
+        padding: 5px;
+        margin: .67em 2px;
+        margin-top: 0;
+        background-color: #ddd;
+        background-image: url(../images/sw_med_rond.gif);
+        background-repeat: no-repeat;
+        background-position: bottom left;
+    }
+
+    input, .treeFooter {
+        font-size: xx-small;
+        font-size: x-small;
+    }
+
+    .a td {
+        background: #ddd;
+        border-bottom: 1px solid #fff;
+    }
+
+    .b td {
+        background: #efefef;
+        border-bottom: 1px solid #fff;
+    }
+
+    .col1 {
+        border-right: 1px solid #fff;
+        padding: 2px 15px 2px 5px;
+    }
+
+    .col2 {
+        border-left: 1px solid #fff;
+        padding: 2px 15px 2px 5px;
+    }
+
+    .tree {
+       lineheight: 18px;
+       font-family: arial, sans-serif;
+    }
+
+    .treenode {
+       padding: 2px 15px 2px 5px;
+    }
+
+    .treenode a {
+       text-decoration: none;
+    }
+
+    .treenodeSelected {
+       padding: 2px 15px 2px 5px;
+    }
+
+    .treenodeSelected a {
+       text-decoration: none;
+       font-weight: bold;
+    }
+
+    table .selectOneRadio {
+        font-weight: bold;
+    }
+
+
+    .standardList {
+        font-family : verdana, Geneva, Arial, Helvetica, sans-serif;
+        font-size: 12px;
+        color: #000000;
+    }
+
+    */
diff --git a/jsf-ri/systest-per-webapp/myfaces-uidata-component-state-test/web/resources/css/style.css b/jsf-ri/systest-per-webapp/myfaces-uidata-component-state-test/web/resources/css/style.css
new file mode 100644
index 0000000..c1f8acc
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/myfaces-uidata-component-state-test/web/resources/css/style.css
@@ -0,0 +1,56 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+body {
+    background-color: rgb(0, 35, 75);
+    font-family: tahoma, arial, helvetica, sans-serif;
+    font-size: 12px;
+}
+
+#container {
+    margin: 10px auto;
+    width: 900px;
+    background-color: white;
+    padding: 3px;
+}
+
+h1 {
+    font-size: 20px;
+}
diff --git a/jsf-ri/systest-per-webapp/myfaces-uidata-component-state-test/web/resources/test/inputText.css b/jsf-ri/systest-per-webapp/myfaces-uidata-component-state-test/web/resources/test/inputText.css
new file mode 100644
index 0000000..dc324de
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/myfaces-uidata-component-state-test/web/resources/test/inputText.css
@@ -0,0 +1,44 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+/* Dummy stuff */
+.xy423
+{
+}
diff --git a/jsf-ri/systest-per-webapp/myfaces-uidata-component-state-test/web/resources/test/inputText.xhtml b/jsf-ri/systest-per-webapp/myfaces-uidata-component-state-test/web/resources/test/inputText.xhtml
new file mode 100644
index 0000000..7affbe6
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/myfaces-uidata-component-state-test/web/resources/test/inputText.xhtml
@@ -0,0 +1,61 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+	xmlns:h="http://java.sun.com/jsf/html"
+	xmlns:f="http://java.sun.com/jsf/core"
+	xmlns:composite="http://java.sun.com/jsf/composite"
+	xmlns:test="http://java.sun.com/jsf/composite/test">
+<head>
+</head>
+<body>
+<composite:interface>
+<composite:attribute name="value"></composite:attribute>
+<composite:attribute name="style"></composite:attribute>
+</composite:interface>
+<composite:implementation>
+    <h:outputStylesheet library="test" name="inputText.css" />
+    <h:inputText id="text" value="#{cc.attrs.value}" style="#{cc.attrs.style}" />
+</composite:implementation>
+</body>
+</html>
diff --git a/jsf-ri/systest-per-webapp/myfaces-uidata-component-state-test/web/resources/test/simpleInsertChildren.xhtml b/jsf-ri/systest-per-webapp/myfaces-uidata-component-state-test/web/resources/test/simpleInsertChildren.xhtml
new file mode 100644
index 0000000..f2c2ced
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/myfaces-uidata-component-state-test/web/resources/test/simpleInsertChildren.xhtml
@@ -0,0 +1,58 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+	xmlns:h="http://java.sun.com/jsf/html"
+	xmlns:f="http://java.sun.com/jsf/core"
+	xmlns:composite="http://java.sun.com/jsf/composite"
+	xmlns:test="http://java.sun.com/jsf/composite/test">
+<head>
+</head>
+<body>
+<composite:interface>
+</composite:interface>
+<composite:implementation>
+    <composite:insertChildren/>
+</composite:implementation>
+</body>
+</html>
diff --git a/jsf-ri/systest-per-webapp/myfaces-uidata-component-state-test/web/showProblem.xhtml b/jsf-ri/systest-per-webapp/myfaces-uidata-component-state-test/web/showProblem.xhtml
new file mode 100644
index 0000000..1b11024
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/myfaces-uidata-component-state-test/web/showProblem.xhtml
@@ -0,0 +1,124 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:h="http://java.sun.com/jsf/html"
+ xmlns:f="http://java.sun.com/jsf/core"
+ >
+<h:head>
+<style type="text/css">
+.redbackground
+{
+    background: red;
+}
+</style>
+</h:head>
+<h:body>
+    <h:outputStylesheet name="style.css" library="css"/>
+    <h:outputStylesheet name="basic.css"/>
+    <div id="container">
+    <h1>Myfaces Test For UIData Component State Fix: Show Problem</h1>
+    <p>
+      This example shows the problem the patch try to fix. If you enter an id like 
+      form:data:2:cities:3:city and click on GO!, all rows will become red.
+    </p>
+
+	<h:form id="form">
+       <h:panelGrid id="panelGrid2" columns="2">        
+            <h:outputLabel for="inputClientId" value="Enter a client id:"/>
+            <h:inputText id="inputClientId" value="#{invokeOnComponentBean.clientId}" />
+            <h:outputLabel for="button" value="Get value using invokeOnComponent and set red background"/>
+            <h:commandButton id="button" value="GO!"
+                actionListener="#{invokeOnComponentBean.invokeSetValueOnComponent}"/>
+            <h:outputLabel for="curValue1" value="Value of this component:"/>
+            <h:outputText id="curValue1" value="#{invokeOnComponentBean.currentValue}" />
+       </h:panelGrid>
+       	
+	   <h:outputLabel for="input3" value="form:input3"/>
+	   <h:inputText id="input3" value="input3"></h:inputText>
+	
+		<h:dataTable id="data" styleClass="standardTable"
+			headerClass="standardTable_Header" footerClass="standardTable_Header"
+			rowClasses="standardTable_Row1,standardTable_Row2"
+			columnClasses="standardTable_Column,standardTable_ColumnCentered,standardTable_Column"
+			var="country" value="#{countryList.countries}">
+			<h:column headerClass="customTable_header"
+				footerClass="customTable_footer">
+				<f:facet name="header">
+					<h:outputText value="#{bundle['label_country_name']}" />
+				</f:facet>
+				<h:outputText value="#{country.name}" />
+				<f:facet name="footer">
+					<h:outputText value="FOOTER" />
+				</f:facet>
+			</h:column>
+
+			<h:column>
+				<f:facet name="header">
+					<h:outputText value="#{bundle['label_country_iso']}" />
+				</f:facet>				
+				<h:inputText id="isoCode" value="#{country.isoCode}" />
+			</h:column>
+
+			<h:column>
+				<f:facet name="header">
+					<h:outputText value="#{bundle['label_country_cities']}" />
+				</f:facet>
+				<h:dataTable id="cities" styleClass="standardTable_Column"
+					var="city" value="#{country.cities}">
+					<h:column>
+						<h:inputText id="city" value="#{city}" style="font-size: 11px" />
+					</h:column>
+				</h:dataTable>
+			</h:column>
+		</h:dataTable>
+	</h:form>
+ 
+    <h:outputLink value="home.jsf">
+       <h:outputText value="HOME" />
+    </h:outputLink>
+ </div>
+</h:body>
+</html>
diff --git a/jsf-ri/systest-per-webapp/myfaces-uidata-component-state-test/web/simpleDatatable.xhtml b/jsf-ri/systest-per-webapp/myfaces-uidata-component-state-test/web/simpleDatatable.xhtml
new file mode 100644
index 0000000..98e73c2
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/myfaces-uidata-component-state-test/web/simpleDatatable.xhtml
@@ -0,0 +1,115 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:h="http://java.sun.com/jsf/html"
+ xmlns:f="http://java.sun.com/jsf/core"
+ >
+<h:head>
+<style type="text/css">
+.redbackground
+{
+    background: red;
+}
+</style>
+</h:head>
+<h:body>
+    <h:outputStylesheet name="style.css" library="css"/>
+    <h:outputStylesheet name="basic.css"/>
+    <div id="container">
+    <h1>Myfaces Test For UIData Component State Fix: Example using single datatable</h1>
+    
+    <p>
+        Try with form:data:1:isoCode and click go, if everything is fine only 
+        one text field will become red.
+    </p>
+    
+    <h:form id="form">
+       <h:panelGrid id="panelGrid2" columns="2">        
+            <h:outputLabel for="inputClientId" value="Enter a client id:"/>
+            <h:inputText id="inputClientId" value="#{invokeOnComponentBean.clientId}" />
+            <h:outputLabel for="button" value="Get value using invokeOnComponent and set red background"/>
+            <h:commandButton id="button" value="GO!"
+                actionListener="#{invokeOnComponentBean.invokeSetValueOnComponent}"/>
+            <h:outputLabel for="curValue1" value="Value of this component:"/>
+            <h:outputText id="curValue1" value="#{invokeOnComponentBean.currentValue}" />
+       </h:panelGrid>
+        
+       <h:outputLabel for="input3" value="form:input3"/>
+       <h:inputText id="input3" value="input3"></h:inputText>
+    
+        <h:dataTable id="data" styleClass="standardTable"
+            headerClass="standardTable_Header" footerClass="standardTable_Header"
+            rowClasses="standardTable_Row1,standardTable_Row2"
+            columnClasses="standardTable_Column,standardTable_ColumnCentered,standardTable_Column"
+            var="country" value="#{countryList.countries}" rowStatePreserved="true">
+            <h:column headerClass="customTable_header"
+                footerClass="customTable_footer">
+                <f:facet name="header">
+                    <h:outputText value="#{bundle['label_country_name']}" />
+                </f:facet>
+                <h:outputText value="#{country.name}" />
+                <f:facet name="footer">
+                    <h:outputText value="FOOTER" />
+                </f:facet>
+            </h:column>
+
+            <h:column>
+                <f:facet name="header">
+                    <h:outputText value="#{bundle['label_country_iso']}" />
+                </f:facet>              
+                <h:inputText id="isoCode" value="#{country.isoCode}" />
+            </h:column>
+
+        </h:dataTable>
+    </h:form>
+    
+    <h:outputLink value="home.jsf">
+       <h:outputText value="HOME" />
+    </h:outputLink>
+    
+    </div>
+</h:body>
+</html>
diff --git a/jsf-ri/systest-per-webapp/myfaces-uidata-component-state-test/web/simpleDatatableCCInsertChildren.xhtml b/jsf-ri/systest-per-webapp/myfaces-uidata-component-state-test/web/simpleDatatableCCInsertChildren.xhtml
new file mode 100644
index 0000000..3eb1095
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/myfaces-uidata-component-state-test/web/simpleDatatableCCInsertChildren.xhtml
@@ -0,0 +1,118 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:h="http://java.sun.com/jsf/html"
+ xmlns:f="http://java.sun.com/jsf/core"
+ xmlns:test="http://java.sun.com/jsf/composite/test"
+ >
+<h:head>
+<style type="text/css">
+.redbackground
+{
+    background: red;
+}
+</style>
+</h:head>
+<h:body>
+    <h:outputStylesheet name="style.css" library="css"/>
+    <h:outputStylesheet name="basic.css"/>
+    <div id="container">
+    <h1>Myfaces Test For UIData Component State Fix: Example using single datatable</h1>
+    
+    <p>
+        Try with form:data:1:text:isoCode and click go, if everything is fine only 
+        one text field will become red.
+    </p>
+    
+    <h:form id="form">
+       <h:panelGrid id="panelGrid2" columns="2">        
+            <h:outputLabel for="inputClientId" value="Enter a client id:"/>
+            <h:inputText id="inputClientId" value="#{invokeOnComponentBean.clientId}" />
+            <h:outputLabel for="button" value="Get value using invokeOnComponent and set red background"/>
+            <h:commandButton id="button" value="GO!"
+                actionListener="#{invokeOnComponentBean.invokeSetValueOnComponent}"/>
+            <h:outputLabel for="curValue1" value="Value of this component:"/>
+            <h:outputText id="curValue1" value="#{invokeOnComponentBean.currentValue}" />
+       </h:panelGrid>
+        
+       <h:outputLabel for="input3" value="form:input3"/>
+       <h:inputText id="input3" value="input3"></h:inputText>
+    
+        <h:dataTable id="data" styleClass="standardTable"
+            headerClass="standardTable_Header" footerClass="standardTable_Header"
+            rowClasses="standardTable_Row1,standardTable_Row2"
+            columnClasses="standardTable_Column,standardTable_ColumnCentered,standardTable_Column"
+            var="country" value="#{countryList.countries}" rowStatePreserved="true">
+            <h:column headerClass="customTable_header"
+                footerClass="customTable_footer">
+                <f:facet name="header">
+                    <h:outputText value="#{bundle['label_country_name']}" />
+                </f:facet>
+                <h:outputText value="#{country.name}" />
+                <f:facet name="footer">
+                    <h:outputText value="FOOTER" />
+                </f:facet>
+            </h:column>
+
+            <h:column>
+                <f:facet name="header">
+                    <h:outputText value="#{bundle['label_country_iso']}" />
+                </f:facet>
+                <test:simpleInsertChildren id="text">
+                    <h:inputText id="isoCode" value="#{country.isoCode}" />
+                </test:simpleInsertChildren>
+            </h:column>
+
+        </h:dataTable>
+    </h:form>
+    
+    <h:outputLink value="home.jsf">
+       <h:outputText value="HOME" />
+    </h:outputLink>
+    
+    </div>
+</h:body>
+</html>
diff --git a/jsf-ri/systest-per-webapp/myfaces-uidata-component-state-test/web/simpleDatatableCCResource.xhtml b/jsf-ri/systest-per-webapp/myfaces-uidata-component-state-test/web/simpleDatatableCCResource.xhtml
new file mode 100644
index 0000000..2463559
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/myfaces-uidata-component-state-test/web/simpleDatatableCCResource.xhtml
@@ -0,0 +1,116 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:h="http://java.sun.com/jsf/html"
+ xmlns:f="http://java.sun.com/jsf/core"
+ xmlns:test="http://java.sun.com/jsf/composite/test"
+ >
+<h:head>
+<style type="text/css">
+.redbackground
+{
+    background: red;
+}
+</style>
+</h:head>
+<h:body>
+    <h:outputStylesheet name="style.css" library="css"/>
+    <h:outputStylesheet name="basic.css"/>
+    <div id="container">
+    <h1>Myfaces Test For UIData Component State Fix: Example using single datatable and composite component</h1>
+    
+    <p>
+        Try with form:data:1:isoCode:text and click go, if everything is fine only 
+        one text field will become red.
+    </p>
+    
+    <h:form id="form">
+       <h:panelGrid id="panelGrid2" columns="2">        
+            <h:outputLabel for="inputClientId" value="Enter a client id:"/>
+            <h:inputText id="inputClientId" value="#{invokeOnComponentBean.clientId}" />
+            <h:outputLabel for="button" value="Get value using invokeOnComponent and set red background"/>
+            <h:commandButton id="button" value="GO!"
+                actionListener="#{invokeOnComponentBean.invokeSetValueOnComponent}"/>
+            <h:outputLabel for="curValue1" value="Value of this component:"/>
+            <h:outputText id="curValue1" value="#{invokeOnComponentBean.currentValue}" />
+       </h:panelGrid>
+        
+       <h:outputLabel for="input3" value="form:input3"/>
+       <h:inputText id="input3" value="input3"></h:inputText>
+    
+        <h:dataTable id="data" styleClass="standardTable"
+            headerClass="standardTable_Header" footerClass="standardTable_Header"
+            rowClasses="standardTable_Row1,standardTable_Row2"
+            columnClasses="standardTable_Column,standardTable_ColumnCentered,standardTable_Column"
+            var="country" value="#{countryList.countries}" rowStatePreserved="true">
+            <h:column headerClass="customTable_header"
+                footerClass="customTable_footer">
+                <f:facet name="header">
+                    <h:outputText value="#{bundle['label_country_name']}" />
+                </f:facet>
+                <h:outputText value="#{country.name}" />
+                <f:facet name="footer">
+                    <h:outputText value="FOOTER" />
+                </f:facet>
+            </h:column>
+
+            <h:column>
+                <f:facet name="header">
+                    <h:outputText value="#{bundle['label_country_iso']}" />
+                </f:facet>              
+                <test:inputText id="isoCode" value="#{country.isoCode}"/>
+            </h:column>
+
+        </h:dataTable>
+    </h:form>
+    
+    <h:outputLink value="home.jsf">
+       <h:outputText value="HOME" />
+    </h:outputLink>
+    
+    </div>
+</h:body>
+</html>
diff --git a/jsf-ri/systest-per-webapp/nested-datatables/src/java/com/sun/faces/systest/NestedDatatablesTestCase.java b/jsf-ri/systest-per-webapp/nested-datatables/src/java/com/sun/faces/systest/NestedDatatablesTestCase.java
index a5cd6fe..2ec4c69 100644
--- a/jsf-ri/systest-per-webapp/nested-datatables/src/java/com/sun/faces/systest/NestedDatatablesTestCase.java
+++ b/jsf-ri/systest-per-webapp/nested-datatables/src/java/com/sun/faces/systest/NestedDatatablesTestCase.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -46,7 +50,7 @@ import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
 import com.gargoylesoftware.htmlunit.html.HtmlRadioButtonInput;
 import com.gargoylesoftware.htmlunit.html.HtmlSelect;
 import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
-import com.sun.faces.htmlunit.AbstractTestCase;
+import com.sun.faces.htmlunit.HtmlUnitFacesTestCase;
 import junit.framework.Test;
 import junit.framework.TestCase;
 import junit.framework.TestSuite;
@@ -62,7 +66,7 @@ import javax.faces.component.NamingContainer;
  * <p>Make sure that only unique view ids are saved in the session</p>
  */
 
-public class NestedDatatablesTestCase extends AbstractTestCase {
+public class NestedDatatablesTestCase extends HtmlUnitFacesTestCase {
 
 
     // ------------------------------------------------------------ Constructors
diff --git a/jsf-ri/systest-per-webapp/nested-datatables/src/java/com/sun/faces/systest/model/ActionBean.java b/jsf-ri/systest-per-webapp/nested-datatables/src/java/com/sun/faces/systest/model/ActionBean.java
index 7077802..b022bd1 100644
--- a/jsf-ri/systest-per-webapp/nested-datatables/src/java/com/sun/faces/systest/model/ActionBean.java
+++ b/jsf-ri/systest-per-webapp/nested-datatables/src/java/com/sun/faces/systest/model/ActionBean.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/systest-per-webapp/nested-datatables/src/java/com/sun/faces/systest/model/Bean62.java b/jsf-ri/systest-per-webapp/nested-datatables/src/java/com/sun/faces/systest/model/Bean62.java
index e3cffc7..78ea37d 100644
--- a/jsf-ri/systest-per-webapp/nested-datatables/src/java/com/sun/faces/systest/model/Bean62.java
+++ b/jsf-ri/systest-per-webapp/nested-datatables/src/java/com/sun/faces/systest/model/Bean62.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -34,7 +38,6 @@
  * holder.
  */
 
-
 package com.sun.faces.systest.model;
 
 import java.util.ArrayList;
diff --git a/jsf-ri/systest-per-webapp/nested-datatables/src/java/com/sun/faces/systest/model/BeanList.java b/jsf-ri/systest-per-webapp/nested-datatables/src/java/com/sun/faces/systest/model/BeanList.java
index 3a964b7..01f1a74 100644
--- a/jsf-ri/systest-per-webapp/nested-datatables/src/java/com/sun/faces/systest/model/BeanList.java
+++ b/jsf-ri/systest-per-webapp/nested-datatables/src/java/com/sun/faces/systest/model/BeanList.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/systest-per-webapp/nested-datatables/src/java/com/sun/faces/systest/model/InputBean.java b/jsf-ri/systest-per-webapp/nested-datatables/src/java/com/sun/faces/systest/model/InputBean.java
index bec0263..7c973d9 100644
--- a/jsf-ri/systest-per-webapp/nested-datatables/src/java/com/sun/faces/systest/model/InputBean.java
+++ b/jsf-ri/systest-per-webapp/nested-datatables/src/java/com/sun/faces/systest/model/InputBean.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/systest-per-webapp/nested-datatables/src/java/com/sun/faces/systest/model/PrintTreePhaseListener.java b/jsf-ri/systest-per-webapp/nested-datatables/src/java/com/sun/faces/systest/model/PrintTreePhaseListener.java
index 4d42e5b..cfd7148 100644
--- a/jsf-ri/systest-per-webapp/nested-datatables/src/java/com/sun/faces/systest/model/PrintTreePhaseListener.java
+++ b/jsf-ri/systest-per-webapp/nested-datatables/src/java/com/sun/faces/systest/model/PrintTreePhaseListener.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/systest-per-webapp/nested-datatables/src/java/com/tavve/webapps/nested/Port.java b/jsf-ri/systest-per-webapp/nested-datatables/src/java/com/tavve/webapps/nested/Port.java
index 3f538c4..bc7ad91 100644
--- a/jsf-ri/systest-per-webapp/nested-datatables/src/java/com/tavve/webapps/nested/Port.java
+++ b/jsf-ri/systest-per-webapp/nested-datatables/src/java/com/tavve/webapps/nested/Port.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/systest-per-webapp/nested-datatables/src/java/com/tavve/webapps/nested/Service.java b/jsf-ri/systest-per-webapp/nested-datatables/src/java/com/tavve/webapps/nested/Service.java
index a5d92ca..062d830 100644
--- a/jsf-ri/systest-per-webapp/nested-datatables/src/java/com/tavve/webapps/nested/Service.java
+++ b/jsf-ri/systest-per-webapp/nested-datatables/src/java/com/tavve/webapps/nested/Service.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/systest-per-webapp/nested-datatables/src/java/com/tavve/webapps/nested/TestBean.java b/jsf-ri/systest-per-webapp/nested-datatables/src/java/com/tavve/webapps/nested/TestBean.java
index 20c75c1..5a6459c 100644
--- a/jsf-ri/systest-per-webapp/nested-datatables/src/java/com/tavve/webapps/nested/TestBean.java
+++ b/jsf-ri/systest-per-webapp/nested-datatables/src/java/com/tavve/webapps/nested/TestBean.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/systest-per-webapp/nested-datatables/src/java/test/NestedBean.java b/jsf-ri/systest-per-webapp/nested-datatables/src/java/test/NestedBean.java
index 031644a..851b74f 100644
--- a/jsf-ri/systest-per-webapp/nested-datatables/src/java/test/NestedBean.java
+++ b/jsf-ri/systest-per-webapp/nested-datatables/src/java/test/NestedBean.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -34,7 +38,6 @@
  * holder.
  */
 
-
 package test;
 
 import javax.faces.context.FacesContext;
diff --git a/jsf-ri/systest-per-webapp/nested-datatables/web/WEB-INF/faces-config.xml b/jsf-ri/systest-per-webapp/nested-datatables/web/WEB-INF/faces-config.xml
index 0348d26..4f00191 100644
--- a/jsf-ri/systest-per-webapp/nested-datatables/web/WEB-INF/faces-config.xml
+++ b/jsf-ri/systest-per-webapp/nested-datatables/web/WEB-INF/faces-config.xml
@@ -1,41 +1,45 @@
 <?xml version='1.0' encoding='UTF-8'?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
--->
 
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
 
 <faces-config xmlns="http://java.sun.com/xml/ns/javaee"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
diff --git a/jsf-ri/systest-per-webapp/nested-datatables/web/WEB-INF/web.xml b/jsf-ri/systest-per-webapp/nested-datatables/web/WEB-INF/web.xml
index ab55083..4744458 100644
--- a/jsf-ri/systest-per-webapp/nested-datatables/web/WEB-INF/web.xml
+++ b/jsf-ri/systest-per-webapp/nested-datatables/web/WEB-INF/web.xml
@@ -1,39 +1,44 @@
 <?xml version="1.0" encoding="ISO-8859-1"?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
 
 <web-app xmlns="http://java.sun.com/xml/ns/javaee"
diff --git a/jsf-ri/systest-per-webapp/nested-datatables/web/index.jsp b/jsf-ri/systest-per-webapp/nested-datatables/web/index.jsp
index f583254..2fc73a2 100644
--- a/jsf-ri/systest-per-webapp/nested-datatables/web/index.jsp
+++ b/jsf-ri/systest-per-webapp/nested-datatables/web/index.jsp
@@ -1,63 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- The contents of this file are subject to the terms
- of the Common Development and Distribution License
- (the License). You may not use this file except in
- compliance with the License.
- 
- You can obtain a copy of the License at
- https://javaserverfaces.dev.java.net/CDDL.html or
- legal/CDDLv1.0.txt. 
- See the License for the specific language governing
- permission and limitations under the License.
- 
- When distributing Covered Code, include this CDDL
- Header Notice in each file and include the License file
- at legal/CDDLv1.0.txt.    
- If applicable, add the following below the CDDL Header,
- with the fields enclosed by brackets [] replaced by
- your own identifying information:
- "Portions Copyrighted [year] [name of copyright owner]"
- 
- [Name of File] [ver.__] [Date]
- 
- Copyright 2005 Sun Microsystems Inc. All Rights Reserved
--->
+
 
 <%@ page contentType="text/html;charset=UTF-8" language="java" %>
 
diff --git a/jsf-ri/systest-per-webapp/nested-datatables/web/jsfri62.jsp b/jsf-ri/systest-per-webapp/nested-datatables/web/jsfri62.jsp
index ca3577f..c8b68f3 100644
--- a/jsf-ri/systest-per-webapp/nested-datatables/web/jsfri62.jsp
+++ b/jsf-ri/systest-per-webapp/nested-datatables/web/jsfri62.jsp
@@ -1,63 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- The contents of this file are subject to the terms
- of the Common Development and Distribution License
- (the License). You may not use this file except in
- compliance with the License.
- 
- You can obtain a copy of the License at
- https://javaserverfaces.dev.java.net/CDDL.html or
- legal/CDDLv1.0.txt. 
- See the License for the specific language governing
- permission and limitations under the License.
- 
- When distributing Covered Code, include this CDDL
- Header Notice in each file and include the License file
- at legal/CDDLv1.0.txt.    
- If applicable, add the following below the CDDL Header,
- with the fields enclosed by brackets [] replaced by
- your own identifying information:
- "Portions Copyrighted [year] [name of copyright owner]"
- 
- [Name of File] [ver.__] [Date]
- 
- Copyright 2005 Sun Microsystems Inc. All Rights Reserved
--->
+
 
 <%@ page contentType="text/html;charset=UTF-8" language="java" %>
 <%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
diff --git a/jsf-ri/systest-per-webapp/nested-datatables/web/nested.jsp b/jsf-ri/systest-per-webapp/nested-datatables/web/nested.jsp
index 1731dbf..93f96aa 100644
--- a/jsf-ri/systest-per-webapp/nested-datatables/web/nested.jsp
+++ b/jsf-ri/systest-per-webapp/nested-datatables/web/nested.jsp
@@ -1,63 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- The contents of this file are subject to the terms
- of the Common Development and Distribution License
- (the License). You may not use this file except in
- compliance with the License.
- 
- You can obtain a copy of the License at
- https://javaserverfaces.dev.java.net/CDDL.html or
- legal/CDDLv1.0.txt. 
- See the License for the specific language governing
- permission and limitations under the License.
- 
- When distributing Covered Code, include this CDDL
- Header Notice in each file and include the License file
- at legal/CDDLv1.0.txt.    
- If applicable, add the following below the CDDL Header,
- with the fields enclosed by brackets [] replaced by
- your own identifying information:
- "Portions Copyrighted [year] [name of copyright owner]"
- 
- [Name of File] [ver.__] [Date]
- 
- Copyright 2005 Sun Microsystems Inc. All Rights Reserved
--->
+
 
 <%@ page contentType="text/html;charset=UTF-8" language="java" %>
 <%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
diff --git a/jsf-ri/systest-per-webapp/nested-datatables/web/nestedTest-jsfri159.jsp b/jsf-ri/systest-per-webapp/nested-datatables/web/nestedTest-jsfri159.jsp
index 6b84eea..e77a735 100644
--- a/jsf-ri/systest-per-webapp/nested-datatables/web/nestedTest-jsfri159.jsp
+++ b/jsf-ri/systest-per-webapp/nested-datatables/web/nestedTest-jsfri159.jsp
@@ -1,63 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- The contents of this file are subject to the terms
- of the Common Development and Distribution License
- (the License). You may not use this file except in
- compliance with the License.
- 
- You can obtain a copy of the License at
- https://javaserverfaces.dev.java.net/CDDL.html or
- legal/CDDLv1.0.txt. 
- See the License for the specific language governing
- permission and limitations under the License.
- 
- When distributing Covered Code, include this CDDL
- Header Notice in each file and include the License file
- at legal/CDDLv1.0.txt.    
- If applicable, add the following below the CDDL Header,
- with the fields enclosed by brackets [] replaced by
- your own identifying information:
- "Portions Copyrighted [year] [name of copyright owner]"
- 
- [Name of File] [ver.__] [Date]
- 
- Copyright 2005 Sun Microsystems Inc. All Rights Reserved
--->
+
 
 <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
 <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
diff --git a/jsf-ri/systest-per-webapp/nested-datatables/web/test.jsp b/jsf-ri/systest-per-webapp/nested-datatables/web/test.jsp
index f8e2bb5..2054e74 100644
--- a/jsf-ri/systest-per-webapp/nested-datatables/web/test.jsp
+++ b/jsf-ri/systest-per-webapp/nested-datatables/web/test.jsp
@@ -1,63 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- The contents of this file are subject to the terms
- of the Common Development and Distribution License
- (the License). You may not use this file except in
- compliance with the License.
- 
- You can obtain a copy of the License at
- https://javaserverfaces.dev.java.net/CDDL.html or
- legal/CDDLv1.0.txt. 
- See the License for the specific language governing
- permission and limitations under the License.
- 
- When distributing Covered Code, include this CDDL
- Header Notice in each file and include the License file
- at legal/CDDLv1.0.txt.    
- If applicable, add the following below the CDDL Header,
- with the fields enclosed by brackets [] replaced by
- your own identifying information:
- "Portions Copyrighted [year] [name of copyright owner]"
- 
- [Name of File] [ver.__] [Date]
- 
- Copyright 2005 Sun Microsystems Inc. All Rights Reserved
--->
+
 
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
diff --git a/jsf-ri/systest-per-webapp/nested-datatables/web/test2.jsp b/jsf-ri/systest-per-webapp/nested-datatables/web/test2.jsp
index 5963b6b..61ab788 100644
--- a/jsf-ri/systest-per-webapp/nested-datatables/web/test2.jsp
+++ b/jsf-ri/systest-per-webapp/nested-datatables/web/test2.jsp
@@ -1,63 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- The contents of this file are subject to the terms
- of the Common Development and Distribution License
- (the License). You may not use this file except in
- compliance with the License.
- 
- You can obtain a copy of the License at
- https://javaserverfaces.dev.java.net/CDDL.html or
- legal/CDDLv1.0.txt. 
- See the License for the specific language governing
- permission and limitations under the License.
- 
- When distributing Covered Code, include this CDDL
- Header Notice in each file and include the License file
- at legal/CDDLv1.0.txt.    
- If applicable, add the following below the CDDL Header,
- with the fields enclosed by brackets [] replaced by
- your own identifying information:
- "Portions Copyrighted [year] [name of copyright owner]"
- 
- [Name of File] [ver.__] [Date]
- 
- Copyright 2005 Sun Microsystems Inc. All Rights Reserved
--->
+
 
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
diff --git a/jsf-ri/systest-per-webapp/nested-loadbundles/src/java/com/sun/faces/systest/NestedLoadBundlesTestCase.java b/jsf-ri/systest-per-webapp/nested-loadbundles/src/java/com/sun/faces/systest/NestedLoadBundlesTestCase.java
index 605a1dc..ef9e4e0 100644
--- a/jsf-ri/systest-per-webapp/nested-loadbundles/src/java/com/sun/faces/systest/NestedLoadBundlesTestCase.java
+++ b/jsf-ri/systest-per-webapp/nested-loadbundles/src/java/com/sun/faces/systest/NestedLoadBundlesTestCase.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -46,7 +50,7 @@ import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
 import com.gargoylesoftware.htmlunit.html.HtmlRadioButtonInput;
 import com.gargoylesoftware.htmlunit.html.HtmlSelect;
 import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
-import com.sun.faces.htmlunit.AbstractTestCase;
+import com.sun.faces.htmlunit.HtmlUnitFacesTestCase;
 import junit.framework.Test;
 import junit.framework.TestCase;
 import junit.framework.TestSuite;
@@ -62,7 +66,7 @@ import javax.faces.component.NamingContainer;
  * <p>Make sure loadBundle works as expected in JSF 1.2</p>
  */
 
-public class NestedLoadBundlesTestCase extends AbstractTestCase {
+public class NestedLoadBundlesTestCase extends HtmlUnitFacesTestCase {
 
 
     // ------------------------------------------------------------ Constructors
diff --git a/jsf-ri/systest-per-webapp/nested-loadbundles/src/java/com/sun/faces/systest/model/BundleA_en.properties b/jsf-ri/systest-per-webapp/nested-loadbundles/src/java/com/sun/faces/systest/model/BundleA_en.properties
index 10b26d8..ec5d6f6 100644
--- a/jsf-ri/systest-per-webapp/nested-loadbundles/src/java/com/sun/faces/systest/model/BundleA_en.properties
+++ b/jsf-ri/systest-per-webapp/nested-loadbundles/src/java/com/sun/faces/systest/model/BundleA_en.properties
@@ -1 +1,41 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
 okLabel=Bundle A
diff --git a/jsf-ri/systest-per-webapp/nested-loadbundles/src/java/com/sun/faces/systest/model/BundleB_en.properties b/jsf-ri/systest-per-webapp/nested-loadbundles/src/java/com/sun/faces/systest/model/BundleB_en.properties
index 2578ff6..c8b49e6 100644
--- a/jsf-ri/systest-per-webapp/nested-loadbundles/src/java/com/sun/faces/systest/model/BundleB_en.properties
+++ b/jsf-ri/systest-per-webapp/nested-loadbundles/src/java/com/sun/faces/systest/model/BundleB_en.properties
@@ -1 +1,41 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
 okLabel=Bundle B
diff --git a/jsf-ri/systest-per-webapp/nested-loadbundles/src/java/com/sun/faces/systest/model/BundleC_en.properties b/jsf-ri/systest-per-webapp/nested-loadbundles/src/java/com/sun/faces/systest/model/BundleC_en.properties
index 5eb499c..504c9d8 100644
--- a/jsf-ri/systest-per-webapp/nested-loadbundles/src/java/com/sun/faces/systest/model/BundleC_en.properties
+++ b/jsf-ri/systest-per-webapp/nested-loadbundles/src/java/com/sun/faces/systest/model/BundleC_en.properties
@@ -1 +1,41 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
 okLabel=Bundle C
diff --git a/jsf-ri/systest-per-webapp/nested-loadbundles/src/java/com/sun/faces/systest/model/BundleD_en.properties b/jsf-ri/systest-per-webapp/nested-loadbundles/src/java/com/sun/faces/systest/model/BundleD_en.properties
index 0c778ab..041ba5b 100644
--- a/jsf-ri/systest-per-webapp/nested-loadbundles/src/java/com/sun/faces/systest/model/BundleD_en.properties
+++ b/jsf-ri/systest-per-webapp/nested-loadbundles/src/java/com/sun/faces/systest/model/BundleD_en.properties
@@ -1 +1,41 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
 okLabel=Bundle D
diff --git a/jsf-ri/systest-per-webapp/nested-loadbundles/src/java/com/sun/faces/systest/model/BundleE_en.properties b/jsf-ri/systest-per-webapp/nested-loadbundles/src/java/com/sun/faces/systest/model/BundleE_en.properties
index 9e3f102..5a258ae 100644
--- a/jsf-ri/systest-per-webapp/nested-loadbundles/src/java/com/sun/faces/systest/model/BundleE_en.properties
+++ b/jsf-ri/systest-per-webapp/nested-loadbundles/src/java/com/sun/faces/systest/model/BundleE_en.properties
@@ -1 +1,41 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
 okLabel=Bundle E
diff --git a/jsf-ri/systest-per-webapp/nested-loadbundles/web/WEB-INF/faces-config.xml b/jsf-ri/systest-per-webapp/nested-loadbundles/web/WEB-INF/faces-config.xml
index cc3d484..038137e 100644
--- a/jsf-ri/systest-per-webapp/nested-loadbundles/web/WEB-INF/faces-config.xml
+++ b/jsf-ri/systest-per-webapp/nested-loadbundles/web/WEB-INF/faces-config.xml
@@ -1,41 +1,45 @@
 <?xml version='1.0' encoding='UTF-8'?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
--->
 
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
 
 <faces-config xmlns="http://java.sun.com/xml/ns/javaee"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
diff --git a/jsf-ri/systest-per-webapp/nested-loadbundles/web/WEB-INF/web.xml b/jsf-ri/systest-per-webapp/nested-loadbundles/web/WEB-INF/web.xml
index bc18aac..679803f 100644
--- a/jsf-ri/systest-per-webapp/nested-loadbundles/web/WEB-INF/web.xml
+++ b/jsf-ri/systest-per-webapp/nested-loadbundles/web/WEB-INF/web.xml
@@ -1,39 +1,44 @@
 <?xml version="1.0" encoding="ISO-8859-1"?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
 
 <web-app xmlns="http://java.sun.com/xml/ns/javaee"
diff --git a/jsf-ri/systest-per-webapp/nested-loadbundles/web/bar01.jsp b/jsf-ri/systest-per-webapp/nested-loadbundles/web/bar01.jsp
index 3d25486..3a0e06b 100644
--- a/jsf-ri/systest-per-webapp/nested-loadbundles/web/bar01.jsp
+++ b/jsf-ri/systest-per-webapp/nested-loadbundles/web/bar01.jsp
@@ -1,43 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
+
 <%@ page contentType="text/html" language="java" %>
 <%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
 <%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
diff --git a/jsf-ri/systest-per-webapp/nested-loadbundles/web/bar02.jsp b/jsf-ri/systest-per-webapp/nested-loadbundles/web/bar02.jsp
index 788dae0..e8b1d38 100644
--- a/jsf-ri/systest-per-webapp/nested-loadbundles/web/bar02.jsp
+++ b/jsf-ri/systest-per-webapp/nested-loadbundles/web/bar02.jsp
@@ -1,43 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
+
 <%@ page contentType="text/html" language="java" %>
 <%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
 <%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
diff --git a/jsf-ri/systest-per-webapp/nested-loadbundles/web/foo01.jsp b/jsf-ri/systest-per-webapp/nested-loadbundles/web/foo01.jsp
index ca49b96..c6e3333 100644
--- a/jsf-ri/systest-per-webapp/nested-loadbundles/web/foo01.jsp
+++ b/jsf-ri/systest-per-webapp/nested-loadbundles/web/foo01.jsp
@@ -1,43 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
+
 <%@ page contentType="text/html" language="java" %>
 <%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
 <%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
diff --git a/jsf-ri/systest-per-webapp/nested-loadbundles/web/foo02.jsp b/jsf-ri/systest-per-webapp/nested-loadbundles/web/foo02.jsp
index a124080..0dbe4cc 100644
--- a/jsf-ri/systest-per-webapp/nested-loadbundles/web/foo02.jsp
+++ b/jsf-ri/systest-per-webapp/nested-loadbundles/web/foo02.jsp
@@ -1,43 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
+
 <%@ page contentType="text/html" language="java" %>
 <%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
 <%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
diff --git a/jsf-ri/systest-per-webapp/nested-loadbundles/web/index.jsp b/jsf-ri/systest-per-webapp/nested-loadbundles/web/index.jsp
index 8251bd1..7f2458b 100644
--- a/jsf-ri/systest-per-webapp/nested-loadbundles/web/index.jsp
+++ b/jsf-ri/systest-per-webapp/nested-loadbundles/web/index.jsp
@@ -1,43 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
+
 <%@ page contentType="text/html" language="java" %>
 <%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
 <%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
diff --git a/jsf-ri/systest-per-webapp/never-unwrap-exceptions/src/java/com/sun/faces/systest/NeverUnwrapExceptionsTestCase.java b/jsf-ri/systest-per-webapp/never-unwrap-exceptions/src/java/com/sun/faces/systest/NeverUnwrapExceptionsTestCase.java
index 8c353ec..ad4abc1 100644
--- a/jsf-ri/systest-per-webapp/never-unwrap-exceptions/src/java/com/sun/faces/systest/NeverUnwrapExceptionsTestCase.java
+++ b/jsf-ri/systest-per-webapp/never-unwrap-exceptions/src/java/com/sun/faces/systest/NeverUnwrapExceptionsTestCase.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -46,7 +50,7 @@ import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
 import com.gargoylesoftware.htmlunit.html.HtmlRadioButtonInput;
 import com.gargoylesoftware.htmlunit.html.HtmlSelect;
 import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
-import com.sun.faces.htmlunit.AbstractTestCase;
+import com.sun.faces.htmlunit.HtmlUnitFacesTestCase;
 import junit.framework.Test;
 import junit.framework.TestCase;
 import junit.framework.TestSuite;
@@ -62,7 +66,7 @@ import javax.faces.component.NamingContainer;
  * <p>Make sure that only unique view ids are saved in the session</p>
  */
 
-public class NeverUnwrapExceptionsTestCase extends AbstractTestCase {
+public class NeverUnwrapExceptionsTestCase extends HtmlUnitFacesTestCase {
 
 
     // ------------------------------------------------------------ Constructors
diff --git a/jsf-ri/systest-per-webapp/never-unwrap-exceptions/src/java/com/sun/faces/systest/model/CatchExceptionServlet.java b/jsf-ri/systest-per-webapp/never-unwrap-exceptions/src/java/com/sun/faces/systest/model/CatchExceptionServlet.java
index e61a677..fa114cd 100644
--- a/jsf-ri/systest-per-webapp/never-unwrap-exceptions/src/java/com/sun/faces/systest/model/CatchExceptionServlet.java
+++ b/jsf-ri/systest-per-webapp/never-unwrap-exceptions/src/java/com/sun/faces/systest/model/CatchExceptionServlet.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/systest-per-webapp/never-unwrap-exceptions/src/java/com/sun/faces/systest/model/ThrowWrappedExceptionOnPropertyGet.java b/jsf-ri/systest-per-webapp/never-unwrap-exceptions/src/java/com/sun/faces/systest/model/ThrowWrappedExceptionOnPropertyGet.java
index 896bc8e..769bf5e 100644
--- a/jsf-ri/systest-per-webapp/never-unwrap-exceptions/src/java/com/sun/faces/systest/model/ThrowWrappedExceptionOnPropertyGet.java
+++ b/jsf-ri/systest-per-webapp/never-unwrap-exceptions/src/java/com/sun/faces/systest/model/ThrowWrappedExceptionOnPropertyGet.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -34,7 +38,6 @@
  * holder.
  */
 
-
 package com.sun.faces.systest.model;
 
 public class ThrowWrappedExceptionOnPropertyGet {
diff --git a/jsf-ri/systest-per-webapp/never-unwrap-exceptions/web/WEB-INF/faces-config.xml b/jsf-ri/systest-per-webapp/never-unwrap-exceptions/web/WEB-INF/faces-config.xml
index 0cf7241..941bd50 100644
--- a/jsf-ri/systest-per-webapp/never-unwrap-exceptions/web/WEB-INF/faces-config.xml
+++ b/jsf-ri/systest-per-webapp/never-unwrap-exceptions/web/WEB-INF/faces-config.xml
@@ -1,41 +1,45 @@
 <?xml version='1.0' encoding='UTF-8'?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
--->
 
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
 
 <!-- =========== FULL CONFIGURATION FILE ================================== -->
 
diff --git a/jsf-ri/systest-per-webapp/never-unwrap-exceptions/web/WEB-INF/web.xml b/jsf-ri/systest-per-webapp/never-unwrap-exceptions/web/WEB-INF/web.xml
index b94a61a..4dc73b7 100644
--- a/jsf-ri/systest-per-webapp/never-unwrap-exceptions/web/WEB-INF/web.xml
+++ b/jsf-ri/systest-per-webapp/never-unwrap-exceptions/web/WEB-INF/web.xml
@@ -1,39 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
+
 <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee web-app_2_5.xsd">
 
     <description>
diff --git a/jsf-ri/systest-per-webapp/never-unwrap-exceptions/web/error.jsp b/jsf-ri/systest-per-webapp/never-unwrap-exceptions/web/error.jsp
index fe74500..35837c0 100644
--- a/jsf-ri/systest-per-webapp/never-unwrap-exceptions/web/error.jsp
+++ b/jsf-ri/systest-per-webapp/never-unwrap-exceptions/web/error.jsp
@@ -1,37 +1,43 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
 <html>
diff --git a/jsf-ri/systest-per-webapp/never-unwrap-exceptions/web/test.jsp b/jsf-ri/systest-per-webapp/never-unwrap-exceptions/web/test.jsp
index 98acfad..f946db0 100644
--- a/jsf-ri/systest-per-webapp/never-unwrap-exceptions/web/test.jsp
+++ b/jsf-ri/systest-per-webapp/never-unwrap-exceptions/web/test.jsp
@@ -1,63 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- The contents of this file are subject to the terms
- of the Common Development and Distribution License
- (the License). You may not use this file except in
- compliance with the License.
- 
- You can obtain a copy of the License at
- https://javaserverfaces.dev.java.net/CDDL.html or
- legal/CDDLv1.0.txt. 
- See the License for the specific language governing
- permission and limitations under the License.
- 
- When distributing Covered Code, include this CDDL
- Header Notice in each file and include the License file
- at legal/CDDLv1.0.txt.    
- If applicable, add the following below the CDDL Header,
- with the fields enclosed by brackets [] replaced by
- your own identifying information:
- "Portions Copyrighted [year] [name of copyright owner]"
- 
- [Name of File] [ver.__] [Date]
- 
- Copyright 2005 Sun Microsystems Inc. All Rights Reserved
--->
+
 
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
diff --git a/jsf-ri/systest-per-webapp/no-web-xml/src/java/com/sun/faces/systest/HelloBean.java b/jsf-ri/systest-per-webapp/no-web-xml/src/java/com/sun/faces/systest/HelloBean.java
new file mode 100644
index 0000000..c4fe193
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/no-web-xml/src/java/com/sun/faces/systest/HelloBean.java
@@ -0,0 +1,62 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.ApplicationScoped;
+
+ at ManagedBean(name = "hello", eager = true)
+ at ApplicationScoped
+public class HelloBean {
+    String fname;
+    public HelloBean() {
+        System.out.println("HelloBean instantiated");
+    }
+    public String getMessage() {
+        return "Hello " + fname + ", Good Morning!";
+    }
+    public String getFname() {
+        return fname;
+    }
+    public  void setFname(String name) {
+        this.fname = name;
+    }
+}
diff --git a/jsf-ri/systest-per-webapp/no-web-xml/src/java/com/sun/faces/systest/NoWebXMLTestCase.java b/jsf-ri/systest-per-webapp/no-web-xml/src/java/com/sun/faces/systest/NoWebXMLTestCase.java
new file mode 100644
index 0000000..e3e0ff3
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/no-web-xml/src/java/com/sun/faces/systest/NoWebXMLTestCase.java
@@ -0,0 +1,123 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest;
+
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import com.gargoylesoftware.htmlunit.html.HtmlHiddenInput;
+import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
+import com.gargoylesoftware.htmlunit.html.HtmlForm;
+
+import com.sun.faces.htmlunit.HtmlUnitFacesTestCase;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+import java.util.List;
+
+public class NoWebXMLTestCase extends HtmlUnitFacesTestCase {
+
+    public NoWebXMLTestCase(String name) {
+        super(name);
+    }
+
+    /**
+     * Set up instance variables required by this test case.
+     */
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+
+
+    /**
+     * Return the tests included in this test suite.
+     */
+    public static Test suite() {
+        return (new TestSuite(NoWebXMLTestCase.class));
+    }
+
+
+    /**
+     * Tear down instance variables required by this test case.
+     */
+    public void tearDown() {
+        super.tearDown();
+    }
+
+
+    // ------------------------------------------------------------ Test Methods
+
+    public void testNoWebXML() throws Exception {
+
+        HtmlPage page = getPage("/faces/hello.xhtml");
+
+        List list = getAllElementsOfGivenClass(page, null,
+                HtmlSubmitInput.class);
+        HtmlSubmitInput button = (HtmlSubmitInput) list.get(0);
+        page = (HtmlPage) button.click();
+        String pageAsText = page.asText();
+        assertTrue(pageAsText.contains("Good Morning"));
+        String pageText = page.asXml();
+        assertTrue(pageText.contains("<input type=\"hidden\" name=\"javax.faces.ViewState\" id="));
+
+        page = getPage("/hello.jsf");
+
+        list = getAllElementsOfGivenClass(page, null,
+                HtmlSubmitInput.class);
+        button = (HtmlSubmitInput) list.get(0);
+        page = (HtmlPage) button.click();
+        pageAsText = page.asText();
+        assertTrue(pageAsText.contains("Good Morning"));
+        pageText = page.asXml();
+        assertTrue(pageText.contains("<input type=\"hidden\" name=\"javax.faces.ViewState\" id="));
+
+        page = getPage("/hello.faces");
+
+        list = getAllElementsOfGivenClass(page, null,
+                HtmlSubmitInput.class);
+        button = (HtmlSubmitInput) list.get(0);
+        page = (HtmlPage) button.click();
+        pageAsText = page.asText();
+        assertTrue(pageAsText.contains("Good Morning"));        
+        pageText = page.asXml();
+        assertTrue(pageText.contains("<input type=\"hidden\" name=\"javax.faces.ViewState\" id="));
+
+    }
+}
diff --git a/jsf-ri/systest-per-webapp/no-web-xml/web/hello.xhtml b/jsf-ri/systest-per-webapp/no-web-xml/web/hello.xhtml
new file mode 100644
index 0000000..ee510c2
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/no-web-xml/web/hello.xhtml
@@ -0,0 +1,18 @@
+<!DOCTYPE html
+     PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"
+      xmlns:h="http://java.sun.com/jsf/html">
+<head>
+    <title>Hello JSF 2!</title>
+</head>
+<body>
+<h:form id="form">
+    <h:inputText id="string"
+                 value="#{hello.fname}"/>
+    <h:commandButton id="command" value="submit" action="submit?faces-redirect=true"></h:commandButton>
+</h:form>
+</body>
+</html>
+
+
diff --git a/jsf-ri/systest-per-webapp/no-web-xml/web/submit.xhtml b/jsf-ri/systest-per-webapp/no-web-xml/web/submit.xhtml
new file mode 100644
index 0000000..287a429
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/no-web-xml/web/submit.xhtml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html
+        PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"
+        xmlns:h="http://java.sun.com/jsf/html">
+<head>
+    <title>Hello</title>
+</head>
+<body>
+<h:form id="form">
+
+ <h:outputText id="string"
+                 value="#{hello.message}"/>
+</h:form>
+</body>
+</html>
\ No newline at end of file
diff --git a/jsf-ri/systest-per-webapp/process-as-jspx/src/java/Blink.java b/jsf-ri/systest-per-webapp/process-as-jspx/src/java/Blink.java
new file mode 100644
index 0000000..9a69a9c
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/process-as-jspx/src/java/Blink.java
@@ -0,0 +1,116 @@
+/*
+ * @(#)Blink.java	1.7 00/08/10
+ *
+ * Copyright (c) 1997, 1998 Sun Microsystems, Inc. All Rights Reserved.
+ *
+ * Sun grants you ("Licensee") a non-exclusive, royalty free, license to use,
+ * modify and redistribute this software in source and binary code form,
+ * provided that i) this copyright notice and license appear on all copies of
+ * the software; and ii) Licensee does not utilize the software in a manner
+ * which is disparaging to Sun.
+ *
+ * This software is provided "AS IS," without a warranty of any kind. ALL
+ * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING ANY
+ * IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR
+ * NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN AND ITS LICENSORS SHALL NOT BE
+ * LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING
+ * OR DISTRIBUTING THE SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR ITS
+ * LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR DIRECT,
+ * INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER
+ * CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE USE OF
+ * OR INABILITY TO USE SOFTWARE, EVEN IF SUN HAS BEEN ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGES.
+ *
+ * This software is not designed or intended for use in on-line control of
+ * aircraft, air traffic, aircraft navigation or aircraft communications; or in
+ * the design, construction, operation or maintenance of any nuclear
+ * facility. Licensee represents and warrants that it will not use or
+ * redistribute the Software for such purposes.
+ */
+
+/**
+ * I love blinking things.
+ *
+ * @author Arthur van Hoff
+ * @modified 04/24/96 Jim Hagen use getBackground
+ * @modified 02/05/98 Mike McCloskey removed use of deprecated methods
+ * @modified 04/23/99 Josh Bloch, use timer instead of explicit multithreading.
+ * @modified 07/10/00 Daniel Peek brought to code conventions, minor changes
+ */
+
+import java.awt.*;
+import java.util.*;
+
+public class Blink extends java.applet.Applet {
+    private Timer timer;              // Schedules the blinking
+    private String labelString;       // The label for the window
+    private int delay;                // the delay time between blinks
+
+    public void init() {
+        String blinkFrequency = getParameter("speed");
+        delay = (blinkFrequency == null) ? 400 :
+            (1000 / Integer.parseInt(blinkFrequency));
+        labelString = getParameter("lbl");
+        if (labelString == null)
+            labelString = "Blink";
+        Font font = new java.awt.Font("TimesRoman", Font.PLAIN, 24);
+        setFont(font);
+    }
+
+    public void start() {
+        timer = new Timer();     //creates a new timer to schedule the blinking
+        timer.schedule(new TimerTask() {      //creates a timertask to schedule
+            // overrides the run method to provide functionality 
+            public void run() {  
+                repaint();
+            }
+        }
+            , delay, delay);
+    }
+
+    public void paint(Graphics g) {
+        int fontSize = g.getFont().getSize();
+        int x = 0, y = fontSize, space;
+        int red =   (int) ( 50 * Math.random());
+        int green = (int) ( 50 * Math.random());
+        int blue =  (int) (256 * Math.random());
+        Dimension d = getSize();
+        g.setColor(Color.black);
+        FontMetrics fm = g.getFontMetrics();
+        space = fm.stringWidth(" ");
+        for (StringTokenizer t = new StringTokenizer(labelString); 
+             t.hasMoreTokens();) {
+            String word = t.nextToken();
+            int w = fm.stringWidth(word) + space;
+            if (x + w > d.width) {
+                x = 0;
+                y += fontSize;  //move word to next line if it doesn't fit
+            }
+            if (Math.random() < 0.5)
+                g.setColor(new java.awt.Color((red + y*30) % 256, 
+                                              (green + x/3) % 256, blue));
+            else
+                g.setColor(getBackground());
+            g.drawString(word, x, y);
+            x += w;  //shift to the right to draw the next word
+        }
+    }
+    
+    public void stop() {
+        timer.cancel();  //stops the timer
+    }
+
+    public String getAppletInfo() {
+        return "Title: Blinker\n"
+            + "Author: Arthur van Hoff\n" 
+            + "Displays multicolored blinking text.";
+    }
+    
+    public String[][] getParameterInfo() {
+        String pinfo[][] = {
+            {"speed", "string", "The blink frequency"},
+            {"lbl", "string", "The text to blink."},
+        };
+        return pinfo;
+    }
+}
diff --git a/jsf-ri/systest-per-webapp/process-as-jspx/src/java/com/sun/faces/facelets/tag/jsp/DummyTagHandler.java b/jsf-ri/systest-per-webapp/process-as-jspx/src/java/com/sun/faces/facelets/tag/jsp/DummyTagHandler.java
new file mode 100644
index 0000000..907fb1f
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/process-as-jspx/src/java/com/sun/faces/facelets/tag/jsp/DummyTagHandler.java
@@ -0,0 +1,65 @@
+
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.facelets.tag.jsp;
+
+import java.io.IOException;
+import javax.faces.component.UIComponent;
+import javax.faces.view.facelets.FaceletContext;
+import javax.faces.view.facelets.TagConfig;
+import javax.faces.view.facelets.TagHandler;
+
+
+
+
+public class DummyTagHandler extends TagHandler {
+
+    public DummyTagHandler(TagConfig config) {
+        super(config);
+    }
+
+    public void apply(FaceletContext fc, UIComponent uic) throws IOException {
+        nextHandler.apply(fc, uic);
+    }
+
+
+
+}
diff --git a/jsf-ri/systest-per-webapp/process-as-jspx/src/java/com/sun/faces/facelets/tag/jsp/ForwardHandler.java b/jsf-ri/systest-per-webapp/process-as-jspx/src/java/com/sun/faces/facelets/tag/jsp/ForwardHandler.java
new file mode 100644
index 0000000..822a15f
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/process-as-jspx/src/java/com/sun/faces/facelets/tag/jsp/ForwardHandler.java
@@ -0,0 +1,193 @@
+
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.facelets.tag.jsp;
+
+import java.io.IOException;
+import java.util.Collections;
+import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.ResourceBundle;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.el.ELContext;
+import javax.el.ExpressionFactory;
+import javax.el.ValueExpression;
+import javax.faces.FacesException;
+import javax.faces.FactoryFinder;
+import javax.faces.component.UIComponent;
+import javax.faces.context.ExternalContext;
+import javax.faces.context.FacesContext;
+import javax.faces.context.FacesContextFactory;
+import javax.faces.context.FacesContextWrapper;
+import javax.faces.lifecycle.Lifecycle;
+import javax.faces.lifecycle.LifecycleFactory;
+import javax.faces.view.facelets.FaceletContext;
+import javax.faces.view.facelets.TagAttribute;
+import javax.faces.view.facelets.TagConfig;
+import javax.faces.view.facelets.TagHandler;
+import javax.faces.webapp.FacesServlet;
+import javax.servlet.RequestDispatcher;
+import javax.servlet.ServletContext;
+import javax.servlet.ServletException;
+import javax.servlet.ServletResponse;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletRequestWrapper;
+
+
+
+
+public class ForwardHandler extends TagHandler {
+
+    private final TagAttribute page;
+    private static final Logger LOGGER =
+          Logger.getLogger("javax.faces.webapp", "javax.faces.LogStrings");
+
+
+    public ForwardHandler(TagConfig config) {
+        super(config);
+
+        this.page = this.getRequiredAttribute("page");
+
+    }
+
+    public void apply(FaceletContext ctx, UIComponent component) throws IOException {
+        nextHandler.apply(ctx, component);
+        FacesContext context = ctx.getFacesContext();
+        ExternalContext extContext = context.getExternalContext();
+        // Test for portlet or servlet
+        Object obj = extContext.getContext();
+        if (obj instanceof ServletContext) {
+            ServletContext servletContext = (ServletContext) obj;
+            String path = this.page.getValue(ctx);
+            RequestDispatcher rd = servletContext.getRequestDispatcher(path);
+            final Map<String, ValueExpression> params = ParamHandler.getParams(context, component);
+            HttpServletRequest req = (HttpServletRequest) extContext.getRequest();
+            if (!params.isEmpty()) {
+                req = new WrapHttpServletRequestToAddParams(context, params, req);
+            }
+            FacesContextFactory facesContextFactory = null;
+            Lifecycle lifecycle = null;
+
+            // Acquire our FacesContextFactory instance
+            try {
+                facesContextFactory = (FacesContextFactory)
+                    FactoryFinder.getFactory
+                    (FactoryFinder.FACES_CONTEXT_FACTORY);
+            } catch (FacesException e) {
+                ResourceBundle rb = LOGGER.getResourceBundle();
+                String msg = rb.getString("severe.webapp.facesservlet.init_failed");
+                Throwable rootCause = (e.getCause() != null) ? e.getCause() : e;
+                LOGGER.log(Level.SEVERE, msg, rootCause);
+                throw new IOException(msg);
+            }
+
+            // Acquire our Lifecycle instance
+            try {
+                LifecycleFactory lifecycleFactory = (LifecycleFactory)
+                      FactoryFinder.getFactory(FactoryFinder.LIFECYCLE_FACTORY);
+                String lifecycleId;
+
+                // This is a bug.  Custom lifecycles configured via a <init-parameter>
+                // are not available at this point.  The correct solution
+                // would be to have some way to get the currently active Lifecycle
+                // instance.
+                lifecycleId = servletContext.getInitParameter
+                                 (FacesServlet.LIFECYCLE_ID_ATTR);
+
+                if (lifecycleId == null) {
+                    lifecycleId = LifecycleFactory.DEFAULT_LIFECYCLE;
+                }
+                lifecycle = lifecycleFactory.getLifecycle(lifecycleId);
+            } catch (FacesException e) {
+                Throwable rootCause = e.getCause();
+                if (rootCause == null) {
+                    throw e;
+                } else {
+                    throw new IOException(e.getMessage(), rootCause);
+                }
+            }
+
+            FacesContext newFacesContext = null;
+
+            try {
+                newFacesContext = facesContextFactory.
+                        getFacesContext(servletContext, req,
+                                        (ServletResponse) extContext.getResponse(),
+                                        lifecycle);
+                WrapFacesContextToAllowSetCurrentInstance.doSetCurrentInstance(newFacesContext);
+                rd.forward(req, (ServletResponse) extContext.getResponse());
+            } catch (ServletException ex) {
+                throw new IOException(ex);
+            } finally {
+                if (null != newFacesContext) {
+                    newFacesContext.release();
+                }
+                WrapFacesContextToAllowSetCurrentInstance.doSetCurrentInstance(context);
+                context.responseComplete();
+            }
+
+        }
+
+    }
+
+    private static final class WrapFacesContextToAllowSetCurrentInstance extends FacesContextWrapper {
+
+        private FacesContext wrapped;
+
+        public WrapFacesContextToAllowSetCurrentInstance(FacesContext wrapped) {
+            this.wrapped = wrapped;
+        }
+
+        @Override
+        public FacesContext getWrapped() {
+            return this.wrapped;
+        }
+
+        private static void doSetCurrentInstance(FacesContext currentInstance) {
+            setCurrentInstance(currentInstance);
+        }
+
+
+    }
+
+}
diff --git a/jsf-ri/systest-per-webapp/process-as-jspx/src/java/com/sun/faces/facelets/tag/jsp/GetPropertyRenderer.java b/jsf-ri/systest-per-webapp/process-as-jspx/src/java/com/sun/faces/facelets/tag/jsp/GetPropertyRenderer.java
new file mode 100644
index 0000000..ca70a49
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/process-as-jspx/src/java/com/sun/faces/facelets/tag/jsp/GetPropertyRenderer.java
@@ -0,0 +1,95 @@
+
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.facelets.tag.jsp;
+
+import java.io.IOException;
+import java.util.Map;
+import javax.el.ELContext;
+import javax.el.ExpressionFactory;
+import javax.el.ValueExpression;
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.context.ResponseWriter;
+import javax.faces.render.FacesRenderer;
+import javax.faces.render.Renderer;
+import javax.faces.view.facelets.FaceletException;
+
+
+ at FacesRenderer(componentFamily="javax.faces.Output", rendererType="jsp.GetProperty")
+public class GetPropertyRenderer extends Renderer {
+
+    @Override
+    public void encodeBegin(FacesContext facesContext, UIComponent component) throws IOException {
+        Map<String, Object> attrs = component.getAttributes();
+        String nameVal = (String) attrs.get("name");
+        String propVal = (String) attrs.get("property");
+        ELContext elContext = facesContext.getELContext();
+        ExpressionFactory ef = facesContext.getApplication().getExpressionFactory();
+
+        // Get the bean
+        ValueExpression valExpression = ef.createValueExpression(elContext,
+                "#{" + nameVal + "." + propVal + "}", Object.class);
+        Object bean = null;
+        try {
+            bean = valExpression.getValue(elContext);
+        } catch (Exception e) {
+            throw new FaceletException("Expression " + valExpression.getExpressionString() + " not found.", e);
+        }
+        ResponseWriter out = facesContext.getResponseWriter();
+        out.writeText(bean, component, valExpression.getExpressionString());
+    }
+
+    @Override
+    public void encodeChildren(FacesContext context, UIComponent component) throws IOException {
+    }
+
+    @Override
+    public boolean getRendersChildren() {
+        return true;
+    }
+
+    @Override
+    public void encodeEnd(FacesContext context, UIComponent component) throws IOException {
+    }
+
+
+}
diff --git a/jsf-ri/systest-per-webapp/process-as-jspx/src/java/com/sun/faces/facelets/tag/jsp/PageDirectiveHandler.java b/jsf-ri/systest-per-webapp/process-as-jspx/src/java/com/sun/faces/facelets/tag/jsp/PageDirectiveHandler.java
new file mode 100644
index 0000000..2e66c2a
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/process-as-jspx/src/java/com/sun/faces/facelets/tag/jsp/PageDirectiveHandler.java
@@ -0,0 +1,81 @@
+
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.facelets.tag.jsp;
+
+import java.io.IOException;
+import javax.faces.component.UIComponent;
+import javax.faces.view.facelets.FaceletContext;
+import javax.faces.view.facelets.TagAttribute;
+import javax.faces.view.facelets.TagConfig;
+import javax.faces.view.facelets.TagHandler;
+
+
+
+
+public class PageDirectiveHandler extends TagHandler {
+
+    private final TagAttribute contentType;
+
+    private final TagAttribute encoding;
+
+
+    public PageDirectiveHandler(TagConfig config) {
+        super(config);
+        this.contentType = this.getAttribute("contentType");
+        this.encoding = this.getAttribute("pageEncoding");
+    }
+
+    public void apply(FaceletContext ctx, UIComponent uic) throws IOException {
+        if (this.contentType != null) {
+            String v = this.contentType.getValue(ctx);
+            ctx.getFacesContext().getAttributes().put("facelets.ContentType", v);
+        }
+        if (this.encoding != null) {
+            String v = this.encoding.getValue(ctx);
+            ctx.getFacesContext().getAttributes().put("facelets.Encoding", v);
+        }
+        nextHandler.apply(ctx, uic);
+    }
+
+
+
+}
diff --git a/jsf-ri/systest-per-webapp/process-as-jspx/src/java/com/sun/faces/facelets/tag/jsp/ParamHandler.java b/jsf-ri/systest-per-webapp/process-as-jspx/src/java/com/sun/faces/facelets/tag/jsp/ParamHandler.java
new file mode 100644
index 0000000..4a9bdde
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/process-as-jspx/src/java/com/sun/faces/facelets/tag/jsp/ParamHandler.java
@@ -0,0 +1,121 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ *
+ *
+ * This file incorporates work covered by the following copyright and
+ * permission notice:
+ *
+ * Copyright 2005-2007 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.sun.faces.facelets.tag.jsp;
+
+import com.sun.faces.facelets.tag.TagHandlerImpl;
+
+import javax.el.ValueExpression;
+import javax.faces.component.UIComponent;
+import javax.faces.view.facelets.FaceletContext;
+import javax.faces.view.facelets.TagAttribute;
+import javax.faces.view.facelets.TagConfig;
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+import javax.faces.context.FacesContext;
+
+/**
+ * @author Jacob Hookom
+ */
+public class ParamHandler extends TagHandlerImpl {
+
+    private final TagAttribute name;
+
+    private final TagAttribute value;
+
+    /**
+     * @param config
+     */
+    public ParamHandler(TagConfig config) {
+        super(config);
+        this.name = this.getRequiredAttribute("name");
+        this.value = this.getRequiredAttribute("value");
+    }
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see com.sun.facelets.FaceletHandler#apply(com.sun.facelets.FaceletContext,
+     *      javax.faces.component.UIComponent)
+     */
+    public void apply(FaceletContext ctx, UIComponent parent)
+            throws IOException {
+        String nameStr = this.name.getValue(ctx);
+        ValueExpression valueVE = this.value.getValueExpression(ctx,
+                Object.class);
+        ctx.getVariableMapper().setVariable(nameStr, valueVE);
+        setParam(ctx.getFacesContext(), parent, nameStr, valueVE);
+    }
+
+    private void setParam(FacesContext context, UIComponent component,
+            String name, ValueExpression valueVE) {
+        Map<String,ValueExpression> params = (Map<String, ValueExpression>)
+                context.getAttributes().get(component);
+        if (null == params) {
+            params = new HashMap<String,ValueExpression>();
+            context.getAttributes().put(component, params);
+        }
+        params.put(name, valueVE);
+    }
+
+    static Map<String,ValueExpression> getParams(FacesContext context, UIComponent component) {
+        return (Map<String, ValueExpression>) context.getAttributes().get(component);
+    }
+
+}
diff --git a/jsf-ri/systest-per-webapp/process-as-jspx/src/java/com/sun/faces/facelets/tag/jsp/PluginRenderer.java b/jsf-ri/systest-per-webapp/process-as-jspx/src/java/com/sun/faces/facelets/tag/jsp/PluginRenderer.java
new file mode 100644
index 0000000..2c2ea2a
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/process-as-jspx/src/java/com/sun/faces/facelets/tag/jsp/PluginRenderer.java
@@ -0,0 +1,233 @@
+
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.facelets.tag.jsp;
+
+import java.io.IOException;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Set;
+import javax.el.ELContext;
+import javax.el.ValueExpression;
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.context.ResponseWriter;
+import javax.faces.render.FacesRenderer;
+import javax.faces.render.Renderer;
+
+
+ at FacesRenderer(componentFamily="javax.faces.Output", rendererType="jsp.Plugin")
+public class PluginRenderer extends Renderer {
+
+    final String [] passthruAttrs = {
+        "name",
+        "width",
+        "height",
+        "hspace",
+        "vspace",
+        "align"
+    };
+    final String [] pluginSkipAttrs = {
+        "code",
+        "codebase",
+        "com.sun.faces.facelets.MARK_ID",
+        "com.sun.faces.facelets.APPLIED",
+        "jreversion",
+        "type"
+    };
+
+    @Override
+    public void encodeBegin(FacesContext context, UIComponent component) throws IOException {
+        Map<String, Object> attrs = component.getAttributes();
+        ResponseWriter out = context.getResponseWriter();
+        out.startElement("OBJECT", component);
+        // write out the classid
+        out.writeAttribute("classid", "clsid:8AD9C840-044E-11D1-B3E9-00805F499D93", "classid");
+        // write out the passthru attrs
+        for (String attrName : passthruAttrs) {
+            if (attrs.containsKey(attrName)) {
+                out.writeAttribute(attrName, attrs.get(attrName), attrName);
+            }
+        }
+        // write out the codebase
+        out.writeAttribute("codebase",
+                "http://java.sun.com/products/plugin/1.2.2/jinstall-1_2_2-win.cab#Version=1,2,2,0",
+                "codebase");
+        // write out <PARAM> elements for the attrs that need to be prefixed by
+        // the string "java_"
+        writeRequiredParamFromAttrs(context, component, attrs, out, "code", "java_");
+        writeRequiredParamFromAttrs(context, component, attrs, out, "codebase", "java_");
+        // write out the type attribute
+        String jreversion = attrs.containsKey("jreversion") ? attrs.get("jreversion").toString() : "1.2";
+        jreversion = "application/x-java-applet;version=" + jreversion;
+        writeParam(context, component, out, "type", jreversion);
+        // write out the remaining attributes to the plugin element as params
+        Set<String> attrKeys = attrs.keySet();
+        for (String cur : attrKeys) {
+            // skip if it's a passthru attr
+            boolean skip = false;
+            for (int i = 0; i < passthruAttrs.length; i++) {
+                if (passthruAttrs[i].equals(cur)) {
+                    skip = true;
+                    break;
+                }
+            }
+            for (int i = 0; i < pluginSkipAttrs.length; i++) {
+                if (pluginSkipAttrs[i].equals(cur)) {
+                    skip = true;
+                    break;
+                }
+            }
+            if (skip) {
+                continue;
+            }
+            writeParamFromAttrs(context, component, attrs, out, cur, "");
+        }
+        // write out the nested <jsp:params>
+        Map<String, ValueExpression> params = ParamHandler.getParams(context, component);
+        Set<String> paramKeys = params.keySet();
+        ELContext elc = context.getELContext();
+        for (String cur : paramKeys) {
+            writeParam(context, component, out, cur, params.get(cur).getValue(elc).toString());
+        }
+
+        // now do the whole thing again, just a little bit differently,
+        // and in a <COMMENT> element.
+        out.startElement("COMMENT", component);
+        out.startElement("EMBED", component);
+        out.writeAttribute("type", jreversion, "type");
+        // write out the passthru attrs
+        for (String attrName : passthruAttrs) {
+            if (attrs.containsKey(attrName)) {
+                out.writeAttribute(attrName, attrs.get(attrName), attrName);
+            }
+        }
+        out.writeAttribute("pluginspage",
+                "http://java.sun.com/products/plugin/",
+                "pluginspage");
+        out.writeAttribute("java_code", attrs.get("code"), "java_code");
+        out.writeAttribute("java_codebase", attrs.get("codebase"), "java_codebase");
+        // write out the remaining attributes to the plugin element as attributes on emebed
+        for (String cur : attrKeys) {
+            // skip if it's a passthru attr
+            boolean skip = false;
+            for (int i = 0; i < passthruAttrs.length; i++) {
+                if (passthruAttrs[i].equals(cur)) {
+                    skip = true;
+                    break;
+                }
+            }
+            for (int i = 0; i < pluginSkipAttrs.length; i++) {
+                if (pluginSkipAttrs[i].equals(cur)) {
+                    skip = true;
+                    break;
+                }
+            }
+            if (skip) {
+                continue;
+            }
+            out.writeAttribute(cur, attrs.get(cur), cur);
+        }
+        // write out the nested params as attributes this time
+        for (String cur : paramKeys) {
+            out.writeAttribute(cur, params.get(cur).getValue(elc).toString(), cur);
+        }
+
+        out.endElement("EMBED");
+        out.startElement("NOEMBED", component);
+        if (component.getChildCount() > 0) {
+        	Iterator<UIComponent> kids = component.getChildren().iterator();
+        	while (kids.hasNext()) {
+        	    UIComponent kid = kids.next();
+        	    kid.encodeAll(context);
+        	}
+        }
+        out.endElement("NOEMBED");
+        out.endElement("COMMENT");
+    }
+
+    @Override
+    public void encodeChildren(FacesContext context, UIComponent component) throws IOException {
+    }
+
+    @Override
+    public boolean getRendersChildren() {
+        return true;
+    }
+
+    @Override
+    public void encodeEnd(FacesContext context, UIComponent component) throws IOException {
+        ResponseWriter out = context.getResponseWriter();
+        out.endElement("OBJECT");
+
+    }
+
+    private void writeRequiredParamFromAttrs(FacesContext context, UIComponent component,
+            Map<String, Object> attrs, ResponseWriter out, String attrName,
+            String prefix) throws IOException {
+        if (!attrs.containsKey(attrName)) {
+            throw new IOException("plugin must have a " + attrName + " attribute");
+        }
+        this.writeParamFromAttrs(context, component, attrs, out, attrName, prefix);
+    }
+
+    private void writeParamFromAttrs(FacesContext context, UIComponent component,
+            Map<String, Object> attrs, ResponseWriter out, String attrName,
+            String prefix) throws IOException {
+        out.startElement("PARAM", component);
+        out.writeAttribute("name", prefix + attrName,
+                "name");
+        out.writeAttribute("value", attrs.get(attrName).toString(),
+                "value");
+        out.endElement("PARAM");
+    }
+
+    private void writeParam(FacesContext context, UIComponent component,
+            ResponseWriter out, String attrName,
+            String attrValue) throws IOException {
+        out.startElement("PARAM", component);
+        out.writeAttribute("name", attrName, "name");
+        out.writeAttribute("value", attrValue, "value");
+        out.endElement("PARAM");
+    }
+
+
+}
diff --git a/jsf-ri/systest-per-webapp/process-as-jspx/src/java/com/sun/faces/facelets/tag/jsp/SetPropertyHandler.java b/jsf-ri/systest-per-webapp/process-as-jspx/src/java/com/sun/faces/facelets/tag/jsp/SetPropertyHandler.java
new file mode 100644
index 0000000..7cf083e
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/process-as-jspx/src/java/com/sun/faces/facelets/tag/jsp/SetPropertyHandler.java
@@ -0,0 +1,147 @@
+
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.facelets.tag.jsp;
+
+import java.io.IOException;
+import java.util.Map;
+import javax.el.ELContext;
+import javax.el.ELResolver;
+import javax.el.ExpressionFactory;
+import javax.el.ValueExpression;
+import javax.faces.component.UIComponent;
+import javax.faces.context.ExternalContext;
+import javax.faces.context.FacesContext;
+import javax.faces.view.facelets.FaceletContext;
+import javax.faces.view.facelets.FaceletException;
+import javax.faces.view.facelets.TagAttribute;
+import javax.faces.view.facelets.TagConfig;
+import javax.faces.view.facelets.TagHandler;
+
+
+
+
+public class SetPropertyHandler extends TagHandler {
+
+    private final TagAttribute name;
+
+    private final TagAttribute property;
+
+    private final TagAttribute param;
+
+    private final TagAttribute value;
+
+    public SetPropertyHandler(TagConfig config) {
+        super(config);
+        this.name = this.getRequiredAttribute("name");
+        this.property = this.getRequiredAttribute("property");
+        this.param = this.getAttribute("param");
+        this.value = this.getAttribute("value");
+
+    }
+
+    public void apply(FaceletContext fc, UIComponent uic) throws IOException {
+        FacesContext facesContext = fc.getFacesContext();
+        ELContext elContext = facesContext.getELContext();
+        ExpressionFactory ef = facesContext.getApplication().getExpressionFactory();
+
+        // Get the bean
+        String nameVal = this.name.getValue(fc);
+        ValueExpression valExpression = ef.createValueExpression(elContext,
+                "#{" + nameVal + "}", Object.class);
+        Object bean = valExpression.getValue(elContext);
+        if (null == bean) {
+            throw new FaceletException("Bean " + nameVal + " not found.");
+        }
+
+        // Get the name of the property of the bean to set
+        String propertyVal = this.property.getValue(fc);
+        String lhs = null;
+        Object rhs = null;
+        if (propertyVal.equals("*")) {
+            pushAllRequestParamatersToBeanProperties(facesContext, elContext, ef, bean);
+        } else {
+            // If both are set, it is a user error.
+            if (null != this.param && null != this.value) {
+                throw new FaceletException("You cannot use both the param and value attributes in a <jsp:setProperty> element.");
+            }
+            // if neither param nor value have values, assume the name of
+            // the request parameter is equal to propertyVal
+            if (null == this.param && null == this.value) {
+                lhs = propertyVal;
+            } else {
+                // one of param or value have a value.
+                if (null != this.param) {
+                    lhs = this.param.getValue(fc);
+                }
+                if (null != this.value) {
+                    lhs = propertyVal;
+                    rhs = this.value.getValue(fc);
+                }
+            }
+            if (null == rhs) {
+                rhs = facesContext.getExternalContext().getRequestParameterMap().get(lhs);
+            }
+            ELResolver resolver = elContext.getELResolver();
+            resolver.setValue(elContext, bean, lhs, rhs);
+        }
+
+        nextHandler.apply(fc, uic);
+
+    }
+
+    private void pushAllRequestParamatersToBeanProperties(FacesContext facesContext,
+            ELContext elContext, ExpressionFactory ef, Object bean) {
+        ExternalContext extContext = facesContext.getExternalContext();
+        ELResolver resolver = elContext.getELResolver();
+        Map<String, String []> requestParamValues =
+                extContext.getRequestParameterValuesMap();
+        String [] values;
+        for (String cur : requestParamValues.keySet()) {
+            values = requestParamValues.get(cur);
+            for (String curVal : values) {
+                resolver.setValue(elContext, bean, cur, curVal);
+            }
+        }
+    }
+
+
+}
diff --git a/jsf-ri/systest-per-webapp/process-as-jspx/src/java/com/sun/faces/facelets/tag/jsp/UseBeanHandler.java b/jsf-ri/systest-per-webapp/process-as-jspx/src/java/com/sun/faces/facelets/tag/jsp/UseBeanHandler.java
new file mode 100644
index 0000000..8dc7247
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/process-as-jspx/src/java/com/sun/faces/facelets/tag/jsp/UseBeanHandler.java
@@ -0,0 +1,157 @@
+
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.facelets.tag.jsp;
+
+import com.sun.faces.util.Util;
+import java.io.IOException;
+import java.util.Map;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.faces.component.UIComponent;
+import javax.faces.context.ExternalContext;
+import javax.faces.context.FacesContext;
+import javax.faces.view.facelets.FaceletContext;
+import javax.faces.view.facelets.FaceletException;
+import javax.faces.view.facelets.TagAttribute;
+import javax.faces.view.facelets.TagConfig;
+import javax.faces.view.facelets.TagHandler;
+
+
+
+
+public class UseBeanHandler extends TagHandler {
+
+    private final TagAttribute id;
+
+    private final TagAttribute scope;
+
+    private final TagAttribute classAttr;
+
+    private final TagAttribute type;
+
+    private final TagAttribute beanName;
+
+    public UseBeanHandler(TagConfig config) {
+        super(config);
+
+        this.id = this.getRequiredAttribute("id");
+        this.scope = this.getAttribute("scope");
+        this.classAttr = this.getAttribute("class");
+        this.type = this.getAttribute("type");
+        this.beanName = this.getAttribute("beanName");
+    }
+
+    public void apply(FaceletContext fc, UIComponent uic) throws IOException {
+        FacesContext facesContext = fc.getFacesContext();
+        ExternalContext extContext = facesContext.getExternalContext();
+        // view scope is defined as equivalent to page scope
+        Map<String, Object> scopeMap = facesContext.getViewRoot().getViewMap();
+        boolean isRequestScoped = false;
+
+        // Find the correct scope
+        String scopeName = (null != this.scope) ? this.scope.getValue(fc) : "";
+        if ("session".equals(scopeName)) {
+            scopeMap = extContext.getSessionMap();
+        } else if ("application".equals(scopeName)) {
+            scopeMap = extContext.getApplicationMap();
+        } else if ("request".equals(scopeName)) {
+            isRequestScoped = true;
+            scopeMap = extContext.getRequestMap();
+        } else {
+            if ((!"".equals(scopeName)) && !("page".equals(scopeName))) {
+                throw new FaceletException("Invalid scope name " + scopeName + ".");
+            }
+        }
+        assert(null != scopeMap);
+        String idVal = this.id.getValue(fc);
+        Object bean = scopeMap.get(idVal);
+        boolean instantiatedByThisMetod = null != bean;
+
+        if(!instantiatedByThisMetod) {
+            // case 1 we have a class with an optional type
+            // case 2 we have a beanName and type
+            // case 3 we can have just a type
+
+            if (null == beanName && null == classAttr && null != type) {
+                // this is case 3
+            } else if ((null != beanName) && (null != type)) {
+                // this is case 2
+                String beanNameVal = this.beanName.getValue(fc);
+                try {
+                    bean = java.beans.Beans.instantiate(Util.getCurrentLoader(this), beanNameVal);
+                    instantiatedByThisMetod = true;
+                } catch (ClassNotFoundException ex) {
+                    throw new FaceletException(ex);
+                }
+            } else if (null != classAttr) {
+                // this is case 1
+                String className = this.classAttr.getValue(fc);
+                try {
+                    Class clazz = Util.loadClass(className, this);
+                    bean = clazz.newInstance();
+                    instantiatedByThisMetod = true;
+                } catch (IllegalAccessException ie) {
+                    throw new FaceletException(ie);
+                } catch (InstantiationException ie) {
+                    throw new FaceletException(ie);
+                } catch (ClassNotFoundException ex) {
+                    throw new FaceletException(ex);
+                }
+            }
+        }
+
+        // The "object reference variable" concept does not exist
+        // in Facelets because there is no concept of scriptlets.
+        // Therefore, request scope stands in for the object reference variable
+        // concept
+        if (!isRequestScoped && instantiatedByThisMetod) {
+            extContext.getRequestMap().put(idVal, bean);
+        }
+
+        if (instantiatedByThisMetod) {
+            nextHandler.apply(fc, uic);
+        }
+    }
+
+
+
+}
diff --git a/jsf-ri/systest-per-webapp/process-as-jspx/src/java/com/sun/faces/facelets/tag/jsp/WrapHttpServletRequestToAddParams.java b/jsf-ri/systest-per-webapp/process-as-jspx/src/java/com/sun/faces/facelets/tag/jsp/WrapHttpServletRequestToAddParams.java
new file mode 100644
index 0000000..539aef4
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/process-as-jspx/src/java/com/sun/faces/facelets/tag/jsp/WrapHttpServletRequestToAddParams.java
@@ -0,0 +1,53 @@
+package com.sun.faces.facelets.tag.jsp;
+
+import java.util.Collections;
+import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.Map;
+import javax.el.ELContext;
+import javax.el.ExpressionFactory;
+import javax.el.ValueExpression;
+import javax.faces.context.FacesContext;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletRequestWrapper;
+
+public class WrapHttpServletRequestToAddParams extends HttpServletRequestWrapper {
+
+    private Map<String, ValueExpression> params = Collections.emptyMap();
+
+    public WrapHttpServletRequestToAddParams(FacesContext facesContext, Map<String, ValueExpression> toCopy, HttpServletRequest request) {
+        super(request);
+        if (!toCopy.isEmpty()) {
+            params = new HashMap<String, ValueExpression>();
+            ELContext elContext = facesContext.getELContext();
+            ExpressionFactory ef = facesContext.getApplication().getExpressionFactory();
+            for (String cur : toCopy.keySet()) {
+                params.put(cur, ef.createValueExpression(elContext, toCopy.get(cur).getExpressionString(), Object.class));
+            }
+        }
+    }
+
+    @Override
+    public String getParameter(String name) {
+        return (String) this.getAttribute(name);
+    }
+
+
+
+    @Override
+    public Object getAttribute(String name) {
+        Object result = null;
+        if (params.containsKey(name)) {
+            ValueExpression ve = params.get(name);
+            result = ve.getValue(FacesContext.getCurrentInstance().getELContext());
+        } else {
+            result = super.getAttribute(name);
+        }
+        return result;
+    }
+
+    @Override
+    public Enumeration getAttributeNames() {
+        return Collections.enumeration(params.keySet());
+    }
+}
diff --git a/jsf-ri/systest-per-webapp/process-as-jspx/src/java/com/sun/faces/systest/ProcessAsJspxBean.java b/jsf-ri/systest-per-webapp/process-as-jspx/src/java/com/sun/faces/systest/ProcessAsJspxBean.java
new file mode 100644
index 0000000..36d79ca
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/process-as-jspx/src/java/com/sun/faces/systest/ProcessAsJspxBean.java
@@ -0,0 +1,54 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.RequestScoped;
+
+ at ManagedBean
+ at RequestScoped
+public class ProcessAsJspxBean {
+
+    public String getProp() {
+	return "Hello < World";
+    }
+
+}
diff --git a/jsf-ri/systest-per-webapp/process-as-jspx/src/java/com/sun/faces/systest/ProcessAsJspxTestCase.java b/jsf-ri/systest-per-webapp/process-as-jspx/src/java/com/sun/faces/systest/ProcessAsJspxTestCase.java
new file mode 100644
index 0000000..2271767
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/process-as-jspx/src/java/com/sun/faces/systest/ProcessAsJspxTestCase.java
@@ -0,0 +1,167 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest;
+
+
+import com.gargoylesoftware.htmlunit.Page;
+import com.gargoylesoftware.htmlunit.WebResponse;
+import com.sun.faces.htmlunit.HtmlUnitFacesTestCase;
+import java.io.BufferedReader;
+import java.io.InputStreamReader;
+import java.net.URL;
+import java.util.regex.Pattern;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+
+public class ProcessAsJspxTestCase extends HtmlUnitFacesTestCase {
+
+    private final static Pattern XmlDeclaration = Pattern.compile("(?s)^<\\?xml(\\s)*version=.*\\?>.*");
+    private final static Pattern XmlDoctype = Pattern.compile("(?s).*<!DOCTYPE.*>.*");
+    private final static Pattern XmlPI = Pattern.compile("(?s).*<\\?xml-stylesheet.*\\?>.*");
+    private final static Pattern CDATASection = Pattern.compile("(?s).*<!\\[CDATA\\[ .*\\]\\]>.*");
+    private final static Pattern Comment = Pattern.compile("(?s).*<!--.*-->.*");
+    private final static Pattern EscapedText = Pattern.compile("(?s).*&lt;context-param&gt;.*");
+    private final static Pattern NotEscapedText = Pattern.compile("(?s).*<context-param>.*");
+
+
+    public ProcessAsJspxTestCase(String name) {
+        super(name);
+    }
+
+    /**
+     * Set up instance variables required by this test case.
+     */
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+
+
+    /**
+     * Return the tests included in this test suite.
+     */
+    public static Test suite() {
+        return (new TestSuite(ProcessAsJspxTestCase.class));
+    }
+
+
+    /**
+     * Tear down instance variables required by this test case.
+     */
+    public void tearDown() {
+        super.tearDown();
+    }
+    
+    private String getRawMarkup(String path) throws Exception {
+        URL url = getURL(path);
+        BufferedReader reader = new BufferedReader(new InputStreamReader(url.openStream()));
+        StringBuilder builder = new StringBuilder();
+        String cur;
+        while (null != (cur = reader.readLine())) {
+            builder.append(cur);
+        }
+
+        String xml = builder.toString();
+        return xml;
+    }
+    
+    // ------------------------------------------------------------ Test Methods
+    
+    public void testProcessAsXhtml() throws Exception {
+
+        String xml = getRawMarkup("/faces/xhtmlview.xhtml");
+        assertTrue(XmlDoctype.matcher(xml).matches());
+        assertTrue(XmlDeclaration.matcher(xml).matches());
+        assertTrue(XmlPI.matcher(xml).matches());
+        assertTrue(CDATASection.matcher(xml).matches());
+        assertTrue(EscapedText.matcher(xml).matches());
+        assertTrue(Comment.matcher(xml).matches());
+    }
+
+    public void testProcessAsXml() throws Exception {
+
+        String xml = getRawMarkup("/faces/xmlview.view.xml");
+        assertFalse(XmlDoctype.matcher(xml).matches());
+        assertFalse(XmlDeclaration.matcher(xml).matches());
+        assertFalse(XmlPI.matcher(xml).matches());
+        assertFalse(CDATASection.matcher(xml).matches());
+        assertTrue(EscapedText.matcher(xml).matches());
+        assertFalse(Comment.matcher(xml).matches());
+    }
+
+    public void testProcessAsXmlWithDifferentXmlnsCases() throws Exception {
+
+        String xml = getRawMarkup("/faces/xmlviewWithHtmlRoot.view.xml");
+        assertTrue(xml.matches("(?s).*<html.*xmlns=\"http://www.w3.org/1999/xhtml\">.*"));
+        xml = getRawMarkup("/faces/xmlviewWithHtmlRootAndXmlnsOnHeadAndBody.view.xml");
+        assertTrue(xml.matches("(?s).*<html>.*<head.*xmlns=\"http://www.w3.org/1999/xhtml\">.*<body.*xmlns=\"http://www.w3.org/1999/xhtml\">.*"));
+    }
+
+    public void testProcessAsXmlWithDoctype() throws Exception {
+
+        String xml = getRawMarkup("/faces/xmlviewWithDoctype.view.xml");
+        assertTrue(xml.matches("(?s).*<!DOCTYPE.*html.*PUBLIC.*\"-//W3C//DTD.*XHTML.*1.0.*Transitional//EN\".*\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\"><html.*xmlns=\"http://www.w3.org/1999/xhtml\".*"));
+    }
+
+    public void testProcessAsXmlMathML() throws Exception {
+
+        String xml = getRawMarkup("/faces/mathmlview.view.xml");
+        assertTrue(xml.matches("(?s).*<html.*xmlns=\"http://www.w3.org/1999/xhtml\">.*<head>.*<title>.*Raw.*XML.*View.*with.*MathML</title>.*</head>.*<body>.*<p>.*<math.*xmlns=\"http://www.w3.org/1998/Math/MathML\">.*<msup>.*<msqrt>.*<mrow>.*<mi>.*a</mi>.*<mo>.*\\+</mo>.*<mi>.*b</mi>.*</mrow>.*</msqrt>.*<mn>.*27</mn>.*</msup>.*</math>.*</p>.*</body>.*</html>.*"));
+
+        Page page = client.getPage(getURL("/faces/mathmlview.view.xml"));
+        WebResponse response = page.getWebResponse();
+        assertEquals("Content-type should be text/xml", "text/xml", response.getContentType());
+
+    }
+
+    public void testProcessAsJspx() throws Exception {
+
+        String xml = getRawMarkup("/faces/jspxview.jspx");
+        assertFalse(XmlDoctype.matcher(xml).matches());
+        assertFalse(XmlDeclaration.matcher(xml).matches());
+        assertFalse(XmlPI.matcher(xml).matches());
+        assertFalse(CDATASection.matcher(xml).matches());
+        assertTrue(xml.matches("(?s).*<p>This\\s+is\\s+CDATA\\s+content</p>.*"));
+        assertTrue(NotEscapedText.matcher(xml).matches());
+        assertFalse(Comment.matcher(xml).matches());
+    }
+
+}
diff --git a/jsf-ri/systest-per-webapp/process-as-jspx/src/java/com/sun/faces/systest/UseBeanBean.java b/jsf-ri/systest-per-webapp/process-as-jspx/src/java/com/sun/faces/systest/UseBeanBean.java
new file mode 100644
index 0000000..72db655
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/process-as-jspx/src/java/com/sun/faces/systest/UseBeanBean.java
@@ -0,0 +1,61 @@
+
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest;
+
+
+
+public class UseBeanBean {
+
+    public UseBeanBean() {
+    }
+
+    private String username;
+
+    public String getUsername() {
+        return username;
+    }
+
+    public void setUsername(String username) {
+        this.username = username;
+    }
+
+}
diff --git a/jsf-ri/systest-per-webapp/process-as-jspx/web/WEB-INF/faces-config.xml b/jsf-ri/systest-per-webapp/process-as-jspx/web/WEB-INF/faces-config.xml
new file mode 100644
index 0000000..e148e38
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/process-as-jspx/web/WEB-INF/faces-config.xml
@@ -0,0 +1,19 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<faces-config
+  xmlns="http://java.sun.com/xml/ns/javaee"
+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_1.xsd"
+  version="2.1">
+
+  <faces-config-extension>
+    <facelets-processing>
+      <file-extension>.jspx</file-extension>
+      <process-as>jspx</process-as>
+    </facelets-processing>
+    <facelets-processing>
+      <file-extension>.view.xml</file-extension>
+      <process-as>xml</process-as>
+    </facelets-processing>
+  </faces-config-extension>
+
+</faces-config>
diff --git a/jsf-ri/systest-per-webapp/process-as-jspx/web/WEB-INF/jspx.taglib.xml b/jsf-ri/systest-per-webapp/process-as-jspx/web/WEB-INF/jspx.taglib.xml
new file mode 100644
index 0000000..ca2fde5
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/process-as-jspx/web/WEB-INF/jspx.taglib.xml
@@ -0,0 +1,125 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<facelet-taglib xmlns="http://xmlns.jcp.org/xml/ns/javaee"
+              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+              xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-facelettaglibrary_2_2.xsd"
+              version="2.2">
+    <namespace>http://xmlns.jcp.org/JSP/Page</namespace>
+
+    <!-- http://xmlns.jcp.org/products/jsp/syntax/1.2/syntaxref12.html -->  
+    <tag>
+        <tag-name>root</tag-name>
+        <handler-class>com.sun.faces.facelets.tag.jsp.DummyTagHandler</handler-class>
+    </tag>
+    <tag>
+        <tag-name>directive.page</tag-name>
+        <handler-class>com.sun.faces.facelets.tag.jsp.PageDirectiveHandler</handler-class>
+    </tag>
+    <tag>
+        <tag-name>directive.include</tag-name>
+        <handler-class>com.sun.faces.facelets.tag.ui.IncludeHandler</handler-class>
+    </tag>
+    <tag>
+        <tag-name>include</tag-name>
+        <handler-class>com.sun.faces.facelets.tag.ui.IncludeHandler</handler-class>
+    </tag>
+    <tag>
+        <tag-name>declaration</tag-name>
+        <handler-class>com.sun.faces.facelets.tag.jsp.DummyTagHandler</handler-class>
+    </tag>
+    <tag>
+        <tag-name>expression</tag-name>
+        <handler-class>com.sun.faces.facelets.tag.jsp.DummyTagHandler</handler-class>
+    </tag>
+    <tag>
+        <tag-name>scriptlet</tag-name>
+        <handler-class>com.sun.faces.facelets.tag.jsp.DummyTagHandler</handler-class>
+    </tag>
+    <tag>
+        <tag-name>text</tag-name>
+        <handler-class>com.sun.faces.facelets.tag.jsp.DummyTagHandler</handler-class>
+    </tag>
+    <tag>
+        <tag-name>forward</tag-name>
+        <handler-class>com.sun.faces.facelets.tag.jsp.ForwardHandler</handler-class>
+    </tag>
+    <tag>
+        <tag-name>param</tag-name>
+        <handler-class>com.sun.faces.facelets.tag.jsp.ParamHandler</handler-class>
+    </tag>
+    <tag>
+        <tag-name>params</tag-name>
+        <handler-class>com.sun.faces.facelets.tag.jsp.DummyTagHandler</handler-class>
+    </tag>
+    <tag>
+        <tag-name>plugin</tag-name>
+        <component>
+            <component-type>javax.faces.Output</component-type>
+            <renderer-type>jsp.Plugin</renderer-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>params</tag-name>
+        <handler-class>com.sun.faces.facelets.tag.jsp.DummyTagHandler</handler-class>
+    </tag>
+    <tag>
+        <tag-name>fallback</tag-name>
+        <handler-class>com.sun.faces.facelets.tag.jsp.DummyTagHandler</handler-class>
+    </tag>
+    <tag>
+        <tag-name>setProperty</tag-name>
+        <handler-class>com.sun.faces.facelets.tag.jsp.SetPropertyHandler</handler-class>
+    </tag>
+    <tag>
+        <tag-name>useBean</tag-name>
+        <handler-class>com.sun.faces.facelets.tag.jsp.UseBeanHandler</handler-class>
+    </tag>
+    <tag>
+        <tag-name>getProperty</tag-name>
+        <component>
+            <component-type>javax.faces.Output</component-type>
+            <renderer-type>jsp.GetProperty</renderer-type>
+        </component>
+    </tag>
+</facelet-taglib>
diff --git a/jsf-ri/systest-per-webapp/process-as-jspx/web/WEB-INF/web.xml b/jsf-ri/systest-per-webapp/process-as-jspx/web/WEB-INF/web.xml
new file mode 100644
index 0000000..cdef361
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/process-as-jspx/web/WEB-INF/web.xml
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<web-app version="2.5"
+         xmlns="http://java.sun.com/xml/ns/javaee"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
+
+    <description>
+       JSPX Compatibility
+    </description>
+    <display-name>JSPX Compatibility</display-name>
+
+    <context-param>
+        <param-name>javax.faces.FACELETS_VIEW_MAPPINGS</param-name>
+        <param-value>*.xhtml;*.view.xml;*.jspx</param-value>
+    </context-param>
+
+    <context-param>
+        <param-name>javax.faces.FACELETS_LIBRARIES</param-name>
+        <param-value>/WEB-INF/jspx.taglib.xml</param-value>
+    </context-param>
+
+    <context-param>
+        <param-name>javax.faces.DEFAULT_SUFFIX</param-name>
+        <param-value>.xhtml .view.xml .jsp .jspx</param-value>
+    </context-param>
+
+    <!-- Faces Servlet -->
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup> 1 </load-on-startup>
+    </servlet>
+
+    <!-- Faces Servlet Mapping -->
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+        <url-pattern>*.jsf</url-pattern>
+    </servlet-mapping>
+
+</web-app>
diff --git a/jsf-ri/systest-per-webapp/process-as-jspx/web/fromForward.jspx b/jsf-ri/systest-per-webapp/process-as-jspx/web/fromForward.jspx
new file mode 100644
index 0000000..7b47eca
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/process-as-jspx/web/fromForward.jspx
@@ -0,0 +1,22 @@
+<?xml version='1.0' encoding='utf-8'?>
+<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page"
+          xmlns:f="http://java.sun.com/jsf/core"
+          xmlns:h="http://java.sun.com/jsf/html"
+          version="1.2">
+  <jsp:directive.page contentType="text/html;charset=utf-8"/>
+  <f:view>
+
+<html xmlns="http://www.w3.org/1999/xhtml">    
+<head><title>receive a forward</title></head>
+<body>
+
+<p>This page is the result of a forward.</p>
+
+<h:outputText id="param1" value="#{param['param1']}" /> <br />
+<h:outputText id="param2" value="#{param['param2']}" /> <br />
+
+</body>
+</html>
+      
+  </f:view>
+</jsp:root>
diff --git a/jsf-ri/systest-per-webapp/process-as-jspx/web/includedjspxfile.jspx b/jsf-ri/systest-per-webapp/process-as-jspx/web/includedjspxfile.jspx
new file mode 100644
index 0000000..b696d38
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/process-as-jspx/web/includedjspxfile.jspx
@@ -0,0 +1,11 @@
+<?xml version='1.0' encoding='utf-8'?>
+<!-- Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved. -->
+<!DOCTYPE jsp>
+<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page"
+          xmlns:f="http://java.sun.com/jsf/core"
+          xmlns:h="http://java.sun.com/jsf/html"
+          version="1.2">
+
+<h:outputText value="output text in included page" />
+
+</jsp:root>
diff --git a/jsf-ri/systest-per-webapp/process-as-jspx/web/includedjspxfile2.jspx b/jsf-ri/systest-per-webapp/process-as-jspx/web/includedjspxfile2.jspx
new file mode 100644
index 0000000..1ed636f
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/process-as-jspx/web/includedjspxfile2.jspx
@@ -0,0 +1,11 @@
+<?xml version='1.0' encoding='utf-8'?>
+<!-- Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved. -->
+<!DOCTYPE jsp>
+<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page"
+          xmlns:f="http://java.sun.com/jsf/core"
+          xmlns:h="http://java.sun.com/jsf/html"
+          version="1.2">
+
+<h:outputText value="output text in second included page" />
+
+</jsp:root>
diff --git a/jsf-ri/systest-per-webapp/process-as-jspx/web/index.html b/jsf-ri/systest-per-webapp/process-as-jspx/web/index.html
new file mode 100644
index 0000000..383b0c3
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/process-as-jspx/web/index.html
@@ -0,0 +1,140 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+  <head>
+    <title>Test all permutations of facelets processing modes</title>
+  </head>
+
+  <body>
+    <h1>Test all permutations of facelets processing modes</h1>
+
+<table border="1">
+
+<tr>
+
+<td> 
+</td>
+
+<th>xhtml
+</th>
+
+<th>xml
+</th>
+
+<th>jspx
+</th>
+
+</tr>
+
+<tr>
+
+<th>XML Doctype
+</th>
+
+<td>passed through
+</td>
+
+<td>consumed
+</td>
+
+<td>consumed
+</td>
+
+</tr>
+
+<tr>
+
+<th>XML Declaration
+</th>
+
+<td>passed through
+</td>
+
+<td>consumed
+</td>
+
+<td>consumed
+</td>
+
+</tr>
+
+<tr>
+
+<th>Processing Instructions
+</th>
+
+<td>passed through
+</td>
+
+<td>consumed
+</td>
+
+<td>consumed
+</td>
+
+</tr>
+
+<tr>
+
+<th>CDATA
+</th>
+
+<td>passed through
+</td>
+
+<td>consumed
+</td>
+
+<td>consumed
+</td>
+
+</tr>
+
+<tr>
+
+<th>Inline text escaping
+</th>
+
+<td>escaped
+</td>
+
+<td>escaped
+</td>
+
+<td>not escaped
+</td>
+
+</tr>
+
+<tr>
+
+<th>Comments
+</th>
+
+<td>passed through
+</td>
+
+<td>consumed
+</td>
+
+<td>consumed
+</td>
+
+</tr>
+
+
+</table>
+
+
+
+<p><a href="/jsf-process-as-jspx/faces/xhtmlview.xhtml">Classic Facelets processed as Facelets in XHTML mode</a></p>
+<p><a href="/jsf-process-as-jspx/faces/xmlview.view.xml">XML processed as Facelets in XML mode</a></p>
+<p><a href="/jsf-process-as-jspx/faces/jspxview.jspx">JSPX processed as Facelets in JSPX mode</a></p>
+<p><a href="/jsf-process-as-jspx/faces/jspview.jsp">JSP processed as JSP</a></p>
+
+    <hr>
+<!-- Created: Wed Sep 29 12:17:11 EDT 2010 -->
+<!-- hhmts start -->
+Last modified: Tue Nov  2 21:54:44 EDT 2010
+<!-- hhmts end -->
+  </body>
+</html>
diff --git a/jsf-ri/systest-per-webapp/process-as-jspx/web/jspview.jsp b/jsf-ri/systest-per-webapp/process-as-jspx/web/jspview.jsp
new file mode 100644
index 0000000..40785ef
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/process-as-jspx/web/jspview.jsp
@@ -0,0 +1,111 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+  <head>
+    <title>JSP view</title>
+    <%@ taglib uri="http://java.sun.com/jsf/core"  prefix="f" %>
+    <%@ taglib uri="http://java.sun.com/jsf/html"  prefix="h" %>
+  </head>
+
+  <body>
+<f:view>
+
+<p>HTML Template Text</p>
+
+<p><h:outputText value="#{processAsJspxBean.prop}" /></p>
+
+<h:form prependId="false">
+
+<h:commandButton value="reload" />
+
+</h:form>
+
+                  <code>
+                    <br/>
+                    &lt;context-param&gt;
+                    <br/>
+                     
+&nbsp;&nbsp;&lt;param-name&gt;javax.faces.PARTIAL_STATE_SAVING 
+
+&lt;/param-name&gt;
+                    <br/>
+                     
+&nbsp;&nbsp;&lt;param-value&gt;true&lt;/param-value&gt 
+
+;
+                    <br/>
+                    &lt;/context-param&gt;
+                  </code>      
+
+
+<jsp:text>
+  some text
+</jsp:text>
+
+<jsp:plugin 
+   type="applet" 
+   code="Blink.class" 
+   codebase="."
+   name="Arthur van Hoff"
+   align="baseline"
+   width="300"
+   height="200"
+   hspace="20"
+   vspace="20"
+   jreversion="1.6">
+  <jsp:params>
+    <jsp:param name="lbl" value="This is the next best thing to sliced bread! Toast, toast, toast, butter, jam, toast, marmite, toast." /> 
+  </jsp:params>
+  <jsp:fallback>
+No JDK 1.3 support for APPLET!!
+  </jsp:fallback>
+</jsp:plugin>
+
+</f:view>
+
+    <hr>
+  </body>
+</html>
diff --git a/jsf-ri/systest-per-webapp/process-as-jspx/web/jspxview.jspx b/jsf-ri/systest-per-webapp/process-as-jspx/web/jspxview.jspx
new file mode 100644
index 0000000..1fe7db0
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/process-as-jspx/web/jspxview.jspx
@@ -0,0 +1,112 @@
+<?xml version='1.0' encoding='utf-8'?>
+<!-- Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved. -->
+<!DOCTYPE jsp>
+<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page"
+          xmlns:f="http://java.sun.com/jsf/core"
+          xmlns:h="http://java.sun.com/jsf/html"
+          version="1.2">
+  <jsp:directive.page contentType="text/html;charset=utf-8"/>
+  <f:view>
+
+<html xmlns="http://www.w3.org/1999/xhtml">    
+<body>
+      
+        <f:attribute name="mode" value="index"/>
+
+<jsp:declaration>
+  int i = 0;
+</jsp:declaration>
+
+<jsp:expression>
+  numguess.getHint()
+</jsp:expression>
+
+<jsp:scriptlet>
+   String name = null;	
+   if (request.getParameter("name") == null) {	  
+</jsp:scriptlet>
+
+<h2>XML declaration: consumed</h2>
+
+<h2>Processing instruction: consumed</h2>
+
+<?xml-stylesheet href="funky.xsl" type="text/xml" alternate="yes"?>
+
+<h2>CDATA section: consumed</h2>
+
+<![CDATA[ <p>This is CDATA content</p> ]]>
+
+<h2>Inline text escaping: not escaped</h2>
+
+
+                  <code>
+                    <br/>
+                    &lt;context-param&gt;
+                    <br/>
+                     
+&nbsp;&nbsp;&lt;param-name&gt;javax.faces.PARTIAL_STATE_SAVING 
+
+&lt;/param-name&gt;
+                    <br/>
+                     
+&nbsp;&nbsp;&lt;param-value&gt;true&lt;/param-value&gt 
+
+;
+                    <br/>
+                    &lt;/context-param&gt;
+                  </code>
+
+<h2>Comments: consumed</h2>
+
+<jsp:text>
+<p>HTML Template Text</p>
+</jsp:text>
+
+<jsp:directive.include file="includedjspxfile.jspx" />
+
+<jsp:include page="includedjspxfile2.jspx" />
+
+
+<p><h:outputText value="#{processAsJspxBean.prop}" /></p>
+
+<h:form prependId="false">
+
+<h:commandButton value="reload" /> <br />
+
+<h:commandButton value="test jsp:forward" action="toForward" />
+
+</h:form>
+
+
+<!-- comments consumed -->
+
+<jsp:useBean id="useBeanBean" class="com.sun.faces.systest.UseBeanBean" />	
+      
+<jsp:setProperty name="useBeanBean" property="username" value="Steve" />
+
+<jsp:plugin 
+   type="applet" 
+   code="Blink.class" 
+   codebase="."
+   name="Arthur van Hoff"
+   align="baseline"
+   width="300"
+   height="200"
+   hspace="20"
+   vspace="20"
+   jreversion="1.6">
+  <jsp:params>
+    <jsp:param name="lbl" value="This is the next best thing to sliced bread! Toast, toast, toast, butter, jam, toast, marmite, toast." /> 
+  </jsp:params>
+  <jsp:fallback>
+No JDK 1.3 support for APPLET!!
+  </jsp:fallback>
+</jsp:plugin>
+
+<jsp:getProperty name="useBeanBean" property="username" />
+
+
+</body>
+</html>    
+  </f:view>
+</jsp:root>
diff --git a/jsf-ri/systest-per-webapp/process-as-jspx/web/mathmlview.view.xml b/jsf-ri/systest-per-webapp/process-as-jspx/web/mathmlview.view.xml
new file mode 100644
index 0000000..5d1ea03
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/process-as-jspx/web/mathmlview.view.xml
@@ -0,0 +1,80 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<f:view xmlns:f="http://java.sun.com/jsf/core"
+        xmlns:h="http://java.sun.com/jsf/html"
+        contentType="text/xml">
+    <html xmlns="http://www.w3.org/1999/xhtml">
+
+        <h:head>
+
+          <title>Raw XML View with MathML</title>
+
+        </h:head>
+
+        <h:body>
+
+<p>
+<math xmlns="http://www.w3.org/1998/Math/MathML">
+  <msup>
+    <msqrt>
+      <mrow>
+        <mi>a</mi>
+        <mo>+</mo>
+
+        <mi>b</mi>
+      </mrow>
+    </msqrt>
+    <mn>27</mn>
+  </msup>
+</math>
+</p>
+
+        </h:body>
+
+    </html>
+
+</f:view>
+
+
diff --git a/jsf-ri/systest-per-webapp/process-as-jspx/web/toForward.jspx b/jsf-ri/systest-per-webapp/process-as-jspx/web/toForward.jspx
new file mode 100644
index 0000000..e5a0be1
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/process-as-jspx/web/toForward.jspx
@@ -0,0 +1,27 @@
+<?xml version='1.0' encoding='utf-8'?>
+<!-- Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved. -->
+<!DOCTYPE jsp>
+<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page"
+          xmlns:f="http://java.sun.com/jsf/core"
+          xmlns:h="http://java.sun.com/jsf/html"
+          version="1.2">
+  <jsp:directive.page contentType="text/html;charset=utf-8"/>
+  <f:view>
+
+<html xmlns="http://www.w3.org/1999/xhtml">    
+<head><title>test jsp:forward with params</title></head>
+<body>
+
+  <jsp:forward page="/faces/fromForward.jspx">
+ 
+    <jsp:param name="param1" value="param1Value" />
+    <jsp:param name="param2" value="param2Value" />
+
+  </jsp:forward>
+
+</body>
+
+</html>
+      
+  </f:view>
+</jsp:root>
diff --git a/jsf-ri/systest-per-webapp/process-as-jspx/web/xhtmlview.xhtml b/jsf-ri/systest-per-webapp/process-as-jspx/web/xhtmlview.xhtml
new file mode 100644
index 0000000..e7fd5e3
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/process-as-jspx/web/xhtmlview.xhtml
@@ -0,0 +1,111 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2009-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+<h:head>
+    <title>Process JSPX as Facelets for JSPX mode</title>
+</h:head>
+<h:body bgcolor="white">
+
+<h2>XML declaration: passed through</h2>
+
+<h2>Processing instruction: passed through</h2>
+
+<?xml-stylesheet href="funky.xsl" type="text/xml" alternate="yes"?>
+
+<h2>CDATA section: passed through</h2>
+
+<![CDATA[ <h2>This is CDATA</h2> ]]>
+
+<h2>Inline text escaping: escaped</h2>
+
+                  <code>
+                    <br/>
+                    &lt;context-param&gt;
+                    <br/>
+                     
+&nbsp;&nbsp;&lt;param-name&gt;javax.faces.PARTIAL_STATE_SAVING 
+
+&lt;/param-name&gt;
+                    <br/>
+                     
+&nbsp;&nbsp;&lt;param-value&gt;true&lt;/param-value&gt 
+
+;
+                    <br/>
+                    &lt;/context-param&gt;
+                  </code>
+
+<h2>Comments: passed through</h2>
+
+<!-- comments pass through -->
+
+<hr />
+
+  <h:form prependId="false" id="form1">
+
+   <h:panelGrid columns="2" border="1" width="600">
+
+     <h:outputText value="column1" />
+
+     <h:outputText value="column2" />
+      
+   </h:panelGrid>
+
+
+   #{processAsJspxBean.prop}
+
+
+   
+
+  </h:form>
+
+   <hr />
+
+   <h:messages id="messages"/>
+
+
+</h:body>
+</html>  
diff --git a/jsf-ri/systest-per-webapp/process-as-jspx/web/xmlview.view.xml b/jsf-ri/systest-per-webapp/process-as-jspx/web/xmlview.view.xml
new file mode 100644
index 0000000..4248b85
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/process-as-jspx/web/xmlview.view.xml
@@ -0,0 +1,110 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<!DOCTYPE f>
+<f:view xmlns:f="http://java.sun.com/jsf/core"
+        xmlns:h="http://java.sun.com/jsf/html">
+
+    <html xmlns="http://www.w3.org/1999/xhtml">
+
+        <h:head><title>Raw XML View</title></h:head>
+
+        <h:body>
+
+<h2>XML declaration: consumed</h2>
+
+<h2>Processing instruction: consumed</h2>
+
+<?xml-stylesheet href="funky.xsl" type="text/xml" alternate="yes"?>
+
+<h2>CDATA section: consumed</h2>
+
+<![CDATA[ <p>This is CDATA</p> ]]>
+
+<h2>Inline text escaping: escaped</h2>
+
+                  <code>
+                    <br/>
+                    &lt;context-param&gt;
+                    <br/>
+                     
+&nbsp;&nbsp;&lt;param-name&gt;javax.faces.PARTIAL_STATE_SAVING 
+
+&lt;/param-name&gt;
+                    <br/>
+                     
+&nbsp;&nbsp;&lt;param-value&gt;true&lt;/param-value&gt 
+
+;
+                    <br/>
+                    &lt;/context-param&gt;
+                  </code>
+
+<h2>Comments: consumed</h2>
+
+<!-- comments consumed -->
+
+            <h:form prependId="false" id="form">
+
+                <h:panelGrid id="grid" column="2">
+
+                    <h:outputText id="text" value="hello"></h:outputText>
+
+                    <h:commandButton id="button" value="reload"></h:commandButton>
+
+
+                </h:panelGrid>
+
+   #{processAsJspxBean.prop}
+
+<p>html template text</p>
+
+
+            </h:form>
+
+        </h:body>
+
+    </html>
+
+</f:view>
+
+
diff --git a/jsf-ri/systest-per-webapp/process-as-jspx/web/xmlviewWithDoctype.view.xml b/jsf-ri/systest-per-webapp/process-as-jspx/web/xmlviewWithDoctype.view.xml
new file mode 100644
index 0000000..9b180a8
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/process-as-jspx/web/xmlviewWithDoctype.view.xml
@@ -0,0 +1,112 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<!DOCTYPE f>
+<f:view xmlns:f="http://java.sun.com/jsf/core"
+        xmlns:h="http://java.sun.com/jsf/html">
+    <h:doctype rootElement="html" 
+               public="-//W3C//DTD XHTML 1.0 Transitional//EN"
+               system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" />
+    <html xmlns="http://www.w3.org/1999/xhtml">
+
+        <h:head><title>Raw XML View</title></h:head>
+
+        <h:body>
+
+<h2>XML declaration: consumed</h2>
+
+<h2>Processing instruction: consumed</h2>
+
+<?xml-stylesheet href="funky.xsl" type="text/xml" alternate="yes"?>
+
+<h2>CDATA section: consumed</h2>
+
+<![CDATA[ <p>This is CDATA</p> ]]>
+
+<h2>Inline text escaping: escaped</h2>
+
+                  <code>
+                    <br/>
+                    &lt;context-param&gt;
+                    <br/>
+                     
+&nbsp;&nbsp;&lt;param-name&gt;javax.faces.PARTIAL_STATE_SAVING 
+
+&lt;/param-name&gt;
+                    <br/>
+                     
+&nbsp;&nbsp;&lt;param-value&gt;true&lt;/param-value&gt 
+
+;
+                    <br/>
+                    &lt;/context-param&gt;
+                  </code>
+
+<h2>Comments: consumed</h2>
+
+<!-- comments consumed -->
+
+            <h:form prependId="false" id="form">
+
+                <h:panelGrid id="grid" column="2">
+
+                    <h:outputText id="text" value="hello"></h:outputText>
+
+                    <h:commandButton id="button" value="reload"></h:commandButton>
+
+
+                </h:panelGrid>
+
+   #{processAsJspxBean.prop}
+
+<p>html template text</p>
+
+
+            </h:form>
+
+        </h:body>
+
+    </html>
+
+</f:view>
+
+
diff --git a/jsf-ri/systest-per-webapp/process-as-jspx/web/xmlviewWithHtmlRoot.view.xml b/jsf-ri/systest-per-webapp/process-as-jspx/web/xmlviewWithHtmlRoot.view.xml
new file mode 100644
index 0000000..7817ce8
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/process-as-jspx/web/xmlviewWithHtmlRoot.view.xml
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+        xmlns:f="http://java.sun.com/jsf/core"
+        xmlns:h="http://java.sun.com/jsf/html">
+
+        <h:head><title>XML View with HTML root element</title></h:head>
+
+        <h:body>
+
+<h2>This is an h2</h2>
+
+        </h:body>
+
+</html>
+
+
+
diff --git a/jsf-ri/systest-per-webapp/process-as-jspx/web/xmlviewWithHtmlRootAndXmlnsOnHeadAndBody.view.xml b/jsf-ri/systest-per-webapp/process-as-jspx/web/xmlviewWithHtmlRootAndXmlnsOnHeadAndBody.view.xml
new file mode 100644
index 0000000..93d4569
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/process-as-jspx/web/xmlviewWithHtmlRootAndXmlnsOnHeadAndBody.view.xml
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<html xmlns:f="http://java.sun.com/jsf/core"
+        xmlns:h="http://java.sun.com/jsf/html">
+
+        <h:head xmlns="http://www.w3.org/1999/xhtml"><title>XML View with HTML root element</title></h:head>
+
+        <h:body xmlns="http://www.w3.org/1999/xhtml">
+
+<h2>This is an h2</h2>
+
+        </h:body>
+
+</html>
+
+
+
diff --git a/jsf-ri/systest-per-webapp/property-resolver-jsp/src/java/com/sun/faces/systest/PropertyResolverJspTestCase.java b/jsf-ri/systest-per-webapp/property-resolver-jsp/src/java/com/sun/faces/systest/PropertyResolverJspTestCase.java
index 775b537..6077a8a 100644
--- a/jsf-ri/systest-per-webapp/property-resolver-jsp/src/java/com/sun/faces/systest/PropertyResolverJspTestCase.java
+++ b/jsf-ri/systest-per-webapp/property-resolver-jsp/src/java/com/sun/faces/systest/PropertyResolverJspTestCase.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -34,10 +38,9 @@
  * holder.
  */
 
-
 package com.sun.faces.systest;
 
-import com.sun.faces.htmlunit.AbstractTestCase;
+import com.sun.faces.htmlunit.HtmlUnitFacesTestCase;
 import com.gargoylesoftware.htmlunit.html.HtmlPage;
 import junit.framework.Test;
 import junit.framework.TestSuite;
@@ -48,7 +51,7 @@ import junit.framework.TestSuite;
  * JSP layer still works.</p>
  */
 
-public class PropertyResolverJspTestCase extends AbstractTestCase {
+public class PropertyResolverJspTestCase extends HtmlUnitFacesTestCase {
 
     // ------------------------------------------------------------ Constructors
 
@@ -105,4 +108,4 @@ public class PropertyResolverJspTestCase extends AbstractTestCase {
 
     }
 
-}
\ No newline at end of file
+}
diff --git a/jsf-ri/systest-per-webapp/property-resolver-jsp/src/java/com/sun/faces/systest/RegisteredPropertyResolver.java b/jsf-ri/systest-per-webapp/property-resolver-jsp/src/java/com/sun/faces/systest/RegisteredPropertyResolver.java
index fedb8dc..14d448f 100644
--- a/jsf-ri/systest-per-webapp/property-resolver-jsp/src/java/com/sun/faces/systest/RegisteredPropertyResolver.java
+++ b/jsf-ri/systest-per-webapp/property-resolver-jsp/src/java/com/sun/faces/systest/RegisteredPropertyResolver.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/systest-per-webapp/property-resolver-jsp/web/Test.jsp b/jsf-ri/systest-per-webapp/property-resolver-jsp/web/Test.jsp
index 6115eb5..fc6d8a5 100644
--- a/jsf-ri/systest-per-webapp/property-resolver-jsp/web/Test.jsp
+++ b/jsf-ri/systest-per-webapp/property-resolver-jsp/web/Test.jsp
@@ -1,39 +1,44 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
---%>
 
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
 
 <%@ page contentType="text/html;charset=UTF-8" language="java" %>
 <%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %>
@@ -49,4 +54,4 @@
   %>
   <p>${requestScope.resolved}</p>
   </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/jsf-ri/systest-per-webapp/property-resolver-jsp/web/WEB-INF/faces-config.xml b/jsf-ri/systest-per-webapp/property-resolver-jsp/web/WEB-INF/faces-config.xml
index dfd71e6..73363c9 100644
--- a/jsf-ri/systest-per-webapp/property-resolver-jsp/web/WEB-INF/faces-config.xml
+++ b/jsf-ri/systest-per-webapp/property-resolver-jsp/web/WEB-INF/faces-config.xml
@@ -1,41 +1,45 @@
 <?xml version='1.0' encoding='UTF-8'?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
--->
 
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
 
 <faces-config xmlns="http://java.sun.com/xml/ns/javaee"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
diff --git a/jsf-ri/systest-per-webapp/property-resolver-jsp/web/WEB-INF/web.xml b/jsf-ri/systest-per-webapp/property-resolver-jsp/web/WEB-INF/web.xml
index a33e94d..79aac7a 100644
--- a/jsf-ri/systest-per-webapp/property-resolver-jsp/web/WEB-INF/web.xml
+++ b/jsf-ri/systest-per-webapp/property-resolver-jsp/web/WEB-INF/web.xml
@@ -1,39 +1,44 @@
 <?xml version="1.0" encoding="ISO-8859-1"?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
 
 <web-app xmlns="http://java.sun.com/xml/ns/javaee"
diff --git a/jsf-ri/systest-per-webapp/replace-application/src/java/com/sun/faces/systest/NewApplication.java b/jsf-ri/systest-per-webapp/replace-application/src/java/com/sun/faces/systest/NewApplication.java
index d5f75c0..d29ed3f 100644
--- a/jsf-ri/systest-per-webapp/replace-application/src/java/com/sun/faces/systest/NewApplication.java
+++ b/jsf-ri/systest-per-webapp/replace-application/src/java/com/sun/faces/systest/NewApplication.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -34,8 +38,6 @@
  * holder.
  */
 
-
-
 package com.sun.faces.systest;
 
 import java.util.Iterator;
diff --git a/jsf-ri/systest-per-webapp/replace-application/src/java/com/sun/faces/systest/NewApplicationFactory.java b/jsf-ri/systest-per-webapp/replace-application/src/java/com/sun/faces/systest/NewApplicationFactory.java
index 92264b2..e63a5ce 100644
--- a/jsf-ri/systest-per-webapp/replace-application/src/java/com/sun/faces/systest/NewApplicationFactory.java
+++ b/jsf-ri/systest-per-webapp/replace-application/src/java/com/sun/faces/systest/NewApplicationFactory.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -44,6 +48,9 @@ public class NewApplicationFactory extends ApplicationFactory {
     private ApplicationFactory oldFactory = null;
 
     private NewApplication newApp = null;
+
+    public NewApplicationFactory() {
+    }
     
     public NewApplicationFactory(ApplicationFactory yourOldFactory) {
 	oldFactory = yourOldFactory;
diff --git a/jsf-ri/systest-per-webapp/replace-application/src/java/com/sun/faces/systest/NewStateManager.java b/jsf-ri/systest-per-webapp/replace-application/src/java/com/sun/faces/systest/NewStateManager.java
index 1a75b40..f025427 100644
--- a/jsf-ri/systest-per-webapp/replace-application/src/java/com/sun/faces/systest/NewStateManager.java
+++ b/jsf-ri/systest-per-webapp/replace-application/src/java/com/sun/faces/systest/NewStateManager.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -34,8 +38,6 @@
  * holder.
  */
 
-
-
 package com.sun.faces.systest;
 
 import javax.faces.application.StateManager;
diff --git a/jsf-ri/systest-per-webapp/replace-application/src/java/com/sun/faces/systest/NewViewHandler.java b/jsf-ri/systest-per-webapp/replace-application/src/java/com/sun/faces/systest/NewViewHandler.java
index bace6b1..ca0427e 100644
--- a/jsf-ri/systest-per-webapp/replace-application/src/java/com/sun/faces/systest/NewViewHandler.java
+++ b/jsf-ri/systest-per-webapp/replace-application/src/java/com/sun/faces/systest/NewViewHandler.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -34,8 +38,6 @@
  * holder.
  */
 
-
-
 package com.sun.faces.systest;
 
 import javax.faces.application.ViewHandler;
diff --git a/jsf-ri/systest-per-webapp/replace-application/src/java/com/sun/faces/systest/ReplaceApplicationBean.java b/jsf-ri/systest-per-webapp/replace-application/src/java/com/sun/faces/systest/ReplaceApplicationBean.java
index 7004ebf..8d5796d 100644
--- a/jsf-ri/systest-per-webapp/replace-application/src/java/com/sun/faces/systest/ReplaceApplicationBean.java
+++ b/jsf-ri/systest-per-webapp/replace-application/src/java/com/sun/faces/systest/ReplaceApplicationBean.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -34,8 +38,6 @@
  * holder.
  */
 
-
-
 package com.sun.faces.systest;
 
 import javax.faces.context.FacesContext;
diff --git a/jsf-ri/systest-per-webapp/replace-application/src/java/com/sun/faces/systest/ReplaceApplicationTestCase.java b/jsf-ri/systest-per-webapp/replace-application/src/java/com/sun/faces/systest/ReplaceApplicationTestCase.java
index bb3e979..966debc 100644
--- a/jsf-ri/systest-per-webapp/replace-application/src/java/com/sun/faces/systest/ReplaceApplicationTestCase.java
+++ b/jsf-ri/systest-per-webapp/replace-application/src/java/com/sun/faces/systest/ReplaceApplicationTestCase.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -46,7 +50,7 @@ import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
 import com.gargoylesoftware.htmlunit.html.HtmlRadioButtonInput;
 import com.gargoylesoftware.htmlunit.html.HtmlSelect;
 import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
-import com.sun.faces.htmlunit.AbstractTestCase;
+import com.sun.faces.htmlunit.HtmlUnitFacesTestCase;
 import junit.framework.Test;
 import junit.framework.TestCase;
 import junit.framework.TestSuite;
@@ -64,7 +68,7 @@ import javax.faces.component.NamingContainer;
  * to do the bulk of the requests works.</p>
  */
 
-public class ReplaceApplicationTestCase extends AbstractTestCase {
+public class ReplaceApplicationTestCase extends HtmlUnitFacesTestCase {
 
 
     // ------------------------------------------------------------ Constructors
diff --git a/jsf-ri/systest-per-webapp/replace-application/web/WEB-INF/faces-config.xml b/jsf-ri/systest-per-webapp/replace-application/web/WEB-INF/faces-config.xml
index 63aeaa1..e536ce6 100644
--- a/jsf-ri/systest-per-webapp/replace-application/web/WEB-INF/faces-config.xml
+++ b/jsf-ri/systest-per-webapp/replace-application/web/WEB-INF/faces-config.xml
@@ -1,41 +1,45 @@
 <?xml version='1.0' encoding='UTF-8'?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
--->
 
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
 
 <faces-config xmlns="http://java.sun.com/xml/ns/javaee"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
diff --git a/jsf-ri/systest-per-webapp/replace-application/web/WEB-INF/web.xml b/jsf-ri/systest-per-webapp/replace-application/web/WEB-INF/web.xml
index f8c0d8e..c466da4 100644
--- a/jsf-ri/systest-per-webapp/replace-application/web/WEB-INF/web.xml
+++ b/jsf-ri/systest-per-webapp/replace-application/web/WEB-INF/web.xml
@@ -1,39 +1,44 @@
 <?xml version="1.0" encoding="ISO-8859-1"?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
 
 <web-app xmlns="http://java.sun.com/xml/ns/javaee"
diff --git a/jsf-ri/systest-per-webapp/replace-application/web/test.jsp b/jsf-ri/systest-per-webapp/replace-application/web/test.jsp
index 0d8e923..e8eca63 100644
--- a/jsf-ri/systest-per-webapp/replace-application/web/test.jsp
+++ b/jsf-ri/systest-per-webapp/replace-application/web/test.jsp
@@ -1,63 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- The contents of this file are subject to the terms
- of the Common Development and Distribution License
- (the License). You may not use this file except in
- compliance with the License.
- 
- You can obtain a copy of the License at
- https://javaserverfaces.dev.java.net/CDDL.html or
- legal/CDDLv1.0.txt. 
- See the License for the specific language governing
- permission and limitations under the License.
- 
- When distributing Covered Code, include this CDDL
- Header Notice in each file and include the License file
- at legal/CDDLv1.0.txt.    
- If applicable, add the following below the CDDL Header,
- with the fields enclosed by brackets [] replaced by
- your own identifying information:
- "Portions Copyrighted [year] [name of copyright owner]"
- 
- [Name of File] [ver.__] [Date]
- 
- Copyright 2005 Sun Microsystems Inc. All Rights Reserved
--->
+
 
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
diff --git a/jsf-ri/systest-per-webapp/replace-lifecycle/src/java/com/sun/faces/systest/LifecycleFactoryImpl.java b/jsf-ri/systest-per-webapp/replace-lifecycle/src/java/com/sun/faces/systest/LifecycleFactoryImpl.java
index b0c7d2d..7466b22 100644
--- a/jsf-ri/systest-per-webapp/replace-lifecycle/src/java/com/sun/faces/systest/LifecycleFactoryImpl.java
+++ b/jsf-ri/systest-per-webapp/replace-lifecycle/src/java/com/sun/faces/systest/LifecycleFactoryImpl.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -50,6 +54,9 @@ import java.util.Iterator;
 
 public class LifecycleFactoryImpl extends LifecycleFactory {
 
+    public LifecycleFactoryImpl() {
+    }
+
     private LifecycleFactory previous = null;
 
     private Lifecycle newLifecycle = null;
diff --git a/jsf-ri/systest-per-webapp/replace-lifecycle/src/java/com/sun/faces/systest/NewLifecycle.java b/jsf-ri/systest-per-webapp/replace-lifecycle/src/java/com/sun/faces/systest/NewLifecycle.java
index 1b1adf2..4891dd2 100644
--- a/jsf-ri/systest-per-webapp/replace-lifecycle/src/java/com/sun/faces/systest/NewLifecycle.java
+++ b/jsf-ri/systest-per-webapp/replace-lifecycle/src/java/com/sun/faces/systest/NewLifecycle.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/systest-per-webapp/replace-lifecycle/src/java/com/sun/faces/systest/ReplaceLifecycleTestCase.java b/jsf-ri/systest-per-webapp/replace-lifecycle/src/java/com/sun/faces/systest/ReplaceLifecycleTestCase.java
index 0de32ef..d5f3c10 100644
--- a/jsf-ri/systest-per-webapp/replace-lifecycle/src/java/com/sun/faces/systest/ReplaceLifecycleTestCase.java
+++ b/jsf-ri/systest-per-webapp/replace-lifecycle/src/java/com/sun/faces/systest/ReplaceLifecycleTestCase.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -46,7 +50,7 @@ import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
 import com.gargoylesoftware.htmlunit.html.HtmlRadioButtonInput;
 import com.gargoylesoftware.htmlunit.html.HtmlSelect;
 import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
-import com.sun.faces.htmlunit.AbstractTestCase;
+import com.sun.faces.htmlunit.HtmlUnitFacesTestCase;
 import junit.framework.Test;
 import junit.framework.TestCase;
 import junit.framework.TestSuite;
@@ -65,7 +69,7 @@ import javax.faces.component.NamingContainer;
  * replaced lifecycle id.</p>
  */
 
-public class ReplaceLifecycleTestCase extends AbstractTestCase {
+public class ReplaceLifecycleTestCase extends HtmlUnitFacesTestCase {
 
 
     // ------------------------------------------------------------ Constructors
@@ -124,7 +128,10 @@ public class ReplaceLifecycleTestCase extends AbstractTestCase {
 
     public void testReplaceLifecycle() throws Exception {
 	HtmlPage page = getPage("/faces/test.jsp");
-	assertTrue(-1 != page.asText().indexOf("beforePhase"));
+	String pageText = page.asText();
+	assertTrue(-1 != pageText.indexOf("beforePhase"));
+	// Ensure the phaseListener is only called once.
+	assertTrue(!pageText.matches("(?s).*beforePhase.*beforePhase.*"));
 	
     }
 
diff --git a/jsf-ri/systest-per-webapp/replace-lifecycle/src/java/com/sun/faces/systest/SimplePhaseListener.java b/jsf-ri/systest-per-webapp/replace-lifecycle/src/java/com/sun/faces/systest/SimplePhaseListener.java
index 91d3598..f6d88de 100644
--- a/jsf-ri/systest-per-webapp/replace-lifecycle/src/java/com/sun/faces/systest/SimplePhaseListener.java
+++ b/jsf-ri/systest-per-webapp/replace-lifecycle/src/java/com/sun/faces/systest/SimplePhaseListener.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -34,12 +38,12 @@
  * holder.
  */
 
-
 package com.sun.faces.systest;
 
 import javax.faces.event.PhaseEvent;
 import javax.faces.event.PhaseId;
 import javax.faces.event.PhaseListener;
+import java.util.Map;
 
 public class SimplePhaseListener implements PhaseListener {
 
@@ -54,8 +58,12 @@ public class SimplePhaseListener implements PhaseListener {
 
 
     public void beforePhase(PhaseEvent event) {
-	event.getFacesContext().getExternalContext().getRequestMap().put("beforePhase",
-									 "beforePhase");
+        Map<String, Object> requestMap = 
+	    event.getFacesContext().getExternalContext().getRequestMap();
+	String message = requestMap.containsKey("beforePhase") ? 
+	    requestMap.get("beforePhase").toString() : "";
+	requestMap.put("beforePhase",
+		       message + " beforePhase");
 	event.getFacesContext().getExternalContext().getRequestMap().put("lifecycleImpl",
 									 event.getSource());
     }
diff --git a/jsf-ri/systest-per-webapp/replace-lifecycle/web/WEB-INF/faces-config.xml b/jsf-ri/systest-per-webapp/replace-lifecycle/web/WEB-INF/faces-config.xml
index f20c488..681f5ca 100644
--- a/jsf-ri/systest-per-webapp/replace-lifecycle/web/WEB-INF/faces-config.xml
+++ b/jsf-ri/systest-per-webapp/replace-lifecycle/web/WEB-INF/faces-config.xml
@@ -1,41 +1,45 @@
 <?xml version='1.0' encoding='UTF-8'?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
--->
 
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
 
 <faces-config xmlns="http://java.sun.com/xml/ns/javaee"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
diff --git a/jsf-ri/systest-per-webapp/replace-lifecycle/web/WEB-INF/web.xml b/jsf-ri/systest-per-webapp/replace-lifecycle/web/WEB-INF/web.xml
index 5ecffec..6dc45c3 100644
--- a/jsf-ri/systest-per-webapp/replace-lifecycle/web/WEB-INF/web.xml
+++ b/jsf-ri/systest-per-webapp/replace-lifecycle/web/WEB-INF/web.xml
@@ -1,39 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
+
 <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee web-app_2_5.xsd">
   <description>
        JSF Systests
diff --git a/jsf-ri/systest-per-webapp/replace-lifecycle/web/test.jsp b/jsf-ri/systest-per-webapp/replace-lifecycle/web/test.jsp
index ed63e52..efb7a06 100644
--- a/jsf-ri/systest-per-webapp/replace-lifecycle/web/test.jsp
+++ b/jsf-ri/systest-per-webapp/replace-lifecycle/web/test.jsp
@@ -1,63 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- The contents of this file are subject to the terms
- of the Common Development and Distribution License
- (the License). You may not use this file except in
- compliance with the License.
- 
- You can obtain a copy of the License at
- https://javaserverfaces.dev.java.net/CDDL.html or
- legal/CDDLv1.0.txt. 
- See the License for the specific language governing
- permission and limitations under the License.
- 
- When distributing Covered Code, include this CDDL
- Header Notice in each file and include the License file
- at legal/CDDLv1.0.txt.    
- If applicable, add the following below the CDDL Header,
- with the fields enclosed by brackets [] replaced by
- your own identifying information:
- "Portions Copyrighted [year] [name of copyright owner]"
- 
- [Name of File] [ver.__] [Date]
- 
- Copyright 2005 Sun Microsystems Inc. All Rights Reserved
--->
+
 
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
diff --git a/jsf-ri/systest-per-webapp/replace-lifecycle/web/test2.jsp b/jsf-ri/systest-per-webapp/replace-lifecycle/web/test2.jsp
index e8d2a47..3ebfaad 100644
--- a/jsf-ri/systest-per-webapp/replace-lifecycle/web/test2.jsp
+++ b/jsf-ri/systest-per-webapp/replace-lifecycle/web/test2.jsp
@@ -1,63 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- The contents of this file are subject to the terms
- of the Common Development and Distribution License
- (the License). You may not use this file except in
- compliance with the License.
- 
- You can obtain a copy of the License at
- https://javaserverfaces.dev.java.net/CDDL.html or
- legal/CDDLv1.0.txt. 
- See the License for the specific language governing
- permission and limitations under the License.
- 
- When distributing Covered Code, include this CDDL
- Header Notice in each file and include the License file
- at legal/CDDLv1.0.txt.    
- If applicable, add the following below the CDDL Header,
- with the fields enclosed by brackets [] replaced by
- your own identifying information:
- "Portions Copyrighted [year] [name of copyright owner]"
- 
- [Name of File] [ver.__] [Date]
- 
- Copyright 2005 Sun Microsystems Inc. All Rights Reserved
--->
+
 
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
diff --git a/jsf-ri/systest-per-webapp/replace-statemanager/src/java/com/sun/faces/systest/NewApplication.java b/jsf-ri/systest-per-webapp/replace-statemanager/src/java/com/sun/faces/systest/NewApplication.java
index d77f36c..51724cf 100644
--- a/jsf-ri/systest-per-webapp/replace-statemanager/src/java/com/sun/faces/systest/NewApplication.java
+++ b/jsf-ri/systest-per-webapp/replace-statemanager/src/java/com/sun/faces/systest/NewApplication.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -34,7 +38,6 @@
  * holder.
  */
 
-
 package com.sun.faces.systest;
 
 
diff --git a/jsf-ri/systest-per-webapp/replace-statemanager/src/java/com/sun/faces/systest/NewApplicationFactory.java b/jsf-ri/systest-per-webapp/replace-statemanager/src/java/com/sun/faces/systest/NewApplicationFactory.java
index 99c1e2a..e979228 100644
--- a/jsf-ri/systest-per-webapp/replace-statemanager/src/java/com/sun/faces/systest/NewApplicationFactory.java
+++ b/jsf-ri/systest-per-webapp/replace-statemanager/src/java/com/sun/faces/systest/NewApplicationFactory.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -33,35 +37,38 @@
  * only if the new code is made subject to such option by the copyright
  * holder.
  */
-
-package com.sun.faces.systest;
-
-import javax.faces.application.ApplicationFactory;
-import javax.faces.application.Application;
-
-public class NewApplicationFactory extends ApplicationFactory {
-    
-    private ApplicationFactory oldFactory = null;
-
-    private NewApplication newApp = null;
-    
-    public NewApplicationFactory(ApplicationFactory yourOldFactory) {
-	oldFactory = yourOldFactory;
-    }
-    
-    public Application getApplication() {
-	if (null == newApp) {
-	    newApp = new NewApplication(oldFactory.getApplication());
-	}
-	return newApp;
-    }
-    
-    public void setApplication(Application application) {
-	newApp = (NewApplication) application;
-    }
-
-    public String toString() {
-	return "NewApplicationFactory";
-    }
-
-}
+
+package com.sun.faces.systest;
+
+import javax.faces.application.ApplicationFactory;
+import javax.faces.application.Application;
+
+public class NewApplicationFactory extends ApplicationFactory {
+
+    public NewApplicationFactory() {
+    }
+    
+    private ApplicationFactory oldFactory = null;
+
+    private NewApplication newApp = null;
+    
+    public NewApplicationFactory(ApplicationFactory yourOldFactory) {
+	oldFactory = yourOldFactory;
+    }
+    
+    public Application getApplication() {
+	if (null == newApp) {
+	    newApp = new NewApplication(oldFactory.getApplication());
+	}
+	return newApp;
+    }
+    
+    public void setApplication(Application application) {
+	newApp = (NewApplication) application;
+    }
+
+    public String toString() {
+	return "NewApplicationFactory";
+    }
+
+}
diff --git a/jsf-ri/systest-per-webapp/replace-statemanager/src/java/com/sun/faces/systest/NewStateManager.java b/jsf-ri/systest-per-webapp/replace-statemanager/src/java/com/sun/faces/systest/NewStateManager.java
index 2326219..ff12d52 100644
--- a/jsf-ri/systest-per-webapp/replace-statemanager/src/java/com/sun/faces/systest/NewStateManager.java
+++ b/jsf-ri/systest-per-webapp/replace-statemanager/src/java/com/sun/faces/systest/NewStateManager.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -34,8 +38,6 @@
  * holder.
  */
 
-
-
 package com.sun.faces.systest;
 
 import javax.faces.application.StateManager;
diff --git a/jsf-ri/systest-per-webapp/replace-statemanager/src/java/com/sun/faces/systest/NewViewHandler.java b/jsf-ri/systest-per-webapp/replace-statemanager/src/java/com/sun/faces/systest/NewViewHandler.java
index 5232f01..ca0427e 100644
--- a/jsf-ri/systest-per-webapp/replace-statemanager/src/java/com/sun/faces/systest/NewViewHandler.java
+++ b/jsf-ri/systest-per-webapp/replace-statemanager/src/java/com/sun/faces/systest/NewViewHandler.java
@@ -1,55 +1,57 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-
-
-package com.sun.faces.systest;
-
-import javax.faces.application.ViewHandler;
-import javax.faces.application.ViewHandlerWrapper;
-
-public class NewViewHandler extends ViewHandlerWrapper {
-
-    private ViewHandler oldViewHandler = null;
-
-    public NewViewHandler(ViewHandler oldViewHandler) {
-	this.oldViewHandler = oldViewHandler;
-    }
-
-    public ViewHandler getWrapped() {
-	return oldViewHandler;
-    }
-}
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest;
+
+import javax.faces.application.ViewHandler;
+import javax.faces.application.ViewHandlerWrapper;
+
+public class NewViewHandler extends ViewHandlerWrapper {
+
+    private ViewHandler oldViewHandler = null;
+
+    public NewViewHandler(ViewHandler oldViewHandler) {
+	this.oldViewHandler = oldViewHandler;
+    }
+
+    public ViewHandler getWrapped() {
+	return oldViewHandler;
+    }
+}
diff --git a/jsf-ri/systest-per-webapp/replace-statemanager/src/java/com/sun/faces/systest/ReplaceApplicationBean.java b/jsf-ri/systest-per-webapp/replace-statemanager/src/java/com/sun/faces/systest/ReplaceApplicationBean.java
index 7004ebf..8d5796d 100644
--- a/jsf-ri/systest-per-webapp/replace-statemanager/src/java/com/sun/faces/systest/ReplaceApplicationBean.java
+++ b/jsf-ri/systest-per-webapp/replace-statemanager/src/java/com/sun/faces/systest/ReplaceApplicationBean.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -34,8 +38,6 @@
  * holder.
  */
 
-
-
 package com.sun.faces.systest;
 
 import javax.faces.context.FacesContext;
diff --git a/jsf-ri/systest-per-webapp/replace-statemanager/src/java/com/sun/faces/systest/ReplaceStateManagerTestCase.java b/jsf-ri/systest-per-webapp/replace-statemanager/src/java/com/sun/faces/systest/ReplaceStateManagerTestCase.java
index 84aa646..f3efb6e 100644
--- a/jsf-ri/systest-per-webapp/replace-statemanager/src/java/com/sun/faces/systest/ReplaceStateManagerTestCase.java
+++ b/jsf-ri/systest-per-webapp/replace-statemanager/src/java/com/sun/faces/systest/ReplaceStateManagerTestCase.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -46,7 +50,7 @@ import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
 import com.gargoylesoftware.htmlunit.html.HtmlRadioButtonInput;
 import com.gargoylesoftware.htmlunit.html.HtmlSelect;
 import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
-import com.sun.faces.htmlunit.AbstractTestCase;
+import com.sun.faces.htmlunit.HtmlUnitFacesTestCase;
 import junit.framework.Test;
 import junit.framework.TestCase;
 import junit.framework.TestSuite;
@@ -64,7 +68,7 @@ import javax.faces.component.NamingContainer;
  * to do the bulk of the requests works.</p>
  */
 
-public class ReplaceStateManagerTestCase extends AbstractTestCase {
+public class ReplaceStateManagerTestCase extends HtmlUnitFacesTestCase {
 
 
     // ------------------------------------------------------------ Constructors
diff --git a/jsf-ri/systest-per-webapp/replace-statemanager/web/WEB-INF/faces-config.xml b/jsf-ri/systest-per-webapp/replace-statemanager/web/WEB-INF/faces-config.xml
index 63aeaa1..e536ce6 100644
--- a/jsf-ri/systest-per-webapp/replace-statemanager/web/WEB-INF/faces-config.xml
+++ b/jsf-ri/systest-per-webapp/replace-statemanager/web/WEB-INF/faces-config.xml
@@ -1,41 +1,45 @@
 <?xml version='1.0' encoding='UTF-8'?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
--->
 
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
 
 <faces-config xmlns="http://java.sun.com/xml/ns/javaee"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
diff --git a/jsf-ri/systest-per-webapp/replace-statemanager/web/WEB-INF/web.xml b/jsf-ri/systest-per-webapp/replace-statemanager/web/WEB-INF/web.xml
index 9a038b9..5223135 100644
--- a/jsf-ri/systest-per-webapp/replace-statemanager/web/WEB-INF/web.xml
+++ b/jsf-ri/systest-per-webapp/replace-statemanager/web/WEB-INF/web.xml
@@ -1,39 +1,44 @@
 <?xml version="1.0" encoding="ISO-8859-1"?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
 
 <web-app xmlns="http://java.sun.com/xml/ns/javaee"
diff --git a/jsf-ri/systest-per-webapp/replace-statemanager/web/test.jsp b/jsf-ri/systest-per-webapp/replace-statemanager/web/test.jsp
index d14d284..bdcaf8f 100644
--- a/jsf-ri/systest-per-webapp/replace-statemanager/web/test.jsp
+++ b/jsf-ri/systest-per-webapp/replace-statemanager/web/test.jsp
@@ -1,63 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- The contents of this file are subject to the terms
- of the Common Development and Distribution License
- (the License). You may not use this file except in
- compliance with the License.
- 
- You can obtain a copy of the License at
- https://javaserverfaces.dev.java.net/CDDL.html or
- legal/CDDLv1.0.txt. 
- See the License for the specific language governing
- permission and limitations under the License.
- 
- When distributing Covered Code, include this CDDL
- Header Notice in each file and include the License file
- at legal/CDDLv1.0.txt.    
- If applicable, add the following below the CDDL Header,
- with the fields enclosed by brackets [] replaced by
- your own identifying information:
- "Portions Copyrighted [year] [name of copyright owner]"
- 
- [Name of File] [ver.__] [Date]
- 
- Copyright 2005 Sun Microsystems Inc. All Rights Reserved
--->
+
 
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
diff --git a/jsf-ri/systest-per-webapp/replace-variableresolver-programmatically/src/java/com/sun/faces/systest/Bean.java b/jsf-ri/systest-per-webapp/replace-variableresolver-programmatically/src/java/com/sun/faces/systest/Bean.java
new file mode 100644
index 0000000..f60baca
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/replace-variableresolver-programmatically/src/java/com/sun/faces/systest/Bean.java
@@ -0,0 +1,117 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+/*
+ * Bean.java
+ *
+ * Created on April 29, 2006, 1:57 PM
+ *
+ * To change this template, choose Tools | Template Manager
+ * and open the template in the editor.
+ */
+
+package com.sun.faces.systest;
+
+import com.sun.faces.systest.model.TestBean;
+import javax.faces.context.FacesContext;
+import javax.faces.el.EvaluationException;
+import javax.faces.el.VariableResolver;
+
+/**
+ *
+ * @author edburns
+ */
+public class Bean {
+    
+    /** Creates a new instance of Bean */
+    public Bean() {
+    }
+    
+    public String callMethodsOnVariableResolver(FacesContext context, 
+            VariableResolver vr) throws EvaluationException {
+        Object result = null;
+        
+        result = vr.resolveVariable(context, "noneBean");
+        
+        if (!(result instanceof TestBean)) {
+            throw new IllegalStateException("Bean not of correct type");
+        }
+        
+        result = vr.resolveVariable(context, "custom");
+        
+        if (!result.equals("custom")) {
+            throw new IllegalStateException("Bean not of correct type");
+        }
+        
+        return "success";
+    }
+    
+    public String getInvokeVariableResolverThruChain() throws EvaluationException {
+        FacesContext context = FacesContext.getCurrentInstance();
+        VariableResolver vr = context.getApplication().getVariableResolver();
+        return callMethodsOnVariableResolver(context, vr);
+    }
+    
+    public String getInvokeVariableResolverDirectly() throws EvaluationException {
+        FacesContext context = FacesContext.getCurrentInstance();
+        VariableResolver vr = (VariableResolver) context.getExternalContext().getApplicationMap().get("newVR");
+        return callMethodsOnVariableResolver(context, vr);
+    }
+    
+    public String getInvokeVariableResolverThruChain1() throws EvaluationException {
+        FacesContext context = FacesContext.getCurrentInstance();
+        VariableResolver vr = context.getApplication().getVariableResolver();
+        Object result = vr.resolveVariable(context, "nonmanaged");
+        if (!(result instanceof TestBean)) {
+            throw new IllegalStateException("Bean not of correct type");
+        }
+        return "success";
+    }
+    
+    public String getInvokeVariableResolverDirectly1() throws EvaluationException {
+        FacesContext context = FacesContext.getCurrentInstance();
+        VariableResolver vr = (VariableResolver) context.getExternalContext().getApplicationMap().get("newVR");
+        Object result = vr.resolveVariable(context, "nonmanaged");
+        if (!(result instanceof TestBean)) {
+            throw new IllegalStateException("Bean not of correct type");
+        }
+        return "success";
+    }
+}
diff --git a/jsf-ri/systest-per-webapp/replace-variableresolver-programmatically/src/java/com/sun/faces/systest/EagerApplicationScopedBean.java b/jsf-ri/systest-per-webapp/replace-variableresolver-programmatically/src/java/com/sun/faces/systest/EagerApplicationScopedBean.java
new file mode 100644
index 0000000..7eb46e7
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/replace-variableresolver-programmatically/src/java/com/sun/faces/systest/EagerApplicationScopedBean.java
@@ -0,0 +1,64 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest;
+
+import javax.annotation.PostConstruct;
+import javax.faces.application.Application;
+import javax.faces.bean.ApplicationScoped;
+import javax.faces.bean.ManagedBean;
+import javax.faces.context.FacesContext;
+import javax.faces.el.VariableResolver;
+
+ at ManagedBean(eager=true)
+ at ApplicationScoped
+public class EagerApplicationScopedBean {
+
+    @PostConstruct
+    public void installProgrammaticListener() {
+        FacesContext context = FacesContext.getCurrentInstance();
+        Application app = context.getApplication();
+        VariableResolver oldVr = app.getVariableResolver();
+        VariableResolver newVr = new NewVariableResolver(oldVr, context);
+        app.setVariableResolver(newVr);
+
+    }
+
+}
diff --git a/jsf-ri/systest-per-webapp/replace-variableresolver-programmatically/src/java/com/sun/faces/systest/NewVariableResolver.java b/jsf-ri/systest-per-webapp/replace-variableresolver-programmatically/src/java/com/sun/faces/systest/NewVariableResolver.java
new file mode 100644
index 0000000..6ea2cfe
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/replace-variableresolver-programmatically/src/java/com/sun/faces/systest/NewVariableResolver.java
@@ -0,0 +1,120 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+/*
+ * NewVariableResolver.java
+ *
+ * Created on April 29, 2006, 1:50 PM
+ *
+ * To change this template, choose Tools | Template Manager
+ * and open the template in the editor.
+ */
+
+package com.sun.faces.systest;
+
+import com.sun.faces.util.Util;
+import javax.faces.context.FacesContext;
+import javax.faces.el.EvaluationException;
+import javax.faces.el.VariableResolver;
+import javax.servlet.ServletContext;
+
+/**
+ *
+ * @author edburns
+ */
+public class NewVariableResolver extends VariableResolver {
+    
+    private VariableResolver original = null;
+    
+    /** Creates a new instance of NewVariableResolver */
+    public NewVariableResolver(VariableResolver original) {
+        this.original = original;
+        
+        FacesContext.getCurrentInstance().getExternalContext().getApplicationMap().put("newVR", this);
+    }
+
+    public NewVariableResolver(VariableResolver original, FacesContext context) {
+        this.original = original;
+
+        context.getExternalContext().getApplicationMap().put("newVR", this);
+    }
+
+    public Object resolveVariable(FacesContext context, String name) throws EvaluationException {
+        Object result = null;
+        
+        // This expects a plain old bean that is not configured as a Faces
+        // managed bean.  However, an additional check is done to make sure
+        // that is not configured as a managed bean.  So, we've resolved 
+        // the name as a "non" managed bean, but want to do some additional
+        // checks to make sure that name does not also resolve to a 
+        // managed bean. 
+        //  
+        if (name.equals("nonmanaged")) {
+            Object bean = null;
+            Object managedBean = null;             
+            try {
+                Class clazz = Util.loadClass("com.sun.faces.systest.model.TestBean", context);
+                bean = clazz.newInstance();
+            } catch (Exception e) {
+            } 
+            managedBean = original.resolveVariable(context, name); 
+            if (bean == null) {
+                if (managedBean==null) {
+                    return null;
+                } else {
+                    result = managedBean;
+                }
+            } else {
+                result = bean;
+            }
+            return result;
+        }
+
+        if (name.equals("custom")) {
+            result = "custom";
+        }
+        else {
+            result = original.resolveVariable(context, name);
+        }
+        
+        return result;
+    }
+    
+}
diff --git a/jsf-ri/systest-per-webapp/replace-variableresolver-programmatically/src/java/com/sun/faces/systest/ReplaceVariableResolverTestCase.java b/jsf-ri/systest-per-webapp/replace-variableresolver-programmatically/src/java/com/sun/faces/systest/ReplaceVariableResolverTestCase.java
new file mode 100644
index 0000000..72e7c54
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/replace-variableresolver-programmatically/src/java/com/sun/faces/systest/ReplaceVariableResolverTestCase.java
@@ -0,0 +1,122 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+
+package com.sun.faces.systest;
+
+
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.sun.faces.htmlunit.HtmlUnitFacesTestCase;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+
+
+
+/**
+ * <p>Make sure that an application that replaces the ApplicationFactory
+ * but uses the decorator pattern to allow the existing ApplicationImpl
+ * to do the bulk of the requests works.</p>
+ */
+
+public class ReplaceVariableResolverTestCase extends HtmlUnitFacesTestCase {
+
+
+    // ------------------------------------------------------------ Constructors
+
+
+    /**
+     * Construct a new instance of this test case.
+     *
+     * @param name Name of the test case
+     */
+    public ReplaceVariableResolverTestCase(String name) {
+        super(name);
+    }
+
+
+    // ------------------------------------------------------ Instance Variables
+
+
+    // ---------------------------------------------------- Overall Test Methods
+
+
+    /**
+     * Set up instance variables required by this test case.
+     */
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+
+
+    /**
+     * Return the tests included in this test suite.
+     */
+    public static Test suite() {
+        return (new TestSuite(ReplaceVariableResolverTestCase.class));
+    }
+
+
+    /**
+     * Tear down instance variables required by this test case.
+     */
+    public void tearDown() {
+        super.tearDown();
+    }
+
+
+    // ------------------------------------------------------ Instance Variables
+
+
+
+    // ------------------------------------------------- Individual Test Methods
+
+    /**
+     *
+     * <p>Verify that the bean is successfully resolved</p>
+     */
+
+    public void testReplaceVariableResolver() throws Exception {
+	HtmlPage page = getPage("/faces/test.jsp");
+	assertTrue(-1 != page.asText().indexOf("Invoking the resolver chain: success."));
+	assertTrue(-1 != page.asText().indexOf("Invoking the resolver directly: success."));
+    }
+
+}
diff --git a/jsf-ri/systest-per-webapp/replace-variableresolver-programmatically/web/WEB-INF/faces-config.xml b/jsf-ri/systest-per-webapp/replace-variableresolver-programmatically/web/WEB-INF/faces-config.xml
new file mode 100644
index 0000000..73c1b71
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/replace-variableresolver-programmatically/web/WEB-INF/faces-config.xml
@@ -0,0 +1,65 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
+    version="2.0">
+
+  <managed-bean>
+    <managed-bean-name>noneBean</managed-bean-name>
+    <managed-bean-class>
+      com.sun.faces.systest.model.TestBean
+    </managed-bean-class>
+    <managed-bean-scope>none</managed-bean-scope>
+  </managed-bean>
+
+  <managed-bean>
+    <managed-bean-name>requestBean</managed-bean-name>
+    <managed-bean-class>
+      com.sun.faces.systest.Bean
+    </managed-bean-class>
+    <managed-bean-scope>request</managed-bean-scope>
+  </managed-bean>
+
+</faces-config>
diff --git a/jsf-ri/systest-per-webapp/replace-variableresolver-programmatically/web/WEB-INF/web.xml b/jsf-ri/systest-per-webapp/replace-variableresolver-programmatically/web/WEB-INF/web.xml
new file mode 100644
index 0000000..caa121f
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/replace-variableresolver-programmatically/web/WEB-INF/web.xml
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee web-app_3_0.xsd">
+    <description>
+       JSF Systests
+    </description>
+    <display-name>JSF Systests</display-name>
+    <!-- Validate the Application Configuration Resources -->
+    <context-param>
+        <param-name>com.sun.faces.validateXml</param-name>
+        <param-value>true</param-value>
+    </context-param>
+    <context-param>
+        <param-name>com.sun.faces.enableHtmlTagLibValidator</param-name>
+        <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>
+    <!-- Faces Servlet -->
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup> 1 </load-on-startup>
+    </servlet>
+    <!-- Faces Servlet Mapping -->
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+</web-app>
diff --git a/jsf-ri/systest-per-webapp/replace-variableresolver-programmatically/web/test.jsp b/jsf-ri/systest-per-webapp/replace-variableresolver-programmatically/web/test.jsp
new file mode 100644
index 0000000..a2093bf
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/replace-variableresolver-programmatically/web/test.jsp
@@ -0,0 +1,70 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+  <head>
+    <title>test</title>
+    <%@ taglib uri="http://java.sun.com/jsf/core"  prefix="f" %>
+    <%@ taglib uri="http://java.sun.com/jsf/html"  prefix="h" %>
+  </head>
+
+  <body>
+    <h1>test</h1>
+
+<f:view>
+
+  <h:form>
+
+    <p>Invoking the resolver chain: <h:outputText value="#{requestBean.invokeVariableResolverThruChain}" />.</p>
+    
+    <p>Invoking the resolver directly: <h:outputText value="#{requestBean.invokeVariableResolverDirectly}" />.</p>
+
+  </h:form>
+
+</f:view>
+
+    <hr>
+  </body>
+</html>
diff --git a/jsf-ri/systest-per-webapp/replace-variableresolver-programmatically/web/test1.jsp b/jsf-ri/systest-per-webapp/replace-variableresolver-programmatically/web/test1.jsp
new file mode 100644
index 0000000..266a91d
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/replace-variableresolver-programmatically/web/test1.jsp
@@ -0,0 +1,70 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+  <head>
+    <title>test</title>
+    <%@ taglib uri="http://java.sun.com/jsf/core"  prefix="f" %>
+    <%@ taglib uri="http://java.sun.com/jsf/html"  prefix="h" %>
+  </head>
+
+  <body>
+    <h1>test</h1>
+
+<f:view>
+
+  <h:form>
+
+    <p>Invoking the resolver chain: <h:outputText value="#{requestBean.invokeVariableResolverThruChain1}" />.</p>
+    
+    <p>Invoking the resolver directly: <h:outputText value="#{requestBean.invokeVariableResolverDirectly1}" />.</p>
+
+  </h:form>
+
+</f:view>
+
+    <hr>
+  </body>
+</html>
diff --git a/jsf-ri/systest-per-webapp/replace-variableresolver/src/java/com/sun/faces/systest/Bean.java b/jsf-ri/systest-per-webapp/replace-variableresolver/src/java/com/sun/faces/systest/Bean.java
index 94d0481..f60baca 100644
--- a/jsf-ri/systest-per-webapp/replace-variableresolver/src/java/com/sun/faces/systest/Bean.java
+++ b/jsf-ri/systest-per-webapp/replace-variableresolver/src/java/com/sun/faces/systest/Bean.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/systest-per-webapp/replace-variableresolver/src/java/com/sun/faces/systest/NewVariableResolver.java b/jsf-ri/systest-per-webapp/replace-variableresolver/src/java/com/sun/faces/systest/NewVariableResolver.java
index 546c6d5..7ae1d62 100644
--- a/jsf-ri/systest-per-webapp/replace-variableresolver/src/java/com/sun/faces/systest/NewVariableResolver.java
+++ b/jsf-ri/systest-per-webapp/replace-variableresolver/src/java/com/sun/faces/systest/NewVariableResolver.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/systest-per-webapp/replace-variableresolver/src/java/com/sun/faces/systest/ReplaceVariableResolverTestCase.java b/jsf-ri/systest-per-webapp/replace-variableresolver/src/java/com/sun/faces/systest/ReplaceVariableResolverTestCase.java
index c57585e..4c331b4 100644
--- a/jsf-ri/systest-per-webapp/replace-variableresolver/src/java/com/sun/faces/systest/ReplaceVariableResolverTestCase.java
+++ b/jsf-ri/systest-per-webapp/replace-variableresolver/src/java/com/sun/faces/systest/ReplaceVariableResolverTestCase.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -46,7 +50,7 @@ import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
 import com.gargoylesoftware.htmlunit.html.HtmlRadioButtonInput;
 import com.gargoylesoftware.htmlunit.html.HtmlSelect;
 import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
-import com.sun.faces.htmlunit.AbstractTestCase;
+import com.sun.faces.htmlunit.HtmlUnitFacesTestCase;
 import junit.framework.Test;
 import junit.framework.TestCase;
 import junit.framework.TestSuite;
@@ -64,7 +68,7 @@ import javax.faces.component.NamingContainer;
  * to do the bulk of the requests works.</p>
  */
 
-public class ReplaceVariableResolverTestCase extends AbstractTestCase {
+public class ReplaceVariableResolverTestCase extends HtmlUnitFacesTestCase {
 
 
     // ------------------------------------------------------------ Constructors
diff --git a/jsf-ri/systest-per-webapp/replace-variableresolver/web/WEB-INF/faces-config.xml b/jsf-ri/systest-per-webapp/replace-variableresolver/web/WEB-INF/faces-config.xml
index c9fe325..2740e05 100644
--- a/jsf-ri/systest-per-webapp/replace-variableresolver/web/WEB-INF/faces-config.xml
+++ b/jsf-ri/systest-per-webapp/replace-variableresolver/web/WEB-INF/faces-config.xml
@@ -1,41 +1,45 @@
 <?xml version='1.0' encoding='UTF-8'?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
--->
 
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
 
 <faces-config xmlns="http://java.sun.com/xml/ns/javaee"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
diff --git a/jsf-ri/systest-per-webapp/replace-variableresolver/web/WEB-INF/web.xml b/jsf-ri/systest-per-webapp/replace-variableresolver/web/WEB-INF/web.xml
index 9a038b9..5223135 100644
--- a/jsf-ri/systest-per-webapp/replace-variableresolver/web/WEB-INF/web.xml
+++ b/jsf-ri/systest-per-webapp/replace-variableresolver/web/WEB-INF/web.xml
@@ -1,39 +1,44 @@
 <?xml version="1.0" encoding="ISO-8859-1"?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
 
 <web-app xmlns="http://java.sun.com/xml/ns/javaee"
diff --git a/jsf-ri/systest-per-webapp/replace-variableresolver/web/test.jsp b/jsf-ri/systest-per-webapp/replace-variableresolver/web/test.jsp
index feff4eb..a2093bf 100644
--- a/jsf-ri/systest-per-webapp/replace-variableresolver/web/test.jsp
+++ b/jsf-ri/systest-per-webapp/replace-variableresolver/web/test.jsp
@@ -1,63 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- The contents of this file are subject to the terms
- of the Common Development and Distribution License
- (the License). You may not use this file except in
- compliance with the License.
- 
- You can obtain a copy of the License at
- https://javaserverfaces.dev.java.net/CDDL.html or
- legal/CDDLv1.0.txt. 
- See the License for the specific language governing
- permission and limitations under the License.
- 
- When distributing Covered Code, include this CDDL
- Header Notice in each file and include the License file
- at legal/CDDLv1.0.txt.    
- If applicable, add the following below the CDDL Header,
- with the fields enclosed by brackets [] replaced by
- your own identifying information:
- "Portions Copyrighted [year] [name of copyright owner]"
- 
- [Name of File] [ver.__] [Date]
- 
- Copyright 2005 Sun Microsystems Inc. All Rights Reserved
--->
+
 
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
diff --git a/jsf-ri/systest-per-webapp/replace-variableresolver/web/test1.jsp b/jsf-ri/systest-per-webapp/replace-variableresolver/web/test1.jsp
index 6894845..266a91d 100644
--- a/jsf-ri/systest-per-webapp/replace-variableresolver/web/test1.jsp
+++ b/jsf-ri/systest-per-webapp/replace-variableresolver/web/test1.jsp
@@ -1,63 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- The contents of this file are subject to the terms
- of the Common Development and Distribution License
- (the License). You may not use this file except in
- compliance with the License.
- 
- You can obtain a copy of the License at
- https://javaserverfaces.dev.java.net/CDDL.html or
- legal/CDDLv1.0.txt. 
- See the License for the specific language governing
- permission and limitations under the License.
- 
- When distributing Covered Code, include this CDDL
- Header Notice in each file and include the License file
- at legal/CDDLv1.0.txt.    
- If applicable, add the following below the CDDL Header,
- with the fields enclosed by brackets [] replaced by
- your own identifying information:
- "Portions Copyrighted [year] [name of copyright owner]"
- 
- [Name of File] [ver.__] [Date]
- 
- Copyright 2005 Sun Microsystems Inc. All Rights Reserved
--->
+
 
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
diff --git a/jsf-ri/systest-per-webapp/replace-vr-add-er/src/java/com/sun/faces/systest/Bean.java b/jsf-ri/systest-per-webapp/replace-vr-add-er/src/java/com/sun/faces/systest/Bean.java
new file mode 100644
index 0000000..4230b52
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/replace-vr-add-er/src/java/com/sun/faces/systest/Bean.java
@@ -0,0 +1,199 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+/*
+ * Bean.java
+ *
+ * Created on April 29, 2006, 1:57 PM
+ *
+ * To change this template, choose Tools | Template Manager
+ * and open the template in the editor.
+ */
+
+package com.sun.faces.systest;
+
+import com.sun.faces.systest.model.TestBean;
+import javax.el.ELContext;
+import javax.el.ELResolver;
+import javax.el.ExpressionFactory;
+import javax.el.ValueExpression;
+import javax.faces.context.FacesContext;
+import javax.faces.el.EvaluationException;
+import javax.faces.el.PropertyResolver;
+import javax.faces.el.VariableResolver;
+import javax.faces.event.ActionEvent;
+import javax.servlet.ServletContext;
+import javax.servlet.jsp.JspApplicationContext;
+import javax.servlet.jsp.JspFactory;
+
+/**
+ *
+ * @author edburns
+ */
+public class Bean {
+    
+    /** Creates a new instance of Bean */
+    public Bean() {
+    }
+    
+    public String callMethodsOnVariableResolver(FacesContext context, 
+            VariableResolver vr) throws EvaluationException {
+        Object result = null;
+        
+        result = vr.resolveVariable(context, "noneBean");
+        
+        if (!(result instanceof TestBean)) {
+            throw new IllegalStateException("Bean not of correct type");
+        }
+        
+        result = vr.resolveVariable(context, "custom");
+        
+        if (!result.equals("custom")) {
+            throw new IllegalStateException("Bean not of correct type");
+        }
+        
+        return "success";
+    }
+
+    public void verifyELResolverChainIsCorrectlyConfigured(ActionEvent e) {
+        String result = null;
+        final FacesContext context = FacesContext.getCurrentInstance();
+        StringBuilder message = Bean.getBuilder(context);
+
+        message.append("<br /><br />\n\n  <h1>FacesELResolverForFaces</h1><br /><br />\n\n  ");
+
+        // FacesELResolver Chain
+        context.getApplication().getELResolver().getValue(context.getELContext(), null,
+                new Object() {
+
+            @Override
+            public String toString() {
+                Bean.captureStackTrace(context);
+                return "traceResolution";
+            }
+
+        });
+
+        message.append("<br /><br />\n\n  <h1>FacesELResolverForJsp</h1><br /><br />\n\n  ");
+
+        JspFactory factory = JspFactory.getDefaultFactory();
+        JspApplicationContext jspContext = factory.
+                getJspApplicationContext((ServletContext)
+                context.getExternalContext().getContext());
+        ExpressionFactory elFactory = jspContext.getExpressionFactory();
+        ValueExpression ve = elFactory.createValueExpression(context.getELContext(), "#{traceResolution}",
+                Object.class);
+        ve.getValue(context.getELContext());
+    }
+
+    public static StringBuilder getBuilder(FacesContext context) {
+        StringBuilder result = (StringBuilder) context.getExternalContext().getRequestMap().get("message");
+        if (null == result) {
+            result = new StringBuilder();
+            context.getExternalContext().getRequestMap().put("message", result);
+        }
+        return result;
+    }
+
+    public static void captureStackTrace(FacesContext context) {
+        StringBuilder message = getBuilder(context);
+        message.append("<h2>toString() invocation</h2>");
+
+        StackTraceElement[] stackTrace = Thread.currentThread().getStackTrace();
+        String stackTraceElement;
+        for (int i = 0; i < 4; i++) {
+            StackTraceElement cur = stackTrace[i];
+            stackTraceElement = cur.toString();
+            if (!(stackTraceElement.contains("Thread") ||
+                  stackTraceElement.contains("com.sun.faces.systest.Bean"))) {
+                message.append("<p>").append(stackTraceElement).append("</p>");
+                break;
+            }
+        }
+    }
+    
+    public String getInvokeVariableResolverThruChain() throws EvaluationException {
+        FacesContext context = FacesContext.getCurrentInstance();
+        VariableResolver vr = context.getApplication().getVariableResolver();
+        return callMethodsOnVariableResolver(context, vr);
+    }
+    
+    public String getInvokeVariableResolverDirectly() throws EvaluationException {
+        FacesContext context = FacesContext.getCurrentInstance();
+        VariableResolver vr = (VariableResolver) context.getExternalContext().getApplicationMap().get("newVR");
+        return callMethodsOnVariableResolver(context, vr);
+    }
+    
+    public String getInvokeELResolverThruChain() throws EvaluationException {
+        FacesContext context = FacesContext.getCurrentInstance();
+        ELResolver er = context.getApplication().getELResolver();
+        boolean isReadOnly = er.isReadOnly(context.getELContext(), "newERThruChain", null);
+
+        return Boolean.valueOf(isReadOnly).toString();
+    }
+
+    public String getInvokeELResolverDirectly() throws EvaluationException {
+        FacesContext context = FacesContext.getCurrentInstance();
+        ELResolver er = (ELResolver) context.getExternalContext().getApplicationMap().get("newER");
+        boolean isReadOnly = er.isReadOnly(context.getELContext(), "newERDirect", null);
+
+        return Boolean.valueOf(isReadOnly).toString();
+    }
+
+    public String getInvokeVariableResolverThruChain1() throws EvaluationException {
+        FacesContext context = FacesContext.getCurrentInstance();
+        VariableResolver vr = context.getApplication().getVariableResolver();
+        Object result = vr.resolveVariable(context, "nonmanaged");
+        if (!(result instanceof TestBean)) {
+            throw new IllegalStateException("Bean not of correct type");
+        }
+        return "success";
+    }
+    
+    public String getInvokeVariableResolverDirectly1() throws EvaluationException {
+        FacesContext context = FacesContext.getCurrentInstance();
+        VariableResolver vr = (VariableResolver) context.getExternalContext().getApplicationMap().get("newVR");
+        Object result = vr.resolveVariable(context, "nonmanaged");
+        if (!(result instanceof TestBean)) {
+            throw new IllegalStateException("Bean not of correct type");
+        }
+        return "success";
+    }
+}
diff --git a/jsf-ri/systest-per-webapp/replace-vr-add-er/src/java/com/sun/faces/systest/EagerApplicationScopedBean.java b/jsf-ri/systest-per-webapp/replace-vr-add-er/src/java/com/sun/faces/systest/EagerApplicationScopedBean.java
new file mode 100644
index 0000000..2c41af9
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/replace-vr-add-er/src/java/com/sun/faces/systest/EagerApplicationScopedBean.java
@@ -0,0 +1,68 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest;
+
+import javax.annotation.PostConstruct;
+import javax.el.ELResolver;
+import javax.faces.application.Application;
+import javax.faces.bean.ApplicationScoped;
+import javax.faces.bean.ManagedBean;
+import javax.faces.context.FacesContext;
+import javax.faces.el.VariableResolver;
+
+ at ManagedBean(eager=true)
+ at ApplicationScoped
+public class EagerApplicationScopedBean {
+
+    @PostConstruct
+    public void installProgrammaticListener() {
+        Application app = null;
+        FacesContext context = FacesContext.getCurrentInstance();
+        app = context.getApplication();
+        VariableResolver oldVr = app.getVariableResolver();
+        VariableResolver newVr = new NewVariableResolver(oldVr, context);
+        app.setVariableResolver(newVr);
+        ELResolver newER = new NewELResolver(context);
+        app.addELResolver(newER);
+
+    }
+
+}
diff --git a/jsf-ri/systest-per-webapp/replace-vr-add-er/src/java/com/sun/faces/systest/NewELResolver.java b/jsf-ri/systest-per-webapp/replace-vr-add-er/src/java/com/sun/faces/systest/NewELResolver.java
new file mode 100644
index 0000000..9d1f71c
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/replace-vr-add-er/src/java/com/sun/faces/systest/NewELResolver.java
@@ -0,0 +1,115 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest;
+
+import java.beans.FeatureDescriptor;
+import java.util.Collections;
+import java.util.Iterator;
+import javax.el.ELContext;
+import javax.el.ELResolver;
+import javax.faces.context.FacesContext;
+import javax.servlet.ServletContext;
+
+public class NewELResolver extends ELResolver {
+
+    public NewELResolver() {
+        FacesContext.getCurrentInstance().getExternalContext().getApplicationMap().put("newER", this);
+    }
+
+    public NewELResolver(FacesContext context) {
+        context.getExternalContext().getApplicationMap().put("newER", this);
+    }
+
+
+    @Override
+    public Class<?> getCommonPropertyType(ELContext elc, Object o) {
+        return Object.class;
+    }
+
+    @Override
+    public Iterator<FeatureDescriptor> getFeatureDescriptors(ELContext elc, Object o) {
+        return Collections.EMPTY_LIST.iterator();
+    }
+
+    @Override
+    public Class<?> getType(ELContext elc, Object o, Object o1) {
+        return Object.class;
+    }
+
+    @Override
+    public Object getValue(ELContext elc, Object name, Object property) {
+        if (property.equals("traceResolution")) {
+            Bean.captureStackTrace((FacesContext)elc.getContext(FacesContext.class));
+        }
+
+        return null;
+    }
+
+    @Override
+    public boolean isReadOnly(ELContext elc, Object o, Object o1) {
+        boolean result = false;
+        FacesContext facesContext = (FacesContext) elc.getContext(FacesContext.class);
+
+        if (null != o) {
+            if (o.equals("newERDirect")) {
+                facesContext.getExternalContext().getRequestMap().put("newERDirect",
+                        "isReadOnly invoked directly");
+                elc.setPropertyResolved(true);
+                result = true;
+            } else if (o.equals("newERThruChain")) {
+                facesContext.getExternalContext().getRequestMap().put("newERThruChain",
+                        "isReadOnly invoked thru chain");
+                elc.setPropertyResolved(true);
+                result = true;
+            }
+
+        }
+        return result;
+    }
+
+    @Override
+    public void setValue(ELContext elc, Object o, Object o1, Object o2) {
+        
+    }
+
+
+
+}
diff --git a/jsf-ri/systest-per-webapp/replace-vr-add-er/src/java/com/sun/faces/systest/NewVariableResolver.java b/jsf-ri/systest-per-webapp/replace-vr-add-er/src/java/com/sun/faces/systest/NewVariableResolver.java
new file mode 100644
index 0000000..2c7024b
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/replace-vr-add-er/src/java/com/sun/faces/systest/NewVariableResolver.java
@@ -0,0 +1,123 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+/*
+ * NewVariableResolver.java
+ *
+ * Created on April 29, 2006, 1:50 PM
+ *
+ * To change this template, choose Tools | Template Manager
+ * and open the template in the editor.
+ */
+
+package com.sun.faces.systest;
+
+import com.sun.faces.util.Util;
+import javax.faces.context.FacesContext;
+import javax.faces.el.EvaluationException;
+import javax.faces.el.VariableResolver;
+import javax.servlet.ServletContext;
+
+/**
+ *
+ * @author edburns
+ */
+public class NewVariableResolver extends VariableResolver {
+    
+    private VariableResolver original = null;
+    
+    /** Creates a new instance of NewVariableResolver */
+    public NewVariableResolver(VariableResolver original) {
+        this.original = original;
+        
+        FacesContext.getCurrentInstance().getExternalContext().getApplicationMap().put("newVR", this);
+    }
+
+    public NewVariableResolver(VariableResolver original, FacesContext context) {
+        this.original = original;
+
+        context.getExternalContext().getApplicationMap().put("newVR", this);
+    }
+
+    public Object resolveVariable(FacesContext context, String name) throws EvaluationException {
+        Object result = null;
+        
+        // This expects a plain old bean that is not configured as a Faces
+        // managed bean.  However, an additional check is done to make sure
+        // that is not configured as a managed bean.  So, we've resolved 
+        // the name as a "non" managed bean, but want to do some additional
+        // checks to make sure that name does not also resolve to a 
+        // managed bean. 
+        //  
+        if (name.equals("nonmanaged")) {
+            Object bean = null;
+            Object managedBean = null;             
+            try {
+                Class clazz = Util.loadClass("com.sun.faces.systest.model.TestBean", context);
+                bean = clazz.newInstance();
+            } catch (Exception e) {
+            } 
+            managedBean = original.resolveVariable(context, name); 
+            if (bean == null) {
+                if (managedBean==null) {
+                    return null;
+                } else {
+                    result = managedBean;
+                }
+            } else {
+                result = bean;
+            }
+            return result;
+        }
+        if (name.equals("traceResolution")) {
+            Bean.captureStackTrace(context);
+        }
+
+        if (name.equals("custom")) {
+            result = "custom";
+        }
+        else {
+            result = original.resolveVariable(context, name);
+        }
+        
+        return result;
+    }
+    
+}
diff --git a/jsf-ri/systest-per-webapp/replace-vr-add-er/web/WEB-INF/faces-config.xml b/jsf-ri/systest-per-webapp/replace-vr-add-er/web/WEB-INF/faces-config.xml
new file mode 100644
index 0000000..73c1b71
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/replace-vr-add-er/web/WEB-INF/faces-config.xml
@@ -0,0 +1,65 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
+    version="2.0">
+
+  <managed-bean>
+    <managed-bean-name>noneBean</managed-bean-name>
+    <managed-bean-class>
+      com.sun.faces.systest.model.TestBean
+    </managed-bean-class>
+    <managed-bean-scope>none</managed-bean-scope>
+  </managed-bean>
+
+  <managed-bean>
+    <managed-bean-name>requestBean</managed-bean-name>
+    <managed-bean-class>
+      com.sun.faces.systest.Bean
+    </managed-bean-class>
+    <managed-bean-scope>request</managed-bean-scope>
+  </managed-bean>
+
+</faces-config>
diff --git a/jsf-ri/systest-per-webapp/replace-vr-add-er/web/WEB-INF/web.xml b/jsf-ri/systest-per-webapp/replace-vr-add-er/web/WEB-INF/web.xml
new file mode 100644
index 0000000..caa121f
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/replace-vr-add-er/web/WEB-INF/web.xml
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee web-app_3_0.xsd">
+    <description>
+       JSF Systests
+    </description>
+    <display-name>JSF Systests</display-name>
+    <!-- Validate the Application Configuration Resources -->
+    <context-param>
+        <param-name>com.sun.faces.validateXml</param-name>
+        <param-value>true</param-value>
+    </context-param>
+    <context-param>
+        <param-name>com.sun.faces.enableHtmlTagLibValidator</param-name>
+        <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>
+    <!-- Faces Servlet -->
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup> 1 </load-on-startup>
+    </servlet>
+    <!-- Faces Servlet Mapping -->
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+</web-app>
diff --git a/jsf-ri/systest-per-webapp/replace-vr-add-er/web/test.jsp b/jsf-ri/systest-per-webapp/replace-vr-add-er/web/test.jsp
new file mode 100644
index 0000000..db6a187
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/replace-vr-add-er/web/test.jsp
@@ -0,0 +1,84 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+  <head>
+    <title>test</title>
+    <%@ taglib uri="http://java.sun.com/jsf/core"  prefix="f" %>
+    <%@ taglib uri="http://java.sun.com/jsf/html"  prefix="h" %>
+    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+  </head>
+
+  <body>
+    <h1>test</h1>
+
+<f:view>
+
+  <h:form>
+
+    <p>Invoking the variable resolver chain: <h:outputText value="#{requestBean.invokeVariableResolverThruChain}" />.</p>
+    
+    <p>Invoking the variable resolver directly: <h:outputText value="#{requestBean.invokeVariableResolverDirectly}" />.</p>
+
+    <p>Invoking the EL resolver directly: <h:outputText value="#{requestBean.invokeELResolverDirectly}" />.</p>
+
+    <p>result: <h:outputText value="#{requestScope['newERDirect']}" />.</p>
+
+    <p>Invoking the EL resolver via chain: <h:outputText value="#{requestBean.invokeELResolverThruChain}" />.</p>
+
+    <p>result: <h:outputText value="#{requestScope['newERThruChain']}" />.</p>
+
+    <p><h:commandButton id="reload" value="reload" actionListener="#{requestBean.verifyELResolverChainIsCorrectlyConfigured}" /> </p>
+
+    <p>StackTrace from el resolution: </p>
+    <h:outputText escape="false" value="#{requestScope['message']}" />
+
+  </h:form>
+
+</f:view>
+
+    <hr>
+  </body>
+</html>
diff --git a/jsf-ri/systest-per-webapp/replace-vr-add-er/web/test1.jsp b/jsf-ri/systest-per-webapp/replace-vr-add-er/web/test1.jsp
new file mode 100644
index 0000000..266a91d
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/replace-vr-add-er/web/test1.jsp
@@ -0,0 +1,70 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+  <head>
+    <title>test</title>
+    <%@ taglib uri="http://java.sun.com/jsf/core"  prefix="f" %>
+    <%@ taglib uri="http://java.sun.com/jsf/html"  prefix="h" %>
+  </head>
+
+  <body>
+    <h1>test</h1>
+
+<f:view>
+
+  <h:form>
+
+    <p>Invoking the resolver chain: <h:outputText value="#{requestBean.invokeVariableResolverThruChain1}" />.</p>
+    
+    <p>Invoking the resolver directly: <h:outputText value="#{requestBean.invokeVariableResolverDirectly1}" />.</p>
+
+  </h:form>
+
+</f:view>
+
+    <hr>
+  </body>
+</html>
diff --git a/jsf-ri/systest-per-webapp/request-char-encoding-no-session/src/java/com/sun/faces/systest/NoCharEncBean.java b/jsf-ri/systest-per-webapp/request-char-encoding-no-session/src/java/com/sun/faces/systest/NoCharEncBean.java
new file mode 100644
index 0000000..706e8f6
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/request-char-encoding-no-session/src/java/com/sun/faces/systest/NoCharEncBean.java
@@ -0,0 +1,77 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest;
+
+import javax.faces.application.ViewHandler;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.ViewScoped;
+import javax.faces.context.ExternalContext;
+import javax.faces.context.FacesContext;
+
+ at ManagedBean
+ at ViewScoped
+public class NoCharEncBean {
+
+    public NoCharEncBean() {
+    }
+
+    public String getMessage() {
+        String result = "";
+        FacesContext context = FacesContext.getCurrentInstance();
+        ExternalContext extContext = context.getExternalContext();
+        String extContextCharEnc = extContext.getResponseCharacterEncoding();
+        boolean hasSession = null != extContext.getSession(false);
+        result = "extContextCharEnc: " + extContextCharEnc + " hasSession: " + hasSession;
+        if (hasSession) {
+            result = result + " sessionCharEnc: " + extContext.getSessionMap().get(ViewHandler.CHARACTER_ENCODING_KEY);
+        }
+
+        if (extContext.getRequestParameterMap().containsKey("makeSession")) {
+            extContext.getSession(true);
+        }
+        if (extContext.getRequestParameterMap().containsKey("invalidateSession")) {
+            extContext.invalidateSession();
+        }
+        
+        return result;
+    }
+    
+}
diff --git a/jsf-ri/systest-per-webapp/request-char-encoding-no-session/src/java/com/sun/faces/systest/NoSessionCharEncTestCase.java b/jsf-ri/systest-per-webapp/request-char-encoding-no-session/src/java/com/sun/faces/systest/NoSessionCharEncTestCase.java
new file mode 100644
index 0000000..29894ba
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/request-char-encoding-no-session/src/java/com/sun/faces/systest/NoSessionCharEncTestCase.java
@@ -0,0 +1,106 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest;
+
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+
+import com.sun.faces.htmlunit.HtmlUnitFacesTestCase;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+
+public class NoSessionCharEncTestCase extends HtmlUnitFacesTestCase {
+
+    public NoSessionCharEncTestCase(String name) {
+        super(name);
+    }
+
+    /**
+     * Set up instance variables required by this test case.
+     */
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+
+
+    /**
+     * Return the tests included in this test suite.
+     */
+    public static Test suite() {
+        return (new TestSuite(NoSessionCharEncTestCase.class));
+    }
+
+
+    /**
+     * Tear down instance variables required by this test case.
+     */
+    public void tearDown() {
+        super.tearDown();
+    }
+
+
+    // ------------------------------------------------------------ Test Methods
+
+    public void testCharEnc() throws Exception {
+
+        HtmlPage page = getPageSticky("/faces/utf8.xhtml");
+
+        // force creation of the session
+        getPageSticky("/faces/utf8.xhtml?makeSession=true");
+
+        // try again, this time make sure the session shows the encoding
+        page = getPageSticky("/faces/utf8.xhtml");
+        assertTrue("Incorrect encoding.  extContextCharEnc: UTF-8 hasSession: true sessionCharEnc: UTF-8\n"
+                + "\nactual: " + page.asText(),
+                page.asText().matches("(?s).*extContextCharEnc:.*UTF-8.*hasSession:.*true.*sessionCharEnc:.*UTF-8.*"));
+
+        page = getPageSticky("/faces/ascii.xhtml");
+        assertTrue("Incorrect encoding.  extContextCharEnc: UTF-8 hasSession: true sessionCharEnc: US-ASCII",
+                page.asText().matches("(?s).*extContextCharEnc:.*US-ASCII.*hasSession:.*true.*sessionCharEnc:.*US-ASCII.*"));
+
+        // force invalidation of the session
+        getPageSticky("/faces/utf8.xhtml?invalidateSession=true");
+
+
+    }
+
+        
+}
diff --git a/jsf-ri/systest-per-webapp/request-char-encoding-no-session/web/ascii.xhtml b/jsf-ri/systest-per-webapp/request-char-encoding-no-session/web/ascii.xhtml
new file mode 100644
index 0000000..4a30d55
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/request-char-encoding-no-session/web/ascii.xhtml
@@ -0,0 +1,20 @@
+<!DOCTYPE html
+     PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+<f:view encoding="US-ASCII">
+<head>
+    <meta http-equiv="content-type" content="text/html; charset=US-ASCII" />
+    <title>US-ASCII character encoding</title>
+</head>
+<body>
+  
+  <p>#{noCharEncBean.message}</p>
+
+</body>
+</f:view>
+</html>
+
+
diff --git a/jsf-ri/systest-per-webapp/request-char-encoding-no-session/web/utf8.xhtml b/jsf-ri/systest-per-webapp/request-char-encoding-no-session/web/utf8.xhtml
new file mode 100644
index 0000000..87677f7
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/request-char-encoding-no-session/web/utf8.xhtml
@@ -0,0 +1,16 @@
+<!DOCTYPE html
+     PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"
+      xmlns:h="http://java.sun.com/jsf/html">
+<head>
+    <title>UTF-8 character encoding</title>
+</head>
+<body>
+  
+  <p>#{noCharEncBean.message}</p>
+
+</body>
+</html>
+
+
diff --git a/jsf-ri/systest-per-webapp/resource-locale-prefix/src/java/com/sun/faces/systest/ResourceLocalePrefixTestCase.java b/jsf-ri/systest-per-webapp/resource-locale-prefix/src/java/com/sun/faces/systest/ResourceLocalePrefixTestCase.java
index 36ab73a..b05db30 100644
--- a/jsf-ri/systest-per-webapp/resource-locale-prefix/src/java/com/sun/faces/systest/ResourceLocalePrefixTestCase.java
+++ b/jsf-ri/systest-per-webapp/resource-locale-prefix/src/java/com/sun/faces/systest/ResourceLocalePrefixTestCase.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -44,12 +48,12 @@ import com.gargoylesoftware.htmlunit.WebClient;
 import com.gargoylesoftware.htmlunit.html.HtmlImage;
 import com.gargoylesoftware.htmlunit.html.HtmlPage;
 import com.gargoylesoftware.htmlunit.html.HtmlScript;
-import com.sun.faces.htmlunit.AbstractTestCase;
+import com.sun.faces.htmlunit.HtmlUnitFacesTestCase;
 import junit.framework.Test;
 import junit.framework.TestSuite;
 
 
-public class ResourceLocalePrefixTestCase extends AbstractTestCase {
+public class ResourceLocalePrefixTestCase extends HtmlUnitFacesTestCase {
 
     // ------------------------------------------------------------ Constructors
 
@@ -108,7 +112,7 @@ public class ResourceLocalePrefixTestCase extends AbstractTestCase {
             assertTrue(page != null);
             List<HtmlImage> images = new ArrayList<HtmlImage>(2);
             getAllElementsOfGivenClass(page, images, HtmlImage.class);
-            assertTrue(images.size() == 2);
+            assertTrue(images.size() == 4);
             HtmlImage img = images.get(0);
             assertTrue((
                   "/jsf-resource-locale-prefix/faces/javax.faces.resource/duke.gif?loc="
@@ -121,6 +125,13 @@ public class ResourceLocalePrefixTestCase extends AbstractTestCase {
                   + (("ja".equals(locale)
                       ? "en"
                       : locale))).equals(img.getSrcAttribute()));
+            img = images.get(2);
+            assertTrue((
+                  "/jsf-resource-locale-prefix/faces/javax.faces.resource/duke-non-localized-non-lib.gif").equals(img.getSrcAttribute()));
+            img = images.get(3);
+            assertTrue((img.getSrcAttribute()).contains(
+                  "/jsf-resource-locale-prefix/faces/javax.faces.resource/duke-non-localized.gif?ln=lib"));
+
             List<HtmlScript> scripts = new ArrayList<HtmlScript>(1);
         getAllElementsOfGivenClass(page, scripts, HtmlScript.class);
         assertTrue(scripts.size() == 1);
@@ -135,4 +146,4 @@ public class ResourceLocalePrefixTestCase extends AbstractTestCase {
 
     }
 
-}
\ No newline at end of file
+}
diff --git a/jsf-ri/systest-per-webapp/resource-locale-prefix/src/java/com/sun/faces/systest/resource/Messages.properties b/jsf-ri/systest-per-webapp/resource-locale-prefix/src/java/com/sun/faces/systest/resource/Messages.properties
index 3a50ca5..af00334 100644
--- a/jsf-ri/systest-per-webapp/resource-locale-prefix/src/java/com/sun/faces/systest/resource/Messages.properties
+++ b/jsf-ri/systest-per-webapp/resource-locale-prefix/src/java/com/sun/faces/systest/resource/Messages.properties
@@ -1 +1,41 @@
-javax.faces.resource.localePrefix=none
\ No newline at end of file
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
+javax.faces.resource.localePrefix=none
diff --git a/jsf-ri/systest-per-webapp/resource-locale-prefix/src/java/com/sun/faces/systest/resource/Messages_de.properties b/jsf-ri/systest-per-webapp/resource-locale-prefix/src/java/com/sun/faces/systest/resource/Messages_de.properties
index 3d34b64..12a8d87 100644
--- a/jsf-ri/systest-per-webapp/resource-locale-prefix/src/java/com/sun/faces/systest/resource/Messages_de.properties
+++ b/jsf-ri/systest-per-webapp/resource-locale-prefix/src/java/com/sun/faces/systest/resource/Messages_de.properties
@@ -1 +1,41 @@
-javax.faces.resource.localePrefix=de
\ No newline at end of file
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
+javax.faces.resource.localePrefix=de
diff --git a/jsf-ri/systest-per-webapp/resource-locale-prefix/src/java/com/sun/faces/systest/resource/Messages_en.properties b/jsf-ri/systest-per-webapp/resource-locale-prefix/src/java/com/sun/faces/systest/resource/Messages_en.properties
index 91d43c2..f383d57 100644
--- a/jsf-ri/systest-per-webapp/resource-locale-prefix/src/java/com/sun/faces/systest/resource/Messages_en.properties
+++ b/jsf-ri/systest-per-webapp/resource-locale-prefix/src/java/com/sun/faces/systest/resource/Messages_en.properties
@@ -1 +1,41 @@
-javax.faces.resource.localePrefix=en
\ No newline at end of file
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
+javax.faces.resource.localePrefix=en
diff --git a/jsf-ri/systest-per-webapp/resource-locale-prefix/src/java/com/sun/faces/systest/resource/Messages_fr.properties b/jsf-ri/systest-per-webapp/resource-locale-prefix/src/java/com/sun/faces/systest/resource/Messages_fr.properties
index 2ffaecd..176acbf 100644
--- a/jsf-ri/systest-per-webapp/resource-locale-prefix/src/java/com/sun/faces/systest/resource/Messages_fr.properties
+++ b/jsf-ri/systest-per-webapp/resource-locale-prefix/src/java/com/sun/faces/systest/resource/Messages_fr.properties
@@ -1 +1,41 @@
-javax.faces.resource.localePrefix=fr
\ No newline at end of file
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
+javax.faces.resource.localePrefix=fr
diff --git a/jsf-ri/systest-per-webapp/resource-locale-prefix/web/WEB-INF/faces-config.xml b/jsf-ri/systest-per-webapp/resource-locale-prefix/web/WEB-INF/faces-config.xml
index e7d5e34..d5b2b41 100644
--- a/jsf-ri/systest-per-webapp/resource-locale-prefix/web/WEB-INF/faces-config.xml
+++ b/jsf-ri/systest-per-webapp/resource-locale-prefix/web/WEB-INF/faces-config.xml
@@ -1,41 +1,45 @@
 <?xml version='1.0' encoding='UTF-8'?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
--->
 
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
 
 <faces-config xmlns="http://java.sun.com/xml/ns/javaee"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
diff --git a/jsf-ri/systest-per-webapp/resource-locale-prefix/web/WEB-INF/web.xml b/jsf-ri/systest-per-webapp/resource-locale-prefix/web/WEB-INF/web.xml
index dace980..432d725 100644
--- a/jsf-ri/systest-per-webapp/resource-locale-prefix/web/WEB-INF/web.xml
+++ b/jsf-ri/systest-per-webapp/resource-locale-prefix/web/WEB-INF/web.xml
@@ -1,39 +1,44 @@
 <?xml version="1.0" encoding="ISO-8859-1"?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
 
 <web-app xmlns="http://java.sun.com/xml/ns/javaee"
diff --git a/jsf-ri/systest-per-webapp/resource-locale-prefix/web/resources/de/lib/duke.gif b/jsf-ri/systest-per-webapp/resource-locale-prefix/web/resources/de/lib/duke.gif
new file mode 100644
index 0000000..e594133
Binary files /dev/null and b/jsf-ri/systest-per-webapp/resource-locale-prefix/web/resources/de/lib/duke.gif differ
diff --git a/jsf-ri/systest-per-webapp/resource-locale-prefix/web/resources/duke-non-localized-non-lib.gif b/jsf-ri/systest-per-webapp/resource-locale-prefix/web/resources/duke-non-localized-non-lib.gif
new file mode 100644
index 0000000..ccdd1f8
Binary files /dev/null and b/jsf-ri/systest-per-webapp/resource-locale-prefix/web/resources/duke-non-localized-non-lib.gif differ
diff --git a/jsf-ri/systest-per-webapp/resource-locale-prefix/web/resources/en/lib/duke.gif b/jsf-ri/systest-per-webapp/resource-locale-prefix/web/resources/en/lib/duke.gif
new file mode 100644
index 0000000..f4eeded
Binary files /dev/null and b/jsf-ri/systest-per-webapp/resource-locale-prefix/web/resources/en/lib/duke.gif differ
diff --git a/jsf-ri/systest-per-webapp/resource-locale-prefix/web/resources/fr/lib/duke.gif b/jsf-ri/systest-per-webapp/resource-locale-prefix/web/resources/fr/lib/duke.gif
new file mode 100644
index 0000000..c258cf5
Binary files /dev/null and b/jsf-ri/systest-per-webapp/resource-locale-prefix/web/resources/fr/lib/duke.gif differ
diff --git a/jsf-ri/systest-per-webapp/resource-locale-prefix/web/resources/lib/duke-non-localized.gif b/jsf-ri/systest-per-webapp/resource-locale-prefix/web/resources/lib/duke-non-localized.gif
new file mode 100644
index 0000000..afc2844
Binary files /dev/null and b/jsf-ri/systest-per-webapp/resource-locale-prefix/web/resources/lib/duke-non-localized.gif differ
diff --git a/jsf-ri/systest-per-webapp/resource-locale-prefix/web/test.jsp b/jsf-ri/systest-per-webapp/resource-locale-prefix/web/test.jsp
index 409495c..f9e74af 100644
--- a/jsf-ri/systest-per-webapp/resource-locale-prefix/web/test.jsp
+++ b/jsf-ri/systest-per-webapp/resource-locale-prefix/web/test.jsp
@@ -1,37 +1,43 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
 <!DOCTYPE html
@@ -46,10 +52,15 @@ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 Non-library: <img src="${resource['duke.gif']}" alt="non-library" border="0"/>
 <br/>
 Library: <img src="${resource['lib:duke.gif']}" alt="library" border="0"/>
+<br />
+Non-localized non-library:  <img src="${resource['duke-non-localized-non-lib.gif']}" alt="non-library" border="0"/>
+<br />
+Non-localized library:  <img src="${resource['lib:duke-non-localized.gif']}" alt="library" border="0"/>
+
 <f:view>
     <h:form>
         <h:commandLink value="Click Me"/>
     </h:form>
 </f:view>
 </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/jsf-ri/systest-per-webapp/string-converter/src/java/com/sun/faces/systest/StringConverter.java b/jsf-ri/systest-per-webapp/string-converter/src/java/com/sun/faces/systest/StringConverter.java
index fad3484..56ddfbb 100644
--- a/jsf-ri/systest-per-webapp/string-converter/src/java/com/sun/faces/systest/StringConverter.java
+++ b/jsf-ri/systest-per-webapp/string-converter/src/java/com/sun/faces/systest/StringConverter.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -34,7 +38,6 @@
  * holder.
  */
 
-
 package com.sun.faces.systest;
 
 import javax.faces.component.UIComponent;
diff --git a/jsf-ri/systest-per-webapp/string-converter/src/java/com/sun/faces/systest/StringConverterTestCase.java b/jsf-ri/systest-per-webapp/string-converter/src/java/com/sun/faces/systest/StringConverterTestCase.java
index 502f2ab..860336e 100644
--- a/jsf-ri/systest-per-webapp/string-converter/src/java/com/sun/faces/systest/StringConverterTestCase.java
+++ b/jsf-ri/systest-per-webapp/string-converter/src/java/com/sun/faces/systest/StringConverterTestCase.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -46,7 +50,7 @@ import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
 import com.gargoylesoftware.htmlunit.html.HtmlRadioButtonInput;
 import com.gargoylesoftware.htmlunit.html.HtmlSelect;
 import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
-import com.sun.faces.htmlunit.AbstractTestCase;
+import com.sun.faces.htmlunit.HtmlUnitFacesTestCase;
 import junit.framework.Test;
 import junit.framework.TestCase;
 import junit.framework.TestSuite;
@@ -64,7 +68,7 @@ import javax.faces.component.NamingContainer;
  * to do the bulk of the requests works.</p>
  */
 
-public class StringConverterTestCase extends AbstractTestCase {
+public class StringConverterTestCase extends HtmlUnitFacesTestCase {
 
 
     // ------------------------------------------------------------ Constructors
diff --git a/jsf-ri/systest-per-webapp/string-converter/web/WEB-INF/faces-config.xml b/jsf-ri/systest-per-webapp/string-converter/web/WEB-INF/faces-config.xml
index 2b149cd..c891b40 100644
--- a/jsf-ri/systest-per-webapp/string-converter/web/WEB-INF/faces-config.xml
+++ b/jsf-ri/systest-per-webapp/string-converter/web/WEB-INF/faces-config.xml
@@ -1,39 +1,44 @@
 <?xml version='1.0' encoding='UTF-8'?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
 
 <faces-config xmlns="http://java.sun.com/xml/ns/javaee"
diff --git a/jsf-ri/systest-per-webapp/string-converter/web/WEB-INF/web.xml b/jsf-ri/systest-per-webapp/string-converter/web/WEB-INF/web.xml
index 2b1f56e..be16d48 100644
--- a/jsf-ri/systest-per-webapp/string-converter/web/WEB-INF/web.xml
+++ b/jsf-ri/systest-per-webapp/string-converter/web/WEB-INF/web.xml
@@ -1,39 +1,44 @@
 <?xml version='1.0' encoding='UTF-8'?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
 
 <web-app version="2.5"
diff --git a/jsf-ri/systest-per-webapp/string-converter/web/index.jsp b/jsf-ri/systest-per-webapp/string-converter/web/index.jsp
index b32bac2..e767f18 100644
--- a/jsf-ri/systest-per-webapp/string-converter/web/index.jsp
+++ b/jsf-ri/systest-per-webapp/string-converter/web/index.jsp
@@ -1,67 +1,50 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
 <!DOCTYPE html
 PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 
-<!--
- The contents of this file are subject to the terms
- of the Common Development and Distribution License
- (the License). You may not use this file except in
- compliance with the License.
- 
- You can obtain a copy of the License at
- https://javaserverfaces.dev.java.net/CDDL.html or
- legal/CDDLv1.0.txt. 
- See the License for the specific language governing
- permission and limitations under the License.
- 
- When distributing Covered Code, include this CDDL
- Header Notice in each file and include the License file
- at legal/CDDLv1.0.txt.    
- If applicable, add the following below the CDDL Header,
- with the fields enclosed by brackets [] replaced by
- your own identifying information:
- "Portions Copyrighted [year] [name of copyright owner]"
- 
- [Name of File] [ver.__] [Date]
- 
- Copyright 2005 Sun Microsystems Inc. All Rights Reserved
--->
+
 
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
     <head> <title>Hello</title> </head>
diff --git a/jsf-ri/systest-per-webapp/suppress-xml-decl/src/java/com/sun/faces/systest/SuppressXmlDeclTestCase.java b/jsf-ri/systest-per-webapp/suppress-xml-decl/src/java/com/sun/faces/systest/SuppressXmlDeclTestCase.java
new file mode 100644
index 0000000..9bf924c
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/suppress-xml-decl/src/java/com/sun/faces/systest/SuppressXmlDeclTestCase.java
@@ -0,0 +1,106 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest;
+
+
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.sun.faces.htmlunit.HtmlUnitFacesTestCase;
+import java.io.BufferedReader;
+import java.io.InputStreamReader;
+import java.net.URL;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+
+public class SuppressXmlDeclTestCase extends HtmlUnitFacesTestCase {
+
+    private final static Pattern XmlDeclaration = Pattern.compile("^<\\?xml.+?version=['\"](.+?)['\"](.+?encoding=['\"]((.+?))['\"])?.*?\\?>");
+
+
+    public SuppressXmlDeclTestCase(String name) {
+        super(name);
+    }
+
+    /**
+     * Set up instance variables required by this test case.
+     */
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+
+
+    /**
+     * Return the tests included in this test suite.
+     */
+    public static Test suite() {
+        return (new TestSuite(SuppressXmlDeclTestCase.class));
+    }
+
+
+    /**
+     * Tear down instance variables required by this test case.
+     */
+    public void tearDown() {
+        super.tearDown();
+    }
+    
+    
+    // ------------------------------------------------------------ Test Methods
+    
+    public void testSuppressXmlDecl() throws Exception {
+        URL url = getURL("/faces/index.xhtml");
+        InputStreamReader reader = new InputStreamReader(url.openStream());
+        BufferedReader bufferedReader = new BufferedReader(reader);
+        String line = bufferedReader.readLine();
+        while (0 == line.length()) {
+            line = bufferedReader.readLine();
+        }
+        Matcher m = XmlDeclaration.matcher(line);
+        assertFalse(m.find());
+
+        HtmlPage page = getPage("/faces/index.xhtml");
+        String xml = page.asXml();
+        assertTrue(xml.contains("javax.faces.ViewState"));
+
+    }
+}
diff --git a/jsf-ri/systest-per-webapp/suppress-xml-decl/web/WEB-INF/faces-config.xml b/jsf-ri/systest-per-webapp/suppress-xml-decl/web/WEB-INF/faces-config.xml
new file mode 100644
index 0000000..1a00f45
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/suppress-xml-decl/web/WEB-INF/faces-config.xml
@@ -0,0 +1,15 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<faces-config
+  xmlns="http://java.sun.com/xml/ns/javaee"
+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_1.xsd"
+  version="2.1">
+
+  <faces-config-extension>
+    <facelets-processing>
+      <file-extension>.xhtml</file-extension>
+      <process-as>xml</process-as>
+    </facelets-processing>
+  </faces-config-extension>
+
+</faces-config>
diff --git a/jsf-ri/systest-per-webapp/suppress-xml-decl/web/WEB-INF/web.xml b/jsf-ri/systest-per-webapp/suppress-xml-decl/web/WEB-INF/web.xml
new file mode 100644
index 0000000..434fafa
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/suppress-xml-decl/web/WEB-INF/web.xml
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee web-app_3_0.xsd">
+    <description>
+       test suppress xml config param
+    </description>
+    <display-name>test suppress xml config param</display-name>
+    <!-- Faces Servlet -->
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup> 1 </load-on-startup>
+    </servlet>
+    <!-- Faces Servlet Mapping -->
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+</web-app>
diff --git a/jsf-ri/systest-per-webapp/suppress-xml-decl/web/index.xhtml b/jsf-ri/systest-per-webapp/suppress-xml-decl/web/index.xhtml
new file mode 100644
index 0000000..8569b55
--- /dev/null
+++ b/jsf-ri/systest-per-webapp/suppress-xml-decl/web/index.xhtml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML Basic 1.0//EN"
+      "http://www.w3.org/TR/xhtml-basic/xhtml-basic10.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+
+<h:head>
+
+  <title>issue 696 test</title>
+
+</h:head>
+
+<h:body>
+
+  <h:form>
+ 
+    <h:commandButton value="reload" />
+
+  </h:form>
+
+</h:body>
+
+</html>
diff --git a/jsf-ri/systest-per-webapp/view-expired/src/java/com/sun/faces/systest/ViewExpiredExceptionTestCase.java b/jsf-ri/systest-per-webapp/view-expired/src/java/com/sun/faces/systest/ViewExpiredExceptionTestCase.java
index 784d292..ff41bc7 100644
--- a/jsf-ri/systest-per-webapp/view-expired/src/java/com/sun/faces/systest/ViewExpiredExceptionTestCase.java
+++ b/jsf-ri/systest-per-webapp/view-expired/src/java/com/sun/faces/systest/ViewExpiredExceptionTestCase.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -41,12 +45,12 @@ import java.net.URL;
 import com.gargoylesoftware.htmlunit.WebClient;
 import com.gargoylesoftware.htmlunit.html.HtmlPage;
 import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
-import com.sun.faces.htmlunit.AbstractTestCase;
+import com.sun.faces.htmlunit.HtmlUnitFacesTestCase;
 import junit.framework.Test;
 import junit.framework.TestSuite;
 
 
-public class ViewExpiredExceptionTestCase extends AbstractTestCase {
+public class ViewExpiredExceptionTestCase extends HtmlUnitFacesTestCase {
 
     public ViewExpiredExceptionTestCase(String name) {
         super(name);
@@ -64,7 +68,7 @@ public class ViewExpiredExceptionTestCase extends AbstractTestCase {
      * Return the tests included in this test suite.
      */
     public static Test suite() {
-        return (new TestSuite(InvalidMappingTestCase.class));
+        return (new TestSuite(ViewExpiredExceptionTestCase.class));
     }
 
 
diff --git a/jsf-ri/systest-per-webapp/view-expired/web/WEB-INF/web.xml b/jsf-ri/systest-per-webapp/view-expired/web/WEB-INF/web.xml
index c7d5bdd..b69003a 100644
--- a/jsf-ri/systest-per-webapp/view-expired/web/WEB-INF/web.xml
+++ b/jsf-ri/systest-per-webapp/view-expired/web/WEB-INF/web.xml
@@ -1,39 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
+
 <web-app version="2.5" 
          xmlns="http://java.sun.com/xml/ns/javaee" 
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
diff --git a/jsf-ri/systest-per-webapp/view-expired/web/error.jsp b/jsf-ri/systest-per-webapp/view-expired/web/error.jsp
index 323a595..f4b06ee 100644
--- a/jsf-ri/systest-per-webapp/view-expired/web/error.jsp
+++ b/jsf-ri/systest-per-webapp/view-expired/web/error.jsp
@@ -1,37 +1,43 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
 <html>
diff --git a/jsf-ri/systest-per-webapp/view-expired/web/test.jsp b/jsf-ri/systest-per-webapp/view-expired/web/test.jsp
index f1e5ee8..e391c7d 100644
--- a/jsf-ri/systest-per-webapp/view-expired/web/test.jsp
+++ b/jsf-ri/systest-per-webapp/view-expired/web/test.jsp
@@ -1,63 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- The contents of this file are subject to the terms
- of the Common Development and Distribution License
- (the License). You may not use this file except in
- compliance with the License.
- 
- You can obtain a copy of the License at
- https://javaserverfaces.dev.java.net/CDDL.html or
- legal/CDDLv1.0.txt. 
- See the License for the specific language governing
- permission and limitations under the License.
- 
- When distributing Covered Code, include this CDDL
- Header Notice in each file and include the License file
- at legal/CDDLv1.0.txt.    
- If applicable, add the following below the CDDL Header,
- with the fields enclosed by brackets [] replaced by
- your own identifying information:
- "Portions Copyrighted [year] [name of copyright owner]"
- 
- [Name of File] [ver.__] [Date]
- 
- Copyright 2005 Sun Microsystems Inc. All Rights Reserved
--->
+
 
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
diff --git a/jsf-ri/systest-per-webapp/wcag-datatable/src/java/com/sun/faces/systest/WcagDataTableTestCase.java b/jsf-ri/systest-per-webapp/wcag-datatable/src/java/com/sun/faces/systest/WcagDataTableTestCase.java
index 9e63f29..93b6435 100644
--- a/jsf-ri/systest-per-webapp/wcag-datatable/src/java/com/sun/faces/systest/WcagDataTableTestCase.java
+++ b/jsf-ri/systest-per-webapp/wcag-datatable/src/java/com/sun/faces/systest/WcagDataTableTestCase.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -45,7 +49,7 @@ import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
 import com.gargoylesoftware.htmlunit.html.HtmlRadioButtonInput;
 import com.gargoylesoftware.htmlunit.html.HtmlSelect;
 import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
-import com.sun.faces.htmlunit.AbstractTestCase;
+import com.sun.faces.htmlunit.HtmlUnitFacesTestCase;
 import junit.framework.Test;
 import junit.framework.TestCase;
 import junit.framework.TestSuite;
@@ -62,7 +66,7 @@ import javax.faces.component.NamingContainer;
  * but uses the decorator pattern to allow the existing ApplicationImpl
  * to do the bulk of the requests works.</p>
  */
-public class WcagDataTableTestCase extends AbstractTestCase {
+public class WcagDataTableTestCase extends HtmlUnitFacesTestCase {
 
 
     // ------------------------------------------------------------ Constructors
diff --git a/jsf-ri/systest-per-webapp/wcag-datatable/src/java/com/sun/faces/systest/model/WindowsCodePageData.java b/jsf-ri/systest-per-webapp/wcag-datatable/src/java/com/sun/faces/systest/model/WindowsCodePageData.java
index 943d061..129095a 100644
--- a/jsf-ri/systest-per-webapp/wcag-datatable/src/java/com/sun/faces/systest/model/WindowsCodePageData.java
+++ b/jsf-ri/systest-per-webapp/wcag-datatable/src/java/com/sun/faces/systest/model/WindowsCodePageData.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/systest-per-webapp/wcag-datatable/src/java/com/sun/faces/systest/model/WindowsCodePageDataBean.java b/jsf-ri/systest-per-webapp/wcag-datatable/src/java/com/sun/faces/systest/model/WindowsCodePageDataBean.java
index d8bc487..a627fe2 100644
--- a/jsf-ri/systest-per-webapp/wcag-datatable/src/java/com/sun/faces/systest/model/WindowsCodePageDataBean.java
+++ b/jsf-ri/systest-per-webapp/wcag-datatable/src/java/com/sun/faces/systest/model/WindowsCodePageDataBean.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/systest-per-webapp/wcag-datatable/web/WEB-INF/faces-config.xml b/jsf-ri/systest-per-webapp/wcag-datatable/web/WEB-INF/faces-config.xml
index f14e06a..36096df 100644
--- a/jsf-ri/systest-per-webapp/wcag-datatable/web/WEB-INF/faces-config.xml
+++ b/jsf-ri/systest-per-webapp/wcag-datatable/web/WEB-INF/faces-config.xml
@@ -1,39 +1,44 @@
 <?xml version='1.0' encoding='UTF-8'?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
 
 <faces-config xmlns="http://java.sun.com/xml/ns/javaee"
diff --git a/jsf-ri/systest-per-webapp/wcag-datatable/web/WEB-INF/web.xml b/jsf-ri/systest-per-webapp/wcag-datatable/web/WEB-INF/web.xml
index 2b1f56e..be16d48 100644
--- a/jsf-ri/systest-per-webapp/wcag-datatable/web/WEB-INF/web.xml
+++ b/jsf-ri/systest-per-webapp/wcag-datatable/web/WEB-INF/web.xml
@@ -1,39 +1,44 @@
 <?xml version='1.0' encoding='UTF-8'?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
 
 <web-app version="2.5"
diff --git a/jsf-ri/systest-per-webapp/wcag-datatable/web/index.jsp b/jsf-ri/systest-per-webapp/wcag-datatable/web/index.jsp
index d5def71..cacae2e 100644
--- a/jsf-ri/systest-per-webapp/wcag-datatable/web/index.jsp
+++ b/jsf-ri/systest-per-webapp/wcag-datatable/web/index.jsp
@@ -1,67 +1,50 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
 <!DOCTYPE html
 PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 
-<!--
- The contents of this file are subject to the terms
- of the Common Development and Distribution License
- (the License). You may not use this file except in
- compliance with the License.
- 
- You can obtain a copy of the License at
- https://javaserverfaces.dev.java.net/CDDL.html or
- legal/CDDLv1.0.txt. 
- See the License for the specific language governing
- permission and limitations under the License.
- 
- When distributing Covered Code, include this CDDL
- Header Notice in each file and include the License file
- at legal/CDDLv1.0.txt.    
- If applicable, add the following below the CDDL Header,
- with the fields enclosed by brackets [] replaced by
- your own identifying information:
- "Portions Copyrighted [year] [name of copyright owner]"
- 
- [Name of File] [ver.__] [Date]
- 
- Copyright 2005 Sun Microsystems Inc. All Rights Reserved
--->
+
 
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
     <head> <title>WCAG Table Test</title> </head>
diff --git a/jsf-ri/systest-per-webapp/write-attribute-script-disabled/src/java/com/sun/faces/systest/WriteAttributeScriptDisabledTestCase.java b/jsf-ri/systest-per-webapp/write-attribute-script-disabled/src/java/com/sun/faces/systest/WriteAttributeScriptDisabledTestCase.java
index fcd2103..d041e23 100644
--- a/jsf-ri/systest-per-webapp/write-attribute-script-disabled/src/java/com/sun/faces/systest/WriteAttributeScriptDisabledTestCase.java
+++ b/jsf-ri/systest-per-webapp/write-attribute-script-disabled/src/java/com/sun/faces/systest/WriteAttributeScriptDisabledTestCase.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -41,14 +45,14 @@ import java.net.URL;
 import com.gargoylesoftware.htmlunit.WebClient;
 import com.gargoylesoftware.htmlunit.html.HtmlPage;
 import com.gargoylesoftware.htmlunit.html.HtmlAnchor;
-import com.sun.faces.htmlunit.AbstractTestCase;
+import com.sun.faces.htmlunit.HtmlUnitFacesTestCase;
 import junit.framework.Test;
 import junit.framework.TestSuite;
 
 import java.util.List;
 
 
-public class WriteAttributeScriptDisabledTestCase extends AbstractTestCase {
+public class WriteAttributeScriptDisabledTestCase extends HtmlUnitFacesTestCase {
 
     public WriteAttributeScriptDisabledTestCase(String name) {
         super(name);
diff --git a/jsf-ri/systest-per-webapp/write-attribute-script-disabled/src/java/com/sun/faces/systest/model/Bean.java b/jsf-ri/systest-per-webapp/write-attribute-script-disabled/src/java/com/sun/faces/systest/model/Bean.java
index d11ebc4..9ff51f3 100644
--- a/jsf-ri/systest-per-webapp/write-attribute-script-disabled/src/java/com/sun/faces/systest/model/Bean.java
+++ b/jsf-ri/systest-per-webapp/write-attribute-script-disabled/src/java/com/sun/faces/systest/model/Bean.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/systest-per-webapp/write-attribute-script-disabled/web/WEB-INF/faces-config.xml b/jsf-ri/systest-per-webapp/write-attribute-script-disabled/web/WEB-INF/faces-config.xml
index 98128e0..14f24d8 100644
--- a/jsf-ri/systest-per-webapp/write-attribute-script-disabled/web/WEB-INF/faces-config.xml
+++ b/jsf-ri/systest-per-webapp/write-attribute-script-disabled/web/WEB-INF/faces-config.xml
@@ -1,39 +1,44 @@
 <?xml version='1.0' encoding='UTF-8'?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
 
 <faces-config xmlns="http://java.sun.com/xml/ns/javaee"
diff --git a/jsf-ri/systest-per-webapp/write-attribute-script-disabled/web/WEB-INF/web.xml b/jsf-ri/systest-per-webapp/write-attribute-script-disabled/web/WEB-INF/web.xml
index 51238f0..6a03dcb 100644
--- a/jsf-ri/systest-per-webapp/write-attribute-script-disabled/web/WEB-INF/web.xml
+++ b/jsf-ri/systest-per-webapp/write-attribute-script-disabled/web/WEB-INF/web.xml
@@ -1,39 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
+
 <web-app version="2.5" 
          xmlns="http://java.sun.com/xml/ns/javaee" 
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
diff --git a/jsf-ri/systest-per-webapp/write-attribute-script-disabled/web/test.jsp b/jsf-ri/systest-per-webapp/write-attribute-script-disabled/web/test.jsp
index 2f9a3c9..9daa411 100644
--- a/jsf-ri/systest-per-webapp/write-attribute-script-disabled/web/test.jsp
+++ b/jsf-ri/systest-per-webapp/write-attribute-script-disabled/web/test.jsp
@@ -1,63 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- The contents of this file are subject to the terms
- of the Common Development and Distribution License
- (the License). You may not use this file except in
- compliance with the License.
- 
- You can obtain a copy of the License at
- https://javaserverfaces.dev.java.net/CDDL.html or
- legal/CDDLv1.0.txt. 
- See the License for the specific language governing
- permission and limitations under the License.
- 
- When distributing Covered Code, include this CDDL
- Header Notice in each file and include the License file
- at legal/CDDLv1.0.txt.    
- If applicable, add the following below the CDDL Header,
- with the fields enclosed by brackets [] replaced by
- your own identifying information:
- "Portions Copyrighted [year] [name of copyright owner]"
- 
- [Name of File] [ver.__] [Date]
- 
- Copyright 2005 Sun Microsystems Inc. All Rights Reserved
--->
+
 
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
diff --git a/jsf-ri/systest-per-webapp/write-attribute-script-enabled/src/java/com/sun/faces/systest/WriteAttributeScriptEnabledTestCase.java b/jsf-ri/systest-per-webapp/write-attribute-script-enabled/src/java/com/sun/faces/systest/WriteAttributeScriptEnabledTestCase.java
index 4707add..6ece283 100644
--- a/jsf-ri/systest-per-webapp/write-attribute-script-enabled/src/java/com/sun/faces/systest/WriteAttributeScriptEnabledTestCase.java
+++ b/jsf-ri/systest-per-webapp/write-attribute-script-enabled/src/java/com/sun/faces/systest/WriteAttributeScriptEnabledTestCase.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -41,13 +45,13 @@ import java.net.URL;
 import com.gargoylesoftware.htmlunit.WebClient;
 import com.gargoylesoftware.htmlunit.html.HtmlPage;
 import com.gargoylesoftware.htmlunit.html.HtmlAnchor;
-import com.sun.faces.htmlunit.AbstractTestCase;
+import com.sun.faces.htmlunit.HtmlUnitFacesTestCase;
 import junit.framework.Test;
 import junit.framework.TestSuite;
 
 import java.util.List;
 
-public class WriteAttributeScriptEnabledTestCase extends AbstractTestCase {
+public class WriteAttributeScriptEnabledTestCase extends HtmlUnitFacesTestCase {
 
     public WriteAttributeScriptEnabledTestCase(String name) {
         super(name);
diff --git a/jsf-ri/systest-per-webapp/write-attribute-script-enabled/src/java/com/sun/faces/systest/model/Bean.java b/jsf-ri/systest-per-webapp/write-attribute-script-enabled/src/java/com/sun/faces/systest/model/Bean.java
index 483ef3e..9ff51f3 100644
--- a/jsf-ri/systest-per-webapp/write-attribute-script-enabled/src/java/com/sun/faces/systest/model/Bean.java
+++ b/jsf-ri/systest-per-webapp/write-attribute-script-enabled/src/java/com/sun/faces/systest/model/Bean.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/systest-per-webapp/write-attribute-script-enabled/web/WEB-INF/faces-config.xml b/jsf-ri/systest-per-webapp/write-attribute-script-enabled/web/WEB-INF/faces-config.xml
index 98128e0..14f24d8 100644
--- a/jsf-ri/systest-per-webapp/write-attribute-script-enabled/web/WEB-INF/faces-config.xml
+++ b/jsf-ri/systest-per-webapp/write-attribute-script-enabled/web/WEB-INF/faces-config.xml
@@ -1,39 +1,44 @@
 <?xml version='1.0' encoding='UTF-8'?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
 
 <faces-config xmlns="http://java.sun.com/xml/ns/javaee"
diff --git a/jsf-ri/systest-per-webapp/write-attribute-script-enabled/web/WEB-INF/web.xml b/jsf-ri/systest-per-webapp/write-attribute-script-enabled/web/WEB-INF/web.xml
index c954f0e..33ca906 100644
--- a/jsf-ri/systest-per-webapp/write-attribute-script-enabled/web/WEB-INF/web.xml
+++ b/jsf-ri/systest-per-webapp/write-attribute-script-enabled/web/WEB-INF/web.xml
@@ -1,39 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
+
 <web-app version="2.5" 
          xmlns="http://java.sun.com/xml/ns/javaee" 
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
diff --git a/jsf-ri/systest-per-webapp/write-attribute-script-enabled/web/test.jsp b/jsf-ri/systest-per-webapp/write-attribute-script-enabled/web/test.jsp
index 2f9a3c9..9daa411 100644
--- a/jsf-ri/systest-per-webapp/write-attribute-script-enabled/web/test.jsp
+++ b/jsf-ri/systest-per-webapp/write-attribute-script-enabled/web/test.jsp
@@ -1,63 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- The contents of this file are subject to the terms
- of the Common Development and Distribution License
- (the License). You may not use this file except in
- compliance with the License.
- 
- You can obtain a copy of the License at
- https://javaserverfaces.dev.java.net/CDDL.html or
- legal/CDDLv1.0.txt. 
- See the License for the specific language governing
- permission and limitations under the License.
- 
- When distributing Covered Code, include this CDDL
- Header Notice in each file and include the License file
- at legal/CDDLv1.0.txt.    
- If applicable, add the following below the CDDL Header,
- with the fields enclosed by brackets [] replaced by
- your own identifying information:
- "Portions Copyrighted [year] [name of copyright owner]"
- 
- [Name of File] [ver.__] [Date]
- 
- Copyright 2005 Sun Microsystems Inc. All Rights Reserved
--->
+
 
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
diff --git a/jsf-ri/systest/.cvsignore b/jsf-ri/systest/.cvsignore
new file mode 100644
index 0000000..8c76c6f
--- /dev/null
+++ b/jsf-ri/systest/.cvsignore
@@ -0,0 +1,2 @@
+build
+status.txt
diff --git a/jsf-ri/systest/build-tests.xml b/jsf-ri/systest/build-tests.xml
index 591abf4..edebf70 100644
--- a/jsf-ri/systest/build-tests.xml
+++ b/jsf-ri/systest/build-tests.xml
@@ -59,225 +59,24 @@
     <!-- Set 'protocol' to a zero length string to use HttpURLConnection -->
     <property name="protocol" value="HTTP/1.0"/>
 
-    <property name="golden.path" value="${context.path}/golden"/>
-    <property name="ignore.path" value="${context.path}/ignore"/>
-    <property name="local.golden.path" value="${basedir}/web/golden"/>
-
-
-    <!-- SystestClient taskdef classpath -->
-    <path id="test.classpath">
-        <pathelement location="${jsf-api.jar}"/>
-        <pathelement location="${jsf-impl.jar}"/>
-        <pathelement location="${basedir}/build/classes"/>
-        <path refid="compile.classpath"/>
-    </path>
-
-
-    <!-- SystestClient taskdef declaration -->
-    <taskdef name="tester"
-             classname="com.sun.faces.systest.ant.SystestClient">
-        <classpath refid="test.classpath"/>
-    </taskdef>
-
-    <macrodef name="jsf.tester">
-        <attribute name="request"/>
-        <attribute name="outContent"
-                   default=""/>
-        <attribute name="golden"
-                   default=""/>
-        <attribute name="status"
-                   default="200"/>
-        <attribute name="ignoreIfContains"
-                   default=""/>
-        <attribute name="recordGolden"
-                   default=""/>
-        <attribute name="ignore"
-                   default=""/>
-        <attribute name="joinSession"
-                   default="false"/>
-        <sequential>
-            <tester request="@{request}"
-                    host="${container.host}"
-                    port="${container.port}"
-                    protocol="${protocol}"
-                    failonerror="${failonerror}"
-                    outContent="@{outContent}"
-                    golden="@{golden}"
-                    recordGolden="@{recordGolden}"
-                    status="@{status}"
-                    ignoreIfContains="@{ignoreIfContains}"
-                    ignore="@{ignore}"
-                    joinSession="@{joinSession}"/>
-        </sequential>
-    </macrodef>
-
-
-    <!-- HtmlUnit client classpath -->
-    <path id="html.classpath">  
-        <pathelement location="${basedir}/build/classes"/>
-        <path refid="htmlunit.runtime.classpath"/>
-    </path>
-
+    <property name="regexp.path" value="${basedir}/web/regexp"/>
 
     <!-- ======================== Test Execution ============================== -->
-    <!-- converter06 impl logic deferred to 2.0 -->
-    <!-- DO NOT REORDER test.annotations -->
+    
     <target name="test"
             description="Execute all tests against installed application"
-            depends="test.annotations,
-                test.ajax,
+            depends="define.scenario.aware.port,
                 test.composite,
-                test.facelets,
                 test.init,
-                test.render,
-                test.html.taglib,
-                test.prefix.security,
-                test.config,
-                test.interweaving,
-                test.listener,
-                test.duplicateIds,
-                test.viewIdNormalization,
-                test.renderkit,
-                test.hello,
-                test.external,
-                test.el,
-                test.flash,
-                test.f.event,
-                test.resourcelocation,
                 test.managed,
-                test.message,
-                test.converter,
-                test.converter01,
-                test.converter02,
-                test.converter03,
-                test.converter04,
-                test.converter05,
-                test.enum-converter-1,
-                test.validator,
-                test.validator01,
-                test.validator02,
-                test.validator03,
-                test.valuechange,
                 test.component,
-                test.component01,
-                test.navigation,
-                test.implicitnav,
-                test.state,
-                test.resourceBundleELResolver,
-                test.tlvalidator,
-                test.standard,
-                test.verbatim,
-                test.phases,
-                test.subview,
-                test.methodRef,
                 test.jsp,  
-                test.jsf2jsp,
-                test.path,
-                test.valueBindingGet,
-                test.misc,
-                test.regressions"
+                test.jsf2jsp"
             />
-            <!--
-                test.groovy"
-            -->
 
     <target name="test.init">
         <mkdir dir="${impl.test.results.dir}"/>
     </target>
-    
-    <target name="test.misc">
-        <!-- validates fix for issue IMPL-262 - should be 404 not 500 -->
-        <jsf.tester request="${context.path}/faces/thispagedoesnexist.jsp"
-            status="404"/>
-    </target>
-
-    <target name="test.duplicateIds"
-            description="Test duplicate ID detection">
-
-        <jsf.tester request="${context.path}/faces/duplicateIds01.jsp"
-                    status="500"/> 
-
-        <jsf.tester request="${context.path}/faces/duplicateIds02.jsp"
-                status="200"/>
-
-        <jsf.tester request="${context.path}/faces/duplicateIds03.jsp"
-                status="500"/>
-
-        <jsf.tester
-              request="${context.path}/faces/duplicateIds05.jsp"
-              status="200"/>
-
-        <jsf.tester
-              request="${context.path}/faces/forEach02.jsp"
-              status="200"/>
-
-        <!-- PENDING: return to running
-        <jsf.junit context-path="${context.path}"
-                   classpath-refid="html.classpath"
-                   test-results-dir="${impl.test.results.dir}">
-            <tests>
-                <fileset dir="${basedir}/build/classes"
-                         includes="com/sun/faces/systest/DuplicateIds04TestCase.class"/>
-            </tests>
-        </jsf.junit>               
-        -->
-
-
-    </target>
-    
-    
-    <target name="test.viewIdNormalization">
-        <!-- request for any page will do -->
-        <jsf.tester request="${context.path}/faces/faces/faces/faces/duplicateIds02.jsp"
-                status="200"/>
-    </target>
-
-    <target name="test.external"
-            description="Test ExternalContext implementation issues">
-
-        <!-- Request scope attribute transparency -->
-        <jsf.tester
-              request="${context.path}/faces/external01.jsp"
-              outContent="/external01.jsp PASSED"/>
-
-        <!-- Session scope attribute transparency -->
-        <jsf.tester
-              request="${context.path}/faces/external02.jsp"
-              outContent="/external02.jsp PASSED"/>
-
-        <!-- Application scope attribute transparency -->
-        <jsf.tester
-              request="${context.path}/faces/external03.jsp"
-              outContent="/external03.jsp PASSED"/>
-
-    </target>
-
-    <target name="test.facelets">
-        <!-- Tests to verify 955, return a 500, rather than a 404 -->
-        <jsf.tester request="${context.path}/faces/facelets/compositionnotfound.xhtml"
-            status="500"/>
-        <jsf.tester request="${context.path}/faces/facelets/decoratenotfound.xhtml"
-            status="500"/>
-        <jsf.tester request="${context.path}/faces/facelets/includenotfound.xhtml"
-            status="500"/>        
-        <jsf.junit context-path="${context.path}"
-                   classpath-refid="html.classpath"
-                   test-results-dir="${impl.test.results.dir}">
-            <tests>
-                <fileset dir="${basedir}/build/classes"
-                         includes="com/sun/faces/facelets/*TestCase.class"/> 
-            </tests>
-        </jsf.junit>
-        <jsf.junit context-path="${context.path}"
-                   classpath-refid="html.classpath"
-                   test-results-dir="${impl.test.results.dir}">
-            <tests>
-                <fileset dir="${basedir}/build/classes"
-                         includes="com/sun/faces/systest/viewparameters/ViewParametersTestCase.class"/>
-            </tests>
-        </jsf.junit>  
-
-    </target>
 
     <target name="test.groovy">
         <jsf.junit context-path="${context.path}"
@@ -290,114 +89,16 @@
         </jsf.junit>
     </target>
 
-    <target name="test.annotations">
-        <jsf.junit context-path="${context.path}"
-                   classpath-refid="html.classpath"
-                   test-results-dir="${impl.test.results.dir}">
-            <tests>
-                <fileset dir="${basedir}/build/classes"
-                         includes="com/sun/faces/annotation/AnnotatedComponentsTestCase.class"/> 
-            </tests>
-        </jsf.junit>
-    </target>
-
-    <target name="test.el">
-        <jsf.junit context-path="${context.path}"
-                   classpath-refid="html.classpath"
-                   test-results-dir="${impl.test.results.dir}">
-            <tests>
-                <fileset dir="${basedir}/build/classes"
-                         includes="com/sun/faces/systest/el/ELTestCase.class"/> 
-            </tests>
-        </jsf.junit>
-    </target>
-
-    <target name="test.flash">
-        <jsf.junit context-path="${context.path}"
-                   classpath-refid="html.classpath"
-                   test-results-dir="${impl.test.results.dir}">
-            <tests>
-                <fileset dir="${basedir}/build/classes"
-                         includes="com/sun/faces/systest/Flash*TestCase.class"/> 
-            </tests>
-        </jsf.junit>
-    </target>
-
-
-
-    <target name="test.f.event">
-        <jsf.junit context-path="${context.path}"
-                   classpath-refid="html.classpath"
-                   test-results-dir="${impl.test.results.dir}">
-            <tests>
-                <fileset dir="${basedir}/build/classes"
-                         includes="com/sun/faces/systest/tags/EventTestCase.class"/> 
-            </tests>
-        </jsf.junit>
-    </target>
-
-    <target name="test.resourcelocation">
-        <jsf.junit context-path="${context.path}"
-                   classpath-refid="html.classpath"
-                   test-results-dir="${impl.test.results.dir}">
-            <tests>
-                <fileset dir="${basedir}/build/classes"
-                         includes="com/sun/faces/systest/ResourceRelocationTestCase.class"/> 
-            </tests>
-        </jsf.junit>
-    </target>
-
-
-    <target name="test.hello"
-            description="Basic Hello, World Tests">
-
-        <!-- Simple Non-Faces Response -->
-        <jsf.tester
-              request="${context.path}/hello.jsp" status="200"
-              outContent="/hello.jsp PASSED"/>
-
-        <!-- Simple Faces Response (Direct) -->
-        <jsf.tester
-              request="${context.path}/faces/hello.jsp"
-              outContent="/hello.jsp PASSED"/>
-
-        <!-- Simple Golden File Test -->
-        <jsf.tester
-              request="${context.path}/hello.jsp"
-              golden="${golden.path}/hello.txt"/>
-
-        <!-- Simple Golden File Plus Ignore File Test -->
-        <jsf.tester
-              request="${context.path}/hello.jsp"
-              golden="${golden.path}/hello-mismatch.txt"
-              ignore="${ignore.path}/hello-mismatch.txt"/>
-
-    </target>
-
-
     <target name="test.jsp"
             description="Test JSP Integration">
         
-        <jsf.tester
-              request="${context.path}/faces/positiveTagFile.jsp"
-              status="200"/>
-        
         <jsf.junit context-path="${context.path}"
                    classpath-refid="html.classpath"
                    test-results-dir="${impl.test.results.dir}">
             <tests>
                 <fileset dir="${basedir}/build/classes"
-                         includes="com/sun/faces/jsptest/ViewTagTestCase.class,
-                                   com/sun/faces/jsptest/CommandLinkNoFormTestCase.class,
-                                   com/sun/faces/jsptest/FormElTestCase.class,
-                                   com/sun/faces/jsptest/MissingActionListenerMethodTestCase.class,
-                                   com/sun/faces/jsptest/ConverterTestCase.class,
-                                   com/sun/faces/jsptest/IdRefTestCase.class,
-                                   com/sun/faces/jsptest/ForEachTestCase.class,
-                                   com/sun/faces/jsptest/SetPropertyTestCase.class"/>
-                               <!--
-                                   com/sun/faces/jsptest/PrependIdTestCase.class,
-                               -->
+                         includes="com/sun/faces/jsptest/IdRefTestCase.class,
+                                   com/sun/faces/jsptest/ForEachTestCase.class"/>
             </tests>
         </jsf.junit>       
     </target>
@@ -416,524 +117,47 @@
         </jsf.junit>
     </target>
 
-    <target name="test.path"
-            description="Test Path Handling">
-        <jsf.junit context-path="${context.path}"
-                   classpath-refid="html.classpath"
-                   test-results-dir="${impl.test.results.dir}">
-            <tests>
-                <fileset dir="${basedir}/build/classes"
-                         includes="com/sun/faces/pathtest/*TestCase.class"
-                         excludes="com/sun/faces/pathtest/PathTestCase.class"/>
-            </tests>
-        </jsf.junit>       
-    </target>
-
-    <target name="test.methodRef"
-            description="Test Method References">
-        <jsf.junit context-path="${context.path}"
-                   classpath-refid="html.classpath"
-                   test-results-dir="${impl.test.results.dir}">
-            <tests>
-                <fileset dir="${basedir}/build/classes"
-                         includes="com/sun/faces/methodref/*TestCase.class"/>
-            </tests>
-        </jsf.junit> 
-       
-        <!-- MethodBinding Test #2 (Superclass Method Calls) -->
-        <jsf.tester
-              request="${context.path}/faces/methodref02.jsp"
-              outContent="/methodref02.jsp PASSED"/>
-
-    </target>
-
-    <target name="test.prefix.security"
-            description="Ensure a prefix mapped FacesServlet doesn't allow access to WEB-INF">
-        <jsf.tester
-              request="${context.path}/faces/WEB-INF/test.jsp"
-              status="404"/>
-        <jsf.tester
-              request="${context.path}/faces/WEB-INF"
-              status="404"/>
-        <jsf.tester
-              request="${context.path}/faces/WEB-INF/"
-              status="404"/>
-        <jsf.tester
-              request="${context.path}/faces/META-INF/MANIFEST.MF"
-              status="404"/>
-        <jsf.tester
-              request="${context.path}/faces/META-INF"
-              status="404"/>
-        <jsf.tester
-              request="${context.path}/faces/META-INF/"
-              status="404"/>
-        <jsf.tester
-              request="${context.path}/faces/web-Inf/test.jsp"
-              status="404"/>
-        <jsf.tester
-              request="${context.path}/faces/mEtA-InF/MANIFEST.MF"
-              status="404"/>
-    </target>
-
-    <target name="test.valueBindingGet"
-            description="Test ValueBinding.getValue() implementation">
-
-        <!-- ValueBinding Test #1 (Simple Bean Getter) -->
-        <jsf.tester
-              request="${context.path}/faces/valueBinding01.jsp"
-              outContent="/valueBinding01.jsp PASSED"/>
-
-        <!-- ValueBinding Test #2 (Simple String Property Getter) -->
-        <jsf.tester
-              request="${context.path}/faces/valueBinding02.jsp"
-              outContent="/valueBinding02.jsp PASSED"/>
-
-        <!-- ValueBinding Test #3 (Simple Integer Property Getter) -->
-        <jsf.tester
-              request="${context.path}/faces/valueBinding03.jsp"
-              outContent="/valueBinding03.jsp PASSED"/>
-
-        <!-- ValueBinding Test #4 (Simple Boolean Property Getter) -->
-        <jsf.tester
-              request="${context.path}/faces/valueBinding04.jsp"
-              outContent="/valueBinding04.jsp PASSED"/>
-
-        <!-- ValueBinding Test #5 (Simple Integer Expression Getter) -->
-        <jsf.tester
-              request="${context.path}/faces/valueBinding05.jsp"
-              outContent="/valueBinding05.jsp PASSED"/>
-
-        <!-- ValueBinding Test #6 (Simple Boolean Expression Getter) -->
-        <jsf.tester
-              request="${context.path}/faces/valueBinding06.jsp"
-              outContent="/valueBinding06.jsp PASSED"/>
-
-        <!-- ValueBinding Test #7 (Mixed Literal and Expression Getter) -->
-        <jsf.tester
-              request="${context.path}/faces/valueBinding07.jsp"
-              outContent="/valueBinding07.jsp PASSED"/>
-
-    </target>
-
-    <target name="test.config"
-            description="Test config loading facility">
-
-        <jsf.tester
-              request="${context.path}/faces/config01.jsp"
-              ignoreIfContains="${ignore.path}/ignoreIfContains.txt"
-              outContent="/config01.jsp PASSED"/>
-
-        <jsf.tester
-              request="${context.path}/faces/factoryFinder.jsp"
-              golden="${golden.path}/factoryFinder.txt"
-              ignoreIfContains="${ignore.path}/ignoreIfContains.txt"
-              recordGolden="${local.golden.path}/factoryFinder.txt"
-              />
-    </target>
-
-    <target name="test.listener"
-            description="Test listener">
-
-        <jsf.tester
-              ignoreIfContains="${ignore.path}/ignoreIfContains.txt"
-              request="${context.path}/faces/listener.jsp"
-              status="200"/>
-    </target>
-
     <target name="test.managed"
             description="Test managed bean creation facility">
 
-        <!-- Managed Bean Create #1 (No Property Setters) -->
-        <jsf.tester
-              ignoreIfContains="${ignore.path}/ignoreIfContains.txt"
-              request="${context.path}/faces/managed01.jsp"
-              outContent="/managed01.jsp PASSED"/>
-
-        <!-- Managed Bean Create #2 (Primitive Property Setters) -->
-        <jsf.tester
-              ignoreIfContains="${ignore.path}/ignoreIfContains.txt"
-              request="${context.path}/faces/managed02.jsp"
-              outContent="/managed02.jsp PASSED"/>
-
-        <jsf.tester
-              ignoreIfContains="${ignore.path}/ignoreIfContains.txt"
-              request="${context.path}/faces/managed03.jsp"
-              status="500"/>
-
-        <jsf.tester
-              request="${context.path}/faces/managed04.jsp"
-              golden="${golden.path}/managed04.txt"
-              ignoreIfContains="${ignore.path}/ignoreIfContains.txt"
-              recordGolden="${local.golden.path}/managed04.txt"
-              />
-
-        <jsf.tester
-              ignoreIfContains="${ignore.path}/ignoreIfContains.txt"
-              request="${context.path}/faces/managed07.jsp"
-              status="500"/>
-
-        <jsf.tester
-              request="${context.path}/faces/resourceInjection01.jsp"
-              golden="${golden.path}/resourceInjection01.txt"
-              ignoreIfContains="${ignore.path}/ignoreIfContains.txt"
-              recordGolden="${local.golden.path}/resourceInjection01.txt"
-              />
-
-         <jsf.tester
-              ignoreIfContains="${ignore.path}/ignoreIfContains.txt"
-              request="${context.path}/faces/eagerbean.jsp"
-              status="200"/>
-        
         <jsf.junit context-path="${context.path}"
                    classpath-refid="html.classpath"
                    test-results-dir="${impl.test.results.dir}">
             <tests>
                 <fileset dir="${basedir}/build/classes"
-                         includes="com/sun/faces/systest/lifecycle/*TestCase.class"/>
+                         includes="com/sun/faces/systest/jsp/managed/*TestCase.class"/>
             </tests>
-        </jsf.junit>         
-    </target>
-
-
-    <target name="test.message"
-            description="Test message resources processing">
-
-        <!--
-            These tests aren't run due to their design.  They
-            shouldn't be changing the ViewRoot while the view
-            is being built.
-        -->
-        <!-- Standard API Message Resources -->
-        <!--
-        <jsf.tester
-              ignoreIfContains="${ignore.path}/ignoreIfContains.txt"
-              request="${context.path}/faces/message01.jsp"
-              outContent="/message01.jsp PASSED"/>-->
-
-        <!-- Standard IMPL Message Resources -->
-        <!--
-        <jsf.tester
-              ignoreIfContains="${ignore.path}/ignoreIfContains.txt"
-              request="${context.path}/faces/message02.jsp"
-              outContent="/message02.jsp PASSED"/>-->
-
-        <!-- Single Message Resources Element -->
-        <!--<jsf.tester
-              ignoreIfContains="${ignore.path}/ignoreIfContains.txt"
-              request="${context.path}/faces/message03.jsp"
-               outContent="/message03.jsp PASSED"/>-->
-
-        <!-- Double Message Resources Element -->
-        <!--<jsf.tester
-              ignoreIfContains="${ignore.path}/ignoreIfContains.txt"
-              request="${context.path}/faces/message04.jsp"
-              outContent="/message04.jsp PASSED"/>-->
-
-    </target>
+        </jsf.junit>
 
-    <target name="test.navigation"
-            description="Test navigation handler rule processing">
+        <if>
+          <bool>
+            <not>
+                <or>
+                    <equals arg1="${container.name}" arg2="tomcat6"/>
+                    <equals arg1="${container.name}" arg2="tomcat7"/>
+                </or>
+            </not>
+          </bool>
+          <then>
+            <jsf.tester classpath-refid="html.classpath" test-results-dir="${impl.test.results.dir}"
+                context-path="${context.path}" request="/faces/resourceInjection01.jsp"
+                regexp="(?s).*Hello World from env-entry!Hello World from env-entry!.*"/>
+          </then>
+        </if>
         
         <jsf.junit context-path="${context.path}"
                    classpath-refid="html.classpath"
                    test-results-dir="${impl.test.results.dir}">
             <tests>
                 <fileset dir="${basedir}/build/classes"
-                         includes="com/sun/faces/systest/*NavigationTestCase.class"/>
+                         includes="com/sun/faces/systest/lifecycle/*TestCase.class"/>
             </tests>
         </jsf.junit>         
-        
-
-    </target>
-
-    <target name="test.state"
-            description="Test new state manager">
-        
-        <jsf.junit context-path="${context.path}"
-                   classpath-refid="html.classpath"
-                   test-results-dir="${impl.test.results.dir}">
-            <tests>
-                <fileset dir="${basedir}/build/classes"
-                         includes="com/sun/faces/systest/state/*TestCase.class"/>
-            </tests>
-        </jsf.junit>  
-
-    </target>
-
-    <target name="test.tlvalidator"
-            description="Test the RI Tag Library Validator">
-
-        <jsf.tester
-              ignoreIfContains="${ignore.path}/ignoreIfContains.txt"
-              request="${context.path}/faces/TestHtmlBasicValidatorFail.jsp"
-              status="500"/>
-
-        <jsf.tester
-              ignoreIfContains="${ignore.path}/ignoreIfContains.txt"
-              request="${context.path}/TestHtmlBasicValidatorFail.jsp"
-              status="500"/>
-
-        <jsf.tester
-              ignoreIfContains="${ignore.path}/ignoreIfContains.txt"
-              request="${context.path}/faces/TestHtmlBasicValidatorSucceed.jsp"
-              status="200"/>
-
-        <jsf.tester
-              ignoreIfContains="${ignore.path}/ignoreIfContains.txt"
-              request="${context.path}/faces/TestCoreValidatorFail.jsp"
-              status="500"/>
-
-        <jsf.tester
-              ignoreIfContains="${ignore.path}/ignoreIfContains.txt"
-              request="${context.path}/TestCoreValidatorFail.jsp"
-              status="500"/>
-
-        <jsf.tester
-              ignoreIfContains="${ignore.path}/ignoreIfContains.txt"
-              request="${context.path}/faces/TestCoreValidatorSucceed.jsp"
-              status="200"/>
-
-        <jsf.tester
-              ignoreIfContains="${ignore.path}/ignoreIfContains.txt"
-              request="${context.path}/faces/TestCoreValidatorIfFail.jsp"
-              status="200"/>
-
-        <jsf.tester
-              ignoreIfContains="${ignore.path}/ignoreIfContains.txt"
-              request="${context.path}/faces/TestCoreValidatorIfSucceed.jsp"
-              status="200"/>
-        <!-- JSTL forEach integration indefinately inoperable.
-            <jsf.tester 
-                 request="${context.path}/faces/TestCoreValidatorIteratorFail.jsp"
-              status="500"/>
-        
-            <jsf.tester 
-                 request="${context.path}/faces/TestCoreValidatorIteratorSucceed.jsp"
-              status="200"/>
-        -->
-
-        <jsf.tester
-              ignoreIfContains="${ignore.path}/ignoreIfContains.txt"
-              request="${context.path}/faces/TestElValidatorActionRefFail.jsp"
-              status="500"/>
-
-        <jsf.tester
-              ignoreIfContains="${ignore.path}/ignoreIfContains.txt"
-              request="${context.path}/faces/TestElValidatorActionRefSucceed.jsp"
-              status="200"/>
-
-        <jsf.tester
-              ignoreIfContains="${ignore.path}/ignoreIfContains.txt"
-              request="${context.path}/faces/TestElValidatorComponentFail.jsp"
-              status="500"/>
-
-        <jsf.tester
-              ignoreIfContains="${ignore.path}/ignoreIfContains.txt"
-              request="${context.path}/faces/TestElValidatorComponentSucceed.jsp"
-              status="200"/>
-
-        <jsf.tester
-              ignoreIfContains="${ignore.path}/ignoreIfContains.txt"
-              request="${context.path}/faces/TestElValidatorIdFail.jsp"
-              status="500"/>
-
-        <jsf.tester
-              ignoreIfContains="${ignore.path}/ignoreIfContains.txt"
-              request="${context.path}/faces/TestElValidatorIdSucceed.jsp"
-              status="200"/>
-
-        <jsf.tester
-              ignoreIfContains="${ignore.path}/ignoreIfContains.txt"
-              request="${context.path}/faces/TestElValidatorValueRefFail.jsp"
-              status="500"/>
-
-        <jsf.tester
-              ignoreIfContains="${ignore.path}/ignoreIfContains.txt"
-              request="${context.path}/faces/TestElValidatorValueRefSucceed.jsp"
-              status="200"/>
-
-        <jsf.tester
-              ignoreIfContains="${ignore.path}/ignoreIfContains.txt"
-              request="${context.path}/faces/jsp/tlvTest01.jsp"
-              status="200"/>
-
-    </target>
-
-    <target name="test.valuechange"
-            description="Test ValueChangeListeners">
-
-        <jsf.junit context-path="${context.path}"
-                   classpath-refid="html.classpath"
-                   test-results-dir="${impl.test.results.dir}">
-            <tests>
-                <fileset dir="${basedir}/build/classes"
-                         includes="com/sun/faces/jsptest/ValueChangeListenerTestCase.class"/>
-            </tests>
-        </jsf.junit>
-    </target>
-
-    <target name="test.converter"
-            description="Test Converter creation facility">
-
-        <!-- Test Converter creation -->
-        <jsf.tester
-              ignoreIfContains="${ignore.path}/ignoreIfContains.txt"
-              request="${context.path}/faces/converter.jsp"
-              outContent="/converter.jsp PASSED"/>
-    </target>
-
-    <target name="test.converter01"
-            description="Test standard Converter replacement">
-
-        <jsf.tester
-              ignoreIfContains="${ignore.path}/ignoreIfContains.txt"
-              request="${context.path}/faces/converter01.jsp"
-              outContent="/converter01.jsp PASSED"/>
-    </target>
-
-    <target name="test.converter02"
-            description="Test passing Converter instances to component tag">
-
-        <jsf.tester
-              ignoreIfContains="${ignore.path}/ignoreIfContains.txt"
-              request="${context.path}/faces/converter02.jsp"
-              recordGolden="${local.golden.path}/standard/converter02.txt"
-              golden="${golden.path}/standard/converter02.txt"/>
-    </target>
-
-    <target name="test.converter03"
-            description="Test converter">
-
-        <jsf.tester
-              ignoreIfContains="${ignore.path}/ignoreIfContains.txt"
-              request="${context.path}/faces/converter03.jsp"
-              status="200"/>
-    </target>
-
-    <target name="test.converter04"
-            description="Test converter">
-
-        <jsf.tester
-              ignoreIfContains="${ignore.path}/ignoreIfContains.txt"
-              request="${context.path}/faces/converter04.jsp"
-              status="200"/>
-    </target>
-
-    <target name="test.converter05">
-        <jsf.tester
-              ignoreIfContains="${ignore.path}/ignoreIfContains.txt"
-              request="${context.path}/faces/converter05.jsp"
-              recordGolden="${local.golden.path}/standard/converter05.txt"
-              golden="${golden.path}/standard/converter05.txt"/>
-    </target>
-
-    <target name="test.converter06">
-        <jsf.tester
-              ignoreIfContains="${ignore.path}/ignoreIfContains.txt"
-              request="${context.path}/faces/converter06.jsp"
-              recordGolden="${local.golden.path}/standard/converter06.txt"
-              golden="${golden.path}/standard/converter06.txt"/>
-    </target>
-
-    <target name="test.enum-converter-1"
-            description="Test Enum Converter ">
-                                                                                                                          
-        <jsf.tester
-              ignoreIfContains="${ignore.path}/ignoreIfContains.txt"
-              request="${context.path}/faces/enum-converter-1.jsp"
-              outContent="/enum-converter-1.jsp PASSED"/>
-    </target>
-
-    <target name="test.validator"
-            description="Test Validator creation facility">
-
-        <!-- Test validator creation -->
-        <jsf.tester
-              ignoreIfContains="${ignore.path}/ignoreIfContains.txt"
-              request="${context.path}/faces/validator.jsp"
-              outContent="/validator.jsp PASSED"/>
-
-            <jsf.junit context-path="${context.path}"
-                   classpath-refid="html.classpath"
-                   test-results-dir="${impl.test.results.dir}">
-            <tests>
-                <fileset dir="${basedir}/build/classes"
-                         includes="com/sun/faces/systest/validator/*TestCase.class"/>
-            </tests>
-        </jsf.junit>
-
-    </target>
-
-    <target name="test.validator01"
-            description="Test standard Validator replacement">
-
-        <jsf.tester
-              ignoreIfContains="${ignore.path}/ignoreIfContains.txt"
-              request="${context.path}/faces/validator01.jsp"
-              outContent="/validator01.jsp PASSED"/>
-    </target>
-
-    <target name="test.validator02"
-            description="Test validator">
-
-        <jsf.tester
-              ignoreIfContains="${ignore.path}/ignoreIfContains.txt"
-              request="${context.path}/faces/validator02.jsp"
-              status="200"/>
-    </target>
-
-    <target name="test.validator03"
-            description="Test validator">
-
-
-        <jsf.tester
-              ignoreIfContains="${ignore.path}/ignoreIfContains.txt"
-              request="${context.path}/faces/validator03.jsp"
-              status="200"/>
-    </target>
-
-    <target name="test.ajax"
-            description="Test Ajax Functionality">
-
-            <jsf.junit context-path="${context.path}"
-                   classpath-refid="html.classpath"
-                   test-results-dir="${impl.test.results.dir}">
-            <tests>
-                <fileset dir="${basedir}/build/classes"
-                         includes="com/sun/faces/ajax/*TestCase.class"                         />
-            </tests>
-        </jsf.junit>
-    </target>
-
-    <target name="test.render"
-            description="Test Rendering Functionality">
-
-            <jsf.junit context-path="${context.path}"
-                   classpath-refid="html.classpath"
-                   test-results-dir="${impl.test.results.dir}">
-            <tests>
-                <fileset dir="${basedir}/build/classes"
-                         includes="com/sun/faces/render/*TestCase.class" />
-                         <!-- excludes="com/sun/faces/render/CommandButtonTestCase.class" /> -->
-<!-- 139-StateSaving -->
-            </tests>
-        </jsf.junit>
     </target>
 
     <target name="test.component"
             description="Test Component creation facility">
-
-        <!-- Test Component creation -->
-
-        <jsf.tester
-              ignoreIfContains="${ignore.path}/ignoreIfContains.txt"
-              request="${context.path}/faces/component.jsp"
-              outContent="/component.jsp PASSED"/>
-        
-        <jsf.tester             
-              request="${context.path}/faces/ProcessSaveRestoreStateTest.jsp"
-              status="200"/>
-        
+                
         <jsf.junit context-path="${context.path}"
                    classpath-refid="html.classpath"
                    test-results-dir="${impl.test.results.dir}">
@@ -948,22 +172,17 @@
                    test-results-dir="${impl.test.results.dir}">
             <tests>
                 <fileset dir="${basedir}/build/classes"
-                         includes="com/sun/faces/component/*TestCase.class,com/sun/faces/event/DynamicAddTestCase.class"
-                         excludes="com/sun/faces/component/GetClientIdELTestCase.class"
+                         includes="com/sun/faces/component/*TestCase.class"
                          />
-<!-- 139-StateSaving edburns remove excludes -->
             </tests>
         </jsf.junit>
-        
-    </target>
 
-    <target name="test.component01"
-            description="Test standard Component replacement">
+        <jsf.tester classpath-refid="html.classpath" test-results-dir="${impl.test.results.dir}"
+              context-path="${context.path}" request="/faces/facelets/i_spec_599.xhtml"
+              regexp="(?s).*success.*"/>
+        
 
-        <jsf.tester
-              ignoreIfContains="${ignore.path}/ignoreIfContains.txt"
-              request="${context.path}/faces/component01.jsp"
-              outContent="/component01.jsp PASSED"/>
+        
     </target>
 
     <target name="test.composite"
@@ -975,11 +194,20 @@
             <tests>
                 <fileset dir="${basedir}/build/classes"
                          includes="com/sun/faces/composite/*TestCase.class"/>
+                <fileset dir="${basedir}/build/classes"
+                         includes="com/sun/faces/systest/composite/*TestCase.class"/>
+
             </tests>
-        </jsf.junit>  
+        </jsf.junit>
 
         <if>
-            <equals arg1="${container.name}" arg2="glassfishV3"/>
+            <bool>
+                <or>
+                    <equals arg1="${container.name}" arg2="glassfishV3"/>
+                    <equals arg1="${container.name}" arg2="glassfishV3.1"/>
+                    <equals arg1="${container.name}" arg2="glassfishV3.1_no_cluster"/>
+                </or>
+            </bool>
             <then>
 		<jsf.junit context-path="${context.path}"
 			   classpath-refid="html.classpath"
@@ -992,393 +220,17 @@
             </then>
         </if>
 
-
-    </target>
-
-
-    <target name="test.standard"
-            description="Test the Standard RenderKit">
-        <jsf.tester
-              ignoreIfContains="${ignore.path}/ignoreIfContains.txt"
-              request="${context.path}/faces/standard/messages01.jsp"
-              recordGolden="${local.golden.path}/standard/messages01.txt"
-              golden="${golden.path}/standard/messages01.txt"/>
-
-        <jsf.tester
-              ignoreIfContains="${ignore.path}/ignoreIfContains.txt"
-              request="${context.path}/faces/standard/messages02.jsp"
-              golden="${golden.path}/standard/messages02.txt"
-              recordGolden="${local.golden.path}/standard/messages02.txt"/>
-
-        <jsf.tester
-              ignoreIfContains="${ignore.path}/ignoreIfContains.txt"
-              request="${context.path}/faces/standard/component01.jsp"
-              recordGolden="${local.golden.path}/standard/component01.txt"
-              golden="${golden.path}/standard/component01.txt"/>
-        <jsf.tester
-              request="${context.path}/faces/standard/autocomplete.jsp"
-              golden="${golden.path}/standard/autocomplete.txt"/>
-        <jsf.tester
-            request="${context.path}/faces/standard/dtablecolumnclasses.jsp"
-            golden="${golden.path}/standard/dtablecolumnclasses.txt"/>
-        <jsf.tester
-            request="${context.path}/faces/standard/pgridcolumnclasses.jsp"
-            golden="${golden.path}/standard/pgridcolumnclasses.txt"/>
-        <jsf.junit context-path="${context.path}"
-                   classpath-refid="html.classpath"
-                   test-results-dir="${impl.test.results.dir}">
-            <tests>
-                <fileset dir="${basedir}/build/classes"
-                         includes="com/sun/faces/systest/SelectOneManyEnumTestCase.class,
-                                   com/sun/faces/systest/SelectManyCollectionTestCase.class,
-                                   com/sun/faces/systest/DataTableTestCase.class,
-                                   com/sun/faces/systest/TestOutputTargets.class,
-                                   com/sun/faces/systest/LinkTypeAttributeTestCase.class,
-                                   com/sun/faces/systest/CheckboxTestCase.class,
-                                   com/sun/faces/systest/SelectOneHideNoSelectItemGroupTestCase.class,
-                                   com/sun/faces/systest/SelectOneHideNoSelectionTestCase.class,
-                                   com/sun/faces/systest/SelectOneValueExpressionHideNoSelectionTestCase.class"/>
-            </tests>
-        </jsf.junit>  
-    </target>
-
-    <target name="test.html.taglib"
-            description="Test the HTML JSP Tags">
-        <echo message="Testing commandButton..."/>
-
-        <jsf.tester
-              request="${context.path}/faces/taglib/commandButton_test.jsp"
-              golden="${golden.path}/taglib/commandButton_test.txt"
-              ignoreIfContains="${ignore.path}/ignoreIfContains.txt"
-              recordGolden="${local.golden.path}/taglib/commandButton_test.txt"/>
-
-        <jsf.tester
-              request="${context.path}/faces/taglib/commandButton_param_test.jsp"
-              golden="${golden.path}/taglib/commandButton_param_test.txt"
-              ignoreIfContains="${ignore.path}/ignoreIfContains.txt"
-              recordGolden="${local.golden.path}/taglib/commandButton_param_test.txt"/>
-
-        <echo message="Testing commandLink..."/>
-        <jsf.tester
-              request="${context.path}/faces/taglib/commandLink_test.jsp"
-              golden="${golden.path}/taglib/commandLink_test.txt"
-              ignoreIfContains="${ignore.path}/ignoreIfContains.txt"
-              recordGolden="${local.golden.path}/taglib/commandLink_test.txt"/>
-        <jsf.tester
-              request="${context.path}/faces/taglib/commandLink_multiform_test.jsp"
-              golden="${golden.path}/taglib/commandLink_multiform_test.txt"
-              ignoreIfContains="${ignore.path}/ignoreIfContains.txt"
-              recordGolden="${local.golden.path}/taglib/commandLink_multiform_test.txt"/>
-        <jsf.tester
-              ignoreIfContains="${ignore.path}/ignoreIfContains.txt"
-              request="${context.path}/faces/taglib/attributeTest.jsp"
-              recordGolden="${local.golden.path}/taglib/attributeTest.txt"
-              golden="${golden.path}/taglib/attributeTest.txt"/>
-
-        <jsf.tester
-              ignoreIfContains="${ignore.path}/ignoreIfContains.txt"
-              request="${context.path}/faces/standard/selectmany02.jsp"
-              recordGolden="${local.golden.path}/standard/selectmany02.txt"
-              golden="${golden.path}/standard/selectmany02.txt"/>
-        <jsf.tester
-              ignoreIfContains="${ignore.path}/ignoreIfContains.txt"
-              request="${context.path}/faces/standard/selectmany03.jsp"
-              recordGolden="${local.golden.path}/standard/selectmany03.txt"
-              golden="${golden.path}/standard/selectmany03.txt"/>              
-        <jsf.tester
-              ignoreIfContains="${ignore.path}/ignoreIfContains.txt"
-              request="${context.path}/faces/standard/selectmany04.jsp"
-              recordGolden="${local.golden.path}/standard/selectmany04.txt"
-              golden="${golden.path}/standard/selectmany04.txt"/>
-    </target>
-
-    <target name="test.verbatim"
-            description="Test the Verbatim tag">
-        <echo message="Testing verbatim..."/>
-        <jsf.tester
-              ignoreIfContains="${ignore.path}/ignoreIfContains.txt"
-              request="${context.path}/faces/verbatim_test.jsp"
-              golden="${golden.path}/verbatim_test.txt"
-              />
-        <jsf.tester
-              ignoreIfContains="${ignore.path}/ignoreIfContains.txt"
-              request="${context.path}/faces/escape_test.jsp"
-              golden="${golden.path}/escape_test.txt"
-              />
-    </target>
-
-
-    <target name="test.renderkit"
-            description="Test renderkit processing">
-
-        <jsf.tester
-              ignoreIfContains="${ignore.path}/ignoreIfContains.txt"
-              request="${context.path}/faces/renderkit01.jsp"
-              outContent="/renderkit01.jsp PASSED"/>
-        <jsf.tester
-              ignoreIfContains="${ignore.path}/ignoreIfContains.txt"
-              request="${context.path}/renderkit02.jsp"
-              golden="${golden.path}/renderkit02A.txt"
-              recordGolden="${local.golden.path}/renderkit02A.txt"
-              />
-        <jsf.tester
-              ignoreIfContains="${ignore.path}/ignoreIfContains.txt"
-              request="${context.path}/renderkit03.jsp"
-              recordGolden="${local.golden.path}/renderkit03A.txt"
-              golden="${golden.path}/renderkit03A.txt"/>
-        <jsf.junit context-path="${context.path}"
-                   classpath-refid="html.classpath"
-                   test-results-dir="${impl.test.results.dir}">
-            <tests>
-                <fileset dir="${basedir}/build/classes"
-                         includes="com/sun/faces/systest/RenderKitsTestCase.class"/>
-            </tests>
-        </jsf.junit>        
-    </target>
-
-    <target name="test.resourceBundleELResolver"
-            description="Test ResourceBundleELResolver ">
-
-        <jsf.tester
-              request="${context.path}/faces/resourceBundle01.jsp"
-              outContent="Expression in raw JSP page is Value From ResourceBundle."/>
-        <jsf.tester
-              request="${context.path}/faces/resourceBundle02.jsp"
-              recordGolden="${local.golden.path}/resourceBundle02.txt"
-              golden="${golden.path}/resourceBundle02.txt"/>
-        <jsf.tester
-              request="${context.path}/faces/resourceBundle03.jsp"
-              recordGolden="${local.golden.path}/resourceBundle03.txt"
-              golden="${golden.path}/resourceBundle03.txt"/>
-        <!-- RETURN TO RUNNING
-            <jsf.tester 
-                 request="${context.path}/faces/resourceBundle04.jsp"
-                 recordGolden="${local.golden.path}/resourceBundle04.txt"
-                 golden="${golden.path}/resourceBundle04.txt"/>
-        -->
-    </target>
-
-
-    <target name="test.phases"
-            description="Test Phase processing with Phase Listener">
-        <jsf.tester
-              ignoreIfContains="${ignore.path}/ignoreIfContains.txt"
-              request="${context.path}/phaseListener01.jsp"
-              outContent="/phaseListener01.jsp PASSED"/>
-        <!-- PENDING investigate the need for this
-  <jsf.tester 
-        request="${context.path}/faces/phaseListener01.jsp?param=foo"
-        outContent="/phaseListener01.jsp FAILED"/>
-        -->
-    </target>
-    <target name="test.subview"
-            description="Test subview tag">
-
-        <jsf.tester
-              ignoreIfContains="${ignore.path}/ignoreIfContains.txt"
-              request="${context.path}/faces/subview01.jsp"
-              recordGolden="${local.golden.path}/subview01.txt"
-              golden="${golden.path}/subview01.txt"/>
-
-        <jsf.tester
-              ignoreIfContains="${ignore.path}/ignoreIfContains.txt"
-              request="${context.path}/faces/subview02.jsp"
-              recordGolden="${local.golden.path}/subview02.txt"
-              golden="${golden.path}/subview02.txt"/>
-
-        <jsf.tester
-              ignoreIfContains="${ignore.path}/ignoreIfContains.txt"
-              request="${context.path}/faces/subview03.jsp"
-              recordGolden="${local.golden.path}/subview03.txt"
-              golden="${golden.path}/subview03.txt"/>
-
-        <jsf.tester
-              ignoreIfContains="${ignore.path}/ignoreIfContains.txt"
-              request="${context.path}/faces/subview04.jsp"
-              recordGolden="${local.golden.path}/subview04.txt"
-              golden="${golden.path}/subview04.txt"/>
-
-        <jsf.tester
-              request="${context.path}/faces/subview05.jsp"
-              recordGolden="${local.golden.path}/subview05.txt"
-              golden="${golden.path}/subview05.txt"/>
-
-        <jsf.tester
-              request="${context.path}/faces/subview06.jsp"
-              recordGolden="${local.golden.path}/subview06.txt"
-              golden="${golden.path}/subview06.txt"/>
-
-    </target>
-
-    <target name="test.interweaving"
-            description="Test interweaving">
-
-        <jsf.tester
-              ignoreIfContains="${ignore.path}/ignoreIfContains.txt"
-              request="${context.path}/faces/interweaving01.jsp"
-              recordGolden="${local.golden.path}/interweaving01.txt"
-              golden="${golden.path}/interweaving01.txt"/>
-
-        <jsf.tester
-              ignoreIfContains="${ignore.path}/ignoreIfContains.txt"
-              request="${context.path}/faces/interweaving02.jsp"
-              recordGolden="${local.golden.path}/interweaving02.txt"
-              golden="${golden.path}/interweaving02.txt"/>
-
-        <jsf.tester
-              ignoreIfContains="${ignore.path}/ignoreIfContains.txt"
-              request="${context.path}/faces/interweaving03.jsp"
-              recordGolden="${local.golden.path}/interweaving03.txt"
-              golden="${golden.path}/interweaving03.txt"/>
-
-        <jsf.tester
-              ignoreIfContains="${ignore.path}/ignoreIfContains.txt"
-              request="${context.path}/faces/interweaving04.jsp"
-              recordGolden="${local.golden.path}/interweaving04.txt"
-              golden="${golden.path}/interweaving04.txt"/>
-
-        <jsf.tester
-              ignoreIfContains="${ignore.path}/ignoreIfContains.txt"
-              request="${context.path}/faces/interweaving05.jsp"
-              recordGolden="${local.golden.path}/interweaving05.txt"
-              golden="${golden.path}/interweaving05.txt"/>
-        
-        <jsf.tester
-              request="${context.path}/faces/interweaving06.jsp"  
-              recordGolden="${local.golden.path}/interweaving06.txt"
-              golden="${golden.path}/interweaving06.txt"/>
-                  
-         <jsf.tester
-              request="${context.path}/faces/interweaving07.jsp"  
-              recordGolden="${local.golden.path}/interweaving07.txt"
-              golden="${golden.path}/interweaving07.txt"/>  
-        
-        <!-- Make multiple requests to the same page and ensure
-             the response is 200 -->
-        <jsf.tester
-            ignoreIfContains="${ignore.path}/ignoreIfContains.txt"
-            request="${context.path}/faces/interweaving08.jsp"
-            golden="${golden.path}/interweaving08.txt"
-            joinSession="true"/>
-        <jsf.tester
-            ignoreIfContains="${ignore.path}/ignoreIfContains.txt"
-            request="${context.path}/faces/interweaving08.jsp"
-            golden="${golden.path}/interweaving08.txt"
-            joinSession="true"/>
-        <jsf.tester
-            ignoreIfContains="${ignore.path}/ignoreIfContains.txt"
-            request="${context.path}/faces/interweaving08.jsp"
-            golden="${golden.path}/interweaving08.txt"
-            joinSession="true"/>
-        <!-- Make multiple requests to the same page and ensure
-             the response is 200 -->
-        <jsf.tester
-            ignoreIfContains="${ignore.path}/ignoreIfContains.txt"
-            request="${context.path}/faces/interweaving09.jsp"
-            golden="${golden.path}/interweaving09.txt"
-            joinSession="true"/>
-        <jsf.tester
-            ignoreIfContains="${ignore.path}/ignoreIfContains.txt"
-            request="${context.path}/faces/interweaving09.jsp"
-            golden="${golden.path}/interweaving09.txt"
-            joinSession="true"/>
-        <jsf.tester
-            ignoreIfContains="${ignore.path}/ignoreIfContains.txt"
-            request="${context.path}/faces/interweaving09.jsp"
-            golden="${golden.path}/interweaving09.txt"
-            joinSession="true"/>
-        
-        <!-- Make multiple requests to the same page and ensure
-             the response is 200 -->
-        <jsf.tester
-            ignoreIfContains="${ignore.path}/ignoreIfContains.txt"
-            request="${context.path}/faces/interweaving10.jsp"
-            golden="${golden.path}/interweaving10.txt"
-            joinSession="true"/>
-        <jsf.tester
-            ignoreIfContains="${ignore.path}/ignoreIfContains.txt"
-            request="${context.path}/faces/interweaving10.jsp"              
-            golden="${golden.path}/interweaving10.txt"
-            joinSession="true"/>
-        <jsf.tester
-            ignoreIfContains="${ignore.path}/ignoreIfContains.txt"
-            request="${context.path}/faces/interweaving10.jsp"
-            golden="${golden.path}/interweaving10.txt"
-            joinSession="true"/>
-        
-        <jsf.tester
-              ignoreIfContains="${ignore.path}/ignoreIfContains.txt"
-              request="${context.path}/faces/interweaving11.jsp"              
-              recordGolden="${local.golden.path}/interweaving11.txt"
-              golden="${golden.path}/interweaving11.txt"/>
-
-        <jsf.tester
-              ignoreIfContains="${ignore.path}/ignoreIfContains.txt"
-              request="${context.path}/faces/interweaving12.jsp"
-              recordGolden="${local.golden.path}/interweaving12.txt"
-              golden="${golden.path}/interweaving12.txt"/>
-        
-        <jsf.tester
-              request="${context.path}/faces/include-import-interweaving.jsp"
-              ignoreIfContains="${ignore.path}/ignoreIfContains.txt"
-              golden="${golden.path}/include-import-interweaving.txt"
-              recordGolden="${local.golden.path}/include-import-interweaving.txt"/>
-
-    </target>
-    
-    <target name="test.regressions">
-        <jsf.tester
-            request="${context.path}/faces/regression/AreaTextRowsAttrTest.jsp"
-            golden="${golden.path}/regression/AreaTextRowsAttrTest.txt"
-            recordGolden="${local.golden.path}/regression/AreaTextRowsAttrTest.txt"/>
-        <jsf.tester
-            request="${context.path}/faces/regression/SelectOneManySizeAttrTest.jsp"
-            golden="${golden.path}/regression/SelectOneManySizeAttrTest.txt"
-            recordGolden="${local.golden.path}/regression/SelectOneManySizeAttrTest.txt"/>
-        <jsf.tester
-            ignoreIfContains="${ignore.path}/ignoreIfContains.txt"
-            request="${context.path}/faces/regression/InjectUserDefJS.jsp"
-            golden="${golden.path}/regression/InjectUserDefJS.txt"
-            recordGolden="${local.golden.path}/regression/InjectUserDefJS.txt"/>
-        <jsf.junit context-path="${context.path}"
-                   classpath-refid="html.classpath"
-                   test-results-dir="${impl.test.results.dir}">
-            <tests>
-                <fileset dir="${basedir}/build/classes"
-                         includes="com/sun/faces/event/*TestCase.class"/> 
-            </tests>
-        </jsf.junit>
-
     </target>
 
-    <target name="test.implicitnav">
+    <target name="passthru" depends="define.scenario.aware.port">
         <jsf.junit context-path="${context.path}"
                    classpath-refid="html.classpath"
                    test-results-dir="${impl.test.results.dir}">
             <tests>
                 <fileset dir="${basedir}/build/classes"
-                         includes="com/sun/faces/systest/implicitnav/*TestCase.class"/> 
+                         includes="com/sun/faces/systest/jsp/htmltaglib/HtmlTaglibTestCase.class" />
             </tests>
         </jsf.junit>
-
-    </target>
-
-    <target name="passthru">
-        <jsf.junit context-path="${context.path}"
-                   classpath-refid="html.classpath"
-                   test-results-dir="${impl.test.results.dir}">
-            <tests>
-                <fileset dir="${basedir}/build/classes"
-                         includes="com/sun/faces/jsf2jsp/Jsf2JspTestCase.class"
-                         />
-<!-- 139-StateSaving edburns remove excludes -->
-            </tests>
-        </jsf.junit>
-    </target>
-
-
-    <target name="scratch">
-      <antcall target="test.methodRef" />
     </target>
 
 </project>
diff --git a/jsf-ri/systest/build.properties.sample b/jsf-ri/systest/build.properties.sample
index c3671d7..bf55cc6 100644
--- a/jsf-ri/systest/build.properties.sample
+++ b/jsf-ri/systest/build.properties.sample
@@ -1,2 +1,42 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
 # Uncomment the following property to build for deployment in JWSDP
 #jwsdp.deploy=true
diff --git a/jsf-ri/systest/build.xml b/jsf-ri/systest/build.xml
index ed875f9..ed5e98f 100644
--- a/jsf-ri/systest/build.xml
+++ b/jsf-ri/systest/build.xml
@@ -1,41 +1,45 @@
 <?xml version='1.0' encoding='UTF-8'?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
--->
 
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
 
 <!-- ************ JSF build file ******************************************* -->
 
@@ -70,8 +74,7 @@
     <property name="context.path" value="/${test.suite.name}"/>
 
     <path id="systest.compile.classpath">
-        <pathelement path="${jsf-api.jar}"/>
-        <pathelement path="${jsf-impl.jar}"/>
+        <pathelement path="${javax.faces.jar}"/>
         <path refid="jsf.test.jar.classpath"/>
         <path refid="compile.classpath"/>
         <path refid="htmlunit.compile.classpath"/> 
@@ -83,6 +86,7 @@
     <target name="init"
             description="Initialize and evaluate conditionals">
         <echo message="-------- ${test.suite.name} ${impl.version} --------"/>
+        <mkdir dir="${impl.test.results.dir}/systest"/>
     </target>
     
     
@@ -146,7 +150,7 @@
     <!-- ********** Test Execution Targets ************************************ -->
 
 
-    <target name="test" depends="init"
+    <target name="test" depends="init,define.scenario.aware.port"
             description="Execute all tests against installed /jsf-systest application">
 
         <antcall target="build.war">
@@ -163,6 +167,12 @@
             <property name="partial.state.saving" value="true" />
         </ant>
         <antcall target="undeploy"/>
+        <!--renaming the result xml files to TEST-systest-partial-true-xxx.xml
+        for e.g. TEST-systest-partial-true-com.sun.faces.systest.SuppressXmlDeclTestCase.xml-->
+
+        <antcall  target="rename.test.results">
+            <param name="partial.state.saving" value="true" />
+        </antcall>
 
         <antcall target="build.war">
             <param name="partial.state.saving" value="false" />
@@ -177,8 +187,40 @@
             <property name="partial.state.saving" value="false" />
         </ant>
         <antcall target="undeploy"/>
-        
+
+        <!--renaming the result xml files to TEST-systest-partial-false-xxx.xml
+        for e.g. TEST-systest-partial-false-com.sun.faces.systest.SuppressXmlDeclTestCase.xml-->
+
+        <antcall  target="rename.test.results">
+            <param name="partial.state.saving" value="false" />
+        </antcall>
+
     </target>  
+
+    <target name="test.partial.true" depends="init"
+            description="Execute all tests against installed /jsf-systest application">
+
+        <antcall target="build.war">
+            <param name="partial.state.saving" value="true" />
+        </antcall>
+        <echo>
+
+**** RUNNING JSF-SYSTEST USING PARTIAL STATE SAVING ****
+
+        </echo>
+        <antcall target="undeploy"/>
+        <antcall target="deploy"/>
+        <ant antfile="build-tests.xml" target="test">
+            <property name="partial.state.saving" value="true" />
+        </ant>
+        <antcall target="undeploy"/>
+        <!--renaming the result xml files to TEST-systest-partial-true-xxx.xml
+        for e.g. TEST-systest-partial-true-com.sun.faces.systest.SuppressXmlDeclTestCase.xml-->
+
+        <antcall  target="rename.test.results">
+            <param name="partial.state.saving" value="true" />
+        </antcall>
+    </target>
     
     <target name="test.with.nodeploy"
             description="The same as 'test', but with no deployment">
@@ -190,6 +232,12 @@
         <deploy.artifact artifact="${build.dir}/jsf-systest.war"
                 appName="jsf-systest"/>
     </target>
+
+    <target name="deploydir" 
+            description="Deploy the exploded jsf-systest application">
+        <deploydir.artifact explodedWarDir="${build.dir}/target/jsf-systest"
+                appName="jsf-systest"/>
+    </target>
     
     <target name="undeploy" 
             description="Undeploy the jsf-systest application">
@@ -197,13 +245,22 @@
                   appName="jsf-systest"/>
     </target>
 
-    <target name="passthru"
+    <target name="passthru" depends="define.scenario.aware.port"
             description="useful for running one test">
        
-        <ant antfile="build-tests.xml" target="passthru"/>
+        <ant antfile="build-tests.xml" target="test.ajax"/>
 
         
     </target>  
 
+    <target name="rename.test.results">
+        <move todir="${impl.test.results.dir}/systest" includeemptydirs="false" overwrite="true">
+                <fileset dir="${impl.test.results.dir}">
+                  <exclude name="**/TEST-systest-partial-*.xml"/>
+                </fileset>
+                <mapper type="glob" from="TEST-*.xml" to="TEST-systest-partial-${partial.state.saving}-*.xml"/>
+              </move>
+    </target>
+
         
 </project>
diff --git a/jsf-ri/systest/nbproject/project.xml b/jsf-ri/systest/nbproject/project.xml
index c6c011a..99b466e 100644
--- a/jsf-ri/systest/nbproject/project.xml
+++ b/jsf-ri/systest/nbproject/project.xml
@@ -3,11 +3,21 @@
     <type>org.netbeans.modules.ant.freeform</type>
     <configuration>
         <general-data xmlns="http://www.netbeans.org/ns/freeform-project/1">
+            <name>JSF-RI-Systest</name>
+        </general-data>
+        <general-data xmlns="http://www.netbeans.org/ns/freeform-project/2">
             <!-- Do not use Project Properties customizer when editing this file manually. -->
             <name>JSF-RI-Systest</name>
-            <properties/>
+            <properties>
+                <property-file>../../build.properties</property-file>
+            </properties>
             <folders>
                 <source-folder>
+                    <label>JSF-RI-Systest</label>
+                    <location>.</location>
+                    <encoding>UTF-8</encoding>
+                </source-folder>
+                <source-folder>
                     <label>web</label>
                     <type>doc_root</type>
                     <location>web</location>
@@ -21,6 +31,7 @@
                     <label>src</label>
                     <type>java</type>
                     <location>src</location>
+                    <encoding>UTF-8</encoding>
                 </source-folder>
             </folders>
             <ide-actions>
@@ -76,7 +87,7 @@
         <java-data xmlns="http://www.netbeans.org/ns/freeform-project-java/1">
             <compilation-unit>
                 <package-root>src</package-root>
-                <classpath mode="compile">../build/classes:../../jsf-api/build/classes:../../dependencies/junit3.8.1/junit.jar:../../dependencies/htmlunit-2.4/lib/htmlunit-2.4.jar:../../lib/jsf-extensions-test-time.jar:../../dependencies/jars/servlet-api-2.5.jar:../../dependencies/jars/el-api-2.1.2-b05.jar:../../dependencies/jars/jsp-api-2.1.jar:/Users/edburns/Downloads/mvnrepo/org/apache/ant/ant/1.7.1/ant-1.7.1.jar</classpath>
+                <classpath mode="compile">../../dependencies/jars/junit-3.8.1.jar:../build/classes:../../jsf-api/build/classes:../../dependencies/htmlunit-2.4/lib/htmlunit-2.4.jar:../../lib/jsf-extensions-test-time.jar:../../dependencies/jars/el-api-2.1.2-b05.jar:../../dependencies/jars/jsp-api-2.1.jar:/Users/edburns/Downloads/mvnrepo/org/apache/ant/ant/1.7.1/ant-1.7.1.jar:../../dependencies/jars/servlet-api-2.5.jar:../../dependencies/jars/javax.inject-1.0-PFD-1.jar:../../dependencies/ja [...]
                 <source-level>1.5</source-level>
             </compilation-unit>
         </java-data>
@@ -92,7 +103,7 @@
         <web-data xmlns="http://www.netbeans.org/ns/freeform-project-web/1">
             <web-module>
                 <doc-root>web</doc-root>
-                <classpath/>
+                <context-path/>
                 <j2ee-spec-level>1.5</j2ee-spec-level>
             </web-module>
         </web-data>
diff --git a/jsf-ri/systest/src/com/sun/faces/CustomMessages.properties b/jsf-ri/systest/src/com/sun/faces/CustomMessages.properties
index df211f7..b799a56 100644
--- a/jsf-ri/systest/src/com/sun/faces/CustomMessages.properties
+++ b/jsf-ri/systest/src/com/sun/faces/CustomMessages.properties
@@ -1,3 +1,43 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
 javax.faces.validator.DoubleRangeValidator.LIMIT=Validation Error:This summary replaces the RI summary
 Custom1A=This Is Custom1A Summary
 Custom1A_detail=This Is Custom1A Detail
diff --git a/jsf-ri/systest/src/com/sun/faces/CustomMessages_en.properties b/jsf-ri/systest/src/com/sun/faces/CustomMessages_en.properties
index 7adaa92..5145869 100644
--- a/jsf-ri/systest/src/com/sun/faces/CustomMessages_en.properties
+++ b/jsf-ri/systest/src/com/sun/faces/CustomMessages_en.properties
@@ -1,3 +1,43 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
 Custom1B=This Is Custom1B Summary (en)
 Custom1B_detail=This Is Custom1B Detail (en)
 Custom2B=This Is Custom2B Summary (en)
diff --git a/jsf-ri/systest/src/com/sun/faces/CustomMessages_fr.properties b/jsf-ri/systest/src/com/sun/faces/CustomMessages_fr.properties
index d7aea9c..2f81f48 100644
--- a/jsf-ri/systest/src/com/sun/faces/CustomMessages_fr.properties
+++ b/jsf-ri/systest/src/com/sun/faces/CustomMessages_fr.properties
@@ -1,3 +1,43 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
 Custom1B=This Is Custom1B Summary (fr)
 Custom1B_detail=This Is Custom1B Detail (fr)
 Custom2B=This Is Custom2B Summary (fr)
diff --git a/jsf-ri/systest/src/com/sun/faces/ajax/AjaxAllKeywordTestCase.java b/jsf-ri/systest/src/com/sun/faces/ajax/AjaxAllKeywordTestCase.java
deleted file mode 100644
index 29d384d..0000000
--- a/jsf-ri/systest/src/com/sun/faces/ajax/AjaxAllKeywordTestCase.java
+++ /dev/null
@@ -1,123 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- *
- * Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
- *
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- *
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- *
- * Contributor(s):
- *
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package com.sun.faces.ajax;
-
-import com.sun.faces.htmlunit.AbstractTestCase;
-import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
-import com.gargoylesoftware.htmlunit.html.HtmlPage;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-public class AjaxAllKeywordTestCase extends AbstractTestCase {
-
-    public AjaxAllKeywordTestCase(String name) {
-        super(name);
-    }
-
-    /*
-     * Set up instance variables required by this test case.
-     */
-    public void setUp() throws Exception {
-        super.setUp();
-    }
-
-
-    /*
-     * Return the tests included in this test suite.
-     */
-    public static Test suite() {
-        return (new TestSuite(AjaxAllKeywordTestCase.class));
-    }
-
-
-    /*
-     * Tear down instance variables required by this test case.
-     */
-    public void tearDown() {
-        super.tearDown();
-    }
-
-
-    public void testAjaxAllKeyword1() throws Exception {
-
-        getPage("/faces/ajax/ajaxAllKeyword1.xhtml");
-        System.out.println("Start ajax All Keyword test");
-
-        // First we'll check the first page was output correctly
-        checkTrue("form1:out1","testtext");
-
-        // Submit the ajax request
-        HtmlSubmitInput button1 = (HtmlSubmitInput) lastpage.getHtmlElementById("form1:allKeyword");
-        HtmlPage lastpage = (HtmlPage) button1.click();
-
-        // Check that the ajax request succeeds - if the page is rewritten, this will be the same
-        checkTrue("form1:out1","testtext");
-
-    }
-    public void testAjaxAllKeyword2() throws Exception {
-
-        getPage("/faces/ajax/ajaxAllKeyword2.xhtml");
-        System.out.println("Start ajax All Keyword test");
-
-        // First we'll check the first page was output correctly
-        checkTrue("form1:out1","testtext");
-
-        // Submit the ajax request
-        HtmlSubmitInput button1 = (HtmlSubmitInput) lastpage.getHtmlElementById("form1:allKeyword");
-        HtmlPage lastpage = (HtmlPage) button1.click();
-
-        // Check that the ajax request succeeds - if the page is rewritten, this will be the same
-        checkTrue("form1:out1","testtext");
-
-    }
-    public void testAjaxAllKeyword3() throws Exception {
-
-        getPage("/faces/ajax/ajaxAllKeyword3.xhtml");
-        System.out.println("Start ajax All Keyword test");
-
-        // First we'll check the first page was output correctly
-        checkTrue("form1:out1","testtext");
-
-        // Submit the ajax request
-        HtmlSubmitInput button1 = (HtmlSubmitInput) lastpage.getHtmlElementById("form1:allKeyword");
-        HtmlPage lastpage = (HtmlPage) button1.click();
-
-        // Check that the ajax request succeeds - if the page is rewritten, this will be the same
-        checkTrue("form1:out1","testtext");
-
-    }
-}
diff --git a/jsf-ri/systest/src/com/sun/faces/ajax/AjaxAttrsTestCase.java b/jsf-ri/systest/src/com/sun/faces/ajax/AjaxAttrsTestCase.java
deleted file mode 100644
index 6f2265d..0000000
--- a/jsf-ri/systest/src/com/sun/faces/ajax/AjaxAttrsTestCase.java
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- *
- * Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
- *
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- *
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- *
- * Contributor(s):
- *
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-
-package com.sun.faces.ajax;
-
-import com.sun.faces.htmlunit.AbstractTestCase;
-import com.gargoylesoftware.htmlunit.CollectingAlertHandler;
-import com.gargoylesoftware.htmlunit.html.HtmlPage;
-import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-import java.util.ArrayList;
-import java.util.List;
-
-
-public class AjaxAttrsTestCase extends AbstractTestCase {
-
-
-     public AjaxAttrsTestCase(String name) {
-        super(name);
-    }
-
-    /*
-     * Set up instance variables required by this test case.
-     */
-    public void setUp() throws Exception {
-        super.setUp();
-    }
-
-
-    /*
-     * Return the tests included in this test suite.
-     */
-    public static Test suite() {
-        return (new TestSuite(AjaxAttrsTestCase.class));
-    }
-
-
-    /*
-     * Tear down instance variables required by this test case.
-     */
-    public void tearDown() {
-        super.tearDown();
-    }
-
-
-    // ------------------------------------------------------------ Test Methods
-
-
-    public void testAjaxAttrs() throws Exception {
-
-        List<String> collectedAlerts = new ArrayList<String>(1);
-        client.setAlertHandler(new CollectingAlertHandler(collectedAlerts));
-
-        HtmlPage page = getPage("/faces/ajax/ajaxAttrs.xhtml");
-
-        HtmlSubmitInput button = (HtmlSubmitInput)
-              getInputContainingGivenId(page, "form:attr");
-        assertNotNull(button);
-
-        String value = button.getValueAttribute();
-
-        assertTrue("expected Dummy but got "+value, "Dummy".equals(value));
-
-        page = button.click();
-
-        button = (HtmlSubmitInput)
-              getInputContainingGivenId(page, "form:attr");
-
-        value = button.getValueAttribute();
-
-        assertTrue("expected New Value but got "+value, "New Value".equals(value));
-        
-    }
-}
\ No newline at end of file
diff --git a/jsf-ri/systest/src/com/sun/faces/ajax/AjaxBadXMLTestCase.java b/jsf-ri/systest/src/com/sun/faces/ajax/AjaxBadXMLTestCase.java
deleted file mode 100644
index fa1204f..0000000
--- a/jsf-ri/systest/src/com/sun/faces/ajax/AjaxBadXMLTestCase.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- *
- * Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
- *
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- *
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- *
- * Contributor(s):
- *
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package com.sun.faces.ajax;
-
-import com.gargoylesoftware.htmlunit.html.*;
-import com.sun.faces.htmlunit.AbstractTestCase;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-public class AjaxBadXMLTestCase extends AbstractTestCase {
-
-    public AjaxBadXMLTestCase(String name) {
-        super(name);
-    }
-
-    /*
-     * Set up instance variables required by this test case.
-     */
-    public void setUp() throws Exception {
-        super.setUp();
-    }
-
-
-    /*
-     * Return the tests included in this test suite.
-     */
-    public static Test suite() {
-        return (new TestSuite(AjaxBadXMLTestCase.class));
-    }
-
-
-    /*
-     * Tear down instance variables required by this test case.
-     */
-    public void tearDown() {
-        super.tearDown();
-    }
-
-
-    // Test basic ajax functionality
-    public void testAjaxBadXML() throws Exception {
-        getPage("/faces/ajax/ajaxInvalidXML.xhtml");
-
-
-        // Submit the ajax request
-        HtmlSubmitInput button1 = (HtmlSubmitInput) lastpage.getHtmlElementById("form1:bad");
-        lastpage = (HtmlPage) button1.click();
-
-        // Check that the ajax request succeeds
-        checkTrue("h2","Bread & Butter");
-    }
-
-}
\ No newline at end of file
diff --git a/jsf-ri/systest/src/com/sun/faces/ajax/AjaxEchoTestCase.java b/jsf-ri/systest/src/com/sun/faces/ajax/AjaxEchoTestCase.java
deleted file mode 100644
index 10b3ac5..0000000
--- a/jsf-ri/systest/src/com/sun/faces/ajax/AjaxEchoTestCase.java
+++ /dev/null
@@ -1,295 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- *
- * Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
- *
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- *
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- *
- * Contributor(s):
- *
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package com.sun.faces.ajax;
-
-import com.gargoylesoftware.htmlunit.html.*;
-import com.sun.faces.htmlunit.AbstractTestCase;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-public class AjaxEchoTestCase  extends AbstractTestCase {
-
-    public AjaxEchoTestCase(String name) {
-        super(name);
-    }
-
-    /*
-     * Set up instance variables required by this test case.
-     */
-    public void setUp() throws Exception {
-        super.setUp();
-    }
-
-
-    /*
-     * Return the tests included in this test suite.
-     */
-    public static Test suite() {
-        return (new TestSuite(AjaxEchoTestCase.class));
-    }
-
-
-    /*
-     * Tear down instance variables required by this test case.
-     */
-    public void tearDown() {
-        super.tearDown();
-    }
-
-
-    // Test basic ajax functionality
-    public void testAjaxEcho() throws Exception {
-        getPage("/faces/ajax/ajaxEcho.xhtml");
-
-        // First we'll check the first page was output correctly
-        checkTrue("form1:out1","");
-        checkTrue("form1:in1","");
-
-        HtmlTextInput in1 = (HtmlTextInput) lastpage.getHtmlElementById("form1:in1");
-
-        in1.type("hello");
-
-        // Submit the ajax request
-        HtmlSubmitInput button1 = (HtmlSubmitInput) lastpage.getHtmlElementById("form1:button1");
-        lastpage = (HtmlPage) button1.click();
-
-        // Check that the ajax request succeeds
-        checkTrue("form1:out1","hello");
-    }
-
-    // Test using a valid string as the request identifier, instead of an element
-    public void testAjaxEchoWithStringId() throws Exception {
-        getPage("/faces/ajax/ajaxEcho.xhtml");
-
-        // First we'll check the first page was output correctly
-        checkTrue("form1:out1","");
-        checkTrue("form1:in1","");
-
-        HtmlTextInput in1 = (HtmlTextInput) lastpage.getHtmlElementById("form1:in1");
-
-        in1.type("hello");
-
-        // Submit the ajax request
-        HtmlSubmitInput button2 = (HtmlSubmitInput) lastpage.getHtmlElementById("form1:button2");
-        lastpage = (HtmlPage) button2.click();
-
-        // Check that the ajax request succeeds
-        checkTrue("form1:out1","hello");
-    }
-
-    // Test basic ajax functionality
-    public void testAjaxEchoLT() throws Exception {
-        getPage("/faces/ajax/ajaxEcho.xhtml");
-
-        // First we'll check the first page was output correctly
-        checkTrue("form1:out1","");
-        checkTrue("form1:in1","");
-
-        HtmlTextInput in1 = (HtmlTextInput) lastpage.getHtmlElementById("form1:in1");
-
-        in1.type("<");
-
-        // Submit the ajax request
-        HtmlSubmitInput button1 = (HtmlSubmitInput) lastpage.getHtmlElementById("form1:button1");
-        lastpage = (HtmlPage) button1.click();
-
-        // Check that the ajax request succeeds
-        checkTrue("form1:out1","<");
-    }
-
-
-    /*
-     * Regression test for bug #939
-     */
-    public void testCdataEscape1() throws Exception {
-        getPage("/faces/ajax/ajaxEcho.xhtml");
-
-        // First we'll check the first page was output correctly
-        checkTrue("form1:out1","");
-        checkTrue("form1:in1","");
-
-        HtmlTextInput in1 = (HtmlTextInput) lastpage.getHtmlElementById("form1:in1");
-
-        in1.type("]]>");
-
-        // Submit the ajax request
-        HtmlSubmitInput button1 = (HtmlSubmitInput) lastpage.getHtmlElementById("form1:button1");
-        lastpage = (HtmlPage) button1.click();
-
-        // Check that the ajax request succeeds
-        checkTrue("form1:out1","]]>");
-    }
-    public void testCdataEscape2() throws Exception {
-        getPage("/faces/ajax/ajaxEcho.xhtml");
-
-        // First we'll check the first page was output correctly
-        checkTrue("form1:out1","");
-        checkTrue("form1:in1","");
-
-        HtmlTextInput in1 = (HtmlTextInput) lastpage.getHtmlElementById("form1:in1");
-
-        in1.type("<!");
-
-        // Submit the ajax request
-        HtmlSubmitInput button1 = (HtmlSubmitInput) lastpage.getHtmlElementById("form1:button1");
-        lastpage = (HtmlPage) button1.click();
-
-        // Check that the ajax request succeeds
-        checkTrue("form1:out1","<!");
-    }
-    public void testCdataEscape3() throws Exception {
-        getPage("/faces/ajax/ajaxEcho.xhtml");
-
-        // First we'll check the first page was output correctly
-        checkTrue("form1:out1","");
-        checkTrue("form1:in1","");
-
-        HtmlTextInput in1 = (HtmlTextInput) lastpage.getHtmlElementById("form1:in1");
-
-        in1.type("]");
-
-        // Submit the ajax request
-        HtmlSubmitInput button1 = (HtmlSubmitInput) lastpage.getHtmlElementById("form1:button1");
-        lastpage = (HtmlPage) button1.click();
-
-        // Check that the ajax request succeeds
-        checkTrue("form1:out1","]");
-    }
-    public void testCdataEscape4() throws Exception {
-        getPage("/faces/ajax/ajaxEcho.xhtml");
-
-        // First we'll check the first page was output correctly
-        checkTrue("form1:out1","");
-        checkTrue("form1:in1","");
-
-        HtmlTextInput in1 = (HtmlTextInput) lastpage.getHtmlElementById("form1:in1");
-
-        in1.type("]");
-
-        // Submit the ajax request
-        HtmlSubmitInput button1 = (HtmlSubmitInput) lastpage.getHtmlElementById("form1:button1");
-        lastpage = (HtmlPage) button1.click();
-
-        // Check that the ajax request succeeds
-        checkTrue("form1:out1","]");
-    }
-    public void testCdataEscape5() throws Exception {
-        getPage("/faces/ajax/ajaxEcho.xhtml");
-
-        // First we'll check the first page was output correctly
-        checkTrue("form1:out1","");
-        checkTrue("form1:in1","");
-
-        HtmlTextInput in1 = (HtmlTextInput) lastpage.getHtmlElementById("form1:in1");
-
-        in1.type("<![CDATA[ ]]>");
-
-        // Submit the ajax request
-        HtmlSubmitInput button1 = (HtmlSubmitInput) lastpage.getHtmlElementById("form1:button1");
-        lastpage = (HtmlPage) button1.click();
-
-        // Check that the ajax request succeeds
-        checkTrue("form1:out1","<![CDATA[ ]]>");
-    }
-
-    // Test for bug #1284
-    public void testCdataEscape6() throws Exception {
-        getPage("/faces/ajax/ajaxEcho.xhtml");
-
-        // First we'll check the first page was output correctly
-        checkTrue("form1:out1","");
-        checkTrue("form1:in1","");
-
-        HtmlTextInput in1 = (HtmlTextInput) lastpage.getHtmlElementById("form1:in1");
-
-        in1.type("[");
-
-        // Submit the ajax request
-        HtmlSubmitInput button1 = (HtmlSubmitInput) lastpage.getHtmlElementById("form1:button1");
-        lastpage = (HtmlPage) button1.click();
-
-        // Check that the ajax request succeeds
-        checkTrue("form1:out1","[");
-    }
-    // Test for bug #1284
-    public void testCdataEscape7() throws Exception {
-        getPage("/faces/ajax/ajaxEcho.xhtml");
-
-        // First we'll check the first page was output correctly
-        checkTrue("form1:out1","");
-        checkTrue("form1:in1","");
-
-        HtmlTextInput in1 = (HtmlTextInput) lastpage.getHtmlElementById("form1:in1");
-
-        in1.type("var a=[");
-
-        // Submit the ajax request
-        HtmlSubmitInput button1 = (HtmlSubmitInput) lastpage.getHtmlElementById("form1:button1");
-        lastpage = (HtmlPage) button1.click();
-
-        // Check that the ajax request succeeds
-        checkTrue("form1:out1","var a=[");
-    }
-
-    public void testProjectStage() throws Exception {
-        getPage("/faces/ajax/ajaxProjectStage.xhtml");
-
-        // First we'll check the first page was output correctly
-        checkTrue("stage","Development");
-    }
-
-    public void testTextArea() throws Exception {
-        getPage("/faces/ajax/ajaxEchoArea.xhtml");
-
-        // First we'll check the first page was output correctly
-        checkTrue("form1:out1","");
-        checkTrue("form1:in1","");
-
-        HtmlTextArea in1 = (HtmlTextArea) lastpage.getHtmlElementById("form1:in1");
-
-        in1.type("test value");
-
-        // Submit the ajax request
-        HtmlButtonInput button1 = (HtmlButtonInput) lastpage.getHtmlElementById("form1:button1");
-        lastpage = (HtmlPage) button1.click();
-
-        // Check that the ajax request succeeds
-        checkTrue("form1:out1","test value");
-    }
-
-
-}
diff --git a/jsf-ri/systest/src/com/sun/faces/ajax/AjaxErrorTestCase.java b/jsf-ri/systest/src/com/sun/faces/ajax/AjaxErrorTestCase.java
deleted file mode 100644
index 70b26e5..0000000
--- a/jsf-ri/systest/src/com/sun/faces/ajax/AjaxErrorTestCase.java
+++ /dev/null
@@ -1,152 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- *
- * Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
- *
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- *
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- *
- * Contributor(s):
- *
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-
-package com.sun.faces.ajax;
-
-import com.sun.faces.htmlunit.AbstractTestCase;
-import com.gargoylesoftware.htmlunit.CollectingAlertHandler;
-import com.gargoylesoftware.htmlunit.html.HtmlElement;
-import com.gargoylesoftware.htmlunit.html.HtmlPage;
-import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-import java.util.ArrayList;
-import java.util.List;
-
-
-public class AjaxErrorTestCase extends AbstractTestCase {
-
-
-     public AjaxErrorTestCase(String name) {
-        super(name);
-    }
-
-    /*
-     * Set up instance variables required by this test case.
-     */
-    public void setUp() throws Exception {
-        super.setUp();
-    }
-
-
-    /*
-     * Return the tests included in this test suite.
-     */
-    public static Test suite() {
-        return (new TestSuite(AjaxErrorTestCase.class));
-    }
-
-
-    /*
-     * Tear down instance variables required by this test case.
-     */
-    public void tearDown() {
-        super.tearDown();
-    }
-
-
-    // ------------------------------------------------------------ Test Methods
-
-
-    public void testAjaxError() throws Exception {
-
-        List<String> collectedAlerts = new ArrayList<String>(1);
-        client.setAlertHandler(new CollectingAlertHandler(collectedAlerts));
-
-        HtmlPage page = getPage("/faces/ajax/ajaxError2.xhtml");
-
-        HtmlSubmitInput button = (HtmlSubmitInput)
-              getInputContainingGivenId(page, "form:error");
-        assertNotNull(button);
-
-        button.click();
-
-        assertEquals(1, collectedAlerts.size());
-        assertEquals("serverError: errorName Error Message", collectedAlerts.get(0));
-        
-    }
-
-
-    public void testAjaxServerError() throws Exception {
-
-        List<String> collectedAlerts = new ArrayList<String>(1);
-        client.setAlertHandler(new CollectingAlertHandler(collectedAlerts));
-
-        HtmlPage page = getPage("/faces/ajax/ajaxError.xhtml");
-
-        HtmlSubmitInput button = (HtmlSubmitInput)
-              getInputContainingGivenId(page, "form:eval");
-        assertNotNull(button);
-
-        button.click();
-
-        assertEquals(1, collectedAlerts.size());
-        String serverError = "serverError: class javax.faces.el.MethodNotFoundException /ajax/ajaxError.xhtml @52,76 action=\"#{evalBean.error}\": Method not found:";
-        assertEquals(serverError.substring(0,130), collectedAlerts.get(0).substring(0,130));
-
-        page = getPage("/faces/ajax/ajaxError3.xhtml");
-        button = (HtmlSubmitInput) getInputContainingGivenId(page, "form:error");
-        assertNotNull(button);
-
-        HtmlPage page1 = button.click();
-        HtmlElement element = page1.getElementById("statusArea");
-        assertNotNull(element);
-        String statusText = element.getAttribute("value");
-        assertTrue(statusText.equals("Name: form:error Error: serverError "));
-
-    }
-
-    public void testAjaxMalformedXMLError() throws Exception {
-
-        List<String> collectedAlerts = new ArrayList<String>(1);
-        client.setAlertHandler(new CollectingAlertHandler(collectedAlerts));
-
-        HtmlPage page = getPage("/faces/ajax/ajaxMalformedXML.xhtml");
-
-        HtmlSubmitInput button = (HtmlSubmitInput)
-              getInputContainingGivenId(page, "form:error");
-        assertNotNull(button);
-
-        button.click();
-
-        assertEquals(1, collectedAlerts.size());
-        assertEquals("malformedXML: During update: doesntExist not found", collectedAlerts.get(0));
-
-}
-
-}
diff --git a/jsf-ri/systest/src/com/sun/faces/ajax/AjaxEvalTestCase.java b/jsf-ri/systest/src/com/sun/faces/ajax/AjaxEvalTestCase.java
deleted file mode 100644
index 8cbb904..0000000
--- a/jsf-ri/systest/src/com/sun/faces/ajax/AjaxEvalTestCase.java
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- *
- * Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
- *
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- *
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- *
- * Contributor(s):
- *
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-
-package com.sun.faces.ajax;
-
-import com.sun.faces.htmlunit.AbstractTestCase;
-import com.gargoylesoftware.htmlunit.CollectingAlertHandler;
-import com.gargoylesoftware.htmlunit.html.HtmlPage;
-import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-import java.util.ArrayList;
-import java.util.List;
-
-
-public class AjaxEvalTestCase extends AbstractTestCase {
-
-
-     public AjaxEvalTestCase(String name) {
-        super(name);
-    }
-
-    /*
-     * Set up instance variables required by this test case.
-     */
-    public void setUp() throws Exception {
-        super.setUp();
-    }
-
-
-    /*
-     * Return the tests included in this test suite.
-     */
-    public static Test suite() {
-        return (new TestSuite(AjaxEvalTestCase.class));
-    }
-
-
-    /*
-     * Tear down instance variables required by this test case.
-     */
-    public void tearDown() {
-        super.tearDown();
-    }
-
-
-    // ------------------------------------------------------------ Test Methods
-
-
-    public void testAjaxEval() throws Exception {
-
-        List<String> collectedAlerts = new ArrayList<String>(1);
-        client.setAlertHandler(new CollectingAlertHandler(collectedAlerts));
-
-        HtmlPage page = getPage("/faces/ajax/ajaxEval.xhtml");
-
-        HtmlSubmitInput button = (HtmlSubmitInput)
-              getInputContainingGivenId(page, "form:eval");
-        assertNotNull(button);
-
-        button.click();
-
-        assertEquals(1, collectedAlerts.size());
-        assertEquals("test", collectedAlerts.get(0));
-
-    }
-}
\ No newline at end of file
diff --git a/jsf-ri/systest/src/com/sun/faces/ajax/AjaxIncludedTextTestCase.java b/jsf-ri/systest/src/com/sun/faces/ajax/AjaxIncludedTextTestCase.java
deleted file mode 100644
index f78d9d1..0000000
--- a/jsf-ri/systest/src/com/sun/faces/ajax/AjaxIncludedTextTestCase.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- *
- * Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
- *
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- *
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- *
- * Contributor(s):
- *
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package com.sun.faces.ajax;
-
-import com.sun.faces.htmlunit.AbstractTestCase;
-import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
-import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
-import com.gargoylesoftware.htmlunit.html.HtmlPage;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-
-public class AjaxIncludedTextTestCase  extends AbstractTestCase {
-
-    public AjaxIncludedTextTestCase(String name) {
-        super(name);
-    }
-
-    /*
-     * Set up instance variables required by this test case.
-     */
-    public void setUp() throws Exception {
-        super.setUp();
-    }
-
-
-    /*
-     * Return the tests included in this test suite.
-     */
-    public static Test suite() {
-        return (new TestSuite(AjaxIncludedTextTestCase.class));
-    }
-
-
-    /*
-     * Tear down instance variables required by this test case.
-     */
-    public void tearDown() {
-        super.tearDown();
-    }
-
-
-    public void testAjaxIncludedText() throws Exception {
-        getPage("/faces/ajax/ajaxIncludedText.xhtml");
-        System.out.println("Start ajax included text test");
-
-        // First we'll check the first page was output correctly
-        checkTrue("finalSpan1","Text should stay");
-        checkTrue("finalSpan2","Text should stay");
-
-        // Submit the ajax request
-        HtmlSubmitInput button1 = (HtmlSubmitInput) lastpage.getHtmlElementById("form1:refresh");
-        lastpage = (HtmlPage) button1.click();
-        HtmlSubmitInput button2 = (HtmlSubmitInput) lastpage.getHtmlElementById("form2:refresh");
-        lastpage = (HtmlPage) button2.click();
-
-        // Check that the ajax request succeeds
-        checkTrue("finalSpan1","Text should stay");
-        checkTrue("finalSpan2","Text should stay");
-    }
-}
-
diff --git a/jsf-ri/systest/src/com/sun/faces/ajax/AjaxInsertDeleteTestCase.java b/jsf-ri/systest/src/com/sun/faces/ajax/AjaxInsertDeleteTestCase.java
deleted file mode 100644
index 35c2555..0000000
--- a/jsf-ri/systest/src/com/sun/faces/ajax/AjaxInsertDeleteTestCase.java
+++ /dev/null
@@ -1,163 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- *
- * Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
- *
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- *
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- *
- * Contributor(s):
- *
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package com.sun.faces.ajax;
-
-import com.sun.faces.htmlunit.AbstractTestCase;
-import com.gargoylesoftware.htmlunit.html.HtmlPage;
-import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
-import com.gargoylesoftware.htmlunit.html.HtmlHorizontalRule;
-import com.gargoylesoftware.htmlunit.html.HtmlHeading2;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-public class AjaxInsertDeleteTestCase extends AbstractTestCase {
-
-    public AjaxInsertDeleteTestCase(String name) {
-        super(name);
-    }
-
-    /*
-     * Set up instance variables required by this test case.
-     */
-    public void setUp() throws Exception {
-        super.setUp();
-    }
-
-
-    /*
-     * Return the tests included in this test suite.
-     */
-    public static Test suite() {
-        return (new TestSuite(AjaxInsertDeleteTestCase.class));
-    }
-
-
-    /*
-     * Tear down instance variables required by this test case.
-     */
-    public void tearDown() {
-        super.tearDown();
-    }
-
-
-    // ------------------------------------------------------------ Test Methods
-
-
-    public void testInsertDelete() throws Exception {
-
-        HtmlPage page = getPage("/faces/ajax/ajaxInsertDelete.xhtml");
-
-        assertNull(getBeforeHeading(page));
-        assertNull(getAfterHeading(page));
-
-        HtmlSubmitInput beforeButton = getBeforeButton(page);
-        assertNotNull(beforeButton);
-        page = beforeButton.click();
-
-        HtmlHeading2 beforeHeading = getBeforeHeading(page);
-        assertNotNull(beforeHeading);
-        assertTrue(beforeHeading.getNextSibling() instanceof HtmlHorizontalRule);
-
-        HtmlSubmitInput afterButton = getAfterButton(page);
-        assertNotNull(afterButton);
-        page = afterButton.click();
-
-        HtmlHeading2 afterHeading = getAfterHeading(page);
-        assertNotNull(afterHeading);
-        assertTrue(afterHeading.getPreviousSibling() instanceof HtmlHorizontalRule);
-
-        HtmlSubmitInput removeBefore = getRemoveBeforeButton(page);
-        assertNotNull(removeBefore);
-        page = removeBefore.click();
-
-        assertNull(getBeforeHeading(page));
-        assertNotNull(getAfterHeading(page));
-
-        HtmlSubmitInput removeAfter = getRemoveAfterButton(page);
-        assertNotNull(removeAfter);
-        page = removeAfter.click();
-
-        assertNull(getBeforeHeading(page));
-        assertNull(getAfterHeading(page));
-
-    }
-
-
-    // --------------------------------------------------------  Private Methods
-
-
-    private HtmlSubmitInput getBeforeButton(HtmlPage page) {
-
-        return (HtmlSubmitInput) getInputContainingGivenId(page, "form1:before");
-
-    }
-
-
-    private HtmlSubmitInput getAfterButton(HtmlPage page) {
-
-        return (HtmlSubmitInput) getInputContainingGivenId(page, "form1:after");
-
-    }
-
-
-    private HtmlSubmitInput getRemoveBeforeButton(HtmlPage page) {
-
-        return (HtmlSubmitInput) getInputContainingGivenId(page, "form1:removeBefore");
-
-    }
-
-
-    private HtmlSubmitInput getRemoveAfterButton(HtmlPage page) {
-
-        return (HtmlSubmitInput) getInputContainingGivenId(page, "form1:removeAfter");
-
-    }
-
-
-    private HtmlHeading2 getBeforeHeading(HtmlPage page) {
-
-        return (HtmlHeading2) page.getElementById("h2before");
-
-    }
-
-
-    private HtmlHeading2 getAfterHeading(HtmlPage page) {
-
-        return (HtmlHeading2) page.getElementById("h2after");
-
-    }
-}
diff --git a/jsf-ri/systest/src/com/sun/faces/ajax/AjaxMessageTestCase.java b/jsf-ri/systest/src/com/sun/faces/ajax/AjaxMessageTestCase.java
deleted file mode 100644
index 65969bb..0000000
--- a/jsf-ri/systest/src/com/sun/faces/ajax/AjaxMessageTestCase.java
+++ /dev/null
@@ -1,173 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- *
- * Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
- *
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- *
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- *
- * Contributor(s):
- *
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package com.sun.faces.ajax;
-
-import com.sun.faces.htmlunit.AbstractTestCase;
-import com.sun.faces.render.MessageRenderTestCase;
-import com.gargoylesoftware.htmlunit.html.*;
-import com.gargoylesoftware.htmlunit.javascript.host.Node;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-
-public class AjaxMessageTestCase extends AbstractTestCase {
-
-    public AjaxMessageTestCase(String name) {
-        super(name);
-    }
-
-    /**
-     * Set up instance variables required by this test case.
-     */
-    public void setUp() throws Exception {
-        super.setUp();
-    }
-
-
-    /**
-     * Return the tests included in this test suite.
-     */
-    public static Test suite() {
-        return (new TestSuite(AjaxMessageTestCase.class));
-    }
-
-
-    /**
-     * Tear down instance variables required by this test case.
-     */
-    public void tearDown() {
-        super.tearDown();
-    }
-
-
-    public void testCommandButtonButton() throws Exception {
-        getPage("/faces/ajax/ajaxMessage.xhtml");
-
-
-        // Check that ids were rendered
-        try {
-            lastpage.getHtmlElementById("testform1:msgs");
-        } catch (Exception e) {
-            fail("testform1:msgs not rendered");
-        }
-        try {
-            lastpage.getHtmlElementById("testform1a:msgs");
-        } catch (Exception e) {
-            fail("testform1a:msgs not rendered");
-        }
-        try {
-            lastpage.getHtmlElementById("testform2:msg");
-        } catch (Exception e) {
-            fail("testform2:msg not rendered");
-        }
-
-        // check that other ids weren't
-
-        try {
-            lastpage.getHtmlElementById("testform3:msgs");
-            fail("testform3:msgs rendered - not correct");
-        } catch (Exception e) {
-            //  Success
-        }
-        try {
-            lastpage.getHtmlElementById("testform3a:msgs");
-            fail("testform3:msgs rendered - not correct");
-        } catch (Exception e) {
-            //  Success
-        }
-        try {
-            lastpage.getHtmlElementById("testform4:msg");
-            fail("testform4:msg rendered - not correct");
-        } catch (Exception e) {
-            //  Success
-        }
-
-        // Check initial state
-        checkTrue("testform1:in1","0");
-        checkTrue("testform1a:in1","0");
-        checkTrue("testform2:in1","0");
-        checkTrue("testform3:in1","0");
-        checkTrue("testform3a:in1","0");
-        checkTrue("testform4:in1","0");
-
-
-        HtmlTextInput in1 = (HtmlTextInput) lastpage.getHtmlElementById("testform1:in1");
-
-        in1.type("1");
-
-        // Submit the ajax request
-        HtmlSubmitInput button2 = (HtmlSubmitInput) lastpage.getHtmlElementById("testform1:button2");
-        lastpage = (HtmlPage) button2.click();
-
-        // Check that the ajax request succeeds
-        checkTrue("testform1:in1","1");
-
-        // And that others weren't effected
-        checkTrue("testform1a:in1","0");
-        checkTrue("testform2:in1","0");
-        checkTrue("testform3:in1","0");
-        checkTrue("testform3a:in1","0");
-        checkTrue("testform4:in1","0");
-
-
-        in1 = (HtmlTextInput) lastpage.getHtmlElementById("testform1:in1");
-
-        in1.type("a");
-
-        // Submit the ajax request
-        button2 = (HtmlSubmitInput) lastpage.getHtmlElementById("testform1:button2");
-        lastpage = (HtmlPage) button2.click();
-
-        HtmlUnorderedList ul = (HtmlUnorderedList) lastpage.getHtmlElementById("testform1:msgs");
-        DomNode node = ul.getFirstChild();
-        System.out.println(node.asText());
-        assertTrue("not equal to: testform1:in1: '1a' must be a number consisting of one or more digits. ",
-                node.asText().trim().equals("testform1:in1: '1a' must be a number consisting of one or more digits."));
-
-
-        checkTrue("testform1a:in1","0");
-        checkTrue("testform2:in1","0");
-        checkTrue("testform3:in1","0");
-        checkTrue("testform3a:in1","0");
-        checkTrue("testform4:in1","0");
-
-        // RELEASE_PENDING
-        // FINISH WRITING TESTS FOR OTHER 5 TEST CASES
-
-        
-    }
-}
\ No newline at end of file
diff --git a/jsf-ri/systest/src/com/sun/faces/ajax/AjaxMultiformTestCase.java b/jsf-ri/systest/src/com/sun/faces/ajax/AjaxMultiformTestCase.java
deleted file mode 100644
index 24451a7..0000000
--- a/jsf-ri/systest/src/com/sun/faces/ajax/AjaxMultiformTestCase.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- *
- * Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
- *
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- *
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- *
- * Contributor(s):
- *
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package com.sun.faces.ajax;
-
-import com.sun.faces.htmlunit.AbstractTestCase;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-import com.gargoylesoftware.htmlunit.html.*;
-
-public class AjaxMultiformTestCase extends AbstractTestCase {
-
-    public AjaxMultiformTestCase(String name) {
-        super(name);
-    }
-
-    /**
-     * Set up instance variables required by this test case.
-     */
-    public void setUp() throws Exception {
-        super.setUp();
-    }
-
-
-    /*
-     * Return the tests included in this test suite.
-     */
-    public static Test suite() {
-        return (new TestSuite(AjaxMultiformTestCase.class));
-    }
-
-
-    /**
-     * Tear down instance variables required by this test case.
-     */
-    public void tearDown() {
-        super.tearDown();
-    }
-
-
-    public void testAjaxMultiform() throws Exception {
-        getPage("/faces/ajax/ajaxMultiform.xhtml");
-        System.out.println("Start ajax multiform test");
-        // First we'll check the first page was output correctly
-        checkTrue("countForm1:out1","0");
-        checkTrue("countForm2:out1","1");
-        checkTrue("countForm3:out1","2");
-        checkTrue("out2","3");
-
-        // Submit the ajax request
-        HtmlSubmitInput button1 = (HtmlSubmitInput) lastpage.getHtmlElementById("countForm1:button1");
-        lastpage = (HtmlPage) button1.click();
-
-        // Check that the ajax request succeeds
-        checkTrue("countForm1:out1","4");
-
-        // Check that the request did NOT update the rest of the page.
-        checkTrue("out2","3");
-
-        // Submit the ajax request
-        button1 = (HtmlSubmitInput) lastpage.getHtmlElementById("countForm2:button1");
-        lastpage = (HtmlPage) button1.click();
-
-        // Check that the ajax request succeeds
-        checkTrue("countForm2:out1","5");
-
-        // Check that the request did NOT update the rest of the page.
-        checkTrue("out2","3");
-    }
-}
\ No newline at end of file
diff --git a/jsf-ri/systest/src/com/sun/faces/ajax/AjaxRedirectTestCase.java b/jsf-ri/systest/src/com/sun/faces/ajax/AjaxRedirectTestCase.java
deleted file mode 100644
index 57dfa56..0000000
--- a/jsf-ri/systest/src/com/sun/faces/ajax/AjaxRedirectTestCase.java
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- *
- * Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
- *
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- *
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- *
- * Contributor(s):
- *
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package com.sun.faces.ajax;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-import com.sun.faces.htmlunit.AbstractTestCase;
-import com.gargoylesoftware.htmlunit.html.HtmlPage;
-import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
-import com.gargoylesoftware.htmlunit.html.HtmlSpan;
-
-import java.util.ArrayList;
-import java.util.List;
-
-public class AjaxRedirectTestCase extends AbstractTestCase {
-
-    public AjaxRedirectTestCase(String name) {
-        super(name);
-    }
-
-    /*
-     * Set up instance variables required by this test case.
-     */
-    public void setUp() throws Exception {
-        super.setUp();
-    }
-
-
-    /*
-     * Return the tests included in this test suite.
-     */
-    public static Test suite() {
-        return (new TestSuite(AjaxRedirectTestCase.class));
-    }
-
-
-    /*
-     * Tear down instance variables required by this test case.
-     */
-    public void tearDown() {
-        super.tearDown();
-    }
-
-
-    // ------------------------------------------------------------ Test Methods
-
-
-    public void testAjaxRedirect() throws Exception {
-
-        HtmlPage page = getPage("/faces/ajax/ajaxRedirect.xhtml");
-        HtmlSubmitInput button = (HtmlSubmitInput)
-              getInputContainingGivenId(page, "form:redirect");
-        assertNotNull(button);
-
-        page = button.click();
-
-        List<HtmlSpan> spans = new ArrayList<HtmlSpan>(1);
-        getAllElementsOfGivenClass(page, spans, HtmlSpan.class);
-        assertEquals(1, spans.size());
-        HtmlSpan span = spans.get(0);
-        assertEquals("Redirect Target", span.asText());
-        
-    }
-}
diff --git a/jsf-ri/systest/src/com/sun/faces/ajax/AjaxRequestMultiRenderTestCase.java b/jsf-ri/systest/src/com/sun/faces/ajax/AjaxRequestMultiRenderTestCase.java
deleted file mode 100644
index fcd0c01..0000000
--- a/jsf-ri/systest/src/com/sun/faces/ajax/AjaxRequestMultiRenderTestCase.java
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- *
- * Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
- *
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- *
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- *
- * Contributor(s):
- *
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package com.sun.faces.ajax;
-
-import com.sun.faces.htmlunit.AbstractTestCase;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-import com.gargoylesoftware.htmlunit.html.HtmlPage;
-import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
-import com.gargoylesoftware.htmlunit.html.HtmlElement;
-import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
-
-public class AjaxRequestMultiRenderTestCase extends AbstractTestCase {
-
-    public AjaxRequestMultiRenderTestCase(String name) {
-        super(name);
-    }
-
-    /**
-     * Set up instance variables required by this test case.
-     */
-    public void setUp() throws Exception {
-        super.setUp();
-    }
-
-
-    /**
-     * Return the tests included in this test suite.
-     */
-    public static Test suite() {
-        return (new TestSuite(AjaxRequestMultiRenderTestCase.class));
-    }
-
-
-    /**
-     * Tear down instance variables required by this test case.
-     */
-    public void tearDown() {
-        super.tearDown();
-    }
-
-
-    public void testAjaxMultiRender() throws Exception {
-        getPage("/faces/ajax/ajaxRequestMultiRender.xhtml");
-        System.out.println("Start ajax multi render test");
-
-        // First we'll check the first page was output correctly
-        assertTrue(check("out1","0"));
-        assertTrue(check("out2","0"));
-        assertTrue(check("out3","0"));
-        assertTrue(check("out4","0"));
-
-        // Submit the ajax request
-        HtmlSubmitInput button1 = (HtmlSubmitInput) lastpage.getHtmlElementById("button1");
-        lastpage = (HtmlPage) button1.click();
-
-        // Check that the request succeeds
-        assertTrue(check("out1","1"));
-        assertTrue(check("out2","1"));
-        assertTrue(check("out3","1"));
-
-        // Check that the request did NOT update the rest of the page.
-        assertTrue(check("out4","0"));
-
-        // Submit the reset
-        HtmlSubmitInput reset = (HtmlSubmitInput) lastpage.getHtmlElementById("reset");
-        lastpage = (HtmlPage) reset.click();
-
-        // Check that reset succeeds
-        assertTrue(check("out1","0"));
-        assertTrue(check("out2","0"));
-        assertTrue(check("out3","0"));
-        assertTrue(check("out4","0"));
-
-    }
-
-}
\ No newline at end of file
diff --git a/jsf-ri/systest/src/com/sun/faces/ajax/AjaxRequestScriptTestCase.java b/jsf-ri/systest/src/com/sun/faces/ajax/AjaxRequestScriptTestCase.java
deleted file mode 100644
index 14938e4..0000000
--- a/jsf-ri/systest/src/com/sun/faces/ajax/AjaxRequestScriptTestCase.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- *
- * Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
- *
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- *
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- *
- * Contributor(s):
- *
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package com.sun.faces.ajax;
-
-import com.sun.faces.htmlunit.AbstractTestCase;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-import com.gargoylesoftware.htmlunit.html.HtmlPage;
-import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
-import com.gargoylesoftware.htmlunit.html.HtmlElement;
-import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
-
-public class AjaxRequestScriptTestCase extends AbstractTestCase {
-
-    public AjaxRequestScriptTestCase(String name) {
-        super(name);
-    }
-
-    /**
-     * Set up instance variables required by this test case.
-     */
-    public void setUp() throws Exception {
-        super.setUp();
-    }
-
-
-    /**
-     * Return the tests included in this test suite.
-     */
-    public static Test suite() {
-        return (new TestSuite(AjaxRequestScriptTestCase.class));
-    }
-
-
-    /**
-     * Tear down instance variables required by this test case.
-     */
-    public void tearDown() {
-        super.tearDown();
-    }
-
-
-    public void testAjaxAndScript() throws Exception {
-        getPage("/faces/ajax/ajaxIncludedScript.xhtml");
-        System.out.println("Start ajax script test");
-
-        // First we'll check the first page was output correctly
-        assertTrue(check("countForm:out1","0"));
-        assertTrue(check("out2","1"));
-
-        // Submit the ajax request
-        HtmlSubmitInput button1 = (HtmlSubmitInput) lastpage.getHtmlElementById("countForm:button1");
-        HtmlPage lastpage = (HtmlPage) button1.click();
-
-        // Check that the ajax request succeeds
-        assertTrue(check("countForm:out1","2"));
-
-        // Check that the request did NOT update the rest of the page.
-        assertTrue(check("out2","1"));
-    }
-
-}
\ No newline at end of file
diff --git a/jsf-ri/systest/src/com/sun/faces/ajax/AjaxRequestTestCase.java b/jsf-ri/systest/src/com/sun/faces/ajax/AjaxRequestTestCase.java
deleted file mode 100644
index 6b4c441..0000000
--- a/jsf-ri/systest/src/com/sun/faces/ajax/AjaxRequestTestCase.java
+++ /dev/null
@@ -1,502 +0,0 @@
-
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- *
- * Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
- *
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- *
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- *
- * Contributor(s):
- *
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package com.sun.faces.ajax;
-
-import com.sun.faces.htmlunit.AbstractTestCase;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-import com.gargoylesoftware.htmlunit.html.HtmlPage;
-import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
-import com.gargoylesoftware.htmlunit.html.HtmlElement;
-import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
-
-public class AjaxRequestTestCase extends AbstractTestCase {
-
-    public AjaxRequestTestCase(String name) {
-        super(name);
-    }
-
-    /**
-     * Set up instance variables required by this test case.
-     */
-    public void setUp() throws Exception {
-        super.setUp();
-    }
-
-
-    /**
-     * Return the tests included in this test suite.
-     */
-    public static Test suite() {
-        return (new TestSuite(AjaxRequestTestCase.class));
-    }
-
-
-    /**
-     * Tear down instance variables required by this test case.
-     */
-    public void tearDown() {
-        super.tearDown();
-    }
-
-
-    public void testAjaxCount() throws Exception {
-        getPage("/faces/ajax/ajaxCount.xhtml");
-        System.out.println("Start ajax count test");
-
-        // First we'll check the first page was output correctly
-        assertTrue(check("countForm:out1","0"));
-        assertTrue(check("out2","1"));
-
-        // Submit the ajax request
-        HtmlSubmitInput button1 = (HtmlSubmitInput) lastpage.getHtmlElementById("countForm:button1");
-        HtmlPage lastpage = (HtmlPage) button1.click();
-
-        // Check that the ajax request succeeds
-        assertTrue(check("countForm:out1","2"));
-
-        // Check that the request did NOT update the rest of the page.
-        assertTrue(check("out2","1"));
-    }
-
-    public void testAjaxRequestDefaultsButton() throws Exception {
-        System.out.println("Starting Request Defaults Button Test");
-        getPage("/faces/ajax/ajaxRequestDefaultsButton.xhtml");
-
-        String out1 = "form1:out1";
-        String out2 = "form1:out2";
-        String out3 = "out3";
-        String reload = "form1:reload";
-        String reset1 = "form1:reset1";
-        String reset2 = "form1:reset2";
-        String reset3 = "form1:reset3";
-        String reset4 = "form1:reset4";
-
-        // First, we'll test to make sure the initial values come out right
-        assertTrue(check(out1,"0"));
-        assertTrue(check(out2,"1"));
-        assertTrue(check(out3,"2"));
-
-        // Reload the page
-        HtmlSubmitInput button = (HtmlSubmitInput) lastpage.getHtmlElementById(reload);
-        lastpage = (HtmlPage) button.click();
-
-        // Check that the page updated correctly
-        assertTrue(check(out1,"3"));
-        assertTrue(check(out2,"4"));
-        assertTrue(check(out3,"5"));
-
-        // Now, make the Ajax call to first reset button
-        button = (HtmlSubmitInput) lastpage.getHtmlElementById(reset1);
-        lastpage = (HtmlPage) button.click();
-
-        // Check that the ajax request succeeds
-        assertTrue(check(out1,"0"));
-        assertTrue(check(out2,"4"));
-        assertTrue(check(out3,"5"));
-
-        // Reload the page
-        button = (HtmlSubmitInput) lastpage.getHtmlElementById(reload);
-        lastpage = (HtmlPage) button.click();
-
-        // Check that the page updated correctly
-        assertTrue(check(out1,"1"));
-        assertTrue(check(out2,"2"));
-        assertTrue(check(out3,"3"));
-
-        // Now, make the Ajax call to second reset button
-        button = (HtmlSubmitInput) lastpage.getHtmlElementById(reset2);
-        lastpage = (HtmlPage) button.click();
-
-        // Check that the page updated correctly
-        assertTrue(check(out1,"0"));
-        assertTrue(check(out2,"2"));
-        assertTrue(check(out3,"3"));
-
-        // Reload the page
-        button = (HtmlSubmitInput) lastpage.getHtmlElementById(reload);
-        lastpage = (HtmlPage) button.click();
-
-        // Check that the page updated correctly
-        assertTrue(check(out1,"1"));
-        assertTrue(check(out2,"2"));
-        assertTrue(check(out3,"3"));
-
-        // Now, make the Ajax call to third reset button
-        button = (HtmlSubmitInput) lastpage.getHtmlElementById(reset3);
-        lastpage = (HtmlPage) button.click();
-
-        // Check the page did *not* update
-        assertTrue(check(out1,"1"));
-        assertTrue(check(out2,"2"));
-        assertTrue(check(out3,"3"));
-
-        // Now, Reload the page, to check that reset3 actually executed
-        button = (HtmlSubmitInput) lastpage.getHtmlElementById(reload);
-        lastpage = (HtmlPage) button.click();
-        assertTrue(check(out1,"0"));
-        assertTrue(check(out2,"1"));
-        assertTrue(check(out3,"2"));
-
-        // Reload the page
-        button = (HtmlSubmitInput) lastpage.getHtmlElementById(reload);
-        lastpage = (HtmlPage) button.click();
-
-        // Check that the page updated correctly
-        assertTrue(check(out1,"3"));
-        assertTrue(check(out2,"4"));
-        assertTrue(check(out3,"5"));
-
-        // Now, make the Ajax call to fourth reset button
-        button = (HtmlSubmitInput) lastpage.getHtmlElementById(reset4);
-        lastpage = (HtmlPage) button.click();
-
-        // Check the page did *not* update
-        assertTrue(check(out1,"3"));
-        assertTrue(check(out2,"4"));
-        assertTrue(check(out3,"5"));
-
-        // Now, Reload the page, to check that reset4 actually executed
-        button = (HtmlSubmitInput) lastpage.getHtmlElementById(reload);
-        lastpage = (HtmlPage) button.click();
-        assertTrue(check(out1,"0"));
-        assertTrue(check(out2,"1"));
-        assertTrue(check(out3,"2"));
-    }
-
-    public void testAjaxRequestDefaultsButtonNoPrepend() throws Exception {
-        System.out.println("Starting Request Defaults Button No Prepend Test");
-        getPage("/faces/ajax/ajaxRequestDefaultsButtonNoPrepend.xhtml");
-
-        String out1 = "out1";
-        String out2 = "out2";
-        String out3 = "out3";
-        String reload = "reload";
-        String reset1 = "reset1";
-        String reset2 = "reset2";
-        String reset3 = "reset3";
-        String reset4 = "reset4";
-
-
-        // First, we'll test to make sure the initial values come out right
-        assertTrue(check(out1,"0"));
-        assertTrue(check(out2,"1"));
-        assertTrue(check(out3,"2"));
-
-        // Reload the page
-        HtmlSubmitInput button = (HtmlSubmitInput) lastpage.getHtmlElementById(reload);
-        lastpage = (HtmlPage) button.click();
-
-        // Check that the page updated correctly
-        assertTrue(check(out1,"3"));
-        assertTrue(check(out2,"4"));
-        assertTrue(check(out3,"5"));
-
-        // Now, make the Ajax call to first reset button
-        button = (HtmlSubmitInput) lastpage.getHtmlElementById(reset1);
-        lastpage = (HtmlPage) button.click();
-
-        // Check that the ajax request succeeds
-        assertTrue(check(out1,"0"));
-        assertTrue(check(out2,"4"));
-        assertTrue(check(out3,"5"));
-
-        // Reload the page
-        button = (HtmlSubmitInput) lastpage.getHtmlElementById(reload);
-        lastpage = (HtmlPage) button.click();
-
-        // Check that the page updated correctly
-        assertTrue(check(out1,"1"));
-        assertTrue(check(out2,"2"));
-        assertTrue(check(out3,"3"));
-
-        // Now, make the Ajax call to second reset button
-        button = (HtmlSubmitInput) lastpage.getHtmlElementById(reset2);
-        lastpage = (HtmlPage) button.click();
-
-        // Check that the page updated correctly
-        assertTrue(check(out1,"0"));
-        assertTrue(check(out2,"2"));
-        assertTrue(check(out3,"3"));
-
-        // Reload the page
-        button = (HtmlSubmitInput) lastpage.getHtmlElementById(reload);
-        lastpage = (HtmlPage) button.click();
-
-        // Check that the page updated correctly
-        assertTrue(check(out1,"1"));
-        assertTrue(check(out2,"2"));
-        assertTrue(check(out3,"3"));
-
-        // Now, make the Ajax call to third reset button
-        button = (HtmlSubmitInput) lastpage.getHtmlElementById(reset3);
-        lastpage = (HtmlPage) button.click();
-
-        // Check the page did *not* update
-        assertTrue(check(out1,"1"));
-        assertTrue(check(out2,"2"));
-        assertTrue(check(out3,"3"));
-
-        // Now, Reload the page, to check that reset3 actually executed
-        button = (HtmlSubmitInput) lastpage.getHtmlElementById(reload);
-        lastpage = (HtmlPage) button.click();
-        assertTrue(check(out1,"0"));
-        assertTrue(check(out2,"1"));
-        assertTrue(check(out3,"2"));
-
-        // Reload the page
-        button = (HtmlSubmitInput) lastpage.getHtmlElementById(reload);
-        lastpage = (HtmlPage) button.click();
-
-        // Check that the page updated correctly
-        assertTrue(check(out1,"3"));
-        assertTrue(check(out2,"4"));
-        assertTrue(check(out3,"5"));
-
-        // Now, make the Ajax call to fourth reset button
-        button = (HtmlSubmitInput) lastpage.getHtmlElementById(reset4);
-        lastpage = (HtmlPage) button.click();
-
-        // Check the page did *not* update
-        assertTrue(check(out1,"3"));
-        assertTrue(check(out2,"4"));
-        assertTrue(check(out3,"5"));
-
-        // Now, Reload the page, to check that reset4 actually executed
-        button = (HtmlSubmitInput) lastpage.getHtmlElementById(reload);
-        lastpage = (HtmlPage) button.click();
-        assertTrue(check(out1,"0"));
-        assertTrue(check(out2,"1"));
-        assertTrue(check(out3,"2"));
-    }
-
-    public void testAjaxRequestDefaultsEdit() throws Exception {
-        System.out.println("Starting Request Defaults Edit Test");
-        getPage("/faces/ajax/ajaxRequestDefaultsEdit.xhtml");
-
-        String out1 = "form1:out1";
-        String out2 = "form1:out2";
-        String out3 = "out3";
-        String echo1Out = "form1:echo1Out";
-        String echo2Out = "form1:echo2Out";
-        String echo3Out = "form1:echo3Out";
-        String echo4Out = "form1:echo4Out";
-        String edit1 = "form1:edit1";
-        String edit2 = "form1:edit2";
-        String edit3 = "form1:edit3";
-        String edit4 = "form1:edit4";
-        String refresh = "form1:refresh";
-
-        // First, we'll test to make sure the initial values come out right
-        assertTrue(check(out1,"echo"));
-        assertTrue(check(out2,"echo"));
-        assertTrue(check(out3,"echo"));
-        assertTrue(check(echo1Out,""));
-        assertTrue(check(echo2Out,""));
-        assertTrue(check(echo3Out,""));
-        assertTrue(check(echo4Out,""));
-
-        // Next, enter data into first field
-        HtmlTextInput echo1 = ((HtmlTextInput)lastpage.getHtmlElementById(edit1));
-        echo1.focus();
-        echo1.type("test1");
-        echo1.blur();
-
-        // Refresh the panel to check the listener fired
-        HtmlSubmitInput button = lastpage.getHtmlElementById(refresh);
-        button.click();
-        assertTrue(check(echo1Out,"test1"));
-        assertTrue(check(out1,"test1"));
-        assertTrue(check(out2,"echo"));
-        assertTrue(check(out3,"echo"));
-
-        // Next, enter data into second field
-        HtmlTextInput echo2 = ((HtmlTextInput)lastpage.getHtmlElementById(edit2));
-        echo2.focus();
-        echo2.type("test2");
-        echo2.blur();
-
-        // Refresh the panel to check the listener fired
-        button = lastpage.getHtmlElementById(refresh);
-        button.click();
-        assertTrue(check(echo2Out,"test2"));
-        assertTrue(check(out1,"test2"));
-        assertTrue(check(out2,"echo"));
-        assertTrue(check(out3,"echo"));
-
-        // Next, enter data into third field
-        HtmlTextInput echo3 = ((HtmlTextInput)lastpage.getHtmlElementById(edit3));
-        echo3.focus();
-        echo3.type("test3");
-        echo3.blur();
-
-        // Refresh the panel to check the listener fired
-        button = lastpage.getHtmlElementById(refresh);
-        button.click();
-        assertTrue(check(echo3Out,"test3"));
-        assertTrue(check(out1,"test3"));
-        assertTrue(check(out2,"echo"));
-        assertTrue(check(out3,"echo"));
-
-        // Next, enter data into the fourth field
-        HtmlTextInput echo4 = ((HtmlTextInput)lastpage.getHtmlElementById(edit4));
-        echo4.focus();
-        echo4.type("test4");
-        echo4.blur();
-
-        // Refresh the panel to check the listener fired
-        button = lastpage.getHtmlElementById(refresh);
-        button.click();
-        assertTrue(check(echo4Out,"test4"));
-        assertTrue(check(out1,"test4"));
-        assertTrue(check(out2,"echo"));
-        assertTrue(check(out3,"echo"));
-
-    }
-
-    public void testAjaxRequestDefaultsEditNoPrepend() throws Exception {
-        System.out.println("Starting Request Defaults Edit No Prepend Test");
-        getPage("/faces/ajax/ajaxRequestDefaultsEditNoPrepend.xhtml");
-
-        String out1 = "out1";
-        String out2 = "out2";
-        String out3 = "out3";
-        String echo1Out = "echo1Out";
-        String echo2Out = "echo2Out";
-        String echo3Out = "echo3Out";
-        String echo4Out = "echo4Out";
-        String edit1 = "edit1";
-        String edit2 = "edit2";
-        String edit3 = "edit3";
-        String edit4 = "edit4";
-        String refresh = "refresh";
-
-        // First, we'll test to make sure the initial values come out right
-        assertTrue(check(out1,"echo"));
-        assertTrue(check(out2,"echo"));
-        assertTrue(check(out3,"echo"));
-        assertTrue(check(echo1Out,""));
-        assertTrue(check(echo2Out,""));
-        assertTrue(check(echo3Out,""));
-        assertTrue(check(echo4Out,""));
-
-        // Next, enter data into first field
-        HtmlTextInput echo1 = ((HtmlTextInput)lastpage.getHtmlElementById(edit1));
-        echo1.focus();
-        echo1.type("test1");
-        echo1.blur();
-
-        // Refresh the panel to check the listener fired
-        HtmlSubmitInput button = lastpage.getHtmlElementById(refresh);
-        button.click();
-        assertTrue(check(echo1Out,"test1"));
-        assertTrue(check(out1,"test1"));
-        assertTrue(check(out2,"echo"));
-        assertTrue(check(out3,"echo"));
-
-        // Next, enter data into second field
-        HtmlTextInput echo2 = ((HtmlTextInput)lastpage.getHtmlElementById(edit2));
-        echo2.focus();
-        echo2.type("test2");
-        echo2.blur();
-
-        // Refresh the panel to check the listener fired
-        button = lastpage.getHtmlElementById(refresh);
-        button.click();
-        assertTrue(check(echo2Out,"test2"));
-        assertTrue(check(out1,"test2"));
-        assertTrue(check(out2,"echo"));
-        assertTrue(check(out3,"echo"));
-
-        // Next, enter data into third field
-        HtmlTextInput echo3 = ((HtmlTextInput)lastpage.getHtmlElementById(edit3));
-        echo3.focus();
-        echo3.type("test3");
-        echo3.blur();
-
-        // Refresh the panel to check the listener fired
-        button = lastpage.getHtmlElementById(refresh);
-        button.click();
-        assertTrue(check(echo3Out,"test3"));
-        assertTrue(check(out1,"test3"));
-        assertTrue(check(out2,"echo"));
-        assertTrue(check(out3,"echo"));
-
-        // Next, enter data into the fourth field
-        HtmlTextInput echo4 = ((HtmlTextInput)lastpage.getHtmlElementById(edit4));
-        echo4.focus();
-        echo4.type("test4");
-        echo4.blur();
-
-        // Refresh the panel to check the listener fired
-        button = lastpage.getHtmlElementById(refresh);
-        button.click();
-        assertTrue(check(echo4Out,"test4"));
-        assertTrue(check(out1,"test4"));
-        assertTrue(check(out2,"echo"));
-        assertTrue(check(out3,"echo"));
-    }
-
-    public void testAjaxEvent() throws Exception {
-        getPage("/faces/ajax/ajaxEvent.xhtml");
-        System.out.println("Start ajax event test");
-
-        // First we'll check the first page was output correctly
-        assertTrue(check("countForm:out1","0"));
-        assertTrue(check("out2","1"));
-
-        // Submit the ajax request
-        HtmlSubmitInput button1 = (HtmlSubmitInput) lastpage.getHtmlElementById("countForm:button1");
-        HtmlPage lastpage = (HtmlPage) button1.click();
-
-        // Check that the ajax request succeeds
-        assertTrue(check("countForm:out1","2"));
-
-        // Check that the request did NOT update the rest of the page.
-        assertTrue(check("out2","1"));
-
-        // Check that events were written to the page.
-        String statusArea = "Name: countForm:button1 Event: begin ";
-        statusArea = statusArea + "Name: countForm:button1 Event: complete " ;
-        statusArea = statusArea + "Name: countForm:button1 Event: success " ;
-        //System.out.println(statusArea);
-        //System.out.println(getText("statusArea"));
-        assertTrue(check("statusArea",statusArea));
-    }
-
-}
diff --git a/jsf-ri/systest/src/com/sun/faces/ajax/AjaxRerenderOtherFormTestCase.java b/jsf-ri/systest/src/com/sun/faces/ajax/AjaxRerenderOtherFormTestCase.java
deleted file mode 100644
index 12cce75..0000000
--- a/jsf-ri/systest/src/com/sun/faces/ajax/AjaxRerenderOtherFormTestCase.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- *
- * Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
- *
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- *
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- *
- * Contributor(s):
- *
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package com.sun.faces.ajax;
-
-import com.sun.faces.htmlunit.AbstractTestCase;
-import com.gargoylesoftware.htmlunit.Page;
-import com.gargoylesoftware.htmlunit.html.HtmlInput;
-import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
-import com.gargoylesoftware.htmlunit.html.HtmlPage;
-import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-public class AjaxRerenderOtherFormTestCase  extends AbstractTestCase {
-
-    public AjaxRerenderOtherFormTestCase(String name) {
-        super(name);
-    }
-
-    /*
-     * Set up instance variables required by this test case.
-     */
-    public void setUp() throws Exception {
-        super.setUp();
-    }
-
-
-    /*
-     * Return the tests included in this test suite.
-     */
-    public static Test suite() {
-        return (new TestSuite(AjaxRerenderOtherFormTestCase.class));
-    }
-
-
-    /*
-     * Tear down instance variables required by this test case.
-     */
-    public void tearDown() {
-        super.tearDown();
-    }
-
-
-    public void testRerenderingOtherForm() throws Exception {
-        HtmlPage htmlPage = getPage("/faces/ajax/ajaxRerenderOtherForm.xhtml");
-        
-        HtmlInput ajaxButton = getInputContainingGivenId(htmlPage, "button2");
-        HtmlPage rerenderedPage = ajaxButton.click();
-        
-        HtmlInput nonAjaxButton = getInputContainingGivenId(rerenderedPage, "button1");
-        HtmlPage finalPage = nonAjaxButton.click();
-        assertTrue(-1 != finalPage.asText().indexOf("It was a postback!!!"));
-        
-    }
-}
-
diff --git a/jsf-ri/systest/src/com/sun/faces/ajax/AjaxSelectTestCase.java b/jsf-ri/systest/src/com/sun/faces/ajax/AjaxSelectTestCase.java
deleted file mode 100644
index 30e82a5..0000000
--- a/jsf-ri/systest/src/com/sun/faces/ajax/AjaxSelectTestCase.java
+++ /dev/null
@@ -1,166 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- *
- * Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
- *
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- *
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- *
- * Contributor(s):
- *
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-package com.sun.faces.ajax;
-
-import com.gargoylesoftware.htmlunit.html.ClickableElement;
-import com.gargoylesoftware.htmlunit.html.HtmlPage;
-import com.gargoylesoftware.htmlunit.html.HtmlSelect;
-import com.sun.faces.htmlunit.AbstractTestCase;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-
-public class AjaxSelectTestCase extends AbstractTestCase {
-
-    public AjaxSelectTestCase(String name) {
-        super(name);
-    }
-
-    /**
-     * Set up instance variables required by this test case.
-     */
-    public void setUp() throws Exception {
-        super.setUp();
-    }
-
-
-    /**
-     * Return the tests included in this test suite.
-     */
-    public static Test suite() {
-        return (new TestSuite(AjaxTagWrappingTestCase.class));
-    }
-
-
-    /**
-     * Tear down instance variables required by this test case.
-     */
-    public void tearDown() {
-        super.tearDown();
-    }
-
-
-    /*
-       Test each component to see that it behaves correctly when used with an Ajax tag
-     */
-    public void testAjaxSelect() throws Exception {
-        getPage("/faces/ajax/ajaxSelect.xhtml");
-
-        checkTrue("out", "Pending");
-
-        ClickableElement click = lastpage.getHtmlElementById("form:s1rad:0");
-
-        lastpage = click.click();
-
-        checkTrue("out", "radio-1");
-
-        HtmlSelect select = lastpage.getHtmlElementById("form:s1menu");
-
-        lastpage = (HtmlPage) select.setSelectedAttribute("2",true);
-
-        checkTrue("out", "menu-2");
-
-        select = lastpage.getHtmlElementById("form:s1list");
-
-        lastpage = (HtmlPage) select.setSelectedAttribute("2",true);
-
-        checkTrue("out", "list-2");
-
-        select = lastpage.getHtmlElementById("form:smlist");
-
-        lastpage = (HtmlPage) select.setSelectedAttribute("2",true);
-
-        checkTrue("out", "mlist-2");
-
-        click = lastpage.getHtmlElementById("form:smcheck:0");
-
-        lastpage = click.click();
-
-        checkTrue("out", "mcheck-1");
-
-        click = lastpage.getHtmlElementById("form:bool");
-
-        lastpage = click.click();
-
-        checkTrue("out", "PASSED");
-
-
-        // Now, reload everything and do it again.
-        // This tests for bug 1339
-        click = lastpage.getHtmlElementById("form:button");
-
-        click.click();
-
-        checkTrue("out", "Pending");
-
-        click = lastpage.getHtmlElementById("form:s1rad:0");
-
-        lastpage = click.click();
-
-        checkTrue("out", "radio-1");
-
-        select = lastpage.getHtmlElementById("form:s1menu");
-
-        lastpage = (HtmlPage) select.setSelectedAttribute("2",true);
-
-        checkTrue("out", "menu-2");
-
-        select = lastpage.getHtmlElementById("form:s1list");
-
-        lastpage = (HtmlPage) select.setSelectedAttribute("2",true);
-
-        checkTrue("out", "list-2");
-
-        select = lastpage.getHtmlElementById("form:smlist");
-
-        lastpage = (HtmlPage) select.setSelectedAttribute("2",true);
-
-        checkTrue("out", "mlist-2");
-
-        click = lastpage.getHtmlElementById("form:smcheck:0");
-
-        lastpage = click.click();
-
-        checkTrue("out", "mcheck-1");
-
-        click = lastpage.getHtmlElementById("form:bool");
-
-        lastpage = click.click();
-
-        checkTrue("out", "PASSED");
-
-    }
-}
\ No newline at end of file
diff --git a/jsf-ri/systest/src/com/sun/faces/ajax/AjaxTableTestCase.java b/jsf-ri/systest/src/com/sun/faces/ajax/AjaxTableTestCase.java
deleted file mode 100644
index 8c92452..0000000
--- a/jsf-ri/systest/src/com/sun/faces/ajax/AjaxTableTestCase.java
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- *
- * Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
- *
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- *
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- *
- * Contributor(s):
- *
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package com.sun.faces.ajax;
-
-import com.sun.faces.htmlunit.AbstractTestCase;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-import com.gargoylesoftware.htmlunit.html.*;
-
-public class AjaxTableTestCase extends AbstractTestCase {
-
-    public AjaxTableTestCase(String name) {
-        super(name);
-    }
-
-    /**
-     * Set up instance variables required by this test case.
-     */
-    public void setUp() throws Exception {
-        super.setUp();
-    }
-
-
-    /*
-     * Return the tests included in this test suite.
-     */
-    public static Test suite() {
-        return (new TestSuite(AjaxTableTestCase.class));
-    }
-
-
-    /*
-     * Tear down instance variables required by this test case.
-     */
-    public void tearDown() {
-        super.tearDown();
-    }
-
-
-    /*
-       Test each component to see that it behaves correctly when used with an Ajax tag
-     */
-    public void testAjaxTable() throws Exception {
-        getPage("/faces/ajax/ajaxTable.xhtml");
-        System.out.println("Start ajax table test");
-
-        assertTrue(check("table:2:inCity","Boston"));
-
-        // Check on the text field
-        HtmlTextInput intext = ((HtmlTextInput)lastpage.getHtmlElementById("table:2:inCity"));
-        intext.setValueAttribute("");
-        intext.focus();
-        intext.type("test");
-        intext.blur();
-
-        checkTrue("table:2:inCity","test");
-        System.out.println("Text Checked");
-
-        // Check on the checkbox
-
-        checkTrue("table:3:cheesepref","Eww");
-
-        HtmlCheckBoxInput checked = ((HtmlCheckBoxInput)lastpage.getHtmlElementById("table:3:cheesecheck"));
-        lastpage = (HtmlPage)checked.click();
-
-        checkTrue("table:3:cheesepref","Cheese Please");
-        System.out.println("Boolean Checkbox Checked");
-
-        checkTrue("table:4:count", "4");
-        HtmlAnchor countlink = (HtmlAnchor) lastpage.getHtmlElementById("table:4:countlink");
-        lastpage = countlink.click();
-
-        checkTrue("table:4:count", "5");
-        checkTrue("count","1");
-
-
-        HtmlSubmitInput button = (HtmlSubmitInput)lastpage.getHtmlElementById("submitButton");
-        lastpage = button.click();
-        checkTrue("table:0:count", "6");
-        checkTrue("count","1");
-        
-    }
-
-}
diff --git a/jsf-ri/systest/src/com/sun/faces/ajax/AjaxTagEventAttributeTestCase.java b/jsf-ri/systest/src/com/sun/faces/ajax/AjaxTagEventAttributeTestCase.java
deleted file mode 100644
index 820e97d..0000000
--- a/jsf-ri/systest/src/com/sun/faces/ajax/AjaxTagEventAttributeTestCase.java
+++ /dev/null
@@ -1,117 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- *
- * Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
- *
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- *
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- *
- * Contributor(s):
- *
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package com.sun.faces.ajax;
-
-import com.sun.faces.htmlunit.AbstractTestCase;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-import com.gargoylesoftware.htmlunit.html.*;
-
-public class AjaxTagEventAttributeTestCase extends AbstractTestCase {
-
-    public AjaxTagEventAttributeTestCase(String name) {
-        super(name);
-    }
-
-    /**
-     * Set up instance variables required by this test case.
-     */
-    public void setUp() throws Exception {
-        super.setUp();
-    }
-
-
-    /*
-     * Return the tests included in this test suite.
-     */
-    public static Test suite() {
-        return (new TestSuite(AjaxTagEventAttributeTestCase.class));
-    }
-
-
-    /**
-     * Tear down instance variables required by this test case.
-     */
-    public void tearDown() {
-        super.tearDown();
-    }
-
-
-    public void testAjaxTagEventAttribute() throws Exception {
-        getPage("/faces/ajax/ajaxTagEventAttribute.xhtml");
-        System.out.println("Start ajax tag event attribute test");
-
-        // Check initial values
-        checkTrue("out1","0");
-        checkTrue("out2","1");
-        checkTrue("out3","");
-        checkTrue("checkedvalue1","false");
-        checkTrue("checkedvalue2","false");
-
-        // Press Count
-        HtmlSubmitInput button = (HtmlSubmitInput) lastpage.getHtmlElementById("button");
-        lastpage = (HtmlPage) button.click();
-
-        checkTrue("out1","0");
-        checkTrue("out2","0");
-
-        HtmlInput input = (HtmlInput) lastpage.getHtmlElementById("in1");
-        lastpage = (HtmlPage) input.setValueAttribute("test");
-
-        checkTrue("out3","test");
-
-
-        // Check ajax checkbox
-        HtmlCheckBoxInput checked = ((HtmlCheckBoxInput)lastpage.getHtmlElementById("checkbox1"));
-        lastpage = (HtmlPage)checked.click();
-
-        checkTrue("checkedvalue1","true");
-
-        // Check ajax checkbox
-        checked = ((HtmlCheckBoxInput)lastpage.getHtmlElementById("checkbox2"));
-        lastpage = (HtmlPage)checked.click();
-
-        checkTrue("checkedvalue2","true");
-
-
-
-        // Check that all ajax requests didn't result in a reload
-        checkTrue("out4","2");
-
-    }
-
-}
diff --git a/jsf-ri/systest/src/com/sun/faces/ajax/AjaxTagEventWrappingTestCase.java b/jsf-ri/systest/src/com/sun/faces/ajax/AjaxTagEventWrappingTestCase.java
deleted file mode 100644
index 66657d5..0000000
--- a/jsf-ri/systest/src/com/sun/faces/ajax/AjaxTagEventWrappingTestCase.java
+++ /dev/null
@@ -1,201 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- *
- * Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
- *
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- *
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- *
- * Contributor(s):
- *
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package com.sun.faces.ajax;
-
-import com.sun.faces.htmlunit.AbstractTestCase;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-import com.gargoylesoftware.htmlunit.html.*;
-
-public class AjaxTagEventWrappingTestCase extends AbstractTestCase {
-
-    public AjaxTagEventWrappingTestCase(String name) {
-        super(name);
-    }
-
-    /**
-     * Set up instance variables required by this test case.
-     */
-    public void setUp() throws Exception {
-        super.setUp();
-    }
-
-
-    /*
-     * Return the tests included in this test suite.
-     */
-    public static Test suite() {
-        return (new TestSuite(AjaxTagEventWrappingTestCase.class));
-    }
-
-
-    /**
-     * Tear down instance variables required by this test case.
-     */
-    public void tearDown() {
-        super.tearDown();
-    }
-
-
-    public void testAjaxTagEventWrapping() throws Exception {
-        getPage("/faces/ajax/ajaxTagEventWrapping.xhtml");
-        System.out.println("Start ajax tag event wrapping test");
-
-        // Check initial values
-        checkTrue("out1","0");
-        checkTrue("say","init");
-        checkTrue("paramOut","");
-        checkTrue("out2","1");
-
-        // Press Count
-        HtmlSubmitInput button = (HtmlSubmitInput) lastpage.getHtmlElementById("button1");
-        lastpage = (HtmlPage) button.click();
-
-        checkTrue("out1","2");
-        checkTrue("out2","1");
-
-        // Press Say
-        button = (HtmlSubmitInput) lastpage.getHtmlElementById("button2");
-        lastpage = (HtmlPage) button.click();
-
-        checkTrue("say","1");
-        checkTrue("out1","2");
-        checkTrue("out2","1");
-
-        // Press Count and Say
-        button = (HtmlSubmitInput) lastpage.getHtmlElementById("button3");
-        lastpage = (HtmlPage) button.click();
-
-        checkTrue("say","2");
-        checkTrue("out1","3");
-        checkTrue("out2","1");
-
-        // Press Param
-        button = (HtmlSubmitInput) lastpage.getHtmlElementById("button4");
-        lastpage = (HtmlPage) button.click();
-
-        checkTrue("say","init");
-        checkTrue("out1","4");
-        checkTrue("out2","5");
-        checkTrue("paramOut","testval");
-
-        // Reset Page
-        button = (HtmlSubmitInput) lastpage.getHtmlElementById("reset");
-        lastpage = (HtmlPage) button.click();
-        button = (HtmlSubmitInput) lastpage.getHtmlElementById("reload");
-        lastpage = (HtmlPage) button.click();
-
-        // Check initial values
-        checkTrue("out1","0");
-        checkTrue("say","init");
-        checkTrue("paramOut","");
-        checkTrue("out2","1");
-
-        // Press Count and Param
-        button = (HtmlSubmitInput) lastpage.getHtmlElementById("button5");
-        lastpage = (HtmlPage) button.click();
-
-        checkTrue("out1","2");
-        checkTrue("say","init");
-        checkTrue("paramOut","testval");
-        checkTrue("out2","1");
-
-        // Reset Page
-        button = (HtmlSubmitInput) lastpage.getHtmlElementById("reset");
-        lastpage = (HtmlPage) button.click();
-        button = (HtmlSubmitInput) lastpage.getHtmlElementById("reload");
-        lastpage = (HtmlPage) button.click();
-
-        // Check initial values
-        checkTrue("out1","0");
-        checkTrue("say","init");
-        checkTrue("paramOut","");
-        checkTrue("out2","1");
-
-        // Press Count and Say and Param
-        /*  Test is faulty - commenting out - race to see if say is actually set
-
-        button = (HtmlSubmitInput) lastpage.getHtmlElementById("button6");
-        lastpage = (HtmlPage) button.click();
-
-        checkTrue("out1","2");
-        checkTrue("say","1");
-        checkTrue("paramOut","testval");
-        checkTrue("out2","1");
-        */
-        // leaving out button 7
-
-        // Reset Page
-        button = (HtmlSubmitInput) lastpage.getHtmlElementById("reset");
-        lastpage = (HtmlPage) button.click();
-        button = (HtmlSubmitInput) lastpage.getHtmlElementById("reload");
-        lastpage = (HtmlPage) button.click();
-
-        // Check initial values
-        checkTrue("out1","0");
-        checkTrue("say","init");
-        checkTrue("paramOut","");
-        checkTrue("out2","1");
-
-
-        // Check ajax checkbox
-        HtmlCheckBoxInput checked = ((HtmlCheckBoxInput)lastpage.getHtmlElementById("checkbox1"));
-        lastpage = (HtmlPage)checked.click();
-
-        System.out.println(getText("checkedvalue1"));
-        checkTrue("checkedvalue1","true");
-        checkTrue("out2","1");
-
-        // Check ajax + userwrap checkbox
-        checked = ((HtmlCheckBoxInput)lastpage.getHtmlElementById("checkbox2"));
-        lastpage = (HtmlPage)checked.click();
-
-        checkTrue("checkedvalue2","true");
-        checkTrue("say","1");
-        checkTrue("out2","1");
-
-        // Check user onchange checkbox
-        checked = ((HtmlCheckBoxInput)lastpage.getHtmlElementById("checkbox3"));
-        lastpage = (HtmlPage)checked.click();
-
-        checkTrue("checkedvalue3","false");
-        checkTrue("say","2");
-        checkTrue("out2","1");
-
-    }
-
-}
diff --git a/jsf-ri/systest/src/com/sun/faces/ajax/AjaxTagResolveTestCase.java b/jsf-ri/systest/src/com/sun/faces/ajax/AjaxTagResolveTestCase.java
deleted file mode 100644
index fb78afe..0000000
--- a/jsf-ri/systest/src/com/sun/faces/ajax/AjaxTagResolveTestCase.java
+++ /dev/null
@@ -1,121 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- *
- * Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
- *
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- *
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- *
- * Contributor(s):
- *
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package com.sun.faces.ajax;
-
-import com.sun.faces.htmlunit.AbstractTestCase;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-import com.gargoylesoftware.htmlunit.html.*;
-import com.gargoylesoftware.htmlunit.WebClient;
-import com.gargoylesoftware.htmlunit.AjaxController;
-import com.gargoylesoftware.htmlunit.NicelyResynchronizingAjaxController;
-
-public class AjaxTagResolveTestCase extends AbstractTestCase {
-
-    public AjaxTagResolveTestCase(String name) {
-        super(name);
-    }
-
-    /**
-     * Set up instance variables required by this test case.
-     */
-    public void setUp() throws Exception {
-        super.setUp();
-    }
-
-
-    /**
-     * Return the tests included in this test suite.
-     */
-    public static Test suite() {
-        return (new TestSuite(AjaxTagResolveTestCase.class));
-    }
-
-
-    /**
-     * Tear down instance variables required by this test case.
-     */
-    public void tearDown() {
-        super.tearDown();
-    }
-
-
-    /*
-     * Check that the id's resolve correctly.
-     */
-    public void testAjaxTagWrapping() throws Exception {
-        getPage("/faces/ajax/ajaxTagResolve.xhtml");
-        System.out.println("Start ajax tag resolution test");
-
-        // First we'll check the first page was output correctly
-        assertTrue(check("form1:out1", "0"));
-        assertTrue(check("form1:out5", "1"));
-        assertTrue(check("form2:out2", "2"));
-        assertTrue(check("out3", "3"));
-        assertTrue(check("out4", "4"));
-
-        HtmlSubmitInput button;
-        button = (HtmlSubmitInput) lastpage.getHtmlElementById("form1:button1");
-        lastpage = (HtmlPage) button.click();
-        assertTrue(check("form1:out1","5"));
-
-        button = (HtmlSubmitInput) lastpage.getHtmlElementById("form1:button2");
-        lastpage = (HtmlPage) button.click();
-        assertTrue(check("form2:out2","6"));
-
-        button = (HtmlSubmitInput) lastpage.getHtmlElementById("form1:button3");
-        lastpage = (HtmlPage) button.click();
-        assertTrue(check("out3","7"));
-
-        button = (HtmlSubmitInput) lastpage.getHtmlElementById("form1:button4");
-        lastpage = (HtmlPage) button.click();
-        assertTrue(check("form1:out1","8"));
-
-        button = (HtmlSubmitInput) lastpage.getHtmlElementById("form1:button5");
-        lastpage = (HtmlPage) button.click();
-        assertTrue(check("form1:out1","9"));
-        assertTrue(check("form2:out2","10"));
-        assertTrue(check("out3","11"));
-
-        // Check that nothing updated that we didn't want
-        assertTrue(check("out4","4"));
-        assertTrue(check("form1:out5","1"));
-
-
-    }
-
-}
\ No newline at end of file
diff --git a/jsf-ri/systest/src/com/sun/faces/ajax/AjaxTagTestCase.java b/jsf-ri/systest/src/com/sun/faces/ajax/AjaxTagTestCase.java
deleted file mode 100644
index c6f11a1..0000000
--- a/jsf-ri/systest/src/com/sun/faces/ajax/AjaxTagTestCase.java
+++ /dev/null
@@ -1,646 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- *
- * Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
- *
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- *
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- *
- * Contributor(s):
- *
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package com.sun.faces.ajax;
-
-import com.sun.faces.htmlunit.AbstractTestCase;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-import com.gargoylesoftware.htmlunit.html.*;
-
-public class AjaxTagTestCase extends AbstractTestCase {
-
-    public AjaxTagTestCase(String name) {
-        super(name);
-    }
-
-    /**
-     * Set up instance variables required by this test case.
-     */
-    public void setUp() throws Exception {
-        super.setUp();
-    }
-
-
-    /*
-     * Return the tests included in this test suite.
-     */
-    public static Test suite() {
-        return (new TestSuite(AjaxTagTestCase.class));
-    }
-
-
-    /**
-     * Tear down instance variables required by this test case.
-     */
-    public void tearDown() {
-        super.tearDown();
-    }
-
-
-    public void testAjaxTagCount() throws Exception {
-        getPage("/faces/ajax/ajaxTagCount.xhtml");
-        System.out.println("Start ajax count test");
-        // First we'll check the first page was output correctly
-        checkTrue("countForm:out1","0");
-        checkTrue("out2","1");
-
-        // Submit the ajax request
-        HtmlSubmitInput button1 = (HtmlSubmitInput) lastpage.getHtmlElementById("countForm:button1");
-        lastpage = (HtmlPage) button1.click();
-
-        // Check that the ajax request succeeds
-        checkTrue("countForm:out1","2");
-
-        // Check that the request did NOT update the rest of the page.
-        checkTrue("out2","1");
-    }
-
-    public void testAjaxTagMulti() throws Exception {
-        getPage("/faces/ajax/ajaxTagMulti.xhtml");
-        System.out.println("Start ajax tag multi test");
-        // First we'll check the first page was output correctly
-        checkTrue("countForm:out1","0");
-        checkTrue("countForm:out2","1");
-        checkTrue("countForm:out3","2");
-        checkTrue("outside","3");
-
-        // Press Count 1
-        HtmlSubmitInput button = (HtmlSubmitInput) lastpage.getHtmlElementById("countForm:button1");
-        lastpage = (HtmlPage) button.click();
-
-        checkTrue("countForm:out1","4");
-
-        // Press Count 2
-        button = (HtmlSubmitInput) lastpage.getHtmlElementById("countForm:button2");
-        lastpage = (HtmlPage) button.click();
-
-        checkTrue("countForm:out1","5");
-        checkTrue("countForm:out2","6");
-
-        // Press Count all 3
-        button = (HtmlSubmitInput) lastpage.getHtmlElementById("countForm:button3");
-        lastpage = (HtmlPage) button.click();
-
-        checkTrue("countForm:out1","7");
-        checkTrue("countForm:out2","8");
-        checkTrue("countForm:out3","9");
-
-        // Check that the request did NOT update the rest of the page.
-        checkTrue("outside","3");
-
-        // Press Count form
-        button = (HtmlSubmitInput) lastpage.getHtmlElementById("countForm:button4");
-        lastpage = (HtmlPage) button.click();
-
-        checkTrue("countForm:out1","10");
-        checkTrue("countForm:out2","11");
-        checkTrue("countForm:out3","12");
-
-        // Check that the request did NOT update the rest of the page.
-        checkTrue("outside","3");
-
-        // Press Refresh form
-        button = (HtmlSubmitInput) lastpage.getHtmlElementById("countForm:reset");
-        lastpage = (HtmlPage) button.click();
-
-        checkTrue("countForm:out1","0");
-        checkTrue("countForm:out2","1");
-        checkTrue("countForm:out3","2");
-
-
-        // Check that the request did NOT update the rest of the page.
-        checkTrue("outside","3");
-    }
-
-    public void testAjaxTagDefaultsButton() throws Exception {
-        System.out.println("Starting Ajax Tag Defaults Button Test");
-        getPage("/faces/ajax/ajaxTagDefaultsButton.xhtml");
-
-
-        String out1 = "form1:out1";
-        String out2 = "form1:out2";
-        String out3 = "out3";
-        String reload = "form1:reload";
-        String reset1 = "form1:reset1";
-        String reset2 = "form1:reset2";
-        String reset3 = "form1:reset3";
-        String reset4 = "form1:reset4";
-
-        // First, we'll test to make sure the initial values come out right
-        checkTrue(out1,"0");
-        checkTrue(out2,"1");
-        checkTrue(out3,"2");
-
-        // Reload the page
-        HtmlSubmitInput button = (HtmlSubmitInput) lastpage.getHtmlElementById(reload);
-        lastpage = (HtmlPage) button.click();
-
-        // Check that the page updated correctly
-        checkTrue(out1,"3");
-        checkTrue(out2,"4");
-        checkTrue(out3,"5");
-
-        // Now, make the Ajax call to first reset button
-        button = (HtmlSubmitInput) lastpage.getHtmlElementById(reset1);
-        lastpage = (HtmlPage) button.click();
-
-        // Check that the ajax request succeeds
-        checkTrue(out1,"0");
-        checkTrue(out2,"4");
-        checkTrue(out3,"5");
-
-        // Reload the page
-        button = (HtmlSubmitInput) lastpage.getHtmlElementById(reload);
-        lastpage = (HtmlPage) button.click();
-
-        // Check that the page updated correctly
-        checkTrue(out1,"1");
-        checkTrue(out2,"2");
-        checkTrue(out3,"3");
-
-        // Now, make the Ajax call to second reset button
-        button = (HtmlSubmitInput) lastpage.getHtmlElementById(reset2);
-        lastpage = (HtmlPage) button.click();
-
-        // Check that the page updated correctly
-        checkTrue(out1,"0");
-        checkTrue(out2,"2");
-        checkTrue(out3,"3");
-
-        // Reload the page
-        button = (HtmlSubmitInput) lastpage.getHtmlElementById(reload);
-        lastpage = (HtmlPage) button.click();
-
-        // Check that the page updated correctly
-        checkTrue(out1,"1");
-        checkTrue(out2,"2");
-        checkTrue(out3,"3");
-
-        // Now, make the Ajax call to third reset button
-        button = (HtmlSubmitInput) lastpage.getHtmlElementById(reset3);
-        lastpage = (HtmlPage) button.click();
-
-        // Check the page did *not* update
-        checkTrue(out1,"1");
-        checkTrue(out2,"2");
-        checkTrue(out3,"3");
-
-        // Now, Reload the page, to check that reset3 actually executed
-        button = (HtmlSubmitInput) lastpage.getHtmlElementById(reload);
-        lastpage = (HtmlPage) button.click();
-        checkTrue(out1,"0");
-        checkTrue(out2,"1");
-        checkTrue(out3,"2");
-
-        // Reload the page
-        button = (HtmlSubmitInput) lastpage.getHtmlElementById(reload);
-        lastpage = (HtmlPage) button.click();
-
-        // Check that the page updated correctly
-        checkTrue(out1,"3");
-        checkTrue(out2,"4");
-        checkTrue(out3,"5");
-
-        // Now, make the Ajax call to fourth reset button
-        button = (HtmlSubmitInput) lastpage.getHtmlElementById(reset4);
-        lastpage = (HtmlPage) button.click();
-
-        // Check the page did *not* update
-        checkTrue(out1,"3");
-        checkTrue(out2,"4");
-        checkTrue(out3,"5");
-
-        // Now, Reload the page, to check that reset4 actually executed
-        button = (HtmlSubmitInput) lastpage.getHtmlElementById(reload);
-        lastpage = (HtmlPage) button.click();
-        checkTrue(out1,"0");
-        checkTrue(out2,"1");
-        checkTrue(out3,"2");
-    }
-
-    public void testAjaxTagDefaultsButtonNoPrepend() throws Exception {
-        System.out.println("Starting Tag Defaults Button No Prepend Test");
-        getPage("/faces/ajax/ajaxTagDefaultsButtonNoPrepend.xhtml");
-
-
-        String out1 = "out1";
-        String out2 = "out2";
-        String out3 = "out3";
-        String reload = "reload";
-        String reset1 = "reset1";
-        String reset2 = "reset2";
-        String reset3 = "reset3";
-        String reset4 = "reset4";
-
-
-        // First, we'll test to make sure the initial values come out right
-        checkTrue(out1,"0");
-        checkTrue(out2,"1");
-        checkTrue(out3,"2");
-
-        // Reload the page
-        HtmlSubmitInput button = (HtmlSubmitInput) lastpage.getHtmlElementById(reload);
-        lastpage = (HtmlPage) button.click();
-
-        // Check that the page updated correctly
-        checkTrue(out1,"3");
-        checkTrue(out2,"4");
-        checkTrue(out3,"5");
-
-        // Now, make the Ajax call to first reset button
-        button = (HtmlSubmitInput) lastpage.getHtmlElementById(reset1);
-        lastpage = (HtmlPage) button.click();
-
-        // Check that the ajax request succeeds
-        checkTrue(out1,"0");
-        checkTrue(out2,"4");
-        checkTrue(out3,"5");
-
-        // Reload the page
-        button = (HtmlSubmitInput) lastpage.getHtmlElementById(reload);
-        lastpage = (HtmlPage) button.click();
-
-        // Check that the page updated correctly
-        checkTrue(out1,"1");
-        checkTrue(out2,"2");
-        checkTrue(out3,"3");
-
-        // Now, make the Ajax call to second reset button
-        button = (HtmlSubmitInput) lastpage.getHtmlElementById(reset2);
-        lastpage = (HtmlPage) button.click();
-
-        // Check that the page updated correctly
-        checkTrue(out1,"0");
-        checkTrue(out2,"2");
-        checkTrue(out3,"3");
-
-        // Reload the page
-        button = (HtmlSubmitInput) lastpage.getHtmlElementById(reload);
-        lastpage = (HtmlPage) button.click();
-
-        // Check that the page updated correctly
-        checkTrue(out1,"1");
-        checkTrue(out2,"2");
-        checkTrue(out3,"3");
-
-        // Now, make the Ajax call to third reset button
-        button = (HtmlSubmitInput) lastpage.getHtmlElementById(reset3);
-        lastpage = (HtmlPage) button.click();
-
-        // Check the page did *not* update
-        checkTrue(out1,"1");
-        checkTrue(out2,"2");
-        checkTrue(out3,"3");
-
-        // Now, Reload the page, to check that reset3 actually executed
-        button = (HtmlSubmitInput) lastpage.getHtmlElementById(reload);
-        lastpage = (HtmlPage) button.click();
-        checkTrue(out1,"0");
-        checkTrue(out2,"1");
-        checkTrue(out3,"2");
-
-        // Reload the page
-        button = (HtmlSubmitInput) lastpage.getHtmlElementById(reload);
-        lastpage = (HtmlPage) button.click();
-
-        // Check that the page updated correctly
-        checkTrue(out1,"3");
-        checkTrue(out2,"4");
-        checkTrue(out3,"5");
-
-        // Now, make the Ajax call to fourth reset button
-        button = (HtmlSubmitInput) lastpage.getHtmlElementById(reset4);
-        lastpage = (HtmlPage) button.click();
-
-        // Check the page did *not* update
-        checkTrue(out1,"3");
-        checkTrue(out2,"4");
-        checkTrue(out3,"5");
-
-        // Now, Reload the page, to check that reset4 actually executed
-        button = (HtmlSubmitInput) lastpage.getHtmlElementById(reload);
-        lastpage = (HtmlPage) button.click();
-        checkTrue(out1,"0");
-        checkTrue(out2,"1");
-        checkTrue(out3,"2");
-    }
-
-    public void testAjaxTagDefaultsEdit() throws Exception {
-        System.out.println("Starting Tag Defaults Edit Test");
-        getPage("/faces/ajax/ajaxTagDefaultsEdit.xhtml");
-
-
-        String out1 = "form1:out1";
-        String out2 = "form1:out2";
-        String out3 = "out3";
-        String echo1Out = "form1:echo1Out";
-        String echo2Out = "form1:echo2Out";
-        String echo3Out = "form1:echo3Out";
-        String echo4Out = "form1:echo4Out";
-        String edit1 = "form1:edit1";
-        String edit2 = "form1:edit2";
-        String edit3 = "form1:edit3";
-        String edit4 = "form1:edit4";
-        String refresh = "form1:refresh";
-
-        // First, we'll test to make sure the initial values come out right
-        checkTrue(out1,"echo");
-        checkTrue(out2,"echo");
-        checkTrue(out3,"echo");
-        checkTrue(echo1Out,"");
-        checkTrue(echo2Out,"");
-        checkTrue(echo3Out,"");
-        checkTrue(echo4Out,"");
-
-        // Next, enter data into first field
-        HtmlTextInput echo1 = ((HtmlTextInput)lastpage.getHtmlElementById(edit1));
-        echo1.focus();
-        echo1.type("test1");
-        echo1.blur();
-
-        // Refresh the panel to check the listener fired
-        HtmlSubmitInput button = lastpage.getHtmlElementById(refresh);
-        button.click();
-        checkTrue(echo1Out,"test1");
-        checkTrue(out1,"test1");
-        checkTrue(out2,"echo");
-        checkTrue(out3,"echo");
-
-        // Next, enter data into second field
-        HtmlTextInput echo2 = ((HtmlTextInput)lastpage.getHtmlElementById(edit2));
-        echo2.focus();
-        echo2.type("test2");
-        echo2.blur();
-
-        // Refresh the panel to check the listener fired
-        button = lastpage.getHtmlElementById(refresh);
-        button.click();
-        checkTrue(echo2Out,"test2");
-        checkTrue(out1,"test2");
-        checkTrue(out2,"echo");
-        checkTrue(out3,"echo");
-
-        // Next, enter data into third field
-        HtmlTextInput echo3 = ((HtmlTextInput)lastpage.getHtmlElementById(edit3));
-        echo3.focus();
-        echo3.type("test3");
-        echo3.blur();
-
-        // Refresh the panel to check the listener fired
-        button = lastpage.getHtmlElementById(refresh);
-        button.click();
-        checkTrue(echo3Out,"test3");
-        checkTrue(out1,"test3");
-        checkTrue(out2,"echo");
-        checkTrue(out3,"echo");
-
-        // Next, enter data into the fourth field
-        HtmlTextInput echo4 = ((HtmlTextInput)lastpage.getHtmlElementById(edit4));
-        echo4.focus();
-        echo4.type("test4");
-        echo4.blur();
-
-        // Refresh the panel to check the listener fired
-        button = lastpage.getHtmlElementById(refresh);
-        button.click();
-        checkTrue(echo4Out,"test4");
-        checkTrue(out1,"test4");
-        checkTrue(out2,"echo");
-        checkTrue(out3,"echo");
-
-
-    }
-
-    public void testAjaxTagDefaultsEditNoPrepend() throws Exception {
-        System.out.println("Starting Tag Defaults Edit No Prepend Test");
-        getPage("/faces/ajax/ajaxTagDefaultsEditNoPrepend.xhtml");
-
-        String out1 = "out1";
-        String out2 = "out2";
-        String out3 = "out3";
-        String echo1Out = "echo1Out";
-        String echo2Out = "echo2Out";
-        String echo3Out = "echo3Out";
-        String echo4Out = "echo4Out";
-        String edit1 = "edit1";
-        String edit2 = "edit2";
-        String edit3 = "edit3";
-        String edit4 = "edit4";
-        String refresh = "refresh";
-
-        // First, we'll test to make sure the initial values come out right
-        checkTrue(out1,"echo");
-        checkTrue(out2,"echo");
-        checkTrue(out3,"echo");
-        checkTrue(echo1Out,"");
-        checkTrue(echo2Out,"");
-        checkTrue(echo3Out,"");
-        checkTrue(echo4Out,"");
-
-        // Next, enter data into first field
-        HtmlTextInput echo1 = ((HtmlTextInput)lastpage.getHtmlElementById(edit1));
-        echo1.focus();
-        echo1.type("test1");
-        echo1.blur();
-
-        // Refresh the panel to check the listener fired
-        HtmlSubmitInput button = lastpage.getHtmlElementById(refresh);
-        button.click();
-        checkTrue(echo1Out,"test1");
-        checkTrue(out1,"test1");
-        checkTrue(out2,"echo");
-        checkTrue(out3,"echo");
-
-        // Next, enter data into second field
-        HtmlTextInput echo2 = ((HtmlTextInput)lastpage.getHtmlElementById(edit2));
-        echo2.focus();
-        echo2.type("test2");
-        echo2.blur();
-
-        // Refresh the panel to check the listener fired
-        button = lastpage.getHtmlElementById(refresh);
-        button.click();
-        checkTrue(echo2Out,"test2");
-        checkTrue(out1,"test2");
-        checkTrue(out2,"echo");
-        checkTrue(out3,"echo");
-
-        // Next, enter data into third field
-        HtmlTextInput echo3 = ((HtmlTextInput)lastpage.getHtmlElementById(edit3));
-        echo3.focus();
-        echo3.type("test3");
-        echo3.blur();
-
-        // Refresh the panel to check the listener fired
-        button = lastpage.getHtmlElementById(refresh);
-        button.click();
-        checkTrue(echo3Out,"test3");
-        checkTrue(out1,"test3");
-        checkTrue(out2,"echo");
-        checkTrue(out3,"echo");
-
-        // Next, enter data into the fourth field
-        HtmlTextInput echo4 = ((HtmlTextInput)lastpage.getHtmlElementById(edit4));
-        echo4.focus();
-        echo4.type("test4");
-        echo4.blur();
-
-        // Refresh the panel to check the listener fired
-        button = lastpage.getHtmlElementById(refresh);
-        button.click();
-        checkTrue(echo4Out,"test4");
-        checkTrue(out1,"test4");
-        checkTrue(out2,"echo");
-        checkTrue(out3,"echo");
-
-    }
-
-    public void testAjaxTagEvent() throws Exception {
-        getPage("/faces/ajax/ajaxTagEvent.xhtml");
-        System.out.println("Start ajax tag event test");
-
-        // First we'll check the first page was output correctly
-        checkTrue("countForm:out1","0");
-        checkTrue("out2","1");
-
-        // Submit the ajax request
-        HtmlSubmitInput button1 = (HtmlSubmitInput) lastpage.getHtmlElementById("countForm:button1");
-        lastpage = (HtmlPage) button1.click();
-
-        // Check that the ajax request succeeds
-        checkTrue("countForm:out1","2");
-
-        // Check that the request did NOT update the rest of the page.
-        checkTrue("out2","1");
-
-        // Check that events were written to the page.
-        String statusArea = "Name: countForm:button1 Event: begin ";
-        statusArea = statusArea + "Name: countForm:button1 Event: complete " ;
-        statusArea = statusArea + "Name: countForm:button1 Event: success " ;
-        //System.out.println(statusArea);
-        //System.out.println(getText("statusArea");
-        checkTrue("statusArea",statusArea);
-    }
-
-    public void testAjaxTagDisabled() throws Exception {
-        getPage("/faces/ajax/ajaxTagDisabled.xhtml");
-        System.out.println("Start ajax tag Disabled test");
-
-        // First we'll check the first page was output correctly
-        checkTrue("countForm:out1","0");
-        checkTrue("out2","1");
-
-        // Submit the ajax request
-        HtmlButtonInput button1 = (HtmlButtonInput) lastpage.getHtmlElementById("countForm:button1");
-        lastpage = (HtmlPage) button1.click();
-
-        // Check that the button does nothing
-        checkTrue("countForm:out1","0");
-
-        // Check that the request did NOT update the rest of the page.
-        checkTrue("out2","1");
-
-        // Submit the ajax request
-        HtmlButtonInput button2 = (HtmlButtonInput) lastpage.getHtmlElementById("countForm:button2");
-        lastpage = (HtmlPage) button2.click();
-
-        // Check that the request succeeds
-        checkTrue("countForm:out1","2");
-
-        // Check that the request did NOT update the rest of the page.
-        checkTrue("out2","1");
-
-    }
-
-    public void testAjaxTagKeywords() throws Exception {
-        getPage("/faces/ajax/ajaxTagKeywords.xhtml");
-        System.out.println("Start ajax tag Keyword test");
-
-        checkTrue("out1","0");
-        checkTrue("out2","1");
-        checkTrue("button3","2");
-        checkTrue("out3","3");
-
-        // Submit the ajax request
-        HtmlSubmitInput button1 = (HtmlSubmitInput) lastpage.getHtmlElementById("button1");
-        lastpage = (HtmlPage) button1.click();
-
-
-        checkTrue("out1","4");
-        checkTrue("out2","5");
-        checkTrue("button3","6");
-        checkTrue("out3","7");
-
-        // Submit the ajax request
-        HtmlSubmitInput button2 = (HtmlSubmitInput) lastpage.getHtmlElementById("button2");
-        lastpage = (HtmlPage) button2.click();
-
-        checkTrue("out1","8");
-        checkTrue("out2","9");
-        checkTrue("button3","10");
-        checkTrue("out3","7");
-
-        // Submit the ajax request
-        HtmlSubmitInput button3 = (HtmlSubmitInput) lastpage.getHtmlElementById("button3");
-        lastpage = (HtmlPage) button3.click();
-
-        checkTrue("out1","8");
-        checkTrue("out2","9");
-        checkTrue("button3","11");
-        checkTrue("out3","7");
-
-        // Submit the ajax request
-        HtmlSubmitInput button4 = (HtmlSubmitInput) lastpage.getHtmlElementById("button4");
-        lastpage = (HtmlPage) button4.click();
-
-        checkTrue("out1","8");
-        checkTrue("out2","9");
-        checkTrue("button3","11");
-        checkTrue("out3","7");
-
-        // Submit the ajax request
-        HtmlSubmitInput button5 = (HtmlSubmitInput) lastpage.getHtmlElementById("button5");
-        lastpage = (HtmlPage) button5.click();
-
-        checkTrue("out1","8");
-        checkTrue("out2","12");
-        checkTrue("button3","11");
-        checkTrue("out3","7");
-        
-    }
-
-}
\ No newline at end of file
diff --git a/jsf-ri/systest/src/com/sun/faces/ajax/AjaxTagWrappingTestCase.java b/jsf-ri/systest/src/com/sun/faces/ajax/AjaxTagWrappingTestCase.java
deleted file mode 100644
index c05c16e..0000000
--- a/jsf-ri/systest/src/com/sun/faces/ajax/AjaxTagWrappingTestCase.java
+++ /dev/null
@@ -1,136 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- *
- * Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
- *
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- *
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- *
- * Contributor(s):
- *
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package com.sun.faces.ajax;
-
-import com.sun.faces.htmlunit.AbstractTestCase;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-import com.gargoylesoftware.htmlunit.html.*;
-
-public class AjaxTagWrappingTestCase extends AbstractTestCase {
-
-    public AjaxTagWrappingTestCase(String name) {
-        super(name);
-    }
-
-    /**
-     * Set up instance variables required by this test case.
-     */
-    public void setUp() throws Exception {
-        super.setUp();
-    }
-
-
-    /**
-     * Return the tests included in this test suite.
-     */
-    public static Test suite() {
-        return (new TestSuite(AjaxTagWrappingTestCase.class));
-    }
-
-
-    /**
-     * Tear down instance variables required by this test case.
-     */
-    public void tearDown() {
-        super.tearDown();
-    }
-
-
-    /*
-       Test each component to see that it behaves correctly when used with an Ajax tag
-     */
-    public void testAjaxTagWrapping() throws Exception {
-        getPage("/faces/ajax/ajaxTagWrapping.xhtml");
-        System.out.println("Start ajax tag wrapping test");
-
-        // First we'll check the first page was output correctly
-        checkTrue("out1", "0");
-        checkTrue("checkedvalue", "false");
-        checkTrue("outtext", "");
-
-        // Submit the ajax request
-        HtmlSubmitInput button1 = (HtmlSubmitInput) lastpage.getHtmlElementById("button1");
-        lastpage = (HtmlPage) button1.click();
-
-        // Check that the ajax request succeeds
-        checkTrue("out1","1");
-
-        HtmlAnchor link1 = (HtmlAnchor) lastpage.getHtmlElementById("link1");
-        lastpage = (HtmlPage) link1.click();
-
-        // Check that the ajax request succeeds
-        checkTrue("out1","2");
-
-        // Submit the ajax request
-        HtmlSubmitInput button2 = (HtmlSubmitInput) lastpage.getHtmlElementById("button2");
-        lastpage = (HtmlPage) button2.click();
-
-        // Check that the ajax request succeeds
-        checkTrue("out1","3");
-
-        // Check on the text field
-        HtmlTextInput intext = ((HtmlTextInput)lastpage.getHtmlElementById("intext"));
-        intext.focus();
-        intext.type("test");
-        intext.blur();
-
-        checkTrue("outtext","test");
-
-        // Check on the text field
-        HtmlTextInput intext2 = ((HtmlTextInput)lastpage.getHtmlElementById("intext2"));
-        intext2.focus();
-        intext2.type("test2");
-        intext2.blur();
-
-        checkTrue("outtext","test2");
-
-        // Check on the checkbox
-        HtmlCheckBoxInput checked = ((HtmlCheckBoxInput)lastpage.getHtmlElementById("checkbox"));
-        lastpage = (HtmlPage)checked.click();
-
-        checkTrue("checkedvalue","true");
-
-        // Check on the select many checkbox
-        checked = ((HtmlCheckBoxInput)lastpage.getHtmlElementById("manyCheckbox:0"));
-        lastpage = (HtmlPage)checked.click();
-
-        checkTrue("manyCheckedValue","Value: 1");
-
-    }
-
-}
diff --git a/jsf-ri/systest/src/com/sun/faces/annotation/AnnotatedBean.java b/jsf-ri/systest/src/com/sun/faces/annotation/AnnotatedBean.java
index 6885008..d531734 100644
--- a/jsf-ri/systest/src/com/sun/faces/annotation/AnnotatedBean.java
+++ b/jsf-ri/systest/src/com/sun/faces/annotation/AnnotatedBean.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/systest/src/com/sun/faces/annotation/AnnotatedBehavior.java b/jsf-ri/systest/src/com/sun/faces/annotation/AnnotatedBehavior.java
index 780a6a3..685c152 100644
--- a/jsf-ri/systest/src/com/sun/faces/annotation/AnnotatedBehavior.java
+++ b/jsf-ri/systest/src/com/sun/faces/annotation/AnnotatedBehavior.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -36,6 +40,7 @@
 
 package com.sun.faces.annotation;
 
+import javax.annotation.Resource;
 import javax.faces.component.behavior.ClientBehaviorBase;
 import javax.faces.component.behavior.FacesBehavior;
 
@@ -51,4 +56,12 @@ public class AnnotatedBehavior extends ClientBehaviorBase {
 	public String getRendererType() {
 		return "AnnotatedBehaviorRenderer";
 	}
+
+    @Resource(name="welcomeMessage")
+    private String welcomeMessage;
+
+    public String getWelcomeMessage() {
+        return welcomeMessage;
+    }
+
 }
diff --git a/jsf-ri/systest/src/com/sun/faces/annotation/AnnotatedBehaviorRenderer.java b/jsf-ri/systest/src/com/sun/faces/annotation/AnnotatedBehaviorRenderer.java
index 6d42afd..23b97f0 100644
--- a/jsf-ri/systest/src/com/sun/faces/annotation/AnnotatedBehaviorRenderer.java
+++ b/jsf-ri/systest/src/com/sun/faces/annotation/AnnotatedBehaviorRenderer.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/systest/src/com/sun/faces/annotation/AnnotatedComponent.java b/jsf-ri/systest/src/com/sun/faces/annotation/AnnotatedComponent.java
index c6e6e54..d9e38ce 100644
--- a/jsf-ri/systest/src/com/sun/faces/annotation/AnnotatedComponent.java
+++ b/jsf-ri/systest/src/com/sun/faces/annotation/AnnotatedComponent.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/systest/src/com/sun/faces/annotation/AnnotatedComponentSystemEvent.java b/jsf-ri/systest/src/com/sun/faces/annotation/AnnotatedComponentSystemEvent.java
index 70fa6e0..e9fb4f4 100644
--- a/jsf-ri/systest/src/com/sun/faces/annotation/AnnotatedComponentSystemEvent.java
+++ b/jsf-ri/systest/src/com/sun/faces/annotation/AnnotatedComponentSystemEvent.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/systest/src/com/sun/faces/annotation/AnnotatedComponentsTestCase.java b/jsf-ri/systest/src/com/sun/faces/annotation/AnnotatedComponentsTestCase.java
deleted file mode 100644
index f534a4a..0000000
--- a/jsf-ri/systest/src/com/sun/faces/annotation/AnnotatedComponentsTestCase.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package com.sun.faces.annotation;
-
-import java.util.List;
-import java.util.ArrayList;
-
-import javax.faces.context.FacesContext;
-import javax.faces.application.Application;
-import javax.faces.render.RenderKitFactory;
-import javax.faces.render.RenderKit;
-import javax.faces.render.Renderer;
-import javax.faces.FactoryFinder;
-import javax.faces.validator.Validator;
-import javax.faces.convert.Converter;
-import javax.faces.component.UIComponent;
-
-import com.sun.faces.cactus.ServletFacesTestCase;
-import com.sun.faces.application.ApplicationAssociate;
-import com.sun.faces.application.NamedEventManager;
-import com.sun.faces.mgbean.BeanManager;
-import com.sun.faces.mgbean.ManagedBeanInfo;
-import com.sun.faces.mgbean.BeanBuilder;
-import com.sun.faces.htmlunit.AbstractTestCase;
-import com.gargoylesoftware.htmlunit.html.HtmlPage;
-import com.gargoylesoftware.htmlunit.html.HtmlSpan;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-
-public class AnnotatedComponentsTestCase extends AbstractTestCase {
-
-
-    // ------------------------------------------------------------ Constructors
-
-
-    public AnnotatedComponentsTestCase() {
-        super("AnnotatedComponentsTestCase");
-    }
-
-
-    public AnnotatedComponentsTestCase(String name) {
-        super(name);
-    }
-
-    /**
-     * Return the tests included in this test suite.
-     */
-    public static Test suite() {
-        return (new TestSuite(AnnotatedComponentsTestCase.class));
-    }
-
-
-    // ------------------------------------------------------------ Test Methods
-
-
-    public void testAnnotations() throws Exception {
-
-        HtmlPage page = getPage("/faces/annotationtest.xhtml");
-        List<HtmlSpan> output = new ArrayList<HtmlSpan>(1);
-        getAllElementsOfGivenClass(page, output, HtmlSpan.class);
-        assertTrue(output.size() == 1);
-        HtmlSpan span = output.get(0);
-        assertTrue(span.asText().contains("true"));
-        
-    }
-}
diff --git a/jsf-ri/systest/src/com/sun/faces/annotation/AnnotatedConverter.java b/jsf-ri/systest/src/com/sun/faces/annotation/AnnotatedConverter.java
index 9e63078..6bd53d7 100644
--- a/jsf-ri/systest/src/com/sun/faces/annotation/AnnotatedConverter.java
+++ b/jsf-ri/systest/src/com/sun/faces/annotation/AnnotatedConverter.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -36,11 +40,11 @@
 
 package com.sun.faces.annotation;
 
+import javax.annotation.Resource;
 import javax.faces.convert.Converter;
 import javax.faces.convert.FacesConverter;
 import javax.faces.context.FacesContext;
 import javax.faces.component.UIComponent;
-import javax.faces.validator.FacesValidator;
 
 
 @FacesConverter(value = "AnnotatedConverter")
@@ -57,4 +61,12 @@ public class AnnotatedConverter implements Converter {
                               Object value) {
         return value.toString();
     }
+    
+    @Resource(name="welcomeMessage")
+    private String welcomeMessage;
+
+    public String getWelcomeMessage() {
+        return welcomeMessage;
+    }
+    
 }
diff --git a/jsf-ri/systest/src/com/sun/faces/annotation/AnnotatedConverterForClass.java b/jsf-ri/systest/src/com/sun/faces/annotation/AnnotatedConverterForClass.java
index 704f920..d47dfb8 100644
--- a/jsf-ri/systest/src/com/sun/faces/annotation/AnnotatedConverterForClass.java
+++ b/jsf-ri/systest/src/com/sun/faces/annotation/AnnotatedConverterForClass.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/systest/src/com/sun/faces/annotation/AnnotatedPhaseListener.java b/jsf-ri/systest/src/com/sun/faces/annotation/AnnotatedPhaseListener.java
new file mode 100644
index 0000000..6a21cf4
--- /dev/null
+++ b/jsf-ri/systest/src/com/sun/faces/annotation/AnnotatedPhaseListener.java
@@ -0,0 +1,78 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+ * Copyright (c) 2011 Oracle and/or its affiliates. All rights reserved.
+
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.annotation;
+
+import java.util.Map;
+import javax.annotation.Resource;
+import javax.faces.context.FacesContext;
+import javax.faces.event.PhaseEvent;
+import javax.faces.event.PhaseId;
+import javax.faces.event.PhaseListener;
+
+
+public class AnnotatedPhaseListener implements PhaseListener {
+    
+    public AnnotatedPhaseListener() { }
+    
+
+    public void afterPhase(PhaseEvent pe) {
+        
+    }
+
+    public void beforePhase(PhaseEvent pe) {
+
+        Map<String, Object> requestMap = FacesContext.getCurrentInstance().getExternalContext().getRequestMap();
+        requestMap.put("AnnotatedPhaseListenerMessage", getWelcomeMessage());
+    }
+
+    public PhaseId getPhaseId() {
+        return PhaseId.ANY_PHASE;
+    }
+    
+    @Resource(name="welcomeMessage")
+    private String welcomeMessage;
+
+    public String getWelcomeMessage() {
+        return welcomeMessage;
+    }
+
+    
+    
+}
diff --git a/jsf-ri/systest/src/com/sun/faces/annotation/AnnotatedRenderer.java b/jsf-ri/systest/src/com/sun/faces/annotation/AnnotatedRenderer.java
index 7d4e24d..07285cc 100644
--- a/jsf-ri/systest/src/com/sun/faces/annotation/AnnotatedRenderer.java
+++ b/jsf-ri/systest/src/com/sun/faces/annotation/AnnotatedRenderer.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/systest/src/com/sun/faces/annotation/AnnotatedValidator.java b/jsf-ri/systest/src/com/sun/faces/annotation/AnnotatedValidator.java
index c77bc25..bf0efb8 100644
--- a/jsf-ri/systest/src/com/sun/faces/annotation/AnnotatedValidator.java
+++ b/jsf-ri/systest/src/com/sun/faces/annotation/AnnotatedValidator.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -36,6 +40,7 @@
 
 package com.sun.faces.annotation;
 
+import javax.annotation.Resource;
 import javax.faces.validator.Validator;
 import javax.faces.validator.ValidatorException;
 import javax.faces.validator.FacesValidator;
@@ -49,4 +54,12 @@ public class AnnotatedValidator implements Validator {
                          Object value) throws ValidatorException {
         return;
     }
+    
+    @Resource(name="welcomeMessage")
+    private String welcomeMessage;
+
+    public String getWelcomeMessage() {
+        return welcomeMessage;
+    }
+    
 }
diff --git a/jsf-ri/systest/src/com/sun/faces/annotation/AnnotatedValidatorDefault.java b/jsf-ri/systest/src/com/sun/faces/annotation/AnnotatedValidatorDefault.java
index 0664bb5..20e2181 100644
--- a/jsf-ri/systest/src/com/sun/faces/annotation/AnnotatedValidatorDefault.java
+++ b/jsf-ri/systest/src/com/sun/faces/annotation/AnnotatedValidatorDefault.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/systest/src/com/sun/faces/annotation/AnnotatedValidatorNoValue.java b/jsf-ri/systest/src/com/sun/faces/annotation/AnnotatedValidatorNoValue.java
new file mode 100644
index 0000000..5f0f757
--- /dev/null
+++ b/jsf-ri/systest/src/com/sun/faces/annotation/AnnotatedValidatorNoValue.java
@@ -0,0 +1,63 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.annotation;
+
+import javax.faces.validator.Validator;
+import javax.faces.validator.ValidatorException;
+import javax.faces.validator.FacesValidator;
+import javax.faces.context.FacesContext;
+import javax.faces.component.UIComponent;
+
+ at FacesValidator
+public class AnnotatedValidatorNoValue implements Validator {
+    public void validate(FacesContext context,
+                         UIComponent component,
+                         Object value) throws ValidatorException {
+        return;
+    }
+    
+    private String welcomeMessage ="AnnotatedValidatorNoValue";
+
+    public String getWelcomeMessage() {
+        return welcomeMessage;
+    }
+    
+}
diff --git a/jsf-ri/systest/src/com/sun/faces/annotation/AnnotationTestBean.java b/jsf-ri/systest/src/com/sun/faces/annotation/AnnotationTestBean.java
index 9b04f3f..b14affc 100644
--- a/jsf-ri/systest/src/com/sun/faces/annotation/AnnotationTestBean.java
+++ b/jsf-ri/systest/src/com/sun/faces/annotation/AnnotationTestBean.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -60,6 +64,7 @@ import com.sun.faces.application.ApplicationAssociate;
 import com.sun.faces.mgbean.BeanBuilder;
 import com.sun.faces.mgbean.BeanManager;
 import com.sun.faces.mgbean.ManagedBeanInfo;
+import javax.faces.FacesException;
 
 
 public class AnnotationTestBean {
@@ -79,6 +84,8 @@ public class AnnotationTestBean {
     }
 
     private void testAnnotatedComponentsWebInfClasses() throws Exception {
+        
+        String injectedString;
 
         FacesContext ctx = FacesContext.getCurrentInstance();
         Application app = ctx.getApplication();
@@ -90,6 +97,9 @@ public class AnnotationTestBean {
         Converter cv = app.createConverter("AnnotatedConverter");
         assertNotNull(cv);
         assertTrue(cv instanceof AnnotatedConverter);
+        injectedString = ((AnnotatedConverter)cv).getWelcomeMessage();
+        assertTrue(injectedString.equals("Hello World from env-entry!"));
+        
 
         cv = app.createConverter(java.lang.CharSequence.class);
         assertNotNull(cv);
@@ -100,6 +110,28 @@ public class AnnotationTestBean {
         assertTrue(v instanceof AnnotatedValidator);
         Set<String> defaultValidatorIds = app.getDefaultValidatorInfo().keySet();
         assertFalse(defaultValidatorIds.contains("AnnotatedValidator"));
+        injectedString = ((AnnotatedValidator)v).getWelcomeMessage();
+        assertTrue(injectedString.equals("Hello World from env-entry!"));
+
+        v = app.createValidator("annotatedValidatorNoValue");
+        assertNotNull(v);
+        assertTrue(v instanceof AnnotatedValidatorNoValue);
+        defaultValidatorIds = app.getDefaultValidatorInfo().keySet();
+        assertFalse(defaultValidatorIds.contains("AnnotatedValidatorNoValue"));
+        String welcomeMessage = ((AnnotatedValidatorNoValue)v).getWelcomeMessage();
+        assertTrue(welcomeMessage.equals("AnnotatedValidatorNoValue"));
+        
+        boolean exceptionThrown = false;
+        v = null;
+        try {
+            v = app.createValidator("AnnotatedValidatorNoValue");
+        }
+        catch (FacesException fe) {
+            assertTrue(null == v);
+            exceptionThrown = true;
+        }
+        assertTrue(exceptionThrown);
+        
 
         // AnnotatedValidatorDefault has isDefault set to true.  Make sure
         // it's present in the default validator info obtained above.
@@ -108,6 +140,8 @@ public class AnnotationTestBean {
         Behavior b = app.createBehavior("AnnotatedBehavior");
         assertNotNull(b);
         assertTrue(b instanceof AnnotatedBehavior);
+        injectedString = ((AnnotatedBehavior)b).getWelcomeMessage();
+        assertTrue(injectedString.equals("Hello World from env-entry!"));
 
         RenderKitFactory rkf = (RenderKitFactory) FactoryFinder
               .getFactory(FactoryFinder.RENDER_KIT_FACTORY);
diff --git a/jsf-ri/systest/src/com/sun/faces/annotation/AnotherAnnotatedComponentSystemEvent.java b/jsf-ri/systest/src/com/sun/faces/annotation/AnotherAnnotatedComponentSystemEvent.java
index 8279828..32e6f27 100644
--- a/jsf-ri/systest/src/com/sun/faces/annotation/AnotherAnnotatedComponentSystemEvent.java
+++ b/jsf-ri/systest/src/com/sun/faces/annotation/AnotherAnnotatedComponentSystemEvent.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -49,4 +53,4 @@ public class AnotherAnnotatedComponentSystemEvent  extends ComponentSystemEvent
         super(component);
     }
 
-}
\ No newline at end of file
+}
diff --git a/jsf-ri/systest/src/com/sun/faces/annotation/BaseBean.java b/jsf-ri/systest/src/com/sun/faces/annotation/BaseBean.java
index 8566d04..917a2bd 100644
--- a/jsf-ri/systest/src/com/sun/faces/annotation/BaseBean.java
+++ b/jsf-ri/systest/src/com/sun/faces/annotation/BaseBean.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/systest/src/com/sun/faces/annotation/BaseBeanImplementation.java b/jsf-ri/systest/src/com/sun/faces/annotation/BaseBeanImplementation.java
index 4a9e3c7..356c9f6 100644
--- a/jsf-ri/systest/src/com/sun/faces/annotation/BaseBeanImplementation.java
+++ b/jsf-ri/systest/src/com/sun/faces/annotation/BaseBeanImplementation.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/systest/src/com/sun/faces/annotation/CustomScopeAnnotatedBean.java b/jsf-ri/systest/src/com/sun/faces/annotation/CustomScopeAnnotatedBean.java
index b385ecb..88d8207 100644
--- a/jsf-ri/systest/src/com/sun/faces/annotation/CustomScopeAnnotatedBean.java
+++ b/jsf-ri/systest/src/com/sun/faces/annotation/CustomScopeAnnotatedBean.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/systest/src/com/sun/faces/application/ResetUniqueRequestIdBean.java b/jsf-ri/systest/src/com/sun/faces/application/ResetUniqueRequestIdBean.java
index c8d7bcc..9144e19 100644
--- a/jsf-ri/systest/src/com/sun/faces/application/ResetUniqueRequestIdBean.java
+++ b/jsf-ri/systest/src/com/sun/faces/application/ResetUniqueRequestIdBean.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/systest/src/com/sun/faces/component/ComponentTestCase.java b/jsf-ri/systest/src/com/sun/faces/component/ComponentTestCase.java
deleted file mode 100644
index 14039bc..0000000
--- a/jsf-ri/systest/src/com/sun/faces/component/ComponentTestCase.java
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package com.sun.faces.component;
-
-import com.sun.faces.htmlunit.AbstractTestCase;
-import com.gargoylesoftware.htmlunit.html.HtmlPage;
-import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-public class ComponentTestCase extends AbstractTestCase {
-
-    public ComponentTestCase(String name) {
-        super(name);
-    }
-
-
-    /**
-     * Set up instance variables required by this test case.
-     */
-    public void setUp() throws Exception {
-        super.setUp();
-    }
-
-
-    /**
-     * Return the tests included in this test suite.
-     */
-    public static Test suite() {
-        return (new TestSuite(ComponentTestCase.class));
-    }
-
-
-    /**
-     * Tear down instance variables required by this test case.
-     */
-    public void tearDown() {
-        super.tearDown();
-    }
-
-
-    /**
-     * Added for issue 212.
-     * Ensure no exception when restoring state containing
-     * transient components.
-     *
-     * @throws Exception
-     */
-    public void testComponentTransienceRestoration() throws Exception {
-
-        HtmlPage page = getPage("/faces/component02.jsp");
-        HtmlSubmitInput submit = (HtmlSubmitInput)
-                getInputContainingGivenId(page, "submit");
-        try {
-            submit.click();
-        } catch (Exception ioe) {
-            fail("No exception should have been thrown: " +
-                    ioe.getMessage());
-        }
-
-    }
-
-
-} // end of class PathTestCase
diff --git a/jsf-ri/systest/src/com/sun/faces/component/CompositeMetaDataTestCase.java b/jsf-ri/systest/src/com/sun/faces/component/CompositeMetaDataTestCase.java
deleted file mode 100644
index 755ba13..0000000
--- a/jsf-ri/systest/src/com/sun/faces/component/CompositeMetaDataTestCase.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package com.sun.faces.component;
-
-import com.sun.faces.htmlunit.AbstractTestCase;
-import com.gargoylesoftware.htmlunit.html.HtmlPage;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-public class CompositeMetaDataTestCase extends AbstractTestCase {
-
-    public CompositeMetaDataTestCase(String name) {
-        super(name);
-    }
-
-
-    /**
-     * Set up instance variables required by this test case.
-     */
-    public void setUp() throws Exception {
-        super.setUp();
-    }
-
-
-    /**
-     * Return the tests included in this test suite.
-     */
-    public static Test suite() {
-        return (new TestSuite(CompositeMetaDataTestCase.class));
-    }
-
-
-    /**
-     * Tear down instance variables required by this test case.
-     */
-    public void tearDown() {
-        super.tearDown();
-    }
-
-
-    /**
-     * Added for issue 10
-     *
-     * @throws Exception
-     */
-    public void testPrefixMappedFaceletPage() throws Exception {
-
-        HtmlPage page = getPage("/faces/composite/jsr276-using.xhtml");
-        String text = page.asText();
-        assertTrue(-1 != text.indexOf("composite component with correctly specified jsr276 metadata"));
-        assertTrue(-1 == text.indexOf("prefix fmd"));
-        assertTrue(-1 != text.indexOf("prefix metaData"));
-    }
-
-    public void testExtensionMappedFaceletPage() throws Exception {
-
-        HtmlPage page = getPage("/composite/jsr276-using.faces");
-        String text = page.asText();
-        assertTrue(-1 != text.indexOf("composite component with correctly specified jsr276 metadata"));
-        assertTrue(-1 != text.indexOf("composite component with incorrectly specified jsr276 metadata"));
-    }
-
-   public void testDirectlyAccessedCompositeComponent() throws Exception {
-
-       HtmlPage page = null;
-       client.setThrowExceptionOnFailingStatusCode(false);
-       page = getPage("/faces/resources/composite/jsr276Correct01.xhtml");
-       String text = page.asText();
-       assertTrue(text.contains("Component Not Found for identifier"));
-    }
-
-    
-
-} // end of class PathTestCase
diff --git a/jsf-ri/systest/src/com/sun/faces/component/DynamicAdd.java b/jsf-ri/systest/src/com/sun/faces/component/DynamicAdd.java
index c90273f..69d42ed 100644
--- a/jsf-ri/systest/src/com/sun/faces/component/DynamicAdd.java
+++ b/jsf-ri/systest/src/com/sun/faces/component/DynamicAdd.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -41,11 +45,12 @@ import java.util.Map;
 import javax.faces.component.FacesComponent;
 import javax.faces.component.UIComponent;
 import javax.faces.component.UINamingContainer;
+import javax.faces.component.UIViewRoot;
 import javax.faces.component.html.HtmlPanelGroup;
 import javax.faces.context.FacesContext;
 import javax.faces.context.ResponseWriter;
 import javax.faces.event.AbortProcessingException;
-import javax.faces.event.PostAddToViewEvent;
+import javax.faces.event.PreRenderViewEvent;
 import javax.faces.event.SystemEvent;
 import javax.faces.event.SystemEventListener;
 
@@ -64,31 +69,32 @@ public class DynamicAdd extends UINamingContainer implements SystemEventListener
 
     public DynamicAdd() {
         FacesContext ctx = FacesContext.getCurrentInstance();
-        Map<Object, Object> ctxMap = ctx.getAttributes();
+        Map<String, Object> viewMap = ctx.getViewRoot().getViewMap();
         // increment the counter
-        ctxMap.put("dynamicAdd", null == ctxMap.get("dynamicAdd") ? 
-            (Integer) 1 : ((Integer)ctxMap.get("dynamicAdd")) + 1);
-        this.setId("dynamic" + ctxMap.get("dynamicAdd").toString());
+        viewMap.put("dynamicAdd", null == viewMap.get("dynamicAdd") ?
+            (Integer) 1 : ((Integer)viewMap.get("dynamicAdd")) + 1);
+        this.setId("dynamic" + viewMap.get("dynamicAdd").toString());
 
-        ctx.getViewRoot().subscribeToViewEvent(PostAddToViewEvent.class, (SystemEventListener) this);
+        ctx.getViewRoot().subscribeToViewEvent(PreRenderViewEvent.class, (SystemEventListener) this);
     }
 
     public void processEvent(SystemEvent se) throws AbortProcessingException {
         FacesContext ctx = FacesContext.getCurrentInstance();
         UIComponent source = (UIComponent) se.getSource();
         String id = source.getClientId(ctx);
-        if (source.equals(this)) {
-            Map<Object, Object> ctxMap = ctx.getAttributes();
-            Integer numAddedSoFar = (Integer) ctxMap.get("dynamicAdd");
+        if (source.equals(ctx.getViewRoot())) {
+            Map<String, Object> viewMap = ctx.getViewRoot().getViewMap();
+            Integer numAddedSoFar = (Integer) viewMap.get("dynamicAdd");
             if (numAddedSoFar < 5) {
-                UIComponent dynamic = ctx.getApplication().createComponent("dynamicAdd");
+                DynamicAdd dynamic = (DynamicAdd) ctx.getApplication().createComponent("dynamicAdd");
+                dynamic.setFacetRequired(this.isFacetRequired());
                 this.getChildren().add(dynamic);
             }
         }
     }
 
     public boolean isListenerForSource(Object o) {
-        return o instanceof DynamicAdd;
+        return o instanceof UIViewRoot;
     }
 
     @Override
diff --git a/jsf-ri/systest/src/com/sun/faces/component/GetClientIdELTestCase.java b/jsf-ri/systest/src/com/sun/faces/component/GetClientIdELTestCase.java
deleted file mode 100644
index 16d3ed4..0000000
--- a/jsf-ri/systest/src/com/sun/faces/component/GetClientIdELTestCase.java
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package com.sun.faces.component;
-
-import com.sun.faces.htmlunit.AbstractTestCase;
-import com.gargoylesoftware.htmlunit.html.HtmlPage;
-import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-public class GetClientIdELTestCase extends AbstractTestCase {
-
-    public GetClientIdELTestCase(String name) {
-        super(name);
-    }
-
-
-    /**
-     * Set up instance variables required by this test case.
-     */
-    public void setUp() throws Exception {
-        super.setUp();
-    }
-
-
-    /**
-     * Return the tests included in this test suite.
-     */
-    public static Test suite() {
-        return (new TestSuite(GetClientIdELTestCase.class));
-    }
-
-
-    /**
-     * Tear down instance variables required by this test case.
-     */
-    public void tearDown() {
-        super.tearDown();
-    }
-
-
-    /**
-     * Added for issue 501
-     * Verify #{component.clientId} and #{cc.clientId} work
-     * properly
-     *
-     * @throws Exception
-     */
-    public void testELClientId() throws Exception {
-
-        HtmlPage page = getPage("/faces/composite/clientId01.xhtml");
-        String text = page.asText();
-        assertTrue(-1 != text.indexOf("j_id6:j_id9"));
-        assertTrue(-1 != text.indexOf("j_id6:componentId"));
-        assertTrue(-1 != text.indexOf("j_id18"));
-        assertTrue(-1 != text.indexOf("componentId01"));
-        assertTrue(-1 != text.indexOf("form2:j_id26"));
-        assertTrue(-1 != text.indexOf("form2:componentId"));
-        assertTrue(-1 != text.indexOf("j_id34"));
-        assertTrue(-1 != text.indexOf("componentId02"));
-
-    }
-
-
-} // end of class PathTestCase
diff --git a/jsf-ri/systest/src/com/sun/faces/component/PostAddTester.java b/jsf-ri/systest/src/com/sun/faces/component/PostAddTester.java
new file mode 100644
index 0000000..5681d87
--- /dev/null
+++ b/jsf-ri/systest/src/com/sun/faces/component/PostAddTester.java
@@ -0,0 +1,74 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.component;
+
+import javax.faces.component.FacesComponent;
+import javax.faces.component.UIComponent;
+import javax.faces.component.UIComponentBase;
+import javax.faces.context.FacesContext;
+import javax.faces.event.AbortProcessingException;
+import javax.faces.event.ComponentSystemEvent;
+import javax.faces.event.ComponentSystemEventListener;
+import javax.faces.event.ListenerFor;
+import javax.faces.event.PostAddToViewEvent;
+
+ at ListenerFor(systemEventClass=PostAddToViewEvent.class)
+ at FacesComponent("PostAddTester")
+public class PostAddTester extends UIComponentBase implements ComponentSystemEventListener {
+
+    @Override
+    public String getFamily() {
+        return "PostAddTester";
+    }
+
+
+
+    public void processEvent(ComponentSystemEvent cse) throws AbortProcessingException {
+        UIComponent source = cse.getComponent();
+        FacesContext context = FacesContext.getCurrentInstance();
+        context.getExternalContext().getRequestMap().put("1682message",
+                "source id: " + source.getId());
+
+    }
+
+    
+
+}
diff --git a/jsf-ri/systest/src/com/sun/faces/component/ViewScopedComponentBindingBean.java b/jsf-ri/systest/src/com/sun/faces/component/ViewScopedComponentBindingBean.java
new file mode 100644
index 0000000..63a742f
--- /dev/null
+++ b/jsf-ri/systest/src/com/sun/faces/component/ViewScopedComponentBindingBean.java
@@ -0,0 +1,91 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License. You can obtain
+ * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
+ * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
+ * Sun designates this particular file as subject to the "Classpath" exception
+ * as provided by Sun in the GPL Version 2 section of the License file that
+ * accompanied this code.  If applicable, add the following below the License
+ * Header, with the fields enclosed by brackets [] replaced by your own
+ * identifying information: "Portions Copyrighted [year]
+ * [name of copyright owner]"
+ *
+ * Contributor(s):
+ *
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.component;
+
+import java.util.Map;
+import javax.faces.application.Application;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.ViewScoped;
+import javax.faces.component.UICommand;
+import javax.faces.context.FacesContext;
+
+ at ManagedBean(name="viewScopedBean")
+ at ViewScoped
+public class ViewScopedComponentBindingBean {
+    
+    private static final String REQUEST_KEY = "com.sun.faces.component.ViewScopedComponentBindingBeanKey";
+    
+    
+    public ViewScopedComponentBindingBean() {
+        Map<String, Object> requestMap = FacesContext.getCurrentInstance().getExternalContext().getRequestMap();
+        StringBuilder sb = (StringBuilder) requestMap.get(REQUEST_KEY);
+        if (null == sb) {
+            sb = new StringBuilder();
+            requestMap.put(REQUEST_KEY, sb);
+        }
+        sb.append(" ctor called ");
+        
+    }
+    
+    public String getCtorMessage() {
+        String result = "";
+        
+        Map<String, Object> requestMap = FacesContext.getCurrentInstance().getExternalContext().getRequestMap();
+        StringBuilder sb = (StringBuilder) requestMap.get(REQUEST_KEY);
+        if (null != sb) {
+            result = sb.toString();
+        }
+        
+        return result;
+
+    }
+
+    private UICommand button = null;
+
+    public void setCommandButton(UICommand button) {
+        this.button = button;
+    }
+
+    public UICommand getCommandButton () {
+        if (null == button) {
+            FacesContext context = FacesContext.getCurrentInstance();
+            Application app = context.getApplication();
+            button = (UICommand) app.createComponent(context, "javax.faces.Command", "javax.faces.Button");
+        }
+        return button;
+    }
+}
diff --git a/jsf-ri/systest/src/com/sun/faces/composite/BootstrapCompositeComponent.java b/jsf-ri/systest/src/com/sun/faces/composite/BootstrapCompositeComponent.java
index 50c0699..6b005ec 100644
--- a/jsf-ri/systest/src/com/sun/faces/composite/BootstrapCompositeComponent.java
+++ b/jsf-ri/systest/src/com/sun/faces/composite/BootstrapCompositeComponent.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/systest/src/com/sun/faces/composite/ComponentResolverActionListener.java b/jsf-ri/systest/src/com/sun/faces/composite/ComponentResolverActionListener.java
index 8edee41..d0524d5 100644
--- a/jsf-ri/systest/src/com/sun/faces/composite/ComponentResolverActionListener.java
+++ b/jsf-ri/systest/src/com/sun/faces/composite/ComponentResolverActionListener.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/systest/src/com/sun/faces/composite/CompositeBean.java b/jsf-ri/systest/src/com/sun/faces/composite/CompositeBean.java
index 92a86b0..06e9f34 100644
--- a/jsf-ri/systest/src/com/sun/faces/composite/CompositeBean.java
+++ b/jsf-ri/systest/src/com/sun/faces/composite/CompositeBean.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -36,9 +40,13 @@
 
 package com.sun.faces.composite;
 
+import java.awt.Color;
+import java.math.BigDecimal;
 import java.text.DecimalFormat;
 import java.text.Format;
 import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
 import java.util.List;
 
 import javax.faces.bean.ManagedBean;
@@ -82,6 +90,41 @@ public class CompositeBean {
 
     }
 
+    private String text = "DEFAULT VALUE";
+    public String getText() {
+        return text;
+    }
+
+    // for #1966
+    private List<String> defaultValueList = Arrays.asList("Item 1","Item 2");
+
+    public List<String> getDefaultValueList() {
+        return this.defaultValueList;
+    }
+
+    private List<String> emptyList = Collections.emptyList();
+
+    public List<String> getEmptyList() {
+        return this.emptyList;
+    }
+
+    public Color getColor() {
+        return Color.PINK;
+    }
+    // end #1966
+
+    // for #1986
+    private BigDecimal bigDecimalValue = null;
+
+    public BigDecimal getBigDecimalValue() {
+        return bigDecimalValue;
+    }
+    // end #1986
+
+    public void setBigDecimalValue(BigDecimal bigDecimalValue) {
+        this.bigDecimalValue = bigDecimalValue;
+    }
+
 
     public Validator getValidator() {
 
@@ -212,7 +255,7 @@ public class CompositeBean {
     public String getStringValue() {
 
         return "equalityCheck";
-        
+
     }
 
     public String[] getStringValues() {
@@ -223,6 +266,12 @@ public class CompositeBean {
         return new String[] { "A", "B", "C" };
     }
 
+    public List<Integer> getTestValues() {
+        List<Integer> values = new ArrayList<Integer>(1);
+        values.add(1);
+        return values;
+    }
+
 
     // ---------------------------------------------------------- Nested Classes
 
diff --git a/jsf-ri/systest/src/com/sun/faces/composite/CompositeComponentMetadataUtils.java b/jsf-ri/systest/src/com/sun/faces/composite/CompositeComponentMetadataUtils.java
index 8d83beb..35b983f 100644
--- a/jsf-ri/systest/src/com/sun/faces/composite/CompositeComponentMetadataUtils.java
+++ b/jsf-ri/systest/src/com/sun/faces/composite/CompositeComponentMetadataUtils.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/systest/src/com/sun/faces/composite/CompositeComponentsTestCase.java b/jsf-ri/systest/src/com/sun/faces/composite/CompositeComponentsTestCase.java
index 2d0605e..27bf7be 100644
--- a/jsf-ri/systest/src/com/sun/faces/composite/CompositeComponentsTestCase.java
+++ b/jsf-ri/systest/src/com/sun/faces/composite/CompositeComponentsTestCase.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -38,7 +42,7 @@ package com.sun.faces.composite;
 
 import junit.framework.Test;
 import junit.framework.TestSuite;
-import com.sun.faces.htmlunit.AbstractTestCase;
+import com.sun.faces.htmlunit.HtmlUnitFacesTestCase;
 import com.gargoylesoftware.htmlunit.html.*;
 
 import java.util.List;
@@ -47,7 +51,7 @@ import java.util.ArrayList;
 /**
  * Unit tests for Composite Components.
  */
-public class CompositeComponentsTestCase extends AbstractTestCase {
+public class CompositeComponentsTestCase extends HtmlUnitFacesTestCase {
 
 
     @SuppressWarnings({"UnusedDeclaration"})
@@ -57,6 +61,12 @@ public class CompositeComponentsTestCase extends AbstractTestCase {
 
     public CompositeComponentsTestCase(String name) {
         super(name);
+        addExclusion(Container.TOMCAT6, "testForNoNPE");
+        addExclusion(Container.TOMCAT7, "testForNoNPE");
+        addExclusion(Container.WLS_10_3_4_NO_CLUSTER, "testForNoNPE");
+        addExclusion(Container.TOMCAT6, "testMetadataCache");
+        addExclusion(Container.TOMCAT7, "testMetadataCache");
+        addExclusion(Container.WLS_10_3_4_NO_CLUSTER, "testMetadataCache");
     }
 
 
@@ -86,6 +96,11 @@ public class CompositeComponentsTestCase extends AbstractTestCase {
 
     // -------------------------------------------------------------- Test Cases
 
+    public void testIsCompositeComponent() throws Exception {
+        HtmlPage page = getPage("/faces/composite/isCompositeComponentUsing.xhtml");
+        assertTrue(page.asText().contains("isCompositeComponent: true"));
+    }
+
     /**
      * <p>
      *  Maps ActionListener to commandButton within composite/actionSource1.xhtml using
@@ -788,7 +803,7 @@ public class CompositeComponentsTestCase extends AbstractTestCase {
 
 
     /**
-     * Added for issue 1256.
+     * Added for issue 1265.
      */
     public void testCompositeComponentResolutionWithinRelocatableResources() throws Exception {
 
@@ -797,15 +812,17 @@ public class CompositeComponentsTestCase extends AbstractTestCase {
         List<HtmlScript> scripts = new ArrayList<HtmlScript>(1);
         getAllElementsOfGivenClass(page, styles, HtmlStyle.class);
         getAllElementsOfGivenClass(page, scripts, HtmlScript.class);
-        assertEquals(4, styles.size());
-        assertEquals(1, scripts.size());
+        assertEquals(5, styles.size());
+        assertEquals(2, scripts.size());
         String[] styleValues = {
               "color:red",
               "color:blue",
               "color:red",
+              "color:red",
               "color:red"
         };
         String[] scriptValues = {
+              "var a = \"ss\";",
               "var a = \"ss\";"
         };
 
@@ -813,6 +830,7 @@ public class CompositeComponentsTestCase extends AbstractTestCase {
             assertTrue(styles.get(i).asXml().contains(styleValues[i]));
         }
         for (int i = 0, len = scripts.size(); i < len; i++) {
+            System.out.println(scripts.get(i).asXml());
             assertTrue(scripts.get(i).asXml().contains(scriptValues[i]));
         }
 
@@ -823,8 +841,8 @@ public class CompositeComponentsTestCase extends AbstractTestCase {
         scripts.clear();
         getAllElementsOfGivenClass(page, styles, HtmlStyle.class);
         getAllElementsOfGivenClass(page, scripts, HtmlScript.class);
-        assertEquals(4, styles.size());
-        assertEquals(1, scripts.size());
+        assertEquals(5, styles.size());
+        assertEquals(2, scripts.size());
         for (int i = 0, len = styles.size(); i < len; i++) {
             assertTrue(styles.get(i).asXml().contains(styleValues[i]));
         }
@@ -963,6 +981,41 @@ public class CompositeComponentsTestCase extends AbstractTestCase {
         assertTrue(text.contains("The following facets(s) are required, but no facets have been supplied for them: table."));
     }
 
+    public void testDefaultAttributeValueELOverrides() throws Exception {
+        HtmlPage page = getPage("/faces/composite/issue-1782-using.xhtml");
+        String text = page.asText();
+        System.out.println(text);
+        assertTrue(text.matches("(?s).*collapsable\\s=\\strue.*"));
+    }
+
+    public void testCCPreRenderViewEvent() throws Exception {
+        HtmlPage page = getPage("/faces/composite/1462-using.xhtml");
+        String text = page.asText();
+        System.out.println(text);
+        assertTrue(text.matches("(?s).*Message:.*Received.*event:.*javax.faces.event.PreRenderViewEvent.*for.*component:.*javax.faces.component.UIViewRoot.*"));
+
+    }
+
+    //issue 1696
+    public void testForNoNPE() throws Exception {
+        HtmlPage page = getPage("/faces/composite/simpleCompositeComponentUsingPage.xhtml");
+        List list = getAllElementsOfGivenClass(page, null,
+                HtmlSubmitInput.class);
+        HtmlSubmitInput button = (HtmlSubmitInput) list.get(0);
+        page = (HtmlPage) button.click();
+        String pageAsText = page.asText();
+        assertTrue(pageAsText.contains("Unable to find matching navigation case with from-view-id " +
+                "'/composite/simpleCompositeComponentUsingPage.xhtml' for action '#{hello.getNextAction}' " +
+                "with outcome '/submit.xhtml'"));
+    }
+
+    public void testDefaultAttributeValues() throws Exception {
+        HtmlPage page = getPage("/faces/composite/defaultAttributesUsingPage.xhtml");
+        String pageAsText = page.asText();
+        assertTrue(pageAsText.contains("rendered=true"));
+        assertTrue(pageAsText.contains("foo=bar"));
+    }
+
     // --------------------------------------------------------- Private Methods
 
 
diff --git a/jsf-ri/systest/src/com/sun/faces/composite/CompositeComponentsTestCaseWithEE6Dependencies.java b/jsf-ri/systest/src/com/sun/faces/composite/CompositeComponentsTestCaseWithEE6Dependencies.java
index ed13099..4189532 100644
--- a/jsf-ri/systest/src/com/sun/faces/composite/CompositeComponentsTestCaseWithEE6Dependencies.java
+++ b/jsf-ri/systest/src/com/sun/faces/composite/CompositeComponentsTestCaseWithEE6Dependencies.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -38,7 +42,7 @@ package com.sun.faces.composite;
 
 import junit.framework.Test;
 import junit.framework.TestSuite;
-import com.sun.faces.htmlunit.AbstractTestCase;
+import com.sun.faces.htmlunit.HtmlUnitFacesTestCase;
 import com.gargoylesoftware.htmlunit.html.*;
 
 import java.util.List;
@@ -47,7 +51,7 @@ import java.util.ArrayList;
 /**
  * Unit tests for Composite Components.
  */
-public class CompositeComponentsTestCaseWithEE6Dependencies extends AbstractTestCase {
+public class CompositeComponentsTestCaseWithEE6Dependencies extends HtmlUnitFacesTestCase {
 
 
     @SuppressWarnings({"UnusedDeclaration"})
@@ -120,6 +124,21 @@ public class CompositeComponentsTestCaseWithEE6Dependencies extends AbstractTest
 
     }
 
+    public void testCompositeComponentAttributeRequired() throws Exception {
+
+        HtmlPage page = getPage("/faces/composite/compAttributeRequired.xhtml");
+        String message = "xx1:0xx";
+        assertTrue(page.asText().contains(message));
+
+        page = getPage("/faces/composite/compAttributeRequiredNullValue.xhtml");
+        message = "xx:0xx";
+        assertTrue(page.asText().contains(message));
+
+        page = getPage("/faces/composite/compAttributeRequiredLiteral.xhtml");
+        message = "xx2:0xx";
+        assertTrue(page.asText().contains(message));
+    }
+
     public void testInvalidArgsToCCExpression() throws Exception {
 
         client.setThrowExceptionOnFailingStatusCode(false);
diff --git a/jsf-ri/systest/src/com/sun/faces/composite/DefaultActionTestCase.java b/jsf-ri/systest/src/com/sun/faces/composite/DefaultActionTestCase.java
index 6cbd021..d23bb06 100644
--- a/jsf-ri/systest/src/com/sun/faces/composite/DefaultActionTestCase.java
+++ b/jsf-ri/systest/src/com/sun/faces/composite/DefaultActionTestCase.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -42,13 +46,13 @@ import junit.framework.TestSuite;
 
 import com.gargoylesoftware.htmlunit.html.HtmlPage;
 import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
-import com.sun.faces.htmlunit.AbstractTestCase;
+import com.sun.faces.htmlunit.HtmlUnitFacesTestCase;
 
 
 /**
  * Unit tests for Composite Components.
  */
-public class DefaultActionTestCase extends AbstractTestCase {
+public class DefaultActionTestCase extends HtmlUnitFacesTestCase {
 
 
     public DefaultActionTestCase() {
diff --git a/jsf-ri/systest/src/com/sun/faces/composite/JavaBackedComponentDefaultAttrValues.java b/jsf-ri/systest/src/com/sun/faces/composite/JavaBackedComponentDefaultAttrValues.java
index b9ab0bf..36dc9ce 100644
--- a/jsf-ri/systest/src/com/sun/faces/composite/JavaBackedComponentDefaultAttrValues.java
+++ b/jsf-ri/systest/src/com/sun/faces/composite/JavaBackedComponentDefaultAttrValues.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -33,6 +37,7 @@
  * only if the new code is made subject to such option by the copyright
  * holder.
  */
+
 package com.sun.faces.composite;
 
 import java.io.IOException;
diff --git a/jsf-ri/systest/src/com/sun/faces/composite/JavaTopLevelActionListenerComponent.java b/jsf-ri/systest/src/com/sun/faces/composite/JavaTopLevelActionListenerComponent.java
index 2aeb53a..cbc3d63 100644
--- a/jsf-ri/systest/src/com/sun/faces/composite/JavaTopLevelActionListenerComponent.java
+++ b/jsf-ri/systest/src/com/sun/faces/composite/JavaTopLevelActionListenerComponent.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -33,6 +37,7 @@
  * only if the new code is made subject to such option by the copyright
  * holder.
  */
+
 package com.sun.faces.composite;
 
 import javax.faces.component.FacesComponent;
diff --git a/jsf-ri/systest/src/com/sun/faces/composite/JavaTopLevelActionListenerComponentTestCase.java b/jsf-ri/systest/src/com/sun/faces/composite/JavaTopLevelActionListenerComponentTestCase.java
index e902603..c857fd2 100644
--- a/jsf-ri/systest/src/com/sun/faces/composite/JavaTopLevelActionListenerComponentTestCase.java
+++ b/jsf-ri/systest/src/com/sun/faces/composite/JavaTopLevelActionListenerComponentTestCase.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -41,13 +45,13 @@ import junit.framework.TestSuite;
 
 import com.gargoylesoftware.htmlunit.html.HtmlInput;
 import com.gargoylesoftware.htmlunit.html.HtmlPage;
-import com.sun.faces.htmlunit.AbstractTestCase;
+import com.sun.faces.htmlunit.HtmlUnitFacesTestCase;
 
 
 /**
  * Unit tests for Composite Components.
  */
-public class JavaTopLevelActionListenerComponentTestCase extends AbstractTestCase {
+public class JavaTopLevelActionListenerComponentTestCase extends HtmlUnitFacesTestCase {
 
 
     public JavaTopLevelActionListenerComponentTestCase() {
diff --git a/jsf-ri/systest/src/com/sun/faces/composite/JavaTopLevelComponent.java b/jsf-ri/systest/src/com/sun/faces/composite/JavaTopLevelComponent.java
index 3dc6b8b..86508b9 100644
--- a/jsf-ri/systest/src/com/sun/faces/composite/JavaTopLevelComponent.java
+++ b/jsf-ri/systest/src/com/sun/faces/composite/JavaTopLevelComponent.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -33,12 +37,14 @@
  * only if the new code is made subject to such option by the copyright
  * holder.
  */
+
 package com.sun.faces.composite;
 
-import javax.el.ValueExpression;
+import java.util.Map;
 import javax.faces.component.UINamingContainer;
 import javax.faces.component.FacesComponent;
 import javax.faces.context.FacesContext;
+import javax.faces.event.ComponentSystemEvent;
 
 @FacesComponent(value = "javaTopLevelComponent")
 public class JavaTopLevelComponent extends UINamingContainer {
@@ -70,4 +76,12 @@ public class JavaTopLevelComponent extends UINamingContainer {
         return intv;
     }
 
+    public void forwardIfNotInRole(ComponentSystemEvent cse) {
+        FacesContext context = FacesContext.getCurrentInstance();
+        Map<String, Object> requestMap = context.getExternalContext().getRequestMap();
+        String message = "Received event: " + cse.getClass().getName() + " for component: " +
+                cse.getComponent().getClass().getName();
+        requestMap.put("message", message);
+    }
+
 }
diff --git a/jsf-ri/systest/src/com/sun/faces/composite/JavaTopLevelComponentTestCase.java b/jsf-ri/systest/src/com/sun/faces/composite/JavaTopLevelComponentTestCase.java
index 59f27c9..d136947 100644
--- a/jsf-ri/systest/src/com/sun/faces/composite/JavaTopLevelComponentTestCase.java
+++ b/jsf-ri/systest/src/com/sun/faces/composite/JavaTopLevelComponentTestCase.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -38,14 +42,14 @@ package com.sun.faces.composite;
 
 import junit.framework.Test;
 import junit.framework.TestSuite;
-import com.sun.faces.htmlunit.AbstractTestCase;
+import com.sun.faces.htmlunit.HtmlUnitFacesTestCase;
 import com.gargoylesoftware.htmlunit.html.*;
 
 
 /**
  * Unit tests for Composite Components.
  */
-public class JavaTopLevelComponentTestCase extends AbstractTestCase {
+public class JavaTopLevelComponentTestCase extends HtmlUnitFacesTestCase {
 
 
     public JavaTopLevelComponentTestCase() {
diff --git a/jsf-ri/systest/src/com/sun/faces/composite/PhaseListenerInCompositeComponent.java b/jsf-ri/systest/src/com/sun/faces/composite/PhaseListenerInCompositeComponent.java
index ee32130..a93f7b5 100644
--- a/jsf-ri/systest/src/com/sun/faces/composite/PhaseListenerInCompositeComponent.java
+++ b/jsf-ri/systest/src/com/sun/faces/composite/PhaseListenerInCompositeComponent.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/systest/src/com/sun/faces/composite/ResourceDependencyComponent.java b/jsf-ri/systest/src/com/sun/faces/composite/ResourceDependencyComponent.java
index e2cd730..6ca924a 100644
--- a/jsf-ri/systest/src/com/sun/faces/composite/ResourceDependencyComponent.java
+++ b/jsf-ri/systest/src/com/sun/faces/composite/ResourceDependencyComponent.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/systest/src/com/sun/faces/composite/ResourceDependencyComponentTestCase.java b/jsf-ri/systest/src/com/sun/faces/composite/ResourceDependencyComponentTestCase.java
index c55ed33..0eb16a0 100644
--- a/jsf-ri/systest/src/com/sun/faces/composite/ResourceDependencyComponentTestCase.java
+++ b/jsf-ri/systest/src/com/sun/faces/composite/ResourceDependencyComponentTestCase.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -43,13 +47,13 @@ import junit.framework.TestSuite;
 
 import com.gargoylesoftware.htmlunit.html.HtmlInput;
 import com.gargoylesoftware.htmlunit.html.HtmlPage;
-import com.sun.faces.htmlunit.AbstractTestCase;
+import com.sun.faces.htmlunit.HtmlUnitFacesTestCase;
 
 
 /**
  * Unit tests for Composite Components.
  */
-public class ResourceDependencyComponentTestCase extends AbstractTestCase {
+public class ResourceDependencyComponentTestCase extends HtmlUnitFacesTestCase {
 
 
     public ResourceDependencyComponentTestCase() {
diff --git a/jsf-ri/systest/src/com/sun/faces/composite/TimeWastingTagHandler.java b/jsf-ri/systest/src/com/sun/faces/composite/TimeWastingTagHandler.java
index 8083681..30db88f 100644
--- a/jsf-ri/systest/src/com/sun/faces/composite/TimeWastingTagHandler.java
+++ b/jsf-ri/systest/src/com/sun/faces/composite/TimeWastingTagHandler.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/systest/src/com/sun/faces/composite/ValueChangeListenerSetPropertyActionListener01TestCase.java b/jsf-ri/systest/src/com/sun/faces/composite/ValueChangeListenerSetPropertyActionListener01TestCase.java
index 55b6197..f348976 100644
--- a/jsf-ri/systest/src/com/sun/faces/composite/ValueChangeListenerSetPropertyActionListener01TestCase.java
+++ b/jsf-ri/systest/src/com/sun/faces/composite/ValueChangeListenerSetPropertyActionListener01TestCase.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -38,14 +42,14 @@ package com.sun.faces.composite;
 
 import junit.framework.Test;
 import junit.framework.TestSuite;
-import com.sun.faces.htmlunit.AbstractTestCase;
+import com.sun.faces.htmlunit.HtmlUnitFacesTestCase;
 import com.gargoylesoftware.htmlunit.html.*;
 
 
 /**
  * Unit tests for Composite Components.
  */
-public class ValueChangeListenerSetPropertyActionListener01TestCase extends AbstractTestCase {
+public class ValueChangeListenerSetPropertyActionListener01TestCase extends HtmlUnitFacesTestCase {
 
 
     public ValueChangeListenerSetPropertyActionListener01TestCase() {
diff --git a/jsf-ri/systest/src/com/sun/faces/event/DynamicAddTestCase.java b/jsf-ri/systest/src/com/sun/faces/event/DynamicAddTestCase.java
deleted file mode 100644
index 86d7d80..0000000
--- a/jsf-ri/systest/src/com/sun/faces/event/DynamicAddTestCase.java
+++ /dev/null
@@ -1,121 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package com.sun.faces.event;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-import com.sun.faces.htmlunit.AbstractTestCase;
-import com.gargoylesoftware.htmlunit.html.*;
-import java.util.regex.Pattern;
-
-
-/**
- * Unit tests for Composite Components.
- */
-public class DynamicAddTestCase extends AbstractTestCase {
-
-
-    public DynamicAddTestCase() {
-        this("VerifyBuildBeforeRestoreTestCase");
-    }
-
-    public DynamicAddTestCase(String name) {
-        super(name);
-    }
-
-
-    /**
-     * Set up instance variables required by this test case.
-     */
-    public void setUp() throws Exception {
-        super.setUp();
-    }
-
-
-    /**
-     * Return the tests included in this test suite.
-     */
-    public static Test suite() {
-        return (new TestSuite(DynamicAddTestCase.class));
-    }
-
-
-    /**
-     * Tear down instance variables required by this test case.
-     */
-    public void tearDown() {
-        super.tearDown();
-    }
-    
-
-    // -------------------------------------------------------------- Test Cases
-
-    public void testVerifyDynamicAdd() throws Exception {
-
-        HtmlPage page = getPage("/faces/dynamicComponents.xhtml");
-        String text = page.asXml();
-        assertTrue(Pattern.matches("(?s).*\\s*<ul>\\s*\\s*<p>\\s*Dynamic Component dynamic1\\s*<ul>\\s*\\s*<p>\\s*Dynamic Component dynamic2\\s*<ul>\\s*\\s*<p>\\s*Dynamic Component dynamic3\\s*<ul>\\s*\\s*<p>\\s*Dynamic Component dynamic4\\s*<ul>\\s*\\s*<p>\\s*Dynamic Component dynamic5\\s*</p>\\s*\\s*</ul>\\s*\\s*</p>\\s*\\s*</ul>\\s*\\s*</p>\\s*\\s*</ul>\\s*\\s*</p>\\s*\\s*</ul>\\s*\\s*</p>\\s*\\s*</ul>\\s*.*",
-                text));
-
-    }
-
-    public void testDynamicAddHandlesViewIdChanges() throws Exception {
-
-        HtmlPage page = getPage("/faces/dynamicComponents00.xhtml");
-        String text;
-        HtmlSubmitInput button = (HtmlSubmitInput)
-                this.getInputContainingGivenId(page, "next");
-        page = button.click();
-        button = (HtmlSubmitInput)
-                this.getInputContainingGivenId(page, "thisAgain");
-        page = button.click();
-        button = (HtmlSubmitInput)
-                this.getInputContainingGivenId(page, "thisAgain");
-        page = button.click();
-        text = page.asXml();
-        assertTrue(text.contains("Dynamic Component dynamic1"));
-        button = (HtmlSubmitInput)
-                this.getInputContainingGivenId(page, "next");
-        page = button.click();
-        text = page.asXml();
-        assertTrue(page.asXml().contains("no dynamic component"));
-
-
-
-    }
-    
-}
diff --git a/jsf-ri/systest/src/com/sun/faces/event/PostAddToViewListener.java b/jsf-ri/systest/src/com/sun/faces/event/PostAddToViewListener.java
index 337c3ad..641ac0e 100644
--- a/jsf-ri/systest/src/com/sun/faces/event/PostAddToViewListener.java
+++ b/jsf-ri/systest/src/com/sun/faces/event/PostAddToViewListener.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -34,7 +38,6 @@
  * holder.
  */
 
-
 package com.sun.faces.event;
 
 import java.util.Map;
diff --git a/jsf-ri/systest/src/com/sun/faces/event/PostRestoreStateListener.java b/jsf-ri/systest/src/com/sun/faces/event/PostRestoreStateListener.java
index c8430f4..c15d413 100644
--- a/jsf-ri/systest/src/com/sun/faces/event/PostRestoreStateListener.java
+++ b/jsf-ri/systest/src/com/sun/faces/event/PostRestoreStateListener.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -34,7 +38,6 @@
  * holder.
  */
 
-
 package com.sun.faces.event;
 
 import java.util.Map;
diff --git a/jsf-ri/systest/src/com/sun/faces/event/TestComponentRenderer.java b/jsf-ri/systest/src/com/sun/faces/event/TestComponentRenderer.java
new file mode 100644
index 0000000..01d6dbc
--- /dev/null
+++ b/jsf-ri/systest/src/com/sun/faces/event/TestComponentRenderer.java
@@ -0,0 +1,64 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.event;
+
+import java.io.IOException;
+
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.render.FacesRenderer;
+import javax.faces.render.Renderer;
+
+ at FacesRenderer(componentFamily = "com.sun.faces.event", rendererType = "testcomponent")
+public class TestComponentRenderer extends Renderer {
+
+    @Override
+    public void encodeBegin(FacesContext context, UIComponent component) throws IOException {
+        context.getResponseWriter().write( "<div style=\"border: 1px solid red; margin: 2px\"><div style=\"background-color: #ffc0c0; padding: 2px; margin-bottom: 5px; display:block\">TestComponent::encodeBegin</div>" );
+        super.encodeBegin( context, component );
+    }
+
+    @Override
+    public void encodeEnd(FacesContext context, UIComponent component) throws IOException {
+        super.encodeEnd( context, component );
+        context.getResponseWriter().write( "<div style=\"background-color: #ffc0c0; padding: 2px; margin-top: 5px; display:block\">TestComponent::encodeEnd</div></div>" );
+    }
+}
diff --git a/jsf-ri/systest/src/com/sun/faces/event/TestManagedBean.java b/jsf-ri/systest/src/com/sun/faces/event/TestManagedBean.java
new file mode 100644
index 0000000..9b185dd
--- /dev/null
+++ b/jsf-ri/systest/src/com/sun/faces/event/TestManagedBean.java
@@ -0,0 +1,82 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.event;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.component.UIComponent;
+import javax.faces.component.UINamingContainer;
+import javax.faces.component.html.HtmlOutputText;
+import javax.faces.context.FacesContext;
+
+
+ at ManagedBean
+public class TestManagedBean {
+
+    private static final List<String>	LIST;
+
+    static {
+        LIST = new ArrayList<String>();
+        LIST.add( "Foo" );
+        LIST.add( "Bar" );
+        LIST.add( "Baz" );
+    }
+
+    public List<String> getList() {
+		return LIST;
+    }
+
+    public void save() {
+        // Do nothing. Just a way to POSTback
+    }
+
+    public void addComponent() {
+        FacesContext ctx = FacesContext.getCurrentInstance();
+        UIComponent group = ctx.getViewRoot().findComponent("dynamicForm" +
+            UINamingContainer.getSeparatorChar(ctx) +  "group");
+        HtmlOutputText output = new HtmlOutputText();
+        output.setValue("OUTPUT");
+        group.getChildren().add(output);
+    }
+
+}
diff --git a/jsf-ri/systest/src/com/sun/faces/event/UIAddComponent.java b/jsf-ri/systest/src/com/sun/faces/event/UIAddComponent.java
new file mode 100644
index 0000000..12fe804
--- /dev/null
+++ b/jsf-ri/systest/src/com/sun/faces/event/UIAddComponent.java
@@ -0,0 +1,58 @@
+package com.sun.faces.event;
+
+import javax.faces.component.FacesComponent;
+import javax.faces.component.UIComponentBase;
+import javax.faces.component.UIViewRoot;
+import javax.faces.component.html.HtmlOutputText;
+import javax.faces.context.FacesContext;
+import javax.faces.event.AbortProcessingException;
+import javax.faces.event.PreRenderViewEvent;
+import javax.faces.event.SystemEvent;
+import javax.faces.event.SystemEventListener;
+
+ at FacesComponent( value = "com.sun.faces.event.UIAddComponent" )
+public class UIAddComponent
+	extends UIComponentBase
+	implements SystemEventListener {
+
+	//
+	// Constructor
+	//
+
+	public UIAddComponent() {
+
+		setRendererType( "testcomponent" );
+
+		FacesContext context = FacesContext.getCurrentInstance();
+		UIViewRoot root = context.getViewRoot();
+
+		root.subscribeToViewEvent( PreRenderViewEvent.class, this );
+	}
+
+	//
+	// Public methods
+	//
+
+	@Override
+	public String getFamily() {
+
+		return "com.sun.faces.event";
+	}
+
+	public boolean isListenerForSource( Object source ) {
+
+		return ( source instanceof UIViewRoot );
+	}
+
+	@Override
+	public void processEvent( SystemEvent event )
+		throws AbortProcessingException {
+
+		if ( !FacesContext.getCurrentInstance().isPostback() ) {
+
+			HtmlOutputText component = new HtmlOutputText();
+			component.setValue( "Dynamically added child" );
+			getChildren().add( component );
+		}
+	}
+}
diff --git a/jsf-ri/systest/src/com/sun/faces/event/UIAddComponent1.java b/jsf-ri/systest/src/com/sun/faces/event/UIAddComponent1.java
new file mode 100644
index 0000000..8b7c8fb
--- /dev/null
+++ b/jsf-ri/systest/src/com/sun/faces/event/UIAddComponent1.java
@@ -0,0 +1,74 @@
+package com.sun.faces.event;
+
+import javax.faces.component.FacesComponent;
+import javax.faces.component.UIComponent;
+import javax.faces.component.UIComponentBase;
+import javax.faces.component.UIViewRoot;
+import javax.faces.component.html.HtmlOutputText;
+import javax.faces.component.html.HtmlPanelGrid;
+import javax.faces.context.FacesContext;
+import javax.faces.event.AbortProcessingException;
+import javax.faces.event.PreRenderViewEvent;
+import javax.faces.event.PostRestoreStateEvent;
+import javax.faces.event.SystemEvent;
+import javax.faces.event.SystemEventListener;
+
+ at FacesComponent( value = "com.sun.faces.event.UIAddComponent1" )
+public class UIAddComponent1
+	extends UIComponentBase
+	implements SystemEventListener {
+
+	//
+	// Constructor
+	//
+
+	public UIAddComponent1() {
+
+		setRendererType( "testcomponent" );
+
+		FacesContext context = FacesContext.getCurrentInstance();
+		UIViewRoot root = context.getViewRoot();
+
+		root.subscribeToViewEvent( PreRenderViewEvent.class, this );
+		root.subscribeToViewEvent( PostRestoreStateEvent.class, this );
+	}
+
+	//
+	// Public methods
+	//
+
+	@Override
+	public String getFamily() {
+
+		return "com.sun.faces.event";
+	}
+
+	public boolean isListenerForSource( Object source ) {
+
+		return ( source instanceof UIViewRoot );
+	}
+
+	@Override
+	public void processEvent( SystemEvent event )
+		throws AbortProcessingException {
+
+		if ( !FacesContext.getCurrentInstance().isPostback() ) {
+            HtmlPanelGrid component = new HtmlPanelGrid();
+            component.setId("PANEL");
+            component.setStyle( "border: 1px dashed blue; padding: 5px; margin: 5px" );
+            getChildren().add( component );
+		} else {
+            // Get PanelGrid component
+            HtmlPanelGrid component = (HtmlPanelGrid)getChildren().get(0);
+            // If the child has not already been added - add it
+             String added = (String)component.getAttributes().get("CHILD_ADDED");
+            if (null == added) {
+                HtmlOutputText output = new HtmlOutputText();
+                output.setId("OUTPUT");
+                output.setValue("NEW-OUTPUT");
+                component.getChildren().add(output);
+                component.getAttributes().put("CHILD_ADDED","CHILD_ADDED");
+            }
+        }
+	}
+}
diff --git a/jsf-ri/systest/src/com/sun/faces/event/UIAddComponent2.java b/jsf-ri/systest/src/com/sun/faces/event/UIAddComponent2.java
new file mode 100644
index 0000000..912635a
--- /dev/null
+++ b/jsf-ri/systest/src/com/sun/faces/event/UIAddComponent2.java
@@ -0,0 +1,97 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.event;
+
+import javax.faces.application.FacesMessage;
+import javax.faces.component.FacesComponent;
+import javax.faces.component.UIComponent;
+import javax.faces.component.UIComponentBase;
+import javax.faces.component.UIViewRoot;
+import javax.faces.component.html.HtmlOutputText;
+import javax.faces.component.html.HtmlPanelGrid;
+import javax.faces.context.FacesContext;
+import javax.faces.event.AbortProcessingException;
+import javax.faces.event.PostAddToViewEvent;
+import javax.faces.event.PreRenderViewEvent;
+import javax.faces.event.SystemEvent;
+import javax.faces.event.SystemEventListener;
+
+ at FacesComponent( value = "com.sun.faces.event.UIAddComponent2" )
+public class UIAddComponent2
+    extends UIComponentBase
+    implements SystemEventListener {
+
+    //
+    // Constructor
+    //
+
+    public UIAddComponent2() {
+
+        setRendererType( "testcomponent" );
+
+        FacesContext context = FacesContext.getCurrentInstance();
+            UIViewRoot root = context.getViewRoot();
+
+            root.subscribeToViewEvent( PreRenderViewEvent.class, this );
+            root.subscribeToViewEvent( PostAddToViewEvent.class, this );
+    }
+
+    //
+    // Public methods
+    //
+
+    @Override
+    public String getFamily() {
+        return "com.sun.faces.event";
+    }
+
+    public boolean isListenerForSource( Object source ) {
+        return ( source instanceof UIViewRoot );
+    }
+
+    @Override
+    public void processEvent( SystemEvent event )
+        throws AbortProcessingException {
+        FacesContext context = FacesContext.getCurrentInstance();
+        context.addMessage(getId(),
+            new FacesMessage(FacesMessage.SEVERITY_ERROR,
+                getId() + " : Event: " + event, null));
+    }
+}
diff --git a/jsf-ri/systest/src/com/sun/faces/event/UIAddComponent3.java b/jsf-ri/systest/src/com/sun/faces/event/UIAddComponent3.java
new file mode 100644
index 0000000..86c969a
--- /dev/null
+++ b/jsf-ri/systest/src/com/sun/faces/event/UIAddComponent3.java
@@ -0,0 +1,81 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.event;
+
+import javax.faces.component.FacesComponent;
+import javax.faces.component.UIComponent;
+import javax.faces.component.UIComponentBase;
+import javax.faces.component.UIViewRoot;
+import javax.faces.component.html.HtmlOutputText;
+import javax.faces.component.html.HtmlPanelGrid;
+import javax.faces.context.FacesContext;
+import javax.faces.event.AbortProcessingException;
+import javax.faces.event.PostAddToViewEvent;
+import javax.faces.event.PreRenderViewEvent;
+import javax.faces.event.PostRestoreStateEvent;
+import javax.faces.event.SystemEvent;
+import javax.faces.event.SystemEventListener;
+
+ at FacesComponent( value = "com.sun.faces.event.UIAddComponent3" )
+public class UIAddComponent3
+    extends UIComponentBase {
+
+    //
+    // Constructor
+    //
+
+    public UIAddComponent3() {
+
+        setRendererType( "testcomponent" );
+
+        FacesContext context = FacesContext.getCurrentInstance();
+            UIViewRoot root = context.getViewRoot();
+    }
+
+    //
+    // Public methods
+    //
+
+    @Override
+    public String getFamily() {
+        return "com.sun.faces.event";
+    }
+
+}
diff --git a/jsf-ri/systest/src/com/sun/faces/event/UIRecursiveComponent.java b/jsf-ri/systest/src/com/sun/faces/event/UIRecursiveComponent.java
new file mode 100644
index 0000000..c745564
--- /dev/null
+++ b/jsf-ri/systest/src/com/sun/faces/event/UIRecursiveComponent.java
@@ -0,0 +1,62 @@
+package com.sun.faces.event;
+
+import javax.faces.component.FacesComponent;
+import javax.faces.component.UIComponentBase;
+import javax.faces.component.UIViewRoot;
+import javax.faces.component.html.HtmlOutputText;
+import javax.faces.context.FacesContext;
+import javax.faces.event.AbortProcessingException;
+import javax.faces.event.PreRenderViewEvent;
+import javax.faces.event.SystemEvent;
+import javax.faces.event.SystemEventListener;
+
+ at FacesComponent( value = "com.sun.faces.event.UIRecursiveComponent" )
+public class UIRecursiveComponent
+	extends UIComponentBase
+	implements SystemEventListener {
+
+	//
+	// Constructor
+	//
+
+	public UIRecursiveComponent() {
+
+		setRendererType( "testcomponent" );
+
+		FacesContext context = FacesContext.getCurrentInstance();
+		UIViewRoot root = context.getViewRoot();
+
+		root.subscribeToViewEvent( PreRenderViewEvent.class, this );
+	}
+
+	//
+	// Public methods
+	//
+
+	@Override
+	public String getFamily() {
+
+		return "com.sun.faces.event";
+	}
+
+	public boolean isListenerForSource( Object source ) {
+
+		return ( source instanceof UIViewRoot );
+	}
+
+	@Override
+	public void processEvent( SystemEvent event )
+		throws AbortProcessingException {
+
+		if ( !FacesContext.getCurrentInstance().isPostback() ) {
+
+			HtmlOutputText component = new HtmlOutputText();
+			component.setValue( "Dynamically added child" );
+			getChildren().add( component );
+
+			if ( !( getParent() instanceof UIRecursiveComponent ) ) {
+				getChildren().add( new UIRecursiveComponent() );
+			}
+		}
+	}
+}
diff --git a/jsf-ri/systest/src/com/sun/faces/event/UIStableComponent.java b/jsf-ri/systest/src/com/sun/faces/event/UIStableComponent.java
new file mode 100644
index 0000000..ded8151
--- /dev/null
+++ b/jsf-ri/systest/src/com/sun/faces/event/UIStableComponent.java
@@ -0,0 +1,68 @@
+package com.sun.faces.event;
+
+import javax.faces.component.FacesComponent;
+import javax.faces.component.UIComponentBase;
+import javax.faces.component.UIViewRoot;
+import javax.faces.component.html.HtmlInputText;
+import javax.faces.context.FacesContext;
+import javax.faces.event.AbortProcessingException;
+import javax.faces.event.PreRenderViewEvent;
+import javax.faces.event.SystemEvent;
+import javax.faces.event.SystemEventListener;
+
+ at FacesComponent( value = "com.sun.faces.event.UIStableComponent" )
+public class UIStableComponent
+	extends UIComponentBase
+	implements SystemEventListener {
+
+	//
+	// Constructor
+	//
+
+	public UIStableComponent() {
+
+		setRendererType( "testcomponent" );
+
+		FacesContext context = FacesContext.getCurrentInstance();
+		UIViewRoot root = context.getViewRoot();
+
+		root.subscribeToViewEvent( PreRenderViewEvent.class, this );
+	}
+
+	//
+	// Public methods
+	//
+
+	@Override
+	public String getFamily() {
+
+		return "com.sun.faces.event";
+	}
+
+	public boolean isListenerForSource( Object source ) {
+
+		return ( source instanceof UIViewRoot );
+	}
+
+	@Override
+	public void processEvent( SystemEvent event )
+		throws AbortProcessingException {
+
+		if ( FacesContext.getCurrentInstance().getMaximumSeverity() != null ) {
+			return;
+		}
+
+		HtmlInputText inputText1 = new HtmlInputText();
+		inputText1.setValue( "1" );
+		getChildren().add( inputText1 );
+
+		HtmlInputText inputText2 = new HtmlInputText();
+		inputText2.setValue( "2" );
+		getChildren().add( inputText2 );
+
+		HtmlInputText inputText3 = new HtmlInputText();
+		inputText3.setId( "text3" );
+		inputText3.setRequired( true );
+		getChildren().add( inputText3 );
+	}
+}
diff --git a/jsf-ri/systest/src/com/sun/faces/event/UITableComponent.java b/jsf-ri/systest/src/com/sun/faces/event/UITableComponent.java
new file mode 100644
index 0000000..89f078a
--- /dev/null
+++ b/jsf-ri/systest/src/com/sun/faces/event/UITableComponent.java
@@ -0,0 +1,100 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.event;
+
+import javax.faces.application.Application;
+import javax.faces.component.FacesComponent;
+import javax.faces.component.UIColumn;
+import javax.faces.component.UIComponentBase;
+import javax.faces.component.UIViewRoot;
+import javax.faces.component.html.HtmlDataTable;
+import javax.faces.component.html.HtmlOutputText;
+import javax.faces.context.FacesContext;
+import javax.faces.event.AbortProcessingException;
+import javax.faces.event.PreRenderViewEvent;
+import javax.faces.event.SystemEvent;
+import javax.faces.event.SystemEventListener;
+
+ at FacesComponent(value = "com.sun.faces.event.UITableComponent" )
+public class UITableComponent extends UIComponentBase implements SystemEventListener {
+
+    public UITableComponent() {
+        setRendererType( "testcomponent" );
+        FacesContext context = FacesContext.getCurrentInstance();
+        UIViewRoot root = context.getViewRoot();
+        root.subscribeToViewEvent( PreRenderViewEvent.class, this );
+    }
+
+    @Override
+    public String getFamily() {
+        return "com.sun.faces.event";
+    }
+
+    public boolean isListenerForSource( Object source ) {
+        return ( source instanceof UIViewRoot );
+    }
+
+    @Override
+    public void processEvent( SystemEvent event ) throws AbortProcessingException {
+        FacesContext context = FacesContext.getCurrentInstance();
+           if ( !context.isPostback() ) {
+              Application application = context.getApplication();
+
+              HtmlDataTable dataTable = new HtmlDataTable();
+              dataTable.setVar( "_internal" );
+              dataTable.setValueExpression( "value", 
+                  application.getExpressionFactory().createValueExpression( 
+                     context.getELContext(), "#{testManagedBean.list}", Object.class ));
+              getChildren().add( dataTable );
+
+              UIColumn column = new UIColumn();
+              column.setId( context.getViewRoot().createUniqueId() );
+              dataTable.getChildren().add( column );
+
+              HtmlOutputText outputText = new HtmlOutputText();
+              outputText.setId( context.getViewRoot().createUniqueId() );
+              outputText.setValueExpression( "value", 
+                  application.getExpressionFactory().createValueExpression( 
+                     context.getELContext(), "#{_internal}", Object.class ));
+              column.getChildren().add( outputText );
+        }
+    }
+}
diff --git a/jsf-ri/systest/src/com/sun/faces/event/UIToggleComponent.java b/jsf-ri/systest/src/com/sun/faces/event/UIToggleComponent.java
new file mode 100644
index 0000000..f98a2af
--- /dev/null
+++ b/jsf-ri/systest/src/com/sun/faces/event/UIToggleComponent.java
@@ -0,0 +1,54 @@
+package com.sun.faces.event;
+
+import javax.faces.component.FacesComponent;
+import javax.faces.component.UIComponent;
+import javax.faces.component.UIComponentBase;
+import javax.faces.component.UIViewRoot;
+import javax.faces.context.FacesContext;
+import javax.faces.event.AbortProcessingException;
+import javax.faces.event.PreRenderViewEvent;
+import javax.faces.event.SystemEvent;
+import javax.faces.event.SystemEventListener;
+
+ at FacesComponent( value = "com.sun.faces.event.UIToggleComponent" )
+public class UIToggleComponent
+	extends UIComponentBase
+	implements SystemEventListener {
+
+	//
+	// Constructor
+	//
+
+	public UIToggleComponent() {
+
+		setRendererType( "testcomponent" );
+
+		FacesContext context = FacesContext.getCurrentInstance();
+		UIViewRoot root = context.getViewRoot();
+
+		root.subscribeToViewEvent( PreRenderViewEvent.class, this );
+	}
+
+	//
+	// Public methods
+	//
+
+	@Override
+	public String getFamily() {
+
+		return "com.sun.faces.event";
+	}
+
+	public boolean isListenerForSource( Object source ) {
+
+		return ( source instanceof UIViewRoot );
+	}
+
+	@Override
+	public void processEvent( SystemEvent event )
+		throws AbortProcessingException {
+
+		UIComponent component = getChildren().remove( 0 );
+		getChildren().add( component );
+	}
+}
diff --git a/jsf-ri/systest/src/com/sun/faces/event/VerifyBuildBeforeRestoreTestCase.java b/jsf-ri/systest/src/com/sun/faces/event/VerifyBuildBeforeRestoreTestCase.java
deleted file mode 100644
index 23a3129..0000000
--- a/jsf-ri/systest/src/com/sun/faces/event/VerifyBuildBeforeRestoreTestCase.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package com.sun.faces.event;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-import com.sun.faces.htmlunit.AbstractTestCase;
-import com.gargoylesoftware.htmlunit.html.*;
-
-
-/**
- * Unit tests for Composite Components.
- */
-public class VerifyBuildBeforeRestoreTestCase extends AbstractTestCase {
-
-
-    public VerifyBuildBeforeRestoreTestCase() {
-        this("VerifyBuildBeforeRestoreTestCase");
-    }
-
-    public VerifyBuildBeforeRestoreTestCase(String name) {
-        super(name);
-    }
-
-
-    /**
-     * Set up instance variables required by this test case.
-     */
-    public void setUp() throws Exception {
-        super.setUp();
-    }
-
-
-    /**
-     * Return the tests included in this test suite.
-     */
-    public static Test suite() {
-        return (new TestSuite(VerifyBuildBeforeRestoreTestCase.class));
-    }
-
-
-    /**
-     * Tear down instance variables required by this test case.
-     */
-    public void tearDown() {
-        super.tearDown();
-    }
-    
-
-    // -------------------------------------------------------------- Test Cases
-
-    public void testVerifyBuildBeforeRestore() throws Exception {
-
-        if (Boolean.TRUE.equals(Boolean.valueOf(System.getProperty("partial.state.saving")))) {
-            HtmlPage page = getPage("/faces/regression/verifyBuildBeforeRestore.xhtml");
-            HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("submit");
-
-            page = button.click();
-            String text = page.asText();
-            assertTrue(text.contains("Message: javax.faces.event.PostAddToViewEvent javax.faces.event.PostRestoreStateEvent"));
-            page = getPage("/faces/regression/uninstallListeners.xhtml");
-        }
-
-    }
-
-    
-}
diff --git a/jsf-ri/systest/src/com/sun/faces/facelets/FaceletsTargetNotFoundTestCase.java b/jsf-ri/systest/src/com/sun/faces/facelets/FaceletsTargetNotFoundTestCase.java
deleted file mode 100644
index f171fd8..0000000
--- a/jsf-ri/systest/src/com/sun/faces/facelets/FaceletsTargetNotFoundTestCase.java
+++ /dev/null
@@ -1,133 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package com.sun.faces.facelets;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import com.gargoylesoftware.htmlunit.html.HtmlElement;
-import com.gargoylesoftware.htmlunit.html.HtmlPage;
-import com.gargoylesoftware.htmlunit.html.HtmlSpan;
-import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
-import com.gargoylesoftware.htmlunit.html.HtmlAnchor;
-import com.gargoylesoftware.htmlunit.WebClient;
-import com.gargoylesoftware.htmlunit.FailingHttpStatusCodeException;
-import com.sun.faces.htmlunit.AbstractTestCase;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-/**
- * Test cases for Facelets functionality
- */
-public class FaceletsTargetNotFoundTestCase extends AbstractTestCase {
-
-
-    // --------------------------------------------------------------- Test Init
-
-
-    public FaceletsTargetNotFoundTestCase() {
-        this("FaceletsTargetNotFoundTestCase");
-    }
-
-
-    public FaceletsTargetNotFoundTestCase(String name) {
-        super(name);
-    }
-
-
-    /**
-     * Set up instance variables required by this test case.
-     */
-    public void setUp() throws Exception {
-        super.setUp();
-    }
-
-
-    /**
-     * Return the tests included in this test suite.
-     */
-    public static Test suite() {
-        return (new TestSuite(FaceletsTargetNotFoundTestCase.class));
-    }
-
-
-    /**
-     * Tear down instance variables required by this test case.
-     */
-    public void tearDown() {
-        super.tearDown();
-    }
-
-
-    // ------------------------------------------------------------ Test Methods
-
-    /*
-     * Check that not found errors give a 500 status, instead of the 404 that
-     * they used to give.
-     */
-    public void testFaillingCode() throws Exception {
-
-        WebClient client = new WebClient();
-        client.setThrowExceptionOnFailingStatusCode(true);
-        HtmlPage page;
-        int code;
-
-        try {
-            page = getPage("/faces/facelets/compositionnotfound.xhtml", client) ;
-            fail("A Failing status code was not received");
-        } catch (FailingHttpStatusCodeException fail) {
-            code = fail.getStatusCode();
-            assertTrue("Expected 500, got: "+code, code==500);
-        }
-        try {
-            page = getPage("/faces/facelets/decoratenotfound.xhtml", client) ;
-            fail("A Failing status code was not received");
-        } catch (FailingHttpStatusCodeException fail) {
-            code = fail.getStatusCode();
-            assertTrue("Expected 500, got: "+code, code==500);
-        }
-        try {
-            page = getPage("/faces/facelets/includenotfound.xhtml", client) ;
-            fail("A Failing status code was not received");
-        } catch (FailingHttpStatusCodeException fail) {
-            code = fail.getStatusCode();
-            assertTrue("Expected 500, got: "+code, code==500);
-        }
-
-    }
-
-}
\ No newline at end of file
diff --git a/jsf-ri/systest/src/com/sun/faces/facelets/FaceletsTestCase.java b/jsf-ri/systest/src/com/sun/faces/facelets/FaceletsTestCase.java
deleted file mode 100644
index 8e6b653..0000000
--- a/jsf-ri/systest/src/com/sun/faces/facelets/FaceletsTestCase.java
+++ /dev/null
@@ -1,402 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package com.sun.faces.facelets;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import com.gargoylesoftware.htmlunit.html.HtmlElement;
-import com.gargoylesoftware.htmlunit.html.HtmlPage;
-import com.gargoylesoftware.htmlunit.html.HtmlSpan;
-import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
-import com.gargoylesoftware.htmlunit.html.HtmlAnchor;
-import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
-import com.gargoylesoftware.htmlunit.html.HtmlUnorderedList;
-import com.gargoylesoftware.htmlunit.html.HtmlDivision;
-import com.sun.faces.htmlunit.AbstractTestCase;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-
-/**
- * Test cases for Facelets functionality
- */
-public class FaceletsTestCase extends AbstractTestCase {
-
-
-    // --------------------------------------------------------------- Test Init
-
-
-    public FaceletsTestCase() {
-        this("FaceletsTestCase");
-    }
-
-
-    public FaceletsTestCase(String name) {
-        super(name);
-    }
-
-
-    /**
-     * Set up instance variables required by this test case.
-     */
-    public void setUp() throws Exception {
-        super.setUp();
-    }
-
-
-    /**
-     * Return the tests included in this test suite.
-     */
-    public static Test suite() {
-        return (new TestSuite(FaceletsTestCase.class));
-    }
-
-
-    /**
-     * Tear down instance variables required by this test case.
-     */
-    public void tearDown() {
-        super.tearDown();
-    }
-
-
-    // ------------------------------------------------------------ Test Methods
-
-
-    /*
-     * Added for issue 917.
-     */
-    public void testSetPropertyActionListener1() throws Exception {
-
-        HtmlPage page = getPage("/faces/facelets/setpropertyactionlistener1.xhtml") ;
-
-        // verify the output is initially null
-        List<HtmlSpan> output = new ArrayList<HtmlSpan>(1);
-        getAllElementsOfGivenClass(page, output, HtmlSpan.class);
-        assertTrue(!output.isEmpty());
-        HtmlSpan span = output.get(0);
-        assertTrue("Expected: 'Current Name: ', Received: '"+span.asText()+"'","Current Name:".equals(span.asText()));
-
-        // click the commandLink with a nested setPropertyActionListener
-        // to cause the name attribute in the session to be populated.
-        HtmlElement clink = page.getHtmlElementById("form:s1");
-        assertNotNull(clink);
-        page = (HtmlPage) ((HtmlSubmitInput) clink).click();
-        output.clear();
-        getAllElementsOfGivenClass(page, output, HtmlSpan.class);
-        assertTrue(!output.isEmpty());
-        span = output.get(0);
-        assertTrue("Current Name: Mojarra".equals(span.asText()));
-
-        // click the commandButton with a nested setPropertyActionListener
-        // to cause the name attribute in the session to be cleared
-        HtmlElement cbutton = page.getHtmlElementById("form:s2");
-        assertNotNull(clink);
-        page = (HtmlPage) ((HtmlAnchor) cbutton).click();
-        output.clear();
-        getAllElementsOfGivenClass(page, output, HtmlSpan.class);
-        assertTrue(!output.isEmpty());
-        span = output.get(0);
-        assertTrue("Current Name:".equals(span.asText()));
-        
-    }
-
-
-    /*
-     * Added for issue 909.
-     */
-    public void testTagSourceFromDtdDocument() throws Exception {
-
-        HtmlPage page = getPage("/faces/facelets/sourcefromdtdconfig.xhtml") ;
-
-        // verify the output is initially null
-        List<HtmlSpan> output = new ArrayList<HtmlSpan>(1);
-        getAllElementsOfGivenClass(page, output, HtmlSpan.class);
-        assertTrue(!output.isEmpty());
-        HtmlSpan span = output.get(0);
-        assertTrue("Hello!".equals(span.asText()));
-        assertTrue("color:red".equals(span.getStyleAttribute()));
-
-    }
-
-
-    /*
-     * Verify #{component} and #{cc} expressions evaluate
-     * at build time.
-     * @throws Exception
-     */
-    public void testComponentELAtBuildTime() throws Exception {
-
-        HtmlPage page = getPage("/faces/facelets/componentELAtBuildTime.xhtml") ;
-
-        // verify the output is initially null
-        List<HtmlSpan> output = new ArrayList<HtmlSpan>(4);
-        getAllElementsOfGivenClass(page, output, HtmlSpan.class);
-        assertTrue(output.size() == 3);
-        for (HtmlSpan span : output) {
-            assertTrue("PASSED".equals(span.asText()));
-        }
-
-    }
-
-
-    /**
-     * Ensure attributes that evaluate EL expressions only render the attribute
-     * name/value pair when the value is non-null.
-     *
-     * https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=940
-     */ 
-    public void testConditionalAttributeRendering() throws Exception {
-
-        HtmlPage page = getPage("/faces/facelets/conditionalCCAttributeRendering.xhtml") ;
-
-        // verify the output is initially null
-        List<HtmlSpan> output = new ArrayList<HtmlSpan>(1);
-        getAllElementsOfGivenClass(page, output, HtmlSpan.class);
-        assertTrue(output.size() == 1);
-        HtmlSpan span = output.get(0);
-        assertTrue(span.getStyleAttribute().length() == 0);
-        HtmlSubmitInput add = (HtmlSubmitInput) getInputContainingGivenId(page, "form:add");
-        page = add.click();
-
-        // ensure the span is now styled since there is a non-null value available.
-        output.clear();
-        getAllElementsOfGivenClass(page, output, HtmlSpan.class);
-        assertTrue(output.size() == 1);
-        span = output.get(0);
-        assertEquals("color:red", span.getStyleAttribute());
-
-        // ensure the style is not rendered once again after the attribute value
-        // is set to "".
-        HtmlSubmitInput remove = (HtmlSubmitInput) getInputContainingGivenId(page, "form:remove");
-        page = remove.click();
-        output.clear();
-        getAllElementsOfGivenClass(page, output, HtmlSpan.class);
-        assertTrue(output.size() == 1);
-        span = output.get(0);
-        assertTrue(span.getStyleAttribute().length() == 0);
-
-    }
-
-    public void testTemplateComp() throws Exception {
-        lastpage = getPage("/faces/facelets/templateComp.xhtml");
-
-        assertTrue("Template Test".equals(lastpage.getTitleText()));
-
-        String templateText = lastpage.getElementById("templateText").getTextContent();
-        assertTrue("Template text".equals(templateText));
-
-        String toplevelContent = lastpage.getElementById("toplevelContent").getTextContent();
-        assertTrue("Inserted Content".equals(toplevelContent));
-    }
-
-    public void testTemplateDecorate() throws Exception {
-        lastpage = getPage("/faces/facelets/templateDecorate.xhtml");
-
-        assertTrue("Decorate Test".equals(lastpage.getTitleText()));
-
-        String templateText = lastpage.getElementById("comp").getTextContent();
-        assertTrue("Composition Text".equals(templateText));
-
-        String toplevelContent = lastpage.getElementById("insert").getTextContent();
-        assertTrue("Inserted Text".equals(toplevelContent));
-    }
-
-
-    public void testValidatorWrappingNestingDisableHandling() throws Exception {
-
-        HtmlPage page = getPage("/faces/facelets/validatorDisabled.xhtml");
-        HtmlTextInput input = (HtmlTextInput) getInputContainingGivenId(page, "form1:input");
-        assertNotNull(input);
-        input.setValueAttribute("aaaa");
-        HtmlSubmitInput submit = (HtmlSubmitInput) getInputContainingGivenId(page, "form1:sub");
-        page = submit.click();
-
-        HtmlUnorderedList list = (HtmlUnorderedList) page.getElementById("form1:messages1");
-        int count = 0;
-        for (HtmlElement element : list.getAllHtmlChildElements()) {
-            count++;
-            assertEquals("form1:input: Validation Error: Length is less than allowable minimum of '5'", element.asText());
-            if (count > 1) {
-                fail("Expected a single validation failure");
-            }
-        }
-
-        page = getPage("/faces/facelets/validatorDisabled.xhtml");
-        HtmlTextInput input1 = (HtmlTextInput) getInputContainingGivenId(page, "form2:input1");
-        HtmlTextInput input2 = (HtmlTextInput) getInputContainingGivenId(page, "form2:input2");
-        input1.setValueAttribute("aaaa");
-        input2.setValueAttribute("aaaa");
-        submit = (HtmlSubmitInput) getInputContainingGivenId(page, "form2:sub");
-        page = submit.click();
-
-        HtmlElement list1 = page.getElementById("form2:messages2");
-        assertTrue(list1 instanceof HtmlDivision); // if it's not, it means messages where displayed
-        HtmlUnorderedList list2 = (HtmlUnorderedList) page.getElementById("form2:messages3");
-        assertFalse(list1.getAllHtmlChildElements().iterator().hasNext());
-        count = 0;
-        for (HtmlElement element : list2.getAllHtmlChildElements()) {
-            count++;
-            assertEquals("form2:input2: Validation Error: Length is less than allowable minimum of '5'", element.asText());
-            if (count > 1) {
-                fail("Expected a single validation failure");
-            }
-        }
-    }
-
-
-    
-
-
-    /**
-     * Added for issue 1202.  Ensure duplicate phase listeners aren't registered
-     * when using f:phaseListener and partial state saving is enabled (which is
-     * the default for systest).
-     */
-    public void testPhaseListenerRegistration() throws Exception {
-
-        HtmlPage page = getPage("/faces/facelets/viewPhaseListeners.xhtml");
-        HtmlSubmitInput submit = (HtmlSubmitInput) getInputContainingGivenId(page, "form:button");
-        assertNotNull(submit);
-
-        for (int i = 0; i < 5; i++) {
-            page = (HtmlPage) submit.click();
-            assertTrue(!page.asText().contains("ERROR"));
-            submit = (HtmlSubmitInput) getInputContainingGivenId(page, "form:button");
-        }
-
-    }
-
-    public void testWhen() throws Exception {
-        HtmlPage page = getPage("/faces/facelets/when.xhtml");
-        String text = page.asText();
-        assertTrue(text.contains("size = 1"));
-        assertTrue(text.contains("isEmpty = false"));
-        assertTrue(text.contains("there is some!!!"));
-        assertTrue(text.contains("there is some (really)!!!"));
-
-    }
-
-
-    /**
-     * Added for issue 1552.
-     */
-    public void testModeratelyComplexTemplating() throws Exception {
-        HtmlPage page = getPage("/faces/facelets/templateDecoration2.xhtml");
-        String text = page.asText();
-        assertTrue(text.contains("Inserted from client1 Default"));
-    }
-
-
-    /**
-     * Added for issue 1313
-     */
-    public void testIssue1313() throws Exception {
-
-        HtmlPage page = getPage("/faces/facelets/issue1313.xhtml");
-        List<HtmlDivision> divs = new ArrayList<HtmlDivision>();
-
-        getAllElementsOfGivenClass(page, divs, HtmlDivision.class);
-        validateToggleState1(divs);
-        HtmlSubmitInput input = (HtmlSubmitInput)
-              getInputContainingGivenId(page, "form:nonajax");
-        assertNotNull(input);
-        page = input.click();
-        divs.clear();
-        getAllElementsOfGivenClass(page, divs, HtmlDivision.class);
-        validateToggleState2(divs);
-        input = (HtmlSubmitInput)
-              getInputContainingGivenId(page, "form:ajax");
-        assertNotNull(input);
-        page = input.click();
-        divs.clear();
-        getAllElementsOfGivenClass(page, divs, HtmlDivision.class);
-        validateToggleState1(divs);
-        input = (HtmlSubmitInput)
-              getInputContainingGivenId(page, "form:nonajax");
-        assertNotNull(input);
-        page = input.click();
-        divs.clear();
-        getAllElementsOfGivenClass(page, divs, HtmlDivision.class);
-        validateToggleState2(divs);
-        input = (HtmlSubmitInput)
-              getInputContainingGivenId(page, "form:ajax");
-        assertNotNull(input);
-        page = input.click();
-        divs.clear();
-        getAllElementsOfGivenClass(page, divs, HtmlDivision.class);
-        validateToggleState1(divs);
-
-    }
-
-
-    // --------------------------------------------------------- Private Methods
-
-
-    private void validateToggleState1(List<HtmlDivision> divs) {
-        assertTrue(divs.size() == 2);
-        HtmlDivision div1 = divs.get(0);
-        assertEquals("frag1", "frag1", div1.getId());
-        assertEquals("frag1", "frag1", div1.asText().trim());
-        HtmlDivision div2 = divs.get(1);
-        assertEquals("otherwise", "otherwise", div2.getId());
-        assertEquals("C:OTHERWISE TOGGLE STATE FALSE C:OTHERWISE",
-                     "C:OTHERWISE TOGGLE STATE FALSE C:OTHERWISE",
-                     div2.asText().trim());
-    }
-
-
-    private void validateToggleState2(List<HtmlDivision> divs) {
-        assertTrue(divs.size() == 3);
-        HtmlDivision div1 = divs.get(0);
-        assertEquals("frag2", "frag2", div1.getId());
-        assertEquals("frag2", "frag2", div1.asText().trim());
-        HtmlDivision div2 = divs.get(1);
-        assertEquals("if", "if", div2.getId());
-        assertEquals("C:IF TOGGLE STATE TRUE C:IF",
-                     "C:IF TOGGLE STATE TRUE C:IF",
-                     div2.asText().trim());
-        HtmlDivision div3 = divs.get(2);
-        assertEquals("when", "when", div3.getId());
-        assertEquals("C:WHEN TOGGLE STATE TRUE C:WHEN",
-                     "C:WHEN TOGGLE STATE TRUE C:WHEN",
-                     div3.asText().trim());
-    }
-
-
-}
diff --git a/jsf-ri/systest/src/com/sun/faces/facelets/ImplicitFacetTestCase.java b/jsf-ri/systest/src/com/sun/faces/facelets/ImplicitFacetTestCase.java
deleted file mode 100644
index 8b4f980..0000000
--- a/jsf-ri/systest/src/com/sun/faces/facelets/ImplicitFacetTestCase.java
+++ /dev/null
@@ -1,120 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package com.sun.faces.facelets;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import com.gargoylesoftware.htmlunit.html.HtmlElement;
-import com.gargoylesoftware.htmlunit.html.HtmlPage;
-import com.gargoylesoftware.htmlunit.html.HtmlSpan;
-import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
-import com.gargoylesoftware.htmlunit.html.HtmlAnchor;
-import com.sun.faces.htmlunit.AbstractTestCase;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-/**
- * Test cases for Facelets functionality
- */
-public class ImplicitFacetTestCase extends AbstractTestCase {
-
-
-    // --------------------------------------------------------------- Test Init
-
-
-    public ImplicitFacetTestCase() {
-        this("FaceletsTestCase");
-    }
-
-
-    public ImplicitFacetTestCase(String name) {
-        super(name);
-    }
-
-
-    /**
-     * Set up instance variables required by this test case.
-     */
-    public void setUp() throws Exception {
-        super.setUp();
-    }
-
-
-    /**
-     * Return the tests included in this test suite.
-     */
-    public static Test suite() {
-        return (new TestSuite(ImplicitFacetTestCase.class));
-    }
-
-
-    /**
-     * Tear down instance variables required by this test case.
-     */
-    public void tearDown() {
-        super.tearDown();
-    }
-
-
-    // ------------------------------------------------------------ Test Methods
-
-
-    /*
-     * Added for issue 917.
-     */
-    public void testUIRepeat() throws Exception {
-
-        HtmlPage page = getPage("/faces/facelets/implicitFacet01.xhtml") ;
-        
-        String text = page.asText();
-        
-        assertTrue(-1 != text.indexOf("Implicit facet 01 id: j_id2. Child 01 of facet 01 id: output01. Child 02 of facet 01 id: output02. Child 03 of facet 01 id: output03."));
-        assertTrue(-1 != text.indexOf("Implicit facet 01 id: panelGroup01. Child 01 of facet 01 id: output07. Child 02 of facet 01 id: output08. Child 03 of facet 01 id: output09."));
-
-        HtmlSubmitInput input = (HtmlSubmitInput) getInputContainingGivenId(page, "command");
-        page = input.click();
-
-        text = page.asText();
-
-        assertTrue(-1 != text.indexOf("Implicit facet 01 id: j_id2. Child 01 of facet 01 id: output01. Child 02 of facet 01 id: output02. Child 03 of facet 01 id: output03."));
-        assertTrue(-1 != text.indexOf("Implicit facet 01 id: panelGroup01. Child 01 of facet 01 id: output07. Child 02 of facet 01 id: output08. Child 03 of facet 01 id: output09."));
-
-
-    }
-
-}
diff --git a/jsf-ri/systest/src/com/sun/faces/facelets/KeepMessagesTestCase.java b/jsf-ri/systest/src/com/sun/faces/facelets/KeepMessagesTestCase.java
deleted file mode 100644
index 3a290a3..0000000
--- a/jsf-ri/systest/src/com/sun/faces/facelets/KeepMessagesTestCase.java
+++ /dev/null
@@ -1,120 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- *
- * Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
- *
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- *
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- *
- * Contributor(s):
- *
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package com.sun.faces.facelets;
-
-import java.io.IOException;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-import com.gargoylesoftware.htmlunit.html.HtmlInput;
-import com.gargoylesoftware.htmlunit.html.HtmlPage;
-import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
-import com.sun.faces.htmlunit.AbstractTestCase;
-
-public class KeepMessagesTestCase extends AbstractTestCase {
-
-
-    // --------------------------------------------------------------- Test Init
-
-
-    public KeepMessagesTestCase() {
-        this("keepMessagesTestCase");
-    }
-
-
-    public KeepMessagesTestCase(String name) {
-        super(name);
-    }
-
-    /**
-     * Return the tests included in this test suite.
-     */
-    public static Test suite() {
-        return (new TestSuite(KeepMessagesTestCase.class));
-    }
-
-
-    // ------------------------------------------------------------ Test Methods
-
-
-    public void testMessagesAreKeptAfterRedirect() throws Exception {
-
-        HtmlPage page = getPage("/faces/facelets/keepMessages.xhtml") ;
-        HtmlSubmitInput button = (HtmlSubmitInput) getInputContainingGivenId(page, "submit");
-        page = button.click();
-
-        assertTrue(-1 != page.asText().indexOf("This is a global message"));
-
-        // submit the page again to make sure messages aren't re-displayed since
-        // keep messages isn't set to true on this view
-        button = (HtmlSubmitInput) getInputContainingGivenId(page, "button");
-        page = button.click();
-
-        assertTrue(page.asText().indexOf("This is a global message") == -1);
-    }
-    
-    public void testMessagesAreKeptAfterRedirectAfterDoubleValidationError() throws Exception {
-    	
-    	HtmlPage page = getPage("/faces/facelets/keepMessages.xhtml") ;
-		page = submitRequiredForm(page);
-    	assertOnPage(page, "first page");
-    	
-    	page = submitRequiredForm(page);
-    	assertOnPage(page, "first page");
-    	
-    	HtmlInput requiredInput = getInputContainingGivenId(page, "requiredInput");
-    	requiredInput.setValueAttribute("a value");
-    	
-    	page = submitRequiredForm(page);
-    	assertOnPage(page, "second page");
-    	
-    	assertTrue("FacesMessage should have survived redirect", page.asText().indexOf("This is a global message") != -1);
-    }
-
-
-	private void assertOnPage(HtmlPage page, String titleText) {
-		assertTrue(-1 != page.getTitleText().indexOf(titleText));
-	}
-
-
-	private HtmlPage submitRequiredForm(HtmlPage page) throws IOException {
-		HtmlSubmitInput button = (HtmlSubmitInput) getInputContainingGivenId(page, "submitRequired");
-    	return button.click();
-	}
-
-}
\ No newline at end of file
diff --git a/jsf-ri/systest/src/com/sun/faces/facelets/RepeatBean.java b/jsf-ri/systest/src/com/sun/faces/facelets/RepeatBean.java
index 1e97c39..2cb86bd 100644
--- a/jsf-ri/systest/src/com/sun/faces/facelets/RepeatBean.java
+++ b/jsf-ri/systest/src/com/sun/faces/facelets/RepeatBean.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/systest/src/com/sun/faces/facelets/UIRepeatTestCase.java b/jsf-ri/systest/src/com/sun/faces/facelets/UIRepeatTestCase.java
deleted file mode 100644
index 2b5d57d..0000000
--- a/jsf-ri/systest/src/com/sun/faces/facelets/UIRepeatTestCase.java
+++ /dev/null
@@ -1,201 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package com.sun.faces.facelets;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import com.gargoylesoftware.htmlunit.html.HtmlPage;
-import com.gargoylesoftware.htmlunit.html.HtmlSpan;
-import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
-import com.gargoylesoftware.htmlunit.html.HtmlAnchor;
-import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
-import com.sun.faces.htmlunit.AbstractTestCase;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-/**
- * Test cases for Facelets functionality
- */
-public class UIRepeatTestCase extends AbstractTestCase {
-
-
-    // --------------------------------------------------------------- Test Init
-
-
-    public UIRepeatTestCase() {
-        this("UIRepeatTestCase");
-    }
-
-
-    public UIRepeatTestCase(String name) {
-        super(name);
-    }
-
-
-    /**
-     * Set up instance variables required by this test case.
-     */
-    public void setUp() throws Exception {
-        super.setUp();
-    }
-
-
-    /**
-     * Return the tests included in this test suite.
-     */
-    public static Test suite() {
-        return (new TestSuite(UIRepeatTestCase.class));
-    }
-
-
-    /**
-     * Tear down instance variables required by this test case.
-     */
-    public void tearDown() {
-        super.tearDown();
-    }
-
-
-    // ------------------------------------------------------------ Test Methods
-
-
-    /*
-     * Added for issue 917.
-     */
-    public void testUIRepeat() throws Exception {
-
-        HtmlPage page = getPage("/faces/facelets/uirepeat.xhtml") ;
-        
-        String text = page.asText();
-        
-        assertTrue(-1 != text.indexOf("ListFlavor is chocolate. Begin is . End is . Index is 0. Step is . Index is even: true. Index is odd: false. Index is first: true. Index is last: false."));
-        assertTrue(-1 != text.indexOf("ListFlavor is vanilla. Begin is . End is . Index is 1. Step is . Index is even: false. Index is odd: true. Index is first: false. Index is last: false."));
-        assertTrue(-1 != text.indexOf("ListFlavor is strawberry. Begin is . End is . Index is 2. Step is . Index is even: true. Index is odd: false. Index is first: false. Index is last: false."));
-        assertTrue(-1 != text.indexOf("ListFlavor is chocolate peanut butter. Begin is . End is . Index is 3. Step is . Index is even: false. Index is odd: true. Index is first: false. Index is last: true."));
-        assertTrue(-1 != text.indexOf("ArrayFlavor is chocolate. Begin is . End is . Index is 0. Step is . Index is even: true. Index is odd: false. Index is first: true. Index is last: false."));
-        assertTrue(-1 != text.indexOf("ArrayFlavor is vanilla. Begin is . End is . Index is 1. Step is . Index is even: false. Index is odd: true. Index is first: false. Index is last: false."));
-        assertTrue(-1 != text.indexOf("ArrayFlavor is strawberry. Begin is . End is . Index is 2. Step is . Index is even: true. Index is odd: false. Index is first: false. Index is last: false."));
-        assertTrue(-1 != text.indexOf("ArrayFlavor is chocolate peanut butter. Begin is . End is . Index is 3. Step is . Index is even: false. Index is odd: true. Index is first: false. Index is last: true."));
-        
-    }
-
-
-    public void testUIRepeatVarStatusBroadcast() throws Exception {
-
-        HtmlPage page = getPage("/faces/facelets/uirepeat2.xhtml");
-        List<HtmlAnchor> anchors = new ArrayList<HtmlAnchor>(4);
-        getAllElementsOfGivenClass(page, anchors, HtmlAnchor.class);
-        assertEquals("Expected to find only 4 HtmlAnchors", 4, anchors.size());
-        String[] expectedValues = {
-              "Index: 0",
-              "Index: 1",
-              "Index: 2",
-              "Index: 3",
-        };
-
-        for (int i = 0, len = expectedValues.length; i < len; i++) {
-            HtmlAnchor anchor = anchors.get(i);
-            page = anchor.click();
-            assertTrue(page.asText().contains(expectedValues[i]));
-        }
-
-    }
-
-
-    public void testUIRepeatStateNotLostOnNonUIRepeatMessage() throws Exception {
-
-        HtmlPage page = getPage("/faces/facelets/uirepeat3.xhtml");
-        List<HtmlTextInput> inputs = new ArrayList<HtmlTextInput>(5);
-        getAllElementsOfGivenClass(page, inputs, HtmlTextInput.class);
-        assertEquals("Expected 5 input fields", 5, inputs.size());
-        inputs.get(0).setValueAttribute("A"); // this causes a validation failure
-        inputs.get(1).setValueAttribute("1");
-        inputs.get(2).setValueAttribute("2");
-        inputs.get(3).setValueAttribute("3");
-        inputs.get(4).setValueAttribute("4");
-        HtmlSubmitInput submit = (HtmlSubmitInput) getInputContainingGivenId(page, "submit");
-        page = submit.click();
-        assertTrue(page.asText().contains("'A' is not a number."));
-        // now verify the inputs nested within the UIRepeat were not cleared
-        inputs.clear();
-        getAllElementsOfGivenClass(page, inputs, HtmlTextInput.class);
-        assertEquals("A", inputs.get(0).getValueAttribute());
-        assertEquals("1", inputs.get(1).getValueAttribute());
-        assertEquals("2", inputs.get(2).getValueAttribute());
-        assertEquals("3", inputs.get(3).getValueAttribute());
-        assertEquals("4", inputs.get(4).getValueAttribute());
-
-    }
-
-
-    public void testUIRepeatVarBeginEndStepProperties() throws Exception {
-
-        HtmlPage page = getPage("/faces/facelets/uirepeat4.xhtml");
-        List<HtmlSpan> spans = new ArrayList<HtmlSpan>(9);
-        getAllElementsOfGivenClass(page, spans, HtmlSpan.class);
-        assertEquals("Expected 9 spans", 9, spans.size());
-        String[] expectedValues = {
-              "vanilla : index=1 : begin=1 : end= : step= : first=true : last=false : even=true : odd=false",
-              "strawberry : index=2 : begin=1 : end= : step= : first=false : last=false : even=false : odd=true",
-              "chocolate peanut butter : index=3 : begin=1 : end= : step= : first=false : last=true : even=true : odd=false",
-              "strawberry: index=2 : begin=2 : end=3 : step= : first=true : last=false : even=true : odd=false",
-              "chocolate peanut butter: index=3 : begin=2 : end=3 : step= : first=false : last=true : even=false : odd=true",
-              "chocolate: index=0 : begin= : end= : step=2 : first=true : last=false : even=true : odd=false",
-              "strawberry: index=2 : begin= : end= : step=2 : first=false : last=true : even=false : odd=true",
-              "vanilla: index=1 : begin=1 : end=1 : step=2 : first=true : last=true : even=true : odd=false",
-              "chocolate: index=0 : begin= : end= : step= : first=true : last=true : even=true : odd=false"
-        };
-        for (int i = 0, len = spans.size(); i < len; i++) {
-            assertEquals("Expected: " + expectedValues[i] + ", received: " + spans.get(i).asText(),
-                         expectedValues[i],
-                         spans.get(i).asText());
-        }
-
-    }
-
-    /**
-     * Added for issue 1218.
-     */
-    public void testForEachVarStatusNoException() throws Exception {
-
-        HtmlPage page = getPage("/faces/facelets/forEach.xhtml");
-        assertTrue(page.asText().contains("1 2 3"));
-
-    }
-
-}
diff --git a/jsf-ri/systest/src/com/sun/faces/facelets/csetTestCase.java b/jsf-ri/systest/src/com/sun/faces/facelets/csetTestCase.java
deleted file mode 100644
index 3633580..0000000
--- a/jsf-ri/systest/src/com/sun/faces/facelets/csetTestCase.java
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package com.sun.faces.facelets;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import com.gargoylesoftware.htmlunit.html.HtmlElement;
-import com.gargoylesoftware.htmlunit.html.HtmlPage;
-import com.gargoylesoftware.htmlunit.html.HtmlSpan;
-import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
-import com.gargoylesoftware.htmlunit.html.HtmlAnchor;
-import com.sun.faces.htmlunit.AbstractTestCase;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-/**
- * Test cases for Facelets functionality
- */
-public class csetTestCase extends AbstractTestCase {
-
-
-    // --------------------------------------------------------------- Test Init
-
-
-    public csetTestCase() {
-        this("csetTestCase");
-    }
-
-
-    public csetTestCase(String name) {
-        super(name);
-    }
-
-
-    /**
-     * Set up instance variables required by this test case.
-     */
-    public void setUp() throws Exception {
-        super.setUp();
-    }
-
-
-    /**
-     * Return the tests included in this test suite.
-     */
-    public static Test suite() {
-        return (new TestSuite(csetTestCase.class));
-    }
-
-
-    /**
-     * Tear down instance variables required by this test case.
-     */
-    public void tearDown() {
-        super.tearDown();
-    }
-
-
-    // ------------------------------------------------------------ Test Methods
-
-
-    /*
-     * Added for issue 917.
-     */
-    public void testSetPropertyActionListener1() throws Exception {
-
-        lastpage = getPage("/faces/facelets/csetTagBody.xhtml") ;
-
-        checkTrue("output", "y bop alice bop yes");
-    }
-
-}
\ No newline at end of file
diff --git a/jsf-ri/systest/src/com/sun/faces/groovy/GroovyTestCase.java b/jsf-ri/systest/src/com/sun/faces/groovy/GroovyTestCase.java
index dc60bdb..7ccc197 100644
--- a/jsf-ri/systest/src/com/sun/faces/groovy/GroovyTestCase.java
+++ b/jsf-ri/systest/src/com/sun/faces/groovy/GroovyTestCase.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -37,11 +41,11 @@
 package com.sun.faces.groovy;
 
 import com.gargoylesoftware.htmlunit.html.HtmlPage;
-import com.sun.faces.htmlunit.AbstractTestCase;
+import com.sun.faces.htmlunit.HtmlUnitFacesTestCase;
 import junit.framework.Test;
 import junit.framework.TestSuite;
 
-public class GroovyTestCase extends AbstractTestCase {
+public class GroovyTestCase extends HtmlUnitFacesTestCase {
     public GroovyTestCase() {
         this("groovyTestCase");
     }
@@ -73,4 +77,4 @@ public class GroovyTestCase extends AbstractTestCase {
         assertNotNull(page.getElementById("header"));
         assertTrue (page.getElementById("header").getTextContent().equals("THIS IS A HEADER!"));
     }
-}
\ No newline at end of file
+}
diff --git a/jsf-ri/systest/src/com/sun/faces/htmlunit/AbstractTestCase.java b/jsf-ri/systest/src/com/sun/faces/htmlunit/AbstractTestCase.java
deleted file mode 100644
index 49d4b2a..0000000
--- a/jsf-ri/systest/src/com/sun/faces/htmlunit/AbstractTestCase.java
+++ /dev/null
@@ -1,422 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package com.sun.faces.htmlunit;
-
-
-import com.gargoylesoftware.htmlunit.*;
-import com.gargoylesoftware.htmlunit.html.HtmlBody;
-import com.gargoylesoftware.htmlunit.html.HtmlElement;
-import com.gargoylesoftware.htmlunit.html.HtmlInput;
-import com.gargoylesoftware.htmlunit.html.HtmlForm;
-import com.gargoylesoftware.htmlunit.html.HtmlPage;
-import junit.framework.Test;
-import junit.framework.TestCase;
-import junit.framework.TestSuite;
-
-import java.net.URL;
-import java.util.Iterator;
-
-import java.util.List;
-import java.util.ArrayList;
-
-
-/**
- * <p>Abstract base class for test cases utilizing HtmlUnit.</p>
- */
-
-public abstract class AbstractTestCase extends TestCase {
-
-
-    // ------------------------------------------------------------ Constructors
-
-
-    /**
-     * Construct a new instance of this test case.
-     *
-     * @param name Name of the test case
-     */
-    public AbstractTestCase(String name) {
-        super(name);
-    }
-
-
-    // ------------------------------------------------------ Instance Variables
-
-
-    // System property values used to configure the HTTP connection
-    protected String contextPath = null;
-    protected String host = null;
-    protected int port = 0;
-
-    // The current session identifier
-    protected String sessionId = null;
-
-
-    // The WebClient instance for this test case
-    protected WebClient client = null;
-
-    // The URL for our test application
-    protected URL domainURL = null;
-
-    // The cookie manager
-    protected CookieManager cmanager = null;
-
-    // The last requested page
-    protected HtmlPage lastpage = null;
-
-
-    // ---------------------------------------------------- Overall Test Methods
-
-
-    /**
-     * Set up instance variables required by this test case.
-     */
-    public void setUp() throws Exception {
-
-        BrowserVersion browserVersion;
-
-        contextPath = System.getProperty("context.path");
-        host = System.getProperty("host");
-        port = Integer.parseInt(System.getProperty("port"));
-        String browser = System.getProperty("browser");
-
-        if ("FF3".equals(browser)) {
-            browserVersion = BrowserVersion.FIREFOX_3;
-        } else if ("FF2".equals(browser)) {
-            browserVersion = BrowserVersion.FIREFOX_2;
-        } else if ("IE6".equals(browser)) {
-            browserVersion = BrowserVersion.INTERNET_EXPLORER_6;
-        } else {
-            browserVersion = BrowserVersion.INTERNET_EXPLORER_7;
-        }
-        
-        String proxyHost = System.getProperty("proxyHost");
-        String proxyPort = System.getProperty("proxyPort");
-
-        client = new WebClient(browserVersion);
-        cmanager = client.getCookieManager();
-        // Add an ajax controller to synchronize all ajax calls
-        client.setAjaxController(new NicelyResynchronizingAjaxController());
-        domainURL = getURL("/");
-        WebRequestSettings settings = new WebRequestSettings(domainURL);
-        if (null != proxyHost && null != proxyPort) {
-            settings.setProxyHost(proxyHost);
-            int proxyPortInt = Integer.parseInt(proxyPort);
-            settings.setProxyPort(proxyPortInt);
-            ProxyConfig config = client.getProxyConfig();
-            config.setProxyHost(proxyHost);
-            config.setProxyPort(proxyPortInt);
-            
-        }
-        WebResponse response = client.getWebConnection().getResponse(settings);
-
-    }
-
-
-    /**
-     * Return the tests included in this test suite.
-     */
-    public static Test suite() {
-        return (new TestSuite(AbstractTestCase.class));
-    }
-
-
-    /**
-     * Tear down instance variables required by this test case.
-     */
-    public void tearDown() {
-
-        client = null;
-        domainURL = null;
-        cmanager = null;
-
-    }
-
-
-    // ------------------------------------------------- Individual Test Methods
-
-
-    // --------------------------------------------------------- Private Methods
-
-
-    /**
-     * <p>Extract and return the result of calling <code>asText()</code>
-     * on the <code><body></code> element of this page.</p>
-     *
-     * @param page The <code>HtmlPage</code> to process
-     */
-    protected String getBodyText(HtmlPage page) {
-
-        Object body =
-                page.getDocumentElement().getHtmlElementsByTagName("body").get(0);
-
-        if (body != null) {
-            if (body instanceof HtmlBody) {
-                return (((HtmlBody) body).asText());
-            }
-        }
-
-        fail("This page does not have a <body> element");
-        return (null); // To satisfy the compiler
-
-    }
-
-
-    /**
-     * <p>Return the page for the specified context-relative path,
-     * maintaining session affinity if <code>sessionId</code> is not null.</p>
-     *
-     * @param path Context-relative part of the path
-     */
-    protected HtmlPage getPage(String path) throws Exception {
-
-        /* Cookies seem to be maintained automatically now
-        if (sessionId != null) {
-            //            System.err.println("Joining   session " + sessionId);
-            client.addRequestHeader("Cookie", "JSESSIONID=" + sessionId);
-        }
-        */
-        lastpage  = (HtmlPage) client.getPage(getURL(path));
-        if (sessionId == null) {
-            parseSession(lastpage);
-        }
-        return lastpage;
-
-    }
-
-
-    /**
-     * The same as {@link #getPage(String)} except this uses the specified
-     * WebClient.
-     *
-     * @param path   context-relative path
-     * @param client WebClient
-     * @return an HtmlPage instance
-     * @throws Exception if an error occurs
-     */
-    protected HtmlPage getPage(String path, WebClient client) throws Exception {
-        lastpage = (HtmlPage) client.getPage(getURL(path));
-        if (sessionId == null) {
-            parseSession(lastpage);
-        }
-        return lastpage;
-    }
-
-
-    /**
-     * <p>Return a <code>URL</code> for the specified context-relative
-     * path.</p>
-     *
-     * @param path Context relative path
-     */
-    protected URL getURL(String path) throws Exception {
-
-        StringBuffer sb = new StringBuffer("http://");
-        sb.append(host);
-        if (port != 80) {
-            sb.append(":");
-            sb.append("" + port);
-        }
-        sb.append(contextPath);
-        sb.append(path);
-        return (new URL(sb.toString()));
-
-    }
-
-
-    /**
-     * <p>Parse and save any session identifier from the specified page.</p>
-     *
-     * @param page The current page
-     */
-    protected void parseSession(HtmlPage page) {
-
-        String value =
-                page.getWebResponse().getResponseHeaderValue("Set-Cookie");
-        if (value == null) {
-            return;
-        }
-        int equals = value.indexOf("JSESSIONID=");
-        if (equals < 0) {
-            return;
-        }
-        value = value.substring(equals + "JSESSIONID=".length());
-        int semi = value.indexOf(";");
-        if (semi >= 0) {
-            value = value.substring(0, semi);
-        }
-        sessionId = value;
-        //        System.err.println("Beginning session " + sessionId);
-
-    }
-
-
-    protected boolean clearAllCookies() {
-        cmanager.clearCookies();
-        return true;
-    }
-
-    // Return the form with the specified "id" from the specified page
-    // (HtmlPage.getFormByName() looks at "name" instead)
-    protected HtmlForm getFormById(HtmlPage page, String id) {
-
-        Iterator forms = page.getForms().iterator();
-        while (forms.hasNext()) {
-            HtmlForm form = (HtmlForm) forms.next();
-            if (id.equals(form.getAttributeValue("id"))) {
-                return (form);
-            }
-        }
-        return (null);
-
-    }
-
-
-    /**
-     * <p>Added to compensate for changes in the HtmlUnit 1.4 API.</p>
-     *
-     * @see #getAllElementsOfGivenClass(com.gargoylesoftware.htmlunit.html.HtmlElement, java.util.List, Class)
-     */
-    protected List getAllElementsOfGivenClass(HtmlPage root, List list,
-                                              Class matchClass) {
-
-        return getAllElementsOfGivenClass(root.getDocumentElement(),
-                list,
-                matchClass);
-
-    }
-
-    /**
-     * Depth first search from root to find all children that are
-     * instances of HtmlInput.  Add them to the list.
-     */
-    protected List getAllElementsOfGivenClass(HtmlElement root, List list,
-                                              Class matchClass) {
-        if (null == root) {
-            return list;
-        }
-        if (null == list) {
-            list = new ArrayList();
-        }
-        Iterable<HtmlElement> iterable = root.getAllHtmlChildElements();
-        Iterator<HtmlElement> iter = iterable.iterator();
-        while (iter.hasNext()) {
-            getAllElementsOfGivenClass((HtmlElement) iter.next(), list,
-                    matchClass);
-        }
-        if (matchClass.isInstance(root)) {
-            if (!list.contains(root)) {
-                list.add(root);
-            }
-        }
-        return list;
-    }
-
-    protected HtmlInput getInputContainingGivenId(HtmlPage root,
-                                                  String id) {
-        List list;
-        int i;
-        HtmlInput result = null;
-
-        list = getAllElementsOfGivenClass(root, null, HtmlInput.class);
-        for (i = 0; i < list.size(); i++) {
-            result = (HtmlInput) list.get(i);
-            if (-1 != result.getIdAttribute().indexOf(id)) {
-                break;
-            }
-            result = null;
-        }
-        return result;
-
-    }
-
-    protected HtmlInput getNthInputContainingGivenId(HtmlPage root,
-                                                     String id,
-                                                     int whichInput) {
-        List list;
-        int i, hitCount = 0;
-        HtmlInput result = null;
-
-        list = getAllElementsOfGivenClass(root, null, HtmlInput.class);
-        for (i = 0; i < list.size(); i++) {
-            result = (HtmlInput) list.get(i);
-            if (-1 != result.getIdAttribute().indexOf(id) &&
-                    hitCount++ == whichInput) {
-                break;
-            }
-            result = null;
-        }
-        return result;
-
-    }
-
-    protected HtmlInput getNthFromLastInputContainingGivenId(HtmlPage root,
-                                                             String id,
-                                                             int whichInput) {
-        List list;
-        int i, hitCount = 0;
-        HtmlInput result = null;
-
-        list = getAllElementsOfGivenClass(root, null, HtmlInput.class);
-        for (i = list.size() - 1; i >= 0; i--) {
-            result = (HtmlInput) list.get(i);
-            if (-1 != result.getIdAttribute().indexOf(id) &&
-                    hitCount++ == whichInput) {
-                break;
-            }
-            result = null;
-        }
-        return result;
-
-    }
-
-    protected String getText(String element) {
-        return ((HtmlElement)lastpage.getHtmlElementById(element)).asText();
-    }
-
-    /*
-      Check that the text of the element is equal to the supplied string
-     */
-    protected boolean check(String element, String expected) {
-        return expected.equals(getText(element));
-    }
-
-    protected void checkTrue(String element, String expected) {
-        assertTrue(element+":- Expected '"+expected+"', but received '"+getText(element)+"'", check(element,expected));
-    }
-
-}
diff --git a/jsf-ri/systest/src/com/sun/faces/jsf2jsp/Jsf2JspTestCase.java b/jsf-ri/systest/src/com/sun/faces/jsf2jsp/Jsf2JspTestCase.java
index 34407cb..641a336 100644
--- a/jsf-ri/systest/src/com/sun/faces/jsf2jsp/Jsf2JspTestCase.java
+++ b/jsf-ri/systest/src/com/sun/faces/jsf2jsp/Jsf2JspTestCase.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -34,12 +38,11 @@
  * holder.
  */
 
-
 package com.sun.faces.jsf2jsp;
 
 
 import com.gargoylesoftware.htmlunit.FailingHttpStatusCodeException;
-import com.sun.faces.htmlunit.AbstractTestCase;
+import com.sun.faces.htmlunit.HtmlUnitFacesTestCase;
 import com.gargoylesoftware.htmlunit.html.HtmlPage;
 import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
 import com.sun.faces.jsptest.ValidatorTestCase;
@@ -47,7 +50,7 @@ import junit.framework.Test;
 import junit.framework.TestResult;
 import junit.framework.TestSuite;
 
-public class Jsf2JspTestCase extends AbstractTestCase {
+public class Jsf2JspTestCase extends HtmlUnitFacesTestCase {
 
 
     public Jsf2JspTestCase() {
diff --git a/jsf-ri/systest/src/com/sun/faces/jsptest/CommandLinkMultiFormTestCase.java b/jsf-ri/systest/src/com/sun/faces/jsptest/CommandLinkMultiFormTestCase.java
index 469e0c1..4e39ad6 100644
--- a/jsf-ri/systest/src/com/sun/faces/jsptest/CommandLinkMultiFormTestCase.java
+++ b/jsf-ri/systest/src/com/sun/faces/jsptest/CommandLinkMultiFormTestCase.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -38,7 +42,7 @@ package com.sun.faces.jsptest;
 
 
 import com.gargoylesoftware.htmlunit.html.*;
-import com.sun.faces.htmlunit.AbstractTestCase;
+import com.sun.faces.htmlunit.HtmlUnitFacesTestCase;
 import junit.framework.Test;
 import junit.framework.TestSuite;
 
@@ -49,7 +53,7 @@ import java.util.List;
  * <p>Test Case for JSP Interoperability.</p>
  */
 
-public class CommandLinkMultiFormTestCase extends AbstractTestCase {
+public class CommandLinkMultiFormTestCase extends HtmlUnitFacesTestCase {
 
     // ------------------------------------------------------------ Constructors
 
@@ -61,6 +65,9 @@ public class CommandLinkMultiFormTestCase extends AbstractTestCase {
      */
     public CommandLinkMultiFormTestCase(String name) {
         super(name);
+        addExclusion(Container.TOMCAT6, "testMultiForm");
+        addExclusion(Container.TOMCAT7, "testMultiForm");
+        addExclusion(Container.WLS_10_3_4_NO_CLUSTER, "testMultiForm");
     }
 
     // ------------------------------------------------------ Instance Variables
diff --git a/jsf-ri/systest/src/com/sun/faces/jsptest/CommandLinkNoFormTestCase.java b/jsf-ri/systest/src/com/sun/faces/jsptest/CommandLinkNoFormTestCase.java
deleted file mode 100644
index 91b2be9..0000000
--- a/jsf-ri/systest/src/com/sun/faces/jsptest/CommandLinkNoFormTestCase.java
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package com.sun.faces.jsptest;
-
-import com.gargoylesoftware.htmlunit.html.HtmlPage;
-import com.gargoylesoftware.htmlunit.html.HtmlSpan;
-import com.sun.faces.htmlunit.AbstractTestCase;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-import java.util.List;
-
-/**
- * <p>Verify expected behavior when command link is not enclosed by a form</p>
- */
-
-public class CommandLinkNoFormTestCase extends AbstractTestCase {
-
-    // ------------------------------------------------------------ Constructors
-
-
-    /**
-     * Construct a new instance of this test case.
-     *
-     * @param name Name of the test case
-     */
-    public CommandLinkNoFormTestCase(String name) {
-        super(name);
-    }
-
-    // ------------------------------------------------------ Instance Variables
-
-    // ---------------------------------------------------- Overall Test Methods
-
-
-    /**
-     * Set up instance variables required by this test case.
-     */
-    public void setUp() throws Exception {
-        super.setUp();
-    }
-
-
-    /**
-     * Return the tests included in this test suite.
-     */
-    public static Test suite() {
-        return (new TestSuite(CommandLinkNoFormTestCase.class));
-    }
-
-
-    /**
-     * Tear down instance variables required by this test case.
-     */
-    public void tearDown() {
-        super.tearDown();
-    }
-
-    // ------------------------------------------------------ Instance Variables
-
-    // ------------------------------------------------- Individual Test Methods
-
-    public void testRenderedClinkWithNoForm() throws Exception {
-        String noFormString =
-                ": This link is disabled as it is not nested within a JSF form.";
-        HtmlPage page = getPage("/faces/standard/clinknoform.jsp");
-        List list = getAllElementsOfGivenClass(page, null,
-                HtmlSpan.class);
-
-        HtmlSpan p = (HtmlSpan) list.get(0);
-        assertEquals("Link1" + noFormString, p.asText());
-        p = (HtmlSpan) list.get(1);
-        assertEquals("Link2" + noFormString, p.asText());
-        p = (HtmlSpan) list.get(2);
-        assertEquals("Click me once and click me twice" +
-                noFormString, p.asText());
-    }
-
-
-}
diff --git a/jsf-ri/systest/src/com/sun/faces/jsptest/CommandLinkOnClickTestCase.java b/jsf-ri/systest/src/com/sun/faces/jsptest/CommandLinkOnClickTestCase.java
index e8af787..3b759f8 100644
--- a/jsf-ri/systest/src/com/sun/faces/jsptest/CommandLinkOnClickTestCase.java
+++ b/jsf-ri/systest/src/com/sun/faces/jsptest/CommandLinkOnClickTestCase.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -38,7 +42,7 @@ package com.sun.faces.jsptest;
 
 import com.gargoylesoftware.htmlunit.ElementNotFoundException;
 import com.gargoylesoftware.htmlunit.html.*;
-import com.sun.faces.htmlunit.AbstractTestCase;
+import com.sun.faces.htmlunit.HtmlUnitFacesTestCase;
 import junit.framework.Test;
 import junit.framework.TestSuite;
 
@@ -46,7 +50,7 @@ import junit.framework.TestSuite;
  * <p>Test Case for Multiple RenderKits.</p>
  */
 
-public class CommandLinkOnClickTestCase extends AbstractTestCase {
+public class CommandLinkOnClickTestCase extends HtmlUnitFacesTestCase {
 
     // ------------------------------------------------------------ Constructors
 
diff --git a/jsf-ri/systest/src/com/sun/faces/jsptest/ConverterTestCase.java b/jsf-ri/systest/src/com/sun/faces/jsptest/ConverterTestCase.java
deleted file mode 100644
index 01425f0..0000000
--- a/jsf-ri/systest/src/com/sun/faces/jsptest/ConverterTestCase.java
+++ /dev/null
@@ -1,254 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package com.sun.faces.jsptest;
-
-import com.gargoylesoftware.htmlunit.html.HtmlPage;
-import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
-import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
-import com.sun.faces.htmlunit.AbstractTestCase;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-import java.util.List;
-
-/**
- * <p>Test that invalid values don't cause valueChangeEvents to occur.</p>
- */
-
-public class ConverterTestCase extends AbstractTestCase {
-
-    // ------------------------------------------------------------ Constructors
-
-
-    /**
-     * Construct a new instance of this test case.
-     *
-     * @param name Name of the test case
-     */
-    public ConverterTestCase(String name) {
-        super(name);
-    }
-
-    // ------------------------------------------------------ Instance Variables
-
-    // ---------------------------------------------------- Overall Test Methods
-
-
-    /**
-     * Return the tests included in this test suite.
-     */
-    public static Test suite() {
-        return (new TestSuite(ConverterTestCase.class));
-    }
-
-    // ------------------------------------------------- Individual Test Methods
-    public void testConverter() throws Exception {
-        HtmlPage page = getPage("/faces/converter03.jsp");
-        List list;
-        list = getAllElementsOfGivenClass(page, null,
-                HtmlTextInput.class);
-
-        // set the initial value to be 1 for all input fields
-        ((HtmlTextInput) list.get(0)).setValueAttribute("1111111111");
-        ((HtmlTextInput) list.get(1)).setValueAttribute("1111111111");
-        ((HtmlTextInput) list.get(2)).setValueAttribute("1111111111");
-        ((HtmlTextInput) list.get(3)).setValueAttribute("1111111111");
-        ((HtmlTextInput) list.get(4)).setValueAttribute("99");
-        ((HtmlTextInput) list.get(5)).setValueAttribute("4");
-        ((HtmlTextInput) list.get(6)).setValueAttribute("12");
-        ((HtmlTextInput) list.get(7)).setValueAttribute("7");
-        ((HtmlTextInput) list.get(8)).setValueAttribute("10");
-
-        list = getAllElementsOfGivenClass(page, null,
-                HtmlSubmitInput.class);
-        HtmlSubmitInput button = (HtmlSubmitInput) list.get(0);
-        page = (HtmlPage) button.click();
-        assertTrue(-1 != page.asText().indexOf("text1 was converted to Object"));
-        assertTrue(-1 != page.asText().indexOf("text1 was converted to String"));
-        assertTrue(-1 != page.asText().indexOf("text2 was converted to Object"));
-        assertTrue(-1 != page.asText().indexOf("text2 was converted to String"));
-        assertTrue(-1 != page.asText().indexOf("text3 was converted to Object"));
-        assertTrue(-1 != page.asText().indexOf("text3 was converted to String"));
-        assertTrue(-1 != page.asText().indexOf("text4 was converted to Object"));
-        assertTrue(-1 != page.asText().indexOf("text4 was converted to String"));
-        assertTrue(-1 != page.asText().indexOf("text5: '99' could not be understood as a time. Example:"));
-        assertTrue(-1 != page.asText().indexOf("4.0"));
-        assertTrue(-1 != page.asText().indexOf("12.0"));
-        assertTrue(-1 != page.asText().indexOf("7.0"));
-        assertTrue(-1 != page.asText().indexOf("10"));
-    }
-
-    public void testConverterMessages() throws Exception {
-        HtmlPage page = getPage("/faces/converter04.jsp");
-        List list;
-        list = getAllElementsOfGivenClass(page, null,
-                HtmlTextInput.class);
-
-        // set the initial value to be "aaa" for all input fields
-        for (int i = 0; i < list.size(); i++) {
-            ((HtmlTextInput) list.get(i)).setValueAttribute("aaa");
-        }
-
-        list = getAllElementsOfGivenClass(page, null,
-                HtmlSubmitInput.class);
-        HtmlSubmitInput button = (HtmlSubmitInput) list.get(0);
-        page = (HtmlPage) button.click();
-
-        assertTrue(-1 != page.asText().indexOf("form:bd1: 'aaa' must be a signed decimal number."));
-        assertTrue(-1 != page.asText().indexOf("form:bd1: 'aaa' must be a signed decimal number consisting of zero or more digits, that may be followed by a decimal point and fraction. Example: 198.23"));
-        assertTrue(-1 != page.asText().indexOf("BigDecimal2: 'aaa' must be a signed decimal number."));
-        assertTrue(-1 != page.asText().indexOf("BigDecimal2: 'aaa' must be a signed decimal number consisting of zero or more digits, that may be followed by a decimal point and fraction. Example: 198.23"));
-        assertTrue(-1 != page.asText().indexOf("form:bi1: 'aaa' must be a number consisting of one or more digits."));
-        assertTrue(-1 != page.asText().indexOf("form:bi1: 'aaa' must be a number consisting of one or more digits. Example: 9876"));
-        assertTrue(-1 != page.asText().indexOf("BigInteger2: 'aaa' must be a number consisting of one or more digits."));
-        assertTrue(-1 != page.asText().indexOf("BigInteger2: 'aaa' must be a number consisting of one or more digits. Example: 9876"));
-        assertTrue(-1 != page.asText().indexOf("form:byte1: 'aaa' must be a number between 0 and 255. "));
-        assertTrue(-1 != page.asText().indexOf("form:byte1: 'aaa' must be a number between 0 and 255. Example: 254"));
-        assertTrue(-1 != page.asText().indexOf("Byte2: 'aaa' must be a number between 0 and 255. "));
-        assertTrue(-1 != page.asText().indexOf("Byte2: 'aaa' must be a number between 0 and 255. Example: 254"));
-        assertTrue(-1 != page.asText().indexOf("form:date1: 'aaa' could not be understood as a date."));
-        assertTrue(-1 != page.asText().indexOf("form:date1: 'aaa' could not be understood as a date. Example:"));
-        assertTrue(-1 != page.asText().indexOf("Date2: 'aaa' could not be understood as a date."));
-        assertTrue(-1 != page.asText().indexOf("Date2: 'aaa' could not be understood as a date. Example:"));
-        assertTrue(-1 != page.asText().indexOf("form:time1: 'aaa' could not be understood as a time."));
-        assertTrue(-1 != page.asText().indexOf("form:time1: 'aaa' could not be understood as a time. Example:"));
-        assertTrue(-1 != page.asText().indexOf("Time2: 'aaa' could not be understood as a time."));
-        assertTrue(-1 != page.asText().indexOf("Time2: 'aaa' could not be understood as a time. Example:"));
-        assertTrue(-1 != page.asText().indexOf("form:datetime1: 'aaa' could not be understood as a date and time."));
-        assertTrue(-1 != page.asText().indexOf("form:datetime1: 'aaa' could not be understood as a date and time. Example:"));
-        assertTrue(-1 != page.asText().indexOf("DateTime2: 'aaa' could not be understood as a date and time."));
-        assertTrue(-1 != page.asText().indexOf("DateTime2: 'aaa' could not be understood as a date and time. Example:"));
-        assertTrue(-1 != page.asText().indexOf("form:double1: 'aaa' must be a number consisting of one or more digits."));
-        assertTrue(-1 != page.asText().indexOf("form:double1: 'aaa' must be a number between 4.9E-324 and 1.7976931348623157E308 Example: 1999999"));
-        assertTrue(-1 != page.asText().indexOf("Double2: 'aaa' must be a number consisting of one or more digits."));
-        assertTrue(-1 != page.asText().indexOf("Double2: 'aaa' must be a number between 4.9E-324 and 1.7976931348623157E308 Example: 1999999"));
-        assertTrue(-1 != page.asText().indexOf("form:float1: 'aaa' must be a number between 1.4E-45 and 3.4028235E38 Example: 2000000000"));
-        assertTrue(-1 != page.asText().indexOf("Float2: 'aaa' must be a number consisting of one or more digits."));
-        assertTrue(-1 != page.asText().indexOf("Float2: 'aaa' must be a number between 1.4E-45 and 3.4028235E38 Example: 2000000000"));
-        assertTrue(-1 != page.asText().indexOf("form:integer1: 'aaa' must be a number between -2147483648 and 2147483647 Example: 9346"));
-        assertTrue(-1 != page.asText().indexOf("Integer2: 'aaa' must be a number consisting of one or more digits. "));
-        assertTrue(-1 != page.asText().indexOf("Integer2: 'aaa' must be a number between -2147483648 and 2147483647 Example: 9346"));
-        assertTrue(-1 != page.asText().indexOf("form:long1: 'aaa' must be a number between -9223372036854775808 to 9223372036854775807 Example: 98765432"));
-        assertTrue(-1 != page.asText().indexOf("Long2: 'aaa' must be a number consisting of one or more digits. "));
-        assertTrue(-1 != page.asText().indexOf("Long2: 'aaa' must be a number between -9223372036854775808 to 9223372036854775807 Example: 98765432"));
-        assertTrue(-1 != page.asText().indexOf("form:number1: 'aaa' could not be understood as a currency value."));
-        assertTrue(-1 != page.asText().indexOf("form:number1: 'aaa' could not be understood as a currency value. Example: $99.99"));
-        assertTrue(-1 != page.asText().indexOf("Number2: 'aaa' could not be understood as a currency value."));
-        assertTrue(-1 != page.asText().indexOf("Number2: 'aaa' could not be understood as a currency value. Example: $99.99"));
-        assertTrue(-1 != page.asText().indexOf("form:number3: 'aaa' is not a number."));
-        assertTrue(-1 != page.asText().indexOf("form:number3: 'aaa' is not a number. Example: 99"));
-        assertTrue(-1 != page.asText().indexOf("Number4: 'aaa' is not a number."));
-        assertTrue(-1 != page.asText().indexOf("Number4: 'aaa' is not a number. Example: 99"));
-        assertTrue(-1 != page.asText().indexOf("form:number5: 'aaa' could not be understood as a percentage."));
-        assertTrue(-1 != page.asText().indexOf("form:number5: 'aaa' could not be understood as a percentage. Example: 75%"));
-        assertTrue(-1 != page.asText().indexOf("Number6: 'aaa' could not be understood as a percentage."));
-        assertTrue(-1 != page.asText().indexOf("Number6: 'aaa' could not be understood as a percentage. Example: 75%"));
-        assertTrue(-1 != page.asText().indexOf("form:number7: 'aaa' is not a number pattern."));
-        assertTrue(-1 != page.asText().indexOf("form:number7: 'aaa' is not a number pattern. Example: #,##0.0#"));
-        assertTrue(-1 != page.asText().indexOf("Number8: 'aaa' is not a number pattern."));
-        assertTrue(-1 != page.asText().indexOf("Number8: 'aaa' is not a number pattern. Example: #,##0.0#"));
-        assertTrue(-1 != page.asText().indexOf("form:short1: 'aaa' must be a number between -32768 and 32767 Example: 32456"));
-        assertTrue(-1 != page.asText().indexOf("Short2: 'aaa' must be a number consisting of one or more digits. "));
-        assertTrue(-1 != page.asText().indexOf("Short2: 'aaa' must be a number between -32768 and 32767 Example: 32456"));
-    }
-
-    public void testEnumConverter() throws Exception {
-        HtmlPage page = getPage("/faces/enum-converter.jsp");
-        List list;
-
-        // Case 0, invalid data in both text fields
-        list = getAllElementsOfGivenClass(page, null,
-                HtmlTextInput.class);
-        for (int i = 0; i < list.size(); i++) {
-            ((HtmlTextInput) list.get(i)).setValueAttribute("aoeuoeuoe");
-        }
-
-        list = getAllElementsOfGivenClass(page, null,
-                HtmlSubmitInput.class);
-        HtmlSubmitInput button = (HtmlSubmitInput) list.get(0);
-        page = (HtmlPage) button.click();
-
-        assertTrue(-1 != page.asText().indexOf("suit: 'aoeuoeuoe' must be convertible to an enum. suit: 'aoeuoeuoe' must be convertible to an enum from the enum that contains the constant 'aoeuoeuoe'."));
-        assertTrue(-1 != page.asText().indexOf("color: 'aoeuoeuoe' must be convertible to an enum. color: 'aoeuoeuoe' must be convertible to an enum from the enum that contains the constant 'aoeuoeuoe'."));
-
-        // Case 1, valid Suit, invalid color
-        list = getAllElementsOfGivenClass(page, null,
-                HtmlTextInput.class);
-        ((HtmlTextInput) list.get(0)).setValueAttribute("Hearts");
-
-        list = getAllElementsOfGivenClass(page, null,
-                HtmlSubmitInput.class);
-        button = (HtmlSubmitInput) list.get(0);
-        page = (HtmlPage) button.click();
-
-        assertTrue(-1 == page.asText().indexOf("suit:"));
-        assertTrue(-1 != page.asText().indexOf("color: 'aoeuoeuoe' must be convertible to an enum. color: 'aoeuoeuoe' must be convertible to an enum from the enum that contains the constant 'aoeuoeuoe'."));
-
-        // Case 2, valid Suit, valid color
-        list = getAllElementsOfGivenClass(page, null,
-                HtmlTextInput.class);
-        ((HtmlTextInput) list.get(1)).setValueAttribute("Blue");
-
-        list = getAllElementsOfGivenClass(page, null,
-                HtmlSubmitInput.class);
-        button = (HtmlSubmitInput) list.get(0);
-        page = (HtmlPage) button.click();
-
-        assertTrue(-1 == page.asText().indexOf("suit:"));
-        assertTrue(-1 == page.asText().indexOf("color:"));
-
-        list = getAllElementsOfGivenClass(page, null,
-                HtmlSubmitInput.class);
-        button = (HtmlSubmitInput) list.get(0);
-        page = (HtmlPage) button.click();
-
-        // Case 3, invalid suit, valid color
-        list = getAllElementsOfGivenClass(page, null,
-                HtmlTextInput.class);
-        ((HtmlTextInput) list.get(0)).setValueAttribute("aoeuoeuoe");
-
-        list = getAllElementsOfGivenClass(page, null,
-                HtmlSubmitInput.class);
-        button = (HtmlSubmitInput) list.get(0);
-        page = (HtmlPage) button.click();
-
-        assertTrue(-1 != page.asText().indexOf("suit: 'aoeuoeuoe' must be convertible to an enum. suit: 'aoeuoeuoe' must be convertible to an enum from the enum that contains the constant 'aoeuoeuoe'."));
-        assertTrue(-1 == page.asText().indexOf("color:"));
-
-
-    }
-}
diff --git a/jsf-ri/systest/src/com/sun/faces/jsptest/ForEachTestCase.java b/jsf-ri/systest/src/com/sun/faces/jsptest/ForEachTestCase.java
index 815fc16..ebf02df 100644
--- a/jsf-ri/systest/src/com/sun/faces/jsptest/ForEachTestCase.java
+++ b/jsf-ri/systest/src/com/sun/faces/jsptest/ForEachTestCase.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -40,7 +44,7 @@ import com.gargoylesoftware.htmlunit.html.HtmlPage;
 import com.gargoylesoftware.htmlunit.html.HtmlSpan;
 import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
 import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
-import com.sun.faces.htmlunit.AbstractTestCase;
+import com.sun.faces.htmlunit.HtmlUnitFacesTestCase;
 import junit.framework.Test;
 import junit.framework.TestSuite;
 
@@ -51,7 +55,7 @@ import java.util.List;
  * <p>Test that invalid values don't cause valueChangeEvents to occur.</p>
  */
 
-public class ForEachTestCase extends AbstractTestCase {
+public class ForEachTestCase extends HtmlUnitFacesTestCase {
 
     // ------------------------------------------------------------ Constructors
 
@@ -63,6 +67,11 @@ public class ForEachTestCase extends AbstractTestCase {
      */
     public ForEachTestCase(String name) {
         super(name);
+
+        // TODO this test would actually work if the client IDs were adapted for execution on tomcat
+        addExclusion(Container.TOMCAT6, "testForEachIssue714");
+        addExclusion(Container.TOMCAT7, "testForEachIssue714");
+        addExclusion(Container.WLS_10_3_4_NO_CLUSTER, "testForEachIssue714");
     }
 
     // ------------------------------------------------------ Instance Variables
@@ -146,9 +155,9 @@ public class ForEachTestCase extends AbstractTestCase {
         getAllElementsOfGivenClass(page, spans, HtmlSpan.class);
         assertTrue(spans.size() == 2);
         HtmlSpan span = spans.get(0);
-        assertTrue("j_id_id16:idfrag1:frag1".equals(span.getIdAttribute()));
+        assertTrue(span.getIdAttribute().matches(".*:idfrag1:frag1"));
         span = spans.get(1);
-        assertTrue("j_id_id16:idfrag2:frag2".equals(span.getIdAttribute()));
+        assertTrue(span.getIdAttribute().matches(".*:idfrag2:frag2"));
 
         // submit the form to ensure no duplicate ID exceptions are
         // raised during post-back
@@ -163,9 +172,9 @@ public class ForEachTestCase extends AbstractTestCase {
         getAllElementsOfGivenClass(page, spans, HtmlSpan.class);
         assertTrue(spans.size() == 2);
         span = spans.get(0);
-        assertTrue("j_id_id16:idfrag1:frag1".equals(span.getIdAttribute()));
+        assertTrue(span.getIdAttribute().matches(".*:idfrag1:frag1"));
         span = spans.get(1);
-        assertTrue("j_id_id16:idfrag2:frag2".equals(span.getIdAttribute()));
+        assertTrue(span.getIdAttribute().matches(".*:idfrag2:frag2"));
 
     }
 
diff --git a/jsf-ri/systest/src/com/sun/faces/jsptest/FormElTestCase.java b/jsf-ri/systest/src/com/sun/faces/jsptest/FormElTestCase.java
deleted file mode 100644
index 1ccb5ef..0000000
--- a/jsf-ri/systest/src/com/sun/faces/jsptest/FormElTestCase.java
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package com.sun.faces.jsptest;
-
-
-import com.gargoylesoftware.htmlunit.html.HtmlForm;
-import com.gargoylesoftware.htmlunit.html.HtmlPage;
-import com.sun.faces.htmlunit.AbstractTestCase;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-import java.util.List;
-
-
-/**
- * <p>Verify that we have an intelligent error message when the user
- * forgets the view tag.</p>
- */
-
-public class FormElTestCase extends AbstractTestCase {
-
-    // ------------------------------------------------------------ Constructors
-
-
-    /**
-     * Construct a new instance of this test case.
-     *
-     * @param name Name of the test case
-     */
-    public FormElTestCase(String name) {
-        super(name);
-    }
-
-    // ------------------------------------------------------ Instance Variables
-
-    // ---------------------------------------------------- Overall Test Methods
-
-
-    /**
-     * Set up instance variables required by this test case.
-     */
-    public void setUp() throws Exception {
-        super.setUp();
-    }
-
-
-    /**
-     * Return the tests included in this test suite.
-     */
-    public static Test suite() {
-        return (new TestSuite(FormElTestCase.class));
-    }
-
-
-    /**
-     * Tear down instance variables required by this test case.
-     */
-    public void tearDown() {
-        super.tearDown();
-    }
-
-    // ------------------------------------------------------ Instance Variables
-
-    // ------------------------------------------------- Individual Test Methods
-
-    public void testFormEnctype() throws Exception {
-        client.setThrowExceptionOnFailingStatusCode(false);
-        HtmlPage page = getPage("/faces/jsp/formEl.jsp");
-        List forms = page.getForms();
-        assertEquals("multipart/form-data", ((HtmlForm) forms.get(0)).getEnctypeAttribute());
-        assertEquals("application/x-www-form-urlencoded", ((HtmlForm) forms.get(1)).getEnctypeAttribute());
-        assertEquals("hi", ((HtmlForm) forms.get(2)).getEnctypeAttribute());
-        assertEquals("multipart/form-data", ((HtmlForm) forms.get(3)).getEnctypeAttribute());
-    }
-
-}
diff --git a/jsf-ri/systest/src/com/sun/faces/jsptest/FormInputTestCase.java b/jsf-ri/systest/src/com/sun/faces/jsptest/FormInputTestCase.java
index 1d9da89..b21b766 100644
--- a/jsf-ri/systest/src/com/sun/faces/jsptest/FormInputTestCase.java
+++ b/jsf-ri/systest/src/com/sun/faces/jsptest/FormInputTestCase.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -41,7 +45,7 @@ import com.gargoylesoftware.htmlunit.html.HtmlForm;
 import com.gargoylesoftware.htmlunit.html.HtmlPage;
 import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
 import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
-import com.sun.faces.htmlunit.AbstractTestCase;
+import com.sun.faces.htmlunit.HtmlUnitFacesTestCase;
 import junit.framework.Test;
 import junit.framework.TestSuite;
 
@@ -52,7 +56,7 @@ import javax.faces.component.NamingContainer;
  * <p>Test Case for Form Input.</p>
  */
 
-public class FormInputTestCase extends AbstractTestCase {
+public class FormInputTestCase extends HtmlUnitFacesTestCase {
 
     // ------------------------------------------------------------ Constructors
 
diff --git a/jsf-ri/systest/src/com/sun/faces/jsptest/IdRefTestCase.java b/jsf-ri/systest/src/com/sun/faces/jsptest/IdRefTestCase.java
index 0a4731e..5baa7e5 100644
--- a/jsf-ri/systest/src/com/sun/faces/jsptest/IdRefTestCase.java
+++ b/jsf-ri/systest/src/com/sun/faces/jsptest/IdRefTestCase.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -37,7 +41,7 @@
 package com.sun.faces.jsptest;
 
 import com.gargoylesoftware.htmlunit.html.*;
-import com.sun.faces.htmlunit.AbstractTestCase;
+import com.sun.faces.htmlunit.HtmlUnitFacesTestCase;
 import junit.framework.Test;
 import junit.framework.TestSuite;
 
@@ -50,7 +54,7 @@ import java.util.*;
  * </p>
  */
 
-public class IdRefTestCase extends AbstractTestCase {
+public class IdRefTestCase extends HtmlUnitFacesTestCase {
 
     // ------------------------------------------------------------
     // Constructors
@@ -62,6 +66,12 @@ public class IdRefTestCase extends AbstractTestCase {
      */
     public IdRefTestCase(String name) {
         super(name);
+        addExclusion(Container.TOMCAT6, "testIdRefs");
+        addExclusion(Container.TOMCAT7, "testIdRefs");
+        addExclusion(Container.WLS_10_3_4_NO_CLUSTER, "testIdRefs");
+        addExclusion(Container.TOMCAT6, "testIncludedLoopIdRefs");
+        addExclusion(Container.TOMCAT7, "testIncludedLoopIdRefs");
+        addExclusion(Container.WLS_10_3_4_NO_CLUSTER, "testIncludedLoopIdRefs");
     }
 
     // ----------------------------------------------------
@@ -199,4 +209,4 @@ public class IdRefTestCase extends AbstractTestCase {
                 .containsAll(Arrays.asList(testIds)));
     }
 
-}
\ No newline at end of file
+}
diff --git a/jsf-ri/systest/src/com/sun/faces/jsptest/InvalidateSessionTestCase.java b/jsf-ri/systest/src/com/sun/faces/jsptest/InvalidateSessionTestCase.java
index 7c59cde..5af30dc 100644
--- a/jsf-ri/systest/src/com/sun/faces/jsptest/InvalidateSessionTestCase.java
+++ b/jsf-ri/systest/src/com/sun/faces/jsptest/InvalidateSessionTestCase.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -38,7 +42,7 @@ package com.sun.faces.jsptest;
 
 
 import com.gargoylesoftware.htmlunit.html.*;
-import com.sun.faces.htmlunit.AbstractTestCase;
+import com.sun.faces.htmlunit.HtmlUnitFacesTestCase;
 import junit.framework.Test;
 import junit.framework.TestSuite;
 
@@ -49,7 +53,7 @@ import javax.faces.component.NamingContainer;
  * <p>Test Case for JSP Interoperability.</p>
  */
 
-public class InvalidateSessionTestCase extends AbstractTestCase {
+public class InvalidateSessionTestCase extends HtmlUnitFacesTestCase {
 
     // ------------------------------------------------------------ Constructors
 
diff --git a/jsf-ri/systest/src/com/sun/faces/jsptest/JspIntegrationTestCase.java b/jsf-ri/systest/src/com/sun/faces/jsptest/JspIntegrationTestCase.java
index 935a29b..ae3d121 100644
--- a/jsf-ri/systest/src/com/sun/faces/jsptest/JspIntegrationTestCase.java
+++ b/jsf-ri/systest/src/com/sun/faces/jsptest/JspIntegrationTestCase.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -39,7 +43,7 @@ package com.sun.faces.jsptest;
 
 import com.gargoylesoftware.htmlunit.WebClient;
 import com.gargoylesoftware.htmlunit.html.HtmlPage;
-import com.sun.faces.htmlunit.AbstractTestCase;
+import com.sun.faces.htmlunit.HtmlUnitFacesTestCase;
 import junit.framework.Test;
 import junit.framework.TestSuite;
 
@@ -48,7 +52,7 @@ import junit.framework.TestSuite;
  * <p>Test Case for JSP Interoperability.</p>
  */
 
-public class JspIntegrationTestCase extends AbstractTestCase {
+public class JspIntegrationTestCase extends HtmlUnitFacesTestCase {
 
     // ------------------------------------------------------------ Constructors
 
diff --git a/jsf-ri/systest/src/com/sun/faces/jsptest/JstlIntegrationTestCase.java b/jsf-ri/systest/src/com/sun/faces/jsptest/JstlIntegrationTestCase.java
index b8ab09f..b432c63 100644
--- a/jsf-ri/systest/src/com/sun/faces/jsptest/JstlIntegrationTestCase.java
+++ b/jsf-ri/systest/src/com/sun/faces/jsptest/JstlIntegrationTestCase.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -40,7 +44,7 @@ package com.sun.faces.jsptest;
 import com.gargoylesoftware.htmlunit.html.HtmlForm;
 import com.gargoylesoftware.htmlunit.html.HtmlPage;
 import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
-import com.sun.faces.htmlunit.AbstractTestCase;
+import com.sun.faces.htmlunit.HtmlUnitFacesTestCase;
 import junit.framework.Test;
 import junit.framework.TestSuite;
 
@@ -51,7 +55,7 @@ import javax.faces.component.NamingContainer;
  * <p>Test Case for JSTL Interoperability.</p>
  */
 
-public class JstlIntegrationTestCase extends AbstractTestCase {
+public class JstlIntegrationTestCase extends HtmlUnitFacesTestCase {
 
     // ------------------------------------------------------------ Constructors
 
diff --git a/jsf-ri/systest/src/com/sun/faces/jsptest/ListenerTestCase.java b/jsf-ri/systest/src/com/sun/faces/jsptest/ListenerTestCase.java
old mode 100644
new mode 100755
index da4c031..2662206
--- a/jsf-ri/systest/src/com/sun/faces/jsptest/ListenerTestCase.java
+++ b/jsf-ri/systest/src/com/sun/faces/jsptest/ListenerTestCase.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -39,7 +43,7 @@ package com.sun.faces.jsptest;
 import com.gargoylesoftware.htmlunit.html.HtmlPage;
 import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
 import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
-import com.sun.faces.htmlunit.AbstractTestCase;
+import com.sun.faces.htmlunit.HtmlUnitFacesTestCase;
 import junit.framework.Test;
 import junit.framework.TestSuite;
 
@@ -49,7 +53,7 @@ import java.util.List;
  * <p>Test that invalid values don't cause valueChangeEvents to occur.</p>
  */
 
-public class ListenerTestCase extends AbstractTestCase {
+public class ListenerTestCase extends HtmlUnitFacesTestCase {
 
     // ------------------------------------------------------------ Constructors
 
diff --git a/jsf-ri/systest/src/com/sun/faces/jsptest/LocaleTestCase.java b/jsf-ri/systest/src/com/sun/faces/jsptest/LocaleTestCase.java
index 7270c54..abed9b2 100644
--- a/jsf-ri/systest/src/com/sun/faces/jsptest/LocaleTestCase.java
+++ b/jsf-ri/systest/src/com/sun/faces/jsptest/LocaleTestCase.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -38,7 +42,7 @@ package com.sun.faces.jsptest;
 
 
 import com.gargoylesoftware.htmlunit.html.HtmlPage;
-import com.sun.faces.htmlunit.AbstractTestCase;
+import com.sun.faces.htmlunit.HtmlUnitFacesTestCase;
 import junit.framework.Test;
 import junit.framework.TestSuite;
 
@@ -47,7 +51,7 @@ import junit.framework.TestSuite;
  * <p>Test Case for JSP Interoperability.</p>
  */
 
-public class LocaleTestCase extends AbstractTestCase {
+public class LocaleTestCase extends HtmlUnitFacesTestCase {
 
     // ------------------------------------------------------------ Constructors
 
diff --git a/jsf-ri/systest/src/com/sun/faces/jsptest/MissingActionListenerMethodTestCase.java b/jsf-ri/systest/src/com/sun/faces/jsptest/MissingActionListenerMethodTestCase.java
deleted file mode 100644
index dbbd4d8..0000000
--- a/jsf-ri/systest/src/com/sun/faces/jsptest/MissingActionListenerMethodTestCase.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package com.sun.faces.jsptest;
-
-
-import com.gargoylesoftware.htmlunit.html.HtmlPage;
-import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
-import com.sun.faces.htmlunit.AbstractTestCase;
-import junit.framework.Assert;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-
-/**
- * @author Jason Lee
- */
-
-public class MissingActionListenerMethodTestCase extends AbstractTestCase {
-    // ------------------------------------------------------------ Constructors
-    /**
-     * Construct a new instance of this test case.
-     *
-     * @param name Name of the test case
-     */
-    public MissingActionListenerMethodTestCase(String name) {
-        super(name);
-    }
-
-    /**
-     * Return the tests included in this test suite.
-     */
-    public static Test suite() {
-        return (new TestSuite(MissingActionListenerMethodTestCase.class));
-    }
-
-    // ------------------------------------------------- Individual Test Methods
-
-    public void testMissingActionListenerMethod() throws Exception {
-        HtmlPage page = getPage("/faces/jsp/testMissingActionListenerMethod.jsp");
-        HtmlSubmitInput button = (HtmlSubmitInput) page.getHtmlElementById("testForm:testButton");
-        try {
-            button.click();
-        } catch (Exception e) {
-            Assert.fail();
-        }
-    }
-}
\ No newline at end of file
diff --git a/jsf-ri/systest/src/com/sun/faces/jsptest/MissingViewTestCase.java b/jsf-ri/systest/src/com/sun/faces/jsptest/MissingViewTestCase.java
index e8fd4c6..383fb69 100644
--- a/jsf-ri/systest/src/com/sun/faces/jsptest/MissingViewTestCase.java
+++ b/jsf-ri/systest/src/com/sun/faces/jsptest/MissingViewTestCase.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -38,7 +42,7 @@ package com.sun.faces.jsptest;
 
 
 import com.gargoylesoftware.htmlunit.html.HtmlPage;
-import com.sun.faces.htmlunit.AbstractTestCase;
+import com.sun.faces.htmlunit.HtmlUnitFacesTestCase;
 import junit.framework.Test;
 import junit.framework.TestSuite;
 
@@ -48,7 +52,7 @@ import junit.framework.TestSuite;
  * forgets the view tag.</p>
  */
 
-public class MissingViewTestCase extends AbstractTestCase {
+public class MissingViewTestCase extends HtmlUnitFacesTestCase {
 
     // ------------------------------------------------------------ Constructors
 
diff --git a/jsf-ri/systest/src/com/sun/faces/jsptest/PrependIdTestCase.java b/jsf-ri/systest/src/com/sun/faces/jsptest/PrependIdTestCase.java
index 9834897..46b776d 100644
--- a/jsf-ri/systest/src/com/sun/faces/jsptest/PrependIdTestCase.java
+++ b/jsf-ri/systest/src/com/sun/faces/jsptest/PrependIdTestCase.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -38,7 +42,7 @@ package com.sun.faces.jsptest;
 
 
 import com.gargoylesoftware.htmlunit.html.HtmlPage;
-import com.sun.faces.htmlunit.AbstractTestCase;
+import com.sun.faces.htmlunit.HtmlUnitFacesTestCase;
 import junit.framework.Test;
 import junit.framework.TestSuite;
 
@@ -48,7 +52,7 @@ import junit.framework.TestSuite;
  * forgets the view tag.</p>
  */
 
-public class PrependIdTestCase extends AbstractTestCase {
+public class PrependIdTestCase extends HtmlUnitFacesTestCase {
 
     // ------------------------------------------------------------ Constructors
 
@@ -109,14 +113,14 @@ public class PrependIdTestCase extends AbstractTestCase {
         assertTrue(-1 != pageText.indexOf("span id=\"form6:case2prependIdUnspecified\""));
 
         // Auto-generated ids with prependId literal
-        assertTrue(-1 != pageText.indexOf("input value=\"prependIdFalse\" type=\"text\" name=\"j_id_id54\""));
-        assertTrue(-1 != pageText.indexOf("input value=\"prependIdTrue\" type=\"text\" name=\"j_id_id57:j_id_id59\""));
-        assertTrue(-1 != pageText.indexOf("input value=\"prependIdUnspecified\" type=\"text\" name=\"j_id_id62:j_id_id64\""));
+        assertTrue(-1 != pageText.indexOf("input value=\"prependIdFalse\" type=\"text\" name="));
+        assertTrue(-1 != pageText.indexOf("input value=\"prependIdTrue\" type=\"text\" name="));
+        assertTrue(-1 != pageText.indexOf("input value=\"prependIdUnspecified\" type=\"text\" name="));
 
         // Auto-generated ids with prependId from expression
-        assertTrue(-1 != pageText.indexOf("input value=\"prependIdFalse\" type=\"text\" name=\"j_id_id71\""));
-        assertTrue(-1 != pageText.indexOf("input value=\"prependIdTrue\" type=\"text\" name=\"j_id_id74:j_id_id76\""));
-        assertTrue(-1 != pageText.indexOf("input value=\"prependIdUnspecified\" type=\"text\" name=\"j_id_id79:j_id_id81\""));
+        assertTrue(-1 != pageText.indexOf("input value=\"prependIdFalse\" type=\"text\" name="));
+        assertTrue(-1 != pageText.indexOf("input value=\"prependIdTrue\" type=\"text\" name="));
+        assertTrue(-1 != pageText.indexOf("input value=\"prependIdUnspecified\" type=\"text\" name="));
 
     }
 
diff --git a/jsf-ri/systest/src/com/sun/faces/jsptest/SelectComponentValueTestCase.java b/jsf-ri/systest/src/com/sun/faces/jsptest/SelectComponentValueTestCase.java
index 19516cd..7815e85 100644
--- a/jsf-ri/systest/src/com/sun/faces/jsptest/SelectComponentValueTestCase.java
+++ b/jsf-ri/systest/src/com/sun/faces/jsptest/SelectComponentValueTestCase.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -41,7 +45,7 @@ import com.gargoylesoftware.htmlunit.html.HtmlPage;
 import com.gargoylesoftware.htmlunit.html.HtmlRadioButtonInput;
 import com.gargoylesoftware.htmlunit.html.HtmlSelect;
 import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
-import com.sun.faces.htmlunit.AbstractTestCase;
+import com.sun.faces.htmlunit.HtmlUnitFacesTestCase;
 import junit.framework.Test;
 import junit.framework.TestSuite;
 
@@ -54,7 +58,7 @@ import java.util.ResourceBundle;
  * <p>Verify that required validation occurrs for Select* components.</p>
  */
 
-public class SelectComponentValueTestCase extends AbstractTestCase {
+public class SelectComponentValueTestCase extends HtmlUnitFacesTestCase {
 
     // ------------------------------------------------------------ Constructors
 
diff --git a/jsf-ri/systest/src/com/sun/faces/jsptest/SelectItemEscapeTestCase.java b/jsf-ri/systest/src/com/sun/faces/jsptest/SelectItemEscapeTestCase.java
index f43e0af..1b357bd 100644
--- a/jsf-ri/systest/src/com/sun/faces/jsptest/SelectItemEscapeTestCase.java
+++ b/jsf-ri/systest/src/com/sun/faces/jsptest/SelectItemEscapeTestCase.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -38,7 +42,7 @@ package com.sun.faces.jsptest;
 
 
 import com.gargoylesoftware.htmlunit.html.HtmlPage;
-import com.sun.faces.htmlunit.AbstractTestCase;
+import com.sun.faces.htmlunit.HtmlUnitFacesTestCase;
 import junit.framework.Test;
 import junit.framework.TestSuite;
 
@@ -47,7 +51,7 @@ import junit.framework.TestSuite;
  * <p>Verify that required validation occurrs for Select* components.</p>
  */
 
-public class SelectItemEscapeTestCase extends AbstractTestCase {
+public class SelectItemEscapeTestCase extends HtmlUnitFacesTestCase {
 
     // ------------------------------------------------------------ Constructors
 
diff --git a/jsf-ri/systest/src/com/sun/faces/jsptest/SelectManyMultiFormTestCase.java b/jsf-ri/systest/src/com/sun/faces/jsptest/SelectManyMultiFormTestCase.java
index 901e359..9389eec 100644
--- a/jsf-ri/systest/src/com/sun/faces/jsptest/SelectManyMultiFormTestCase.java
+++ b/jsf-ri/systest/src/com/sun/faces/jsptest/SelectManyMultiFormTestCase.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -38,7 +42,7 @@ package com.sun.faces.jsptest;
 
 
 import com.gargoylesoftware.htmlunit.html.*;
-import com.sun.faces.htmlunit.AbstractTestCase;
+import com.sun.faces.htmlunit.HtmlUnitFacesTestCase;
 import junit.framework.Test;
 import junit.framework.TestSuite;
 
@@ -49,7 +53,7 @@ import javax.faces.component.NamingContainer;
  * <p>Test Case for JSP Interoperability.</p>
  */
 
-public class SelectManyMultiFormTestCase extends AbstractTestCase {
+public class SelectManyMultiFormTestCase extends HtmlUnitFacesTestCase {
 
     // ------------------------------------------------------------ Constructors
 
diff --git a/jsf-ri/systest/src/com/sun/faces/jsptest/SetPropertyTestCase.java b/jsf-ri/systest/src/com/sun/faces/jsptest/SetPropertyTestCase.java
deleted file mode 100644
index c838dc7..0000000
--- a/jsf-ri/systest/src/com/sun/faces/jsptest/SetPropertyTestCase.java
+++ /dev/null
@@ -1,133 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package com.sun.faces.jsptest;
-
-import com.gargoylesoftware.htmlunit.html.HtmlPage;
-import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
-import com.sun.faces.htmlunit.AbstractTestCase;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-import java.util.ArrayList;
-import java.util.List;
-
-
-/**
- * <p>Test Case for f:setProperty.</p>
- */
-
-public class SetPropertyTestCase extends AbstractTestCase {
-
-    // ------------------------------------------------------------ Constructors
-
-
-    /**
-     * Construct a new instance of this test case.
-     *
-     * @param name Name of the test case
-     */
-    public SetPropertyTestCase(String name) {
-        super(name);
-    }
-
-    // ------------------------------------------------------ Instance Variables
-
-    // ---------------------------------------------------- Overall Test Methods
-
-
-    /**
-     * Set up instance variables required by this test case.
-     */
-    public void setUp() throws Exception {
-        super.setUp();
-    }
-
-
-    /**
-     * Return the tests included in this test suite.
-     */
-    public static Test suite() {
-        return (new TestSuite(SetPropertyTestCase.class));
-    }
-
-
-    /**
-     * Tear down instance variables required by this test case.
-     */
-    public void tearDown() {
-        super.tearDown();
-    }
-
-    // ------------------------------------------------- Individual Test Methods
-
-    public void testSetPropertyPositive() throws Exception {
-        HtmlPage page = getPage("/faces/jsp/jsp-setProperty-01.jsp");
-
-        // press the button to increment the property
-        assertTrue(page.asText().contains("Integer Property is: 123."));
-        assertTrue(page
-                .asText().contains("String Property is: This is a String property."));
-        List buttons = getAllElementsOfGivenClass(page, new ArrayList(),
-                HtmlSubmitInput.class);
-        page = (HtmlPage) ((HtmlSubmitInput) buttons.get(0)).click();
-        assertTrue(page.asText().contains("Integer Property is: 100."));
-        assertTrue(page
-                .asText().contains("String Property is: This is a String property."));
-
-        buttons = getAllElementsOfGivenClass(page, new ArrayList(),
-                HtmlSubmitInput.class);
-        page = (HtmlPage) ((HtmlSubmitInput) buttons.get(1)).click();
-        assertTrue(page.asText().contains("Integer Property is: 100."));
-        assertTrue(page.asText().contains("String Property is: 100."));
-
-        buttons = getAllElementsOfGivenClass(page, new ArrayList(),
-                HtmlSubmitInput.class);
-        page = (HtmlPage) ((HtmlSubmitInput) buttons.get(2)).click();
-        assertTrue(page.asText().contains("Integer Property is: 100."));
-        assertTrue(page.asText().contains("String Property is: String."));
-
-        buttons = getAllElementsOfGivenClass(page, new ArrayList(),
-                HtmlSubmitInput.class);
-        page = (HtmlPage) ((HtmlSubmitInput) buttons.get(3)).click();
-        assertTrue(page.asText().contains("Integer Property is: 100."));
-        assertTrue(page
-                .asText().contains("String Property is: com.sun.faces.context.FacesContextImpl"));
-
-    }
-
-
-}
diff --git a/jsf-ri/systest/src/com/sun/faces/jsptest/TagIvarTestCase.java b/jsf-ri/systest/src/com/sun/faces/jsptest/TagIvarTestCase.java
index 6adb6dc..cdf7653 100644
--- a/jsf-ri/systest/src/com/sun/faces/jsptest/TagIvarTestCase.java
+++ b/jsf-ri/systest/src/com/sun/faces/jsptest/TagIvarTestCase.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -38,7 +42,7 @@ package com.sun.faces.jsptest;
 
 
 import com.gargoylesoftware.htmlunit.html.HtmlPage;
-import com.sun.faces.htmlunit.AbstractTestCase;
+import com.sun.faces.htmlunit.HtmlUnitFacesTestCase;
 import junit.framework.Test;
 import junit.framework.TestSuite;
 
@@ -47,7 +51,7 @@ import junit.framework.TestSuite;
  * <p>Test Case for JSP Interoperability.</p>
  */
 
-public class TagIvarTestCase extends AbstractTestCase {
+public class TagIvarTestCase extends HtmlUnitFacesTestCase {
 
     // ------------------------------------------------------------ Constructors
 
diff --git a/jsf-ri/systest/src/com/sun/faces/jsptest/TlvTestCase.java b/jsf-ri/systest/src/com/sun/faces/jsptest/TlvTestCase.java
index 736d814..2f2084c 100644
--- a/jsf-ri/systest/src/com/sun/faces/jsptest/TlvTestCase.java
+++ b/jsf-ri/systest/src/com/sun/faces/jsptest/TlvTestCase.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -39,7 +43,7 @@ package com.sun.faces.jsptest;
 
 import com.gargoylesoftware.htmlunit.html.HtmlPage;
 import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
-import com.sun.faces.htmlunit.AbstractTestCase;
+import com.sun.faces.htmlunit.HtmlUnitFacesTestCase;
 import junit.framework.Test;
 import junit.framework.TestSuite;
 
@@ -50,7 +54,7 @@ import java.util.List;
  * <p>Verify that required validation occurrs for Select* components.</p>
  */
 
-public class TlvTestCase extends AbstractTestCase {
+public class TlvTestCase extends HtmlUnitFacesTestCase {
 
     // ------------------------------------------------------------ Constructors
 
diff --git a/jsf-ri/systest/src/com/sun/faces/jsptest/ValidatorTestCase.java b/jsf-ri/systest/src/com/sun/faces/jsptest/ValidatorTestCase.java
old mode 100644
new mode 100755
index ccd87ad..71b1bc3
--- a/jsf-ri/systest/src/com/sun/faces/jsptest/ValidatorTestCase.java
+++ b/jsf-ri/systest/src/com/sun/faces/jsptest/ValidatorTestCase.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -39,7 +43,7 @@ package com.sun.faces.jsptest;
 import com.gargoylesoftware.htmlunit.html.HtmlPage;
 import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
 import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
-import com.sun.faces.htmlunit.AbstractTestCase;
+import com.sun.faces.htmlunit.HtmlUnitFacesTestCase;
 import junit.framework.Test;
 import junit.framework.TestSuite;
 
@@ -49,7 +53,7 @@ import java.util.List;
  * <p>Test that invalid values don't cause valueChangeEvents to occur.</p>
  */
 
-public class ValidatorTestCase extends AbstractTestCase {
+public class ValidatorTestCase extends HtmlUnitFacesTestCase {
 
     // ------------------------------------------------------------ Constructors
 
diff --git a/jsf-ri/systest/src/com/sun/faces/jsptest/ValueChangeListenerTestCase.java b/jsf-ri/systest/src/com/sun/faces/jsptest/ValueChangeListenerTestCase.java
deleted file mode 100644
index f8a77a7..0000000
--- a/jsf-ri/systest/src/com/sun/faces/jsptest/ValueChangeListenerTestCase.java
+++ /dev/null
@@ -1,200 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package com.sun.faces.jsptest;
-
-import com.gargoylesoftware.htmlunit.html.*;
-import com.sun.faces.htmlunit.AbstractTestCase;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-import java.util.List;
-
-/**
- * <p>Test that invalid values don't cause valueChangeEvents to occur.</p>
- */
-
-public class ValueChangeListenerTestCase extends AbstractTestCase {
-
-    // ------------------------------------------------------------ Constructors
-
-
-    /**
-     * Construct a new instance of this test case.
-     *
-     * @param name Name of the test case
-     */
-    public ValueChangeListenerTestCase(String name) {
-        super(name);
-    }
-
-    // ------------------------------------------------------ Instance Variables
-
-    // ---------------------------------------------------- Overall Test Methods
-
-
-    /**
-     * Return the tests included in this test suite.
-     */
-    public static Test suite() {
-        return (new TestSuite(ValueChangeListenerTestCase.class));
-    }
-
-    // ------------------------------------------------- Individual Test Methods
-    public void testValueChangeListener() throws Exception {
-        HtmlPage page = getPage("/faces/valueChangeListener.jsp");
-        List list;
-        list = getAllElementsOfGivenClass(page, null,
-                HtmlTextInput.class);
-
-        // set the initial value to be 1 for both fields
-        ((HtmlTextInput) list.get(0)).setValueAttribute("1");
-        ((HtmlTextInput) list.get(1)).setValueAttribute("1");
-
-        list = getAllElementsOfGivenClass(page, null,
-                HtmlSubmitInput.class);
-        HtmlSubmitInput button = (HtmlSubmitInput) list.get(0);
-        page = (HtmlPage) button.click();
-
-        assertTrue(-1 !=
-                page.asText().indexOf("Received valueChangeEvent for textA"));
-
-        assertTrue(-1 !=
-                page.asText().indexOf("Received valueChangeEvent for textB"));
-
-        // re-submit the form, make sure no valueChangeEvents are fired
-        list = getAllElementsOfGivenClass(page, null,
-                HtmlSubmitInput.class);
-        button = (HtmlSubmitInput) list.get(0);
-        page = (HtmlPage) button.click();
-
-        assertTrue(-1 ==
-                page.asText().indexOf("Received valueChangeEvent for textA"));
-
-        assertTrue(-1 ==
-                page.asText().indexOf("Received valueChangeEvent for textB"));
-
-        // give invalid values to one field and make sure no
-        // valueChangeEvents are fired.
-        list = getAllElementsOfGivenClass(page, null,
-                HtmlTextInput.class);
-
-        ((HtmlTextInput) list.get(1)).setValueAttribute("-123");
-
-        list = getAllElementsOfGivenClass(page, null,
-                HtmlSubmitInput.class);
-        button = (HtmlSubmitInput) list.get(0);
-        page = (HtmlPage) button.click();
-
-        assertTrue(-1 ==
-                page.asText().indexOf("Received valueChangeEvent for textA"));
-
-        assertTrue(-1 ==
-                page.asText().indexOf("Received valueChangeEvent for textB"));
-
-        assertTrue(-1 !=
-                page.asText().indexOf("Validation Error"));
-
-        // make sure dir and lang are passed through as expected for
-        // message and messages
-        list = getAllElementsOfGivenClass(page, null,
-                HtmlSpan.class);
-
-        boolean
-                hasMessageContent = false, // do we have the h:message
-                // content we're looking for
-                hasMessagesContent = false; // do we have the h:messages
-        // content we're looking for.
-        HtmlSpan span = null;
-        HtmlUnorderedList ulist = null;
-
-        for (int i = 0; i < list.size(); i++) {
-            span = (HtmlSpan) list.get(i);
-            if (-1 != span.asXml().indexOf("dir=\"RTL\"")
-                    && span.asXml().indexOf("lang=\"de\"") != -1) {
-                hasMessageContent = true;
-            }
-        }
-        list = getAllElementsOfGivenClass(page, null, HtmlUnorderedList.class);
-        for (int i = 0; i < list.size(); i++) {
-            ulist = (HtmlUnorderedList) list.get(i);
-            if (-1 != ulist.asXml().indexOf("dir=\"LTR\"")
-                    && ulist.asXml().indexOf("lang=\"en\"") != -1) {
-                hasMessagesContent = true;
-            }
-        }
-        assertTrue(hasMessagesContent && hasMessageContent);
-
-    }
-
-    // Test case for Issue 752
-    // https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=752
-    public void testValueChangeListener02() throws Exception {
-
-        HtmlPage page = getPage("/faces/valueChangeListener02.jsp");
-        List list = getAllElementsOfGivenClass(page,
-                null,
-                HtmlSubmitInput.class);
-        HtmlSubmitInput button = (HtmlSubmitInput) list.get(0);
-        page = (HtmlPage) button.click();
-        assertTrue(!page.asText().contains("old value"));
-        assertTrue(!page.asText().contains("new value"));
-
-        list = getAllElementsOfGivenClass(page,
-                null,
-                HtmlCheckBoxInput.class);
-        HtmlCheckBoxInput input = (HtmlCheckBoxInput) list.get(0);
-        input.setChecked(false);
-        list = getAllElementsOfGivenClass(page,
-                null,
-                HtmlSubmitInput.class);
-        button = (HtmlSubmitInput) list.get(0);
-        page = (HtmlPage) button.click();
-
-        assertTrue(page.asText().contains("old value: true"));
-        assertTrue(page.asText().contains("new value: false"));
-
-        list = getAllElementsOfGivenClass(page,
-                null,
-                HtmlSubmitInput.class);
-        button = (HtmlSubmitInput) list.get(0);
-        page = (HtmlPage) button.click();
-        assertTrue(!page.asText().contains("old value"));
-        assertTrue(!page.asText().contains("new value"));
-
-    }
-
-}
diff --git a/jsf-ri/systest/src/com/sun/faces/jsptest/ViewRootPhaseListenerTestCase.java b/jsf-ri/systest/src/com/sun/faces/jsptest/ViewRootPhaseListenerTestCase.java
deleted file mode 100644
index 8dc3957..0000000
--- a/jsf-ri/systest/src/com/sun/faces/jsptest/ViewRootPhaseListenerTestCase.java
+++ /dev/null
@@ -1,154 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package com.sun.faces.jsptest;
-
-
-import com.gargoylesoftware.htmlunit.html.HtmlPage;
-import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
-import com.sun.faces.htmlunit.AbstractTestCase;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-import java.util.List;
-
-
-/**
- * <p>Make sure that only unique view ids are saved in the session</p>
- */
-
-public class ViewRootPhaseListenerTestCase extends AbstractTestCase {
-
-    // ------------------------------------------------------------ Constructors
-
-
-    /**
-     * Construct a new instance of this test case.
-     *
-     * @param name Name of the test case
-     */
-    public ViewRootPhaseListenerTestCase(String name) {
-        super(name);
-    }
-
-    // ------------------------------------------------------ Instance Variables
-
-    // ---------------------------------------------------- Overall Test Methods
-
-
-    /**
-     * Set up instance variables required by this test case.
-     */
-    public void setUp() throws Exception {
-        super.setUp();
-    }
-
-
-    /**
-     * Return the tests included in this test suite.
-     */
-    public static Test suite() {
-        return (new TestSuite(ViewRootPhaseListenerTestCase.class));
-    }
-
-
-    /**
-     * Tear down instance variables required by this test case.
-     */
-    public void tearDown() {
-        super.tearDown();
-    }
-
-    // ------------------------------------------------------ Instance Variables
-
-    // ------------------------------------------------- Individual Test Methods
-
-    public void testViewTagListeners() throws Exception {
-        HtmlPage page = getPage("/faces/viewTagListeners.jsp");
-
-        assertTrue(-1 != page.asText().indexOf("beforePhaseEvent: beforePhase: RENDER_RESPONSE 6."));
-        assertTrue(-1 != page.asText().indexOf("afterPhaseEvent: ."));
-
-        List list;
-
-        HtmlSubmitInput button = null;
-        list = getAllElementsOfGivenClass(page, null,
-                HtmlSubmitInput.class);
-        button = (HtmlSubmitInput) list.get(0);
-        page = (HtmlPage) button.click();
-
-        assertTrue(-1 != page.asText().indexOf("beforePhaseEvent: beforePhase: APPLY_REQUEST_VALUES 2 beforePhase: PROCESS_VALIDATIONS 3 beforePhase: UPDATE_MODEL_VALUES 4 beforePhase: INVOKE_APPLICATION 5 beforePhase: RENDER_RESPONSE 6."));
-        assertTrue(-1 != page.asText().indexOf("afterPhaseEvent: afterPhase: APPLY_REQUEST_VALUES 2 afterPhase: PROCESS_VALIDATIONS 3 afterPhase: UPDATE_MODEL_VALUES 4 afterPhase: INVOKE_APPLICATION 5."));
-
-
-    }
-
-    public void testListenerTagListenersType() throws Exception {
-        HtmlPage page = getPage("/faces/listenerTagListenersType.jsp");
-        doTestListenerTagListeners(page);
-    }
-
-    public void testListenerTagListenersBinding() throws Exception {
-        HtmlPage page = getPage("/faces/listenerTagListenersBinding.jsp");
-        doTestListenerTagListeners(page);
-    }
-
-    public void testListenerTagListenersBindingType() throws Exception {
-        HtmlPage page = getPage("/faces/listenerTagListenersBindingType.jsp");
-        doTestListenerTagListeners(page);
-    }
-
-    public void doTestListenerTagListeners(HtmlPage page) throws Exception {
-
-        assertTrue(-1 != page.asText().indexOf("beforePhaseEvent: beforePhase: RENDER_RESPONSE 6."));
-        assertTrue(-1 != page.asText().indexOf("afterPhaseEvent: ."));
-
-        List list;
-
-        HtmlSubmitInput button = null;
-        list = getAllElementsOfGivenClass(page, null,
-                HtmlSubmitInput.class);
-        button = (HtmlSubmitInput) list.get(0);
-        page = (HtmlPage) button.click();
-
-        assertTrue(-1 != page.asText().indexOf("beforePhaseEvent: beforePhase: APPLY_REQUEST_VALUES 2 beforePhase: PROCESS_VALIDATIONS 3 beforePhase: UPDATE_MODEL_VALUES 4 beforePhase: INVOKE_APPLICATION 5 beforePhase: RENDER_RESPONSE 6."));
-        assertTrue(-1 != page.asText().indexOf("afterPhaseEvent: afterPhase: APPLY_REQUEST_VALUES 2 afterPhase: PROCESS_VALIDATIONS 3 afterPhase: UPDATE_MODEL_VALUES 4 afterPhase: INVOKE_APPLICATION 5."));
-
-
-    }
-
-}
-
diff --git a/jsf-ri/systest/src/com/sun/faces/jsptest/ViewTagTestCase.java b/jsf-ri/systest/src/com/sun/faces/jsptest/ViewTagTestCase.java
deleted file mode 100644
index 6c7ed52..0000000
--- a/jsf-ri/systest/src/com/sun/faces/jsptest/ViewTagTestCase.java
+++ /dev/null
@@ -1,126 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package com.sun.faces.jsptest;
-
-
-import com.gargoylesoftware.htmlunit.html.*;
-import com.sun.faces.htmlunit.AbstractTestCase;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-import javax.faces.component.NamingContainer;
-
-
-/**
- * <p>Test Case for JSP Interoperability.</p>
- */
-
-public class ViewTagTestCase extends AbstractTestCase {
-
-    // ------------------------------------------------------------ Constructors
-
-
-    /**
-     * Construct a new instance of this test case.
-     *
-     * @param name Name of the test case
-     */
-    public ViewTagTestCase(String name) {
-        super(name);
-    }
-
-    // ------------------------------------------------------ Instance Variables
-
-    // ---------------------------------------------------- Overall Test Methods
-
-
-    /**
-     * Set up instance variables required by this test case.
-     */
-    public void setUp() throws Exception {
-        super.setUp();
-    }
-
-
-    /**
-     * Return the tests included in this test suite.
-     */
-    public static Test suite() {
-        return (new TestSuite(ViewTagTestCase.class));
-    }
-
-
-    /**
-     * Tear down instance variables required by this test case.
-     */
-    public void tearDown() {
-        super.tearDown();
-    }
-
-    // ------------------------------------------------- Individual Test Methods
-
-
-    public void testLocaleOnViewTag() throws Exception {
-        HtmlForm form;
-        HtmlSubmitInput submit;
-        HtmlAnchor link;
-        HtmlTextInput input;
-        HtmlPage page;
-
-        page = getPage("/faces/viewLocale.jsp");
-        form = getFormById(page, "form");
-        submit = (HtmlSubmitInput)
-                form.getInputByName("form" + NamingContainer.SEPARATOR_CHAR +
-                        "button");
-
-        // press the button
-        page = (HtmlPage) submit.click();
-        assertTrue(-1 != page.asText().indexOf("erreur"));
-
-    }
-
-    public void testReplaceViewRoot() throws Exception {
-        HtmlPage page;
-        HtmlAnchor link;
-
-        page = getPage("/faces/replaceViewRoot.jsp");
-        link = page.getAnchorByName("examine");
-        page = (HtmlPage) link.click();
-        assertTrue(-1 != page.asText().indexOf("Replaced ViewRoot is com.sun.faces.systest.model.ViewRootExtension"));
-
-    }
-}
diff --git a/jsf-ri/systest/src/com/sun/faces/methodref/MethodRefTestCase.java b/jsf-ri/systest/src/com/sun/faces/methodref/MethodRefTestCase.java
deleted file mode 100644
index 27335f9..0000000
--- a/jsf-ri/systest/src/com/sun/faces/methodref/MethodRefTestCase.java
+++ /dev/null
@@ -1,272 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package com.sun.faces.methodref;
-
-
-import com.gargoylesoftware.htmlunit.WebClient;
-import com.gargoylesoftware.htmlunit.html.HtmlAnchor;
-import com.gargoylesoftware.htmlunit.html.HtmlBody;
-import com.gargoylesoftware.htmlunit.html.HtmlElement;
-import com.gargoylesoftware.htmlunit.html.HtmlForm;
-import com.gargoylesoftware.htmlunit.html.HtmlPage;
-import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
-import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
-import com.sun.faces.htmlunit.AbstractTestCase;
-import junit.framework.Test;
-import junit.framework.TestCase;
-import junit.framework.TestSuite;
-
-import javax.faces.component.NamingContainer;
-import javax.faces.component.UIViewRoot;
-
-
-/**
- * <p>Test Case for JSP Interoperability.</p>
- */
-
-public class MethodRefTestCase extends AbstractTestCase {
-
-
-    // ------------------------------------------------------------ Constructors
-
-
-    /**
-     * Construct a new instance of this test case.
-     *
-     * @param name Name of the test case
-     */
-    public MethodRefTestCase(String name) {
-        super(name);
-    }
-
-
-    // ------------------------------------------------------ Instance Variables
-
-
-    // ---------------------------------------------------- Overall Test Methods
-
-
-    /**
-     * Set up instance variables required by this test case.
-     */
-    public void setUp() throws Exception {
-        super.setUp();
-    }
-
-
-    /**
-     * Return the tests included in this test suite.
-     */
-    public static Test suite() {
-        return (new TestSuite(MethodRefTestCase.class));
-    }
-
-
-    /**
-     * Tear down instance variables required by this test case.
-     */
-    public void tearDown() {
-        super.tearDown();
-    }
-
-
-    // ------------------------------------------------- Individual Test Methods
-    
-    public void testActionAndActionListener() throws Exception {
-        HtmlForm form;
-        HtmlSubmitInput submit;
-        HtmlAnchor link;
-        HtmlTextInput input;
-        HtmlPage page;
-
-        page = getPage("/faces/methodref01.jsp");
-        form = getFormById(page, "form");
-        submit = (HtmlSubmitInput)
-            form.getInputByName("form" + NamingContainer.SEPARATOR_CHAR +
-                                "button1");
-
-        // press button1
-        page = (HtmlPage) submit.click();
-        form = getFormById(page, "form");
-        input = (HtmlTextInput)
-            form.getInputByName("form" + NamingContainer.SEPARATOR_CHAR +
-                                "buttonStatus");
-        assertTrue("Input does not have expected value",
-                   -1 != input.asText().indexOf("button1 was pressed"));
-        link = (HtmlAnchor) page.getAnchors().get(0);
-
-        // press button2
-        page = (HtmlPage) link.click(); 
-        assertNotNull(page);
-        form = getFormById(page, "form");
-        input = (HtmlTextInput)
-            form.getInputByName("form" + NamingContainer.SEPARATOR_CHAR +
-                                "buttonStatus");
-        assertTrue("Input does not have expected value",
-                   -1 != input.asText().indexOf("button2 was pressed"));
-        submit = (HtmlSubmitInput)
-            form.getInputByName("form" + NamingContainer.SEPARATOR_CHAR +
-                                "button3"); 
-
-        // press button3
-        page = (HtmlPage) submit.click();
-        form = getFormById(page, "form");
-        input = (HtmlTextInput)
-            form.getInputByName("form" + NamingContainer.SEPARATOR_CHAR +
-                                "buttonStatus");
-        assertTrue("Input does not have expected value",
-                   -1 != input.asText().indexOf("button3 was pressed"));
-
-
-    } 
-
-
-    public void testValidatorReference() throws Exception {
-        HtmlForm form;
-        HtmlSubmitInput submit;
-        HtmlAnchor link;
-        HtmlTextInput input;
-        HtmlPage page;
-
-        page = getPage("/faces/methodref01.jsp");
-        form = getFormById(page, "form");
-        submit = (HtmlSubmitInput)
-            form.getInputByName("form" + NamingContainer.SEPARATOR_CHAR +
-                                "validate");
-
-        // press the button with no value, see that no value appears in
-        // the "toValidate" textField.
-        page = (HtmlPage) submit.click();
-        form = getFormById(page, "form");
-        input = (HtmlTextInput)
-            form.getInputByName("form" + NamingContainer.SEPARATOR_CHAR +
-                                "toValidate");
-        int fieldLen = input.asText().length();
-        assertTrue("Input does not have expected value", 0 == fieldLen);
-
-        // fill in an incorrect value, see that still no value appears
-        // in the text field.
-        input = (HtmlTextInput)
-            form.getInputByName("form" + NamingContainer.SEPARATOR_CHAR +
-                                "toValidate");
-        input.setValueAttribute("aoeuaoeu");
-        submit = (HtmlSubmitInput)
-            form.getInputByName("form" + NamingContainer.SEPARATOR_CHAR +
-                                "validate");
-        page = (HtmlPage) submit.click();
-        form = getFormById(page, "form");
-        input = (HtmlTextInput)
-            form.getInputByName("form" + NamingContainer.SEPARATOR_CHAR +
-                                "toValidate");
-        fieldLen = input.asText().length();
-        assertTrue("Input does not have expected value", 8 == fieldLen);
-
-        // fill in the correct value, see that finally we have a value
-        input = (HtmlTextInput)
-            form.getInputByName("form" + NamingContainer.SEPARATOR_CHAR +
-                                "toValidate");
-        input.setValueAttribute("batman");
-        submit = (HtmlSubmitInput)
-            form.getInputByName("form" + NamingContainer.SEPARATOR_CHAR +
-                                "validate");
-        page = (HtmlPage) submit.click();
-        form = getFormById(page, "form");
-        input = (HtmlTextInput)
-            form.getInputByName("form" + NamingContainer.SEPARATOR_CHAR +
-                                "toValidate");
-        assertEquals("Input does not have expected value",
-                     "batman", input.asText());
-    }
-
-
-    public void testValueChangeListenerByReference() throws Exception {
-        HtmlForm form;
-        HtmlSubmitInput submit;
-        HtmlAnchor link;
-        HtmlTextInput input;
-        HtmlPage page;
-
-        page = getPage("/faces/methodref01.jsp");
-        form = getFormById(page, "form");
-        submit = (HtmlSubmitInput)
-            form.getInputByName("form" + NamingContainer.SEPARATOR_CHAR +
-                                "changeValue");
-
-        // fill in a value, see we have a value
-        input = (HtmlTextInput)
-            form.getInputByName("form" + NamingContainer.SEPARATOR_CHAR +
-                                "toChange");
-        input.setValueAttribute("batman");
-        page = (HtmlPage) submit.click();
-        form = getFormById(page, "form");
-        input = (HtmlTextInput)
-            form.getInputByName("form" + NamingContainer.SEPARATOR_CHAR +
-                                "toChange");
-        assertEquals("Input does not have expected value",
-                     "batman", input.getOnBlurAttribute());
-    }
-    
-    /**
-     * Test case for bug 5030555
-     */
-    public void testValueChangeListenerWithBinding() throws Exception {
-        HtmlForm form;
-        HtmlSubmitInput submit;
-        HtmlAnchor link;
-        HtmlTextInput input;
-        HtmlPage page;
-
-        page = getPage("/faces/binding01.jsp");
-        form = getFormById(page, "form");
-        submit = (HtmlSubmitInput)
-            form.getInputByName("form" + NamingContainer.SEPARATOR_CHAR +
-                                "changeValue");
-
-        // fill in a value, see we have a value
-        input = (HtmlTextInput)
-            form.getInputByName("form" + NamingContainer.SEPARATOR_CHAR +
-                                "toChange");
-        input.setValueAttribute("binding works!!");
-        page = (HtmlPage) submit.click();
-        form = getFormById(page, "form");
-        input = (HtmlTextInput)
-            form.getInputByName("form" + NamingContainer.SEPARATOR_CHAR +
-                                "toChange");
-        assertEquals("Input does not have expected value",
-                     "binding works!!", input.getOnBlurAttribute());
-    }
-}
diff --git a/jsf-ri/systest/src/com/sun/faces/methodref/TagAttributeListenerMethodExpressionNoArgTestCase.java b/jsf-ri/systest/src/com/sun/faces/methodref/TagAttributeListenerMethodExpressionNoArgTestCase.java
deleted file mode 100644
index e72784f..0000000
--- a/jsf-ri/systest/src/com/sun/faces/methodref/TagAttributeListenerMethodExpressionNoArgTestCase.java
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- *
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- *
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- *
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- *
- * Contributor(s):
- *
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-
-package com.sun.faces.methodref;
-
-
-import com.gargoylesoftware.htmlunit.html.HtmlForm;
-import com.sun.faces.htmlunit.AbstractTestCase;
-import com.gargoylesoftware.htmlunit.html.HtmlPage;
-import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
-import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
-import java.io.IOException;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-/**
- * Validate resource re-location of scripts and stylesheets
- */
-public class TagAttributeListenerMethodExpressionNoArgTestCase extends AbstractTestCase {
-
-
-    public TagAttributeListenerMethodExpressionNoArgTestCase() {
-        this("TagAttributeListenerMethodExpressionNoArgTestCase");
-    }
-
-
-    public TagAttributeListenerMethodExpressionNoArgTestCase(String name) {
-        super(name);
-    }
-
-    public static Test suite() {
-        return (new TestSuite(TagAttributeListenerMethodExpressionNoArgTestCase.class));
-    }
-
-
-    // ------------------------------------------------------------ Test Methods
-
-
-    public void testResourceRelocation() throws Exception {
-
-        HtmlPage page = getPage("/faces/TestValueChangeAndActionListenerNoArg.jsp");
-        executeTest(page);
-        page = getPage("/faces/TestValueChangeAndActionListenerNoArg.xhtml");
-        executeTest(page);
-    }
-
-
-    // --------------------------------------------------------- Private Methods
-
-    private void executeTest(HtmlPage page) throws IOException {
-        HtmlTextInput usernameField = (HtmlTextInput) page.getHtmlElementById("username");
-        usernameField.setValueAttribute("newValue, not oldValue");
-        HtmlForm form = getFormById(page, "form");
-        HtmlSubmitInput button = (HtmlSubmitInput) form.getInputByName("loginEvent");
-        page = (HtmlPage) button.click();
-        String text = page.asText();
-        boolean hasExpectedValue = 
-                (-1 != text.indexOf("valueChange0Called:true")) ||
-                (-1 != text.indexOf("valueChange0Called: true"));
-        assertTrue(hasExpectedValue);
-        hasExpectedValue =
-                (-1 != text.indexOf("actionListener0Called:true")) ||
-                (-1 != text.indexOf("actionListener0Called: true"));
-        assertTrue(hasExpectedValue);
-    }
-}
diff --git a/jsf-ri/systest/src/com/sun/faces/pathtest/PathTestCase.java b/jsf-ri/systest/src/com/sun/faces/pathtest/PathTestCase.java
deleted file mode 100644
index 619be8f..0000000
--- a/jsf-ri/systest/src/com/sun/faces/pathtest/PathTestCase.java
+++ /dev/null
@@ -1,139 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package com.sun.faces.pathtest;
-
-import com.gargoylesoftware.htmlunit.TextPage;
-import com.gargoylesoftware.htmlunit.WebResponse;
-import com.gargoylesoftware.htmlunit.html.HtmlPage;
-import com.sun.faces.htmlunit.AbstractTestCase;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-
-public class PathTestCase extends AbstractTestCase {
-
-    //
-    // Protected Constants
-    //
-
-    //
-    // Class Variables
-    //
-
-    //
-    // Instance Variables
-    //
-
-    // Attribute Instance Variables
-
-    // Relationship Instance Variables
-
-    //
-    // Constructors and Initializers    
-    //
-
-    public PathTestCase(String name) {
-        super(name);
-    }
-
-    //
-    // Class methods
-    //
-
-    //
-    // General Methods
-    //
-    /**
-     * Set up instance variables required by this test case.
-     */
-    public void setUp() throws Exception {
-        super.setUp();
-    }
-
-
-    /**
-     * Return the tests included in this test suite.
-     */
-    public static Test suite() {
-        return (new TestSuite(PathTestCase.class));
-    }
-
-
-    /**
-     * Tear down instance variables required by this test case.
-     */
-    public void tearDown() {
-        super.tearDown();
-    }
-
-
-    /**
-     * Verify that if an initial request comes to a FacesSevlet
-     * mapped using a prefix path, that the client is redirected
-     * to the context root.
-     * Additionally verify that after request to a particular view
-     * has been made, if a subsequent request is made to the
-     * prefix path, context root redirection occurs.
-     */
-    public void testVerifyPathBehavior() throws Exception {
-        final String welcomePage = "WELCOMEPAGE";
-        HtmlPage page = getPage("/faces");
-        WebResponse response = page.getWebResponse();
-        assertTrue(welcomePage.equals(response.getContentAsString().trim()));
-        
-        // Ok, now get a page
-        HtmlPage textPage = getHtmlPage("/faces/hello.jsp");
-        response = textPage.getWebResponse();
-        assertTrue("/hello.jsp PASSED".equals(
-            response.getContentAsString().trim()));
-
-        page = getPage("/faces");
-        response = page.getWebResponse();
-        assertTrue("WELCOMEPAGE".equals(response.getContentAsString().trim()));
-    }
-
-
-    protected HtmlPage getHtmlPage(String path) throws Exception {
-        HtmlPage page = (HtmlPage) client.getPage(getURL(path));
-
-        return (page);
-
-    }
-
-
-} // end of class PathTestCase
-
diff --git a/jsf-ri/systest/src/com/sun/faces/render/CommandButtonTestCase.java b/jsf-ri/systest/src/com/sun/faces/render/CommandButtonTestCase.java
deleted file mode 100644
index f6de482..0000000
--- a/jsf-ri/systest/src/com/sun/faces/render/CommandButtonTestCase.java
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- *
- * Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
- *
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- *
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- *
- * Contributor(s):
- *
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package com.sun.faces.render;
-
-import com.sun.faces.htmlunit.AbstractTestCase;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-import com.gargoylesoftware.htmlunit.html.*;
-
-public class CommandButtonTestCase extends AbstractTestCase {
-
-    public CommandButtonTestCase(String name) {
-        super(name);
-    }
-
-    /**
-     * Set up instance variables required by this test case.
-     */
-    public void setUp() throws Exception {
-        super.setUp();
-    }
-
-
-    /**
-     * Return the tests included in this test suite.
-     */
-    public static Test suite() {
-        return (new TestSuite(CommandButtonTestCase.class));
-    }
-
-
-    /**
-     * Tear down instance variables required by this test case.
-     */
-    public void tearDown() {
-        super.tearDown();
-    }
-
-
-    public void testCommandButtonButton() throws Exception {
-        getPage("/faces/render/commandButtonButton.xhtml");
-        System.out.println("Start command Button type=button test");
-        // First we'll check the first page was output correctly
-        assertTrue(check("out1","0"));
-        assertTrue(check("outside","1"));
-
-        // Submit the ajax tagged request
-        HtmlButtonInput button = (HtmlButtonInput) lastpage.getHtmlElementById("button1");
-        lastpage = (HtmlPage) button.click();
-
-        // Check that the ajax request succeeds
-        assertTrue(check("out1","2"));
-
-        // Check that the request did NOT update the rest of the page.
-        assertTrue(check("outside","1"));
-
-        // Submit the onclick enhanced request - with no return false
-        button = (HtmlButtonInput) lastpage.getHtmlElementById("button2");
-        lastpage = (HtmlPage) button.click();
-
-        // Check that the ajax request succeeds
-        assertTrue(check("out1","3"));
-
-        // Check that the request did NOT update the rest of the page.
-        assertTrue(check("outside","1"));
-
-    }
-}
\ No newline at end of file
diff --git a/jsf-ri/systest/src/com/sun/faces/render/MessageRenderTestCase.java b/jsf-ri/systest/src/com/sun/faces/render/MessageRenderTestCase.java
deleted file mode 100644
index 3dad1ac..0000000
--- a/jsf-ri/systest/src/com/sun/faces/render/MessageRenderTestCase.java
+++ /dev/null
@@ -1,116 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- *
- * Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
- *
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- *
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- *
- * Contributor(s):
- *
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package com.sun.faces.render;
-
-import com.sun.faces.htmlunit.AbstractTestCase;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-
-public class MessageRenderTestCase extends AbstractTestCase {
-
-    public MessageRenderTestCase(String name) {
-        super(name);
-    }
-
-    /**
-     * Set up instance variables required by this test case.
-     */
-    public void setUp() throws Exception {
-        super.setUp();
-    }
-
-
-    /**
-     * Return the tests included in this test suite.
-     */
-    public static Test suite() {
-        return (new TestSuite(MessageRenderTestCase.class));
-    }
-
-
-    /**
-     * Tear down instance variables required by this test case.
-     */
-    public void tearDown() {
-        super.tearDown();
-    }
-
-
-    public void testCommandButtonButton() throws Exception {
-        getPage("/faces/render/messageRender.xhtml");
-
-
-        // Check that ids were rendered
-        try {
-            lastpage.getHtmlElementById("testform1:msgs");
-        } catch (Exception e) {
-            fail("testform1:msgs not rendered");
-        }
-        try {
-            lastpage.getHtmlElementById("testform1a:msgs");
-        } catch (Exception e) {
-            fail("testform1a:msgs not rendered");
-        }
-        try {
-            lastpage.getHtmlElementById("testform2:msg");
-        } catch (Exception e) {
-            fail("testform2:msg not rendered");
-        }
-
-        // check that other ids weren't
-
-        try {
-            lastpage.getHtmlElementById("testform3:msgs");
-            fail("testform3:msgs rendered - not correct");
-        } catch (Exception e) {
-            //  Success
-        }
-        try {
-            lastpage.getHtmlElementById("testform3a:msgs");
-            fail("testform3:msgs rendered - not correct");
-        } catch (Exception e) {
-            //  Success
-        }
-        try {
-            lastpage.getHtmlElementById("testform4:msg");
-            fail("testform4:msg rendered - not correct");
-        } catch (Exception e) {
-            //  Success
-        }
-    }
-}
\ No newline at end of file
diff --git a/jsf-ri/systest/src/com/sun/faces/render/OutputScriptStyleTestCase.java b/jsf-ri/systest/src/com/sun/faces/render/OutputScriptStyleTestCase.java
deleted file mode 100644
index cf94591..0000000
--- a/jsf-ri/systest/src/com/sun/faces/render/OutputScriptStyleTestCase.java
+++ /dev/null
@@ -1,222 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- *
- * Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
- *
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- *
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- *
- * Contributor(s):
- *
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package com.sun.faces.render;
-
-import com.sun.faces.htmlunit.AbstractTestCase;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-import com.gargoylesoftware.htmlunit.html.*;
-
-
-public class OutputScriptStyleTestCase extends AbstractTestCase {
-
-    public OutputScriptStyleTestCase(String name) {
-        super(name);
-    }
-
-    /**
-     * Set up instance variables required by this test case.
-     */
-    public void setUp() throws Exception {
-        super.setUp();
-    }
-
-
-    /**
-     * Return the tests included in this test suite.
-     */
-    public static Test suite() {
-        return (new TestSuite(OutputScriptStyleTestCase.class));
-    }
-
-
-    /**
-     * Tear down instance variables required by this test case.
-     */
-    public void tearDown() {
-        super.tearDown();
-    }
-
-
-    public void testOutputScriptStyle() throws Exception {
-        HtmlPage page = getPage("/faces/render/outputScriptStyleNested.xhtml");
-
-        String text = page.asXml();
-
-        // case 1
-        assertTrue(text.matches(
-                "(?s).*<head>.*"+
-                "<script type=\"text/javascript\".*src=\"/jsf-systest/faces/javax.faces.resource/case1.js\">.*" + 
-                "</script>.*" + 
-                "</head>.*"
-                ));
-        
-        assertTrue(!text.matches("(?s).*alert\\(\"case1\"\\);.*"));
-        
-        // case 2
-        assertTrue(text.matches(
-                "(?s).*<body>.*"+
-                "<script type=\"text/javascript\">.*" + 
-                "alert\\(\"case2\"\\);.*" +
-                "</script>.*" + 
-                "</body>.*"
-                ));
-        
-        // case 3
-        assertTrue(text.matches(
-                "(?s).*<body>.*"+
-                "<script type=\"text/javascript\".*src=\"/jsf-systest/faces/javax.faces.resource/case3.js\">.*" + 
-                "</script>.*" + 
-                "</body>.*"
-                ));
-        
-        assertTrue(!text.matches("(?s).*alert\\(\"case3\"\\);.*"));
-        
-        // case 4
-        assertTrue(text.matches(
-                "(?s).*<head>.*"+
-                "<script type=\"text/javascript\".*src=\"/jsf-systest/faces/javax.faces.resource/case4.js\">.*" + 
-                "</script>.*" + 
-                "</head>.*"
-                ));
-
-        // case 5, if not satisfied, would cause the page to fail.
-
-        // case 6
-        assertTrue(text.matches(
-                "(?s).*<body>.*"+
-                "<script type=\"text/javascript\".*src=\"/jsf-systest/faces/javax.faces.resource/case6.js\">.*" + 
-                "</script>.*" + 
-                "</body>.*"
-                ));
-        
-        // case 7, if not satisfied, would cause the page to fail
-        
-        // case 8
-        assertTrue(text.matches(
-                "(?s).*<body>.*"+
-                "<script type=\"text/javascript\">.*" + 
-                "alert\\(\"case8\"\\);.*" +
-                "</script>.*" + 
-                "</body>.*"
-                ));
-        
-        // case 9
-        assertTrue(text.matches(
-                "(?s).*<head>.*"+
-                "<link.* type=\"text/css\".*rel=\"stylesheet\".* href=\"/jsf-systest/faces/javax.faces.resource/case9.css\"\\s*/>.*" + 
-                "</head>.*"
-                ));
-        
-        assertTrue(!text.matches("(?s).*\\.case9.*"));
-        
-        // case 10
-        assertTrue(text.matches(
-                "(?s).*<head>.*"+
-                "<style\\s*type=\"text/css\">.*" +
-                "\\.case10\\s*\\{.*" +
-                "color: blue;.*" +
-                "\\}.*" +
-                "</style>.*" +
-                "</head>.*"
-                ));
-        
-
-        // case 11
-        assertTrue(text.matches(
-                "(?s).*<head>.*"+
-                "<link.* type=\"text/css\".*rel=\"stylesheet\".* href=\"/jsf-systest/faces/javax.faces.resource/case11.css\"\\s*/>.*" + 
-                "</head>.*"
-                ));
-        
-        assertTrue(!text.matches("(?s).*\\.case11.*"));
-        
-        // case 12
-        assertTrue(text.matches(
-                "(?s).*<head>.*"+
-                "<link.* type=\"text/css\".*rel=\"stylesheet\".* href=\"/jsf-systest/faces/javax.faces.resource/case12.css\"\\s*/>.*" + 
-                "</head>.*"
-                ));
-
-        // case 13, if not satisfied, would cause the page to fail.
-
-        // case 14
-        assertTrue(text.matches(
-                "(?s).*<head>.*"+
-                "<link.* type=\"text/css\".*rel=\"stylesheet\".* href=\"/jsf-systest/faces/javax.faces.resource/case14.css\"\\s*/>.*" + 
-                "</head>.*"
-                ));
-
-        // case 15, if not satisfied, would cause the page to fail.
-        
-        // case 16
-        assertTrue(text.matches(
-                "(?s).*<head>.*"+
-                "<style\\s*type=\"text/css\">.*" +
-                "\\.case16\\s*\\{.*" +
-                "color: orange;.*" +
-                "\\}.*" +
-                "</style>.*" +
-                "</head>.*"
-                ));
-
-    }
-
-    public void testScriptQuery() throws Exception {
-        lastpage = getPage("/faces/render/outputScriptQuery.xhtml");
-        String text = lastpage.asXml();
-
-        assertTrue(text.matches(
-                "(?s).*"+
-                "<script type=\"text/javascript\".*src=\"/jsf-systest/faces/javax.faces.resource/simple.js\\?mod=test\">.*" +
-                "</script>.*"
-                ));
-
-        assertTrue(text.matches(
-                "(?s).*"+
-                "<script type=\"text/javascript\".*src=\"/jsf-systest/faces/javax.faces.resource/simple2.js\">.*" +
-                "</script>.*"
-                ));
-
-        assertTrue(text.matches(
-                "(?s).*"+
-                "<script type=\"text/javascript\".*src=\"/jsf-systest/faces/javax.faces.resource/jsf.js\\?ln=javax.faces&stage=Development\">.*" +
-                "</script>.*"
-                ));
-
-    }
-}
\ No newline at end of file
diff --git a/jsf-ri/systest/src/com/sun/faces/render/SelectStarTestCase.java b/jsf-ri/systest/src/com/sun/faces/render/SelectStarTestCase.java
deleted file mode 100644
index 92488f5..0000000
--- a/jsf-ri/systest/src/com/sun/faces/render/SelectStarTestCase.java
+++ /dev/null
@@ -1,254 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- *
- * Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
- *
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- *
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- *
- * Contributor(s):
- *
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package com.sun.faces.render;
-
-import com.sun.faces.htmlunit.AbstractTestCase;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-import com.gargoylesoftware.htmlunit.html.*;
-
-import java.util.List;
-
-public class SelectStarTestCase extends AbstractTestCase {
-
-    public SelectStarTestCase(String name) {
-        super(name);
-    }
-
-    /**
-     * Set up instance variables required by this test case.
-     */
-    public void setUp() throws Exception {
-        super.setUp();
-    }
-
-
-    /**
-     * Return the tests included in this test suite.
-     */
-    public static Test suite() {
-        return (new TestSuite(SelectStarTestCase.class));
-    }
-
-
-    /**
-     * Tear down instance variables required by this test case.
-     */
-    public void tearDown() {
-        super.tearDown();
-    }
-
-
-    public void testSelectStarXhtml() throws Exception {
-        String failMsg;
-
-        getPage("/faces/render/selectStarNoSelection.xhtml");
-        System.out.println("Start select star test case - facelets");
-
-        // Check SelectManyListbox
-        HtmlSelect selectOneList = (HtmlSelect) lastpage.getHtmlElementById("selectOneListbox");
-        List<HtmlOption> selectOneListOptions = selectOneList.getOptions();
-        failMsg = "Wrong number of options for SelectManyListbox, expected 5, got "+selectOneListOptions.size();
-        assertTrue(failMsg,selectOneListOptions.size() == 5);
-        HtmlOption selectOption = selectOneListOptions.get(0);
-        assertTrue(selectOption.getValueAttribute().equals("noSelection"));
-        assertTrue(selectOption.asText().equals("No selection"));
-        selectOption = selectOneListOptions.get(1);
-        assertTrue(selectOption.getValueAttribute().equals("Apple"));
-        assertTrue(selectOption.asText().equals("Apple"));
-
-        // Check SelectOneListbox
-        HtmlSelect selectOneMenu = (HtmlSelect) lastpage.getHtmlElementById("selectOneMenu");
-        List<HtmlOption> selectOneMenuOptions = selectOneMenu.getOptions();
-        assertTrue(selectOneMenuOptions.size() == 5);
-        selectOption = selectOneMenuOptions.get(0);
-        assertTrue(selectOption.getValueAttribute().equals("noSelection"));
-        assertTrue(selectOption.asText().equals("No selection"));
-        selectOption = selectOneMenuOptions.get(1);
-        assertTrue(selectOption.getValueAttribute().equals("Apple"));
-        assertTrue(selectOption.asText().equals("Apple"));
-
-        // Check SelectOneRadio
-        HtmlInput selectOneRadio0 = (HtmlInput) lastpage.getHtmlElementById("selectOneRadio:0");
-        assertTrue(selectOneRadio0.getValueAttribute().equals("noSelection"));
-        HtmlInput selectOneRadio1 = (HtmlInput) lastpage.getHtmlElementById("selectOneRadio:1");
-        assertTrue(selectOneRadio1.getValueAttribute().equals("Apple"));
-
-        // Check SelectManyCheckbox
-        HtmlInput selectManyCheckbox0 = (HtmlInput) lastpage.getHtmlElementById("selectManyCheckbox:0");
-        assertTrue(selectManyCheckbox0.getValueAttribute().equals("noSelection"));
-        HtmlInput selectManyCheckbox1 = (HtmlInput) lastpage.getHtmlElementById("selectManyCheckbox:1");
-        assertTrue(selectManyCheckbox1.getValueAttribute().equals("Apple"));
-
-        // Check SelectManyListbox
-        HtmlSelect selectManyListbox = (HtmlSelect) lastpage.getHtmlElementById("selectManyListbox");
-        List<HtmlOption> selectManyListOptions = selectManyListbox.getOptions();
-        assertTrue(selectManyListOptions.size() == 5);
-        selectOption = selectManyListOptions.get(0);
-        assertTrue(selectOption.getValueAttribute().equals("noSelection"));
-        assertTrue(selectOption.asText().equals("No selection"));
-        selectOption = selectManyListOptions.get(1);
-        assertTrue(selectOption.getValueAttribute().equals("Apple"));
-        assertTrue(selectOption.asText().equals("Apple"));
-
-        // Check SelectManyMenu
-        HtmlSelect selectManyMenu = (HtmlSelect) lastpage.getHtmlElementById("selectManyMenu");
-        List<HtmlOption> selectManyMenuOptions = selectManyMenu.getOptions();
-        assertTrue(selectManyMenuOptions.size() == 5);
-        selectOption = selectManyMenuOptions.get(0);
-        assertTrue(selectOption.getValueAttribute().equals("noSelection"));
-        assertTrue(selectOption.asText().equals("No selection"));
-        selectOption = selectManyMenuOptions.get(1);
-        assertTrue(selectOption.getValueAttribute().equals("Apple"));
-        assertTrue(selectOption.asText().equals("Apple"));
-    }
-
-    public void testSelectStarJspx() throws Exception {
-        String failMsg;
-
-        getPage("/faces/render/selectStarNoSelection.jspx");
-        System.out.println("Start select star test case - jspx");
-
-        // Check SelectManyListbox
-        HtmlSelect selectOneList = (HtmlSelect) lastpage.getHtmlElementById("selectOneListbox");
-        List<HtmlOption> selectOneListOptions = selectOneList.getOptions();
-        failMsg = "Wrong number of options for SelectManyListbox, expected 5, got "+selectOneListOptions.size();
-        assertTrue(failMsg,selectOneListOptions.size() == 5);
-        HtmlOption selectOption = selectOneListOptions.get(0);
-        assertTrue(selectOption.getValueAttribute().equals("noSelection"));
-        assertTrue(selectOption.asText().equals("No selection"));
-        selectOption = selectOneListOptions.get(1);
-        assertTrue(selectOption.getValueAttribute().equals("Apple"));
-        assertTrue(selectOption.asText().equals("Apple"));
-
-        // Check SelectOneListbox
-        HtmlSelect selectOneMenu = (HtmlSelect) lastpage.getHtmlElementById("selectOneMenu");
-        List<HtmlOption> selectOneMenuOptions = selectOneMenu.getOptions();
-        assertTrue(selectOneMenuOptions.size() == 5);
-        selectOption = selectOneMenuOptions.get(0);
-        assertTrue(selectOption.getValueAttribute().equals("noSelection"));
-        assertTrue(selectOption.asText().equals("No selection"));
-        selectOption = selectOneMenuOptions.get(1);
-        assertTrue(selectOption.getValueAttribute().equals("Apple"));
-        assertTrue(selectOption.asText().equals("Apple"));
-
-        // Check SelectOneRadio
-        HtmlInput selectOneRadio0 = (HtmlInput) lastpage.getHtmlElementById("selectOneRadio:0");
-        assertTrue(selectOneRadio0.getValueAttribute().equals("noSelection"));
-        HtmlInput selectOneRadio1 = (HtmlInput) lastpage.getHtmlElementById("selectOneRadio:1");
-        assertTrue(selectOneRadio1.getValueAttribute().equals("Apple"));
-
-        // Check SelectManyCheckbox
-        HtmlInput selectManyCheckbox0 = (HtmlInput) lastpage.getHtmlElementById("selectManyCheckbox:0");
-        assertTrue(selectManyCheckbox0.getValueAttribute().equals("noSelection"));
-        HtmlInput selectManyCheckbox1 = (HtmlInput) lastpage.getHtmlElementById("selectManyCheckbox:1");
-        assertTrue(selectManyCheckbox1.getValueAttribute().equals("Apple"));
-
-        // Check SelectManyListbox
-        HtmlSelect selectManyListbox = (HtmlSelect) lastpage.getHtmlElementById("selectManyListbox");
-        List<HtmlOption> selectManyListOptions = selectManyListbox.getOptions();
-        assertTrue(selectManyListOptions.size() == 5);
-        selectOption = selectManyListOptions.get(0);
-        assertTrue(selectOption.getValueAttribute().equals("noSelection"));
-        assertTrue(selectOption.asText().equals("No selection"));
-        selectOption = selectManyListOptions.get(1);
-        assertTrue(selectOption.getValueAttribute().equals("Apple"));
-        assertTrue(selectOption.asText().equals("Apple"));
-
-        // Check SelectManyMenu
-        HtmlSelect selectManyMenu = (HtmlSelect) lastpage.getHtmlElementById("selectManyMenu");
-        List<HtmlOption> selectManyMenuOptions = selectManyMenu.getOptions();
-        assertTrue(selectManyMenuOptions.size() == 5);
-        selectOption = selectManyMenuOptions.get(0);
-        assertTrue(selectOption.getValueAttribute().equals("noSelection"));
-        assertTrue(selectOption.asText().equals("No selection"));
-        selectOption = selectManyMenuOptions.get(1);
-        assertTrue(selectOption.getValueAttribute().equals("Apple"));
-        assertTrue(selectOption.asText().equals("Apple"));
-
-    }
-
-    public void testSelectStarXhtmlHide() throws Exception {
-        String failMsg;
-
-        getPage("/faces/render/selectStarSelectionHideNoSelection.xhtml");
-        System.out.println("Start select star test case - facelets");
-
-        // Check SelectManyListbox
-        HtmlSelect selectOneList = (HtmlSelect) lastpage.getHtmlElementById("selectOneListbox");
-        List<HtmlOption> selectOneListOptions = selectOneList.getOptions();
-        failMsg = "Wrong number of options for SelectManyListbox, expected 4, got "+selectOneListOptions.size();
-        assertTrue(failMsg,selectOneListOptions.size() == 4);
-        HtmlOption selectOption = selectOneListOptions.get(0);
-        assertTrue(selectOption.getValueAttribute().equals("Apple"));
-        assertTrue(selectOption.asText().equals("Apple"));
-
-        // Check SelectOneListbox
-        HtmlSelect selectOneMenu = (HtmlSelect) lastpage.getHtmlElementById("selectOneMenu");
-        List<HtmlOption> selectOneMenuOptions = selectOneMenu.getOptions();
-        assertTrue(selectOneMenuOptions.size() == 4);
-        selectOption = selectOneMenuOptions.get(0);
-        assertTrue(selectOption.getValueAttribute().equals("Apple"));
-        assertTrue(selectOption.asText().equals("Apple"));
-
-        // Check SelectOneRadio
-        HtmlInput selectOneRadio0 = (HtmlInput) lastpage.getHtmlElementById("selectOneRadio:1");
-        assertTrue(selectOneRadio0.getValueAttribute().equals("Apple"));
-
-        // Check SelectManyCheckbox
-        HtmlInput selectManyCheckbox0 = (HtmlInput) lastpage.getHtmlElementById("selectManyCheckbox:1");
-        assertTrue(selectManyCheckbox0.getValueAttribute().equals("Apple"));
-
-        // Check SelectManyListbox
-        HtmlSelect selectManyListbox = (HtmlSelect) lastpage.getHtmlElementById("selectManyListbox");
-        List<HtmlOption> selectManyListOptions = selectManyListbox.getOptions();
-        assertTrue(selectManyListOptions.size() == 4);
-        selectOption = selectManyListOptions.get(0);
-        assertTrue(selectOption.getValueAttribute().equals("Apple"));
-        assertTrue(selectOption.asText().equals("Apple"));
-
-        // Check SelectManyMenu
-        HtmlSelect selectManyMenu = (HtmlSelect) lastpage.getHtmlElementById("selectManyMenu");
-        List<HtmlOption> selectManyMenuOptions = selectManyMenu.getOptions();
-        assertTrue(selectManyMenuOptions.size() == 4);
-        selectOption = selectManyMenuOptions.get(0);
-        assertTrue(selectOption.getValueAttribute().equals("Apple"));
-        assertTrue(selectOption.asText().equals("Apple"));
-    }
-
-
-}
\ No newline at end of file
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/CheckboxTestCase.java b/jsf-ri/systest/src/com/sun/faces/systest/CheckboxTestCase.java
deleted file mode 100644
index 3c3f3bf..0000000
--- a/jsf-ri/systest/src/com/sun/faces/systest/CheckboxTestCase.java
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- *
- * Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
- *
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- *
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- *
- * Contributor(s):
- *
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package com.sun.faces.systest;
-
-import com.sun.faces.htmlunit.AbstractTestCase;
-import com.gargoylesoftware.htmlunit.html.HtmlPage;
-import com.gargoylesoftware.htmlunit.html.HtmlCheckBoxInput;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-/**
-  *
- */
-public class CheckboxTestCase extends AbstractTestCase {
-
-    /**
-     * Construct a new instance of this test case.
-     *
-     * @param name Name of the test case
-     */
-    public CheckboxTestCase(String name) {
-        super(name);
-    }
-
-
-    /**
-     * Set up instance variables required by this test case.
-     */
-    public void setUp() throws Exception {
-        super.setUp();
-    }
-
-
-    /**
-     * Return the tests included in this test suite.
-     */
-    public static Test suite() {
-        return (new TestSuite(CheckboxTestCase.class));
-    }
-
-
-    /**
-     * Tear down instance variables required by this test case.
-     */
-    public void tearDown() {
-        super.tearDown();
-    }
-
-
-    // ------------------------------------------------------------ Test Methods
-
-
-    /**
-     * Added for issue 904.
-     */
-    public void testBooleanCheckboxSubmittedValue() throws Exception {
-
-        HtmlPage page = getPage("/faces/standard/checkboxSubmittedValue.xhtml");
-        HtmlCheckBoxInput box1 = (HtmlCheckBoxInput) page.getHtmlElementById("box1");
-        assertNotNull(box1);
-        page = (HtmlPage) box1.click();
-        HtmlCheckBoxInput box2 = (HtmlCheckBoxInput) page.getHtmlElementById("box2");
-        assertNotNull(box2);
-        HtmlPage newPage = (HtmlPage) box2.click();
-        box1 = (HtmlCheckBoxInput) newPage.getHtmlElementById("box1");
-        assertTrue(box1.isChecked());
-        box2 = (HtmlCheckBoxInput) newPage.getHtmlElementById("box2");
-        assertTrue(box2.isChecked());
-
-    }
-}
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/ChildrenComponent.java b/jsf-ri/systest/src/com/sun/faces/systest/ChildrenComponent.java
index 8c711f8..7b8ef8e 100644
--- a/jsf-ri/systest/src/com/sun/faces/systest/ChildrenComponent.java
+++ b/jsf-ri/systest/src/com/sun/faces/systest/ChildrenComponent.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/ChildrenComponentBodyTag.java b/jsf-ri/systest/src/com/sun/faces/systest/ChildrenComponentBodyTag.java
index 1926e88..765fa65 100644
--- a/jsf-ri/systest/src/com/sun/faces/systest/ChildrenComponentBodyTag.java
+++ b/jsf-ri/systest/src/com/sun/faces/systest/ChildrenComponentBodyTag.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/ChildrenComponentTag.java b/jsf-ri/systest/src/com/sun/faces/systest/ChildrenComponentTag.java
index 9a670e2..c9295aa 100644
--- a/jsf-ri/systest/src/com/sun/faces/systest/ChildrenComponentTag.java
+++ b/jsf-ri/systest/src/com/sun/faces/systest/ChildrenComponentTag.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/ComponentMiscTestCase.java b/jsf-ri/systest/src/com/sun/faces/systest/ComponentMiscTestCase.java
deleted file mode 100644
index 91b07db..0000000
--- a/jsf-ri/systest/src/com/sun/faces/systest/ComponentMiscTestCase.java
+++ /dev/null
@@ -1,139 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package com.sun.faces.systest;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import com.gargoylesoftware.htmlunit.html.HtmlOption;
-import com.gargoylesoftware.htmlunit.html.HtmlPage;
-import com.gargoylesoftware.htmlunit.html.HtmlSelect;
-import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
-import com.sun.faces.htmlunit.AbstractTestCase;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-/**
- * <p>Test Case for JSP Interoperability.</p>
- */
-
-public class ComponentMiscTestCase extends AbstractTestCase {
-
-
-    // ------------------------------------------------------------ Constructors
-
-
-    /**
-     * Construct a new instance of this test case.
-     *
-     * @param name Name of the test case
-     */
-    public ComponentMiscTestCase(String name) {
-        super(name);
-    }
-
-
-    // ------------------------------------------------------ Instance Variables
-
-
-    // ---------------------------------------------------- Overall Test Methods
-
-
-    /**
-     * Set up instance variables required by this test case.
-     */
-    public void setUp() throws Exception {
-        super.setUp();
-    }
-
-
-    /**
-     * Return the tests included in this test suite.
-     */
-    public static Test suite() {
-        return (new TestSuite(ComponentMiscTestCase.class));
-    }
-
-
-    /**
-     * Tear down instance variables required by this test case.
-     */
-    public void tearDown() {
-        super.tearDown();
-    }
-
-
-    // ------------------------------------------------- Individual Test Methods
-
-
-    public void testModelCoercionForUISelectOne() throws Exception {
-        HtmlPage page = getPage("/faces/ModelSelectItemConversion.jsp");
-        HtmlSelect select = (HtmlSelect) getAllElementsOfGivenClass(page, 
-                                                                    new ArrayList(),
-                                                                    HtmlSelect.class).get(0);
-        HtmlOption option = select.getOption(1);
-        option.setSelected(true);
-        
-        HtmlSubmitInput submit = (HtmlSubmitInput) getInputContainingGivenId(page,
-                                                                             "submit");
-        
-        // clicking this should yield no errors.
-        submit.click();
-        
-    }
-    
-    public void testConverterForUISelectMany() throws Exception {
-        HtmlPage page = getPage("/faces/SelectManyConverterTest.jsp");
-        List selects = getAllElementsOfGivenClass(page, 
-                                                  new ArrayList(), 
-                                                  HtmlSelect.class);
-        HtmlSelect select = (HtmlSelect) selects.get(0);
-        HtmlSelect select2 = (HtmlSelect) selects.get(1);
-        select.getOption(1).setSelected(true);
-        select.getOption(2).setSelected(true);
-        select2.getOption(1).setSelected(true);
-        select2.getOption(2).setSelected(true);
-        
-        HtmlSubmitInput submit = (HtmlSubmitInput) getInputContainingGivenId(page,
-                                                                             "submit");
-        page = (HtmlPage) submit.click();
-        
-        // ensure no validator errors
-        String pageText = page.asText();
-        assertTrue(pageText.indexOf("Value is not valid") < 0);
-    }
-}
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/ConditionalNavigationTestCase.java b/jsf-ri/systest/src/com/sun/faces/systest/ConditionalNavigationTestCase.java
deleted file mode 100644
index 8ae53b1..0000000
--- a/jsf-ri/systest/src/com/sun/faces/systest/ConditionalNavigationTestCase.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package com.sun.faces.systest;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-import com.gargoylesoftware.htmlunit.html.HtmlPage;
-import com.gargoylesoftware.htmlunit.html.HtmlCheckBoxInput;
-import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
-import com.sun.faces.htmlunit.AbstractTestCase;
-
-public class ConditionalNavigationTestCase extends AbstractTestCase {
-
-
-    public ConditionalNavigationTestCase(String name) {
-           super(name);
-       }
-
-       /**
-        * Set up instance variables required by this test case.
-        */
-       public void setUp() throws Exception {
-           super.setUp();
-       }
-
-
-       /**
-        * Return the tests included in this test suite.
-        */
-       public static Test suite() {
-           return (new TestSuite(ConditionalNavigationTestCase.class));
-       }
-
-
-       /**
-        * Tear down instance variables required by this test case.
-        */
-       public void tearDown() {
-           super.tearDown();
-       }
-
-
-       // ------------------------------------------------------------ Test Methods
-
-       public void testConditionalNavigation() throws Exception {
-
-           HtmlPage page = getPage("/faces/conditionalNav.xhtml");
-
-           HtmlCheckBoxInput checkbox = (HtmlCheckBoxInput)
-                   page.getElementById("checkbox");
-           checkbox.setChecked(true);
-           HtmlSubmitInput button = (HtmlSubmitInput)
-                   page.getElementById("submit");
-           page = button.click();
-           String text = page.asText();
-           assertTrue(text.contains("Success!"));
-
-           page = getPage("/faces/conditionalNav.xhtml");
-
-           checkbox = (HtmlCheckBoxInput)
-                   page.getElementById("checkbox");
-           checkbox.setChecked(false);
-           button = (HtmlSubmitInput)
-                   page.getElementById("submit");
-           page = button.click();
-           text = page.asText();
-           assertTrue(text.contains("Failure!"));
-
-
-
-       }
-
-
-}
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/DataTableTestCase.java b/jsf-ri/systest/src/com/sun/faces/systest/DataTableTestCase.java
deleted file mode 100644
index 6b4da87..0000000
--- a/jsf-ri/systest/src/com/sun/faces/systest/DataTableTestCase.java
+++ /dev/null
@@ -1,233 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package com.sun.faces.systest;
-
-import java.util.List;
-import java.util.ArrayList;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-import com.sun.faces.htmlunit.AbstractTestCase;
-import com.gargoylesoftware.htmlunit.html.*;
-
-public class DataTableTestCase extends AbstractTestCase {
-
-    /**
-     * Construct a new instance of this test case.
-     *
-     * @param name Name of the test case
-     */
-    public DataTableTestCase(String name) {
-        super(name);
-    }
-
-    /**
-     * Return the tests included in this test suite.
-     */
-    public static Test suite() {
-        return (new TestSuite(DataTableTestCase.class));
-    }
-
-
-    // ------------------------------------------------------------ Test Methods
-
-
-    /*
-     * Test for https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=774
-     */
-    public void testVarNotOverrwrittenByNull() throws Exception {
-
-        HtmlPage page = getPage("/faces/standard/dtablevarnotoverwritten.jsp");
-        List<HtmlAnchor> links = new ArrayList<HtmlAnchor>(3);
-        getAllElementsOfGivenClass(page, links, HtmlAnchor.class);
-
-        // should have three links rendered by the table
-        // with their display values being abc, def, ghi in that
-        // order *if* the var attribute wasn't overwritten by the tag.
-        assertEquals(3, links.size());
-        List<String> expectedValues = new ArrayList<String>(3);
-        expectedValues.add("abc");
-        expectedValues.add("def");
-        expectedValues.add("ghi");
-        for (int i = 0, len = links.size(); i < len; i++) {
-            HtmlAnchor anchor = links.get(i);
-            String expectedValue = expectedValues.get(i);
-            assertEquals(expectedValue, expectedValue, anchor.asText().trim());
-        }
-
-    }
-
-
-    /*
-     * Test regression https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=902.
-     */
-    public void testRowClasses() throws Exception {
-
-        HtmlPage page = getPage("/faces/standard/dtablerowclasses.jsp");
-        assertNotNull(page);
-        List<HtmlTable> tableList = new ArrayList<HtmlTable>(1);
-        getAllElementsOfGivenClass(page, tableList, HtmlTable.class);
-        assertTrue(tableList.size() == 1);
-        HtmlTable table = tableList.get(0);
-        List<HtmlTableRow> rows = table.getRows();
-        assertEquals(6,rows.size());
-        for (int i = 0, len = rows.size(); i < len; i++) {
-            HtmlTableRow row = rows.get(i);
-            if (i % 2 == 0) {
-            	assertEquals("b1",row.getClassAttribute());
-            } else {
-            	assertEquals("b2",row.getClassAttribute());
-            }
-        }
-
-    }
-
-    public void testTablesWithEmptyBody() throws Exception {
-
-        HtmlPage page = getPage("/faces/standard/dtablewithemptybody.jsp");
-        String xml = page.asText();
-        System.out.println(xml);
-        assertNotNull(page);
-
-        assertEmptyTable("Empty", page, false);
-
-        HtmlTable table = (HtmlTable) page.getElementById("Some");
-        assertNotNull(table);
-        HtmlTableHeader header = table.getHeader();
-        HtmlTableRow row = assertSingle(header.getRows());
-        HtmlTableCell cell = assertSingle(row.getCells());
-        assertFalse(cell.hasAttribute("colspan"));
-        HtmlTableFooter footer = table.getFooter();
-        row = assertSingle(footer.getRows());
-        cell = assertSingle(row.getCells());
-        assertFalse(cell.hasAttribute("colspan"));
-        HtmlTableBody body = assertSingle(table.getBodies());
-        row = assertSingle(body.getRows());
-        cell = assertSingle(row.getCells());
-        assertEquals("", cell.asText());
-
-        assertEmptyTable("PureEmptyDataTable", page, false);
-
-        // panelGridTests
-        assertEmptyTable("PureEmptyPanelGrid", page, false);
-        assertEmptyTable("NoRenderedContentPanelGrid", page, true);
-
-    }
-
-    /**
-     * tests that a table with the given id exists, and that it is rendered as
-     * <table>
-     * <tr>
-     * <td></td>
-     * </tr>
-     * </table>
-     *
-     * @param tableId
-     *            the id of the table
-     * @param page
-     *            the page to lookup the table in
-     */
-    private static void assertEmptyTable(final String tableId,
-            final HtmlPage page, final boolean hasHeader) {
-        HtmlTable table = (HtmlTable) page.getElementById(tableId);
-        assertNotNull("Should find Table with ID: " + tableId, table);
-        // Test that we have only one row at all
-        List<HtmlTableRow> allRows = table.getRows();
-        int expectedRowCount = hasHeader ? 2 : 1;
-        assertEquals("Table " + tableId
-                + " should have " + expectedRowCount
-                + " row(s)", expectedRowCount,
-                allRows.size());
-        // test that we have <tbody><tr><td></td></tr></tbody>
-        HtmlTableBody body = assertSingle(tableId + "should have one tbody",
-                table.getBodies());
-        HtmlTableRow row = assertSingle(tableId + ":tbody should have one tr",
-                body.getRows());
-        HtmlTableCell cell = assertSingle(tableId
-                + ":tbody:tr should have one td", row.getCells());
-        assertEquals(tableId + " the single td should be empty", "", cell
-                .asText());
-    }
-
-    private static <T> T assertSingle(final String msg, final List<T> input) {
-        assertEquals(msg, 1, input.size());
-        return input.get(0);
-    }
-
-    private static <T> T assertSingle(final List<T> input) {
-        assertEquals(1, input.size());
-        return input.get(0);
-    }
-
-    public void testTableForms() throws Exception {
-        getPage("/faces/standard/dtablemultiforms.jsp");
-        checkTrue("out","");
-
-        HtmlTextInput in0 = (HtmlTextInput) lastpage.getHtmlElementById("table:0:columnform:columninput");
-        in0.setValueAttribute("test0");
-
-        HtmlSubmitInput button0 = (HtmlSubmitInput) lastpage.getHtmlElementById("table:0:columnform:columnbutton");
-        lastpage = (HtmlPage) button0.click();
-
-        checkTrue("out","test0");
-
-        HtmlTextInput in1 = (HtmlTextInput) lastpage.getHtmlElementById("table:1:columnform:columninput");
-        in1.setValueAttribute("test1");
-
-        HtmlSubmitInput button1 = (HtmlSubmitInput) lastpage.getHtmlElementById("table:1:columnform:columnbutton");
-        lastpage = (HtmlPage) button1.click();
-
-        checkTrue("out","test1");
-
-        HtmlTextInput in2 = (HtmlTextInput) lastpage.getHtmlElementById("table:2:columnform:columninput");
-        in2.setValueAttribute("test2");
-
-        HtmlSubmitInput button2 = (HtmlSubmitInput) lastpage.getHtmlElementById("table:2:columnform:columnbutton");
-        lastpage = (HtmlPage) button2.click();
-
-        checkTrue("out","test2");
-
-        HtmlTextInput finalin = (HtmlTextInput) lastpage.getHtmlElementById("finalform:finalinput");
-        finalin.setValueAttribute("testfinal");
-
-        HtmlSubmitInput finalbutton = (HtmlSubmitInput) lastpage.getHtmlElementById("finalform:finalbutton");
-        lastpage = (HtmlPage) finalbutton.click();
-
-        checkTrue("out","testfinal");
-
-    }
-}
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/DuplicateIds04.java b/jsf-ri/systest/src/com/sun/faces/systest/DuplicateIds04.java
index f7c12dd..7f686d9 100644
--- a/jsf-ri/systest/src/com/sun/faces/systest/DuplicateIds04.java
+++ b/jsf-ri/systest/src/com/sun/faces/systest/DuplicateIds04.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -34,8 +38,6 @@
  * holder.
  */
 
-
-
 package com.sun.faces.systest;
 
 import java.util.List;
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/DuplicateIds04TestCase.java b/jsf-ri/systest/src/com/sun/faces/systest/DuplicateIds04TestCase.java
index 63dcaa7..7fa5a0d 100644
--- a/jsf-ri/systest/src/com/sun/faces/systest/DuplicateIds04TestCase.java
+++ b/jsf-ri/systest/src/com/sun/faces/systest/DuplicateIds04TestCase.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -39,7 +43,7 @@ package com.sun.faces.systest;
 
 import com.gargoylesoftware.htmlunit.html.HtmlPage;
 import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
-import com.sun.faces.htmlunit.AbstractTestCase;
+import com.sun.faces.htmlunit.HtmlUnitFacesTestCase;
 import junit.framework.Test;
 import junit.framework.TestSuite;
 
@@ -50,7 +54,7 @@ import java.util.List;
  * <p>Verify that required validation occurrs for Select* components.</p>
  */
 
-public class DuplicateIds04TestCase extends AbstractTestCase {
+public class DuplicateIds04TestCase extends HtmlUnitFacesTestCase {
 
 
     // ------------------------------------------------------------ Constructors
@@ -114,7 +118,7 @@ public class DuplicateIds04TestCase extends AbstractTestCase {
 	HtmlSubmitInput button = (HtmlSubmitInput) list.get(0);
 	client.setThrowExceptionOnFailingStatusCode(false);
 	page = (HtmlPage) button.click();
-	assertTrue(-1 != page.asText().indexOf("j_id0:j_id2"));
+	assertTrue(page.asText().matches("(?s).*j_id.*:j_id.*"));
 	assertTrue(-1 != page.asText().indexOf("Duplicate"));
 	client.setThrowExceptionOnFailingStatusCode(true);
     }
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/DynamicComponent.java b/jsf-ri/systest/src/com/sun/faces/systest/DynamicComponent.java
index 0dda115..0fd28bd 100644
--- a/jsf-ri/systest/src/com/sun/faces/systest/DynamicComponent.java
+++ b/jsf-ri/systest/src/com/sun/faces/systest/DynamicComponent.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/DynamicComponentTag.java b/jsf-ri/systest/src/com/sun/faces/systest/DynamicComponentTag.java
index d6de849..07fe73c 100644
--- a/jsf-ri/systest/src/com/sun/faces/systest/DynamicComponentTag.java
+++ b/jsf-ri/systest/src/com/sun/faces/systest/DynamicComponentTag.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/FacetComponent.java b/jsf-ri/systest/src/com/sun/faces/systest/FacetComponent.java
index ef2a30a..9279d97 100644
--- a/jsf-ri/systest/src/com/sun/faces/systest/FacetComponent.java
+++ b/jsf-ri/systest/src/com/sun/faces/systest/FacetComponent.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/FacetComponentTag.java b/jsf-ri/systest/src/com/sun/faces/systest/FacetComponentTag.java
index 3ab5c1a..72b5a7e 100644
--- a/jsf-ri/systest/src/com/sun/faces/systest/FacetComponentTag.java
+++ b/jsf-ri/systest/src/com/sun/faces/systest/FacetComponentTag.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/FlashMessagesTestCase.java b/jsf-ri/systest/src/com/sun/faces/systest/FlashMessagesTestCase.java
deleted file mode 100644
index 1a03699..0000000
--- a/jsf-ri/systest/src/com/sun/faces/systest/FlashMessagesTestCase.java
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- *
- * Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
- *
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- *
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- *
- * Contributor(s):
- *
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package com.sun.faces.systest;
-
-import com.gargoylesoftware.htmlunit.html.HtmlButtonInput;
-import com.sun.faces.htmlunit.AbstractTestCase;
-import com.gargoylesoftware.htmlunit.html.HtmlPage;
-import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-/**
-  *
- */
-public class FlashMessagesTestCase extends AbstractTestCase {
-
-    /**
-     * Construct a new instance of this test case.
-     *
-     * @param name Name of the test case
-     */
-    public FlashMessagesTestCase(String name) {
-        super(name);
-    }
-
-
-    /**
-     * Set up instance variables required by this test case.
-     */
-    public void setUp() throws Exception {
-        super.setUp();
-    }
-
-
-    /**
-     * Return the tests included in this test suite.
-     */
-    public static Test suite() {
-        return (new TestSuite(FlashMessagesTestCase.class));
-    }
-
-
-    /**
-     * Tear down instance variables required by this test case.
-     */
-    public void tearDown() {
-        super.tearDown();
-    }
-
-
-    // ------------------------------------------------------------ Test Methods
-
-
-    /**
-     * Added for issue 1476.
-     */
-    public void testBooleanCheckboxSubmittedValue() throws Exception {
-
-        HtmlPage page = getPage("/faces/flash/flashKeepMessages01.xhtml");
-        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("nextButton");
-        page = button.click();
-        String pageText = page.asText();
-        assertTrue(pageText.contains("Mesage 1 survives redirect"));
-        assertTrue(pageText.contains("Mesage 2 survives redirect"));
-
-
-    }
-}
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/FlashReaperBean.java b/jsf-ri/systest/src/com/sun/faces/systest/FlashReaperBean.java
deleted file mode 100644
index bedea99..0000000
--- a/jsf-ri/systest/src/com/sun/faces/systest/FlashReaperBean.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- *
- * Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
- *
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- *
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- *
- * Contributor(s):
- *
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package com.sun.faces.systest;
-
-import com.sun.faces.config.WebConfiguration;
-import com.sun.faces.context.flash.ELFlash;
-import java.lang.reflect.Field;
-import java.util.Map;
-import javax.faces.bean.ApplicationScoped;
-import javax.faces.bean.ManagedBean;
-import javax.faces.context.FacesContext;
-
- at ManagedBean(eager=true)
- at ApplicationScoped
-public class FlashReaperBean {
-
-    static final int NUMBER_OF_ZOMBIES = 12;
-
-    public  FlashReaperBean() {
-
-        WebConfiguration config = WebConfiguration.getInstance();
-
-        config.overrideContextInitParameter(WebConfiguration.WebContextInitParameter.NumberOfConcurrentFlashUsers, "" + NUMBER_OF_ZOMBIES);
-        config.overrideContextInitParameter(WebConfiguration.WebContextInitParameter.NumberOfFlashesBetweenFlashReapings, "24");
-
-    }
-
-    public String getNumberEntriesInInnerMap() throws Exception {
-        String result = null;
-
-        ELFlash flash = (ELFlash) FacesContext.getCurrentInstance().getExternalContext().getFlash();
-        Field innerMapField = ELFlash.class.getDeclaredField("flashInnerMap");
-        innerMapField.setAccessible(true);
-        Map<String,Map<String, Object>> innerMap =
-                (Map<String,Map<String, Object>>) innerMapField.get(flash);
-        result = "" + innerMap.size();
-
-        return result;
-    }
-
-}
\ No newline at end of file
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/FlashReaperTestCase.java b/jsf-ri/systest/src/com/sun/faces/systest/FlashReaperTestCase.java
deleted file mode 100644
index c9389f0..0000000
--- a/jsf-ri/systest/src/com/sun/faces/systest/FlashReaperTestCase.java
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- *
- * Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
- *
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- *
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- *
- * Contributor(s):
- *
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package com.sun.faces.systest;
-
-import com.gargoylesoftware.htmlunit.html.HtmlPage;
-import com.sun.faces.htmlunit.AbstractTestCase;
-import java.net.URL;
-import java.net.URLConnection;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-/**
-  *
- */
-public class FlashReaperTestCase extends AbstractTestCase {
-
-    /**
-     * Construct a new instance of this test case.
-     *
-     * @param name Name of the test case
-     */
-    public FlashReaperTestCase(String name) {
-        super(name);
-    }
-
-
-    /**
-     * Set up instance variables required by this test case.
-     */
-    public void setUp() throws Exception {
-        super.setUp();
-    }
-
-
-    /**
-     * Return the tests included in this test suite.
-     */
-    public static Test suite() {
-        return (new TestSuite(FlashReaperTestCase.class));
-    }
-
-
-    /**
-     * Tear down instance variables required by this test case.
-     */
-    public void tearDown() {
-        super.tearDown();
-    }
-
-
-    // ------------------------------------------------------------ Test Methods
-
-
-    public void testFlashesAreReaped() throws Exception {
-
-        URL makeZombie = getURL("/faces/flashReaper.xhtml");
-        URLConnection zombieConnection;
-        HtmlPage page;
-        int numberOfReaps = 0, numberEntriesInInnerMap = 0;
-        boolean didReap = false;
-
-
-        for (int i = 0; i < 50; i++) {
-            zombieConnection = makeZombie.openConnection();
-            zombieConnection.getContent();
-            zombieConnection.getInputStream().close();
-            page = getPage("/faces/flashReaper.xhtml");
-
-            numberEntriesInInnerMap = Integer.parseInt(page.asText().trim());
-            if (numberEntriesInInnerMap <= FlashReaperBean.NUMBER_OF_ZOMBIES) {
-                didReap = true;
-                numberOfReaps++;
-            }
-        }
-
-        assertTrue(didReap);
-        assertTrue(2 < numberOfReaps);
-
-    }
-}
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/FlashViewParamTestCase.java b/jsf-ri/systest/src/com/sun/faces/systest/FlashViewParamTestCase.java
deleted file mode 100644
index 655bd11..0000000
--- a/jsf-ri/systest/src/com/sun/faces/systest/FlashViewParamTestCase.java
+++ /dev/null
@@ -1,115 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- *
- * Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
- *
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- *
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- *
- * Contributor(s):
- *
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package com.sun.faces.systest;
-
-import com.gargoylesoftware.htmlunit.html.HtmlAnchor;
-import com.gargoylesoftware.htmlunit.html.HtmlButtonInput;
-import com.sun.faces.htmlunit.AbstractTestCase;
-import com.gargoylesoftware.htmlunit.html.HtmlPage;
-import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-/**
-  *
- */
-public class FlashViewParamTestCase extends AbstractTestCase {
-
-    /**
-     * Construct a new instance of this test case.
-     *
-     * @param name Name of the test case
-     */
-    public FlashViewParamTestCase(String name) {
-        super(name);
-    }
-
-
-    /**
-     * Set up instance variables required by this test case.
-     */
-    public void setUp() throws Exception {
-        super.setUp();
-    }
-
-
-    /**
-     * Return the tests included in this test suite.
-     */
-    public static Test suite() {
-        return (new TestSuite(FlashViewParamTestCase.class));
-    }
-
-
-    /**
-     * Tear down instance variables required by this test case.
-     */
-    public void tearDown() {
-        super.tearDown();
-    }
-
-
-    // ------------------------------------------------------------ Test Methods
-
-
-    /**
-     * Added for issue 904.
-     */
-    public void testBooleanCheckboxSubmittedValue() throws Exception {
-
-        HtmlPage page = getPage("/faces/flash01.xhtml");
-        HtmlButtonInput button = (HtmlButtonInput) page.getElementById("nextButton");
-        page = button.click();
-        assertTrue(page.asText().contains("foo = bar"));
-
-        page = getPage("/faces/flash01.xhtml");
-        HtmlAnchor link = (HtmlAnchor) page.getElementById("nextLink");
-        page = link.click();
-        assertTrue(page.asText().contains("foo = bar"));
-
-        page = getPage("/faces/flash01.xhtml");
-        link = (HtmlAnchor) page.getElementById("nextCommandLink");
-        page = link.click();
-        assertTrue(page.asText().contains("foo = bar"));
-
-        page = getPage("/faces/flash01.xhtml");
-        HtmlSubmitInput submitButton = (HtmlSubmitInput) page.getElementById("nextCommandButton");
-        page = submitButton.click();
-        assertTrue(page.asText().contains("foo = bar"));
-
-    }
-}
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/HelloBean.java b/jsf-ri/systest/src/com/sun/faces/systest/HelloBean.java
new file mode 100644
index 0000000..2c8085e
--- /dev/null
+++ b/jsf-ri/systest/src/com/sun/faces/systest/HelloBean.java
@@ -0,0 +1,67 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.ApplicationScoped;
+
+ at ManagedBean(name = "hello", eager = true)
+ at ApplicationScoped
+public class HelloBean {
+    String fname;
+    public HelloBean() {
+        System.out.println("HelloBean instantiated");
+    }
+    public String getMessage() {
+        return "Hello " + fname + ", Good Morning!";
+    }
+    public String getFname() {
+        return fname;
+    }
+    public  void setFname(String name) {
+        this.fname = name;
+    }
+
+
+    public String getNextAction() {
+        return "/submit.xhtml";
+    }
+}
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/LinkTypeAttributeTestCase.java b/jsf-ri/systest/src/com/sun/faces/systest/LinkTypeAttributeTestCase.java
deleted file mode 100644
index 58e45c3..0000000
--- a/jsf-ri/systest/src/com/sun/faces/systest/LinkTypeAttributeTestCase.java
+++ /dev/null
@@ -1,116 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- *
- * Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
- *
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- *
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- *
- * Contributor(s):
- *
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package com.sun.faces.systest;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-import com.sun.faces.htmlunit.AbstractTestCase;
-import com.gargoylesoftware.htmlunit.html.HtmlPage;
-import com.gargoylesoftware.htmlunit.html.HtmlElement;
-
-
-/**
- * Test case for issue 1098.
- */
-public class LinkTypeAttributeTestCase extends AbstractTestCase {
-
-    // ------------------------------------------------------------ Constructors
-
-
-       /**
-        * Construct a new instance of this test case.
-        *
-        * @param name Name of the test case
-        */
-       public LinkTypeAttributeTestCase(String name) {
-           super(name);
-       }
-
-    // ------------------------------------------------------ Instance Variables
-
-       // ---------------------------------------------------- Overall Test Methods
-
-
-       /**
-        * Set up instance variables required by this test case.
-        */
-       public void setUp() throws Exception {
-           super.setUp();
-       }
-
-
-       /**
-        * Return the tests included in this test suite.
-        */
-       public static Test suite() {
-           return (new TestSuite(LinkTypeAttributeTestCase.class));
-       }
-
-
-       /**
-        * Tear down instance variables required by this test case.
-        */
-       public void tearDown() {
-           super.tearDown();
-       }
-
-
-    // ------------------------------------------------------------ Test Methods
-
-
-    public void testLinkAttributeNotDuplicated() throws Exception {
-
-        String type ="type=\"type\"";
-        HtmlPage page = getPage("/faces/standard/linkTypeAttribute.xhtml");
-
-        HtmlElement link = page.getElementById("form:clink");
-        String xml = link.asXml();
-        int idx = xml.indexOf(type);
-        assertTrue(idx != -1);
-        idx = xml.indexOf(type, idx + type.length());
-        assertTrue(idx == -1);
-
-        link = page.getElementById("form:link");
-        xml = link.asXml();
-        idx = xml.indexOf(type);
-        assertTrue(idx != -1);
-        idx = xml.indexOf(type, idx + type.length());
-        assertTrue(idx == -1);
-
-    }
-
-}
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/MessageBean.java b/jsf-ri/systest/src/com/sun/faces/systest/MessageBean.java
new file mode 100644
index 0000000..6d5ff8d
--- /dev/null
+++ b/jsf-ri/systest/src/com/sun/faces/systest/MessageBean.java
@@ -0,0 +1,72 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest;
+
+import javax.faces.application.FacesMessage;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.ManagedProperty;
+import javax.faces.bean.RequestScoped;
+import javax.faces.context.FacesContext;
+
+ at ManagedBean (eager=true)
+ at RequestScoped
+public class MessageBean {
+
+    public MessageBean() {
+        FacesContext context = FacesContext.getCurrentInstance();
+        FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO,
+                "This is the summary", "This is the detail");
+        context.addMessage("output1", message);
+        context.addMessage("output2", message);
+    }
+
+    protected String value;
+
+    public String getValue() {
+        return "";
+    }
+
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+
+}
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/NamingTag.java b/jsf-ri/systest/src/com/sun/faces/systest/NamingTag.java
index 399f192..27bb4f6 100644
--- a/jsf-ri/systest/src/com/sun/faces/systest/NamingTag.java
+++ b/jsf-ri/systest/src/com/sun/faces/systest/NamingTag.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/NavigationTestCase.java b/jsf-ri/systest/src/com/sun/faces/systest/NavigationTestCase.java
deleted file mode 100644
index ccd8a6b..0000000
--- a/jsf-ri/systest/src/com/sun/faces/systest/NavigationTestCase.java
+++ /dev/null
@@ -1,259 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package com.sun.faces.systest;
-
-import com.gargoylesoftware.htmlunit.FailingHttpStatusCodeException;
-import com.gargoylesoftware.htmlunit.WebClient;
-import com.gargoylesoftware.htmlunit.html.HtmlBody;
-import com.gargoylesoftware.htmlunit.html.HtmlElement;
-import com.gargoylesoftware.htmlunit.html.HtmlForm;
-import com.gargoylesoftware.htmlunit.html.HtmlPage;
-import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
-import com.gargoylesoftware.htmlunit.html.HtmlInput;
-import com.sun.faces.htmlunit.AbstractTestCase;
-import junit.framework.Test;
-import junit.framework.TestCase;
-import junit.framework.TestSuite;
-
-import javax.faces.component.NamingContainer;
-
-/**
- * <p>Test Case for JSP Interoperability.</p>
- */
-
-public class NavigationTestCase extends AbstractTestCase {
-
-
-    // ------------------------------------------------------------ Constructors
-
-
-    /**
-     * Construct a new instance of this test case.
-     *
-     * @param name Name of the test case
-     */
-    public NavigationTestCase(String name) {
-        super(name);
-    }
-
-
-    // ------------------------------------------------------ Instance Variables
-
-
-    // ---------------------------------------------------- Overall Test Methods
-
-
-    /**
-     * Set up instance variables required by this test case.
-     */
-    public void setUp() throws Exception {
-        super.setUp();
-    }
-
-
-    /**
-     * Return the tests included in this test suite.
-     */
-    public static Test suite() {
-        return (new TestSuite(NavigationTestCase.class));
-    }
-
-
-    /**
-     * Tear down instance variables required by this test case.
-     */
-    public void tearDown() {
-        super.tearDown();
-    }
-
-
-    // ------------------------------------------------- Individual Test Methods
-
-
-    // Test dynamically adding and removing components
-    public void testRedirect() throws Exception {
-        client.setRedirectEnabled(false);
-        // the navigation-case for this url is set up to cause a redirect
-        HtmlPage page = getPage("/faces/redirect.jsp");
-        HtmlForm form = getFormById(page, "redirect");
-        assertNotNull("form exists", form);
-        HtmlSubmitInput submit = (HtmlSubmitInput)
-            form.getInputByName("redirect" +
-                                NamingContainer.SEPARATOR_CHAR +
-                                "submit");
-        boolean exceptionThrown = false;
-        try {
-            page = (HtmlPage) submit.click();
-        } catch (FailingHttpStatusCodeException fhsce) {
-            assertEquals("Didn't get expected redirect",
-                         fhsce.getStatusCode(), 302);
-            exceptionThrown = true;
-        }
-        assertTrue("Didn't get expected redirect", exceptionThrown);
-    }
-
-
-    public void testNavigateWithVerbatim() throws Exception {
-        HtmlForm form;
-        HtmlSubmitInput submit;
-        HtmlPage page, page1;
-
-        page = getPage("/faces/jsp/verbatim-test.jsp");
-        form = getFormById(page, "form1");
-        assertNotNull("form exists", form);
-        submit = (HtmlSubmitInput)
-            form.getInputByName("form1" + NamingContainer.SEPARATOR_CHAR +
-                                "submit");
-
-        // press the button
-	try {
-            page1 = (HtmlPage) submit.click();
-            assertTrue(-1 != page1.asText().indexOf("Thank you"));
-	} catch (Exception e) {
-	    e.printStackTrace();
-	    assertTrue(false);
-	}
-    }
-
-    public void testNavigateWithVerbatim_One() throws Exception {
-        HtmlForm form;
-        HtmlSubmitInput submit;
-        HtmlPage page, page1;
-                                                                                
-        page = getPage("/faces/jsp/verbatim-one-test.jsp");
-        form = getFormById(page, "form");
-        assertNotNull("form exists", form);
-        submit = (HtmlSubmitInput)
-            form.getInputByName("form" + NamingContainer.SEPARATOR_CHAR +
-                                "submit");
-                                                                                
-        // press the link, return to the same page, and check that
-        // output text (header) is still present...
- 
-        try {
-            page1 = (HtmlPage) submit.click();
-            assertTrue(-1 != page1.asText().indexOf("this is the header"));
-        } catch (Exception e) {
-            e.printStackTrace();
-            assertTrue(false);
-        }
-    }
-
-    public void testNavigateWithVerbatim_Two() throws Exception {
-        HtmlForm form;
-        HtmlSubmitInput submit;
-        HtmlPage page, page1;
-                                                                               
-                                                                               
-        page = getPage("/faces/jsp/verbatim-two-test.jsp");
-        form = getFormById(page, "form");
-        assertNotNull("form exists", form);
-        submit = (HtmlSubmitInput)
-            form.getInputByName("form" + NamingContainer.SEPARATOR_CHAR +
-                                "submit");
-                                                                               
-                                                                               
-        // submit the form, return to the same page, and check that
-        // output text (header) is still present...
-        // and verbatim text is still present...
-                                                                               
-        try {
-            page1 = (HtmlPage) submit.click();
-            assertTrue(-1 != page1.asText().indexOf("verbatim one text here"));
-            assertTrue(-1 != page1.asText().indexOf("this is the header"));
-            assertTrue(-1 != page1.asText().indexOf("verbatim two text here"));
-        } catch (Exception e) {
-            e.printStackTrace();
-            assertTrue(false);
-        }
-    }
-    
-    public void testNavigateWithEnum() throws Exception {
-        HtmlForm form;
-        HtmlSubmitInput submit;
-        HtmlPage page, page1;
-                                                                               
-                                                                               
-        page = getPage("/faces/enum01.jsp");
-        form = getFormById(page, "form");
-        assertNotNull("form exists", form);
-        submit = (HtmlSubmitInput)
-            form.getInputByName("form" + NamingContainer.SEPARATOR_CHAR +
-                                "go");
-                                                                               
-        // submit the form, go to next page, check that the text exists
-                                                                               
-        try {
-            page1 = (HtmlPage) submit.click();
-            assertTrue(-1 != page1.asText().indexOf("/hello.jsp PASSED"));
-        } catch (Exception e) {
-            e.printStackTrace();
-            assertTrue(false);
-        }
-        
-        page = getPage("/faces/enum01.jsp");
-        form = getFormById(page, "form");
-        assertNotNull("form exists", form);
-        submit = (HtmlSubmitInput)
-            form.getInputByName("form" + NamingContainer.SEPARATOR_CHAR +
-                                "stay");
-                                                                               
-        // submit the form, stay on same page, check that the text does not exist
-                                                                               
-        try {
-            page1 = (HtmlPage) submit.click();
-            assertTrue(-1 == page1.asText().indexOf("/hello.jsp PASSED"));
-            assertTrue(-1 != page1.asText().indexOf("stay here"));
-        } catch (Exception e) {
-            e.printStackTrace();
-            assertTrue(false);
-        }
-        
-    }
-
-
-    public void testNullOutcomeNoMessage() throws Exception {
-        HtmlPage page = getPage("/faces/standard/selectmany05.xhtml");
-
-        HtmlInput input = getInputContainingGivenId(page, "command");
-        page = (HtmlPage) input.click();
-
-        // if there is no outcome, no message should be displayed to the user
-        assertTrue(!page.asText().contains("javax_faces_developmentstage_messages"));
-    }
-
-}
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/OutputTargetsTestCase.java b/jsf-ri/systest/src/com/sun/faces/systest/OutputTargetsTestCase.java
deleted file mode 100644
index cfc8f56..0000000
--- a/jsf-ri/systest/src/com/sun/faces/systest/OutputTargetsTestCase.java
+++ /dev/null
@@ -1,254 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- *
- * Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
- *
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- *
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- *
- * Contributor(s):
- *
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package com.sun.faces.systest;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-import com.sun.faces.htmlunit.AbstractTestCase;
-import com.gargoylesoftware.htmlunit.html.HtmlPage;
-import com.gargoylesoftware.htmlunit.html.HtmlAnchor;
-import com.gargoylesoftware.htmlunit.html.HtmlInput;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Test h:link and h:button.
- */
-public class OutputTargetsTestCase extends AbstractTestCase {
-
-    /**
-     * Construct a new instance of this test case.
-     *
-     * @param name Name of the test case
-     */
-    public OutputTargetsTestCase(String name) {
-        super(name);
-    }
-
-
-    /**
-     * Set up instance variables required by this test case.
-     */
-    public void setUp() throws Exception {
-        super.setUp();
-    }
-
-
-    /**
-     * Return the tests included in this test suite.
-     */
-    public static Test suite() {
-        return (new TestSuite(OutputTargetsTestCase.class));
-    }
-
-
-    /**
-     * Tear down instance variables required by this test case.
-     */
-    public void tearDown() {
-        super.tearDown();
-    }
-
-
-    // ------------------------------------------------------------ Test Methods
-
-
-    public void testOutputTargetButton() throws Exception {
-        HtmlPage page = getPage("/faces/standard/outcometarget01.xhtml");
-        // get the page twice to avoid jsession ID encoding in the results
-        page = getPage("/faces/standard/outcometarget01.xhtml");
-        assertNotNull(page);
-
-        List<HtmlInput> buttonList = new ArrayList<HtmlInput>(7);
-        getAllElementsOfGivenClass(page, buttonList, HtmlInput.class);
-        assertTrue(buttonList.size() == 7);
-
-        HtmlInput button = buttonList.get(0);
-        String onclick = button.getOnClickAttribute();
-        assertEquals("button", button.getTypeAttribute());
-        assertEquals("button1", button.getIdAttribute());
-        assertEquals("window.location.href='/jsf-systest/faces/standard/outcometarget01.xhtml'; return false;",
-                     onclick);
-        page = button.click();
-        assertEquals("outcometarget01", page.getTitleText());
-
-        // ---------------------------------------------------------------------
-
-        button = buttonList.get(1);
-        onclick = button.getOnClickAttribute();
-        assertEquals("button", button.getTypeAttribute());
-        assertEquals("button2", button.getIdAttribute());
-        assertEquals("window.location.href='/jsf-systest/faces/standard/nav1.xhtml'; return false;", onclick);
-        page = button.click();
-        assertEquals("nav1", page.getTitleText());
-        page = getPage("/faces/standard/outcometarget01.xhtml");
-
-        // ---------------------------------------------------------------------
-
-        button = buttonList.get(2);
-        onclick = button.getOnClickAttribute();
-        assertEquals("button", button.getTypeAttribute());
-        assertEquals("button3", button.getIdAttribute());
-        assertEquals("window.location.href='/jsf-systest/faces/standard/outcometarget01.xhtml?id=page&id2=view#about'; return false;",
-                     onclick);
-        page = button.click();
-        assertEquals("outcometarget01", page.getTitleText());
-
-        // ---------------------------------------------------------------------
-
-        button = buttonList.get(3);
-        onclick = button.getOnClickAttribute();
-        assertEquals("button", button.getTypeAttribute());
-        assertEquals("button4", button.getIdAttribute());
-        assertEquals("alert('foo'); window.location.href='/jsf-systest/faces/standard/nav2.xhtml'; return false;", onclick);
-        page = button.click();
-        assertEquals("nav2", page.getTitleText());
-
-        // ---------------------------------------------------------------------
-
-        button = buttonList.get(4);
-        onclick = button.getOnClickAttribute();
-        assertEquals("button", button.getTypeAttribute());
-        assertEquals("button5", button.getIdAttribute());
-        assertEquals("window.location.href='/jsf-systest/faces/standard/outcometarget01.xhtml?id=page'; return false;", onclick);
-        page = button.click();
-        assertEquals("outcometarget01", page.getTitleText());
-
-        // ---------------------------------------------------------------------
-
-        button = buttonList.get(5);
-        onclick = button.getOnClickAttribute();
-        assertEquals("button", button.getTypeAttribute());
-        assertEquals("button6", button.getIdAttribute());
-        assertEquals("window.location.href='/jsf-systest/faces/standard/outcometarget01.xhtml?id=page&id2=view'; return false;", onclick);
-        page = button.click();
-        assertEquals("outcometarget01", page.getTitleText());
-
-        // ---------------------------------------------------------------------
-
-        button = buttonList.get(6);
-        onclick = button.getOnClickAttribute();
-        assertEquals("button", button.getTypeAttribute());
-        assertEquals("button7", button.getIdAttribute());
-        assertEquals("window.location.href='/jsf-systest/faces/standard/outcometarget01.xhtml?id=config&id2=view'; return false;", onclick);
-        page = button.click();
-        assertEquals("outcometarget01", page.getTitleText());
-
-    }
-
-
-    public void testOutputTargetLink() throws Exception {
-
-        HtmlPage page = getPage("/faces/standard/outcometarget01.xhtml");
-        // get the page twice to avoid jsession ID encoding in the results
-        page = getPage("/faces/standard/outcometarget01.xhtml");
-        assertNotNull(page);
-
-        List<HtmlAnchor> linkList = new ArrayList<HtmlAnchor>(7);
-        getAllElementsOfGivenClass(page, linkList, HtmlAnchor.class);
-        assertTrue(linkList.size() == 7);
-
-        HtmlAnchor link = linkList.get(0);
-        String onclick = link.getOnClickAttribute();
-        assertEquals("link1", link.getIdAttribute());
-        assertEquals("", onclick);
-        assertEquals("/jsf-systest/faces/standard/outcometarget01.xhtml", link.getHrefAttribute());
-        page = link.click();
-        assertEquals("outcometarget01", page.getTitleText());
-
-        // ---------------------------------------------------------------------
-
-        link = linkList.get(1);
-        onclick = link.getOnClickAttribute();
-        assertEquals("link2", link.getIdAttribute());
-        assertEquals("", onclick);
-        assertEquals("/jsf-systest/faces/standard/nav1.xhtml", link.getHrefAttribute());
-        page = link.click();
-        assertEquals("nav1", page.getTitleText());
-        page = getPage("/faces/standard/outcometarget01.xhtml");
-
-        // ---------------------------------------------------------------------
-
-        link = linkList.get(2);
-        onclick = link.getOnClickAttribute();
-        assertEquals("link3", link.getIdAttribute());
-        assertEquals("", onclick);
-        assertEquals("/jsf-systest/faces/standard/outcometarget01.xhtml?id=page&id2=view#about",
-                     link.getHrefAttribute());
-        page = link.click();
-        assertEquals("outcometarget01", page.getTitleText());
-
-        // ---------------------------------------------------------------------
-
-        link = linkList.get(3);
-        onclick = link.getOnClickAttribute();
-        assertEquals("link4", link.getIdAttribute());
-        assertEquals("alert('foo');", onclick);
-        assertEquals("/jsf-systest/faces/standard/nav2.xhtml", link.getHrefAttribute());
-        page = link.click();
-        assertEquals("nav2", page.getTitleText());
-
-        // ---------------------------------------------------------------------
-
-        link = linkList.get(4);
-        onclick = link.getOnClickAttribute();
-        assertEquals("link5", link.getIdAttribute());
-        assertEquals("/jsf-systest/faces/standard/outcometarget01.xhtml?id=page", link.getHrefAttribute());
-        page = link.click();
-        assertEquals("outcometarget01", page.getTitleText());
-
-        // ---------------------------------------------------------------------
-
-        link = linkList.get(5);
-        onclick = link.getOnClickAttribute();
-        assertEquals("link6", link.getIdAttribute());
-        assertEquals("/jsf-systest/faces/standard/outcometarget01.xhtml?id=page&id2=view", link.getHrefAttribute());
-        page = link.click();
-        assertEquals("outcometarget01", page.getTitleText());
-
-        // ---------------------------------------------------------------------
-
-        link = linkList.get(6);
-        onclick = link.getOnClickAttribute();
-        assertEquals("link7", link.getIdAttribute());
-        assertEquals("/jsf-systest/faces/standard/outcometarget01.xhtml?id=config&id2=view", link.getHrefAttribute());
-        page = link.click();
-        assertEquals("outcometarget01", page.getTitleText());
-
-    }
-}
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/OutputVerbatimTag.java b/jsf-ri/systest/src/com/sun/faces/systest/OutputVerbatimTag.java
index 3d89603..8ed22f5 100644
--- a/jsf-ri/systest/src/com/sun/faces/systest/OutputVerbatimTag.java
+++ b/jsf-ri/systest/src/com/sun/faces/systest/OutputVerbatimTag.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/RenderKitsTestCase.java b/jsf-ri/systest/src/com/sun/faces/systest/RenderKitsTestCase.java
deleted file mode 100644
index 02fdcd0..0000000
--- a/jsf-ri/systest/src/com/sun/faces/systest/RenderKitsTestCase.java
+++ /dev/null
@@ -1,188 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package com.sun.faces.systest;
-
-import com.gargoylesoftware.htmlunit.ElementNotFoundException;
-import com.gargoylesoftware.htmlunit.html.HtmlForm;
-import com.gargoylesoftware.htmlunit.html.HtmlHiddenInput;
-import com.gargoylesoftware.htmlunit.html.HtmlPage;
-import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
-import com.sun.faces.htmlunit.AbstractTestCase;
-import junit.framework.Test;
-import junit.framework.TestCase;
-import junit.framework.TestSuite;
-
-import javax.faces.component.NamingContainer;
-
-/**
- * <p>Test Case for Multiple RenderKits.</p>
- */
-
-public class RenderKitsTestCase extends AbstractTestCase {
-
-
-    // ------------------------------------------------------------ Constructors
-
-
-    /**
-     * Construct a new instance of this test case.
-     *
-     * @param name Name of the test case
-     */
-    public RenderKitsTestCase(String name) {
-        super(name);
-    }
-
-
-    // ------------------------------------------------------ Instance Variables
-
-
-    // ---------------------------------------------------- Overall Test Methods
-
-
-    /**
-     * Set up instance variables required by this test case.
-     */
-    public void setUp() throws Exception {
-        super.setUp();
-    }
-
-
-    /**
-     * Return the tests included in this test suite.
-     */
-    public static Test suite() {
-        return (new TestSuite(RenderKitsTestCase.class));
-    }
-
-
-    /**
-     * Tear down instance variables required by this test case.
-     */
-    public void tearDown() {
-        super.tearDown();
-    }
-
-
-    // ------------------------------------------------- Individual Test Methods
-
-    public void testRenderKits() throws Exception {
-        HtmlPage page = getPage("/faces/renderkit04.jsp");
-        assertTrue(-1 != page.asText().indexOf("HTML_BASIC"));
-            assertTrue(-1 != page.asText().indexOf("com.sun.faces.renderkit.html_basic.HtmlResponseWriter"));
-
-        HtmlForm form = getFormById(page, "form");
-        assertNotNull("form exists", form);
-        HtmlSubmitInput submit = (HtmlSubmitInput)
-            form.getInputByName("form" +
-                                NamingContainer.SEPARATOR_CHAR +
-                                "submit");
-        try {
-            page = (HtmlPage) submit.click();
-            assertTrue(-1 != page.asText().indexOf("CUSTOM"));
-            assertTrue(-1 != page.asText().indexOf("com.sun.faces.systest.render.CustomResponseWriter"));
-	} catch (Exception e) {
-	    e.printStackTrace();
-	    assertTrue(false);
-        }
-
-        form = getFormById(page, "form");
-        assertNotNull("form exists", form);
-        submit = (HtmlSubmitInput)
-            form.getInputByName("form" +
-                                NamingContainer.SEPARATOR_CHAR +
-                                "submit");
-        try {
-            page = (HtmlPage) submit.click();
-            assertTrue(-1 != page.asText().indexOf("HTML_BASIC"));
-            assertTrue(-1 != page.asText().indexOf("com.sun.faces.renderkit.html_basic.HtmlResponseWriter"));
-	} catch (Exception e) {
-	    e.printStackTrace();
-	    assertTrue(false);
-        }
-    }
-
-    // Assert with no renderKitId specfied on the view, and no defaultRenderKitId, 
-    // HTML_BASIC is set.  Also assert that the hidden field was not written; 
-    public void testNoRenderKitId() throws Exception {
-        HtmlPage page = getPage("/faces/renderkit06.jsp");
-        HtmlForm form = getFormById(page, "form");
-        assertNotNull("form exists", form);
-        HtmlHiddenInput hidden = null;
-        boolean exceptionThrown = false;
-        try {
-            hidden = (HtmlHiddenInput)form.getInputByName("javax.faces.RenderKitId");
-        } catch (ElementNotFoundException e) {
-            exceptionThrown = true;
-        }
-        assertTrue(exceptionThrown);
-        assertTrue(-1 != page.asText().indexOf("HTML_BASIC"));
-        assertTrue(-1 != page.asText().indexOf("com.sun.faces.renderkit.html_basic.HtmlResponseWriter"));
-    }
-
-    // Test when default-render-kit-id is set for application;
-    public void testDefaultRenderKitId() throws Exception {
-        // sets default-render-kit-id in application
-        HtmlPage page = getPage("/faces/renderkit-default.jsp");
-
-        // Load a page with renderKitId="CUSTOM"; 
-        // Assert hidden field is not written because renderKitId == defaultRenderKitId;
-        page = getPage("/faces/renderkit06.jsp");
-        HtmlForm form = getFormById(page, "form");
-        assertNotNull("form exists", form);
-        HtmlHiddenInput hidden = null;
-        boolean exceptionThrown = false;
-        try {
-            hidden = (HtmlHiddenInput)form.getInputByName("javax.faces.RenderKitId");
-        } catch (ElementNotFoundException e) {
-            exceptionThrown = true;
-        }
-        assertTrue(-1 != page.asText().indexOf("CUSTOM"));
-        assertTrue(-1 != page.asText().indexOf("com.sun.faces.systest.render.CustomResponseWriter"));
-
-        // Load a page with renderKitId="HTML_BASIC";
-        // Assert hidden field is written because renderKitId != defaultRenderKitId;
-        page = getPage("/faces/renderkit04.jsp");
-        form = getFormById(page, "form");
-        assertNotNull("form exists", form);
-        hidden = (HtmlHiddenInput)form.getInputByName("javax.faces.RenderKitId");
-        assertNotNull("hidden exists", hidden);
-        assertTrue(-1 != page.asText().indexOf("HTML_BASIC"));
-        assertTrue(-1 != page.asText().indexOf("com.sun.faces.renderkit.html_basic.HtmlResponseWriter"));
-        page = getPage("/faces/renderkit-default-clear.jsp");
-    }
-}
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/ResourceRelocationTestCase.java b/jsf-ri/systest/src/com/sun/faces/systest/ResourceRelocationTestCase.java
deleted file mode 100644
index c975fe0..0000000
--- a/jsf-ri/systest/src/com/sun/faces/systest/ResourceRelocationTestCase.java
+++ /dev/null
@@ -1,200 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- *
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- *
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- *
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- *
- * Contributor(s):
- *
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-
-package com.sun.faces.systest;
-
-import java.util.List;
-import java.util.ArrayList;
-import java.util.Iterator;
-
-import com.sun.faces.htmlunit.AbstractTestCase;
-import com.gargoylesoftware.htmlunit.html.HtmlPage;
-import com.gargoylesoftware.htmlunit.html.HtmlElement;
-import com.gargoylesoftware.htmlunit.html.HtmlHead;
-import com.gargoylesoftware.htmlunit.html.HtmlTitle;
-import com.gargoylesoftware.htmlunit.html.HtmlScript;
-import com.gargoylesoftware.htmlunit.html.HtmlLink;
-import com.gargoylesoftware.htmlunit.html.HtmlBody;
-import com.gargoylesoftware.htmlunit.html.HtmlForm;
-import com.gargoylesoftware.htmlunit.html.HtmlInput;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-/**
- * Validate resource re-location of scripts and stylesheets
- */
-public class ResourceRelocationTestCase extends AbstractTestCase {
-
-
-    public ResourceRelocationTestCase() {
-        this("ResourceRelocationTestCase");
-    }
-
-
-    public ResourceRelocationTestCase(String name) {
-        super(name);
-    }
-
-    public static Test suite() {
-        return (new TestSuite(ResourceRelocationTestCase.class));
-    }
-
-
-    // ------------------------------------------------------------ Test Methods
-
-
-    public void testResourceRelocation() throws Exception {
-
-        resourceRelocationTest("/faces/resourcerelocation.xhtml",true);
-        resourceRelocationTest("/faces/resourcerelocation2.xhtml",false);
-        resourceRelocationTest("/faces/resourcerelocation3.xhtml",false);
-        resourceRelocationTest("/faces/resourcerelocation4.xhtml",true);
-
-    }
-
-    // --------------------------------------------------------- Private Methods
-
-
-    private void resourceRelocationTest(String urlfrag, boolean scriptfirst) throws Exception {
-
-        int scriptPos;
-        int sheetPos;
-
-        if (scriptfirst) {
-            scriptPos = 0;
-            sheetPos = 1;
-        } else {
-            sheetPos = 0;
-            scriptPos = 1;
-        }
-
-        // for this request, the script and stylesheet will be in the head
-        HtmlPage page = getPage(urlfrag+"?location=head");
-        List<HtmlHead> headList = new ArrayList<HtmlHead>(1);
-        getAllElementsOfGivenClass(page, headList, HtmlHead.class);
-        assertTrue(headList.size() == 1);
-        HtmlHead head = headList.get(0);
-        List<HtmlElement> headChildren = getChildren(head);
-        assertTrue(headChildren.size() == 3);
-        assertTrue(headChildren.get(2) instanceof HtmlTitle);
-        assertTrue(headChildren.get(scriptPos) instanceof HtmlScript);
-        assertTrue(headChildren.get(sheetPos) instanceof HtmlLink);
-        List<HtmlBody> bodyList = new ArrayList<HtmlBody>(1);
-        getAllElementsOfGivenClass(page, bodyList, HtmlBody.class);
-        assertTrue(bodyList.size() == 1);
-        HtmlBody body = bodyList.get(0);
-        List<HtmlElement> bodyChildren = getChildren(body);
-        assertTrue(bodyChildren.size() == 1);
-        assertTrue(bodyChildren.get(0) instanceof HtmlForm);
-        List<HtmlForm> formList = new ArrayList<HtmlForm>(1);
-        getAllElementsOfGivenClass(page, formList, HtmlForm.class);
-        assertTrue(formList.size() == 1);
-        HtmlForm form = formList.get(0);
-        List<HtmlElement> formChildren = getChildren(form);
-        assertTrue(formChildren.size() == 2);
-        assertTrue(formChildren.get(0) instanceof HtmlInput);
-        assertTrue(formChildren.get(1) instanceof HtmlInput);
-
-        // for this request, the stylesheet will be in the head, and the script
-        // will be the last child of body
-        page = getPage(urlfrag+"?location=body");
-        headList.clear();
-        getAllElementsOfGivenClass(page, headList, HtmlHead.class);
-        assertTrue(headList.size() == 1);
-        head = headList.get(0);
-        headChildren = getChildren(head);
-        assertTrue(headChildren.size() == 2);
-        assertTrue(headChildren.get(1) instanceof HtmlTitle);
-        assertTrue(headChildren.get(0) instanceof HtmlLink);
-        bodyList.clear();
-        getAllElementsOfGivenClass(page, bodyList, HtmlBody.class);
-        assertTrue(bodyList.size() == 1);
-        body = bodyList.get(0);
-        bodyChildren = getChildren(body);
-        assertTrue(bodyChildren.size() == 2);
-        assertTrue(bodyChildren.get(0) instanceof HtmlForm);
-        assertTrue(bodyChildren.get(1) instanceof HtmlScript);
-        formList.clear();
-        getAllElementsOfGivenClass(page, formList, HtmlForm.class);
-        assertTrue(formList.size() == 1);
-        form = formList.get(0);
-        formChildren = getChildren(form);
-        assertTrue(formChildren.size() == 2);
-        assertTrue(formChildren.get(0) instanceof HtmlInput);
-        assertTrue(formChildren.get(1) instanceof HtmlInput);
-
-        // for this request, the stylesheet will be in the head, and the
-        // script will be the last child of the form
-        page = getPage(urlfrag+"?location=form");
-        headList.clear();
-        getAllElementsOfGivenClass(page, headList, HtmlHead.class);
-        assertTrue(headList.size() == 1);
-        head = headList.get(0);
-        headChildren = getChildren(head);
-        assertTrue(headChildren.size() == 2);
-        assertTrue(headChildren.get(1) instanceof HtmlTitle);
-        assertTrue(headChildren.get(0) instanceof HtmlLink);
-        bodyList.clear();
-        getAllElementsOfGivenClass(page, bodyList, HtmlBody.class);
-        assertTrue(bodyList.size() == 1);
-        body = bodyList.get(0);
-        bodyChildren = getChildren(body);
-        assertTrue(bodyChildren.size() == 1);
-        assertTrue(bodyChildren.get(0) instanceof HtmlForm);
-        formList.clear();
-        getAllElementsOfGivenClass(page, formList, HtmlForm.class);
-        assertTrue(formList.size() == 1);
-        form = formList.get(0);
-        formChildren = getChildren(form);
-        assertTrue(formChildren.size() == 3);
-        assertTrue(formChildren.get(0) instanceof HtmlInput);
-        assertTrue(formChildren.get(1) instanceof HtmlInput);
-        assertTrue(formChildren.get(2) instanceof HtmlScript);
-
-    }
-
-    private List<HtmlElement> getChildren(HtmlElement parent) {
-        List<HtmlElement> list = new ArrayList<HtmlElement>();
-        for (Iterator i = parent.getChildElements().iterator(); i.hasNext();) {
-            Object o = i.next();
-            if (o instanceof HtmlElement) {
-                list.add((HtmlElement) o);
-            }
-        }
-        return list;
-    }
-}
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/SelectManyCollectionTestCase.java b/jsf-ri/systest/src/com/sun/faces/systest/SelectManyCollectionTestCase.java
deleted file mode 100644
index 010d08b..0000000
--- a/jsf-ri/systest/src/com/sun/faces/systest/SelectManyCollectionTestCase.java
+++ /dev/null
@@ -1,270 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package com.sun.faces.systest;
-
-import java.util.List;
-import java.util.ArrayList;
-
-import com.sun.faces.htmlunit.AbstractTestCase;
-import com.gargoylesoftware.htmlunit.html.HtmlPage;
-import com.gargoylesoftware.htmlunit.html.HtmlSelect;
-import com.gargoylesoftware.htmlunit.html.HtmlOption;
-import com.gargoylesoftware.htmlunit.html.HtmlInput;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-
-public class SelectManyCollectionTestCase extends AbstractTestCase {
-
-
-    /**
-     * Construct a new instance of this test case.
-     *
-     * @param name Name of the test case
-     */
-    public SelectManyCollectionTestCase(String name) {
-        super(name);
-    }
-
-
-    /**
-     * Set up instance variables required by this test case.
-     */
-    public void setUp() throws Exception {
-        super.setUp();
-    }
-
-
-    /**
-     * Return the tests included in this test suite.
-     */
-    public static Test suite() {
-        return (new TestSuite(SelectManyCollectionTestCase.class));
-    }
-
-
-    /**
-     * Tear down instance variables required by this test case.
-     */
-    public void tearDown() {
-        super.tearDown();
-    }
-
-
-    // ------------------------------------------------------------ Test Methods
-
-
-    public void testSelectManyCollections() throws Exception {
-
-        HtmlPage page = getPage("/faces/standard/selectmany05.xhtml");
-        String[] selectIds = {
-              "array",
-              "list",
-              "set",
-              "sortedset",
-              "collection",
-              "ilist",
-              "ilist2",
-              "iset",
-              "isortedset",
-              "icollection",
-              "hintString",
-              "hintClass",
-              "object",
-              "intList1",
-              "integerList1",
-              "escape01",
-              "escape02",
-              "emptyItems",
-        };
-        int[] totalNumberOfSelections = {
-              4,
-              4,
-              4,
-              4,
-              4,
-              4,
-              4,
-              4,
-              4,
-              4,
-              4,
-              4,
-              4,
-              4,
-              4,
-              4,
-              4,
-              1,
-        };
-        String[][] initialSelections = {
-              new String[0],
-              new String[0],
-              new String[0],
-              new String[0],
-              new String[0],
-              new String[] { "Bilbo", "Pippin", "Merry" },
-              new String[] { "Bilbo", "Pippin", "Merry" },
-              new String[] { "Frodo" },
-              new String[] { "Pippin", "Frodo" },
-              new String[] { "Bilbo", "Merry" },
-              new String[0],
-              new String[0],
-              new String[0],
-              new String[0],
-              new String[0],
-              new String[] { "Frodo - <Ring Bearer>" },
-              new String[] { "Frodo -" },
-              new String[0],
-        };
-
-        String[][] postBackSelections = {
-              new String[] { "Bilbo" },
-              new String[] { "Bilbo" },
-              new String[] { "Bilbo" },
-              new String[] { "Bilbo" },
-              new String[] { "Bilbo" },
-              new String[] { "Bilbo" },
-              new String[] { "Bilbo" },
-              new String[] { "Bilbo" },
-              new String[] { "Bilbo" },
-              new String[] { "Bilbo" },
-              new String[] { "Bilbo" },
-              new String[] { "Bilbo" },
-              new String[] { "Bilbo" },
-              new String[] { "2" },
-              new String[] { "3" },
-              new String[] { "Bilbo - <Ring Finder>" },
-              new String[] {  },
-              new String[] {  },
-        };
-
-        // =====================================================================
-        //  Validate initial page state
-        //
-        List<HtmlSelect> selects = new ArrayList<HtmlSelect>(18);
-        getAllElementsOfGivenClass(page, selects, HtmlSelect.class);
-        assertTrue(selects.size() == 18);
-        for (int i = 0; i < selectIds.length; i++) {
-            String id = selectIds[i];
-            System.out.println("Validating HtmlSelect with ID: " + id);
-            String[] initialSelection = initialSelections[i];
-            String[] newSelection = postBackSelections[i];
-            HtmlSelect select = getHtmlSelectForId(selects, id);
-            assertNotNull(select);
-            validateState(select, totalNumberOfSelections[i], initialSelection);
-            updateSelections(select, totalNumberOfSelections[i], newSelection);
-        }
-
-        HtmlInput input = getInputContainingGivenId(page, "command");
-        page = (HtmlPage) input.click();
-
-        // ensure no messages were queued by the post-back
-        assertTrue(!page.asText().contains("Error"));
-
-        selects.clear();
-        getAllElementsOfGivenClass(page, selects, HtmlSelect.class);
-        assertTrue(selects.size() == 18);
-        for (int i = 0; i < selectIds.length; i++) {
-            String id = selectIds[i];
-            if ("escape02".equals(id)) {
-                continue;
-            }
-            String[] newSelection = postBackSelections[i];
-            HtmlSelect select = getHtmlSelectForId(selects, id);
-            assertNotNull(select);
-            validateState(select, totalNumberOfSelections[i], newSelection);
-        }
-        
-    }
-
-
-    // --------------------------------------------------------- Private Methods
-
-    private void updateSelections(HtmlSelect select,
-                                  int totalNumberOfOptions,
-                                  String[] selectedOptions) {
-
-        assertNotNull(select);
-        List<HtmlOption> options = select.getOptions();
-        assertTrue(options.size() == totalNumberOfOptions);
-        for (String s : selectedOptions) {
-            for (HtmlOption option : options) {
-                option.setSelected(s.equals(option.asText()));
-            }
-        }
-    }
-
-
-    private void validateState(HtmlSelect select,
-                               int totalNumberOfOptions,
-                               String[] selectedOptions) {
-
-        assertNotNull(select);
-        List<HtmlOption> options = select.getOptions();
-        assertTrue(options.size() == totalNumberOfOptions);
-        if (selectedOptions == null || selectedOptions.length == 0) {
-            for (HtmlOption option : options) {
-                System.out.println(option.asText());
-                assertTrue(!option.isSelected());
-            }
-        } else {
-            for (String text : selectedOptions) {
-                for (HtmlOption option : options) {
-                    if (text.equals(option.asText())) {
-                        assertTrue(option.isSelected());
-                    } 
-                }
-            }
-        }
-
-    }
-
-
-    private HtmlSelect getHtmlSelectForId(List<HtmlSelect> selects, String id) {
-
-        for (HtmlSelect select : selects) {
-            if (select.getId().contains(id)) {
-                return select;
-            }
-        }
-        
-        return null;
-
-    }
-
-}
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/SelectOneHideNoSelectionInSelectItemGroupTestCase.java b/jsf-ri/systest/src/com/sun/faces/systest/SelectOneHideNoSelectionInSelectItemGroupTestCase.java
deleted file mode 100644
index 1fd7634..0000000
--- a/jsf-ri/systest/src/com/sun/faces/systest/SelectOneHideNoSelectionInSelectItemGroupTestCase.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- *
- * Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
- *
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- *
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- *
- * Contributor(s):
- *
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package com.sun.faces.systest;
-
-
-
-public class SelectOneHideNoSelectionInSelectItemGroupTestCase extends SelectOneHideNoSelectionTestCase {
-
-    public SelectOneHideNoSelectionInSelectItemGroupTestCase(String name) {
-		super(name);
-	}
-
-	@Override
-    protected String getPath() {
-		return "/faces/standard/selectOneLiteralHideNoSelectionOptionInSelectItemGroup.xhtml";
-    }
-
-}
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/SelectOneHideNoSelectionTestCase.java b/jsf-ri/systest/src/com/sun/faces/systest/SelectOneHideNoSelectionTestCase.java
deleted file mode 100644
index 7be1bcb..0000000
--- a/jsf-ri/systest/src/com/sun/faces/systest/SelectOneHideNoSelectionTestCase.java
+++ /dev/null
@@ -1,163 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- *
- * Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
- *
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- *
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- *
- * Contributor(s):
- *
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package com.sun.faces.systest;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-import com.gargoylesoftware.htmlunit.html.HtmlPage;
-import com.gargoylesoftware.htmlunit.html.HtmlSelect;
-import com.sun.faces.htmlunit.AbstractTestCase;
-
-
-public class SelectOneHideNoSelectionTestCase extends AbstractTestCase {
-
-
-    private HtmlPage page;
-
-	/**
-     * Construct a new instance of this test case.
-     *
-     * @param name Name of the test case
-     */
-    public SelectOneHideNoSelectionTestCase(String name) {
-        super(name);
-    }
-
-
-    /**
-     * Set up instance variables required by this test case.
-     */
-    public void setUp() throws Exception {
-        super.setUp();
-        this.page = getPage(getPath());
-    }
-
-
-	protected String getPath() {
-		return "/faces/standard/selectOneLiteralHideNoSelectionOption.xhtml";
-	}
-
-
-    /**
-     * Return the tests included in this test suite.
-     */
-    public static Test suite() {
-        return (new TestSuite(SelectOneHideNoSelectionTestCase.class));
-    }
-
-
-    /**
-     * Tear down instance variables required by this test case.
-     */
-    public void tearDown() {
-        super.tearDown();
-    }
-
-
-    // ------------------------------------------------------------ Test Methods
-
-
-    public void testSelectItemsWithSelectedValueDoesntShowNoSelectionOption() throws Exception {
-        HtmlSelect select = (HtmlSelect) this.page.getElementById("f:selectItemsSelectedValue");
-        assertEquals(4, select.getOptionSize());
-    }
-    
-    public void testSelectItemsWithNoSelectedValueShowsNoSelectionOption() throws Exception {
-    	HtmlSelect select = (HtmlSelect) this.page.getElementById("f:selectItemsNoSelectedValue");
-    	assertEquals(5, select.getOptionSize());
-    }
-    
-    public void testSelectItemsWithNoSelectionSelectedValueShowsNoSelectionOption() throws Exception {
-    	HtmlSelect select = (HtmlSelect) this.page.getElementById("f:selectItemsNoSelectionSelectedValue");
-    	assertEquals(5, select.getOptionSize());
-    }
-    
-    public void testSelectItemWithSelectedValueDoesntShowNoSelectionOption() throws Exception {
-    	HtmlSelect select = (HtmlSelect) this.page.getElementById("f:selectItemSelectedValue");
-    	assertEquals(4, select.getOptionSize());
-    }
-    
-    //same test as testSelectItemWithSelectedValueDoesntShowNoSelectionOption, but now the
-    //no selection option is put as last option in the selectOneMenu
-    public void testSelectItemAsLastWithSelectedValueDoesntShowNoSelectionOption() throws Exception {
-    	HtmlSelect select = (HtmlSelect) this.page.getElementById("f:selectItemSelectedValueLast");
-    	assertEquals(4, select.getOptionSize());
-    }
-    
-    public void testSelectItemWithNoSelectedValueShowsNoSelectionOption() throws Exception {
-    	HtmlSelect select = (HtmlSelect) this.page.getElementById("f:selectItemNoSelectedValue");
-    	assertEquals(5, select.getOptionSize());
-    }
-    
-    public void testSelectItemWithNoSelectionSelectedValueShowsNoSelectionOption() throws Exception {
-    	HtmlSelect select = (HtmlSelect) this.page.getElementById("f:selectItemNoSelectionSelectedValue");
-    	assertEquals(5, select.getOptionSize());
-    }
-    
-    
-    public void testSelectItemsWithSelectedValueNoHidingShowsNoSelectionOption() throws Exception {
-    	HtmlSelect select = (HtmlSelect) this.page.getElementById("f:selectItemsSelectedValueNoHiding");
-    	assertEquals(5, select.getOptionSize());
-    }
-    
-    public void testSelectItemsWithNoSelectedValueNoHidingShowsNoSelectionOption() throws Exception {
-    	HtmlSelect select = (HtmlSelect) this.page.getElementById("f:selectItemsNoSelectedValueNoHiding");
-    	assertEquals(5, select.getOptionSize());
-    }
-    
-    public void testSelectItemsWithNoSelectionSelectedValueNoHidingShowsNoSelectionOption() throws Exception {
-    	HtmlSelect select = (HtmlSelect) this.page.getElementById("f:selectItemsNoSelectionSelectedValueNoHiding");
-    	assertEquals(5, select.getOptionSize());
-    }
-    
-    public void testSelectItemWithSelectedValueNoHidingShowsNoSelectionOption() throws Exception {
-    	HtmlSelect select = (HtmlSelect) this.page.getElementById("f:selectItemSelectedValueNoHiding");
-    	assertEquals(5, select.getOptionSize());
-    }
-    
-    public void testSelectItemWithNoSelectedValueNoHidingShowsNoSelectionOption() throws Exception {
-    	HtmlSelect select = (HtmlSelect) this.page.getElementById("f:selectItemNoSelectedValueNoHiding");
-    	assertEquals(5, select.getOptionSize());
-    }
-    
-    public void testSelectItemWithNoSelectionSelectedValueNoHidingShowsNoSelectionOption() throws Exception {
-    	HtmlSelect select = (HtmlSelect) this.page.getElementById("f:selectItemNoSelectionSelectedValueNoHiding");
-    	assertEquals(5, select.getOptionSize());
-    }
-
-}
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/SelectOneManyEnumTestCase.java b/jsf-ri/systest/src/com/sun/faces/systest/SelectOneManyEnumTestCase.java
deleted file mode 100644
index 75f31d1..0000000
--- a/jsf-ri/systest/src/com/sun/faces/systest/SelectOneManyEnumTestCase.java
+++ /dev/null
@@ -1,190 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package com.sun.faces.systest;
-
-import javax.faces.component.NamingContainer;
-
-import java.util.List;
-import java.util.ArrayList;
-
-import com.sun.faces.htmlunit.AbstractTestCase;
-import com.gargoylesoftware.htmlunit.html.HtmlPage;
-import com.gargoylesoftware.htmlunit.html.HtmlForm;
-import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
-import com.gargoylesoftware.htmlunit.html.HtmlSelect;
-import com.gargoylesoftware.htmlunit.html.HtmlOption;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-public class SelectOneManyEnumTestCase extends AbstractTestCase {
-
-    /**
-     * Construct a new instance of this test case.
-     *
-     * @param name Name of the test case
-     */
-    public SelectOneManyEnumTestCase(String name) {
-        super(name);
-    }
-    
-    /**
-     * Return the tests included in this test suite.
-     */
-    public static Test suite() {
-        return (new TestSuite(NavigationTestCase.class));
-    }
-
-    // ------------------------------------------------------------ Test Methods
-
-    public void testEnums() throws Exception {
-        HtmlPage page = getPage("/faces/standard/selectonemanyenum.jsp");
-        HtmlForm form = getFormById(page, "test");
-        assertNotNull(form);
-        List<HtmlSelect> selectList = getAllElementsOfGivenClass(page, 
-                                                     new ArrayList<HtmlSelect>(), 
-                                                     HtmlSelect.class);
-        assertTrue(selectList.size() == 5);
-        
-        // ID selected
-        HtmlSelect select = selectList.get(0);
-        assertTrue(select.getId().contains("selected"));
-        List<HtmlOption> selectedOptions = select.getSelectedOptions();
-        assertTrue(selectedOptions.size() == 1);
-        assertTrue("Value2".equals(selectedOptions.get(0).getValueAttribute()));
-        select.setSelectedAttribute(selectedOptions.get(0), false);
-        select.setSelectedAttribute("Value1", true);
-        
-        // ID selected2
-        HtmlSelect select2 = selectList.get(1);
-        assertTrue(select2.getId().contains("selected2"));
-        List<HtmlOption> selectedOptions2 = select2.getSelectedOptions();
-        assertTrue(selectedOptions2.size() == 1);
-        assertTrue("Value3".equals(selectedOptions2.get(0).getValueAttribute()));
-        select2.setSelectedAttribute(selectedOptions2.get(0), false);
-        select2.setSelectedAttribute("Value2", true);
-        
-        // ID selected3
-        HtmlSelect select3 = selectList.get(2);
-        assertTrue(select3.getId().contains("selected3"));
-        List<HtmlOption> selectedOptions3 = select3.getSelectedOptions();
-        assertTrue(selectedOptions3.size() == 1);
-        assertTrue("Value4".equals(selectedOptions3.get(0).getValueAttribute()));
-        select3.setSelectedAttribute(selectedOptions3.get(0), false);
-        select3.setSelectedAttribute("Value3", true);
-        
-        // ID array
-        HtmlSelect selectArray = selectList.get(3);
-        assertTrue(selectArray.getId().contains("array"));
-        List<HtmlOption> selectedOptionsArray = selectArray.getSelectedOptions();
-        assertTrue(selectedOptionsArray.size() == 2);
-        assertTrue("Value2".equals(selectedOptionsArray.get(0).getValueAttribute()));
-        assertTrue("Value4".equals(selectedOptionsArray.get(1).getValueAttribute()));
-        selectArray.setSelectedAttribute(selectedOptionsArray.get(0), false);
-        selectArray.setSelectedAttribute(selectedOptionsArray.get(1), false);
-        selectArray.setSelectedAttribute("Value1", true);
-        selectArray.setSelectedAttribute("Value3", true);
-        
-              
-        // ID list
-        HtmlSelect selectListt = selectList.get(4);
-        assertTrue(selectListt.getId().contains("list"));
-        List<HtmlOption> selectedOptionsList = selectListt.getSelectedOptions();
-        assertTrue(selectedOptionsList.size() == 2);
-        assertTrue("Value1".equals(selectedOptionsList.get(0).getValueAttribute()));
-        assertTrue("Value2".equals(selectedOptionsList.get(1).getValueAttribute()));
-        selectListt.setSelectedAttribute(selectedOptionsList.get(0), false);
-        selectListt.setSelectedAttribute(selectedOptionsList.get(1), false);
-        selectListt.setSelectedAttribute("Value2", true);
-        selectListt.setSelectedAttribute("Value4", true);
-        
-        HtmlSubmitInput submit = (HtmlSubmitInput)
-            form.getInputByName("test" +
-                                NamingContainer.SEPARATOR_CHAR +
-                                "submit");
-        page = (HtmlPage) submit.click();
-        
-        // verify the correct options were selected
-        
-        selectList = getAllElementsOfGivenClass(page, 
-                                                     new ArrayList<HtmlSelect>(), 
-                                                     HtmlSelect.class);
-        assertTrue(selectList.size() == 5);
-        
-        assertTrue(selectList.size() == 5);
-        
-        // ID selected
-        select = selectList.get(0);
-        assertTrue(select.getId().contains("selected"));
-        selectedOptions = select.getSelectedOptions();
-        assertTrue(selectedOptions.size() == 1);
-        assertTrue("Value1".equals(selectedOptions.get(0).getValueAttribute()));
-        
-        // ID selected2
-        select2 = selectList.get(1);
-        assertTrue(select2.getId().contains("selected2"));
-        selectedOptions2 = select2.getSelectedOptions();
-        assertTrue(selectedOptions2.size() == 1);
-        assertTrue("Value2".equals(selectedOptions2.get(0).getValueAttribute()));
-        
-        // ID selected3
-        select3 = selectList.get(2);
-        assertTrue(select3.getId().contains("selected3"));
-        selectedOptions3 = select3.getSelectedOptions();
-        assertTrue(selectedOptions3.size() == 1);
-        assertTrue("Value3".equals(selectedOptions3.get(0).getValueAttribute()));
-        
-        // ID array
-        selectArray = selectList.get(3);
-        assertTrue(selectArray.getId().contains("array"));
-        selectedOptionsArray = selectArray.getSelectedOptions();
-        assertTrue(selectedOptionsArray.size() == 2);
-        assertTrue("Value1".equals(selectedOptionsArray.get(0).getValueAttribute()));
-        assertTrue("Value2".equals(selectedOptionsArray.get(1).getValueAttribute()));
-              
-        // ID list
-        selectListt = selectList.get(4);
-        assertTrue(selectListt.getId().contains("list"));
-        selectedOptionsList = selectListt.getSelectedOptions();
-        assertTrue(selectedOptionsList.size() == 2);
-        assertTrue("Value2".equals(selectedOptionsList.get(0).getValueAttribute()));
-        assertTrue("Value3".equals(selectedOptionsList.get(1).getValueAttribute()));
-                
-    }
-    
-
-
-} // END SelectOneManyEnumTestCase
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/SelectOneValueExpressionHideNoSelectionTestCase.java b/jsf-ri/systest/src/com/sun/faces/systest/SelectOneValueExpressionHideNoSelectionTestCase.java
deleted file mode 100644
index da8efcd..0000000
--- a/jsf-ri/systest/src/com/sun/faces/systest/SelectOneValueExpressionHideNoSelectionTestCase.java
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- *
- * Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
- *
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- *
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- *
- * Contributor(s):
- *
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package com.sun.faces.systest;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-import com.gargoylesoftware.htmlunit.html.HtmlInput;
-import com.gargoylesoftware.htmlunit.html.HtmlPage;
-import com.gargoylesoftware.htmlunit.html.HtmlSelect;
-import com.sun.faces.htmlunit.AbstractTestCase;
-
-
-public class SelectOneValueExpressionHideNoSelectionTestCase extends AbstractTestCase {
-
-    private HtmlPage page;
-
-	/**
-     * Construct a new instance of this test case.
-     *
-     * @param name Name of the test case
-     */
-    public SelectOneValueExpressionHideNoSelectionTestCase(String name) {
-        super(name);
-    }
-
-
-    /**
-     * Set up instance variables required by this test case.
-     */
-    public void setUp() throws Exception {
-        super.setUp();
-        this.page = getPage(getPath());
-    }
-
-
-	protected String getPath() {
-		return "/faces/standard/selectOneValueExpressionHideNoSelectionOption.xhtml";
-	}
-
-
-    /**
-     * Return the tests included in this test suite.
-     */
-    public static Test suite() {
-        return (new TestSuite(SelectOneValueExpressionHideNoSelectionTestCase.class));
-    }
-
-
-    /**
-     * Tear down instance variables required by this test case.
-     */
-    public void tearDown() {
-        super.tearDown();
-    }
-
-
-    // ------------------------------------------------------------ Test Methods
-
-
-    public void testHideNoSelectionOptionIsAValueExpression() throws Exception {
-        HtmlSelect select = (HtmlSelect) this.page.getElementById("f:selectItemNoSelectedValue");
-        //validate initial page
-        assertEquals(4, select.getOptionSize());
-        
-        HtmlInput button = (HtmlInput) this.page.getElementById("f:command");
-        select.getOptionByValue("Pippin").click();
-        this.page = button.click();
-        
-        select = (HtmlSelect) this.page.getElementById("f:selectItemNoSelectedValue");
-        assertEquals(5, select.getOptionSize());
-    }
-    
-
-}
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/SystemEventListenerImpl.java b/jsf-ri/systest/src/com/sun/faces/systest/SystemEventListenerImpl.java
index a7b076e..75667f0 100644
--- a/jsf-ri/systest/src/com/sun/faces/systest/SystemEventListenerImpl.java
+++ b/jsf-ri/systest/src/com/sun/faces/systest/SystemEventListenerImpl.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/TestActionListener01.java b/jsf-ri/systest/src/com/sun/faces/systest/TestActionListener01.java
old mode 100644
new mode 100755
index 0e84b05..5542d16
--- a/jsf-ri/systest/src/com/sun/faces/systest/TestActionListener01.java
+++ b/jsf-ri/systest/src/com/sun/faces/systest/TestActionListener01.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/TestComponent.java b/jsf-ri/systest/src/com/sun/faces/systest/TestComponent.java
index ec243d0..8743a39 100644
--- a/jsf-ri/systest/src/com/sun/faces/systest/TestComponent.java
+++ b/jsf-ri/systest/src/com/sun/faces/systest/TestComponent.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/TestConverter.java b/jsf-ri/systest/src/com/sun/faces/systest/TestConverter.java
index 3255210..a5524bd 100644
--- a/jsf-ri/systest/src/com/sun/faces/systest/TestConverter.java
+++ b/jsf-ri/systest/src/com/sun/faces/systest/TestConverter.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/TestConverter01.java b/jsf-ri/systest/src/com/sun/faces/systest/TestConverter01.java
old mode 100644
new mode 100755
index c51e2d2..6593d28
--- a/jsf-ri/systest/src/com/sun/faces/systest/TestConverter01.java
+++ b/jsf-ri/systest/src/com/sun/faces/systest/TestConverter01.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/TestPhaseListener01.java b/jsf-ri/systest/src/com/sun/faces/systest/TestPhaseListener01.java
new file mode 100644
index 0000000..559128a
--- /dev/null
+++ b/jsf-ri/systest/src/com/sun/faces/systest/TestPhaseListener01.java
@@ -0,0 +1,72 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest;
+
+import javax.faces.application.FacesMessage;
+import javax.faces.event.PhaseListener;
+import javax.faces.event.PhaseId;
+import javax.faces.event.PhaseEvent;
+
+import javax.faces.context.FacesContext;
+
+public class TestPhaseListener01 extends Object implements PhaseListener {
+
+    public void afterPhase(PhaseEvent event) {
+        FacesContext context = FacesContext.getCurrentInstance();
+        context.addMessage("submit",
+            new FacesMessage(FacesMessage.SEVERITY_ERROR,
+                " after " + event.getPhaseId(), null));
+    }
+    
+    
+    public void beforePhase(PhaseEvent event) {
+        FacesContext context = FacesContext.getCurrentInstance();
+        context.addMessage("submit",
+            new FacesMessage(FacesMessage.SEVERITY_ERROR,
+                " before " + event.getPhaseId(), null));
+    }
+
+    public PhaseId getPhaseId() {
+
+        return PhaseId.ANY_PHASE;
+    }
+
+}
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/TestValidator.java b/jsf-ri/systest/src/com/sun/faces/systest/TestValidator.java
index f97f64d..5f09342 100644
--- a/jsf-ri/systest/src/com/sun/faces/systest/TestValidator.java
+++ b/jsf-ri/systest/src/com/sun/faces/systest/TestValidator.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/TestValidator01.java b/jsf-ri/systest/src/com/sun/faces/systest/TestValidator01.java
old mode 100644
new mode 100755
index a5b0abf..cb32831
--- a/jsf-ri/systest/src/com/sun/faces/systest/TestValidator01.java
+++ b/jsf-ri/systest/src/com/sun/faces/systest/TestValidator01.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/TestValueChangeListener.java b/jsf-ri/systest/src/com/sun/faces/systest/TestValueChangeListener.java
index b2af7be..3985e0b 100644
--- a/jsf-ri/systest/src/com/sun/faces/systest/TestValueChangeListener.java
+++ b/jsf-ri/systest/src/com/sun/faces/systest/TestValueChangeListener.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/TestValueChangeListener01.java b/jsf-ri/systest/src/com/sun/faces/systest/TestValueChangeListener01.java
old mode 100644
new mode 100755
index 2d48fce..b42e734
--- a/jsf-ri/systest/src/com/sun/faces/systest/TestValueChangeListener01.java
+++ b/jsf-ri/systest/src/com/sun/faces/systest/TestValueChangeListener01.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/ant/SystestClient.java b/jsf-ri/systest/src/com/sun/faces/systest/ant/SystestClient.java
deleted file mode 100644
index 78feb00..0000000
--- a/jsf-ri/systest/src/com/sun/faces/systest/ant/SystestClient.java
+++ /dev/null
@@ -1,1554 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-/* ========================================================================= *
- *                                                                           *
- *                 The Apache Software License,  Version 1.1                 *
- *                                                                           *
- *         Copyright (c) 1999, 2000  The Apache Software Foundation.         *
- *                           All rights reserved.                            *
- *                                                                           *
- * ========================================================================= *
- *                                                                           *
- * Redistribution and use in source and binary forms,  with or without modi- *
- * fication, are permitted provided that the following conditions are met:   *
- *                                                                           *
- * 1. Redistributions of source code  must retain the above copyright notice *
- *    notice, this list of conditions and the following disclaimer.          *
- *                                                                           *
- * 2. Redistributions  in binary  form  must  reproduce the  above copyright *
- *    notice,  this list of conditions  and the following  disclaimer in the *
- *    documentation and/or other materials provided with the distribution.   *
- *                                                                           *
- * 3. The end-user documentation  included with the redistribution,  if any, *
- *    must include the following acknowlegement:                             *
- *                                                                           *
- *       "This product includes  software developed  by the Apache  Software *
- *        Foundation <http://www.apache.org/>."                              *
- *                                                                           *
- *    Alternately, this acknowlegement may appear in the software itself, if *
- *    and wherever such third-party acknowlegements normally appear.         *
- *                                                                           *
- * 4. The names  "The  Jakarta  Project",  "Tomcat",  and  "Apache  Software *
- *    Foundation"  must not be used  to endorse or promote  products derived *
- *    from this  software without  prior  written  permission.  For  written *
- *    permission, please contact <apache at apache.org>.                        *
- *                                                                           *
- * 5. Products derived from this software may not be called "Apache" nor may *
- *    "Apache" appear in their names without prior written permission of the *
- *    Apache Software Foundation.                                            *
- *                                                                           *
- * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES *
- * INCLUDING, BUT NOT LIMITED TO,  THE IMPLIED WARRANTIES OF MERCHANTABILITY *
- * AND FITNESS FOR  A PARTICULAR PURPOSE  ARE DISCLAIMED.  IN NO EVENT SHALL *
- * THE APACHE  SOFTWARE  FOUNDATION OR  ITS CONTRIBUTORS  BE LIABLE  FOR ANY *
- * DIRECT,  INDIRECT,   INCIDENTAL,  SPECIAL,  EXEMPLARY,  OR  CONSEQUENTIAL *
- * DAMAGES (INCLUDING,  BUT NOT LIMITED TO,  PROCUREMENT OF SUBSTITUTE GOODS *
- * OR SERVICES;  LOSS OF USE,  DATA,  OR PROFITS;  OR BUSINESS INTERRUPTION) *
- * HOWEVER CAUSED AND  ON ANY  THEORY  OF  LIABILITY,  WHETHER IN  CONTRACT, *
- * STRICT LIABILITY, OR TORT  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN *
- * ANY  WAY  OUT OF  THE  USE OF  THIS  SOFTWARE,  EVEN  IF  ADVISED  OF THE *
- * POSSIBILITY OF SUCH DAMAGE.                                               *
- *                                                                           *
- * ========================================================================= *
- *                                                                           *
- * This software  consists of voluntary  contributions made  by many indivi- *
- * duals on behalf of the  Apache Software Foundation.  For more information *
- * on the Apache Software Foundation, please see <http://www.apache.org/>.   *
- *                                                                           *
- * ========================================================================= */
-
-package com.sun.faces.systest.ant;
-
-
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.Task;
-
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.io.OutputStreamWriter;
-import java.io.PrintWriter;
-import java.net.ConnectException;
-import java.net.HttpURLConnection;
-import java.net.Socket;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.logging.Logger;
-import java.util.logging.Level;
-
-
-/**
- * <p>This class contains a <strong>Task</strong> for Ant that is used to
- * send HTTP requests to a servlet container, and examine the responses.
- * It is similar in purpose to the <code>GTest</code> task in Watchdog,
- * but uses the JDK's HttpURLConnection for underlying connectivity.</p>
- *
- * <p>The task is registered with Ant using a <code>taskdef</code> directive:
- * <pre>
- *   <taskdef name="systest"
- *       classname="com.sun.faces.systest.ant.SystestClient">
- * </pre>
- * and accepts the following configuration properties:</p>
- * <ul>
- * <li><strong>golden</strong> - The server-relative path of the static
- * resource containing the golden file for this request.</li>
- * <li><strong>host</strong> - The server name to which this request will be
- * sent.  Defaults to <code>localhost</code> if not specified.</li>
- * <li><strong>ignore</strong> - The server-relative path of the static
- * resource containing lines from the specified golden file that should
- * not be matched against the actual response.  If a golden file is
- * specified but not an ignore file, then the contents must match
- * exactly.</li>
-
- * <li><strong>ignoreIfContains</strong> - The server-relative path of
- * the static resource containing a String on each line, the presence of
- * which in the actual response line will cause that response line to be
- * ignored.</li>
-
- * <li><strong>inContent</strong> - The data content that will be submitted
- * with this request.  The test client will transparently add a carriage
- * return and line feed, and set the content length header, if this is
- * specified.  Otherwise, no content will be included in the request.</li>
- * <li><strong>inHeaders</strong> - The set of one or more HTTP headers that
- * will be included on the request, in the format
- * <code>{name}:{value}{##{name}:{value}...</li>
- * <li><strong>joinSession</strong> - Should we join the session whose session
- * identifier was returned on the previous request.  [false]</li>
- * <li><strong>message</strong> - The HTTP response message that is expected
- * in the response from the server.  No check is made if no message
- * is specified.</li>
- * <li><strong>method</strong> - The HTTP request method to be used on this
- * request.  Defaults to <ocde>GET</code> if not specified.</li>
- * <li><strong>outContent</strong> - The first line of the response data
- * content that we expect to receive.  No check is made if no content is
- * specified.</li>
- * <li><strong>outHeaders</strong> - The set of one or more HTTP headers that
- * are expected in the response (order independent).</li>
- * <li><strong>port</strong> - The port number to which this request will be
- * sent.  Defaults to <code>8080</code> if not specified.</li>
- * <li><strong>protocol</strong> - The protocol and version (such as
- * "HTTP/1.0") to include in the request, if executed as a direct
- * socket connection.  If not specified, HttpURLConnection will be used
- * instead.</li>
- * <li><strong>redirect</strong> - If set to true, follow any redirect that
- * is returned by the server.  (Only works when using HttpURLConnection).
- * </li>
- * <li><strong>request</strong> - The request URI to be transmitted for this
- * request.  This value should start with a slash character ("/"), and
- * be the server-relative URI of the requested resource.</li>
- * <li><strong>status</strong> - The HTTP status code that is expected in the
- * response from the server.  Defaults to <code>200</code> if not
- * specified.  Set to zero to disable checking the return value.</li>
- * <li><strong>recordGolden</strong> - Record a goldenfile of the response
- * if a goldenfile is specifed for the request and the goldenfile doesn't
- * already exist.</li>
- * </ul>
- *
- * @author Craig R. McClanahan
- * @version $Revision: 1.20 $ $Date: 2007/04/30 23:35:43 $
- */
-
-public class SystestClient extends Task {
-
-
-    // ----------------------------------------------------- Instance Variables
-
-
-    /**
-     * The <code>Log</code> instance for this class.
-     */
-    protected static final Logger log = Logger.getLogger("Systest");
-
-
-    /**
-     * The saved golden file we will compare to the response.  Each element
-     * contains a line of text without any line delimiters.
-     */
-    protected List saveGolden = new ArrayList();
-
-
-    /**
-     * The saved headers we received in our response.  The key is the header
-     * name (converted to lower case), and the value is an ArrayList of the
-     * string value(s) received for that header.
-     */
-    protected Map saveHeaders = new HashMap();
-
-
-    /**
-     * The saved ignore lines for modifying our golden file comparison to the
-     * response.  Each element contains a line of text without any line
-     * delimiters.
-     */
-    protected List saveIgnore = new ArrayList();
-
-    /**
-     * The saved ignoreIfContains lines for modifying our golden file
-     * comparison to the response.  Each element contains a line of text
-     * without any line delimiters.  The presence of that text as a
-     * substring in a response line causes that line to be ignored.
-     */
-    protected List saveIgnoreIfContains = new ArrayList();
-
-
-    /**
-     * The response file to be compared to the golden file.  Each element
-     * contains a line of text without any line delimiters.
-     */
-    protected List saveResponse = new ArrayList();
-
-
-    // ------------------------------------------------------------- Properties
-
-
-    /**
-     * <p>Flag indicating whether we should throw an exception when a test
-     * fails.</p>
-     */
-    protected boolean failonerror = true;
-
-
-    public boolean getFailonerror() {
-        return (this.failonerror);
-    }
-
-
-    public void setFailonerror(boolean failonerror) {
-        this.failonerror = failonerror;
-    }
-
-
-    /**
-     * The server-relative request URI of the golden file for this request.
-     */
-    protected String golden = null;
-
-
-    public String getGolden() {
-        return (this.golden);
-    }
-
-
-    public void setGolden(String golden) {
-        if (golden.length() > 0) {
-            this.golden = golden;
-        }
-    }
-
-
-    /**
-     * The host name to which we will connect.
-     */
-    protected String host = "localhost";
-
-
-    public String getHost() {
-        return (this.host);
-    }
-
-
-    public void setHost(String host) {
-        this.host = host;
-    }
-
-
-    /**
-     * The server-relative request URI of the ignore file for this request.
-     */
-    protected String ignore = null;
-
-
-    public String getIgnore() {
-        return (this.ignore);
-    }
-
-
-    public void setIgnore(String ignore) {
-        if (ignore.length() > 0) {
-            this.ignore = ignore;
-        }
-    }
-
-    /**
-     * The server-relative request URI of the ignoreIfContains file for this request.
-     */
-    protected String ignoreIfContains = null;
-
-
-    public String getIgnoreIfContains() {
-        return (this.ignoreIfContains);
-    }
-
-
-    public void setIgnoreIfContains(String ignoreIfContains) {
-        if (ignoreIfContains.length() > 0) {
-            this.ignoreIfContains = ignoreIfContains;
-        }
-    }
-
-
-
-
-    /**
-     * The first line of the request data that will be included on this
-     * request.
-     */
-    protected String inContent = null;
-
-
-    public String getInContent() {
-        return (this.inContent);
-    }
-
-
-    public void setInContent(String inContent) {
-        this.inContent = inContent;
-    }
-
-
-    /**
-     * The HTTP headers to be included on the request.  Syntax is
-     * <code>{name}:{value}[##{name}:{value}] ...</code>.
-     */
-    protected String inHeaders = null;
-
-
-    public String getInHeaders() {
-        return (this.inHeaders);
-    }
-
-
-    public void setInHeaders(String inHeaders) {
-        this.inHeaders = inHeaders;
-    }
-
-
-    /**
-     * Should we join the session whose session identifier was returned
-     * on the previous request.
-     */
-    protected boolean joinSession = false;
-
-
-    public boolean getJoinSession() {
-        return (this.joinSession);
-    }
-
-
-    public void setJoinSession(boolean joinSession) {
-        this.joinSession = true;
-    }
-
-
-    /**
-     * The HTTP response message to be expected in the response.
-     */
-    protected String message = null;
-
-
-    public String getMessage() {
-        return (this.message);
-    }
-
-
-    public void setMessage(String message) {
-        this.message = message;
-    }
-
-
-    /**
-     * The HTTP request method that will be used.
-     */
-    protected String method = "GET";
-
-
-    public String getMethod() {
-        return (this.method);
-    }
-
-
-    public void setMethod(String method) {
-        this.method = method;
-    }
-
-
-    /**
-     * The first line of the response data content that we expect to receive.
-     */
-    protected String outContent = null;
-
-
-    public String getOutContent() {
-        return (this.outContent);
-    }
-
-
-    public void setOutContent(String outContent) {
-        if (outContent.length() > 0) {
-            this.outContent = outContent;
-        }
-    }
-
-
-    /**
-     * The HTTP headers to be checked on the response.  Syntax is
-     * <code>{name}:{value}[##{name}:{value}] ...</code>.
-     */
-    protected String outHeaders = null;
-
-
-    public String getOutHeaders() {
-        return (this.outHeaders);
-    }
-
-
-    public void setOutHeaders(String outHeaders) {
-        this.outHeaders = outHeaders;
-    }
-
-
-    /**
-     * The port number to which we will connect.
-     */
-    protected int port = 8080;
-
-
-    public int getPort() {
-        return (this.port);
-    }
-
-
-    public void setPort(int port) {
-        this.port = port;
-    }
-
-
-    /**
-     * The protocol and version to include in the request, if executed as
-     * a direct socket connection.  Lack of a value here indicates that an
-     * HttpURLConnection should be used instead.
-     */
-    protected String protocol = null;
-
-
-    public String getProtocol() {
-        return (this.protocol);
-    }
-
-
-    public void setProtocol(String protocol) {
-        this.protocol = protocol;
-    }
-
-
-    /**
-     * Should we follow redirects returned by the server?
-     */
-    protected boolean redirect = false;
-
-
-    public boolean getRedirect() {
-        return (this.redirect);
-    }
-
-
-    public void setRedirect(boolean redirect) {
-        this.redirect = redirect;
-    }
-
-
-    /**
-     * The request URI to be sent to the server.  This value is required.
-     */
-    protected String request = null;
-
-
-    public String getRequest() {
-        return (this.request);
-    }
-
-
-    public void setRequest(String request) {
-        this.request = request;
-    }
-
-
-    /**
-     * The HTTP status code expected on the response.
-     */
-    protected int status = 200;
-
-
-    public int getStatus() {
-        return (this.status);
-    }
-
-
-    public void setStatus(int status) {
-        this.status = status;
-    }
-
-
-    /**
-     * Goldenfile recording.
-     */
-    protected String recordGolden;
-
-
-    public String getRecordGolden() {
-        return (this.recordGolden);
-    }
-
-
-    public void setRecordGolden(String recordGolden) {
-        if (recordGolden.length() > 0) {
-            this.recordGolden = recordGolden;
-        }
-    }
-
-
-    // ------------------------------------------------------- Static Variables
-
-
-    /**
-     * The session identifier returned by the most recent request, or
-     * <code>null</code> if the previous request did not specify a session
-     * identifier.
-     */
-    protected static String sessionId = null;
-
-
-    // --------------------------------------------------------- Public Methods
-
-
-    /**
-     * Execute the test that has been configured by our property settings.
-     *
-     * @throws BuildException if an exception occurs
-     */
-    public void execute() throws BuildException {
-
-        saveHeaders.clear();
-        try {
-            readGolden();
-        } catch (IOException e) {
-            System.out.println("FAIL:  readGolden(" + golden + ")");
-            e.printStackTrace(System.out);
-            if (failonerror) {
-                throw new BuildException("Failure reading golden file", e);
-            }
-        }
-        try {
-            readIgnore();
-        } catch (IOException e) {
-            System.out.println("FAIL:  readIgnore(" + ignore + ")");
-            e.printStackTrace(System.out);
-            if (failonerror) {
-                throw new BuildException("Failure reading golden file", e);
-            }
-        }
-
-        try {
-            readIgnoreIfContains();
-        } catch (IOException e) {
-            System.out.println("FAIL:  readIgnoreIfContains(" + 
-			       ignoreIfContains + ")");
-            e.printStackTrace(System.out);
-            if (failonerror) {
-                throw new BuildException("Failure reading golden file", e);
-            }
-        }
-
-        if ((protocol == null) || (protocol.length() == 0)) {
-            executeHttp();
-        } else {
-            executeSocket();
-        }
-
-    }
-
-
-    // ------------------------------------------------------ Protected Methods
-
-
-    /**
-     * Execute the test via use of an HttpURLConnection.
-     *
-     * @throws BuildException if an exception occurs
-     */
-    protected void executeHttp() throws BuildException {
-
-        // Construct a summary of the request we will be sending
-        String summary = "[" + method + " " + request + "]";
-        boolean success = true;
-        String result = null;
-        Throwable throwable = null;
-        HttpURLConnection conn = null;
-
-        try {
-
-            // Configure an HttpURLConnection for this request
-            if (log.isLoggable(Level.FINE)) {
-                log.fine("Configuring HttpURLConnection for this request");
-            }
-            URL url = new URL("http", host, port, request);
-            conn = (HttpURLConnection) url.openConnection();
-            conn.setAllowUserInteraction(false);
-            conn.setDoInput(true);
-            if (inContent != null) {
-                conn.setDoOutput(true);
-                conn.setRequestProperty("Content-Length",
-                                        "" + inContent.length());
-                if (log.isLoggable(Level.FINE)) {
-                    log.fine("INPH: Content-Length: " + inContent.length());
-                }
-            } else {
-                conn.setDoOutput(false);
-            }
-
-            // Send the session id cookie (if any)
-            if (joinSession && (sessionId != null)) {
-                conn.setRequestProperty("Cookie",
-                                        "JSESSIONID=" + sessionId);
-                if (log.isLoggable(Level.FINE)) {
-                    log.fine("INPH: Cookie: JSESSIONID=" + sessionId);
-                }
-            }
-
-            if (this.redirect && log.isLoggable(Level.FINE)) {
-                log.fine("FLAG: setInstanceFollowRedirects(" +
-                          this.redirect + ")");
-            }
-            conn.setInstanceFollowRedirects(this.redirect);
-            conn.setRequestMethod(method);
-            if (inHeaders != null) {
-                String headers = inHeaders;
-                while (headers.length() > 0) {
-                    int delimiter = headers.indexOf("##");
-                    String header = null;
-                    if (delimiter < 0) {
-                        header = headers;
-                        headers = "";
-                    } else {
-                        header = headers.substring(0, delimiter);
-                        headers = headers.substring(delimiter + 2);
-                    }
-                    int colon = header.indexOf(":");
-                    if (colon < 0)
-                        break;
-                    String name = header.substring(0, colon).trim();
-                    String value = header.substring(colon + 1).trim();
-                    conn.setRequestProperty(name, value);
-                    if (log.isLoggable(Level.FINE)) {
-                        log.fine("INPH: " + name + ": " + value);
-                    }
-                }
-            }
-
-            // Connect to the server and send our output if necessary
-            conn.connect();
-            if (inContent != null) {
-                if (log.isLoggable(Level.FINE)) {
-                    log.fine("INPD: " + inContent);
-                }
-                OutputStream os = conn.getOutputStream();
-                for (int i = 0, length = inContent.length(); i < length; i++)
-                    os.write(inContent.charAt(i));
-                os.close();
-            }
-
-            // Acquire the response data, if there is any
-            String outData = "";
-            String outText = "";
-            boolean eol = false;
-            InputStream is = conn.getInputStream();
-            int lines = 0;
-            while (true) {
-                String line = read(is);
-                if (line == null)
-                    break;
-                if (lines == 0)
-                    outData = line;
-                else
-                    outText += line + "\r\n";
-
-                if (line.trim().length() == 0 && saveResponse.isEmpty()) {
-                    lines++;
-                    continue;
-                }
-                saveResponse.add(line);
-                lines++;
-            }
-            is.close();
-
-            // Dump out the response stuff
-            if (log.isLoggable(Level.FINE)) {
-                log.fine("RESP: " + conn.getResponseCode() + " " +
-                          conn.getResponseMessage());
-            }
-            for (int i = 1; i < 1000; i++) {
-                String name = conn.getHeaderFieldKey(i);
-                String value = conn.getHeaderField(i);
-                if ((name == null) || (value == null))
-                    break;
-                if (log.isLoggable(Level.FINE)) {
-                    log.fine("HEAD: " + name + ": " + value);
-                }
-                save(name, value);
-                if ("Set-Cookie".equals(name))
-                    parseSession(value);
-            }
-            if (log.isLoggable(Level.FINE)) {
-                log.fine("DATA: " + outData);
-                if (outText.length() > 2) {
-                    log.fine("TEXT: " + outText);
-                }
-            }
-
-            // Validate the response against our criteria
-            if (success) {
-                result = validateStatus(conn.getResponseCode());
-                if (result != null)
-                    success = false;
-            }
-            if (success) {
-                result = validateMessage(conn.getResponseMessage());
-                if (result != null)
-                    success = false;
-            }
-            if (success) {
-                result = validateHeaders();
-                if (result != null)
-                    success = false;
-            }
-            if (success) {
-                result = validateData(outText);
-                if (result != null)
-                    success = false;
-            }
-            if (success) {
-                result = validateGolden();
-                if (result != null)
-                    success = false;
-            }
-
-        } catch (Throwable t) {
-            if (t instanceof FileNotFoundException) {
-                if (status == 404) {
-                    success = true;
-                    result = "Not Found";
-                    throwable = null;
-                } else {
-                    success = false;
-                    try {
-                        result = "Status=" + conn.getResponseCode() +
-                            ", Message=" + conn.getResponseMessage();
-                    } catch (IOException e) {
-                        result = e.toString();
-                    }
-                    throwable = null;
-                }
-            } else if (t instanceof ConnectException) {
-                success = false;
-                result = t.getMessage();
-                throwable = null;
-            } else {
-                success = false;
-                result = t.getMessage();
-                throwable = t;
-            }
-        }
-
-        // Log the results of executing this request
-        if (success) {
-            System.out.println("OK   " + summary);
-        } else {
-            System.out.println("FAIL " + summary + " " + result);
-            if (throwable != null)
-                throwable.printStackTrace(System.out);
-            if (failonerror) {
-                if (throwable != null) {
-                    throw new BuildException("System test failed", throwable);
-                } else {
-                    throw new BuildException("System test failed");
-                }
-            }
-        }
-
-    }
-
-
-    /**
-     * Execute the test via use of a socket with direct input/output.
-     *
-     * @throws BuildException if an exception occurs
-     */
-    protected void executeSocket() throws BuildException {
-
-        // Construct a summary of the request we will be sending
-        String command = method + " " + request + " " + protocol;
-        String summary = "[" + command + "]";
-        if (log.isLoggable(Level.FINE)) {
-            log.fine("RQST: " + summary);
-        }
-        boolean success = true;
-        String result = null;
-        Socket socket = null;
-        OutputStream os = null;
-        PrintWriter pw = null;
-        InputStream is = null;
-        Throwable throwable = null;
-        int outStatus = 0;
-        String outMessage = null;
-
-        try {
-
-            // Open a client socket for this request
-            socket = new Socket(host, port);
-            os = socket.getOutputStream();
-            pw = new PrintWriter(os);
-            is = socket.getInputStream();
-
-            // Send the command and content length header (if any)
-            pw.print(command + "\r\n");
-            if (inContent != null) {
-                if (log.isLoggable(Level.FINE)) {
-                    log.fine("INPH: " + "Content-Length: " +
-                              inContent.length());
-                }
-                pw.print("Content-Length: " + inContent.length() + "\r\n");
-            }
-
-            // Send the session id cookie (if any)
-            if (joinSession && (sessionId != null)) {
-                pw.println("Cookie: JSESSIONID=" + sessionId);
-                if (log.isLoggable(Level.FINE)) {
-                    log.fine("INPH: Cookie: JSESSIONID=" +
-                              sessionId);
-                }
-            }
-
-            // Send the specified headers (if any)
-            if (inHeaders != null) {
-                String headers = inHeaders;
-                while (headers.length() > 0) {
-                    int delimiter = headers.indexOf("##");
-                    String header = null;
-                    if (delimiter < 0) {
-                        header = headers;
-                        headers = "";
-                    } else {
-                        header = headers.substring(0, delimiter);
-                        headers = headers.substring(delimiter + 2);
-                    }
-                    int colon = header.indexOf(":");
-                    if (colon < 0)
-                        break;
-                    String name = header.substring(0, colon).trim();
-                    String value = header.substring(colon + 1).trim();
-                    if (log.isLoggable(Level.FINE)) {
-                        log.fine("INPH: " + name + ": " + value);
-                    }
-                    pw.print(name + ": " + value + "\r\n");
-                }
-            }
-            pw.print("\r\n");
-
-            // Send our content (if any)
-            if (inContent != null) {
-                if (log.isLoggable(Level.FINE)) {
-                    log.fine("INPD: " + inContent);
-                }
-                for (int i = 0, length = inContent.length(); i < length; i++)
-                    pw.print(inContent.charAt(i));
-            }
-            pw.flush();
-
-            // Read the response status and associated message
-            String line = read(is);
-            if (line == null) {
-                outStatus = -1;
-                outMessage = "NO RESPONSE";
-            } else {
-                line = line.trim();
-                if (log.isLoggable(Level.FINE)) {
-                    log.fine("RESP: " + line);
-                }
-                int space = line.indexOf(" ");
-                if (space >= 0) {
-                    line = line.substring(space + 1).trim();
-                    space = line.indexOf(" ");
-                }
-                try {
-                    if (space < 0) {
-                        outStatus = Integer.parseInt(line);
-                        outMessage = "";
-                    } else {
-                        outStatus = Integer.parseInt(line.substring(0, space));
-                        outMessage = line.substring(space + 1).trim();
-                    }
-                } catch (NumberFormatException e) {
-                    outStatus = -1;
-                    outMessage = "NUMBER FORMAT EXCEPTION";
-                }
-            }
-            if (log.isLoggable(Level.FINE)) {
-                log.fine("STAT: " + outStatus + " MESG: " + outMessage);
-            }
-
-            // Read the response headers (if any)
-            String headerName = null;
-            String headerValue = null;
-            while (true) {
-                line = read(is);
-                if ((line == null) || (line.length() == 0))
-                    break;
-                int colon = line.indexOf(":");
-                if (colon < 0) {
-                    if (log.isLoggable(Level.FINE)) {
-                        log.fine("????: " + line);
-                    }
-                } else {
-                    headerName = line.substring(0, colon).trim();
-                    headerValue = line.substring(colon + 1).trim();
-                    if (log.isLoggable(Level.FINE)) {
-                        log.fine("HEAD: " + headerName + ": " +
-                                  headerValue);
-                    }
-                    save(headerName, headerValue);
-                    if ("Set-Cookie".equals(headerName))
-                        parseSession(headerValue);
-                }
-            }
-
-            // Acquire the response data (if any)
-            String outData = "";
-            String outText = "";
-            int lines = 0;
-            while (true) {
-                line = read(is);
-                if (line == null)
-                    break;
-                if (lines == 0)
-                    outData = line;
-                else
-                    outText += line + "\r\n";
-
-                if (line.trim().length() == 0 && saveResponse.isEmpty()) {
-                    lines++;
-                    continue;
-                }
-                saveResponse.add(line);
-                lines++;
-            }
-            is.close();
-            if (log.isLoggable(Level.FINE)) {
-                log.fine("DATA: " + outData);
-                if (outText.length() > 2) {
-                    log.fine("TEXT: " + outText);
-                }
-            }
-
-            // Validate the response against our criteria
-            if (success) {
-                result = validateStatus(outStatus);
-                if (result != null)
-                    success = false;
-            }
-            if (success) {
-                result = validateMessage(message);
-                if (result != null)
-                    success = false;
-            }
-            if (success) {
-                result = validateHeaders();
-                if (result != null)
-                    success = false;
-            }
-            if (success) {
-                result = validateData(outText);
-                if (result != null)
-                    success = false;
-            }
-            if (success) {
-                result = validateGolden();
-                if (result != null)
-                    success = false;
-            }
-
-        } catch (Throwable t) {
-            success = false;
-            result = "Status=" + outStatus +
-                ", Message=" + outMessage;
-            throwable = null;
-        } finally {
-            if (pw != null) {
-                try {
-                    pw.close();
-                } catch (Throwable w) {
-                    ;
-                }
-            }
-            if (os != null) {
-                try {
-                    os.close();
-                } catch (Throwable w) {
-                    ;
-                }
-            }
-            if (is != null) {
-                try {
-                    is.close();
-                } catch (Throwable w) {
-                    ;
-                }
-            }
-            if (socket != null) {
-                try {
-                    socket.close();
-                } catch (Throwable w) {
-                    ;
-                }
-            }
-        }
-
-        if (success) {
-            System.out.println("OK   " + summary);
-        } else {
-            System.out.println("FAIL " + summary + " " + result);
-            if (throwable != null)
-                throwable.printStackTrace(System.out);
-            if (failonerror) {
-                if (throwable != null) {
-                    throw new BuildException("System test failed", throwable);
-                } else {
-                    throw new BuildException("System test failed");
-                }
-            }
-        }
-
-    }
-
-
-    /**
-     * Parse the session identifier from the specified Set-Cookie value.
-     *
-     * @param value The Set-Cookie value to parse
-     */
-    protected void parseSession(String value) {
-
-        if (value == null) {
-            return;
-        }
-        int equals = value.indexOf("JSESSIONID=");
-        if (equals < 0) {
-            return;
-        }
-        value = value.substring(equals + "JSESSIONID=".length());
-        int semi = value.indexOf(";");
-        if (semi >= 0) {
-            value = value.substring(0, semi);
-        }
-        if (log.isLoggable(Level.FINE)) {
-            log.fine("S ID: " + value);
-        }
-        sessionId = value;
-
-    }
-
-
-    /**
-     * Read and return the next line from the specified input stream, with
-     * no carriage return or line feed delimiters.  If
-     * end of file is reached, return <code>null</code> instead.
-     *
-     * @param stream The input stream to read from
-     *
-     * @throws IOException if an input/output error occurs
-     */
-    protected String read(InputStream stream) throws IOException {
-
-        StringBuffer result = new StringBuffer();
-        while (true) {
-            int b = stream.read();
-            if (b < 0) {
-                if (result.length() == 0) {
-                    return (null);
-                } else {
-                    break;
-                }
-            }
-            char c = (char) b;
-            if (c == '\r') {
-                continue;
-            } else if (c == '\n') {
-                break;
-            } else {
-                result.append(c);
-            }
-        }
-        return (result.toString());
-
-    }
-
-
-    /**
-     * Read and save the contents of the golden file for this test, if any.
-     * Otherwise, the <code>saveGolden</code> list will be empty.
-     *
-     * @throws IOException if an input/output error occurs
-     */
-    protected void readGolden() throws IOException {
-
-        // Was a golden file specified?
-        saveGolden.clear();
-        if (golden == null) {
-            return;
-        }
-
-        // Create a connection to receive the golden file contents
-        URL url = new URL("http", host, port, golden);
-        HttpURLConnection conn =
-            (HttpURLConnection) url.openConnection();
-        conn.setAllowUserInteraction(false);
-        conn.setDoInput(true);
-        conn.setDoOutput(false);
-        conn.setFollowRedirects(true);
-        conn.setRequestMethod("GET");
-
-        // Connect to the server and retrieve the golden file
-        conn.connect();
-        InputStream is = conn.getInputStream();
-        while (true) {
-            String line = read(is);
-            if (line == null) {
-                break;
-            }
-            if (line.trim().length() == 0 && saveGolden.isEmpty()) {
-                continue;
-            }
-            saveGolden.add(line);
-        }
-        is.close();
-        conn.disconnect();
-
-    }
-
-
-    /**
-     * Read and save the contents of the ignore file for this test, if any.
-     * Otherwise, the <code>saveIgnore</code> list will be empty.
-     *
-     * @throws IOException if an input/output error occurs
-     */
-    protected void readIgnore() throws IOException {
-
-        // Was an ignore file specified?
-        saveIgnore.clear();
-        if (ignore == null) {
-            return;
-        }
-
-        // Create a connection to receive the ignore file contents
-        URL url = new URL("http", host, port, ignore);
-        HttpURLConnection conn =
-            (HttpURLConnection) url.openConnection();
-        conn.setAllowUserInteraction(false);
-        conn.setDoInput(true);
-        conn.setDoOutput(false);
-        conn.setFollowRedirects(true);
-        conn.setRequestMethod("GET");
-
-        // Connect to the server and retrieve the ignore file
-        conn.connect();
-        InputStream is = conn.getInputStream();
-        while (true) {
-            String line = read(is);
-            if (line == null) {
-                break;
-            }
-            saveIgnore.add(line);
-        }
-        is.close();
-        conn.disconnect();
-
-    }
-
-    /**
-     * Read and save the contents of the ignoreIfContains file for this
-     * test, if any.  Otherwise, the <code>saveIgnoreIfContains</code>
-     * list will be empty.
-     *
-     * @throws IOException if an input/output error occurs
-     */
-    protected void readIgnoreIfContains() throws IOException {
-
-        // Was an ignoreIfContains file specified?
-        saveIgnoreIfContains.clear();
-        if (ignoreIfContains == null) {
-            return;
-        }
-
-        // Create a connection to receive the ignoreIfContains file contents
-        URL url = new URL("http", host, port, ignoreIfContains);
-        HttpURLConnection conn =
-            (HttpURLConnection) url.openConnection();
-        conn.setAllowUserInteraction(false);
-        conn.setDoInput(true);
-        conn.setDoOutput(false);
-        conn.setFollowRedirects(true);
-        conn.setRequestMethod("GET");
-
-        // Connect to the server and retrieve the ignoreIfContains file
-        conn.connect();
-        InputStream is = conn.getInputStream();
-        while (true) {
-            String line = read(is);
-            if (line == null) {
-                break;
-            }
-            saveIgnoreIfContains.add(line);
-        }
-        is.close();
-        conn.disconnect();
-
-    }
-
-
-    /**
-     * Save the specified header name and value in our collection.
-     *
-     * @param name  Header name to save
-     * @param value Header value to save
-     */
-    protected void save(String name, String value) {
-
-        String key = name.toLowerCase();
-        ArrayList list = (ArrayList) saveHeaders.get(key);
-        if (list == null) {
-            list = new ArrayList();
-            saveHeaders.put(key, list);
-        }
-        list.add(value);
-
-    }
-
-
-    /**
-     * Validate the output data against what we expected.  Return
-     * <code>null</code> for no problems, or an error message.
-     *
-     * @param data The output data to be tested
-     */
-    protected String validateData(String data) {
-        data = data.trim();
-        if (outContent == null) {
-            return (null);
-        } else if (data.startsWith(outContent)) {
-            return (null);
-        } else {
-            return ("Expected data '" + outContent + "', got data '" +
-                data + "'");
-        }
-
-    }
-
-
-    protected String stripJsessionidFromLine(String line) {
-        if (null == line) {
-            return line;
-        }
-        int
-            start = 0,
-            end = 0;
-        String result = line;
-
-        if (-1 == (start = line.indexOf(";jsessionid="))) {
-            return result;
-        }
-
-        if (-1 == (end = line.indexOf("?", start))) {
-            if (-1 == (end = line.indexOf("\"", start))) {
-                throw new IllegalStateException();
-            }
-        }
-        result = stripJsessionidFromLine(line.substring(0, start) +
-                                         line.substring(end));
-        return result;
-    }
-
-
-    /**
-     * Validate the response against the golden file (if any), skipping the
-     * comparison on any golden file line that is also in the ignore file
-     * (if any).  Return <code>null</code> for no problems, or an error
-     * message.
-     */
-    protected String validateGolden() {
-
-        if (golden == null) {
-            return (null);
-        }
-        boolean ok = true;
-        if (saveGolden.size() != saveResponse.size()) {
-            ok = false;
-        }
-        if (ok) {
-            for (int i = 0, size = saveGolden.size(); i < size; i++) {
-                String golden = (String) saveGolden.get(i);
-                String response = (String) saveResponse.get(i);
-                if (!validateIgnore(golden) && 
-		    !validateIgnoreIfContains(golden) && 
-		    !golden.equals(response)) {
-                    response = stripJsessionidFromLine(response);
-                    golden = stripJsessionidFromLine(golden);
-                    if (!golden.trim().equals(response.trim())) {
-                        ok = false;
-                        break;
-                    }
-                }
-            }
-        }
-        if (ok) {
-            return (null);
-        }
-        System.out.println("EXPECTED: ======================================");
-        for (int i = 0, size = saveGolden.size(); i < size; i++) {
-            System.out.println((String) saveGolden.get(i));
-        }
-        System.out.println("================================================");
-        if (saveIgnore.size() >= 1) {
-            System.out.println(
-                "IGNORED: =======================================");
-            for (int i = 0, size = saveIgnore.size(); i < size; i++) {
-                System.out.println((String) saveIgnore.get(i));
-            }
-            System.out.println(
-                "================================================");
-        }
-        System.out.println("RECEIVED: ======================================");
-        for (int i = 0, size = saveResponse.size(); i < size; i++) {
-            System.out.println((String) saveResponse.get(i));
-        }
-        System.out.println("================================================");
-        
-        // write the goldenfile if the GF size from the server was 0
-        // and the goldenfile doesn't already exist on the local filesystem.
-        System.out.println("RECORD GOLDEN: " + recordGolden);
-        if (recordGolden != null) {
-            File gf = new File(recordGolden);
-            if (!gf.exists() || gf.length() == 0) {
-                System.out.println(
-                    "[INFO] RECORDING GOLDENFILE: " + recordGolden);
-                // write the goldenfile using the encoding specified in the response.
-                // if there is no encoding available, default to ISO-8859-1
-                String encoding = "ISO-8859-1";
-                if (saveHeaders.containsKey("content-type")) {
-                    List vals = (List) saveHeaders.get("content-type");
-                    if (vals != null) {
-                        String val = (String) vals.get(0);
-                        int charIdx = val.indexOf('=');
-                        if (charIdx > -1) {
-                            encoding = val.substring(charIdx + 1).trim();
-                        }
-                    }
-                }
-                OutputStreamWriter out = null;
-                try {
-                    out = new OutputStreamWriter(new FileOutputStream(gf),
-                                                 encoding);
-                    for (int i = 0, size = saveResponse.size(); i < size; i++) {
-                        out.write((String) saveResponse.get(i));
-                        out.write('\n');
-                    }
-                    out.flush();
-                } catch (Throwable t) {
-                    System.out.println(
-                        "[WARNING] Unable to write goldenfile: " +
-                        t.toString());
-                } finally {
-                    try {
-                        if (out != null) {
-                            out.close();
-                        }
-                    } catch (IOException ioe) {
-                        ; // do nothing
-                    }
-                }
-            }
-        }
-        return ("Failed Golden File Comparison");
-
-    }
-
-
-    /**
-     * Validate the saved headers against the <code>outHeaders</code>
-     * property, and return an error message if there is anything missing.
-     * If all of the expected headers are present, return <code>null</code>.
-     */
-    protected String validateHeaders() {
-
-        // Do we have any headers to check for?
-        if (outHeaders == null) {
-            return (null);
-        }
-
-        // Check each specified name:value combination
-        String headers = outHeaders;
-        while (headers.length() > 0) {
-            // Parse the next name:value combination
-            int delimiter = headers.indexOf("##");
-            String header = null;
-            if (delimiter < 0) {
-                header = headers;
-                headers = "";
-            } else {
-                header = headers.substring(0, delimiter);
-                headers = headers.substring(delimiter + 2);
-            }
-            int colon = header.indexOf(":");
-            String name = header.substring(0, colon).trim();
-            String value = header.substring(colon + 1).trim();
-            // Check for the occurrence of this header
-            ArrayList list = (ArrayList) saveHeaders.get(name.toLowerCase());
-            if (list == null) {
-                return ("Missing header name '" + name + "'");
-            }
-            boolean found = false;
-            for (int i = 0, size = list.size(); i < size; i++) {
-                if (value.equals((String) list.get(i))) {
-                    found = true;
-                    break;
-                }
-            }
-            if (!found) {
-                return ("Missing header name '" + name + "' with value '" +
-                    value + "'");
-            }
-        }
-
-        // Everything was found successfully
-        return (null);
-
-    }
-
-
-    /**
-     * Return <code>true</code> if we should ignore this golden file line
-     * because it is also in the ignore file.
-     *
-     * @param line Line from the golden file to be checked
-     */
-    protected boolean validateIgnore(String line) {
-
-        for (int i = 0, size = saveIgnore.size(); i < size; i++) {
-            String ignore = (String) saveIgnore.get(i);
-            if (ignore.equals(line)) {
-                return (true);
-            }
-        }
-        return (false);
-
-    }
-
-    /**
-     * Return <code>true</code> if we should ignore this golden file line
-     * because it is also in the ignore file.
-     *
-     * @param line Line from the golden file to be checked
-     */
-    protected boolean validateIgnoreIfContains(String line) {
-
-        for (int i = 0, size = saveIgnoreIfContains.size(); i < size; i++) {
-            String ignoreIfContains = (String) saveIgnoreIfContains.get(i);
-            if (-1 != line.indexOf(ignoreIfContains)) {
-                return (true);
-            }
-        }
-        return (false);
-
-    }
-
-    /**
-     * Validate the returned response message against what we expected.
-     * Return <code>null</code> for no problems, or an error message.
-     *
-     * @param message The returned response message
-     */
-    protected String validateMessage(String message) {
-
-        if (this.message == null) {
-            return (null);
-        } else if (this.message.equals(message)) {
-            return (null);
-        } else {
-            return ("Expected message='" + this.message + "', got message='" +
-                message + "'");
-        }
-
-    }
-
-
-    /**
-     * Validate the returned status code against what we expected.  Return
-     * <code>null</code> for no problems, or an error message.
-     *
-     * @param status The returned status code
-     */
-    protected String validateStatus(int status) {
-
-        if (this.status == 0) {
-            return (null);
-        }
-        if (this.status == status) {
-            return (null);
-        } else {
-            return ("Expected status=" + this.status + ", got status=" +
-                status);
-        }
-
-    }
-
-
-}
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/component/Issue599Bean.java b/jsf-ri/systest/src/com/sun/faces/systest/component/Issue599Bean.java
new file mode 100644
index 0000000..add87c0
--- /dev/null
+++ b/jsf-ri/systest/src/com/sun/faces/systest/component/Issue599Bean.java
@@ -0,0 +1,125 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+ * Copyright (c) 2011 Oracle and/or its affiliates. All rights reserved.
+
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.systest.component;
+
+import com.sun.faces.event.UIAddComponent;
+import java.util.HashMap;
+import java.util.Map;
+import javax.faces.application.Application;
+import javax.faces.application.ViewHandler;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.RequestScoped;
+import javax.faces.component.UIForm;
+import javax.faces.component.UINamingContainer;
+
+import javax.faces.context.FacesContext;
+import javax.faces.view.ViewDeclarationLanguage;
+
+ at ManagedBean
+ at RequestScoped
+public class Issue599Bean {
+    
+    public String getResult() {
+        FacesContext context = FacesContext.getCurrentInstance();
+        Application app = context.getApplication();
+        ViewHandler vh = app.getViewHandler();
+        ViewDeclarationLanguage vdl = vh.getViewDeclarationLanguage(context, context.getViewRoot().getViewId());
+        
+        // Can I create a simple h:form with prependId="false"?
+        Map<String,Object> attrs = new HashMap<String, Object>();
+        attrs.put("prependId", "false");
+        UIForm form = (UIForm) vdl.createComponent(context, "http://java.sun.com/jsf/html",
+                "form", attrs);
+        
+        if (form.isPrependId()) {
+            throw new IllegalStateException("I asked for a form to be created" +
+                    " with prependId false, but that attr is not set.");
+        }
+        
+        attrs.clear();
+        
+        // Can I create a composite component in the default ResourceLibrary?
+        UINamingContainer cc = (UINamingContainer) vdl.
+                createComponent(context, "http://java.sun.com/jsf/composite/i_spec_599_composite", 
+                "i_spec_599_composite", attrs);
+        attrs = cc.getAttributes();
+        if (!attrs.containsKey("customAttr")) {
+            throw new IllegalArgumentException("I asked for a composite component" +
+                    " with a known default attribute, but that attr is not set.");
+        }
+        
+        if (!"customAttrValue".equals(attrs.get("customAttr"))) {
+            throw new IllegalArgumentException("I asked for a composite component" +
+                    " with a known default attribute" + 
+                    " but the value of that attr is not as expected.");
+        }
+        
+        // Can I create a component coming from a custom taglib?
+        attrs = new HashMap<String, Object>();
+        UIAddComponent ac = (UIAddComponent) vdl.
+                createComponent(context, "http://testcomponent", "addcomponent", attrs);
+        if (!"com.sun.faces.event".equals(ac.getFamily())) {
+            throw new IllegalArgumentException("I asked for a component" +
+                    " with a known family" + 
+                    " but the value of that family is not as expected.");
+            
+        }
+        
+        // Can I create a composite component coming from a custom
+        // taglib?
+        cc = (UINamingContainer) vdl.createComponent(context, "i_spec_599_composite_taglib", 
+                "i_spec_599_composite_taglib", attrs);
+        attrs = cc.getAttributes();
+        if (!attrs.containsKey("customAttr2")) {
+            throw new IllegalArgumentException("I asked for a composite component" +
+                    " with a known default attribute, but that attr is not set.");
+        }
+        
+        if (!"customAttrValue2".equals(attrs.get("customAttr2"))) {
+            throw new IllegalArgumentException("I asked for a composite component" +
+                    " with a known default attribute" + 
+                    " but the value of that attr is not as expected.");
+        }
+        
+        
+        return "success";
+    }
+    
+}
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/composite/CompositeAttributeTestCase.java b/jsf-ri/systest/src/com/sun/faces/systest/composite/CompositeAttributeTestCase.java
new file mode 100644
index 0000000..f847f43
--- /dev/null
+++ b/jsf-ri/systest/src/com/sun/faces/systest/composite/CompositeAttributeTestCase.java
@@ -0,0 +1,192 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.composite;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import com.sun.faces.htmlunit.HtmlUnitFacesTestCase;
+import com.gargoylesoftware.htmlunit.html.*;
+
+import java.util.List;
+
+/**
+ * Unit tests for Composite Component Attributes
+ */
+public class CompositeAttributeTestCase extends HtmlUnitFacesTestCase {
+
+
+    @SuppressWarnings({"UnusedDeclaration"})
+    public CompositeAttributeTestCase() {
+        this("CompositeAttributeTestCase");
+    }
+
+    public CompositeAttributeTestCase(String name) {
+        super(name);
+    }
+
+
+    /**
+     * Set up instance variables required by this test case.
+     */
+    @Override
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+
+
+    /**
+     * Return the tests included in this test suite.
+     */
+    public static Test suite() {
+        return (new TestSuite(CompositeAttributeTestCase.class));
+    }
+
+
+    /**
+     * Tear down instance variables required by this test case.
+     */
+    @Override
+    public void tearDown() {
+        super.tearDown();
+    }
+    
+
+    // -------------------------------------------------------------- Test Cases
+
+    // Tests cc:attribute default=....
+
+    public void testValueExpressionDefaults() throws Exception {
+
+        HtmlPage page = getPage("/faces/composite/defaultAttributeValueExpression.xhtml");
+        assertTrue(page.asText().contains("DEFAULT VALUE"));
+
+    }
+
+    /**
+     * Test for Issue #1966
+     * @throws Exception
+     */
+    public void testCompositeAttributeDefaults() throws Exception {
+        HtmlPage page = getPage("/faces/composite/defaultAttributeValueExpression_1966.xhtml");
+
+        // Test with empty list as items
+        HtmlElement dataTable = page.getElementById("WithValueEmptyList:DataTable");
+        List<DomText> content = (List<DomText>) dataTable.getByXPath("./tbody/tr/td/text()");
+        assertTrue("Table should conain max. 1 empty cell.", content.size() <= 1);
+        for (DomText text : content) {
+            assertTrue("Cells should be empty", text.asText().length() == 0);
+        }
+
+        // Test with null value as items
+        dataTable = page.getElementById("WithValueNull:DataTable");
+        content = (List<DomText>) dataTable.getByXPath("./tbody/tr/td/text()");
+        assertEquals("Table should contain 2 cells", 2, content.size());
+        for (int i = 0; i < 2; i++) {
+            assertEquals("---Item " + (i + 1) + "---", content.get(i).toString());
+        }
+
+        // @Todo change to a test without awt dependencies
+        // Test Colors
+//        assertElementContentEquals(page,
+//                "ColorWithValueFromBean:Output",
+//                "---java.awt.Color[r=255,g=175,b=175]---");
+//        assertElementContentEquals(page,
+//                "ColorWithValueLiteral:Output",
+//                "---java.awt.Color[r=80,g=40,b=20]---");
+//        assertElementContentEquals(page,
+//                "ColorWithValueNone:Output",
+//                "---java.awt.Color[r=200,g=100,b=50]---");
+//        assertElementContentEquals(page,
+//                "ColorWithValueEmpty:Output",
+//                "---java.awt.Color[r=200,g=100,b=50]---");
+//        assertElementContentEquals(page,
+//                "ColorWithValueNull:Output",
+//                "---java.awt.Color[r=200,g=100,b=50]---");
+
+    }
+
+    /**
+     * Test for Issue #1986
+     */
+    public void testCompositeAttributeCanBeNull() throws Exception {
+        HtmlPage page = getPage("/faces/composite/defaultAttributeValueExpression_1986.xhtml");
+        assertElementAttributeEquals(page, "WithValueNull:Input", "value", "");
+        assertElementAttributeEquals(page, "WithValueEmpty:Input", "value", "");
+    }
+
+    /**
+     * Helper to test for the Content of an HTML-Element.
+     * This method will assert, that the Element with the provided id exists
+     * and that its content is equal to the provided expected content.
+     * @param page the page to test
+     * @param elementId the id of the element that contains the content to be
+     *  tested.
+     * @param expected the expected content
+     */
+    private void assertElementContentEquals(final HtmlPage page,
+            final String elementId, final String expected) {
+        HtmlElement element = page.getElementById(elementId);
+        assertNotNull(element);
+        assertEquals("Testing element content of #" + elementId,
+                expected, element.getTextContent());
+    }
+
+
+    /**
+     * Helper to test for the value of an attribute of a HTML-Element.
+     * This method will assert, that the Element with the provided id exists
+     * and that the value of the attribute with the provided attributeName is
+     * equal to the provided expected content.
+     * @param page the page to test
+     * @param elementId the id of the element with the attribute to be tested
+     * @param attributeName the name of the attribute to be tested
+     * @param expected the expected content
+     */
+    private void assertElementAttributeEquals(final HtmlPage page,
+            final String elementId,final String attributeName,
+            final String expected) {
+        HtmlElement element = page.getElementById(elementId);
+        assertNotNull(element);
+        assertEquals("Testing attribute '" +  attributeName + "' of #"
+                + elementId,
+                expected, element.getAttribute(attributeName));
+    }
+}
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/composite/MultiActionComponentBean.java b/jsf-ri/systest/src/com/sun/faces/systest/composite/MultiActionComponentBean.java
new file mode 100644
index 0000000..33ac327
--- /dev/null
+++ b/jsf-ri/systest/src/com/sun/faces/systest/composite/MultiActionComponentBean.java
@@ -0,0 +1,61 @@
+
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.composite;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.RequestScoped;
+
+
+ at ManagedBean
+ at RequestScoped
+public class MultiActionComponentBean {
+
+    public Object submitAction() {
+
+        return "compositeComponentWithMultipleActions_submit";
+    }
+
+    public Object cancelAction() {
+
+        return "compositeComponentWithMultipleActions_cancel";
+    }
+}
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/composite/MultiActionComponentTestCase.java b/jsf-ri/systest/src/com/sun/faces/systest/composite/MultiActionComponentTestCase.java
new file mode 100644
index 0000000..2994dfc
--- /dev/null
+++ b/jsf-ri/systest/src/com/sun/faces/systest/composite/MultiActionComponentTestCase.java
@@ -0,0 +1,87 @@
+
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.composite;
+
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import com.sun.faces.htmlunit.HtmlUnitFacesTestCase;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+
+
+public class MultiActionComponentTestCase extends HtmlUnitFacesTestCase {
+
+
+    public MultiActionComponentTestCase(String name) {
+        super(name);
+    }
+
+    public static Test suite() {
+        return (new TestSuite(MultiActionComponentTestCase.class));
+    }
+
+    public void test01() throws Exception {
+        doTest("/faces/composite/compositeComponentWithMultipleActions.xhtml");
+
+    }
+    
+    public void test02() throws Exception {
+        doTest("/faces/composite/compositeComponentWithMultipleActionsMethodSignatures.xhtml");
+
+    }
+
+    public void doTest(String path) throws Exception {
+        HtmlPage page = getPage(path);
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("cc:submitAction");
+        page = button.click();
+        assertTrue("Expected submit pressed, received: " + page.asText(),
+                page.asText().matches("(?s).*submit pressed.*"));
+
+        page = getPage(path);
+        button = (HtmlSubmitInput) page.getElementById("cc:cancelAction");
+        page = button.click();
+        assertTrue("Expected cancel pressed, received: " + page.asText(),
+                page.asText().matches("(?s).*cancel pressed.*"));
+
+    }
+}
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/composite/behavior/CompositeBehavior.java b/jsf-ri/systest/src/com/sun/faces/systest/composite/behavior/CompositeBehavior.java
new file mode 100644
index 0000000..156b6c3
--- /dev/null
+++ b/jsf-ri/systest/src/com/sun/faces/systest/composite/behavior/CompositeBehavior.java
@@ -0,0 +1,65 @@
+
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.composite.behavior;
+
+import javax.faces.component.behavior.ClientBehaviorBase;
+import javax.faces.component.behavior.ClientBehaviorContext;
+import javax.faces.component.behavior.FacesBehavior;
+
+
+ at FacesBehavior("compositeBehavior")
+public class CompositeBehavior extends ClientBehaviorBase {
+
+    @Override
+    public String getScript(ClientBehaviorContext behaviorContext) {
+        String result = "";
+
+        if ("ok".equals(behaviorContext.getEventName())) {
+            result = "document.write(\"compositeBehavior script rendered\");";
+        }
+
+        return result;
+    }
+
+
+
+}
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/composite/behavior/CompositeBehaviorTestBean.java b/jsf-ri/systest/src/com/sun/faces/systest/composite/behavior/CompositeBehaviorTestBean.java
new file mode 100644
index 0000000..e241071
--- /dev/null
+++ b/jsf-ri/systest/src/com/sun/faces/systest/composite/behavior/CompositeBehaviorTestBean.java
@@ -0,0 +1,56 @@
+
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.composite.behavior;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.RequestScoped;
+
+
+ at ManagedBean
+ at RequestScoped
+public class CompositeBehaviorTestBean {
+
+    public String doAction() {
+        return "composite02";
+    }
+
+}
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/dynamic1757/Issue1757DynamicManagedBean.java b/jsf-ri/systest/src/com/sun/faces/systest/dynamic1757/Issue1757DynamicManagedBean.java
new file mode 100644
index 0000000..8b7b3a0
--- /dev/null
+++ b/jsf-ri/systest/src/com/sun/faces/systest/dynamic1757/Issue1757DynamicManagedBean.java
@@ -0,0 +1,56 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.dynamic1757;
+
+import javax.faces.bean.ManagedBean;
+
+ at ManagedBean
+public class Issue1757DynamicManagedBean
+{
+	//
+	// Public methods
+	//
+
+	public void save()
+	{
+		// Do nothing
+	}
+}
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/dynamic1757/Issue1757TestCase.java b/jsf-ri/systest/src/com/sun/faces/systest/dynamic1757/Issue1757TestCase.java
new file mode 100644
index 0000000..4114bb8
--- /dev/null
+++ b/jsf-ri/systest/src/com/sun/faces/systest/dynamic1757/Issue1757TestCase.java
@@ -0,0 +1,108 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.dynamic1757;
+
+
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import com.sun.faces.htmlunit.HtmlUnitFacesTestCase;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+
+/**
+ * Test cases for Facelets functionality
+ */
+public class Issue1757TestCase extends HtmlUnitFacesTestCase {
+
+
+    // --------------------------------------------------------------- Test Init
+
+
+    public Issue1757TestCase() {
+        this("Issue1757TestCase");
+    }
+
+
+    public Issue1757TestCase(String name) {
+        super(name);
+    }
+
+
+    /**
+     * Set up instance variables required by this test case.
+     */
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+
+
+    /**
+     * Return the tests included in this test suite.
+     */
+    public static Test suite() {
+        return (new TestSuite(Issue1757TestCase.class));
+    }
+
+
+    /**
+     * Tear down instance variables required by this test case.
+     */
+    public void tearDown() {
+        super.tearDown();
+    }
+
+
+    // ------------------------------------------------------------ Test Methods
+
+
+    public void testDynamicComponents() throws Exception {
+        HtmlPage page = getPage("/faces/facelets/issue1757-dynamic-components.xhtml");
+        String text = page.asText();
+        assertTrue(text.matches("(?s).*TestComponent::encodeBegin\\s*Manually added child\\s*Dynamically added child\\s*TestComponent::encodeEnd.*"));
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("button");
+        page = button.click();
+        text = page.asText();
+        assertTrue(text.matches("(?s).*TestComponent::encodeBegin\\s*Manually added child\\s*Dynamically added child\\s*TestComponent::encodeEnd.*"));
+        
+    }
+
+}
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/dynamic1757/TestComponentRenderer.java b/jsf-ri/systest/src/com/sun/faces/systest/dynamic1757/TestComponentRenderer.java
new file mode 100644
index 0000000..8c9b49d
--- /dev/null
+++ b/jsf-ri/systest/src/com/sun/faces/systest/dynamic1757/TestComponentRenderer.java
@@ -0,0 +1,72 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.dynamic1757;
+
+import java.io.IOException;
+
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.render.FacesRenderer;
+import javax.faces.render.Renderer;
+
+ at FacesRenderer( componentFamily = "com.sun.faces.systest.dynamic1757.UITestComponent", rendererType = "testcomponent" )
+public class TestComponentRenderer
+	extends Renderer
+{
+	@Override
+	public void encodeBegin( FacesContext context, UIComponent component )
+		throws IOException
+	{
+		context.getResponseWriter().write( "<div style=\"border: 1px solid red\">TestComponent::encodeBegin<br/>" );
+
+		super.encodeBegin( context, component );
+	}
+
+	@Override
+	public void encodeEnd( FacesContext context, UIComponent component )
+		throws IOException
+	{
+		context.getResponseWriter().write( "TestComponent::encodeEnd</div>" );
+
+		super.encodeEnd( context, component );
+	}
+
+}
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/dynamic1757/UITestComponent.java b/jsf-ri/systest/src/com/sun/faces/systest/dynamic1757/UITestComponent.java
new file mode 100644
index 0000000..7b13901
--- /dev/null
+++ b/jsf-ri/systest/src/com/sun/faces/systest/dynamic1757/UITestComponent.java
@@ -0,0 +1,90 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.dynamic1757;
+
+import javax.faces.component.FacesComponent;
+import javax.faces.component.UIComponentBase;
+import javax.faces.component.UIViewRoot;
+import javax.faces.component.html.HtmlOutputText;
+import javax.faces.context.FacesContext;
+import javax.faces.event.AbortProcessingException;
+import javax.faces.event.PreRenderViewEvent;
+import javax.faces.event.SystemEvent;
+import javax.faces.event.SystemEventListener;
+
+ at FacesComponent( value = "com.sun.faces.systest.dynamic1757.UITestComponent" )
+public class UITestComponent
+	extends UIComponentBase
+	implements SystemEventListener
+{
+	public UITestComponent()
+	{
+		setRendererType( "testcomponent" );
+
+		FacesContext context = FacesContext.getCurrentInstance();
+		UIViewRoot root = context.getViewRoot();
+
+		if ( !context.isPostback() ) {
+			root.subscribeToViewEvent( PreRenderViewEvent.class, this );
+		}
+	}
+
+	public String getFamily()
+	{
+		return "com.sun.faces.systest.dynamic1757.UITestComponent";
+	}
+
+	public boolean isListenerForSource( Object source )
+	{
+		return ( source instanceof UIViewRoot );
+	}
+
+	public void processEvent( SystemEvent event )
+		throws AbortProcessingException
+	{
+		FacesContext context = FacesContext.getCurrentInstance();
+		HtmlOutputText outputText = (HtmlOutputText) context.getApplication().createComponent( "javax.faces.HtmlOutputText" );
+		outputText.setValue( "Dynamically added child<br/>" );
+		outputText.setEscape( false );
+
+		getChildren().add( outputText );
+	}
+}
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/el/ELTestCase.java b/jsf-ri/systest/src/com/sun/faces/systest/el/ELTestCase.java
deleted file mode 100644
index 553a899..0000000
--- a/jsf-ri/systest/src/com/sun/faces/systest/el/ELTestCase.java
+++ /dev/null
@@ -1,115 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- *
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- *
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- *
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- *
- * Contributor(s):
- *
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package com.sun.faces.systest.el;
-
-import java.util.List;
-import java.util.ArrayList;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-import com.sun.faces.htmlunit.AbstractTestCase;
-import com.gargoylesoftware.htmlunit.html.HtmlPage;
-import com.gargoylesoftware.htmlunit.html.HtmlSpan;
-import com.gargoylesoftware.htmlunit.html.HtmlInput;
-
-/**
- * Validate new EL features such as the component implicit object
- */
-public class ELTestCase extends AbstractTestCase {
-
-    public ELTestCase(String name) {
-        super(name);
-    }
-
-
-    /**
-     * Set up instance variables required by this test case.
-     */
-    public void setUp() throws Exception {
-        super.setUp();
-    }
-
-
-    /**
-     * Return the tests included in this test suite.
-     */
-    public static Test suite() {
-        return (new TestSuite(ELTestCase.class));
-    }
-
-
-    /**
-     * Tear down instance variables required by this test case.
-     */
-    public void tearDown() {
-        super.tearDown();
-    }
-
-    // ------------------------------------------------------------ Test Methods
-
-
-    public void testComponentImplicitObject() throws Exception {
-        HtmlPage page = getPage("/faces/componentImplicitObject.jsp");
-        List<HtmlSpan> outputs = new ArrayList<HtmlSpan>(2);
-        getAllElementsOfGivenClass(page, outputs, HtmlSpan.class);
-        assertTrue(outputs.size() ==2);
-        HtmlSpan s = outputs.get(0);
-        assertTrue("ot".equals(s.getId()));
-        assertTrue("ot".equals(s.asText()));
-        s = outputs.get(1);
-        assertTrue(s.getId().contains("facetOT"));
-        assertTrue("facetOT".equals(s.asText()));
-        List<HtmlInput> inputs = new ArrayList<HtmlInput>(2);
-        getAllElementsOfGivenClass(page, inputs, HtmlInput.class);
-        HtmlInput i = inputs.get(2);
-        assertTrue(i.getId().contains("0:it"));
-        assertTrue("it".equals(i.asText()));
-        i = inputs.get(3);
-        assertTrue(i.getId().contains("1:it"));
-        assertTrue("it".equals(i.asText()));
-
-    }
-
-
-    public void testProgrammaticExpressionFunctionEval() throws Exception {
-
-        HtmlPage page = getPage("/faces/elfunction.xhtml");
-        assertTrue(page.asText().contains("PASSED"));
-        
-    }
-
-}
\ No newline at end of file
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/flash/FlashMessagesBean.java b/jsf-ri/systest/src/com/sun/faces/systest/flash/FlashMessagesBean.java
deleted file mode 100644
index 728ac07..0000000
--- a/jsf-ri/systest/src/com/sun/faces/systest/flash/FlashMessagesBean.java
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- *
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- *
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- *
- * Contributor(s):
- *
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package com.sun.faces.systest.flash;
-
-import javax.faces.application.FacesMessage;
-import javax.faces.bean.ManagedBean;
-import javax.faces.bean.ManagedProperty;
-import javax.faces.bean.RequestScoped;
-import javax.faces.context.FacesContext;
-
- at ManagedBean
- at RequestScoped
-public class FlashMessagesBean {
-
-    @ManagedProperty(value="#{facesContext}")
-    protected FacesContext facesContext;
-
-    public FacesContext getFacesContext() {
-        return facesContext;
-    }
-
-    public void setFacesContext(FacesContext facesContext) {
-        this.facesContext = facesContext;
-    }
-
-
-    protected String value;
-
-    public String getValue() {
-        return value;
-    }
-
-    public void setValue(String value) {
-        this.value = value;
-        FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO,
-                "Mesage 1", "survives redirect");
-        getFacesContext().addMessage(null, message);
-        message = new FacesMessage(FacesMessage.SEVERITY_INFO,
-                "Mesage 2", "survives redirect");
-        getFacesContext().addMessage(null, message);
-        getFacesContext().getExternalContext().getFlash().setKeepMessages(true);
-
-    }
-
-
-}
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/implicitnav/ImplicitNavigationBean.java b/jsf-ri/systest/src/com/sun/faces/systest/implicitnav/ImplicitNavigationBean.java
index daddd98..7b8fbd6 100644
--- a/jsf-ri/systest/src/com/sun/faces/systest/implicitnav/ImplicitNavigationBean.java
+++ b/jsf-ri/systest/src/com/sun/faces/systest/implicitnav/ImplicitNavigationBean.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/implicitnav/ImplicitNavigationTestCase.java b/jsf-ri/systest/src/com/sun/faces/systest/implicitnav/ImplicitNavigationTestCase.java
index 9615ac1..d221f91 100644
--- a/jsf-ri/systest/src/com/sun/faces/systest/implicitnav/ImplicitNavigationTestCase.java
+++ b/jsf-ri/systest/src/com/sun/faces/systest/implicitnav/ImplicitNavigationTestCase.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -40,12 +44,12 @@ import junit.framework.Test;
 import junit.framework.TestSuite;
 import com.gargoylesoftware.htmlunit.html.HtmlPage;
 import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
-import com.sun.faces.htmlunit.AbstractTestCase;
+import com.sun.faces.htmlunit.HtmlUnitFacesTestCase;
 import com.gargoylesoftware.htmlunit.FailingHttpStatusCodeException;
 import com.gargoylesoftware.htmlunit.html.HtmlButtonInput;
 import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
 
-public class ImplicitNavigationTestCase extends AbstractTestCase {
+public class ImplicitNavigationTestCase extends HtmlUnitFacesTestCase {
 
 
     public ImplicitNavigationTestCase(String name) {
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/jsp/managed/ManagedTestCase.java b/jsf-ri/systest/src/com/sun/faces/systest/jsp/managed/ManagedTestCase.java
new file mode 100644
index 0000000..d64273b
--- /dev/null
+++ b/jsf-ri/systest/src/com/sun/faces/systest/jsp/managed/ManagedTestCase.java
@@ -0,0 +1,67 @@
+
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.jsp.managed;
+
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.sun.faces.htmlunit.HtmlUnitFacesTestCase;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+
+
+public class ManagedTestCase extends HtmlUnitFacesTestCase {
+
+
+    public ManagedTestCase(String name) {
+        super(name);
+    }
+
+    public static Test suite() {
+        return (new TestSuite(ManagedTestCase.class));
+    }
+
+    public void test04() throws Exception {
+        HtmlPage page = getPage("/faces/managed04.jsp");
+        assertTrue(page.asText().matches("(?s).*one two three fourfivesixseveneight.*"));
+    }
+
+}
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/lifecycle/ApplicationFactoryWrapper.java b/jsf-ri/systest/src/com/sun/faces/systest/lifecycle/ApplicationFactoryWrapper.java
index 2ed39b1..f16d8bf 100644
--- a/jsf-ri/systest/src/com/sun/faces/systest/lifecycle/ApplicationFactoryWrapper.java
+++ b/jsf-ri/systest/src/com/sun/faces/systest/lifecycle/ApplicationFactoryWrapper.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -40,6 +44,9 @@ import javax.faces.application.ApplicationFactory;
 import javax.faces.application.Application;
 
 public class ApplicationFactoryWrapper extends ApplicationFactory {
+
+    public ApplicationFactoryWrapper() {
+    }
     
     private ApplicationFactory oldFactory = null;
     
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/lifecycle/FacesContextFactoryWrapper.java b/jsf-ri/systest/src/com/sun/faces/systest/lifecycle/FacesContextFactoryWrapper.java
index 5d6f460..56fe40f 100644
--- a/jsf-ri/systest/src/com/sun/faces/systest/lifecycle/FacesContextFactoryWrapper.java
+++ b/jsf-ri/systest/src/com/sun/faces/systest/lifecycle/FacesContextFactoryWrapper.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -42,6 +46,9 @@ import javax.faces.lifecycle.Lifecycle;
 import javax.faces.FacesException;
 
 public class FacesContextFactoryWrapper extends FacesContextFactory {
+
+    public FacesContextFactoryWrapper() {
+    }
     
     private FacesContextFactory oldFactory = null;
     
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/lifecycle/LifecycleFactoryWrapper.java b/jsf-ri/systest/src/com/sun/faces/systest/lifecycle/LifecycleFactoryWrapper.java
index 89fd4d7..d465970 100644
--- a/jsf-ri/systest/src/com/sun/faces/systest/lifecycle/LifecycleFactoryWrapper.java
+++ b/jsf-ri/systest/src/com/sun/faces/systest/lifecycle/LifecycleFactoryWrapper.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -42,6 +46,9 @@ import javax.faces.FacesException;
 import java.util.Iterator;
 
 public class LifecycleFactoryWrapper extends LifecycleFactory {
+
+    public LifecycleFactoryWrapper() {
+    }
     
     private LifecycleFactory oldFactory = null;
     
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/lifecycle/ManagedBeanLifecycleAnnotationTestCase.java b/jsf-ri/systest/src/com/sun/faces/systest/lifecycle/ManagedBeanLifecycleAnnotationTestCase.java
index 3ae8ef0..3ba6931 100644
--- a/jsf-ri/systest/src/com/sun/faces/systest/lifecycle/ManagedBeanLifecycleAnnotationTestCase.java
+++ b/jsf-ri/systest/src/com/sun/faces/systest/lifecycle/ManagedBeanLifecycleAnnotationTestCase.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -37,7 +41,7 @@
 package com.sun.faces.systest.lifecycle;
 import com.gargoylesoftware.htmlunit.html.HtmlPage;
 import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
-import com.sun.faces.htmlunit.AbstractTestCase;
+import com.sun.faces.htmlunit.HtmlUnitFacesTestCase;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 import junit.framework.Test;
@@ -48,7 +52,7 @@ import junit.framework.TestSuite;
  * <p>Test Case for JSP Interoperability.</p>
  */
 
-public class ManagedBeanLifecycleAnnotationTestCase extends AbstractTestCase {
+public class ManagedBeanLifecycleAnnotationTestCase extends HtmlUnitFacesTestCase {
 
 
     // ------------------------------------------------------------ Constructors
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/lifecycle/ReloadPhaseListenerImpl.java b/jsf-ri/systest/src/com/sun/faces/systest/lifecycle/ReloadPhaseListenerImpl.java
index 95132f4..4f68cc8 100644
--- a/jsf-ri/systest/src/com/sun/faces/systest/lifecycle/ReloadPhaseListenerImpl.java
+++ b/jsf-ri/systest/src/com/sun/faces/systest/lifecycle/ReloadPhaseListenerImpl.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/lifecycle/RenderKitFactoryWrapper.java b/jsf-ri/systest/src/com/sun/faces/systest/lifecycle/RenderKitFactoryWrapper.java
index ecf2795..d644f96 100644
--- a/jsf-ri/systest/src/com/sun/faces/systest/lifecycle/RenderKitFactoryWrapper.java
+++ b/jsf-ri/systest/src/com/sun/faces/systest/lifecycle/RenderKitFactoryWrapper.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -43,6 +47,9 @@ import javax.faces.FacesException;
 import java.util.Iterator;
 
 public class RenderKitFactoryWrapper extends RenderKitFactory {
+
+    public RenderKitFactoryWrapper() {
+    }
     
     private RenderKitFactory oldFactory = null;
     
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/listener.java b/jsf-ri/systest/src/com/sun/faces/systest/listener.java
new file mode 100644
index 0000000..d063ac3
--- /dev/null
+++ b/jsf-ri/systest/src/com/sun/faces/systest/listener.java
@@ -0,0 +1,64 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest;
+
+
+
+import javax.faces.context.FacesContext;
+import javax.faces.event.AbortProcessingException;
+import javax.faces.event.ValueChangeEvent;
+import javax.faces.event.ValueChangeListener;
+
+
+
+/**
+ *
+ * @author Keule
+ */
+public class listener implements ValueChangeListener {
+
+    public void processValueChange(ValueChangeEvent event) throws AbortProcessingException {
+
+        FacesContext context = FacesContext.getCurrentInstance();
+        context.getExternalContext().getFlash().put("processValueChangeMessage", "Hello from processValueChange: " + System.currentTimeMillis());
+    }
+
+}
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/model/AbstractTestBean.java b/jsf-ri/systest/src/com/sun/faces/systest/model/AbstractTestBean.java
index 5ad9471..2b718f3 100644
--- a/jsf-ri/systest/src/com/sun/faces/systest/model/AbstractTestBean.java
+++ b/jsf-ri/systest/src/com/sun/faces/systest/model/AbstractTestBean.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/model/AddMessageBean.java b/jsf-ri/systest/src/com/sun/faces/systest/model/AddMessageBean.java
deleted file mode 100644
index 834e30f..0000000
--- a/jsf-ri/systest/src/com/sun/faces/systest/model/AddMessageBean.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- *
- * Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
- *
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- *
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- *
- * Contributor(s):
- *
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package com.sun.faces.systest.model;
-
-import javax.faces.application.FacesMessage;
-import javax.faces.bean.ManagedBean;
-import javax.faces.context.FacesContext;
-
- at ManagedBean
-public class AddMessageBean {
-
-    public String addMessage() {
-        FacesContext.getCurrentInstance()
-              .addMessage(null, new FacesMessage("This is a global message"));
-        return "messagePage?faces-redirect=true";
-    }
-
-}
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/model/Bean1729.java b/jsf-ri/systest/src/com/sun/faces/systest/model/Bean1729.java
new file mode 100644
index 0000000..7ed0235
--- /dev/null
+++ b/jsf-ri/systest/src/com/sun/faces/systest/model/Bean1729.java
@@ -0,0 +1,80 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.model;
+
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.RequestScoped;
+import javax.faces.context.FacesContext;
+
+
+/**
+ *
+ * @author Keule
+ */
+ at ManagedBean(name="bean1729")
+ at RequestScoped
+public class Bean1729 {
+
+    /** Creates a new instance of test */
+    public Bean1729() {
+    }
+
+
+    private int input1 = -1;
+
+    public int getInput1() {
+        return input1;
+    }
+
+    public void setInput1(int input1) {
+        this.input1 = input1;
+    }
+
+    public void doIt() {
+        FacesContext context = FacesContext.getCurrentInstance();
+        context.getExternalContext().getFlash().put("processActionListenerMessage", "Aufgerufen: " + System.currentTimeMillis());
+    }
+
+
+}
+
+
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/model/Bean2194.java b/jsf-ri/systest/src/com/sun/faces/systest/model/Bean2194.java
new file mode 100644
index 0000000..9ce58a8
--- /dev/null
+++ b/jsf-ri/systest/src/com/sun/faces/systest/model/Bean2194.java
@@ -0,0 +1,82 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.model;
+
+import java.util.Arrays;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.RequestScoped;
+
+ at ManagedBean
+ at RequestScoped
+public class Bean2194 {
+
+    private String actionListenerType = null;
+    private String valueChangeListenerType = null;
+    private String phaseListenerType = null;
+
+    public Bean2194() { 
+    }
+
+    private void setActionListenerType(String type) {
+        this.actionListenerType = type;
+    }
+
+    public String getActionListenerType() {
+        return "com.sun.faces.systest.TestActionListener01";
+    }
+
+    private void setValueChangeListenerType(String type) {
+        this.valueChangeListenerType = type;
+    }
+
+    public String getValueChangeListenerType() {
+        return "com.sun.faces.systest.TestValueChangeListener01";
+    }
+
+    private void setPhaseListenerType(String type) {
+        this.phaseListenerType = type;
+    }
+
+    public String getPhaseListenerType() {
+        return "com.sun.faces.systest.TestPhaseListener01";
+    }
+}
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/model/Bean2202.java b/jsf-ri/systest/src/com/sun/faces/systest/model/Bean2202.java
new file mode 100644
index 0000000..3d5133b
--- /dev/null
+++ b/jsf-ri/systest/src/com/sun/faces/systest/model/Bean2202.java
@@ -0,0 +1,64 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.model;
+
+import java.util.Arrays;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.RequestScoped;
+
+ at ManagedBean
+ at RequestScoped
+public class Bean2202 {
+
+    private String insertArea = "INSERT AREA"; 
+
+    public Bean2202() { 
+    }
+
+    private void setInsertArea(String insertArea) {
+        this.insertArea= insertArea;
+    }
+
+    public String getInsertArea() {
+        return insertArea;
+    }
+}
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/model/BookBean.java b/jsf-ri/systest/src/com/sun/faces/systest/model/BookBean.java
index 9b79b3b..93e0590 100644
--- a/jsf-ri/systest/src/com/sun/faces/systest/model/BookBean.java
+++ b/jsf-ri/systest/src/com/sun/faces/systest/model/BookBean.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/model/BooksBean.java b/jsf-ri/systest/src/com/sun/faces/systest/model/BooksBean.java
index f3d3b74..61fc2b4 100644
--- a/jsf-ri/systest/src/com/sun/faces/systest/model/BooksBean.java
+++ b/jsf-ri/systest/src/com/sun/faces/systest/model/BooksBean.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/model/CSRFBean.java b/jsf-ri/systest/src/com/sun/faces/systest/model/CSRFBean.java
new file mode 100644
index 0000000..1595572
--- /dev/null
+++ b/jsf-ri/systest/src/com/sun/faces/systest/model/CSRFBean.java
@@ -0,0 +1,83 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.model;
+
+/**
+ * <p>Test JavaBean for CSRF application.</p>
+ */
+public class CSRFBean {
+
+    private String amount = "1000";
+    private String account = "37665";
+    private String destAccount;
+    private String transferAmount;
+
+    public String getAmount() {
+        return amount;
+    } 
+
+    public String getAccount() {
+        return account;
+    } 
+
+    public String getTransferAmount() {
+        return transferAmount;
+    }
+
+    public String getDestAccount() {
+        return destAccount;
+    }
+
+    public void setTransferAmount(String transferAmount) {
+        this.transferAmount = transferAmount;
+    }
+        
+    public void setDestAccount(String destAccount) {
+        this.destAccount = destAccount;
+    }
+
+    public void transfer() {
+        int intAmount = Integer.valueOf(amount).intValue();
+        int intTransferAmount = Integer.valueOf(transferAmount).intValue();
+        intAmount = intAmount - intTransferAmount;
+        amount = String.valueOf(intAmount);
+    }
+}
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/model/ConverterBean.java b/jsf-ri/systest/src/com/sun/faces/systest/model/ConverterBean.java
old mode 100644
new mode 100755
index a8cdb82..4d021f1
--- a/jsf-ri/systest/src/com/sun/faces/systest/model/ConverterBean.java
+++ b/jsf-ri/systest/src/com/sun/faces/systest/model/ConverterBean.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/model/CustomDatatableBean.java b/jsf-ri/systest/src/com/sun/faces/systest/model/CustomDatatableBean.java
index 2357622..6607b29 100644
--- a/jsf-ri/systest/src/com/sun/faces/systest/model/CustomDatatableBean.java
+++ b/jsf-ri/systest/src/com/sun/faces/systest/model/CustomDatatableBean.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/model/EnumBean.java b/jsf-ri/systest/src/com/sun/faces/systest/model/EnumBean.java
index 0d0fb13..860d180 100644
--- a/jsf-ri/systest/src/com/sun/faces/systest/model/EnumBean.java
+++ b/jsf-ri/systest/src/com/sun/faces/systest/model/EnumBean.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -106,4 +110,4 @@ public class EnumBean {
     }
 
 
-} // END EnumBean
\ No newline at end of file
+} // END EnumBean
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/model/EventTagBean.java b/jsf-ri/systest/src/com/sun/faces/systest/model/EventTagBean.java
index 2762485..7f707b3 100644
--- a/jsf-ri/systest/src/com/sun/faces/systest/model/EventTagBean.java
+++ b/jsf-ri/systest/src/com/sun/faces/systest/model/EventTagBean.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/model/FaceletsBean.java b/jsf-ri/systest/src/com/sun/faces/systest/model/FaceletsBean.java
index 1e66390..de9c1cc 100644
--- a/jsf-ri/systest/src/com/sun/faces/systest/model/FaceletsBean.java
+++ b/jsf-ri/systest/src/com/sun/faces/systest/model/FaceletsBean.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/model/ForEachBean.java b/jsf-ri/systest/src/com/sun/faces/systest/model/ForEachBean.java
index 793383c..06b9111 100644
--- a/jsf-ri/systest/src/com/sun/faces/systest/model/ForEachBean.java
+++ b/jsf-ri/systest/src/com/sun/faces/systest/model/ForEachBean.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/model/FunctionBean.java b/jsf-ri/systest/src/com/sun/faces/systest/model/FunctionBean.java
index 4609d89..0ef9842 100644
--- a/jsf-ri/systest/src/com/sun/faces/systest/model/FunctionBean.java
+++ b/jsf-ri/systest/src/com/sun/faces/systest/model/FunctionBean.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/model/InterweavingBean.java b/jsf-ri/systest/src/com/sun/faces/systest/model/InterweavingBean.java
index 595e71d..c838657 100644
--- a/jsf-ri/systest/src/com/sun/faces/systest/model/InterweavingBean.java
+++ b/jsf-ri/systest/src/com/sun/faces/systest/model/InterweavingBean.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -64,4 +68,4 @@ public class InterweavingBean {
         return list;
     }
     
-} // END InterweavingBean
\ No newline at end of file
+} // END InterweavingBean
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/model/ListHolder.java b/jsf-ri/systest/src/com/sun/faces/systest/model/ListHolder.java
index cde6e50..28031be 100644
--- a/jsf-ri/systest/src/com/sun/faces/systest/model/ListHolder.java
+++ b/jsf-ri/systest/src/com/sun/faces/systest/model/ListHolder.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -58,4 +62,4 @@ public class ListHolder implements Serializable {
     public List getList() {
         return list;
     }
-}
\ No newline at end of file
+}
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/model/ListenerBean.java b/jsf-ri/systest/src/com/sun/faces/systest/model/ListenerBean.java
old mode 100644
new mode 100755
index 6aa814e..cc17e26
--- a/jsf-ri/systest/src/com/sun/faces/systest/model/ListenerBean.java
+++ b/jsf-ri/systest/src/com/sun/faces/systest/model/ListenerBean.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/model/ListenerCheckBean.java b/jsf-ri/systest/src/com/sun/faces/systest/model/ListenerCheckBean.java
index bb93f5b..f044e39 100644
--- a/jsf-ri/systest/src/com/sun/faces/systest/model/ListenerCheckBean.java
+++ b/jsf-ri/systest/src/com/sun/faces/systest/model/ListenerCheckBean.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/model/MethodRef.java b/jsf-ri/systest/src/com/sun/faces/systest/model/MethodRef.java
index a9df220..6f56f1b 100644
--- a/jsf-ri/systest/src/com/sun/faces/systest/model/MethodRef.java
+++ b/jsf-ri/systest/src/com/sun/faces/systest/model/MethodRef.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/model/NumberHolder.java b/jsf-ri/systest/src/com/sun/faces/systest/model/NumberHolder.java
index 9e1b415..d84d341 100644
--- a/jsf-ri/systest/src/com/sun/faces/systest/model/NumberHolder.java
+++ b/jsf-ri/systest/src/com/sun/faces/systest/model/NumberHolder.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -56,4 +60,4 @@ public class NumberHolder implements Serializable {
     public int getNumber() {
         return i;
     }
-}
\ No newline at end of file
+}
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/model/PrintEventToRequestMapPhaseListener.java b/jsf-ri/systest/src/com/sun/faces/systest/model/PrintEventToRequestMapPhaseListener.java
index c7ca45f..26a6cc3 100644
--- a/jsf-ri/systest/src/com/sun/faces/systest/model/PrintEventToRequestMapPhaseListener.java
+++ b/jsf-ri/systest/src/com/sun/faces/systest/model/PrintEventToRequestMapPhaseListener.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/model/PropertyOrderBean.java b/jsf-ri/systest/src/com/sun/faces/systest/model/PropertyOrderBean.java
index 857dadf..1daceb6 100644
--- a/jsf-ri/systest/src/com/sun/faces/systest/model/PropertyOrderBean.java
+++ b/jsf-ri/systest/src/com/sun/faces/systest/model/PropertyOrderBean.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/model/ResourceInjectionBean.java b/jsf-ri/systest/src/com/sun/faces/systest/model/ResourceInjectionBean.java
index a4a7d1b..2bb10d3 100644
--- a/jsf-ri/systest/src/com/sun/faces/systest/model/ResourceInjectionBean.java
+++ b/jsf-ri/systest/src/com/sun/faces/systest/model/ResourceInjectionBean.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/model/SelectItemsBean.java b/jsf-ri/systest/src/com/sun/faces/systest/model/SelectItemsBean.java
index 181a5d3..07e046c 100644
--- a/jsf-ri/systest/src/com/sun/faces/systest/model/SelectItemsBean.java
+++ b/jsf-ri/systest/src/com/sun/faces/systest/model/SelectItemsBean.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -45,6 +49,33 @@ import javax.faces.model.SelectItemGroup;
 
 @ManagedBean
 public class SelectItemsBean {
+    
+    private SelectItem selectedHobbit;
+    private List<SelectItem> ctorHobbits;
+
+    public List<SelectItem> getCtorHobbits() {
+        return ctorHobbits;
+    }
+
+    public SelectItem getSelectedHobbit() {
+        return selectedHobbit;
+    }
+
+    public void setSelectedHobbit(SelectItem selectedHobbit) {
+        this.selectedHobbit = selectedHobbit;
+    }
+
+    public SelectItemsBean() {
+        this.ctorHobbits = new ArrayList<SelectItem>();
+        SelectItem initialValue = new SelectItem("Frodo");
+        setSelectedHobbit(initialValue);
+        this.ctorHobbits.add(initialValue);
+        this.ctorHobbits.add(new SelectItem("Pippin"));
+        this.ctorHobbits.add(new SelectItem("Bilbo"));
+        this.ctorHobbits.add(new SelectItem("Merry"));
+    }
+    
+    
 
 	public List<SelectItem> getHobbits() {
 		List<SelectItem> result = new ArrayList<SelectItem>(4);
@@ -80,4 +111,4 @@ public class SelectItemsBean {
 		return result;
 	}
     
-}
\ No newline at end of file
+}
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/model/SelectMany05Bean.java b/jsf-ri/systest/src/com/sun/faces/systest/model/SelectMany05Bean.java
index fa05f18..e020328 100644
--- a/jsf-ri/systest/src/com/sun/faces/systest/model/SelectMany05Bean.java
+++ b/jsf-ri/systest/src/com/sun/faces/systest/model/SelectMany05Bean.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -48,6 +52,7 @@ import java.util.LinkedHashSet;
 import java.util.Vector;
 import java.util.LinkedList;
 import java.util.Arrays;
+import java.util.Comparator;
 import java.util.concurrent.CopyOnWriteArraySet;
 
 import javax.faces.model.SelectItem;
@@ -58,6 +63,10 @@ import javax.faces.FacesException;
 
 public class SelectMany05Bean {
 
+    // As IBM j9 JRE/JDK does not use a static instance for reverseOrder()
+    // we need to keep a static instance to make equals() work
+    private static final Comparator<String> REVERSE_COMPARATOR = Collections.reverseOrder();
+
     private final Collection<SelectItem> possibleValues;
     private Set<String> setValues;
     private SortedSet<String> sortedSetValues;
@@ -86,7 +95,7 @@ public class SelectMany05Bean {
         hobbitCollection = new TreeSet<HobbitBean>();
         hobbitCollection.addAll(Arrays.asList(hobbits));
         possibleValues = Collections.unmodifiableSet(items);
-        initialSortedSetValues = new TreeSet<String>(Collections.reverseOrder());
+        initialSortedSetValues = new TreeSet<String>(REVERSE_COMPARATOR);
         initialSortedSetValues.add("Pippin");
         initialSortedSetValues.add("Frodo");
         initialCollectionValues = new LinkedHashSet<String>(2);
@@ -196,11 +205,17 @@ public class SelectMany05Bean {
 
     public void setInitialSortedSetValues(SortedSet<String> initialSortedSetValues) {
         if (!(initialSortedSetValues instanceof TreeSet)) {
-            throw new FacesException("[setInitialSortedSetValues] Error: Expected value to be TreeMap");
+            throw new FacesException("[setInitialSortedSetValues] Error: Expected value to be TreeSet");
         }
-        if (!Collections.reverseOrder().equals(((TreeSet) initialSortedSetValues).comparator())) {
+
+        if (!REVERSE_COMPARATOR.equals(initialSortedSetValues.comparator())) {
             throw new FacesException("[setInitialSortedSetValues] Error: Comparator is not equivalent to Collections.reverseOrder()");
         }
+
+// This comparison fails on AIX platform, so we do the above comparison
+//        if (!Collections.reverseOrder().equals(((TreeSet) initialSortedSetValues).comparator())) {
+//            throw new FacesException("[setInitialSortedSetValues] Error: Comparator is not equivalent to Collections.reverseOrder()");
+//        }
         this.initialSortedSetValues = initialSortedSetValues;
     }
 
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/model/SelectMany05BeanWithNoSelectionValue.java b/jsf-ri/systest/src/com/sun/faces/systest/model/SelectMany05BeanWithNoSelectionValue.java
index c1e163a..3791bbd 100644
--- a/jsf-ri/systest/src/com/sun/faces/systest/model/SelectMany05BeanWithNoSelectionValue.java
+++ b/jsf-ri/systest/src/com/sun/faces/systest/model/SelectMany05BeanWithNoSelectionValue.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/model/SpecialBean.java b/jsf-ri/systest/src/com/sun/faces/systest/model/SpecialBean.java
index 4ce9de8..98a1f30 100644
--- a/jsf-ri/systest/src/com/sun/faces/systest/model/SpecialBean.java
+++ b/jsf-ri/systest/src/com/sun/faces/systest/model/SpecialBean.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/model/SpecialConverter.java b/jsf-ri/systest/src/com/sun/faces/systest/model/SpecialConverter.java
index 6769837..d607065 100644
--- a/jsf-ri/systest/src/com/sun/faces/systest/model/SpecialConverter.java
+++ b/jsf-ri/systest/src/com/sun/faces/systest/model/SpecialConverter.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/model/StringHolder.java b/jsf-ri/systest/src/com/sun/faces/systest/model/StringHolder.java
index 674affd..3e9b210 100644
--- a/jsf-ri/systest/src/com/sun/faces/systest/model/StringHolder.java
+++ b/jsf-ri/systest/src/com/sun/faces/systest/model/StringHolder.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -54,4 +58,4 @@ public class StringHolder implements Serializable {
     public String getString() {
         return s;
     }
-}
\ No newline at end of file
+}
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/model/TestBean.java b/jsf-ri/systest/src/com/sun/faces/systest/model/TestBean.java
index c968a7b..d3ecb27 100644
--- a/jsf-ri/systest/src/com/sun/faces/systest/model/TestBean.java
+++ b/jsf-ri/systest/src/com/sun/faces/systest/model/TestBean.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -36,19 +40,22 @@
 
 package com.sun.faces.systest.model;
 
+import java.beans.FeatureDescriptor;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.HashMap;
+import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.Random;
-import java.util.Set;
+import java.util.ResourceBundle;
 
 import javax.annotation.PostConstruct;
 import javax.annotation.PreDestroy;
+import javax.el.ELContext;
+import javax.el.ELResolver;
 import javax.faces.FactoryFinder;
 import javax.faces.application.Application;
-import javax.faces.component.NamingContainer;
 import javax.faces.component.UIComponent;
 import javax.faces.component.UIInput;
 import javax.faces.component.UINamingContainer;
@@ -86,6 +93,7 @@ public enum Color { Red, Blue, Green, Orange }
     private ArrayList newList1= new ArrayList();
     private ArrayList newList2= new ArrayList();
     private ArrayList oneElementList;
+    private List newList3 = new ArrayList();
 
     ServletContext servletContext = null;
     
@@ -331,6 +339,10 @@ public enum Color { Red, Blue, Green, Orange }
     public void setMultiSelection(String [] newMultiSelection) {
     multiSelection = newMultiSelection;
     }
+    
+    public Object getNullProperty() {
+        return null;
+    }
 
     public ArrayList getOneElementList() {
         return oneElementList;
@@ -885,6 +897,47 @@ public enum Color { Red, Blue, Green, Orange }
         return this.referencedSuit;
     }
 
+    // taken from TCK facesResourceBundleResolverGetTypeTest
+    public String getResourceBundleType() {
+        FacesContext context = FacesContext.getCurrentInstance();
+        ELContext elContext = context.getELContext();
+        ELResolver elResolver = elContext.getELResolver();
+        Class type = elResolver.getType(elContext, null, "resourceBundle03");
+
+        return type.toString();
+    }
+
+    // taken from TCK facesResourceBundleResolverFeatureDescriptorTest
+    public String getFeatureDescriptorCorrectness() {
+        StringBuilder builder = new StringBuilder();
+
+        ELContext elContext = FacesContext.getCurrentInstance().getELContext();
+        ELResolver resolver = elContext.getELResolver();
+        boolean fd_Found = false;
+
+        // Setup golden FeatureDescriptor.
+        FeatureDescriptor controlDesc = new FeatureDescriptor();
+        controlDesc.setValue("resolvable", Boolean.TRUE);
+        controlDesc.setValue("type", ResourceBundle.class);
+        controlDesc.setName("resourceBundle03");
+        controlDesc.setDisplayName("simple");
+        controlDesc.setExpert(false);
+        controlDesc.setHidden(false);
+        controlDesc.setPreferred(true);
+        controlDesc.setShortDescription("");
+
+        builder.append("<h1>getFeatureDescriptors output</h1>\n");
+        for (Iterator i = resolver.getFeatureDescriptors(elContext, null);
+                i.hasNext();) {
+            FeatureDescriptor test = (FeatureDescriptor) i.next();
+            builder.append("<p>Name: ").append(test.getName()).
+                    append(" displayName: ").append(test.getDisplayName()).
+                    append("</p>\n");
+        }
+
+        return builder.toString();
+    }
+
     /**
      * Setter for property referencedSuit.
      * @param referencedSuit New value of property referencedSuit.
@@ -918,4 +971,41 @@ public enum Color { Red, Blue, Green, Orange }
         return null;
     }
 
+    public String getIsCompositeComponentValue() {
+        String result = null;
+
+        UIComponent currentComposite = UIComponent.getCurrentCompositeComponent(FacesContext.getCurrentInstance());
+        result = "" + UIComponent.isCompositeComponent(currentComposite);
+
+        return result;
+    }
+
+    public String getCurrentTimeMillis() {
+        return "" + System.currentTimeMillis();
+    }
+
+    private Integer idcounter = new Integer(0);
+ 
+    public List getNewList3() {
+        return newList3;
+    }
+
+    public void setNewList3(List newList3) {
+        this.newList3 = newList3;
+    }
+
+    public String addNewLineBeginning() {
+        newList3.add(0, "ID" + idcounter.toString());
+        idcounter++;
+        return null;
+    }
+
+    public String addNewLineEnd() {
+        newList3.add("ID" + idcounter.toString());
+        idcounter++;
+        return null;
+    }
+
+
+
 }
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/model/TestBean2.java b/jsf-ri/systest/src/com/sun/faces/systest/model/TestBean2.java
index 033bd37..a4e0fd8 100644
--- a/jsf-ri/systest/src/com/sun/faces/systest/model/TestBean2.java
+++ b/jsf-ri/systest/src/com/sun/faces/systest/model/TestBean2.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/model/TestBeanConverter.java b/jsf-ri/systest/src/com/sun/faces/systest/model/TestBeanConverter.java
index c89f378..5ab3b23 100644
--- a/jsf-ri/systest/src/com/sun/faces/systest/model/TestBeanConverter.java
+++ b/jsf-ri/systest/src/com/sun/faces/systest/model/TestBeanConverter.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/model/TestBeanEventClass.java b/jsf-ri/systest/src/com/sun/faces/systest/model/TestBeanEventClass.java
index 2912e32..8be447e 100644
--- a/jsf-ri/systest/src/com/sun/faces/systest/model/TestBeanEventClass.java
+++ b/jsf-ri/systest/src/com/sun/faces/systest/model/TestBeanEventClass.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/model/TestBeanPostConstructEvent.java b/jsf-ri/systest/src/com/sun/faces/systest/model/TestBeanPostConstructEvent.java
index af86b98..427efe6 100644
--- a/jsf-ri/systest/src/com/sun/faces/systest/model/TestBeanPostConstructEvent.java
+++ b/jsf-ri/systest/src/com/sun/faces/systest/model/TestBeanPostConstructEvent.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/model/TestBeanPreDestroyEvent.java b/jsf-ri/systest/src/com/sun/faces/systest/model/TestBeanPreDestroyEvent.java
index 6fd56f4..989a466 100644
--- a/jsf-ri/systest/src/com/sun/faces/systest/model/TestBeanPreDestroyEvent.java
+++ b/jsf-ri/systest/src/com/sun/faces/systest/model/TestBeanPreDestroyEvent.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/model/TestBeanSubclass.java b/jsf-ri/systest/src/com/sun/faces/systest/model/TestBeanSubclass.java
index 44cc296..a611feb 100644
--- a/jsf-ri/systest/src/com/sun/faces/systest/model/TestBeanSubclass.java
+++ b/jsf-ri/systest/src/com/sun/faces/systest/model/TestBeanSubclass.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/model/TestListBox.java b/jsf-ri/systest/src/com/sun/faces/systest/model/TestListBox.java
index cbc1597..824181c 100644
--- a/jsf-ri/systest/src/com/sun/faces/systest/model/TestListBox.java
+++ b/jsf-ri/systest/src/com/sun/faces/systest/model/TestListBox.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/model/TestValueChangeListener.java b/jsf-ri/systest/src/com/sun/faces/systest/model/TestValueChangeListener.java
index c5f5c47..cff7efa 100644
--- a/jsf-ri/systest/src/com/sun/faces/systest/model/TestValueChangeListener.java
+++ b/jsf-ri/systest/src/com/sun/faces/systest/model/TestValueChangeListener.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -33,6 +37,7 @@
  * only if the new code is made subject to such option by the copyright
  * holder.
  */
+
 package com.sun.faces.systest.model;
 
 import javax.faces.event.ValueChangeListener;
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/model/ThousandsOfPojos.java b/jsf-ri/systest/src/com/sun/faces/systest/model/ThousandsOfPojos.java
new file mode 100644
index 0000000..98851df
--- /dev/null
+++ b/jsf-ri/systest/src/com/sun/faces/systest/model/ThousandsOfPojos.java
@@ -0,0 +1,156 @@
+
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.model;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.SessionScoped;
+
+
+ at ManagedBean
+ at SessionScoped
+public class ThousandsOfPojos {
+
+    private List<Item> items;
+
+    public ThousandsOfPojos() {
+        int size = 2000;
+        items = new ArrayList<Item>(size);
+        Item cur;
+        String curStr;
+        for (int i = 0; i < size; i++) {
+            curStr = Long.toHexString(System.currentTimeMillis());
+            cur = new Item("a" + curStr, "b" + curStr, "c" + curStr);
+            items.add(cur);
+        }
+    }
+
+    public List<Item> getItems() {
+        return items;
+    }
+
+    
+
+    // <editor-fold defaultstate="collapsed" desc="Inner Classes">
+    
+    public class Item {
+        String a, b, c;
+        InnerItem inner;
+
+        public Item(String a, String b, String c) {
+            this.a = a;
+            this.b = b;
+            this.c = c;
+            
+            inner = new InnerItem(a+b, a+c);
+        }
+        
+        
+        
+        public String getA() {
+            return a;
+        }
+
+        public void setA(String a) {
+            this.a = a;
+        }
+
+        public String getB() {
+            return b;
+        }
+
+        public void setB(String b) {
+            this.b = b;
+        }
+
+        public String getC() {
+            return c;
+        }
+
+        public void setC(String c) {
+            this.c = c;
+        }
+
+        public InnerItem getInner() {
+            return inner;
+        }
+
+        public void setInner(InnerItem inner) {
+            this.inner = inner;
+        }
+        
+        
+        
+    }
+    
+    public class InnerItem {
+        String d, e;
+
+        public InnerItem(String d, String e) {
+            this.d = d;
+            this.e = e;
+        }
+        
+        
+
+        public String getD() {
+            return d;
+        }
+
+        public void setD(String d) {
+            this.d = d;
+        }
+
+        public String getE() {
+            return e;
+        }
+
+        public void setE(String e) {
+            this.e = e;
+        }
+        
+    }
+
+    // </editor-fold>
+
+}
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/model/ValidatorBean.java b/jsf-ri/systest/src/com/sun/faces/systest/model/ValidatorBean.java
old mode 100644
new mode 100755
index 9eae63b..5e8285f
--- a/jsf-ri/systest/src/com/sun/faces/systest/model/ValidatorBean.java
+++ b/jsf-ri/systest/src/com/sun/faces/systest/model/ValidatorBean.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/model/ValueChangeListenerBean.java b/jsf-ri/systest/src/com/sun/faces/systest/model/ValueChangeListenerBean.java
index fdc0b44..0f03b29 100644
--- a/jsf-ri/systest/src/com/sun/faces/systest/model/ValueChangeListenerBean.java
+++ b/jsf-ri/systest/src/com/sun/faces/systest/model/ValueChangeListenerBean.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/model/ValueChangeSetPropertyActionListenerBean.java b/jsf-ri/systest/src/com/sun/faces/systest/model/ValueChangeSetPropertyActionListenerBean.java
index 2dead85..ba494cb 100644
--- a/jsf-ri/systest/src/com/sun/faces/systest/model/ValueChangeSetPropertyActionListenerBean.java
+++ b/jsf-ri/systest/src/com/sun/faces/systest/model/ValueChangeSetPropertyActionListenerBean.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/model/ViewRootExtension.java b/jsf-ri/systest/src/com/sun/faces/systest/model/ViewRootExtension.java
index 9ca9751..6aa2614 100644
--- a/jsf-ri/systest/src/com/sun/faces/systest/model/ViewRootExtension.java
+++ b/jsf-ri/systest/src/com/sun/faces/systest/model/ViewRootExtension.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/model/ajax/AjaxRequestBean.java b/jsf-ri/systest/src/com/sun/faces/systest/model/ajax/AjaxRequestBean.java
index 283a640..da8ea5c 100644
--- a/jsf-ri/systest/src/com/sun/faces/systest/model/ajax/AjaxRequestBean.java
+++ b/jsf-ri/systest/src/com/sun/faces/systest/model/ajax/AjaxRequestBean.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -36,9 +40,13 @@
 
 package com.sun.faces.systest.model.ajax;
 
+import javax.faces.FacesException;
 import javax.faces.bean.ManagedBean;
 import javax.faces.bean.SessionScoped;
+import javax.faces.context.ExternalContext;
+import javax.faces.context.FacesContext;
 import javax.faces.event.ActionEvent;
+import javax.faces.event.AjaxBehaviorEvent;
 import javax.faces.event.ValueChangeEvent;
 
 @ManagedBean(name="ajaxrequest")
@@ -113,4 +121,21 @@ public class AjaxRequestBean {
         count = 0;
     }
 
+    public void generateError(AjaxBehaviorEvent event) {
+        throw new FacesException("Ajax request error");
+    }
+
+    public String contentType = null;
+    public String getContentType() {
+        FacesContext context = FacesContext.getCurrentInstance();
+        ExternalContext eContext = context.getExternalContext();
+        contentType = eContext.getRequestContentType();
+        return contentType;
+    }
+
+    public void setcontentType(String contentType) {
+        this.contentType = contentType;
+    }
+        
+
 }
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/model/ajax/AjaxTable.java b/jsf-ri/systest/src/com/sun/faces/systest/model/ajax/AjaxTable.java
index 9becd3f..6f2cf4e 100644
--- a/jsf-ri/systest/src/com/sun/faces/systest/model/ajax/AjaxTable.java
+++ b/jsf-ri/systest/src/com/sun/faces/systest/model/ajax/AjaxTable.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/model/ajax/AjaxTagValuesBean.java b/jsf-ri/systest/src/com/sun/faces/systest/model/ajax/AjaxTagValuesBean.java
index 7cbbc68..a67d006 100644
--- a/jsf-ri/systest/src/com/sun/faces/systest/model/ajax/AjaxTagValuesBean.java
+++ b/jsf-ri/systest/src/com/sun/faces/systest/model/ajax/AjaxTagValuesBean.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -105,4 +109,12 @@ public class AjaxTagValuesBean {
         return render;
     }
 
-}
\ No newline at end of file
+    private String ajaxEvent = "valueChange";
+    public void setAjaxEvent(String ajaxEvent) {
+        this.ajaxEvent = ajaxEvent;
+    }
+    public String getAjaxEvent() {
+        return ajaxEvent;
+    }
+
+}
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/model/ajax/AttrsBean.java b/jsf-ri/systest/src/com/sun/faces/systest/model/ajax/AttrsBean.java
index b052f60..77e6360 100644
--- a/jsf-ri/systest/src/com/sun/faces/systest/model/ajax/AttrsBean.java
+++ b/jsf-ri/systest/src/com/sun/faces/systest/model/ajax/AttrsBean.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -34,7 +38,6 @@
  * holder.
  */
 
-
 package com.sun.faces.systest.model.ajax;
 
 import javax.faces.context.FacesContext;
@@ -75,4 +78,4 @@ public class AttrsBean {
         return null;
 
     }
-}
\ No newline at end of file
+}
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/model/ajax/CountBean.java b/jsf-ri/systest/src/com/sun/faces/systest/model/ajax/CountBean.java
index c8296fd..d1d53f4 100644
--- a/jsf-ri/systest/src/com/sun/faces/systest/model/ajax/CountBean.java
+++ b/jsf-ri/systest/src/com/sun/faces/systest/model/ajax/CountBean.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/model/ajax/Echo.java b/jsf-ri/systest/src/com/sun/faces/systest/model/ajax/Echo.java
index d680c9a..86c20ce 100644
--- a/jsf-ri/systest/src/com/sun/faces/systest/model/ajax/Echo.java
+++ b/jsf-ri/systest/src/com/sun/faces/systest/model/ajax/Echo.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/model/ajax/ErrorBean.java b/jsf-ri/systest/src/com/sun/faces/systest/model/ajax/ErrorBean.java
index cf0f0ad..0c70409 100644
--- a/jsf-ri/systest/src/com/sun/faces/systest/model/ajax/ErrorBean.java
+++ b/jsf-ri/systest/src/com/sun/faces/systest/model/ajax/ErrorBean.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -34,7 +38,6 @@
  * holder.
  */
 
-
 package com.sun.faces.systest.model.ajax;
 
 import javax.faces.context.FacesContext;
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/model/ajax/EvalBean.java b/jsf-ri/systest/src/com/sun/faces/systest/model/ajax/EvalBean.java
index 894117a..75d6276 100644
--- a/jsf-ri/systest/src/com/sun/faces/systest/model/ajax/EvalBean.java
+++ b/jsf-ri/systest/src/com/sun/faces/systest/model/ajax/EvalBean.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -34,7 +38,6 @@
  * holder.
  */
 
-
 package com.sun.faces.systest.model.ajax;
 
 import javax.faces.context.FacesContext;
@@ -72,4 +75,4 @@ public class EvalBean {
         return null;
 
     }
-}
\ No newline at end of file
+}
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/model/ajax/FailBean.java b/jsf-ri/systest/src/com/sun/faces/systest/model/ajax/FailBean.java
index 54c8947..04d0fa9 100644
--- a/jsf-ri/systest/src/com/sun/faces/systest/model/ajax/FailBean.java
+++ b/jsf-ri/systest/src/com/sun/faces/systest/model/ajax/FailBean.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -34,7 +38,6 @@
  * holder.
  */
 
-
 package com.sun.faces.systest.model.ajax;
 
 import javax.faces.context.FacesContext;
@@ -71,4 +74,4 @@ public class FailBean {
         return null;
 
     }
-}
\ No newline at end of file
+}
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/model/ajax/InsertDeleteBean.java b/jsf-ri/systest/src/com/sun/faces/systest/model/ajax/InsertDeleteBean.java
index 6024dd5..59330c2 100644
--- a/jsf-ri/systest/src/com/sun/faces/systest/model/ajax/InsertDeleteBean.java
+++ b/jsf-ri/systest/src/com/sun/faces/systest/model/ajax/InsertDeleteBean.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -58,12 +62,24 @@ public class InsertDeleteBean {
                 PartialResponseWriter writer =
                       ctx.getPartialViewContext().getPartialResponseWriter();
                 writer.startDocument();
+                
                 writer.startInsertBefore("hr");
                 writer.writeAttribute("id", "h2before", "id");
                 writer.startElement("h2", null);
                 writer.writeText("BEFORE", null, null);
                 writer.endElement("h2");
                 writer.endInsert();
+                
+                writer.startInsertBefore("tablecenter");
+                writer.writeAttribute("id", "trbefore", "id");
+                writer.startElement("tr", null);
+                writer.writeAttribute("id", "trbefore", "id");
+                writer.startElement("td", null);
+                writer.writeText("BEFORE", null, null);
+                writer.endElement("td");
+                writer.endElement("tr");
+                writer.endInsert();
+                
                 writer.endDocument();
                 writer.flush();
                 ctx.responseComplete();
@@ -86,12 +102,24 @@ public class InsertDeleteBean {
                 extContext.setResponseContentType("text/xml");
                 extContext.addResponseHeader("Cache-Control", "no-cache");
                 writer.startDocument();
+
                 writer.startInsertAfter("hr");
                 writer.startElement("h2", null);
                 writer.writeAttribute("id", "h2after", "id");
                 writer.writeText("AFTER", null, null);
                 writer.endElement("h2");
                 writer.endInsert();
+
+                writer.startInsertAfter("tablecenter");
+                writer.writeAttribute("id", "trafter", "id");
+                writer.startElement("tr", null);
+                writer.writeAttribute("id", "trafter", "id");
+                writer.startElement("td", null);
+                writer.writeText("AFTER", null, null);
+                writer.endElement("td");
+                writer.endElement("tr");
+                writer.endInsert();
+
                 writer.endDocument();
                 writer.flush();
                 ctx.responseComplete();
@@ -116,6 +144,7 @@ public class InsertDeleteBean {
                 extContext.addResponseHeader("Cache-Control", "no-cache");
                 writer.startDocument();
                 writer.delete("h2before");
+                writer.delete("trbefore");
                 writer.endDocument();
                 writer.flush();
                 ctx.responseComplete();
@@ -138,6 +167,7 @@ public class InsertDeleteBean {
                 extContext.addResponseHeader("Cache-Control", "no-cache");
                 writer.startDocument();
                 writer.delete("h2after");
+                writer.delete("trafter");
                 writer.endDocument();
                 writer.flush();
                 ctx.responseComplete();
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/model/ajax/InvalidXMLBean.java b/jsf-ri/systest/src/com/sun/faces/systest/model/ajax/InvalidXMLBean.java
index 887068d..3766d31 100644
--- a/jsf-ri/systest/src/com/sun/faces/systest/model/ajax/InvalidXMLBean.java
+++ b/jsf-ri/systest/src/com/sun/faces/systest/model/ajax/InvalidXMLBean.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -76,4 +80,4 @@ public class InvalidXMLBean {
         return null;
 
     }
-}
\ No newline at end of file
+}
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/model/ajax/RedirectBean.java b/jsf-ri/systest/src/com/sun/faces/systest/model/ajax/RedirectBean.java
index 9d2b2a0..796d021 100644
--- a/jsf-ri/systest/src/com/sun/faces/systest/model/ajax/RedirectBean.java
+++ b/jsf-ri/systest/src/com/sun/faces/systest/model/ajax/RedirectBean.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/model/ajax/browser/BrowserAttributesBean.java b/jsf-ri/systest/src/com/sun/faces/systest/model/ajax/browser/BrowserAttributesBean.java
index d65ea7d..8715b8f 100644
--- a/jsf-ri/systest/src/com/sun/faces/systest/model/ajax/browser/BrowserAttributesBean.java
+++ b/jsf-ri/systest/src/com/sun/faces/systest/model/ajax/browser/BrowserAttributesBean.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/model/ajax/browser/EvalScriptBean.java b/jsf-ri/systest/src/com/sun/faces/systest/model/ajax/browser/EvalScriptBean.java
index 62ce267..c3cdbd3 100644
--- a/jsf-ri/systest/src/com/sun/faces/systest/model/ajax/browser/EvalScriptBean.java
+++ b/jsf-ri/systest/src/com/sun/faces/systest/model/ajax/browser/EvalScriptBean.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/model/ajax/browser/SelectChangeBean.java b/jsf-ri/systest/src/com/sun/faces/systest/model/ajax/browser/SelectChangeBean.java
index 662cfdf..ba03513 100644
--- a/jsf-ri/systest/src/com/sun/faces/systest/model/ajax/browser/SelectChangeBean.java
+++ b/jsf-ri/systest/src/com/sun/faces/systest/model/ajax/browser/SelectChangeBean.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -33,6 +37,7 @@
  * only if the new code is made subject to such option by the copyright
  * holder.
  */
+
 package com.sun.faces.systest.model.ajax.browser;
 
 import javax.faces.bean.RequestScoped;
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/model/ajax/browser/UpdateRootBean.java b/jsf-ri/systest/src/com/sun/faces/systest/model/ajax/browser/UpdateRootBean.java
index d2db48e..3c385ff 100644
--- a/jsf-ri/systest/src/com/sun/faces/systest/model/ajax/browser/UpdateRootBean.java
+++ b/jsf-ri/systest/src/com/sun/faces/systest/model/ajax/browser/UpdateRootBean.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/pre31injection/ComponentWithResourceInjection.java b/jsf-ri/systest/src/com/sun/faces/systest/pre31injection/ComponentWithResourceInjection.java
new file mode 100644
index 0000000..c862941
--- /dev/null
+++ b/jsf-ri/systest/src/com/sun/faces/systest/pre31injection/ComponentWithResourceInjection.java
@@ -0,0 +1,68 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright 1997-2011 Sun Microsystems, Inc. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License. You can obtain
+ * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
+ * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
+ * Sun designates this particular file as subject to the "Classpath" exception
+ * as provided by Sun in the GPL Version 2 section of the License file that
+ * accompanied this code.  If applicable, add the following below the License
+ * Header, with the fields enclosed by brackets [] replaced by your own
+ * identifying information: "Portions Copyrighted [year]
+ * [name of copyright owner]"
+ *
+ * Contributor(s):
+ *
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.pre31injection;
+
+import java.io.IOException;
+import javax.annotation.Resource;
+import javax.faces.component.FacesComponent;
+import javax.faces.component.UIOutput;
+import javax.faces.context.FacesContext;
+
+ at FacesComponent(value="ComponentWithResourceInjection")
+public class ComponentWithResourceInjection extends UIOutput {
+
+    @Resource(name="welcomeMessage")
+    private String welcomeMessage;
+
+    public String getWelcomeMessage() {
+        return welcomeMessage;
+    }
+
+    @Override
+    public void encodeBegin(FacesContext context)
+            throws IOException {
+        context.getResponseWriter().write("<div style=\"border: 1px solid red\">ComponentWithResourceInjection::encodeBegin<br/>");
+    }
+
+    @Override
+    public void encodeEnd(FacesContext context)
+            throws IOException {
+        context.getResponseWriter().append(getWelcomeMessage());
+        context.getResponseWriter().write("ComponentWithResourceInjection::encodeEnd</div>");
+    }
+
+}
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/render/Base64.java b/jsf-ri/systest/src/com/sun/faces/systest/render/Base64.java
index a607166..3a14ea4 100644
--- a/jsf-ri/systest/src/com/sun/faces/systest/render/Base64.java
+++ b/jsf-ri/systest/src/com/sun/faces/systest/render/Base64.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/render/ButtonRenderer.java b/jsf-ri/systest/src/com/sun/faces/systest/render/ButtonRenderer.java
index a9befb4..3579e01 100644
--- a/jsf-ri/systest/src/com/sun/faces/systest/render/ButtonRenderer.java
+++ b/jsf-ri/systest/src/com/sun/faces/systest/render/ButtonRenderer.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/render/CustomRenderKitImpl.java b/jsf-ri/systest/src/com/sun/faces/systest/render/CustomRenderKitImpl.java
index 2cfa77b..8bee198 100644
--- a/jsf-ri/systest/src/com/sun/faces/systest/render/CustomRenderKitImpl.java
+++ b/jsf-ri/systest/src/com/sun/faces/systest/render/CustomRenderKitImpl.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/render/CustomResponseStateManagerImpl.java b/jsf-ri/systest/src/com/sun/faces/systest/render/CustomResponseStateManagerImpl.java
index 6db0f00..4c019a6 100644
--- a/jsf-ri/systest/src/com/sun/faces/systest/render/CustomResponseStateManagerImpl.java
+++ b/jsf-ri/systest/src/com/sun/faces/systest/render/CustomResponseStateManagerImpl.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -34,7 +38,6 @@
  * holder.
  */
 
-
 package com.sun.faces.systest.render;
 
 import javax.faces.application.StateManager;
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/render/CustomResponseWriter.java b/jsf-ri/systest/src/com/sun/faces/systest/render/CustomResponseWriter.java
index 57efb23..a50c2f4 100644
--- a/jsf-ri/systest/src/com/sun/faces/systest/render/CustomResponseWriter.java
+++ b/jsf-ri/systest/src/com/sun/faces/systest/render/CustomResponseWriter.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/render/FormRenderer.java b/jsf-ri/systest/src/com/sun/faces/systest/render/FormRenderer.java
index d1de614..9b7f979 100644
--- a/jsf-ri/systest/src/com/sun/faces/systest/render/FormRenderer.java
+++ b/jsf-ri/systest/src/com/sun/faces/systest/render/FormRenderer.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/render/TextRenderer.java b/jsf-ri/systest/src/com/sun/faces/systest/render/TextRenderer.java
index 91db19a..69c9b31 100644
--- a/jsf-ri/systest/src/com/sun/faces/systest/render/TextRenderer.java
+++ b/jsf-ri/systest/src/com/sun/faces/systest/render/TextRenderer.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/resources/ResourceBundle01_en.properties b/jsf-ri/systest/src/com/sun/faces/systest/resources/ResourceBundle01_en.properties
index 1a15bcf..88c1988 100644
--- a/jsf-ri/systest/src/com/sun/faces/systest/resources/ResourceBundle01_en.properties
+++ b/jsf-ri/systest/src/com/sun/faces/systest/resources/ResourceBundle01_en.properties
@@ -1,2 +1,42 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
 # Sample ResourceBundle properties file
-value1=Value From ResourceBundle
\ No newline at end of file
+value1=Value From ResourceBundle
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/resources/ResourceBundle03_en.properties b/jsf-ri/systest/src/com/sun/faces/systest/resources/ResourceBundle03_en.properties
index 4bead02..16750a3 100644
--- a/jsf-ri/systest/src/com/sun/faces/systest/resources/ResourceBundle03_en.properties
+++ b/jsf-ri/systest/src/com/sun/faces/systest/resources/ResourceBundle03_en.properties
@@ -1,2 +1,42 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
 # Sample ResourceBundle properties file
-value3=Value from ResourceBundle03
\ No newline at end of file
+value3=Value from ResourceBundle03
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/resources/Resources_en.java b/jsf-ri/systest/src/com/sun/faces/systest/resources/Resources_en.java
index fbcc8ec..b51fbba 100644
--- a/jsf-ri/systest/src/com/sun/faces/systest/resources/Resources_en.java
+++ b/jsf-ri/systest/src/com/sun/faces/systest/resources/Resources_en.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -58,4 +62,4 @@ public class Resources_en extends ListResourceBundle {
             {"hyperlink_key", "RES-BUNDLE LINK"}
         };
     }
-}
\ No newline at end of file
+}
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/state/CaptureIsSavingStateValueBean.java b/jsf-ri/systest/src/com/sun/faces/systest/state/CaptureIsSavingStateValueBean.java
new file mode 100644
index 0000000..f4f4a92
--- /dev/null
+++ b/jsf-ri/systest/src/com/sun/faces/systest/state/CaptureIsSavingStateValueBean.java
@@ -0,0 +1,88 @@
+
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.state;
+
+import java.util.Map;
+import javax.faces.application.StateManager;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.RequestScoped;
+import javax.faces.context.FacesContext;
+import javax.faces.event.PhaseEvent;
+import javax.faces.event.PhaseId;
+import static javax.faces.application.StateManager.IS_SAVING_STATE;
+
+ at ManagedBean
+ at RequestScoped
+public class CaptureIsSavingStateValueBean {
+
+    public String getRemoveMessagesFromSession() {
+        FacesContext context = FacesContext.getCurrentInstance();
+        Map<String, Object> sessionMap = context.getExternalContext().getSessionMap();
+        sessionMap.remove(StateManager.IS_SAVING_STATE);
+        sessionMap.remove("beforeMessage");
+        sessionMap.remove("afterMessage");
+        return "";
+    }
+
+    public void afterPhase(PhaseEvent pe) {
+        if (pe.getPhaseId() == PhaseId.RENDER_RESPONSE) {
+            FacesContext context = FacesContext.getCurrentInstance();
+            Map<Object, Object> contextAttrs = context.getAttributes();
+            Map<String, Object> sessionMap = context.getExternalContext().getSessionMap();
+            sessionMap.put("afterMessage",
+                    null == contextAttrs.get(IS_SAVING_STATE) ? "no value" :
+                        contextAttrs.get(IS_SAVING_STATE));
+        }
+    }
+
+    public void beforePhase(PhaseEvent pe) {
+        if (pe.getPhaseId() == PhaseId.RENDER_RESPONSE) {
+            FacesContext context = FacesContext.getCurrentInstance();
+            Map<Object, Object> contextAttrs = context.getAttributes();
+            Map<String, Object> sessionMap = context.getExternalContext().getSessionMap();
+            sessionMap.put("beforeMessage",
+                    null == contextAttrs.get(IS_SAVING_STATE) ? "no value" :
+                        contextAttrs.get(IS_SAVING_STATE));
+        }
+    }
+
+}
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/state/CaptureIsSavingStateValueComponent.java b/jsf-ri/systest/src/com/sun/faces/systest/state/CaptureIsSavingStateValueComponent.java
new file mode 100644
index 0000000..f2f54ed
--- /dev/null
+++ b/jsf-ri/systest/src/com/sun/faces/systest/state/CaptureIsSavingStateValueComponent.java
@@ -0,0 +1,67 @@
+
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.state;
+
+import java.util.Map;
+import javax.faces.component.FacesComponent;
+import javax.faces.component.UINamingContainer;
+import javax.faces.context.FacesContext;
+import static javax.faces.application.StateManager.IS_SAVING_STATE;
+
+
+ at FacesComponent("captureIsSavingStateValueComponent")
+public class CaptureIsSavingStateValueComponent extends UINamingContainer {
+
+    @Override
+    public Object saveState(FacesContext context) {
+        Object result = super.saveState(context);
+
+        Map<Object, Object> contextAttrs = context.getAttributes();
+        Map<String, Object> sessionMap = context.getExternalContext().getSessionMap();
+        sessionMap.put(IS_SAVING_STATE, contextAttrs.get(IS_SAVING_STATE));
+        
+        return result;
+    }
+
+    
+
+}
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/state/DynamicStateBean.java b/jsf-ri/systest/src/com/sun/faces/systest/state/DynamicStateBean.java
index 23d1099..320fe02 100644
--- a/jsf-ri/systest/src/com/sun/faces/systest/state/DynamicStateBean.java
+++ b/jsf-ri/systest/src/com/sun/faces/systest/state/DynamicStateBean.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/state/DynamicStateBean2.java b/jsf-ri/systest/src/com/sun/faces/systest/state/DynamicStateBean2.java
index acc4fad..7dd9984 100644
--- a/jsf-ri/systest/src/com/sun/faces/systest/state/DynamicStateBean2.java
+++ b/jsf-ri/systest/src/com/sun/faces/systest/state/DynamicStateBean2.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -34,7 +38,6 @@
  * holder.
  */
 
-
 package com.sun.faces.systest.state;
 
 import javax.faces.bean.ManagedBean;
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/state/DynamicStateTestCase.java b/jsf-ri/systest/src/com/sun/faces/systest/state/DynamicStateTestCase.java
deleted file mode 100644
index 4ac693f..0000000
--- a/jsf-ri/systest/src/com/sun/faces/systest/state/DynamicStateTestCase.java
+++ /dev/null
@@ -1,208 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package com.sun.faces.systest.state;
-
-import com.sun.faces.htmlunit.AbstractTestCase;
-import com.gargoylesoftware.htmlunit.html.HtmlPage;
-import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
-import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-public class DynamicStateTestCase extends AbstractTestCase {
-
-    public DynamicStateTestCase(String name) {
-        super(name);
-    }
-
-
-    /**
-     * Set up instance variables required by this test case.
-     */
-    public void setUp() throws Exception {
-        super.setUp();
-    }
-
-
-    /**
-     * Return the tests included in this test suite.
-     */
-    public static Test suite() {
-        return (new TestSuite(DynamicStateTestCase.class));
-    }
-
-
-    /**
-     * Tear down instance variables required by this test case.
-     */
-    public void tearDown() {
-        super.tearDown();
-    }
-
-
-    public void testDynamicDeletionPrefix() throws Exception {
-        doTestDynamicDeletion("/faces/state/dynamicDeletion.xhtml");
-    }
-    
-    public void testDynamicDeletionExtension() throws Exception {
-        doTestDynamicDeletion("/state/dynamicDeletion.faces");
-    }
-    
-    public void testDynamicAdditionPrefix() throws Exception {
-        doTestDynamicAddition("/faces/state/dynamicAddition.xhtml");
-    }
-    
-    public void testDynamicAdditionExtension() throws Exception {
-        doTestDynamicAddition("/state/dynamicAddition.faces");
-    }
-
-    /*
-     * Added for issue 1183.
-     */
-    public void testNestedComponentAddition() throws Exception {
-
-        HtmlPage page = getPage("/faces/state/dynamicAddition2.xhtml");
-        HtmlSubmitInput submit = (HtmlSubmitInput)
-              getInputContainingGivenId(page, "form:render");
-        page = submit.click();
-        HtmlTextInput input = (HtmlTextInput)
-              getInputContainingGivenId(page, "form:textInput");
-        assertNotNull(input);
-        assertEquals("default value", input.getValueAttribute());
-        input.setValueAttribute("new value");
-        submit = (HtmlSubmitInput)
-              getInputContainingGivenId(page, "form:render");
-        page = submit.click();
-        input = (HtmlTextInput)
-              getInputContainingGivenId(page, "form:textInput");
-        assertNotNull(input);
-        assertEquals("new value", input.getValueAttribute());
-
-        // ensure events are fired properly when adding tree deltas
-        // to the view
-        submit = (HtmlSubmitInput)
-              getInputContainingGivenId(page, "form:submit");
-        page = submit.click();
-        input = (HtmlTextInput)
-              getInputContainingGivenId(page, "form:textInput");
-        assertNotNull(input);
-
-        // once more for good measure
-        submit = (HtmlSubmitInput)
-              getInputContainingGivenId(page, "form:submit");
-        page = submit.click();
-        input = (HtmlTextInput)
-              getInputContainingGivenId(page, "form:textInput");
-        assertNotNull(input);
-
-    }
-
-
-    /**
-     * Added for issue 1185.
-     */
-    public void testDeleteAddSameAction() throws Exception {
-
-        HtmlPage page = getPage("/faces/state/dynamicAdditionDeletion.xhtml");
-        HtmlSubmitInput submit = (HtmlSubmitInput)
-              getInputContainingGivenId(page, "form:render");
-        page = submit.click();
-
-        // first click removes children from the panel (should be empty)
-        // and adds a new button
-        assertTrue(page.asText().contains("dynamically added button"));
-
-        for (int i = 0; i < 5; i++) {
-            // repeated clicks will remove the single child and add a new button
-            // back.
-            submit = (HtmlSubmitInput)
-              getInputContainingGivenId(page, "form:render");
-            page = submit.click();
-
-            assertTrue(page.asText().contains("dynamically added button"));
-        }
-
-    }
-
-
-    /**
-     * Added for issue 1553.
-     */
-    public void testDynamicAdditionTransietSubTree() throws Exception {
-
-        // any exception thrown here will fail the test
-        client.setThrowExceptionOnFailingStatusCode(true);
-        getPage("/faces/state/dynamicAdditionTransientSubTree.xhtml");
-
-    }
-
-
-    // --------------------------------------------------------- Private Methods
-
-
-    private void doTestDynamicDeletion(String viewId) throws Exception {
-        HtmlPage page = getPage(viewId);
-        HtmlTextInput textField = (HtmlTextInput)
-                getInputContainingGivenId(page, "textField");
-        textField.setValueAttribute("some text");
-        HtmlSubmitInput button = (HtmlSubmitInput)
-                getInputContainingGivenId(page, "reload");
-        try {
-            page = (HtmlPage) button.click();
-        } catch (Exception e) {
-            fail(e.getMessage());
-        }
-        assertTrue(-1 == page.asText().indexOf("cbutton should not be found"));
-    }
-
-
-    private void doTestDynamicAddition(String viewId) throws Exception {
-        HtmlPage page = getPage(viewId);
-        HtmlTextInput textField = (HtmlTextInput)
-                getInputContainingGivenId(page, "textField");
-        textField.setValueAttribute("some text");
-        HtmlSubmitInput button = (HtmlSubmitInput)
-                getInputContainingGivenId(page, "reload");
-        try {
-            page = (HtmlPage) button.click();
-        } catch (Exception e) {
-            fail(e.getMessage());
-        }
-        assertTrue(-1 == page.asText().indexOf("cbutton should be found"));
-    }
-
-} // end of class PathTestCase
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/tags/EventTestCase.java b/jsf-ri/systest/src/com/sun/faces/systest/tags/EventTestCase.java
deleted file mode 100644
index fff3296..0000000
--- a/jsf-ri/systest/src/com/sun/faces/systest/tags/EventTestCase.java
+++ /dev/null
@@ -1,168 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- *
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- *
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- *
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- *
- * Contributor(s):
- *
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package com.sun.faces.systest.tags;
-
-import com.gargoylesoftware.htmlunit.FailingHttpStatusCodeException;
-import java.util.List;
-import java.util.ArrayList;
-
-import java.util.logging.Level;
-import java.util.logging.Logger;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-import com.sun.faces.htmlunit.AbstractTestCase;
-import com.gargoylesoftware.htmlunit.html.HtmlPage;
-import com.gargoylesoftware.htmlunit.html.HtmlSpan;
-import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
-
-
-/**
- * Validate new EL features such as the component implicit object
- */
-public class EventTestCase extends AbstractTestCase {
-
-    public EventTestCase(String name) {
-        super(name);
-    }
-
-
-    /**
-     * Set up instance variables required by this test case.
-     */
-    public void setUp() throws Exception {
-        super.setUp();
-    }
-
-
-    /**
-     * Return the tests included in this test suite.
-     */
-    public static Test suite() {
-        return (new TestSuite(EventTestCase.class));
-    }
-
-
-    /**
-     * Tear down instance variables required by this test case.
-     */
-    public void tearDown() {
-        super.tearDown();
-    }
-
-    // ------------------------------------------------------------ Test Methods
-
-
-    public void testValidEvents() throws Exception {
-        HtmlPage page = getPage("/faces/eventTag.xhtml");
-        List<HtmlSpan> outputs = new ArrayList<HtmlSpan>(4);
-        getAllElementsOfGivenClass(page, outputs, HtmlSpan.class);
-        assertTrue(outputs.size() == 6);
-        validateOutput(outputs);
-
-        HtmlSubmitInput submit = (HtmlSubmitInput) getInputContainingGivenId(page, "click");
-        assertNotNull(submit);
-        page = (HtmlPage) submit.click();
-        outputs.clear();
-        getAllElementsOfGivenClass(page, outputs, HtmlSpan.class);
-        assertTrue(outputs.size() == 6);
-        validateOutput(outputs);
-    }
-
-    public void testBeforeViewRender() throws Exception {
-        HtmlPage page = getPage("/faces/eventTag01.xhtml");
-        assertTrue(-1 != page.asText().indexOf("class javax.faces.component.UIViewRoot pre-render"));
-
-        page = getPage("/faces/eventTag02.xhtml");
-        assertTrue(-1 != page.asText().indexOf("class javax.faces.component.UIViewRoot pre-render"));
-
-    }
-
-
-    public void testInvalidEvent() throws Exception {
-        try {
-            getPage("/faces/eventTagInvalid.xhtml");
-            fail ("An exception should be thrown for an invalid event name in Development mode");
-        } catch (FailingHttpStatusCodeException fail) {
-            //
-        }
-    }
-
-    public static void main (String... args) {
-        try {
-            EventTestCase etc = new EventTestCase("foo");
-            etc.setUp();
-            etc.testValidEvents();
-            etc.testInvalidEvent();
-            etc.tearDown();
-        } catch (Exception ex) {
-            Logger.getLogger(EventTestCase.class.getName()).log(Level.SEVERE, null, ex);
-        }
-    }
-
-    // --------------------------------------------------------- Private Methods
-
-
-    private void validateOutput(List<HtmlSpan> outputs) {
-
-        HtmlSpan s;
-
-        // Short name
-        s = outputs.get(0);
-        assertTrue(("The 'javax.faces.event.PreRenderComponentEvent' event fired!").equals(s.asText()));
-
-        // Long name
-        s = outputs.get(1);
-        assertTrue(("The 'javax.faces.event.PreRenderComponentEvent' event fired!").equals(s.asText()));
-
-        // Short Name
-        s = outputs.get(2);
-        assertTrue(("The 'javax.faces.event.PostAddToViewEvent' event fired!").equals(s.asText()));
-
-        // Long name
-        s = outputs.get(3);
-        assertTrue(("The 'javax.faces.event.PostAddToViewEvent' event fired!").equals(s.asText()));
-
-        // Fully-qualified class name
-        s = outputs.get(4);
-        assertTrue(("The 'javax.faces.event.PreRenderComponentEvent' event fired!").equals(s.asText()));
-
-        // No-arg
-        s = outputs.get(5);
-        assertTrue(("The no-arg event fired!").equals(s.asText()));
-
-    }
-}
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/viewparameters/NewsIndex.java b/jsf-ri/systest/src/com/sun/faces/systest/viewparameters/NewsIndex.java
index 75724d0..04b6a69 100644
--- a/jsf-ri/systest/src/com/sun/faces/systest/viewparameters/NewsIndex.java
+++ b/jsf-ri/systest/src/com/sun/faces/systest/viewparameters/NewsIndex.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/viewparameters/NewsReader.java b/jsf-ri/systest/src/com/sun/faces/systest/viewparameters/NewsReader.java
index 4a0a1ac..0fa0b3d 100644
--- a/jsf-ri/systest/src/com/sun/faces/systest/viewparameters/NewsReader.java
+++ b/jsf-ri/systest/src/com/sun/faces/systest/viewparameters/NewsReader.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/viewparameters/NewsStory.java b/jsf-ri/systest/src/com/sun/faces/systest/viewparameters/NewsStory.java
index 2aa7ddf..f511f4e 100644
--- a/jsf-ri/systest/src/com/sun/faces/systest/viewparameters/NewsStory.java
+++ b/jsf-ri/systest/src/com/sun/faces/systest/viewparameters/NewsStory.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/systest/src/com/sun/faces/systest/viewparameters/ViewParametersTestCase.java b/jsf-ri/systest/src/com/sun/faces/systest/viewparameters/ViewParametersTestCase.java
deleted file mode 100644
index 400127b..0000000
--- a/jsf-ri/systest/src/com/sun/faces/systest/viewparameters/ViewParametersTestCase.java
+++ /dev/null
@@ -1,307 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package com.sun.faces.systest.viewparameters;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import com.gargoylesoftware.htmlunit.html.HtmlPage;
-import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
-import com.gargoylesoftware.htmlunit.html.HtmlAnchor;
-import com.sun.faces.htmlunit.AbstractTestCase;
-import java.net.URL;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-/**
- * Test cases for Facelets functionality
- */
-public class ViewParametersTestCase extends AbstractTestCase {
-
-
-    // --------------------------------------------------------------- Test Init
-
-
-    public ViewParametersTestCase() {
-        this("FaceletsTestCase");
-    }
-
-
-    public ViewParametersTestCase(String name) {
-        super(name);
-    }
-
-
-    /**
-     * Set up instance variables required by this test case.
-     */
-    public void setUp() throws Exception {
-        super.setUp();
-    }
-
-
-    /**
-     * Return the tests included in this test suite.
-     */
-    public static Test suite() {
-        return (new TestSuite(ViewParametersTestCase.class));
-    }
-
-
-    /**
-     * Tear down instance variables required by this test case.
-     */
-    public void tearDown() {
-        super.tearDown();
-    }
-
-
-    // ------------------------------------------------------------ Test Methods
-
-
-    /*
-     * Added for issue 917.
-     */
-    public void testViewParameters() throws Exception {
-
-        doTestExtensionMapped(0);
-        doTestExtensionMapped(1);
-        
-    }
-
-    public void testViewParametersValidation() throws Exception {
-
-        HtmlPage page = getPage("/viewParameters/page02.faces?id=0");
-        assertTrue(page.asText().contains("Invalid headline. (The id parameter is not a positive number)"));
-
-    }
-    
-    
-    private void doTestExtensionMapped(int i) throws Exception {
-
-        int storyNum = i + 1;
-        HtmlPage page = null;
-        
-        page = fetchHomePageAndClickStoryLink(i);
-
-        page = fetchHomePageAndClickStoryLink(i);
-        
-        page = doRefreshButton(page, storyNum);
-        
-        page = doRefreshClearParamButton(page, storyNum);
-
-        page = fetchHomePageAndClickStoryLink(i);
-        
-        page = doRefreshWithRedirectParamsButton(page, storyNum);
-        
-        page = fetchHomePageAndClickStoryLink(i);
-        
-        page = doRefreshWithoutRedirectParamsButton(page, storyNum);
-        
-        page = fetchHomePageAndClickStoryLink(i);
-
-        page = doHomeButton(page, storyNum);
-        
-        page = fetchHomePageAndClickStoryLink(i);
-
-        page = doHomeKeepSelectionButton(page, i);
-        
-        page = fetchHomePageAndClickStoryLink(i);
-
-        page = doHomeKeepSelectionNavCaseButton(page, i);
-        
-        page = fetchHomePageAndClickStoryLink(i);
-
-        page = doStory2Button(page, i);
-        
-        
-    }
-    
-    private HtmlPage fetchHomePageAndClickStoryLink(int i) throws Exception {
-        HtmlPage page = getPage("/viewParameters/page01.faces") ;
-        String pageText = page.asText();
-
-        assertOnHomePage(pageText);
-        
-        List<HtmlAnchor> anchors = new ArrayList<HtmlAnchor>();
-        this.getAllElementsOfGivenClass(page, anchors, HtmlAnchor.class);
-        HtmlAnchor toClick = anchors.get(i);
-        page = (HtmlPage) toClick.click();
-        
-        int storyNum = i+1;
-        
-        // Assert some things about the content of the page
-        pageText = page.asText();
-        assertTrue(-1 != pageText.indexOf(getTitleContains(storyNum)));
-        assertTrue(-1 != pageText.indexOf(getContentContains(storyNum)));
-        
-        return page;
-    }
-    
-    private String getTitleContains(int storyNum) {
-        String titleContains = "Story " + storyNum + " Headline:";
-        return titleContains;
-    }
-    
-    private String getContentContains(int storyNum) {
-        String contentContains = "Story " + storyNum + " Content:";
-        return contentContains;
-    }
-    
-    private HtmlPage doRefreshButton(HtmlPage page, int storyNum) throws Exception {
-        String pageText = null;
-        
-        // Click the "refresh" button, ensure the page refreshes properly
-        HtmlSubmitInput button = (HtmlSubmitInput) page.getHtmlElementById("refresh");
-        page = (HtmlPage) button.click();
-        pageText = page.asText();
-        assertTrue(-1 != pageText.indexOf(getTitleContains(storyNum)));
-        assertTrue(-1 != pageText.indexOf(getContentContains(storyNum)));
-
-        return page;
-    }
-    
-    private HtmlPage doRefreshClearParamButton(HtmlPage page, int storyNum) throws Exception {
-        String pageText = null;
-        // Click the "refreshClearParam" button, ensure you get back
-        // to the home page
-        HtmlSubmitInput button = (HtmlSubmitInput) page.getHtmlElementById("refreshClearParam");
-        page = (HtmlPage) button.click();
-        pageText = page.asText();
-        
-        // no story content on home page
-        assertTrue(-1 == pageText.indexOf(getContentContains(storyNum)));
-        assertTrue(-1 != pageText.indexOf("You did not specify a headline. (The id parameter is missing)"));
-        assertOnHomePage(pageText);
-        return page;
-    }
-    
-    private HtmlPage doRefreshWithRedirectParamsButton(HtmlPage page, int storyNum) throws Exception {
-        // click the "refreshWithRedirectParams" button and make sure we're still
-        // on the same page.
-        HtmlSubmitInput button = (HtmlSubmitInput) page.getHtmlElementById("refreshWithRedirectParams");
-        page = (HtmlPage) button.click();
-        String pageText = page.asText();
-        assertTrue(-1 != pageText.indexOf(getTitleContains(storyNum)));
-        assertTrue(-1 != pageText.indexOf(getContentContains(storyNum)));
-        
-        return page;
-    }
-    
-    private HtmlPage doRefreshWithoutRedirectParamsButton(HtmlPage page, int storyNum) throws Exception {
-        String pageText = null;
-        // Click the "refreshWithRedirect" button, ensure you get back
-        // to the home page
-        HtmlSubmitInput button = (HtmlSubmitInput) page.getHtmlElementById("refreshWithRedirect");
-        page = (HtmlPage) button.click();
-        pageText = page.asText();
-        
-        // no story content on home page
-        assertTrue(-1 == pageText.indexOf(getContentContains(storyNum)));
-        assertTrue(-1 != pageText.indexOf("You did not specify a headline. (The id parameter is missing)"));
-        assertOnHomePage(pageText);
-        return page;
-    }
-
-    private HtmlPage doHomeButton(HtmlPage page, int storyNum) throws Exception {
-        String pageText = null;
-        // Click the "home" button, ensure you get back
-        // to the home page
-        HtmlSubmitInput button = (HtmlSubmitInput) page.getHtmlElementById("home");
-        page = (HtmlPage) button.click();
-        pageText = page.asText();
-        
-        // no story content on the page, and no messages either
-        assertTrue(-1 == pageText.indexOf(getContentContains(storyNum)));
-        assertTrue(-1 == pageText.indexOf("The headline you requested does not exist."));
-        assertTrue(-1 == pageText.indexOf("You did not specify a headline. (The id parameter is missing)"));
-        assertOnHomePage(pageText);
-
-        return page;
-    }
-    
-    private HtmlPage doHomeKeepSelectionButton(HtmlPage page, int storyNum) throws Exception {
-        String pageText = null;
-        // Click the "homeKeepSelection" button, ensure you get back
-        // to the home page with the proper story number
-        HtmlSubmitInput button = (HtmlSubmitInput) page.getHtmlElementById("homeRememberSelection");
-        page = (HtmlPage) button.click();
-        pageText = page.asText();
-        
-        assertOnHomePage(pageText);
-        assertTrue(-1 == pageText.indexOf("You just looked at story #" + storyNum + "."));
-        
-        
-        return page;
-    }
-    
-    private HtmlPage doHomeKeepSelectionNavCaseButton(HtmlPage page, int storyNum) throws Exception {
-        String pageText = null;
-        // Click the "homeKeepSelectionNavCase" button, ensure you get back
-        // to the home page with the proper story number
-        HtmlSubmitInput button = (HtmlSubmitInput) page.getHtmlElementById("homeRememberSelectionNavCase");
-        page = (HtmlPage) button.click();
-        pageText = page.asText();
-        
-        assertOnHomePage(pageText);
-        assertTrue(-1 == pageText.indexOf("You just looked at story #" + storyNum + "."));
-        
-        
-        return page;
-    }
-    
-    private HtmlPage doStory2Button(HtmlPage page, int storyNum) throws Exception {
-        String pageText = null;
-        // Click the "story2" button, ensure you get
-        // to the story 2 page
-        HtmlSubmitInput button = (HtmlSubmitInput) page.getHtmlElementById("story2RememberSelectionNavCase");
-        page = (HtmlPage) button.click();
-        pageText = page.asText();
-        
-        URL requestUrl = page.getWebResponse().getRequestUrl();
-        
-        assertTrue(-1 != pageText.indexOf("Story 2"));
-        assertTrue(-1 != pageText.indexOf("bar is: foo"));
-        
-        return page;
-    }
-    
-    private void assertOnHomePage(String pageText) throws Exception {
-        assertTrue(-1 != pageText.indexOf("The big news stories of the day"));
-    }
-
-}
diff --git a/jsf-ri/systest/web/Iterator02.jsp b/jsf-ri/systest/web/Iterator02.jsp
index 61351bb..422d96d 100644
--- a/jsf-ri/systest/web/Iterator02.jsp
+++ b/jsf-ri/systest/web/Iterator02.jsp
@@ -1,43 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
+
 
 <%@ page contentType="text/html" language="java" %>
 <%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
diff --git a/jsf-ri/systest/web/ModelSelectItemConversion.jsp b/jsf-ri/systest/web/ModelSelectItemConversion.jsp
index 1e68c78..269781f 100644
--- a/jsf-ri/systest/web/ModelSelectItemConversion.jsp
+++ b/jsf-ri/systest/web/ModelSelectItemConversion.jsp
@@ -1,63 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- The contents of this file are subject to the terms
- of the Common Development and Distribution License
- (the License). You may not use this file except in
- compliance with the License.
- 
- You can obtain a copy of the License at
- https://javaserverfaces.dev.java.net/CDDL.html or
- legal/CDDLv1.0.txt. 
- See the License for the specific language governing
- permission and limitations under the License.
- 
- When distributing Covered Code, include this CDDL
- Header Notice in each file and include the License file
- at legal/CDDLv1.0.txt.    
- If applicable, add the following below the CDDL Header,
- with the fields enclosed by brackets [] replaced by
- your own identifying information:
- "Portions Copyrighted [year] [name of copyright owner]"
- 
- [Name of File] [ver.__] [Date]
- 
- Copyright 2006 Sun Microsystems Inc. All Rights Reserved
--->
+
 
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
diff --git a/jsf-ri/systest/web/ProcessSaveRestoreStateTest.jsp b/jsf-ri/systest/web/ProcessSaveRestoreStateTest.jsp
index 8dc3472..99acb23 100644
--- a/jsf-ri/systest/web/ProcessSaveRestoreStateTest.jsp
+++ b/jsf-ri/systest/web/ProcessSaveRestoreStateTest.jsp
@@ -1,66 +1,72 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<%@page contentType="text/html"%>
-<%@page pageEncoding="UTF-8"%>
-
-<%@taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
-<%@taglib prefix="h" uri="http://java.sun.com/jsf/html"%>
-<%@page import="javax.faces.component.*,javax.faces.context.*" %>
-
-<html>
-    <head>
-        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-        <title>ProcessSaveRestoreStateTest</title>
-    </head>
-    <body>
-    <%
-       UIComponent comp1 = new UIOutput();
-       UIComponent child11 = new UIInput();
-       child11.setTransient(true);
-       UIComponent child12 = new UIInput();
-       UIComponent child111 = new UIInput();
-       UIComponent child121 = new UIInput();
-       comp1.getChildren().add(child11); 
-       comp1.getChildren().add(child12); 
-       child11.getChildren().add(child111);
-       child12.getChildren().add(child121);
-       Object state = comp1.processSaveState(FacesContext.getCurrentInstance());
-       comp1.processRestoreState(FacesContext.getCurrentInstance(), state);
-    %>
-    PASSED
-    </body>
-</html>
+<%@page contentType="text/html"%>
+<%@page pageEncoding="UTF-8"%>
+
+<%@taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
+<%@taglib prefix="h" uri="http://java.sun.com/jsf/html"%>
+<%@page import="javax.faces.component.*,javax.faces.context.*" %>
+
+<html>
+    <head>
+        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+        <title>ProcessSaveRestoreStateTest</title>
+    </head>
+    <body>
+    <%
+       UIComponent comp1 = new UIOutput();
+       UIComponent child11 = new UIInput();
+       child11.setTransient(true);
+       UIComponent child12 = new UIInput();
+       UIComponent child111 = new UIInput();
+       UIComponent child121 = new UIInput();
+       comp1.getChildren().add(child11); 
+       comp1.getChildren().add(child12); 
+       child11.getChildren().add(child111);
+       child12.getChildren().add(child121);
+       Object state = comp1.processSaveState(FacesContext.getCurrentInstance());
+       comp1.processRestoreState(FacesContext.getCurrentInstance(), state);
+    %>
+    PASSED
+    </body>
+</html>
diff --git a/jsf-ri/systest/web/SelectManyConverterTest.jsp b/jsf-ri/systest/web/SelectManyConverterTest.jsp
index 7b854e8..974ee44 100644
--- a/jsf-ri/systest/web/SelectManyConverterTest.jsp
+++ b/jsf-ri/systest/web/SelectManyConverterTest.jsp
@@ -1,63 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
---%>
 
-<!--
-The contents of this file are subject to the terms
-of the Common Development and Distribution License
-(the License). You may not use this file except in
-compliance with the License.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
 
-You can obtain a copy of the License at
-https://javaserverfaces.dev.java.net/CDDL.html or
-legal/CDDLv1.0.txt.
-See the License for the specific language governing
-permission and limitations under the License.
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
 
-When distributing Covered Code, include this CDDL
-Header Notice in each file and include the License file
-at legal/CDDLv1.0.txt.
-If applicable, add the following below the CDDL Header,
-with the fields enclosed by brackets [] replaced by
-your own identifying information:
-"Portions Copyrighted [year] [name of copyright owner]"
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
 
-[Name of File] [ver.__] [Date]
 
-Copyright 2006 Sun Microsystems Inc. All Rights Reserved
--->
 
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
diff --git a/jsf-ri/systest/web/TCCI_subview01.jsp b/jsf-ri/systest/web/TCCI_subview01.jsp
index c98048c..0142c4d 100644
--- a/jsf-ri/systest/web/TCCI_subview01.jsp
+++ b/jsf-ri/systest/web/TCCI_subview01.jsp
@@ -1,37 +1,43 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
 <%@ page contentType="text/html" language="java" autoFlush="true" %>
diff --git a/jsf-ri/systest/web/TCCI_subview02.jsp b/jsf-ri/systest/web/TCCI_subview02.jsp
index de520c0..faa417d 100644
--- a/jsf-ri/systest/web/TCCI_subview02.jsp
+++ b/jsf-ri/systest/web/TCCI_subview02.jsp
@@ -1,37 +1,43 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
 <%@ page contentType="text/html" language="java" %>
diff --git a/jsf-ri/systest/web/TCCI_subview03.jsp b/jsf-ri/systest/web/TCCI_subview03.jsp
index b36699f..ed4774e 100644
--- a/jsf-ri/systest/web/TCCI_subview03.jsp
+++ b/jsf-ri/systest/web/TCCI_subview03.jsp
@@ -1,37 +1,43 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
 <%@ page contentType="text/html" language="java" %>
diff --git a/jsf-ri/systest/web/TCCI_subview04.jsp b/jsf-ri/systest/web/TCCI_subview04.jsp
index 6bfb8a7..4025b6f 100644
--- a/jsf-ri/systest/web/TCCI_subview04.jsp
+++ b/jsf-ri/systest/web/TCCI_subview04.jsp
@@ -1,37 +1,43 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
 <%@ page contentType="text/html" language="java" autoFlush="true" %>
diff --git a/jsf-ri/systest/web/TCCI_subview05.jsp b/jsf-ri/systest/web/TCCI_subview05.jsp
index b066967..0e3acda 100644
--- a/jsf-ri/systest/web/TCCI_subview05.jsp
+++ b/jsf-ri/systest/web/TCCI_subview05.jsp
@@ -1,37 +1,43 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
 <%@ page contentType="text/html" language="java" %>
diff --git a/jsf-ri/systest/web/TCCI_subview06.jsp b/jsf-ri/systest/web/TCCI_subview06.jsp
index 36071a9..0d8b348 100644
--- a/jsf-ri/systest/web/TCCI_subview06.jsp
+++ b/jsf-ri/systest/web/TCCI_subview06.jsp
@@ -1,37 +1,43 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
 <%@ page contentType="text/html" language="java" %>
diff --git a/jsf-ri/systest/web/TestCoreValidatorFail.jsp b/jsf-ri/systest/web/TestCoreValidatorFail.jsp
old mode 100644
new mode 100755
index 9fb40c9..774dd7f
--- a/jsf-ri/systest/web/TestCoreValidatorFail.jsp
+++ b/jsf-ri/systest/web/TestCoreValidatorFail.jsp
@@ -1,43 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
+
 
 <html>
 <title>Validator Test Page</title>
diff --git a/jsf-ri/systest/web/TestCoreValidatorIfFail.jsp b/jsf-ri/systest/web/TestCoreValidatorIfFail.jsp
index 0d0b612..82c1315 100644
--- a/jsf-ri/systest/web/TestCoreValidatorIfFail.jsp
+++ b/jsf-ri/systest/web/TestCoreValidatorIfFail.jsp
@@ -1,43 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
+
 
 <html>
 <title>Validator Test Page</title>
diff --git a/jsf-ri/systest/web/TestCoreValidatorIfSucceed.jsp b/jsf-ri/systest/web/TestCoreValidatorIfSucceed.jsp
index 85fe5ce..1ba2053 100644
--- a/jsf-ri/systest/web/TestCoreValidatorIfSucceed.jsp
+++ b/jsf-ri/systest/web/TestCoreValidatorIfSucceed.jsp
@@ -1,43 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
+
 
 <html>
 <title>Validator Test Page</title>
diff --git a/jsf-ri/systest/web/TestCoreValidatorIteratorFail.jsp b/jsf-ri/systest/web/TestCoreValidatorIteratorFail.jsp
index f55d611..fa4c643 100644
--- a/jsf-ri/systest/web/TestCoreValidatorIteratorFail.jsp
+++ b/jsf-ri/systest/web/TestCoreValidatorIteratorFail.jsp
@@ -1,43 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
+
 
 <html>
 <title>Validator Test Page</title>
diff --git a/jsf-ri/systest/web/TestCoreValidatorIteratorSucceed.jsp b/jsf-ri/systest/web/TestCoreValidatorIteratorSucceed.jsp
index 073458e..eafa5b0 100644
--- a/jsf-ri/systest/web/TestCoreValidatorIteratorSucceed.jsp
+++ b/jsf-ri/systest/web/TestCoreValidatorIteratorSucceed.jsp
@@ -1,43 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
+
 
 <html>
 <title>Validator Test Page</title>
diff --git a/jsf-ri/systest/web/TestCoreValidatorSucceed.jsp b/jsf-ri/systest/web/TestCoreValidatorSucceed.jsp
old mode 100644
new mode 100755
index b8ddfc1..b5368bf
--- a/jsf-ri/systest/web/TestCoreValidatorSucceed.jsp
+++ b/jsf-ri/systest/web/TestCoreValidatorSucceed.jsp
@@ -1,43 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
+
 
 <html>
 <title>Validator Test Page</title>
diff --git a/jsf-ri/systest/web/TestElValidatorActionRefFail.jsp b/jsf-ri/systest/web/TestElValidatorActionRefFail.jsp
index b64f63c..62f4002 100644
--- a/jsf-ri/systest/web/TestElValidatorActionRefFail.jsp
+++ b/jsf-ri/systest/web/TestElValidatorActionRefFail.jsp
@@ -1,43 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
+
 
 <html>
 <title>Validator Test Page</title>
diff --git a/jsf-ri/systest/web/TestElValidatorActionRefSucceed.jsp b/jsf-ri/systest/web/TestElValidatorActionRefSucceed.jsp
index ffa861a..78e841b 100644
--- a/jsf-ri/systest/web/TestElValidatorActionRefSucceed.jsp
+++ b/jsf-ri/systest/web/TestElValidatorActionRefSucceed.jsp
@@ -1,43 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
+
 
 <html>
 <title>Validator Test Page</title>
diff --git a/jsf-ri/systest/web/TestElValidatorComponentFail.jsp b/jsf-ri/systest/web/TestElValidatorComponentFail.jsp
index 340eecb..989b584 100644
--- a/jsf-ri/systest/web/TestElValidatorComponentFail.jsp
+++ b/jsf-ri/systest/web/TestElValidatorComponentFail.jsp
@@ -1,43 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
+
 
 <html>
 <title>Validator Test Page</title>
diff --git a/jsf-ri/systest/web/TestElValidatorComponentSucceed.jsp b/jsf-ri/systest/web/TestElValidatorComponentSucceed.jsp
index 0b9bd69..445f7d4 100644
--- a/jsf-ri/systest/web/TestElValidatorComponentSucceed.jsp
+++ b/jsf-ri/systest/web/TestElValidatorComponentSucceed.jsp
@@ -1,43 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
+
 
 <html>
 <title>Validator Test Page</title>
diff --git a/jsf-ri/systest/web/TestElValidatorIdFail.jsp b/jsf-ri/systest/web/TestElValidatorIdFail.jsp
index 3b6200b..c9e6cce 100644
--- a/jsf-ri/systest/web/TestElValidatorIdFail.jsp
+++ b/jsf-ri/systest/web/TestElValidatorIdFail.jsp
@@ -1,43 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
+
 
 <html>
 <title>Validator Test Page</title>
diff --git a/jsf-ri/systest/web/TestElValidatorIdSucceed.jsp b/jsf-ri/systest/web/TestElValidatorIdSucceed.jsp
index 4d7e251..85ac0f5 100644
--- a/jsf-ri/systest/web/TestElValidatorIdSucceed.jsp
+++ b/jsf-ri/systest/web/TestElValidatorIdSucceed.jsp
@@ -1,43 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
+
 
 <html>
 <title>Validator Test Page</title>
diff --git a/jsf-ri/systest/web/TestElValidatorValueRefFail.jsp b/jsf-ri/systest/web/TestElValidatorValueRefFail.jsp
index f16b762..6ecad36 100644
--- a/jsf-ri/systest/web/TestElValidatorValueRefFail.jsp
+++ b/jsf-ri/systest/web/TestElValidatorValueRefFail.jsp
@@ -1,43 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
+
 
 <html>
 <title>Validator Test Page</title>
diff --git a/jsf-ri/systest/web/TestElValidatorValueRefSucceed.jsp b/jsf-ri/systest/web/TestElValidatorValueRefSucceed.jsp
index e14c68a..c71e336 100644
--- a/jsf-ri/systest/web/TestElValidatorValueRefSucceed.jsp
+++ b/jsf-ri/systest/web/TestElValidatorValueRefSucceed.jsp
@@ -1,43 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
+
 
 <html>
 <title>Validator Test Page</title>
diff --git a/jsf-ri/systest/web/TestHtmlBasicValidatorFail.jsp b/jsf-ri/systest/web/TestHtmlBasicValidatorFail.jsp
index 0746576..7ebc7cd 100644
--- a/jsf-ri/systest/web/TestHtmlBasicValidatorFail.jsp
+++ b/jsf-ri/systest/web/TestHtmlBasicValidatorFail.jsp
@@ -1,43 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
+
 
 <html>
 <title>Validator Test Page</title>
diff --git a/jsf-ri/systest/web/TestHtmlBasicValidatorSucceed.jsp b/jsf-ri/systest/web/TestHtmlBasicValidatorSucceed.jsp
index 2d92aec..c254725 100644
--- a/jsf-ri/systest/web/TestHtmlBasicValidatorSucceed.jsp
+++ b/jsf-ri/systest/web/TestHtmlBasicValidatorSucceed.jsp
@@ -1,43 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
+
 
 <html>
 <title>Validator Test Page</title>
diff --git a/jsf-ri/systest/web/TestValueChangeAndActionListenerNoArg.jsp b/jsf-ri/systest/web/TestValueChangeAndActionListenerNoArg.jsp
index 19daeab..179b4d2 100644
--- a/jsf-ri/systest/web/TestValueChangeAndActionListenerNoArg.jsp
+++ b/jsf-ri/systest/web/TestValueChangeAndActionListenerNoArg.jsp
@@ -1,40 +1,45 @@
 <%--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 --%>
+
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
   <head>
diff --git a/jsf-ri/systest/web/TestValueChangeAndActionListenerNoArg.xhtml b/jsf-ri/systest/web/TestValueChangeAndActionListenerNoArg.xhtml
index 78b234f..c6cdd6c 100644
--- a/jsf-ri/systest/web/TestValueChangeAndActionListenerNoArg.xhtml
+++ b/jsf-ri/systest/web/TestValueChangeAndActionListenerNoArg.xhtml
@@ -1,40 +1,45 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:h="http://java.sun.com/jsf/html"
diff --git a/jsf-ri/systest/web/WEB-INF/composite-behavior.taglib.xml b/jsf-ri/systest/web/WEB-INF/composite-behavior.taglib.xml
index 7b81026..9fe36d2 100644
--- a/jsf-ri/systest/web/WEB-INF/composite-behavior.taglib.xml
+++ b/jsf-ri/systest/web/WEB-INF/composite-behavior.taglib.xml
@@ -1,47 +1,50 @@
 <?xml version='1.0' encoding='UTF-8'?>
-
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
 
-<facelet-taglib xmlns="http://java.sun.com/xml/ns/javaee"
+<facelet-taglib xmlns="http://xmlns.jcp.org/xml/ns/javaee"
               xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-              xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facelettaglibrary_2_0.xsd"
-              version="2.0">
+              xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-facelettaglibrary_2_2.xsd"
+              version="2.2">
     <namespace>http://mojarra.dev.java.net/composite-behavior</namespace>
 
     <tag>
diff --git a/jsf-ri/systest/web/WEB-INF/faces-config.xml b/jsf-ri/systest/web/WEB-INF/faces-config.xml
index 90e40dc..27d832c 100644
--- a/jsf-ri/systest/web/WEB-INF/faces-config.xml
+++ b/jsf-ri/systest/web/WEB-INF/faces-config.xml
@@ -1,41 +1,45 @@
 <?xml version='1.0' encoding='UTF-8'?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
--->
 
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
 
 <faces-config xmlns="http://java.sun.com/xml/ns/javaee"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
@@ -51,12 +55,19 @@
     <resource-bundle>      
       <base-name>com.sun.faces.systest.resources.ResourceBundle01</base-name>
       <var>resourceBundle01</var>
+      <display-name>resourceBundle01 displayName</display-name>
     </resource-bundle>
     <resource-bundle>      
       <base-name>com.sun.faces.systest.resources.ResourceBundle03</base-name>
         <var>resourceBundle03</var>
-    </resource-bundle>     
+        <display-name>resourceBundle03 displayName</display-name>
+    </resource-bundle>
   </application>
+  
+  <lifecycle>
+      <phase-listener>com.sun.faces.annotation.AnnotatedPhaseListener</phase-listener>
+  </lifecycle>
+  
   <factory>
     <application-factory>com.sun.faces.systest.lifecycle.ApplicationFactoryWrapper</application-factory>
     <faces-context-factory>com.sun.faces.systest.lifecycle.FacesContextFactoryWrapper</faces-context-factory>
@@ -100,6 +111,14 @@
   </managed-bean>
 
   <managed-bean>
+    <managed-bean-name>csrfBean</managed-bean-name>
+    <managed-bean-class>
+      com.sun.faces.systest.model.CSRFBean
+    </managed-bean-class>
+    <managed-bean-scope>session</managed-bean-scope>
+  </managed-bean>
+
+  <managed-bean>
     <managed-bean-name>TestValueChangeListener01</managed-bean-name>
     <managed-bean-class>
       com.sun.faces.systest.TestValueChangeListener01
@@ -245,6 +264,15 @@
   </managed-bean>
 
   <managed-bean>
+    <managed-bean-name>issue13582626Bean</managed-bean-name>
+    <managed-bean-class>
+      com.sun.faces.systest.model.TestBean
+    </managed-bean-class>
+    <managed-bean-scope>request</managed-bean-scope>
+  </managed-bean>
+
+
+  <managed-bean>
     <managed-bean-name>phaseListener</managed-bean-name>
     <managed-bean-class>
       com.sun.faces.systest.model.PrintEventToRequestMapPhaseListener
@@ -293,11 +321,31 @@
     </managed-bean>
 
     <managed-bean>
+        <managed-bean-name>issue1726</managed-bean-name>
+        <managed-bean-class>com.sun.faces.systest.model.SelectMany05Bean</managed-bean-class>
+        <managed-bean-scope>none</managed-bean-scope>
+    </managed-bean>
+
+    <managed-bean>
+        <managed-bean-name>issue1727</managed-bean-name>
+        <managed-bean-class>com.sun.faces.systest.model.SelectMany05Bean</managed-bean-class>
+        <managed-bean-scope>session</managed-bean-scope>
+    </managed-bean>
+
+
+    <managed-bean>
         <managed-bean-name>select05NoSelection</managed-bean-name>
         <managed-bean-class>com.sun.faces.systest.model.SelectMany05BeanWithNoSelectionValue</managed-bean-class>
         <managed-bean-scope>session</managed-bean-scope>
     </managed-bean>
 
+    <managed-bean>
+        <managed-bean-name>mojarra932Bean</managed-bean-name>
+        <managed-bean-class>com.sun.faces.systest.model.SelectItemsBean</managed-bean-class>
+        <managed-bean-scope>session</managed-bean-scope>
+    </managed-bean>
+
+
 
    <!-- validator -->
   <validator>
@@ -801,6 +849,12 @@
   </navigation-case>
 </navigation-rule>
 
+  <faces-config-extension>
+    <facelets-processing>
+      <file-extension>.xhtml</file-extension>
+      <process-as>xhtml</process-as>
+    </facelets-processing>
+  </faces-config-extension>
 
 
 </faces-config>
diff --git a/jsf-ri/systest/web/WEB-INF/formlayout.taglib.xml b/jsf-ri/systest/web/WEB-INF/formlayout.taglib.xml
new file mode 100644
index 0000000..e3e1242
--- /dev/null
+++ b/jsf-ri/systest/web/WEB-INF/formlayout.taglib.xml
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<facelet-taglib xmlns="http://xmlns.jcp.org/xml/ns/javaee"
+              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+              xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-facelettaglibrary_2_2.xsd"
+              version="2.2">
+    <namespace>http://mojarra.dev.java.net/formlayout</namespace>
+    <tag>
+        <tag-name>layout</tag-name>
+        <source>formlayout/layout.xhtml</source>
+    </tag>
+
+</facelet-taglib>
diff --git a/jsf-ri/systest/web/WEB-INF/formlayout/layout.xhtml b/jsf-ri/systest/web/WEB-INF/formlayout/layout.xhtml
new file mode 100644
index 0000000..8c8d0a5
--- /dev/null
+++ b/jsf-ri/systest/web/WEB-INF/formlayout/layout.xhtml
@@ -0,0 +1,58 @@
+<?xml version = "1.0" encoding = "UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+
+<ui:component>
+
+  <f:view>
+
+  	<ui:decorate template="sub/maintemplate.xhtml" />
+
+	</f:view>
+
+</ui:component>
+</html>
diff --git a/jsf-ri/systest/web/WEB-INF/formlayout/sub/maintemplate.xhtml b/jsf-ri/systest/web/WEB-INF/formlayout/sub/maintemplate.xhtml
new file mode 100644
index 0000000..e4bd7a2
--- /dev/null
+++ b/jsf-ri/systest/web/WEB-INF/formlayout/sub/maintemplate.xhtml
@@ -0,0 +1,61 @@
+<?xml version = "1.0" encoding = "UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+
+<ui:composition>
+   <h:head>
+        <ui:insert name="title" >Default title</ui:insert>
+	 </h:head>
+    
+    <h:body>
+      <h:form>
+        <ui:insert name="content" >Default Content</ui:insert>
+      </h:form>
+    </h:body>
+    
+</ui:composition>  
+</html>
diff --git a/jsf-ri/systest/web/WEB-INF/groovy/com/sun/faces/groovy/GroovyBacked.groovy b/jsf-ri/systest/web/WEB-INF/groovy/com/sun/faces/groovy/GroovyBacked.groovy
index d09f7bd..54625a2 100644
--- a/jsf-ri/systest/web/WEB-INF/groovy/com/sun/faces/groovy/GroovyBacked.groovy
+++ b/jsf-ri/systest/web/WEB-INF/groovy/com/sun/faces/groovy/GroovyBacked.groovy
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -56,4 +60,4 @@ class GroovyBacked extends UIInput implements NamingContainer {
             return null;
         }
     }
-}
\ No newline at end of file
+}
diff --git a/jsf-ri/systest/web/WEB-INF/groovy/com/sun/faces/groovy/SimpleBean.groovy b/jsf-ri/systest/web/WEB-INF/groovy/com/sun/faces/groovy/SimpleBean.groovy
index 65369cc..54872cf 100644
--- a/jsf-ri/systest/web/WEB-INF/groovy/com/sun/faces/groovy/SimpleBean.groovy
+++ b/jsf-ri/systest/web/WEB-INF/groovy/com/sun/faces/groovy/SimpleBean.groovy
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -33,6 +37,7 @@
  * only if the new code is made subject to such option by the copyright
  * holder.
  */
+
 package com.sun.faces.groovy;
 
 import javax.faces.bean.ManagedBean;
diff --git a/jsf-ri/systest/web/WEB-INF/i_spec_599_composite_taglib.taglib.xml b/jsf-ri/systest/web/WEB-INF/i_spec_599_composite_taglib.taglib.xml
new file mode 100644
index 0000000..6db5b40
--- /dev/null
+++ b/jsf-ri/systest/web/WEB-INF/i_spec_599_composite_taglib.taglib.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<facelet-taglib xmlns="http://xmlns.jcp.org/xml/ns/javaee"
+                xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+                xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-facelettaglibary_2_2.xsd"
+                version="2.2">
+
+	<namespace>i_spec_599_composite_taglib</namespace>
+	
+	<tag>
+              <tag-name>i_spec_599_composite_taglib</tag-name>
+              <component>
+		<resource-id>i_spec_599_composite_taglib/i_spec_599_composite_taglib.xhtml </resource-id>
+              </component>
+	</tag>
+
+</facelet-taglib>
diff --git a/jsf-ri/systest/web/WEB-INF/init-faces-config.xml b/jsf-ri/systest/web/WEB-INF/init-faces-config.xml
index 8278b84..7646d3f 100644
--- a/jsf-ri/systest/web/WEB-INF/init-faces-config.xml
+++ b/jsf-ri/systest/web/WEB-INF/init-faces-config.xml
@@ -1,41 +1,45 @@
 <?xml version='1.0' encoding='UTF-8'?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
--->
 
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
 
 <faces-config xmlns="http://java.sun.com/xml/ns/javaee"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
diff --git a/jsf-ri/systest/web/WEB-INF/source1.taglib.xml b/jsf-ri/systest/web/WEB-INF/source1.taglib.xml
index d917321..4e49a05 100644
--- a/jsf-ri/systest/web/WEB-INF/source1.taglib.xml
+++ b/jsf-ri/systest/web/WEB-INF/source1.taglib.xml
@@ -1,45 +1,50 @@
 <?xml version="1.0" encoding="UTF-8"?>
-        
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
--->    
-
-<facelet-taglib xmlns="http://java.sun.com/xml/ns/javaee"
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<facelet-taglib xmlns="http://xmlns.jcp.org/xml/ns/javaee"
               xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-              xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facelettaglibrary_2_0.xsd"
-              version="2.0">
+              xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-facelettaglibrary_2_2.xsd"
+              version="2.2">
     <namespace>http://mojarra.dev.java.net/source1</namespace>
     <tag>
         <tag-name>hello</tag-name>
@@ -71,5 +76,27 @@
         </component>
     </tag>
 
+    <tag>
+        <tag-name>postAddTester</tag-name>
+        <component>
+            <component-type>PostAddTester</component-type>
+        </component>
+    </tag>
+
+    <tag>
+        <tag-name>testcomponent</tag-name>
+        <component>
+            <component-type>com.sun.faces.systest.dynamic1757.UITestComponent</component-type>
+        </component>
+    </tag>
+
+    <tag>
+        <tag-name>injectedComponent</tag-name>
+        <component>
+            <component-type>ComponentWithResourceInjection</component-type>
+        </component>
+
+    </tag>
+
 
 </facelet-taglib>
diff --git a/jsf-ri/systest/web/WEB-INF/sun-web.xml b/jsf-ri/systest/web/WEB-INF/sun-web.xml
index ec2fcfd..de061dd 100644
--- a/jsf-ri/systest/web/WEB-INF/sun-web.xml
+++ b/jsf-ri/systest/web/WEB-INF/sun-web.xml
@@ -1,41 +1,45 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
--->
 
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
 
 <!DOCTYPE sun-web-app PUBLIC '-//Sun Microsystems, Inc.//DTD Sun ONE Application Server 8.0 Servlet 2.4//EN' 'http://www.sun.com/software/sunone/appserver/dtds/sun-web-app_2_4-0.dtd'>
 
diff --git a/jsf-ri/systest/web/WEB-INF/taglib.tld b/jsf-ri/systest/web/WEB-INF/taglib.tld
index 5ab8c4b..385d7f1 100644
--- a/jsf-ri/systest/web/WEB-INF/taglib.tld
+++ b/jsf-ri/systest/web/WEB-INF/taglib.tld
@@ -1,41 +1,45 @@
 <?xml version="1.0" encoding="ISO-8859-1" ?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
--->
 
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
 
 <!DOCTYPE taglib
   PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
diff --git a/jsf-ri/systest/web/WEB-INF/tags/source.xhtml b/jsf-ri/systest/web/WEB-INF/tags/source.xhtml
index 0bd1eb9..bce6ed8 100644
--- a/jsf-ri/systest/web/WEB-INF/tags/source.xhtml
+++ b/jsf-ri/systest/web/WEB-INF/tags/source.xhtml
@@ -1,37 +1,43 @@
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
 
-<h:outputText xmlns:h="http://java.sun.com/jsf/html" style="color:red" value="Hello!"/>
\ No newline at end of file
+<h:outputText xmlns:h="http://java.sun.com/jsf/html" style="color:red" value="Hello!"/>
diff --git a/jsf-ri/systest/web/WEB-INF/templates/compositeTestTemplate.xhtml b/jsf-ri/systest/web/WEB-INF/templates/compositeTestTemplate.xhtml
index a1b7760..4ea7154 100644
--- a/jsf-ri/systest/web/WEB-INF/templates/compositeTestTemplate.xhtml
+++ b/jsf-ri/systest/web/WEB-INF/templates/compositeTestTemplate.xhtml
@@ -1,40 +1,45 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html
       PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
@@ -53,4 +58,4 @@
 <ui:insert name="content"/>
 </div>
 </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/jsf-ri/systest/web/WEB-INF/templates/templateCompTemplate.xhtml b/jsf-ri/systest/web/WEB-INF/templates/templateCompTemplate.xhtml
index a1b7760..4ea7154 100644
--- a/jsf-ri/systest/web/WEB-INF/templates/templateCompTemplate.xhtml
+++ b/jsf-ri/systest/web/WEB-INF/templates/templateCompTemplate.xhtml
@@ -1,40 +1,45 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html
       PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
@@ -53,4 +58,4 @@
 <ui:insert name="content"/>
 </div>
 </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/jsf-ri/systest/web/WEB-INF/templates/templateDecorateTemplate.xhtml b/jsf-ri/systest/web/WEB-INF/templates/templateDecorateTemplate.xhtml
index 30810ff..390b3a6 100644
--- a/jsf-ri/systest/web/WEB-INF/templates/templateDecorateTemplate.xhtml
+++ b/jsf-ri/systest/web/WEB-INF/templates/templateDecorateTemplate.xhtml
@@ -1,40 +1,45 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html
       PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
@@ -56,4 +61,4 @@
     <span id="templateText">Template text</span>
 </div>
 </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/jsf-ri/systest/web/WEB-INF/test.jsp b/jsf-ri/systest/web/WEB-INF/test.jsp
index 3394b80..e211ea9 100644
--- a/jsf-ri/systest/web/WEB-INF/test.jsp
+++ b/jsf-ri/systest/web/WEB-INF/test.jsp
@@ -1,43 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- Copyright 2005 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
+
 
 <html>
 <head>
diff --git a/jsf-ri/systest/web/WEB-INF/testcomponent.taglib.xml b/jsf-ri/systest/web/WEB-INF/testcomponent.taglib.xml
new file mode 100644
index 0000000..eb7d322
--- /dev/null
+++ b/jsf-ri/systest/web/WEB-INF/testcomponent.taglib.xml
@@ -0,0 +1,113 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<facelet-taglib xmlns="http://xmlns.jcp.org/xml/ns/javaee"
+              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+              xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-facelettaglibrary_2_2.xsd" version="2.2">
+
+	<namespace>http://testcomponent</namespace>
+
+	<tag>
+		<tag-name>addcomponent</tag-name>
+		<component>
+			<component-type>com.sun.faces.event.UIAddComponent</component-type>
+		</component>
+	</tag>
+
+	<tag>
+		<tag-name>addcomponent1</tag-name>
+		<component>
+			<component-type>com.sun.faces.event.UIAddComponent1</component-type>
+		</component>
+	</tag>
+
+	<tag>
+		<tag-name>addcomponent2</tag-name>
+		<component>
+			<component-type>com.sun.faces.event.UIAddComponent2</component-type>
+		</component>
+	</tag>
+
+	<tag>
+		<tag-name>addcomponent3</tag-name>
+		<component>
+			<component-type>com.sun.faces.event.UIAddComponent3</component-type>
+		</component>
+	</tag>
+
+	<tag>
+		<tag-name>togglecomponent</tag-name>
+		<component>
+			<component-type>com.sun.faces.event.UIToggleComponent</component-type>
+		</component>
+	</tag>
+
+	<tag>
+		<tag-name>recursivecomponent</tag-name>
+		<component>
+			<component-type>com.sun.faces.event.UIRecursiveComponent</component-type>
+		</component>
+	</tag>
+
+	<tag>
+		<tag-name>stablecomponent</tag-name>
+		<component>
+			<component-type>com.sun.faces.event.UIStableComponent</component-type>
+		</component>
+	</tag>
+
+	<tag>
+		<tag-name>tablecomponent</tag-name>
+		<component>
+			<component-type>com.sun.faces.event.UITableComponent</component-type>
+		</component>
+	</tag>
+
+	<tag>
+		<tag-name>inputcomponent</tag-name>
+		<component>
+			<component-type>com.sun.faces.event.UIInputComponent</component-type>
+		</component>
+	</tag>
+
+</facelet-taglib>
diff --git a/jsf-ri/systest/web/WEB-INF/web.xml.template b/jsf-ri/systest/web/WEB-INF/web.xml.template
index 89a079d..c7cab7c 100644
--- a/jsf-ri/systest/web/WEB-INF/web.xml.template
+++ b/jsf-ri/systest/web/WEB-INF/web.xml.template
@@ -1,39 +1,44 @@
 <?xml version="1.0" encoding="ISO-8859-1"?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
 
 <web-app version="2.5"
@@ -51,6 +56,17 @@
       <param-name>com.sun.faces.validateXml</param-name>
       <param-value>true</param-value>
     </context-param>
+
+    <context-param>
+      <param-name>com.sun.faces.autoCompleteOffOnViewState</param-name>
+      <param-value>false</param-value>
+    </context-param>
+
+    <context-param>
+      <param-name>com.sun.faces.allowedHttpMethods</param-name>
+      <param-value>OPTIONS GET HEAD POST PUT DELETE TRACE CONNECT GETBOGUSALLOWED</param-value>
+    </context-param>
+
     <context-param>
         <param-name>com.sun.faces.enableThreading</param-name>
         <param-value>true</param-value>
@@ -64,10 +80,18 @@
         <param-value>true</param-value>
     </context-param>
     <context-param>
+        <param-name>com.sun.faces.ENABLE_HTTP_METHOD_RESTRICTION_PHASE_LISTENER</param-name>
+        <param-value>true</param-value>
+    </context-param>
+    <context-param>
         <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
         <param-value>server</param-value>
     </context-param>
     <context-param>
+        <param-name>javax.faces.CSRF_ALGORITHM</param-name>
+        <param-value>all</param-value>
+    </context-param>
+    <context-param>
         <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
         <param-value>{partial-state-saving}</param-value>
     </context-param>
@@ -91,7 +115,7 @@
 
     <context-param>
         <param-name>facelets.VIEW_MAPPINGS</param-name>
-        <param-value>/resources/composite/*;*.xhtml</param-value>
+        <param-value>/resources/composite/*;*.xhtml;*.view.xml</param-value>
     </context-param>
 
     <context-param>
@@ -101,11 +125,7 @@
 
     <context-param>
         <param-name>javax.faces.FACELETS_LIBRARIES</param-name>
-        <param-value>/WEB-INF/source1.taglib.xml;/WEB-INF/composite-behavior.taglib.xml</param-value>
-    </context-param>
-    <context-param>
-        <param-name>com.sun.faces.enableGroovyScripting</param-name>
-        <param-value>true</param-value>
+        <param-value>/WEB-INF/testcomponent.taglib.xml;/WEB-INF/source1.taglib.xml;/WEB-INF/composite-behavior.taglib.xml;/WEB-INF/formlayout.taglib.xml;/WEB-INF/i_spec_599_composite_taglib.taglib.xml</param-value>
     </context-param>
 
     <jsp-config>
@@ -115,19 +135,6 @@
         </jsp-property-group>
     </jsp-config>
 
-    <filter>
-        <filter-name>GroovyFilter</filter-name>
-        <filter-class>com.sun.faces.scripting.GroovySupportFilter</filter-class>
-    </filter>
-    <filter-mapping>
-        <filter-name>GroovyFilter</filter-name>
-        <url-pattern>/*</url-pattern>
-        <dispatcher>REQUEST</dispatcher>
-        <dispatcher>FORWARD</dispatcher>
-        <dispatcher>INCLUDE</dispatcher>
-        <dispatcher>ERROR</dispatcher>
-    </filter-mapping>
-
     <!-- Faces Servlet -->
     <servlet>
         <servlet-name>Faces Servlet</servlet-name>
diff --git a/jsf-ri/systest/web/ajax/ajaxAllKeyword1.xhtml b/jsf-ri/systest/web/ajax/ajaxAllKeyword1.xhtml
index aa12c62..4f542a9 100644
--- a/jsf-ri/systest/web/ajax/ajaxAllKeyword1.xhtml
+++ b/jsf-ri/systest/web/ajax/ajaxAllKeyword1.xhtml
@@ -1,40 +1,45 @@
 <!--
 
-  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
-  Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
-
-  The contents of this file are subject to the terms of either the GNU
-  General Public License Version 2 only ("GPL") or the Common Development
-  and Distribution License("CDDL") (collectively, the "License").  You
-  may not use this file except in compliance with the License. You can obtain
-  a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
-  or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
-  language governing permissions and limitations under the License.
-
-  When distributing the software, include this License Header Notice in each
-  file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
-  Sun designates this particular file as subject to the "Classpath" exception
-  as provided by Sun in the GPL Version 2 section of the License file that
-  accompanied this code.  If applicable, add the following below the License
-  Header, with the fields enclosed by brackets [] replaced by your own
-  identifying information: "Portions Copyrighted [year]
-  [name of copyright owner]"
-
-  Contributor(s):
-
-  If you wish your version of this file to be governed by only the CDDL or
-  only the GPL Version 2, indicate your decision by adding "[Contributor]
-  elects to include this software in this distribution under the [CDDL or GPL
-  Version 2] license."  If you don't indicate a single choice of license, a
-  recipient has the option to distribute your version of this file under
-  either the CDDL, the GPL Version 2 or to extend the choice of license to
-  its licensees as provided above.  However, if you add GPL Version 2 code
-  and therefore, elected the GPL Version 2 license, then the option applies
-  only if the new code is made subject to such option by the copyright
-  holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html
         PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
@@ -67,4 +72,4 @@
 
 </h:body>
 
-</html>
\ No newline at end of file
+</html>
diff --git a/jsf-ri/systest/web/ajax/ajaxAllKeyword2.xhtml b/jsf-ri/systest/web/ajax/ajaxAllKeyword2.xhtml
index 6d3f11a..d8da102 100644
--- a/jsf-ri/systest/web/ajax/ajaxAllKeyword2.xhtml
+++ b/jsf-ri/systest/web/ajax/ajaxAllKeyword2.xhtml
@@ -1,40 +1,45 @@
 <!--
 
-  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
-  Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
-
-  The contents of this file are subject to the terms of either the GNU
-  General Public License Version 2 only ("GPL") or the Common Development
-  and Distribution License("CDDL") (collectively, the "License").  You
-  may not use this file except in compliance with the License. You can obtain
-  a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
-  or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
-  language governing permissions and limitations under the License.
-
-  When distributing the software, include this License Header Notice in each
-  file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
-  Sun designates this particular file as subject to the "Classpath" exception
-  as provided by Sun in the GPL Version 2 section of the License file that
-  accompanied this code.  If applicable, add the following below the License
-  Header, with the fields enclosed by brackets [] replaced by your own
-  identifying information: "Portions Copyrighted [year]
-  [name of copyright owner]"
-
-  Contributor(s):
-
-  If you wish your version of this file to be governed by only the CDDL or
-  only the GPL Version 2, indicate your decision by adding "[Contributor]
-  elects to include this software in this distribution under the [CDDL or GPL
-  Version 2] license."  If you don't indicate a single choice of license, a
-  recipient has the option to distribute your version of this file under
-  either the CDDL, the GPL Version 2 or to extend the choice of license to
-  its licensees as provided above.  However, if you add GPL Version 2 code
-  and therefore, elected the GPL Version 2 license, then the option applies
-  only if the new code is made subject to such option by the copyright
-  holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html
         PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
@@ -69,4 +74,4 @@
 
 </h:body>
 
-</html>
\ No newline at end of file
+</html>
diff --git a/jsf-ri/systest/web/ajax/ajaxAllKeyword3.xhtml b/jsf-ri/systest/web/ajax/ajaxAllKeyword3.xhtml
index f070157..9693279 100644
--- a/jsf-ri/systest/web/ajax/ajaxAllKeyword3.xhtml
+++ b/jsf-ri/systest/web/ajax/ajaxAllKeyword3.xhtml
@@ -1,40 +1,45 @@
 <!--
 
-  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
-  Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
-
-  The contents of this file are subject to the terms of either the GNU
-  General Public License Version 2 only ("GPL") or the Common Development
-  and Distribution License("CDDL") (collectively, the "License").  You
-  may not use this file except in compliance with the License. You can obtain
-  a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
-  or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
-  language governing permissions and limitations under the License.
-
-  When distributing the software, include this License Header Notice in each
-  file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
-  Sun designates this particular file as subject to the "Classpath" exception
-  as provided by Sun in the GPL Version 2 section of the License file that
-  accompanied this code.  If applicable, add the following below the License
-  Header, with the fields enclosed by brackets [] replaced by your own
-  identifying information: "Portions Copyrighted [year]
-  [name of copyright owner]"
-
-  Contributor(s):
-
-  If you wish your version of this file to be governed by only the CDDL or
-  only the GPL Version 2, indicate your decision by adding "[Contributor]
-  elects to include this software in this distribution under the [CDDL or GPL
-  Version 2] license."  If you don't indicate a single choice of license, a
-  recipient has the option to distribute your version of this file under
-  either the CDDL, the GPL Version 2 or to extend the choice of license to
-  its licensees as provided above.  However, if you add GPL Version 2 code
-  and therefore, elected the GPL Version 2 license, then the option applies
-  only if the new code is made subject to such option by the copyright
-  holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html
         PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
@@ -72,4 +77,4 @@
 
 </h:body>
 
-</html>
\ No newline at end of file
+</html>
diff --git a/jsf-ri/systest/web/ajax/ajaxAttrs.xhtml b/jsf-ri/systest/web/ajax/ajaxAttrs.xhtml
index 34b49df..924e4b6 100644
--- a/jsf-ri/systest/web/ajax/ajaxAttrs.xhtml
+++ b/jsf-ri/systest/web/ajax/ajaxAttrs.xhtml
@@ -1,41 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
-  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
-  Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
-
-  The contents of this file are subject to the terms of either the GNU
-  General Public License Version 2 only ("GPL") or the Common Development
-  and Distribution License("CDDL") (collectively, the "License").  You
-  may not use this file except in compliance with the License. You can obtain
-  a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
-  or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
-  language governing permissions and limitations under the License.
-
-  When distributing the software, include this License Header Notice in each
-  file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
-  Sun designates this particular file as subject to the "Classpath" exception
-  as provided by Sun in the GPL Version 2 section of the License file that
-  accompanied this code.  If applicable, add the following below the License
-  Header, with the fields enclosed by brackets [] replaced by your own
-  identifying information: "Portions Copyrighted [year]
-  [name of copyright owner]"
-
-  Contributor(s):
-
-  If you wish your version of this file to be governed by only the CDDL or
-  only the GPL Version 2, indicate your decision by adding "[Contributor]
-  elects to include this software in this distribution under the [CDDL or GPL
-  Version 2] license."  If you don't indicate a single choice of license, a
-  recipient has the option to distribute your version of this file under
-  either the CDDL, the GPL Version 2 or to extend the choice of license to
-  its licensees as provided above.  However, if you add GPL Version 2 code
-  and therefore, elected the GPL Version 2 license, then the option applies
-  only if the new code is made subject to such option by the copyright
-  holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html
       PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
@@ -49,8 +54,17 @@
 <body>
     <h:form id="form">
         <h:commandButton id="attr" value="Dummy" action="#{attrsBean.eval}">
-            <f:ajax execute="@this" render="@none"/>
+            <f:ajax execute="@this" render="@none" delay="none" />
+        </h:commandButton>
+
+        <h:commandButton id="attrImplicitDelay" value="Dummy Implicit Delay" action="#{attrsBean.eval}">
+            <f:ajax execute="@this" render="@none" />
         </h:commandButton>
+
+        <h:commandButton id="attrDelay" value="Dummy Delay" action="#{attrsBean.eval}">
+            <f:ajax execute="@this" render="@none" delay="200" />
+        </h:commandButton>
+
     </h:form>
 </body>
 </html>
diff --git a/jsf-ri/systest/web/ajax/ajaxCount.xhtml b/jsf-ri/systest/web/ajax/ajaxCount.xhtml
index 346fdb8..7688d1b 100644
--- a/jsf-ri/systest/web/ajax/ajaxCount.xhtml
+++ b/jsf-ri/systest/web/ajax/ajaxCount.xhtml
@@ -1,40 +1,45 @@
 <!--
 
-  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
-  Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
 
-  The contents of this file are subject to the terms of either the GNU
-  General Public License Version 2 only ("GPL") or the Common Development
-  and Distribution License("CDDL") (collectively, the "License").  You
-  may not use this file except in compliance with the License. You can obtain
-  a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
-  or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
-  language governing permissions and limitations under the License.
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
 
-  When distributing the software, include this License Header Notice in each
-  file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
-  Sun designates this particular file as subject to the "Classpath" exception
-  as provided by Sun in the GPL Version 2 section of the License file that
-  accompanied this code.  If applicable, add the following below the License
-  Header, with the fields enclosed by brackets [] replaced by your own
-  identifying information: "Portions Copyrighted [year]
-  [name of copyright owner]"
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
 
-  Contributor(s):
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
 
-  If you wish your version of this file to be governed by only the CDDL or
-  only the GPL Version 2, indicate your decision by adding "[Contributor]
-  elects to include this software in this distribution under the [CDDL or GPL
-  Version 2] license."  If you don't indicate a single choice of license, a
-  recipient has the option to distribute your version of this file under
-  either the CDDL, the GPL Version 2 or to extend the choice of license to
-  its licensees as provided above.  However, if you add GPL Version 2 code
-  and therefore, elected the GPL Version 2 license, then the option applies
-  only if the new code is made subject to such option by the copyright
-  holder.
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html
         PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
@@ -64,4 +69,4 @@
     <h:outputText id="out2" value="#{ajaxrequest.count}"/>
 
 </h:body>
-</html>
\ No newline at end of file
+</html>
diff --git a/jsf-ri/systest/web/ajax/ajaxEcho.xhtml b/jsf-ri/systest/web/ajax/ajaxEcho.xhtml
index 6b271db..75508d2 100644
--- a/jsf-ri/systest/web/ajax/ajaxEcho.xhtml
+++ b/jsf-ri/systest/web/ajax/ajaxEcho.xhtml
@@ -1,40 +1,45 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
- Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
 
- Contributor(s):
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"
@@ -49,7 +54,7 @@
 <h:body>
     <h:form id="form1">    <!-- Note that unlike previous examples, prependid='true' -->
         <h:outputScript name="jsf.js" library="javax.faces" target="head"/>
-        <h:outputScript name="ajax/echo1.js" target="head"/>
+        <h:outputScript name="echo1.js" library="ajax" target="head"/>
         <h:outputStylesheet name="stylesheet.css"/>
 
         Output: <h:outputText id="out1" value="#{ajaxecho.str}"/>
diff --git a/jsf-ri/systest/web/ajax/ajaxEchoArea.xhtml b/jsf-ri/systest/web/ajax/ajaxEchoArea.xhtml
index 23938ed..ce5fdb9 100644
--- a/jsf-ri/systest/web/ajax/ajaxEchoArea.xhtml
+++ b/jsf-ri/systest/web/ajax/ajaxEchoArea.xhtml
@@ -1,40 +1,45 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"
@@ -48,9 +53,10 @@
 <h:body>
     <h:form id="form1">
         Output: <h:outputText id="out1" value="#{ajaxecho.str}"/>
+        Output: <h:outputText id="out2" value="#{ajaxecho.str}"/>
         <br/>
         Input: <h:inputTextarea id="in1" value="#{ajaxecho.str}">
-            <f:ajax render="out1"/>
+            <f:ajax render="out1  out2"/>
         </h:inputTextarea>
         <br/>
         <h:commandButton id="button1" value="Echo" type="button"/>
diff --git a/jsf-ri/systest/web/ajax/ajaxError.xhtml b/jsf-ri/systest/web/ajax/ajaxError.xhtml
index b4654f9..a993ab4 100644
--- a/jsf-ri/systest/web/ajax/ajaxError.xhtml
+++ b/jsf-ri/systest/web/ajax/ajaxError.xhtml
@@ -1,41 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
-      <!--
-
-  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
-  Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
-
-  The contents of this file are subject to the terms of either the GNU
-  General Public License Version 2 only ("GPL") or the Common Development
-  and Distribution License("CDDL") (collectively, the "License").  You
-  may not use this file except in compliance with the License. You can obtain
-  a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
-  or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
-  language governing permissions and limitations under the License.
-
-  When distributing the software, include this License Header Notice in each
-  file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
-  Sun designates this particular file as subject to the "Classpath" exception
-  as provided by Sun in the GPL Version 2 section of the License file that
-  accompanied this code.  If applicable, add the following below the License
-  Header, with the fields enclosed by brackets [] replaced by your own
-  identifying information: "Portions Copyrighted [year]
-  [name of copyright owner]"
-
-  Contributor(s):
-
-  If you wish your version of this file to be governed by only the CDDL or
-  only the GPL Version 2, indicate your decision by adding "[Contributor]
-  elects to include this software in this distribution under the [CDDL or GPL
-  Version 2] license."  If you don't indicate a single choice of license, a
-  recipient has the option to distribute your version of this file under
-  either the CDDL, the GPL Version 2 or to extend the choice of license to
-  its licensees as provided above.  However, if you add GPL Version 2 code
-  and therefore, elected the GPL Version 2 license, then the option applies
-  only if the new code is made subject to such option by the copyright
-  holder.
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html
       PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
diff --git a/jsf-ri/systest/web/ajax/ajaxError2.xhtml b/jsf-ri/systest/web/ajax/ajaxError2.xhtml
index 80438e9..1954287 100644
--- a/jsf-ri/systest/web/ajax/ajaxError2.xhtml
+++ b/jsf-ri/systest/web/ajax/ajaxError2.xhtml
@@ -1,41 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
-      <!--
-
-  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
-  Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
-
-  The contents of this file are subject to the terms of either the GNU
-  General Public License Version 2 only ("GPL") or the Common Development
-  and Distribution License("CDDL") (collectively, the "License").  You
-  may not use this file except in compliance with the License. You can obtain
-  a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
-  or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
-  language governing permissions and limitations under the License.
-
-  When distributing the software, include this License Header Notice in each
-  file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
-  Sun designates this particular file as subject to the "Classpath" exception
-  as provided by Sun in the GPL Version 2 section of the License file that
-  accompanied this code.  If applicable, add the following below the License
-  Header, with the fields enclosed by brackets [] replaced by your own
-  identifying information: "Portions Copyrighted [year]
-  [name of copyright owner]"
-
-  Contributor(s):
-
-  If you wish your version of this file to be governed by only the CDDL or
-  only the GPL Version 2, indicate your decision by adding "[Contributor]
-  elects to include this software in this distribution under the [CDDL or GPL
-  Version 2] license."  If you don't indicate a single choice of license, a
-  recipient has the option to distribute your version of this file under
-  either the CDDL, the GPL Version 2 or to extend the choice of license to
-  its licensees as provided above.  However, if you add GPL Version 2 code
-  and therefore, elected the GPL Version 2 license, then the option applies
-  only if the new code is made subject to such option by the copyright
-  holder.
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html
       PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
@@ -54,4 +59,4 @@
         </h:commandButton>
     </h:form>
 </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/jsf-ri/systest/web/ajax/ajaxError3.xhtml b/jsf-ri/systest/web/ajax/ajaxError3.xhtml
index bef34fc..ced3eaf 100644
--- a/jsf-ri/systest/web/ajax/ajaxError3.xhtml
+++ b/jsf-ri/systest/web/ajax/ajaxError3.xhtml
@@ -1,41 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
-      <!--
+<!--
 
-  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
-  Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
 
-  The contents of this file are subject to the terms of either the GNU
-  General Public License Version 2 only ("GPL") or the Common Development
-  and Distribution License("CDDL") (collectively, the "License").  You
-  may not use this file except in compliance with the License. You can obtain
-  a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
-  or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
-  language governing permissions and limitations under the License.
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
 
-  When distributing the software, include this License Header Notice in each
-  file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
-  Sun designates this particular file as subject to the "Classpath" exception
-  as provided by Sun in the GPL Version 2 section of the License file that
-  accompanied this code.  If applicable, add the following below the License
-  Header, with the fields enclosed by brackets [] replaced by your own
-  identifying information: "Portions Copyrighted [year]
-  [name of copyright owner]"
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
 
-  Contributor(s):
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
 
-  If you wish your version of this file to be governed by only the CDDL or
-  only the GPL Version 2, indicate your decision by adding "[Contributor]
-  elects to include this software in this distribution under the [CDDL or GPL
-  Version 2] license."  If you don't indicate a single choice of license, a
-  recipient has the option to distribute your version of this file under
-  either the CDDL, the GPL Version 2 or to extend the choice of license to
-  its licensees as provided above.  However, if you add GPL Version 2 code
-  and therefore, elected the GPL Version 2 license, then the option applies
-  only if the new code is made subject to such option by the copyright
-  holder.
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html
       PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
diff --git a/jsf-ri/systest/web/ajax/ajaxEval.xhtml b/jsf-ri/systest/web/ajax/ajaxEval.xhtml
index 346ed31..f225498 100644
--- a/jsf-ri/systest/web/ajax/ajaxEval.xhtml
+++ b/jsf-ri/systest/web/ajax/ajaxEval.xhtml
@@ -1,41 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
-      <!--
-
-  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
-  Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
-
-  The contents of this file are subject to the terms of either the GNU
-  General Public License Version 2 only ("GPL") or the Common Development
-  and Distribution License("CDDL") (collectively, the "License").  You
-  may not use this file except in compliance with the License. You can obtain
-  a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
-  or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
-  language governing permissions and limitations under the License.
-
-  When distributing the software, include this License Header Notice in each
-  file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
-  Sun designates this particular file as subject to the "Classpath" exception
-  as provided by Sun in the GPL Version 2 section of the License file that
-  accompanied this code.  If applicable, add the following below the License
-  Header, with the fields enclosed by brackets [] replaced by your own
-  identifying information: "Portions Copyrighted [year]
-  [name of copyright owner]"
-
-  Contributor(s):
-
-  If you wish your version of this file to be governed by only the CDDL or
-  only the GPL Version 2, indicate your decision by adding "[Contributor]
-  elects to include this software in this distribution under the [CDDL or GPL
-  Version 2] license."  If you don't indicate a single choice of license, a
-  recipient has the option to distribute your version of this file under
-  either the CDDL, the GPL Version 2 or to extend the choice of license to
-  its licensees as provided above.  However, if you add GPL Version 2 code
-  and therefore, elected the GPL Version 2 license, then the option applies
-  only if the new code is made subject to such option by the copyright
-  holder.
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html
       PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
diff --git a/jsf-ri/systest/web/ajax/ajaxEvent.xhtml b/jsf-ri/systest/web/ajax/ajaxEvent.xhtml
index 414e2ae..896f917 100644
--- a/jsf-ri/systest/web/ajax/ajaxEvent.xhtml
+++ b/jsf-ri/systest/web/ajax/ajaxEvent.xhtml
@@ -1,40 +1,45 @@
 <!--
 
-  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
-  Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
 
-  The contents of this file are subject to the terms of either the GNU
-  General Public License Version 2 only ("GPL") or the Common Development
-  and Distribution License("CDDL") (collectively, the "License").  You
-  may not use this file except in compliance with the License. You can obtain
-  a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
-  or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
-  language governing permissions and limitations under the License.
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
 
-  When distributing the software, include this License Header Notice in each
-  file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
-  Sun designates this particular file as subject to the "Classpath" exception
-  as provided by Sun in the GPL Version 2 section of the License file that
-  accompanied this code.  If applicable, add the following below the License
-  Header, with the fields enclosed by brackets [] replaced by your own
-  identifying information: "Portions Copyrighted [year]
-  [name of copyright owner]"
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
 
-  Contributor(s):
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
 
-  If you wish your version of this file to be governed by only the CDDL or
-  only the GPL Version 2, indicate your decision by adding "[Contributor]
-  elects to include this software in this distribution under the [CDDL or GPL
-  Version 2] license."  If you don't indicate a single choice of license, a
-  recipient has the option to distribute your version of this file under
-  either the CDDL, the GPL Version 2 or to extend the choice of license to
-  its licensees as provided above.  However, if you add GPL Version 2 code
-  and therefore, elected the GPL Version 2 license, then the option applies
-  only if the new code is made subject to such option by the copyright
-  holder.
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html
         PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
diff --git a/jsf-ri/systest/web/ajax/ajaxIncludedScript.xhtml b/jsf-ri/systest/web/ajax/ajaxIncludedScript.xhtml
index de6d3ca..e056364 100644
--- a/jsf-ri/systest/web/ajax/ajaxIncludedScript.xhtml
+++ b/jsf-ri/systest/web/ajax/ajaxIncludedScript.xhtml
@@ -1,40 +1,45 @@
 <!--
 
-  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
-  Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
 
-  The contents of this file are subject to the terms of either the GNU
-  General Public License Version 2 only ("GPL") or the Common Development
-  and Distribution License("CDDL") (collectively, the "License").  You
-  may not use this file except in compliance with the License. You can obtain
-  a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
-  or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
-  language governing permissions and limitations under the License.
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
 
-  When distributing the software, include this License Header Notice in each
-  file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
-  Sun designates this particular file as subject to the "Classpath" exception
-  as provided by Sun in the GPL Version 2 section of the License file that
-  accompanied this code.  If applicable, add the following below the License
-  Header, with the fields enclosed by brackets [] replaced by your own
-  identifying information: "Portions Copyrighted [year]
-  [name of copyright owner]"
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
 
-  Contributor(s):
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
 
-  If you wish your version of this file to be governed by only the CDDL or
-  only the GPL Version 2, indicate your decision by adding "[Contributor]
-  elects to include this software in this distribution under the [CDDL or GPL
-  Version 2] license."  If you don't indicate a single choice of license, a
-  recipient has the option to distribute your version of this file under
-  either the CDDL, the GPL Version 2 or to extend the choice of license to
-  its licensees as provided above.  However, if you add GPL Version 2 code
-  and therefore, elected the GPL Version 2 license, then the option applies
-  only if the new code is made subject to such option by the copyright
-  holder.
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html
         PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
@@ -85,4 +90,4 @@ var statusUpdate = function statusUpdate(data) {
         <textarea id="statusArea" cols="40" rows="10" readonly="readonly" />
     </p>
 </h:body>
-</html>
\ No newline at end of file
+</html>
diff --git a/jsf-ri/systest/web/ajax/ajaxIncludedText.xhtml b/jsf-ri/systest/web/ajax/ajaxIncludedText.xhtml
index 65705bd..ace6acb 100644
--- a/jsf-ri/systest/web/ajax/ajaxIncludedText.xhtml
+++ b/jsf-ri/systest/web/ajax/ajaxIncludedText.xhtml
@@ -1,40 +1,45 @@
 <!--
 
-  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
-  Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
 
-  The contents of this file are subject to the terms of either the GNU
-  General Public License Version 2 only ("GPL") or the Common Development
-  and Distribution License("CDDL") (collectively, the "License").  You
-  may not use this file except in compliance with the License. You can obtain
-  a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
-  or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
-  language governing permissions and limitations under the License.
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
 
-  When distributing the software, include this License Header Notice in each
-  file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
-  Sun designates this particular file as subject to the "Classpath" exception
-  as provided by Sun in the GPL Version 2 section of the License file that
-  accompanied this code.  If applicable, add the following below the License
-  Header, with the fields enclosed by brackets [] replaced by your own
-  identifying information: "Portions Copyrighted [year]
-  [name of copyright owner]"
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
 
-  Contributor(s):
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
 
-  If you wish your version of this file to be governed by only the CDDL or
-  only the GPL Version 2, indicate your decision by adding "[Contributor]
-  elects to include this software in this distribution under the [CDDL or GPL
-  Version 2] license."  If you don't indicate a single choice of license, a
-  recipient has the option to distribute your version of this file under
-  either the CDDL, the GPL Version 2 or to extend the choice of license to
-  its licensees as provided above.  However, if you add GPL Version 2 code
-  and therefore, elected the GPL Version 2 license, then the option applies
-  only if the new code is made subject to such option by the copyright
-  holder.
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html
         PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
@@ -69,4 +74,4 @@
         Explicit parameters:
     </h:form>
 </h:body>
-</html>
\ No newline at end of file
+</html>
diff --git a/jsf-ri/systest/web/ajax/ajaxInsertDelete.xhtml b/jsf-ri/systest/web/ajax/ajaxInsertDelete.xhtml
index 095cdc9..6736c3c 100644
--- a/jsf-ri/systest/web/ajax/ajaxInsertDelete.xhtml
+++ b/jsf-ri/systest/web/ajax/ajaxInsertDelete.xhtml
@@ -1,41 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
-  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
-  Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
+    Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
 
-  The contents of this file are subject to the terms of either the GNU
-  General Public License Version 2 only ("GPL") or the Common Development
-  and Distribution License("CDDL") (collectively, the "License").  You
-  may not use this file except in compliance with the License. You can obtain
-  a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
-  or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
-  language governing permissions and limitations under the License.
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
 
-  When distributing the software, include this License Header Notice in each
-  file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
-  Sun designates this particular file as subject to the "Classpath" exception
-  as provided by Sun in the GPL Version 2 section of the License file that
-  accompanied this code.  If applicable, add the following below the License
-  Header, with the fields enclosed by brackets [] replaced by your own
-  identifying information: "Portions Copyrighted [year]
-  [name of copyright owner]"
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
 
-  Contributor(s):
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
 
-  If you wish your version of this file to be governed by only the CDDL or
-  only the GPL Version 2, indicate your decision by adding "[Contributor]
-  elects to include this software in this distribution under the [CDDL or GPL
-  Version 2] license."  If you don't indicate a single choice of license, a
-  recipient has the option to distribute your version of this file under
-  either the CDDL, the GPL Version 2 or to extend the choice of license to
-  its licensees as provided above.  However, if you add GPL Version 2 code
-  and therefore, elected the GPL Version 2 license, then the option applies
-  only if the new code is made subject to such option by the copyright
-  holder.
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html
       PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
@@ -63,5 +68,9 @@
     </h:form>
     <br/>
     <hr id="hr" />
+    <br/>
+    <table border="1"><tbody>
+    <tr id="tablecenter"><td>TABLE CENTER</td></tr>
+    </tbody></table>
 </h:body>
-</html>
\ No newline at end of file
+</html>
diff --git a/jsf-ri/systest/web/ajax/ajaxInvalidXML.xhtml b/jsf-ri/systest/web/ajax/ajaxInvalidXML.xhtml
index ffbed6e..7866c17 100644
--- a/jsf-ri/systest/web/ajax/ajaxInvalidXML.xhtml
+++ b/jsf-ri/systest/web/ajax/ajaxInvalidXML.xhtml
@@ -1,41 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
-  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
-  Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
-
-  The contents of this file are subject to the terms of either the GNU
-  General Public License Version 2 only ("GPL") or the Common Development
-  and Distribution License("CDDL") (collectively, the "License").  You
-  may not use this file except in compliance with the License. You can obtain
-  a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
-  or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
-  language governing permissions and limitations under the License.
-
-  When distributing the software, include this License Header Notice in each
-  file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
-  Sun designates this particular file as subject to the "Classpath" exception
-  as provided by Sun in the GPL Version 2 section of the License file that
-  accompanied this code.  If applicable, add the following below the License
-  Header, with the fields enclosed by brackets [] replaced by your own
-  identifying information: "Portions Copyrighted [year]
-  [name of copyright owner]"
-
-  Contributor(s):
-
-  If you wish your version of this file to be governed by only the CDDL or
-  only the GPL Version 2, indicate your decision by adding "[Contributor]
-  elects to include this software in this distribution under the [CDDL or GPL
-  Version 2] license."  If you don't indicate a single choice of license, a
-  recipient has the option to distribute your version of this file under
-  either the CDDL, the GPL Version 2 or to extend the choice of license to
-  its licensees as provided above.  However, if you add GPL Version 2 code
-  and therefore, elected the GPL Version 2 license, then the option applies
-  only if the new code is made subject to such option by the copyright
-  holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html
       PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
@@ -53,4 +58,4 @@
         </h:commandButton>
     </h:form>
 </h:body>
-</html>
\ No newline at end of file
+</html>
diff --git a/jsf-ri/systest/web/ajax/ajaxMalformedXML.xhtml b/jsf-ri/systest/web/ajax/ajaxMalformedXML.xhtml
index 4699749..8113809 100644
--- a/jsf-ri/systest/web/ajax/ajaxMalformedXML.xhtml
+++ b/jsf-ri/systest/web/ajax/ajaxMalformedXML.xhtml
@@ -1,41 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
-      <!--
-
-  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
-  Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
-
-  The contents of this file are subject to the terms of either the GNU
-  General Public License Version 2 only ("GPL") or the Common Development
-  and Distribution License("CDDL") (collectively, the "License").  You
-  may not use this file except in compliance with the License. You can obtain
-  a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
-  or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
-  language governing permissions and limitations under the License.
-
-  When distributing the software, include this License Header Notice in each
-  file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
-  Sun designates this particular file as subject to the "Classpath" exception
-  as provided by Sun in the GPL Version 2 section of the License file that
-  accompanied this code.  If applicable, add the following below the License
-  Header, with the fields enclosed by brackets [] replaced by your own
-  identifying information: "Portions Copyrighted [year]
-  [name of copyright owner]"
-
-  Contributor(s):
-
-  If you wish your version of this file to be governed by only the CDDL or
-  only the GPL Version 2, indicate your decision by adding "[Contributor]
-  elects to include this software in this distribution under the [CDDL or GPL
-  Version 2] license."  If you don't indicate a single choice of license, a
-  recipient has the option to distribute your version of this file under
-  either the CDDL, the GPL Version 2 or to extend the choice of license to
-  its licensees as provided above.  However, if you add GPL Version 2 code
-  and therefore, elected the GPL Version 2 license, then the option applies
-  only if the new code is made subject to such option by the copyright
-  holder.
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html
       PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
diff --git a/jsf-ri/systest/web/ajax/ajaxMessage.xhtml b/jsf-ri/systest/web/ajax/ajaxMessage.xhtml
index e20c8d2..d119899 100644
--- a/jsf-ri/systest/web/ajax/ajaxMessage.xhtml
+++ b/jsf-ri/systest/web/ajax/ajaxMessage.xhtml
@@ -1,40 +1,45 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
- Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
 
- Contributor(s):
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html
         PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
@@ -112,4 +117,4 @@
     </h:form>
 
 </h:body>
-</html>
\ No newline at end of file
+</html>
diff --git a/jsf-ri/systest/web/ajax/ajaxMultiform.xhtml b/jsf-ri/systest/web/ajax/ajaxMultiform.xhtml
index 7335d39..fc2e653 100644
--- a/jsf-ri/systest/web/ajax/ajaxMultiform.xhtml
+++ b/jsf-ri/systest/web/ajax/ajaxMultiform.xhtml
@@ -1,41 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
-  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
-  Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
 
-  The contents of this file are subject to the terms of either the GNU
-  General Public License Version 2 only ("GPL") or the Common Development
-  and Distribution License("CDDL") (collectively, the "License").  You
-  may not use this file except in compliance with the License. You can obtain
-  a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
-  or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
-  language governing permissions and limitations under the License.
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
 
-  When distributing the software, include this License Header Notice in each
-  file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
-  Sun designates this particular file as subject to the "Classpath" exception
-  as provided by Sun in the GPL Version 2 section of the License file that
-  accompanied this code.  If applicable, add the following below the License
-  Header, with the fields enclosed by brackets [] replaced by your own
-  identifying information: "Portions Copyrighted [year]
-  [name of copyright owner]"
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
 
-  Contributor(s):
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
 
-  If you wish your version of this file to be governed by only the CDDL or
-  only the GPL Version 2, indicate your decision by adding "[Contributor]
-  elects to include this software in this distribution under the [CDDL or GPL
-  Version 2] license."  If you don't indicate a single choice of license, a
-  recipient has the option to distribute your version of this file under
-  either the CDDL, the GPL Version 2 or to extend the choice of license to
-  its licensees as provided above.  However, if you add GPL Version 2 code
-  and therefore, elected the GPL Version 2 license, then the option applies
-  only if the new code is made subject to such option by the copyright
-  holder.
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html
         PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
@@ -92,4 +97,4 @@
     <h:outputText id="out2" value="#{ajaxrequest.count}"/>
 
 </h:body>
-</html>
\ No newline at end of file
+</html>
diff --git a/jsf-ri/systest/web/ajax/ajaxProjectStage.xhtml b/jsf-ri/systest/web/ajax/ajaxProjectStage.xhtml
index 0cc15ee..c899a2a 100644
--- a/jsf-ri/systest/web/ajax/ajaxProjectStage.xhtml
+++ b/jsf-ri/systest/web/ajax/ajaxProjectStage.xhtml
@@ -1,40 +1,45 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"
@@ -57,4 +62,4 @@
     </script>
 
 </h:body>
-</html>
\ No newline at end of file
+</html>
diff --git a/jsf-ri/systest/web/ajax/ajaxRedirect.xhtml b/jsf-ri/systest/web/ajax/ajaxRedirect.xhtml
index 193c57a..db79416 100644
--- a/jsf-ri/systest/web/ajax/ajaxRedirect.xhtml
+++ b/jsf-ri/systest/web/ajax/ajaxRedirect.xhtml
@@ -1,41 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
-      <!--
-
-  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
-  Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
-
-  The contents of this file are subject to the terms of either the GNU
-  General Public License Version 2 only ("GPL") or the Common Development
-  and Distribution License("CDDL") (collectively, the "License").  You
-  may not use this file except in compliance with the License. You can obtain
-  a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
-  or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
-  language governing permissions and limitations under the License.
-
-  When distributing the software, include this License Header Notice in each
-  file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
-  Sun designates this particular file as subject to the "Classpath" exception
-  as provided by Sun in the GPL Version 2 section of the License file that
-  accompanied this code.  If applicable, add the following below the License
-  Header, with the fields enclosed by brackets [] replaced by your own
-  identifying information: "Portions Copyrighted [year]
-  [name of copyright owner]"
-
-  Contributor(s):
-
-  If you wish your version of this file to be governed by only the CDDL or
-  only the GPL Version 2, indicate your decision by adding "[Contributor]
-  elects to include this software in this distribution under the [CDDL or GPL
-  Version 2] license."  If you don't indicate a single choice of license, a
-  recipient has the option to distribute your version of this file under
-  either the CDDL, the GPL Version 2 or to extend the choice of license to
-  its licensees as provided above.  However, if you add GPL Version 2 code
-  and therefore, elected the GPL Version 2 license, then the option applies
-  only if the new code is made subject to such option by the copyright
-  holder.
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html
       PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
@@ -53,4 +58,4 @@
         </h:commandButton>
     </h:form>
 </h:body>
-</html>
\ No newline at end of file
+</html>
diff --git a/jsf-ri/systest/web/ajax/ajaxRequestDefaultsButton.xhtml b/jsf-ri/systest/web/ajax/ajaxRequestDefaultsButton.xhtml
index 19db7a5..6129b86 100644
--- a/jsf-ri/systest/web/ajax/ajaxRequestDefaultsButton.xhtml
+++ b/jsf-ri/systest/web/ajax/ajaxRequestDefaultsButton.xhtml
@@ -1,40 +1,45 @@
 <!--
 
-  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
-  Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
 
-  The contents of this file are subject to the terms of either the GNU
-  General Public License Version 2 only ("GPL") or the Common Development
-  and Distribution License("CDDL") (collectively, the "License").  You
-  may not use this file except in compliance with the License. You can obtain
-  a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
-  or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
-  language governing permissions and limitations under the License.
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
 
-  When distributing the software, include this License Header Notice in each
-  file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
-  Sun designates this particular file as subject to the "Classpath" exception
-  as provided by Sun in the GPL Version 2 section of the License file that
-  accompanied this code.  If applicable, add the following below the License
-  Header, with the fields enclosed by brackets [] replaced by your own
-  identifying information: "Portions Copyrighted [year]
-  [name of copyright owner]"
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
 
-  Contributor(s):
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
 
-  If you wish your version of this file to be governed by only the CDDL or
-  only the GPL Version 2, indicate your decision by adding "[Contributor]
-  elects to include this software in this distribution under the [CDDL or GPL
-  Version 2] license."  If you don't indicate a single choice of license, a
-  recipient has the option to distribute your version of this file under
-  either the CDDL, the GPL Version 2 or to extend the choice of license to
-  its licensees as provided above.  However, if you add GPL Version 2 code
-  and therefore, elected the GPL Version 2 license, then the option applies
-  only if the new code is made subject to such option by the copyright
-  holder.
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html
         PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
@@ -85,4 +90,4 @@
     <h:outputText id="out3" value="#{ajaxrequest.count}"/>
 
 </h:body>
-</html>
\ No newline at end of file
+</html>
diff --git a/jsf-ri/systest/web/ajax/ajaxRequestDefaultsButtonNoPrepend.xhtml b/jsf-ri/systest/web/ajax/ajaxRequestDefaultsButtonNoPrepend.xhtml
index b286d38..6bdac49 100644
--- a/jsf-ri/systest/web/ajax/ajaxRequestDefaultsButtonNoPrepend.xhtml
+++ b/jsf-ri/systest/web/ajax/ajaxRequestDefaultsButtonNoPrepend.xhtml
@@ -1,41 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
-  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
-  Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
 
-  The contents of this file are subject to the terms of either the GNU
-  General Public License Version 2 only ("GPL") or the Common Development
-  and Distribution License("CDDL") (collectively, the "License").  You
-  may not use this file except in compliance with the License. You can obtain
-  a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
-  or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
-  language governing permissions and limitations under the License.
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
 
-  When distributing the software, include this License Header Notice in each
-  file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
-  Sun designates this particular file as subject to the "Classpath" exception
-  as provided by Sun in the GPL Version 2 section of the License file that
-  accompanied this code.  If applicable, add the following below the License
-  Header, with the fields enclosed by brackets [] replaced by your own
-  identifying information: "Portions Copyrighted [year]
-  [name of copyright owner]"
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
 
-  Contributor(s):
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
 
-  If you wish your version of this file to be governed by only the CDDL or
-  only the GPL Version 2, indicate your decision by adding "[Contributor]
-  elects to include this software in this distribution under the [CDDL or GPL
-  Version 2] license."  If you don't indicate a single choice of license, a
-  recipient has the option to distribute your version of this file under
-  either the CDDL, the GPL Version 2 or to extend the choice of license to
-  its licensees as provided above.  However, if you add GPL Version 2 code
-  and therefore, elected the GPL Version 2 license, then the option applies
-  only if the new code is made subject to such option by the copyright
-  holder.
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html
         PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
@@ -87,4 +92,4 @@
     <h:outputText id="out3" value="#{ajaxrequest.count}"/>
 
 </h:body>
-</html>
\ No newline at end of file
+</html>
diff --git a/jsf-ri/systest/web/ajax/ajaxRequestDefaultsEdit.xhtml b/jsf-ri/systest/web/ajax/ajaxRequestDefaultsEdit.xhtml
index 16416c1..fc05a4f 100644
--- a/jsf-ri/systest/web/ajax/ajaxRequestDefaultsEdit.xhtml
+++ b/jsf-ri/systest/web/ajax/ajaxRequestDefaultsEdit.xhtml
@@ -1,41 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
-  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
-  Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
 
-  The contents of this file are subject to the terms of either the GNU
-  General Public License Version 2 only ("GPL") or the Common Development
-  and Distribution License("CDDL") (collectively, the "License").  You
-  may not use this file except in compliance with the License. You can obtain
-  a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
-  or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
-  language governing permissions and limitations under the License.
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
 
-  When distributing the software, include this License Header Notice in each
-  file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
-  Sun designates this particular file as subject to the "Classpath" exception
-  as provided by Sun in the GPL Version 2 section of the License file that
-  accompanied this code.  If applicable, add the following below the License
-  Header, with the fields enclosed by brackets [] replaced by your own
-  identifying information: "Portions Copyrighted [year]
-  [name of copyright owner]"
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
 
-  Contributor(s):
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
 
-  If you wish your version of this file to be governed by only the CDDL or
-  only the GPL Version 2, indicate your decision by adding "[Contributor]
-  elects to include this software in this distribution under the [CDDL or GPL
-  Version 2] license."  If you don't indicate a single choice of license, a
-  recipient has the option to distribute your version of this file under
-  either the CDDL, the GPL Version 2 or to extend the choice of license to
-  its licensees as provided above.  However, if you add GPL Version 2 code
-  and therefore, elected the GPL Version 2 license, then the option applies
-  only if the new code is made subject to such option by the copyright
-  holder.
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html
         PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
diff --git a/jsf-ri/systest/web/ajax/ajaxRequestDefaultsEditNoPrepend.xhtml b/jsf-ri/systest/web/ajax/ajaxRequestDefaultsEditNoPrepend.xhtml
index c16f5b1..f999a6b 100644
--- a/jsf-ri/systest/web/ajax/ajaxRequestDefaultsEditNoPrepend.xhtml
+++ b/jsf-ri/systest/web/ajax/ajaxRequestDefaultsEditNoPrepend.xhtml
@@ -1,41 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
-  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
-  Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
 
-  The contents of this file are subject to the terms of either the GNU
-  General Public License Version 2 only ("GPL") or the Common Development
-  and Distribution License("CDDL") (collectively, the "License").  You
-  may not use this file except in compliance with the License. You can obtain
-  a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
-  or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
-  language governing permissions and limitations under the License.
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
 
-  When distributing the software, include this License Header Notice in each
-  file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
-  Sun designates this particular file as subject to the "Classpath" exception
-  as provided by Sun in the GPL Version 2 section of the License file that
-  accompanied this code.  If applicable, add the following below the License
-  Header, with the fields enclosed by brackets [] replaced by your own
-  identifying information: "Portions Copyrighted [year]
-  [name of copyright owner]"
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
 
-  Contributor(s):
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
 
-  If you wish your version of this file to be governed by only the CDDL or
-  only the GPL Version 2, indicate your decision by adding "[Contributor]
-  elects to include this software in this distribution under the [CDDL or GPL
-  Version 2] license."  If you don't indicate a single choice of license, a
-  recipient has the option to distribute your version of this file under
-  either the CDDL, the GPL Version 2 or to extend the choice of license to
-  its licensees as provided above.  However, if you add GPL Version 2 code
-  and therefore, elected the GPL Version 2 license, then the option applies
-  only if the new code is made subject to such option by the copyright
-  holder.
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html
         PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
diff --git a/jsf-ri/systest/web/ajax/ajaxRequestHeader.xhtml b/jsf-ri/systest/web/ajax/ajaxRequestHeader.xhtml
new file mode 100644
index 0000000..8d06547
--- /dev/null
+++ b/jsf-ri/systest/web/ajax/ajaxRequestHeader.xhtml
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+<h:head>
+    <title>Ajax Request Header</title>
+</h:head>
+<body>
+    <h:form id="form">
+        <h:commandButton id="req" value="Get Request Header Info">
+            <f:ajax execute="@this" render="out"/>
+        </h:commandButton>
+        <h:outputText id="out" value="#{ajaxrequest.contentType}"/>
+    </h:form>
+</body>
+</html>
diff --git a/jsf-ri/systest/web/ajax/ajaxRequestMultiRender.xhtml b/jsf-ri/systest/web/ajax/ajaxRequestMultiRender.xhtml
index aa195e6..ed3bda5 100644
--- a/jsf-ri/systest/web/ajax/ajaxRequestMultiRender.xhtml
+++ b/jsf-ri/systest/web/ajax/ajaxRequestMultiRender.xhtml
@@ -1,41 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
-  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
-  Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
 
-  The contents of this file are subject to the terms of either the GNU
-  General Public License Version 2 only ("GPL") or the Common Development
-  and Distribution License("CDDL") (collectively, the "License").  You
-  may not use this file except in compliance with the License. You can obtain
-  a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
-  or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
-  language governing permissions and limitations under the License.
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
 
-  When distributing the software, include this License Header Notice in each
-  file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
-  Sun designates this particular file as subject to the "Classpath" exception
-  as provided by Sun in the GPL Version 2 section of the License file that
-  accompanied this code.  If applicable, add the following below the License
-  Header, with the fields enclosed by brackets [] replaced by your own
-  identifying information: "Portions Copyrighted [year]
-  [name of copyright owner]"
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
 
-  Contributor(s):
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
 
-  If you wish your version of this file to be governed by only the CDDL or
-  only the GPL Version 2, indicate your decision by adding "[Contributor]
-  elects to include this software in this distribution under the [CDDL or GPL
-  Version 2] license."  If you don't indicate a single choice of license, a
-  recipient has the option to distribute your version of this file under
-  either the CDDL, the GPL Version 2 or to extend the choice of license to
-  its licensees as provided above.  However, if you add GPL Version 2 code
-  and therefore, elected the GPL Version 2 license, then the option applies
-  only if the new code is made subject to such option by the copyright
-  holder.
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html
         PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
@@ -70,4 +75,4 @@
     <h:outputText id="out4" value="#{ajaxcount.count4}"/>
 
 </h:body>
-</html>
\ No newline at end of file
+</html>
diff --git a/jsf-ri/systest/web/ajax/ajaxRerenderOtherForm.xhtml b/jsf-ri/systest/web/ajax/ajaxRerenderOtherForm.xhtml
index 0740c79..489332e 100644
--- a/jsf-ri/systest/web/ajax/ajaxRerenderOtherForm.xhtml
+++ b/jsf-ri/systest/web/ajax/ajaxRerenderOtherForm.xhtml
@@ -1,40 +1,45 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
- Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
 
- Contributor(s):
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html
         PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
diff --git a/jsf-ri/systest/web/ajax/ajaxSelect.xhtml b/jsf-ri/systest/web/ajax/ajaxSelect.xhtml
index 4abbf5c..da1523c 100644
--- a/jsf-ri/systest/web/ajax/ajaxSelect.xhtml
+++ b/jsf-ri/systest/web/ajax/ajaxSelect.xhtml
@@ -1,41 +1,46 @@
 <?xml version='1.0' encoding='UTF-8' ?>
 <!--
 
-  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
-  Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
 
-  The contents of this file are subject to the terms of either the GNU
-  General Public License Version 2 only ("GPL") or the Common Development
-  and Distribution License("CDDL") (collectively, the "License").  You
-  may not use this file except in compliance with the License. You can obtain
-  a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
-  or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
-  language governing permissions and limitations under the License.
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
 
-  When distributing the software, include this License Header Notice in each
-  file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
-  Sun designates this particular file as subject to the "Classpath" exception
-  as provided by Sun in the GPL Version 2 section of the License file that
-  accompanied this code.  If applicable, add the following below the License
-  Header, with the fields enclosed by brackets [] replaced by your own
-  identifying information: "Portions Copyrighted [year]
-  [name of copyright owner]"
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
 
-  Contributor(s):
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
 
-  If you wish your version of this file to be governed by only the CDDL or
-  only the GPL Version 2, indicate your decision by adding "[Contributor]
-  elects to include this software in this distribution under the [CDDL or GPL
-  Version 2] license."  If you don't indicate a single choice of license, a
-  recipient has the option to distribute your version of this file under
-  either the CDDL, the GPL Version 2 or to extend the choice of license to
-  its licensees as provided above.  However, if you add GPL Version 2 code
-  and therefore, elected the GPL Version 2 license, then the option applies
-  only if the new code is made subject to such option by the copyright
-  holder.
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:ui="http://java.sun.com/jsf/facelets"
diff --git a/jsf-ri/systest/web/ajax/ajaxTable.xhtml b/jsf-ri/systest/web/ajax/ajaxTable.xhtml
index 9a1c436..e9d2616 100644
--- a/jsf-ri/systest/web/ajax/ajaxTable.xhtml
+++ b/jsf-ri/systest/web/ajax/ajaxTable.xhtml
@@ -1,40 +1,45 @@
 <!--
 
-  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
-  Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
-
-  The contents of this file are subject to the terms of either the GNU
-  General Public License Version 2 only ("GPL") or the Common Development
-  and Distribution License("CDDL") (collectively, the "License").  You
-  may not use this file except in compliance with the License. You can obtain
-  a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
-  or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
-  language governing permissions and limitations under the License.
-
-  When distributing the software, include this License Header Notice in each
-  file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
-  Sun designates this particular file as subject to the "Classpath" exception
-  as provided by Sun in the GPL Version 2 section of the License file that
-  accompanied this code.  If applicable, add the following below the License
-  Header, with the fields enclosed by brackets [] replaced by your own
-  identifying information: "Portions Copyrighted [year]
-  [name of copyright owner]"
-
-  Contributor(s):
-
-  If you wish your version of this file to be governed by only the CDDL or
-  only the GPL Version 2, indicate your decision by adding "[Contributor]
-  elects to include this software in this distribution under the [CDDL or GPL
-  Version 2] license."  If you don't indicate a single choice of license, a
-  recipient has the option to distribute your version of this file under
-  either the CDDL, the GPL Version 2 or to extend the choice of license to
-  its licensees as provided above.  However, if you add GPL Version 2 code
-  and therefore, elected the GPL Version 2 license, then the option applies
-  only if the new code is made subject to such option by the copyright
-  holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html
       PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
diff --git a/jsf-ri/systest/web/ajax/ajaxTagCount.xhtml b/jsf-ri/systest/web/ajax/ajaxTagCount.xhtml
index 3ef5b41..72ab4a4 100644
--- a/jsf-ri/systest/web/ajax/ajaxTagCount.xhtml
+++ b/jsf-ri/systest/web/ajax/ajaxTagCount.xhtml
@@ -1,41 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
-  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
-  Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
 
-  The contents of this file are subject to the terms of either the GNU
-  General Public License Version 2 only ("GPL") or the Common Development
-  and Distribution License("CDDL") (collectively, the "License").  You
-  may not use this file except in compliance with the License. You can obtain
-  a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
-  or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
-  language governing permissions and limitations under the License.
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
 
-  When distributing the software, include this License Header Notice in each
-  file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
-  Sun designates this particular file as subject to the "Classpath" exception
-  as provided by Sun in the GPL Version 2 section of the License file that
-  accompanied this code.  If applicable, add the following below the License
-  Header, with the fields enclosed by brackets [] replaced by your own
-  identifying information: "Portions Copyrighted [year]
-  [name of copyright owner]"
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
 
-  Contributor(s):
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
 
-  If you wish your version of this file to be governed by only the CDDL or
-  only the GPL Version 2, indicate your decision by adding "[Contributor]
-  elects to include this software in this distribution under the [CDDL or GPL
-  Version 2] license."  If you don't indicate a single choice of license, a
-  recipient has the option to distribute your version of this file under
-  either the CDDL, the GPL Version 2 or to extend the choice of license to
-  its licensees as provided above.  However, if you add GPL Version 2 code
-  and therefore, elected the GPL Version 2 license, then the option applies
-  only if the new code is made subject to such option by the copyright
-  holder.
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html
         PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
@@ -65,4 +70,4 @@
     <h:outputText id="out2" value="#{ajaxrequest.count}"/>
 
 </h:body>
-</html>
\ No newline at end of file
+</html>
diff --git a/jsf-ri/systest/web/ajax/ajaxTagDefaultsButton.xhtml b/jsf-ri/systest/web/ajax/ajaxTagDefaultsButton.xhtml
index 330ec9f..bc19292 100644
--- a/jsf-ri/systest/web/ajax/ajaxTagDefaultsButton.xhtml
+++ b/jsf-ri/systest/web/ajax/ajaxTagDefaultsButton.xhtml
@@ -1,41 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
-  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
-  Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
 
-  The contents of this file are subject to the terms of either the GNU
-  General Public License Version 2 only ("GPL") or the Common Development
-  and Distribution License("CDDL") (collectively, the "License").  You
-  may not use this file except in compliance with the License. You can obtain
-  a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
-  or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
-  language governing permissions and limitations under the License.
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
 
-  When distributing the software, include this License Header Notice in each
-  file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
-  Sun designates this particular file as subject to the "Classpath" exception
-  as provided by Sun in the GPL Version 2 section of the License file that
-  accompanied this code.  If applicable, add the following below the License
-  Header, with the fields enclosed by brackets [] replaced by your own
-  identifying information: "Portions Copyrighted [year]
-  [name of copyright owner]"
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
 
-  Contributor(s):
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
 
-  If you wish your version of this file to be governed by only the CDDL or
-  only the GPL Version 2, indicate your decision by adding "[Contributor]
-  elects to include this software in this distribution under the [CDDL or GPL
-  Version 2] license."  If you don't indicate a single choice of license, a
-  recipient has the option to distribute your version of this file under
-  either the CDDL, the GPL Version 2 or to extend the choice of license to
-  its licensees as provided above.  However, if you add GPL Version 2 code
-  and therefore, elected the GPL Version 2 license, then the option applies
-  only if the new code is made subject to such option by the copyright
-  holder.
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html
         PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
@@ -86,4 +91,4 @@
     <h:outputText id="out3" value="#{ajaxrequest.count}"/>
 
 </h:body>
-</html>
\ No newline at end of file
+</html>
diff --git a/jsf-ri/systest/web/ajax/ajaxTagDefaultsButtonNoPrepend.xhtml b/jsf-ri/systest/web/ajax/ajaxTagDefaultsButtonNoPrepend.xhtml
index 2b641a9..1dfc112 100644
--- a/jsf-ri/systest/web/ajax/ajaxTagDefaultsButtonNoPrepend.xhtml
+++ b/jsf-ri/systest/web/ajax/ajaxTagDefaultsButtonNoPrepend.xhtml
@@ -1,41 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
-  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
-  Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
 
-  The contents of this file are subject to the terms of either the GNU
-  General Public License Version 2 only ("GPL") or the Common Development
-  and Distribution License("CDDL") (collectively, the "License").  You
-  may not use this file except in compliance with the License. You can obtain
-  a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
-  or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
-  language governing permissions and limitations under the License.
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
 
-  When distributing the software, include this License Header Notice in each
-  file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
-  Sun designates this particular file as subject to the "Classpath" exception
-  as provided by Sun in the GPL Version 2 section of the License file that
-  accompanied this code.  If applicable, add the following below the License
-  Header, with the fields enclosed by brackets [] replaced by your own
-  identifying information: "Portions Copyrighted [year]
-  [name of copyright owner]"
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
 
-  Contributor(s):
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
 
-  If you wish your version of this file to be governed by only the CDDL or
-  only the GPL Version 2, indicate your decision by adding "[Contributor]
-  elects to include this software in this distribution under the [CDDL or GPL
-  Version 2] license."  If you don't indicate a single choice of license, a
-  recipient has the option to distribute your version of this file under
-  either the CDDL, the GPL Version 2 or to extend the choice of license to
-  its licensees as provided above.  However, if you add GPL Version 2 code
-  and therefore, elected the GPL Version 2 license, then the option applies
-  only if the new code is made subject to such option by the copyright
-  holder.
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html
         PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
@@ -86,4 +91,4 @@
     <h:outputText id="out3" value="#{ajaxrequest.count}"/>
 
 </h:body>
-</html>
\ No newline at end of file
+</html>
diff --git a/jsf-ri/systest/web/ajax/ajaxTagDefaultsEdit.xhtml b/jsf-ri/systest/web/ajax/ajaxTagDefaultsEdit.xhtml
index a20549f..f123a52 100644
--- a/jsf-ri/systest/web/ajax/ajaxTagDefaultsEdit.xhtml
+++ b/jsf-ri/systest/web/ajax/ajaxTagDefaultsEdit.xhtml
@@ -1,41 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
-  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
-  Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
 
-  The contents of this file are subject to the terms of either the GNU
-  General Public License Version 2 only ("GPL") or the Common Development
-  and Distribution License("CDDL") (collectively, the "License").  You
-  may not use this file except in compliance with the License. You can obtain
-  a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
-  or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
-  language governing permissions and limitations under the License.
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
 
-  When distributing the software, include this License Header Notice in each
-  file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
-  Sun designates this particular file as subject to the "Classpath" exception
-  as provided by Sun in the GPL Version 2 section of the License file that
-  accompanied this code.  If applicable, add the following below the License
-  Header, with the fields enclosed by brackets [] replaced by your own
-  identifying information: "Portions Copyrighted [year]
-  [name of copyright owner]"
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
 
-  Contributor(s):
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
 
-  If you wish your version of this file to be governed by only the CDDL or
-  only the GPL Version 2, indicate your decision by adding "[Contributor]
-  elects to include this software in this distribution under the [CDDL or GPL
-  Version 2] license."  If you don't indicate a single choice of license, a
-  recipient has the option to distribute your version of this file under
-  either the CDDL, the GPL Version 2 or to extend the choice of license to
-  its licensees as provided above.  However, if you add GPL Version 2 code
-  and therefore, elected the GPL Version 2 license, then the option applies
-  only if the new code is made subject to such option by the copyright
-  holder.
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html
         PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
@@ -97,4 +102,4 @@
     <h:outputText id="out3" value="#{ajaxrequest.echo}"/>
 
 </h:body>
-</html>
\ No newline at end of file
+</html>
diff --git a/jsf-ri/systest/web/ajax/ajaxTagDefaultsEditNoPrepend.xhtml b/jsf-ri/systest/web/ajax/ajaxTagDefaultsEditNoPrepend.xhtml
index 73315f3..78ca278 100644
--- a/jsf-ri/systest/web/ajax/ajaxTagDefaultsEditNoPrepend.xhtml
+++ b/jsf-ri/systest/web/ajax/ajaxTagDefaultsEditNoPrepend.xhtml
@@ -1,41 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
-  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
-  Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
 
-  The contents of this file are subject to the terms of either the GNU
-  General Public License Version 2 only ("GPL") or the Common Development
-  and Distribution License("CDDL") (collectively, the "License").  You
-  may not use this file except in compliance with the License. You can obtain
-  a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
-  or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
-  language governing permissions and limitations under the License.
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
 
-  When distributing the software, include this License Header Notice in each
-  file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
-  Sun designates this particular file as subject to the "Classpath" exception
-  as provided by Sun in the GPL Version 2 section of the License file that
-  accompanied this code.  If applicable, add the following below the License
-  Header, with the fields enclosed by brackets [] replaced by your own
-  identifying information: "Portions Copyrighted [year]
-  [name of copyright owner]"
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
 
-  Contributor(s):
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
 
-  If you wish your version of this file to be governed by only the CDDL or
-  only the GPL Version 2, indicate your decision by adding "[Contributor]
-  elects to include this software in this distribution under the [CDDL or GPL
-  Version 2] license."  If you don't indicate a single choice of license, a
-  recipient has the option to distribute your version of this file under
-  either the CDDL, the GPL Version 2 or to extend the choice of license to
-  its licensees as provided above.  However, if you add GPL Version 2 code
-  and therefore, elected the GPL Version 2 license, then the option applies
-  only if the new code is made subject to such option by the copyright
-  holder.
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html
         PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
@@ -97,4 +102,4 @@
     <h:outputText id="out3" value="#{ajaxrequest.echo}"/>
 
 </h:body>
-</html>
\ No newline at end of file
+</html>
diff --git a/jsf-ri/systest/web/ajax/ajaxTagDisabled.xhtml b/jsf-ri/systest/web/ajax/ajaxTagDisabled.xhtml
index 24eb23f..c3d5b32 100644
--- a/jsf-ri/systest/web/ajax/ajaxTagDisabled.xhtml
+++ b/jsf-ri/systest/web/ajax/ajaxTagDisabled.xhtml
@@ -1,41 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
-  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
-  Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
 
-  The contents of this file are subject to the terms of either the GNU
-  General Public License Version 2 only ("GPL") or the Common Development
-  and Distribution License("CDDL") (collectively, the "License").  You
-  may not use this file except in compliance with the License. You can obtain
-  a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
-  or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
-  language governing permissions and limitations under the License.
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
 
-  When distributing the software, include this License Header Notice in each
-  file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
-  Sun designates this particular file as subject to the "Classpath" exception
-  as provided by Sun in the GPL Version 2 section of the License file that
-  accompanied this code.  If applicable, add the following below the License
-  Header, with the fields enclosed by brackets [] replaced by your own
-  identifying information: "Portions Copyrighted [year]
-  [name of copyright owner]"
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
 
-  Contributor(s):
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
 
-  If you wish your version of this file to be governed by only the CDDL or
-  only the GPL Version 2, indicate your decision by adding "[Contributor]
-  elects to include this software in this distribution under the [CDDL or GPL
-  Version 2] license."  If you don't indicate a single choice of license, a
-  recipient has the option to distribute your version of this file under
-  either the CDDL, the GPL Version 2 or to extend the choice of license to
-  its licensees as provided above.  However, if you add GPL Version 2 code
-  and therefore, elected the GPL Version 2 license, then the option applies
-  only if the new code is made subject to such option by the copyright
-  holder.
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html
         PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
@@ -69,4 +74,4 @@
     <h:outputText id="out2" value="#{ajaxrequest.count}"/>
 
 </h:body>
-</html>
\ No newline at end of file
+</html>
diff --git a/jsf-ri/systest/web/ajax/ajaxTagEvent.xhtml b/jsf-ri/systest/web/ajax/ajaxTagEvent.xhtml
index d5f8218..3070a6a 100644
--- a/jsf-ri/systest/web/ajax/ajaxTagEvent.xhtml
+++ b/jsf-ri/systest/web/ajax/ajaxTagEvent.xhtml
@@ -1,41 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
-  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
-  Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
 
-  The contents of this file are subject to the terms of either the GNU
-  General Public License Version 2 only ("GPL") or the Common Development
-  and Distribution License("CDDL") (collectively, the "License").  You
-  may not use this file except in compliance with the License. You can obtain
-  a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
-  or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
-  language governing permissions and limitations under the License.
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
 
-  When distributing the software, include this License Header Notice in each
-  file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
-  Sun designates this particular file as subject to the "Classpath" exception
-  as provided by Sun in the GPL Version 2 section of the License file that
-  accompanied this code.  If applicable, add the following below the License
-  Header, with the fields enclosed by brackets [] replaced by your own
-  identifying information: "Portions Copyrighted [year]
-  [name of copyright owner]"
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
 
-  Contributor(s):
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
 
-  If you wish your version of this file to be governed by only the CDDL or
-  only the GPL Version 2, indicate your decision by adding "[Contributor]
-  elects to include this software in this distribution under the [CDDL or GPL
-  Version 2] license."  If you don't indicate a single choice of license, a
-  recipient has the option to distribute your version of this file under
-  either the CDDL, the GPL Version 2 or to extend the choice of license to
-  its licensees as provided above.  However, if you add GPL Version 2 code
-  and therefore, elected the GPL Version 2 license, then the option applies
-  only if the new code is made subject to such option by the copyright
-  holder.
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html
         PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
@@ -74,6 +79,12 @@
         <h:commandButton id="reset" value="reset" actionListener="#{ajaxrequest.resetCount}">
             <f:ajax execute="countForm:reset" render="countForm:out1" onevent="statusUpdate" onerror="statusUpdate"/>
         </h:commandButton>
+        <!-- Test all events (begin, complete, success) if applicaton event (generated on server) occurs -->
+        <h:commandButton id="error" value="error" listener="#{ajaxrequest.generateError}">
+            <f:ajax execute="countForm:error" onevent="statusUpdate" onerror="statusUpdate"/>
+        </h:commandButton>
+        
+    
     </h:form>
     <!-- Contained outside the form - shouldn't update except for full page load -->
     <h:outputText id="out2" value="#{ajaxrequest.count}"/>
diff --git a/jsf-ri/systest/web/ajax/ajaxTagEventAttribute.xhtml b/jsf-ri/systest/web/ajax/ajaxTagEventAttribute.xhtml
index 9251d63..a243f26 100644
--- a/jsf-ri/systest/web/ajax/ajaxTagEventAttribute.xhtml
+++ b/jsf-ri/systest/web/ajax/ajaxTagEventAttribute.xhtml
@@ -1,41 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
-  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
-  Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
-
-  The contents of this file are subject to the terms of either the GNU
-  General Public License Version 2 only ("GPL") or the Common Development
-  and Distribution License("CDDL") (collectively, the "License").  You
-  may not use this file except in compliance with the License. You can obtain
-  a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
-  or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
-  language governing permissions and limitations under the License.
-
-  When distributing the software, include this License Header Notice in each
-  file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
-  Sun designates this particular file as subject to the "Classpath" exception
-  as provided by Sun in the GPL Version 2 section of the License file that
-  accompanied this code.  If applicable, add the following below the License
-  Header, with the fields enclosed by brackets [] replaced by your own
-  identifying information: "Portions Copyrighted [year]
-  [name of copyright owner]"
-
-  Contributor(s):
-
-  If you wish your version of this file to be governed by only the CDDL or
-  only the GPL Version 2, indicate your decision by adding "[Contributor]
-  elects to include this software in this distribution under the [CDDL or GPL
-  Version 2] license."  If you don't indicate a single choice of license, a
-  recipient has the option to distribute your version of this file under
-  either the CDDL, the GPL Version 2 or to extend the choice of license to
-  its licensees as provided above.  However, if you add GPL Version 2 code
-  and therefore, elected the GPL Version 2 license, then the option applies
-  only if the new code is made subject to such option by the copyright
-  holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html
         PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
@@ -85,6 +90,12 @@
         <h:outputText id="checkedvalue2" value="#{ajaxtag.checked}"/>
         <br/>
 
+        <!-- ajax "event" Value Expression -->
+        <h:selectBooleanCheckbox id="checkbox3" value="#{ajaxtag.checked}">
+            <f:ajax event="#{ajaxtag.ajaxEvent}" render="checkedvalue3"/>
+        </h:selectBooleanCheckbox>
+        <h:outputText id="checkedvalue3" value="#{ajaxtag.checked}"/>
+        <br/>
 
         <!-- Resets the counter, doesn't refresh the page -->
         <h:commandButton id="reset" value="reset" actionListener="#{ajaxtag.reset}">
diff --git a/jsf-ri/systest/web/ajax/ajaxTagEventWrapping.xhtml b/jsf-ri/systest/web/ajax/ajaxTagEventWrapping.xhtml
index 163cd9f..d8abc09 100644
--- a/jsf-ri/systest/web/ajax/ajaxTagEventWrapping.xhtml
+++ b/jsf-ri/systest/web/ajax/ajaxTagEventWrapping.xhtml
@@ -1,41 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
-  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
-  Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
 
-  The contents of this file are subject to the terms of either the GNU
-  General Public License Version 2 only ("GPL") or the Common Development
-  and Distribution License("CDDL") (collectively, the "License").  You
-  may not use this file except in compliance with the License. You can obtain
-  a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
-  or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
-  language governing permissions and limitations under the License.
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
 
-  When distributing the software, include this License Header Notice in each
-  file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
-  Sun designates this particular file as subject to the "Classpath" exception
-  as provided by Sun in the GPL Version 2 section of the License file that
-  accompanied this code.  If applicable, add the following below the License
-  Header, with the fields enclosed by brackets [] replaced by your own
-  identifying information: "Portions Copyrighted [year]
-  [name of copyright owner]"
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
 
-  Contributor(s):
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
 
-  If you wish your version of this file to be governed by only the CDDL or
-  only the GPL Version 2, indicate your decision by adding "[Contributor]
-  elects to include this software in this distribution under the [CDDL or GPL
-  Version 2] license."  If you don't indicate a single choice of license, a
-  recipient has the option to distribute your version of this file under
-  either the CDDL, the GPL Version 2 or to extend the choice of license to
-  its licensees as provided above.  However, if you add GPL Version 2 code
-  and therefore, elected the GPL Version 2 license, then the option applies
-  only if the new code is made subject to such option by the copyright
-  holder.
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html
         PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
diff --git a/jsf-ri/systest/web/ajax/ajaxTagKeywords.xhtml b/jsf-ri/systest/web/ajax/ajaxTagKeywords.xhtml
index 8621a31..93099a9 100644
--- a/jsf-ri/systest/web/ajax/ajaxTagKeywords.xhtml
+++ b/jsf-ri/systest/web/ajax/ajaxTagKeywords.xhtml
@@ -1,41 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
-  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
-  Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
 
-  The contents of this file are subject to the terms of either the GNU
-  General Public License Version 2 only ("GPL") or the Common Development
-  and Distribution License("CDDL") (collectively, the "License").  You
-  may not use this file except in compliance with the License. You can obtain
-  a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
-  or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
-  language governing permissions and limitations under the License.
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
 
-  When distributing the software, include this License Header Notice in each
-  file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
-  Sun designates this particular file as subject to the "Classpath" exception
-  as provided by Sun in the GPL Version 2 section of the License file that
-  accompanied this code.  If applicable, add the following below the License
-  Header, with the fields enclosed by brackets [] replaced by your own
-  identifying information: "Portions Copyrighted [year]
-  [name of copyright owner]"
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
 
-  Contributor(s):
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
 
-  If you wish your version of this file to be governed by only the CDDL or
-  only the GPL Version 2, indicate your decision by adding "[Contributor]
-  elects to include this software in this distribution under the [CDDL or GPL
-  Version 2] license."  If you don't indicate a single choice of license, a
-  recipient has the option to distribute your version of this file under
-  either the CDDL, the GPL Version 2 or to extend the choice of license to
-  its licensees as provided above.  However, if you add GPL Version 2 code
-  and therefore, elected the GPL Version 2 license, then the option applies
-  only if the new code is made subject to such option by the copyright
-  holder.
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html
         PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
@@ -85,4 +90,4 @@
     <h:outputText id="out3" value="#{ajaxrequest.count}"/>
 
 </h:body>
-</html>
\ No newline at end of file
+</html>
diff --git a/jsf-ri/systest/web/ajax/ajaxTagMulti.xhtml b/jsf-ri/systest/web/ajax/ajaxTagMulti.xhtml
index 14f6ba6..f67a58a 100644
--- a/jsf-ri/systest/web/ajax/ajaxTagMulti.xhtml
+++ b/jsf-ri/systest/web/ajax/ajaxTagMulti.xhtml
@@ -1,41 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
-  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
-  Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
 
-  The contents of this file are subject to the terms of either the GNU
-  General Public License Version 2 only ("GPL") or the Common Development
-  and Distribution License("CDDL") (collectively, the "License").  You
-  may not use this file except in compliance with the License. You can obtain
-  a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
-  or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
-  language governing permissions and limitations under the License.
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
 
-  When distributing the software, include this License Header Notice in each
-  file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
-  Sun designates this particular file as subject to the "Classpath" exception
-  as provided by Sun in the GPL Version 2 section of the License file that
-  accompanied this code.  If applicable, add the following below the License
-  Header, with the fields enclosed by brackets [] replaced by your own
-  identifying information: "Portions Copyrighted [year]
-  [name of copyright owner]"
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
 
-  Contributor(s):
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
 
-  If you wish your version of this file to be governed by only the CDDL or
-  only the GPL Version 2, indicate your decision by adding "[Contributor]
-  elects to include this software in this distribution under the [CDDL or GPL
-  Version 2] license."  If you don't indicate a single choice of license, a
-  recipient has the option to distribute your version of this file under
-  either the CDDL, the GPL Version 2 or to extend the choice of license to
-  its licensees as provided above.  However, if you add GPL Version 2 code
-  and therefore, elected the GPL Version 2 license, then the option applies
-  only if the new code is made subject to such option by the copyright
-  holder.
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html
         PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
@@ -82,4 +87,4 @@
     <h:outputText id="outside" value="#{ajaxrequest.count}"/>
 
 </h:body>
-</html>
\ No newline at end of file
+</html>
diff --git a/jsf-ri/systest/web/ajax/ajaxTagResolve.xhtml b/jsf-ri/systest/web/ajax/ajaxTagResolve.xhtml
index 550aa3b..4048054 100644
--- a/jsf-ri/systest/web/ajax/ajaxTagResolve.xhtml
+++ b/jsf-ri/systest/web/ajax/ajaxTagResolve.xhtml
@@ -1,41 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
-  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
-  Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
 
-  The contents of this file are subject to the terms of either the GNU
-  General Public License Version 2 only ("GPL") or the Common Development
-  and Distribution License("CDDL") (collectively, the "License").  You
-  may not use this file except in compliance with the License. You can obtain
-  a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
-  or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
-  language governing permissions and limitations under the License.
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
 
-  When distributing the software, include this License Header Notice in each
-  file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
-  Sun designates this particular file as subject to the "Classpath" exception
-  as provided by Sun in the GPL Version 2 section of the License file that
-  accompanied this code.  If applicable, add the following below the License
-  Header, with the fields enclosed by brackets [] replaced by your own
-  identifying information: "Portions Copyrighted [year]
-  [name of copyright owner]"
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
 
-  Contributor(s):
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
 
-  If you wish your version of this file to be governed by only the CDDL or
-  only the GPL Version 2, indicate your decision by adding "[Contributor]
-  elects to include this software in this distribution under the [CDDL or GPL
-  Version 2] license."  If you don't indicate a single choice of license, a
-  recipient has the option to distribute your version of this file under
-  either the CDDL, the GPL Version 2 or to extend the choice of license to
-  its licensees as provided above.  However, if you add GPL Version 2 code
-  and therefore, elected the GPL Version 2 license, then the option applies
-  only if the new code is made subject to such option by the copyright
-  holder.
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html
         PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
@@ -91,4 +96,4 @@
     <h:outputText id="out4" value="#{ajaxtag.count}"/>
     <br/>
 </h:body>
-</html>
\ No newline at end of file
+</html>
diff --git a/jsf-ri/systest/web/ajax/ajaxTagWrapping.xhtml b/jsf-ri/systest/web/ajax/ajaxTagWrapping.xhtml
index e38250b..1986239 100644
--- a/jsf-ri/systest/web/ajax/ajaxTagWrapping.xhtml
+++ b/jsf-ri/systest/web/ajax/ajaxTagWrapping.xhtml
@@ -1,41 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
-  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
-  Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
 
-  The contents of this file are subject to the terms of either the GNU
-  General Public License Version 2 only ("GPL") or the Common Development
-  and Distribution License("CDDL") (collectively, the "License").  You
-  may not use this file except in compliance with the License. You can obtain
-  a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
-  or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
-  language governing permissions and limitations under the License.
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
 
-  When distributing the software, include this License Header Notice in each
-  file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
-  Sun designates this particular file as subject to the "Classpath" exception
-  as provided by Sun in the GPL Version 2 section of the License file that
-  accompanied this code.  If applicable, add the following below the License
-  Header, with the fields enclosed by brackets [] replaced by your own
-  identifying information: "Portions Copyrighted [year]
-  [name of copyright owner]"
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
 
-  Contributor(s):
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
 
-  If you wish your version of this file to be governed by only the CDDL or
-  only the GPL Version 2, indicate your decision by adding "[Contributor]
-  elects to include this software in this distribution under the [CDDL or GPL
-  Version 2] license."  If you don't indicate a single choice of license, a
-  recipient has the option to distribute your version of this file under
-  either the CDDL, the GPL Version 2 or to extend the choice of license to
-  its licensees as provided above.  However, if you add GPL Version 2 code
-  and therefore, elected the GPL Version 2 license, then the option applies
-  only if the new code is made subject to such option by the copyright
-  holder.
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html
         PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
@@ -98,4 +103,4 @@
     </h:form>
 
 </h:body>
-</html>
\ No newline at end of file
+</html>
diff --git a/jsf-ri/systest/web/ajax/ajaxViewState.xhtml b/jsf-ri/systest/web/ajax/ajaxViewState.xhtml
new file mode 100644
index 0000000..86b0b6b
--- /dev/null
+++ b/jsf-ri/systest/web/ajax/ajaxViewState.xhtml
@@ -0,0 +1,80 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+        PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+<h:head>
+    <title>Ajax Tag Test Page</title>
+</h:head>
+<h:body>
+    <script type="text/javascript">
+        var form = document.getElementById("form");
+        function vstate() {
+            var form = document.getElementById("form");
+            var state = jsf.getViewState(form);
+            var out2 = document.getElementById("say");
+            out2.innerHTML = state;
+        };
+    </script>
+
+    <h1>Test ajax tag event attribute</h1>
+    <h:form id="form" prependId="false">
+        <h:outputText id="say" value="init"/>
+        <br/>
+        <h:selectBooleanCheckbox id="checkbox1" value="#{ajaxtag.checked}">
+            <f:ajax render="checkedvalue1"/>
+            </h:selectBooleanCheckbox>
+        <h:outputText id="checkedvalue1" value="#{ajaxtag.checked}"/>
+        <br/>
+
+        <h:commandButton id="viewState" value="viewState" 
+            onclick="vstate(); return false;">
+        </h:commandButton>
+    </h:form>
+</h:body>
+</html>
diff --git a/jsf-ri/systest/web/ajax/browser/browser.xhtml b/jsf-ri/systest/web/ajax/browser/browser.xhtml
index 2489d78..0a5a629 100644
--- a/jsf-ri/systest/web/ajax/browser/browser.xhtml
+++ b/jsf-ri/systest/web/ajax/browser/browser.xhtml
@@ -1,40 +1,45 @@
 <!--
 
-  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
-  Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
-
-  The contents of this file are subject to the terms of either the GNU
-  General Public License Version 2 only ("GPL") or the Common Development
-  and Distribution License("CDDL") (collectively, the "License").  You
-  may not use this file except in compliance with the License. You can obtain
-  a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
-  or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
-  language governing permissions and limitations under the License.
-
-  When distributing the software, include this License Header Notice in each
-  file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
-  Sun designates this particular file as subject to the "Classpath" exception
-  as provided by Sun in the GPL Version 2 section of the License file that
-  accompanied this code.  If applicable, add the following below the License
-  Header, with the fields enclosed by brackets [] replaced by your own
-  identifying information: "Portions Copyrighted [year]
-  [name of copyright owner]"
-
-  Contributor(s):
-
-  If you wish your version of this file to be governed by only the CDDL or
-  only the GPL Version 2, indicate your decision by adding "[Contributor]
-  elects to include this software in this distribution under the [CDDL or GPL
-  Version 2] license."  If you don't indicate a single choice of license, a
-  recipient has the option to distribute your version of this file under
-  either the CDDL, the GPL Version 2 or to extend the choice of license to
-  its licensees as provided above.  However, if you add GPL Version 2 code
-  and therefore, elected the GPL Version 2 license, then the option applies
-  only if the new code is made subject to such option by the copyright
-  holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:ui="http://java.sun.com/jsf/facelets"
diff --git a/jsf-ri/systest/web/ajax/browser/browserSelectChange.xhtml b/jsf-ri/systest/web/ajax/browser/browserSelectChange.xhtml
index 2c7d7fa..2c81768 100644
--- a/jsf-ri/systest/web/ajax/browser/browserSelectChange.xhtml
+++ b/jsf-ri/systest/web/ajax/browser/browserSelectChange.xhtml
@@ -1,40 +1,45 @@
 <!--
 
-  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
-  Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
-
-  The contents of this file are subject to the terms of either the GNU
-  General Public License Version 2 only ("GPL") or the Common Development
-  and Distribution License("CDDL") (collectively, the "License").  You
-  may not use this file except in compliance with the License. You can obtain
-  a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
-  or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
-  language governing permissions and limitations under the License.
-
-  When distributing the software, include this License Header Notice in each
-  file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
-  Sun designates this particular file as subject to the "Classpath" exception
-  as provided by Sun in the GPL Version 2 section of the License file that
-  accompanied this code.  If applicable, add the following below the License
-  Header, with the fields enclosed by brackets [] replaced by your own
-  identifying information: "Portions Copyrighted [year]
-  [name of copyright owner]"
-
-  Contributor(s):
-
-  If you wish your version of this file to be governed by only the CDDL or
-  only the GPL Version 2, indicate your decision by adding "[Contributor]
-  elects to include this software in this distribution under the [CDDL or GPL
-  Version 2] license."  If you don't indicate a single choice of license, a
-  recipient has the option to distribute your version of this file under
-  either the CDDL, the GPL Version 2 or to extend the choice of license to
-  its licensees as provided above.  However, if you add GPL Version 2 code
-  and therefore, elected the GPL Version 2 license, then the option applies
-  only if the new code is made subject to such option by the copyright
-  holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:ui="http://java.sun.com/jsf/facelets"
diff --git a/jsf-ri/systest/web/ajax/browser/browserUpdateAttribute.xhtml b/jsf-ri/systest/web/ajax/browser/browserUpdateAttribute.xhtml
index 78424d1..abd4c80 100644
--- a/jsf-ri/systest/web/ajax/browser/browserUpdateAttribute.xhtml
+++ b/jsf-ri/systest/web/ajax/browser/browserUpdateAttribute.xhtml
@@ -1,40 +1,45 @@
 <!--
 
-  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
-  Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
 
-  The contents of this file are subject to the terms of either the GNU
-  General Public License Version 2 only ("GPL") or the Common Development
-  and Distribution License("CDDL") (collectively, the "License").  You
-  may not use this file except in compliance with the License. You can obtain
-  a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
-  or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
-  language governing permissions and limitations under the License.
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
 
-  When distributing the software, include this License Header Notice in each
-  file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
-  Sun designates this particular file as subject to the "Classpath" exception
-  as provided by Sun in the GPL Version 2 section of the License file that
-  accompanied this code.  If applicable, add the following below the License
-  Header, with the fields enclosed by brackets [] replaced by your own
-  identifying information: "Portions Copyrighted [year]
-  [name of copyright owner]"
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
 
-  Contributor(s):
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
 
-  If you wish your version of this file to be governed by only the CDDL or
-  only the GPL Version 2, indicate your decision by adding "[Contributor]
-  elects to include this software in this distribution under the [CDDL or GPL
-  Version 2] license."  If you don't indicate a single choice of license, a
-  recipient has the option to distribute your version of this file under
-  either the CDDL, the GPL Version 2 or to extend the choice of license to
-  its licensees as provided above.  However, if you add GPL Version 2 code
-  and therefore, elected the GPL Version 2 license, then the option applies
-  only if the new code is made subject to such option by the copyright
-  holder.
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html
       PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
diff --git a/jsf-ri/systest/web/ajax/browser/browserUpdateView.xhtml b/jsf-ri/systest/web/ajax/browser/browserUpdateView.xhtml
index 8ec7f0d..76511d5 100644
--- a/jsf-ri/systest/web/ajax/browser/browserUpdateView.xhtml
+++ b/jsf-ri/systest/web/ajax/browser/browserUpdateView.xhtml
@@ -1,40 +1,45 @@
 <!--
 
-  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
-  Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
 
-  The contents of this file are subject to the terms of either the GNU
-  General Public License Version 2 only ("GPL") or the Common Development
-  and Distribution License("CDDL") (collectively, the "License").  You
-  may not use this file except in compliance with the License. You can obtain
-  a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
-  or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
-  language governing permissions and limitations under the License.
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
 
-  When distributing the software, include this License Header Notice in each
-  file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
-  Sun designates this particular file as subject to the "Classpath" exception
-  as provided by Sun in the GPL Version 2 section of the License file that
-  accompanied this code.  If applicable, add the following below the License
-  Header, with the fields enclosed by brackets [] replaced by your own
-  identifying information: "Portions Copyrighted [year]
-  [name of copyright owner]"
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
 
-  Contributor(s):
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
 
-  If you wish your version of this file to be governed by only the CDDL or
-  only the GPL Version 2, indicate your decision by adding "[Contributor]
-  elects to include this software in this distribution under the [CDDL or GPL
-  Version 2] license."  If you don't indicate a single choice of license, a
-  recipient has the option to distribute your version of this file under
-  either the CDDL, the GPL Version 2 or to extend the choice of license to
-  its licensees as provided above.  However, if you add GPL Version 2 code
-  and therefore, elected the GPL Version 2 license, then the option applies
-  only if the new code is made subject to such option by the copyright
-  holder.
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html
       PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
@@ -112,4 +117,4 @@
         <br/>
     </h:form>
 </h:body>
-</html>
\ No newline at end of file
+</html>
diff --git a/jsf-ri/systest/web/ajax/issue1760NestedAjaxCheckboxRender.xhtml b/jsf-ri/systest/web/ajax/issue1760NestedAjaxCheckboxRender.xhtml
new file mode 100644
index 0000000..64120d1
--- /dev/null
+++ b/jsf-ri/systest/web/ajax/issue1760NestedAjaxCheckboxRender.xhtml
@@ -0,0 +1,109 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+<h:head>
+    <title>Ajax Checkbox rerender</title>
+    <style type="text/css">
+        .grayBox { padding: 8px; margin: 10px 0; border: 1px solid #CCC; background-color: #f9f9f9;  }
+    </style>
+
+</h:head>
+<body>
+    <h:form id="form1" prependId="false" styleClass="grayBox">
+
+        <p>nested ajax with render including component within the same form.</p>
+
+        <p>form1CurrentTime: 
+           <h:outputText id="checkedDisplay" value="#{test1.currentTimeMillis}" />.</p>
+
+        <h:selectBooleanCheckbox id="checkbox1" value="#{test1.booleanProperty}">
+            <f:ajax render="checkedDisplay" event="click"/>
+        </h:selectBooleanCheckbox>
+
+    </h:form>
+
+    <h:form id="form2" prependId="false" styleClass="grayBox">
+
+        <p>nested ajax with render including @form.</p>
+
+        <p>form2CurrentTime:
+           <h:outputText id="checkedDisplay2" value="#{test1.currentTimeMillis}" />.</p>
+
+        <h:selectBooleanCheckbox id="checkbox2" value="#{test1.booleanProperty}">
+            <f:ajax render="@form" event="click"/>
+        </h:selectBooleanCheckbox>
+
+    </h:form>
+
+    <h:form id="form3" prependId="false" styleClass="grayBox">
+
+        <p>form3CurrentTime: 
+           <h:outputText id="checkedDisplay3" value="#{test1.currentTimeMillis}" />.</p>
+
+        <h:commandButton id="button1" value="reload">
+            <f:ajax render="checkedDisplay3" event="click"/>
+        </h:commandButton>
+
+    </h:form>
+
+    <h:form id="form4" prependId="false" styleClass="grayBox">
+
+        <p>form4CurrentTime:
+           <h:outputText id="checkedDisplay4" value="#{test1.currentTimeMillis}" />.</p>
+
+        <h:commandLink id="link1" value="reload">
+            <f:ajax render="@form" event="click"/>
+        </h:commandLink>
+
+    </h:form>
+
+
+</body>
+</html>
diff --git a/jsf-ri/systest/web/ajax/jsfJS.xhtml b/jsf-ri/systest/web/ajax/jsfJS.xhtml
new file mode 100644
index 0000000..d22474e
--- /dev/null
+++ b/jsf-ri/systest/web/ajax/jsfJS.xhtml
@@ -0,0 +1,82 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+<h:head>
+    <title>Ajax Update Root</title>
+</h:head>
+<h:body style="background-color: silver">
+
+    <script type="text/javascript">
+        function nodeDelete() {
+            var out1 = document.getElementById("result1");
+            var out2 = document.getElementById("result2");
+            var parent = document.createElement("foo");
+            var child = document.createElement("bar");
+            parent.appendChild(child);
+            out1.innerHTML = "child nodes "+parent.childNodes.length;
+            jsf.ajax.testDeleteNode(child);
+            out2.innerHTML = "child nodes "+parent.childNodes.length;
+        };
+    </script>
+
+    <h:outputScript library="ajax" name="test.jsf.js" target="head"/>
+
+    <h:form prependId="false">
+       <h:outputText id="result1" value="init" />
+       <h:outputText id="result2" value="init" />
+       <br/>
+       <h:commandButton id="button" value="button"
+          onclick="nodeDelete(); return false;" />
+    </h:form>
+
+    <div id="div1"/>
+    <div id="div2"/>
+</h:body>
+
+</html>
diff --git a/jsf-ri/systest/web/ajax/redirecttarget.xhtml b/jsf-ri/systest/web/ajax/redirecttarget.xhtml
index 48c75a9..5113b5f 100644
--- a/jsf-ri/systest/web/ajax/redirecttarget.xhtml
+++ b/jsf-ri/systest/web/ajax/redirecttarget.xhtml
@@ -1,39 +1,43 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
-  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
-  Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
-
-  The contents of this file are subject to the terms of either the GNU
-  General Public License Version 2 only ("GPL") or the Common Development
-  and Distribution License("CDDL") (collectively, the "License").  You
-  may not use this file except in compliance with the License. You can obtain
-  a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
-  or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
-  language governing permissions and limitations under the License.
-
-  When distributing the software, include this License Header Notice in each
-  file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
-  Sun designates this particular file as subject to the "Classpath" exception
-  as provided by Sun in the GPL Version 2 section of the License file that
-  accompanied this code.  If applicable, add the following below the License
-  Header, with the fields enclosed by brackets [] replaced by your own
-  identifying information: "Portions Copyrighted [year]
-  [name of copyright owner]"
-
-  Contributor(s):
-
-  If you wish your version of this file to be governed by only the CDDL or
-  only the GPL Version 2, indicate your decision by adding "[Contributor]
-  elects to include this software in this distribution under the [CDDL or GPL
-  Version 2] license."  If you don't indicate a single choice of license, a
-  recipient has the option to distribute your version of this file under
-  either the CDDL, the GPL Version 2 or to extend the choice of license to
-  its licensees as provided above.  However, if you add GPL Version 2 code
-  and therefore, elected the GPL Version 2 license, then the option applies
-  only if the new code is made subject to such option by the copyright
-  holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
 
@@ -50,4 +54,4 @@
 <body>
 <h:outputText id="redirect" value="Redirect Target"/>
 </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/jsf-ri/systest/web/annotationtest.xhtml b/jsf-ri/systest/web/annotationtest.xhtml
index 2dd83c3..18153c5 100644
--- a/jsf-ri/systest/web/annotationtest.xhtml
+++ b/jsf-ri/systest/web/annotationtest.xhtml
@@ -1,38 +1,45 @@
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"
@@ -45,5 +52,7 @@
 <body>
 <h:outputText style="font-style: italic;"
           value="Test Passed: #{annotationTestBean.testResult}"/>
+
+<p>AnnotatedPhaseListener: #{AnnotatedPhaseListenerMessage}</p>
 </body>
 </html>
diff --git a/jsf-ri/systest/web/bar01.jsp b/jsf-ri/systest/web/bar01.jsp
index c9b80a5..30c3c13 100644
--- a/jsf-ri/systest/web/bar01.jsp
+++ b/jsf-ri/systest/web/bar01.jsp
@@ -1,43 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
+
 <%@ page contentType="text/html" language="java" %>
 <%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
 <%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
diff --git a/jsf-ri/systest/web/bar02.jsp b/jsf-ri/systest/web/bar02.jsp
index 7158919..516ff63 100644
--- a/jsf-ri/systest/web/bar02.jsp
+++ b/jsf-ri/systest/web/bar02.jsp
@@ -1,43 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
+
 <%@ page contentType="text/html" language="java" %>
 <%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
 <%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
diff --git a/jsf-ri/systest/web/binding01.jsp b/jsf-ri/systest/web/binding01.jsp
index ea9a24d..474563b 100644
--- a/jsf-ri/systest/web/binding01.jsp
+++ b/jsf-ri/systest/web/binding01.jsp
@@ -1,43 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
+
 <%@ page contentType="text/html" language="java" %>
 <%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
 <%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %>
diff --git a/jsf-ri/systest/web/clearApplicationMapProperty.xhtml b/jsf-ri/systest/web/clearApplicationMapProperty.xhtml
index 6544b07..2cb1ba4 100644
--- a/jsf-ri/systest/web/clearApplicationMapProperty.xhtml
+++ b/jsf-ri/systest/web/clearApplicationMapProperty.xhtml
@@ -1,40 +1,45 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:h="http://java.sun.com/jsf/html"
diff --git a/jsf-ri/systest/web/commandLinkPrependId.jsp b/jsf-ri/systest/web/commandLinkPrependId.jsp
index 7e93800..9c0031c 100644
--- a/jsf-ri/systest/web/commandLinkPrependId.jsp
+++ b/jsf-ri/systest/web/commandLinkPrependId.jsp
@@ -1,37 +1,43 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
diff --git a/jsf-ri/systest/web/component.jsp b/jsf-ri/systest/web/component.jsp
index 8173392..f36adf2 100644
--- a/jsf-ri/systest/web/component.jsp
+++ b/jsf-ri/systest/web/component.jsp
@@ -1,37 +1,43 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
 <%@ page contentType="text/html"
diff --git a/jsf-ri/systest/web/component01.jsp b/jsf-ri/systest/web/component01.jsp
index c01124e..aedf581 100644
--- a/jsf-ri/systest/web/component01.jsp
+++ b/jsf-ri/systest/web/component01.jsp
@@ -1,37 +1,43 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
 <%@ page contentType="text/html"
diff --git a/jsf-ri/systest/web/component02.jsp b/jsf-ri/systest/web/component02.jsp
index 2aaadf5..45e1cdd 100644
--- a/jsf-ri/systest/web/component02.jsp
+++ b/jsf-ri/systest/web/component02.jsp
@@ -1,37 +1,43 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
 <%--
@@ -49,4 +55,4 @@
         <h:outputText value="Test Output Text"/>       
         <h:commandButton id="submit" value="Groovy Button"/>
     </h:form>
-</f:view>
\ No newline at end of file
+</f:view>
diff --git a/jsf-ri/systest/web/component03.jsp b/jsf-ri/systest/web/component03.jsp
new file mode 100644
index 0000000..f5faa7b
--- /dev/null
+++ b/jsf-ri/systest/web/component03.jsp
@@ -0,0 +1,60 @@
+<%--
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ 
+ Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ 
+ The contents of this file are subject to the terms of either the GNU
+ General Public License Version 2 only ("GPL") or the Common Development
+ and Distribution License("CDDL") (collectively, the "License").  You
+ may not use this file except in compliance with the License. You can obtain
+ a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
+ or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ language governing permissions and limitations under the License.
+ 
+ When distributing the software, include this License Header Notice in each
+ file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
+ Sun designates this particular file as subject to the "Classpath" exception
+ as provided by Sun in the GPL Version 2 section of the License file that
+ accompanied this code.  If applicable, add the following below the License
+ Header, with the fields enclosed by brackets [] replaced by your own
+ identifying information: "Portions Copyrighted [year]
+ [name of copyright owner]"
+ 
+ Contributor(s):
+ 
+ If you wish your version of this file to be governed by only the CDDL or
+ only the GPL Version 2, indicate your decision by adding "[Contributor]
+ elects to include this software in this distribution under the [CDDL or GPL
+ Version 2] license."  If you don't indicate a single choice of license, a
+ recipient has the option to distribute your version of this file under
+ either the CDDL, the GPL Version 2 or to extend the choice of license to
+ its licensees as provided above.  However, if you add GPL Version 2 code
+ and therefore, elected the GPL Version 2 license, then the option applies
+ only if the new code is made subject to such option by the copyright
+ holder.
+--%>
+
+<%--
+    Added for issue 1492.
+    Ensure transient components do not cause issues
+    with state restoration (verbatim is treated as transient)
+--%>
+
+<html><head><title>Issue1492TestCase</title></head>
+<body>
+
+
+<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
+<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+<f:view>
+    <h:form>
+        
+        <h:commandButton binding="#{viewScopedBean.commandButton}" id="submit" value="reload"/>
+
+        |<h:outputText value="#{viewScopedBean.ctorMessage}" />|
+
+    </h:form>
+</f:view>
+
+</body>
+</html>
diff --git a/jsf-ri/systest/web/componentImplicitObject.jsp b/jsf-ri/systest/web/componentImplicitObject.jsp
index 952a818..db15dca 100644
--- a/jsf-ri/systest/web/componentImplicitObject.jsp
+++ b/jsf-ri/systest/web/componentImplicitObject.jsp
@@ -1,37 +1,43 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
 <%@ page contentType="text/html" %>
diff --git a/jsf-ri/systest/web/composite/1462-using.xhtml b/jsf-ri/systest/web/composite/1462-using.xhtml
new file mode 100644
index 0000000..9444d44
--- /dev/null
+++ b/jsf-ri/systest/web/composite/1462-using.xhtml
@@ -0,0 +1,19 @@
+<?xml version='1.0' encoding='UTF-8' ?> 
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:ez="http://java.sun.com/jsf/composite/composite">
+
+    <ez:verifyUserIsInRole id="mycc"/>
+
+    <h:head>
+    </h:head>
+    
+    <h:body>
+Message: #{message}.
+
+
+    </h:body>
+    
+</html>
diff --git a/jsf-ri/systest/web/composite/action.xhtml b/jsf-ri/systest/web/composite/action.xhtml
index dc5aaa5..bd92266 100644
--- a/jsf-ri/systest/web/composite/action.xhtml
+++ b/jsf-ri/systest/web/composite/action.xhtml
@@ -1,40 +1,45 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:h="http://java.sun.com/jsf/html"
diff --git a/jsf-ri/systest/web/composite/actionListener.xhtml b/jsf-ri/systest/web/composite/actionListener.xhtml
index 9014fe0..ef639c1 100644
--- a/jsf-ri/systest/web/composite/actionListener.xhtml
+++ b/jsf-ri/systest/web/composite/actionListener.xhtml
@@ -1,40 +1,45 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:h="http://java.sun.com/jsf/html"
diff --git a/jsf-ri/systest/web/composite/actionsource.xhtml b/jsf-ri/systest/web/composite/actionsource.xhtml
index 832fe83..d1d3f60 100644
--- a/jsf-ri/systest/web/composite/actionsource.xhtml
+++ b/jsf-ri/systest/web/composite/actionsource.xhtml
@@ -1,40 +1,45 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:h="http://java.sun.com/jsf/html"
diff --git a/jsf-ri/systest/web/composite/addPhaseListener.xhtml b/jsf-ri/systest/web/composite/addPhaseListener.xhtml
index 9531879..c5a4f61 100644
--- a/jsf-ri/systest/web/composite/addPhaseListener.xhtml
+++ b/jsf-ri/systest/web/composite/addPhaseListener.xhtml
@@ -1,39 +1,43 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
 
- Contributor(s):
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 -->
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:h="http://java.sun.com/jsf/html"
diff --git a/jsf-ri/systest/web/composite/attachedconverter.xhtml b/jsf-ri/systest/web/composite/attachedconverter.xhtml
index b57bd4a..3d825e4 100644
--- a/jsf-ri/systest/web/composite/attachedconverter.xhtml
+++ b/jsf-ri/systest/web/composite/attachedconverter.xhtml
@@ -1,40 +1,45 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:h="http://java.sun.com/jsf/html"
diff --git a/jsf-ri/systest/web/composite/attachedvalidator.xhtml b/jsf-ri/systest/web/composite/attachedvalidator.xhtml
index 42bce50..d889917 100644
--- a/jsf-ri/systest/web/composite/attachedvalidator.xhtml
+++ b/jsf-ri/systest/web/composite/attachedvalidator.xhtml
@@ -1,40 +1,45 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:h="http://java.sun.com/jsf/html"
diff --git a/jsf-ri/systest/web/composite/behavior/composite.xhtml b/jsf-ri/systest/web/composite/behavior/composite.xhtml
index 3714dd6..5440dd2 100644
--- a/jsf-ri/systest/web/composite/behavior/composite.xhtml
+++ b/jsf-ri/systest/web/composite/behavior/composite.xhtml
@@ -1,52 +1,57 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<f:view contentType="text/html" xmlns="http://www.w3.org/1999/xhtml"
+<html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:h="http://java.sun.com/jsf/html"
       xmlns:f="http://java.sun.com/jsf/core"
-      xmlns:ui="http://java.sun.com/jsf/facelets"
       xmlns:ezb="http://java.sun.com/jsf/composite/ezbehaviors"
       xmlns:b="http://mojarra.dev.java.net/composite-behavior">
       <h:form id="form">
-        <ezb:compositeTest commandAction="#{testBean.doAction}">
+        <ezb:compositeTest id="composite" commandAction="#{compositeBehaviorTestBean.doAction}">
               	<b:behavior event="ok"/>        
                 <f:validateLength for="input" minimum="3" />
         </ezb:compositeTest>
         <h:commandButton action="refresh" value="refresh" id="refresh" />
+        <h:messages />
       </h:form>
-</f:view>
+</html>
diff --git a/jsf-ri/systest/web/composite/behavior/composite02.xhtml b/jsf-ri/systest/web/composite/behavior/composite02.xhtml
new file mode 100644
index 0000000..ae479ab
--- /dev/null
+++ b/jsf-ri/systest/web/composite/behavior/composite02.xhtml
@@ -0,0 +1,55 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+
+<h:form prependId="false">
+
+  <p>Reaching this page indicates that the method expression retargeting
+  was successful.</p>
+
+  <h:commandButton id="button" action="composite" value="back" />
+</h:form>
+
+</html>
diff --git a/jsf-ri/systest/web/composite/boostrapCompositeComponentMetadata.xhtml b/jsf-ri/systest/web/composite/boostrapCompositeComponentMetadata.xhtml
index a64b6d9..f2db4f5 100644
--- a/jsf-ri/systest/web/composite/boostrapCompositeComponentMetadata.xhtml
+++ b/jsf-ri/systest/web/composite/boostrapCompositeComponentMetadata.xhtml
@@ -1,40 +1,45 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:h="http://java.sun.com/jsf/html"
diff --git a/jsf-ri/systest/web/composite/childrenfacets.xhtml b/jsf-ri/systest/web/composite/childrenfacets.xhtml
index 92b3d02..9348720 100644
--- a/jsf-ri/systest/web/composite/childrenfacets.xhtml
+++ b/jsf-ri/systest/web/composite/childrenfacets.xhtml
@@ -1,40 +1,45 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
- Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
 
- Contributor(s):
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:h="http://java.sun.com/jsf/html"
diff --git a/jsf-ri/systest/web/composite/clientId01.xhtml b/jsf-ri/systest/web/composite/clientId01.xhtml
index 90c4bd4..69b1311 100644
--- a/jsf-ri/systest/web/composite/clientId01.xhtml
+++ b/jsf-ri/systest/web/composite/clientId01.xhtml
@@ -1,40 +1,45 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:h="http://java.sun.com/jsf/html"
diff --git a/jsf-ri/systest/web/composite/compActionWithArgs.xhtml b/jsf-ri/systest/web/composite/compActionWithArgs.xhtml
index ac12c28..f22a5c7 100644
--- a/jsf-ri/systest/web/composite/compActionWithArgs.xhtml
+++ b/jsf-ri/systest/web/composite/compActionWithArgs.xhtml
@@ -1,40 +1,45 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:h="http://java.sun.com/jsf/html"
diff --git a/jsf-ri/systest/web/composite/compAttributeRequired.xhtml b/jsf-ri/systest/web/composite/compAttributeRequired.xhtml
new file mode 100644
index 0000000..e7f5a0b
--- /dev/null
+++ b/jsf-ri/systest/web/composite/compAttributeRequired.xhtml
@@ -0,0 +1,12 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:ui="http://java.sun.com/jsf/facelets"       
+      xmlns:ez="http://java.sun.com/jsf/composite/composite">
+  <h:head />
+  <h:body>
+    <ui:repeat value="#{compositeBean.testValues}" var="v">
+      <ez:compAttributeRequired val="#{v}" modded="#{1 mod v}"/>
+    </ui:repeat>
+  </h:body>
+</html>
diff --git a/jsf-ri/systest/web/composite/compAttributeRequiredLiteral.xhtml b/jsf-ri/systest/web/composite/compAttributeRequiredLiteral.xhtml
new file mode 100644
index 0000000..4b0c197
--- /dev/null
+++ b/jsf-ri/systest/web/composite/compAttributeRequiredLiteral.xhtml
@@ -0,0 +1,12 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:ui="http://java.sun.com/jsf/facelets"       
+      xmlns:ez="http://java.sun.com/jsf/composite/composite">
+  <h:head />
+  <h:body>
+    <ui:repeat value="#{compositeBean.testValues}" var="v">
+      <ez:compAttributeRequired val="2" modded="#{1 mod v}"/>
+    </ui:repeat>
+  </h:body>
+</html>
diff --git a/jsf-ri/systest/web/composite/compAttributeRequiredNullValue.xhtml b/jsf-ri/systest/web/composite/compAttributeRequiredNullValue.xhtml
new file mode 100644
index 0000000..259c9de
--- /dev/null
+++ b/jsf-ri/systest/web/composite/compAttributeRequiredNullValue.xhtml
@@ -0,0 +1,12 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:ui="http://java.sun.com/jsf/facelets"       
+      xmlns:ez="http://java.sun.com/jsf/composite/composite">
+  <h:head />
+  <h:body>
+    <ui:repeat value="#{compositeBean.testValues}" var="v">
+      <ez:compAttributeRequired val="#{null}" modded="#{1 mod v}"/>
+    </ui:repeat>
+  </h:body>
+</html>
diff --git a/jsf-ri/systest/web/composite/compAttributeResourceRelocation.xhtml b/jsf-ri/systest/web/composite/compAttributeResourceRelocation.xhtml
index 1beb8bc..db03bc2 100644
--- a/jsf-ri/systest/web/composite/compAttributeResourceRelocation.xhtml
+++ b/jsf-ri/systest/web/composite/compAttributeResourceRelocation.xhtml
@@ -1,41 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html
       PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
diff --git a/jsf-ri/systest/web/composite/compAttributeWithArgs.xhtml b/jsf-ri/systest/web/composite/compAttributeWithArgs.xhtml
index 18912b4..8cf8e66 100644
--- a/jsf-ri/systest/web/composite/compAttributeWithArgs.xhtml
+++ b/jsf-ri/systest/web/composite/compAttributeWithArgs.xhtml
@@ -1,40 +1,45 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:h="http://java.sun.com/jsf/html"
diff --git a/jsf-ri/systest/web/composite/compositeComponentWithMultipleActions.xhtml b/jsf-ri/systest/web/composite/compositeComponentWithMultipleActions.xhtml
new file mode 100644
index 0000000..98a522f
--- /dev/null
+++ b/jsf-ri/systest/web/composite/compositeComponentWithMultipleActions.xhtml
@@ -0,0 +1,71 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:ez="http://java.sun.com/jsf/composite/composite">
+<h:head>
+<title>compcomp with multiple action and actionsources</title>
+</h:head>
+
+<h:body>
+
+  <ui:debug hotkey="p" rendered="true"/>
+
+<h:form prependId="false" id="form">
+
+  <ez:multiActionSource id="cc"
+      submitAction="#{multiActionComponentBean.submitAction}" 
+      cancelAction="#{multiActionComponentBean.cancelAction}">
+
+  </ez:multiActionSource>
+
+</h:form>
+
+<h:messages id="messages"/>
+
+</h:body>
+
+</html>
diff --git a/jsf-ri/systest/web/composite/compositeComponentWithMultipleActionsMethodSignatures.xhtml b/jsf-ri/systest/web/composite/compositeComponentWithMultipleActionsMethodSignatures.xhtml
new file mode 100644
index 0000000..486de9f
--- /dev/null
+++ b/jsf-ri/systest/web/composite/compositeComponentWithMultipleActionsMethodSignatures.xhtml
@@ -0,0 +1,71 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:ez="http://java.sun.com/jsf/composite/composite">
+<h:head>
+<title>compcomp with multiple action and actionsources</title>
+</h:head>
+
+<h:body>
+
+  <ui:debug hotkey="p" rendered="true"/>
+
+<h:form prependId="false" id="form">
+
+  <ez:multiActionSourceMethodSignatures id="cc"
+      submitAction="#{multiActionComponentBean.submitAction}" 
+      cancelAction="#{multiActionComponentBean.cancelAction}">
+
+  </ez:multiActionSourceMethodSignatures>
+
+</h:form>
+
+<h:messages id="messages"/>
+
+</h:body>
+
+</html>
diff --git a/jsf-ri/systest/web/composite/compositeComponentWithMultipleActions_cancel.xhtml b/jsf-ri/systest/web/composite/compositeComponentWithMultipleActions_cancel.xhtml
new file mode 100644
index 0000000..ab02143
--- /dev/null
+++ b/jsf-ri/systest/web/composite/compositeComponentWithMultipleActions_cancel.xhtml
@@ -0,0 +1,54 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title>cancel pressed</title></head>
+
+<body>
+
+  <p>cancel pressed</p>
+
+
+</body>
+
+</html>
diff --git a/jsf-ri/systest/web/composite/compositeComponentWithMultipleActions_submit.xhtml b/jsf-ri/systest/web/composite/compositeComponentWithMultipleActions_submit.xhtml
new file mode 100644
index 0000000..ec86211
--- /dev/null
+++ b/jsf-ri/systest/web/composite/compositeComponentWithMultipleActions_submit.xhtml
@@ -0,0 +1,54 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title>submit pressed</title></head>
+
+<body>
+
+  <p>submit pressed</p>
+
+
+</body>
+
+</html>
diff --git a/jsf-ri/systest/web/composite/compositeInsertChildrenNesting.xhtml b/jsf-ri/systest/web/composite/compositeInsertChildrenNesting.xhtml
index 7996cca..895e073 100644
--- a/jsf-ri/systest/web/composite/compositeInsertChildrenNesting.xhtml
+++ b/jsf-ri/systest/web/composite/compositeInsertChildrenNesting.xhtml
@@ -1,41 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html
       PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
@@ -59,4 +64,4 @@
 <h:commandButton id="submit" value="Submit" />
 </h:form>
 </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/jsf-ri/systest/web/composite/compositeInsertChildrenNesting02.xhtml b/jsf-ri/systest/web/composite/compositeInsertChildrenNesting02.xhtml
index df35a55..925dbf8 100644
--- a/jsf-ri/systest/web/composite/compositeInsertChildrenNesting02.xhtml
+++ b/jsf-ri/systest/web/composite/compositeInsertChildrenNesting02.xhtml
@@ -1,41 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html
       PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
@@ -54,4 +59,4 @@
     </h:link>
 </ez:compD>
 </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/jsf-ri/systest/web/composite/compositeInsertFacetNesting.xhtml b/jsf-ri/systest/web/composite/compositeInsertFacetNesting.xhtml
index 5b1e17f..0809a8c 100644
--- a/jsf-ri/systest/web/composite/compositeInsertFacetNesting.xhtml
+++ b/jsf-ri/systest/web/composite/compositeInsertFacetNesting.xhtml
@@ -1,41 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
- Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
 
- Contributor(s):
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html
       PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
@@ -63,4 +68,4 @@
 <h:commandButton id="submit" value="Submit" />
 </h:form>
 </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/jsf-ri/systest/web/composite/compositeInsertFacetNesting02.xhtml b/jsf-ri/systest/web/composite/compositeInsertFacetNesting02.xhtml
index a0540fc..e5a0f70 100644
--- a/jsf-ri/systest/web/composite/compositeInsertFacetNesting02.xhtml
+++ b/jsf-ri/systest/web/composite/compositeInsertFacetNesting02.xhtml
@@ -1,41 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html
       PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
@@ -57,4 +62,4 @@
    </f:facet>
 </ez:facetD>
 </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/jsf-ri/systest/web/composite/compositionWithinCompositeUsingPage.xhtml b/jsf-ri/systest/web/composite/compositionWithinCompositeUsingPage.xhtml
index 5da2ab2..3a67085 100644
--- a/jsf-ri/systest/web/composite/compositionWithinCompositeUsingPage.xhtml
+++ b/jsf-ri/systest/web/composite/compositionWithinCompositeUsingPage.xhtml
@@ -1,40 +1,45 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
- Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
 
- Contributor(s):
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:h="http://java.sun.com/jsf/html"
diff --git a/jsf-ri/systest/web/composite/customAction.xhtml b/jsf-ri/systest/web/composite/customAction.xhtml
index f43a29b..35501f4 100644
--- a/jsf-ri/systest/web/composite/customAction.xhtml
+++ b/jsf-ri/systest/web/composite/customAction.xhtml
@@ -1,40 +1,45 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:h="http://java.sun.com/jsf/html"
diff --git a/jsf-ri/systest/web/composite/decorate.xhtml b/jsf-ri/systest/web/composite/decorate.xhtml
index 94fd0fa..5eca662 100644
--- a/jsf-ri/systest/web/composite/decorate.xhtml
+++ b/jsf-ri/systest/web/composite/decorate.xhtml
@@ -1,41 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html
       PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
@@ -50,4 +55,4 @@
 <body>
     <ez:decorate/>
 </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/jsf-ri/systest/web/composite/defaultActionNext.xhtml b/jsf-ri/systest/web/composite/defaultActionNext.xhtml
index ee4b254..edc6d0d 100644
--- a/jsf-ri/systest/web/composite/defaultActionNext.xhtml
+++ b/jsf-ri/systest/web/composite/defaultActionNext.xhtml
@@ -1,40 +1,45 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:h="http://java.sun.com/jsf/html"
diff --git a/jsf-ri/systest/web/composite/defaultActionUsingPage.xhtml b/jsf-ri/systest/web/composite/defaultActionUsingPage.xhtml
index 9a18dda..33b8d73 100644
--- a/jsf-ri/systest/web/composite/defaultActionUsingPage.xhtml
+++ b/jsf-ri/systest/web/composite/defaultActionUsingPage.xhtml
@@ -1,40 +1,45 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:h="http://java.sun.com/jsf/html"
diff --git a/jsf-ri/systest/web/composite/defaultAttributeMethodExpression.xhtml b/jsf-ri/systest/web/composite/defaultAttributeMethodExpression.xhtml
index ac644f1..3fe7be2 100644
--- a/jsf-ri/systest/web/composite/defaultAttributeMethodExpression.xhtml
+++ b/jsf-ri/systest/web/composite/defaultAttributeMethodExpression.xhtml
@@ -1,41 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html
       PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
@@ -45,10 +50,10 @@
       xmlns:ui="http://java.sun.com/jsf/facelets"
       xmlns:ez="http://java.sun.com/jsf/composite/composite">
 <head>
-    <title>Decorate Test</title>
+    <title>Composite Component with cc:attributes that are method expressions that have default values</title>
 </head>
 <body>
     <ez:meDefaults id="def"/>
     <h:messages />
 </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/jsf-ri/systest/web/composite/defaultAttributeValueExpression.xhtml b/jsf-ri/systest/web/composite/defaultAttributeValueExpression.xhtml
new file mode 100644
index 0000000..d7bb19e
--- /dev/null
+++ b/jsf-ri/systest/web/composite/defaultAttributeValueExpression.xhtml
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:ez="http://java.sun.com/jsf/composite/composite">
+<head>
+    <title>Composite Component with cc:attributes that are value expressions that have default values</title>
+</head>
+<body>
+    <ez:veDefaults id="def"/>
+    <h:messages />
+</body>
+</html>
diff --git a/jsf-ri/systest/web/composite/defaultAttributeValueExpression_1966.xhtml b/jsf-ri/systest/web/composite/defaultAttributeValueExpression_1966.xhtml
new file mode 100644
index 0000000..a7cd9ba
--- /dev/null
+++ b/jsf-ri/systest/web/composite/defaultAttributeValueExpression_1966.xhtml
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ez="http://java.sun.com/jsf/composite/composite">
+<head>
+    <title>Composite Component with cc:attributes that are value expressions that have default values (Issue 1966: Non String default values)</title>
+</head>
+<body>
+    <ez:veDefaults_1966 id="WithValueEmptyList" items="#{compositeBean.emptyList}"/>
+    <ez:veDefaults_1966 id="WithValueNull" items="#{null}"/>
+    <ez:veDefaults_1966 id="WithValueEmptyString" items=""/>
+    <!-- @TODO read veDefaults_1966_Color but remove awt dependency -->
+</body>
+</html>
diff --git a/jsf-ri/systest/web/composite/defaultAttributeValueExpression_1986.xhtml b/jsf-ri/systest/web/composite/defaultAttributeValueExpression_1986.xhtml
new file mode 100644
index 0000000..3f48284
--- /dev/null
+++ b/jsf-ri/systest/web/composite/defaultAttributeValueExpression_1986.xhtml
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:ez="http://java.sun.com/jsf/composite/composite">
+<head>
+    <title>Composite Component with cc:attributes that are value expressions that have default values (Issue 1966: Non String default values)</title>
+</head>
+<body>
+    <h:form prependId="false">
+        <ez:veDefaults_1986 id="WithValueNull" value="#{compositeBean.bigDecimalValue}"/>
+        <ez:veDefaults_1986 id="WithValueEmpty" value=""/>
+    </h:form>
+</body>
+</html>
diff --git a/jsf-ri/systest/web/composite/defaultAttributeValuesUsingPage.xhtml b/jsf-ri/systest/web/composite/defaultAttributeValuesUsingPage.xhtml
index 55f9ef7..02894d7 100644
--- a/jsf-ri/systest/web/composite/defaultAttributeValuesUsingPage.xhtml
+++ b/jsf-ri/systest/web/composite/defaultAttributeValuesUsingPage.xhtml
@@ -1,40 +1,45 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
- Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
 
- Contributor(s):
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:h="http://java.sun.com/jsf/html"
diff --git a/jsf-ri/systest/web/composite/defaultAttributesUsingPage.xhtml b/jsf-ri/systest/web/composite/defaultAttributesUsingPage.xhtml
new file mode 100644
index 0000000..c7c024a
--- /dev/null
+++ b/jsf-ri/systest/web/composite/defaultAttributesUsingPage.xhtml
@@ -0,0 +1,62 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:my="http://java.sun.com/jsf/composite/composite">
+<h:head>
+  <title>A Simple JavaServer Faces 2.0 View</title>
+<style type="text/css">
+.grayBox { padding: 8px; margin: 10px 0; border: 1px solid #CCC; background-color: #f9f9f9;  }
+</style>
+
+</h:head>
+<h:body>
+  <h:form prependId="false">
+
+     <my:defaultAttributeValues id="mucomp" /> 
+
+  </h:form>
+</h:body>
+</html>
diff --git a/jsf-ri/systest/web/composite/insertchildrenrequired01.xhtml b/jsf-ri/systest/web/composite/insertchildrenrequired01.xhtml
index 925a036..be678ed 100644
--- a/jsf-ri/systest/web/composite/insertchildrenrequired01.xhtml
+++ b/jsf-ri/systest/web/composite/insertchildrenrequired01.xhtml
@@ -1,40 +1,45 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:h="http://java.sun.com/jsf/html"
diff --git a/jsf-ri/systest/web/composite/insertchildrenrequired02.xhtml b/jsf-ri/systest/web/composite/insertchildrenrequired02.xhtml
index a80a4ef..02c65eb 100644
--- a/jsf-ri/systest/web/composite/insertchildrenrequired02.xhtml
+++ b/jsf-ri/systest/web/composite/insertchildrenrequired02.xhtml
@@ -1,40 +1,45 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:h="http://java.sun.com/jsf/html"
diff --git a/jsf-ri/systest/web/composite/insertchildrenrequired03.xhtml b/jsf-ri/systest/web/composite/insertchildrenrequired03.xhtml
index d40a9cf..e6d1347 100644
--- a/jsf-ri/systest/web/composite/insertchildrenrequired03.xhtml
+++ b/jsf-ri/systest/web/composite/insertchildrenrequired03.xhtml
@@ -1,40 +1,45 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:h="http://java.sun.com/jsf/html"
diff --git a/jsf-ri/systest/web/composite/insertfacetrequired01.xhtml b/jsf-ri/systest/web/composite/insertfacetrequired01.xhtml
index fa7f439..469b63a 100644
--- a/jsf-ri/systest/web/composite/insertfacetrequired01.xhtml
+++ b/jsf-ri/systest/web/composite/insertfacetrequired01.xhtml
@@ -1,40 +1,45 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:h="http://java.sun.com/jsf/html"
diff --git a/jsf-ri/systest/web/composite/insertfacetrequired02.xhtml b/jsf-ri/systest/web/composite/insertfacetrequired02.xhtml
index b519961..b4593d7 100644
--- a/jsf-ri/systest/web/composite/insertfacetrequired02.xhtml
+++ b/jsf-ri/systest/web/composite/insertfacetrequired02.xhtml
@@ -1,40 +1,45 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:h="http://java.sun.com/jsf/html"
diff --git a/jsf-ri/systest/web/composite/insertfacetrequired03.xhtml b/jsf-ri/systest/web/composite/insertfacetrequired03.xhtml
index 6dc683d..1f1579a 100644
--- a/jsf-ri/systest/web/composite/insertfacetrequired03.xhtml
+++ b/jsf-ri/systest/web/composite/insertfacetrequired03.xhtml
@@ -1,40 +1,45 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:h="http://java.sun.com/jsf/html"
diff --git a/jsf-ri/systest/web/composite/invalidMeArgs.xhtml b/jsf-ri/systest/web/composite/invalidMeArgs.xhtml
index 0bd7955..a8ec7a2 100644
--- a/jsf-ri/systest/web/composite/invalidMeArgs.xhtml
+++ b/jsf-ri/systest/web/composite/invalidMeArgs.xhtml
@@ -1,40 +1,45 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:h="http://java.sun.com/jsf/html"
diff --git a/jsf-ri/systest/web/composite/invalidVeArgs.xhtml b/jsf-ri/systest/web/composite/invalidVeArgs.xhtml
index e228c2d..84d2150 100644
--- a/jsf-ri/systest/web/composite/invalidVeArgs.xhtml
+++ b/jsf-ri/systest/web/composite/invalidVeArgs.xhtml
@@ -1,40 +1,45 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:h="http://java.sun.com/jsf/html"
diff --git a/jsf-ri/systest/web/composite/isCompositeComponentUsing.xhtml b/jsf-ri/systest/web/composite/isCompositeComponentUsing.xhtml
new file mode 100644
index 0000000..3068a10
--- /dev/null
+++ b/jsf-ri/systest/web/composite/isCompositeComponentUsing.xhtml
@@ -0,0 +1,67 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ez="http://java.sun.com/jsf/composite/composite">
+<h:head>
+<title>isCompositeComponent test</title>
+</h:head>
+
+<h:body>
+
+<h:form id="form">
+
+  <ez:isCompositeComponent id="composite" >
+
+    <p>isCompositeComponent: <h:outputText value="#{test1.isCompositeComponentValue}" /></p>
+    
+  </ez:isCompositeComponent>
+
+
+</h:form>
+
+</h:body>
+
+</html>
diff --git a/jsf-ri/systest/web/composite/issue-1782-using.xhtml b/jsf-ri/systest/web/composite/issue-1782-using.xhtml
new file mode 100644
index 0000000..bec6487
--- /dev/null
+++ b/jsf-ri/systest/web/composite/issue-1782-using.xhtml
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+	xmlns:h="http://java.sun.com/jsf/html"
+	xmlns:tmo="http://java.sun.com/jsf/composite/tmo">
+
+<h:head>
+	<title>Test page</title>
+</h:head>
+
+<h:body>
+	<h:form id="form">
+		<tmo:block collapsable="#{'true'}"/>
+	</h:form>
+</h:body>
+</html>
diff --git a/jsf-ri/systest/web/composite/issue1318.xhtml b/jsf-ri/systest/web/composite/issue1318.xhtml
index 57256b9..28cf5a0 100644
--- a/jsf-ri/systest/web/composite/issue1318.xhtml
+++ b/jsf-ri/systest/web/composite/issue1318.xhtml
@@ -1,41 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html
       PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
@@ -53,4 +58,4 @@
     </h:form>
     <h:messages />
 </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/jsf-ri/systest/web/composite/javaTopLevelActionListenerComponentUsingPage.xhtml b/jsf-ri/systest/web/composite/javaTopLevelActionListenerComponentUsingPage.xhtml
index bfb4878..9625b59 100644
--- a/jsf-ri/systest/web/composite/javaTopLevelActionListenerComponentUsingPage.xhtml
+++ b/jsf-ri/systest/web/composite/javaTopLevelActionListenerComponentUsingPage.xhtml
@@ -1,39 +1,43 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
 
- Contributor(s):
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 -->
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:h="http://java.sun.com/jsf/html"
diff --git a/jsf-ri/systest/web/composite/javaTopLevelComponent2.xhtml b/jsf-ri/systest/web/composite/javaTopLevelComponent2.xhtml
index 4cd6fe4..244503d 100644
--- a/jsf-ri/systest/web/composite/javaTopLevelComponent2.xhtml
+++ b/jsf-ri/systest/web/composite/javaTopLevelComponent2.xhtml
@@ -1,40 +1,45 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:h="http://java.sun.com/jsf/html"
diff --git a/jsf-ri/systest/web/composite/javaTopLevelComponentUsingPage.xhtml b/jsf-ri/systest/web/composite/javaTopLevelComponentUsingPage.xhtml
index 5f1f9ea..e41f24a 100644
--- a/jsf-ri/systest/web/composite/javaTopLevelComponentUsingPage.xhtml
+++ b/jsf-ri/systest/web/composite/javaTopLevelComponentUsingPage.xhtml
@@ -1,40 +1,45 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:h="http://java.sun.com/jsf/html"
diff --git a/jsf-ri/systest/web/composite/jsr276-using.xhtml b/jsf-ri/systest/web/composite/jsr276-using.xhtml
index 4ebdb14..f7d76b3 100644
--- a/jsf-ri/systest/web/composite/jsr276-using.xhtml
+++ b/jsf-ri/systest/web/composite/jsr276-using.xhtml
@@ -1,40 +1,45 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:h="http://java.sun.com/jsf/html"
diff --git a/jsf-ri/systest/web/composite/methodExprNotRequired.xhtml b/jsf-ri/systest/web/composite/methodExprNotRequired.xhtml
index d7720a9..bc553c7 100644
--- a/jsf-ri/systest/web/composite/methodExprNotRequired.xhtml
+++ b/jsf-ri/systest/web/composite/methodExprNotRequired.xhtml
@@ -1,40 +1,45 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:h="http://java.sun.com/jsf/html"
diff --git a/jsf-ri/systest/web/composite/methodExprRequired.xhtml b/jsf-ri/systest/web/composite/methodExprRequired.xhtml
index c7ee243..fc3b1c7 100644
--- a/jsf-ri/systest/web/composite/methodExprRequired.xhtml
+++ b/jsf-ri/systest/web/composite/methodExprRequired.xhtml
@@ -1,40 +1,45 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:h="http://java.sun.com/jsf/html"
diff --git a/jsf-ri/systest/web/composite/nesting01.xhtml b/jsf-ri/systest/web/composite/nesting01.xhtml
index bbfc842..219c64a 100644
--- a/jsf-ri/systest/web/composite/nesting01.xhtml
+++ b/jsf-ri/systest/web/composite/nesting01.xhtml
@@ -1,41 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html
       PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
@@ -50,4 +55,4 @@
 <body>
     <ez:nesting1 value="Hello World" />   
 </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/jsf-ri/systest/web/composite/nesting02.xhtml b/jsf-ri/systest/web/composite/nesting02.xhtml
index b15041d..a7f7926 100644
--- a/jsf-ri/systest/web/composite/nesting02.xhtml
+++ b/jsf-ri/systest/web/composite/nesting02.xhtml
@@ -1,41 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html
       PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
@@ -52,4 +57,4 @@
         <ez:nesting2 customAction="#{compositeBean.doNav}" />
     </h:form>
 </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/jsf-ri/systest/web/composite/nesting03.xhtml b/jsf-ri/systest/web/composite/nesting03.xhtml
index 962edd2..d2ad76b 100644
--- a/jsf-ri/systest/web/composite/nesting03.xhtml
+++ b/jsf-ri/systest/web/composite/nesting03.xhtml
@@ -1,41 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html
       PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
@@ -52,4 +57,4 @@
         <ez:nesting3 action="#{compositeBean.doNav}" />
     </h:form>
 </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/jsf-ri/systest/web/composite/nesting04.xhtml b/jsf-ri/systest/web/composite/nesting04.xhtml
index aef5f2b..0e4d51a 100644
--- a/jsf-ri/systest/web/composite/nesting04.xhtml
+++ b/jsf-ri/systest/web/composite/nesting04.xhtml
@@ -1,41 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html
       PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
@@ -53,4 +58,4 @@
         <h:commandButton id="sub" value="Submit" />
     </h:form>
 </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/jsf-ri/systest/web/composite/nesting05.xhtml b/jsf-ri/systest/web/composite/nesting05.xhtml
index 5bb30c7..35eb8e1 100644
--- a/jsf-ri/systest/web/composite/nesting05.xhtml
+++ b/jsf-ri/systest/web/composite/nesting05.xhtml
@@ -1,41 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html
       PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
@@ -50,4 +55,4 @@
 <body>
     <ez:nesting6 id="nesting6" bean="#{compositeBean}" />
 </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/jsf-ri/systest/web/composite/nesting06.xhtml b/jsf-ri/systest/web/composite/nesting06.xhtml
index d18d1f9..7836e0b 100644
--- a/jsf-ri/systest/web/composite/nesting06.xhtml
+++ b/jsf-ri/systest/web/composite/nesting06.xhtml
@@ -1,41 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html
       PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
@@ -50,4 +55,4 @@
 <body>
     <ez:nesting10 id="nesting10" bean="#{compositeBean}" />
 </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/jsf-ri/systest/web/composite/nesting07.xhtml b/jsf-ri/systest/web/composite/nesting07.xhtml
index 06f7cd1..433eb0b 100644
--- a/jsf-ri/systest/web/composite/nesting07.xhtml
+++ b/jsf-ri/systest/web/composite/nesting07.xhtml
@@ -1,41 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html
       PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
diff --git a/jsf-ri/systest/web/composite/nesting08.xhtml b/jsf-ri/systest/web/composite/nesting08.xhtml
index 94794ac..0e60e48 100644
--- a/jsf-ri/systest/web/composite/nesting08.xhtml
+++ b/jsf-ri/systest/web/composite/nesting08.xhtml
@@ -1,41 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html
       PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
diff --git a/jsf-ri/systest/web/composite/nestingCompositeExpressionTreeCreation.xhtml b/jsf-ri/systest/web/composite/nestingCompositeExpressionTreeCreation.xhtml
index 438a49a..bfe0873 100644
--- a/jsf-ri/systest/web/composite/nestingCompositeExpressionTreeCreation.xhtml
+++ b/jsf-ri/systest/web/composite/nestingCompositeExpressionTreeCreation.xhtml
@@ -1,41 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html
       PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
@@ -54,4 +59,4 @@
         <h:commandButton id="submit" value="Redisplay" /> 
     </h:form>
 </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/jsf-ri/systest/web/composite/nestingNav.xhtml b/jsf-ri/systest/web/composite/nestingNav.xhtml
index 7281a5e..cb9828f 100644
--- a/jsf-ri/systest/web/composite/nestingNav.xhtml
+++ b/jsf-ri/systest/web/composite/nestingNav.xhtml
@@ -1,41 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html
       PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
@@ -46,4 +51,4 @@
 <body>
 
 </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/jsf-ri/systest/web/composite/programmaticDefaultAttributeValueAccess.xhtml b/jsf-ri/systest/web/composite/programmaticDefaultAttributeValueAccess.xhtml
index 58f03ae..941230c 100644
--- a/jsf-ri/systest/web/composite/programmaticDefaultAttributeValueAccess.xhtml
+++ b/jsf-ri/systest/web/composite/programmaticDefaultAttributeValueAccess.xhtml
@@ -1,39 +1,43 @@
 <?xml version='1.0' encoding='UTF-8' ?>
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
 
@@ -42,7 +46,7 @@
       xmlns:h="http://java.sun.com/jsf/html"
       xmlns:ez="http://java.sun.com/jsf/composite/composite">
     <h:head>
-        <title>Facelet Title</title>
+        <title>test programmatic access of cc:attributes that have default values</title>
     </h:head>
     <h:body>
         <ez:javaBackedComponentDefaultAttrValues />
diff --git a/jsf-ri/systest/web/composite/renderfacetrequired01.xhtml b/jsf-ri/systest/web/composite/renderfacetrequired01.xhtml
index e60adaa..33fff5c 100644
--- a/jsf-ri/systest/web/composite/renderfacetrequired01.xhtml
+++ b/jsf-ri/systest/web/composite/renderfacetrequired01.xhtml
@@ -1,40 +1,45 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:h="http://java.sun.com/jsf/html"
diff --git a/jsf-ri/systest/web/composite/renderfacetrequired02.xhtml b/jsf-ri/systest/web/composite/renderfacetrequired02.xhtml
index 7437a77..67bc293 100644
--- a/jsf-ri/systest/web/composite/renderfacetrequired02.xhtml
+++ b/jsf-ri/systest/web/composite/renderfacetrequired02.xhtml
@@ -1,40 +1,45 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:h="http://java.sun.com/jsf/html"
diff --git a/jsf-ri/systest/web/composite/renderfacetrequired03.xhtml b/jsf-ri/systest/web/composite/renderfacetrequired03.xhtml
index 9af1bcf..a6ce70f 100644
--- a/jsf-ri/systest/web/composite/renderfacetrequired03.xhtml
+++ b/jsf-ri/systest/web/composite/renderfacetrequired03.xhtml
@@ -1,40 +1,45 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:h="http://java.sun.com/jsf/html"
diff --git a/jsf-ri/systest/web/composite/requiredAttribute.xhtml b/jsf-ri/systest/web/composite/requiredAttribute.xhtml
index 8554a22..44b8c81 100644
--- a/jsf-ri/systest/web/composite/requiredAttribute.xhtml
+++ b/jsf-ri/systest/web/composite/requiredAttribute.xhtml
@@ -1,40 +1,45 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:h="http://java.sun.com/jsf/html"
diff --git a/jsf-ri/systest/web/composite/requiredFacet.xhtml b/jsf-ri/systest/web/composite/requiredFacet.xhtml
index c4bf076..6b77646 100644
--- a/jsf-ri/systest/web/composite/requiredFacet.xhtml
+++ b/jsf-ri/systest/web/composite/requiredFacet.xhtml
@@ -1,40 +1,45 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:h="http://java.sun.com/jsf/html"
diff --git a/jsf-ri/systest/web/composite/resourceDependencyComponentNextPage.xhtml b/jsf-ri/systest/web/composite/resourceDependencyComponentNextPage.xhtml
index 0ea9599..b44e042 100644
--- a/jsf-ri/systest/web/composite/resourceDependencyComponentNextPage.xhtml
+++ b/jsf-ri/systest/web/composite/resourceDependencyComponentNextPage.xhtml
@@ -1,40 +1,45 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:h="http://java.sun.com/jsf/html"
diff --git a/jsf-ri/systest/web/composite/resourceDependencyComponentUsingPage.xhtml b/jsf-ri/systest/web/composite/resourceDependencyComponentUsingPage.xhtml
index 7e27545..c5e6df2 100644
--- a/jsf-ri/systest/web/composite/resourceDependencyComponentUsingPage.xhtml
+++ b/jsf-ri/systest/web/composite/resourceDependencyComponentUsingPage.xhtml
@@ -1,40 +1,45 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:h="http://java.sun.com/jsf/html"
diff --git a/jsf-ri/systest/web/composite/simpleCompositeComponentUsingPage.xhtml b/jsf-ri/systest/web/composite/simpleCompositeComponentUsingPage.xhtml
new file mode 100644
index 0000000..0fd8a5d
--- /dev/null
+++ b/jsf-ri/systest/web/composite/simpleCompositeComponentUsingPage.xhtml
@@ -0,0 +1,21 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:mycc="http://java.sun.com/jsf/composite/composite">
+    <h:head>
+        <title>Facelet Title</title>
+    </h:head>
+    <h:body>
+        Hello from Facelets
+        <h:messages/>
+        <h:form>
+            username :
+            <f:validateBean>
+            <mycc:simpleCompositeComponent value="#{hello.fname}"/> <br/>
+            </f:validateBean>
+            <h:commandButton value="submit" action="#{hello.getNextAction}"/>
+        </h:form>
+    </h:body>
+</html>
diff --git a/jsf-ri/systest/web/composite/submit.xhtml b/jsf-ri/systest/web/composite/submit.xhtml
new file mode 100644
index 0000000..287a429
--- /dev/null
+++ b/jsf-ri/systest/web/composite/submit.xhtml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html
+        PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"
+        xmlns:h="http://java.sun.com/jsf/html">
+<head>
+    <title>Hello</title>
+</head>
+<body>
+<h:form id="form">
+
+ <h:outputText id="string"
+                 value="#{hello.message}"/>
+</h:form>
+</body>
+</html>
\ No newline at end of file
diff --git a/jsf-ri/systest/web/composite/validator.xhtml b/jsf-ri/systest/web/composite/validator.xhtml
index 2f42781..e305ba7 100644
--- a/jsf-ri/systest/web/composite/validator.xhtml
+++ b/jsf-ri/systest/web/composite/validator.xhtml
@@ -1,40 +1,45 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:h="http://java.sun.com/jsf/html"
diff --git a/jsf-ri/systest/web/composite/valueChangeListener.xhtml b/jsf-ri/systest/web/composite/valueChangeListener.xhtml
index 4b3ffe1..8ddadcd 100644
--- a/jsf-ri/systest/web/composite/valueChangeListener.xhtml
+++ b/jsf-ri/systest/web/composite/valueChangeListener.xhtml
@@ -1,40 +1,45 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:h="http://java.sun.com/jsf/html"
diff --git a/jsf-ri/systest/web/composite/valueChangeListenerSetPropertyActionListener01.xhtml b/jsf-ri/systest/web/composite/valueChangeListenerSetPropertyActionListener01.xhtml
index 52bd66a..907d42a 100644
--- a/jsf-ri/systest/web/composite/valueChangeListenerSetPropertyActionListener01.xhtml
+++ b/jsf-ri/systest/web/composite/valueChangeListenerSetPropertyActionListener01.xhtml
@@ -1,40 +1,45 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:h="http://java.sun.com/jsf/html"
diff --git a/jsf-ri/systest/web/conditionalNav.xhtml b/jsf-ri/systest/web/conditionalNav.xhtml
index ca597ee..f43fed8 100644
--- a/jsf-ri/systest/web/conditionalNav.xhtml
+++ b/jsf-ri/systest/web/conditionalNav.xhtml
@@ -1,38 +1,45 @@
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:h="http://java.sun.com/jsf/html"
diff --git a/jsf-ri/systest/web/config01.jsp b/jsf-ri/systest/web/config01.jsp
index aa7d4f7..1b18420 100644
--- a/jsf-ri/systest/web/config01.jsp
+++ b/jsf-ri/systest/web/config01.jsp
@@ -1,37 +1,43 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
 <%@ page contentType="text/html"
diff --git a/jsf-ri/systest/web/converter.jsp b/jsf-ri/systest/web/converter.jsp
index a6695d4..969f35d 100644
--- a/jsf-ri/systest/web/converter.jsp
+++ b/jsf-ri/systest/web/converter.jsp
@@ -1,37 +1,43 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
 <%@ page contentType="text/html"
diff --git a/jsf-ri/systest/web/converter01.jsp b/jsf-ri/systest/web/converter01.jsp
index 69770c4..ae8f5f3 100644
--- a/jsf-ri/systest/web/converter01.jsp
+++ b/jsf-ri/systest/web/converter01.jsp
@@ -1,37 +1,43 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
 <%@ page contentType="text/html"
diff --git a/jsf-ri/systest/web/converter02.jsp b/jsf-ri/systest/web/converter02.jsp
index 2e2f297..922eaa9 100644
--- a/jsf-ri/systest/web/converter02.jsp
+++ b/jsf-ri/systest/web/converter02.jsp
@@ -1,37 +1,43 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
 <%@ page contentType="text/html" %>
diff --git a/jsf-ri/systest/web/converter03.jsp b/jsf-ri/systest/web/converter03.jsp
index f0c49f3..5d91401 100644
--- a/jsf-ri/systest/web/converter03.jsp
+++ b/jsf-ri/systest/web/converter03.jsp
@@ -1,44 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
 
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
diff --git a/jsf-ri/systest/web/converter04.jsp b/jsf-ri/systest/web/converter04.jsp
index c994c7d..d7bdfdd 100644
--- a/jsf-ri/systest/web/converter04.jsp
+++ b/jsf-ri/systest/web/converter04.jsp
@@ -1,44 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
 
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
diff --git a/jsf-ri/systest/web/converter05.jsp b/jsf-ri/systest/web/converter05.jsp
index 1c40ec9..babbbd1 100644
--- a/jsf-ri/systest/web/converter05.jsp
+++ b/jsf-ri/systest/web/converter05.jsp
@@ -1,43 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
+
     <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
     <html>
         <head>
@@ -119,4 +122,4 @@
                 </h:outputText>
             </f:view>
         </body>
-    </html>
\ No newline at end of file
+    </html>
diff --git a/jsf-ri/systest/web/converter06.jsp b/jsf-ri/systest/web/converter06.jsp
index b30d183..37d3e8f 100644
--- a/jsf-ri/systest/web/converter06.jsp
+++ b/jsf-ri/systest/web/converter06.jsp
@@ -1,44 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
 
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
diff --git a/jsf-ri/systest/web/converter07.jsp b/jsf-ri/systest/web/converter07.jsp
new file mode 100644
index 0000000..6ec5b7a
--- /dev/null
+++ b/jsf-ri/systest/web/converter07.jsp
@@ -0,0 +1,110 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+  <head>
+    <title>Converters</title>
+    <%@ taglib uri="http://java.sun.com/jsf/core"  prefix="f" %>
+    <%@ taglib uri="http://java.sun.com/jsf/html"  prefix="h" %>
+  </head>
+
+  <body>
+    <h1>Converters</h1>
+
+<f:view>
+
+  <h:form>
+
+    <h:panelGrid columns="2">
+
+<%-- Case 1: Double Converter with "converterId" attribute --%>
+
+      <h:inputText id="text1" value="2.2250738585072012e-308" size="10" maxlength="50">
+         <f:converter converterId="javax.faces.Double" />
+      </h:inputText>
+
+      <h:message for="text1" />
+
+      <h:inputText id="text2" value="0.00022250738585072012e-304" size="10" maxlength="50">
+         <f:converter converterId="javax.faces.Double" />
+      </h:inputText>
+
+      <h:message for="text2" />
+
+      <h:inputText id="text3" value="00000000002.2250738585072012e-308" size="10" maxlength="50">
+         <f:converter converterId="javax.faces.Double" />
+      </h:inputText>
+
+      <h:message for="text3" />
+
+      <h:inputText id="text4" value="2.225073858507201200000e-308" size="10" maxlength="50">
+         <f:converter converterId="javax.faces.Double" />
+      </h:inputText>
+
+      <h:message for="text4" />
+
+      <h:inputText id="text5" value="2.2250738585072012e-00308" size="10" maxlength="50">
+         <f:converter converterId="javax.faces.Double" />
+      </h:inputText>
+
+      <h:message for="text5" />
+
+      <h:inputText id="text6" value="2.2250738585072012997800001e-308" size="10" maxlength="50">
+         <f:converter converterId="javax.faces.Double" />
+      </h:inputText>
+
+      <h:message for="text6" />
+
+      <h:commandButton value="submit" /> <h:messages />
+
+    </h:panelGrid>
+
+  </h:form>
+
+</f:view>
+
+    <hr>
+  </body>
+</html>
diff --git a/jsf-ri/systest/web/duplicateIds01.jsp b/jsf-ri/systest/web/duplicateIds01.jsp
index b284eb9..f590425 100644
--- a/jsf-ri/systest/web/duplicateIds01.jsp
+++ b/jsf-ri/systest/web/duplicateIds01.jsp
@@ -1,43 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
+
 
 <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
 <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
diff --git a/jsf-ri/systest/web/duplicateIds02.jsp b/jsf-ri/systest/web/duplicateIds02.jsp
index ca59b2b..029a8ae 100644
--- a/jsf-ri/systest/web/duplicateIds02.jsp
+++ b/jsf-ri/systest/web/duplicateIds02.jsp
@@ -1,43 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
+
 
 <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
 <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
diff --git a/jsf-ri/systest/web/duplicateIds03.jsp b/jsf-ri/systest/web/duplicateIds03.jsp
index 2f73a9b..f4df84d 100644
--- a/jsf-ri/systest/web/duplicateIds03.jsp
+++ b/jsf-ri/systest/web/duplicateIds03.jsp
@@ -1,43 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
+
 
 <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
 <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
diff --git a/jsf-ri/systest/web/duplicateIds04.jsp b/jsf-ri/systest/web/duplicateIds04.jsp
index 487e5ce..3d75ea7 100644
--- a/jsf-ri/systest/web/duplicateIds04.jsp
+++ b/jsf-ri/systest/web/duplicateIds04.jsp
@@ -1,43 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
+
 
 <%--
   - @@copyright@@
diff --git a/jsf-ri/systest/web/duplicateIds05.jsp b/jsf-ri/systest/web/duplicateIds05.jsp
index e19576d..50a8f5c 100644
--- a/jsf-ri/systest/web/duplicateIds05.jsp
+++ b/jsf-ri/systest/web/duplicateIds05.jsp
@@ -1,43 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
+
 
 <%@ taglib uri="http://java.sun.com/jsf/core"  prefix="f" %>
 <%@ taglib uri="http://java.sun.com/jsf/html"  prefix="h" %>
diff --git a/jsf-ri/systest/web/dynamicComponents.xhtml b/jsf-ri/systest/web/dynamicComponents.xhtml
index 4f83d29..68986eb 100644
--- a/jsf-ri/systest/web/dynamicComponents.xhtml
+++ b/jsf-ri/systest/web/dynamicComponents.xhtml
@@ -1,40 +1,45 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:h="http://java.sun.com/jsf/html"
diff --git a/jsf-ri/systest/web/dynamicComponents00.xhtml b/jsf-ri/systest/web/dynamicComponents00.xhtml
index c489356..e9b83f0 100644
--- a/jsf-ri/systest/web/dynamicComponents00.xhtml
+++ b/jsf-ri/systest/web/dynamicComponents00.xhtml
@@ -1,40 +1,45 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:h="http://java.sun.com/jsf/html"
diff --git a/jsf-ri/systest/web/dynamicComponents01.xhtml b/jsf-ri/systest/web/dynamicComponents01.xhtml
index 168cc2f..1460b0c 100644
--- a/jsf-ri/systest/web/dynamicComponents01.xhtml
+++ b/jsf-ri/systest/web/dynamicComponents01.xhtml
@@ -1,40 +1,45 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:h="http://java.sun.com/jsf/html"
diff --git a/jsf-ri/systest/web/dynamicComponents02.xhtml b/jsf-ri/systest/web/dynamicComponents02.xhtml
index dafa7d3..0bbb874 100644
--- a/jsf-ri/systest/web/dynamicComponents02.xhtml
+++ b/jsf-ri/systest/web/dynamicComponents02.xhtml
@@ -1,40 +1,45 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:h="http://java.sun.com/jsf/html"
diff --git a/jsf-ri/systest/web/dynamicComponents_2119.xhtml b/jsf-ri/systest/web/dynamicComponents_2119.xhtml
new file mode 100644
index 0000000..cf18768
--- /dev/null
+++ b/jsf-ri/systest/web/dynamicComponents_2119.xhtml
@@ -0,0 +1,29 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<ui:composition xmlns="http://www.w3.org/1999/xhtml"
+				xmlns:h="http://java.sun.com/jsf/html"
+				xmlns:f="http://java.sun.com/jsf/core"
+				xmlns:ui="http://java.sun.com/jsf/facelets"
+				xmlns:test="http://testcomponent">
+
+	<h2>Add Test Instructions</h2>
+	
+	<ol>
+		<li>Just before the page is rendered (pre render view event), a custom component should have created a dynamic component (PanelGrid) and added it as a child.</li>
+ 		<li>Click 'PostBack'. The Action processing for the button will create another dynamic component (OutputText) and add it as a child to the dynamic PanelGrid component.</li>
+        <li>Click 'PostBack' again.  The PanelGrid should still have the OutputText child.</li>
+	</ol>
+		
+	<h:messages/>
+		
+	<h:form prependId="false" id="dynamicForm">
+	
+           <test:addcomponent1/>
+		
+           <br/>
+
+           <h:commandButton id="postback" value="PostBack" action = "#{testManagedBean.save}"/>
+
+	</h:form>			
+	
+</ui:composition>
+
diff --git a/jsf-ri/systest/web/dynamicComponents_2121.xhtml b/jsf-ri/systest/web/dynamicComponents_2121.xhtml
new file mode 100644
index 0000000..afae49e
--- /dev/null
+++ b/jsf-ri/systest/web/dynamicComponents_2121.xhtml
@@ -0,0 +1,26 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<ui:composition xmlns="http://www.w3.org/1999/xhtml"
+				xmlns:h="http://java.sun.com/jsf/html"
+				xmlns:f="http://java.sun.com/jsf/core"
+				xmlns:ui="http://java.sun.com/jsf/facelets"
+				xmlns:test="http://testcomponent">
+
+	<h2>Add Test Instructions</h2>
+	
+	<ol>
+ 		<li>Click 'AddComponent'. The Action processing for the button will create another dynamic component (OutputText) and add it as a child to the PanelGroup component.</li>
+        <li>Each subsequent 'AddComponent' click should dynamically create and add an OutputText component at the end.</li>  
+	</ol>
+		
+	<h:messages/>
+		
+	<h:form prependId="false" id="dynamicForm">
+	
+           <h:panelGroup id="group">
+              <h:commandButton id="add" value="AddComponent" action="#{testManagedBean.addComponent}"/>
+           </h:panelGroup> 
+		
+	</h:form>			
+	
+</ui:composition>
+
diff --git a/jsf-ri/systest/web/dynamicComponents_common.xhtml b/jsf-ri/systest/web/dynamicComponents_common.xhtml
new file mode 100644
index 0000000..3c0d8b4
--- /dev/null
+++ b/jsf-ri/systest/web/dynamicComponents_common.xhtml
@@ -0,0 +1,69 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+      
+	<body>
+	
+		<h1>SystemEvent Acid Test</h1>		
+		
+		<p>
+			This WAR tests aspects of JSF SystemEvent handling. Click on each test below:
+		</p>
+		
+		<ol>
+			<li><a href="dynamicComponents_index.xhtml">Add test</a></li>
+			<li><a href="dynamicComponents_toggle.xhtml">Toggle test</a></li>
+			<li><a href="dynamicComponents_recursive.xhtml">Recursive test</a></li>
+			<li><a href="dynamicComponents_stable.xhtml">Stable test</a></li>
+			<li><a href="dynamicComponents_table.xhtml">table test</a></li>
+		</ol>
+		
+		<hr/>
+		
+		<ui:insert />
+		
+	</body>
+</html>
diff --git a/jsf-ri/systest/web/dynamicComponents_index.xhtml b/jsf-ri/systest/web/dynamicComponents_index.xhtml
new file mode 100644
index 0000000..0d8ed6d
--- /dev/null
+++ b/jsf-ri/systest/web/dynamicComponents_index.xhtml
@@ -0,0 +1,29 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<ui:composition xmlns="http://www.w3.org/1999/xhtml"
+				xmlns:h="http://java.sun.com/jsf/html"
+				xmlns:f="http://java.sun.com/jsf/core"
+				xmlns:ui="http://java.sun.com/jsf/facelets"
+				xmlns:test="http://testcomponent"
+				template="dynamicComponents_common.xhtml">
+
+	<h2>Add Test Instructions</h2>
+	
+	<ol>
+		<li>The component should have dynamically modified the tree so that 'Dynamically added child' appears inside the red box</li>
+		<li>Click 'POSTback'. The 'Dynamically added child' should not disappear (because it should have been serialized in the ViewState)</li>
+	</ol>
+		
+	<h:messages/>
+		
+	<h:form prependId="false" form="dynamicForm">
+	
+		<test:addcomponent/>
+		
+		<br/>
+		
+		<h:commandButton id="button" value="POSTback" action="#{testManagedBean.save}"/>
+		
+	</h:form>			
+	
+</ui:composition>
+
diff --git a/jsf-ri/systest/web/dynamicComponents_recursive.xhtml b/jsf-ri/systest/web/dynamicComponents_recursive.xhtml
new file mode 100644
index 0000000..293b10a
--- /dev/null
+++ b/jsf-ri/systest/web/dynamicComponents_recursive.xhtml
@@ -0,0 +1,29 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<ui:composition xmlns="http://www.w3.org/1999/xhtml"
+				xmlns:h="http://java.sun.com/jsf/html"
+				xmlns:f="http://java.sun.com/jsf/core"
+				xmlns:ui="http://java.sun.com/jsf/facelets"
+				xmlns:test="http://testcomponent"
+				template="dynamicComponents_common.xhtml">
+	
+	<h2>Recursive Test Instructions</h2>
+	
+	<ol>
+		<li>The component should have dynamically modified the tree so that 'Dynamically added child' appears inside the red box</li>
+		<li>There should be a nested component that also contains 'Dynamically added child' inside the red box</li>
+		<li>Click 'POSTback'. Nothing should disappear (because it should have been serialized in the ViewState)</li>
+	</ol>
+		
+	<h:messages/>
+		
+	<h:form prependId="false" form="dynamicForm">
+	
+		<test:recursivecomponent/>
+		
+		<br/>
+		
+		<h:commandButton id="button" value="POSTback" action="#{testManagedBean.save}"/>
+		
+	</h:form>			
+
+</ui:composition>
\ No newline at end of file
diff --git a/jsf-ri/systest/web/dynamicComponents_stable.xhtml b/jsf-ri/systest/web/dynamicComponents_stable.xhtml
new file mode 100644
index 0000000..e9c4e85
--- /dev/null
+++ b/jsf-ri/systest/web/dynamicComponents_stable.xhtml
@@ -0,0 +1,30 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<ui:composition xmlns="http://www.w3.org/1999/xhtml"
+				xmlns:h="http://java.sun.com/jsf/html"
+				xmlns:f="http://java.sun.com/jsf/core"
+				xmlns:ui="http://java.sun.com/jsf/facelets"
+				xmlns:test="http://testcomponent"
+				template="dynamicComponents_common.xhtml">
+	
+	<h2>Stable Test Instructions</h2>
+	
+	<ol>
+		<li>3 text boxes should have been dynamically added inside the component. The first two should display '1' and '2'. The third should be blank</li>
+		<li>The first two boxes will receive an auto-generated id. The third box has had its id set programmatically</li>
+		<li>The third box is a required field, so when you click 'POSTback' you should see a 'Value is required' message</li>
+		<li>Keep clicking 'POSTback'. The order of the boxes should not change - it should remain stable</li>
+	</ol>
+		
+	<h:messages/>
+		
+	<h:form prependId="false" form="dynamicForm">
+	
+		<test:stablecomponent/>
+		
+		<br/>
+		
+		<h:commandButton id="button" value="POSTback" action="#{testManagedBean.save}"/>
+		
+	</h:form>			
+
+</ui:composition>
\ No newline at end of file
diff --git a/jsf-ri/systest/web/dynamicComponents_table.xhtml b/jsf-ri/systest/web/dynamicComponents_table.xhtml
new file mode 100644
index 0000000..c073833
--- /dev/null
+++ b/jsf-ri/systest/web/dynamicComponents_table.xhtml
@@ -0,0 +1,74 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<ui:composition xmlns="http://www.w3.org/1999/xhtml"
+                                xmlns:h="http://java.sun.com/jsf/html"
+                                xmlns:f="http://java.sun.com/jsf/core"
+                                xmlns:ui="http://java.sun.com/jsf/facelets"
+                                xmlns:test="http://testcomponent"
+                                template="dynamicComponents_common.xhtml">
+
+        <h2>Table Test Instructions</h2>
+
+        <ol>
+                <li>The component should have dynamically created a HtmlDataTable</li>
+                <li>
+                        The 'dynamic creation' code has subtle similarities to the 're-use same component on each row' code within HtmlDataTable. Specifically
+                        if the 'dynamic creation' code is hooking in to 'setParent' then it might get triggered by HtmlDataTable
+                </li>
+                <li>Click 'POSTback'. There should be no error</li>
+        </ol>
+
+        <h:messages/>
+
+        <h:form>
+
+                <test:tablecomponent/>
+
+                <br/>
+
+                <h:commandButton id="button" value="POSTback" action="#{testManagedBean.save}"/>
+
+        </h:form>
+
+</ui:composition>
diff --git a/jsf-ri/systest/web/dynamicComponents_toggle.xhtml b/jsf-ri/systest/web/dynamicComponents_toggle.xhtml
new file mode 100644
index 0000000..5e7943e
--- /dev/null
+++ b/jsf-ri/systest/web/dynamicComponents_toggle.xhtml
@@ -0,0 +1,32 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<ui:composition xmlns="http://www.w3.org/1999/xhtml"
+				xmlns:h="http://java.sun.com/jsf/html"
+				xmlns:f="http://java.sun.com/jsf/core"
+				xmlns:ui="http://java.sun.com/jsf/facelets"
+				xmlns:test="http://testcomponent"
+				template="dynamicComponents_common.xhtml">
+      
+	<h2>Toggle Test Instructions</h2>
+	
+	<ol>
+		<li>The component should have dynamically modified the tree so that 'Manually added child 2' appears before 'Manually added child 1' inside the red box</li>
+		<li>Click 'POSTback'. The 'Manually added child 2' and 'Manually added child 1' should keep switching places</li>
+		<li>Click 'POSTback' 3 times. You will see an error.</li>
+	</ol>
+		
+	<h:messages/>
+		
+	<h:form prependId="false" form="dynamicForm">
+	
+		<test:togglecomponent>
+			<h:outputText id="child1" value="Manually added child 1<br/>" escape="false"/>
+			<h:outputText id="child2" value="Manually added child 2<br/>" escape="false"/>
+		</test:togglecomponent>
+		
+		<br/>
+		
+		<h:commandButton id="button" value="POSTback" action="#{testManagedBean.save}"/>
+		
+	</h:form>
+	
+</ui:composition>			
diff --git a/jsf-ri/systest/web/eagerbean.jsp b/jsf-ri/systest/web/eagerbean.jsp
index 4a90632..3ad70c1 100644
--- a/jsf-ri/systest/web/eagerbean.jsp
+++ b/jsf-ri/systest/web/eagerbean.jsp
@@ -1,37 +1,43 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
 <%@ page contentType="text/html" language="java" %>
diff --git a/jsf-ri/systest/web/elfunction.xhtml b/jsf-ri/systest/web/elfunction.xhtml
index 7182c7d..33328ca 100644
--- a/jsf-ri/systest/web/elfunction.xhtml
+++ b/jsf-ri/systest/web/elfunction.xhtml
@@ -1,38 +1,45 @@
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"
diff --git a/jsf-ri/systest/web/enum-converter-1.jsp b/jsf-ri/systest/web/enum-converter-1.jsp
index 5fcb048..a267597 100644
--- a/jsf-ri/systest/web/enum-converter-1.jsp
+++ b/jsf-ri/systest/web/enum-converter-1.jsp
@@ -1,37 +1,43 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
 <%@ page contentType="text/html"
diff --git a/jsf-ri/systest/web/enum-converter.jsp b/jsf-ri/systest/web/enum-converter.jsp
index 08e7bd5..2ebc9cf 100644
--- a/jsf-ri/systest/web/enum-converter.jsp
+++ b/jsf-ri/systest/web/enum-converter.jsp
@@ -1,67 +1,50 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
 <!DOCTYPE html
 PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 
-<!--
- The contents of this file are subject to the terms
- of the Common Development and Distribution License
- (the License). You may not use this file except in
- compliance with the License.
- 
- You can obtain a copy of the License at
- https://javaserverfaces.dev.java.net/CDDL.html or
- legal/CDDLv1.0.txt. 
- See the License for the specific language governing
- permission and limitations under the License.
- 
- When distributing Covered Code, include this CDDL
- Header Notice in each file and include the License file
- at legal/CDDLv1.0.txt.    
- If applicable, add the following below the CDDL Header,
- with the fields enclosed by brackets [] replaced by
- your own identifying information:
- "Portions Copyrighted [year] [name of copyright owner]"
- 
- [Name of File] [ver.__] [Date]
- 
- Copyright 2005 Sun Microsystems Inc. All Rights Reserved
--->
+
 
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
     <head> <title>Test Enum Converter</title> </head>
diff --git a/jsf-ri/systest/web/enum01.jsp b/jsf-ri/systest/web/enum01.jsp
index 89bc5d6..536e4c6 100644
--- a/jsf-ri/systest/web/enum01.jsp
+++ b/jsf-ri/systest/web/enum01.jsp
@@ -1,43 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
+
 <%@ page contentType="text/html" language="java" %>
 <%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
 <%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
@@ -49,4 +52,4 @@
     <p />
     <h:commandButton id="stay" value="stay here" action="#{test1.returnDiamonds}" />
   </h:form>
-</f:view>
\ No newline at end of file
+</f:view>
diff --git a/jsf-ri/systest/web/escape_test.jsp b/jsf-ri/systest/web/escape_test.jsp
index 4582f76..64fa6e2 100644
--- a/jsf-ri/systest/web/escape_test.jsp
+++ b/jsf-ri/systest/web/escape_test.jsp
@@ -1,37 +1,43 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
 <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
diff --git a/jsf-ri/systest/web/eventTag.xhtml b/jsf-ri/systest/web/eventTag.xhtml
index b0273b9..2b4db47 100644
--- a/jsf-ri/systest/web/eventTag.xhtml
+++ b/jsf-ri/systest/web/eventTag.xhtml
@@ -1,38 +1,45 @@
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
 
- Contributor(s):
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"
     xmlns:h="http://java.sun.com/jsf/html"
diff --git a/jsf-ri/systest/web/eventTag01.xhtml b/jsf-ri/systest/web/eventTag01.xhtml
index 3bd2e4c..299032a 100644
--- a/jsf-ri/systest/web/eventTag01.xhtml
+++ b/jsf-ri/systest/web/eventTag01.xhtml
@@ -1,38 +1,45 @@
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"
     xmlns:h="http://java.sun.com/jsf/html"
diff --git a/jsf-ri/systest/web/eventTag02.xhtml b/jsf-ri/systest/web/eventTag02.xhtml
index 61aeb3e..4a5d3c3 100644
--- a/jsf-ri/systest/web/eventTag02.xhtml
+++ b/jsf-ri/systest/web/eventTag02.xhtml
@@ -1,38 +1,45 @@
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"
     xmlns:h="http://java.sun.com/jsf/html"
diff --git a/jsf-ri/systest/web/eventTagInvalid.xhtml b/jsf-ri/systest/web/eventTagInvalid.xhtml
index 6d989af..e8f9f40 100644
--- a/jsf-ri/systest/web/eventTagInvalid.xhtml
+++ b/jsf-ri/systest/web/eventTagInvalid.xhtml
@@ -1,38 +1,45 @@
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"
     xmlns:h="http://java.sun.com/jsf/html"
diff --git a/jsf-ri/systest/web/examineViewRoot.jsp b/jsf-ri/systest/web/examineViewRoot.jsp
index 808c1d3..38ebab0 100644
--- a/jsf-ri/systest/web/examineViewRoot.jsp
+++ b/jsf-ri/systest/web/examineViewRoot.jsp
@@ -1,37 +1,43 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
diff --git a/jsf-ri/systest/web/external01.jsp b/jsf-ri/systest/web/external01.jsp
index 5672697..d330497 100644
--- a/jsf-ri/systest/web/external01.jsp
+++ b/jsf-ri/systest/web/external01.jsp
@@ -1,37 +1,43 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
 <%@ page contentType="text/html"
diff --git a/jsf-ri/systest/web/external02.jsp b/jsf-ri/systest/web/external02.jsp
index 588bdc6..539dd1f 100644
--- a/jsf-ri/systest/web/external02.jsp
+++ b/jsf-ri/systest/web/external02.jsp
@@ -1,37 +1,43 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
 <%@ page contentType="text/html"
diff --git a/jsf-ri/systest/web/external03.jsp b/jsf-ri/systest/web/external03.jsp
index c26638b..39653b8 100644
--- a/jsf-ri/systest/web/external03.jsp
+++ b/jsf-ri/systest/web/external03.jsp
@@ -1,37 +1,43 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
 <%@ page contentType="text/html"
diff --git a/jsf-ri/systest/web/facelets/Client1.xhtml b/jsf-ri/systest/web/facelets/Client1.xhtml
index 849a830..b4ff96e 100644
--- a/jsf-ri/systest/web/facelets/Client1.xhtml
+++ b/jsf-ri/systest/web/facelets/Client1.xhtml
@@ -1,38 +1,45 @@
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 2010 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
+
 <ui:decorate template="Template1.xhtml" xmlns:f="http://java.sun.com/jsf/core"
 xmlns:ui="http://java.sun.com/jsf/facelets">
   <ui:define name="insertArea">
diff --git a/jsf-ri/systest/web/facelets/Client2.xhtml b/jsf-ri/systest/web/facelets/Client2.xhtml
index bc26069..cd14cd9 100644
--- a/jsf-ri/systest/web/facelets/Client2.xhtml
+++ b/jsf-ri/systest/web/facelets/Client2.xhtml
@@ -1,37 +1,44 @@
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 2010 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
+
 <ui:decorate template="Template2.xhtml" xmlns:f="http://java.sun.com/jsf/core"
 xmlns:ui="http://java.sun.com/jsf/facelets" />
diff --git a/jsf-ri/systest/web/facelets/Client3.xhtml b/jsf-ri/systest/web/facelets/Client3.xhtml
new file mode 100644
index 0000000..edf37ae
--- /dev/null
+++ b/jsf-ri/systest/web/facelets/Client3.xhtml
@@ -0,0 +1,48 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2011 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<ui:decorate template="Template3.xhtml" xmlns:f="http://java.sun.com/jsf/core"
+xmlns:ui="http://java.sun.com/jsf/facelets">
+  <ui:define name="#{bean2202.insertArea}">
+    Inserted from client3
+  </ui:define>
+</ui:decorate>
diff --git a/jsf-ri/systest/web/facelets/Issue1576IncludedPage.xhtml b/jsf-ri/systest/web/facelets/Issue1576IncludedPage.xhtml
new file mode 100644
index 0000000..20c52d1
--- /dev/null
+++ b/jsf-ri/systest/web/facelets/Issue1576IncludedPage.xhtml
@@ -0,0 +1,10 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+
+	<p>This is a © Copyright</p>
+	<p>This is a · Middot</p>
+	<p>This is a " " Space</p>
+	
+</html>
\ No newline at end of file
diff --git a/jsf-ri/systest/web/facelets/Issue1576UsingPage.xhtml b/jsf-ri/systest/web/facelets/Issue1576UsingPage.xhtml
new file mode 100644
index 0000000..2776a68
--- /dev/null
+++ b/jsf-ri/systest/web/facelets/Issue1576UsingPage.xhtml
@@ -0,0 +1,8 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:h="http://java.sun.com/jsf/html">
+
+	<ui:include src="Issue1576IncludedPage.xhtml" />
+</html>
diff --git a/jsf-ri/systest/web/facelets/Template1.xhtml b/jsf-ri/systest/web/facelets/Template1.xhtml
index 4f66b2b..3c0dfd1 100644
--- a/jsf-ri/systest/web/facelets/Template1.xhtml
+++ b/jsf-ri/systest/web/facelets/Template1.xhtml
@@ -1,38 +1,45 @@
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 2010 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
+
 <f:subview id="t1" xmlns:ui="http://java.sun.com/jsf/facelets"
 xmlns:f="http://java.sun.com/jsf/core">
          <ui:insert name="insertArea" >
diff --git a/jsf-ri/systest/web/facelets/Template2.xhtml b/jsf-ri/systest/web/facelets/Template2.xhtml
index 17fb1ef..d254582 100644
--- a/jsf-ri/systest/web/facelets/Template2.xhtml
+++ b/jsf-ri/systest/web/facelets/Template2.xhtml
@@ -1,38 +1,45 @@
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 2010 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
+
 <f:subview id="t2" xmlns:ui="http://java.sun.com/jsf/facelets" 
 xmlns:f="http://java.sun.com/jsf/core">
         <ui:insert name="insertArea" >
diff --git a/jsf-ri/systest/web/facelets/Template3.xhtml b/jsf-ri/systest/web/facelets/Template3.xhtml
new file mode 100644
index 0000000..857bff0
--- /dev/null
+++ b/jsf-ri/systest/web/facelets/Template3.xhtml
@@ -0,0 +1,49 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2011 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<f:subview id="t1" xmlns:ui="http://java.sun.com/jsf/facelets"
+xmlns:f="http://java.sun.com/jsf/core">
+         <ui:insert name="#{bean2202.insertArea}" >
+          Default
+        </ui:insert>
+</f:subview>
+
diff --git a/jsf-ri/systest/web/facelets/componentELAtBuildTime.xhtml b/jsf-ri/systest/web/facelets/componentELAtBuildTime.xhtml
index ed8728b..5b508e9 100644
--- a/jsf-ri/systest/web/facelets/componentELAtBuildTime.xhtml
+++ b/jsf-ri/systest/web/facelets/componentELAtBuildTime.xhtml
@@ -1,37 +1,43 @@
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
 
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
@@ -60,4 +66,4 @@
     </h:panelGrid>
     <ez:compositeComponentEL />
 </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/jsf-ri/systest/web/facelets/compositionnotfound.xhtml b/jsf-ri/systest/web/facelets/compositionnotfound.xhtml
index 7ead7c3..af686d4 100644
--- a/jsf-ri/systest/web/facelets/compositionnotfound.xhtml
+++ b/jsf-ri/systest/web/facelets/compositionnotfound.xhtml
@@ -1,37 +1,43 @@
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
 
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
@@ -57,4 +63,4 @@ This text will be ignored.
 This text will be ignored.
 
 </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/jsf-ri/systest/web/facelets/conditionalCCAttributeRendering.xhtml b/jsf-ri/systest/web/facelets/conditionalCCAttributeRendering.xhtml
index f2aba03..c971eb5 100644
--- a/jsf-ri/systest/web/facelets/conditionalCCAttributeRendering.xhtml
+++ b/jsf-ri/systest/web/facelets/conditionalCCAttributeRendering.xhtml
@@ -1,37 +1,43 @@
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
 
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
@@ -56,4 +62,4 @@
         </h:commandButton>
     </h:form>
 </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/jsf-ri/systest/web/facelets/csetTagBody.xhtml b/jsf-ri/systest/web/facelets/csetTagBody.xhtml
index 4318272..a135583 100644
--- a/jsf-ri/systest/web/facelets/csetTagBody.xhtml
+++ b/jsf-ri/systest/web/facelets/csetTagBody.xhtml
@@ -1,37 +1,43 @@
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
 
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
@@ -52,4 +58,4 @@
         <c:set var="baz" value="yes">no</c:set>
         <span id="output">#{x} #{foo} #{bob} #{bar} #{baz}</span>
 </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/jsf-ri/systest/web/facelets/decoratenotfound.xhtml b/jsf-ri/systest/web/facelets/decoratenotfound.xhtml
index b3f7961..f773b5f 100644
--- a/jsf-ri/systest/web/facelets/decoratenotfound.xhtml
+++ b/jsf-ri/systest/web/facelets/decoratenotfound.xhtml
@@ -1,37 +1,43 @@
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
 
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
@@ -58,4 +64,4 @@ Text before will stay.<br />
 Text after will stay.
 
 </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/jsf-ri/systest/web/facelets/forEach.xhtml b/jsf-ri/systest/web/facelets/forEach.xhtml
index f9e0918..799d005 100644
--- a/jsf-ri/systest/web/facelets/forEach.xhtml
+++ b/jsf-ri/systest/web/facelets/forEach.xhtml
@@ -1,37 +1,43 @@
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
 
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
@@ -49,5 +55,15 @@
    <c:forEach items="${fn:split('1,2,3', ',')}" var="item" varStatus="vs">
         #{item}
     </c:forEach>
+
+   <c:forEach var="item" items="#{repeatBean.flavorsList}">
+       <h:inputText value="#{item}" /> 
+   </c:forEach>
+
+   <c:forEach var="item" items="#{repeatBean.flavorsList}">
+       <h:inputText id="text1" value="#{item}" /> 
+   </c:forEach>
+
+
 </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/jsf-ri/systest/web/facelets/i_bugdb_13582626_fViewNullLocale.xhtml b/jsf-ri/systest/web/facelets/i_bugdb_13582626_fViewNullLocale.xhtml
new file mode 100644
index 0000000..4ce7204
--- /dev/null
+++ b/jsf-ri/systest/web/facelets/i_bugdb_13582626_fViewNullLocale.xhtml
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+
+<f:view locale="#{issue13582626Bean.nullProperty}" >
+<head>
+    <title>f:view with null locale</title>
+</head>
+<body>
+
+<h:form id="form">
+
+<h:outputText value="text value" />
+
+</h:form>
+
+<h:messages id="messages"/>
+
+</body>
+
+</f:view>
+
+</html>
diff --git a/jsf-ri/systest/web/facelets/i_spec_599.xhtml b/jsf-ri/systest/web/facelets/i_spec_599.xhtml
new file mode 100644
index 0000000..c80728e
--- /dev/null
+++ b/jsf-ri/systest/web/facelets/i_spec_599.xhtml
@@ -0,0 +1,56 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2011 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+<h:head>
+    <title>JAVASERVERFACES_SPEC_PUBLIC-599</title>
+</h:head>
+
+<h:body>
+
+   Test result: #{issue599Bean.result}
+
+</h:body>
+</html>
diff --git a/jsf-ri/systest/web/facelets/implicitFacet01.xhtml b/jsf-ri/systest/web/facelets/implicitFacet01.xhtml
index fec49e9..7935ae4 100644
--- a/jsf-ri/systest/web/facelets/implicitFacet01.xhtml
+++ b/jsf-ri/systest/web/facelets/implicitFacet01.xhtml
@@ -1,39 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
+
 <!DOCTYPE html
       PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
diff --git a/jsf-ri/systest/web/facelets/includenotfound.xhtml b/jsf-ri/systest/web/facelets/includenotfound.xhtml
index 2e740bc..7d8d6e8 100644
--- a/jsf-ri/systest/web/facelets/includenotfound.xhtml
+++ b/jsf-ri/systest/web/facelets/includenotfound.xhtml
@@ -1,37 +1,43 @@
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
 
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
@@ -50,4 +56,4 @@
 Body text here.
 
 </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/jsf-ri/systest/web/facelets/issue1313.xhtml b/jsf-ri/systest/web/facelets/issue1313.xhtml
index 9145fd1..5037429 100644
--- a/jsf-ri/systest/web/facelets/issue1313.xhtml
+++ b/jsf-ri/systest/web/facelets/issue1313.xhtml
@@ -1,37 +1,43 @@
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
- Copyright 2010 Sun Microsystems, Inc. All rights reserved.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
 
- Contributor(s):
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
 -->
 
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
@@ -77,4 +83,4 @@
         </h:commandButton>
     </h:form>
 </h:body>
-</html>
\ No newline at end of file
+</html>
diff --git a/jsf-ri/systest/web/facelets/issue1726.xhtml b/jsf-ri/systest/web/facelets/issue1726.xhtml
new file mode 100644
index 0000000..8268338
--- /dev/null
+++ b/jsf-ri/systest/web/facelets/issue1726.xhtml
@@ -0,0 +1,78 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2011 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+<h:head>
+    <title>Issue 1726</title>
+</h:head>
+
+<h:body>
+
+    <h:dataTable value="#{issue1726.hobbitDataModel}" var="cur">
+
+        <h:column>
+
+            <f:facet name="header" id="facet">
+                <h:outputText value="#{component.parent.class.name}" id="nameHeader"/>
+            </f:facet>
+
+            <h:outputText value="#{cur.name}" id="nameColumn"/>
+
+        </h:column>
+
+        <h:column rowHeader="true">
+           <h:outputText value="FOOBAR"/>
+        </h:column>
+
+    </h:dataTable>
+
+    <h:form prependId="false">
+        <h:commandButton value="reload" id="button"/>
+    </h:form>
+
+</h:body>
+</html>
diff --git a/jsf-ri/systest/web/facelets/issue1727-facet-conditional.xhtml b/jsf-ri/systest/web/facelets/issue1727-facet-conditional.xhtml
new file mode 100644
index 0000000..0fb4407
--- /dev/null
+++ b/jsf-ri/systest/web/facelets/issue1727-facet-conditional.xhtml
@@ -0,0 +1,87 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:c="http://java.sun.com/jsp/jstl/core"
+      xmlns:fn="http://java.sun.com/jsp/jstl/functions">
+<head>
+    <title>issue 1727</title>
+</head>
+
+<body>
+
+    <p><a href="https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=1727">https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=1727</a></p>
+
+    <h:dataTable value="#{issue1727.hobbitDataModel}" var="cur">
+
+        <h:column>
+
+            <f:facet name="header" id="facet">
+                <h:outputText value="|Not in if 01|" id="nameHeader01"/>
+                <h:outputText value="|Not in if 02|" id="nameHeader02"/>
+                <c:if test="#{sessionScope['facetCheckboxChecked']}">
+                    <h:outputText value="|In if 01|" id="nameHeader03"/>
+                    <h:outputText value="|In if 02|" id="nameHeader04"/>
+                </c:if>
+            </f:facet>
+
+            <h:outputText value="#{cur.name}" id="nameColumn"/>
+
+        </h:column>
+
+    </h:dataTable>
+
+    <hr />
+
+    <h:form prependId="false">
+        <p>display extra facet components <h:selectBooleanCheckbox id="checkbox" value="#{sessionScope['facetCheckboxChecked']}" /> </p>
+        <h:commandButton value="reload" id="button"/>
+    </h:form>
+
+
+
+</body>
+</html>
diff --git a/jsf-ri/systest/web/facelets/issue1757-dynamic-components.xhtml b/jsf-ri/systest/web/facelets/issue1757-dynamic-components.xhtml
new file mode 100644
index 0000000..3fa4193
--- /dev/null
+++ b/jsf-ri/systest/web/facelets/issue1757-dynamic-components.xhtml
@@ -0,0 +1,74 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:test="http://mojarra.dev.java.net/source1">
+      
+	<body>
+	
+		<h2>Instructions</h2>
+		
+		<ol>
+			<li>The component should have dynamically modified the tree so that 'Dynamically added child' appears inside the red box</li>
+			<li>Click 'POSTback'. The dynamically added child will disappear!</li>
+		</ol>
+			
+		<h:messages/>
+			
+		<h:form prependId="false">
+		
+			<test:testcomponent>
+				<h:outputText value="Manually added child<br/>" escape="false"/>
+			</test:testcomponent>
+			
+			<br/>
+			
+			<h:commandButton id="button" value="POSTback" action="#{issue1757DynamicManagedBean.save}"/>
+			
+		</h:form>			
+
+	</body>
+</html>
diff --git a/jsf-ri/systest/web/facelets/keepMessages.xhtml b/jsf-ri/systest/web/facelets/keepMessages.xhtml
deleted file mode 100644
index 3843564..0000000
--- a/jsf-ri/systest/web/facelets/keepMessages.xhtml
+++ /dev/null
@@ -1,65 +0,0 @@
-<!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
--->
-
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML Basic 1.0//EN"
-      "http://www.w3.org/TR/xhtml-basic/xhtml-basic10.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"
-      xmlns:ui="http://java.sun.com/jsf/facelets"
-      xmlns:h="http://java.sun.com/jsf/html"
-      xmlns:c="http://java.sun.com/jsp/jstl/core"
-      xmlns:f="http://java.sun.com/jsf/core">
-<f:view>
-    <h:head>
-        <meta http-equiv="Content-Type"
-              content="text/html; charset=ISO-8859-1"/>
-        <title>Keep Messages Test: first page</title>
-    </h:head>
-    <h:body>
-        <c:set target="#{flash}" property="keepMessages" value="true"/>
-
-        <h:form>
-            <h:commandButton value="Submit"
-                             action="#{addMessageBean.addMessage}" id="submit"/>
-        </h:form>
-
-        <h:form id="requiredForm">
-        	<h:inputText required="true" id="requiredInput"/>
-            <h:commandButton value="Submit"
-                             action="#{addMessageBean.addMessage}" id="submitRequired"/>
-        </h:form>
-    </h:body>
-</f:view>
-</html>
\ No newline at end of file
diff --git a/jsf-ri/systest/web/facelets/messagePage.xhtml b/jsf-ri/systest/web/facelets/messagePage.xhtml
deleted file mode 100644
index 7647a43..0000000
--- a/jsf-ri/systest/web/facelets/messagePage.xhtml
+++ /dev/null
@@ -1,56 +0,0 @@
-<!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
--->
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML Basic 1.0//EN"
-      "http://www.w3.org/TR/xhtml-basic/xhtml-basic10.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"
-      xmlns:ui="http://java.sun.com/jsf/facelets"
-      xmlns:h="http://java.sun.com/jsf/html"
-      xmlns:c="http://java.sun.com/jsp/jstl/core"
-      xmlns:f="http://java.sun.com/jsf/core">
-<f:view>
-    <h:head>
-        <meta http-equiv="Content-Type"
-              content="text/html; charset=ISO-8859-1"/>
-        <title>Keep Messages Test: second page</title>
-    </h:head>
-    <h:body>
-        <h:messages/>
-        <h:form id="form">
-            <h:commandButton id="button" value="Submit" />
-        </h:form>
-    </h:body>
-</f:view>
-</html>
\ No newline at end of file
diff --git a/jsf-ri/systest/web/facelets/setpropertyactionlistener1.xhtml b/jsf-ri/systest/web/facelets/setpropertyactionlistener1.xhtml
index 4598a49..e650191 100644
--- a/jsf-ri/systest/web/facelets/setpropertyactionlistener1.xhtml
+++ b/jsf-ri/systest/web/facelets/setpropertyactionlistener1.xhtml
@@ -1,37 +1,43 @@
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
 
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
@@ -57,4 +63,4 @@
         <br/>
     </h:form>
 </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/jsf-ri/systest/web/facelets/sourcefromdtdconfig.xhtml b/jsf-ri/systest/web/facelets/sourcefromdtdconfig.xhtml
index ed8320c..04cc2b3 100644
--- a/jsf-ri/systest/web/facelets/sourcefromdtdconfig.xhtml
+++ b/jsf-ri/systest/web/facelets/sourcefromdtdconfig.xhtml
@@ -1,37 +1,43 @@
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
 
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
@@ -45,4 +51,4 @@
 <body>
     <s1:hello />
 </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/jsf-ri/systest/web/facelets/templateComp.xhtml b/jsf-ri/systest/web/facelets/templateComp.xhtml
index 99967b6..a9ca425 100644
--- a/jsf-ri/systest/web/facelets/templateComp.xhtml
+++ b/jsf-ri/systest/web/facelets/templateComp.xhtml
@@ -1,40 +1,45 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html
       PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
diff --git a/jsf-ri/systest/web/facelets/templateDecorate.xhtml b/jsf-ri/systest/web/facelets/templateDecorate.xhtml
index fa116aa..018cd1a 100644
--- a/jsf-ri/systest/web/facelets/templateDecorate.xhtml
+++ b/jsf-ri/systest/web/facelets/templateDecorate.xhtml
@@ -1,40 +1,45 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html
       PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
diff --git a/jsf-ri/systest/web/facelets/templateDecoration2.xhtml b/jsf-ri/systest/web/facelets/templateDecoration2.xhtml
index 4337fc8..7cde1ec 100644
--- a/jsf-ri/systest/web/facelets/templateDecoration2.xhtml
+++ b/jsf-ri/systest/web/facelets/templateDecoration2.xhtml
@@ -1,38 +1,45 @@
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 2010 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
+
 <html xmlns="http://www.w3.org/1999/xhtml"
 xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:h="http://java.sun.com/jsf/html">
 <h:head />
diff --git a/jsf-ri/systest/web/facelets/uirepeat.xhtml b/jsf-ri/systest/web/facelets/uirepeat.xhtml
index e437216..1416e7a 100644
--- a/jsf-ri/systest/web/facelets/uirepeat.xhtml
+++ b/jsf-ri/systest/web/facelets/uirepeat.xhtml
@@ -1,39 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
+
 <!DOCTYPE html
       PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
diff --git a/jsf-ri/systest/web/facelets/uirepeat2.xhtml b/jsf-ri/systest/web/facelets/uirepeat2.xhtml
index 92bb9a4..3dfdaee 100644
--- a/jsf-ri/systest/web/facelets/uirepeat2.xhtml
+++ b/jsf-ri/systest/web/facelets/uirepeat2.xhtml
@@ -1,39 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
+
 <!DOCTYPE html
       PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
diff --git a/jsf-ri/systest/web/facelets/uirepeat3.xhtml b/jsf-ri/systest/web/facelets/uirepeat3.xhtml
index 7ead892..43b61b9 100644
--- a/jsf-ri/systest/web/facelets/uirepeat3.xhtml
+++ b/jsf-ri/systest/web/facelets/uirepeat3.xhtml
@@ -1,39 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
+
 <!DOCTYPE html
       PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
diff --git a/jsf-ri/systest/web/facelets/uirepeat4.xhtml b/jsf-ri/systest/web/facelets/uirepeat4.xhtml
index fb3dd8a..e8d46e3 100644
--- a/jsf-ri/systest/web/facelets/uirepeat4.xhtml
+++ b/jsf-ri/systest/web/facelets/uirepeat4.xhtml
@@ -1,39 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
 
- Contributor(s):
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
 -->
+
 <!DOCTYPE html
       PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
diff --git a/jsf-ri/systest/web/facelets/uirepeat5.xhtml b/jsf-ri/systest/web/facelets/uirepeat5.xhtml
new file mode 100644
index 0000000..47dde8d
--- /dev/null
+++ b/jsf-ri/systest/web/facelets/uirepeat5.xhtml
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:f="http://java.sun.com/jsf/core">
+<head>
+    <title>ui:repeat5 test</title>
+</head>
+<body>
+<h:form id="form" prependId="false">
+
+
+        <ui:repeat var="var"
+                   value="#{thousandsOfPojos.items}">
+
+           <h:inputText value="#{var.a}" />
+           <h:inputText value="#{var.b}" />
+           <h:inputText value="#{var.c}" />
+
+           <h:inputText value="#{var.inner.d}" />
+           <h:inputText value="#{var.inner.e}" />
+        </ui:repeat>
+
+
+</h:form>
+<h:messages id="messages"/>
+<ui:debug recordStateSize="true" />
+</body>
+</html>
diff --git a/jsf-ri/systest/web/facelets/validatorDisabled.xhtml b/jsf-ri/systest/web/facelets/validatorDisabled.xhtml
index 667e5d5..fc8884e 100644
--- a/jsf-ri/systest/web/facelets/validatorDisabled.xhtml
+++ b/jsf-ri/systest/web/facelets/validatorDisabled.xhtml
@@ -1,41 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
- Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
 
- Contributor(s):
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html
       PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
@@ -79,4 +84,4 @@
     <h:messages id="messages3" for="input2" />
 </h:form>
 </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/jsf-ri/systest/web/facelets/viewPhaseListeners.xhtml b/jsf-ri/systest/web/facelets/viewPhaseListeners.xhtml
index cae551e..5c5c361 100644
--- a/jsf-ri/systest/web/facelets/viewPhaseListeners.xhtml
+++ b/jsf-ri/systest/web/facelets/viewPhaseListeners.xhtml
@@ -1,39 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
+
 <!DOCTYPE html
       PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
diff --git a/jsf-ri/systest/web/facelets/when.xhtml b/jsf-ri/systest/web/facelets/when.xhtml
index 073dfcf..f735456 100644
--- a/jsf-ri/systest/web/facelets/when.xhtml
+++ b/jsf-ri/systest/web/facelets/when.xhtml
@@ -1,37 +1,43 @@
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
- Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
 
- Contributor(s):
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
 -->
 
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
@@ -72,4 +78,4 @@
 
 
 </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/jsf-ri/systest/web/facesResponse.jsp b/jsf-ri/systest/web/facesResponse.jsp
index a35a5cb..c5387d3 100644
--- a/jsf-ri/systest/web/facesResponse.jsp
+++ b/jsf-ri/systest/web/facesResponse.jsp
@@ -1,43 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
+
 
 <%@ page import="javax.servlet.RequestDispatcher" %><%
 
diff --git a/jsf-ri/systest/web/factoryFinder.jsp b/jsf-ri/systest/web/factoryFinder.jsp
index 83d75bf..87099fe 100644
--- a/jsf-ri/systest/web/factoryFinder.jsp
+++ b/jsf-ri/systest/web/factoryFinder.jsp
@@ -1,37 +1,43 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
diff --git a/jsf-ri/systest/web/failure.xhtml b/jsf-ri/systest/web/failure.xhtml
index 7a74475..8273f44 100644
--- a/jsf-ri/systest/web/failure.xhtml
+++ b/jsf-ri/systest/web/failure.xhtml
@@ -1,38 +1,45 @@
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
     <head><title>Failure!</title></head>
diff --git a/jsf-ri/systest/web/flash/flashKeepMessages01.xhtml b/jsf-ri/systest/web/flash/flashKeepMessages01.xhtml
deleted file mode 100644
index a8a50cb..0000000
--- a/jsf-ri/systest/web/flash/flashKeepMessages01.xhtml
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version='1.0' encoding='UTF-8' ?>
-<!--
-
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
-
--->
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"
-      xmlns:h="http://java.sun.com/jsf/html">
-    <h:head>
-        <title>Test that flash shows multiple messages: issue 1476</title>
-    </h:head>
-    <h:body>
-        <h:form prependId="false">
-
-            <h:inputText value="#{flashMessagesBean.value}" />
-            <h:commandButton id="nextButton" value="submit" action="flashKeepMessages02?faces-redirect=true" />
-
-        </h:form>
-    </h:body>
-</html>
-
diff --git a/jsf-ri/systest/web/flash/flashKeepMessages02.xhtml b/jsf-ri/systest/web/flash/flashKeepMessages02.xhtml
deleted file mode 100644
index 32770a4..0000000
--- a/jsf-ri/systest/web/flash/flashKeepMessages02.xhtml
+++ /dev/null
@@ -1,51 +0,0 @@
-<?xml version='1.0' encoding='UTF-8' ?>
-<!--
-
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
-
--->
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"
-      xmlns:h="http://java.sun.com/jsf/html">
-    <h:head>
-        <title>Test that flash shows multiple messages: issue 1476</title>
-    </h:head>
-    <h:body>
-        <h:messages showDetail="true" showSummary="true"
-                    title="should have two messages"
-                    tooltip="should have two messages" />
-    </h:body>
-</html>
-
diff --git a/jsf-ri/systest/web/flash01.xhtml b/jsf-ri/systest/web/flash01.xhtml
deleted file mode 100644
index dcf31dd..0000000
--- a/jsf-ri/systest/web/flash01.xhtml
+++ /dev/null
@@ -1,76 +0,0 @@
-<!--
-
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
-
--->
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"
-      xmlns:ui="http://java.sun.com/jsf/facelets"
-      xmlns:f="http://java.sun.com/jsf/core"
-      xmlns:h="http://java.sun.com/jsf/html"
-      xmlns:c="http://java.sun.com/jsp/jstl/core">
-	<h:head>
-		<title>flash 1</title>
-	</h:head>
-	
-	<h:body>
-		<h:form id="nextForm" prependId="false">
-			<c:set target="#{flash}" property="foo" value="bar"/>
-			
-			<h:panelGrid id="trials" columns="1">
-				<h:button id="nextButton"
-						  value="Next (button)"
-						  outcome="flash02.xhtml">
-                                  <f:param name="foo" value="bar"/>
-                                </h:button>
-				<h:link id="nextLink"
-						value="Next (link)"
-						outcome="flash02.xhtml">
-                                  <f:param name="foo" value="bar"/>
-                                </h:link>
-				<h:commandLink id="nextCommandLink"
-						       action="flash02.xhtml"
-						       value="Next 
-(commandLink)"/>
-				<h:commandButton id="nextCommandButton"
-						         action="flash02.xhtml"
-						         value="Next 
-(commandButton)"/>
-			</h:panelGrid>
-		</h:form>
-
-		<ui:debug/>
-	</h:body>
-</html>
diff --git a/jsf-ri/systest/web/flash02.xhtml b/jsf-ri/systest/web/flash02.xhtml
deleted file mode 100644
index 509ea6b..0000000
--- a/jsf-ri/systest/web/flash02.xhtml
+++ /dev/null
@@ -1,63 +0,0 @@
-<!--
-
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
-
--->
-<!DOCTYPE html PUBLIC
-	"-//W3C//DTD XHTML 1.0 Strict//EN"
-	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-
-<html xmlns="http://www.w3.org/1999/xhtml"
-      xmlns:ui="http://java.sun.com/jsf/facelets"
-      xmlns:f="http://java.sun.com/jsf/core"
-      xmlns:h="http://java.sun.com/jsf/html"
-      xmlns:c="http://java.sun.com/jsp/jstl/core">
-
-<f:metadata>
-  <f:viewParam name="foo" id="foo" value="#{flash.now.foo}" />
-</f:metadata>
-
-	<h:head>
-		<meta http-equiv="Content-Type" content="text/html; charset=UTF-
-8"/>
-		<title>flash 2</title>
-	</h:head>
-	
-	<h:body>
-		foo = ${flash.foo}
-
-		<ui:debug/>
-	</h:body>
-</html>
diff --git a/jsf-ri/systest/web/foo01.jsp b/jsf-ri/systest/web/foo01.jsp
index 0a977ec..5200b60 100644
--- a/jsf-ri/systest/web/foo01.jsp
+++ b/jsf-ri/systest/web/foo01.jsp
@@ -1,43 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
+
 <%@ page contentType="text/html" language="java" %>
 <%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
 <%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
diff --git a/jsf-ri/systest/web/foo02.jsp b/jsf-ri/systest/web/foo02.jsp
index 2a387a4..29a44de 100644
--- a/jsf-ri/systest/web/foo02.jsp
+++ b/jsf-ri/systest/web/foo02.jsp
@@ -1,43 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
+
 <%@ page contentType="text/html" language="java" %>
 <%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
 <%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
diff --git a/jsf-ri/systest/web/forEach.xhtml b/jsf-ri/systest/web/forEach.xhtml
new file mode 100644
index 0000000..3678e5c
--- /dev/null
+++ b/jsf-ri/systest/web/forEach.xhtml
@@ -0,0 +1,69 @@
+<!--
+
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+ Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+
+ The contents of this file are subject to the terms of either the GNU
+ General Public License Version 2 only ("GPL") or the Common Development
+ and Distribution License("CDDL") (collectively, the "License").  You
+ may not use this file except in compliance with the License. You can obtain
+ a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
+ or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ language governing permissions and limitations under the License.
+
+ When distributing the software, include this License Header Notice in each
+ file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
+ Sun designates this particular file as subject to the "Classpath" exception
+ as provided by Sun in the GPL Version 2 section of the License file that
+ accompanied this code.  If applicable, add the following below the License
+ Header, with the fields enclosed by brackets [] replaced by your own
+ identifying information: "Portions Copyrighted [year]
+ [name of copyright owner]"
+
+ Contributor(s):
+
+ If you wish your version of this file to be governed by only the CDDL or
+ only the GPL Version 2, indicate your decision by adding "[Contributor]
+ elects to include this software in this distribution under the [CDDL or GPL
+ Version 2] license."  If you don't indicate a single choice of license, a
+ recipient has the option to distribute your version of this file under
+ either the CDDL, the GPL Version 2 or to extend the choice of license to
+ its licensees as provided above.  However, if you add GPL Version 2 code
+ and therefore, elected the GPL Version 2 license, then the option applies
+ only if the new code is made subject to such option by the copyright
+ holder.
+
+-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:c="http://java.sun.com/jsp/jstl/core">
+
+  <h:head>
+     <title>1753</title>
+  </h:head>
+
+  <h:body>
+
+<p>Test for <a href="https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=1753">1753</a>.</p>
+
+
+<f:view>
+
+    <h:form id="form">
+
+        <h:commandButton id="beginning" action="#{forEachBean1.addNewLineBeginning}" value="Add new line Beginning" />
+        <h:commandButton id="end" action="#{forEachBean1.addNewLineEnd}" value="Add new line End" /><br/>
+
+        <c:forEach items="#{forEachBean1.newList3}" var="item">
+                <h:outputText id="A#{item}" value="#{item}" />
+        </c:forEach>
+
+    </h:form>
+</f:view>
+
+  </h:body>
+</html>
diff --git a/jsf-ri/systest/web/forEach01.jsp b/jsf-ri/systest/web/forEach01.jsp
index 1674428..2030c85 100644
--- a/jsf-ri/systest/web/forEach01.jsp
+++ b/jsf-ri/systest/web/forEach01.jsp
@@ -1,43 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
+
 <%@ page contentType="text/html" language="java" %>
 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
 <%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
diff --git a/jsf-ri/systest/web/forEach02.jsp b/jsf-ri/systest/web/forEach02.jsp
index 17324c0..1a784da 100644
--- a/jsf-ri/systest/web/forEach02.jsp
+++ b/jsf-ri/systest/web/forEach02.jsp
@@ -81,9 +81,9 @@
 
     <hr>
     <address><a href="mailto:ed.burns at sun.com">Edward Burns</a></address>
-<!-- Created: Tue Oct  4 13:39:02 EDT 2005 -->
-<!-- hhmts start -->
-Last modified: Tue Oct  4 14:02:27 EDT 2005
+
+
+Last modified: Tue Oct  5 01:38:02 EDT 2010
 <!-- hhmts end -->
   </body>
 </html>
diff --git a/jsf-ri/systest/web/forEach03.jsp b/jsf-ri/systest/web/forEach03.jsp
index 741b561..6256e30 100644
--- a/jsf-ri/systest/web/forEach03.jsp
+++ b/jsf-ri/systest/web/forEach03.jsp
@@ -1,38 +1,45 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
+
 <%@ page contentType="text/html" language="java"%>
 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
 <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
@@ -146,4 +153,4 @@
     </h:form>
     </body>
     </html>
-</f:view>
\ No newline at end of file
+</f:view>
diff --git a/jsf-ri/systest/web/forEach03Include.jsp b/jsf-ri/systest/web/forEach03Include.jsp
index eeb58fc..652f8dc 100644
--- a/jsf-ri/systest/web/forEach03Include.jsp
+++ b/jsf-ri/systest/web/forEach03Include.jsp
@@ -1,37 +1,43 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
 <%@ page contentType="text/html" language="java"%>
@@ -50,4 +56,4 @@
              required="true"/>
 <h:message for="Short11" styleClass="message"/>
 <h:outputLabel id="Short11Label" for="Short11"
-               value="Label for shortProperty above"/>
\ No newline at end of file
+               value="Label for shortProperty above"/>
diff --git a/jsf-ri/systest/web/forEach04.jsp b/jsf-ri/systest/web/forEach04.jsp
index a9ac7e2..6da7677 100644
--- a/jsf-ri/systest/web/forEach04.jsp
+++ b/jsf-ri/systest/web/forEach04.jsp
@@ -1,38 +1,45 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
+
 <%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %>
 <%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
diff --git a/jsf-ri/systest/web/frag1.jsp b/jsf-ri/systest/web/frag1.jsp
index 971ba73..28a6e96 100644
--- a/jsf-ri/systest/web/frag1.jsp
+++ b/jsf-ri/systest/web/frag1.jsp
@@ -1,37 +1,44 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
+
 <%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %>
 <h:outputText value="frag1" id="frag1"/>
diff --git a/jsf-ri/systest/web/frag2.jsp b/jsf-ri/systest/web/frag2.jsp
index 4b58749..058989a 100644
--- a/jsf-ri/systest/web/frag2.jsp
+++ b/jsf-ri/systest/web/frag2.jsp
@@ -1,37 +1,44 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
+
 <%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %>
 <h:outputText value="frag2" id="frag2"/>
diff --git a/jsf-ri/systest/web/golden/escape_test.txt b/jsf-ri/systest/web/golden/escape_test.txt
deleted file mode 100644
index d725390..0000000
--- a/jsf-ri/systest/web/golden/escape_test.txt
+++ /dev/null
@@ -1,45 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-  <html>
-
-    <head>
-      <title>Test of outputText Escaping</title>
-    </head>
-
-    <body>
-
-      <h1>Test of outputText Escaping</h1>
-
-      <p>
-        [DEFAULT]
-        This text <b>has angle brackets</b>.
-        The angle brackets MUST be escaped.
-      </p>
-
-      <p>
-        [FALSE]
-        This text <b>has angle brackets</b>.
-        The angle brackets MUST NOT be escaped.
-      </p>
-
-      <p>
-        [TRUE]
-        This text <b>has angle brackets</b>.
-        The angle brackets MUST be escaped.
-      </p>
-
-    </body>
-
-  </html>
-
-
diff --git a/jsf-ri/systest/web/golden/factoryFinder.txt b/jsf-ri/systest/web/golden/factoryFinder.txt
deleted file mode 100644
index ff6897a..0000000
--- a/jsf-ri/systest/web/golden/factoryFinder.txt
+++ /dev/null
@@ -1,23 +0,0 @@
-
-
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-  <head>
-    <title>Print out the names of the current Factories</title>
-    
-    
-  </head>
-
-  <body>
-    <h1>Print out the names of the current Factories</h1>
-
-
-<form id="j_id_id16" name="j_id_id16" method="post" action="/jsf-systest/faces/factoryFinder.jsp;jsessionid=4a6a287194d75d4c7d41f07ebeac" enctype="application/x-www-form-urlencoded">
-<input type="hidden" name="j_id_id16" value="j_id_id16" />
-<input type="hidden" name="javax.faces.ViewState" id="javax.faces.ViewState" value="j_id3:j_id4" />
-InjectionApplicationFactory InjectionFacesContextFactory LifecycleFactoryWrapper RenderKitFactoryWrapper 
-</form>
-
-    <hr>
-  </body>
-</html>
diff --git a/jsf-ri/systest/web/golden/hello-mismatch.txt b/jsf-ri/systest/web/golden/hello-mismatch.txt
deleted file mode 100644
index 04a6d51..0000000
--- a/jsf-ri/systest/web/golden/hello-mismatch.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-/hello.jsp MISMATCH
-
diff --git a/jsf-ri/systest/web/golden/hello.txt b/jsf-ri/systest/web/golden/hello.txt
deleted file mode 100644
index f9d4564..0000000
--- a/jsf-ri/systest/web/golden/hello.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-/hello.jsp PASSED
-
diff --git a/jsf-ri/systest/web/golden/include-import-interweaving.txt b/jsf-ri/systest/web/golden/include-import-interweaving.txt
deleted file mode 100644
index c99970f..0000000
--- a/jsf-ri/systest/web/golden/include-import-interweaving.txt
+++ /dev/null
@@ -1,191 +0,0 @@
-
-
-<!DOCTYPE html
-PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
-    <head> <title>Hello</title> </head>
-    
-    
-        
-    
-    <body bgcolor="white">
-    
-<form id="form" name="form" method="post" action="/jsf-systest/faces/include-import-interweaving.jsp;jsessionid=4bbc0a31bc8e689ae2830143bdb5" enctype="application/x-www-form-urlencoded">
-<input type="hidden" name="form" value="form" />
-<input type="hidden" name="javax.faces.ViewState" id="javax.faces.ViewState" value="j_id27:j_id28" />
-
-    
-        <p>Outer Template Text followed by 
-        <span id="form:outerComponent">outer component</span></p>
-	
-<table border="1">	
-
-<tr><td>
-<ul><font color="blue">        
-
- 
-	    <p>Subview on the outside only with jsp:include:</p>
-            
-
-
-
-
-
-
-<p>Subview 1: Inner template text followed by
-
-<span id="form:subview01:innerComponent1">inner component 1</span>
-
-</p>
-
-<p>Subview 1: Inner template 2 text followed by
-
-<span id="form:subview01:innerComponent2">inner component 2</span>
-
-</p>
-
- 
-        
-</font></ul>        
-
-	    
-</td></tr>
-
-<tr><td>
-<ul><font color="green">        
-
-	    <p>Subview on the inside only with jsp:include:</p>
-            
-
-
-
-
-
-
-
-
-<p>Subview 2: Inner template text followed by
-<span id="form:innerSubView:innerComponent3">inner component 3</span></p>
-
-
-
-
-        
-</font></ul>        
-
-	    
-</td></tr>
-
-<tr><td>
-<ul><font color="purple">        
-
-	    <p>Subview on the outside and inside with jsp:include:</p>
-
-	    <p>Template Text before the include</p>
-            
-
-
-
-
-
-
-
-
-<p>Subview 2: Inner template text followed by
-<span id="form:subview03:innerSubView2:innerComponent4">inner component 4</span></p>
-
-
-
-        
-</font></ul>        
-
-	    
-</td></tr>
-
-<tr><td>
-<ul><font color="red">        
-        
-	    <p>Subview on the outside only with c:import:</p>
-            
-
-
-
-
-
-
-<p>Subview 4: Inner template text followed by
-
-<span id="form:outerSubview3:innerComponent5">inner component 5</span>
-
-</p>
-
-<p>Subview 4: Inner template 2 text followed by
-
-<span id="form:outerSubview3:innerComponent6">inner component 6</span>
-
-</p>
-
-        
-</font></ul>        
-
-	    
-</td></tr>
-
-
-<tr><td>
-<ul><font color="red">        
-	    <p>Subview on the inside only with c:import:</p>
-            
-
-
-
-
-
-
-
-
-<p>Subview 5: Inner template text followed by
-<span id="form:innerSubView4:innerComponent7">inner component 7</span></p>
-
-
-
-
-</font></ul>        
-
-	    
-</td></tr>
-
-<tr><td>
-<ul><font color="orange">        
-	    <p>Subview on the outside and inside with c:import:</p>
-
-	    <p>Template Text on the outside</p>
-            
-
-
-
-
-
-
-
-
-<p>Subview 6: Inner template text followed by
-<span id="form:subview05:innerSubView5:innerComponent8">inner component 8</span></p>
-
-
-
-</font></ul>        
-
-	    
-</td></tr>
-
-
-</table>
-	 
-
-    
-</form>
-    </body>
-</html>  
diff --git a/jsf-ri/systest/web/golden/interweaving01.txt b/jsf-ri/systest/web/golden/interweaving01.txt
deleted file mode 100644
index 2c6f4d4..0000000
--- a/jsf-ri/systest/web/golden/interweaving01.txt
+++ /dev/null
@@ -1,31 +0,0 @@
-
-
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
-
-
-
-
-
-
-<html>
-<head>
-<title>interweaving01</title>
-</head>
-<body>
-Begin
-test
-jsp include without verbatim
-interweaving
-works
-well!!
-End
-
-
-test
-jsp include without verbatim
-</body>
-</html>
-
diff --git a/jsf-ri/systest/web/golden/interweaving02.txt b/jsf-ri/systest/web/golden/interweaving02.txt
deleted file mode 100644
index 8a49b0f..0000000
--- a/jsf-ri/systest/web/golden/interweaving02.txt
+++ /dev/null
@@ -1,31 +0,0 @@
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
-
-
-
-
-
-
-<html>
-<head>
-<title>interweaving01</title>
-</head>
-<body>
-Begin
-test
-jstl import without verbatim
-interweaving
-works
-well!!
-End
-
-
-test
-jstl import without verbatim
-</body>
-</html>
-
-
-
diff --git a/jsf-ri/systest/web/golden/interweaving03.txt b/jsf-ri/systest/web/golden/interweaving03.txt
deleted file mode 100644
index d3cbf67..0000000
--- a/jsf-ri/systest/web/golden/interweaving03.txt
+++ /dev/null
@@ -1,34 +0,0 @@
-
-
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
-
-
-
-
-
-
-<form id="j_id_id11" name="j_id_id11" method="post" action="/jsf-systest/faces/interweaving03.jsp;jsessionid=4b9d4981e04824d79b869a2f026c" enctype="application/x-www-form-urlencoded">
-<input type="hidden" name="j_id_id11" value="j_id_id11" />
-<input type="hidden" name="javax.faces.ViewState" id="javax.faces.ViewState" value="j_id5:j_id6" />
-<table>
-<tbody>
-<tr>
-<td>
-	Row 1
-	</td>
-</tr>
-<tr>
-<td>Row 2</td>
-</tr>
-<tr>
-<td>
-	Row 3
-      </td>
-</tr>
-</tbody>
-</table>
-
-</form>
diff --git a/jsf-ri/systest/web/golden/interweaving04.txt b/jsf-ri/systest/web/golden/interweaving04.txt
deleted file mode 100644
index 3caa4b9..0000000
--- a/jsf-ri/systest/web/golden/interweaving04.txt
+++ /dev/null
@@ -1,27 +0,0 @@
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
-
-
-
-
-
-
-
-
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-
-<html>
-<head>
-<title>jstl-if-without-id</title>
-</head>
-<body>
-[First][Second][Third]
-
-  
-
-
-</body>
-</html>
-
diff --git a/jsf-ri/systest/web/golden/interweaving05.txt b/jsf-ri/systest/web/golden/interweaving05.txt
deleted file mode 100644
index bcd0cdf..0000000
--- a/jsf-ri/systest/web/golden/interweaving05.txt
+++ /dev/null
@@ -1,31 +0,0 @@
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
-
-
-
-
-
-
-
-
-
-<html>
-<head>
-<title>jstl-choose test without "id"</title>
-</head>
-<body>
-Begin jstl-choose test without id[FIRST][SECOND]End jstl-choose test without id
-
-  
-    
-    
-  
-  
-  
-
-
-</body>
-</html>
-
diff --git a/jsf-ri/systest/web/golden/interweaving06.txt b/jsf-ri/systest/web/golden/interweaving06.txt
deleted file mode 100644
index 11bb8b1..0000000
--- a/jsf-ri/systest/web/golden/interweaving06.txt
+++ /dev/null
@@ -1,57 +0,0 @@
-
-
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
-
-
-
-
-
-
-<html>
-<head>
-<title>interweaving06</title>
-</head>
-<body>
-<p>Begin test jsp:include without subview and iterator tag in included page</p>
-<br />
-<p>
-
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
-
-
-
-
-
-
-  <br>
-  
-    Array[0]: 
-    This component has no ID <br>
-    <input type="text" name="j_id_id16pc2" value="This component has no ID " /><br>
-  
-    Array[1]: 
-    This component has no ID <br>
-    <input type="text" name="j_id_id16pc2j_id_1" value="This component has no ID " /><br>
-  
-    Array[2]: 
-    This component has no ID <br>
-    <input type="text" name="j_id_id16pc2j_id_2" value="This component has no ID " /><br>
-  
-    Array[3]: 
-    This component has no ID <br>
-    <input type="text" name="j_id_id16pc2j_id_3" value="This component has no ID " /><br>
-  
-
-</p>
-
-<p>Text from interweaving06.jsp</p>
-</p>End test jsp:include without subview and iterator tag in included page</p>
-</body>
-</html>
-
diff --git a/jsf-ri/systest/web/golden/interweaving07.txt b/jsf-ri/systest/web/golden/interweaving07.txt
deleted file mode 100644
index e0b6d21..0000000
--- a/jsf-ri/systest/web/golden/interweaving07.txt
+++ /dev/null
@@ -1,58 +0,0 @@
-
-
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
-
-
-
-
-
-
-<html>
-<head>
-<title>interweaving07</title>
-</head>
-<body>
-<p>Begin test <c:import> with iterator tag in imported page</p>
-<br />
-<p>
-
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
-
-
-
-
-
-
-  <br>
-  
-    Array[0]: 
-    This component has no ID <br>
-    <input type="text" name="j_id_id16pc2" value="This component has no ID " /><br>
-  
-    Array[1]: 
-    This component has no ID <br>
-    <input type="text" name="j_id_id16pc2j_id_1" value="This component has no ID " /><br>
-  
-    Array[2]: 
-    This component has no ID <br>
-    <input type="text" name="j_id_id16pc2j_id_2" value="This component has no ID " /><br>
-  
-    Array[3]: 
-    This component has no ID <br>
-    <input type="text" name="j_id_id16pc2j_id_3" value="This component has no ID " /><br>
-  
-
-</p>
-
-<p>Text from interweaving07.jsp</p>
-
-<p>End test <c:import> with iterator tag in imported page</p>
-</body>
-</html>
-
diff --git a/jsf-ri/systest/web/golden/interweaving08.txt b/jsf-ri/systest/web/golden/interweaving08.txt
deleted file mode 100644
index d849c5d..0000000
--- a/jsf-ri/systest/web/golden/interweaving08.txt
+++ /dev/null
@@ -1,28 +0,0 @@
-
-
-
-
-
-
-    <html>
-        <body>
-            
-<form id="form" name="form" method="post" action="/jsf-systest/faces/interweaving08.jsp;jsessionid=b6a55da92c55d06c043b90f68e43" enctype="application/x-www-form-urlencoded">
-<input type="hidden" name="form" value="form" />
-<input type="hidden" name="javax.faces.ViewState" id="javax.faces.ViewState" value="j_id21:j_id22" />
-<table>
-<tbody>
-<tr>
-<td>
-                        
-                        ciao
-                        Value</td>
-</tr>
-</tbody>
-</table>
-
-</form>
-        </body>
-    </html>
-
-
diff --git a/jsf-ri/systest/web/golden/interweaving09.txt b/jsf-ri/systest/web/golden/interweaving09.txt
deleted file mode 100644
index de95a48..0000000
--- a/jsf-ri/systest/web/golden/interweaving09.txt
+++ /dev/null
@@ -1,29 +0,0 @@
-
-
-
-
-
-
-    <html>
-        <body>
-            
-<form id="form" name="form" method="post" action="/jsf-systest/faces/interweaving09.jsp;jsessionid=b6c56e1112007b33b36de4d24f7d" enctype="application/x-www-form-urlencoded">
-<input type="hidden" name="form" value="form" />
-<input type="hidden" name="javax.faces.ViewState" id="javax.faces.ViewState" value="j_id27:j_id28" />
-<table>
-<tbody>
-<tr>
-<td>Value
-                        
-                                             
-                        ciao
-                        Value</td>
-</tr>
-</tbody>
-</table>
-
-</form>
-        </body>
-    </html>
-
-
diff --git a/jsf-ri/systest/web/golden/interweaving10.txt b/jsf-ri/systest/web/golden/interweaving10.txt
deleted file mode 100644
index 299c602..0000000
--- a/jsf-ri/systest/web/golden/interweaving10.txt
+++ /dev/null
@@ -1,29 +0,0 @@
-
-
-
-
-
-
-    <html>
-        <body>
-            
-<form id="form" name="form" method="post" action="/jsf-systest/faces/interweaving10.jsp;jsessionid=b6e2e2b1f4635f2dd037bea45cee" enctype="application/x-www-form-urlencoded">
-<input type="hidden" name="form" value="form" />
-<input type="hidden" name="javax.faces.ViewState" id="javax.faces.ViewState" value="j_id33:j_id34" />
-<table>
-<tbody>
-<tr>
-<td>Value
-                        
-                         
-                        ciao                       
-                    </td>
-</tr>
-</tbody>
-</table>
-
-</form>
-        </body>
-    </html>
-
-
diff --git a/jsf-ri/systest/web/golden/interweaving11.txt b/jsf-ri/systest/web/golden/interweaving11.txt
deleted file mode 100644
index e5a4bb0..0000000
--- a/jsf-ri/systest/web/golden/interweaving11.txt
+++ /dev/null
@@ -1,27 +0,0 @@
-<html>
-  <head>
-      <title>interweaving11</title>
-  </head>
-  <body>
-
-<form id="j_id_id18" name="j_id_id18" method="post" action="/jsf-systest/faces/interweaving11.jsp" enctype="application/x-www-form-urlencoded">
-<input type="hidden" name="j_id_id18" value="j_id_id18" />
-<input type="hidden" name="javax.faces.ViewState" id="javax.faces.ViewState" value="j_id31:j_id32" />
-
-<script type="text/javascript" src="/jsf-systest/faces/javax.faces.resource/jsf.js?ln=javax.faces&stage=Development"></script>
-<a href="#" onclick="mojarra.jsfcljs(document.getElementById('j_id_id18'),{'j_id_id18:j_id_id22':'j_id_id18:j_id_id22','param':'value'},'');return false">one</a>
-
-
-                </br>
-
-                <a href="#" onclick="mojarra.jsfcljs(document.getElementById('j_id_id18'),{'j_id_id18:j_id_id22j_id_1':'j_id_id18:j_id_id22j_id_1','param':'value'},'');return false">two</a>
-                </br>
-
-                <a href="#" onclick="mojarra.jsfcljs(document.getElementById('j_id_id18'),{'j_id_id18:j_id_id22j_id_2':'j_id_id18:j_id_id22j_id_2','param':'value'},'');return false">three</a>
-                </br>
-
-
-</form>
-  </body>
-</html>
-
diff --git a/jsf-ri/systest/web/golden/interweaving12.txt b/jsf-ri/systest/web/golden/interweaving12.txt
deleted file mode 100644
index ded0f88..0000000
--- a/jsf-ri/systest/web/golden/interweaving12.txt
+++ /dev/null
@@ -1,25 +0,0 @@
-
-
-
-
-
-<html>
-<head><title>interweaving13</title></head>
-<body>
-
-<form id="j_id_id14" name="j_id_id14" method="post" action="/jsf-systest/faces/interweaving12.jsp;jsessionid=58335911147ca1cee932a98fe519" enctype="application/x-www-form-urlencoded">
-<input type="hidden" name="j_id_id14" value="j_id_id14" />
-<input type="hidden" name="javax.faces.ViewState" id="javax.faces.ViewState" value="j_id25:j_id26" />
-
-     
-
-
-
-
-
-    this should be before the button
-    <input id="j_id_id14:button" type="submit" name="j_id_id14:button" value="commandButton 1" />
-</form>
-</body>
-</html>
-
diff --git a/jsf-ri/systest/web/golden/managed04.txt b/jsf-ri/systest/web/golden/managed04.txt
deleted file mode 100644
index b6d9cdd..0000000
--- a/jsf-ri/systest/web/golden/managed04.txt
+++ /dev/null
@@ -1,23 +0,0 @@
-
-
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-  <head>
-    <title>Verify property ordering</title>
-    
-    
-  </head>
-
-  <body>
-    <h1>Verify property ordering</h1>
-
-
-<form id="j_id_id16" name="j_id_id16" method="post" action="/jsf-systest/faces/managed04.jsp;jsessionid=4be1e1717b6e7c5f2bff5c4165d0" enctype="application/x-www-form-urlencoded">
-<input type="hidden" name="j_id_id16" value="j_id_id16" />
-<input type="hidden" name="javax.faces.ViewState" id="javax.faces.ViewState" value="j_id43:j_id44" />
- one two three fourfivesixseveneight
-</form>
-
-    <hr>
-  </body>
-</html>
diff --git a/jsf-ri/systest/web/golden/regression/AreaTextRowsAttrTest.txt b/jsf-ri/systest/web/golden/regression/AreaTextRowsAttrTest.txt
deleted file mode 100644
index 39d03bb..0000000
--- a/jsf-ri/systest/web/golden/regression/AreaTextRowsAttrTest.txt
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
-
-
-
-
-
-<html>
-    <head>
-        <title>Text Area Row Attribute Regression Test</title>        
-    </head>
-    <body>
-        <textarea name="j_id_id16" rows="30"></textarea>
-    </body>
-</html>
diff --git a/jsf-ri/systest/web/golden/regression/InjectUserDefJS.txt b/jsf-ri/systest/web/golden/regression/InjectUserDefJS.txt
deleted file mode 100644
index bda0eaa..0000000
--- a/jsf-ri/systest/web/golden/regression/InjectUserDefJS.txt
+++ /dev/null
@@ -1,15 +0,0 @@
-<html>
-    <head>
-        <title>User Defined JS Injection Test</title>        
-    </head>
-    <body>
-        
-<form id="j_id_id16" name="j_id_id16" method="post" action="/jsf-systest/faces/regression/InjectUserDefJS.jsp" enctype="application/x-www-form-urlencoded">
-<input type="hidden" name="j_id_id16" value="j_id_id16" />
-<input type="hidden" name="javax.faces.ViewState" id="javax.faces.ViewState" value="j_id55:j_id56" />
-
-<script type="text/javascript" src="/jsf-systest/faces/javax.faces.resource/jsf.js?ln=javax.faces&stage=Development"></script>
-<a href="#" onclick="jsf.util.chain(this,event,'alert(\'Are you sure?\')','mojarra.jsfcljs(document.getElementById(\'j_id_id16\'),{\'j_id_id16:j_id_id18\':\'j_id_id16:j_id_id18\'},\'\')');return false">Link</a><input type="submit" name="j_id_id16:j_id_id20" value="Button" onclick="alert('Are you sure?')" />
-</form>
-    </body>
-</html>
diff --git a/jsf-ri/systest/web/golden/regression/SelectOneManySizeAttrTest.txt b/jsf-ri/systest/web/golden/regression/SelectOneManySizeAttrTest.txt
deleted file mode 100644
index f6dd9e6..0000000
--- a/jsf-ri/systest/web/golden/regression/SelectOneManySizeAttrTest.txt
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
-
-
-
-
-
-<html>
-    <head>
-        <title>Select{One,Many}ListBox Size Attribute Test</title>        
-    </head>
-    <body>
-        <select name="j_id_id16" size="5">	<option value="val1">val1</option>
-</select><select name="j_id_id21" multiple="multiple" size="5">	<option value="val1">val1</option>
-</select>
-    </body>
-</html>
diff --git a/jsf-ri/systest/web/golden/renderkit02A.txt b/jsf-ri/systest/web/golden/renderkit02A.txt
deleted file mode 100644
index b34b206..0000000
--- a/jsf-ri/systest/web/golden/renderkit02A.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-<HTML>
-
-    
-    
-
-       <span id="simplelabel">Simple Label</span>
-
-</HTML>
-
-
-/renderkit02.jsp PASSED
-
diff --git a/jsf-ri/systest/web/golden/renderkit03A.txt b/jsf-ri/systest/web/golden/renderkit03A.txt
deleted file mode 100644
index a3641ea..0000000
--- a/jsf-ri/systest/web/golden/renderkit03A.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-<HTML>
-
-    
-    
-
-       <span id="simplelabel">This IS A SIMPLE LABEL FROM THE CUSTOM RENDERER</span>
-
-</HTML>
-
-
-/renderkit03.jsp PASSED
-
diff --git a/jsf-ri/systest/web/golden/resourceBundle02.txt b/jsf-ri/systest/web/golden/resourceBundle02.txt
deleted file mode 100644
index 4476862..0000000
--- a/jsf-ri/systest/web/golden/resourceBundle02.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-Value from Faces component is Value From ResourceBundle.
diff --git a/jsf-ri/systest/web/golden/resourceBundle03.txt b/jsf-ri/systest/web/golden/resourceBundle03.txt
deleted file mode 100644
index 973dd4d..0000000
--- a/jsf-ri/systest/web/golden/resourceBundle03.txt
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-Values from Components: <br />
-
-resourceBundle01: Value From ResourceBundle <br />
-
-non existing resourceBundle:  <br />
-
-resourceBundle03: Value from ResourceBundle03 <br />
-
-
diff --git a/jsf-ri/systest/web/golden/resourceBundle04.txt b/jsf-ri/systest/web/golden/resourceBundle04.txt
deleted file mode 100644
index b9fc5e1..0000000
--- a/jsf-ri/systest/web/golden/resourceBundle04.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
-
-Values from Components: <br />
-
-exsting resource bundle, but non-existing key: ???bogusKey??? <br />
-
-
diff --git a/jsf-ri/systest/web/golden/resourceInjection01.txt b/jsf-ri/systest/web/golden/resourceInjection01.txt
deleted file mode 100644
index cb18556..0000000
--- a/jsf-ri/systest/web/golden/resourceInjection01.txt
+++ /dev/null
@@ -1,16 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-  <head>
-    <title>Test Resource Injection in Managed Beans</title>
-    
-    
-  </head>
-
-  <body>
-    <h1>Test Resource Injection in Managed Beans</h1>
-
-Hello World from env-entry!Hello World from env-entry!
-
-    <hr>
-  </body>
-</html>
diff --git a/jsf-ri/systest/web/golden/standard/autocomplete.txt b/jsf-ri/systest/web/golden/standard/autocomplete.txt
deleted file mode 100644
index f6b86c6..0000000
--- a/jsf-ri/systest/web/golden/standard/autocomplete.txt
+++ /dev/null
@@ -1,21 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-  <head>
-    <title>autocomplete.jsp</title>
-
- 
- 
-
-  </head>
-  <body>
-      
-          autocomplete on -> no attribute rendered: <input id="a" type="password" name="a" value="" />
-          autocomplete off -> attribute rendered: <input id="b" type="password" name="b" autocomplete="off" value="" />
-          no autocomplete defined -> no attribute rendered: <input id="c" type="password" name="c" value="" />
-          autocomplete on -> no attribute rendered: <input id="d" type="text" name="d" />
-          autocomplete off -> attribute rendered: <input id="e" type="text" name="e" autocomplete="off" />
-          no autocomplete defined -> no attribute rendered: <input id="f" type="text" name="f" />
-  </body>
-</html>
-
-
diff --git a/jsf-ri/systest/web/golden/standard/component01.txt b/jsf-ri/systest/web/golden/standard/component01.txt
deleted file mode 100644
index be0f8e2..0000000
--- a/jsf-ri/systest/web/golden/standard/component01.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-  <head>
-    <title>component01.jsp</title>
-
-
- 
- 
-
-  </head>
-  <body>
-      <input id="username" type="text" name="username" maxlength="32" onkeypress="attrValue" size="20" />
-  </body>
-</html>
diff --git a/jsf-ri/systest/web/golden/standard/converter02.txt b/jsf-ri/systest/web/golden/standard/converter02.txt
deleted file mode 100644
index d89697d..0000000
--- a/jsf-ri/systest/web/golden/standard/converter02.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-<span id="id1">$123.45</span>
diff --git a/jsf-ri/systest/web/golden/standard/converter05.txt b/jsf-ri/systest/web/golden/standard/converter05.txt
deleted file mode 100644
index 321cff7..0000000
--- a/jsf-ri/systest/web/golden/standard/converter05.txt
+++ /dev/null
@@ -1,18 +0,0 @@
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
-    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-    <html>
-        <head>
-            <title>Converters</title>
-
-
-        </head>
-
-        <body>
-
-
-            <span id="outputDatetime1">7/10/96 3:31:31 PM EDT</span><span id="outputDatetime2">7/10/96 3:31:31 PM EDT</span><span id="outputDatetime3">7/10/96 3:31:31 PM EDT</span><span id="outputNumber1">10.000</span><span id="outputNumber2">10,000</span><span id="outputNumber3">10,000</span>
-        </body>
-    </html>
\ No newline at end of file
diff --git a/jsf-ri/systest/web/golden/standard/converter06.txt b/jsf-ri/systest/web/golden/standard/converter06.txt
deleted file mode 100644
index 129a189..0000000
--- a/jsf-ri/systest/web/golden/standard/converter06.txt
+++ /dev/null
@@ -1,68 +0,0 @@
-
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
-
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-  <head>
-    <title>Converters</title>
-    
-    
-    
-  </head>
-
-  <body>
-    <h1>Converters</h1>
-
-
-
-
-<form id="form" name="form" method="post" action="/jsf-systest/faces/converter06.jsp;jsessionid=4689f1f189053215520315a812598" enctype="application/x-www-form-urlencoded">
-<input type="hidden" name="form" value="form" />
-<input type="hidden" name="javax.faces.ViewState" id="javax.faces.ViewState" value="j_id1:j_id2" />
-<table id="form:panelGrid">
-<tbody>
-<tr>
-<td>Number4:</td>
-<td><input id="form:number4" type="text" name="form:number4" value="aaa" maxlength="20" size="10" /></td>
-<td>	Number4: 'aaa' is not a number. Number4: 'aaa' is not a number. Example: 99</td>
-</tr>
-<tr>
-<td>Number5:</td>
-<td><span id="form:number5">aaa</span></td>
-<td></td>
-</tr>
-<tr>
-<td>Number6:</td>
-<td><input id="form:number6" type="text" name="form:number6" value="aaa" maxlength="20" size="10" /></td>
-<td>My own message</td>
-</tr>
-<tr>
-<td>Number6:</td>
-<td>Number7:</td>
-<td><input id="form:number7" type="text" name="form:number7" value="aaa" maxlength="20" size="10" /></td>
-</tr>
-<tr>
-<td>	Number7: 'aaa' is not a number. Number7: 'aaa' is not a number. Example: 99</td>
-<td>Number8:</td>
-<td><span id="form:number8">aaa</span></td>
-</tr>
-<tr>
-<td></td>
-<td>Number9:</td>
-<td><input id="form:number9" type="text" name="form:number9" value="aaa" maxlength="20" size="10" /></td>
-</tr>
-<tr>
-<td>My own message</td>
-<td><input type="submit" name="form:j_id_id86" value="submit" /></td>
-</tr>
-</tbody>
-</table>
-
-</form>
-
-    <hr>
-  </body>
-</html>
diff --git a/jsf-ri/systest/web/golden/standard/dtablecolumnclasses.txt b/jsf-ri/systest/web/golden/standard/dtablecolumnclasses.txt
deleted file mode 100644
index bfa41c3..0000000
--- a/jsf-ri/systest/web/golden/standard/dtablecolumnclasses.txt
+++ /dev/null
@@ -1,206 +0,0 @@
-
-
-
-
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-    <title>dtablecolumnclasses.jsp</title>
-    <style type="text/css">
-        .b1 {
-            background-color: red;
-        }
-
-        .b2 {
-            background-color: green;
-        }
-
-        .b3 {
-            background-color: blue;
-        }
-
-        .b4 {
-            background-color: burlywood;
-        }
-        .b5 {
-            background-color: darkolivegreen;
-        }
-        .b6 {
-            background-color: darkviolet;
-        }
-        .b7 {
-            background-color: skyblue;
-        }
-    </style>
-    
-    
-
-
-    
-</head>
-<body>
-<table>
-<tbody>
-<tr>
-<td class="b1">c1</td>
-<td class="b2">c2</td>
-<td>c3</td>
-<td>c4</td>
-<td>c5</td>
-<td>c6</td>
-</tr>
-<tr>
-<td class="b1">c1_1</td>
-<td class="b2">c2_1</td>
-<td>c3_1</td>
-<td>c4_1</td>
-<td>c5_1</td>
-<td>c6_1</td>
-</tr>
-</tbody>
-</table>
-<table>
-<tbody>
-<tr>
-<td class="b1">c1</td>
-<td class="b2">c2</td>
-<td class="b3">c3</td>
-<td class="b4">c4</td>
-<td>c5</td>
-<td>c6</td>
-</tr>
-<tr>
-<td class="b1">c1_1</td>
-<td class="b2">c2_1</td>
-<td class="b3">c3_1</td>
-<td class="b4">c4_1</td>
-<td>c5_1</td>
-<td>c6_1</td>
-</tr>
-</tbody>
-</table>
-<table>
-<tbody>
-<tr>
-<td class="b1">c1</td>
-<td class="b2">c2</td>
-<td class="b3">c3</td>
-<td>c4</td>
-<td>c5</td>
-<td>c6</td>
-</tr>
-<tr>
-<td class="b1">c1_1</td>
-<td class="b2">c2_1</td>
-<td class="b3">c3_1</td>
-<td>c4_1</td>
-<td>c5_1</td>
-<td>c6_1</td>
-</tr>
-</tbody>
-</table>
-<table>
-<tbody>
-<tr>
-<td class="b1">c1</td>
-<td>c2</td>
-<td>c3</td>
-<td>c4</td>
-<td>c5</td>
-<td>c6</td>
-</tr>
-<tr>
-<td class="b1">c1_1</td>
-<td>c2_1</td>
-<td>c3_1</td>
-<td>c4_1</td>
-<td>c5_1</td>
-<td>c6_1</td>
-</tr>
-</tbody>
-</table>
-<table>
-<tbody>
-<tr>
-<td>c1</td>
-<td>c2</td>
-<td>c3</td>
-<td>c4</td>
-<td>c5</td>
-<td>c6</td>
-</tr>
-<tr>
-<td>c1_1</td>
-<td>c2_1</td>
-<td>c3_1</td>
-<td>c4_1</td>
-<td>c5_1</td>
-<td>c6_1</td>
-</tr>
-</tbody>
-</table>
-<table>
-<tbody>
-<tr>
-<td class="b1">c1</td>
-<td class="b2">c2</td>
-<td class="b3">c3</td>
-<td class="b4">c4</td>
-<td class="b5">c5</td>
-<td class="b6">c6</td>
-</tr>
-<tr>
-<td class="b1">c1_1</td>
-<td class="b2">c2_1</td>
-<td class="b3">c3_1</td>
-<td class="b4">c4_1</td>
-<td class="b5">c5_1</td>
-<td class="b6">c6_1</td>
-</tr>
-</tbody>
-</table>
-<table>
-<tbody>
-<tr>
-<td class="b1">c1</td>
-<td class="b2">c2</td>
-<td class="b3">c3</td>
-<td class="b4">c4</td>
-<td>c5</td>
-<td>c6</td>
-</tr>
-<tr>
-<td class="b1">c1_1</td>
-<td class="b2">c2_1</td>
-<td class="b3">c3_1</td>
-<td class="b4">c4_1</td>
-<td>c5_1</td>
-<td>c6_1</td>
-</tr>
-</tbody>
-</table>
-<table>
-<tbody>
-<tr>
-<td>c1</td>
-<td class="b2">c2</td>
-<td>c3</td>
-<td>c4</td>
-<td class="b4">c5</td>
-<td class="b5">c6</td>
-</tr>
-<tr>
-<td>c1_1</td>
-<td class="b2">c2_1</td>
-<td>c3_1</td>
-<td>c4_1</td>
-<td class="b4">c5_1</td>
-<td class="b5">c6_1</td>
-</tr>
-</tbody>
-</table>
-
-</body>
-</html>
-
-
diff --git a/jsf-ri/systest/web/golden/standard/messages01.txt b/jsf-ri/systest/web/golden/standard/messages01.txt
deleted file mode 100644
index a89c332..0000000
--- a/jsf-ri/systest/web/golden/standard/messages01.txt
+++ /dev/null
@@ -1,32 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-  <head>
-    <title>messages01.jsp</title>
-
-
-
-    
-    
-
-<STYLE TYPE="text/css" MEDIA=screen>
-<!--
-.errors { 
-  background-color: #7171A5;
-  border: 5px outset #71A5A5;
-  border-collapse: collapse;
-  font-family: sans-serif;
-  font-size: 14pt;
-  padding: 10px;
-}
--->
-</STYLE>
-  </head>
-
-  <body>
-
-<ul class="errors"><li>	{0}: Validation Error: Value is required. </li></ul>
-
-
-
-  </body>
-</html>
diff --git a/jsf-ri/systest/web/golden/standard/messages02.txt b/jsf-ri/systest/web/golden/standard/messages02.txt
deleted file mode 100644
index e3a2c6a..0000000
--- a/jsf-ri/systest/web/golden/standard/messages02.txt
+++ /dev/null
@@ -1,44 +0,0 @@
-
-
-
-
-
-
-                                                                                    
-
-                                                                                    
-<html>
-<STYLE TYPE="text/css" MEDIA=screen>
-<!--
-.errors {
-  background-color: #7171A5;
-  border: 5px outset #71A5A5;
-  border-collapse: collapse;
-  font-family: sans-serif;
-  font-size: 14pt;
-  padding: 10px;
-  left: 48px;
-  top: 300px;
-  position: absolute;
-}
--->
-</STYLE>
-
-<table>
-<tbody>
-<tr>
-<td><ul dir="LTR" style="left: 48px; top: 100px; position: absolute"><li style="color: yellow"><span title="Information Summary">	Informational Detail</span></li><li><span title="Warning Summary">	Warning Detail</span></li><li style="color: red"><span title="Error Summary">	Error Detail</span></li><li style="color: blue"><span title="Fatal Summary">	Fatal Detail</span></li></ul></td>
-</tr>
-<tr>
-<td><table lang="en" style="left: 48px; top: 200px; position: absolute"><tr style="color: yellow"><td><span title="Information Summary">	Informational Detail</span></td></tr><tr><td><span title="Warning Summary">	Warning Detail</span></td></tr><tr style="color: red"><td><span title="Error Summary">	Error Detail</span></td></tr><tr style="color: blue"><td><span title="Fatal Summary">	Fatal Detail</span></td></tr></table></td>
-</tr>
-<tr>
-<td><ul class="errors"><li>	Information Summary Informational Detail</li><li>	Warning Summary Warning Detail</li><li>	Error Summary Error Detail</li><li>	Fatal Summary Fatal Detail</li></ul></td>
-</tr>
-<tr>
-<td><table style="left: 48px; top: 500px; position: absolute"><tr style="color: yellow"><td>	Information Summary Informational Detail</td></tr><tr><td>	Warning Summary Warning Detail</td></tr><tr style="color: red"><td>	Error Summary Error Detail</td></tr><tr style="color: blue"><td>	Fatal Summary Fatal Detail</td></tr></table></td>
-</tr>
-</tbody>
-</table>
-
-</html>
diff --git a/jsf-ri/systest/web/golden/standard/pgridcolumnclasses.txt b/jsf-ri/systest/web/golden/standard/pgridcolumnclasses.txt
deleted file mode 100644
index 271232c..0000000
--- a/jsf-ri/systest/web/golden/standard/pgridcolumnclasses.txt
+++ /dev/null
@@ -1,187 +0,0 @@
-
-
-
-
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-    <title>pgridcolumnclasses.jsp</title>
-    <style type="text/css">
-        .b1 {
-            background-color: red;
-        }
-
-        .b2 {
-            background-color: green;
-        }
-
-        .b3 {
-            background-color: blue;
-        }
-
-        .b4 {
-            background-color: burlywood;
-        }
-
-        .b5 {
-            background-color: darkolivegreen;
-        }
-
-        .b6 {
-            background-color: darkviolet;
-        }
-
-        .b7 {
-            background-color: skyblue;
-        }
-    </style>
-    
-    
-
-</head>
-<body>
-<table>
-<tbody>
-<tr>
-<td class="b1">c1</td>
-<td class="b2">c2</td>
-<td>c3</td>
-<td>c4</td>
-<td>c5</td>
-<td>c6</td>
-</tr>
-<tr>
-<td class="b1">c1_1</td>
-<td class="b2">c2_1</td>
-<td>c3_1</td>
-<td>c4_1</td>
-<td>c5_1</td>
-<td>c6_1</td>
-</tr>
-</tbody>
-</table>
-<table>
-<tbody>
-<tr>
-<td class="b1">c1</td>
-<td class="b2">c2</td>
-<td class="b3">c3</td>
-<td class="b4">c4</td>
-<td>c5</td>
-<td>c6</td>
-</tr>
-<tr>
-<td class="b1">c1_1</td>
-<td class="b2">c2_1</td>
-<td class="b3">c3_1</td>
-<td class="b4">c4_1</td>
-<td>c5_1</td>
-<td>c6_1</td>
-</tr>
-</tbody>
-</table>
-<table>
-<tbody>
-<tr>
-<td class="b1">c1</td>
-<td class="b2">c2</td>
-<td class="b3">c3</td>
-<td>c4</td>
-<td>c5</td>
-<td>c6</td>
-</tr>
-<tr>
-<td class="b1">c1_1</td>
-<td class="b2">c2_1</td>
-<td class="b3">c3_1</td>
-<td>c4_1</td>
-<td>c5_1</td>
-<td>c6_1</td>
-</tr>
-</tbody>
-</table>
-<table>
-<tbody>
-<tr>
-<td class="b1">c1</td>
-<td>c2</td>
-<td>c3</td>
-<td>c4</td>
-<td>c5</td>
-<td>c6</td>
-</tr>
-<tr>
-<td class="b1">c1_1</td>
-<td>c2_1</td>
-<td>c3_1</td>
-<td>c4_1</td>
-<td>c5_1</td>
-<td>c6_1</td>
-</tr>
-</tbody>
-</table>
-<table>
-<tbody>
-<tr>
-<td>c1</td>
-<td>c2</td>
-<td>c3</td>
-<td>c4</td>
-<td>c5</td>
-<td>c6</td>
-</tr>
-<tr>
-<td>c1_1</td>
-<td>c2_1</td>
-<td>c3_1</td>
-<td>c4_1</td>
-<td>c5_1</td>
-<td>c6_1</td>
-</tr>
-</tbody>
-</table>
-<table>
-<tbody>
-<tr>
-<td class="b1">c1</td>
-<td class="b2">c2</td>
-<td class="b3">c3</td>
-<td class="b4">c4</td>
-<td class="b5">c5</td>
-<td class="b6">c6</td>
-</tr>
-<tr>
-<td class="b1">c1_1</td>
-<td class="b2">c2_1</td>
-<td class="b3">c3_1</td>
-<td class="b4">c4_1</td>
-<td class="b5">c5_1</td>
-<td class="b6">c6_1</td>
-</tr>
-</tbody>
-</table>
-<table>
-<tbody>
-<tr>
-<td>c1</td>
-<td class="b2">c2</td>
-<td>c3</td>
-<td>c4</td>
-<td class="b5">c5</td>
-<td class="b6">c6</td>
-</tr>
-<tr>
-<td>c1_1</td>
-<td class="b2">c2_1</td>
-<td>c3_1</td>
-<td>c4_1</td>
-<td class="b5">c5_1</td>
-<td class="b6">c6_1</td>
-</tr>
-</tbody>
-</table>
-
-</body>
-</html>
-
-
diff --git a/jsf-ri/systest/web/golden/standard/selectmany02.txt b/jsf-ri/systest/web/golden/standard/selectmany02.txt
deleted file mode 100644
index 131d3d7..0000000
--- a/jsf-ri/systest/web/golden/standard/selectmany02.txt
+++ /dev/null
@@ -1,23 +0,0 @@
-<table class="one">
-	<tr>
-<td>
-<input name="j_id_id11" id="j_id_id11:0" value="1" type="checkbox" checked="checked" /><label for="j_id_id11:0" class=""> Open</label></td>
-<td>
-<input name="j_id_id11" id="j_id_id11:1" value="2" type="checkbox" checked="checked" /><label for="j_id_id11:1" class=""> Submitted</label></td>
-<td>
-<input name="j_id_id11" id="j_id_id11:2" value="3" type="checkbox" /><label for="j_id_id11:2" class=""> Accepted</label></td>
-<td>
-<input name="j_id_id11" id="j_id_id11:3" value="4" type="checkbox" /><label for="j_id_id11:3" class=""> Rejected</label></td>
-	</tr>
-</table><table border="5" style="two">
-	<tr>
-<td>
-<input name="j_id_id23" id="j_id_id23:0" value="1" type="checkbox" checked="checked" /><label for="j_id_id23:0" class=""> Open</label></td>
-<td>
-<input name="j_id_id23" id="j_id_id23:1" value="2" type="checkbox" checked="checked" /><label for="j_id_id23:1" class=""> Submitted</label></td>
-<td>
-<input name="j_id_id23" id="j_id_id23:2" value="3" type="checkbox" /><label for="j_id_id23:2" class=""> Accepted</label></td>
-<td>
-<input name="j_id_id23" id="j_id_id23:3" value="4" type="checkbox" /><label for="j_id_id23:3" class=""> Rejected</label></td>
-	</tr>
-</table>
diff --git a/jsf-ri/systest/web/golden/standard/selectmany03.txt b/jsf-ri/systest/web/golden/standard/selectmany03.txt
deleted file mode 100644
index c3c7d7b..0000000
--- a/jsf-ri/systest/web/golden/standard/selectmany03.txt
+++ /dev/null
@@ -1,23 +0,0 @@
-<table>
-	<tr>
-<td>
-<input name="j_id_id11" id="j_id_id11:0" value="1" type="checkbox" checked="checked" /><label for="j_id_id11:0" class="three"> Open</label></td>
-<td>
-<input name="j_id_id11" id="j_id_id11:1" value="2" type="checkbox" checked="checked" /><label for="j_id_id11:1" class="three"> Submitted</label></td>
-<td>
-<input name="j_id_id11" id="j_id_id11:2" value="3" type="checkbox" /><label for="j_id_id11:2" class="four"> Accepted</label></td>
-<td>
-<input name="j_id_id11" id="j_id_id11:3" value="4" type="checkbox" /><label for="j_id_id11:3" class="four"> Rejected</label></td>
-	</tr>
-</table><table>
-	<tr>
-<td>
-<input name="j_id_id23" id="j_id_id23:0" value="1" type="checkbox" checked="checked" /><label for="j_id_id23:0" class="four"> Open</label></td>
-<td>
-<input name="j_id_id23" id="j_id_id23:1" value="2" type="checkbox" checked="checked" /><label for="j_id_id23:1" class="four"> Submitted</label></td>
-<td>
-<input name="j_id_id23" id="j_id_id23:2" value="3" type="checkbox" /><label for="j_id_id23:2" class="four"> Accepted</label></td>
-<td>
-<input name="j_id_id23" id="j_id_id23:3" value="4" type="checkbox" disabled="disabled" /><label for="j_id_id23:3" class="five"> Rejected</label></td>
-	</tr>
-</table>
\ No newline at end of file
diff --git a/jsf-ri/systest/web/golden/standard/selectmany04.txt b/jsf-ri/systest/web/golden/standard/selectmany04.txt
deleted file mode 100644
index e52bc56..0000000
--- a/jsf-ri/systest/web/golden/standard/selectmany04.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-<table>
-	<tr>
-<td>
-<input name="j_id_id11" id="j_id_id11:0" value="1" type="checkbox" checked="checked" /><label for="j_id_id11:0" class="six eight"> Open</label></td>
-<td>
-<input name="j_id_id11" id="j_id_id11:1" value="2" type="checkbox" checked="checked" disabled="disabled" /><label for="j_id_id11:1" class="seven eight"> Submitted</label></td>
-<td>
-<input name="j_id_id11" id="j_id_id11:2" value="3" type="checkbox" /><label for="j_id_id11:2" class="six nine"> Accepted</label></td>
-<td>
-<input name="j_id_id11" id="j_id_id11:3" value="4" type="checkbox" disabled="disabled" /><label for="j_id_id11:3" class="seven nine"> Rejected</label></td>
-	</tr>
-</table>
\ No newline at end of file
diff --git a/jsf-ri/systest/web/golden/subview01.txt b/jsf-ri/systest/web/golden/subview01.txt
deleted file mode 100644
index 0c8990c..0000000
--- a/jsf-ri/systest/web/golden/subview01.txt
+++ /dev/null
@@ -1,55 +0,0 @@
-
-
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
-
-
-
-
-
-
-<html>
-<head>
-<title>subview01</title>
-</head>
-<body>
-Begin test <c:import> with subview tag in imported page
-
-<p>
-
-
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
-
-
-
-
-
-foo01
-
-</p>
-
-<p>subview01</p>
-
-<p>
-
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
-
-
-
-
-
-bar01
-</p>
-
-<p>End test <c:import> with subview tag in imported page</p>
-</body>
-</html>
-
diff --git a/jsf-ri/systest/web/golden/subview02.txt b/jsf-ri/systest/web/golden/subview02.txt
deleted file mode 100644
index 7fb4fbd..0000000
--- a/jsf-ri/systest/web/golden/subview02.txt
+++ /dev/null
@@ -1,31 +0,0 @@
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
-
-
-
-
-
-
-<html>
-<head>
-<title>subview02</title>
-</head>
-<body>
-<p>
-Begin test <c:import> with subview tag in importing page
-</p>
-
-<p>foo02</p>
-
-
-<p>subview02</p>
-
-<p>bar02
-</p>
-
-<p>End test <c:import> with subview tag in importing page</p>
-</body>
-</html>
-
diff --git a/jsf-ri/systest/web/golden/subview03.txt b/jsf-ri/systest/web/golden/subview03.txt
deleted file mode 100644
index 822fb67..0000000
--- a/jsf-ri/systest/web/golden/subview03.txt
+++ /dev/null
@@ -1,54 +0,0 @@
-
-
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
-
-
-
-
-
-
-<html>
-<head>
-<title>subview03</title>
-</head>
-<body>
-<p>
-Begin test <c:include> with subview tag in included page</p>
-
-<p>
-
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
-
-
-
-
-
-foo01
-</p>
-
-<p>subview03</p>
-
-<p>
-
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
-
-
-
-
-
-bar01
-</p>
-
-<p>End test <c:include> with subview tag in included page</p>
-</body>
-</html>
-
diff --git a/jsf-ri/systest/web/golden/subview04.txt b/jsf-ri/systest/web/golden/subview04.txt
deleted file mode 100644
index 4b7c387..0000000
--- a/jsf-ri/systest/web/golden/subview04.txt
+++ /dev/null
@@ -1,62 +0,0 @@
-
-
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
-
-
-
-
-
-
-<html>
-<head>
-<title>subview04</title>
-</head>
-<body>
-<p>
-[A]</p>
-
-
-<p>Begin test <c:include> with subview tag in including page</p>
-
-<p>
-
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
-
-
-
-
-
-bar01
-</p>
-
-
-<p>subview04</p>
-
-
-<p>
-
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
-
-
-
-
-
-
-bar02
-
-</p>
-
-
-<p>End test <c:include> with subview tag in including page</p>
-</body>
-</html>
-
diff --git a/jsf-ri/systest/web/golden/subview05.txt b/jsf-ri/systest/web/golden/subview05.txt
deleted file mode 100644
index 633e4fe..0000000
--- a/jsf-ri/systest/web/golden/subview05.txt
+++ /dev/null
@@ -1,60 +0,0 @@
-
-
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
-
-
-
-
-
-
-<html>
-<head>
-<title>subview05</title>
-</head>
-<body>
-<p>Begin test jsp:include with subview and iterator tag in included page</p>
-<br />
-<p>
-
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
-
-
-
-
-
-
-
-  <br>
-  
-    Array[0]: 
-    This component has no ID <br>
-    <input type="text" name="subviewInner:j_id_id18pc2" value="This component has no ID " /><br>
-  
-    Array[1]: 
-    This component has no ID <br>
-    <input type="text" name="subviewInner:j_id_id18pc2j_id_1" value="This component has no ID " /><br>
-  
-    Array[2]: 
-    This component has no ID <br>
-    <input type="text" name="subviewInner:j_id_id18pc2j_id_2" value="This component has no ID " /><br>
-  
-    Array[3]: 
-    This component has no ID <br>
-    <input type="text" name="subviewInner:j_id_id18pc2j_id_3" value="This component has no ID " /><br>
-  
-
-
-
-</p>
-
-<p>Text from subview05.jsp</p>
-</p>End test jsp:include with subview and iterator tag in included page</p>
-</body>
-</html>
-
diff --git a/jsf-ri/systest/web/golden/subview06.txt b/jsf-ri/systest/web/golden/subview06.txt
deleted file mode 100644
index b77a8ab..0000000
--- a/jsf-ri/systest/web/golden/subview06.txt
+++ /dev/null
@@ -1,63 +0,0 @@
-
-
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
-
-
-
-
-
-
-<html>
-<head>
-<title>subview06</title>
-</head>
-<body>
-<p>Begin test <c:import> with iterator tag in imported page</p>
-
-<br />
-<p>
-
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
-
-
-
-
-
-
-
-  <br>
-  
-    Array[0]: 
-    This component has no ID <br>
-    <input type="text" name="subviewOuter:subviewInner:j_id_id18pc2" value="This component has no ID " /><br>
-  
-    Array[1]: 
-    This component has no ID <br>
-    <input type="text" name="subviewOuter:subviewInner:j_id_id18pc2j_id_1" value="This component has no ID " /><br>
-  
-    Array[2]: 
-    This component has no ID <br>
-    <input type="text" name="subviewOuter:subviewInner:j_id_id18pc2j_id_2" value="This component has no ID " /><br>
-  
-    Array[3]: 
-    This component has no ID <br>
-    <input type="text" name="subviewOuter:subviewInner:j_id_id18pc2j_id_3" value="This component has no ID " /><br>
-  
-
-
-
-</p>
-
-
-<p>Text from subview06.jsp</p>
-
-<p>End test <c:import> with iterator tag in imported page</p>
-</body>
-</html>
-
diff --git a/jsf-ri/systest/web/golden/taglib/attributeTest.txt b/jsf-ri/systest/web/golden/taglib/attributeTest.txt
deleted file mode 100644
index 7ded988..0000000
--- a/jsf-ri/systest/web/golden/taglib/attributeTest.txt
+++ /dev/null
@@ -1,24 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-  <head>
-    <title>f:attribute</title>
-    
-    
-  </head>
-
-  <body>
-    <h1>f:attribute</h1>
-
-
-    <p>
-    <span style="color: red">This Should Be Red</span>
-    </p>
-
-    <p>
-    New String Value
-    </p>
-
-
-
-  </body>
-</html>
diff --git a/jsf-ri/systest/web/golden/taglib/commandButton_param_test.txt b/jsf-ri/systest/web/golden/taglib/commandButton_param_test.txt
deleted file mode 100644
index 2133836..0000000
--- a/jsf-ri/systest/web/golden/taglib/commandButton_param_test.txt
+++ /dev/null
@@ -1,25 +0,0 @@
-<html>
-<head>
-    
-    
-    <title>commandButton_param_test.jsp</title>
-</head>
-<body>
-    
-    
-<form id="form01" name="form01" method="post" action="/jsf-systest/faces/taglib/commandButton_param_test.jsp" enctype="application/x-www-form-urlencoded">
-<input type="hidden" name="form01" value="form01" />
-<input type="hidden" name="javax.faces.ViewState" id="javax.faces.ViewState" value="j_id3:j_id4" />
-
-<script type="text/javascript" src="/jsf-systest/faces/javax.faces.resource/jsf.js?ln=javax.faces&stage=Development"></script>
-<input id="form01:button01" type="submit" name="form01:button01" value="Label" onclick="mojarra.jsfcljs(document.getElementById('form01'),{'form01:button01':'form01:button01','testname':'testval'},'');return false" />Test Link
-        
-        <p/>
-        <input id="form01:button02" type="submit" name="form01:button02" value="Label" />Test Link
-        <p/>
-        <input id="form01:button03" type="submit" name="form01:button03" value="Label" onclick="mojarra.jsfcljs(document.getElementById('form01'),{'form01:button03':'form01:button03','testname2':'This is a String property'},'');return false" />Test Link
-        <p/>
-        <input id="form01:button04" type="submit" name="form01:button04" value="Label" onclick="jsf.util.chain(this,event,'hello();','mojarra.jsfcljs(document.getElementById(\'form01\'),{\'form01:button04\':\'form01:button04\',\'testname\':\'testval\'},\'\')');return false" />Test Link
-</form>
-</body>
-</html>
diff --git a/jsf-ri/systest/web/golden/taglib/commandButton_test.txt b/jsf-ri/systest/web/golden/taglib/commandButton_test.txt
deleted file mode 100644
index 00114df..0000000
--- a/jsf-ri/systest/web/golden/taglib/commandButton_test.txt
+++ /dev/null
@@ -1,21 +0,0 @@
-
-
-
-<html>
-<head>
-    
-    
-    <title>commandButton_test.jsp</title>
-</head>
-<body>
-    
-    
-    
-<form id="form01" name="form01" method="post" action="/jsf-systest/faces/taglib/commandButton_test.jsp;jsessionid=b7ca922155d383885935e4ebf957" enctype="application/x-www-form-urlencoded">
-<input type="hidden" name="form01" value="form01" />
-<input type="hidden" name="javax.faces.ViewState" id="javax.faces.ViewState" value="j_id231:j_id232" />
-<input id="form01:button01" type="submit" name="form01:button01" value="My Label" /><input id="form01:button02" type="reset" name="form01:button02" value="This is a String property" /><input id="form01:button03" type="submit" name="form01:button03" value="RES-BUNDLE KEY" /><input id="form01:button04" type="image" src="duke.gif" name="form01:button04" /><input id="form01:button05" type="image" src="resbundle_image.gif" name="form01:button05" /><input id="form01:button06" type="image" src= [...]
-</form>
-</body>
-</html>
-
diff --git a/jsf-ri/systest/web/golden/taglib/commandLink_multiform_test.txt b/jsf-ri/systest/web/golden/taglib/commandLink_multiform_test.txt
deleted file mode 100644
index a95c12d..0000000
--- a/jsf-ri/systest/web/golden/taglib/commandLink_multiform_test.txt
+++ /dev/null
@@ -1,23 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-
-
-
-
-
-<html>
-  <body>
-
-<form id="form01" name="form01" method="post" action="/jsf-systest/faces/taglib/commandLink_multiform_test.jsp" enctype="application/x-www-form-urlencoded">
-<input type="hidden" name="form01" value="form01" />
-<input type="hidden" name="javax.faces.ViewState" id="javax.faces.ViewState" value="j_id7:j_id8" />
-
-<script type="text/javascript" src="/jsf-systest/faces/javax.faces.resource/jsf.js?ln=javax.faces&stage=Development"></script>
-<a id="form01:Link1" href="#" onclick="mojarra.jsfcljs(document.getElementById('form01'),{'form01:Link1':'form01:Link1','param1':'value1','param2':'value2'},'');return false">Link1</a><a id="form01:Link2" href="#" onclick="mojarra.jsfcljs(document.getElementById('form01'),{'form01:Link2':'form01:Link2','param1':'value1','param2':'value2'},'');return false">Link2</a>
-</form>
-<form id="form02" name="form02" method="post" action="/jsf-systest/faces/taglib/commandLink_multiform_test.jsp" enctype="application/x-www-form-urlencoded">
-<input type="hidden" name="form02" value="form02" />
-<input type="hidden" name="javax.faces.ViewState" id="javax.faces.ViewState" value="j_id7:j_id8" />
-<a id="form02:Link3" href="#" onclick="mojarra.jsfcljs(document.getElementById('form02'),{'form02:Link3':'form02:Link3','param3':'value3','param4':'value4'},'');return false">Link3</a><a id="form02:Link4" href="#" onclick="mojarra.jsfcljs(document.getElementById('form02'),{'form02:Link4':'form02:Link4'},'');return false">Link4</a><a href="#" onclick="mojarra.jsfcljs(document.getElementById('form02'),{'form02:j_id_id47':'form02:j_id_id47','param5':''},'');return false">Link5</a>
-</form>
-  </body>
-</html>
diff --git a/jsf-ri/systest/web/golden/taglib/commandLink_test.txt b/jsf-ri/systest/web/golden/taglib/commandLink_test.txt
deleted file mode 100644
index 759e2cc..0000000
--- a/jsf-ri/systest/web/golden/taglib/commandLink_test.txt
+++ /dev/null
@@ -1,21 +0,0 @@
-
-
-<html>
-<head>
-
-
-    <title>commandLink_test.jsp</title>
-</head>
-<body>
-
-
-<form id="form01" name="form01" method="post" action="/jsf-systest/faces/taglib/commandLink_test.jsp" enctype="application/x-www-form-urlencoded">
-<input type="hidden" name="form01" value="form01" />
-<input type="hidden" name="javax.faces.ViewState" id="javax.faces.ViewState" value="j_id5:j_id6" />
-
-<script type="text/javascript" src="/jsf-systest/faces/javax.faces.resource/jsf.js?ln=javax.faces&stage=Development"></script>
-<a id="form01:hyperlink01" href="#" onclick="mojarra.jsfcljs(document.getElementById('form01'),{'form01:hyperlink01':'form01:hyperlink01'},'');return false">My Link</a><a id="form01:hyperlink02" href="#" onclick="mojarra.jsfcljs(document.getElementById('form01'),{'form01:hyperlink02':'form01:hyperlink02'},'');return false">This is a String property</a><a id="form01:hyperlink03" href="#" onclick="mojarra.jsfcljs(document.getElementById('form01'),{'form01:hyperlink03':'form01:hyperlink03'} [...]
-</form>
-</body>
-</html>
-
diff --git a/jsf-ri/systest/web/golden/taglib/command_button_test.txt b/jsf-ri/systest/web/golden/taglib/command_button_test.txt
deleted file mode 100644
index ed3a643..0000000
--- a/jsf-ri/systest/web/golden/taglib/command_button_test.txt
+++ /dev/null
@@ -1,25 +0,0 @@
-
-
-
-<html>
-<head>
-    
-    
-    <title>command_button_test.jsp</title>
-</head>
-<body>
-    
-    
-    
-      <form id="form01" name="form01" method="post" action="/jsf-systest/faces/taglib/command_button_test.jsp;jsessionid=F7DE89B48158F37AED9E48FA5D2E93F5">
-
-        <input id="form01:button01" type="submit" name="form01:button01" value="My Label" />
-        <input id="form01:button02" type="reset" name="form01:button02" value="This is a String property" />
-        <input id="form01:button03" type="submit" name="form01:button03" value="RES-BUNDLE KEY" />
-        <input id="form01:button04" type="image" src="duke.gif" name="form01:button04" />
-        <input id="form01:button05" type="image" src="resbundle_image.gif" name="form01:button05" />
-      <input type="hidden" name="form01" value="form01" /></form>
-    
-</body>
-</html>
-
diff --git a/jsf-ri/systest/web/golden/taglib/command_link_test.txt b/jsf-ri/systest/web/golden/taglib/command_link_test.txt
deleted file mode 100644
index 722e0dc..0000000
--- a/jsf-ri/systest/web/golden/taglib/command_link_test.txt
+++ /dev/null
@@ -1,28 +0,0 @@
-
-
-
-
-<html>
-<head>
-    
-    
-    <title>command_link_test.jsp</title>
-</head>
-<body>
-    
-    
-      <form id="form01" name="form01" method="post" action="/jsf-systest/faces/taglib/command_link_test.jsp;jsessionid=66560F4ABCA57E8DA0E279515F1FC72B">
-
-        <a id="form01:hyperlink01" href="#" onclick="document.getElementById('form01')['form01:hyperlink01'].value='form01:hyperlink01'; document.getElementById('form01').submit()">My Link</a>
-        <a id="form01:hyperlink02" href="#" onclick="document.getElementById('form01')['form01:hyperlink02'].value='form01:hyperlink02'; document.getElementById('form01').submit()">This is a String property</a>
-        <a id="form01:hyperlink03" href="#" onclick="document.getElementById('form01')['form01:hyperlink03'].value='form01:hyperlink03'; document.getElementById('form01').submit()">RES-BUNDLE LINK</a>
-        <a id="form01:hyperlink04" href="#" onclick="document.getElementById('form01')['form01:hyperlink04'].value='form01:hyperlink04'; document.getElementById('form01').submit()"><img src="duke.gif" /></a>
-        <a id="form01:hyperlink05" href="#" onclick="document.getElementById('form01')['form01:hyperlink05'].value='form01:hyperlink05'; document.getElementById('form01').submit()"><img src="resbundle_image.gif" alt="" /></a>
-        
-            
-        <a id="form01:hyperlink06" href="#" onclick="document.getElementById('form01')['form01:hyperlink06'].value='form01:hyperlink06';document.getElementById('form01')['param1'].value='value1'; document.getElementById('form01').submit()">Paramter Link</a>
-      <input type="hidden" name="form01" value="form01" /><input type="hidden" name="form01:hyperlink02" /><input type="hidden" name="form01:hyperlink06" /><input type="hidden" name="form01:hyperlink04" /><input type="hidden" name="form01:hyperlink01" /><input type="hidden" name="form01:hyperlink03" /><input type="hidden" name="param1" /><input type="hidden" name="form01:hyperlink05" /></form>
-    
-</body>
-</html>
-
diff --git a/jsf-ri/systest/web/golden/verbatim_test.txt b/jsf-ri/systest/web/golden/verbatim_test.txt
deleted file mode 100644
index 4fe6e2c..0000000
--- a/jsf-ri/systest/web/golden/verbatim_test.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-
-
-
-
-
-
-
-
-  <html>
-
-    <head>
-      <title>Test of the Verbatim Tag</title>
-    </head>
-
-    <body>
-
-      <h1>Test of the Verbatim Tag</h1>
-
-      <p>
-        
-          [DEFAULT]
-          This text <b>has angle brackets</b>.
-          The angle brackets MUST NOT be escaped.
-        
-      </p>
-
-      <p>
-        
-          [FALSE]
-          This text <b>has angle brackets</b>.
-          The angle brackets MUST NOT be escaped.
-        
-      </p>
-
-      <p>
-        
-          [TRUE]
-          This text <b>has angle brackets</b>.
-          The angle brackets MUST be escaped.
-        
-      </p>
-
-     <p>  This text is rendered.
-     </p>
-
-    </body>
-
-  </html>
-
-
-
diff --git a/jsf-ri/systest/web/groovy/groovy.xhtml b/jsf-ri/systest/web/groovy/groovy.xhtml
index af2834c..8207250 100644
--- a/jsf-ri/systest/web/groovy/groovy.xhtml
+++ b/jsf-ri/systest/web/groovy/groovy.xhtml
@@ -1,41 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:f="http://java.sun.com/jsf/core"
diff --git a/jsf-ri/systest/web/hello.jsp b/jsf-ri/systest/web/hello.jsp
index 5635fce..1262dad 100644
--- a/jsf-ri/systest/web/hello.jsp
+++ b/jsf-ri/systest/web/hello.jsp
@@ -1,37 +1,43 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
 <%@ page contentType="text/html" %><%
diff --git a/jsf-ri/systest/web/ignore/hello-mismatch.txt b/jsf-ri/systest/web/ignore/hello-mismatch.txt
deleted file mode 100644
index e59c53b..0000000
--- a/jsf-ri/systest/web/ignore/hello-mismatch.txt
+++ /dev/null
@@ -1 +0,0 @@
-/hello.jsp MISMATCH
diff --git a/jsf-ri/systest/web/ignore/ignoreIfContains.txt b/jsf-ri/systest/web/ignore/ignoreIfContains.txt
deleted file mode 100644
index 22ae291..0000000
--- a/jsf-ri/systest/web/ignore/ignoreIfContains.txt
+++ /dev/null
@@ -1 +0,0 @@
-javax.faces.ViewState
diff --git a/jsf-ri/systest/web/ignore/taglib/commandButton_test.txt b/jsf-ri/systest/web/ignore/taglib/commandButton_test.txt
deleted file mode 100644
index 1fe0fdb..0000000
--- a/jsf-ri/systest/web/ignore/taglib/commandButton_test.txt
+++ /dev/null
@@ -1 +0,0 @@
-      <form id="form01" method="post" action="/jsf-systest/faces/taglib/command_button_test.jsp;jsessionid=9804610C1F5A391C51671ACD3B3DCE88" enctype="application/x-www-form-urlencoded">
diff --git a/jsf-ri/systest/web/ignore/taglib/commandLink_multiform_test.txt b/jsf-ri/systest/web/ignore/taglib/commandLink_multiform_test.txt
deleted file mode 100644
index faf2bb2..0000000
--- a/jsf-ri/systest/web/ignore/taglib/commandLink_multiform_test.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-     <form id="_id0" method="post" action="/jsf-systest/faces/taglib/commandLink_multiform_test.jsp;jsessionid=74D1DE85D6D2DD3DC9C8830361B53688" enctype="application/x-www-form-urlencoded">
-
diff --git a/jsf-ri/systest/web/ignore/taglib/commandLink_test.txt b/jsf-ri/systest/web/ignore/taglib/commandLink_test.txt
deleted file mode 100644
index 15262b4..0000000
--- a/jsf-ri/systest/web/ignore/taglib/commandLink_test.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-      <form id="form01" method="post" action="/jsf-systest/faces/taglib/command_link_test.jsp;jsessionid=D3E423C65F27CA81AD8CAB5333C4D202" enctype="application/x-www-form-urlencoded">
-        <a id="form01:hyperlink05" href="#" onclick="document.forms['form01']['form01:hyperlink05'].value='form01:hyperlink05'; document.forms['form01'].submit()"><img id="form01:_id4" src="resbundle_image.gif;jsessionid=D3E423C65F27CA81AD8CAB5333C4D202" alt="" /></a>
diff --git a/jsf-ri/systest/web/ignore/taglib/command_button_test.txt b/jsf-ri/systest/web/ignore/taglib/command_button_test.txt
deleted file mode 100644
index a4b4a4a..0000000
--- a/jsf-ri/systest/web/ignore/taglib/command_button_test.txt
+++ /dev/null
@@ -1 +0,0 @@
-      <form id="form01" method="post" action="/jsf-systest/faces/taglib/command_button_test.jsp;jsessionid=F7DE89B48158F37AED9E48FA5D2E93F5">
diff --git a/jsf-ri/systest/web/ignore/taglib/command_link_test.txt b/jsf-ri/systest/web/ignore/taglib/command_link_test.txt
deleted file mode 100644
index 9f7b668..0000000
--- a/jsf-ri/systest/web/ignore/taglib/command_link_test.txt
+++ /dev/null
@@ -1 +0,0 @@
-      <form id="form01" method="post" action="/jsf-systest/faces/taglib/command_link_test.jsp;jsessionid=66560F4ABCA57E8DA0E279515F1FC72B">
diff --git a/jsf-ri/systest/web/immediate01.jsp b/jsf-ri/systest/web/immediate01.jsp
index b5de085..841c7c3 100644
--- a/jsf-ri/systest/web/immediate01.jsp
+++ b/jsf-ri/systest/web/immediate01.jsp
@@ -1,43 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
+
 <%@ page contentType="text/html" language="java" %>
 <%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
 <%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %>
diff --git a/jsf-ri/systest/web/implicitnav/implicitNavEmptyString.xhtml b/jsf-ri/systest/web/implicitnav/implicitNavEmptyString.xhtml
index 05eb983..c0a9446 100644
--- a/jsf-ri/systest/web/implicitnav/implicitNavEmptyString.xhtml
+++ b/jsf-ri/systest/web/implicitnav/implicitNavEmptyString.xhtml
@@ -1,41 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html
         PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
diff --git a/jsf-ri/systest/web/implicitnav/implicitNavRedirect.xhtml b/jsf-ri/systest/web/implicitnav/implicitNavRedirect.xhtml
index ef796a0..7377401 100644
--- a/jsf-ri/systest/web/implicitnav/implicitNavRedirect.xhtml
+++ b/jsf-ri/systest/web/implicitnav/implicitNavRedirect.xhtml
@@ -1,38 +1,42 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
 
diff --git a/jsf-ri/systest/web/implicitnav/implicitNavRedirect02.xhtml b/jsf-ri/systest/web/implicitnav/implicitNavRedirect02.xhtml
index 5414bb4..b638eec 100644
--- a/jsf-ri/systest/web/implicitnav/implicitNavRedirect02.xhtml
+++ b/jsf-ri/systest/web/implicitnav/implicitNavRedirect02.xhtml
@@ -1,40 +1,45 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:h="http://java.sun.com/jsf/html">
diff --git a/jsf-ri/systest/web/implicitnav/page01.xhtml b/jsf-ri/systest/web/implicitnav/page01.xhtml
index 9cafbcf..db1fbc8 100644
--- a/jsf-ri/systest/web/implicitnav/page01.xhtml
+++ b/jsf-ri/systest/web/implicitnav/page01.xhtml
@@ -1,41 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
-
--->      
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
 <!DOCTYPE html
         PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
diff --git a/jsf-ri/systest/web/implicitnav/page02.xhtml b/jsf-ri/systest/web/implicitnav/page02.xhtml
index 11ac4bb..81c0baa 100644
--- a/jsf-ri/systest/web/implicitnav/page02.xhtml
+++ b/jsf-ri/systest/web/implicitnav/page02.xhtml
@@ -1,41 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html
         PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
diff --git a/jsf-ri/systest/web/implicitnav/page03.xhtml b/jsf-ri/systest/web/implicitnav/page03.xhtml
index 6bf45e8..1f496c1 100644
--- a/jsf-ri/systest/web/implicitnav/page03.xhtml
+++ b/jsf-ri/systest/web/implicitnav/page03.xhtml
@@ -1,41 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html
         PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
diff --git a/jsf-ri/systest/web/implicitnav/page04.xhtml b/jsf-ri/systest/web/implicitnav/page04.xhtml
index c27ddb9..a3cb7ac 100644
--- a/jsf-ri/systest/web/implicitnav/page04.xhtml
+++ b/jsf-ri/systest/web/implicitnav/page04.xhtml
@@ -1,41 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html
         PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
diff --git a/jsf-ri/systest/web/include-import-interweaving.jsp b/jsf-ri/systest/web/include-import-interweaving.jsp
index 5879916..ba6e2e7 100644
--- a/jsf-ri/systest/web/include-import-interweaving.jsp
+++ b/jsf-ri/systest/web/include-import-interweaving.jsp
@@ -1,37 +1,43 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
 <!DOCTYPE html
diff --git a/jsf-ri/systest/web/include12.jsp b/jsf-ri/systest/web/include12.jsp
index d82af46..59aafbd 100644
--- a/jsf-ri/systest/web/include12.jsp
+++ b/jsf-ri/systest/web/include12.jsp
@@ -1,37 +1,43 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
 <%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
diff --git a/jsf-ri/systest/web/index.html b/jsf-ri/systest/web/index.html
index 8da84cf..8d517a9 100644
--- a/jsf-ri/systest/web/index.html
+++ b/jsf-ri/systest/web/index.html
@@ -1,39 +1,43 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
-      
+
 WELCOMEPAGE
diff --git a/jsf-ri/systest/web/input01.jsp b/jsf-ri/systest/web/input01.jsp
index 77cb264..7df7e1a 100644
--- a/jsf-ri/systest/web/input01.jsp
+++ b/jsf-ri/systest/web/input01.jsp
@@ -1,37 +1,43 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
 <%@ page contentType="text/html" language="java" %>
diff --git a/jsf-ri/systest/web/interweaving01.jsp b/jsf-ri/systest/web/interweaving01.jsp
index 6d487bd..7df74e5 100644
--- a/jsf-ri/systest/web/interweaving01.jsp
+++ b/jsf-ri/systest/web/interweaving01.jsp
@@ -1,43 +1,45 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
 <%@ page contentType="text/html" language="java" %>
 <%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
 <%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
diff --git a/jsf-ri/systest/web/interweaving02.jsp b/jsf-ri/systest/web/interweaving02.jsp
index 241ba34..14a606f 100644
--- a/jsf-ri/systest/web/interweaving02.jsp
+++ b/jsf-ri/systest/web/interweaving02.jsp
@@ -1,43 +1,45 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
 <%@ page contentType="text/html" language="java" %>
 <%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
 <%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
diff --git a/jsf-ri/systest/web/interweaving03.jsp b/jsf-ri/systest/web/interweaving03.jsp
index 1344166..b5d6606 100644
--- a/jsf-ri/systest/web/interweaving03.jsp
+++ b/jsf-ri/systest/web/interweaving03.jsp
@@ -1,43 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
+
 <%@ page contentType="text/html" language="java" %>
 <%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
 <%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
diff --git a/jsf-ri/systest/web/interweaving04.jsp b/jsf-ri/systest/web/interweaving04.jsp
index 8804c11..a811e4a 100644
--- a/jsf-ri/systest/web/interweaving04.jsp
+++ b/jsf-ri/systest/web/interweaving04.jsp
@@ -1,43 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
+
 
 <%@ page contentType="text/html" language="java" %>
 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
diff --git a/jsf-ri/systest/web/interweaving05.jsp b/jsf-ri/systest/web/interweaving05.jsp
index 84132b5..d9194fc 100644
--- a/jsf-ri/systest/web/interweaving05.jsp
+++ b/jsf-ri/systest/web/interweaving05.jsp
@@ -1,43 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
+
 
 <%@ page contentType="text/html" language="java" %>
 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
diff --git a/jsf-ri/systest/web/interweaving06.jsp b/jsf-ri/systest/web/interweaving06.jsp
index 205b2ab..4882522 100644
--- a/jsf-ri/systest/web/interweaving06.jsp
+++ b/jsf-ri/systest/web/interweaving06.jsp
@@ -1,43 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
+
 <%@ page contentType="text/html" language="java" %>
 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
 <%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
diff --git a/jsf-ri/systest/web/interweaving07.jsp b/jsf-ri/systest/web/interweaving07.jsp
index 6c7b3ca..fec0df3 100644
--- a/jsf-ri/systest/web/interweaving07.jsp
+++ b/jsf-ri/systest/web/interweaving07.jsp
@@ -1,43 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
+
 <%@ page contentType="text/html" language="java" %>
 <%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
 <%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
diff --git a/jsf-ri/systest/web/interweaving08.jsp b/jsf-ri/systest/web/interweaving08.jsp
index 8eb3bda..e6b95b6 100644
--- a/jsf-ri/systest/web/interweaving08.jsp
+++ b/jsf-ri/systest/web/interweaving08.jsp
@@ -1,37 +1,43 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
 <%@page pageEncoding="UTF-8"%>
diff --git a/jsf-ri/systest/web/interweaving09.jsp b/jsf-ri/systest/web/interweaving09.jsp
index eebaa69..b0910e5 100644
--- a/jsf-ri/systest/web/interweaving09.jsp
+++ b/jsf-ri/systest/web/interweaving09.jsp
@@ -1,37 +1,43 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
 <%@page pageEncoding="UTF-8"%>
diff --git a/jsf-ri/systest/web/interweaving10.jsp b/jsf-ri/systest/web/interweaving10.jsp
index d95e7bb..5d00d2d 100644
--- a/jsf-ri/systest/web/interweaving10.jsp
+++ b/jsf-ri/systest/web/interweaving10.jsp
@@ -1,37 +1,43 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
 <%@page pageEncoding="UTF-8"%>
diff --git a/jsf-ri/systest/web/interweaving11.jsp b/jsf-ri/systest/web/interweaving11.jsp
index d8b2ff0..4bab1a7 100644
--- a/jsf-ri/systest/web/interweaving11.jsp
+++ b/jsf-ri/systest/web/interweaving11.jsp
@@ -1,37 +1,43 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
 <%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
diff --git a/jsf-ri/systest/web/interweaving12.jsp b/jsf-ri/systest/web/interweaving12.jsp
index 99b6745..6b48dbf 100644
--- a/jsf-ri/systest/web/interweaving12.jsp
+++ b/jsf-ri/systest/web/interweaving12.jsp
@@ -1,37 +1,43 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
 <%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
diff --git a/jsf-ri/systest/web/issue1682.xhtml b/jsf-ri/systest/web/issue1682.xhtml
new file mode 100644
index 0000000..564411c
--- /dev/null
+++ b/jsf-ri/systest/web/issue1682.xhtml
@@ -0,0 +1,72 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:d="http://mojarra.dev.java.net/source1"
+      xmlns:f="http://java.sun.com/jsf/core">
+  <h:head>
+    <title>1682</title>
+  </h:head>
+
+  <h:body>
+
+<p>Test for <a href="https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=1682">1682</a>.</p>
+
+
+<f:view>
+
+    <h:form id="form" prependId="false">
+
+        <d:postAddTester id="postAddTester" />
+
+        <h:commandButton value="reload" id="reload"/>
+
+        <p>message: #{requestScope['1682message']}</p>
+
+
+    </h:form>
+</f:view>
+
+  </h:body>
+</html>
diff --git a/jsf-ri/systest/web/jsf2jsp/ajax-gives-500.jspx b/jsf-ri/systest/web/jsf2jsp/ajax-gives-500.jspx
index 91d7a08..71b3a60 100644
--- a/jsf-ri/systest/web/jsf2jsp/ajax-gives-500.jspx
+++ b/jsf-ri/systest/web/jsf2jsp/ajax-gives-500.jspx
@@ -1,39 +1,46 @@
 <?xml version="1.0" encoding="MacRoman"?>
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 2010 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
+
 <jsp:root xmlns:jsp="http://java.sun.com/JSP/Page"
           xmlns:h="http://java.sun.com/jsf/html"
           xmlns:f="http://java.sun.com/jsf/core" version="2.0">
diff --git a/jsf-ri/systest/web/jsf2jsp/body-gives-500.jspx b/jsf-ri/systest/web/jsf2jsp/body-gives-500.jspx
index 1f495cb..d949059 100644
--- a/jsf-ri/systest/web/jsf2jsp/body-gives-500.jspx
+++ b/jsf-ri/systest/web/jsf2jsp/body-gives-500.jspx
@@ -1,39 +1,46 @@
 <?xml version="1.0" encoding="MacRoman"?>
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 2010 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
+
 <jsp:root xmlns:jsp="http://java.sun.com/JSP/Page"
           xmlns:h="http://java.sun.com/jsf/html"
           xmlns:f="http://java.sun.com/jsf/core" version="2.0">
diff --git a/jsf-ri/systest/web/jsf2jsp/button-gives-500.jspx b/jsf-ri/systest/web/jsf2jsp/button-gives-500.jspx
index 62cdda7..df08fe6 100644
--- a/jsf-ri/systest/web/jsf2jsp/button-gives-500.jspx
+++ b/jsf-ri/systest/web/jsf2jsp/button-gives-500.jspx
@@ -1,39 +1,46 @@
 <?xml version="1.0" encoding="MacRoman"?>
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 2010 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
+
 <jsp:root xmlns:jsp="http://java.sun.com/JSP/Page"
           xmlns:h="http://java.sun.com/jsf/html"
           xmlns:f="http://java.sun.com/jsf/core" version="2.0">
diff --git a/jsf-ri/systest/web/jsf2jsp/commandButton-parameter-children-gives-hidden-fields.jspx b/jsf-ri/systest/web/jsf2jsp/commandButton-parameter-children-gives-hidden-fields.jspx
index ba1145d..70fb365 100644
--- a/jsf-ri/systest/web/jsf2jsp/commandButton-parameter-children-gives-hidden-fields.jspx
+++ b/jsf-ri/systest/web/jsf2jsp/commandButton-parameter-children-gives-hidden-fields.jspx
@@ -1,39 +1,46 @@
 <?xml version="1.0" encoding="MacRoman"?>
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 2010 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
+
 <jsp:root xmlns:jsp="http://java.sun.com/JSP/Page"
           xmlns:h="http://java.sun.com/jsf/html"
           xmlns:f="http://java.sun.com/jsf/core" version="2.0">
diff --git a/jsf-ri/systest/web/jsf2jsp/event-gives-500.jspx b/jsf-ri/systest/web/jsf2jsp/event-gives-500.jspx
index 6a974c4..ca57720 100644
--- a/jsf-ri/systest/web/jsf2jsp/event-gives-500.jspx
+++ b/jsf-ri/systest/web/jsf2jsp/event-gives-500.jspx
@@ -1,39 +1,46 @@
 <?xml version="1.0" encoding="MacRoman"?>
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 2010 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
+
 <jsp:root xmlns:jsp="http://java.sun.com/JSP/Page"
           xmlns:h="http://java.sun.com/jsf/html"
           xmlns:f="http://java.sun.com/jsf/core" version="2.0">
diff --git a/jsf-ri/systest/web/jsf2jsp/head-gives-500.jspx b/jsf-ri/systest/web/jsf2jsp/head-gives-500.jspx
index b11eade..c77b4a9 100644
--- a/jsf-ri/systest/web/jsf2jsp/head-gives-500.jspx
+++ b/jsf-ri/systest/web/jsf2jsp/head-gives-500.jspx
@@ -1,39 +1,46 @@
 <?xml version="1.0" encoding="MacRoman"?>
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 2010 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
+
 <jsp:root xmlns:jsp="http://java.sun.com/JSP/Page"
           xmlns:h="http://java.sun.com/jsf/html"
           xmlns:f="http://java.sun.com/jsf/core" version="2.0">
diff --git a/jsf-ri/systest/web/jsf2jsp/link-gives-500.jspx b/jsf-ri/systest/web/jsf2jsp/link-gives-500.jspx
index 62cdda7..df08fe6 100644
--- a/jsf-ri/systest/web/jsf2jsp/link-gives-500.jspx
+++ b/jsf-ri/systest/web/jsf2jsp/link-gives-500.jspx
@@ -1,39 +1,46 @@
 <?xml version="1.0" encoding="MacRoman"?>
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 2010 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
+
 <jsp:root xmlns:jsp="http://java.sun.com/JSP/Page"
           xmlns:h="http://java.sun.com/jsf/html"
           xmlns:f="http://java.sun.com/jsf/core" version="2.0">
diff --git a/jsf-ri/systest/web/jsf2jsp/metadata-gives-500.jspx b/jsf-ri/systest/web/jsf2jsp/metadata-gives-500.jspx
index 502da79..5203fb3 100644
--- a/jsf-ri/systest/web/jsf2jsp/metadata-gives-500.jspx
+++ b/jsf-ri/systest/web/jsf2jsp/metadata-gives-500.jspx
@@ -1,39 +1,46 @@
 <?xml version="1.0" encoding="MacRoman"?>
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 2010 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
+
 <jsp:root xmlns:jsp="http://java.sun.com/JSP/Page"
           xmlns:h="http://java.sun.com/jsf/html"
           xmlns:f="http://java.sun.com/jsf/core" version="2.0">
diff --git a/jsf-ri/systest/web/jsf2jsp/outputScript-gives-500.jspx b/jsf-ri/systest/web/jsf2jsp/outputScript-gives-500.jspx
index f36c0fe..080dcee 100644
--- a/jsf-ri/systest/web/jsf2jsp/outputScript-gives-500.jspx
+++ b/jsf-ri/systest/web/jsf2jsp/outputScript-gives-500.jspx
@@ -1,39 +1,46 @@
 <?xml version="1.0" encoding="MacRoman"?>
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 2010 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
+
 <jsp:root xmlns:jsp="http://java.sun.com/JSP/Page"
           xmlns:h="http://java.sun.com/jsf/html"
           xmlns:f="http://java.sun.com/jsf/core" version="2.0">
diff --git a/jsf-ri/systest/web/jsf2jsp/outputStylesheet-gives-500.jspx b/jsf-ri/systest/web/jsf2jsp/outputStylesheet-gives-500.jspx
index 51607b4..734e566 100644
--- a/jsf-ri/systest/web/jsf2jsp/outputStylesheet-gives-500.jspx
+++ b/jsf-ri/systest/web/jsf2jsp/outputStylesheet-gives-500.jspx
@@ -1,39 +1,46 @@
 <?xml version="1.0" encoding="MacRoman"?>
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 2010 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
+
 <jsp:root xmlns:jsp="http://java.sun.com/JSP/Page"
           xmlns:h="http://java.sun.com/jsf/html"
           xmlns:f="http://java.sun.com/jsf/core" version="2.0">
diff --git a/jsf-ri/systest/web/jsf2jsp/resource-ELResolver-gives-500.jspx b/jsf-ri/systest/web/jsf2jsp/resource-ELResolver-gives-500.jspx
index 403b11f..8ded6f6 100644
--- a/jsf-ri/systest/web/jsf2jsp/resource-ELResolver-gives-500.jspx
+++ b/jsf-ri/systest/web/jsf2jsp/resource-ELResolver-gives-500.jspx
@@ -1,39 +1,46 @@
 <?xml version="1.0" encoding="MacRoman"?>
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 2010 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
+
 <jsp:root xmlns:jsp="http://java.sun.com/JSP/Page"
           xmlns:h="http://java.sun.com/jsf/html"
           xmlns:f="http://java.sun.com/jsf/core" version="2.0">
diff --git a/jsf-ri/systest/web/jsf2jsp/resources.jspx b/jsf-ri/systest/web/jsf2jsp/resources.jspx
index 117919b..a89713a 100644
--- a/jsf-ri/systest/web/jsf2jsp/resources.jspx
+++ b/jsf-ri/systest/web/jsf2jsp/resources.jspx
@@ -1,39 +1,46 @@
 <?xml version="1.0" encoding="MacRoman"?>
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 2010 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
+
 <jsp:root xmlns:jsp="http://java.sun.com/JSP/Page"
           xmlns:h="http://java.sun.com/jsf/html"
           xmlns:f="http://java.sun.com/jsf/core" version="2.0">
diff --git a/jsf-ri/systest/web/jsf2jsp/selectManyJsf2Features.jspx b/jsf-ri/systest/web/jsf2jsp/selectManyJsf2Features.jspx
index 2f56aa5..575b30d 100644
--- a/jsf-ri/systest/web/jsf2jsp/selectManyJsf2Features.jspx
+++ b/jsf-ri/systest/web/jsf2jsp/selectManyJsf2Features.jspx
@@ -1,39 +1,46 @@
 <?xml version="1.0" encoding="MacRoman"?>
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 2010 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
+
 <jsp:root xmlns:jsp="http://java.sun.com/JSP/Page"
           xmlns:h="http://java.sun.com/jsf/html"
           xmlns:f="http://java.sun.com/jsf/core" version="2.0">
diff --git a/jsf-ri/systest/web/jsp/6992760.jsp b/jsf-ri/systest/web/jsp/6992760.jsp
new file mode 100644
index 0000000..e0d86c8
--- /dev/null
+++ b/jsf-ri/systest/web/jsp/6992760.jsp
@@ -0,0 +1,70 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+"http://www.w3.org/TR/html4/loose.dtd">
+<%@ page contentType="text/html;charset=windows-1252"%>
+<%@ page import="javax.faces.context.*"%>
+<%@ page import="javax.faces.el.ValueBinding"%>
+<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%>
+<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%>
+<f:view>
+  <html>
+    <head>
+      <meta http-equiv="Content-Type"
+            content="text/html; charset=windows-1252"/>
+      <title>untitled1</title>
+    </head>
+    <body><h:form>
+    
+    <%
+      FacesContext fc = FacesContext.getCurrentInstance();
+      ValueBinding vb = fc.getApplication().createValueBinding("#{1} #{2}");
+      Class type = vb.getType(fc);
+      fc.getExternalContext().getRequestMap().put("message", type);
+      System.out.println("type:"+type);
+    %>
+    <p><a href="http://monaco.sfbay.sun.com/detail.jsf?cr=6992760">http://monaco.sfbay.sun.com/detail.jsf?cr=6992760</a></p>
+    <p>Message: <h:outputText value="#{message}" /></p>
+    </h:form></body>
+  </html>
+</f:view>
diff --git a/jsf-ri/systest/web/jsp/addComponent.jsp b/jsf-ri/systest/web/jsp/addComponent.jsp
index 90d0176..21634db 100644
--- a/jsf-ri/systest/web/jsp/addComponent.jsp
+++ b/jsf-ri/systest/web/jsp/addComponent.jsp
@@ -1,43 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
+
 
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
diff --git a/jsf-ri/systest/web/jsp/commandLinkOnClickFalse.jsp b/jsf-ri/systest/web/jsp/commandLinkOnClickFalse.jsp
index 75fa32c..35ae44e 100644
--- a/jsf-ri/systest/web/jsp/commandLinkOnClickFalse.jsp
+++ b/jsf-ri/systest/web/jsp/commandLinkOnClickFalse.jsp
@@ -1,37 +1,43 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
 <HTML>
diff --git a/jsf-ri/systest/web/jsp/commandLinkOnClickTrue.jsp b/jsf-ri/systest/web/jsp/commandLinkOnClickTrue.jsp
index acced2d..a7dc46e 100644
--- a/jsf-ri/systest/web/jsp/commandLinkOnClickTrue.jsp
+++ b/jsf-ri/systest/web/jsp/commandLinkOnClickTrue.jsp
@@ -1,37 +1,43 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
 <HTML>
diff --git a/jsf-ri/systest/web/jsp/form-input-00.jsp b/jsf-ri/systest/web/jsp/form-input-00.jsp
index 4a9bb4e..edce4bf 100644
--- a/jsf-ri/systest/web/jsp/form-input-00.jsp
+++ b/jsf-ri/systest/web/jsp/form-input-00.jsp
@@ -1,43 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
+
 
 <%@ page contentType="text/html" language="java" %>
 <%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
diff --git a/jsf-ri/systest/web/jsp/form-input-01.jsp b/jsf-ri/systest/web/jsp/form-input-01.jsp
index 11e6564..8240fa5 100644
--- a/jsf-ri/systest/web/jsp/form-input-01.jsp
+++ b/jsf-ri/systest/web/jsp/form-input-01.jsp
@@ -1,43 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
+
 
 <%@ page contentType="text/html" language="java" %>
 <%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
diff --git a/jsf-ri/systest/web/jsp/form-input-02.jsp b/jsf-ri/systest/web/jsp/form-input-02.jsp
index e87b241..dd07f00 100644
--- a/jsf-ri/systest/web/jsp/form-input-02.jsp
+++ b/jsf-ri/systest/web/jsp/form-input-02.jsp
@@ -1,43 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
+
 
 <%@ page contentType="text/html" language="java" %>
 <%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
diff --git a/jsf-ri/systest/web/jsp/formEl.jsp b/jsf-ri/systest/web/jsp/formEl.jsp
index 8ac683a..939099a 100644
--- a/jsf-ri/systest/web/jsp/formEl.jsp
+++ b/jsf-ri/systest/web/jsp/formEl.jsp
@@ -1,43 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
+
 
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
diff --git a/jsf-ri/systest/web/jsp/jsp-dynamic-00.jsp b/jsf-ri/systest/web/jsp/jsp-dynamic-00.jsp
index 4366ce2..49510d8 100644
--- a/jsf-ri/systest/web/jsp/jsp-dynamic-00.jsp
+++ b/jsf-ri/systest/web/jsp/jsp-dynamic-00.jsp
@@ -1,43 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
+
 
 <%@ page contentType="text/html" language="java" %>
 <%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
diff --git a/jsf-ri/systest/web/jsp/jsp-dynamic-01.jsp b/jsf-ri/systest/web/jsp/jsp-dynamic-01.jsp
index 1c1bd0f..b458de8 100644
--- a/jsf-ri/systest/web/jsp/jsp-dynamic-01.jsp
+++ b/jsf-ri/systest/web/jsp/jsp-dynamic-01.jsp
@@ -1,43 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
+
 
 <%@ page contentType="text/html" language="java" %>
 <%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
diff --git a/jsf-ri/systest/web/jsp/jsp-include-00.jsp b/jsf-ri/systest/web/jsp/jsp-include-00.jsp
index 5088750..f7cf690 100644
--- a/jsf-ri/systest/web/jsp/jsp-include-00.jsp
+++ b/jsf-ri/systest/web/jsp/jsp-include-00.jsp
@@ -1,43 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
+
 
 <%@ page contentType="text/html" language="java" %>
 <%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
diff --git a/jsf-ri/systest/web/jsp/jsp-include-01.jsp b/jsf-ri/systest/web/jsp/jsp-include-01.jsp
index 105019c..3747472 100644
--- a/jsf-ri/systest/web/jsp/jsp-include-01.jsp
+++ b/jsf-ri/systest/web/jsp/jsp-include-01.jsp
@@ -1,43 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
+
 
 <%@ page contentType="text/html" language="java" %>
 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
diff --git a/jsf-ri/systest/web/jsp/jsp-include-02.jsp b/jsf-ri/systest/web/jsp/jsp-include-02.jsp
index de05d9b..6d55c48 100644
--- a/jsf-ri/systest/web/jsp/jsp-include-02.jsp
+++ b/jsf-ri/systest/web/jsp/jsp-include-02.jsp
@@ -1,43 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
+
 
 <%@ page contentType="text/html" language="java" %>
 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
diff --git a/jsf-ri/systest/web/jsp/jsp-include-03.jsp b/jsf-ri/systest/web/jsp/jsp-include-03.jsp
index 9eb754c..80e4bd9 100644
--- a/jsf-ri/systest/web/jsp/jsp-include-03.jsp
+++ b/jsf-ri/systest/web/jsp/jsp-include-03.jsp
@@ -1,43 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
+
 
 <%@ page contentType="text/html" language="java" %>
 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
diff --git a/jsf-ri/systest/web/jsp/jsp-include-04.jsp b/jsf-ri/systest/web/jsp/jsp-include-04.jsp
index 25222df..c3db069 100644
--- a/jsf-ri/systest/web/jsp/jsp-include-04.jsp
+++ b/jsf-ri/systest/web/jsp/jsp-include-04.jsp
@@ -1,43 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
+
 
 <%@ page contentType="text/html" language="java" %>
 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
diff --git a/jsf-ri/systest/web/jsp/jsp-setProperty-01.jsp b/jsf-ri/systest/web/jsp/jsp-setProperty-01.jsp
index 518b878..ee3ba62 100644
--- a/jsf-ri/systest/web/jsp/jsp-setProperty-01.jsp
+++ b/jsf-ri/systest/web/jsp/jsp-setProperty-01.jsp
@@ -1,43 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
+
 
 <%@ page contentType="text/html" language="java" %>
 <%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
diff --git a/jsf-ri/systest/web/jsp/jstl-choose-00.jsp b/jsf-ri/systest/web/jsp/jstl-choose-00.jsp
index 142da33..330f70b 100644
--- a/jsf-ri/systest/web/jsp/jstl-choose-00.jsp
+++ b/jsf-ri/systest/web/jsp/jstl-choose-00.jsp
@@ -1,43 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
+
 
 <%@ page contentType="text/html" language="java" %>
 <%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
diff --git a/jsf-ri/systest/web/jsp/jstl-choose-01.jsp b/jsf-ri/systest/web/jsp/jstl-choose-01.jsp
index d2b4e38..3575e7e 100644
--- a/jsf-ri/systest/web/jsp/jstl-choose-01.jsp
+++ b/jsf-ri/systest/web/jsp/jstl-choose-01.jsp
@@ -1,43 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
+
 
 <%@ page contentType="text/html" language="java" %>
 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
diff --git a/jsf-ri/systest/web/jsp/jstl-choose-02.jsp b/jsf-ri/systest/web/jsp/jstl-choose-02.jsp
index 795dbfe..f9efb25 100644
--- a/jsf-ri/systest/web/jsp/jstl-choose-02.jsp
+++ b/jsf-ri/systest/web/jsp/jstl-choose-02.jsp
@@ -1,43 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
+
 
 <%@ page contentType="text/html" language="java" %>
 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
diff --git a/jsf-ri/systest/web/jsp/jstl-foreach-00.jsp b/jsf-ri/systest/web/jsp/jstl-foreach-00.jsp
index 1cebe2b..44cd0b7 100644
--- a/jsf-ri/systest/web/jsp/jstl-foreach-00.jsp
+++ b/jsf-ri/systest/web/jsp/jstl-foreach-00.jsp
@@ -1,43 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
+
 
 <%@ page contentType="text/html" language="java" %>
 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
diff --git a/jsf-ri/systest/web/jsp/jstl-foreach-01.jsp b/jsf-ri/systest/web/jsp/jstl-foreach-01.jsp
index 58f789f..472e934 100644
--- a/jsf-ri/systest/web/jsp/jstl-foreach-01.jsp
+++ b/jsf-ri/systest/web/jsp/jstl-foreach-01.jsp
@@ -1,43 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
+
 
 <%@ page contentType="text/html" language="java" %>
 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
diff --git a/jsf-ri/systest/web/jsp/jstl-if-00.jsp b/jsf-ri/systest/web/jsp/jstl-if-00.jsp
index 73cbf02..5c09003 100644
--- a/jsf-ri/systest/web/jsp/jstl-if-00.jsp
+++ b/jsf-ri/systest/web/jsp/jstl-if-00.jsp
@@ -1,43 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
+
 
 <%@ page contentType="text/html" language="java" %>
 <%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
diff --git a/jsf-ri/systest/web/jsp/jstl-if-01.jsp b/jsf-ri/systest/web/jsp/jstl-if-01.jsp
index b2c1a9f..a6d0bba 100644
--- a/jsf-ri/systest/web/jsp/jstl-if-01.jsp
+++ b/jsf-ri/systest/web/jsp/jstl-if-01.jsp
@@ -1,43 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
+
 
 <%@ page contentType="text/html" language="java" %>
 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
diff --git a/jsf-ri/systest/web/jsp/jstl-if-02.jsp b/jsf-ri/systest/web/jsp/jstl-if-02.jsp
index d6b7ca9..74b6181 100644
--- a/jsf-ri/systest/web/jsp/jstl-if-02.jsp
+++ b/jsf-ri/systest/web/jsp/jstl-if-02.jsp
@@ -1,43 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
+
 
 <%@ page contentType="text/html" language="java" %>
 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
diff --git a/jsf-ri/systest/web/jsp/jstl-if-03.jsp b/jsf-ri/systest/web/jsp/jstl-if-03.jsp
index 407b2d0..371d2b1 100644
--- a/jsf-ri/systest/web/jsp/jstl-if-03.jsp
+++ b/jsf-ri/systest/web/jsp/jstl-if-03.jsp
@@ -1,43 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
+
 
 <%@ page contentType="text/html" language="java" %>
 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
diff --git a/jsf-ri/systest/web/jsp/jstl-if-04.jsp b/jsf-ri/systest/web/jsp/jstl-if-04.jsp
index 8a45dc4..9d1a934 100644
--- a/jsf-ri/systest/web/jsp/jstl-if-04.jsp
+++ b/jsf-ri/systest/web/jsp/jstl-if-04.jsp
@@ -1,43 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
+
 
 <%@ page contentType="text/html" language="java" %>
 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
diff --git a/jsf-ri/systest/web/jsp/jstl-if-05.jsp b/jsf-ri/systest/web/jsp/jstl-if-05.jsp
index 31c93cb..a9701ac 100644
--- a/jsf-ri/systest/web/jsp/jstl-if-05.jsp
+++ b/jsf-ri/systest/web/jsp/jstl-if-05.jsp
@@ -1,43 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
+
 
 <%@ page contentType="text/html" language="java" %>
 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
diff --git a/jsf-ri/systest/web/jsp/jstl-import-00.jsp b/jsf-ri/systest/web/jsp/jstl-import-00.jsp
index afa897d..9338136 100644
--- a/jsf-ri/systest/web/jsp/jstl-import-00.jsp
+++ b/jsf-ri/systest/web/jsp/jstl-import-00.jsp
@@ -1,43 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
+
 
 <%@ page contentType="text/html" language="java" %>
 <%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
diff --git a/jsf-ri/systest/web/jsp/jstl-import-01.jsp b/jsf-ri/systest/web/jsp/jstl-import-01.jsp
index eec542d..0f7a9e1 100644
--- a/jsf-ri/systest/web/jsp/jstl-import-01.jsp
+++ b/jsf-ri/systest/web/jsp/jstl-import-01.jsp
@@ -1,43 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
+
 
 <%@ page contentType="text/html" language="java" %>
 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
diff --git a/jsf-ri/systest/web/jsp/jstl-import-01a.jsp b/jsf-ri/systest/web/jsp/jstl-import-01a.jsp
index da4413a..b52a0c4 100644
--- a/jsf-ri/systest/web/jsp/jstl-import-01a.jsp
+++ b/jsf-ri/systest/web/jsp/jstl-import-01a.jsp
@@ -1,42 +1,45 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
+
 
 [B]
diff --git a/jsf-ri/systest/web/jsp/jstl-import-01b.jsp b/jsf-ri/systest/web/jsp/jstl-import-01b.jsp
index c9aab2b..dbaca7f 100644
--- a/jsf-ri/systest/web/jsp/jstl-import-01b.jsp
+++ b/jsf-ri/systest/web/jsp/jstl-import-01b.jsp
@@ -1,42 +1,45 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
+
 
 [D]
diff --git a/jsf-ri/systest/web/jsp/jstl-import-02.jsp b/jsf-ri/systest/web/jsp/jstl-import-02.jsp
index 2c1bd49..3b96858 100644
--- a/jsf-ri/systest/web/jsp/jstl-import-02.jsp
+++ b/jsf-ri/systest/web/jsp/jstl-import-02.jsp
@@ -1,43 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
+
 
 <%@ page contentType="text/html" language="java" %>
 <%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
diff --git a/jsf-ri/systest/web/jsp/jstl-import-02a.jsp b/jsf-ri/systest/web/jsp/jstl-import-02a.jsp
index 187b966..15d24c7 100644
--- a/jsf-ri/systest/web/jsp/jstl-import-02a.jsp
+++ b/jsf-ri/systest/web/jsp/jstl-import-02a.jsp
@@ -1,43 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
+
 
 <%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
 <%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %>
diff --git a/jsf-ri/systest/web/jsp/jstl-import-02b.jsp b/jsf-ri/systest/web/jsp/jstl-import-02b.jsp
index 737ee55..2275448 100644
--- a/jsf-ri/systest/web/jsp/jstl-import-02b.jsp
+++ b/jsf-ri/systest/web/jsp/jstl-import-02b.jsp
@@ -1,43 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
+
 
 <%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
 <%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %>
diff --git a/jsf-ri/systest/web/jsp/jstl-import-03.jsp b/jsf-ri/systest/web/jsp/jstl-import-03.jsp
index 7ca7304..42c457f 100644
--- a/jsf-ri/systest/web/jsp/jstl-import-03.jsp
+++ b/jsf-ri/systest/web/jsp/jstl-import-03.jsp
@@ -1,43 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
+
 
 <%@ page contentType="text/html" language="java" %>
 <%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
diff --git a/jsf-ri/systest/web/jsp/jstl-import-03a.jsp b/jsf-ri/systest/web/jsp/jstl-import-03a.jsp
index 1d8d617..101040b 100644
--- a/jsf-ri/systest/web/jsp/jstl-import-03a.jsp
+++ b/jsf-ri/systest/web/jsp/jstl-import-03a.jsp
@@ -1,43 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
+
 
 <%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
 <%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %>
diff --git a/jsf-ri/systest/web/jsp/jstl-import-03b.jsp b/jsf-ri/systest/web/jsp/jstl-import-03b.jsp
index 7153cb6..8d61249 100644
--- a/jsf-ri/systest/web/jsp/jstl-import-03b.jsp
+++ b/jsf-ri/systest/web/jsp/jstl-import-03b.jsp
@@ -1,43 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
+
 
 <%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
 <%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %>
diff --git a/jsf-ri/systest/web/jsp/jstl-import-03c.jsp b/jsf-ri/systest/web/jsp/jstl-import-03c.jsp
index db139cd..f88659c 100644
--- a/jsf-ri/systest/web/jsp/jstl-import-03c.jsp
+++ b/jsf-ri/systest/web/jsp/jstl-import-03c.jsp
@@ -1,43 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
+
 
 <%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
 <%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %>
diff --git a/jsf-ri/systest/web/jsp/jstl-import-04.jsp b/jsf-ri/systest/web/jsp/jstl-import-04.jsp
index 4abe1ee..ab4a253 100644
--- a/jsf-ri/systest/web/jsp/jstl-import-04.jsp
+++ b/jsf-ri/systest/web/jsp/jstl-import-04.jsp
@@ -1,43 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
+
 
 <%@ page contentType="text/html" language="java" %>
 <%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
diff --git a/jsf-ri/systest/web/jsp/jstl-import-04a.jsp b/jsf-ri/systest/web/jsp/jstl-import-04a.jsp
index a2e1583..d21e5bc 100644
--- a/jsf-ri/systest/web/jsp/jstl-import-04a.jsp
+++ b/jsf-ri/systest/web/jsp/jstl-import-04a.jsp
@@ -1,43 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
+
 
 <%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
 <%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %>
diff --git a/jsf-ri/systest/web/jsp/jstl-import-04b.jsp b/jsf-ri/systest/web/jsp/jstl-import-04b.jsp
index 5aa9223..98973ca 100644
--- a/jsf-ri/systest/web/jsp/jstl-import-04b.jsp
+++ b/jsf-ri/systest/web/jsp/jstl-import-04b.jsp
@@ -1,43 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
+
 
 <%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
 <%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %>
diff --git a/jsf-ri/systest/web/jsp/jstl-import-04c.jsp b/jsf-ri/systest/web/jsp/jstl-import-04c.jsp
index 2fe6ec7..fcab041 100644
--- a/jsf-ri/systest/web/jsp/jstl-import-04c.jsp
+++ b/jsf-ri/systest/web/jsp/jstl-import-04c.jsp
@@ -1,43 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
+
 
 <%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
 <%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %>
diff --git a/jsf-ri/systest/web/jsp/missing-view.jsp b/jsf-ri/systest/web/jsp/missing-view.jsp
index 511d04e..fb88dc6 100644
--- a/jsf-ri/systest/web/jsp/missing-view.jsp
+++ b/jsf-ri/systest/web/jsp/missing-view.jsp
@@ -1,43 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
+
 
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
diff --git a/jsf-ri/systest/web/jsp/prependId.jsp b/jsf-ri/systest/web/jsp/prependId.jsp
index f930125..838b8f9 100644
--- a/jsf-ri/systest/web/jsp/prependId.jsp
+++ b/jsf-ri/systest/web/jsp/prependId.jsp
@@ -1,43 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
+
 
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
diff --git a/jsf-ri/systest/web/jsp/selectBooleanValue.jsp b/jsf-ri/systest/web/jsp/selectBooleanValue.jsp
index 15cdded..f9fddc8 100644
--- a/jsf-ri/systest/web/jsp/selectBooleanValue.jsp
+++ b/jsf-ri/systest/web/jsp/selectBooleanValue.jsp
@@ -1,43 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
+
 
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
diff --git a/jsf-ri/systest/web/jsp/selectManyInvalidValue.jsp b/jsf-ri/systest/web/jsp/selectManyInvalidValue.jsp
index 08a5ec3..faec99e 100644
--- a/jsf-ri/systest/web/jsp/selectManyInvalidValue.jsp
+++ b/jsf-ri/systest/web/jsp/selectManyInvalidValue.jsp
@@ -1,43 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
+
 
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
diff --git a/jsf-ri/systest/web/jsp/selectManyMismatchValue.jsp b/jsf-ri/systest/web/jsp/selectManyMismatchValue.jsp
index 4e135ed..53ce255 100644
--- a/jsf-ri/systest/web/jsp/selectManyMismatchValue.jsp
+++ b/jsf-ri/systest/web/jsp/selectManyMismatchValue.jsp
@@ -1,43 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
+
 
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
diff --git a/jsf-ri/systest/web/jsp/selectManyNoValue.jsp b/jsf-ri/systest/web/jsp/selectManyNoValue.jsp
index bfc2241..957a3ff 100644
--- a/jsf-ri/systest/web/jsp/selectManyNoValue.jsp
+++ b/jsf-ri/systest/web/jsp/selectManyNoValue.jsp
@@ -1,43 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
+
 
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
diff --git a/jsf-ri/systest/web/jsp/selectManyTypeInts.jsp b/jsf-ri/systest/web/jsp/selectManyTypeInts.jsp
index 1a8d29f..fd309be 100644
--- a/jsf-ri/systest/web/jsp/selectManyTypeInts.jsp
+++ b/jsf-ri/systest/web/jsp/selectManyTypeInts.jsp
@@ -1,43 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
+
 
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
diff --git a/jsf-ri/systest/web/jsp/selectOneInvalidValue.jsp b/jsf-ri/systest/web/jsp/selectOneInvalidValue.jsp
index 46ff8ba..7a70761 100644
--- a/jsf-ri/systest/web/jsp/selectOneInvalidValue.jsp
+++ b/jsf-ri/systest/web/jsp/selectOneInvalidValue.jsp
@@ -1,43 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
+
 
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
diff --git a/jsf-ri/systest/web/jsp/selectOneNoValue.jsp b/jsf-ri/systest/web/jsp/selectOneNoValue.jsp
index 2a44691..3950b0f 100644
--- a/jsf-ri/systest/web/jsp/selectOneNoValue.jsp
+++ b/jsf-ri/systest/web/jsp/selectOneNoValue.jsp
@@ -1,43 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
+
 
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
diff --git a/jsf-ri/systest/web/jsp/selectOneRadioTypeInt.jsp b/jsf-ri/systest/web/jsp/selectOneRadioTypeInt.jsp
index 53f9869..5058213 100644
--- a/jsf-ri/systest/web/jsp/selectOneRadioTypeInt.jsp
+++ b/jsf-ri/systest/web/jsp/selectOneRadioTypeInt.jsp
@@ -1,40 +1,45 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-  
 <html>
 <body>
 
diff --git a/jsf-ri/systest/web/jsp/selectOneRadioTypeInteger.jsp b/jsf-ri/systest/web/jsp/selectOneRadioTypeInteger.jsp
index 0757fd0..dcad184 100644
--- a/jsf-ri/systest/web/jsp/selectOneRadioTypeInteger.jsp
+++ b/jsf-ri/systest/web/jsp/selectOneRadioTypeInteger.jsp
@@ -1,40 +1,45 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-  
 <html>
 <body>
 
diff --git a/jsf-ri/systest/web/jsp/selectOneTypeInt.jsp b/jsf-ri/systest/web/jsp/selectOneTypeInt.jsp
index be07067..feb89a6 100644
--- a/jsf-ri/systest/web/jsp/selectOneTypeInt.jsp
+++ b/jsf-ri/systest/web/jsp/selectOneTypeInt.jsp
@@ -1,43 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
+
 
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
diff --git a/jsf-ri/systest/web/jsp/testMissingActionListenerMethod.jsp b/jsf-ri/systest/web/jsp/testMissingActionListenerMethod.jsp
index 7d7d993..c484857 100644
--- a/jsf-ri/systest/web/jsp/testMissingActionListenerMethod.jsp
+++ b/jsf-ri/systest/web/jsp/testMissingActionListenerMethod.jsp
@@ -1,37 +1,43 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
 <html>
diff --git a/jsf-ri/systest/web/jsp/tlvTest01.jsp b/jsf-ri/systest/web/jsp/tlvTest01.jsp
index 7661c7f..e904220 100644
--- a/jsf-ri/systest/web/jsp/tlvTest01.jsp
+++ b/jsf-ri/systest/web/jsp/tlvTest01.jsp
@@ -1,43 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
+
 
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
diff --git a/jsf-ri/systest/web/jsp/verbatim-one-test.jsp b/jsf-ri/systest/web/jsp/verbatim-one-test.jsp
index e79ee04..3eab1b3 100644
--- a/jsf-ri/systest/web/jsp/verbatim-one-test.jsp
+++ b/jsf-ri/systest/web/jsp/verbatim-one-test.jsp
@@ -1,37 +1,43 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
 <html>
diff --git a/jsf-ri/systest/web/jsp/verbatim-test.jsp b/jsf-ri/systest/web/jsp/verbatim-test.jsp
index e0eb4ab..30f96fa 100644
--- a/jsf-ri/systest/web/jsp/verbatim-test.jsp
+++ b/jsf-ri/systest/web/jsp/verbatim-test.jsp
@@ -1,43 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
+
 
 <html>
     <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
diff --git a/jsf-ri/systest/web/jsp/verbatim-two-test.jsp b/jsf-ri/systest/web/jsp/verbatim-two-test.jsp
index 2405967..c9a2b72 100644
--- a/jsf-ri/systest/web/jsp/verbatim-two-test.jsp
+++ b/jsf-ri/systest/web/jsp/verbatim-two-test.jsp
@@ -1,37 +1,43 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
 <html>
diff --git a/jsf-ri/systest/web/listener-1729.xhtml b/jsf-ri/systest/web/listener-1729.xhtml
new file mode 100644
index 0000000..2674d12
--- /dev/null
+++ b/jsf-ri/systest/web/listener-1729.xhtml
@@ -0,0 +1,68 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    <h:head>
+        <title>Facelet Title</title>
+    </h:head>
+    <h:body>
+        <p><a href="https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=1729">https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=1729</a></p>
+
+        <h:form prependId="false">
+        <h:inputText id="test" value="#{bean1729.input1}" >
+
+            <f:valueChangeListener type="com.sun.faces.systest.listener" />
+        </h:inputText>
+
+        <h:commandButton  id="button" action="#{bean1729.doIt}"  value="Klick!" />
+        <h:commandLink id="link" action="#{bean1729.doIt}" value="Tja" />
+
+        <p>actionListenerMessage: #{flash['processActionListenerMessage']}</p>
+        <p>valueChangeListenerMessage: #{flash['processValueChangeMessage']}</p>
+
+        </h:form>
+    </h:body>
+</html>
diff --git a/jsf-ri/systest/web/listener.jsp b/jsf-ri/systest/web/listener.jsp
old mode 100644
new mode 100755
index a4cf29e..3e75ab7
--- a/jsf-ri/systest/web/listener.jsp
+++ b/jsf-ri/systest/web/listener.jsp
@@ -1,44 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
 
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
diff --git a/jsf-ri/systest/web/listenerTagListenersBinding.jsp b/jsf-ri/systest/web/listenerTagListenersBinding.jsp
index 84c1d61..745b11b 100644
--- a/jsf-ri/systest/web/listenerTagListenersBinding.jsp
+++ b/jsf-ri/systest/web/listenerTagListenersBinding.jsp
@@ -1,37 +1,43 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
 <%@ page contentType="text/html;charset=UTF-8" language="java" %>
diff --git a/jsf-ri/systest/web/listenerTagListenersBindingType.jsp b/jsf-ri/systest/web/listenerTagListenersBindingType.jsp
index 210e3b6..47722fe 100644
--- a/jsf-ri/systest/web/listenerTagListenersBindingType.jsp
+++ b/jsf-ri/systest/web/listenerTagListenersBindingType.jsp
@@ -1,37 +1,43 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
 <%@ page contentType="text/html;charset=UTF-8" language="java" %>
diff --git a/jsf-ri/systest/web/listenerTagListenersType.jsp b/jsf-ri/systest/web/listenerTagListenersType.jsp
index 93d94c2..1dce2ce 100644
--- a/jsf-ri/systest/web/listenerTagListenersType.jsp
+++ b/jsf-ri/systest/web/listenerTagListenersType.jsp
@@ -1,37 +1,43 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
 <%@ page contentType="text/html;charset=UTF-8" language="java" %>
diff --git a/jsf-ri/systest/web/listeners.xhtml b/jsf-ri/systest/web/listeners.xhtml
new file mode 100644
index 0000000..8e171f1
--- /dev/null
+++ b/jsf-ri/systest/web/listeners.xhtml
@@ -0,0 +1,96 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+  <h:head>
+  </h:head>
+
+  <h:body>
+
+<f:view>
+    <f:phaseListener type="#{bean2194.phaseListenerType}" />
+    <h:form id="form" prependId="false">
+
+      <p>
+
+      <h:commandButton id="button1" value="Fire ActionListener" >
+          <f:actionListener type="com.sun.faces.systest.TestActionListener01"/>
+      </h:commandButton>
+
+      </p>
+
+      <p>
+
+      <h:commandButton id="button2" value="Fire ActionListener" >
+          <f:actionListener type="#{bean2194.actionListenerType}"/>
+      </h:commandButton>
+
+      </p>
+
+      <p>
+
+      <h:inputText id="input1" >
+         <f:valueChangeListener type="com.sun.faces.systest.TestValueChangeListener01"/>
+      </h:inputText>
+
+      </p>
+
+      <p>
+
+      <h:inputText id="input2" >
+         <f:valueChangeListener type="#{bean2194.valueChangeListenerType}"/>
+      </h:inputText>
+
+      </p>
+
+      <h:commandButton id="submit" value="submit"/>
+
+      <h:messages />
+
+    </h:form>
+</f:view>
+
+  </h:body>
+</html>
diff --git a/jsf-ri/systest/web/managed01.jsp b/jsf-ri/systest/web/managed01.jsp
index 232c420..309f46e 100644
--- a/jsf-ri/systest/web/managed01.jsp
+++ b/jsf-ri/systest/web/managed01.jsp
@@ -1,37 +1,43 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
 <%@ page contentType="text/html"
diff --git a/jsf-ri/systest/web/managed02.jsp b/jsf-ri/systest/web/managed02.jsp
index 71f49ca..7087b62 100644
--- a/jsf-ri/systest/web/managed02.jsp
+++ b/jsf-ri/systest/web/managed02.jsp
@@ -1,37 +1,43 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
 <%@ page contentType="text/html"
diff --git a/jsf-ri/systest/web/managed03.jsp b/jsf-ri/systest/web/managed03.jsp
index e86e158..57efdfc 100644
--- a/jsf-ri/systest/web/managed03.jsp
+++ b/jsf-ri/systest/web/managed03.jsp
@@ -1,37 +1,43 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
diff --git a/jsf-ri/systest/web/managed04.jsp b/jsf-ri/systest/web/managed04.jsp
index 0cbda87..a36d9ac 100644
--- a/jsf-ri/systest/web/managed04.jsp
+++ b/jsf-ri/systest/web/managed04.jsp
@@ -1,37 +1,43 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
diff --git a/jsf-ri/systest/web/managed07.jsp b/jsf-ri/systest/web/managed07.jsp
index 3ee0789..a11ce62 100644
--- a/jsf-ri/systest/web/managed07.jsp
+++ b/jsf-ri/systest/web/managed07.jsp
@@ -1,37 +1,43 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
diff --git a/jsf-ri/systest/web/managed08.jsp b/jsf-ri/systest/web/managed08.jsp
index d95a55a..a9112d1 100644
--- a/jsf-ri/systest/web/managed08.jsp
+++ b/jsf-ri/systest/web/managed08.jsp
@@ -1,37 +1,43 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
diff --git a/jsf-ri/systest/web/message01.jsp b/jsf-ri/systest/web/message01.jsp
index a21f1d4..3f0906f 100644
--- a/jsf-ri/systest/web/message01.jsp
+++ b/jsf-ri/systest/web/message01.jsp
@@ -1,37 +1,43 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
 <%@ page contentType="text/html"
diff --git a/jsf-ri/systest/web/message02.jsp b/jsf-ri/systest/web/message02.jsp
index b1bc66c..a75772d 100644
--- a/jsf-ri/systest/web/message02.jsp
+++ b/jsf-ri/systest/web/message02.jsp
@@ -1,37 +1,43 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
 <%@ page contentType="text/html"
diff --git a/jsf-ri/systest/web/message03.jsp b/jsf-ri/systest/web/message03.jsp
index 6f8c9fa..b39e206 100644
--- a/jsf-ri/systest/web/message03.jsp
+++ b/jsf-ri/systest/web/message03.jsp
@@ -1,37 +1,43 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
 <%@ page contentType="text/html"
diff --git a/jsf-ri/systest/web/message04.jsp b/jsf-ri/systest/web/message04.jsp
index 7ad3dd8..75e70e5 100644
--- a/jsf-ri/systest/web/message04.jsp
+++ b/jsf-ri/systest/web/message04.jsp
@@ -1,37 +1,43 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
 <%@ page contentType="text/html"
diff --git a/jsf-ri/systest/web/message05.xhtml b/jsf-ri/systest/web/message05.xhtml
new file mode 100644
index 0000000..ddf4865
--- /dev/null
+++ b/jsf-ri/systest/web/message05.xhtml
@@ -0,0 +1,53 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<ui:composition xmlns="http://www.w3.org/1999/xhtml"
+				xmlns:h="http://java.sun.com/jsf/html"
+				xmlns:f="http://java.sun.com/jsf/core"
+				xmlns:ui="http://java.sun.com/jsf/facelets"
+				xmlns:test="http://testcomponent">
+      
+	<h2>message test</h2>
+
+	<h:form prependId="false">
+	
+           <h:outputText id="output1" value="#{messageBean.value}"/>  
+           <h:outputText id="output2" value="#{messageBean.value}"/>  
+
+           <br/>
+
+<!-- Case 1: Expected output: Both summary and detail rendered. -->
+
+           <h:message for="output1" showSummary="true" showDetail="true"/>
+
+           <br/>
+
+<!-- Case 2: Expected output: Both summary and detail rendered. Tooltip detail rendered. -->
+
+           <h:message for="output1" showSummary="true" showDetail="true" tooltip="true"/>
+
+           <br/>
+		
+<!-- Case 3: Expected output: Detail rendered. Tooltip detail rendered. -->
+
+           <h:message for="output2" showDetail="true" tooltip="true"/>
+
+           <br/>
+		
+<!-- Case 4: Expected output: Detail rendered. Tooltip detail rendered. -->
+
+           <h:message for="output2" tooltip="true"/>
+
+           <br/>
+		
+<!-- Case 5: Expected output: Both summary and detail rendered. Tooltip detail rendered. -->
+
+           <h:message for="output2" showSummary="true" tooltip="true"/>
+
+           <br/>
+		
+<!-- Case 6: Expected output: Summary rendered. Tooltip detail rendered. -->
+
+           <h:message for="output2" showSummary="true" showDetail="false" tooltip="true"/>
+
+	</h:form>
+	
+</ui:composition>			
diff --git a/jsf-ri/systest/web/messages.xhtml b/jsf-ri/systest/web/messages.xhtml
new file mode 100644
index 0000000..f0e093e
--- /dev/null
+++ b/jsf-ri/systest/web/messages.xhtml
@@ -0,0 +1,52 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<ui:composition xmlns="http://www.w3.org/1999/xhtml"
+				xmlns:h="http://java.sun.com/jsf/html"
+				xmlns:f="http://java.sun.com/jsf/core"
+				xmlns:ui="http://java.sun.com/jsf/facelets"
+				xmlns:test="http://testcomponent">
+      
+	<h2>message test</h2>
+
+	<h:form prependId="false">
+	
+           <h:outputText id="output1" value="#{messageBean.value}"/>  
+
+           <br/>
+
+<!-- Case 1: Expected output: Both summary and detail rendered. -->
+
+           <h:messages showSummary="true" showDetail="true"/>
+
+           <br/>
+
+<!-- Case 2: Expected output: Both summary and detail rendered. Tooltip detail rendered. -->
+
+           <h:messages showSummary="true" showDetail="true" tooltip="true"/>
+
+           <br/>
+
+<!-- Case 3: Expected output: Both summary and detail rendered. Tooltip detail rendered. -->
+
+           <h:messages showDetail="true" tooltip="true"/>
+
+           <br/>
+
+<!-- Case 4: Expected output: Summary rendered. Tooltip detail rendered. -->
+
+           <h:messages tooltip="true"/>
+
+           <br/>
+
+<!-- Case 5: Expected output: Summary rendered. Tooltip detail rendered. -->
+
+           <h:messages showSummary="true" tooltip="true"/>
+
+           <br/>
+
+<!-- Case 6: Expected output: Summary rendered. Tooltip detail rendered. -->
+
+           <h:messages showSummary="true" showDetail="false" tooltip="true"/>
+
+	</h:form>
+	
+</ui:composition>			
diff --git a/jsf-ri/systest/web/methodref01.jsp b/jsf-ri/systest/web/methodref01.jsp
index 120d076..f2f63c4 100644
--- a/jsf-ri/systest/web/methodref01.jsp
+++ b/jsf-ri/systest/web/methodref01.jsp
@@ -1,37 +1,43 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
diff --git a/jsf-ri/systest/web/methodref02.jsp b/jsf-ri/systest/web/methodref02.jsp
index 55342cc..5ea34cf 100644
--- a/jsf-ri/systest/web/methodref02.jsp
+++ b/jsf-ri/systest/web/methodref02.jsp
@@ -1,37 +1,43 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
 <%@ page contentType="text/html"
diff --git a/jsf-ri/systest/web/phaseListener01.jsp b/jsf-ri/systest/web/phaseListener01.jsp
index d12472e..9a713a4 100644
--- a/jsf-ri/systest/web/phaseListener01.jsp
+++ b/jsf-ri/systest/web/phaseListener01.jsp
@@ -1,37 +1,43 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
 <%@ page contentType="text/html"
diff --git a/jsf-ri/systest/web/phaseListener01A.jsp b/jsf-ri/systest/web/phaseListener01A.jsp
index b8dca19..b5fed07 100644
--- a/jsf-ri/systest/web/phaseListener01A.jsp
+++ b/jsf-ri/systest/web/phaseListener01A.jsp
@@ -1,37 +1,43 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
 <%
diff --git a/jsf-ri/systest/web/positiveTagFile.jsp b/jsf-ri/systest/web/positiveTagFile.jsp
index 792c968..3e726f8 100644
--- a/jsf-ri/systest/web/positiveTagFile.jsp
+++ b/jsf-ri/systest/web/positiveTagFile.jsp
@@ -1,76 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All Rights Reserved.
- 
- Redistribution and use in source and binary forms, with or
- without modification, are permitted provided that the following
- conditions are met:
- 
- - Redistributions of source code must retain the above copyright
-   notice, this list of conditions and the following disclaimer.
- 
- - Redistribution in binary form must reproduce the above
-   copyright notice, this list of conditions and the following
-   disclaimer in the documentation and/or other materials
-   provided with the distribution.
-    
- Neither the name of Sun Microsystems, Inc. or the names of
- contributors may be used to endorse or promote products derived
- from this software without specific prior written permission.
-  
- This software is provided "AS IS," without a warranty of any
- kind. ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND
- WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY
- EXCLUDED. SUN AND ITS LICENSORS SHALL NOT BE LIABLE FOR ANY
- DAMAGES OR LIABILITIES SUFFERED BY LICENSEE AS A RESULT OF OR
- RELATING TO USE, MODIFICATION OR DISTRIBUTION OF THIS SOFTWARE OR
- ITS DERIVATIVES. IN NO EVENT WILL SUN OR ITS LICENSORS BE LIABLE
- FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT,
- SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER
- CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF
- THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF SUN HAS
- BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
-  
- You acknowledge that this software is not designed, licensed or
- intended for use in the design, construction, operation or
- maintenance of any nuclear facility.
--->
+
 
 <HTML>
     <HEAD> <title>positiveTagFile</title> </HEAD>
diff --git a/jsf-ri/systest/web/pre31injection/injectedComponent.xhtml b/jsf-ri/systest/web/pre31injection/injectedComponent.xhtml
new file mode 100644
index 0000000..c014230
--- /dev/null
+++ b/jsf-ri/systest/web/pre31injection/injectedComponent.xhtml
@@ -0,0 +1,48 @@
+<!--
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+ Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+
+ The contents of this file are subject to the terms of either the GNU
+ General Public License Version 2 only ("GPL") or the Common Development
+ and Distribution License("CDDL") (collectively, the "License").  You
+ may not use this file except in compliance with the License. You can obtain
+ a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
+ or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ language governing permissions and limitations under the License.
+
+ When distributing the software, include this License Header Notice in each
+ file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
+ Sun designates this particular file as subject to the "Classpath" exception
+ as provided by Sun in the GPL Version 2 section of the License file that
+ accompanied this code.  If applicable, add the following below the License
+ Header, with the fields enclosed by brackets [] replaced by your own
+ identifying information: "Portions Copyrighted [year]
+ [name of copyright owner]"
+
+ Contributor(s):
+
+ If you wish your version of this file to be governed by only the CDDL or
+ only the GPL Version 2, indicate your decision by adding "[Contributor]
+ elects to include this software in this distribution under the [CDDL or GPL
+ Version 2] license."  If you don't indicate a single choice of license, a
+ recipient has the option to distribute your version of this file under
+ either the CDDL, the GPL Version 2 or to extend the choice of license to
+ its licensees as provided above.  However, if you add GPL Version 2 code
+ and therefore, elected the GPL Version 2 license, then the option applies
+ only if the new code is made subject to such option by the copyright
+ holder.
+-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:custom="http://mojarra.dev.java.net/source1">
+    <h:head>
+        <title>Injected artifacts</title>
+    </h:head>
+    <h:body>
+        <custom:injectedComponent />
+
+    </h:body>
+</html>
+
diff --git a/jsf-ri/systest/web/projectStage/formMessage.xhtml b/jsf-ri/systest/web/projectStage/formMessage.xhtml
new file mode 100644
index 0000000..1d56ee0
--- /dev/null
+++ b/jsf-ri/systest/web/projectStage/formMessage.xhtml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:f="http://java.sun.com/jsf/core" 
+      xmlns:h="http://java.sun.com/jsf/html">
+   <f:metadata>
+      <f:viewParam name="q" value="Current Problem"/>
+   </f:metadata>
+   <h:head>
+      <title>A Java Trivia Quiz</title>
+   </h:head>
+   <h:body>
+
+<p>Verify that the "missing form" message does not show up.
+ProjectStage must be set to Development.</p>
+
+      <h:form>
+         <p>Which Java keyword is used to define a subclass</p>
+         <p><h:inputText /></p>
+         <p><h:commandButton value="check answer"/></p>
+      </h:form>
+   </h:body>
+</html> 
diff --git a/jsf-ri/systest/web/publishEvents.xhtml b/jsf-ri/systest/web/publishEvents.xhtml
new file mode 100644
index 0000000..4244ef3
--- /dev/null
+++ b/jsf-ri/systest/web/publishEvents.xhtml
@@ -0,0 +1,61 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<ui:composition xmlns="http://www.w3.org/1999/xhtml"
+				xmlns:h="http://java.sun.com/jsf/html"
+				xmlns:f="http://java.sun.com/jsf/core"
+				xmlns:ui="http://java.sun.com/jsf/facelets"
+				xmlns:test="http://testcomponent">
+
+	<h2>This page contains a component that subscribes to PreRenderViewEvent, PostAddToViewEvent events.   When this page is rendered, the event listener for this component should have fired.</h2>
+	
+	<h:messages/>
+		
+	<h:form prependId="false" id="dynamicForm">
+	
+           <test:addcomponent2 id="componentWithListener"/>
+           <test:addcomponent3 id="componentWithNoListener"/>
+
+	</h:form>			
+	
+</ui:composition>
+
diff --git a/jsf-ri/systest/web/redirect.jsp b/jsf-ri/systest/web/redirect.jsp
index 345b375..7795934 100644
--- a/jsf-ri/systest/web/redirect.jsp
+++ b/jsf-ri/systest/web/redirect.jsp
@@ -1,43 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
+
 
 <HTML>
 
diff --git a/jsf-ri/systest/web/redirect1.jsp b/jsf-ri/systest/web/redirect1.jsp
index 507b3ff..a1706e7 100644
--- a/jsf-ri/systest/web/redirect1.jsp
+++ b/jsf-ri/systest/web/redirect1.jsp
@@ -1,43 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
+
 
 <HTML>
     <HEAD> <TITLE> JSF Standard RenderKit Demo - Thank You Page</TITLE> </HEAD>
diff --git a/jsf-ri/systest/web/regexp/converter02.txt b/jsf-ri/systest/web/regexp/converter02.txt
new file mode 100644
index 0000000..83fd3f6
--- /dev/null
+++ b/jsf-ri/systest/web/regexp/converter02.txt
@@ -0,0 +1 @@
+(?s).*<html>\s*<head/>\s*<body>\s*<span\s*id="id1">\s*\$123\.45\s*</span>\s*</body>\s*</html>.*
diff --git a/jsf-ri/systest/web/regexp/converter06.txt b/jsf-ri/systest/web/regexp/converter06.txt
new file mode 100644
index 0000000..7ec1e6a
--- /dev/null
+++ b/jsf-ri/systest/web/regexp/converter06.txt
@@ -0,0 +1 @@
+(?s).*<form\s*id="form"\s*name="form"\s*method="post"\s*action=".*"\s*enctype="application/x-www-form-urlencoded">\s*<input\s*type="hidden"\s*name="form"\s*value="form"/>\s*<input\s*type="hidden"\s*name="javax.faces.ViewState"\s*id=".*"\s*value=".*"/>\s*<table\s*id="form:panelGrid">\s*<tbody>\s*<tr>\s*<td>\s*Number4:\s*</td>\s*<td>\s*<input\s*id="form:number4"\s*type="text"\s*name="form:number4"\s*value="aaa"\s*maxlength="20"\s*size="10"/>\s*</td>\s*<td/>\s*</tr>\s*<tr>\s*<td>\s*Number5: [...]
diff --git a/jsf-ri/systest/web/regexp/escape_test.txt b/jsf-ri/systest/web/regexp/escape_test.txt
new file mode 100644
index 0000000..4a9a049
--- /dev/null
+++ b/jsf-ri/systest/web/regexp/escape_test.txt
@@ -0,0 +1 @@
+(?s).*<html>\s*<head>\s*<title>\s*Test\s*of\s*outputText\s*Escaping\s*</title>\s*</head>\s*<body>\s*<h1>\s*Test\s*of\s*outputText\s*Escaping\s*</h1>\s*<p>\s*\[DEFAULT\]\s*This\s*text\s*<b>has\s*angle\s*brackets</b>.\s*The\s*angle\s*brackets\s*MUST\s*be\s*escaped.\s*</p>\s*<p>\s*\[FALSE\]\s*This\s*text\s*<b>\s*has\s*angle\s*brackets\s*</b>\s*.\s*The\s*angle\s*brackets\s*MUST\s*NOT\s*be\s*escaped.\s*</p>\s*<p>\s*\[TRUE\]\s*This\s*text\s*<b>has\s*angle\s*brackets</b> [...]
diff --git a/jsf-ri/systest/web/regexp/regression/AreaTextRowsAttrTest.txt b/jsf-ri/systest/web/regexp/regression/AreaTextRowsAttrTest.txt
new file mode 100644
index 0000000..b450360
--- /dev/null
+++ b/jsf-ri/systest/web/regexp/regression/AreaTextRowsAttrTest.txt
@@ -0,0 +1 @@
+(?s).*<html>\s*<head>\s*<title>\s*Text\s*Area\s*Row\s*Attribute\s*Regression\s*Test\s*</title>\s*</head>\s*<body>\s*<textarea\s*name=".*"\s*rows="30">\s*</textarea>\s*</body>\s*</html>.*
diff --git a/jsf-ri/systest/web/regexp/regression/SelectOneManySizeAttrTest.txt b/jsf-ri/systest/web/regexp/regression/SelectOneManySizeAttrTest.txt
new file mode 100644
index 0000000..5d83e6b
--- /dev/null
+++ b/jsf-ri/systest/web/regexp/regression/SelectOneManySizeAttrTest.txt
@@ -0,0 +1 @@
+(?s).*<html>\s*<head>\s*<title>\s*Select.One,Many.ListBox\s*Size\s*Attribute\s*Test\s*</title>\s*</head>\s*<body>\s*<select\s*name=".*"\s*size="5">\s*<option\s*value="val1">\s*val1\s*</option>\s*</select>\s*<select\s*name=".*"\s*multiple="multiple"\s*size="5">\s*<option\s*value="val1">\s*val1\s*</option>\s*</select>\s*</body>\s*</html>.*
diff --git a/jsf-ri/systest/web/regexp/standard/autocomplete.txt b/jsf-ri/systest/web/regexp/standard/autocomplete.txt
new file mode 100644
index 0000000..c52a282
--- /dev/null
+++ b/jsf-ri/systest/web/regexp/standard/autocomplete.txt
@@ -0,0 +1 @@
+(?s).*<html>\s*<head>\s*<title>\s*autocomplete.jsp\s*</title>\s*</head>\s*<body>\s*autocomplete\s*on\s*.*\s*no\s*attribute\s*rendered:\s*<input\s*id="a"\s*type="password"\s*name="a"\s*value=""/>\s*autocomplete\s*off\s*.*\s*attribute\s*rendered:\s*<input\s*id="b"\s*type="password"\s*name="b"\s*autocomplete="off"\s*value=""/>\s*no\s*autocomplete\s*defined\s*.*\s*no\s*attribute\s*rendered:\s*<input\s*id="c"\s*type="password"\s*name="c"\s*value=""/>\s*autocomplete\s*on\s*.*\s*no\s*attribute\ [...]
diff --git a/jsf-ri/systest/web/regexp/standard/component01.txt b/jsf-ri/systest/web/regexp/standard/component01.txt
new file mode 100644
index 0000000..b058377
--- /dev/null
+++ b/jsf-ri/systest/web/regexp/standard/component01.txt
@@ -0,0 +1 @@
+(?s).*<html>\s*<head>\s*<title>\s*component01.jsp\s*</title>\s*</head>\s*<body>\s*<input\s*id="username"\s*type="text"\s*name="username"\s*maxlength="32"\s*onkeypress="attrValue"\s*size="20"/>\s*</body>\s*</html>.*
diff --git a/jsf-ri/systest/web/regexp/standard/dtablecolumnclasses.txt b/jsf-ri/systest/web/regexp/standard/dtablecolumnclasses.txt
new file mode 100644
index 0000000..c917c4b
--- /dev/null
+++ b/jsf-ri/systest/web/regexp/standard/dtablecolumnclasses.txt
@@ -0,0 +1 @@
+(?s).*<html>\s*<head>\s*<title>\s*dtablecolumnclasses.jsp\s*</title>\s*<style\s*type="text/css">\s*\.b1.*\.b2.*\.b3.*\.b4.*\.b5.*.b6.*\.b7.*</style>\s*</head>\s*<body>\s*<table>\s*<tbody>\s*<tr>\s*<td\s*class="b1">\s*c1\s*</td>\s*<td\s*class="b2">\s*c2\s*</td>\s*<td>\s*c3\s*</td>\s*<td>\s*c4\s*</td>\s*<td>\s*c5\s*</td>\s*<td>\s*c6\s*</td>\s*</tr>\s*<tr>\s*<td\s*class="b1">\s*c1_1\s*</td>\s*<td\s*class="b2">\s*c2_1\s*</td>\s*<td>\s*c3_1\s*</td>\s*<td>\s*c4_1\s*</td>\s*<td>\s*c5_1\s*</td>\ [...]
diff --git a/jsf-ri/systest/web/regexp/standard/messages01.txt b/jsf-ri/systest/web/regexp/standard/messages01.txt
new file mode 100644
index 0000000..dddfbae
--- /dev/null
+++ b/jsf-ri/systest/web/regexp/standard/messages01.txt
@@ -0,0 +1 @@
+(?s).*<head>\s*<title>\s*messages01.jsp\s*</title>\s*<style\s*type="text/css"\s*media="screen">.*\.errors.*</style>\s*</head>\s*<body>\s*<ul\s*class="errors">\s*<li>\s*\{0\}:\s*Validation\s*Error:\s*Value\s*is\s*required.\s*</li>\s*</ul>\s*</body>.*
diff --git a/jsf-ri/systest/web/regexp/standard/messages02.txt b/jsf-ri/systest/web/regexp/standard/messages02.txt
new file mode 100644
index 0000000..90e41c1
--- /dev/null
+++ b/jsf-ri/systest/web/regexp/standard/messages02.txt
@@ -0,0 +1 @@
+(?s).*<head>\s*<style\s*type="text/css"\s*media="screen">.*\.errors.*</style>\s*</head>\s*<body>\s*<table>\s*<tbody>\s*<tr>\s*<td>\s*<ul\s*dir="LTR"\s*style="left:\s*48px;\s*top:\s*100px;\s*position:\s*absolute">\s*<li\s*style="color:\s*yellow">\s*<span\s*title="Informational\s*Detail">\s*Information\s*Summary\s*Informational\s*Detail\s*</span>\s*</li>\s*<li>\s*<span\s*title="Warning\s*Detail">\s*Warning\s*Summary\s*Warning\s*Detail\s*</span>\s*</li>\s*<li\s*style="color:\s*red">\s*<span [...]
diff --git a/jsf-ri/systest/web/regexp/standard/pgridcolumnclasses.txt b/jsf-ri/systest/web/regexp/standard/pgridcolumnclasses.txt
new file mode 100644
index 0000000..d7d38bf
--- /dev/null
+++ b/jsf-ri/systest/web/regexp/standard/pgridcolumnclasses.txt
@@ -0,0 +1 @@
+(?s).*<html>\s*<head>\s*<title>\s*pgridcolumnclasses.jsp\s*</title>\s*<style\s*type="text/css">\s*\.b1.*\s*\.b2.*\s*\.b3.*\s*\.b4.*\s*\.b5.*\s*\.b6.*\s*\.b7.*\s*</style>\s*</head>\s*<body>\s*<table>\s*<tbody>\s*<tr>\s*<td\s*class="b1">\s*c1\s*</td>\s*<td\s*class="b2">\s*c2\s*</td>\s*<td>\s*c3\s*</td>\s*<td>\s*c4\s*</td>\s*<td>\s*c5\s*</td>\s*<td>\s*c6\s*</td>\s*</tr>\s*<tr>\s*<td\s*class="b1">\s*c1_1\s*</td>\s*<td\s*class="b2">\s*c2_1\s*</td>\s*<td>\s*c3_1\s*</td>\s*<td>\s*c4_1\s*</td>\s [...]
diff --git a/jsf-ri/systest/web/regexp/standard/selectmany02.txt b/jsf-ri/systest/web/regexp/standard/selectmany02.txt
new file mode 100644
index 0000000..942e402
--- /dev/null
+++ b/jsf-ri/systest/web/regexp/standard/selectmany02.txt
@@ -0,0 +1 @@
+(?s).*<table\s*class="one">\s*<tbody>\s*<tr>\s*<td>\s*<input\s*name=".*"\s*id=".*"\s*value="1"\s*type="checkbox"\s*checked="checked"/>\s*<label\s*for=".*"\s*class="">\s*Open\s*</label>\s*</td>\s*<td>\s*<input\s*name=".*"\s*id=".*"\s*value="2"\s*type="checkbox"\s*checked="checked"/>\s*<label\s*for=".*"\s*class="">\s*Submitted\s*</label>\s*</td>\s*<td>\s*<input\s*name=".*"\s*id=".*"\s*value="3"\s*type="checkbox"/>\s*<label\s*for=".*"\s*class="">\s*Accepted\s*</label>\s*</td>\s*<td>\s*<inpu [...]
diff --git a/jsf-ri/systest/web/regexp/verbatim_test.txt b/jsf-ri/systest/web/regexp/verbatim_test.txt
new file mode 100644
index 0000000..5dc2a69
--- /dev/null
+++ b/jsf-ri/systest/web/regexp/verbatim_test.txt
@@ -0,0 +1 @@
+(?s).*\s*<html>\s*<head>\s*<title>\s*Test\s*of\s*the\s*Verbatim\s*Tag\s*</title>\s*</head>\s*<body>\s*<h1>\s*Test\s*of\s*the\s*Verbatim\s*Tag\s*</h1>\s*<p>\s*\[DEFAULT\]\s*This\s*text\s*<b>\s*has\s*angle\s*brackets\s*</b>\s*.\s*The\s*angle\s*brackets\s*MUST\s*NOT\s*be\s*escaped.\s*</p>\s*<p>\s*\[FALSE\]\s*This\s*text\s*<b>\s*has\s*angle\s*brackets\s*</b>\s*.\s*The\s*angle\s*brackets\s*MUST\s*NOT\s*be\s*escaped.\s*</p>\s*<p>\s*\[TRUE\]\s*This\s*text\s*<b>has\s*angle\s*brackets</b [...]
diff --git a/jsf-ri/systest/web/regression/AreaTextRowsAttrTest.jsp b/jsf-ri/systest/web/regression/AreaTextRowsAttrTest.jsp
index 5b3617a..e734ee3 100644
--- a/jsf-ri/systest/web/regression/AreaTextRowsAttrTest.jsp
+++ b/jsf-ri/systest/web/regression/AreaTextRowsAttrTest.jsp
@@ -1,38 +1,45 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
+
 <%@ page contentType="text/html" language="java" %>
 
 <%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
@@ -54,4 +61,4 @@
             <h:inputTextarea rows="30" />
         </f:view>
     </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/jsf-ri/systest/web/regression/InjectUserDefJS.jsp b/jsf-ri/systest/web/regression/InjectUserDefJS.jsp
index afac1a5..b9abc03 100644
--- a/jsf-ri/systest/web/regression/InjectUserDefJS.jsp
+++ b/jsf-ri/systest/web/regression/InjectUserDefJS.jsp
@@ -1,38 +1,45 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
+
 <%@ page contentType="text/html" language="java" %>
 
 <%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
@@ -57,4 +64,4 @@
             </h:form>
         </f:view>
     </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/jsf-ri/systest/web/regression/SelectOneManySizeAttrTest.jsp b/jsf-ri/systest/web/regression/SelectOneManySizeAttrTest.jsp
index b6766a8..2fa20b9 100644
--- a/jsf-ri/systest/web/regression/SelectOneManySizeAttrTest.jsp
+++ b/jsf-ri/systest/web/regression/SelectOneManySizeAttrTest.jsp
@@ -1,38 +1,45 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
+
 <%@ page contentType="text/html" language="java" %>
 
 <%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
@@ -58,4 +65,4 @@
             </h:selectManyListbox>          
         </f:view>
     </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/jsf-ri/systest/web/regression/uninstallListeners.xhtml b/jsf-ri/systest/web/regression/uninstallListeners.xhtml
index 93c0ff5..5820595 100644
--- a/jsf-ri/systest/web/regression/uninstallListeners.xhtml
+++ b/jsf-ri/systest/web/regression/uninstallListeners.xhtml
@@ -1,38 +1,42 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
 
diff --git a/jsf-ri/systest/web/regression/verifyBuildBeforeRestore.xhtml b/jsf-ri/systest/web/regression/verifyBuildBeforeRestore.xhtml
index 8e23c56..fb3a35a 100644
--- a/jsf-ri/systest/web/regression/verifyBuildBeforeRestore.xhtml
+++ b/jsf-ri/systest/web/regression/verifyBuildBeforeRestore.xhtml
@@ -1,38 +1,42 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
 
diff --git a/jsf-ri/systest/web/render/Mojarra932UsingPage.xhtml b/jsf-ri/systest/web/render/Mojarra932UsingPage.xhtml
new file mode 100644
index 0000000..e3d86fe
--- /dev/null
+++ b/jsf-ri/systest/web/render/Mojarra932UsingPage.xhtml
@@ -0,0 +1,69 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+        PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+<h:head>
+    <title>Test select* with noselection</title>
+</h:head>
+<h:body>
+    <h:form prependId="false">
+
+
+       <h:selectOneMenu id="selectOneMenu" required="true" requiredMessage="REQUIRED" value="#{mojarra932Bean.selectedHobbit}">
+
+         <f:selectItems value="#{mojarra932Bean.ctorHobbits}"/>
+         <f:selectItem itemLabel="-- Select --" itemValue="" />
+
+       </h:selectOneMenu>
+
+       <h:commandButton value="submit" id="button" />
+
+       <p> messages: <h:messages /> </p>
+
+    </h:form>
+</h:body>
+</html>
diff --git a/jsf-ri/systest/web/render/commandButtonButton.xhtml b/jsf-ri/systest/web/render/commandButtonButton.xhtml
index f868a7c..e04f2e9 100644
--- a/jsf-ri/systest/web/render/commandButtonButton.xhtml
+++ b/jsf-ri/systest/web/render/commandButtonButton.xhtml
@@ -1,40 +1,45 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
- Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
 
- Contributor(s):
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html
         PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
@@ -67,4 +72,4 @@
     <h:outputText id="outside" value="#{ajaxrequest.count}"/>
 
 </h:body>
-</html>
\ No newline at end of file
+</html>
diff --git a/jsf-ri/systest/web/render/messageRender.xhtml b/jsf-ri/systest/web/render/messageRender.xhtml
index ea5146e..55bdab4 100644
--- a/jsf-ri/systest/web/render/messageRender.xhtml
+++ b/jsf-ri/systest/web/render/messageRender.xhtml
@@ -1,40 +1,45 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
- Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
 
- Contributor(s):
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html
         PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
@@ -101,4 +106,4 @@
 
 
 </h:body>
-</html>
\ No newline at end of file
+</html>
diff --git a/jsf-ri/systest/web/render/outputLinkSpaces.jsp b/jsf-ri/systest/web/render/outputLinkSpaces.jsp
new file mode 100644
index 0000000..4dde6bd
--- /dev/null
+++ b/jsf-ri/systest/web/render/outputLinkSpaces.jsp
@@ -0,0 +1,54 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<%--
+    Added for issue 212.  
+    Ensure transient components do not cause issues
+    with state restoration (verbatim is treated as transient)
+--%>
+<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
+<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+<f:view>
+    <h:form prependId="false" id="form">
+        <h:outputLink id="link" value="text before query string?text after=query string">link text</h:outputLink>
+    </h:form>
+</f:view>
diff --git a/jsf-ri/systest/web/render/outputScriptQuery.xhtml b/jsf-ri/systest/web/render/outputScriptQuery.xhtml
index eefeb27..b478ba9 100644
--- a/jsf-ri/systest/web/render/outputScriptQuery.xhtml
+++ b/jsf-ri/systest/web/render/outputScriptQuery.xhtml
@@ -1,40 +1,45 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:ui="http://java.sun.com/jsf/facelets"
diff --git a/jsf-ri/systest/web/render/outputScriptStyleNested.xhtml b/jsf-ri/systest/web/render/outputScriptStyleNested.xhtml
index 6ced3be..f460adb 100644
--- a/jsf-ri/systest/web/render/outputScriptStyleNested.xhtml
+++ b/jsf-ri/systest/web/render/outputScriptStyleNested.xhtml
@@ -1,40 +1,45 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html
         PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
diff --git a/jsf-ri/systest/web/render/outputSheetMedia.xhtml b/jsf-ri/systest/web/render/outputSheetMedia.xhtml
new file mode 100644
index 0000000..2c5832b
--- /dev/null
+++ b/jsf-ri/systest/web/render/outputSheetMedia.xhtml
@@ -0,0 +1,14 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+<h:head>
+    <title>Script QueryString Test</title>
+</h:head>
+<h:body bgcolor="white">
+    <h:form id="form">
+        <h:outputStylesheet name="case9.css" media="print"/>
+    </h:form>
+</h:body>
+</html>
diff --git a/jsf-ri/systest/web/render/selectStarNoSelection.jspx b/jsf-ri/systest/web/render/selectStarNoSelection.jspx
index cded0b1..e4c77c0 100644
--- a/jsf-ri/systest/web/render/selectStarNoSelection.jspx
+++ b/jsf-ri/systest/web/render/selectStarNoSelection.jspx
@@ -1,38 +1,4 @@
-<!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
--->
+
 
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:jsp="http://java.sun.com/JSP/Page"
diff --git a/jsf-ri/systest/web/render/selectStarNoSelection.xhtml b/jsf-ri/systest/web/render/selectStarNoSelection.xhtml
index 1ddf498..3e0173a 100644
--- a/jsf-ri/systest/web/render/selectStarNoSelection.xhtml
+++ b/jsf-ri/systest/web/render/selectStarNoSelection.xhtml
@@ -1,40 +1,45 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html
         PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
@@ -67,7 +72,7 @@
 
 <p>
 
-       <h:selectOneMenu id="selectOneMenu" required="true">
+       <h:selectOneMenu id="selectOneMenu" required="true" requiredMessage="REQUIRED" value="#{test1.stringProperty}">
 
          <f:selectItem noSelectionOption="true" itemLabel="No selection" itemValue="noSelection"/>
          <f:selectItem itemLabel="Apple" itemValue="Apple"/>
diff --git a/jsf-ri/systest/web/render/selectStarSelectionHideNoSelection.xhtml b/jsf-ri/systest/web/render/selectStarSelectionHideNoSelection.xhtml
index aec879d..e19a606 100644
--- a/jsf-ri/systest/web/render/selectStarSelectionHideNoSelection.xhtml
+++ b/jsf-ri/systest/web/render/selectStarSelectionHideNoSelection.xhtml
@@ -1,40 +1,45 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html
         PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
diff --git a/jsf-ri/systest/web/renderkit-default-clear.jsp b/jsf-ri/systest/web/renderkit-default-clear.jsp
index 44f37ce..f267eaa 100644
--- a/jsf-ri/systest/web/renderkit-default-clear.jsp
+++ b/jsf-ri/systest/web/renderkit-default-clear.jsp
@@ -1,37 +1,43 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
 <%@ page contentType="text/html"
diff --git a/jsf-ri/systest/web/renderkit-default.jsp b/jsf-ri/systest/web/renderkit-default.jsp
index e78fa4b..36975ce 100644
--- a/jsf-ri/systest/web/renderkit-default.jsp
+++ b/jsf-ri/systest/web/renderkit-default.jsp
@@ -1,37 +1,43 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
 <%@ page contentType="text/html"
diff --git a/jsf-ri/systest/web/renderkit01.jsp b/jsf-ri/systest/web/renderkit01.jsp
index df488d2..1acc7a0 100644
--- a/jsf-ri/systest/web/renderkit01.jsp
+++ b/jsf-ri/systest/web/renderkit01.jsp
@@ -1,37 +1,43 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
 <%@ page contentType="text/html"
diff --git a/jsf-ri/systest/web/renderkit02.jsp b/jsf-ri/systest/web/renderkit02.jsp
index 815f7ab..9922e50 100644
--- a/jsf-ri/systest/web/renderkit02.jsp
+++ b/jsf-ri/systest/web/renderkit02.jsp
@@ -1,37 +1,43 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
 <%@ page contentType="text/html"
diff --git a/jsf-ri/systest/web/renderkit02A.jsp b/jsf-ri/systest/web/renderkit02A.jsp
index b9f0ff2..4a15e74 100644
--- a/jsf-ri/systest/web/renderkit02A.jsp
+++ b/jsf-ri/systest/web/renderkit02A.jsp
@@ -1,37 +1,43 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
 <HTML>
diff --git a/jsf-ri/systest/web/renderkit03.jsp b/jsf-ri/systest/web/renderkit03.jsp
deleted file mode 100644
index 4f57b20..0000000
--- a/jsf-ri/systest/web/renderkit03.jsp
+++ /dev/null
@@ -1,86 +0,0 @@
-<%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
---%>
-
-<%@ page contentType="text/html"
-%><%@ page import="javax.faces.FactoryFinder"
-%><%@ page import="javax.faces.context.FacesContext"
-%><%@ page import="javax.faces.context.FacesContextFactory"
-%><%@ page import="javax.faces.component.UIViewRoot"
-%><%@ page import="javax.faces.lifecycle.Lifecycle"
-%><%@ page import="javax.faces.render.RenderKitFactory"
-%><%@ page import="javax.faces.lifecycle.LifecycleFactory"
-%><%
-
-// This test demonstrates the request processing lifecycle of
-// a "non-faces" request --->  faces response
-// It uses a "custom" renderkit to show how a renderkit can be
-// set.
-//
-    // Create a Lifecycle
-    LifecycleFactory lFactory = (LifecycleFactory)
-        FactoryFinder.getFactory(FactoryFinder.LIFECYCLE_FACTORY);
-    Lifecycle lifecycle = lFactory.getLifecycle(LifecycleFactory.DEFAULT_LIFECYCLE);
-    if (lifecycle == null) {
-        out.println("/renderkit03.jsp FAILED - Could not create Lifecycle");
-        return;
-    }
-
-    // Create a FacesContext 
-    FacesContextFactory facesContextFactory = (FacesContextFactory)
-        FactoryFinder.getFactory(FactoryFinder.FACES_CONTEXT_FACTORY);
-    FacesContext facesContext = facesContextFactory.getFacesContext(
-        config.getServletContext(), request, response, lifecycle);
-    if (facesContext == null) {
-        out.println("/renderkit03.jsp FAILED - Could not create FacesContext");
-        return;
-    }
-
-    // Acquire a view
-    UIViewRoot view = facesContext.getApplication().getViewHandler().restoreView(facesContext, "/renderkit03A.jsp");
-    if ( view == null)  {
-        view = facesContext.getApplication().getViewHandler().createView(facesContext, "/renderkit03A.jsp");
-    }
-    // Set the RenderKitFactory.HTML_BASIC_RENDER_KIT renderkit Id
-    view.setRenderKitId("CUSTOM");
-    facesContext.setViewRoot(view);
-    facesContext.renderResponse();
-
-    lifecycle.execute(facesContext);
-    lifecycle.render(facesContext);
-
-    // All tests passed
-    out.println("/renderkit03.jsp PASSED");
-%>
diff --git a/jsf-ri/systest/web/renderkit03A.jsp b/jsf-ri/systest/web/renderkit03A.jsp
deleted file mode 100644
index 84cf421..0000000
--- a/jsf-ri/systest/web/renderkit03A.jsp
+++ /dev/null
@@ -1,46 +0,0 @@
-<%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
---%>
-
-<HTML>
-
-    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
-    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
-
-       <f:view>  
-          <h:outputText id="simplelabel" value="This IS A SIMPLE LABEL" /> 
-       </f:view>
-
-</HTML>
diff --git a/jsf-ri/systest/web/renderkit04.jsp b/jsf-ri/systest/web/renderkit04.jsp
index f7cb7ce..d59be1a 100644
--- a/jsf-ri/systest/web/renderkit04.jsp
+++ b/jsf-ri/systest/web/renderkit04.jsp
@@ -1,37 +1,43 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
 <HTML>
diff --git a/jsf-ri/systest/web/renderkit05.jsp b/jsf-ri/systest/web/renderkit05.jsp
index 42da6fd..a35e02c 100644
--- a/jsf-ri/systest/web/renderkit05.jsp
+++ b/jsf-ri/systest/web/renderkit05.jsp
@@ -1,37 +1,43 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
 <HTML>
diff --git a/jsf-ri/systest/web/renderkit06.jsp b/jsf-ri/systest/web/renderkit06.jsp
index 28190a2..a757b1e 100644
--- a/jsf-ri/systest/web/renderkit06.jsp
+++ b/jsf-ri/systest/web/renderkit06.jsp
@@ -1,37 +1,43 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
 <HTML>
diff --git a/jsf-ri/systest/web/replaceViewRoot.jsp b/jsf-ri/systest/web/replaceViewRoot.jsp
index c101c7c..74fee4b 100644
--- a/jsf-ri/systest/web/replaceViewRoot.jsp
+++ b/jsf-ri/systest/web/replaceViewRoot.jsp
@@ -1,37 +1,43 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
diff --git a/jsf-ri/systest/web/resourceBundle01.jsp b/jsf-ri/systest/web/resourceBundle01.jsp
index 44ada8b..1263577 100644
--- a/jsf-ri/systest/web/resourceBundle01.jsp
+++ b/jsf-ri/systest/web/resourceBundle01.jsp
@@ -1,37 +1,43 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
 Expression in raw JSP page is ${resourceBundle01.value1}.
diff --git a/jsf-ri/systest/web/resourceBundle02.jsp b/jsf-ri/systest/web/resourceBundle02.jsp
index b2d3ea5..7a3e14a 100644
--- a/jsf-ri/systest/web/resourceBundle02.jsp
+++ b/jsf-ri/systest/web/resourceBundle02.jsp
@@ -1,37 +1,43 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
 <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
diff --git a/jsf-ri/systest/web/resourceBundle03.jsp b/jsf-ri/systest/web/resourceBundle03.jsp
index 44d6a2c..e4b02f8 100644
--- a/jsf-ri/systest/web/resourceBundle03.jsp
+++ b/jsf-ri/systest/web/resourceBundle03.jsp
@@ -1,37 +1,43 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
 <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
diff --git a/jsf-ri/systest/web/resourceBundle04.jsp b/jsf-ri/systest/web/resourceBundle04.jsp
index e78b003..30a598a 100644
--- a/jsf-ri/systest/web/resourceBundle04.jsp
+++ b/jsf-ri/systest/web/resourceBundle04.jsp
@@ -1,37 +1,43 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
 <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
diff --git a/jsf-ri/systest/web/resourceBundle05.jsp b/jsf-ri/systest/web/resourceBundle05.jsp
new file mode 100644
index 0000000..b0b5034
--- /dev/null
+++ b/jsf-ri/systest/web/resourceBundle05.jsp
@@ -0,0 +1,56 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
+<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+
+<f:view>
+
+<p>Testing ResourceBundleELResolver for Faces getType.  Result:
+<h:outputText value="#{test1.resourceBundleType}" /></p>
+
+<p>Testing ResourceBundleELResolver for Faces getFeatureDescriptors.
+Result:</p>
+
+<h:outputText escape="false" value="#{test1.featureDescriptorCorrectness}" />
+
+</f:view>
diff --git a/jsf-ri/systest/web/resourceInjection01.jsp b/jsf-ri/systest/web/resourceInjection01.jsp
index 3199fc8..6188868 100644
--- a/jsf-ri/systest/web/resourceInjection01.jsp
+++ b/jsf-ri/systest/web/resourceInjection01.jsp
@@ -1,37 +1,43 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
diff --git a/jsf-ri/systest/web/resourcerelocation.xhtml b/jsf-ri/systest/web/resourcerelocation.xhtml
index b56ea26..270f912 100644
--- a/jsf-ri/systest/web/resourcerelocation.xhtml
+++ b/jsf-ri/systest/web/resourcerelocation.xhtml
@@ -1,39 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
+
 <!DOCTYPE html
       PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
@@ -53,4 +60,4 @@
         <h:outputStylesheet id="css2" name="simple.css" target="#{param.location}"/>
     </h:form>
 </h:body>
-</html>
\ No newline at end of file
+</html>
diff --git a/jsf-ri/systest/web/resourcerelocation2.xhtml b/jsf-ri/systest/web/resourcerelocation2.xhtml
index d5d430b..aaeb8cb 100644
--- a/jsf-ri/systest/web/resourcerelocation2.xhtml
+++ b/jsf-ri/systest/web/resourcerelocation2.xhtml
@@ -1,39 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
+
 <!DOCTYPE html
       PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
@@ -53,4 +60,4 @@
         <h:outputScript id="js2" name="simple.js" target="#{param.location}"/>
     </h:form>
 </h:body>
-</html>
\ No newline at end of file
+</html>
diff --git a/jsf-ri/systest/web/resourcerelocation3.xhtml b/jsf-ri/systest/web/resourcerelocation3.xhtml
index 9e64ea8..0d9e2d2 100644
--- a/jsf-ri/systest/web/resourcerelocation3.xhtml
+++ b/jsf-ri/systest/web/resourcerelocation3.xhtml
@@ -1,39 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
+
 <!DOCTYPE html
       PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
@@ -48,4 +55,4 @@
         <h:outputScript id="js" name="simple.js" target="#{param.location}"/>
     </h:form>
 </h:body>
-</html>
\ No newline at end of file
+</html>
diff --git a/jsf-ri/systest/web/resourcerelocation4.xhtml b/jsf-ri/systest/web/resourcerelocation4.xhtml
index f9f41b2..c368bea 100644
--- a/jsf-ri/systest/web/resourcerelocation4.xhtml
+++ b/jsf-ri/systest/web/resourcerelocation4.xhtml
@@ -1,39 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
+
 <!DOCTYPE html
       PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
@@ -48,4 +55,4 @@
         <h:outputStylesheet id="css" name="simple.css"/>
     </h:form>
 </h:body>
-</html>
\ No newline at end of file
+</html>
diff --git a/jsf-ri/systest/web/resources/ajax/echo1.js b/jsf-ri/systest/web/resources/ajax/echo1.js
index cab782d..9100d43 100644
--- a/jsf-ri/systest/web/resources/ajax/echo1.js
+++ b/jsf-ri/systest/web/resources/ajax/echo1.js
@@ -1,38 +1,43 @@
 /*
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
 
- Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
-*/
 // Javascript for ajaxEcho test
 
 function buttonpush(target, exec, element, event) {
diff --git a/jsf-ri/systest/web/resources/ajax/evalTestFile.xhtml b/jsf-ri/systest/web/resources/ajax/evalTestFile.xhtml
index 1f6263c..c37ca00 100644
--- a/jsf-ri/systest/web/resources/ajax/evalTestFile.xhtml
+++ b/jsf-ri/systest/web/resources/ajax/evalTestFile.xhtml
@@ -1,41 +1,46 @@
 <?xml version = "1.0" encoding = "UTF-8"?>
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:h="http://java.sun.com/jsf/html"
       xmlns:f="http://java.sun.com/jsf/core"
diff --git a/jsf-ri/systest/web/resources/ajax/evalTestInline.xhtml b/jsf-ri/systest/web/resources/ajax/evalTestInline.xhtml
index eb7035c..841c0d6 100644
--- a/jsf-ri/systest/web/resources/ajax/evalTestInline.xhtml
+++ b/jsf-ri/systest/web/resources/ajax/evalTestInline.xhtml
@@ -1,41 +1,46 @@
 <?xml version = "1.0" encoding = "UTF-8"?>
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
- Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
 
- Contributor(s):
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:h="http://java.sun.com/jsf/html"
       xmlns:f="http://java.sun.com/jsf/core"
diff --git a/jsf-ri/systest/web/resources/ajax/test.jsf.js b/jsf-ri/systest/web/resources/ajax/test.jsf.js
new file mode 100644
index 0000000..77a6c24
--- /dev/null
+++ b/jsf-ri/systest/web/resources/ajax/test.jsf.js
@@ -0,0 +1,2270 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 2011 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ *
+ * This file incorporates work covered by the following copyright and
+ * permission notices:
+ *
+ * Copyright 2004 The Apache Software Foundation
+ * Copyright 2004-2008 Emmanouil Batsis, mailto: mbatsis at users full stop sourceforge full stop net
+ *
+ * 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.
+ */
+
+/**
+ @project JSF JavaScript Library
+ @version 2.0
+ @description This is the standard implementation of the JSF JavaScript Library.
+ */
+
+/**
+ * Register with OpenAjax
+ */
+if (typeof OpenAjax !== "undefined" &&
+    typeof OpenAjax.hub.registerLibrary !== "undefined") {
+    OpenAjax.hub.registerLibrary("jsf", "www.sun.com", "2.0", null);
+}
+
+// Detect if this is already loaded, and if loaded, if it's a higher version
+if (!((jsf && jsf.specversion && jsf.specversion >= 20000 ) &&
+      (jsf.implversion && jsf.implversion >= 3))) {
+
+    /**
+     * The top level global namespace for JavaServer Faces functionality.
+     * @name jsf
+     * @namespace
+     */
+    var jsf = {};
+
+    /**
+     * The namespace for Ajax functionality.
+     * @name jsf.ajax
+     * @namespace
+     * @exec
+     */
+    jsf.ajax = function() {
+
+        var eventListeners = [];
+        var errorListeners = [];
+
+        /**
+         * Determine if the current browser is part of Microsoft's failed attempt at
+         * standards modification.
+         * @ignore
+         */
+        var isIE = function isIE() {
+            if (typeof isIECache !== "undefined") {
+                return isIECache;
+            }
+            isIECache =
+                   document.all && window.ActiveXObject &&
+                   navigator.userAgent.toLowerCase().indexOf("msie") > -1 &&
+                   navigator.userAgent.toLowerCase().indexOf("opera") == -1;
+            return isIECache;
+        };
+        var isIECache;
+
+        /**
+         * Determine if loading scripts into the page executes the script.
+         * This is instead of doing a complicated browser detection algorithm.  Some do, some don't.
+         * @returns {boolean} does including a script in the dom execute it?
+         * @ignore
+         */
+        var isAutoExec = function isAutoExec() {
+            try {
+                if (typeof isAutoExecCache !== "undefined") {
+                    return isAutoExecCache;
+                }
+                var autoExecTestString = "<script>var mojarra = mojarra || {};mojarra.autoExecTest = true;</script>";
+                var tempElement = document.createElement('span');
+                tempElement.innerHTML = autoExecTestString;
+                var body = document.getElementsByTagName('body')[0];
+                var tempNode = body.appendChild(tempElement);
+                if (mojarra && mojarra.autoExecTest) {
+                    isAutoExecCache = true;
+                    delete mojarra.autoExecTest;
+                } else {
+                    isAutoExecCache = false;
+                }
+                deleteNode(tempNode);
+                return isAutoExecCache;
+            } catch (ex) {
+                // OK, that didn't work, we'll have to make an assumption
+                if (typeof isAutoExecCache === "undefined") {
+                    isAutoExecCache = false;
+                }
+                return isAutoExecCache;
+            }
+        };
+        var isAutoExecCache;
+
+        /**
+         * @ignore
+         */
+        var getTransport = function getTransport() {
+            var methods = [
+                function() {
+                    return new XMLHttpRequest();
+                },
+                function() {
+                    return new ActiveXObject('Msxml2.XMLHTTP');
+                },
+                function() {
+                    return new ActiveXObject('Microsoft.XMLHTTP');
+                }
+            ];
+
+            var returnVal;
+            for (var i = 0, len = methods.length; i < len; i++) {
+                try {
+                    returnVal = methods[i]();
+                } catch(e) {
+                    continue;
+                }
+                return returnVal;
+            }
+            throw new Error('Could not create an XHR object.');
+        };
+
+        /**
+         * Find instance of passed String via getElementById
+         * @ignore
+         */
+        var $ = function $() {
+            var results = [], element;
+            for (var i = 0; i < arguments.length; i++) {
+                element = arguments[i];
+                if (typeof element == 'string') {
+                    element = document.getElementById(element);
+                }
+                results.push(element);
+            }
+            return results.length > 1 ? results : results[0];
+        };
+
+        /**
+         * Get the form element which encloses the supplied element.
+         * @param element - element to act against in search
+         * @returns form element representing enclosing form, or first form if none found.
+         * @ignore
+         */
+        var getForm = function getForm(element) {
+            if (element) {
+                var form = $(element);
+                while (form) {
+
+                    if (form.nodeName && (form.nodeName.toLowerCase() == 'form')) {
+                        return form;
+                    }
+                    if (form.form) {
+                        return form.form;
+                    }
+                    if (form.parentNode) {
+                        form = form.parentNode;
+                    } else {
+                        form = null;
+                    }
+                }
+                return document.forms[0];
+            }
+            return null;
+        };
+
+        /**
+         * Check if a value exists in an array
+         * @ignore
+         */
+        var isInArray = function isInArray(array, value) {
+            for (var i = 0; i < array.length; i++) {
+                if (array[i] === value) {
+                    return true;
+                }
+            }
+            return false;
+        };
+
+
+        /**
+         * Evaluate JavaScript code in a global context.
+         * @param src JavaScript code to evaluate
+         * @ignore
+         */
+        var globalEval = function globalEval(src) {
+            if (window.execScript) {
+                window.execScript(src);
+                return;
+            }
+            // We have to wrap the call in an anon function because of a firefox bug, where this is incorrectly set
+            // We need to explicitly call window.eval because of a Chrome peculiarity
+            var fn = function() {
+                window.eval.call(window,src);
+            };
+            fn();
+        };
+
+        /**
+         * Get all scripts from supplied string, return them as an array for later processing.
+         * @param str
+         * @returns {array} of script text
+         * @ignore
+         */
+        var stripScripts = function stripScripts(str) {
+            // Regex to find all scripts in a string
+            var findscripts = /<script[^>]*>([\S\s]*?)<\/script>/igm;
+            // Regex to find one script, to isolate it's content [2] and attributes [1]
+            var findscript = /<script([^>]*)>([\S\s]*?)<\/script>/im;
+            // Regex to remove leading cruft
+            var stripStart = /^\s*(<!--)*\s*(\/\/)*\s*(\/\*)*\s*(<!\[CDATA\[)*/;
+            // Regex to find src attribute
+            var findsrc = /src="([\S]*?)"/im;
+            var initialnodes = [];
+            var scripts = [];
+            initialnodes = str.match(findscripts);
+            while (!!initialnodes && initialnodes.length > 0) {
+                var scriptStr = [];
+                scriptStr = initialnodes.shift().match(findscript);
+                var src = [];
+                // check if src specified
+                src = scriptStr[1].match(findsrc);
+                var script;
+                if ( !!src && src[1]) {
+                    // if this is a file, load it
+                    var url = src[1];
+                    // if this is another copy of jsf.js, don't load it
+                    // it's never necessary, and can make debugging difficult
+                    if (/\/javax.faces.resource\/jsf.js\?ln=javax\.faces/.test(url)) {
+                        script = false;
+                    } else {
+                        script = loadScript(url);
+                    }
+                } else if (!!scriptStr && scriptStr[2]){
+                    // else get content of tag, without leading CDATA and such
+                    script = scriptStr[2].replace(stripStart,"");
+                } else {
+                    script = false;
+                }
+                if (!!script) {
+                    scripts.push(script);
+                }
+            }
+            return scripts;
+        };
+
+        /**
+         * Load a script via a url, use synchronous XHR request.  This is liable to be slow,
+         * but it's probably the only correct way.
+         * @param url the url to load
+         * @ignore
+         */
+        var loadScript = function loadScript(url) {
+            var xhr = getTransport();
+            if (xhr === null) {
+                return "";
+            }
+
+            xhr.open("GET", url, false);
+            xhr.setRequestHeader("Content-Type", "application/x-javascript");
+            xhr.send(null);
+
+            // PENDING graceful error handling
+            if (xhr.readyState == 4 && xhr.status == 200) {
+                    return xhr.responseText;
+            }
+
+            return "";
+        };
+
+        /**
+         * Run an array of scripts text
+         * @param scripts array of script nodes
+         * @ignore
+         */
+        var runScripts = function runScripts(scripts) {
+            if (!scripts || scripts.length === 0) {
+                return;
+            }
+
+            var head = document.getElementsByTagName('head')[0] || document.documentElement;
+            while (scripts.length) {
+                // create script node
+                var scriptNode = document.createElement('script');
+                scriptNode.type = 'text/javascript';
+                scriptNode.text = scripts.shift(); // add the code to the script node
+                head.appendChild(scriptNode); // add it to the page
+                head.removeChild(scriptNode); // then remove it
+            }
+        };
+
+        /**
+         * Replace DOM element with a new tagname and supplied innerHTML
+         * @param element element to replace
+         * @param tempTagName new tag name to replace with
+         * @param src string new content for element
+         * @ignore
+         */
+        var elementReplaceStr = function elementReplaceStr(element, tempTagName, src) {
+
+            var temp = document.createElement(tempTagName);
+            if (element.id) {
+                temp.id = element.id;
+            }
+
+            // Creating a head element isn't allowed in IE, and faulty in most browsers,
+            // so it is not allowed
+            if (element.nodeName.toLowerCase() === "head") {
+                throw new Error("Attempted to replace a head element - this is not allowed.");
+            } else {
+                var scripts = [];
+                if (isAutoExec()) {
+                    temp.innerHTML = src;
+                } else {
+                    // Get scripts from text
+                    scripts = stripScripts(src);
+                    // Remove scripts from text
+                    src = src.replace(/<script[^>]*>([\S\s]*?)<\/script>/igm,"");
+                    temp.innerHTML = src;
+                }
+            }
+
+            replaceNode(temp, element);            
+            runScripts(scripts);
+
+        };
+
+        /**
+         * Get a string with the concatenated values of all string nodes under the given node
+         * @param  oNode the given DOM node
+         * @param  deep boolean - whether to recursively scan the children nodes of the given node for text as well. Default is <code>false</code>
+         * @ignore
+         * Note:  This code originally from Sarissa: http://dev.abiss.gr/sarissa
+         * It has been modified to fit into the overall codebase
+         */
+        var getText = function getText(oNode, deep) {
+            var Node = {ELEMENT_NODE: 1, ATTRIBUTE_NODE: 2, TEXT_NODE: 3, CDATA_SECTION_NODE: 4,
+                ENTITY_REFERENCE_NODE: 5,  ENTITY_NODE: 6, PROCESSING_INSTRUCTION_NODE: 7,
+                COMMENT_NODE: 8, DOCUMENT_NODE: 9, DOCUMENT_TYPE_NODE: 10,
+                DOCUMENT_FRAGMENT_NODE: 11, NOTATION_NODE: 12};
+
+            var s = "";
+            var nodes = oNode.childNodes;
+            for (var i = 0; i < nodes.length; i++) {
+                var node = nodes[i];
+                var nodeType = node.nodeType;
+                if (nodeType == Node.TEXT_NODE || nodeType == Node.CDATA_SECTION_NODE) {
+                    s += node.data;
+                } else if (deep === true && (nodeType == Node.ELEMENT_NODE ||
+                                             nodeType == Node.DOCUMENT_NODE ||
+                                             nodeType == Node.DOCUMENT_FRAGMENT_NODE)) {
+                    s += getText(node, true);
+                }
+            }
+            return s;
+        };
+
+        var PARSED_OK = "Document contains no parsing errors";
+        var PARSED_EMPTY = "Document is empty";
+        var PARSED_UNKNOWN_ERROR = "Not well-formed or other error";
+        var getParseErrorText;
+        if (isIE()) {
+            /**
+             * Note: This code orginally from Sarissa: http://dev.abiss.gr/sarissa
+             * @ignore
+             */
+            getParseErrorText = function (oDoc) {
+                var parseErrorText = PARSED_OK;
+                if (oDoc && oDoc.parseError && oDoc.parseError.errorCode && oDoc.parseError.errorCode !== 0) {
+                    parseErrorText = "XML Parsing Error: " + oDoc.parseError.reason +
+                                     "\nLocation: " + oDoc.parseError.url +
+                                     "\nLine Number " + oDoc.parseError.line + ", Column " +
+                                     oDoc.parseError.linepos +
+                                     ":\n" + oDoc.parseError.srcText +
+                                     "\n";
+                    for (var i = 0; i < oDoc.parseError.linepos; i++) {
+                        parseErrorText += "-";
+                    }
+                    parseErrorText += "^\n";
+                }
+                else if (oDoc.documentElement === null) {
+                    parseErrorText = PARSED_EMPTY;
+                }
+                return parseErrorText;
+            };
+        } else { // (non-IE)
+
+            /**
+             * <p>Returns a human readable description of the parsing error. Useful
+             * for debugging. Tip: append the returned error string in a <pre>
+             * element if you want to render it.</p>
+             * @param  oDoc The target DOM document
+             * @returns {String} The parsing error description of the target Document in
+             *          human readable form (preformated text)
+             * @ignore
+             * Note:  This code orginally from Sarissa: http://dev.abiss.gr/sarissa
+             */
+            getParseErrorText = function (oDoc) {
+                var parseErrorText = PARSED_OK;
+                if ((!oDoc) || (!oDoc.documentElement)) {
+                    parseErrorText = PARSED_EMPTY;
+                } else if (oDoc.documentElement.tagName == "parsererror") {
+                    parseErrorText = oDoc.documentElement.firstChild.data;
+                    parseErrorText += "\n" + oDoc.documentElement.firstChild.nextSibling.firstChild.data;
+                } else if (oDoc.getElementsByTagName("parsererror").length > 0) {
+                    var parsererror = oDoc.getElementsByTagName("parsererror")[0];
+                    parseErrorText = getText(parsererror, true) + "\n";
+                } else if (oDoc.parseError && oDoc.parseError.errorCode !== 0) {
+                    parseErrorText = PARSED_UNKNOWN_ERROR;
+                }
+                return parseErrorText;
+            };
+        }
+
+        if ((typeof(document.importNode) == "undefined") && isIE()) {
+            try {
+                /**
+                 * Implementation of importNode for the context window document in IE.
+                 * If <code>oNode</code> is a TextNode, <code>bChildren</code> is ignored.
+                 * @param oNode the Node to import
+                 * @param bChildren whether to include the children of oNode
+                 * @returns the imported node for further use
+                 * @ignore
+                 * Note:  This code orginally from Sarissa: http://dev.abiss.gr/sarissa
+                 */
+                document.importNode = function(oNode, bChildren) {
+                    var tmp;
+                    if (oNode.nodeName == '#text') {
+                        return document.createTextNode(oNode.data);
+                    }
+                    else {
+                        if (oNode.nodeName == "tbody" || oNode.nodeName == "tr") {
+                            tmp = document.createElement("table");
+                        }
+                        else if (oNode.nodeName == "td") {
+                            tmp = document.createElement("tr");
+                        }
+                        else if (oNode.nodeName == "option") {
+                            tmp = document.createElement("select");
+                        }
+                        else {
+                            tmp = document.createElement("div");
+                        }
+                        if (bChildren) {
+                            tmp.innerHTML = oNode.xml ? oNode.xml : oNode.outerHTML;
+                        } else {
+                            tmp.innerHTML = oNode.xml ? oNode.cloneNode(false).xml : oNode.cloneNode(false).outerHTML;
+                        }
+                        return tmp.getElementsByTagName("*")[0];
+                    }
+                };
+            } catch(e) {
+            }
+        }
+        // Setup Node type constants for those browsers that don't have them (IE)
+        var Node = {ELEMENT_NODE: 1, ATTRIBUTE_NODE: 2, TEXT_NODE: 3, CDATA_SECTION_NODE: 4,
+            ENTITY_REFERENCE_NODE: 5,  ENTITY_NODE: 6, PROCESSING_INSTRUCTION_NODE: 7,
+            COMMENT_NODE: 8, DOCUMENT_NODE: 9, DOCUMENT_TYPE_NODE: 10,
+            DOCUMENT_FRAGMENT_NODE: 11, NOTATION_NODE: 12};
+
+        // PENDING - add support for removing handlers added via DOM 2 methods
+        /**
+         * Delete all events attached to a node
+         * @param node
+         * @ignore
+         */
+        var clearEvents = function clearEvents(node) {
+            if (!node) {
+                return;
+            }
+
+            // don't do anything for text and comment nodes - unnecessary
+            if (node.nodeType == Node.TEXT_NODE || node.nodeType == Node.COMMENT_NODE) {
+                return;
+            }
+
+            var events = ['abort', 'blur', 'change', 'error', 'focus', 'load', 'reset', 'resize', 'scroll', 'select', 'submit', 'unload',
+            'keydown', 'keypress', 'keyup', 'click', 'mousedown', 'mousemove', 'mouseout', 'mouseover', 'mouseup', 'dblclick' ];
+            try {
+                for (var e in events) {
+                    if (events.hasOwnProperty(e)) {
+                        node[e] = null;
+                    }
+                }
+            } catch (ex) {
+                // it's OK if it fails, at least we tried
+            }
+        };
+
+        /**
+         * Deletes node
+         * @param node
+         * @ignore
+         */
+        var deleteNode = function deleteNode(node) {
+            if (!node) {
+                return;
+            }
+            if (!node.parentNode) {
+                // if there's no parent, there's nothing to do
+                return;
+            }
+            if (!isIE()) {
+                // nothing special required
+                node.parentNode.removeChild(node);
+                return;
+            }
+            // The rest of this code is specialcasing for IE
+            if (node.nodeName.toLowerCase() === "body") {
+                // special case for removing body under IE.
+                deleteChildren(node);
+                try {
+                    node.outerHTML = '';
+                } catch (ex) {
+                    // fails under some circumstances, but not in RI
+                    // supplied responses.  If we've gotten here, it's
+                    // fairly safe to leave a lingering body tag rather than
+                    // fail outright
+                }
+                return;
+            }
+            var temp = node.ownerDocument.createElement('div');
+            var parent = node.parentNode;
+            temp.appendChild(parent.removeChild(node));
+            // Now clean up the temporary element
+            try {
+                temp.outerHTML = ''; //prevent leak in IE
+            } catch (ex) {
+                // at least we tried.  Fails in some circumstances,
+                // but not in RI supplied responses.  Better to leave a lingering
+                // temporary div than to fail outright.
+            }
+        };
+
+        /**
+         * Deletes all children of a node
+         * @param node
+         * @ignore
+         */
+        var deleteChildren = function deleteChildren(node) {
+            if (!node) {
+                return;
+            }
+            for (var x = node.childNodes.length - 1; x >= 0; x--) { //delete all of node's children
+                var childNode = node.childNodes[x];
+                deleteNode(childNode);
+            }
+        };
+
+        /**
+         * <p> Copies the childNodes of nodeFrom to nodeTo</p>
+         *
+         * @param  nodeFrom the Node to copy the childNodes from
+         * @param  nodeTo the Node to copy the childNodes to
+         * @ignore
+         * Note:  This code originally from Sarissa:  http://dev.abiss.gr/sarissa
+         * It has been modified to fit into the overall codebase
+         */
+        var copyChildNodes = function copyChildNodes(nodeFrom, nodeTo) {
+
+            if ((!nodeFrom) || (!nodeTo)) {
+                throw "Both source and destination nodes must be provided";
+            }
+
+            deleteChildren(nodeTo);
+            var nodes = nodeFrom.childNodes;
+            // if within the same doc, just move, else copy and delete
+            if (nodeFrom.ownerDocument == nodeTo.ownerDocument) {
+                while (nodeFrom.firstChild) {
+                    nodeTo.appendChild(nodeFrom.firstChild);
+                }
+            } else {
+                var ownerDoc = nodeTo.nodeType == Node.DOCUMENT_NODE ? nodeTo : nodeTo.ownerDocument;
+                var i;
+                if (typeof(ownerDoc.importNode) != "undefined") {
+                    for (i = 0; i < nodes.length; i++) {
+                        nodeTo.appendChild(ownerDoc.importNode(nodes[i], true));
+                    }
+                } else {
+                    for (i = 0; i < nodes.length; i++) {
+                        nodeTo.appendChild(nodes[i].cloneNode(true));
+                    }
+                }
+            }
+        };
+
+
+        /**
+         * Replace one node with another.  Necessary for handling IE memory leak.
+         * @param node
+         * @param newNode
+         * @ignore
+         */
+        var replaceNode = function replaceNode(newNode, node) {
+               if(isIE()){
+                    node.parentNode.insertBefore(newNode, node);
+                    deleteNode(node);
+               } else {
+                    node.parentNode.replaceChild(newNode, node);
+               }
+        };
+
+
+        /**
+         * copy all attributes from one element to another - except id
+         * @param target element to copy attributes to
+         * @param source element to copy attributes from
+         * @ignore
+         */
+        var cloneAttributes = function cloneAttributes(target, source) {
+
+            // enumerate core element attributes - without 'dir' as special case
+            var coreElementAttributes = ['className', 'title', 'lang', 'xml:lang'];
+
+            // Enumerate additional input element attributes
+            var inputElementAttributes =
+                    [   'name', 'value', 'checked', 'disabled', 'readOnly',
+                        'size', 'maxLength', 'src', 'alt', 'useMap', 'isMap',
+                        'tabIndex', 'accessKey', 'accept', 'type'
+                    ];
+
+            // Enumerate all the names of the event listeners
+            var listenerNames =
+                    [ 'onclick', 'ondblclick', 'onmousedown', 'onmousemove', 'onmouseout',
+                        'onmouseover', 'onmouseup', 'onkeydown', 'onkeypress', 'onkeyup',
+                        'onhelp', 'onblur', 'onfocus', 'onchange', 'onload', 'onunload', 'onabort',
+                        'onreset', 'onselect', 'onsubmit'
+                    ];
+
+            var iIndex, iLength; // for loop variables
+            var attributeName; // name of the attribute to set
+            var newValue, oldValue; // attribute values in each element
+
+            // First, copy over core attributes
+            for (iIndex = 0,iLength = coreElementAttributes.length; iIndex < iLength; iIndex++) {
+                attributeName = coreElementAttributes[iIndex];
+                newValue = source[attributeName];
+                oldValue = target[attributeName];
+                if (oldValue != newValue) {
+                    target[attributeName] = newValue;
+                }
+            }
+
+            // Next, if it's an input, copy those over
+            if (target.nodeName.toLowerCase() === 'input') {
+                for (iIndex = 0,iLength = inputElementAttributes.length; iIndex < iLength; iIndex++) {
+                    attributeName = inputElementAttributes[iIndex];
+                    newValue = source[attributeName];
+                    oldValue = target[attributeName];
+                    if (oldValue != newValue) {
+                        target[attributeName] = newValue;
+                    }
+                }
+            }
+            //'style' attribute special case
+            var newStyle = source.getAttribute('style');
+            var oldStyle = target.getAttribute('style');
+            if (newStyle != oldStyle) {
+                if (isIE()) {
+                    target.style.setAttribute('cssText', newStyle, 0);
+                } else {
+                    target.setAttribute('style',newStyle);
+                }
+            }
+            for (var lIndex = 0, lLength = listenerNames.length; lIndex < lLength; lIndex++) {
+                var name = listenerNames[lIndex];
+                target[name] = source[name] ? source[name] : null;
+                if (source[name]) {
+                    source[name] = null;
+                }
+            }
+            // Special case for 'dir' attribute
+            if (!isIE() && source.dir != target.dir) {
+                target.dir = source.dir ? source.dir : null;
+            }
+        };
+
+        /**
+         * Replace an element from one document into another
+         * @param newElement new element to put in document
+         * @param origElement original element to replace
+         * @ignore
+         */
+        var elementReplace = function elementReplace(newElement, origElement) {
+            copyChildNodes(newElement, origElement);
+            // sadly, we have to reparse all over again
+            // to reregister the event handlers and styles
+            // PENDING do some performance tests on large pages
+            origElement.innerHTML = origElement.innerHTML;
+
+            try {
+                cloneAttributes(origElement, newElement);
+            } catch (ex) {
+                // if in dev mode, report an error, else try to limp onward
+                if (jsf.getProjectStage() == "Development") {
+                    throw new Error("Error updating attributes");
+                }
+            }
+            deleteNode(newElement);
+
+        };
+
+        /**
+         * Create a new document, then select the body element within it
+         * @param docStr Stringified version of document to create
+         * @return element the body element
+         * @ignore
+         */
+        var getBodyElement = function getBodyElement(docStr) {
+
+            var doc;  // intermediate document we'll create
+            var body; // Body element to return
+
+            if (typeof DOMParser !== "undefined") {  // FF, S, Chrome
+                doc = (new DOMParser()).parseFromString(docStr, "text/xml");
+            } else if (typeof ActiveXObject !== "undefined") { // IE
+                doc = new ActiveXObject("MSXML2.DOMDocument");
+                doc.loadXML(docStr);
+            } else {
+                throw new Error("You don't seem to be running a supported browser");
+            }
+
+            if (getParseErrorText(doc) !== PARSED_OK) {
+                throw new Error(getParseErrorText(doc));
+            }
+
+            body = doc.getElementsByTagName("body")[0];
+
+            if (!body) {
+                throw new Error("Can't find body tag in returned document.");
+            }
+
+            return body;
+        };
+
+        /**
+         * Do update.
+         * @param element element to update
+         * @param context context of request
+         * @ignore
+         */
+        var doUpdate = function doUpdate(element, context) {
+            var id, content, markup, state;
+            var stateForm;
+            var scripts = []; // temp holding value for array of script nodes
+
+            id = element.getAttribute('id');
+            if (id === "javax.faces.ViewState") {
+
+                state = element.firstChild;
+
+                // Now set the view state from the server into the DOM
+                // but only for the form that submitted the request.
+
+                stateForm = document.getElementById(context.formid);
+                if (!stateForm || !stateForm.elements) {
+                    // if the form went away for some reason, or it lacks elements 
+                    // we're going to just return silently.
+                    return;
+                }
+                var field = stateForm.elements["javax.faces.ViewState"];
+                if (typeof field == 'undefined') {
+                    field = document.createElement("input");
+                    field.type = "hidden";
+                    field.name = "javax.faces.ViewState";
+                    stateForm.appendChild(field);
+                }
+                field.value = state.nodeValue;
+
+                // Now set the view state from the server into the DOM
+                // for any form that is a render target.
+
+                if (typeof context.render !== 'undefined' && context.render !== null) {
+                    var temp = context.render.split(' ');
+                    for (var i = 0; i < temp.length; i++) {
+                        if (temp.hasOwnProperty(i)) {
+                            // See if the element is a form and
+                            // the form is not the one that caused the submission..
+                            var f = document.forms[temp[i]];
+                            if (typeof f !== 'undefined' && f !== null && f.id !== context.formid) {
+                                field = f.elements["javax.faces.ViewState"];
+                                if (typeof field === 'undefined') {
+                                    field = document.createElement("input");
+                                    field.type = "hidden";
+                                    field.name = "javax.faces.ViewState";
+                                    f.appendChild(field);
+                                }
+                                field.value = state.nodeValue;
+                            }
+                        }
+                    }
+                }
+                return;
+            }
+
+            // join the CDATA sections in the markup
+            markup = '';
+            for (var j = 0; j < element.childNodes.length; j++) {
+                content = element.childNodes[j];
+                markup += content.nodeValue;
+            }
+
+            var src = markup;
+
+            // If our special render all markup is present..
+            if (id === "javax.faces.ViewRoot" || id === "javax.faces.ViewBody") {
+                var bodyStartEx = new RegExp("< *body[^>]*>", "gi");
+                var bodyEndEx = new RegExp("< */ *body[^>]*>", "gi");
+                var newsrc;
+
+                var docBody = document.getElementsByTagName("body")[0];
+                var bodyStart = bodyStartEx.exec(src);
+
+                if (bodyStart !== null) { // replace body tag
+                    // First, try with XML manipulation
+                    try {
+                        // Get scripts from text
+                        scripts = stripScripts(src);
+                        // Remove scripts from text
+                        newsrc = src.replace(/<script[^>]*>([\S\s]*?)<\/script>/igm, "");
+                        elementReplace(getBodyElement(newsrc), docBody);
+                        runScripts(scripts);
+                    } catch (e) {
+                        // OK, replacing the body didn't work with XML - fall back to quirks mode insert
+                        var srcBody, bodyEnd;
+                        // if src contains </body>
+                        bodyEnd = bodyEndEx.exec(src);
+                        if (bodyEnd !== null) {
+                            srcBody = src.substring(bodyStartEx.lastIndex,
+                                    bodyEnd.index);
+                        } else { // can't find the </body> tag, punt
+                            srcBody = src.substring(bodyStartEx.lastIndex);
+                        }
+                        // replace body contents with innerHTML - note, script handling happens within function
+                        elementReplaceStr(docBody, "body", srcBody);
+
+                    }
+
+                } else {  // replace body contents with innerHTML - note, script handling happens within function
+                    elementReplaceStr(docBody, "body", src);
+                }
+            } else if (id === "javax.faces.ViewHead") {
+                throw new Error("javax.faces.ViewHead not supported - browsers cannot reliably replace the head's contents");
+            } else {
+                var d = $(id);
+                if (!d) {
+                    throw new Error("During update: " + id + " not found");
+                }
+                var parent = d.parentNode;
+                // Trim space padding before assigning to innerHTML
+                var html = src.replace(/^\s+/g, '').replace(/\s+$/g, '');
+                var parserElement = document.createElement('div');
+                var tag = d.nodeName.toLowerCase();
+                var tableElements = ['td', 'th', 'tr', 'tbody', 'thead', 'tfoot'];
+                var isInTable = false;
+                for (var tei = 0, tel = tableElements.length; tei < tel; tei++) {
+                    if (tableElements[tei] == tag) {
+                        isInTable = true;
+                        break;
+                    }
+                }
+                if (isInTable) {
+
+                    if (isAutoExec()) {
+                        // Create html
+                        parserElement.innerHTML = '<table>' + html + '</table>';
+                    } else {
+                        // Get the scripts from the text
+                        scripts = stripScripts(html);
+                        // Remove scripts from text
+                        html = html.replace(/<script[^>]*>([\S\s]*?)<\/script>/igm,"");
+                        parserElement.innerHTML = '<table>' + html + '</table>';
+                    }
+                    var newElement = parserElement.firstChild;
+                    //some browsers will also create intermediary elements such as table>tbody>tr>td
+                    while ((null !== newElement) && (id !== newElement.id)) {
+                        newElement = newElement.firstChild;
+                    }
+                    parent.replaceChild(newElement, d);
+                    runScripts(scripts);
+                } else if (d.nodeName.toLowerCase() === 'input') {
+                    // special case handling for 'input' elements
+                    // in order to not lose focus when updating,
+                    // input elements need to be added in place.
+                    parserElement = document.createElement('div');
+                    parserElement.innerHTML = html;
+                    newElement = parserElement.firstChild;
+
+                    cloneAttributes(d, newElement);
+                    deleteNode(parserElement);
+                } else if (html.length > 0) {
+                    if (isAutoExec()) {
+                        // Create html
+                        parserElement.innerHTML = html;
+                    } else {
+                        // Get the scripts from the text
+                        scripts = stripScripts(html);
+                        // Remove scripts from text
+                        html = html.replace(/<script[^>]*>([\S\s]*?)<\/script>/igm,"");
+                        parserElement.innerHTML = html;
+                    }
+                    replaceNode(parserElement.firstChild, d);
+                    deleteNode(parserElement);
+                    runScripts(scripts);
+                }
+            }
+        };
+
+        /**
+         * Delete a node specified by the element.
+         * @param element
+         * @ignore
+         */
+        var doDelete = function doDelete(element) {
+            var id = element.getAttribute('id');
+            var target = $(id);
+            deleteNode(target);
+        };
+
+        /**
+         * Insert a node specified by the element.
+         * @param element
+         * @ignore
+         */
+        var doInsert = function doInsert(element) {
+            var scripts = [];
+            var target = $(element.firstChild.getAttribute('id'));
+            var parent = target.parentNode;
+            var tempElement = document.createElement('span');
+            var html = element.firstChild.firstChild.nodeValue;
+
+            if (isAutoExec()) {
+                // Create html
+                tempElement.innerHTML = html;
+            } else {
+                // Get the scripts from the text
+                scripts = stripScripts(html);
+                // Remove scripts from text
+                html = html.replace(/<script[^>]*>([\S\s]*?)<\/script>/igm,"");
+                tempElement.innerHTML = html;
+            }
+            if (element.firstChild.nodeName === 'after') {
+                // Get the next in the list, to insert before
+                target = target.nextSibling;
+            }  // otherwise, this is a 'before' element
+            if (!!tempElement.innerHTML) { // check if only scripts were inserted - if so, do nothing here
+                parent.insertBefore(tempElement.firstChild, target);
+            }
+            runScripts(scripts);
+            deleteNode(tempElement);
+        };
+
+        /**
+         * Modify attributes of given element id.
+         * @param element
+         * @ignore
+         */
+        var doAttributes = function doAttributes(element) {
+
+            // Get id of element we'll act against
+            var id = element.getAttribute('id');
+
+            var target = $(id);
+
+            if (!target) {
+                throw new Error("The specified id: " + id + " was not found in the page.");
+            }
+
+            // There can be multiple attributes modified.  Loop through the list.
+            var nodes = element.childNodes;
+            for (var i = 0; i < nodes.length; i++) {
+                var name = nodes[i].getAttribute('name');
+                var value = nodes[i].getAttribute('value');
+                if (!isIE()) {
+                    target.setAttribute(name, value);
+                } else { // if it's IE, then quite a bit more work is required
+                    if (name === 'class') {
+                        name = 'className';
+                        target.setAttribute(name, value, 0);
+                    } else if (name === "for") {
+                        name = 'htmlFor';
+                        target.setAttribute(name, value, 0);
+                    } else if (name === 'style') {
+                        target.style.setAttribute('cssText', value, 0);
+                    } else if (name.substring(0, 2) === 'on') {
+                        var fn = function(value) {
+                            return function() {
+                                window.execScript(value);
+                            };
+                        }(value);
+                        target.setAttribute(name, fn, 0);
+                    } else if (name === 'dir') {
+                        if (jsf.getProjectStage() == 'Development') {
+                            throw new Error("Cannot set 'dir' attribute in IE");
+                        }
+                    } else {
+                        target.setAttribute(name, value, 0);
+                    }
+                }
+            }
+        };
+
+        /**
+         * Eval the CDATA of the element.
+         * @param element to eval
+         * @ignore
+         */
+        var doEval = function doEval(element) {
+            var evalText = element.firstChild.nodeValue;
+            globalEval(evalText);
+        };
+
+        /**
+         * Ajax Request Queue
+         * @ignore
+         */
+        var Queue = new function Queue() {
+
+            // Create the internal queue
+            var queue = [];
+
+
+            // the amount of space at the front of the queue, initialised to zero
+            var queueSpace = 0;
+
+            /** Returns the size of this Queue. The size of a Queue is equal to the number
+             * of elements that have been enqueued minus the number of elements that have
+             * been dequeued.
+             * @ignore
+             */
+            this.getSize = function getSize() {
+                return queue.length - queueSpace;
+            };
+
+            /** Returns true if this Queue is empty, and false otherwise. A Queue is empty
+             * if the number of elements that have been enqueued equals the number of
+             * elements that have been dequeued.
+             * @ignore
+             */
+            this.isEmpty = function isEmpty() {
+                return (queue.length === 0);
+            };
+
+            /** Enqueues the specified element in this Queue.
+             *
+             * @param element - the element to enqueue
+             * @ignore
+             */
+            this.enqueue = function enqueue(element) {
+                // Queue the request
+                queue.push(element);
+            };
+
+
+            /** Dequeues an element from this Queue. The oldest element in this Queue is
+             * removed and returned. If this Queue is empty then undefined is returned.
+             *
+             * @returns Object The element that was removed from the queue.
+             * @ignore
+             */
+            this.dequeue = function dequeue() {
+                // initialise the element to return to be undefined
+                var element = undefined;
+
+                // check whether the queue is empty
+                if (queue.length) {
+                    // fetch the oldest element in the queue
+                    element = queue[queueSpace];
+
+                    // update the amount of space and check whether a shift should occur
+                    if (++queueSpace * 2 >= queue.length) {
+                        // set the queue equal to the non-empty portion of the queue
+                        queue = queue.slice(queueSpace);
+                        // reset the amount of space at the front of the queue
+                        queueSpace = 0;
+                    }
+                }
+                // return the removed element
+                try {
+                    return element;
+                } finally {
+                    element = null; // IE 6 leak prevention
+                }
+            };
+
+            /** Returns the oldest element in this Queue. If this Queue is empty then
+             * undefined is returned. This function returns the same value as the dequeue
+             * function, but does not remove the returned element from this Queue.
+             * @ignore
+             */
+            this.getOldestElement = function getOldestElement() {
+                // initialise the element to return to be undefined
+                var element = undefined;
+
+                // if the queue is not element then fetch the oldest element in the queue
+                if (queue.length) {
+                    element = queue[queueSpace];
+                }
+                // return the oldest element
+                try {
+                    return element;
+                } finally {
+                    element = null; //IE 6 leak prevention
+                }
+            };
+        }();
+
+
+        /**
+         * AjaxEngine handles Ajax implementation details.
+         * @ignore
+         */
+        var AjaxEngine = function AjaxEngine() {
+
+            var req = {};                  // Request Object
+            req.url = null;                // Request URL
+            req.context = {};              // Context of request and response
+            req.context.sourceid = null;   // Source of this request
+            req.context.onerror = null;    // Error handler for request
+            req.context.onevent = null;    // Event handler for request
+            req.context.formid = null;     // Form that's the context for this request
+            req.xmlReq = null;             // XMLHttpRequest Object
+            req.async = true;              // Default - Asynchronous
+            req.parameters = {};           // Parameters For GET or POST
+            req.queryString = null;        // Encoded Data For GET or POST
+            req.method = null;             // GET or POST
+            req.status = null;             // Response Status Code From Server
+            req.fromQueue = false;         // Indicates if the request was taken off the queue
+            // before being sent.  This prevents the request from
+            // entering the queue redundantly.
+
+            req.que = Queue;
+
+            // Get an XMLHttpRequest Handle
+            req.xmlReq = getTransport();
+            if (req.xmlReq === null) {
+                return null;
+            }
+
+            function noop() {}
+            
+            // Set up request/response state callbacks
+            /**
+             * @ignore
+             */
+            req.xmlReq.onreadystatechange = function() {
+                if (req.xmlReq.readyState === 4) {
+                    req.onComplete();
+                    // next two lines prevent closure/ciruclar reference leaks
+                    // of XHR instances in IE
+                    req.xmlReq.onreadystatechange = noop;
+                    req.xmlReq = null;
+                }
+            };
+
+            /**
+             * This function is called when the request/response interaction
+             * is complete.  If the return status code is successfull,
+             * dequeue all requests from the queue that have completed.  If a
+             * request has been found on the queue that has not been sent,
+             * send the request.
+             * @ignore
+             */
+            req.onComplete = function onComplete() {
+                if (req.xmlReq.status && (req.xmlReq.status >= 200 && req.xmlReq.status < 300)) {
+                    sendEvent(req.xmlReq, req.context, "complete");
+                    jsf.ajax.response(req.xmlReq, req.context);
+                } else {
+                    sendEvent(req.xmlReq, req.context, "complete");
+                    sendError(req.xmlReq, req.context, "httpError");
+                }
+
+                // Regardless of whether the request completed successfully (or not),
+                // dequeue requests that have been completed (readyState 4) and send
+                // requests that ready to be sent (readyState 0).
+
+                var nextReq = req.que.getOldestElement();
+                if (nextReq === null || typeof nextReq === 'undefined') {
+                    return;
+                }
+                while ((typeof nextReq.xmlReq !== 'undefined' && nextReq.xmlReq !== null) &&
+                       nextReq.xmlReq.readyState === 4) {
+                    req.que.dequeue();
+                    nextReq = req.que.getOldestElement();
+                    if (nextReq === null || typeof nextReq === 'undefined') {
+                        break;
+                    }
+                }
+                if (nextReq === null || typeof nextReq === 'undefined') {
+                    return;
+                }
+                if ((typeof nextReq.xmlReq !== 'undefined' && nextReq.xmlReq !== null) &&
+                    nextReq.xmlReq.readyState === 0) {
+                    nextReq.fromQueue = true;
+                    nextReq.sendRequest();
+                }
+            };
+
+            /**
+             * Utility method that accepts additional arguments for the AjaxEngine.
+             * If an argument is passed in that matches an AjaxEngine property, the
+             * argument value becomes the value of the AjaxEngine property.
+             * Arguments that don't match AjaxEngine properties are added as
+             * request parameters.
+             * @ignore
+             */
+            req.setupArguments = function(args) {
+                for (var i in args) {
+                    if (args.hasOwnProperty(i)) {
+                        if (typeof req[i] === 'undefined') {
+                            req.parameters[i] = args[i];
+                        } else {
+                            req[i] = args[i];
+                        }
+                    }
+                }
+            };
+
+            /**
+             * This function does final encoding of parameters, determines the request method
+             * (GET or POST) and sends the request using the specified url.
+             * @ignore
+             */
+            req.sendRequest = function() {
+                if (req.xmlReq !== null) {
+                    // if there is already a request on the queue waiting to be processed..
+                    // just queue this request
+                    if (!req.que.isEmpty()) {
+                        if (!req.fromQueue) {
+                            req.que.enqueue(req);
+                            return;
+                        }
+                    }
+                    // If the queue is empty, queue up this request and send
+                    if (!req.fromQueue) {
+                        req.que.enqueue(req);
+                    }
+                    // Some logic to get the real request URL
+                    if (req.generateUniqueUrl && req.method == "GET") {
+                        req.parameters["AjaxRequestUniqueId"] = new Date().getTime() + "" + req.requestIndex;
+                    }
+                    var content = null; // For POST requests, to hold query string
+                    for (var i in req.parameters) {
+                        if (req.parameters.hasOwnProperty(i)) {
+                            if (req.queryString.length > 0) {
+                                req.queryString += "&";
+                            }
+                            req.queryString += encodeURIComponent(i) + "=" + encodeURIComponent(req.parameters[i]);
+                        }
+                    }
+                    if (req.method === "GET") {
+                        if (req.queryString.length > 0) {
+                            req.url += ((req.url.indexOf("?") > -1) ? "&" : "?") + req.queryString;
+                        }
+                    }
+                    req.xmlReq.open(req.method, req.url, req.async);
+                    if (req.method === "POST") {
+                        if (typeof req.xmlReq.setRequestHeader !== 'undefined') {
+                            req.xmlReq.setRequestHeader('Faces-Request', 'partial/ajax');
+                            req.xmlReq.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
+                        }
+                        content = req.queryString;
+                    }
+                    // note that async == false is not a supported feature.  We may change it in ways
+                    // that break existing programs at any time, with no warning.
+                    if(!req.async) {
+                        req.xmlReq.onreadystatechange = null; // no need for readystate change listening
+                    }
+                    sendEvent(req.xmlReq, req.context, "begin");
+                    req.xmlReq.send(content);
+                    if(!req.async){
+                        req.onComplete();
+                }
+                }
+            };
+
+            return req;
+        };
+
+        /**
+         * Error handling callback.
+         * Assumes that the request has completed.
+         * @ignore
+         */
+        var sendError = function sendError(request, context, status, description, serverErrorName, serverErrorMessage) {
+
+            // Possible errornames:
+            // httpError
+            // emptyResponse
+            // serverError
+            // malformedXML
+
+            var sent = false;
+            var data = {};  // data payload for function
+            data.type = "error";
+            data.status = status;
+            data.source = context.sourceid;
+            data.responseCode = request.status;
+            data.responseXML = request.responseXML;
+            data.responseText = request.responseText;
+
+            // ensure data source is the dom element and not the ID
+            // per 14.4.1 of the 2.0 specification.
+            if (typeof data.source === 'string') {
+                data.source = document.getElementById(data.source);
+            }
+
+            if (description) {
+                data.description = description;
+            } else if (status == "httpError") {
+                if (data.responseCode === 0) {
+                    data.description = "The Http Transport returned a 0 status code.  This is usually the result of mixing ajax and full requests.  This is usually undesired, for both performance and data integrity reasons.";
+                } else {
+                    data.description = "There was an error communicating with the server, status: " + data.responseCode;
+                }
+            } else if (status == "serverError") {
+                data.description = serverErrorMessage;
+            } else if (status == "emptyResponse") {
+                data.description = "An empty response was received from the server.  Check server error logs.";
+            } else if (status == "malformedXML") {
+                if (getParseErrorText(data.responseXML) !== PARSED_OK) {
+                    data.description = getParseErrorText(data.responseXML);
+                } else {
+                    data.description = "An invalid XML response was received from the server.";
+                }
+            }
+
+            if (status == "serverError") {
+                data.errorName = serverErrorName;
+                data.errorMessage = serverErrorMessage;
+            }
+
+            // If we have a registered callback, send the error to it.
+            if (context.onerror) {
+                context.onerror.call(null, data);
+                sent = true;
+            }
+
+            for (var i in errorListeners) {
+                if (errorListeners.hasOwnProperty(i)) {
+                    errorListeners[i].call(null, data);
+                    sent = true;
+                }
+            }
+
+            if (!sent && jsf.getProjectStage() === "Development") {
+                if (status == "serverError") {
+                    alert("serverError: " + serverErrorName + " " + serverErrorMessage);
+                } else {
+                    alert(status + ": " + data.description);
+                }
+            }
+        };
+
+        /**
+         * Event handling callback.
+         * Request is assumed to have completed, except in the case of event = 'begin'.
+         * @ignore
+         */
+        var sendEvent = function sendEvent(request, context, status) {
+
+            var data = {};
+            data.type = "event";
+            data.status = status;
+            data.source = context.sourceid;
+            // ensure data source is the dom element and not the ID
+            // per 14.4.1 of the 2.0 specification.
+            if (typeof data.source === 'string') {
+                data.source = document.getElementById(data.source);
+            }
+            if (status !== 'begin') {
+                data.responseCode = request.status;
+                data.responseXML = request.responseXML;
+                data.responseText = request.responseText;
+            }
+
+            if (context.onevent) {
+                context.onevent.call(null, data);
+            }
+
+            for (var i in eventListeners) {
+                if (eventListeners.hasOwnProperty(i)) {
+                    eventListeners[i].call(null, data);
+                }
+            }
+        };
+
+        // Use module pattern to return the functions we actually expose
+        return {
+            /**
+             * Register a callback for error handling.
+             * <p><b>Usage:</b></p>
+             * <pre><code>
+             * jsf.ajax.addOnError(handleError);
+             * ...
+             * var handleError = function handleError(data) {
+             * ...
+             * }
+             * </pre></code>
+             * <p><b>Implementation Requirements:</b></p>
+             * This function must accept a reference to an existing JavaScript function.
+             * The JavaScript function reference must be added to a list of callbacks, making it possible
+             * to register more than one callback by invoking <code>jsf.ajax.addOnError</code>
+             * more than once.  This function must throw an error if the <code>callback</code>
+             * argument is not a function.
+             *
+             * @member jsf.ajax
+             * @param callback a reference to a function to call on an error
+             */
+            addOnError: function addOnError(callback) {
+                if (typeof callback === 'function') {
+                    errorListeners[errorListeners.length] = callback;
+                } else {
+                    throw new Error("jsf.ajax.addOnError:  Added a callback that was not a function.");
+                }
+            },
+            /**
+             * Register a callback for event handling.
+             * <p><b>Usage:</b></p>
+             * <pre><code>
+             * jsf.ajax.addOnEvent(statusUpdate);
+             * ...
+             * var statusUpdate = function statusUpdate(data) {
+             * ...
+             * }
+             * </pre></code>
+             * <p><b>Implementation Requirements:</b></p>
+             * This function must accept a reference to an existing JavaScript function.
+             * The JavaScript function reference must be added to a list of callbacks, making it possible
+             * to register more than one callback by invoking <code>jsf.ajax.addOnEvent</code>
+             * more than once.  This function must throw an error if the <code>callback</code>
+             * argument is not a function.
+             *
+             * @member jsf.ajax
+             * @param callback a reference to a function to call on an event
+             */
+            addOnEvent: function addOnEvent(callback) {
+                if (typeof callback === 'function') {
+                    eventListeners[eventListeners.length] = callback;
+                } else {
+                    throw new Error("jsf.ajax.addOnEvent: Added a callback that was not a function");
+                }
+            },
+            /**
+             * <p>Send an asynchronous Ajax request to the server.
+             * <p><b>Usage:</b></p>
+             * <pre><code>
+             * Example showing all optional arguments:
+             *
+             * <commandButton id="button1" value="submit"
+             *     onclick="jsf.ajax.request(this,event,
+             *       {execute:'button1',render:'status',onevent: handleEvent,onerror: handleError});return false;"/>
+             * </commandButton/>
+             * </pre></code>
+             * <p><b>Implementation Requirements:</b></p>
+             * This function must:
+             * <ul>
+             * <li>Be used within the context of a <code>form</code>.</li>
+             * <li>Capture the element that triggered this Ajax request
+             * (from the <code>source</code> argument, also known as the
+             * <code>source</code> element.</li>
+             * <li>If the <code>source</code> element is <code>null</code> or
+             * <code>undefined</code> throw an error.</li>
+             * <li>If the <code>source</code> argument is not a <code>string</code> or
+             * DOM element object, throw an error.</li>
+             * <li>If the <code>source</code> argument is a <code>string</code>, find the
+             * DOM element for that <code>string</code> identifier.
+             * <li>If the DOM element could not be determined, throw an error.</li>
+             * <li>If the <code>onerror</code> and <code>onevent</code> arguments are set,
+             * they must be functions, or throw an error.
+             * <li>Determine the <code>source</code> element's <code>form</code>
+             * element.</li>
+             * <li>Get the <code>form</code> view state by calling
+             * {@link jsf.getViewState} passing the
+             * <code>form</code> element as the argument.</li>
+             * <li>Collect post data arguments for the Ajax request.
+             * <ul>
+             * <li>The following name/value pairs are required post data arguments:
+             * <table border="1">
+             * <tr>
+             * <th>name</th>
+             * <th>value</th>
+             * </tr>
+             * <tr>
+             * <td><code>javax.faces.ViewState</code></td>
+             * <td><code>Contents of javax.faces.ViewState hidden field.  This is included when
+             * {@link jsf.getViewState} is used.</code></td>
+             * </tr>
+             * <tr>
+             * <td><code>javax.faces.partial.ajax</code></td>
+             * <td><code>true</code></td>
+             * </tr>
+             * <tr>
+             * <td><code>javax.faces.source</code></td>
+             * <td><code>The identifier of the element that triggered this request.</code></td>
+             * </tr>
+             * </table>
+             * </li>
+             * </ul>
+             * </li>
+             * <li>Collect optional post data arguments for the Ajax request.
+             * <ul>
+             * <li>Determine additional arguments (if any) from the <code>options</code>
+             * argument. If <code>options.execute</code> exists:
+             * <ul>
+             * <li>If the keyword <code>@none</code> is present, do not create and send
+             * the post data argument <code>javax.faces.partial.execute</code>.</li>
+             * <li>If the keyword <code>@all</code> is present, create the post data argument with
+             * the name <code>javax.faces.partial.execute</code> and the value <code>@all</code>.</li>
+             * <li>Otherwise, there are specific identifiers that need to be sent.  Create the post
+             * data argument with the name <code>javax.faces.partial.execute</code> and the value as a
+             * space delimited <code>string</code> of client identifiers.</li>
+             * </ul>
+             * </li>
+             * <li>If <code>options.execute</code> does not exist, create the post data argument with the
+             * name <code>javax.faces.partial.execute</code> and the value as the identifier of the
+             * element that caused this request.</li>
+             * <li>If <code>options.render</code> exists:
+             * <ul>
+             * <li>If the keyword <code>@none</code> is present, do not create and send
+             * the post data argument <code>javax.faces.partial.render</code>.</li>
+             * <li>If the keyword <code>@all</code> is present, create the post data argument with
+             * the name <code>javax.faces.partial.render</code> and the value <code>@all</code>.</li>
+             * <li>Otherwise, there are specific identifiers that need to be sent.  Create the post
+             * data argument with the name <code>javax.faces.partial.render</code> and the value as a
+             * space delimited <code>string</code> of client identifiers.</li>
+             * </ul>
+             * <li>If <code>options.render</code> does not exist do not create and send the
+             * post data argument <code>javax.faces.partial.render</code>.</li>
+             * <li>Determine additional arguments (if any) from the <code>event</code>
+             * argument.  The following name/value pairs may be used from the
+             * <code>event</code> object:
+             * <ul>
+             * <li><code>target</code> - the ID of the element that triggered the event.</li>
+             * <li><code>captured</code> - the ID of the element that captured the event.</li>
+             * <li><code>type</code> - the type of event (ex: onkeypress)</li>
+             * <li><code>alt</code> - <code>true</code> if ALT key was pressed.</li>
+             * <li><code>ctrl</code> - <code>true</code> if CTRL key was pressed.</li>
+             * <li><code>shift</code> - <code>true</code> if SHIFT key was pressed. </li>
+             * <li><code>meta</code> - <code>true</code> if META key was pressed. </li>
+             * <li><code>right</code> - <code>true</code> if right mouse button
+             * was pressed. </li>
+             * <li><code>left</code> - <code>true</code> if left mouse button
+             * was pressed. </li>
+             * <li><code>keycode</code> - the key code.
+             * </ul>
+             * </li>
+             * </ul>
+             * </li>
+             * <li>Encode the set of post data arguments.</li>
+             * <li>Join the encoded view state with the encoded set of post data arguments
+             * to form the <code>query string</code> that will be sent to the server.</li>
+             * <li>Create a request <code>context</code> object and set the properties:
+             * <ul><li><code>source</code> (the source DOM element for this request)</li>
+             * <li><code>onerror</code> (the error handler for this request)</li>
+             * <li><code>onevent</code> (the event handler for this request)</li></ul>
+             * The request context will be used during error/event handling.</li>
+             * <li>Send a <code>begin</code> event following the procedure as outlined
+             * in the Chapter 13 "Sending Events" section of the spec prose document <a
+             *  href="../../javadocs/overview-summary.html#prose_document">linked in the
+             *  overview summary</a></li>
+             * <li>Set the request header with the name: <code>Faces-Request</code> and the
+             * value: <code>partial/ajax</code>.</li>
+             * <li>Determine the <code>posting URL</code> as follows: If the hidden field
+             * <code>javax.faces.encodedURL</code> is present in the submitting form, use its
+             * value as the <code>posting URL</code>.  Otherwise, use the <code>action</code>
+             * property of the <code>form</code> element as the <code>URL</code>.</li>
+             * <li>Send the request as an <code>asynchronous POST</code> using the
+             * <code>posting URL</code> that was determined in the previous step.</li>
+             * </ul>
+             * Form serialization should occur just before the request is sent to minimize 
+             * the amount of time between the creation of the serialized form data and the 
+             * sending of the serialized form data (in the case of long requests in the queue).
+             * Before the request is sent it must be put into a queue to ensure requests
+             * are sent in the same order as when they were initiated.  The request callback function
+             * must examine the queue and determine the next request to be sent.  The behavior of the
+             * request callback function must be as follows:
+             * <ul>
+             * <li>If the request completed successfully invoke {@link jsf.ajax.response}
+             * passing the <code>request</code> object.</li>
+             * <li>If the request did not complete successfully, notify the client.</li>
+             * <li>Regardless of the outcome of the request (success or error) every request in the
+             * queue must be handled.  Examine the status of each request in the queue starting from
+             * the request that has been in the queue the longest.  If the status of the request is
+             * <code>complete</code> (readyState 4), dequeue the request (remove it from the queue).
+             * If the request has not been sent (readyState 0), send the request.  Requests that are
+             * taken off the queue and sent should not be put back on the queue.</li>
+             * </ul>
+             *
+             * </p>
+             *
+             * @param source The DOM element that triggered this Ajax request, or an id string of the
+             * element to use as the triggering element.
+             * @param event The DOM event that triggered this Ajax request.  The
+             * <code>event</code> argument is optional.
+             * @param options The set of available options that can be sent as
+             * request parameters to control client and/or server side
+             * request processing. Acceptable name/value pair options are:
+             * <table border="1">
+             * <tr>
+             * <th>name</th>
+             * <th>value</th>
+             * </tr>
+             * <tr>
+             * <td><code>execute</code></td>
+             * <td><code>space seperated list of client identifiers</code></td>
+             * </tr>
+             * <tr>
+             * <td><code>render</code></td>
+             * <td><code>space seperated list of client identifiers</code></td>
+             * </tr>
+             * <tr>
+             * <td><code>onevent</code></td>
+             * <td><code>function to callback for event</code></td>
+             * </tr>
+             * <tr>
+             * <td><code>onerror</code></td>
+             * <td><code>function to callback for error</code></td>
+             * </tr>
+             * <tr>
+             * <td><code>params</code></td>
+             * <td><code>object containing parameters to include in the request</code></td>
+             * </tr>
+             * </table>
+             * The <code>options</code> argument is optional.
+             * @member jsf.ajax
+             * @function jsf.ajax.request
+             * @throws Error if first required argument <code>element</code> is not specified
+             */
+            request: function request(source, event, options) {
+
+                var element, form;   //  Element variables
+                var all, none;
+
+                if (typeof source === 'undefined' || source === null) {
+                    throw new Error("jsf.ajax.request: source not set");
+                }
+
+                // set up the element based on source
+                if (typeof source === 'string') {
+                    element = document.getElementById(source);
+                } else if (typeof source === 'object') {
+                    element = source;
+                } else {
+                    throw new Error("jsf.request: source must be object or string");
+                }
+                // attempt to handle case of name unset
+                // this might be true in a badly written composite component
+                if (!element.name) {
+                    element.name = element.id;
+                }
+
+                if (typeof(options) === 'undefined' || options === null) {
+                    options = {};
+                }
+
+                // Error handler for this request
+                var onerror = false;
+
+                if (options.onerror && typeof options.onerror === 'function') {
+                    onerror = options.onerror;
+                } else if (options.onerror && typeof options.onerror !== 'function') {
+                    throw new Error("jsf.ajax.request: Added an onerror callback that was not a function");
+                }
+
+                // Event handler for this request
+                var onevent = false;
+
+                if (options.onevent && typeof options.onevent === 'function') {
+                    onevent = options.onevent;
+                } else if (options.onevent && typeof options.onevent !== 'function') {
+                    throw new Error("jsf.ajax.request: Added an onevent callback that was not a function");
+                }
+
+                form = getForm(element);
+                if (!form) {
+                    throw new Error("jsf.ajax.request: Method must be called within a form");
+                }
+                var viewState = jsf.getViewState(form);
+
+                // Set up additional arguments to be used in the request..
+                // Make sure "javax.faces.source" is set up.
+                // If there were "execute" ids specified, make sure we
+                // include the identifier of the source element in the
+                // "execute" list.  If there were no "execute" ids
+                // specified, determine the default.
+
+                var args = {};
+
+                args["javax.faces.source"] = element.id;
+
+                if (event && !!event.type) {
+                    args["javax.faces.partial.event"] = event.type;
+                }
+
+                // If we have 'execute' identifiers:
+                // Handle any keywords that may be present.
+                // If @none present anywhere, do not send the
+                // "javax.faces.partial.execute" parameter.
+                // The 'execute' and 'render' lists must be space
+                // delimited.
+
+                if (options.execute) {
+                    none = options.execute.search(/@none/);
+                    if (none < 0) {
+                        all = options.execute.search(/@all/);
+                        if (all < 0) {
+                            options.execute = options.execute.replace("@this", element.id);
+                            options.execute = options.execute.replace("@form", form.id);
+                            var temp = options.execute.split(' ');
+                            if (!isInArray(temp, element.name)) {
+                                options.execute = element.name + " " + options.execute;
+                            }
+                        } else {
+                            options.execute = "@all";
+                        }
+                        args["javax.faces.partial.execute"] = options.execute;
+                    }
+                } else {
+                    options.execute = element.name + " " + element.id;
+                    args["javax.faces.partial.execute"] = options.execute;
+                }
+
+                if (options.render) {
+                    none = options.render.search(/@none/);
+                    if (none < 0) {
+                        all = options.render.search(/@all/);
+                        if (all < 0) {
+                            options.render = options.render.replace("@this", element.id);
+                            options.render = options.render.replace("@form", form.id);
+                        } else {
+                            options.render = "@all";
+                        }
+                        args["javax.faces.partial.render"] = options.render;
+                    }
+                }
+
+                // remove non-passthrough options
+                delete options.execute;
+                delete options.render;
+                delete options.onerror;
+                delete options.onevent;
+                // copy all other options to args
+                for (var property in options) {
+                    if (options.hasOwnProperty(property)) {
+                        args[property] = options[property];
+                    }
+                }
+
+                args["javax.faces.partial.ajax"] = "true";
+                args["method"] = "POST";
+
+                // Determine the posting url
+
+                var encodedUrlField = form.elements["javax.faces.encodedURL"];
+                if (typeof encodedUrlField == 'undefined') {
+                    args["url"] = form.action;
+                } else {
+                    args["url"] = encodedUrlField.value;
+                }
+
+                var ajaxEngine = new AjaxEngine();
+                ajaxEngine.setupArguments(args);
+                ajaxEngine.queryString = viewState;
+                ajaxEngine.context.onevent = onevent;
+                ajaxEngine.context.onerror = onerror;
+                ajaxEngine.context.sourceid = element.id;
+                ajaxEngine.context.formid = form.id;
+                ajaxEngine.context.render = args["javax.faces.partial.render"];
+                ajaxEngine.sendRequest();
+
+                // null out element variables to protect against IE memory leak
+                element = null;
+                form = null;
+
+            },
+            /**
+             * <p>Receive an Ajax response from the server.
+             * <p><b>Usage:</b></p>
+             * <pre><code>
+             * jsf.ajax.response(request, context);
+             * </pre></code>
+             * <p><b>Implementation Requirements:</b></p>
+             * This function must evaluate the markup returned in the
+             * <code>request.responseXML</code> object and perform the following action:
+             * <ul>
+             * <p>If there is no XML response returned, signal an <code>emptyResponse</code>
+             * error. If the XML response does not follow the format as outlined
+             * in Appendix A of the spec prose document <a
+             *  href="../../javadocs/overview-summary.html#prose_document">linked in the
+             *  overview summary</a> signal a <code>malformedError</code> error.  Refer to
+             * section "Signaling Errors" in Chapter 13 of the spec prose document <a
+             *  href="../../javadocs/overview-summary.html#prose_document">linked in the
+             *  overview summary</a>.</p>
+             * <p>If the response was successfully processed, send a <code>success</code>
+             * event as outlined in Chapter 13 "Sending Events" section of the spec prose
+             * document <a
+             * href="../../javadocs/overview-summary.html#prose_document">linked in the
+             * overview summary</a>.</p>
+             * <p><i>Update Element Processing</i></p>
+             * The <code>update</code> element is used to update a single DOM element.  The
+             * "id" attribute of the <code>update</code> element refers to the DOM element that
+             * will be updated.  The contents of the <code>CDATA</code> section is the data that 
+             * will be used when updating the contents of the DOM element as specified by the
+             * <code><update></code> element identifier.
+             * <li>If an <code>update</code> element is found in the response
+             * with the identifier <code>javax.faces.ViewRoot</code>:
+             * <pre><code><update id="javax.faces.ViewRoot">
+             *    <![CDATA[...]]>
+             * </update></code></pre>
+             * Update the entire DOM replacing the appropriate <code>head</code> and/or
+             * <code>body</code> sections with the content from the response.</li>
+             * <li>If an <code>update</code> element is found in the response with the identifier
+             * <code>javax.faces.ViewState</code>:
+             * <pre><code><update id="javax.faces.ViewState">
+             *    <![CDATA[...]]>
+             * </update></code></pre>
+             * locate and update the submitting form's <code>javax.faces.ViewState</code> value
+             * with the <code>CDATA</code> contents from the response.  Locate and update the 
+             * <code>javax.faces.ViewState</code> value for all forms specified in the 
+             * <code>render</code> target list.</li>
+             * <li>If an <code>update</code> element is found in the response with the identifier
+             * <code>javax.faces.ViewHead</code>:
+             * <pre><code><update id="javax.faces.ViewHead">
+             *    <![CDATA[...]]>
+             * </update></code></pre>
+             * update the document's <code>head</code> section with the <code>CDATA</code>
+             * contents from the response.</li>
+             * <li>If an <code>update</code> element is found in the response with the identifier
+             * <code>javax.faces.ViewBody</code>:
+             * <pre><code><update id="javax.faces.ViewBody">
+             *    <![CDATA[...]]>
+             * </update></code></pre>
+             * update the document's <code>body</code> section with the <code>CDATA</code>
+             * contents from the response.</li>
+             * <li>For any other <code><update></code> element:
+             * <pre><code><update id="update id">
+             *    <![CDATA[...]]>
+             * </update></code></pre>
+             * Find the DOM element with the identifier that matches the
+             * <code><update></code> element identifier, and replace its contents with
+             * the <code><update></code> element's <code>CDATA</code> contents.</li>
+             * </li>
+             * <p><i>Insert Element Processing</i></p>
+             * <li>If an <code><insert></code> element is found in the response with the
+             * attribute <code>before</code>:
+             * <pre><code><insert id="insert id" before="before id">
+             *    <![CDATA[...]]>
+             * </insert></code></pre>
+             * <ul>
+             * <li>Extract this <code><insert></code> element's <code>CDATA</code> contents
+             * from the response.</li>
+             * <li>Find the DOM element whose identifier matches <code>before id</code> and insert
+             * the <code><insert></code> element's <code>CDATA</code> content before
+             * the DOM element in the document.</li>
+             * </ul>
+             * </li>
+             * <li>If an <code><insert></code> element is found in the response with the
+             * attribute <code>after</code>:
+             * <pre><code><insert id="insert id" after="after id">
+             *    <![CDATA[...]]>
+             * </insert></code></pre>
+             * <ul>
+             * <li>Extract this <code><insert></code> element's <code>CDATA</code> contents
+             * from the response.</li>
+             * <li>Find the DOM element whose identifier matches <code>after id</code> and insert
+             * the <code><insert></code> element's <code>CDATA</code> content after
+             * the DOM element in the document.</li>
+             * </ul>
+             * </li>
+             * <p><i>Delete Element Processing</i></p>
+             * <li>If a <code><delete></code> element is found in the response:
+             * <pre><code><delete id="delete id"/></code></pre>
+             * Find the DOM element whose identifier matches <code>delete id</code> and remove it
+             * from the DOM.</li>
+             * <p><i>Element Attribute Update Processing</i></p>
+             * <li>If an <code><attributes></code> element is found in the response:
+             * <pre><code><attributes id="id of element with attribute">
+             *    <attribute name="attribute name" value="attribute value">
+             *    ...
+             * &lt/attributes></code></pre>
+             * <ul>
+             * <li>Find the DOM element that matches the <code><attributes></code> identifier.</li>
+             * <li>For each nested <code><attribute></code> element in <code><attribute></code>,
+             * update the DOM element attribute value (whose name matches <code>attribute name</code>),
+             * with <code>attribute value</code>.</li>
+             * </ul>
+             * </li>
+             * <p><i>JavaScript Processing</i></p>
+             * <li>If an <code><eval></code> element is found in the response:
+             * <pre><code><eval>
+             *    <![CDATA[...JavaScript...]]>
+             * </eval></code></pre>
+             * <ul>
+             * <li>Extract this <code><eval></code> element's <code>CDATA</code> contents
+             * from the response and execute it as if it were JavaScript code.</li>
+             * </ul>
+             * </li>
+             * <p><i>Redirect Processing</i></p>
+             * <li>If a <code><redirect></code> element is found in the response:
+             * <pre><code><redirect url="redirect url"/></code></pre>
+             * Cause a redirect to the url <code>redirect url</code>.</li>
+             * <p><i>Error Processing</i></p>
+             * <li>If an <code><error></code> element is found in the response:
+             * <pre><code><error>
+             *    <error-name>..fully qualified class name string...<error-name>
+             *    <error-message><![CDATA[...]]><error-message>
+             * </error></code></pre>
+             * Extract this <code><error></code> element's <code>error-name</code> contents
+             * and the <code>error-message</code> contents. Signal a <code>serverError</code> passing
+             * the <code>errorName</code> and <code>errorMessage</code>.  Refer to
+             * section "Signaling Errors" in Chapter 13 of the spec prose document <a
+             *  href="../../javadocs/overview-summary.html#prose_document">linked in the
+             *  overview summary</a>.</li>
+             * <p><i>Extensions</i></p>
+             * <li>The <code><extensions></code> element provides a way for framework
+             * implementations to provide their own information.</li>
+             * <p><li>The implementation must check if <script> elements in the response can
+             * be automatically run, as some browsers support this feature and some do not.  
+             * If they can not be run, then scripts should be extracted from the response and
+             * run separately.</li></p> 
+             * </ul>
+             *
+             * </p>
+             *
+             * @param request The <code>XMLHttpRequest</code> instance that
+             * contains the status code and response message from the server.
+             *
+             * @param context An object containing the request context, including the following properties:
+             * the source element, per call onerror callback function, and per call onevent callback function.
+             *
+             * @throws  Error if request contains no data
+             *
+             * @function jsf.ajax.response
+             */
+            response: function response(request, context) {
+                if (!request) {
+                    throw new Error("jsf.ajax.response: Request parameter is unset");
+                }
+
+                // ensure context source is the dom element and not the ID
+                // per 14.4.1 of the 2.0 specification.  We're doing it here
+                // *before* any errors or events are propagated becasue the
+                // DOM element may be removed after the update has been processed.
+                if (typeof context.sourceid === 'string') {
+                    context.sourceid = document.getElementById(context.sourceid);
+                }
+
+                var xml = request.responseXML;
+                if (xml === null) {
+                    sendError(request, context, "emptyResponse");
+                    return;
+                }
+
+                if (getParseErrorText(xml) !== PARSED_OK) {
+                    sendError(request, context, "malformedXML");
+                    return;
+                }
+
+                var responseType = xml.getElementsByTagName("partial-response")[0].firstChild;
+
+                if (responseType.nodeName === "error") { // it's an error
+                    var errorName = responseType.firstChild.firstChild.nodeValue;
+                    var errorMessage = responseType.firstChild.nextSibling.firstChild.nodeValue;
+                    sendError(request, context, "serverError", null, errorName, errorMessage);
+                    sendEvent(request, context, "success");
+                    return;
+                }
+
+
+                if (responseType.nodeName === "redirect") {
+                    window.location = responseType.getAttribute("url");
+                    return;
+                }
+
+
+                if (responseType.nodeName !== "changes") {
+                    sendError(request, context, "malformedXML", "Top level node must be one of: changes, redirect, error, received: " + responseType.nodeName + " instead.");
+                    return;
+                }
+
+
+                var changes = responseType.childNodes;
+
+                try {
+                    for (var i = 0; i < changes.length; i++) {
+                        switch (changes[i].nodeName) {
+                            case "update":
+                                doUpdate(changes[i], context);
+                                break;
+                            case "delete":
+                                doDelete(changes[i]);
+                                break;
+                            case "insert":
+                                doInsert(changes[i]);
+                                break;
+                            case "attributes":
+                                doAttributes(changes[i]);
+                                break;
+                            case "eval":
+                                doEval(changes[i]);
+                                break;
+                            case "extension":
+                                // no action
+                                break;
+                            default:
+                                sendError(request, context, "malformedXML", "Changes allowed are: update, delete, insert, attributes, eval, extension.  Received " + changes[i].nodeName + " instead.");
+                                return;
+                        }
+                    }
+                } catch (ex) {
+                    sendError(request, context, "malformedXML", ex.message);
+                    return;
+                }
+                sendEvent(request, context, "success");
+
+            },
+
+            /**
+             * Test function for testing private deleteNode function.
+             */
+            testDeleteNode: function testDeleteNode(element) {
+                deleteNode(element);
+            }
+
+
+        };
+    }();
+
+    /**
+     *
+     * <p>Return the value of <code>Application.getProjectStage()</code> for
+     * the currently running application instance.  Calling this method must
+     * not cause any network transaction to happen to the server.</p>
+     * <p><b>Usage:</b></p>
+     * <pre><code>
+     * var stage = jsf.getProjectStage();
+     * if (stage === ProjectStage.Development) {
+     *  ...
+     * } else if stage === ProjectStage.Production) {
+     *  ...
+     * }
+     * </code></pre>
+     *
+     * @returns String <code>String</code> representing the current state of the
+     * running application in a typical product development lifecycle.  Refer
+     * to <code>javax.faces.application.Application.getProjectStage</code> and
+     * <code>javax.faces.application.ProjectStage</code>.
+     * @function jsf.getProjectStage
+     */
+    jsf.getProjectStage = function() {
+        // First, return cached value if available
+        if (typeof mojarra !== 'undefined' && typeof mojarra.projectStageCache !== 'undefined') {
+            return mojarra.projectStageCache;
+        }
+        var scripts = document.getElementsByTagName("script"); // nodelist of scripts
+        var script; // jsf.js script
+        var s = 0; // incremental variable for for loop
+        var stage; // temp value for stage
+        var match; // temp value for match
+        while (s < scripts.length) {
+            if (typeof scripts[s].src === 'string' && scripts[s].src.match('\/javax\.faces\.resource\/jsf\.js\?.*ln=javax\.faces')) {
+                script = scripts[s].src;
+                break;
+            }
+            s++;
+        }
+        if (typeof script == "string") {
+            match = script.match("stage=(.*)");
+            if (match) {
+                stage = match[1];
+            }
+        }
+        if (typeof stage === 'undefined' || !stage) {
+            stage = "Production";
+        }
+
+        mojarra = mojarra || {};
+        mojarra.projectStageCache = stage;
+
+        return mojarra.projectStageCache;
+    };
+
+
+    /**
+     * <p>Collect and encode state for input controls associated
+     * with the specified <code>form</code> element.  This will include
+     * all input controls of type <code>hidden</code>.</p>
+     * <p><b>Usage:</b></p>
+     * <pre><code>
+     * var state = jsf.getViewState(form);
+     * </pre></code>
+     *
+     * @param form The <code>form</code> element whose contained
+     * <code>input</code> controls will be collected and encoded.
+     * Only successful controls will be collected and encoded in
+     * accordance with: <a href="http://www.w3.org/TR/html401/interact/forms.html#h-17.13.2">
+     * Section 17.13.2 of the HTML Specification</a>.
+     *
+     * @returns String The encoded state for the specified form's input controls.
+     * @function jsf.getViewState
+     */
+    jsf.getViewState = function(form) {
+        if (!form) {
+            throw new Error("jsf.getViewState:  form must be set");
+        }
+        var els = form.elements;
+        var len = els.length;
+        // create an array which we'll use to hold all the intermediate strings
+        // this bypasses a problem in IE when repeatedly concatenating very
+        // large strings - we'll perform the concatenation once at the end
+        var qString = [];
+        var addField = function(name, value) {
+            var tmpStr = "";
+            if (qString.length > 0) {
+                tmpStr = "&";
+            }
+            tmpStr += encodeURIComponent(name) + "=" + encodeURIComponent(value);
+            qString.push(tmpStr);
+        };
+        for (var i = 0; i < len; i++) {
+            var el = els[i];
+            if (!el.disabled) {
+                switch (el.type) {
+                    case 'text':
+                    case 'password':
+                    case 'hidden':
+                    case 'textarea':
+                        addField(el.name, el.value);
+                        break;
+                    case 'select-one':
+                        if (el.selectedIndex >= 0) {
+                            addField(el.name, el.options[el.selectedIndex].value);
+                        }
+                        break;
+                    case 'select-multiple':
+                        for (var j = 0; j < el.options.length; j++) {
+                            if (el.options[j].selected) {
+                                addField(el.name, el.options[j].value);
+                            }
+                        }
+                        break;
+                    case 'checkbox':
+                    case 'radio':
+                        if (el.checked) {
+                            addField(el.name, el.value || 'on');
+                        }
+                        break;
+                }
+            }
+        }
+        // concatenate the array
+        return qString.join("");
+    };
+
+    /**
+     * The namespace for JavaServer Faces JavaScript utilities.
+     * @name jsf.util
+     * @namespace
+     */
+    jsf.util = {};
+
+    /**
+     * <p>A varargs function that invokes an arbitrary number of scripts.
+     * If any script in the chain returns false, the chain is short-circuited
+     * and subsequent scripts are not invoked.  Any number of scripts may
+     * specified after the <code>event</code> argument.</p>
+     *
+     * @param source The DOM element that triggered this Ajax request, or an
+     * id string of the element to use as the triggering element.
+     * @param event The DOM event that triggered this Ajax request.  The
+     * <code>event</code> argument is optional.
+     *
+     * @returns boolean <code>false</code> if any scripts in the chain return <code>false</code>,
+     *  otherwise returns <code>true</code>
+     * 
+     * @function jsf.util.chain
+     */
+    jsf.util.chain = function(source, event) {
+
+        if (arguments.length < 3) {
+            return true;
+        }
+
+        // RELEASE_PENDING rogerk - shouldn't this be getElementById instead of null
+        var thisArg = (typeof source === 'object') ? source : null;
+
+        // Call back any scripts that were passed in
+        for (var i = 2; i < arguments.length; i++) {
+
+            var f = new Function("event", arguments[i]);
+            var returnValue = f.call(thisArg, event);
+
+            if (returnValue === false) {
+                return false;
+            }
+        }
+        return true;
+        
+    };
+
+    /**
+     * <p>An integer specifying the specification version that this file implements.
+     * It's format is: rightmost two digits, bug release number, next two digits,
+     * minor release number, leftmost digits, major release number.
+     * This number may only be incremented by a new release of the specification.</p>
+     */
+    jsf.specversion = 20000;
+
+    /**
+     * <p>An integer specifying the implementation version that this file implements.
+     * It's a monotonically increasing number, reset with every increment of
+     * <code>jsf.specversion</code>
+     * This number is implementation dependent.</p>
+     */
+    jsf.implversion = 3;
+
+
+} //end if version detection block
diff --git a/jsf-ri/systest/web/resources/case11.css b/jsf-ri/systest/web/resources/case11.css
index 12c9bc4..6d4c409 100644
--- a/jsf-ri/systest/web/resources/case11.css
+++ b/jsf-ri/systest/web/resources/case11.css
@@ -1,3 +1,43 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
 .case11 {
     color: purple;
 }
diff --git a/jsf-ri/systest/web/resources/case12.css b/jsf-ri/systest/web/resources/case12.css
index cbe8f83..fbc35b2 100644
--- a/jsf-ri/systest/web/resources/case12.css
+++ b/jsf-ri/systest/web/resources/case12.css
@@ -1,3 +1,43 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
 .case12 {
     color: fuchsia;
 }
diff --git a/jsf-ri/systest/web/resources/case14.css b/jsf-ri/systest/web/resources/case14.css
index 56e7895..5822677 100644
--- a/jsf-ri/systest/web/resources/case14.css
+++ b/jsf-ri/systest/web/resources/case14.css
@@ -1,3 +1,43 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
 .case14 {
     color: lime;
 }
diff --git a/jsf-ri/systest/web/resources/case9.css b/jsf-ri/systest/web/resources/case9.css
index 5a2cc1a..fbb4503 100644
--- a/jsf-ri/systest/web/resources/case9.css
+++ b/jsf-ri/systest/web/resources/case9.css
@@ -1,3 +1,43 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
 .case9 {
     color: yellow;
 }
diff --git a/jsf-ri/systest/web/resources/composite/actionListenerWrapper1.xhtml b/jsf-ri/systest/web/resources/composite/actionListenerWrapper1.xhtml
index e418f75..f4c8a0e 100644
--- a/jsf-ri/systest/web/resources/composite/actionListenerWrapper1.xhtml
+++ b/jsf-ri/systest/web/resources/composite/actionListenerWrapper1.xhtml
@@ -1,41 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
- Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
 
- Contributor(s):
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html
       PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
diff --git a/jsf-ri/systest/web/resources/composite/actionListenerWrapper2.xhtml b/jsf-ri/systest/web/resources/composite/actionListenerWrapper2.xhtml
index 96d5ebb..0897bf6 100644
--- a/jsf-ri/systest/web/resources/composite/actionListenerWrapper2.xhtml
+++ b/jsf-ri/systest/web/resources/composite/actionListenerWrapper2.xhtml
@@ -1,41 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
- Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
 
- Contributor(s):
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html
       PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
diff --git a/jsf-ri/systest/web/resources/composite/actionListenerWrapper3.xhtml b/jsf-ri/systest/web/resources/composite/actionListenerWrapper3.xhtml
index aac0ee9..d664fbe 100644
--- a/jsf-ri/systest/web/resources/composite/actionListenerWrapper3.xhtml
+++ b/jsf-ri/systest/web/resources/composite/actionListenerWrapper3.xhtml
@@ -1,41 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
- Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
 
- Contributor(s):
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html
       PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
diff --git a/jsf-ri/systest/web/resources/composite/actionListenerWrapper4.xhtml b/jsf-ri/systest/web/resources/composite/actionListenerWrapper4.xhtml
index d5d5c0d..b739bb0 100644
--- a/jsf-ri/systest/web/resources/composite/actionListenerWrapper4.xhtml
+++ b/jsf-ri/systest/web/resources/composite/actionListenerWrapper4.xhtml
@@ -1,41 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
- Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
 
- Contributor(s):
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html
       PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
diff --git a/jsf-ri/systest/web/resources/composite/actionSource1.xhtml b/jsf-ri/systest/web/resources/composite/actionSource1.xhtml
index 2172e5b..46690f0 100644
--- a/jsf-ri/systest/web/resources/composite/actionSource1.xhtml
+++ b/jsf-ri/systest/web/resources/composite/actionSource1.xhtml
@@ -1,40 +1,45 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:h="http://java.sun.com/jsf/html"
diff --git a/jsf-ri/systest/web/resources/composite/actionSource2.xhtml b/jsf-ri/systest/web/resources/composite/actionSource2.xhtml
index f8096f4..da1fdbf 100644
--- a/jsf-ri/systest/web/resources/composite/actionSource2.xhtml
+++ b/jsf-ri/systest/web/resources/composite/actionSource2.xhtml
@@ -1,40 +1,45 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:h="http://java.sun.com/jsf/html"
diff --git a/jsf-ri/systest/web/resources/composite/actionSource3.xhtml b/jsf-ri/systest/web/resources/composite/actionSource3.xhtml
index f77b14a..4041741 100644
--- a/jsf-ri/systest/web/resources/composite/actionSource3.xhtml
+++ b/jsf-ri/systest/web/resources/composite/actionSource3.xhtml
@@ -1,40 +1,45 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:h="http://java.sun.com/jsf/html"
diff --git a/jsf-ri/systest/web/resources/composite/actionSource4.xhtml b/jsf-ri/systest/web/resources/composite/actionSource4.xhtml
index 8f969ec..eebe876 100644
--- a/jsf-ri/systest/web/resources/composite/actionSource4.xhtml
+++ b/jsf-ri/systest/web/resources/composite/actionSource4.xhtml
@@ -1,40 +1,45 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:h="http://java.sun.com/jsf/html"
diff --git a/jsf-ri/systest/web/resources/composite/actionWrapper1.xhtml b/jsf-ri/systest/web/resources/composite/actionWrapper1.xhtml
index 687bb7c..b264c31 100644
--- a/jsf-ri/systest/web/resources/composite/actionWrapper1.xhtml
+++ b/jsf-ri/systest/web/resources/composite/actionWrapper1.xhtml
@@ -1,41 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
- Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
 
- Contributor(s):
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html
       PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
diff --git a/jsf-ri/systest/web/resources/composite/actionWrapper2.xhtml b/jsf-ri/systest/web/resources/composite/actionWrapper2.xhtml
index e3b57a1..0787ae3 100644
--- a/jsf-ri/systest/web/resources/composite/actionWrapper2.xhtml
+++ b/jsf-ri/systest/web/resources/composite/actionWrapper2.xhtml
@@ -1,41 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
- Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
 
- Contributor(s):
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html
       PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
diff --git a/jsf-ri/systest/web/resources/composite/actionWrapper3.xhtml b/jsf-ri/systest/web/resources/composite/actionWrapper3.xhtml
index 4df5202..87d18a6 100644
--- a/jsf-ri/systest/web/resources/composite/actionWrapper3.xhtml
+++ b/jsf-ri/systest/web/resources/composite/actionWrapper3.xhtml
@@ -1,41 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
- Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
 
- Contributor(s):
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html
       PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
diff --git a/jsf-ri/systest/web/resources/composite/actionWrapper4.xhtml b/jsf-ri/systest/web/resources/composite/actionWrapper4.xhtml
index 773cc64..02f407d 100644
--- a/jsf-ri/systest/web/resources/composite/actionWrapper4.xhtml
+++ b/jsf-ri/systest/web/resources/composite/actionWrapper4.xhtml
@@ -1,41 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
- Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
 
- Contributor(s):
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html
       PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
diff --git a/jsf-ri/systest/web/resources/composite/addPhaseListener.xhtml b/jsf-ri/systest/web/resources/composite/addPhaseListener.xhtml
index df58fa4..6456313 100644
--- a/jsf-ri/systest/web/resources/composite/addPhaseListener.xhtml
+++ b/jsf-ri/systest/web/resources/composite/addPhaseListener.xhtml
@@ -1,40 +1,45 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:h="http://java.sun.com/jsf/html"
diff --git a/jsf-ri/systest/web/resources/composite/argAction.xhtml b/jsf-ri/systest/web/resources/composite/argAction.xhtml
index 9076eb1..74a06b5 100644
--- a/jsf-ri/systest/web/resources/composite/argAction.xhtml
+++ b/jsf-ri/systest/web/resources/composite/argAction.xhtml
@@ -1,40 +1,45 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:h="http://java.sun.com/jsf/html"
diff --git a/jsf-ri/systest/web/resources/composite/captureIsSavingStateValue.xhtml b/jsf-ri/systest/web/resources/composite/captureIsSavingStateValue.xhtml
new file mode 100644
index 0000000..eb50a52
--- /dev/null
+++ b/jsf-ri/systest/web/resources/composite/captureIsSavingStateValue.xhtml
@@ -0,0 +1,60 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:cc="http://java.sun.com/jsf/composite">
+<head>
+
+<title>Not present in rendered output</title>
+
+</head>
+
+<body>
+
+<cc:interface componentType="captureIsSavingStateValueComponent" />
+
+<cc:implementation />
+
+</body>
+
+</html>
diff --git a/jsf-ri/systest/web/resources/composite/ccParentExpression.xhtml b/jsf-ri/systest/web/resources/composite/ccParentExpression.xhtml
index 739f0df..e26da2b 100644
--- a/jsf-ri/systest/web/resources/composite/ccParentExpression.xhtml
+++ b/jsf-ri/systest/web/resources/composite/ccParentExpression.xhtml
@@ -1,40 +1,45 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
- Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
 
- Contributor(s):
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:h="http://java.sun.com/jsf/html"
       xmlns:f="http://java.sun.com/jsf/core"
diff --git a/jsf-ri/systest/web/resources/composite/childrenAndFacets.xhtml b/jsf-ri/systest/web/resources/composite/childrenAndFacets.xhtml
index c6db8ce..f22d2c7 100644
--- a/jsf-ri/systest/web/resources/composite/childrenAndFacets.xhtml
+++ b/jsf-ri/systest/web/resources/composite/childrenAndFacets.xhtml
@@ -1,40 +1,45 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:h="http://java.sun.com/jsf/html"
diff --git a/jsf-ri/systest/web/resources/composite/compA.xhtml b/jsf-ri/systest/web/resources/composite/compA.xhtml
index 26b6faf..b5fb5c0 100644
--- a/jsf-ri/systest/web/resources/composite/compA.xhtml
+++ b/jsf-ri/systest/web/resources/composite/compA.xhtml
@@ -1,40 +1,45 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:h="http://java.sun.com/jsf/html"
       xmlns:f="http://java.sun.com/jsf/core"
diff --git a/jsf-ri/systest/web/resources/composite/compAttributeRequired.xhtml b/jsf-ri/systest/web/resources/composite/compAttributeRequired.xhtml
new file mode 100644
index 0000000..8ce5f45
--- /dev/null
+++ b/jsf-ri/systest/web/resources/composite/compAttributeRequired.xhtml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:composite="http://java.sun.com/jsf/composite">
+  <h:head />
+  <h:body>
+    <composite:interface>
+      <composite:attribute name="val" required="true" />
+      <composite:attribute name="modded" required="true" type="Integer" />
+    </composite:interface>
+    <composite:implementation>
+    xx#{cc.attrs.val}:#{cc.attrs.modded}xx
+    </composite:implementation>
+  </h:body>
+</html>
\ No newline at end of file
diff --git a/jsf-ri/systest/web/resources/composite/compAttributeWithArgs.xhtml b/jsf-ri/systest/web/resources/composite/compAttributeWithArgs.xhtml
index c5733d4..cc16eaa 100644
--- a/jsf-ri/systest/web/resources/composite/compAttributeWithArgs.xhtml
+++ b/jsf-ri/systest/web/resources/composite/compAttributeWithArgs.xhtml
@@ -1,41 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
- Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
 
- Contributor(s):
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html
       PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
diff --git a/jsf-ri/systest/web/resources/composite/compB.xhtml b/jsf-ri/systest/web/resources/composite/compB.xhtml
index f400bd8..5682497 100644
--- a/jsf-ri/systest/web/resources/composite/compB.xhtml
+++ b/jsf-ri/systest/web/resources/composite/compB.xhtml
@@ -1,40 +1,45 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:h="http://java.sun.com/jsf/html"
       xmlns:f="http://java.sun.com/jsf/core"
diff --git a/jsf-ri/systest/web/resources/composite/compD.xhtml b/jsf-ri/systest/web/resources/composite/compD.xhtml
index 79d252a..ddd4d9c 100644
--- a/jsf-ri/systest/web/resources/composite/compD.xhtml
+++ b/jsf-ri/systest/web/resources/composite/compD.xhtml
@@ -1,40 +1,45 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:h="http://java.sun.com/jsf/html"
       xmlns:f="http://java.sun.com/jsf/core"
diff --git a/jsf-ri/systest/web/resources/composite/compE.xhtml b/jsf-ri/systest/web/resources/composite/compE.xhtml
index aa74bee..2417188 100644
--- a/jsf-ri/systest/web/resources/composite/compE.xhtml
+++ b/jsf-ri/systest/web/resources/composite/compE.xhtml
@@ -1,40 +1,45 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:h="http://java.sun.com/jsf/html"
       xmlns:f="http://java.sun.com/jsf/core"
diff --git a/jsf-ri/systest/web/resources/composite/compWithArgs.xhtml b/jsf-ri/systest/web/resources/composite/compWithArgs.xhtml
index a0c1cfd..df63066 100644
--- a/jsf-ri/systest/web/resources/composite/compWithArgs.xhtml
+++ b/jsf-ri/systest/web/resources/composite/compWithArgs.xhtml
@@ -1,41 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
- Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
 
- Contributor(s):
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html
       PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
diff --git a/jsf-ri/systest/web/resources/composite/componentWithMetadata.xhtml b/jsf-ri/systest/web/resources/composite/componentWithMetadata.xhtml
index 5a7bb9d..dba2414 100644
--- a/jsf-ri/systest/web/resources/composite/componentWithMetadata.xhtml
+++ b/jsf-ri/systest/web/resources/composite/componentWithMetadata.xhtml
@@ -1,40 +1,45 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:h="http://java.sun.com/jsf/html"
diff --git a/jsf-ri/systest/web/resources/composite/compositeComponentEL.xhtml b/jsf-ri/systest/web/resources/composite/compositeComponentEL.xhtml
index 6e535ee..1a637d4 100644
--- a/jsf-ri/systest/web/resources/composite/compositeComponentEL.xhtml
+++ b/jsf-ri/systest/web/resources/composite/compositeComponentEL.xhtml
@@ -1,40 +1,45 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:h="http://java.sun.com/jsf/html"
diff --git a/jsf-ri/systest/web/resources/composite/compositionWithinComposite.xhtml b/jsf-ri/systest/web/resources/composite/compositionWithinComposite.xhtml
index 24db6a2..9878495 100644
--- a/jsf-ri/systest/web/resources/composite/compositionWithinComposite.xhtml
+++ b/jsf-ri/systest/web/resources/composite/compositionWithinComposite.xhtml
@@ -1,40 +1,45 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:h="http://java.sun.com/jsf/html"
diff --git a/jsf-ri/systest/web/resources/composite/conditionalAttributeRendering.xhtml b/jsf-ri/systest/web/resources/composite/conditionalAttributeRendering.xhtml
index d067159..a613764 100644
--- a/jsf-ri/systest/web/resources/composite/conditionalAttributeRendering.xhtml
+++ b/jsf-ri/systest/web/resources/composite/conditionalAttributeRendering.xhtml
@@ -1,40 +1,45 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:h="http://java.sun.com/jsf/html"
diff --git a/jsf-ri/systest/web/resources/composite/converter1.xhtml b/jsf-ri/systest/web/resources/composite/converter1.xhtml
index 798eeea..3d1bb2e 100644
--- a/jsf-ri/systest/web/resources/composite/converter1.xhtml
+++ b/jsf-ri/systest/web/resources/composite/converter1.xhtml
@@ -1,40 +1,45 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:h="http://java.sun.com/jsf/html"
diff --git a/jsf-ri/systest/web/resources/composite/converter2.xhtml b/jsf-ri/systest/web/resources/composite/converter2.xhtml
index 94588aa..135e13a 100644
--- a/jsf-ri/systest/web/resources/composite/converter2.xhtml
+++ b/jsf-ri/systest/web/resources/composite/converter2.xhtml
@@ -1,40 +1,45 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:h="http://java.sun.com/jsf/html"
diff --git a/jsf-ri/systest/web/resources/composite/converter3.xhtml b/jsf-ri/systest/web/resources/composite/converter3.xhtml
index aadf02d..d485037 100644
--- a/jsf-ri/systest/web/resources/composite/converter3.xhtml
+++ b/jsf-ri/systest/web/resources/composite/converter3.xhtml
@@ -1,40 +1,45 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:h="http://java.sun.com/jsf/html"
diff --git a/jsf-ri/systest/web/resources/composite/converter4.xhtml b/jsf-ri/systest/web/resources/composite/converter4.xhtml
index bf755f0..313946d 100644
--- a/jsf-ri/systest/web/resources/composite/converter4.xhtml
+++ b/jsf-ri/systest/web/resources/composite/converter4.xhtml
@@ -1,40 +1,45 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:h="http://java.sun.com/jsf/html"
diff --git a/jsf-ri/systest/web/resources/composite/customAction.xhtml b/jsf-ri/systest/web/resources/composite/customAction.xhtml
index 4d05d67..c699790 100644
--- a/jsf-ri/systest/web/resources/composite/customAction.xhtml
+++ b/jsf-ri/systest/web/resources/composite/customAction.xhtml
@@ -1,40 +1,45 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:h="http://java.sun.com/jsf/html"
diff --git a/jsf-ri/systest/web/resources/composite/customActionListener.xhtml b/jsf-ri/systest/web/resources/composite/customActionListener.xhtml
index 64ae6f1..1fafd32 100644
--- a/jsf-ri/systest/web/resources/composite/customActionListener.xhtml
+++ b/jsf-ri/systest/web/resources/composite/customActionListener.xhtml
@@ -1,40 +1,45 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:h="http://java.sun.com/jsf/html"
diff --git a/jsf-ri/systest/web/resources/composite/customActionWrapper1.xhtml b/jsf-ri/systest/web/resources/composite/customActionWrapper1.xhtml
index 687bb7c..b264c31 100644
--- a/jsf-ri/systest/web/resources/composite/customActionWrapper1.xhtml
+++ b/jsf-ri/systest/web/resources/composite/customActionWrapper1.xhtml
@@ -1,41 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
- Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
 
- Contributor(s):
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html
       PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
diff --git a/jsf-ri/systest/web/resources/composite/customActionWrapper2.xhtml b/jsf-ri/systest/web/resources/composite/customActionWrapper2.xhtml
index cc6e5eb..de55d32 100644
--- a/jsf-ri/systest/web/resources/composite/customActionWrapper2.xhtml
+++ b/jsf-ri/systest/web/resources/composite/customActionWrapper2.xhtml
@@ -1,41 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
- Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
 
- Contributor(s):
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html
       PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
diff --git a/jsf-ri/systest/web/resources/composite/customActionWrapper3.xhtml b/jsf-ri/systest/web/resources/composite/customActionWrapper3.xhtml
index 61786a4..6f80760 100644
--- a/jsf-ri/systest/web/resources/composite/customActionWrapper3.xhtml
+++ b/jsf-ri/systest/web/resources/composite/customActionWrapper3.xhtml
@@ -1,41 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
- Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
 
- Contributor(s):
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html
       PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
diff --git a/jsf-ri/systest/web/resources/composite/customActionWrapper4.xhtml b/jsf-ri/systest/web/resources/composite/customActionWrapper4.xhtml
index 773cc64..02f407d 100644
--- a/jsf-ri/systest/web/resources/composite/customActionWrapper4.xhtml
+++ b/jsf-ri/systest/web/resources/composite/customActionWrapper4.xhtml
@@ -1,41 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
- Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
 
- Contributor(s):
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html
       PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
diff --git a/jsf-ri/systest/web/resources/composite/customCustomAction.xhtml b/jsf-ri/systest/web/resources/composite/customCustomAction.xhtml
index b1749de..adb1a21 100644
--- a/jsf-ri/systest/web/resources/composite/customCustomAction.xhtml
+++ b/jsf-ri/systest/web/resources/composite/customCustomAction.xhtml
@@ -1,40 +1,45 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:h="http://java.sun.com/jsf/html"
diff --git a/jsf-ri/systest/web/resources/composite/customValidator.xhtml b/jsf-ri/systest/web/resources/composite/customValidator.xhtml
index b66d62c..e8bd653 100644
--- a/jsf-ri/systest/web/resources/composite/customValidator.xhtml
+++ b/jsf-ri/systest/web/resources/composite/customValidator.xhtml
@@ -1,40 +1,45 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:h="http://java.sun.com/jsf/html"
diff --git a/jsf-ri/systest/web/resources/composite/customValueChangeListener.xhtml b/jsf-ri/systest/web/resources/composite/customValueChangeListener.xhtml
index 46b09a9..d03e60b 100644
--- a/jsf-ri/systest/web/resources/composite/customValueChangeListener.xhtml
+++ b/jsf-ri/systest/web/resources/composite/customValueChangeListener.xhtml
@@ -1,40 +1,45 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:h="http://java.sun.com/jsf/html"
diff --git a/jsf-ri/systest/web/resources/composite/decorate.xhtml b/jsf-ri/systest/web/resources/composite/decorate.xhtml
index c81cb72..8a1fa5a 100644
--- a/jsf-ri/systest/web/resources/composite/decorate.xhtml
+++ b/jsf-ri/systest/web/resources/composite/decorate.xhtml
@@ -1,41 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html
       PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
@@ -57,4 +62,4 @@
         </ui:decorate>
     </composite:implementation>
 </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/jsf-ri/systest/web/resources/composite/defaultAction.xhtml b/jsf-ri/systest/web/resources/composite/defaultAction.xhtml
index abeba5f..e5f1fa4 100644
--- a/jsf-ri/systest/web/resources/composite/defaultAction.xhtml
+++ b/jsf-ri/systest/web/resources/composite/defaultAction.xhtml
@@ -1,40 +1,45 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"
diff --git a/jsf-ri/systest/web/resources/composite/defaultAttributeValues.xhtml b/jsf-ri/systest/web/resources/composite/defaultAttributeValues.xhtml
new file mode 100644
index 0000000..0fcb282
--- /dev/null
+++ b/jsf-ri/systest/web/resources/composite/defaultAttributeValues.xhtml
@@ -0,0 +1,68 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:cc="http://java.sun.com/jsf/composite">
+
+    <cc:interface> 
+
+        <cc:attribute name="rendered" default="true"/>
+
+        <cc:attribute name="foo" default="bar"/>
+
+    </cc:interface>
+
+    <cc:implementation>
+        
+        <h:commandButton id="action" value="Submit"/>
+        <br/>
+        rendered=#{cc.attrs.rendered}
+        <br/>
+        foo=#{cc.attrs.foo}
+
+    </cc:implementation>
+
+</html>
+
diff --git a/jsf-ri/systest/web/resources/composite/facetA.xhtml b/jsf-ri/systest/web/resources/composite/facetA.xhtml
index ea1e8ad..d34ceef 100644
--- a/jsf-ri/systest/web/resources/composite/facetA.xhtml
+++ b/jsf-ri/systest/web/resources/composite/facetA.xhtml
@@ -1,40 +1,45 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:h="http://java.sun.com/jsf/html"
       xmlns:f="http://java.sun.com/jsf/core"
diff --git a/jsf-ri/systest/web/resources/composite/facetB.xhtml b/jsf-ri/systest/web/resources/composite/facetB.xhtml
index cd59ff5..bcc6459 100644
--- a/jsf-ri/systest/web/resources/composite/facetB.xhtml
+++ b/jsf-ri/systest/web/resources/composite/facetB.xhtml
@@ -1,40 +1,45 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:h="http://java.sun.com/jsf/html"
       xmlns:f="http://java.sun.com/jsf/core"
diff --git a/jsf-ri/systest/web/resources/composite/facetD.xhtml b/jsf-ri/systest/web/resources/composite/facetD.xhtml
index 78a9554..71a3409 100644
--- a/jsf-ri/systest/web/resources/composite/facetD.xhtml
+++ b/jsf-ri/systest/web/resources/composite/facetD.xhtml
@@ -1,40 +1,45 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:h="http://java.sun.com/jsf/html"
       xmlns:f="http://java.sun.com/jsf/core"
diff --git a/jsf-ri/systest/web/resources/composite/facetE.xhtml b/jsf-ri/systest/web/resources/composite/facetE.xhtml
index 6e81d9c..cbdb82e 100644
--- a/jsf-ri/systest/web/resources/composite/facetE.xhtml
+++ b/jsf-ri/systest/web/resources/composite/facetE.xhtml
@@ -1,40 +1,45 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:h="http://java.sun.com/jsf/html"
       xmlns:f="http://java.sun.com/jsf/core"
diff --git a/jsf-ri/systest/web/resources/composite/groovyBacked.xhtml b/jsf-ri/systest/web/resources/composite/groovyBacked.xhtml
index 9d329ed..2f8d53c 100644
--- a/jsf-ri/systest/web/resources/composite/groovyBacked.xhtml
+++ b/jsf-ri/systest/web/resources/composite/groovyBacked.xhtml
@@ -1,38 +1,42 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
 
diff --git a/jsf-ri/systest/web/resources/composite/inlinedStyle1.xhtml b/jsf-ri/systest/web/resources/composite/inlinedStyle1.xhtml
index e74357f..4bda80b 100644
--- a/jsf-ri/systest/web/resources/composite/inlinedStyle1.xhtml
+++ b/jsf-ri/systest/web/resources/composite/inlinedStyle1.xhtml
@@ -1,40 +1,45 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:h="http://java.sun.com/jsf/html"
diff --git a/jsf-ri/systest/web/resources/composite/inlinedStyle2.xhtml b/jsf-ri/systest/web/resources/composite/inlinedStyle2.xhtml
index 7cf7f63..35d51e0 100644
--- a/jsf-ri/systest/web/resources/composite/inlinedStyle2.xhtml
+++ b/jsf-ri/systest/web/resources/composite/inlinedStyle2.xhtml
@@ -1,40 +1,45 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:h="http://java.sun.com/jsf/html"
diff --git a/jsf-ri/systest/web/resources/composite/inlinedStyleAndScript.xhtml b/jsf-ri/systest/web/resources/composite/inlinedStyleAndScript.xhtml
index 30cf5ac..0bdd1c7 100644
--- a/jsf-ri/systest/web/resources/composite/inlinedStyleAndScript.xhtml
+++ b/jsf-ri/systest/web/resources/composite/inlinedStyleAndScript.xhtml
@@ -1,40 +1,45 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:h="http://java.sun.com/jsf/html"
diff --git a/jsf-ri/systest/web/resources/composite/insertChildrenRequiredFalse.xhtml b/jsf-ri/systest/web/resources/composite/insertChildrenRequiredFalse.xhtml
index 0285162..22833a5 100644
--- a/jsf-ri/systest/web/resources/composite/insertChildrenRequiredFalse.xhtml
+++ b/jsf-ri/systest/web/resources/composite/insertChildrenRequiredFalse.xhtml
@@ -1,40 +1,45 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:h="http://java.sun.com/jsf/html"
diff --git a/jsf-ri/systest/web/resources/composite/insertChildrenRequiredTrue.xhtml b/jsf-ri/systest/web/resources/composite/insertChildrenRequiredTrue.xhtml
index f185721..4e1c9d1 100644
--- a/jsf-ri/systest/web/resources/composite/insertChildrenRequiredTrue.xhtml
+++ b/jsf-ri/systest/web/resources/composite/insertChildrenRequiredTrue.xhtml
@@ -1,40 +1,45 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:h="http://java.sun.com/jsf/html"
diff --git a/jsf-ri/systest/web/resources/composite/insertFacetRequiredFalse.xhtml b/jsf-ri/systest/web/resources/composite/insertFacetRequiredFalse.xhtml
index b0ec89f..f0815d8 100644
--- a/jsf-ri/systest/web/resources/composite/insertFacetRequiredFalse.xhtml
+++ b/jsf-ri/systest/web/resources/composite/insertFacetRequiredFalse.xhtml
@@ -1,40 +1,45 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:h="http://java.sun.com/jsf/html"
diff --git a/jsf-ri/systest/web/resources/composite/insertFacetRequiredTrue.xhtml b/jsf-ri/systest/web/resources/composite/insertFacetRequiredTrue.xhtml
index e4d1625..757a5bf 100644
--- a/jsf-ri/systest/web/resources/composite/insertFacetRequiredTrue.xhtml
+++ b/jsf-ri/systest/web/resources/composite/insertFacetRequiredTrue.xhtml
@@ -1,40 +1,45 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:h="http://java.sun.com/jsf/html"
diff --git a/jsf-ri/systest/web/resources/composite/invalidMeArgs.xhtml b/jsf-ri/systest/web/resources/composite/invalidMeArgs.xhtml
index f626769..14402d9 100644
--- a/jsf-ri/systest/web/resources/composite/invalidMeArgs.xhtml
+++ b/jsf-ri/systest/web/resources/composite/invalidMeArgs.xhtml
@@ -1,41 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
- Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
 
- Contributor(s):
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html
       PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
diff --git a/jsf-ri/systest/web/resources/composite/invalidVeArgs.xhtml b/jsf-ri/systest/web/resources/composite/invalidVeArgs.xhtml
index 0adbd81..aac50ca 100644
--- a/jsf-ri/systest/web/resources/composite/invalidVeArgs.xhtml
+++ b/jsf-ri/systest/web/resources/composite/invalidVeArgs.xhtml
@@ -1,41 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
- Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
 
- Contributor(s):
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html
       PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
diff --git a/jsf-ri/systest/web/resources/composite/isCompositeComponent.xhtml b/jsf-ri/systest/web/resources/composite/isCompositeComponent.xhtml
new file mode 100644
index 0000000..0735a52
--- /dev/null
+++ b/jsf-ri/systest/web/resources/composite/isCompositeComponent.xhtml
@@ -0,0 +1,68 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:cc="http://java.sun.com/jsf/composite">
+<head>
+
+<title>Not present in rendered output</title>
+
+</head>
+
+<body>
+
+<cc:interface>
+
+</cc:interface>
+
+<cc:implementation>
+
+  <cc:insertChildren />
+
+</cc:implementation>
+
+</body>
+
+</html>
diff --git a/jsf-ri/systest/web/resources/composite/javaBackedComponentDefaultAttrValues.xhtml b/jsf-ri/systest/web/resources/composite/javaBackedComponentDefaultAttrValues.xhtml
index d5cb7b1..d141838 100644
--- a/jsf-ri/systest/web/resources/composite/javaBackedComponentDefaultAttrValues.xhtml
+++ b/jsf-ri/systest/web/resources/composite/javaBackedComponentDefaultAttrValues.xhtml
@@ -1,39 +1,43 @@
 <?xml version='1.0' encoding='UTF-8' ?>
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
 
diff --git a/jsf-ri/systest/web/resources/composite/javaTopLevelActionListenerComponent.xhtml b/jsf-ri/systest/web/resources/composite/javaTopLevelActionListenerComponent.xhtml
index 913ea5f..3ada38c 100644
--- a/jsf-ri/systest/web/resources/composite/javaTopLevelActionListenerComponent.xhtml
+++ b/jsf-ri/systest/web/resources/composite/javaTopLevelActionListenerComponent.xhtml
@@ -1,40 +1,45 @@
 <!--
 
-     DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
-     Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
-
-     The contents of this file are subject to the terms of either the GNU
-     General Public License Version 2 only ("GPL") or the Common Development
-     and Distribution License("CDDL") (collectively, the "License").  You
-     may not use this file except in compliance with the License. You can obtain
-     a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
-     or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
-     language governing permissions and limitations under the License.
-
-     When distributing the software, include this License Header Notice in each
-     file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
-     Sun designates this particular file as subject to the "Classpath" exception
-     as provided by Sun in the GPL Version 2 section of the License file that
-     accompanied this code.  If applicable, add the following below the License
-     Header, with the fields enclosed by brackets [] replaced by your own
-     identifying information: "Portions Copyrighted [year]
-     [name of copyright owner]"
-
-     Contributor(s):
-
-     If you wish your version of this file to be governed by only the CDDL or
-     only the GPL Version 2, indicate your decision by adding "[Contributor]
-     elects to include this software in this distribution under the [CDDL or GPL
-     Version 2] license."  If you don't indicate a single choice of license, a
-     recipient has the option to distribute your version of this file under
-     either the CDDL, the GPL Version 2 or to extend the choice of license to
-     its licensees as provided above.  However, if you add GPL Version 2 code
-     and therefore, elected the GPL Version 2 license, then the option applies
-     only if the new code is made subject to such option by the copyright
-     holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"
diff --git a/jsf-ri/systest/web/resources/composite/javaTopLevelComponent.xhtml b/jsf-ri/systest/web/resources/composite/javaTopLevelComponent.xhtml
index f508898..5fdf8e3 100644
--- a/jsf-ri/systest/web/resources/composite/javaTopLevelComponent.xhtml
+++ b/jsf-ri/systest/web/resources/composite/javaTopLevelComponent.xhtml
@@ -1,40 +1,45 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:h="http://java.sun.com/jsf/html"
diff --git a/jsf-ri/systest/web/resources/composite/jsr276Correct01.xhtml b/jsf-ri/systest/web/resources/composite/jsr276Correct01.xhtml
index 27332e8..11b5d71 100644
--- a/jsf-ri/systest/web/resources/composite/jsr276Correct01.xhtml
+++ b/jsf-ri/systest/web/resources/composite/jsr276Correct01.xhtml
@@ -1,40 +1,45 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:h="http://java.sun.com/jsf/html"
diff --git a/jsf-ri/systest/web/resources/composite/jsr276Incorrect01.xhtml b/jsf-ri/systest/web/resources/composite/jsr276Incorrect01.xhtml
index d5ed420..a229468 100644
--- a/jsf-ri/systest/web/resources/composite/jsr276Incorrect01.xhtml
+++ b/jsf-ri/systest/web/resources/composite/jsr276Incorrect01.xhtml
@@ -1,40 +1,45 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:h="http://java.sun.com/jsf/html"
diff --git a/jsf-ri/systest/web/resources/composite/meDefaults.xhtml b/jsf-ri/systest/web/resources/composite/meDefaults.xhtml
index 7a56daf..0a36c1c 100644
--- a/jsf-ri/systest/web/resources/composite/meDefaults.xhtml
+++ b/jsf-ri/systest/web/resources/composite/meDefaults.xhtml
@@ -1,41 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
- Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
 
- Contributor(s):
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html
       PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
@@ -81,4 +86,4 @@
         </h:form>
     </composite:implementation>
 </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/jsf-ri/systest/web/resources/composite/multiActionSource.xhtml b/jsf-ri/systest/web/resources/composite/multiActionSource.xhtml
new file mode 100644
index 0000000..0539b5c
--- /dev/null
+++ b/jsf-ri/systest/web/resources/composite/multiActionSource.xhtml
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:cc="http://java.sun.com/jsf/composite">
+<cc:interface>
+  <cc:attribute name="submitAction" targetAttributeName="action" />
+  <cc:attribute name="cancelAction" targetAttributeName="action" />
+  <cc:actionSource name="submitAction"/>
+  <cc:actionSource name="cancelAction"/>  
+</cc:interface>
+<cc:implementation>
+  <h:commandButton id="submitAction" value="submit" />
+  <h:commandButton id="cancelAction" value="cancel" />
+</cc:implementation>
+
+</html>
diff --git a/jsf-ri/systest/web/resources/composite/multiActionSourceMethodSignatures.xhtml b/jsf-ri/systest/web/resources/composite/multiActionSourceMethodSignatures.xhtml
new file mode 100644
index 0000000..2398c50
--- /dev/null
+++ b/jsf-ri/systest/web/resources/composite/multiActionSourceMethodSignatures.xhtml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:cc="http://java.sun.com/jsf/composite">
+<cc:interface>
+  <cc:attribute name="submitAction" targetAttributeName="action" 
+                method-signature="java.lang.Object action()" />
+  <cc:attribute name="cancelAction" targetAttributeName="action" 
+                method-signature="java.lang.Object action()" />
+  <cc:actionSource name="submitAction"/>
+  <cc:actionSource name="cancelAction"/>  
+</cc:interface>
+<cc:implementation>
+  <h:commandButton id="submitAction" value="submit" />
+  <h:commandButton id="cancelAction" value="cancel" />
+</cc:implementation>
+
+</html>
diff --git a/jsf-ri/systest/web/resources/composite/myaction.xhtml b/jsf-ri/systest/web/resources/composite/myaction.xhtml
index c1e3551..b5f8262 100644
--- a/jsf-ri/systest/web/resources/composite/myaction.xhtml
+++ b/jsf-ri/systest/web/resources/composite/myaction.xhtml
@@ -1,41 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html
       PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
diff --git a/jsf-ri/systest/web/resources/composite/nesting.xhtml b/jsf-ri/systest/web/resources/composite/nesting.xhtml
index 790be88..1ee4715 100644
--- a/jsf-ri/systest/web/resources/composite/nesting.xhtml
+++ b/jsf-ri/systest/web/resources/composite/nesting.xhtml
@@ -1,41 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html
       PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
diff --git a/jsf-ri/systest/web/resources/composite/nesting1.xhtml b/jsf-ri/systest/web/resources/composite/nesting1.xhtml
index ee6ad82..4733c1a 100644
--- a/jsf-ri/systest/web/resources/composite/nesting1.xhtml
+++ b/jsf-ri/systest/web/resources/composite/nesting1.xhtml
@@ -1,41 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html
       PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
diff --git a/jsf-ri/systest/web/resources/composite/nesting10.xhtml b/jsf-ri/systest/web/resources/composite/nesting10.xhtml
index ad90e4e..e8c3ccb 100644
--- a/jsf-ri/systest/web/resources/composite/nesting10.xhtml
+++ b/jsf-ri/systest/web/resources/composite/nesting10.xhtml
@@ -1,41 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html
       PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
@@ -57,4 +62,4 @@
         <ez:nesting6 id="nesting6" bean="#{cc.attrs.bean}"/>
     </composite:implementation>
 </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/jsf-ri/systest/web/resources/composite/nesting11.xhtml b/jsf-ri/systest/web/resources/composite/nesting11.xhtml
index 6c7c75d..2d54569 100644
--- a/jsf-ri/systest/web/resources/composite/nesting11.xhtml
+++ b/jsf-ri/systest/web/resources/composite/nesting11.xhtml
@@ -1,41 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
- Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
 
- Contributor(s):
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html
       PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
@@ -69,4 +74,4 @@
         </c:forEach>
     </composite:implementation>
 </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/jsf-ri/systest/web/resources/composite/nesting2.xhtml b/jsf-ri/systest/web/resources/composite/nesting2.xhtml
index b54272b..e6c1ad9 100644
--- a/jsf-ri/systest/web/resources/composite/nesting2.xhtml
+++ b/jsf-ri/systest/web/resources/composite/nesting2.xhtml
@@ -1,41 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html
       PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
diff --git a/jsf-ri/systest/web/resources/composite/nesting3.xhtml b/jsf-ri/systest/web/resources/composite/nesting3.xhtml
index 34c4e32..b705b3c 100644
--- a/jsf-ri/systest/web/resources/composite/nesting3.xhtml
+++ b/jsf-ri/systest/web/resources/composite/nesting3.xhtml
@@ -1,41 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html
       PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
@@ -58,4 +63,4 @@
         </ez:wrapper>
     </composite:implementation>
 </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/jsf-ri/systest/web/resources/composite/nesting4.xhtml b/jsf-ri/systest/web/resources/composite/nesting4.xhtml
index 811fe80..26fd557 100644
--- a/jsf-ri/systest/web/resources/composite/nesting4.xhtml
+++ b/jsf-ri/systest/web/resources/composite/nesting4.xhtml
@@ -1,41 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html
       PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
@@ -59,4 +64,4 @@
         <ez:nesting5 id="nesting5" other="#{myvar}" attr2="#{cc.attrs.attr2}" cid="#{cc.clientId}" />
     </composite:implementation>
 </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/jsf-ri/systest/web/resources/composite/nesting5.xhtml b/jsf-ri/systest/web/resources/composite/nesting5.xhtml
index 55c6ae4..fa02de2 100644
--- a/jsf-ri/systest/web/resources/composite/nesting5.xhtml
+++ b/jsf-ri/systest/web/resources/composite/nesting5.xhtml
@@ -1,41 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html
       PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
@@ -60,4 +65,4 @@
         Cid:   <h:outputText style="color:black" value="#{cc.attrs.cid}" /><br />
     </composite:implementation>
 </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/jsf-ri/systest/web/resources/composite/nesting6.xhtml b/jsf-ri/systest/web/resources/composite/nesting6.xhtml
index 55fa001..82c1225 100644
--- a/jsf-ri/systest/web/resources/composite/nesting6.xhtml
+++ b/jsf-ri/systest/web/resources/composite/nesting6.xhtml
@@ -1,41 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
- Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
 
- Contributor(s):
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html
       PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
@@ -61,4 +66,4 @@
                                    bean="#{cc.attrs.bean}"/>
     </composite:implementation>
 </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/jsf-ri/systest/web/resources/composite/nesting7.xhtml b/jsf-ri/systest/web/resources/composite/nesting7.xhtml
index f342b8b..ffc240d 100644
--- a/jsf-ri/systest/web/resources/composite/nesting7.xhtml
+++ b/jsf-ri/systest/web/resources/composite/nesting7.xhtml
@@ -1,41 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
- Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
 
- Contributor(s):
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html
       PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
diff --git a/jsf-ri/systest/web/resources/composite/nesting8.xhtml b/jsf-ri/systest/web/resources/composite/nesting8.xhtml
index e8e983e..289ef81 100644
--- a/jsf-ri/systest/web/resources/composite/nesting8.xhtml
+++ b/jsf-ri/systest/web/resources/composite/nesting8.xhtml
@@ -1,41 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
- Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
 
- Contributor(s):
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html
       PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
@@ -66,4 +71,4 @@
         <ez:nesting11 value="#{cc.attrs.value}" values="#{cc.attrs.values}" />
     </composite:implementation>
 </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/jsf-ri/systest/web/resources/composite/nesting9.xhtml b/jsf-ri/systest/web/resources/composite/nesting9.xhtml
index 908884b..489e803 100644
--- a/jsf-ri/systest/web/resources/composite/nesting9.xhtml
+++ b/jsf-ri/systest/web/resources/composite/nesting9.xhtml
@@ -1,41 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
- Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
 
- Contributor(s):
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html
       PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
@@ -64,4 +69,4 @@
         </c:choose>
     </composite:implementation>
 </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/jsf-ri/systest/web/resources/composite/notrequired.xhtml b/jsf-ri/systest/web/resources/composite/notrequired.xhtml
index 16d1273..078f8ec 100644
--- a/jsf-ri/systest/web/resources/composite/notrequired.xhtml
+++ b/jsf-ri/systest/web/resources/composite/notrequired.xhtml
@@ -1,40 +1,45 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:h="http://java.sun.com/jsf/html"
diff --git a/jsf-ri/systest/web/resources/composite/renderFacetRequiredFalse.xhtml b/jsf-ri/systest/web/resources/composite/renderFacetRequiredFalse.xhtml
index bb8ab1b..a3676c6 100644
--- a/jsf-ri/systest/web/resources/composite/renderFacetRequiredFalse.xhtml
+++ b/jsf-ri/systest/web/resources/composite/renderFacetRequiredFalse.xhtml
@@ -1,40 +1,45 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:h="http://java.sun.com/jsf/html"
diff --git a/jsf-ri/systest/web/resources/composite/renderFacetRequiredTrue.xhtml b/jsf-ri/systest/web/resources/composite/renderFacetRequiredTrue.xhtml
index c0e5b45..4717dee 100644
--- a/jsf-ri/systest/web/resources/composite/renderFacetRequiredTrue.xhtml
+++ b/jsf-ri/systest/web/resources/composite/renderFacetRequiredTrue.xhtml
@@ -1,40 +1,45 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:h="http://java.sun.com/jsf/html"
diff --git a/jsf-ri/systest/web/resources/composite/required.xhtml b/jsf-ri/systest/web/resources/composite/required.xhtml
index 8183537..8d6eba5 100644
--- a/jsf-ri/systest/web/resources/composite/required.xhtml
+++ b/jsf-ri/systest/web/resources/composite/required.xhtml
@@ -1,40 +1,45 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:h="http://java.sun.com/jsf/html"
diff --git a/jsf-ri/systest/web/resources/composite/required01.xhtml b/jsf-ri/systest/web/resources/composite/required01.xhtml
index 6aeb53b..9bf35f6 100644
--- a/jsf-ri/systest/web/resources/composite/required01.xhtml
+++ b/jsf-ri/systest/web/resources/composite/required01.xhtml
@@ -1,40 +1,45 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:h="http://java.sun.com/jsf/html"
diff --git a/jsf-ri/systest/web/resources/composite/requiredFacet.xhtml b/jsf-ri/systest/web/resources/composite/requiredFacet.xhtml
index 48ca93d..2921ee2 100644
--- a/jsf-ri/systest/web/resources/composite/requiredFacet.xhtml
+++ b/jsf-ri/systest/web/resources/composite/requiredFacet.xhtml
@@ -1,40 +1,45 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:h="http://java.sun.com/jsf/html"
diff --git a/jsf-ri/systest/web/resources/composite/resourceDependencyComponent.xhtml b/jsf-ri/systest/web/resources/composite/resourceDependencyComponent.xhtml
index da79954..f6b352b 100644
--- a/jsf-ri/systest/web/resources/composite/resourceDependencyComponent.xhtml
+++ b/jsf-ri/systest/web/resources/composite/resourceDependencyComponent.xhtml
@@ -1,40 +1,45 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:h="http://java.sun.com/jsf/html"
diff --git a/jsf-ri/systest/web/resources/composite/showClientId01.xhtml b/jsf-ri/systest/web/resources/composite/showClientId01.xhtml
index e006172..6f97352 100644
--- a/jsf-ri/systest/web/resources/composite/showClientId01.xhtml
+++ b/jsf-ri/systest/web/resources/composite/showClientId01.xhtml
@@ -1,40 +1,45 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:h="http://java.sun.com/jsf/html"
diff --git a/jsf-ri/systest/web/resources/composite/simpleCompositeComponent.xhtml b/jsf-ri/systest/web/resources/composite/simpleCompositeComponent.xhtml
new file mode 100644
index 0000000..4519bb9
--- /dev/null
+++ b/jsf-ri/systest/web/resources/composite/simpleCompositeComponent.xhtml
@@ -0,0 +1,15 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:cc="http://java.sun.com/jsf/composite"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <!-- INTERFACE -->
+    <cc:interface>
+        <cc:attribute preferred="true" name="value" type="String"/>
+    </cc:interface>
+
+    <!-- IMPLEMENTATION -->
+    <cc:implementation>
+        <h:inputText  value="#{cc.attrs.value}"/>
+    </cc:implementation>
+</html>
diff --git a/jsf-ri/systest/web/resources/composite/validator1.xhtml b/jsf-ri/systest/web/resources/composite/validator1.xhtml
index 798eeea..3d1bb2e 100644
--- a/jsf-ri/systest/web/resources/composite/validator1.xhtml
+++ b/jsf-ri/systest/web/resources/composite/validator1.xhtml
@@ -1,40 +1,45 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:h="http://java.sun.com/jsf/html"
diff --git a/jsf-ri/systest/web/resources/composite/validator2.xhtml b/jsf-ri/systest/web/resources/composite/validator2.xhtml
index 94588aa..135e13a 100644
--- a/jsf-ri/systest/web/resources/composite/validator2.xhtml
+++ b/jsf-ri/systest/web/resources/composite/validator2.xhtml
@@ -1,40 +1,45 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:h="http://java.sun.com/jsf/html"
diff --git a/jsf-ri/systest/web/resources/composite/validator3.xhtml b/jsf-ri/systest/web/resources/composite/validator3.xhtml
index aadf02d..d485037 100644
--- a/jsf-ri/systest/web/resources/composite/validator3.xhtml
+++ b/jsf-ri/systest/web/resources/composite/validator3.xhtml
@@ -1,40 +1,45 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:h="http://java.sun.com/jsf/html"
diff --git a/jsf-ri/systest/web/resources/composite/validator4.xhtml b/jsf-ri/systest/web/resources/composite/validator4.xhtml
index bf755f0..313946d 100644
--- a/jsf-ri/systest/web/resources/composite/validator4.xhtml
+++ b/jsf-ri/systest/web/resources/composite/validator4.xhtml
@@ -1,40 +1,45 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:h="http://java.sun.com/jsf/html"
diff --git a/jsf-ri/systest/web/resources/composite/validatorWrapper1.xhtml b/jsf-ri/systest/web/resources/composite/validatorWrapper1.xhtml
index 7315215..5ce65e8 100644
--- a/jsf-ri/systest/web/resources/composite/validatorWrapper1.xhtml
+++ b/jsf-ri/systest/web/resources/composite/validatorWrapper1.xhtml
@@ -1,41 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
- Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
 
- Contributor(s):
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html
       PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
diff --git a/jsf-ri/systest/web/resources/composite/validatorWrapper2.xhtml b/jsf-ri/systest/web/resources/composite/validatorWrapper2.xhtml
index 1c5af42..a714914 100644
--- a/jsf-ri/systest/web/resources/composite/validatorWrapper2.xhtml
+++ b/jsf-ri/systest/web/resources/composite/validatorWrapper2.xhtml
@@ -1,41 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
- Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
 
- Contributor(s):
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html
       PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
diff --git a/jsf-ri/systest/web/resources/composite/validatorWrapper3.xhtml b/jsf-ri/systest/web/resources/composite/validatorWrapper3.xhtml
index 968bcc5..a9f31b7 100644
--- a/jsf-ri/systest/web/resources/composite/validatorWrapper3.xhtml
+++ b/jsf-ri/systest/web/resources/composite/validatorWrapper3.xhtml
@@ -1,41 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
- Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
 
- Contributor(s):
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html
       PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
diff --git a/jsf-ri/systest/web/resources/composite/validatorWrapper4.xhtml b/jsf-ri/systest/web/resources/composite/validatorWrapper4.xhtml
index 8d55a10..797981d 100644
--- a/jsf-ri/systest/web/resources/composite/validatorWrapper4.xhtml
+++ b/jsf-ri/systest/web/resources/composite/validatorWrapper4.xhtml
@@ -1,41 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
- Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
 
- Contributor(s):
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html
       PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
diff --git a/jsf-ri/systest/web/resources/composite/valueChangeSetPropertyActionListener.xhtml b/jsf-ri/systest/web/resources/composite/valueChangeSetPropertyActionListener.xhtml
index 8e51984..7b22851 100644
--- a/jsf-ri/systest/web/resources/composite/valueChangeSetPropertyActionListener.xhtml
+++ b/jsf-ri/systest/web/resources/composite/valueChangeSetPropertyActionListener.xhtml
@@ -1,40 +1,45 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:h="http://java.sun.com/jsf/html"
diff --git a/jsf-ri/systest/web/resources/composite/valueChangeWrapper1.xhtml b/jsf-ri/systest/web/resources/composite/valueChangeWrapper1.xhtml
index 8612593..17e6251 100644
--- a/jsf-ri/systest/web/resources/composite/valueChangeWrapper1.xhtml
+++ b/jsf-ri/systest/web/resources/composite/valueChangeWrapper1.xhtml
@@ -1,41 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
- Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
 
- Contributor(s):
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html
       PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
diff --git a/jsf-ri/systest/web/resources/composite/valueChangeWrapper2.xhtml b/jsf-ri/systest/web/resources/composite/valueChangeWrapper2.xhtml
index bf6dea2..3c3f09f 100644
--- a/jsf-ri/systest/web/resources/composite/valueChangeWrapper2.xhtml
+++ b/jsf-ri/systest/web/resources/composite/valueChangeWrapper2.xhtml
@@ -1,41 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
- Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
 
- Contributor(s):
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html
       PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
diff --git a/jsf-ri/systest/web/resources/composite/valueChangeWrapper3.xhtml b/jsf-ri/systest/web/resources/composite/valueChangeWrapper3.xhtml
index 6669dc2..c232e1c 100644
--- a/jsf-ri/systest/web/resources/composite/valueChangeWrapper3.xhtml
+++ b/jsf-ri/systest/web/resources/composite/valueChangeWrapper3.xhtml
@@ -1,41 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
- Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
 
- Contributor(s):
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html
       PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
diff --git a/jsf-ri/systest/web/resources/composite/valueChangeWrapper4.xhtml b/jsf-ri/systest/web/resources/composite/valueChangeWrapper4.xhtml
index 4cfb248..167ed4a 100644
--- a/jsf-ri/systest/web/resources/composite/valueChangeWrapper4.xhtml
+++ b/jsf-ri/systest/web/resources/composite/valueChangeWrapper4.xhtml
@@ -1,41 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
- Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
 
- Contributor(s):
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html
       PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
diff --git a/jsf-ri/systest/web/resources/composite/veDefaults.xhtml b/jsf-ri/systest/web/resources/composite/veDefaults.xhtml
new file mode 100644
index 0000000..0c7c42b
--- /dev/null
+++ b/jsf-ri/systest/web/resources/composite/veDefaults.xhtml
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:c="http://java.sun.com/jsp/jstl/core"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:composite="http://java.sun.com/jsf/composite"
+      xmlns:ez="http://java.sun.com/jsf/composite/composite">
+<head>
+    <title></title>
+</head>
+<body>
+    <composite:interface>
+        <composite:attribute name="a1" default="#{compositeBean.text}" />
+    </composite:interface>
+    <composite:implementation>
+        <h:form id="form1">
+            <h:outputText value="#{cc.attrs.a1}"/>
+        </h:form>
+    </composite:implementation>
+</body>
+</html>
diff --git a/jsf-ri/systest/web/resources/composite/veDefaults_1966.xhtml b/jsf-ri/systest/web/resources/composite/veDefaults_1966.xhtml
new file mode 100644
index 0000000..21ae8f5
--- /dev/null
+++ b/jsf-ri/systest/web/resources/composite/veDefaults_1966.xhtml
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<extension xmlns="http://java.sun.com/jsf/composite"
+        xmlns:h="http://java.sun.com/jsf/html"
+        xmlns:f="http://java.sun.com/jsf/core">
+
+    <interface>
+        <attribute name="items" required="false" default="#{compositeBean.defaultValueList}" type="java.util.List"/>
+    </interface>
+
+    <implementation>
+        <h:dataTable value="#{cc.attrs.items}" var="item" id="DataTable">
+            <h:column>
+                <h:outputText value="---#{item}---" />
+            </h:column>
+        </h:dataTable>
+    </implementation>
+
+</extension>
\ No newline at end of file
diff --git a/jsf-ri/systest/web/resources/composite/veDefaults_1966_Color.xhtml b/jsf-ri/systest/web/resources/composite/veDefaults_1966_Color.xhtml
new file mode 100644
index 0000000..50930aa
--- /dev/null
+++ b/jsf-ri/systest/web/resources/composite/veDefaults_1966_Color.xhtml
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<extension xmlns="http://java.sun.com/jsf/composite"
+        xmlns:h="http://java.sun.com/jsf/html"
+        xmlns:f="http://java.sun.com/jsf/core">
+
+    <interface>
+        <attribute name="color" required="false" default="200,100,50" type="java.awt.Color"/>
+    </interface>
+
+    <implementation>
+        <h:outputText id="Output" value="---#{cc.attrs.color}---" />
+    </implementation>
+
+</extension>
\ No newline at end of file
diff --git a/jsf-ri/systest/web/resources/composite/veDefaults_1986.xhtml b/jsf-ri/systest/web/resources/composite/veDefaults_1986.xhtml
new file mode 100644
index 0000000..f643209
--- /dev/null
+++ b/jsf-ri/systest/web/resources/composite/veDefaults_1986.xhtml
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<extension xmlns="http://java.sun.com/jsf/composite"
+           xmlns:html="http://www.w3.org/1999/xhtml"
+           xmlns:h="http://java.sun.com/jsf/html"
+           xmlns:f="http://java.sun.com/jsf/core">
+
+    <interface>
+        <attribute name="value" required="true"/>
+    </interface>
+
+    <implementation>
+        <h:inputText id="Input" value="#{cc.attrs.value}"/>
+    </implementation>
+
+</extension>
\ No newline at end of file
diff --git a/jsf-ri/systest/web/resources/composite/verifyUserIsInRole.xhtml b/jsf-ri/systest/web/resources/composite/verifyUserIsInRole.xhtml
new file mode 100644
index 0000000..9e74f01
--- /dev/null
+++ b/jsf-ri/systest/web/resources/composite/verifyUserIsInRole.xhtml
@@ -0,0 +1,18 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+    xmlns:f="http://java.sun.com/jsf/core"
+    xmlns:cc="http://java.sun.com/jsf/composite">
+
+    <cc:interface componentType="javaTopLevelComponent">
+      
+  </cc:interface>
+
+    <cc:implementation>
+
+      <f:event type="preRenderView"
+               listener="#{cc.forwardIfNotInRole}" />
+      
+  </cc:implementation>
+</html>
diff --git a/jsf-ri/systest/web/resources/composite/wrapper.xhtml b/jsf-ri/systest/web/resources/composite/wrapper.xhtml
index a78702c..0f23af3 100644
--- a/jsf-ri/systest/web/resources/composite/wrapper.xhtml
+++ b/jsf-ri/systest/web/resources/composite/wrapper.xhtml
@@ -1,41 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html
       PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
diff --git a/jsf-ri/systest/web/resources/ezbehaviors/compositeTest.xhtml b/jsf-ri/systest/web/resources/ezbehaviors/compositeTest.xhtml
index a3bd201..b5f653c 100644
--- a/jsf-ri/systest/web/resources/ezbehaviors/compositeTest.xhtml
+++ b/jsf-ri/systest/web/resources/ezbehaviors/compositeTest.xhtml
@@ -1,41 +1,46 @@
 <?xml version = "1.0" encoding = "UTF-8"?>
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
- Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
 
- Contributor(s):
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:h="http://java.sun.com/jsf/html"
       xmlns:f="http://java.sun.com/jsf/core"
@@ -49,14 +54,7 @@
 <composite:interface name="composite"
                      displayName="BehaviorHandler composite component test">
     <composite:attribute name="commandAction"
-                         method-signature="String f1()" targets="command">
-    </composite:attribute>
-    <composite:attribute name="defferedAction">
-        <composite:deferred-method>
-            <composite:method-signature>
-                java.lang.Object action()
-            </composite:method-signature>
-        </composite:deferred-method>
+                         method-signature="String f1()">
     </composite:attribute>
     <composite:attribute name="value" targets="input"/>
     <composite:editableValueHolder name="input"/>
@@ -71,7 +69,7 @@
         <h:commandButton id="cancel" value="Cancel"/>
         <f:subview id="sub">
             <h:panelGroup id="group">
-                <h:commandButton id="command" value="Ok"
+                <h:commandButton id="commandAction" value="Ok"
                                  action="#{cc.attrs.commandAction}">
                 </h:commandButton>
             </h:panelGroup>
diff --git a/jsf-ri/systest/web/resources/i_spec_599_composite/i_spec_599_composite.xhtml b/jsf-ri/systest/web/resources/i_spec_599_composite/i_spec_599_composite.xhtml
new file mode 100644
index 0000000..213c9cd
--- /dev/null
+++ b/jsf-ri/systest/web/resources/i_spec_599_composite/i_spec_599_composite.xhtml
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+	xmlns:h="http://java.sun.com/jsf/html"
+	xmlns:ui="http://java.sun.com/jsf/facelets"
+	xmlns:composite="http://java.sun.com/jsf/composite">
+<h:body>
+
+	<composite:interface>
+           <composite:attribute name="customAttr" default="customAttrValue" />
+	</composite:interface>
+
+	<composite:implementation>
+		<p>This is the composite component</p>
+	</composite:implementation>
+
+</h:body>
+</html>
diff --git a/jsf-ri/systest/web/resources/i_spec_599_composite_taglib/i_spec_599_composite_taglib.xhtml b/jsf-ri/systest/web/resources/i_spec_599_composite_taglib/i_spec_599_composite_taglib.xhtml
new file mode 100644
index 0000000..e137d45
--- /dev/null
+++ b/jsf-ri/systest/web/resources/i_spec_599_composite_taglib/i_spec_599_composite_taglib.xhtml
@@ -0,0 +1,23 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+          "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+	  xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:cc="http://java.sun.com/jsf/composite">
+<head>
+  <title></title>
+</head>
+
+<body>
+
+	<cc:interface>
+
+           <cc:attribute name="customAttr2" default="customAttrValue2" />
+
+	</cc:interface>
+	<cc:implementation>
+		<div id="#{cc.clientId}">Test</div>
+	</cc:implementation> 
+</body>
+
+</html>
diff --git a/jsf-ri/systest/web/resources/simple.css b/jsf-ri/systest/web/resources/simple.css
index 52fa2d8..dcb36dc 100644
--- a/jsf-ri/systest/web/resources/simple.css
+++ b/jsf-ri/systest/web/resources/simple.css
@@ -1,3 +1,43 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
 .h1 {
     color: red
-}
\ No newline at end of file
+}
diff --git a/jsf-ri/systest/web/resources/tmo/block.xhtml b/jsf-ri/systest/web/resources/tmo/block.xhtml
new file mode 100644
index 0000000..cfb0365
--- /dev/null
+++ b/jsf-ri/systest/web/resources/tmo/block.xhtml
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+	xmlns:h="http://java.sun.com/jsf/html"
+	xmlns:ui="http://java.sun.com/jsf/facelets"
+	xmlns:composite="http://java.sun.com/jsf/composite">
+<h:body>
+
+	<composite:interface>
+		<composite:attribute name="collapsable" required="false" 
+default="false"/>
+	</composite:interface>
+
+	<composite:implementation>
+		<h:outputText value="collapsable = #{cc.attrs.collapsable}" />
+	</composite:implementation>
+
+</h:body>
+</html>
diff --git a/jsf-ri/systest/web/selectItemEscape.jsp b/jsf-ri/systest/web/selectItemEscape.jsp
index bdd43ef..dc61b39 100644
--- a/jsf-ri/systest/web/selectItemEscape.jsp
+++ b/jsf-ri/systest/web/selectItemEscape.jsp
@@ -1,65 +1,48 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
 \<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 
-<!--
- The contents of this file are subject to the terms
- of the Common Development and Distribution License
- (the License). You may not use this file except in
- compliance with the License.
- 
- You can obtain a copy of the License at
- https://javaserverfaces.dev.java.net/CDDL.html or
- legal/CDDLv1.0.txt. 
- See the License for the specific language governing
- permission and limitations under the License.
- 
- When distributing Covered Code, include this CDDL
- Header Notice in each file and include the License file
- at legal/CDDLv1.0.txt.    
- If applicable, add the following below the CDDL Header,
- with the fields enclosed by brackets [] replaced by
- your own identifying information:
- "Portions Copyrighted [year] [name of copyright owner]"
- 
- [Name of File] [ver.__] [Date]
- 
- Copyright 2005 Sun Microsystems Inc. All Rights Reserved
--->
+
 
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
   <head> <title>Test SelectItem with escape true and false</title> </head>
diff --git a/jsf-ri/systest/web/session-invalidator.jsp b/jsf-ri/systest/web/session-invalidator.jsp
index 1f35665..76dc3c5 100644
--- a/jsf-ri/systest/web/session-invalidator.jsp
+++ b/jsf-ri/systest/web/session-invalidator.jsp
@@ -1,43 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
+
 
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
diff --git a/jsf-ri/systest/web/setApplicationMapProperty.xhtml b/jsf-ri/systest/web/setApplicationMapProperty.xhtml
index 19620d6..38abc25 100644
--- a/jsf-ri/systest/web/setApplicationMapProperty.xhtml
+++ b/jsf-ri/systest/web/setApplicationMapProperty.xhtml
@@ -1,40 +1,45 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:h="http://java.sun.com/jsf/html"
diff --git a/jsf-ri/systest/web/standard/autocomplete.jsp b/jsf-ri/systest/web/standard/autocomplete.jsp
index f9d24a9..7cd9fde 100644
--- a/jsf-ri/systest/web/standard/autocomplete.jsp
+++ b/jsf-ri/systest/web/standard/autocomplete.jsp
@@ -1,37 +1,43 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
diff --git a/jsf-ri/systest/web/standard/checkboxSubmittedValue.xhtml b/jsf-ri/systest/web/standard/checkboxSubmittedValue.xhtml
deleted file mode 100644
index 9b9b4ba..0000000
--- a/jsf-ri/systest/web/standard/checkboxSubmittedValue.xhtml
+++ /dev/null
@@ -1,55 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-      <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
--->
-<!DOCTYPE html
-      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"
-      xmlns:h="http://java.sun.com/jsf/html">
-<head>
-    <title>checkboxSubmittedValue</title>
-</head>
-<body>
-   <h:form prependId="false">
-            <h:selectBooleanCheckbox id="box1" value="#{sessionScope.box1}" />
-            <h:selectBooleanCheckbox id="box2"
-                                     value="#{sessionScope.box2}"
-                                     immediate="true"
-                                     valueChangeListener="#{valueChangeListenerBean.valueChange}"
-                                     onclick="this.form.submit()"/>
-    </h:form>
-</body>
-</html>
\ No newline at end of file
diff --git a/jsf-ri/systest/web/standard/clinknoform.jsp b/jsf-ri/systest/web/standard/clinknoform.jsp
index 831ff00..ab43125 100644
--- a/jsf-ri/systest/web/standard/clinknoform.jsp
+++ b/jsf-ri/systest/web/standard/clinknoform.jsp
@@ -1,37 +1,43 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
@@ -56,4 +62,4 @@
 
   </f:view>
   </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/jsf-ri/systest/web/standard/component01.jsp b/jsf-ri/systest/web/standard/component01.jsp
index 7f66313..8c270f9 100644
--- a/jsf-ri/systest/web/standard/component01.jsp
+++ b/jsf-ri/systest/web/standard/component01.jsp
@@ -1,37 +1,43 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
diff --git a/jsf-ri/systest/web/standard/dtablecolumnclasses.jsp b/jsf-ri/systest/web/standard/dtablecolumnclasses.jsp
index 8eb36ec..de61943 100644
--- a/jsf-ri/systest/web/standard/dtablecolumnclasses.jsp
+++ b/jsf-ri/systest/web/standard/dtablecolumnclasses.jsp
@@ -1,37 +1,43 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
 <%@ page import="java.util.List" %>
diff --git a/jsf-ri/systest/web/standard/dtablemultiforms.jsp b/jsf-ri/systest/web/standard/dtablemultiforms.jsp
index 3d5b782..9ad78d0 100644
--- a/jsf-ri/systest/web/standard/dtablemultiforms.jsp
+++ b/jsf-ri/systest/web/standard/dtablemultiforms.jsp
@@ -1,37 +1,43 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
@@ -59,4 +65,4 @@
     </h:form>
 </f:view>
 </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/jsf-ri/systest/web/standard/dtablerowclasses.jsp b/jsf-ri/systest/web/standard/dtablerowclasses.jsp
index 5175aab..22f4eff 100644
--- a/jsf-ri/systest/web/standard/dtablerowclasses.jsp
+++ b/jsf-ri/systest/web/standard/dtablerowclasses.jsp
@@ -1,37 +1,43 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
+    Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
 
- Contributor(s):
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
 --%>
 
 <%@ page import="java.util.List" %>
@@ -69,10 +75,10 @@
     <h:dataTable value="#{requestScope.list}"
                  var="row"
                  rowClasses="b1,b2">
-        <h:column>
+        <h:column rowHeader="true">
             <h:outputText value="#{row[0]}"/>
         </h:column>
     </h:dataTable>
 </f:view>
 </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/jsf-ri/systest/web/standard/dtablevarnotoverwritten.jsp b/jsf-ri/systest/web/standard/dtablevarnotoverwritten.jsp
index 5492974..4b04b7a 100644
--- a/jsf-ri/systest/web/standard/dtablevarnotoverwritten.jsp
+++ b/jsf-ri/systest/web/standard/dtablevarnotoverwritten.jsp
@@ -1,37 +1,43 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
 <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
diff --git a/jsf-ri/systest/web/standard/dtablewithemptybody.jsp b/jsf-ri/systest/web/standard/dtablewithemptybody.jsp
index f85034d..bf2ca36 100644
--- a/jsf-ri/systest/web/standard/dtablewithemptybody.jsp
+++ b/jsf-ri/systest/web/standard/dtablewithemptybody.jsp
@@ -1,37 +1,43 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
 
- Contributor(s):
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
 --%>
 
 <%@ page import="java.util.ArrayList" %>
@@ -99,4 +105,4 @@
     </h:panelGrid>
 </f:view>
 </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/jsf-ri/systest/web/standard/formlayouttemplates.xhtml b/jsf-ri/systest/web/standard/formlayouttemplates.xhtml
new file mode 100644
index 0000000..7b532c3
--- /dev/null
+++ b/jsf-ri/systest/web/standard/formlayouttemplates.xhtml
@@ -0,0 +1,22 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+	xmlns:ui="http://java.sun.com/jsf/facelets"
+	xmlns:h="http://java.sun.com/jsf/html"
+	xmlns:f="http://java.sun.com/jsf/core"
+	xmlns:fl="http://mojarra.dev.java.net/formlayout">
+
+<ui:component>
+	<fl:layout>
+    <ui:define name="title">Page defined title</ui:define>
+    
+		<ui:define name="content">
+		  Page defined content
+		  <h:messages />
+			<ui:include src="include/formomitted_includedcontent.xhtml" />
+		</ui:define>
+		
+	</fl:layout>
+</ui:component>
+
+</html>
diff --git a/jsf-ri/systest/web/standard/formnotomitted.xhtml b/jsf-ri/systest/web/standard/formnotomitted.xhtml
new file mode 100644
index 0000000..3dc64d0
--- /dev/null
+++ b/jsf-ri/systest/web/standard/formnotomitted.xhtml
@@ -0,0 +1,16 @@
+<!DOCTYPE html
+     PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"
+      xmlns:h="http://java.sun.com/jsf/html">
+<head>
+    <title>Hello JSF 2!</title>
+</head>
+<body>
+    <h:form>
+<h:inputText id="string"
+                 value="Hello"/>
+<h:commandButton id="command" value="submit"/>
+    </h:form>
+</body>
+</html>
\ No newline at end of file
diff --git a/jsf-ri/systest/web/standard/formomitted.xhtml b/jsf-ri/systest/web/standard/formomitted.xhtml
new file mode 100644
index 0000000..4ad3e4d
--- /dev/null
+++ b/jsf-ri/systest/web/standard/formomitted.xhtml
@@ -0,0 +1,14 @@
+<!DOCTYPE html
+     PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"
+      xmlns:h="http://java.sun.com/jsf/html">
+<head>
+    <title>Hello JSF 2!</title>
+</head>
+<body>
+<h:inputText id="string"
+                 value="Hello"/>
+<h:commandButton id="command" value="submit"/>
+</body>
+</html>
\ No newline at end of file
diff --git a/jsf-ri/systest/web/standard/formomittedforcc.xhtml b/jsf-ri/systest/web/standard/formomittedforcc.xhtml
new file mode 100644
index 0000000..6eca450
--- /dev/null
+++ b/jsf-ri/systest/web/standard/formomittedforcc.xhtml
@@ -0,0 +1,14 @@
+<!DOCTYPE html
+     PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:mycc="http://java.sun.com/jsf/composite/composite">
+<head>
+    <title>Hello JSF 2!</title>
+</head>
+<body>
+    <mycc:simpleCompositeComponent value="#{hello.fname}"/> <br/>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/jsf-ri/systest/web/standard/include/formomitted_includedcontent.xhtml b/jsf-ri/systest/web/standard/include/formomitted_includedcontent.xhtml
new file mode 100644
index 0000000..d0130c0
--- /dev/null
+++ b/jsf-ri/systest/web/standard/include/formomitted_includedcontent.xhtml
@@ -0,0 +1,58 @@
+<?xml version = "1.0" encoding = "UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+
+<ui:component>
+  
+  <h:panelGrid columns="2">
+    <h:outputLabel value="Some input" for="input"/>
+    <h:inputText id="input" value="Hello"/>
+  </h:panelGrid>
+  <h:commandButton value="Submit" />
+  
+</ui:component>
+</html>
diff --git a/jsf-ri/systest/web/standard/linkTypeAttribute.xhtml b/jsf-ri/systest/web/standard/linkTypeAttribute.xhtml
index 7ff1668..a07209f 100644
--- a/jsf-ri/systest/web/standard/linkTypeAttribute.xhtml
+++ b/jsf-ri/systest/web/standard/linkTypeAttribute.xhtml
@@ -1,39 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
-      <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
+
 <!DOCTYPE html
       PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
@@ -48,4 +55,4 @@
         <h:outputLink id="link" type="type" value="output link" />
     </h:form>
 </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/jsf-ri/systest/web/standard/messages01.jsp b/jsf-ri/systest/web/standard/messages01.jsp
index 1d21ab8..4fb5204 100644
--- a/jsf-ri/systest/web/standard/messages01.jsp
+++ b/jsf-ri/systest/web/standard/messages01.jsp
@@ -1,37 +1,43 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
diff --git a/jsf-ri/systest/web/standard/messages02.jsp b/jsf-ri/systest/web/standard/messages02.jsp
index 401fd01..23b2559 100644
--- a/jsf-ri/systest/web/standard/messages02.jsp
+++ b/jsf-ri/systest/web/standard/messages02.jsp
@@ -1,37 +1,43 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
 <%@ page contentType="text/html" %>
diff --git a/jsf-ri/systest/web/standard/metadataandformomitted.xhtml b/jsf-ri/systest/web/standard/metadataandformomitted.xhtml
new file mode 100644
index 0000000..ccee05c
--- /dev/null
+++ b/jsf-ri/systest/web/standard/metadataandformomitted.xhtml
@@ -0,0 +1,20 @@
+<!DOCTYPE html
+     PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"
+      xmlns:f="http://java.sun.com/jsf/core" 
+      xmlns:h="http://java.sun.com/jsf/html">
+<h:head>
+    <title>Hello JSF 2!</title>
+
+      <f:viewParam name="q" value="Current Problem"/>
+
+</h:head>
+<h:body>
+
+<h:inputText id="string"
+                 value="Hello"/>
+<h:commandButton id="command" value="submit"/>
+
+</h:body>
+</html>
\ No newline at end of file
diff --git a/jsf-ri/systest/web/standard/metadataomitted.xhtml b/jsf-ri/systest/web/standard/metadataomitted.xhtml
new file mode 100644
index 0000000..4fe3484
--- /dev/null
+++ b/jsf-ri/systest/web/standard/metadataomitted.xhtml
@@ -0,0 +1,20 @@
+<!DOCTYPE html
+     PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"
+      xmlns:f="http://java.sun.com/jsf/core" 
+      xmlns:h="http://java.sun.com/jsf/html">
+<h:head>
+    <title>Hello JSF 2!</title>
+
+      <f:viewParam name="q" value="Current Problem"/>
+
+</h:head>
+<h:body>
+<h:form>
+<h:inputText id="string"
+                 value="Hello"/>
+<h:commandButton id="command" value="submit"/>
+</h:form>
+</h:body>
+</html>
\ No newline at end of file
diff --git a/jsf-ri/systest/web/standard/nav1.xhtml b/jsf-ri/systest/web/standard/nav1.xhtml
index 1a9a7c0..a59c4b1 100644
--- a/jsf-ri/systest/web/standard/nav1.xhtml
+++ b/jsf-ri/systest/web/standard/nav1.xhtml
@@ -1,41 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html
       PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
@@ -46,4 +51,4 @@
 <body>
   nav1
 </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/jsf-ri/systest/web/standard/nav2.xhtml b/jsf-ri/systest/web/standard/nav2.xhtml
index 7a796ce..39cf0a5 100644
--- a/jsf-ri/systest/web/standard/nav2.xhtml
+++ b/jsf-ri/systest/web/standard/nav2.xhtml
@@ -1,41 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html
       PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
@@ -46,4 +51,4 @@
 <body>
   nav2
 </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/jsf-ri/systest/web/standard/outcometarget01.xhtml b/jsf-ri/systest/web/standard/outcometarget01.xhtml
index 34c566e..dab2f65 100644
--- a/jsf-ri/systest/web/standard/outcometarget01.xhtml
+++ b/jsf-ri/systest/web/standard/outcometarget01.xhtml
@@ -1,38 +1,44 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
 
- Contributor(s):
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
 -->
 
 <!DOCTYPE html
@@ -85,4 +91,4 @@
         <f:param name="id" value="page" disable="true"/>
     </h:link> 
 </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/jsf-ri/systest/web/standard/pgridcolumnclasses.jsp b/jsf-ri/systest/web/standard/pgridcolumnclasses.jsp
index 31e53bc..c67edd3 100644
--- a/jsf-ri/systest/web/standard/pgridcolumnclasses.jsp
+++ b/jsf-ri/systest/web/standard/pgridcolumnclasses.jsp
@@ -1,37 +1,43 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
diff --git a/jsf-ri/systest/web/standard/selectOneLiteralHideNoSelectionOption.xhtml b/jsf-ri/systest/web/standard/selectOneLiteralHideNoSelectionOption.xhtml
index 3562f04..9b55507 100644
--- a/jsf-ri/systest/web/standard/selectOneLiteralHideNoSelectionOption.xhtml
+++ b/jsf-ri/systest/web/standard/selectOneLiteralHideNoSelectionOption.xhtml
@@ -1,41 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
- Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
 
- Contributor(s):
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html
       PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
diff --git a/jsf-ri/systest/web/standard/selectOneLiteralHideNoSelectionOptionInSelectItemGroup.xhtml b/jsf-ri/systest/web/standard/selectOneLiteralHideNoSelectionOptionInSelectItemGroup.xhtml
index f59828c..d1b8db3 100644
--- a/jsf-ri/systest/web/standard/selectOneLiteralHideNoSelectionOptionInSelectItemGroup.xhtml
+++ b/jsf-ri/systest/web/standard/selectOneLiteralHideNoSelectionOptionInSelectItemGroup.xhtml
@@ -1,41 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
- <!--
+<!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
- Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
 
- Contributor(s):
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html
       PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
diff --git a/jsf-ri/systest/web/standard/selectOneValueExpressionHideNoSelectionOption.xhtml b/jsf-ri/systest/web/standard/selectOneValueExpressionHideNoSelectionOption.xhtml
index 1f42f4e..86ef7e9 100644
--- a/jsf-ri/systest/web/standard/selectOneValueExpressionHideNoSelectionOption.xhtml
+++ b/jsf-ri/systest/web/standard/selectOneValueExpressionHideNoSelectionOption.xhtml
@@ -1,41 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
- Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
 
- Contributor(s):
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html
       PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
@@ -73,4 +78,4 @@
 </h:form>
 <h:messages id="messages"/>
 </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/jsf-ri/systest/web/standard/selectmany01.jsp b/jsf-ri/systest/web/standard/selectmany01.jsp
index 418e0b4..f0708a0 100644
--- a/jsf-ri/systest/web/standard/selectmany01.jsp
+++ b/jsf-ri/systest/web/standard/selectmany01.jsp
@@ -1,37 +1,43 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
 <%@ page contentType="text/html" %>
diff --git a/jsf-ri/systest/web/standard/selectmany02.jsp b/jsf-ri/systest/web/standard/selectmany02.jsp
index 1866c3a..ddd46d7 100644
--- a/jsf-ri/systest/web/standard/selectmany02.jsp
+++ b/jsf-ri/systest/web/standard/selectmany02.jsp
@@ -1,38 +1,45 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
+
 <%@ page contentType="text/html" %>
 <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
 <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
diff --git a/jsf-ri/systest/web/standard/selectmany03.jsp b/jsf-ri/systest/web/standard/selectmany03.jsp
index 169f77d..51695cd 100644
--- a/jsf-ri/systest/web/standard/selectmany03.jsp
+++ b/jsf-ri/systest/web/standard/selectmany03.jsp
@@ -1,38 +1,45 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
+
 <%@ page contentType="text/html" %>
 <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
 <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
@@ -57,4 +64,4 @@
       <f:selectItem itemValue="3" itemLabel="Accepted" />
       <f:selectItem itemValue="4" itemLabel="Rejected" itemDisabled="true" />
     </h:selectManyCheckbox> 
-</f:view>
\ No newline at end of file
+</f:view>
diff --git a/jsf-ri/systest/web/standard/selectmany04.jsp b/jsf-ri/systest/web/standard/selectmany04.jsp
index 30fa5ac..0f8852f 100644
--- a/jsf-ri/systest/web/standard/selectmany04.jsp
+++ b/jsf-ri/systest/web/standard/selectmany04.jsp
@@ -1,38 +1,45 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
+
 <%@ page contentType="text/html" %>
 <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
 <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
diff --git a/jsf-ri/systest/web/standard/selectmany05.xhtml b/jsf-ri/systest/web/standard/selectmany05.xhtml
index b862dd9..f4e0b15 100644
--- a/jsf-ri/systest/web/standard/selectmany05.xhtml
+++ b/jsf-ri/systest/web/standard/selectmany05.xhtml
@@ -1,39 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
+
 <!DOCTYPE html
       PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
diff --git a/jsf-ri/systest/web/standard/selectonemanyenum.jsp b/jsf-ri/systest/web/standard/selectonemanyenum.jsp
index 48c58cb..4e1b7ff 100644
--- a/jsf-ri/systest/web/standard/selectonemanyenum.jsp
+++ b/jsf-ri/systest/web/standard/selectonemanyenum.jsp
@@ -1,37 +1,43 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
 <%@ page contentType="text/html" %>
diff --git a/jsf-ri/systest/web/standard/submit.xhtml b/jsf-ri/systest/web/standard/submit.xhtml
new file mode 100644
index 0000000..d71a355
--- /dev/null
+++ b/jsf-ri/systest/web/standard/submit.xhtml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html
+        PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"
+        xmlns:h="http://java.sun.com/jsf/html">
+<head>
+    <title>Hello</title>
+</head>
+<body>
+<h:form id="form">
+
+ <h:outputText id="string"
+                 value="hello"/>
+</h:form>
+</body>
+</html>
\ No newline at end of file
diff --git a/jsf-ri/systest/web/state/dynamicAddition.xhtml b/jsf-ri/systest/web/state/dynamicAddition.xhtml
index 520d34b..afd4f08 100644
--- a/jsf-ri/systest/web/state/dynamicAddition.xhtml
+++ b/jsf-ri/systest/web/state/dynamicAddition.xhtml
@@ -1,40 +1,45 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:h="http://java.sun.com/jsf/html"
diff --git a/jsf-ri/systest/web/state/dynamicAddition2.xhtml b/jsf-ri/systest/web/state/dynamicAddition2.xhtml
index 8a3058b..481a705 100644
--- a/jsf-ri/systest/web/state/dynamicAddition2.xhtml
+++ b/jsf-ri/systest/web/state/dynamicAddition2.xhtml
@@ -1,41 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
-      <!--
-
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"
@@ -52,4 +57,4 @@
     <h:commandButton id="submit" value="submit" />
 </h:form>
 </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/jsf-ri/systest/web/state/dynamicAdditionDeletion.xhtml b/jsf-ri/systest/web/state/dynamicAdditionDeletion.xhtml
index 85574eb..1d97d80 100644
--- a/jsf-ri/systest/web/state/dynamicAdditionDeletion.xhtml
+++ b/jsf-ri/systest/web/state/dynamicAdditionDeletion.xhtml
@@ -1,41 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
-      <!--
-
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"
diff --git a/jsf-ri/systest/web/state/dynamicAdditionTransientSubTree.xhtml b/jsf-ri/systest/web/state/dynamicAdditionTransientSubTree.xhtml
index 497e6d9..c487a0d 100644
--- a/jsf-ri/systest/web/state/dynamicAdditionTransientSubTree.xhtml
+++ b/jsf-ri/systest/web/state/dynamicAdditionTransientSubTree.xhtml
@@ -1,41 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 2010 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:h="http://java.sun.com/jsf/html"
@@ -51,4 +56,4 @@
         <h:messages />
     </h:form>
 </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/jsf-ri/systest/web/state/dynamicDeletion.xhtml b/jsf-ri/systest/web/state/dynamicDeletion.xhtml
index 153ecdf..94040d6 100644
--- a/jsf-ri/systest/web/state/dynamicDeletion.xhtml
+++ b/jsf-ri/systest/web/state/dynamicDeletion.xhtml
@@ -1,40 +1,45 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:h="http://java.sun.com/jsf/html"
diff --git a/jsf-ri/systest/web/state/isSavingState.xhtml b/jsf-ri/systest/web/state/isSavingState.xhtml
new file mode 100644
index 0000000..fdc5488
--- /dev/null
+++ b/jsf-ri/systest/web/state/isSavingState.xhtml
@@ -0,0 +1,69 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ez="http://java.sun.com/jsf/composite/composite">
+<f:view afterPhase="#{captureIsSavingStateValueBean.afterPhase}"
+        beforePhase="#{captureIsSavingStateValueBean.beforePhase}">
+<h:head>
+<title>IsSavingState</title>
+</h:head>
+
+<h:body>
+
+<h:form prependId="false" id="form">
+
+    <ez:captureIsSavingStateValue />
+    <h:commandButton id="next" value="next" action="isSavingState2" />
+
+
+</h:form>
+
+
+</h:body>
+
+</f:view>
+
+</html>
diff --git a/jsf-ri/systest/web/state/isSavingState2.xhtml b/jsf-ri/systest/web/state/isSavingState2.xhtml
new file mode 100644
index 0000000..940fb03
--- /dev/null
+++ b/jsf-ri/systest/web/state/isSavingState2.xhtml
@@ -0,0 +1,64 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+<h:head>
+<title>IsSavingState2</title>
+</h:head>
+
+<h:body>
+
+<h:form id="form">
+
+    beforeMessage: #{sessionScope['beforeMessage']}
+    duringMessage: #{sessionScope['javax.faces.IS_SAVING_STATE']}
+    afterMessage: #{sessionScope['afterMessage']}
+    #{captureIsSavingStateValueBean.removeMessagesFromSession}
+
+</h:form>
+
+
+</h:body>
+
+</html>
diff --git a/jsf-ri/systest/web/subview01.jsp b/jsf-ri/systest/web/subview01.jsp
index 53ff7db..4b235a5 100644
--- a/jsf-ri/systest/web/subview01.jsp
+++ b/jsf-ri/systest/web/subview01.jsp
@@ -1,43 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
+
 <%@ page contentType="text/html" language="java" %>
 <%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
 <%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
diff --git a/jsf-ri/systest/web/subview02.jsp b/jsf-ri/systest/web/subview02.jsp
index f6ea5e1..17965da 100644
--- a/jsf-ri/systest/web/subview02.jsp
+++ b/jsf-ri/systest/web/subview02.jsp
@@ -1,43 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
+
 <%@ page contentType="text/html" language="java" %>
 <%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
 <%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
diff --git a/jsf-ri/systest/web/subview03.jsp b/jsf-ri/systest/web/subview03.jsp
index 002b41a..8ea85d7 100644
--- a/jsf-ri/systest/web/subview03.jsp
+++ b/jsf-ri/systest/web/subview03.jsp
@@ -1,43 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
+
 <%@ page contentType="text/html" language="java" %>
 <%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
 <%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
diff --git a/jsf-ri/systest/web/subview04.jsp b/jsf-ri/systest/web/subview04.jsp
index e10d667..5b317e1 100644
--- a/jsf-ri/systest/web/subview04.jsp
+++ b/jsf-ri/systest/web/subview04.jsp
@@ -1,43 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
+
 <%@ page contentType="text/html" language="java" %>
 <%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
 <%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
diff --git a/jsf-ri/systest/web/subview05.jsp b/jsf-ri/systest/web/subview05.jsp
index d8a3e6b..cb96d66 100644
--- a/jsf-ri/systest/web/subview05.jsp
+++ b/jsf-ri/systest/web/subview05.jsp
@@ -1,43 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
+
 <%@ page contentType="text/html" language="java" %>
 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
 <%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
diff --git a/jsf-ri/systest/web/subview06.jsp b/jsf-ri/systest/web/subview06.jsp
index c7a6219..48d3184 100644
--- a/jsf-ri/systest/web/subview06.jsp
+++ b/jsf-ri/systest/web/subview06.jsp
@@ -1,43 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
+
 <%@ page contentType="text/html" language="java" %>
 <%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
 <%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
diff --git a/jsf-ri/systest/web/subviewIterator01.jsp b/jsf-ri/systest/web/subviewIterator01.jsp
index fc45723..5d2734b 100644
--- a/jsf-ri/systest/web/subviewIterator01.jsp
+++ b/jsf-ri/systest/web/subviewIterator01.jsp
@@ -1,43 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
+
 
 <%@ page contentType="text/html" language="java" %>
 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
diff --git a/jsf-ri/systest/web/subviewIterator02.jsp b/jsf-ri/systest/web/subviewIterator02.jsp
index 7dea04a..a5d0f01 100644
--- a/jsf-ri/systest/web/subviewIterator02.jsp
+++ b/jsf-ri/systest/web/subviewIterator02.jsp
@@ -1,43 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
+
 
 <%@ page contentType="text/html" language="java" %>
 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
diff --git a/jsf-ri/systest/web/success.xhtml b/jsf-ri/systest/web/success.xhtml
index f3307c6..420f0b3 100644
--- a/jsf-ri/systest/web/success.xhtml
+++ b/jsf-ri/systest/web/success.xhtml
@@ -1,38 +1,45 @@
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
     <head><title>Success!</title></head>
diff --git a/jsf-ri/systest/web/tag-ivars1.jsp b/jsf-ri/systest/web/tag-ivars1.jsp
index a0d6119..88653a4 100644
--- a/jsf-ri/systest/web/tag-ivars1.jsp
+++ b/jsf-ri/systest/web/tag-ivars1.jsp
@@ -1,37 +1,43 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
diff --git a/jsf-ri/systest/web/tag-ivars2.jsp b/jsf-ri/systest/web/tag-ivars2.jsp
index 7e05ad8..d8174de 100644
--- a/jsf-ri/systest/web/tag-ivars2.jsp
+++ b/jsf-ri/systest/web/tag-ivars2.jsp
@@ -1,37 +1,43 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
diff --git a/jsf-ri/systest/web/taglib/attributeTest.jsp b/jsf-ri/systest/web/taglib/attributeTest.jsp
index db248b0..9dc37fc 100644
--- a/jsf-ri/systest/web/taglib/attributeTest.jsp
+++ b/jsf-ri/systest/web/taglib/attributeTest.jsp
@@ -1,37 +1,43 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
diff --git a/jsf-ri/systest/web/taglib/commandButton_param_test.jsp b/jsf-ri/systest/web/taglib/commandButton_param_test.jsp
index 8a2f351..e343752 100644
--- a/jsf-ri/systest/web/taglib/commandButton_param_test.jsp
+++ b/jsf-ri/systest/web/taglib/commandButton_param_test.jsp
@@ -1,37 +1,43 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
 <html>
diff --git a/jsf-ri/systest/web/taglib/commandButton_test.jsp b/jsf-ri/systest/web/taglib/commandButton_test.jsp
index d6bd845..4ce0099 100644
--- a/jsf-ri/systest/web/taglib/commandButton_test.jsp
+++ b/jsf-ri/systest/web/taglib/commandButton_test.jsp
@@ -1,37 +1,43 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
 <html>
diff --git a/jsf-ri/systest/web/taglib/commandLink_multiform_test.jsp b/jsf-ri/systest/web/taglib/commandLink_multiform_test.jsp
index 2279093..fac71d0 100644
--- a/jsf-ri/systest/web/taglib/commandLink_multiform_test.jsp
+++ b/jsf-ri/systest/web/taglib/commandLink_multiform_test.jsp
@@ -1,37 +1,43 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
diff --git a/jsf-ri/systest/web/taglib/commandLink_test.jsp b/jsf-ri/systest/web/taglib/commandLink_test.jsp
index 862b2e1..5fa82e0 100644
--- a/jsf-ri/systest/web/taglib/commandLink_test.jsp
+++ b/jsf-ri/systest/web/taglib/commandLink_test.jsp
@@ -1,37 +1,43 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
 <html>
diff --git a/jsf-ri/systest/web/taglib/command_button_test.jsp b/jsf-ri/systest/web/taglib/command_button_test.jsp
index d42c36f..8461984 100644
--- a/jsf-ri/systest/web/taglib/command_button_test.jsp
+++ b/jsf-ri/systest/web/taglib/command_button_test.jsp
@@ -1,37 +1,43 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
 <html>
diff --git a/jsf-ri/systest/web/taglib/command_link_test.jsp b/jsf-ri/systest/web/taglib/command_link_test.jsp
index 03d1c94..f3faaea 100644
--- a/jsf-ri/systest/web/taglib/command_link_test.jsp
+++ b/jsf-ri/systest/web/taglib/command_link_test.jsp
@@ -1,37 +1,43 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
 <html>
diff --git a/jsf-ri/systest/web/test01.jsp b/jsf-ri/systest/web/test01.jsp
index d5b730b..8859ac6 100644
--- a/jsf-ri/systest/web/test01.jsp
+++ b/jsf-ri/systest/web/test01.jsp
@@ -1,43 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
+
 <%@ page contentType="text/html" language="java" %>
 <%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
 <%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
@@ -47,4 +50,4 @@
 interweaving
 <h:outputText value="works"/>
 well!!
-</f:subview>
\ No newline at end of file
+</f:subview>
diff --git a/jsf-ri/systest/web/validator.jsp b/jsf-ri/systest/web/validator.jsp
index eee643f..fb34939 100644
--- a/jsf-ri/systest/web/validator.jsp
+++ b/jsf-ri/systest/web/validator.jsp
@@ -1,37 +1,43 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
 <%@ page contentType="text/html"
diff --git a/jsf-ri/systest/web/validator01.jsp b/jsf-ri/systest/web/validator01.jsp
index 519c7b6..6f8dc2d 100644
--- a/jsf-ri/systest/web/validator01.jsp
+++ b/jsf-ri/systest/web/validator01.jsp
@@ -1,37 +1,43 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
 <%@ page contentType="text/html"
diff --git a/jsf-ri/systest/web/validator02.jsp b/jsf-ri/systest/web/validator02.jsp
index 2a19d8b..eda5211 100644
--- a/jsf-ri/systest/web/validator02.jsp
+++ b/jsf-ri/systest/web/validator02.jsp
@@ -1,44 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
 
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
diff --git a/jsf-ri/systest/web/validator03.jsp b/jsf-ri/systest/web/validator03.jsp
index cbebd99..7111d2e 100644
--- a/jsf-ri/systest/web/validator03.jsp
+++ b/jsf-ri/systest/web/validator03.jsp
@@ -1,44 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
 
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
diff --git a/jsf-ri/systest/web/validator04.jsp b/jsf-ri/systest/web/validator04.jsp
index 4530834..f68adf6 100644
--- a/jsf-ri/systest/web/validator04.jsp
+++ b/jsf-ri/systest/web/validator04.jsp
@@ -1,44 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
 
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
diff --git a/jsf-ri/systest/web/validator05.xhtml b/jsf-ri/systest/web/validator05.xhtml
index 01101d1..680e306 100644
--- a/jsf-ri/systest/web/validator05.xhtml
+++ b/jsf-ri/systest/web/validator05.xhtml
@@ -1,39 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
+
 <!DOCTYPE html
       PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
diff --git a/jsf-ri/systest/web/valueBinding01.jsp b/jsf-ri/systest/web/valueBinding01.jsp
index 0afc748..d0ad4db 100644
--- a/jsf-ri/systest/web/valueBinding01.jsp
+++ b/jsf-ri/systest/web/valueBinding01.jsp
@@ -1,37 +1,43 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
 <%@ page contentType="text/html"
diff --git a/jsf-ri/systest/web/valueBinding02.jsp b/jsf-ri/systest/web/valueBinding02.jsp
index 4033992..3c76f47 100644
--- a/jsf-ri/systest/web/valueBinding02.jsp
+++ b/jsf-ri/systest/web/valueBinding02.jsp
@@ -1,37 +1,43 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
 <%@ page contentType="text/html"
diff --git a/jsf-ri/systest/web/valueBinding03.jsp b/jsf-ri/systest/web/valueBinding03.jsp
index 91e5319..13a6cac 100644
--- a/jsf-ri/systest/web/valueBinding03.jsp
+++ b/jsf-ri/systest/web/valueBinding03.jsp
@@ -1,37 +1,43 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
 <%@ page contentType="text/html"
diff --git a/jsf-ri/systest/web/valueBinding04.jsp b/jsf-ri/systest/web/valueBinding04.jsp
index 3704902..73a492e 100644
--- a/jsf-ri/systest/web/valueBinding04.jsp
+++ b/jsf-ri/systest/web/valueBinding04.jsp
@@ -1,37 +1,43 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
 <%@ page contentType="text/html"
diff --git a/jsf-ri/systest/web/valueBinding05.jsp b/jsf-ri/systest/web/valueBinding05.jsp
index 3ae1e88..398a8db 100644
--- a/jsf-ri/systest/web/valueBinding05.jsp
+++ b/jsf-ri/systest/web/valueBinding05.jsp
@@ -1,37 +1,43 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
 <%@ page contentType="text/html"
diff --git a/jsf-ri/systest/web/valueBinding06.jsp b/jsf-ri/systest/web/valueBinding06.jsp
index 2e5faea..65e096e 100644
--- a/jsf-ri/systest/web/valueBinding06.jsp
+++ b/jsf-ri/systest/web/valueBinding06.jsp
@@ -1,37 +1,43 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
 <%@ page contentType="text/html"
diff --git a/jsf-ri/systest/web/valueBinding07.jsp b/jsf-ri/systest/web/valueBinding07.jsp
index 112f50b..fa529de 100644
--- a/jsf-ri/systest/web/valueBinding07.jsp
+++ b/jsf-ri/systest/web/valueBinding07.jsp
@@ -1,37 +1,43 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
 <%@ page contentType="text/html"
diff --git a/jsf-ri/systest/web/valueChangeListener.jsp b/jsf-ri/systest/web/valueChangeListener.jsp
index b347147..49d9653 100644
--- a/jsf-ri/systest/web/valueChangeListener.jsp
+++ b/jsf-ri/systest/web/valueChangeListener.jsp
@@ -1,44 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
 
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
diff --git a/jsf-ri/systest/web/valueChangeListener02.jsp b/jsf-ri/systest/web/valueChangeListener02.jsp
index 304541c..41b0a04 100644
--- a/jsf-ri/systest/web/valueChangeListener02.jsp
+++ b/jsf-ri/systest/web/valueChangeListener02.jsp
@@ -1,39 +1,44 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
---%>
 
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
 
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
diff --git a/jsf-ri/systest/web/verbatim_test.jsp b/jsf-ri/systest/web/verbatim_test.jsp
index 98f4c69..57bd6bf 100644
--- a/jsf-ri/systest/web/verbatim_test.jsp
+++ b/jsf-ri/systest/web/verbatim_test.jsp
@@ -1,37 +1,43 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
 <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
diff --git a/jsf-ri/systest/web/view.xml/footer.xhtml b/jsf-ri/systest/web/view.xml/footer.xhtml
new file mode 100644
index 0000000..c333bc6
--- /dev/null
+++ b/jsf-ri/systest/web/view.xml/footer.xhtml
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<table xmlns="http://www.w3.org/1999/xhtml"
+       xmlns:ui="http://java.sun.com/jsf/facelets"
+       xmlns:h="http://java.sun.com/jsf/html" border="1">
+
+    <tr>
+        <th>HTML table column 1</th>
+
+        <th>HTML table column 2</th>
+        
+    </tr>
+
+    <tr>
+
+        <ui:insert name="footer" />
+
+    </tr>
+
+
+</table>
diff --git a/jsf-ri/systest/web/view.xml/header.view.xml b/jsf-ri/systest/web/view.xml/header.view.xml
new file mode 100644
index 0000000..2714b8a
--- /dev/null
+++ b/jsf-ri/systest/web/view.xml/header.view.xml
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<f:view xmlns:h="http://java.sun.com/jsf/html"
+    xmlns:f="http://java.sun.com/jsf/core"
+    xmlns:ui="http://java.sun.com/jsf/facelets">
+
+    <h:panelGrid id="gridXml" column="3">
+
+        <h:outputText id="text1" value="column1"></h:outputText>
+
+        <h:outputText id="text2" value="column2"></h:outputText>
+
+        <h:outputText id="text3" value="column3"></h:outputText>
+
+        <ui:insert name="header"></ui:insert>
+
+    </h:panelGrid>
+
+</f:view>
+
+
diff --git a/jsf-ri/systest/web/view.xml/includedInFooter.view.xml b/jsf-ri/systest/web/view.xml/includedInFooter.view.xml
new file mode 100644
index 0000000..cb69b36
--- /dev/null
+++ b/jsf-ri/systest/web/view.xml/includedInFooter.view.xml
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<f:view
+    xmlns:h="http://java.sun.com/jsf/html"
+    xmlns:f="http://java.sun.com/jsf/core"
+    xmlns:ui="http://java.sun.com/jsf/facelets">
+
+    #{param1}
+
+</f:view>
+
+
diff --git a/jsf-ri/systest/web/view.xml/includedInFooter.xhtml b/jsf-ri/systest/web/view.xml/includedInFooter.xhtml
new file mode 100644
index 0000000..0f56509
--- /dev/null
+++ b/jsf-ri/systest/web/view.xml/includedInFooter.xhtml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<td xmlns="http://www.w3.org/1999/xhtml">#{param2}</td>
diff --git a/jsf-ri/systest/web/view.xml/index.view.xml b/jsf-ri/systest/web/view.xml/index.view.xml
new file mode 100644
index 0000000..83433f0
--- /dev/null
+++ b/jsf-ri/systest/web/view.xml/index.view.xml
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<f:view  
+    xmlns:f="http://java.sun.com/jsf/core"
+    xmlns:h="http://java.sun.com/jsf/html">
+
+    <html xmlns="http://www.w3.org/1999/xhtml">
+
+        <h:head><title>Raw XML View</title></h:head>
+
+        <h:body>
+
+            <h:form prependId="false" id="form">
+
+                <h:panelGrid id="grid" column="2">
+
+                    <h:outputText id="text" value="hello"></h:outputText>
+
+                    <h:commandButton id="button" value="reload"></h:commandButton>
+
+                </h:panelGrid>
+
+            </h:form>
+
+        </h:body>
+
+    </html>
+
+</f:view>
+
+
diff --git a/jsf-ri/systest/web/view.xml/templateClientUsingXmlAndXhtml.view.xml b/jsf-ri/systest/web/view.xml/templateClientUsingXmlAndXhtml.view.xml
new file mode 100644
index 0000000..93d908f
--- /dev/null
+++ b/jsf-ri/systest/web/view.xml/templateClientUsingXmlAndXhtml.view.xml
@@ -0,0 +1,96 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<f:view 
+    xmlns:h="http://java.sun.com/jsf/html"
+    xmlns:f="http://java.sun.com/jsf/core"
+    xmlns:ui="http://java.sun.com/jsf/facelets">
+
+    <f:metadata>
+      <f:viewParam name="param1" required="true" />
+      <f:viewParam name="param2" required="true" />
+    </f:metadata>
+
+    <html xmlns="http://www.w3.org/1999/xhtml">
+
+        <h:head><title>Template client</title></h:head>
+
+        <h:body>
+
+            <!--
+            Make sure template clients declared in xml can use templates declared
+            both in xhtml and xml.
+            -->
+
+            <ui:composition template="xhtmlTemplate.xhtml">
+
+                <ui:define name="body">
+                
+                    <h:form prependId="false" id="form">
+
+                        <h:panelGrid id="grid" column="2">
+
+                            <h:outputText id="text" value="hello"></h:outputText>
+
+                            <h:commandButton id="button"
+                                             value="reload">
+
+      <f:param name="param1" value="#{param['param1']}" />
+      <f:param name="param2" value="#{param['param2']}" />
+                            </h:commandButton>
+
+                        </h:panelGrid>
+
+                    </h:form>
+                    
+                </ui:define>
+                
+            </ui:composition>
+
+        </h:body>
+
+    </html>
+
+</f:view>
+
+
diff --git a/jsf-ri/systest/web/view.xml/xhtmlTemplate.xhtml b/jsf-ri/systest/web/view.xml/xhtmlTemplate.xhtml
new file mode 100644
index 0000000..7d91d8b
--- /dev/null
+++ b/jsf-ri/systest/web/view.xml/xhtmlTemplate.xhtml
@@ -0,0 +1,84 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xml:lang="en" lang="en">
+<head>
+    <title>Templating and XML views</title>
+</head>
+<body>
+
+    <ui:decorate template="header.view.xml">
+        <ui:define name="header">
+            <p>This is the header text declared in xhtmlTemplate.xhtml.
+            The preceding columns are declared in header.view.xml.</p>
+        </ui:define>
+    </ui:decorate>
+
+    <ui:insert name="body">
+
+        <p>default text</p>
+
+    </ui:insert>
+
+    <ui:decorate template="footer.xhtml">
+
+        <ui:define name="footer">
+            <td><ui:include src="includedInFooter.view.xml">
+                <ui:param name="param1" value="#{param['param1']}" />
+            </ui:include></td>
+            <ui:include src="includedInFooter.xhtml">
+                <ui:param name="param2" value="#{param['param2']}" />
+            </ui:include>
+        </ui:define>
+        
+    </ui:decorate>
+
+
+</body>
+</html>
diff --git a/jsf-ri/systest/web/viewLocale.jsp b/jsf-ri/systest/web/viewLocale.jsp
index b928d64..5199b05 100644
--- a/jsf-ri/systest/web/viewLocale.jsp
+++ b/jsf-ri/systest/web/viewLocale.jsp
@@ -1,43 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
+
 
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
diff --git a/jsf-ri/systest/web/viewParameters/events.xhtml b/jsf-ri/systest/web/viewParameters/events.xhtml
index cc3023f..f5b3487 100644
--- a/jsf-ri/systest/web/viewParameters/events.xhtml
+++ b/jsf-ri/systest/web/viewParameters/events.xhtml
@@ -1,39 +1,44 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <f:event xmlns:f="http://java.sun.com/jsf/core" type="preRenderView"
 listener="#{newsReader.loadStory}"/>
diff --git a/jsf-ri/systest/web/viewParameters/page01.xhtml b/jsf-ri/systest/web/viewParameters/page01.xhtml
index 4a593c3..cdd0e2b 100644
--- a/jsf-ri/systest/web/viewParameters/page01.xhtml
+++ b/jsf-ri/systest/web/viewParameters/page01.xhtml
@@ -1,40 +1,45 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
- Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
 
- Contributor(s):
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"
diff --git a/jsf-ri/systest/web/viewParameters/page02.xhtml b/jsf-ri/systest/web/viewParameters/page02.xhtml
index 1b67a57..1e6907d 100644
--- a/jsf-ri/systest/web/viewParameters/page02.xhtml
+++ b/jsf-ri/systest/web/viewParameters/page02.xhtml
@@ -1,40 +1,45 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 
- Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
 
- Contributor(s):
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"
diff --git a/jsf-ri/systest/web/viewParameters/page03.xhtml b/jsf-ri/systest/web/viewParameters/page03.xhtml
index d1fcf93..1a39ddb 100644
--- a/jsf-ri/systest/web/viewParameters/page03.xhtml
+++ b/jsf-ri/systest/web/viewParameters/page03.xhtml
@@ -1,40 +1,45 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml"
diff --git a/jsf-ri/systest/web/viewParameters/template.xhtml b/jsf-ri/systest/web/viewParameters/template.xhtml
index 8062075..ef48fc9 100644
--- a/jsf-ri/systest/web/viewParameters/template.xhtml
+++ b/jsf-ri/systest/web/viewParameters/template.xhtml
@@ -1,40 +1,45 @@
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html
       PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
diff --git a/jsf-ri/systest/web/viewTagListeners.jsp b/jsf-ri/systest/web/viewTagListeners.jsp
index e2e6ee4..7c9bf1e 100644
--- a/jsf-ri/systest/web/viewTagListeners.jsp
+++ b/jsf-ri/systest/web/viewTagListeners.jsp
@@ -1,37 +1,43 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
 <%@ page contentType="text/html;charset=UTF-8" language="java" %>
diff --git a/jsf-ri/test/com/sun/faces/AdapterPropertyResolver.java b/jsf-ri/test/com/sun/faces/AdapterPropertyResolver.java
index 6c78a13..c91b9de 100644
--- a/jsf-ri/test/com/sun/faces/AdapterPropertyResolver.java
+++ b/jsf-ri/test/com/sun/faces/AdapterPropertyResolver.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/test/com/sun/faces/CustomSystemEvent.java b/jsf-ri/test/com/sun/faces/CustomSystemEvent.java
index 445bfa5..0a108c3 100644
--- a/jsf-ri/test/com/sun/faces/CustomSystemEvent.java
+++ b/jsf-ri/test/com/sun/faces/CustomSystemEvent.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -34,7 +38,6 @@
  * holder.
  */
 
-
 package com.sun.faces;
 
 import javax.faces.event.SystemEvent;
diff --git a/jsf-ri/test/com/sun/faces/CustomerBean.java b/jsf-ri/test/com/sun/faces/CustomerBean.java
index be4fb7e..a78bcb2 100644
--- a/jsf-ri/test/com/sun/faces/CustomerBean.java
+++ b/jsf-ri/test/com/sun/faces/CustomerBean.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/test/com/sun/faces/SystemEventListener1.java b/jsf-ri/test/com/sun/faces/SystemEventListener1.java
index dd081ef..05de074 100644
--- a/jsf-ri/test/com/sun/faces/SystemEventListener1.java
+++ b/jsf-ri/test/com/sun/faces/SystemEventListener1.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/test/com/sun/faces/SystemEventListener2.java b/jsf-ri/test/com/sun/faces/SystemEventListener2.java
index e209a58..6e4ba8f 100644
--- a/jsf-ri/test/com/sun/faces/SystemEventListener2.java
+++ b/jsf-ri/test/com/sun/faces/SystemEventListener2.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -52,4 +56,4 @@ public class SystemEventListener2 implements SystemEventListener {
     public boolean isListenerForSource(Object source) {
         return (source != null);
     }
-}
\ No newline at end of file
+}
diff --git a/jsf-ri/test/com/sun/faces/TestActionListener.java b/jsf-ri/test/com/sun/faces/TestActionListener.java
index b85e047..0236e5a 100644
--- a/jsf-ri/test/com/sun/faces/TestActionListener.java
+++ b/jsf-ri/test/com/sun/faces/TestActionListener.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/test/com/sun/faces/TestBean.java b/jsf-ri/test/com/sun/faces/TestBean.java
index 5f2c1c1..8a2347a 100644
--- a/jsf-ri/test/com/sun/faces/TestBean.java
+++ b/jsf-ri/test/com/sun/faces/TestBean.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/test/com/sun/faces/TestComponent.java b/jsf-ri/test/com/sun/faces/TestComponent.java
index bc7c074..44ae122 100644
--- a/jsf-ri/test/com/sun/faces/TestComponent.java
+++ b/jsf-ri/test/com/sun/faces/TestComponent.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/test/com/sun/faces/TestConverter.java b/jsf-ri/test/com/sun/faces/TestConverter.java
index c8383bd..13e339f 100644
--- a/jsf-ri/test/com/sun/faces/TestConverter.java
+++ b/jsf-ri/test/com/sun/faces/TestConverter.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/test/com/sun/faces/TestELResolver.java b/jsf-ri/test/com/sun/faces/TestELResolver.java
index e6562f1..fed4cce 100644
--- a/jsf-ri/test/com/sun/faces/TestELResolver.java
+++ b/jsf-ri/test/com/sun/faces/TestELResolver.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/test/com/sun/faces/TestExceptionBean.java b/jsf-ri/test/com/sun/faces/TestExceptionBean.java
index c72b716..d130f3e 100644
--- a/jsf-ri/test/com/sun/faces/TestExceptionBean.java
+++ b/jsf-ri/test/com/sun/faces/TestExceptionBean.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/test/com/sun/faces/TestFirstConverter.java b/jsf-ri/test/com/sun/faces/TestFirstConverter.java
index fd7d95e..63ca9b3 100644
--- a/jsf-ri/test/com/sun/faces/TestFirstConverter.java
+++ b/jsf-ri/test/com/sun/faces/TestFirstConverter.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/test/com/sun/faces/TestFirstValidator.java b/jsf-ri/test/com/sun/faces/TestFirstValidator.java
index e01d696..ab22f8f 100644
--- a/jsf-ri/test/com/sun/faces/TestFirstValidator.java
+++ b/jsf-ri/test/com/sun/faces/TestFirstValidator.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/test/com/sun/faces/TestForm.java b/jsf-ri/test/com/sun/faces/TestForm.java
index eb5f484..307ee2c 100644
--- a/jsf-ri/test/com/sun/faces/TestForm.java
+++ b/jsf-ri/test/com/sun/faces/TestForm.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/test/com/sun/faces/TestFormVisit.java b/jsf-ri/test/com/sun/faces/TestFormVisit.java
new file mode 100644
index 0000000..407e75f
--- /dev/null
+++ b/jsf-ri/test/com/sun/faces/TestFormVisit.java
@@ -0,0 +1,65 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces;
+
+import javax.faces.component.html.HtmlForm;
+import javax.faces.component.visit.VisitContext;
+import javax.faces.component.visit.VisitCallback;
+import javax.faces.component.visit.VisitHint;
+import javax.faces.context.FacesContext;
+
+public class TestFormVisit extends HtmlForm {
+
+    public static final String COMPONENT_TYPE = "javax.faces.TestFormVisit";
+
+    public TestFormVisit() {
+        super();
+    }
+
+    public boolean visitTree(VisitContext context,
+                             VisitCallback callback) {
+        if (context.getHints().contains(VisitHint.EXECUTE_LIFECYCLE)) {
+                context.getFacesContext().getAttributes().put("VisitHint.EXECUTE_LIFECYCLE", Boolean.TRUE);
+        }
+        return true;
+    }
+
+}
diff --git a/jsf-ri/test/com/sun/faces/TestMessages.properties b/jsf-ri/test/com/sun/faces/TestMessages.properties
index af7ecd2..1c6cccf 100644
--- a/jsf-ri/test/com/sun/faces/TestMessages.properties
+++ b/jsf-ri/test/com/sun/faces/TestMessages.properties
@@ -1,3 +1,43 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
 euroMessage=Message with \u20ac
 buckaroo=banzai
 john=bigboote
diff --git a/jsf-ri/test/com/sun/faces/TestNavigationHandler.java b/jsf-ri/test/com/sun/faces/TestNavigationHandler.java
index 0ee2fca..c457502 100644
--- a/jsf-ri/test/com/sun/faces/TestNavigationHandler.java
+++ b/jsf-ri/test/com/sun/faces/TestNavigationHandler.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/test/com/sun/faces/TestOldVariableResolver.java b/jsf-ri/test/com/sun/faces/TestOldVariableResolver.java
index 17bb022..89f320d 100644
--- a/jsf-ri/test/com/sun/faces/TestOldVariableResolver.java
+++ b/jsf-ri/test/com/sun/faces/TestOldVariableResolver.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/test/com/sun/faces/TestPropertyResolver.java b/jsf-ri/test/com/sun/faces/TestPropertyResolver.java
index 4412af5..69df10b 100644
--- a/jsf-ri/test/com/sun/faces/TestPropertyResolver.java
+++ b/jsf-ri/test/com/sun/faces/TestPropertyResolver.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/test/com/sun/faces/TestResourceBundle2_de.properties b/jsf-ri/test/com/sun/faces/TestResourceBundle2_de.properties
index ee035bc..27b69d3 100644
--- a/jsf-ri/test/com/sun/faces/TestResourceBundle2_de.properties
+++ b/jsf-ri/test/com/sun/faces/TestResourceBundle2_de.properties
@@ -1,2 +1,42 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
 # Sample ResourceBundle properties file
-label=Abflug
\ No newline at end of file
+label=Abflug
diff --git a/jsf-ri/test/com/sun/faces/TestResourceBundle_de.properties b/jsf-ri/test/com/sun/faces/TestResourceBundle_de.properties
index e81aa92..7e0e266 100644
--- a/jsf-ri/test/com/sun/faces/TestResourceBundle_de.properties
+++ b/jsf-ri/test/com/sun/faces/TestResourceBundle_de.properties
@@ -1,4 +1,44 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
 # Sample ResourceBundle properties file
 value1=Bernhard
 value2=Joerg
-value3=Beate Uhse
\ No newline at end of file
+value3=Beate Uhse
diff --git a/jsf-ri/test/com/sun/faces/TestResourceBundle_en.properties b/jsf-ri/test/com/sun/faces/TestResourceBundle_en.properties
index 22ff891..4f2835c 100644
--- a/jsf-ri/test/com/sun/faces/TestResourceBundle_en.properties
+++ b/jsf-ri/test/com/sun/faces/TestResourceBundle_en.properties
@@ -1,3 +1,43 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
 value1=Jerry
 value2=Bob
 value3=Phil
diff --git a/jsf-ri/test/com/sun/faces/TestSecondConverter.java b/jsf-ri/test/com/sun/faces/TestSecondConverter.java
index 870e9f5..e4e94c4 100644
--- a/jsf-ri/test/com/sun/faces/TestSecondConverter.java
+++ b/jsf-ri/test/com/sun/faces/TestSecondConverter.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/test/com/sun/faces/TestSecondValidator.java b/jsf-ri/test/com/sun/faces/TestSecondValidator.java
index 4dfddfa..4826ce0 100644
--- a/jsf-ri/test/com/sun/faces/TestSecondValidator.java
+++ b/jsf-ri/test/com/sun/faces/TestSecondValidator.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/test/com/sun/faces/TestVariableResolver.java b/jsf-ri/test/com/sun/faces/TestVariableResolver.java
index 43bc68e..905bb06 100644
--- a/jsf-ri/test/com/sun/faces/TestVariableResolver.java
+++ b/jsf-ri/test/com/sun/faces/TestVariableResolver.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/test/com/sun/faces/TestViewHandler.java b/jsf-ri/test/com/sun/faces/TestViewHandler.java
index 8a64e26..635d8da 100644
--- a/jsf-ri/test/com/sun/faces/TestViewHandler.java
+++ b/jsf-ri/test/com/sun/faces/TestViewHandler.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/test/com/sun/faces/application/ActionListenerTestImpl.java b/jsf-ri/test/com/sun/faces/application/ActionListenerTestImpl.java
index b4c743b..947ad24 100644
--- a/jsf-ri/test/com/sun/faces/application/ActionListenerTestImpl.java
+++ b/jsf-ri/test/com/sun/faces/application/ActionListenerTestImpl.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/test/com/sun/faces/application/DeprStateManagerImpl.java b/jsf-ri/test/com/sun/faces/application/DeprStateManagerImpl.java
index 9fc3e4f..26091c0 100644
--- a/jsf-ri/test/com/sun/faces/application/DeprStateManagerImpl.java
+++ b/jsf-ri/test/com/sun/faces/application/DeprStateManagerImpl.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -34,7 +38,6 @@
  * holder.
  */
 
-
 // DeprStateManagerImpl.java 
 
 package com.sun.faces.application;
diff --git a/jsf-ri/test/com/sun/faces/application/NavBean.java b/jsf-ri/test/com/sun/faces/application/NavBean.java
index cfc4739..e0db3b7 100644
--- a/jsf-ri/test/com/sun/faces/application/NavBean.java
+++ b/jsf-ri/test/com/sun/faces/application/NavBean.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 2009-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/test/com/sun/faces/application/NavigationHandlerTestImpl.java b/jsf-ri/test/com/sun/faces/application/NavigationHandlerTestImpl.java
index a67c5d0..25c9bc1 100644
--- a/jsf-ri/test/com/sun/faces/application/NavigationHandlerTestImpl.java
+++ b/jsf-ri/test/com/sun/faces/application/NavigationHandlerTestImpl.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/test/com/sun/faces/application/PropertyResolverTestImpl.java b/jsf-ri/test/com/sun/faces/application/PropertyResolverTestImpl.java
index df1cabe..c7e9e4a 100644
--- a/jsf-ri/test/com/sun/faces/application/PropertyResolverTestImpl.java
+++ b/jsf-ri/test/com/sun/faces/application/PropertyResolverTestImpl.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/test/com/sun/faces/application/TestActionListenerImpl.java b/jsf-ri/test/com/sun/faces/application/TestActionListenerImpl.java
deleted file mode 100644
index 7dbb926..0000000
--- a/jsf-ri/test/com/sun/faces/application/TestActionListenerImpl.java
+++ /dev/null
@@ -1,200 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-// TestActionListenerImpl.java
-
-package com.sun.faces.application;
-import com.sun.faces.cactus.ServletFacesTestCase;
-import com.sun.faces.util.Util;
-
-import javax.faces.FacesException;
-import javax.faces.component.UICommand;
-import javax.faces.component.UIViewRoot;
-import javax.faces.context.FacesContext;
-import javax.faces.el.MethodBinding;
-import javax.faces.el.MethodNotFoundException;
-import javax.faces.event.ActionEvent;
-import java.util.Locale;
-
-/**
- *
- *  <B>TestActionListenerImpl</B> is a class ...
- *
- * <B>Lifetime And Scope</B> <P>
- *
- */
-
-/**
- * This class tests the <code>ActionListenerImpl</code> class
- * functionality.  It uses the xml configuration file:
- * <code>web/test/WEB-INF/faces-navigation.xml</code>.
- */
-public class TestActionListenerImpl extends ServletFacesTestCase {
-
-//
-// Protected Constants
-//
-
-//
-// Class Variables
-//
-
-//
-// Instance Variables
-//
-
-// Attribute Instance Variables
-
-// Relationship Instance Variables
-
-//
-// Constructors and Initializers    
-//
-
-    public TestActionListenerImpl() {
-        super("TestActionListenerImpl");
-    }
-
-
-    public TestActionListenerImpl(String name) {
-        super(name);
-    }
-//
-// Class methods
-//
-
-//
-// Methods from TestCase
-//
-
-//
-// General Methods
-//
-
-    public void testProcessAction() {
-        loadFromInitParam("/WEB-INF/faces-navigation.xml");
-        FacesContext context = getFacesContext();
-
-        System.out.println("Testing With Action Literal Set...");
-
-        UICommand command = new UICommand();
-        command.setAction(
-            context.getApplication().createMethodBinding(
-                "#{newCustomer.loginRequired}", null));
-        UIViewRoot page = Util.getViewHandler(context).createView(context, null);
-        page.setViewId("/login.jsp");
-        page.setLocale(Locale.US);
-        context.setViewRoot(page);
-
-        ActionListenerImpl actionListener = new ActionListenerImpl();
-        ActionEvent actionEvent = new ActionEvent(command);
-
-        actionListener.processAction(actionEvent);
-
-        String newViewId = context.getViewRoot().getViewId();
-        assertTrue(newViewId.equals("/must-login-first.jsp"));
-
-        System.out.println("Testing With Action Set...");
-
-        command = new UICommand();
-        MethodBinding binding =
-            context.getApplication().createMethodBinding("#{userBean.login}",
-                                                         null);
-        command.setAction(binding);
-
-        UserBean user = new UserBean();
-        context.getExternalContext().getSessionMap().put("userBean", user);
-        assertTrue(
-            user ==
-            context.getExternalContext().getSessionMap().get("userBean"));
-
-        page = Util.getViewHandler(context).createView(context, null);
-        page.setViewId("/login.jsp");
-        page.setLocale(Locale.US);
-        context.setViewRoot(page);
-
-        actionEvent = new ActionEvent(command);
-        actionListener.processAction(actionEvent);
-
-        newViewId = context.getViewRoot().getViewId();
-        // expected outcome should be view id corresponding to "page/outcome" search..
-
-        assertTrue(newViewId.equals("/home.jsp"));
-    }
-
-
-    public void testIllegalArgException() {
-        boolean exceptionThrown = false;
-
-        FacesContext context = FacesContext.getCurrentInstance();
-        UIViewRoot page = Util.getViewHandler(getFacesContext()).createView(context, null);
-        page.setViewId("/login.jsp");
-        context.setViewRoot(page);
-        UserBean user = new UserBean();
-        context.getExternalContext().getApplicationMap().put("UserBean", user);
-
-        assertTrue(
-            user ==
-            context.getExternalContext().getApplicationMap().get("UserBean"));
-
-        UICommand command = new UICommand();
-        MethodBinding binding =
-            context.getApplication().createMethodBinding("#{UserBean.noMeth}",
-                                                         null);
-        command.setAction(binding);
-        ActionEvent actionEvent = new ActionEvent(command);
-
-        ActionListenerImpl actionListener = new ActionListenerImpl();
-        try {
-            actionListener.processAction(actionEvent);
-        } catch (FacesException e) {
-            assertTrue(e.getCause() instanceof MethodNotFoundException);
-            exceptionThrown = true;
-        }
-        assertTrue(exceptionThrown);
-    }
-
-
-    public static class UserBean extends Object {
-
-        public String login() {
-            return ("success");
-        }
-
-    }
-
-} // end of class TestActionListenerImpl
-
diff --git a/jsf-ri/test/com/sun/faces/application/TestAdapters.java b/jsf-ri/test/com/sun/faces/application/TestAdapters.java
index e38b306..7e867a8 100644
--- a/jsf-ri/test/com/sun/faces/application/TestAdapters.java
+++ b/jsf-ri/test/com/sun/faces/application/TestAdapters.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -635,4 +639,4 @@ public class TestAdapters extends ServletFacesTestCase {
    
 
 
-} // END TestAdapters
\ No newline at end of file
+} // END TestAdapters
diff --git a/jsf-ri/test/com/sun/faces/application/TestApplicationEvents.java b/jsf-ri/test/com/sun/faces/application/TestApplicationEvents.java
index 0c1578c..5fb898e 100644
--- a/jsf-ri/test/com/sun/faces/application/TestApplicationEvents.java
+++ b/jsf-ri/test/com/sun/faces/application/TestApplicationEvents.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/test/com/sun/faces/application/TestApplicationFactoryImpl.java b/jsf-ri/test/com/sun/faces/application/TestApplicationFactoryImpl.java
index 45af37c..80abe86 100644
--- a/jsf-ri/test/com/sun/faces/application/TestApplicationFactoryImpl.java
+++ b/jsf-ri/test/com/sun/faces/application/TestApplicationFactoryImpl.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/test/com/sun/faces/application/TestApplicationImpl.java b/jsf-ri/test/com/sun/faces/application/TestApplicationImpl.java
index 40d83a1..e2e284a 100644
--- a/jsf-ri/test/com/sun/faces/application/TestApplicationImpl.java
+++ b/jsf-ri/test/com/sun/faces/application/TestApplicationImpl.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -44,15 +48,11 @@ import java.util.ResourceBundle;
 import java.util.List;
 import java.util.Date;
 import java.util.ArrayList;
-import java.io.IOException;
-import java.net.URL;
 
 import javax.el.ELException;
 import javax.el.ValueExpression;
 import javax.faces.FacesException;
 import javax.faces.FactoryFinder;
-import javax.faces.view.facelets.ResourceResolver;
-import javax.faces.render.RenderKitFactory;
 import javax.faces.application.Application;
 import javax.faces.application.ApplicationFactory;
 import javax.faces.application.NavigationHandler;
@@ -61,9 +61,7 @@ import javax.faces.application.ResourceDependencies;
 import javax.faces.application.ResourceDependency;
 import javax.faces.component.UIComponent;
 import javax.faces.component.UIViewRoot;
-import javax.faces.component.UIInput;
 import javax.faces.component.UIOutput;
-import javax.faces.component.UIComponentBase;
 import javax.faces.context.FacesContext;
 import javax.faces.context.ExternalContext;
 import javax.faces.convert.Converter;
@@ -85,12 +83,7 @@ import javax.faces.event.PreRenderComponentEvent;
 import com.sun.faces.RIConstants;
 import com.sun.faces.TestComponent;
 import com.sun.faces.TestForm;
-import com.sun.faces.facelets.FaceletFactory;
-import com.sun.faces.facelets.Facelet;
-import com.sun.faces.facelets.impl.DefaultFaceletFactory;
-import com.sun.faces.config.WebConfiguration;
-import static com.sun.faces.config.WebConfiguration.WebContextInitParameter.*;
-import static com.sun.faces.config.WebConfiguration.BooleanWebContextInitParameter.DisableFaceletJSFViewHandler;
+
 import com.sun.faces.cactus.JspFacesTestCase;
 import com.sun.faces.cactus.TestingUtil;
 
@@ -760,44 +753,6 @@ public class TestApplicationImpl extends JspFacesTestCase {
     }
 
 
-    public void testDecoratedFaceletFactory() {
-
-        FacesContext ctx = getFacesContext();
-        WebConfiguration webConfig = WebConfiguration.getInstance(ctx.getExternalContext());
-        webConfig.overrideContextInitParameter(FaceletFactory,
-                                               "com.sun.faces.application.TestApplicationImpl$CustomFaceletFactory");
-        ctx.getExternalContext().getApplicationMap().remove("com.sun.faces.ApplicationAssociate");
-        webConfig.overrideContextInitParameter(DisableFaceletJSFViewHandler,
-                                               false);
-        ApplicationImpl impl = new ApplicationImpl();
-        ApplicationAssociate associate = ApplicationAssociate.getInstance(ctx.getExternalContext());
-        assertEquals(CustomFaceletFactory.class.getName(),
-                     CustomFaceletFactory.class.getName(),
-                     associate.getFaceletFactory().getClass().getName());
-        assertEquals(DefaultFaceletFactory.class.getName(),
-                     DefaultFaceletFactory.class.getName(),
-                     ((CustomFaceletFactory) associate.getFaceletFactory()).getDelegate().getClass().getName());
-
-    }
-
-    public void testOverrideFaceletFactory() {
-
-        FacesContext ctx = getFacesContext();
-        WebConfiguration webConfig = WebConfiguration.getInstance(ctx.getExternalContext());
-        webConfig.overrideContextInitParameter(FaceletFactory,
-                                               "com.sun.faces.application.TestApplicationImpl$CustomFaceletFactory2");
-        ctx.getExternalContext().getApplicationMap().remove("com.sun.faces.ApplicationAssociate");
-        webConfig.overrideContextInitParameter(DisableFaceletJSFViewHandler,
-                                               false);
-        ApplicationImpl impl = new ApplicationImpl();
-        ApplicationAssociate associate = ApplicationAssociate.getInstance(ctx.getExternalContext());
-        assertEquals(CustomFaceletFactory2.class.getName(),
-                     CustomFaceletFactory2.class.getName(),
-                     associate.getFaceletFactory().getClass().getName());
-
-    }
-
-
     // ---------------------------------------------------------- Public Methods
     
     public static void clearResourceBundlesFromAssociate(ApplicationImpl application) {
@@ -821,70 +776,6 @@ public class TestApplicationImpl extends JspFacesTestCase {
 
     // ----------------------------------------------------------- Inner Classes
 
-    public static final class CustomFaceletFactory2 extends FaceletFactory {
-        public Facelet getFacelet(String uri) throws IOException {
-            return null;
-        }
-
-        public Facelet getFacelet(URL url) throws IOException {
-            return null;
-        }
-
-        public Facelet getMetadataFacelet(String uri) throws IOException {
-            return null;
-        }
-
-        public Facelet getMetadataFacelet(URL url) throws IOException {
-            return null;
-        }
-
-        public ResourceResolver getResourceResolver() {
-            return null;
-        }
-
-        public long getRefreshPeriod() {
-            return 0;
-        }
-    }
-
-    public static final class CustomFaceletFactory extends FaceletFactory {
-
-        private FaceletFactory delegate;
-
-        public CustomFaceletFactory(FaceletFactory delegate) {
-            this.delegate = delegate;
-        }
-
-        public Facelet getFacelet(String uri) throws IOException {
-            return delegate.getFacelet(uri);
-        }
-
-        public Facelet getFacelet(URL url) throws IOException {
-            return delegate.getFacelet(url);
-        }
-
-        public Facelet getMetadataFacelet(String uri) throws IOException {
-            return delegate.getMetadataFacelet(uri);
-        }
-
-        public Facelet getMetadataFacelet(URL url) throws IOException {
-            return delegate.getMetadataFacelet(url);
-        }
-
-        public ResourceResolver getResourceResolver() {
-            return delegate.getResourceResolver();
-        }
-
-        public long getRefreshPeriod() {
-            return delegate.getRefreshPeriod();
-        }
-
-        public FaceletFactory getDelegate() {
-            return delegate;
-        }
-
-    }
-
     public static class CustomIntConverter implements Converter {
 
         private IntegerConverter delegate = new IntegerConverter();
diff --git a/jsf-ri/test/com/sun/faces/application/TestApplicationImpl_Config.java b/jsf-ri/test/com/sun/faces/application/TestApplicationImpl_Config.java
index 53f4561..7e067ca 100644
--- a/jsf-ri/test/com/sun/faces/application/TestApplicationImpl_Config.java
+++ b/jsf-ri/test/com/sun/faces/application/TestApplicationImpl_Config.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -598,7 +602,7 @@ public class TestApplicationImpl_Config extends ServletFacesTestCase {
         boolean exceptionThrown = false;
         try {
             loadFromInitParam("/locale-config2.xml");
-        } catch (FacesException e) {
+        } catch (Throwable e) {
             exceptionThrown = true;
         }
         assertTrue(exceptionThrown);
diff --git a/jsf-ri/test/com/sun/faces/application/TestFacesMessage.java b/jsf-ri/test/com/sun/faces/application/TestFacesMessage.java
index f37474f..52a4cb4 100644
--- a/jsf-ri/test/com/sun/faces/application/TestFacesMessage.java
+++ b/jsf-ri/test/com/sun/faces/application/TestFacesMessage.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -100,71 +104,10 @@ public class TestFacesMessage extends ServletFacesTestCase {
 // General Methods
 //
     
-    public void testSerializeable() {
-        FacesMessage message = null;
-        
-        // Case 0 (nothing)
-        message = new FacesMessage();
-        persistAndCheck(message);
+// THIS TEST HAS BEEN MOVED TO THE MAVEN BASED TEST HARNESS UNDER test/unit as
+// FacesMessageTest.java
 
-        // Case 1 (summary)
-        message = new FacesMessage("This is a bad error.");
-        persistAndCheck(message);
-        
-        // Case 2 (summary & detail)
-        message = new FacesMessage("This is a bad error.", "This is a really bad error.");
-        persistAndCheck(message);
-        
-        // Case 3 (severity, summary & detail)
-        message = new FacesMessage(FacesMessage.SEVERITY_FATAL, "This is a bad error.",
-                "This is a really bad error.");
-        persistAndCheck(message);
-    }
-    
-    private void persistAndCheck(FacesMessage message) {
-        FacesMessage message1 = null;
-        String mSummary, mSummary1 = null;
-        String mDetail, mDetail1 = null;
-        String severity, severity1 = null;
-        ByteArrayOutputStream bos = null;
-        ByteArrayInputStream bis = null;
-        
-        mSummary = message.getSummary();
-        mDetail = message.getDetail();
-        severity = message.getSeverity().toString();
-        
-        try {
-            bos = new ByteArrayOutputStream();
-            ObjectOutputStream oos = new ObjectOutputStream(bos);
-            oos.writeObject(message);
-            oos.close();
-            byte[] bytes = bos.toByteArray();
-            InputStream in = new ByteArrayInputStream(bytes);
-            ObjectInputStream ois = new ObjectInputStream(in);
-            message1 = (FacesMessage)ois.readObject();
-            ois.close();
-            mSummary1 = message1.getSummary();
-            mDetail1 = message1.getDetail();
-            severity1 = message1.getSeverity().toString();
-            if (null != mSummary1) {
-                assertTrue(mSummary1.equals(mSummary));
-            } else {
-                assertTrue(mSummary == null);
-            }
-            if (null != mDetail1) {
-                assertTrue(mDetail1.equals(mDetail));
-            } else {
-                assertTrue(mDetail == null);
-            }
-            if (null != severity1) {
-                assertTrue(severity1.equals(severity));
-            } else {
-                assertTrue(severity == null);
-            }
-        } catch (Exception e) {
-            e.printStackTrace();
-            assertTrue(false);
-        } 
+    public void testSerializeable() {
     }
     
 } // end of class TestFacesMessage
diff --git a/jsf-ri/test/com/sun/faces/application/TestHASDeprStateManagerImpl.java b/jsf-ri/test/com/sun/faces/application/TestHASDeprStateManagerImpl.java
index a1b44ff..8251789 100644
--- a/jsf-ri/test/com/sun/faces/application/TestHASDeprStateManagerImpl.java
+++ b/jsf-ri/test/com/sun/faces/application/TestHASDeprStateManagerImpl.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -37,31 +41,17 @@
 package com.sun.faces.application;
 
 import org.apache.cactus.WebRequest;
-import org.apache.cactus.server.ServletConfigWrapper;
-import com.sun.faces.RIConstants;
 import com.sun.faces.cactus.ServletFacesTestCase;
 import com.sun.faces.util.Util;
 
 import javax.faces.FacesException;
-import javax.faces.application.StateManager;
 import javax.faces.application.ViewHandler;
-import javax.faces.application.StateManager.SerializedView;
-import javax.faces.component.UIComponent;
-import javax.faces.component.UIGraphic;
-import javax.faces.component.UIInput;
-import javax.faces.component.UIOutput;
 import javax.faces.component.UIViewRoot;
-import javax.faces.component.UIForm;
-import javax.faces.component.UIPanel;
-import javax.faces.context.FacesContext;
-import javax.faces.render.RenderKitFactory;
-import javax.servlet.http.HttpSession;
 
 import javax.faces.FactoryFinder;
 import javax.faces.application.Application;
 import javax.faces.application.ApplicationFactory;
 import java.io.IOException;
-import java.util.ArrayList;
 import java.util.Locale;
 
 
@@ -119,11 +109,17 @@ public class TestHASDeprStateManagerImpl extends ServletFacesTestCase {
     //
     
     public void beginRender(WebRequest theRequest) {
-        theRequest.setURL("localhost:8080", "/test", "/faces", TEST_URI, null);
+	String containerPort = System.getProperty("container.port");
+	if (null == containerPort || 0 == containerPort.length()) {
+	    containerPort = "8080";
+	}
+
+        theRequest.setURL("localhost:" + containerPort, "/test", "/faces", TEST_URI, null);
     }
 
     public void testRender() {
-        UIViewRoot newView = Util.getViewHandler(getFacesContext()).createView(getFacesContext(), TEST_URI);
+        UIViewRoot newView = Util.getViewHandler(getFacesContext()).createView(getFacesContext(), null);
+        newView.setViewId(TEST_URI);
         newView.setLocale(Locale.US);
         getFacesContext().setViewRoot(newView);
                                                                                                                       
diff --git a/jsf-ri/test/com/sun/faces/application/TestHAStateManagerImpl.java b/jsf-ri/test/com/sun/faces/application/TestHAStateManagerImpl.java
index 7272b2f..8faf2c4 100644
--- a/jsf-ri/test/com/sun/faces/application/TestHAStateManagerImpl.java
+++ b/jsf-ri/test/com/sun/faces/application/TestHAStateManagerImpl.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/test/com/sun/faces/application/TestInjection.java b/jsf-ri/test/com/sun/faces/application/TestInjection.java
index 7b0b11a..d3a1844 100644
--- a/jsf-ri/test/com/sun/faces/application/TestInjection.java
+++ b/jsf-ri/test/com/sun/faces/application/TestInjection.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -210,4 +214,4 @@ public class TestInjection extends ServletFacesTestCase {
         }
     }
 
-} // END TestInjection
\ No newline at end of file
+} // END TestInjection
diff --git a/jsf-ri/test/com/sun/faces/application/TestJSF2NavigationHandler.java b/jsf-ri/test/com/sun/faces/application/TestJSF2NavigationHandler.java
deleted file mode 100644
index ff9024e..0000000
--- a/jsf-ri/test/com/sun/faces/application/TestJSF2NavigationHandler.java
+++ /dev/null
@@ -1,302 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-// TestNavigationHandler.java
-
-package com.sun.faces.application;
-
-import javax.faces.application.NavigationCase;
-import com.sun.faces.cactus.ServletFacesTestCase;
-import com.sun.faces.util.Util;
-import com.sun.faces.config.DbfFactory;
-
-import javax.faces.FactoryFinder;
-import javax.faces.event.SystemEventListener;
-import javax.faces.event.SystemEvent;
-import javax.faces.event.AbortProcessingException;
-import javax.faces.event.PreDestroyViewMapEvent;
-import javax.faces.application.Application;
-import javax.faces.application.ApplicationFactory;
-import javax.faces.application.NavigationHandler;
-import javax.faces.component.UIViewRoot;
-import javax.faces.context.FacesContext;
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-
-import java.util.*;
-
-import org.w3c.dom.Document;
-import org.w3c.dom.NodeList;
-import org.w3c.dom.Node;
-import org.w3c.dom.NamedNodeMap;
-
-/**
- * This class test the <code>NavigationHandlerImpl</code> functionality.
- * It uses two xml files:
- * 1) faces-navigation.xml --> contains the navigation cases themselves.
- * 2) navigation-cases.xml --> contains the test cases including expected
- * view identifier outcomes for this test to validate against.
- * Both files exist under <code>web/test/WEB-INF</code>.
- * <p/>
- * <B>Lifetime And Scope</B> <P>
- *
- */
-
-public class TestJSF2NavigationHandler extends ServletFacesTestCase {
-
-//
-// Protected Constants
-//
-
-//
-// Class Variables
-//
-
-//
-// Instance Variables
-//
-    private List testResultList = null;
-
-// Attribute Instance Variables
-
-// Relationship Instance Variables
-
-//
-// Constructors and Initializers    
-//
-
-    public TestJSF2NavigationHandler() {
-        super("TestJSF2NavigationHandler");
-    }
-
-
-    public TestJSF2NavigationHandler(String name) {
-        super(name);
-    }
-//
-// Class methods
-//
-
-//
-// Methods from TestCase
-//
-
-    public void setUp() {
-        super.setUp();
-        loadConfigFile();
-    }
-
-//
-// General Methods
-//
-    private void loadConfigFile() {
-        loadFromInitParam("/WEB-INF/faces-navigation-2.xml");
-    }
-
-
-    private void loadTestResultList() throws Exception {
-
-        DocumentBuilderFactory f = DbfFactory.getFactory();
-        f.setNamespaceAware(false);
-        f.setValidating(false);
-        DocumentBuilder builder = f.newDocumentBuilder();
-
-        Document d = builder.parse(config.getServletContext().getResourceAsStream("/WEB-INF/navigation-cases-2.xml"));
-        NodeList navigationRules = d.getDocumentElement()
-              .getElementsByTagName("test");
-        for (int i = 0; i < navigationRules.getLength(); i++) {
-            Node test = navigationRules.item(i);
-            NamedNodeMap attributes = test.getAttributes();
-            Node fromViewId = attributes.getNamedItem("fromViewId");
-            Node fromAction = attributes.getNamedItem("fromAction");
-            Node fromOutput = attributes.getNamedItem("fromOutcome");
-            Node condition = attributes.getNamedItem("if");
-            Node toViewId = attributes.getNamedItem("toViewId");
-            createAndAccrueTestResult(((fromViewId != null) ? fromViewId.getTextContent().trim() : null),
-                                      ((fromAction != null) ? fromAction.getTextContent().trim() : null),
-                                      ((fromOutput != null) ? fromOutput.getTextContent().trim() : null),
-                                      ((condition != null) ? condition.getTextContent().trim() : null),
-                                      ((toViewId != null) ? toViewId.getTextContent().trim() : null));
-        }
-
-    }
-
-
-
-
-    public void createAndAccrueTestResult(String fromViewId, String fromAction,
-                                          String fromOutcome, String condition, String toViewId) {
-        if (testResultList == null) {
-            testResultList = new ArrayList();
-        }
-        TestResult testResult = new TestResult();
-        testResult.fromViewId = fromViewId;
-        testResult.fromAction = fromAction;
-        testResult.fromOutcome = fromOutcome;
-        testResult.condition = condition;
-        testResult.toViewId = toViewId;
-        testResultList.add(testResult);
-    }
-
-
-    public void testNavigationHandler() {
-
-        Application application = getFacesContext().getApplication();
-        ViewMapDestroyedListener listener = new ViewMapDestroyedListener();
-        application.subscribeToEvent(PreDestroyViewMapEvent.class,
-                                     UIViewRoot.class,
-                                     listener);
-        try {
-            loadTestResultList();
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        }
-        NavigationHandlerImpl navHandler = (NavigationHandlerImpl) application.getNavigationHandler();
-        FacesContext context = getFacesContext();
-
-        String newViewId;
-        UIViewRoot page;
-        boolean gotException = false;
-
-        for (int i = 0; i < testResultList.size(); i++) {
-            TestResult testResult = (TestResult) testResultList.get(i);
-            Boolean conditionResult = null;
-            if (testResult.condition != null) {
-                conditionResult = (Boolean) application.getExpressionFactory()
-                    .createValueExpression(context.getELContext(), testResult.condition, Boolean.class).getValue(context.getELContext());
-            }
-            System.out.println("Testing from-view-id=" + testResult.fromViewId +
-                               " from-action=" + testResult.fromAction +
-                               " from-outcome=" + testResult.fromOutcome +
-                               " if=" + testResult.condition);
-            page = Util.getViewHandler(context).createView(context, null);
-            page.setViewId(testResult.fromViewId);
-            page.setLocale(Locale.US);
-            page.getViewMap(); // cause the map to be created
-            context.setViewRoot(page);
-            listener.reset();
-            try {
-                navHandler.handleNavigation(context, testResult.fromAction,
-                                            testResult.fromOutcome);
-            } catch (Exception e) {
-                // exception is valid only if context or fromoutcome is null.
-                assertTrue(testResult.fromOutcome == null);
-                gotException = true;
-            }
-            if (!gotException) {
-                // test assumption: if the from and to change, it's because the outcome was not-null or a condition was evaluated
-                if (!testResult.fromViewId.equals(testResult.toViewId)
-                    && (testResult.fromOutcome != null || testResult.condition != null)
-                    && (testResult.condition == null || conditionResult != null)) {
-                    assertTrue(listener.getPassedEvent() instanceof PreDestroyViewMapEvent);
-                } else {
-                    assertTrue(!listener.wasProcessEventInvoked());
-                    assertTrue(listener.getPassedEvent() == null);
-                }
-                listener.reset();
-                newViewId = context.getViewRoot().getViewId();
-                if (testResult.fromOutcome == null && testResult.condition == null) {
-                    listener.reset();
-                    System.out.println(
-                        "assertTrue(" + newViewId + ".equals(" +
-                        testResult.fromViewId +
-                        "))");
-                    assertTrue(newViewId.equals(testResult.fromViewId));
-                }
-                // test assumption: if condition is false, we advance to some other view
-                else if (testResult.condition != null && conditionResult == false) {
-                    listener.reset();
-                    System.out.println(
-                        "assertTrue(!" + newViewId + ".equals(" +
-                        testResult.toViewId +
-                        "))");
-                    assertTrue(!newViewId.equals(testResult.toViewId));
-                } else {
-                    listener.reset();
-                    System.out.println(
-                        "assertTrue(" + newViewId + ".equals(" +
-                        testResult.toViewId +
-                        "))");
-                    assertTrue(newViewId.equals(testResult.toViewId));
-                }
-            }
-        }
-        application.unsubscribeFromEvent(PreDestroyViewMapEvent.class,
-                                         UIViewRoot.class,
-                                         listener);
-    }
-
-    class TestResult extends Object {
-
-        public String fromViewId = null;
-        public String fromAction = null;
-        public String fromOutcome = null;
-        public String condition = null;
-        public String toViewId = null;
-    }
-
-    private static final class ViewMapDestroyedListener
-          implements SystemEventListener {
-
-        private SystemEvent event;
-        private boolean processEventInvoked;
-
-        public void processEvent(SystemEvent event)
-        throws AbortProcessingException {
-            this.processEventInvoked = true;
-            this.event = event;
-        }
-
-        public boolean isListenerForSource(Object source) {
-            return (source instanceof UIViewRoot);
-        }
-
-        public SystemEvent getPassedEvent() {
-            return event;
-        }
-
-        public boolean wasProcessEventInvoked() {
-            return processEventInvoked;
-        }
-
-        public void reset() {
-            processEventInvoked = false;
-            event = null;
-        }
-    }
-
-} // end of class TestNavigationHandler
-
diff --git a/jsf-ri/test/com/sun/faces/application/TestNavigationHandler.java b/jsf-ri/test/com/sun/faces/application/TestNavigationHandler.java
deleted file mode 100644
index 2aae651..0000000
--- a/jsf-ri/test/com/sun/faces/application/TestNavigationHandler.java
+++ /dev/null
@@ -1,464 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-// TestNavigationHandler.java
-
-package com.sun.faces.application;
-
-import com.sun.faces.cactus.ServletFacesTestCase;
-import com.sun.faces.util.Util;
-import com.sun.faces.config.DbfFactory;
-
-import javax.faces.FactoryFinder;
-import javax.faces.event.SystemEventListener;
-import javax.faces.event.SystemEvent;
-import javax.faces.event.AbortProcessingException;
-import javax.faces.event.PreDestroyViewMapEvent;
-import javax.faces.application.*;
-import javax.faces.component.UIViewRoot;
-import javax.faces.context.FacesContext;
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-
-import java.util.*;
-
-import org.w3c.dom.Document;
-import org.w3c.dom.NodeList;
-import org.w3c.dom.Node;
-import org.w3c.dom.NamedNodeMap;
-
-/**
- * This class test the <code>NavigationHandlerImpl</code> functionality.
- * It uses two xml files:
- * 1) faces-navigation.xml --> contains the navigation cases themselves.
- * 2) navigation-cases.xml --> contains the test cases including expected
- * view identifier outcomes for this test to validate against.
- * Both files exist under <code>web/test/WEB-INF</code>.
- * <p/>
- * <B>Lifetime And Scope</B> <P>
- *
- */
-
-public class TestNavigationHandler extends ServletFacesTestCase {
-
-//
-// Protected Constants
-//
-
-//
-// Class Variables
-//
-
-//
-// Instance Variables
-//
-    private List testResultList = null;
-
-// Attribute Instance Variables
-
-// Relationship Instance Variables
-
-//
-// Constructors and Initializers    
-//
-
-    public TestNavigationHandler() {
-        super("TestNavigationHandler");
-    }
-
-
-    public TestNavigationHandler(String name) {
-        super(name);
-    }
-//
-// Class methods
-//
-
-//
-// Methods from TestCase
-//
-
-    public void setUp() {
-        super.setUp();
-        loadConfigFile();
-    }
-
-//
-// General Methods
-//
-    private void loadConfigFile() {
-        loadFromInitParam("/WEB-INF/faces-navigation.xml");
-    }
-
-
-    private void loadTestResultList() throws Exception {
-
-        DocumentBuilderFactory f = DbfFactory.getFactory();
-        f.setNamespaceAware(false);
-        f.setValidating(false);
-        DocumentBuilder builder = f.newDocumentBuilder();
-
-        Document d = builder.parse(config.getServletContext().getResourceAsStream("/WEB-INF/navigation-cases.xml"));
-        NodeList navigationRules = d.getDocumentElement()
-              .getElementsByTagName("test");
-        for (int i = 0; i < navigationRules.getLength(); i++) {
-            Node test = navigationRules.item(i);
-            NamedNodeMap attributes = test.getAttributes();
-            Node fromViewId = attributes.getNamedItem("fromViewId");
-            Node fromAction = attributes.getNamedItem("fromAction");
-            Node fromOutput = attributes.getNamedItem("fromOutcome");
-            Node toViewId = attributes.getNamedItem("toViewId");
-            createAndAccrueTestResult(((fromViewId != null) ? fromViewId.getTextContent().trim() : null),
-                                      ((fromAction != null) ? fromAction.getTextContent().trim() : null),
-                                      ((fromOutput != null) ? fromOutput.getTextContent().trim() : null),
-                                      ((toViewId != null) ? toViewId.getTextContent().trim() : null));
-        }
-
-    }
-
-
-
-
-    public void createAndAccrueTestResult(String fromViewId, String fromAction,
-                                          String fromOutcome, String toViewId) {
-        if (testResultList == null) {
-            testResultList = new ArrayList();
-        }
-        TestResult testResult = new TestResult();
-        testResult.fromViewId = fromViewId;
-        testResult.fromAction = fromAction;
-        testResult.fromOutcome = fromOutcome;
-        testResult.toViewId = toViewId;
-        testResultList.add(testResult);
-    }
-
-
-    public void testNavigationHandler() {
-
-        Application application = getFacesContext().getApplication();
-        ViewMapDestroyedListener listener = new ViewMapDestroyedListener();
-        application.subscribeToEvent(PreDestroyViewMapEvent.class,
-                                     UIViewRoot.class,
-                                     listener);
-        try {
-            loadTestResultList();
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        }
-        NavigationHandlerImpl navHandler = (NavigationHandlerImpl) application.getNavigationHandler();
-        FacesContext context = getFacesContext();
-
-        String newViewId;
-        UIViewRoot page;
-        boolean gotException = false;
-
-        for (int i = 0; i < testResultList.size(); i++) {
-            TestResult testResult = (TestResult) testResultList.get(i);
-            System.out.println("Testing from-view-id=" + testResult.fromViewId +
-                               " from-action=" + testResult.fromAction +
-                               " from-outcome=" + testResult.fromOutcome);
-            page = Util.getViewHandler(getFacesContext()).createView(getFacesContext(), null);
-            page.setViewId(testResult.fromViewId);
-            page.setLocale(Locale.US);
-            page.getViewMap(); // cause the map to be created
-            context.setViewRoot(page);
-            listener.reset();
-            try {
-                navHandler.handleNavigation(context, testResult.fromAction,
-                                            testResult.fromOutcome);
-            } catch (Exception e) {
-                // exception is valid only if context or fromoutcome is null.
-                assertTrue(testResult.fromOutcome == null);
-                gotException = true;
-            }
-            if (!gotException) {
-                if (!testResult.fromViewId.equals(testResult.toViewId)
-                    && testResult.fromOutcome != null) {
-                    assertTrue(listener.getPassedEvent() instanceof PreDestroyViewMapEvent);
-                } else {
-                    assertTrue(!listener.wasProcessEventInvoked());
-                    assertTrue(listener.getPassedEvent() == null);
-                }
-                listener.reset();
-                newViewId = context.getViewRoot().getViewId();
-                if (testResult.fromOutcome == null) {
-                    listener.reset();
-                    System.out.println(
-                        "assertTrue(" + newViewId + ".equals(" +
-                        testResult.fromViewId +
-                        "))");
-                    assertTrue(newViewId.equals(testResult.fromViewId));
-                } else {
-                    listener.reset();
-                    System.out.println(
-                        "assertTrue(" + newViewId + ".equals(" +
-                        testResult.toViewId +
-                        "))");
-                    assertTrue(newViewId.equals(testResult.toViewId));
-                }
-            }
-        }
-        application.unsubscribeFromEvent(PreDestroyViewMapEvent.class,
-                                         UIViewRoot.class,
-                                         listener);
-    }
-
-     public void testSimilarFromViewId() {
-        ApplicationFactory aFactory =
-            (ApplicationFactory) FactoryFinder.getFactory(
-                FactoryFinder.APPLICATION_FACTORY);
-        Application application = aFactory.getApplication();
-        NavigationHandler navHandler = application.getNavigationHandler();
-
-        UIViewRoot root = application.getViewHandler().createView(getFacesContext(), "/dir1/dir2/dir3/test.jsp");
-        root.setLocale(Locale.US);
-        getFacesContext().setViewRoot(root);
-
-        try {
-            navHandler.handleNavigation(getFacesContext(), null, "home");
-        } catch (Exception e) {
-            e.printStackTrace();
-            assert(false);
-        }
-        String newViewId = getFacesContext().getViewRoot().getViewId();
-        assertTrue("newViewId is: " + newViewId, "/dir1/dir2/dir3/home.jsp".equals(newViewId));
-    }
-
-    // This tests that the same <from-view-id> element value existing in a seperate
-    // navigation rule, gets combined with the other rules with the same <from-view-id>.
-    // Specifically, it will to make sure that after loading, there are the correct number of
-    // cases with the common <from-view-id>;
- 
-    public void testSeperateRule() {
-        int cnt = 0;
-        ApplicationFactory aFactory =
-            (ApplicationFactory) FactoryFinder.getFactory(
-                FactoryFinder.APPLICATION_FACTORY);
-        Application application = aFactory.getApplication();
-        assertTrue(application instanceof ApplicationImpl);
-        ConfigurableNavigationHandler handler = (ConfigurableNavigationHandler) application.getNavigationHandler();
-        Map caseListMap = handler.getNavigationCases();
-        Iterator iter = caseListMap.keySet().iterator();
-        while (iter.hasNext()) {
-            String fromViewId = (String) iter.next();
-            if (fromViewId.equals("/login.jsp")) {
-                Set<NavigationCase> caseSet = (Set<NavigationCase>) caseListMap.get(fromViewId);
-                for (NavigationCase navCase : caseSet) {
-                    if (navCase.getFromViewId().equals("/login.jsp")) {
-                        cnt++;
-                    }
-                }
-            }
-        }
-        assertTrue(cnt == 6);
-    }
-
-
-    public void testWrappedNavigationHandler() {
-
-        Application app = getFacesContext().getApplication();
-        ConfigurableNavigationHandler impl = new NavigationHandlerImpl();
-        NavigationHandler parent = new WrapperNavigationHandler(impl);
-        parent.handleNavigation(getFacesContext(), "", "");
-
-        int cnt = 0;
-        Map caseListMap = impl.getNavigationCases();
-        Iterator iter = caseListMap.keySet().iterator();
-        while (iter.hasNext()) {
-            String fromViewId = (String) iter.next();
-            if (fromViewId.equals("/login.jsp")) {
-                Set<NavigationCase> caseSet = (Set<NavigationCase>) caseListMap.get(fromViewId);
-                for (NavigationCase navCase : caseSet) {
-                    if (navCase.getFromViewId().equals("/login.jsp")) {
-                        cnt++;
-                    }
-                }
-            }
-        }
-        assertTrue(cnt == 6);
-
-    }
-
-
-    public void testRedirectParameters() {
-        Application app = getFacesContext().getApplication();
-        UIViewRoot root = (UIViewRoot) app.createComponent(UIViewRoot.COMPONENT_TYPE);
-        root.setViewId("/page1.xhtml");
-        getFacesContext().setViewRoot(root);
-        ConfigurableNavigationHandler cnh =
-              (ConfigurableNavigationHandler) getFacesContext().getApplication().getNavigationHandler();
-        NavigationCase c1 = cnh.getNavigationCase(getFacesContext(),
-                                                  null,
-                                                  "redirectOutcome1");
-        Map<String,List<String>> parameters = c1.getParameters();
-        assertNotNull(parameters);
-        assertEquals(2, parameters.size());
-        List<String> fooParams = parameters.get("foo");
-        assertNotNull(fooParams);
-        assertEquals(2, fooParams.size());
-        assertEquals("bar", fooParams.get(0));
-        assertEquals("bar2", fooParams.get(1));
-        List<String> foo2Params = parameters.get("foo2");
-        assertEquals(1, foo2Params.size());
-        assertEquals("bar3", foo2Params.get(0));
-        assertTrue(c1.isIncludeViewParams());
-
-        NavigationCase c2 = cnh.getNavigationCase(getFacesContext(),
-                                                  null,
-                                                  "redirectOutcome2");
-        parameters = c2.getParameters();
-        assertNull(parameters);
-        assertFalse(c2.isIncludeViewParams());
-
-        // ensure implicit navigation outcomes that include query strings
-        // are properly parsed.
-
-        NavigationCase c3 = cnh.getNavigationCase(getFacesContext(),
-                                                  null,
-                                                  "test?foo=rab&foo=rab2&foo2=rab3&faces-redirect=true&includeViewParams=true&");
-        assertNotNull(c3);
-        parameters = c3.getParameters();
-        assertNotNull(parameters);
-        assertTrue(c3.isRedirect());
-        assertTrue(c3.isIncludeViewParams());
-        assertEquals(2, parameters.size());
-        fooParams = parameters.get("foo");
-        assertNotNull(fooParams);
-        assertEquals(2, fooParams.size());
-        assertEquals("rab", fooParams.get(0));
-        assertEquals("rab2", fooParams.get(1));
-        foo2Params = parameters.get("foo2");
-        assertEquals(1, foo2Params.size());
-        assertEquals("rab3", foo2Params.get(0));
-
-        // ensure implicit navigation outcomes that include query strings
-        // separated with & are properly parsed.
-
-        NavigationCase c4 = cnh.getNavigationCase(getFacesContext(),
-                                                  null,
-                                                  "test?foo=rab&foo=rab2&foo2=rab3&faces-redirect=true&includeViewParams=true&");
-        assertNotNull(c4);
-        parameters = c4.getParameters();
-        assertNotNull(parameters);
-        assertTrue(c4.isRedirect());
-        assertTrue(c4.isIncludeViewParams());
-        assertEquals(2, parameters.size());
-        fooParams = parameters.get("foo");
-        assertNotNull(fooParams);
-        assertEquals(2, fooParams.size());
-        assertEquals("rab", fooParams.get(0));
-        assertEquals("rab2", fooParams.get(1));
-        foo2Params = parameters.get("foo2");
-        assertEquals(1, foo2Params.size());
-        assertEquals("rab3", foo2Params.get(0));
-
-        // ensure invalid query string correctly handled
-        NavigationCase c5 = cnh.getNavigationCase(getFacesContext(),
-                                                  null,
-                                                  "test?");
-
-        assertNotNull(c5);
-        assertNull(c5.getParameters());
-        assertFalse(c5.isRedirect());
-        assertFalse(c5.isIncludeViewParams());
-
-        // ensure redirect parameter el evaluation is performed more than once
-        NavigationCase ncase = cnh.getNavigationCase(getFacesContext(),
-                                                     null,
-                                                     "redirectOutcome3");
-        String url = getFacesContext().getExternalContext().encodeRedirectURL("/path.xhtml", ncase.getParameters());
-        System.out.println("URL: " + url);
-        assertTrue(url.contains("param=1"));
-        url = getFacesContext().getExternalContext().encodeRedirectURL("/path.xhtml", ncase.getParameters());
-        assertTrue(url.contains("param=2"));
-        
-    }
-
-    // ---------------------------------------------------------- Nested Classes
-
-    private static final class WrapperNavigationHandler extends NavigationHandler {
-
-        private NavigationHandler delegate;
-
-        public WrapperNavigationHandler(NavigationHandler delegate) {
-            this.delegate = delegate;
-        }
-
-        public void handleNavigation(FacesContext context, String fromAction, String outcome) {
-            delegate.handleNavigation(context, fromAction, outcome);
-        }
-    }
-
-    class TestResult extends Object {
-
-        public String fromViewId = null;
-        public String fromAction = null;
-        public String fromOutcome = null;
-        public String toViewId = null;
-    }
-
-    private static final class ViewMapDestroyedListener
-          implements SystemEventListener {
-
-        private SystemEvent event;
-        private boolean processEventInvoked;
-
-        public void processEvent(SystemEvent event)
-        throws AbortProcessingException {
-            this.processEventInvoked = true;
-            this.event = event;
-        }
-
-        public boolean isListenerForSource(Object source) {
-            return (source instanceof UIViewRoot);
-        }
-
-        public SystemEvent getPassedEvent() {
-            return event;
-        }
-
-        public boolean wasProcessEventInvoked() {
-            return processEventInvoked;
-        }
-
-        public void reset() {
-            processEventInvoked = false;
-            event = null;
-        }
-    }
-
-} // end of class TestNavigationHandler
-
diff --git a/jsf-ri/test/com/sun/faces/application/TestStateManagerImpl.java b/jsf-ri/test/com/sun/faces/application/TestStateManagerImpl.java
index f8a7ef9..8d5b4bc 100644
--- a/jsf-ri/test/com/sun/faces/application/TestStateManagerImpl.java
+++ b/jsf-ri/test/com/sun/faces/application/TestStateManagerImpl.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -298,20 +302,31 @@ public class TestStateManagerImpl extends ServletFacesTestCase {
 
         initView(ctx);
 
+        // 
+        // Cause the state to be written to the hidden field
+        //
         StringWriter capture = new StringWriter();
         ResponseWriter writer = new HtmlResponseWriter(capture,
                                                        "text/html",
                                                        "UTF-8");
         ctx.setResponseWriter(writer);
         StateManager manager = ctx.getApplication().getStateManager();
-        Object state = ctx.getApplication().getStateManager().saveView(ctx);
+        Object state = manager.saveView(ctx);
         manager.writeState(ctx, state);
+        
+        //
+        // Extract the state from the hidden field
+        //
         String rawResult = capture.toString();
         Pattern p = Pattern.compile("\\bvalue=\"(.+)\"");
         Matcher m = p.matcher(rawResult);
         assertTrue(m.find());
         String control = m.group(1);
-        String result = ctx.getApplication().getStateManager().getViewState(ctx);
+        
+        // 
+        // Get the state as a string
+        // 
+        String result = manager.getViewState(ctx);
 
         assertEquals(control, result);
 
diff --git a/jsf-ri/test/com/sun/faces/application/TestViewHandlerImpl.java b/jsf-ri/test/com/sun/faces/application/TestViewHandlerImpl.java
index da96823..d0022f2 100644
--- a/jsf-ri/test/com/sun/faces/application/TestViewHandlerImpl.java
+++ b/jsf-ri/test/com/sun/faces/application/TestViewHandlerImpl.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -34,7 +38,6 @@
  * holder.
  */
 
-
 // TestViewHandlerImpl.java
 
 
@@ -140,14 +143,25 @@ public class TestViewHandlerImpl extends JspFacesTestCase {
 
     public TestViewHandlerImpl() {
         super("TestViewHandlerImpl");
+	initLocalHostPath();
     }
 
 
     public TestViewHandlerImpl(String name) {
         super(name);
+	initLocalHostPath();
     }
 
+    private String path = "localhost:8080";
 
+    private void initLocalHostPath() {
+	String containerPort = System.getProperty("container.port");
+	if (null == containerPort || 0 == containerPort.length()) {
+	    containerPort = "8080";
+	}
+	path = "localhost:" + containerPort;
+    }
+	
     //
     // Class methods
     //
@@ -160,56 +174,56 @@ public class TestViewHandlerImpl extends JspFacesTestCase {
 
 
     public void beginRender(WebRequest theRequest) {
-        theRequest.setURL("localhost:8080", "/test", "/faces", TEST_URI, null);
+        theRequest.setURL(path, "/test", "/faces", TEST_URI, null);
     }
 
 
     public void beginRender2(WebRequest theRequest) {
-        theRequest.setURL("localhost:8080", "/test", "/somepath/greeting.jsf",
+        theRequest.setURL(path, "/test", "/somepath/greeting.jsf",
                           null, null);
     }
 
     public void beginTransient(WebRequest theRequest) {
-        theRequest.setURL("localhost:8080", "/test", "/faces", TEST_URI, null);
+        theRequest.setURL(path, "/test", "/faces", TEST_URI, null);
 	theRequest.addParameter("javax.faces.ViewState", "j_id1:j_id2");
     }
 
     public void beginCalculateLocaleLang(WebRequest theRequest) {
-        theRequest.setURL("localhost:8080", "/test", "/somepath/greeting.jsf",
+        theRequest.setURL(path, "/test", "/somepath/greeting.jsf",
                           null, null);
         theRequest.addHeader("Accept-Language", "es-ES,tg-AF,tk-IQ,en-US");
     }
 
 
     public void beginCalculateLocaleExact(WebRequest theRequest) {
-        theRequest.setURL("localhost:8080", "/test", "/somepath/greeting.jsf",
+        theRequest.setURL(path, "/test", "/somepath/greeting.jsf",
                           null, null);
         theRequest.addHeader("Accept-Language", "tg-AF,tk-IQ,ps-PS,en-US");
     }
 
 
     public void beginCalculateLocaleLowerCase(WebRequest theRequest) {
-        theRequest.setURL("localhost:8080", "/test", "/somepath/greeting.jsf",
+        theRequest.setURL(path, "/test", "/somepath/greeting.jsf",
                           null, null);
         theRequest.addHeader("Accept-Language", "tg-af,tk-iq,ps-ps");
     }
 
 
     public void beginCalculateLocaleNoMatch(WebRequest theRequest) {
-        theRequest.setURL("localhost:8080", "/test", "/somepath/greeting.jsf",
+        theRequest.setURL(path, "/test", "/somepath/greeting.jsf",
                           null, null);
         theRequest.addHeader("Accept-Language", "es-ES,tg-AF,tk-IQ");
     }
 
 
     public void beginCalculateLocaleFindDefault(WebRequest theRequest) {
-        theRequest.setURL("localhost:8080", "/test", "/somepath/greeting.jsf",
+        theRequest.setURL(path, "/test", "/somepath/greeting.jsf",
                           null, null);
         theRequest.addHeader("Accept-Language", "en,fr");
     }
 
     public void beginRestoreViewNegative(WebRequest theRequest) {
-        theRequest.setURL("localhost:8080", "/test", "/faces", null, null);
+        theRequest.setURL(path, "/test", "/faces", null, null);
     }
 
     public void testGetActionURL() {
@@ -304,7 +318,7 @@ public class TestViewHandlerImpl extends JspFacesTestCase {
                                     info);
         FaceletViewHandlingStrategy strat = new FaceletViewHandlingStrategy();
         getFacesContext().getViewRoot().setViewId("/index.xhtml");
-        assertNotNull(strat.getStateManagementStrategy(getFacesContext(), "/index.xhmtl"));
+        assertNotNull(strat.getStateManagementStrategy(getFacesContext(), "/index.xhtml"));
         assertNotNull(getFacesContext().getAttributes().remove("com.sun.faces.context.StateContext_KEY"));
         getFacesContext().getViewRoot().setViewId("/index2.xhtml");
         assertNotNull(strat.getStateManagementStrategy(getFacesContext(), "/index2.xhtml"));
@@ -320,10 +334,10 @@ public class TestViewHandlerImpl extends JspFacesTestCase {
                                     info);
 
         getFacesContext().getViewRoot().setViewId("/index.xhtml");
-        assertNull(strat.getStateManagementStrategy(getFacesContext(), "/index.xhmtl"));
+        assertNotNull(strat.getStateManagementStrategy(getFacesContext(), "/index.xhtml"));
         assertNotNull(getFacesContext().getAttributes().remove("com.sun.faces.context.StateContext_KEY"));
         getFacesContext().getViewRoot().setViewId("/index2.xhtml");
-        assertNull(strat.getStateManagementStrategy(getFacesContext(), "/index2.xhtml"));
+        assertNotNull(strat.getStateManagementStrategy(getFacesContext(), "/index2.xhtml"));
         assertNotNull(getFacesContext().getAttributes().remove("com.sun.faces.context.StateContext_KEY"));
 
         // ---------------------------------------------
@@ -337,7 +351,7 @@ public class TestViewHandlerImpl extends JspFacesTestCase {
                                     info);
 
         getFacesContext().getViewRoot().setViewId("/index.xhtml");
-        assertNull(strat.getStateManagementStrategy(getFacesContext(), "/index.xhtml"));
+        assertNotNull(strat.getStateManagementStrategy(getFacesContext(), "/index.xhtml"));
         assertNotNull(getFacesContext().getAttributes().remove("com.sun.faces.context.StateContext_KEY"));
 
         getFacesContext().getViewRoot().setViewId("/index2.xhtml");
@@ -356,11 +370,11 @@ public class TestViewHandlerImpl extends JspFacesTestCase {
         
 
         getFacesContext().getViewRoot().setViewId("/index.xhtml");
-        assertNull(strat.getStateManagementStrategy(getFacesContext(), "/index.xhtml"));
+        assertNotNull(strat.getStateManagementStrategy(getFacesContext(), "/index.xhtml"));
         assertNotNull(getFacesContext().getAttributes().remove("com.sun.faces.context.StateContext_KEY"));
 
         getFacesContext().getViewRoot().setViewId("/index2.xhtml");
-        assertNull(strat.getStateManagementStrategy(getFacesContext(), "/index2.xhtml"));
+        assertNotNull(strat.getStateManagementStrategy(getFacesContext(), "/index2.xhtml"));
         assertNotNull(getFacesContext().getAttributes().remove("com.sun.faces.context.StateContext_KEY"));
 
         getFacesContext().getViewRoot().setViewId("/index3.xhtml");
diff --git a/jsf-ri/test/com/sun/faces/application/VariableResolverTestImpl.java b/jsf-ri/test/com/sun/faces/application/VariableResolverTestImpl.java
index 39666d1..2a67c9a 100644
--- a/jsf-ri/test/com/sun/faces/application/VariableResolverTestImpl.java
+++ b/jsf-ri/test/com/sun/faces/application/VariableResolverTestImpl.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/test/com/sun/faces/application/ViewHandlerTestImpl.java b/jsf-ri/test/com/sun/faces/application/ViewHandlerTestImpl.java
index 439e3c4..87661a4 100644
--- a/jsf-ri/test/com/sun/faces/application/ViewHandlerTestImpl.java
+++ b/jsf-ri/test/com/sun/faces/application/ViewHandlerTestImpl.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/test/com/sun/faces/application/packagehack/PackageHack.java b/jsf-ri/test/com/sun/faces/application/packagehack/PackageHack.java
new file mode 100644
index 0000000..f37a457
--- /dev/null
+++ b/jsf-ri/test/com/sun/faces/application/packagehack/PackageHack.java
@@ -0,0 +1,55 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.application.packagehack;
+
+import java.util.List;
+import java.util.Map;
+import javax.faces.context.FacesContext;
+
+public class PackageHack {
+    
+    public static Map<String, List<String>> evaluateExpressions(FacesContext context, Map<String, List<String>> map) {    
+        Map<String, List<String>> result = SharedUtils.evaluateExpressions(context, map);
+        
+        return result;
+    }
+    
+}
diff --git a/jsf-ri/test/com/sun/faces/application/resource/TestResourceHandlerImpl.java b/jsf-ri/test/com/sun/faces/application/resource/TestResourceHandlerImpl.java
index 6cc95de..58ea8f6 100644
--- a/jsf-ri/test/com/sun/faces/application/resource/TestResourceHandlerImpl.java
+++ b/jsf-ri/test/com/sun/faces/application/resource/TestResourceHandlerImpl.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -34,19 +38,25 @@
  * holder.
  */
 
-
 package com.sun.faces.application.resource;
 
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
+import java.io.OutputStream;
+import java.lang.Override;
+import java.lang.String;
 import java.net.URL;
 import java.net.URLConnection;
 import java.util.Arrays;
 import java.util.zip.GZIPOutputStream;
 
+import javax.faces.application.*;
+import javax.faces.application.Application;
 import javax.faces.application.Resource;
 import javax.faces.application.ResourceHandler;
+import javax.faces.application.ResourceHandlerWrapper;
+import javax.faces.application.ResourceWrapper;
 import javax.servlet.ServletOutputStream;
 import javax.servlet.http.HttpServletResponse;
 import javax.servlet.http.HttpServletResponseWrapper;
@@ -55,11 +65,15 @@ import com.sun.faces.cactus.ServletFacesTestCase;
 import com.sun.faces.config.WebConfiguration;
 import com.sun.faces.util.Util;
 import com.sun.faces.application.ApplicationAssociate;
+import com.sun.faces.config.InitFacesContext;
+import java.lang.reflect.Method;
 import java.text.SimpleDateFormat;
 import java.util.Date;
 import java.util.Locale;
 import java.util.TimeZone;
-import javax.faces.application.Application;
+import javax.faces.FactoryFinder;
+import javax.faces.context.ExternalContext;
+import javax.faces.context.FacesContext;
 import org.apache.cactus.WebRequest;
 import org.apache.cactus.WebResponse;
 
@@ -77,16 +91,47 @@ public class TestResourceHandlerImpl extends ServletFacesTestCase {
 
      public TestResourceHandlerImpl() {
         super("TestResourceHandlerImpl");
+	initLocalHostPath();
     }
 
 
     public TestResourceHandlerImpl(String name) {
         super(name);
+	initLocalHostPath();
     }
 
+    private String path = "localhost:8080";
+
+    private void initLocalHostPath() {
+	String containerPort = System.getProperty("container.port");
+	if (null == containerPort || 0 == containerPort.length()) {
+	    containerPort = "8080";
+	}
+	path = "localhost:" + containerPort;
+    }
+	
 
     @Override
     public void setUp() {
+        try {
+            Method reInitializeFactoryManager = FactoryFinder.class.getDeclaredMethod("reInitializeFactoryManager", (Class<?>[]) null);
+            reInitializeFactoryManager.setAccessible(true);
+            reInitializeFactoryManager.invoke(null, (Object[]) null);
+
+            FacesContext oldContext = FacesContext.getCurrentInstance();
+            if (null != oldContext && (oldContext instanceof InitFacesContext)) {
+                // JAVASERVERFACES-2140
+                assert(Util.isUnitTestModeEnabled());
+                System.out.println("Re-initializing ExternalContext with ServletContext from cactus: " +
+                        getConfig().getServletContext());
+                System.out.flush();
+                ((InitFacesContext)oldContext).reInitializeExternalContext(getConfig().getServletContext());
+            }
+            
+
+        } catch (Exception e) {
+            fail(e.getMessage());
+        }
         super.setUp();
     }
 
@@ -149,12 +194,6 @@ public class TestResourceHandlerImpl extends ServletFacesTestCase {
         assertTrue("duke-nv.gif".equals(resource.getResourceName()));
         assertTrue("image/gif".equals(resource.getContentType()));
 
-        resource = handler.createResource("images/duke-nv.gif", "nvLibrary");
-        assertTrue(resource != null);
-        assertTrue("nvLibrary".equals(resource.getLibraryName()));
-        assertTrue("images/duke-nv.gif".equals(resource.getResourceName()));
-        assertTrue("image/gif".equals(resource.getContentType()));
-
         resource = handler.createResource("duke-nv.gif", "nvLibrary", "text/xml");
         assertTrue(resource != null);
         assertTrue("nvLibrary".equals(resource.getLibraryName()));
@@ -177,7 +216,7 @@ public class TestResourceHandlerImpl extends ServletFacesTestCase {
 
 
     public void beginIsResourceRequestPrefixMapped(WebRequest req) {
-        req.setURL("localhost:8080", "/test", "/faces/", "/javax.faces.resource/duke-nv.gif", null);
+        req.setURL(path, "/test", "/faces/", "/javax.faces.resource/duke-nv.gif", null);
     }
 
     public void testIsResourceRequestPrefixMapped() throws Exception {
@@ -189,7 +228,7 @@ public class TestResourceHandlerImpl extends ServletFacesTestCase {
 
 
     public void beginIsResourceRequestExtensionMapped(WebRequest req) {
-        req.setURL("localhost:8080", "/test", "/javax.faces.resource/duke-nv.gif.faces", null, null);
+        req.setURL(path, "/test", "/javax.faces.resource/duke-nv.gif.faces", null, null);
     }
 
     public void testIsResourceRequestExtensionMapped() throws Exception {
@@ -202,7 +241,7 @@ public class TestResourceHandlerImpl extends ServletFacesTestCase {
 
     ////////////////////////////////////////////////////////////////////////////
     public void beginHandleResourceRequestExcludesPrefixMapped1(WebRequest req) {
-        req.setURL("localhost:8080", "/test", "/faces/", "/javax.faces.resource/test.jsp", null);
+        req.setURL(path, "/test", "/faces/", "/javax.faces.resource/test.jsp", null);
     }
 
     public void testHandleResourceRequestExcludesPrefixMapped1() throws Exception {
@@ -219,7 +258,7 @@ public class TestResourceHandlerImpl extends ServletFacesTestCase {
 
     ////////////////////////////////////////////////////////////////////////////
     public void beginHandleResourceRequestExcludesPrefixMapped2(WebRequest req) {
-        req.setURL("localhost:8080", "/test", "/faces/", "/javax.faces.resource/test.properties", null);
+        req.setURL(path, "/test", "/faces/", "/javax.faces.resource/test.properties", null);
     }
 
     public void testHandleResourceRequestExcludesPrefixMapped2() throws Exception {
@@ -236,7 +275,7 @@ public class TestResourceHandlerImpl extends ServletFacesTestCase {
 
     ////////////////////////////////////////////////////////////////////////////
     public void beginHandleResourceRequestExcludesPrefixMapped3(WebRequest req) {
-        req.setURL("localhost:8080", "/test", "/faces/", "/javax.faces.resource/test.xhtml", null);
+        req.setURL(path, "/test", "/faces/", "/javax.faces.resource/test.xhtml", null);
     }
 
     public void testHandleResourceRequestExcludesPrefixMapped3() throws Exception {
@@ -253,7 +292,7 @@ public class TestResourceHandlerImpl extends ServletFacesTestCase {
 
     ////////////////////////////////////////////////////////////////////////////
     public void beginHandleResourceRequestExcludesPrefixMapped4(WebRequest req) {
-        req.setURL("localhost:8080", "/test", "/faces/", "/javax.faces.resource/test.class", null);
+        req.setURL(path, "/test", "/faces/", "/javax.faces.resource/test.class", null);
     }
 
     public void testHandleResourceRequestExcludesPrefixMapped4() throws Exception {
@@ -269,7 +308,7 @@ public class TestResourceHandlerImpl extends ServletFacesTestCase {
 
     ////////////////////////////////////////////////////////////////////////////
     public void beginHandleResourceRequestExcludeExtensionMapped1(WebRequest req) {
-        req.setURL("localhost:8080", "/test", "/javax.faces.resource/duke-nv.jsp.faces", null, null);
+        req.setURL(path, "/test", "/javax.faces.resource/duke-nv.jsp.faces", null, null);
     }
 
     public void testHandleResourceRequestExcludeExtensionMapped1() throws Exception {
@@ -286,7 +325,7 @@ public class TestResourceHandlerImpl extends ServletFacesTestCase {
 
     ////////////////////////////////////////////////////////////////////////////
     public void beginHandleResourceRequestExcludeExtensionMapped2(WebRequest req) {
-        req.setURL("localhost:8080", "/test", "/javax.faces.resource/duke-nv.properties.faces", null, null);
+        req.setURL(path, "/test", "/javax.faces.resource/duke-nv.properties.faces", null, null);
     }
 
     public void testHandleResourceRequestExcludeExtensionMapped2() throws Exception {
@@ -303,7 +342,7 @@ public class TestResourceHandlerImpl extends ServletFacesTestCase {
 
     ////////////////////////////////////////////////////////////////////////////
     public void beginHandleResourceRequestExcludeExtensionMapped3(WebRequest req) {
-        req.setURL("localhost:8080", "/test", "/javax.faces.resource/duke-nv.xhtml.faces", null, null);
+        req.setURL(path, "/test", "/javax.faces.resource/duke-nv.xhtml.faces", null, null);
     }
 
     public void testHandleResourceRequestExcludeExtensionMapped3() throws Exception {
@@ -320,7 +359,7 @@ public class TestResourceHandlerImpl extends ServletFacesTestCase {
 
     ////////////////////////////////////////////////////////////////////////////
     public void beginHandleResourceRequestExcludeExtensionMapped4(WebRequest req) {
-        req.setURL("localhost:8080", "/test", "/javax.faces.resource/duke-nv.class.faces", null, null);
+        req.setURL(path, "/test", "/javax.faces.resource/duke-nv.class.faces", null, null);
     }
 
     public void testHandleResourceRequestExcludeExtensionMapped4() throws Exception {
@@ -342,7 +381,7 @@ public class TestResourceHandlerImpl extends ServletFacesTestCase {
     //  .properties to now be considered valid
     ////////////////////////////////////////////////////////////////////////////
     public void beginUserSpecifiedResourceExclude1(WebRequest req) {
-        req.setURL("localhost:8080", "/test", "/javax.faces.resource/duke-nv.gif.faces", null, null);
+        req.setURL(path, "/test", "/javax.faces.resource/duke-nv.gif.faces", null, null);
     }
 
     public void testUserSpecifiedResourceExclude1() throws Exception {
@@ -373,7 +412,7 @@ public class TestResourceHandlerImpl extends ServletFacesTestCase {
 
     ////////////////////////////////////////////////////////////////////////////
     public void beginUserSpecifiedResourceExclude2(WebRequest req) {
-        req.setURL("localhost:8080", "/test", "/javax.faces.resource/com.sun.faces.application.ApplicationImpl.class.faces", null, null);
+        req.setURL(path, "/test", "/javax.faces.resource/com.sun.faces.application.ApplicationImpl.class.faces", null, null);
     }
 
     public void testUserSpecifiedResourceExclude2() throws Exception {
@@ -399,7 +438,7 @@ public class TestResourceHandlerImpl extends ServletFacesTestCase {
 
     ////////////////////////////////////////////////////////////////////////////
     public void beginUserSpecifiedResourceExclude3(WebRequest req) {
-        req.setURL("localhost:8080", "/test", "/javax.faces.resource/com.sun.faces.LogStrings.properties.faces", null, null);
+        req.setURL(path, "/test", "/javax.faces.resource/com.sun.faces.LogStrings.properties.faces", null, null);
     }
 
     public void testUserSpecifiedResourceExclude3() throws Exception {
@@ -428,7 +467,7 @@ public class TestResourceHandlerImpl extends ServletFacesTestCase {
     // Validate a resource streamed from the docroot of a webapp
     //
     public void beginHandleResourceRequest1(WebRequest req) {
-        req.setURL("localhost:8080", "/test", "/javax.faces.resource/duke-nv.gif.faces", null, null);
+        req.setURL(path, "/test", "/javax.faces.resource/duke-nv.gif.faces", null, null);
     }
 
     public void testHandleResourceRequest1() throws Exception {
@@ -446,7 +485,6 @@ public class TestResourceHandlerImpl extends ServletFacesTestCase {
         assertTrue(response.containsHeader("last-modified"));
         assertTrue(response.containsHeader("expires"));
         assertTrue(response.containsHeader("etag"));
-        assertTrue(response.containsHeader("content-type"));
         
     }
 
@@ -455,7 +493,7 @@ public class TestResourceHandlerImpl extends ServletFacesTestCase {
     // Validate a resource streamed from a JAR
     //
     public void beginHandleResourceRequest2(WebRequest req) {
-        req.setURL("localhost:8080", "/test", "/javax.faces.resource/duke-nv.gif.faces", null, null);
+        req.setURL(path, "/test", "/javax.faces.resource/duke-nv.gif.faces", null, null);
         req.addParameter("ln", "nvLibrary-jar");
     }
 
@@ -477,7 +515,6 @@ public class TestResourceHandlerImpl extends ServletFacesTestCase {
         assertTrue(response.containsHeader("last-modified"));
         assertTrue(response.containsHeader("expires"));
         assertTrue(response.containsHeader("etag"));
-        assertTrue(response.containsHeader("content-type"));
         
     }
 
@@ -487,7 +524,7 @@ public class TestResourceHandlerImpl extends ServletFacesTestCase {
     // request header and the resource hasn't changed on the server side.
     //
     public void beginHandleResourceRequest3(WebRequest req) {
-        req.setURL("localhost:8080", "/test", "/javax.faces.resource/duke-nv.gif.faces", null, null);
+        req.setURL(path, "/test", "/javax.faces.resource/duke-nv.gif.faces", null, null);
         long 
                 curTime = System.currentTimeMillis(),
                 threeHoursAgo = curTime - 10800000L;
@@ -522,7 +559,7 @@ public class TestResourceHandlerImpl extends ServletFacesTestCase {
     // is made
     //
     public void beginHandleResourceRequest4(WebRequest req) {
-        req.setURL("localhost:8080", "/test", "/javax.faces.resource/duke-v.gif.faces", null, null);
+        req.setURL(path, "/test", "/javax.faces.resource/duke-v.gif.faces", null, null);
         req.addParameter("ln", "nvLibrary");
     }
 
@@ -543,7 +580,7 @@ public class TestResourceHandlerImpl extends ServletFacesTestCase {
     // Validate a 404 is returned when a request for an excluded resource is made
     //
     public void beginHandleResourceRequest5(WebRequest req) {
-        req.setURL("localhost:8080", "/test", "/javax.faces.resource/duke-nv.class.faces", null, null);
+        req.setURL(path, "/test", "/javax.faces.resource/duke-nv.class.faces", null, null);
         req.addParameter("ln", "nvLibrary");
     }
 
@@ -564,7 +601,7 @@ public class TestResourceHandlerImpl extends ServletFacesTestCase {
     // Validate a resource streamed from the docroot of a webapp is compressed
     //
     public void beginHandleResourceRequest6(WebRequest req) {
-        req.setURL("localhost:8080", "/test", "/javax.faces.resource/duke-nv.gif.faces", null, null);
+        req.setURL(path, "/test", "/javax.faces.resource/duke-nv.gif.faces", null, null);
         req.addHeader("accept-encoding", "deflate");
         req.addHeader("accept-encoding", "gzip");
     }
@@ -592,7 +629,6 @@ public class TestResourceHandlerImpl extends ServletFacesTestCase {
 	    assertTrue(response.containsHeader("last-modified"));
 	    assertTrue(response.containsHeader("expires"));
 	    assertTrue(response.containsHeader("etag"));
-	    assertTrue(response.containsHeader("content-type"));
 	    assertTrue(response.containsHeader("content-encoding"));
         } finally {
             app.setResourceHandler(oldResourceHandler);
@@ -605,7 +641,7 @@ public class TestResourceHandlerImpl extends ServletFacesTestCase {
     // Validate a resource streamed from a JAR is compressed
     //
     public void beginHandleResourceRequest7(WebRequest req) {
-        req.setURL("localhost:8080", "/test", "/javax.faces.resource/duke-nv.gif.faces", null, null);
+        req.setURL(path, "/test", "/javax.faces.resource/duke-nv.gif.faces", null, null);
         req.addParameter("ln", "nvLibrary-jar");
         req.addHeader("accept-encoding", "gzip,deflate");
     }
@@ -634,7 +670,6 @@ public class TestResourceHandlerImpl extends ServletFacesTestCase {
             assertTrue(response.containsHeader("last-modified"));
             assertTrue(response.containsHeader("expires"));
             assertTrue(response.containsHeader("etag"));
-            assertTrue(response.containsHeader("content-type"));
             assertTrue(response.containsHeader("content-encoding"));
         } finally {
             app.setResourceHandler(oldResourceHandler);
@@ -646,7 +681,7 @@ public class TestResourceHandlerImpl extends ServletFacesTestCase {
     // when the client doesn't send the accept-encoding request header
     //
     public void beginHandleResourceRequest8(WebRequest req) {
-        req.setURL("localhost:8080", "/test", "/javax.faces.resource/duke-nv.gif.faces", null, null);
+        req.setURL(path, "/test", "/javax.faces.resource/duke-nv.gif.faces", null, null);
     }
 
     public void testHandleResourceRequest8() throws Exception {
@@ -671,7 +706,6 @@ public class TestResourceHandlerImpl extends ServletFacesTestCase {
 	    assertTrue(response.containsHeader("last-modified"));
 	    assertTrue(response.containsHeader("expires"));
 	    assertTrue(response.containsHeader("etag"));
-	    assertTrue(response.containsHeader("content-type"));
 	    assertTrue(!response.containsHeader("content-encoding"));
 	} finally {
             app.setResourceHandler(oldResourceHandler);
@@ -685,7 +719,7 @@ public class TestResourceHandlerImpl extends ServletFacesTestCase {
     // when the client doesn't send the accept-encoding request header
     //
     public void beginHandleResourceRequest9(WebRequest req) {
-        req.setURL("localhost:8080", "/test", "/javax.faces.resource/duke-nv.gif.faces", null, null);
+        req.setURL(path, "/test", "/javax.faces.resource/duke-nv.gif.faces", null, null);
         req.addParameter("ln", "nvLibrary-jar");
     }
 
@@ -713,7 +747,6 @@ public class TestResourceHandlerImpl extends ServletFacesTestCase {
 	    assertTrue(response.containsHeader("last-modified"));
 	    assertTrue(response.containsHeader("expires"));
 	    assertTrue(response.containsHeader("etag"));
-	    assertTrue(response.containsHeader("content-type"));
 	    assertTrue(!response.containsHeader("content-encoding"));
 	} finally {
             app.setResourceHandler(oldResourceHandler);
@@ -727,7 +760,7 @@ public class TestResourceHandlerImpl extends ServletFacesTestCase {
     // is sent to the user-agent
     //
     public void beginHandleResourceRequest10(WebRequest req) {
-        req.setURL("localhost:8080", "/test", "/javax.faces.resource/duke-nv.gif.faces", null, null);
+        req.setURL(path, "/test", "/javax.faces.resource/duke-nv.gif.faces", null, null);
         req.addHeader("accept-encoding", "gzip;q=0, deflate");
     }
 
@@ -753,7 +786,6 @@ public class TestResourceHandlerImpl extends ServletFacesTestCase {
 	    assertTrue(response.containsHeader("last-modified"));
 	    assertTrue(response.containsHeader("expires"));
 	    assertTrue(response.containsHeader("etag"));
-	    assertTrue(response.containsHeader("content-type"));
 	    assertTrue(!response.containsHeader("content-encoding"));
 	} finally {
             app.setResourceHandler(oldResourceHandler);
@@ -769,38 +801,37 @@ public class TestResourceHandlerImpl extends ServletFacesTestCase {
     // is sent to the user-agent
     //
     public void beginHandleResourceRequest11(WebRequest req) {
-        req.setURL("localhost:8080", "/test", "/javax.faces.resource/duke-nv.gif.faces", null, null);
-        req.addHeader("accept-encoding", "deflate");
-        req.addHeader("accept-encoding", "*;q=0");
+//        req.setURL(path, "/test", "/javax.faces.resource/duke-nv.gif.faces", null, null);
+//        req.addHeader("accept-encoding", "deflate");
+//        req.addHeader("accept-encoding", "*;q=0");
     }
 
     public void testHandleResourceRequest11() throws Exception {
 
-        WebConfiguration config = WebConfiguration.getInstance();
-        config.overrideContextInitParameter(WebConfiguration.WebContextInitParameter.CompressableMimeTypes, "image/gif");
-        ApplicationAssociate associate = ApplicationAssociate.getInstance(getFacesContext().getExternalContext());
-        associate.setResourceManager(new ResourceManager(associate.getResourceCache()));
-        ResourceHandler handler = new ResourceHandlerImpl();
-        Application app = getFacesContext().getApplication();
-        ResourceHandler oldResourceHandler = app.getResourceHandler();
-        app.setResourceHandler(handler);
-        HttpServletResponse response = (HttpServletResponse) getFacesContext().getExternalContext().getResponse();
-        TestResponseWrapper wrapper = new TestResponseWrapper(response);
-        getFacesContext().getExternalContext().setResponse(wrapper);
-        byte[] control = getBytes(getFacesContext().getExternalContext().getResource("/resources/duke-nv.gif"), false);
-        handler.handleResourceRequest(getFacesContext());
-        byte[] test = wrapper.getBytes();
-	try {
-	    assertTrue(Arrays.equals(control, test));
-	    assertTrue(response.containsHeader("content-length"));
-	    assertTrue(response.containsHeader("last-modified"));
-	    assertTrue(response.containsHeader("expires"));
-	    assertTrue(response.containsHeader("etag"));
-	    assertTrue(response.containsHeader("content-type"));
-	    assertTrue(!response.containsHeader("content-encoding"));
-	} finally {
-            app.setResourceHandler(oldResourceHandler);
-        }
+//        WebConfiguration config = WebConfiguration.getInstance();
+//        config.overrideContextInitParameter(WebConfiguration.WebContextInitParameter.CompressableMimeTypes, "image/gif");
+//        ApplicationAssociate associate = ApplicationAssociate.getInstance(getFacesContext().getExternalContext());
+//        associate.setResourceManager(new ResourceManager(associate.getResourceCache()));
+//        ResourceHandler handler = new ResourceHandlerImpl();
+//        Application app = getFacesContext().getApplication();
+//        ResourceHandler oldResourceHandler = app.getResourceHandler();
+//        app.setResourceHandler(handler);
+//        HttpServletResponse response = (HttpServletResponse) getFacesContext().getExternalContext().getResponse();
+//        TestResponseWrapper wrapper = new TestResponseWrapper(response);
+//        getFacesContext().getExternalContext().setResponse(wrapper);
+//        byte[] control = getBytes(getFacesContext().getExternalContext().getResource("/resources/duke-nv.gif"), false);
+//        handler.handleResourceRequest(getFacesContext());
+//        byte[] test = wrapper.getBytes();
+//	try {
+//	    assertTrue(Arrays.equals(control, test));
+//	    assertTrue(response.containsHeader("content-length"));
+//	    assertTrue(response.containsHeader("last-modified"));
+//	    assertTrue(response.containsHeader("expires"));
+//	    assertTrue(response.containsHeader("etag"));
+//	    assertTrue(!response.containsHeader("content-encoding"));
+//	} finally {
+//            app.setResourceHandler(oldResourceHandler);
+//        }
 
 
     }
@@ -811,7 +842,7 @@ public class TestResourceHandlerImpl extends ServletFacesTestCase {
     // * will send compressed content
     //
     public void beginHandleResourceRequest12(WebRequest req) {
-        req.setURL("localhost:8080", "/test", "/javax.faces.resource/duke-nv.gif.faces", null, null);
+        req.setURL(path, "/test", "/javax.faces.resource/duke-nv.gif.faces", null, null);
         req.addHeader("accept-encoding", "identity;q=1.0");
         req.addHeader("accept-encoding", "*;q=0.5");
         req.addHeader("accept-encoding", "deflate;q=1.0");
@@ -839,7 +870,6 @@ public class TestResourceHandlerImpl extends ServletFacesTestCase {
 	    assertTrue(response.containsHeader("last-modified"));
 	    assertTrue(response.containsHeader("expires"));
 	    assertTrue(response.containsHeader("etag"));
-	    assertTrue(response.containsHeader("content-type"));
 	    assertTrue(response.containsHeader("content-encoding"));
 	} finally {
             app.setResourceHandler(oldResourceHandler);
@@ -853,7 +883,7 @@ public class TestResourceHandlerImpl extends ServletFacesTestCase {
     // compressed content.
     //
     public void beginHandleResourceRequest13(WebRequest req) {
-        req.setURL("localhost:8080", "/test", "/javax.faces.resource/duke-nv.gif.faces", null, null);
+        req.setURL(path, "/test", "/javax.faces.resource/duke-nv.gif.faces", null, null);
         req.addHeader("accept-encoding", "identity;q=0.5, deflate;q=1.0");
     }
 
@@ -879,7 +909,6 @@ public class TestResourceHandlerImpl extends ServletFacesTestCase {
 	    assertTrue(response.containsHeader("last-modified"));
 	    assertTrue(response.containsHeader("expires"));
 	    assertTrue(response.containsHeader("etag"));
-	    assertTrue(response.containsHeader("content-type"));
 	    assertTrue(!response.containsHeader("content-encoding"));
 	} finally {
             app.setResourceHandler(oldResourceHandler);
@@ -887,12 +916,20 @@ public class TestResourceHandlerImpl extends ServletFacesTestCase {
 
     }
 
+    public void testLibraryExistsNegative() throws Exception {
+        ResourceHandler handler = getFacesContext().getApplication().getResourceHandler();
+        assertNotNull(handler);
+
+        assertFalse(handler.libraryExists("oeunhtnhtnhhnhh"));
+
+    }
+
 
     //==========================================================================
     // Validate the fix for issue 1162.
     //
     public void beginHandleResourceRequest14(WebRequest req) {
-        req.setURL("localhost:8080", "/test", "/javax.faces.resource/web.xml.faces", null, "ln=../WEB-INF");
+        req.setURL(path, "/test", "/javax.faces.resource/web.xml.faces", null, "ln=../WEB-INF");
     }
 
     public void testHandleResourceRequest14() throws Exception {
@@ -913,7 +950,7 @@ public class TestResourceHandlerImpl extends ServletFacesTestCase {
     // Validate the fix for issue 1162.
     //
     public void beginHandleResourceRequest15(WebRequest req) {
-        req.setURL("localhost:8080", "/test", "/javax.faces.resource/web.xml.faces", null, "ln=nvLibrary/../../WEB-INF");
+        req.setURL(path, "/test", "/javax.faces.resource/web.xml.faces", null, "ln=nvLibrary/../../WEB-INF");
     }
 
     public void testHandleResourceRequest15() throws Exception {
@@ -930,6 +967,94 @@ public class TestResourceHandlerImpl extends ServletFacesTestCase {
     }
 
 
+    //==========================================================================
+    // Validate the fix for issue ????.
+    //
+    public void beginHandleResourceRequest16(WebRequest req) {
+        req.setURL(path, "/test", "/javax.faces.resource/duke-nv.gif.faces", null, null);
+        req.addHeader("accept-encoding", "gzip;q=0, deflate");
+    }
+
+    static class TestInputStreamContainingZeroes extends InputStream {
+        private boolean open = true;
+
+        @Override
+        public int read() throws IOException {
+            return 0;
+        }
+        @Override
+        public void close() throws IOException {
+            open = false;
+        }
+        public boolean isOpen() {
+            return open;
+        }
+    };
+
+    public void testHandleResourceRequest16() throws Exception {
+
+        final ResourceHandler originalResourceHandler =
+                getFacesContext().getApplication().getResourceHandler();
+
+        final TestInputStreamContainingZeroes resourceInputStream = new TestInputStreamContainingZeroes();
+
+        ResourceHandler resourceHandler = new ResourceHandlerWrapper() {
+            @Override
+            public ResourceHandler getWrapped() {
+                return originalResourceHandler;
+            }
+            @Override
+            public Resource createResource(String resourceName, String libraryName) {
+                final Resource resource = super.createResource(resourceName, libraryName);
+                return new ResourceWrapper() {
+                    @Override
+                    public Resource getWrapped() {
+                        return resource;
+                    }
+                    @Override
+                    public InputStream getInputStream() throws IOException {
+                        return resourceInputStream;
+                    }
+                };
+            }
+        };
+
+        HttpServletResponse wrappedResponse = new HttpServletResponseWrapper(response) {
+            @Override
+            public ServletOutputStream getOutputStream() throws IOException {
+                return new ServletOutputStream() {
+                    @Override
+                    public void write(int b) throws IOException {
+                        throw new IOException("Simulation of broken pipe or connection reset by peer");
+                    }
+                    @Override
+                    public void close() throws IOException {
+                        throw new IOException("Simulation of broken pipe or connection reset by peer");
+                    }
+                };
+            }
+        };
+        getFacesContext().getExternalContext().setResponse(wrappedResponse);
+
+        getFacesContext().getApplication().setResourceHandler(resourceHandler);
+        try {
+            boolean exceptionOccurred = false;
+            try {
+                resourceHandler.handleResourceRequest(getFacesContext());
+            } catch (IOException e) {
+                exceptionOccurred = true;
+            }
+            assertFalse(resourceInputStream.isOpen());
+            assertFalse(exceptionOccurred);
+        } finally {
+            getFacesContext().getApplication().setResourceHandler(originalResourceHandler);
+        }
+    }
+
+    public void endHandleResourceRequest16(WebResponse res) {
+        assertTrue(res.getStatusCode() == 404);
+    }
+
 
 // ---------------------------------------------------------- Helper Methods
 
diff --git a/jsf-ri/test/com/sun/faces/application/resource/TestResourceImpl.java b/jsf-ri/test/com/sun/faces/application/resource/TestResourceImpl.java
index fd3de06..2ec6a25 100644
--- a/jsf-ri/test/com/sun/faces/application/resource/TestResourceImpl.java
+++ b/jsf-ri/test/com/sun/faces/application/resource/TestResourceImpl.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -34,7 +38,6 @@
  * holder.
  */
 
-
 package com.sun.faces.application.resource;
 
 import java.io.ByteArrayOutputStream;
@@ -78,13 +81,26 @@ public class TestResourceImpl extends ServletFacesTestCase {
 
     public TestResourceImpl() {
         super("TestResourceImpl");
+	initLocalHostPath();
     }
 
 
     public TestResourceImpl(String name) {
         super(name);
+	initLocalHostPath();
     }
 
+    private String localHostPath = "localhost:8080";
+
+    private void initLocalHostPath() {
+	String containerPort = System.getProperty("container.port");
+	if (null == containerPort || 0 == containerPort.length()) {
+	    containerPort = "8080";
+	}
+	localHostPath = "localhost:" + containerPort;
+    }
+
+
 
     @Override
     public void setUp() {
@@ -101,7 +117,7 @@ public class TestResourceImpl extends ServletFacesTestCase {
     // ------------------------------------------------------------ Test Methods
 
     public void beginToURIPrefixMapping(WebRequest req) {
-        req.setURL("localhost:8080", "/test", "/faces", "/foo.jsp", null);
+        req.setURL(localHostPath, "/test", "/faces", "/foo.jsp", null);
     }
 
     public void testToURIPrefixMapping() throws Exception {
@@ -139,9 +155,21 @@ public class TestResourceImpl extends ServletFacesTestCase {
         assertTrue(expectedURI.equals(resource.getRequestPath()));
 
     }
+    
+    public void testFaceletResources() throws Exception {
+        ResourceHandler handler = getFacesContext().getApplication().getResourceHandler();
+        assertTrue (handler != null);
+        
+        Resource resource = handler.createResource("rootLibrary-duke.gif", "rootLibrary");
+        assertNotNull(resource);
+        
+        resource = handler.createResource("root-duke.gif");
+        
+        
+    }
 
     public void beginToURIExtensionMapping(WebRequest req) {
-        req.setURL("localhost:8080", "/test", "/foo.faces", null, null);
+        req.setURL(localHostPath, "/test", "/foo.faces", null, null);
     }
 
     public void testToURIExtensionMapping() throws Exception {
@@ -231,12 +259,12 @@ public class TestResourceImpl extends ServletFacesTestCase {
         FacesContext context = this.getFacesContext();
 
         LibraryInfo
-                liA = helper.findLibrary("vLibrary-jar", null, context),
-                liB = helper.findLibrary("vLibrary-jar", null, context),
-                liC = helper.findLibrary("vLibrary-jar", null, context);
+                liA = helper.findLibrary("vLibrary-jar", null, null, context),
+                liB = helper.findLibrary("vLibrary-jar", null, null, context),
+                liC = helper.findLibrary("vLibrary-jar", null, null, context);
         this.verifyEqualsContractPositive(liA, liB, liC);
 
-        liB = helper.findLibrary("vLibrary", null, context);
+        liB = helper.findLibrary("vLibrary", null, null, context);
         assertFalse(liA.equals(liB));
 
 
@@ -287,41 +315,8 @@ public class TestResourceImpl extends ServletFacesTestCase {
         assertTrue(resource != null);
         assertTrue("image/gif".equals(resource.getContentType()));
 
-        // non-versioned resource containing multiple path elements
-        resource = handler.createResource("images/duke-nv.gif", "nvLibrary");
-        assertTrue(resource != null);
-        assertTrue("image/gif".equals(resource.getContentType()));
-
     }
 
-
-    public void testDefaultHeaders() throws Exception {
-
-        ResourceHandler handler = getFacesContext().getApplication().getResourceHandler();
-        assertTrue(handler != null);
-        RequestStateManager.set(getFacesContext(),
-                                RequestStateManager.RESOURCE_REQUEST,
-                                Boolean.TRUE);
-        Resource resource = handler.createResource("duke-jar.gif");
-        assertTrue(resource != null);
-        Map<String,String> headers = resource.getResponseHeaders();
-        assertTrue(headers != null);
-        assertTrue(headers.size() == 3);
-        assertTrue(headers.get("Expires") != null);
-        assertTrue(headers.get("ETag") != null);
-        assertTrue(headers.get("Last-Modified") != null);
-
-        // now assert that an empty map is returned if we're not servicing
-        // a resource request
-        RequestStateManager.set(getFacesContext(),
-                                RequestStateManager.RESOURCE_REQUEST,
-                                Boolean.FALSE);
-        headers = resource.getResponseHeaders();
-        assertTrue(headers.isEmpty());
-        
-    }
-
-
     @SuppressWarnings({"deprecation"})
     public void testUserAgentNeedsUpdate1() throws Exception {
 
@@ -449,6 +444,16 @@ public class TestResourceImpl extends ServletFacesTestCase {
         
     }
 
+    /**
+     * Added for issue 3331
+     */
+    public void testResourceELEvalAfterPrematureClosureOfStream() throws Exception {
+
+        ResourceHandler handler = getFacesContext().getApplication().getResourceHandler();
+        handler.createResource("simple-with-el.css").getInputStream().close();
+
+        testResourceELEval();
+    }
 
     // ---------------------------------------------------------- Helper Methods
 
diff --git a/jsf-ri/test/com/sun/faces/application/resource/TestResourceManager.java b/jsf-ri/test/com/sun/faces/application/resource/TestResourceManager.java
index c60d29b..54198e8 100644
--- a/jsf-ri/test/com/sun/faces/application/resource/TestResourceManager.java
+++ b/jsf-ri/test/com/sun/faces/application/resource/TestResourceManager.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -79,7 +83,7 @@ public class TestResourceManager extends ServletFacesTestCase {
 
 
     public void testWebappNonVersionedResource() throws Exception {
-        ResourceInfo resource = manager.findResource(null, "duke-nv.gif", "image/gif", getFacesContext());
+        ClientResourceInfo resource = (ClientResourceInfo) manager.findResource(null, "duke-nv.gif", "image/gif", getFacesContext());
         assertTrue(resource != null);
         assertTrue(resource.getLibraryInfo() == null);
         assertTrue(resource.getHelper() instanceof WebappResourceHelper);
@@ -91,7 +95,7 @@ public class TestResourceManager extends ServletFacesTestCase {
     }
 
     public void testWebappVersionedResource() throws Exception {
-        ResourceInfo resource = manager.findResource(null, "duke.gif", "image/gif", getFacesContext());
+        ClientResourceInfo resource = (ClientResourceInfo) manager.findResource(null, "duke.gif", "image/gif", getFacesContext());
         assertTrue(resource != null);
         assertTrue(resource.getLibraryInfo() == null);
         assertTrue(resource.getHelper() instanceof WebappResourceHelper);
@@ -103,7 +107,7 @@ public class TestResourceManager extends ServletFacesTestCase {
     }
 
     public void testWebappNonVersionedLibraryVersionedResource() throws Exception {
-        ResourceInfo resource = manager.findResource("nvLibrary", "duke.gif", "image/gif", getFacesContext());
+        ClientResourceInfo resource = (ClientResourceInfo) manager.findResource("nvLibrary", "duke.gif", "image/gif", getFacesContext());
         assertTrue(resource != null);
 
         // validate the library
@@ -123,7 +127,7 @@ public class TestResourceManager extends ServletFacesTestCase {
     }
 
     public void testWebappNonVersionedLibraryNonVersionedResource() throws Exception {
-        ResourceInfo resource = manager.findResource("nvLibrary", "duke-nv.gif", "image/gif", getFacesContext());
+        ClientResourceInfo resource = (ClientResourceInfo) manager.findResource("nvLibrary", "duke-nv.gif", "image/gif", getFacesContext());
         assertTrue(resource != null);
 
         // validate the library
@@ -143,7 +147,7 @@ public class TestResourceManager extends ServletFacesTestCase {
     }
 
     public void testWebappVersionedLibraryNonVersionedResource() throws Exception {
-        ResourceInfo resource = manager.findResource("vLibrary", "duke-nv.gif", "image/gif", getFacesContext());
+        ClientResourceInfo resource = (ClientResourceInfo) manager.findResource("vLibrary", "duke-nv.gif", "image/gif", getFacesContext());
         assertTrue(resource != null);
 
         // validate the library
@@ -163,7 +167,7 @@ public class TestResourceManager extends ServletFacesTestCase {
     }
 
     public void testWebappVersionedLibraryVersionedResource() throws Exception {
-        ResourceInfo resource = manager.findResource("vLibrary", "duke.gif", "image/gif", getFacesContext());
+        ClientResourceInfo resource = (ClientResourceInfo) manager.findResource("vLibrary", "duke.gif", "image/gif", getFacesContext());
         assertTrue(resource != null);
 
         // validate the library
@@ -183,19 +187,8 @@ public class TestResourceManager extends ServletFacesTestCase {
     }
 
 
-    public void testWebappPathResource() throws Exception {
-        ResourceInfo resource = manager.findResource("nvLibrary", "images/duke-nv.gif", "image/gif", getFacesContext());
-        assertTrue(resource != null);
-        assertTrue("images/duke-nv.gif".equals(resource.getName()));
-        assertTrue(resource.getHelper() instanceof WebappResourceHelper);
-        assertTrue(!resource.isCompressable());
-        assertTrue(resource.getCompressedPath() == null);
-        assertTrue("/resources/nvLibrary/images/duke-nv.gif".equals(resource.getPath()));
-    }
-
-
     public void testJarNonVersionedResources() throws Exception {
-        ResourceInfo resource = manager.findResource(null, "duke-jar-nv.gif", "image/gif", getFacesContext());
+        ClientResourceInfo resource = (ClientResourceInfo) manager.findResource(null, "duke-jar-nv.gif", "image/gif", getFacesContext());
         assertTrue(resource != null);
         assertTrue(resource.getLibraryInfo() == null);
         assertTrue(resource.getHelper() instanceof ClasspathResourceHelper);
@@ -208,7 +201,7 @@ public class TestResourceManager extends ServletFacesTestCase {
 
     /*
     public void testJarVersionedResource() throws Exception {
-        ResourceInfo resource = manager.findResource(null, "duke-jar.gif", "image/gif", getFacesContext());
+        ClientResourceInfo resource = manager.findResource(null, "duke-jar.gif", "image/gif", getFacesContext());
         assertTrue(resource != null);
         assertTrue(resource.getLibraryInfo() == null);
         assertTrue(resource.getHelper() instanceof ClasspathResourceHelper);
@@ -222,7 +215,7 @@ public class TestResourceManager extends ServletFacesTestCase {
 
     /*
     public void testJarNonVersionedLibraryVersionedResource() throws Exception {
-        ResourceInfo resource = manager.findResource("nvLibrary-jar", "duke.gif", "image/gif", getFacesContext());
+        ClientResourceInfo resource = manager.findResource("nvLibrary-jar", "duke.gif", "image/gif", getFacesContext());
         assertTrue(resource != null);
 
         // validate the library
@@ -243,7 +236,7 @@ public class TestResourceManager extends ServletFacesTestCase {
     */
 
     public void testJarNonVersionedLibraryNonVersionedResource() throws Exception {
-        ResourceInfo resource = manager.findResource("nvLibrary-jar", "duke-nv.gif", "image/gif", getFacesContext());
+        ClientResourceInfo resource = (ClientResourceInfo) manager.findResource("nvLibrary-jar", "duke-nv.gif", "image/gif", getFacesContext());
         assertTrue(resource != null);
 
         // validate the library
@@ -264,7 +257,7 @@ public class TestResourceManager extends ServletFacesTestCase {
 
     /*
     public void testJarVersionedLibraryNonVersionedResource() throws Exception {
-        ResourceInfo resource = manager.findResource("vLibrary-jar", "duke-nv.gif", "image/gif", getFacesContext());
+        ClientResourceInfo resource = manager.findResource("vLibrary-jar", "duke-nv.gif", "image/gif", getFacesContext());
         assertTrue(resource != null);
 
         // validate the library
@@ -286,7 +279,7 @@ public class TestResourceManager extends ServletFacesTestCase {
 
     /*
     public void testJarVersionedLibraryVersionedResource() throws Exception {
-        ResourceInfo resource = manager.findResource("vLibrary-jar", "duke.gif", "image/gif", getFacesContext());
+        ClientResourceInfo resource = manager.findResource("vLibrary-jar", "duke.gif", "image/gif", getFacesContext());
         assertTrue(resource != null);
 
         // validate the library
@@ -307,7 +300,7 @@ public class TestResourceManager extends ServletFacesTestCase {
     */
 
     public void testNoExtensionVersionedResource() throws Exception {
-        ResourceInfo resource = manager.findResource("vLibrary", "duke2.gif", "image/gif", getFacesContext());
+        ClientResourceInfo resource = (ClientResourceInfo) manager.findResource("vLibrary", "duke2.gif", "image/gif", getFacesContext());
         assertTrue(resource != null);
 
         // validate the library
@@ -337,35 +330,35 @@ public class TestResourceManager extends ServletFacesTestCase {
         assertTrue(manager.findResource("nvLibrary", "duke.fig", null, getFacesContext()) == null);
     }
 
-    public void testResourceInfoCompression() throws Exception {
+    public void testClientResourceInfoCompression() throws Exception {
         WebConfiguration config = WebConfiguration.getInstance();
         config.overrideContextInitParameter(WebConfiguration.WebContextInitParameter.CompressableMimeTypes, "image/gif,text/css,text/plain");
         // create a new ResourceManager so that the mime type configuration is picked up
         ResourceManager manager = new ResourceManager(null);
-        ResourceInfo resource = manager.findResource("nvLibrary", "images/duke-nv.gif", "image/gif", getFacesContext());
+        ClientResourceInfo resource = (ClientResourceInfo) manager.findResource("nvLibrary", "duke-nv.gif", "image/gif", getFacesContext());
         assertTrue(resource != null);
         assertTrue(resource.isCompressable());
         assertTrue(compressionPathIsValid(resource));
         
         // ensure compression disabled for a content type that is null
-        resource = manager.findResource("nvLibrary", "images/duke-nv.gif", "text/javascript", getFacesContext());
+        resource = (ClientResourceInfo) manager.findResource("nvLibrary", "duke-nv.gif", "text/javascript", getFacesContext());
         assertTrue(resource != null);
         assertTrue(!resource.isCompressable());
         assertTrue(resource.getCompressedPath() == null);
 
         // if a resource is compressable, but the compressed result is larger
-        // than the original resource, the returned ResourceInfo shouldn't
+        // than the original resource, the returned ClientResourceInfo shouldn't
         // be marked as compressable and getCompressedPath() will be null
-        resource = manager.findResource(null, "simple.txt", "text/plain", getFacesContext());
+        resource = (ClientResourceInfo) manager.findResource(null, "simple.txt", "text/plain", getFacesContext());
         assertTrue(resource != null);
         assertTrue(!resource.isCompressable());
         assertTrue(resource.getCompressedPath() == null);
 
         // if a resource is compressable, but the compressed result is larger
-        // than the original resource, the returned ResourceInfo should be
+        // than the original resource, the returned ClientResourceInfo should be
         // marked compressable.  However, since css files may have EL expressions
         // embedded within, the the resource will be marked as supporting such.
-        resource = manager.findResource(null, "simple.css", "text/plain", getFacesContext());
+        resource = (ClientResourceInfo) manager.findResource(null, "simple.css", "text/plain", getFacesContext());
         assertTrue(resource != null);
         assertTrue(resource.isCompressable());
         assertTrue(resource.supportsEL());
@@ -377,7 +370,7 @@ public class TestResourceManager extends ServletFacesTestCase {
     public void testELEvalDisabledIfNoExpressionEvaluated() throws Exception {
 
         ResourceManager manager = new ResourceManager(null);
-        ResourceInfo resource = manager.findResource(null, "simple.css", "text/css", getFacesContext());
+        ClientResourceInfo resource = (ClientResourceInfo) manager.findResource(null, "simple.css", "text/css", getFacesContext());
         assertNotNull(resource);
         assertTrue(resource.supportsEL());
         ResourceImpl resImpl = new ResourceImpl(resource, "text/css", 0, 0);
@@ -390,7 +383,7 @@ public class TestResourceManager extends ServletFacesTestCase {
         }
         assertTrue(!resource.supportsEL());
 
-        resource = manager.findResource(null, "simple-with-el.css", "text/css", getFacesContext());
+        resource = (ClientResourceInfo) manager.findResource(null, "simple-with-el.css", "text/css", getFacesContext());
 
         assertNotNull(resource);
         assertTrue(resource.supportsEL());
@@ -410,7 +403,7 @@ public class TestResourceManager extends ServletFacesTestCase {
     // --------------------------------------------------------- Private Methods
 
 
-    private boolean compressionPathIsValid(ResourceInfo resource)
+    private boolean compressionPathIsValid(ClientResourceInfo resource)
     throws IOException {
 
         ExternalContext extContext = getFacesContext().getExternalContext();
diff --git a/jsf-ri/test/com/sun/faces/component/visit/TestTreeVisit.java b/jsf-ri/test/com/sun/faces/component/visit/TestTreeVisit.java
index 4882a73..a42ae42 100644
--- a/jsf-ri/test/com/sun/faces/component/visit/TestTreeVisit.java
+++ b/jsf-ri/test/com/sun/faces/component/visit/TestTreeVisit.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -36,7 +40,10 @@
 
 package com.sun.faces.component.visit;
 
+import com.sun.faces.TestFormVisit;
 import com.sun.faces.cactus.ServletFacesTestCase;
+import com.sun.faces.context.PartialViewContextImpl;
+
 import com.sun.faces.util.Util;
 import java.util.HashSet;
 import javax.faces.component.UIComponent;
@@ -49,6 +56,10 @@ import javax.faces.component.visit.VisitCallback;
 import javax.faces.component.visit.VisitContext;
 import javax.faces.component.visit.VisitResult;
 import javax.faces.context.FacesContext;
+import javax.faces.context.PartialViewContext;
+import javax.faces.event.PhaseId;
+
+import org.apache.cactus.WebRequest;
 
 
 public class TestTreeVisit extends ServletFacesTestCase {
@@ -174,6 +185,31 @@ public class TestTreeVisit extends ServletFacesTestCase {
         assertEquals(result, "form:panel0");
 
     }
+    public void beginPartialTraversal(WebRequest req) {
+        req.addParameter(PartialViewContext.PARTIAL_EXECUTE_PARAM_NAME, "form");
+    }
+
+    public void testPartialTraversal() throws Exception {
+        FacesContext context = getFacesContext();
+        UIViewRoot root = Util.getViewHandler(context).createView(context, null);
+        root.setId("root");
+        context.setViewRoot(root);
+        TestFormVisit form  = new TestFormVisit();
+        form.setId("form");
+        root.getChildren().add(form);
+
+        PartialViewContextImpl pvContext = new PartialViewContextImpl(context);
+        pvContext.processPartial(PhaseId.APPLY_REQUEST_VALUES);
+        if (context.getAttributes().get("VisitHint.EXECUTE_LIFECYCLE") != null) {
+            System.out.println("YESSSSSS");
+        } else {
+            System.out.println("NOOOOOOOO");
+        }
+        assertNotNull(context.getAttributes().remove("VisitHint.EXECUTE_LIFECYCLE"));
+    }
+
+
+
 
 
     // PENDING make sure UIData and UIRepeat are tested.
diff --git a/jsf-ri/test/com/sun/faces/component/visit/TestTreeWithUIDataVisit.java b/jsf-ri/test/com/sun/faces/component/visit/TestTreeWithUIDataVisit.java
index 17f95d6..5aa9d96 100644
--- a/jsf-ri/test/com/sun/faces/component/visit/TestTreeWithUIDataVisit.java
+++ b/jsf-ri/test/com/sun/faces/component/visit/TestTreeWithUIDataVisit.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -34,16 +38,15 @@
  * holder.
  */
 
-
 // TestTreeVisit.java
 
 package com.sun.faces.component.visit;
 
+import com.sun.faces.application.view.FaceletPartialStateManagementStrategy;
 import com.sun.faces.cactus.ServletFacesTestCase;
 import com.sun.faces.util.Util;
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.List;
+
+import java.util.*;
 import java.util.logging.Logger;
 import javax.faces.component.UIColumn;
 import javax.faces.component.UIComponent;
@@ -62,11 +65,12 @@ import javax.faces.component.visit.VisitContext;
 import javax.faces.component.visit.VisitHint;
 import javax.faces.component.visit.VisitResult;
 import javax.faces.context.FacesContext;
-import javax.faces.event.PhaseId;
+import javax.faces.event.*;
 import javax.faces.model.ArrayDataModel;
 import javax.faces.model.DataModel;
 import javax.faces.model.ListDataModel;
 import javax.faces.model.ScalarDataModel;
+import javax.faces.view.StateManagementStrategy;
 
 
 public class TestTreeWithUIDataVisit extends ServletFacesTestCase {
@@ -263,7 +267,304 @@ public class TestTreeWithUIDataVisit extends ServletFacesTestCase {
 
     }
 
+    // Tests UIData visiting with VisitHint.SKIP_ITERATION set.
+    // Each child of UIData should be visited once.    
+    public void testUIDataSkipIterationVisit() throws Exception {
+
+        UIData data = new UIData();
+        DataModel m = new ArrayDataModel<String>(new String[] {"a", "b"});
+        data.setValue(m);
+        data.setId("table");
+        UIOutput tableFacet = new UIOutput();
+        tableFacet.setId("tableFacet");
+        data.getFacets().put("header", tableFacet);
+        UIColumn c1 = new UIColumn();
+        c1.setId("column1");
+        UIOutput column1Facet = new UIOutput();
+        column1Facet.setId("column1Facet");
+        c1.getFacets().put("header", column1Facet);
+        UIOutput column1Data = new UIOutput();
+        column1Data.setId("column1Data");
+        c1.getChildren().add(column1Data);
+        data.getChildren().add(c1);
+
+        final List<String> visitedIds = new ArrayList<String>();
+        Set<VisitHint> hints = EnumSet.of(VisitHint.SKIP_ITERATION);
+        data.visitTree(VisitContext.createVisitContext(getFacesContext(),
+                                                       null,
+                                                       hints),
+                       new VisitCallback() {
+                           public VisitResult visit(VisitContext context,
+                                                    UIComponent target) {
+                               visitedIds
+                                     .add(target.getClientId(context.getFacesContext()));
+                               return VisitResult.ACCEPT;
+                           }
+                       });
+
+        String[] expectedIds = { "table",
+                                 "table:tableFacet",
+                                 "table:column1",
+                                 "table:column1Facet",
+                                 "table:column1Data" };
+
+
+        Logger.getAnonymousLogger().info("VISITED IDS:"+visitedIds);
+
+        assertEquals("Expected number of vists: " + expectedIds.length + ", actual number of visits: " + visitedIds.size(),
+                     expectedIds.length,
+                     visitedIds.size());
+
+        for (String id : expectedIds) {
+            assertTrue("ID: " + id + " not visited.", visitedIds.contains(id));
+        }
+    }
+
+    public void testUIDataSkipIterationSaveRestoreStateVisit() throws Exception {
+        FacesContext context = getFacesContext();
+        List<String> visitedIds = new ArrayList<String>();
+        UIViewRoot root = Util.getViewHandler(context).createView(context, null);
+        root.setViewId("/root.xhtml");
+        context.setViewRoot(root);
+
+        HtmlForm form = new HtmlForm();
+        form.setId("form");
+        root.getChildren().add(form);
+
+        UIDataState data = new UIDataState(visitedIds);
+        DataModel m = new ArrayDataModel<String>(new String[] {"a", "b"});
+        data.setValue(m);
+        data.setId("table");
+        UIOutputState tableFacet = new UIOutputState(visitedIds);
+        tableFacet.setId("tableFacet");
+        data.getFacets().put("header", tableFacet);
+        UIColumnState c1 = new UIColumnState(visitedIds);
+        c1.setId("column1");
+        UIOutputState column1Facet = new UIOutputState(visitedIds);
+        column1Facet.setId("column1Facet");
+        c1.getFacets().put("header", column1Facet);
+        UIOutputState column1Data = new UIOutputState(visitedIds);
+        column1Data.setId("column1Data");
+        c1.getChildren().add(column1Data);
+        data.getChildren().add(c1);
+        form.getChildren().add(data);
+        FaceletPartialStateManagementStrategy strategy = new FaceletPartialStateManagementStrategy();
+
+        String[] expectedIds = { "SAVE:form:table",
+                                 "SAVE:form:table:tableFacet",
+                                 "SAVE:form:table:column1",
+                                 "SAVE:form:table:column1Facet",
+                                 "SAVE:form:table:column1Data" };
+
+        Object[] state = (Object[])strategy.saveView(context);
+
+        Logger.getAnonymousLogger().info("VISITED IDS:"+visitedIds);
+
+        assertEquals("Expected number of vists: " + expectedIds.length + ", actual number of visits: " + visitedIds.size(),
+                     expectedIds.length,
+                     visitedIds.size());
+
+        for (String id : expectedIds) {
+            assertTrue("ID: " + id + " not visited.", visitedIds.contains(id));
+        }
+
+        expectedIds = new String[]{"RESTORE:form:table",
+                "RESTORE:form:table:tableFacet",
+                "RESTORE:form:table:column1",
+                "RESTORE:form:table:column1Facet",
+                "RESTORE:form:table:column1Data"};
+
+        visitedIds = new ArrayList<String>();
+        data.setVisitedIds(visitedIds);
+        tableFacet.setVisitedIds(visitedIds);
+        c1.setVisitedIds(visitedIds);
+        column1Facet.setVisitedIds(visitedIds);
+        column1Data.setVisitedIds(visitedIds);
+
+        final Map<String, Object> stateMap = (Map<String,Object>) state[1];
+
+        Set<VisitHint> hints = EnumSet.of(VisitHint.SKIP_ITERATION);
+        root.visitTree(VisitContext.createVisitContext(context, null,hints),
+            new VisitCallback() {
+                public VisitResult visit(VisitContext context, UIComponent target) {
+                    String cid = target.getClientId(context.getFacesContext());
+                    Object stateObj = stateMap.get(cid);
+                    target.restoreState(context.getFacesContext(), stateObj);
+                    return VisitResult.ACCEPT;
+                }
+        });
+
+
+
+        Logger.getAnonymousLogger().info("VISITED IDS:"+visitedIds);
+
+        assertEquals("Expected number of vists: " + expectedIds.length + ", actual number of visits: " + visitedIds.size(),
+                     expectedIds.length,
+                     visitedIds.size());
+
+        for (String id : expectedIds) {
+            assertTrue("ID: " + id + " not visited.", visitedIds.contains(id));
+        }
+
+    }
+
+    public void testUIDataSkipIterationPostRestoreEventVisit() throws Exception {
+        FacesContext context = getFacesContext();
+        List<String> visitedIds = new ArrayList<String>();
+        UIViewRoot root = Util.getViewHandler(context).createView(context, null);
+        root.setViewId("/root.xhtml");
+        context.setViewRoot(root);
+
+        HtmlForm form = new HtmlForm();
+        form.setId("form");
+        root.getChildren().add(form);
+
+        UIDataState data = new UIDataState(visitedIds);
+        DataModel m = new ArrayDataModel<String>(new String[] {"a", "b"});
+        data.setValue(m);
+        data.setId("table");
+        UIOutputState tableFacet = new UIOutputState(visitedIds);
+        tableFacet.setId("tableFacet");
+        data.getFacets().put("header", tableFacet);
+        UIColumnState c1 = new UIColumnState(visitedIds);
+        c1.setId("column1");
+        UIOutputState column1Facet = new UIOutputState(visitedIds);
+        column1Facet.setId("column1Facet");
+        c1.getFacets().put("header", column1Facet);
+        UIOutputState column1Data = new UIOutputState(visitedIds);
+        column1Data.setId("column1Data");
+        c1.getChildren().add(column1Data);
+        data.getChildren().add(c1);
+        form.getChildren().add(data);
+
+        final PostRestoreStateEvent postRestoreStateEvent = new PostRestoreStateEvent(root);
+
+        String[] expectedIds = {"EVENT:form:table",
+                "EVENT:form:table:tableFacet",
+                "EVENT:form:table:column1",
+                "EVENT:form:table:column1Facet",
+                "EVENT:form:table:column1Data"};
+
+
+        Set<VisitHint> hints = EnumSet.of(VisitHint.SKIP_ITERATION);
+        VisitContext visitContext = VisitContext.createVisitContext(context, null, hints);
+        root.visitTree(visitContext, new VisitCallback() {
+            public VisitResult visit(VisitContext context, UIComponent target) {
+                postRestoreStateEvent.setComponent(target);
+                target.processEvent(postRestoreStateEvent);
+                return VisitResult.ACCEPT;
+            }
+        });
+
+        Logger.getAnonymousLogger().info("VISITED IDS:"+visitedIds);
+
+        assertEquals("Expected number of vists: " + expectedIds.length + ", actual number of visits: " + visitedIds.size(),
+                     expectedIds.length,
+                     visitedIds.size());
+
+        for (String id : expectedIds) {
+            assertTrue("ID: " + id + " not visited.", visitedIds.contains(id));
+        }
+        
+    }
+
+    private class UIDataState extends UIData
+        implements ComponentSystemEventListener {
+        private List visitedIds = null;
+        public UIDataState(List visitedIds) {
+            this.visitedIds = visitedIds;
+        }
+        public Object saveState(FacesContext context) {
+            visitedIds.add("SAVE:"+getClientId(context));
+            return super.saveState(context);
+        }
+        public void restoreState(FacesContext context, Object state) {
+            visitedIds.add("RESTORE:"+getClientId(context));
+            super.restoreState(context, state);
+        }
+        public void setVisitedIds(List<String>visitedIds) {
+            this.visitedIds = visitedIds;
+        }
+        public List<String> getVisitedIds() {
+            return visitedIds;
+        }
+        public void processEvent( ComponentSystemEvent event )
+            throws AbortProcessingException {
+            FacesContext context = FacesContext.getCurrentInstance();
+            visitedIds.add("EVENT:"+getClientId(context));
+        }
+        public boolean isListenerForSource( Object source ) {
+            return ( source instanceof UIViewRoot );
+	    }
+
+    }
+
+    private class UIOutputState extends UIOutput
+        implements ComponentSystemEventListener {
+        private List<String> visitedIds = null;
+        public UIOutputState(List visitedIds) {
+            this.visitedIds = visitedIds;
+        }
+        public Object saveState(FacesContext context) {
+            visitedIds.add("SAVE:"+getClientId(context));
+            return super.saveState(context);
+        }
+        public void restoreState(FacesContext context, Object state) {
+            visitedIds.add("RESTORE:"+getClientId(context));
+            super.restoreState(context, state);
+        }
+        public void setVisitedIds(List<String>visitedIds) {
+            this.visitedIds = visitedIds;
+        }
+        public List<String> getVisitedIds() {
+            return visitedIds;
+        }
+        public void processEvent( ComponentSystemEvent event )
+            throws AbortProcessingException {
+            FacesContext context = FacesContext.getCurrentInstance();
+            visitedIds.add("EVENT:"+getClientId(context));
+        }
+        public boolean isListenerForSource( Object source ) {
+            return ( source instanceof UIViewRoot );
+	    }
+
+    }
+
+    private class UIColumnState extends UIColumn
+        implements ComponentSystemEventListener {
+        private List visitedIds = null;
+        private ComponentSystemEvent event;
+
+        public UIColumnState(List visitedIds) {
+            this.visitedIds = visitedIds;
+        }
+        public Object saveState(FacesContext context) {
+            visitedIds.add("SAVE:"+getClientId(context));
+            return super.saveState(context);
+        }
+        public void restoreState(FacesContext context, Object state) {
+            visitedIds.add("RESTORE:"+getClientId(context));
+            super.restoreState(context, state);
+        }
+        public void setVisitedIds(List<String>visitedIds) {
+            this.visitedIds = visitedIds;
+        }
+        public List<String> getVisitedIds() {
+            return visitedIds;
+        }
+        @Override
+        public void processEvent( ComponentSystemEvent event )
+            throws AbortProcessingException {
+            FacesContext context = FacesContext.getCurrentInstance();
+            visitedIds.add("EVENT:"+getClientId(context));
+        }
+        public boolean isListenerForSource( Object source ) {
+            return ( source instanceof UIViewRoot );
+	    }
+
+    }
+
 
-    // PENDING make sure UIData and UIRepeat are tested.
+// PENDING make sure UIData and UIRepeat are tested.
 
 } // end of class TestTreeVisit
diff --git a/jsf-ri/test/com/sun/faces/component/visit/TestTreeWithUIRepeatVisit.java b/jsf-ri/test/com/sun/faces/component/visit/TestTreeWithUIRepeatVisit.java
index d3ab390..3b3d7f4 100644
--- a/jsf-ri/test/com/sun/faces/component/visit/TestTreeWithUIRepeatVisit.java
+++ b/jsf-ri/test/com/sun/faces/component/visit/TestTreeWithUIRepeatVisit.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -34,7 +38,6 @@
  * holder.
  */
 
-
 // TestTreeVisit.java
 
 package com.sun.faces.component.visit;
@@ -42,8 +45,9 @@ package com.sun.faces.component.visit;
 import com.sun.faces.cactus.ServletFacesTestCase;
 import com.sun.faces.facelets.component.UIRepeat;
 import com.sun.faces.util.Util;
-import java.util.ArrayList;
-import java.util.HashSet;
+
+import java.util.*;
+import java.util.logging.Logger;
 import javax.faces.component.UIComponent;
 import javax.faces.component.UINamingContainer;
 import javax.faces.component.UIViewRoot;
@@ -54,6 +58,7 @@ import javax.faces.component.html.HtmlInputText;
 import javax.faces.component.html.HtmlOutputText;
 import javax.faces.component.visit.VisitCallback;
 import javax.faces.component.visit.VisitContext;
+import javax.faces.component.visit.VisitHint;
 import javax.faces.component.visit.VisitResult;
 import javax.faces.context.FacesContext;
 import javax.faces.event.PhaseId;
@@ -195,6 +200,67 @@ public class TestTreeWithUIRepeatVisit extends ServletFacesTestCase {
 
     }
 
+    // Tests UIRepeat visiting with VisitHint.SKIP_ITERATION set.
+    // Each child of UIRepeat should be visited once.
+    public void testUIRepeatSkipIterationVisit() throws Exception {
+        UIRepeat data;
+        UIComponent column0;
+        HtmlOutputText output0;
+        ArrayList<String> hobbits = new ArrayList<String>();
+        hobbits.add("bilbo");
+        hobbits.add("frodo");
+        hobbits.add("merry");
+        hobbits.add("pippin");
+        hobbits.add("lumpy");
+        ListDataModel dataModel = new ListDataModel(hobbits);
+
+        data = new UIRepeat();
+        data.setId("data");
+        data.setValue(dataModel);
+        data.setVar("hobbitName");
+        String dataId = data.getClientId();
+
+        column0 = new HtmlColumn();
+        column0.setId("column0");
+        data.getChildren().add(column0);
+
+        output0 = new HtmlOutputText();
+        output0.setId("output0");
+        output0.setValue(getFacesContext().getApplication().getExpressionFactory().createValueExpression(getFacesContext().getELContext(), "#{hobbitName}", String.class));
+        column0.getChildren().add(output0);
+
+        final List<String> visitedIds = new ArrayList<String>();
+        Set<VisitHint> hints = EnumSet.of(VisitHint.SKIP_ITERATION);
+        data.visitTree(VisitContext.createVisitContext(getFacesContext(),
+                                                       null,
+                                                       hints),
+                       new VisitCallback() {
+                           public VisitResult visit(VisitContext context,
+                                                    UIComponent target) {
+                               visitedIds
+                                     .add(target.getClientId(context.getFacesContext()));
+                               return VisitResult.ACCEPT;
+                           }
+                       });
+
+        String[] expectedIds = { "data",
+                                 "data:column0",
+                                 "data:output0" };
+
+
+        Logger.getAnonymousLogger().info("VISITED IDS:"+visitedIds);
+
+        assertEquals("Expected number of vists: " + expectedIds.length + ", actual number of visits: " + visitedIds.size(),
+                     expectedIds.length,
+                     visitedIds.size());
+
+        for (String id : expectedIds) {
+            assertTrue("ID: " + id + " not visited.", visitedIds.contains(id));
+        }
+
+
+    }
+
 
     // PENDING make sure UIData and UIRepeat are tested.
 
diff --git a/jsf-ri/test/com/sun/faces/config/ClaimConfiguration.java b/jsf-ri/test/com/sun/faces/config/ClaimConfiguration.java
index c12205f..cedddcd 100644
--- a/jsf-ri/test/com/sun/faces/config/ClaimConfiguration.java
+++ b/jsf-ri/test/com/sun/faces/config/ClaimConfiguration.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/test/com/sun/faces/config/ConfigureListenerTestCase.java b/jsf-ri/test/com/sun/faces/config/ConfigureListenerTestCase.java
deleted file mode 100644
index f5f7d49..0000000
--- a/jsf-ri/test/com/sun/faces/config/ConfigureListenerTestCase.java
+++ /dev/null
@@ -1,1001 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package com.sun.faces.config;
-
-
-import java.io.InputStream;
-import java.math.BigDecimal;
-import java.math.BigInteger;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.util.Enumeration;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Set;
-import java.util.Vector;
-import java.util.EventListener;
-import java.util.logging.Filter;
-import java.util.logging.LogRecord;
-
-import javax.faces.FacesException;
-import javax.faces.FactoryFinder;
-import javax.faces.application.Application;
-import javax.faces.application.ApplicationFactory;
-import javax.faces.component.UIColumn;
-import javax.faces.component.UICommand;
-import javax.faces.component.UIData;
-import javax.faces.component.UIForm;
-import javax.faces.component.UIGraphic;
-import javax.faces.component.UIInput;
-import javax.faces.component.UIMessage;
-import javax.faces.component.UIMessages;
-import javax.faces.component.UINamingContainer;
-import javax.faces.component.UIOutput;
-import javax.faces.component.UIPanel;
-import javax.faces.component.UIParameter;
-import javax.faces.component.UISelectBoolean;
-import javax.faces.component.UISelectItem;
-import javax.faces.component.UISelectItems;
-import javax.faces.component.UISelectMany;
-import javax.faces.component.UISelectOne;
-import javax.faces.component.html.HtmlCommandButton;
-import javax.faces.component.html.HtmlCommandLink;
-import javax.faces.component.html.HtmlDataTable;
-import javax.faces.component.html.HtmlForm;
-import javax.faces.component.html.HtmlGraphicImage;
-import javax.faces.component.html.HtmlInputHidden;
-import javax.faces.component.html.HtmlInputSecret;
-import javax.faces.component.html.HtmlInputText;
-import javax.faces.component.html.HtmlInputTextarea;
-import javax.faces.component.html.HtmlMessage;
-import javax.faces.component.html.HtmlMessages;
-import javax.faces.component.html.HtmlOutputFormat;
-import javax.faces.component.html.HtmlOutputLabel;
-import javax.faces.component.html.HtmlOutputLink;
-import javax.faces.component.html.HtmlOutputText;
-import javax.faces.component.html.HtmlPanelGrid;
-import javax.faces.component.html.HtmlPanelGroup;
-import javax.faces.component.html.HtmlSelectBooleanCheckbox;
-import javax.faces.component.html.HtmlSelectManyCheckbox;
-import javax.faces.component.html.HtmlSelectManyListbox;
-import javax.faces.component.html.HtmlSelectManyMenu;
-import javax.faces.component.html.HtmlSelectOneListbox;
-import javax.faces.component.html.HtmlSelectOneMenu;
-import javax.faces.component.html.HtmlSelectOneRadio;
-import javax.faces.convert.BigDecimalConverter;
-import javax.faces.convert.BigIntegerConverter;
-import javax.faces.convert.BooleanConverter;
-import javax.faces.convert.ByteConverter;
-import javax.faces.convert.CharacterConverter;
-import javax.faces.convert.DateTimeConverter;
-import javax.faces.convert.DoubleConverter;
-import javax.faces.convert.FloatConverter;
-import javax.faces.convert.IntegerConverter;
-import javax.faces.convert.LongConverter;
-import javax.faces.convert.NumberConverter;
-import javax.faces.convert.ShortConverter;
-import javax.faces.render.RenderKit;
-import javax.faces.render.RenderKitFactory;
-import javax.faces.render.Renderer;
-import javax.faces.validator.DoubleRangeValidator;
-import javax.faces.validator.LengthValidator;
-import javax.faces.validator.LongRangeValidator;
-import javax.faces.webapp.FacesServlet;
-import javax.servlet.RequestDispatcher;
-import javax.servlet.Servlet;
-import javax.servlet.ServletContext;
-import javax.servlet.ServletContextEvent;
-import javax.servlet.ServletException;
-import javax.servlet.ServletRegistration;
-import javax.servlet.FilterRegistration;
-import javax.servlet.SessionCookieConfig;
-import javax.servlet.SessionTrackingMode;
-import javax.servlet.descriptor.JspConfigDescriptor;
-
-import com.sun.faces.cactus.ServletFacesTestCase;
-import com.sun.faces.config.WebConfiguration.BooleanWebContextInitParameter;
-import com.sun.faces.application.ApplicationAssociate;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-
-/**
- * <p>Unit tests for <code>ConfigureListener</code>.</p>
- */
-public class ConfigureListenerTestCase extends ServletFacesTestCase {
-
-
-
-    // ------------------------------------------------------------ Constructors
-
-
-    // Construct a new instance of this test case.
-    public ConfigureListenerTestCase(String name) {
-        super(name);
-    }
-
-    public ConfigureListenerTestCase() {
-        this("ConfigureListenerTestCase");
-    }
-
-     // Return the tests included in this test case.
-    public static Test suite() {
-
-        return (new TestSuite(ConfigureListenerTestCase.class));
-
-    }
-
-
-    // ------------------------------------------------- Individual Test Methods
-
-
-
-    // Test a basic environment with no application configuration resources
-    public void testBasic() throws Exception {
-
-        // Perform tests on the environment
-        checkComponentsGeneric();
-        checkComponentsHtml();
-        checkConvertersByClass();
-        checkConvertersById();
-        checkRenderers();
-        checkValidators();
-
-    }
-
-
-    // Representative sample only
-    private String rendersChildrenFalse[][] = {
-        
-    };
-
-    private String rendersChildrenTrue[][] = {
-        {"javax.faces.Command", "javax.faces.Link"},
-        {"javax.faces.Data", "javax.faces.Table"},
-        {"javax.faces.Output", "javax.faces.Link"},
-        {"javax.faces.Panel", "javax.faces.Grid"},
-        {"javax.faces.Panel", "javax.faces.Group"},
-        {"javax.faces.Command", "javax.faces.Button"},
-        {"javax.faces.Form", "javax.faces.Form"}
-    };
-
-
-    // Test some boolean attributes that should have been set explicitly
-    public void testBoolean() throws Exception {
-
-        RenderKitFactory rkFactory = (RenderKitFactory)
-            FactoryFinder.getFactory(FactoryFinder.RENDER_KIT_FACTORY);
-        RenderKit rk =
-            rkFactory.getRenderKit(null,
-                                   RenderKitFactory.HTML_BASIC_RENDER_KIT);
-
-        // Test for isRendersChildren=false
-        for (int i = 0; i < rendersChildrenFalse.length; i++) {
-            Renderer r = rk.getRenderer(rendersChildrenFalse[i][0],
-                                        rendersChildrenFalse[i][1]);
-            assertEquals("(" + rendersChildrenFalse[i][0] + "," +
-                         rendersChildrenFalse[i][1] + ")", false,
-                         r.getRendersChildren());
-        }
-
-        // Test for isRendersChildren=true
-        for (int i = 0; i < rendersChildrenTrue.length; i++) {
-            Renderer r = rk.getRenderer(rendersChildrenTrue[i][0],
-                                        rendersChildrenTrue[i][1]);
-            assertEquals("(" + rendersChildrenTrue[i][0] + "," +
-                         rendersChildrenTrue[i][1] + ")", true,
-                         r.getRendersChildren());
-        }
-
-    }
-
-
-    // Test a webapp with a default faces-config.xml resource
-    public void testDefault() throws Exception {
-
-        // Validate standard configuration
-        checkComponentsGeneric();
-        checkComponentsHtml();
-        checkConvertersByClass();
-        checkConvertersById();
-        checkRenderers();
-        checkValidators();
-
-        // Validate what was actually configured
-        checkDefaultConfiguration();
-        checkExtraConfiguration(false);
-        checkEmbedConfiguration(false);
-
-
-    }
-
-
-    // Test a webapp with a default and extra and embedded resources
-    public void testEmbed() throws Exception {
-
-        ServletContext ctx = (ServletContext)
-              getFacesContext().getExternalContext().getContext();
-        ApplicationAssociate.clearInstance(getFacesContext().getExternalContext());
-        ctx.removeAttribute("com.sun.faces.config.WebConfiguration");  
-        ServletContextWrapper w = new ServletContextWrapper(ctx);
-        ServletContextEvent sce = new ServletContextEvent(w);
-        w.addInitParameter(FacesServlet.CONFIG_FILES_ATTR,
-                           "/WEB-INF/embed-config.xml,/WEB-INF/extra-config.xml");
-        FactoryFinder.releaseFactories();
-        ConfigureListener listener = new ConfigureListener();
-        // Initialize the context
-        try {
-            listener.contextInitialized(sce);
-        } catch (FacesException e) {
-            if (e.getCause() != null) {
-                throw (Exception) e.getCause();
-            } else {
-                throw e;
-            }
-        }
-
-        // Validate standard configuration
-        checkComponentsGeneric();
-        checkComponentsHtml();
-        checkConvertersByClass();
-        checkConvertersById();
-        checkRenderers();
-        checkValidators();
-
-        // Validate what was actually configured
-        checkDefaultConfiguration();
-        checkExtraConfiguration(true);
-        checkEmbedConfiguration(true);
-
-        // Destroy the context
-        listener.contextDestroyed(sce);
-
-    }
-
-
-    // Test a webapp with a default and extra faces-config.xml resources
-    public void testExtra() throws Exception {
-
-        ServletContext ctx = (ServletContext)
-              getFacesContext().getExternalContext().getContext();
-        ApplicationAssociate.clearInstance(getFacesContext().getExternalContext());
-        ctx.removeAttribute("com.sun.faces.config.WebConfiguration");
-        ServletContextWrapper w = new ServletContextWrapper(ctx);
-        ServletContextEvent sce = new ServletContextEvent(w);
-        w.addInitParameter(FacesServlet.CONFIG_FILES_ATTR,
-                           "/WEB-INF/extra-config.xml");
-        FactoryFinder.releaseFactories();
-        ConfigureListener listener = new ConfigureListener();
-
-        // Initialize the context
-        try {
-            listener.contextInitialized(sce);
-        } catch (FacesException e) {
-            if (e.getCause() != null) {
-                throw (Exception) e.getCause();
-            } else {
-                throw e;
-            }
-        }
-
-        // Validate standard configuration
-        checkComponentsGeneric();
-        checkComponentsHtml();
-        checkConvertersByClass();
-        checkConvertersById();
-        checkRenderers();
-        checkValidators();
-
-        // Validate what was actually configured
-        checkDefaultConfiguration();
-        checkExtraConfiguration(true);
-        checkEmbedConfiguration(false);
-
-        // Destroy the context
-        listener.contextDestroyed(sce);
-
-    }
-
-
-    // --------------------------------------------------------- Support Methods
-
-
-    // Check that all of the required generic components have been registered
-    private void checkComponentsGeneric() throws Exception {
-
-        ApplicationFactory afactory = (ApplicationFactory)
-            FactoryFinder.getFactory(FactoryFinder.APPLICATION_FACTORY);
-        Application application = afactory.getApplication();
-
-        assertTrue(application.createComponent
-                   ("javax.faces.Column") instanceof UIColumn);
-        assertTrue(application.createComponent
-                   (UIColumn.COMPONENT_TYPE) instanceof UIColumn);
-        assertTrue(application.createComponent
-                   ("javax.faces.Command") instanceof UICommand);
-        assertTrue(application.createComponent
-                   (UICommand.COMPONENT_TYPE) instanceof UICommand);
-        assertTrue(application.createComponent
-                   ("javax.faces.Data") instanceof UIData);
-        assertTrue(application.createComponent
-                   (UIData.COMPONENT_TYPE) instanceof UIData);
-        assertTrue(application.createComponent
-                   ("javax.faces.Form") instanceof UIForm);
-        assertTrue(application.createComponent
-                   (UIForm.COMPONENT_TYPE) instanceof UIForm);
-        assertTrue(application.createComponent
-                   ("javax.faces.Graphic") instanceof UIGraphic);
-        assertTrue(application.createComponent
-                   (UIGraphic.COMPONENT_TYPE) instanceof UIGraphic);
-        assertTrue(application.createComponent
-                   ("javax.faces.Input") instanceof UIInput);
-        assertTrue(application.createComponent
-                   (UIInput.COMPONENT_TYPE) instanceof UIInput);
-        assertTrue(application.createComponent
-                   ("javax.faces.Message") instanceof UIMessage);
-        assertTrue(application.createComponent
-                   (UIMessage.COMPONENT_TYPE) instanceof UIMessage);
-        assertTrue(application.createComponent
-                   ("javax.faces.Messages") instanceof UIMessages);
-        assertTrue(application.createComponent
-                   (UIMessages.COMPONENT_TYPE) instanceof UIMessages);
-        assertTrue(application.createComponent
-                   ("javax.faces.NamingContainer") instanceof UINamingContainer);
-        assertTrue(application.createComponent
-                   (UINamingContainer.COMPONENT_TYPE) instanceof UINamingContainer);
-        assertTrue(application.createComponent
-                   ("javax.faces.Output") instanceof UIOutput);
-        assertTrue(application.createComponent
-                   (UIOutput.COMPONENT_TYPE) instanceof UIOutput);
-        assertTrue(application.createComponent
-                   ("javax.faces.Panel") instanceof UIPanel);
-        assertTrue(application.createComponent
-                   (UIPanel.COMPONENT_TYPE) instanceof UIPanel);
-        assertTrue(application.createComponent
-                   ("javax.faces.Parameter") instanceof UIParameter);
-        assertTrue(application.createComponent
-                   (UIParameter.COMPONENT_TYPE) instanceof UIParameter);
-        assertTrue(application.createComponent
-                   ("javax.faces.SelectBoolean") instanceof UISelectBoolean);
-        assertTrue(application.createComponent
-                   (UISelectBoolean.COMPONENT_TYPE) instanceof UISelectBoolean);
-        assertTrue(application.createComponent
-                   ("javax.faces.SelectItem") instanceof UISelectItem);
-        assertTrue(application.createComponent
-                   (UISelectItem.COMPONENT_TYPE) instanceof UISelectItem);
-        assertTrue(application.createComponent
-                   ("javax.faces.SelectItems") instanceof UISelectItems);
-        assertTrue(application.createComponent
-                   (UISelectItems.COMPONENT_TYPE) instanceof UISelectItems);
-        assertTrue(application.createComponent
-                   ("javax.faces.SelectMany") instanceof UISelectMany);
-        assertTrue(application.createComponent
-                   (UISelectMany.COMPONENT_TYPE) instanceof UISelectMany);
-        assertTrue(application.createComponent
-                   ("javax.faces.SelectOne") instanceof UISelectOne);
-        assertTrue(application.createComponent
-                   (UISelectOne.COMPONENT_TYPE) instanceof UISelectOne);
-
-    }
-
-
-    // Check that all of the required HTML components have been registered
-    private void checkComponentsHtml() throws Exception {
-
-        ApplicationFactory afactory = (ApplicationFactory)
-            FactoryFinder.getFactory(FactoryFinder.APPLICATION_FACTORY);
-        Application application = afactory.getApplication();
-
-        assertTrue(application.createComponent
-                   ("javax.faces.HtmlCommandButton") instanceof HtmlCommandButton);
-        assertTrue(application.createComponent
-                   ("javax.faces.HtmlCommandLink") instanceof HtmlCommandLink);
-        assertTrue(application.createComponent
-                   ("javax.faces.HtmlDataTable") instanceof HtmlDataTable);
-        assertTrue(application.createComponent
-                   ("javax.faces.HtmlForm") instanceof HtmlForm);
-        assertTrue(application.createComponent
-                   ("javax.faces.HtmlGraphicImage") instanceof HtmlGraphicImage);
-        assertTrue(application.createComponent
-                   ("javax.faces.HtmlInputHidden") instanceof HtmlInputHidden);
-        assertTrue(application.createComponent
-                   ("javax.faces.HtmlInputSecret") instanceof HtmlInputSecret);
-        assertTrue(application.createComponent
-                   ("javax.faces.HtmlInputText") instanceof HtmlInputText);
-        assertTrue(application.createComponent
-                   ("javax.faces.HtmlInputTextarea") instanceof HtmlInputTextarea);
-        assertTrue(application.createComponent
-                   ("javax.faces.HtmlMessage") instanceof HtmlMessage);
-        assertTrue(application.createComponent
-                   ("javax.faces.HtmlMessages") instanceof HtmlMessages);
-        assertTrue(application.createComponent
-                   ("javax.faces.HtmlOutputFormat") instanceof HtmlOutputFormat);
-        assertTrue(application.createComponent
-                   ("javax.faces.HtmlOutputLabel") instanceof HtmlOutputLabel);
-        assertTrue(application.createComponent
-                   ("javax.faces.HtmlOutputLink") instanceof HtmlOutputLink);
-        assertTrue(application.createComponent
-                   ("javax.faces.HtmlOutputText") instanceof HtmlOutputText);
-        assertTrue(application.createComponent
-                   ("javax.faces.HtmlPanelGrid") instanceof HtmlPanelGrid);
-        assertTrue(application.createComponent
-                   ("javax.faces.HtmlPanelGroup") instanceof HtmlPanelGroup);
-        assertTrue(
-            application.createComponent
-            ("javax.faces.HtmlSelectBooleanCheckbox") instanceof HtmlSelectBooleanCheckbox);
-        assertTrue(
-            application.createComponent
-            ("javax.faces.HtmlSelectManyCheckbox") instanceof HtmlSelectManyCheckbox);
-        assertTrue(
-            application.createComponent
-            ("javax.faces.HtmlSelectManyListbox") instanceof HtmlSelectManyListbox);
-        assertTrue(
-            application.createComponent
-            ("javax.faces.HtmlSelectManyMenu") instanceof HtmlSelectManyMenu);
-        assertTrue(
-            application.createComponent
-            ("javax.faces.HtmlSelectOneListbox") instanceof HtmlSelectOneListbox);
-        assertTrue(application.createComponent
-                   ("javax.faces.HtmlSelectOneMenu") instanceof HtmlSelectOneMenu);
-        assertTrue(
-            application.createComponent
-            ("javax.faces.HtmlSelectOneRadio") instanceof HtmlSelectOneRadio);
-
-    }
-
-
-    // Check that all required by-class Converters have been registered
-    private void checkConvertersByClass() throws Exception {
-
-        ApplicationFactory afactory = (ApplicationFactory)
-            FactoryFinder.getFactory(FactoryFinder.APPLICATION_FACTORY);
-        Application application = afactory.getApplication();
-
-        assertTrue(application.createConverter
-                   (BigDecimal.class) instanceof BigDecimalConverter);
-        assertTrue(application.createConverter
-                   (BigInteger.class) instanceof BigIntegerConverter);
-        assertTrue(application.createConverter
-                   (Boolean.class) instanceof BooleanConverter);
-        assertTrue(application.createConverter
-                   (Byte.class) instanceof ByteConverter);
-        assertTrue(application.createConverter
-                   (Character.class) instanceof CharacterConverter);
-        assertTrue(application.createConverter
-                   (Double.class) instanceof DoubleConverter);
-        assertTrue(application.createConverter
-                   (Float.class) instanceof FloatConverter);
-        assertTrue(application.createConverter
-                   (Integer.class) instanceof IntegerConverter);
-        assertTrue(application.createConverter
-                   (Long.class) instanceof LongConverter);
-        assertTrue(application.createConverter
-                   (Short.class) instanceof ShortConverter);
-
-    }
-
-
-    // Check that all required by-id Converters have been registered
-    private void checkConvertersById() throws Exception {
-
-        ApplicationFactory afactory = (ApplicationFactory)
-            FactoryFinder.getFactory(FactoryFinder.APPLICATION_FACTORY);
-        Application application = afactory.getApplication();
-
-        assertTrue(application.createConverter
-                   ("javax.faces.BigDecimal") instanceof BigDecimalConverter);
-        assertTrue(application.createConverter
-                   ("javax.faces.BigInteger") instanceof BigIntegerConverter);
-        assertTrue(application.createConverter
-                   ("javax.faces.Boolean") instanceof BooleanConverter);
-        assertTrue(application.createConverter
-                   ("javax.faces.Byte") instanceof ByteConverter);
-        assertTrue(application.createConverter
-                   ("javax.faces.Character") instanceof CharacterConverter);
-        assertTrue(application.createConverter
-                   ("javax.faces.DateTime") instanceof DateTimeConverter);
-        assertTrue(application.createConverter
-                   ("javax.faces.Double") instanceof DoubleConverter);
-        assertTrue(application.createConverter
-                   ("javax.faces.Float") instanceof FloatConverter);
-        assertTrue(application.createConverter
-                   ("javax.faces.Integer") instanceof IntegerConverter);
-        assertTrue(application.createConverter
-                   ("javax.faces.Long") instanceof LongConverter);
-        assertTrue(application.createConverter
-                   ("javax.faces.Number") instanceof NumberConverter);
-        assertTrue(application.createConverter
-                   ("javax.faces.Short") instanceof ShortConverter);
-
-    }
-
-
-    // Check that the default configuration took place
-    private void checkDefaultConfiguration() throws Exception {
-
-        ApplicationFactory afactory = (ApplicationFactory)
-            FactoryFinder.getFactory(FactoryFinder.APPLICATION_FACTORY);
-        Application application = afactory.getApplication();
-
-        RenderKitFactory rkFactory = (RenderKitFactory)
-            FactoryFinder.getFactory(FactoryFinder.RENDER_KIT_FACTORY);
-        RenderKit rk =
-            rkFactory.getRenderKit(null,
-                                   RenderKitFactory.HTML_BASIC_RENDER_KIT);
-
-        assertTrue(application.createComponent
-                   ("DefaultComponent") instanceof TestComponent);
-        assertTrue(application.createConverter
-                   ("DefaultConverter") instanceof TestConverter);
-        assertTrue(application.createValidator
-                   ("DefaultValidator") instanceof TestValidator);
-        assertNotNull(rk.getRenderer("Test", "DefaultRenderer"));
-
-    }
-
-
-    // Check whether embed configuration occurred or did not occur
-    private void checkEmbedConfiguration(boolean should) throws Exception {
-
-        ApplicationFactory afactory = (ApplicationFactory)
-            FactoryFinder.getFactory(FactoryFinder.APPLICATION_FACTORY);
-        Application application = afactory.getApplication();
-
-        RenderKitFactory rkFactory = (RenderKitFactory)
-            FactoryFinder.getFactory(FactoryFinder.RENDER_KIT_FACTORY);
-        RenderKit rk =
-            rkFactory.getRenderKit(null,
-                                   RenderKitFactory.HTML_BASIC_RENDER_KIT);
-
-        if (should) {
-            assertTrue(application.createComponent
-                       ("EmbedComponent") instanceof TestComponent);
-            assertTrue(application.createConverter
-                       ("EmbedConverter") instanceof TestConverter);
-            assertTrue(application.createValidator
-                       ("EmbedValidator") instanceof TestValidator);
-            assertNotNull(rk.getRenderer("Test", "EmbedRenderer"));
-        } else {
-            try {
-                application.createComponent("EmbedComponent");
-                fail("Should have thrown FacesException");
-            } catch (FacesException e) {
-                ; // Expected result
-            }
-            try {
-                application.createConverter("EmbedConverter");
-                fail("Should have thrown FacesException");
-            } catch (FacesException e) {
-                ; // Expected result
-            }
-            try {
-                application.createValidator("EmbedValidator");
-                fail("Should have thrown FacesException");
-            } catch (FacesException e) {
-                ; // Expected result
-            }
-            assertNull(rk.getRenderer("Test", "EmbedRenderer"));
-        }
-
-    }
-
-
-    // Check whether extra configuration occurred or did not occur
-    private void checkExtraConfiguration(boolean should) throws Exception {
-
-        ApplicationFactory afactory = (ApplicationFactory)
-            FactoryFinder.getFactory(FactoryFinder.APPLICATION_FACTORY);
-        Application application = afactory.getApplication();
-
-        RenderKitFactory rkFactory = (RenderKitFactory)
-            FactoryFinder.getFactory(FactoryFinder.RENDER_KIT_FACTORY);
-        RenderKit rk =
-            rkFactory.getRenderKit(null,
-                                   RenderKitFactory.HTML_BASIC_RENDER_KIT);
-
-        if (should) {
-            assertTrue(application.createComponent
-                       ("ExtraComponent") instanceof TestComponent);
-            assertTrue(application.createConverter
-                       ("ExtraConverter") instanceof TestConverter);
-            assertTrue(application.createValidator
-                       ("ExtraValidator") instanceof TestValidator);
-            assertNotNull(rk.getRenderer("Test", "ExtraRenderer"));
-        } else {
-            try {
-                application.createComponent("ExtraComponent");
-                fail("Should have thrown FacesException");
-            } catch (FacesException e) {
-                ; // Expected result
-            }
-            try {
-                application.createConverter("ExtraConverter");
-                fail("Should have thrown FacesException");
-            } catch (FacesException e) {
-                ; // Expected result
-            }
-            try {
-                application.createValidator("ExtraValidator");
-                fail("Should have thrown FacesException");
-            } catch (FacesException e) {
-                ; // Expected result
-            }
-            assertNull(rk.getRenderer("Test", "ExtraRenderer"));
-        }
-
-    }
-
-
-    // Check that all required Renderers have been registered
-    private void checkRenderers() throws Exception {
-
-        RenderKitFactory rkFactory = (RenderKitFactory)
-            FactoryFinder.getFactory(FactoryFinder.RENDER_KIT_FACTORY);
-        RenderKit rk =
-            rkFactory.getRenderKit(null,
-                                   RenderKitFactory.HTML_BASIC_RENDER_KIT);
-
-        assertNotNull(
-            rk.getRenderer("javax.faces.Command", "javax.faces.Button"));
-        assertNotNull(
-            rk.getRenderer("javax.faces.Command", "javax.faces.Link"));
-        assertNotNull(rk.getRenderer("javax.faces.Data", "javax.faces.Table"));
-        assertNotNull(rk.getRenderer("javax.faces.Form", "javax.faces.Form"));
-        assertNotNull(
-            rk.getRenderer("javax.faces.Graphic", "javax.faces.Image"));
-        assertNotNull(
-            rk.getRenderer("javax.faces.Input", "javax.faces.Hidden"));
-        assertNotNull(
-            rk.getRenderer("javax.faces.Input", "javax.faces.Secret"));
-        assertNotNull(rk.getRenderer("javax.faces.Input", "javax.faces.Text"));
-        assertNotNull(
-            rk.getRenderer("javax.faces.Input", "javax.faces.Textarea"));
-        assertNotNull(
-            rk.getRenderer("javax.faces.Message", "javax.faces.Message"));
-        assertNotNull(
-            rk.getRenderer("javax.faces.Messages", "javax.faces.Messages"));
-        assertNotNull(
-            rk.getRenderer("javax.faces.Output", "javax.faces.Format"));
-        assertNotNull(
-            rk.getRenderer("javax.faces.Output", "javax.faces.Label"));
-        assertNotNull(rk.getRenderer("javax.faces.Output", "javax.faces.Link"));
-        assertNotNull(rk.getRenderer("javax.faces.Output", "javax.faces.Text"));
-        assertNotNull(rk.getRenderer("javax.faces.Panel", "javax.faces.Grid"));
-        assertNotNull(rk.getRenderer("javax.faces.Panel", "javax.faces.Group"));
-        assertNotNull(
-            rk.getRenderer("javax.faces.SelectBoolean", "javax.faces.Checkbox"));
-        assertNotNull(
-            rk.getRenderer("javax.faces.SelectMany", "javax.faces.Checkbox"));
-        assertNotNull(
-            rk.getRenderer("javax.faces.SelectMany", "javax.faces.Listbox"));
-        assertNotNull(
-            rk.getRenderer("javax.faces.SelectMany", "javax.faces.Menu"));
-        assertNotNull(
-            rk.getRenderer("javax.faces.SelectOne", "javax.faces.Listbox"));
-        assertNotNull(
-            rk.getRenderer("javax.faces.SelectOne", "javax.faces.Menu"));
-        assertNotNull(
-            rk.getRenderer("javax.faces.SelectOne", "javax.faces.Radio"));
-
-    }
-
-
-    // Check that all required Validators have been registered
-    private void checkValidators() throws Exception {
-
-        ApplicationFactory afactory = (ApplicationFactory)
-            FactoryFinder.getFactory(FactoryFinder.APPLICATION_FACTORY);
-        Application application = afactory.getApplication();
-
-        assertTrue(application.createValidator
-                   ("javax.faces.DoubleRange") instanceof DoubleRangeValidator);
-        assertTrue(application.createValidator
-                   ("javax.faces.Length") instanceof LengthValidator);
-        assertTrue(application.createValidator
-                   ("javax.faces.LongRange") instanceof LongRangeValidator);
-
-
-    }
-
-
-
-
-    // Tests if a particular reset message got logged
-    // See testLogOverriddenContextConfigValues
-    private static class GotMessageFilter implements Filter {
-        private boolean gotLogMessage = false;
-        
-        public boolean isLoggable(LogRecord record) {
-            
-            if (record.getMessage().equals("jsf.config.webconfig.configinfo.reset.enabled") &&
-                record.getParameters()[1].equals(BooleanWebContextInitParameter.ValidateFacesConfigFiles.getQualifiedName())) {
-                gotLogMessage = true;
-            }
-            
-            return true;
-        }
-        
-        public boolean gotLogMessage() {
-            return gotLogMessage;
-        }
-    }
-
-
-    // ---------------------------------------------------------- Nested Classes
-
-
-    private static final class ServletContextWrapper implements ServletContext {
-
-        private ServletContext delegate;
-        private Map<String,String> initParameters;
-
-        ServletContextWrapper(ServletContext delegate) {
-            this.delegate = delegate;
-        }
-
-        void addInitParameter(String name, String value) {
-            if (initParameters == null) {
-                initParameters = new HashMap<String,String>();
-            }
-            initParameters.put(name, value);
-        }
-
-        public String getContextPath() {
-            return delegate.getContextPath();
-        }
-
-        public ServletContext getContext(String s) {
-            return delegate.getContext(s);
-        }
-
-        public int getMajorVersion() {
-            return delegate.getMajorVersion();
-        }
-
-        public int getMinorVersion() {
-            return delegate.getMinorVersion();
-        }
-
-        public String getMimeType(String s) {
-            return delegate.getMimeType(s);
-        }
-
-        public Set getResourcePaths(String s) {
-            return delegate.getResourcePaths(s);
-        }
-
-        public URL getResource(String s) throws MalformedURLException {
-            return delegate.getResource(s);
-        }
-
-        public InputStream getResourceAsStream(String s) {
-            return delegate.getResourceAsStream(s);
-        }
-
-        public RequestDispatcher getRequestDispatcher(String s) {
-            return delegate.getRequestDispatcher(s);
-        }
-
-        public RequestDispatcher getNamedDispatcher(String s) {
-            return delegate.getNamedDispatcher(s);
-        }
-
-        public Servlet getServlet(String s) throws ServletException {
-            return delegate.getServlet(s);
-        }
-
-        public Enumeration getServlets() {
-            return delegate.getServlets();
-        }
-
-        public Enumeration getServletNames() {
-            return getServletNames();
-        }
-
-        public void log(String s) {
-            delegate.log(s);
-        }
-
-        public void log(Exception e, String s) {
-            delegate.log(e, s);
-        }
-
-        public void log(String s, Throwable throwable) {
-            delegate.log(s, throwable);
-        }
-
-        public String getRealPath(String s) {
-            return delegate.getRealPath(s);
-        }
-
-        public String getServerInfo() {
-            return delegate.getServerInfo();
-        }
-
-        public String getInitParameter(String s) {
-            String v = null;
-            if (initParameters != null) {
-                v = initParameters.get(s);
-            }
-            if (v == null) {
-                v = delegate.getInitParameter(s);
-            }
-            return v;
-        }
-
-        public Enumeration getInitParameterNames() {
-            Vector<String> v = new Vector<String>();
-            if (initParameters != null) {
-                for (String key : initParameters.keySet()) {
-                    v.add(key);
-                }
-            }
-            for (Enumeration e = delegate.getInitParameterNames(); e.hasMoreElements(); ) {
-                v.add((String) e.nextElement());
-            }
-            return v.elements();
-        }
-
-        public Object getAttribute(String s) {
-            return delegate.getAttribute(s);
-        }
-
-        public Enumeration getAttributeNames() {
-            return delegate.getAttributeNames();
-        }
-
-        public void setAttribute(String s, Object o) {
-            delegate.setAttribute(s, o);
-        }
-
-        public void removeAttribute(String s) {
-            delegate.removeAttribute(s);
-        }
-
-        public String getServletContextName() {
-            return delegate.getServletContextName();
-        }
-
-        public int getEffectiveMajorVersion() {
-            return 0;  //To change body of implemented methods use File | Settings | File Templates.
-        }
-
-        public int getEffectiveMinorVersion() {
-            return 0;  //To change body of implemented methods use File | Settings | File Templates.
-        }
-
-        public boolean setInitParameter(String s, String s1) {
-            return false;  //To change body of implemented methods use File | Settings | File Templates.
-        }
-
-        public ServletRegistration.Dynamic addServlet(String s, String s1) {
-            return null;  //To change body of implemented methods use File | Settings | File Templates.
-        }
-
-        public ServletRegistration.Dynamic addServlet(String s, Servlet servlet) {
-            return null;  //To change body of implemented methods use File | Settings | File Templates.
-        }
-
-        public ServletRegistration.Dynamic addServlet(String s, Class<? extends Servlet> aClass) {
-            return null;  //To change body of implemented methods use File | Settings | File Templates.
-        }
-
-        public <T extends Servlet> T createServlet(Class<T> tClass)
-              throws ServletException {
-            return null;  //To change body of implemented methods use File | Settings | File Templates.
-        }
-
-        public ServletRegistration getServletRegistration(String s) {
-            return null;  //To change body of implemented methods use File | Settings | File Templates.
-        }
-
-        public Map<String, ? extends ServletRegistration> getServletRegistrations() {
-            return null;  //To change body of implemented methods use File | Settings | File Templates.
-        }
-
-        public FilterRegistration.Dynamic addFilter(String s, String s1) {
-            return null;  //To change body of implemented methods use File | Settings | File Templates.
-        }
-
-        public FilterRegistration.Dynamic addFilter(String s, javax.servlet.Filter filter) {
-            return null;  //To change body of implemented methods use File | Settings | File Templates.
-        }
-
-        public FilterRegistration.Dynamic addFilter(String s, Class<? extends javax.servlet.Filter> aClass) {
-            return null;  //To change body of implemented methods use File | Settings | File Templates.
-        }
-
-        public <T extends javax.servlet.Filter> T createFilter(Class<T> tClass)
-              throws ServletException {
-            return null;  //To change body of implemented methods use File | Settings | File Templates.
-        }
-
-        public FilterRegistration getFilterRegistration(String s) {
-            return null;  //To change body of implemented methods use File | Settings | File Templates.
-        }
-
-        public Map<String, ? extends FilterRegistration> getFilterRegistrations() {
-            return null;  //To change body of implemented methods use File | Settings | File Templates.
-        }
-
-        public SessionCookieConfig getSessionCookieConfig() {
-            return null;  //To change body of implemented methods use File | Settings | File Templates.
-        }
-
-        public void setSessionTrackingModes(Set<SessionTrackingMode> sessionTrackingModes) {
-            //To change body of implemented methods use File | Settings | File Templates.
-        }
-
-        public Set<SessionTrackingMode> getDefaultSessionTrackingModes() {
-            return null;  //To change body of implemented methods use File | Settings | File Templates.
-        }
-
-        public Set<SessionTrackingMode> getEffectiveSessionTrackingModes() {
-            return null;  //To change body of implemented methods use File | Settings | File Templates.
-        }
-
-        public void addListener(String s) {
-            //To change body of implemented methods use File | Settings | File Templates.
-        }
-
-        public <T extends EventListener> void addListener(T t) {
-            //To change body of implemented methods use File | Settings | File Templates.
-        }
-
-        public void addListener(Class<? extends EventListener> aClass) {
-            //To change body of implemented methods use File | Settings | File Templates.
-        }
-
-        public <T extends EventListener> T createListener(Class<T> tClass)
-              throws ServletException {
-            return null;  //To change body of implemented methods use File | Settings | File Templates.
-        }
-
-        public JspConfigDescriptor getJspConfigDescriptor() {
-            return null;  //To change body of implemented methods use File | Settings | File Templates.
-        }
-
-        public ClassLoader getClassLoader() {
-            return null;  //To change body of implemented methods use File | Settings | File Templates.
-        }
-
-        public void declareRoles(String... strings) {
-            //To change body of implemented methods use File | Settings | File Templates.
-        }
-    }
-
-}
diff --git a/jsf-ri/test/com/sun/faces/config/NewCustomerFormHandler.java b/jsf-ri/test/com/sun/faces/config/NewCustomerFormHandler.java
index 0df52ed..a2c0e6f 100644
--- a/jsf-ri/test/com/sun/faces/config/NewCustomerFormHandler.java
+++ b/jsf-ri/test/com/sun/faces/config/NewCustomerFormHandler.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -34,7 +38,6 @@
  * holder.
  */
 
-
 package com.sun.faces.config;
 
 import java.util.HashMap;
diff --git a/jsf-ri/test/com/sun/faces/config/NonManagedBean.java b/jsf-ri/test/com/sun/faces/config/NonManagedBean.java
index 7af94ce..318ebd7 100644
--- a/jsf-ri/test/com/sun/faces/config/NonManagedBean.java
+++ b/jsf-ri/test/com/sun/faces/config/NonManagedBean.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/test/com/sun/faces/config/SimpleBean.java b/jsf-ri/test/com/sun/faces/config/SimpleBean.java
index 5ce94c5..c78867c 100644
--- a/jsf-ri/test/com/sun/faces/config/SimpleBean.java
+++ b/jsf-ri/test/com/sun/faces/config/SimpleBean.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -34,7 +38,6 @@
  * holder.
  */
 
-
 package com.sun.faces.config;
 
 public class SimpleBean {
diff --git a/jsf-ri/test/com/sun/faces/config/SimplePhaseListener.java b/jsf-ri/test/com/sun/faces/config/SimplePhaseListener.java
index d06cc38..ced60de 100644
--- a/jsf-ri/test/com/sun/faces/config/SimplePhaseListener.java
+++ b/jsf-ri/test/com/sun/faces/config/SimplePhaseListener.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -34,7 +38,6 @@
  * holder.
  */
 
-
 package com.sun.faces.config;
 
 import javax.faces.event.PhaseEvent;
diff --git a/jsf-ri/test/com/sun/faces/config/StoreServletContext.java b/jsf-ri/test/com/sun/faces/config/StoreServletContext.java
index ef55e08..be95598 100644
--- a/jsf-ri/test/com/sun/faces/config/StoreServletContext.java
+++ b/jsf-ri/test/com/sun/faces/config/StoreServletContext.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -34,7 +38,6 @@
  * holder.
  */
 
-
 package com.sun.faces.config;
 
 import java.io.UnsupportedEncodingException;
diff --git a/jsf-ri/test/com/sun/faces/config/TestComponent.java b/jsf-ri/test/com/sun/faces/config/TestComponent.java
index 35b1a15..fd07774 100644
--- a/jsf-ri/test/com/sun/faces/config/TestComponent.java
+++ b/jsf-ri/test/com/sun/faces/config/TestComponent.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/test/com/sun/faces/config/TestConfigListener.java b/jsf-ri/test/com/sun/faces/config/TestConfigListener.java
deleted file mode 100644
index 82a5cc4..0000000
--- a/jsf-ri/test/com/sun/faces/config/TestConfigListener.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package com.sun.faces.config;
-
-import com.sun.faces.cactus.ServletFacesTestCase;
-import org.apache.cactus.ServletTestCase;
-
-import javax.servlet.ServletContextEvent;
-
-/**
- * <p>Unit tests for Configuration File processing.</p>
- */
-
-public class TestConfigListener extends ServletFacesTestCase {
-
-
-    // ----------------------------------------------------- Instance Variables
-
-
-    // ----------------------------------------------------------- Constructors
-
-
-    /**
-     * Construct a new instance of this test case.
-     *
-     * @param name Name of the test case
-     */
-    public TestConfigListener(String name) {
-
-        super(name);
-
-    }
-
-
-    // --------------------------------------------------- Overall Test Methods
-
-
-
-
-    // ------------------------------------------------ Individual Test Methods
-
-    // this method manually invokes the ContextListener contextInitialized method
-    // multiple times to ensure the parsing logic only gets executed once
-    // (for the same webapp).
-    //
-    public void testContextInitialized() {
-        ConfigureListener cl = new ConfigureListener();
-        ServletContextEvent e = new ServletContextEvent(
-            getConfig().getServletContext());
-        cl.contextInitialized(e);
-        cl.contextInitialized(e);
-    }
-}
diff --git a/jsf-ri/test/com/sun/faces/config/TestConverter.java b/jsf-ri/test/com/sun/faces/config/TestConverter.java
index b92f0f4..2c942a6 100644
--- a/jsf-ri/test/com/sun/faces/config/TestConverter.java
+++ b/jsf-ri/test/com/sun/faces/config/TestConverter.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/test/com/sun/faces/config/TestFacesConfigOrdering.java b/jsf-ri/test/com/sun/faces/config/TestFacesConfigOrdering.java
index 07a3560..7aff54f 100644
--- a/jsf-ri/test/com/sun/faces/config/TestFacesConfigOrdering.java
+++ b/jsf-ri/test/com/sun/faces/config/TestFacesConfigOrdering.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/test/com/sun/faces/config/TestFactoryInjection.java b/jsf-ri/test/com/sun/faces/config/TestFactoryInjection.java
index d53bf89..7ead6a0 100644
--- a/jsf-ri/test/com/sun/faces/config/TestFactoryInjection.java
+++ b/jsf-ri/test/com/sun/faces/config/TestFactoryInjection.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -91,6 +95,7 @@ import com.sun.faces.context.ExceptionHandlerFactoryImpl;
 import com.sun.faces.context.ExternalContextFactoryImpl;
 import com.sun.faces.context.InjectionFacesContextFactory;
 import com.sun.faces.context.ExternalContextImpl;
+import com.sun.faces.lifecycle.ClientWindowFactoryImpl;
 import com.sun.faces.lifecycle.LifecycleImpl;
 import com.sun.faces.renderkit.RenderKitFactoryImpl;
 import org.w3c.dom.Document;
@@ -218,6 +223,9 @@ public class TestFactoryInjection extends ServletFacesTestCase {
         Element externalContextFactory = createElement(d, "external-context-factory");
         factory.appendChild(externalContextFactory);
         externalContextFactory.setTextContent(ExternalContextFactoryImpl.class.getName());
+        Element clientWindowFactory = createElement(d, "client-window-factory");
+        factory.appendChild(clientWindowFactory);
+        clientWindowFactory.setTextContent(ClientWindowFactoryImpl.class.getName());
         Element renderKitFactory = createElement(d, "render-"
                                                     + "kit-factory");
         factory.appendChild(renderKitFactory);
@@ -231,7 +239,10 @@ public class TestFactoryInjection extends ServletFacesTestCase {
 
         // invoke the FactoryConfigProcessor
         FactoryConfigProcessor fcp = new FactoryConfigProcessor(false);
+        InitFacesContext initContext = new InitFacesContext(sc);
         fcp.process(sc, new DocumentInfo[]{new DocumentInfo(d, null)});
+        initContext.release();
+        FacesContext.getCurrentInstance().release();
 
         // now get an FacesContext instance from the Factory and ensure
         // no injection occured.
@@ -260,7 +271,9 @@ public class TestFactoryInjection extends ServletFacesTestCase {
         // process the document.  This should cause the the InjectionFacesContextFactory
         // to be put into play since there is more than one FacesContextFactory
         // being configured
+        initContext = new InitFacesContext(sc);
         fcp.process(sc, new DocumentInfo[]{new DocumentInfo(d, null)});
+        initContext.release();
 
         // get the FacesContextFactory instance.  The top-level factory should
         // be the InjectionFacesContextFactory.
diff --git a/jsf-ri/test/com/sun/faces/config/TestManagedBeanFactory.java b/jsf-ri/test/com/sun/faces/config/TestManagedBeanFactory.java
index 09af123..ca5eaa1 100644
--- a/jsf-ri/test/com/sun/faces/config/TestManagedBeanFactory.java
+++ b/jsf-ri/test/com/sun/faces/config/TestManagedBeanFactory.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -45,6 +49,7 @@ import com.sun.faces.mgbean.BeanManager;
 import com.sun.faces.mgbean.BeanBuilder;
 import com.sun.faces.el.ELUtils;
 
+import com.sun.faces.util.Util;
 import javax.el.ValueExpression;
 
 import javax.faces.FacesException;
@@ -866,11 +871,7 @@ public class TestManagedBeanFactory extends ServletFacesTestCase {
              ApplicationAssociate.getCurrentInstance().getBeanManager();
         beanManager.register(bean);
         BeanBuilder builder = beanManager.getBuilder(beanName);
-        Boolean isInjectable = (Boolean) TestingUtil.invokePrivateMethod("scanForAnnotations",
-                                                                         new Class[] { Class.class },
-                                                                         new Object[] { TestBean.class },
-                                                                         BeanBuilder.class,
-                                                                         builder);
+        Boolean isInjectable = (Boolean) Util.classHasAnnotations(TestBean.class);
         assertTrue(!isInjectable);
 
         bean = new ManagedBeanInfo(beanName,
@@ -882,11 +883,7 @@ public class TestManagedBeanFactory extends ServletFacesTestCase {
                                    null);
         beanManager.register(bean);
 
-        isInjectable = (Boolean) TestingUtil.invokePrivateMethod("scanForAnnotations",
-                                                                 new Class[] { Class.class },
-                                                                 new Object[] { InjectionBean.class },
-                                                                 BeanBuilder.class,
-                                                                 builder);
+        isInjectable = (Boolean) Util.classHasAnnotations(InjectionBean.class);
 
         assertTrue(isInjectable);
     }
diff --git a/jsf-ri/test/com/sun/faces/config/TestRenderer.java b/jsf-ri/test/com/sun/faces/config/TestRenderer.java
index 05e15a5..4594e8b 100644
--- a/jsf-ri/test/com/sun/faces/config/TestRenderer.java
+++ b/jsf-ri/test/com/sun/faces/config/TestRenderer.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/test/com/sun/faces/config/TestValidator.java b/jsf-ri/test/com/sun/faces/config/TestValidator.java
index bd2ff9e..402df71 100644
--- a/jsf-ri/test/com/sun/faces/config/TestValidator.java
+++ b/jsf-ri/test/com/sun/faces/config/TestValidator.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/test/com/sun/faces/context/TestExceptionHandler.java b/jsf-ri/test/com/sun/faces/context/TestExceptionHandler.java
index 086005e..b53f571 100644
--- a/jsf-ri/test/com/sun/faces/context/TestExceptionHandler.java
+++ b/jsf-ri/test/com/sun/faces/context/TestExceptionHandler.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/test/com/sun/faces/context/TestExternalContextFactoryImpl.java b/jsf-ri/test/com/sun/faces/context/TestExternalContextFactoryImpl.java
index d876c8e..f53447b 100644
--- a/jsf-ri/test/com/sun/faces/context/TestExternalContextFactoryImpl.java
+++ b/jsf-ri/test/com/sun/faces/context/TestExternalContextFactoryImpl.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/test/com/sun/faces/context/TestExternalContextImpl.java b/jsf-ri/test/com/sun/faces/context/TestExternalContextImpl.java
index 399c6b1..ba4eebb 100644
--- a/jsf-ri/test/com/sun/faces/context/TestExternalContextImpl.java
+++ b/jsf-ri/test/com/sun/faces/context/TestExternalContextImpl.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -96,13 +100,27 @@ public class TestExternalContextImpl extends ServletFacesTestCase {
 
     public TestExternalContextImpl() {
         super("TestExternalContext");
+	initLocalHostPath();
     }
 
 
     public TestExternalContextImpl(String name) {
         super(name);
+	initLocalHostPath();
+    }
+
+    private String localHostPath = "localhost:8080";
+
+    private void initLocalHostPath() {
+	String containerPort = System.getProperty("container.port");
+	if (null == containerPort || 0 == containerPort.length()) {
+	    containerPort = "8080";
+	}
+	localHostPath = "localhost:" + containerPort;
     }
 
+
+
     public void initializeSupported() {
         for (int i = 0; i < supported.length; i++) {
             supported[i] = false;
@@ -253,6 +271,11 @@ public class TestExternalContextImpl extends ServletFacesTestCase {
         }
     }
 
+    public void testIsSecure() {
+        ExternalContext ctx = getFacesContext().getExternalContext();
+        assertTrue(ctx.isSecure() == request.isSecure());    
+    }
+
     public void testRequestScheme() {
         ExternalContext ctx = getFacesContext().getExternalContext();
         assertTrue(ctx.getRequestScheme().equals(request.getScheme()));
@@ -383,7 +406,7 @@ public class TestExternalContextImpl extends ServletFacesTestCase {
 
 
     public void beginGetRequestPathInfo(WebRequest theRequest) {
-        theRequest.setURL("localhost:8080", "/test", "/foo", "/bar", null);
+        theRequest.setURL(localHostPath, "/test", "/foo", "/bar", null);
     }
 
 
@@ -428,7 +451,7 @@ public class TestExternalContextImpl extends ServletFacesTestCase {
     */
 
     public void beginGetRequestContextPath(WebRequest theRequest) {
-        theRequest.setURL("localhost:8080", "/test", "/foo", "/bar", null);
+        theRequest.setURL(localHostPath, "/test", "/foo", "/bar", null);
     }
 
 
diff --git a/jsf-ri/test/com/sun/faces/context/TestFacesContextFactoryImpl.java b/jsf-ri/test/com/sun/faces/context/TestFacesContextFactoryImpl.java
index 158f2eb..72bd1fa 100644
--- a/jsf-ri/test/com/sun/faces/context/TestFacesContextFactoryImpl.java
+++ b/jsf-ri/test/com/sun/faces/context/TestFacesContextFactoryImpl.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/test/com/sun/faces/context/TestFacesContextImpl.java b/jsf-ri/test/com/sun/faces/context/TestFacesContextImpl.java
deleted file mode 100644
index 24a3ec4..0000000
--- a/jsf-ri/test/com/sun/faces/context/TestFacesContextImpl.java
+++ /dev/null
@@ -1,714 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-// TestFacesContextImpl.java
-
-package com.sun.faces.context;
-
-import com.sun.faces.cactus.ServletFacesTestCase;
-import com.sun.faces.lifecycle.LifecycleImpl;
-import com.sun.faces.util.Util;
-
-import javax.faces.application.FacesMessage;
-import javax.faces.application.Application;
-import javax.faces.component.UICommand;
-import javax.faces.component.UIComponent;
-import javax.faces.component.UIViewRoot;
-import javax.faces.context.FacesContext;
-import javax.faces.context.ResponseStream;
-import javax.faces.context.ResponseWriter;
-import javax.faces.render.RenderKit;
-import javax.faces.render.RenderKitFactory;
-import javax.servlet.ServletContext;
-import javax.servlet.ServletRequest;
-import javax.servlet.ServletResponse;
-import javax.el.ELContextListener;
-import javax.el.ELContextEvent;
-
-import java.io.IOException;
-import java.io.Writer;
-import java.util.Iterator;
-import java.util.List;
-import java.util.ArrayList;
-import java.util.Locale;
-import java.util.NoSuchElementException;
-import java.util.Map;
-import java.util.Collections;
-
-import org.apache.cactus.WebRequest;
-
-/**
- * <B>TestFacesContextImpl</B> is a class ...
- * <p/>
- * <B>Lifetime And Scope</B> <P>
- *
- */
-
-public class TestFacesContextImpl extends ServletFacesTestCase {
-
-//
-// Protected Constants
-//
-
-//
-// Class Variables
-//
-
-//
-// Instance Variables
-//
-
-// Attribute Instance Variables
-
-// Relationship Instance Variables
-
-//
-// Constructors and Initializers    
-//
-
-    public TestFacesContextImpl() {
-        super("TestFacesContext");
-    }
-
-
-    public TestFacesContextImpl(String name) {
-        super(name);
-    }
-//
-// Class methods
-//
-
-//
-// Methods from TestCase
-//
-    public void setUp() {
-        super.setUp();
-        UIViewRoot viewRoot = Util.getViewHandler(getFacesContext()).createView(getFacesContext(), null);
-        viewRoot.setViewId("viewId");
-        viewRoot.setLocale(Locale.US);
-        getFacesContext().setViewRoot(viewRoot);
-    }
-
-//
-// General Methods
-//
-
-    public void testConstructor() {
-        ExternalContextImpl ecImpl =
-            new ExternalContextImpl(getConfig().getServletContext(),
-                                    getRequest(), getResponse());
-        LifecycleImpl lifeImpl = new LifecycleImpl();
-        try {
-            FacesContextImpl fImpl = new FacesContextImpl(null, null);
-            assertTrue(false);
-        } catch (NullPointerException npe) {
-            assertTrue(true);
-        }
-        try {
-            FacesContextImpl fImpl = new FacesContextImpl(ecImpl, null);
-            assertTrue(false);
-        } catch (NullPointerException npe) {
-            assertTrue(true);
-        }
-        try {
-            FacesContextImpl fImpl = new FacesContextImpl(null, lifeImpl);
-            assertTrue(false);
-        } catch (NullPointerException npe) {
-            assertTrue(true);
-        }
-        try {
-            FacesContextImpl fImpl = new FacesContextImpl(ecImpl, lifeImpl);
-            assertTrue(true);
-        } catch (Exception e) {
-            assertTrue(false);
-        }
-    }
-
-
-    public void testAccessors() {
-        boolean result = false;
-        boolean exceptionThrown = false;
-        ServletRequest req = null;
-        ServletResponse resp = null;
-        ServletContext sc = null;
-
-        UIViewRoot page = Util.getViewHandler(getFacesContext()).createView(getFacesContext(), null);
-        page.setViewId("viewId");
-        page.setLocale(Locale.US);
-        getFacesContext().setViewRoot(page);
-        UIViewRoot root = getFacesContext().getViewRoot();
-        result = null != root;
-        System.out.println("Testing getViewRoot: " + result);
-        assertTrue(result);
-
-        ResponseStream responseStream = new ResponseStream() {
-            public void write(int b) {
-            }
-        };
-        getFacesContext().setResponseStream(responseStream);
-        result = responseStream == getFacesContext().getResponseStream();
-        assertTrue(result);
-        System.out.println("Testing responseStream: " + result);
-
-//PENDING(rogerk) JSF_API_20030718 - implement (ResponseWriter related mods..
-        ResponseWriter responseWriter = new ResponseWriter() {
-            public void close() {
-            }
-
-
-            public void flush() {
-            }
-
-
-            public void write(char[] cbuf, int off, int len) {
-            }
-
-
-            public ResponseWriter cloneWithWriter(Writer writer) {
-                return null;
-            }
-
-
-            public void writeText(char text[], int off, int len) {
-            }
-
-
-            public void writeText(char text[]) {
-            }
-
-
-            public void writeText(char text) {
-            }
-
-
-            public void writeText(Object text) {
-            }
-
-
-            public void writeComments(Object text) {
-            }
-
-
-            public void writeComment(Object text) {
-            }
-
-            public void startCDATA() {
-            }
-
-            public void endCDATA() {
-            }
-
-            public void writeURIAttribute(String name, Object value) {
-            }
-
-
-            public void writeAttribute(String name, Object value) {
-            }
-
-
-            public void endElement(String name) {
-            }
-
-
-            public void startElement(String name) {
-            }
-
-
-            public void endDocument() {
-            }
-
-
-            public void startDocument() {
-            }
-
-
-            public String getCharacterEncoding() {
-                return null;
-            }
-
-
-            public String getContentType() {
-                return null;
-            }
-
-
-            public void startElement(String name, UIComponent componentForElement)
-                throws IOException {
-            }
-
-
-            public void writeAttribute(String name, Object value, String componentPropertyName)
-                throws IOException {
-            }
-
-
-            public void writeURIAttribute(String name, Object value, String componentPropertyName)
-                throws IOException {
-            }
-
-
-            public void writeText(Object text, String componentPropertyName)
-                throws IOException {
-            }
-        };
-/*    ResponseWriter responseWriter = null;
-    try {
-        responseWriter = getFacesContext().getResponseWriter();
-    } catch ( Exception e ) {
-        assertTrue(false);
-    }    
-*/
-        getFacesContext().setResponseWriter(responseWriter);
-        result = responseWriter == getFacesContext().getResponseWriter();
-        assertTrue(result);
-        System.out.println("Testing responseWriter: " + result);
-
-        // test null response writer exception //
-        try {
-            getFacesContext().setResponseWriter(null);
-        } catch (Exception e) {
-            if (-1 == e.getMessage().indexOf("esponseWriter")) {
-                assertTrue(false);
-            }
-        }
-    }
-
-
-    public void testRenderingControls() {
-        System.out.println("Testing renderResponse()");
-        getFacesContext().renderResponse();
-        assertTrue(getFacesContext().getRenderResponse());
-        System.out.println("Testing responseComplete()");
-        getFacesContext().responseComplete();
-        assertTrue(getFacesContext().getResponseComplete());
-    }
-
-
-    public void testCurrentInstance() {
-        System.out.println("Testing getCurrentInstance()");
-        FacesContext context = getFacesContext();
-        assertTrue(context == FacesContext.getCurrentInstance());
-    }
-
-
-    public void testMessageMethodsNull() {
-        boolean gotException = false;
-
-        FacesContext fc = getFacesContext();
-        assertTrue(fc != null);
-
-        try {
-            fc.addMessage(null, null);
-        } catch (NullPointerException fe) {
-            gotException = true;
-        }
-        assertTrue(gotException);
-        gotException = false;
-
-        try {
-            fc.addMessage(null, null);
-        } catch (NullPointerException fe) {
-            gotException = true;
-        }
-        assertTrue(gotException);
-        gotException = false;
-
-    }
-
-
-    public void testMessageMethods() {
-        FacesContext fc = getFacesContext();
-        assertTrue(fc != null);
-
-        System.out.println("Testing add methods");
-        FacesMessage msg1 = new FacesMessage(FacesMessage.SEVERITY_ERROR,
-                                             "summary1", "detail1");
-        fc.addMessage(null, msg1);
-
-        FacesMessage msg2 = new FacesMessage(FacesMessage.SEVERITY_FATAL,
-                                             "summary2", "detail2");
-        fc.addMessage(null, msg2);
-
-        UICommand command = new UICommand();
-        FacesMessage msg3 = new FacesMessage(FacesMessage.SEVERITY_FATAL,
-                                             "summary3", "detail3");
-        fc.addMessage(command.getClientId(fc), msg3);
-
-        FacesMessage msg4 = new FacesMessage(FacesMessage.SEVERITY_WARN,
-                                             "summary4", "detail4");
-        fc.addMessage(command.getClientId(fc), msg4);
-
-        System.out.println("Testing get methods");
-        assertTrue(fc.getMaximumSeverity() == FacesMessage.SEVERITY_FATAL);
-
-        List controlList = new ArrayList();
-        controlList.add(msg1);
-        controlList.add(msg2);
-        controlList.add(msg3);
-        controlList.add(msg4);
-        Iterator it = fc.getMessages();
-        for (int i = 0, size = controlList.size(); i < size; i++) {
-            assertTrue(controlList.get(i).equals(it.next()));
-        }
-
-        controlList.clear();
-        controlList.add(msg3);
-        controlList.add(msg4);
-        it = fc.getMessages(command.getClientId(fc));
-        for (int i = 0, size = controlList.size(); i < size; i++) {
-            assertTrue(controlList.get(i).equals(it.next()));
-        }
-
-        controlList.clear();
-        controlList.add(msg1);
-        controlList.add(msg2);
-        it = fc.getMessages(null);
-        for (int i = 0, size = controlList.size(); i < size; i++) {
-            assertTrue(controlList.get(i).equals(it.next()));
-        }
-        
-    }
-
-    public void testGetMessageList() {
-
-        FacesContext ctx = getFacesContext();
-        FacesMessage msg1 = new FacesMessage(FacesMessage.SEVERITY_INFO, "", "");
-        FacesMessage msg2 = new FacesMessage(FacesMessage.SEVERITY_WARN, "", "");
-        FacesMessage msg3 = new FacesMessage(FacesMessage.SEVERITY_ERROR, "", "");
-        FacesMessage msg4 = new FacesMessage(FacesMessage.SEVERITY_ERROR, "", "");
-
-        ctx.addMessage(null, msg1);
-        ctx.addMessage("id1", msg2);
-        ctx.addMessage("id2", msg3);
-        ctx.addMessage("id2", msg4);
-
-        Class unmodifiableType = Collections.unmodifiableList(Collections.emptyList()).getClass();
-
-        List list = ctx.getMessageList(null);
-        assertTrue(list.size() == 1);
-        assertTrue(unmodifiableType.isInstance(list));
-        assertTrue(msg1.equals(list.get(0)));
-
-        list = ctx.getMessageList("id1");
-        assertTrue(list.size() == 1);
-        assertTrue(unmodifiableType.isInstance(list));
-        assertTrue(msg2.equals(list.get(0)));
-
-        list = ctx.getMessageList("id2");
-        assertTrue(list.size() == 2);
-        assertTrue(unmodifiableType.isInstance(list));
-        assertTrue(msg3.equals(list.get(0)));
-        assertTrue(msg4.equals(list.get(1)));
-
-        list = ctx.getMessageList();
-        assertTrue(list.size() == 4);
-        assertTrue(unmodifiableType.isInstance(list));
-        assertTrue(list.contains(msg1));
-        assertTrue(list.contains(msg2));
-        assertTrue(list.contains(msg3));
-        assertTrue(list.contains(msg4));
-        
-    }
-
-    public void testGetMaxServerity1() {
-        FacesContext f = getFacesContext();
-        FacesMessage msg1 = new FacesMessage(FacesMessage.SEVERITY_INFO, "", "");
-        FacesMessage msg2 = new FacesMessage(FacesMessage.SEVERITY_WARN, "", "");
-
-        f.addMessage(null, msg2);
-        f.addMessage(null, msg1);
-
-        assertTrue(FacesMessage.SEVERITY_WARN.equals(f.getMaximumSeverity()));
-    }
-
-     public void testGetMaxServerity2() {
-        FacesContext f = getFacesContext();
-        FacesMessage msg1 = new FacesMessage(FacesMessage.SEVERITY_INFO, "", "");
-        FacesMessage msg2 = new FacesMessage(FacesMessage.SEVERITY_WARN, "", "");
-        FacesMessage msg3 = new FacesMessage(FacesMessage.SEVERITY_ERROR, "", "");
-
-        f.addMessage(null, msg2);
-        f.addMessage(null, msg1);
-        f.addMessage(null, msg3);
-
-        assertTrue(FacesMessage.SEVERITY_ERROR.equals(f.getMaximumSeverity()));
-    }
-
-    public void testGetMaxSeverity3() throws Exception {
-        FacesContext f = getFacesContext();
-        Iterator<FacesMessage> messages = f.getMessages();
-        assertTrue(!messages.hasNext());
-
-        FacesMessage msg1 = new FacesMessage(FacesMessage.SEVERITY_INFO, "", "");
-        FacesMessage msg2 = new FacesMessage(FacesMessage.SEVERITY_WARN, "", "");
-        FacesMessage msg3 = new FacesMessage(FacesMessage.SEVERITY_ERROR, "", "");
-        FacesMessage msg4 = new FacesMessage(FacesMessage.SEVERITY_FATAL, "", "");
-        f.addMessage(null, msg2);
-        f.addMessage(null, msg1);
-        f.addMessage(null, msg3);
-
-        messages = f.getMessages();
-        assertTrue(messages.hasNext());
-        while (messages.hasNext()) {
-            messages.next();
-            messages.remove();
-        }
-        assertTrue(f.getMaximumSeverity() == null);
-
-        f.addMessage("id1", msg1);
-        f.addMessage("id3", msg1);
-        f.addMessage("id3", msg3);
-        f.addMessage("id3", msg1);
-        f.addMessage(null, msg4);
-        assertTrue(f.getMaximumSeverity() == FacesMessage.SEVERITY_FATAL);
-
-        for (Iterator<FacesMessage> i = f.getMessages(); i.hasNext(); ) {
-            FacesMessage m = i.next();
-            if (m.getSeverity() == FacesMessage.SEVERITY_FATAL) {
-                i.remove();
-            }
-        }
-        assertTrue(f.getMaximumSeverity() == FacesMessage.SEVERITY_ERROR);
-
-        for (Iterator<FacesMessage> i = f.getMessages(); i.hasNext(); ) {
-            FacesMessage m = i.next();
-            if (m.getSeverity() == FacesMessage.SEVERITY_ERROR) {
-                i.remove();
-            }
-        }
-        assertTrue(f.getMaximumSeverity() == FacesMessage.SEVERITY_INFO);
-
-        for (Iterator<FacesMessage> i = f.getMessages(); i.hasNext(); ) {
-            FacesMessage m = i.next();
-            if (m.getSeverity() == FacesMessage.SEVERITY_INFO) {
-                i.remove();
-            }
-        }
-        assertTrue(f.getMaximumSeverity() == null);
-
-
-    }
-
-
-    public void testGetMessagesWithIdsIteratorRemove() throws Exception {
-        FacesContext f = getFacesContext();
-        Iterator<FacesMessage> messages = f.getMessages();
-        assertTrue(!messages.hasNext());
-
-        FacesMessage msg1 = new FacesMessage(FacesMessage.SEVERITY_INFO, "", "");
-        FacesMessage msg2 = new FacesMessage(FacesMessage.SEVERITY_WARN, "", "");
-        FacesMessage msg3 = new FacesMessage(FacesMessage.SEVERITY_ERROR, "", "");
-        FacesMessage msg4 = new FacesMessage(FacesMessage.SEVERITY_FATAL, "", "");
-        f.addMessage("id1", msg1);
-        f.addMessage("id3", msg2);
-        f.addMessage("id3", msg3);
-        f.addMessage("id3", msg4);
-        f.addMessage("id2", msg1);
-
-        for (Iterator<String> i = f.getClientIdsWithMessages();
-              i.hasNext();) {
-            String id = i.next();
-            if ("id3".equals(id)) {
-                i.remove();
-            }
-        }
-
-        assertTrue(!f.getMessages("id3").hasNext());
-        assertTrue(f.getMaximumSeverity() == FacesMessage.SEVERITY_INFO);
-
-        for (Iterator<String> i = f.getClientIdsWithMessages();
-              i.hasNext();) {
-            i.next();
-            i.remove();
-        }
-
-        assertTrue(f.getMaximumSeverity() == null);
-    }
-
-    public void testGetMessagesCustomIteratorExceptions() throws Exception {
-        // we use a custom iterator for iterating over all messages.
-        // ensure the proper exceptions are thrown by next() and remove()
-        FacesContext f = getFacesContext();
-        f.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_FATAL, "", ""));
-
-        // next should throw NoSuchElementException after the second call to next()
-        Iterator i = f.getMessages();
-        i.next();
-        try {
-            i.next();
-            assertTrue(false);
-        } catch (NoSuchElementException nsee) { }
-
-        // remove should throw an IllegalStateException if called without having
-        // called next()
-        i = f.getMessages();
-        try {
-            i.remove();
-            assertTrue(false);
-        } catch (IllegalStateException ise) { }               
-
-    }
-
-
-    public void testGetApplication() {
-        FacesContext fc = getFacesContext();
-        assertTrue(fc != null);
-
-        assertTrue(null != fc.getApplication());
-    }
-
-
-    public void testRelease() {
-        System.out.println("Testing release method");
-        FacesContext context = getFacesContext();
-        context.release();
-        boolean exceptionThrown = false;
-        try {
-            context.getViewRoot();
-        } catch (IllegalStateException ise) {
-            exceptionThrown = true;
-        }
-        assertTrue(exceptionThrown);
-
-        exceptionThrown = false;
-        try {
-            context.getResponseStream();
-        } catch (IllegalStateException ise) {
-            exceptionThrown = true;
-        }
-
-        exceptionThrown = false;
-        try {
-            context.getResponseWriter();
-        } catch (IllegalStateException ise) {
-            exceptionThrown = true;
-        }
-        assertTrue(exceptionThrown);
-
-        // remainder of FacesContext methods are tested in TCK
-    }
-    
-    
-    public void testGetRenderKid() {
-        FacesContext orig = FacesContext.getCurrentInstance();
-        FacesContext context = new FacesContextImpl(orig.getExternalContext(),
-                                                    new LifecycleImpl());
-        Application application = context.getApplication();
-        UIViewRoot root = (UIViewRoot) 
-              application.createComponent(UIViewRoot.COMPONENT_TYPE);
-        
-        // if no UIViewRoot then null should be returned
-        assertTrue(context.getRenderKit() == null);
-        
-        // if UIViewRoot is present but has no RenderKitID, null
-        // should be rendered
-        context.setViewRoot(root);
-        assertTrue(context.getRenderKit() == null);
-        
-        // UIViewRoot is present, and has an ID for a non existent
-        // RenderKit - null should be returned
-        root.setRenderKitId("nosuchkit");
-        assertTrue(context.getRenderKit() == null);
-        
-        // UIViewRoot with valid RenderKit id should return a RenderKit
-        root.setRenderKitId(RenderKitFactory.HTML_BASIC_RENDER_KIT);
-        assertTrue(context.getRenderKit() != null);
-        
-    }
-
-
-    public void testGetAttributes() {
-        FacesContext ctx = getFacesContext();
-        Map<Object,Object> m = ctx.getAttributes();
-        assertNotNull(m);
-    }
-
-
-    public void beginIsPostback1(WebRequest req) {
-        req.addParameter("javax.faces.ViewState", "something");
-    }
-
-    public void testIsPostback1() {
-        String key = "com.sun.faces.context.FacesContextImpl_POST_BACK";
-        FacesContext ctx = getFacesContext();
-        assertTrue(ctx.isPostback());
-        assertTrue(ctx.getAttributes().containsKey(key));
-        assertTrue(Boolean.TRUE.equals(getFacesContext().getAttributes().get(key)));
-    }
-
-    public void testIsPostback2() {
-        String key = "com.sun.faces.context.FacesContextImpl_POST_BACK";
-        FacesContext ctx = getFacesContext();
-        assertTrue(!ctx.isPostback());
-        assertTrue(ctx.getAttributes().containsKey(key));
-        assertTrue(Boolean.FALSE.equals(getFacesContext().getAttributes().get(key)));
-    }
-
-    public void testELContextListenerNotification() {
-
-        ELContextListenerImpl listener = new ELContextListenerImpl();
-        FacesContext ctx = getFacesContext();
-        Application app = ctx.getApplication();
-        FacesContextImpl ctxImpl = new FacesContextImpl(ctx.getExternalContext(),
-                                                        new LifecycleImpl());
-        app.addELContextListener(listener);
-        ctxImpl.getELContext();
-        assertTrue(listener.wasInvoked());
-        
-    }
-
-
-    // ---------------------------------------------------------- Nested Classes
-
-
-    private static final class ELContextListenerImpl implements ELContextListener {
-
-        private boolean invoked;
-
-        public void contextCreated(ELContextEvent elContextEvent) {
-            invoked = true;
-        }
-
-        public boolean wasInvoked() {
-            return invoked;
-        }
-
-    }
-
-
-// Unit tests to update and retrieve values from model objects
-// are in TestFacesContextImpl_Model.java
-} // end of class TestFacesContextImpl
diff --git a/jsf-ri/test/com/sun/faces/context/TestPartialResponseWriter.java b/jsf-ri/test/com/sun/faces/context/TestPartialResponseWriter.java
new file mode 100644
index 0000000..1fe3ad4
--- /dev/null
+++ b/jsf-ri/test/com/sun/faces/context/TestPartialResponseWriter.java
@@ -0,0 +1,138 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.context;
+
+import javax.faces.FactoryFinder;
+import javax.faces.component.UIInput;
+import javax.faces.component.UIOutput;
+import javax.faces.context.PartialResponseWriter;
+import javax.faces.context.ResponseWriter;
+import javax.faces.render.RenderKit;
+import javax.faces.render.RenderKitFactory;
+
+import java.io.IOException;
+import java.io.StringWriter;
+import java.util.Arrays;
+import java.util.Collections;
+
+import com.sun.faces.cactus.ServletFacesTestCase;
+
+/**
+ * <B>TestPartialResponseWriter.java</B> is a class ...
+ * <p/>
+ * <B>Lifetime And Scope</B> <P>
+ */
+
+public class TestPartialResponseWriter extends ServletFacesTestCase // ServletTestCase
+{
+
+//
+// Protected Constants
+//
+
+// Class Variables
+//
+
+//
+// Instance Variables
+//
+    private ResponseWriter writer = null;
+    private PartialResponseWriter pWriter = null;
+    private RenderKit renderKit = null;
+    private StringWriter sw = null;
+
+// Attribute Instance Variables
+
+// Relationship Instance Variables
+
+//
+// Constructors and Initializers    
+//
+
+    public TestPartialResponseWriter() {
+        super("TestPartialResponseWriter.java");
+    }
+
+
+    public TestPartialResponseWriter(String name) {
+        super(name);
+    }
+
+//
+// Class methods
+//
+
+//
+// General Methods
+//
+    public void setUp() {
+        super.setUp();
+        RenderKitFactory renderKitFactory = (RenderKitFactory)
+            FactoryFinder.getFactory(FactoryFinder.RENDER_KIT_FACTORY);
+        renderKit = renderKitFactory.getRenderKit(getFacesContext(),
+                                                  RenderKitFactory.HTML_BASIC_RENDER_KIT);
+        sw = new StringWriter();
+        writer = renderKit.createResponseWriter(sw, "text/html", "ISO-8859-1");
+        pWriter = new PartialResponseWriter(writer);
+    }
+
+    // Tests that the <extension> element is placed correctly in the partial response output
+
+    public void testExtension() {
+        try {
+            pWriter.startDocument();
+            pWriter.startUpdate(PartialResponseWriter.VIEW_STATE_MARKER);
+            pWriter.write("foo");
+            pWriter.endUpdate();
+            pWriter.startExtension(Collections.<String, String>emptyMap());
+            pWriter.startElement("data", null);
+            pWriter.endElement("data");
+            pWriter.endExtension();
+            pWriter.endDocument();
+
+            assertTrue(sw.toString().indexOf("</update><extension><data></data></extension></changes></partial-response>") >= 0);
+        } catch (IOException e) {
+            assertTrue(false);
+        }
+            
+
+    }
+}
diff --git a/jsf-ri/test/com/sun/faces/context/TestStateContext.java b/jsf-ri/test/com/sun/faces/context/TestStateContext.java
new file mode 100644
index 0000000..10ae286
--- /dev/null
+++ b/jsf-ri/test/com/sun/faces/context/TestStateContext.java
@@ -0,0 +1,135 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+// TestStateContext.java
+
+package com.sun.faces.context;
+
+import com.sun.faces.cactus.ServletFacesTestCase;
+import com.sun.faces.util.ComponentStruct;
+import com.sun.faces.util.Util;
+import java.util.List;
+import java.util.Locale;
+import javax.faces.component.UIOutput;
+import javax.faces.component.UIViewRoot;
+import javax.faces.context.FacesContext;
+
+/**
+ * <B>TestStateContext</B> is a class ...
+ * <p/>
+ * <B>Lifetime And Scope</B> <P>
+ *
+ */
+
+public class TestStateContext extends ServletFacesTestCase {
+
+//
+// Protected Constants
+//
+
+//
+// Class Variables
+//
+
+//
+// Instance Variables
+//
+
+// Attribute Instance Variables
+
+// Relationship Instance Variables
+
+//
+// Constructors and Initializers    
+//
+
+    public TestStateContext() {
+        super("TestStateContext");
+    }
+
+
+    public TestStateContext(String name) {
+        super(name);
+    }
+//
+// Class methods
+//
+
+//
+// Methods from TestCase
+//
+    @Override
+    public void setUp() {
+        super.setUp();
+        UIViewRoot viewRoot = Util.getViewHandler(getFacesContext()).createView(getFacesContext(), null);
+        viewRoot.setViewId("viewId");
+        viewRoot.setLocale(Locale.US);
+        getFacesContext().setViewRoot(viewRoot);
+    }
+
+//
+// General Methods
+//
+
+    public void testGetStateContext() {
+        StateContext stateContext = StateContext.getStateContext(getFacesContext());
+        assertTrue(null != stateContext);
+    }
+
+    public void testPartialStateSaving() {
+    	  FacesContext ctx = getFacesContext();
+        StateContext stateContext = StateContext.getStateContext(ctx);
+        boolean partial = stateContext.isPartialStateSaving(ctx, "10");
+        assertTrue(partial);
+    }
+
+    public void testAddComponent() {
+        FacesContext ctx = getFacesContext();
+        StateContext stateContext = StateContext.getStateContext(ctx);
+        UIViewRoot viewRoot = ctx.getViewRoot();
+        assertTrue(viewRoot != null);
+        stateContext.startTrackViewModifications(ctx, viewRoot);
+        UIOutput output = new UIOutput();
+        output.setId("foo");
+        viewRoot.getChildren().add(output);
+        List<ComponentStruct> added = stateContext.getDynamicActions();
+        assertTrue(added.size() > 0);
+    }
+}
diff --git a/jsf-ri/test/com/sun/faces/convert/TestConverters.java b/jsf-ri/test/com/sun/faces/convert/TestConverters.java
index bb254ef..7fab53c 100644
--- a/jsf-ri/test/com/sun/faces/convert/TestConverters.java
+++ b/jsf-ri/test/com/sun/faces/convert/TestConverters.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/test/com/sun/faces/el/ElBean.java b/jsf-ri/test/com/sun/faces/el/ElBean.java
index c77f196..50eddba 100644
--- a/jsf-ri/test/com/sun/faces/el/ElBean.java
+++ b/jsf-ri/test/com/sun/faces/el/ElBean.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/test/com/sun/faces/el/TestFacesResourceBundleELResolver.java b/jsf-ri/test/com/sun/faces/el/TestFacesResourceBundleELResolver.java
index 8dbdab2..b82c0ff 100644
--- a/jsf-ri/test/com/sun/faces/el/TestFacesResourceBundleELResolver.java
+++ b/jsf-ri/test/com/sun/faces/el/TestFacesResourceBundleELResolver.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -207,4 +211,4 @@ public class TestFacesResourceBundleELResolver extends ServletFacesTestCase {
         }
     }
 
-}
\ No newline at end of file
+}
diff --git a/jsf-ri/test/com/sun/faces/el/TestMethodExpressionImpl.java b/jsf-ri/test/com/sun/faces/el/TestMethodExpressionImpl.java
index 20fcc2c..aa848c5 100644
--- a/jsf-ri/test/com/sun/faces/el/TestMethodExpressionImpl.java
+++ b/jsf-ri/test/com/sun/faces/el/TestMethodExpressionImpl.java
@@ -1,169 +1,175 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-// TestMethodRef.java
-package com.sun.faces.el;
-
-import com.sun.faces.cactus.ServletFacesTestCase;
-
-import javax.el.MethodExpression;
-import javax.el.ELException;
-import javax.el.MethodNotFoundException;
-import javax.faces.el.PropertyNotFoundException;
-
-/**
- * <B>TestMethodRef </B> is a class ... <p/><B>Lifetime And Scope </B>
- * <P>
- * 
- */
-
-public class TestMethodExpressionImpl extends ServletFacesTestCase
-{
-
-    //
-    // Protected Constants
-    //
-
-    //
-    // Class Variables
-    //
-
-    //
-    // Instance Variables
-    //
-
-    // Attribute Instance Variables
-
-    // Relationship Instance Variables
-
-    //
-    // Constructors and Initializers
-    //
-
-    public TestMethodExpressionImpl()
-    {
-        super("TestMethodExpression");
-    }
-
-    public TestMethodExpressionImpl(String name)
-    {
-        super(name);
-    }
-
-    //
-    // Class methods
-    //
-
-    //
-    // General Methods
-    //
-    protected MethodExpression create(String ref, Class[] params) throws Exception
-    {
-        return (getFacesContext().getApplication().getExpressionFactory().
-            createMethodExpression(getFacesContext().getELContext(),ref, null, params));
-    }
-    
-    public void testNullReference() throws Exception
-    {
-        try
-        {
-            create(null, null);
-            fail();
-        }
-        catch (NullPointerException npe) {}
-        catch (Exception e) { fail("Should have thrown an NPE"); };
-    }
-    
-    public void testInvalidMethod() throws Exception
-    {
-        try
-        {
-            create("${foo > 1}", null);
-            fail();
-        }
-        catch (ELException ee) {
-            fail("Should have thrown a NullPointerException"); 
-        }
-        catch (NullPointerException npe) { }
-    }
-    
-    public void testLiteralReference() throws Exception
-    {
-        boolean exceptionThrown = false;
-        try
-        {
-            create("some.method", null);
-        }
-        catch (NullPointerException ee) {
-            exceptionThrown = true;
-        }
-        assertTrue(exceptionThrown);
-    }
-
-    public void testInvalidTrailing() throws Exception
-    {
-        MethodExpression mb = this.create(
-                "#{NewCustomerFormHandler.redLectroidsMmmm}", new Class[0]);
-
-        boolean exceptionThrown = false;
-        try
-        {
-            mb.invoke(getFacesContext().getELContext(), new Object[0]);
-        }
-        catch (MethodNotFoundException me)
-        {
-            exceptionThrown = true;
-        }
-        assertTrue(exceptionThrown);
-
-        mb = this.create("#{nonexistentBean.redLectroidsMmmm}", new Class[0]);
-       
-        exceptionThrown = false;
-        try
-        {
-            mb.invoke(getFacesContext().getELContext(), new Object[0]);
-        }
-        catch (PropertyNotFoundException ne)
-        {
-            exceptionThrown = true;
-        }
-        catch (ELException e) {
-            exceptionThrown = true;
-        }
-        assertTrue(exceptionThrown);
-    }
-
-} // end of class TestMethodRef
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+// TestMethodRef.java
+package com.sun.faces.el;
+
+import com.sun.faces.cactus.ServletFacesTestCase;
+
+import javax.el.MethodExpression;
+import javax.el.ELException;
+import javax.el.MethodNotFoundException;
+import javax.faces.el.PropertyNotFoundException;
+
+/**
+ * <B>TestMethodRef </B> is a class ... <p/><B>Lifetime And Scope </B>
+ * <P>
+ * 
+ */
+
+public class TestMethodExpressionImpl extends ServletFacesTestCase
+{
+
+    //
+    // Protected Constants
+    //
+
+    //
+    // Class Variables
+    //
+
+    //
+    // Instance Variables
+    //
+
+    // Attribute Instance Variables
+
+    // Relationship Instance Variables
+
+    //
+    // Constructors and Initializers
+    //
+
+    public TestMethodExpressionImpl()
+    {
+        super("TestMethodExpression");
+    }
+
+    public TestMethodExpressionImpl(String name)
+    {
+        super(name);
+    }
+
+    //
+    // Class methods
+    //
+
+    //
+    // General Methods
+    //
+    protected MethodExpression create(String ref, Class[] params) throws Exception
+    {
+        return (getFacesContext().getApplication().getExpressionFactory().
+            createMethodExpression(getFacesContext().getELContext(),ref, null, params));
+    }
+    
+    public void testNullReference() throws Exception
+    {
+        try
+        {
+            create(null, null);
+            fail();
+        }
+        catch (ELException e) {}
+        catch (Exception exception) {
+            fail();
+        }
+    }
+    
+    public void testInvalidMethod() throws Exception
+    {
+        try
+        {
+            create("${foo > 1}", null);
+            fail();
+        }
+        catch (ELException e) {}
+        catch (Exception exeption) {
+            fail();
+        }
+    }
+    
+    public void testLiteralReference() throws Exception
+    {
+        boolean exceptionThrown = false;
+        try
+        {
+            create("some.method", null);
+        }
+        catch (NullPointerException ee) {
+            exceptionThrown = true;
+        }
+        assertTrue(exceptionThrown);
+    }
+
+    public void testInvalidTrailing() throws Exception
+    {
+        MethodExpression mb = this.create(
+                "#{NewCustomerFormHandler.redLectroidsMmmm}", new Class[0]);
+
+        boolean exceptionThrown = false;
+        try
+        {
+            mb.invoke(getFacesContext().getELContext(), new Object[0]);
+        }
+        catch (MethodNotFoundException me)
+        {
+            exceptionThrown = true;
+        }
+        assertTrue(exceptionThrown);
+
+        mb = this.create("#{nonexistentBean.redLectroidsMmmm}", new Class[0]);
+       
+        exceptionThrown = false;
+        try
+        {
+            mb.invoke(getFacesContext().getELContext(), new Object[0]);
+        }
+        catch (PropertyNotFoundException ne)
+        {
+            exceptionThrown = true;
+        }
+        catch (ELException e) {
+            exceptionThrown = true;
+        }
+        assertTrue(exceptionThrown);
+    }
+
+} // end of class TestMethodRef
diff --git a/jsf-ri/test/com/sun/faces/el/TestMethodRef.java b/jsf-ri/test/com/sun/faces/el/TestMethodRef.java
index 63cbe28..4dc73c9 100644
--- a/jsf-ri/test/com/sun/faces/el/TestMethodRef.java
+++ b/jsf-ri/test/com/sun/faces/el/TestMethodRef.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/test/com/sun/faces/el/TestNestedELResolver.java b/jsf-ri/test/com/sun/faces/el/TestNestedELResolver.java
index 42ac439..9c20b92 100644
--- a/jsf-ri/test/com/sun/faces/el/TestNestedELResolver.java
+++ b/jsf-ri/test/com/sun/faces/el/TestNestedELResolver.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -34,7 +38,6 @@
  * holder.
  */
 
-
 package com.sun.faces.el;
 
 import java.beans.FeatureDescriptor;
@@ -125,8 +128,9 @@ public class TestNestedELResolver extends TestCase {
               .setELResolversFromFacesConfig(Collections.<ELResolver>singletonList(
                     new NestedELResolver(PREFIX)));
         associate.setLegacyVariableResolver(new ChainAwareVariableResolver());
-        FacesCompositeELResolver facesCompositeELResolver = new FacesCompositeELResolver(
-              FacesCompositeELResolver.ELResolverChainType.Faces);
+        FacesCompositeELResolver facesCompositeELResolver = 
+      new DemuxCompositeELResolver(
+           FacesCompositeELResolver.ELResolverChainType.Faces);
         ELUtils.buildFacesResolver(facesCompositeELResolver, associate);
         ELContext elContext = mockFacesContext.getELContext();
         setELResolverOnElContext(facesCompositeELResolver, elContext);
diff --git a/jsf-ri/test/com/sun/faces/el/TestPropertyResolverImpl.java b/jsf-ri/test/com/sun/faces/el/TestPropertyResolverImpl.java
index b44afcd..164df2a 100644
--- a/jsf-ri/test/com/sun/faces/el/TestPropertyResolverImpl.java
+++ b/jsf-ri/test/com/sun/faces/el/TestPropertyResolverImpl.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/test/com/sun/faces/el/TestResourceELResolver.java b/jsf-ri/test/com/sun/faces/el/TestResourceELResolver.java
index e496a20..8a084d0 100644
--- a/jsf-ri/test/com/sun/faces/el/TestResourceELResolver.java
+++ b/jsf-ri/test/com/sun/faces/el/TestResourceELResolver.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -50,11 +54,23 @@ public class TestResourceELResolver extends ServletFacesTestCase {
 
     public TestResourceELResolver() {
         super("TestResourceELResolver");
+	initLocalHostPath();
     }
 
 
     public TestResourceELResolver(String name) {
         super(name);
+	initLocalHostPath();
+    }
+
+    private String localHostPath = "localhost:8080";
+
+    private void initLocalHostPath() {
+	String containerPort = System.getProperty("container.port");
+	if (null == containerPort || 0 == containerPort.length()) {
+	    containerPort = "8080";
+	}
+	localHostPath = "localhost:" + containerPort;
     }
 
 
@@ -74,7 +90,7 @@ public class TestResourceELResolver extends ServletFacesTestCase {
 
 
     public void beginGetValue(WebRequest req) {
-        req.setURL("localhost:8080", "/test", "/faces", "/foo.jsp", null);
+        req.setURL(localHostPath, "/test", "/faces", "/foo.jsp", null);
     }
 
     public void testGetValue() throws Exception {
diff --git a/jsf-ri/test/com/sun/faces/el/TestValueBindingImpl.java b/jsf-ri/test/com/sun/faces/el/TestValueBindingImpl.java
index 964b4c5..f648ed3 100644
--- a/jsf-ri/test/com/sun/faces/el/TestValueBindingImpl.java
+++ b/jsf-ri/test/com/sun/faces/el/TestValueBindingImpl.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -237,143 +241,7 @@ public class TestValueBindingImpl extends ServletFacesTestCase
 
     public void testELSet() throws Exception
     {
-        TestBean testBean = new TestBean();
-        InnerBean newInner, oldInner = new InnerBean();
-        testBean.setInner(oldInner);
-        ValueBinding valueBinding = null;
-        Object result = null;
-        ExternalContext extContext = getFacesContext().getExternalContext();
-
-        Map myMap = new HashMap();
-        TestBean myBean = new TestBean();
-        myMap.put("myBean", myBean);
-        extContext.getRequestMap().put("myMap", myMap);
-
-        //
-        // Set tests
-        //
-        valueBinding = this.create("myMap.myBean.one");
-        valueBinding.setValue(getFacesContext(), "one");
-        Map map = (Map) extContext.getRequestMap().get("myMap");
-        assertTrue("one".equals(((TestBean) map.get("myBean")).getOne()));
-        myBean = new TestBean();
-        map.put("myBean", myBean);
-        extContext.getRequestMap().put("myMap", myMap);
-
-        // test that we can set null as the value
-        valueBinding = this.create("myMap.myBean.prop");
-        valueBinding.setValue(getFacesContext(), null);
-        map = (Map) extContext.getRequestMap().get("myMap");
-        assertEquals(null, ((TestBean) map.get("myBean")).getOne());
-        myBean = new TestBean();
-        map.put("myBean", myBean);
-        extContext.getRequestMap().put("myMap", myMap);
-
-        valueBinding = this.create("myMap[\"myBean\"].one");
-        valueBinding.setValue(getFacesContext(), "one");
-        map = (Map) extContext.getRequestMap().get("myMap");
-        assertTrue("one".equals(((TestBean) map.get("myBean")).getOne()));
-        myBean = new TestBean();
-        map.put("myBean", myBean);
-        extContext.getRequestMap().put("myMap", myMap);
-
-        // test that we can set the property to null
-        valueBinding = this.create("myMap[\"myBean\"].prop");
-        valueBinding.setValue(getFacesContext(), null);
-        map = (Map) extContext.getRequestMap().get("myMap");
-        String msg = "Default Message";
-        if (((TestBean) map.get("myBean")).getProp() != null)
-        {
-            msg = ((TestBean) map.get("myBean")).getProp().getClass().getName();
-        }
-        assertEquals(msg, null, ((TestBean) map.get("myBean")).getProp());
-        myBean = new TestBean();
-        map.put("myBean", myBean);
-        extContext.getRequestMap().put("myMap", myMap);
-
-        valueBinding = this.create("myMap.myBean['one']");
-        valueBinding.setValue(getFacesContext(), "one");
-        map = (Map) extContext.getRequestMap().get("myMap");
-        assertTrue("one".equals(((TestBean) map.get("myBean")).getOne()));
-        myBean = new TestBean();
-        map.put("myBean", myBean);
-        extContext.getRequestMap().put("myMap", myMap);
-
-        // set the prop to null
-        valueBinding = this.create("myMap.myBean['prop']");
-        valueBinding.setValue(getFacesContext(), null);
-        map = (Map) extContext.getRequestMap().get("myMap");
-        assertEquals(null, ((TestBean) map.get("myBean")).getOne());
-        myBean = new TestBean();
-        map.put("myBean", myBean);
-        extContext.getRequestMap().put("myMap", myMap);
-
-        valueBinding = this.create("NonExist");
-        valueBinding.setValue(getFacesContext(), "value");
-        result = extContext.getRequestMap().get("NonExist");
-        assertTrue("value".equals(result));
-        extContext.getRequestMap().remove("NonExist");
-
-        extContext.getSessionMap().put("Key", "oldValue");
-        valueBinding = this.create("Key");
-        valueBinding.setValue(getFacesContext(), "newValue");
-        result = extContext.getSessionMap().get("Key");
-        assertTrue("newValue".equals(result));
-        extContext.getSessionMap().remove("Key");
-
-        newInner = new InnerBean();
-        valueBinding = this.create("TestBean.inner");
-        valueBinding.setValue(getFacesContext(), newInner);
-        result = valueBinding.getValue(getFacesContext());
-        assertTrue(result == newInner);
-        assertTrue(oldInner != newInner);
-
-        oldInner = newInner;
-        newInner = new InnerBean();
-        valueBinding = this.create("TestBean[\"inner\"]");
-        valueBinding.setValue(getFacesContext(), newInner);
-        result = valueBinding.getValue(getFacesContext());
-        assertTrue(result == newInner);
-        assertTrue(oldInner != newInner);
-
-        String oldCustomer0 = null, oldCustomer1 = null, customer0 = null, customer1 = null;
-
-        valueBinding = this.create("TestBean[\"inner\"].customers[0]");
-        oldCustomer0 = customer0 = (String) valueBinding
-                .getValue(getFacesContext());
-        valueBinding = this.create("TestBean[\"inner\"].customers[1]");
-        oldCustomer1 = customer1 = (String) valueBinding
-                .getValue(getFacesContext());
-
-        valueBinding = this.create("TestBean[\"inner\"].customers[0]");
-        valueBinding.setValue(getFacesContext(), "Jerry");
-        valueBinding = this.create("TestBean[\"inner\"].customers[1]");
-        valueBinding.setValue(getFacesContext(), "Mickey");
-
-        valueBinding = this.create("TestBean[\"inner\"].customers[0]");
-        customer0 = (String) valueBinding.getValue(getFacesContext());
-        valueBinding = this.create("TestBean[\"inner\"].customers[1]");
-        customer1 = (String) valueBinding.getValue(getFacesContext());
-        assertTrue(customer0.equals("Jerry"));
-        assertTrue(customer1.equals("Mickey"));
-
-        valueBinding = this.create("TestBean[\"inner\"].customers[0]");
-        assertTrue(valueBinding.getValue(getFacesContext()) != oldCustomer0);
-        valueBinding = this.create("TestBean[\"inner\"].customers[1]");
-        assertTrue(valueBinding.getValue(getFacesContext()) != oldCustomer1);
-
-        // put in a map to the customers Collection
-        Inner2Bean inner2 = new Inner2Bean();
-        assertTrue(null == inner2.getNicknames().get("foo"));
-        valueBinding = this.create("TestBean[\"inner\"].customers[2]");
-        valueBinding.setValue(getFacesContext(), inner2);
-        valueBinding = this.create("TestBean[\"inner\"].customers[2]");
-        assertTrue(valueBinding.getValue(getFacesContext()) == inner2);
-
-        valueBinding = this
-                .create("TestBean[\"inner\"].customers[2].nicknames.foo");
-        valueBinding.setValue(getFacesContext(), "bar");
-        assertTrue(((String) inner2.getNicknames().get("foo")).equals("bar"));
+        // migrated to test-agnostic-el.
     }
     
     public void testNullReference() throws Exception
@@ -927,22 +795,6 @@ public class TestValueBindingImpl extends ServletFacesTestCase
         exceptionThrown = false;
         try
         {
-            valueBinding = this.create("[]");
-            valueBinding.getValue(getFacesContext());
-        }
-        catch (PropertyNotFoundException e)
-        {
-            exceptionThrown = true;
-        }
-        catch (EvaluationException ee)
-        {
-            exceptionThrown = true;
-        }
-        assertTrue(exceptionThrown);
-
-        exceptionThrown = false;
-        try
-        {
             valueBinding = this.create("applicationScope}");
             valueBinding.getValue(getFacesContext());
         }
diff --git a/jsf-ri/test/com/sun/faces/el/TestValueBindingImpl_Model.java b/jsf-ri/test/com/sun/faces/el/TestValueBindingImpl_Model.java
index 8a2907c..964f986 100644
--- a/jsf-ri/test/com/sun/faces/el/TestValueBindingImpl_Model.java
+++ b/jsf-ri/test/com/sun/faces/el/TestValueBindingImpl_Model.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -159,45 +163,6 @@ public class TestValueBindingImpl_Model extends ServletFacesTestCase {
         assertTrue(System.getProperty(TestBean.PROP).equals(TestBean.TRUE));
     }
 
-
-    public void testSetNull() throws Exception {
-        FacesContext facesContext = getFacesContext();
-        System.out.println(
-            "Testing setValue() with model bean in session with null rValues");
-        TestBean testBean = new TestBean();
-        InnerBean inner = new InnerBean();
-        Inner2Bean innerInner = new Inner2Bean();
-
-        getFacesContext().getExternalContext().getSessionMap().put("TestBean",
-                                                                   testBean);
-
-        // Test one level of nesting
-        valueBinding = this.create("TestBean.one");
-        valueBinding.setValue(getFacesContext(), null);
-        assertTrue(testBean.getOne() == null);
-
-        System.setProperty(TestBean.PROP, TestBean.FALSE);
-        valueBinding = this.create("sessionScope.TestBean.inner");
-        valueBinding.setValue(getFacesContext(), inner);
-        assertTrue(System.getProperty(TestBean.PROP).equals(TestBean.TRUE));
-
-        valueBinding = this.create("sessionScope.TestBean.inner");
-        valueBinding.setValue(getFacesContext(), null);
-        assertTrue(testBean.getInner() == null);
-
-        // Inner bean does not exist anymore. So this should result in an
-        // exception.
-        boolean exceptionThrown = false;
-        valueBinding = this.create("sessionScope.TestBean.inner.two");
-        try {
-            valueBinding.setValue(getFacesContext(), null);
-        } catch (javax.faces.el.EvaluationException ee) {
-            exceptionThrown = true;
-        }
-        assertTrue(exceptionThrown);
-    }
-
-
     public void testSetWithNoCurlyBraces() throws Exception {
         FacesContext facesContext = getFacesContext();
         System.out.println("Testing setValue() with model bean in request ");
diff --git a/jsf-ri/test/com/sun/faces/el/TestValueExpressionImpl.java b/jsf-ri/test/com/sun/faces/el/TestValueExpressionImpl.java
index 3a217c6..fb832d9 100644
--- a/jsf-ri/test/com/sun/faces/el/TestValueExpressionImpl.java
+++ b/jsf-ri/test/com/sun/faces/el/TestValueExpressionImpl.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -231,167 +235,6 @@ public class TestValueExpressionImpl extends ServletFacesTestCase
     {
         populateRequest(theRequest);
     }
-
-    public void testELSet() throws Exception
-    {
-        TestBean testBean = new TestBean();
-        InnerBean newInner, oldInner = new InnerBean();
-        testBean.setInner(oldInner);
-        ValueExpression valueExpression = null;
-        Object result = null;
-        ExternalContext extContext = getFacesContext().getExternalContext();
-
-        Map myMap = new HashMap();
-        TestBean myBean = new TestBean();
-        myMap.put("myBean", myBean);
-        extContext.getRequestMap().put("myMap", myMap);
-
-        //
-        // Set tests
-        //
-        valueExpression = this.create("myMap.myBean.one");
-        valueExpression.setValue(getFacesContext().getELContext(), "one");
-        Map map = (Map) extContext.getRequestMap().get("myMap");
-        assertTrue("one".equals(((TestBean) map.get("myBean")).getOne()));
-        myBean = new TestBean();
-        map.put("myBean", myBean);
-        extContext.getRequestMap().put("myMap", myMap);
-
-        // test that we can set null as the value
-        valueExpression = this.create("myMap.myBean.prop");
-        valueExpression.setValue(getFacesContext().getELContext(), null);
-        map = (Map) extContext.getRequestMap().get("myMap");
-        assertEquals(null, ((TestBean) map.get("myBean")).getOne());
-        myBean = new TestBean();
-        map.put("myBean", myBean);
-        extContext.getRequestMap().put("myMap", myMap);
-
-        valueExpression = this.create("myMap[\"myBean\"].one");
-        valueExpression.setValue(getFacesContext().getELContext(), "one");
-        map = (Map) extContext.getRequestMap().get("myMap");
-        assertTrue("one".equals(((TestBean) map.get("myBean")).getOne()));
-        myBean = new TestBean();
-        map.put("myBean", myBean);
-        extContext.getRequestMap().put("myMap", myMap);
-
-        // test that we can set the property to null
-        valueExpression = this.create("myMap[\"myBean\"].prop");
-        valueExpression.setValue(getFacesContext().getELContext(), null);
-        map = (Map) extContext.getRequestMap().get("myMap");
-        String msg = "Default Message";
-        if (((TestBean) map.get("myBean")).getProp() != null)
-        {
-            msg = ((TestBean) map.get("myBean")).getProp().getClass().getName();
-        }
-        assertEquals(msg, null, ((TestBean) map.get("myBean")).getProp());
-        myBean = new TestBean();
-        map.put("myBean", myBean);
-        extContext.getRequestMap().put("myMap", myMap);
-
-        valueExpression = this.create("myMap.myBean['one']");
-        valueExpression.setValue(getFacesContext().getELContext(), "one");
-        map = (Map) extContext.getRequestMap().get("myMap");
-        assertTrue("one".equals(((TestBean) map.get("myBean")).getOne()));
-        myBean = new TestBean();
-        map.put("myBean", myBean);
-        extContext.getRequestMap().put("myMap", myMap);
-
-        // set the prop to null
-        valueExpression = this.create("myMap.myBean['prop']");
-        valueExpression.setValue(getFacesContext().getELContext(), null);
-        map = (Map) extContext.getRequestMap().get("myMap");
-        assertEquals(null, ((TestBean) map.get("myBean")).getOne());
-        myBean = new TestBean();
-        map.put("myBean", myBean);
-        extContext.getRequestMap().put("myMap", myMap);
-
-        valueExpression = this.create("NonExist");
-        valueExpression.setValue(getFacesContext().getELContext(), "value");
-        result = extContext.getRequestMap().get("NonExist");
-        assertTrue("value".equals(result));
-        extContext.getRequestMap().remove("NonExist");
-
-        extContext.getSessionMap().put("Key", "oldValue");
-        valueExpression = this.create("Key");
-        valueExpression.setValue(getFacesContext().getELContext(), "newValue");
-        result = extContext.getSessionMap().get("Key");
-        assertTrue("newValue".equals(result));
-        extContext.getSessionMap().remove("Key");
-
-        newInner = new InnerBean();
-        valueExpression = this.create("TestBean.inner");
-        valueExpression.setValue(getFacesContext().getELContext(), newInner);
-        result = valueExpression.getValue(getFacesContext().getELContext());
-        assertTrue(result == newInner);
-        assertTrue(oldInner != newInner);
-
-        oldInner = newInner;
-        newInner = new InnerBean();
-        valueExpression = this.create("TestBean[\"inner\"]");
-        valueExpression.setValue(getFacesContext().getELContext(), newInner);
-        result = valueExpression.getValue(getFacesContext().getELContext());
-        assertTrue(result == newInner);
-        assertTrue(oldInner != newInner);
-
-        String oldCustomer0 = null, oldCustomer1 = null, customer0 = null, customer1 = null;
-
-        valueExpression = this.create("TestBean[\"inner\"].customers[0]");
-        oldCustomer0 = customer0 = (String) valueExpression
-                .getValue(getFacesContext().getELContext());
-        valueExpression = this.create("TestBean[\"inner\"].customers[1]");
-        oldCustomer1 = customer1 = (String) valueExpression
-                .getValue(getFacesContext().getELContext());
-
-        valueExpression = this.create("TestBean[\"inner\"].customers[0]");
-        valueExpression.setValue(getFacesContext().getELContext(), "Jerry");
-        valueExpression = this.create("TestBean[\"inner\"].customers[1]");
-        valueExpression.setValue(getFacesContext().getELContext(), "Mickey");
-
-        valueExpression = this.create("TestBean[\"inner\"].customers[0]");
-        customer0 = (String) valueExpression.getValue(getFacesContext().getELContext());
-        valueExpression = this.create("TestBean[\"inner\"].customers[1]");
-        customer1 = (String) valueExpression.getValue(getFacesContext().getELContext());
-        assertTrue(customer0.equals("Jerry"));
-        assertTrue(customer1.equals("Mickey"));
-
-        valueExpression = this.create("TestBean[\"inner\"].customers[0]");
-        assertTrue(valueExpression.getValue(getFacesContext().getELContext()) != oldCustomer0);
-        valueExpression = this.create("TestBean[\"inner\"].customers[1]");
-        assertTrue(valueExpression.getValue(getFacesContext().getELContext()) != oldCustomer1);
-
-        // put in a map to the customers Collection
-        Inner2Bean inner2 = new Inner2Bean();
-        assertTrue(null == inner2.getNicknames().get("foo"));
-        valueExpression = this.create("TestBean[\"inner\"].customers[2]");
-        valueExpression.setValue(getFacesContext().getELContext(), inner2);
-        valueExpression = this.create("TestBean[\"inner\"].customers[2]");
-        assertTrue(valueExpression.getValue(getFacesContext().getELContext()) == inner2);
-
-        valueExpression = this
-                .create("TestBean[\"inner\"].customers[2].nicknames.foo");
-        valueExpression.setValue(getFacesContext().getELContext(), "bar");
-        assertTrue(((String) inner2.getNicknames().get("foo")).equals("bar"));
-
-        // ensure we can call setValue() successfully if the bean isn't already
-        // in scope at the time of invocation
-        Map<String,Object> sm = getFacesContext().getExternalContext().getSessionMap();
-        sm.remove("mixedBean");
-        valueExpression = this.create("mixedBean.prop");
-        valueExpression.setValue(getFacesContext().getELContext(), "passed");
-        assertTrue("passed".equals(valueExpression.getValue(getFacesContext().getELContext())));
-
-        request.removeAttribute("testBean2");
-        request.removeAttribute("customerBean");
-        valueExpression = this.create("testBean2.customerBean");
-        CustomerBean cb = new CustomerBean();
-        cb.setName("bill");
-        valueExpression.setValue(getFacesContext().getELContext(), cb);
-        testBean = (TestBean) request.getAttribute("testBean2");
-        assertNull(request.getAttribute("customerBean"));
-        assertNotNull(testBean);
-        cb = testBean.getCustomerBean();
-        assertEquals("bill", cb.getName());
-    }
     
     public void testNullReference() throws Exception
     {
@@ -886,141 +729,141 @@ public class TestValueExpressionImpl extends ServletFacesTestCase
     public void testInvalidExpression() throws Exception
     {
 
-        boolean exceptionThrown = false;
-        try
-        {
-            valueExpression = this.create("");
-            valueExpression.getValue(getFacesContext().getELContext());
-        }
-        catch (ELException e)
-        {
-            exceptionThrown = true;
-        }
-        assertTrue(exceptionThrown);
-
-        exceptionThrown = false;
-        try
-        {
-            valueExpression = this.create("!");
-            valueExpression.getValue(getFacesContext().getELContext());
-        }
-        catch (ELException ee)
-        {
-            exceptionThrown = true;
-        }
-        assertTrue(exceptionThrown);
-
-        exceptionThrown = false;
-        try
-        {
-            valueExpression = this.create("..");
-            valueExpression.getValue(getFacesContext().getELContext());
-        }
-        catch (PropertyNotFoundException e)
-        {
-            exceptionThrown = true;
-        }
-        catch (ELException ee)
-        {
-            exceptionThrown = true;
-        }
-        assertTrue(exceptionThrown);
-
-        exceptionThrown = false;
-        try
-        {
-            valueExpression = this.create(".foo");
-            valueExpression.getValue(getFacesContext().getELContext());
-        }
-        catch (PropertyNotFoundException e)
-        {
-            exceptionThrown = true;
-        }
-        catch (ELException ee)
-        {
-            exceptionThrown = true;
-        }
-        assertTrue(exceptionThrown);
-
-        exceptionThrown = false;
-        try
-        {
-            valueExpression = this.create("()");
-            valueExpression.getValue(getFacesContext().getELContext());
-        }
-        catch (PropertyNotFoundException e)
-        {
-            exceptionThrown = true;
-        }
-        catch (ELException ee)
-        {
-            exceptionThrown = true;
-        }
-        assertTrue(exceptionThrown);
-
-        exceptionThrown = false;
-        try
-        {
-            valueExpression = this.create("[]");
-            valueExpression.getValue(getFacesContext().getELContext());
-        }
-        catch (PropertyNotFoundException e)
-        {
-            exceptionThrown = true;
-        }
-        catch (ELException ee)
-        {
-            exceptionThrown = true;
-        }
-        assertTrue(exceptionThrown);
-
-        exceptionThrown = false;
-        try
-        {
-            valueExpression = this.create("applicationScope}");
-            valueExpression.getValue(getFacesContext().getELContext());
-        }
-        catch (PropertyNotFoundException e)
-        {
-            exceptionThrown = true;
-        }
-        catch (ELException ee)
-        {
-            exceptionThrown = true;
-        }
-        assertTrue(!exceptionThrown);
-
-        exceptionThrown = false;
-        try
-        {
-            valueExpression = this.create("applicationScope >= sessionScope");
-            valueExpression.getValue(getFacesContext().getELContext());
-        }
-        catch (PropertyNotFoundException e)
-        {
-            exceptionThrown = true;
-        }
-        catch (ELException ee)
-        {
-            exceptionThrown = true;
-        }
-        assertTrue(exceptionThrown);
-
-        exceptionThrown = false;
-        try
-        {
-            valueExpression = this.create("foo applicationScope");
-            valueExpression.getValue(getFacesContext().getELContext());
-        }
-        catch (PropertyNotFoundException e)
-        {
-            exceptionThrown = true;
-        }
-        catch (ELException ee)
-        {
-            exceptionThrown = true;
-        }
-        assertTrue(exceptionThrown);
+//        boolean exceptionThrown = false;
+//        try
+//        {
+//            valueExpression = this.create("");
+//            valueExpression.getValue(getFacesContext().getELContext());
+//        }
+//        catch (ELException e)
+//        {
+//            exceptionThrown = true;
+//        }
+//        assertTrue(exceptionThrown);
+//
+//        exceptionThrown = false;
+//        try
+//        {
+//            valueExpression = this.create("!");
+//            valueExpression.getValue(getFacesContext().getELContext());
+//        }
+//        catch (ELException ee)
+//        {
+//            exceptionThrown = true;
+//        }
+//        assertTrue(exceptionThrown);
+//
+//        exceptionThrown = false;
+//        try
+//        {
+//            valueExpression = this.create("..");
+//            valueExpression.getValue(getFacesContext().getELContext());
+//        }
+//        catch (PropertyNotFoundException e)
+//        {
+//            exceptionThrown = true;
+//        }
+//        catch (ELException ee)
+//        {
+//            exceptionThrown = true;
+//        }
+//        assertTrue(exceptionThrown);
+//
+//        exceptionThrown = false;
+//        try
+//        {
+//            valueExpression = this.create(".foo");
+//            valueExpression.getValue(getFacesContext().getELContext());
+//        }
+//        catch (PropertyNotFoundException e)
+//        {
+//            exceptionThrown = true;
+//        }
+//        catch (ELException ee)
+//        {
+//            exceptionThrown = true;
+//        }
+//        assertTrue(exceptionThrown);
+//
+//        exceptionThrown = false;
+//        try
+//        {
+//            valueExpression = this.create("()");
+//            valueExpression.getValue(getFacesContext().getELContext());
+//        }
+//        catch (PropertyNotFoundException e)
+//        {
+//            exceptionThrown = true;
+//        }
+//        catch (ELException ee)
+//        {
+//            exceptionThrown = true;
+//        }
+//        assertTrue(exceptionThrown);
+//
+//        exceptionThrown = false;
+//        try
+//        {
+//            valueExpression = this.create("[]");
+//            valueExpression.getValue(getFacesContext().getELContext());
+//        }
+//        catch (PropertyNotFoundException e)
+//        {
+//            exceptionThrown = true;
+//        }
+//        catch (ELException ee)
+//        {
+//            exceptionThrown = true;
+//        }
+//        assertTrue(exceptionThrown);
+//
+//        exceptionThrown = false;
+//        try
+//        {
+//            valueExpression = this.create("applicationScope}");
+//            valueExpression.getValue(getFacesContext().getELContext());
+//        }
+//        catch (PropertyNotFoundException e)
+//        {
+//            exceptionThrown = true;
+//        }
+//        catch (ELException ee)
+//        {
+//            exceptionThrown = true;
+//        }
+//        assertTrue(!exceptionThrown);
+//
+//        exceptionThrown = false;
+//        try
+//        {
+//            valueExpression = this.create("applicationScope >= sessionScope");
+//            valueExpression.getValue(getFacesContext().getELContext());
+//        }
+//        catch (PropertyNotFoundException e)
+//        {
+//            exceptionThrown = true;
+//        }
+//        catch (ELException ee)
+//        {
+//            exceptionThrown = true;
+//        }
+//        assertTrue(exceptionThrown);
+//
+//        exceptionThrown = false;
+//        try
+//        {
+//            valueExpression = this.create("foo applicationScope");
+//            valueExpression.getValue(getFacesContext().getELContext());
+//        }
+//        catch (PropertyNotFoundException e)
+//        {
+//            exceptionThrown = true;
+//        }
+//        catch (ELException ee)
+//        {
+//            exceptionThrown = true;
+//        }
+//        assertTrue(exceptionThrown);
 
     }
 
diff --git a/jsf-ri/test/com/sun/faces/el/TestValueExpressionImpl_Model.java b/jsf-ri/test/com/sun/faces/el/TestValueExpressionImpl_Model.java
index 17bc1cd..d482f7d 100644
--- a/jsf-ri/test/com/sun/faces/el/TestValueExpressionImpl_Model.java
+++ b/jsf-ri/test/com/sun/faces/el/TestValueExpressionImpl_Model.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -161,46 +165,6 @@ public class TestValueExpressionImpl_Model extends ServletFacesTestCase {
         assertTrue(System.getProperty(TestBean.PROP).equals(TestBean.TRUE));
     }
 
-
-    public void testSetNull() throws Exception {
-        FacesContext facesContext = getFacesContext();
-        System.out.println(
-            "Testing setValue() with model bean in session with null rValues");
-        TestBean testBean = new TestBean();
-        InnerBean inner = new InnerBean();
-        Inner2Bean innerInner = new Inner2Bean();
-
-        getFacesContext().getExternalContext().getSessionMap().put("TestBean",
-                                                                   testBean);
-
-        // Test one level of nesting
-        valueExpression = this.create("TestBean.one");
-        valueExpression.setValue(getFacesContext().getELContext(), null);
-        assertTrue(testBean.getOne() == null);
-
-        System.setProperty(TestBean.PROP, TestBean.FALSE);
-        valueExpression = this.create("sessionScope.TestBean.inner");
-        valueExpression.setValue(getFacesContext().getELContext(), inner);
-        assertTrue(System.getProperty(TestBean.PROP).equals(TestBean.TRUE));
-
-        valueExpression = this.create("sessionScope.TestBean.inner");
-        valueExpression.setValue(getFacesContext().getELContext(), null);
-        assertTrue(testBean.getInner() == null);
-
-        // Inner bean does not exist anymore. So this should result in an
-        // exception.  Should throw a PropertyNotFoundException according
-        // to page 92 of the EL Spec
-        boolean exceptionThrown = false;
-        valueExpression = this.create("sessionScope.TestBean.inner.two");
-        try {
-            valueExpression.setValue(getFacesContext().getELContext(), null);
-        } catch (javax.el.PropertyNotFoundException ee) {
-            exceptionThrown = true;
-        }
-        assertTrue(exceptionThrown);
-    }
-
-
     public void testSetWithNoCurlyBraces() throws Exception {
         FacesContext facesContext = getFacesContext();
         System.out.println("Testing setValue() with model bean in request ");
diff --git a/jsf-ri/test/com/sun/faces/el/TestVariableResolverImpl.java b/jsf-ri/test/com/sun/faces/el/TestVariableResolverImpl.java
index aad601d..24b855c 100644
--- a/jsf-ri/test/com/sun/faces/el/TestVariableResolverImpl.java
+++ b/jsf-ri/test/com/sun/faces/el/TestVariableResolverImpl.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/test/com/sun/faces/el/impl/Bean1.java b/jsf-ri/test/com/sun/faces/el/impl/Bean1.java
index 9a45199..710f6ed 100644
--- a/jsf-ri/test/com/sun/faces/el/impl/Bean1.java
+++ b/jsf-ri/test/com/sun/faces/el/impl/Bean1.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -52,7 +56,6 @@
  * limitations under the License.
  */
 
-
 package com.sun.faces.el.impl;
 
 import java.util.List;
diff --git a/jsf-ri/test/com/sun/faces/el/impl/Bean2.java b/jsf-ri/test/com/sun/faces/el/impl/Bean2.java
index 1d86510..4029595 100644
--- a/jsf-ri/test/com/sun/faces/el/impl/Bean2.java
+++ b/jsf-ri/test/com/sun/faces/el/impl/Bean2.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -52,7 +56,6 @@
  * limitations under the License.
  */
 
-
 package com.sun.faces.el.impl;
 
 /**
diff --git a/jsf-ri/test/com/sun/faces/el/impl/Bean2Editor.java b/jsf-ri/test/com/sun/faces/el/impl/Bean2Editor.java
index 59ed83d..5a4c05e 100644
--- a/jsf-ri/test/com/sun/faces/el/impl/Bean2Editor.java
+++ b/jsf-ri/test/com/sun/faces/el/impl/Bean2Editor.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -52,7 +56,6 @@
  * limitations under the License.
  */
 
-
 package com.sun.faces.el.impl;
 
 import java.beans.PropertyEditorSupport;
diff --git a/jsf-ri/test/com/sun/faces/el/impl/TestELImpl.java b/jsf-ri/test/com/sun/faces/el/impl/TestELImpl.java
index f365622..9dc597d 100644
--- a/jsf-ri/test/com/sun/faces/el/impl/TestELImpl.java
+++ b/jsf-ri/test/com/sun/faces/el/impl/TestELImpl.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -32,7 +36,7 @@
  * and therefore, elected the GPL Version 2 license, then the option applies
  * only if the new code is made subject to such option by the copyright
  * holder.
- * 
+ *
  *
  * This file incorporates work covered by the following copyright and
  * permission notice:
@@ -52,7 +56,6 @@
  * limitations under the License.
  */
 
-
 package com.sun.faces.el.impl;
 
 import java.util.ArrayList;
diff --git a/jsf-ri/test/com/sun/faces/el/impl/TestUnifiedELImpl.java b/jsf-ri/test/com/sun/faces/el/impl/TestUnifiedELImpl.java
index 8aed501..cca8303 100644
--- a/jsf-ri/test/com/sun/faces/el/impl/TestUnifiedELImpl.java
+++ b/jsf-ri/test/com/sun/faces/el/impl/TestUnifiedELImpl.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -33,7 +37,7 @@
  * only if the new code is made subject to such option by the copyright
  * holder.
  *
- * 
+ *
  * This file incorporates work covered by the following copyright and
  * permission notice:
  *
@@ -52,7 +56,6 @@
  * limitations under the License.
  */
 
-
 package com.sun.faces.el.impl;
 
 import java.util.ArrayList;
@@ -714,4 +717,4 @@ public class TestUnifiedELImpl extends ServletFacesTestCase
             assertEquals(msg, expectedValue, returnedValue);
         }
     }
-}
\ No newline at end of file
+}
diff --git a/jsf-ri/test/com/sun/faces/el/impl/beans/Factory.java b/jsf-ri/test/com/sun/faces/el/impl/beans/Factory.java
index 978e141..85d8c23 100644
--- a/jsf-ri/test/com/sun/faces/el/impl/beans/Factory.java
+++ b/jsf-ri/test/com/sun/faces/el/impl/beans/Factory.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -33,7 +37,7 @@
  * only if the new code is made subject to such option by the copyright
  * holder.
  *
- * 
+ *
  * This file incorporates work covered by the following copyright and
  * permission notice:
  *
@@ -52,7 +56,6 @@
  * limitations under the License.
  */
 
-
 package com.sun.faces.el.impl.beans;
 
 /**
diff --git a/jsf-ri/test/com/sun/faces/el/impl/beans/PrivateBean1a.java b/jsf-ri/test/com/sun/faces/el/impl/beans/PrivateBean1a.java
index 968105f..c10ad31 100644
--- a/jsf-ri/test/com/sun/faces/el/impl/beans/PrivateBean1a.java
+++ b/jsf-ri/test/com/sun/faces/el/impl/beans/PrivateBean1a.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -33,7 +37,7 @@
  * only if the new code is made subject to such option by the copyright
  * holder.
  *
- * 
+ *
  * This file incorporates work covered by the following copyright and
  * permission notice:
  *
@@ -52,7 +56,6 @@
  * limitations under the License.
  */
 
-
 package com.sun.faces.el.impl.beans;
 
 /**
diff --git a/jsf-ri/test/com/sun/faces/el/impl/beans/PrivateBean2b.java b/jsf-ri/test/com/sun/faces/el/impl/beans/PrivateBean2b.java
index d1a03d3..d9efdf8 100644
--- a/jsf-ri/test/com/sun/faces/el/impl/beans/PrivateBean2b.java
+++ b/jsf-ri/test/com/sun/faces/el/impl/beans/PrivateBean2b.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -52,7 +56,6 @@
  * limitations under the License.
  */
 
-
 package com.sun.faces.el.impl.beans;
 
 /**
diff --git a/jsf-ri/test/com/sun/faces/el/impl/beans/PrivateBean2c.java b/jsf-ri/test/com/sun/faces/el/impl/beans/PrivateBean2c.java
index a074c51..a5178f3 100644
--- a/jsf-ri/test/com/sun/faces/el/impl/beans/PrivateBean2c.java
+++ b/jsf-ri/test/com/sun/faces/el/impl/beans/PrivateBean2c.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -33,7 +37,7 @@
  * only if the new code is made subject to such option by the copyright
  * holder.
  *
- * 
+ *
  * This file incorporates work covered by the following copyright and
  * permission notice:
  *
diff --git a/jsf-ri/test/com/sun/faces/el/impl/beans/PrivateBean2d.java b/jsf-ri/test/com/sun/faces/el/impl/beans/PrivateBean2d.java
index 20d58f1..01d8ec4 100644
--- a/jsf-ri/test/com/sun/faces/el/impl/beans/PrivateBean2d.java
+++ b/jsf-ri/test/com/sun/faces/el/impl/beans/PrivateBean2d.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -52,7 +56,6 @@
  * limitations under the License.
  */
 
-
 package com.sun.faces.el.impl.beans;
 
 /**
diff --git a/jsf-ri/test/com/sun/faces/el/impl/beans/PublicBean1.java b/jsf-ri/test/com/sun/faces/el/impl/beans/PublicBean1.java
index c213adc..70302a7 100644
--- a/jsf-ri/test/com/sun/faces/el/impl/beans/PublicBean1.java
+++ b/jsf-ri/test/com/sun/faces/el/impl/beans/PublicBean1.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -52,7 +56,6 @@
  * limitations under the License.
  */
 
-
 package com.sun.faces.el.impl.beans;
 
 /**
diff --git a/jsf-ri/test/com/sun/faces/el/impl/beans/PublicBean1b.java b/jsf-ri/test/com/sun/faces/el/impl/beans/PublicBean1b.java
index d44ecca..0d69f9b 100644
--- a/jsf-ri/test/com/sun/faces/el/impl/beans/PublicBean1b.java
+++ b/jsf-ri/test/com/sun/faces/el/impl/beans/PublicBean1b.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -52,7 +56,6 @@
  * limitations under the License.
  */
 
-
 package com.sun.faces.el.impl.beans;
 
 /**
diff --git a/jsf-ri/test/com/sun/faces/el/impl/beans/PublicBean2a.java b/jsf-ri/test/com/sun/faces/el/impl/beans/PublicBean2a.java
index e96b74e..4d64352 100644
--- a/jsf-ri/test/com/sun/faces/el/impl/beans/PublicBean2a.java
+++ b/jsf-ri/test/com/sun/faces/el/impl/beans/PublicBean2a.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -52,7 +56,6 @@
  * limitations under the License.
  */
 
-
 package com.sun.faces.el.impl.beans;
 
 /**
diff --git a/jsf-ri/test/com/sun/faces/el/impl/beans/PublicInterface2.java b/jsf-ri/test/com/sun/faces/el/impl/beans/PublicInterface2.java
index c5f42a6..1335f6a 100644
--- a/jsf-ri/test/com/sun/faces/el/impl/beans/PublicInterface2.java
+++ b/jsf-ri/test/com/sun/faces/el/impl/beans/PublicInterface2.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -52,7 +56,6 @@
  * limitations under the License.
  */
 
-
 package com.sun.faces.el.impl.beans;
 
 /**
diff --git a/jsf-ri/test/com/sun/faces/io/TestIO.java b/jsf-ri/test/com/sun/faces/io/TestIO.java
index 2ffa8c1..43d8732 100644
--- a/jsf-ri/test/com/sun/faces/io/TestIO.java
+++ b/jsf-ri/test/com/sun/faces/io/TestIO.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -181,4 +185,4 @@ public class TestIO extends ServletFacesTestCase {
 
     }
 
-} // END TestIO
\ No newline at end of file
+} // END TestIO
diff --git a/jsf-ri/test/com/sun/faces/lifecycle/TestApplyRequestValuesPhase.java b/jsf-ri/test/com/sun/faces/lifecycle/TestApplyRequestValuesPhase.java
index ae06a63..517ba67 100644
--- a/jsf-ri/test/com/sun/faces/lifecycle/TestApplyRequestValuesPhase.java
+++ b/jsf-ri/test/com/sun/faces/lifecycle/TestApplyRequestValuesPhase.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -81,13 +85,27 @@ public class TestApplyRequestValuesPhase extends ServletFacesTestCase {
 
     public TestApplyRequestValuesPhase() {
         super("TestApplyRequestValuesPhase");
+	initLocalHostPath();
     }
 
 
     public TestApplyRequestValuesPhase(String name) {
         super(name);
+	initLocalHostPath();
     }
 
+    private String localHostPath = "localhost:8080";
+
+    private void initLocalHostPath() {
+	String containerPort = System.getProperty("container.port");
+	if (null == containerPort || 0 == containerPort.length()) {
+	    containerPort = "8080";
+	}
+	localHostPath = "localhost:" + containerPort;
+    }
+
+
+
 //
 // Class methods
 //
@@ -97,7 +115,7 @@ public class TestApplyRequestValuesPhase extends ServletFacesTestCase {
 //
 
     public void beginCallback(WebRequest theRequest) {
-        theRequest.setURL("localhost:8080", null, null, TEST_URI, null);
+        theRequest.setURL(localHostPath, null, null, TEST_URI, null);
         theRequest.addParameter(
             "basicForm" + NamingContainer.SEPARATOR_CHAR + "userName", "jerry");
          theRequest.addParameter(
diff --git a/jsf-ri/test/com/sun/faces/lifecycle/TestInvokeApplicationPhase.java b/jsf-ri/test/com/sun/faces/lifecycle/TestInvokeApplicationPhase.java
index 6c879ba..89b347c 100644
--- a/jsf-ri/test/com/sun/faces/lifecycle/TestInvokeApplicationPhase.java
+++ b/jsf-ri/test/com/sun/faces/lifecycle/TestInvokeApplicationPhase.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/test/com/sun/faces/lifecycle/TestLifecycleFactoryImpl.java b/jsf-ri/test/com/sun/faces/lifecycle/TestLifecycleFactoryImpl.java
index 1f0e968..310a580 100644
--- a/jsf-ri/test/com/sun/faces/lifecycle/TestLifecycleFactoryImpl.java
+++ b/jsf-ri/test/com/sun/faces/lifecycle/TestLifecycleFactoryImpl.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/test/com/sun/faces/lifecycle/TestLifecycleImpl.java b/jsf-ri/test/com/sun/faces/lifecycle/TestLifecycleImpl.java
index 59719d1..85c4c69 100644
--- a/jsf-ri/test/com/sun/faces/lifecycle/TestLifecycleImpl.java
+++ b/jsf-ri/test/com/sun/faces/lifecycle/TestLifecycleImpl.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -93,11 +97,23 @@ public class TestLifecycleImpl extends JspFacesTestCase {
 
     public TestLifecycleImpl() {
         super("TestLifecycleImpl");
+	initLocalHostPath();
     }
 
 
     public TestLifecycleImpl(String name) {
         super(name);
+	initLocalHostPath();
+    }
+
+    private String localHostPath = "localhost:8080";
+
+    private void initLocalHostPath() {
+	String containerPort = System.getProperty("container.port");
+	if (null == containerPort || 0 == containerPort.length()) {
+	    containerPort = "8080";
+	}
+	localHostPath = "localhost:" + containerPort;
     }
 
 //
@@ -122,365 +138,365 @@ public class TestLifecycleImpl extends JspFacesTestCase {
 
 
     protected void initWebRequest(WebRequest theRequest) {
-        theRequest.setURL("localhost:8080", "/test", "/faces", TEST_URI, null);
-	theRequest.addParameter("javax.faces.ViewState",
-				"H4sIAAAAAAAAAFvzloG1hIElPjPFsAAAhLx/NgwAAAA=");
+//        theRequest.setURL(localHostPath, "/test", "/faces", TEST_URI, null);
+//	theRequest.addParameter("javax.faces.ViewState",
+//				"H4sIAAAAAAAAAFvzloG1hIElPjPFsAAAhLx/NgwAAAA=");
     }
 
 
     public void setUp() {
         super.setUp();
-	FacesContext context = getFacesContext();
-        UIViewRoot root = Util.getViewHandler(context).createView(context, null);
-        root.setLocale(Locale.US);
-        root.setViewId(TEST_URI);
-	context.setViewRoot(root);
-	
-
-        UIForm basicForm = new UIForm();
-        basicForm.setId("basicForm");
-        UIInput userName = new UIInput();
-
-        userName.setId("userName");
-        root.getChildren().add(basicForm);
-        basicForm.getChildren().add(userName);
-
-	// here we do what the StateManager does to save the state in
-	// the server.
-	Util.getStateManager(context).saveSerializedView(context);
+//	FacesContext context = getFacesContext();
+//        UIViewRoot root = Util.getViewHandler(context).createView(context, null);
+//        root.setLocale(Locale.US);
+//        root.setViewId(TEST_URI);
+//	context.setViewRoot(root);
+//	
+//
+//        UIForm basicForm = new UIForm();
+//        basicForm.setId("basicForm");
+//        UIInput userName = new UIInput();
+//
+//        userName.setId("userName");
+//        root.getChildren().add(basicForm);
+//        basicForm.getChildren().add(userName);
+//
+//	// here we do what the StateManager does to save the state in
+//	// the server.
+//	Util.getStateManager(context).saveSerializedView(context);
 
     }
 
 
     public void beginAnyPhaseWithListenerAndValidationFailure(WebRequest theRequest) {
-        initWebRequest(theRequest);
+//        initWebRequest(theRequest);
     }
 
 
     public void testAnyPhaseWithListenerAndValidationFailure() {
-        LifecycleImpl life = getSharedLifecycleImpl();
-        final int[] phaseCalled = new
-            int[PhaseId.RENDER_RESPONSE.getOrdinal() + 1];
-        int i;
-        for (i = 1; i < phaseCalled.length; i++) {
-            phaseCalled[i] = 0;
-        }
-
-        sharedListener = new PhaseListenerImpl(phaseCalled, PhaseId.ANY_PHASE,
-                                               PhaseId.PROCESS_VALIDATIONS);
-        life.addPhaseListener(sharedListener);
-
-        try {
-            life.execute(getFacesContext());
-            life.render(getFacesContext());
-        } catch (Throwable e) {
-            e.printStackTrace();
-            assertTrue(e.getMessage(), false);
-        }
-
-        for (i = 1; i < phaseCalled.length; i++) {
-            // i is restore_view, apply_request, process_val, or render_resp
-            if (((1 <= i) && (i <= 3)) || (i == 6)) {
-                assertTrue(
-                    "Expected 2 for phase " + i + ", got " + phaseCalled[i] +
-                    ".",
-
-                    phaseCalled[i] == 2);
-            } else {
-                assertTrue("For phase: " + PhaseId.VALUES.get(i) +
-                           " expected no calls, got " + phaseCalled[i] + ".",
-                           phaseCalled[i] == 0);
-            }
-        }
+//        LifecycleImpl life = getSharedLifecycleImpl();
+//        final int[] phaseCalled = new
+//            int[PhaseId.RENDER_RESPONSE.getOrdinal() + 1];
+//        int i;
+//        for (i = 1; i < phaseCalled.length; i++) {
+//            phaseCalled[i] = 0;
+//        }
+//
+//        sharedListener = new PhaseListenerImpl(phaseCalled, PhaseId.ANY_PHASE,
+//                                               PhaseId.PROCESS_VALIDATIONS);
+//        life.addPhaseListener(sharedListener);
+//
+//        try {
+//            life.execute(getFacesContext());
+//            life.render(getFacesContext());
+//        } catch (Throwable e) {
+//            e.printStackTrace();
+//            assertTrue(e.getMessage(), false);
+//        }
+//
+//        for (i = 1; i < phaseCalled.length; i++) {
+//            // i is restore_view, apply_request, process_val, or render_resp
+//            if (((1 <= i) && (i <= 3)) || (i == 6)) {
+//                assertTrue(
+//                    "Expected 2 for phase " + i + ", got " + phaseCalled[i] +
+//                    ".",
+//
+//                    phaseCalled[i] == 2);
+//            } else {
+//                assertTrue("For phase: " + PhaseId.VALUES.get(i) +
+//                           " expected no calls, got " + phaseCalled[i] + ".",
+//                           phaseCalled[i] == 0);
+//            }
+//        }
     }
 
 
     public void beginAnyPhaseWithListener(WebRequest theRequest) {
-        initWebRequest(theRequest);
+//        initWebRequest(theRequest);
     }
 
 
     public void testAnyPhaseWithListener() {
-        LifecycleImpl life = getSharedLifecycleImpl();
-        final int[] phaseCalled = new
-            int[PhaseId.RENDER_RESPONSE.getOrdinal() + 1];
-        int i;
-        for (i = 1; i < phaseCalled.length; i++) {
-            phaseCalled[i] = 0;
-        }
-
-        life.removePhaseListener(sharedListener);
-        sharedListener = new PhaseListenerImpl(phaseCalled, PhaseId.ANY_PHASE,
-                                               null);
-        life.addPhaseListener(sharedListener);
-
-        try {
-            life.execute(getFacesContext());
-            life.render(getFacesContext());
-        } catch (Throwable e) {
-            e.printStackTrace();
-            assertTrue(e.getMessage(), false);
-        }
-
-        for (i = 1; i < phaseCalled.length; i++) {
-            assertTrue(phaseCalled[i] == 2);
-        }
+//        LifecycleImpl life = getSharedLifecycleImpl();
+//        final int[] phaseCalled = new
+//            int[PhaseId.RENDER_RESPONSE.getOrdinal() + 1];
+//        int i;
+//        for (i = 1; i < phaseCalled.length; i++) {
+//            phaseCalled[i] = 0;
+//        }
+//
+//        life.removePhaseListener(sharedListener);
+//        sharedListener = new PhaseListenerImpl(phaseCalled, PhaseId.ANY_PHASE,
+//                                               null);
+//        life.addPhaseListener(sharedListener);
+//
+//        try {
+//            life.execute(getFacesContext());
+//            life.render(getFacesContext());
+//        } catch (Throwable e) {
+//            e.printStackTrace();
+//            assertTrue(e.getMessage(), false);
+//        }
+//
+//        for (i = 1; i < phaseCalled.length; i++) {
+//            assertTrue(phaseCalled[i] == 2);
+//        }
     }
 
 
     public void beginAnyPhaseWithoutListener(WebRequest theRequest) {
-        initWebRequest(theRequest);
+//        initWebRequest(theRequest);
     }
 
 
     public void testAnyPhaseWithoutListener() {
-        assertTrue(null != sharedListener);
-
-        LifecycleImpl life = getSharedLifecycleImpl();
-        final int[] phaseCalled = sharedListener.getPhaseCalled();
-        int i;
-
-        life.removePhaseListener(sharedListener);
-
-        try {
-            life.execute(getFacesContext());
-            life.render(getFacesContext());
-        } catch (Throwable e) {
-            e.printStackTrace();
-            assertTrue(e.getMessage(), false);
-        }
-
-        // make sure the listener wasn't called
-        for (i = 1; i < phaseCalled.length; i++) {
-            assertTrue(phaseCalled[i] == 2);
-        }
+//        assertTrue(null != sharedListener);
+//
+//        LifecycleImpl life = getSharedLifecycleImpl();
+//        final int[] phaseCalled = sharedListener.getPhaseCalled();
+//        int i;
+//
+//        life.removePhaseListener(sharedListener);
+//
+//        try {
+//            life.execute(getFacesContext());
+//            life.render(getFacesContext());
+//        } catch (Throwable e) {
+//            e.printStackTrace();
+//            assertTrue(e.getMessage(), false);
+//        }
+//
+//        // make sure the listener wasn't called
+//        for (i = 1; i < phaseCalled.length; i++) {
+//            assertTrue(phaseCalled[i] == 2);
+//        }
 
     }
 
 
     public void beginValidateWithListener(WebRequest theRequest) {
-        initWebRequest(theRequest);
+//        initWebRequest(theRequest);
     }
 
 
     public void testValidateWithListener() {
-        LifecycleImpl life = getSharedLifecycleImpl();
-        final int[] phaseCalled = new
-            int[PhaseId.RENDER_RESPONSE.getOrdinal() + 1];
-        int i;
-        for (i = 1; i < phaseCalled.length; i++) {
-            phaseCalled[i] = 0;
-        }
-
-        sharedListener = new PhaseListenerImpl(phaseCalled,
-                                               PhaseId.PROCESS_VALIDATIONS,
-                                               null);
-        life.addPhaseListener(sharedListener);
-
-        try {
-            life.execute(getFacesContext());
-            life.render(getFacesContext());
-        } catch (Throwable e) {
-            e.printStackTrace();
-            assertTrue(e.getMessage(), false);
-        }
-
-        for (i = 1; i < phaseCalled.length; i++) {
-            if (PhaseId.PROCESS_VALIDATIONS.getOrdinal() == i) {
-                assertTrue(phaseCalled[i] == 2);
-            } else {
-                assertTrue(phaseCalled[i] == 0);
-            }
-        }
+//        LifecycleImpl life = getSharedLifecycleImpl();
+//        final int[] phaseCalled = new
+//            int[PhaseId.RENDER_RESPONSE.getOrdinal() + 1];
+//        int i;
+//        for (i = 1; i < phaseCalled.length; i++) {
+//            phaseCalled[i] = 0;
+//        }
+//
+//        sharedListener = new PhaseListenerImpl(phaseCalled,
+//                                               PhaseId.PROCESS_VALIDATIONS,
+//                                               null);
+//        life.addPhaseListener(sharedListener);
+//
+//        try {
+//            life.execute(getFacesContext());
+//            life.render(getFacesContext());
+//        } catch (Throwable e) {
+//            e.printStackTrace();
+//            assertTrue(e.getMessage(), false);
+//        }
+//
+//        for (i = 1; i < phaseCalled.length; i++) {
+//            if (PhaseId.PROCESS_VALIDATIONS.getOrdinal() == i) {
+//                assertTrue(phaseCalled[i] == 2);
+//            } else {
+//                assertTrue(phaseCalled[i] == 0);
+//            }
+//        }
     }
 
 
     public void beginValidateWithoutListener(WebRequest theRequest) {
-        initWebRequest(theRequest);
+//        initWebRequest(theRequest);
     }
 
 
     public void testValidateWithoutListener() {
-        assertTrue(null != sharedListener);
-
-        LifecycleImpl life = getSharedLifecycleImpl();
-        final int[] phaseCalled = sharedListener.getPhaseCalled();
-        int i;
-
-        life.removePhaseListener(sharedListener);
-
-        try {
-            life.execute(getFacesContext());
-            life.render(getFacesContext());
-        } catch (Throwable e) {
-            e.printStackTrace();
-            assertTrue(e.getMessage(), false);
-        }
-
-        // make sure the listener wasn't called
-        for (i = 1; i < phaseCalled.length; i++) {
-            if (PhaseId.PROCESS_VALIDATIONS.getOrdinal() == i) {
-                assertTrue(phaseCalled[i] == 2);
-            } else {
-                assertTrue(phaseCalled[i] == 0);
-            }
-        }
+//        assertTrue(null != sharedListener);
+//
+//        LifecycleImpl life = getSharedLifecycleImpl();
+//        final int[] phaseCalled = sharedListener.getPhaseCalled();
+//        int i;
+//
+//        life.removePhaseListener(sharedListener);
+//
+//        try {
+//            life.execute(getFacesContext());
+//            life.render(getFacesContext());
+//        } catch (Throwable e) {
+//            e.printStackTrace();
+//            assertTrue(e.getMessage(), false);
+//        }
+//
+//        // make sure the listener wasn't called
+//        for (i = 1; i < phaseCalled.length; i++) {
+//            if (PhaseId.PROCESS_VALIDATIONS.getOrdinal() == i) {
+//                assertTrue(phaseCalled[i] == 2);
+//            } else {
+//                assertTrue(phaseCalled[i] == 0);
+//            }
+//        }
 
     }
 
     public void beginBeforeListenerExceptionJsf12(WebRequest theRequest) {
-        initWebRequest(theRequest);
+//        initWebRequest(theRequest);
     }
 
     public void testBeforeListenerExceptionJsf12() {
-        ExceptionHandlerFactory f = new PreJsf2ExceptionHandlerFactory();
-        testBeforeListenerException(f.getExceptionHandler(), false);
+//        ExceptionHandlerFactory f = new PreJsf2ExceptionHandlerFactory();
+//        testBeforeListenerException(f.getExceptionHandler(), false);
     }
 
     public void beginBeforeListenerExceptionJsf20(WebRequest theRequest) {
-        initWebRequest(theRequest);
+//        initWebRequest(theRequest);
     }
 
     public void testBeforeListenerExceptionJsf20() {
-        testBeforeListenerException(new ExceptionHandlerImpl(), true);
+//        testBeforeListenerException(new ExceptionHandlerImpl(), true);
     }
 
 
     public void testBeforeListenerException(ExceptionHandler handler, boolean expectException) {
-        assertTrue(null != sharedListener);
-        getFacesContext().setExceptionHandler(handler);
-        LifecycleImpl life = getSharedLifecycleImpl();
-        int[] phaseCalledA = new int[PhaseId.RENDER_RESPONSE.getOrdinal() + 1];
-        int[] phaseCalledB = new int[PhaseId.RENDER_RESPONSE.getOrdinal() + 1];
-        int[] phaseCalledC = new int[PhaseId.RENDER_RESPONSE.getOrdinal() + 1];
-        int i;
-        for (i = 1; i < phaseCalledA.length; i++) {
-            phaseCalledA[i] = 0;
-            phaseCalledB[i] = 0;
-            phaseCalledC[i] = 0;
-        }
-
-
-        life.removePhaseListener(sharedListener);
-
-        PhaseListenerImpl
-              a = new PhaseListenerImpl(phaseCalledA,
-                                        PhaseId.APPLY_REQUEST_VALUES,
-                                        PhaseId.PROCESS_VALIDATIONS),
-              b = new PhaseListenerImpl(phaseCalledB,
-                                        PhaseId.APPLY_REQUEST_VALUES,
-                                        PhaseId.PROCESS_VALIDATIONS),
-              c = new PhaseListenerImpl(phaseCalledC,
-                                        PhaseId.APPLY_REQUEST_VALUES,
-                                        PhaseId.PROCESS_VALIDATIONS);
-        b.setThrowExceptionOnBefore(true);
-        life.addPhaseListener(a);
-        life.addPhaseListener(b);
-        life.addPhaseListener(c);
-
-        try {
-            life.execute(getFacesContext());
-            life.render(getFacesContext());
-            if (expectException) {
-                assertTrue(false);
-            }
-        } catch (Throwable e) {
-            if (!expectException) {
-                assertTrue(false);
-                e.printStackTrace();
-            }
-        }
-
-        // verify before and after for "a" were called.
-        assertEquals(2,
-                     phaseCalledA[PhaseId.APPLY_REQUEST_VALUES.getOrdinal()]);
-        // verify before for "b" was called, but the after was not
-        assertEquals(1,
-                     phaseCalledB[PhaseId.APPLY_REQUEST_VALUES.getOrdinal()]);
-        // verify that neither before nor after for "c" were called
-        assertEquals(0,
-                     phaseCalledC[PhaseId.APPLY_REQUEST_VALUES.getOrdinal()]);
-
-        life.removePhaseListener(a);
-        life.removePhaseListener(b);
-        life.removePhaseListener(c);
+//        assertTrue(null != sharedListener);
+//        getFacesContext().setExceptionHandler(handler);
+//        LifecycleImpl life = getSharedLifecycleImpl();
+//        int[] phaseCalledA = new int[PhaseId.RENDER_RESPONSE.getOrdinal() + 1];
+//        int[] phaseCalledB = new int[PhaseId.RENDER_RESPONSE.getOrdinal() + 1];
+//        int[] phaseCalledC = new int[PhaseId.RENDER_RESPONSE.getOrdinal() + 1];
+//        int i;
+//        for (i = 1; i < phaseCalledA.length; i++) {
+//            phaseCalledA[i] = 0;
+//            phaseCalledB[i] = 0;
+//            phaseCalledC[i] = 0;
+//        }
+//
+//
+//        life.removePhaseListener(sharedListener);
+//
+//        PhaseListenerImpl
+//              a = new PhaseListenerImpl(phaseCalledA,
+//                                        PhaseId.APPLY_REQUEST_VALUES,
+//                                        PhaseId.PROCESS_VALIDATIONS),
+//              b = new PhaseListenerImpl(phaseCalledB,
+//                                        PhaseId.APPLY_REQUEST_VALUES,
+//                                        PhaseId.PROCESS_VALIDATIONS),
+//              c = new PhaseListenerImpl(phaseCalledC,
+//                                        PhaseId.APPLY_REQUEST_VALUES,
+//                                        PhaseId.PROCESS_VALIDATIONS);
+//        b.setThrowExceptionOnBefore(true);
+//        life.addPhaseListener(a);
+//        life.addPhaseListener(b);
+//        life.addPhaseListener(c);
+//
+//        try {
+//            life.execute(getFacesContext());
+//            life.render(getFacesContext());
+//            if (expectException) {
+//                assertTrue(false);
+//            }
+//        } catch (Throwable e) {
+//            if (!expectException) {
+//                assertTrue(false);
+//                e.printStackTrace();
+//            }
+//        }
+//
+//        // verify before and after for "a" were called.
+//        assertEquals(2,
+//                     phaseCalledA[PhaseId.APPLY_REQUEST_VALUES.getOrdinal()]);
+//        // verify before for "b" was called, but the after was not
+//        assertEquals(1,
+//                     phaseCalledB[PhaseId.APPLY_REQUEST_VALUES.getOrdinal()]);
+//        // verify that neither before nor after for "c" were called
+//        assertEquals(0,
+//                     phaseCalledC[PhaseId.APPLY_REQUEST_VALUES.getOrdinal()]);
+//
+//        life.removePhaseListener(a);
+//        life.removePhaseListener(b);
+//        life.removePhaseListener(c);
     }
 
     public void beginAfterListenerExceptionJsf12(WebRequest theRequest) {
-        initWebRequest(theRequest);
+//        initWebRequest(theRequest);
     }
 
     public void testAfterListenerExceptionJsf12() {
-        ExceptionHandlerFactory f = new PreJsf2ExceptionHandlerFactory();
-        testAfterListenerException(f.getExceptionHandler(), false);
+//        ExceptionHandlerFactory f = new PreJsf2ExceptionHandlerFactory();
+//        testAfterListenerException(f.getExceptionHandler(), false);
     }
 
     public void beginAfterListenerExceptionJsf20(WebRequest theRequest) {
-        initWebRequest(theRequest);
+//        initWebRequest(theRequest);
     }
 
     public void testAfterListenerExceptionJsf20() {
-        testAfterListenerException(new ExceptionHandlerImpl(), true);
+//        testAfterListenerException(new ExceptionHandlerImpl(), true);
     }
 
     public void testAfterListenerException(ExceptionHandler handler, boolean expectException) {
-        assertTrue(null != sharedListener);
-        getFacesContext().setExceptionHandler(handler);
-        LifecycleImpl life = getSharedLifecycleImpl();
-        int[] phaseCalledA = new int[PhaseId.RENDER_RESPONSE.getOrdinal() + 1];
-        int[] phaseCalledB = new int[PhaseId.RENDER_RESPONSE.getOrdinal() + 1];
-        int[] phaseCalledC = new int[PhaseId.RENDER_RESPONSE.getOrdinal() + 1];
-        int i;
-        for (i = 1; i < phaseCalledA.length; i++) {
-            phaseCalledA[i] = 0;
-            phaseCalledB[i] = 0;
-            phaseCalledC[i] = 0;
-        }
-
-
-        life.removePhaseListener(sharedListener);
-
-        PhaseListenerImpl
-              a = new PhaseListenerImpl(phaseCalledA,
-                                        PhaseId.APPLY_REQUEST_VALUES,
-                                        PhaseId.PROCESS_VALIDATIONS),
-              b = new PhaseListenerImpl(phaseCalledB,
-                                        PhaseId.APPLY_REQUEST_VALUES,
-                                        PhaseId.PROCESS_VALIDATIONS),
-              c = new PhaseListenerImpl(phaseCalledC,
-                                        PhaseId.APPLY_REQUEST_VALUES,
-                                        PhaseId.PROCESS_VALIDATIONS);
-        b.setThrowExceptionOnAfter(true);
-        life.addPhaseListener(a);
-        life.addPhaseListener(b);
-        life.addPhaseListener(c);
-
-        try {
-            life.execute(getFacesContext());
-            life.render(getFacesContext());
-            if (expectException) {
-                assertTrue(false);
-            }
-        } catch (Throwable e) {
-            if (!expectException) {
-                assertTrue(false);
-                e.printStackTrace();
-            }
-        }
-
-        // verify before and after for "a" were called.
-        assertEquals(1,
-                     phaseCalledA[PhaseId.APPLY_REQUEST_VALUES.getOrdinal()]);
-        // verify before for "b" was called, but the after was not
-        assertEquals(2,
-                     phaseCalledB[PhaseId.APPLY_REQUEST_VALUES.getOrdinal()]);
-        // verify that neither before nor after for "c" were called
-        assertEquals(2,
-                     phaseCalledC[PhaseId.APPLY_REQUEST_VALUES.getOrdinal()]);
-
-        life.removePhaseListener(a);
-        life.removePhaseListener(b);
-        life.removePhaseListener(c);
+//        assertTrue(null != sharedListener);
+//        getFacesContext().setExceptionHandler(handler);
+//        LifecycleImpl life = getSharedLifecycleImpl();
+//        int[] phaseCalledA = new int[PhaseId.RENDER_RESPONSE.getOrdinal() + 1];
+//        int[] phaseCalledB = new int[PhaseId.RENDER_RESPONSE.getOrdinal() + 1];
+//        int[] phaseCalledC = new int[PhaseId.RENDER_RESPONSE.getOrdinal() + 1];
+//        int i;
+//        for (i = 1; i < phaseCalledA.length; i++) {
+//            phaseCalledA[i] = 0;
+//            phaseCalledB[i] = 0;
+//            phaseCalledC[i] = 0;
+//        }
+//
+//
+//        life.removePhaseListener(sharedListener);
+//
+//        PhaseListenerImpl
+//              a = new PhaseListenerImpl(phaseCalledA,
+//                                        PhaseId.APPLY_REQUEST_VALUES,
+//                                        PhaseId.PROCESS_VALIDATIONS),
+//              b = new PhaseListenerImpl(phaseCalledB,
+//                                        PhaseId.APPLY_REQUEST_VALUES,
+//                                        PhaseId.PROCESS_VALIDATIONS),
+//              c = new PhaseListenerImpl(phaseCalledC,
+//                                        PhaseId.APPLY_REQUEST_VALUES,
+//                                        PhaseId.PROCESS_VALIDATIONS);
+//        b.setThrowExceptionOnAfter(true);
+//        life.addPhaseListener(a);
+//        life.addPhaseListener(b);
+//        life.addPhaseListener(c);
+//
+//        try {
+//            life.execute(getFacesContext());
+//            life.render(getFacesContext());
+//            if (expectException) {
+//                assertTrue(false);
+//            }
+//        } catch (Throwable e) {
+//            if (!expectException) {
+//                assertTrue(false);
+//                e.printStackTrace();
+//            }
+//        }
+//
+//        // verify before and after for "a" were called.
+//        assertEquals(1,
+//                     phaseCalledA[PhaseId.APPLY_REQUEST_VALUES.getOrdinal()]);
+//        // verify before for "b" was called, but the after was not
+//        assertEquals(2,
+//                     phaseCalledB[PhaseId.APPLY_REQUEST_VALUES.getOrdinal()]);
+//        // verify that neither before nor after for "c" were called
+//        assertEquals(2,
+//                     phaseCalledC[PhaseId.APPLY_REQUEST_VALUES.getOrdinal()]);
+//
+//        life.removePhaseListener(a);
+//        life.removePhaseListener(b);
+//        life.removePhaseListener(c);
     }
 
 
diff --git a/jsf-ri/test/com/sun/faces/lifecycle/TestLifecycleImpl_initial.java b/jsf-ri/test/com/sun/faces/lifecycle/TestLifecycleImpl_initial.java
index 2c452f7..0cf7c79 100644
--- a/jsf-ri/test/com/sun/faces/lifecycle/TestLifecycleImpl_initial.java
+++ b/jsf-ri/test/com/sun/faces/lifecycle/TestLifecycleImpl_initial.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -99,11 +103,23 @@ public class TestLifecycleImpl_initial extends JspFacesTestCase {
 
     public TestLifecycleImpl_initial() {
         super("TestLifecycleImpl_initial");
+	initLocalHostPath();
     }
 
 
     public TestLifecycleImpl_initial(String name) {
         super(name);
+	initLocalHostPath();
+    }
+
+    private String localHostPath = "localhost:8080";
+
+    private void initLocalHostPath() {
+	String containerPort = System.getProperty("container.port");
+	if (null == containerPort || 0 == containerPort.length()) {
+	    containerPort = "8080";
+	}
+	localHostPath = "localhost:" + containerPort;
     }
 
 //
@@ -116,7 +132,7 @@ public class TestLifecycleImpl_initial extends JspFacesTestCase {
 
 
     protected void initWebRequest(WebRequest theRequest) {
-        theRequest.setURL("localhost:8080", "/test", "/faces", TEST_URI, null);
+        theRequest.setURL(localHostPath, "/test", "/faces", TEST_URI, null);
     }
 
 
diff --git a/jsf-ri/test/com/sun/faces/lifecycle/TestPhase.java b/jsf-ri/test/com/sun/faces/lifecycle/TestPhase.java
index 239bfd5..fb22487 100644
--- a/jsf-ri/test/com/sun/faces/lifecycle/TestPhase.java
+++ b/jsf-ri/test/com/sun/faces/lifecycle/TestPhase.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -83,11 +87,23 @@ public class TestPhase extends ServletFacesTestCase {
 
     public TestPhase() {
         super("TestPhase");
+	initLocalHostPath();
     }
 
 
     public TestPhase(String name) {
         super(name);
+	initLocalHostPath();
+    }
+
+    private String localHostPath = "localhost:8080";
+
+    private void initLocalHostPath() {
+	String containerPort = System.getProperty("container.port");
+	if (null == containerPort || 0 == containerPort.length()) {
+	    containerPort = "8080";
+	}
+	localHostPath = "localhost:" + containerPort;
     }
 
 //
@@ -99,7 +115,7 @@ public class TestPhase extends ServletFacesTestCase {
 //
 
     public void beginExecute(WebRequest theRequest) {
-        theRequest.setURL("localhost:8080", null, null, TEST_URI, null);
+        theRequest.setURL(localHostPath, null, null, TEST_URI, null);
         theRequest.addParameter(
             "basicForm" + NamingContainer.SEPARATOR_CHAR + "userName", "jerry");
     }
diff --git a/jsf-ri/test/com/sun/faces/lifecycle/TestProcessEvents.java b/jsf-ri/test/com/sun/faces/lifecycle/TestProcessEvents.java
index 645ddac..0be5a75 100644
--- a/jsf-ri/test/com/sun/faces/lifecycle/TestProcessEvents.java
+++ b/jsf-ri/test/com/sun/faces/lifecycle/TestProcessEvents.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/test/com/sun/faces/lifecycle/TestProcessValidationsPhase.java b/jsf-ri/test/com/sun/faces/lifecycle/TestProcessValidationsPhase.java
index 1e9e21a..fbc8555 100644
--- a/jsf-ri/test/com/sun/faces/lifecycle/TestProcessValidationsPhase.java
+++ b/jsf-ri/test/com/sun/faces/lifecycle/TestProcessValidationsPhase.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -87,11 +91,23 @@ public class TestProcessValidationsPhase extends ServletFacesTestCase {
 
     public TestProcessValidationsPhase() {
         super("TestProcessValidationsPhase");
+	initLocalHostPath();
     }
 
 
     public TestProcessValidationsPhase(String name) {
         super(name);
+	initLocalHostPath();
+    }
+
+    private String localHostPath = "localhost:8080";
+
+    private void initLocalHostPath() {
+	String containerPort = System.getProperty("container.port");
+	if (null == containerPort || 0 == containerPort.length()) {
+	    containerPort = "8080";
+	}
+	localHostPath = "localhost:" + containerPort;
     }
 
 //
diff --git a/jsf-ri/test/com/sun/faces/lifecycle/TestRenderResponsePhase.java b/jsf-ri/test/com/sun/faces/lifecycle/TestRenderResponsePhase.java
index 0efedb7..8e68fae 100644
--- a/jsf-ri/test/com/sun/faces/lifecycle/TestRenderResponsePhase.java
+++ b/jsf-ri/test/com/sun/faces/lifecycle/TestRenderResponsePhase.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -107,11 +111,23 @@ public class TestRenderResponsePhase extends JspFacesTestCase {
 
     public TestRenderResponsePhase() {
         super("TestRenderResponsePhase");
+	initLocalHostPath();
     }
 
 
     public TestRenderResponsePhase(String name) {
         super(name);
+	initLocalHostPath();
+    }
+
+    private String localHostPath = "localhost:8080";
+
+    private void initLocalHostPath() {
+	String containerPort = System.getProperty("container.port");
+	if (null == containerPort || 0 == containerPort.length()) {
+	    containerPort = "8080";
+	}
+	localHostPath = "localhost:" + containerPort;
     }
 
 //
@@ -124,7 +140,7 @@ public class TestRenderResponsePhase extends JspFacesTestCase {
 
 
     public void beginHtmlBasicRenderKit(WebRequest theRequest) {
-        theRequest.setURL("localhost:8080", "/test", "/faces", TEST_URI, null);
+        theRequest.setURL(localHostPath, "/test", "/faces", TEST_URI, null);
     }
 
 
@@ -150,11 +166,11 @@ public class TestRenderResponsePhase extends JspFacesTestCase {
         assertTrue(!(getFacesContext().getRenderResponse()) &&
                 !(getFacesContext().getResponseComplete()));
 
-        assertTrue(verifyExpectedOutput());
+       assertTrue(verifyExpectedOutput());
     }
 
     public void beginShortCircuitRenderResponse(WebRequest theRequest) {
-        theRequest.setURL("localhost:8080", "/test", "/faces", TEST_URI, null);
+        theRequest.setURL(localHostPath, "/test", "/faces", TEST_URI, null);
     }
 
     public void testShortCircuitRenderResponse() {
diff --git a/jsf-ri/test/com/sun/faces/lifecycle/TestRestoreViewFromPage.java b/jsf-ri/test/com/sun/faces/lifecycle/TestRestoreViewFromPage.java
index 89087d1..0aaf78f 100644
--- a/jsf-ri/test/com/sun/faces/lifecycle/TestRestoreViewFromPage.java
+++ b/jsf-ri/test/com/sun/faces/lifecycle/TestRestoreViewFromPage.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -91,11 +95,23 @@ public class TestRestoreViewFromPage extends ServletFacesTestCase {
 
     public TestRestoreViewFromPage() {
         super("TestRestoreViewFromPage");
+	initLocalHostPath();
     }
 
 
     public TestRestoreViewFromPage(String name) {
         super(name);
+	initLocalHostPath();
+    }
+
+    private String localHostPath = "localhost:8080";
+
+    private void initLocalHostPath() {
+	String containerPort = System.getProperty("container.port");
+	if (null == containerPort || 0 == containerPort.length()) {
+	    containerPort = "8080";
+	}
+	localHostPath = "localhost:" + containerPort;
     }
 
 //
@@ -107,7 +123,7 @@ public class TestRestoreViewFromPage extends ServletFacesTestCase {
 //
 
     public void beginRestoreViewFromPage(WebRequest theRequest) {
-        theRequest.setURL("localhost:8080", null, null, TEST_URI, null);
+        theRequest.setURL(localHostPath, null, null, TEST_URI, null);
         theRequest.addParameter("javax.faces.ViewState",
                                 "rO0ABXNyACBjb20uc3VuLmZhY2VzLnV0aWwuVHJlZVN0cnVjdHVyZRRmG0QclWAgAgAETAAIY2hpbGRyZW50ABVMamF2YS91dGlsL0FycmF5TGlzdDtMAAljbGFzc05hbWV0ABJMamF2YS9sYW5nL1N0cmluZztMAAZmYWNldHN0ABNMamF2YS91dGlsL0hhc2hNYXA7TAACaWRxAH4AAnhwc3IAE2phdmEudXRpbC5BcnJheUxpc3R4gdIdmcdhnQMAAUkABHNpemV4cAAAAAF3BAAAAApzcQB+AABzcQB+AAUAAAACdwQAAAAKc3EAfgAAcHQAJmphdmF4LmZhY2VzLmNvbXBvbmVudC5iYXNlLlVJSW5wdXRCYXNlcHQABnVzZXJOb3NxAH4AAHB0AChqYXZheC5mYWNlcy5jb21wb25lbnQuYmFzZS5VSUNvbW1hbmRCYXN [...]
     }
diff --git a/jsf-ri/test/com/sun/faces/lifecycle/TestRestoreViewPhase.java b/jsf-ri/test/com/sun/faces/lifecycle/TestRestoreViewPhase.java
index d122fbd..31b1597 100644
--- a/jsf-ri/test/com/sun/faces/lifecycle/TestRestoreViewPhase.java
+++ b/jsf-ri/test/com/sun/faces/lifecycle/TestRestoreViewPhase.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -89,11 +93,23 @@ public class TestRestoreViewPhase extends ServletFacesTestCase {
 
     public TestRestoreViewPhase() {
         super("TestRestoreViewPhase");
+	initLocalHostPath();
     }
 
 
     public TestRestoreViewPhase(String name) {
         super(name);
+	initLocalHostPath();
+    }
+
+    private String localHostPath = "localhost:8080";
+
+    private void initLocalHostPath() {
+	String containerPort = System.getProperty("container.port");
+	if (null == containerPort || 0 == containerPort.length()) {
+	    containerPort = "8080";
+	}
+	localHostPath = "localhost:" + containerPort;
     }
 
 //
@@ -105,14 +121,14 @@ public class TestRestoreViewPhase extends ServletFacesTestCase {
 //
 
     public void beginReconstituteRequestSubmit(WebRequest theRequest) {
-        theRequest.setURL("localhost:8080", null, null, TEST_URI, null);
+        theRequest.setURL(localHostPath, null, null, TEST_URI, null);
 	theRequest.addParameter("javax.faces.ViewState",
 				"j_id1:j_id2");
     }
 
 
     public void beginRegisterListeners(WebRequest theRequest) {
-        theRequest.setURL("localhost:8080", null, null, TEST_URI, null);
+        theRequest.setURL(localHostPath, null, null, TEST_URI, null);
 	theRequest.addParameter("javax.faces.ViewState",
 				"j_id1:j_id2");
     }
@@ -260,7 +276,7 @@ public class TestRestoreViewPhase extends ServletFacesTestCase {
     }
 
     public void beginRestoreViewExpired(WebRequest theRequest) {
-        theRequest.setURL("localhost:8080", null, null, TEST_URI, null);
+        theRequest.setURL(localHostPath, null, null, TEST_URI, null);
         theRequest.addParameter("javax.faces.ViewState",
                                 "j_id1:j_id2");
     }
diff --git a/jsf-ri/test/com/sun/faces/lifecycle/TestSaveStateInPage.java b/jsf-ri/test/com/sun/faces/lifecycle/TestSaveStateInPage.java
index 3409cf1..7fb736b 100644
--- a/jsf-ri/test/com/sun/faces/lifecycle/TestSaveStateInPage.java
+++ b/jsf-ri/test/com/sun/faces/lifecycle/TestSaveStateInPage.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -112,13 +116,26 @@ public class TestSaveStateInPage extends JspFacesTestCase {
 
     public TestSaveStateInPage() {
         super("TestRenderResponsePhase");
+	initLocalHostPath();
     }
 
 
     public TestSaveStateInPage(String name) {
         super(name);
+	initLocalHostPath();
     }
 
+    private String localHostPath = "localhost:8080";
+
+    private void initLocalHostPath() {
+	String containerPort = System.getProperty("container.port");
+	if (null == containerPort || 0 == containerPort.length()) {
+	    containerPort = "8080";
+	}
+	localHostPath = "localhost:" + containerPort;
+    }
+
+
 //
 // Class methods
 //
@@ -129,7 +146,7 @@ public class TestSaveStateInPage extends JspFacesTestCase {
 
 
     public void beginSaveStateInPage(WebRequest theRequest) {
-        theRequest.setURL("localhost:8080", null, null, TEST_URI, null);
+        theRequest.setURL(localHostPath, null, null, TEST_URI, null);
     }
 
 
diff --git a/jsf-ri/test/com/sun/faces/lifecycle/TestUpdateModelValuesPhase.java b/jsf-ri/test/com/sun/faces/lifecycle/TestUpdateModelValuesPhase.java
index 771252f..7a96889 100644
--- a/jsf-ri/test/com/sun/faces/lifecycle/TestUpdateModelValuesPhase.java
+++ b/jsf-ri/test/com/sun/faces/lifecycle/TestUpdateModelValuesPhase.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/test/com/sun/faces/mock/MockServletContext.java b/jsf-ri/test/com/sun/faces/mock/MockServletContext.java
index 1d74b38..93ddf4e 100644
--- a/jsf-ri/test/com/sun/faces/mock/MockServletContext.java
+++ b/jsf-ri/test/com/sun/faces/mock/MockServletContext.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/test/com/sun/faces/renderkit/TestContentTypes.java b/jsf-ri/test/com/sun/faces/renderkit/TestContentTypes.java
index 9978c64..6475e08 100644
--- a/jsf-ri/test/com/sun/faces/renderkit/TestContentTypes.java
+++ b/jsf-ri/test/com/sun/faces/renderkit/TestContentTypes.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/test/com/sun/faces/renderkit/TestRenderKit.java b/jsf-ri/test/com/sun/faces/renderkit/TestRenderKit.java
index bcd4103..1308d64 100644
--- a/jsf-ri/test/com/sun/faces/renderkit/TestRenderKit.java
+++ b/jsf-ri/test/com/sun/faces/renderkit/TestRenderKit.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -51,6 +55,8 @@ import com.sun.faces.config.processor.ConfigProcessor;
 import com.sun.faces.config.processor.FactoryConfigProcessor;
 import com.sun.faces.config.processor.ApplicationConfigProcessor;
 import com.sun.faces.config.processor.RenderKitConfigProcessor;
+import com.sun.faces.spi.InjectionProvider;
+import com.sun.faces.spi.InjectionProviderFactory;
 import com.sun.faces.util.Util;
 
 import javax.faces.FactoryFinder;
@@ -70,6 +76,7 @@ import javax.xml.parsers.DocumentBuilder;
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.StringWriter;
+import java.net.URI;
 import java.util.Iterator;
 import java.net.URL;
 
@@ -487,10 +494,15 @@ public class TestRenderKit extends ServletFacesTestCase {
                 p.setNext(configProcessors[i + 1]);
             }
         }
-
+        
+        InjectionProvider containerConnector =
+                InjectionProviderFactory.createInstance(ctx.getExternalContext());
+        ctx.getAttributes().put("com.sun.faces.config.ConfigManager_INJECTION_PROVIDER_TASK", 
+                containerConnector);
+        
         configProcessors[0].process(servletContext, new DocumentInfo[] {
-                                           new DocumentInfo(defaultDoc, runtime),
-                                           new DocumentInfo(renderKitDoc, renderkit) });
+                                           new DocumentInfo(defaultDoc, new URI(runtime.toExternalForm())),
+                                           new DocumentInfo(renderKitDoc, new URI(renderkit.toExternalForm())) });
 
         RenderKitFactory rkf = (RenderKitFactory) FactoryFinder.getFactory(FactoryFinder.RENDER_KIT_FACTORY);
         RenderKit rk = rkf.getRenderKit(getFacesContext(), RenderKitFactory.HTML_BASIC_RENDER_KIT);
diff --git a/jsf-ri/test/com/sun/faces/renderkit/TestRenderKitFactory.java b/jsf-ri/test/com/sun/faces/renderkit/TestRenderKitFactory.java
index 703c8b8..89f4730 100644
--- a/jsf-ri/test/com/sun/faces/renderkit/TestRenderKitFactory.java
+++ b/jsf-ri/test/com/sun/faces/renderkit/TestRenderKitFactory.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/test/com/sun/faces/renderkit/TestRenderKitUtils.java b/jsf-ri/test/com/sun/faces/renderkit/TestRenderKitUtils.java
index 1ea3d11..05de32b 100644
--- a/jsf-ri/test/com/sun/faces/renderkit/TestRenderKitUtils.java
+++ b/jsf-ri/test/com/sun/faces/renderkit/TestRenderKitUtils.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/test/com/sun/faces/renderkit/html_basic/HtmlResponseWriterTest.java b/jsf-ri/test/com/sun/faces/renderkit/html_basic/HtmlResponseWriterTest.java
deleted file mode 100644
index 6dd8199..0000000
--- a/jsf-ri/test/com/sun/faces/renderkit/html_basic/HtmlResponseWriterTest.java
+++ /dev/null
@@ -1,139 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-/*
- * HtmlResponseWriterTest.java
- * JUnit based test
- *
- * Created on November 16, 2006, 2:59 PM
- */
-
-package com.sun.faces.renderkit.html_basic;
-
-import java.io.StringWriter;
-import junit.framework.*;
-import javax.faces.component.UIComponent;
-import javax.faces.component.UIOutput;
-
-/**
- *
- * @author edburns
- */
-public class HtmlResponseWriterTest extends TestCase {
-    
-    public HtmlResponseWriterTest(String testName) {
-        super(testName);
-    }
-
-    protected void setUp() throws Exception {
-    }
-
-    protected void tearDown() throws Exception {
-    }
-
-    public void testCDATAWithXHTML() throws Exception {
-        System.out.println("startElement");
-        
-        String name = null;
-        UIComponent componentForElement = new UIOutput();
-        
-        final String expected = "<script>\n//<![CDATA[\n\n function queueEvent() {\n  return false;\n}\n\n\n//]]>\n</script>";
- 
-        // Case 1 start is // end is //
-        StringWriter stringWriter = new StringWriter();
-        HtmlResponseWriter instance = new HtmlResponseWriter(stringWriter,
-                "application/xhtml+xml", "UTF-8");
-
-        instance.startElement("script", componentForElement);
-        instance.write("    // <![CDATA[\n function queueEvent() {\n  return false;\n}\n\n//   ]]>  \n");
-        instance.endElement("script");
-        
-        instance.flush();
-        assertEquals(expected, stringWriter.toString());
-
-        // Case 2 start is // end is /* */
-        stringWriter = new StringWriter();
-        instance = new HtmlResponseWriter(stringWriter,
-                "application/xhtml+xml", "UTF-8");
- 
-        instance.startElement("script", componentForElement);
-        instance.write("    // <![CDATA[\n function queueEvent() {\n  return false;\n}\n\n/*\n  ]]> \n*/ \n");
-        instance.endElement("script");
-        
-        instance.flush();
-        assertEquals(expected, stringWriter.toString());
-
-        // Case 3 start is /* */  end is /* */
-        stringWriter = new StringWriter();
-        instance = new HtmlResponseWriter(stringWriter,
-                "application/xhtml+xml", "UTF-8");
- 
-        instance.startElement("script", componentForElement);
-        instance.write("    /* \n <![CDATA[ \n*/\n function queueEvent() {\n  return false;\n}\n\n/*\n  ]]> \n*/ \n");
-        instance.endElement("script");
-        
-        instance.flush();
-        assertEquals(expected, stringWriter.toString());
-
-        // Case 4 start is /* */  end is //
-        stringWriter = new StringWriter();
-        instance = new HtmlResponseWriter(stringWriter,
-                "application/xhtml+xml", "UTF-8");
- 
-        instance.startElement("script", componentForElement);
-        instance.write("    /* \n <![CDATA[ \n*/\n function queueEvent() {\n  return false;\n}\n\n//\n  ]]>\n");
-        instance.endElement("script");
-        
-        instance.flush();
-        assertEquals(expected, stringWriter.toString());
-        
-        // Case 5 start is /* */  end is //
-        stringWriter = new StringWriter();
-        instance = new HtmlResponseWriter(stringWriter,
-                "application/xhtml+xml", "UTF-8");
- 
-        instance.startElement("script", componentForElement);
-        instance.write("    /* \n <![CDATA[ \n*/\n function queueEvent() {\n  return false;\n}\n\n//\n  ]]>\n");
-        instance.endElement("script");
-        
-        instance.flush();
-        assertEquals(expected, stringWriter.toString());
-        
-        
-    }
-
-    
-}
diff --git a/jsf-ri/test/com/sun/faces/renderkit/html_basic/MenuRendererTestCase.java b/jsf-ri/test/com/sun/faces/renderkit/html_basic/MenuRendererTestCase.java
index 7d92497..8471f91 100644
--- a/jsf-ri/test/com/sun/faces/renderkit/html_basic/MenuRendererTestCase.java
+++ b/jsf-ri/test/com/sun/faces/renderkit/html_basic/MenuRendererTestCase.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/test/com/sun/faces/renderkit/html_basic/TestComponentType.java b/jsf-ri/test/com/sun/faces/renderkit/html_basic/TestComponentType.java
index d25be73..61511f3 100644
--- a/jsf-ri/test/com/sun/faces/renderkit/html_basic/TestComponentType.java
+++ b/jsf-ri/test/com/sun/faces/renderkit/html_basic/TestComponentType.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/test/com/sun/faces/renderkit/html_basic/TestHtmlResponseWriter.java b/jsf-ri/test/com/sun/faces/renderkit/html_basic/TestHtmlResponseWriter.java
index 5fd4a5f..4f63261 100644
--- a/jsf-ri/test/com/sun/faces/renderkit/html_basic/TestHtmlResponseWriter.java
+++ b/jsf-ri/test/com/sun/faces/renderkit/html_basic/TestHtmlResponseWriter.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/test/com/sun/faces/renderkit/html_basic/TestRendererConversions.java b/jsf-ri/test/com/sun/faces/renderkit/html_basic/TestRendererConversions.java
index bece3f4..57cdf49 100644
--- a/jsf-ri/test/com/sun/faces/renderkit/html_basic/TestRendererConversions.java
+++ b/jsf-ri/test/com/sun/faces/renderkit/html_basic/TestRendererConversions.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -80,11 +84,23 @@ public class TestRendererConversions extends ServletFacesTestCase {
 
     public TestRendererConversions() {
         super("TestRendererConversions");
+	initLocalHostPath();
     }
 
 
     public TestRendererConversions(String name) {
         super(name);
+	initLocalHostPath();
+    }
+
+    private String localHostPath = "localhost:8080";
+
+    private void initLocalHostPath() {
+	String containerPort = System.getProperty("container.port");
+	if (null == containerPort || 0 == containerPort.length()) {
+	    containerPort = "8080";
+	}
+	localHostPath = "localhost:" + containerPort;
     }
 
 //
@@ -96,7 +112,7 @@ public class TestRendererConversions extends ServletFacesTestCase {
 //
 
     public void beginEmptyStrings(WebRequest theRequest) {
-        theRequest.setURL("localhost:8080", null, null, TEST_URI, null);
+        theRequest.setURL(localHostPath, null, null, TEST_URI, null);
         theRequest.addParameter("number", "");
         theRequest.addParameter("date", "");
         theRequest.addParameter("text", "");
@@ -155,7 +171,7 @@ public class TestRendererConversions extends ServletFacesTestCase {
 
 
     public void beginNulls(WebRequest theRequest) {
-        theRequest.setURL("localhost:8080", null, null, TEST_URI, null);
+        theRequest.setURL(localHostPath, null, null, TEST_URI, null);
     }
 
 
@@ -165,7 +181,7 @@ public class TestRendererConversions extends ServletFacesTestCase {
 
 
     public void beginBadConversion(WebRequest theRequest) {
-        theRequest.setURL("localhost:8080", null, null, TEST_URI, null);
+        theRequest.setURL(localHostPath, null, null, TEST_URI, null);
     }
 
 
diff --git a/jsf-ri/test/com/sun/faces/renderkit/html_basic/TestRenderers_1.java b/jsf-ri/test/com/sun/faces/renderkit/html_basic/TestRenderers_1.java
index 6142caf..6f57366 100644
--- a/jsf-ri/test/com/sun/faces/renderkit/html_basic/TestRenderers_1.java
+++ b/jsf-ri/test/com/sun/faces/renderkit/html_basic/TestRenderers_1.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -93,13 +97,25 @@ public class TestRenderers_1 extends JspFacesTestCase {
 
     public TestRenderers_1() {
         super("TestRenderers_1");
+	initLocalHostPath();
     }
 
 
     public TestRenderers_1(String name) {
         super(name);
+	initLocalHostPath();
     }
    
+    private String localHostPath = "localhost:8080";
+
+    private void initLocalHostPath() {
+	String containerPort = System.getProperty("container.port");
+	if (null == containerPort || 0 == containerPort.length()) {
+	    containerPort = "8080";
+	}
+	localHostPath = "localhost:" + containerPort;
+    }
+
     //
     // Class methods
     //
@@ -156,7 +172,7 @@ public class TestRenderers_1 extends JspFacesTestCase {
 
     public void beginRenderers(WebRequest theRequest) {
 
-        theRequest.setURL("localhost:8080", null, null, TEST_URI, null);
+        theRequest.setURL(localHostPath, null, null, TEST_URI, null);
         // theRequest.addParameter("name", "FormRenderer");
         //theRequest.addParameter("action", "form");
         theRequest.addParameter("radioRenderer", "Two");
diff --git a/jsf-ri/test/com/sun/faces/renderkit/html_basic/TestRenderers_2.java b/jsf-ri/test/com/sun/faces/renderkit/html_basic/TestRenderers_2.java
index 3a3e2fa..e99958f 100644
--- a/jsf-ri/test/com/sun/faces/renderkit/html_basic/TestRenderers_2.java
+++ b/jsf-ri/test/com/sun/faces/renderkit/html_basic/TestRenderers_2.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -761,12 +765,11 @@ public class TestRenderers_2 extends JspFacesTestCase {
 
         //Span should containt class for styleClass, style, 
         //  and title for tooltip attributes
-        //Summary should go in the title attribute and only the 
-        //  detail displayed in the body of the span
+        //Detail should go in the title attribute and both the 
+        //  summary and detail displayed in the body of the span
         assertTrue(
             result.indexOf(
-                "<span id=\"myMessage_4\" style=\"style\" class=\"styleClass\" title=\"global message summary_4\">	global message detail_4</span>") !=
-            -1);
+                "<span id=\"myMessage_4\" style=\"style\" class=\"styleClass\" title=\"global message detail_4\">		global message summary_4 global message detail_4</span>") != -1);
 
         try {
             writer.close();
@@ -814,13 +817,12 @@ public class TestRenderers_2 extends JspFacesTestCase {
         result = writer.toString();
         //Span should containt class for styleClass, style, 
         //  and title for tooltip attributes
-        //Summary should go in the title attribute and only the 
-        //  detail displayed in the body of the span
+        //Detail should go in the title attribute and both the 
+        //  summary and detail displayed in the body of the span
         //Should be wrapped in a table
         assertTrue(
             result.indexOf(
-                "<span id=\"myMessage_5\" style=\"style\" class=\"fatalClass\" title=\"global message summary_5\">	global message detail_5</span>") !=
-            -1);
+                "<span id=\"myMessage_5\" style=\"style\" class=\"fatalClass\" title=\"global message detail_5\">		global message summary_5 global message detail_5</span>") != -1);
 
         try {
             writer.close();
@@ -907,9 +909,7 @@ public class TestRenderers_2 extends JspFacesTestCase {
         messageRenderer.encodeEnd(getFacesContext(), message);
 
         result = writer.toString();
-
-        // should not contain detail.
-        assertEquals(-1, result.indexOf("global message detail_6"));
+        assertTrue(-1 != result.indexOf("global message detail_6"));
         assertTrue(-1 != result.indexOf("global message summary_6"));
 
         try {
@@ -1251,7 +1251,7 @@ public class TestRenderers_2 extends JspFacesTestCase {
         //Verify <ul> with id/style/class
         //Verify <li> with class;span containing tool tip      
         assertTrue(
-            result.indexOf("<ul id=\"myMessage_4\" class=\"styleClass\" style=\"style\"><li class=\"infoClass\"><span title=\"global message summary_0\">") != -1);
+            result.indexOf("<ul id=\"myMessage_4\" class=\"styleClass\" style=\"style\"><li class=\"infoClass\"><span title=\"global message detail_0\">") != -1);
         try {
             writer.close();
         } catch (IOException ioe) {
@@ -1311,7 +1311,7 @@ public class TestRenderers_2 extends JspFacesTestCase {
         assertTrue(
             result.indexOf("<table id=\"myMessage_5\" class=\"styleClass\" style=\"style\">") != -1);
         assertTrue(
-            result.indexOf("<tr><td><span title=\"global message summary_5.0\">") != -1);
+            result.indexOf("<tr><td><span title=\"global message detail_5.0\">") != -1);
 
         try {
             writer.close();
diff --git a/jsf-ri/test/com/sun/faces/renderkit/html_basic/TestRenderers_3.java b/jsf-ri/test/com/sun/faces/renderkit/html_basic/TestRenderers_3.java
index 0232902..8927074 100644
--- a/jsf-ri/test/com/sun/faces/renderkit/html_basic/TestRenderers_3.java
+++ b/jsf-ri/test/com/sun/faces/renderkit/html_basic/TestRenderers_3.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/test/com/sun/faces/renderkit/html_basic/TestRenderers_4.java b/jsf-ri/test/com/sun/faces/renderkit/html_basic/TestRenderers_4.java
index 7c305db..db41bbc 100644
--- a/jsf-ri/test/com/sun/faces/renderkit/html_basic/TestRenderers_4.java
+++ b/jsf-ri/test/com/sun/faces/renderkit/html_basic/TestRenderers_4.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/test/com/sun/faces/scripting/groovy/MojarraGroovyClassLoaderTest.java b/jsf-ri/test/com/sun/faces/scripting/groovy/MojarraGroovyClassLoaderTest.java
index 1de2344..d5385b6 100644
--- a/jsf-ri/test/com/sun/faces/scripting/groovy/MojarraGroovyClassLoaderTest.java
+++ b/jsf-ri/test/com/sun/faces/scripting/groovy/MojarraGroovyClassLoaderTest.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/test/com/sun/faces/taglib/TestCoreValidator.java b/jsf-ri/test/com/sun/faces/taglib/TestCoreValidator.java
index e6bf784..253a66e 100644
--- a/jsf-ri/test/com/sun/faces/taglib/TestCoreValidator.java
+++ b/jsf-ri/test/com/sun/faces/taglib/TestCoreValidator.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/test/com/sun/faces/taglib/TestHtmlBasicValidator.java b/jsf-ri/test/com/sun/faces/taglib/TestHtmlBasicValidator.java
index 269ee76..6529055 100644
--- a/jsf-ri/test/com/sun/faces/taglib/TestHtmlBasicValidator.java
+++ b/jsf-ri/test/com/sun/faces/taglib/TestHtmlBasicValidator.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/test/com/sun/faces/taglib/TlvTestCase.java b/jsf-ri/test/com/sun/faces/taglib/TlvTestCase.java
index b59ae3e..28298f6 100644
--- a/jsf-ri/test/com/sun/faces/taglib/TlvTestCase.java
+++ b/jsf-ri/test/com/sun/faces/taglib/TlvTestCase.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/test/com/sun/faces/taglib/jsf_core/TestCoreTagsVBEnabled.java b/jsf-ri/test/com/sun/faces/taglib/jsf_core/TestCoreTagsVBEnabled.java
index af8906d..b94f85b 100644
--- a/jsf-ri/test/com/sun/faces/taglib/jsf_core/TestCoreTagsVBEnabled.java
+++ b/jsf-ri/test/com/sun/faces/taglib/jsf_core/TestCoreTagsVBEnabled.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -102,11 +106,23 @@ public class TestCoreTagsVBEnabled extends JspFacesTestCase {
 
     public TestCoreTagsVBEnabled() {
         super("TestValidatorTags");
+	initLocalHostPath();
     }
 
 
     public TestCoreTagsVBEnabled(String name) {
         super(name);
+	initLocalHostPath();
+    }
+
+    private String localHostPath = "localhost:8080";
+
+    private void initLocalHostPath() {
+	String containerPort = System.getProperty("container.port");
+	if (null == containerPort || 0 == containerPort.length()) {
+	    containerPort = "8080";
+	}
+	localHostPath = "localhost:" + containerPort;
     }
 
 //
@@ -119,7 +135,7 @@ public class TestCoreTagsVBEnabled extends JspFacesTestCase {
 
 
     public void beginValidators(WebRequest theRequest) {
-        theRequest.setURL("localhost:8080", "/test", "/faces", TEST_URI, null);
+        theRequest.setURL(localHostPath, "/test", "/faces", TEST_URI, null);
         theRequest.addParameter(LONGRANGE_ID, LONGRANGE_VALUE);
         theRequest.addParameter(INTRANGE_ID, INTRANGE_VALUE);
         theRequest.addParameter(DOUBLERANGE_ID, DOUBLERANGE_VALUE);
diff --git a/jsf-ri/test/com/sun/faces/taglib/jsf_core/TestLoadBundleTag.java b/jsf-ri/test/com/sun/faces/taglib/jsf_core/TestLoadBundleTag.java
index e1183d6..df8f4c2 100644
--- a/jsf-ri/test/com/sun/faces/taglib/jsf_core/TestLoadBundleTag.java
+++ b/jsf-ri/test/com/sun/faces/taglib/jsf_core/TestLoadBundleTag.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/test/com/sun/faces/taglib/jsf_core/TestValidatorTags.java b/jsf-ri/test/com/sun/faces/taglib/jsf_core/TestValidatorTags.java
index 6c92b32..a55f8b6 100644
--- a/jsf-ri/test/com/sun/faces/taglib/jsf_core/TestValidatorTags.java
+++ b/jsf-ri/test/com/sun/faces/taglib/jsf_core/TestValidatorTags.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -124,11 +128,23 @@ public class TestValidatorTags extends JspFacesTestCase {
 
     public TestValidatorTags() {
         super("TestValidatorTags");
+	initLocalHostPath();
     }
 
 
     public TestValidatorTags(String name) {
         super(name);
+	initLocalHostPath();
+    }
+
+    private String localHostPath = "localhost:8080";
+
+    private void initLocalHostPath() {
+	String containerPort = System.getProperty("container.port");
+	if (null == containerPort || 0 == containerPort.length()) {
+	    containerPort = "8080";
+	}
+	localHostPath = "localhost:" + containerPort;
     }
 
 //
@@ -141,7 +157,7 @@ public class TestValidatorTags extends JspFacesTestCase {
 
 
     public void beginValidators(WebRequest theRequest) {
-        theRequest.setURL("localhost:8080", "/test", "/faces", TEST_URI, null);
+        theRequest.setURL(localHostPath, "/test", "/faces", TEST_URI, null);
         theRequest.addParameter(OUTOFBOUNDS1_ID, OUTOFBOUNDS1_VALUE);
         theRequest.addParameter(INBOUNDS1_ID, INBOUNDS1_VALUE);
         theRequest.addParameter(OUTOFBOUNDS2_ID, OUTOFBOUNDS2_VALUE);
diff --git a/jsf-ri/test/com/sun/faces/taglib/jsf_core/TestViewTag.java b/jsf-ri/test/com/sun/faces/taglib/jsf_core/TestViewTag.java
index 12eb7f8..36ef3d0 100644
--- a/jsf-ri/test/com/sun/faces/taglib/jsf_core/TestViewTag.java
+++ b/jsf-ri/test/com/sun/faces/taglib/jsf_core/TestViewTag.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -88,11 +92,23 @@ public class TestViewTag extends JspFacesTestCase {
 
     public TestViewTag() {
         super("TestViewTag");
+	initLocalHostPath();
     }
 
 
     public TestViewTag(String name) {
         super(name);
+	initLocalHostPath();
+    }
+
+    private String localHostPath = "localhost:8080";
+
+    private void initLocalHostPath() {
+	String containerPort = System.getProperty("container.port");
+	if (null == containerPort || 0 == containerPort.length()) {
+	    containerPort = "8080";
+	}
+	localHostPath = "localhost:" + containerPort;
     }
 
 //
@@ -104,7 +120,7 @@ public class TestViewTag extends JspFacesTestCase {
 //
 
     public void beginViewTag(WebRequest theRequest) {
-        theRequest.setURL("localhost:8080", "/test", "/faces", TEST_URI, null);
+        theRequest.setURL(localHostPath, "/test", "/faces", TEST_URI, null);
     }
 
 
@@ -145,7 +161,7 @@ public class TestViewTag extends JspFacesTestCase {
 
 
     public void beginViewTagVB(WebRequest theRequest) {
-        theRequest.setURL("localhost:8080", "/test", "/faces", TEST_URI2, null);
+        theRequest.setURL(localHostPath, "/test", "/faces", TEST_URI2, null);
     }
 
 
diff --git a/jsf-ri/test/com/sun/faces/util/MultiThreadTestRunner.java b/jsf-ri/test/com/sun/faces/util/MultiThreadTestRunner.java
index 9a7e2e6..7cce7cc 100644
--- a/jsf-ri/test/com/sun/faces/util/MultiThreadTestRunner.java
+++ b/jsf-ri/test/com/sun/faces/util/MultiThreadTestRunner.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/test/com/sun/faces/util/TestHtmlUtils.java b/jsf-ri/test/com/sun/faces/util/TestHtmlUtils.java
deleted file mode 100644
index 1de3398..0000000
--- a/jsf-ri/test/com/sun/faces/util/TestHtmlUtils.java
+++ /dev/null
@@ -1,164 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-// TestHtmlUtils.java
-package com.sun.faces.util;
-
-import java.io.IOException;
-import java.io.StringWriter;
-
-
-import junit.framework.TestCase;
-
-/**
- * <B>TestHtmlUtils</B> is a class ...
- */
-public class TestHtmlUtils extends TestCase {
-
-    public void testWriteURL() throws IOException {
-        //Test url with no params
-        testURLEncoding("http://www.google.com",
-                        "http://www.google.com",
-                        "http://www.google.com");
-        //Test URL with one param
-        testURLEncoding("http://www.google.com?joe=10",
-                        "http://www.google.com?joe=10",
-                        "http://www.google.com?joe=10");
-        //Test URL with two params
-        testURLEncoding("http://www.google.com?joe=10&fred=20",
-                        "http://www.google.com?joe=10&fred=20",
-                        "http://www.google.com?joe=10&fred=20");
-        //Test URL with & entity encoded
-        testURLEncoding("/index.jsf?joe=10&fred=20",
-                        "/index.jsf?joe=10&fred=20",
-                        "/index.jsf?joe=10&fred=20");
-        //Test URL with two params and second & close to end of string
-        testURLEncoding("/index.jsf?joe=10&f=20",
-                        "/index.jsf?joe=10&f=20",
-                        "/index.jsf?joe=10&f=20");
-        //Test URL with misplaced & expected behavior but not necissarily right.
-        testURLEncoding("/index.jsf?joe=10&f=20&",
-                        "/index.jsf?joe=10&f=20&",
-                        "/index.jsf?joe=10&f=20&");
-        //Test URL with encoded entity at end of URL expected behavior but not necissarily right.
-        testURLEncoding("/index.jsf?joe=10&f=20&",
-                        "/index.jsf?joe=10&f=20&",
-                        "/index.jsf?joe=10&f=20&");
-    }
-
-
-    public void testControlCharacters() throws IOException {
-
-        final char[] controlCharacters = new char[32];
-        for (int i = 0; i < 32; i++) {
-            controlCharacters[i] = (char) i;
-        }
-
-        String[] stringValues = new String[32];
-        for (int i = 0; i < 32; i++) {
-            stringValues[i] = "b" + controlCharacters[i] + "b";
-        }
-
-        final String[] largeStringValues = new String[32];
-        for (int i = 0; i < 32; i++) {
-            largeStringValues[i] = (stringValues[i] + "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb");
-        }
-
-        for (int i = 0; i < 32; i++) {
-            char[] textBuffer = new char[1024];
-            char[] buffer = new char[1024];
-            StringWriter writer = new StringWriter();
-            HtmlUtils.writeAttribute(writer, false, false, buffer, stringValues[i], textBuffer, false);
-            if (i == 9 || i == 10 || i == 12 || i == 13) {
-                assertTrue(writer.toString().length() == 3);
-            } else {
-                assertTrue(writer.toString().length() == 2);
-            }
-        }
-
-        for (int i = 0; i < 32; i++) {
-            char[] textBuffer = new char[1024];
-            char[] buffer = new char[1024];
-            StringWriter writer = new StringWriter();
-            HtmlUtils.writeAttribute(writer, false, false, buffer, largeStringValues[i], textBuffer, false);
-            if (i == 9 || i == 10 || i == 12 || i == 13) {
-                assertTrue(writer.toString().length() == 34);
-            } else {
-                assertTrue(writer.toString().length() == 33);
-            }
-        }
-
-
-        for (int i = 0; i < 32; i++) {
-            char[] textBuffer = new char[1024];
-            char[] buffer = new char[1024];
-            StringWriter writer = new StringWriter();
-            HtmlUtils.writeText(writer, false, false, buffer, stringValues[i], textBuffer);
-            if (i == 9 || i == 10 || i == 12 || i == 13) {
-                assertTrue(writer.toString().length() == 3);
-            } else {
-                assertTrue(writer.toString().length() == 2);
-            }
-        }
-
-        for (int i = 0; i < 32; i++) {
-            char[] textBuffer = new char[1024];
-            char[] buffer = new char[1024];
-            StringWriter writer = new StringWriter();
-            HtmlUtils.writeText(writer, false, false, buffer, largeStringValues[i], textBuffer);
-            if (i == 9 || i == 10 || i == 12 || i == 13) {
-                assertTrue(writer.toString().length() == 34);
-            } else {
-                assertTrue(writer.toString().length() == 33);
-            }
-        }
-
-    }
-
-    private void testURLEncoding(String urlToEncode, String expectedHTML, String expectedXML)
-    throws IOException {
-        char[] textBuffer = new char[1024];
-        StringWriter xmlWriter = new StringWriter();
-        HtmlUtils.writeURL(xmlWriter, urlToEncode, textBuffer, "UTF-8");
-        System.out.println("XML: " + xmlWriter.toString());
-        assertEquals(xmlWriter.toString(), expectedXML);
-        StringWriter htmlWriter = new StringWriter();
-        HtmlUtils.writeURL(htmlWriter, urlToEncode, textBuffer, "UTF-8");
-        System.out.println("HTML: " + htmlWriter.toString());
-        assertEquals(htmlWriter.toString(), expectedHTML);
-    }
-
-}
diff --git a/jsf-ri/test/com/sun/faces/util/TestLRUMap_local.java b/jsf-ri/test/com/sun/faces/util/TestLRUMap_local.java
deleted file mode 100644
index 6deaee7..0000000
--- a/jsf-ri/test/com/sun/faces/util/TestLRUMap_local.java
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-package com.sun.faces.util;
-
-import java.util.Arrays;
-import java.util.List;
-import java.util.Collections;
-
-import junit.framework.TestCase;
-
-/**
- * Validate LRU functionality of LRUMap
- */
-public class TestLRUMap_local extends TestCase {
-
-    // ------------------------------------------------------------ Constructors
-
-    public TestLRUMap_local() {
-        super("TestLRUMap_local");
-    }
-
-    public TestLRUMap_local(String name) {
-        super(name);
-    }
-
-    // ------------------------------------------------------------ Test Methods
-
-    /**
-     * Ensure that LRUMap works as advertised.
-     */
-    public void testLRUMap() {
-
-        LRUMap<String,String> map = new LRUMap<String,String>(5);
-        map.put("one", "one");
-        map.put("two", "two");
-        map.put("three", "three");
-
-        // order should be "three", "two", "one"
-        String[] control = {
-              "three", "two", "one"
-        };
-
-        int count = 3;
-        display(control.clone(), map);
-        for (String s : map.keySet()) {          
-            assertEquals(control[--count], s);
-        }
-
-        map.put("four", "four");
-        map.put("five", "five");
-        map.put("three", "three");
-        map.put("six", "six");
-        control = new String[] {
-              "six", "three", "five", "four", "two"
-        };
-        count = 5;
-        display(control.clone(), map);
-        for (String s: map.keySet()) {            
-            assertEquals(control[--count], s);
-        }
-    }
-    
-    // --------------------------------------------------------- Private Methods
-    
-    private static void display(String[] expected, LRUMap<String,String> actual) {
-        System.out.println("Expected order:");
-        List<String> revControl = Arrays.asList(expected);
-        Collections.reverse(revControl);
-        for (String s: revControl) {
-            System.out.print(s + ' ');
-        }
-        System.out.println('\n');
-        System.out.println("Actual order:");
-        for (String s: actual.keySet()) {
-            System.out.print(s + ' ');
-        }
-        System.out.println();
-    }
-}
diff --git a/jsf-ri/test/com/sun/faces/util/TestMessageFactoryImpl.java b/jsf-ri/test/com/sun/faces/util/TestMessageFactoryImpl.java
index 21c5bed..a647b7a 100644
--- a/jsf-ri/test/com/sun/faces/util/TestMessageFactoryImpl.java
+++ b/jsf-ri/test/com/sun/faces/util/TestMessageFactoryImpl.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/test/com/sun/faces/util/TestUtil.java b/jsf-ri/test/com/sun/faces/util/TestUtil.java
index 1d395b4..f2f9965 100644
--- a/jsf-ri/test/com/sun/faces/util/TestUtil.java
+++ b/jsf-ri/test/com/sun/faces/util/TestUtil.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/test/com/sun/faces/util/TestUtil_local.java b/jsf-ri/test/com/sun/faces/util/TestUtil_local.java
deleted file mode 100644
index 3c9ceb7..0000000
--- a/jsf-ri/test/com/sun/faces/util/TestUtil_local.java
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- * 
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
- * Contributor(s):
- * 
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
- */
-
-// TestUtil_local.java
-
-package com.sun.faces.util;
-
-import junit.framework.TestCase;
-
-import java.util.Locale;
-
-/**
- * <B>TestUtil_local.java</B> is a class ...
- * <p/>
- * <B>Lifetime And Scope</B> <P>
- *
- */
-
-public class TestUtil_local extends TestCase {
-
-//
-// Protected Constants
-//
-
-// Class Variables
-//
-
-//
-// Instance Variables
-//
-
-// Attribute Instance Variables
-
-// Relationship Instance Variables
-
-//
-// Constructors and Initializers    
-//
-
-    public TestUtil_local() {
-        super("TestUtil_local.java");
-    }
-
-
-    public TestUtil_local(String name) {
-        super(name);
-    }
-
-//
-// Class methods
-//
-
-//
-// General Methods
-//
-
-
-    public void testGetLocaleFromString() {
-        Locale result = null;
-
-        // positive tests
-        assertNotNull(result = Util.getLocaleFromString("ps"));
-        assertNotNull(result = Util.getLocaleFromString("tg_AF"));
-        assertNotNull(result = Util.getLocaleFromString("tk_IQ-Traditional"));
-        assertNotNull(result = Util.getLocaleFromString("tk-IQ_Traditional"));
-
-    }
-
-} // end of class TestUtil_local
diff --git a/jsf-ri/test/com/sun/faces/util/TestUtil_messages.java b/jsf-ri/test/com/sun/faces/util/TestUtil_messages.java
index c47970b..e072955 100644
--- a/jsf-ri/test/com/sun/faces/util/TestUtil_messages.java
+++ b/jsf-ri/test/com/sun/faces/util/TestUtil_messages.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -82,6 +86,7 @@ public class TestUtil_messages extends ServletFacesTestCase {
         {MessageUtils.NAMED_OBJECT_NOT_FOUND_ERROR_MESSAGE_ID, "1"},
         {MessageUtils.NULL_RESPONSE_STREAM_ERROR_MESSAGE_ID, "0"},
         {MessageUtils.NULL_RESPONSE_WRITER_ERROR_MESSAGE_ID, "0"},
+        {MessageUtils.NULL_VIEW_ID_ERROR_MESSAGE_ID, "0"},
         {MessageUtils.NULL_EVENT_ERROR_MESSAGE_ID, "0"},
         {MessageUtils.NULL_HANDLER_ERROR_MESSAGE_ID, "0"},
         {MessageUtils.NULL_CONTEXT_ERROR_MESSAGE_ID, "0"},
@@ -202,7 +207,8 @@ public class TestUtil_messages extends ServletFacesTestCase {
         {MessageUtils.PARTIAL_STATE_ERROR_RESTORING_ID, "2"},
         {MessageUtils.MISSING_COMPONENT_ATTRIBUTE_VALUE, "1"},
         {MessageUtils.MISSING_COMPONENT_FACET, "1"},
-        {MessageUtils.MISSING_COMPONENT_METADATA, "1" }
+        {MessageUtils.MISSING_COMPONENT_METADATA, "1" },
+        {MessageUtils.MISSING_FORM_ERROR, "0"}
     };
 
 // Attribute Instance Variables
diff --git a/jsf-ri/test/com/sun/faces/util/TreeStructure.java b/jsf-ri/test/com/sun/faces/util/TreeStructure.java
index 8460733..f921351 100644
--- a/jsf-ri/test/com/sun/faces/util/TreeStructure.java
+++ b/jsf-ri/test/com/sun/faces/util/TreeStructure.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-ri/test/debugrunner.bat b/jsf-ri/test/debugrunner.bat
old mode 100644
new mode 100755
diff --git a/jsf-ri/web/test/CorrectRenderersResponse b/jsf-ri/web/test/CorrectRenderersResponse
index e739a76..acad8ea 100644
--- a/jsf-ri/web/test/CorrectRenderersResponse
+++ b/jsf-ri/web/test/CorrectRenderersResponse
@@ -1,13 +1,15 @@
 
-<form id="formRenderer0" name="formRenderer0" method="post" action="/test/JspRedirector/root;jsessionid=78a3afe94a84b6391596868b3797">
+<form id="formRenderer0" name="formRenderer0" method="post" action="/test/JspRedirector/root;jsessionid=44a17d17a443941dbe0e14cfee42">
 <input type="hidden" name="formRenderer0" value="formRenderer0" />
+<input type="hidden" name="formRenderer0:javax.faces.Token" value="ad5f9af9e7a6dd356e0a2fc26e4edee0" />
 ~com.sun.faces.saveStateFieldMarker~
 
 
 </form>
 
-<form id="formRenderer1" name="formRenderer1" method="post" action="/test/JspRedirector/root;jsessionid=78a3afe94a84b6391596868b3797">
+<form id="formRenderer1" name="formRenderer1" method="post" action="/test/JspRedirector/root;jsessionid=44a17d17a443941dbe0e14cfee42">
 <input type="hidden" name="formRenderer1" value="formRenderer1" />
+<input type="hidden" name="formRenderer1:javax.faces.Token" value="ad5f9af9e7a6dd356e0a2fc26e4edee0" />
 ~com.sun.faces.saveStateFieldMarker~
 
 
@@ -30,25 +32,25 @@
 	</tr>
 </table></td>	</tr>
 </table>
-<input id="imageButton" type="image" src="duke.gif;jsessionid=78a3afe94a84b6391596868b3797" name="imageButton" />
-<input id="imageButton2" type="image" src="resduke.gif;jsessionid=78a3afe94a84b6391596868b3797" name="imageButton2" />
+<input id="imageButton" type="image" src="duke.gif;jsessionid=44a17d17a443941dbe0e14cfee42" name="imageButton" />
+<input id="imageButton2" type="image" src="resduke.gif;jsessionid=44a17d17a443941dbe0e14cfee42" name="imageButton2" />
 <input id="labelButton1" type="submit" name="labelButton1" value="PASSED" />
 <input id="labelButton2" type="reset" name="labelButton2" value="model label" />
 <input id="labelButton3" type="submit" name="labelButton3" value="RES-BUNDLE PASSED" />
 <input id="labelButton4" type="reset" name="labelButton4" value="" />
-<a id="labelLink1" name="labelLink1" href="hrefValue;jsessionid=78a3afe94a84b6391596868b3797">PASSED</a>
-<a id="labelLink2" name="labelLink2" href="hrefValue;jsessionid=78a3afe94a84b6391596868b3797">model label</a>
-<a id="labelLink3" name="labelLink3" href="hrefValue;jsessionid=78a3afe94a84b6391596868b3797">RES-BUNDLE PASSED</a>
-<a id="labelLink4" name="labelLink4" href="hrefValue;jsessionid=78a3afe94a84b6391596868b3797" coords="coords" hreflang="hreflang" rel="rel" rev="rev" shape="shape"></a>
-<a id="linkImage" name="linkImage" href="hrefValue;jsessionid=78a3afe94a84b6391596868b3797"><img src="duke.gif;jsessionid=78a3afe94a84b6391596868b3797" /></a>
-<a id="linkImage2" name="linkImage2" href="hrefValue;jsessionid=78a3afe94a84b6391596868b3797"><img src="resduke.gif;jsessionid=78a3afe94a84b6391596868b3797" /></a>
-<a id="paramLink" name="paramLink" href="hrefValue;jsessionid=78a3afe94a84b6391596868b3797?parameter1=param_value1&parameter2=param_value2"><img src="resduke.gif;jsessionid=78a3afe94a84b6391596868b3797" /></a>
+<a id="labelLink1" name="labelLink1" href="hrefValue;jsessionid=44a17d17a443941dbe0e14cfee42">PASSED</a>
+<a id="labelLink2" name="labelLink2" href="hrefValue;jsessionid=44a17d17a443941dbe0e14cfee42">model label</a>
+<a id="labelLink3" name="labelLink3" href="hrefValue;jsessionid=44a17d17a443941dbe0e14cfee42">RES-BUNDLE PASSED</a>
+<a id="labelLink4" name="labelLink4" href="hrefValue;jsessionid=44a17d17a443941dbe0e14cfee42" coords="coords" hreflang="hreflang" rel="rel" rev="rev" shape="shape"></a>
+<a id="linkImage" name="linkImage" href="hrefValue;jsessionid=44a17d17a443941dbe0e14cfee42"><img src="duke.gif;jsessionid=44a17d17a443941dbe0e14cfee42" /></a>
+<a id="linkImage2" name="linkImage2" href="hrefValue;jsessionid=44a17d17a443941dbe0e14cfee42"><img src="resduke.gif;jsessionid=44a17d17a443941dbe0e14cfee42" /></a>
+<a id="paramLink" name="paramLink" href="hrefValue;jsessionid=44a17d17a443941dbe0e14cfee42?parameter1=param_value1&parameter2=param_value2"><img src="resduke.gif;jsessionid=44a17d17a443941dbe0e14cfee42" /></a>
 
 <script type="text/javascript" src="/test/JspRedirector/javax.faces.resource/jsf.js?ln=javax.faces&stage=UnitTest"></script>
 <a id="j_id2:labelLink1" href="#" onclick="mojarra.jsfcljs(document.getElementById('j_id2'),{'j_id2:labelLink1':'j_id2:labelLink1'},'');return false">PASSED</a>
 <a id="j_id2:labelLink2" href="#" onclick="mojarra.jsfcljs(document.getElementById('j_id2'),{'j_id2:labelLink2':'j_id2:labelLink2'},'');return false">model label</a>
 <a id="j_id2:labelLink3" href="#" onclick="mojarra.jsfcljs(document.getElementById('j_id2'),{'j_id2:labelLink3':'j_id2:labelLink3'},'');return false">RES-BUNDLE PASSED</a>
 <a id="j_id2:labelLink4" href="#" coords="coords" hreflang="hreflang" rel="rel" rev="rev" shape="shape" onclick="mojarra.jsfcljs(document.getElementById('j_id2'),{'j_id2:labelLink4':'j_id2:labelLink4'},'');return false"></a>
-<a id="j_id2:linkImage" href="#" onclick="mojarra.jsfcljs(document.getElementById('j_id2'),{'j_id2:linkImage':'j_id2:linkImage'},'');return false"><img src="duke.gif;jsessionid=78a3afe94a84b6391596868b3797" /></a>
-<a id="j_id2:linkImage2" href="#" onclick="mojarra.jsfcljs(document.getElementById('j_id2'),{'j_id2:linkImage2':'j_id2:linkImage2'},'');return false"><img src="resduke.gif;jsessionid=78a3afe94a84b6391596868b3797" /></a>
+<a id="j_id2:linkImage" href="#" onclick="mojarra.jsfcljs(document.getElementById('j_id2'),{'j_id2:linkImage':'j_id2:linkImage'},'');return false"><img src="duke.gif;jsessionid=44a17d17a443941dbe0e14cfee42" /></a>
+<a id="j_id2:linkImage2" href="#" onclick="mojarra.jsfcljs(document.getElementById('j_id2'),{'j_id2:linkImage2':'j_id2:linkImage2'},'');return false"><img src="resduke.gif;jsessionid=44a17d17a443941dbe0e14cfee42" /></a>
 <a id="j_id2:paramLink" href="#" onclick="mojarra.jsfcljs(document.getElementById('j_id2'),{'j_id2:paramLink':'j_id2:paramLink','parameter1':'param_value1','parameter2':'param_value2'},'');return false">link with parameters</a>
diff --git a/jsf-ri/web/test/RenderResponse_correct b/jsf-ri/web/test/RenderResponse_correct
index 4bb5b72..7d21e05 100644
--- a/jsf-ri/web/test/RenderResponse_correct
+++ b/jsf-ri/web/test/RenderResponse_correct
@@ -1,9 +1,6 @@
 
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
+
 
 <HTML>
     <HEAD> <TITLE> JSF Basic Components Test Page </TITLE> </HEAD>
@@ -15,8 +12,9 @@
         <H3> JSF Basic Components Test Page </H3>
 
 
-<form id="basicForm" name="basicForm" method="post" action="/test/faces/TestRenderResponsePhase.jsp" class="formClass" accept-charset="some-charset" accept="html,wml" enctype="application/x-www-form-urlencoded" target="_self" title="basicForm">
+<form id="basicForm" name="basicForm" method="post" action="/test/faces/TestRenderResponsePhase.jsp;jsessionid=45707ec485aedd976d7b06553498" class="formClass" accept-charset="some-charset" accept="html,wml" enctype="application/x-www-form-urlencoded" target="_self" title="basicForm">
 <input type="hidden" name="basicForm" value="basicForm" />
+<input type="hidden" name="basicForm:javax.faces.Token" value="21e2dfc309b7059a09fbd11855664ca8" />
 <input type="hidden" name="javax.faces.ViewState" id="javax.faces.ViewState" value="j_id1:j_id2" autocomplete="off" />
 
 
@@ -52,7 +50,7 @@
 
 	<TD>
 
-            <input id="basicForm:pushButton" type="image" src="duke.gif" name="basicForm:pushButton" style="someStyle" disabled="disabled" />
+            <input id="basicForm:pushButton" type="image" src="duke.gif;jsessionid=45707ec485aedd976d7b06553498" name="basicForm:pushButton" style="someStyle" disabled="disabled" />
 	</TD>
 
       </TR>
@@ -62,7 +60,7 @@
 
 	<TD>
 
-            <input id="basicForm:imageOnlyButton" type="image" src="/test/duke.gif?title=LOGIN&color=red" name="basicForm:imageOnlyButton" />
+            <input id="basicForm:imageOnlyButton" type="image" src="/test/duke.gif;jsessionid=45707ec485aedd976d7b06553498?title=LOGIN&color=red" name="basicForm:imageOnlyButton" />
 	</TD>
 
       </TR>
@@ -101,12 +99,12 @@
 
 	<TD>
 
-	      <a id="basicForm:imageLink" href="#" style="someStyle" onclick="mojarra.jsfcljs(document.getElementById('basicForm'),{'basicForm:imageLink':'basicForm:imageLink'},'');return false"><img src="duke.gif?title=LOGIN&color=red" /></a>
+	      <a id="basicForm:imageLink" href="#" style="someStyle" onclick="mojarra.jsfcljs(document.getElementById('basicForm'),{'basicForm:imageLink':'basicForm:imageLink'},'');return false"><img src="duke.gif;jsessionid=45707ec485aedd976d7b06553498?title=LOGIN&color=red" /></a>
 
 	</TD>
 
         <TD> 
-            <img id="basicForm:graphicImage" src="/test/duke.gif" style="someStyle" usemap="#map1" ismap="ismap" /> 
+            <img id="basicForm:graphicImage" src="/test/duke.gif;jsessionid=45707ec485aedd976d7b06553498" style="someStyle" usemap="#map1" ismap="ismap" /> 
         </TD>
 
       </TR>
@@ -131,7 +129,7 @@
 
       <TR>
         <TD>
-            <a id="basicForm:hrefParamLink" href="#" onclick="mojarra.jsfcljs(document.getElementById('basicForm'),{'basicForm:hrefParamLink':'basicForm:hrefParamLink','name':'horwat','value':'password'},'_top');return false"><img src="duke.gif" /></a>
+            <a id="basicForm:hrefParamLink" href="#" onclick="mojarra.jsfcljs(document.getElementById('basicForm'),{'basicForm:hrefParamLink':'basicForm:hrefParamLink','name':'horwat','value':'password'},'_top');return false"><img src="duke.gif;jsessionid=45707ec485aedd976d7b06553498" /></a>
         </TD>
       </TR>
 
@@ -139,7 +137,7 @@
 
 	<TD>
 
-	      <a id="basicForm:outputLink" name="basicForm:outputLink" href="test.html" target="_blank" class="hyperlinkClass">output link text</a>
+	      <a id="basicForm:outputLink" name="basicForm:outputLink" href="test.html;jsessionid=45707ec485aedd976d7b06553498" target="_blank" class="hyperlinkClass">output link text</a>
 
 	</TD>
 
@@ -149,37 +147,37 @@
 
 	<TD>
 
-	      <a id="basicForm:output_imageLink" name="basicForm:output_imageLink" href="test.html" style="position: absolute; left: 96px; top: 168px"><img src="duke.gif" /></a>
+	      <a id="basicForm:output_imageLink" name="basicForm:output_imageLink" href="test.html;jsessionid=45707ec485aedd976d7b06553498" style="position: absolute; left: 96px; top: 168px"><img src="duke.gif;jsessionid=45707ec485aedd976d7b06553498" /></a>
 
 	</TD>
 
         <TD> 
-            <img id="basicForm:output_graphicImage" src="/test/duke.gif" usemap="#map1" ismap="ismap" /> 
+            <img id="basicForm:output_graphicImage" src="/test/duke.gif;jsessionid=45707ec485aedd976d7b06553498" usemap="#map1" ismap="ismap" /> 
         </TD>
 
       </TR>
 
       <TR>
         <TD>
-            <a id="basicForm:output_commandLink" name="basicForm:output_commandLink" href="test.html" style="position: absolute; left: 96px; top: 168px" class="hyperlinkClass">link text</a>
+            <a id="basicForm:output_commandLink" name="basicForm:output_commandLink" href="test.html;jsessionid=45707ec485aedd976d7b06553498" style="position: absolute; left: 96px; top: 168px" class="hyperlinkClass">link text</a>
        </TD>
       </TR>
 
       <TR>
         <TD>
-            <a id="basicForm:output_commandParamLink" name="basicForm:output_commandParamLink" href="test.html?name=horwat&value=password&name_2=" class="hyperlinkClass">link text</a>
+            <a id="basicForm:output_commandParamLink" name="basicForm:output_commandParamLink" href="test.html;jsessionid=45707ec485aedd976d7b06553498?name=horwat&value=password&name_2=" class="hyperlinkClass">link text</a>
         </TD>
       </TR>
 
       <TR>
         <TD>
-            <a id="basicForm:output_hrefLink" name="basicForm:output_hrefLink" href="test.html"><img src="duke.gif"></a>
+            <a id="basicForm:output_hrefLink" name="basicForm:output_hrefLink" href="test.html;jsessionid=45707ec485aedd976d7b06553498"><img src="duke.gif"></a>
         </TD>
       </TR>
 
       <TR>
         <TD>
-            <a id="basicForm:output_hrefParamLink" name="basicForm:output_hrefParamLink" href="test.html?name=horwat&value=password"><img src="duke.gif" /></a>
+            <a id="basicForm:output_hrefParamLink" name="basicForm:output_hrefParamLink" href="test.html;jsessionid=45707ec485aedd976d7b06553498?name=horwat&value=password"><img src="duke.gif;jsessionid=45707ec485aedd976d7b06553498" /></a>
         </TD>
       </TR>
 
@@ -712,26 +710,29 @@ see the <i>angle brackets</i> on this text
 
 
 </form>
-<form id="form2" name="form2" method="post" action="/test/faces/TestRenderResponsePhase.jsp" enctype="application/x-www-form-urlencoded">
+<form id="form2" name="form2" method="post" action="/test/faces/TestRenderResponsePhase.jsp;jsessionid=45707ec485aedd976d7b06553498" enctype="application/x-www-form-urlencoded">
 <input type="hidden" name="form2" value="form2" />
+<input type="hidden" name="form2:javax.faces.Token" value="21e2dfc309b7059a09fbd11855664ca8" />
 <input type="hidden" name="javax.faces.ViewState" id="javax.faces.ViewState" value="j_id1:j_id2" autocomplete="off" />
 <input type="submit" name="form2:j_id_id827" value="form2 button1" />
    <p />
   <input type="submit" name="form2:j_id_id830" value="form2 button2" /> <p />
 
 </form>
-<form id="form3" name="form3" method="post" action="/test/faces/TestRenderResponsePhase.jsp" enctype="application/x-www-form-urlencoded">
+<form id="form3" name="form3" method="post" action="/test/faces/TestRenderResponsePhase.jsp;jsessionid=45707ec485aedd976d7b06553498" enctype="application/x-www-form-urlencoded">
 <input type="hidden" name="form3" value="form3" />
+<input type="hidden" name="form3:javax.faces.Token" value="21e2dfc309b7059a09fbd11855664ca8" />
 <input type="hidden" name="javax.faces.ViewState" id="javax.faces.ViewState" value="j_id1:j_id2" autocomplete="off" />
 <input type="submit" name="form3:j_id_id836" value="form3 button1" />
    <p />
   <a href="#" onclick="mojarra.jsfcljs(document.getElementById('form3'),{'form3:j_id_id839':'form3:j_id_id839'},'');return false">form3 link1</a> <p />
 
 </form>
-<form id="form4" name="form4" method="post" action="/test/faces/TestRenderResponsePhase.jsp" enctype="application/x-www-form-urlencoded">
+<form id="form4" name="form4" method="post" action="/test/faces/TestRenderResponsePhase.jsp;jsessionid=45707ec485aedd976d7b06553498" enctype="application/x-www-form-urlencoded">
 <input type="hidden" name="form4" value="form4" />
+<input type="hidden" name="form4:javax.faces.Token" value="21e2dfc309b7059a09fbd11855664ca8" />
 <input type="hidden" name="javax.faces.ViewState" id="javax.faces.ViewState" value="j_id1:j_id2" autocomplete="off" />
-<a href="test.html">
+<a href="test.html;jsessionid=45707ec485aedd976d7b06553498">
       Link Enabled
   </a><span>
       Link Disabled
diff --git a/jsf-ri/web/test/TestCoreTagVBEnabled.jsp b/jsf-ri/web/test/TestCoreTagVBEnabled.jsp
index 5d71165..87dca6a 100644
--- a/jsf-ri/web/test/TestCoreTagVBEnabled.jsp
+++ b/jsf-ri/web/test/TestCoreTagVBEnabled.jsp
@@ -1,43 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
+
 
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
diff --git a/jsf-ri/web/test/TestLifecycleImpl_initial_correct b/jsf-ri/web/test/TestLifecycleImpl_initial_correct
index b3e815d..18d3a99 100644
--- a/jsf-ri/web/test/TestLifecycleImpl_initial_correct
+++ b/jsf-ri/web/test/TestLifecycleImpl_initial_correct
@@ -1,9 +1,6 @@
 
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
+
 
 <HTML>
     <HEAD> <title>Hello</title> </HEAD>
@@ -13,8 +10,9 @@
     <h2>Hi. My name is Duke.  I'm thinking of a number from 0 to 10.
     Can you guess it?</h2>
     
-<form id="helloForm" name="helloForm" method="post" action="/test/faces/greeting.jsp;jsessionid=4978ef01d82f915eac9b1f0c49b1" enctype="application/x-www-form-urlencoded">
+<form id="helloForm" name="helloForm" method="post" action="/test/faces/greeting.jsp;jsessionid=45cdd2e6e612cf58375affc45553" enctype="application/x-www-form-urlencoded">
 <input type="hidden" name="helloForm" value="helloForm" />
+<input type="hidden" name="helloForm:javax.faces.Token" value="e9f878425fd33d34813c292aba201e83" />
 <input type="hidden" name="javax.faces.ViewState" id="javax.faces.ViewState" value="j_id1:j_id2" autocomplete="off" />
 <input id="helloForm:userNo" type="text" name="helloForm:userNo" value="NUMBER" />
   	 <BR>
diff --git a/jsf-ri/web/test/TestRenderResponsePhase.jsp b/jsf-ri/web/test/TestRenderResponsePhase.jsp
index 599f907..06f1549 100644
--- a/jsf-ri/web/test/TestRenderResponsePhase.jsp
+++ b/jsf-ri/web/test/TestRenderResponsePhase.jsp
@@ -1,43 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
+
 
 <HTML>
     <HEAD> <TITLE> JSF Basic Components Test Page </TITLE> </HEAD>
diff --git a/jsf-ri/web/test/TestRenderersFromJsp.jsp b/jsf-ri/web/test/TestRenderersFromJsp.jsp
index b5d745c..d117c68 100644
--- a/jsf-ri/web/test/TestRenderersFromJsp.jsp
+++ b/jsf-ri/web/test/TestRenderersFromJsp.jsp
@@ -1,43 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
+
 
 <HTML>
     <HEAD> <TITLE> JSF Basic Components Test Page </TITLE> </HEAD>
diff --git a/jsf-ri/web/test/TestSaveState.jsp b/jsf-ri/web/test/TestSaveState.jsp
index e20dd56..1f97214 100644
--- a/jsf-ri/web/test/TestSaveState.jsp
+++ b/jsf-ri/web/test/TestSaveState.jsp
@@ -1,43 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
+
 
 <HTML>
     <HEAD> <TITLE> JSF Basic Components Test Page </TITLE> </HEAD>
diff --git a/jsf-ri/web/test/TestValidatorTags.jsp b/jsf-ri/web/test/TestValidatorTags.jsp
index 4d741da..b3dfae5 100644
--- a/jsf-ri/web/test/TestValidatorTags.jsp
+++ b/jsf-ri/web/test/TestValidatorTags.jsp
@@ -1,43 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
+
 
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
diff --git a/jsf-ri/web/test/TestViewHandlerImpl_correct b/jsf-ri/web/test/TestViewHandlerImpl_correct
index 581e7a5..6dcc738 100644
--- a/jsf-ri/web/test/TestViewHandlerImpl_correct
+++ b/jsf-ri/web/test/TestViewHandlerImpl_correct
@@ -1,9 +1,6 @@
 
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
+
 
 <HTML>
     <HEAD> <title>Hello</title> </HEAD>
@@ -13,8 +10,9 @@
     <h2>Hi. My name is Duke.  I'm thinking of a number from 0 to 10.
     Can you guess it?</h2>
     
-<form id="helloForm" name="helloForm" method="post" action="/test/faces/greeting.jsp;jsessionid=4951f037ca7e00e9e210e7a846e7" enctype="application/x-www-form-urlencoded">
+<form id="helloForm" name="helloForm" method="post" action="/test/faces/greeting.jsp;jsessionid=4509bdf1499e8126e1de0a127e40" enctype="application/x-www-form-urlencoded">
 <input type="hidden" name="helloForm" value="helloForm" />
+<input type="hidden" name="helloForm:javax.faces.Token" value="75f135210eaa3ee88466008edc114306" />
 <input type="hidden" name="javax.faces.ViewState" id="javax.faces.ViewState" value="j_id1:j_id2" autocomplete="off" />
 <input id="helloForm:userNo" type="text" name="helloForm:userNo" value="NUMBER" />
   	 <BR>
diff --git a/jsf-ri/web/test/TestViewTag.jsp b/jsf-ri/web/test/TestViewTag.jsp
index a9e4c3d..9b248f4 100644
--- a/jsf-ri/web/test/TestViewTag.jsp
+++ b/jsf-ri/web/test/TestViewTag.jsp
@@ -1,43 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
+
 
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
@@ -72,7 +75,7 @@
     <address><a href="mailto:Ed Burns <ed.burns at sun.com>"></a></address>
 <!-- Created: Wed Oct 15 17:31:05 Eastern Daylight Time 2003 -->
 <!-- hhmts start -->
-Last modified: Sun Oct 19 10:33:56 EDT 2003
+Last modified: Tue Oct  5 01:46:04 EDT 2010
 <!-- hhmts end -->
   </body>
 </html>
diff --git a/jsf-ri/web/test/TestViewTag2.jsp b/jsf-ri/web/test/TestViewTag2.jsp
index c1afbe1..8582477 100644
--- a/jsf-ri/web/test/TestViewTag2.jsp
+++ b/jsf-ri/web/test/TestViewTag2.jsp
@@ -1,43 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
+
 
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
@@ -60,7 +63,7 @@
     <address><a href="mailto:Ed Burns <ed.burns at sun.com>"></a></address>
 <!-- Created: Wed Oct 15 17:31:05 Eastern Daylight Time 2003 -->
 <!-- hhmts start -->
-Last modified: Sun Oct 19 10:33:56 EDT 2003
+Last modified: Tue Oct  5 01:46:05 EDT 2010
 <!-- hhmts end -->
   </body>
 </html>
diff --git a/jsf-ri/web/test/WEB-INF/config-lists-and-maps.xml b/jsf-ri/web/test/WEB-INF/config-lists-and-maps.xml
index 6e51a90..ef460f0 100644
--- a/jsf-ri/web/test/WEB-INF/config-lists-and-maps.xml
+++ b/jsf-ri/web/test/WEB-INF/config-lists-and-maps.xml
@@ -1,39 +1,44 @@
 <?xml version='1.0' encoding='UTF-8'?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
 
 <faces-config xmlns="http://java.sun.com/xml/ns/javaee"
@@ -130,5 +135,34 @@
     </map-entries>
   </managed-bean>
 
+<managed-bean>
+    <managed-bean-name>headAndFoot</managed-bean-name>
+    <managed-bean-class>java.util.TreeMap</managed-bean-class>
+    <managed-bean-scope>none</managed-bean-scope>
+    <map-entries>
+        <value-class>java.util.TreeMap</value-class>
+        <map-entry>
+            <key>banners</key>
+            <value>#{banners}</value>
+        </map-entry>
+    </map-entries>
+</managed-bean>
+
+<managed-bean>
+    <managed-bean-name>banners</managed-bean-name>
+    <managed-bean-class>java.util.TreeMap</managed-bean-class>
+    <managed-bean-scope>none</managed-bean-scope>
+    <map-entries>
+        <map-entry>
+            <key>headerUrl</key>
+            <value>http://foo.utah.edu</value>
+        </map-entry>
+        <map-entry>
+            <key>urlName</key>
+            <value>Request For Change</value>
+        </map-entry>
+    </map-entries>
+</managed-bean>
+
 
 </faces-config>
diff --git a/jsf-ri/web/test/WEB-INF/embed-config.xml b/jsf-ri/web/test/WEB-INF/embed-config.xml
index b533432..8ad0036 100644
--- a/jsf-ri/web/test/WEB-INF/embed-config.xml
+++ b/jsf-ri/web/test/WEB-INF/embed-config.xml
@@ -1,39 +1,44 @@
 <?xml version="1.0"?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
 
 <!--
diff --git a/jsf-ri/web/test/WEB-INF/extra-config.xml b/jsf-ri/web/test/WEB-INF/extra-config.xml
index ed4ebec..7f6e442 100644
--- a/jsf-ri/web/test/WEB-INF/extra-config.xml
+++ b/jsf-ri/web/test/WEB-INF/extra-config.xml
@@ -1,39 +1,44 @@
 <?xml version="1.0"?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
 
 <!--
diff --git a/jsf-ri/web/test/WEB-INF/faces-config-1.0.xml b/jsf-ri/web/test/WEB-INF/faces-config-1.0.xml
index ae8deb4..687bc4a 100644
--- a/jsf-ri/web/test/WEB-INF/faces-config-1.0.xml
+++ b/jsf-ri/web/test/WEB-INF/faces-config-1.0.xml
@@ -1,39 +1,44 @@
 <?xml version='1.0' encoding='UTF-8'?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
 
 <!DOCTYPE faces-config PUBLIC
diff --git a/jsf-ri/web/test/WEB-INF/faces-config-empty.xml b/jsf-ri/web/test/WEB-INF/faces-config-empty.xml
index 236ed21..b6befaf 100644
--- a/jsf-ri/web/test/WEB-INF/faces-config-empty.xml
+++ b/jsf-ri/web/test/WEB-INF/faces-config-empty.xml
@@ -1,41 +1,45 @@
 <?xml version='1.0' encoding='UTF-8'?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
--->
 
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
 
 <!-- ========== EMPTY CONFIGURATION FILE ================================== -->
 
diff --git a/jsf-ri/web/test/WEB-INF/faces-config.xml b/jsf-ri/web/test/WEB-INF/faces-config.xml
index 6976a89..8243e68 100644
--- a/jsf-ri/web/test/WEB-INF/faces-config.xml
+++ b/jsf-ri/web/test/WEB-INF/faces-config.xml
@@ -1,39 +1,44 @@
 <?xml version='1.0' encoding='UTF-8'?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
 
 <faces-config xmlns="http://java.sun.com/xml/ns/javaee"
diff --git a/jsf-ri/web/test/WEB-INF/faces-navigation-2.xml b/jsf-ri/web/test/WEB-INF/faces-navigation-2.xml
index ce12e5f..c09f084 100644
--- a/jsf-ri/web/test/WEB-INF/faces-navigation-2.xml
+++ b/jsf-ri/web/test/WEB-INF/faces-navigation-2.xml
@@ -1,39 +1,44 @@
 <?xml version='1.0' encoding='UTF-8'?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
 
 <faces-config xmlns="http://java.sun.com/xml/ns/javaee"
diff --git a/jsf-ri/web/test/WEB-INF/faces-navigation.xml b/jsf-ri/web/test/WEB-INF/faces-navigation.xml
index 94cf71d..3821111 100644
--- a/jsf-ri/web/test/WEB-INF/faces-navigation.xml
+++ b/jsf-ri/web/test/WEB-INF/faces-navigation.xml
@@ -1,41 +1,45 @@
 <?xml version='1.0' encoding='UTF-8'?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
--->
 
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
 
 <faces-config xmlns="http://java.sun.com/xml/ns/javaee"
               xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
diff --git a/jsf-ri/web/test/WEB-INF/navigation-cases-2.xml b/jsf-ri/web/test/WEB-INF/navigation-cases-2.xml
index a78478b..6f46a37 100644
--- a/jsf-ri/web/test/WEB-INF/navigation-cases-2.xml
+++ b/jsf-ri/web/test/WEB-INF/navigation-cases-2.xml
@@ -1,41 +1,45 @@
 <?xml version='1.0' encoding='UTF-8'?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
--->
 
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
 
 <!--
      This document contains test scenarios for the implementation
diff --git a/jsf-ri/web/test/WEB-INF/navigation-cases.xml b/jsf-ri/web/test/WEB-INF/navigation-cases.xml
index c212ec4..0c11dc1 100644
--- a/jsf-ri/web/test/WEB-INF/navigation-cases.xml
+++ b/jsf-ri/web/test/WEB-INF/navigation-cases.xml
@@ -1,41 +1,45 @@
 <?xml version='1.0' encoding='UTF-8'?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
--->
 
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
 
 <!--
      This document contains test scenarios for the implementation
diff --git a/jsf-ri/web/test/WEB-INF/none-scoped-beans.xml b/jsf-ri/web/test/WEB-INF/none-scoped-beans.xml
index 50baa0c..7c65aaf 100644
--- a/jsf-ri/web/test/WEB-INF/none-scoped-beans.xml
+++ b/jsf-ri/web/test/WEB-INF/none-scoped-beans.xml
@@ -1,41 +1,45 @@
 <?xml version='1.0' encoding='UTF-8'?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
--->
 
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
 
 <faces-config xmlns="http://java.sun.com/xml/ns/javaee"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
diff --git a/jsf-ri/web/test/WEB-INF/renderkit1.xml b/jsf-ri/web/test/WEB-INF/renderkit1.xml
index 452b45a..f1fb1e0 100644
--- a/jsf-ri/web/test/WEB-INF/renderkit1.xml
+++ b/jsf-ri/web/test/WEB-INF/renderkit1.xml
@@ -1,39 +1,44 @@
 <?xml version='1.0' encoding='UTF-8'?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
 
 <faces-config xmlns="http://java.sun.com/xml/ns/javaee"
diff --git a/jsf-ri/web/test/WEB-INF/webinfAbsolute1.xml b/jsf-ri/web/test/WEB-INF/webinfAbsolute1.xml
index 5f7a08b..1663b02 100644
--- a/jsf-ri/web/test/WEB-INF/webinfAbsolute1.xml
+++ b/jsf-ri/web/test/WEB-INF/webinfAbsolute1.xml
@@ -1,39 +1,44 @@
 <?xml version='1.0' encoding='UTF-8'?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
 
 <faces-config xmlns="http://java.sun.com/xml/ns/javaee"
@@ -46,4 +51,4 @@
         <name>b</name>
         <name>c</name>
     </absolute-ordering>
-</faces-config>
\ No newline at end of file
+</faces-config>
diff --git a/jsf-ri/web/test/WEB-INF/webinfAbsolute2.xml b/jsf-ri/web/test/WEB-INF/webinfAbsolute2.xml
index 46c0bf9..181c287 100644
--- a/jsf-ri/web/test/WEB-INF/webinfAbsolute2.xml
+++ b/jsf-ri/web/test/WEB-INF/webinfAbsolute2.xml
@@ -1,39 +1,44 @@
 <?xml version='1.0' encoding='UTF-8'?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
 
 <faces-config xmlns="http://java.sun.com/xml/ns/javaee"
@@ -47,4 +52,4 @@
         <others/>
         <name>c</name>
     </absolute-ordering>
-</faces-config>
\ No newline at end of file
+</faces-config>
diff --git a/jsf-ri/web/test/WEB-INF/webinfAbsolute3.xml b/jsf-ri/web/test/WEB-INF/webinfAbsolute3.xml
index 3f1e7bf..ebfa12d 100644
--- a/jsf-ri/web/test/WEB-INF/webinfAbsolute3.xml
+++ b/jsf-ri/web/test/WEB-INF/webinfAbsolute3.xml
@@ -1,39 +1,44 @@
 <?xml version='1.0' encoding='UTF-8'?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
 
 <faces-config xmlns="http://java.sun.com/xml/ns/javaee"
@@ -41,4 +46,4 @@
     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd"
     version="1.2">
 
-</faces-config>
\ No newline at end of file
+</faces-config>
diff --git a/jsf-ri/web/test/components.jsp b/jsf-ri/web/test/components.jsp
index 84f5c7f..7ac4a4d 100644
--- a/jsf-ri/web/test/components.jsp
+++ b/jsf-ri/web/test/components.jsp
@@ -1,43 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
+
 
 <HTML>
     <HEAD> <TITLE> JSF Basic Components Test Page </TITLE> </HEAD>
diff --git a/jsf-ri/web/test/config-with-failing-property-conversion.xml b/jsf-ri/web/test/config-with-failing-property-conversion.xml
index 3154398..2ac2d2a 100644
--- a/jsf-ri/web/test/config-with-failing-property-conversion.xml
+++ b/jsf-ri/web/test/config-with-failing-property-conversion.xml
@@ -1,39 +1,44 @@
 <?xml version='1.0' encoding='UTF-8'?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
 
 <faces-config xmlns="http://java.sun.com/xml/ns/javaee"
diff --git a/jsf-ri/web/test/config1.xml b/jsf-ri/web/test/config1.xml
index 482d995..d7f638e 100644
--- a/jsf-ri/web/test/config1.xml
+++ b/jsf-ri/web/test/config1.xml
@@ -1,39 +1,44 @@
 <?xml version='1.0' encoding='UTF-8'?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
 
 <faces-config xmlns="http://java.sun.com/xml/ns/javaee"
diff --git a/jsf-ri/web/test/config2.xml b/jsf-ri/web/test/config2.xml
index 3e40459..196b174 100644
--- a/jsf-ri/web/test/config2.xml
+++ b/jsf-ri/web/test/config2.xml
@@ -1,39 +1,44 @@
 <?xml version='1.0' encoding='UTF-8'?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
 
 <faces-config xmlns="http://java.sun.com/xml/ns/javaee"
diff --git a/jsf-ri/web/test/greeting.jsp b/jsf-ri/web/test/greeting.jsp
index fca90ed..ef67f60 100644
--- a/jsf-ri/web/test/greeting.jsp
+++ b/jsf-ri/web/test/greeting.jsp
@@ -1,43 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
+
 
 <HTML>
     <HEAD> <title>Hello</title> </HEAD>
diff --git a/jsf-ri/web/test/locale-config.xml b/jsf-ri/web/test/locale-config.xml
index 619a9b6..563ca5b 100644
--- a/jsf-ri/web/test/locale-config.xml
+++ b/jsf-ri/web/test/locale-config.xml
@@ -1,39 +1,44 @@
 <?xml version='1.0' encoding='UTF-8'?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
 
 <faces-config xmlns="http://java.sun.com/xml/ns/javaee"
diff --git a/jsf-ri/web/test/locale-config1.xml b/jsf-ri/web/test/locale-config1.xml
index fb042e5..cc96543 100644
--- a/jsf-ri/web/test/locale-config1.xml
+++ b/jsf-ri/web/test/locale-config1.xml
@@ -1,39 +1,44 @@
 <?xml version='1.0' encoding='UTF-8'?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
 
 <faces-config xmlns="http://java.sun.com/xml/ns/javaee"
diff --git a/jsf-ri/web/test/locale-config2.xml b/jsf-ri/web/test/locale-config2.xml
index 8ae93cc..8b23b92 100644
--- a/jsf-ri/web/test/locale-config2.xml
+++ b/jsf-ri/web/test/locale-config2.xml
@@ -1,39 +1,44 @@
 <?xml version='1.0' encoding='UTF-8'?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
 
 <faces-config xmlns="http://java.sun.com/xml/ns/javaee"
diff --git a/jsf-ri/web/test/parserTests.txt b/jsf-ri/web/test/parserTests.txt
index 4118529..9d3eece 100644
--- a/jsf-ri/web/test/parserTests.txt
+++ b/jsf-ri/web/test/parserTests.txt
@@ -1,3 +1,43 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
 # Note! The parser is a modified JSP 2.0 parser that uses the JSP
 # delimiters rather than the JSF delimiters. 
 #
diff --git a/jsf-ri/web/test/parserTestsOutput.txt b/jsf-ri/web/test/parserTestsOutput.txt
index a064eea..7bd5e7b 100644
--- a/jsf-ri/web/test/parserTestsOutput.txt
+++ b/jsf-ri/web/test/parserTestsOutput.txt
@@ -1,3 +1,43 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
 # Note! The parser is a modified JSP 2.0 parser that uses the JSP
 # delimiters rather than the JSF delimiters. 
 #
diff --git a/jsf-ri/web/test/resources/nvLibrary/images/duke-nv.gif b/jsf-ri/web/test/root-duke.gif
similarity index 100%
copy from jsf-ri/web/test/resources/nvLibrary/images/duke-nv.gif
copy to jsf-ri/web/test/root-duke.gif
diff --git a/jsf-ri/web/test/resources/nvLibrary/images/duke-nv.gif b/jsf-ri/web/test/rootLibrary/rootLibrary-duke.gif
similarity index 100%
copy from jsf-ri/web/test/resources/nvLibrary/images/duke-nv.gif
copy to jsf-ri/web/test/rootLibrary/rootLibrary-duke.gif
diff --git a/jsf-ri/web/test/runtime-components.xml b/jsf-ri/web/test/runtime-components.xml
index 1d5b2ea..9baaf00 100644
--- a/jsf-ri/web/test/runtime-components.xml
+++ b/jsf-ri/web/test/runtime-components.xml
@@ -1,39 +1,44 @@
 <?xml version='1.0' encoding='UTF-8'?>
-
 <!--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
 
 <faces-config xmlns="http://java.sun.com/xml/ns/javaee"
diff --git a/jsf-ri/web/test/test.xhtml b/jsf-ri/web/test/test.xhtml
index 0f09db4..22a5f62 100644
--- a/jsf-ri/web/test/test.xhtml
+++ b/jsf-ri/web/test/test.xhtml
@@ -1,41 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
- Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
-
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
-
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
-
- Contributor(s):
-
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
 
 -->
+
 <!DOCTYPE html
       PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
@@ -46,4 +51,4 @@
 <body>
 
 </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/jsf-ri/web/test/testWhile.jsp b/jsf-ri/web/test/testWhile.jsp
index 91d0ddc..7bb68ac 100644
--- a/jsf-ri/web/test/testWhile.jsp
+++ b/jsf-ri/web/test/testWhile.jsp
@@ -1,43 +1,46 @@
 <%--
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- 
- Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- 
- The contents of this file are subject to the terms of either the GNU
- General Public License Version 2 only ("GPL") or the Common Development
- and Distribution License("CDDL") (collectively, the "License").  You
- may not use this file except in compliance with the License. You can obtain
- a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- language governing permissions and limitations under the License.
- 
- When distributing the software, include this License Header Notice in each
- file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- Sun designates this particular file as subject to the "Classpath" exception
- as provided by Sun in the GPL Version 2 section of the License file that
- accompanied this code.  If applicable, add the following below the License
- Header, with the fields enclosed by brackets [] replaced by your own
- identifying information: "Portions Copyrighted [year]
- [name of copyright owner]"
- 
- Contributor(s):
- 
- If you wish your version of this file to be governed by only the CDDL or
- only the GPL Version 2, indicate your decision by adding "[Contributor]
- elects to include this software in this distribution under the [CDDL or GPL
- Version 2] license."  If you don't indicate a single choice of license, a
- recipient has the option to distribute your version of this file under
- either the CDDL, the GPL Version 2 or to extend the choice of license to
- its licensees as provided above.  However, if you add GPL Version 2 code
- and therefore, elected the GPL Version 2 license, then the option applies
- only if the new code is made subject to such option by the copyright
- holder.
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 --%>
 
-<!--
- Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
--->
+
 
 <HTML>
     <HEAD> <TITLE> JSF Basic Components Test Page </TITLE> </HEAD>
diff --git a/jsf-spi/called-from-mvn-build.xml b/jsf-spi/called-from-mvn-build.xml
new file mode 100644
index 0000000..d2f473e
--- /dev/null
+++ b/jsf-spi/called-from-mvn-build.xml
@@ -0,0 +1,166 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!--
+  =======================================================================
+    JSF-API build file
+  =======================================================================
+-->
+<project name="jsf-spi" default="main" basedir=".">
+    <property file="${user.home}/build.properties"/>
+    <property file="../build.properties"/>
+    <import file="${jsf.build.home}/common/ant/common.xml"/>
+
+    <property name="src.dir" 
+              value="${impl.dir}/src/main/java" />
+    <property name="classes.dir" 
+              value="${basedir}/target/classes" />
+    <property name="build.lib.dir" value="${basedir}/target" />
+
+    <target name="main">
+      <echo>This build file is called by mvn.  Do not invoke it manually.</echo>
+      <fail />
+    </target>
+
+    <target name="strip.spi.classes" 
+            depends="get.spi.java.packages.as.space.separated.string">
+        <property name="jsf-spi-intermediate.jar" 
+                  value="${build.lib.dir}/jsf-spi-intermediate.jar" />
+
+        <!-- path maintenance -->
+        <delete failonerror="false" file="${jsf-spi-intermediate.jar}" />
+        <delete failonerror="false" dir="${build.lib.dir}/jsf-spi-stripped" />
+        <mkdir dir="${build.lib.dir}/jsf-spi-stripped" />
+
+        <jar destfile="${jsf-spi-intermediate.jar}"
+             basedir="${classes.dir}" />
+
+        <!-- windows or unix java exec invocation -->
+        <condition property="exec.name" value="cmd.exe">
+            <os family="windows"/>
+        </condition>
+        <condition property="exec.name" value="${java.home}/bin/javac">
+            <available file="${java.home}/bin/javac"/>
+        </condition>
+        <condition property="exec.name" value="${java.home}/../bin/javac">
+            <available file="${java.home}/../bin/javac"/>
+        </condition>
+        <condition property="exec.arg.1"
+                   value="/c ${java.home}/../bin/javac">
+            <os family="windows"/>
+        </condition>
+        <property name="exec.name" value="${java.home}/bin/javac"/>
+        <property name="exec.arg.1" value=""/>
+        <condition property="exec.arg.cp"
+                 value="${jsf-spi-intermediate.jar};${jsf-tools.jar}">
+          <os family="windows"/>
+        </condition>
+        <property name="exec.arg.cp" value="${jsf-spi-intermediate.jar}:${jsf-tools.jar}"/>
+    	<echo>tools path:  ${jsf-spi-intermediate.jar}:${jsf-tools.jar}</echo>
+        <!-- invoke the javac processor to produce stripped .class files -->
+        <delete dir="${classes.dir}">
+          <include name="**/*.class" />
+        </delete>
+        <exec executable="${exec.name}" failonerror="true">
+            <arg line="${exec.arg.1}"/>
+            <arg line="-XDprocess.packages"/>
+            <arg line="-proc:only"/>
+            <arg line="-cp ${exec.arg.cp}"/>
+            <arg line="-processor com.sun.faces.tools.StripClassesForApiJar"/>
+            <arg line="-Acom.sun.tools.javac.sym.Jar=${jsf-spi-intermediate.jar}"/>
+            <arg line="-Acom.sun.tools.javac.sym.ExtraApiClassPath=${javaee-api.jar}"/>
+            <arg line="-Acom.sun.tools.javac.sym.Dest=${classes.dir}"/>
+            <arg line="${src.paths}"/>
+        </exec>
+        <unjar src="${jsf-spi-intermediate.jar}"
+               dest="${classes.dir}">
+          <patternset>
+            <include name="META-INF/MANIFEST.MF" />
+          </patternset>
+        </unjar>
+
+    </target>
+
+    <target name="get.spi.java.packages.as.space.separated.string"
+            description="Traverse ${src.dir} and extract the directory names into a property ${src.paths} as a space separated list of java packages">
+      <!-- Suck the dirs into a path-like structure. -->
+      <path id="src.dir.path">
+        <dirset dir="${src.dir}">
+                      <include name="com/sun/faces/spi/**" />
+        </dirset>
+      </path>
+      <!-- Suck the path-like structure into a property. -->
+      <property name="src.dir.paths" refid="src.dir.path" />
+
+      <!-- Massage the property value to make it be as desired. -->
+
+      <!-- Remove the leading fully qualified paths. -->
+      <!-- windows: Replace all \ with /  -->
+      <propertyregex property="src.dir.paths" input="${src.dir.paths}" override="true"
+                     regexp="\\" replace="/" global="true" />
+      <!-- windows: Replace all \ with /  -->
+      <propertyregex property="src.dir" input="${src.dir}" override="true"
+                     regexp="\\" replace="/" global="true" />
+    	
+      <!-- Remove the leading source dir path from every path entry. -->
+      <propertyregex property="src.paths" input="${src.dir.paths}" override="true"
+                     regexp="${src.dir}" replace="" global="true" />
+      <!-- Remove the leading "/" from every path entry. -->
+      <propertyregex property="src.paths" input="${src.paths}" override="true"
+                     regexp="/com" 
+                     replace="com" global="true" />
+      <!-- Remove the com entry.  It is not a java package. -->
+      <propertyregex property="src.paths" input="${src.paths}" override="true"
+                     regexp="${path.separator}com${path.separator}" 
+                     replace="" global="true" />
+      <!-- Replace ':' with ' ' (or ';' with ' ' on windows). -->
+      <propertyregex property="src.paths" input="${src.paths}" override="true"
+                     regexp="${path.separator}" 
+                     replace=" " global="true" />
+      <!-- Replace '/' with '.'. -->
+      <propertyregex property="src.paths" input="${src.paths}" override="true"
+                     regexp="/" 
+                     replace="." global="true" />
+    </target>
+
+</project>
diff --git a/jsf-spi/pom.xml b/jsf-spi/pom.xml
new file mode 100644
index 0000000..a7bf4a8
--- /dev/null
+++ b/jsf-spi/pom.xml
@@ -0,0 +1,297 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project>
+    <modelVersion>4.0.0</modelVersion>
+    <groupId>com.sun.faces</groupId>
+    <artifactId>jsf-spi</artifactId>
+    <version>1.0-SNAPSHOT</version>
+    <packaging>jar</packaging>
+    <name>
+        Public API declaration for the Mojarra container Service Provider Interface
+    </name>
+    <description>
+        This API declares some contracts for connecting Mojarra to its host container.
+        mvn -Prelease-sign-artifacts -Dgpg.passphrase=PASSPHRASE deploy
+    </description>
+    <url>http://jsf.java.net/</url>
+    <licenses>
+        <license>
+            <name>
+                COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) plus GPL
+            </name>
+            <url>http://glassfish.java.net/nonav/public/CDDL+GPL.html</url>
+            <distribution>repo</distribution>
+        </license>
+    </licenses>
+    <scm>
+        <url>http://java.net/projects/mojarra/sources</url>
+        <connection>scm:svn:https://svn.java.net/svn/mojarra~svn/trunk</connection>
+    </scm>
+    <developers>
+        <developer>
+            <id>edburns</id>
+            <name>Ed Burns</name>
+            <email>edward.burns at oracle.com</email>
+            <organization>Oracle America, Inc.</organization>
+            <roles>
+                <role>project-owner</role>
+            </roles>
+            <timezone>-6</timezone>
+        </developer>
+        <developer>
+            <id>rogerk</id>
+            <name>Roger Kitain</name>
+            <email>roger.kitain at oracle.com</email>
+            <organization>Oracle America, Inc.</organization>
+            <roles>
+                <role>project-owner</role>
+            </roles>
+            <timezone>-6</timezone>
+        </developer>
+    </developers>
+    <distributionManagement>
+      <snapshotRepository>
+        <id>jvnet-nexus-snapshots</id>
+        <name>Java.net Nexus Snapshots Repository</name>
+        <url>https://maven.java.net/content/repositories/snapshots/</url>
+      </snapshotRepository>
+      <repository>
+        <id>jvnet-nexus-staging</id>
+        <name>Java.net Nexus Staging Repository</name>
+        <url>https://maven.java.net/service/local/staging/deploy/maven2/</url>
+      </repository>
+    </distributionManagement>
+    <build>
+        <defaultGoal>install</defaultGoal>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                    <source>1.6</source>
+                    <target>1.6</target>
+                    <includes>
+                        <include>**/InjectionProvider.java</include>
+                        <include>**/InjectionProviderException.java</include>
+                        <include>**/InjectionProviderFactory.java</include>
+                        <include>com/sun/faces/spi/AnnotationScanner.java</include>
+                    </includes>
+                </configuration>
+            </plugin>
+            <plugin>
+              <groupId>org.apache.maven.plugins</groupId>
+              <artifactId>maven-antrun-plugin</artifactId>
+              <version>1.6</version>
+              <executions>
+               <execution>
+                 <id>execution1</id>
+                 <phase>process-classes</phase>
+                 <configuration>
+                   <tasks>
+                      <ant dir="." antfile="called-from-mvn-build.xml" 
+                                   target="strip.spi.classes"/>
+                   </tasks>
+                 </configuration>
+                 <goals>
+                   <goal>run</goal>
+                 </goals>  
+               </execution>
+              </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-deploy-plugin</artifactId>
+                <configuration>
+                  <updateReleaseInfo>true</updateReleaseInfo>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-source-plugin</artifactId>
+                <version>2.1</version>
+                <executions>
+                    <execution>
+                        <id>attach-sources</id>
+                        <phase>verify</phase>
+                        <goals>
+                            <goal>jar-no-fork</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+        <sourceDirectory>${project.basedir}/../jsf-ri/src/main/java</sourceDirectory>
+
+    </build>
+
+    <issueManagement>
+        <system>issueZilla</system>
+        <url>
+            https://javaserverfaces.dev.java.net/servlets/ProjectIssues
+        </url>
+    </issueManagement>
+    <mailingLists>
+        <mailingList>
+            <name>JSF 2.2 Specification Comments</name>
+            <post>jsr-314-comments at jcp.org</post>
+        </mailingList>
+        <mailingList>
+            <name>Mojarra Implementation Dev List</name>
+            <post>dev at javaserverfaces.dev.java.net</post>
+            <archive>
+                https://javaserverfaces.dev.java.net/servlets/SummarizeList?listName=dev
+            </archive>
+        </mailingList>
+    </mailingLists>
+    <contributors>
+        <contributor>
+            <name>Craig McClanahan</name>
+        </contributor>
+        <contributor>
+            <name>Deepak Gothe</name>
+        </contributor>
+        <contributor>
+            <name>Gregory Murray</name>
+        </contributor>
+        <contributor>
+            <name>Justyna Horwat</name>
+        </contributor>
+        <contributor>
+            <name>Jayashri Visvanathan</name>
+        </contributor>
+        <contributor>
+            <name>Jennifer Ball</name>
+        </contributor>
+        <contributor>
+            <name>Jacob Hookom</name>
+        </contributor>
+        <contributor>
+            <name>Raj Premkumar</name>
+        </contributor>
+        <contributor>
+            <name>Stan Silvert</name>
+        </contributor>
+        <contributor>
+            <name>Mike Youngstrom</name>
+        </contributor>
+        <contributor>
+            <name>Jason Lee</name>
+        </contributor>
+    </contributors>
+    <organization>
+        <name>Oracle America, Inc</name>
+        <url>http://www.oracle.com/</url>
+    </organization>
+    <dependencies>
+      <dependency>
+        <groupId>org.glassfish</groupId>
+        <artifactId>javax.faces</artifactId>
+        <version>2.1.3</version>
+        <scope>provided</scope>
+      </dependency>
+      <dependency>
+        <groupId>javax</groupId>
+        <artifactId>javaee-api</artifactId>
+        <version>6.0</version>
+        <scope>provided</scope>
+      </dependency>
+    </dependencies>
+    <profiles>
+      <profile>
+        <id>release-sign-artifacts</id>
+        <build>
+          <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                    <source>1.5</source>
+                    <target>1.5</target>
+                    <excludes>
+                        <exclude>**/*.*</exclude>
+                    </excludes>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-source-plugin</artifactId>
+                <version>2.1</version>
+                <executions>
+                    <execution>
+                        <id>attach-sources</id>
+                        <phase>verify</phase>
+                        <goals>
+                            <goal>jar-no-fork</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-jar-plugin</artifactId>
+                <configuration>
+                    <archive>
+                        <manifestFile>target/classes/META-INF/MANIFEST.MF</manifestFile>
+                    </archive>
+                </configuration>
+            </plugin>            <plugin>
+              <groupId>org.apache.maven.plugins</groupId>
+              <artifactId>maven-gpg-plugin</artifactId>
+              <version>1.3</version>
+              <executions>
+                <execution>
+                  <id>sign-artifacts</id>
+                  <phase>verify</phase>
+                  <goals>
+                    <goal>sign</goal>
+                  </goals>
+                </execution>
+              </executions>
+            </plugin>
+          </plugins>
+        </build>
+      </profile>
+    </profiles>
+
+</project>
diff --git a/jsf-test/GLASSFISH-11636/build.xml b/jsf-test/GLASSFISH-11636/build.xml
new file mode 100644
index 0000000..aa6d8ba
--- /dev/null
+++ b/jsf-test/GLASSFISH-11636/build.xml
@@ -0,0 +1,120 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!-- ************ JSF build file ************************************** -->
+
+<project name="GLASSFISH-11636" default="test" basedir=".">
+
+    <property file="../../build.properties"/>
+    <import file="${jsf.build.home}/common/ant/common.xml"/>
+    <import file="${jsf.build.home}/common/ant/test-app.xml"/>   
+
+    <path id="11636.classpath">  
+        <path refid="html.classpath" />
+        <pathelement location="${basedir}/i_gf_11636_htmlunit/target/classes"/>
+    </path>
+
+
+
+    <target name="build">
+
+      <jsf.mvn dir="${basedir}/maven-module-that-makes-jar-for-WEB-INF-lib" goals="install" />
+      <jsf.mvn dir="${basedir}/maven-module-that-makes-wab" goals="install" />
+
+      <jsf.mvn dir="${basedir}/i_gf_11636_htmlunit" goals="install" />
+
+
+    </target>    
+
+    <target name="clean">
+
+      <jsf.mvn dir="${basedir}/maven-module-that-makes-jar-for-WEB-INF-lib" goals="clean" />
+      <jsf.mvn dir="${basedir}/maven-module-that-makes-wab" goals="clean" />
+
+      <jsf.mvn dir="${basedir}/i_gf_11636_htmlunit" goals="clean" />
+
+    </target>    
+
+    <target name="install">
+      <if>
+        <not>
+          <isset property="skip.init.osgi" />
+        </not>
+        <then>
+          <sequential>
+            <antcall target="container.init.osgi" />
+            <antcall target="container.start" />
+          </sequential>
+        </then>
+      </if>
+
+      <deploy.artifact
+              artifact="${basedir}/maven-module-that-makes-wab/target/jsf-wab-test.war"
+              appName="jsf-wab-test" osgi="true"/>
+
+    </target>    
+
+    <target name="remove">
+
+      <undeploy.artifact
+              artifact="${basedir}/maven-module-that-makes-wab/target/jsf-wab-test.war"
+              appName="jsf-wab-test"/>
+
+    </target>    
+
+    <target name="test" depends="define.scenario.aware.port">
+
+          <jsf.junit context-path="/jsf-wab-test"
+                   classpath-refid="11636.classpath"    
+                   test-results-dir="${regression.test.results.dir}">
+              <tests>
+                  <fileset dir="${basedir}/i_gf_11636_htmlunit/target/classes"
+                       includes="**/*TestCase.class"/> 
+              </tests>
+          </jsf.junit>
+
+    </target>    
+
+
+        
+</project>
diff --git a/jsf-test/GLASSFISH-11636/i_gf_11636_htmlunit/pom.xml b/jsf-test/GLASSFISH-11636/i_gf_11636_htmlunit/pom.xml
new file mode 100644
index 0000000..3e37ebe
--- /dev/null
+++ b/jsf-test/GLASSFISH-11636/i_gf_11636_htmlunit/pom.xml
@@ -0,0 +1,107 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+   <modelVersion>4.0.0</modelVersion>
+   <groupId>com.sun.faces</groupId>
+   <artifactId>i_gf_11636_htmlunit</artifactId>
+   <packaging>jar</packaging>
+   <name>i_gf_11636_htmlunit</name>
+   <version>1.0-SNAPSHOT</version>
+
+   <dependencies>
+
+      <dependency>
+	<artifactId>htmlunit</artifactId>
+	<groupId>net.sourceforge.htmlunit</groupId>
+	<version>2.4</version>
+         <scope>provided</scope>
+      </dependency>
+      <dependency>
+         <groupId>junit</groupId>
+         <artifactId>junit</artifactId>
+         <version>3.8.1</version>
+         <scope>provided</scope>
+      </dependency>
+      <dependency>
+	<groupId>com.sun.faces</groupId>
+	<artifactId>jsf-extensions-test-time</artifactId>
+	<version>2.2</version>
+	<scope>compile</scope>
+      </dependency>
+
+   </dependencies>
+
+   <build>
+      <plugins>
+         <plugin>
+            <groupId>org.apache.maven.plugins</groupId>
+            <artifactId>maven-compiler-plugin</artifactId>
+            <version>2.0.2</version>
+            <configuration>
+               <source>1.6</source>
+               <target>1.6</target>
+            </configuration>
+         </plugin>
+      </plugins>
+      <finalName>i_gf_11636_htmlunit</finalName>
+   </build>
+
+   <repositories>
+        <repository>
+          <id>java.net.snapshots</id>
+          <name>java.net SNAPSHOTS</name>
+          <releases>
+            <enabled>false</enabled>
+            <updatePolicy>always</updatePolicy>
+            <checksumPolicy>warn</checksumPolicy>
+          </releases>
+          <snapshots>
+            <enabled>true</enabled>
+            <updatePolicy>always</updatePolicy>
+            <checksumPolicy>warn</checksumPolicy>
+          </snapshots>
+          <url>https://maven.java.net/content/repositories/snapshots</url>
+          <layout>default</layout>
+        </repository>
+   </repositories>
+
+</project>
diff --git a/jsf-test/GLASSFISH-11636/i_gf_11636_htmlunit/src/main/java/com/sun/faces/i_gf_11636_htmlunit/IssueGlassFish11636TestCase.java b/jsf-test/GLASSFISH-11636/i_gf_11636_htmlunit/src/main/java/com/sun/faces/i_gf_11636_htmlunit/IssueGlassFish11636TestCase.java
new file mode 100644
index 0000000..c920d13
--- /dev/null
+++ b/jsf-test/GLASSFISH-11636/i_gf_11636_htmlunit/src/main/java/com/sun/faces/i_gf_11636_htmlunit/IssueGlassFish11636TestCase.java
@@ -0,0 +1,77 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.i_gf_11636_htmlunit;
+
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+
+import com.sun.faces.htmlunit.HtmlUnitFacesTestCase;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+
+public class IssueGlassFish11636TestCase extends HtmlUnitFacesTestCase {
+
+    public IssueGlassFish11636TestCase(String name) {
+        super(name);
+    }
+
+
+    /**
+     * Return the tests included in this test suite.
+     */
+    public static Test suite() {
+        return (new TestSuite(IssueGlassFish11636TestCase.class));
+    }
+
+
+    // ------------------------------------------------------------ Test Methods
+
+    public void testBasicAppFunctionality() throws Exception {
+        
+        HtmlPage page = getPageWithRetry("/i_gf_11636.page", 10);
+        
+        String text = page.asText();
+        assertTrue(text.matches("(?s).*bean:\\s*bar.*"));
+
+    }
+
+
+}
diff --git a/jsf-test/GLASSFISH-11636/maven-module-that-makes-jar-for-WEB-INF-lib/pom.xml b/jsf-test/GLASSFISH-11636/maven-module-that-makes-jar-for-WEB-INF-lib/pom.xml
new file mode 100644
index 0000000..5267810
--- /dev/null
+++ b/jsf-test/GLASSFISH-11636/maven-module-that-makes-jar-for-WEB-INF-lib/pom.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+   <modelVersion>4.0.0</modelVersion>
+   <groupId>com.sun.faces.test</groupId>
+   <artifactId>bean</artifactId>
+   <packaging>jar</packaging>
+   <name>bean jar</name>
+   <version>1.0</version>
+
+   <properties>
+
+   </properties>
+
+   <dependencies>
+
+      <dependency>
+         <groupId>javax</groupId>
+         <artifactId>javaee-api</artifactId>
+         <version>6.0</version>
+         <scope>provided</scope>
+      </dependency>
+
+   </dependencies>
+
+   <build>
+
+      <plugins>
+         <plugin>
+            <artifactId>maven-compiler-plugin</artifactId>
+            <configuration>
+               <source>1.6</source>
+               <target>1.6</target>
+            </configuration>
+         </plugin>
+      </plugins>
+   </build>
+
+</project>
diff --git a/jsf-test/GLASSFISH-11636/maven-module-that-makes-jar-for-WEB-INF-lib/src/main/java/beans/Bean.java b/jsf-test/GLASSFISH-11636/maven-module-that-makes-jar-for-WEB-INF-lib/src/main/java/beans/Bean.java
new file mode 100644
index 0000000..fb071fe
--- /dev/null
+++ b/jsf-test/GLASSFISH-11636/maven-module-that-makes-jar-for-WEB-INF-lib/src/main/java/beans/Bean.java
@@ -0,0 +1,58 @@
+
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License. You can obtain
+ * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
+ * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
+ * Sun designates this particular file as subject to the "Classpath" exception
+ * as provided by Sun in the GPL Version 2 section of the License file that
+ * accompanied this code.  If applicable, add the following below the License
+ * Header, with the fields enclosed by brackets [] replaced by your own
+ * identifying information: "Portions Copyrighted [year]
+ * [name of copyright owner]"
+ *
+ * Contributor(s):
+ *
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package beans;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.NoneScoped;
+
+ at ManagedBean
+ at NoneScoped
+public class Bean {
+
+    protected String foo = "bar";
+
+    public String getFoo() {
+        return foo;
+    }
+
+    public void setFoo(String foo) {
+        this.foo = foo;
+    }
+
+
+}
diff --git a/jsf-test/GLASSFISH-11636/maven-module-that-makes-jar-for-WEB-INF-lib/src/main/resources/META-INF/faces-config.xml b/jsf-test/GLASSFISH-11636/maven-module-that-makes-jar-for-WEB-INF-lib/src/main/resources/META-INF/faces-config.xml
new file mode 100644
index 0000000..26c5141
--- /dev/null
+++ b/jsf-test/GLASSFISH-11636/maven-module-that-makes-jar-for-WEB-INF-lib/src/main/resources/META-INF/faces-config.xml
@@ -0,0 +1,45 @@
+<?xml version='1.0' encoding='UTF-8'?>
+
+<!--
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ 
+ Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+ 
+ The contents of this file are subject to the terms of either the GNU
+ General Public License Version 2 only ("GPL") or the Common Development
+ and Distribution License("CDDL") (collectively, the "License").  You
+ may not use this file except in compliance with the License. You can obtain
+ a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
+ or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ language governing permissions and limitations under the License.
+ 
+ When distributing the software, include this License Header Notice in each
+ file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
+ Sun designates this particular file as subject to the "Classpath" exception
+ as provided by Sun in the GPL Version 2 section of the License file that
+ accompanied this code.  If applicable, add the following below the License
+ Header, with the fields enclosed by brackets [] replaced by your own
+ identifying information: "Portions Copyrighted [year]
+ [name of copyright owner]"
+ 
+ Contributor(s):
+ 
+ If you wish your version of this file to be governed by only the CDDL or
+ only the GPL Version 2, indicate your decision by adding "[Contributor]
+ elects to include this software in this distribution under the [CDDL or GPL
+ Version 2] license."  If you don't indicate a single choice of license, a
+ recipient has the option to distribute your version of this file under
+ either the CDDL, the GPL Version 2 or to extend the choice of license to
+ its licensees as provided above.  However, if you add GPL Version 2 code
+ and therefore, elected the GPL Version 2 license, then the option applies
+ only if the new code is made subject to such option by the copyright
+ holder.
+-->
+
+
+<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
+    version="2.0">
+
+</faces-config>
diff --git a/jsf-test/GLASSFISH-11636/maven-module-that-makes-wab/pom.xml b/jsf-test/GLASSFISH-11636/maven-module-that-makes-wab/pom.xml
new file mode 100644
index 0000000..2f63067
--- /dev/null
+++ b/jsf-test/GLASSFISH-11636/maven-module-that-makes-wab/pom.xml
@@ -0,0 +1,191 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+   <modelVersion>4.0.0</modelVersion>
+   <groupId>ndx.test</groupId>
+   <artifactId>jsf-wab-test</artifactId>
+   <packaging>war</packaging>
+   <name>Test Module</name>
+   <version>0.0.2</version>
+
+   <description>cp /Users/edburns/.m2/repository/ndx/test/Test1/0.0.2/Test1-0.0.2.war /Users/edburns/Documents/JavaEE/workareas/glassfish31-1HEAD/distributions/glassfish/target-20100903-0945/glassfishv3/glassfish/domains/domain1/autodeploy/bundles</description>
+
+   <properties>
+
+   </properties>
+
+   <dependencies>
+
+      <dependency>
+         <groupId>javax</groupId>
+         <artifactId>javaee-api</artifactId>
+         <version>6.0</version>
+         <scope>provided</scope>
+      </dependency>
+
+      <dependency>
+         <groupId>com.sun.faces.test</groupId>
+         <artifactId>bean</artifactId>
+         <version>1.0</version>
+      </dependency>
+
+   </dependencies>
+
+   <build>
+      <finalName>jsf-wab-test</finalName>
+      <resources>
+         <!-- plus root folder -->
+         <resource>
+            <directory>src/main/resources</directory>
+            <includes>
+               <include>Messa*.properties</include>
+            </includes>
+            <targetPath>ndx/bill/face/system</targetPath>
+         </resource>
+      </resources>
+
+      <plugins>
+         <plugin>
+            <artifactId>maven-compiler-plugin</artifactId>
+            <configuration>
+               <source>1.6</source>
+               <target>1.6</target>
+            </configuration>
+         </plugin>
+         <plugin>
+            <artifactId>maven-war-plugin</artifactId>
+            <groupId>org.apache.maven.plugins</groupId>
+            <version>2.1.1</version>
+            <configuration>
+               <archive>
+                  <manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile>
+               </archive>
+            </configuration>
+         </plugin>
+         <plugin>
+            <groupId>org.apache.felix</groupId>
+            <artifactId>maven-bundle-plugin</artifactId>
+            <version>2.0.1</version>
+            <extensions>true</extensions>
+            <configuration>
+               <supportedProjectTypes>
+                  <supportedProjectType>jar</supportedProjectType>
+                  <supportedProjectType>bundle</supportedProjectType>
+                  <supportedProjectType>war</supportedProjectType>
+               </supportedProjectTypes>
+               <obrRepository>NONE</obrRepository>
+               <instructions>
+                  <Export-Package>!ndx.bill.face</Export-Package>
+                  <Private-Package>ndx.bill.face</Private-Package>
+                  <DynamicImport-Package>javax.*, org.*, com.sun.faces.*</DynamicImport-Package>
+                  <Web-ContextPath>/jsf-wab-test</Web-ContextPath>
+                  <Import-Package>*;resolution:=optional</Import-Package>
+                  <Embed-Dependency>*;scope=compile|runtime;inline=false</Embed-Dependency>
+                  <Embed-Transitive>true</Embed-Transitive>
+                  <Embed-Directory>WEB-INF/lib</Embed-Directory>
+                  <Embed-StripVersion>false</Embed-StripVersion>
+                  <Embed-StripGroup>true</Embed-StripGroup>
+                  <Bundle-ClassPath>.,WEB-INF/classes</Bundle-ClassPath>
+               </instructions>
+            </configuration>
+            <executions>
+               <execution>
+                  <id>bundle-manifest</id>
+                  <phase>process-classes</phase>
+                  <goals>
+                     <goal>manifest</goal>
+                  </goals>
+               </execution>
+            </executions>
+         </plugin>
+      </plugins>
+   </build>
+
+   <repositories>
+
+      <repository>
+         <id>jboss</id>
+         <url>http://repository.jboss.com/maven2</url>
+      </repository>
+      <repository>
+         <id>primefaces</id>
+         <url>http://repository.prime.com.tr</url>
+      </repository>
+
+
+
+      <repository>
+         <id>ibiblio.org</id>
+         <name>ibiblio.org</name>
+         <url>http://mirrors.ibiblio.org/pub/mirrors/maven2</url>
+      </repository>
+
+      <repository>
+         <id>download.java.net</id>
+         <url>http://download.java.net/maven/glassfish</url>
+      </repository>
+
+      <repository>
+         <id>download.java.net-2</id>
+         <url>http://download.java.net/maven/2/</url>
+      </repository>
+
+      <repository>
+         <id>com.springsource.repository.bundles.external</id>
+         <name>SpringSource Enterprise Bundle Repository - External Bundle Releases</name>
+         <url>http://repository.springsource.com/maven/bundles/external</url>
+      </repository>
+
+      <repository>
+         <id>com.springsource.repository.bundles.release</id>
+         <name>SpringSource Enterprise Bundle Repository - SpringSource Bundle Releases</name>
+         <url>http://repository.springsource.com/maven/bundles/release</url>
+      </repository>
+
+      <repository>
+         <id>com.springsource.repository.bundles.milestone</id>
+         <name>SpringSource Enterprise Bundle Repository - SpringSource Milestone Releases</name>
+         <url>http://repository.springsource.com/maven/bundles/milestone</url>
+      </repository>
+
+      <repository>
+         <id>com.springsource.repository.bundles.milestone-2</id>
+         <name>SpringSource Enterprise Bundle Repository - SpringSource Milestone Releases</name>
+         <url>http://maven.springframework.org/milestone</url>
+      </repository>
+
+      <repository>
+         <id>eclipse-repository</id>
+         <name>Eclipse Repository</name>
+         <url>http://repo1.maven.org/eclipse/</url>
+         <releases>
+            <updatePolicy>daily</updatePolicy>
+         </releases>
+      </repository>
+
+      <repository>
+         <id>spring-maven-snapshot</id>
+         <snapshots>
+            <enabled>true</enabled>
+         </snapshots>
+         <name>Springframework Maven SNAPSHOT Repository</name>
+         <url>http://s3.amazonaws.com/maven.springframework.org/snapshot</url>
+      </repository>
+      <repository>
+         <id>spring-maven-milestone</id>
+         <name>Springframework Maven Repository</name>
+         <url>http://s3.amazonaws.com/maven.springframework.org/milestone</url>
+      </repository>
+
+   </repositories>
+
+
+   <pluginRepositories>
+      <pluginRepository>
+         <id>maven-repo</id>
+         <name>maven repo</name>
+         <url>http://repo1.maven.org/maven2/</url>
+      </pluginRepository>
+
+   </pluginRepositories>
+
+</project>
diff --git a/jsf-test/GLASSFISH-11636/maven-module-that-makes-wab/src/main/resources/Messages.properties b/jsf-test/GLASSFISH-11636/maven-module-that-makes-wab/src/main/resources/Messages.properties
new file mode 100644
index 0000000..725b903
--- /dev/null
+++ b/jsf-test/GLASSFISH-11636/maven-module-that-makes-wab/src/main/resources/Messages.properties
@@ -0,0 +1,12 @@
+Errors.AlreadyExists     = Resource already exists
+Errors.InternalError     = Internal Error. Please tell out Support Team about.
+Errors.PasswordIncorrect = Incorrect password
+Errors.PermissionDenied  = Permission Denied.
+Errors.TariffLimit       = Tariff limit exception. Operation declined.
+Errors.UserNotExists     = User not exists
+Errors.UsernameIncorrect = User name is incorrect
+
+OK = OK
+
+loginmenu.password = Password
+loginmenu.username = Username
diff --git a/jsf-test/GLASSFISH-11636/maven-module-that-makes-wab/src/main/resources/Messages_ru.properties b/jsf-test/GLASSFISH-11636/maven-module-that-makes-wab/src/main/resources/Messages_ru.properties
new file mode 100644
index 0000000..d6992f3
--- /dev/null
+++ b/jsf-test/GLASSFISH-11636/maven-module-that-makes-wab/src/main/resources/Messages_ru.properties
@@ -0,0 +1,12 @@
+
+Errors.AlreadyExists     = \u0422\u0430\u043A\u043E\u0439 \u0440\u0435\u0441\u0443\u0440\u0441 \u0443\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442.
+Errors.InternalError     = \u0412\u043D\u0443\u0442\u0440\u0435\u043D\u043D\u044F\u044F \u043E\u0448\u0438\u0431\u043A\u0430 \u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u044F. \u041F\u043E\u0436\u0430\u043B\u0443\u0439\u0441\u0442\u0430 \u043E\u0431\u0440\u0430\u0442\u0438\u0442\u0435\u0441\u044C \u0432 \u0441\u043B\u0443\u0436\u0431\u0443 \u043F\u043E\u0436\u0436\u0435\u0440\u0436\u043A\u0438.
+Errors.PasswordIncorrect = \u041D\u0435\u043A\u043E\u0440\u0440\u0435\u043A\u0442\u043D\u044B\u0439 \u043F\u0430\u0440\u043E\u043B\u044C
+Errors.PermissionDenied  = \u0414\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u0437\u0430\u043F\u0440\u0435\u0449\u0435\u043D\u043E
+Errors.TariffLimit       = \u0412\u044B \u0432\u044B\u0445\u043E\u0434\u0438\u0442\u0435 \u0437\u0430 \u043E\u0433\u0440\u0430\u043D\u0438\u0447\u0435\u043D\u0438\u044F \u0412\u0430\u0448\u0435\u0433\u043E \u0442\u0430\u0440\u0438\u0444\u043D\u043E\u0433\u043E \u043F\u043B\u0430\u043D\u0430. \u041E\u043F\u0435\u0440\u0430\u0446\u0438\u044F \u0437\u0430\u043F\u0440\u0449\u0435\u043D\u0430.
+Errors.UserNotExists     = \u041F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C \u043D\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442
+Errors.UsernameIncorrect = \u041D\u0435\u043A\u043E\u0440\u0440\u0435\u043A\u0442\u043D\u043E\u0435 \u0438\u043C\u044F \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044F
+OK = OK
+
+loginmenu.password = \u041F\u0430\u0440\u043E\u043B\u044C
+loginmenu.username = \u041B\u043E\u0433\u0438\u043D
diff --git a/jsf-test/GLASSFISH-11636/maven-module-that-makes-wab/src/main/resources/log4j.properties b/jsf-test/GLASSFISH-11636/maven-module-that-makes-wab/src/main/resources/log4j.properties
new file mode 100644
index 0000000..18cfaa3
--- /dev/null
+++ b/jsf-test/GLASSFISH-11636/maven-module-that-makes-wab/src/main/resources/log4j.properties
@@ -0,0 +1,8 @@
+log4j.rootCategory=INFO, stdout
+log4j.appender.stdout=org.apache.log4j.ConsoleAppender
+log4j.appender.stdout.layout.ConversionPattern=%t %p [%c] - %m%n
+log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
+log4j.appender.stdout.threshold=TRACE
+
+#log4j.logger.org.springframework.osgi=DEBUG
+#log4j.logger.org.springframework=DEBUG
\ No newline at end of file
diff --git a/jsf-test/GLASSFISH-11636/maven-module-that-makes-wab/src/main/webapp/WEB-INF/faces-config.xml b/jsf-test/GLASSFISH-11636/maven-module-that-makes-wab/src/main/webapp/WEB-INF/faces-config.xml
new file mode 100644
index 0000000..33d9b4a
--- /dev/null
+++ b/jsf-test/GLASSFISH-11636/maven-module-that-makes-wab/src/main/webapp/WEB-INF/faces-config.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<faces-config version="2.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+              xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
+              metadata-complete="false">
+   <application>
+      <locale-config>
+         <default-locale>ru</default-locale>
+         <supported-locale>ru</supported-locale>
+         <supported-locale>en</supported-locale>
+      </locale-config>
+      <resource-bundle>
+         <base-name>ndx.bill.face.system.Messages</base-name>
+         <var>msg</var>
+      </resource-bundle>
+   </application>
+   <navigation-rule>
+   </navigation-rule>
+</faces-config>
+
diff --git a/jsf-test/GLASSFISH-11636/maven-module-that-makes-wab/src/main/webapp/WEB-INF/pages/login.xhtml b/jsf-test/GLASSFISH-11636/maven-module-that-makes-wab/src/main/webapp/WEB-INF/pages/login.xhtml
new file mode 100644
index 0000000..715014d
--- /dev/null
+++ b/jsf-test/GLASSFISH-11636/maven-module-that-makes-wab/src/main/webapp/WEB-INF/pages/login.xhtml
@@ -0,0 +1,18 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+   <f:view>
+      <h:head>
+         <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+      </h:head>
+      <h:body>
+
+         <h:form>
+           <h:inputText />
+         </h:form>
+
+         <p>bean: #{bean.foo}</p>
+      </h:body>
+   </f:view>
+</html>
diff --git a/jsf-test/GLASSFISH-11636/maven-module-that-makes-wab/src/main/webapp/WEB-INF/web.xml b/jsf-test/GLASSFISH-11636/maven-module-that-makes-wab/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..b18ec60
--- /dev/null
+++ b/jsf-test/GLASSFISH-11636/maven-module-that-makes-wab/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:jsp="http://java.sun.com/xml/ns/javaee/jsp" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
+   <display-name>Test1</display-name>
+   <context-param>
+      <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+      <param-value>server</param-value>
+   </context-param>
+   <context-param>
+      <param-name>javax.faces.PROJECT_STAGE</param-name>
+      <param-value>Development</param-value>
+   </context-param>
+   <context-param>
+      <param-name>javax.faces.DEFAULT_SUFFIX</param-name>
+      <param-value>.xhtml</param-value>
+   </context-param>
+   <context-param>
+      <param-name>javax.faces.FACELETS_SUFFIX</param-name>
+      <param-value>.xhtml</param-value>
+   </context-param>
+   <context-param>
+      <param-name>javax.faces.FACELETS_SKIP_COMMENTS</param-name>
+      <param-value>true</param-value>
+   </context-param>
+   <context-param>
+      <param-name>com.sun.faces.allowTextChildren</param-name>
+      <param-value>true</param-value>
+   </context-param>
+
+
+   <listener>
+      <listener-class>com.sun.faces.config.ConfigureListener</listener-class>
+   </listener>
+   <!--JSF-->
+   <servlet>
+      <servlet-name>Faces Servlet</servlet-name>
+      <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+      <load-on-startup>1</load-on-startup>
+   </servlet>
+
+   <servlet-mapping>
+      <servlet-name>Faces Servlet</servlet-name>
+      <url-pattern>*.page</url-pattern>
+   </servlet-mapping>
+   <!--JSF-->
+   <welcome-file-list>
+      <welcome-file>/index.jsp</welcome-file>
+   </welcome-file-list>
+   <session-config>
+      <session-timeout>30</session-timeout>
+   </session-config>
+   <welcome-file-list>
+      <welcome-file>index.html</welcome-file>
+      <welcome-file>index.htm</welcome-file>
+      <welcome-file>index.jsp</welcome-file>
+      <welcome-file>default.html</welcome-file>
+      <welcome-file>default.htm</welcome-file>
+      <welcome-file>default.jsp</welcome-file>
+   </welcome-file-list>
+</web-app>
\ No newline at end of file
diff --git a/jsf-test/GLASSFISH-11636/maven-module-that-makes-wab/src/main/webapp/i_gf_11636.xhtml b/jsf-test/GLASSFISH-11636/maven-module-that-makes-wab/src/main/webapp/i_gf_11636.xhtml
new file mode 100644
index 0000000..b7b6569
--- /dev/null
+++ b/jsf-test/GLASSFISH-11636/maven-module-that-makes-wab/src/main/webapp/i_gf_11636.xhtml
@@ -0,0 +1,4 @@
+<ui:composition  xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core"  xmlns:ui="http://java.sun.com/jsf/facelets"
+                 template="/WEB-INF/pages/login.xhtml">
+</ui:composition>
+
diff --git a/jsf-test/GLASSFISH-11636/maven-module-that-makes-wab/src/main/webapp/index.jsp b/jsf-test/GLASSFISH-11636/maven-module-that-makes-wab/src/main/webapp/index.jsp
new file mode 100644
index 0000000..95a5c9a
--- /dev/null
+++ b/jsf-test/GLASSFISH-11636/maven-module-that-makes-wab/src/main/webapp/index.jsp
@@ -0,0 +1,4 @@
+<%
+           response.setStatus(HttpServletResponse.SC_MOVED_TEMPORARILY);
+           response.sendRedirect("/jsf-wab-test/i_gf_11636.page");
+%>
diff --git a/jsf-test/GLASSFISH-11636/maven-module-that-makes-wab/src/test/java/ndx/bill/face/readme.txt b/jsf-test/GLASSFISH-11636/maven-module-that-makes-wab/src/test/java/ndx/bill/face/readme.txt
new file mode 100644
index 0000000..a93c342
--- /dev/null
+++ b/jsf-test/GLASSFISH-11636/maven-module-that-makes-wab/src/test/java/ndx/bill/face/readme.txt
@@ -0,0 +1 @@
+Since Archetype "create" can not create empty directories this file was created. It is safe to delete
\ No newline at end of file
diff --git a/jsf-test/GLASSFISH-11636/maven-module-that-makes-wab/src/test/resources/log4j.properties b/jsf-test/GLASSFISH-11636/maven-module-that-makes-wab/src/test/resources/log4j.properties
new file mode 100644
index 0000000..18cfaa3
--- /dev/null
+++ b/jsf-test/GLASSFISH-11636/maven-module-that-makes-wab/src/test/resources/log4j.properties
@@ -0,0 +1,8 @@
+log4j.rootCategory=INFO, stdout
+log4j.appender.stdout=org.apache.log4j.ConsoleAppender
+log4j.appender.stdout.layout.ConversionPattern=%t %p [%c] - %m%n
+log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
+log4j.appender.stdout.threshold=TRACE
+
+#log4j.logger.org.springframework.osgi=DEBUG
+#log4j.logger.org.springframework=DEBUG
\ No newline at end of file
diff --git a/jsf-test/GLASSFISH-15985/build.xml b/jsf-test/GLASSFISH-15985/build.xml
new file mode 100644
index 0000000..b56bc22
--- /dev/null
+++ b/jsf-test/GLASSFISH-15985/build.xml
@@ -0,0 +1,115 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!-- ************ JSF build file ************************************** -->
+
+<project name="GLASSFISH-15985" default="test" basedir=".">
+
+    <property file="../../build.properties"/>
+
+    <import file="${jsf.build.home}/common/ant/common.xml"/>   
+    <import file="${jsf.build.home}/common/ant/test-app.xml"/>   
+
+    <path id="15985.classpath">  
+        <path refid="html.classpath" />
+        <pathelement location="${basedir}/i_gf_15985_htmlunit/target/classes"/>
+    </path>
+
+
+
+    <target name="build">
+
+      <jsf.mvn dir="${basedir}/i_gf_15985_htmlunit" goals="install" />
+
+    </target>    
+
+    <target name="clean">
+
+      <jsf.mvn dir="${basedir}/i_gf_15985_htmlunit" goals="clean" />
+
+    </target>    
+
+    <target name="install">
+      <if>
+        <not>
+          <isset property="skip.init.osgi" />
+        </not>
+        <then>
+          <sequential>
+            <antcall target="container.stop" />
+            <antcall target="container.init.osgi" />
+            <antcall target="container.start" />
+          </sequential>
+        </then>
+      </if>
+
+      <deploy.artifact
+              artifact="${basedir}/dummy-web.war"
+              appName="dummy-web" osgi="true"/>
+
+    </target>    
+
+    <target name="remove">
+
+      <undeploy.artifact
+              artifact="${basedir}/dummy-web.war"
+              appName="dummy-web"/>
+
+    </target>    
+
+    <target name="test" depends="define.scenario.aware.port">
+
+          <jsf.junit context-path="/dummy-web"
+                   classpath-refid="15985.classpath"    
+                   test-results-dir="${regression.test.results.dir}">
+              <tests>
+                  <fileset dir="${basedir}/i_gf_15985_htmlunit/target/classes"
+                       includes="**/*TestCase.class"/> 
+              </tests>
+          </jsf.junit>
+
+    </target>    
+
+
+        
+</project>
diff --git a/jsf-test/GLASSFISH-15985/dummy-web.war b/jsf-test/GLASSFISH-15985/dummy-web.war
new file mode 100644
index 0000000..73875ca
Binary files /dev/null and b/jsf-test/GLASSFISH-15985/dummy-web.war differ
diff --git a/jsf-test/GLASSFISH-15985/i_gf_15985_htmlunit/pom.xml b/jsf-test/GLASSFISH-15985/i_gf_15985_htmlunit/pom.xml
new file mode 100644
index 0000000..fce0821
--- /dev/null
+++ b/jsf-test/GLASSFISH-15985/i_gf_15985_htmlunit/pom.xml
@@ -0,0 +1,110 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+   <modelVersion>4.0.0</modelVersion>
+   <groupId>com.sun.faces</groupId>
+   <artifactId>i_gf_15985_htmlunit</artifactId>
+   <packaging>jar</packaging>
+   <name>i_gf_15985_htmlunit</name>
+   <version>1.0-SNAPSHOT</version>
+
+   <dependencies>
+
+      <dependency>
+	<artifactId>htmlunit</artifactId>
+	<groupId>net.sourceforge.htmlunit</groupId>
+	<version>2.4</version>
+         <scope>provided</scope>
+      </dependency>
+      <dependency>
+         <groupId>junit</groupId>
+         <artifactId>junit</artifactId>
+         <version>3.8.1</version>
+         <scope>provided</scope>
+      </dependency>
+      <dependency>
+	<groupId>com.sun.faces</groupId>
+	<artifactId>jsf-extensions-test-time</artifactId>
+	<version>2.2</version>
+	<scope>compile</scope>
+      </dependency>
+
+   </dependencies>
+
+   <build>
+      <plugins>
+         <plugin>
+            <groupId>org.apache.maven.plugins</groupId>
+            <artifactId>maven-compiler-plugin</artifactId>
+            <version>2.0.2</version>
+            <configuration>
+               <source>1.6</source>
+               <target>1.6</target>
+            </configuration>
+         </plugin>
+      </plugins>
+      <finalName>i_gf_15985_htmlunit</finalName>
+   </build>
+
+   <repositories>
+        <repository>
+          <id>java.net.snapshots</id>
+          <name>java.net SNAPSHOTS</name>
+          <releases>
+            <enabled>false</enabled>
+            <updatePolicy>always</updatePolicy>
+            <checksumPolicy>warn</checksumPolicy>
+          </releases>
+          <snapshots>
+            <enabled>true</enabled>
+            <updatePolicy>always</updatePolicy>
+            <checksumPolicy>warn</checksumPolicy>
+          </snapshots>
+          <url>https://maven.java.net/content/repositories/snapshots</url>
+          <layout>default</layout>
+        </repository>
+   </repositories>
+
+</project>
diff --git a/jsf-test/GLASSFISH-15985/i_gf_15985_htmlunit/src/main/java/com/sun/faces/i_gf_15985_htmlunit/IssueGlassFish15985TestCase.java b/jsf-test/GLASSFISH-15985/i_gf_15985_htmlunit/src/main/java/com/sun/faces/i_gf_15985_htmlunit/IssueGlassFish15985TestCase.java
new file mode 100644
index 0000000..fc00925
--- /dev/null
+++ b/jsf-test/GLASSFISH-15985/i_gf_15985_htmlunit/src/main/java/com/sun/faces/i_gf_15985_htmlunit/IssueGlassFish15985TestCase.java
@@ -0,0 +1,77 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.i_gf_15985_htmlunit;
+
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+
+import com.sun.faces.htmlunit.HtmlUnitFacesTestCase;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+
+public class IssueGlassFish15985TestCase extends HtmlUnitFacesTestCase {
+
+    public IssueGlassFish15985TestCase(String name) {
+        super(name);
+    }
+
+
+    /**
+     * Return the tests included in this test suite.
+     */
+    public static Test suite() {
+        return (new TestSuite(IssueGlassFish15985TestCase.class));
+    }
+
+
+    // ------------------------------------------------------------ Test Methods
+
+    public void testBasicAppFunctionality() throws Exception {
+        
+        HtmlPage page = getPageWithRetry("/", 10);
+        
+        String text = page.asText();
+        assertTrue(text.matches("(?s).*Hello\\s*from\\s*CDI.*Hello\\s*from\\s*JSF.*"));
+
+    }
+
+
+}
diff --git a/jsf-test/GLASSFISH-16847/build.xml b/jsf-test/GLASSFISH-16847/build.xml
new file mode 100644
index 0000000..8a41de8
--- /dev/null
+++ b/jsf-test/GLASSFISH-16847/build.xml
@@ -0,0 +1,91 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<!-- ************ JSF build file ************************************** -->
+<project name="GLASSFISH-16847" default="test" basedir=".">
+
+    <property file="../../build.properties"/>
+    <path id="16847.classpath">  
+        <path refid="html.classpath" />
+        <pathelement location="${basedir}/htmlunit/target/classes"/>
+    </path>
+
+    <import file="${jsf.build.home}/common/ant/common.xml"/>
+
+    <target name="build">
+        <jsf.mvn dir="${basedir}/jsftest" goals="install" />
+    </target>    
+
+    <target name="clean">
+        <jsf.mvn dir="${basedir}/jsftest" goals="clean" />
+    </target>    
+
+    <target name="install">
+    </target>    
+
+    <target name="remove">
+        <undeploy.artifact
+              artifact="${basedir}/i_jsf_2052/target/jsftest.war"
+              appName="jsftest"/>
+    </target>    
+
+    <target name="test" depends="define.scenario.aware.port">
+        <deploy.artifact
+              artifact="${basedir}/jsftest/target/jsftest.war"
+              appName="jsftest"/>
+         <jsf.tester request="/faces/IssueGLASSFISH16847UsingPage.xhtml" 
+                    context-path="/hellojsf"
+                    classpath-refid="16847.classpath"    
+                    regexp="(?s).*BHAVANI.*.91999000000.*INDIA.*SHANKAR.*.199999999999.*USA.*Mr.*X.*.122222222.*SFO.*"
+                    test-results-dir="${regression.test.results.dir}"/>
+         <antcall target="remove" />
+         <deploydir.artifact
+              explodedWarDir="${basedir}/jsftest/target/jsftest"
+              appName="jsftest"/>
+          <jsf.tester request="/faces/IssueGLASSFISH16847UsingPage.xhtml" 
+                    context-path="/jsftest"
+                    classpath-refid="16847.classpath"    
+                    regexp="(?s).*BHAVANI.*.91999000000.*INDIA.*SHANKAR.*.199999999999.*USA.*Mr.*X.*.122222222.*SFO.*"
+                    test-results-dir="${regression.test.results.dir}"/>
+    </target>    
+
+</project>
diff --git a/jsf-test/GLASSFISH-16847/jsftest/pom.xml b/jsf-test/GLASSFISH-16847/jsftest/pom.xml
new file mode 100644
index 0000000..b825e46
--- /dev/null
+++ b/jsf-test/GLASSFISH-16847/jsftest/pom.xml
@@ -0,0 +1,104 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010-2011 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <groupId>org.glassfish.tests.embedded.maven-plugin</groupId>
+    <artifactId>jsftest</artifactId>
+    <packaging>war</packaging>
+    <version>3.2-SNAPSHOT</version>
+    <name>Test JSF (maven-plugin/jsftest)</name>
+
+    <build>
+        <defaultGoal>install</defaultGoal>
+        <testSourceDirectory>src/test/java</testSourceDirectory>
+        <finalName>jsftest</finalName>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                    <source>1.6</source>
+                    <target>1.6</target>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-war-plugin</artifactId>
+                <version>2.1.1</version>
+                <configuration>
+                    <failOnMissingWebXml>false</failOnMissingWebXml>
+                </configuration>
+            </plugin>
+
+        </plugins>
+
+        <extensions>
+            <extension>
+                <groupId>org.jvnet.wagon-svn</groupId>
+                <artifactId>wagon-svn</artifactId>
+                <version>1.8</version>
+            </extension>
+        </extensions>
+    </build>
+
+    <dependencies>
+        <dependency>
+            <groupId>javax.faces</groupId>
+            <artifactId>javax.faces-api</artifactId>
+            <version>${spec.snapshot.version}</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>javax</groupId>
+            <artifactId>javaee-api</artifactId>
+            <version>6.0</version>
+            <scope>provided</scope>
+        </dependency>
+    </dependencies>
+
+</project>
+
diff --git a/jsf-test/GLASSFISH-16847/jsftest/src/main/java/org/glassfish/tests/embedded/jsftest/JSFTestBean.java b/jsf-test/GLASSFISH-16847/jsftest/src/main/java/org/glassfish/tests/embedded/jsftest/JSFTestBean.java
new file mode 100644
index 0000000..6bcc255
--- /dev/null
+++ b/jsf-test/GLASSFISH-16847/jsftest/src/main/java/org/glassfish/tests/embedded/jsftest/JSFTestBean.java
@@ -0,0 +1,87 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package org.glassfish.tests.embedded.jsftest;
+
+import javax.faces.bean.ManagedBean;
+
+/**
+ * @author bhavanishankar at java.net
+ */
+
+ at ManagedBean(name = "testbean")
+public class JSFTestBean {
+
+    public TestTable[] getTestTable() {
+        return testTable;
+    }
+
+    private TestTable[] testTable = new TestTable[]{
+            new TestTable("BHAVANI", "+91999000000", "INDIA"),
+            new TestTable("SHANKAR", "+199999999999", "USA"),
+            new TestTable("Mr. X", "+122222222", "SFO"),
+    };
+
+    
+    public class TestTable {
+        String name;
+        String number;
+        String country;
+
+        public TestTable(String name, String phone, String country) {
+            this.name = name;
+            this.number = phone;
+            this.country = country;
+        }
+
+        public String getName() {
+            return name;
+        }
+
+        public String getNumber() {
+            return number;
+        }
+
+        public String getCountry() {
+            return country;
+        }
+    }
+
+}
diff --git a/jsf-test/GLASSFISH-16847/jsftest/src/main/java/org/glassfish/tests/embedded/jsftest/JSFTestServlet.java b/jsf-test/GLASSFISH-16847/jsftest/src/main/java/org/glassfish/tests/embedded/jsftest/JSFTestServlet.java
new file mode 100644
index 0000000..da20e4d
--- /dev/null
+++ b/jsf-test/GLASSFISH-16847/jsftest/src/main/java/org/glassfish/tests/embedded/jsftest/JSFTestServlet.java
@@ -0,0 +1,92 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 2011 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package org.glassfish.tests.embedded.jsftest;
+
+import javax.faces.FactoryFinder;
+import javax.faces.application.Application;
+import javax.faces.application.ViewHandler;
+import javax.faces.component.UIViewRoot;
+import javax.faces.context.FacesContext;
+import javax.faces.context.FacesContextFactory;
+import javax.faces.lifecycle.LifecycleFactory;
+import javax.servlet.ServletContext;
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.PrintWriter;
+
+/**
+ * @author bhavanishankar at java.net
+ */
+
+public class JSFTestServlet extends HttpServlet {
+
+    @Override
+    protected void doGet(HttpServletRequest request,
+                         HttpServletResponse response) throws ServletException, IOException {
+        FacesContextFactory facesContextFactory =
+                (FacesContextFactory) FactoryFinder.getFactory(
+                        FactoryFinder.FACES_CONTEXT_FACTORY);
+
+        LifecycleFactory lifecycleFactory =
+                (LifecycleFactory) FactoryFinder.getFactory(
+                        FactoryFinder.LIFECYCLE_FACTORY);
+
+        ServletContext context = getServletContext();
+        FacesContext facesContext =
+                facesContextFactory.getFacesContext(context,
+                        request,
+                        response,
+                        lifecycleFactory.getLifecycle(LifecycleFactory.DEFAULT_LIFECYCLE));
+
+        Application application = facesContext.getApplication();
+        ViewHandler viewHandler = application.getViewHandler();
+        UIViewRoot viewRoot = viewHandler.createView(facesContext, null);
+        facesContext.setViewRoot(viewRoot);
+
+        PrintWriter pw = response.getWriter();
+        pw.println("Created viewRoot " + viewRoot);
+        pw.flush();
+        pw.close();
+    }
+}
diff --git a/jsf-test/GLASSFISH-16847/jsftest/src/main/webapp/IssueGLASSFISH16847UsingPage.xhtml b/jsf-test/GLASSFISH-16847/jsftest/src/main/webapp/IssueGLASSFISH16847UsingPage.xhtml
new file mode 100644
index 0000000..c42df7a
--- /dev/null
+++ b/jsf-test/GLASSFISH-16847/jsftest/src/main/webapp/IssueGLASSFISH16847UsingPage.xhtml
@@ -0,0 +1,85 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+  ~ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+  ~
+  ~ Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+  ~
+  ~ The contents of this file are subject to the terms of either the GNU
+  ~ General Public License Version 2 only ("GPL") or the Common Development
+  ~ and Distribution License("CDDL") (collectively, the "License").  You
+  ~ may not use this file except in compliance with the License.  You can
+  ~ obtain a copy of the License at
+  ~ https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+  ~ or packager/legal/LICENSE.txt.  See the License for the specific
+  ~ language governing permissions and limitations under the License.
+  ~
+  ~ When distributing the software, include this License Header Notice in each
+  ~ file and include the License file at packager/legal/LICENSE.txt.
+  ~
+  ~ GPL Classpath Exception:
+  ~ Oracle designates this particular file as subject to the "Classpath"
+  ~ exception as provided by Oracle in the GPL Version 2 section of the License
+  ~ file that accompanied this code.
+  ~
+  ~ Modifications:
+  ~ If applicable, add the following below the License Header, with the fields
+  ~ enclosed by brackets [] replaced by your own identifying information:
+  ~ "Portions Copyright [year] [name of copyright owner]"
+  ~
+  ~ Contributor(s):
+  ~ If you wish your version of this file to be governed by only the CDDL or
+  ~ only the GPL Version 2, indicate your decision by adding "[Contributor]
+  ~ elects to include this software in this distribution under the [CDDL or GPL
+  ~ Version 2] license."  If you don't indicate a single choice of license, a
+  ~ recipient has the option to distribute your version of this file under
+  ~ either the CDDL, the GPL Version 2 or to extend the choice of license to
+  ~ its licensees as provided above.  However, if you add GPL Version 2 code
+  ~ and therefore, elected the GPL Version 2 license, then the option applies
+  ~ only if the new code is made subject to such option by the copyright
+  ~ holder.
+  -->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+<h:head>
+    <title>JSF Test</title>
+</h:head>
+<h:body>
+    <f:view>
+        <h:form>
+            <h:dataTable value="#{testbean.testTable}" var="tableEntry">
+                
+                <f:facet name="header">
+                    <h:outputText value="JSF Table"/>
+                </f:facet>
+
+                <h:column>
+                    <f:facet name="header">
+                        <h:outputText value="name"/>
+                    </f:facet>
+                    <h:outputText value="#{tableEntry.name}"></h:outputText>
+                </h:column>
+
+                <h:column>
+                    <f:facet name="header">
+                        <h:outputText value="number"/>
+                    </f:facet>
+                    <h:outputText value="#{tableEntry.number}"></h:outputText>
+                </h:column>
+
+                <h:column>
+                    <f:facet name="header">
+                        <h:outputText value="country"/>
+                    </f:facet>
+                    <h:outputText value="#{tableEntry.country}"></h:outputText>
+                </h:column>
+
+            </h:dataTable>
+        </h:form>
+    </f:view>
+</h:body>
+</html>
+
diff --git a/jsf-test/GLASSFISH-16847/jsftest/src/main/webapp/WEB-INF/sun-web.xml b/jsf-test/GLASSFISH-16847/jsftest/src/main/webapp/WEB-INF/sun-web.xml
new file mode 100644
index 0000000..bd15155
--- /dev/null
+++ b/jsf-test/GLASSFISH-16847/jsftest/src/main/webapp/WEB-INF/sun-web.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ~ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+  ~
+  ~ Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+  ~
+  ~ The contents of this file are subject to the terms of either the GNU
+  ~ General Public License Version 2 only ("GPL") or the Common Development
+  ~ and Distribution License("CDDL") (collectively, the "License").  You
+  ~ may not use this file except in compliance with the License.  You can
+  ~ obtain a copy of the License at
+  ~ https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+  ~ or packager/legal/LICENSE.txt.  See the License for the specific
+  ~ language governing permissions and limitations under the License.
+  ~
+  ~ When distributing the software, include this License Header Notice in each
+  ~ file and include the License file at packager/legal/LICENSE.txt.
+  ~
+  ~ GPL Classpath Exception:
+  ~ Oracle designates this particular file as subject to the "Classpath"
+  ~ exception as provided by Oracle in the GPL Version 2 section of the License
+  ~ file that accompanied this code.
+  ~
+  ~ Modifications:
+  ~ If applicable, add the following below the License Header, with the fields
+  ~ enclosed by brackets [] replaced by your own identifying information:
+  ~ "Portions Copyright [year] [name of copyright owner]"
+  ~
+  ~ Contributor(s):
+  ~ If you wish your version of this file to be governed by only the CDDL or
+  ~ only the GPL Version 2, indicate your decision by adding "[Contributor]
+  ~ elects to include this software in this distribution under the [CDDL or GPL
+  ~ Version 2] license."  If you don't indicate a single choice of license, a
+  ~ recipient has the option to distribute your version of this file under
+  ~ either the CDDL, the GPL Version 2 or to extend the choice of license to
+  ~ its licensees as provided above.  However, if you add GPL Version 2 code
+  ~ and therefore, elected the GPL Version 2 license, then the option applies
+  ~ only if the new code is made subject to such option by the copyright
+  ~ holder.
+  -->
+
+<!DOCTYPE sun-web-app PUBLIC "-//Sun Microsystems, Inc.//DTD GlassFish Application Server 3.0 Servlet 3.0//EN" "http://www.sun.com/software/appserver/dtds/sun-web-app_3_0-0.dtd">
+<sun-web-app error-url="">
+  <context-root>/hellojsf</context-root>
+  <class-loader delegate="true"/>
+  <jsp-config>
+    <property name="keepgenerated" value="true">
+      <description>Keep a copy of the generated servlet class' java code.</description>
+    </property>
+  </jsp-config>
+</sun-web-app>
diff --git a/jsf-test/GLASSFISH-16847/jsftest/src/main/webapp/WEB-INF/web.xml b/jsf-test/GLASSFISH-16847/jsftest/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..c11eb15
--- /dev/null
+++ b/jsf-test/GLASSFISH-16847/jsftest/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ~ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+  ~
+  ~ Copyright (c) 2010-2011 Oracle and/or its affiliates. All rights reserved.
+  ~
+  ~ The contents of this file are subject to the terms of either the GNU
+  ~ General Public License Version 2 only ("GPL") or the Common Development
+  ~ and Distribution License("CDDL") (collectively, the "License").  You
+  ~ may not use this file except in compliance with the License.  You can
+  ~ obtain a copy of the License at
+  ~ https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+  ~ or packager/legal/LICENSE.txt.  See the License for the specific
+  ~ language governing permissions and limitations under the License.
+  ~
+  ~ When distributing the software, include this License Header Notice in each
+  ~ file and include the License file at packager/legal/LICENSE.txt.
+  ~
+  ~ GPL Classpath Exception:
+  ~ Oracle designates this particular file as subject to the "Classpath"
+  ~ exception as provided by Oracle in the GPL Version 2 section of the License
+  ~ file that accompanied this code.
+  ~
+  ~ Modifications:
+  ~ If applicable, add the following below the License Header, with the fields
+  ~ enclosed by brackets [] replaced by your own identifying information:
+  ~ "Portions Copyright [year] [name of copyright owner]"
+  ~
+  ~ Contributor(s):
+  ~ If you wish your version of this file to be governed by only the CDDL or
+  ~ only the GPL Version 2, indicate your decision by adding "[Contributor]
+  ~ elects to include this software in this distribution under the [CDDL or GPL
+  ~ Version 2] license."  If you don't indicate a single choice of license, a
+  ~ recipient has the option to distribute your version of this file under
+  ~ either the CDDL, the GPL Version 2 or to extend the choice of license to
+  ~ its licensees as provided above.  However, if you add GPL Version 2 code
+  ~ and therefore, elected the GPL Version 2 license, then the option applies
+  ~ only if the new code is made subject to such option by the copyright
+  ~ holder.
+  -->
+
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>Development</param-value>
+    </context-param>
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet>
+        <servlet-name>JSFTestServlet</servlet-name>
+        <servlet-class>org.glassfish.tests.embedded.jsftest.JSFTestServlet</servlet-class>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <servlet-mapping>
+        <servlet-name>JSFTestServlet</servlet-name>
+        <url-pattern>/JSFTestServlet</url-pattern>
+    </servlet-mapping>
+    <session-config>
+        <session-timeout>
+            30
+        </session-timeout>
+    </session-config>
+    <welcome-file-list>
+        <welcome-file>faces/index.xhtml</welcome-file>
+    </welcome-file-list>
+</web-app>
diff --git a/jsf-test/GLASSFISH-16847/jsftest/src/test/java/org/glassfish/tests/embedded/jsftest/JSFTest.java b/jsf-test/GLASSFISH-16847/jsftest/src/test/java/org/glassfish/tests/embedded/jsftest/JSFTest.java
new file mode 100644
index 0000000..665912e
--- /dev/null
+++ b/jsf-test/GLASSFISH-16847/jsftest/src/test/java/org/glassfish/tests/embedded/jsftest/JSFTest.java
@@ -0,0 +1,138 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 2010-2011 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package org.glassfish.tests.embedded.jsftest;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+import javax.net.ssl.HttpsURLConnection;
+import javax.net.ssl.SSLContext;
+import javax.net.ssl.TrustManager;
+import javax.net.ssl.X509TrustManager;
+import java.io.BufferedReader;
+import java.io.InputStreamReader;
+import java.net.HttpURLConnection;
+import java.net.URL;
+import java.security.SecureRandom;
+import java.security.cert.X509Certificate;
+
+public class JSFTest {
+
+    @Test
+    public void testWeb() throws Exception {
+
+        disableCertValidation();
+
+        goGet("http://localhost:8080/hellojsf/JSFTestServlet", "Created viewRoot");
+        
+        // test non secure access.
+        goGet("http://localhost:8080/hellojsf", "BHAVANI", "SHANKAR", "Mr. X");
+
+        // test secure access.
+        goGet("https://localhost:8181/hellojsf", "BHAVANI", "SHANKAR", "Mr. X");
+    }
+
+    private static void goGet(String url, String... match) throws Exception {
+        try {
+
+            URL servlet = new URL(url);
+            HttpURLConnection uc = (HttpURLConnection) servlet.openConnection();
+            System.out.println("\nURLConnection = " + uc + " : ");
+            if (uc.getResponseCode() != 200) {
+                throw new Exception("Servlet did not return 200 OK response code");
+            }
+
+            BufferedReader in = new BufferedReader(new InputStreamReader(
+                    uc.getInputStream()));
+            String line = null;
+            boolean[] found = new boolean[match.length];
+
+            int count = 0;
+            while ((line = in.readLine()) != null) {
+                System.out.println(line);
+                for (String m : match) {
+                    int index = line.indexOf(m);
+                    if (index != -1 && count < match.length) {
+                        found[count++] = true;
+                        System.out.println("Found [" + m + "] in the response, index = " + count);
+                        break;
+                    }
+                }
+            }
+
+            for (boolean f : found) {
+                Assert.assertTrue(f);
+            }
+            System.out.println("\n***** SUCCESS **** Found all matches in the response.*****\n");
+            in.close();
+        } catch (Exception e) {
+            e.printStackTrace();
+            throw e;
+        }
+    }
+
+    public static void disableCertValidation() {
+        // Create a trust manager that does not validate certificate chains
+        TrustManager[] trustAllCerts = new TrustManager[]{new X509TrustManager() {
+            public X509Certificate[] getAcceptedIssuers() {
+                return null;
+            }
+
+            public void checkClientTrusted(X509Certificate[] certs, String authType) {
+                return;
+            }
+
+            public void checkServerTrusted(X509Certificate[] certs, String authType) {
+                return;
+            }
+        }};
+
+        try {
+            SSLContext sc = SSLContext.getInstance("SSL");
+            sc.init(null, trustAllCerts, new SecureRandom());
+            HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
+        } catch (Exception e) {
+            return;
+        }
+    }
+
+
+}
diff --git a/jsf-test/GLASSFISH-16917/build.xml b/jsf-test/GLASSFISH-16917/build.xml
new file mode 100644
index 0000000..b9bf061
--- /dev/null
+++ b/jsf-test/GLASSFISH-16917/build.xml
@@ -0,0 +1,96 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<!-- ************ JSF build file ************************************** -->
+<project name="GLASSFISH-16917" default="test" basedir=".">
+
+    <property file="../../build.properties"/>
+    <property name="one.thousand" value="i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i [...]
+
+
+    <path id="16917.classpath">  
+        <path refid="html.classpath" />
+        <pathelement location="${basedir}/i_jsf_16917_htmlunit/target/classes"/>
+    </path>
+
+    <import file="${jsf.build.home}/common/ant/common.xml"/>
+
+    <target name="build">
+        <jsf.mvn dir="${basedir}/leaktest2-cdi-only" goals="install" />
+        <jsf.mvn dir="${basedir}/leaktest2-ManagedBean-only" goals="install" />
+    </target>    
+
+    <target name="clean">
+        <jsf.mvn dir="${basedir}/leaktest2-cdi-only" goals="clean" />
+        <jsf.mvn dir="${basedir}/leaktest2-ManagedBean-only" goals="clean" />    </target>    
+
+    <target name="install">
+    </target>    
+
+    <target name="remove">
+          <undeploy.artifact
+                artifact="${basedir}/leaktest2-cdi-only/target/leaktest2.war"
+                appName="leaktest2"/>
+          <undeploy.artifact
+                artifact="${basedir}/leaktest2-ManagedBean-only/target/leaktest2-managed-bean.war"
+                appName="leaktest2-managed-bean"/>
+    </target>    
+
+    <target name="test" depends="define.scenario.aware.port">
+        <for list="${one.thousand}" param="app" trim="true"><sequential>
+          <deploy.artifact
+                artifact="${basedir}/leaktest2-cdi-only/target/leaktest2.war"
+                appName="leaktest2"/>
+          <deploy.artifact
+                artifact="${basedir}/leaktest2-ManagedBean-only/target/leaktest2-managed-bean.war"
+                appName="leaktest2-managed-bean"/>
+          <undeploy.artifact
+                artifact="${basedir}/leaktest2-cdi-only/target/leaktest2.war"
+                appName="leaktest2"/>
+          <undeploy.artifact
+                artifact="${basedir}/leaktest2-ManagedBean-only/target/leaktest2-managed-bean.war"
+                appName="leaktest2-managed-bean"/>
+
+        </sequential></for>
+    </target>    
+
+</project>
diff --git a/jsf-test/GLASSFISH-16917/leaktest2-ManagedBean-only/pom.xml b/jsf-test/GLASSFISH-16917/leaktest2-ManagedBean-only/pom.xml
new file mode 100644
index 0000000..0b8e86d
--- /dev/null
+++ b/jsf-test/GLASSFISH-16917/leaktest2-ManagedBean-only/pom.xml
@@ -0,0 +1,56 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <groupId>com.mycompany</groupId>
+    <artifactId>leaktest2-managed-bean</artifactId>
+    <version>1.0-SNAPSHOT</version>
+    <packaging>war</packaging>
+
+    <name>leaktest2 Web App</name>
+
+    <properties>
+        <endorsed.dir>${project.build.directory}/endorsed</endorsed.dir>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>javax</groupId>
+            <artifactId>javaee-web-api</artifactId>
+            <version>6.0</version>
+            <scope>provided</scope>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+          <plugin>
+            <groupId>org.apache.maven.plugins</groupId>
+            <artifactId>maven-war-plugin</artifactId>
+            <version>2.1.1</version>
+          </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>2.3.2</version>
+                <configuration>
+                    <source>1.6</source>
+                    <target>1.6</target>
+                    <compilerArguments>
+                        <endorseddirs>${endorsed.dir}</endorseddirs>
+                    </compilerArguments>
+                </configuration>
+            </plugin>
+        </plugins>
+        <finalName>leaktest2-managed-bean</finalName>
+    </build>
+    <repositories>
+        <repository>
+            <url>http://download.java.net/maven/2/</url>
+            <id>jsf20</id>
+            <layout>default</layout>
+            <name>Repository for library Library[jsf20]</name>
+        </repository>
+    </repositories>
+</project>
diff --git a/jsf-test/GLASSFISH-16917/leaktest2-ManagedBean-only/src/main/java/com/mycompany/leaktest2/TestBean.java b/jsf-test/GLASSFISH-16917/leaktest2-ManagedBean-only/src/main/java/com/mycompany/leaktest2/TestBean.java
new file mode 100644
index 0000000..d7ca4e6
--- /dev/null
+++ b/jsf-test/GLASSFISH-16917/leaktest2-ManagedBean-only/src/main/java/com/mycompany/leaktest2/TestBean.java
@@ -0,0 +1,10 @@
+package com.mycompany.leaktest2;
+
+ at javax.faces.bean.ManagedBean
+public class TestBean {
+    
+    public String getHello() {
+        return "Hello";
+    }
+    
+}
\ No newline at end of file
diff --git a/jsf-test/GLASSFISH-16917/leaktest2-ManagedBean-only/src/main/webapp/WEB-INF/web.xml b/jsf-test/GLASSFISH-16917/leaktest2-ManagedBean-only/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..7b33aef
--- /dev/null
+++ b/jsf-test/GLASSFISH-16917/leaktest2-ManagedBean-only/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+</web-app>
diff --git a/jsf-test/GLASSFISH-16917/leaktest2-cdi-only/pom.xml b/jsf-test/GLASSFISH-16917/leaktest2-cdi-only/pom.xml
new file mode 100644
index 0000000..e1eef04
--- /dev/null
+++ b/jsf-test/GLASSFISH-16917/leaktest2-cdi-only/pom.xml
@@ -0,0 +1,56 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <groupId>com.mycompany</groupId>
+    <artifactId>leaktest2</artifactId>
+    <version>1.0-SNAPSHOT</version>
+    <packaging>war</packaging>
+
+    <name>leaktest2 Web App</name>
+
+    <properties>
+        <endorsed.dir>${project.build.directory}/endorsed</endorsed.dir>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>javax</groupId>
+            <artifactId>javaee-web-api</artifactId>
+            <version>6.0</version>
+            <scope>provided</scope>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+          <plugin>
+            <groupId>org.apache.maven.plugins</groupId>
+            <artifactId>maven-war-plugin</artifactId>
+            <version>2.1.1</version>
+          </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>2.3.2</version>
+                <configuration>
+                    <source>1.6</source>
+                    <target>1.6</target>
+                    <compilerArguments>
+                        <endorseddirs>${endorsed.dir}</endorseddirs>
+                    </compilerArguments>
+                </configuration>
+            </plugin>
+        </plugins>
+        <finalName>leaktest2</finalName>
+    </build>
+    <repositories>
+        <repository>
+            <url>http://download.java.net/maven/2/</url>
+            <id>jsf20</id>
+            <layout>default</layout>
+            <name>Repository for library Library[jsf20]</name>
+        </repository>
+    </repositories>
+</project>
diff --git a/jsf-test/GLASSFISH-16917/leaktest2-cdi-only/src/main/java/com/mycompany/leaktest2/TestBean.java b/jsf-test/GLASSFISH-16917/leaktest2-cdi-only/src/main/java/com/mycompany/leaktest2/TestBean.java
new file mode 100644
index 0000000..2f70879
--- /dev/null
+++ b/jsf-test/GLASSFISH-16917/leaktest2-cdi-only/src/main/java/com/mycompany/leaktest2/TestBean.java
@@ -0,0 +1,9 @@
+package com.mycompany.leaktest2;
+
+public class TestBean {
+    
+    public String getHello() {
+        return "Hello";
+    }
+    
+}
\ No newline at end of file
diff --git a/jsf-test/GLASSFISH-16917/leaktest2-cdi-only/src/main/webapp/WEB-INF/beans.xml b/jsf-test/GLASSFISH-16917/leaktest2-cdi-only/src/main/webapp/WEB-INF/beans.xml
new file mode 100644
index 0000000..4ca8195
--- /dev/null
+++ b/jsf-test/GLASSFISH-16917/leaktest2-cdi-only/src/main/webapp/WEB-INF/beans.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://java.sun.com/xml/ns/javaee"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
+</beans>
diff --git a/jsf-test/GLASSFISH-16917/leaktest2-cdi-only/src/main/webapp/WEB-INF/web.xml b/jsf-test/GLASSFISH-16917/leaktest2-cdi-only/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..7b33aef
--- /dev/null
+++ b/jsf-test/GLASSFISH-16917/leaktest2-cdi-only/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+</web-app>
diff --git a/jsf-test/GLASSFISH-17218/build.xml b/jsf-test/GLASSFISH-17218/build.xml
new file mode 100644
index 0000000..f02edfb
--- /dev/null
+++ b/jsf-test/GLASSFISH-17218/build.xml
@@ -0,0 +1,124 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!-- ************ JSF build file ************************************** -->
+
+<project name="GLASSFISH-17218" default="test" basedir=".">
+
+    <property file="../../build.properties"/>
+    <path id="17218.classpath">  
+        <path refid="html.classpath" />
+        <pathelement location="${basedir}/i_glassfish_17218_htmlunit/target/classes"/>
+    </path>
+
+    <import file="${jsf.build.home}/common/ant/common.xml"/>   
+    <import file="${jsf.build.home}/common/ant/test-app.xml"/>   
+
+    <target name="build">
+
+      <jsf.mvn dir="${basedir}/i_glassfish_17218_mojarra_1_2_war" goals="install" />
+      <jsf.mvn dir="${basedir}/i_glassfish_17218_myfaces_1_2_war" goals="install" />
+      <jsf.mvn dir="${basedir}/i_glassfish_17218_htmlunit" goals="install" />
+
+    </target>    
+
+    <target name="clean">
+
+      <jsf.mvn dir="${basedir}/i_glassfish_17218_mojarra_1_2_war" goals="clean" />
+      <jsf.mvn dir="${basedir}/i_glassfish_17218_myfaces_1_2_war" goals="clean" />
+      <jsf.mvn dir="${basedir}/i_glassfish_17218_htmlunit" goals="clean" />
+
+    </target>    
+
+    <target name="install">
+
+      <deploy.artifact
+              artifact="${basedir}/i_glassfish_17218_mojarra_1_2_war/target/i_glassfish_17218_mojarra_1_2_war.war"
+              appName="i_glassfish_17218_mojarra_1_2_war"/>
+
+      <deploy.artifact
+              artifact="${basedir}/i_glassfish_17218_myfaces_1_2_war/target/i_glassfish_17218_myfaces_1_2_war.war"
+              appName="i_glassfish_17218_myfaces_1_2_war"/>
+
+
+    </target>    
+
+    <target name="remove">
+
+      <undeploy.artifact
+              artifact="${basedir}/i_glassfish_17218_mojarra_1_2_war/target/i_glassfish_17218_mojarra_1_2_war.war"
+              appName="i_glassfish_17218_mojarra_1_2_war"/>
+
+      <undeploy.artifact
+              artifact="${basedir}/i_glassfish_17218_myfaces_1_2_war/target/i_glassfish_17218_myfaces_1_2_war.war"
+              appName="i_glassfish_17218_myfaces_1_2_war"/>
+
+
+    </target>    
+
+    <target name="test" depends="define.scenario.aware.port">
+
+      <jsf.junit context-path="/i_glassfish_17218_myfaces_1_2_war"
+                 classpath-refid="17218.classpath"    
+                 test-results-dir="${regression.test.results.dir}">
+          <tests>
+            <fileset dir="${basedir}/i_glassfish_17218_htmlunit/target/classes"
+                     includes="com/sun/faces/regression/i_glassfish_17218_htmlunit/IssueGLASSFISH_17218MyFacesTestCase.class"/> 
+          </tests>
+      </jsf.junit>
+<!-- enable when running against a version of GlassFish that has GLASSFISH-17218 fixed.
+      <jsf.junit context-path="/i_glassfish_17218_mojarra_1_2_war"
+                 classpath-refid="17218.classpath"    
+                 test-results-dir="${regression.test.results.dir}">
+          <tests>
+            <fileset dir="${basedir}/i_glassfish_17218_htmlunit/target/classes"
+                     includes="com/sun/faces/regression/i_glassfish_17218_htmlunit/IssueGLASSFISH_17218MojarraTestCase.class"/> 
+          </tests>
+      </jsf.junit>
+-->
+
+    </target>    
+
+
+        
+</project>
diff --git a/jsf-test/GLASSFISH-17218/i_glassfish_17218_htmlunit/pom.xml b/jsf-test/GLASSFISH-17218/i_glassfish_17218_htmlunit/pom.xml
new file mode 100644
index 0000000..06b4d06
--- /dev/null
+++ b/jsf-test/GLASSFISH-17218/i_glassfish_17218_htmlunit/pom.xml
@@ -0,0 +1,97 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+   <modelVersion>4.0.0</modelVersion>
+   <groupId>com.sun.faces.regression</groupId>
+   <artifactId>i_glassfish_17218_htmlunit</artifactId>
+   <packaging>jar</packaging>
+   <name>i_glassfish_17218_htmlunit</name>
+   <version>1.0</version>
+
+   <dependencies>
+
+      <dependency>
+	<artifactId>htmlunit</artifactId>
+	<groupId>net.sourceforge.htmlunit</groupId>
+	<version>2.4</version>
+         <scope>provided</scope>
+      </dependency>
+      <dependency>
+         <groupId>junit</groupId>
+         <artifactId>junit</artifactId>
+         <version>3.8.1</version>
+         <scope>provided</scope>
+      </dependency>
+      <dependency>
+	<groupId>com.sun.faces.extensions</groupId>
+	<artifactId>jsf-extensions-test-time</artifactId>
+	<version>2.0</version>
+	<scope>provided</scope>
+      </dependency>
+
+   </dependencies>
+
+   <build>
+      <plugins>
+         <plugin>
+            <groupId>org.apache.maven.plugins</groupId>
+            <artifactId>maven-compiler-plugin</artifactId>
+            <version>2.0.2</version>
+            <configuration>
+               <source>1.6</source>
+               <target>1.6</target>
+            </configuration>
+         </plugin>
+      </plugins>
+      <finalName>i_glassfish_17218_htmlunit</finalName>
+   </build>
+
+   <repositories>
+     <repository>
+       <id>java.net</id>
+       <name>java.net</name>
+       <url>http://download.java.net/maven/2</url>
+       <layout>default</layout>
+     </repository>
+   </repositories>
+
+</project>
diff --git a/jsf-test/GLASSFISH-17218/i_glassfish_17218_htmlunit/src/main/java/com/sun/faces/regression/i_glassfish_17218_htmlunit/IssueGLASSFISH_17218MojarraTestCase.java b/jsf-test/GLASSFISH-17218/i_glassfish_17218_htmlunit/src/main/java/com/sun/faces/regression/i_glassfish_17218_htmlunit/IssueGLASSFISH_17218MojarraTestCase.java
new file mode 100644
index 0000000..c463dea
--- /dev/null
+++ b/jsf-test/GLASSFISH-17218/i_glassfish_17218_htmlunit/src/main/java/com/sun/faces/regression/i_glassfish_17218_htmlunit/IssueGLASSFISH_17218MojarraTestCase.java
@@ -0,0 +1,88 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.regression.i_glassfish_17218_htmlunit;
+
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
+import com.sun.faces.htmlunit.HtmlUnitFacesTestCase;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+
+public class IssueGLASSFISH_17218MojarraTestCase extends HtmlUnitFacesTestCase {
+
+    public IssueGLASSFISH_17218MojarraTestCase(String name) {
+        super(name);
+    }
+
+
+    /**
+     * Return the tests included in this test suite.
+     */
+    public static Test suite() {
+        return (new TestSuite(IssueGLASSFISH_17218MojarraTestCase.class));
+    }
+
+
+    // ------------------------------------------------------------ Test Methods
+
+    public void testBasicAppFunctionality() throws Exception {
+
+        HtmlPage page = getPage("/faces/greeting.jsp");
+        String name = "Bobby";
+
+        assertTrue(page.asXml().contains("javax.faces.ViewState"));
+        
+        HtmlTextInput field = (HtmlTextInput) page.getElementById("helloForm:username");
+        field.setValueAttribute(name);
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("helloForm:submit");
+        page = button.click();
+        
+        String pageText = page.asText();
+        assertTrue(pageText.contains(name));
+        assertTrue(pageText.contains("com.sun.faces"));
+        assertTrue(pageText.contains("jsf version != 2.0"));
+    }
+
+
+}
diff --git a/jsf-test/GLASSFISH-17218/i_glassfish_17218_htmlunit/src/main/java/com/sun/faces/regression/i_glassfish_17218_htmlunit/IssueGLASSFISH_17218MyFacesTestCase.java b/jsf-test/GLASSFISH-17218/i_glassfish_17218_htmlunit/src/main/java/com/sun/faces/regression/i_glassfish_17218_htmlunit/IssueGLASSFISH_17218MyFacesTestCase.java
new file mode 100644
index 0000000..6f09283
--- /dev/null
+++ b/jsf-test/GLASSFISH-17218/i_glassfish_17218_htmlunit/src/main/java/com/sun/faces/regression/i_glassfish_17218_htmlunit/IssueGLASSFISH_17218MyFacesTestCase.java
@@ -0,0 +1,88 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.regression.i_glassfish_17218_htmlunit;
+
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
+import com.sun.faces.htmlunit.HtmlUnitFacesTestCase;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+
+public class IssueGLASSFISH_17218MyFacesTestCase extends HtmlUnitFacesTestCase {
+
+    public IssueGLASSFISH_17218MyFacesTestCase(String name) {
+        super(name);
+    }
+
+
+    /**
+     * Return the tests included in this test suite.
+     */
+    public static Test suite() {
+        return (new TestSuite(IssueGLASSFISH_17218MyFacesTestCase.class));
+    }
+
+
+    // ------------------------------------------------------------ Test Methods
+
+    public void testBasicAppFunctionality() throws Exception {
+
+        HtmlPage page = getPage("/faces/greeting.jsp");
+        String name = "Bobby";
+
+        assertTrue(page.asXml().contains("javax.faces.ViewState"));
+        
+        HtmlTextInput field = (HtmlTextInput) page.getElementById("helloForm:username");
+        field.setValueAttribute(name);
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("helloForm:submit");
+        page = button.click();
+        
+        String pageText = page.asText();
+        assertTrue(pageText.contains(name));
+        assertTrue(pageText.contains("org.apache.myfaces"));
+        assertTrue(pageText.contains("jsf version != 2.0"));
+    }
+
+
+}
diff --git a/jsf-test/GLASSFISH-17218/i_glassfish_17218_mojarra_1_2_war/pom.xml b/jsf-test/GLASSFISH-17218/i_glassfish_17218_mojarra_1_2_war/pom.xml
new file mode 100644
index 0000000..519b41c
--- /dev/null
+++ b/jsf-test/GLASSFISH-17218/i_glassfish_17218_mojarra_1_2_war/pom.xml
@@ -0,0 +1,137 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <groupId>com.sun.faces.regression</groupId>
+    <artifactId>i_glassfish_17218_mojarra_1_2_war</artifactId>
+    <version>1.0</version>
+    <packaging>war</packaging>
+    <build>
+        <finalName>i_glassfish_17218_mojarra_1_2_war</finalName>
+        <plugins>
+          <plugin>
+            <groupId>org.apache.maven.plugins</groupId>
+            <artifactId>maven-war-plugin</artifactId>
+            <version>2.1.1</version>
+          </plugin>
+            <plugin>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                    <source>1.6</source>
+                    <target>1.6</target>
+                </configuration>
+            </plugin>
+            <plugin>
+                <artifactId>maven-dependency-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <phase>install</phase>
+                                    
+                        <configuration>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+
+        </plugins>
+        <extensions>
+            <extension>
+                <groupId>org.jvnet.wagon-svn</groupId>
+                <artifactId>wagon-svn</artifactId>
+                <version>1.12</version>
+            </extension>
+        </extensions>
+    </build>
+    <dependencies>
+      <dependency>
+          <groupId>javax.faces</groupId>
+          <artifactId>jsf-api</artifactId>
+          <version>1.2_15-B02</version>
+          <scope>compile</scope>
+      </dependency>
+      <dependency>
+          <groupId>javax.faces</groupId>
+          <artifactId>jsf-impl</artifactId>
+          <version>1.2_15-B02</version>
+          <scope>compile</scope>
+      </dependency>
+      <dependency>
+          <groupId>javax</groupId>
+          <artifactId>javaee-api</artifactId>
+          <version>6.0</version>
+          <scope>provided</scope>
+      </dependency>
+    </dependencies>
+
+
+    <distributionManagement>
+        <repository>
+            <uniqueVersion>false</uniqueVersion>
+            <id>java.net-maven2-repository</id>
+            <url>java-net:/maven2-repository~svn/trunk/repository/</url>
+        </repository>
+    </distributionManagement>
+
+    <repositories>
+        <repository>
+          <id>java.net.maven1</id>
+          <name>java.net</name>
+          <url>http://download.java.net/maven/1</url>
+          <layout>legacy</layout>
+        </repository>
+        <repository>
+            <id>java.net</id>
+            <name>java.net</name>
+            <url>http://download.java.net/maven/2</url>
+            <layout>default</layout>
+        </repository>
+    </repositories>
+    <properties>
+        <netbeans.hint.deploy.server>gfv3ee6</netbeans.hint.deploy.server>
+    </properties>
+</project>
+
+
diff --git a/jsf-test/GLASSFISH-17218/i_glassfish_17218_mojarra_1_2_war/src/main/java/helloDuke/UserNameBean.java b/jsf-test/GLASSFISH-17218/i_glassfish_17218_mojarra_1_2_war/src/main/java/helloDuke/UserNameBean.java
new file mode 100644
index 0000000..71e36a3
--- /dev/null
+++ b/jsf-test/GLASSFISH-17218/i_glassfish_17218_mojarra_1_2_war/src/main/java/helloDuke/UserNameBean.java
@@ -0,0 +1,78 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License. You can obtain
+ * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
+ * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
+ * Sun designates this particular file as subject to the "Classpath" exception
+ * as provided by Sun in the GPL Version 2 section of the License file that
+ * accompanied this code.  If applicable, add the following below the License
+ * Header, with the fields enclosed by brackets [] replaced by your own
+ * identifying information: "Portions Copyrighted [year]
+ * [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * 
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package helloDuke;
+
+import java.lang.reflect.Method;
+import javax.faces.context.FacesContext;
+
+public class UserNameBean {
+
+    String userName = "";
+
+
+    public UserNameBean() {
+        System.out.println("Model Object Created");
+    }
+
+
+    public void setUserName(String user_name) {
+        userName = user_name;
+        System.out.println("Set userName " + userName);
+    }
+
+
+    public String getUserName() {
+        System.out.println("get userName " + userName);
+        return userName;
+    }
+        
+    public String getVersionMessage() {
+        FacesContext context = FacesContext.getCurrentInstance();
+        String facesContextClassName = context.toString();
+        String assertJsf1_2 = "jsf version >= 2.0";
+        
+        try {
+            Class clazz = context.getClass();
+            Method method = clazz.getDeclaredMethod("getPartialViewContext");
+        } catch (Throwable e) {
+            assertJsf1_2 = "jsf version != 2.0";
+        }
+        
+        return "FacesContext implementation className: " + facesContextClassName + ". " + assertJsf1_2;
+    }
+
+}
diff --git a/jsf-test/GLASSFISH-17218/i_glassfish_17218_mojarra_1_2_war/src/main/webapp/WEB-INF/faces-config.xml b/jsf-test/GLASSFISH-17218/i_glassfish_17218_mojarra_1_2_war/src/main/webapp/WEB-INF/faces-config.xml
new file mode 100644
index 0000000..fc66e8f
--- /dev/null
+++ b/jsf-test/GLASSFISH-17218/i_glassfish_17218_mojarra_1_2_war/src/main/webapp/WEB-INF/faces-config.xml
@@ -0,0 +1,63 @@
+<?xml version='1.0' encoding='UTF-8'?>
+
+<!--
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ 
+ Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+ 
+ The contents of this file are subject to the terms of either the GNU
+ General Public License Version 2 only ("GPL") or the Common Development
+ and Distribution License("CDDL") (collectively, the "License").  You
+ may not use this file except in compliance with the License. You can obtain
+ a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
+ or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ language governing permissions and limitations under the License.
+ 
+ When distributing the software, include this License Header Notice in each
+ file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
+ Sun designates this particular file as subject to the "Classpath" exception
+ as provided by Sun in the GPL Version 2 section of the License file that
+ accompanied this code.  If applicable, add the following below the License
+ Header, with the fields enclosed by brackets [] replaced by your own
+ identifying information: "Portions Copyrighted [year]
+ [name of copyright owner]"
+ 
+ Contributor(s):
+ 
+ If you wish your version of this file to be governed by only the CDDL or
+ only the GPL Version 2, indicate your decision by adding "[Contributor]
+ elects to include this software in this distribution under the [CDDL or GPL
+ Version 2] license."  If you don't indicate a single choice of license, a
+ recipient has the option to distribute your version of this file under
+ either the CDDL, the GPL Version 2 or to extend the choice of license to
+ its licensees as provided above.  However, if you add GPL Version 2 code
+ and therefore, elected the GPL Version 2 license, then the option applies
+ only if the new code is made subject to such option by the copyright
+ holder.
+-->
+
+<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd"
+    version="1.2">
+
+
+  <!-- Tell Duke your name -->
+  <navigation-rule>
+    <from-view-id>/greeting.jsp</from-view-id>
+    <navigation-case>
+      <from-outcome>success</from-outcome>
+      <to-view-id>/response.jsp</to-view-id>
+    </navigation-case>
+  </navigation-rule>
+
+  <!-- Return to greeting page -->
+  <navigation-rule>
+    <from-view-id>/response.jsp</from-view-id>
+    <navigation-case>
+      <from-outcome>success</from-outcome>
+      <to-view-id>/greeting.jsp</to-view-id>
+    </navigation-case>
+  </navigation-rule>
+
+</faces-config>
diff --git a/jsf-test/GLASSFISH-17218/i_glassfish_17218_mojarra_1_2_war/src/main/webapp/WEB-INF/sun-web.xml b/jsf-test/GLASSFISH-17218/i_glassfish_17218_mojarra_1_2_war/src/main/webapp/WEB-INF/sun-web.xml
new file mode 100644
index 0000000..42dcadd
--- /dev/null
+++ b/jsf-test/GLASSFISH-17218/i_glassfish_17218_mojarra_1_2_war/src/main/webapp/WEB-INF/sun-web.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE sun-web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Application Server 9.0 Servlet 2.5//EN" "http://www.sun.com/software/appserver/dtds/sun-web-app_2_5-0.dtd">
+
+<sun-web-app>
+  <class-loader delegate="false"/>
+  <property name="useBundledJsf" value="true" />
+</sun-web-app>
diff --git a/jsf-test/GLASSFISH-17218/i_glassfish_17218_mojarra_1_2_war/src/main/webapp/WEB-INF/web.xml b/jsf-test/GLASSFISH-17218/i_glassfish_17218_mojarra_1_2_war/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..f9f72ee
--- /dev/null
+++ b/jsf-test/GLASSFISH-17218/i_glassfish_17218_mojarra_1_2_war/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,68 @@
+<?xml version='1.0' encoding='UTF-8'?>
+
+<!--
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ 
+ Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+ 
+ The contents of this file are subject to the terms of either the GNU
+ General Public License Version 2 only ("GPL") or the Common Development
+ and Distribution License("CDDL") (collectively, the "License").  You
+ may not use this file except in compliance with the License. You can obtain
+ a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
+ or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ language governing permissions and limitations under the License.
+ 
+ When distributing the software, include this License Header Notice in each
+ file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
+ Sun designates this particular file as subject to the "Classpath" exception
+ as provided by Sun in the GPL Version 2 section of the License file that
+ accompanied this code.  If applicable, add the following below the License
+ Header, with the fields enclosed by brackets [] replaced by your own
+ identifying information: "Portions Copyrighted [year]
+ [name of copyright owner]"
+ 
+ Contributor(s):
+ 
+ If you wish your version of this file to be governed by only the CDDL or
+ only the GPL Version 2, indicate your decision by adding "[Contributor]
+ elects to include this software in this distribution under the [CDDL or GPL
+ Version 2] license."  If you don't indicate a single choice of license, a
+ recipient has the option to distribute your version of this file under
+ either the CDDL, the GPL Version 2 or to extend the choice of license to
+ its licensees as provided above.  However, if you add GPL Version 2 code
+ and therefore, elected the GPL Version 2 license, then the option applies
+ only if the new code is made subject to such option by the copyright
+ holder.
+-->
+
+<web-app version="2.5"
+         xmlns="http://java.sun.com/xml/ns/javaee"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" >
+    
+    <display-name>JavaServer Faces Hello Duke Sample Application</display-name>
+    <description>
+        JavaServer Faces Hello Duke Sample Application
+    </description>
+
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>server</param-value>
+    </context-param>
+    
+    <!-- Faces Servlet -->
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup> 1 </load-on-startup>
+    </servlet>
+
+
+    <!-- Faces Servlet Mapping -->
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+
+</web-app>
diff --git a/jsf-test/GLASSFISH-17218/i_glassfish_17218_mojarra_1_2_war/src/main/webapp/error.jsp b/jsf-test/GLASSFISH-17218/i_glassfish_17218_mojarra_1_2_war/src/main/webapp/error.jsp
new file mode 100644
index 0000000..ed03d95
--- /dev/null
+++ b/jsf-test/GLASSFISH-17218/i_glassfish_17218_mojarra_1_2_war/src/main/webapp/error.jsp
@@ -0,0 +1,74 @@
+<%--
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ 
+ Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+ 
+ The contents of this file are subject to the terms of either the GNU
+ General Public License Version 2 only ("GPL") or the Common Development
+ and Distribution License("CDDL") (collectively, the "License").  You
+ may not use this file except in compliance with the License. You can obtain
+ a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
+ or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ language governing permissions and limitations under the License.
+ 
+ When distributing the software, include this License Header Notice in each
+ file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
+ Sun designates this particular file as subject to the "Classpath" exception
+ as provided by Sun in the GPL Version 2 section of the License file that
+ accompanied this code.  If applicable, add the following below the License
+ Header, with the fields enclosed by brackets [] replaced by your own
+ identifying information: "Portions Copyrighted [year]
+ [name of copyright owner]"
+ 
+ Contributor(s):
+ 
+ If you wish your version of this file to be governed by only the CDDL or
+ only the GPL Version 2, indicate your decision by adding "[Contributor]
+ elects to include this software in this distribution under the [CDDL or GPL
+ Version 2] license."  If you don't indicate a single choice of license, a
+ recipient has the option to distribute your version of this file under
+ either the CDDL, the GPL Version 2 or to extend the choice of license to
+ its licensees as provided above.  However, if you add GPL Version 2 code
+ and therefore, elected the GPL Version 2 license, then the option applies
+ only if the new code is made subject to such option by the copyright
+ holder.
+--%>
+
+<!--
+ The contents of this file are subject to the terms
+ of the Common Development and Distribution License
+ (the License). You may not use this file except in
+ compliance with the License.
+ 
+ You can obtain a copy of the License at
+ https://javaserverfaces.dev.java.net/CDDL.html or
+ legal/CDDLv1.0.txt. 
+ See the License for the specific language governing
+ permission and limitations under the License.
+ 
+ When distributing Covered Code, include this CDDL
+ Header Notice in each file and include the License file
+ at legal/CDDLv1.0.txt.    
+ If applicable, add the following below the CDDL Header,
+ with the fields enclosed by brackets [] replaced by
+ your own identifying information:
+ "Portions Copyrighted [year] [name of copyright owner]"
+ 
+ [Name of File] [ver.__] [Date]
+ 
+ Copyright 2005 Sun Microsystems Inc. All Rights Reserved
+-->
+
+<HTML>
+    <HEAD> <TITLE> JSF Basic Components Test Page </TITLE> </HEAD>
+    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
+    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+    <H3> JSF Basic Components Test Page </H3>
+    <hr>
+      <f:view>
+        <h:form id="errorForm">
+            <h:outputText id="helloLabel" text="Login Failed" />
+             <P></P>
+        </h:form>
+       </f:view>
+</HTML>
diff --git a/jsf-test/GLASSFISH-17218/i_glassfish_17218_mojarra_1_2_war/src/main/webapp/greeting.jsp b/jsf-test/GLASSFISH-17218/i_glassfish_17218_mojarra_1_2_war/src/main/webapp/greeting.jsp
new file mode 100644
index 0000000..a58afcb
--- /dev/null
+++ b/jsf-test/GLASSFISH-17218/i_glassfish_17218_mojarra_1_2_war/src/main/webapp/greeting.jsp
@@ -0,0 +1,78 @@
+<%--
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ 
+ Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+ 
+ The contents of this file are subject to the terms of either the GNU
+ General Public License Version 2 only ("GPL") or the Common Development
+ and Distribution License("CDDL") (collectively, the "License").  You
+ may not use this file except in compliance with the License. You can obtain
+ a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
+ or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ language governing permissions and limitations under the License.
+ 
+ When distributing the software, include this License Header Notice in each
+ file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
+ Sun designates this particular file as subject to the "Classpath" exception
+ as provided by Sun in the GPL Version 2 section of the License file that
+ accompanied this code.  If applicable, add the following below the License
+ Header, with the fields enclosed by brackets [] replaced by your own
+ identifying information: "Portions Copyrighted [year]
+ [name of copyright owner]"
+ 
+ Contributor(s):
+ 
+ If you wish your version of this file to be governed by only the CDDL or
+ only the GPL Version 2, indicate your decision by adding "[Contributor]
+ elects to include this software in this distribution under the [CDDL or GPL
+ Version 2] license."  If you don't indicate a single choice of license, a
+ recipient has the option to distribute your version of this file under
+ either the CDDL, the GPL Version 2 or to extend the choice of license to
+ its licensees as provided above.  However, if you add GPL Version 2 code
+ and therefore, elected the GPL Version 2 license, then the option applies
+ only if the new code is made subject to such option by the copyright
+ holder.
+--%>
+
+<!--
+ The contents of this file are subject to the terms
+ of the Common Development and Distribution License
+ (the License). You may not use this file except in
+ compliance with the License.
+ 
+ You can obtain a copy of the License at
+ https://javaserverfaces.dev.java.net/CDDL.html or
+ legal/CDDLv1.0.txt. 
+ See the License for the specific language governing
+ permission and limitations under the License.
+ 
+ When distributing Covered Code, include this CDDL
+ Header Notice in each file and include the License file
+ at legal/CDDLv1.0.txt.    
+ If applicable, add the following below the CDDL Header,
+ with the fields enclosed by brackets [] replaced by
+ your own identifying information:
+ "Portions Copyrighted [year] [name of copyright owner]"
+ 
+ [Name of File] [ver.__] [Date]
+ 
+ Copyright 2005 Sun Microsystems Inc. All Rights Reserved
+-->
+
+<HTML>
+    <HEAD> <title>Hello</title> </HEAD>
+    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
+    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+    <body bgcolor="white">
+    <h2>My name is Duke.  What is yours?</h2>
+    <jsp:useBean id="UserNameBean" class="helloDuke.UserNameBean" scope="session" />
+    <f:view>
+    <h:form id="helloForm" >
+        <h:graphicImage id="waveImg" url="/wave.med.gif" />
+  	<h:inputText id="username"
+			value="#{UserNameBean.userName}"/>
+  	<h:commandButton id="submit" action="success" value="Submit" 
+		          type="submit" />
+    </h:form>
+    </f:view>
+</HTML>  
diff --git a/jsf-test/GLASSFISH-17218/i_glassfish_17218_mojarra_1_2_war/src/main/webapp/index.html b/jsf-test/GLASSFISH-17218/i_glassfish_17218_mojarra_1_2_war/src/main/webapp/index.html
new file mode 100644
index 0000000..8b061d0
--- /dev/null
+++ b/jsf-test/GLASSFISH-17218/i_glassfish_17218_mojarra_1_2_war/src/main/webapp/index.html
@@ -0,0 +1,54 @@
+<!--
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+ Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+
+ The contents of this file are subject to the terms of either the GNU
+ General Public License Version 2 only ("GPL") or the Common Development
+ and Distribution License("CDDL") (collectively, the "License").  You
+ may not use this file except in compliance with the License. You can obtain
+ a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
+ or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ language governing permissions and limitations under the License.
+
+ When distributing the software, include this License Header Notice in each
+ file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
+ Sun designates this particular file as subject to the "Classpath" exception
+ as provided by Sun in the GPL Version 2 section of the License file that
+ accompanied this code.  If applicable, add the following below the License
+ Header, with the fields enclosed by brackets [] replaced by your own
+ identifying information: "Portions Copyrighted [year]
+ [name of copyright owner]"
+
+ Contributor(s):
+
+ If you wish your version of this file to be governed by only the CDDL or
+ only the GPL Version 2, indicate your decision by adding "[Contributor]
+ elects to include this software in this distribution under the [CDDL or GPL
+ Version 2] license."  If you don't indicate a single choice of license, a
+ recipient has the option to distribute your version of this file under
+ either the CDDL, the GPL Version 2 or to extend the choice of license to
+ its licensees as provided above.  However, if you add GPL Version 2 code
+ and therefore, elected the GPL Version 2 license, then the option applies
+ only if the new code is made subject to such option by the copyright
+ holder.
+-->
+<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
+<html>
+<head>
+   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+   <meta name="GENERATOR" content="Mozilla/4.75 [en] (WinNT; U) [Netscape]">
+   <title>index</title>
+</head>
+<body>
+ 
+<br> 
+
+
+<P>Click  <a href="faces/greeting.jsp">here</a> 
+to say hello to Duke. </P>
+
+<br>
+<hr WIDTH="100%">
+</body>
+</html>
diff --git a/jsf-test/GLASSFISH-17218/i_glassfish_17218_mojarra_1_2_war/src/main/webapp/response.jsp b/jsf-test/GLASSFISH-17218/i_glassfish_17218_mojarra_1_2_war/src/main/webapp/response.jsp
new file mode 100644
index 0000000..72044b7
--- /dev/null
+++ b/jsf-test/GLASSFISH-17218/i_glassfish_17218_mojarra_1_2_war/src/main/webapp/response.jsp
@@ -0,0 +1,78 @@
+<%--
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ 
+ Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+ 
+ The contents of this file are subject to the terms of either the GNU
+ General Public License Version 2 only ("GPL") or the Common Development
+ and Distribution License("CDDL") (collectively, the "License").  You
+ may not use this file except in compliance with the License. You can obtain
+ a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
+ or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ language governing permissions and limitations under the License.
+ 
+ When distributing the software, include this License Header Notice in each
+ file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
+ Sun designates this particular file as subject to the "Classpath" exception
+ as provided by Sun in the GPL Version 2 section of the License file that
+ accompanied this code.  If applicable, add the following below the License
+ Header, with the fields enclosed by brackets [] replaced by your own
+ identifying information: "Portions Copyrighted [year]
+ [name of copyright owner]"
+ 
+ Contributor(s):
+ 
+ If you wish your version of this file to be governed by only the CDDL or
+ only the GPL Version 2, indicate your decision by adding "[Contributor]
+ elects to include this software in this distribution under the [CDDL or GPL
+ Version 2] license."  If you don't indicate a single choice of license, a
+ recipient has the option to distribute your version of this file under
+ either the CDDL, the GPL Version 2 or to extend the choice of license to
+ its licensees as provided above.  However, if you add GPL Version 2 code
+ and therefore, elected the GPL Version 2 license, then the option applies
+ only if the new code is made subject to such option by the copyright
+ holder.
+--%>
+
+<!--
+ The contents of this file are subject to the terms
+ of the Common Development and Distribution License
+ (the License). You may not use this file except in
+ compliance with the License.
+ 
+ You can obtain a copy of the License at
+ https://javaserverfaces.dev.java.net/CDDL.html or
+ legal/CDDLv1.0.txt. 
+ See the License for the specific language governing
+ permission and limitations under the License.
+ 
+ When distributing Covered Code, include this CDDL
+ Header Notice in each file and include the License file
+ at legal/CDDLv1.0.txt.    
+ If applicable, add the following below the CDDL Header,
+ with the fields enclosed by brackets [] replaced by
+ your own identifying information:
+ "Portions Copyrighted [year] [name of copyright owner]"
+ 
+ [Name of File] [ver.__] [Date]
+ 
+ Copyright 2005 Sun Microsystems Inc. All Rights Reserved
+-->
+<HTML>
+    <HEAD> <title>Hello</title> </HEAD>
+    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
+    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+    <body bgcolor="white">
+    <f:view>
+    <h:form id="responseform">
+    <h:graphicImage id="waveImg" url="/wave.med.gif" />
+    <h2>Hi, <h:outputText id="userLabel"
+			   value="#{UserNameBean.userName}" /> </h2>
+    
+    <p><h:outputText id="versionMessage" value="#{UserNameBean.versionMessage}" /></p>
+	 <h:commandButton id="back" value="Back" action="success" 
+                           />
+         <p>
+    </h:form>
+    </f:view>
+</HTML>  
diff --git a/jsf-test/GLASSFISH-17218/i_glassfish_17218_mojarra_1_2_war/src/main/webapp/wave.med.gif b/jsf-test/GLASSFISH-17218/i_glassfish_17218_mojarra_1_2_war/src/main/webapp/wave.med.gif
new file mode 100644
index 0000000..70b7cff
Binary files /dev/null and b/jsf-test/GLASSFISH-17218/i_glassfish_17218_mojarra_1_2_war/src/main/webapp/wave.med.gif differ
diff --git a/jsf-test/GLASSFISH-17218/i_glassfish_17218_myfaces_1_2_war/pom.xml b/jsf-test/GLASSFISH-17218/i_glassfish_17218_myfaces_1_2_war/pom.xml
new file mode 100644
index 0000000..6b27ad7
--- /dev/null
+++ b/jsf-test/GLASSFISH-17218/i_glassfish_17218_myfaces_1_2_war/pom.xml
@@ -0,0 +1,128 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <groupId>com.sun.faces.regression</groupId>
+    <artifactId>i_glassfish_17218_myfaces_1_2_war</artifactId>
+    <version>1.0</version>
+    <packaging>war</packaging>
+    <build>
+        <finalName>i_glassfish_17218_myfaces_1_2_war</finalName>
+        <plugins>
+          <plugin>
+            <groupId>org.apache.maven.plugins</groupId>
+            <artifactId>maven-war-plugin</artifactId>
+            <version>2.1.1</version>
+          </plugin>
+            <plugin>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                    <source>1.6</source>
+                    <target>1.6</target>
+                </configuration>
+            </plugin>
+            <plugin>
+                <artifactId>maven-dependency-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <phase>install</phase>
+                                    
+                        <configuration>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+
+        </plugins>
+        <extensions>
+            <extension>
+                <groupId>org.jvnet.wagon-svn</groupId>
+                <artifactId>wagon-svn</artifactId>
+                <version>1.12</version>
+            </extension>
+        </extensions>
+    </build>
+    <dependencies>
+      <dependency>
+        <groupId>org.apache.myfaces.core</groupId>
+        <artifactId>myfaces-api</artifactId>
+        <version>1.2.10</version>
+        <scope>compile</scope>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.myfaces.core</groupId>
+        <artifactId>myfaces-impl</artifactId>
+        <version>1.2.10</version>
+        <scope>compile</scope>
+      </dependency>
+      <dependency>
+          <groupId>javax</groupId>
+          <artifactId>javaee-api</artifactId>
+          <version>6.0</version>
+          <scope>provided</scope>
+      </dependency>
+    </dependencies>
+
+
+    <distributionManagement>
+        <repository>
+            <uniqueVersion>false</uniqueVersion>
+            <id>java.net-maven2-repository</id>
+            <url>java-net:/maven2-repository~svn/trunk/repository/</url>
+        </repository>
+    </distributionManagement>
+
+    <repositories>
+        <repository>
+            <id>java.net</id>
+            <name>java.net</name>
+            <url>http://download.java.net/maven/2</url>
+            <layout>default</layout>
+        </repository>
+    </repositories>
+</project>
+
+
diff --git a/jsf-test/GLASSFISH-17218/i_glassfish_17218_myfaces_1_2_war/src/main/java/helloDuke/UserNameBean.java b/jsf-test/GLASSFISH-17218/i_glassfish_17218_myfaces_1_2_war/src/main/java/helloDuke/UserNameBean.java
new file mode 100644
index 0000000..71e36a3
--- /dev/null
+++ b/jsf-test/GLASSFISH-17218/i_glassfish_17218_myfaces_1_2_war/src/main/java/helloDuke/UserNameBean.java
@@ -0,0 +1,78 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License. You can obtain
+ * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
+ * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
+ * Sun designates this particular file as subject to the "Classpath" exception
+ * as provided by Sun in the GPL Version 2 section of the License file that
+ * accompanied this code.  If applicable, add the following below the License
+ * Header, with the fields enclosed by brackets [] replaced by your own
+ * identifying information: "Portions Copyrighted [year]
+ * [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * 
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package helloDuke;
+
+import java.lang.reflect.Method;
+import javax.faces.context.FacesContext;
+
+public class UserNameBean {
+
+    String userName = "";
+
+
+    public UserNameBean() {
+        System.out.println("Model Object Created");
+    }
+
+
+    public void setUserName(String user_name) {
+        userName = user_name;
+        System.out.println("Set userName " + userName);
+    }
+
+
+    public String getUserName() {
+        System.out.println("get userName " + userName);
+        return userName;
+    }
+        
+    public String getVersionMessage() {
+        FacesContext context = FacesContext.getCurrentInstance();
+        String facesContextClassName = context.toString();
+        String assertJsf1_2 = "jsf version >= 2.0";
+        
+        try {
+            Class clazz = context.getClass();
+            Method method = clazz.getDeclaredMethod("getPartialViewContext");
+        } catch (Throwable e) {
+            assertJsf1_2 = "jsf version != 2.0";
+        }
+        
+        return "FacesContext implementation className: " + facesContextClassName + ". " + assertJsf1_2;
+    }
+
+}
diff --git a/jsf-test/GLASSFISH-17218/i_glassfish_17218_myfaces_1_2_war/src/main/webapp/WEB-INF/faces-config.xml b/jsf-test/GLASSFISH-17218/i_glassfish_17218_myfaces_1_2_war/src/main/webapp/WEB-INF/faces-config.xml
new file mode 100644
index 0000000..fc66e8f
--- /dev/null
+++ b/jsf-test/GLASSFISH-17218/i_glassfish_17218_myfaces_1_2_war/src/main/webapp/WEB-INF/faces-config.xml
@@ -0,0 +1,63 @@
+<?xml version='1.0' encoding='UTF-8'?>
+
+<!--
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ 
+ Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+ 
+ The contents of this file are subject to the terms of either the GNU
+ General Public License Version 2 only ("GPL") or the Common Development
+ and Distribution License("CDDL") (collectively, the "License").  You
+ may not use this file except in compliance with the License. You can obtain
+ a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
+ or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ language governing permissions and limitations under the License.
+ 
+ When distributing the software, include this License Header Notice in each
+ file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
+ Sun designates this particular file as subject to the "Classpath" exception
+ as provided by Sun in the GPL Version 2 section of the License file that
+ accompanied this code.  If applicable, add the following below the License
+ Header, with the fields enclosed by brackets [] replaced by your own
+ identifying information: "Portions Copyrighted [year]
+ [name of copyright owner]"
+ 
+ Contributor(s):
+ 
+ If you wish your version of this file to be governed by only the CDDL or
+ only the GPL Version 2, indicate your decision by adding "[Contributor]
+ elects to include this software in this distribution under the [CDDL or GPL
+ Version 2] license."  If you don't indicate a single choice of license, a
+ recipient has the option to distribute your version of this file under
+ either the CDDL, the GPL Version 2 or to extend the choice of license to
+ its licensees as provided above.  However, if you add GPL Version 2 code
+ and therefore, elected the GPL Version 2 license, then the option applies
+ only if the new code is made subject to such option by the copyright
+ holder.
+-->
+
+<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd"
+    version="1.2">
+
+
+  <!-- Tell Duke your name -->
+  <navigation-rule>
+    <from-view-id>/greeting.jsp</from-view-id>
+    <navigation-case>
+      <from-outcome>success</from-outcome>
+      <to-view-id>/response.jsp</to-view-id>
+    </navigation-case>
+  </navigation-rule>
+
+  <!-- Return to greeting page -->
+  <navigation-rule>
+    <from-view-id>/response.jsp</from-view-id>
+    <navigation-case>
+      <from-outcome>success</from-outcome>
+      <to-view-id>/greeting.jsp</to-view-id>
+    </navigation-case>
+  </navigation-rule>
+
+</faces-config>
diff --git a/jsf-test/GLASSFISH-17218/i_glassfish_17218_myfaces_1_2_war/src/main/webapp/WEB-INF/sun-web.xml b/jsf-test/GLASSFISH-17218/i_glassfish_17218_myfaces_1_2_war/src/main/webapp/WEB-INF/sun-web.xml
new file mode 100644
index 0000000..42dcadd
--- /dev/null
+++ b/jsf-test/GLASSFISH-17218/i_glassfish_17218_myfaces_1_2_war/src/main/webapp/WEB-INF/sun-web.xml
@@ -0,0 +1,6 @@
+<!DOCTYPE sun-web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Application Server 9.0 Servlet 2.5//EN" "http://www.sun.com/software/appserver/dtds/sun-web-app_2_5-0.dtd">
+
+<sun-web-app>
+  <class-loader delegate="false"/>
+  <property name="useBundledJsf" value="true" />
+</sun-web-app>
diff --git a/jsf-test/GLASSFISH-17218/i_glassfish_17218_myfaces_1_2_war/src/main/webapp/WEB-INF/web.xml b/jsf-test/GLASSFISH-17218/i_glassfish_17218_myfaces_1_2_war/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..f9f72ee
--- /dev/null
+++ b/jsf-test/GLASSFISH-17218/i_glassfish_17218_myfaces_1_2_war/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,68 @@
+<?xml version='1.0' encoding='UTF-8'?>
+
+<!--
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ 
+ Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+ 
+ The contents of this file are subject to the terms of either the GNU
+ General Public License Version 2 only ("GPL") or the Common Development
+ and Distribution License("CDDL") (collectively, the "License").  You
+ may not use this file except in compliance with the License. You can obtain
+ a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
+ or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ language governing permissions and limitations under the License.
+ 
+ When distributing the software, include this License Header Notice in each
+ file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
+ Sun designates this particular file as subject to the "Classpath" exception
+ as provided by Sun in the GPL Version 2 section of the License file that
+ accompanied this code.  If applicable, add the following below the License
+ Header, with the fields enclosed by brackets [] replaced by your own
+ identifying information: "Portions Copyrighted [year]
+ [name of copyright owner]"
+ 
+ Contributor(s):
+ 
+ If you wish your version of this file to be governed by only the CDDL or
+ only the GPL Version 2, indicate your decision by adding "[Contributor]
+ elects to include this software in this distribution under the [CDDL or GPL
+ Version 2] license."  If you don't indicate a single choice of license, a
+ recipient has the option to distribute your version of this file under
+ either the CDDL, the GPL Version 2 or to extend the choice of license to
+ its licensees as provided above.  However, if you add GPL Version 2 code
+ and therefore, elected the GPL Version 2 license, then the option applies
+ only if the new code is made subject to such option by the copyright
+ holder.
+-->
+
+<web-app version="2.5"
+         xmlns="http://java.sun.com/xml/ns/javaee"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" >
+    
+    <display-name>JavaServer Faces Hello Duke Sample Application</display-name>
+    <description>
+        JavaServer Faces Hello Duke Sample Application
+    </description>
+
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>server</param-value>
+    </context-param>
+    
+    <!-- Faces Servlet -->
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup> 1 </load-on-startup>
+    </servlet>
+
+
+    <!-- Faces Servlet Mapping -->
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+
+</web-app>
diff --git a/jsf-test/GLASSFISH-17218/i_glassfish_17218_myfaces_1_2_war/src/main/webapp/error.jsp b/jsf-test/GLASSFISH-17218/i_glassfish_17218_myfaces_1_2_war/src/main/webapp/error.jsp
new file mode 100644
index 0000000..ed03d95
--- /dev/null
+++ b/jsf-test/GLASSFISH-17218/i_glassfish_17218_myfaces_1_2_war/src/main/webapp/error.jsp
@@ -0,0 +1,74 @@
+<%--
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ 
+ Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+ 
+ The contents of this file are subject to the terms of either the GNU
+ General Public License Version 2 only ("GPL") or the Common Development
+ and Distribution License("CDDL") (collectively, the "License").  You
+ may not use this file except in compliance with the License. You can obtain
+ a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
+ or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ language governing permissions and limitations under the License.
+ 
+ When distributing the software, include this License Header Notice in each
+ file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
+ Sun designates this particular file as subject to the "Classpath" exception
+ as provided by Sun in the GPL Version 2 section of the License file that
+ accompanied this code.  If applicable, add the following below the License
+ Header, with the fields enclosed by brackets [] replaced by your own
+ identifying information: "Portions Copyrighted [year]
+ [name of copyright owner]"
+ 
+ Contributor(s):
+ 
+ If you wish your version of this file to be governed by only the CDDL or
+ only the GPL Version 2, indicate your decision by adding "[Contributor]
+ elects to include this software in this distribution under the [CDDL or GPL
+ Version 2] license."  If you don't indicate a single choice of license, a
+ recipient has the option to distribute your version of this file under
+ either the CDDL, the GPL Version 2 or to extend the choice of license to
+ its licensees as provided above.  However, if you add GPL Version 2 code
+ and therefore, elected the GPL Version 2 license, then the option applies
+ only if the new code is made subject to such option by the copyright
+ holder.
+--%>
+
+<!--
+ The contents of this file are subject to the terms
+ of the Common Development and Distribution License
+ (the License). You may not use this file except in
+ compliance with the License.
+ 
+ You can obtain a copy of the License at
+ https://javaserverfaces.dev.java.net/CDDL.html or
+ legal/CDDLv1.0.txt. 
+ See the License for the specific language governing
+ permission and limitations under the License.
+ 
+ When distributing Covered Code, include this CDDL
+ Header Notice in each file and include the License file
+ at legal/CDDLv1.0.txt.    
+ If applicable, add the following below the CDDL Header,
+ with the fields enclosed by brackets [] replaced by
+ your own identifying information:
+ "Portions Copyrighted [year] [name of copyright owner]"
+ 
+ [Name of File] [ver.__] [Date]
+ 
+ Copyright 2005 Sun Microsystems Inc. All Rights Reserved
+-->
+
+<HTML>
+    <HEAD> <TITLE> JSF Basic Components Test Page </TITLE> </HEAD>
+    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
+    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+    <H3> JSF Basic Components Test Page </H3>
+    <hr>
+      <f:view>
+        <h:form id="errorForm">
+            <h:outputText id="helloLabel" text="Login Failed" />
+             <P></P>
+        </h:form>
+       </f:view>
+</HTML>
diff --git a/jsf-test/GLASSFISH-17218/i_glassfish_17218_myfaces_1_2_war/src/main/webapp/greeting.jsp b/jsf-test/GLASSFISH-17218/i_glassfish_17218_myfaces_1_2_war/src/main/webapp/greeting.jsp
new file mode 100644
index 0000000..a58afcb
--- /dev/null
+++ b/jsf-test/GLASSFISH-17218/i_glassfish_17218_myfaces_1_2_war/src/main/webapp/greeting.jsp
@@ -0,0 +1,78 @@
+<%--
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ 
+ Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+ 
+ The contents of this file are subject to the terms of either the GNU
+ General Public License Version 2 only ("GPL") or the Common Development
+ and Distribution License("CDDL") (collectively, the "License").  You
+ may not use this file except in compliance with the License. You can obtain
+ a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
+ or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ language governing permissions and limitations under the License.
+ 
+ When distributing the software, include this License Header Notice in each
+ file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
+ Sun designates this particular file as subject to the "Classpath" exception
+ as provided by Sun in the GPL Version 2 section of the License file that
+ accompanied this code.  If applicable, add the following below the License
+ Header, with the fields enclosed by brackets [] replaced by your own
+ identifying information: "Portions Copyrighted [year]
+ [name of copyright owner]"
+ 
+ Contributor(s):
+ 
+ If you wish your version of this file to be governed by only the CDDL or
+ only the GPL Version 2, indicate your decision by adding "[Contributor]
+ elects to include this software in this distribution under the [CDDL or GPL
+ Version 2] license."  If you don't indicate a single choice of license, a
+ recipient has the option to distribute your version of this file under
+ either the CDDL, the GPL Version 2 or to extend the choice of license to
+ its licensees as provided above.  However, if you add GPL Version 2 code
+ and therefore, elected the GPL Version 2 license, then the option applies
+ only if the new code is made subject to such option by the copyright
+ holder.
+--%>
+
+<!--
+ The contents of this file are subject to the terms
+ of the Common Development and Distribution License
+ (the License). You may not use this file except in
+ compliance with the License.
+ 
+ You can obtain a copy of the License at
+ https://javaserverfaces.dev.java.net/CDDL.html or
+ legal/CDDLv1.0.txt. 
+ See the License for the specific language governing
+ permission and limitations under the License.
+ 
+ When distributing Covered Code, include this CDDL
+ Header Notice in each file and include the License file
+ at legal/CDDLv1.0.txt.    
+ If applicable, add the following below the CDDL Header,
+ with the fields enclosed by brackets [] replaced by
+ your own identifying information:
+ "Portions Copyrighted [year] [name of copyright owner]"
+ 
+ [Name of File] [ver.__] [Date]
+ 
+ Copyright 2005 Sun Microsystems Inc. All Rights Reserved
+-->
+
+<HTML>
+    <HEAD> <title>Hello</title> </HEAD>
+    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
+    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+    <body bgcolor="white">
+    <h2>My name is Duke.  What is yours?</h2>
+    <jsp:useBean id="UserNameBean" class="helloDuke.UserNameBean" scope="session" />
+    <f:view>
+    <h:form id="helloForm" >
+        <h:graphicImage id="waveImg" url="/wave.med.gif" />
+  	<h:inputText id="username"
+			value="#{UserNameBean.userName}"/>
+  	<h:commandButton id="submit" action="success" value="Submit" 
+		          type="submit" />
+    </h:form>
+    </f:view>
+</HTML>  
diff --git a/jsf-test/GLASSFISH-17218/i_glassfish_17218_myfaces_1_2_war/src/main/webapp/index.html b/jsf-test/GLASSFISH-17218/i_glassfish_17218_myfaces_1_2_war/src/main/webapp/index.html
new file mode 100644
index 0000000..8b061d0
--- /dev/null
+++ b/jsf-test/GLASSFISH-17218/i_glassfish_17218_myfaces_1_2_war/src/main/webapp/index.html
@@ -0,0 +1,54 @@
+<!--
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+ Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+
+ The contents of this file are subject to the terms of either the GNU
+ General Public License Version 2 only ("GPL") or the Common Development
+ and Distribution License("CDDL") (collectively, the "License").  You
+ may not use this file except in compliance with the License. You can obtain
+ a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
+ or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ language governing permissions and limitations under the License.
+
+ When distributing the software, include this License Header Notice in each
+ file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
+ Sun designates this particular file as subject to the "Classpath" exception
+ as provided by Sun in the GPL Version 2 section of the License file that
+ accompanied this code.  If applicable, add the following below the License
+ Header, with the fields enclosed by brackets [] replaced by your own
+ identifying information: "Portions Copyrighted [year]
+ [name of copyright owner]"
+
+ Contributor(s):
+
+ If you wish your version of this file to be governed by only the CDDL or
+ only the GPL Version 2, indicate your decision by adding "[Contributor]
+ elects to include this software in this distribution under the [CDDL or GPL
+ Version 2] license."  If you don't indicate a single choice of license, a
+ recipient has the option to distribute your version of this file under
+ either the CDDL, the GPL Version 2 or to extend the choice of license to
+ its licensees as provided above.  However, if you add GPL Version 2 code
+ and therefore, elected the GPL Version 2 license, then the option applies
+ only if the new code is made subject to such option by the copyright
+ holder.
+-->
+<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
+<html>
+<head>
+   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+   <meta name="GENERATOR" content="Mozilla/4.75 [en] (WinNT; U) [Netscape]">
+   <title>index</title>
+</head>
+<body>
+ 
+<br> 
+
+
+<P>Click  <a href="faces/greeting.jsp">here</a> 
+to say hello to Duke. </P>
+
+<br>
+<hr WIDTH="100%">
+</body>
+</html>
diff --git a/jsf-test/GLASSFISH-17218/i_glassfish_17218_myfaces_1_2_war/src/main/webapp/response.jsp b/jsf-test/GLASSFISH-17218/i_glassfish_17218_myfaces_1_2_war/src/main/webapp/response.jsp
new file mode 100644
index 0000000..72044b7
--- /dev/null
+++ b/jsf-test/GLASSFISH-17218/i_glassfish_17218_myfaces_1_2_war/src/main/webapp/response.jsp
@@ -0,0 +1,78 @@
+<%--
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ 
+ Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+ 
+ The contents of this file are subject to the terms of either the GNU
+ General Public License Version 2 only ("GPL") or the Common Development
+ and Distribution License("CDDL") (collectively, the "License").  You
+ may not use this file except in compliance with the License. You can obtain
+ a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
+ or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ language governing permissions and limitations under the License.
+ 
+ When distributing the software, include this License Header Notice in each
+ file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
+ Sun designates this particular file as subject to the "Classpath" exception
+ as provided by Sun in the GPL Version 2 section of the License file that
+ accompanied this code.  If applicable, add the following below the License
+ Header, with the fields enclosed by brackets [] replaced by your own
+ identifying information: "Portions Copyrighted [year]
+ [name of copyright owner]"
+ 
+ Contributor(s):
+ 
+ If you wish your version of this file to be governed by only the CDDL or
+ only the GPL Version 2, indicate your decision by adding "[Contributor]
+ elects to include this software in this distribution under the [CDDL or GPL
+ Version 2] license."  If you don't indicate a single choice of license, a
+ recipient has the option to distribute your version of this file under
+ either the CDDL, the GPL Version 2 or to extend the choice of license to
+ its licensees as provided above.  However, if you add GPL Version 2 code
+ and therefore, elected the GPL Version 2 license, then the option applies
+ only if the new code is made subject to such option by the copyright
+ holder.
+--%>
+
+<!--
+ The contents of this file are subject to the terms
+ of the Common Development and Distribution License
+ (the License). You may not use this file except in
+ compliance with the License.
+ 
+ You can obtain a copy of the License at
+ https://javaserverfaces.dev.java.net/CDDL.html or
+ legal/CDDLv1.0.txt. 
+ See the License for the specific language governing
+ permission and limitations under the License.
+ 
+ When distributing Covered Code, include this CDDL
+ Header Notice in each file and include the License file
+ at legal/CDDLv1.0.txt.    
+ If applicable, add the following below the CDDL Header,
+ with the fields enclosed by brackets [] replaced by
+ your own identifying information:
+ "Portions Copyrighted [year] [name of copyright owner]"
+ 
+ [Name of File] [ver.__] [Date]
+ 
+ Copyright 2005 Sun Microsystems Inc. All Rights Reserved
+-->
+<HTML>
+    <HEAD> <title>Hello</title> </HEAD>
+    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
+    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+    <body bgcolor="white">
+    <f:view>
+    <h:form id="responseform">
+    <h:graphicImage id="waveImg" url="/wave.med.gif" />
+    <h2>Hi, <h:outputText id="userLabel"
+			   value="#{UserNameBean.userName}" /> </h2>
+    
+    <p><h:outputText id="versionMessage" value="#{UserNameBean.versionMessage}" /></p>
+	 <h:commandButton id="back" value="Back" action="success" 
+                           />
+         <p>
+    </h:form>
+    </f:view>
+</HTML>  
diff --git a/jsf-test/GLASSFISH-17218/i_glassfish_17218_myfaces_1_2_war/src/main/webapp/wave.med.gif b/jsf-test/GLASSFISH-17218/i_glassfish_17218_myfaces_1_2_war/src/main/webapp/wave.med.gif
new file mode 100644
index 0000000..70b7cff
Binary files /dev/null and b/jsf-test/GLASSFISH-17218/i_glassfish_17218_myfaces_1_2_war/src/main/webapp/wave.med.gif differ
diff --git a/jsf-test/JAVASERVERFACES-1338/build.xml b/jsf-test/JAVASERVERFACES-1338/build.xml
new file mode 100644
index 0000000..43ab99a
--- /dev/null
+++ b/jsf-test/JAVASERVERFACES-1338/build.xml
@@ -0,0 +1,140 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!-- ************ JSF build file ************************************** -->
+
+<project name="JAVASERVERFACES-1338" default="test" basedir=".">
+
+    <property file="../../build.properties"/>
+
+    <import file="${jsf.build.home}/common/ant/common.xml"/>
+
+    <path id="1338.classpath">  
+        <path refid="html.classpath" />
+        <pathelement location="${basedir}/i_jsf_1338_htmlunit/target/classes"/>
+    </path>
+
+    <target name="build">
+
+      <jsf.mvn dir="${jsf.build.home}/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest" goals="install" />
+      <jsf.mvn dir="${basedir}/i_jsf_1338_htmlunit" goals="install" />
+
+    </target>    
+
+    <target name="clean">
+
+      <jsf.mvn dir="${jsf.build.home}/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest" goals="clean" />
+      <jsf.mvn dir="${basedir}/i_jsf_1338_htmlunit" goals="clean" />
+      <delete dir="${basedir}/build" />
+
+    </target>    
+
+    <target name="install">
+
+      <start.database />
+      <set.security.properties />
+      <echo message="Database started" />
+      
+      <if>
+        <os family="windows"/>
+        <then>
+          <non.ant.deploy.artifact
+              artifact="${jsf.build.home}/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/target/scrumtoys.war"
+              appName="scrumtoys" />
+<!--          <echo message="sleeping for 2 minutes" />
+          <sleep minutes="2"/> -->
+        </then>
+        <else>
+          <deploy.artifact
+              artifact="${jsf.build.home}/jsf-demo/sandbox/scrumtoys2009/eclipseProject/latest/target/scrumtoys.war"
+              appName="scrumtoys" />
+        </else>
+      </if>
+    </target>    
+
+    <target name="remove">
+
+      <undeploy.artifact artifact="${basedir}/target/scrumtoys.war"
+                appName="scrumtoys" />
+      <stop.database />
+      <echo message="Database stopped" />
+
+    </target>    
+    
+    <target name="scrumtoys-check">
+      <var name="do.sleep" unset="true" />
+      <var name="deployment.host" unset="true" />
+      <var name="deployment.port" unset="true" />
+      <var name="path.with.leading.slash" unset="true" />
+      <var name="page.regexp" unset="true" />
+      
+      <property name="deployment.host" value="${container.host}" />
+      <property name="deployment.port" value="${container.port}" />
+      <property name="path.with.leading.slash" value="/scrumtoys/home.jsf" />
+      <property name="page.regexp" value="" />
+      <property name="deployment.retries" value="5" />
+      
+      <antcall target="deployment.check" />
+    </target>
+
+    
+
+    <target name="test" depends="scrumtoys-check,define.scenario.aware.port">
+      <retry retrycount="${deployment.retries}">
+        <sequential>
+          <echo message="TEST RETRY..." />
+          <jsf.junit context-path="/scrumtoys"
+                 classpath-refid="1338.classpath"    
+                 test-results-dir="${regression.test.results.dir}">
+            <tests>
+              <fileset dir="${basedir}/i_jsf_1338_htmlunit/target/classes"
+                   includes="com/sun/faces/regression/i_jsf_1338_htmlunit/ScrumToysTestCase.class"/> 
+            </tests>
+          </jsf.junit>
+        </sequential>
+      </retry>
+    </target>    
+
+
+        
+</project>
diff --git a/jsf-test/JAVASERVERFACES-1338/i_jsf_1338_htmlunit/pom.xml b/jsf-test/JAVASERVERFACES-1338/i_jsf_1338_htmlunit/pom.xml
new file mode 100644
index 0000000..909ff4c
--- /dev/null
+++ b/jsf-test/JAVASERVERFACES-1338/i_jsf_1338_htmlunit/pom.xml
@@ -0,0 +1,97 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+   <modelVersion>4.0.0</modelVersion>
+   <groupId>com.sun.faces.regression</groupId>
+   <artifactId>i_jsf_1338_htmlunit</artifactId>
+   <packaging>jar</packaging>
+   <name>i_jsf_1338_htmlunit</name>
+   <version>1.0</version>
+
+   <dependencies>
+
+      <dependency>
+	<artifactId>htmlunit</artifactId>
+	<groupId>net.sourceforge.htmlunit</groupId>
+	<version>2.4</version>
+         <scope>provided</scope>
+      </dependency>
+      <dependency>
+         <groupId>junit</groupId>
+         <artifactId>junit</artifactId>
+         <version>3.8.1</version>
+         <scope>provided</scope>
+      </dependency>
+      <dependency>
+	<groupId>com.sun.faces.extensions</groupId>
+	<artifactId>jsf-extensions-test-time</artifactId>
+	<version>2.0</version>
+	<scope>provided</scope>
+      </dependency>
+
+   </dependencies>
+
+   <build>
+      <plugins>
+         <plugin>
+            <groupId>org.apache.maven.plugins</groupId>
+            <artifactId>maven-compiler-plugin</artifactId>
+            <version>2.0.2</version>
+            <configuration>
+               <source>1.6</source>
+               <target>1.6</target>
+            </configuration>
+         </plugin>
+      </plugins>
+      <finalName>i_jsf_1338_htmlunit</finalName>
+   </build>
+
+   <repositories>
+     <repository>
+       <id>java.net</id>
+       <name>java.net</name>
+       <url>http://download.java.net/maven/2</url>
+       <layout>default</layout>
+     </repository>
+   </repositories>
+
+</project>
diff --git a/jsf-test/JAVASERVERFACES-1338/i_jsf_1338_htmlunit/src/main/java/com/sun/faces/regression/i_jsf_1338_htmlunit/ScrumToysTestCase.java b/jsf-test/JAVASERVERFACES-1338/i_jsf_1338_htmlunit/src/main/java/com/sun/faces/regression/i_jsf_1338_htmlunit/ScrumToysTestCase.java
new file mode 100644
index 0000000..e71c548
--- /dev/null
+++ b/jsf-test/JAVASERVERFACES-1338/i_jsf_1338_htmlunit/src/main/java/com/sun/faces/regression/i_jsf_1338_htmlunit/ScrumToysTestCase.java
@@ -0,0 +1,80 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.regression.i_jsf_1338_htmlunit;
+
+import com.gargoylesoftware.htmlunit.html.HtmlAnchor;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+
+import com.gargoylesoftware.htmlunit.html.HtmlPasswordInput;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
+import com.sun.faces.htmlunit.HtmlUnitFacesTestCase;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+
+public class ScrumToysTestCase extends HtmlUnitFacesTestCase {
+
+    public ScrumToysTestCase(String name) {
+        super(name);
+    }
+
+
+    /**
+     * Return the tests included in this test suite.
+     */
+    public static Test suite() {
+        return (new TestSuite(ScrumToysTestCase.class));
+    }
+
+
+    // ------------------------------------------------------------ Test Methods
+
+    public void testAccess() throws Exception {
+
+        HtmlPage page = getPage("/");
+
+        assertTrue(page.asXml().contains("javax.faces.ViewState"));
+        
+    }
+
+
+}
diff --git a/jsf-test/JAVASERVERFACES-1995/build.xml b/jsf-test/JAVASERVERFACES-1995/build.xml
new file mode 100644
index 0000000..6d6bb55
--- /dev/null
+++ b/jsf-test/JAVASERVERFACES-1995/build.xml
@@ -0,0 +1,101 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<!-- ************ JSF build file ************************************** -->
+<project name="JAVASERVERFACES-1995" default="test" basedir=".">
+
+    <property file="../../build.properties"/>
+    <path id="1995.classpath">  
+        <path refid="html.classpath" />
+        <pathelement location="${basedir}/i_jsf_1995_htmlunit/target/classes"/>
+    </path>
+
+    <import file="${jsf.build.home}/common/ant/common.xml"/>
+
+    <target name="build">
+        <jsf.mvn dir="${basedir}/i_jsf_1995_jar" goals="install" />
+        <jsf.mvn dir="${basedir}/i_jsf_1995_war_1" goals="install" />
+        <jsf.mvn dir="${basedir}/i_jsf_1995_war_2" goals="install" />
+        <jsf.mvn dir="${basedir}/i_jsf_1995_ear" goals="install" />
+        <jsf.mvn dir="${basedir}/i_jsf_1995_htmlunit" goals="install" />
+    </target>    
+
+    <target name="clean">
+        <jsf.mvn dir="${basedir}/i_jsf_1995_jar" goals="clean" />
+        <jsf.mvn dir="${basedir}/i_jsf_1995_war_1" goals="clean" />
+        <jsf.mvn dir="${basedir}/i_jsf_1995_war_2" goals="clean" />
+        <jsf.mvn dir="${basedir}/i_jsf_1995_ear" goals="clean" />
+        <jsf.mvn dir="${basedir}/i_jsf_1995_htmlunit" goals="clean" />
+    </target>    
+
+    <target name="install">
+        <deploy.artifact
+              artifact="${basedir}/i_jsf_1995_ear/target/i_jsf_1995_ear.ear"
+              appName="i_jsf_1995_ear"/>
+    </target>    
+
+    <target name="remove">
+        <undeploy.artifact
+              artifact="${basedir}/i_jsf_1995_ear/target/i_jsf_1995_ear.ear"
+              appName="i_jsf_1995_ear"/>
+    </target>    
+
+    <target name="test" depends="define.scenario.aware.port">
+        <jsf.junit context-path="/i_jsf_1995_war_1"
+                 classpath-refid="1995.classpath"    
+                 test-results-dir="${regression.test.results.dir}">
+            <tests>
+                <fileset dir="${basedir}/i_jsf_1995_htmlunit/target/classes"
+                     includes="com/sun/faces/regression/i_jsf_1995/Issue1995_war_1_TestCase.class"/> 
+            </tests>
+        </jsf.junit>
+        <jsf.junit context-path="/i_jsf_1995_war_2"
+                 classpath-refid="1995.classpath"    
+                 test-results-dir="${regression.test.results.dir}">
+            <tests>
+                <fileset dir="${basedir}/i_jsf_1995_htmlunit/target/classes"
+                     includes="com/sun/faces/regression/i_jsf_1995/Issue1995_war_2_TestCase.class"/> 
+            </tests>
+        </jsf.junit>
+    </target>    
+
+</project>
diff --git a/jsf-test/JAVASERVERFACES-1995/i_jsf_1995_ear/pom.xml b/jsf-test/JAVASERVERFACES-1995/i_jsf_1995_ear/pom.xml
new file mode 100644
index 0000000..3b109b0
--- /dev/null
+++ b/jsf-test/JAVASERVERFACES-1995/i_jsf_1995_ear/pom.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <groupId>com.sun.faces.i_jsf_1995</groupId>
+    <artifactId>i_jsf_1995_ear</artifactId>
+    <version>1.0</version>
+    <packaging>ear</packaging>
+    <name>${project.artifactId}</name>
+    <build>
+        <finalName>${project.artifactId}</finalName>
+        <plugins>
+            <plugin>
+              <artifactId>maven-ear-plugin</artifactId>
+              <version>2.5</version>
+              <configuration>
+                <defaultLibBundleDir>lib</defaultLibBundleDir>
+              </configuration>
+            </plugin>
+        </plugins>
+    </build>
+    <dependencies>
+      <dependency>
+	<groupId>com.sun.faces.regression.i_jsf_1995</groupId>
+	<artifactId>i_jsf_1995_war_1</artifactId>
+	<version>1.0</version>
+	<type>war</type>
+      </dependency>
+      <dependency>
+	<groupId>com.sun.faces.regression.i_jsf_1995</groupId>
+	<artifactId>i_jsf_1995_war_2</artifactId>
+	<version>1.0</version>
+	<type>war</type>
+      </dependency>
+      <dependency>
+	<groupId>com.sun.faces.regression.i_jsf_1995</groupId>
+	<artifactId>bean</artifactId>
+	<version>1.0</version>
+	<type>jar</type>
+      </dependency>
+    </dependencies>
+
+</project>
diff --git a/jsf-test/JAVASERVERFACES-1995/i_jsf_1995_htmlunit/pom.xml b/jsf-test/JAVASERVERFACES-1995/i_jsf_1995_htmlunit/pom.xml
new file mode 100644
index 0000000..1aef267
--- /dev/null
+++ b/jsf-test/JAVASERVERFACES-1995/i_jsf_1995_htmlunit/pom.xml
@@ -0,0 +1,97 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+   <modelVersion>4.0.0</modelVersion>
+   <groupId>com.sun.faces.regression.i_jsf_1995</groupId>
+   <artifactId>i_jsf_1995_htmlunit</artifactId>
+   <packaging>jar</packaging>
+   <name>i_jsf_1995_htmlunit</name>
+   <version>1.0</version>
+
+   <dependencies>
+
+      <dependency>
+	<artifactId>htmlunit</artifactId>
+	<groupId>net.sourceforge.htmlunit</groupId>
+	<version>2.4</version>
+         <scope>provided</scope>
+      </dependency>
+      <dependency>
+         <groupId>junit</groupId>
+         <artifactId>junit</artifactId>
+         <version>3.8.1</version>
+         <scope>provided</scope>
+      </dependency>
+      <dependency>
+	<groupId>com.sun.faces.extensions</groupId>
+	<artifactId>jsf-extensions-test-time</artifactId>
+	<version>2.0</version>
+	<scope>provided</scope>
+      </dependency>
+
+   </dependencies>
+
+   <build>
+      <plugins>
+         <plugin>
+            <groupId>org.apache.maven.plugins</groupId>
+            <artifactId>maven-compiler-plugin</artifactId>
+            <version>2.0.2</version>
+            <configuration>
+               <source>1.6</source>
+               <target>1.6</target>
+            </configuration>
+         </plugin>
+      </plugins>
+      <finalName>i_jsf_1995_htmlunit</finalName>
+   </build>
+
+   <repositories>
+     <repository>
+       <id>java.net</id>
+       <name>java.net</name>
+       <url>http://download.java.net/maven/2</url>
+       <layout>default</layout>
+     </repository>
+   </repositories>
+
+</project>
diff --git a/jsf-test/JAVASERVERFACES-1995/i_jsf_1995_htmlunit/src/main/java/com/sun/faces/regression/i_jsf_1995/Issue1995_war_1_TestCase.java b/jsf-test/JAVASERVERFACES-1995/i_jsf_1995_htmlunit/src/main/java/com/sun/faces/regression/i_jsf_1995/Issue1995_war_1_TestCase.java
new file mode 100644
index 0000000..1146834
--- /dev/null
+++ b/jsf-test/JAVASERVERFACES-1995/i_jsf_1995_htmlunit/src/main/java/com/sun/faces/regression/i_jsf_1995/Issue1995_war_1_TestCase.java
@@ -0,0 +1,76 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.regression.i_jsf_1995;
+
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+
+import com.sun.faces.htmlunit.HtmlUnitFacesTestCase;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+
+public class Issue1995_war_1_TestCase extends HtmlUnitFacesTestCase {
+
+    public Issue1995_war_1_TestCase(String name) {
+        super(name);
+    }
+
+
+    /**
+     * Return the tests included in this test suite.
+     */
+    public static Test suite() {
+        return (new TestSuite(Issue1995_war_1_TestCase.class));
+    }
+
+
+    // ------------------------------------------------------------ Test Methods
+
+    public void testBasicAppFunctionality() throws Exception {
+
+        HtmlPage page = getPage("/");
+
+        assertTrue(page.asXml().contains("javax.faces.ViewState"));
+        assertTrue(page.asText().matches("(?s).*.war_1\\s+bean:\\s+war1Bean\\s+war_2\\s+bean:\\s+bean:\\s+bar..*"));
+    }
+
+
+}
diff --git a/jsf-test/JAVASERVERFACES-1995/i_jsf_1995_htmlunit/src/main/java/com/sun/faces/regression/i_jsf_1995/Issue1995_war_2_TestCase.java b/jsf-test/JAVASERVERFACES-1995/i_jsf_1995_htmlunit/src/main/java/com/sun/faces/regression/i_jsf_1995/Issue1995_war_2_TestCase.java
new file mode 100644
index 0000000..d109a49
--- /dev/null
+++ b/jsf-test/JAVASERVERFACES-1995/i_jsf_1995_htmlunit/src/main/java/com/sun/faces/regression/i_jsf_1995/Issue1995_war_2_TestCase.java
@@ -0,0 +1,76 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.regression.i_jsf_1995;
+
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+
+import com.sun.faces.htmlunit.HtmlUnitFacesTestCase;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+
+public class Issue1995_war_2_TestCase extends HtmlUnitFacesTestCase {
+
+    public Issue1995_war_2_TestCase(String name) {
+        super(name);
+    }
+
+
+    /**
+     * Return the tests included in this test suite.
+     */
+    public static Test suite() {
+        return (new TestSuite(Issue1995_war_2_TestCase.class));
+    }
+
+
+    // ------------------------------------------------------------ Test Methods
+
+    public void testBasicAppFunctionality() throws Exception {
+
+        HtmlPage page = getPage("/");
+
+        assertTrue(page.asXml().contains("javax.faces.ViewState"));
+        assertTrue(page.asText().matches("(?s).*.war_1\\s+bean:\\s+war_2\\s+bean:\\s+war2Bean\\s+bean:\\s+bar..*"));
+    }
+
+
+}
diff --git a/jsf-test/JAVASERVERFACES-1995/i_jsf_1995_jar/pom.xml b/jsf-test/JAVASERVERFACES-1995/i_jsf_1995_jar/pom.xml
new file mode 100644
index 0000000..948f32c
--- /dev/null
+++ b/jsf-test/JAVASERVERFACES-1995/i_jsf_1995_jar/pom.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+   <modelVersion>4.0.0</modelVersion>
+   <groupId>com.sun.faces.regression.i_jsf_1995</groupId>
+   <artifactId>bean</artifactId>
+   <packaging>jar</packaging>
+   <name>bean jar</name>
+   <version>1.0</version>
+
+   <properties>
+
+   </properties>
+
+   <dependencies>
+
+      <dependency>
+         <groupId>javax</groupId>
+         <artifactId>javaee-api</artifactId>
+         <version>6.0</version>
+         <scope>provided</scope>
+      </dependency>
+
+   </dependencies>
+
+   <build>
+
+      <plugins>
+         <plugin>
+            <artifactId>maven-compiler-plugin</artifactId>
+            <configuration>
+               <source>1.6</source>
+               <target>1.6</target>
+            </configuration>
+         </plugin>
+      </plugins>
+   </build>
+
+</project>
diff --git a/jsf-test/JAVASERVERFACES-1995/i_jsf_1995_jar/src/main/java/beans/Bean.java b/jsf-test/JAVASERVERFACES-1995/i_jsf_1995_jar/src/main/java/beans/Bean.java
new file mode 100644
index 0000000..fb071fe
--- /dev/null
+++ b/jsf-test/JAVASERVERFACES-1995/i_jsf_1995_jar/src/main/java/beans/Bean.java
@@ -0,0 +1,58 @@
+
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License. You can obtain
+ * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
+ * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
+ * Sun designates this particular file as subject to the "Classpath" exception
+ * as provided by Sun in the GPL Version 2 section of the License file that
+ * accompanied this code.  If applicable, add the following below the License
+ * Header, with the fields enclosed by brackets [] replaced by your own
+ * identifying information: "Portions Copyrighted [year]
+ * [name of copyright owner]"
+ *
+ * Contributor(s):
+ *
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package beans;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.NoneScoped;
+
+ at ManagedBean
+ at NoneScoped
+public class Bean {
+
+    protected String foo = "bar";
+
+    public String getFoo() {
+        return foo;
+    }
+
+    public void setFoo(String foo) {
+        this.foo = foo;
+    }
+
+
+}
diff --git a/jsf-test/JAVASERVERFACES-1995/i_jsf_1995_jar/src/main/resources/META-INF/faces-config.xml b/jsf-test/JAVASERVERFACES-1995/i_jsf_1995_jar/src/main/resources/META-INF/faces-config.xml
new file mode 100644
index 0000000..26c5141
--- /dev/null
+++ b/jsf-test/JAVASERVERFACES-1995/i_jsf_1995_jar/src/main/resources/META-INF/faces-config.xml
@@ -0,0 +1,45 @@
+<?xml version='1.0' encoding='UTF-8'?>
+
+<!--
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ 
+ Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+ 
+ The contents of this file are subject to the terms of either the GNU
+ General Public License Version 2 only ("GPL") or the Common Development
+ and Distribution License("CDDL") (collectively, the "License").  You
+ may not use this file except in compliance with the License. You can obtain
+ a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
+ or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ language governing permissions and limitations under the License.
+ 
+ When distributing the software, include this License Header Notice in each
+ file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
+ Sun designates this particular file as subject to the "Classpath" exception
+ as provided by Sun in the GPL Version 2 section of the License file that
+ accompanied this code.  If applicable, add the following below the License
+ Header, with the fields enclosed by brackets [] replaced by your own
+ identifying information: "Portions Copyrighted [year]
+ [name of copyright owner]"
+ 
+ Contributor(s):
+ 
+ If you wish your version of this file to be governed by only the CDDL or
+ only the GPL Version 2, indicate your decision by adding "[Contributor]
+ elects to include this software in this distribution under the [CDDL or GPL
+ Version 2] license."  If you don't indicate a single choice of license, a
+ recipient has the option to distribute your version of this file under
+ either the CDDL, the GPL Version 2 or to extend the choice of license to
+ its licensees as provided above.  However, if you add GPL Version 2 code
+ and therefore, elected the GPL Version 2 license, then the option applies
+ only if the new code is made subject to such option by the copyright
+ holder.
+-->
+
+
+<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
+    version="2.0">
+
+</faces-config>
diff --git a/jsf-test/JAVASERVERFACES-1995/i_jsf_1995_war_1/pom.xml b/jsf-test/JAVASERVERFACES-1995/i_jsf_1995_war_1/pom.xml
new file mode 100644
index 0000000..eac7f93
--- /dev/null
+++ b/jsf-test/JAVASERVERFACES-1995/i_jsf_1995_war_1/pom.xml
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <groupId>com.sun.faces.regression.i_jsf_1995</groupId>
+    <artifactId>i_jsf_1995_war_1</artifactId>
+    <version>1.0</version>
+    <packaging>war</packaging>
+    <name>${project.artifactId}</name>
+    <build>
+        <finalName>${project.artifactId}</finalName>
+        <plugins>
+          <plugin>
+            <groupId>org.apache.maven.plugins</groupId>
+            <artifactId>maven-war-plugin</artifactId>
+            <version>2.1.1</version>
+          </plugin>
+            <plugin>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                    <source>1.6</source>
+                    <target>1.6</target>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+    <dependencies>
+        <dependency>
+            <groupId>javax.faces</groupId>
+            <artifactId>javax.faces-api</artifactId>
+            <version>${spec.snapshot.version}</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>javax</groupId>
+            <artifactId>javaee-api</artifactId>
+            <version>6.0</version>
+            <scope>provided</scope>
+        </dependency>
+    </dependencies>
+
+    <repositories>
+        <repository>
+            <id>java.net-maven2-repository</id>
+            <name>Java.net Repository for Maven</name>
+            <url>http://download.java.net/maven/2/</url>
+            <layout>default</layout>
+        </repository>
+    </repositories>
+</project>
diff --git a/jsf-test/JAVASERVERFACES-1995/i_jsf_1995_war_1/src/main/java/com/sun/faces/regression/i_jsf_1995/Issue1995War1Bean.java b/jsf-test/JAVASERVERFACES-1995/i_jsf_1995_war_1/src/main/java/com/sun/faces/regression/i_jsf_1995/Issue1995War1Bean.java
new file mode 100644
index 0000000..f0d1fff
--- /dev/null
+++ b/jsf-test/JAVASERVERFACES-1995/i_jsf_1995_war_1/src/main/java/com/sun/faces/regression/i_jsf_1995/Issue1995War1Bean.java
@@ -0,0 +1,61 @@
+
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.regression.i_jsf_1995;
+
+import javax.enterprise.context.RequestScoped;
+import javax.inject.Named;
+
+ at Named("war1Bean")
+ at RequestScoped
+public class Issue1995War1Bean {
+    
+    protected String name = "war1Bean";
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    
+}
diff --git a/jsf-test/JAVASERVERFACES-1995/i_jsf_1995_war_1/src/main/webapp/WEB-INF/beans.xml b/jsf-test/JAVASERVERFACES-1995/i_jsf_1995_war_1/src/main/webapp/WEB-INF/beans.xml
new file mode 100644
index 0000000..e69de29
diff --git a/jsf-test/JAVASERVERFACES-1995/i_jsf_1995_war_1/src/main/webapp/WEB-INF/glassfish-web.xml b/jsf-test/JAVASERVERFACES-1995/i_jsf_1995_war_1/src/main/webapp/WEB-INF/glassfish-web.xml
new file mode 100644
index 0000000..61d356b
--- /dev/null
+++ b/jsf-test/JAVASERVERFACES-1995/i_jsf_1995_war_1/src/main/webapp/WEB-INF/glassfish-web.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
+<glassfish-web-app error-url="">
+  <context-root>/EarWithMultipleWars-war</context-root>
+  <class-loader delegate="true"/>
+  <jsp-config>
+    <property name="keepgenerated" value="true">
+      <description>Keep a copy of the generated servlet class' java code.</description>
+    </property>
+  </jsp-config>
+</glassfish-web-app>
diff --git a/jsf-test/JAVASERVERFACES-1995/i_jsf_1995_war_1/src/main/webapp/WEB-INF/web.xml b/jsf-test/JAVASERVERFACES-1995/i_jsf_1995_war_1/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..a6c450c
--- /dev/null
+++ b/jsf-test/JAVASERVERFACES-1995/i_jsf_1995_war_1/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>Development</param-value>
+    </context-param>
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <session-config>
+        <session-timeout>
+            30
+        </session-timeout>
+    </session-config>
+    <welcome-file-list>
+        <welcome-file>faces/index.xhtml</welcome-file>
+    </welcome-file-list>
+</web-app>
diff --git a/jsf-test/JAVASERVERFACES-1995/i_jsf_1995_war_1/src/main/webapp/index.jsp b/jsf-test/JAVASERVERFACES-1995/i_jsf_1995_war_1/src/main/webapp/index.jsp
new file mode 100644
index 0000000..df72461
--- /dev/null
+++ b/jsf-test/JAVASERVERFACES-1995/i_jsf_1995_war_1/src/main/webapp/index.jsp
@@ -0,0 +1,17 @@
+<%-- 
+    Document   : index
+    Created on : 21-mars-2011, 9:25:21
+    Author     : majoros
+--%>
+
+<%@page contentType="text/html" pageEncoding="UTF-8"%>
+<!DOCTYPE html>
+<html>
+    <head>
+        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+        <title>JSP Page</title>
+    </head>
+    <body>
+        <h1>Hello World!</h1>
+    </body>
+</html>
diff --git a/jsf-test/JAVASERVERFACES-1995/i_jsf_1995_war_1/src/main/webapp/index.xhtml b/jsf-test/JAVASERVERFACES-1995/i_jsf_1995_war_1/src/main/webapp/index.xhtml
new file mode 100644
index 0000000..e0d1d54
--- /dev/null
+++ b/jsf-test/JAVASERVERFACES-1995/i_jsf_1995_war_1/src/main/webapp/index.xhtml
@@ -0,0 +1,14 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title>Facelet Title</title>
+    </h:head>
+    <h:body>
+<h:form prependId="false">
+.war_1 bean: #{war1Bean.name} war_2 bean: #{war2Bean.name} bean: #{bean.foo}.
+</h:form>
+    </h:body>
+</html>
+
diff --git a/jsf-test/JAVASERVERFACES-1995/i_jsf_1995_war_2/pom.xml b/jsf-test/JAVASERVERFACES-1995/i_jsf_1995_war_2/pom.xml
new file mode 100644
index 0000000..8729ee1
--- /dev/null
+++ b/jsf-test/JAVASERVERFACES-1995/i_jsf_1995_war_2/pom.xml
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <groupId>com.sun.faces.regression.i_jsf_1995</groupId>
+    <artifactId>i_jsf_1995_war_2</artifactId>
+    <version>1.0</version>
+    <packaging>war</packaging>
+    <name>${project.artifactId}</name>
+    <build>
+        <finalName>${project.artifactId}</finalName>
+        <plugins>
+          <plugin>
+            <groupId>org.apache.maven.plugins</groupId>
+            <artifactId>maven-war-plugin</artifactId>
+            <version>2.1.1</version>
+          </plugin>
+            <plugin>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                    <source>1.6</source>
+                    <target>1.6</target>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+    <dependencies>
+        <dependency>
+            <groupId>javax.faces</groupId>
+            <artifactId>javax.faces-api</artifactId>
+            <version>${spec.snapshot.version}</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>javax</groupId>
+            <artifactId>javaee-api</artifactId>
+            <version>6.0</version>
+            <scope>provided</scope>
+        </dependency>
+    </dependencies>
+
+    <repositories>
+        <repository>
+            <id>java.net-maven2-repository</id>
+            <name>Java.net Repository for Maven</name>
+            <url>http://download.java.net/maven/2/</url>
+            <layout>default</layout>
+        </repository>
+    </repositories>
+</project>
diff --git a/jsf-test/JAVASERVERFACES-1995/i_jsf_1995_war_2/src/main/java/com/sun/faces/regression/i_jsf_1995/Issue1995War2Bean.java b/jsf-test/JAVASERVERFACES-1995/i_jsf_1995_war_2/src/main/java/com/sun/faces/regression/i_jsf_1995/Issue1995War2Bean.java
new file mode 100644
index 0000000..efede3d
--- /dev/null
+++ b/jsf-test/JAVASERVERFACES-1995/i_jsf_1995_war_2/src/main/java/com/sun/faces/regression/i_jsf_1995/Issue1995War2Bean.java
@@ -0,0 +1,61 @@
+
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.regression.i_jsf_1995;
+
+import javax.enterprise.context.RequestScoped;
+import javax.inject.Named;
+
+ at Named("war2Bean")
+ at RequestScoped
+public class Issue1995War2Bean {
+    
+    protected String name = "war2Bean";
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    
+}
diff --git a/jsf-test/JAVASERVERFACES-1995/i_jsf_1995_war_2/src/main/webapp/WEB-INF/beans.xml b/jsf-test/JAVASERVERFACES-1995/i_jsf_1995_war_2/src/main/webapp/WEB-INF/beans.xml
new file mode 100644
index 0000000..e69de29
diff --git a/jsf-test/JAVASERVERFACES-1995/i_jsf_1995_war_2/src/main/webapp/WEB-INF/glassfish-web.xml b/jsf-test/JAVASERVERFACES-1995/i_jsf_1995_war_2/src/main/webapp/WEB-INF/glassfish-web.xml
new file mode 100644
index 0000000..d5e9081
--- /dev/null
+++ b/jsf-test/JAVASERVERFACES-1995/i_jsf_1995_war_2/src/main/webapp/WEB-INF/glassfish-web.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
+<glassfish-web-app error-url="">
+  <context-root>/EarWithMultipleWars-war2</context-root>
+  <class-loader delegate="true"/>
+  <jsp-config>
+    <property name="keepgenerated" value="true">
+      <description>Keep a copy of the generated servlet class' java code.</description>
+    </property>
+  </jsp-config>
+</glassfish-web-app>
diff --git a/jsf-test/JAVASERVERFACES-1995/i_jsf_1995_war_2/src/main/webapp/WEB-INF/web.xml b/jsf-test/JAVASERVERFACES-1995/i_jsf_1995_war_2/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..a6c450c
--- /dev/null
+++ b/jsf-test/JAVASERVERFACES-1995/i_jsf_1995_war_2/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>Development</param-value>
+    </context-param>
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <session-config>
+        <session-timeout>
+            30
+        </session-timeout>
+    </session-config>
+    <welcome-file-list>
+        <welcome-file>faces/index.xhtml</welcome-file>
+    </welcome-file-list>
+</web-app>
diff --git a/jsf-test/JAVASERVERFACES-1995/i_jsf_1995_war_2/src/main/webapp/index.xhtml b/jsf-test/JAVASERVERFACES-1995/i_jsf_1995_war_2/src/main/webapp/index.xhtml
new file mode 100644
index 0000000..2be4d5e
--- /dev/null
+++ b/jsf-test/JAVASERVERFACES-1995/i_jsf_1995_war_2/src/main/webapp/index.xhtml
@@ -0,0 +1,14 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title>Facelet Title</title>
+    </h:head>
+    <h:body>
+<h:form prependId="false">
+.war_1 bean: #{war1Bean.name} war_2 bean: #{war2Bean.name} bean: #{bean.foo}.
+</h:form>    
+    </h:body>
+</html>
+
diff --git a/jsf-test/JAVASERVERFACES-2195/build.xml b/jsf-test/JAVASERVERFACES-2195/build.xml
new file mode 100644
index 0000000..eb9f9af
--- /dev/null
+++ b/jsf-test/JAVASERVERFACES-2195/build.xml
@@ -0,0 +1,87 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<!-- ************ JSF build file ************************************** -->
+<project name="JAVASERVERFACES-2195" default="test" basedir=".">
+
+    <property file="../../build.properties"/>
+    <path id="2195.classpath">  
+        <path refid="html.classpath" />
+        <pathelement location="${basedir}/htmlunit/target/classes"/>
+    </path>
+
+    <import file="${jsf.build.home}/common/ant/common.xml"/>
+
+    <target name="build">
+        <jsf.mvn dir="${basedir}/i_jsf_2195" goals="install" />
+        <jsf.mvn dir="${basedir}/htmlunit" goals="install" />
+    </target>    
+
+    <target name="clean">
+        <jsf.mvn dir="${basedir}/i_jsf_2195" goals="clean" />
+        <jsf.mvn dir="${basedir}/htmlunit" goals="clean" />
+    </target>    
+
+    <target name="install">
+        <deploy.artifact
+              artifact="${basedir}/i_jsf_2195/target/i_jsf_2195.war"
+              appName="i_jsf_2195"/>
+    </target>    
+
+    <target name="remove">
+        <undeploy.artifact
+              artifact="${basedir}/i_jsf_2052/target/i_jsf_2195.war"
+              appName="i_jsf_2195"/>
+    </target>    
+
+    <target name="test" depends="define.scenario.aware.port">
+        <jsf.junit context-path="/i_jsf_2195"
+                 classpath-refid="2195.classpath"    
+                 test-results-dir="${regression.test.results.dir}">
+            <tests>
+                <fileset dir="${basedir}/htmlunit/target/classes"
+                     includes="com/sun/faces/systest/Issue2195TestCase.class"/> 
+            </tests>
+        </jsf.junit>
+    </target>    
+
+</project>
diff --git a/jsf-test/JAVASERVERFACES-2195/htmlunit/pom.xml b/jsf-test/JAVASERVERFACES-2195/htmlunit/pom.xml
new file mode 100644
index 0000000..e5c71e8
--- /dev/null
+++ b/jsf-test/JAVASERVERFACES-2195/htmlunit/pom.xml
@@ -0,0 +1,116 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <groupId>com.sun.faces.test</groupId>
+    <artifactId>i_jsf_2195_htmlunit</artifactId>
+    <packaging>jar</packaging>
+    <name>i_jsf_2195_htmlunit</name>
+    <version>2.0</version>
+
+    <description>Test for Issue #2195</description>
+
+    <dependencies>
+
+        <dependency>
+            <artifactId>htmlunit</artifactId>
+            <groupId>net.sourceforge.htmlunit</groupId>
+            <version>2.4</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <version>3.8.1</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>com.sun.faces.extensions</groupId>
+            <artifactId>jsf-extensions-test-time</artifactId>
+            <version>2.0</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>javax</groupId>
+            <artifactId>javaee-api</artifactId>
+            <version>6.0</version>
+            <scope>provided</scope>
+        </dependency>
+
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>2.0.2</version>
+                <configuration>
+                    <source>1.6</source>
+                    <target>1.6</target>
+                </configuration>
+            </plugin>
+            <plugin>
+                <artifactId>maven-war-plugin</artifactId>
+                <groupId>org.apache.maven.plugins</groupId>
+                <version>2.1-alpha-2</version>
+                <configuration>
+                    <failOnMissingWebXml>false</failOnMissingWebXml>
+                </configuration>
+            </plugin>
+
+        </plugins>
+        <finalName>i_jsf_2195_htmlunit</finalName>
+    </build>
+
+    <repositories>
+        <repository>
+            <id>java.net</id>
+            <name>java.net</name>
+            <url>http://download.java.net/maven/2</url>
+            <layout>default</layout>
+        </repository>
+    </repositories>
+
+</project>
diff --git a/jsf-test/JAVASERVERFACES-2195/htmlunit/src/main/java/com/sun/faces/systest/Issue2195TestCase.java b/jsf-test/JAVASERVERFACES-2195/htmlunit/src/main/java/com/sun/faces/systest/Issue2195TestCase.java
new file mode 100644
index 0000000..25dc1a1
--- /dev/null
+++ b/jsf-test/JAVASERVERFACES-2195/htmlunit/src/main/java/com/sun/faces/systest/Issue2195TestCase.java
@@ -0,0 +1,133 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.systest;
+
+import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+
+import com.sun.faces.htmlunit.HtmlUnitFacesTestCase;
+
+import javax.faces.component.NamingContainer;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+public class Issue2195TestCase extends HtmlUnitFacesTestCase {
+
+    public Issue2195TestCase(String name) {
+        super(name);
+    }
+
+    /**
+     * Set up instance variables required by this test case.
+     */
+    @Override
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+
+    /**
+     * Return the tests included in this test suite.
+     */
+    public static Test suite() {
+        return (new TestSuite(Issue2195TestCase.class));
+    }
+
+    /**
+     * Tear down instance variables required by this test case.
+     */
+    @Override
+    public void tearDown() {
+        super.tearDown();
+    }
+
+    // ------------------------------------------------------------ Test Methods
+    public void testActionListener() throws Exception {
+        HtmlPage page = getPage("/faces/actionListener.xhtml");
+        HtmlSubmitInput submit = (HtmlSubmitInput)
+            page.getElementById("form" +
+                                NamingContainer.SEPARATOR_CHAR +
+                                "cc_action" +
+                                NamingContainer.SEPARATOR_CHAR +
+                                "button");
+        page = (HtmlPage) submit.click();
+        assertTrue(page.asText().contains("PROCESSACTION CALLED"));
+    }
+
+    public void testAjaxListener() throws Exception {
+        HtmlPage page = getPage("/faces/ajax.xhtml");
+        HtmlSubmitInput submit = (HtmlSubmitInput)
+            page.getElementById("form" +
+                                NamingContainer.SEPARATOR_CHAR +
+                                "cc_ajax" +
+                                NamingContainer.SEPARATOR_CHAR +
+                                "button");
+        page = (HtmlPage) submit.click();
+        assertTrue(page.asText().contains("PROCESSAJAXBEHAVIOR CALLED"));
+    }
+
+    public void testEventListener() throws Exception {
+        HtmlPage page = getPage("/faces/event.xhtml");
+        HtmlSubmitInput submit = (HtmlSubmitInput)
+            page.getElementById("form" +
+                                NamingContainer.SEPARATOR_CHAR +
+                                "button");
+        page = (HtmlPage) submit.click();
+        assertTrue(page.asText().contains("LISTENER CALLED"));
+    }
+
+    public void testValueChangeListener() throws Exception {
+        HtmlPage page = getPage("/faces/valueChangeListener.xhtml");
+        HtmlTextInput input = (HtmlTextInput)
+            page.getElementById("form" +
+                                NamingContainer.SEPARATOR_CHAR +
+                                "cc_value" +
+                                NamingContainer.SEPARATOR_CHAR +
+                                "input");
+        input.setValueAttribute("Foo");
+        HtmlSubmitInput submit = (HtmlSubmitInput)
+            page.getElementById("form" +
+                                NamingContainer.SEPARATOR_CHAR +
+                                "button");
+        page = (HtmlPage) submit.click();
+        assertTrue(page.asText().contains("VALUECHANGE CALLED"));
+    }
+}
diff --git a/jsf-test/JAVASERVERFACES-2195/i_jsf_2195/pom.xml b/jsf-test/JAVASERVERFACES-2195/i_jsf_2195/pom.xml
new file mode 100644
index 0000000..60b39ce
--- /dev/null
+++ b/jsf-test/JAVASERVERFACES-2195/i_jsf_2195/pom.xml
@@ -0,0 +1,116 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <groupId>com.sun.faces.test</groupId>
+    <artifactId>i_jsf_2195</artifactId>
+    <version>1.0</version>
+    <packaging>war</packaging>
+    <build>
+        <finalName>i_jsf_2195</finalName>
+        <plugins>
+          <plugin>
+            <groupId>org.apache.maven.plugins</groupId>
+            <artifactId>maven-war-plugin</artifactId>
+            <version>2.1.1</version>
+          </plugin>
+            <plugin>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                    <source>1.6</source>
+                    <target>1.6</target>
+                </configuration>
+            </plugin>
+            <plugin>
+                <artifactId>maven-dependency-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <phase>install</phase>
+                                    
+                        <configuration>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+
+        </plugins>
+        <extensions>
+            <extension>
+                <groupId>org.jvnet.wagon-svn</groupId>
+                <artifactId>wagon-svn</artifactId>
+                <version>1.12</version>
+            </extension>
+        </extensions>
+    </build>
+    <dependencies>
+        <dependency>
+            <groupId>javax</groupId>
+            <artifactId>javaee-api</artifactId>
+            <version>6.0</version>
+            <scope>provided</scope>
+        </dependency>
+    </dependencies>
+
+
+    <distributionManagement>
+        <repository>
+            <uniqueVersion>false</uniqueVersion>
+            <id>java.net-maven2-repository</id>
+            <url>java-net:/maven2-repository~svn/trunk/repository/</url>
+        </repository>
+    </distributionManagement>
+
+    <repositories>
+        <repository>
+            <id>java.net</id>
+            <name>java.net</name>
+            <url>http://download.java.net/maven/2</url>
+            <layout>default</layout>
+        </repository>
+    </repositories>
+</project>
+
+
diff --git a/jsf-test/JAVASERVERFACES-2195/i_jsf_2195/src/main/java/i_jsf_2195/TestBean.java b/jsf-test/JAVASERVERFACES-2195/i_jsf_2195/src/main/java/i_jsf_2195/TestBean.java
new file mode 100644
index 0000000..aedd508
--- /dev/null
+++ b/jsf-test/JAVASERVERFACES-2195/i_jsf_2195/src/main/java/i_jsf_2195/TestBean.java
@@ -0,0 +1,45 @@
+package i_jsf_2195;
+
+import java.io.Serializable;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.component.UIOutput;
+import javax.faces.context.FacesContext;
+import javax.faces.event.AbortProcessingException;
+import javax.faces.event.ActionEvent;
+import javax.faces.event.AjaxBehaviorEvent;
+import javax.faces.event.ComponentSystemEvent;
+import javax.faces.event.ValueChangeEvent;
+
+ at ManagedBean(name = "test")
+public class TestBean implements Serializable {
+
+    public void processAction(ActionEvent event)
+        throws AbortProcessingException {
+        FacesContext context = FacesContext.getCurrentInstance();
+        UIOutput output = (UIOutput) context.getViewRoot().findComponent("form:cc_action:out");
+        output.setValue("PROCESSACTION CALLED");
+    }
+
+    public void valueChange(ValueChangeEvent event) 
+        throws AbortProcessingException {
+        FacesContext context = FacesContext.getCurrentInstance();
+        UIOutput output = (UIOutput) context.getViewRoot().findComponent("form:cc_value:out");
+        output.setValue("VALUECHANGE CALLED");
+    }
+
+    public void processAjaxBehavior(AjaxBehaviorEvent event) 
+        throws AbortProcessingException {
+        FacesContext context = FacesContext.getCurrentInstance();
+        UIOutput output = (UIOutput) context.getViewRoot().findComponent("form:cc_ajax:out");
+        output.setValue("PROCESSAJAXBEHAVIOR CALLED");
+    }
+
+    public void listener(ComponentSystemEvent event) 
+        throws AbortProcessingException {
+        FacesContext context = FacesContext.getCurrentInstance();
+        UIOutput output = (UIOutput) context.getViewRoot().findComponent("form:out");
+        output.setValue("LISTENER CALLED");
+    }
+
+}
diff --git a/jsf-test/JAVASERVERFACES-2195/i_jsf_2195/src/main/webapp/WEB-INF/web.xml b/jsf-test/JAVASERVERFACES-2195/i_jsf_2195/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..205402f
--- /dev/null
+++ b/jsf-test/JAVASERVERFACES-2195/i_jsf_2195/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,35 @@
+<web-app xmlns="http://java.sun.com/xml/ns/javaee" 
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
+
+  <display-name>TestJSFServlet</display-name>
+
+  <listener>
+    <listener-class>com.sun.faces.config.ConfigureListener</listener-class>
+  </listener>
+
+  <!-- Faces Servlet -->
+  <servlet>
+    <servlet-name>FacesServlet</servlet-name>
+    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+    <load-on-startup>-1</load-on-startup>
+  </servlet>
+
+  <!-- Faces Servlet Mapping -->
+
+  <context-param>
+    <param-name>javax.faces.PROJECT_STAGE</param-name>
+    <param-value>Development</param-value>
+  </context-param>
+
+  <servlet-mapping>
+    <servlet-name>FacesServlet</servlet-name>
+    <url-pattern>/faces/*</url-pattern>
+  </servlet-mapping>
+
+  <mime-mapping>
+    <extension>xhtml</extension>
+    <mime-type>application/xhtml+xml</mime-type>
+  </mime-mapping>
+  
+</web-app>
diff --git a/jsf-test/JAVASERVERFACES-2195/i_jsf_2195/src/main/webapp/actionListener.xhtml b/jsf-test/JAVASERVERFACES-2195/i_jsf_2195/src/main/webapp/actionListener.xhtml
new file mode 100644
index 0000000..4e41bc0
--- /dev/null
+++ b/jsf-test/JAVASERVERFACES-2195/i_jsf_2195/src/main/webapp/actionListener.xhtml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="Windows-31J"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+xmlns:h="http://java.sun.com/jsf/html"
+xmlns:mycomp="http://java.sun.com/jsf/composite/mycomp"
+>
+
+<h:body>
+
+<h:form id="form">
+
+	<mycomp:cc_actionListener id="cc_action" display="submit" aListener="#{test.processAction}" />
+			
+</h:form>	
+
+</h:body>
+
+</html>
+
diff --git a/jsf-test/JAVASERVERFACES-2195/i_jsf_2195/src/main/webapp/ajax.xhtml b/jsf-test/JAVASERVERFACES-2195/i_jsf_2195/src/main/webapp/ajax.xhtml
new file mode 100644
index 0000000..a982f90
--- /dev/null
+++ b/jsf-test/JAVASERVERFACES-2195/i_jsf_2195/src/main/webapp/ajax.xhtml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="Windows-31J"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+xmlns:h="http://java.sun.com/jsf/html"
+xmlns:f="http://java.sun.com/jsf/core"
+xmlns:mycomp="http://java.sun.com/jsf/composite/mycomp"
+>
+
+<h:head></h:head>
+
+<h:body>
+
+	<h:form id="form">
+
+	<mycomp:cc_ajax id="cc_ajax" display="ajax" ajaxL="#{test.processAjaxBehavior}" />
+	
+	</h:form>
+
+</h:body>
+
+</html>
+
diff --git a/jsf-test/JAVASERVERFACES-2195/i_jsf_2195/src/main/webapp/event.xhtml b/jsf-test/JAVASERVERFACES-2195/i_jsf_2195/src/main/webapp/event.xhtml
new file mode 100644
index 0000000..5615450
--- /dev/null
+++ b/jsf-test/JAVASERVERFACES-2195/i_jsf_2195/src/main/webapp/event.xhtml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="Windows-31J"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+xmlns:h="http://java.sun.com/jsf/html"
+xmlns:f="http://java.sun.com/jsf/core"
+xmlns:mycomp="http://java.sun.com/jsf/composite/mycomp"
+>
+
+<h:body>
+
+	<mycomp:cc_event id="cc_event" timing="preValidate" method="#{test.listener}" />
+
+<h:form id="form">
+	<h:commandButton id="button" value="submit" />		
+        <h:outputText id="out" />
+</h:form>
+
+</h:body>
+
+</html>
+
diff --git a/jsf-test/JAVASERVERFACES-2195/i_jsf_2195/src/main/webapp/index.html b/jsf-test/JAVASERVERFACES-2195/i_jsf_2195/src/main/webapp/index.html
new file mode 100644
index 0000000..2ca4148
--- /dev/null
+++ b/jsf-test/JAVASERVERFACES-2195/i_jsf_2195/src/main/webapp/index.html
@@ -0,0 +1,13 @@
+<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
+<html>
+<head>
+<body>
+<br>
+<P><a href="faces/actionListener.xhtml">click�I</a>actionListener</P>
+<P><a href="faces/ajax.xhtml">click�I</a>ajax</P>
+<P><a href="faces/event.xhtml">click�I</a>event</P>
+<P><a href="faces/valueChangeListener.xhtml">click�I</a>valueChangeListener</P>
+<br>
+<hr WIDTH="100%">
+</body>
+</html>
diff --git a/jsf-test/JAVASERVERFACES-2195/i_jsf_2195/src/main/webapp/resources/mycomp/cc_actionListener.xhtml b/jsf-test/JAVASERVERFACES-2195/i_jsf_2195/src/main/webapp/resources/mycomp/cc_actionListener.xhtml
new file mode 100644
index 0000000..17e9fb8
--- /dev/null
+++ b/jsf-test/JAVASERVERFACES-2195/i_jsf_2195/src/main/webapp/resources/mycomp/cc_actionListener.xhtml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="Windows-31J"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+xmlns:h="http://java.sun.com/jsf/html"
+xmlns:f="http://java.sun.com/jsf/core"
+xmlns:composite="http://java.sun.com/jsf/composite"
+>
+
+<composite:interface>
+	<composite:attribute name="display" />
+	<composite:attribute name="aListener" method-signature="void actionListener(javax.faces.event.ActionEvent)" />
+</composite:interface>
+
+<composite:implementation>
+
+	<h:commandButton id="button" value="#{cc.attrs.display}" actionListener="#{cc.attrs.aListener}" />
+        <h:outputText id="out" />
+	
+</composite:implementation>
+
+</html>
diff --git a/jsf-test/JAVASERVERFACES-2195/i_jsf_2195/src/main/webapp/resources/mycomp/cc_ajax.xhtml b/jsf-test/JAVASERVERFACES-2195/i_jsf_2195/src/main/webapp/resources/mycomp/cc_ajax.xhtml
new file mode 100644
index 0000000..69e7c89
--- /dev/null
+++ b/jsf-test/JAVASERVERFACES-2195/i_jsf_2195/src/main/webapp/resources/mycomp/cc_ajax.xhtml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="Windows-31J"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+xmlns:h="http://java.sun.com/jsf/html"
+xmlns:f="http://java.sun.com/jsf/core"
+xmlns:composite="http://java.sun.com/jsf/composite"
+>
+
+<composite:interface>
+	<composite:attribute name="display" />
+	<composite:attribute name="ajaxL" method-signature="void processAjaxBehavior(javax.faces.event.AjaxBehaviorEvent)" />
+</composite:interface>
+
+<composite:implementation>
+
+	<h:commandButton id="button" value="#{cc.attrs.display}" >
+		<f:ajax render="out" listener="#{cc.attrs.ajaxL}" />
+	</h:commandButton>
+        <h:outputText id="out" />
+	
+</composite:implementation>
+
+</html>
diff --git a/jsf-test/JAVASERVERFACES-2195/i_jsf_2195/src/main/webapp/resources/mycomp/cc_event.xhtml b/jsf-test/JAVASERVERFACES-2195/i_jsf_2195/src/main/webapp/resources/mycomp/cc_event.xhtml
new file mode 100644
index 0000000..11d3392
--- /dev/null
+++ b/jsf-test/JAVASERVERFACES-2195/i_jsf_2195/src/main/webapp/resources/mycomp/cc_event.xhtml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="Windows-31J"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+xmlns:h="http://java.sun.com/jsf/html"
+xmlns:f="http://java.sun.com/jsf/core"
+xmlns:composite="http://java.sun.com/jsf/composite"
+>
+
+<composite:interface>
+	<composite:attribute name="timing" />
+	<composite:attribute name="method" method-signature="void listener(javax.faces.event.ComponentSystemEvent)" />
+</composite:interface>
+
+<composite:implementation>
+
+	<f:event type="#{cc.attrs.timing}" listener="#{cc.attrs.method}" />
+	
+</composite:implementation>
+
+</html>
diff --git a/jsf-test/JAVASERVERFACES-2195/i_jsf_2195/src/main/webapp/resources/mycomp/cc_valueChangeListener.xhtml b/jsf-test/JAVASERVERFACES-2195/i_jsf_2195/src/main/webapp/resources/mycomp/cc_valueChangeListener.xhtml
new file mode 100644
index 0000000..cbbd378
--- /dev/null
+++ b/jsf-test/JAVASERVERFACES-2195/i_jsf_2195/src/main/webapp/resources/mycomp/cc_valueChangeListener.xhtml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="Windows-31J"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+xmlns:h="http://java.sun.com/jsf/html"
+xmlns:f="http://java.sun.com/jsf/core"
+xmlns:composite="http://java.sun.com/jsf/composite"
+>
+
+<composite:interface>
+	<composite:attribute name="vListener" method-signature="void valueChange(javax.faces.event.ValueChangeEvent)" />
+</composite:interface>
+
+<composite:implementation>
+
+	<h:inputText id="input" valueChangeListener="#{cc.attrs.vListener}" />
+        <h:outputText id="out" />
+	
+</composite:implementation>
+
+</html>
diff --git a/jsf-test/JAVASERVERFACES-2195/i_jsf_2195/src/main/webapp/resources/mycomp/cc_view.xhtml b/jsf-test/JAVASERVERFACES-2195/i_jsf_2195/src/main/webapp/resources/mycomp/cc_view.xhtml
new file mode 100644
index 0000000..dd98d91
--- /dev/null
+++ b/jsf-test/JAVASERVERFACES-2195/i_jsf_2195/src/main/webapp/resources/mycomp/cc_view.xhtml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="Windows-31J"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+xmlns:h="http://java.sun.com/jsf/html"
+xmlns:f="http://java.sun.com/jsf/core"
+xmlns:composite="http://java.sun.com/jsf/composite"
+>
+
+<composite:interface>
+	<composite:attribute name="before" method-signature="void beforePhase(javax.faces.event.PhaseEvent)"/>	
+	<composite:attribute name="after" method-signature="void afterPhase(javax.faces.event.PhaseEvent)"/>
+</composite:interface>
+
+<composite:implementation>
+
+	<f:view beforePhase="#{cc.attrs.before}" afterPhase="#{cc.attrs.after}" />
+	
+</composite:implementation>
+
+</html>
\ No newline at end of file
diff --git a/jsf-test/JAVASERVERFACES-2195/i_jsf_2195/src/main/webapp/valueChangeListener.xhtml b/jsf-test/JAVASERVERFACES-2195/i_jsf_2195/src/main/webapp/valueChangeListener.xhtml
new file mode 100644
index 0000000..6ff4686
--- /dev/null
+++ b/jsf-test/JAVASERVERFACES-2195/i_jsf_2195/src/main/webapp/valueChangeListener.xhtml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="Windows-31J"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+xmlns:h="http://java.sun.com/jsf/html"
+xmlns:mycomp="http://java.sun.com/jsf/composite/mycomp"
+>
+
+<h:body>
+
+<h:form id="form">
+
+	<mycomp:cc_valueChangeListener id="cc_value" vListener="#{test.valueChange}" />
+	
+	<h:commandButton id="button" value="submit" />
+			
+</h:form>	
+
+</h:body>
+
+</html>
+
diff --git a/jsf-test/JAVASERVERFACES-2197/build.xml b/jsf-test/JAVASERVERFACES-2197/build.xml
new file mode 100644
index 0000000..90ee0c7
--- /dev/null
+++ b/jsf-test/JAVASERVERFACES-2197/build.xml
@@ -0,0 +1,87 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<!-- ************ JSF build file ************************************** -->
+<project name="JAVASERVERFACES-2197" default="test" basedir=".">
+
+    <property file="../../build.properties"/>
+    <path id="2197.classpath">  
+        <path refid="html.classpath" />
+        <pathelement location="${basedir}/htmlunit/target/classes"/>
+    </path>
+
+    <import file="${jsf.build.home}/common/ant/common.xml"/>
+
+    <target name="build">
+        <jsf.mvn dir="${basedir}/i_jsf_2197" goals="install" />
+        <jsf.mvn dir="${basedir}/htmlunit" goals="install" />
+    </target>    
+
+    <target name="clean">
+        <jsf.mvn dir="${basedir}/i_jsf_2197" goals="clean" />
+        <jsf.mvn dir="${basedir}/htmlunit" goals="clean" />
+    </target>    
+
+    <target name="install">
+        <deploy.artifact
+              artifact="${basedir}/i_jsf_2197/target/i_jsf_2197.war"
+              appName="i_jsf_2197"/>
+    </target>    
+
+    <target name="remove">
+        <undeploy.artifact
+              artifact="${basedir}/i_jsf_2052/target/i_jsf_2197.war"
+              appName="i_jsf_2197"/>
+    </target>    
+
+    <target name="test" depends="define.scenario.aware.port">
+        <jsf.junit context-path="/i_jsf_2197"
+                 classpath-refid="2197.classpath"    
+                 test-results-dir="${regression.test.results.dir}">
+            <tests>
+                <fileset dir="${basedir}/htmlunit/target/classes"
+                     includes="com/sun/faces/systest/Issue2197TestCase.class"/> 
+            </tests>
+        </jsf.junit>
+    </target>    
+
+</project>
diff --git a/jsf-test/JAVASERVERFACES-2197/htmlunit/pom.xml b/jsf-test/JAVASERVERFACES-2197/htmlunit/pom.xml
new file mode 100644
index 0000000..d166fc9
--- /dev/null
+++ b/jsf-test/JAVASERVERFACES-2197/htmlunit/pom.xml
@@ -0,0 +1,116 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <groupId>com.sun.faces.test</groupId>
+    <artifactId>i_jsf_2197_htmlunit</artifactId>
+    <packaging>jar</packaging>
+    <name>i_jsf_2197_htmlunit</name>
+    <version>2.0</version>
+
+    <description>Test for Issue #2197</description>
+
+    <dependencies>
+
+        <dependency>
+            <artifactId>htmlunit</artifactId>
+            <groupId>net.sourceforge.htmlunit</groupId>
+            <version>2.4</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <version>3.8.1</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>com.sun.faces.extensions</groupId>
+            <artifactId>jsf-extensions-test-time</artifactId>
+            <version>2.0</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>javax</groupId>
+            <artifactId>javaee-api</artifactId>
+            <version>6.0</version>
+            <scope>provided</scope>
+        </dependency>
+
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>2.0.2</version>
+                <configuration>
+                    <source>1.6</source>
+                    <target>1.6</target>
+                </configuration>
+            </plugin>
+            <plugin>
+                <artifactId>maven-war-plugin</artifactId>
+                <groupId>org.apache.maven.plugins</groupId>
+                <version>2.1-alpha-2</version>
+                <configuration>
+                    <failOnMissingWebXml>false</failOnMissingWebXml>
+                </configuration>
+            </plugin>
+
+        </plugins>
+        <finalName>i_jsf_2197_htmlunit</finalName>
+    </build>
+
+    <repositories>
+        <repository>
+            <id>java.net</id>
+            <name>java.net</name>
+            <url>http://download.java.net/maven/2</url>
+            <layout>default</layout>
+        </repository>
+    </repositories>
+
+</project>
diff --git a/jsf-test/JAVASERVERFACES-2197/htmlunit/src/main/java/com/sun/faces/systest/Issue2197TestCase.java b/jsf-test/JAVASERVERFACES-2197/htmlunit/src/main/java/com/sun/faces/systest/Issue2197TestCase.java
new file mode 100644
index 0000000..a760ffc
--- /dev/null
+++ b/jsf-test/JAVASERVERFACES-2197/htmlunit/src/main/java/com/sun/faces/systest/Issue2197TestCase.java
@@ -0,0 +1,270 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.systest;
+
+import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+
+import com.sun.faces.htmlunit.HtmlUnitFacesTestCase;
+
+import javax.faces.component.NamingContainer;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+public class Issue2197TestCase extends HtmlUnitFacesTestCase {
+
+    public Issue2197TestCase(String name) {
+        super(name);
+    }
+
+    /**
+     * Set up instance variables required by this test case.
+     */
+    @Override
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+
+    /**
+     * Return the tests included in this test suite.
+     */
+    public static Test suite() {
+        return (new TestSuite(Issue2197TestCase.class));
+    }
+
+    /**
+     * Tear down instance variables required by this test case.
+     */
+    @Override
+    public void tearDown() {
+        super.tearDown();
+    }
+
+    // ------------------------------------------------------------ Test Methods
+    public void testConvertNumber() throws Exception {
+        HtmlPage page = getPage("/faces/convertNumber.xhtml");
+        HtmlTextInput input = (HtmlTextInput)
+            page.getElementById("form" +
+                                NamingContainer.SEPARATOR_CHAR +
+                                "register" +
+                                NamingContainer.SEPARATOR_CHAR +
+                                "name");
+        input.setValueAttribute("Foo");
+        HtmlSubmitInput submit = (HtmlSubmitInput)
+            page.getElementById("form" +
+                                NamingContainer.SEPARATOR_CHAR +
+                                "button");
+        page = (HtmlPage) submit.click();
+        assertTrue(page.asText().contains("could not be understood as a percentage"));
+    }
+
+    public void testConverter() throws Exception {
+        HtmlPage page = getPage("/faces/converter.xhtml");
+        HtmlTextInput input = (HtmlTextInput)
+            page.getElementById("form" +
+                                NamingContainer.SEPARATOR_CHAR +
+                                "register" +
+                                NamingContainer.SEPARATOR_CHAR +
+                                "name");
+        input.setValueAttribute("Foo");
+        HtmlSubmitInput submit = (HtmlSubmitInput)
+            page.getElementById("form" +
+                                NamingContainer.SEPARATOR_CHAR +
+                                "button");
+        page = (HtmlPage) submit.click();
+        assertTrue(page.asText().contains("must be a number consisting of one or more digits"));
+    }
+
+    public void testConvertDateTime() throws Exception {
+        HtmlPage page = getPage("/faces/convertDateTime.xhtml");
+        HtmlTextInput input = (HtmlTextInput)
+            page.getElementById("form" +
+                                NamingContainer.SEPARATOR_CHAR +
+                                "register" +
+                                NamingContainer.SEPARATOR_CHAR +
+                                "name");
+        input.setValueAttribute("Foo");
+        HtmlSubmitInput submit = (HtmlSubmitInput)
+            page.getElementById("form" +
+                                NamingContainer.SEPARATOR_CHAR +
+                                "button");
+        page = (HtmlPage) submit.click();
+        assertTrue(page.asText().contains("could not be understood as a date"));
+    }
+
+    public void testValidateLength() throws Exception {
+        HtmlPage page = getPage("/faces/validateLength.xhtml");
+        HtmlTextInput input = (HtmlTextInput)
+            page.getElementById("form" +
+                                NamingContainer.SEPARATOR_CHAR +
+                                "register" +
+                                NamingContainer.SEPARATOR_CHAR +
+                                "name");
+        input.setValueAttribute("FooFoo");
+        HtmlSubmitInput submit = (HtmlSubmitInput)
+            page.getElementById("form" +
+                                NamingContainer.SEPARATOR_CHAR +
+                                "button");
+        page = (HtmlPage) submit.click();
+        assertTrue(page.asText().contains("Length is greater than allowable maximum"));
+    }
+
+
+    public void testActionListener() throws Exception {
+        HtmlPage page = getPage("/faces/actionListener.xhtml");
+        HtmlSubmitInput submit = (HtmlSubmitInput)
+            page.getElementById("form" +
+                                NamingContainer.SEPARATOR_CHAR +
+                                "mybutton" +
+                                NamingContainer.SEPARATOR_CHAR +
+                                "name");
+        page = (HtmlPage) submit.click();
+        assertTrue(page.asText().contains("name was pressed"));
+    }
+
+    public void testValueChangeListener() throws Exception {
+        HtmlPage page = getPage("/faces/valueChangeListener.xhtml");
+        HtmlTextInput input = (HtmlTextInput)
+            page.getElementById("form" +
+                                NamingContainer.SEPARATOR_CHAR +
+                                "register" +
+                                NamingContainer.SEPARATOR_CHAR +
+                                "name");
+        input.setValueAttribute("FooFoo");
+        HtmlSubmitInput submit = (HtmlSubmitInput)
+            page.getElementById("form" +
+                                NamingContainer.SEPARATOR_CHAR +
+                                "button");
+        page = (HtmlPage) submit.click();
+        assertTrue(page.asText().contains("name value was changed"));
+    }
+
+    public void testSetPropertyActionListener() throws Exception {
+        HtmlPage page = getPage("/faces/setPropertyActionListener.xhtml");
+        HtmlSubmitInput submit = (HtmlSubmitInput)
+            page.getElementById("form" +
+                                NamingContainer.SEPARATOR_CHAR +
+                                "mybutton" +
+                                NamingContainer.SEPARATOR_CHAR +
+                                "name");
+        page = (HtmlPage) submit.click();
+        assertTrue(page.asText().contains("foo"));
+    }
+
+    public void testValidateDoubleRange() throws Exception {
+        HtmlPage page = getPage("/faces/validateDoubleRange.xhtml");
+        HtmlTextInput input = (HtmlTextInput)
+            page.getElementById("form" +
+                                NamingContainer.SEPARATOR_CHAR +
+                                "register" +
+                                NamingContainer.SEPARATOR_CHAR +
+                                "name");
+        input.setValueAttribute("123456");
+        HtmlSubmitInput submit = (HtmlSubmitInput)
+            page.getElementById("form" +
+                                NamingContainer.SEPARATOR_CHAR +
+                                "button");
+        page = (HtmlPage) submit.click();
+        assertTrue(page.asText().contains("Specified attribute is not between the expected values of 2 and 5"));
+    }
+
+    public void testValidateLongRange() throws Exception {
+        HtmlPage page = getPage("/faces/validateLongRange.xhtml");
+        HtmlTextInput input = (HtmlTextInput)
+            page.getElementById("form" +
+                                NamingContainer.SEPARATOR_CHAR +
+                                "register" +
+                                NamingContainer.SEPARATOR_CHAR +
+                                "name");
+        input.setValueAttribute("123456");
+        HtmlSubmitInput submit = (HtmlSubmitInput)
+            page.getElementById("form" +
+                                NamingContainer.SEPARATOR_CHAR +
+                                "button");
+        page = (HtmlPage) submit.click();
+        assertTrue(page.asText().contains("Specified attribute is not between the expected values of 2 and 5"));
+    }
+
+    public void testValidateRequired() throws Exception {
+        HtmlPage page = getPage("/faces/validateRequired.xhtml");
+        HtmlSubmitInput submit = (HtmlSubmitInput)
+            page.getElementById("form" +
+                                NamingContainer.SEPARATOR_CHAR +
+                                "button");
+        page = (HtmlPage) submit.click();
+        assertTrue(page.asText().contains("Value is required"));
+    }
+
+    public void testValidator() throws Exception {
+        HtmlPage page = getPage("/faces/validator.xhtml");
+        HtmlTextInput input = (HtmlTextInput)
+            page.getElementById("form" +
+                                NamingContainer.SEPARATOR_CHAR +
+                                "register" +
+                                NamingContainer.SEPARATOR_CHAR +
+                                "name");
+        input.setValueAttribute("123456");
+        HtmlSubmitInput submit = (HtmlSubmitInput)
+            page.getElementById("form" +
+                                NamingContainer.SEPARATOR_CHAR +
+                                "button");
+        page = (HtmlPage) submit.click();
+        assertTrue(page.asText().contains("name was validated"));
+    }
+
+    public void testValidateRegex() throws Exception {
+        HtmlPage page = getPage("/faces/validateRegex.xhtml");
+        HtmlTextInput input = (HtmlTextInput)
+            page.getElementById("form" +
+                                NamingContainer.SEPARATOR_CHAR +
+                                "register" +
+                                NamingContainer.SEPARATOR_CHAR +
+                                "name");
+        input.setValueAttribute("$$$$$$$$$$$");
+        HtmlSubmitInput submit = (HtmlSubmitInput)
+            page.getElementById("form" +
+                                NamingContainer.SEPARATOR_CHAR +
+                                "button");
+        page = (HtmlPage) submit.click();
+        assertTrue(page.asText().contains("Regex Pattern not matched"));
+    }
+}
diff --git a/jsf-test/JAVASERVERFACES-2197/i_jsf_2197/pom.xml b/jsf-test/JAVASERVERFACES-2197/i_jsf_2197/pom.xml
new file mode 100644
index 0000000..6b45da8
--- /dev/null
+++ b/jsf-test/JAVASERVERFACES-2197/i_jsf_2197/pom.xml
@@ -0,0 +1,117 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <groupId>com.sun.faces.test</groupId>
+    <artifactId>i_jsf_2197</artifactId>
+    <version>1.0</version>
+    <packaging>war</packaging>
+    <build>
+        <finalName>i_jsf_2197</finalName>
+        <plugins>
+          <plugin>
+            <groupId>org.apache.maven.plugins</groupId>
+            <artifactId>maven-war-plugin</artifactId>
+            <version>2.1.1</version>
+          </plugin>
+
+            <plugin>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                    <source>1.6</source>
+                    <target>1.6</target>
+                </configuration>
+            </plugin>
+            <plugin>
+                <artifactId>maven-dependency-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <phase>install</phase>
+                                    
+                        <configuration>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+
+        </plugins>
+        <extensions>
+            <extension>
+                <groupId>org.jvnet.wagon-svn</groupId>
+                <artifactId>wagon-svn</artifactId>
+                <version>1.12</version>
+            </extension>
+        </extensions>
+    </build>
+    <dependencies>
+        <dependency>
+            <groupId>javax</groupId>
+            <artifactId>javaee-api</artifactId>
+            <version>6.0</version>
+            <scope>provided</scope>
+        </dependency>
+    </dependencies>
+
+
+    <distributionManagement>
+        <repository>
+            <uniqueVersion>false</uniqueVersion>
+            <id>java.net-maven2-repository</id>
+            <url>java-net:/maven2-repository~svn/trunk/repository/</url>
+        </repository>
+    </distributionManagement>
+
+    <repositories>
+        <repository>
+            <id>java.net</id>
+            <name>java.net</name>
+            <url>http://download.java.net/maven/2</url>
+            <layout>default</layout>
+        </repository>
+    </repositories>
+</project>
+
+
diff --git a/jsf-test/JAVASERVERFACES-2197/i_jsf_2197/src/main/java/i_jsf_2197/TestActionListener.java b/jsf-test/JAVASERVERFACES-2197/i_jsf_2197/src/main/java/i_jsf_2197/TestActionListener.java
new file mode 100755
index 0000000..75a7257
--- /dev/null
+++ b/jsf-test/JAVASERVERFACES-2197/i_jsf_2197/src/main/java/i_jsf_2197/TestActionListener.java
@@ -0,0 +1,65 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package i_jsf_2197;
+
+import javax.faces.application.FacesMessage;
+import javax.faces.component.UIComponent;
+import javax.faces.component.UIOutput;
+import javax.faces.context.FacesContext;
+import javax.faces.event.ActionListener;
+import javax.faces.event.ActionEvent;
+import javax.faces.component.StateHolder;
+import javax.faces.event.AbortProcessingException;
+
+public class TestActionListener implements ActionListener {
+    
+    public TestActionListener() {}
+
+    public void processAction(ActionEvent ae)
+        throws AbortProcessingException {
+        FacesContext context = FacesContext.getCurrentInstance();
+        context.addMessage(ae.getComponent().getClientId(context),
+            new FacesMessage(FacesMessage.SEVERITY_ERROR,
+            	ae.getComponent().getId() + " was pressed", null));
+    } 
+    
+    
+}
diff --git a/jsf-test/JAVASERVERFACES-2197/i_jsf_2197/src/main/java/i_jsf_2197/TestBean.java b/jsf-test/JAVASERVERFACES-2197/i_jsf_2197/src/main/java/i_jsf_2197/TestBean.java
new file mode 100644
index 0000000..a3eb7ac
--- /dev/null
+++ b/jsf-test/JAVASERVERFACES-2197/i_jsf_2197/src/main/java/i_jsf_2197/TestBean.java
@@ -0,0 +1,29 @@
+package i_jsf_2197;
+
+import java.io.Serializable;
+
+import javax.faces.bean.ManagedBean;
+
+ at ManagedBean(name = "test")
+public class TestBean implements Serializable {
+
+    private String forValue = "name";
+
+    public String getForValue() {
+        return forValue;
+    }
+
+    public void setForValue(String forValue) {
+        this.forValue = forValue;
+    }
+
+    private String property;
+
+    public void setProperty(String property) {
+        this.property = property;
+    }
+
+    public String getProperty() {
+        return property;
+    }
+}
diff --git a/jsf-test/JAVASERVERFACES-2197/i_jsf_2197/src/main/java/i_jsf_2197/TestValidator.java b/jsf-test/JAVASERVERFACES-2197/i_jsf_2197/src/main/java/i_jsf_2197/TestValidator.java
new file mode 100755
index 0000000..d38e8b2
--- /dev/null
+++ b/jsf-test/JAVASERVERFACES-2197/i_jsf_2197/src/main/java/i_jsf_2197/TestValidator.java
@@ -0,0 +1,64 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package i_jsf_2197;
+
+
+import javax.faces.application.FacesMessage;
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.validator.Validator;
+
+
+/**
+ * <p>Test implementation of {@link Validator}.</p>
+ */
+
+public class TestValidator implements Validator {
+
+
+    public void validate(FacesContext context, UIComponent component, Object value) {
+        context.addMessage(component.getClientId(context),
+            new FacesMessage(FacesMessage.SEVERITY_ERROR,
+                component.getId() + " was validated", null));
+    }
+
+
+}
diff --git a/jsf-test/JAVASERVERFACES-2197/i_jsf_2197/src/main/java/i_jsf_2197/TestValueChangeListener.java b/jsf-test/JAVASERVERFACES-2197/i_jsf_2197/src/main/java/i_jsf_2197/TestValueChangeListener.java
new file mode 100755
index 0000000..2a62231
--- /dev/null
+++ b/jsf-test/JAVASERVERFACES-2197/i_jsf_2197/src/main/java/i_jsf_2197/TestValueChangeListener.java
@@ -0,0 +1,65 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package i_jsf_2197;
+
+import javax.faces.application.FacesMessage;
+import javax.faces.component.UIComponent;
+import javax.faces.component.UIOutput;
+import javax.faces.context.FacesContext;
+import javax.faces.event.ValueChangeListener;
+import javax.faces.event.ValueChangeEvent;
+import javax.faces.component.StateHolder;
+import javax.faces.event.AbortProcessingException;
+
+public class TestValueChangeListener implements ValueChangeListener {
+    
+    public TestValueChangeListener() {}
+
+    public void processValueChange(ValueChangeEvent vce)
+        throws AbortProcessingException {
+        FacesContext context = FacesContext.getCurrentInstance();
+        context.addMessage(vce.getComponent().getClientId(context),
+            new FacesMessage(FacesMessage.SEVERITY_ERROR,
+                vce.getComponent().getId() + " value was changed", null));
+    } 
+    
+    
+}
diff --git a/jsf-test/JAVASERVERFACES-2197/i_jsf_2197/src/main/webapp/WEB-INF/faces-config.xml b/jsf-test/JAVASERVERFACES-2197/i_jsf_2197/src/main/webapp/WEB-INF/faces-config.xml
new file mode 100644
index 0000000..b113dfa
--- /dev/null
+++ b/jsf-test/JAVASERVERFACES-2197/i_jsf_2197/src/main/webapp/WEB-INF/faces-config.xml
@@ -0,0 +1,53 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
+    version="2.0">
+
+  <validator>
+    <description>TestValidator Description</description>
+    <validator-id>TestValidator</validator-id>
+    <validator-class>i_jsf_2197.TestValidator</validator-class>
+  </validator>
+</faces-config>
diff --git a/jsf-test/JAVASERVERFACES-2197/i_jsf_2197/src/main/webapp/WEB-INF/web.xml b/jsf-test/JAVASERVERFACES-2197/i_jsf_2197/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..5114c87
--- /dev/null
+++ b/jsf-test/JAVASERVERFACES-2197/i_jsf_2197/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<web-app xmlns="http://java.sun.com/xml/ns/javaee" 
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
+
+  <display-name>TestJSFServlet</display-name>
+
+  <listener>
+    <listener-class>com.sun.faces.config.ConfigureListener</listener-class>
+  </listener>
+
+  <!-- Faces Servlet -->
+  <servlet>
+    <servlet-name>FacesServlet</servlet-name>
+    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+    <load-on-startup>-1</load-on-startup>
+  </servlet>
+
+  <!-- Faces Servlet Mapping -->
+
+  <context-param>
+    <param-name>javax.faces.PROJECT_STAGE</param-name>
+    <param-value>Development</param-value>
+  </context-param>
+  
+  <servlet-mapping>
+    <servlet-name>FacesServlet</servlet-name>
+    <url-pattern>/faces/*</url-pattern>
+  </servlet-mapping>
+
+</web-app>
diff --git a/jsf-test/JAVASERVERFACES-2197/i_jsf_2197/src/main/webapp/actionListener.xhtml b/jsf-test/JAVASERVERFACES-2197/i_jsf_2197/src/main/webapp/actionListener.xhtml
new file mode 100644
index 0000000..917c6e8
--- /dev/null
+++ b/jsf-test/JAVASERVERFACES-2197/i_jsf_2197/src/main/webapp/actionListener.xhtml
@@ -0,0 +1,60 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+xmlns:h="http://java.sun.com/jsf/html"
+xmlns:f="http://java.sun.com/jsf/core"
+xmlns:mycomp="http://java.sun.com/jsf/composite/mycomp">
+<head><title>test page</title></head>
+<body>
+	<h:form id="form">
+           <mycomp:button id="mybutton" nameLable="Name" >
+                   <f:actionListener for="#{test.forValue}" type="i_jsf_2197.TestActionListener" />
+           </mycomp:button>
+	</h:form>
+        <br/>
+        <h:messages/>
+        
+</body>
+</html>
diff --git a/jsf-test/JAVASERVERFACES-2197/i_jsf_2197/src/main/webapp/convertDateTime.xhtml b/jsf-test/JAVASERVERFACES-2197/i_jsf_2197/src/main/webapp/convertDateTime.xhtml
new file mode 100644
index 0000000..566ba9e
--- /dev/null
+++ b/jsf-test/JAVASERVERFACES-2197/i_jsf_2197/src/main/webapp/convertDateTime.xhtml
@@ -0,0 +1,59 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+xmlns:h="http://java.sun.com/jsf/html"
+xmlns:f="http://java.sun.com/jsf/core"
+xmlns:mycomp="http://java.sun.com/jsf/composite/mycomp">
+<head><title>test page</title></head>
+<body>
+	<h:form id="form">
+		<mycomp:register id="register" nameLable="Name" >
+ 			<f:convertDateTime for="#{test.forValue}" type="date" dateStyle="medium" />
+		</mycomp:register>
+		<br/>
+		<h:commandButton id="button"/>
+	</h:form>
+</body>
+</html>
diff --git a/jsf-test/JAVASERVERFACES-2197/i_jsf_2197/src/main/webapp/convertNumber.xhtml b/jsf-test/JAVASERVERFACES-2197/i_jsf_2197/src/main/webapp/convertNumber.xhtml
new file mode 100644
index 0000000..b9a4be0
--- /dev/null
+++ b/jsf-test/JAVASERVERFACES-2197/i_jsf_2197/src/main/webapp/convertNumber.xhtml
@@ -0,0 +1,59 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+xmlns:h="http://java.sun.com/jsf/html"
+xmlns:f="http://java.sun.com/jsf/core"
+xmlns:mycomp="http://java.sun.com/jsf/composite/mycomp">
+<head><title>test page</title></head>
+<body>
+	<h:form id="form">
+		<mycomp:register id="register" nameLable="Name" >
+ 			<f:convertNumber for="#{test.forValue}" type="percent" />
+		</mycomp:register>
+		<br/>
+		<h:commandButton id="button"/>
+	</h:form>
+</body>
+</html>
diff --git a/jsf-test/JAVASERVERFACES-2197/i_jsf_2197/src/main/webapp/converter.xhtml b/jsf-test/JAVASERVERFACES-2197/i_jsf_2197/src/main/webapp/converter.xhtml
new file mode 100644
index 0000000..c24d3b2
--- /dev/null
+++ b/jsf-test/JAVASERVERFACES-2197/i_jsf_2197/src/main/webapp/converter.xhtml
@@ -0,0 +1,59 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+xmlns:h="http://java.sun.com/jsf/html"
+xmlns:f="http://java.sun.com/jsf/core"
+xmlns:mycomp="http://java.sun.com/jsf/composite/mycomp">
+<head><title>test page</title></head>
+<body>
+	<h:form id="form">
+		<mycomp:register id="register" nameLable="Name" >
+ 			<f:converter for="#{test.forValue}" converterId="javax.faces.BigInteger" />
+		</mycomp:register>
+		<br/>
+		<h:commandButton id="button"/>
+	</h:form>
+</body>
+</html>
diff --git a/jsf-test/JAVASERVERFACES-2197/i_jsf_2197/src/main/webapp/index.html b/jsf-test/JAVASERVERFACES-2197/i_jsf_2197/src/main/webapp/index.html
new file mode 100644
index 0000000..4f32949
--- /dev/null
+++ b/jsf-test/JAVASERVERFACES-2197/i_jsf_2197/src/main/webapp/index.html
@@ -0,0 +1,63 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
+<html>
+<head>
+<body>
+<br>
+<P><a href="faces/convertNumber.xhtml">click�I</a>convertNumber</P>
+<P><a href="faces/converter.xhtml">click�I</a>converter</P>
+<P><a href="faces/convertDateTime.xhtml">click�I</a>convertDateTime</P>
+<P><a href="faces/validateLength.xhtml">click�I</a>validateLength</P>
+<P><a href="faces/actionListener.xhtml">click�I</a>actionListener</P>
+<P><a href="faces/valueChangeListener.xhtml">click�I</a>valueChangeListener</P>
+<P><a href="faces/setPropertyActionListener.xhtml">click�I</a>setPropertyActionListener</P>
+<P><a href="faces/validateDoubleRange.xhtml">click�I</a>validateDoubleRange</P>
+<P><a href="faces/validateLongRange.xhtml">click�I</a>validateLongRange</P>
+<P><a href="faces/validateRequired.xhtml">click�I</a>validateRequired</P>
+<P><a href="faces/validator.xhtml">click�I</a>validator</P>
+<P><a href="faces/validateRegex.xhtml">click�I</a>validateRegex</P>
+<br>
+<hr WIDTH="100%">
+</body>
+</html>
diff --git a/jsf-test/JAVASERVERFACES-2197/i_jsf_2197/src/main/webapp/resources/mycomp/button.xhtml b/jsf-test/JAVASERVERFACES-2197/i_jsf_2197/src/main/webapp/resources/mycomp/button.xhtml
new file mode 100644
index 0000000..baac279
--- /dev/null
+++ b/jsf-test/JAVASERVERFACES-2197/i_jsf_2197/src/main/webapp/resources/mycomp/button.xhtml
@@ -0,0 +1,58 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+xmlns:h="http://java.sun.com/jsf/html"
+xmlns:f="http://java.sun.com/jsf/core"
+xmlns:composite="http://java.sun.com/jsf/composite"
+>
+
+<composite:interface>
+	<composite:attribute name="nameValue" />
+	<composite:actionSource name="name" targets="name" />
+</composite:interface>
+
+<composite:implementation>
+	<h:commandButton id="name" value="#{cc.attrs.nameValue}" />
+</composite:implementation>
+
+</html>
diff --git a/jsf-test/JAVASERVERFACES-2197/i_jsf_2197/src/main/webapp/resources/mycomp/register.xhtml b/jsf-test/JAVASERVERFACES-2197/i_jsf_2197/src/main/webapp/resources/mycomp/register.xhtml
new file mode 100644
index 0000000..9959be1
--- /dev/null
+++ b/jsf-test/JAVASERVERFACES-2197/i_jsf_2197/src/main/webapp/resources/mycomp/register.xhtml
@@ -0,0 +1,58 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+xmlns:h="http://java.sun.com/jsf/html"
+xmlns:f="http://java.sun.com/jsf/core"
+xmlns:composite="http://java.sun.com/jsf/composite"
+>
+
+<composite:interface>
+	<composite:attribute name="nameValue" />
+	<composite:editableValueHolder name="name" targets="name" />
+</composite:interface>
+
+<composite:implementation>
+	<h:inputText id="name" value="#{cc.attrs.nameValue}" />
+</composite:implementation>
+
+</html>
diff --git a/jsf-test/JAVASERVERFACES-2197/i_jsf_2197/src/main/webapp/setPropertyActionListener.xhtml b/jsf-test/JAVASERVERFACES-2197/i_jsf_2197/src/main/webapp/setPropertyActionListener.xhtml
new file mode 100644
index 0000000..386bf3b
--- /dev/null
+++ b/jsf-test/JAVASERVERFACES-2197/i_jsf_2197/src/main/webapp/setPropertyActionListener.xhtml
@@ -0,0 +1,59 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+xmlns:h="http://java.sun.com/jsf/html"
+xmlns:f="http://java.sun.com/jsf/core"
+xmlns:mycomp="http://java.sun.com/jsf/composite/mycomp">
+<head><title>test page</title></head>
+<body>
+	<h:form id="form">
+           <mycomp:button id="mybutton" nameLable="Name" >
+                   <f:setPropertyActionListener for="#{test.forValue}" target="#{test.property}" value="foo" />
+           </mycomp:button>
+           <br/>
+           <h:outputText id="out" value="#{test.property}" />
+	</h:form>
+</body>
+</html>
diff --git a/jsf-test/JAVASERVERFACES-2197/i_jsf_2197/src/main/webapp/validateDoubleRange.xhtml b/jsf-test/JAVASERVERFACES-2197/i_jsf_2197/src/main/webapp/validateDoubleRange.xhtml
new file mode 100644
index 0000000..798679e
--- /dev/null
+++ b/jsf-test/JAVASERVERFACES-2197/i_jsf_2197/src/main/webapp/validateDoubleRange.xhtml
@@ -0,0 +1,59 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+xmlns:h="http://java.sun.com/jsf/html"
+xmlns:f="http://java.sun.com/jsf/core"
+xmlns:mycomp="http://java.sun.com/jsf/composite/mycomp">
+<head><title>test page</title></head>
+<body>
+	<h:form id="form">
+		<mycomp:register id="register" nameLable="Name" >
+ 			<f:validateDoubleRange for="#{test.forValue}" minimum="2" maximum="5" />
+		</mycomp:register>
+		<br/>
+		<h:commandButton id="button"/>
+	</h:form>
+</body>
+</html>
diff --git a/jsf-test/JAVASERVERFACES-2197/i_jsf_2197/src/main/webapp/validateLength.xhtml b/jsf-test/JAVASERVERFACES-2197/i_jsf_2197/src/main/webapp/validateLength.xhtml
new file mode 100644
index 0000000..753c6c5
--- /dev/null
+++ b/jsf-test/JAVASERVERFACES-2197/i_jsf_2197/src/main/webapp/validateLength.xhtml
@@ -0,0 +1,59 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+xmlns:h="http://java.sun.com/jsf/html"
+xmlns:f="http://java.sun.com/jsf/core"
+xmlns:mycomp="http://java.sun.com/jsf/composite/mycomp">
+<head><title>test page</title></head>
+<body>
+	<h:form id="form">
+		<mycomp:register id="register" nameLable="Name">
+ 			<f:validateLength for="#{test.forValue}" minimum="3" maximum="5" />
+		</mycomp:register>
+		<br/>
+		<h:commandButton id="button"/>
+	</h:form>
+</body>
+</html>
diff --git a/jsf-test/JAVASERVERFACES-2197/i_jsf_2197/src/main/webapp/validateLongRange.xhtml b/jsf-test/JAVASERVERFACES-2197/i_jsf_2197/src/main/webapp/validateLongRange.xhtml
new file mode 100644
index 0000000..3f8ac80
--- /dev/null
+++ b/jsf-test/JAVASERVERFACES-2197/i_jsf_2197/src/main/webapp/validateLongRange.xhtml
@@ -0,0 +1,59 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+xmlns:h="http://java.sun.com/jsf/html"
+xmlns:f="http://java.sun.com/jsf/core"
+xmlns:mycomp="http://java.sun.com/jsf/composite/mycomp">
+<head><title>test page</title></head>
+<body>
+	<h:form id="form">
+		<mycomp:register id="register" nameLable="Name" >
+ 			<f:validateLongRange for="#{test.forValue}" minimum="2" maximum="5" />
+		</mycomp:register>
+		<br/>
+		<h:commandButton id="button"/>
+	</h:form>
+</body>
+</html>
diff --git a/jsf-test/JAVASERVERFACES-2197/i_jsf_2197/src/main/webapp/validateRegex.xhtml b/jsf-test/JAVASERVERFACES-2197/i_jsf_2197/src/main/webapp/validateRegex.xhtml
new file mode 100644
index 0000000..fa25602
--- /dev/null
+++ b/jsf-test/JAVASERVERFACES-2197/i_jsf_2197/src/main/webapp/validateRegex.xhtml
@@ -0,0 +1,61 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+xmlns:h="http://java.sun.com/jsf/html"
+xmlns:f="http://java.sun.com/jsf/core"
+xmlns:mycomp="http://java.sun.com/jsf/composite/mycomp">
+<head><title>test page</title></head>
+<body>
+	<h:form id="form">
+		<mycomp:register id="register" nameLable="Name">
+ 			<f:validateRegex for="#{test.forValue}" pattern="((?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%]).{6,20})" />
+		</mycomp:register>
+		<br/>
+		<h:commandButton id="button"/>
+	</h:form>
+        <br/>
+        <h:messages/>
+</body>
+</html>
diff --git a/jsf-test/JAVASERVERFACES-2197/i_jsf_2197/src/main/webapp/validateRequired.xhtml b/jsf-test/JAVASERVERFACES-2197/i_jsf_2197/src/main/webapp/validateRequired.xhtml
new file mode 100644
index 0000000..de14580
--- /dev/null
+++ b/jsf-test/JAVASERVERFACES-2197/i_jsf_2197/src/main/webapp/validateRequired.xhtml
@@ -0,0 +1,59 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+xmlns:h="http://java.sun.com/jsf/html"
+xmlns:f="http://java.sun.com/jsf/core"
+xmlns:mycomp="http://java.sun.com/jsf/composite/mycomp">
+<head><title>test page</title></head>
+<body>
+	<h:form id="form">
+		<mycomp:register id="register" nameLable="Name" >
+ 			<f:validateRequired for="#{test.forValue}" />
+		</mycomp:register>
+		<br/>
+		<h:commandButton id="button"/>
+	</h:form>
+</body>
+</html>
diff --git a/jsf-test/JAVASERVERFACES-2197/i_jsf_2197/src/main/webapp/validator.xhtml b/jsf-test/JAVASERVERFACES-2197/i_jsf_2197/src/main/webapp/validator.xhtml
new file mode 100644
index 0000000..09dd0e8
--- /dev/null
+++ b/jsf-test/JAVASERVERFACES-2197/i_jsf_2197/src/main/webapp/validator.xhtml
@@ -0,0 +1,61 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+xmlns:h="http://java.sun.com/jsf/html"
+xmlns:f="http://java.sun.com/jsf/core"
+xmlns:mycomp="http://java.sun.com/jsf/composite/mycomp">
+<head><title>test page</title></head>
+<body>
+	<h:form id="form">
+		<mycomp:register id="register"  nameLable="Name" >
+ 			<f:validator for="#{test.forValue}" validatorId="TestValidator" />
+		</mycomp:register>
+		<br/>
+		<h:commandButton id="button"/>
+	</h:form>
+        <br/>
+        <h:messages/>
+</body>
+</html>
diff --git a/jsf-test/JAVASERVERFACES-2197/i_jsf_2197/src/main/webapp/valueChangeListener.xhtml b/jsf-test/JAVASERVERFACES-2197/i_jsf_2197/src/main/webapp/valueChangeListener.xhtml
new file mode 100644
index 0000000..1311ac1
--- /dev/null
+++ b/jsf-test/JAVASERVERFACES-2197/i_jsf_2197/src/main/webapp/valueChangeListener.xhtml
@@ -0,0 +1,62 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+xmlns:h="http://java.sun.com/jsf/html"
+xmlns:f="http://java.sun.com/jsf/core"
+xmlns:mycomp="http://java.sun.com/jsf/composite/mycomp">
+<head><title>test page</title></head>
+<body>
+	<h:form id="form">
+           <mycomp:register id="register" nameLable="Name" >
+                   <f:valueChangeListener for="#{test.forValue}" type="i_jsf_2197.TestValueChangeListener" />
+           </mycomp:register>
+           <br/>
+           <h:commandButton id="button"/>
+	</h:form>
+        <br/>
+        <h:messages/>
+        
+</body>
+</html>
diff --git a/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-1038/build.xml b/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-1038/build.xml
new file mode 100644
index 0000000..3aa13c3
--- /dev/null
+++ b/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-1038/build.xml
@@ -0,0 +1,84 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<!-- ************ JSF build file ************************************** -->
+<project name="JAVASERVERFACES-i_spec_1038" default="test" basedir=".">
+
+    <property file="../../build.properties"/>
+    <path id="i_spec_1038.classpath">  
+        <path refid="html.classpath" />
+        <pathelement location="${basedir}/i_spec_1038_htmlunit/target/classes"/>
+    </path>
+
+    <import file="${jsf.build.home}/common/ant/common.xml"/>
+
+    <target name="build">
+        <jsf.mvn dir="${basedir}/i_spec_1038_war" goals="install" />
+    </target>    
+
+    <target name="clean">
+        <jsf.mvn dir="${basedir}/i_spec_1038_war" goals="clean" />
+    </target>    
+
+    <target name="install">
+        <deploy.artifact
+              artifact="${basedir}/i_spec_1038_war/target/i_spec_1038_war.war"
+              appName="i_spec_1038_war"/>
+    </target>    
+
+    <target name="remove">
+        <undeploy.artifact
+              artifact="${basedir}/i_spec_1038_war/target/i_spec_1038_war.war"
+              appName="i_spec_1038_war"/>
+    </target>    
+
+    <target name="test" depends="define.scenario.aware.port">
+
+        <jsf.tester request="/faces/i_spec_1038_war.xhtml"
+                     context-path="/i_spec_1038_war"
+                     classpath-refid="html.classpath"
+                     test-results-dir="${regression.test.results.dir}"
+                     regexp="(?s).*custom ResourceResolver /i_spec_1038_war.xhtml.*"/>
+
+    </target>    
+
+</project>
diff --git a/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-1038/i_spec_1038_war/pom.xml b/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-1038/i_spec_1038_war/pom.xml
new file mode 100644
index 0000000..2df2797
--- /dev/null
+++ b/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-1038/i_spec_1038_war/pom.xml
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <groupId>com.sun.faces</groupId>
+    <artifactId>i_spec_1038_war</artifactId>
+    <version>1.0</version>
+    <packaging>war</packaging>
+    <name>${project.artifactId}</name>
+    <description>A simple project with war packaging that depends on JSF 2.2-SNAPSHOT and 
+        javaee 6, in that order.</description>
+    <url>http://jsf-spec.java.net/</url>
+    <build>
+        <finalName>${project.artifactId}</finalName>
+        <plugins>
+            <plugin>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                    <source>1.6</source>
+                    <target>1.6</target>
+                </configuration>
+            </plugin>
+            <plugin>
+                <artifactId>maven-war-plugin</artifactId>
+                <version>2.1.1</version>
+                <configuration>
+                  <failOnMissingWebXml>false</failOnMissingWebXml>
+                </configuration>
+            </plugin>
+
+        </plugins>
+    </build>
+    <properties>
+      <spec.snapshot.version>2.2-SNAPSHOT</spec.snapshot.version>
+    </properties>
+    <dependencies>
+        <dependency>
+            <groupId>javax.faces</groupId>
+            <artifactId>javax.faces-api</artifactId>
+            <version>${spec.snapshot.version}</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>javax</groupId>
+            <artifactId>javaee-api</artifactId>
+            <version>6.0</version>
+            <scope>provided</scope>
+        </dependency>
+    </dependencies>
+
+    <repositories>
+        <repository>
+            <id>java.net-maven2-SNAPSHOT-repository</id>
+            <name>Java.net SNAPSHOT-Repository for Maven</name>
+            <url>https://maven.java.net/content/repositories/snapshots/</url>
+            <layout>default</layout>
+        </repository>
+        <repository>
+            <id>java.net-maven2-repository</id>
+            <name>Java.net Repository for Maven</name>
+            <url>https://maven.java.net/content/repositories/releases/</url>
+            <layout>default</layout>
+        </repository>
+    </repositories>
+</project>
diff --git a/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-1038/i_spec_1038_war/src/main/java/com/sun/faces/regression/i_spec_1038_war/AnnotationDeclaredResourceResolver.java b/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-1038/i_spec_1038_war/src/main/java/com/sun/faces/regression/i_spec_1038_war/AnnotationDeclaredResourceResolver.java
new file mode 100644
index 0000000..51915aa
--- /dev/null
+++ b/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-1038/i_spec_1038_war/src/main/java/com/sun/faces/regression/i_spec_1038_war/AnnotationDeclaredResourceResolver.java
@@ -0,0 +1,67 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+ * Copyright (c) 2011 Oracle and/or its affiliates. All rights reserved.
+
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.regression.i_spec_1038_war;
+
+import java.net.URL;
+import javax.faces.context.FacesContext;
+import javax.faces.view.facelets.FaceletsResourceResolver;
+import javax.faces.view.facelets.ResourceResolver;
+
+ at FaceletsResourceResolver
+public class AnnotationDeclaredResourceResolver extends ResourceResolver {
+
+    private ResourceResolver wrapped;
+
+    public AnnotationDeclaredResourceResolver(ResourceResolver wrapped) {
+        this.wrapped = wrapped;
+    }
+
+    @Override
+    public URL resolveUrl(String path) {
+        URL result = result = wrapped.resolveUrl(path);
+        if (1 < path.length()) {
+            FacesContext.getCurrentInstance().getExternalContext().getRequestMap().put("message", 
+                    " custom ResourceResolver " + path);
+        }
+        
+        return result;
+    }    
+    
+}
diff --git a/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-1038/i_spec_1038_war/src/main/webapp/WEB-INF/beans.xml b/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-1038/i_spec_1038_war/src/main/webapp/WEB-INF/beans.xml
new file mode 100644
index 0000000..e69de29
diff --git a/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-1038/i_spec_1038_war/src/main/webapp/WEB-INF/web.xml b/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-1038/i_spec_1038_war/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..092afaa
--- /dev/null
+++ b/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-1038/i_spec_1038_war/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,39 @@
+<?xml version='1.0' encoding='UTF-8'?>
+
+<web-app version="3.0"
+         xmlns="http://java.sun.com/xml/ns/javaee"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+
+    <display-name>mojarra-regression-test</display-name>
+    <description>A simple regression test to make it easier to get your bug fixed. The only reason we need a web.xml is to set the PROJECT_STAGE to Develoment.  If you have a web.xml, then you need to map the FacesServlet.</description>
+
+    <context-param>
+        <description>
+            Tell the runtime where we are in the project development
+            lifecycle.  Valid values are: 
+            Development, UnitTest, SystemTest, or Production.
+            The runtime will display helpful hints to correct common mistakes
+            when the value is Development.
+        </description>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>Development</param-value>
+    </context-param>
+
+    <!-- Faces Servlet -->
+  <servlet>
+    <servlet-name>Faces Servlet</servlet-name>
+    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+    <load-on-startup>1</load-on-startup>
+  </servlet>
+
+   <servlet-mapping>
+       <servlet-name>Faces Servlet</servlet-name>
+       <url-pattern>/faces/*</url-pattern>
+   </servlet-mapping>
+
+   <welcome-file-list>
+     <welcome-file>faces/main.xhtml</welcome-file>
+   </welcome-file-list>
+
+</web-app>
diff --git a/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-1038/i_spec_1038_war/src/main/webapp/i_spec_1038_war.xhtml b/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-1038/i_spec_1038_war/src/main/webapp/i_spec_1038_war.xhtml
new file mode 100644
index 0000000..f48baf5
--- /dev/null
+++ b/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-1038/i_spec_1038_war/src/main/webapp/i_spec_1038_war.xhtml
@@ -0,0 +1,14 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+<h:head>
+  <title>A Simple JavaServer Faces 2.0 View</title>
+</h:head>
+<h:body>
+  <h:form>
+      #{message}
+    <p><h:commandButton value="submit" /></p>
+  </h:form>
+</h:body>
+</html>
diff --git a/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-1082/build.xml b/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-1082/build.xml
new file mode 100644
index 0000000..692a49c
--- /dev/null
+++ b/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-1082/build.xml
@@ -0,0 +1,104 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<!-- ************ JSF build file ************************************** -->
+<project name="JAVASERVERFACES-i_spec_1082" default="test" basedir=".">
+
+    <property file="../../build.properties"/>
+    <path id="i_spec_1082.classpath">  
+        <path refid="html.classpath" />
+        <pathelement location="${basedir}/i_spec_1082_htmlunit/target/classes"/>
+    </path>
+
+    <import file="${jsf.build.home}/common/ant/common.xml"/>
+
+    <target name="build">
+        <jsf.mvn dir="${basedir}/i_spec_1082_war" goals="install" />
+        <jsf.mvn dir="${basedir}/i_spec_1082_xhtml_war" goals="install" />
+        <jsf.mvn dir="${basedir}/i_spec_1082_htmlunit" goals="install" />
+    </target>    
+
+    <target name="clean">
+        <jsf.mvn dir="${basedir}/i_spec_1082_war" goals="clean" />
+        <jsf.mvn dir="${basedir}/i_spec_1082_xhtml_war" goals="clean" />
+        <jsf.mvn dir="${basedir}/i_spec_1082_htmlunit" goals="clean" />
+    </target>    
+
+    <target name="install">
+        <deploy.artifact
+              artifact="${basedir}/i_spec_1082_war/target/i_spec_1082_war.war"
+              appName="i_spec_1082_war"/>
+        <deploy.artifact
+              artifact="${basedir}/i_spec_1082_xhtml_war/target/i_spec_1082_xhtml_war.war"
+              appName="i_spec_1082_xhtml_war"/>
+    </target>    
+
+    <target name="remove">
+        <undeploy.artifact
+              artifact="${basedir}/i_spec_1082_war/target/i_spec_1082_war.war"
+              appName="i_spec_1082_war"/>
+        <undeploy.artifact
+              artifact="${basedir}/i_spec_1082_xhtml_war/target/i_spec_1082_xhtml_war.war"
+              appName="i_spec_1082_xhtml_war"/>
+    </target>    
+
+    <target name="test" depends="define.scenario.aware.port">
+      <jsf.junit context-path="/i_spec_1082_war"
+                 classpath-refid="i_spec_1082.classpath"    
+                 test-results-dir="${regression.test.results.dir}">
+          <tests>
+            <fileset dir="${basedir}/i_spec_1082_htmlunit/target/classes"
+                     includes="com/sun/faces/test/i_spec_1082_htmlunit/Issue1082Html5DoctypeTestCase.class"/> 
+          </tests>
+      </jsf.junit>
+      <jsf.junit context-path="/i_spec_1082_xhtml_war"
+                 classpath-refid="i_spec_1082.classpath"    
+                 test-results-dir="${regression.test.results.dir}">
+          <tests>
+            <fileset dir="${basedir}/i_spec_1082_htmlunit/target/classes"
+                     includes="com/sun/faces/test/i_spec_1082_htmlunit/Issue1082HtmlDoctypeTestCase.class"/> 
+          </tests>
+      </jsf.junit>
+
+    </target>    
+
+</project>
diff --git a/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-1082/i_spec_1082_htmlunit/pom.xml b/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-1082/i_spec_1082_htmlunit/pom.xml
new file mode 100644
index 0000000..e3d55e3
--- /dev/null
+++ b/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-1082/i_spec_1082_htmlunit/pom.xml
@@ -0,0 +1,97 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+   <modelVersion>4.0.0</modelVersion>
+   <groupId>com.sun.faces</groupId>
+   <artifactId>i_spec_1082_htmlunit</artifactId>
+   <packaging>jar</packaging>
+   <name>i_spec_1082_htmlunit</name>
+   <version>1.0-SNAPSHOT</version>
+
+   <dependencies>
+
+      <dependency>
+	<artifactId>htmlunit</artifactId>
+	<groupId>net.sourceforge.htmlunit</groupId>
+	<version>2.4</version>
+         <scope>provided</scope>
+      </dependency>
+      <dependency>
+         <groupId>junit</groupId>
+         <artifactId>junit</artifactId>
+         <version>3.8.1</version>
+         <scope>provided</scope>
+      </dependency>
+      <dependency>
+	<groupId>com.sun.faces.extensions</groupId>
+	<artifactId>jsf-extensions-test-time</artifactId>
+	<version>2.0</version>
+	<scope>provided</scope>
+      </dependency>
+
+   </dependencies>
+
+   <build>
+      <plugins>
+         <plugin>
+            <groupId>org.apache.maven.plugins</groupId>
+            <artifactId>maven-compiler-plugin</artifactId>
+            <version>2.0.2</version>
+            <configuration>
+               <source>1.6</source>
+               <target>1.6</target>
+            </configuration>
+         </plugin>
+      </plugins>
+      <finalName>i_spec_1082_htmlunit</finalName>
+   </build>
+
+   <repositories>
+     <repository>
+       <id>java.net</id>
+       <name>java.net</name>
+       <url>http://download.java.net/maven/2</url>
+       <layout>default</layout>
+     </repository>
+   </repositories>
+
+</project>
diff --git a/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-1082/i_spec_1082_htmlunit/src/main/java/com/sun/faces/test/i_spec_1082_htmlunit/Issue1082Html5DoctypeTestCase.java b/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-1082/i_spec_1082_htmlunit/src/main/java/com/sun/faces/test/i_spec_1082_htmlunit/Issue1082Html5DoctypeTestCase.java
new file mode 100644
index 0000000..96dfcb8
--- /dev/null
+++ b/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-1082/i_spec_1082_htmlunit/src/main/java/com/sun/faces/test/i_spec_1082_htmlunit/Issue1082Html5DoctypeTestCase.java
@@ -0,0 +1,73 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.i_spec_1082_htmlunit;
+
+
+import java.net.HttpURLConnection;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+
+public class Issue1082Html5DoctypeTestCase extends Issue1082TestCaseBase {
+
+    public Issue1082Html5DoctypeTestCase(String name) {
+        super(name);
+    }
+
+    /**
+     * Return the tests included in this test suite.
+     */
+    public static Test suite() {
+        return (new TestSuite(Issue1082Html5DoctypeTestCase.class));
+    }
+
+    public void testBasicAppFunctionality() throws Exception {
+
+        int [] rc = new int[1];
+        
+        // Ensure the OPTIONS  request works as expected
+        String result = issueHttpRequest("GET", rc, "/faces/i_2353_using.xhtml");
+        assertTrue(result.matches("(?s).*<!DOCTYPE html>\\s*<html.*"));
+        assertEquals(HttpURLConnection.HTTP_OK, rc[0]);
+    }
+
+    
+}
diff --git a/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-1082/i_spec_1082_htmlunit/src/main/java/com/sun/faces/test/i_spec_1082_htmlunit/Issue1082HtmlDoctypeTestCase.java b/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-1082/i_spec_1082_htmlunit/src/main/java/com/sun/faces/test/i_spec_1082_htmlunit/Issue1082HtmlDoctypeTestCase.java
new file mode 100644
index 0000000..a43977e
--- /dev/null
+++ b/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-1082/i_spec_1082_htmlunit/src/main/java/com/sun/faces/test/i_spec_1082_htmlunit/Issue1082HtmlDoctypeTestCase.java
@@ -0,0 +1,73 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.i_spec_1082_htmlunit;
+
+
+import java.net.HttpURLConnection;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+
+public class Issue1082HtmlDoctypeTestCase extends Issue1082TestCaseBase {
+
+    public Issue1082HtmlDoctypeTestCase(String name) {
+        super(name);
+    }
+
+    /**
+     * Return the tests included in this test suite.
+     */
+    public static Test suite() {
+        return (new TestSuite(Issue1082HtmlDoctypeTestCase.class));
+    }
+
+    public void testBasicAppFunctionality() throws Exception {
+
+        int [] rc = new int[1];
+        
+        // Ensure the OPTIONS  request works as expected
+        String result = issueHttpRequest("GET", rc, "/faces/i_2353_xhtml_using.xhtml");
+        assertTrue(result.matches("(?s).*<!DOCTYPE html PUBLIC \\\"-//W3C//DTD XHTML Basic 1.0//EN\\\" \\\"http://www.w3.org/TR/xhtml-basic/xhtml-basic10.dtd\\\">\\s*<html.*"));
+        assertEquals(HttpURLConnection.HTTP_OK, rc[0]);
+    }
+
+    
+}
diff --git a/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-1082/i_spec_1082_htmlunit/src/main/java/com/sun/faces/test/i_spec_1082_htmlunit/Issue1082TestCaseBase.java b/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-1082/i_spec_1082_htmlunit/src/main/java/com/sun/faces/test/i_spec_1082_htmlunit/Issue1082TestCaseBase.java
new file mode 100644
index 0000000..720c72c
--- /dev/null
+++ b/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-1082/i_spec_1082_htmlunit/src/main/java/com/sun/faces/test/i_spec_1082_htmlunit/Issue1082TestCaseBase.java
@@ -0,0 +1,85 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.test.i_spec_1082_htmlunit;
+
+import com.sun.faces.htmlunit.HtmlUnitFacesTestCase;
+import java.io.BufferedReader;
+import java.io.BufferedWriter;
+import java.io.InputStreamReader;
+import java.io.OutputStreamWriter;
+import java.net.Socket;
+import java.net.URL;
+
+public abstract class Issue1082TestCaseBase extends HtmlUnitFacesTestCase {
+    
+    public Issue1082TestCaseBase(String name) {
+        super(name);
+    }
+
+    protected String issueHttpRequest(String methodName, int[] rc, String path) throws Exception {
+        URL url = getURL(path);
+        Socket s = new Socket(url.getHost(), url.getPort());
+        BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
+        String requestLine = methodName + " /" + contextPath + path + " HTTP/1.1\r\n";
+        writer.write(requestLine);
+        writer.write("Host: " + url.getHost() + ":" + url.getPort() + "\r\n");
+        writer.write("User-Agent: systest-client\r\n");
+        writer.write("Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\n");
+        writer.write("Connection: close\r\n");
+        writer.write("\r\n");
+        writer.flush();
+        BufferedReader reader = new BufferedReader(new InputStreamReader(s.getInputStream()));
+        String cur = null;
+        StringBuilder builder = new StringBuilder();
+        rc[0] = -1;
+        while (null != (cur = reader.readLine())) {
+            if (-1 == rc[0]) {
+                String[] tokens = cur.split("\\s");
+                rc[0] = Integer.valueOf(tokens[1]);
+            }
+            builder.append(cur).append("\n");
+        }
+        writer.close();
+        return builder.toString();
+    }
+    
+    
+}
diff --git a/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-1082/i_spec_1082_war/pom.xml b/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-1082/i_spec_1082_war/pom.xml
new file mode 100644
index 0000000..bce4c59
--- /dev/null
+++ b/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-1082/i_spec_1082_war/pom.xml
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <groupId>com.sun.faces</groupId>
+    <artifactId>i_spec_1082_war</artifactId>
+    <version>1.0-SNAPSHOT</version>
+    <packaging>war</packaging>
+    <name>${project.artifactId}</name>
+    <description>A simple project with war packaging that depends on JSF 2.1 and 
+        javaee 6, in that order.</description>
+    <url>http://jsf-spec.java.net/</url>
+    <build>
+        <finalName>${project.artifactId}</finalName>
+        <plugins>
+            <plugin>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                    <source>1.6</source>
+                    <target>1.6</target>
+                </configuration>
+            </plugin>
+            <plugin>
+                <artifactId>maven-war-plugin</artifactId>
+                <version>2.1.1</version>
+                <configuration>
+                  <failOnMissingWebXml>false</failOnMissingWebXml>
+                </configuration>
+            </plugin>
+
+        </plugins>
+    </build>
+    <dependencies>
+        <dependency>
+            <groupId>javax.faces</groupId>
+            <artifactId>javax.faces-api</artifactId>
+            <version>2.1</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>javax</groupId>
+            <artifactId>javaee-api</artifactId>
+            <version>6.0</version>
+            <scope>provided</scope>
+        </dependency>
+    </dependencies>
+</project>
diff --git a/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-1082/i_spec_1082_war/src/main/java/com/sun/faces/test/i_spec_1082_war/UserBean.java b/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-1082/i_spec_1082_war/src/main/java/com/sun/faces/test/i_spec_1082_war/UserBean.java
new file mode 100644
index 0000000..c1e7703
--- /dev/null
+++ b/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-1082/i_spec_1082_war/src/main/java/com/sun/faces/test/i_spec_1082_war/UserBean.java
@@ -0,0 +1,92 @@
+package com.sun.faces.test.i_spec_1082_war;
+
+import java.io.Serializable;
+import java.util.Date;
+import javax.enterprise.context.SessionScoped;
+import javax.faces.application.FacesMessage;
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.validator.ValidatorException;
+import javax.inject.Named;
+
+ at Named
+ at SessionScoped
+public class UserBean implements Serializable {
+    
+    protected String firstName = "Duke";
+    protected String lastName = "Java";
+    protected Date dob;
+    protected String sex = "Unknown";
+    protected String email;
+    protected String serviceLevel = "medium";
+    
+    public UserBean() {}
+
+    public String getFirstName() {
+        return firstName;
+    }
+
+    public void setFirstName(String firstName) {
+        this.firstName = firstName;
+    }
+
+    public String getLastName() {
+        return lastName;
+    }
+
+    public void setLastName(String lastName) {
+        this.lastName = lastName;
+    }
+
+    public Date getDob() {
+        return dob;
+    }
+
+    public void setDob(Date dob) {
+        this.dob = dob;
+    }
+
+    public String getSex() {
+        return sex;
+    }
+
+    public void setSex(String sex) {
+        this.sex = sex;
+    }
+
+    public String getEmail() {
+        return email;
+    }
+
+    public void setEmail(String email) {
+        this.email = email;
+    }
+
+    public String getServiceLevel() {
+        return serviceLevel;
+    }
+
+    public void setServiceLevel(String serviceLevel) {
+        this.serviceLevel = serviceLevel;
+    }
+    
+    public void validateEmail(FacesContext context, UIComponent toValidate,
+            Object value) throws ValidatorException {
+        String emailStr = (String) value;
+        if (-1 == emailStr.indexOf("@")) {
+            FacesMessage message = new FacesMessage("Invalid email address");
+            throw new ValidatorException(message);
+        }
+    }
+
+    public String addConfirmedUser() {
+        // This method would call a database or other service and add the 
+        // confirmed user information.
+        // For now, we just place an informative message in request scope
+        FacesMessage doneMessage = 
+                new FacesMessage("Successfully added new user");
+        FacesContext.getCurrentInstance().addMessage(null, doneMessage);
+        return "done";
+    }
+}
+
diff --git a/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-1082/i_spec_1082_war/src/main/webapp/WEB-INF/beans.xml b/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-1082/i_spec_1082_war/src/main/webapp/WEB-INF/beans.xml
new file mode 100644
index 0000000..e69de29
diff --git a/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-1082/i_spec_1082_war/src/main/webapp/WEB-INF/web.xml b/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-1082/i_spec_1082_war/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..b3971fe
--- /dev/null
+++ b/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-1082/i_spec_1082_war/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,39 @@
+<?xml version='1.0' encoding='UTF-8'?>
+
+<web-app version="3.0"
+         xmlns="http://java.sun.com/xml/ns/javaee"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+
+    <display-name>mojarra-regression-test</display-name>
+    <description>A simple regression test to make it easier to get your bug fixed. The only reason we need a web.xml is to set the PROJECT_STAGE to Develoment.  If you have a web.xml, then you need to map the FacesServlet.</description>
+
+    <context-param>
+        <description>
+            Tell the runtime where we are in the project development
+            lifecycle.  Valid values are: 
+            Development, UnitTest, SystemTest, or Production.
+            The runtime will display helpful hints to correct common mistakes
+            when the value is Development.
+        </description>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>Development</param-value>
+    </context-param>
+
+    <!-- Faces Servlet -->
+  <servlet>
+    <servlet-name>Faces Servlet</servlet-name>
+    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+    <load-on-startup>1</load-on-startup>
+  </servlet>
+
+   <servlet-mapping>
+       <servlet-name>Faces Servlet</servlet-name>
+       <url-pattern>/faces/*</url-pattern>
+   </servlet-mapping>
+
+   <welcome-file-list>
+     <welcome-file>faces/i_2353_using.xhtml</welcome-file>
+   </welcome-file-list>
+
+</web-app>
diff --git a/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-1082/i_spec_1082_war/src/main/webapp/i_2353_using.xhtml b/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-1082/i_spec_1082_war/src/main/webapp/i_2353_using.xhtml
new file mode 100644
index 0000000..55bdac3
--- /dev/null
+++ b/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-1082/i_spec_1082_war/src/main/webapp/i_2353_using.xhtml
@@ -0,0 +1,57 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML Basic 1.0//EN"
+      "http://www.w3.org/TR/xhtml-basic/xhtml-basic10.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:h="http://java.sun.com/jsf/html" 
+      xmlns:c="http://java.sun.com/jsp/jstl/core">
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<h:head>
+<title>Verify that the DOCTYPE is just <!DOCTYPE html></title>
+</h:head>
+
+<h:body>
+
+<p>This is a copyright symbol: ©</p>
+
+</h:body>
+
+</html> 
diff --git a/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-1082/i_spec_1082_xhtml_war/pom.xml b/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-1082/i_spec_1082_xhtml_war/pom.xml
new file mode 100644
index 0000000..6b438ec
--- /dev/null
+++ b/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-1082/i_spec_1082_xhtml_war/pom.xml
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <groupId>com.sun.faces</groupId>
+    <artifactId>i_spec_1082_xhtml_war</artifactId>
+    <version>1.0-SNAPSHOT</version>
+    <packaging>war</packaging>
+    <name>${project.artifactId}</name>
+    <description>A simple project with war packaging that depends on JSF 2.1 and 
+        javaee 6, in that order.</description>
+    <url>http://jsf-spec.java.net/</url>
+    <build>
+        <finalName>${project.artifactId}</finalName>
+        <plugins>
+            <plugin>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                    <source>1.6</source>
+                    <target>1.6</target>
+                </configuration>
+            </plugin>
+            <plugin>
+                <artifactId>maven-war-plugin</artifactId>
+                <version>2.1.1</version>
+                <configuration>
+                  <failOnMissingWebXml>false</failOnMissingWebXml>
+                </configuration>
+            </plugin>
+
+        </plugins>
+    </build>
+    <dependencies>
+        <dependency>
+            <groupId>javax.faces</groupId>
+            <artifactId>javax.faces-api</artifactId>
+            <version>2.1</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>javax</groupId>
+            <artifactId>javaee-api</artifactId>
+            <version>6.0</version>
+            <scope>provided</scope>
+        </dependency>
+    </dependencies>
+</project>
diff --git a/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-1082/i_spec_1082_xhtml_war/src/main/java/com/sun/faces/test/i_spec_1082_war/UserBean.java b/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-1082/i_spec_1082_xhtml_war/src/main/java/com/sun/faces/test/i_spec_1082_war/UserBean.java
new file mode 100644
index 0000000..c1e7703
--- /dev/null
+++ b/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-1082/i_spec_1082_xhtml_war/src/main/java/com/sun/faces/test/i_spec_1082_war/UserBean.java
@@ -0,0 +1,92 @@
+package com.sun.faces.test.i_spec_1082_war;
+
+import java.io.Serializable;
+import java.util.Date;
+import javax.enterprise.context.SessionScoped;
+import javax.faces.application.FacesMessage;
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.validator.ValidatorException;
+import javax.inject.Named;
+
+ at Named
+ at SessionScoped
+public class UserBean implements Serializable {
+    
+    protected String firstName = "Duke";
+    protected String lastName = "Java";
+    protected Date dob;
+    protected String sex = "Unknown";
+    protected String email;
+    protected String serviceLevel = "medium";
+    
+    public UserBean() {}
+
+    public String getFirstName() {
+        return firstName;
+    }
+
+    public void setFirstName(String firstName) {
+        this.firstName = firstName;
+    }
+
+    public String getLastName() {
+        return lastName;
+    }
+
+    public void setLastName(String lastName) {
+        this.lastName = lastName;
+    }
+
+    public Date getDob() {
+        return dob;
+    }
+
+    public void setDob(Date dob) {
+        this.dob = dob;
+    }
+
+    public String getSex() {
+        return sex;
+    }
+
+    public void setSex(String sex) {
+        this.sex = sex;
+    }
+
+    public String getEmail() {
+        return email;
+    }
+
+    public void setEmail(String email) {
+        this.email = email;
+    }
+
+    public String getServiceLevel() {
+        return serviceLevel;
+    }
+
+    public void setServiceLevel(String serviceLevel) {
+        this.serviceLevel = serviceLevel;
+    }
+    
+    public void validateEmail(FacesContext context, UIComponent toValidate,
+            Object value) throws ValidatorException {
+        String emailStr = (String) value;
+        if (-1 == emailStr.indexOf("@")) {
+            FacesMessage message = new FacesMessage("Invalid email address");
+            throw new ValidatorException(message);
+        }
+    }
+
+    public String addConfirmedUser() {
+        // This method would call a database or other service and add the 
+        // confirmed user information.
+        // For now, we just place an informative message in request scope
+        FacesMessage doneMessage = 
+                new FacesMessage("Successfully added new user");
+        FacesContext.getCurrentInstance().addMessage(null, doneMessage);
+        return "done";
+    }
+}
+
diff --git a/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-1082/i_spec_1082_xhtml_war/src/main/webapp/WEB-INF/beans.xml b/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-1082/i_spec_1082_xhtml_war/src/main/webapp/WEB-INF/beans.xml
new file mode 100644
index 0000000..e69de29
diff --git a/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-1082/i_spec_1082_xhtml_war/src/main/webapp/WEB-INF/faces-config.xml b/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-1082/i_spec_1082_xhtml_war/src/main/webapp/WEB-INF/faces-config.xml
new file mode 100644
index 0000000..2511ab3
--- /dev/null
+++ b/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-1082/i_spec_1082_xhtml_war/src/main/webapp/WEB-INF/faces-config.xml
@@ -0,0 +1,56 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<faces-config xmlns="http://xmlns.jcp.org/xml/ns/javaee"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd"
+    version="2.2">
+
+  <faces-config-extension>
+    <facelets-processing>
+      <file-extension>.xhtml</file-extension>
+      <process-as>xhtml</process-as>
+    </facelets-processing>
+  </faces-config-extension>
+
+</faces-config>
diff --git a/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-1082/i_spec_1082_xhtml_war/src/main/webapp/WEB-INF/web.xml b/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-1082/i_spec_1082_xhtml_war/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..e5e1158
--- /dev/null
+++ b/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-1082/i_spec_1082_xhtml_war/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,39 @@
+<?xml version='1.0' encoding='UTF-8'?>
+
+<web-app version="3.0"
+         xmlns="http://java.sun.com/xml/ns/javaee"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+
+    <display-name>mojarra-regression-test</display-name>
+    <description>A simple regression test to make it easier to get your bug fixed. The only reason we need a web.xml is to set the PROJECT_STAGE to Develoment.  If you have a web.xml, then you need to map the FacesServlet.</description>
+
+    <context-param>
+        <description>
+            Tell the runtime where we are in the project development
+            lifecycle.  Valid values are: 
+            Development, UnitTest, SystemTest, or Production.
+            The runtime will display helpful hints to correct common mistakes
+            when the value is Development.
+        </description>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>Development</param-value>
+    </context-param>
+
+    <!-- Faces Servlet -->
+  <servlet>
+    <servlet-name>Faces Servlet</servlet-name>
+    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+    <load-on-startup>1</load-on-startup>
+  </servlet>
+
+   <servlet-mapping>
+       <servlet-name>Faces Servlet</servlet-name>
+       <url-pattern>/faces/*</url-pattern>
+   </servlet-mapping>
+
+   <welcome-file-list>
+     <welcome-file>faces/i_2353_xhtml_using.xhtml</welcome-file>
+   </welcome-file-list>
+
+</web-app>
diff --git a/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-1082/i_spec_1082_xhtml_war/src/main/webapp/i_2353_xhtml_using.xhtml b/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-1082/i_spec_1082_xhtml_war/src/main/webapp/i_2353_xhtml_using.xhtml
new file mode 100644
index 0000000..ff03b95
--- /dev/null
+++ b/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-1082/i_spec_1082_xhtml_war/src/main/webapp/i_2353_xhtml_using.xhtml
@@ -0,0 +1,57 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML Basic 1.0//EN"
+      "http://www.w3.org/TR/xhtml-basic/xhtml-basic10.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:h="http://java.sun.com/jsf/html" 
+      xmlns:c="http://java.sun.com/jsp/jstl/core">
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<h:head>
+<title>Verify that the DOCTYPE is <!DOCTYPE html PUBLIC etc.></title>
+</h:head>
+
+<h:body>
+
+<p>This is a copyright symbol: ©</p>
+
+</h:body>
+
+</html> 
diff --git a/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-594/build.xml b/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-594/build.xml
new file mode 100644
index 0000000..f661e27
--- /dev/null
+++ b/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-594/build.xml
@@ -0,0 +1,90 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<!-- ************ JSF build file ************************************** -->
+<project name="JAVASERVERFACES-i_spec_594" default="test" basedir=".">
+
+    <property file="../../build.properties"/>
+    <path id="i_spec_594.classpath">  
+        <path refid="html.classpath" />
+        <pathelement location="${basedir}/i_spec_594_htmlunit/target/classes"/>
+    </path>
+
+    <import file="${jsf.build.home}/common/ant/common.xml"/>
+
+    <target name="build">
+        <jsf.mvn dir="${basedir}/i_spec_594_war" goals="install" />
+        <jsf.mvn dir="${basedir}/i_spec_594_htmlunit" goals="install" />
+    </target>    
+
+    <target name="clean">
+        <jsf.mvn dir="${basedir}/i_spec_594_htmlunit" goals="clean" />
+        <jsf.mvn dir="${basedir}/i_spec_594_war" goals="clean" />
+    </target>    
+
+    <target name="install">
+        <deploy.artifact
+              artifact="${basedir}/i_spec_594_war/target/i_spec_594_war.war"
+              appName="i_spec_594_war"/>
+    </target>    
+
+    <target name="remove">
+        <undeploy.artifact
+              artifact="${basedir}/i_spec_594_war/target/i_spec_594_war.war"
+              appName="i_spec_594_war"/>
+    </target>    
+
+    <target name="test" depends="define.scenario.aware.port">
+
+        <jsf.junit context-path="/i_spec_594_war"
+                 classpath-refid="i_spec_594.classpath"    
+                 test-results-dir="${regression.test.results.dir}">
+            <tests>
+                <fileset dir="${basedir}/i_spec_594_htmlunit/target/classes"
+                     includes="com/sun/faces/test/i_spec_594_htmlunit/IssueSpec594TestCase.class"/> 
+            </tests>
+        </jsf.junit>
+
+
+    </target>    
+
+</project>
diff --git a/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-594/i_spec_594_htmlunit/pom.xml b/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-594/i_spec_594_htmlunit/pom.xml
new file mode 100644
index 0000000..4e4a059
--- /dev/null
+++ b/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-594/i_spec_594_htmlunit/pom.xml
@@ -0,0 +1,97 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+   <modelVersion>4.0.0</modelVersion>
+   <groupId>com.sun.faces</groupId>
+   <artifactId>i_spec_594_htmlunit</artifactId>
+   <packaging>jar</packaging>
+   <name>i_spec_594_htmlunit</name>
+   <version>1.0-SNAPSHOT</version>
+
+   <dependencies>
+
+      <dependency>
+	<artifactId>htmlunit</artifactId>
+	<groupId>net.sourceforge.htmlunit</groupId>
+	<version>2.4</version>
+         <scope>provided</scope>
+      </dependency>
+      <dependency>
+         <groupId>junit</groupId>
+         <artifactId>junit</artifactId>
+         <version>3.8.1</version>
+         <scope>provided</scope>
+      </dependency>
+      <dependency>
+	<groupId>com.sun.faces.extensions</groupId>
+	<artifactId>jsf-extensions-test-time</artifactId>
+	<version>2.0</version>
+	<scope>provided</scope>
+      </dependency>
+
+   </dependencies>
+
+   <build>
+      <plugins>
+         <plugin>
+            <groupId>org.apache.maven.plugins</groupId>
+            <artifactId>maven-compiler-plugin</artifactId>
+            <version>2.0.2</version>
+            <configuration>
+               <source>1.6</source>
+               <target>1.6</target>
+            </configuration>
+         </plugin>
+      </plugins>
+      <finalName>i_jsf_xxxx_htmlunit</finalName>
+   </build>
+
+   <repositories>
+     <repository>
+       <id>java.net</id>
+       <name>java.net</name>
+       <url>http://download.java.net/maven/2</url>
+       <layout>default</layout>
+     </repository>
+   </repositories>
+
+</project>
diff --git a/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-594/i_spec_594_htmlunit/src/main/java/com/sun/faces/test/i_spec_594_htmlunit/IssueSpec594TestCase.java b/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-594/i_spec_594_htmlunit/src/main/java/com/sun/faces/test/i_spec_594_htmlunit/IssueSpec594TestCase.java
new file mode 100644
index 0000000..b312ab9
--- /dev/null
+++ b/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-594/i_spec_594_htmlunit/src/main/java/com/sun/faces/test/i_spec_594_htmlunit/IssueSpec594TestCase.java
@@ -0,0 +1,77 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.i_spec_594_htmlunit;
+
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+
+import com.sun.faces.htmlunit.HtmlUnitFacesTestCase;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+
+public class IssueSpec594TestCase extends HtmlUnitFacesTestCase {
+
+    public IssueSpec594TestCase(String name) {
+        super(name);
+    }
+
+
+    /**
+     * Return the tests included in this test suite.
+     */
+    public static Test suite() {
+        return (new TestSuite(IssueSpec594TestCase.class));
+    }
+
+
+    // ------------------------------------------------------------ Test Methods
+
+    public void testBasicAppFunctionality() throws Exception {
+
+        HtmlPage page = getPage("/");
+        String pageXml = page.asXml();
+        assertTrue(pageXml.matches("(?s).*<input\\s+id=\"tagNameExplicitlyDeclared\"\\s+type=\"text\"\\s+name=\"tagNameExplicitlyDeclared\"/>.*<input\\s+id=\"myTag\"\\s+type=\"text\"\\s+name=\"myTag\"/>.*"));
+
+        assertTrue(pageXml.contains("javax.faces.ViewState"));
+    }
+
+
+}
diff --git a/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-594/i_spec_594_war/pom.xml b/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-594/i_spec_594_war/pom.xml
new file mode 100644
index 0000000..b134289
--- /dev/null
+++ b/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-594/i_spec_594_war/pom.xml
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <groupId>com.sun.faces</groupId>
+    <artifactId>i_spec_594_war</artifactId>
+    <version>1.0-SNAPSHOT</version>
+    <packaging>war</packaging>
+    <name>${project.artifactId}</name>
+    <description>A simple project with war packaging that depends on JSF 2.1 and 
+        javaee 6, in that order.</description>
+    <url>http://jsf-spec.java.net/</url>
+    <build>
+        <finalName>${project.artifactId}</finalName>
+        <plugins>
+            <plugin>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                    <source>1.6</source>
+                    <target>1.6</target>
+                </configuration>
+            </plugin>
+            <plugin>
+                <artifactId>maven-war-plugin</artifactId>
+                <version>2.1.1</version>
+                <configuration>
+                  <failOnMissingWebXml>false</failOnMissingWebXml>
+                </configuration>
+            </plugin>
+
+        </plugins>
+    </build>
+    <dependencies>
+        <dependency>
+            <groupId>javax.faces</groupId>
+            <artifactId>javax.faces-api</artifactId>
+            <version>2.2-SNAPSHOT</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>javax</groupId>
+            <artifactId>javaee-api</artifactId>
+            <version>6.0</version>
+            <scope>provided</scope>
+        </dependency>
+    </dependencies>
+</project>
diff --git a/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-594/i_spec_594_war/src/main/java/com/sun/faces/test/i_spec_594_war/UserBean.java b/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-594/i_spec_594_war/src/main/java/com/sun/faces/test/i_spec_594_war/UserBean.java
new file mode 100644
index 0000000..f874cea
--- /dev/null
+++ b/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-594/i_spec_594_war/src/main/java/com/sun/faces/test/i_spec_594_war/UserBean.java
@@ -0,0 +1,92 @@
+package com.sun.faces.test.i_spec_594_war;
+
+import java.io.Serializable;
+import java.util.Date;
+import javax.enterprise.context.SessionScoped;
+import javax.faces.application.FacesMessage;
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.validator.ValidatorException;
+import javax.inject.Named;
+
+ at Named
+ at SessionScoped
+public class UserBean implements Serializable {
+    
+    protected String firstName = "Duke";
+    protected String lastName = "Java";
+    protected Date dob;
+    protected String sex = "Unknown";
+    protected String email;
+    protected String serviceLevel = "medium";
+    
+    public UserBean() {}
+
+    public String getFirstName() {
+        return firstName;
+    }
+
+    public void setFirstName(String firstName) {
+        this.firstName = firstName;
+    }
+
+    public String getLastName() {
+        return lastName;
+    }
+
+    public void setLastName(String lastName) {
+        this.lastName = lastName;
+    }
+
+    public Date getDob() {
+        return dob;
+    }
+
+    public void setDob(Date dob) {
+        this.dob = dob;
+    }
+
+    public String getSex() {
+        return sex;
+    }
+
+    public void setSex(String sex) {
+        this.sex = sex;
+    }
+
+    public String getEmail() {
+        return email;
+    }
+
+    public void setEmail(String email) {
+        this.email = email;
+    }
+
+    public String getServiceLevel() {
+        return serviceLevel;
+    }
+
+    public void setServiceLevel(String serviceLevel) {
+        this.serviceLevel = serviceLevel;
+    }
+    
+    public void validateEmail(FacesContext context, UIComponent toValidate,
+            Object value) throws ValidatorException {
+        String emailStr = (String) value;
+        if (-1 == emailStr.indexOf("@")) {
+            FacesMessage message = new FacesMessage("Invalid email address");
+            throw new ValidatorException(message);
+        }
+    }
+
+    public String addConfirmedUser() {
+        // This method would call a database or other service and add the 
+        // confirmed user information.
+        // For now, we just place an informative message in request scope
+        FacesMessage doneMessage = 
+                new FacesMessage("Successfully added new user");
+        FacesContext.getCurrentInstance().addMessage(null, doneMessage);
+        return "done";
+    }
+}
+
diff --git a/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-594/i_spec_594_war/src/main/java/com/sun/faces/test/i_spec_594_war/components/TagNameDerivedFromClassName.java b/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-594/i_spec_594_war/src/main/java/com/sun/faces/test/i_spec_594_war/components/TagNameDerivedFromClassName.java
new file mode 100644
index 0000000..9fac63c
--- /dev/null
+++ b/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-594/i_spec_594_war/src/main/java/com/sun/faces/test/i_spec_594_war/components/TagNameDerivedFromClassName.java
@@ -0,0 +1,49 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.test.i_spec_594_war.components;
+
+import javax.faces.component.FacesComponent;
+import javax.faces.component.html.HtmlInputText;
+
+ at FacesComponent(createTag=true)
+public class TagNameDerivedFromClassName extends HtmlInputText {
+    
+}
diff --git a/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-594/i_spec_594_war/src/main/java/com/sun/faces/test/i_spec_594_war/components/TagNameExplicitlyDeclared.java b/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-594/i_spec_594_war/src/main/java/com/sun/faces/test/i_spec_594_war/components/TagNameExplicitlyDeclared.java
new file mode 100644
index 0000000..edc6e00
--- /dev/null
+++ b/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-594/i_spec_594_war/src/main/java/com/sun/faces/test/i_spec_594_war/components/TagNameExplicitlyDeclared.java
@@ -0,0 +1,49 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.test.i_spec_594_war.components;
+
+import javax.faces.component.FacesComponent;
+import javax.faces.component.html.HtmlInputText;
+
+ at FacesComponent(value="TagNameExplicitlyDeclared", createTag=true, tagName="myTag")
+public class TagNameExplicitlyDeclared extends HtmlInputText {
+    
+}
diff --git a/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-594/i_spec_594_war/src/main/webapp/WEB-INF/beans.xml b/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-594/i_spec_594_war/src/main/webapp/WEB-INF/beans.xml
new file mode 100644
index 0000000..e69de29
diff --git a/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-594/i_spec_594_war/src/main/webapp/WEB-INF/web.xml b/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-594/i_spec_594_war/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..092afaa
--- /dev/null
+++ b/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-594/i_spec_594_war/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,39 @@
+<?xml version='1.0' encoding='UTF-8'?>
+
+<web-app version="3.0"
+         xmlns="http://java.sun.com/xml/ns/javaee"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+
+    <display-name>mojarra-regression-test</display-name>
+    <description>A simple regression test to make it easier to get your bug fixed. The only reason we need a web.xml is to set the PROJECT_STAGE to Develoment.  If you have a web.xml, then you need to map the FacesServlet.</description>
+
+    <context-param>
+        <description>
+            Tell the runtime where we are in the project development
+            lifecycle.  Valid values are: 
+            Development, UnitTest, SystemTest, or Production.
+            The runtime will display helpful hints to correct common mistakes
+            when the value is Development.
+        </description>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>Development</param-value>
+    </context-param>
+
+    <!-- Faces Servlet -->
+  <servlet>
+    <servlet-name>Faces Servlet</servlet-name>
+    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+    <load-on-startup>1</load-on-startup>
+  </servlet>
+
+   <servlet-mapping>
+       <servlet-name>Faces Servlet</servlet-name>
+       <url-pattern>/faces/*</url-pattern>
+   </servlet-mapping>
+
+   <welcome-file-list>
+     <welcome-file>faces/main.xhtml</welcome-file>
+   </welcome-file-list>
+
+</web-app>
diff --git a/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-594/i_spec_594_war/src/main/webapp/main.xhtml b/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-594/i_spec_594_war/src/main/webapp/main.xhtml
new file mode 100644
index 0000000..9993430
--- /dev/null
+++ b/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-594/i_spec_594_war/src/main/webapp/main.xhtml
@@ -0,0 +1,17 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://xmlns.jcp.org/jsf/html"
+      xmlns:f="http://xmlns.jcp.org/jsf/core"
+      xmlns:foo="http://xmlns.jcp.org/jsf/component">
+<h:head>
+  <title>A Simple JavaServer Faces 2.0 View</title>
+</h:head>
+<h:body>
+  <h:form prependId="false">
+      First name: #{userBean.firstName} Last name: #{userBean.lastName}
+      <p><foo:tagNameDerivedFromClassName id="tagNameExplicitlyDeclared" /></p>
+      <p><foo:myTag id="myTag" /></p>
+    <p><h:commandButton value="submit" /></p>
+  </h:form>
+</h:body>
+</html>
diff --git a/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-719/build.xml b/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-719/build.xml
new file mode 100644
index 0000000..d048635
--- /dev/null
+++ b/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-719/build.xml
@@ -0,0 +1,84 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<!-- ************ JSF build file ************************************** -->
+<project name="JAVASERVERFACES-i_spec_719" default="test" basedir=".">
+
+    <property file="../../build.properties"/>
+    <path id="i_spec_719.classpath">  
+        <path refid="html.classpath" />
+        <pathelement location="${basedir}/i_spec_719_htmlunit/target/classes"/>
+    </path>
+
+    <import file="${jsf.build.home}/common/ant/common.xml"/>
+
+    <target name="build">
+        <jsf.mvn dir="${basedir}/i_spec_719_old_resource_resolver_war" goals="install" />
+    </target>    
+
+    <target name="clean">
+        <jsf.mvn dir="${basedir}/i_spec_719_old_resource_resolver_war" goals="clean" />
+    </target>    
+
+    <target name="install">
+        <deploy.artifact
+              artifact="${basedir}/i_spec_719_old_resource_resolver_war/target/i_spec_719_old_resource_resolver_war.war"
+              appName="i_spec_719_old_resource_resolver_war"/>
+    </target>    
+
+    <target name="remove">
+        <undeploy.artifact
+              artifact="${basedir}/i_spec_719_old_resource_resolver_war/target/i_spec_719_old_resource_resolver_war.war"
+              appName="i_spec_719_old_resource_resolver_war"/>
+    </target>    
+
+    <target name="test" depends="define.scenario.aware.port">
+
+        <jsf.tester request="/faces/i_spec_719_old_resource_resolver.xhtml"
+                     context-path="/i_spec_719_old_resource_resolver_war"
+                     classpath-refid="html.classpath"
+                     test-results-dir="${regression.test.results.dir}"
+                     regexp="(?s).*com.sun.faces.test.i_spec_719_old_resource_resolver_war.MyResourceResolver.*"/>
+
+    </target>    
+
+</project>
diff --git a/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-719/i_spec_719_old_resource_resolver_war/pom.xml b/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-719/i_spec_719_old_resource_resolver_war/pom.xml
new file mode 100644
index 0000000..d328038
--- /dev/null
+++ b/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-719/i_spec_719_old_resource_resolver_war/pom.xml
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <groupId>com.sun.faces</groupId>
+    <artifactId>i_spec_719_old_resource_resolver_war</artifactId>
+    <version>1.0-SNAPSHOT</version>
+    <packaging>war</packaging>
+    <name>${project.artifactId}</name>
+    <description>A simple project with war packaging that depends on JSF 2.1 and 
+        javaee 6, in that order.</description>
+    <url>http://jsf-spec.java.net/</url>
+    <build>
+        <finalName>${project.artifactId}</finalName>
+        <plugins>
+            <plugin>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                    <source>1.6</source>
+                    <target>1.6</target>
+                </configuration>
+            </plugin>
+            <plugin>
+                <artifactId>maven-war-plugin</artifactId>
+                <version>2.1.1</version>
+                <configuration>
+                  <failOnMissingWebXml>false</failOnMissingWebXml>
+                </configuration>
+            </plugin>
+
+        </plugins>
+    </build>
+    <dependencies>
+        <dependency>
+            <groupId>javax.faces</groupId>
+            <artifactId>javax.faces-api</artifactId>
+            <version>2.2-SNAPSHOT</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>javax</groupId>
+            <artifactId>javaee-api</artifactId>
+            <version>6.0</version>
+            <scope>provided</scope>
+        </dependency>
+    </dependencies>
+</project>
diff --git a/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-719/i_spec_719_old_resource_resolver_war/src/main/java/com/sun/faces/test/i_spec_719_old_resource_resolver_war/MyResourceResolver.java b/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-719/i_spec_719_old_resource_resolver_war/src/main/java/com/sun/faces/test/i_spec_719_old_resource_resolver_war/MyResourceResolver.java
new file mode 100644
index 0000000..010283b
--- /dev/null
+++ b/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-719/i_spec_719_old_resource_resolver_war/src/main/java/com/sun/faces/test/i_spec_719_old_resource_resolver_war/MyResourceResolver.java
@@ -0,0 +1,76 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.test.i_spec_719_old_resource_resolver_war;
+
+import java.io.IOException;
+import java.net.URL;
+import java.util.Map;
+import javax.faces.FacesException;
+import javax.faces.context.FacesContext;
+import javax.faces.view.facelets.FaceletsResourceResolver;
+import javax.faces.view.facelets.ResourceResolver;
+
+ at FaceletsResourceResolver
+public class MyResourceResolver extends ResourceResolver {
+
+
+    public MyResourceResolver() {
+    }
+
+    @Override
+    public URL resolveUrl(String path) {
+        if (!"/".equals(path)) {
+            Map<String, Object> appMap = 
+                    FacesContext.getCurrentInstance().getExternalContext().getApplicationMap();
+            appMap.put("message", this.getClass().getName());
+        }
+        try {
+            return Resource.getResourceUrl(FacesContext.getCurrentInstance(),
+                    path);
+        } catch (IOException e) {
+            throw new FacesException(e);
+        }
+    }
+    
+    
+    
+    
+}
diff --git a/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-719/i_spec_719_old_resource_resolver_war/src/main/java/com/sun/faces/test/i_spec_719_old_resource_resolver_war/Resource.java b/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-719/i_spec_719_old_resource_resolver_war/src/main/java/com/sun/faces/test/i_spec_719_old_resource_resolver_war/Resource.java
new file mode 100644
index 0000000..51a2a85
--- /dev/null
+++ b/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-719/i_spec_719_old_resource_resolver_war/src/main/java/com/sun/faces/test/i_spec_719_old_resource_resolver_war/Resource.java
@@ -0,0 +1,183 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ *
+ *
+ * This file incorporates work covered by the following copyright and
+ * permission notice:
+ *
+ * Copyright 2005-2007 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.sun.faces.test.i_spec_719_old_resource_resolver_war;
+
+import javax.faces.context.ExternalContext;
+import javax.faces.context.FacesContext;
+import javax.servlet.ServletContext;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.net.URLConnection;
+import java.net.URLStreamHandler;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+/**
+ * @author Roland Huss
+ * 
+ */
+public final class Resource {
+
+    /**
+     * Get an URL of an internal resource. First,
+     * {@link javax.faces.context.ExternalContext#getResource(String)} is
+     * checked for an non-null URL return value. In the case of a null return
+     * value (as it is the case for Weblogic 8.1 for a packed war), a URL with a
+     * special URL handler is constructed, which can be used for
+     * <em>opening</em> a serlvet resource later. Internally, this special URL
+     * handler will call {@link ServletContext#getResourceAsStream(String)} when
+     * an inputstream is requested. This works even on Weblogic 8.1
+     * 
+     * @param ctx
+     *            the faces context from which to retrieve the resource
+     * @param path
+     *            an URL path
+     * 
+     * @return an url representing the URL and on which getInputStream() can be
+     *         called to get the resource
+     * @throws MalformedURLException
+     */
+    public static URL getResourceUrl(FacesContext ctx, String path)
+            throws MalformedURLException {
+        final ExternalContext externalContext = ctx.getExternalContext();
+        URL url = externalContext.getResource(path);
+        if (url == null) {
+            // This might happen on Servlet container which doesnot return
+            // anything
+            // for getResource() (like weblogic 8.1 for packaged wars) we
+            // are trying
+            // to use an own URL protocol in order to use
+            // ServletContext.getResourceAsStream()
+            // when opening the url
+            if (resourceExist(externalContext, path)) {
+                url = getUrlForResourceAsStream(externalContext, path);
+            }
+        }
+        return url;
+    }
+
+    // This method could be used above to provide a 'fail fast' if a
+    // resource
+    // doesnt exist. Otherwise, the URL will fail on the first access.
+    private static boolean resourceExist(ExternalContext externalContext,
+            String path) {
+        if ("/".equals(path)) {
+            // The root context exists always
+            return true;
+        }
+        Object ctx = externalContext.getContext();
+        if (ctx instanceof ServletContext) {
+            ServletContext servletContext = (ServletContext) ctx;
+            InputStream stream = servletContext.getResourceAsStream(path);
+            if (stream != null) {
+                try {
+                    stream.close();
+                } catch (IOException e) {
+                    // Ignore here, since we donnot wanted to read from this
+                    // resource anyway
+                }
+                return true;
+            }
+        }
+        return false;
+    }
+
+    // Construct URL with special URLStreamHandler for proxying
+    // ServletContext.getResourceAsStream()
+    private static URL getUrlForResourceAsStream(
+            final ExternalContext externalContext, String path)
+            throws MalformedURLException {
+        URLStreamHandler handler = new URLStreamHandler() {
+            protected URLConnection openConnection(URL u) throws IOException {
+                final String file = u.getFile();
+                return new URLConnection(u) {
+                    public void connect() throws IOException {
+                    }
+
+                    public InputStream getInputStream() throws IOException {
+                        Object ctx = externalContext.getContext();
+                        // Or maybe fetch the external context afresh ?
+                        // Object ctx =
+                        // FacesContext.getCurrentInstance().getExternalContext().getContext();
+
+                        if (ctx instanceof ServletContext) {
+                            ServletContext servletContext = (ServletContext) ctx;
+                            InputStream stream = servletContext
+                                    .getResourceAsStream(file);
+                            if (stream == null) {
+                                throw new FileNotFoundException(
+                                        "Cannot open resource " + file);
+                            }
+                            return stream;
+                        } else {
+                            throw new IOException(
+                                    "Cannot open resource for an context of "
+                                            + (ctx != null ? ctx.getClass()
+                                                    : null));
+                        }
+                    }
+                };
+            }
+        };
+        return new URL("internal", null, 0, path, handler);
+    }
+}
diff --git a/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-719/i_spec_719_old_resource_resolver_war/src/main/webapp/WEB-INF/beans.xml b/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-719/i_spec_719_old_resource_resolver_war/src/main/webapp/WEB-INF/beans.xml
new file mode 100644
index 0000000..e69de29
diff --git a/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-719/i_spec_719_old_resource_resolver_war/src/main/webapp/WEB-INF/web.xml b/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-719/i_spec_719_old_resource_resolver_war/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..c068a09
--- /dev/null
+++ b/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-719/i_spec_719_old_resource_resolver_war/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+    <display-name>mojarra-regression-test</display-name>
+    <description>A simple regression test to make it easier to get your bug fixed. The only reason we need a web.xml is to set the PROJECT_STAGE to Develoment.  If you have a web.xml, then you need to map the FacesServlet.</description>
+    <context-param>
+        <description>
+            Tell the runtime where we are in the project development
+            lifecycle.  Valid values are: 
+            Development, UnitTest, SystemTest, or Production.
+            The runtime will display helpful hints to correct common mistakes
+            when the value is Development.
+        </description>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>Development</param-value>
+    </context-param>
+    <!-- Faces Servlet -->
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <welcome-file-list>
+        <welcome-file>faces/i_spec_719_old_resource_resolver.xhtml</welcome-file>
+    </welcome-file-list>
+</web-app>
diff --git a/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-719/i_spec_719_old_resource_resolver_war/src/main/webapp/i_spec_719_old_resource_resolver.xhtml b/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-719/i_spec_719_old_resource_resolver_war/src/main/webapp/i_spec_719_old_resource_resolver.xhtml
new file mode 100644
index 0000000..7684320
--- /dev/null
+++ b/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-719/i_spec_719_old_resource_resolver_war/src/main/webapp/i_spec_719_old_resource_resolver.xhtml
@@ -0,0 +1,14 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+<h:head>
+  <title>Verify that ResourceResolver decoration still works.</title>
+</h:head>
+<h:body>
+  <h:form>
+      <p>|message: #{message} |</p>
+    <p><h:commandButton value="submit" /></p>
+  </h:form>
+</h:body>
+</html>
diff --git a/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-763/build.xml b/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-763/build.xml
new file mode 100644
index 0000000..60976c7
--- /dev/null
+++ b/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-763/build.xml
@@ -0,0 +1,163 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<!-- ************ JSF build file ************************************** -->
+<project name="JAVASERVERFACES_SPEC_PUBLIC-763" default="test" basedir=".">
+
+    <property file="../../build.properties"/>
+
+    <import file="${jsf.build.home}/common/ant/common.xml"/>
+
+    <target name="build">
+        <jsf.mvn dir="${basedir}/i_spec_763_war" goals="install" />
+    </target>    
+
+    <target name="clean">
+        <jsf.mvn dir="${basedir}/i_spec_763_war" goals="clean" />
+    </target>    
+
+    <target name="install">
+        <deploy.artifact
+              artifact="${basedir}/i_spec_763_war/target/i_spec_763_war.war"
+              appName="i_spec_763_war"/>
+    </target>    
+
+    <target name="remove">
+        <undeploy.artifact
+              artifact="${basedir}/i_spec_763_war/target/i_spec_763_war.war"
+              appName="i_spec_763_war"/>
+    </target>    
+
+    <target name="test" depends="define.scenario.aware.port">
+
+        <jsf.tester request="/faces/i_spec_763_war.xhtml"
+                     context-path="/i_spec_763_war"
+                     classpath-refid="html.classpath"
+                     test-results-dir="${regression.test.results.dir}"
+                     regexp="(?s).*.p.\s+FacesConfigApplicationFactory:\s+Injected\s+from\s+value\s+specified\s+in\s+web.xml\s+ at PostConstruct\s+called\s+./p.\s+.p.\s+FacesConfigActionListener:\s+Injected\s+from\s+value\s+specified\s+in\s+web.xml\s+ at PostConstruct\s+called\s+./p.\s+.p.\s+FacesConfigNavigationHandler:\s+Injected\s+from\s+value\s+specified\s+in\s+web.xml\s+ at PostConstruct\s+called\s+./p.\s+.p.\s+FacesConfigViewHandler:\s+Injected\s+from\s+value\s+specified\s+in\s+web.xml\s+ at P [...]
+
+     <antcall target="test.jboss.tck01" />
+
+
+    </target>    
+
+
+    <target name="test.jboss.tck01" depends="define.scenario.aware.port">
+
+      <container.stop />
+
+      <container.start />
+
+      <deploy.artifact
+              artifact="${basedir}/org.jboss.jsr299.tck.tests.context.conversation.InvalidatingSessionDestroysConversationTest.war"
+              appName="org.jboss.jsr299.tck.tests.context.conversation.InvalidatingSessionDestroysConversationTest" />
+
+      <antcall target="app-check" />
+
+      <jsf.tester request="/clouds.jsf"
+                     context-path="/org.jboss.jsr299.tck.tests.context.conversation.InvalidatingSessionDestroysConversationTest"
+                     classpath-refid="html.classpath"
+                     test-results-dir="${regression.test.results.dir}"
+                     regexp="(?s).*org.jboss.jsr299.tck.tests.context.conversation.Cloud.Petelong-running\s+conversation begun.*"/>
+
+      <undeploy.artifact
+              artifact="${basedir}/org.jboss.jsr299.tck.tests.context.conversation.InvalidatingSessionDestroysConversationTest.war"
+              appName="org.jboss.jsr299.tck.tests.context.conversation.InvalidatingSessionDestroysConversationTest" />
+
+      <deploy.artifact
+              artifact="${basedir}/org.jboss.jsr299.tck.tests.context.conversation.InvalidatingSessionDestroysConversationTest.war"
+              appName="org.jboss.jsr299.tck.tests.context.conversation.InvalidatingSessionDestroysConversationTest" />
+
+      <antcall target="app-check" />
+
+      <jsf.tester request="/clouds.jsf"
+                     context-path="/org.jboss.jsr299.tck.tests.context.conversation.InvalidatingSessionDestroysConversationTest"
+                     classpath-refid="html.classpath"
+                     test-results-dir="${regression.test.results.dir}"
+                     regexp="(?s).*org.jboss.jsr299.tck.tests.context.conversation.Cloud.Petelong-running\s+conversation begun.*"/>
+
+      <undeploy.artifact
+              artifact="${basedir}/org.jboss.jsr299.tck.tests.context.conversation.InvalidatingSessionDestroysConversationTest.war"
+              appName="org.jboss.jsr299.tck.tests.context.conversation.InvalidatingSessionDestroysConversationTest" />
+
+
+
+    </target>
+
+    <target name="app-check">
+       <!-- make sure our helper property is unoccupied: -->
+       <fail if="do.sleep" />
+
+       <!-- overridable defaults: -->
+       <property name="app.retries" value="5" />
+       <property name="sleep.seconds" value="10" />
+       <property name="apptest.retries" value="10" />
+
+       <retry retrycount="${app.retries}">
+           <sequential>
+               <local name=".sleep.seconds" />
+               <condition property=".sleep.seconds" value="${sleep.seconds}" else="0">
+                   <istrue value="${do.sleep}" />
+               </condition>
+               <sleep seconds="${.sleep.seconds}" />
+
+               <property name="do.sleep" value="true" />
+
+               <fail><condition>
+                   <resourcesmatch astext="true">
+                       <string value="" />
+                        <concat>
+                           <url url="http://${container.host}:${container.port}/org.jboss.jsr299.tck.tests.context.conversation.InvalidatingSessionDestroysConversationTest/landing.html" />
+                           <filterchain>
+                               <linecontainsregexp>
+                                   <regexp pattern="(?s).*landing page.*" />
+                               </linecontainsregexp>
+                           </filterchain>
+                       </concat>
+                   </resourcesmatch>
+               </condition></fail>
+           </sequential>
+       </retry>
+    </target>
+
+
+</project>
diff --git a/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-763/i_spec_763_war/pom.xml b/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-763/i_spec_763_war/pom.xml
new file mode 100644
index 0000000..1483803
--- /dev/null
+++ b/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-763/i_spec_763_war/pom.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <groupId>com.sun.faces.regression</groupId>
+    <artifactId>i_spec_763_war</artifactId>
+    <version>1.0</version>
+    <packaging>war</packaging>
+    <name>${project.artifactId}</name>
+    <description>A simple project with war packaging that depends on JSF 2.2-SNAPSHOT and 
+        javaee 6, in that order.</description>
+<!--
+find target \( -name UserBean.java -or -name web.xml \) -exec perl -pi.bak -e "s/.[\{]groupId[\}]/javax.faces/g" {} \; -print
+-->
+    <url>http://jsf-spec.java.net/</url>
+    <build>
+        <finalName>${project.artifactId}</finalName>
+        <plugins>
+          <plugin>
+            <groupId>org.apache.maven.plugins</groupId>
+            <artifactId>maven-war-plugin</artifactId>
+            <version>2.1.1</version>
+          </plugin>
+
+            <plugin>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                    <source>1.6</source>
+                    <target>1.6</target>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+    <properties>
+      <spec.snapshot.version>2.2-SNAPSHOT</spec.snapshot.version>
+    </properties>
+    <dependencies>
+        <dependency>
+            <groupId>javax.faces</groupId>
+            <artifactId>javax.faces-api</artifactId>
+            <version>${spec.snapshot.version}</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>javax</groupId>
+            <artifactId>javaee-api</artifactId>
+            <version>6.0</version>
+            <scope>provided</scope>
+        </dependency>
+    </dependencies>
+
+    <repositories>
+        <repository>
+            <id>java.net-maven2-SNAPSHOT-repository</id>
+            <name>Java.net SNAPSHOT-Repository for Maven</name>
+            <url>https://maven.java.net/content/repositories/snapshots/</url>
+            <layout>default</layout>
+        </repository>
+        <repository>
+            <id>java.net-maven2-repository</id>
+            <name>Java.net Repository for Maven</name>
+            <url>https://maven.java.net/content/repositories/releases/</url>
+            <layout>default</layout>
+        </repository>
+    </repositories>
+</project>
diff --git a/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-763/i_spec_763_war/src/main/java/com/sun/faces/regression/i_spec_763_war/FacesConfigActionListener.java b/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-763/i_spec_763_war/src/main/java/com/sun/faces/regression/i_spec_763_war/FacesConfigActionListener.java
new file mode 100644
index 0000000..de74d75
--- /dev/null
+++ b/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-763/i_spec_763_war/src/main/java/com/sun/faces/regression/i_spec_763_war/FacesConfigActionListener.java
@@ -0,0 +1,77 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+ * Copyright (c) 2011 Oracle and/or its affiliates. All rights reserved.
+
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.regression.i_spec_763_war;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.Resource;
+import javax.faces.event.ActionListener;
+import javax.faces.event.ActionListenerWrapper;
+
+
+public class FacesConfigActionListener extends ActionListenerWrapper implements ActionListener {
+    
+    private ActionListener wrapped;
+
+    public FacesConfigActionListener(ActionListener wrapped) {
+        this.wrapped = wrapped;
+    }
+    
+    private String postConstructCalled;
+    @PostConstruct
+    private void doPostConstruct() {
+        postConstructCalled = "@PostConstruct called";
+        
+    }
+    
+    @Override
+    public ActionListener getWrapped() {
+        return this.wrapped;
+    }
+    
+    @Resource(name="injectedMessage")
+    private String injectedMessage;
+
+    public String getInjectedMessage() {
+        return injectedMessage + " " + postConstructCalled;
+    }
+    
+    
+    
+}
diff --git a/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-763/i_spec_763_war/src/main/java/com/sun/faces/regression/i_spec_763_war/FacesConfigApplicationFactory.java b/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-763/i_spec_763_war/src/main/java/com/sun/faces/regression/i_spec_763_war/FacesConfigApplicationFactory.java
new file mode 100644
index 0000000..59d9a5d
--- /dev/null
+++ b/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-763/i_spec_763_war/src/main/java/com/sun/faces/regression/i_spec_763_war/FacesConfigApplicationFactory.java
@@ -0,0 +1,92 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.regression.i_spec_763_war;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.Resource;
+import javax.faces.application.ApplicationFactory;
+import javax.faces.application.Application;
+
+public class FacesConfigApplicationFactory extends ApplicationFactory {
+
+    public FacesConfigApplicationFactory() {
+    }
+    
+    private ApplicationFactory oldFactory = null;
+
+    private NewApplication newApp = null;
+    
+    public FacesConfigApplicationFactory(ApplicationFactory yourOldFactory) {
+	oldFactory = yourOldFactory;
+    }
+    
+    public Application getApplication() {
+	if (null == newApp) {
+	    newApp = new NewApplication(oldFactory.getApplication());
+            newApp.setInjectedMessage(getInjectedMessage());
+	}
+	return newApp;
+    }
+    
+    public void setApplication(Application application) {
+	newApp = (NewApplication) application;
+    }
+
+    public String toString() {
+	return "FacesConfigApplicationFactory";
+    }
+    
+    @Resource(name="injectedMessage")
+    private String injectedMessage;
+
+    public String getInjectedMessage() {
+        return injectedMessage + " " + postConstructCalled;
+    }
+    
+    private String postConstructCalled;
+    @PostConstruct
+    private void doPostConstruct() {
+        postConstructCalled = "@PostConstruct called";
+        
+    }
+    
+
+}
diff --git a/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-763/i_spec_763_war/src/main/java/com/sun/faces/regression/i_spec_763_war/FacesConfigELResolver.java b/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-763/i_spec_763_war/src/main/java/com/sun/faces/regression/i_spec_763_war/FacesConfigELResolver.java
new file mode 100644
index 0000000..0df0865
--- /dev/null
+++ b/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-763/i_spec_763_war/src/main/java/com/sun/faces/regression/i_spec_763_war/FacesConfigELResolver.java
@@ -0,0 +1,102 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+ * Copyright (c) 2011 Oracle and/or its affiliates. All rights reserved.
+
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.regression.i_spec_763_war;
+
+import java.beans.FeatureDescriptor;
+import java.util.Iterator;
+import javax.annotation.PostConstruct;
+import javax.annotation.Resource;
+import javax.el.ELContext;
+import javax.el.ELResolver;
+
+public class FacesConfigELResolver extends ELResolver {
+    
+    @Resource(name="injectedMessage")
+    private String injectedMessage;
+
+    public String getInjectedMessage() {
+        return injectedMessage + " " + postConstructCalled;
+    }
+    
+
+    @Override
+    public Class<?> getCommonPropertyType(ELContext context, Object base) {
+        return null;
+    }
+
+    @Override
+    public Iterator<FeatureDescriptor> getFeatureDescriptors(ELContext context, Object base) {
+        return null;
+    }
+
+    @Override
+    public Class<?> getType(ELContext context, Object base, Object property) {
+        return Object.class;
+    }
+
+    @Override
+    public Object getValue(ELContext context, Object base, Object property) {
+        if (null == base && null != property && property.equals("FacesConfigELResolverMessage")) {
+            context.setPropertyResolved(true);
+            return getInjectedMessage();
+        }
+        
+        return null;
+    }
+
+    @Override
+    public boolean isReadOnly(ELContext context, Object base, Object property) {
+        return false;
+    }
+
+    @Override
+    public void setValue(ELContext context, Object base, Object property, Object value) {
+    }
+    
+    private String postConstructCalled;
+    @PostConstruct
+    private void doPostConstruct() {
+        postConstructCalled = "@PostConstruct called";
+        
+    }
+    
+    
+    
+}
diff --git a/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-763/i_spec_763_war/src/main/java/com/sun/faces/regression/i_spec_763_war/FacesConfigNavigationHandler.java b/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-763/i_spec_763_war/src/main/java/com/sun/faces/regression/i_spec_763_war/FacesConfigNavigationHandler.java
new file mode 100644
index 0000000..b3b729c
--- /dev/null
+++ b/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-763/i_spec_763_war/src/main/java/com/sun/faces/regression/i_spec_763_war/FacesConfigNavigationHandler.java
@@ -0,0 +1,76 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+ * Copyright (c) 2011 Oracle and/or its affiliates. All rights reserved.
+
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.regression.i_spec_763_war;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.Resource;
+import javax.faces.application.ConfigurableNavigationHandlerWrapper;
+import javax.faces.application.ConfigurableNavigationHandler;
+
+public class FacesConfigNavigationHandler extends ConfigurableNavigationHandlerWrapper {
+    
+    private ConfigurableNavigationHandler wrapped;
+
+    public FacesConfigNavigationHandler(ConfigurableNavigationHandler wrapped) {
+        super();
+        this.wrapped = wrapped;
+    }
+    
+    @Override
+    public ConfigurableNavigationHandler getWrapped() {
+        return this.wrapped;
+    }
+
+    private String postConstructCalled;
+    @PostConstruct
+    private void doPostConstruct() {
+        postConstructCalled = "@PostConstruct called";
+        
+    }
+    
+    @Resource(name="injectedMessage")
+    private String injectedMessage;
+
+    public String getInjectedMessage() {
+        return injectedMessage + " " + postConstructCalled;
+    }
+    
+    
+}
diff --git a/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-763/i_spec_763_war/src/main/java/com/sun/faces/regression/i_spec_763_war/FacesConfigPhaseListener.java b/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-763/i_spec_763_war/src/main/java/com/sun/faces/regression/i_spec_763_war/FacesConfigPhaseListener.java
new file mode 100644
index 0000000..111d472
--- /dev/null
+++ b/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-763/i_spec_763_war/src/main/java/com/sun/faces/regression/i_spec_763_war/FacesConfigPhaseListener.java
@@ -0,0 +1,84 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.regression.i_spec_763_war;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.Resource;
+import javax.faces.context.FacesContext;
+import javax.faces.event.PhaseEvent;
+import javax.faces.event.PhaseId;
+import javax.faces.event.PhaseListener;
+
+public class FacesConfigPhaseListener implements PhaseListener {
+
+    @Override
+    public void afterPhase(PhaseEvent event) {
+        FacesContext.getCurrentInstance().getExternalContext().getRequestMap().put("FacesConfigPhaseListenerAfterMessage", getInjectedMessage());
+        
+    }
+
+    @Override
+    public void beforePhase(PhaseEvent event) {
+        FacesContext.getCurrentInstance().getExternalContext().getRequestMap().put("FacesConfigPhaseListenerBeforeMessage", getInjectedMessage());
+    }
+
+    @Override
+    public PhaseId getPhaseId() {
+        return PhaseId.ANY_PHASE;
+    }
+    
+    @Resource(name="injectedMessage")
+    private String injectedMessage;
+
+    public String getInjectedMessage() {
+        return injectedMessage + " " + postConstructCalled;
+    }
+    
+    private String postConstructCalled;
+    @PostConstruct
+    private void doPostConstruct() {
+        postConstructCalled = "@PostConstruct called";
+        
+    }
+    
+    
+    
+}
diff --git a/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-763/i_spec_763_war/src/main/java/com/sun/faces/regression/i_spec_763_war/FacesConfigResourceHandler.java b/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-763/i_spec_763_war/src/main/java/com/sun/faces/regression/i_spec_763_war/FacesConfigResourceHandler.java
new file mode 100644
index 0000000..bea9358
--- /dev/null
+++ b/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-763/i_spec_763_war/src/main/java/com/sun/faces/regression/i_spec_763_war/FacesConfigResourceHandler.java
@@ -0,0 +1,79 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+ * Copyright (c) 2011 Oracle and/or its affiliates. All rights reserved.
+
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.regression.i_spec_763_war;
+
+import java.util.Map;
+import javax.annotation.PostConstruct;
+import javax.annotation.Resource;
+import javax.faces.application.ResourceHandler;
+import javax.faces.application.ResourceHandlerWrapper;
+import javax.faces.context.FacesContext;
+
+public class FacesConfigResourceHandler extends ResourceHandlerWrapper {
+
+    private ResourceHandler wrapped;
+
+    public FacesConfigResourceHandler(ResourceHandler wrapped) {
+        this.wrapped = wrapped;
+    }
+    
+    @Override
+    public ResourceHandler getWrapped() {
+        Map<String, Object> appMap = FacesContext.getCurrentInstance().getExternalContext().getApplicationMap();
+        appMap.put("FacesConfigResourceHandlerMessage", getInjectedMessage());
+        return this.wrapped;
+    }
+    
+    private String postConstructCalled;
+    @PostConstruct
+    private void doPostConstruct() {
+        postConstructCalled = "@PostConstruct called";
+        
+    }
+    
+    @Resource(name="injectedMessage")
+    private String injectedMessage;
+
+    public String getInjectedMessage() {
+        return injectedMessage + " " + postConstructCalled;
+    }
+    
+    
+}
diff --git a/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-763/i_spec_763_war/src/main/java/com/sun/faces/regression/i_spec_763_war/FacesConfigStateManager.java b/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-763/i_spec_763_war/src/main/java/com/sun/faces/regression/i_spec_763_war/FacesConfigStateManager.java
new file mode 100644
index 0000000..4881da0
--- /dev/null
+++ b/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-763/i_spec_763_war/src/main/java/com/sun/faces/regression/i_spec_763_war/FacesConfigStateManager.java
@@ -0,0 +1,74 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+ * Copyright (c) 2011 Oracle and/or its affiliates. All rights reserved.
+
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.regression.i_spec_763_war;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.Resource;
+import javax.faces.application.StateManager;
+import javax.faces.application.StateManagerWrapper;
+
+public class FacesConfigStateManager extends StateManagerWrapper {
+
+    private StateManager wrapped;
+
+    public FacesConfigStateManager(StateManager wrapped) {
+        this.wrapped = wrapped;
+    }
+    
+    @Override
+    public StateManager getWrapped() {
+        return this.wrapped;
+    }
+    
+    private String postConstructCalled;
+    @PostConstruct
+    private void doPostConstruct() {
+        postConstructCalled = "@PostConstruct called";
+        
+    }
+    
+    @Resource(name="injectedMessage")
+    private String injectedMessage;
+
+    public String getInjectedMessage() {
+        return injectedMessage + " " + postConstructCalled;
+    }
+    
+}
diff --git a/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-763/i_spec_763_war/src/main/java/com/sun/faces/regression/i_spec_763_war/FacesConfigSystemEventListener.java b/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-763/i_spec_763_war/src/main/java/com/sun/faces/regression/i_spec_763_war/FacesConfigSystemEventListener.java
new file mode 100644
index 0000000..6b7ff20
--- /dev/null
+++ b/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-763/i_spec_763_war/src/main/java/com/sun/faces/regression/i_spec_763_war/FacesConfigSystemEventListener.java
@@ -0,0 +1,74 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+ * Copyright (c) 2011 Oracle and/or its affiliates. All rights reserved.
+
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.regression.i_spec_763_war;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.Resource;
+import javax.faces.context.FacesContext;
+import javax.faces.event.AbortProcessingException;
+import javax.faces.event.SystemEvent;
+import javax.faces.event.SystemEventListener;
+
+public class FacesConfigSystemEventListener implements SystemEventListener {
+    
+    public void processEvent(SystemEvent event)
+          throws AbortProcessingException {
+        FacesContext.getCurrentInstance().getExternalContext().getRequestMap().put("FacesConfigSystemEventListenerMessage", getInjectedMessage());
+    }
+
+    public boolean isListenerForSource(Object source) {
+        return (source != null);
+    }
+    
+    private String postConstructCalled;
+    @PostConstruct
+    private void doPostConstruct() {
+        postConstructCalled = "@PostConstruct called";
+        
+    }
+    
+    @Resource(name="injectedMessage")
+    private String injectedMessage;
+
+    public String getInjectedMessage() {
+        return injectedMessage + " " + postConstructCalled;
+    }
+    
+}
diff --git a/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-763/i_spec_763_war/src/main/java/com/sun/faces/regression/i_spec_763_war/FacesConfigViewHandler.java b/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-763/i_spec_763_war/src/main/java/com/sun/faces/regression/i_spec_763_war/FacesConfigViewHandler.java
new file mode 100644
index 0000000..e119792
--- /dev/null
+++ b/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-763/i_spec_763_war/src/main/java/com/sun/faces/regression/i_spec_763_war/FacesConfigViewHandler.java
@@ -0,0 +1,74 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+ * Copyright (c) 2011 Oracle and/or its affiliates. All rights reserved.
+
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.regression.i_spec_763_war;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.Resource;
+import javax.faces.application.ViewHandler;
+import javax.faces.application.ViewHandlerWrapper;
+
+public class FacesConfigViewHandler extends ViewHandlerWrapper{
+    
+    private ViewHandler wrapped;
+
+    public FacesConfigViewHandler(ViewHandler wrapped) {
+        this.wrapped = wrapped;
+    }
+    
+    @Override
+    public ViewHandler getWrapped() {
+        return this.wrapped;
+    }
+    
+    private String postConstructCalled;
+    @PostConstruct
+    private void doPostConstruct() {
+        postConstructCalled = "@PostConstruct called";
+        
+    }
+    
+    @Resource(name="injectedMessage")
+    private String injectedMessage;
+
+    public String getInjectedMessage() {
+        return injectedMessage + " " + postConstructCalled;
+    }
+    
+}
diff --git a/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-763/i_spec_763_war/src/main/java/com/sun/faces/regression/i_spec_763_war/NewApplication.java b/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-763/i_spec_763_war/src/main/java/com/sun/faces/regression/i_spec_763_war/NewApplication.java
new file mode 100644
index 0000000..687d689
--- /dev/null
+++ b/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-763/i_spec_763_war/src/main/java/com/sun/faces/regression/i_spec_763_war/NewApplication.java
@@ -0,0 +1,70 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.regression.i_spec_763_war;
+
+import javax.faces.application.Application;
+import javax.faces.application.ApplicationWrapper;
+
+public class NewApplication extends ApplicationWrapper {
+    
+    private Application parent;
+
+    public NewApplication(Application parent) {
+        this.parent = parent;
+    }
+
+    @Override
+    public Application getWrapped() {
+        return this.parent;
+    }
+    
+    private String injectedMessage;
+
+    public String getInjectedMessage() {
+        return injectedMessage;
+    }
+
+    public void setInjectedMessage(String injectedMessage) {
+        this.injectedMessage = injectedMessage;
+    }
+    
+    
+}
\ No newline at end of file
diff --git a/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-763/i_spec_763_war/src/main/webapp/WEB-INF/beans.xml b/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-763/i_spec_763_war/src/main/webapp/WEB-INF/beans.xml
new file mode 100644
index 0000000..e69de29
diff --git a/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-763/i_spec_763_war/src/main/webapp/WEB-INF/faces-config.xml b/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-763/i_spec_763_war/src/main/webapp/WEB-INF/faces-config.xml
new file mode 100644
index 0000000..f82a217
--- /dev/null
+++ b/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-763/i_spec_763_war/src/main/webapp/WEB-INF/faces-config.xml
@@ -0,0 +1,33 @@
+<?xml version='1.0' encoding='UTF-8'?>
+
+<!-- =========== FULL CONFIGURATION FILE ================================== -->
+
+<faces-config version="2.1"
+    xmlns="http://java.sun.com/xml/ns/javaee" 
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_1.xsd">
+        
+<factory>
+    <application-factory>com.sun.faces.regression.i_spec_763_war.FacesConfigApplicationFactory</application-factory>
+</factory>
+
+<application>
+    <action-listener>com.sun.faces.regression.i_spec_763_war.FacesConfigActionListener</action-listener>
+    <navigation-handler>com.sun.faces.regression.i_spec_763_war.FacesConfigNavigationHandler</navigation-handler>
+    <view-handler>com.sun.faces.regression.i_spec_763_war.FacesConfigViewHandler</view-handler>
+    <state-manager>com.sun.faces.regression.i_spec_763_war.FacesConfigStateManager</state-manager>
+    <el-resolver>com.sun.faces.regression.i_spec_763_war.FacesConfigELResolver</el-resolver>
+    <resource-handler>com.sun.faces.regression.i_spec_763_war.FacesConfigResourceHandler</resource-handler>
+    <system-event-listener>
+        <system-event-listener-class>com.sun.faces.regression.i_spec_763_war.FacesConfigSystemEventListener</system-event-listener-class>
+        <system-event-class>javax.faces.event.PreRenderViewEvent</system-event-class>
+    </system-event-listener>
+</application>
+
+<lifecycle>
+    <phase-listener>com.sun.faces.regression.i_spec_763_war.FacesConfigPhaseListener</phase-listener>
+</lifecycle>
+
+
+
+</faces-config>
diff --git a/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-763/i_spec_763_war/src/main/webapp/WEB-INF/glassfish-web.xml b/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-763/i_spec_763_war/src/main/webapp/WEB-INF/glassfish-web.xml
new file mode 100644
index 0000000..13e0059
--- /dev/null
+++ b/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-763/i_spec_763_war/src/main/webapp/WEB-INF/glassfish-web.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
+<glassfish-web-app error-url="">
+  <class-loader delegate="true"/>
+  <jsp-config>
+    <property name="keepgenerated" value="true">
+      <description>Keep a copy of the generated servlet class' java code.</description>
+    </property>
+  </jsp-config>
+</glassfish-web-app>
diff --git a/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-763/i_spec_763_war/src/main/webapp/WEB-INF/web.xml b/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-763/i_spec_763_war/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..dcdb7eb
--- /dev/null
+++ b/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-763/i_spec_763_war/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,46 @@
+<?xml version='1.0' encoding='UTF-8'?>
+
+<web-app version="3.0"
+         xmlns="http://java.sun.com/xml/ns/javaee"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+
+    <display-name>mojarra-regression-test</display-name>
+    <description>A simple regression test to make it easier to get your bug fixed. The only reason we need a web.xml is to set the PROJECT_STAGE to Develoment.  If you have a web.xml, then you need to map the FacesServlet.</description>
+
+    <context-param>
+        <description>
+            Tell the runtime where we are in the project development
+            lifecycle.  Valid values are: 
+            Development, UnitTest, SystemTest, or Production.
+            The runtime will display helpful hints to correct common mistakes
+            when the value is Development.
+        </description>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>Development</param-value>
+    </context-param>
+
+    <!-- Faces Servlet -->
+  <servlet>
+    <servlet-name>Faces Servlet</servlet-name>
+    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+    <load-on-startup>1</load-on-startup>
+  </servlet>
+
+   <servlet-mapping>
+       <servlet-name>Faces Servlet</servlet-name>
+       <url-pattern>/faces/*</url-pattern>
+   </servlet-mapping>
+
+   <welcome-file-list>
+     <welcome-file>faces/i_spec_763_war.xhtml</welcome-file>
+   </welcome-file-list>
+   
+    <env-entry>
+        <env-entry-name>injectedMessage</env-entry-name>
+        <env-entry-type>java.lang.String</env-entry-type>
+        <env-entry-value>Injected from value specified in web.xml</env-entry-value>
+    </env-entry>
+   
+
+</web-app>
diff --git a/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-763/i_spec_763_war/src/main/webapp/i_spec_763_war.xhtml b/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-763/i_spec_763_war/src/main/webapp/i_spec_763_war.xhtml
new file mode 100644
index 0000000..4bb787e
--- /dev/null
+++ b/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-763/i_spec_763_war/src/main/webapp/i_spec_763_war.xhtml
@@ -0,0 +1,22 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+<h:head>
+  <title>A Simple JavaServer Faces 2.0 View</title>
+</h:head>
+<h:body>
+  <h:form>
+      <p>FacesConfigApplicationFactory: #{facesContext.application.injectedMessage}</p>
+      <p>FacesConfigActionListener: #{facesContext.application.actionListener.injectedMessage}</p>
+      <p>FacesConfigNavigationHandler: #{facesContext.application.navigationHandler.injectedMessage}</p>
+      <p>FacesConfigViewHandler: #{facesContext.application.viewHandler.injectedMessage}</p>
+      <p>FacesConfigStateManager: #{facesContext.application.stateManager.injectedMessage}</p>
+      <p>FacesConfigELResolver: #{FacesConfigELResolverMessage}</p>
+      <p>FacesConfigResourceHandler: #{FacesConfigResourceHandlerMessage}</p>
+      <p>FacesConfigSystemEventListener: #{FacesConfigSystemEventListenerMessage}</p>
+      <p>FacesConfigPhaseListener: #{FacesConfigPhaseListenerBeforeMessage}</p>
+    <p><h:commandButton value="submit" /></p>
+  </h:form>
+</h:body>
+</html>
diff --git a/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-763/org.jboss.jsr299.tck.tests.context.conversation.InvalidatingSessionDestroysConversationTest.war b/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-763/org.jboss.jsr299.tck.tests.context.conversation.InvalidatingSessionDestroysConversationTest.war
new file mode 100644
index 0000000..5861e7e
Binary files /dev/null and b/jsf-test/JAVASERVERFACES_SPEC_PUBLIC-763/org.jboss.jsr299.tck.tests.context.conversation.InvalidatingSessionDestroysConversationTest.war differ
diff --git a/jsf-test/admingui/admingui/pom.xml b/jsf-test/admingui/admingui/pom.xml
new file mode 100644
index 0000000..6d2d61f
--- /dev/null
+++ b/jsf-test/admingui/admingui/pom.xml
@@ -0,0 +1,97 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+   <modelVersion>4.0.0</modelVersion>
+   <groupId>com.sun.faces.regression.admingui</groupId>
+   <artifactId>admingui</artifactId>
+   <packaging>jar</packaging>
+   <name>admingui</name>
+   <version>1.0</version>
+
+   <dependencies>
+
+      <dependency>
+	<artifactId>htmlunit</artifactId>
+	<groupId>net.sourceforge.htmlunit</groupId>
+	<version>2.4</version>
+         <scope>provided</scope>
+      </dependency>
+      <dependency>
+         <groupId>junit</groupId>
+         <artifactId>junit</artifactId>
+         <version>3.8.1</version>
+         <scope>provided</scope>
+      </dependency>
+      <dependency>
+	<groupId>com.sun.faces.extensions</groupId>
+	<artifactId>jsf-extensions-test-time</artifactId>
+	<version>2.0</version>
+	<scope>provided</scope>
+      </dependency>
+
+   </dependencies>
+
+   <build>
+      <plugins>
+         <plugin>
+            <groupId>org.apache.maven.plugins</groupId>
+            <artifactId>maven-compiler-plugin</artifactId>
+            <version>2.0.2</version>
+            <configuration>
+               <source>1.6</source>
+               <target>1.6</target>
+            </configuration>
+         </plugin>
+      </plugins>
+      <finalName>admingui</finalName>
+   </build>
+
+   <repositories>
+     <repository>
+       <id>java.net</id>
+       <name>java.net</name>
+       <url>http://download.java.net/maven/2</url>
+       <layout>default</layout>
+     </repository>
+   </repositories>
+
+</project>
diff --git a/jsf-test/admingui/admingui/src/main/java/com/sun/faces/regression/admingui/AdminGuiTestCase.java b/jsf-test/admingui/admingui/src/main/java/com/sun/faces/regression/admingui/AdminGuiTestCase.java
new file mode 100644
index 0000000..c0b0d54
--- /dev/null
+++ b/jsf-test/admingui/admingui/src/main/java/com/sun/faces/regression/admingui/AdminGuiTestCase.java
@@ -0,0 +1,187 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.regression.admingui;
+
+import com.gargoylesoftware.htmlunit.CookieManager;
+import com.gargoylesoftware.htmlunit.html.HtmlAnchor;
+import com.gargoylesoftware.htmlunit.html.HtmlCheckBoxInput;
+import com.gargoylesoftware.htmlunit.html.HtmlOption;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlRadioButtonInput;
+import com.gargoylesoftware.htmlunit.html.HtmlSelect;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
+import com.gargoylesoftware.htmlunit.javascript.host.Event;
+
+import com.sun.faces.htmlunit.HtmlUnitFacesTestCase;
+import java.util.ArrayList;
+import java.util.List;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import org.apache.commons.httpclient.Cookie;
+
+
+public class AdminGuiTestCase extends HtmlUnitFacesTestCase {
+
+    public AdminGuiTestCase(String name) {
+        super(name);
+    }
+
+
+    /**
+     * Return the tests included in this test suite.
+     */
+    public static Test suite() {
+        return (new TestSuite(AdminGuiTestCase.class));
+    }
+
+
+    // ------------------------------------------------------------ Test Methods
+
+    public void testDeployExerciseUndeploy() throws Exception {
+
+        HtmlPage page = null;
+        HtmlSubmitInput button = null;
+        
+        client.setThrowExceptionOnFailingStatusCode(false);
+        CookieManager cm = client.getCookieManager();
+        
+        cm.clearCookies();
+        try {
+            page = getPage("/common/index.jsf?bare=true");
+        } catch (Exception e) {
+            page = getPage("/common/index.jsf");
+        }
+        Cookie jSessionID = cm.getCookie("JSESSIONID");
+        
+        Cookie c1 = new Cookie("", "_common_applications_uploadFrame.jsf", "left:0&top:0&badCookieChars:%28%2C%29%2C%3C%2C%3E%2C@%2C%2C%2C%3B%2C%3A%2C%5C%2C%22%2C/%2C%5B%2C%5D%2C%3F%2C%3D%2C%7B%2C%7D%2C%20%2C%09; treeForm_tree-hi=treeForm:tree:applications; JSESSIONID=" + jSessionID.getValue());
+        cm.addCookie(c1);
+        
+        page = getPage("/common/applications/uploadFrame.jsf?bare=true");
+        HtmlRadioButtonInput localPackagedFile = (HtmlRadioButtonInput) page.getElementById("form:sheet1:section1:prop1:fileChooseRdBtn");
+        page = localPackagedFile.click();
+        
+        // Set the war path
+        HtmlTextInput textInput = (HtmlTextInput) page.getElementById("form:sheet1:section1:prop1:dirPath");
+        String dirPathValue = System.getProperty("warfile");
+        System.err.println("DIRPATH:"+dirPathValue);
+        textInput.setValueAttribute(dirPathValue);
+        
+        // Set the appType
+        List<HtmlSelect> selects = new ArrayList<HtmlSelect>(1);
+        selects = getAllElementsOfGivenClass(page.getDocumentElement(), selects, 
+                HtmlSelect.class);
+        HtmlSelect type = selects.get(0);
+        HtmlOption option = type.getOption(1);
+        type.setSelectedAttribute(option, true);
+        
+        // Set the contextRoot
+        textInput = (HtmlTextInput) page.getElementById("form:war:psection:cxp:ctx");
+        textInput.setValueAttribute("admingui_test_war");
+        
+        // Set the appName
+        textInput = (HtmlTextInput) page.getElementById("form:appClient:psection:nameProp:appName");
+        textInput.setValueAttribute("admingui_test_war");
+        textInput.fireEvent(Event.TYPE_CHANGE);
+
+        // Submit the app
+        button = (HtmlSubmitInput) 
+                page.getElementById("form:title:topButtons:uploadButton");
+        button.focus();
+        client.setJavaScriptEnabled(false);
+        page = button.click();
+        client.setJavaScriptEnabled(true);
+        
+        // Now we visit the deployed app and verify it is successfully deployed
+        this.port = 8080;
+        client.setThrowExceptionOnFailingStatusCode(true);
+        cm.clearCookies();
+        Thread.currentThread().sleep(20000L);
+        page = getPage("/admingui_test_war/faces/main.xhtml");
+        assertTrue(page.asXml().contains("javax.faces.ViewState"));
+                
+        // Now we undeploy the app using the GUI
+        this.port = 4848;
+        cm.clearCookies();
+        client.setThrowExceptionOnFailingStatusCode(false);
+
+        try {
+            page = getPage("/common/index.jsf?bare=true");
+        } catch (Exception e) {
+            page = getPage("/common/index.jsf");
+        }
+    
+        jSessionID = cm.getCookie("JSESSIONID");
+        
+        c1 = new Cookie("", "_common_applications_uploadFrame.jsf", "left:0&top:0&badCookieChars:%28%2C%29%2C%3C%2C%3E%2C@%2C%2C%2C%3B%2C%3A%2C%5C%2C%22%2C/%2C%5B%2C%5D%2C%3F%2C%3D%2C%7B%2C%7D%2C%20%2C%09; treeForm_tree-hi=treeForm:tree:applications; JSESSIONID=" + jSessionID.getValue());
+        cm.addCookie(c1);
+        
+        client.setJavaScriptEnabled(false);
+        
+        page = getPage("/common/applications/applications.jsf?bare=true");
+        // In the table of deployed apps, find the one in which we are interested.
+        List<HtmlAnchor> links = page.getAnchors();
+        HtmlAnchor appLink = null;
+        for (HtmlAnchor cur : links) {
+            String href = cur.getHrefAttribute();
+            String hrefId = cur.getId();
+            if (null != href && href.contains("admingui_test_war") &&
+                null != hrefId && hrefId.contains(":link") && hrefId.contains(":deployTable")) {
+                appLink = cur;
+                break;
+            }
+        }
+        String id = appLink.getId();
+        String checkboxId = id.replace("col1:link", "col0:select");
+        HtmlCheckBoxInput myCheckbox = (HtmlCheckBoxInput) page.getElementById(checkboxId);
+        page = (HtmlPage) myCheckbox.setChecked(true);
+        
+        // remove the app
+        button = (HtmlSubmitInput) 
+          page.getElementById("propertyForm:deployTable:topActionsGroup1:button1");
+        button.removeAttribute("disabled");
+        
+        page = button.click();
+        
+    }
+
+
+}
diff --git a/jsf-test/admingui/admingui_test_war/pom.xml b/jsf-test/admingui/admingui_test_war/pom.xml
new file mode 100644
index 0000000..25bad2b
--- /dev/null
+++ b/jsf-test/admingui/admingui_test_war/pom.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <groupId>com.sun.faces.regression.admingui_test_awar</groupId>
+    <artifactId>admingui_test_war</artifactId>
+    <version>1.0</version>
+    <packaging>war</packaging>
+    <name>${project.artifactId}</name>
+    <build>
+        <finalName>${project.artifactId}</finalName>
+        <plugins>
+          <plugin>
+            <groupId>org.apache.maven.plugins</groupId>
+            <artifactId>maven-war-plugin</artifactId>
+            <version>2.1.1</version>
+          </plugin>
+
+            <plugin>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                    <source>1.6</source>
+                    <target>1.6</target>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+    <dependencies>
+        <dependency>
+            <groupId>javax.faces</groupId>
+            <artifactId>javax.faces-api</artifactId>
+            <version>${spec.snapshot.version}</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>javax</groupId>
+            <artifactId>javaee-api</artifactId>
+            <version>6.0</version>
+            <scope>provided</scope>
+        </dependency>
+    </dependencies>
+
+    <repositories>
+        <repository>
+            <id>java.net</id>
+            <name>java.net</name>
+            <url>http://download.java.net/maven/2</url>
+            <layout>default</layout>
+        </repository>
+    </repositories>
+</project>
diff --git a/jsf-test/admingui/admingui_test_war/src/main/java/com/sun/faces/regression/admingui_test_awar/UserBean.java b/jsf-test/admingui/admingui_test_war/src/main/java/com/sun/faces/regression/admingui_test_awar/UserBean.java
new file mode 100644
index 0000000..e7acf74
--- /dev/null
+++ b/jsf-test/admingui/admingui_test_war/src/main/java/com/sun/faces/regression/admingui_test_awar/UserBean.java
@@ -0,0 +1,89 @@
+package com.sun.faces.regression.admingui_test_awar;
+
+import java.util.Date;
+import javax.faces.application.FacesMessage;
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.SessionScoped;
+import javax.faces.validator.ValidatorException;
+
+ at ManagedBean
+ at SessionScoped
+public class UserBean {
+    
+    protected String firstName;
+    protected String lastName;
+    protected Date dob;
+    protected String sex;
+    protected String email;
+    protected String serviceLevel = "medium";
+
+    public String getFirstName() {
+        return firstName;
+    }
+
+    public void setFirstName(String firstName) {
+        this.firstName = firstName;
+    }
+
+    public String getLastName() {
+        return lastName;
+    }
+
+    public void setLastName(String lastName) {
+        this.lastName = lastName;
+    }
+
+    public Date getDob() {
+        return dob;
+    }
+
+    public void setDob(Date dob) {
+        this.dob = dob;
+    }
+
+    public String getSex() {
+        return sex;
+    }
+
+    public void setSex(String sex) {
+        this.sex = sex;
+    }
+
+    public String getEmail() {
+        return email;
+    }
+
+    public void setEmail(String email) {
+        this.email = email;
+    }
+
+    public String getServiceLevel() {
+        return serviceLevel;
+    }
+
+    public void setServiceLevel(String serviceLevel) {
+        this.serviceLevel = serviceLevel;
+    }
+    
+    public void validateEmail(FacesContext context, UIComponent toValidate,
+            Object value) throws ValidatorException {
+        String emailStr = (String) value;
+        if (-1 == emailStr.indexOf("@")) {
+            FacesMessage message = new FacesMessage("Invalid email address");
+            throw new ValidatorException(message);
+        }
+    }
+
+    public String addConfirmedUser() {
+        // This method would call a database or other service and add the 
+        // confirmed user information.
+        // For now, we just place an informative message in request scope
+        FacesMessage doneMessage = 
+                new FacesMessage("Successfully added new user");
+        FacesContext.getCurrentInstance().addMessage(null, doneMessage);
+        return "done";
+    }
+}
+
diff --git a/jsf-test/admingui/admingui_test_war/src/main/webapp/WEB-INF/web.xml b/jsf-test/admingui/admingui_test_war/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..092afaa
--- /dev/null
+++ b/jsf-test/admingui/admingui_test_war/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,39 @@
+<?xml version='1.0' encoding='UTF-8'?>
+
+<web-app version="3.0"
+         xmlns="http://java.sun.com/xml/ns/javaee"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+
+    <display-name>mojarra-regression-test</display-name>
+    <description>A simple regression test to make it easier to get your bug fixed. The only reason we need a web.xml is to set the PROJECT_STAGE to Develoment.  If you have a web.xml, then you need to map the FacesServlet.</description>
+
+    <context-param>
+        <description>
+            Tell the runtime where we are in the project development
+            lifecycle.  Valid values are: 
+            Development, UnitTest, SystemTest, or Production.
+            The runtime will display helpful hints to correct common mistakes
+            when the value is Development.
+        </description>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>Development</param-value>
+    </context-param>
+
+    <!-- Faces Servlet -->
+  <servlet>
+    <servlet-name>Faces Servlet</servlet-name>
+    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+    <load-on-startup>1</load-on-startup>
+  </servlet>
+
+   <servlet-mapping>
+       <servlet-name>Faces Servlet</servlet-name>
+       <url-pattern>/faces/*</url-pattern>
+   </servlet-mapping>
+
+   <welcome-file-list>
+     <welcome-file>faces/main.xhtml</welcome-file>
+   </welcome-file-list>
+
+</web-app>
diff --git a/jsf-test/admingui/admingui_test_war/src/main/webapp/main.xhtml b/jsf-test/admingui/admingui_test_war/src/main/webapp/main.xhtml
new file mode 100644
index 0000000..6865c1f
--- /dev/null
+++ b/jsf-test/admingui/admingui_test_war/src/main/webapp/main.xhtml
@@ -0,0 +1,13 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+<h:head>
+  <title>A Simple JavaServer Faces 2.0 View</title>
+</h:head>
+<h:body>
+  <h:form>
+    <p><h:commandButton value="submit" /></p>
+  </h:form>
+</h:body>
+</html>
diff --git a/jsf-test/admingui/build.xml b/jsf-test/admingui/build.xml
new file mode 100644
index 0000000..7fe7573
--- /dev/null
+++ b/jsf-test/admingui/build.xml
@@ -0,0 +1,106 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<!-- ************ JSF build file ************************************** -->
+<project name="admingui" default="test" basedir=".">
+
+    <property file="../../build.properties"/>
+    <path id="admingui.classpath">  
+        <path refid="html.classpath" />
+        <pathelement location="${basedir}/admingui/target/classes"/>
+    </path>
+
+    <import file="${jsf.build.home}/common/ant/common.xml"/>
+
+    <target name="build">
+        <jsf.mvn dir="${basedir}/admingui" goals="install" />
+        <jsf.mvn dir="${basedir}/admingui_test_war" goals="install" />
+    </target>    
+
+    <target name="clean">
+        <jsf.mvn dir="${basedir}/admingui" goals="clean" />
+        <jsf.mvn dir="${basedir}/admingui_test_war" goals="clean" />
+    </target>    
+
+    <target name="install">
+    </target>    
+
+    <target name="remove" />
+
+    <target name="admingui-check">
+      <var name="do.sleep" unset="true" />
+      <var name="deployment.host" unset="true" />
+      <var name="deployment.port" unset="true" />
+      <var name="path.with.leading.slash" unset="true" />
+      <var name="page.regexp" unset="true" />
+      
+      <property name="deployment.host" value="${container.host}" />
+      <property name="deployment.port" value="${glassfish.admin.port}" />
+      <property name="path.with.leading.slash" value="/common/index.jsf?bare=true" />
+      <property name="page.regexp" value="(?s).*loginform.*" />
+      <property name="deployment.retries" value="15" />
+      
+      <antcall target="deployment.check" />
+    </target>
+
+    <target name="test" depends="admingui-check,define.scenario.aware.port">
+       <retry retrycount="${deployment.retries}">
+        <sequential>
+        <echo message="TEST RETRY..." />
+        <jsf.junit context-path=""
+                 custom.port="${glassfish.admin.port}"
+                 classpath-refid="admingui.classpath"    
+                 test-results-dir="${regression.test.results.dir}">
+            <tests>
+                <fileset dir="${basedir}/admingui/target/classes"
+                     includes="com/sun/faces/regression/admingui/AdminGuiTestCase.class"/> 
+            </tests>
+            <custom-sysproperties>
+                <sysproperty key="warfile"
+                             value="${basedir}/admingui_test_war/target/admingui_test_war.war"/>
+            </custom-sysproperties>
+        </jsf.junit>
+        </sequential>
+       </retry>
+    </target>    
+
+</project>
diff --git a/jsf-test/bugdb-12867406/build.xml b/jsf-test/bugdb-12867406/build.xml
new file mode 100644
index 0000000..7202d13
--- /dev/null
+++ b/jsf-test/bugdb-12867406/build.xml
@@ -0,0 +1,164 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!-- ************ JSF build file ************************************** -->
+
+<project name="bugdb-12867406" default="test" basedir=".">
+
+    <property file="../../build.properties"/>
+
+    <import file="${jsf.build.home}/common/ant/common.xml"/>   
+    <import file="${jsf.build.home}/common/ant/test-app.xml"/>   
+
+    <path id="12867406.classpath">  
+        <path refid="html.classpath" />
+        <pathelement location="${basedir}/i_bugdb_12867406_htmlunit/target/classes"/>
+    </path>
+
+    <property name="twenty" value="i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i" />
+
+    <target name="build">
+
+        <jsf.mvn dir="${basedir}/i_bugdb_12867406_htmlunit" goals="install" />
+
+    </target>    
+
+    <target name="clean">
+
+        <jsf.mvn dir="${basedir}/i_bugdb_12867406_htmlunit" goals="clean" />
+
+    </target>    
+
+    <target name="install">
+    </target>    
+
+    <target name="remove">
+
+      <undeploy.artifact
+              artifact="${basedir}/helloworld.war"
+              appName="helloworld"/>
+
+      <undeploy.artifact
+              artifact="${basedir}/custom-bean-scope.war"
+              appName="custom-bean-scope"/>
+
+    </target>    
+
+    <target name="test" depends="define.scenario.aware.port">
+
+      <antcall target="test.custom-bean-scope" />
+      <antcall target="test.helloworld" />
+
+    </target>
+
+    <target name="test.helloworld">
+
+<!-- From the bug report
+
+The reproducer:
+
+I have run a simple jsf 2 sample: hello world. You need to deploy it,
+hit the welcome page, and then undeploy it for several times(>10), then
+you can see this issue happened occasionally. I will upload my test
+case.
+
+-->
+
+        <deploy.artifact
+              artifact="${basedir}/helloworld.war"
+              appName="helloworld"/>
+
+        <jsf.tester request="/faces/hello.xhtml"
+                     context-path="/helloworld"
+                     classpath-refid="html.classpath"
+                     test-results-dir="${regression.test.results.dir}"
+                     regexp="(?s).*My\s*name\s*is\s*Duke.\s*What\s*is\s*yours.*"/>
+
+        <for list="${twenty}" param="app" trim="true"><sequential>
+          <undeploy.artifact
+              artifact="${basedir}/helloworld.war"
+              appName="helloworld"/>
+          <deploy.artifact
+              artifact="${basedir}/helloworld.war"
+              appName="helloworld"/>
+
+        </sequential></for>
+
+        <jsf.tester request="/faces/hello.xhtml"
+                     context-path="/helloworld"
+                     classpath-refid="html.classpath"
+                     test-results-dir="${regression.test.results.dir}"
+                     regexp="(?s).*My\s*name\s*is\s*Duke.\s*What\s*is\s*yours.*"/>
+
+    </target>
+
+    <target name="test.custom-bean-scope">
+
+        <for list="${twenty}" param="app" trim="true"><sequential>
+
+          <deploy.artifact
+                artifact="${basedir}/custom-bean-scope.war"
+                appName="custom-bean-scope"/>
+
+          <jsf.junit context-path="/i_jsf_2079_war_0_ProjectStageDevelopment"
+                   classpath-refid="12867406.classpath"    
+                   test-results-dir="${regression.test.results.dir}">
+              <tests>
+                  <fileset dir="${basedir}/i_bugdb_12867406_htmlunit/target/classes"
+                       includes="**/*Test.class"/> 
+              </tests>
+          </jsf.junit>
+
+          <undeploy.artifact
+                artifact="${basedir}/custom-bean-scope.war"
+                appName="custom-bean-scope"/>
+
+        </sequential></for>
+
+
+
+    </target>    
+
+
+        
+</project>
diff --git a/jsf-test/bugdb-12867406/custom-bean-scope.war b/jsf-test/bugdb-12867406/custom-bean-scope.war
new file mode 100644
index 0000000..f5bdc97
Binary files /dev/null and b/jsf-test/bugdb-12867406/custom-bean-scope.war differ
diff --git a/jsf-test/bugdb-12867406/helloworld.war b/jsf-test/bugdb-12867406/helloworld.war
new file mode 100644
index 0000000..0a24caa
Binary files /dev/null and b/jsf-test/bugdb-12867406/helloworld.war differ
diff --git a/jsf-test/bugdb-12867406/i_bugdb_12867406_htmlunit/pom.xml b/jsf-test/bugdb-12867406/i_bugdb_12867406_htmlunit/pom.xml
new file mode 100644
index 0000000..91b21b3
--- /dev/null
+++ b/jsf-test/bugdb-12867406/i_bugdb_12867406_htmlunit/pom.xml
@@ -0,0 +1,97 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+   <modelVersion>4.0.0</modelVersion>
+   <groupId>com.sun.faces.regression</groupId>
+   <artifactId>i_bugdb_12867406_htmlunit</artifactId>
+   <packaging>jar</packaging>
+   <name>i_bugdb_12867406_htmlunit</name>
+   <version>1.0</version>
+
+   <dependencies>
+
+      <dependency>
+	<artifactId>htmlunit</artifactId>
+	<groupId>net.sourceforge.htmlunit</groupId>
+	<version>2.4</version>
+         <scope>provided</scope>
+      </dependency>
+      <dependency>
+         <groupId>junit</groupId>
+         <artifactId>junit</artifactId>
+         <version>3.8.1</version>
+         <scope>provided</scope>
+      </dependency>
+      <dependency>
+	<groupId>com.sun.faces.extensions</groupId>
+	<artifactId>jsf-extensions-test-time</artifactId>
+	<version>2.0</version>
+	<scope>provided</scope>
+      </dependency>
+
+   </dependencies>
+
+   <build>
+      <plugins>
+         <plugin>
+            <groupId>org.apache.maven.plugins</groupId>
+            <artifactId>maven-compiler-plugin</artifactId>
+            <version>2.0.2</version>
+            <configuration>
+               <source>1.6</source>
+               <target>1.6</target>
+            </configuration>
+         </plugin>
+      </plugins>
+      <finalName>i_bugdb_12867406_htmlunit</finalName>
+   </build>
+
+   <repositories>
+     <repository>
+       <id>java.net</id>
+       <name>java.net</name>
+       <url>http://download.java.net/maven/2</url>
+       <layout>default</layout>
+     </repository>
+   </repositories>
+
+</project>
diff --git a/jsf-test/bugdb-12867406/i_bugdb_12867406_htmlunit/src/main/java/functional/webapp/jsf20/JSF20TestBase.java b/jsf-test/bugdb-12867406/i_bugdb_12867406_htmlunit/src/main/java/functional/webapp/jsf20/JSF20TestBase.java
new file mode 100644
index 0000000..acd7b8d
--- /dev/null
+++ b/jsf-test/bugdb-12867406/i_bugdb_12867406_htmlunit/src/main/java/functional/webapp/jsf20/JSF20TestBase.java
@@ -0,0 +1,14 @@
+/**
+ * 
+ */
+package wlstest.functional.webapp.jsf20;
+
+import junit.framework.TestCase;
+
+
+public abstract class JSF20TestBase extends TestCase{
+	
+	public JSF20TestBase(String name) {
+		super(name);
+	}
+}
diff --git a/jsf-test/bugdb-12867406/i_bugdb_12867406_htmlunit/src/main/java/functional/webapp/jsf20/JSFRenderingTestBase.java b/jsf-test/bugdb-12867406/i_bugdb_12867406_htmlunit/src/main/java/functional/webapp/jsf20/JSFRenderingTestBase.java
new file mode 100644
index 0000000..28ea385
--- /dev/null
+++ b/jsf-test/bugdb-12867406/i_bugdb_12867406_htmlunit/src/main/java/functional/webapp/jsf20/JSFRenderingTestBase.java
@@ -0,0 +1,523 @@
+/**
+ * 
+ */
+package wlstest.functional.webapp.jsf20;
+
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.Formatter;
+import java.util.List;
+import java.util.Properties;
+import java.util.Iterator;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+
+import wlstest.functional.webapp.jsf20.JSF20TestBase;
+
+import com.gargoylesoftware.htmlunit.JavaScriptPage;
+import com.gargoylesoftware.htmlunit.Page;
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.ClickableElement;
+import com.gargoylesoftware.htmlunit.html.HtmlAnchor;
+import com.gargoylesoftware.htmlunit.html.HtmlArea;
+import com.gargoylesoftware.htmlunit.html.HtmlElement;
+import com.gargoylesoftware.htmlunit.html.HtmlImage;
+import com.gargoylesoftware.htmlunit.html.HtmlInput;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSpan;
+import com.gargoylesoftware.htmlunit.html.HtmlTable;
+import com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine;
+import com.gargoylesoftware.htmlunit.html.HtmlHeading2;
+
+/**
+ * @author haili Sep 23, 2006 12:14:56 PM
+ *
+ */
+public class JSFRenderingTestBase extends JSF20TestBase{
+	private final String KEY_HOST = "host";
+  private final String KEY_PORT = "port";
+  protected static final String HTML_INPUT = "Input";
+  protected static final String HTML_PAGE = "Page";
+  protected static final String HTML_ANCHOR = "Anchor";
+  protected static final String HTML_CLICKABLE = "Clickable";
+  protected static final String HTML_AREA = "Area";
+  protected static final String HTML_IMAGE = "Image";
+  protected static final String HTML_TABLE = "Table";
+  protected static final String HTML_SELECT = "Select";
+  protected static final String HTML_OPTION = "Option";
+  protected static final String HTML_RADIO = "Radio";
+  protected static final String HTML_CHECKBOX = "CheckBox";
+  protected static final String HTML_SPAN = "Span";
+  protected static final String HTML_TABLE_DATA_CELL = "TableDataCell";
+  
+  protected String hostName;
+  protected int port;
+  protected String urlPrefix;
+
+	protected StringBuilder messages;
+	protected Formatter formatter;
+  
+	/**
+	 * @param name
+	 */
+	public JSFRenderingTestBase(String name) {
+		super(name);
+	}
+
+	protected void setup(Properties p) {
+  	 String hostName = p.getProperty(KEY_HOST, "").trim();
+     String port = p.getProperty(KEY_PORT, "").trim();
+     
+     if (hostName != null && hostName.length() > 0) {
+         this.hostName = hostName;
+     } else {
+         throw new IllegalArgumentException("'"+KEY_HOST+"' not specified");
+     }
+     
+     if (port != null && port.length() > 0) {
+         this.port = Integer.parseInt(port);
+     } else {
+    	 	throw new IllegalArgumentException("'"+KEY_PORT+"' not specified");
+     }
+    
+     urlPrefix = "http://" + hostName + ':' + port;
+     
+     messages = new StringBuilder(128);
+     formatter = new Formatter(messages);
+  }
+  
+  protected Page getPage(WebClient client, String path) throws Exception{
+  	try {
+  		Page page = client.getPage(new URL(urlPrefix + path));
+  		return page;
+  	} catch (Exception ex) {
+  		formatter.format("Unable to fetch page with '%s'", path);
+  		throw ex;
+  	} 	
+  }
+
+  protected HtmlPage getPage(String path) throws Exception {
+  	WebClient client = new WebClient();
+  	client.setPrintContentOnFailingStatusCode(true);
+  	client.setRedirectEnabled(true);
+  	client.setThrowExceptionOnScriptError(true);
+  	client.setJavaScriptEnabled(true);
+  	new JavaScriptEngine(client);
+  	return (HtmlPage) getPage(client, path);
+  } 
+  
+  protected JavaScriptPage getJavaScriptPage(String path) throws Exception {
+  	WebClient client = new WebClient();
+  	client.setPrintContentOnFailingStatusCode(true);
+  	client.setRedirectEnabled(true);
+  	client.setThrowExceptionOnScriptError(true);
+  	client.setJavaScriptEnabled(true);
+  	new JavaScriptEngine(client);
+  	return (JavaScriptPage) getPage(client, path);
+  } 
+  
+  protected String getTitle(HtmlPage root) {
+  	return root.getTitleText();
+  }
+  
+  protected HtmlInput getInputIncludingId(HtmlPage root, String id) {
+
+  	return getInputIncludingAttr(root, "id", id);
+  }
+  
+  protected HtmlInput getInputIncludingId(HtmlPage root, String part1, String part2) {
+
+  	HtmlInput result = null;
+
+  	List list = getAllElementsOfGivenClass(root, null, HtmlInput.class);
+  	for (int i = 0; i < list.size(); i++) {
+  		result = (HtmlInput) list.get(i);
+  		if (-1 != result.getIdAttribute().indexOf(part1) && -1 != result.getIdAttribute().indexOf(part2)) {
+  			break;
+  		}
+  		result = null;
+  	}
+  	return result;
+  }
+  
+  protected HtmlInput getInputIncludingValue(HtmlPage root, String value) {
+
+  	return getInputIncludingAttr(root, "value", value);
+  }
+  
+  protected HtmlInput getInputIncludingAttr(HtmlPage root, String attr, String value) {
+
+  	HtmlInput result = null;
+
+  	List list = getAllElementsOfGivenClass(root, null, HtmlInput.class);
+  	for (int i = 0; i < list.size(); i++) {
+  		result = (HtmlInput) list.get(i);
+  		if (-1 != result.getAttribute(attr).indexOf(value)) {
+  			break;
+  		}
+  		result = null;
+  	}
+  	return result;
+  }
+  
+  protected HtmlInput getInputIncludingAttrInside(HtmlElement root, String attr, String value) {
+
+  	HtmlInput result = null;
+
+  	List list = getAllElementsOfGivenClassInside(root, null, HtmlInput.class);
+  	for (int i = 0; i < list.size(); i++) {
+  		result = (HtmlInput) list.get(i);
+  		if (-1 != result.getAttribute(attr).indexOf(value)) {
+  			break;
+  		}
+  		result = null;
+  	}
+  	return result;
+  }
+  
+  protected HtmlAnchor getAnchorIncludingId(HtmlPage root, String id) {
+
+  	HtmlAnchor result = null;
+
+  	List list = getAllElementsOfGivenClass(root, null, HtmlAnchor.class);
+  	for (int i = 0; i < list.size(); i++) {
+  		result = (HtmlAnchor) list.get(i);
+  		if (-1 != result.getIdAttribute().indexOf(id)) {
+  			break;
+  		}
+  		result = null;
+  	}
+  	return result;
+  }
+  
+  protected HtmlAnchor getAnchorIncludingText(HtmlPage root, String text) {
+
+  	HtmlAnchor result = null;
+
+  	List list = getAllElementsOfGivenClass(root, null, HtmlAnchor.class);
+  	for (int i = 0; i < list.size(); i++) {
+  		result = (HtmlAnchor) list.get(i);
+  		if (result.asText().equals(text)) {
+  			return result;
+  		}
+  	}
+  	return null;
+  }
+  
+  protected HtmlAnchor getAnchorIncludingOnclick(HtmlPage root, String text1, String text2) {
+  	HtmlAnchor result = null;
+
+  	List list = getAllElementsOfGivenClass(root, null, HtmlAnchor.class);
+  	for (int i = 0; i < list.size(); i++) {
+  		result = (HtmlAnchor) list.get(i);
+  		if (-1!=result.getOnClickAttribute().indexOf(text1) && -1!=result.getOnClickAttribute().indexOf(text2)) {
+  			break;
+  		}
+  		result = null;
+  	}
+  	return result;
+  }
+  
+  protected HtmlArea getFirstAreaIncludingAlt(HtmlPage root, String alt) {
+
+  	HtmlArea result = null;
+
+  	List list = getAllElementsOfGivenClass(root, null, HtmlArea.class);
+  	for (int i = 0; i < list.size(); i++) {
+  		result = (HtmlArea) list.get(i);
+  		if (-1 != result.getAltAttribute().indexOf(alt)) {
+  			break;
+  		}
+  		result = null;
+  	}
+  	return result;
+  }
+  
+  protected ClickableElement getClickableIncludingId(HtmlPage root, String id) {
+
+  	ClickableElement result = null;
+
+  	List list = getAllElementsOfGivenClass(root, null, ClickableElement.class);
+  	for (int i = 0; i < list.size(); i++) {
+  		result = (ClickableElement) list.get(i);
+  		if (-1 != result.getIdAttribute().indexOf(id)) {
+  			break;
+  		}
+  		result = null;
+  	}
+  	return result;
+  }
+  
+  protected ClickableElement getClickableIncludingId(HtmlPage root, String part1, String part2) {
+
+  	ClickableElement result = null;
+
+  	List list = getAllElementsOfGivenClass(root, null, ClickableElement.class);
+  	for (int i = 0; i < list.size(); i++) {
+  		result = (ClickableElement) list.get(i);
+  		if (-1 != result.getIdAttribute().indexOf(part1) && -1 != result.getIdAttribute().indexOf(part2)) {
+  			break;
+  		}
+  		result = null;
+  	}
+  	return result;
+  }
+  
+  protected ClickableElement getClickableIncludingName(HtmlPage root, String name) {
+
+  	ClickableElement result = null;
+
+  	List list = getAllElementsOfGivenClass(root, null, ClickableElement.class);
+  	for (int i = 0; i < list.size(); i++) {
+  		result = (ClickableElement) list.get(i);
+  		if (result.getAttribute("name").equals(name)) {
+  			break;
+  		}
+  		result = null;
+  	}
+  	return result;
+  }
+  
+  private ClickableElement getClickableIncludingClass(HtmlPage root, String name, Class cls) {
+
+  	ClickableElement result = null;
+
+  	List list = getAllElementsOfGivenClass(root, null, cls);
+  	for (int i = 0; i < list.size(); i++) {
+  		result = (ClickableElement) list.get(i);
+  		if (result.getClassAttribute().equals(name)) {
+  			break;
+  		}
+  		result = null;
+  	}
+  	return result;
+  }
+  
+  protected HtmlSpan getHtmlSpanIncludingClass(HtmlPage root, String className) {
+  	ClickableElement result = null;
+  	result = getClickableIncludingClass(root, className, HtmlSpan.class);
+  	if(result != null)
+  		return (HtmlSpan)result;
+  	return null;
+  }
+  
+  protected HtmlSpan getHtmlSpanIncludingAttr(HtmlPage root, String attrName, String attrValue) {
+  	HtmlSpan result = null;
+
+  	List list = getAllElementsOfGivenClass(root, null, HtmlSpan.class);
+  	for (int i = 0; i < list.size(); i++) {
+  		result = (HtmlSpan) list.get(i);
+  		if (-1 != result.getAttribute(attrName).indexOf(attrValue)) {
+  			break;
+  		}
+  		result = null;
+  	}
+  	return result;
+  }
+  
+  protected ClickableElement getClickableIncludingClass(HtmlPage root, String cls) {
+  	return getClickableIncludingClass(root, cls, ClickableElement.class);
+  }
+  
+  protected HtmlImage getFirstImageIncludingSrc(HtmlPage root, String src) {
+  	
+  	HtmlImage result = null;
+
+  	List list = getAllElementsOfGivenClass(root, null, HtmlImage.class);
+  	for (int i = 0; i < list.size(); i++) {
+  		result = (HtmlImage) list.get(i);
+  		System.out.println("[image]"+result.asXml());
+  		if (-1 != result.getSrcAttribute().indexOf(src)) {
+  			break;
+  		}
+  		result = null;
+  	}
+  	return result;
+  }
+  
+  protected HtmlTable getFirstTableIncludingClass(HtmlPage root, String className) {
+  	ClickableElement result = null;
+  	result = getClickableIncludingClass(root, className, HtmlTable.class);
+  	if(result != null)
+  		return (HtmlTable)result;
+  	return null;
+  }
+ 
+  protected HtmlInput getInputIncludingValue(HtmlElement root, String value) {
+  	HtmlInput result = null;
+
+  	List list = getAllElementsOfGivenClassInside(root, null, HtmlInput.class);
+  	for (int i = 0; i < list.size(); i++) {
+  		result = (HtmlInput) list.get(i);
+  		if (-1 != result.getValueAttribute().indexOf(value)) {
+  			break;
+  		}
+  		result = null;
+  	}
+  	return result;	
+  }
+
+  
+  protected List getAllElementsOfGivenClass(HtmlPage root,
+  		List<HtmlElement> list,
+  		Class matchClass) {
+
+  	return getAllElementsOfGivenClass(root.getDocumentElement(),
+  			list,
+  			matchClass);
+
+  }
+  
+  protected List getAllElementsOfGivenClassInside(HtmlElement root,
+  		List<HtmlElement> list,
+  		Class matchClass) {
+
+  	return getAllElementsOfGivenClass(root, list, matchClass);
+  }
+  
+  protected List getAllElementsOfGivenClass(HtmlElement root,
+  		List<HtmlElement> list,
+  		Class matchClass) {
+
+  	if (null == root) {
+  		return list;
+  	}
+  	if (null == list) {
+  		list = new ArrayList<HtmlElement>();
+  	}
+
+  	for (Iterator<HtmlElement> i = root.getAllHtmlChildElements().iterator(); i.hasNext(); ) {
+  		Object obj = i.next();
+      
+      getAllElementsOfGivenClass((HtmlElement)obj, list, matchClass);
+  	}
+
+  	if (matchClass.isInstance(root)) {
+  		if (!list.contains(root)) {
+  			list.add(root);
+  		}
+  	}
+  	return list;
+  }
+  
+  protected Element getElementWithId(Document root, String id) {
+
+  	return root.getElementById(id);
+  }
+  
+  protected void validateExistenceWithId(String id,
+  		String elementName,
+  		HtmlElement element) {
+  	boolean expected = true;
+  	validateExistenceWithId(expected, id, elementName, element);
+  }
+
+  protected void validateExistenceWithId(boolean expected, String id,
+  		String elementName,
+  		HtmlElement element) {
+
+  	validateExistenceWith(expected, "ID", elementName, id, element);
+  }
+  
+  protected void validateExistenceWithName(String name,
+  		String elementName,
+  		HtmlElement element) {
+  	boolean expected = true;
+  	validateExistenceWithName(expected, name, elementName, element);
+  }
+  
+  protected void validateExistenceWithName(boolean expected, String name,
+  		String elementName,
+  		HtmlElement element) {
+  	validateExistenceWith(expected, "Name", elementName, name, element);	
+  }
+  
+  protected void validateExistenceWithAlt(String alt,
+  		String elementName,
+  		HtmlElement element) {
+
+  	boolean expected = true;
+  	validateExistenceWithAlt(expected, alt, elementName, element);
+  }
+  
+	protected void validateExistenceWithAlt(boolean expected, String alt, String elementName, HtmlElement element) {
+		validateExistenceWith(expected, "Alt", elementName, alt, element);	
+	}
+
+	protected void validateExistenceWithSrc(String src,
+  		String elementName,
+  		HtmlElement element) {
+		boolean expected = true;
+  	validateExistenceWithSrc(expected, src, elementName, element);
+  }
+  
+	protected void validateExistenceWithSrc(boolean expected, String alt, String elementName, HtmlElement element) {
+		validateExistenceWith(expected, "Src", elementName, alt, element);	
+	}
+	
+  protected void validateExistenceWithClass(String cls,
+  		String elementName,
+  		HtmlElement element) {
+  	boolean expected = true;
+  	validateExistenceWithClass(expected, cls, elementName, element);
+  }
+
+	private void validateExistenceWithClass(boolean expected, String cls, String elementName, HtmlElement element) {
+		validateExistenceWith(expected, "Class", elementName, cls, element);	
+	}
+
+	protected void validateExistenceWith(boolean expected, String attr, String elementType, String value, Object element) {
+  	if (element == null && expected) {
+  		formatter.format("Unable to find rendered '%s' element containing " +
+  				"the %s '%s'\n", elementType, attr, value);
+  		fail(messages.toString());
+  	} else if(element!=null && !expected) {
+  		formatter.format("Should not find rendered '%s' element containing " +
+  				"the %s '%s'\n", elementType, attr, value);
+  		fail(messages.toString());
+  	}
+  }
+
+	protected void validateEqualWith(String attr, String elementType, Object expObj, Object myObj) {
+		validateEqualWith(true, attr, elementType, expObj, myObj);
+	}
+	
+	protected void validateEqualWith(boolean expected, String attr, String elementType, Object expObj, Object myObj) {
+  	if (!expObj.equals(myObj) && expected) {
+  		formatter.format("'%s' of %s is '%s', not equal with '%s'\n", attr, elementType, myObj ,expObj );
+  		fail(messages.toString());
+  	} else if(expObj.equals(myObj) && !expected) {
+  		formatter.format("'%s' of %s is '%s', should not equal with '%s'\n", attr, elementType, myObj, expObj);
+  		fail(messages.toString());
+  	}
+  }
+	
+	protected void validateStringIncludeWith(boolean expected, String attr, String elementType, String expObj, String myObj) {
+  	if (-1 == expObj.indexOf(myObj) && expected) {
+  		formatter.format("'%s' of %s is '%s', not includes '%s'\n", attr, elementType, myObj ,expObj );
+  		fail(messages.toString());
+  	} else if(-1 != expObj.indexOf(myObj) && !expected) {
+  		formatter.format("'%s' of %s is '%s', should not includes '%s'\n", attr, elementType, myObj, expObj);
+  		fail(messages.toString());
+  	}
+  }
+	
+	protected void validateStartWith(String attr, String elementType, String expObj, String myObj) {
+		validateStartWith(true, attr, elementType, expObj, myObj);
+	}
+	
+	private void validateStartWith(boolean expected, String attr, String elementType, String expObj, String myObj) {
+  	if (!myObj.startsWith(expObj) && expected) {      
+  		fail(String.format("'%s' of %s is '%s', not start with '%s'\n", attr, elementType, myObj, expObj));
+  	} else if(myObj.startsWith(expObj) && !expected) {
+  		fail(String.format("'%s' of %s is '%s', should not start with '%s'\n", attr, elementType, myObj, expObj));
+  	}
+  }
+	
+	@Override
+	protected void setUp() throws Exception {
+		super.setUp();
+		Properties p = System.getProperties();
+		this.setup(p);
+	}
+}
diff --git a/jsf-test/bugdb-12867406/i_bugdb_12867406_htmlunit/src/main/java/functional/webapp/jsf20/custombeanscope/CustomBeanScopeSuiteTest.java b/jsf-test/bugdb-12867406/i_bugdb_12867406_htmlunit/src/main/java/functional/webapp/jsf20/custombeanscope/CustomBeanScopeSuiteTest.java
new file mode 100644
index 0000000..bf702e3
--- /dev/null
+++ b/jsf-test/bugdb-12867406/i_bugdb_12867406_htmlunit/src/main/java/functional/webapp/jsf20/custombeanscope/CustomBeanScopeSuiteTest.java
@@ -0,0 +1,22 @@
+/**
+ * 
+ */
+package wlstest.functional.webapp.jsf20.custombeanscope;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+/**
+ * @author haili Oct 7, 2006 9:57:00 PM
+ *
+ */
+public class CustomBeanScopeSuiteTest {
+	public static Test suite() {
+    TestSuite suite = new TestSuite();
+    suite.addTest(new CustomBeanScopeTest("testCustomBeanScope"));
+    
+    //compatibility test
+    
+    return suite;
+  }
+}
diff --git a/jsf-test/bugdb-12867406/i_bugdb_12867406_htmlunit/src/main/java/functional/webapp/jsf20/custombeanscope/CustomBeanScopeTest.java b/jsf-test/bugdb-12867406/i_bugdb_12867406_htmlunit/src/main/java/functional/webapp/jsf20/custombeanscope/CustomBeanScopeTest.java
new file mode 100644
index 0000000..9eb8f44
--- /dev/null
+++ b/jsf-test/bugdb-12867406/i_bugdb_12867406_htmlunit/src/main/java/functional/webapp/jsf20/custombeanscope/CustomBeanScopeTest.java
@@ -0,0 +1,66 @@
+/**
+ * 
+ */
+package wlstest.functional.webapp.jsf20.custombeanscope;
+
+import com.gargoylesoftware.htmlunit.html.HtmlInput;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSpan;
+import com.gargoylesoftware.htmlunit.html.HtmlParagraph;
+import com.gargoylesoftware.htmlunit.html.HtmlAnchor;
+import com.gargoylesoftware.htmlunit.html.HtmlHeading2;
+import com.gargoylesoftware.htmlunit.html.HtmlDivision;
+import com.gargoylesoftware.htmlunit.html.HtmlTable;
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.NicelyResynchronizingAjaxController;
+import java.util.List;
+import wlstest.functional.webapp.jsf20.JSFRenderingTestBase;
+import com.gargoylesoftware.htmlunit.WebAssert;
+
+public class CustomBeanScopeTest extends JSFRenderingTestBase {
+
+	private static final String CONTEXT_ROOT = "/custom-bean-scope";
+	/**
+	 * @param name
+	 */
+	public CustomBeanScopeTest(String name) {
+		super(name);
+		// TODO Auto-generated constructor stub
+	}
+
+	public void testCustomBeanScope() throws Exception {
+		HtmlPage page;
+		page = getPage(CONTEXT_ROOT+"/");
+		assertNotNull(page);
+		WebAssert.assertTitleEquals(page, "Custom Scope Example");
+    WebAssert.assertTextPresentInElement( page, "Resolved", "create"); 
+    WebAssert.assertTextPresentInElement( page, "Resolved", "scopeReference"); 
+    WebAssert.assertTextPresentInElement( page, "Resolved", "nonCreate"); 
+    WebAssert.assertElementPresent(page, "form");
+    WebAssert.assertElementPresent(page, "form:reload");
+    WebAssert.assertElementPresent(page, "form:destroy");
+    
+    HtmlTable table = page.getHtmlElementById("grid");
+    assertEquals("PostConstruct",table.getCellAt(1,0).asText());
+    assertEquals("Invoked",table.getCellAt(1,1).asText());
+    assertEquals("PreDestroy",table.getCellAt(2,0).asText());
+    assertEquals("",table.getCellAt(2,1).asText());
+    
+    HtmlInput reload = (HtmlInput)page.getElementById("form:reload");
+    HtmlInput destroy = (HtmlInput)page.getElementById("form:destroy");
+    page = reload.click();
+    table = page.getHtmlElementById("grid");
+    assertEquals("PostConstruct",table.getCellAt(1,0).asText());
+    assertEquals("",table.getCellAt(1,1).asText());
+    assertEquals("PreDestroy",table.getCellAt(2,0).asText());
+    assertEquals("",table.getCellAt(2,1).asText());
+    page = destroy.click();
+    table = page.getHtmlElementById("grid");
+    assertEquals("PostConstruct",table.getCellAt(1,0).asText());
+    assertEquals("Invoked",table.getCellAt(1,1).asText());
+    assertEquals("PreDestroy",table.getCellAt(2,0).asText());
+    assertEquals("Invoked",table.getCellAt(2,1).asText());
+	}
+  
+}
diff --git a/jsf-test/bugdb-13245471/build.xml b/jsf-test/bugdb-13245471/build.xml
new file mode 100644
index 0000000..954b23e
--- /dev/null
+++ b/jsf-test/bugdb-13245471/build.xml
@@ -0,0 +1,112 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!-- ************ JSF build file ************************************** -->
+
+<project name="bugdb_13245471" default="test" basedir=".">
+
+    <property file="../../build.properties"/>
+    <property name="repetitions" value="i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i" />
+    <import file="${jsf.build.home}/common/ant/common.xml"/>   
+    <import file="${jsf.build.home}/common/ant/test-app.xml"/>   
+
+    <target name="build">
+
+     <mkdir dir="target" />
+
+     <get src="http://anybodys.us.oracle.com/java/javaee/Specs/JSF/FILES_USED_IN_MOJARRA_BUILD/jsf_altfacesconfiglast_web.war"
+          dest="target" />
+
+
+    </target>    
+
+    <target name="clean">
+
+      <delete dir="target" />
+
+    </target>    
+
+    <target name="install">
+
+
+    </target>    
+
+    <target name="remove">
+
+    </target>    
+
+    <target name="do.install">
+      <deploy.artifact
+              artifact="${basedir}/target/jsf_altfacesconfiglast_web.war"
+              appName="jsf_altfacesconfiglast_web" 
+              waitforpath="TestServlet?testname=getFactoryAltfacesConfigLastTest" />
+
+    </target>    
+
+    <target name="do.remove">
+
+      <undeploy.artifact
+              artifact="${basedir}/target/jsf_altfacesconfiglast_web.war"
+              appName="jsf_altfacesconfiglast_web" />
+
+    </target>    
+
+    <target name="test" depends="define.scenario.aware.port">
+      <for list="${repetitions}" param="app" trim="true"><sequential>
+        <antcall inheritall="true" target="do.install" />
+
+        <jsf.tester request="/TestServlet?testname=getFactoryAltfacesConfigLastTest"
+                     context-path="/jsf_altfacesconfiglast_web"
+                     classpath-refid="html.classpath"
+                     force.no.cluster="TRUE" textPage="true"
+                     test-results-dir="${regression.test.results.dir}"
+                     regexp="(?s).*Test.*PASSED.*"/>
+
+        <antcall inheritall="true" target="do.remove" />
+      </sequential></for>
+
+    </target>    
+
+
+        
+</project>
diff --git a/jsf-test/build.xml b/jsf-test/build.xml
new file mode 100644
index 0000000..76afbfc
--- /dev/null
+++ b/jsf-test/build.xml
@@ -0,0 +1,136 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!-- ************ JSF build file ************************************** -->
+
+<project name="per-bug-test-apps" default="main" basedir=".">
+
+    <property file="../build.properties"/>
+    <!-- Project local     -->
+    <import file="${jsf.build.home}/common/ant/common.xml"/>   
+
+    <property name="deploy-exploded-applications" value="" />
+
+    <property name="applications-for-V3-only" value="" />
+
+    <property name="applications-for-V3.1-only"
+              value="GLASSFISH-11636,
+                     GLASSFISH-15985,
+                     GLASSFISH-17218" />
+
+    <property name="applications-for-V3.1_no_cluster-only"
+              value="GLASSFISH-11636,
+                     GLASSFISH-15985,
+                     GLASSFISH-17218,
+                     GLASSFISH-16847,
+                     JAVASERVERFACES-1338,
+                     admingui" />
+
+    <property name="container-agnostic-applications" value="
+                    JAVASERVERFACES-2195,
+                    JAVASERVERFACES-1995,
+                    JAVASERVERFACES_SPEC_PUBLIC-763,
+                    JAVASERVERFACES_SPEC_PUBLIC-594,
+                    JAVASERVERFACES_SPEC_PUBLIC-719,
+                    JAVASERVERFACES_SPEC_PUBLIC-1082" />
+
+    <target name="clean" depends="define.applications"
+            description="">
+        <!-- ensure the api jar is deployed to the local maven repo -->
+        <ant dir="${api.dir}" target="main">
+          <property name="skip.javadoc.jar"  value="true" />
+        </ant>
+        <ant dir="${api.dir}" target="mvn.deploy.snapshot.local">
+          <property name="skip.javadoc.jar"  value="true" />
+        </ant>
+        <delete failonerror="false" dir="${regression.test.results.dir}" />
+
+        <for list="${applications}" param="app" trim="true">
+            <sequential>
+                <echo message="Descending into ${basedir}/@{app} and executing target clean" />
+                <ant dir="@{app}" inheritAll="true" inheritRefs="true" target="clean" />
+            </sequential>
+        </for>
+
+        <delete failonerror="false" dir="JAVASERVERFACES-1338/build" />
+               
+    </target>    
+
+    <target name="test" depends="define.applications"
+            description="">
+    <!-- ensure the api jar is deployed to the local maven repo -->
+    <ant dir="${api.dir}" target="mvn.deploy.snapshot.local">
+      <property name="skip.javadoc.jar"  value="true" />
+    </ant>
+    <mkdir dir="${regression.test.results.dir}" />
+
+    <container.start/>
+
+    <for list="${applications}" param="app" trim="true">
+      <sequential>
+        <echo message="Descending into ${basedir}/@{app} and executing target remove" />
+        <ant dir="@{app}" inheritAll="true" inheritRefs="true" target="remove" />
+
+        <echo message="Descending into ${basedir}/@{app} and executing target build" />
+        <ant dir="@{app}" inheritAll="true" inheritRefs="true" target="build" />
+
+        <echo message="Descending into ${basedir}/@{app} and executing target install" />
+        <ant dir="@{app}" inheritAll="true" inheritRefs="true" target="install" />
+
+        <echo message="Descending into ${basedir}/@{app} and executing target test" />
+        <ant dir="@{app}" inheritAll="true" inheritRefs="true" target="test" />
+
+        <echo message="Descending into ${basedir}/@{app} and executing target remove" />
+        <ant dir="@{app}" inheritAll="true" inheritRefs="true" target="remove" />
+
+      </sequential>
+    </for>
+
+    <container.stop/>
+
+    </target>    
+
+    
+
+
+</project>
diff --git a/jsf-tools/.cvsignore b/jsf-tools/.cvsignore
new file mode 100644
index 0000000..8216e0e
--- /dev/null
+++ b/jsf-tools/.cvsignore
@@ -0,0 +1,3 @@
+build
+build.properties
+dist
diff --git a/jsf-tools/COPYRIGHT b/jsf-tools/COPYRIGHT
index c10965e..c1daae7 100644
--- a/jsf-tools/COPYRIGHT
+++ b/jsf-tools/COPYRIGHT
@@ -1,8 +1,40 @@
 /*
- * $Id: COPYRIGHT,v 1.2 2004/01/27 20:13:27 eburns Exp $
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
  */
 
-/*
- * Copyright 2003-2004 Sun Microsystems, Inc. All rights reserved.
- * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
- */
diff --git a/jsf-tools/LICENSE.html b/jsf-tools/LICENSE.html
index b2f8812..93cbe71 100644
--- a/jsf-tools/LICENSE.html
+++ b/jsf-tools/LICENSE.html
@@ -1,6 +1,48 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
 <HTML>
 <HEAD>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
 	<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=iso-8859-1">
 	<TITLE></TITLE>
 	<META NAME="GENERATOR" CONTENT="StarOffice/5.2 (Solaris Sparc)">
@@ -12,7 +54,7 @@
 <BODY>
 <P ALIGN=CENTER><B><FONT SIZE=4>Pre-Release</FONT></B> <BR><B><FONT SIZE=4>Software
 Evaluation Agreement</FONT></B></P>
-<P>SUN MICROSYTEMS, INC. ("SUN") IS WILLING TO LICENSE THE
+<P>ORACLE AMERICA, INC. ("ORACLE") IS WILLING TO LICENSE THE
 JAVASERVER<FONT SIZE=2 STYLE="font-size: 9pt"><SUP>TM </SUP></FONT>FACES,
 VERSION 1.0 PRE-RELEASE SOFTWARE TO LICENSEE  ONLY UPON THE
 CONDITION THAT LICENSEE ACCEPTS ALL OF THE TERMS CONTAINED IN THIS
@@ -29,9 +71,9 @@ THE AGREEMENT AND THE INSTALLATION PROCESS WILL NOT CONTINUE.
 JavaServer Faces, Version 1.0 Pre-release Softwa<FONT SIZE=3>re i<SPAN STYLE="font-weight: medium">n
 source form, any portions of the software code provided in binary
 form, and any user manuals, programming guides and other
-documentation provided to Licensee by Sun Microsystems, Inc. under
+documentation provided to Licensee by Oracle America, Inc. under
 this Agreement.</SPAN></FONT></P>
-<P><B>2.0 LIMITED LICENSE</B> <BR>Sun grants to Licensee, a
+<P><B>2.0 LIMITED LICENSE</B> <BR>Oracle grants to Licensee, a
 non-exclusive, non-transferable, royalty-free and limited license to
 view Licensed Software internally for the purposes of evaluation
 only. No license is granted to Licensee for any other purpose.
@@ -47,41 +89,41 @@ or create derivative works of the Licensed Software, reverse
 engineer, disassemble or decompile binary portions of the Licensed
 Software, or otherwise attempt to derive the source code from such
 portions. <BR>3.3 No right, title, or interest in or to Licensed
-Software, any trademarks, service marks, or trade names of Sun or
-Sun's licensors is granted under this Agreement. <BR>3.4 Licensed
+Software, any trademarks, service marks, or trade names of Oracle or
+Oracle's licensors is granted under this Agreement. <BR>3.4 Licensed
 Software may only be used at the location identified above. <BR>3.5
 Licensee shall have no right to use the Licensed Software for
 productive or commercial use. 
 </P>
-<P><B>4.0 NO SUPPORT</B> <BR>Sun is under no obligation to support
+<P><B>4.0 NO SUPPORT</B> <BR>Oracle is under no obligation to support
 Licensed Software or to provide Licensee with updates or error
-corrections (collectively "Software Updates"). If Sun, at
+corrections (collectively "Software Updates"). If Oracle, at
 its sole option, supplies Software Updates to Licensee, the Software
 Updates will be considered part of Licensed Software, and subject to
 the terms of this Agreement. 
 </P>
 <P><B>5.0 LICENSEE DUTIES</B> <BR>Licensee agrees to evaluate the
 Licensed Software for use with Licensee's products and to provide
-feedback to Sun's email alias: <A HREF="mailto:JSFaces-feedback at sun.com">JSFaces-feedback at sun.com</A>. 
-Sun shall treat any oral or written feedback or results of Licensee's
-testing of the Licensed Software which Licensee provides to Sun as
-Sun's Confidential Information (defined in Section 7 below). 
+feedback to Oracle's email alias: <A HREF="mailto:JSFaces-feedback at sun.com">JSFaces-feedback at sun.com</A>. 
+Oracle shall treat any oral or written feedback or results of Licensee's
+testing of the Licensed Software which Licensee provides to Oracle as
+Oracle's Confidential Information (defined in Section 7 below). 
 </P>
 <P><B>6.0 TERM AND TERMINATION OF AGREEMENT</B> <BR>6.1 This
 Agreement will commence on the date on which Licensee receives
 Licensed Software (the "Effective Date") and will expire
 ninety (90) days from the Effective Date, unless terminated earlier
 as provided herein. <BR>6.2 Either party may terminate this Agreement
-upon ten (10) days' written notice to the other party. However, Sun
+upon ten (10) days' written notice to the other party. However, Oracle
 may terminate this Agreement immediately should any Licensed Software
-become, or in Sun's opinion be likely to become, the subject of a
+become, or in Oracle's opinion be likely to become, the subject of a
 claim of infringement of a patent, trade secret or copyright. <BR>6.3
-Sun may terminate this Agreement immediately should Licensee
+Oracle may terminate this Agreement immediately should Licensee
 materially breach any of its provisions or take any action in
-derogation of Sun's rights to the Confidential Information licensed
+derogation of Oracle's rights to the Confidential Information licensed
 to Licensee. <BR>6.4 Upon termination or expiration of this
 Agreement, Licensee will immediately cease use of and destroy
-Licensed Software, any copies thereof and provide to Sun  a
+Licensed Software, any copies thereof and provide to Oracle  a
 written statement certifying that Licensee has complied with the
 foregoing obligations. <BR>6.5 Rights and obligations under this
 Agreement which by their nature should survive, will remain in effect
@@ -90,7 +132,7 @@ after termination or expiration hereof.
 <P><B>7.0 CONFIDENTIAL INFORMATION</B> <BR>7.1 For purposes of this
 Agreement, "Confidential Information" means:  (i)
 business and technical information and any source code or binary
-code, which Sun discloses to Licensee related to Licensed Software;
+code, which Oracle discloses to Licensee related to Licensed Software;
 (ii) Licensee's feedback based on Licensed Software; and (iii) the
 terms, conditions, and existence of this Agreement.  Licensee
 may not disclose or use Confidential Information, except for the
@@ -99,9 +141,9 @@ Confidential Information with the same degree of care, but not less
 than a reasonable degree of care, as Licensee uses to protect its own
 Confidential Information. Licensee's obligations regarding
 Confidential Information will expire no less than five (5) years from
-the date of receipt of the Confidential Information, except for Sun
+the date of receipt of the Confidential Information, except for Oracle
 source code which will be protected in perpetuity.  Licensee
-agrees that Licensed Software contains Sun trade secrets. <BR>7.2
+agrees that Licensed Software contains Oracle trade secrets. <BR>7.2
 Notwithstanding any provisions contained in this Agreement concerning
 nondisclosure and non-use of the Confidential Information, the
 nondisclosure obligations of Section 7.1 will not apply to any
@@ -124,8 +166,8 @@ Agreement.
 that Licensed Software may contain errors and is not designed,
 licensed, or intended for use in the design, construction, operation
 or maintenance of any nuclear facility ("High Risk Activities").
-Sun disclaims any express or implied warranty of fitness for such
-uses.  Licensee represents and warrants to Sun that it will not
+Oracle disclaims any express or implied warranty of fitness for such
+uses.  Licensee represents and warrants to Oracle that it will not
 use, distribute or license the Licensed Software for High Risk
 Activities. <BR>8.2 LICENSED SOFTWARE IS PROVIDED "AS IS".
 ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS, AND WARRANTIES,
@@ -137,7 +179,7 @@ LEGALLY INVALID.
 <P><B>9.0 LIMITATION OF LIABILITY</B> <BR>9.1 Licensee acknowledges
 that the Licensed Software may be experimental and that the Licensed
 Software may have defects or deficiencies, which cannot or will not
-be corrected by Sun.  Licensee will hold Sun harmless from any
+be corrected by Oracle.  Licensee will hold Oracle harmless from any
 claims based on Licensee's use of the Licensed Software for any
 purposes other than those of internal evaluation, and from any claims
 that later versions or releases of any Licensed Software furnished to
@@ -173,13 +215,13 @@ responsibility to obtain such licenses to export, re-export or import
 as may be required after delivery to Licensee. <BR>11.3 It is
 understood and agreed that, notwithstanding any other provision of
 this Agreement, Licensee's breach of the provisions of Section 7 of
-this Agreement will cause Sun irreparable damage for which recovery
-of money damages would be inadequate, and that Sun will therefore be
-entitled to seek timely injunctive relief to protect Sun's rights
+this Agreement will cause Oracle irreparable damage for which recovery
+of money damages would be inadequate, and that Oracle will therefore be
+entitled to seek timely injunctive relief to protect Oracle's rights
 under this Agreement in addition to any and all remedies available at
 law. <BR>11.4 Neither party may assign or otherwise transfer any of
 its rights or obligations under this Agreement, without the prior
-written consent of the other party, except that Sun may assign this
+written consent of the other party, except that Oracle may assign this
 Agreement to an affiliated company. <BR>11.5 This Agreement is the
 parties' entire agreement relating to its subject matter.  It
 supersedes all prior or contemporaneous oral or written
diff --git a/jsf-tools/conf/FaceletsHtmlBasicTaglib21.pre-maven-rename.properties b/jsf-tools/conf/FaceletsHtmlBasicTaglib21.pre-maven-rename.properties
new file mode 100644
index 0000000..b21ed7b
--- /dev/null
+++ b/jsf-tools/conf/FaceletsHtmlBasicTaglib21.pre-maven-rename.properties
@@ -0,0 +1,141 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+# PROPERTY DESCRIPTIONS
+#
+# base.output.dir - specifies the base directory in which to store
+#                   the generated output.  This must be a relative path.
+#                   If the directory does not exist, it will be created.
+#                   (REQUIRED)
+#
+# jsp.version - defines the version of JSP the minimum version of JSP
+#               this tag library will support.  Valid values are
+#               1.2 and 2.1. (REQUIRED)
+#
+#
+# renderkit.name - specifies the name of the Renderkit for which these tags
+#                  are being generated. (REQUIRED)
+#
+# taglib.shortname - specifies the shortname used to identifiy the tag library
+#                    by.  (REQUIRED)
+#
+# taglib.displayname - specifies the display-name used to identifiy the tag library
+#                    by.  (OPTIONAL)
+#
+# taglib.uri - The known URI of the generated tag library. (REQUIRED)
+#
+# taglib.description - A description of the tag library.  (OPTIONAL)
+#
+#
+# taglib.file.name - specifies the name of the generated TLD. (REQUIRED)
+#
+# taglib.include - specifies an optional tag definitions to be included
+#                  towards the end of the generated TLD.  If the path
+#                  doesn't start with a '/' (use '/' as the
+#                  path separator on Win32 platforms - e.g. c:/some/path/TAGDEF),
+#                  the path will be considered relative from the directory in
+#                  which the ant task is invoked. (OPTIONAL)
+#
+# target.package - specifies the target java package of the generated code.
+#                  (REQUIRED)
+#
+#
+# copyright = Copyright to be included in all generated files.
+#
+
+#
+#                        !!! IMPORTANT !!!
+# This is the properties file necessary to generate HtmlComponents and
+# tag libraries for the html basic renderkit.  
+# This values MUST be correct in order for the code generators to
+# generate the correct code/support files.
+#
+
+# REQUIRED PROPERTIES
+jsp.version=2.1
+taglib.shortname=h
+taglib.displayname=HTML_BASIC
+taglib.uri=http://xmlns.jcp.org/jsf/html
+taglib.file.name=facelets_html_basic.tld
+target.package=
+renderkit.id=HTML_BASIC
+base.output.dir=build.pre-maven-rename/generate
+
+#OPTIONAL PROPERTIES
+taglib.include=build/TAG-DEF-21.txt
+taglib.description=This tag library contains JavaServer Faces component tags for all\n\
+                   UIComponent + HTML RenderKit Renderer combinations defined in the\n\
+                   JavaServer Faces Specification.
+copyright=DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.\n\
+          \n\
+          Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.\n\
+          \n\
+          The contents of this file are subject to the terms of either the GNU\n\
+          General Public License Version 2 only ("GPL") or the Common Development\n\
+          and Distribution License("CDDL") (collectively, the "License").  You\n\
+          may not use this file except in compliance with the License.  You can\n\
+          obtain a copy of the License at\n\
+          https://glassfish.java.net/public/CDDL+GPL_1_1.html\n\
+          or packager/legal/LICENSE.txt.  See the License for the specific\n\
+          language governing permissions and limitations under the License.\n\
+          \n\
+          When distributing the software, include this License Header Notice in each\n\
+          file and include the License file at packager/legal/LICENSE.txt.\n\
+          \n\
+          GPL Classpath Exception:\n\
+          Oracle designates this particular file as subject to the "Classpath"\n\
+          exception as provided by Oracle in the GPL Version 2 section of the License\n\
+          file that accompanied this code.\n\
+          \n\
+          Modifications:\n\
+          If applicable, add the following below the License Header, with the fields\n\
+          enclosed by brackets [] replaced by your own identifying information:\n\
+          "Portions Copyright [year] [name of copyright owner]"\n\
+          \n\
+          Contributor(s):\n\
+          If you wish your version of this file to be governed by only the CDDL or\n\
+          only the GPL Version 2, indicate your decision by adding "[Contributor]\n\
+          elects to include this software in this distribution under the [CDDL or GPL\n\
+          Version 2] license."  If you don't indicate a single choice of license, a\n\
+          recipient has the option to distribute your version of this file under\n\
+          either the CDDL, the GPL Version 2 or to extend the choice of license to\n\
+          its licensees as provided above.  However, if you add GPL Version 2 code\n\
+          and therefore, elected the GPL Version 2 license, then the option applies\n\
+          only if the new code is made subject to such option by the copyright\n\
+          holder.\n
diff --git a/jsf-tools/conf/FaceletsHtmlBasicTaglib21.properties b/jsf-tools/conf/FaceletsHtmlBasicTaglib21.properties
index b5c026b..d02d6cf 100644
--- a/jsf-tools/conf/FaceletsHtmlBasicTaglib21.properties
+++ b/jsf-tools/conf/FaceletsHtmlBasicTaglib21.properties
@@ -1,41 +1,41 @@
 #
-# Copyright 2004 Sun Microsystems, Inc. All Rights Reserved.
-#
-# Redistribution and use in source and binary forms, with or
-# without modification, are permitted provided that the following
-# conditions are met:
-#
-# - Redistributions of source code must retain the above copyright
-#   notice, this list of conditions and the following disclaimer.
-#
-# - Redistribution in binary form must reproduce the above
-#   copyright notice, this list of conditions and the following
-#   disclaimer in the documentation and/or other materials
-#   provided with the distribution.
-#
-# Neither the name of Sun Microsystems, Inc. or the names of
-# contributors may be used to endorse or promote products derived
-# from this software without specific prior written permission.
-#
-# This software is provided "AS IS," without a warranty of any
-# kind. ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND
-# WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY
-# EXCLUDED. SUN AND ITS LICENSORS SHALL NOT BE LIABLE FOR ANY
-# DAMAGES OR LIABILITIES SUFFERED BY LICENSEE AS A RESULT OF OR
-# RELATING TO USE, MODIFICATION OR DISTRIBUTION OF THIS SOFTWARE OR
-# ITS DERIVATIVES. IN NO EVENT WILL SUN OR ITS LICENSORS BE LIABLE
-# FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT,
-# SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER
-# CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF
-# THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF SUN HAS
-# BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
-#
-# You acknowledge that this software is not designed, licensed or
-# intended for use in the design, construction, operation or
-# maintenance of any nuclear facility.
-#
-#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
 #
 # PROPERTY DESCRIPTIONS
 #
@@ -55,6 +55,8 @@
 # taglib.shortname - specifies the shortname used to identifiy the tag library
 #                    by.  (REQUIRED)
 #
+# taglib.displayname - specifies the display-name used to identifiy the tag library
+#                    by.  (OPTIONAL)
 # taglib.uri - The known URI of the generated tag library. (REQUIRED)
 #
 # taglib.description - A description of the tag library.  (OPTIONAL)
@@ -87,7 +89,8 @@
 # REQUIRED PROPERTIES
 jsp.version=2.1
 taglib.shortname=h
-taglib.uri=http://java.sun.com/jsf/html
+taglib.displayname=HTML_BASIC
+taglib.uri=http://xmlns.jcp.org/jsf/html
 taglib.file.name=facelets_html_basic.tld
 target.package=
 renderkit.id=HTML_BASIC
@@ -100,27 +103,31 @@ taglib.description=This tag library contains JavaServer Faces component tags for
                    JavaServer Faces Specification.
 copyright=DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.\n\
           \n\
-          Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.\n\
+          Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.\n\
           \n\
           The contents of this file are subject to the terms of either the GNU\n\
           General Public License Version 2 only ("GPL") or the Common Development\n\
           and Distribution License("CDDL") (collectively, the "License").  You\n\
-          may not use this file except in compliance with the License. You can obtain\n\
-          a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html\n\
-          or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific\n\
+          may not use this file except in compliance with the License.  You can\n\
+          obtain a copy of the License at\n\
+          https://glassfish.java.net/public/CDDL+GPL_1_1.html\n\
+          or packager/legal/LICENSE.txt.  See the License for the specific\n\
           language governing permissions and limitations under the License.\n\
           \n\
           When distributing the software, include this License Header Notice in each\n\
-          file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.\n\
-          Sun designates this particular file as subject to the "Classpath" exception\n\
-          as provided by Sun in the GPL Version 2 section of the License file that\n\
-          accompanied this code.  If applicable, add the following below the License\n\
-          Header, with the fields enclosed by brackets [] replaced by your own\n\
-          identifying information: "Portions Copyrighted [year]\n\
-          [name of copyright owner]"\n\
+          file and include the License file at packager/legal/LICENSE.txt.\n\
           \n\
-          Contributor(s):\n\
+          GPL Classpath Exception:\n\
+          Oracle designates this particular file as subject to the "Classpath"\n\
+          exception as provided by Oracle in the GPL Version 2 section of the License\n\
+          file that accompanied this code.\n\
           \n\
+          Modifications:\n\
+          If applicable, add the following below the License Header, with the fields\n\
+          enclosed by brackets [] replaced by your own identifying information:\n\
+          "Portions Copyright [year] [name of copyright owner]"\n\
+          \n\
+          Contributor(s):\n\
           If you wish your version of this file to be governed by only the CDDL or\n\
           only the GPL Version 2, indicate your decision by adding "[Contributor]\n\
           elects to include this software in this distribution under the [CDDL or GPL\n\
@@ -130,4 +137,4 @@ copyright=DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.\n\
           its licensees as provided above.  However, if you add GPL Version 2 code\n\
           and therefore, elected the GPL Version 2 license, then the option applies\n\
           only if the new code is made subject to such option by the copyright\n\
-          holder.\n\
+          holder.\n
diff --git a/jsf-tools/conf/HtmlBasicTaglib12.properties b/jsf-tools/conf/HtmlBasicTaglib12.properties
index e625c55..86d76ba 100644
--- a/jsf-tools/conf/HtmlBasicTaglib12.properties
+++ b/jsf-tools/conf/HtmlBasicTaglib12.properties
@@ -1,40 +1,41 @@
 #
-# Copyright 2004 Sun Microsystems, Inc. All Rights Reserved.
-#
-# Redistribution and use in source and binary forms, with or
-# without modification, are permitted provided that the following
-# conditions are met:
-#
-# - Redistributions of source code must retain the above copyright
-#   notice, this list of conditions and the following disclaimer.
-#
-# - Redistribution in binary form must reproduce the above
-#   copyright notice, this list of conditions and the following
-#   disclaimer in the documentation and/or other materials
-#   provided with the distribution.
-#
-# Neither the name of Sun Microsystems, Inc. or the names of
-# contributors may be used to endorse or promote products derived
-# from this software without specific prior written permission.
-#
-# This software is provided "AS IS," without a warranty of any
-# kind. ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND
-# WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY
-# EXCLUDED. SUN AND ITS LICENSORS SHALL NOT BE LIABLE FOR ANY
-# DAMAGES OR LIABILITIES SUFFERED BY LICENSEE AS A RESULT OF OR
-# RELATING TO USE, MODIFICATION OR DISTRIBUTION OF THIS SOFTWARE OR
-# ITS DERIVATIVES. IN NO EVENT WILL SUN OR ITS LICENSORS BE LIABLE
-# FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT,
-# SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER
-# CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF
-# THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF SUN HAS
-# BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
-#
-# You acknowledge that this software is not designed, licensed or
-# intended for use in the design, construction, operation or
-# maintenance of any nuclear facility.
-#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
 #
 #
 # PROPERTY DESCRIPTIONS
@@ -115,27 +116,31 @@ value.binding.properties=immediate|value|first|rows|rowIndex|required| \
 method.binding.properties=action|actionListener|validator|valueChangeListener
 copyright=copyright=DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.\n\
           \n\
-          Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.\n\
+          Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.\n\
           \n\
           The contents of this file are subject to the terms of either the GNU\n\
           General Public License Version 2 only ("GPL") or the Common Development\n\
           and Distribution License("CDDL") (collectively, the "License").  You\n\
-          may not use this file except in compliance with the License. You can obtain\n\
-          a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html\n\
-          or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific\n\
+          may not use this file except in compliance with the License.  You can\n\
+          obtain a copy of the License at\n\
+          https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html\n\
+          or packager/legal/LICENSE.txt.  See the License for the specific\n\
           language governing permissions and limitations under the License.\n\
           \n\
           When distributing the software, include this License Header Notice in each\n\
-          file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.\n\
-          Sun designates this particular file as subject to the "Classpath" exception\n\
-          as provided by Sun in the GPL Version 2 section of the License file that\n\
-          accompanied this code.  If applicable, add the following below the License\n\
-          Header, with the fields enclosed by brackets [] replaced by your own\n\
-          identifying information: "Portions Copyrighted [year]\n\
-          [name of copyright owner]"\n\
+          file and include the License file at packager/legal/LICENSE.txt.\n\
           \n\
-          Contributor(s):\n\
+          GPL Classpath Exception:\n\
+          Oracle designates this particular file as subject to the "Classpath"\n\
+          exception as provided by Oracle in the GPL Version 2 section of the License\n\
+          file that accompanied this code.\n\
           \n\
+          Modifications:\n\
+          If applicable, add the following below the License Header, with the fields\n\
+          enclosed by brackets [] replaced by your own identifying information:\n\
+          "Portions Copyright [year] [name of copyright owner]"\n\
+          \n\
+          Contributor(s):\n\
           If you wish your version of this file to be governed by only the CDDL or\n\
           only the GPL Version 2, indicate your decision by adding "[Contributor]\n\
           elects to include this software in this distribution under the [CDDL or GPL\n\
@@ -145,4 +150,4 @@ copyright=copyright=DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.\n\
           its licensees as provided above.  However, if you add GPL Version 2 code\n\
           and therefore, elected the GPL Version 2 license, then the option applies\n\
           only if the new code is made subject to such option by the copyright\n\
-          holder.\n\
+          holder.\n
diff --git a/jsf-tools/conf/HtmlBasicTaglib21.pre-maven-rename.properties b/jsf-tools/conf/HtmlBasicTaglib21.pre-maven-rename.properties
new file mode 100644
index 0000000..c0c22a8
--- /dev/null
+++ b/jsf-tools/conf/HtmlBasicTaglib21.pre-maven-rename.properties
@@ -0,0 +1,139 @@
+#
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+# PROPERTY DESCRIPTIONS
+#
+# base.output.dir - specifies the base directory in which to store
+#                   the generated output.  This must be a relative path.
+#                   If the directory does not exist, it will be created.
+#                   (REQUIRED)
+#
+# jsp.version - defines the version of JSP the minimum version of JSP
+#               this tag library will support.  Valid values are
+#               1.2 and 2.1. (REQUIRED)
+#
+#
+# renderkit.name - specifies the name of the Renderkit for which these tags
+#                  are being generated. (REQUIRED)
+#
+# taglib.shortname - specifies the shortname used to identifiy the tag library
+#                    by.  (REQUIRED)
+#
+# taglib.uri - The known URI of the generated tag library. (REQUIRED)
+#
+# taglib.description - A description of the tag library.  (OPTIONAL)
+#
+#
+# taglib.file.name - specifies the name of the generated TLD. (REQUIRED)
+#
+# taglib.include - specifies an optional tag definitions to be included
+#                  towards the end of the generated TLD.  If the path
+#                  doesn't start with a '/' (use '/' as the
+#                  path separator on Win32 platforms - e.g. c:/some/path/TAGDEF),
+#                  the path will be considered relative from the directory in
+#                  which the ant task is invoked. (OPTIONAL)
+#
+# target.package - specifies the target java package of the generated code.
+#                  (REQUIRED)
+#
+#
+# copyright = Copyright to be included in all generated files.
+#
+
+#
+#                        !!! IMPORTANT !!!
+# This is the properties file necessary to generate HtmlComponents and
+# tag libraries for the html basic renderkit.  
+# This values MUST be correct in order for the code generators to
+# generate the correct code/support files.
+#
+
+# REQUIRED PROPERTIES
+jsp.version=2.1
+taglib.shortname=h
+taglib.uri=http://java.sun.com/jsf/html
+taglib.file.name=html_basic.tld
+target.package=com.sun.faces.taglib.html_basic
+renderkit.id=HTML_BASIC
+base.output.dir=build.pre-maven-rename/generate
+
+#OPTIONAL PROPERTIES
+taglib.excludedRendererTypes=javax.faces.passthrough.Element
+taglib.include=build/TAG-DEF-21.txt
+taglib.description=This tag library contains JavaServer Faces component tags for all\n\
+                   UIComponent + HTML RenderKit Renderer combinations defined in the\n\
+                   JavaServer Faces Specification.
+copyright=DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.\n\
+          \n\
+          Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.\n\
+          \n\
+          The contents of this file are subject to the terms of either the GNU\n\
+          General Public License Version 2 only ("GPL") or the Common Development\n\
+          and Distribution License("CDDL") (collectively, the "License").  You\n\
+          may not use this file except in compliance with the License.  You can\n\
+          obtain a copy of the License at\n\
+          https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html\n\
+          or packager/legal/LICENSE.txt.  See the License for the specific\n\
+          language governing permissions and limitations under the License.\n\
+          \n\
+          When distributing the software, include this License Header Notice in each\n\
+          file and include the License file at packager/legal/LICENSE.txt.\n\
+          \n\
+          GPL Classpath Exception:\n\
+          Oracle designates this particular file as subject to the "Classpath"\n\
+          exception as provided by Oracle in the GPL Version 2 section of the License\n\
+          file that accompanied this code.\n\
+          \n\
+          Modifications:\n\
+          If applicable, add the following below the License Header, with the fields\n\
+          enclosed by brackets [] replaced by your own identifying information:\n\
+          "Portions Copyright [year] [name of copyright owner]"\n\
+          \n\
+          Contributor(s):\n\
+          If you wish your version of this file to be governed by only the CDDL or\n\
+          only the GPL Version 2, indicate your decision by adding "[Contributor]\n\
+          elects to include this software in this distribution under the [CDDL or GPL\n\
+          Version 2] license."  If you don't indicate a single choice of license, a\n\
+          recipient has the option to distribute your version of this file under\n\
+          either the CDDL, the GPL Version 2 or to extend the choice of license to\n\
+          its licensees as provided above.  However, if you add GPL Version 2 code\n\
+          and therefore, elected the GPL Version 2 license, then the option applies\n\
+          only if the new code is made subject to such option by the copyright\n\
+          holder.\n
diff --git a/jsf-tools/conf/HtmlBasicTaglib21.properties b/jsf-tools/conf/HtmlBasicTaglib21.properties
index 75e2d4b..b28b5c9 100644
--- a/jsf-tools/conf/HtmlBasicTaglib21.properties
+++ b/jsf-tools/conf/HtmlBasicTaglib21.properties
@@ -1,41 +1,42 @@
 #
-# Copyright 2004 Sun Microsystems, Inc. All Rights Reserved.
-#
-# Redistribution and use in source and binary forms, with or
-# without modification, are permitted provided that the following
-# conditions are met:
-#
-# - Redistributions of source code must retain the above copyright
-#   notice, this list of conditions and the following disclaimer.
-#
-# - Redistribution in binary form must reproduce the above
-#   copyright notice, this list of conditions and the following
-#   disclaimer in the documentation and/or other materials
-#   provided with the distribution.
-#
-# Neither the name of Sun Microsystems, Inc. or the names of
-# contributors may be used to endorse or promote products derived
-# from this software without specific prior written permission.
-#
-# This software is provided "AS IS," without a warranty of any
-# kind. ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND
-# WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY
-# EXCLUDED. SUN AND ITS LICENSORS SHALL NOT BE LIABLE FOR ANY
-# DAMAGES OR LIABILITIES SUFFERED BY LICENSEE AS A RESULT OF OR
-# RELATING TO USE, MODIFICATION OR DISTRIBUTION OF THIS SOFTWARE OR
-# ITS DERIVATIVES. IN NO EVENT WILL SUN OR ITS LICENSORS BE LIABLE
-# FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT,
-# SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER
-# CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF
-# THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF SUN HAS
-# BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
-#
-# You acknowledge that this software is not designed, licensed or
-# intended for use in the design, construction, operation or
-# maintenance of any nuclear facility.
-#
 #
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
 #
 # PROPERTY DESCRIPTIONS
 #
@@ -94,33 +95,38 @@ renderkit.id=HTML_BASIC
 base.output.dir=build/generate
 
 #OPTIONAL PROPERTIES
+taglib.excludedRendererTypes=javax.faces.passthrough.Element
 taglib.include=build/TAG-DEF-21.txt
 taglib.description=This tag library contains JavaServer Faces component tags for all\n\
                    UIComponent + HTML RenderKit Renderer combinations defined in the\n\
                    JavaServer Faces Specification.
 copyright=DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.\n\
           \n\
-          Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.\n\
+          Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.\n\
           \n\
           The contents of this file are subject to the terms of either the GNU\n\
           General Public License Version 2 only ("GPL") or the Common Development\n\
           and Distribution License("CDDL") (collectively, the "License").  You\n\
-          may not use this file except in compliance with the License. You can obtain\n\
-          a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html\n\
-          or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific\n\
+          may not use this file except in compliance with the License.  You can\n\
+          obtain a copy of the License at\n\
+          https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html\n\
+          or packager/legal/LICENSE.txt.  See the License for the specific\n\
           language governing permissions and limitations under the License.\n\
           \n\
           When distributing the software, include this License Header Notice in each\n\
-          file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.\n\
-          Sun designates this particular file as subject to the "Classpath" exception\n\
-          as provided by Sun in the GPL Version 2 section of the License file that\n\
-          accompanied this code.  If applicable, add the following below the License\n\
-          Header, with the fields enclosed by brackets [] replaced by your own\n\
-          identifying information: "Portions Copyrighted [year]\n\
-          [name of copyright owner]"\n\
+          file and include the License file at packager/legal/LICENSE.txt.\n\
           \n\
-          Contributor(s):\n\
+          GPL Classpath Exception:\n\
+          Oracle designates this particular file as subject to the "Classpath"\n\
+          exception as provided by Oracle in the GPL Version 2 section of the License\n\
+          file that accompanied this code.\n\
           \n\
+          Modifications:\n\
+          If applicable, add the following below the License Header, with the fields\n\
+          enclosed by brackets [] replaced by your own identifying information:\n\
+          "Portions Copyright [year] [name of copyright owner]"\n\
+          \n\
+          Contributor(s):\n\
           If you wish your version of this file to be governed by only the CDDL or\n\
           only the GPL Version 2, indicate your decision by adding "[Contributor]\n\
           elects to include this software in this distribution under the [CDDL or GPL\n\
@@ -130,4 +136,4 @@ copyright=DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.\n\
           its licensees as provided above.  However, if you add GPL Version 2 code\n\
           and therefore, elected the GPL Version 2 license, then the option applies\n\
           only if the new code is made subject to such option by the copyright\n\
-          holder.\n\
+          holder.\n
diff --git a/jsf-tools/doc/mockup/DEFAULT/CommandLink.html b/jsf-tools/doc/mockup/DEFAULT/CommandLink.html
index 36714a8..ec2deac 100644
--- a/jsf-tools/doc/mockup/DEFAULT/CommandLink.html
+++ b/jsf-tools/doc/mockup/DEFAULT/CommandLink.html
@@ -1,4 +1,46 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN""http://www.w3.org/TR/REC-html40/loose.dtd">
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
 <!--NewPage-->
 <html>
 <head>
diff --git a/jsf-tools/doc/mockup/DEFAULT/renderkit-summary.html b/jsf-tools/doc/mockup/DEFAULT/renderkit-summary.html
index 08175cf..ea3c66a 100644
--- a/jsf-tools/doc/mockup/DEFAULT/renderkit-summary.html
+++ b/jsf-tools/doc/mockup/DEFAULT/renderkit-summary.html
@@ -1,4 +1,46 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN""http://www.w3.org/TR/REC-html40/loose.dtd">
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
 <!--NewPage-->
 <HTML>
 <HEAD>
diff --git a/jsf-tools/doc/mockup/allrenderers-frame.html b/jsf-tools/doc/mockup/allrenderers-frame.html
index 6b7088d..eb848df 100644
--- a/jsf-tools/doc/mockup/allrenderers-frame.html
+++ b/jsf-tools/doc/mockup/allrenderers-frame.html
@@ -1,4 +1,46 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN""http://www.w3.org/TR/REC-html40/loose.dtd">
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
 <!--NewPage-->
 <HTML>
 <HEAD>
diff --git a/jsf-tools/doc/mockup/index.html b/jsf-tools/doc/mockup/index.html
index c925ef4..70f5728 100644
--- a/jsf-tools/doc/mockup/index.html
+++ b/jsf-tools/doc/mockup/index.html
@@ -1,4 +1,46 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN""http://www.w3.org/TR/REC-html40/loose.dtd">
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
 <!--NewPage-->
 <html>
 <head>
diff --git a/jsf-tools/doc/mockup/stylesheet.css b/jsf-tools/doc/mockup/stylesheet.css
index ab714da..cce5750 100644
--- a/jsf-tools/doc/mockup/stylesheet.css
+++ b/jsf-tools/doc/mockup/stylesheet.css
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-tools/doc/standard-html-components.xsl b/jsf-tools/doc/standard-html-components.xsl
index 6c8fce7..5aff691 100644
--- a/jsf-tools/doc/standard-html-components.xsl
+++ b/jsf-tools/doc/standard-html-components.xsl
@@ -1,28 +1,44 @@
 <?xml version="1.0" encoding="utf-8"?>
-
 <!--
- The contents of this file are subject to the terms
- of the Common Development and Distribution License
- (the License). You may not use this file except in
- compliance with the License.
- 
- You can obtain a copy of the License at
- https://javaserverfaces.dev.java.net/CDDL.html or
- legal/CDDLv1.0.txt. 
- See the License for the specific language governing
- permission and limitations under the License.
- 
- When distributing Covered Code, include this CDDL
- Header Notice in each file and include the License file
- at legal/CDDLv1.0.txt.    
- If applicable, add the following below the CDDL Header,
- with the fields enclosed by brackets [] replaced by
- your own identifying information:
- "Portions Copyrighted [year] [name of copyright owner]"
- 
- [Name of File] [ver.__] [Date]
- 
- Copyright 2005-2010 Sun Microsystems Inc. All Rights Reserved
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2005-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
 
 <!-- Content Stylesheet for Outstanding Issues Detail List -->
diff --git a/jsf-tools/doc/standard-html-renderkit-specification.xsl b/jsf-tools/doc/standard-html-renderkit-specification.xsl
index adcc82b..aafa444 100644
--- a/jsf-tools/doc/standard-html-renderkit-specification.xsl
+++ b/jsf-tools/doc/standard-html-renderkit-specification.xsl
@@ -1,28 +1,44 @@
 <?xml version="1.0" encoding="ISO-8859-1"?>
-
 <!--
- The contents of this file are subject to the terms
- of the Common Development and Distribution License
- (the License). You may not use this file except in
- compliance with the License.
- 
- You can obtain a copy of the License at
- https://javaserverfaces.dev.java.net/CDDL.html or
- legal/CDDLv1.0.txt. 
- See the License for the specific language governing
- permission and limitations under the License.
- 
- When distributing Covered Code, include this CDDL
- Header Notice in each file and include the License file
- at legal/CDDLv1.0.txt.    
- If applicable, add the following below the CDDL Header,
- with the fields enclosed by brackets [] replaced by
- your own identifying information:
- "Portions Copyrighted [year] [name of copyright owner]"
- 
- [Name of File] [ver.__] [Date]
- 
- Copyright 2005 Sun Microsystems Inc. All Rights Reserved
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2005-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
 -->
 
 <xsl:stylesheet version="1.0"
diff --git a/jsf-tools/pom.xml b/jsf-tools/pom.xml
new file mode 100644
index 0000000..7799b1a
--- /dev/null
+++ b/jsf-tools/pom.xml
@@ -0,0 +1,135 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" 
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <groupId>com.sun.faces.build</groupId>
+    <artifactId>jsf-tools</artifactId>
+    <version>2.2.8</version>
+    <description>
+        Java code executed at build time
+    </description>
+    <name>Mojarra JSF Tools</name>
+    <packaging>jar</packaging>
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>2.3.2</version>
+                <configuration>
+                    <source>1.6</source>
+                    <target>1.6</target>
+                    <encoding>${project.build.sourceEncoding}</encoding>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-resources-plugin</artifactId>
+                <version>2.4.3</version>
+                <configuration>
+                    <encoding>${project.build.sourceEncoding}</encoding>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.ant</groupId>
+            <artifactId>ant</artifactId>
+            <version>1.8.2</version>
+            <scope>compile</scope>
+            <type>jar</type>
+        </dependency>
+        <dependency>
+            <groupId>commons-digester</groupId>
+            <artifactId>commons-digester</artifactId>
+            <version>2.0</version>
+            <scope>compile</scope>
+            <type>jar</type>
+        </dependency>
+    </dependencies>
+    <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+
+  <profiles>
+    <profile>
+      <id>default-tools.jar</id>
+      <activation>
+        <property>
+          <name>java.vendor</name>
+          <value>Sun Microsystems Inc.</value>
+        </property>
+      </activation>
+      <dependencies>
+        <dependency>
+          <groupId>com.sun</groupId>
+          <artifactId>tools</artifactId>
+          <version>1.6.0</version>
+          <scope>system</scope>
+          <systemPath>${java.home}/../lib/tools.jar</systemPath>
+        </dependency>
+      </dependencies>
+    </profile>
+    <profile>
+      <id>default-tools17.jar</id>
+      <activation>
+        <jdk>1.7</jdk>
+      </activation>
+      <dependencies>
+        <dependency>
+          <groupId>com.sun</groupId>
+          <artifactId>tools</artifactId>
+          <version>1.7.0</version>
+          <scope>system</scope>
+          <systemPath>${java.home}/../lib/tools.jar</systemPath>
+        </dependency>
+      </dependencies>
+    </profile>
+  </profiles>
+
+</project>
diff --git a/jsf-tools/src/main/java/com/sun/faces/ant/AbstractGeneratorTask.java b/jsf-tools/src/main/java/com/sun/faces/ant/AbstractGeneratorTask.java
index 49d0840..29fc4c0 100644
--- a/jsf-tools/src/main/java/com/sun/faces/ant/AbstractGeneratorTask.java
+++ b/jsf-tools/src/main/java/com/sun/faces/ant/AbstractGeneratorTask.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-tools/src/main/java/com/sun/faces/ant/AttributeManagerGenTask.java b/jsf-tools/src/main/java/com/sun/faces/ant/AttributeManagerGenTask.java
index 3fe1579..f8b7954 100644
--- a/jsf-tools/src/main/java/com/sun/faces/ant/AttributeManagerGenTask.java
+++ b/jsf-tools/src/main/java/com/sun/faces/ant/AttributeManagerGenTask.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-tools/src/main/java/com/sun/faces/ant/ComponentGenTask.java b/jsf-tools/src/main/java/com/sun/faces/ant/ComponentGenTask.java
index 43fe606..2deb50f 100644
--- a/jsf-tools/src/main/java/com/sun/faces/ant/ComponentGenTask.java
+++ b/jsf-tools/src/main/java/com/sun/faces/ant/ComponentGenTask.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-tools/src/main/java/com/sun/faces/ant/FaceletsTLDGenTask.java b/jsf-tools/src/main/java/com/sun/faces/ant/FaceletsTLDGenTask.java
index 4af99dc..c8cc230 100644
--- a/jsf-tools/src/main/java/com/sun/faces/ant/FaceletsTLDGenTask.java
+++ b/jsf-tools/src/main/java/com/sun/faces/ant/FaceletsTLDGenTask.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-tools/src/main/java/com/sun/faces/ant/RenderkitDocGenTask.java b/jsf-tools/src/main/java/com/sun/faces/ant/RenderkitDocGenTask.java
index 657fb0b..e3fdfd5 100644
--- a/jsf-tools/src/main/java/com/sun/faces/ant/RenderkitDocGenTask.java
+++ b/jsf-tools/src/main/java/com/sun/faces/ant/RenderkitDocGenTask.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-tools/src/main/java/com/sun/faces/ant/TaglibGenTask.java b/jsf-tools/src/main/java/com/sun/faces/ant/TaglibGenTask.java
index 768d1f7..5f99f39 100644
--- a/jsf-tools/src/main/java/com/sun/faces/ant/TaglibGenTask.java
+++ b/jsf-tools/src/main/java/com/sun/faces/ant/TaglibGenTask.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-tools/src/main/java/com/sun/faces/ant/ValidateTask.java b/jsf-tools/src/main/java/com/sun/faces/ant/ValidateTask.java
index 8332986..f2b337f 100644
--- a/jsf-tools/src/main/java/com/sun/faces/ant/ValidateTask.java
+++ b/jsf-tools/src/main/java/com/sun/faces/ant/ValidateTask.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-tools/src/main/java/com/sun/faces/config/DigesterFactory.java b/jsf-tools/src/main/java/com/sun/faces/config/DigesterFactory.java
index d84f502..2f49cac 100644
--- a/jsf-tools/src/main/java/com/sun/faces/config/DigesterFactory.java
+++ b/jsf-tools/src/main/java/com/sun/faces/config/DigesterFactory.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -34,7 +38,6 @@
  * holder.
  */
 
-
 package com.sun.faces.config;
 
 import javax.xml.parsers.ParserConfigurationException;
@@ -329,14 +332,26 @@ public class DigesterFactory {
                 "/com/sun/faces/web-facesconfig_2_0.xsd"
             },
             {
+                "web-facesconfig_2_2.xsd",
+                "/com/sun/faces/web-facesconfig_2_2.xsd"
+            },
+            {
                 "javaee_5.xsd",
                 "/com/sun/faces/javaee_5.xsd"
             },
             {
+                "javaee_7.xsd",
+                "/com/sun/faces/javaee_7.xsd"
+            },
+            {
                 "javaee_web_services_client_1_2.xsd",
                 "/com/sun/faces/javaee_web_services_client_1_2.xsd"
             },
             {
+                "javaee_web_services_client_1_4.xsd",
+                "/com/sun/faces/javaee_web_services_client_1_4.xsd"
+            },
+            {
                 "xml.xsd",
                 "/com/sun/faces/xml.xsd"
             }
diff --git a/jsf-tools/src/main/java/com/sun/faces/config/beans/ApplicationBean.java b/jsf-tools/src/main/java/com/sun/faces/config/beans/ApplicationBean.java
index e2dd273..e6a48e3 100644
--- a/jsf-tools/src/main/java/com/sun/faces/config/beans/ApplicationBean.java
+++ b/jsf-tools/src/main/java/com/sun/faces/config/beans/ApplicationBean.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-tools/src/main/java/com/sun/faces/config/beans/AttributeBean.java b/jsf-tools/src/main/java/com/sun/faces/config/beans/AttributeBean.java
index 291b44b..4b02b95 100644
--- a/jsf-tools/src/main/java/com/sun/faces/config/beans/AttributeBean.java
+++ b/jsf-tools/src/main/java/com/sun/faces/config/beans/AttributeBean.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-tools/src/main/java/com/sun/faces/config/beans/AttributeHolder.java b/jsf-tools/src/main/java/com/sun/faces/config/beans/AttributeHolder.java
index fc8e134..8d399e4 100644
--- a/jsf-tools/src/main/java/com/sun/faces/config/beans/AttributeHolder.java
+++ b/jsf-tools/src/main/java/com/sun/faces/config/beans/AttributeHolder.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-tools/src/main/java/com/sun/faces/config/beans/ComponentBean.java b/jsf-tools/src/main/java/com/sun/faces/config/beans/ComponentBean.java
index 3832f88..da5997f 100644
--- a/jsf-tools/src/main/java/com/sun/faces/config/beans/ComponentBean.java
+++ b/jsf-tools/src/main/java/com/sun/faces/config/beans/ComponentBean.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-tools/src/main/java/com/sun/faces/config/beans/ConverterBean.java b/jsf-tools/src/main/java/com/sun/faces/config/beans/ConverterBean.java
index 4e83ce9..6173c09 100644
--- a/jsf-tools/src/main/java/com/sun/faces/config/beans/ConverterBean.java
+++ b/jsf-tools/src/main/java/com/sun/faces/config/beans/ConverterBean.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-tools/src/main/java/com/sun/faces/config/beans/DescriptionBean.java b/jsf-tools/src/main/java/com/sun/faces/config/beans/DescriptionBean.java
index 137f024..41a565f 100644
--- a/jsf-tools/src/main/java/com/sun/faces/config/beans/DescriptionBean.java
+++ b/jsf-tools/src/main/java/com/sun/faces/config/beans/DescriptionBean.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-tools/src/main/java/com/sun/faces/config/beans/DisplayNameBean.java b/jsf-tools/src/main/java/com/sun/faces/config/beans/DisplayNameBean.java
index 55db9fb..caec84c 100644
--- a/jsf-tools/src/main/java/com/sun/faces/config/beans/DisplayNameBean.java
+++ b/jsf-tools/src/main/java/com/sun/faces/config/beans/DisplayNameBean.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-tools/src/main/java/com/sun/faces/config/beans/FacesConfigBean.java b/jsf-tools/src/main/java/com/sun/faces/config/beans/FacesConfigBean.java
index 907cc88..3ece1e2 100644
--- a/jsf-tools/src/main/java/com/sun/faces/config/beans/FacesConfigBean.java
+++ b/jsf-tools/src/main/java/com/sun/faces/config/beans/FacesConfigBean.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-tools/src/main/java/com/sun/faces/config/beans/FactoryBean.java b/jsf-tools/src/main/java/com/sun/faces/config/beans/FactoryBean.java
index 0aa2293..759ce80 100644
--- a/jsf-tools/src/main/java/com/sun/faces/config/beans/FactoryBean.java
+++ b/jsf-tools/src/main/java/com/sun/faces/config/beans/FactoryBean.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-tools/src/main/java/com/sun/faces/config/beans/FeatureBean.java b/jsf-tools/src/main/java/com/sun/faces/config/beans/FeatureBean.java
index 260bd78..873c198 100644
--- a/jsf-tools/src/main/java/com/sun/faces/config/beans/FeatureBean.java
+++ b/jsf-tools/src/main/java/com/sun/faces/config/beans/FeatureBean.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-tools/src/main/java/com/sun/faces/config/beans/IconBean.java b/jsf-tools/src/main/java/com/sun/faces/config/beans/IconBean.java
index 9a659e5..f5b91b8 100644
--- a/jsf-tools/src/main/java/com/sun/faces/config/beans/IconBean.java
+++ b/jsf-tools/src/main/java/com/sun/faces/config/beans/IconBean.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-tools/src/main/java/com/sun/faces/config/beans/LifecycleBean.java b/jsf-tools/src/main/java/com/sun/faces/config/beans/LifecycleBean.java
index 5b08a14..b6c5ce9 100644
--- a/jsf-tools/src/main/java/com/sun/faces/config/beans/LifecycleBean.java
+++ b/jsf-tools/src/main/java/com/sun/faces/config/beans/LifecycleBean.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-tools/src/main/java/com/sun/faces/config/beans/ListEntriesBean.java b/jsf-tools/src/main/java/com/sun/faces/config/beans/ListEntriesBean.java
index ee9e5df..751cc85 100644
--- a/jsf-tools/src/main/java/com/sun/faces/config/beans/ListEntriesBean.java
+++ b/jsf-tools/src/main/java/com/sun/faces/config/beans/ListEntriesBean.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-tools/src/main/java/com/sun/faces/config/beans/ListEntriesHolder.java b/jsf-tools/src/main/java/com/sun/faces/config/beans/ListEntriesHolder.java
index 8fde98e..8599eba 100644
--- a/jsf-tools/src/main/java/com/sun/faces/config/beans/ListEntriesHolder.java
+++ b/jsf-tools/src/main/java/com/sun/faces/config/beans/ListEntriesHolder.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-tools/src/main/java/com/sun/faces/config/beans/ListEntryBean.java b/jsf-tools/src/main/java/com/sun/faces/config/beans/ListEntryBean.java
index fd152ea..6b10fc6 100644
--- a/jsf-tools/src/main/java/com/sun/faces/config/beans/ListEntryBean.java
+++ b/jsf-tools/src/main/java/com/sun/faces/config/beans/ListEntryBean.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-tools/src/main/java/com/sun/faces/config/beans/LocaleConfigBean.java b/jsf-tools/src/main/java/com/sun/faces/config/beans/LocaleConfigBean.java
index e30bb03..b031753 100644
--- a/jsf-tools/src/main/java/com/sun/faces/config/beans/LocaleConfigBean.java
+++ b/jsf-tools/src/main/java/com/sun/faces/config/beans/LocaleConfigBean.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-tools/src/main/java/com/sun/faces/config/beans/ManagedBeanBean.java b/jsf-tools/src/main/java/com/sun/faces/config/beans/ManagedBeanBean.java
index e53dee2..442eeb3 100644
--- a/jsf-tools/src/main/java/com/sun/faces/config/beans/ManagedBeanBean.java
+++ b/jsf-tools/src/main/java/com/sun/faces/config/beans/ManagedBeanBean.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-tools/src/main/java/com/sun/faces/config/beans/ManagedPropertyBean.java b/jsf-tools/src/main/java/com/sun/faces/config/beans/ManagedPropertyBean.java
index 7421abe..6832a70 100644
--- a/jsf-tools/src/main/java/com/sun/faces/config/beans/ManagedPropertyBean.java
+++ b/jsf-tools/src/main/java/com/sun/faces/config/beans/ManagedPropertyBean.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-tools/src/main/java/com/sun/faces/config/beans/MapEntriesBean.java b/jsf-tools/src/main/java/com/sun/faces/config/beans/MapEntriesBean.java
index 9bbf3a2..be13fde 100644
--- a/jsf-tools/src/main/java/com/sun/faces/config/beans/MapEntriesBean.java
+++ b/jsf-tools/src/main/java/com/sun/faces/config/beans/MapEntriesBean.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-tools/src/main/java/com/sun/faces/config/beans/MapEntriesHolder.java b/jsf-tools/src/main/java/com/sun/faces/config/beans/MapEntriesHolder.java
index 30c89fb..7f04b1e 100644
--- a/jsf-tools/src/main/java/com/sun/faces/config/beans/MapEntriesHolder.java
+++ b/jsf-tools/src/main/java/com/sun/faces/config/beans/MapEntriesHolder.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-tools/src/main/java/com/sun/faces/config/beans/MapEntryBean.java b/jsf-tools/src/main/java/com/sun/faces/config/beans/MapEntryBean.java
index c048039..a6d4789 100644
--- a/jsf-tools/src/main/java/com/sun/faces/config/beans/MapEntryBean.java
+++ b/jsf-tools/src/main/java/com/sun/faces/config/beans/MapEntryBean.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-tools/src/main/java/com/sun/faces/config/beans/NavigationCaseBean.java b/jsf-tools/src/main/java/com/sun/faces/config/beans/NavigationCaseBean.java
index b1637f7..8bdae84 100644
--- a/jsf-tools/src/main/java/com/sun/faces/config/beans/NavigationCaseBean.java
+++ b/jsf-tools/src/main/java/com/sun/faces/config/beans/NavigationCaseBean.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-tools/src/main/java/com/sun/faces/config/beans/NavigationRuleBean.java b/jsf-tools/src/main/java/com/sun/faces/config/beans/NavigationRuleBean.java
index d280593..fbd2741 100644
--- a/jsf-tools/src/main/java/com/sun/faces/config/beans/NavigationRuleBean.java
+++ b/jsf-tools/src/main/java/com/sun/faces/config/beans/NavigationRuleBean.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-tools/src/main/java/com/sun/faces/config/beans/NullValueHolder.java b/jsf-tools/src/main/java/com/sun/faces/config/beans/NullValueHolder.java
index 4783976..a5d59d3 100644
--- a/jsf-tools/src/main/java/com/sun/faces/config/beans/NullValueHolder.java
+++ b/jsf-tools/src/main/java/com/sun/faces/config/beans/NullValueHolder.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-tools/src/main/java/com/sun/faces/config/beans/PropertyBean.java b/jsf-tools/src/main/java/com/sun/faces/config/beans/PropertyBean.java
index df3250d..5578abe 100644
--- a/jsf-tools/src/main/java/com/sun/faces/config/beans/PropertyBean.java
+++ b/jsf-tools/src/main/java/com/sun/faces/config/beans/PropertyBean.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-tools/src/main/java/com/sun/faces/config/beans/PropertyHolder.java b/jsf-tools/src/main/java/com/sun/faces/config/beans/PropertyHolder.java
index 85c9fc8..c5820f7 100644
--- a/jsf-tools/src/main/java/com/sun/faces/config/beans/PropertyHolder.java
+++ b/jsf-tools/src/main/java/com/sun/faces/config/beans/PropertyHolder.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-tools/src/main/java/com/sun/faces/config/beans/ReferencedBeanBean.java b/jsf-tools/src/main/java/com/sun/faces/config/beans/ReferencedBeanBean.java
index 2166f74..421ad82 100644
--- a/jsf-tools/src/main/java/com/sun/faces/config/beans/ReferencedBeanBean.java
+++ b/jsf-tools/src/main/java/com/sun/faces/config/beans/ReferencedBeanBean.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-tools/src/main/java/com/sun/faces/config/beans/RenderKitBean.java b/jsf-tools/src/main/java/com/sun/faces/config/beans/RenderKitBean.java
index 70b512b..5e8fa06 100644
--- a/jsf-tools/src/main/java/com/sun/faces/config/beans/RenderKitBean.java
+++ b/jsf-tools/src/main/java/com/sun/faces/config/beans/RenderKitBean.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-tools/src/main/java/com/sun/faces/config/beans/RendererBean.java b/jsf-tools/src/main/java/com/sun/faces/config/beans/RendererBean.java
index 0846708..e738038 100644
--- a/jsf-tools/src/main/java/com/sun/faces/config/beans/RendererBean.java
+++ b/jsf-tools/src/main/java/com/sun/faces/config/beans/RendererBean.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-tools/src/main/java/com/sun/faces/config/beans/ResourceBundleBean.java b/jsf-tools/src/main/java/com/sun/faces/config/beans/ResourceBundleBean.java
index 4c745d1..f9c74a6 100644
--- a/jsf-tools/src/main/java/com/sun/faces/config/beans/ResourceBundleBean.java
+++ b/jsf-tools/src/main/java/com/sun/faces/config/beans/ResourceBundleBean.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-tools/src/main/java/com/sun/faces/config/beans/ValidatorBean.java b/jsf-tools/src/main/java/com/sun/faces/config/beans/ValidatorBean.java
index 3ff43fc..6ee5616 100644
--- a/jsf-tools/src/main/java/com/sun/faces/config/beans/ValidatorBean.java
+++ b/jsf-tools/src/main/java/com/sun/faces/config/beans/ValidatorBean.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-tools/src/main/java/com/sun/faces/config/rules/ApplicationRule.java b/jsf-tools/src/main/java/com/sun/faces/config/rules/ApplicationRule.java
index faeb2c9..538f425 100644
--- a/jsf-tools/src/main/java/com/sun/faces/config/rules/ApplicationRule.java
+++ b/jsf-tools/src/main/java/com/sun/faces/config/rules/ApplicationRule.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-tools/src/main/java/com/sun/faces/config/rules/AttributeRule.java b/jsf-tools/src/main/java/com/sun/faces/config/rules/AttributeRule.java
index 35df7c5..58f1197 100644
--- a/jsf-tools/src/main/java/com/sun/faces/config/rules/AttributeRule.java
+++ b/jsf-tools/src/main/java/com/sun/faces/config/rules/AttributeRule.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-tools/src/main/java/com/sun/faces/config/rules/ComponentRule.java b/jsf-tools/src/main/java/com/sun/faces/config/rules/ComponentRule.java
index 83e1f98..d48ff21 100644
--- a/jsf-tools/src/main/java/com/sun/faces/config/rules/ComponentRule.java
+++ b/jsf-tools/src/main/java/com/sun/faces/config/rules/ComponentRule.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-tools/src/main/java/com/sun/faces/config/rules/ConverterRule.java b/jsf-tools/src/main/java/com/sun/faces/config/rules/ConverterRule.java
index af38236..f860177 100644
--- a/jsf-tools/src/main/java/com/sun/faces/config/rules/ConverterRule.java
+++ b/jsf-tools/src/main/java/com/sun/faces/config/rules/ConverterRule.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-tools/src/main/java/com/sun/faces/config/rules/DescriptionRule.java b/jsf-tools/src/main/java/com/sun/faces/config/rules/DescriptionRule.java
index 66ae257..7cc17d6 100644
--- a/jsf-tools/src/main/java/com/sun/faces/config/rules/DescriptionRule.java
+++ b/jsf-tools/src/main/java/com/sun/faces/config/rules/DescriptionRule.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-tools/src/main/java/com/sun/faces/config/rules/DescriptionTextRule.java b/jsf-tools/src/main/java/com/sun/faces/config/rules/DescriptionTextRule.java
index 52d00ac..97700de 100644
--- a/jsf-tools/src/main/java/com/sun/faces/config/rules/DescriptionTextRule.java
+++ b/jsf-tools/src/main/java/com/sun/faces/config/rules/DescriptionTextRule.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-tools/src/main/java/com/sun/faces/config/rules/DisplayNameRule.java b/jsf-tools/src/main/java/com/sun/faces/config/rules/DisplayNameRule.java
index 12db24b..ff499c2 100644
--- a/jsf-tools/src/main/java/com/sun/faces/config/rules/DisplayNameRule.java
+++ b/jsf-tools/src/main/java/com/sun/faces/config/rules/DisplayNameRule.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-tools/src/main/java/com/sun/faces/config/rules/FacesConfigRule.java b/jsf-tools/src/main/java/com/sun/faces/config/rules/FacesConfigRule.java
index 9711e20..b4ddb39 100644
--- a/jsf-tools/src/main/java/com/sun/faces/config/rules/FacesConfigRule.java
+++ b/jsf-tools/src/main/java/com/sun/faces/config/rules/FacesConfigRule.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-tools/src/main/java/com/sun/faces/config/rules/FacesConfigRuleSet.java b/jsf-tools/src/main/java/com/sun/faces/config/rules/FacesConfigRuleSet.java
index da9b844..fb06b5e 100644
--- a/jsf-tools/src/main/java/com/sun/faces/config/rules/FacesConfigRuleSet.java
+++ b/jsf-tools/src/main/java/com/sun/faces/config/rules/FacesConfigRuleSet.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -408,7 +412,7 @@ public class FacesConfigRuleSet extends RuleSetBase {
             (prefix + "/attribute/attribute-extension/default-value",
              "setDefaultValue", 0);
         digester.addCallMethod
-            (prefix + "/attribute/attribute-extension/pass-through",
+            (prefix + "/attribute/attribute-extension/ignored-by-renderer",
              "setPassThrough", 0, new String[] { "java.lang.Boolean" });
         digester.addCallMethod
             (prefix + "/attribute/attribute-extension/required",
@@ -528,7 +532,7 @@ public class FacesConfigRuleSet extends RuleSetBase {
             (prefix + "/property/property-extension/default-value",
              "setDefaultValue", 0);
         digester.addCallMethod
-            (prefix + "/property/property-extension/pass-through",
+            (prefix + "/property/property-extension/ignored-by-renderer",
              "setPassThrough", 0, new String[] { "java.lang.Boolean" });
         digester.addCallMethod
             (prefix + "/property/property-extension/read-only",
diff --git a/jsf-tools/src/main/java/com/sun/faces/config/rules/FactoryRule.java b/jsf-tools/src/main/java/com/sun/faces/config/rules/FactoryRule.java
index b07cd8f..c62144e 100644
--- a/jsf-tools/src/main/java/com/sun/faces/config/rules/FactoryRule.java
+++ b/jsf-tools/src/main/java/com/sun/faces/config/rules/FactoryRule.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-tools/src/main/java/com/sun/faces/config/rules/FeatureRule.java b/jsf-tools/src/main/java/com/sun/faces/config/rules/FeatureRule.java
index e845e02..455f6f7 100644
--- a/jsf-tools/src/main/java/com/sun/faces/config/rules/FeatureRule.java
+++ b/jsf-tools/src/main/java/com/sun/faces/config/rules/FeatureRule.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-tools/src/main/java/com/sun/faces/config/rules/IconRule.java b/jsf-tools/src/main/java/com/sun/faces/config/rules/IconRule.java
index 404ae54..e6eb417 100644
--- a/jsf-tools/src/main/java/com/sun/faces/config/rules/IconRule.java
+++ b/jsf-tools/src/main/java/com/sun/faces/config/rules/IconRule.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-tools/src/main/java/com/sun/faces/config/rules/LifecycleRule.java b/jsf-tools/src/main/java/com/sun/faces/config/rules/LifecycleRule.java
index 9007471..0bae2a4 100644
--- a/jsf-tools/src/main/java/com/sun/faces/config/rules/LifecycleRule.java
+++ b/jsf-tools/src/main/java/com/sun/faces/config/rules/LifecycleRule.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-tools/src/main/java/com/sun/faces/config/rules/ListEntriesRule.java b/jsf-tools/src/main/java/com/sun/faces/config/rules/ListEntriesRule.java
index b670461..e822ebc 100644
--- a/jsf-tools/src/main/java/com/sun/faces/config/rules/ListEntriesRule.java
+++ b/jsf-tools/src/main/java/com/sun/faces/config/rules/ListEntriesRule.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-tools/src/main/java/com/sun/faces/config/rules/LocaleConfigRule.java b/jsf-tools/src/main/java/com/sun/faces/config/rules/LocaleConfigRule.java
index e87c4e6..0f0ae62 100644
--- a/jsf-tools/src/main/java/com/sun/faces/config/rules/LocaleConfigRule.java
+++ b/jsf-tools/src/main/java/com/sun/faces/config/rules/LocaleConfigRule.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-tools/src/main/java/com/sun/faces/config/rules/ManagedBeanRule.java b/jsf-tools/src/main/java/com/sun/faces/config/rules/ManagedBeanRule.java
index d51a4f6..534d651 100644
--- a/jsf-tools/src/main/java/com/sun/faces/config/rules/ManagedBeanRule.java
+++ b/jsf-tools/src/main/java/com/sun/faces/config/rules/ManagedBeanRule.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-tools/src/main/java/com/sun/faces/config/rules/ManagedPropertyRule.java b/jsf-tools/src/main/java/com/sun/faces/config/rules/ManagedPropertyRule.java
index 3a67296..b111fce 100644
--- a/jsf-tools/src/main/java/com/sun/faces/config/rules/ManagedPropertyRule.java
+++ b/jsf-tools/src/main/java/com/sun/faces/config/rules/ManagedPropertyRule.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-tools/src/main/java/com/sun/faces/config/rules/MapEntriesRule.java b/jsf-tools/src/main/java/com/sun/faces/config/rules/MapEntriesRule.java
index a479453..225d581 100644
--- a/jsf-tools/src/main/java/com/sun/faces/config/rules/MapEntriesRule.java
+++ b/jsf-tools/src/main/java/com/sun/faces/config/rules/MapEntriesRule.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-tools/src/main/java/com/sun/faces/config/rules/MapEntryRule.java b/jsf-tools/src/main/java/com/sun/faces/config/rules/MapEntryRule.java
index f849e76..c2fcec8 100644
--- a/jsf-tools/src/main/java/com/sun/faces/config/rules/MapEntryRule.java
+++ b/jsf-tools/src/main/java/com/sun/faces/config/rules/MapEntryRule.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-tools/src/main/java/com/sun/faces/config/rules/NavigationCaseRule.java b/jsf-tools/src/main/java/com/sun/faces/config/rules/NavigationCaseRule.java
index 0e87ad1..4e8422d 100644
--- a/jsf-tools/src/main/java/com/sun/faces/config/rules/NavigationCaseRule.java
+++ b/jsf-tools/src/main/java/com/sun/faces/config/rules/NavigationCaseRule.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-tools/src/main/java/com/sun/faces/config/rules/NavigationRuleRule.java b/jsf-tools/src/main/java/com/sun/faces/config/rules/NavigationRuleRule.java
index fee85cd..14506b2 100644
--- a/jsf-tools/src/main/java/com/sun/faces/config/rules/NavigationRuleRule.java
+++ b/jsf-tools/src/main/java/com/sun/faces/config/rules/NavigationRuleRule.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-tools/src/main/java/com/sun/faces/config/rules/NullValueRule.java b/jsf-tools/src/main/java/com/sun/faces/config/rules/NullValueRule.java
index 07d7c43..d4338a1 100644
--- a/jsf-tools/src/main/java/com/sun/faces/config/rules/NullValueRule.java
+++ b/jsf-tools/src/main/java/com/sun/faces/config/rules/NullValueRule.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-tools/src/main/java/com/sun/faces/config/rules/PropertyRule.java b/jsf-tools/src/main/java/com/sun/faces/config/rules/PropertyRule.java
index b36e5f3..3b71e41 100644
--- a/jsf-tools/src/main/java/com/sun/faces/config/rules/PropertyRule.java
+++ b/jsf-tools/src/main/java/com/sun/faces/config/rules/PropertyRule.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-tools/src/main/java/com/sun/faces/config/rules/ReferencedBeanRule.java b/jsf-tools/src/main/java/com/sun/faces/config/rules/ReferencedBeanRule.java
index 8df459a..be9f2b8 100644
--- a/jsf-tools/src/main/java/com/sun/faces/config/rules/ReferencedBeanRule.java
+++ b/jsf-tools/src/main/java/com/sun/faces/config/rules/ReferencedBeanRule.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-tools/src/main/java/com/sun/faces/config/rules/RenderKitRule.java b/jsf-tools/src/main/java/com/sun/faces/config/rules/RenderKitRule.java
index 2ee7022..f760914 100644
--- a/jsf-tools/src/main/java/com/sun/faces/config/rules/RenderKitRule.java
+++ b/jsf-tools/src/main/java/com/sun/faces/config/rules/RenderKitRule.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-tools/src/main/java/com/sun/faces/config/rules/RendererRule.java b/jsf-tools/src/main/java/com/sun/faces/config/rules/RendererRule.java
index b7f0a7f..722808e 100644
--- a/jsf-tools/src/main/java/com/sun/faces/config/rules/RendererRule.java
+++ b/jsf-tools/src/main/java/com/sun/faces/config/rules/RendererRule.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-tools/src/main/java/com/sun/faces/config/rules/ResourceBundleRule.java b/jsf-tools/src/main/java/com/sun/faces/config/rules/ResourceBundleRule.java
index 24aefe7..dbc4939 100644
--- a/jsf-tools/src/main/java/com/sun/faces/config/rules/ResourceBundleRule.java
+++ b/jsf-tools/src/main/java/com/sun/faces/config/rules/ResourceBundleRule.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-tools/src/main/java/com/sun/faces/config/rules/ValidatorRule.java b/jsf-tools/src/main/java/com/sun/faces/config/rules/ValidatorRule.java
index 97940c1..1651af9 100644
--- a/jsf-tools/src/main/java/com/sun/faces/config/rules/ValidatorRule.java
+++ b/jsf-tools/src/main/java/com/sun/faces/config/rules/ValidatorRule.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-tools/src/main/java/com/sun/faces/generate/AbstractGenerator.java b/jsf-tools/src/main/java/com/sun/faces/generate/AbstractGenerator.java
index b494667..f98d437 100644
--- a/jsf-tools/src/main/java/com/sun/faces/generate/AbstractGenerator.java
+++ b/jsf-tools/src/main/java/com/sun/faces/generate/AbstractGenerator.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-tools/src/main/java/com/sun/faces/generate/AttributeManagerGenerator.java b/jsf-tools/src/main/java/com/sun/faces/generate/AttributeManagerGenerator.java
index 71c4a99..0b666c3 100644
--- a/jsf-tools/src/main/java/com/sun/faces/generate/AttributeManagerGenerator.java
+++ b/jsf-tools/src/main/java/com/sun/faces/generate/AttributeManagerGenerator.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
  *
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
  *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
+ * file and include the License file at packager/legal/LICENSE.txt.
  *
- * Contributor(s):
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
  *
+ * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-tools/src/main/java/com/sun/faces/generate/Generator.java b/jsf-tools/src/main/java/com/sun/faces/generate/Generator.java
index ea49cce..bb29995 100644
--- a/jsf-tools/src/main/java/com/sun/faces/generate/Generator.java
+++ b/jsf-tools/src/main/java/com/sun/faces/generate/Generator.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-tools/src/main/java/com/sun/faces/generate/GeneratorUtil.java b/jsf-tools/src/main/java/com/sun/faces/generate/GeneratorUtil.java
index eb14519..ff59bde 100644
--- a/jsf-tools/src/main/java/com/sun/faces/generate/GeneratorUtil.java
+++ b/jsf-tools/src/main/java/com/sun/faces/generate/GeneratorUtil.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -239,7 +243,7 @@ public class GeneratorUtil {
 
     } // END getComponentFamilyRendererMap
     
-    public static String getFirstDivFromString(String toParse) {
+    public static String getFirstDivFromString(String toParse, int [] out) {
         String result = null;
         
         if (null == toParse) {
@@ -252,23 +256,29 @@ public class GeneratorUtil {
                 result = toParse.substring(divStart, divEnd + 1);
             }
         }
+        if (null != out && 0 < out.length) {
+            out[0] = divStart;
+        }
         
         return result;
     }
 
-    public static String getFirstSpanFromString(String toParse) {
+    public static String getFirstSpanFromString(String toParse, int [] out) {
         String result = null;
         
         if (null == toParse) {
             return result;
         }
         
-        int divStart, divEnd;
-        if (-1 != (divStart = toParse.indexOf("<span"))) {
-            if (-1 != (divEnd = toParse.indexOf(">", divStart))) {
-                result = toParse.substring(divStart, divEnd + 1);
+        int spanStart, spanEnd;
+        if (-1 != (spanStart = toParse.indexOf("<span"))) {
+            if (-1 != (spanEnd = toParse.indexOf(">", spanStart))) {
+                result = toParse.substring(spanStart, spanEnd + 1);
             }
         }
+        if (null != out && 0 < out.length) {
+            out[0] = spanStart;
+        }
         
         return result;
     }
diff --git a/jsf-tools/src/main/java/com/sun/faces/generate/HtmlComponentGenerator.java b/jsf-tools/src/main/java/com/sun/faces/generate/HtmlComponentGenerator.java
index 09ea9d3..2a6b5da 100644
--- a/jsf-tools/src/main/java/com/sun/faces/generate/HtmlComponentGenerator.java
+++ b/jsf-tools/src/main/java/com/sun/faces/generate/HtmlComponentGenerator.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -322,6 +326,9 @@ public class HtmlComponentGenerator extends AbstractGenerator {
             if ("for".equals(pb.getPropertyName())) {
                 writer.fwrite(pb.getPropertyName());
                 writer.write("Val(\"for\")");
+            } else if ("public".equals(pb.getPropertyName())) {
+                writer.fwrite(pb.getPropertyName());
+                writer.write("Val(\"public\")");
             } else {
                 writer.fwrite(pb.getPropertyName());
             }
@@ -391,7 +398,7 @@ public class HtmlComponentGenerator extends AbstractGenerator {
             writer.fwrite("return (");
             writer.write(primitive(type) ? GeneratorUtil.convertToObject(type) : type);
             writer.write(") getStateHelper().eval(PropertyKeys.");
-            writer.write((pb.getPropertyName().equals("for")) ? pb
+            writer.write((pb.getPropertyName().equals("for") || pb.getPropertyName().equals("public")) ? pb
                   .getPropertyName() + "Val" : pb.getPropertyName());
              if (primitive(type) || (pb.getDefaultValue() != null)) {
                 writer.write(", ");
@@ -458,7 +465,7 @@ public class HtmlComponentGenerator extends AbstractGenerator {
             //writer.write(" = ");
             //writer.write(var);
             writer.fwrite("getStateHelper().put(PropertyKeys.");
-            writer.write((pb.getPropertyName().equals("for")) ? pb
+            writer.write((pb.getPropertyName().equals("for") || pb.getPropertyName().equals("public")) ? pb
                   .getPropertyName() + "Val" : pb.getPropertyName());
             writer.write(", ");
             writer.write(var);
diff --git a/jsf-tools/src/main/java/com/sun/faces/generate/HtmlTaglib12Generator.java b/jsf-tools/src/main/java/com/sun/faces/generate/HtmlTaglib12Generator.java
index b44eea0..f3c33ff 100644
--- a/jsf-tools/src/main/java/com/sun/faces/generate/HtmlTaglib12Generator.java
+++ b/jsf-tools/src/main/java/com/sun/faces/generate/HtmlTaglib12Generator.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -763,6 +767,9 @@ public class HtmlTaglib12Generator extends AbstractGenerator {
                     continue;
                 }
                 String rendererType = renderer.getRendererType();
+                if (this.propManager.isExcludeRenderer(rendererType)) {
+                    continue;
+                }
                 tagClassName = GeneratorUtil.makeTagClassName(
                          GeneratorUtil.stripJavaxFacesPrefix(componentFamily),
                          GeneratorUtil.stripJavaxFacesPrefix(rendererType));
diff --git a/jsf-tools/src/main/java/com/sun/faces/generate/HtmlTaglib21Generator.java b/jsf-tools/src/main/java/com/sun/faces/generate/HtmlTaglib21Generator.java
index d1c18fd..56d28cd 100644
--- a/jsf-tools/src/main/java/com/sun/faces/generate/HtmlTaglib21Generator.java
+++ b/jsf-tools/src/main/java/com/sun/faces/generate/HtmlTaglib21Generator.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-tools/src/main/java/com/sun/faces/generate/JspTLD12Generator.java b/jsf-tools/src/main/java/com/sun/faces/generate/JspTLD12Generator.java
index 3558565..7f76eca 100644
--- a/jsf-tools/src/main/java/com/sun/faces/generate/JspTLD12Generator.java
+++ b/jsf-tools/src/main/java/com/sun/faces/generate/JspTLD12Generator.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-tools/src/main/java/com/sun/faces/generate/JspTLD21Generator.java b/jsf-tools/src/main/java/com/sun/faces/generate/JspTLD21Generator.java
index bcbcf19..08d4311 100644
--- a/jsf-tools/src/main/java/com/sun/faces/generate/JspTLD21Generator.java
+++ b/jsf-tools/src/main/java/com/sun/faces/generate/JspTLD21Generator.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -55,7 +59,7 @@ import com.sun.faces.config.beans.RendererBean;
 public class JspTLD21Generator extends JspTLDGenerator {
 
     private static final String JSP_VERSION = "2.1";
-    private static final String JSF_TLIB_VERSION = "1.2";
+    private static final String JSF_TLIB_VERSION = "2.1";
 
     /**
      * <p>Schema related attributes.</p>
@@ -151,6 +155,10 @@ public class JspTLD21Generator extends JspTLDGenerator {
                     continue;
                 }
                 String rendererType = renderer.getRendererType();
+                if (this.propManager.isExcludeRenderer(rendererType)) {
+                    continue;
+                }
+                
                 writer.startElement("tag");
 
                 DescriptionBean description = renderer.getDescription("");
diff --git a/jsf-tools/src/main/java/com/sun/faces/generate/JspTLDGenerator.java b/jsf-tools/src/main/java/com/sun/faces/generate/JspTLDGenerator.java
index fb2dd4d..c7743da 100644
--- a/jsf-tools/src/main/java/com/sun/faces/generate/JspTLDGenerator.java
+++ b/jsf-tools/src/main/java/com/sun/faces/generate/JspTLDGenerator.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-tools/src/main/java/com/sun/faces/generate/JspToFaceletsTLD21Generator.java b/jsf-tools/src/main/java/com/sun/faces/generate/JspToFaceletsTLD21Generator.java
index b6e1c7c..e71c89d 100644
--- a/jsf-tools/src/main/java/com/sun/faces/generate/JspToFaceletsTLD21Generator.java
+++ b/jsf-tools/src/main/java/com/sun/faces/generate/JspToFaceletsTLD21Generator.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -54,7 +58,7 @@ import com.sun.faces.config.beans.RendererBean;
 public class JspToFaceletsTLD21Generator extends JspTLDGenerator {
 
     private static final String JSP_VERSION = "2.1";
-    private static final String JSF_TLIB_VERSION = "1.2";
+    private static final String JSF_TLIB_VERSION = "2.1";
 
     /**
      * <p>Schema related attributes.</p>
@@ -143,6 +147,16 @@ public class JspToFaceletsTLD21Generator extends JspTLDGenerator {
             propManager.getProperty(PropertyManager.TAGLIB_SHORT_NAME));
         writer.closeElement();
 
+        try {
+            String displayName = propManager.getProperty(PropertyManager.TAGLIB_DISPLAY_NAME);
+            writer.startElement("display-name");
+            writer.writeText(
+                    displayName);
+            writer.closeElement();
+        } catch (Exception ex) {
+            
+        }
+        
         writer.startElement("uri");
         writer.writeText(propManager.getProperty(PropertyManager.TAGLIB_URI));
         writer.closeElement();
diff --git a/jsf-tools/src/main/java/com/sun/faces/generate/PropertyManager.java b/jsf-tools/src/main/java/com/sun/faces/generate/PropertyManager.java
index 6d4b17f..14e7a61 100644
--- a/jsf-tools/src/main/java/com/sun/faces/generate/PropertyManager.java
+++ b/jsf-tools/src/main/java/com/sun/faces/generate/PropertyManager.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -42,6 +46,9 @@ import java.io.File;
 import java.io.FileInputStream;
 import java.io.PrintStream;
 import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
 import java.util.Properties;
 
 /**
@@ -61,6 +68,11 @@ public class PropertyManager {
     public static final String TAGLIB_SHORT_NAME = "taglib.shortname";
 
     /**
+     * <p>The display-name of the generated tag library.</p>
+     */
+    public static final String TAGLIB_DISPLAY_NAME = "taglib.displayname";
+
+    /**
      * <p>The URI by which the tag library will be known by.</p>
      */
     public static final String TAGLIB_URI = "taglib.uri";
@@ -82,6 +94,12 @@ public class PropertyManager {
     public static final String TAGLIB_INCLUDE = "taglib.include";
 
     /**
+     * <p>A comma separated list of renderer-types that must be excluded 
+     * from taglib generation.</p>
+     */
+    public static final String TAGLIB_EXCLUDED_RENDERER_TYPES = "taglib.excludedRendererTypes";
+
+    /**
      * <p>A copyright to be included at the beginning of any generated file
      * (may be <code>null</code>).</p>
      */
@@ -118,6 +136,7 @@ public class PropertyManager {
         TAGLIB_FILE_NAME,
         TAGLIB_INCLUDE,
         BASE_OUTPUT_DIR,
+        TAGLIB_EXCLUDED_RENDERER_TYPES
     };
 
     /**
@@ -127,6 +146,7 @@ public class PropertyManager {
         COPYRIGHT,
         TAGLIB_DESCRIPTION,
         TAGLIB_INCLUDE,
+        TAGLIB_EXCLUDED_RENDERER_TYPES
     };
 
     // Sort the arrays so we can use Arrays.binarySearch()
@@ -214,6 +234,32 @@ public class PropertyManager {
         return propValue.trim();
 
     } // END getProperty
+    
+    private Map<String, Boolean> excludedRenderers;
+    
+    public boolean isExcludeRenderer(String rendererType) {
+        boolean result = false;
+        if (null == excludedRenderers) {
+            initializeExcludedRenderers();
+        }
+        result = excludedRenderers.containsKey(rendererType);
+        
+        return result;
+    }
+    
+    private void initializeExcludedRenderers() {
+        String excludedRenderersProp = getProperty("taglib.excludedRendererTypes");
+        if (null == excludedRenderersProp) {
+            excludedRenderers = Collections.emptyMap();
+        } else {
+            excludedRenderers = new HashMap<String, Boolean>();
+            String [] toAdd = excludedRenderersProp.split(",");
+            for (String cur : toAdd) {
+                excludedRenderers.put(cur, Boolean.TRUE);
+            }
+        }
+        
+    }
 
 
     public String toString() {
diff --git a/jsf-tools/src/main/java/com/sun/faces/generate/RenderKitSpecificationGenerator.java b/jsf-tools/src/main/java/com/sun/faces/generate/RenderKitSpecificationGenerator.java
index b6e0a3c..6edfb1d 100644
--- a/jsf-tools/src/main/java/com/sun/faces/generate/RenderKitSpecificationGenerator.java
+++ b/jsf-tools/src/main/java/com/sun/faces/generate/RenderKitSpecificationGenerator.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -223,6 +227,8 @@ public class RenderKitSpecificationGenerator implements Generator {
                 String 
                         enclosingDiv = null,
                         enclosingSpan = null;
+                int [] divStart = new int[1];
+                int [] spanStart = new int[1];
                 if (null != descriptions) {
                     // Get the current operating locale
                     String localeStr = Locale.getDefault().getCountry().toLowerCase();
@@ -232,10 +238,9 @@ public class RenderKitSpecificationGenerator implements Generator {
                         if (null != cur.getLang() && 
                             (-1 != localeStr.indexOf(cur.getLang().toLowerCase()))) {
                             
-                            if (null == (enclosingDiv = 
-                                   GeneratorUtil.getFirstDivFromString(renderer.getDescription(cur.getLang()).getDescription()))) {
-                                enclosingSpan = GeneratorUtil.getFirstSpanFromString(renderer.getDescription(cur.getLang()).getDescription());
-                            }
+                            enclosingDiv = 
+                                   GeneratorUtil.getFirstDivFromString(renderer.getDescription(cur.getLang()).getDescription(), divStart);
+                            enclosingSpan = GeneratorUtil.getFirstSpanFromString(renderer.getDescription(cur.getLang()).getDescription(), spanStart);
                             
                             break;
                         }
@@ -243,8 +248,12 @@ public class RenderKitSpecificationGenerator implements Generator {
                     
                 }
                 if (null != enclosingDiv || null != enclosingSpan) {
-                    sb.append("  <DD>" + 
-                         (null != enclosingDiv ? enclosingDiv : enclosingSpan));
+                    String divOrSpan = (null != enclosingDiv ? enclosingDiv : enclosingSpan);
+                    // If there is a div and a span, take which ever comes first
+                    if (null != enclosingDiv && null != enclosingSpan) {
+                        divOrSpan = (spanStart[0] < divStart[0] ? enclosingSpan : enclosingDiv);
+                    }
+                    sb.append("  <DD>" + divOrSpan);
                     sb.append("<A HREF=\"" + renderKitId + "/" +
                     curFamily + curType +
                     ".html\" TARGET=\"rendererFrame\">" + curType +
@@ -438,13 +447,13 @@ public class RenderKitSpecificationGenerator implements Generator {
                 sb.append("<h3>Note:</h3>\n");
                 sb.append("\n");
                 sb.append(
-                    "<p>Attributes with a <code>pass-through</code> value of\n");
+                    "<p>Attributes with a <code class=\"changed_modified_2_2\">ignored-by-renderer</code> value of\n");
                 sb.append(
-                    "<code>true</code> are not interpreted by the renderer and are passed\n");
+                    "<code>true</code> are not interpreted by the renderer and are conveyed\n");
                 sb.append(
-                    "straight through to the rendered markup, without checking for validity.  Attributes with a\n");
+                    "straight to the rendered markup, without checking for validity.  Attributes with a\n");
                 sb.append(
-                    "<code>pass-through</code> value of <code>false</code> are interpreted\n");
+                    "<code class=\"changed_modified_2_2\">ignored-by-renderer</code> value of <code>false</code> are interpreted\n");
                 sb.append(
                     "by the renderer, and may or may not be checked for validity by the renderer.</p>\n");
                 sb.append("\n");
@@ -458,7 +467,7 @@ public class RenderKitSpecificationGenerator implements Generator {
                 sb.append(
                     "<tr BGCOLOR=\"#CCCCFF\" CLASS=\"TableHeadingColor\">\n");
                 sb.append("<th><b>attribute-name</b></th>\n");
-                sb.append("<th><b>pass-through</b></th>\n");
+                sb.append("<th><b class=\"changed_modified_2_2\">ignored-by-renderer</b></th>\n");
                 sb.append("<th><b>attribute-class</b></th>\n");
                 sb.append("<th><b>description</b></th>\n");
                 sb.append("<th><b>default-value</b></th>\n");
@@ -499,7 +508,7 @@ public class RenderKitSpecificationGenerator implements Generator {
             }
             sb.append("<hr>\n");
             sb.append(
-                "Copyright (c) 2003-2004 Sun Microsystems, Inc. All Rights Reserved.\n");
+                "Copyright (c) 2003-2010 Oracle America, Inc. All Rights Reserved.\n");
             sb.append("</body>\n");
             sb.append("</html>\n");
             writeStringToFile(sb.toString(),
diff --git a/jsf-tools/src/main/java/com/sun/faces/tools/GlassfishUpdater.java b/jsf-tools/src/main/java/com/sun/faces/tools/GlassfishUpdater.java
index fd7106d..8ac1fd0 100644
--- a/jsf-tools/src/main/java/com/sun/faces/tools/GlassfishUpdater.java
+++ b/jsf-tools/src/main/java/com/sun/faces/tools/GlassfishUpdater.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
diff --git a/jsf-tools/src/main/java/com/sun/faces/tools/StripClassesForApiJar.java b/jsf-tools/src/main/java/com/sun/faces/tools/StripClassesForApiJar.java
new file mode 100644
index 0000000..7f00c41
--- /dev/null
+++ b/jsf-tools/src/main/java/com/sun/faces/tools/StripClassesForApiJar.java
@@ -0,0 +1,292 @@
+
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.tools;
+
+
+
+import com.sun.tools.javac.api.JavacTaskImpl;
+import com.sun.tools.javac.code.Kinds;
+import com.sun.tools.javac.code.Scope;
+import com.sun.tools.javac.code.Symbol.*;
+import com.sun.tools.javac.code.Flags;
+import com.sun.tools.javac.code.Type;
+import com.sun.tools.javac.jvm.ClassReader;
+import com.sun.tools.javac.jvm.ClassWriter;
+import com.sun.tools.javac.jvm.Pool;
+import com.sun.tools.javac.processing.JavacProcessingEnvironment;
+import com.sun.tools.javac.util.List;
+import com.sun.tools.javac.util.Name;
+import java.io.File;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.EnumSet;
+import java.util.HashSet;
+import java.util.Set;
+import java.util.Collections;
+
+import javax.annotation.processing.AbstractProcessor;
+import javax.annotation.processing.RoundEnvironment;
+import javax.annotation.processing.SupportedAnnotationTypes;
+import javax.annotation.processing.SupportedOptions;
+import javax.lang.model.SourceVersion;
+import javax.lang.model.element.ElementKind;
+import javax.lang.model.element.TypeElement;
+import javax.lang.model.element.Element;
+import javax.tools.Diagnostic;
+import javax.tools.JavaCompiler;
+import javax.tools.JavaFileManager.Location;
+import javax.tools.JavaFileObject;
+import static javax.tools.JavaFileObject.Kind.CLASS;
+import javax.tools.StandardJavaFileManager;
+import javax.tools.StandardLocation;
+import javax.tools.ToolProvider;
+
+/**
+ * Used to generate a "symbol file" representing rt.jar that only
+ * includes supported or legacy proprietary API.  Valid annotation
+ * processor options:
+ *
+ * <dl>
+ * <dt>com.sun.tools.javac.sym.Jar</dt>
+ * <dd>Specifies the location of rt.jar.</dd>
+ * <dt>com.sun.tools.javac.sym.Dest</dt>
+ * <dd>Specifies the destination directory.</dd>
+ * </dl>
+ *
+ * <p><b>This is NOT part of any API supported by Sun Microsystems.
+ * If you write code that depends on this, you do so at your own
+ * risk.  This code and its internal interfaces are subject to change
+ * or deletion without notice.</b></p>
+ *
+ * @author Peter von der Ah\u00e9
+ */
+ at SupportedOptions({"com.sun.tools.javac.sym.Jar","com.sun.tools.javac.sym.ExtraApiClassPath","com.sun.tools.javac.sym.Dest"})
+ at SupportedAnnotationTypes("*")
+public class StripClassesForApiJar extends AbstractProcessor {
+
+    static Set<String> getLegacyPackages() {
+        return Collections.emptySet();
+    }
+
+    @Override
+    public boolean process(Set<? extends TypeElement> tes, RoundEnvironment renv) {
+        if (!renv.processingOver())
+            return true;
+
+        Set<String> legacy = getLegacyPackages();
+        Set<String> legacyProprietary = getLegacyPackages();
+        Set<String> documented = new HashSet<String>();
+        Set<PackageSymbol> packages =
+            ((JavacProcessingEnvironment)processingEnv).getSpecifiedPackages();
+        String jarName = processingEnv.getOptions().get("com.sun.tools.javac.sym.Jar");
+        if (jarName == null)
+            throw new RuntimeException("Must use -Acom.sun.tools.javac.sym.Jar=LOCATION_OF_JAR");
+        String extraApiClassPath = processingEnv.getOptions().get("com.sun.tools.javac.sym.ExtraApiClassPath");
+        if (extraApiClassPath == null)
+            throw new RuntimeException("Must use -Acom.sun.tools.javac.sym.ExtraApiClassPath=extra api class path");
+        String destName = processingEnv.getOptions().get("com.sun.tools.javac.sym.Dest");
+        if (destName == null)
+            throw new RuntimeException("Must use -Acom.sun.tools.javac.sym.Dest=LOCATION_OF_JAR");
+
+        for (PackageSymbol psym : packages) {
+            String name = psym.getQualifiedName().toString();
+            legacyProprietary.remove(name);
+            documented.add(name);
+        }
+
+        JavaCompiler tool = ToolProvider.getSystemJavaCompiler();
+        StandardJavaFileManager fm = tool.getStandardFileManager(null, null, null);
+        Location jarLocation = StandardLocation.locationFor(jarName);
+        File jarFile = new File(jarName);
+        String [] segments = extraApiClassPath.split(File.pathSeparator);
+        java.util.List<File> extraClassPathSegments = new ArrayList<File>(segments.length);
+        for (String cur : segments) {
+            extraClassPathSegments.add(new File(cur));
+        }
+        File ExtraApiClassPathFile = new File(extraApiClassPath);
+        try {
+            fm.setLocation(jarLocation, List.of(jarFile));
+            fm.setLocation(StandardLocation.CLASS_PATH, List.<File>nil());
+            fm.setLocation(StandardLocation.SOURCE_PATH, List.<File>nil());
+            {
+                ArrayList<File> bootClassPath = new ArrayList<File>();
+                bootClassPath.add(jarFile);
+                for (File cur : extraClassPathSegments) {
+                    bootClassPath.add(cur);
+                }
+                // ADD EXTRA DEPENDENCIES HERE:
+                for (File path : fm.getLocation(StandardLocation.PLATFORM_CLASS_PATH)) {
+                    // if (!new File(path.getName()).equals(new File("rt.jar")))
+                    bootClassPath.add(path);
+                }
+                System.err.println("Using boot class path = " + bootClassPath);
+                fm.setLocation(StandardLocation.PLATFORM_CLASS_PATH, bootClassPath);
+            }
+            // System.out.println(fm.getLocation(StandardLocation.PLATFORM_CLASS_PATH));
+            File destDir = new File(destName);
+            if (!destDir.exists())
+                if (!destDir.mkdirs())
+                    throw new RuntimeException("Could not create " + destDir);
+            fm.setLocation(StandardLocation.CLASS_OUTPUT, List.of(destDir));
+        } catch (IOException ioe) {
+            System.err.println("Unable to set location");
+            return false;
+        }
+        Set<String> hiddenPackages = new HashSet<String>();
+        Set<String> crisp = new HashSet<String>();
+        List<String> options = List.of("-XDdev");
+        // options = options.prepend("-doe");
+        // options = options.prepend("-verbose");
+        JavacTaskImpl task = (JavacTaskImpl)
+            tool.getTask(null, fm, null, options, null, null);
+        com.sun.tools.javac.main.JavaCompiler compiler = com.sun.tools.javac.main.JavaCompiler.instance(task.getContext());
+        ClassReader reader = ClassReader.instance(task.getContext());
+        ClassWriter writer = ClassWriter.instance(task.getContext());
+        Type.moreInfo = true;
+        Pool pool = new Pool();
+	ClassSymbol cs = null;
+        try {
+            for (JavaFileObject file : fm.list(jarLocation, "", EnumSet.of(CLASS), true)) {
+                String className = fm.inferBinaryName(jarLocation, file);
+                int index = className.lastIndexOf('.');
+                String pckName = index == -1 ? "" : className.substring(0, index);
+                if (documented.contains(pckName)) {
+                    if (!legacy.contains(pckName))
+                        crisp.add(pckName);
+                    // System.out.println("Documented: " + className);
+                } else if (legacyProprietary.contains(pckName)) {
+                    // System.out.println("Legacy proprietary: " + className);
+                } else {
+                    // System.out.println("Hidden " + className);
+                    hiddenPackages.add(pckName);
+                    continue;
+                }
+                // PackageSymbol psym = reader.enterPackage(names.fromString(pckName));
+                // psym.complete();
+                TypeSymbol sym = (TypeSymbol)compiler.resolveIdent(className);
+                if (sym.kind != Kinds.TYP) {
+                    if (className.indexOf('$') < 0) {
+                         System.err.println("Ignoring (other) " + className + " : " + sym);
+                         System.err.println("   " + sym.getClass().getSimpleName() + " " + sym.type);
+                    }
+                    continue;
+                }
+                sym.complete();
+                if (sym.getEnclosingElement().getKind() != ElementKind.PACKAGE) {
+                    System.err.println("Ignoring (bad) " + sym.getQualifiedName());
+                }
+		if (false) {
+		    /*
+		     * Following eliminates non-public classes from output,
+		     * but is too aggressive because it also eliminates
+		     * non-public superclasses of public classes, which
+		     * makes the output unusable.
+		     */
+		    if (sym.owner.kind == Kinds.PCK &&
+			(sym.flags() & Flags.AccessFlags) == Flags.PUBLIC) {
+			cs = (ClassSymbol) sym;
+			writeClass(pool, cs, writer);
+			cs = null;
+		    }
+		} else {
+		    cs = (ClassSymbol) sym;
+		    writeClass(pool, cs, writer);
+		    cs = null;
+		}
+            }
+        } catch (IOException ex) {
+	    reportError(ex, cs);
+        } catch (CompletionFailure ex) {
+	    reportError(ex, cs);
+        } catch (RuntimeException ex) {
+	    reportError(ex, cs);
+	}
+        if (false) {
+            for (String pckName : crisp)
+                System.out.println("Crisp: " + pckName);
+            for (String pckName : hiddenPackages)
+                System.out.println("Hidden: " + pckName);
+            for (String pckName : legacyProprietary)
+                System.out.println("Legacy proprietary: " + pckName);
+            for (String pckName : documented)
+                System.out.println("Documented: " + pckName);
+        }
+
+        return true;
+    }
+
+    void reportError(Throwable ex, Element element) {
+	if (element != null)
+	    processingEnv.getMessager().printMessage(Diagnostic.Kind.ERROR,
+						     ex.getLocalizedMessage(),
+						     element);
+	else
+	    processingEnv.getMessager().printMessage(Diagnostic.Kind.ERROR,
+						     ex.getLocalizedMessage());
+    }
+
+    void writeClass(final Pool pool, final ClassSymbol cs, final ClassWriter writer) {
+        try {
+            pool.reset();
+            cs.pool = pool;
+            writer.writeClass(cs);
+            for (Scope.Entry e = cs.members().elems; e != null; e = e.sibling) {
+                if (e.sym.kind == Kinds.TYP) {
+                    ClassSymbol nestedClass = (ClassSymbol)e.sym;
+                    nestedClass.complete();
+                    writeClass(pool, nestedClass, writer);
+                }
+            }
+        } catch (ClassWriter.StringOverflow ex) {
+            throw new RuntimeException(ex);
+        } catch (ClassWriter.PoolOverflow ex) {
+            throw new RuntimeException(ex);
+        } catch (IOException ex) {
+            throw new RuntimeException(ex);
+        }
+    }
+
+    public SourceVersion getSupportedSourceVersion() {
+        return SourceVersion.latest();
+    }
+
+}
diff --git a/jsf-tools/src/main/java/com/sun/faces/util/ToolsUtil.java b/jsf-tools/src/main/java/com/sun/faces/util/ToolsUtil.java
index 408f894..1b4b67f 100644
--- a/jsf-tools/src/main/java/com/sun/faces/util/ToolsUtil.java
+++ b/jsf-tools/src/main/java/com/sun/faces/util/ToolsUtil.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -34,7 +38,6 @@
  * holder.
  */
 
-
 package com.sun.faces.util;
 
 import java.util.ResourceBundle;
diff --git a/jsf-tools/src/main/resources/JsfToolsMessages.properties b/jsf-tools/src/main/resources/JsfToolsMessages.properties
index 8aa531f..bbbac02 100644
--- a/jsf-tools/src/main/resources/JsfToolsMessages.properties
+++ b/jsf-tools/src/main/resources/JsfToolsMessages.properties
@@ -1,26 +1,41 @@
 #
-# The contents of this file are subject to the terms
-# of the Common Development and Distribution License
-# (the License). You may not use this file except in
-# compliance with the License.
-# 
-# You can obtain a copy of the License at
-# https://javaserverfaces.dev.java.net/CDDL.html or
-# legal/CDDLv1.0.txt. 
-# See the License for the specific language governing
-# permission and limitations under the License.
-# 
-# When distributing Covered Code, include this CDDL
-# Header Notice in each file and include the License file
-# at legal/CDDLv1.0.txt.    
-# If applicable, add the following below the CDDL Header,
-# with the fields enclosed by brackets [] replaced by
-# your own identifying information:
-# "Portions Copyrighted [year] [name of copyright owner]"
-# 
-# [Name of File] [ver.__] [Date]
-# 
-# Copyright 2005 Sun Microsystems Inc. All Rights Reserved
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 2005-2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
 #
 
 com.sun.faces.MANAGED_BEAN_AS_LIST_CONFIG_ERROR=Incorrect configuration for managed bean ''{0}''.  Managed bean configured with list entries, but also has illegally defined map entries and/or one or more managed properties.
@@ -32,4 +47,4 @@ com.sun.faces.MANAGED_BEAN_PROPERTY_CONFIG_ERROR=Incorrect configuration for man
 com.sun.faces.MANAGED_BEAN_NO_MANAGED_BEAN_NAME=Managed bean configuration error in document ''{0}'' (managed-bean definition ending at line number {1}) - no defined 'managed-bean-name'.
 com.sun.faces.MANAGED_BEAN_NO_MANAGED_BEAN_CLASS=Incorrect configuration for managed bean ''{0}''.  No defined managed-bean-class.
 com.sun.faces.MANAGED_BEAN_NO_MANAGED_BEAN_SCOPE=Incorrect configuration for managed bean ''{0}''.  No defined managed-bean-scope.
-com.sun.faces.MANAGED_BEAN_NO_MANAGED_PROPERTY_NAME=Incorrect configuration for managed bean ''{0}''.  Managed property with no defined managed-property-name.
\ No newline at end of file
+com.sun.faces.MANAGED_BEAN_NO_MANAGED_PROPERTY_NAME=Incorrect configuration for managed bean ''{0}''.  Managed property with no defined managed-property-name.
diff --git a/jsf-tools/src/main/resources/JsfToolsMessages_de.properties b/jsf-tools/src/main/resources/JsfToolsMessages_de.properties
index 8aa531f..bbbac02 100644
--- a/jsf-tools/src/main/resources/JsfToolsMessages_de.properties
+++ b/jsf-tools/src/main/resources/JsfToolsMessages_de.properties
@@ -1,26 +1,41 @@
 #
-# The contents of this file are subject to the terms
-# of the Common Development and Distribution License
-# (the License). You may not use this file except in
-# compliance with the License.
-# 
-# You can obtain a copy of the License at
-# https://javaserverfaces.dev.java.net/CDDL.html or
-# legal/CDDLv1.0.txt. 
-# See the License for the specific language governing
-# permission and limitations under the License.
-# 
-# When distributing Covered Code, include this CDDL
-# Header Notice in each file and include the License file
-# at legal/CDDLv1.0.txt.    
-# If applicable, add the following below the CDDL Header,
-# with the fields enclosed by brackets [] replaced by
-# your own identifying information:
-# "Portions Copyrighted [year] [name of copyright owner]"
-# 
-# [Name of File] [ver.__] [Date]
-# 
-# Copyright 2005 Sun Microsystems Inc. All Rights Reserved
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 2005-2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
 #
 
 com.sun.faces.MANAGED_BEAN_AS_LIST_CONFIG_ERROR=Incorrect configuration for managed bean ''{0}''.  Managed bean configured with list entries, but also has illegally defined map entries and/or one or more managed properties.
@@ -32,4 +47,4 @@ com.sun.faces.MANAGED_BEAN_PROPERTY_CONFIG_ERROR=Incorrect configuration for man
 com.sun.faces.MANAGED_BEAN_NO_MANAGED_BEAN_NAME=Managed bean configuration error in document ''{0}'' (managed-bean definition ending at line number {1}) - no defined 'managed-bean-name'.
 com.sun.faces.MANAGED_BEAN_NO_MANAGED_BEAN_CLASS=Incorrect configuration for managed bean ''{0}''.  No defined managed-bean-class.
 com.sun.faces.MANAGED_BEAN_NO_MANAGED_BEAN_SCOPE=Incorrect configuration for managed bean ''{0}''.  No defined managed-bean-scope.
-com.sun.faces.MANAGED_BEAN_NO_MANAGED_PROPERTY_NAME=Incorrect configuration for managed bean ''{0}''.  Managed property with no defined managed-property-name.
\ No newline at end of file
+com.sun.faces.MANAGED_BEAN_NO_MANAGED_PROPERTY_NAME=Incorrect configuration for managed bean ''{0}''.  Managed property with no defined managed-property-name.
diff --git a/jsf-tools/src/main/resources/JsfToolsMessages_es.properties b/jsf-tools/src/main/resources/JsfToolsMessages_es.properties
index 8aa531f..bbbac02 100644
--- a/jsf-tools/src/main/resources/JsfToolsMessages_es.properties
+++ b/jsf-tools/src/main/resources/JsfToolsMessages_es.properties
@@ -1,26 +1,41 @@
 #
-# The contents of this file are subject to the terms
-# of the Common Development and Distribution License
-# (the License). You may not use this file except in
-# compliance with the License.
-# 
-# You can obtain a copy of the License at
-# https://javaserverfaces.dev.java.net/CDDL.html or
-# legal/CDDLv1.0.txt. 
-# See the License for the specific language governing
-# permission and limitations under the License.
-# 
-# When distributing Covered Code, include this CDDL
-# Header Notice in each file and include the License file
-# at legal/CDDLv1.0.txt.    
-# If applicable, add the following below the CDDL Header,
-# with the fields enclosed by brackets [] replaced by
-# your own identifying information:
-# "Portions Copyrighted [year] [name of copyright owner]"
-# 
-# [Name of File] [ver.__] [Date]
-# 
-# Copyright 2005 Sun Microsystems Inc. All Rights Reserved
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 2005-2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
 #
 
 com.sun.faces.MANAGED_BEAN_AS_LIST_CONFIG_ERROR=Incorrect configuration for managed bean ''{0}''.  Managed bean configured with list entries, but also has illegally defined map entries and/or one or more managed properties.
@@ -32,4 +47,4 @@ com.sun.faces.MANAGED_BEAN_PROPERTY_CONFIG_ERROR=Incorrect configuration for man
 com.sun.faces.MANAGED_BEAN_NO_MANAGED_BEAN_NAME=Managed bean configuration error in document ''{0}'' (managed-bean definition ending at line number {1}) - no defined 'managed-bean-name'.
 com.sun.faces.MANAGED_BEAN_NO_MANAGED_BEAN_CLASS=Incorrect configuration for managed bean ''{0}''.  No defined managed-bean-class.
 com.sun.faces.MANAGED_BEAN_NO_MANAGED_BEAN_SCOPE=Incorrect configuration for managed bean ''{0}''.  No defined managed-bean-scope.
-com.sun.faces.MANAGED_BEAN_NO_MANAGED_PROPERTY_NAME=Incorrect configuration for managed bean ''{0}''.  Managed property with no defined managed-property-name.
\ No newline at end of file
+com.sun.faces.MANAGED_BEAN_NO_MANAGED_PROPERTY_NAME=Incorrect configuration for managed bean ''{0}''.  Managed property with no defined managed-property-name.
diff --git a/jsf-tools/src/main/resources/JsfToolsMessages_fr.properties b/jsf-tools/src/main/resources/JsfToolsMessages_fr.properties
index 8aa531f..71e76b5 100644
--- a/jsf-tools/src/main/resources/JsfToolsMessages_fr.properties
+++ b/jsf-tools/src/main/resources/JsfToolsMessages_fr.properties
@@ -1,35 +1,50 @@
 #
-# The contents of this file are subject to the terms
-# of the Common Development and Distribution License
-# (the License). You may not use this file except in
-# compliance with the License.
-# 
-# You can obtain a copy of the License at
-# https://javaserverfaces.dev.java.net/CDDL.html or
-# legal/CDDLv1.0.txt. 
-# See the License for the specific language governing
-# permission and limitations under the License.
-# 
-# When distributing Covered Code, include this CDDL
-# Header Notice in each file and include the License file
-# at legal/CDDLv1.0.txt.    
-# If applicable, add the following below the CDDL Header,
-# with the fields enclosed by brackets [] replaced by
-# your own identifying information:
-# "Portions Copyrighted [year] [name of copyright owner]"
-# 
-# [Name of File] [ver.__] [Date]
-# 
-# Copyright 2005 Sun Microsystems Inc. All Rights Reserved
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 2005-2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
 #
 
-com.sun.faces.MANAGED_BEAN_AS_LIST_CONFIG_ERROR=Incorrect configuration for managed bean ''{0}''.  Managed bean configured with list entries, but also has illegally defined map entries and/or one or more managed properties.
-com.sun.faces.MANAGED_BEAN_AS_MAP_CONFIG_ERROR=Incorrect configuration for managed bean ''{0}''.  Managed bean configured with map entries, but also has illegally defined one or more managed properties.
-com.sun.faces.MANAGED_BEAN_INVALID_SCOPE=Invalid managed-bean-scope ''{0}'' for managed bean ''{1}''.  Scope must be none, application, session, or request.
-com.sun.faces.MANAGED_BEAN_LIST_PROPERTY_CONFIG_ERROR=Incorrect configuration for managed bean ''{0}''.  Managed property ''{1}'' defines list entries, but has illegally defined a value and/or map entries.
-com.sun.faces.MANAGED_BEAN_MAP_PROPERTY_CONFIG_ERROR=Incorrect configuration for managed bean ''{0}''.  Managed property ''{1}'' defines map entries, but has illegally defined a value as well.
-com.sun.faces.MANAGED_BEAN_PROPERTY_CONFIG_ERROR=Incorrect configuration for managed bean ''{0}''.  Managed property ''{1}'' containins no list or map entires, nor any value elements.
-com.sun.faces.MANAGED_BEAN_NO_MANAGED_BEAN_NAME=Managed bean configuration error in document ''{0}'' (managed-bean definition ending at line number {1}) - no defined 'managed-bean-name'.
-com.sun.faces.MANAGED_BEAN_NO_MANAGED_BEAN_CLASS=Incorrect configuration for managed bean ''{0}''.  No defined managed-bean-class.
-com.sun.faces.MANAGED_BEAN_NO_MANAGED_BEAN_SCOPE=Incorrect configuration for managed bean ''{0}''.  No defined managed-bean-scope.
-com.sun.faces.MANAGED_BEAN_NO_MANAGED_PROPERTY_NAME=Incorrect configuration for managed bean ''{0}''.  Managed property with no defined managed-property-name.
\ No newline at end of file
+com.sun.faces.MANAGED_BEAN_AS_LIST_CONFIG_ERROR=Incorrect configuration for managed bean \u00ab{0}\u00bb.  Managed bean configured with list entries, but also has illegally defined map entries and/or one or more managed properties.
+com.sun.faces.MANAGED_BEAN_AS_MAP_CONFIG_ERROR=Incorrect configuration for managed bean \u00ab{0}\u00bb.  Managed bean configured with map entries, but also has illegally defined one or more managed properties.
+com.sun.faces.MANAGED_BEAN_INVALID_SCOPE=Invalid managed-bean-scope \u00ab{0}\u00bb for managed bean \u00ab{1}\u00bb.  Scope must be none, application, session, or request.
+com.sun.faces.MANAGED_BEAN_LIST_PROPERTY_CONFIG_ERROR=Incorrect configuration for managed bean \u00ab{0}\u00bb.  Managed property \u00ab{1}\u00bb defines list entries, but has illegally defined a value and/or map entries.
+com.sun.faces.MANAGED_BEAN_MAP_PROPERTY_CONFIG_ERROR=Incorrect configuration for managed bean \u00ab{0}\u00bb.  Managed property \u00ab{1}\u00bb defines map entries, but has illegally defined a value as well.
+com.sun.faces.MANAGED_BEAN_PROPERTY_CONFIG_ERROR=Incorrect configuration for managed bean \u00ab{0}\u00bb.  Managed property \u00ab{1}\u00bb containins no list or map entires, nor any value elements.
+com.sun.faces.MANAGED_BEAN_NO_MANAGED_BEAN_NAME=Managed bean configuration error in document \u00ab{0}\u00bb (managed-bean definition ending at line number {1}) - no defined 'managed-bean-name'.
+com.sun.faces.MANAGED_BEAN_NO_MANAGED_BEAN_CLASS=Incorrect configuration for managed bean \u00ab{0}\u00bb.  No defined managed-bean-class.
+com.sun.faces.MANAGED_BEAN_NO_MANAGED_BEAN_SCOPE=Incorrect configuration for managed bean \u00ab{0}\u00bb.  No defined managed-bean-scope.
+com.sun.faces.MANAGED_BEAN_NO_MANAGED_PROPERTY_NAME=Incorrect configuration for managed bean \u00ab{0}\u00bb.  Managed property with no defined managed-property-name.
diff --git a/jsf-tools/src/main/resources/com/sun/faces/ToolsLogStrings.properties b/jsf-tools/src/main/resources/com/sun/faces/ToolsLogStrings.properties
index f264871..ba52fc4 100644
--- a/jsf-tools/src/main/resources/com/sun/faces/ToolsLogStrings.properties
+++ b/jsf-tools/src/main/resources/com/sun/faces/ToolsLogStrings.properties
@@ -1,26 +1,41 @@
 #
-# The contents of this file are subject to the terms
-# of the Common Development and Distribution License
-# (the License). You may not use this file except in
-# compliance with the License.
-# 
-# You can obtain a copy of the License at
-# https://javaserverfaces.dev.java.net/CDDL.html or
-# legal/CDDLv1.0.txt. 
-# See the License for the specific language governing
-# permission and limitations under the License.
-# 
-# When distributing Covered Code, include this CDDL
-# Header Notice in each file and include the License file
-# at legal/CDDLv1.0.txt.    
-# If applicable, add the following below the CDDL Header,
-# with the fields enclosed by brackets [] replaced by
-# your own identifying information:
-# "Portions Copyrighted [year] [name of copyright owner]"
-# 
-# [Name of File] [ver.__] [Date]
-# 
-# Copyright 2005 Sun Microsystems Inc. All Rights Reserved
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 2005-2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
 #
 
 # placeholder.  
diff --git a/jsf-tools/src/main/resources/com/sun/faces/generate/facesdoc/renderkit-summary.bottom b/jsf-tools/src/main/resources/com/sun/faces/generate/facesdoc/renderkit-summary.bottom
index 7a7578b..5130250 100644
--- a/jsf-tools/src/main/resources/com/sun/faces/generate/facesdoc/renderkit-summary.bottom
+++ b/jsf-tools/src/main/resources/com/sun/faces/generate/facesdoc/renderkit-summary.bottom
@@ -1,5 +1,5 @@
 <HR>
 
-Copyright � 2002-2004 Sun Microsystems, Inc. All Rights Reserved.
+Copyright � 2002-2010 Oracle America, Inc. All Rights Reserved.
 </BODY>
 </HTML>
diff --git a/jsf-tools/src/main/resources/com/sun/faces/generate/facesdoc/renderkit-summary.top b/jsf-tools/src/main/resources/com/sun/faces/generate/facesdoc/renderkit-summary.top
index c777802..1428917 100644
--- a/jsf-tools/src/main/resources/com/sun/faces/generate/facesdoc/renderkit-summary.top
+++ b/jsf-tools/src/main/resources/com/sun/faces/generate/facesdoc/renderkit-summary.top
@@ -7,7 +7,7 @@
 Faces RenderKit
 </TITLE>
 <META NAME="keywords" CONTENT="RenderKit">
-<LINK REL ="stylesheet" TYPE="text/css" HREF="../../stylesheet.css" TITLE="Style">
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../stylesheet.css" TITLE="Style">
 </HEAD>
 <SCRIPT>
 function asd()
diff --git a/jsf-tools/src/main/resources/com/sun/faces/generate/facesdoc/stylesheet.css b/jsf-tools/src/main/resources/com/sun/faces/generate/facesdoc/stylesheet.css
index 33c760c..b7c13f2 100644
--- a/jsf-tools/src/main/resources/com/sun/faces/generate/facesdoc/stylesheet.css
+++ b/jsf-tools/src/main/resources/com/sun/faces/generate/facesdoc/stylesheet.css
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -39,7 +43,10 @@
 /* Define colors, fonts and other style attributes here to override the defaults */
 
 /* Page background color */
-body { background-color: #FFFFFF }
+body { 
+  background-color: #FFFFFF;
+  background-image: url(expert-draft-bg.png);
+}
 
 /* Table colors */
 .TableHeadingColor     { background: #CCCCFF } /* Dark mauve */
@@ -84,7 +91,6 @@ body { background-color: #FFFFFF }
                  padding-left:0.2em; border-left:solid;
                  border-left-width:thin; border-right:none;
                  border-top:none; border-bottom:none; border-color:red }
-*/
 
    .changed_added_2_0_rev_a { cursor: url(changed_added_2_0_rev_a_cursor.cur), auto;
                  background: url(changed_added_2_0_rev_a.png); 
@@ -106,6 +112,81 @@ body { background-color: #FFFFFF }
                  text-decoration: line-through; }
 
 
+   .changed_added_2_1 { cursor: url(changed_added_2_1_cursor.cur), auto;
+                 background: url(changed_added_2_1.png); 
+                 padding-left:0.2em; border-left:solid;
+                 border-left-width:thin; border-right:none;
+                 border-top:none; border-bottom:none; border-color:green }
+
+   .changed_modified_2_1 { cursor: url(changed_modified_2_1_cursor.cur), auto;
+                 background: url(changed_modified_2_1.png); 
+                 padding-left:0.2em; border-left:solid;
+                 border-left-width:thin; border-right:none;
+                 border-top:none; border-bottom:none; border-color:orange }
+
+   .changed_deleted_2_1 { cursor: url(changed_deleted_2_1_cursor.cur), auto;
+                 background: url(changed_deleted_2_1.png); 
+                 padding-left:0.2em; border-left:solid;
+                 border-left-width:thin; border-right:none;
+                 border-top:none; border-bottom:none; border-color:red;
+                 text-decoration: line-through; }
+
+   .changed_added_2_2 { cursor: url(changed_added_2_2_cursor.cur), auto;
+                 background: url(changed_added_2_2.png); 
+                 padding-left:0.2em; border-left:solid;
+                 border-left-width:thin; border-right:none;
+                 border-top:none; border-bottom:none; border-color:green }
+
+   .changed_modified_2_2 { cursor: url(changed_modified_2_2_cursor.cur), auto;
+                 background: url(changed_modified_2_2.png); 
+                 padding-left:0.2em; border-left:solid;
+                 border-left-width:thin; border-right:none;
+                 border-top:none; border-bottom:none; border-color:orange }
+
+   .changed_deleted_2_2 { cursor: url(changed_deleted_2_2_cursor.cur), auto;
+                 background: url(changed_deleted_2_2.png); 
+                 padding-left:0.2em; border-left:solid;
+                 border-left-width:thin; border-right:none;
+                 border-top:none; border-bottom:none; border-color:red;
+                 text-decoration: line-through; }
+
+*/
+
+   .changed_added_2_3 { cursor: url(changed_added_2_3_cursor.cur), auto;
+                 background: url(changed_added_2_3.png); 
+                 padding-left:0.2em; border-left:solid;
+                 border-left-width:thin; border-right:none;
+                 border-top:none; border-bottom:none; border-color:green }
+
+   .changed_modified_2_3 { cursor: url(changed_modified_2_3_cursor.cur), auto;
+                 background: url(changed_modified_2_3.png); 
+                 padding-left:0.2em; border-left:solid;
+                 border-left-width:thin; border-right:none;
+                 border-top:none; border-bottom:none; border-color:orange }
+
+   .changed_deleted_2_3 { cursor: url(changed_deleted_2_3_cursor.cur), auto;
+                 background: url(changed_deleted_2_3.png); 
+                 padding-left:0.2em; border-left:solid;
+                 border-left-width:thin; border-right:none;
+                 border-top:none; border-bottom:none; border-color:red;
+                 text-decoration: line-through; }
+
+/*
+
+a[href^="HTML_BASIC/javax.faces.Commandjavax.faces.Button.html"], a[href^="HTML_BASIC/javax.faces.Commandjavax.faces.Link.html"], a[href^="HTML_BASIC/javax.faces.Outputjavax.faces.resource.Stylesheet.html"], a[href^="HTML_BASIC/javax.faces.OutcomeTargetjavax.faces.Link.html"], a[href^="HTML_BASIC/javax.faces.OutcomeTargetjavax.faces.Button.html"], a[href^="HTML_BASIC/javax.faces.Outputjavax.faces.Head.html"], a[href^="HTML_BASIC/javax.faces.Outputjavax.faces.Body.html"], a[href^="HTML_BA [...]
+                 background: url(changed_modified_2_2.png); 
+                 padding-left:0.2em; border-left:solid;
+                 border-left-width:thin; border-right:none;
+                 border-top:none; border-bottom:none; border-color:orange }
+
+a[href^="HTML_BASIC/javax.faces.Inputjavax.faces.File.html"] { cursor: url(changed_added_2_2_cursor.cur), auto;
+                 background: url(changed_added_2_2.png); 
+                 padding-left:0.2em; border-left:solid;
+                 border-left-width:thin; border-right:none;
+                 border-top:none; border-bottom:none; border-color:green }
+
+
+*/
 
 .javadocSection { font-size: large; }
 
diff --git a/jsf-tools/template-src/MessageFactory.java b/jsf-tools/template-src/MessageFactory.java
index 4156180..f06504e 100644
--- a/jsf-tools/template-src/MessageFactory.java
+++ b/jsf-tools/template-src/MessageFactory.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -66,7 +70,7 @@ import java.util.ResourceBundle;
 
     /**
      * @see #getMessage(String, Object...)
-     * @param FacesMessage.Serverity set a custom severity
+     * @param severity set a custom severity
      */
     @protection@ static FacesMessage getMessage(String messageId,
                                                 FacesMessage.Severity severity,
@@ -79,7 +83,7 @@ import java.util.ResourceBundle;
 
     /**
      * @see #getMessage(Locale, String, Object...)
-     * @param FacesMessage.Serverity set a custom severity
+     * @param severity set a custom severity
      */
     @protection@ static FacesMessage getMessage(Locale locale,
                                                 String messageId,
@@ -93,7 +97,7 @@ import java.util.ResourceBundle;
 
     /**
      * @see #getMessage(FacesContext, String, Object...)
-     * @param FacesMessage.Serverity set a custom severity
+     * @param severity set a custom severity
      */
     @protection@ static FacesMessage getMessage(FacesContext context,
                                                 String messageId,
@@ -151,11 +155,13 @@ import java.util.ResourceBundle;
         String bundleName;
 
         // see if we have a user-provided bundle
-        if (null != (bundleName = getApplication().getMessageBundle())) {
+        Application app = getApplication();
+	Class appClass = app.getClass();
+        if (null != (bundleName = app.getMessageBundle())) {
             if (null != 
                 (bundle = 
                     ResourceBundle.getBundle(bundleName, locale,
-                      getCurrentLoader(bundleName)))) {
+				     getCurrentLoader(appClass)))) {
                 // see if we have a hit
                 try {
                     summary = bundle.getString(messageId);
@@ -172,7 +178,7 @@ import java.util.ResourceBundle;
             // see if we have a summary in the app provided bundle
             bundle = ResourceBundle.getBundle(FacesMessage.FACES_MESSAGES, 
                                               locale,
-                                              getCurrentLoader(bundleName));
+                                              getCurrentLoader(appClass));
             if (null == bundle) {
                 throw new NullPointerException();
             }
@@ -191,7 +197,7 @@ import java.util.ResourceBundle;
             // see if we have a summary in the app provided bundle
             bundle = ResourceBundle.getBundle(MOJARRA_RESOURCE_BASENAME,
                                               locale,
-                                              getCurrentLoader(bundleName));
+                                              getCurrentLoader(appClass));
             if (null == bundle) {
                 throw new NullPointerException();
             }
@@ -284,11 +290,11 @@ import java.util.ResourceBundle;
         return (afactory.getApplication());
     }
 
-    protected static ClassLoader getCurrentLoader(Object fallbackClass) {
+    protected static ClassLoader getCurrentLoader(Class fallbackClass) {
         ClassLoader loader =
             Thread.currentThread().getContextClassLoader();
         if (loader == null) {
-            loader = fallbackClass.getClass().getClassLoader();
+            loader = fallbackClass.getClassLoader();
         }
         return loader;
     }
diff --git a/jsf-tools/template-src/SharedUtils.java b/jsf-tools/template-src/SharedUtils.java
new file mode 100644
index 0000000..0a6f6c5
--- /dev/null
+++ b/jsf-tools/template-src/SharedUtils.java
@@ -0,0 +1,122 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package @package@;
+
+import javax.faces.context.FacesContext;
+import javax.faces.application.Application;
+
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Map;
+import java.util.HashMap;
+
+class SharedUtils {
+
+    /*
+    * Determine whether String is a mixed value binding expression or not.
+    */
+    static boolean isMixedExpression(String expression) {
+
+        if (null == expression) {
+            return false;
+        }
+
+        // if it doesn't start and end with delimiters
+        return (!(expression.startsWith("#{") && expression.endsWith("}")))
+                  && isExpression(expression);
+
+    }
+
+
+    /*
+    * Determine whether String is a value binding expression or not.
+    */
+    static boolean isExpression(String expression) {
+
+        if (null == expression) {
+            return false;
+        }
+
+        //check to see if attribute has an expression
+        int start = expression.indexOf("#{");
+        return start != -1 && expression.indexOf('}', start+2) != -1;
+    }
+
+    static Map<String, List<String>> evaluateExpressions(FacesContext context, Map<String, List<String>> map) {
+        if (map != null && !map.isEmpty()) {
+            Map<String, List<String>> ret = new HashMap<String, List<String>>(map.size());
+            for (Map.Entry<String, List<String>> entry : map.entrySet()) {
+                ret.put(entry.getKey(), evaluateExpressions(context, entry.getValue()));
+            }
+            
+            return ret;
+        }
+        
+        return map;
+    }
+     
+    static List<String> evaluateExpressions(FacesContext context, List<String> values) {
+         if (!values.isEmpty()) {
+             List<String> ret = new ArrayList<String>(values.size());
+             Application app = context.getApplication();
+             for (String val : values) {
+                 if (val != null) {
+                     String value = val.trim();
+                     if (isExpression(value)) {
+                         value = app.evaluateExpressionGet(context,
+                                                           value,
+                                                           String.class);
+                     }
+                     ret.add(value);
+                 }
+             }
+             
+             return ret;
+         }
+         return values;
+     }
+
+
+
+}
+
+     
+
diff --git a/jsf-tools/template-src/StateHolderSaver.java b/jsf-tools/template-src/StateHolderSaver.java
index 84298b5..1400cc5 100644
--- a/jsf-tools/template-src/StateHolderSaver.java
+++ b/jsf-tools/template-src/StateHolderSaver.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -38,7 +42,7 @@ package @package@;
 
 import javax.faces.context.FacesContext;
 import javax.faces.component.StateHolder;
-
+import javax.faces.component.UIComponent;
 import java.io.Serializable;
 
 /**
@@ -51,14 +55,57 @@ class StateHolderSaver implements Serializable {
     private String className = null;
     private Serializable savedState = null;
 
+    public static final String DYNAMIC_COMPONENT =
+            "com.sun.faces.DynamicComponent";
+    
+    private enum StateHolderTupleIndices {
+        StateHolderSaverInstance,
+        ComponentAddedDynamically,
+        LastMember
+    };
+
+    public boolean componentAddedDynamically() {
+        boolean result = false;
+
+
+        // if the Object to save implemented Serializable but not
+        // StateHolder
+        if (null == className && null != savedState) {
+            return result;
+        }
+
+        // if the Object to save did not implement Serializable or
+        // StateHolder
+        if (className == null) {
+            return result;
+        }
+
+        // else the object to save did implement StateHolder
+
+        if (null != savedState) {
+            // don't need to check transient, since that was done on
+            // the saving side.
+            Serializable [] tuple = (Serializable []) savedState;
+            result = (Boolean) tuple[StateHolderTupleIndices.ComponentAddedDynamically.ordinal()];
+        }
+
+        return result;
+    }
+
     public StateHolderSaver(FacesContext context, Object toSave) {
         className = toSave.getClass().getName();
 
         if (toSave instanceof StateHolder) {
             // do not save an attached object that is marked transient.
             if (!((StateHolder) toSave).isTransient()) {
-                savedState =
+                Serializable [] tuple = new Serializable[StateHolderTupleIndices.LastMember.ordinal()];
+
+                tuple[StateHolderTupleIndices.StateHolderSaverInstance.ordinal()] =
                       (Serializable) ((StateHolder) toSave).saveState(context);
+                if (toSave instanceof UIComponent) {
+                    tuple[StateHolderTupleIndices.ComponentAddedDynamically.ordinal()] = ((UIComponent)toSave).getAttributes().containsKey(DYNAMIC_COMPONENT) ? Boolean.TRUE : Boolean.FALSE;
+                }
+                savedState = tuple;
             } else {
                 className = null;
             }
@@ -114,7 +161,8 @@ class StateHolderSaver implements Serializable {
             result instanceof StateHolder) {
             // don't need to check transient, since that was done on
             // the saving side.
-            ((StateHolder) result).restoreState(context, savedState);
+            Serializable [] tuple = (Serializable []) savedState;
+            ((StateHolder) result).restoreState(context, tuple[StateHolderTupleIndices.StateHolderSaverInstance.ordinal()]);
         }
         return result;
     }
diff --git a/jsf-tools/template-src/TypedCollections.java b/jsf-tools/template-src/TypedCollections.java
index 0caf39e..5726f11 100644
--- a/jsf-tools/template-src/TypedCollections.java
+++ b/jsf-tools/template-src/TypedCollections.java
@@ -1,27 +1,31 @@
 /*
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- * 
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- * 
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
  * The contents of this file are subject to the terms of either the GNU
  * General Public License Version 2 only ("GPL") or the Common Development
  * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
- * 
+ *
  * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- * 
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
  * Contributor(s):
- * 
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
@@ -133,8 +137,8 @@ import java.util.Set;
      *                the map to cast
      * @param keyType
      *                the class of the map's key type.
-     * @param keyType
-     *                the class of the map's key type.
+     * @param valueType
+     *                the class of the map's value type.
      * @return the dynamically-type checked map.
      * @throws java.lang.ClassCastException
      */
diff --git a/legal/jsf-cddl/BINARY_LICENSE.txt b/legal/jsf-cddl/BINARY_LICENSE.txt
index 49238f7..e99e5df 100644
--- a/legal/jsf-cddl/BINARY_LICENSE.txt
+++ b/legal/jsf-cddl/BINARY_LICENSE.txt
@@ -1,22 +1,22 @@
-SUN MICROSYSTEMS, INC. SOFTWARE LICENSE AGREEMENTS
+ORACLE AMERICA, INC. SOFTWARE LICENSE AGREEMENTS
 
-SUN MICROSYSTEMS, INC. ("SUN") IS WILLING TO LICENSE THE BELOW DEFINED SOFTWARE TO YOU ONLY UPON THE CONDITION THAT YOU ACCEPT ALL OF THE TERMS CONTAINED IN THIS SOFTWARE LICENSE AGREEMENT ("AGREEMENT").� PLEASE READ THE AGREEMENT CAREFULLY.� BY DOWNLOADING OR INSTALLING THIS SOFTWARE, YOU ACCEPT THE FULL TERMS OF THE AGREEMENT.
+ORACLE AMERICA, INC. ("ORACLE") IS WILLING TO LICENSE THE BELOW DEFINED SOFTWARE TO YOU ONLY UPON THE CONDITION THAT YOU ACCEPT ALL OF THE TERMS CONTAINED IN THIS SOFTWARE LICENSE AGREEMENT ("AGREEMENT").� PLEASE READ THE AGREEMENT CAREFULLY.� BY DOWNLOADING OR INSTALLING THIS SOFTWARE, YOU ACCEPT THE FULL TERMS OF THE AGREEMENT.
 
 1. Definitions. 
 
-"Software" means all the portions of the GlassFish distribution provided by Sun only in binary code form, and including any updates or error corrections or documentation provided by Sun under this Agreement.
+"Software" means all the portions of the GlassFish distribution provided by Oracle only in binary code form, and including any updates or error corrections or documentation provided by Oracle under this Agreement.
 
 2. Permitted Uses.
 
-Subject to the terms and conditions of this Agreement and restrictions and exceptions set forth in the Software's documentation, Sun grants you a non-exclusive, non-transferable, limited license without fees to
+Subject to the terms and conditions of this Agreement and restrictions and exceptions set forth in the Software's documentation, Oracle grants you a non-exclusive, non-transferable, limited license without fees to
 
 (a) reproduce and use internally the Software for the purposes of developing or running GlassFish or modified versions of GlassFish.
 
-(b) reproduce and distribute the Software (and also portions of Software identified as Redistributable in the documentation accompanying Software), provided that you (i) distribute the Software or Redistributables bundled as part of, and for the sole purpose of running, GlassFish or modified versions of GlassFish; (ii) do not remove or alter any proprietary legends or notices contained in or on the Software or Redistributables, (iii) only distribute the Software or Redistributables subje [...]
+(b) reproduce and distribute the Software (and also portions of Software identified as Redistributable in the documentation accompanying Software), provided that you (i) distribute the Software or Redistributables bundled as part of, and for the sole purpose of running, GlassFish or modified versions of GlassFish; (ii) do not remove or alter any proprietary legends or notices contained in or on the Software or Redistributables, (iii) only distribute the Software or Redistributables subje [...]
 
 3. Restrictions.
 
-(a) The copies of Software provided to you under this Agreement is licensed, not sold, to you by Sun. Sun reserves all rights not expressly granted. 
+(a) The copies of Software provided to you under this Agreement is licensed, not sold, to you by Oracle. Oracle reserves all rights not expressly granted. 
 
 (b) You may not modify Software. However if the documentation accompanying Software lists specific portions of Software, such as header files, class libraries, reference source code, and/or redistributable files, that may be handled differently, you may do so only as provided in the documentation. 
 
@@ -26,31 +26,31 @@ Subject to the terms and conditions of this Agreement and restrictions and excep
 
 (e) Unless enforcement is prohibited by applicable law, you may not decompile, or reverse engineer Software. 
 
-(f) The terms and conditions of this Agreement will apply to any Software updates, provided to you at Sun's discretion, that replace and/or supplement the original Software, unless such update contains a separate license. 
+(f) The terms and conditions of this Agreement will apply to any Software updates, provided to you at Oracle's discretion, that replace and/or supplement the original Software, unless such update contains a separate license. 
 
 (g) Software is confidential and copyrighted. 
 
-(h) Software is not designed, licensed or intended for use in the design, construction, operation or maintenance of any nuclear facility and Sun and its licensors disclaim any express or implied warranty of fitness for such uses. 
+(h) Software is not designed, licensed or intended for use in the design, construction, operation or maintenance of any nuclear facility and Oracle and its licensors disclaim any express or implied warranty of fitness for such uses. 
 
-(i) No right, title or interest in or to any trademark, service mark, logo or trade name of Sun or its licensors is granted under this Agreement. 
+(i) No right, title or interest in or to any trademark, service mark, logo or trade name of Oracle or its licensors is granted under this Agreement. 
 
-(j) If your Permitted Use in this Agreement permits the distribution Software or portions of the Software, you may only distribute the Software subject to a license agreement that protects Sun's interests consistent with the terms contained in this Agreement.
+(j) If your Permitted Use in this Agreement permits the distribution Software or portions of the Software, you may only distribute the Software subject to a license agreement that protects Oracle's interests consistent with the terms contained in this Agreement.
 
 4. Java Compatibility and Open Source.
 
 Software may contain Java technology. You may not create additional classes to, or modifications of, the Java technology, except under compatibility requirements available under a separate agreement available at www.java.net.
 
-Sun supports and benefits from the global community of open source developers, and thanks the community for its important contributions and open standards-based technology, which Sun has adopted into many of its products.
+Oracle supports and benefits from the global community of open source developers, and thanks the community for its important contributions and open standards-based technology, which Oracle has adopted into many of its products.
 
 Please note that portions of Software may be provided with notices and open source licenses from such communities and third parties that govern the use of those portions, and any licenses granted hereunder do not alter any rights and obligations you may have under such open source licenses, however, the disclaimer of warranty and limitation of liability provisions in this Agreement will apply to all Software in this distribution.
 
 5. Term and Termination. 
 
-The Agreement is effective on the Date you receive the Software and remains effective until terminated.  Your rights under this Agreement will terminate immediately without notice from Sun if you materially breach it or take any action in derogation of Sun's and/or its licensors' rights to Software. Sun may terminate this Agreement should any Software become, or in Sun's reasonable opinion likely to become, the subject of a claim of intellectual property infringement or trade secret misa [...]
+The Agreement is effective on the Date you receive the Software and remains effective until terminated.  Your rights under this Agreement will terminate immediately without notice from Oracle if you materially breach it or take any action in derogation of Oracle's and/or its licensors' rights to Software. Oracle may terminate this Agreement should any Software become, or in Oracle's reasonable opinion likely to become, the subject of a claim of intellectual property infringement or trade [...]
 
 6. Limited Warranty. 
 
-Sun warrants to you that for a period of 90 days from the date of receipt, the media on which Software is furnished (if any) will be free of defects in materials and workmanship under normal use. Except for the foregoing, Software is provided "AS IS". Your exclusive remedy and Sun's entire liability under this limited warranty will be at Sun's option to replace Software media or refund the fee paid for Software. Some states do not allow limitations on certain implied warranties, so the a [...]
+Oracle warrants to you that for a period of 90 days from the date of receipt, the media on which Software is furnished (if any) will be free of defects in materials and workmanship under normal use. Except for the foregoing, Software is provided "AS IS". Your exclusive remedy and Oracle's entire liability under this limited warranty will be at Oracle's option to replace Software media or refund the fee paid for Software. Some states do not allow limitations on certain implied warranties, [...]
 
 7. Disclaimer of Warranty. 
 
@@ -58,7 +58,7 @@ UNLESS SPECIFIED IN THIS AGREEMENT, ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENT
 
 8. Limitation of Liability. 
 
-TO THE EXTENT NOT PROHIBITED BY LAW, IN NO EVENT WILL SUN OR ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR SPECIAL, INDIRECT, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF OR RELATED TO THE USE OF OR INABILITY TO USE SOFTWARE, EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. In no event will Sun's liability to you, whether in contract, tort (including negligence), or otherwise, ex [...]
+TO THE EXTENT NOT PROHIBITED BY LAW, IN NO EVENT WILL ORACLE OR ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR SPECIAL, INDIRECT, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF OR RELATED TO THE USE OF OR INABILITY TO USE SOFTWARE, EVEN IF ORACLE HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. In no event will Oracle's liability to you, whether in contract, tort (including negligence), or othe [...]
 
 9. Export Regulations. 
 
@@ -78,7 +78,7 @@ If any provision of this Agreement is held to be unenforceable, this Agreement w
 
 13. Integration. 
 
-This Agreement is the entire agreement between you and Sun relating to its subject matter. It supersedes all prior or contemporaneous oral or written communications, proposals, representations and warranties and prevails over any conflicting or additional terms of any quote, order, acknowledgment, or other communication between the parties relating to its subject matter during the term of this Agreement. No modification of this Agreement will be binding, unless in writing and signed by a [...]
+This Agreement is the entire agreement between you and Oracle relating to its subject matter. It supersedes all prior or contemporaneous oral or written communications, proposals, representations and warranties and prevails over any conflicting or additional terms of any quote, order, acknowledgment, or other communication between the parties relating to its subject matter during the term of this Agreement. No modification of this Agreement will be binding, unless in writing and signed b [...]
 
 
 
diff --git a/legal/jsf-cddl/CDDLGPLHeader.txt b/legal/jsf-cddl/CDDLGPLHeader.txt
index 36cd90b..ba2caf2 100644
--- a/legal/jsf-cddl/CDDLGPLHeader.txt
+++ b/legal/jsf-cddl/CDDLGPLHeader.txt
@@ -1,35 +1,39 @@
 /*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- *
- * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
- *
- * The contents of this file are subject to the terms of either the GNU
- * General Public License Version 2 only ("GPL") or the Common Development
- * and Distribution License("CDDL") (collectively, the "License").  You
- * may not use this file except in compliance with the License. You can obtain
- * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
- * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
- * language governing permissions and limitations under the License.
- *
- * When distributing the software, include this License Header Notice in each
- * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
- * Sun designates this particular file as subject to the "Classpath" exception
- * as provided by Sun in the GPL Version 2 section of the License file that
- * accompanied this code.  If applicable, add the following below the License
- * Header, with the fields enclosed by brackets [] replaced by your own
- * identifying information: "Portions Copyrighted [year]
- * [name of copyright owner]"
- *
- * Contributor(s):
- *
- * If you wish your version of this file to be governed by only the CDDL or
- * only the GPL Version 2, indicate your decision by adding "[Contributor]
- * elects to include this software in this distribution under the [CDDL or GPL
- * Version 2] license."  If you don't indicate a single choice of license, a
- * recipient has the option to distribute your version of this file under
- * either the CDDL, the GPL Version 2 or to extend the choice of license to
- * its licensees as provided above.  However, if you add GPL Version 2 code
- * and therefore, elected the GPL Version 2 license, then the option applies
- * only if the new code is made subject to such option by the copyright
- * holder.
+ *  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+ *  Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+ *  The contents of this file are subject to the terms of either the GNU
+ *  General Public License Version 2 only ("GPL") or the Common Development
+ *  and Distribution License("CDDL") (collectively, the "License").  You
+ *  may not use this file except in compliance with the License.  You can
+ *  obtain a copy of the License at
+ *  https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ *  or packager/legal/LICENSE.txt.  See the License for the specific
+ *  language governing permissions and limitations under the License.
+
+ *  When distributing the software, include this License Header Notice in each
+ *  file and include the License file at packager/legal/LICENSE.txt.
+
+ *  GPL Classpath Exception:
+ *  Oracle designates this particular file as subject to the "Classpath"
+ *  exception as provided by Oracle in the GPL Version 2 section of the License
+ *  file that accompanied this code.
+
+ *  Modifications:
+ *  If applicable, add the following below the License Header, with the fields
+ *  enclosed by brackets [] replaced by your own identifying information:
+ *  "Portions Copyright [year] [name of copyright owner]"
+
+ *  Contributor(s):
+ *  If you wish your version of this file to be governed by only the CDDL or
+ *  only the GPL Version 2, indicate your decision by adding "[Contributor]
+ *  elects to include this software in this distribution under the [CDDL or GPL
+ *  Version 2] license."  If you don't indicate a single choice of license, a
+ *  recipient has the option to distribute your version of this file under
+ *  either the CDDL, the GPL Version 2 or to extend the choice of license to
+ *  its licensees as provided above.  However, if you add GPL Version 2 code
+ *  and therefore, elected the GPL Version 2 license, then the option applies
+ *  only if the new code is made subject to such option by the copyright
+ *  holder.
  */
diff --git a/legal/jsf-cddl/COPYRIGHT b/legal/jsf-cddl/COPYRIGHT
index 3b37f75..e430406 100644
--- a/legal/jsf-cddl/COPYRIGHT
+++ b/legal/jsf-cddl/COPYRIGHT
@@ -1,80 +1,37 @@
-Copyright 2004-2005 Sun Microsystems, Inc., 4150 Network Circle, 
-Santa Clara, California 95054, U.S.A. All Rights Reserved.
-
-U.S. Government Rights - Commercial software.  Government users are subject 
-to the Sun Microsystems, Inc. standard license agreement and applicable 
-provisions of the FAR and its supplements.  
-
-Use is subject to license terms.
-
-This distribution may include materials developed by third parties.
-
-Parts of the product may be derived from Berkeley BSD systems, licensed from 
-the University of California. UNIX is a registered trademark in the U.S. and 
-in other countries, exclusively licensed through X/Open Company, Ltd.
-
-Sun, Sun Microsystems, the Sun logo, Java, Jini, J2EE, JavaServer Pages,
-JavaServer Faces, Enterprise JavaBeans, Java Naming and Directory
-Interface, EJB, J2SE, JSTL, JDBC, JavaMail, JAXP, SAAJ, JAXR and JAX RPC
-are trademarks or registered trademarks of Sun Microsystems, Inc. in the
-U.S. and other countries.
-
-The OPEN LOOK and Sun(TM) Graphical User Interface was developed by Sun
-Microsystems, Inc. for its users and licensees. Sun acknowledges the pioneering
-efforts of Xerox in researching and developing the concept of visual or
-graphical user interfaces for the computer industry. Sun holds a non-exclusive 
-license from Xerox to the Xerox Graphical User Interface, which license also 
-covers Sun's licensees who implement OPEN LOOK GUIs and otherwise comply with
-Sun's written license agreements.
-
-This product is covered and controlled by U.S. Export Control laws and may 
-be subject to the export or import laws in other countries.  Nuclear, missile, 
-chemical biological weapons or nuclear maritime end uses or end users,
-whether direct or indirect, are strictly prohibited.  Export or reexport to 
-countries subject to U.S. embargo or to entities identified on U.S. export 
-exclusion lists, including, but not limited to, the denied persons and 
-specially designated nationals lists is strictly prohibited.
-
-Copyright 2004-2005 Sun Microsystems, Inc., 4150 Network Circle,
-Santa Clara, California 95054, Etats-Unis. Tous Droits Reserves.
-
-L'utilisation est soumise aux termes du contrat de licence.
-
-Cette distribution peut comprendre des composants developpes par des 
-tierces parties.
-
-Des parties de ce produit pourront etre derivees des systemes Berkeley BSD 
-licencies par l'Universite de Californie. UNIX est une marque deposee aux 
-Etats-Unis et dans d'autres pays et licenciee exclusivement par X/Open 
-Company, Ltd.
-
-Sun, Sun Microsystems, le logo Sun, Java, Jini, J2EE, JavaServer Pages,
-JavaServer Faces, Enterprise JavaBeans, Java Naming and Directory
-Interface, EJB, J2SE, JSTL, JDBC, JavaMail, JAXP, SAAJ, JAXR et JAX RPC
-sont des marques de fabrique ou des marques deposees de Sun
-Microsystems, Inc. aux Etats-Unis et dans d'autres pays.
-
-L'interface d'utilisation graphique OPEN LOOK et Sun(TM) a ete developpee par 
-Sun Microsystems, Inc. pour ses utilisateurs et licencies. Sun reconnaet les 
-efforts de pionniers de Xerox pour la recherche et le developpement du concept 
-des interfaces d'utilisation   visuelle ou graphique pour l'industrie de l'infor
-matique. Sun detient une license non exclusive de Xerox sur l'interface d'utilis
-ation graphique Xerox, cette licence couvrant egalement les licencies de Sun 
-qui mettent en place l'interface d'utilisation graphique OPEN LOOK et qui, en 
-outre, se conforment aux licences ecrites de Sun.
-
-Ce produit est soumis a la legislation americaine en matiere de contrele des 
-exportations et peut etre soumis a la reglementation en vigueur dans d'autres 
-pays dans le domaine des exportations et importations. Les utilisations, ou 
-utilisateurs finaux, pour des armes nucleaires,des missiles, des armes 
-biologiques et chimiques ou du nucleaire maritime, directement ou indirectement,
-sont strictement interdites. Les exportations ou reexportations vers les pays 
-sous embargo americain, ou vers des entites figurant sur les listes d'exclusion
-d'exportation americaines, y compris, mais de maniere non exhaustive, la 
-liste de personnes qui font objet d'un ordre de ne pas participer, d'une facon
-directe ou indirecte, aux exportations des produits ou des services qui sont 
-regis  par la legislation americaine en matiere de controle des exportations
-et la liste de ressortissants specifiquement designes, sont rigoureusement 
-interdites.
-
-
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
diff --git a/legal/jsf-cddl/LICENSE.txt b/legal/jsf-cddl/LICENSE.txt
index 4aea537..821b2db 100644
--- a/legal/jsf-cddl/LICENSE.txt
+++ b/legal/jsf-cddl/LICENSE.txt
@@ -1,263 +1,37 @@
-COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0
-
-1. Definitions.
-
-   1.1. Contributor. means each individual or entity that creates or contributes to the creation of Modifications.
-
-   1.2. Contributor Version. means the combination of the Original Software, prior Modifications used by a Contributor (if any), and the Modifications made by that particular Contributor.
-
-   1.3. Covered Software. means (a) the Original Software, or (b) Modifications, or (c) the combination of files containing Original Software with files containing Modifications, in each case including portions thereof.
-
-   1.4. Executable. means the Covered Software in any form other than Source Code.
-
-   1.5. Initial Developer. means the individual or entity that first makes Original Software available under this License.
-
-   1.6. Larger Work. means a work which combines Covered Software or portions thereof with code not governed by the terms of this License.
-
-   1.7. License. means this document.
-
-   1.8. Licensable. means having the right to grant, to the maximum extent possible, whether at the time of the initial grant or subsequently acquired, any and all of the rights conveyed herein.
-
-   1.9. Modifications. means the Source Code and Executable form of any of the following:
-
-        A. Any file that results from an addition to, deletion from or modification of the contents of a file containing Original Software or previous Modifications;
-
-        B. Any new file that contains any part of the Original Software or previous Modification; or
-
-        C. Any new file that is contributed or otherwise made available under the terms of this License.
-
-   1.10. Original Software. means the Source Code and Executable form of computer software code that is originally released under this License.
-
-   1.11. Patent Claims. means any patent claim(s), now owned or hereafter acquired, including without limitation, method, process, and apparatus claims, in any patent Licensable by grantor.
-
-   1.12. Source Code. means (a) the common form of computer software code in which modifications are made and (b) associated documentation included in or with such code.
-
-   1.13. You. (or .Your.) means an individual or a legal entity exercising rights under, and complying with all of the terms of, this License. For legal entities, .You. includes any entity which controls, is controlled by, or is under common control with You. For purposes of this definition, .control. means (a) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (b) ownership of more than fifty percent (50%) of the outs [...]
-
-2. License Grants.
-
-      2.1. The Initial Developer Grant.
-
-      Conditioned upon Your compliance with Section 3.1 below and subject to third party intellectual property claims, the Initial Developer hereby grants You a world-wide, royalty-free, non-exclusive license:
-
-         (a) under intellectual property rights (other than patent or trademark) Licensable by Initial Developer, to use, reproduce, modify, display, perform, sublicense and distribute the Original Software (or portions thereof), with or without Modifications, and/or as part of a Larger Work; and
-
-         (b) under Patent Claims infringed by the making, using or selling of Original Software, to make, have made, use, practice, sell, and offer for sale, and/or otherwise dispose of the Original Software (or portions thereof).
-
-        (c) The licenses granted in Sections 2.1(a) and (b) are effective on the date Initial Developer first distributes or otherwise makes the Original Software available to a third party under the terms of this License.
-
-        (d) Notwithstanding Section 2.1(b) above, no patent license is granted: (1) for code that You delete from the Original Software, or (2) for infringements caused by: (i) the modification of the Original Software, or (ii) the combination of the Original Software with other software or devices.
-
-    2.2. Contributor Grant.
-
-    Conditioned upon Your compliance with Section 3.1 below and subject to third party intellectual property claims, each Contributor hereby grants You a world-wide, royalty-free, non-exclusive license:
-
-        (a) under intellectual property rights (other than patent or trademark) Licensable by Contributor to use, reproduce, modify, display, perform, sublicense and distribute the Modifications created by such Contributor (or portions thereof), either on an unmodified basis, with other Modifications, as Covered Software and/or as part of a Larger Work; and
-
-        (b) under Patent Claims infringed by the making, using, or selling of Modifications made by that Contributor either alone and/or in combination with its Contributor Version (or portions of such combination), to make, use, sell, offer for sale, have made, and/or otherwise dispose of: (1) Modifications made by that Contributor (or portions thereof); and (2) the combination of Modifications made by that Contributor with its Contributor Version (or portions of such combination).
-
-        (c) The licenses granted in Sections 2.2(a) and 2.2(b) are effective on the date Contributor first distributes or otherwise makes the Modifications available to a third party.
-
-        (d) Notwithstanding Section 2.2(b) above, no patent license is granted: (1) for any code that Contributor has deleted from the Contributor Version; (2) for infringements caused by: (i) third party modifications of Contributor Version, or (ii) the combination of Modifications made by that Contributor with other software (except as part of the Contributor Version) or other devices; or (3) under Patent Claims infringed by Covered Software in the absence of Modifications made by that [...]
-
-3. Distribution Obligations.
-
-      3.1. Availability of Source Code.
-      Any Covered Software that You distribute or otherwise make available in Executable form must also be made available in Source Code form and that Source Code form must be distributed only under the terms of this License. You must include a copy of this License with every copy of the Source Code form of the Covered Software You distribute or otherwise make available. You must inform recipients of any such Covered Software in Executable form as to how they can obtain such Covered Soft [...]
-
-      3.2. Modifications.
-      The Modifications that You create or to which You contribute are governed by the terms of this License. You represent that You believe Your Modifications are Your original creation(s) and/or You have sufficient rights to grant the rights conveyed by this License.
-
-      3.3. Required Notices.
-      You must include a notice in each of Your Modifications that identifies You as the Contributor of the Modification. You may not remove or alter any copyright, patent or trademark notices contained within the Covered Software, or any notices of licensing or any descriptive text giving attribution to any Contributor or the Initial Developer.
-
-      3.4. Application of Additional Terms.
-      You may not offer or impose any terms on any Covered Software in Source Code form that alters or restricts the applicable version of this License or the recipients. rights hereunder. You may choose to offer, and to charge a fee for, warranty, support, indemnity or liability obligations to one or more recipients of Covered Software. However, you may do so only on Your own behalf, and not on behalf of the Initial Developer or any Contributor. You must make it absolutely clear that an [...]
-
-      3.5. Distribution of Executable Versions.
-      You may distribute the Executable form of the Covered Software under the terms of this License or under the terms of a license of Your choice, which may contain terms different from this License, provided that You are in compliance with the terms of this License and that the license for the Executable form does not attempt to limit or alter the recipient.s rights in the Source Code form from the rights set forth in this License. If You distribute the Covered Software in Executable  [...]
-
-      3.6. Larger Works.
-      You may create a Larger Work by combining Covered Software with other code not governed by the terms of this License and distribute the Larger Work as a single product. In such a case, You must make sure the requirements of this License are fulfilled for the Covered Software.
-
-4. Versions of the License.
-
-      4.1. New Versions.
-      Sun Microsystems, Inc. is the initial license steward and may publish revised and/or new versions of this License from time to time. Each version will be given a distinguishing version number. Except as provided in Section 4.3, no one other than the license steward has the right to modify this License.
-
-      4.2. Effect of New Versions.
-      You may always continue to use, distribute or otherwise make the Covered Software available under the terms of the version of the License under which You originally received the Covered Software. If the Initial Developer includes a notice in the Original Software prohibiting it from being distributed or otherwise made available under any subsequent version of the License, You must distribute and make the Covered Software available under the terms of the version of the License under [...]
-
-      4.3. Modified Versions.
-      When You are an Initial Developer and You want to create a new license for Your Original Software, You may create and use a modified version of this License if You: (a) rename the license and remove any references to the name of the license steward (except to note that the license differs from this License); and (b) otherwise make it clear that the license contains terms which differ from this License.
-
-5. DISCLAIMER OF WARRANTY.
-
-   COVERED SOFTWARE IS PROVIDED UNDER THIS LICENSE ON AN .AS IS. BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE COVERED SOFTWARE IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED SOFTWARE IS WITH YOU. SHOULD ANY COVERED SOFTWARE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME  [...]
-
-6. TERMINATION.
-
-      6.1. This License and the rights granted hereunder will terminate automatically if You fail to comply with terms herein and fail to cure such breach within 30 days of becoming aware of the breach. Provisions which, by their nature, must remain in effect beyond the termination of this License shall survive.
-
-      6.2. If You assert a patent infringement claim (excluding declaratory judgment actions) against Initial Developer or a Contributor (the Initial Developer or Contributor against whom You assert such claim is referred to as .Participant.) alleging that the Participant Software (meaning the Contributor Version where the Participant is a Contributor or the Original Software where the Participant is the Initial Developer) directly or indirectly infringes any patent, then any and all rig [...]
-
-      6.3. In the event of termination under Sections 6.1 or 6.2 above, all end user licenses that have been validly granted by You or any distributor hereunder prior to termination (excluding licenses granted to You by any distributor) shall survive termination.
-
-7. LIMITATION OF LIABILITY.
-
-   UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED SOFTWARE, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOST PROFITS, LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND AL [...]
-
-8. U.S. GOVERNMENT END USERS.
-
-   The Covered Software is a .commercial item,. as that term is defined in 48 C.F.R. 2.101 (Oct. 1995), consisting of .commercial computer software. (as that term is defined at 48 C.F.R. � 252.227-7014(a)(1)) and .commercial computer software documentation. as such terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), all U.S. Government End Users acquire Covered Software with only those rights set forth [...]
-
-9. MISCELLANEOUS.
-
-   This License represents the complete agreement concerning subject matter hereof. If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it enforceable. This License shall be governed by the law of the jurisdiction specified in a notice contained within the Original Software (except to the extent applicable law, if any, provides otherwise), excluding such jurisdiction.s conflict-of-law provisions. Any litigati [...]
-
-10. RESPONSIBILITY FOR CLAIMS.
-
-   As between Initial Developer and the Contributors, each party is responsible for claims and damages arising, directly or indirectly, out of its utilization of rights under this License and You agree to work with Initial Developer and Contributors to distribute such responsibility on an equitable basis. Nothing herein is intended or shall be deemed to constitute any admission of liability.
-
-   NOTICE PURSUANT TO SECTION 9 OF THE COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL)
-
-   The code released under the CDDL shall be governed by the laws of the State of California (excluding conflict-of-law provisions). Any litigation relating to this License shall be subject to the jurisdiction of the Federal Courts of the Northern District of California and the state courts of the State of California, with venue lying in Santa Clara County, California.
-
-
-The GNU General Public License (GPL) Version 2, June 1991
-
-
-Copyright (C) 1989, 1991 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.
-
-Preamble
-
-The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library Genera [...]
-
-When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things.
-
-To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it.
-
-For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights.
-
-We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software.
-
-Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations.
-
-Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all.
-
-The precise terms and conditions for copying, distribution and modification follow.
-
-
-TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
-0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. ( [...]
-
-Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does.
-
-1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee.
-
-2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions:
-
-   a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change.
-
-   b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License.
-
-   c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself i [...]
-
-These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose p [...]
-
-Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License.
-
-3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following:
-
-   a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or,
-
-   b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or,
-
-   c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major co [...]
-
-If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code.
-
-4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.
-
-5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works ba [...]
-
-6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License.
-
-7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not dist [...]
-
-If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances.
-
-It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/dono [...]
-
-This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License.
-
-8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License.
-
-9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns.
-
-Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation.
-
-10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally.
-
-NO WARRANTY
-
-11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  [...]
-
-12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO  [...]
-
-END OF TERMS AND CONDITIONS
-
-
-How to Apply These Terms to Your New Programs
-
-If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms.
-
-To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found.
-
-   One line to give the program's name and a brief idea of what it does.
-
-   Copyright (C)
-
-   This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this when it starts in an interactive mode:
-
-   Gnomovision version 69, Copyright (C) year name of author
-   Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program.
-
-You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names:
-
-   Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
-   signature of Ty Coon, 1 April 1989
-   Ty Coon, President of Vice
-
-This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Library General Public License instead of this License.
-
-
-"CLASSPATH" EXCEPTION TO THE GPL VERSION 2
-
-Certain source files distributed by Sun Microsystems, Inc. are subject to the following clarification and special exception to the GPL Version 2, but only where Sun has expressly included in the particular source file's header the words
-
-"Sun designates this particular file as subject to the "Classpath" exception as provided by Sun in the License file that accompanied this code."
-
-Linking this library statically or dynamically with other modules is making a combined work based on this library. Thus, the terms and conditions of the GNU General Public License Version 2 cover the whole combination.
-
-As a special exception, the copyright holders of this library give you permission to link this library with independent modules to produce an executable, regardless of the license terms of these independent modules, and to copy and distribute the resulting executable under terms of your choice, provided that you also meet, for each linked independent module, the terms and conditions of the license of that module.? An independent module is a module which is not derived from or based on th [...]
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
diff --git a/nbproject/.cvsignore b/nbproject/.cvsignore
new file mode 100644
index 0000000..3e18ebf
--- /dev/null
+++ b/nbproject/.cvsignore
@@ -0,0 +1 @@
+private
diff --git a/nbproject/project.xml b/nbproject/project.xml
index b04e290..0ac3abd 100644
--- a/nbproject/project.xml
+++ b/nbproject/project.xml
@@ -3,35 +3,43 @@
     <type>org.netbeans.modules.ant.freeform</type>
     <configuration>
         <general-data xmlns="http://www.netbeans.org/ns/freeform-project/1">
-            <name>mojarra-2.0.3-SNAPSHOT</name>
+            <name>mojarra-2.2.8-SNAPSHOT</name>
         </general-data>
         <general-data xmlns="http://www.netbeans.org/ns/freeform-project/2">
             <!-- Do not use Project Properties customizer when editing this file manually. -->
-            <name>mojarra-2.0.3-SNAPSHOT</name>
-            <properties/>
+            <name>mojarra-2.2.8-SNAPSHOT</name>
+            <properties>
+                <property-file>build.properties</property-file>
+            </properties>
             <folders>
                 <source-folder>
                     <label>Mojarra</label>
                     <location>.</location>
-                    <encoding>MacRoman</encoding>
+                    <encoding>UTF-8</encoding>
+                </source-folder>
+                <source-folder>
+                    <label>jsf-ri/build/generate</label>
+                    <type>java</type>
+                    <location>jsf-ri/build/generate</location>
+                    <encoding>UTF-8</encoding>
+                </source-folder>
+                <source-folder>
+                    <label>jsf-api/build/generate</label>
+                    <type>java</type>
+                    <location>jsf-api/build/generate</location>
+                    <encoding>UTF-8</encoding>
                 </source-folder>
                 <source-folder>
                     <label>jsf-api/src/main/java</label>
                     <type>java</type>
                     <location>jsf-api/src/main/java</location>
-                    <encoding>MacRoman</encoding>
+                    <encoding>UTF-8</encoding>
                 </source-folder>
                 <source-folder>
                     <label>jsf-ri/src/main/java</label>
                     <type>java</type>
                     <location>jsf-ri/src/main/java</location>
-                    <encoding>MacRoman</encoding>
-                </source-folder>
-                <source-folder>
-                    <label>jsf-ri/test</label>
-                    <type>java</type>
-                    <location>jsf-ri/test</location>
-                    <encoding>MacRoman</encoding>
+                    <encoding>UTF-8</encoding>
                 </source-folder>
             </folders>
             <ide-actions>
@@ -55,6 +63,14 @@
             <view>
                 <items>
                     <source-folder style="packages">
+                        <label>jsf-ri/build/generate</label>
+                        <location>jsf-ri/build/generate</location>
+                    </source-folder>
+                    <source-folder style="packages">
+                        <label>jsf-api/build/generate</label>
+                        <location>jsf-api/build/generate</location>
+                    </source-folder>
+                    <source-folder style="packages">
                         <label>jsf-api/src/main/java</label>
                         <location>jsf-api/src/main/java</location>
                     </source-folder>
@@ -62,10 +78,6 @@
                         <label>jsf-ri/src/main/java</label>
                         <location>jsf-ri/src/main/java</location>
                     </source-folder>
-                    <source-folder style="packages">
-                        <label>jsf-ri/test</label>
-                        <location>jsf-ri/test</location>
-                    </source-folder>
                     <source-file>
                         <location>build.xml</location>
                     </source-file>
@@ -80,14 +92,36 @@
             </view>
             <subprojects/>
         </general-data>
-        <java-data xmlns="http://www.netbeans.org/ns/freeform-project-java/2">
+        <java-data xmlns="http://www.netbeans.org/ns/freeform-project-java/3">
             <compilation-unit>
                 <package-root>jsf-api/src/main/java</package-root>
                 <package-root>jsf-ri/src/main/java</package-root>
-                <package-root>jsf-ri/test</package-root>
-                <classpath mode="compile">dependencies/jars/el-api-1.0.jar:dependencies/jars/jsp-api-2.1.jar:dependencies/jars/jstl-1.2.jar:dependencies/jars/validation-api-1.0.0.GA.jar:dependencies/jars/servlet-api-3.0.20100224.jar:dependencies/jars/groovy-all-1.6.4.jar:dependencies/jars/junit-3.8.1.jar:lib/cactus-1.7.1-javaee5.jar:lib/jsf-extensions-test-time.jar</classpath>
-                <source-level>1.5</source-level>
+                <package-root>jsf-api/build/generate</package-root>
+                <package-root>jsf-ri/build/generate</package-root>
+                <classpath mode="compile">lib/jsf-extensions-test-time.jar:lib/cactus-1.7.1-javaee5.jar:dependencies/jars/cdi-api-1.1.jar:dependencies/jars/javaee-api-6.0.jar:dependencies/jars/groovy-all-1.6.9.jar:dependencies/jars/junit-3.8.1.jar</classpath>
+                <source-level>1.6</source-level>
             </compilation-unit>
         </java-data>
+        <spellchecker-wordlist xmlns="http://www.netbeans.org/ns/spellchecker-wordlist/1">
+            <word>Facelet</word>
+            <word>Facelets</word>
+            <word>FacesContext</word>
+            <word>FaceServlet</word>
+            <word>FacesServlet</word>
+            <word>http</word>
+            <word>hyperlink</word>
+            <word>hyperlinks</word>
+            <word>multipart</word>
+            <word>namespace</word>
+            <word>param</word>
+            <word>postback</word>
+            <word>renderers</word>
+            <word>servlet</word>
+            <word>stateful</word>
+            <word>stylesheets</word>
+            <word>subclassed</word>
+            <word>UIComponent</word>
+            <word>url</word>
+        </spellchecker-wordlist>
     </configuration>
 </project>
diff --git a/password.txt b/password.txt
index b3aec2d..e3be92d 100644
--- a/password.txt
+++ b/password.txt
@@ -1 +1 @@
-AS_ADMIN_PASSWORD=adminadmin
+AS_ADMIN_PASSWORD=
diff --git a/test/README-Weblogic.txt b/test/README-Weblogic.txt
new file mode 100644
index 0000000..30a9578
--- /dev/null
+++ b/test/README-Weblogic.txt
@@ -0,0 +1,166 @@
+
+Introduction
+============
+
+ This README contains helpful information to get you started with testing.
+ 
+ Note this README does not deal with building Mojarra from source, see the
+ top level directory README for more information on that.
+
+Install the required JAR files
+==============================
+
+  You will need to install some JAR files into your local Maven repository.
+  Execute the following command line from the top level test directory.
+
+     mvn clean install
+ 
+
+Use Weblogic for testing
+=========================
+
+  1. Configure settings.xml
+  2. Prepare Weblogic
+  3. Start Weblogic
+  4. Deploy the web application(s) you want to test
+  5. Run the tests
+  6. Stop Weblogic
+
+ 
+ Configure settings.xml
+ ----------------------
+
+  Make sure you have a weblogic.patch.home and weblogic.cargo.home defined
+  in your settings.xml
+
+    <properties>
+        <weblogic.cargo.home>C:/Weblogic12.1.3</weblogic.cargo.home>
+        <weblogic.patch.home>C:/Weblogic12.1.3</weblogic.patch.home>
+    </properties>
+      
+ 
+ Prepare Weblogic
+ ----------------
+
+  Copy the Mojarra version you want to test against into the Weblogic modules
+  directory.
+
+    mvn -N -Pweblogic-patch [-Djsf.version=x.y.z] validate
+
+  Note if you do not pass jsf.version it will default to the version under 
+  development.
+
+
+ Start your Weblogic server
+ ---------------------------
+
+  Start your Weblogic server.
+
+    mvn -N -Pweblogic-cargo com.oracle.weblogic:wls-maven-plugin:start-server
+  
+
+ Deploy the web application(s) you want to test
+ ----------------------------------------------
+
+  From any of the sub directories within the top level test directory you can
+  deploy all the web applications in that directory, which will cause all of
+  the web applications inside that directory to be deployed.
+
+  E.g. if you want to deploy all the tests that should work on a Servlet 3.0
+  compliant container you would issue the following command from within the
+  servlet30 directory
+
+    mvn -Pweblogic-cargo 
+      [-Dwebapp.projectStage=[Production|Development]]
+      [-Dwebapp.partialStateSaving=[true|false]] 
+      [-Dwebapp.stateSavingMethod=[server|client]] pre-integration-test
+
+  Note: if you do not pass -Dwebapp.projectStage it will default to Production,
+  likewise if you do not pass -Dwebapp.partialStateSaving it will default to
+  true and last if you do not pass -Dwebapp.stateSavingMethod it defaults to
+  server.
+
+
+ Run the tests
+ -------------
+
+  Once you have deployed the tests to Weblogic you are ready to go ahead and
+  test. From the same directory you deployed the web application(s) you will 
+  run the tests.
+
+    mvn -Pintegration
+      [-Dwebapp.projectStage=[Production|Development]]
+      [-Dwebapp.partialStateSaving=[true|false]] 
+      [-Dwebapp.stateSavingMethod=[server|client]] 
+      -Dintegration.serverPort=7001 verify
+
+  Note: Make sure you pass in the same -Dwebapp.xxx properties if you used them 
+        during deployment.
+
+
+ Stop your Weblogic server
+ ---------------------------
+
+  Stop your Weblogic server.
+
+    mvn -N -Pweblogic-cargo com.oracle.weblogic:wls-maven-plugin:stop-server
+
+
+Convenience scripts
+===================
+
+ You will find some convenience scripts in the test/bin directory that can make
+ it easier to do testing as they do the invocations described above in order.
+ 
+
+More specific testing
+=====================
+
+
+ Running a single test
+ ---------------------
+
+  To run a single test against a previously deployed web application, go into
+  the project directory of the deployed web application and issue the following:
+
+    mvn -Pintegration -Dit.test=IndexPageIT clean verify
+
+  Note: IndexPageIT is the name of the test class (note you can use regular
+        expressions to match more than one test class here).
+
+  Note: Make sure you pass in the same -Dwebapp.xxx properties if you used them 
+        during deployment.
+
+ 
+ Running a single test and a single method
+ -----------------------------------------
+
+  To run a single test and single method against a running container use:
+
+    mvn -Pintegration -Dit.test=VersionPageIT#testVerifyMojarraVersion verify
+
+  Note: VersionPageIT is the name of the test class, and testVerifyMojarraVersion
+        the name of the test method (note you can use regular expressions to 
+        match multiple test and methods).
+
+Testing using other servers
+===========================
+
+  Please see README.txt file for using Glassfish.
+  Please see README-Weblogic.text for using Weblogic.
+
+Pitfalls
+========
+
+ Since we are assuming a particular way of deployment you as the developer will
+ have to be aware of the following pitfalls that might crop up if you are doing
+ testing against different application servers.
+
+    1. Make sure the context root in weblogic-web.xml matches project.build.finalName,
+       if you do not the test harness will not be able to run the tests since it
+       relies on the integration.url used by the integration profile to be build up 
+       in the following way 
+
+        ${integration.protocol}://${integration.serverName}:$integration.serverPort}/${project.build.finalName}/
+ 
+--END
diff --git a/test/README.txt b/test/README.txt
new file mode 100644
index 0000000..1f16580
--- /dev/null
+++ b/test/README.txt
@@ -0,0 +1,199 @@
+
+Introduction
+============
+
+ This README contains helpful information to get you started with testing.
+ 
+ Note this README does not deal with building Mojarra from source, see the
+ top level directory README for more information on that.
+
+Install the required JAR files
+==============================
+
+  You will need to install some JAR files into your local Maven repository.
+  Execute the following command line from the top level test directory.
+
+     mvn clean install
+ 
+
+Use Glassfish for testing
+=========================
+
+  1. Configure settings.xml
+  2. Prepare Glassfish
+  3. Start Glassfish
+  4. Deploy the web application(s) you want to test
+  5. Run the tests
+  6. Stop Glassfish
+
+ 
+ Configure settings.xml
+ ----------------------
+
+  Make sure you have a glassfish.patch.home and glassfish.cargo.home defined
+  in your settings.xml
+
+    <properties>
+        <glassfish.cargo.home>C:/Glassfish4.0</glassfish.cargo.home>
+        <glassfish.patch.home>C:/Glassfish4.0</glassfish.patch.home>
+    </properties>
+      
+ 
+ Prepare Glassfish
+ -----------------
+
+  Copy the Mojarra version you want to test against into the Glassfish modules
+  directory.
+
+    mvn -N -Pglassfish-patch [-Djsf.version=x.y.z] validate
+
+  Note if you do not pass jsf.version it will default to the version under 
+  development.
+
+
+ Start your Glassfish server
+ ---------------------------
+
+  Start your Glassfish server.
+
+    mvn -N -Pglassfish-cargo cargo:start
+  
+
+ Deploy the web application(s) you want to test
+ ----------------------------------------------
+
+  From any of the sub directories within the top level test directory you can
+  deploy all the web applications in that directory, which will cause all of
+  the web applications inside that directory to be deployed.
+
+  E.g. if you want to deploy all the tests that should work on a Servlet 3.0
+  compliant container you would issue the following command from within the
+  servlet30 directory
+
+    mvn -Pglassfish-cargo 
+      [-Dwebapp.projectStage=[Production|Development]]
+      [-Dwebapp.partialStateSaving=[true|false]] 
+      [-Dwebapp.stateSavingMethod=[server|client]] cargo:redeploy
+
+  Note: if you do not pass -Dwebapp.projectStage it will default to Production,
+  likewise if you do not pass -Dwebapp.partialStateSaving it will default to
+  true and last if you do not pass -Dwebapp.stateSavingMethod it defaults to
+  server.
+
+
+ Run the tests
+ -------------
+
+  Once you have deployed the tests to Glassfish you are ready to go ahead and
+  test. From the same directory you deployed the web application(s) you will 
+  run the tests.
+
+    mvn -Pintegration
+      [-Dwebapp.projectStage=[Production|Development]]
+      [-Dwebapp.partialStateSaving=[true|false]] 
+      [-Dwebapp.stateSavingMethod=[server|client]] verify
+
+  Note: Make sure you pass in the same -Dwebapp.xxx properties if you used them 
+        during deployment.
+
+
+ Stop your Glassfish server
+ ---------------------------
+
+  Stop your Glassfish server.
+
+    mvn -N -Pglassfish-cargo cargo:stop
+
+
+Convenience scripts
+===================
+
+ You will find some convenience scripts in the test/bin directory that can make
+ it easier to do testing as they do the invocations described above in order.
+ 
+
+More specific testing
+=====================
+
+
+ Running a single test
+ ---------------------
+
+  If you are using NetBeans, you can usually just put the cursor in the
+  test method you want to run, set a breakpoint, and do "Debug Focused
+  Test Method".
+
+  To run a single test against a previously deployed web application, go into
+  the project directory of the deployed web application and issue the following:
+
+    mvn -Pintegration -Dit.test=IndexPageIT clean verify
+
+  Note: IndexPageIT is the name of the test class (note you can use regular
+        expressions to match more than one test class here).
+
+  Note: Make sure you pass in the same -Dwebapp.xxx properties if you used them 
+        during deployment.
+
+ 
+ Running a single test and a single method
+ -----------------------------------------
+
+  To run a single test and single method against a running container use:
+
+    mvn -Pintegration -Dit.test=VersionPageIT#testVerifyMojarraVersion verify
+
+  Note: VersionPageIT is the name of the test class, and testVerifyMojarraVersion
+        the name of the test method (note you can use regular expressions to 
+        match multiple test and methods).
+
+  To run a single unit test:
+
+    mvn -Dtest=FactoryFinderTestCase#testNoFacesContextInitially test
+
+    Note that when you make a change in the core code you must re-run
+    mvn.deploy.snapshot.local at the top level to cause the unit tests
+    to see the change.
+
+Testing using other servers
+===========================
+
+  Please see README-Tomcat.txt file for using Tomcat.
+  Please see README-Weblogic.text for using Weblogic.
+
+Pitfalls
+========
+
+ Since we are assuming a particular way of deployment you as the developer will
+ have to be aware of the following pitfalls that might crop up if you are doing
+ testing against different application servers.
+
+    1. Make sure the context root in glassfish-web.xml matches project.build.finalName,
+       if you do not the test harness will not be able to run the tests since it
+       relies on the integration.url used by the integration profile to be build up 
+       in the following way 
+
+        ${integration.protocol}://${integration.serverName}:$integration.serverPort}/${project.build.finalName}/
+
+Function of sub-directories in top-level test directory
+=======================================================
+
+ * agnostic - Application server agnostic tests (do not put any new projects in here).
+ * cluster - Cluster specific tests.
+ * glassfish - Glassfish specific tests.
+ * groovy - Groovy specific tests.
+ * javaee6 - JavaEE 6 specific tests.
+ * javaee6web - JavaEE 6 Web-Profile specific tests.
+ * javaee7 - JavaEE 7 specific tests.
+ * performance - Performance related tests.
+ * protocolaware - Protocol-aware tests (HTTP(S) switching related).
+ * quality - Quality project that tracks source code quality.
+ * selenium - Selenium tests.
+ * servlet30 - Servlet 3.0 specific tests.
+ * servlet31 - Servlet 3.1 specific tests.
+ * unit - Unit tests.
+ * util - Utililty JAR project for use by test projects.
+ * web-profile - JavaEE 6 Web-Profile specific tests (do not put any new projects in here).
+ * weblogic - Weblogic specific tests.
+ * weblogic12c - Weblogic 12c specific tests (do not put any new projects in here).
+
+--END
diff --git a/test/agnostic/ajax-namespace/nbactions.xml b/test/agnostic/ajax-namespace/nbactions.xml
new file mode 100644
index 0000000..871598e
--- /dev/null
+++ b/test/agnostic/ajax-namespace/nbactions.xml
@@ -0,0 +1,166 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--><actions>
+        <action>
+            <actionName>debug.test.single</actionName>
+            <goals>
+                <goal>failsafe:integration-test</goal>
+                
+            </goals>
+            <properties>
+                <test>ajax-namespace</test>
+                <forkMode>once</forkMode>
+                <maven.surefire.debug>-Xdebug -Xrunjdwp:transport=dt_socket,server=n,address=${jpda.address}</maven.surefire.debug>
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                <jpda.listen>true</jpda.listen>
+                <project.build.finalName>test-ajax-namespace</project.build.finalName>
+                <webapp.projectStage>Development</webapp.projectStage>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                <integration.serverPort>8080</integration.serverPort>
+                <integration.serverName>localhost</integration.serverName>
+                <integration.url>http://localhost:8080/test-agnostic-ajax-namespace/</integration.url>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+            </properties>
+            <activatedProfiles>
+                <activatedProfile>integration-failsafe</activatedProfile>
+            </activatedProfiles>
+        </action>
+        <action>
+            <actionName>test.single</actionName>
+            <goals>
+                <goal>test-compile</goal>
+                <goal>surefire:test</goal>
+            </goals>
+            <properties>
+                <project.build.finalName>test-ajax-namespace</project.build.finalName>
+                <integration.serverPort>8080</integration.serverPort>
+                <integration.serverName>localhost</integration.serverName>
+                <integration.url>http://localhost:8080/test-ajax-namespace/</integration.url>
+                <test>ajax-namespace</test>
+            </properties>
+        </action>
+        <action>
+            <actionName>build</actionName>
+            <goals>
+                <goal>install</goal>
+            </goals>
+            <properties>
+                <webapp.projectStage>Development</webapp.projectStage>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+            </properties>
+        </action>
+        <action>
+            <actionName>rebuild</actionName>
+            <goals>
+                <goal>clean</goal>
+                <goal>install</goal>
+            </goals>
+            <properties>
+                
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                
+                <webapp.projectStage>Development</webapp.projectStage>
+                
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                
+            </properties>
+        </action>
+        <action>
+            <actionName>build-with-dependencies</actionName>
+            <reactor>also-make</reactor>
+            <goals>
+                <goal>install</goal>
+            </goals>
+            <properties>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                <webapp.projectStage>Development</webapp.projectStage>
+            </properties>
+        </action>
+        <action>
+            <actionName>run</actionName>
+            <goals>
+                <goal>package</goal>
+            </goals>
+            <properties>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                <netbeans.deploy>true</netbeans.deploy>
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                <webapp.projectStage>Development</webapp.projectStage>
+            </properties>
+        </action>
+        <action>
+            <actionName>run.single.deploy</actionName>
+            <goals>
+                <goal>package</goal>
+            </goals>
+            <properties>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                <netbeans.deploy>true</netbeans.deploy>
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                <netbeans.deploy.clientUrlPart>${webpagePath}</netbeans.deploy.clientUrlPart>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                <webapp.projectStage>Development</webapp.projectStage>
+            </properties>
+        </action>
+        <action>
+            <actionName>debug.single.deploy</actionName>
+            <goals>
+                <goal>package</goal>
+            </goals>
+            <properties>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                <netbeans.deploy>true</netbeans.deploy>
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                <netbeans.deploy.debugmode>true</netbeans.deploy.debugmode>
+                <netbeans.deploy.clientUrlPart>${webpagePath}</netbeans.deploy.clientUrlPart>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                <webapp.projectStage>Development</webapp.projectStage>
+            </properties>
+        </action>
+    </actions>
diff --git a/test/agnostic/ajax-namespace/pom.xml b/test/agnostic/ajax-namespace/pom.xml
new file mode 100644
index 0000000..bc76ade
--- /dev/null
+++ b/test/agnostic/ajax-namespace/pom.xml
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <artifactId>pom</artifactId>
+    <groupId>com.sun.faces.test.agnostic</groupId>
+    <version>2.2.8-SNAPSHOT</version>
+  </parent>
+  
+  <groupId>com.sun.faces.test.agnostic.ajax-namespace</groupId>
+  <artifactId>ajax-namespace</artifactId>
+  <version>2.2.8-SNAPSHOT</version>
+  <packaging>war</packaging>
+  <name>Mojarra ${project.version} - Test - Agnostic - Ajax Namespace</name>
+
+  <build>
+    <finalName>test-agnostic-ajax-namespace</finalName>
+  </build>
+    <properties>
+        <netbeans.hint.deploy.server>gfv3ee6</netbeans.hint.deploy.server>
+    </properties>
+</project>
diff --git a/test/agnostic/ajax-namespace/src/main/java/com/sun/faces/test/agnostic/ajax_namespace/ApplicationFactoryImpl.java b/test/agnostic/ajax-namespace/src/main/java/com/sun/faces/test/agnostic/ajax_namespace/ApplicationFactoryImpl.java
new file mode 100644
index 0000000..9f4a80b
--- /dev/null
+++ b/test/agnostic/ajax-namespace/src/main/java/com/sun/faces/test/agnostic/ajax_namespace/ApplicationFactoryImpl.java
@@ -0,0 +1,77 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+
+package com.sun.faces.test.agnostic.ajax_namespace;
+
+import javax.faces.application.Application;
+import javax.faces.application.ApplicationFactory;
+
+public class ApplicationFactoryImpl extends ApplicationFactory {
+    private final ApplicationFactory parent;
+    private Application myApplication;
+
+    public ApplicationFactoryImpl(ApplicationFactory parent) {
+        this.parent = parent;
+    }
+
+    @Override
+    public ApplicationFactory getWrapped() {
+        return parent;
+    }
+
+    @Override
+    public Application getApplication() {
+        if (null == myApplication) {
+            Application fromParent = parent.getApplication();
+            myApplication = new ApplicationImpl(fromParent);
+        }
+        
+        return myApplication;
+    }
+
+    @Override
+    public void setApplication(Application application) {
+        this.myApplication = application;
+    }
+    
+    
+
+}
diff --git a/test/agnostic/ajax-namespace/src/main/java/com/sun/faces/test/agnostic/ajax_namespace/ApplicationImpl.java b/test/agnostic/ajax-namespace/src/main/java/com/sun/faces/test/agnostic/ajax_namespace/ApplicationImpl.java
new file mode 100644
index 0000000..5ab358e
--- /dev/null
+++ b/test/agnostic/ajax-namespace/src/main/java/com/sun/faces/test/agnostic/ajax_namespace/ApplicationImpl.java
@@ -0,0 +1,76 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+
+package com.sun.faces.test.agnostic.ajax_namespace;
+
+import javax.faces.FacesException;
+import javax.faces.application.Application;
+import javax.faces.application.ApplicationWrapper;
+import javax.faces.component.UIComponent;
+import javax.faces.component.UIViewRoot;
+
+public class ApplicationImpl extends ApplicationWrapper {
+
+    private final Application parent;
+
+    public ApplicationImpl(Application parent) {
+        this.parent = parent;
+    }
+
+    @Override
+    public Application getWrapped() {
+        return parent;
+    }
+
+    @Override
+    public UIComponent createComponent(String componentType) throws FacesException {
+        UIComponent result = null;
+        if (UIViewRoot.COMPONENT_TYPE.equals(componentType)) {
+            result = new NamingContainerViewRoot();
+        } else {
+            result = parent.createComponent(componentType); 
+        }
+        return result;
+    }
+    
+    
+    
+}
diff --git a/test/agnostic/ajax-namespace/src/main/java/com/sun/faces/test/agnostic/ajax_namespace/NamingContainerViewRoot.java b/test/agnostic/ajax-namespace/src/main/java/com/sun/faces/test/agnostic/ajax_namespace/NamingContainerViewRoot.java
new file mode 100644
index 0000000..775b0b4
--- /dev/null
+++ b/test/agnostic/ajax-namespace/src/main/java/com/sun/faces/test/agnostic/ajax_namespace/NamingContainerViewRoot.java
@@ -0,0 +1,59 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+
+package com.sun.faces.test.agnostic.ajax_namespace;
+
+import java.io.Serializable;
+
+import javax.faces.component.NamingContainer;
+import javax.faces.component.UIViewRoot;
+import javax.faces.context.FacesContext;
+
+public class NamingContainerViewRoot extends UIViewRoot implements NamingContainer, Serializable {
+
+	private static final long serialVersionUID = 1L;
+
+	@Override
+    public String getContainerClientId(FacesContext context) {
+        return "MyNamingContainer" + super.getContainerClientId(context); 
+    }
+    
+}
diff --git a/test/agnostic/ajax-namespace/src/main/java/com/sun/faces/test/agnostic/ajax_namespace/UserBean.java b/test/agnostic/ajax-namespace/src/main/java/com/sun/faces/test/agnostic/ajax_namespace/UserBean.java
new file mode 100644
index 0000000..5a59285
--- /dev/null
+++ b/test/agnostic/ajax-namespace/src/main/java/com/sun/faces/test/agnostic/ajax_namespace/UserBean.java
@@ -0,0 +1,94 @@
+package com.sun.faces.test.agnostic.ajax_namespace;
+
+import java.io.Serializable;
+import java.util.Date;
+
+
+import javax.faces.application.FacesMessage;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.SessionScoped;
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.validator.ValidatorException;
+
+ at ManagedBean
+ at SessionScoped
+public class UserBean implements Serializable {
+    
+    protected String firstName = "Duke";
+    protected String lastName = "Java";
+    protected Date dob;
+    protected String sex = "Unknown";
+    protected String email;
+    protected String serviceLevel = "medium";
+    
+    public UserBean() {}
+
+    public String getFirstName() {
+        return firstName;
+    }
+
+    public void setFirstName(String firstName) {
+        this.firstName = firstName;
+    }
+
+    public String getLastName() {
+        return lastName;
+    }
+
+    public void setLastName(String lastName) {
+        this.lastName = lastName;
+    }
+
+    public Date getDob() {
+        return dob;
+    }
+
+    public void setDob(Date dob) {
+        this.dob = dob;
+    }
+
+    public String getSex() {
+        return sex;
+    }
+
+    public void setSex(String sex) {
+        this.sex = sex;
+    }
+
+    public String getEmail() {
+        return email;
+    }
+
+    public void setEmail(String email) {
+        this.email = email;
+    }
+
+    public String getServiceLevel() {
+        return serviceLevel;
+    }
+
+    public void setServiceLevel(String serviceLevel) {
+        this.serviceLevel = serviceLevel;
+    }
+    
+    public void validateEmail(FacesContext context, UIComponent toValidate,
+            Object value) throws ValidatorException {
+        String emailStr = (String) value;
+        if (-1 == emailStr.indexOf("@")) {
+            FacesMessage message = new FacesMessage("Invalid email address");
+            throw new ValidatorException(message);
+        }
+    }
+
+    public String addConfirmedUser() {
+        // This method would call a database or other service and add the 
+        // confirmed user information.
+        // For now, we just place an informative message in request scope
+        FacesMessage doneMessage = 
+                new FacesMessage("Successfully added new user");
+        FacesContext.getCurrentInstance().addMessage(null, doneMessage);
+        return "done";
+    }
+}
+
diff --git a/test/agnostic/ajax-namespace/src/main/webapp/WEB-INF/faces-config.xml b/test/agnostic/ajax-namespace/src/main/webapp/WEB-INF/faces-config.xml
new file mode 100644
index 0000000..09a5dff
--- /dev/null
+++ b/test/agnostic/ajax-namespace/src/main/webapp/WEB-INF/faces-config.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+
+<faces-config xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.1" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_1.xsd">
+    <factory>
+        <application-factory>com.sun.faces.test.agnostic.ajax_namespace.ApplicationFactoryImpl</application-factory>
+    </factory>
+</faces-config>
\ No newline at end of file
diff --git a/test/agnostic/ajax-namespace/src/main/webapp/WEB-INF/glassfish-web.xml b/test/agnostic/ajax-namespace/src/main/webapp/WEB-INF/glassfish-web.xml
new file mode 100644
index 0000000..9e9c425
--- /dev/null
+++ b/test/agnostic/ajax-namespace/src/main/webapp/WEB-INF/glassfish-web.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
+<glassfish-web-app error-url="">
+  <context-root>/test-agnostic-ajax-namespace</context-root>
+  <class-loader delegate="true"/>
+  <jsp-config>
+    <property name="keepgenerated" value="true">
+      <description>Keep a copy of the generated servlet class' java code.</description>
+    </property>
+  </jsp-config>
+</glassfish-web-app>
diff --git a/test/agnostic/ajax-namespace/src/main/webapp/WEB-INF/web.xml b/test/agnostic/ajax-namespace/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..daf946a
--- /dev/null
+++ b/test/agnostic/ajax-namespace/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>${webapp.projectStage}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
+        <param-value>${webapp.partialStateSaving}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>${webapp.stateSavingMethod}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>com.sun.faces.namespaceParameters</param-name>
+        <param-value>true</param-value>
+    </context-param>
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <welcome-file-list>
+        <welcome-file>faces/index.xhtml</welcome-file>
+    </welcome-file-list>
+</web-app>
diff --git a/test/agnostic/ajax-namespace/src/main/webapp/index.xhtml b/test/agnostic/ajax-namespace/src/main/webapp/index.xhtml
new file mode 100644
index 0000000..c99d62c
--- /dev/null
+++ b/test/agnostic/ajax-namespace/src/main/webapp/index.xhtml
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+
+    <f:view>
+    
+    <h:head>
+        <title>Ajax Name spacing</title>
+    </h:head>
+        
+    <body>
+        <h:form id="ajaxForm" prependId="false">
+            <h:inputText id="ajaxInput" value="#{userBean.firstName}">
+                <f:ajax render="@form" />
+            </h:inputText>
+              <h:outputText id="ajaxOutput" value="#{userBean.firstName}" />
+        </h:form>
+        
+        <br />
+        
+        <h:form id="nonAjaxForm" prependId="false">
+            <h:inputText id="nonAjaxInput" value="#{userBean.lastName}" />
+               <h:outputText id="nonAjaxOutput" value="#{userBean.lastName}" />
+            <h:commandButton id="nonAjaxSubmit" value="submit" />
+        </h:form>
+        
+    </body>
+        
+    </f:view>
+</html>
+
diff --git a/test/agnostic/ajax-namespace/src/test/java/com/sun/faces/test/agnostic/ajax_namespace/Issue3031IT.java b/test/agnostic/ajax-namespace/src/test/java/com/sun/faces/test/agnostic/ajax_namespace/Issue3031IT.java
new file mode 100644
index 0000000..a3b53f1
--- /dev/null
+++ b/test/agnostic/ajax-namespace/src/test/java/com/sun/faces/test/agnostic/ajax_namespace/Issue3031IT.java
@@ -0,0 +1,135 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.ajax_namespace;
+
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
+import com.gargoylesoftware.htmlunit.html.HtmlElement;
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import static org.junit.Assert.assertTrue;
+
+public class Issue3031IT {
+    /**
+     * Stores the web URL.
+     */
+    private String webUrl;
+    /**
+     * Stores the web client.
+     */
+    private WebClient webClient;
+
+    /**
+     * Setup before testing.
+     * 
+     * @throws Exception when a serious error occurs.
+     */
+    @BeforeClass
+    public static void setUpClass() throws Exception {
+    }
+
+    /**
+     * Cleanup after testing.
+     * 
+     * @throws Exception when a serious error occurs.
+     */
+    @AfterClass
+    public static void tearDownClass() throws Exception {
+    }
+
+    /**
+     * Setup before testing.
+     */
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    /**
+     * Tear down after testing.
+     */
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testAjax() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl);
+        
+        HtmlElement input = (HtmlElement) page.getElementById("MyNamingContainerj_id1:ajaxInput");
+        assertTrue(null != input);
+        assertTrue(input instanceof HtmlTextInput);
+        HtmlTextInput textInput = (HtmlTextInput) input;
+        textInput.setText("MyText");
+        textInput.blur();
+        webClient.waitForBackgroundJavaScript(60000);
+        HtmlElement output = (HtmlElement) page.getElementById("MyNamingContainerj_id1:ajaxOutput");
+        assertTrue(output.asText().contains("MyText"));
+
+        
+    }
+    
+    @Test
+    public void testNonAjax() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl);
+        
+        HtmlElement input = (HtmlElement) page.getElementById("MyNamingContainerj_id1:nonAjaxInput");
+        assertTrue(null != input);
+        assertTrue(input instanceof HtmlTextInput);
+        HtmlTextInput textInput = (HtmlTextInput) input;
+        textInput.setText("MyNonAjaxText");
+        
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("MyNamingContainerj_id1:nonAjaxSubmit");
+        page = button.click();
+        
+        HtmlElement output = (HtmlElement) page.getElementById("MyNamingContainerj_id1:nonAjaxOutput");
+        assertTrue(output.asText().contains("MyNonAjaxText"));
+
+        
+    }
+
+}
diff --git a/test/agnostic/application/basic/nbactions.xml b/test/agnostic/application/basic/nbactions.xml
new file mode 100644
index 0000000..bb21488
--- /dev/null
+++ b/test/agnostic/application/basic/nbactions.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<actions>
+        <action>
+            <actionName>rebuild</actionName>
+            <goals>
+                <goal>clean</goal>
+                <goal>install</goal>
+            </goals>
+            <properties>
+                <webapp.partialStateSaving>true</webapp.partialStateSaving>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                <webapp.projectStage>Development</webapp.projectStage>
+            </properties>
+        </action>
+        <action>
+            <actionName>run</actionName>
+            <goals>
+                <goal>package</goal>
+            </goals>
+            <properties>
+                <webapp.partialStateSaving>true</webapp.partialStateSaving>
+                <netbeans.deploy>true</netbeans.deploy>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                <webapp.projectStage>Development</webapp.projectStage>
+            </properties>
+        </action>
+    </actions>
diff --git a/test/agnostic/application/basic/pom.xml b/test/agnostic/application/basic/pom.xml
new file mode 100644
index 0000000..61fb154
--- /dev/null
+++ b/test/agnostic/application/basic/pom.xml
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.agnostic.application</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.agnostic.application</groupId>
+    <artifactId>basic</artifactId>
+    <packaging>war</packaging>
+    <name>Mojarra ${project.version} - Test - Agnostic - Application - Basic</name>
+    <build>
+        <finalName>test-agnostic-application-basic</finalName>
+    </build>
+    <dependencies>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <version>4.11</version>
+            <scope>compile</scope>
+        </dependency>
+    </dependencies>
+    <properties>
+        <netbeans.hint.deploy.server>gfv3ee6</netbeans.hint.deploy.server>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/test/agnostic/application/basic/src/main/java/com/sun/faces/test/agnostic/application/basic/ApplicationConfigBean.java b/test/agnostic/application/basic/src/main/java/com/sun/faces/test/agnostic/application/basic/ApplicationConfigBean.java
new file mode 100644
index 0000000..617fed1
--- /dev/null
+++ b/test/agnostic/application/basic/src/main/java/com/sun/faces/test/agnostic/application/basic/ApplicationConfigBean.java
@@ -0,0 +1,464 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.agnostic.application.basic;
+
+import javax.faces.FacesException;
+import javax.faces.application.Application;
+import javax.faces.application.NavigationHandler;
+import javax.faces.application.StateManager;
+import javax.faces.application.ViewHandler;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.SessionScoped;
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.convert.Converter;
+import javax.faces.el.PropertyResolver;
+import javax.faces.el.VariableResolver;
+import javax.faces.event.ActionListener;
+import javax.faces.validator.LengthValidator;
+import javax.faces.validator.Validator;
+import java.util.Iterator;
+import java.util.Locale;
+
+import static org.junit.Assert.*;
+
+ at ManagedBean
+ at SessionScoped
+public class ApplicationConfigBean {
+
+    public static String standardComponentTypes[] = {
+        "javax.faces.Column",
+        "javax.faces.Command",
+        "javax.faces.Data",
+        "javax.faces.Form",
+        "javax.faces.Graphic",
+        "javax.faces.Input",
+        "javax.faces.Message",
+        "javax.faces.Messages",
+        "javax.faces.NamingContainer",
+        "javax.faces.Output",
+        "javax.faces.Panel",
+        "javax.faces.Parameter",
+        "javax.faces.SelectBoolean",
+        "javax.faces.SelectItem",
+        "javax.faces.SelectItems",
+        "javax.faces.SelectMany",
+        "javax.faces.SelectOne",
+        "javax.faces.ViewRoot",
+        "javax.faces.HtmlCommandButton",
+        "javax.faces.HtmlCommandLink",
+        "javax.faces.HtmlDataTable",
+        "javax.faces.HtmlForm",
+        "javax.faces.HtmlGraphicImage",
+        "javax.faces.HtmlInputHidden",
+        "javax.faces.HtmlInputSecret",
+        "javax.faces.HtmlInputText",
+        "javax.faces.HtmlInputTextarea",
+        "javax.faces.HtmlMessage",
+        "javax.faces.HtmlMessages",
+        "javax.faces.HtmlOutputFormat",
+        "javax.faces.HtmlOutputLabel",
+        "javax.faces.HtmlOutputLink",
+        "javax.faces.HtmlOutputText",
+        "javax.faces.HtmlPanelGrid",
+        "javax.faces.HtmlPanelGroup",
+        "javax.faces.HtmlSelectBooleanCheckbox",
+        "javax.faces.HtmlSelectManyCheckbox",
+        "javax.faces.HtmlSelectManyListbox",
+        "javax.faces.HtmlSelectManyMenu",
+        "javax.faces.HtmlSelectOneListbox",
+        "javax.faces.HtmlSelectOneMenu",
+        "javax.faces.HtmlSelectOneRadio"
+    };
+
+    public static Class standardComponentClasses[] = {
+        javax.faces.component.UIColumn.class,
+        javax.faces.component.UICommand.class,
+        javax.faces.component.UIData.class,
+        javax.faces.component.UIForm.class,
+        javax.faces.component.UIGraphic.class,
+        javax.faces.component.UIInput.class,
+        javax.faces.component.UIMessage.class,
+        javax.faces.component.UIMessages.class,
+        javax.faces.component.UINamingContainer.class,
+        javax.faces.component.UIOutput.class,
+        javax.faces.component.UIPanel.class,
+        javax.faces.component.UIParameter.class,
+        javax.faces.component.UISelectBoolean.class,
+        javax.faces.component.UISelectItem.class,
+        javax.faces.component.UISelectItems.class,
+        javax.faces.component.UISelectMany.class,
+        javax.faces.component.UISelectOne.class,
+        javax.faces.component.UIViewRoot.class,
+        javax.faces.component.html.HtmlCommandButton.class,
+        javax.faces.component.html.HtmlCommandLink.class,
+        javax.faces.component.html.HtmlDataTable.class,
+        javax.faces.component.html.HtmlForm.class,
+        javax.faces.component.html.HtmlGraphicImage.class,
+        javax.faces.component.html.HtmlInputHidden.class,
+        javax.faces.component.html.HtmlInputSecret.class,
+        javax.faces.component.html.HtmlInputText.class,
+        javax.faces.component.html.HtmlInputTextarea.class,
+        javax.faces.component.html.HtmlMessage.class,
+        javax.faces.component.html.HtmlMessages.class,
+        javax.faces.component.html.HtmlOutputFormat.class,
+        javax.faces.component.html.HtmlOutputLabel.class,
+        javax.faces.component.html.HtmlOutputLink.class,
+        javax.faces.component.html.HtmlOutputText.class,
+        javax.faces.component.html.HtmlPanelGrid.class,
+        javax.faces.component.html.HtmlPanelGroup.class,
+        javax.faces.component.html.HtmlSelectBooleanCheckbox.class,
+        javax.faces.component.html.HtmlSelectManyCheckbox.class,
+        javax.faces.component.html.HtmlSelectManyListbox.class,
+        javax.faces.component.html.HtmlSelectManyMenu.class,
+        javax.faces.component.html.HtmlSelectOneListbox.class,
+        javax.faces.component.html.HtmlSelectOneMenu.class,
+        javax.faces.component.html.HtmlSelectOneRadio.class
+    };
+
+    public static String standardConverterIds[] = {
+        "javax.faces.BigDecimal",
+        "javax.faces.BigInteger",
+        "javax.faces.Boolean",
+        "javax.faces.Byte",
+        "javax.faces.Character",
+        "javax.faces.DateTime",
+        "javax.faces.Double",
+        "javax.faces.Float",
+        "javax.faces.Integer",
+        "javax.faces.Long",
+        "javax.faces.Number",
+        "javax.faces.Short"
+    };
+
+    public static Class standardConverterClasses[] = {
+        javax.faces.convert.BigDecimalConverter.class,
+        javax.faces.convert.BigIntegerConverter.class,
+        javax.faces.convert.BooleanConverter.class,
+        javax.faces.convert.ByteConverter.class,
+        javax.faces.convert.CharacterConverter.class,
+        javax.faces.convert.DateTimeConverter.class,
+        javax.faces.convert.DoubleConverter.class,
+        javax.faces.convert.FloatConverter.class,
+        javax.faces.convert.IntegerConverter.class,
+        javax.faces.convert.LongConverter.class,
+        javax.faces.convert.NumberConverter.class,
+        javax.faces.convert.ShortConverter.class
+    };
+
+    public static Class standardConverterByIdClasses[] = {
+        java.math.BigDecimal.class,
+        java.math.BigInteger.class,
+        java.lang.Boolean.class,
+        java.lang.Byte.class,
+        java.lang.Character.class,
+        null,
+        java.lang.Double.class,
+        java.lang.Float.class,
+        java.lang.Integer.class,
+        java.lang.Long.class,
+        null,
+        java.lang.Short.class
+    };
+
+    public static Class standardConverterPrimitiveClasses[] = {
+        null,
+        null,
+        java.lang.Boolean.TYPE,
+        java.lang.Byte.TYPE,
+        java.lang.Character.TYPE,
+        null,
+        java.lang.Double.TYPE,
+        java.lang.Float.TYPE,
+        java.lang.Integer.TYPE,
+        java.lang.Long.TYPE,
+        null,
+        java.lang.Short.TYPE
+    };
+
+    private String title = "Test Application Config";
+    public String getTitle() {
+        return title; 
+    }
+
+    public ApplicationConfigBean() {
+
+        componentPositive();
+        componentNegative();
+        getComponentTypes();
+        converterPositive();
+        converterNegative();
+        getConverterIds();
+        validatorPositive();
+        validatorNegative();
+        getValidatorIds();
+    }
+
+    private void componentPositive() {
+        TestComponent newTestComponent = null;
+        TestComponent testComponent = new TestComponent();
+        UIComponent uic = null;
+
+        FacesContext fc = FacesContext.getCurrentInstance();
+        Application app = fc.getApplication();
+
+        app.addComponent(testComponent.getComponentType(), 
+            "com.sun.faces.test.agnostic.application.basic.TestComponent");
+
+        newTestComponent = (TestComponent)app.createComponent(testComponent.getComponentType());
+        assertTrue(null != newTestComponent && newTestComponent != testComponent);
+
+        // built-in components
+        for (int i = 0, len = standardComponentTypes.length; i < len; i++) {
+            uic = app.createComponent(standardComponentTypes[i]);
+            assertTrue(null != uic);
+            assertTrue(standardComponentClasses[i].isAssignableFrom(uic.getClass()));
+        }
+    }
+
+    private void componentNegative() {
+        FacesContext fc = FacesContext.getCurrentInstance();
+        Application app = fc.getApplication();
+        boolean exceptionThrown = false;
+        try {
+            app.addComponent("William", "BillyBoy");
+            app.createComponent("William");
+        } catch (FacesException e) {
+            exceptionThrown = true;
+        }
+        assertTrue(exceptionThrown);
+
+        // non-existent mapping
+        exceptionThrown = false;
+        try {
+            app.createComponent("Joebob");
+        } catch (FacesException e) {
+            exceptionThrown = true;
+        }
+        assertTrue(exceptionThrown);
+    }
+
+    private void getComponentTypes() {
+        FacesContext fc = FacesContext.getCurrentInstance();
+        Application app = fc.getApplication();
+
+        Iterator iter = app.getComponentTypes();
+        assertTrue(null != iter);
+        assertTrue(isSubset(standardComponentTypes, iter));
+    }
+
+    private void converterPositive() {
+        FacesContext fc = FacesContext.getCurrentInstance();
+        Application app = fc.getApplication();
+
+        TestConverter newTestConverter = null;
+        TestConverter testConverter = new TestConverter();
+        Converter conv = null;
+
+        // runtime addition
+
+        app.addConverter(testConverter.getConverterId(),
+            "com.sun.faces.test.agnostic.application.basic.TestConverter");
+        newTestConverter = (TestConverter)app.createConverter(testConverter.getConverterId());
+        assertTrue(null != newTestConverter && newTestConverter != testConverter);
+
+        // built-in converters
+
+        // by-id
+        for (int i = 0, len = standardConverterIds.length; i < len; i++) {
+            conv = app.createConverter(standardConverterIds[i]);
+            assertTrue(null != conv);
+            assertTrue(standardConverterClasses[i].isAssignableFrom(conv.getClass()));
+        }
+
+        // by-class
+        for (int i = 0, len = standardConverterByIdClasses.length; i < len; i++) {
+            // skip entries for which by-class registration doesn't make sense.
+            if (null == standardConverterByIdClasses[i]) {
+                continue;
+            }
+            conv = app.createConverter(standardConverterByIdClasses[i]);
+            assertTrue("null != " + standardConverterByIdClasses[i].toString(),
+                       null != conv);
+            assertTrue(standardConverterClasses[i].isAssignableFrom(conv.getClass()));
+        }
+
+        // primitive classes
+        for (int i = 0, len = standardConverterPrimitiveClasses.length; i <
+            len; i++) {
+            if (null == standardConverterPrimitiveClasses[i]) {
+                continue;
+            }
+            conv = app.createConverter(standardConverterPrimitiveClasses[i]);
+            assertTrue("null != " + standardConverterPrimitiveClasses[i].toString(), null != conv);
+            assertTrue(standardConverterClasses[i].isAssignableFrom(conv.getClass()));
+        }
+    }
+
+    private void converterNegative() {
+        FacesContext fc = FacesContext.getCurrentInstance();
+        Application app = fc.getApplication();
+        boolean exceptionThrown = false;
+        try {
+            app.addConverter("William", "BillyBoy");
+            app.createConverter("William");
+        } catch (FacesException e) {
+            exceptionThrown = true;
+        }
+        assertTrue(exceptionThrown);
+
+        // non-existent mapping
+        exceptionThrown = false;
+        try {
+            app.createConverter("Joebob");
+        } catch (FacesException e) {
+            exceptionThrown = true;
+        }
+        assertTrue(exceptionThrown);
+    }
+
+    private void getConverterIds() {
+        FacesContext fc = FacesContext.getCurrentInstance();
+        Application app = fc.getApplication();
+
+        Iterator iter = app.getConverterIds();
+        assertTrue(null != iter);
+
+        assertTrue(isSubset(standardConverterIds, iter));
+    }
+
+    private void validatorPositive() {
+        FacesContext fc = FacesContext.getCurrentInstance();
+        Application app = fc.getApplication();
+
+        Validator newTestValidator = null;
+        Validator testValidator = new LengthValidator();
+        Validator val = null;
+
+        // runtime addition
+
+        app.addValidator("Billybob", "javax.faces.validator.LengthValidator");
+        newTestValidator = app.createValidator("Billybob");
+        assertTrue(null != newTestValidator && newTestValidator != testValidator);
+
+        // test standard validators
+        val = app.createValidator("javax.faces.DoubleRange");
+        assertTrue(null != val && val instanceof Validator);
+        val = app.createValidator("javax.faces.Length");
+        assertTrue(null != val && val instanceof Validator);
+        val = app.createValidator("javax.faces.LongRange");
+        assertTrue(null != val && val instanceof Validator);
+    }
+
+    private void validatorNegative() {
+        FacesContext fc = FacesContext.getCurrentInstance();
+        Application app = fc.getApplication();
+        boolean exceptionThrown = false;
+        try {
+            app.addValidator("William", "BillyBoy");
+            app.createValidator("William");
+        } catch (FacesException e) {
+            exceptionThrown = true;
+        }
+
+        // non-existent mapping
+        exceptionThrown = false;
+        try {
+            app.createValidator("Joebob");
+        } catch (FacesException e) {
+            exceptionThrown = true;
+        }
+        assertTrue(exceptionThrown);
+    }
+
+    private void getValidatorIds() {
+        FacesContext fc = FacesContext.getCurrentInstance();
+        Application app = fc.getApplication();
+
+        Iterator iter = app.getValidatorIds();
+        assertTrue(null != iter);
+
+        String standardValidatorIds[] = {
+            "javax.faces.DoubleRange",
+            "javax.faces.Length",
+            "javax.faces.LongRange"
+        };
+        assertTrue(isSubset(standardValidatorIds, iter));
+    }
+
+    private String status="";
+
+    public String getStatus() {
+        return status;
+    }
+
+    public boolean isSubset(String[] subset, Iterator superset) {
+        int i, len = subset.length;
+        boolean[] hits = new boolean[len];
+        String cur = null;
+        for (i = 0; i < len; i++) {
+            hits[i] = false;
+        }
+
+
+        // for each element in the superset, go through the entire subset,
+        // marking our "hits" array if there is a match.
+        while (superset.hasNext()) {
+            cur = (String) superset.next();
+            for (i = 0; i < len; i++) {
+                if (cur.equals(subset[i])) {
+                    hits[i] = true;
+                }
+            }
+        }
+
+        // if any of the hits array is false, return false;
+        for (i = 0; i < len; i++) {
+            if (!hits[i]) {
+                return false;
+            }
+        }
+        return true;
+    }
+
+
+}
+
diff --git a/test/agnostic/application/basic/src/main/java/com/sun/faces/test/agnostic/application/basic/TestComponent.java b/test/agnostic/application/basic/src/main/java/com/sun/faces/test/agnostic/application/basic/TestComponent.java
new file mode 100644
index 0000000..d9d7280
--- /dev/null
+++ b/test/agnostic/application/basic/src/main/java/com/sun/faces/test/agnostic/application/basic/TestComponent.java
@@ -0,0 +1,56 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.agnostic.application.basic;
+
+import javax.faces.component.UIComponentBase;
+
+public class TestComponent extends UIComponentBase {
+
+    public String getFamily() {
+        return "TestFamily";
+    }
+
+
+    public String getComponentType() {
+        return "TestComponent";
+    }
+
+}
diff --git a/test/agnostic/application/basic/src/main/java/com/sun/faces/test/agnostic/application/basic/TestConverter.java b/test/agnostic/application/basic/src/main/java/com/sun/faces/test/agnostic/application/basic/TestConverter.java
new file mode 100644
index 0000000..5fe525d
--- /dev/null
+++ b/test/agnostic/application/basic/src/main/java/com/sun/faces/test/agnostic/application/basic/TestConverter.java
@@ -0,0 +1,50 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.agnostic.application.basic;
+
+import javax.faces.convert.NumberConverter;
+
+public class TestConverter extends NumberConverter {
+
+    public String getConverterId() {
+        return "TestConverter";
+    }
+}
diff --git a/test/agnostic/application/basic/src/main/webapp/WEB-INF/web.xml b/test/agnostic/application/basic/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..be95a23
--- /dev/null
+++ b/test/agnostic/application/basic/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,76 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" 
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>${webapp.projectStage}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
+        <param-value>${webapp.partialStateSaving}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>${webapp.stateSavingMethod}</param-value>
+    </context-param>
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <session-config>
+        <session-timeout>30</session-timeout>
+    </session-config>
+    <error-page>
+        <exception-type>java.lang.Throwable</exception-type>
+        <location>/error.jsp</location>
+    </error-page>
+</web-app>
diff --git a/test/agnostic/application/basic/src/main/webapp/appConfig.jsp b/test/agnostic/application/basic/src/main/webapp/appConfig.jsp
new file mode 100644
index 0000000..6eb5092
--- /dev/null
+++ b/test/agnostic/application/basic/src/main/webapp/appConfig.jsp
@@ -0,0 +1,56 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<HTML>
+    <HEAD> <title></title> </HEAD>
+    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
+    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+    <body>
+    <f:view>
+    <h:form>
+       <h:outputText value="#{applicationConfigBean.title}" />
+       <br/>
+       <br/>
+       <h:outputText value="#{applicationConfigBean.status}" />
+    </h:form>
+    </f:view>
+</HTML>
diff --git a/test/agnostic/application/basic/src/main/webapp/error.jsp b/test/agnostic/application/basic/src/main/webapp/error.jsp
new file mode 100644
index 0000000..52d9786
--- /dev/null
+++ b/test/agnostic/application/basic/src/main/webapp/error.jsp
@@ -0,0 +1,56 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<%@ page isErrorPage="true" import="java.io.*" contentType="text/plain"%>
+
+Message:
+<%=exception.getMessage()%>
+
+StackTrace:
+<%
+       StringWriter stringWriter = new StringWriter();
+       PrintWriter printWriter = new PrintWriter(stringWriter);
+       exception.printStackTrace(printWriter);
+       out.println(stringWriter);
+       printWriter.close();
+       stringWriter.close();
+%>
diff --git a/test/agnostic/application/basic/src/test/java/com/sun/faces/test/agnostic/application/basic/ApplicationImplConfigIT.java b/test/agnostic/application/basic/src/test/java/com/sun/faces/test/agnostic/application/basic/ApplicationImplConfigIT.java
new file mode 100644
index 0000000..ebd71f0
--- /dev/null
+++ b/test/agnostic/application/basic/src/test/java/com/sun/faces/test/agnostic/application/basic/ApplicationImplConfigIT.java
@@ -0,0 +1,128 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.agnostic.application;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
+import javax.faces.FacesException;
+import javax.faces.el.MethodNotFoundException;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class ApplicationImplConfigIT {
+    
+    /**
+     * Stores the web URL.
+     */
+    private String webUrl;
+    /**
+     * Stores the web client.
+     */
+    private WebClient webClient;
+
+    /**
+     * Setup before testing.
+     */
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+        webClient.setThrowExceptionOnFailingStatusCode(true);
+    }
+
+    /**
+     * Tear down after testing.
+     */
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testComponentPositive() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "/faces/appConfig.jsp");
+    }
+
+    @Test
+    public void testComponentNegative() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "/faces/appConfig.jsp");
+    }
+
+    @Test
+    public void testGetComponentTypes() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "/faces/appConfig.jsp");
+    }
+
+    @Test
+    public void testConverterPositive() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "/faces/appConfig.jsp");
+    }
+
+    @Test
+    public void testConverterNegative() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "/faces/appConfig.jsp");
+    }
+
+    @Test
+    public void testGetConverterIds() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "/faces/appConfig.jsp");
+    }
+
+    @Test
+    public void testValidatorPositive() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "/faces/appConfig.jsp");
+    }
+
+    @Test
+    public void testValidatorNegative() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "/faces/appConfig.jsp");
+    }
+
+    @Test
+    public void testGetValidatorIds() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "/faces/appConfig.jsp");
+    }
+
+}
diff --git a/test/agnostic/application/listener/nbactions.xml b/test/agnostic/application/listener/nbactions.xml
new file mode 100644
index 0000000..0e589ed
--- /dev/null
+++ b/test/agnostic/application/listener/nbactions.xml
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<actions>
+    <action>
+        <actionName>debug.test.single</actionName>
+        <goals>
+            <goal>test-compile</goal>
+            <goal>surefire:test</goal>
+        </goals>
+        <properties>
+            <test>${packageClassName}</test>
+            <forkMode>once</forkMode>
+            <maven.surefire.debug>-Xdebug -Xrunjdwp:transport=dt_socket,server=n,address=${jpda.address}</maven.surefire.debug>
+            <jpda.listen>true</jpda.listen>
+            <integration.url>http://localhost:8080/test-agnostic-application-listener/</integration.url>
+        </properties>
+    </action>
+    <action>
+        <actionName>test.single</actionName>
+        <goals>
+            <goal>test-compile</goal>
+            <goal>surefire:test</goal>
+        </goals>
+        <properties>
+            <integration.url>http://localhost:8080/test-agnostic-application-listener/</integration.url>
+            <test>${packageClassName}</test>
+        </properties>
+    </action>
+</actions>
diff --git a/test/agnostic/application/listener/pom.xml b/test/agnostic/application/listener/pom.xml
new file mode 100644
index 0000000..9d605f5
--- /dev/null
+++ b/test/agnostic/application/listener/pom.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.agnostic.application</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.agnostic.application</groupId>
+    <artifactId>listener</artifactId>
+    <packaging>war</packaging>
+    <name>Mojarra ${project.version} - Test - Agnostic - Application - Listener</name>
+    <build>
+        <finalName>test-agnostic-application-listener</finalName>
+    </build>
+    <properties>
+        <netbeans.hint.deploy.server>gfv3ee6</netbeans.hint.deploy.server>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/test/agnostic/application/listener/src/main/java/com/sun/faces/test/agnostic/application/listener/NewCustomerFormHandler.java b/test/agnostic/application/listener/src/main/java/com/sun/faces/test/agnostic/application/listener/NewCustomerFormHandler.java
new file mode 100644
index 0000000..7546a63
--- /dev/null
+++ b/test/agnostic/application/listener/src/main/java/com/sun/faces/test/agnostic/application/listener/NewCustomerFormHandler.java
@@ -0,0 +1,139 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.agnostic.application.listener;
+
+import java.util.HashMap;
+import java.util.List;
+
+public class NewCustomerFormHandler {
+
+
+    public NewCustomerFormHandler() {
+    }
+
+
+    public String loginRequired() {
+        return "loginRequired";
+    }
+
+
+    private String minimumAge;
+
+
+    public String getMinimumAge() {
+        return minimumAge;
+    }
+
+
+    public void setMinimumAge(String minimumAge) {
+        this.minimumAge = minimumAge;
+    }
+
+
+    private String maximumAge;
+
+
+    public String getMaximumAge() {
+        return maximumAge;
+    }
+
+
+    public void setMaximumAge(String maximumAge) {
+        this.maximumAge = maximumAge;
+    }
+
+
+    private String nationality;
+
+
+    public String getNationality() {
+        return nationality;
+    }
+
+
+    public void setNationality(String nationality) {
+        this.nationality = nationality;
+    }
+
+
+    private List allowableValues;
+
+
+    public List getAllowableValues() {
+        return allowableValues;
+    }
+
+
+    public void setAllowableValues(List allowableValues) {
+        this.allowableValues = allowableValues;
+    }
+
+
+    private String[] firstNames = {
+        "bob",
+        "jerry"
+    };
+
+
+    public String[] getFirstNames() {
+        return firstNames;
+    }
+
+
+    public void setFirstNames(String[] newNames) {
+        firstNames = newNames;
+    }
+
+
+    private HashMap claimAmounts;
+
+
+    public HashMap getClaimAmounts() {
+        return claimAmounts;
+    }
+
+
+    public void setClaimAmounts(HashMap claimAmounts) {
+        this.claimAmounts = claimAmounts;
+    }
+
+
+}
diff --git a/test/agnostic/application/listener/src/main/java/com/sun/faces/test/agnostic/application/listener/UserBean.java b/test/agnostic/application/listener/src/main/java/com/sun/faces/test/agnostic/application/listener/UserBean.java
new file mode 100644
index 0000000..071cd2c
--- /dev/null
+++ b/test/agnostic/application/listener/src/main/java/com/sun/faces/test/agnostic/application/listener/UserBean.java
@@ -0,0 +1,56 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.agnostic.application.listener;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.SessionScoped;
+
+ at ManagedBean
+ at SessionScoped
+
+public class UserBean {
+
+    public String login() {
+        return ("success");
+    }
+
+}
+
diff --git a/test/agnostic/application/listener/src/main/webapp/WEB-INF/faces-navigation.xml b/test/agnostic/application/listener/src/main/webapp/WEB-INF/faces-navigation.xml
new file mode 100644
index 0000000..41e80c7
--- /dev/null
+++ b/test/agnostic/application/listener/src/main/webapp/WEB-INF/faces-navigation.xml
@@ -0,0 +1,277 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
+              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+              xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
+              version="2.0">
+
+<navigation-rule> 
+  <description> 
+  APPLICATION WIDE NAVIGATION HANDLING 
+  </description> 
+  <from-view-id> * </from-view-id> 
+  <navigation-case> 
+    <description> 
+      Assume there is a Logout button on every page that 
+      invokes the logout Action. 
+    </description> 
+    <display-name>Generic Logout Button</display-name> 
+    <from-action>#{userBean.logout}</from-action> 
+    <to-view-id>/logout.jsp</to-view-id> 
+  </navigation-case> 
+<!-- Handle a generic error outcome from any Action --> 
+  <navigation-case> 
+    <description> 
+      Handle a generic error outcome that might be returned 
+      by any application Action. 
+    </description> 
+    <display-name>Generic Error Outcome</display-name> 
+    <from-action>#{newCustomer.loginRequired}</from-action> 
+    <to-view-id>/must-login-first.jsp</to-view-id> 
+  </navigation-case> 
+</navigation-rule> 
+
+<navigation-rule>
+  <description>
+    LOGIN PAGE NAVIGATION HANDLING
+  </description>
+  <from-view-id> /login.jsp </from-view-id>
+  <navigation-case>
+    <description>
+      Handle case where login succeeded.
+    </description>
+    <display-name>Successful Login</display-name>
+    <from-action>#{userBean.login}</from-action>
+    <from-outcome>success</from-outcome>
+    <to-view-id>/home.jsp</to-view-id>
+  </navigation-case>
+  <navigation-case>
+    <description>
+      User registration for a new user succeeded.
+    </description>
+    <display-name>Successful New User Registration</display-name>
+    <from-action>#{userBean.register}</from-action>
+    <from-outcome>success</from-outcome>
+    <to-view-id>/welcome.jsp</to-view-id>
+  </navigation-case>
+  <navigation-case>
+    <description>
+      User registration for a new user failed because of a
+      duplicate username.
+    </description>
+    <display-name>Failed New User Registration</display-name>
+    <from-action>#{userBean.register}</from-action>
+    <from-outcome>duplicateUserName</from-outcome>
+    <to-view-id>/try-another-name.jsp</to-view-id>
+  </navigation-case>
+</navigation-rule>
+
+<navigation-rule>
+  <description>
+    Assume there is a search form on every page. These navigation
+    cases get merged with the application-wide rules above because
+    they use the same from-view-id pattern. The same thing would
+    also happen if from-view-id was omitted here, because that is
+    equivalent to a matching pattern of *.
+  </description>
+  <from-view-id> * </from-view-id>
+  <navigation-case>
+    <display-name>Search Form Success</display-name>
+    <from-action>#{searchForm.go}</from-action>
+    <from-outcome>success</from-outcome>
+    <to-view-id>/search-results.jsp</to-view-id>
+  </navigation-case>
+  <navigation-case>
+    <display-name>Search Form Failure</display-name>
+    <from-action>#{searchForm.go}</from-action>
+    <to-view-id>/search-problem.jsp</to-view-id>
+  </navigation-case>
+</navigation-rule>
+
+<navigation-rule>
+  <description>
+    Searching works slightly differently in part of the site.
+  </description>
+  <from-view-id> /movies/* </from-view-id>
+  <navigation-case>
+    <display-name>Search Form Success</display-name>
+    <from-action>#{searchForm.go}</from-action>
+    <from-outcome>success</from-outcome>
+    <to-view-id>/movie-search-results.jsp</to-view-id>
+  </navigation-case>
+  <navigation-case>
+    <display-name>Search Form Failure</display-name>
+    <from-action>#{searchForm.go}</from-action>
+    <to-view-id>/search-problem.jsp</to-view-id>
+  </navigation-case>
+</navigation-rule>
+
+
+<navigation-rule>
+  <from-view-id>/dir3/*</from-view-id>
+  <navigation-case>
+    <from-outcome>home</from-outcome>
+    <to-view-id>/dir3/home.jsp</to-view-id>
+  </navigation-case>
+</navigation-rule>
+
+<navigation-rule>
+  <from-view-id>/dir1/dir2/dir3/*</from-view-id>
+  <navigation-case>
+    <from-outcome>home</from-outcome>
+    <to-view-id>/dir1/dir2/dir3/home.jsp</to-view-id>
+  </navigation-case>
+</navigation-rule>
+
+
+    <navigation-rule>
+        <from-view-id>/page1.xhtml</from-view-id>
+        <navigation-case>
+            <from-outcome>redirectOutcome1</from-outcome>
+            <to-view-id>/page2.xhtml</to-view-id>
+            <redirect include-view-params="true">
+                <view-param>
+                    <name>foo</name>
+                    <value>bar</value>
+                </view-param>
+                <view-param>
+                    <name>foo</name>
+                    <value>bar2</value>
+                </view-param>
+                <view-param>
+                    <name>foo2</name>
+                    <value>bar3</value>
+                </view-param>
+            </redirect>
+        </navigation-case>
+         <navigation-case>
+            <from-outcome>redirectOutcome2</from-outcome>
+            <to-view-id>/page2.xhtml</to-view-id>
+            <redirect />
+        </navigation-case>
+        <navigation-case>
+            <from-outcome>redirectOutcome3</from-outcome>
+            <to-view-id>/page2.xhtml</to-view-id>
+            <redirect>
+                <view-param>
+                    <name>param</name>
+                    <value>#{navbean.increment}</value>
+                </view-param>
+            </redirect>
+        </navigation-case>
+    </navigation-rule>
+
+
+
+  <managed-bean>
+    <!-- Basic information about this bean -->
+    <description>
+      Auto-creates the form handler for new customers into request scope
+      if it is not already present.
+    </description>
+    <display-name>New Customer Form Handler</display-name>
+    <managed-bean-name>newCustomer</managed-bean-name>
+    <managed-bean-class>
+      com.sun.faces.test.agnostic.application.listener.NewCustomerFormHandler
+    </managed-bean-class>
+    <managed-bean-scope>session</managed-bean-scope>
+    <!-- Managed property initializations -->
+    <managed-property>
+      <property-name>minimumAge</property-name>
+      <value>#{initParam.minimumCustomerAge}</value>
+    </managed-property>
+    <managed-property>
+      <property-name>maximumAge</property-name>
+      <value>65</value>
+    </managed-property>
+    <managed-property>
+      <property-name>nationality</property-name>
+      <null-value/>
+    </managed-property>
+    <managed-property>
+      <property-name>allowableValues</property-name>
+      <!-- Assume the type is java.util.List -->
+      <list-entries>
+        <value-class>java.lang.Integer</value-class>
+        <value>10</value>
+        <value>20</value>
+        <value>60</value>
+        <null-value/>
+      </list-entries>
+    </managed-property>
+    <managed-property>
+      <property-name>firstNames</property-name>
+      <!-- Assume the type is java.util.List or java.lang.String[] -->
+      <list-entries>
+        <value>Thomas</value>
+        <value>#{jsfSimple.simpleProperty}</value>
+        <null-value/>
+      </list-entries>
+    </managed-property>
+    <managed-property>
+      <description>
+        Map property with a description.
+      </description>
+      <display-name>Claim Amounts</display-name>
+      <property-name>claimAmounts</property-name>
+      <map-entries>
+        <key-class>java.lang.String</key-class> <!-- Default so redundant -->
+        <value-class>java.lang.Double</value-class>
+        <map-entry>
+          <key>fire</key>
+          <value>1000.00</value>
+        </map-entry>
+        <map-entry>
+          <key>water</key>
+          <value>#{claimConfiguration.waterDamageAmount}</value>
+        </map-entry>
+        <map-entry>
+          <key>earthquake</key>
+          <null-value/>
+        </map-entry>
+      </map-entries>
+    </managed-property>
+  </managed-bean>
+
+</faces-config>
diff --git a/test/agnostic/application/listener/src/main/webapp/WEB-INF/glassfish-web.xml b/test/agnostic/application/listener/src/main/webapp/WEB-INF/glassfish-web.xml
new file mode 100644
index 0000000..6de5df2
--- /dev/null
+++ b/test/agnostic/application/listener/src/main/webapp/WEB-INF/glassfish-web.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
+<glassfish-web-app error-url="">
+  <context-root>/test-agnostic-application-listener</context-root>
+  <class-loader delegate="true"/>
+  <jsp-config>
+    <property name="keepgenerated" value="true">
+      <description>Keep a copy of the generated servlet class' java code.</description>
+    </property>
+  </jsp-config>
+</glassfish-web-app>
diff --git a/test/agnostic/application/listener/src/main/webapp/WEB-INF/web.xml b/test/agnostic/application/listener/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..3ef28bd
--- /dev/null
+++ b/test/agnostic/application/listener/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" 
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>${webapp.projectStage}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
+        <param-value>${webapp.partialStateSaving}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>${webapp.stateSavingMethod}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.CONFIG_FILES</param-name>
+        <param-value>/WEB-INF/faces-navigation.xml</param-value>
+    </context-param>
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <session-config>
+        <session-timeout>30</session-timeout>
+    </session-config>
+    <error-page>
+        <exception-type>java.lang.Throwable</exception-type>
+        <location>/error.jsp</location>
+    </error-page>
+</web-app>
diff --git a/test/agnostic/application/listener/src/main/webapp/error.jsp b/test/agnostic/application/listener/src/main/webapp/error.jsp
new file mode 100644
index 0000000..52d9786
--- /dev/null
+++ b/test/agnostic/application/listener/src/main/webapp/error.jsp
@@ -0,0 +1,56 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<%@ page isErrorPage="true" import="java.io.*" contentType="text/plain"%>
+
+Message:
+<%=exception.getMessage()%>
+
+StackTrace:
+<%
+       StringWriter stringWriter = new StringWriter();
+       PrintWriter printWriter = new PrintWriter(stringWriter);
+       exception.printStackTrace(printWriter);
+       out.println(stringWriter);
+       printWriter.close();
+       stringWriter.close();
+%>
diff --git a/test/agnostic/application/listener/src/main/webapp/home.jsp b/test/agnostic/application/listener/src/main/webapp/home.jsp
new file mode 100644
index 0000000..2f2612e
--- /dev/null
+++ b/test/agnostic/application/listener/src/main/webapp/home.jsp
@@ -0,0 +1,52 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<HTML>
+    <HEAD> <title></title> </HEAD>
+    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
+    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+    <%@ page import="javax.faces.context.FacesContext"%>
+    <%
+     FacesContext facesContext = FacesContext.getCurrentInstance();
+     out.println("VIEW ID IS:" + facesContext.getViewRoot().getViewId());
+    %>
+</HTML>
diff --git a/test/agnostic/application/listener/src/main/webapp/login.jsp b/test/agnostic/application/listener/src/main/webapp/login.jsp
new file mode 100644
index 0000000..fab56c8
--- /dev/null
+++ b/test/agnostic/application/listener/src/main/webapp/login.jsp
@@ -0,0 +1,60 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<HTML>
+    <HEAD> <title></title> </HEAD>
+    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
+    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+    <body>
+    <f:view>
+    <h:form id="form" >
+       <h:commandButton id="submit" value="Submit" action="#{newCustomer.loginRequired}" />
+       <br/>
+       <br/>
+       <h:commandButton id="submit1" value="Submit1" action="#{userBean.login}" />
+       <br/>
+       <br/>
+       <h:commandButton id="submit2" value="Submit2" action="#{userBean.nometh}" />
+
+    </h:form>
+    </f:view>
+</HTML>
diff --git a/test/agnostic/application/listener/src/main/webapp/must-login-first.jsp b/test/agnostic/application/listener/src/main/webapp/must-login-first.jsp
new file mode 100644
index 0000000..2f2612e
--- /dev/null
+++ b/test/agnostic/application/listener/src/main/webapp/must-login-first.jsp
@@ -0,0 +1,52 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<HTML>
+    <HEAD> <title></title> </HEAD>
+    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
+    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+    <%@ page import="javax.faces.context.FacesContext"%>
+    <%
+     FacesContext facesContext = FacesContext.getCurrentInstance();
+     out.println("VIEW ID IS:" + facesContext.getViewRoot().getViewId());
+    %>
+</HTML>
diff --git a/test/agnostic/application/listener/src/test/java/com/sun/faces/test/agnostic/application/listener/ActionListenerImplIT.java b/test/agnostic/application/listener/src/test/java/com/sun/faces/test/agnostic/application/listener/ActionListenerImplIT.java
new file mode 100644
index 0000000..0aae5ab
--- /dev/null
+++ b/test/agnostic/application/listener/src/test/java/com/sun/faces/test/agnostic/application/listener/ActionListenerImplIT.java
@@ -0,0 +1,104 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.agnostic.application.listener;
+
+import com.gargoylesoftware.htmlunit.TextPage;
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
+import javax.faces.FacesException;
+import javax.faces.el.MethodNotFoundException;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class ActionListenerImplIT {
+    
+    /**
+     * Stores the web URL.
+     */
+    private String webUrl;
+    /**
+     * Stores the web client.
+     */
+    private WebClient webClient;
+
+    /**
+     * Setup before testing.
+     */
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    /**
+     * Tear down after testing.
+     */
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testProcessAction() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "/faces/login.jsp");
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getHtmlElementById("form:submit");
+        page = (HtmlPage) button.click();
+        assertTrue(page.asText().contains("VIEW ID IS:/must-login-first.jsp"));
+
+        page = webClient.getPage(webUrl + "/faces/login.jsp");
+        button = (HtmlSubmitInput) page.getHtmlElementById("form:submit1");
+        page = (HtmlPage) button.click();
+        assertTrue(page.asText().contains("VIEW ID IS:/home.jsp"));
+    }
+
+    @Test
+    public void testIllegalArgException() throws Exception {
+        webClient.setThrowExceptionOnFailingStatusCode(false);
+        HtmlPage page = webClient.getPage(webUrl + "/faces/login.jsp");
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getHtmlElementById("form:submit2");
+        TextPage page1 = button.click();
+        assertTrue(page1.getContent().contains("MethodNotFoundException"));
+    }
+}
diff --git a/test/agnostic/application/localeConfig/pom.xml b/test/agnostic/application/localeConfig/pom.xml
new file mode 100644
index 0000000..788d3c9
--- /dev/null
+++ b/test/agnostic/application/localeConfig/pom.xml
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.agnostic.application</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.agnostic.application</groupId>
+    <artifactId>localeConfig</artifactId>
+    <packaging>war</packaging>
+    <name>Mojarra ${project.version} - Test - Agnostic - Application - LocaleConfig</name>
+    <build>
+        <finalName>test-agnostic-application-localeConfig</finalName>
+    </build>
+    <dependencies>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <version>4.11</version>
+            <scope>compile</scope>
+        </dependency>
+    </dependencies>
+    <properties>
+        <netbeans.hint.deploy.server>gfv3ee6</netbeans.hint.deploy.server>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/test/agnostic/application/localeConfig/src/main/java/com/sun/faces/test/agnostic/application/localeConfig/ApplicationConfigBean.java b/test/agnostic/application/localeConfig/src/main/java/com/sun/faces/test/agnostic/application/localeConfig/ApplicationConfigBean.java
new file mode 100644
index 0000000..cde1745
--- /dev/null
+++ b/test/agnostic/application/localeConfig/src/main/java/com/sun/faces/test/agnostic/application/localeConfig/ApplicationConfigBean.java
@@ -0,0 +1,115 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.agnostic.application.localeConfig;
+
+import javax.faces.FacesException;
+import javax.faces.application.Application;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.SessionScoped;
+import javax.faces.context.FacesContext;
+import java.util.Iterator;
+import java.util.Locale;
+
+import static org.junit.Assert.*;
+
+ at ManagedBean
+ at SessionScoped
+public class ApplicationConfigBean {
+
+    private String title = "Test Application Config";
+    public String getTitle() {
+        return title; 
+    }
+
+    public ApplicationConfigBean() {
+
+    }
+
+    public String getLocaleConfigPositive() {
+        FacesContext fc = FacesContext.getCurrentInstance();
+        Application app = fc.getApplication();
+
+        Locale locale = app.getDefaultLocale();
+        assertNotNull("Can't get default locale from Application", locale);
+        assertEquals(Locale.US, locale);
+
+        Iterator iter;
+        int j = 0, len = 0;
+        boolean found = false;
+        String[][] expected = {
+            {"de", "DE"},
+            {"en", "US"},
+            {"fr", "FR"},
+            {"ps", "PS"}
+        };
+        len = expected.length;
+
+        // test that the supported locales are a superset of the
+        // expected locales
+        for (j = 0; j < len; j++) {
+            assertNotNull("Can't get supportedLocales from Application",
+                          iter = app.getSupportedLocales());
+            found = false;
+            while (iter.hasNext()) {
+                locale = (Locale) iter.next();
+                if (expected[j][0].equals(locale.getLanguage()) &&
+                    expected[j][1].equals(locale.getCountry())) {
+                    found = true;
+                }
+            }
+            assertTrue("Can't find expected locale " + expected[j][0] + "_" +
+                       expected[j][1] + " in supported-locales list",
+                       found);
+        }
+
+        return "SUCCESS";
+    }
+
+
+
+    private String status="";
+
+    public String getStatus() {
+        return status;
+    }
+
+}
+
diff --git a/test/agnostic/application/localeConfig/src/main/webapp/WEB-INF/faces-config.xml b/test/agnostic/application/localeConfig/src/main/webapp/WEB-INF/faces-config.xml
new file mode 100644
index 0000000..1ee24b8
--- /dev/null
+++ b/test/agnostic/application/localeConfig/src/main/webapp/WEB-INF/faces-config.xml
@@ -0,0 +1,58 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
+    version="2.0">
+
+  <application>
+    <locale-config>
+        <default-locale>en_US</default-locale>
+        <supported-locale>ps_PS</supported-locale>
+        <supported-locale>fr_FR</supported-locale>
+        <supported-locale>de_DE</supported-locale>
+        <supported-locale>en</supported-locale>
+    </locale-config>
+  </application>
+</faces-config>
diff --git a/test/agnostic/application/localeConfig/src/main/webapp/WEB-INF/glassfish-web.xml b/test/agnostic/application/localeConfig/src/main/webapp/WEB-INF/glassfish-web.xml
new file mode 100644
index 0000000..423c5c8
--- /dev/null
+++ b/test/agnostic/application/localeConfig/src/main/webapp/WEB-INF/glassfish-web.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
+<glassfish-web-app error-url="">
+  <context-root>/test-agnostic-application-localeConfig</context-root>
+  <class-loader delegate="true"/>
+  <jsp-config>
+    <property name="keepgenerated" value="true">
+      <description>Keep a copy of the generated servlet class' java code.</description>
+    </property>
+  </jsp-config>
+</glassfish-web-app>
diff --git a/test/agnostic/application/localeConfig/src/main/webapp/WEB-INF/locale-config.xml b/test/agnostic/application/localeConfig/src/main/webapp/WEB-INF/locale-config.xml
new file mode 100644
index 0000000..23c031f
--- /dev/null
+++ b/test/agnostic/application/localeConfig/src/main/webapp/WEB-INF/locale-config.xml
@@ -0,0 +1,58 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
+    version="2.0">
+
+  <application>
+    <locale-config>
+      <default-locale>ps_PS</default-locale>
+        <supported-locale>ps_PS</supported-locale>
+        <supported-locale>tg-AF</supported-locale>
+        <supported-locale>tk_IQ</supported-locale>
+        <supported-locale>en_US</supported-locale>
+    </locale-config>
+  </application>
+</faces-config>
diff --git a/test/agnostic/application/localeConfig/src/main/webapp/WEB-INF/locale-config2.xml b/test/agnostic/application/localeConfig/src/main/webapp/WEB-INF/locale-config2.xml
new file mode 100644
index 0000000..c280d98
--- /dev/null
+++ b/test/agnostic/application/localeConfig/src/main/webapp/WEB-INF/locale-config2.xml
@@ -0,0 +1,61 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
+    version="2.0">
+
+  <application>
+
+    <locale-config>
+      <default-locale>aoeuhoentuhtnhtnhoaenhnhu</default-locale>
+      <supported-locale>ps_PS-at-pq-wp</supported-locale>
+      <supported-locale>tg-AF-oe-12</supported-locale>
+      <supported-locale>12-34</supported-locale>
+      <supported-locale>12-</supported-locale>
+    </locale-config>
+
+  </application>
+
+</faces-config>
diff --git a/test/agnostic/application/localeConfig/src/main/webapp/WEB-INF/web.xml b/test/agnostic/application/localeConfig/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..a81a848
--- /dev/null
+++ b/test/agnostic/application/localeConfig/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,80 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" 
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>${webapp.projectStage}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
+        <param-value>${webapp.partialStateSaving}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>${webapp.stateSavingMethod}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.CONFIG_FILES</param-name>
+        <param-value>/locale-config.xml</param-value>
+    </context-param>
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <session-config>
+        <session-timeout>30</session-timeout>
+    </session-config>
+    <error-page>
+        <exception-type>java.lang.Throwable</exception-type>
+        <location>/error.jsp</location>
+    </error-page>
+</web-app>
diff --git a/test/agnostic/application/localeConfig/src/main/webapp/error.jsp b/test/agnostic/application/localeConfig/src/main/webapp/error.jsp
new file mode 100644
index 0000000..52d9786
--- /dev/null
+++ b/test/agnostic/application/localeConfig/src/main/webapp/error.jsp
@@ -0,0 +1,56 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<%@ page isErrorPage="true" import="java.io.*" contentType="text/plain"%>
+
+Message:
+<%=exception.getMessage()%>
+
+StackTrace:
+<%
+       StringWriter stringWriter = new StringWriter();
+       PrintWriter printWriter = new PrintWriter(stringWriter);
+       exception.printStackTrace(printWriter);
+       out.println(stringWriter);
+       printWriter.close();
+       stringWriter.close();
+%>
diff --git a/test/agnostic/application/localeConfig/src/main/webapp/locale-config.xml b/test/agnostic/application/localeConfig/src/main/webapp/locale-config.xml
new file mode 100644
index 0000000..3784860
--- /dev/null
+++ b/test/agnostic/application/localeConfig/src/main/webapp/locale-config.xml
@@ -0,0 +1,59 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
+    version="2.0">
+
+  <application>
+    <locale-config>
+      <default-locale>ps_PS</default-locale>
+        <supported-locale>ps_PS</supported-locale>
+        <supported-locale>tg-AF</supported-locale>
+        <supported-locale>tk_IQ</supported-locale>
+        <supported-locale>en_US</supported-locale>
+    </locale-config>
+  </application>
+
+</faces-config>
diff --git a/test/agnostic/application/localeConfig/src/main/webapp/localeConfigPositive.xhtml b/test/agnostic/application/localeConfig/src/main/webapp/localeConfigPositive.xhtml
new file mode 100644
index 0000000..11279c0
--- /dev/null
+++ b/test/agnostic/application/localeConfig/src/main/webapp/localeConfigPositive.xhtml
@@ -0,0 +1,66 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+<f:view contentType="text/html"/>
+<h:head>
+    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
+    <title>Navigation</title>
+</h:head>
+
+<body>
+    <f:view>
+    <h:form>
+       <h:outputText value="#{applicationConfigBean.title}" />
+       <br/>
+       <br/>
+       #{applicationConfigBean.localeConfigPositive}
+       <h:outputText value="#{applicationConfigBean.status}" />
+    </h:form>
+    </f:view>
+</body>
+</html>
diff --git a/test/agnostic/application/localeConfig/src/test/java/com/sun/faces/test/agnostic/application/localeConfig/LocaleConfigIT.java b/test/agnostic/application/localeConfig/src/test/java/com/sun/faces/test/agnostic/application/localeConfig/LocaleConfigIT.java
new file mode 100644
index 0000000..def711f
--- /dev/null
+++ b/test/agnostic/application/localeConfig/src/test/java/com/sun/faces/test/agnostic/application/localeConfig/LocaleConfigIT.java
@@ -0,0 +1,86 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.agnostic.application.localeConfig;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
+import javax.faces.FacesException;
+import javax.faces.el.MethodNotFoundException;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class LocaleConfigIT {
+    
+    /**
+     * Stores the web URL.
+     */
+    private String webUrl;
+    /**
+     * Stores the web client.
+     */
+    private WebClient webClient;
+
+    /**
+     * Setup before testing.
+     */
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    /**
+     * Tear down after testing.
+     */
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testLocaleConfigPositive() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "/faces/localeConfigPositive.xhtml");
+    }
+}
diff --git a/test/agnostic/application/navigation/nbactions.xml b/test/agnostic/application/navigation/nbactions.xml
new file mode 100644
index 0000000..c00a603
--- /dev/null
+++ b/test/agnostic/application/navigation/nbactions.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<actions>
+    <action>
+        <actionName>debug.test.single</actionName>
+        <goals>
+            <goal>test-compile</goal>
+            <goal>surefire:test</goal>
+        </goals>
+        <properties>
+            <test>${packageClassName}</test>
+            <forkMode>once</forkMode>
+            <maven.surefire.debug>-Xdebug -Xrunjdwp:transport=dt_socket,server=n,address=${jpda.address}</maven.surefire.debug>
+            <jpda.listen>true</jpda.listen>
+            <integration.url>http://localhost:8080/test-agnostic-application-navigation/</integration.url>
+        </properties>
+    </action>
+    <action>
+            <actionName>test.single</actionName>
+            <goals>
+                <goal>test-compile</goal>
+                <goal>surefire:test</goal>
+            </goals>
+            <properties>
+                <test>${packageClassName}</test>
+                <integration.url>http://localhost:8080/test-agnostic-application-navigation/</integration.url>
+            </properties>
+        </action>
+</actions>
diff --git a/test/agnostic/application/navigation/pom.xml b/test/agnostic/application/navigation/pom.xml
new file mode 100644
index 0000000..c76e1db
--- /dev/null
+++ b/test/agnostic/application/navigation/pom.xml
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.agnostic.application</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.agnostic.application</groupId>
+    <artifactId>navigation</artifactId>
+    <packaging>war</packaging>
+    <name>Mojarra ${project.version} - Test - Agnostic - Application - Navigation</name>
+    <build>
+        <finalName>test-agnostic-application-navigation</finalName>
+    </build>
+    <dependencies>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <version>4.11</version>
+            <scope>compile</scope>
+        </dependency>
+    </dependencies>
+    <properties>
+        <netbeans.hint.deploy.server>gfv3ee6</netbeans.hint.deploy.server>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/test/agnostic/application/navigation/src/main/java/com/sun/faces/test/agnostic/application/navigation/NavBean.java b/test/agnostic/application/navigation/src/main/java/com/sun/faces/test/agnostic/application/navigation/NavBean.java
new file mode 100644
index 0000000..8aa107d
--- /dev/null
+++ b/test/agnostic/application/navigation/src/main/java/com/sun/faces/test/agnostic/application/navigation/NavBean.java
@@ -0,0 +1,58 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 2009-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.agnostic.application.navigation;
+
+import java.util.concurrent.atomic.AtomicInteger;
+
+public class NavBean {
+
+    private static AtomicInteger integer = new AtomicInteger(0);
+
+    public NavBean() {
+        integer.set(0);
+System.out.println("NAVBEAN SET 0");
+    }
+
+    public int getIncrement() {
+        return integer.incrementAndGet();
+    }
+
+}
diff --git a/test/agnostic/application/navigation/src/main/java/com/sun/faces/test/agnostic/application/navigation/NavigationBean.java b/test/agnostic/application/navigation/src/main/java/com/sun/faces/test/agnostic/application/navigation/NavigationBean.java
new file mode 100644
index 0000000..74b2c92
--- /dev/null
+++ b/test/agnostic/application/navigation/src/main/java/com/sun/faces/test/agnostic/application/navigation/NavigationBean.java
@@ -0,0 +1,460 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.agnostic.application.navigation;
+
+import com.sun.faces.application.ApplicationImpl;
+import com.sun.faces.application.NavigationHandlerImpl;
+import com.sun.faces.config.DbfFactory;
+import com.sun.faces.util.Util;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+import java.util.Set;
+
+import javax.faces.application.Application;
+import javax.faces.application.ConfigurableNavigationHandler;
+import javax.faces.application.NavigationCase;
+import javax.faces.application.NavigationHandler;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.SessionScoped;
+import javax.faces.component.UIViewRoot;
+import javax.faces.context.FacesContext;
+import javax.faces.event.SystemEvent;
+import javax.faces.event.SystemEventListener;
+import javax.faces.event.AbortProcessingException;
+import javax.faces.event.PreDestroyViewMapEvent;
+import javax.servlet.ServletContext;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+
+import static org.junit.Assert.*;
+
+import org.w3c.dom.Document;
+import org.w3c.dom.NodeList;
+import org.w3c.dom.Node;
+import org.w3c.dom.NamedNodeMap;
+
+
+ at ManagedBean
+ at SessionScoped
+
+public class NavigationBean {
+
+    private List testResultList = null;
+
+    public NavigationBean() {
+    }
+
+    public String getNavigationHandler() {
+        FacesContext fc = FacesContext.getCurrentInstance();
+        Application app = fc.getApplication();
+        ViewMapDestroyedListener listener = new ViewMapDestroyedListener();
+        app.subscribeToEvent(PreDestroyViewMapEvent.class,
+                                     UIViewRoot.class,
+                                     listener);
+        try {
+            loadTestResultList();
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
+        NavigationHandlerImpl navHandler = (NavigationHandlerImpl) app.getNavigationHandler();
+        String newViewId;
+        UIViewRoot page;
+        boolean gotException = false;
+
+        for (int i = 0; i < testResultList.size(); i++) {
+            TestResult testResult = (TestResult) testResultList.get(i);
+            System.out.println("Testing from-view-id=" + testResult.fromViewId +
+                               " from-action=" + testResult.fromAction +
+                               " from-outcome=" + testResult.fromOutcome);
+            page = Util.getViewHandler(fc).createView(fc, null);
+            page.setViewId(testResult.fromViewId);
+            page.setLocale(Locale.US);
+            page.getViewMap(); // cause the map to be created
+            fc.setViewRoot(page);
+            listener.reset();
+            try {
+                navHandler.handleNavigation(fc, testResult.fromAction,
+                                            testResult.fromOutcome);
+            } catch (Exception e) {
+                // exception is valid only if context or fromoutcome is null.
+                assertTrue(testResult.fromOutcome == null);
+                gotException = true;
+            }
+            if (!gotException) {
+                if (!testResult.fromViewId.equals(testResult.toViewId)
+                    && testResult.fromOutcome != null) {
+                    assertTrue(listener.getPassedEvent() instanceof PreDestroyViewMapEvent);
+                } else {
+                    assertTrue(!listener.wasProcessEventInvoked());
+                    assertTrue(listener.getPassedEvent() == null);
+                }
+                listener.reset();
+                newViewId = fc.getViewRoot().getViewId();
+                if (testResult.fromOutcome == null) {
+                    listener.reset();
+                    System.out.println(
+                        "assertTrue(" + newViewId + ".equals(" +
+                        testResult.fromViewId +
+                        "))");
+                    assertTrue(newViewId.equals(testResult.fromViewId));
+                } else {
+                    listener.reset();
+                    System.out.println(
+                        "assertTrue(" + newViewId + ".equals(" +
+                        testResult.toViewId +
+                        "))");
+                    assertTrue(newViewId.equals(testResult.toViewId));
+                }
+            }
+        }
+        app.unsubscribeFromEvent(PreDestroyViewMapEvent.class,
+                                         UIViewRoot.class,
+                                         listener);
+        return "SUCCESS";
+    }
+
+    public String getSimilarViewIds() {
+        FacesContext fc = FacesContext.getCurrentInstance();
+        Application app = fc.getApplication();
+        NavigationHandler navHandler = app.getNavigationHandler();
+        UIViewRoot root = app.getViewHandler().createView(fc, "/dir1/dir2/dir3/test.jsp");
+        root.setLocale(Locale.US);
+        fc.setViewRoot(root);
+        try {
+            navHandler.handleNavigation(fc, null, "home");
+        } catch (Exception e) {
+            e.printStackTrace();
+            assert(false);
+        }
+        String newViewId = fc.getViewRoot().getViewId();
+        assertTrue("newViewId is: " + newViewId, "/dir1/dir2/dir3/home.jsp".equals(newViewId));
+        return "SUCCESS";
+    }
+
+    public String getSeparateRule() {
+        FacesContext fc = FacesContext.getCurrentInstance();
+        Application app = fc.getApplication();
+        int cnt = 0;
+        assertTrue(app instanceof ApplicationImpl);
+        ConfigurableNavigationHandler handler = (ConfigurableNavigationHandler) app.getNavigationHandler();
+        Map caseListMap = handler.getNavigationCases();
+        Iterator iter = caseListMap.keySet().iterator();
+        while (iter.hasNext()) {
+            String fromViewId = (String) iter.next();
+            if (fromViewId.equals("/login.jsp")) {
+                Set<NavigationCase> caseSet = (Set<NavigationCase>) caseListMap.get(fromViewId);
+                for (NavigationCase navCase : caseSet) {
+                    if (navCase.getFromViewId().equals("/login.jsp")) {
+                        cnt++;
+                    }
+                }
+            }
+        }
+        assertTrue(cnt == 6);
+        return "SUCCESS";
+    }
+
+    public String getWrappedNavigationHandler() {
+        FacesContext fc = FacesContext.getCurrentInstance();
+        Application app = fc.getApplication();
+        ConfigurableNavigationHandler impl = new NavigationHandlerImpl();
+        NavigationHandler parent = new WrapperNavigationHandler(impl);
+        parent.handleNavigation(fc, "", "");
+
+        int cnt = 0;
+        Map caseListMap = impl.getNavigationCases();
+        Iterator iter = caseListMap.keySet().iterator();
+        while (iter.hasNext()) {
+            String fromViewId = (String) iter.next();
+            if (fromViewId.equals("/login.jsp")) {
+                Set<NavigationCase> caseSet = (Set<NavigationCase>) caseListMap.get(fromViewId);
+                for (NavigationCase navCase : caseSet) {
+                    if (navCase.getFromViewId().equals("/login.jsp")) {
+                        cnt++;
+                    }
+                }
+            }
+        }
+        assertTrue(cnt == 6);
+        return "SUCCESS";
+    }
+
+    public String getRedirectParameters() {
+        FacesContext fc = FacesContext.getCurrentInstance();
+        Application app = fc.getApplication();
+        UIViewRoot root = Util.getViewHandler(fc).createView(fc, null);
+        root.setViewId("/page1.xhtml");
+        fc.setViewRoot(root);
+        ConfigurableNavigationHandler cnh = (ConfigurableNavigationHandler)app.getNavigationHandler();
+        NavigationCase c1 = cnh.getNavigationCase(fc, null, "redirectOutcome1");
+        Map<String,List<String>> parameters = c1.getParameters();
+        assertNotNull(parameters);
+        assertEquals(2, parameters.size());
+        List<String> fooParams = parameters.get("foo");
+        assertNotNull(fooParams);
+        assertEquals(2, fooParams.size());
+        assertEquals("bar", fooParams.get(0));
+        assertEquals("bar2", fooParams.get(1));
+        List<String> foo2Params = parameters.get("foo2");
+        assertEquals(1, foo2Params.size());
+        assertEquals("bar3", foo2Params.get(0));
+        assertTrue(c1.isIncludeViewParams());
+
+        NavigationCase c2 = cnh.getNavigationCase(fc, null, "redirectOutcome2");
+        parameters = c2.getParameters();
+        assertNull(parameters);
+        assertFalse(c2.isIncludeViewParams());
+
+        // ensure implicit navigation outcomes that include query strings
+        // are properly parsed.
+
+        NavigationCase c3 = cnh.getNavigationCase(fc, null, 
+            "test?foo=rab&foo=rab2&foo2=rab3&faces-redirect=true&includeViewParams=true&");
+        assertNotNull(c3);
+        parameters = c3.getParameters();
+        assertNotNull(parameters);
+        assertTrue(c3.isRedirect());
+        assertTrue(c3.isIncludeViewParams());
+        assertEquals(2, parameters.size());
+        fooParams = parameters.get("foo");
+        assertNotNull(fooParams);
+        assertEquals(2, fooParams.size());
+        assertEquals("rab", fooParams.get(0));
+        assertEquals("rab2", fooParams.get(1));
+        foo2Params = parameters.get("foo2");
+        assertEquals(1, foo2Params.size());
+        assertEquals("rab3", foo2Params.get(0));
+
+
+        // ensure implicit navigation outcomes that include query strings
+        // separated with & are properly parsed.
+
+        NavigationCase c4 = cnh.getNavigationCase(fc, null,
+            "test?foo=rab&foo=rab2&foo2=rab3&faces-redirect=true&includeViewParams=true&");
+        assertNotNull(c4);
+        parameters = c4.getParameters();
+        assertNotNull(parameters);
+        assertTrue(c4.isRedirect());
+        assertTrue(c4.isIncludeViewParams());
+        assertEquals(2, parameters.size());
+        fooParams = parameters.get("foo");
+        assertNotNull(fooParams);
+        assertEquals(2, fooParams.size());
+        assertEquals("rab", fooParams.get(0));
+        assertEquals("rab2", fooParams.get(1));
+        foo2Params = parameters.get("foo2");
+        assertEquals(1, foo2Params.size());
+        assertEquals("rab3", foo2Params.get(0));
+
+        // ensure invalid query string correctly handled
+        NavigationCase c5 = cnh.getNavigationCase(fc, null, "test?");
+
+        assertNotNull(c5);
+        assertNull(c5.getParameters());
+        assertFalse(c5.isRedirect());
+        assertFalse(c5.isIncludeViewParams());
+
+        // ensure redirect parameter el evaluation is performed more than once
+        NavigationCase ncase = cnh.getNavigationCase(fc, null, "redirectOutcome3");
+        String url = fc.getExternalContext().encodeRedirectURL(
+            "/path.xhtml", evaluateExpressions(fc, ncase.getParameters()));
+        System.out.println("URL: " + url);
+        assertTrue(url.contains("param=1"));
+        url = fc.getExternalContext().encodeRedirectURL("/path.xhtml",
+                evaluateExpressions(fc,ncase.getParameters()));
+        assertTrue(url.contains("param=2"));
+        return "SUCCESS";
+    }
+
+    private void loadTestResultList() throws Exception {
+
+        DocumentBuilderFactory f = DbfFactory.getFactory();
+        f.setNamespaceAware(false);
+        f.setValidating(false);
+        DocumentBuilder builder = f.newDocumentBuilder();
+
+        Document d = builder.parse(((ServletContext)FacesContext.getCurrentInstance().getExternalContext().
+            getContext()).getResourceAsStream("/WEB-INF/navigation-cases.xml"));
+        NodeList navigationRules = d.getDocumentElement()
+              .getElementsByTagName("test");
+        for (int i = 0; i < navigationRules.getLength(); i++) {
+            Node test = navigationRules.item(i);
+            NamedNodeMap attributes = test.getAttributes();
+            Node fromViewId = attributes.getNamedItem("fromViewId");
+            Node fromAction = attributes.getNamedItem("fromAction");
+            Node fromOutput = attributes.getNamedItem("fromOutcome");
+            Node toViewId = attributes.getNamedItem("toViewId");
+            createAndAccrueTestResult(((fromViewId != null) ? fromViewId.getTextContent().trim() : null),
+                                      ((fromAction != null) ? fromAction.getTextContent().trim() : null),
+                                      ((fromOutput != null) ? fromOutput.getTextContent().trim() : null),
+                                      ((toViewId != null) ? toViewId.getTextContent().trim() : null));
+        }
+    }
+
+    private void createAndAccrueTestResult(String fromViewId, String fromAction,
+                                          String fromOutcome, String toViewId) {
+        if (testResultList == null) {
+            testResultList = new ArrayList();
+        }
+        TestResult testResult = new TestResult();
+        testResult.fromViewId = fromViewId;
+        testResult.fromAction = fromAction;
+        testResult.fromOutcome = fromOutcome;
+        testResult.toViewId = toViewId;
+        testResultList.add(testResult);
+    }
+
+    class TestResult extends Object {
+        public String fromViewId = null;
+        public String fromAction = null;
+        public String fromOutcome = null;
+        public String toViewId = null;
+    }
+
+    private static final class ViewMapDestroyedListener
+          implements SystemEventListener {
+
+        private SystemEvent event;
+        private boolean processEventInvoked;
+
+        public void processEvent(SystemEvent event)
+        throws AbortProcessingException {
+            this.processEventInvoked = true;
+            this.event = event;
+        }
+
+        public boolean isListenerForSource(Object source) {
+            return (source instanceof UIViewRoot);
+        }
+
+        public SystemEvent getPassedEvent() {
+            return event;
+        }
+
+        public boolean wasProcessEventInvoked() {
+            return processEventInvoked;
+        }
+
+        public void reset() {
+            processEventInvoked = false;
+            event = null;
+        }
+    }
+
+    private static final class WrapperNavigationHandler extends NavigationHandler {
+
+        private NavigationHandler delegate;
+
+        public WrapperNavigationHandler(NavigationHandler delegate) {
+            this.delegate = delegate;
+        }
+
+        public void handleNavigation(FacesContext context, String fromAction, String outcome) {
+            delegate.handleNavigation(context, fromAction, outcome);
+        }
+    }
+
+    private Map<String, List<String>> evaluateExpressions(FacesContext context, Map<String, List<String>> map) {
+
+        if (map != null && !map.isEmpty()) {
+            Map<String, List<String>> ret = new HashMap<String, List<String>>(map.size());
+            for (Map.Entry<String, List<String>> entry : map.entrySet()) {
+                ret.put(entry.getKey(), evaluateExpressions(context, entry.getValue()));
+            }
+
+            return ret;
+        }
+
+        return map;
+
+    }
+
+    private List<String> evaluateExpressions(FacesContext context, List<String> values) {
+         if (!values.isEmpty()) {
+             List<String> ret = new ArrayList<String>(values.size());
+             Application app = context.getApplication();
+             for (String val : values) {
+                 if (val != null) {
+                     String value = val.trim();
+                     if (isExpression(value)) {
+                         value = app.evaluateExpressionGet(context,
+                                                           value,
+                                                           String.class);
+                     }
+                     ret.add(value);
+                 }
+             }
+
+             return ret;
+         }
+         return values;
+     }
+
+    private static boolean isExpression(String expression) {
+
+        if (null == expression) {
+            return false;
+        }
+
+        //check to see if attribute has an expression
+        int start = expression.indexOf("#{");
+        return start != -1 && expression.indexOf('}', start+2) != -1;
+    }
+
+    private String title = "Test Navigation Handler";
+    public String getTitle() {
+        return title;
+    }
+
+    private String status="";
+
+    public String getStatus() {
+        return status;
+    }
+
+}
+
diff --git a/test/agnostic/application/navigation/src/main/java/com/sun/faces/test/agnostic/application/navigation/OutcomeParameterBean.java b/test/agnostic/application/navigation/src/main/java/com/sun/faces/test/agnostic/application/navigation/OutcomeParameterBean.java
new file mode 100644
index 0000000..94f442c
--- /dev/null
+++ b/test/agnostic/application/navigation/src/main/java/com/sun/faces/test/agnostic/application/navigation/OutcomeParameterBean.java
@@ -0,0 +1,129 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 2009-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.application.navigation;
+
+import java.io.IOException;
+import java.io.Serializable;
+import java.io.UnsupportedEncodingException;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.ViewScoped;
+import javax.faces.context.ExternalContext;
+import javax.faces.context.FacesContext;
+import javax.servlet.ServletContext;
+
+/**
+ * Backing Bean class that redirects on startSearch() to an other JSF page and
+ * tries to transmit the content of the searchTerm property as a URL HTTP-GET
+ * parameter.
+ *
+ * @author deconstruct
+ */
+ at ManagedBean
+ at ViewScoped
+public class OutcomeParameterBean implements Serializable {
+
+    private String searchTermA = "Laurel & Hardy";
+    private String searchTermB = "Laurel & Hardy";
+    private String searchTermC = "Laurel & Hardy";
+    private String searchTermD = "Laurel & Hardy";
+    private String searchTermE = "Laurel & Hardy";
+
+    public String startSearchWithUrlEncode() throws UnsupportedEncodingException {
+        String queryUrlParameter = java.net.URLEncoder.encode(searchTermA, "UTF-8");
+        String redirectTarget = "/outcomeParameterResults.xhtml?query=" + queryUrlParameter + "&otherParameter=someValue&faces-redirect=true";
+        return redirectTarget;
+    }
+
+    public String startSearchWithoutUrlEncode() throws UnsupportedEncodingException {
+        String redirectTarget = "/outcomeParameterResults.xhtml?query=" + searchTermB + "&otherParameter=someValue&faces-redirect=true";
+        return redirectTarget;
+    }
+
+    public void startSearchViaExternalContext() throws UnsupportedEncodingException, IOException {
+        ExternalContext externalContext = FacesContext.getCurrentInstance().getExternalContext();
+        String contextPath = ((ServletContext) externalContext.getContext()).getContextPath();
+        String redirectTarget = contextPath
+                + "/faces/outcomeParameterResults.xhtml?query="
+                + java.net.URLEncoder.encode(searchTermC, "UTF-8")
+                + "&otherParameter=someValue";
+
+        FacesContext.getCurrentInstance().getExternalContext().redirect(redirectTarget);
+    }
+
+    public String getSearchTermA() {
+        return searchTermA;
+    }
+
+    public void setSearchTermA(String searchTermA) {
+        this.searchTermA = searchTermA;
+    }
+
+    public String getSearchTermB() {
+        return searchTermB;
+    }
+
+    public void setSearchTermB(String searchTermB) {
+        this.searchTermB = searchTermB;
+    }
+
+    public String getSearchTermC() {
+        return searchTermC;
+    }
+
+    public void setSearchTermC(String searchTermC) {
+        this.searchTermC = searchTermC;
+    }
+
+    public String getSearchTermD() {
+        return searchTermD;
+    }
+
+    public void setSearchTermD(String searchTermD) {
+        this.searchTermD = searchTermD;
+    }
+
+    public String getSearchTermE() {
+        return searchTermD;
+    }
+
+    public void setSearchTermE(String searchTermE) {
+        this.searchTermE = searchTermE;
+    }
+}
diff --git a/test/agnostic/application/navigation/src/main/webapp/WEB-INF/faces-config.xml b/test/agnostic/application/navigation/src/main/webapp/WEB-INF/faces-config.xml
new file mode 100644
index 0000000..330e63c
--- /dev/null
+++ b/test/agnostic/application/navigation/src/main/webapp/WEB-INF/faces-config.xml
@@ -0,0 +1,112 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
+    version="2.0">
+
+  <!-- First navigation rule (global) -->
+  <navigation-rule>
+    <!-- Can also be omitted, since this is the default -->
+    <from-view-id> * </from-view-id>
+    <!-- Logout button on every page -->
+    <navigation-case>
+      <from-action>#{UserBean.Logout}</from-action>
+      <to-view-id>/logout.jsp</to-view-id>
+    </navigation-case>
+    <!-- Generic "not logged in" handler -->
+    <navigation-case>
+      <from-outcome>loginRequired</from-outcome>
+      <to-view-id>/must-login-first.jsp</to-view-id>
+    </navigation-case>
+  </navigation-rule>
+
+
+  <!-- Second navigation rule (login page only) -->
+  <navigation-rule>
+    <from-view-id> /login.jsp </from-view-id>
+    <!-- Login action was invoked successfully -->
+    <navigation-case>
+      <from-action>#{UserBean.login}</from-action>
+      <from-outcome>success</from-outcome>
+      <to-view-id>/home.jsp</to-view-id>
+    </navigation-case>
+    <!-- User registration required -->
+    <navigation-case>
+      <from-action>#{UserBean.register}</from-action>
+      <from-outcome>success</from-outcome>
+      <to-view-id>/get-user-info.jsp</to-view-id>
+    </navigation-case>
+    <!-- User registration failed -->
+    <navigation-case>
+      <from-action>#{UserBean.register}</from-action>
+      <from-outcome>duplicate</from-outcome>
+      <to-view-id>/try-another-name.jsp</to-view-id>
+    </navigation-case>
+  </navigation-rule>
+
+
+  <!-- Third navigation rule (more global stuff) -->
+  <navigation-rule>
+    <!-- Omit the request view id this time -->
+    <!-- General search form handling -->
+    <navigation-case>
+      <from-action>#{SearchForm.go}</from-action>
+      <to-view-id>/search-results.jsp</to-view-id>
+    </navigation-case>
+  </navigation-rule>
+
+
+  <!-- Fourth navigation rule (special search handling) -->
+  <navigation-rule>
+    <!-- Search works differently for part of the app -->
+    <from-view-id>/movies/*</from-view-id>
+    <!-- Special search form handling -->
+    <navigation-case>
+      <from-action>#{SearchForm.go}</from-action>
+      <to-view-id>/movies/movie-search-results.jsp</to-view-id>
+    </navigation-case>
+  </navigation-rule>
+
+</faces-config>
diff --git a/test/agnostic/application/navigation/src/main/webapp/WEB-INF/faces-navigation.xml b/test/agnostic/application/navigation/src/main/webapp/WEB-INF/faces-navigation.xml
new file mode 100644
index 0000000..57a78d9
--- /dev/null
+++ b/test/agnostic/application/navigation/src/main/webapp/WEB-INF/faces-navigation.xml
@@ -0,0 +1,211 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
+    version="2.0">
+
+<navigation-rule> 
+  <description> 
+  APPLICATION WIDE NAVIGATION HANDLING 
+  </description> 
+  <from-view-id> * </from-view-id> 
+  <navigation-case> 
+    <description> 
+      Assume there is a Logout button on every page that 
+      invokes the logout Action. 
+    </description> 
+    <display-name>Generic Logout Button</display-name> 
+    <from-action>#{userBean.logout}</from-action> 
+    <to-view-id>/logout.jsp</to-view-id> 
+  </navigation-case> 
+<!-- Handle a generic error outcome from any Action --> 
+  <navigation-case> 
+    <description> 
+      Handle a generic error outcome that might be returned 
+      by any application Action. 
+    </description> 
+    <display-name>Generic Error Outcome</display-name> 
+    <from-action>#{newCustomer.loginRequired}</from-action> 
+    <to-view-id>/must-login-first.jsp</to-view-id> 
+  </navigation-case> 
+</navigation-rule> 
+
+<navigation-rule>
+  <description>
+    LOGIN PAGE NAVIGATION HANDLING
+  </description>
+  <from-view-id> /login.jsp </from-view-id>
+  <navigation-case>
+    <description>
+      Handle case where login succeeded.
+    </description>
+    <display-name>Successful Login</display-name>
+    <from-action>#{userBean.login}</from-action>
+    <from-outcome>success</from-outcome>
+    <to-view-id>/home.jsp</to-view-id>
+  </navigation-case>
+  <navigation-case>
+    <description>
+      User registration for a new user succeeded.
+    </description>
+    <display-name>Successful New User Registration</display-name>
+    <from-action>#{userBean.register}</from-action>
+    <from-outcome>success</from-outcome>
+    <to-view-id>/welcome.jsp</to-view-id>
+  </navigation-case>
+  <navigation-case>
+    <description>
+      User registration for a new user failed because of a
+      duplicate username.
+    </description>
+    <display-name>Failed New User Registration</display-name>
+    <from-action>#{userBean.register}</from-action>
+    <from-outcome>duplicateUserName</from-outcome>
+    <to-view-id>/try-another-name.jsp</to-view-id>
+  </navigation-case>
+</navigation-rule>
+
+<navigation-rule>
+  <description>
+    Assume there is a search form on every page. These navigation
+    cases get merged with the application-wide rules above because
+    they use the same from-view-id pattern. The same thing would
+    also happen if from-view-id was omitted here, because that is
+    equivalent to a matching pattern of *.
+  </description>
+  <from-view-id> * </from-view-id>
+  <navigation-case>
+    <display-name>Search Form Success</display-name>
+    <from-action>#{searchForm.go}</from-action>
+    <from-outcome>success</from-outcome>
+    <to-view-id>/search-results.jsp</to-view-id>
+  </navigation-case>
+  <navigation-case>
+    <display-name>Search Form Failure</display-name>
+    <from-action>#{searchForm.go}</from-action>
+    <to-view-id>/search-problem.jsp</to-view-id>
+  </navigation-case>
+</navigation-rule>
+
+<navigation-rule>
+  <description>
+    Searching works slightly differently in part of the site.
+  </description>
+  <from-view-id> /movies/* </from-view-id>
+  <navigation-case>
+    <display-name>Search Form Success</display-name>
+    <from-action>#{searchForm.go}</from-action>
+    <from-outcome>success</from-outcome>
+    <to-view-id>/movie-search-results.jsp</to-view-id>
+  </navigation-case>
+  <navigation-case>
+    <display-name>Search Form Failure</display-name>
+    <from-action>#{searchForm.go}</from-action>
+    <to-view-id>/search-problem.jsp</to-view-id>
+  </navigation-case>
+</navigation-rule>
+
+
+<navigation-rule>
+  <from-view-id>/dir3/*</from-view-id>
+  <navigation-case>
+    <from-outcome>home</from-outcome>
+    <to-view-id>/dir3/home.jsp</to-view-id>
+  </navigation-case>
+</navigation-rule>
+
+<navigation-rule>
+  <from-view-id>/dir1/dir2/dir3/*</from-view-id>
+  <navigation-case>
+    <from-outcome>home</from-outcome>
+    <to-view-id>/dir1/dir2/dir3/home.jsp</to-view-id>
+  </navigation-case>
+</navigation-rule>
+
+
+    <navigation-rule>
+        <from-view-id>/page1.xhtml</from-view-id>
+        <navigation-case>
+            <from-outcome>redirectOutcome1</from-outcome>
+            <to-view-id>/page2.xhtml</to-view-id>
+            <redirect include-view-params="true">
+                <view-param>
+                    <name>foo</name>
+                    <value>bar</value>
+                </view-param>
+                <view-param>
+                    <name>foo</name>
+                    <value>bar2</value>
+                </view-param>
+                <view-param>
+                    <name>foo2</name>
+                    <value>bar3</value>
+                </view-param>
+            </redirect>
+        </navigation-case>
+         <navigation-case>
+            <from-outcome>redirectOutcome2</from-outcome>
+            <to-view-id>/page2.xhtml</to-view-id>
+            <redirect />
+        </navigation-case>
+        <navigation-case>
+            <from-outcome>redirectOutcome3</from-outcome>
+            <to-view-id>/page2.xhtml</to-view-id>
+            <redirect>
+                <view-param>
+                    <name>param</name>
+                    <value>#{navbean.increment}</value>
+                </view-param>
+            </redirect>
+        </navigation-case>
+    </navigation-rule>
+
+    <managed-bean>
+     <managed-bean-name>navbean</managed-bean-name>
+      <managed-bean-class>com.sun.faces.test.agnostic.application.navigation.NavBean</managed-bean-class>
+      <managed-bean-scope>request</managed-bean-scope>
+  </managed-bean>
+
+</faces-config>
diff --git a/test/agnostic/application/navigation/src/main/webapp/WEB-INF/glassfish-web.xml b/test/agnostic/application/navigation/src/main/webapp/WEB-INF/glassfish-web.xml
new file mode 100644
index 0000000..981d568
--- /dev/null
+++ b/test/agnostic/application/navigation/src/main/webapp/WEB-INF/glassfish-web.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
+<glassfish-web-app error-url="">
+  <context-root>/test-agnostic-application-navigation</context-root>
+  <class-loader delegate="true"/>
+  <jsp-config>
+    <property name="keepgenerated" value="true">
+      <description>Keep a copy of the generated servlet class' java code.</description>
+    </property>
+  </jsp-config>
+</glassfish-web-app>
diff --git a/test/agnostic/application/navigation/src/main/webapp/WEB-INF/navigation-cases.xml b/test/agnostic/application/navigation/src/main/webapp/WEB-INF/navigation-cases.xml
new file mode 100644
index 0000000..0c11dc1
--- /dev/null
+++ b/test/agnostic/application/navigation/src/main/webapp/WEB-INF/navigation-cases.xml
@@ -0,0 +1,298 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!--
+     This document contains test scenarios for the implementation
+     of the default NavigationHandler implementation, as described
+     in Section 7.4.2 of the spec.  These rules assume that an
+     application configuration file including all of the example
+     navigation rules in Section 7.4.3 has been processed.
+
+     Each test scenario is represented by a "test" element with the
+     following attributes:
+
+     fromViewId                view id from the view currently
+                               being processed (required)
+
+     fromAction             Action reference of the action that
+                               was invoked (optional)
+
+     fromOutcome               Logical outcome from the
+                               action that was called (optional)
+
+     toViewId                  view id of the view that should be
+                               selected next, which may be the same
+                               as the from view (required)
+
+-->
+
+<tests>
+
+  <!-- ============ Tests From /login.jsp view Identifier ================= -->
+
+
+  <!-- Positive tests that should match specific rules -->
+
+  <test fromViewId="/login.jsp"
+     fromAction="#{userBean.login}"
+       fromOutcome="success"
+          toViewId="/home.jsp"/>
+
+  <test fromViewId="/login.jsp"
+     fromAction="#{userBean.register}"
+       fromOutcome="success"
+          toViewId="/welcome.jsp"/>
+
+  <test fromViewId="/login.jsp"
+     fromAction="#{userBean.register}"
+       fromOutcome="duplicateUserName"
+          toViewId="/try-another-name.jsp"/>
+
+
+  <!-- Positive tests that should match application wide rules -->
+
+  <!-- Matches the generic logout rule #1 -->
+  <test fromViewId="/login.jsp"
+     fromAction="#{userBean.logout}"
+          toViewId="/logout.jsp"/>
+
+  <!-- Matches the generic logout rule #2 -->
+  <test fromViewId="/login.jsp"
+     fromAction="#{userBean.logout}"
+       fromOutcome="whatever"
+          toViewId="/logout.jsp"/>
+
+  <!-- Matches generic error outcome rule #1 -->
+  <test fromViewId="/login.jsp"
+       fromOutcome="loginRequired"
+          toViewId="/must-login-first.jsp"/>
+
+  <!-- Matches generic error outcome rule #2 -->
+  <test fromViewId="/login.jsp"
+     fromAction="#{foo.bar}"
+       fromOutcome="loginRequired"
+          toViewId="/must-login-first.jsp"/>
+
+  <!-- Matches generic search results #1 -->
+  <test fromViewId="/login.jsp"
+     fromAction="#{searchForm.go}"
+          toViewId="/search-problem.jsp"/>
+
+  <!-- Matches generic search results #2 -->
+  <test fromViewId="/login.jsp"
+     fromAction="#{searchForm.go}"
+       fromOutcome="success"
+          toViewId="/search-results.jsp"/>
+
+
+  <!-- Negative tests that should not match any rules -->
+
+
+  <!-- Mismatched fromAction -->
+  <test fromViewId="/login.jsp"
+     fromAction="#{foo.bar}"
+       fromOutcome="success"
+          toViewId="/login.jsp"/>
+
+  <!-- Mismatched fromOutcome -->
+  <test fromViewId="/login.jsp"
+     fromAction="#{userBean.login}"
+       fromOutcome="foobar"
+          toViewId="/login.jsp"/>
+
+  <!-- Mismatched fromAction -->
+  <test fromViewId="/login.jsp"
+     fromAction="*"
+       fromOutcome="success"
+          toViewId="/login.jsp"/>
+
+  <!-- Mismatched fromOutcome -->
+  <test fromViewId="/login.jsp"
+     fromAction="#{userBean.login}"
+       fromOutcome="*"
+          toViewId="/login.jsp"/>
+
+  <!-- Missing fromAction -->
+  <test fromViewId="/login.jsp"
+       fromOutcome="success"
+          toViewId="/login.jsp"/>
+
+  <!-- Missing fromOutcome -->
+  <test fromViewId="/login.jsp"
+     fromAction="#{userBean.login}"
+          toViewId="/login.jsp"/>
+
+
+  <!-- ============ Tests From /other.jsp view Identifier ================= -->
+
+
+  <!-- Positive tests that should match application wide rules -->
+
+
+  <!-- Matches the generic logout rule #1 -->
+  <test fromViewId="/other.jsp"
+     fromAction="#{userBean.logout}"
+          toViewId="/logout.jsp"/>
+
+  <!-- Matches the generic logout rule #2 -->
+  <test fromViewId="/other.jsp"
+     fromAction="#{userBean.logout}"
+       fromOutcome="whatever"
+          toViewId="/logout.jsp"/>
+
+  <!-- Matches generic error outcome rule #1 -->
+  <test fromViewId="/other.jsp"
+       fromOutcome="loginRequired"
+          toViewId="/must-login-first.jsp"/>
+
+  <!-- Matches generic error outcome rule #2 -->
+  <test fromViewId="/other.jsp"
+     fromAction="#{foo.bar}"
+       fromOutcome="loginRequired"
+          toViewId="/must-login-first.jsp"/>
+
+  <!-- Matches generic search results #1 -->
+  <test fromViewId="/other.jsp"
+     fromAction="#{searchForm.go}"
+          toViewId="/search-problem.jsp"/>
+
+  <!-- Matches generic search results #2 -->
+  <test fromViewId="/other.jsp"
+     fromAction="#{searchForm.go}"
+       fromOutcome="success"
+          toViewId="/search-results.jsp"/>
+
+
+  <!-- Negative tests that should not match any rules -->
+
+
+  <!-- Mismatched fromAction -->
+  <test fromViewId="/other.jsp"
+     fromAction="#{foo.bar}"
+       fromOutcome="success"
+          toViewId="/other.jsp"/>
+
+  <!-- Mismatched fromOutcome -->
+  <test fromViewId="/other.jsp"
+     fromAction="#{userBean.login}"
+       fromOutcome="foobar"
+          toViewId="/other.jsp"/>
+
+  <!-- Missing fromAction -->
+  <test fromViewId="/other.jsp"
+       fromOutcome="success"
+          toViewId="/other.jsp"/>
+
+  <!-- Missing fromOutcome -->
+  <test fromViewId="/other.jsp"
+     fromAction="#{userBean.login}"
+          toViewId="/other.jsp"/>
+
+
+  <!-- ========= Tests From /movies/index.jsp View Identifier ============= -->
+
+
+  <!-- Positive tests that should match application wide rules -->
+
+
+  <!-- Matches the generic logout rule #1 -->
+  <test fromViewId="/movies/index.jsp"
+     fromAction="#{userBean.logout}"
+          toViewId="/logout.jsp"/>
+
+  <!-- Matches the generic logout rule #2 -->
+  <test fromViewId="/movies/index.jsp"
+     fromAction="#{userBean.logout}"
+       fromOutcome="whatever"
+          toViewId="/logout.jsp"/>
+
+  <!-- Matches generic error outcome rule #1 -->
+  <test fromViewId="/movies/index.jsp"
+       fromOutcome="loginRequired"
+          toViewId="/must-login-first.jsp"/>
+
+  <!-- Matches generic error outcome rule #2 -->
+  <test fromViewId="/movies/index.jsp"
+     fromAction="#{foo.bar}"
+       fromOutcome="loginRequired"
+          toViewId="/must-login-first.jsp"/>
+
+  <!-- Matches special search results #1 -->
+  <test fromViewId="/movies/index.jsp"
+     fromAction="#{searchForm.go}"
+          toViewId="/search-problem.jsp"/>
+
+  <!-- Matches special search results #2 -->
+  <test fromViewId="/movies/index.jsp"
+     fromAction="#{searchForm.go}"
+       fromOutcome="success"
+          toViewId="/movie-search-results.jsp"/>
+
+
+  <!-- Negative tests that should not match any rules -->
+
+
+  <!-- Mismatched fromAction -->
+  <test fromViewId="/movies/index.jsp"
+     fromAction="#{foo.bar}"
+       fromOutcome="success"
+          toViewId="/movies/index.jsp"/>
+
+  <!-- Mismatched fromOutcome -->
+  <test fromViewId="/movies/index.jsp"
+     fromAction="#{userBean.login}"
+       fromOutcome="foobar"
+          toViewId="/movies/index.jsp"/>
+
+  <!-- Missing fromAction -->
+  <test fromViewId="/movies/index.jsp"
+       fromOutcome="success"
+          toViewId="/movies/index.jsp"/>
+
+  <!-- Missing fromOutcome -->
+  <test fromViewId="/movies/index.jsp"
+     fromAction="#{userBean.login}"
+          toViewId="/movies/index.jsp"/>
+
+
+</tests>
diff --git a/test/agnostic/application/navigation/src/main/webapp/WEB-INF/web.xml b/test/agnostic/application/navigation/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..3ef28bd
--- /dev/null
+++ b/test/agnostic/application/navigation/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" 
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>${webapp.projectStage}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
+        <param-value>${webapp.partialStateSaving}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>${webapp.stateSavingMethod}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.CONFIG_FILES</param-name>
+        <param-value>/WEB-INF/faces-navigation.xml</param-value>
+    </context-param>
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <session-config>
+        <session-timeout>30</session-timeout>
+    </session-config>
+    <error-page>
+        <exception-type>java.lang.Throwable</exception-type>
+        <location>/error.jsp</location>
+    </error-page>
+</web-app>
diff --git a/test/agnostic/application/navigation/src/main/webapp/error.jsp b/test/agnostic/application/navigation/src/main/webapp/error.jsp
new file mode 100644
index 0000000..52d9786
--- /dev/null
+++ b/test/agnostic/application/navigation/src/main/webapp/error.jsp
@@ -0,0 +1,56 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<%@ page isErrorPage="true" import="java.io.*" contentType="text/plain"%>
+
+Message:
+<%=exception.getMessage()%>
+
+StackTrace:
+<%
+       StringWriter stringWriter = new StringWriter();
+       PrintWriter printWriter = new PrintWriter(stringWriter);
+       exception.printStackTrace(printWriter);
+       out.println(stringWriter);
+       printWriter.close();
+       stringWriter.close();
+%>
diff --git a/test/agnostic/application/navigation/src/main/webapp/hbuttonXSS1.xhtml b/test/agnostic/application/navigation/src/main/webapp/hbuttonXSS1.xhtml
new file mode 100644
index 0000000..c5ff627
--- /dev/null
+++ b/test/agnostic/application/navigation/src/main/webapp/hbuttonXSS1.xhtml
@@ -0,0 +1,13 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://xmlns.jcp.org/jsf/core">
+    <h:head>
+        <title>Bug18820382</title>
+    </h:head>
+    <h:body>
+        <p><a id="link" href="hbuttonXSS2.xhtml?url=%27*alert%28%27XSS!%27%29*%27">invoke XSS attack</a></p>
+    </h:body>
+</html>
+
diff --git a/test/agnostic/application/navigation/src/main/webapp/hbuttonXSS2.xhtml b/test/agnostic/application/navigation/src/main/webapp/hbuttonXSS2.xhtml
new file mode 100644
index 0000000..ded3fb7
--- /dev/null
+++ b/test/agnostic/application/navigation/src/main/webapp/hbuttonXSS2.xhtml
@@ -0,0 +1,16 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://xmlns.jcp.org/jsf/core">
+    <h:head>
+        <title>Bug18820382</title>
+    </h:head>
+    <h:body>
+        <h:button id="submit" outcome="#{param['url']}" value="submit">
+            <f:param name="otherParameter" value="someValue" />
+            <f:param name="faces-redirect" value="true" />
+        </h:button>
+    </h:body>
+</html>
+
diff --git a/test/agnostic/application/navigation/src/main/webapp/navHandler.xhtml b/test/agnostic/application/navigation/src/main/webapp/navHandler.xhtml
new file mode 100644
index 0000000..879300e
--- /dev/null
+++ b/test/agnostic/application/navigation/src/main/webapp/navHandler.xhtml
@@ -0,0 +1,66 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+<f:view contentType="text/html"/>
+<h:head>
+    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
+    <title>Navigation</title>
+</h:head>
+
+<body>
+    <f:view>
+    <h:form>
+       <h:outputText value="#{navigationBean.title}" />
+       <br/>
+       <br/>
+       #{navigationBean.navigationHandler}
+       <h:outputText value="#{navigationBean.status}" />
+    </h:form>
+    </f:view>
+</body>
+</html>
diff --git a/test/agnostic/application/navigation/src/main/webapp/outcomeParameterForm.xhtml b/test/agnostic/application/navigation/src/main/webapp/outcomeParameterForm.xhtml
new file mode 100644
index 0000000..b7e4e0a
--- /dev/null
+++ b/test/agnostic/application/navigation/src/main/webapp/outcomeParameterForm.xhtml
@@ -0,0 +1,60 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://xmlns.jcp.org/jsf/core">
+    <h:head>
+        <title>JSF Bug #3023</title>
+    </h:head>
+    <h:body>
+        <h:form id="form">
+            <h1>Hello</h1>
+            <p>This is a test case for the <a href="https://java.net/jira/browse/JAVASERVERFACES-3023 ">JSF Bug #3023.</a></p>
+
+
+            <h2>Example A: JSF Redirect with URL-encoded parameter</h2>
+            <h:panelGrid columns="3">
+                <h:outputLabel for="searchTermFieldA" value="Enter search term"/>
+                <h:inputText id="searchTermFieldA" value="#{outcomeParameterBean.searchTermA}"/>
+                <h:commandButton id="submit1" action="#{outcomeParameterBean.startSearchWithUrlEncode()}"  value="Search"/>
+            </h:panelGrid>
+
+            <h2>Example B: JSF Redirect without URL-encoded parameter</h2>
+            <h:panelGrid columns="3">
+                <h:outputLabel for="searchTermFieldB" value="Enter search term"/>
+                <h:inputText id="searchTermFieldB" value="#{outcomeParameterBean.searchTermB}"/>
+                <h:commandButton id="submit2" action="#{outcomeParameterBean.startSearchWithoutUrlEncode()}"  value="Search"/>
+            </h:panelGrid>
+
+            <h2>Example C: Redirect via external ServletContext</h2>
+            <h:panelGrid columns="3">
+                <h:outputLabel for="searchTermFieldC" value="Enter search term"/>
+                <h:inputText id="searchTermFieldC" value="#{outcomeParameterBean.searchTermC}"/>
+                <h:commandButton id="submit3" action="#{outcomeParameterBean.startSearchViaExternalContext()}"  value="Search"/>
+            </h:panelGrid>
+
+            <h2>Example D: JSF Redirect using outcomeTargetButton</h2>
+            <h:panelGrid columns="3">
+                <h:outputLabel for="searchTermFieldD" value="Enter search term"/>
+                <h:inputText id="searchTermFieldD" value="#{outcomeParameterBean.searchTermD}"/>
+                <h:button id="submit4" outcome="outcomeParameterResults" value="Search">
+                    <f:param name="query" value="#{outcomeParameterBean.searchTermD}" />
+                    <f:param name="otherParameter" value="someValue" />
+                    <f:param name="faces-redirect" value="true" />
+                </h:button>
+            </h:panelGrid>
+            
+            <h2>Example E: JSF Redirect using outcomeTargetButton</h2>
+            <h:panelGrid columns="3">
+                <h:outputLabel for="searchTermFieldE" value="Enter search term"/>
+                <h:inputText id="searchTermFieldE" value="#{outcomeParameterBean.searchTermE}"/>
+                <h:link id="submit5" outcome="outcomeParameterResults" value="Search">
+                    <f:param name="query" value="#{outcomeParameterBean.searchTermE}" />
+                    <f:param name="otherParameter" value="someValue" />
+                    <f:param name="faces-redirect" value="true" />
+                </h:link>
+            </h:panelGrid>
+        </h:form>
+    </h:body>
+</html>
+
diff --git a/test/agnostic/application/navigation/src/main/webapp/outcomeParameterResults.xhtml b/test/agnostic/application/navigation/src/main/webapp/outcomeParameterResults.xhtml
new file mode 100644
index 0000000..cb1005f
--- /dev/null
+++ b/test/agnostic/application/navigation/src/main/webapp/outcomeParameterResults.xhtml
@@ -0,0 +1,26 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+    <h:head>
+        <title>JSF Bug #3023</title>
+    </h:head>
+    <h:body>
+        <h1>Hello</h1>
+        <p>This is a test case for the <a href="https://java.net/jira/browse/JAVASERVERFACES-3023 ">JSF Bug #3023.</a></p>
+        
+        <h2>Result</h2>
+        The transmitted URL parameters are:
+        <ul>
+            <ui:repeat value="#{request.parameterMap.keySet().toArray()}" var="paramKey">
+                <li>
+                    <pre>#{paramKey}=#{request.getParameter(paramKey)}</pre>
+                </li>
+            </ui:repeat>
+        </ul>
+    </h:body>
+</html>
+
diff --git a/test/agnostic/application/navigation/src/main/webapp/redirectParams.xhtml b/test/agnostic/application/navigation/src/main/webapp/redirectParams.xhtml
new file mode 100644
index 0000000..0609d4b
--- /dev/null
+++ b/test/agnostic/application/navigation/src/main/webapp/redirectParams.xhtml
@@ -0,0 +1,66 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+<f:view contentType="text/html"/>
+<h:head>
+    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
+    <title>Navigation</title>
+</h:head>
+
+<body>
+    <f:view>
+    <h:form>
+       <h:outputText value="#{navigationBean.title}" />
+       <br/>
+       <br/>
+       #{navigationBean.redirectParameters}
+       <h:outputText value="#{navigationBean.status}" />
+    </h:form>
+    </f:view>
+</body>
+</html>
diff --git a/test/agnostic/application/navigation/src/main/webapp/separateRule.xhtml b/test/agnostic/application/navigation/src/main/webapp/separateRule.xhtml
new file mode 100644
index 0000000..f555559
--- /dev/null
+++ b/test/agnostic/application/navigation/src/main/webapp/separateRule.xhtml
@@ -0,0 +1,66 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+<f:view contentType="text/html"/>
+<h:head>
+    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
+    <title>Navigation</title>
+</h:head>
+
+<body>
+    <f:view>
+    <h:form>
+       <h:outputText value="#{navigationBean.title}" />
+       <br/>
+       <br/>
+       #{navigationBean.separateRule}
+       <h:outputText value="#{navigationBean.status}" />
+    </h:form>
+    </f:view>
+</body>
+</html>
diff --git a/test/agnostic/application/navigation/src/main/webapp/similarFromViewId.xhtml b/test/agnostic/application/navigation/src/main/webapp/similarFromViewId.xhtml
new file mode 100644
index 0000000..b08dfd5
--- /dev/null
+++ b/test/agnostic/application/navigation/src/main/webapp/similarFromViewId.xhtml
@@ -0,0 +1,66 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+<f:view contentType="text/html"/>
+<h:head>
+    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
+    <title>Navigation</title>
+</h:head>
+
+<body>
+    <f:view>
+    <h:form>
+       <h:outputText value="#{navigationBean.title}" />
+       <br/>
+       <br/>
+       #{navigationBean.similarViewIds}
+       <h:outputText value="#{navigationBean.status}" />
+    </h:form>
+    </f:view>
+</body>
+</html>
diff --git a/test/agnostic/application/navigation/src/main/webapp/test.xhtml b/test/agnostic/application/navigation/src/main/webapp/test.xhtml
new file mode 100644
index 0000000..22a5f62
--- /dev/null
+++ b/test/agnostic/application/navigation/src/main/webapp/test.xhtml
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+    <title></title>
+</head>
+<body>
+
+</body>
+</html>
diff --git a/test/agnostic/application/navigation/src/main/webapp/wrappedNavHandler.xhtml b/test/agnostic/application/navigation/src/main/webapp/wrappedNavHandler.xhtml
new file mode 100644
index 0000000..3147312
--- /dev/null
+++ b/test/agnostic/application/navigation/src/main/webapp/wrappedNavHandler.xhtml
@@ -0,0 +1,66 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+<f:view contentType="text/html"/>
+<h:head>
+    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
+    <title>Navigation</title>
+</h:head>
+
+<body>
+    <f:view>
+    <h:form>
+       <h:outputText value="#{navigationBean.title}" />
+       <br/>
+       <br/>
+       #{navigationBean.wrappedNavigationHandler}
+       <h:outputText value="#{navigationBean.status}" />
+    </h:form>
+    </f:view>
+</body>
+</html>
diff --git a/test/agnostic/application/navigation/src/test/java/com/sun/faces/test/agnostic/application/navigation/Issue3023IT.java b/test/agnostic/application/navigation/src/test/java/com/sun/faces/test/agnostic/application/navigation/Issue3023IT.java
new file mode 100644
index 0000000..2b76601
--- /dev/null
+++ b/test/agnostic/application/navigation/src/test/java/com/sun/faces/test/agnostic/application/navigation/Issue3023IT.java
@@ -0,0 +1,109 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.agnostic.application.navigation;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlElement;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+import org.junit.Ignore;
+
+public class Issue3023IT {
+    
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+        webClient.setThrowExceptionOnFailingStatusCode(true);
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testOutcomeParameter1() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "/faces/outcomeParameterForm.xhtml");
+        HtmlElement submit1 = page.getHtmlElementById("form:submit1");
+        page = submit1.click();
+        assertTrue(page.asText().indexOf("query=Laurel & Hardy") != -1);
+    }
+
+    @Test
+    public void testOutcomeParameter2() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "/faces/outcomeParameterForm.xhtml");
+        HtmlElement submit = page.getHtmlElementById("form:submit2");
+        page = submit.click();
+        assertTrue(page.asText().indexOf("query=Laurel & Hardy") == -1);
+        assertTrue(page.asText().indexOf("query=Laurel") != -1);
+    }
+
+    @Test
+    public void testOutcomeParameter3() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "/faces/outcomeParameterForm.xhtml");
+        HtmlElement submit = page.getHtmlElementById("form:submit3");
+        page = submit.click();
+        assertTrue(page.asText().indexOf("query=Laurel & Hardy") != -1);
+    }
+
+    @Test
+    public void testOutcomeParameter4() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "/faces/outcomeParameterForm.xhtml");
+        HtmlElement submit = page.getHtmlElementById("form:submit4");
+        page = submit.click();
+        assertTrue(page.asText().indexOf("query=Laurel & Hardy") != -1);
+    }
+
+    @Test
+    public void testOutcomeParameter5() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "/faces/outcomeParameterForm.xhtml");
+        HtmlElement submit = page.getHtmlElementById("form:submit4");
+        page = submit.click();
+        assertTrue(page.asText().indexOf("query=Laurel & Hardy") != -1);
+    }
+}
diff --git a/test/agnostic/application/navigation/src/test/java/com/sun/faces/test/agnostic/application/navigation/NavigationHandlerIT.java b/test/agnostic/application/navigation/src/test/java/com/sun/faces/test/agnostic/application/navigation/NavigationHandlerIT.java
new file mode 100644
index 0000000..e9274b3
--- /dev/null
+++ b/test/agnostic/application/navigation/src/test/java/com/sun/faces/test/agnostic/application/navigation/NavigationHandlerIT.java
@@ -0,0 +1,110 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.agnostic.application.navigation;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
+import javax.faces.FacesException;
+import javax.faces.el.MethodNotFoundException;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class NavigationHandlerIT {
+    
+    /**
+     * Stores the web URL.
+     */
+    private String webUrl;
+    /**
+     * Stores the web client.
+     */
+    private WebClient webClient;
+
+    /**
+     * Setup before testing.
+     */
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+        webClient.setThrowExceptionOnFailingStatusCode(true);
+    }
+
+    /**
+     * Tear down after testing.
+     */
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testNavigationHandler() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "/faces/navHandler.xhtml");
+    }
+
+
+    @Test
+    public void testSimilarFromViewId() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "/faces/similarFromViewId.xhtml");
+    }
+
+    @Test
+    public void testSeparateRule() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "/faces/separateRule.xhtml");
+    }
+
+    @Test
+    public void testWrappedNavigationHandler() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "/faces/wrappedNavHandler.xhtml");
+
+    }
+
+    @Test
+    public void testRedirectParameters() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "/faces/redirectParams.xhtml");
+    }
+}
+
diff --git a/test/agnostic/application/navigationJSF2/pom.xml b/test/agnostic/application/navigationJSF2/pom.xml
new file mode 100644
index 0000000..f53388c
--- /dev/null
+++ b/test/agnostic/application/navigationJSF2/pom.xml
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.agnostic.application</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.agnostic.application</groupId>
+    <artifactId>navigationJSF2</artifactId>
+    <packaging>war</packaging>
+    <name>Mojarra ${project.version} - Test - Agnostic - Application - NavigationJSF2</name>
+    <build>
+        <finalName>test-agnostic-application-navigationJSF2</finalName>
+    </build>
+    <dependencies>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <version>4.11</version>
+            <scope>compile</scope>
+        </dependency>
+    </dependencies>
+    <properties>
+        <netbeans.hint.deploy.server>gfv3ee6</netbeans.hint.deploy.server>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/test/agnostic/application/navigationJSF2/src/main/java/com/sun/faces/test/agnostic/application/navigationJSF2/NavigationBean.java b/test/agnostic/application/navigationJSF2/src/main/java/com/sun/faces/test/agnostic/application/navigationJSF2/NavigationBean.java
new file mode 100644
index 0000000..383a1c8
--- /dev/null
+++ b/test/agnostic/application/navigationJSF2/src/main/java/com/sun/faces/test/agnostic/application/navigationJSF2/NavigationBean.java
@@ -0,0 +1,268 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.agnostic.application.navigationJSF2;
+
+import com.sun.faces.application.ApplicationImpl;
+import com.sun.faces.application.NavigationHandlerImpl;
+import com.sun.faces.config.DbfFactory;
+import com.sun.faces.util.Util;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+import java.util.Set;
+
+import javax.faces.application.Application;
+import javax.faces.application.ConfigurableNavigationHandler;
+import javax.faces.application.NavigationCase;
+import javax.faces.application.NavigationHandler;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.SessionScoped;
+import javax.faces.component.UIViewRoot;
+import javax.faces.context.FacesContext;
+import javax.faces.event.SystemEvent;
+import javax.faces.event.SystemEventListener;
+import javax.faces.event.AbortProcessingException;
+import javax.faces.event.PreDestroyViewMapEvent;
+import javax.servlet.ServletContext;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+
+import static org.junit.Assert.*;
+
+import org.w3c.dom.Document;
+import org.w3c.dom.NodeList;
+import org.w3c.dom.Node;
+import org.w3c.dom.NamedNodeMap;
+
+
+ at ManagedBean
+ at SessionScoped
+
+public class NavigationBean {
+
+    private List testResultList = null;
+
+    public NavigationBean() {
+    }
+
+    public String getNavigationHandler() {
+        FacesContext fc = FacesContext.getCurrentInstance();
+        Application app = fc.getApplication();
+        ViewMapDestroyedListener listener = new ViewMapDestroyedListener();
+        app.subscribeToEvent(PreDestroyViewMapEvent.class,
+                                     UIViewRoot.class,
+                                     listener);
+        try {
+            loadTestResultList();
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
+        NavigationHandlerImpl navHandler = (NavigationHandlerImpl) app.getNavigationHandler();
+        String newViewId;
+        UIViewRoot page;
+        boolean gotException = false;
+
+        for (int i = 0; i < testResultList.size(); i++) {
+            TestResult testResult = (TestResult) testResultList.get(i);
+            Boolean conditionResult = null;
+            if (testResult.condition != null) {
+                conditionResult = (Boolean) app.getExpressionFactory().
+                    createValueExpression(fc.getELContext(), testResult.condition, Boolean.class).
+                        getValue(fc.getELContext());
+            }
+            System.out.println("Testing from-view-id=" + testResult.fromViewId +
+                               " from-action=" + testResult.fromAction +
+                               " from-outcome=" + testResult.fromOutcome +
+                               " if=" + testResult.condition);
+            page = Util.getViewHandler(fc).createView(fc, null);
+            page.setViewId(testResult.fromViewId);
+            page.setLocale(Locale.US);
+            page.getViewMap(); // cause the map to be created
+            fc.setViewRoot(page);
+            listener.reset();
+            try {
+                navHandler.handleNavigation(fc, testResult.fromAction,
+                                            testResult.fromOutcome);
+            } catch (Exception e) {
+                // exception is valid only if context or fromoutcome is null.
+                assertTrue(testResult.fromOutcome == null);
+                gotException = true;
+            }
+            if (!gotException) {
+                if (!testResult.fromViewId.equals(testResult.toViewId)
+                    && (testResult.fromOutcome != null || testResult.condition != null)
+                    && (testResult.condition == null || conditionResult != null)) {
+                    assertTrue(listener.getPassedEvent() instanceof PreDestroyViewMapEvent);
+                } else {
+                    assertTrue(!listener.wasProcessEventInvoked());
+                    assertTrue(listener.getPassedEvent() == null);
+                }
+                listener.reset();
+                newViewId = fc.getViewRoot().getViewId();
+                if (testResult.fromOutcome == null && testResult.condition == null) {
+                    listener.reset();
+                    System.out.println(
+                        "assertTrue(" + newViewId + ".equals(" +
+                        testResult.fromViewId +
+                        "))");
+                    assertTrue(newViewId.equals(testResult.fromViewId));
+                }
+                // test assumption: if condition is false, we advance to some other view
+                else if (testResult.condition != null && conditionResult == false) {
+                    listener.reset();
+                    System.out.println(
+                        "assertTrue(!" + newViewId + ".equals(" +
+                        testResult.toViewId +
+                        "))");
+                    assertTrue(!newViewId.equals(testResult.toViewId));
+                } else {
+                    listener.reset();
+                    System.out.println(
+                        "assertTrue(" + newViewId + ".equals(" +
+                        testResult.toViewId +
+                        "))");
+                    assertTrue(newViewId.equals(testResult.toViewId));
+                }
+            }
+        }
+        app.unsubscribeFromEvent(PreDestroyViewMapEvent.class,
+                                         UIViewRoot.class,
+                                         listener);
+        return "SUCCESS";
+    }
+
+    private void loadTestResultList() throws Exception {
+        DocumentBuilderFactory f = DbfFactory.getFactory();
+        f.setNamespaceAware(false);
+        f.setValidating(false);
+        DocumentBuilder builder = f.newDocumentBuilder();
+
+        Document d = builder.parse(((ServletContext)FacesContext.getCurrentInstance().getExternalContext().
+            getContext()).getResourceAsStream("/WEB-INF/navigation-cases-2.xml"));
+        NodeList navigationRules = d.getDocumentElement()
+              .getElementsByTagName("test");
+        for (int i = 0; i < navigationRules.getLength(); i++) {
+            Node test = navigationRules.item(i);
+            NamedNodeMap attributes = test.getAttributes();
+            Node fromViewId = attributes.getNamedItem("fromViewId");
+            Node fromAction = attributes.getNamedItem("fromAction");
+            Node fromOutput = attributes.getNamedItem("fromOutcome");
+            Node condition = attributes.getNamedItem("if");
+            Node toViewId = attributes.getNamedItem("toViewId");
+            createAndAccrueTestResult(((fromViewId != null) ? fromViewId.getTextContent().trim() : null),
+                                      ((fromAction != null) ? fromAction.getTextContent().trim() : null),
+                                      ((fromOutput != null) ? fromOutput.getTextContent().trim() : null),
+                                      ((condition != null) ? condition.getTextContent().trim() : null),
+                                      ((toViewId != null) ? toViewId.getTextContent().trim() : null));
+        }
+    }
+
+    private void createAndAccrueTestResult(String fromViewId, String fromAction,
+                                          String fromOutcome, String condition, String toViewId) {
+        if (testResultList == null) {
+            testResultList = new ArrayList();
+        }
+        TestResult testResult = new TestResult();
+        testResult.fromViewId = fromViewId;
+        testResult.fromAction = fromAction;
+        testResult.fromOutcome = fromOutcome;
+        testResult.condition = condition;
+        testResult.toViewId = toViewId;
+        testResultList.add(testResult);
+    }
+
+    class TestResult extends Object {
+        public String fromViewId = null;
+        public String fromAction = null;
+        public String fromOutcome = null;
+        public String condition = null;
+        public String toViewId = null;
+    }
+
+
+    private static final class ViewMapDestroyedListener
+          implements SystemEventListener {
+
+        private SystemEvent event;
+        private boolean processEventInvoked;
+
+        public void processEvent(SystemEvent event)
+        throws AbortProcessingException {
+            this.processEventInvoked = true;
+            this.event = event;
+        }
+
+        public boolean isListenerForSource(Object source) {
+            return (source instanceof UIViewRoot);
+        }
+
+        public SystemEvent getPassedEvent() {
+            return event;
+        }
+
+        public boolean wasProcessEventInvoked() {
+            return processEventInvoked;
+        }
+
+        public void reset() {
+            processEventInvoked = false;
+            event = null;
+        }
+    }
+
+    private String title = "Test JSF2 Navigation Handler";
+    public String getTitle() {
+        return title;
+    }
+
+    private String status="";
+
+    public String getStatus() {
+        return status;
+    }
+
+}
+
diff --git a/test/agnostic/application/navigationJSF2/src/main/webapp/WEB-INF/faces-config.xml b/test/agnostic/application/navigationJSF2/src/main/webapp/WEB-INF/faces-config.xml
new file mode 100644
index 0000000..330e63c
--- /dev/null
+++ b/test/agnostic/application/navigationJSF2/src/main/webapp/WEB-INF/faces-config.xml
@@ -0,0 +1,112 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
+    version="2.0">
+
+  <!-- First navigation rule (global) -->
+  <navigation-rule>
+    <!-- Can also be omitted, since this is the default -->
+    <from-view-id> * </from-view-id>
+    <!-- Logout button on every page -->
+    <navigation-case>
+      <from-action>#{UserBean.Logout}</from-action>
+      <to-view-id>/logout.jsp</to-view-id>
+    </navigation-case>
+    <!-- Generic "not logged in" handler -->
+    <navigation-case>
+      <from-outcome>loginRequired</from-outcome>
+      <to-view-id>/must-login-first.jsp</to-view-id>
+    </navigation-case>
+  </navigation-rule>
+
+
+  <!-- Second navigation rule (login page only) -->
+  <navigation-rule>
+    <from-view-id> /login.jsp </from-view-id>
+    <!-- Login action was invoked successfully -->
+    <navigation-case>
+      <from-action>#{UserBean.login}</from-action>
+      <from-outcome>success</from-outcome>
+      <to-view-id>/home.jsp</to-view-id>
+    </navigation-case>
+    <!-- User registration required -->
+    <navigation-case>
+      <from-action>#{UserBean.register}</from-action>
+      <from-outcome>success</from-outcome>
+      <to-view-id>/get-user-info.jsp</to-view-id>
+    </navigation-case>
+    <!-- User registration failed -->
+    <navigation-case>
+      <from-action>#{UserBean.register}</from-action>
+      <from-outcome>duplicate</from-outcome>
+      <to-view-id>/try-another-name.jsp</to-view-id>
+    </navigation-case>
+  </navigation-rule>
+
+
+  <!-- Third navigation rule (more global stuff) -->
+  <navigation-rule>
+    <!-- Omit the request view id this time -->
+    <!-- General search form handling -->
+    <navigation-case>
+      <from-action>#{SearchForm.go}</from-action>
+      <to-view-id>/search-results.jsp</to-view-id>
+    </navigation-case>
+  </navigation-rule>
+
+
+  <!-- Fourth navigation rule (special search handling) -->
+  <navigation-rule>
+    <!-- Search works differently for part of the app -->
+    <from-view-id>/movies/*</from-view-id>
+    <!-- Special search form handling -->
+    <navigation-case>
+      <from-action>#{SearchForm.go}</from-action>
+      <to-view-id>/movies/movie-search-results.jsp</to-view-id>
+    </navigation-case>
+  </navigation-rule>
+
+</faces-config>
diff --git a/test/agnostic/application/navigationJSF2/src/main/webapp/WEB-INF/faces-navigation-2.xml b/test/agnostic/application/navigationJSF2/src/main/webapp/WEB-INF/faces-navigation-2.xml
new file mode 100644
index 0000000..c09f084
--- /dev/null
+++ b/test/agnostic/application/navigationJSF2/src/main/webapp/WEB-INF/faces-navigation-2.xml
@@ -0,0 +1,93 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
+        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
+        version="2.0">
+
+<navigation-rule>
+  <description>
+    LOGIN PAGE NAVIGATION HANDLING
+  </description>
+  <from-view-id>/login.jsp</from-view-id>
+  <navigation-case>
+    <description>
+      Handle case where login succeeded based on logical outcome.
+    </description>
+    <display-name>Successful Login</display-name>
+    <from-action>#{userBean.login}</from-action>
+    <from-outcome>success</from-outcome>
+    <to-view-id>/home.jsp</to-view-id>
+  </navigation-case>
+  <navigation-case>
+    <description>
+      Handle case where login succeeded based on contextual information.
+    </description>
+    <display-name>Successful Login</display-name>
+    <from-action>#{userBean.login}</from-action>
+    <if>#{true}</if>
+    <to-view-id>/home.jsp</to-view-id>
+  </navigation-case>
+
+  <navigation-case>
+    <description>
+      Handle case where login failed (disabled by condition).
+    </description>
+    <display-name>Failed Login</display-name>
+    <from-action>#{userBean.login2}</from-action>
+    <from-outcome>failure</from-outcome>
+    <if>#{false}</if>
+    <to-view-id>/shouldNotGetHere.jsp</to-view-id>
+  </navigation-case>
+  <navigation-case>
+    <description>
+      Handle case where login failed.
+    </description>
+    <display-name>Failed Login</display-name>
+    <from-action>#{userBean.login2}</from-action>
+    <to-view-id>/loginFailed.jsp</to-view-id>
+  </navigation-case>
+</navigation-rule>
+
+</faces-config>
diff --git a/test/agnostic/application/navigationJSF2/src/main/webapp/WEB-INF/navigation-cases-2.xml b/test/agnostic/application/navigationJSF2/src/main/webapp/WEB-INF/navigation-cases-2.xml
new file mode 100644
index 0000000..68672f8
--- /dev/null
+++ b/test/agnostic/application/navigationJSF2/src/main/webapp/WEB-INF/navigation-cases-2.xml
@@ -0,0 +1,98 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!--
+     This document contains test scenarios for the implementation
+     of the default NavigationHandler implementation, as described
+     in Section 7.4.2 of the spec.  These rules assume that an
+     application configuration file including all of the example
+     navigation rules in Section 7.4.3 has been processed.
+
+     Each test scenario is represented by a "test" element with the
+     following attributes:
+
+     fromViewId                view id from the view currently
+                               being processed (required)
+
+     fromAction             Action reference of the action that
+                               was invoked (optional)
+
+     fromOutcome               Logical outcome from the
+                               action that was called (optional)
+
+     condition                 The condition which determines whether
+                               case is a match (optional)
+
+
+     toViewId                  view id of the view that should be
+                               selected next, which may be the same
+                               as the from view (required)
+
+-->
+
+<tests>
+
+  <!-- ============ Tests From /login.jsp view Identifier ================= -->
+
+
+  <!-- Positive tests that should match specific rules -->
+
+  <test fromViewId="/login.jsp"
+     fromAction="#{userBean.login}"
+    fromOutcome="success"
+          toViewId="/home.jsp"/>
+
+  <test fromViewId="/login.jsp"
+     fromAction="#{userBean.login}"
+    fromOutcome="success"
+                    if="#{true}"
+          toViewId="/home.jsp"/>
+
+  <test fromViewId="/login.jsp"
+     fromAction="#{userBean.login}"
+    fromOutcome="failure"
+                    if="#{false}"
+       toViewId="/loginFailed.jsp"/> <!-- pulled from next navigation case -->
+
+
+</tests>
diff --git a/test/agnostic/application/navigationJSF2/src/main/webapp/WEB-INF/web.xml b/test/agnostic/application/navigationJSF2/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..c7d0c9c
--- /dev/null
+++ b/test/agnostic/application/navigationJSF2/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" 
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>${webapp.projectStage}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
+        <param-value>${webapp.partialStateSaving}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>${webapp.stateSavingMethod}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.CONFIG_FILES</param-name>
+        <param-value>/WEB-INF/faces-navigation-2.xml</param-value>
+    </context-param>
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <session-config>
+        <session-timeout>30</session-timeout>
+    </session-config>
+    <error-page>
+        <exception-type>java.lang.Throwable</exception-type>
+        <location>/error.jsp</location>
+    </error-page>
+</web-app>
diff --git a/test/agnostic/application/navigationJSF2/src/main/webapp/error.jsp b/test/agnostic/application/navigationJSF2/src/main/webapp/error.jsp
new file mode 100644
index 0000000..52d9786
--- /dev/null
+++ b/test/agnostic/application/navigationJSF2/src/main/webapp/error.jsp
@@ -0,0 +1,56 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<%@ page isErrorPage="true" import="java.io.*" contentType="text/plain"%>
+
+Message:
+<%=exception.getMessage()%>
+
+StackTrace:
+<%
+       StringWriter stringWriter = new StringWriter();
+       PrintWriter printWriter = new PrintWriter(stringWriter);
+       exception.printStackTrace(printWriter);
+       out.println(stringWriter);
+       printWriter.close();
+       stringWriter.close();
+%>
diff --git a/test/agnostic/application/navigationJSF2/src/main/webapp/navHandler.xhtml b/test/agnostic/application/navigationJSF2/src/main/webapp/navHandler.xhtml
new file mode 100644
index 0000000..879300e
--- /dev/null
+++ b/test/agnostic/application/navigationJSF2/src/main/webapp/navHandler.xhtml
@@ -0,0 +1,66 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+<f:view contentType="text/html"/>
+<h:head>
+    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
+    <title>Navigation</title>
+</h:head>
+
+<body>
+    <f:view>
+    <h:form>
+       <h:outputText value="#{navigationBean.title}" />
+       <br/>
+       <br/>
+       #{navigationBean.navigationHandler}
+       <h:outputText value="#{navigationBean.status}" />
+    </h:form>
+    </f:view>
+</body>
+</html>
diff --git a/test/agnostic/application/navigationJSF2/src/main/webapp/test.xhtml b/test/agnostic/application/navigationJSF2/src/main/webapp/test.xhtml
new file mode 100644
index 0000000..22a5f62
--- /dev/null
+++ b/test/agnostic/application/navigationJSF2/src/main/webapp/test.xhtml
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+    <title></title>
+</head>
+<body>
+
+</body>
+</html>
diff --git a/test/agnostic/application/navigationJSF2/src/test/java/com/sun/faces/test/agnostic/application/navigationJSF2/NavigationHandlerJSF2IT.java b/test/agnostic/application/navigationJSF2/src/test/java/com/sun/faces/test/agnostic/application/navigationJSF2/NavigationHandlerJSF2IT.java
new file mode 100644
index 0000000..5a7b935
--- /dev/null
+++ b/test/agnostic/application/navigationJSF2/src/test/java/com/sun/faces/test/agnostic/application/navigationJSF2/NavigationHandlerJSF2IT.java
@@ -0,0 +1,89 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.agnostic.application.navigationJSF2;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
+import javax.faces.FacesException;
+import javax.faces.el.MethodNotFoundException;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class NavigationHandlerJSF2IT {
+    
+    /**
+     * Stores the web URL.
+     */
+    private String webUrl;
+    /**
+     * Stores the web client.
+     */
+    private WebClient webClient;
+
+    /**
+     * Setup before testing.
+     */
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+        webClient.setThrowExceptionOnFailingStatusCode(true);
+    }
+
+    /**
+     * Tear down after testing.
+     */
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testNavigationHandler() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "/faces/navHandler.xhtml");
+    }
+
+}
+
diff --git a/test/agnostic/application/pom.xml b/test/agnostic/application/pom.xml
new file mode 100644
index 0000000..c316e2d
--- /dev/null
+++ b/test/agnostic/application/pom.xml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.agnostic</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.agnostic.application</groupId>
+    <artifactId>pom</artifactId>
+    <packaging>pom</packaging>
+    <name>Mojarra ${project.version} - Test - Agnostic - Application</name>
+    <modules>
+        <module>basic</module>
+        <module>listener</module>
+        <module>localeConfig</module>
+        <module>navigation</module>
+        <module>navigationJSF2</module>
+        <module>runtimeConfig</module>
+    </modules>
+</project>
diff --git a/test/agnostic/application/runtimeConfig/pom.xml b/test/agnostic/application/runtimeConfig/pom.xml
new file mode 100644
index 0000000..944d99d
--- /dev/null
+++ b/test/agnostic/application/runtimeConfig/pom.xml
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.agnostic.application</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.agnostic.application</groupId>
+    <artifactId>runtimeConfig</artifactId>
+    <packaging>war</packaging>
+    <name>Mojarra ${project.version} - Test - Agnostic - Application - RuntimeConfig</name>
+    <build>
+        <finalName>test-agnostic-application-runtimeConfig</finalName>
+    </build>
+    <dependencies>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <version>4.11</version>
+            <scope>compile</scope>
+        </dependency>
+    </dependencies>
+    <properties>
+        <netbeans.hint.deploy.server>gfv3ee6</netbeans.hint.deploy.server>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/test/agnostic/application/runtimeConfig/src/main/java/com/sun/faces/test/agnostic/application/runtimeConfig/ActionListenerTestImpl.java b/test/agnostic/application/runtimeConfig/src/main/java/com/sun/faces/test/agnostic/application/runtimeConfig/ActionListenerTestImpl.java
new file mode 100644
index 0000000..059109e
--- /dev/null
+++ b/test/agnostic/application/runtimeConfig/src/main/java/com/sun/faces/test/agnostic/application/runtimeConfig/ActionListenerTestImpl.java
@@ -0,0 +1,48 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.agnostic.application.runtimeConfig;
+
+import com.sun.faces.application.ActionListenerImpl;
+
+public class ActionListenerTestImpl extends ActionListenerImpl {
+
+}
+
diff --git a/test/agnostic/application/runtimeConfig/src/main/java/com/sun/faces/test/agnostic/application/runtimeConfig/ApplicationConfigBean.java b/test/agnostic/application/runtimeConfig/src/main/java/com/sun/faces/test/agnostic/application/runtimeConfig/ApplicationConfigBean.java
new file mode 100644
index 0000000..509461f
--- /dev/null
+++ b/test/agnostic/application/runtimeConfig/src/main/java/com/sun/faces/test/agnostic/application/runtimeConfig/ApplicationConfigBean.java
@@ -0,0 +1,125 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.agnostic.application.runtimeConfig;
+
+import javax.faces.FacesException;
+import javax.faces.application.Application;
+import javax.faces.application.NavigationHandler;
+import javax.faces.application.StateManager;
+import javax.faces.application.ViewHandler;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.SessionScoped;
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.convert.Converter;
+import javax.faces.el.PropertyResolver;
+import javax.faces.el.VariableResolver;
+import javax.faces.event.ActionListener;
+import javax.faces.validator.LengthValidator;
+import javax.faces.validator.Validator;
+import java.util.Iterator;
+import java.util.Locale;
+
+import static org.junit.Assert.*;
+
+ at ManagedBean
+ at SessionScoped
+public class ApplicationConfigBean {
+
+    private String title = "Test Application Config";
+    public String getTitle() {
+        return title; 
+    }
+
+    public ApplicationConfigBean() {
+    }
+
+    private String getUpdateRuntimeComponents() {
+        FacesContext fc = FacesContext.getCurrentInstance();
+        Application app = fc.getApplication();
+
+        ActionListener actionListener = null;
+        NavigationHandler navHandler = null;
+        PropertyResolver propResolver = null;
+        VariableResolver varResolver = null;
+        ViewHandler viewHandler = null;
+        StateManager stateManager = null;
+
+        actionListener = app.getActionListener();
+        assertTrue(null != actionListener && actionListener instanceof com.sun.faces.test.agnostic.application.runtimeConfig.TestActionListener);
+
+        navHandler = app.getNavigationHandler();
+        assertTrue(null != navHandler && navHandler instanceof com.sun.faces.test.agnostic.application.runtimeConfig.TestNavigationHandler);
+
+        // JSF1.2 BI: application.getPropertyResolver() no longer returns the
+        // head of the PropertyResolver. Instead returns the head of the
+        // ELResolver stack wrapped in a PropertyResolver.This also applies to
+        // VariableResolver
+        propResolver = app.getPropertyResolver();
+        assertTrue(null != propResolver && propResolver instanceof javax.faces.el.PropertyResolver);
+
+        varResolver = app.getVariableResolver();
+        assertTrue(null != varResolver && varResolver instanceof javax.faces.el.VariableResolver);
+
+        viewHandler = app.getViewHandler();
+        assertTrue(null != viewHandler && viewHandler instanceof javax.faces.application.ViewHandler);
+
+        stateManager = app.getStateManager();
+        assertTrue(null != stateManager && stateManager instanceof javax.faces.application.StateManager);
+
+/*
+        if (app.getDefaultRenderKitId().equals("WackyRenderKit")) {
+            status += "SUCCESS: Default RenderKitId**";
+        } else {
+            status += "FAIL: Default RenderKitId:"+app.getDefaultRenderKitId()+"**";
+        }
+*/
+
+        return "SUCCESS";
+    }
+
+    private String status="";
+
+    public String getStatus() {
+        return status;
+    }
+}
+
diff --git a/test/agnostic/application/runtimeConfig/src/main/java/com/sun/faces/test/agnostic/application/runtimeConfig/NavigationHandlerTestImpl.java b/test/agnostic/application/runtimeConfig/src/main/java/com/sun/faces/test/agnostic/application/runtimeConfig/NavigationHandlerTestImpl.java
new file mode 100644
index 0000000..6357d16
--- /dev/null
+++ b/test/agnostic/application/runtimeConfig/src/main/java/com/sun/faces/test/agnostic/application/runtimeConfig/NavigationHandlerTestImpl.java
@@ -0,0 +1,47 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.agnostic.application.runtimeConfig; 
+
+import com.sun.faces.application.NavigationHandlerImpl;
+
+public class NavigationHandlerTestImpl extends NavigationHandlerImpl {
+
+}
diff --git a/test/agnostic/application/runtimeConfig/src/main/java/com/sun/faces/test/agnostic/application/runtimeConfig/PropertyResolverTestImpl.java b/test/agnostic/application/runtimeConfig/src/main/java/com/sun/faces/test/agnostic/application/runtimeConfig/PropertyResolverTestImpl.java
new file mode 100644
index 0000000..c37e90e
--- /dev/null
+++ b/test/agnostic/application/runtimeConfig/src/main/java/com/sun/faces/test/agnostic/application/runtimeConfig/PropertyResolverTestImpl.java
@@ -0,0 +1,61 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.agnostic.application.runtimeConfig; 
+
+import javax.faces.el.PropertyResolver;
+
+public class PropertyResolverTestImpl extends TestPropertyResolver{
+
+    PropertyResolver root = null;
+    
+    public PropertyResolverTestImpl(PropertyResolver root) {
+       super(root);
+       this.root = root;
+    }
+    
+     public Object getValue(Object base, Object property) {
+        if (property.equals("customPRTest2")) {
+            return "PropertyResolverTestImpl";
+        }
+        return root.getValue(base, property);
+    }
+
+}
diff --git a/test/agnostic/application/runtimeConfig/src/main/java/com/sun/faces/test/agnostic/application/runtimeConfig/TestActionListener.java b/test/agnostic/application/runtimeConfig/src/main/java/com/sun/faces/test/agnostic/application/runtimeConfig/TestActionListener.java
new file mode 100644
index 0000000..9991d31
--- /dev/null
+++ b/test/agnostic/application/runtimeConfig/src/main/java/com/sun/faces/test/agnostic/application/runtimeConfig/TestActionListener.java
@@ -0,0 +1,50 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+// TestActionListener.java
+
+package com.sun.faces.test.agnostic.application.runtimeConfig;
+
+import com.sun.faces.application.ActionListenerImpl;
+
+public class TestActionListener extends ActionListenerImpl {
+
+}
+
diff --git a/test/agnostic/application/runtimeConfig/src/main/java/com/sun/faces/test/agnostic/application/runtimeConfig/TestNavigationHandler.java b/test/agnostic/application/runtimeConfig/src/main/java/com/sun/faces/test/agnostic/application/runtimeConfig/TestNavigationHandler.java
new file mode 100644
index 0000000..4c02258
--- /dev/null
+++ b/test/agnostic/application/runtimeConfig/src/main/java/com/sun/faces/test/agnostic/application/runtimeConfig/TestNavigationHandler.java
@@ -0,0 +1,50 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+// TestNavigationHandler.java
+
+package com.sun.faces.test.agnostic.application.runtimeConfig;
+
+import com.sun.faces.application.NavigationHandlerImpl;
+
+public class TestNavigationHandler extends NavigationHandlerImpl {
+
+}
+
diff --git a/test/agnostic/application/runtimeConfig/src/main/java/com/sun/faces/test/agnostic/application/runtimeConfig/TestPropertyResolver.java b/test/agnostic/application/runtimeConfig/src/main/java/com/sun/faces/test/agnostic/application/runtimeConfig/TestPropertyResolver.java
new file mode 100644
index 0000000..6227a26
--- /dev/null
+++ b/test/agnostic/application/runtimeConfig/src/main/java/com/sun/faces/test/agnostic/application/runtimeConfig/TestPropertyResolver.java
@@ -0,0 +1,105 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+// TestPropertyResolver.java
+
+package com.sun.faces.test.agnostic.application.runtimeConfig;
+
+import javax.faces.el.PropertyResolver;
+import javax.faces.el.EvaluationException;
+import javax.faces.el.PropertyNotFoundException;
+
+public class TestPropertyResolver extends PropertyResolver {
+   
+    PropertyResolver root = null;
+    public TestPropertyResolver(PropertyResolver propertyResolver) {       
+        root = propertyResolver;
+    }
+    
+    // Specified by javax.faces.el.PropertyResolver.getValue(Object,String)
+    public Object getValue(Object base, Object property) {
+         if (property.equals("customPRTest1")) {
+            return "TestPropertyResolver";
+         }
+         return root.getValue(base, property);
+    }
+
+    public Object getValue(Object base, int index)
+        throws EvaluationException, PropertyNotFoundException {
+        return root.getValue(base, index);
+    }
+
+
+    public void setValue(Object base, Object name, Object value)
+        throws EvaluationException, PropertyNotFoundException {
+        root.setValue(base, name, value);
+    }
+
+
+    public void setValue(Object base, int index, Object value)
+        throws EvaluationException, PropertyNotFoundException {
+        root.setValue(base, index, value);
+    }
+
+
+    public boolean isReadOnly(Object base, Object name)
+        throws PropertyNotFoundException {
+        return root.isReadOnly(base, name);
+    }
+
+
+    public boolean isReadOnly(Object base, int index)
+        throws PropertyNotFoundException {
+        return root.isReadOnly(base, index);
+    }
+
+
+    public Class getType(Object base, Object name)
+        throws PropertyNotFoundException {
+        return root.getType(base, name);
+    }
+
+
+    public Class getType(Object base, int index)
+        throws PropertyNotFoundException {
+        return root.getType(base, index);
+    }
+    
+}
diff --git a/test/agnostic/application/runtimeConfig/src/main/java/com/sun/faces/test/agnostic/application/runtimeConfig/TestVariableResolver.java b/test/agnostic/application/runtimeConfig/src/main/java/com/sun/faces/test/agnostic/application/runtimeConfig/TestVariableResolver.java
new file mode 100644
index 0000000..1baa66c
--- /dev/null
+++ b/test/agnostic/application/runtimeConfig/src/main/java/com/sun/faces/test/agnostic/application/runtimeConfig/TestVariableResolver.java
@@ -0,0 +1,69 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+// TestVariableResolver.java
+
+package com.sun.faces.test.agnostic.application.runtimeConfig;
+
+import javax.faces.el.VariableResolver;
+import javax.faces.el.EvaluationException;
+import javax.faces.context.FacesContext;
+
+public class TestVariableResolver extends VariableResolver {
+   
+    VariableResolver resolver = null;
+    public TestVariableResolver(VariableResolver variableResolver) {
+       this.resolver = variableResolver;
+    }
+    
+    //
+    // Relationship Instance Variables
+    // 
+
+    // Specified by javax.faces.el.VariableResolver.resolveVariable()
+    public Object resolveVariable(FacesContext context, String name)
+            throws EvaluationException {
+        if (name.equals("customVRTest1")) {
+            return "TestVariableResolver";
+        }
+        return resolver.resolveVariable(context, name);
+    }
+
+}
diff --git a/test/agnostic/application/runtimeConfig/src/main/java/com/sun/faces/test/agnostic/application/runtimeConfig/VariableResolverTestImpl.java b/test/agnostic/application/runtimeConfig/src/main/java/com/sun/faces/test/agnostic/application/runtimeConfig/VariableResolverTestImpl.java
new file mode 100644
index 0000000..ebb1989
--- /dev/null
+++ b/test/agnostic/application/runtimeConfig/src/main/java/com/sun/faces/test/agnostic/application/runtimeConfig/VariableResolverTestImpl.java
@@ -0,0 +1,50 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.agnostic.application.runtimeConfig; 
+
+import javax.faces.el.VariableResolver;
+
+public class VariableResolverTestImpl extends TestVariableResolver {
+
+    public VariableResolverTestImpl(VariableResolver root) {
+        super(root);   
+    }
+}
diff --git a/test/agnostic/application/runtimeConfig/src/main/java/com/sun/faces/test/agnostic/application/runtimeConfig/ViewHandlerTestImpl.java b/test/agnostic/application/runtimeConfig/src/main/java/com/sun/faces/test/agnostic/application/runtimeConfig/ViewHandlerTestImpl.java
new file mode 100644
index 0000000..cd587f6
--- /dev/null
+++ b/test/agnostic/application/runtimeConfig/src/main/java/com/sun/faces/test/agnostic/application/runtimeConfig/ViewHandlerTestImpl.java
@@ -0,0 +1,47 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.agnostic.application.runtimeConfig;
+
+import com.sun.faces.application.ViewHandlerImpl;
+
+public class ViewHandlerTestImpl extends ViewHandlerImpl {
+
+}
diff --git a/test/agnostic/application/runtimeConfig/src/main/webapp/WEB-INF/faces-config.xml b/test/agnostic/application/runtimeConfig/src/main/webapp/WEB-INF/faces-config.xml
new file mode 100644
index 0000000..271ebd5
--- /dev/null
+++ b/test/agnostic/application/runtimeConfig/src/main/webapp/WEB-INF/faces-config.xml
@@ -0,0 +1,53 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
+    version="2.0">
+
+  <application>
+    <action-listener>com.sun.faces.test.agnostic.application.runtimeConfig.TestActionListener</action-listener>
+    <navigation-handler>com.sun.faces.test.agnostic.application.runtimeConfig.TestNavigationHandler</navigation-handler>
+  </application>
+</faces-config>
diff --git a/test/agnostic/application/runtimeConfig/src/main/webapp/WEB-INF/web.xml b/test/agnostic/application/runtimeConfig/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..b4216f6
--- /dev/null
+++ b/test/agnostic/application/runtimeConfig/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,80 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" 
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>${webapp.projectStage}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
+        <param-value>${webapp.partialStateSaving}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>${webapp.stateSavingMethod}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.CONFIG_FILES</param-name>
+        <param-value>/runtime-components.xml</param-value>
+    </context-param>
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <session-config>
+        <session-timeout>30</session-timeout>
+    </session-config>
+    <error-page>
+        <exception-type>java.lang.Throwable</exception-type>
+        <location>/error.jsp</location>
+    </error-page>
+</web-app>
diff --git a/test/agnostic/application/runtimeConfig/src/main/webapp/error.jsp b/test/agnostic/application/runtimeConfig/src/main/webapp/error.jsp
new file mode 100644
index 0000000..52d9786
--- /dev/null
+++ b/test/agnostic/application/runtimeConfig/src/main/webapp/error.jsp
@@ -0,0 +1,56 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<%@ page isErrorPage="true" import="java.io.*" contentType="text/plain"%>
+
+Message:
+<%=exception.getMessage()%>
+
+StackTrace:
+<%
+       StringWriter stringWriter = new StringWriter();
+       PrintWriter printWriter = new PrintWriter(stringWriter);
+       exception.printStackTrace(printWriter);
+       out.println(stringWriter);
+       printWriter.close();
+       stringWriter.close();
+%>
diff --git a/test/agnostic/application/runtimeConfig/src/main/webapp/runtime-components.xml b/test/agnostic/application/runtimeConfig/src/main/webapp/runtime-components.xml
new file mode 100644
index 0000000..a26ce64
--- /dev/null
+++ b/test/agnostic/application/runtimeConfig/src/main/webapp/runtime-components.xml
@@ -0,0 +1,62 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
+    version="2.0">
+
+  <application>
+    <action-listener>com.sun.faces.test.agnostic.application.runtimeConfig.ActionListenerTestImpl</action-listener>
+    <navigation-handler>com.sun.faces.test.agnostic.application.runtimeConfig.NavigationHandlerTestImpl</navigation-handler>
+    <property-resolver>com.sun.faces.test.agnostic.application.runtimeConfig.PropertyResolverTestImpl</property-resolver>
+    <variable-resolver>com.sun.faces.test.agnostic.application.runtimeConfig.VariableResolverTestImpl</variable-resolver>
+    <view-handler>com.sun.faces.test.agnostic.application.runtimeConfig.ViewHandlerTestImpl</view-handler>
+
+<!--
+    <default-render-kit-id>WackyRenderKit</default-render-kit-id>
+-->
+
+  </application>
+
+</faces-config>
diff --git a/test/agnostic/application/runtimeConfig/src/main/webapp/updateRuntimeComponents.xhtml b/test/agnostic/application/runtimeConfig/src/main/webapp/updateRuntimeComponents.xhtml
new file mode 100644
index 0000000..7675391
--- /dev/null
+++ b/test/agnostic/application/runtimeConfig/src/main/webapp/updateRuntimeComponents.xhtml
@@ -0,0 +1,66 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+<f:view contentType="text/html"/>
+<h:head>
+    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
+    <title>Navigation</title>
+</h:head>
+
+<body>
+    <f:view>
+    <h:form>
+       <h:outputText value="#{applicationConfigBean.title}" />
+       <br/>
+       <br/>
+       #{applicationConfigBean.updateRuntimeComponents}
+       <h:outputText value="#{applicationConfigBean.status}" />
+    </h:form>
+    </f:view>
+</body>
+</html>
diff --git a/test/agnostic/application/runtimeConfig/src/test/java/com/sun/faces/test/agnostic/application/runtimeConfig/RuntimeConfigIT.java b/test/agnostic/application/runtimeConfig/src/test/java/com/sun/faces/test/agnostic/application/runtimeConfig/RuntimeConfigIT.java
new file mode 100644
index 0000000..f558dfb
--- /dev/null
+++ b/test/agnostic/application/runtimeConfig/src/test/java/com/sun/faces/test/agnostic/application/runtimeConfig/RuntimeConfigIT.java
@@ -0,0 +1,87 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.agnostic.application.runtimeConfig;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
+import javax.faces.FacesException;
+import javax.faces.el.MethodNotFoundException;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class RuntimeConfigIT {
+    
+    /**
+     * Stores the web URL.
+     */
+    private String webUrl;
+    /**
+     * Stores the web client.
+     */
+    private WebClient webClient;
+
+    /**
+     * Setup before testing.
+     */
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+        webClient.setThrowExceptionOnFailingStatusCode(true);
+    }
+
+    /**
+     * Tear down after testing.
+     */
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testUpdateRuntimeComponents() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "/faces/updateRuntimeComponents.xhtml");
+    }
+}
diff --git a/test/agnostic/config/basic/nbactions.xml b/test/agnostic/config/basic/nbactions.xml
new file mode 100644
index 0000000..59f9ea6
--- /dev/null
+++ b/test/agnostic/config/basic/nbactions.xml
@@ -0,0 +1,163 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--><actions>
+        <action>
+            <actionName>debug.test.single</actionName>
+            <goals>
+                <goal>test-compile</goal>
+                <goal>surefire:test</goal>
+            </goals>
+            <properties>
+                <test>${packageClassName}</test>
+                <forkMode>once</forkMode>
+                <maven.surefire.debug>-Xdebug -Xrunjdwp:transport=dt_socket,server=n,address=${jpda.address}</maven.surefire.debug>
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                <jpda.listen>true</jpda.listen>
+                <project.build.finalName>test-agnostic-config-basic</project.build.finalName>
+                <webapp.projectStage>Development</webapp.projectStage>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                <integration.serverPort>8080</integration.serverPort>
+                <integration.serverName>localhost</integration.serverName>
+                <integration.url>http://localhost:8080/test-agnostic-config-basic/</integration.url>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+            </properties>
+        </action>
+        <action>
+            <actionName>test.single</actionName>
+            <goals>
+                <goal>test-compile</goal>
+                <goal>surefire:test</goal>
+            </goals>
+            <properties>
+                <project.build.finalName>test-agnostic-config-basic</project.build.finalName>
+                <integration.serverPort>8080</integration.serverPort>
+                <integration.serverName>localhost</integration.serverName>
+                <integration.url>http://localhost:8080/test-agnostic-config-basic/</integration.url>
+                <test>${packageClassName}</test>
+            </properties>
+        </action>
+        <action>
+            <actionName>build</actionName>
+            <goals>
+                <goal>install</goal>
+            </goals>
+            <properties>
+                <webapp.projectStage>Development</webapp.projectStage>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+            </properties>
+        </action>
+        <action>
+            <actionName>rebuild</actionName>
+            <goals>
+                <goal>clean</goal>
+                <goal>install</goal>
+            </goals>
+            <properties>
+                
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                
+                <webapp.projectStage>Development</webapp.projectStage>
+                
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                
+            </properties>
+        </action>
+        <action>
+            <actionName>build-with-dependencies</actionName>
+            <reactor>also-make</reactor>
+            <goals>
+                <goal>install</goal>
+            </goals>
+            <properties>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                <webapp.projectStage>Development</webapp.projectStage>
+            </properties>
+        </action>
+        <action>
+            <actionName>run</actionName>
+            <goals>
+                <goal>package</goal>
+            </goals>
+            <properties>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                <netbeans.deploy>true</netbeans.deploy>
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                <webapp.projectStage>Development</webapp.projectStage>
+            </properties>
+        </action>
+        <action>
+            <actionName>run.single.deploy</actionName>
+            <goals>
+                <goal>package</goal>
+            </goals>
+            <properties>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                <netbeans.deploy>true</netbeans.deploy>
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                <netbeans.deploy.clientUrlPart>${webpagePath}</netbeans.deploy.clientUrlPart>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                <webapp.projectStage>Development</webapp.projectStage>
+            </properties>
+        </action>
+        <action>
+            <actionName>debug.single.deploy</actionName>
+            <goals>
+                <goal>package</goal>
+            </goals>
+            <properties>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                <netbeans.deploy>true</netbeans.deploy>
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                <netbeans.deploy.debugmode>true</netbeans.deploy.debugmode>
+                <netbeans.deploy.clientUrlPart>${webpagePath}</netbeans.deploy.clientUrlPart>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                <webapp.projectStage>Development</webapp.projectStage>
+            </properties>
+        </action>
+    </actions>
diff --git a/test/agnostic/config/basic/pom.xml b/test/agnostic/config/basic/pom.xml
new file mode 100644
index 0000000..a2a544f
--- /dev/null
+++ b/test/agnostic/config/basic/pom.xml
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.agnostic.config</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.agnostic.config</groupId>
+    <artifactId>basic</artifactId>
+    <packaging>war</packaging>
+    <name>Mojarra ${project.version} - Test - Agnostic - Config - Basic</name>
+    <build>
+        <finalName>test-agnostic-config-basic</finalName>
+    </build>
+    <dependencies>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <version>4.10</version>
+            <scope>compile</scope>
+        </dependency>
+    </dependencies>
+    <properties>
+        <netbeans.hint.deploy.server>gfv3ee6</netbeans.hint.deploy.server>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/test/agnostic/config/basic/src/main/java/com/sun/faces/test/agnostic/config/basic/ConfigFileBean.java b/test/agnostic/config/basic/src/main/java/com/sun/faces/test/agnostic/config/basic/ConfigFileBean.java
new file mode 100644
index 0000000..f6c1482
--- /dev/null
+++ b/test/agnostic/config/basic/src/main/java/com/sun/faces/test/agnostic/config/basic/ConfigFileBean.java
@@ -0,0 +1,577 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.agnostic.config.basic;
+
+import java.math.BigDecimal;
+import java.math.BigInteger;
+
+import javax.faces.FacesException;
+import javax.faces.FactoryFinder;
+import javax.faces.application.Application;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.SessionScoped;
+import javax.faces.component.UIColumn;
+import javax.faces.component.UICommand;
+import javax.faces.component.UIData;
+import javax.faces.component.UIForm;
+import javax.faces.component.UIGraphic;
+import javax.faces.component.UIInput;
+import javax.faces.component.UIMessage;
+import javax.faces.component.UIMessages;
+import javax.faces.component.UINamingContainer;
+import javax.faces.component.UIOutput;
+import javax.faces.component.UIPanel;
+import javax.faces.component.UIParameter;
+import javax.faces.component.UISelectBoolean;
+import javax.faces.component.UISelectItem;
+import javax.faces.component.UISelectItems;
+import javax.faces.component.UISelectMany;
+import javax.faces.component.UISelectOne;
+import javax.faces.component.html.HtmlCommandButton;
+import javax.faces.component.html.HtmlCommandLink;
+import javax.faces.component.html.HtmlDataTable;
+import javax.faces.component.html.HtmlForm;
+import javax.faces.component.html.HtmlGraphicImage;
+import javax.faces.component.html.HtmlInputHidden;
+import javax.faces.component.html.HtmlInputSecret;
+import javax.faces.component.html.HtmlInputText;
+import javax.faces.component.html.HtmlInputTextarea;
+import javax.faces.component.html.HtmlMessage;
+import javax.faces.component.html.HtmlMessages;
+import javax.faces.component.html.HtmlOutputFormat;
+import javax.faces.component.html.HtmlOutputLabel;
+import javax.faces.component.html.HtmlOutputLink;
+import javax.faces.component.html.HtmlOutputText;
+import javax.faces.component.html.HtmlPanelGrid;
+import javax.faces.component.html.HtmlPanelGroup;
+import javax.faces.component.html.HtmlSelectBooleanCheckbox;
+import javax.faces.component.html.HtmlSelectManyCheckbox;
+import javax.faces.component.html.HtmlSelectManyListbox;
+import javax.faces.component.html.HtmlSelectManyMenu;
+import javax.faces.component.html.HtmlSelectOneListbox;
+import javax.faces.component.html.HtmlSelectOneMenu;
+import javax.faces.component.html.HtmlSelectOneRadio;
+import javax.faces.convert.BigDecimalConverter;
+import javax.faces.convert.BigIntegerConverter;
+import javax.faces.convert.BooleanConverter;
+import javax.faces.convert.ByteConverter;
+import javax.faces.convert.CharacterConverter;
+import javax.faces.convert.DateTimeConverter;
+import javax.faces.convert.DoubleConverter;
+import javax.faces.convert.FloatConverter;
+import javax.faces.convert.IntegerConverter;
+import javax.faces.convert.LongConverter;
+import javax.faces.convert.NumberConverter;
+import javax.faces.convert.ShortConverter;
+import javax.faces.render.RenderKit;
+import javax.faces.render.RenderKitFactory;
+import javax.faces.render.Renderer;
+import javax.faces.validator.DoubleRangeValidator;
+import javax.faces.validator.LengthValidator;
+import javax.faces.validator.LongRangeValidator;
+
+
+import javax.faces.context.FacesContext;
+import javax.el.ExpressionFactory;
+import javax.faces.el.ValueBinding;
+import javax.el.ValueExpression;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import static org.junit.Assert.*;
+
+public class ConfigFileBean {
+
+    private String title = "Test Config File";
+    public String getTitle() {
+        return title; 
+    }
+
+    public ConfigFileBean() {
+    }
+
+    public String getBasic() throws Exception {
+        checkComponentsGeneric();
+        checkComponentsHtml();
+        checkConvertersByClass();
+        checkConvertersById();
+        checkRenderers();
+        checkValidators();
+
+        return "SUCCESS";
+    }
+
+    public String getBool() throws Exception {
+        RenderKitFactory rkFactory = (RenderKitFactory)
+            FactoryFinder.getFactory(FactoryFinder.RENDER_KIT_FACTORY);
+        RenderKit rk =
+            rkFactory.getRenderKit(null,
+                                   RenderKitFactory.HTML_BASIC_RENDER_KIT);
+
+        // Test for isRendersChildren=false
+        for (int i = 0; i < rendersChildrenFalse.length; i++) {
+            Renderer r = rk.getRenderer(rendersChildrenFalse[i][0],
+                                        rendersChildrenFalse[i][1]);
+            assertEquals("(" + rendersChildrenFalse[i][0] + "," +
+                         rendersChildrenFalse[i][1] + ")", false,
+                         r.getRendersChildren());
+        }
+
+        // Test for isRendersChildren=true
+        for (int i = 0; i < rendersChildrenTrue.length; i++) {
+            Renderer r = rk.getRenderer(rendersChildrenTrue[i][0],
+                                        rendersChildrenTrue[i][1]);
+            assertEquals("(" + rendersChildrenTrue[i][0] + "," +
+                         rendersChildrenTrue[i][1] + ")", true,
+                         r.getRendersChildren());
+        }
+
+        return "SUCCESS";
+    }
+
+    // Test a webapp with a default faces-config.xml resource
+    public String getDef() throws Exception {
+        // Validate standard configuration
+        checkComponentsGeneric();
+        checkComponentsHtml();
+        checkConvertersByClass();
+        checkConvertersById();
+        checkRenderers();
+        checkValidators();
+
+        // Validate what was actually configured
+        checkDefaultConfiguration();
+        checkExtraConfiguration(false);
+        checkEmbedConfiguration(false);
+
+        return "SUCCESS";
+    }
+
+
+    // Check that all of the required generic components have been registered
+    private void checkComponentsGeneric() throws Exception {
+        FacesContext fc = FacesContext.getCurrentInstance();
+        Application application = fc.getApplication();
+
+        assertTrue(application.createComponent
+                   ("javax.faces.Column") instanceof UIColumn);
+        assertTrue(application.createComponent
+                   (UIColumn.COMPONENT_TYPE) instanceof UIColumn);
+        assertTrue(application.createComponent
+                   ("javax.faces.Command") instanceof UICommand);
+        assertTrue(application.createComponent
+                   (UICommand.COMPONENT_TYPE) instanceof UICommand);
+        assertTrue(application.createComponent
+                   ("javax.faces.Data") instanceof UIData);
+        assertTrue(application.createComponent
+                   (UIData.COMPONENT_TYPE) instanceof UIData);
+        assertTrue(application.createComponent
+                   ("javax.faces.Form") instanceof UIForm);
+        assertTrue(application.createComponent
+                   (UIForm.COMPONENT_TYPE) instanceof UIForm);
+        assertTrue(application.createComponent
+                   ("javax.faces.Graphic") instanceof UIGraphic);
+        assertTrue(application.createComponent
+                   (UIGraphic.COMPONENT_TYPE) instanceof UIGraphic);
+        assertTrue(application.createComponent
+                   ("javax.faces.Input") instanceof UIInput);
+        assertTrue(application.createComponent
+                   (UIInput.COMPONENT_TYPE) instanceof UIInput);
+        assertTrue(application.createComponent
+                   ("javax.faces.Message") instanceof UIMessage);
+        assertTrue(application.createComponent
+                   (UIMessage.COMPONENT_TYPE) instanceof UIMessage);
+        assertTrue(application.createComponent
+                   ("javax.faces.Messages") instanceof UIMessages);
+        assertTrue(application.createComponent
+                   (UIMessages.COMPONENT_TYPE) instanceof UIMessages);
+        assertTrue(application.createComponent
+                   ("javax.faces.NamingContainer") instanceof UINamingContainer);
+        assertTrue(application.createComponent
+                   (UINamingContainer.COMPONENT_TYPE) instanceof UINamingContainer);
+        assertTrue(application.createComponent
+                   ("javax.faces.Output") instanceof UIOutput);
+        assertTrue(application.createComponent
+                   (UIOutput.COMPONENT_TYPE) instanceof UIOutput);
+        assertTrue(application.createComponent
+                   ("javax.faces.Panel") instanceof UIPanel);
+        assertTrue(application.createComponent
+                   (UIPanel.COMPONENT_TYPE) instanceof UIPanel);
+        assertTrue(application.createComponent
+                   ("javax.faces.Parameter") instanceof UIParameter);
+        assertTrue(application.createComponent
+                   (UIParameter.COMPONENT_TYPE) instanceof UIParameter);
+        assertTrue(application.createComponent
+                   ("javax.faces.SelectBoolean") instanceof UISelectBoolean);
+        assertTrue(application.createComponent
+                   (UISelectBoolean.COMPONENT_TYPE) instanceof UISelectBoolean);
+        assertTrue(application.createComponent
+                   ("javax.faces.SelectItem") instanceof UISelectItem);
+        assertTrue(application.createComponent
+                   (UISelectItem.COMPONENT_TYPE) instanceof UISelectItem);
+        assertTrue(application.createComponent
+                   ("javax.faces.SelectItems") instanceof UISelectItems);
+        assertTrue(application.createComponent
+                   (UISelectItems.COMPONENT_TYPE) instanceof UISelectItems);
+        assertTrue(application.createComponent
+                   ("javax.faces.SelectMany") instanceof UISelectMany);
+        assertTrue(application.createComponent
+                   (UISelectMany.COMPONENT_TYPE) instanceof UISelectMany);
+        assertTrue(application.createComponent
+                   ("javax.faces.SelectOne") instanceof UISelectOne);
+        assertTrue(application.createComponent
+                   (UISelectOne.COMPONENT_TYPE) instanceof UISelectOne);
+    }
+
+    // Check that all of the required HTML components have been registered
+    private void checkComponentsHtml() throws Exception {
+        FacesContext fc = FacesContext.getCurrentInstance();
+        Application application = fc.getApplication();
+
+        assertTrue(application.createComponent
+                   ("javax.faces.HtmlCommandButton") instanceof HtmlCommandButton);
+        assertTrue(application.createComponent
+                   ("javax.faces.HtmlCommandLink") instanceof HtmlCommandLink);
+        assertTrue(application.createComponent
+                   ("javax.faces.HtmlDataTable") instanceof HtmlDataTable);
+        assertTrue(application.createComponent
+                   ("javax.faces.HtmlForm") instanceof HtmlForm);
+        assertTrue(application.createComponent
+                   ("javax.faces.HtmlGraphicImage") instanceof HtmlGraphicImage);
+        assertTrue(application.createComponent
+                   ("javax.faces.HtmlInputHidden") instanceof HtmlInputHidden);
+        assertTrue(application.createComponent
+                   ("javax.faces.HtmlInputSecret") instanceof HtmlInputSecret);
+        assertTrue(application.createComponent
+                   ("javax.faces.HtmlInputText") instanceof HtmlInputText);
+        assertTrue(application.createComponent
+                   ("javax.faces.HtmlInputTextarea") instanceof HtmlInputTextarea);
+        assertTrue(application.createComponent
+                   ("javax.faces.HtmlMessage") instanceof HtmlMessage);
+        assertTrue(application.createComponent
+                   ("javax.faces.HtmlMessages") instanceof HtmlMessages);
+        assertTrue(application.createComponent
+                   ("javax.faces.HtmlOutputFormat") instanceof HtmlOutputFormat);
+        assertTrue(application.createComponent
+                   ("javax.faces.HtmlOutputLabel") instanceof HtmlOutputLabel);
+        assertTrue(application.createComponent
+                   ("javax.faces.HtmlOutputLink") instanceof HtmlOutputLink);
+        assertTrue(application.createComponent
+                   ("javax.faces.HtmlOutputText") instanceof HtmlOutputText);
+        assertTrue(application.createComponent
+                   ("javax.faces.HtmlPanelGrid") instanceof HtmlPanelGrid);
+        assertTrue(application.createComponent
+                   ("javax.faces.HtmlPanelGroup") instanceof HtmlPanelGroup);
+        assertTrue(
+            application.createComponent
+            ("javax.faces.HtmlSelectBooleanCheckbox") instanceof HtmlSelectBooleanCheckbox);
+        assertTrue(
+            application.createComponent
+            ("javax.faces.HtmlSelectManyCheckbox") instanceof HtmlSelectManyCheckbox);
+        assertTrue(
+            application.createComponent
+            ("javax.faces.HtmlSelectManyListbox") instanceof HtmlSelectManyListbox);
+        assertTrue(
+            application.createComponent
+            ("javax.faces.HtmlSelectManyMenu") instanceof HtmlSelectManyMenu);
+        assertTrue(
+            application.createComponent
+            ("javax.faces.HtmlSelectOneListbox") instanceof HtmlSelectOneListbox);
+        assertTrue(application.createComponent
+                   ("javax.faces.HtmlSelectOneMenu") instanceof HtmlSelectOneMenu);
+        assertTrue(
+            application.createComponent
+            ("javax.faces.HtmlSelectOneRadio") instanceof HtmlSelectOneRadio);
+    }
+
+    // Check that all required by-class Converters have been registered
+    private void checkConvertersByClass() throws Exception {
+        FacesContext fc = FacesContext.getCurrentInstance();
+        Application application = fc.getApplication();
+
+        assertTrue(application.createConverter
+                   (BigDecimal.class) instanceof BigDecimalConverter);
+        assertTrue(application.createConverter
+                   (BigInteger.class) instanceof BigIntegerConverter);
+        assertTrue(application.createConverter
+                   (Boolean.class) instanceof BooleanConverter);
+        assertTrue(application.createConverter
+                   (Byte.class) instanceof ByteConverter);
+        assertTrue(application.createConverter
+                   (Character.class) instanceof CharacterConverter);
+        assertTrue(application.createConverter
+                   (Double.class) instanceof DoubleConverter);
+        assertTrue(application.createConverter
+                   (Float.class) instanceof FloatConverter);
+        assertTrue(application.createConverter
+                   (Integer.class) instanceof IntegerConverter);
+        assertTrue(application.createConverter
+                   (Long.class) instanceof LongConverter);
+        assertTrue(application.createConverter
+                   (Short.class) instanceof ShortConverter);
+    }
+
+    // Check that all required by-id Converters have been registered
+    private void checkConvertersById() throws Exception {
+        FacesContext fc = FacesContext.getCurrentInstance();
+        Application application = fc.getApplication();
+
+        assertTrue(application.createConverter
+                   ("javax.faces.BigDecimal") instanceof BigDecimalConverter);
+        assertTrue(application.createConverter
+                   ("javax.faces.BigInteger") instanceof BigIntegerConverter);
+        assertTrue(application.createConverter
+                   ("javax.faces.Boolean") instanceof BooleanConverter);
+        assertTrue(application.createConverter
+                   ("javax.faces.Byte") instanceof ByteConverter);
+        assertTrue(application.createConverter
+                   ("javax.faces.Character") instanceof CharacterConverter);
+        assertTrue(application.createConverter
+                   ("javax.faces.DateTime") instanceof DateTimeConverter);
+        assertTrue(application.createConverter
+                   ("javax.faces.Double") instanceof DoubleConverter);
+        assertTrue(application.createConverter
+                   ("javax.faces.Float") instanceof FloatConverter);
+        assertTrue(application.createConverter
+                   ("javax.faces.Integer") instanceof IntegerConverter);
+        assertTrue(application.createConverter
+                   ("javax.faces.Long") instanceof LongConverter);
+        assertTrue(application.createConverter
+                   ("javax.faces.Number") instanceof NumberConverter);
+        assertTrue(application.createConverter
+                   ("javax.faces.Short") instanceof ShortConverter);
+    }
+
+    // Check that all required Renderers have been registered
+    private void checkRenderers() throws Exception {
+        RenderKitFactory rkFactory = (RenderKitFactory)
+            FactoryFinder.getFactory(FactoryFinder.RENDER_KIT_FACTORY);
+        RenderKit rk =
+            rkFactory.getRenderKit(null,
+                                   RenderKitFactory.HTML_BASIC_RENDER_KIT);
+
+        assertNotNull(
+            rk.getRenderer("javax.faces.Command", "javax.faces.Button"));
+        assertNotNull(
+            rk.getRenderer("javax.faces.Command", "javax.faces.Link"));
+        assertNotNull(rk.getRenderer("javax.faces.Data", "javax.faces.Table"));
+        assertNotNull(rk.getRenderer("javax.faces.Form", "javax.faces.Form"));
+        assertNotNull(
+            rk.getRenderer("javax.faces.Graphic", "javax.faces.Image"));
+        assertNotNull(
+            rk.getRenderer("javax.faces.Input", "javax.faces.Hidden"));
+        assertNotNull(
+            rk.getRenderer("javax.faces.Input", "javax.faces.Secret"));
+        assertNotNull(rk.getRenderer("javax.faces.Input", "javax.faces.Text"));
+        assertNotNull(
+            rk.getRenderer("javax.faces.Input", "javax.faces.Textarea"));
+        assertNotNull(
+            rk.getRenderer("javax.faces.Message", "javax.faces.Message"));
+        assertNotNull(
+            rk.getRenderer("javax.faces.Messages", "javax.faces.Messages"));
+        assertNotNull(
+            rk.getRenderer("javax.faces.Output", "javax.faces.Format"));
+        assertNotNull(
+            rk.getRenderer("javax.faces.Output", "javax.faces.Label"));
+        assertNotNull(rk.getRenderer("javax.faces.Output", "javax.faces.Link"));
+        assertNotNull(rk.getRenderer("javax.faces.Output", "javax.faces.Text"));
+        assertNotNull(rk.getRenderer("javax.faces.Panel", "javax.faces.Grid"));
+        assertNotNull(rk.getRenderer("javax.faces.Panel", "javax.faces.Group"));
+        assertNotNull(
+            rk.getRenderer("javax.faces.SelectBoolean", "javax.faces.Checkbox"));
+        assertNotNull(
+            rk.getRenderer("javax.faces.SelectMany", "javax.faces.Checkbox"));
+        assertNotNull(
+            rk.getRenderer("javax.faces.SelectMany", "javax.faces.Listbox"));
+        assertNotNull(
+            rk.getRenderer("javax.faces.SelectMany", "javax.faces.Menu"));
+        assertNotNull(
+            rk.getRenderer("javax.faces.SelectOne", "javax.faces.Listbox"));
+        assertNotNull(
+            rk.getRenderer("javax.faces.SelectOne", "javax.faces.Menu"));
+        assertNotNull(
+            rk.getRenderer("javax.faces.SelectOne", "javax.faces.Radio"));
+    }
+
+    // Check that all required Validators have been registered
+    private void checkValidators() throws Exception {
+        FacesContext fc = FacesContext.getCurrentInstance();
+        Application application = fc.getApplication();
+
+        assertTrue(application.createValidator
+                   ("javax.faces.DoubleRange") instanceof DoubleRangeValidator);
+        assertTrue(application.createValidator
+                   ("javax.faces.Length") instanceof LengthValidator);
+        assertTrue(application.createValidator
+                   ("javax.faces.LongRange") instanceof LongRangeValidator);
+    }
+
+    // Check whether embed configuration occurred or did not occur
+    private void checkEmbedConfiguration(boolean should) throws Exception {
+        FacesContext fc = FacesContext.getCurrentInstance();
+        Application application = fc.getApplication();
+
+        RenderKitFactory rkFactory = (RenderKitFactory)
+            FactoryFinder.getFactory(FactoryFinder.RENDER_KIT_FACTORY);
+        RenderKit rk =
+            rkFactory.getRenderKit(null,
+                                   RenderKitFactory.HTML_BASIC_RENDER_KIT);
+
+        if (should) {
+            assertTrue(application.createComponent
+                       ("EmbedComponent") instanceof TestComponent);
+            assertTrue(application.createConverter
+                       ("EmbedConverter") instanceof TestConverter);
+            assertTrue(application.createValidator
+                       ("EmbedValidator") instanceof TestValidator);
+            assertNotNull(rk.getRenderer("Test", "EmbedRenderer"));
+        } else {
+            try {
+                application.createComponent("EmbedComponent");
+                fail("Should have thrown FacesException");
+            } catch (FacesException e) {
+                ; // Expected result
+            }
+            try {
+                application.createConverter("EmbedConverter");
+                fail("Should have thrown FacesException");
+            } catch (FacesException e) {
+                ; // Expected result
+            }
+            try {
+                application.createValidator("EmbedValidator");
+                fail("Should have thrown FacesException");
+            } catch (FacesException e) {
+                ; // Expected result
+            }
+            assertNull(rk.getRenderer("Test", "EmbedRenderer"));
+        }
+
+    }
+
+    // Check whether extra configuration occurred or did not occur
+    private void checkExtraConfiguration(boolean should) throws Exception {
+        FacesContext fc = FacesContext.getCurrentInstance();
+        Application application = fc.getApplication();
+
+        RenderKitFactory rkFactory = (RenderKitFactory)
+            FactoryFinder.getFactory(FactoryFinder.RENDER_KIT_FACTORY);
+        RenderKit rk =
+            rkFactory.getRenderKit(null,
+                                   RenderKitFactory.HTML_BASIC_RENDER_KIT);
+
+        if (should) {
+            assertTrue(application.createComponent
+                       ("ExtraComponent") instanceof TestComponent);
+            assertTrue(application.createConverter
+                       ("ExtraConverter") instanceof TestConverter);
+            assertTrue(application.createValidator
+                       ("ExtraValidator") instanceof TestValidator);
+            assertNotNull(rk.getRenderer("Test", "ExtraRenderer"));
+        } else {
+            try {
+                application.createComponent("ExtraComponent");
+                fail("Should have thrown FacesException");
+            } catch (FacesException e) {
+                ; // Expected result
+            }
+            try {
+                application.createConverter("ExtraConverter");
+                fail("Should have thrown FacesException");
+            } catch (FacesException e) {
+                ; // Expected result
+            }
+            try {
+                application.createValidator("ExtraValidator");
+                fail("Should have thrown FacesException");
+            } catch (FacesException e) {
+                ; // Expected result
+            }
+            assertNull(rk.getRenderer("Test", "ExtraRenderer"));
+        }
+
+    }
+
+    // Check that the default configuration took place
+    private void checkDefaultConfiguration() throws Exception {
+        FacesContext fc = FacesContext.getCurrentInstance();
+        Application application = fc.getApplication();
+
+        RenderKitFactory rkFactory = (RenderKitFactory)
+            FactoryFinder.getFactory(FactoryFinder.RENDER_KIT_FACTORY);
+        RenderKit rk =
+            rkFactory.getRenderKit(null,
+                                   RenderKitFactory.HTML_BASIC_RENDER_KIT);
+
+        assertTrue(application.createComponent
+                   ("DefaultComponent") instanceof TestComponent);
+        assertTrue(application.createConverter
+                   ("DefaultConverter") instanceof TestConverter);
+        assertTrue(application.createValidator
+                   ("DefaultValidator") instanceof TestValidator);
+        assertNotNull(rk.getRenderer("Test", "DefaultRenderer"));
+
+    }
+
+    // Representative sample only
+    private String rendersChildrenFalse[][] = {
+
+    };
+
+    private String rendersChildrenTrue[][] = {
+        {"javax.faces.Command", "javax.faces.Link"},
+        {"javax.faces.Data", "javax.faces.Table"},
+        {"javax.faces.Output", "javax.faces.Link"},
+        {"javax.faces.Panel", "javax.faces.Grid"},
+        {"javax.faces.Panel", "javax.faces.Group"},
+        {"javax.faces.Command", "javax.faces.Button"},
+        {"javax.faces.Form", "javax.faces.Form"}
+    };
+
+
+    private String status="";
+
+    public String getStatus() {
+        return status;
+    }
+}
+
diff --git a/test/agnostic/config/basic/src/main/java/com/sun/faces/test/agnostic/config/basic/TestComponent.java b/test/agnostic/config/basic/src/main/java/com/sun/faces/test/agnostic/config/basic/TestComponent.java
new file mode 100644
index 0000000..8f1df70
--- /dev/null
+++ b/test/agnostic/config/basic/src/main/java/com/sun/faces/test/agnostic/config/basic/TestComponent.java
@@ -0,0 +1,56 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.agnostic.config.basic;
+
+
+import javax.faces.component.UIOutput;
+
+
+// Dummy component that can be instantiated
+
+public class TestComponent extends UIOutput {
+
+
+    public String getFamily() {
+        return "Test";
+    }
+
+}
diff --git a/test/agnostic/config/basic/src/main/java/com/sun/faces/test/agnostic/config/basic/TestConverter.java b/test/agnostic/config/basic/src/main/java/com/sun/faces/test/agnostic/config/basic/TestConverter.java
new file mode 100644
index 0000000..0e56ee5
--- /dev/null
+++ b/test/agnostic/config/basic/src/main/java/com/sun/faces/test/agnostic/config/basic/TestConverter.java
@@ -0,0 +1,52 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.agnostic.config.basic;
+
+
+import javax.faces.convert.IntegerConverter;
+
+
+// Dummy converter that can be instantiated
+
+public class TestConverter extends IntegerConverter {
+
+
+}
diff --git a/test/agnostic/config/basic/src/main/java/com/sun/faces/test/agnostic/config/basic/TestRenderer.java b/test/agnostic/config/basic/src/main/java/com/sun/faces/test/agnostic/config/basic/TestRenderer.java
new file mode 100644
index 0000000..f42c2b6
--- /dev/null
+++ b/test/agnostic/config/basic/src/main/java/com/sun/faces/test/agnostic/config/basic/TestRenderer.java
@@ -0,0 +1,52 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.agnostic.config.basic;
+
+
+import javax.faces.render.Renderer;
+
+
+// Dummy renderer that can be instantiated
+
+public class TestRenderer extends Renderer {
+
+
+}
diff --git a/test/agnostic/config/basic/src/main/java/com/sun/faces/test/agnostic/config/basic/TestValidator.java b/test/agnostic/config/basic/src/main/java/com/sun/faces/test/agnostic/config/basic/TestValidator.java
new file mode 100644
index 0000000..d52ac4c
--- /dev/null
+++ b/test/agnostic/config/basic/src/main/java/com/sun/faces/test/agnostic/config/basic/TestValidator.java
@@ -0,0 +1,52 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.agnostic.config.basic;
+
+
+import javax.faces.validator.LengthValidator;
+
+
+// Dummy converter that can be instantiated
+
+public class TestValidator extends LengthValidator {
+
+
+}
diff --git a/test/agnostic/config/basic/src/main/webapp/WEB-INF/config-lists-and-maps.xml b/test/agnostic/config/basic/src/main/webapp/WEB-INF/config-lists-and-maps.xml
new file mode 100644
index 0000000..44b7944
--- /dev/null
+++ b/test/agnostic/config/basic/src/main/webapp/WEB-INF/config-lists-and-maps.xml
@@ -0,0 +1,158 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd"
+    version="1.2">
+
+  <!-- bean that is a List of Integers -->
+  <managed-bean>
+    <managed-bean-name>simpleList</managed-bean-name>
+    <managed-bean-class>java.util.ArrayList</managed-bean-class>
+    <managed-bean-scope>request</managed-bean-scope>
+    <list-entries>
+      <value-class>java.lang.Integer</value-class>
+      <value>10</value>
+      <value>20</value>
+      <value>60</value>
+      <null-value/>
+    </list-entries>
+  </managed-bean>
+
+  <!-- bean that is a List of SimpleBeans -->
+  <managed-bean>
+    <managed-bean-name>objectList</managed-bean-name>
+    <managed-bean-class>java.util.ArrayList</managed-bean-class>
+    <managed-bean-scope>request</managed-bean-scope>
+    <list-entries>
+      <value-class>com.sun.faces.test.agnostic.config.configFile.SimpleBean</value-class>
+      <value>#{SimpleBean}</value>
+      <value>#{SimpleBean}</value>
+      <value>#{SimpleBean}</value>
+      <null-value/>
+    </list-entries>
+  </managed-bean>
+
+  <!-- bean that is a Map of Maps of Float/SimpleBean pairs -->
+  <managed-bean>
+    <managed-bean-name>crazyMap</managed-bean-name>
+    <managed-bean-class>java.util.HashMap</managed-bean-class>
+    <managed-bean-scope>request</managed-bean-scope>
+    <map-entries>
+      <key-class>java.lang.String</key-class>
+      <value-class>java.util.Map</value-class>
+      <map-entry>
+        <key>one</key>
+        <value>#{floatMap}</value>
+      </map-entry>
+      <map-entry>
+        <key>two</key>
+        <value>#{floatMap}</value>
+      </map-entry>
+      <map-entry>
+        <key>three</key>
+        <null-value/>
+      </map-entry>
+    </map-entries>
+  </managed-bean>
+
+
+  <!-- bean that is a Map of SimpleBeans -->
+  <managed-bean>
+    <managed-bean-name>floatMap</managed-bean-name>
+    <managed-bean-class>java.util.HashMap</managed-bean-class>
+    <managed-bean-scope>request</managed-bean-scope>
+    <map-entries>
+      <key-class>java.lang.Float</key-class>
+      <value-class>com.sun.faces.test.agnostic.config.configFile.SimpleBean</value-class>
+      <map-entry>
+        <key>3.1415</key>
+        <value>#{SimpleBean}</value>
+      </map-entry>
+      <map-entry>
+        <key>3.14</key>
+        <value>#{SimpleBean}</value>
+      </map-entry>
+      <map-entry>
+        <key>6.02</key>
+        <value>#{SimpleBean}</value>
+      </map-entry>
+      <map-entry>
+        <key>0.00001</key>
+        <null-value/>
+      </map-entry>
+    </map-entries>
+  </managed-bean>
+
+<managed-bean>
+    <managed-bean-name>headAndFoot</managed-bean-name>
+    <managed-bean-class>java.util.TreeMap</managed-bean-class>
+    <managed-bean-scope>none</managed-bean-scope>
+    <map-entries>
+        <value-class>java.util.TreeMap</value-class>
+        <map-entry>
+            <key>banners</key>
+            <value>#{banners}</value>
+        </map-entry>
+    </map-entries>
+</managed-bean>
+
+<managed-bean>
+    <managed-bean-name>banners</managed-bean-name>
+    <managed-bean-class>java.util.TreeMap</managed-bean-class>
+    <managed-bean-scope>none</managed-bean-scope>
+    <map-entries>
+        <map-entry>
+            <key>headerUrl</key>
+            <value>http://foo.utah.edu</value>
+        </map-entry>
+        <map-entry>
+            <key>urlName</key>
+            <value>Request For Change</value>
+        </map-entry>
+    </map-entries>
+</managed-bean>
+
+
+</faces-config>
diff --git a/test/agnostic/config/basic/src/main/webapp/WEB-INF/faces-config.xml b/test/agnostic/config/basic/src/main/webapp/WEB-INF/faces-config.xml
new file mode 100644
index 0000000..f66be58
--- /dev/null
+++ b/test/agnostic/config/basic/src/main/webapp/WEB-INF/faces-config.xml
@@ -0,0 +1,74 @@
+<?xml version='1.0' encoding='UTF-8'?>
+
+<!--
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ 
+ Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+ 
+ The contents of this file are subject to the terms of either the GNU
+ General Public License Version 2 only ("GPL") or the Common Development
+ and Distribution License("CDDL") (collectively, the "License").  You
+ may not use this file except in compliance with the License. You can obtain
+ a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
+ or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ language governing permissions and limitations under the License.
+ 
+ When distributing the software, include this License Header Notice in each
+ file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
+ Sun designates this particular file as subject to the "Classpath" exception
+ as provided by Sun in the GPL Version 2 section of the License file that
+ accompanied this code.  If applicable, add the following below the License
+ Header, with the fields enclosed by brackets [] replaced by your own
+ identifying information: "Portions Copyrighted [year]
+ [name of copyright owner]"
+ 
+ Contributor(s):
+ 
+ If you wish your version of this file to be governed by only the CDDL or
+ only the GPL Version 2, indicate your decision by adding "[Contributor]
+ elects to include this software in this distribution under the [CDDL or GPL
+ Version 2] license."  If you don't indicate a single choice of license, a
+ recipient has the option to distribute your version of this file under
+ either the CDDL, the GPL Version 2 or to extend the choice of license to
+ its licensees as provided above.  However, if you add GPL Version 2 code
+ and therefore, elected the GPL Version 2 license, then the option applies
+ only if the new code is made subject to such option by the copyright
+ holder.
+-->
+
+<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
+    version="2.0"
+    metadata-complete="true">
+
+  <managed-bean>
+    <managed-bean-name>configFileBean</managed-bean-name>
+    <managed-bean-class>com.sun.faces.test.agnostic.config.basic.ConfigFileBean</managed-bean-class>
+    <managed-bean-scope>session</managed-bean-scope>
+  </managed-bean>
+
+  <component>
+    <component-type>DefaultComponent</component-type>
+    <component-class>com.sun.faces.test.agnostic.config.basic.TestComponent</component-class>
+  </component>
+
+  <converter>
+    <converter-id>DefaultConverter</converter-id>
+    <converter-class>com.sun.faces.test.agnostic.config.basic.TestConverter</converter-class>
+  </converter>
+
+  <validator>
+    <validator-id>DefaultValidator</validator-id>
+    <validator-class>com.sun.faces.test.agnostic.config.basic.TestValidator</validator-class>
+  </validator>
+
+  <render-kit>
+    <renderer>
+      <component-family>Test</component-family>
+      <renderer-type>DefaultRenderer</renderer-type>
+      <renderer-class>com.sun.faces.test.agnostic.config.basic.TestRenderer</renderer-class>
+    </renderer>
+  </render-kit>
+  
+</faces-config>
diff --git a/test/agnostic/config/basic/src/main/webapp/WEB-INF/glassfish-web.xml b/test/agnostic/config/basic/src/main/webapp/WEB-INF/glassfish-web.xml
new file mode 100644
index 0000000..f525ec3
--- /dev/null
+++ b/test/agnostic/config/basic/src/main/webapp/WEB-INF/glassfish-web.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
+<glassfish-web-app error-url="">
+  <context-root>/test-agnostic-config-basic</context-root>
+  <class-loader delegate="true"/>
+  <jsp-config>
+    <property name="keepgenerated" value="true">
+      <description>Keep a copy of the generated servlet class' java code.</description>
+    </property>
+  </jsp-config>
+</glassfish-web-app>
diff --git a/test/agnostic/config/basic/src/main/webapp/WEB-INF/web.xml b/test/agnostic/config/basic/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..8161dc1
--- /dev/null
+++ b/test/agnostic/config/basic/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,80 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" 
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>${webapp.projectStage}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
+        <param-value>${webapp.partialStateSaving}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>${webapp.stateSavingMethod}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.CONFIG_FILES</param-name>
+        <param-value>/WEB-INF/config-lists-and-maps.xml</param-value>
+    </context-param>
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <session-config>
+        <session-timeout>30</session-timeout>
+    </session-config>
+    <error-page>
+        <exception-type>java.lang.Throwable</exception-type>
+        <location>/error.jsp</location>
+    </error-page>
+</web-app>
diff --git a/test/agnostic/config/basic/src/main/webapp/basic.xhtml b/test/agnostic/config/basic/src/main/webapp/basic.xhtml
new file mode 100644
index 0000000..188d46a
--- /dev/null
+++ b/test/agnostic/config/basic/src/main/webapp/basic.xhtml
@@ -0,0 +1,66 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+<f:view contentType="text/html"/>
+<h:head>
+    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
+    <title>Config Basic</title>
+</h:head>
+
+<body>
+    <f:view>
+    <h:form>
+       <h:outputText value="#{configFileBean.title}" />
+       <br/>
+       <br/>
+       #{configFileBean.basic}
+       <h:outputText value="#{configFileBean.status}" />
+    </h:form>
+    </f:view>
+</body>
+</html>
diff --git a/test/agnostic/config/basic/src/main/webapp/boolean.xhtml b/test/agnostic/config/basic/src/main/webapp/boolean.xhtml
new file mode 100644
index 0000000..f555a85
--- /dev/null
+++ b/test/agnostic/config/basic/src/main/webapp/boolean.xhtml
@@ -0,0 +1,66 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+<f:view contentType="text/html"/>
+<h:head>
+    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
+    <title>Config Basic</title>
+</h:head>
+
+<body>
+    <f:view>
+    <h:form>
+       <h:outputText value="#{configFileBean.title}" />
+       <br/>
+       <br/>
+       #{configFileBean.bool}
+       <h:outputText value="#{configFileBean.status}" />
+    </h:form>
+    </f:view>
+</body>
+</html>
diff --git a/test/agnostic/config/basic/src/main/webapp/default.xhtml b/test/agnostic/config/basic/src/main/webapp/default.xhtml
new file mode 100644
index 0000000..e9a72bb
--- /dev/null
+++ b/test/agnostic/config/basic/src/main/webapp/default.xhtml
@@ -0,0 +1,66 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+<f:view contentType="text/html"/>
+<h:head>
+    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
+    <title>Config Basic</title>
+</h:head>
+
+<body>
+    <f:view>
+    <h:form>
+       <h:outputText value="#{configFileBean.title}" />
+       <br/>
+       <br/>
+       #{configFileBean.def}
+       <h:outputText value="#{configFileBean.status}" />
+    </h:form>
+    </f:view>
+</body>
+</html>
diff --git a/test/agnostic/config/basic/src/main/webapp/error.jsp b/test/agnostic/config/basic/src/main/webapp/error.jsp
new file mode 100644
index 0000000..52d9786
--- /dev/null
+++ b/test/agnostic/config/basic/src/main/webapp/error.jsp
@@ -0,0 +1,56 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<%@ page isErrorPage="true" import="java.io.*" contentType="text/plain"%>
+
+Message:
+<%=exception.getMessage()%>
+
+StackTrace:
+<%
+       StringWriter stringWriter = new StringWriter();
+       PrintWriter printWriter = new PrintWriter(stringWriter);
+       exception.printStackTrace(printWriter);
+       out.println(stringWriter);
+       printWriter.close();
+       stringWriter.close();
+%>
diff --git a/test/agnostic/config/basic/src/test/java/com/sun/faces/test/agnostic/config/basic/ConfigFileIT.java b/test/agnostic/config/basic/src/test/java/com/sun/faces/test/agnostic/config/basic/ConfigFileIT.java
new file mode 100644
index 0000000..e3ba12e
--- /dev/null
+++ b/test/agnostic/config/basic/src/test/java/com/sun/faces/test/agnostic/config/basic/ConfigFileIT.java
@@ -0,0 +1,96 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.agnostic.config.basic;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class ConfigFileIT {
+    
+    /**
+     * Stores the web URL.
+     */
+    private String webUrl;
+    /**
+     * Stores the web client.
+     */
+    private WebClient webClient;
+
+    /**
+     * Setup before testing.
+     */
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+        webClient.setThrowExceptionOnFailingStatusCode(true);
+    }
+
+    /**
+     * Tear down after testing.
+     */
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testBasic() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/basic.xhtml");
+        assertTrue(page.asText().contains("SUCCESS"));
+    }
+
+    @Test
+    public void testBoolean() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/boolean.xhtml");
+        assertTrue(page.asText().contains("SUCCESS"));
+    }
+
+    @Test
+    public void testDefault() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/default.xhtml");
+        assertTrue(page.asText().contains("SUCCESS"));
+    }
+}
diff --git a/test/agnostic/config/configFile/pom.xml b/test/agnostic/config/configFile/pom.xml
new file mode 100644
index 0000000..114e8c7
--- /dev/null
+++ b/test/agnostic/config/configFile/pom.xml
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.agnostic.config</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.agnostic.config</groupId>
+    <artifactId>configFile</artifactId>
+    <packaging>war</packaging>
+    <name>Mojarra ${project.version} - Test - Agnostic - Config - ConfigFile</name>
+    <build>
+        <finalName>test-agnostic-config-configFile</finalName>
+    </build>
+    <dependencies>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <version>4.11</version>
+            <scope>compile</scope>
+        </dependency>
+    </dependencies>
+    <properties>
+        <netbeans.hint.deploy.server>gfv3ee6</netbeans.hint.deploy.server>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/test/agnostic/config/configFile/src/main/java/com/sun/faces/test/agnostic/config/configFile/ConfigFileBean.java b/test/agnostic/config/configFile/src/main/java/com/sun/faces/test/agnostic/config/configFile/ConfigFileBean.java
new file mode 100644
index 0000000..1e1c63a
--- /dev/null
+++ b/test/agnostic/config/configFile/src/main/java/com/sun/faces/test/agnostic/config/configFile/ConfigFileBean.java
@@ -0,0 +1,193 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.agnostic.config.configFile;
+
+import javax.faces.FacesException;
+import javax.faces.application.Application;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.SessionScoped;
+import javax.faces.context.FacesContext;
+import javax.el.ExpressionFactory;
+import javax.faces.el.ValueBinding;
+import javax.el.ValueExpression;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import static org.junit.Assert.*;
+
+ at ManagedBean
+ at SessionScoped
+public class ConfigFileBean {
+
+    private String title = "Test Config File";
+    public String getTitle() {
+        return title; 
+    }
+
+    public ConfigFileBean() {
+    }
+
+    public String getMapAndListPositive() {
+        FacesContext fc = FacesContext.getCurrentInstance();
+        Application app = fc.getApplication();
+
+        ValueBinding valueBinding = app.createValueBinding("#{simpleList}");
+        assertNotNull(valueBinding);
+
+        List list = (List) valueBinding.getValue(fc);
+        assertNotNull(list);
+
+        assertEquals("simpleList size not as expected", 4, list.size());
+        assertEquals("simpleList.get(0) not as expected",
+                     new Integer(10), list.get(0));
+        assertEquals("simpleList.get(1) not as expected",
+                     new Integer(20), list.get(1));
+        assertEquals("simpleList.get(2) not as expected",
+                     new Integer(60), list.get(2));
+        assertNull("simpleList.get(3) not as expected", list.get(3));
+
+        valueBinding = app.createValueBinding("#{objectList}");
+        assertNotNull(valueBinding);
+
+        list = (List) valueBinding.getValue(fc);
+        assertNotNull(list);
+
+        assertEquals("simpleList size not as expected", 4, list.size());
+        assertTrue("simpleList.get(0) not as expected",
+                   list.get(0) instanceof SimpleBean);
+        assertTrue("simpleList.get(1) not as expected",
+                   list.get(1) instanceof SimpleBean);
+        assertTrue("simpleList.get(2) not as expected",
+                   list.get(2) instanceof SimpleBean);
+        assertNull("simpleList.get(3) not as expected", list.get(3));
+
+
+        valueBinding = app.createValueBinding("#{floatMap}");
+        assertNotNull(valueBinding);
+
+        Map
+            nestedMap = null,
+            map = (Map) valueBinding.getValue(fc);
+        assertNotNull(map);
+
+        Iterator keys = map.keySet().iterator();
+        Float
+            key1 = new Float(3.1415),
+            key2 = new Float(3.14),
+            key3 = new Float(6.02),
+            key4 = new Float(0.00001);
+        Object
+            curKey = null,
+            value = null;
+
+        while (keys.hasNext()) {
+            assertTrue((curKey = keys.next()) instanceof Float);
+            if (null != (value = map.get(curKey))) {
+                assertTrue(value instanceof SimpleBean);
+            }
+        }
+
+        assertTrue("map.get(key1) not a SimpleBean",
+                   map.get(key1) instanceof SimpleBean);
+        assertTrue("map.get(key2) not a SimpleBean",
+                   map.get(key2) instanceof SimpleBean);
+        assertTrue("map.get(key3) not a SimpleBean",
+                   map.get(key3) instanceof SimpleBean);
+        assertNull("map.get(key4) not null", map.get(key4));
+
+        valueBinding = app.createValueBinding("#{crazyMap}");
+        assertNotNull(valueBinding);
+
+        map = (Map) valueBinding.getValue(fc);
+        assertNotNull(map);
+
+        keys = map.keySet().iterator();
+        while (keys.hasNext()) {
+            assertTrue((curKey = keys.next()) instanceof String);
+            if (null != (value = map.get(curKey))) {
+                assertTrue(value instanceof Map);
+                nestedMap = (Map) value;
+                assertTrue("nestedMap.get(key1) not a SimpleBean",
+                           nestedMap.get(key1) instanceof SimpleBean);
+                assertTrue("nestedMap.get(key2) not a SimpleBean",
+                           nestedMap.get(key2) instanceof SimpleBean);
+                assertTrue("nestedMap.get(key3) not a SimpleBean",
+                           nestedMap.get(key3) instanceof SimpleBean);
+                assertNull("nestedMap.get(key4) not null",
+                           nestedMap.get(key4));
+            }
+        }
+        assertTrue("map.get(one) not a Map",
+                   map.get("one") instanceof Map);
+        assertTrue("map.get(two) not a Map",
+                   map.get("two") instanceof Map);
+        assertNull("map.get(three) not null", map.get("three"));
+
+        return "SUCCESS";
+    }
+
+    public String getMap1701() {
+        FacesContext fc = FacesContext.getCurrentInstance();
+        Application app = fc.getApplication();
+        ExpressionFactory ef = app.getExpressionFactory();
+        ValueExpression ve = ef.createValueExpression(fc.getELContext(),
+                "#{headAndFoot}", Map.class);
+        Map headAndFoot = (Map) ve.getValue(fc.getELContext());
+        assertNotNull(headAndFoot);
+        Map banners = (Map) headAndFoot.get("banners");
+        Object result = banners.get("headerUrl");
+        assertNotNull(result);
+        assertEquals("http://foo.utah.edu", result);
+        result = banners.get("urlName");
+        assertNotNull(result);
+        assertEquals("Request For Change", result);
+
+        return "SUCCESS";
+    }
+
+    private String status="";
+
+    public String getStatus() {
+        return status;
+    }
+}
+
diff --git a/test/agnostic/config/configFile/src/main/java/com/sun/faces/test/agnostic/config/configFile/NonManagedBean.java b/test/agnostic/config/configFile/src/main/java/com/sun/faces/test/agnostic/config/configFile/NonManagedBean.java
new file mode 100644
index 0000000..65545a2
--- /dev/null
+++ b/test/agnostic/config/configFile/src/main/java/com/sun/faces/test/agnostic/config/configFile/NonManagedBean.java
@@ -0,0 +1,47 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.agnostic.config.configFile;
+
+public class NonManagedBean {
+
+    public NonManagedBean() {};
+
+}
diff --git a/test/agnostic/config/configFile/src/main/java/com/sun/faces/test/agnostic/config/configFile/SimpleBean.java b/test/agnostic/config/configFile/src/main/java/com/sun/faces/test/agnostic/config/configFile/SimpleBean.java
new file mode 100644
index 0000000..2ac79e4
--- /dev/null
+++ b/test/agnostic/config/configFile/src/main/java/com/sun/faces/test/agnostic/config/configFile/SimpleBean.java
@@ -0,0 +1,106 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.agnostic.config.configFile;
+
+public class SimpleBean {
+
+    private String simpleProperty;
+
+
+    public SimpleBean() {
+    }
+
+
+    public String getSimpleProperty() {
+        return simpleProperty;
+    }
+
+
+    public void setSimpleProperty(String simpleProperty) {
+        this.simpleProperty = simpleProperty;
+    }
+
+
+    Integer intProp = null;
+
+
+    public void setIntProperty(Integer newVal) {
+        intProp = newVal;
+    }
+
+
+    public Integer getIntProperty() {
+        return intProp;
+    }
+
+
+    public boolean getTrueValue() {
+        return true;
+    }
+
+
+    public boolean getFalseValue() {
+        return false;
+    }
+
+    private NonManagedBean nonManagedBean = null;
+    public NonManagedBean getNonManagedBean() {
+        return nonManagedBean;
+    }
+    public void setNonManagedBean(NonManagedBean nmb) {
+        nonManagedBean = nmb;
+    }
+
+    private String headerClass = "column-header";
+    public String getHeaderClass() {
+        return headerClass;
+    }
+    public void setHeaderClass(String headerClass) {
+        this.headerClass = headerClass;
+    }
+    private String footerClass = "column-footer";
+    public String getFooterClass() {
+        return footerClass;
+    }
+    public void setFooterClass(String footerClass) {
+        this.footerClass = footerClass;
+    }
+}
diff --git a/test/agnostic/config/configFile/src/main/webapp/WEB-INF/config-lists-and-maps.xml b/test/agnostic/config/configFile/src/main/webapp/WEB-INF/config-lists-and-maps.xml
new file mode 100644
index 0000000..6dd4eb2
--- /dev/null
+++ b/test/agnostic/config/configFile/src/main/webapp/WEB-INF/config-lists-and-maps.xml
@@ -0,0 +1,168 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd"
+    version="1.2">
+
+  <managed-bean>
+    <managed-bean-name>SimpleBean</managed-bean-name>
+    <managed-bean-class>com.sun.faces.test.agnostic.config.configFile.SimpleBean</managed-bean-class>
+    <managed-bean-scope>session</managed-bean-scope>
+    <managed-property>
+      <property-name>simpleProperty</property-name>
+      <value>Bobby Orr</value>
+    </managed-property>
+  </managed-bean>
+
+  <!-- bean that is a List of Integers -->
+  <managed-bean>
+    <managed-bean-name>simpleList</managed-bean-name>
+    <managed-bean-class>java.util.ArrayList</managed-bean-class>
+    <managed-bean-scope>request</managed-bean-scope>
+    <list-entries>
+      <value-class>java.lang.Integer</value-class>
+      <value>10</value>
+      <value>20</value>
+      <value>60</value>
+      <null-value/>
+    </list-entries>
+  </managed-bean>
+
+  <!-- bean that is a List of SimpleBeans -->
+  <managed-bean>
+    <managed-bean-name>objectList</managed-bean-name>
+    <managed-bean-class>java.util.ArrayList</managed-bean-class>
+    <managed-bean-scope>request</managed-bean-scope>
+    <list-entries>
+      <value-class>com.sun.faces.test.agnostic.config.configFile.SimpleBean</value-class>
+      <value>#{SimpleBean}</value>
+      <value>#{SimpleBean}</value>
+      <value>#{SimpleBean}</value>
+      <null-value/>
+    </list-entries>
+  </managed-bean>
+
+  <!-- bean that is a Map of Maps of Float/SimpleBean pairs -->
+  <managed-bean>
+    <managed-bean-name>crazyMap</managed-bean-name>
+    <managed-bean-class>java.util.HashMap</managed-bean-class>
+    <managed-bean-scope>request</managed-bean-scope>
+    <map-entries>
+      <key-class>java.lang.String</key-class>
+      <value-class>java.util.Map</value-class>
+      <map-entry>
+        <key>one</key>
+        <value>#{floatMap}</value>
+      </map-entry>
+      <map-entry>
+        <key>two</key>
+        <value>#{floatMap}</value>
+      </map-entry>
+      <map-entry>
+        <key>three</key>
+        <null-value/>
+      </map-entry>
+    </map-entries>
+  </managed-bean>
+
+
+  <!-- bean that is a Map of SimpleBeans -->
+  <managed-bean>
+    <managed-bean-name>floatMap</managed-bean-name>
+    <managed-bean-class>java.util.HashMap</managed-bean-class>
+    <managed-bean-scope>request</managed-bean-scope>
+    <map-entries>
+      <key-class>java.lang.Float</key-class>
+      <value-class>com.sun.faces.test.agnostic.config.configFile.SimpleBean</value-class>
+      <map-entry>
+        <key>3.1415</key>
+        <value>#{SimpleBean}</value>
+      </map-entry>
+      <map-entry>
+        <key>3.14</key>
+        <value>#{SimpleBean}</value>
+      </map-entry>
+      <map-entry>
+        <key>6.02</key>
+        <value>#{SimpleBean}</value>
+      </map-entry>
+      <map-entry>
+        <key>0.00001</key>
+        <null-value/>
+      </map-entry>
+    </map-entries>
+  </managed-bean>
+
+<managed-bean>
+    <managed-bean-name>headAndFoot</managed-bean-name>
+    <managed-bean-class>java.util.TreeMap</managed-bean-class>
+    <managed-bean-scope>none</managed-bean-scope>
+    <map-entries>
+        <value-class>java.util.TreeMap</value-class>
+        <map-entry>
+            <key>banners</key>
+            <value>#{banners}</value>
+        </map-entry>
+    </map-entries>
+</managed-bean>
+
+<managed-bean>
+    <managed-bean-name>banners</managed-bean-name>
+    <managed-bean-class>java.util.TreeMap</managed-bean-class>
+    <managed-bean-scope>none</managed-bean-scope>
+    <map-entries>
+        <map-entry>
+            <key>headerUrl</key>
+            <value>http://foo.utah.edu</value>
+        </map-entry>
+        <map-entry>
+            <key>urlName</key>
+            <value>Request For Change</value>
+        </map-entry>
+    </map-entries>
+</managed-bean>
+
+
+</faces-config>
diff --git a/test/agnostic/config/configFile/src/main/webapp/WEB-INF/web.xml b/test/agnostic/config/configFile/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..8161dc1
--- /dev/null
+++ b/test/agnostic/config/configFile/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,80 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" 
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>${webapp.projectStage}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
+        <param-value>${webapp.partialStateSaving}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>${webapp.stateSavingMethod}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.CONFIG_FILES</param-name>
+        <param-value>/WEB-INF/config-lists-and-maps.xml</param-value>
+    </context-param>
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <session-config>
+        <session-timeout>30</session-timeout>
+    </session-config>
+    <error-page>
+        <exception-type>java.lang.Throwable</exception-type>
+        <location>/error.jsp</location>
+    </error-page>
+</web-app>
diff --git a/test/agnostic/config/configFile/src/main/webapp/error.jsp b/test/agnostic/config/configFile/src/main/webapp/error.jsp
new file mode 100644
index 0000000..52d9786
--- /dev/null
+++ b/test/agnostic/config/configFile/src/main/webapp/error.jsp
@@ -0,0 +1,56 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<%@ page isErrorPage="true" import="java.io.*" contentType="text/plain"%>
+
+Message:
+<%=exception.getMessage()%>
+
+StackTrace:
+<%
+       StringWriter stringWriter = new StringWriter();
+       PrintWriter printWriter = new PrintWriter(stringWriter);
+       exception.printStackTrace(printWriter);
+       out.println(stringWriter);
+       printWriter.close();
+       stringWriter.close();
+%>
diff --git a/test/agnostic/config/configFile/src/main/webapp/map1701.xhtml b/test/agnostic/config/configFile/src/main/webapp/map1701.xhtml
new file mode 100644
index 0000000..49514ef
--- /dev/null
+++ b/test/agnostic/config/configFile/src/main/webapp/map1701.xhtml
@@ -0,0 +1,66 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+<f:view contentType="text/html"/>
+<h:head>
+    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
+    <title>Navigation</title>
+</h:head>
+
+<body>
+    <f:view>
+    <h:form>
+       <h:outputText value="#{configFileBean.title}" />
+       <br/>
+       <br/>
+       #{configFileBean.map1701}
+       <h:outputText value="#{configFileBean.status}" />
+    </h:form>
+    </f:view>
+</body>
+</html>
diff --git a/test/agnostic/config/configFile/src/main/webapp/mapAndListPositive.xhtml b/test/agnostic/config/configFile/src/main/webapp/mapAndListPositive.xhtml
new file mode 100644
index 0000000..0f5eeca
--- /dev/null
+++ b/test/agnostic/config/configFile/src/main/webapp/mapAndListPositive.xhtml
@@ -0,0 +1,66 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+<f:view contentType="text/html"/>
+<h:head>
+    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
+    <title>Navigation</title>
+</h:head>
+
+<body>
+    <f:view>
+    <h:form>
+       <h:outputText value="#{configFileBean.title}" />
+       <br/>
+       <br/>
+       #{configFileBean.mapAndListPositive}
+       <h:outputText value="#{configFileBean.status}" />
+    </h:form>
+    </f:view>
+</body>
+</html>
diff --git a/test/agnostic/config/configFile/src/main/webapp/navHandler.xhtml b/test/agnostic/config/configFile/src/main/webapp/navHandler.xhtml
new file mode 100644
index 0000000..879300e
--- /dev/null
+++ b/test/agnostic/config/configFile/src/main/webapp/navHandler.xhtml
@@ -0,0 +1,66 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+<f:view contentType="text/html"/>
+<h:head>
+    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
+    <title>Navigation</title>
+</h:head>
+
+<body>
+    <f:view>
+    <h:form>
+       <h:outputText value="#{navigationBean.title}" />
+       <br/>
+       <br/>
+       #{navigationBean.navigationHandler}
+       <h:outputText value="#{navigationBean.status}" />
+    </h:form>
+    </f:view>
+</body>
+</html>
diff --git a/test/agnostic/config/configFile/src/test/java/com/sun/faces/test/agnostic/config/configFile/ConfigFileIT.java b/test/agnostic/config/configFile/src/test/java/com/sun/faces/test/agnostic/config/configFile/ConfigFileIT.java
new file mode 100644
index 0000000..7b64e8a
--- /dev/null
+++ b/test/agnostic/config/configFile/src/test/java/com/sun/faces/test/agnostic/config/configFile/ConfigFileIT.java
@@ -0,0 +1,92 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.agnostic.config.configFile;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
+import javax.faces.FacesException;
+import javax.faces.el.MethodNotFoundException;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class ConfigFileIT {
+    
+    /**
+     * Stores the web URL.
+     */
+    private String webUrl;
+    /**
+     * Stores the web client.
+     */
+    private WebClient webClient;
+
+    /**
+     * Setup before testing.
+     */
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+        webClient.setThrowExceptionOnFailingStatusCode(true);
+    }
+
+    /**
+     * Tear down after testing.
+     */
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testMapAndListPositive() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "/faces/mapAndListPositive.xhtml");
+    }
+
+    @Test
+    public void testMap1701() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "/faces/map1701.xhtml");
+    }
+}
diff --git a/test/agnostic/config/embedConfig/nbactions.xml b/test/agnostic/config/embedConfig/nbactions.xml
new file mode 100644
index 0000000..764fdd6
--- /dev/null
+++ b/test/agnostic/config/embedConfig/nbactions.xml
@@ -0,0 +1,163 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--><actions>
+        <action>
+            <actionName>debug.test.single</actionName>
+            <goals>
+                <goal>test-compile</goal>
+                <goal>surefire:test</goal>
+            </goals>
+            <properties>
+                <test>${packageClassName}</test>
+                <forkMode>once</forkMode>
+                <maven.surefire.debug>-Xdebug -Xrunjdwp:transport=dt_socket,server=n,address=${jpda.address}</maven.surefire.debug>
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                <jpda.listen>true</jpda.listen>
+                <project.build.finalName>test-agnostic-config-embedConfig</project.build.finalName>
+                <webapp.projectStage>Development</webapp.projectStage>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                <integration.serverPort>8080</integration.serverPort>
+                <integration.serverName>localhost</integration.serverName>
+                <integration.url>http://localhost:8080/test-agnostic-config-embedConfig/</integration.url>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+            </properties>
+        </action>
+        <action>
+            <actionName>test.single</actionName>
+            <goals>
+                <goal>test-compile</goal>
+                <goal>surefire:test</goal>
+            </goals>
+            <properties>
+                <project.build.finalName>test-agnostic-config-embedConfig</project.build.finalName>
+                <integration.serverPort>8080</integration.serverPort>
+                <integration.serverName>localhost</integration.serverName>
+                <integration.url>http://localhost:8080/test-agnostic-config-embedConfig/</integration.url>
+                <test>${packageClassName}</test>
+            </properties>
+        </action>
+        <action>
+            <actionName>build</actionName>
+            <goals>
+                <goal>install</goal>
+            </goals>
+            <properties>
+                <webapp.projectStage>Development</webapp.projectStage>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+            </properties>
+        </action>
+        <action>
+            <actionName>rebuild</actionName>
+            <goals>
+                <goal>clean</goal>
+                <goal>install</goal>
+            </goals>
+            <properties>
+                
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                
+                <webapp.projectStage>Development</webapp.projectStage>
+                
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                
+            </properties>
+        </action>
+        <action>
+            <actionName>build-with-dependencies</actionName>
+            <reactor>also-make</reactor>
+            <goals>
+                <goal>install</goal>
+            </goals>
+            <properties>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                <webapp.projectStage>Development</webapp.projectStage>
+            </properties>
+        </action>
+        <action>
+            <actionName>run</actionName>
+            <goals>
+                <goal>package</goal>
+            </goals>
+            <properties>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                <netbeans.deploy>true</netbeans.deploy>
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                <webapp.projectStage>Development</webapp.projectStage>
+            </properties>
+        </action>
+        <action>
+            <actionName>run.single.deploy</actionName>
+            <goals>
+                <goal>package</goal>
+            </goals>
+            <properties>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                <netbeans.deploy>true</netbeans.deploy>
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                <netbeans.deploy.clientUrlPart>${webpagePath}</netbeans.deploy.clientUrlPart>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                <webapp.projectStage>Development</webapp.projectStage>
+            </properties>
+        </action>
+        <action>
+            <actionName>debug.single.deploy</actionName>
+            <goals>
+                <goal>package</goal>
+            </goals>
+            <properties>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                <netbeans.deploy>true</netbeans.deploy>
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                <netbeans.deploy.debugmode>true</netbeans.deploy.debugmode>
+                <netbeans.deploy.clientUrlPart>${webpagePath}</netbeans.deploy.clientUrlPart>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                <webapp.projectStage>Development</webapp.projectStage>
+            </properties>
+        </action>
+    </actions>
diff --git a/test/agnostic/config/embedConfig/pom.xml b/test/agnostic/config/embedConfig/pom.xml
new file mode 100644
index 0000000..966af3b
--- /dev/null
+++ b/test/agnostic/config/embedConfig/pom.xml
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.agnostic.config</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.agnostic.config</groupId>
+    <artifactId>embedConfig</artifactId>
+    <packaging>war</packaging>
+    <name>Mojarra ${project.version} - Test - Agnostic - Config - Embed Config</name>
+    <build>
+        <finalName>test-agnostic-config-embedConfig</finalName>
+    </build>
+    <dependencies>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <version>4.11</version>
+            <scope>compile</scope>
+        </dependency>
+    </dependencies>
+    <properties>
+        <netbeans.hint.deploy.server>gfv3ee6</netbeans.hint.deploy.server>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/test/agnostic/config/embedConfig/src/main/java/com/sun/faces/test/agnostic/config/embedConfig/ConfigFileBean.java b/test/agnostic/config/embedConfig/src/main/java/com/sun/faces/test/agnostic/config/embedConfig/ConfigFileBean.java
new file mode 100644
index 0000000..fd28887
--- /dev/null
+++ b/test/agnostic/config/embedConfig/src/main/java/com/sun/faces/test/agnostic/config/embedConfig/ConfigFileBean.java
@@ -0,0 +1,538 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.agnostic.config.embedConfig;
+
+import java.math.BigDecimal;
+import java.math.BigInteger;
+
+import javax.faces.FacesException;
+import javax.faces.FactoryFinder;
+import javax.faces.application.Application;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.SessionScoped;
+import javax.faces.component.UIColumn;
+import javax.faces.component.UICommand;
+import javax.faces.component.UIData;
+import javax.faces.component.UIForm;
+import javax.faces.component.UIGraphic;
+import javax.faces.component.UIInput;
+import javax.faces.component.UIMessage;
+import javax.faces.component.UIMessages;
+import javax.faces.component.UINamingContainer;
+import javax.faces.component.UIOutput;
+import javax.faces.component.UIPanel;
+import javax.faces.component.UIParameter;
+import javax.faces.component.UISelectBoolean;
+import javax.faces.component.UISelectItem;
+import javax.faces.component.UISelectItems;
+import javax.faces.component.UISelectMany;
+import javax.faces.component.UISelectOne;
+import javax.faces.component.html.HtmlCommandButton;
+import javax.faces.component.html.HtmlCommandLink;
+import javax.faces.component.html.HtmlDataTable;
+import javax.faces.component.html.HtmlForm;
+import javax.faces.component.html.HtmlGraphicImage;
+import javax.faces.component.html.HtmlInputHidden;
+import javax.faces.component.html.HtmlInputSecret;
+import javax.faces.component.html.HtmlInputText;
+import javax.faces.component.html.HtmlInputTextarea;
+import javax.faces.component.html.HtmlMessage;
+import javax.faces.component.html.HtmlMessages;
+import javax.faces.component.html.HtmlOutputFormat;
+import javax.faces.component.html.HtmlOutputLabel;
+import javax.faces.component.html.HtmlOutputLink;
+import javax.faces.component.html.HtmlOutputText;
+import javax.faces.component.html.HtmlPanelGrid;
+import javax.faces.component.html.HtmlPanelGroup;
+import javax.faces.component.html.HtmlSelectBooleanCheckbox;
+import javax.faces.component.html.HtmlSelectManyCheckbox;
+import javax.faces.component.html.HtmlSelectManyListbox;
+import javax.faces.component.html.HtmlSelectManyMenu;
+import javax.faces.component.html.HtmlSelectOneListbox;
+import javax.faces.component.html.HtmlSelectOneMenu;
+import javax.faces.component.html.HtmlSelectOneRadio;
+import javax.faces.convert.BigDecimalConverter;
+import javax.faces.convert.BigIntegerConverter;
+import javax.faces.convert.BooleanConverter;
+import javax.faces.convert.ByteConverter;
+import javax.faces.convert.CharacterConverter;
+import javax.faces.convert.DateTimeConverter;
+import javax.faces.convert.DoubleConverter;
+import javax.faces.convert.FloatConverter;
+import javax.faces.convert.IntegerConverter;
+import javax.faces.convert.LongConverter;
+import javax.faces.convert.NumberConverter;
+import javax.faces.convert.ShortConverter;
+import javax.faces.render.RenderKit;
+import javax.faces.render.RenderKitFactory;
+import javax.faces.render.Renderer;
+import javax.faces.validator.DoubleRangeValidator;
+import javax.faces.validator.LengthValidator;
+import javax.faces.validator.LongRangeValidator;
+
+
+import javax.faces.context.FacesContext;
+import javax.el.ExpressionFactory;
+import javax.faces.el.ValueBinding;
+import javax.el.ValueExpression;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import static org.junit.Assert.*;
+
+ at ManagedBean
+ at SessionScoped
+public class ConfigFileBean {
+
+    private String title = "Test Config File";
+    public String getTitle() {
+        return title; 
+    }
+
+    public ConfigFileBean() {
+    }
+
+    public String getEmbed() throws Exception {
+        // Validate standard configuration
+        checkComponentsGeneric();
+        checkComponentsHtml();
+        checkConvertersByClass();
+        checkConvertersById();
+        checkRenderers();
+        checkValidators();
+
+        // Validate what was actually configured
+        checkDefaultConfiguration();
+        checkExtraConfiguration(true);
+        checkEmbedConfiguration(true);
+
+        return "SUCCESS";
+    }
+
+    // Check that all of the required generic components have been registered
+    private void checkComponentsGeneric() throws Exception {
+        FacesContext fc = FacesContext.getCurrentInstance();
+        Application application = fc.getApplication();
+
+        assertTrue(application.createComponent
+                   ("javax.faces.Column") instanceof UIColumn);
+        assertTrue(application.createComponent
+                   (UIColumn.COMPONENT_TYPE) instanceof UIColumn);
+        assertTrue(application.createComponent
+                   ("javax.faces.Command") instanceof UICommand);
+        assertTrue(application.createComponent
+                   (UICommand.COMPONENT_TYPE) instanceof UICommand);
+        assertTrue(application.createComponent
+                   ("javax.faces.Data") instanceof UIData);
+        assertTrue(application.createComponent
+                   (UIData.COMPONENT_TYPE) instanceof UIData);
+        assertTrue(application.createComponent
+                   ("javax.faces.Form") instanceof UIForm);
+        assertTrue(application.createComponent
+                   (UIForm.COMPONENT_TYPE) instanceof UIForm);
+        assertTrue(application.createComponent
+                   ("javax.faces.Graphic") instanceof UIGraphic);
+        assertTrue(application.createComponent
+                   (UIGraphic.COMPONENT_TYPE) instanceof UIGraphic);
+        assertTrue(application.createComponent
+                   ("javax.faces.Input") instanceof UIInput);
+        assertTrue(application.createComponent
+                   (UIInput.COMPONENT_TYPE) instanceof UIInput);
+        assertTrue(application.createComponent
+                   ("javax.faces.Message") instanceof UIMessage);
+        assertTrue(application.createComponent
+                   (UIMessage.COMPONENT_TYPE) instanceof UIMessage);
+        assertTrue(application.createComponent
+                   ("javax.faces.Messages") instanceof UIMessages);
+        assertTrue(application.createComponent
+                   (UIMessages.COMPONENT_TYPE) instanceof UIMessages);
+        assertTrue(application.createComponent
+                   ("javax.faces.NamingContainer") instanceof UINamingContainer);
+        assertTrue(application.createComponent
+                   (UINamingContainer.COMPONENT_TYPE) instanceof UINamingContainer);
+        assertTrue(application.createComponent
+                   ("javax.faces.Output") instanceof UIOutput);
+        assertTrue(application.createComponent
+                   (UIOutput.COMPONENT_TYPE) instanceof UIOutput);
+        assertTrue(application.createComponent
+                   ("javax.faces.Panel") instanceof UIPanel);
+        assertTrue(application.createComponent
+                   (UIPanel.COMPONENT_TYPE) instanceof UIPanel);
+        assertTrue(application.createComponent
+                   ("javax.faces.Parameter") instanceof UIParameter);
+        assertTrue(application.createComponent
+                   (UIParameter.COMPONENT_TYPE) instanceof UIParameter);
+        assertTrue(application.createComponent
+                   ("javax.faces.SelectBoolean") instanceof UISelectBoolean);
+        assertTrue(application.createComponent
+                   (UISelectBoolean.COMPONENT_TYPE) instanceof UISelectBoolean);
+        assertTrue(application.createComponent
+                   ("javax.faces.SelectItem") instanceof UISelectItem);
+        assertTrue(application.createComponent
+                   (UISelectItem.COMPONENT_TYPE) instanceof UISelectItem);
+        assertTrue(application.createComponent
+                   ("javax.faces.SelectItems") instanceof UISelectItems);
+        assertTrue(application.createComponent
+                   (UISelectItems.COMPONENT_TYPE) instanceof UISelectItems);
+        assertTrue(application.createComponent
+                   ("javax.faces.SelectMany") instanceof UISelectMany);
+        assertTrue(application.createComponent
+                   (UISelectMany.COMPONENT_TYPE) instanceof UISelectMany);
+        assertTrue(application.createComponent
+                   ("javax.faces.SelectOne") instanceof UISelectOne);
+        assertTrue(application.createComponent
+                   (UISelectOne.COMPONENT_TYPE) instanceof UISelectOne);
+    }
+
+    // Check that all of the required HTML components have been registered
+    private void checkComponentsHtml() throws Exception {
+        FacesContext fc = FacesContext.getCurrentInstance();
+        Application application = fc.getApplication();
+
+        assertTrue(application.createComponent
+                   ("javax.faces.HtmlCommandButton") instanceof HtmlCommandButton);
+        assertTrue(application.createComponent
+                   ("javax.faces.HtmlCommandLink") instanceof HtmlCommandLink);
+        assertTrue(application.createComponent
+                   ("javax.faces.HtmlDataTable") instanceof HtmlDataTable);
+        assertTrue(application.createComponent
+                   ("javax.faces.HtmlForm") instanceof HtmlForm);
+        assertTrue(application.createComponent
+                   ("javax.faces.HtmlGraphicImage") instanceof HtmlGraphicImage);
+        assertTrue(application.createComponent
+                   ("javax.faces.HtmlInputHidden") instanceof HtmlInputHidden);
+        assertTrue(application.createComponent
+                   ("javax.faces.HtmlInputSecret") instanceof HtmlInputSecret);
+        assertTrue(application.createComponent
+                   ("javax.faces.HtmlInputText") instanceof HtmlInputText);
+        assertTrue(application.createComponent
+                   ("javax.faces.HtmlInputTextarea") instanceof HtmlInputTextarea);
+        assertTrue(application.createComponent
+                   ("javax.faces.HtmlMessage") instanceof HtmlMessage);
+        assertTrue(application.createComponent
+                   ("javax.faces.HtmlMessages") instanceof HtmlMessages);
+        assertTrue(application.createComponent
+                   ("javax.faces.HtmlOutputFormat") instanceof HtmlOutputFormat);
+        assertTrue(application.createComponent
+                   ("javax.faces.HtmlOutputLabel") instanceof HtmlOutputLabel);
+        assertTrue(application.createComponent
+                   ("javax.faces.HtmlOutputLink") instanceof HtmlOutputLink);
+        assertTrue(application.createComponent
+                   ("javax.faces.HtmlOutputText") instanceof HtmlOutputText);
+        assertTrue(application.createComponent
+                   ("javax.faces.HtmlPanelGrid") instanceof HtmlPanelGrid);
+        assertTrue(application.createComponent
+                   ("javax.faces.HtmlPanelGroup") instanceof HtmlPanelGroup);
+        assertTrue(
+            application.createComponent
+            ("javax.faces.HtmlSelectBooleanCheckbox") instanceof HtmlSelectBooleanCheckbox);
+        assertTrue(
+            application.createComponent
+            ("javax.faces.HtmlSelectManyCheckbox") instanceof HtmlSelectManyCheckbox);
+        assertTrue(
+            application.createComponent
+            ("javax.faces.HtmlSelectManyListbox") instanceof HtmlSelectManyListbox);
+        assertTrue(
+            application.createComponent
+            ("javax.faces.HtmlSelectManyMenu") instanceof HtmlSelectManyMenu);
+        assertTrue(
+            application.createComponent
+            ("javax.faces.HtmlSelectOneListbox") instanceof HtmlSelectOneListbox);
+        assertTrue(application.createComponent
+                   ("javax.faces.HtmlSelectOneMenu") instanceof HtmlSelectOneMenu);
+        assertTrue(
+            application.createComponent
+            ("javax.faces.HtmlSelectOneRadio") instanceof HtmlSelectOneRadio);
+    }
+
+    // Check that all required by-class Converters have been registered
+    private void checkConvertersByClass() throws Exception {
+        FacesContext fc = FacesContext.getCurrentInstance();
+        Application application = fc.getApplication();
+
+        assertTrue(application.createConverter
+                   (BigDecimal.class) instanceof BigDecimalConverter);
+        assertTrue(application.createConverter
+                   (BigInteger.class) instanceof BigIntegerConverter);
+        assertTrue(application.createConverter
+                   (Boolean.class) instanceof BooleanConverter);
+        assertTrue(application.createConverter
+                   (Byte.class) instanceof ByteConverter);
+        assertTrue(application.createConverter
+                   (Character.class) instanceof CharacterConverter);
+        assertTrue(application.createConverter
+                   (Double.class) instanceof DoubleConverter);
+        assertTrue(application.createConverter
+                   (Float.class) instanceof FloatConverter);
+        assertTrue(application.createConverter
+                   (Integer.class) instanceof IntegerConverter);
+        assertTrue(application.createConverter
+                   (Long.class) instanceof LongConverter);
+        assertTrue(application.createConverter
+                   (Short.class) instanceof ShortConverter);
+    }
+
+    // Check that all required by-id Converters have been registered
+    private void checkConvertersById() throws Exception {
+        FacesContext fc = FacesContext.getCurrentInstance();
+        Application application = fc.getApplication();
+
+        assertTrue(application.createConverter
+                   ("javax.faces.BigDecimal") instanceof BigDecimalConverter);
+        assertTrue(application.createConverter
+                   ("javax.faces.BigInteger") instanceof BigIntegerConverter);
+        assertTrue(application.createConverter
+                   ("javax.faces.Boolean") instanceof BooleanConverter);
+        assertTrue(application.createConverter
+                   ("javax.faces.Byte") instanceof ByteConverter);
+        assertTrue(application.createConverter
+                   ("javax.faces.Character") instanceof CharacterConverter);
+        assertTrue(application.createConverter
+                   ("javax.faces.DateTime") instanceof DateTimeConverter);
+        assertTrue(application.createConverter
+                   ("javax.faces.Double") instanceof DoubleConverter);
+        assertTrue(application.createConverter
+                   ("javax.faces.Float") instanceof FloatConverter);
+        assertTrue(application.createConverter
+                   ("javax.faces.Integer") instanceof IntegerConverter);
+        assertTrue(application.createConverter
+                   ("javax.faces.Long") instanceof LongConverter);
+        assertTrue(application.createConverter
+                   ("javax.faces.Number") instanceof NumberConverter);
+        assertTrue(application.createConverter
+                   ("javax.faces.Short") instanceof ShortConverter);
+    }
+
+    // Check that all required Renderers have been registered
+    private void checkRenderers() throws Exception {
+        RenderKitFactory rkFactory = (RenderKitFactory)
+            FactoryFinder.getFactory(FactoryFinder.RENDER_KIT_FACTORY);
+        RenderKit rk =
+            rkFactory.getRenderKit(null,
+                                   RenderKitFactory.HTML_BASIC_RENDER_KIT);
+
+        assertNotNull(
+            rk.getRenderer("javax.faces.Command", "javax.faces.Button"));
+        assertNotNull(
+            rk.getRenderer("javax.faces.Command", "javax.faces.Link"));
+        assertNotNull(rk.getRenderer("javax.faces.Data", "javax.faces.Table"));
+        assertNotNull(rk.getRenderer("javax.faces.Form", "javax.faces.Form"));
+        assertNotNull(
+            rk.getRenderer("javax.faces.Graphic", "javax.faces.Image"));
+        assertNotNull(
+            rk.getRenderer("javax.faces.Input", "javax.faces.Hidden"));
+        assertNotNull(
+            rk.getRenderer("javax.faces.Input", "javax.faces.Secret"));
+        assertNotNull(rk.getRenderer("javax.faces.Input", "javax.faces.Text"));
+        assertNotNull(
+            rk.getRenderer("javax.faces.Input", "javax.faces.Textarea"));
+        assertNotNull(
+            rk.getRenderer("javax.faces.Message", "javax.faces.Message"));
+        assertNotNull(
+            rk.getRenderer("javax.faces.Messages", "javax.faces.Messages"));
+        assertNotNull(
+            rk.getRenderer("javax.faces.Output", "javax.faces.Format"));
+        assertNotNull(
+            rk.getRenderer("javax.faces.Output", "javax.faces.Label"));
+        assertNotNull(rk.getRenderer("javax.faces.Output", "javax.faces.Link"));
+        assertNotNull(rk.getRenderer("javax.faces.Output", "javax.faces.Text"));
+        assertNotNull(rk.getRenderer("javax.faces.Panel", "javax.faces.Grid"));
+        assertNotNull(rk.getRenderer("javax.faces.Panel", "javax.faces.Group"));
+        assertNotNull(
+            rk.getRenderer("javax.faces.SelectBoolean", "javax.faces.Checkbox"));
+        assertNotNull(
+            rk.getRenderer("javax.faces.SelectMany", "javax.faces.Checkbox"));
+        assertNotNull(
+            rk.getRenderer("javax.faces.SelectMany", "javax.faces.Listbox"));
+        assertNotNull(
+            rk.getRenderer("javax.faces.SelectMany", "javax.faces.Menu"));
+        assertNotNull(
+            rk.getRenderer("javax.faces.SelectOne", "javax.faces.Listbox"));
+        assertNotNull(
+            rk.getRenderer("javax.faces.SelectOne", "javax.faces.Menu"));
+        assertNotNull(
+            rk.getRenderer("javax.faces.SelectOne", "javax.faces.Radio"));
+    }
+
+    // Check that all required Validators have been registered
+    private void checkValidators() throws Exception {
+        FacesContext fc = FacesContext.getCurrentInstance();
+        Application application = fc.getApplication();
+
+        assertTrue(application.createValidator
+                   ("javax.faces.DoubleRange") instanceof DoubleRangeValidator);
+        assertTrue(application.createValidator
+                   ("javax.faces.Length") instanceof LengthValidator);
+        assertTrue(application.createValidator
+                   ("javax.faces.LongRange") instanceof LongRangeValidator);
+    }
+
+    // Check whether embed configuration occurred or did not occur
+    private void checkEmbedConfiguration(boolean should) throws Exception {
+        FacesContext fc = FacesContext.getCurrentInstance();
+        Application application = fc.getApplication();
+
+        RenderKitFactory rkFactory = (RenderKitFactory)
+            FactoryFinder.getFactory(FactoryFinder.RENDER_KIT_FACTORY);
+        RenderKit rk =
+            rkFactory.getRenderKit(null,
+                                   RenderKitFactory.HTML_BASIC_RENDER_KIT);
+
+        if (should) {
+            assertTrue(application.createComponent
+                       ("EmbedComponent") instanceof TestComponent);
+            assertTrue(application.createConverter
+                       ("EmbedConverter") instanceof TestConverter);
+            assertTrue(application.createValidator
+                       ("EmbedValidator") instanceof TestValidator);
+            assertNotNull(rk.getRenderer("Test", "EmbedRenderer"));
+        } else {
+            try {
+                application.createComponent("EmbedComponent");
+                fail("Should have thrown FacesException");
+            } catch (FacesException e) {
+                ; // Expected result
+            }
+            try {
+                application.createConverter("EmbedConverter");
+                fail("Should have thrown FacesException");
+            } catch (FacesException e) {
+                ; // Expected result
+            }
+            try {
+                application.createValidator("EmbedValidator");
+                fail("Should have thrown FacesException");
+            } catch (FacesException e) {
+                ; // Expected result
+            }
+            assertNull(rk.getRenderer("Test", "EmbedRenderer"));
+        }
+
+    }
+
+    // Check whether extra configuration occurred or did not occur
+    private void checkExtraConfiguration(boolean should) throws Exception {
+        FacesContext fc = FacesContext.getCurrentInstance();
+        Application application = fc.getApplication();
+
+        RenderKitFactory rkFactory = (RenderKitFactory)
+            FactoryFinder.getFactory(FactoryFinder.RENDER_KIT_FACTORY);
+        RenderKit rk =
+            rkFactory.getRenderKit(null,
+                                   RenderKitFactory.HTML_BASIC_RENDER_KIT);
+
+        if (should) {
+            assertTrue(application.createComponent
+                       ("ExtraComponent") instanceof TestComponent);
+            assertTrue(application.createConverter
+                       ("ExtraConverter") instanceof TestConverter);
+            assertTrue(application.createValidator
+                       ("ExtraValidator") instanceof TestValidator);
+            assertNotNull(rk.getRenderer("Test", "ExtraRenderer"));
+        } else {
+            try {
+                application.createComponent("ExtraComponent");
+                fail("Should have thrown FacesException");
+            } catch (FacesException e) {
+                ; // Expected result
+            }
+            try {
+                application.createConverter("ExtraConverter");
+                fail("Should have thrown FacesException");
+            } catch (FacesException e) {
+                ; // Expected result
+            }
+            try {
+                application.createValidator("ExtraValidator");
+                fail("Should have thrown FacesException");
+            } catch (FacesException e) {
+                ; // Expected result
+            }
+            assertNull(rk.getRenderer("Test", "ExtraRenderer"));
+        }
+
+    }
+
+    // Check that the default configuration took place
+    private void checkDefaultConfiguration() throws Exception {
+        FacesContext fc = FacesContext.getCurrentInstance();
+        Application application = fc.getApplication();
+
+        RenderKitFactory rkFactory = (RenderKitFactory)
+            FactoryFinder.getFactory(FactoryFinder.RENDER_KIT_FACTORY);
+        RenderKit rk =
+            rkFactory.getRenderKit(null,
+                                   RenderKitFactory.HTML_BASIC_RENDER_KIT);
+
+        assertTrue(application.createComponent
+                   ("DefaultComponent") instanceof TestComponent);
+        assertTrue(application.createConverter
+                   ("DefaultConverter") instanceof TestConverter);
+        assertTrue(application.createValidator
+                   ("DefaultValidator") instanceof TestValidator);
+        assertNotNull(rk.getRenderer("Test", "DefaultRenderer"));
+
+    }
+
+    // Representative sample only
+    private String rendersChildrenFalse[][] = {
+
+    };
+
+    private String rendersChildrenTrue[][] = {
+        {"javax.faces.Command", "javax.faces.Link"},
+        {"javax.faces.Data", "javax.faces.Table"},
+        {"javax.faces.Output", "javax.faces.Link"},
+        {"javax.faces.Panel", "javax.faces.Grid"},
+        {"javax.faces.Panel", "javax.faces.Group"},
+        {"javax.faces.Command", "javax.faces.Button"},
+        {"javax.faces.Form", "javax.faces.Form"}
+    };
+
+
+    private String status="";
+
+    public String getStatus() {
+        return status;
+    }
+}
+
diff --git a/test/agnostic/config/embedConfig/src/main/java/com/sun/faces/test/agnostic/config/embedConfig/TestComponent.java b/test/agnostic/config/embedConfig/src/main/java/com/sun/faces/test/agnostic/config/embedConfig/TestComponent.java
new file mode 100644
index 0000000..f8626a5
--- /dev/null
+++ b/test/agnostic/config/embedConfig/src/main/java/com/sun/faces/test/agnostic/config/embedConfig/TestComponent.java
@@ -0,0 +1,56 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.agnostic.config.embedConfig;
+
+
+import javax.faces.component.UIOutput;
+
+
+// Dummy component that can be instantiated
+
+public class TestComponent extends UIOutput {
+
+
+    public String getFamily() {
+        return "Test";
+    }
+
+}
diff --git a/test/agnostic/config/embedConfig/src/main/java/com/sun/faces/test/agnostic/config/embedConfig/TestConverter.java b/test/agnostic/config/embedConfig/src/main/java/com/sun/faces/test/agnostic/config/embedConfig/TestConverter.java
new file mode 100644
index 0000000..315314b
--- /dev/null
+++ b/test/agnostic/config/embedConfig/src/main/java/com/sun/faces/test/agnostic/config/embedConfig/TestConverter.java
@@ -0,0 +1,52 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.agnostic.config.embedConfig;
+
+
+import javax.faces.convert.IntegerConverter;
+
+
+// Dummy converter that can be instantiated
+
+public class TestConverter extends IntegerConverter {
+
+
+}
diff --git a/test/agnostic/config/embedConfig/src/main/java/com/sun/faces/test/agnostic/config/embedConfig/TestRenderer.java b/test/agnostic/config/embedConfig/src/main/java/com/sun/faces/test/agnostic/config/embedConfig/TestRenderer.java
new file mode 100644
index 0000000..5e51562
--- /dev/null
+++ b/test/agnostic/config/embedConfig/src/main/java/com/sun/faces/test/agnostic/config/embedConfig/TestRenderer.java
@@ -0,0 +1,52 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.agnostic.config.embedConfig;
+
+
+import javax.faces.render.Renderer;
+
+
+// Dummy renderer that can be instantiated
+
+public class TestRenderer extends Renderer {
+
+
+}
diff --git a/test/agnostic/config/embedConfig/src/main/java/com/sun/faces/test/agnostic/config/embedConfig/TestValidator.java b/test/agnostic/config/embedConfig/src/main/java/com/sun/faces/test/agnostic/config/embedConfig/TestValidator.java
new file mode 100644
index 0000000..e3f712b
--- /dev/null
+++ b/test/agnostic/config/embedConfig/src/main/java/com/sun/faces/test/agnostic/config/embedConfig/TestValidator.java
@@ -0,0 +1,52 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.agnostic.config.embedConfig;
+
+
+import javax.faces.validator.LengthValidator;
+
+
+// Dummy converter that can be instantiated
+
+public class TestValidator extends LengthValidator {
+
+
+}
diff --git a/test/agnostic/config/embedConfig/src/main/webapp/WEB-INF/embed-config.xml b/test/agnostic/config/embedConfig/src/main/webapp/WEB-INF/embed-config.xml
new file mode 100644
index 0000000..80795a9
--- /dev/null
+++ b/test/agnostic/config/embedConfig/src/main/webapp/WEB-INF/embed-config.xml
@@ -0,0 +1,77 @@
+<?xml version="1.0"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!--
+     Extra "faces-config.xml" that should NOT be parsed unless
+     implicitly included as a web application class loader resource
+-->
+
+<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd"
+    version="1.2">
+
+  <component>
+    <component-type>EmbedComponent</component-type>
+    <component-class>com.sun.faces.test.agnostic.config.embedConfig.TestComponent</component-class>
+  </component>
+
+  <converter>
+    <converter-id>EmbedConverter</converter-id>
+    <converter-class>com.sun.faces.test.agnostic.config.embedConfig.TestConverter</converter-class>
+  </converter>
+
+  <validator>
+    <validator-id>EmbedValidator</validator-id>
+    <validator-class>com.sun.faces.test.agnostic.config.embedConfig.TestValidator</validator-class>
+  </validator>
+
+  <render-kit>
+    <renderer>
+      <component-family>Test</component-family>
+      <renderer-type>EmbedRenderer</renderer-type>
+      <renderer-class>com.sun.faces.test.agnostic.config.embedConfig.TestRenderer</renderer-class>
+    </renderer>
+  </render-kit>
+
+</faces-config>
diff --git a/test/agnostic/config/embedConfig/src/main/webapp/WEB-INF/extra-config.xml b/test/agnostic/config/embedConfig/src/main/webapp/WEB-INF/extra-config.xml
new file mode 100644
index 0000000..3273cf7
--- /dev/null
+++ b/test/agnostic/config/embedConfig/src/main/webapp/WEB-INF/extra-config.xml
@@ -0,0 +1,77 @@
+<?xml version="1.0"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!--
+     Extra "faces-config.xml" that should NOT be parsed unless
+     explicitly listed in a context initialization parameter.
+-->
+
+<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd"
+    version="1.2">
+
+  <component>
+    <component-type>ExtraComponent</component-type>
+    <component-class>com.sun.faces.test.agnostic.config.embedConfig.TestComponent</component-class>
+  </component>
+
+  <converter>
+    <converter-id>ExtraConverter</converter-id>
+    <converter-class>com.sun.faces.test.agnostic.config.embedConfig.TestConverter</converter-class>
+  </converter>
+
+  <validator>
+    <validator-id>ExtraValidator</validator-id>
+    <validator-class>com.sun.faces.test.agnostic.config.embedConfig.TestValidator</validator-class>
+  </validator>
+
+  <render-kit>
+    <renderer>
+      <component-family>Test</component-family>
+      <renderer-type>ExtraRenderer</renderer-type>
+      <renderer-class>com.sun.faces.test.agnostic.config.embedConfig.TestRenderer</renderer-class>
+    </renderer>
+  </render-kit>
+
+</faces-config>
diff --git a/test/agnostic/config/embedConfig/src/main/webapp/WEB-INF/faces-config.xml b/test/agnostic/config/embedConfig/src/main/webapp/WEB-INF/faces-config.xml
new file mode 100644
index 0000000..ebde48a
--- /dev/null
+++ b/test/agnostic/config/embedConfig/src/main/webapp/WEB-INF/faces-config.xml
@@ -0,0 +1,74 @@
+<?xml version='1.0' encoding='UTF-8'?>
+
+<!--
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ 
+ Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+ 
+ The contents of this file are subject to the terms of either the GNU
+ General Public License Version 2 only ("GPL") or the Common Development
+ and Distribution License("CDDL") (collectively, the "License").  You
+ may not use this file except in compliance with the License. You can obtain
+ a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
+ or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ language governing permissions and limitations under the License.
+ 
+ When distributing the software, include this License Header Notice in each
+ file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
+ Sun designates this particular file as subject to the "Classpath" exception
+ as provided by Sun in the GPL Version 2 section of the License file that
+ accompanied this code.  If applicable, add the following below the License
+ Header, with the fields enclosed by brackets [] replaced by your own
+ identifying information: "Portions Copyrighted [year]
+ [name of copyright owner]"
+ 
+ Contributor(s):
+ 
+ If you wish your version of this file to be governed by only the CDDL or
+ only the GPL Version 2, indicate your decision by adding "[Contributor]
+ elects to include this software in this distribution under the [CDDL or GPL
+ Version 2] license."  If you don't indicate a single choice of license, a
+ recipient has the option to distribute your version of this file under
+ either the CDDL, the GPL Version 2 or to extend the choice of license to
+ its licensees as provided above.  However, if you add GPL Version 2 code
+ and therefore, elected the GPL Version 2 license, then the option applies
+ only if the new code is made subject to such option by the copyright
+ holder.
+-->
+
+<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
+    version="2.0"
+    metadata-complete="true">
+
+  <managed-bean>
+    <managed-bean-name>configFileBean</managed-bean-name>
+    <managed-bean-class>com.sun.faces.test.agnostic.config.embedConfig.ConfigFileBean</managed-bean-class>
+    <managed-bean-scope>session</managed-bean-scope>
+  </managed-bean>
+
+  <component>
+    <component-type>DefaultComponent</component-type>
+    <component-class>com.sun.faces.test.agnostic.config.embedConfig.TestComponent</component-class>
+  </component>
+
+  <converter>
+    <converter-id>DefaultConverter</converter-id>
+    <converter-class>com.sun.faces.test.agnostic.config.embedConfig.TestConverter</converter-class>
+  </converter>
+
+  <validator>
+    <validator-id>DefaultValidator</validator-id>
+    <validator-class>com.sun.faces.test.agnostic.config.embedConfig.TestValidator</validator-class>
+  </validator>
+
+  <render-kit>
+    <renderer>
+      <component-family>Test</component-family>
+      <renderer-type>DefaultRenderer</renderer-type>
+      <renderer-class>com.sun.faces.test.agnostic.config.embedConfig.TestRenderer</renderer-class>
+    </renderer>
+  </render-kit>
+  
+</faces-config>
diff --git a/test/agnostic/config/embedConfig/src/main/webapp/WEB-INF/glassfish-web.xml b/test/agnostic/config/embedConfig/src/main/webapp/WEB-INF/glassfish-web.xml
new file mode 100644
index 0000000..201559e
--- /dev/null
+++ b/test/agnostic/config/embedConfig/src/main/webapp/WEB-INF/glassfish-web.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
+<glassfish-web-app error-url="">
+  <context-root>/test-agnostic-config-embedConfig</context-root>
+  <class-loader delegate="true"/>
+  <jsp-config>
+    <property name="keepgenerated" value="true">
+      <description>Keep a copy of the generated servlet class' java code.</description>
+    </property>
+  </jsp-config>
+</glassfish-web-app>
diff --git a/test/agnostic/config/embedConfig/src/main/webapp/WEB-INF/web.xml b/test/agnostic/config/embedConfig/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..b4a25f2
--- /dev/null
+++ b/test/agnostic/config/embedConfig/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,80 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" 
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>${webapp.projectStage}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
+        <param-value>${webapp.partialStateSaving}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>${webapp.stateSavingMethod}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.CONFIG_FILES</param-name>
+        <param-value>/WEB-INF/embed-config.xml,/WEB-INF/extra-config.xml</param-value>
+    </context-param>
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <session-config>
+        <session-timeout>30</session-timeout>
+    </session-config>
+    <error-page>
+        <exception-type>java.lang.Throwable</exception-type>
+        <location>/error.jsp</location>
+    </error-page>
+</web-app>
diff --git a/test/agnostic/config/embedConfig/src/main/webapp/embedConfig.xhtml b/test/agnostic/config/embedConfig/src/main/webapp/embedConfig.xhtml
new file mode 100644
index 0000000..921b123
--- /dev/null
+++ b/test/agnostic/config/embedConfig/src/main/webapp/embedConfig.xhtml
@@ -0,0 +1,66 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+<f:view contentType="text/html"/>
+<h:head>
+    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
+    <title>Config Basic</title>
+</h:head>
+
+<body>
+    <f:view>
+    <h:form>
+       <h:outputText value="#{configFileBean.title}" />
+       <br/>
+       <br/>
+       #{configFileBean.embed}
+       <h:outputText value="#{configFileBean.status}" />
+    </h:form>
+    </f:view>
+</body>
+</html>
diff --git a/test/agnostic/config/embedConfig/src/main/webapp/error.jsp b/test/agnostic/config/embedConfig/src/main/webapp/error.jsp
new file mode 100644
index 0000000..52d9786
--- /dev/null
+++ b/test/agnostic/config/embedConfig/src/main/webapp/error.jsp
@@ -0,0 +1,56 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<%@ page isErrorPage="true" import="java.io.*" contentType="text/plain"%>
+
+Message:
+<%=exception.getMessage()%>
+
+StackTrace:
+<%
+       StringWriter stringWriter = new StringWriter();
+       PrintWriter printWriter = new PrintWriter(stringWriter);
+       exception.printStackTrace(printWriter);
+       out.println(stringWriter);
+       printWriter.close();
+       stringWriter.close();
+%>
diff --git a/test/agnostic/config/embedConfig/src/test/java/com/sun/faces/test/agnostic/config/embedConfig/ConfigFileIT.java b/test/agnostic/config/embedConfig/src/test/java/com/sun/faces/test/agnostic/config/embedConfig/ConfigFileIT.java
new file mode 100644
index 0000000..af8ddb9
--- /dev/null
+++ b/test/agnostic/config/embedConfig/src/test/java/com/sun/faces/test/agnostic/config/embedConfig/ConfigFileIT.java
@@ -0,0 +1,84 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.agnostic.config.embedConfig;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class ConfigFileIT {
+    
+    /**
+     * Stores the web URL.
+     */
+    private String webUrl;
+    /**
+     * Stores the web client.
+     */
+    private WebClient webClient;
+
+    /**
+     * Setup before testing.
+     */
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+        webClient.setThrowExceptionOnFailingStatusCode(true);
+    }
+
+    /**
+     * Tear down after testing.
+     */
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testEmbed() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "/faces/embedConfig.xhtml");
+        assertTrue(page.asText().contains("SUCCESS"));
+    }
+}
diff --git a/test/agnostic/config/extraConfig/nbactions.xml b/test/agnostic/config/extraConfig/nbactions.xml
new file mode 100644
index 0000000..c8cfb29
--- /dev/null
+++ b/test/agnostic/config/extraConfig/nbactions.xml
@@ -0,0 +1,163 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--><actions>
+        <action>
+            <actionName>debug.test.single</actionName>
+            <goals>
+                <goal>test-compile</goal>
+                <goal>surefire:test</goal>
+            </goals>
+            <properties>
+                <test>${packageClassName}</test>
+                <forkMode>once</forkMode>
+                <maven.surefire.debug>-Xdebug -Xrunjdwp:transport=dt_socket,server=n,address=${jpda.address}</maven.surefire.debug>
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                <jpda.listen>true</jpda.listen>
+                <project.build.finalName>test-agnostic-config-extraConfig</project.build.finalName>
+                <webapp.projectStage>Development</webapp.projectStage>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                <integration.serverPort>8080</integration.serverPort>
+                <integration.serverName>localhost</integration.serverName>
+                <integration.url>http://localhost:8080/test-agnostic-config-extraConfig/</integration.url>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+            </properties>
+        </action>
+        <action>
+            <actionName>test.single</actionName>
+            <goals>
+                <goal>test-compile</goal>
+                <goal>surefire:test</goal>
+            </goals>
+            <properties>
+                <project.build.finalName>test-agnostic-config-extraConfig</project.build.finalName>
+                <integration.serverPort>8080</integration.serverPort>
+                <integration.serverName>localhost</integration.serverName>
+                <integration.url>http://localhost:8080/test-agnostic-config-extraConfig/</integration.url>
+                <test>${packageClassName}</test>
+            </properties>
+        </action>
+        <action>
+            <actionName>build</actionName>
+            <goals>
+                <goal>install</goal>
+            </goals>
+            <properties>
+                <webapp.projectStage>Development</webapp.projectStage>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+            </properties>
+        </action>
+        <action>
+            <actionName>rebuild</actionName>
+            <goals>
+                <goal>clean</goal>
+                <goal>install</goal>
+            </goals>
+            <properties>
+                
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                
+                <webapp.projectStage>Development</webapp.projectStage>
+                
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                
+            </properties>
+        </action>
+        <action>
+            <actionName>build-with-dependencies</actionName>
+            <reactor>also-make</reactor>
+            <goals>
+                <goal>install</goal>
+            </goals>
+            <properties>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                <webapp.projectStage>Development</webapp.projectStage>
+            </properties>
+        </action>
+        <action>
+            <actionName>run</actionName>
+            <goals>
+                <goal>package</goal>
+            </goals>
+            <properties>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                <netbeans.deploy>true</netbeans.deploy>
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                <webapp.projectStage>Development</webapp.projectStage>
+            </properties>
+        </action>
+        <action>
+            <actionName>run.single.deploy</actionName>
+            <goals>
+                <goal>package</goal>
+            </goals>
+            <properties>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                <netbeans.deploy>true</netbeans.deploy>
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                <netbeans.deploy.clientUrlPart>${webpagePath}</netbeans.deploy.clientUrlPart>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                <webapp.projectStage>Development</webapp.projectStage>
+            </properties>
+        </action>
+        <action>
+            <actionName>debug.single.deploy</actionName>
+            <goals>
+                <goal>package</goal>
+            </goals>
+            <properties>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                <netbeans.deploy>true</netbeans.deploy>
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                <netbeans.deploy.debugmode>true</netbeans.deploy.debugmode>
+                <netbeans.deploy.clientUrlPart>${webpagePath}</netbeans.deploy.clientUrlPart>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                <webapp.projectStage>Development</webapp.projectStage>
+            </properties>
+        </action>
+    </actions>
diff --git a/test/agnostic/config/extraConfig/pom.xml b/test/agnostic/config/extraConfig/pom.xml
new file mode 100644
index 0000000..786385d
--- /dev/null
+++ b/test/agnostic/config/extraConfig/pom.xml
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.agnostic.config</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.agnostic.config</groupId>
+    <artifactId>extraConfig</artifactId>
+    <packaging>war</packaging>
+    <name>Mojarra ${project.version} - Test - Agnostic - Config - Extra Config</name>
+    <build>
+        <finalName>test-agnostic-config-extraConfig</finalName>
+    </build>
+    <dependencies>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <version>4.11</version>
+            <scope>compile</scope>
+        </dependency>
+    </dependencies>
+    <properties>
+        <netbeans.hint.deploy.server>gfv3ee6</netbeans.hint.deploy.server>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/test/agnostic/config/extraConfig/src/main/java/com/sun/faces/test/agnostic/config/extraConfig/ConfigFileBean.java b/test/agnostic/config/extraConfig/src/main/java/com/sun/faces/test/agnostic/config/extraConfig/ConfigFileBean.java
new file mode 100644
index 0000000..33caeb9
--- /dev/null
+++ b/test/agnostic/config/extraConfig/src/main/java/com/sun/faces/test/agnostic/config/extraConfig/ConfigFileBean.java
@@ -0,0 +1,538 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.agnostic.config.extraConfig;
+
+import java.math.BigDecimal;
+import java.math.BigInteger;
+
+import javax.faces.FacesException;
+import javax.faces.FactoryFinder;
+import javax.faces.application.Application;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.SessionScoped;
+import javax.faces.component.UIColumn;
+import javax.faces.component.UICommand;
+import javax.faces.component.UIData;
+import javax.faces.component.UIForm;
+import javax.faces.component.UIGraphic;
+import javax.faces.component.UIInput;
+import javax.faces.component.UIMessage;
+import javax.faces.component.UIMessages;
+import javax.faces.component.UINamingContainer;
+import javax.faces.component.UIOutput;
+import javax.faces.component.UIPanel;
+import javax.faces.component.UIParameter;
+import javax.faces.component.UISelectBoolean;
+import javax.faces.component.UISelectItem;
+import javax.faces.component.UISelectItems;
+import javax.faces.component.UISelectMany;
+import javax.faces.component.UISelectOne;
+import javax.faces.component.html.HtmlCommandButton;
+import javax.faces.component.html.HtmlCommandLink;
+import javax.faces.component.html.HtmlDataTable;
+import javax.faces.component.html.HtmlForm;
+import javax.faces.component.html.HtmlGraphicImage;
+import javax.faces.component.html.HtmlInputHidden;
+import javax.faces.component.html.HtmlInputSecret;
+import javax.faces.component.html.HtmlInputText;
+import javax.faces.component.html.HtmlInputTextarea;
+import javax.faces.component.html.HtmlMessage;
+import javax.faces.component.html.HtmlMessages;
+import javax.faces.component.html.HtmlOutputFormat;
+import javax.faces.component.html.HtmlOutputLabel;
+import javax.faces.component.html.HtmlOutputLink;
+import javax.faces.component.html.HtmlOutputText;
+import javax.faces.component.html.HtmlPanelGrid;
+import javax.faces.component.html.HtmlPanelGroup;
+import javax.faces.component.html.HtmlSelectBooleanCheckbox;
+import javax.faces.component.html.HtmlSelectManyCheckbox;
+import javax.faces.component.html.HtmlSelectManyListbox;
+import javax.faces.component.html.HtmlSelectManyMenu;
+import javax.faces.component.html.HtmlSelectOneListbox;
+import javax.faces.component.html.HtmlSelectOneMenu;
+import javax.faces.component.html.HtmlSelectOneRadio;
+import javax.faces.convert.BigDecimalConverter;
+import javax.faces.convert.BigIntegerConverter;
+import javax.faces.convert.BooleanConverter;
+import javax.faces.convert.ByteConverter;
+import javax.faces.convert.CharacterConverter;
+import javax.faces.convert.DateTimeConverter;
+import javax.faces.convert.DoubleConverter;
+import javax.faces.convert.FloatConverter;
+import javax.faces.convert.IntegerConverter;
+import javax.faces.convert.LongConverter;
+import javax.faces.convert.NumberConverter;
+import javax.faces.convert.ShortConverter;
+import javax.faces.render.RenderKit;
+import javax.faces.render.RenderKitFactory;
+import javax.faces.render.Renderer;
+import javax.faces.validator.DoubleRangeValidator;
+import javax.faces.validator.LengthValidator;
+import javax.faces.validator.LongRangeValidator;
+
+
+import javax.faces.context.FacesContext;
+import javax.el.ExpressionFactory;
+import javax.faces.el.ValueBinding;
+import javax.el.ValueExpression;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import static org.junit.Assert.*;
+
+ at ManagedBean
+ at SessionScoped
+public class ConfigFileBean {
+
+    private String title = "Test Config File";
+    public String getTitle() {
+        return title; 
+    }
+
+    public ConfigFileBean() {
+    }
+
+    public String getExtra() throws Exception {
+        // Validate standard configuration
+        checkComponentsGeneric();
+        checkComponentsHtml();
+        checkConvertersByClass();
+        checkConvertersById();
+        checkRenderers();
+        checkValidators();
+
+        // Validate what was actually configured
+        checkDefaultConfiguration();
+        checkExtraConfiguration(true);
+        checkEmbedConfiguration(true);
+
+        return "SUCCESS";
+    }
+
+    // Check that all of the required generic components have been registered
+    private void checkComponentsGeneric() throws Exception {
+        FacesContext fc = FacesContext.getCurrentInstance();
+        Application application = fc.getApplication();
+
+        assertTrue(application.createComponent
+                   ("javax.faces.Column") instanceof UIColumn);
+        assertTrue(application.createComponent
+                   (UIColumn.COMPONENT_TYPE) instanceof UIColumn);
+        assertTrue(application.createComponent
+                   ("javax.faces.Command") instanceof UICommand);
+        assertTrue(application.createComponent
+                   (UICommand.COMPONENT_TYPE) instanceof UICommand);
+        assertTrue(application.createComponent
+                   ("javax.faces.Data") instanceof UIData);
+        assertTrue(application.createComponent
+                   (UIData.COMPONENT_TYPE) instanceof UIData);
+        assertTrue(application.createComponent
+                   ("javax.faces.Form") instanceof UIForm);
+        assertTrue(application.createComponent
+                   (UIForm.COMPONENT_TYPE) instanceof UIForm);
+        assertTrue(application.createComponent
+                   ("javax.faces.Graphic") instanceof UIGraphic);
+        assertTrue(application.createComponent
+                   (UIGraphic.COMPONENT_TYPE) instanceof UIGraphic);
+        assertTrue(application.createComponent
+                   ("javax.faces.Input") instanceof UIInput);
+        assertTrue(application.createComponent
+                   (UIInput.COMPONENT_TYPE) instanceof UIInput);
+        assertTrue(application.createComponent
+                   ("javax.faces.Message") instanceof UIMessage);
+        assertTrue(application.createComponent
+                   (UIMessage.COMPONENT_TYPE) instanceof UIMessage);
+        assertTrue(application.createComponent
+                   ("javax.faces.Messages") instanceof UIMessages);
+        assertTrue(application.createComponent
+                   (UIMessages.COMPONENT_TYPE) instanceof UIMessages);
+        assertTrue(application.createComponent
+                   ("javax.faces.NamingContainer") instanceof UINamingContainer);
+        assertTrue(application.createComponent
+                   (UINamingContainer.COMPONENT_TYPE) instanceof UINamingContainer);
+        assertTrue(application.createComponent
+                   ("javax.faces.Output") instanceof UIOutput);
+        assertTrue(application.createComponent
+                   (UIOutput.COMPONENT_TYPE) instanceof UIOutput);
+        assertTrue(application.createComponent
+                   ("javax.faces.Panel") instanceof UIPanel);
+        assertTrue(application.createComponent
+                   (UIPanel.COMPONENT_TYPE) instanceof UIPanel);
+        assertTrue(application.createComponent
+                   ("javax.faces.Parameter") instanceof UIParameter);
+        assertTrue(application.createComponent
+                   (UIParameter.COMPONENT_TYPE) instanceof UIParameter);
+        assertTrue(application.createComponent
+                   ("javax.faces.SelectBoolean") instanceof UISelectBoolean);
+        assertTrue(application.createComponent
+                   (UISelectBoolean.COMPONENT_TYPE) instanceof UISelectBoolean);
+        assertTrue(application.createComponent
+                   ("javax.faces.SelectItem") instanceof UISelectItem);
+        assertTrue(application.createComponent
+                   (UISelectItem.COMPONENT_TYPE) instanceof UISelectItem);
+        assertTrue(application.createComponent
+                   ("javax.faces.SelectItems") instanceof UISelectItems);
+        assertTrue(application.createComponent
+                   (UISelectItems.COMPONENT_TYPE) instanceof UISelectItems);
+        assertTrue(application.createComponent
+                   ("javax.faces.SelectMany") instanceof UISelectMany);
+        assertTrue(application.createComponent
+                   (UISelectMany.COMPONENT_TYPE) instanceof UISelectMany);
+        assertTrue(application.createComponent
+                   ("javax.faces.SelectOne") instanceof UISelectOne);
+        assertTrue(application.createComponent
+                   (UISelectOne.COMPONENT_TYPE) instanceof UISelectOne);
+    }
+
+    // Check that all of the required HTML components have been registered
+    private void checkComponentsHtml() throws Exception {
+        FacesContext fc = FacesContext.getCurrentInstance();
+        Application application = fc.getApplication();
+
+        assertTrue(application.createComponent
+                   ("javax.faces.HtmlCommandButton") instanceof HtmlCommandButton);
+        assertTrue(application.createComponent
+                   ("javax.faces.HtmlCommandLink") instanceof HtmlCommandLink);
+        assertTrue(application.createComponent
+                   ("javax.faces.HtmlDataTable") instanceof HtmlDataTable);
+        assertTrue(application.createComponent
+                   ("javax.faces.HtmlForm") instanceof HtmlForm);
+        assertTrue(application.createComponent
+                   ("javax.faces.HtmlGraphicImage") instanceof HtmlGraphicImage);
+        assertTrue(application.createComponent
+                   ("javax.faces.HtmlInputHidden") instanceof HtmlInputHidden);
+        assertTrue(application.createComponent
+                   ("javax.faces.HtmlInputSecret") instanceof HtmlInputSecret);
+        assertTrue(application.createComponent
+                   ("javax.faces.HtmlInputText") instanceof HtmlInputText);
+        assertTrue(application.createComponent
+                   ("javax.faces.HtmlInputTextarea") instanceof HtmlInputTextarea);
+        assertTrue(application.createComponent
+                   ("javax.faces.HtmlMessage") instanceof HtmlMessage);
+        assertTrue(application.createComponent
+                   ("javax.faces.HtmlMessages") instanceof HtmlMessages);
+        assertTrue(application.createComponent
+                   ("javax.faces.HtmlOutputFormat") instanceof HtmlOutputFormat);
+        assertTrue(application.createComponent
+                   ("javax.faces.HtmlOutputLabel") instanceof HtmlOutputLabel);
+        assertTrue(application.createComponent
+                   ("javax.faces.HtmlOutputLink") instanceof HtmlOutputLink);
+        assertTrue(application.createComponent
+                   ("javax.faces.HtmlOutputText") instanceof HtmlOutputText);
+        assertTrue(application.createComponent
+                   ("javax.faces.HtmlPanelGrid") instanceof HtmlPanelGrid);
+        assertTrue(application.createComponent
+                   ("javax.faces.HtmlPanelGroup") instanceof HtmlPanelGroup);
+        assertTrue(
+            application.createComponent
+            ("javax.faces.HtmlSelectBooleanCheckbox") instanceof HtmlSelectBooleanCheckbox);
+        assertTrue(
+            application.createComponent
+            ("javax.faces.HtmlSelectManyCheckbox") instanceof HtmlSelectManyCheckbox);
+        assertTrue(
+            application.createComponent
+            ("javax.faces.HtmlSelectManyListbox") instanceof HtmlSelectManyListbox);
+        assertTrue(
+            application.createComponent
+            ("javax.faces.HtmlSelectManyMenu") instanceof HtmlSelectManyMenu);
+        assertTrue(
+            application.createComponent
+            ("javax.faces.HtmlSelectOneListbox") instanceof HtmlSelectOneListbox);
+        assertTrue(application.createComponent
+                   ("javax.faces.HtmlSelectOneMenu") instanceof HtmlSelectOneMenu);
+        assertTrue(
+            application.createComponent
+            ("javax.faces.HtmlSelectOneRadio") instanceof HtmlSelectOneRadio);
+    }
+
+    // Check that all required by-class Converters have been registered
+    private void checkConvertersByClass() throws Exception {
+        FacesContext fc = FacesContext.getCurrentInstance();
+        Application application = fc.getApplication();
+
+        assertTrue(application.createConverter
+                   (BigDecimal.class) instanceof BigDecimalConverter);
+        assertTrue(application.createConverter
+                   (BigInteger.class) instanceof BigIntegerConverter);
+        assertTrue(application.createConverter
+                   (Boolean.class) instanceof BooleanConverter);
+        assertTrue(application.createConverter
+                   (Byte.class) instanceof ByteConverter);
+        assertTrue(application.createConverter
+                   (Character.class) instanceof CharacterConverter);
+        assertTrue(application.createConverter
+                   (Double.class) instanceof DoubleConverter);
+        assertTrue(application.createConverter
+                   (Float.class) instanceof FloatConverter);
+        assertTrue(application.createConverter
+                   (Integer.class) instanceof IntegerConverter);
+        assertTrue(application.createConverter
+                   (Long.class) instanceof LongConverter);
+        assertTrue(application.createConverter
+                   (Short.class) instanceof ShortConverter);
+    }
+
+    // Check that all required by-id Converters have been registered
+    private void checkConvertersById() throws Exception {
+        FacesContext fc = FacesContext.getCurrentInstance();
+        Application application = fc.getApplication();
+
+        assertTrue(application.createConverter
+                   ("javax.faces.BigDecimal") instanceof BigDecimalConverter);
+        assertTrue(application.createConverter
+                   ("javax.faces.BigInteger") instanceof BigIntegerConverter);
+        assertTrue(application.createConverter
+                   ("javax.faces.Boolean") instanceof BooleanConverter);
+        assertTrue(application.createConverter
+                   ("javax.faces.Byte") instanceof ByteConverter);
+        assertTrue(application.createConverter
+                   ("javax.faces.Character") instanceof CharacterConverter);
+        assertTrue(application.createConverter
+                   ("javax.faces.DateTime") instanceof DateTimeConverter);
+        assertTrue(application.createConverter
+                   ("javax.faces.Double") instanceof DoubleConverter);
+        assertTrue(application.createConverter
+                   ("javax.faces.Float") instanceof FloatConverter);
+        assertTrue(application.createConverter
+                   ("javax.faces.Integer") instanceof IntegerConverter);
+        assertTrue(application.createConverter
+                   ("javax.faces.Long") instanceof LongConverter);
+        assertTrue(application.createConverter
+                   ("javax.faces.Number") instanceof NumberConverter);
+        assertTrue(application.createConverter
+                   ("javax.faces.Short") instanceof ShortConverter);
+    }
+
+    // Check that all required Renderers have been registered
+    private void checkRenderers() throws Exception {
+        RenderKitFactory rkFactory = (RenderKitFactory)
+            FactoryFinder.getFactory(FactoryFinder.RENDER_KIT_FACTORY);
+        RenderKit rk =
+            rkFactory.getRenderKit(null,
+                                   RenderKitFactory.HTML_BASIC_RENDER_KIT);
+
+        assertNotNull(
+            rk.getRenderer("javax.faces.Command", "javax.faces.Button"));
+        assertNotNull(
+            rk.getRenderer("javax.faces.Command", "javax.faces.Link"));
+        assertNotNull(rk.getRenderer("javax.faces.Data", "javax.faces.Table"));
+        assertNotNull(rk.getRenderer("javax.faces.Form", "javax.faces.Form"));
+        assertNotNull(
+            rk.getRenderer("javax.faces.Graphic", "javax.faces.Image"));
+        assertNotNull(
+            rk.getRenderer("javax.faces.Input", "javax.faces.Hidden"));
+        assertNotNull(
+            rk.getRenderer("javax.faces.Input", "javax.faces.Secret"));
+        assertNotNull(rk.getRenderer("javax.faces.Input", "javax.faces.Text"));
+        assertNotNull(
+            rk.getRenderer("javax.faces.Input", "javax.faces.Textarea"));
+        assertNotNull(
+            rk.getRenderer("javax.faces.Message", "javax.faces.Message"));
+        assertNotNull(
+            rk.getRenderer("javax.faces.Messages", "javax.faces.Messages"));
+        assertNotNull(
+            rk.getRenderer("javax.faces.Output", "javax.faces.Format"));
+        assertNotNull(
+            rk.getRenderer("javax.faces.Output", "javax.faces.Label"));
+        assertNotNull(rk.getRenderer("javax.faces.Output", "javax.faces.Link"));
+        assertNotNull(rk.getRenderer("javax.faces.Output", "javax.faces.Text"));
+        assertNotNull(rk.getRenderer("javax.faces.Panel", "javax.faces.Grid"));
+        assertNotNull(rk.getRenderer("javax.faces.Panel", "javax.faces.Group"));
+        assertNotNull(
+            rk.getRenderer("javax.faces.SelectBoolean", "javax.faces.Checkbox"));
+        assertNotNull(
+            rk.getRenderer("javax.faces.SelectMany", "javax.faces.Checkbox"));
+        assertNotNull(
+            rk.getRenderer("javax.faces.SelectMany", "javax.faces.Listbox"));
+        assertNotNull(
+            rk.getRenderer("javax.faces.SelectMany", "javax.faces.Menu"));
+        assertNotNull(
+            rk.getRenderer("javax.faces.SelectOne", "javax.faces.Listbox"));
+        assertNotNull(
+            rk.getRenderer("javax.faces.SelectOne", "javax.faces.Menu"));
+        assertNotNull(
+            rk.getRenderer("javax.faces.SelectOne", "javax.faces.Radio"));
+    }
+
+    // Check that all required Validators have been registered
+    private void checkValidators() throws Exception {
+        FacesContext fc = FacesContext.getCurrentInstance();
+        Application application = fc.getApplication();
+
+        assertTrue(application.createValidator
+                   ("javax.faces.DoubleRange") instanceof DoubleRangeValidator);
+        assertTrue(application.createValidator
+                   ("javax.faces.Length") instanceof LengthValidator);
+        assertTrue(application.createValidator
+                   ("javax.faces.LongRange") instanceof LongRangeValidator);
+    }
+
+    // Check whether embed configuration occurred or did not occur
+    private void checkEmbedConfiguration(boolean should) throws Exception {
+        FacesContext fc = FacesContext.getCurrentInstance();
+        Application application = fc.getApplication();
+
+        RenderKitFactory rkFactory = (RenderKitFactory)
+            FactoryFinder.getFactory(FactoryFinder.RENDER_KIT_FACTORY);
+        RenderKit rk =
+            rkFactory.getRenderKit(null,
+                                   RenderKitFactory.HTML_BASIC_RENDER_KIT);
+
+        if (should) {
+            assertTrue(application.createComponent
+                       ("EmbedComponent") instanceof TestComponent);
+            assertTrue(application.createConverter
+                       ("EmbedConverter") instanceof TestConverter);
+            assertTrue(application.createValidator
+                       ("EmbedValidator") instanceof TestValidator);
+            assertNotNull(rk.getRenderer("Test", "EmbedRenderer"));
+        } else {
+            try {
+                application.createComponent("EmbedComponent");
+                fail("Should have thrown FacesException");
+            } catch (FacesException e) {
+                ; // Expected result
+            }
+            try {
+                application.createConverter("EmbedConverter");
+                fail("Should have thrown FacesException");
+            } catch (FacesException e) {
+                ; // Expected result
+            }
+            try {
+                application.createValidator("EmbedValidator");
+                fail("Should have thrown FacesException");
+            } catch (FacesException e) {
+                ; // Expected result
+            }
+            assertNull(rk.getRenderer("Test", "EmbedRenderer"));
+        }
+
+    }
+
+    // Check whether extra configuration occurred or did not occur
+    private void checkExtraConfiguration(boolean should) throws Exception {
+        FacesContext fc = FacesContext.getCurrentInstance();
+        Application application = fc.getApplication();
+
+        RenderKitFactory rkFactory = (RenderKitFactory)
+            FactoryFinder.getFactory(FactoryFinder.RENDER_KIT_FACTORY);
+        RenderKit rk =
+            rkFactory.getRenderKit(null,
+                                   RenderKitFactory.HTML_BASIC_RENDER_KIT);
+
+        if (should) {
+            assertTrue(application.createComponent
+                       ("ExtraComponent") instanceof TestComponent);
+            assertTrue(application.createConverter
+                       ("ExtraConverter") instanceof TestConverter);
+            assertTrue(application.createValidator
+                       ("ExtraValidator") instanceof TestValidator);
+            assertNotNull(rk.getRenderer("Test", "ExtraRenderer"));
+        } else {
+            try {
+                application.createComponent("ExtraComponent");
+                fail("Should have thrown FacesException");
+            } catch (FacesException e) {
+                ; // Expected result
+            }
+            try {
+                application.createConverter("ExtraConverter");
+                fail("Should have thrown FacesException");
+            } catch (FacesException e) {
+                ; // Expected result
+            }
+            try {
+                application.createValidator("ExtraValidator");
+                fail("Should have thrown FacesException");
+            } catch (FacesException e) {
+                ; // Expected result
+            }
+            assertNull(rk.getRenderer("Test", "ExtraRenderer"));
+        }
+
+    }
+
+    // Check that the default configuration took place
+    private void checkDefaultConfiguration() throws Exception {
+        FacesContext fc = FacesContext.getCurrentInstance();
+        Application application = fc.getApplication();
+
+        RenderKitFactory rkFactory = (RenderKitFactory)
+            FactoryFinder.getFactory(FactoryFinder.RENDER_KIT_FACTORY);
+        RenderKit rk =
+            rkFactory.getRenderKit(null,
+                                   RenderKitFactory.HTML_BASIC_RENDER_KIT);
+
+        assertTrue(application.createComponent
+                   ("DefaultComponent") instanceof TestComponent);
+        assertTrue(application.createConverter
+                   ("DefaultConverter") instanceof TestConverter);
+        assertTrue(application.createValidator
+                   ("DefaultValidator") instanceof TestValidator);
+        assertNotNull(rk.getRenderer("Test", "DefaultRenderer"));
+
+    }
+
+    // Representative sample only
+    private String rendersChildrenFalse[][] = {
+
+    };
+
+    private String rendersChildrenTrue[][] = {
+        {"javax.faces.Command", "javax.faces.Link"},
+        {"javax.faces.Data", "javax.faces.Table"},
+        {"javax.faces.Output", "javax.faces.Link"},
+        {"javax.faces.Panel", "javax.faces.Grid"},
+        {"javax.faces.Panel", "javax.faces.Group"},
+        {"javax.faces.Command", "javax.faces.Button"},
+        {"javax.faces.Form", "javax.faces.Form"}
+    };
+
+
+    private String status="";
+
+    public String getStatus() {
+        return status;
+    }
+}
+
diff --git a/test/agnostic/config/extraConfig/src/main/java/com/sun/faces/test/agnostic/config/extraConfig/TestComponent.java b/test/agnostic/config/extraConfig/src/main/java/com/sun/faces/test/agnostic/config/extraConfig/TestComponent.java
new file mode 100644
index 0000000..12360f6
--- /dev/null
+++ b/test/agnostic/config/extraConfig/src/main/java/com/sun/faces/test/agnostic/config/extraConfig/TestComponent.java
@@ -0,0 +1,56 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.agnostic.config.extraConfig;
+
+
+import javax.faces.component.UIOutput;
+
+
+// Dummy component that can be instantiated
+
+public class TestComponent extends UIOutput {
+
+
+    public String getFamily() {
+        return "Test";
+    }
+
+}
diff --git a/test/agnostic/config/extraConfig/src/main/java/com/sun/faces/test/agnostic/config/extraConfig/TestConverter.java b/test/agnostic/config/extraConfig/src/main/java/com/sun/faces/test/agnostic/config/extraConfig/TestConverter.java
new file mode 100644
index 0000000..5fb1a46
--- /dev/null
+++ b/test/agnostic/config/extraConfig/src/main/java/com/sun/faces/test/agnostic/config/extraConfig/TestConverter.java
@@ -0,0 +1,52 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.agnostic.config.extraConfig;
+
+
+import javax.faces.convert.IntegerConverter;
+
+
+// Dummy converter that can be instantiated
+
+public class TestConverter extends IntegerConverter {
+
+
+}
diff --git a/test/agnostic/config/extraConfig/src/main/java/com/sun/faces/test/agnostic/config/extraConfig/TestRenderer.java b/test/agnostic/config/extraConfig/src/main/java/com/sun/faces/test/agnostic/config/extraConfig/TestRenderer.java
new file mode 100644
index 0000000..aa16cea
--- /dev/null
+++ b/test/agnostic/config/extraConfig/src/main/java/com/sun/faces/test/agnostic/config/extraConfig/TestRenderer.java
@@ -0,0 +1,52 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.agnostic.config.extraConfig;
+
+
+import javax.faces.render.Renderer;
+
+
+// Dummy renderer that can be instantiated
+
+public class TestRenderer extends Renderer {
+
+
+}
diff --git a/test/agnostic/config/extraConfig/src/main/java/com/sun/faces/test/agnostic/config/extraConfig/TestValidator.java b/test/agnostic/config/extraConfig/src/main/java/com/sun/faces/test/agnostic/config/extraConfig/TestValidator.java
new file mode 100644
index 0000000..ff1e5a5
--- /dev/null
+++ b/test/agnostic/config/extraConfig/src/main/java/com/sun/faces/test/agnostic/config/extraConfig/TestValidator.java
@@ -0,0 +1,52 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.agnostic.config.extraConfig;
+
+
+import javax.faces.validator.LengthValidator;
+
+
+// Dummy converter that can be instantiated
+
+public class TestValidator extends LengthValidator {
+
+
+}
diff --git a/test/agnostic/config/extraConfig/src/main/webapp/WEB-INF/classes/META-INF/faces-config.xml b/test/agnostic/config/extraConfig/src/main/webapp/WEB-INF/classes/META-INF/faces-config.xml
new file mode 100644
index 0000000..955ac69
--- /dev/null
+++ b/test/agnostic/config/extraConfig/src/main/webapp/WEB-INF/classes/META-INF/faces-config.xml
@@ -0,0 +1,72 @@
+<?xml version="1.0"?>
+
+<!--
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ 
+ Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+ 
+ The contents of this file are subject to the terms of either the GNU
+ General Public License Version 2 only ("GPL") or the Common Development
+ and Distribution License("CDDL") (collectively, the "License").  You
+ may not use this file except in compliance with the License. You can obtain
+ a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
+ or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ language governing permissions and limitations under the License.
+ 
+ When distributing the software, include this License Header Notice in each
+ file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
+ Sun designates this particular file as subject to the "Classpath" exception
+ as provided by Sun in the GPL Version 2 section of the License file that
+ accompanied this code.  If applicable, add the following below the License
+ Header, with the fields enclosed by brackets [] replaced by your own
+ identifying information: "Portions Copyrighted [year]
+ [name of copyright owner]"
+ 
+ Contributor(s):
+ 
+ If you wish your version of this file to be governed by only the CDDL or
+ only the GPL Version 2, indicate your decision by adding "[Contributor]
+ elects to include this software in this distribution under the [CDDL or GPL
+ Version 2] license."  If you don't indicate a single choice of license, a
+ recipient has the option to distribute your version of this file under
+ either the CDDL, the GPL Version 2 or to extend the choice of license to
+ its licensees as provided above.  However, if you add GPL Version 2 code
+ and therefore, elected the GPL Version 2 license, then the option applies
+ only if the new code is made subject to such option by the copyright
+ holder.
+-->
+
+<!--
+     Extra "faces-config.xml" that should NOT be parsed unless
+     implicitly included as a web application class loader resource
+-->
+
+<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd"
+    version="1.2">
+
+  <component>
+    <component-type>EmbedComponent</component-type>
+    <component-class>com.sun.faces.test.agnostic.config.extraConfig.TestComponent</component-class>
+  </component>
+
+  <converter>
+    <converter-id>EmbedConverter</converter-id>
+    <converter-class>com.sun.faces.test.agnostic.config.extraConfig.TestConverter</converter-class>
+  </converter>
+
+  <validator>
+    <validator-id>EmbedValidator</validator-id>
+    <validator-class>com.sun.faces.test.agnostic.config.extraConfig.TestValidator</validator-class>
+  </validator>
+
+  <render-kit>
+    <renderer>
+      <component-family>Test</component-family>
+      <renderer-type>EmbedRenderer</renderer-type>
+      <renderer-class>com.sun.faces.test.agnostic.config.extraConfig.TestRenderer</renderer-class>
+    </renderer>
+  </render-kit>
+
+</faces-config>
diff --git a/test/agnostic/config/extraConfig/src/main/webapp/WEB-INF/extra-config.xml b/test/agnostic/config/extraConfig/src/main/webapp/WEB-INF/extra-config.xml
new file mode 100644
index 0000000..1aefca8
--- /dev/null
+++ b/test/agnostic/config/extraConfig/src/main/webapp/WEB-INF/extra-config.xml
@@ -0,0 +1,77 @@
+<?xml version="1.0"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!--
+     Extra "faces-config.xml" that should NOT be parsed unless
+     explicitly listed in a context initialization parameter.
+-->
+
+<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd"
+    version="1.2">
+
+  <component>
+    <component-type>ExtraComponent</component-type>
+    <component-class>com.sun.faces.test.agnostic.config.extraConfig.TestComponent</component-class>
+  </component>
+
+  <converter>
+    <converter-id>ExtraConverter</converter-id>
+    <converter-class>com.sun.faces.test.agnostic.config.extraConfig.TestConverter</converter-class>
+  </converter>
+
+  <validator>
+    <validator-id>ExtraValidator</validator-id>
+    <validator-class>com.sun.faces.test.agnostic.config.extraConfig.TestValidator</validator-class>
+  </validator>
+
+  <render-kit>
+    <renderer>
+      <component-family>Test</component-family>
+      <renderer-type>ExtraRenderer</renderer-type>
+      <renderer-class>com.sun.faces.test.agnostic.config.extraConfig.TestRenderer</renderer-class>
+    </renderer>
+  </render-kit>
+
+</faces-config>
diff --git a/test/agnostic/config/extraConfig/src/main/webapp/WEB-INF/faces-config.xml b/test/agnostic/config/extraConfig/src/main/webapp/WEB-INF/faces-config.xml
new file mode 100644
index 0000000..1492568
--- /dev/null
+++ b/test/agnostic/config/extraConfig/src/main/webapp/WEB-INF/faces-config.xml
@@ -0,0 +1,74 @@
+<?xml version='1.0' encoding='UTF-8'?>
+
+<!--
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ 
+ Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+ 
+ The contents of this file are subject to the terms of either the GNU
+ General Public License Version 2 only ("GPL") or the Common Development
+ and Distribution License("CDDL") (collectively, the "License").  You
+ may not use this file except in compliance with the License. You can obtain
+ a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
+ or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ language governing permissions and limitations under the License.
+ 
+ When distributing the software, include this License Header Notice in each
+ file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
+ Sun designates this particular file as subject to the "Classpath" exception
+ as provided by Sun in the GPL Version 2 section of the License file that
+ accompanied this code.  If applicable, add the following below the License
+ Header, with the fields enclosed by brackets [] replaced by your own
+ identifying information: "Portions Copyrighted [year]
+ [name of copyright owner]"
+ 
+ Contributor(s):
+ 
+ If you wish your version of this file to be governed by only the CDDL or
+ only the GPL Version 2, indicate your decision by adding "[Contributor]
+ elects to include this software in this distribution under the [CDDL or GPL
+ Version 2] license."  If you don't indicate a single choice of license, a
+ recipient has the option to distribute your version of this file under
+ either the CDDL, the GPL Version 2 or to extend the choice of license to
+ its licensees as provided above.  However, if you add GPL Version 2 code
+ and therefore, elected the GPL Version 2 license, then the option applies
+ only if the new code is made subject to such option by the copyright
+ holder.
+-->
+
+<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
+    version="2.0"
+    metadata-complete="true">
+
+  <managed-bean>
+    <managed-bean-name>configFileBean</managed-bean-name>
+    <managed-bean-class>com.sun.faces.test.agnostic.config.extraConfig.ConfigFileBean</managed-bean-class>
+    <managed-bean-scope>session</managed-bean-scope>
+  </managed-bean>
+
+  <component>
+    <component-type>DefaultComponent</component-type>
+    <component-class>com.sun.faces.test.agnostic.config.extraConfig.TestComponent</component-class>
+  </component>
+
+  <converter>
+    <converter-id>DefaultConverter</converter-id>
+    <converter-class>com.sun.faces.test.agnostic.config.extraConfig.TestConverter</converter-class>
+  </converter>
+
+  <validator>
+    <validator-id>DefaultValidator</validator-id>
+    <validator-class>com.sun.faces.test.agnostic.config.extraConfig.TestValidator</validator-class>
+  </validator>
+
+  <render-kit>
+    <renderer>
+      <component-family>Test</component-family>
+      <renderer-type>DefaultRenderer</renderer-type>
+      <renderer-class>com.sun.faces.test.agnostic.config.extraConfig.TestRenderer</renderer-class>
+    </renderer>
+  </render-kit>
+  
+</faces-config>
diff --git a/test/agnostic/config/extraConfig/src/main/webapp/WEB-INF/glassfish-web.xml b/test/agnostic/config/extraConfig/src/main/webapp/WEB-INF/glassfish-web.xml
new file mode 100644
index 0000000..45d19b9
--- /dev/null
+++ b/test/agnostic/config/extraConfig/src/main/webapp/WEB-INF/glassfish-web.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
+<glassfish-web-app error-url="">
+  <context-root>/test-agnostic-config-extraConfig</context-root>
+  <class-loader delegate="true"/>
+  <jsp-config>
+    <property name="keepgenerated" value="true">
+      <description>Keep a copy of the generated servlet class' java code.</description>
+    </property>
+  </jsp-config>
+</glassfish-web-app>
diff --git a/test/agnostic/config/extraConfig/src/main/webapp/WEB-INF/web.xml b/test/agnostic/config/extraConfig/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..0b6ae76
--- /dev/null
+++ b/test/agnostic/config/extraConfig/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,80 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" 
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>${webapp.projectStage}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
+        <param-value>${webapp.partialStateSaving}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>${webapp.stateSavingMethod}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.CONFIG_FILES</param-name>
+        <param-value>/WEB-INF/extra-config.xml</param-value>
+    </context-param>
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <session-config>
+        <session-timeout>30</session-timeout>
+    </session-config>
+    <error-page>
+        <exception-type>java.lang.Throwable</exception-type>
+        <location>/error.jsp</location>
+    </error-page>
+</web-app>
diff --git a/test/agnostic/config/extraConfig/src/main/webapp/error.jsp b/test/agnostic/config/extraConfig/src/main/webapp/error.jsp
new file mode 100644
index 0000000..52d9786
--- /dev/null
+++ b/test/agnostic/config/extraConfig/src/main/webapp/error.jsp
@@ -0,0 +1,56 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<%@ page isErrorPage="true" import="java.io.*" contentType="text/plain"%>
+
+Message:
+<%=exception.getMessage()%>
+
+StackTrace:
+<%
+       StringWriter stringWriter = new StringWriter();
+       PrintWriter printWriter = new PrintWriter(stringWriter);
+       exception.printStackTrace(printWriter);
+       out.println(stringWriter);
+       printWriter.close();
+       stringWriter.close();
+%>
diff --git a/test/agnostic/config/extraConfig/src/main/webapp/extraConfig.xhtml b/test/agnostic/config/extraConfig/src/main/webapp/extraConfig.xhtml
new file mode 100644
index 0000000..be09137
--- /dev/null
+++ b/test/agnostic/config/extraConfig/src/main/webapp/extraConfig.xhtml
@@ -0,0 +1,66 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+<f:view contentType="text/html"/>
+<h:head>
+    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
+    <title>Config Basic</title>
+</h:head>
+
+<body>
+    <f:view>
+    <h:form>
+       <h:outputText value="#{configFileBean.title}" />
+       <br/>
+       <br/>
+       #{configFileBean.extra}
+       <h:outputText value="#{configFileBean.status}" />
+    </h:form>
+    </f:view>
+</body>
+</html>
diff --git a/test/agnostic/config/extraConfig/src/test/java/com/sun/faces/test/agnostic/config/extraConfig/ConfigFileIT.java b/test/agnostic/config/extraConfig/src/test/java/com/sun/faces/test/agnostic/config/extraConfig/ConfigFileIT.java
new file mode 100644
index 0000000..69ff51f
--- /dev/null
+++ b/test/agnostic/config/extraConfig/src/test/java/com/sun/faces/test/agnostic/config/extraConfig/ConfigFileIT.java
@@ -0,0 +1,84 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.agnostic.config.extraConfig;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class ConfigFileIT {
+    
+    /**
+     * Stores the web URL.
+     */
+    private String webUrl;
+    /**
+     * Stores the web client.
+     */
+    private WebClient webClient;
+
+    /**
+     * Setup before testing.
+     */
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+        webClient.setThrowExceptionOnFailingStatusCode(true);
+    }
+
+    /**
+     * Tear down after testing.
+     */
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testEmbed() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "/faces/extraConfig.xhtml");
+        assertTrue(page.asText().contains("SUCCESS"));
+    }
+}
diff --git a/test/agnostic/config/lowerCase/pom.xml b/test/agnostic/config/lowerCase/pom.xml
new file mode 100644
index 0000000..e43cd98
--- /dev/null
+++ b/test/agnostic/config/lowerCase/pom.xml
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.agnostic.config</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.agnostic.config</groupId>
+    <artifactId>lowerCase</artifactId>
+    <packaging>war</packaging>
+    <name>Mojarra ${project.version} - Test - Agnostic - Config - Lower Case</name>
+    <build>
+        <finalName>test-agnostic-config-lowerCase</finalName>
+    </build>
+    <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/test/agnostic/config/lowerCase/src/main/webapp/WEB-INF/glassfish-web.xml b/test/agnostic/config/lowerCase/src/main/webapp/WEB-INF/glassfish-web.xml
new file mode 100644
index 0000000..4fe8968
--- /dev/null
+++ b/test/agnostic/config/lowerCase/src/main/webapp/WEB-INF/glassfish-web.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
+<glassfish-web-app error-url="">
+  <context-root>/test-agnostic-config-lowerCase</context-root>
+  <class-loader delegate="true"/>
+  <jsp-config>
+    <property name="keepgenerated" value="true">
+      <description>Keep a copy of the generated servlet class' java code.</description>
+    </property>
+  </jsp-config>
+</glassfish-web-app>
diff --git a/test/agnostic/config/lowerCase/src/main/webapp/WEB-INF/web.xml b/test/agnostic/config/lowerCase/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..237718f
--- /dev/null
+++ b/test/agnostic/config/lowerCase/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,77 @@
+<?xml version='1.0' encoding='UTF-8'?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" 
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>${webapp.projectStage}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
+        <param-value>${webapp.partialStateSaving}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>${webapp.stateSavingMethod}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>com.sun.faces.writeStateAtFormEnd</param-name>
+        <param-value>FalSe</param-value>
+    </context-param>
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <session-config>
+        <session-timeout>30</session-timeout>
+    </session-config>
+</web-app>
diff --git a/test/agnostic/config/lowerCase/src/main/webapp/index.xhtml b/test/agnostic/config/lowerCase/src/main/webapp/index.xhtml
new file mode 100644
index 0000000..4efa1e6
--- /dev/null
+++ b/test/agnostic/config/lowerCase/src/main/webapp/index.xhtml
@@ -0,0 +1,56 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head></h:head>
+    <h:body>
+        <h:form>
+            <h:outputText value="HELLO"/>
+        </h:form>
+    </h:body>
+</html>
diff --git a/test/agnostic/config/lowerCase/src/test/java/com/sun/faces/test/agnostic/config/lowerCase/Issue2067IT.java b/test/agnostic/config/lowerCase/src/test/java/com/sun/faces/test/agnostic/config/lowerCase/Issue2067IT.java
new file mode 100644
index 0000000..0e725d1
--- /dev/null
+++ b/test/agnostic/config/lowerCase/src/test/java/com/sun/faces/test/agnostic/config/lowerCase/Issue2067IT.java
@@ -0,0 +1,74 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.config.lowerCase;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class Issue2067IT {
+    
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testCamelCaseFalseConfig() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/index.xhtml");
+        int index1 = page.asXml().indexOf("javax.faces.ViewState");
+        int index2 = page.asXml().indexOf("HELLO");
+        assertTrue(index1 != -1);
+        assertTrue(index2 != -1);
+        assertTrue(index1 < index2);
+    }
+}
diff --git a/test/agnostic/config/pom.xml b/test/agnostic/config/pom.xml
new file mode 100644
index 0000000..f93d5ff
--- /dev/null
+++ b/test/agnostic/config/pom.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.agnostic</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.agnostic.config</groupId>
+    <artifactId>pom</artifactId>
+    <packaging>pom</packaging>
+    <name>Mojarra ${project.version} - Test - Agnostic - Config</name>
+    <modules>
+        <module>basic</module>
+        <module>configFile</module>
+        <module>embedConfig</module>
+        <module>extraConfig</module>
+        <module>lowerCase</module>
+    </modules>
+</project>
diff --git a/test/agnostic/context/initFacesContext/nbactions.xml b/test/agnostic/context/initFacesContext/nbactions.xml
new file mode 100644
index 0000000..e38be63
--- /dev/null
+++ b/test/agnostic/context/initFacesContext/nbactions.xml
@@ -0,0 +1,163 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--><actions>
+        <action>
+            <actionName>debug.test.single</actionName>
+            <goals>
+                <goal>test-compile</goal>
+                <goal>surefire:test</goal>
+            </goals>
+            <properties>
+                <test>initFacesContext</test>
+                <forkMode>once</forkMode>
+                <maven.surefire.debug>-Xdebug -Xrunjdwp:transport=dt_socket,server=n,address=${jpda.address}</maven.surefire.debug>
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                <jpda.listen>true</jpda.listen>
+                <project.build.finalName>test-agnostic-context-initFacesContext</project.build.finalName>
+                <webapp.projectStage>Development</webapp.projectStage>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                <integration.serverPort>8080</integration.serverPort>
+                <integration.serverName>localhost</integration.serverName>
+                <integration.url>http://localhost:8080/test-agnostic-context-initFacesContext/</integration.url>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+            </properties>
+        </action>
+        <action>
+            <actionName>test.single</actionName>
+            <goals>
+                <goal>test-compile</goal>
+                <goal>surefire:test</goal>
+            </goals>
+            <properties>
+                <project.build.finalName>test-agnostic-context-initFacesContext</project.build.finalName>
+                <integration.serverPort>8080</integration.serverPort>
+                <integration.serverName>localhost</integration.serverName>
+                <integration.url>http://localhost:8080/test-agnostic-context-initFacesContext/</integration.url>
+                <test>initFacesContext</test>
+            </properties>
+        </action>
+        <action>
+            <actionName>build</actionName>
+            <goals>
+                <goal>install</goal>
+            </goals>
+            <properties>
+                <webapp.projectStage>Development</webapp.projectStage>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+            </properties>
+        </action>
+        <action>
+            <actionName>rebuild</actionName>
+            <goals>
+                <goal>clean</goal>
+                <goal>install</goal>
+            </goals>
+            <properties>
+                
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                
+                <webapp.projectStage>Development</webapp.projectStage>
+                
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                
+            </properties>
+        </action>
+        <action>
+            <actionName>build-with-dependencies</actionName>
+            <reactor>also-make</reactor>
+            <goals>
+                <goal>install</goal>
+            </goals>
+            <properties>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                <webapp.projectStage>Development</webapp.projectStage>
+            </properties>
+        </action>
+        <action>
+            <actionName>run</actionName>
+            <goals>
+                <goal>package</goal>
+            </goals>
+            <properties>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                <netbeans.deploy>true</netbeans.deploy>
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                <webapp.projectStage>Development</webapp.projectStage>
+            </properties>
+        </action>
+        <action>
+            <actionName>run.single.deploy</actionName>
+            <goals>
+                <goal>package</goal>
+            </goals>
+            <properties>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                <netbeans.deploy>true</netbeans.deploy>
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                <netbeans.deploy.clientUrlPart>${webpagePath}</netbeans.deploy.clientUrlPart>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                <webapp.projectStage>Development</webapp.projectStage>
+            </properties>
+        </action>
+        <action>
+            <actionName>debug.single.deploy</actionName>
+            <goals>
+                <goal>package</goal>
+            </goals>
+            <properties>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                <netbeans.deploy>true</netbeans.deploy>
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                <netbeans.deploy.debugmode>true</netbeans.deploy.debugmode>
+                <netbeans.deploy.clientUrlPart>${webpagePath}</netbeans.deploy.clientUrlPart>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                <webapp.projectStage>Development</webapp.projectStage>
+            </properties>
+        </action>
+    </actions>
diff --git a/test/agnostic/context/initFacesContext/pom.xml b/test/agnostic/context/initFacesContext/pom.xml
new file mode 100644
index 0000000..b450a87
--- /dev/null
+++ b/test/agnostic/context/initFacesContext/pom.xml
@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <artifactId>pom</artifactId>
+        <groupId>com.sun.faces.test.agnostic.context</groupId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.agnostic.context</groupId>
+    <artifactId>initFacesContext</artifactId>
+    <packaging>war</packaging>
+    <name>Mojarra ${project.version} - Test - Agnostic - Context - InitFacesContext</name>
+    <build>
+        <finalName>test-agnostic-context-initFacesContext</finalName>
+    </build>
+    <dependencies>
+        <dependency>
+            <groupId>javax.faces</groupId>
+            <artifactId>javax.faces-api</artifactId>
+            <version>2.2</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <version>4.11</version>
+            <scope>test</scope>
+        </dependency>
+    </dependencies> 
+    <properties>
+        <netbeans.hint.deploy.server>gfv3ee6</netbeans.hint.deploy.server>
+    </properties>
+</project>
diff --git a/test/agnostic/context/initFacesContext/src/main/java/com/sun/faces/test/agnostic/context/ApplicationScopedBean.java b/test/agnostic/context/initFacesContext/src/main/java/com/sun/faces/test/agnostic/context/ApplicationScopedBean.java
new file mode 100644
index 0000000..53a3339
--- /dev/null
+++ b/test/agnostic/context/initFacesContext/src/main/java/com/sun/faces/test/agnostic/context/ApplicationScopedBean.java
@@ -0,0 +1,96 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.test.agnostic.context;
+
+import java.io.Serializable;
+import javax.annotation.PreDestroy;
+import javax.faces.bean.ApplicationScoped;
+import javax.faces.bean.ManagedBean;
+import javax.faces.context.FacesContext;
+import javax.faces.context.Flash;
+import javax.faces.event.AbortProcessingException;
+import javax.faces.event.PreDestroyApplicationEvent;
+import javax.faces.event.SystemEvent;
+import javax.faces.event.SystemEventListener;
+
+ at ManagedBean(eager=true)
+ at ApplicationScoped
+public class ApplicationScopedBean implements Serializable {
+    
+    private static final long serialVersionUID = -7637392264151341963L;
+    
+    private String result = "FAILURE";
+    
+    public ApplicationScopedBean() {
+        FacesContext context = FacesContext.getCurrentInstance();
+        Flash startupFlash = context.getExternalContext().getFlash();
+        result = null != startupFlash ? "SUCCESS" : "FAILURE";
+        
+        context.getApplication().subscribeToEvent(PreDestroyApplicationEvent.class, new SystemEventListener() {
+
+            @Override
+            public void processEvent(SystemEvent event) throws AbortProcessingException {
+                ApplicationScopedBean.this.testPredestroy();
+            }
+
+            @Override
+            public boolean isListenerForSource(Object source) {
+                return true;
+            }
+        });
+        
+    }
+
+    public String getResult() {
+        return result;
+    }
+
+    
+    public void testPredestroy() {
+        FacesContext context = FacesContext.getCurrentInstance();
+        Flash startupFlash = context.getExternalContext().getFlash();
+        result = null != startupFlash ? "SUCCESS" : "FAILURE";
+        
+    }
+    
+    
+    
+}
\ No newline at end of file
diff --git a/test/agnostic/context/initFacesContext/src/main/webapp/WEB-INF/beans.xml b/test/agnostic/context/initFacesContext/src/main/webapp/WEB-INF/beans.xml
new file mode 100644
index 0000000..c782f57
--- /dev/null
+++ b/test/agnostic/context/initFacesContext/src/main/webapp/WEB-INF/beans.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- This file can be an empty text file (0 bytes) -->
+<!-- We're declaring the schema to save you time if you do have to configure 
+   this in the future -->
+<beans xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+   xsi:schemaLocation="
+        http://java.sun.com/xml/ns/javaee 
+        http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
+</beans>
diff --git a/test/agnostic/context/initFacesContext/src/main/webapp/WEB-INF/glassfish-web.xml b/test/agnostic/context/initFacesContext/src/main/webapp/WEB-INF/glassfish-web.xml
new file mode 100644
index 0000000..c6b0db6
--- /dev/null
+++ b/test/agnostic/context/initFacesContext/src/main/webapp/WEB-INF/glassfish-web.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
+<glassfish-web-app error-url="">
+  <context-root>/test-agnostic-context-initFacesContext</context-root>
+  <class-loader delegate="true"/>
+  <jsp-config>
+    <property name="keepgenerated" value="true">
+      <description>Keep a copy of the generated servlet class' java code.</description>
+    </property>
+  </jsp-config>
+</glassfish-web-app>
diff --git a/test/agnostic/context/initFacesContext/src/main/webapp/WEB-INF/web.xml b/test/agnostic/context/initFacesContext/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..bc0290c
--- /dev/null
+++ b/test/agnostic/context/initFacesContext/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>${webapp.projectStage}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
+        <param-value>${webapp.partialStateSaving}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>${webapp.stateSavingMethod}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>com.sun.faces.enableTransitionTimeNoOpFlash</param-name>
+        <param-value>true</param-value>
+    </context-param>
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <welcome-file-list>
+        <welcome-file>faces/index.xhtml</welcome-file>
+    </welcome-file-list>
+</web-app>
diff --git a/test/agnostic/context/initFacesContext/src/main/webapp/index.xhtml b/test/agnostic/context/initFacesContext/src/main/webapp/index.xhtml
new file mode 100644
index 0000000..069c8e8
--- /dev/null
+++ b/test/agnostic/context/initFacesContext/src/main/webapp/index.xhtml
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <head>
+        <title></title>
+    </head>
+    <body>
+        <p id="result">#{applicationScopedBean.result}</p>
+    </body>
+</html>
+
diff --git a/test/agnostic/context/initFacesContext/src/test/java/com/sun/faces/test/agnostic/context/AutomatedTestIT.java b/test/agnostic/context/initFacesContext/src/test/java/com/sun/faces/test/agnostic/context/AutomatedTestIT.java
new file mode 100644
index 0000000..87d5335
--- /dev/null
+++ b/test/agnostic/context/initFacesContext/src/test/java/com/sun/faces/test/agnostic/context/AutomatedTestIT.java
@@ -0,0 +1,103 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.context;
+
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import static org.junit.Assert.assertTrue;
+
+public class AutomatedTestIT {
+    /**
+     * Stores the web URL.
+     */
+    private String webUrl;
+    /**
+     * Stores the web client.
+     */
+    private WebClient webClient;
+
+    /**
+     * Setup before testing.
+     * 
+     * @throws Exception when a serious error occurs.
+     */
+    @BeforeClass
+    public static void setUpClass() throws Exception {
+    }
+
+    /**
+     * Cleanup after testing.
+     * 
+     * @throws Exception when a serious error occurs.
+     */
+    @AfterClass
+    public static void tearDownClass() throws Exception {
+    }
+
+    /**
+     * Setup before testing.
+     */
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    /**
+     * Tear down after testing.
+     */
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testStartupTimeFlash() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl);
+
+        assertTrue(page.getBody().asText().indexOf("SUCCESS") != -1);
+        
+    }
+}
diff --git a/test/agnostic/context/pom.xml b/test/agnostic/context/pom.xml
new file mode 100644
index 0000000..446f1b8
--- /dev/null
+++ b/test/agnostic/context/pom.xml
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.agnostic</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.agnostic.context</groupId>
+    <artifactId>pom</artifactId>
+    <packaging>pom</packaging>
+    <name>Mojarra ${project.version} - Test - Agnostic - Context</name>
+    <modules>
+        <module>regular</module>
+    <module>initFacesContext</module>
+  </modules>
+</project>
\ No newline at end of file
diff --git a/test/agnostic/context/regular/pom.xml b/test/agnostic/context/regular/pom.xml
new file mode 100644
index 0000000..2e1d490
--- /dev/null
+++ b/test/agnostic/context/regular/pom.xml
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.agnostic.context</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.agnostic.context</groupId>
+    <artifactId>regular</artifactId>
+    <packaging>war</packaging>
+    <name>Mojarra ${project.version} - Test - Agnostic - Context - Regular Faces Context</name>
+    <build>
+        <finalName>test-agnostic-context-regular</finalName>
+    </build>
+    <dependencies>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <version>4.11</version>
+            <scope>compile</scope>
+        </dependency>
+    </dependencies>
+    <properties>
+        <netbeans.hint.deploy.server>gfv3ee6</netbeans.hint.deploy.server>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/test/agnostic/context/regular/src/main/java/com/sun/faces/test/agnostic/context/regular/AccessorBean.java b/test/agnostic/context/regular/src/main/java/com/sun/faces/test/agnostic/context/regular/AccessorBean.java
new file mode 100644
index 0000000..5da9a5c
--- /dev/null
+++ b/test/agnostic/context/regular/src/main/java/com/sun/faces/test/agnostic/context/regular/AccessorBean.java
@@ -0,0 +1,192 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.context.regular;
+
+import java.io.IOException;
+import java.io.Serializable;
+import java.io.Writer;
+import java.util.Locale;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.RequestScoped;
+import javax.faces.component.UIComponent;
+import javax.faces.component.UIViewRoot;
+import javax.faces.context.FacesContext;
+import javax.faces.context.ResponseStream;
+import javax.faces.context.ResponseWriter;
+import static org.junit.Assert.*;
+
+/**
+ * The managed bean for the accessor tests.
+ *
+ * @author Manfred Riem (manfred.riem at oracle.com)
+ */
+ at ManagedBean(name = "accessorBean")
+ at RequestScoped
+public class AccessorBean implements Serializable {
+
+    public String getAccessorResult1() {
+        UIViewRoot oldRoot = FacesContext.getCurrentInstance().getViewRoot();
+        UIViewRoot page = new UIViewRoot();
+        page.setViewId("viewId");
+        page.setLocale(Locale.US);
+        FacesContext.getCurrentInstance().setViewRoot(page);
+        UIViewRoot root = FacesContext.getCurrentInstance().getViewRoot();
+        assertNotNull(root);
+        assertEquals(root, FacesContext.getCurrentInstance().getViewRoot());
+        FacesContext.getCurrentInstance().setViewRoot(oldRoot);
+        return "PASSED";
+    }
+
+    public String getAccessorResult2() {
+        ResponseStream oldStream = FacesContext.getCurrentInstance().getResponseStream();
+        ResponseStream responseStream = new ResponseStream() {
+
+            public void write(int b) {
+            }
+        };
+        FacesContext.getCurrentInstance().setResponseStream(responseStream);
+        assertNotNull(FacesContext.getCurrentInstance().getResponseStream());
+        assertEquals(responseStream, FacesContext.getCurrentInstance().getResponseStream());
+        if (oldStream != null) {
+            FacesContext.getCurrentInstance().setResponseStream(oldStream);
+        }
+        return "PASSED";
+    }
+
+    public String getAccessorResult3() {
+        ResponseWriter oldWriter = FacesContext.getCurrentInstance().getResponseWriter();
+        ResponseWriter responseWriter = new ResponseWriter() {
+
+            @Override
+            public Writer append(CharSequence csq) throws IOException {
+                return super.append(csq);
+            }
+
+            ;
+            @Override
+            public String getContentType() {
+                throw new UnsupportedOperationException("Not supported yet.");
+            }
+
+            @Override
+            public String getCharacterEncoding() {
+                throw new UnsupportedOperationException("Not supported yet.");
+            }
+
+            @Override
+            public void flush() throws IOException {
+                throw new UnsupportedOperationException("Not supported yet.");
+            }
+
+            @Override
+            public void startDocument() throws IOException {
+                throw new UnsupportedOperationException("Not supported yet.");
+            }
+
+            @Override
+            public void endDocument() throws IOException {
+                throw new UnsupportedOperationException("Not supported yet.");
+            }
+
+            @Override
+            public void startElement(String name, UIComponent component) throws IOException {
+                throw new UnsupportedOperationException("Not supported yet.");
+            }
+
+            @Override
+            public void endElement(String name) throws IOException {
+                throw new UnsupportedOperationException("Not supported yet.");
+            }
+
+            @Override
+            public void writeAttribute(String name, Object value, String property) throws IOException {
+                throw new UnsupportedOperationException("Not supported yet.");
+            }
+
+            @Override
+            public void writeURIAttribute(String name, Object value, String property) throws IOException {
+                throw new UnsupportedOperationException("Not supported yet.");
+            }
+
+            @Override
+            public void writeComment(Object comment) throws IOException {
+                throw new UnsupportedOperationException("Not supported yet.");
+            }
+
+            @Override
+            public void writeText(Object text, String property) throws IOException {
+                throw new UnsupportedOperationException("Not supported yet.");
+            }
+
+            @Override
+            public void writeText(char[] text, int off, int len) throws IOException {
+                throw new UnsupportedOperationException("Not supported yet.");
+            }
+
+            @Override
+            public ResponseWriter cloneWithWriter(Writer writer) {
+                throw new UnsupportedOperationException("Not supported yet.");
+            }
+
+            @Override
+            public void write(char[] cbuf, int off, int len) throws IOException {
+                throw new UnsupportedOperationException("Not supported yet.");
+            }
+
+            @Override
+            public void close() throws IOException {
+                throw new UnsupportedOperationException("Not supported yet.");
+            }
+        };
+
+        FacesContext.getCurrentInstance().setResponseWriter(responseWriter);
+        assertNotNull(FacesContext.getCurrentInstance().getResponseWriter());
+        assertEquals(responseWriter, FacesContext.getCurrentInstance().getResponseWriter());
+
+        try {
+            FacesContext.getCurrentInstance().setResponseWriter(null);
+            fail();
+        } catch (Exception exception) {
+        }
+        
+        FacesContext.getCurrentInstance().setResponseWriter(oldWriter);
+        return "PASSED";
+    }
+}
diff --git a/test/agnostic/context/regular/src/main/java/com/sun/faces/test/agnostic/context/regular/AttributesBean.java b/test/agnostic/context/regular/src/main/java/com/sun/faces/test/agnostic/context/regular/AttributesBean.java
new file mode 100644
index 0000000..464b98b
--- /dev/null
+++ b/test/agnostic/context/regular/src/main/java/com/sun/faces/test/agnostic/context/regular/AttributesBean.java
@@ -0,0 +1,64 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.context.regular;
+
+import java.io.Serializable;
+import java.util.Map;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.RequestScoped;
+import javax.faces.context.FacesContext;
+import static org.junit.Assert.*;
+
+/**
+ * The managed bean for the attributes tests.
+ *
+ * @author Manfred Riem (manfred.riem at oracle.com)
+ */
+ at ManagedBean(name = "attributesBean")
+ at RequestScoped
+public class AttributesBean implements Serializable {
+
+    public String getAttributesResult1() {
+        FacesContext context = FacesContext.getCurrentInstance();
+        Map<Object,Object> m = context.getAttributes();
+        assertNotNull(m);
+        return "PASSED";
+    }
+}
diff --git a/test/agnostic/context/regular/src/main/java/com/sun/faces/test/agnostic/context/regular/ConstructorBean.java b/test/agnostic/context/regular/src/main/java/com/sun/faces/test/agnostic/context/regular/ConstructorBean.java
new file mode 100644
index 0000000..35a122e
--- /dev/null
+++ b/test/agnostic/context/regular/src/main/java/com/sun/faces/test/agnostic/context/regular/ConstructorBean.java
@@ -0,0 +1,119 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.context.regular;
+
+import com.sun.faces.context.ExternalContextImpl;
+import com.sun.faces.context.FacesContextImpl;
+import com.sun.faces.lifecycle.LifecycleImpl;
+import java.io.Serializable;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.RequestScoped;
+import javax.faces.context.FacesContext;
+import javax.servlet.ServletContext;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import static org.junit.Assert.*;
+
+/**
+ * The managed bean for the constructor tests.
+ *
+ * @author Manfred Riem (manfred.riem at oracle.com)
+ */
+ at ManagedBean(name = "constructorBean")
+ at RequestScoped
+public class ConstructorBean implements Serializable {
+
+    public String getConstructorResult1() {
+        try {
+            FacesContextImpl context = new FacesContextImpl(null, null);
+            fail();
+        } catch (NullPointerException exception) {
+            exception.printStackTrace();
+        }
+        return "PASSED";
+    }
+
+    public String getConstructorResult2() {
+        try {
+            FacesContext currentContext = FacesContext.getCurrentInstance();
+            ExternalContextImpl externalContext =
+                    new ExternalContextImpl(
+                    (ServletContext) currentContext.getExternalContext().getContext(),
+                    (HttpServletRequest) currentContext.getExternalContext().getRequest(),
+                    (HttpServletResponse) currentContext.getExternalContext().getResponse());
+
+            FacesContextImpl context = new FacesContextImpl(externalContext, null);
+            fail();
+        } catch (NullPointerException exception) {
+            exception.printStackTrace();
+        }
+        return "PASSED";
+    }
+
+    public String getConstructorResult3() {
+        try {
+            LifecycleImpl lifecycle = new LifecycleImpl();
+            FacesContextImpl context = new FacesContextImpl(null, lifecycle);
+            fail();
+        } catch (NullPointerException exception) {
+            exception.printStackTrace();
+        }
+        return "PASSED";
+    }
+
+    public String getConstructorResult4() {
+        try {
+            FacesContext currentContext = FacesContext.getCurrentInstance();
+            ExternalContextImpl externalContext =
+                    new ExternalContextImpl(
+                    (ServletContext) currentContext.getExternalContext().getContext(),
+                    (HttpServletRequest) currentContext.getExternalContext().getRequest(),
+                    (HttpServletResponse) currentContext.getExternalContext().getResponse());
+            LifecycleImpl lifecycle = new LifecycleImpl();
+
+            FacesContextImpl context = new FacesContextImpl(externalContext, lifecycle);
+        } catch (NullPointerException exception) {
+            exception.printStackTrace();
+            fail();
+        }
+
+        return "PASSED";
+    }
+}
diff --git a/test/agnostic/context/regular/src/main/java/com/sun/faces/test/agnostic/context/regular/ElBean.java b/test/agnostic/context/regular/src/main/java/com/sun/faces/test/agnostic/context/regular/ElBean.java
new file mode 100644
index 0000000..41cabe0
--- /dev/null
+++ b/test/agnostic/context/regular/src/main/java/com/sun/faces/test/agnostic/context/regular/ElBean.java
@@ -0,0 +1,100 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.context.regular;
+
+import com.sun.faces.context.ExternalContextImpl;
+import com.sun.faces.context.FacesContextImpl;
+import com.sun.faces.lifecycle.LifecycleImpl;
+import java.io.Serializable;
+import javax.el.ELContextEvent;
+import javax.el.ELContextListener;
+import javax.faces.application.Application;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.RequestScoped;
+import javax.faces.context.FacesContext;
+import javax.servlet.ServletContext;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import static org.junit.Assert.*;
+
+/**
+ * The managed bean for the EL tests.
+ *
+ * @author Manfred Riem (manfred.riem at oracle.com)
+ */
+ at ManagedBean(name = "elBean")
+ at RequestScoped
+public class ElBean implements Serializable {
+
+    public String getElResult1() {
+        FacesContext currentContext = FacesContext.getCurrentInstance();
+        ExternalContextImpl externalContext =
+                new ExternalContextImpl(
+                (ServletContext) currentContext.getExternalContext().getContext(),
+                (HttpServletRequest) currentContext.getExternalContext().getRequest(),
+                (HttpServletResponse) currentContext.getExternalContext().getResponse());
+        LifecycleImpl lifecycle = new LifecycleImpl();
+
+        FacesContextImpl context = new FacesContextImpl(externalContext, lifecycle);
+
+        /*
+         * Actual test.
+         */
+        ELContextListenerImpl listener = new ELContextListenerImpl();
+        Application app = context.getApplication();
+        app.addELContextListener(listener);
+        context.getELContext();
+        assertTrue(listener.wasInvoked());
+        return "PASSED";
+    }
+
+    private static final class ELContextListenerImpl implements ELContextListener {
+
+        private boolean invoked;
+
+        public void contextCreated(ELContextEvent elContextEvent) {
+            invoked = true;
+        }
+
+        public boolean wasInvoked() {
+            return invoked;
+        }
+    }
+}
diff --git a/test/agnostic/context/regular/src/main/java/com/sun/faces/test/agnostic/context/regular/ExternalContextBean.java b/test/agnostic/context/regular/src/main/java/com/sun/faces/test/agnostic/context/regular/ExternalContextBean.java
new file mode 100644
index 0000000..23abc23
--- /dev/null
+++ b/test/agnostic/context/regular/src/main/java/com/sun/faces/test/agnostic/context/regular/ExternalContextBean.java
@@ -0,0 +1,203 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.context.regular;
+
+import com.sun.faces.context.ExternalContextImpl;
+import com.sun.faces.context.FacesContextImpl;
+import java.io.Serializable;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.RequestScoped;
+import javax.faces.context.FacesContext;
+import javax.servlet.ServletContext;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import static org.junit.Assert.*;
+
+ at ManagedBean(name = "extContextBean")
+ at RequestScoped
+public class ExternalContextBean implements Serializable {
+
+    public String getEncodeResourceURLNPE() {
+        try {
+            FacesContext currentContext = FacesContext.getCurrentInstance();
+            ExternalContextImpl externalContext =
+                    new ExternalContextImpl(
+                    (ServletContext) currentContext.getExternalContext().getContext(),
+                    (HttpServletRequest) currentContext.getExternalContext().getRequest(),
+                    (HttpServletResponse) currentContext.getExternalContext().getResponse());
+
+            externalContext.encodeResourceURL(null); 
+        } catch (NullPointerException exception) {
+            return "PASSED";
+        }
+
+        return "FAILED";
+    }
+    public String getEncodePartialActionURLNPE() {
+        try {
+            FacesContext currentContext = FacesContext.getCurrentInstance();
+            ExternalContextImpl externalContext =
+                    new ExternalContextImpl(
+                    (ServletContext) currentContext.getExternalContext().getContext(),
+                    (HttpServletRequest) currentContext.getExternalContext().getRequest(),
+                    (HttpServletResponse) currentContext.getExternalContext().getResponse());
+
+            externalContext.encodePartialActionURL(null);
+        } catch (NullPointerException exception) {
+            return "PASSED";
+        }
+
+        return "FAILED";
+    }
+    public String getIsUserInRoleNPE() {
+        try {
+            FacesContext currentContext = FacesContext.getCurrentInstance();
+            ExternalContextImpl externalContext =
+                    new ExternalContextImpl(
+                    (ServletContext) currentContext.getExternalContext().getContext(),
+                    (HttpServletRequest) currentContext.getExternalContext().getRequest(),
+                    (HttpServletResponse) currentContext.getExternalContext().getResponse());
+
+            externalContext.isUserInRole(null);
+        } catch (NullPointerException exception) {
+            return "PASSED";
+        }
+
+        return "FAILED";
+    }
+    public String getLog1NPE() {
+        try {
+            FacesContext currentContext = FacesContext.getCurrentInstance();
+            ExternalContextImpl externalContext =
+                    new ExternalContextImpl(
+                    (ServletContext) currentContext.getExternalContext().getContext(),
+                    (HttpServletRequest) currentContext.getExternalContext().getRequest(),
+                    (HttpServletResponse) currentContext.getExternalContext().getResponse());
+
+            externalContext.log(null);
+        } catch (NullPointerException exception) {
+            return "PASSED";
+        }
+
+        return "FAILED";
+    }
+    public String getLog2NPE() {
+        try {
+            FacesContext currentContext = FacesContext.getCurrentInstance();
+            ExternalContextImpl externalContext =
+                    new ExternalContextImpl(
+                    (ServletContext) currentContext.getExternalContext().getContext(),
+                    (HttpServletRequest) currentContext.getExternalContext().getRequest(),
+                    (HttpServletResponse) currentContext.getExternalContext().getResponse());
+
+            externalContext.log(null, new RuntimeException("Exception"));
+        } catch (NullPointerException exception) {
+            return "PASSED";
+        }
+
+        return "FAILED";
+    }
+    public String getLog3NPE() {
+        try {
+            FacesContext currentContext = FacesContext.getCurrentInstance();
+            ExternalContextImpl externalContext =
+                    new ExternalContextImpl(
+                    (ServletContext) currentContext.getExternalContext().getContext(),
+                    (HttpServletRequest) currentContext.getExternalContext().getRequest(),
+                    (HttpServletResponse) currentContext.getExternalContext().getResponse());
+
+            String msg = "A message";
+            externalContext.log(msg, null);
+        } catch (NullPointerException exception) {
+            return "PASSED";
+        }
+
+        return "FAILED";
+    }
+    public String getResourceNPE() {
+        try {
+            FacesContext currentContext = FacesContext.getCurrentInstance();
+            ExternalContextImpl externalContext =
+                    new ExternalContextImpl(
+                    (ServletContext) currentContext.getExternalContext().getContext(),
+                    (HttpServletRequest) currentContext.getExternalContext().getRequest(),
+                    (HttpServletResponse) currentContext.getExternalContext().getResponse());
+
+            externalContext.getResource(null);
+        } catch (NullPointerException exception) {
+            return "PASSED";
+        }
+
+        return "FAILED";
+    }
+    public String getResourceAsStreamNPE() {
+        try {
+            FacesContext currentContext = FacesContext.getCurrentInstance();
+            ExternalContextImpl externalContext =
+                    new ExternalContextImpl(
+                    (ServletContext) currentContext.getExternalContext().getContext(),
+                    (HttpServletRequest) currentContext.getExternalContext().getRequest(),
+                    (HttpServletResponse) currentContext.getExternalContext().getResponse());
+
+            externalContext.getResourceAsStream(null);
+        } catch (NullPointerException exception) {
+            return "PASSED";
+        }
+
+        return "FAILED";
+    }
+    public String getResourcePathsNPE() {
+        try {
+            FacesContext currentContext = FacesContext.getCurrentInstance();
+            ExternalContextImpl externalContext =
+                    new ExternalContextImpl(
+                    (ServletContext) currentContext.getExternalContext().getContext(),
+                    (HttpServletRequest) currentContext.getExternalContext().getRequest(),
+                    (HttpServletResponse) currentContext.getExternalContext().getResponse());
+
+            externalContext.getResourcePaths(null);
+        } catch (NullPointerException exception) {
+            return "PASSED";
+        }
+
+        return "FAILED";
+    }
+
+}
diff --git a/test/agnostic/context/regular/src/main/java/com/sun/faces/test/agnostic/context/regular/MessageBean.java b/test/agnostic/context/regular/src/main/java/com/sun/faces/test/agnostic/context/regular/MessageBean.java
new file mode 100644
index 0000000..a14e13a
--- /dev/null
+++ b/test/agnostic/context/regular/src/main/java/com/sun/faces/test/agnostic/context/regular/MessageBean.java
@@ -0,0 +1,314 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.context.regular;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.List;
+import java.util.NoSuchElementException;
+import javax.faces.application.FacesMessage;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.RequestScoped;
+import javax.faces.component.UICommand;
+import javax.faces.context.FacesContext;
+import static org.junit.Assert.*;
+
+/**
+ * The managed bean for the message tests.
+ *
+ * @author Manfred Riem (manfred.riem at oracle.com)
+ */
+ at ManagedBean(name = "messageBean")
+ at RequestScoped
+public class MessageBean implements Serializable {
+
+    public String getMessageResult1() {
+        FacesContext context = FacesContext.getCurrentInstance();
+        assertNotNull(context);
+
+        try {
+            context.addMessage(null, null);
+            fail();
+        } catch (NullPointerException exception) {
+        }
+
+        try {
+            context.addMessage(null, null);
+            fail();
+        } catch (NullPointerException exception) {
+        }
+        return "PASSED";
+    }
+    
+    public String getMessageResult2() {
+        FacesContext context = FacesContext.getCurrentInstance();
+        assertTrue(context != null);
+
+        FacesMessage msg1 = new FacesMessage(FacesMessage.SEVERITY_ERROR,
+                                             "summary1", "detail1");
+        context.addMessage(null, msg1);
+
+        FacesMessage msg2 = new FacesMessage(FacesMessage.SEVERITY_FATAL,
+                                             "summary2", "detail2");
+        context.addMessage(null, msg2);
+
+        UICommand command = new UICommand();
+        FacesMessage msg3 = new FacesMessage(FacesMessage.SEVERITY_FATAL,
+                                             "summary3", "detail3");
+        context.addMessage(command.getClientId(context), msg3);
+
+        FacesMessage msg4 = new FacesMessage(FacesMessage.SEVERITY_WARN,
+                                             "summary4", "detail4");
+        context.addMessage(command.getClientId(context), msg4);
+
+        assertTrue(context.getMaximumSeverity() == FacesMessage.SEVERITY_FATAL);
+
+        List controlList = new ArrayList();
+        controlList.add(msg1);
+        controlList.add(msg2);
+        controlList.add(msg3);
+        controlList.add(msg4);
+        Iterator it = context.getMessages();
+        for (int i = 0, size = controlList.size(); i < size; i++) {
+            assertTrue(controlList.get(i).equals(it.next()));
+        }
+
+        controlList.clear();
+        controlList.add(msg3);
+        controlList.add(msg4);
+        it = context.getMessages(command.getClientId(context));
+        for (int i = 0, size = controlList.size(); i < size; i++) {
+            assertTrue(controlList.get(i).equals(it.next()));
+        }
+
+        controlList.clear();
+        controlList.add(msg1);
+        controlList.add(msg2);
+        it = context.getMessages(null);
+        for (int i = 0, size = controlList.size(); i < size; i++) {
+            assertTrue(controlList.get(i).equals(it.next()));
+        }
+        return "PASSED";
+    }
+
+    public String getMessageResult3() {
+        FacesContext context = FacesContext.getCurrentInstance();
+        FacesMessage msg1 = new FacesMessage(FacesMessage.SEVERITY_INFO, "", "");
+        FacesMessage msg2 = new FacesMessage(FacesMessage.SEVERITY_WARN, "", "");
+        FacesMessage msg3 = new FacesMessage(FacesMessage.SEVERITY_ERROR, "", "");
+        FacesMessage msg4 = new FacesMessage(FacesMessage.SEVERITY_ERROR, "", "");
+
+        context.addMessage(null, msg1);
+        context.addMessage("id1", msg2);
+        context.addMessage("id2", msg3);
+        context.addMessage("id2", msg4);
+
+        Class unmodifiableType = Collections.unmodifiableList(Collections.emptyList()).getClass();
+
+        List list = context.getMessageList(null);
+        assertTrue(list.size() == 1);
+        assertTrue(unmodifiableType.isInstance(list));
+        assertTrue(msg1.equals(list.get(0)));
+
+        list = context.getMessageList("id1");
+        assertTrue(list.size() == 1);
+        assertTrue(unmodifiableType.isInstance(list));
+        assertTrue(msg2.equals(list.get(0)));
+
+        list = context.getMessageList("id2");
+        assertTrue(list.size() == 2);
+        assertTrue(unmodifiableType.isInstance(list));
+        assertTrue(msg3.equals(list.get(0)));
+        assertTrue(msg4.equals(list.get(1)));
+
+        list = context.getMessageList();
+        assertTrue(list.size() == 4);
+        assertTrue(unmodifiableType.isInstance(list));
+        assertTrue(list.contains(msg1));
+        assertTrue(list.contains(msg2));
+        assertTrue(list.contains(msg3));
+        assertTrue(list.contains(msg4));
+        return "PASSED";
+    }
+
+    public String getMessageResult4() {
+        FacesContext context = FacesContext.getCurrentInstance();
+        FacesMessage msg1 = new FacesMessage(FacesMessage.SEVERITY_INFO, "", "");
+        FacesMessage msg2 = new FacesMessage(FacesMessage.SEVERITY_WARN, "", "");
+
+        context.addMessage(null, msg2);
+        context.addMessage(null, msg1);
+
+        assertTrue(FacesMessage.SEVERITY_WARN.equals(context.getMaximumSeverity()));
+        return "PASSED";
+    }
+
+    public String getMessageResult5() {
+        FacesContext context = FacesContext.getCurrentInstance();
+        FacesMessage msg1 = new FacesMessage(FacesMessage.SEVERITY_INFO, "", "");
+        FacesMessage msg2 = new FacesMessage(FacesMessage.SEVERITY_WARN, "", "");
+        FacesMessage msg3 = new FacesMessage(FacesMessage.SEVERITY_ERROR, "", "");
+
+        context.addMessage(null, msg2);
+        context.addMessage(null, msg1);
+        context.addMessage(null, msg3);
+
+        assertTrue(FacesMessage.SEVERITY_ERROR.equals(context.getMaximumSeverity()));
+        return "PASSED";
+    }
+
+    public String getMessageResult6() {
+        FacesContext context = FacesContext.getCurrentInstance();
+        Iterator<FacesMessage> messages = context.getMessages();
+        assertTrue(!messages.hasNext());
+
+        FacesMessage msg1 = new FacesMessage(FacesMessage.SEVERITY_INFO, "", "");
+        FacesMessage msg2 = new FacesMessage(FacesMessage.SEVERITY_WARN, "", "");
+        FacesMessage msg3 = new FacesMessage(FacesMessage.SEVERITY_ERROR, "", "");
+        FacesMessage msg4 = new FacesMessage(FacesMessage.SEVERITY_FATAL, "", "");
+        context.addMessage(null, msg2);
+        context.addMessage(null, msg1);
+        context.addMessage(null, msg3);
+
+        messages = context.getMessages();
+        assertTrue(messages.hasNext());
+        while (messages.hasNext()) {
+            messages.next();
+            messages.remove();
+        }
+        assertTrue(context.getMaximumSeverity() == null);
+
+        context.addMessage("id1", msg1);
+        context.addMessage("id3", msg1);
+        context.addMessage("id3", msg3);
+        context.addMessage("id3", msg1);
+        context.addMessage(null, msg4);
+        assertTrue(context.getMaximumSeverity() == FacesMessage.SEVERITY_FATAL);
+
+        for (Iterator<FacesMessage> i = context.getMessages(); i.hasNext(); ) {
+            FacesMessage m = i.next();
+            if (m.getSeverity() == FacesMessage.SEVERITY_FATAL) {
+                i.remove();
+            }
+        }
+        assertTrue(context.getMaximumSeverity() == FacesMessage.SEVERITY_ERROR);
+
+        for (Iterator<FacesMessage> i = context.getMessages(); i.hasNext(); ) {
+            FacesMessage m = i.next();
+            if (m.getSeverity() == FacesMessage.SEVERITY_ERROR) {
+                i.remove();
+            }
+        }
+        assertTrue(context.getMaximumSeverity() == FacesMessage.SEVERITY_INFO);
+
+        for (Iterator<FacesMessage> i = context.getMessages(); i.hasNext(); ) {
+            FacesMessage m = i.next();
+            if (m.getSeverity() == FacesMessage.SEVERITY_INFO) {
+                i.remove();
+            }
+        }
+        assertTrue(context.getMaximumSeverity() == null);
+        return "PASSED";
+    }
+
+    public String getMessageResult7() {
+        FacesContext context = FacesContext.getCurrentInstance();
+        Iterator<FacesMessage> messages = context.getMessages();
+        assertTrue(!messages.hasNext());
+
+        FacesMessage msg1 = new FacesMessage(FacesMessage.SEVERITY_INFO, "", "");
+        FacesMessage msg2 = new FacesMessage(FacesMessage.SEVERITY_WARN, "", "");
+        FacesMessage msg3 = new FacesMessage(FacesMessage.SEVERITY_ERROR, "", "");
+        FacesMessage msg4 = new FacesMessage(FacesMessage.SEVERITY_FATAL, "", "");
+        context.addMessage("id1", msg1);
+        context.addMessage("id3", msg2);
+        context.addMessage("id3", msg3);
+        context.addMessage("id3", msg4);
+        context.addMessage("id2", msg1);
+
+        for (Iterator<String> i = context.getClientIdsWithMessages();
+              i.hasNext();) {
+            String id = i.next();
+            if ("id3".equals(id)) {
+                i.remove();
+            }
+        }
+
+        assertTrue(!context.getMessages("id3").hasNext());
+        assertTrue(context.getMaximumSeverity() == FacesMessage.SEVERITY_INFO);
+
+        for (Iterator<String> i = context.getClientIdsWithMessages();
+              i.hasNext();) {
+            i.next();
+            i.remove();
+        }
+
+        assertTrue(context.getMaximumSeverity() == null);
+        return "PASSED";
+    }
+
+    public String getMessageResult8() {
+        FacesContext context = FacesContext.getCurrentInstance();
+
+        // we use a custom iterator for iterating over all messages.
+        // ensure the proper exceptions are thrown by next() and remove()
+        context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_FATAL, "", ""));
+
+        // next should throw NoSuchElementException after the second call to next()
+        Iterator i = context.getMessages();
+        i.next();
+        try {
+            i.next();
+            assertTrue(false);
+        } catch (NoSuchElementException nsee) { }
+
+        // remove should throw an IllegalStateException if called without having
+        // called next()
+        i = context.getMessages();
+        try {
+            i.remove();
+            assertTrue(false);
+        } catch (IllegalStateException ise) { }               
+
+        return "PASSED";
+    }
+}
diff --git a/test/agnostic/context/regular/src/main/java/com/sun/faces/test/agnostic/context/regular/PostBackBean.java b/test/agnostic/context/regular/src/main/java/com/sun/faces/test/agnostic/context/regular/PostBackBean.java
new file mode 100644
index 0000000..07ea5b0
--- /dev/null
+++ b/test/agnostic/context/regular/src/main/java/com/sun/faces/test/agnostic/context/regular/PostBackBean.java
@@ -0,0 +1,100 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.context.regular;
+
+import com.sun.faces.context.ExternalContextImpl;
+import com.sun.faces.context.FacesContextImpl;
+import com.sun.faces.lifecycle.LifecycleImpl;
+import java.io.Serializable;
+import javax.faces.application.Application;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.RequestScoped;
+import javax.faces.component.UIViewRoot;
+import javax.faces.context.FacesContext;
+import javax.faces.render.RenderKitFactory;
+import javax.servlet.ServletContext;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import static org.junit.Assert.*;
+
+/**
+ * The managed bean for the postBack tests.
+ *
+ * @author Manfred Riem (manfred.riem at oracle.com)
+ */
+ at ManagedBean(name = "postBackBean")
+ at RequestScoped
+public class PostBackBean implements Serializable {
+
+    public String getPostBackResult1() {
+        FacesContext currentContext = FacesContext.getCurrentInstance();
+        ExternalContextImpl externalContext =
+                new ExternalContextImpl(
+                (ServletContext) currentContext.getExternalContext().getContext(),
+                (HttpServletRequest) currentContext.getExternalContext().getRequest(),
+                (HttpServletResponse) currentContext.getExternalContext().getResponse());
+        LifecycleImpl lifecycle = new LifecycleImpl();
+        FacesContextImpl context = new FacesContextImpl(externalContext, lifecycle);
+
+        /*
+         * Actual test.
+         */
+        String key = "com.sun.faces.context.FacesContextImpl_POST_BACK";
+        assertTrue(!context.isPostback());
+        assertTrue(context.getAttributes().containsKey(key));
+        assertTrue(Boolean.FALSE.equals(context.getAttributes().get(key)));
+        return "PASSED";
+    }
+
+    public String getPostBackResult2() {
+        FacesContext context = FacesContext.getCurrentInstance();
+
+        /*
+         * Actual test.
+         */
+        String key = "com.sun.faces.context.FacesContextImpl_POST_BACK";
+        if (context.isPostback()) {
+            assertTrue(context.getAttributes().containsKey(key));
+            assertTrue(Boolean.TRUE.equals(context.getAttributes().get(key)));
+            return "PASSED";
+        }
+        return "";
+    }
+}
diff --git a/test/agnostic/context/regular/src/main/java/com/sun/faces/test/agnostic/context/regular/ReleaseBean.java b/test/agnostic/context/regular/src/main/java/com/sun/faces/test/agnostic/context/regular/ReleaseBean.java
new file mode 100644
index 0000000..6ba3057
--- /dev/null
+++ b/test/agnostic/context/regular/src/main/java/com/sun/faces/test/agnostic/context/regular/ReleaseBean.java
@@ -0,0 +1,130 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.context.regular;
+
+import com.sun.faces.context.ExternalContextImpl;
+import com.sun.faces.context.FacesContextImpl;
+import com.sun.faces.lifecycle.LifecycleImpl;
+import java.io.Serializable;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.RequestScoped;
+import javax.faces.context.FacesContext;
+import javax.servlet.ServletContext;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import static org.junit.Assert.*;
+
+/**
+ * The managed bean for the release tests.
+ *
+ * @author Manfred Riem (manfred.riem at oracle.com)
+ */
+ at ManagedBean(name = "releaseBean")
+ at RequestScoped
+public class ReleaseBean implements Serializable {
+
+    public String getReleaseResult1() {
+        try {
+            FacesContext currentContext = FacesContext.getCurrentInstance();
+            ExternalContextImpl externalContext =
+                    new ExternalContextImpl(
+                    (ServletContext) currentContext.getExternalContext().getContext(),
+                    (HttpServletRequest) currentContext.getExternalContext().getRequest(),
+                    (HttpServletResponse) currentContext.getExternalContext().getResponse());
+            LifecycleImpl lifecycle = new LifecycleImpl();
+
+            FacesContextImpl context = new FacesContextImpl(externalContext, lifecycle);
+            assertTrue(!context.isReleased());
+            context.release();
+            assertTrue(context.isReleased());
+
+
+        } catch (NullPointerException exception) {
+            exception.printStackTrace();
+            fail();
+        }
+
+        return "PASSED";
+    }
+
+    public String getReleaseResult2() {
+        try {
+            FacesContext currentContext = FacesContext.getCurrentInstance();
+            ExternalContextImpl externalContext =
+                    new ExternalContextImpl(
+                    (ServletContext) currentContext.getExternalContext().getContext(),
+                    (HttpServletRequest) currentContext.getExternalContext().getRequest(),
+                    (HttpServletResponse) currentContext.getExternalContext().getResponse());
+            LifecycleImpl lifecycle = new LifecycleImpl();
+
+            FacesContextImpl context = new FacesContextImpl(externalContext, lifecycle);
+
+            context.release();
+            boolean exceptionThrown = false;
+            try {
+                context.getViewRoot();
+            } catch (IllegalStateException ise) {
+                exceptionThrown = true;
+            }
+            assertTrue(exceptionThrown);
+
+            exceptionThrown = false;
+            try {
+                context.getResponseStream();
+            } catch (IllegalStateException ise) {
+                exceptionThrown = true;
+            }
+
+            exceptionThrown = false;
+            try {
+                context.getResponseWriter();
+            } catch (IllegalStateException ise) {
+                exceptionThrown = true;
+            }
+            assertTrue(exceptionThrown);
+
+        } catch (NullPointerException exception) {
+            exception.printStackTrace();
+            fail();
+        }
+
+        return "PASSED";
+    }
+}
diff --git a/test/agnostic/context/regular/src/main/java/com/sun/faces/test/agnostic/context/regular/RenderBean.java b/test/agnostic/context/regular/src/main/java/com/sun/faces/test/agnostic/context/regular/RenderBean.java
new file mode 100644
index 0000000..c3e61f7
--- /dev/null
+++ b/test/agnostic/context/regular/src/main/java/com/sun/faces/test/agnostic/context/regular/RenderBean.java
@@ -0,0 +1,154 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.context.regular;
+
+import com.sun.faces.context.ExternalContextImpl;
+import com.sun.faces.context.FacesContextImpl;
+import com.sun.faces.lifecycle.LifecycleImpl;
+import java.io.Serializable;
+import javax.faces.application.Application;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.RequestScoped;
+import javax.faces.component.UIViewRoot;
+import javax.faces.context.FacesContext;
+import javax.faces.render.RenderKitFactory;
+import javax.servlet.ServletContext;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import static org.junit.Assert.*;
+
+/**
+ * The managed bean for the render tests.
+ *
+ * @author Manfred Riem (manfred.riem at oracle.com)
+ */
+ at ManagedBean(name = "renderBean")
+ at RequestScoped
+public class RenderBean implements Serializable {
+
+    public String getRenderResult1() {
+        try {
+            FacesContext currentContext = FacesContext.getCurrentInstance();
+            ExternalContextImpl externalContext =
+                    new ExternalContextImpl(
+                    (ServletContext) currentContext.getExternalContext().getContext(),
+                    (HttpServletRequest) currentContext.getExternalContext().getRequest(),
+                    (HttpServletResponse) currentContext.getExternalContext().getResponse());
+            LifecycleImpl lifecycle = new LifecycleImpl();
+            FacesContextImpl context = new FacesContextImpl(externalContext, lifecycle);
+
+            /*
+             * Actual test.
+             */
+            context.renderResponse();
+            assertTrue(context.getRenderResponse());
+
+        } catch (Exception exception) {
+            exception.printStackTrace();
+            fail();
+        }
+        return "PASSED";
+    }
+
+    public String getRenderResult2() {
+        try {
+            FacesContext currentContext = FacesContext.getCurrentInstance();
+            ExternalContextImpl externalContext =
+                    new ExternalContextImpl(
+                    (ServletContext) currentContext.getExternalContext().getContext(),
+                    (HttpServletRequest) currentContext.getExternalContext().getRequest(),
+                    (HttpServletResponse) currentContext.getExternalContext().getResponse());
+            LifecycleImpl lifecycle = new LifecycleImpl();
+            FacesContextImpl context = new FacesContextImpl(externalContext, lifecycle);
+
+            /*
+             * Actual test.
+             */
+            context.responseComplete();
+            assertTrue(context.getResponseComplete());
+
+        } catch (Exception exception) {
+            exception.printStackTrace();
+            fail();
+        }
+        return "PASSED";
+    }
+
+    public String getRenderResult3() {
+        try {
+            FacesContext currentContext = FacesContext.getCurrentInstance();
+            ExternalContextImpl externalContext =
+                    new ExternalContextImpl(
+                    (ServletContext) currentContext.getExternalContext().getContext(),
+                    (HttpServletRequest) currentContext.getExternalContext().getRequest(),
+                    (HttpServletResponse) currentContext.getExternalContext().getResponse());
+            LifecycleImpl lifecycle = new LifecycleImpl();
+            FacesContextImpl context = new FacesContextImpl(externalContext, lifecycle);
+
+            /*
+             * Actual test.
+             */
+            Application application = context.getApplication();
+            UIViewRoot root = (UIViewRoot) application.createComponent(UIViewRoot.COMPONENT_TYPE);
+
+            // if no UIViewRoot then null should be returned
+            assertTrue(context.getRenderKit() == null);
+
+            // if UIViewRoot is present but has no RenderKitID, null
+            // should be rendered
+            context.setViewRoot(root);
+            assertTrue(context.getRenderKit() == null);
+
+            // UIViewRoot is present, and has an ID for a non existent
+            // RenderKit - null should be returned
+            root.setRenderKitId("nosuchkit");
+            assertTrue(context.getRenderKit() == null);
+
+            // UIViewRoot with valid RenderKit id should return a RenderKit
+            root.setRenderKitId(RenderKitFactory.HTML_BASIC_RENDER_KIT);
+            assertTrue(context.getRenderKit() != null);
+
+        } catch (Exception exception) {
+            exception.printStackTrace();
+            fail();
+        }
+        return "PASSED";
+    }
+}
diff --git a/test/agnostic/context/regular/src/main/webapp/WEB-INF/faces-config.xml b/test/agnostic/context/regular/src/main/webapp/WEB-INF/faces-config.xml
new file mode 100644
index 0000000..9d5f622
--- /dev/null
+++ b/test/agnostic/context/regular/src/main/webapp/WEB-INF/faces-config.xml
@@ -0,0 +1,7 @@
+<?xml version='1.0' encoding='UTF-8'?>
+
+<faces-config version="2.0"
+              xmlns="http://java.sun.com/xml/ns/javaee" 
+              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+              xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd">
+</faces-config>
diff --git a/test/agnostic/context/regular/src/main/webapp/WEB-INF/glassfish-web.xml b/test/agnostic/context/regular/src/main/webapp/WEB-INF/glassfish-web.xml
new file mode 100644
index 0000000..c6de9a8
--- /dev/null
+++ b/test/agnostic/context/regular/src/main/webapp/WEB-INF/glassfish-web.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
+<glassfish-web-app error-url="">
+  <context-root>/test-agnostic-context-regular</context-root>
+  <class-loader delegate="true"/>
+  <jsp-config>
+    <property name="keepgenerated" value="true">
+      <description>Keep a copy of the generated servlet class' java code.</description>
+    </property>
+  </jsp-config>
+</glassfish-web-app>
diff --git a/test/agnostic/context/regular/src/main/webapp/WEB-INF/web.xml b/test/agnostic/context/regular/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..44acd31
--- /dev/null
+++ b/test/agnostic/context/regular/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>${webapp.projectStage}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
+        <param-value>${webapp.partialStateSaving}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>${webapp.stateSavingMethod}</param-value>
+    </context-param>
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <session-config>
+        <session-timeout>
+            30
+        </session-timeout>
+    </session-config>
+    <error-page>
+        <exception-type>java.lang.Throwable</exception-type>
+        <location>/error.jsp</location>
+    </error-page>
+</web-app>
diff --git a/test/agnostic/context/regular/src/main/webapp/accessor1.xhtml b/test/agnostic/context/regular/src/main/webapp/accessor1.xhtml
new file mode 100644
index 0000000..b66d751
--- /dev/null
+++ b/test/agnostic/context/regular/src/main/webapp/accessor1.xhtml
@@ -0,0 +1,12 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title>Facelet Title</title>
+    </h:head>
+    <h:body>
+        <h:outputText value="#{accessorBean.accessorResult1}"/>
+    </h:body>
+</html>
+
diff --git a/test/agnostic/context/regular/src/main/webapp/accessor2.xhtml b/test/agnostic/context/regular/src/main/webapp/accessor2.xhtml
new file mode 100644
index 0000000..d8f8668
--- /dev/null
+++ b/test/agnostic/context/regular/src/main/webapp/accessor2.xhtml
@@ -0,0 +1,12 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title>Facelet Title</title>
+    </h:head>
+    <h:body>
+        <h:outputText value="#{accessorBean.accessorResult2}"/>
+    </h:body>
+</html>
+
diff --git a/test/agnostic/context/regular/src/main/webapp/accessor3.xhtml b/test/agnostic/context/regular/src/main/webapp/accessor3.xhtml
new file mode 100644
index 0000000..3ee8285
--- /dev/null
+++ b/test/agnostic/context/regular/src/main/webapp/accessor3.xhtml
@@ -0,0 +1,12 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title>Facelet Title</title>
+    </h:head>
+    <h:body>
+        <h:outputText value="#{accessorBean.accessorResult3}"/>
+    </h:body>
+</html>
+
diff --git a/test/agnostic/context/regular/src/main/webapp/attributes1.xhtml b/test/agnostic/context/regular/src/main/webapp/attributes1.xhtml
new file mode 100644
index 0000000..213a59d
--- /dev/null
+++ b/test/agnostic/context/regular/src/main/webapp/attributes1.xhtml
@@ -0,0 +1,12 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title>Facelet Title</title>
+    </h:head>
+    <h:body>
+        <h:outputText value="#{attributesBean.attributesResult1}"/>
+    </h:body>
+</html>
+
diff --git a/test/agnostic/context/regular/src/main/webapp/constructor1.xhtml b/test/agnostic/context/regular/src/main/webapp/constructor1.xhtml
new file mode 100644
index 0000000..b5e9c52
--- /dev/null
+++ b/test/agnostic/context/regular/src/main/webapp/constructor1.xhtml
@@ -0,0 +1,13 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title>Facelet Title</title>
+    </h:head>
+    <h:body>
+        <h:outputText value="#{constructorBean.constructorResult1}"/>
+    </h:body>
+</html>
diff --git a/test/agnostic/context/regular/src/main/webapp/constructor2.xhtml b/test/agnostic/context/regular/src/main/webapp/constructor2.xhtml
new file mode 100644
index 0000000..bdc5a40
--- /dev/null
+++ b/test/agnostic/context/regular/src/main/webapp/constructor2.xhtml
@@ -0,0 +1,13 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title>Facelet Title</title>
+    </h:head>
+    <h:body>
+        <h:outputText value="#{constructorBean.constructorResult2}"/>
+    </h:body>
+</html>
diff --git a/test/agnostic/context/regular/src/main/webapp/constructor3.xhtml b/test/agnostic/context/regular/src/main/webapp/constructor3.xhtml
new file mode 100644
index 0000000..075599b
--- /dev/null
+++ b/test/agnostic/context/regular/src/main/webapp/constructor3.xhtml
@@ -0,0 +1,13 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title>Facelet Title</title>
+    </h:head>
+    <h:body>
+        <h:outputText value="#{constructorBean.constructorResult3}"/>
+    </h:body>
+</html>
diff --git a/test/agnostic/context/regular/src/main/webapp/constructor4.xhtml b/test/agnostic/context/regular/src/main/webapp/constructor4.xhtml
new file mode 100644
index 0000000..d8987e7
--- /dev/null
+++ b/test/agnostic/context/regular/src/main/webapp/constructor4.xhtml
@@ -0,0 +1,13 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title>Facelet Title</title>
+    </h:head>
+    <h:body>
+        <h:outputText value="#{constructorBean.constructorResult4}"/>
+    </h:body>
+</html>
diff --git a/test/agnostic/context/regular/src/main/webapp/el1.xhtml b/test/agnostic/context/regular/src/main/webapp/el1.xhtml
new file mode 100644
index 0000000..b70dddf
--- /dev/null
+++ b/test/agnostic/context/regular/src/main/webapp/el1.xhtml
@@ -0,0 +1,12 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title>Facelet Title</title>
+    </h:head>
+    <h:body>
+        <h:outputText value="#{elBean.elResult1}"/>
+    </h:body>
+</html>
+
diff --git a/test/agnostic/context/regular/src/main/webapp/error.jsp b/test/agnostic/context/regular/src/main/webapp/error.jsp
new file mode 100644
index 0000000..52d9786
--- /dev/null
+++ b/test/agnostic/context/regular/src/main/webapp/error.jsp
@@ -0,0 +1,56 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<%@ page isErrorPage="true" import="java.io.*" contentType="text/plain"%>
+
+Message:
+<%=exception.getMessage()%>
+
+StackTrace:
+<%
+       StringWriter stringWriter = new StringWriter();
+       PrintWriter printWriter = new PrintWriter(stringWriter);
+       exception.printStackTrace(printWriter);
+       out.println(stringWriter);
+       printWriter.close();
+       stringWriter.close();
+%>
diff --git a/test/agnostic/context/regular/src/main/webapp/issue2540.xhtml b/test/agnostic/context/regular/src/main/webapp/issue2540.xhtml
new file mode 100644
index 0000000..9ca7efb
--- /dev/null
+++ b/test/agnostic/context/regular/src/main/webapp/issue2540.xhtml
@@ -0,0 +1,53 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title>Facelet Title</title>
+    </h:head>
+    <h:body>
+        <h:outputText value="#{extContextBean.encodePartialActionURLNPE}"/>
+    </h:body>
+</html>
+
diff --git a/test/agnostic/context/regular/src/main/webapp/issue2541.xhtml b/test/agnostic/context/regular/src/main/webapp/issue2541.xhtml
new file mode 100644
index 0000000..707d087
--- /dev/null
+++ b/test/agnostic/context/regular/src/main/webapp/issue2541.xhtml
@@ -0,0 +1,53 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title>Facelet Title</title>
+    </h:head>
+    <h:body>
+        <h:outputText value="#{extContextBean.encodeResourceURLNPE}"/>
+    </h:body>
+</html>
+
diff --git a/test/agnostic/context/regular/src/main/webapp/issue2543.xhtml b/test/agnostic/context/regular/src/main/webapp/issue2543.xhtml
new file mode 100644
index 0000000..05efe12
--- /dev/null
+++ b/test/agnostic/context/regular/src/main/webapp/issue2543.xhtml
@@ -0,0 +1,53 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title>Facelet Title</title>
+    </h:head>
+    <h:body>
+        <h:outputText value="#{extContextBean.resourceNPE}"/>
+    </h:body>
+</html>
+
diff --git a/test/agnostic/context/regular/src/main/webapp/issue2545.xhtml b/test/agnostic/context/regular/src/main/webapp/issue2545.xhtml
new file mode 100644
index 0000000..a73dfad
--- /dev/null
+++ b/test/agnostic/context/regular/src/main/webapp/issue2545.xhtml
@@ -0,0 +1,53 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title>Facelet Title</title>
+    </h:head>
+    <h:body>
+        <h:outputText value="#{extContextBean.resourceAsStreamNPE}"/>
+    </h:body>
+</html>
+
diff --git a/test/agnostic/context/regular/src/main/webapp/issue2546.xhtml b/test/agnostic/context/regular/src/main/webapp/issue2546.xhtml
new file mode 100644
index 0000000..05d309a
--- /dev/null
+++ b/test/agnostic/context/regular/src/main/webapp/issue2546.xhtml
@@ -0,0 +1,53 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title>Facelet Title</title>
+    </h:head>
+    <h:body>
+        <h:outputText value="#{extContextBean.resourcePathsNPE}"/>
+    </h:body>
+</html>
+
diff --git a/test/agnostic/context/regular/src/main/webapp/issue2549.xhtml b/test/agnostic/context/regular/src/main/webapp/issue2549.xhtml
new file mode 100644
index 0000000..bb3b476
--- /dev/null
+++ b/test/agnostic/context/regular/src/main/webapp/issue2549.xhtml
@@ -0,0 +1,53 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title>Facelet Title</title>
+    </h:head>
+    <h:body>
+        <h:outputText value="#{extContextBean.isUserInRoleNPE}"/>
+    </h:body>
+</html>
+
diff --git a/test/agnostic/context/regular/src/main/webapp/issue2550.xhtml b/test/agnostic/context/regular/src/main/webapp/issue2550.xhtml
new file mode 100644
index 0000000..4067e65
--- /dev/null
+++ b/test/agnostic/context/regular/src/main/webapp/issue2550.xhtml
@@ -0,0 +1,55 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title>Facelet Title</title>
+    </h:head>
+    <h:body>
+        <h:outputText value="#{extContextBean.log1NPE}"/>
+        <h:outputText value="#{extContextBean.log2NPE}"/>
+        <h:outputText value="#{extContextBean.log3NPE}"/>
+    </h:body>
+</html>
+
diff --git a/test/agnostic/context/regular/src/main/webapp/message1.xhtml b/test/agnostic/context/regular/src/main/webapp/message1.xhtml
new file mode 100644
index 0000000..607ad94
--- /dev/null
+++ b/test/agnostic/context/regular/src/main/webapp/message1.xhtml
@@ -0,0 +1,11 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title>Facelet Title</title>
+    </h:head>
+    <h:body>
+        <h:outputText value="#{messageBean.messageResult1}"/>
+    </h:body>
+</html>
diff --git a/test/agnostic/context/regular/src/main/webapp/message2.xhtml b/test/agnostic/context/regular/src/main/webapp/message2.xhtml
new file mode 100644
index 0000000..37b4dfe
--- /dev/null
+++ b/test/agnostic/context/regular/src/main/webapp/message2.xhtml
@@ -0,0 +1,11 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title>Facelet Title</title>
+    </h:head>
+    <h:body>
+        <h:outputText value="#{messageBean.messageResult2}"/>
+    </h:body>
+</html>
diff --git a/test/agnostic/context/regular/src/main/webapp/message3.xhtml b/test/agnostic/context/regular/src/main/webapp/message3.xhtml
new file mode 100644
index 0000000..4e7727e
--- /dev/null
+++ b/test/agnostic/context/regular/src/main/webapp/message3.xhtml
@@ -0,0 +1,11 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title>Facelet Title</title>
+    </h:head>
+    <h:body>
+        <h:outputText value="#{messageBean.messageResult3}"/>
+    </h:body>
+</html>
diff --git a/test/agnostic/context/regular/src/main/webapp/message4.xhtml b/test/agnostic/context/regular/src/main/webapp/message4.xhtml
new file mode 100644
index 0000000..92d7330
--- /dev/null
+++ b/test/agnostic/context/regular/src/main/webapp/message4.xhtml
@@ -0,0 +1,11 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title>Facelet Title</title>
+    </h:head>
+    <h:body>
+        <h:outputText value="#{messageBean.messageResult4}"/>
+    </h:body>
+</html>
diff --git a/test/agnostic/context/regular/src/main/webapp/message5.xhtml b/test/agnostic/context/regular/src/main/webapp/message5.xhtml
new file mode 100644
index 0000000..4d05883
--- /dev/null
+++ b/test/agnostic/context/regular/src/main/webapp/message5.xhtml
@@ -0,0 +1,11 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title>Facelet Title</title>
+    </h:head>
+    <h:body>
+        <h:outputText value="#{messageBean.messageResult5}"/>
+    </h:body>
+</html>
diff --git a/test/agnostic/context/regular/src/main/webapp/message6.xhtml b/test/agnostic/context/regular/src/main/webapp/message6.xhtml
new file mode 100644
index 0000000..11872d3
--- /dev/null
+++ b/test/agnostic/context/regular/src/main/webapp/message6.xhtml
@@ -0,0 +1,11 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title>Facelet Title</title>
+    </h:head>
+    <h:body>
+        <h:outputText value="#{messageBean.messageResult6}"/>
+    </h:body>
+</html>
diff --git a/test/agnostic/context/regular/src/main/webapp/message7.xhtml b/test/agnostic/context/regular/src/main/webapp/message7.xhtml
new file mode 100644
index 0000000..0641aca
--- /dev/null
+++ b/test/agnostic/context/regular/src/main/webapp/message7.xhtml
@@ -0,0 +1,11 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title>Facelet Title</title>
+    </h:head>
+    <h:body>
+        <h:outputText value="#{messageBean.messageResult7}"/>
+    </h:body>
+</html>
diff --git a/test/agnostic/context/regular/src/main/webapp/message8.xhtml b/test/agnostic/context/regular/src/main/webapp/message8.xhtml
new file mode 100644
index 0000000..0e61318
--- /dev/null
+++ b/test/agnostic/context/regular/src/main/webapp/message8.xhtml
@@ -0,0 +1,11 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title>Facelet Title</title>
+    </h:head>
+    <h:body>
+        <h:outputText value="#{messageBean.messageResult8}"/>
+    </h:body>
+</html>
diff --git a/test/agnostic/context/regular/src/main/webapp/postback1.xhtml b/test/agnostic/context/regular/src/main/webapp/postback1.xhtml
new file mode 100644
index 0000000..8383796
--- /dev/null
+++ b/test/agnostic/context/regular/src/main/webapp/postback1.xhtml
@@ -0,0 +1,11 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title>Facelet Title</title>
+    </h:head>
+    <h:body>
+        <h:outputText value="#{postBackBean.postBackResult1}"/>
+    </h:body>
+</html>
diff --git a/test/agnostic/context/regular/src/main/webapp/postback2.xhtml b/test/agnostic/context/regular/src/main/webapp/postback2.xhtml
new file mode 100644
index 0000000..e35d1fe
--- /dev/null
+++ b/test/agnostic/context/regular/src/main/webapp/postback2.xhtml
@@ -0,0 +1,14 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title>Facelet Title</title>
+    </h:head>
+    <h:body>
+        <h:form id="form">
+            <h:outputText value="#{postBackBean.postBackResult2}"/>
+            <h:commandButton id="submit" value="Submit"/>
+        </h:form>
+    </h:body>
+</html>
diff --git a/test/agnostic/context/regular/src/main/webapp/release1.xhtml b/test/agnostic/context/regular/src/main/webapp/release1.xhtml
new file mode 100644
index 0000000..8a80c02
--- /dev/null
+++ b/test/agnostic/context/regular/src/main/webapp/release1.xhtml
@@ -0,0 +1,12 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title>Facelet Title</title>
+    </h:head>
+    <h:body>
+        <h:outputText value="#{releaseBean.releaseResult1}"/>
+    </h:body>
+</html>
+
diff --git a/test/agnostic/context/regular/src/main/webapp/release2.xhtml b/test/agnostic/context/regular/src/main/webapp/release2.xhtml
new file mode 100644
index 0000000..c851030
--- /dev/null
+++ b/test/agnostic/context/regular/src/main/webapp/release2.xhtml
@@ -0,0 +1,12 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title>Facelet Title</title>
+    </h:head>
+    <h:body>
+        <h:outputText value="#{releaseBean.releaseResult2}"/>
+    </h:body>
+</html>
+
diff --git a/test/agnostic/context/regular/src/main/webapp/render1.xhtml b/test/agnostic/context/regular/src/main/webapp/render1.xhtml
new file mode 100644
index 0000000..e37c22f
--- /dev/null
+++ b/test/agnostic/context/regular/src/main/webapp/render1.xhtml
@@ -0,0 +1,11 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title>Facelet Title</title>
+    </h:head>
+    <h:body>
+        <h:outputText value="#{renderBean.renderResult1}"/>
+    </h:body>
+</html>
diff --git a/test/agnostic/context/regular/src/main/webapp/render2.xhtml b/test/agnostic/context/regular/src/main/webapp/render2.xhtml
new file mode 100644
index 0000000..309511d
--- /dev/null
+++ b/test/agnostic/context/regular/src/main/webapp/render2.xhtml
@@ -0,0 +1,11 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title>Facelet Title</title>
+    </h:head>
+    <h:body>
+        <h:outputText value="#{renderBean.renderResult2}"/>
+    </h:body>
+</html>
diff --git a/test/agnostic/context/regular/src/main/webapp/render3.xhtml b/test/agnostic/context/regular/src/main/webapp/render3.xhtml
new file mode 100644
index 0000000..8531027
--- /dev/null
+++ b/test/agnostic/context/regular/src/main/webapp/render3.xhtml
@@ -0,0 +1,11 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title>Facelet Title</title>
+    </h:head>
+    <h:body>
+        <h:outputText value="#{renderBean.renderResult3}"/>
+    </h:body>
+</html>
diff --git a/test/agnostic/context/regular/src/test/java/com/sun/faces/test/agnostic/context/regular/AccessorIT.java b/test/agnostic/context/regular/src/test/java/com/sun/faces/test/agnostic/context/regular/AccessorIT.java
new file mode 100644
index 0000000..e22354b
--- /dev/null
+++ b/test/agnostic/context/regular/src/test/java/com/sun/faces/test/agnostic/context/regular/AccessorIT.java
@@ -0,0 +1,84 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.context.regular;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ * The accessor tests.
+ *
+ * @author Manfred Riem (manfred.riem at oracle.com)
+ */
+public class AccessorIT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+        webClient.setThrowExceptionOnFailingStatusCode(true);
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testAccessor1() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "/faces/accessor1.xhtml");
+    }
+
+    @Test
+    public void testAccessor2() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "/faces/accessor2.xhtml");
+    }
+
+    @Test
+    public void testAccessor3() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "/faces/accessor3.xhtml");
+    }
+}
diff --git a/test/agnostic/context/regular/src/test/java/com/sun/faces/test/agnostic/context/regular/ConstructorIT.java b/test/agnostic/context/regular/src/test/java/com/sun/faces/test/agnostic/context/regular/ConstructorIT.java
new file mode 100644
index 0000000..bfd3c4d
--- /dev/null
+++ b/test/agnostic/context/regular/src/test/java/com/sun/faces/test/agnostic/context/regular/ConstructorIT.java
@@ -0,0 +1,89 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.context.regular;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ * The constructor tests.
+ *
+ * @author Manfred Riem (manfred.riem at oracle.com)
+ */
+public class ConstructorIT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+        webClient.setThrowExceptionOnFailingStatusCode(true);
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testConstructor1() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "/faces/constructor1.xhtml");
+    }
+
+    @Test
+    public void testConstructor2() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "/faces/constructor2.xhtml");
+    }
+
+    @Test
+    public void testConstructor3() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "/faces/constructor3.xhtml");
+    }
+
+    @Test
+    public void testConstructor4() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "/faces/constructor4.xhtml");
+    }
+}
diff --git a/test/agnostic/context/regular/src/test/java/com/sun/faces/test/agnostic/context/regular/ElIT.java b/test/agnostic/context/regular/src/test/java/com/sun/faces/test/agnostic/context/regular/ElIT.java
new file mode 100644
index 0000000..5a6e8fa
--- /dev/null
+++ b/test/agnostic/context/regular/src/test/java/com/sun/faces/test/agnostic/context/regular/ElIT.java
@@ -0,0 +1,74 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.context.regular;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ * The render tests.
+ *
+ * @author Manfred Riem (manfred.riem at oracle.com)
+ */
+public class ElIT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+        webClient.setThrowExceptionOnFailingStatusCode(true);
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testEl1() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "/faces/el1.xhtml");
+    }
+}
diff --git a/test/agnostic/context/regular/src/test/java/com/sun/faces/test/agnostic/context/regular/ExternalContextIT.java b/test/agnostic/context/regular/src/test/java/com/sun/faces/test/agnostic/context/regular/ExternalContextIT.java
new file mode 100644
index 0000000..337b1fc
--- /dev/null
+++ b/test/agnostic/context/regular/src/test/java/com/sun/faces/test/agnostic/context/regular/ExternalContextIT.java
@@ -0,0 +1,113 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.context.regular;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+/**
+ * The constructor tests.
+ *
+ * @author Manfred Riem (manfred.riem at oracle.com)
+ */
+public class ExternalContextIT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+        webClient.setThrowExceptionOnFailingStatusCode(true);
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testEncodeResourceURLNPE() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "/faces/issue2541.xhtml");
+        assertTrue(page.asText().contains("PASSED"));
+    }
+
+    @Test
+    public void testEncodePartialActionURLNPE() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "/faces/issue2540.xhtml");
+        assertTrue(page.asText().contains("PASSED"));
+    }
+
+    @Test
+    public void testIsUserInRoleNPE() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "/faces/issue2549.xhtml");
+        assertTrue(page.asText().contains("PASSED"));
+    }
+
+    @Test
+    public void testLogNPE() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "/faces/issue2550.xhtml");
+        assertTrue(page.asText().contains("PASSEDPASSEDPASSED"));
+    }
+
+    @Test
+    public void testGetResourceNPE() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "/faces/issue2543.xhtml");
+        assertTrue(page.asText().contains("PASSED"));
+    }
+
+    @Test
+    public void testGetResourceAsStreamNPE() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "/faces/issue2545.xhtml");
+        assertTrue(page.asText().contains("PASSED"));
+    }
+
+    @Test
+    public void testGetResourcePathsNPE() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "/faces/issue2546.xhtml");
+        assertTrue(page.asText().contains("PASSED"));
+    }
+}
diff --git a/test/agnostic/context/regular/src/test/java/com/sun/faces/test/agnostic/context/regular/MessageIT.java b/test/agnostic/context/regular/src/test/java/com/sun/faces/test/agnostic/context/regular/MessageIT.java
new file mode 100644
index 0000000..2348829
--- /dev/null
+++ b/test/agnostic/context/regular/src/test/java/com/sun/faces/test/agnostic/context/regular/MessageIT.java
@@ -0,0 +1,109 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.context.regular;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ * The message tests.
+ *
+ * @author Manfred Riem (manfred.riem at oracle.com)
+ */
+public class MessageIT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+        webClient.setThrowExceptionOnFailingStatusCode(true);
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testMessage1() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "/faces/message1.xhtml");
+    }
+
+    @Test
+    public void testMessage2() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "/faces/message2.xhtml");
+    }
+
+    @Test
+    public void testMessage3() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "/faces/message3.xhtml");
+    }
+
+    @Test
+    public void testMessage4() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "/faces/message4.xhtml");
+    }
+
+    @Test
+    public void testMessage5() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "/faces/message5.xhtml");
+    }
+
+    @Test
+    public void testMessage6() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "/faces/message6.xhtml");
+    }
+
+    @Test
+    public void testMessage7() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "/faces/message7.xhtml");
+    }
+
+    @Test
+    public void testMessage8() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "/faces/message8.xhtml");
+    }
+}
diff --git a/test/agnostic/context/regular/src/test/java/com/sun/faces/test/agnostic/context/regular/PostBackIT.java b/test/agnostic/context/regular/src/test/java/com/sun/faces/test/agnostic/context/regular/PostBackIT.java
new file mode 100644
index 0000000..7d4407c
--- /dev/null
+++ b/test/agnostic/context/regular/src/test/java/com/sun/faces/test/agnostic/context/regular/PostBackIT.java
@@ -0,0 +1,84 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.context.regular;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+/**
+ * The postback tests.
+ *
+ * @author Manfred Riem (manfred.riem at oracle.com)
+ */
+public class PostBackIT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+        webClient.setThrowExceptionOnFailingStatusCode(true);
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testPostBack1() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "/faces/postback1.xhtml");
+    }
+
+    @Test
+    public void testPostBack2() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "/faces/postback2.xhtml");
+        HtmlSubmitInput submit = page.getHtmlElementById("form:submit");
+        page = submit.click();
+        assertTrue(page.asText().indexOf("PASSED") != -1);
+    }
+}
diff --git a/test/agnostic/context/regular/src/test/java/com/sun/faces/test/agnostic/context/regular/ReleaseIT.java b/test/agnostic/context/regular/src/test/java/com/sun/faces/test/agnostic/context/regular/ReleaseIT.java
new file mode 100644
index 0000000..7da8a0c
--- /dev/null
+++ b/test/agnostic/context/regular/src/test/java/com/sun/faces/test/agnostic/context/regular/ReleaseIT.java
@@ -0,0 +1,74 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.context.regular;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+public class ReleaseIT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+        webClient.setThrowExceptionOnFailingStatusCode(true);
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testRelease1() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "/faces/release1.xhtml");
+    }
+
+    @Test
+    public void testRelease2() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "/faces/release2.xhtml");
+    }
+}
diff --git a/test/agnostic/context/regular/src/test/java/com/sun/faces/test/agnostic/context/regular/RenderIT.java b/test/agnostic/context/regular/src/test/java/com/sun/faces/test/agnostic/context/regular/RenderIT.java
new file mode 100644
index 0000000..e8e794e
--- /dev/null
+++ b/test/agnostic/context/regular/src/test/java/com/sun/faces/test/agnostic/context/regular/RenderIT.java
@@ -0,0 +1,84 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.context.regular;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ * The render tests.
+ *
+ * @author Manfred Riem (manfred.riem at oracle.com)
+ */
+public class RenderIT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+        webClient.setThrowExceptionOnFailingStatusCode(true);
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testRender1() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "/faces/render1.xhtml");
+    }
+
+    @Test
+    public void testRender2() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "/faces/render2.xhtml");
+    }
+
+    @Test
+    public void testRender3() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "/faces/render3.xhtml");
+    }
+}
diff --git a/test/agnostic/converter/basic/nbactions.xml b/test/agnostic/converter/basic/nbactions.xml
new file mode 100644
index 0000000..6067df5
--- /dev/null
+++ b/test/agnostic/converter/basic/nbactions.xml
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--><actions>
+        <action>
+            <actionName>debug.test.single</actionName>
+            <goals>
+                <goal>test-compile</goal>
+                <goal>surefire:test</goal>
+            </goals>
+            <properties>
+                <test>${packageClassName}</test>
+                <forkMode>once</forkMode>
+                <maven.surefire.debug>-Xdebug -Xrunjdwp:transport=dt_socket,server=n,address=${jpda.address}</maven.surefire.debug>
+                <jpda.listen>true</jpda.listen>
+                <project.build.finalName>test-agnostic-converter-basic</project.build.finalName>
+                <integration.serverPort>8080</integration.serverPort>
+                <integration.serverName>localhost</integration.serverName>
+                <integration.url>http://localhost:8080/test-agnostic-converter-basic/</integration.url>
+            </properties>
+        </action>
+        <action>
+            <actionName>test.single</actionName>
+            <goals>
+                <goal>test-compile</goal>
+                <goal>surefire:test</goal>
+            </goals>
+            <properties>
+                <project.build.finalName>test-agnostic-converter-basic</project.build.finalName>
+                <integration.serverPort>8080</integration.serverPort>
+                <integration.serverName>localhost</integration.serverName>
+                <integration.url>http://localhost:8080/test-agnostic-converter-basic/</integration.url>
+                <test>${packageClassName}</test>
+            </properties>
+        </action>
+    </actions>
diff --git a/test/agnostic/converter/basic/pom.xml b/test/agnostic/converter/basic/pom.xml
new file mode 100644
index 0000000..0161eee
--- /dev/null
+++ b/test/agnostic/converter/basic/pom.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.agnostic.converter</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.agnostic.converter</groupId>
+    <artifactId>basic</artifactId>
+    <packaging>war</packaging>
+    <name>Mojarra ${project.version} - Test - Agnostic - Converter - Basic Tests</name>
+    <build>
+        <finalName>test-agnostic-converter-basic</finalName>
+    </build>
+    <properties>
+        <netbeans.hint.deploy.server>gfv3ee6</netbeans.hint.deploy.server>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/test/agnostic/converter/basic/src/main/java/com/sun/faces/test/Bean.java b/test/agnostic/converter/basic/src/main/java/com/sun/faces/test/Bean.java
new file mode 100644
index 0000000..aff6186
--- /dev/null
+++ b/test/agnostic/converter/basic/src/main/java/com/sun/faces/test/Bean.java
@@ -0,0 +1,92 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.test;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.ViewScoped;
+import javax.faces.context.ExternalContext;
+import javax.faces.context.FacesContext;
+
+ at ManagedBean
+ at ViewScoped
+public class Bean implements Serializable {
+    
+    String valueFromQueryParamAtCtorTime;
+    
+    public Bean() {
+        ExternalContext extContext = FacesContext.getCurrentInstance().getExternalContext();
+        valueFromQueryParamAtCtorTime = extContext.getRequestParameterMap().get("pageWithViewScopedBean");
+        foos = new ArrayList<Foo>();
+        foos.add(new Foo("Shirley"));
+        foos.add(new Foo("Stan"));
+        foos.add(new Foo("Cole"));
+
+    }
+    
+    
+    public String getBob() { return "Bob created with param " + valueFromQueryParamAtCtorTime; }
+    
+    
+    List<Foo> foos;
+
+    public List<Foo> getFoos() {
+        return foos;
+    }
+
+    public void setFoos(List<Foo> foos) {
+        this.foos = foos;
+    }
+        
+    private Foo selectedFoo;
+
+    public Foo getSelectedFoo() {
+        return selectedFoo;
+    }
+
+    public void setSelectedFoo(Foo selectedFoo) {
+        this.selectedFoo = selectedFoo;
+    }
+    
+    
+}
diff --git a/test/agnostic/converter/basic/src/main/java/com/sun/faces/test/Foo.java b/test/agnostic/converter/basic/src/main/java/com/sun/faces/test/Foo.java
new file mode 100644
index 0000000..d1e8116
--- /dev/null
+++ b/test/agnostic/converter/basic/src/main/java/com/sun/faces/test/Foo.java
@@ -0,0 +1,85 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.test;
+
+import java.io.Serializable;
+
+public class Foo implements Serializable {
+    
+    private String name = "";
+
+    public Foo(String name) {
+        this.name = name;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (obj == null) {
+            return false;
+        }
+        if (getClass() != obj.getClass()) {
+            return false;
+        }
+        final Foo other = (Foo) obj;
+        if ((this.name == null) ? (other.name != null) : !this.name.equals(other.name)) {
+            return false;
+        }
+        return true;
+    }
+
+    @Override
+    public int hashCode() {
+        int hash = 5;
+        hash = 41 * hash + (this.name != null ? this.name.hashCode() : 0);
+        return hash;
+    }
+    
+    
+    
+}
diff --git a/test/agnostic/converter/basic/src/main/java/com/sun/faces/test/FooConverterBase.java b/test/agnostic/converter/basic/src/main/java/com/sun/faces/test/FooConverterBase.java
new file mode 100644
index 0000000..2681db7
--- /dev/null
+++ b/test/agnostic/converter/basic/src/main/java/com/sun/faces/test/FooConverterBase.java
@@ -0,0 +1,75 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.test;
+
+import java.util.logging.Logger;
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.convert.Converter;
+
+public class FooConverterBase implements Converter {
+    
+    public static final Logger LOGGER = Logger.getAnonymousLogger();
+
+    public FooConverterBase() {
+        LOGGER.info("FooConverter ctor");        
+    }
+    
+    @Override
+    public Object getAsObject(FacesContext context, UIComponent component, String value) {
+        Foo result = new Foo(value);
+        
+        return result;
+    }
+
+    @Override
+    public String getAsString(FacesContext context, UIComponent component, Object value) {
+        String result = "";
+        
+        if (null != value) {
+            result =  ((Foo)value).getName();
+        }
+        return result;
+    }
+    
+    
+    
+}
diff --git a/test/agnostic/converter/basic/src/main/java/com/sun/faces/test/FooConverterByClass.java b/test/agnostic/converter/basic/src/main/java/com/sun/faces/test/FooConverterByClass.java
new file mode 100644
index 0000000..aca6c42
--- /dev/null
+++ b/test/agnostic/converter/basic/src/main/java/com/sun/faces/test/FooConverterByClass.java
@@ -0,0 +1,48 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.test;
+
+import javax.faces.convert.FacesConverter;
+
+ at FacesConverter(forClass = com.sun.faces.test.Foo.class)
+public class FooConverterByClass extends FooConverterBase {
+    
+}
diff --git a/test/agnostic/converter/basic/src/main/java/com/sun/faces/test/FooConverterById.java b/test/agnostic/converter/basic/src/main/java/com/sun/faces/test/FooConverterById.java
new file mode 100644
index 0000000..c7022c9
--- /dev/null
+++ b/test/agnostic/converter/basic/src/main/java/com/sun/faces/test/FooConverterById.java
@@ -0,0 +1,49 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.test;
+
+import javax.faces.convert.FacesConverter;
+
+
+ at FacesConverter(value = "fooConverter")
+public class FooConverterById extends FooConverterBase {
+    
+}
diff --git a/test/agnostic/converter/basic/src/main/java/com/sun/faces/test/agnostic/converter/basic/Issue1660Bean.java b/test/agnostic/converter/basic/src/main/java/com/sun/faces/test/agnostic/converter/basic/Issue1660Bean.java
new file mode 100644
index 0000000..100d4cb
--- /dev/null
+++ b/test/agnostic/converter/basic/src/main/java/com/sun/faces/test/agnostic/converter/basic/Issue1660Bean.java
@@ -0,0 +1,87 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDLGPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.converter.basic;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.RequestScoped;
+import javax.faces.model.SelectItem;
+
+ at ManagedBean
+ at RequestScoped
+public class Issue1660Bean implements Serializable {
+
+    private Issue1660SimpleEnum simpleValue = Issue1660SimpleEnum.VALUE1;
+    private Issue1660ComplexEnum complexValue = Issue1660ComplexEnum.VALUE2;
+
+    public Issue1660SimpleEnum getSimpleValue() {
+        return simpleValue;
+    }
+
+    public void setSimpleValue(Issue1660SimpleEnum simpleValue) {
+        this.simpleValue = simpleValue;
+    }
+
+    public Issue1660ComplexEnum getComplexValue() {
+        return complexValue;
+    }
+
+    public void setComplexValue(Issue1660ComplexEnum complexValue) {
+        this.complexValue = complexValue;
+    }
+
+    public List<SelectItem> getSimpleValues() {
+        List<SelectItem> ret = new ArrayList<SelectItem>();
+        for (Issue1660SimpleEnum val : Issue1660SimpleEnum.values()) {
+            ret.add(new SelectItem(val, val.toString()));
+        }
+        return ret;
+    }
+
+    public List<SelectItem> getComplexValues() {
+        List<SelectItem> ret = new ArrayList<SelectItem>();
+        for (Issue1660ComplexEnum val : Issue1660ComplexEnum.values()) {
+            ret.add(new SelectItem(val, val.toString()));
+        }
+        return ret;
+    }
+}
diff --git a/test/agnostic/converter/basic/src/main/java/com/sun/faces/test/agnostic/converter/basic/Issue1660ComplexEnum.java b/test/agnostic/converter/basic/src/main/java/com/sun/faces/test/agnostic/converter/basic/Issue1660ComplexEnum.java
new file mode 100644
index 0000000..fec0094
--- /dev/null
+++ b/test/agnostic/converter/basic/src/main/java/com/sun/faces/test/agnostic/converter/basic/Issue1660ComplexEnum.java
@@ -0,0 +1,48 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDLGPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.converter.basic;
+
+public enum Issue1660ComplexEnum {
+
+    VALUE1 {
+    },
+    VALUE2 {
+    };
+}
diff --git a/test/agnostic/converter/basic/src/main/java/com/sun/faces/test/agnostic/converter/basic/Issue1660SimpleEnum.java b/test/agnostic/converter/basic/src/main/java/com/sun/faces/test/agnostic/converter/basic/Issue1660SimpleEnum.java
new file mode 100644
index 0000000..3ec93df
--- /dev/null
+++ b/test/agnostic/converter/basic/src/main/java/com/sun/faces/test/agnostic/converter/basic/Issue1660SimpleEnum.java
@@ -0,0 +1,46 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDLGPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.converter.basic;
+
+public enum Issue1660SimpleEnum {
+
+    VALUE1,
+    VALUE2;
+}
diff --git a/test/agnostic/converter/basic/src/main/webapp/Issue2384Using.xhtml b/test/agnostic/converter/basic/src/main/webapp/Issue2384Using.xhtml
new file mode 100644
index 0000000..e94bd01
--- /dev/null
+++ b/test/agnostic/converter/basic/src/main/webapp/Issue2384Using.xhtml
@@ -0,0 +1,73 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    <h:head>
+        <title>Test Converter Usage</title>
+    </h:head>
+    <h:body>
+        
+        <p>#{bean.bob}</p>
+        
+        <h:form prependId="false">
+
+            <p><h:commandButton id="reload" value="reload" /></p>
+            <p><h:commandButton id="differentPage" value="differentPage" action="Issue2384UsingWithoutQueryParam"/></p>
+            
+            <hr />
+            
+            <h:selectOneMenu id="selectFoo" value="#{bean.selectedFoo}" >
+                <f:selectItem itemLabel="" />
+                <f:selectItems value="#{bean.foos}" var="foo" itemLabel="#{foo.name} " itemValue="#{foo}" />
+                <f:converter converterId="fooConverter" />
+            </h:selectOneMenu>
+            
+            <p>Selected foo: <h:outputText id="output" value="#{bean.selectedFoo}" /></p>
+            
+        </h:form>
+        
+    </h:body>
+</html>
+
diff --git a/test/agnostic/converter/basic/src/main/webapp/Issue2384UsingWithoutQueryParam.xhtml b/test/agnostic/converter/basic/src/main/webapp/Issue2384UsingWithoutQueryParam.xhtml
new file mode 100644
index 0000000..abdda24
--- /dev/null
+++ b/test/agnostic/converter/basic/src/main/webapp/Issue2384UsingWithoutQueryParam.xhtml
@@ -0,0 +1,61 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title>Test Converter Usage</title>
+    </h:head>
+    <h:body>
+        
+        <p>#{bean.bob}</p>
+        
+        <h:form prependId="false">
+
+            <p><h:commandButton value="submit" /></p>
+            
+        </h:form>
+        
+    </h:body>
+</html>
+
diff --git a/test/agnostic/converter/basic/src/main/webapp/WEB-INF/glassfish-web.xml b/test/agnostic/converter/basic/src/main/webapp/WEB-INF/glassfish-web.xml
new file mode 100644
index 0000000..50fdcd6
--- /dev/null
+++ b/test/agnostic/converter/basic/src/main/webapp/WEB-INF/glassfish-web.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
+<glassfish-web-app error-url="">
+  <context-root>/test-agnostic-converter-basic</context-root>
+  <class-loader delegate="true"/>
+  <jsp-config>
+    <property name="keepgenerated" value="true">
+      <description>Keep a copy of the generated servlet class' java code.</description>
+    </property>
+  </jsp-config>
+</glassfish-web-app>
diff --git a/test/agnostic/converter/basic/src/main/webapp/WEB-INF/web.xml b/test/agnostic/converter/basic/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..4a2112d
--- /dev/null
+++ b/test/agnostic/converter/basic/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>${webapp.projectStage}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
+        <param-value>${webapp.partialStateSaving}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>${webapp.stateSavingMethod}</param-value>
+    </context-param>
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <session-config>
+        <session-timeout>
+            30
+        </session-timeout>
+    </session-config>
+    <welcome-file-list>
+        <welcome-file>faces/index.xhtml</welcome-file>
+    </welcome-file-list>
+</web-app>
diff --git a/test/agnostic/converter/basic/src/main/webapp/index.xhtml b/test/agnostic/converter/basic/src/main/webapp/index.xhtml
new file mode 100644
index 0000000..808ac4d
--- /dev/null
+++ b/test/agnostic/converter/basic/src/main/webapp/index.xhtml
@@ -0,0 +1,55 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title>Converter tests</title>
+    </h:head>
+    <h:body>
+        <h1>Converter tests</h1>
+        <a id="2384" href="faces/Issue2384Using.xhtml?pageWithViewScopedBean=pageWithViewScopedBean">Issue2384Using</a> <br/>
+        <a href="faces/issue1660.xhtml">Issue #1660</a> <br/>
+    </h:body>
+</html>
diff --git a/test/agnostic/converter/basic/src/main/webapp/issue1660.xhtml b/test/agnostic/converter/basic/src/main/webapp/issue1660.xhtml
new file mode 100644
index 0000000..45a428e
--- /dev/null
+++ b/test/agnostic/converter/basic/src/main/webapp/issue1660.xhtml
@@ -0,0 +1,23 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title>Issue #1660</title>
+    </h:head>
+    <h:body>
+        <h1>The application demonstrating issue #1660</h1>
+        <h:form prependId="false">
+            <h:outputText value="Simple value is "/>
+            <h:outputText value="#{issue1660Bean.simpleValue}"/>
+            <br/>
+            <h:outputText value="Complex value would be "/>
+            <h:outputText value="#{issue1660Bean.complexValue}"/>
+            <br/>
+            <h:commandButton id="button" value="invokeMe"/>
+        </h:form>
+    </h:body>
+</html>
diff --git a/test/agnostic/converter/basic/src/test/java/com/sun/faces/test/agnostic/converter/basic/Issue1660IT.java b/test/agnostic/converter/basic/src/test/java/com/sun/faces/test/agnostic/converter/basic/Issue1660IT.java
new file mode 100644
index 0000000..a1e85c9
--- /dev/null
+++ b/test/agnostic/converter/basic/src/test/java/com/sun/faces/test/agnostic/converter/basic/Issue1660IT.java
@@ -0,0 +1,75 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDLGPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.converter.basic;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class Issue1660IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testConverterInstallation() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/issue1660.xhtml");
+        assertTrue(page.asXml().matches("(?s).*Simple\\s+value\\s+is\\s+VALUE1.*"));
+        
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("button");
+        page = button.click();       
+        assertTrue(page.asXml().matches("(?s).*Simple\\s+value\\s+is\\s+VALUE1.*"));       
+    }
+}
diff --git a/test/agnostic/converter/basic/src/test/java/com/sun/faces/test/agnostic/converter/basic/Issue2384IT.java b/test/agnostic/converter/basic/src/test/java/com/sun/faces/test/agnostic/converter/basic/Issue2384IT.java
new file mode 100644
index 0000000..5059cc7
--- /dev/null
+++ b/test/agnostic/converter/basic/src/test/java/com/sun/faces/test/agnostic/converter/basic/Issue2384IT.java
@@ -0,0 +1,123 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDLGPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.converter.basic;
+
+import com.gargoylesoftware.htmlunit.html.HtmlOption;
+import java.util.List;
+import com.gargoylesoftware.htmlunit.html.HtmlSelect;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlAnchor;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+
+import com.gargoylesoftware.htmlunit.javascript.host.html.HTMLSelectElement;
+import org.junit.*;
+import static org.junit.Assert.*;
+
+public class Issue2384IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testViewScopedBeansWorkAsExepected() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl);
+        
+        HtmlAnchor link = (HtmlAnchor) page.getElementById("2384");
+        page = link.click();
+        
+        String pageText = page.getBody().asText();
+        assertTrue(pageText.contains("Bob created with param pageWithViewScopedBean"));
+        
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("reload");
+        page = button.click();
+        
+        pageText = page.getBody().asText();
+        assertTrue(pageText.contains("Bob created with param pageWithViewScopedBean"));
+        
+        button = (HtmlSubmitInput) page.getElementById("reload");
+        page = button.click();
+        
+        pageText = page.getBody().asText();
+        assertTrue(pageText.contains("Bob created with param pageWithViewScopedBean"));
+        
+        button = (HtmlSubmitInput) page.getElementById("differentPage");
+        page = button.click();
+        
+        pageText = page.getBody().asText();
+        assertTrue(pageText.contains("Bob created with param null"));
+        
+        
+    }
+    
+    @Test
+    public void testConverterInstallation() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl);
+        
+        HtmlAnchor link = (HtmlAnchor) page.getElementById("2384");
+        page = link.click();
+        
+        HtmlSelect menu = (HtmlSelect) page.getElementById("selectFoo");
+        List<HtmlOption> options = menu.getOptions();
+        HtmlOption last = options.get(options.size() - 1);
+        menu.setSelectedAttribute(last, true);
+        
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("reload");
+        page = button.click();
+        
+        String pageText = page.getBody().asText();
+        assertTrue(pageText.contains("Selected foo: Cole"));
+        
+        
+    }
+    
+    
+}
diff --git a/test/agnostic/converter/converterThrowsNPE/nbactions.xml b/test/agnostic/converter/converterThrowsNPE/nbactions.xml
new file mode 100644
index 0000000..67e8ba2
--- /dev/null
+++ b/test/agnostic/converter/converterThrowsNPE/nbactions.xml
@@ -0,0 +1,124 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--><actions>
+        <action>
+            <actionName>debug.test.single</actionName>
+            <goals>
+                <goal>test-compile</goal>
+                <goal>surefire:test</goal>
+            </goals>
+            <properties>
+                <test>${packageClassName}</test>
+                <forkMode>once</forkMode>
+                <maven.surefire.debug>-Xdebug -Xrunjdwp:transport=dt_socket,server=n,address=${jpda.address}</maven.surefire.debug>
+                <jpda.listen>true</jpda.listen>
+                <project.build.finalName>test-agnostic-converter-converterThrowsNPE</project.build.finalName>
+                <webapp.projectStage>Development</webapp.projectStage>
+                <integration.serverPort>8080</integration.serverPort>
+                <integration.serverName>localhost</integration.serverName>
+                <integration.url>http://localhost:8080/test-agnostic-converter-converterThrowsNPE/</integration.url>
+            </properties>
+        </action>
+        <action>
+            <actionName>test.single</actionName>
+            <goals>
+                <goal>test-compile</goal>
+                <goal>surefire:test</goal>
+            </goals>
+            <properties>
+                <project.build.finalName>test-agnostic-converter-converterThrowsNPE</project.build.finalName>
+                <integration.serverPort>8080</integration.serverPort>
+                <integration.serverName>localhost</integration.serverName>
+                <integration.url>http://localhost:8080/test-agnostic-converter-converterThrowsNPE/</integration.url>
+                <test>${packageClassName}</test>
+            </properties>
+        </action>
+        <action>
+            <actionName>build</actionName>
+            <goals>
+                <goal>install</goal>
+            </goals>
+            <properties>
+                <webapp.projectStage>Development</webapp.projectStage>
+            </properties>
+        </action>
+        <action>
+            <actionName>rebuild</actionName>
+            <goals>
+                <goal>clean</goal>
+                <goal>install</goal>
+            </goals>
+            <properties>
+                <webapp.projectStage>Development</webapp.projectStage>
+            </properties>
+        </action>
+        <action>
+            <actionName>test</actionName>
+            <goals>
+                <goal>test</goal>
+            </goals>
+            <properties>
+                <webapp.projectStage>Development</webapp.projectStage>
+            </properties>
+        </action>
+        <action>
+            <actionName>run</actionName>
+            <goals>
+                <goal>package</goal>
+            </goals>
+            <properties>
+                <netbeans.deploy>true</netbeans.deploy>
+                <webapp.projectStage>Development</webapp.projectStage>
+            </properties>
+        </action>
+        <action>
+            <actionName>run.single.deploy</actionName>
+            <goals>
+                <goal>package</goal>
+            </goals>
+            <properties>
+                <netbeans.deploy>true</netbeans.deploy>
+                <netbeans.deploy.clientUrlPart>${webpagePath}</netbeans.deploy.clientUrlPart>
+                <webapp.projectStage>Development</webapp.projectStage>
+            </properties>
+        </action>
+    </actions>
diff --git a/test/agnostic/converter/converterThrowsNPE/pom.xml b/test/agnostic/converter/converterThrowsNPE/pom.xml
new file mode 100644
index 0000000..5fa0e2b
--- /dev/null
+++ b/test/agnostic/converter/converterThrowsNPE/pom.xml
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <artifactId>pom</artifactId>
+        <groupId>com.sun.faces.test.agnostic.converter</groupId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.agnostic.converter</groupId>
+    <artifactId>converterThrowsNPE</artifactId>
+    <packaging>war</packaging>
+    <name>Mojarra ${project.version} - Test - Agnostic - Converter - Converter Throws NullPointerException</name>  
+    <build>
+        <finalName>test-agnostic-converter-converterThrowsNPE</finalName>
+    </build>
+    <properties>
+        <netbeans.hint.deploy.server>gfv3ee6</netbeans.hint.deploy.server>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/test/agnostic/converter/converterThrowsNPE/src/main/java/com/sun/faces/test/agnostic/converter/converterThrowsNPE/ThrowNPEConverter.java b/test/agnostic/converter/converterThrowsNPE/src/main/java/com/sun/faces/test/agnostic/converter/converterThrowsNPE/ThrowNPEConverter.java
new file mode 100644
index 0000000..77d3122
--- /dev/null
+++ b/test/agnostic/converter/converterThrowsNPE/src/main/java/com/sun/faces/test/agnostic/converter/converterThrowsNPE/ThrowNPEConverter.java
@@ -0,0 +1,65 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.test.agnostic.converter.converterThrowsNPE;
+
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.convert.Converter;
+import javax.faces.convert.FacesConverter;
+
+ at FacesConverter(value="throwNPE")
+public class ThrowNPEConverter implements Converter {
+
+    public Object getAsObject(FacesContext context, UIComponent component, String value) {
+        String a = null;
+        System.out.println(a.toString());
+        return value;        
+    }
+
+    public String getAsString(FacesContext context, UIComponent component, Object value) {
+        String a = null;
+        System.out.println(a.toString());
+        return value.toString();        
+    }
+    
+    
+    
+}
diff --git a/test/agnostic/converter/converterThrowsNPE/src/main/webapp/WEB-INF/glassfish-web.xml b/test/agnostic/converter/converterThrowsNPE/src/main/webapp/WEB-INF/glassfish-web.xml
new file mode 100644
index 0000000..ec9527a
--- /dev/null
+++ b/test/agnostic/converter/converterThrowsNPE/src/main/webapp/WEB-INF/glassfish-web.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
+<glassfish-web-app error-url="">
+  <context-root>/test-agnostic-converter-converterThrowsNPE</context-root>
+  <class-loader delegate="true"/>
+  <jsp-config>
+    <property name="keepgenerated" value="true">
+      <description>Keep a copy of the generated servlet class' java code.</description>
+    </property>
+  </jsp-config>
+</glassfish-web-app>
diff --git a/test/agnostic/converter/converterThrowsNPE/src/main/webapp/WEB-INF/web.xml b/test/agnostic/converter/converterThrowsNPE/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..8722f96
--- /dev/null
+++ b/test/agnostic/converter/converterThrowsNPE/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>${webapp.projectStage}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
+        <param-value>${webapp.partialStateSaving}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>${webapp.stateSavingMethod}</param-value>
+    </context-param>
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <welcome-file-list>
+        <welcome-file>faces/index.xhtml</welcome-file>
+    </welcome-file-list>
+</web-app>
diff --git a/test/agnostic/converter/converterThrowsNPE/src/main/webapp/index.xhtml b/test/agnostic/converter/converterThrowsNPE/src/main/webapp/index.xhtml
new file mode 100644
index 0000000..38c29d8
--- /dev/null
+++ b/test/agnostic/converter/converterThrowsNPE/src/main/webapp/index.xhtml
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core" xmlns:c="http://java.sun.com/jsp/jstl/core">
+    <h:head>
+        <title></title>
+        
+    </h:head>
+    <body>
+        
+        <script type="text/javascript">
+            
+            var handleError = function handleError(data) {
+                var span = document.getElementById("ajaxResponseOutput");
+                span.innerHTML = data.errorName;
+            }
+            
+            jsf.ajax.addOnError(handleError);
+            
+        </script>
+        
+        <h:form id="ajaxForm" prependId="false">
+            <h:inputText id="text1" value="#{sessionScope.name}">
+                <f:converter converterId="throwNPE" />
+            </h:inputText>
+            <h:commandButton id="button1" value="submit ajax">
+                <f:ajax execute="@form" render="@form" />
+            </h:commandButton>
+
+        </h:form>
+    
+        <h:form id="nonAjaxForm" prependId="false">
+            <h:inputText id="text2" value="#{sessionScope.name}">
+                <f:converter converterId="throwNPE" />
+            </h:inputText>
+            <h:commandButton id="button2" value="submit" />
+        </h:form>
+    
+    
+    <p><span id="ajaxResponseOutput" /> </p>
+
+    </body>
+</html>
+
diff --git a/test/agnostic/converter/converterThrowsNPE/src/test/java/com/sun/faces/test/agnostic/converter/converterThrowsNPE/VerifyExceptionThrownIT.java b/test/agnostic/converter/converterThrowsNPE/src/test/java/com/sun/faces/test/agnostic/converter/converterThrowsNPE/VerifyExceptionThrownIT.java
new file mode 100644
index 0000000..0e7dada
--- /dev/null
+++ b/test/agnostic/converter/converterThrowsNPE/src/test/java/com/sun/faces/test/agnostic/converter/converterThrowsNPE/VerifyExceptionThrownIT.java
@@ -0,0 +1,93 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.converter.converterThrowsNPE;
+
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import com.gargoylesoftware.htmlunit.html.HtmlElement;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.sun.faces.test.junit.JsfTest;
+import com.sun.faces.test.junit.JsfTestRunner;
+import com.sun.faces.test.junit.JsfVersion;
+import static org.junit.Assert.assertTrue;
+import org.junit.runner.RunWith;
+
+ at RunWith(JsfTestRunner.class)
+public class VerifyExceptionThrownIT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+        webClient.setJavaScriptEnabled(true);
+        webClient.setJavaScriptTimeout(60000);
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @JsfTest(JsfVersion.JSF_2_2_1)
+    @Test
+    public void testConverterThrowsNPEViaAjax() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl);
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getHtmlElementById("button1");
+        page = button.click();
+        webClient.waitForBackgroundJavaScript(60000);
+        HtmlElement span = page.getHtmlElementById("ajaxResponseOutput");
+        assertTrue(span.asText().contains("NullPointerException"));
+    }
+
+    @Test
+    public void testConverterThrowsNPEViaNonAjax() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl);
+        webClient.setThrowExceptionOnFailingStatusCode(false);
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getHtmlElementById("button2");
+        page = button.click();
+        assertTrue(page.asText().contains("NullPointerException"));
+    }
+}
diff --git a/test/agnostic/converter/pom.xml b/test/agnostic/converter/pom.xml
new file mode 100644
index 0000000..e03e82e
--- /dev/null
+++ b/test/agnostic/converter/pom.xml
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.agnostic</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.agnostic.converter</groupId>
+    <artifactId>pom</artifactId>
+    <packaging>pom</packaging>
+    <name>Mojarra ${project.version} - Test - Agnostic - Converter</name>
+    <modules>
+        <module>basic</module>
+        <module>converterThrowsNPE</module>
+    </modules>
+</project>
diff --git a/test/agnostic/externalContext/basic/nbactions.xml b/test/agnostic/externalContext/basic/nbactions.xml
new file mode 100644
index 0000000..0abc788
--- /dev/null
+++ b/test/agnostic/externalContext/basic/nbactions.xml
@@ -0,0 +1,101 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--><actions>
+        <action>
+            <actionName>debug.test.single</actionName>
+            <goals>
+                <goal>test-compile</goal>
+                <goal>surefire:test</goal>
+            </goals>
+            <properties>
+                <test>${packageClassName}</test>
+                <forkMode>once</forkMode>
+                <maven.surefire.debug>-Xdebug -Xrunjdwp:transport=dt_socket,server=n,address=${jpda.address}</maven.surefire.debug>
+                <jpda.listen>true</jpda.listen>
+                <project.build.finalName>test-agnostic-externalContext-basic</project.build.finalName>
+                <webapp.projectStage>Development</webapp.projectStage>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                <integration.serverPort>8080</integration.serverPort>
+                <integration.serverName>localhost</integration.serverName>
+                <integration.url>http://localhost:8080/test-agnostic-externalContext-basic/</integration.url>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+            </properties>
+        </action>
+        <action>
+            <actionName>test.single</actionName>
+            <goals>
+                <goal>test-compile</goal>
+                <goal>surefire:test</goal>
+            </goals>
+            <properties>
+                <project.build.finalName>test-agnostic-externalContext-basic</project.build.finalName>
+                <integration.serverPort>8080</integration.serverPort>
+                <integration.serverName>localhost</integration.serverName>
+                <integration.url>http://localhost:8080/test-agnostic-externalContext-basic/</integration.url>
+                <test>${packageClassName}</test>
+            </properties>
+        </action>
+        <action>
+            <actionName>rebuild</actionName>
+            <goals>
+                <goal>clean</goal>
+                <goal>install</goal>
+            </goals>
+            <properties>
+                <webapp.partialStateSaving>true</webapp.partialStateSaving>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                <webapp.projectStage>Development</webapp.projectStage>
+            </properties>
+        </action>
+        <action>
+            <actionName>run</actionName>
+            <goals>
+                <goal>package</goal>
+            </goals>
+            <properties>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                <netbeans.deploy>true</netbeans.deploy>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                <webapp.projectStage>Development</webapp.projectStage>
+            </properties>
+        </action>
+    </actions>
diff --git a/test/agnostic/externalContext/basic/pom.xml b/test/agnostic/externalContext/basic/pom.xml
new file mode 100644
index 0000000..ada08fe
--- /dev/null
+++ b/test/agnostic/externalContext/basic/pom.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.agnostic.externalContext</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.agnostic.externalContext</groupId>
+    <artifactId>basic</artifactId>
+    <packaging>war</packaging>
+    <name>Mojarra ${project.version} - Test - Agnostic - ExternalContext - Basic Tests</name>
+    <build>
+        <finalName>test-agnostic-externalContext-basic</finalName>
+    </build>
+    <properties>
+        <netbeans.hint.deploy.server>gfv3ee6</netbeans.hint.deploy.server>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/test/agnostic/externalContext/basic/src/main/java/com/sun/faces/test/agnostic/externalContext/basic/Bean.java b/test/agnostic/externalContext/basic/src/main/java/com/sun/faces/test/agnostic/externalContext/basic/Bean.java
new file mode 100644
index 0000000..290d1f3
--- /dev/null
+++ b/test/agnostic/externalContext/basic/src/main/java/com/sun/faces/test/agnostic/externalContext/basic/Bean.java
@@ -0,0 +1,86 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.externalContext.basic;
+
+import java.io.Serializable;
+
+import java.util.HashMap;
+import java.util.Map;
+import javax.enterprise.context.RequestScoped;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.ManagedProperty;
+import javax.faces.context.FacesContext;
+
+ at ManagedBean
+ at RequestScoped
+public class Bean implements Serializable {
+    
+    @ManagedProperty(value="#{facesContext}")
+    private FacesContext facesContext;
+
+    public FacesContext getFacesContext() {
+        return facesContext;
+    }
+
+    public void setFacesContext(FacesContext facesContext) {
+        this.facesContext = facesContext;
+    }
+    
+
+    public String getName() {
+        Map<String, Object> m = new HashMap<String, Object>();
+        m.put("httpOnly", Boolean.TRUE);
+        facesContext.getExternalContext().addResponseCookie("csftaebName", "csftaebValue", m);
+        return "TestBean";
+    }
+    
+    public String submit() {
+        String stringWithSpecialChars = "日א";
+        
+        return "issue2440?param=" + stringWithSpecialChars + "&faces-redirect=true";
+    }
+    
+    public String getStringWithSpecialCharacters() {
+        String stringWithSpecialChars = "日א";
+        
+        return stringWithSpecialChars;
+        
+    }
+}
diff --git a/test/agnostic/externalContext/basic/src/main/webapp/WEB-INF/web.xml b/test/agnostic/externalContext/basic/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..d67b0c8
--- /dev/null
+++ b/test/agnostic/externalContext/basic/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>${webapp.projectStage}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
+        <param-value>${webapp.partialStateSaving}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>${webapp.stateSavingMethod}</param-value>
+    </context-param>
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <welcome-file-list>
+        <welcome-file>faces/index.xhtml</welcome-file>
+    </welcome-file-list>
+</web-app>
diff --git a/test/agnostic/externalContext/basic/src/main/webapp/bookmarkable01.xhtml b/test/agnostic/externalContext/basic/src/main/webapp/bookmarkable01.xhtml
new file mode 100644
index 0000000..f95e166
--- /dev/null
+++ b/test/agnostic/externalContext/basic/src/main/webapp/bookmarkable01.xhtml
@@ -0,0 +1,60 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <head>
+        <title>bookmarkable01</title>
+    </head>
+    <body>
+        <h1>bookmarkable01</h1>
+
+        <h:form prependId="false">
+            <p><h:commandButton id="back" value="back" action="issue2440" /></p>
+            
+        </h:form>
+    </body>
+</html>
diff --git a/test/agnostic/externalContext/basic/src/main/webapp/index.xhtml b/test/agnostic/externalContext/basic/src/main/webapp/index.xhtml
new file mode 100644
index 0000000..f5db606
--- /dev/null
+++ b/test/agnostic/externalContext/basic/src/main/webapp/index.xhtml
@@ -0,0 +1,59 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <head>
+        <title>Cookie Tests</title>
+    </head>
+    <body>
+        <h1>Cookie Tests</h1>
+        <p>#{bean.name}</p>
+        <h:form prependId="false">
+            <p><h:commandButton id="stay" value="stay" /></p>
+        </h:form>
+    </body>
+</html>
diff --git a/test/agnostic/externalContext/basic/src/main/webapp/issue2440.xhtml b/test/agnostic/externalContext/basic/src/main/webapp/issue2440.xhtml
new file mode 100644
index 0000000..157e523
--- /dev/null
+++ b/test/agnostic/externalContext/basic/src/main/webapp/issue2440.xhtml
@@ -0,0 +1,69 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core">
+    <f:view encoding="UTF-8">
+    <head>
+        <title>queryString encoding</title>
+    </head>
+    <body>
+        <h1>queryString encoding</h1>
+
+        <h:form prependId="false">
+            <p><h:commandButton id="reload" value="reload" action="#{bean.submit}" /></p>
+            
+            <p>
+               <h:button id="bookmarkable01" value="bookmarkable01" outcome="bookmarkable01">
+                   <f:param name="param" value="#{bean.stringWithSpecialCharacters}" />
+               </h:button>
+            </p>
+            
+            
+        </h:form>
+    </body>
+    </f:view>
+</html>
diff --git a/test/agnostic/externalContext/basic/src/test/java/com/sun/faces/test/agnostic/externalContext/basic/CookieIT.java b/test/agnostic/externalContext/basic/src/test/java/com/sun/faces/test/agnostic/externalContext/basic/CookieIT.java
new file mode 100644
index 0000000..85e57be
--- /dev/null
+++ b/test/agnostic/externalContext/basic/src/test/java/com/sun/faces/test/agnostic/externalContext/basic/CookieIT.java
@@ -0,0 +1,106 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.externalContext.basic;
+
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import static org.junit.Assert.assertTrue;
+import com.gargoylesoftware.htmlunit.WebClient;
+import static com.sun.faces.test.util.HttpUtils.issueHttpRequest;
+
+public class CookieIT {
+
+    /**
+     * Stores the web URL.
+     */
+    private String webUrl;
+    /**
+     * Stores the web client.
+     */
+    private WebClient webClient;
+
+    /**
+     * Setup before testing.
+     *
+     * @throws Exception when a serious error occurs.
+     */
+    @BeforeClass
+    public static void setUpClass() throws Exception {
+    }
+
+    /**
+     * Cleanup after testing.
+     *
+     * @throws Exception when a serious error occurs.
+     */
+    @AfterClass
+    public static void tearDownClass() throws Exception {
+    }
+
+    /**
+     * Setup before testing.
+     */
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    /**
+     * Tear down after testing.
+     */
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testHttpOnly() throws Exception {
+        int[] rc = new int[1];
+        String contextPath = System.getProperty("project.build.finalName");
+        String port = System.getProperty("integration.serverPort");
+        String host = System.getProperty("integration.serverName");
+        String result = issueHttpRequest("GET", rc, host, port, contextPath + "/faces/index.xhtml");
+        assertTrue(result.contains("HttpOnly"));
+    }
+}
diff --git a/test/agnostic/externalContext/basic/src/test/java/com/sun/faces/test/agnostic/externalContext/basic/Issue2440IT.java b/test/agnostic/externalContext/basic/src/test/java/com/sun/faces/test/agnostic/externalContext/basic/Issue2440IT.java
new file mode 100644
index 0000000..0f38733
--- /dev/null
+++ b/test/agnostic/externalContext/basic/src/test/java/com/sun/faces/test/agnostic/externalContext/basic/Issue2440IT.java
@@ -0,0 +1,123 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.externalContext.basic;
+
+import com.gargoylesoftware.htmlunit.html.HtmlButtonInput;
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+
+import static org.junit.Assert.assertTrue;
+
+public class Issue2440IT {
+
+    /**
+     * Stores the web URL.
+     */
+    private String webUrl;
+    /**
+     * Stores the web client.
+     */
+    private WebClient webClient;
+
+    /**
+     * Setup before testing.
+     *
+     * @throws Exception when a serious error occurs.
+     */
+    @BeforeClass
+    public static void setUpClass() throws Exception {
+    }
+
+    /**
+     * Cleanup after testing.
+     *
+     * @throws Exception when a serious error occurs.
+     */
+    @AfterClass
+    public static void tearDownClass() throws Exception {
+    }
+
+    /**
+     * Setup before testing.
+     */
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    /**
+     * Tear down after testing.
+     */
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testQueryParamEncodingOnCommandButton() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/issue2440.xhtml");
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("reload");
+        
+        page = button.click();
+        String query = page.getUrl().getQuery();
+        
+        assertTrue(query.contains("%E6%97%A5%D7%90"));
+        
+    }
+
+    @Test
+    public void testQueryParamEncodingOnOutcomeTargetButton() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/issue2440.xhtml");
+        HtmlButtonInput button = (HtmlButtonInput) page.getHtmlElementById("bookmarkable01");
+        
+        String xml = button.asXml();
+        
+        assertTrue(xml.contains("%E6%97%A5%D7%90"));
+        
+    }
+
+}
diff --git a/test/agnostic/externalContext/pom.xml b/test/agnostic/externalContext/pom.xml
new file mode 100644
index 0000000..222ada4
--- /dev/null
+++ b/test/agnostic/externalContext/pom.xml
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.agnostic</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.agnostic.externalContext</groupId>
+    <artifactId>pom</artifactId>
+    <packaging>pom</packaging>
+    <name>Mojarra ${project.version} - Test - Agnostic - ExternalContext</name>
+    <modules>
+        <module>basic</module>
+    </modules>
+</project>
diff --git a/test/agnostic/facelets/cc/nbactions.xml b/test/agnostic/facelets/cc/nbactions.xml
new file mode 100644
index 0000000..b41a39a
--- /dev/null
+++ b/test/agnostic/facelets/cc/nbactions.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<actions>
+    <action>
+        <actionName>debug.test.single</actionName>
+        <goals>
+            <goal>test-compile</goal>
+            <goal>surefire:test</goal>
+        </goals>
+        <properties>
+            <test>${packageClassName}</test>
+            <forkMode>once</forkMode>
+            <maven.surefire.debug>-Xdebug -Xrunjdwp:transport=dt_socket,server=n,address=${jpda.address}</maven.surefire.debug>
+            <jpda.listen>true</jpda.listen>
+            <integration.url>http://localhost:8080/test-agnostic-facelets-cc/</integration.url>
+        </properties>
+    </action>
+    <action>
+            <actionName>run</actionName>
+            <goals>
+                <goal>package</goal>
+            </goals>
+            <properties>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                <netbeans.deploy>true</netbeans.deploy>
+                <webapp.stateSavingMethod>server</webapp.stateSavingMethod>
+                <webapp.projectStage>Development</webapp.projectStage>
+            </properties>
+        </action>
+</actions>
diff --git a/test/agnostic/facelets/cc/pom.xml b/test/agnostic/facelets/cc/pom.xml
new file mode 100644
index 0000000..0b16a63
--- /dev/null
+++ b/test/agnostic/facelets/cc/pom.xml
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.agnostic.facelets</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.agnostic.facelets</groupId>
+    <artifactId>cc</artifactId>
+    <packaging>war</packaging>
+    <name>Mojarra ${project.version} - Test - Agnostic - Facelets - Composite</name>
+    <build>
+        <finalName>test-agnostic-facelets-cc</finalName>
+    </build>
+    <dependencies>
+        <dependency>
+            <groupId>com.sun.faces.test.agnostic.facelets</groupId>
+            <artifactId>ccInJar</artifactId>
+            <version>${project.version}</version>
+            <scope>compile</scope>
+        </dependency>
+    </dependencies>
+    <properties>
+        <netbeans.hint.deploy.server>gfv3ee6</netbeans.hint.deploy.server>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/test/agnostic/facelets/cc/src/main/java/com/sun/faces/test/agnostic/facelets/composite/ActionListener1Bean.java b/test/agnostic/facelets/cc/src/main/java/com/sun/faces/test/agnostic/facelets/composite/ActionListener1Bean.java
new file mode 100644
index 0000000..3d9fb58
--- /dev/null
+++ b/test/agnostic/facelets/cc/src/main/java/com/sun/faces/test/agnostic/facelets/composite/ActionListener1Bean.java
@@ -0,0 +1,108 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.facelets.composite;
+
+import java.io.Serializable;
+import java.util.Map;
+import javax.faces.context.FacesContext;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.SessionScoped;
+import javax.faces.event.AbortProcessingException;
+import javax.faces.event.ActionEvent;
+import javax.faces.event.ActionListener;
+
+ at ManagedBean(name = "actionListener1Bean")
+ at SessionScoped
+public class ActionListener1Bean implements Serializable {
+
+    protected ActionListener a, b, c;
+
+    public ActionListener1Bean() {
+        a = new ActionListenerImpl("a called ");
+        b = new ActionListenerImpl("b called ");
+        c = new ActionListenerImpl("c called ");
+    }
+
+    public ActionListener getLoginEventListener() {
+        return a;
+    }
+
+    public ActionListener getLoginEventListener2() {
+        return b;
+    }
+
+    public ActionListener getCancelEventListener() {
+        return c;
+    }
+
+    private void appendMessage(String message) {
+        FacesContext context = FacesContext.getCurrentInstance();
+        Map<String, Object> requestMap = context.getExternalContext().getRequestMap();
+        StringBuilder builder;
+        builder = (StringBuilder) requestMap.get("builder");
+        if (null == builder) {
+            builder = new StringBuilder();
+            requestMap.put("builder", builder);
+        }
+        builder.append(message);
+    }
+
+    public String getMessage() {
+        FacesContext context = FacesContext.getCurrentInstance();
+        Map<String, Object> requestMap = context.getExternalContext().getRequestMap();
+        String result = (requestMap.containsKey("builder"))
+                ? ((StringBuilder) requestMap.get("builder")).toString() : "no message";
+        return result;
+    }
+
+    private class ActionListenerImpl implements ActionListener {
+
+        private final String message;
+
+        private ActionListenerImpl(String message) {
+            this.message = message;
+        }
+
+        @Override
+        public void processAction(ActionEvent event) throws AbortProcessingException {
+            ActionListener1Bean.this.appendMessage(message);
+        }
+    }
+}
diff --git a/test/agnostic/facelets/cc/src/main/java/com/sun/faces/test/agnostic/facelets/composite/AttributeELInput.java b/test/agnostic/facelets/cc/src/main/java/com/sun/faces/test/agnostic/facelets/composite/AttributeELInput.java
new file mode 100644
index 0000000..0c6a81e
--- /dev/null
+++ b/test/agnostic/facelets/cc/src/main/java/com/sun/faces/test/agnostic/facelets/composite/AttributeELInput.java
@@ -0,0 +1,22 @@
+package com.sun.faces.test.agnostic.facelets.composite;
+
+import javax.faces.component.FacesComponent;
+import javax.faces.component.UINamingContainer;
+
+ at FacesComponent("com.sun.faces.test.agnostic.facelets.composite.AttributeELInput")
+public class AttributeELInput extends UINamingContainer {
+
+    protected enum PropertyKeys {
+
+        mandatory
+    }
+
+    public Boolean getMandatory() {
+        Boolean val = (Boolean) getStateHelper().eval(PropertyKeys.mandatory);
+        return val;
+    }
+
+    public void setMandatory(Boolean val) {
+        getStateHelper().put(PropertyKeys.mandatory, val);
+    }
+}
diff --git a/test/agnostic/facelets/cc/src/main/java/com/sun/faces/test/agnostic/facelets/composite/AttributeELInputBean.java b/test/agnostic/facelets/cc/src/main/java/com/sun/faces/test/agnostic/facelets/composite/AttributeELInputBean.java
new file mode 100644
index 0000000..6fe9380
--- /dev/null
+++ b/test/agnostic/facelets/cc/src/main/java/com/sun/faces/test/agnostic/facelets/composite/AttributeELInputBean.java
@@ -0,0 +1,19 @@
+package com.sun.faces.test.agnostic.facelets.composite;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.RequestScoped;
+
+ at ManagedBean
+ at RequestScoped
+public class AttributeELInputBean {
+
+    private Boolean _ismandatory = true;
+
+    public Boolean isMandatory() {
+        return _ismandatory;
+    }
+
+    public void setMandatory(Boolean mandatory) {
+        _ismandatory = mandatory;
+    }
+}
diff --git a/test/agnostic/facelets/cc/src/main/java/com/sun/faces/test/agnostic/facelets/composite/CompositeBehavior.java b/test/agnostic/facelets/cc/src/main/java/com/sun/faces/test/agnostic/facelets/composite/CompositeBehavior.java
new file mode 100644
index 0000000..b880590
--- /dev/null
+++ b/test/agnostic/facelets/cc/src/main/java/com/sun/faces/test/agnostic/facelets/composite/CompositeBehavior.java
@@ -0,0 +1,66 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.agnostic.facelets.composite;
+
+import javax.faces.component.behavior.ClientBehaviorBase;
+import javax.faces.component.behavior.ClientBehaviorContext;
+import javax.faces.component.behavior.FacesBehavior;
+import javax.faces.component.UIOutput;
+import javax.faces.context.FacesContext;
+
+ at FacesBehavior("compositeBehavior")
+public class CompositeBehavior extends ClientBehaviorBase {
+
+    @Override
+    public String getScript(ClientBehaviorContext behaviorContext) {
+        String result = "";
+
+        if ("action".equals(behaviorContext.getEventName())) {
+            result = "document.write(\"compositeBehavior script rendered\");";
+        }
+
+        FacesContext context = FacesContext.getCurrentInstance();
+        UIOutput comp = (UIOutput)context.getViewRoot().findComponent("form:out");
+        comp.setValue(result);
+
+        return result;
+    }
+}
diff --git a/test/agnostic/facelets/cc/src/main/java/com/sun/faces/test/agnostic/facelets/composite/ConstructorComponent.java b/test/agnostic/facelets/cc/src/main/java/com/sun/faces/test/agnostic/facelets/composite/ConstructorComponent.java
new file mode 100644
index 0000000..692d352
--- /dev/null
+++ b/test/agnostic/facelets/cc/src/main/java/com/sun/faces/test/agnostic/facelets/composite/ConstructorComponent.java
@@ -0,0 +1,60 @@
+
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.facelets.composite;
+
+import java.util.Map;
+import javax.faces.component.FacesComponent;
+import javax.faces.component.UINamingContainer;
+import javax.faces.context.FacesContext;
+
+ at FacesComponent(value = "com.sun.faces.test.agnostic.facelets.composite.ConstructorComponent")
+public class ConstructorComponent extends UINamingContainer {
+
+    public ConstructorComponent() {
+        Map<String, Object> requestMap = FacesContext.getCurrentInstance().getExternalContext().getRequestMap();
+        StringBuilder message = (StringBuilder) requestMap.get("message");
+        if (message == null) {
+            message = new StringBuilder();
+            requestMap.put("message", message);
+        }
+        message.append("ConstructorComponent constructor called");
+    }
+}
diff --git a/test/agnostic/facelets/cc/src/main/java/com/sun/faces/test/agnostic/facelets/composite/InputTextAjaxListener1Bean.java b/test/agnostic/facelets/cc/src/main/java/com/sun/faces/test/agnostic/facelets/composite/InputTextAjaxListener1Bean.java
new file mode 100644
index 0000000..342b954
--- /dev/null
+++ b/test/agnostic/facelets/cc/src/main/java/com/sun/faces/test/agnostic/facelets/composite/InputTextAjaxListener1Bean.java
@@ -0,0 +1,63 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.facelets.composite;
+
+import java.io.Serializable;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.RequestScoped;
+
+ at ManagedBean(name = "inputTextAjaxListener1Bean")
+ at RequestScoped
+public class InputTextAjaxListener1Bean implements Serializable {
+    
+    private String value;
+
+    public String getValue() {
+        return value;
+    }
+
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+    public void ajaxMe() {
+        throw new IllegalStateException();
+    }
+}
diff --git a/test/agnostic/facelets/cc/src/main/java/com/sun/faces/test/agnostic/facelets/composite/InputTextValidator1Bean.java b/test/agnostic/facelets/cc/src/main/java/com/sun/faces/test/agnostic/facelets/composite/InputTextValidator1Bean.java
new file mode 100644
index 0000000..f1c0a9a
--- /dev/null
+++ b/test/agnostic/facelets/cc/src/main/java/com/sun/faces/test/agnostic/facelets/composite/InputTextValidator1Bean.java
@@ -0,0 +1,67 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.facelets.composite;
+
+import java.io.Serializable;
+import javax.faces.application.FacesMessage;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.RequestScoped;
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.validator.ValidatorException;
+
+ at ManagedBean(name = "inputTextValidator1Bean")
+ at RequestScoped
+public class InputTextValidator1Bean implements Serializable {
+    
+    private String value;
+
+    public String getValue() {
+        return value;
+    }
+
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+    public void validate(FacesContext fc, UIComponent component, Object object) {
+        throw new ValidatorException(new FacesMessage(FacesMessage.SEVERITY_FATAL, "Oops", "Oops"));
+    }
+}
diff --git a/test/agnostic/facelets/cc/src/main/java/com/sun/faces/test/agnostic/facelets/composite/Line.java b/test/agnostic/facelets/cc/src/main/java/com/sun/faces/test/agnostic/facelets/composite/Line.java
new file mode 100644
index 0000000..85c9739
--- /dev/null
+++ b/test/agnostic/facelets/cc/src/main/java/com/sun/faces/test/agnostic/facelets/composite/Line.java
@@ -0,0 +1,81 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.facelets.composite;
+
+public class Line {
+
+    private int id;
+    private String name;
+
+    public Line(int id, String name) {
+        this.id = id;
+        this.name = name;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (obj instanceof Line) {
+            return getId() == ((Line) obj).getId();
+        }
+        return false;
+    }
+
+    @Override
+    public int hashCode() {
+        return id;
+    }
+
+    @Override
+    public String toString() {
+        return String.format("Line [id=%s][name=%s]", id, name);
+    }
+
+    public int getId() {
+        return id;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+}
diff --git a/test/agnostic/facelets/cc/src/main/java/com/sun/faces/test/agnostic/facelets/composite/LineConverter.java b/test/agnostic/facelets/cc/src/main/java/com/sun/faces/test/agnostic/facelets/composite/LineConverter.java
new file mode 100644
index 0000000..24b1056
--- /dev/null
+++ b/test/agnostic/facelets/cc/src/main/java/com/sun/faces/test/agnostic/facelets/composite/LineConverter.java
@@ -0,0 +1,59 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.facelets.composite;
+
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.convert.Converter;
+import javax.faces.convert.FacesConverter;
+
+ at FacesConverter(forClass = LineConverter.class, value = "lineConverter")
+public class LineConverter implements Converter {
+
+    @Override
+    public Object getAsObject(FacesContext fc, UIComponent comp, String str) {
+        return LineStore.findLine(Integer.valueOf(str));
+    }
+
+    @Override
+    public String getAsString(FacesContext fc, UIComponent comp, Object obj) {
+        return Integer.toString(((Line) obj).getId());
+    }
+}
diff --git a/test/agnostic/facelets/cc/src/main/java/com/sun/faces/test/agnostic/facelets/composite/LineStore.java b/test/agnostic/facelets/cc/src/main/java/com/sun/faces/test/agnostic/facelets/composite/LineStore.java
new file mode 100644
index 0000000..5700573
--- /dev/null
+++ b/test/agnostic/facelets/cc/src/main/java/com/sun/faces/test/agnostic/facelets/composite/LineStore.java
@@ -0,0 +1,69 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.facelets.composite;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class LineStore {
+
+    private static List<Line> availableLines;
+
+    static {
+        availableLines = new ArrayList<Line>();
+        availableLines.add(new Line(1, "line 1"));
+        availableLines.add(new Line(2, "line 2"));
+        availableLines.add(new Line(3, "line 3"));
+        availableLines.add(new Line(4, "line 4"));
+    }
+
+    public static List<Line> getAvailableLines() {
+        return availableLines;
+    }
+
+    public static Line findLine(int id) {
+        for (Line line : availableLines) {
+            if (line.getId() == id) {
+                return line;
+            }
+        }
+        return null;
+    }
+}
diff --git a/test/agnostic/facelets/cc/src/main/java/com/sun/faces/test/agnostic/facelets/composite/Order.java b/test/agnostic/facelets/cc/src/main/java/com/sun/faces/test/agnostic/facelets/composite/Order.java
new file mode 100644
index 0000000..672c649
--- /dev/null
+++ b/test/agnostic/facelets/cc/src/main/java/com/sun/faces/test/agnostic/facelets/composite/Order.java
@@ -0,0 +1,91 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.facelets.composite;
+
+import java.util.List;
+
+public class Order {
+
+    private int id;
+    private List<Line> lines;
+
+    public Order(int id) {
+        this.id = id;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (obj instanceof Order) {
+            return getId() == ((Order) obj).getId();
+        }
+        return false;
+    }
+
+    @Override
+    public int hashCode() {
+        return id;
+    }
+
+    @Override
+    public String toString() {
+        return String.format("Order [id=%s] [number of lines: %s]", id,
+                getNrOflines());
+    }
+
+    public int getNrOflines() {
+        if (lines != null) {
+            return lines.size();
+        } else {
+            return 0;
+        }
+    }
+
+    public int getId() {
+        return id;
+    }
+
+    public List<Line> getLines() {
+        return lines;
+    }
+
+    public void setLines(List<Line> lines) {
+        this.lines = lines;
+    }
+}
diff --git a/test/agnostic/facelets/cc/src/main/java/com/sun/faces/test/agnostic/facelets/composite/OrderPage.java b/test/agnostic/facelets/cc/src/main/java/com/sun/faces/test/agnostic/facelets/composite/OrderPage.java
new file mode 100644
index 0000000..5b1fabf
--- /dev/null
+++ b/test/agnostic/facelets/cc/src/main/java/com/sun/faces/test/agnostic/facelets/composite/OrderPage.java
@@ -0,0 +1,74 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.facelets.composite;
+
+import java.util.List;
+import javax.annotation.PostConstruct;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.ViewScoped;
+
+ at ManagedBean(name = "orderPage")
+ at ViewScoped
+public class OrderPage {
+
+    private Order order;
+    private List<Line> availableLines;
+
+    @PostConstruct
+    protected void init() {
+        order = new Order(1);
+        availableLines = LineStore.getAvailableLines();
+    }
+
+    public void persist() {
+    }
+
+    public Order getOrder() {
+        return order;
+    }
+
+    public void setOrder(Order order) {
+        this.order = order;
+    }
+
+    public List<Line> getAvailableLines() {
+        return availableLines;
+    }
+}
diff --git a/test/agnostic/facelets/cc/src/main/java/com/sun/faces/test/agnostic/facelets/composite/OutputTextInlineBean.java b/test/agnostic/facelets/cc/src/main/java/com/sun/faces/test/agnostic/facelets/composite/OutputTextInlineBean.java
new file mode 100644
index 0000000..51238c7
--- /dev/null
+++ b/test/agnostic/facelets/cc/src/main/java/com/sun/faces/test/agnostic/facelets/composite/OutputTextInlineBean.java
@@ -0,0 +1,18 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package com.sun.faces.test.agnostic.facelets.composite;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.RequestScoped;
+
+ at ManagedBean(name = "outputTextInlineBean")
+ at RequestScoped
+public class OutputTextInlineBean {
+
+    public String getData() {
+        return "myData";
+    }
+}
diff --git a/test/agnostic/facelets/cc/src/main/java/com/sun/faces/test/agnostic/facelets/composite/TestBean.java b/test/agnostic/facelets/cc/src/main/java/com/sun/faces/test/agnostic/facelets/composite/TestBean.java
new file mode 100644
index 0000000..1c8dda9
--- /dev/null
+++ b/test/agnostic/facelets/cc/src/main/java/com/sun/faces/test/agnostic/facelets/composite/TestBean.java
@@ -0,0 +1,79 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.agnostic.facelets.composite;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.SessionScoped;
+
+ at ManagedBean
+ at SessionScoped
+public class TestBean {
+    public String getMyname() {
+        return myname;
+    }
+
+    public String getTargets() {
+        return targets;
+    }
+
+    public String getTargetsEL() {
+        return targetsEL;
+    }
+
+    public String getEvent() {
+        return event;
+    }
+
+    public boolean isMydefault() {
+        return mydefault;
+    }
+
+    private String myname = "ok";
+    private String targets = "cancel sub:command";
+    private String targetsEL = "cancelEL sub:commandEL";
+    private String event = "action";
+    private boolean mydefault = true;
+
+    public String doAction() {
+        System.out.println("TestBean#doAction");
+        return null;
+    }
+}
diff --git a/test/agnostic/facelets/cc/src/main/java/com/sun/faces/test/agnostic/facelets/composite/UserBean.java b/test/agnostic/facelets/cc/src/main/java/com/sun/faces/test/agnostic/facelets/composite/UserBean.java
new file mode 100644
index 0000000..dd2e142
--- /dev/null
+++ b/test/agnostic/facelets/cc/src/main/java/com/sun/faces/test/agnostic/facelets/composite/UserBean.java
@@ -0,0 +1,36 @@
+package com.sun.faces.test.agnostic.facelets.composite;
+
+import java.io.Serializable;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.RequestScoped;
+import javax.faces.component.UIComponent;
+
+ at ManagedBean
+ at RequestScoped
+public class UserBean implements Serializable {
+    
+    public UserBean() {}
+
+    private UIComponent nonComposite;
+
+    public UIComponent getNonComposite() {
+        return nonComposite;
+    }
+
+    public void setNonComposite(UIComponent boundComponent) {
+        this.nonComposite = boundComponent;
+    }
+    
+    
+    private UIComponent composite;
+
+    public UIComponent getComposite() {
+        return composite;
+    }
+
+    public void setComposite(UIComponent composite) {
+        this.composite = composite;
+    }
+    
+}
+
diff --git a/test/agnostic/facelets/cc/src/main/java/com/sun/faces/test/agnostic/facelets/composite/ValidatorDoubleValidator.java b/test/agnostic/facelets/cc/src/main/java/com/sun/faces/test/agnostic/facelets/composite/ValidatorDoubleValidator.java
new file mode 100644
index 0000000..d3ed31a
--- /dev/null
+++ b/test/agnostic/facelets/cc/src/main/java/com/sun/faces/test/agnostic/facelets/composite/ValidatorDoubleValidator.java
@@ -0,0 +1,58 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.facelets.composite;
+
+import javax.faces.application.FacesMessage;
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.validator.FacesValidator;
+import javax.faces.validator.Validator;
+import javax.faces.validator.ValidatorException;
+
+ at FacesValidator(value = ValidatorDoubleValidator.VALIDATOR_ID, isDefault = true)
+public class ValidatorDoubleValidator implements Validator {
+
+    public static final String VALIDATOR_ID = "com.sun.faces.test.agnostic.facelets.composite.ValidatorDoubleValidator";
+
+    @Override
+    public void validate(FacesContext fc, UIComponent c, Object o) throws ValidatorException {
+        throw new ValidatorException(new FacesMessage(c.getClientId(fc) + ": Validation failed."));
+    }
+}
diff --git a/test/agnostic/facelets/cc/src/main/java/com/sun/faces/test/agnostic/facelets/composite/ValidatorExceptionBean.java b/test/agnostic/facelets/cc/src/main/java/com/sun/faces/test/agnostic/facelets/composite/ValidatorExceptionBean.java
new file mode 100644
index 0000000..78bd02b
--- /dev/null
+++ b/test/agnostic/facelets/cc/src/main/java/com/sun/faces/test/agnostic/facelets/composite/ValidatorExceptionBean.java
@@ -0,0 +1,66 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.facelets.composite;
+
+import javax.faces.application.FacesMessage;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.SessionScoped;
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.validator.ValidatorException;
+
+ at ManagedBean
+ at SessionScoped
+public class ValidatorExceptionBean {
+    
+    private String name;
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public void validateName(FacesContext context, UIComponent component, Object object) throws ValidatorException {
+        throw new ValidatorException(new FacesMessage(FacesMessage.SEVERITY_WARN, "Validation failed", "Component validation failed."));
+    }
+}
diff --git a/test/agnostic/facelets/cc/src/main/webapp/WEB-INF/composite-behavior.taglib.xml b/test/agnostic/facelets/cc/src/main/webapp/WEB-INF/composite-behavior.taglib.xml
new file mode 100644
index 0000000..cce7019
--- /dev/null
+++ b/test/agnostic/facelets/cc/src/main/webapp/WEB-INF/composite-behavior.taglib.xml
@@ -0,0 +1,56 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<facelet-taglib xmlns="http://java.sun.com/xml/ns/javaee"
+              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+              xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facelettaglibrary_2_0.xsd"
+              version="2.0">
+    <namespace>http://mojarra.dev.java.net/composite-behavior</namespace>
+
+    <tag>
+        <tag-name>behavior</tag-name>
+        <behavior>
+           <behavior-id>compositeBehavior</behavior-id>
+        </behavior>
+    </tag>
+
+</facelet-taglib>
diff --git a/test/agnostic/facelets/cc/src/main/webapp/WEB-INF/glassfish-web.xml b/test/agnostic/facelets/cc/src/main/webapp/WEB-INF/glassfish-web.xml
new file mode 100644
index 0000000..9d2f3e2
--- /dev/null
+++ b/test/agnostic/facelets/cc/src/main/webapp/WEB-INF/glassfish-web.xml
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<glassfish-web-app error-url="">
+  <context-root>/test-agnostic-facelets-cc</context-root>
+  <class-loader delegate="true"/>
+  <jsp-config>
+    <property name="keepgenerated" value="true">
+      <description>Keep a copy of the generated servlet class' java code.</description>
+    </property>
+  </jsp-config>
+</glassfish-web-app>
diff --git a/test/agnostic/facelets/cc/src/main/webapp/WEB-INF/sourceValidationFails.taglib.xml b/test/agnostic/facelets/cc/src/main/webapp/WEB-INF/sourceValidationFails.taglib.xml
new file mode 100644
index 0000000..314484e
--- /dev/null
+++ b/test/agnostic/facelets/cc/src/main/webapp/WEB-INF/sourceValidationFails.taglib.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<facelet-taglib xmlns="http://xmlns.jcp.org/xml/ns/javaee"
+                xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+                xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-facelettaglibary_2_2.xsd"
+                version="2.2">
+
+    <namespace>sourceValidationFails</namespace>
+    <tag>
+        <tag-name>sourceValidationFails</tag-name>
+        <component>
+            <resource-id>sourceValidationFails1/sourceValidationFails.xhtml</resource-id>
+        </component>
+    </tag>
+</facelet-taglib>
diff --git a/test/agnostic/facelets/cc/src/main/webapp/WEB-INF/templates/validatorException.xhtml b/test/agnostic/facelets/cc/src/main/webapp/WEB-INF/templates/validatorException.xhtml
new file mode 100644
index 0000000..a4d8cb9
--- /dev/null
+++ b/test/agnostic/facelets/cc/src/main/webapp/WEB-INF/templates/validatorException.xhtml
@@ -0,0 +1,18 @@
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title><ui:insert name="page.title">Page Title</ui:insert></title>
+    </h:head>
+    <h:body>
+        <h:form id="form">
+            <div class="container">
+                <ui:insert name="page.content">
+                    Page Content
+                </ui:insert>
+            </div>
+        </h:form>
+    </h:body>
+</html>
diff --git a/test/agnostic/facelets/cc/src/main/webapp/WEB-INF/test.taglib.xml b/test/agnostic/facelets/cc/src/main/webapp/WEB-INF/test.taglib.xml
new file mode 100644
index 0000000..934c760
--- /dev/null
+++ b/test/agnostic/facelets/cc/src/main/webapp/WEB-INF/test.taglib.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<facelet-taglib version="2.2"
+	xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-facelettaglibrary_2_2.xsd">
+	<namespace>http://test.com/facelets</namespace>
+
+	<!-- Composites -->
+	<tag>
+		<tag-name>test</tag-name>
+		<component>
+			<resource-id>components/bind.xhtml</resource-id>
+		</component>
+	</tag>
+</facelet-taglib>
\ No newline at end of file
diff --git a/test/agnostic/facelets/cc/src/main/webapp/WEB-INF/web.xml b/test/agnostic/facelets/cc/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..e4f7991
--- /dev/null
+++ b/test/agnostic/facelets/cc/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,79 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" 
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>${webapp.projectStage}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
+        <param-value>${webapp.partialStateSaving}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>${webapp.stateSavingMethod}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.FACELETS_LIBRARIES</param-name>
+        <param-value>/WEB-INF/composite-behavior.taglib.xml;/WEB-INF/test.taglib.xml;/WEB-INF/sourceValidationFails.taglib.xml</param-value>
+    </context-param>
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <session-config>
+        <session-timeout>30</session-timeout>
+    </session-config>
+    <welcome-file-list>
+        <welcome-file>faces/index.xhtml</welcome-file>
+    </welcome-file-list>
+</web-app>
diff --git a/test/agnostic/facelets/cc/src/main/webapp/WEB-INF/weblogic.xml b/test/agnostic/facelets/cc/src/main/webapp/WEB-INF/weblogic.xml
new file mode 100644
index 0000000..06e2524
--- /dev/null
+++ b/test/agnostic/facelets/cc/src/main/webapp/WEB-INF/weblogic.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<weblogic-web-app xmlns="http://xmlns.oracle.com/weblogic/weblogic-web-app"
+        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+        xsi:schemaLocation="http://xmlns.oracle.com/weblogic/weblogic-web-app http://xmlns.oracle.com/weblogic/weblogic-web-app/1.0/weblogic-web-app.xsd">
+    <context-root>/test-agnostic-facelets-cc</context-root>
+</weblogic-web-app>
\ No newline at end of file
diff --git a/test/agnostic/facelets/cc/src/main/webapp/actionListener1.xhtml b/test/agnostic/facelets/cc/src/main/webapp/actionListener1.xhtml
new file mode 100644
index 0000000..073c705
--- /dev/null
+++ b/test/agnostic/facelets/cc/src/main/webapp/actionListener1.xhtml
@@ -0,0 +1,61 @@
+<?xml version='1.0' encoding='UTF-8'?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:actionListener="http://java.sun.com/jsf/composite/actionListener">
+    <h:head>
+        <title>Spec issue #901</title>
+    </h:head>
+    <h:body>
+        <h:form id="form">
+            <actionListener:actionListener1 id="loginPanel">
+                <f:actionListener for="loginEvent" binding="#{actionListener1Bean.loginEventListener}" />
+                <f:actionListener for="loginEvent" binding="#{actionListener1Bean.loginEventListener2}" />
+                <f:attribute name="cancelEvent" value="#{actionListener1Bean.cancelEventListener}" />
+            </actionListener:actionListener1>
+            <p>Message: #{actionListener1Bean.message}</p>
+        </h:form>
+    </h:body>
+</html>
diff --git a/test/agnostic/facelets/cc/src/main/webapp/attributeBooleanPrimitiveFalse.xhtml b/test/agnostic/facelets/cc/src/main/webapp/attributeBooleanPrimitiveFalse.xhtml
new file mode 100644
index 0000000..4860f5c
--- /dev/null
+++ b/test/agnostic/facelets/cc/src/main/webapp/attributeBooleanPrimitiveFalse.xhtml
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:attributes="http://java.sun.com/jsf/composite/attributes">
+    <h:head>
+    </h:head>
+    <h:body>
+        <attributes:boolean booleanPrimitive="false"/>
+    </h:body>
+</html>
diff --git a/test/agnostic/facelets/cc/src/main/webapp/attributeBooleanPrimitiveTrue.xhtml b/test/agnostic/facelets/cc/src/main/webapp/attributeBooleanPrimitiveTrue.xhtml
new file mode 100644
index 0000000..4fd4031
--- /dev/null
+++ b/test/agnostic/facelets/cc/src/main/webapp/attributeBooleanPrimitiveTrue.xhtml
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:attributes="http://java.sun.com/jsf/composite/attributes">
+    <h:head>
+    </h:head>
+    <h:body>
+        <attributes:boolean booleanPrimitive="true"/>
+    </h:body>
+</html>
diff --git a/test/agnostic/facelets/cc/src/main/webapp/attributeBooleanPrimitiveWithDefault.xhtml b/test/agnostic/facelets/cc/src/main/webapp/attributeBooleanPrimitiveWithDefault.xhtml
new file mode 100644
index 0000000..4b8df15
--- /dev/null
+++ b/test/agnostic/facelets/cc/src/main/webapp/attributeBooleanPrimitiveWithDefault.xhtml
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:attributes="http://java.sun.com/jsf/composite/attributes">
+    <h:head>
+    </h:head>
+    <h:body>
+        <attributes:booleanWithDefault/>
+    </h:body>
+</html>
diff --git a/test/agnostic/facelets/cc/src/main/webapp/attributeType.xhtml b/test/agnostic/facelets/cc/src/main/webapp/attributeType.xhtml
new file mode 100644
index 0000000..19dac5e
--- /dev/null
+++ b/test/agnostic/facelets/cc/src/main/webapp/attributeType.xhtml
@@ -0,0 +1,25 @@
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:attributeType="http://java.sun.com/jsf/composite/attributeType">
+    <h:head>
+        <title>Composite Component Test</title>
+    </h:head>
+    <h:body>
+        <h:form id="form">
+            <attributeType:listBox 
+                source="#{orderPage.availableLines}"
+                target="#{orderPage.order.lines}" 
+                converterId="lineConverter" />
+            <h:commandButton  id="submit" value="try with cc" action="#{orderPage.persist}" />
+        </h:form>
+        <h:form>
+            <h:selectManyListbox value="#{orderPage.order.lines}">
+                <f:converter converterId="lineConverter" />
+                <f:selectItems var="item" value="#{orderPage.availableLines}"
+                               itemLabel="#{item.name}" />
+            </h:selectManyListbox>
+            <h:commandButton value="try without cc" action="#{orderPage.persist}" />
+        </h:form>
+    </h:body>
+</html>
diff --git a/test/agnostic/facelets/cc/src/main/webapp/attributeUsingEL.xhtml b/test/agnostic/facelets/cc/src/main/webapp/attributeUsingEL.xhtml
new file mode 100644
index 0000000..bc86b44
--- /dev/null
+++ b/test/agnostic/facelets/cc/src/main/webapp/attributeUsingEL.xhtml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:h="http://java.sun.com/jsf/html" 
+      xmlns:attributeUsingEL="http://java.sun.com/jsf/composite/attributeUsingEL">
+    <h:head>
+    </h:head>
+    <h:body>
+        <h:form id="mainForm">
+            <div>
+                <attributeUsingEL:myInput1 id="myId" mandatory="#{attributeELInputBean.mandatory}" value="bbbb"/>
+            </div>
+        </h:form>
+    </h:body>
+</html>
\ No newline at end of file
diff --git a/test/agnostic/facelets/cc/src/main/webapp/ccAndInclude-include.xhtml b/test/agnostic/facelets/cc/src/main/webapp/ccAndInclude-include.xhtml
new file mode 100644
index 0000000..07dacfe
--- /dev/null
+++ b/test/agnostic/facelets/cc/src/main/webapp/ccAndInclude-include.xhtml
@@ -0,0 +1,18 @@
+<f:subview id="included" xmlns="http://www.w3.org/1999/xhtml"
+	xmlns:f="http://java.sun.com/jsf/core"
+	xmlns:h="http://java.sun.com/jsf/html"
+	xmlns:ui="http://java.sun.com/jsf/facelets"
+	xmlns:composite="http://java.sun.com/jsf/composite">
+
+	<ol start="21">
+		<li>#{'#{'}cc} evaluates to: <h:outputText value="#{cc}" /></li>
+		<li>#{'#{'}cc['clientId']} evaluates to: <h:outputText
+				value="#{cc['clientId']}" /></li>
+		<li>#{'#{'}cc.clientId} evaluates to: <h:outputText
+				value="#{cc.clientId}" /></li>
+		<li>#{'#{'}cc['attrs'].param} evaluates to: <h:outputText
+				value="#{cc['attrs'].param}" /></li>
+		<li>#{'#{'}cc.attrs.param} evaluates to: <h:outputText
+				value="#{cc.attrs.param}" /></li>
+	</ol>
+</f:subview>
diff --git a/test/agnostic/facelets/cc/src/main/webapp/ccAndInclude.xhtml b/test/agnostic/facelets/cc/src/main/webapp/ccAndInclude.xhtml
new file mode 100644
index 0000000..174e119
--- /dev/null
+++ b/test/agnostic/facelets/cc/src/main/webapp/ccAndInclude.xhtml
@@ -0,0 +1,12 @@
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:ccAndInclude="http://java.sun.com/jsf/composite/ccAndInclude">
+
+    <h:head>
+        <title>Include inside nested composite component and cc
+            evaluation test</title>
+    </h:head>
+    <h:body>
+        <ccAndInclude:external-composite id="external" />
+    </h:body>
+</html>
diff --git a/test/agnostic/facelets/cc/src/main/webapp/ccInJar.xhtml b/test/agnostic/facelets/cc/src/main/webapp/ccInJar.xhtml
new file mode 100644
index 0000000..661dd22
--- /dev/null
+++ b/test/agnostic/facelets/cc/src/main/webapp/ccInJar.xhtml
@@ -0,0 +1,16 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:c="http://java.sun.com/jsp/jstl/core"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ccInJar="http://mojarra.java.net/ccInJar">
+    <ui:composition template="/templates/defaultPage.xhtml">
+        <ui:define name="pageTitle">Layout page title</ui:define>
+        <ui:define name="mainContent">
+            <div>layout mainContent</div>
+        </ui:define>
+    </ui:composition>
+</html>
diff --git a/test/agnostic/facelets/cc/src/main/webapp/ccInJar2.xhtml b/test/agnostic/facelets/cc/src/main/webapp/ccInJar2.xhtml
new file mode 100644
index 0000000..7d45ded
--- /dev/null
+++ b/test/agnostic/facelets/cc/src/main/webapp/ccInJar2.xhtml
@@ -0,0 +1,14 @@
+<?xml version='1.0' encoding='UTF-8' ?> 
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ccInJar2="http://java.sun.com/jsf/composite/ccInJar2">
+    <head>
+        <title></title>
+    </head>
+    <body>
+        <ccInJar2:ccInJar2 id="mycc" value="attribute value"/>
+    </body>
+</html>
diff --git a/test/agnostic/facelets/cc/src/main/webapp/clientBehavior.xhtml b/test/agnostic/facelets/cc/src/main/webapp/clientBehavior.xhtml
new file mode 100644
index 0000000..dae6b9d
--- /dev/null
+++ b/test/agnostic/facelets/cc/src/main/webapp/clientBehavior.xhtml
@@ -0,0 +1,68 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html>
+<f:view contentType="text/html" xmlns="http://www.w3.org/1999/xhtml"
+	xmlns:h="http://java.sun.com/jsf/html"
+	xmlns:f="http://java.sun.com/jsf/core"
+	xmlns:ui="http://java.sun.com/jsf/facelets"
+	xmlns:ezb="http://java.sun.com/jsf/composite/clientbehavior"
+	xmlns:b="http://mojarra.dev.java.net/composite-behavior">
+	<h:form id="form">
+		<ezb:compositeTest id="compositeTest" commandAction="#{testBean.doAction}">
+			<b:behavior event="ok" />
+		</ezb:compositeTest>
+                <br/>
+                <br/>
+		<ezb:compositeTestEL id="compositeTestEL" commandAction="#{testBean.doAction}">
+			<b:behavior event="ok" />
+		</ezb:compositeTestEL>
+                <br/>
+		<h:commandButton action="refresh" value="refresh" id="refresh" />
+                <br/>
+                <h:outputText id="out" />
+	</h:form>
+</f:view>
+</html>
diff --git a/test/agnostic/facelets/cc/src/main/webapp/composite.xhtml b/test/agnostic/facelets/cc/src/main/webapp/composite.xhtml
new file mode 100644
index 0000000..5c7dc61
--- /dev/null
+++ b/test/agnostic/facelets/cc/src/main/webapp/composite.xhtml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"
+	xmlns:f="http://java.sun.com/jsf/core"
+	xmlns:h="http://java.sun.com/jsf/html"
+	xmlns:ui="http://java.sun.com/jsf/facelets"
+	xmlns:jid1="http://test.com/facelets">
+
+<h:head></h:head>
+<h:body>
+	<h:form id="commentBoxForm">
+            <jid1:test id="bindID" binding="#{userBean.composite}">
+		</jid1:test>
+
+		<h:commandLink value="Ajax refresh form">
+			<f:ajax execute="@form" render="@form" />
+		</h:commandLink>
+		<br />
+		<br />
+		<br />
+                <h:inputText id="nonBindId" binding="#{userBean.nonComposite}" />
+
+		<b>After Ajax refresh this id will be invalid. Full id: </b>
+                <p id="compositeId">#{userBean.composite.clientId}</p>
+                <p id="nonCompositeId">#{userBean.nonComposite.clientId}</p>
+
+
+	</h:form>
+</h:body>
+</html>
\ No newline at end of file
diff --git a/test/agnostic/facelets/cc/src/main/webapp/constructor.xhtml b/test/agnostic/facelets/cc/src/main/webapp/constructor.xhtml
new file mode 100644
index 0000000..b729f88
--- /dev/null
+++ b/test/agnostic/facelets/cc/src/main/webapp/constructor.xhtml
@@ -0,0 +1,16 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:constructor="http://java.sun.com/jsf/composite/constructor">
+    <h:head>
+        <title>A Simple JavaServer Faces 2.0 View</title>
+    </h:head>
+    <h:body>
+        <h:form>
+            <constructor:component />
+            <p>Constructor message: [#{message}]</p>
+        </h:form>
+    </h:body>
+</html>
diff --git a/test/agnostic/facelets/cc/src/main/webapp/decorate1.xhtml b/test/agnostic/facelets/cc/src/main/webapp/decorate1.xhtml
new file mode 100644
index 0000000..6361d27
--- /dev/null
+++ b/test/agnostic/facelets/cc/src/main/webapp/decorate1.xhtml
@@ -0,0 +1,18 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:decorate="http://java.sun.com/jsf/composite/decorate"
+      xml:lang="en" lang="en">
+    <head>
+        <title></title>
+    </head>
+    <body>
+        <ui:component>
+            <decorate:decorate1/>
+        </ui:component>
+    </body>
+</html>
diff --git a/test/agnostic/facelets/cc/src/main/webapp/decorate1c.xhtml b/test/agnostic/facelets/cc/src/main/webapp/decorate1c.xhtml
new file mode 100644
index 0000000..d52e784
--- /dev/null
+++ b/test/agnostic/facelets/cc/src/main/webapp/decorate1c.xhtml
@@ -0,0 +1,18 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xml:lang="en" lang="en">
+    <head>
+        <title>Decorated template</title>
+    </head>
+    <body>
+        <ui:component>
+            <h:outputText value="#{cc.attrs.string}"/>
+        </ui:component>
+    </body>
+</html>
diff --git a/test/agnostic/facelets/cc/src/main/webapp/index.xhtml b/test/agnostic/facelets/cc/src/main/webapp/index.xhtml
new file mode 100644
index 0000000..fa07e06
--- /dev/null
+++ b/test/agnostic/facelets/cc/src/main/webapp/index.xhtml
@@ -0,0 +1,14 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title>Facelet Title</title>
+    </h:head>
+    <h:body>
+        Hello from Facelets
+    </h:body>
+</html>
+
diff --git a/test/agnostic/facelets/cc/src/main/webapp/inputTextAjaxListener1.xhtml b/test/agnostic/facelets/cc/src/main/webapp/inputTextAjaxListener1.xhtml
new file mode 100644
index 0000000..1314afc
--- /dev/null
+++ b/test/agnostic/facelets/cc/src/main/webapp/inputTextAjaxListener1.xhtml
@@ -0,0 +1,29 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://xmlns.jcp.org/jsf/html"
+      xmlns:inputTextAjaxListener1="http://xmlns.jcp.org/jsf/composite/inputTextAjaxListener1">
+    <h:head>
+        <title>Facelet Title</title>
+    </h:head>
+    <h:body>
+        <h:form id="form">
+            <h:messages/>
+            <inputTextAjaxListener1:inputTextAjaxListener1 id="nesting0"
+                value="#{inputTextAjaxListener1Bean.value}" 
+                listener="#{inputTextAjaxListener1Bean.ajaxMe()}"/>
+        </h:form>
+        <script>
+            function errorFunc(data) {
+                document.getElementById("errorDiv").appendChild(document.createTextNode(data.errorName));
+            }
+        </script>
+        <script>jsf.ajax.addOnError(errorFunc);</script>
+        <div id="errorDiv">
+            
+        </div>
+    </h:body>
+</html>
diff --git a/test/agnostic/facelets/cc/src/main/webapp/inputTextValidator1.xhtml b/test/agnostic/facelets/cc/src/main/webapp/inputTextValidator1.xhtml
new file mode 100644
index 0000000..76e0f6c
--- /dev/null
+++ b/test/agnostic/facelets/cc/src/main/webapp/inputTextValidator1.xhtml
@@ -0,0 +1,18 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://xmlns.jcp.org/jsf/html"
+      xmlns:inputTextValidator1="http://xmlns.jcp.org/jsf/composite/inputTextValidator1">
+    <h:head>
+        <title>Facelet Title</title>
+    </h:head>
+    <h:body>
+        <h:form id="form">
+            <h:messages/>
+            <inputTextValidator1:inputTextValidator1 id="level1"
+                value="#{inputTextValidator1Bean.value}" 
+                validator="#{inputTextValidator1Bean.validate}" />
+            <h:commandButton id="submit" value="Submit"/>
+        </h:form>
+    </h:body>
+</html>
diff --git a/test/agnostic/facelets/cc/src/main/webapp/outputTextInline.xhtml b/test/agnostic/facelets/cc/src/main/webapp/outputTextInline.xhtml
new file mode 100644
index 0000000..585243d
--- /dev/null
+++ b/test/agnostic/facelets/cc/src/main/webapp/outputTextInline.xhtml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:outputText="http://xmlns.jcp.org/jsf/composite/outputText">
+    <h:head>
+        <title></title>
+    </h:head>
+    <h:body>
+        EL in composite component and nested inside cc:facet (WORKS):
+        <outputText:outputTextInline1 model="#{outputTextInlineBean}" />
+
+        <br />
+        EL inside cc:facet (WORKS):
+        <outputText:outputTextInline1b>
+            <f:facet name="content">
+                direct EL: >#{outputTextInlineBean.data}< outputText: ><h:outputText value="#{outputTextInlineBean.data}" /><
+            </f:facet>
+        </outputText:outputTextInline1b>
+
+    </h:body>
+</html>
\ No newline at end of file
diff --git a/test/agnostic/facelets/cc/src/main/webapp/renderFacet1.xhtml b/test/agnostic/facelets/cc/src/main/webapp/renderFacet1.xhtml
new file mode 100644
index 0000000..eecdc3b
--- /dev/null
+++ b/test/agnostic/facelets/cc/src/main/webapp/renderFacet1.xhtml
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:renderFacet="http://java.sun.com/jsf/composite/renderFacet">
+    <h:head>
+        <title>Panel test</title>
+    </h:head>
+    <h:body>
+        <renderFacet:renderFacet title="this works">
+            <f:facet name="body">
+                Just literal text
+            </f:facet>
+        </renderFacet:renderFacet>
+
+        <renderFacet:renderFacet title="this works">
+            <f:facet name="body">
+                <h:outputText value="JSF Component" />
+            </f:facet>
+        </renderFacet:renderFacet>
+
+        <renderFacet:renderFacet title="this works">
+            <f:facet name="body">
+                <h:panelGrid columns="2">
+                    <h:outputText value="just a" />
+                    <h:outputText value="panelGrid" />
+                </h:panelGrid>
+            </f:facet>
+        </renderFacet:renderFacet>
+
+        <renderFacet:renderFacet id="renderFacet" title="this doesnt render the panelGrid">
+            <f:facet name="body">
+                <h:panelGrid id="notfound" columns="2">
+                    <h:outputText value="panelGrid" />
+                    <h:outputText value="and another component" />
+                </h:panelGrid>
+                <h:outputText value="JSF Component" />
+            </f:facet>
+        </renderFacet:renderFacet>
+
+        <renderFacet:renderFacet title="why this render the panelGrid?">
+            <f:facet name="body">
+                <!-- Yeah! it's a comment! -->
+                <h:panelGrid columns="2">
+                    <h:outputText value="panelGrid" />
+                    <h:outputText value="and another component" />
+                </h:panelGrid>
+                <h:outputText value="JSF Component" />
+            </f:facet>
+        </renderFacet:renderFacet>
+    </h:body>
+</html>
diff --git a/test/agnostic/facelets/cc/src/main/webapp/resources/actionListener/actionListener1.xhtml b/test/agnostic/facelets/cc/src/main/webapp/resources/actionListener/actionListener1.xhtml
new file mode 100644
index 0000000..ead02fb
--- /dev/null
+++ b/test/agnostic/facelets/cc/src/main/webapp/resources/actionListener/actionListener1.xhtml
@@ -0,0 +1,66 @@
+<?xml version='1.0' encoding='UTF-8'?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:cc="http://java.sun.com/jsf/composite"
+      xmlns:actionListener="http://java.sun.com/jsf/composite/actionListener" 
+      xmlns:f="http://java.sun.com/jsf/core">
+    <head>
+        <title></title>
+    </head>
+    <body>
+        <cc:interface name="cc">
+            <cc:actionSource name="loginEvent"/>
+            <cc:attribute name="cancelEvent"/>
+        </cc:interface>
+        <cc:implementation>
+            <h:commandButton id="loginEvent" value="buttonInCc">
+            </h:commandButton>
+            <actionListener:actionListener1b id="cancelEvent">
+                <f:actionListener binding="#{cc.attrs.cancelEvent}" for="someOtherEvent"/>
+            </actionListener:actionListener1b>
+        </cc:implementation>
+    </body>
+</html>
diff --git a/test/agnostic/facelets/cc/src/main/webapp/resources/actionListener/actionListener1b.xhtml b/test/agnostic/facelets/cc/src/main/webapp/resources/actionListener/actionListener1b.xhtml
new file mode 100644
index 0000000..793ec7e
--- /dev/null
+++ b/test/agnostic/facelets/cc/src/main/webapp/resources/actionListener/actionListener1b.xhtml
@@ -0,0 +1,59 @@
+<?xml version='1.0' encoding='UTF-8'?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:cc="http://java.sun.com/jsf/composite">
+    <head>
+        <title></title>
+    </head>
+    <body>
+        <cc:interface name="cc2">
+            <cc:actionSource name="someOtherEvent" />
+        </cc:interface>
+        <cc:implementation>
+            <h:commandButton id="someOtherEvent" value="buttonInCc2"/>
+        </cc:implementation>
+    </body>
+</html>
diff --git a/test/agnostic/facelets/cc/src/main/webapp/resources/attributeType/listBox.xhtml b/test/agnostic/facelets/cc/src/main/webapp/resources/attributeType/listBox.xhtml
new file mode 100644
index 0000000..c635f99
--- /dev/null
+++ b/test/agnostic/facelets/cc/src/main/webapp/resources/attributeType/listBox.xhtml
@@ -0,0 +1,18 @@
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:composite="http://java.sun.com/jsf/composite">
+    <composite:interface>
+        <composite:attribute name="source" required="true" />
+        <composite:attribute name="target" required="true" />
+        <composite:attribute name="converterId" />
+    </composite:interface>
+    <composite:implementation>
+        <h:selectManyListbox value="#{cc.attrs.target}">
+            <f:converter converterId="#{cc.attrs.converterId}"
+                         rendered="#{cc.attrs.converterId != null}" />
+            <f:selectItems var="item" value="#{cc.attrs.source}"
+                           itemLabel="#{item.name}" />
+        </h:selectManyListbox>
+    </composite:implementation>
+</html>
\ No newline at end of file
diff --git a/test/agnostic/facelets/cc/src/main/webapp/resources/attributeUsingEL/myInput1.xhtml b/test/agnostic/facelets/cc/src/main/webapp/resources/attributeUsingEL/myInput1.xhtml
new file mode 100644
index 0000000..6ddf4c5
--- /dev/null
+++ b/test/agnostic/facelets/cc/src/main/webapp/resources/attributeUsingEL/myInput1.xhtml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<ui:component xmlns="http://www.w3.org/1999/xhtml"
+              xmlns:h="http://java.sun.com/jsf/html"
+              xmlns:c="http://java.sun.com/jsp/jstl/core"
+              xmlns:f="http://java.sun.com/jsf/core"
+              xmlns:composite="http://java.sun.com/jsf/composite"
+              xmlns:ui="http://java.sun.com/jsf/facelets">
+
+    <composite:interface componentType="com.sun.faces.test.agnostic.facelets.composite.AttributeELInput">
+        <composite:attribute name="mandatory" type="java.lang.Boolean" default="false"/>
+    </composite:interface>
+    <composite:implementation>
+        <div>
+            <h:inputText value="#{cc.attrs.value}" id="#{cc.attrs.id}_value"/>													
+        </div>
+    </composite:implementation>
+</ui:component>
\ No newline at end of file
diff --git a/test/agnostic/facelets/cc/src/main/webapp/resources/attributes/boolean.xhtml b/test/agnostic/facelets/cc/src/main/webapp/resources/attributes/boolean.xhtml
new file mode 100644
index 0000000..17972a7
--- /dev/null
+++ b/test/agnostic/facelets/cc/src/main/webapp/resources/attributes/boolean.xhtml
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:cc="http://java.sun.com/jsf/composite"
+      xmlns:h="http://java.sun.com/jsf/html">
+
+    <cc:interface>
+        <cc:attribute name="booleanPrimitive" type="boolean" required="false"/>
+    </cc:interface>
+    <cc:implementation>
+        Test Boolean Primitive: <h:outputText value="#{cc.attrs.booleanPrimitive}"/><br/>
+    </cc:implementation>
+</html>
diff --git a/test/agnostic/facelets/cc/src/main/webapp/resources/attributes/booleanWithDefault.xhtml b/test/agnostic/facelets/cc/src/main/webapp/resources/attributes/booleanWithDefault.xhtml
new file mode 100644
index 0000000..53ffd85
--- /dev/null
+++ b/test/agnostic/facelets/cc/src/main/webapp/resources/attributes/booleanWithDefault.xhtml
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:cc="http://java.sun.com/jsf/composite"
+      xmlns:h="http://java.sun.com/jsf/html">
+
+    <cc:interface>
+        <cc:attribute name="booleanPrimitive" type="boolean" required="false" default="true"/>
+    </cc:interface>
+    <cc:implementation>
+        Test Boolean Primitive: <h:outputText value="#{cc.attrs.booleanPrimitive}"/><br/>
+    </cc:implementation>
+</html>
diff --git a/test/agnostic/facelets/cc/src/main/webapp/resources/ccAndInclude/external-composite.xhtml b/test/agnostic/facelets/cc/src/main/webapp/resources/ccAndInclude/external-composite.xhtml
new file mode 100644
index 0000000..2fd0387
--- /dev/null
+++ b/test/agnostic/facelets/cc/src/main/webapp/resources/ccAndInclude/external-composite.xhtml
@@ -0,0 +1,20 @@
+<f:view xmlns="http://www.w3.org/1999/xhtml"
+	xmlns:f="http://java.sun.com/jsf/core"
+	xmlns:h="http://java.sun.com/jsf/html"
+	xmlns:ui="http://java.sun.com/jsf/facelets"
+	xmlns:composite="http://java.sun.com/jsf/composite"
+	xmlns:ccAndInclude="http://java.sun.com/jsf/composite/ccAndInclude">
+
+	<composite:interface name="external-composite">
+	</composite:interface>
+
+	<composite:implementation>
+		<h:panelGroup layout="block"
+			style="border: 1px solid black; padding: 5px;">
+			This is the external composite component. Here we use 'internal-component'
+			and pass 'Test string' through 'param' parameter.
+			<hr />
+			<ccAndInclude:internal-composite id="internal" param="Test string" />
+		</h:panelGroup>
+	</composite:implementation>
+</f:view>
diff --git a/test/agnostic/facelets/cc/src/main/webapp/resources/ccAndInclude/internal-composite.xhtml b/test/agnostic/facelets/cc/src/main/webapp/resources/ccAndInclude/internal-composite.xhtml
new file mode 100644
index 0000000..f5ea8df
--- /dev/null
+++ b/test/agnostic/facelets/cc/src/main/webapp/resources/ccAndInclude/internal-composite.xhtml
@@ -0,0 +1,38 @@
+<f:view xmlns="http://www.w3.org/1999/xhtml"
+	xmlns:f="http://java.sun.com/jsf/core"
+	xmlns:h="http://java.sun.com/jsf/html"
+	xmlns:ui="http://java.sun.com/jsf/facelets"
+	xmlns:composite="http://java.sun.com/jsf/composite">
+
+	<composite:interface name="internal-composite">
+		<composite:attribute name="param" type="java.lang.String" />
+	</composite:interface>
+
+	<composite:implementation>
+		<h:panelGroup layout="block"
+			style="border: 1px solid black; padding: 5px;">
+			This is the internal composite component. Here we evaluate #{'#{'}cc} both
+			directly in the implementation and inside an included xhtml.
+			<hr />
+			<h:panelGroup layout="block">
+				cc is evaluated inside the composite component
+				<ol start="11">
+					<li>#{'#{'}cc} evaluates to: <h:outputText value="#{cc}" /></li>
+					<li>#{'#{'}cc['clientId']} evaluates to: <h:outputText
+							value="#{cc['clientId']}" /></li>
+					<li>#{'#{'}cc.clientId} evaluates to: <h:outputText
+							value="#{cc.clientId}" /></li>
+					<li>#{'#{'}cc['attrs'].param} evaluates to: <h:outputText
+							value="#{cc['attrs'].param}" /></li>
+					<li>#{'#{'}cc.attrs.param} evaluates to: <h:outputText
+							value="#{cc.attrs.param}" /></li>
+				</ol>
+			</h:panelGroup>
+
+			<h:panelGroup layout="block">
+				cc is evaluated in a xhtml file included by the composite component
+				<ui:include src="/ccAndInclude-include.xhtml" />
+			</h:panelGroup>
+		</h:panelGroup>
+	</composite:implementation>
+</f:view>
diff --git a/test/agnostic/facelets/cc/src/main/webapp/resources/clientbehavior/compositeTest.xhtml b/test/agnostic/facelets/cc/src/main/webapp/resources/clientbehavior/compositeTest.xhtml
new file mode 100644
index 0000000..b59584b
--- /dev/null
+++ b/test/agnostic/facelets/cc/src/main/webapp/resources/clientbehavior/compositeTest.xhtml
@@ -0,0 +1,73 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+xmlns:h="http://java.sun.com/jsf/html"
+xmlns:f="http://java.sun.com/jsf/core"
+xmlns:composite="http://java.sun.com/jsf/composite"
+>
+
+<composite:interface name="composite"
+	displayName="BehaviorHandler composite component test">
+	<composite:attribute name="commandAction"
+		method-signature="String f1()">
+	</composite:attribute>
+	<composite:clientBehavior name="#{testBean.myname}"
+		event="action"
+		targets="#{testBean.targets}" />
+</composite:interface>
+
+<composite:implementation>
+	<h:commandButton id="cancel" value="Cancel"/>
+	<f:subview id="sub">
+		<h:panelGroup id="group">
+			<h:commandButton id="command" value="Ok"
+				action="#{cc.attrs.commandAction}">
+			</h:commandButton>
+		</h:panelGroup>
+	</f:subview>
+</composite:implementation>
+
+</html>
diff --git a/test/agnostic/facelets/cc/src/main/webapp/resources/clientbehavior/compositeTestEL.xhtml b/test/agnostic/facelets/cc/src/main/webapp/resources/clientbehavior/compositeTestEL.xhtml
new file mode 100644
index 0000000..ed57409
--- /dev/null
+++ b/test/agnostic/facelets/cc/src/main/webapp/resources/clientbehavior/compositeTestEL.xhtml
@@ -0,0 +1,73 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+xmlns:h="http://java.sun.com/jsf/html"
+xmlns:f="http://java.sun.com/jsf/core"
+xmlns:composite="http://java.sun.com/jsf/composite"
+>
+
+<composite:interface name="composite"
+	displayName="BehaviorHandler composite component test">
+	<composite:attribute name="commandAction"
+		method-signature="String f1()">
+	</composite:attribute>
+	<composite:clientBehavior name="#{testBean.myname}"
+		event="#{testBean.event}"
+		targets="#{testBean.targetsEL}" />
+</composite:interface>
+
+<composite:implementation>
+	<h:commandButton id="cancelEL" value="Cancel"/>
+	<f:subview id="sub">
+		<h:panelGroup id="group">
+			<h:commandButton id="commandEL" value="Ok"
+				action="#{cc.attrs.commandAction}">
+			</h:commandButton>
+		</h:panelGroup>
+	</f:subview>
+</composite:implementation>
+
+</html>
diff --git a/test/agnostic/facelets/cc/src/main/webapp/resources/components/bind.xhtml b/test/agnostic/facelets/cc/src/main/webapp/resources/components/bind.xhtml
new file mode 100644
index 0000000..e6466dd
--- /dev/null
+++ b/test/agnostic/facelets/cc/src/main/webapp/resources/components/bind.xhtml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui:composition xmlns="http://www.w3.org/1999/xhtml"
+	xmlns:ui="http://java.sun.com/jsf/facelets"
+	xmlns:composite="http://java.sun.com/jsf/composite">
+	<composite:interface>
+	</composite:interface>
+
+	<composite:implementation>
+	</composite:implementation>
+</ui:composition>
\ No newline at end of file
diff --git a/test/agnostic/facelets/cc/src/main/webapp/resources/constructor/component.xhtml b/test/agnostic/facelets/cc/src/main/webapp/resources/constructor/component.xhtml
new file mode 100644
index 0000000..c34cff9
--- /dev/null
+++ b/test/agnostic/facelets/cc/src/main/webapp/resources/constructor/component.xhtml
@@ -0,0 +1,12 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:cc="http://java.sun.com/jsf/composite">
+    <cc:interface componentType="com.sun.faces.test.agnostic.facelets.composite.ConstructorComponent">
+    </cc:interface>
+    <cc:implementation>
+        <p>This is the CC</p>
+    </cc:implementation> 
+</html>
diff --git a/test/agnostic/facelets/cc/src/main/webapp/resources/decorate/decorate1.xhtml b/test/agnostic/facelets/cc/src/main/webapp/resources/decorate/decorate1.xhtml
new file mode 100644
index 0000000..be336db
--- /dev/null
+++ b/test/agnostic/facelets/cc/src/main/webapp/resources/decorate/decorate1.xhtml
@@ -0,0 +1,20 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:decorate="http://java.sun.com/jsf/composite/decorate"
+      xmlns:composite="http://java.sun.com/jsf/composite">
+
+    <head>
+        <title></title>
+    </head>
+    <body>
+        <composite:interface>
+        </composite:interface>
+        <composite:implementation>
+            <decorate:decorate1b string="Do you see me?"/>
+        </composite:implementation>
+    </body>
+</html>
diff --git a/test/agnostic/facelets/cc/src/main/webapp/resources/decorate/decorate1b.xhtml b/test/agnostic/facelets/cc/src/main/webapp/resources/decorate/decorate1b.xhtml
new file mode 100644
index 0000000..f533506
--- /dev/null
+++ b/test/agnostic/facelets/cc/src/main/webapp/resources/decorate/decorate1b.xhtml
@@ -0,0 +1,18 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:composite="http://java.sun.com/jsf/composite">
+
+    <head>
+        <title></title>
+    </head>
+    <body>
+        <composite:interface>
+            <composite:attribute name="string" type="java.lang.String" required="true"/>
+        </composite:interface>
+        <composite:implementation>
+            <ui:decorate template="/decorate1c.xhtml"/>
+        </composite:implementation>
+    </body>
+</html>
diff --git a/test/agnostic/facelets/cc/src/main/webapp/resources/inputTextAjaxListener1/inputTextAjaxListener1.xhtml b/test/agnostic/facelets/cc/src/main/webapp/resources/inputTextAjaxListener1/inputTextAjaxListener1.xhtml
new file mode 100644
index 0000000..5b740ac
--- /dev/null
+++ b/test/agnostic/facelets/cc/src/main/webapp/resources/inputTextAjaxListener1/inputTextAjaxListener1.xhtml
@@ -0,0 +1,22 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://xmlns.jcp.org/jsf/html"
+      xmlns:composite="http://xmlns.jcp.org/jsf/composite"
+      xmlns:inputTextAjaxListener1="http://xmlns.jcp.org/jsf/composite/inputTextAjaxListener1">
+    <h:head>
+        <title>Facelet Title</title>
+    </h:head>
+    <h:body>
+        <composite:interface>
+            <composite:attribute name="value"/>
+            <composite:attribute name="listener" method-signature="void listener()"/>
+        </composite:interface>
+        <composite:implementation>
+            <inputTextAjaxListener1:inputTextAjaxListener1b id="nesting1" value="#{cc.attrs.value}" listener="#{cc.attrs.listener}"/>
+        </composite:implementation>
+    </h:body>
+</html>
diff --git a/test/agnostic/facelets/cc/src/main/webapp/resources/inputTextAjaxListener1/inputTextAjaxListener1b.xhtml b/test/agnostic/facelets/cc/src/main/webapp/resources/inputTextAjaxListener1/inputTextAjaxListener1b.xhtml
new file mode 100644
index 0000000..f79563e
--- /dev/null
+++ b/test/agnostic/facelets/cc/src/main/webapp/resources/inputTextAjaxListener1/inputTextAjaxListener1b.xhtml
@@ -0,0 +1,24 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:composite="http://xmlns.jcp.org/jsf/composite"
+      xmlns:h="http://xmlns.jcp.org/jsf/html"
+      xmlns:f="http://xmlns.jcp.org/jsf/core">
+    <head>
+        <title>Facelet Title</title>
+    </head>
+    <body>
+        <composite:interface>
+            <composite:attribute name="value"/>
+            <composite:attribute name="listener" method-signature="void listener()"/>
+        </composite:interface>
+        <composite:implementation>
+            <h:inputText id="inputText" value="#{cc.attrs.value}">
+                <f:ajax immediate="true" listener="#{cc.attrs.listener}" />
+            </h:inputText>
+        </composite:implementation>
+    </body>
+</html>
diff --git a/test/agnostic/facelets/cc/src/main/webapp/resources/inputTextValidator1/inputTextValidator1.xhtml b/test/agnostic/facelets/cc/src/main/webapp/resources/inputTextValidator1/inputTextValidator1.xhtml
new file mode 100644
index 0000000..3607d1d
--- /dev/null
+++ b/test/agnostic/facelets/cc/src/main/webapp/resources/inputTextValidator1/inputTextValidator1.xhtml
@@ -0,0 +1,21 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://xmlns.jcp.org/jsf/html"
+      xmlns:cc="http://xmlns.jcp.org/jsf/composite"
+      xmlns:inputTextValidator1="http://xmlns.jcp.org/jsf/composite/inputTextValidator1">
+    <h:head>
+        <title>Title</title>
+    </h:head>
+    <body>
+        <cc:interface>
+            <cc:attribute name="value"/>
+            <cc:attribute name="validator" method-signature="void Action(javax.faces.context.FacesContext, javax.faces.component.UIComponent,Object)"/>
+        </cc:interface>
+        <cc:implementation>
+            <inputTextValidator1:inputTextValidator1b id="level2" value="#{cc.attrs.value}" validator="#{cc.attrs.validator}"/>
+        </cc:implementation>
+    </body>
+</html>
diff --git a/test/agnostic/facelets/cc/src/main/webapp/resources/inputTextValidator1/inputTextValidator1b.xhtml b/test/agnostic/facelets/cc/src/main/webapp/resources/inputTextValidator1/inputTextValidator1b.xhtml
new file mode 100644
index 0000000..dbf7f2e
--- /dev/null
+++ b/test/agnostic/facelets/cc/src/main/webapp/resources/inputTextValidator1/inputTextValidator1b.xhtml
@@ -0,0 +1,20 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://xmlns.jcp.org/jsf/html"
+      xmlns:cc="http://xmlns.jcp.org/jsf/composite">
+    <head>
+        <title>Title</title>
+    </head>
+    <body>
+        <cc:interface>
+            <cc:attribute name="value"/>
+            <cc:attribute name="validator" method-signature="void Action(javax.faces.context.FacesContext, javax.faces.component.UIComponent,Object)"/>
+        </cc:interface>
+        <cc:implementation>
+            <h:inputText id="inputText" value="#{cc.attrs.value}" validator="#{cc.attrs.validator}"/>
+        </cc:implementation>
+    </body>
+</html>
diff --git a/test/agnostic/facelets/cc/src/main/webapp/resources/outputText/outputTextInline1.xhtml b/test/agnostic/facelets/cc/src/main/webapp/resources/outputText/outputTextInline1.xhtml
new file mode 100644
index 0000000..9d5f6ab
--- /dev/null
+++ b/test/agnostic/facelets/cc/src/main/webapp/resources/outputText/outputTextInline1.xhtml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:cc="http://java.sun.com/jsf/composite"
+      xmlns:outputText="http://java.sun.com/jsf/composite/outputText">
+    <head>
+        <title></title>
+    </head>
+    <body>
+        <cc:interface>
+            <cc:attribute name="model" required="true"/>
+        </cc:interface>
+        <cc:implementation>
+            <outputText:outputTextInline1b>
+                <f:facet name="content">
+                    direct EL: >#{cc.attrs.model.data}< outputText: ><h:outputText value="#{cc.attrs.model.data}" /><
+                </f:facet>
+            </outputText:outputTextInline1b>
+        </cc:implementation> 
+    </body>
+</html>
diff --git a/test/agnostic/facelets/cc/src/main/webapp/resources/outputText/outputTextInline1b.xhtml b/test/agnostic/facelets/cc/src/main/webapp/resources/outputText/outputTextInline1b.xhtml
new file mode 100644
index 0000000..8c5792b
--- /dev/null
+++ b/test/agnostic/facelets/cc/src/main/webapp/resources/outputText/outputTextInline1b.xhtml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:cc="http://java.sun.com/jsf/composite">
+    <head>
+        <title></title>
+    </head>
+    <body>
+        <cc:interface>
+            <cc:facet name="content"/>
+        </cc:interface>
+        <cc:implementation>
+            <div id="#{cc.clientId}">
+                <cc:renderFacet name="content"/>
+            </div>
+        </cc:implementation> 
+    </body>
+</html>
diff --git a/test/agnostic/facelets/cc/src/main/webapp/resources/renderFacet/renderFacet.xhtml b/test/agnostic/facelets/cc/src/main/webapp/resources/renderFacet/renderFacet.xhtml
new file mode 100644
index 0000000..6f52c54
--- /dev/null
+++ b/test/agnostic/facelets/cc/src/main/webapp/resources/renderFacet/renderFacet.xhtml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:composite="http://java.sun.com/jsf/composite">
+    <composite:interface>
+        <composite:attribute name="title" />
+        <composite:facet name="body" />
+    </composite:interface>
+    <composite:implementation>
+        <div>
+            <h3>#{cc.attrs.title}</h3>
+            <composite:renderFacet name="body" />
+        </div>
+    </composite:implementation>
+</html>
diff --git a/test/agnostic/facelets/cc/src/main/webapp/resources/simple/simple.xhtml b/test/agnostic/facelets/cc/src/main/webapp/resources/simple/simple.xhtml
new file mode 100644
index 0000000..173571b
--- /dev/null
+++ b/test/agnostic/facelets/cc/src/main/webapp/resources/simple/simple.xhtml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:cc="http://xmlns.jcp.org/jsf/composite">
+    <head>
+        <title>Simple composite component</title>
+    </head>
+    <body>
+        <cc:interface>
+        </cc:interface>
+        <cc:implementation>
+            This is coming from a composite component.
+        </cc:implementation>
+    </body>
+</html>
diff --git a/test/agnostic/facelets/cc/src/main/webapp/resources/sourceValidationFails1/sourceValidationFails.xhtml b/test/agnostic/facelets/cc/src/main/webapp/resources/sourceValidationFails1/sourceValidationFails.xhtml
new file mode 100644
index 0000000..777232c
--- /dev/null
+++ b/test/agnostic/facelets/cc/src/main/webapp/resources/sourceValidationFails1/sourceValidationFails.xhtml
@@ -0,0 +1,15 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:cc="http://java.sun.com/jsf/composite">
+    <head>
+        <title></title>
+    </head>
+    <body>
+        <cc:interface></cc:interface>
+        <cc:implementation>
+            <div id="#{cc.clientId}">Test</div>
+        </cc:implementation> 
+    </body>
+</html>
diff --git a/test/agnostic/facelets/cc/src/main/webapp/resources/validatorDouble/validatorDouble.xhtml b/test/agnostic/facelets/cc/src/main/webapp/resources/validatorDouble/validatorDouble.xhtml
new file mode 100644
index 0000000..64442be
--- /dev/null
+++ b/test/agnostic/facelets/cc/src/main/webapp/resources/validatorDouble/validatorDouble.xhtml
@@ -0,0 +1,19 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:cc="http://java.sun.com/jsf/composite"
+      xmlns:validatorDouble="http://java.sun.com/jsf/composite/validatorDouble">
+    <head>
+        <title></title>
+    </head>
+    <body>
+        <cc:interface>
+            <cc:editableValueHolder name="input"/>
+        </cc:interface>
+        <cc:implementation>
+            <h:inputText id="input"/>
+        </cc:implementation> 
+    </body>
+</html>
diff --git a/test/agnostic/facelets/cc/src/main/webapp/resources/validatorException/inputText.xhtml b/test/agnostic/facelets/cc/src/main/webapp/resources/validatorException/inputText.xhtml
new file mode 100644
index 0000000..700b5b8
--- /dev/null
+++ b/test/agnostic/facelets/cc/src/main/webapp/resources/validatorException/inputText.xhtml
@@ -0,0 +1,41 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<ui:composition xmlns="http://www.w3.org/1999/xhtml"
+                xmlns:ui="http://java.sun.com/jsf/facelets"
+                xmlns:cc="http://java.sun.com/jsf/composite"
+                xmlns:h="http://java.sun.com/jsf/html">
+
+    <cc:interface>
+        <cc:attribute name="label" required="true"/>
+        <cc:attribute name="value" required="true"/>
+        <cc:editableValueHolder name="value" targets="inputText"/>
+        <cc:attribute name="required" type="boolean"/>
+        <cc:attribute name="requiredMessage"/>
+        <cc:attribute name="editable" required="true" type="boolean"/>
+        <cc:attribute name="helpText" required="false"/>
+        <cc:attribute name="validator" required="false" targets="inputText"
+                      method-signature="void validate(javax.faces.context.FacesContext,javax.faces.component.UIComponent,java.lang.Object)"/>
+        <cc:attribute name="validatorMessage"/>
+    </cc:interface>
+
+    <cc:implementation>
+        <div>
+            <h:outputLabel for="inputText" value="#{cc.attrs.label}"/>
+            <h:inputText id="inputText" 
+                         disabled="#{!cc.attrs.editable}"
+                         required="#{cc.attrs.required}" 
+                         requiredMessage="#{cc.attrs.requiredMessage}"
+                         value="#{cc.attrs.value}"
+                         validatorMessage="#{cc.attrs.validatorMessage}">
+            </h:inputText>
+
+            <h:panelGroup layout="block" 
+                          rendered="#{!(empty cc.attrs.helpText) and cc.attrs.editable}">
+                <i>#{cc.attrs.helpText}</i>
+            </h:panelGroup>
+        </div>
+        <div>
+            <h:messages/>
+        </div>
+    </cc:implementation>
+</ui:composition>
diff --git a/test/agnostic/facelets/cc/src/main/webapp/simple.xhtml b/test/agnostic/facelets/cc/src/main/webapp/simple.xhtml
new file mode 100644
index 0000000..37c63d9
--- /dev/null
+++ b/test/agnostic/facelets/cc/src/main/webapp/simple.xhtml
@@ -0,0 +1,17 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:f="http://xmlns.jcp.org/jsf/core"
+      xmlns:h="http://xmlns.jcp.org/jsf/html"
+      xmlns:simple="http://xmlns.jcp.org/jsf/composite/simple">
+    <body>
+        <f:view>
+            <h:form>
+                <simple:simple/>
+            </h:form>
+        </f:view>
+    </body>
+</html>
diff --git a/test/agnostic/facelets/cc/src/main/webapp/sourceValidationFails.xhtml b/test/agnostic/facelets/cc/src/main/webapp/sourceValidationFails.xhtml
new file mode 100644
index 0000000..9f13ff1
--- /dev/null
+++ b/test/agnostic/facelets/cc/src/main/webapp/sourceValidationFails.xhtml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:sourceValidationFails="sourceValidationFails">
+    <h:head>
+    </h:head>
+    <h:body id="body">
+        <sourceValidationFails:sourceValidationFails id="myLayout" />
+    </h:body>
+</html>
diff --git a/test/agnostic/facelets/cc/src/main/webapp/templates/defaultLayout.xhtml b/test/agnostic/facelets/cc/src/main/webapp/templates/defaultLayout.xhtml
new file mode 100644
index 0000000..50297a0
--- /dev/null
+++ b/test/agnostic/facelets/cc/src/main/webapp/templates/defaultLayout.xhtml
@@ -0,0 +1,12 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:c="http://java.sun.com/jsp/jstl/core"
+      xmlns:ccInJar="http://mojarra.java.net/ccInJar">
+    <ui:component>
+        <ccInJar:layout/>
+    </ui:component>
+</html>
diff --git a/test/agnostic/facelets/cc/src/main/webapp/templates/defaultPage.xhtml b/test/agnostic/facelets/cc/src/main/webapp/templates/defaultPage.xhtml
new file mode 100644
index 0000000..651ebe2
--- /dev/null
+++ b/test/agnostic/facelets/cc/src/main/webapp/templates/defaultPage.xhtml
@@ -0,0 +1,16 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:c="http://java.sun.com/jsp/jstl/core"
+      xmlns:ccInJar="http://mojarra.java.net/ccInJar">
+
+    <ui:composition template="defaultLayout.xhtml">
+
+        <ui:define name="head-resources">
+            <h:outputStylesheet library="css" name="default.css" />
+        </ui:define>
+
+    </ui:composition>
+</html>
\ No newline at end of file
diff --git a/test/agnostic/facelets/cc/src/main/webapp/validatorDouble.xhtml b/test/agnostic/facelets/cc/src/main/webapp/validatorDouble.xhtml
new file mode 100644
index 0000000..f29e8d7
--- /dev/null
+++ b/test/agnostic/facelets/cc/src/main/webapp/validatorDouble.xhtml
@@ -0,0 +1,31 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:validatorDouble="http://java.sun.com/jsf/composite/validatorDouble">
+    <h:head></h:head>
+    <h:body>
+        <h:form id="form">
+            Adding validators to editableValueHolders inside composite components (FAILS):
+            <validatorDouble:validatorDouble id="myCompositeInput">
+                <f:validator validatorId="com.sun.faces.test.agnostic.facelets.composite.ValidatorDoubleValidator" for="input"/>
+                <f:validateLength minimum="20" for="input"/>
+            </validatorDouble:validatorDouble>
+
+            <br />
+            Simple (WORKS):
+            <h:inputText id="simpleInput">
+                <f:validator validatorId="com.sun.faces.test.agnostic.facelets.composite.ValidatorDoubleValidator"/>
+                <f:validateLength minimum="20"/>
+            </h:inputText>
+
+            <br />
+            <br />
+            <h:commandButton id="submit" value="Enter some short text, click me and watch the errors"/>
+            <h:messages />
+
+        </h:form>
+    </h:body>
+</html>
\ No newline at end of file
diff --git a/test/agnostic/facelets/cc/src/main/webapp/validatorException.xhtml b/test/agnostic/facelets/cc/src/main/webapp/validatorException.xhtml
new file mode 100644
index 0000000..1787007
--- /dev/null
+++ b/test/agnostic/facelets/cc/src/main/webapp/validatorException.xhtml
@@ -0,0 +1,23 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<ui:composition xmlns="http://www.w3.org/1999/xhtml"
+                xmlns:h="http://java.sun.com/jsf/html"
+                xmlns:validatorException="http://java.sun.com/jsf/composite/validatorException"
+                xmlns:f="http://java.sun.com/jsf/core"
+                xmlns:ui="http://java.sun.com/jsf/facelets"
+                template="/WEB-INF/templates/validatorException.xhtml">
+    <ui:define name="page.title">Issue 2665</ui:define>
+    <ui:define name="page.content">
+        <fieldset>
+            <legend>Issue 2665</legend>
+            Type any piece of text and click on submit, then check your log files.
+            <validatorException:inputText 
+                id="composite"
+                value="#{validatorExceptionBean.name}" label="Enter name"
+                editable="true"
+                validatorMessage="Name is invalid"
+                validator="#{validatorExceptionBean.validateName}"/>
+            <h:commandButton id="submitButton" value="Submit"/>
+        </fieldset>
+    </ui:define>
+</ui:composition>
diff --git a/test/agnostic/facelets/cc/src/test/java/com/sun/faces/test/agnostic/facelets/composite/Issue1856IT.java b/test/agnostic/facelets/cc/src/test/java/com/sun/faces/test/agnostic/facelets/composite/Issue1856IT.java
new file mode 100644
index 0000000..c0d4907
--- /dev/null
+++ b/test/agnostic/facelets/cc/src/test/java/com/sun/faces/test/agnostic/facelets/composite/Issue1856IT.java
@@ -0,0 +1,72 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.facelets.composite;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class Issue1856IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testAttributeValue() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/ccInJar2.xhtml");
+        assertEquals(200, page.getWebResponse().getStatusCode());
+        assertTrue(page.asXml().indexOf("value=\"attribute value\"") != -1);
+        assertTrue(page.asXml().indexOf("name=\"mycc:input\"") != -1);
+    }
+}
diff --git a/test/agnostic/facelets/cc/src/test/java/com/sun/faces/test/agnostic/facelets/composite/Issue2033IT.java b/test/agnostic/facelets/cc/src/test/java/com/sun/faces/test/agnostic/facelets/composite/Issue2033IT.java
new file mode 100644
index 0000000..31b6047
--- /dev/null
+++ b/test/agnostic/facelets/cc/src/test/java/com/sun/faces/test/agnostic/facelets/composite/Issue2033IT.java
@@ -0,0 +1,70 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.facelets.composite;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import java.util.regex.Pattern;
+import org.junit.*;
+import static org.junit.Assert.*;
+
+public class Issue2033IT {
+
+    private String webUrl;
+
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testSourceValidationFails() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/sourceValidationFails.xhtml");
+        assertTrue(Pattern.matches("(?s).*.div\\s+id=.myLayout..\\s*Test\\s*./div..*", page.asXml()));
+    }
+}
diff --git a/test/agnostic/facelets/cc/src/test/java/com/sun/faces/test/agnostic/facelets/composite/Issue2047IT.java b/test/agnostic/facelets/cc/src/test/java/com/sun/faces/test/agnostic/facelets/composite/Issue2047IT.java
new file mode 100644
index 0000000..e80080e
--- /dev/null
+++ b/test/agnostic/facelets/cc/src/test/java/com/sun/faces/test/agnostic/facelets/composite/Issue2047IT.java
@@ -0,0 +1,75 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.facelets.composite;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlElement;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class Issue2047IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testNoELEvaluation() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/attributeType.xhtml");
+        assertEquals(200, page.getWebResponse().getStatusCode());
+        HtmlElement button = page.getHtmlElementById("form:submit");
+        page = button.click();
+        assertEquals(200, page.getWebResponse().getStatusCode());
+    }
+}
diff --git a/test/agnostic/facelets/cc/src/test/java/com/sun/faces/test/agnostic/facelets/composite/Issue2161IT.java b/test/agnostic/facelets/cc/src/test/java/com/sun/faces/test/agnostic/facelets/composite/Issue2161IT.java
new file mode 100644
index 0000000..e00dcf5
--- /dev/null
+++ b/test/agnostic/facelets/cc/src/test/java/com/sun/faces/test/agnostic/facelets/composite/Issue2161IT.java
@@ -0,0 +1,71 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.facelets.composite;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class Issue2161IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testNoELEvaluation() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/decorate1.xhtml");
+        assertTrue(page.asXml().contains("Do you see me?"));
+    }
+}
diff --git a/test/agnostic/facelets/cc/src/test/java/com/sun/faces/test/agnostic/facelets/composite/Issue2232IT.java b/test/agnostic/facelets/cc/src/test/java/com/sun/faces/test/agnostic/facelets/composite/Issue2232IT.java
new file mode 100644
index 0000000..a6ca655
--- /dev/null
+++ b/test/agnostic/facelets/cc/src/test/java/com/sun/faces/test/agnostic/facelets/composite/Issue2232IT.java
@@ -0,0 +1,71 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.facelets.composite;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class Issue2232IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testNoELEvaluation() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/constructor.xhtml");
+        assertTrue(page.asText().contains("[ConstructorComponent constructor called]"));
+    }
+}
diff --git a/test/agnostic/facelets/cc/src/test/java/com/sun/faces/test/agnostic/facelets/composite/Issue2665IT.java b/test/agnostic/facelets/cc/src/test/java/com/sun/faces/test/agnostic/facelets/composite/Issue2665IT.java
new file mode 100644
index 0000000..f3c4c49
--- /dev/null
+++ b/test/agnostic/facelets/cc/src/test/java/com/sun/faces/test/agnostic/facelets/composite/Issue2665IT.java
@@ -0,0 +1,75 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.facelets.composite;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlElement;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class Issue2665IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testValidatorException() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/validatorException.xhtml");
+        HtmlElement inputText = page.getHtmlElementById("form:composite:inputText");
+        inputText.type("1234");
+        HtmlElement button = page.getHtmlElementById("form:submitButton");
+        page = button.click();
+        assertTrue(page.asXml().indexOf("Name is invalid") != -1);
+    }
+}
diff --git a/test/agnostic/facelets/cc/src/test/java/com/sun/faces/test/agnostic/facelets/composite/Issue2700IT.java b/test/agnostic/facelets/cc/src/test/java/com/sun/faces/test/agnostic/facelets/composite/Issue2700IT.java
new file mode 100644
index 0000000..96fe2ca
--- /dev/null
+++ b/test/agnostic/facelets/cc/src/test/java/com/sun/faces/test/agnostic/facelets/composite/Issue2700IT.java
@@ -0,0 +1,87 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.facelets.composite;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class Issue2700IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testCompositeBehavior() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/clientBehavior.xhtml");
+
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("form:compositeTest:cancel");
+        page = button.click();
+        assertTrue(page.asText().contains("compositeBehavior script rendered"));
+
+        button = (HtmlSubmitInput) page.getElementById("form:compositeTest:sub:command");
+        page = button.click();
+        assertTrue(page.asText().contains("compositeBehavior script rendered"));
+
+        button = (HtmlSubmitInput) page.getElementById("form:compositeTestEL:cancelEL");
+        page = button.click();
+        assertTrue(page.asText().contains("compositeBehavior script rendered"));
+
+        button = (HtmlSubmitInput) page.getElementById("form:compositeTestEL:sub:commandEL");
+        page = button.click();
+        assertTrue(page.asText().contains("compositeBehavior script rendered"));
+}
+}
diff --git a/test/agnostic/facelets/cc/src/test/java/com/sun/faces/test/agnostic/facelets/composite/Issue2738IT.java b/test/agnostic/facelets/cc/src/test/java/com/sun/faces/test/agnostic/facelets/composite/Issue2738IT.java
new file mode 100644
index 0000000..6bf7af9
--- /dev/null
+++ b/test/agnostic/facelets/cc/src/test/java/com/sun/faces/test/agnostic/facelets/composite/Issue2738IT.java
@@ -0,0 +1,70 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.facelets.composite;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class Issue2738IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testValidatorException() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/ccInJar.xhtml");
+        assertEquals(200, page.getWebResponse().getStatusCode());
+    }
+}
diff --git a/test/agnostic/facelets/cc/src/test/java/com/sun/faces/test/agnostic/facelets/composite/Issue2767IT.java b/test/agnostic/facelets/cc/src/test/java/com/sun/faces/test/agnostic/facelets/composite/Issue2767IT.java
new file mode 100644
index 0000000..d77dacc
--- /dev/null
+++ b/test/agnostic/facelets/cc/src/test/java/com/sun/faces/test/agnostic/facelets/composite/Issue2767IT.java
@@ -0,0 +1,68 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.facelets.composite;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.*;
+import static org.junit.Assert.*;
+
+public class Issue2767IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testComposite() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/simple.xhtml");
+        assertTrue(page.asText().contains("This is coming from a composite component."));
+    }
+}
diff --git a/test/agnostic/facelets/cc/src/test/java/com/sun/faces/test/agnostic/facelets/composite/Issue2846IT.java b/test/agnostic/facelets/cc/src/test/java/com/sun/faces/test/agnostic/facelets/composite/Issue2846IT.java
new file mode 100644
index 0000000..1aadaab
--- /dev/null
+++ b/test/agnostic/facelets/cc/src/test/java/com/sun/faces/test/agnostic/facelets/composite/Issue2846IT.java
@@ -0,0 +1,82 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.facelets.composite;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class Issue2846IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testAttributeBooleanPrimitiveFalse() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/attributeBooleanPrimitiveFalse.xhtml");
+        assertEquals(200, page.getWebResponse().getStatusCode());
+    }
+
+    @Test
+    public void testAttributeBooleanPrimitiveTrue() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/attributeBooleanPrimitiveTrue.xhtml");
+        assertEquals(200, page.getWebResponse().getStatusCode());
+    }
+
+    @Test
+    public void testAttributeBooleanPrimitiveWithDefault() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/attributeBooleanPrimitiveWithDefault.xhtml");
+        assertEquals(200, page.getWebResponse().getStatusCode());
+    }
+}
diff --git a/test/agnostic/facelets/cc/src/test/java/com/sun/faces/test/agnostic/facelets/composite/Issue2925IT.java b/test/agnostic/facelets/cc/src/test/java/com/sun/faces/test/agnostic/facelets/composite/Issue2925IT.java
new file mode 100644
index 0000000..66bc810
--- /dev/null
+++ b/test/agnostic/facelets/cc/src/test/java/com/sun/faces/test/agnostic/facelets/composite/Issue2925IT.java
@@ -0,0 +1,116 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.facelets.composite;
+
+import com.gargoylesoftware.htmlunit.html.HtmlElement;
+import com.gargoylesoftware.htmlunit.html.HtmlAnchor;
+import java.util.List;
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import static org.junit.Assert.assertTrue;
+
+public class Issue2925IT {
+    /**
+     * Stores the web URL.
+     */
+    private String webUrl;
+    /**
+     * Stores the web client.
+     */
+    private WebClient webClient;
+
+    /**
+     * Setup before testing.
+     * 
+     * @throws Exception when a serious error occurs.
+     */
+    @BeforeClass
+    public static void setUpClass() throws Exception {
+    }
+
+    /**
+     * Cleanup after testing.
+     * 
+     * @throws Exception when a serious error occurs.
+     */
+    @AfterClass
+    public static void tearDownClass() throws Exception {
+    }
+
+    /**
+     * Setup before testing.
+     */
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    /**
+     * Tear down after testing.
+     */
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testCCWithBinding() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/composite.xhtml");
+        webClient.waitForBackgroundJavaScript(60000);
+        List anchors = page.getAnchors();
+
+        HtmlAnchor anchor1 = (HtmlAnchor)anchors.get(0);
+        page = anchor1.click();
+        webClient.waitForBackgroundJavaScript(60000);
+        
+        HtmlElement p = (HtmlElement) page.getElementById("compositeId");
+        assertTrue(p.asText().equals("commentBoxForm:bindID"));
+        
+        p = (HtmlElement) page.getElementById("nonCompositeId");
+        assertTrue(p.asText().equals("commentBoxForm:nonBindId"));
+        
+    }
+}
diff --git a/test/agnostic/facelets/cc/src/test/java/com/sun/faces/test/agnostic/facelets/composite/Issue3026IT.java b/test/agnostic/facelets/cc/src/test/java/com/sun/faces/test/agnostic/facelets/composite/Issue3026IT.java
new file mode 100644
index 0000000..4ef9474
--- /dev/null
+++ b/test/agnostic/facelets/cc/src/test/java/com/sun/faces/test/agnostic/facelets/composite/Issue3026IT.java
@@ -0,0 +1,72 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.facelets.composite;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlInput;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import static org.junit.Assert.*;
+
+public class Issue3026IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testAttributeUsingEL() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/attributeUsingEL.xhtml");
+        HtmlInput input = page.getHtmlElementById("mainForm:myId:myId_value");
+        assertEquals("bbbb", input.getValueAttribute());
+    }
+}
diff --git a/test/agnostic/facelets/cc/src/test/java/com/sun/faces/test/agnostic/facelets/composite/Issue3077IT.java b/test/agnostic/facelets/cc/src/test/java/com/sun/faces/test/agnostic/facelets/composite/Issue3077IT.java
new file mode 100644
index 0000000..deda561
--- /dev/null
+++ b/test/agnostic/facelets/cc/src/test/java/com/sun/faces/test/agnostic/facelets/composite/Issue3077IT.java
@@ -0,0 +1,85 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.facelets.composite;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlInput;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import static org.junit.Assert.*;
+
+public class Issue3077IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testCCAndInclude() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/ccAndInclude.xhtml");
+        String pageText = page.asXml();
+        
+        String beforeText = pageText.substring(0, pageText.indexOf("cc is evaluated in a xhtml file included by the composite component"));
+        
+        assertTrue(beforeText.indexOf("#{cc['clientId']} evaluates to: external:internal") != -1);
+        assertTrue(beforeText.indexOf("#{cc.clientId} evaluates to: external:internal") != -1);
+        assertTrue(beforeText.indexOf("#{cc['attrs'].param} evaluates to: Test string") != -1);
+        assertTrue(beforeText.indexOf("#{cc.attrs.param} evaluates to: Test string") != -1);
+        
+        String afterText = pageText.substring(pageText.indexOf("cc is evaluated in a xhtml file included by the composite component"));
+        
+        assertTrue(afterText.indexOf("#{cc['clientId']} evaluates to: external:internal") != -1);
+        assertTrue(afterText.indexOf("#{cc.clientId} evaluates to: external:internal") != -1);
+        assertTrue(afterText.indexOf("#{cc['attrs'].param} evaluates to: Test string") != -1);
+        assertTrue(afterText.indexOf("#{cc.attrs.param} evaluates to: Test string") != -1);
+    }
+}
diff --git a/test/agnostic/facelets/cc/src/test/java/com/sun/faces/test/agnostic/facelets/composite/Issue3085IT.java b/test/agnostic/facelets/cc/src/test/java/com/sun/faces/test/agnostic/facelets/composite/Issue3085IT.java
new file mode 100644
index 0000000..3d41f83
--- /dev/null
+++ b/test/agnostic/facelets/cc/src/test/java/com/sun/faces/test/agnostic/facelets/composite/Issue3085IT.java
@@ -0,0 +1,75 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.facelets.composite;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlElement;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import static org.junit.Assert.*;
+
+public class Issue3085IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testInputTextValidator1() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/inputTextValidator1.xhtml");
+        HtmlElement button = page.getHtmlElementById("form:submit");
+        HtmlElement inputText = page.getHtmlElementById("form:level1:level2:inputText");
+        inputText.type("test");
+        page = button.click();
+        assertTrue(page.asXml().indexOf("Oops") != -1);
+    }
+}
diff --git a/test/agnostic/facelets/cc/src/test/java/com/sun/faces/test/agnostic/facelets/composite/Issue3088IT.java b/test/agnostic/facelets/cc/src/test/java/com/sun/faces/test/agnostic/facelets/composite/Issue3088IT.java
new file mode 100644
index 0000000..8bd86d2
--- /dev/null
+++ b/test/agnostic/facelets/cc/src/test/java/com/sun/faces/test/agnostic/facelets/composite/Issue3088IT.java
@@ -0,0 +1,72 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.facelets.composite;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlElement;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import static org.junit.Assert.*;
+
+public class Issue3088IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testRenderFacet() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/renderFacet1.xhtml");
+        HtmlElement element = page.getHtmlElementById("renderFacet:notfound");
+        assertNotNull(element);
+    }
+}
diff --git a/test/agnostic/facelets/cc/src/test/java/com/sun/faces/test/agnostic/facelets/composite/Issue3094IT.java b/test/agnostic/facelets/cc/src/test/java/com/sun/faces/test/agnostic/facelets/composite/Issue3094IT.java
new file mode 100644
index 0000000..24dc691
--- /dev/null
+++ b/test/agnostic/facelets/cc/src/test/java/com/sun/faces/test/agnostic/facelets/composite/Issue3094IT.java
@@ -0,0 +1,73 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.facelets.composite;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import static org.junit.Assert.*;
+
+public class Issue3094IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testOutputTextInline() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/outputTextInline.xhtml");
+        String text = page.asXml();
+        int firstIndex = text.indexOf("direct EL: >myData< outputText: >myData<");
+        assertTrue(firstIndex > 0);
+        assertTrue(text.indexOf("direct EL: >myData< outputText: >myData<", firstIndex + 2) != -1);
+    }
+}
diff --git a/test/agnostic/facelets/cc/src/test/java/com/sun/faces/test/agnostic/facelets/composite/Issue3095IT.java b/test/agnostic/facelets/cc/src/test/java/com/sun/faces/test/agnostic/facelets/composite/Issue3095IT.java
new file mode 100644
index 0000000..4c9c2f8
--- /dev/null
+++ b/test/agnostic/facelets/cc/src/test/java/com/sun/faces/test/agnostic/facelets/composite/Issue3095IT.java
@@ -0,0 +1,74 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.facelets.composite;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlElement;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import static org.junit.Assert.*;
+
+public class Issue3095IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testDoubleValidator() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/validatorDouble.xhtml");
+        HtmlElement submit = page.getHtmlElementById("form:submit");
+        String text = page.asXml();
+        int firstIndex = text.indexOf("form:myCompositeInput:input: Validation failed.");
+        assertTrue(text.indexOf("form:myCompositeInput:input: Validation failed.", firstIndex + 2) == -1);
+    }
+}
diff --git a/test/agnostic/facelets/cc/src/test/java/com/sun/faces/test/agnostic/facelets/composite/Issue3100IT.java b/test/agnostic/facelets/cc/src/test/java/com/sun/faces/test/agnostic/facelets/composite/Issue3100IT.java
new file mode 100644
index 0000000..755abc6
--- /dev/null
+++ b/test/agnostic/facelets/cc/src/test/java/com/sun/faces/test/agnostic/facelets/composite/Issue3100IT.java
@@ -0,0 +1,76 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.facelets.composite;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlElement;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import static org.junit.Assert.*;
+
+public class Issue3100IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testInputAjaxListener1() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/inputTextAjaxListener1.xhtml");
+        HtmlElement inputText = page.getHtmlElementById("form:nesting0:nesting1:inputText");
+        inputText.type("12345");
+        inputText.blur();
+        webClient.waitForBackgroundJavaScript(1200000);
+        String text = page.asXml();
+        assertTrue(text.indexOf("class java.lang.IllegalStateException") != -1);
+    }
+}
diff --git a/test/agnostic/facelets/cc/src/test/java/com/sun/faces/test/agnostic/facelets/composite/Spec901IT.java b/test/agnostic/facelets/cc/src/test/java/com/sun/faces/test/agnostic/facelets/composite/Spec901IT.java
new file mode 100644
index 0000000..90fd765
--- /dev/null
+++ b/test/agnostic/facelets/cc/src/test/java/com/sun/faces/test/agnostic/facelets/composite/Spec901IT.java
@@ -0,0 +1,78 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.facelets.composite;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlElement;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import static org.junit.Assert.*;
+
+public class Spec901IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testActionListener1() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/actionListener1.xhtml");
+        HtmlElement button1 = page.getHtmlElementById("form:loginPanel:loginEvent");
+        page = button1.click();
+        String text = page.asXml();
+        assertTrue(text.indexOf("a called b called") != -1);
+        HtmlElement button2 = page.getHtmlElementById("form:loginPanel:cancelEvent:someOtherEvent");
+        page = button2.click();
+        String text2 = page.asXml();
+        assertTrue(text2.indexOf("c called") != -1);
+    }
+}
diff --git a/test/agnostic/facelets/ccInJar/pom.xml b/test/agnostic/facelets/ccInJar/pom.xml
new file mode 100644
index 0000000..d00b5ea
--- /dev/null
+++ b/test/agnostic/facelets/ccInJar/pom.xml
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.agnostic.facelets</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.agnostic.facelets</groupId>
+    <artifactId>ccInJar</artifactId>
+    <packaging>jar</packaging>
+    <name>Mojarra ${project.version} - Test - Agnostic - Facelets - Composite in Jar</name>
+    <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/test/agnostic/facelets/ccInJar/src/main/resources/META-INF/ccInJar.taglib.xml b/test/agnostic/facelets/ccInJar/src/main/resources/META-INF/ccInJar.taglib.xml
new file mode 100644
index 0000000..0123de2
--- /dev/null
+++ b/test/agnostic/facelets/ccInJar/src/main/resources/META-INF/ccInJar.taglib.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+
+<facelet-taglib xmlns="http://xmlns.jcp.org/xml/ns/javaee"
+                xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+                xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-facelettaglibrary_2_2.xsd"
+                version="2.2">
+    <namespace>http://mojarra.java.net/ccInJar</namespace>
+    <tag>
+        <tag-name>layout</tag-name>
+        <source>../facelet/tag/layout.xhtml</source>
+    </tag>
+</facelet-taglib>
diff --git a/test/agnostic/facelets/ccInJar/src/main/resources/META-INF/resources/ccInJar2/ccInJar2.xhtml b/test/agnostic/facelets/ccInJar/src/main/resources/META-INF/resources/ccInJar2/ccInJar2.xhtml
new file mode 100644
index 0000000..02c0a36
--- /dev/null
+++ b/test/agnostic/facelets/ccInJar/src/main/resources/META-INF/resources/ccInJar2/ccInJar2.xhtml
@@ -0,0 +1,23 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:cc="http://java.sun.com/jsf/composite"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <head>
+        <title></title>
+    </head>
+    <body>
+    <!-- INTERFACE -->
+    <cc:interface>
+        <cc:attribute required="true" preferred="true" name="value" type="String"/>
+    </cc:interface>
+
+    <!-- IMPLEMENTATION -->
+    <cc:implementation>
+        <h:inputText id="input" value="#{cc.attrs.value}"/>
+    </cc:implementation>
+    </body>
+</html>
diff --git a/test/agnostic/facelets/ccInJar/src/main/resources/facelet/tag/layout.xhtml b/test/agnostic/facelets/ccInJar/src/main/resources/facelet/tag/layout.xhtml
new file mode 100644
index 0000000..703aa0a
--- /dev/null
+++ b/test/agnostic/facelets/ccInJar/src/main/resources/facelet/tag/layout.xhtml
@@ -0,0 +1,16 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:c="http://java.sun.com/jstl/core"
+      xmlns:fn="http://java.sun.com/jsp/jstl/functions"
+      xmlns:ccInJar="http://mojarra.java.net/ccInJar">
+    <ui:component>
+        <f:view locale="en">
+            <ui:insert name="metadata" />
+            <ui:decorate template="template/webapp.xhtml" />
+        </f:view>
+    </ui:component>
+</html>
diff --git a/test/agnostic/facelets/ccInJar/src/main/resources/facelet/tag/template/layoutAll.xhtml b/test/agnostic/facelets/ccInJar/src/main/resources/facelet/tag/template/layoutAll.xhtml
new file mode 100644
index 0000000..2231ed0
--- /dev/null
+++ b/test/agnostic/facelets/ccInJar/src/main/resources/facelet/tag/template/layoutAll.xhtml
@@ -0,0 +1,27 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:c="http://java.sun.com/jstl/core"
+      xmlns:fn="http://java.sun.com/jsp/jstl/functions"
+      xmlns:ccInJar="http://mojarra.java.net/ccInJar">
+
+    <ui:composition>
+        <div id="content">
+            <div>[layoutAll.xhtml]</div>
+            <ui:insert name="layoutContentHead">
+                <ui:include src="layoutContentHead.xhtml"/>
+            </ui:insert>
+            <ui:insert name="layoutContentLeft">
+                <ui:include src="layoutContentLeft.xhtml"/>
+            </ui:insert>
+            <ui:insert name="layoutContentBody">
+                <ui:include src="layoutContentBody.xhtml"/>
+            </ui:insert>
+            <ui:insert name="layoutContentFooter">
+                <ui:include src="layoutContentFooter.xhtml"/>
+            </ui:insert>
+        </div> <!-- end div id="content" -->
+    </ui:composition>
+</html>
diff --git a/test/agnostic/facelets/ccInJar/src/main/resources/facelet/tag/template/layoutContentBody.xhtml b/test/agnostic/facelets/ccInJar/src/main/resources/facelet/tag/template/layoutContentBody.xhtml
new file mode 100644
index 0000000..ab99a1a
--- /dev/null
+++ b/test/agnostic/facelets/ccInJar/src/main/resources/facelet/tag/template/layoutContentBody.xhtml
@@ -0,0 +1,12 @@
+<ui:composition xmlns="http://www.w3.org/1999/xhtml"
+                xmlns:ui="http://java.sun.com/jsf/facelets"
+                xmlns:h="http://java.sun.com/jsf/html"
+                xmlns:f="http://java.sun.com/jsf/core"
+                xmlns:c="http://java.sun.com/jstl/core"
+                xmlns:fn="http://java.sun.com/jsp/jstl/functions"
+                xmlns:ccInJar="http://mojarra.java.net/ccInJar">
+
+    <div id="content-body">
+        <div>[layoutContentBody.xhtml]</div>
+    </div>
+</ui:composition>
diff --git a/test/agnostic/facelets/ccInJar/src/main/resources/facelet/tag/template/layoutContentFooter.xhtml b/test/agnostic/facelets/ccInJar/src/main/resources/facelet/tag/template/layoutContentFooter.xhtml
new file mode 100644
index 0000000..99393cf
--- /dev/null
+++ b/test/agnostic/facelets/ccInJar/src/main/resources/facelet/tag/template/layoutContentFooter.xhtml
@@ -0,0 +1,12 @@
+<ui:composition xmlns="http://www.w3.org/1999/xhtml"
+                xmlns:ui="http://java.sun.com/jsf/facelets"
+                xmlns:h="http://java.sun.com/jsf/html"
+                xmlns:f="http://java.sun.com/jsf/core"
+                xmlns:c="http://java.sun.com/jstl/core"
+                xmlns:fn="http://java.sun.com/jsp/jstl/functions"
+                xmlns:ccInJar="http://mojarra.java.net/ccInJar">
+
+    <div id="content-footer">
+        <div>[layoutContentFooter.xhtml]</div>
+    </div>
+</ui:composition>
diff --git a/test/agnostic/facelets/ccInJar/src/main/resources/facelet/tag/template/layoutContentHead.xhtml b/test/agnostic/facelets/ccInJar/src/main/resources/facelet/tag/template/layoutContentHead.xhtml
new file mode 100644
index 0000000..1f3ef73
--- /dev/null
+++ b/test/agnostic/facelets/ccInJar/src/main/resources/facelet/tag/template/layoutContentHead.xhtml
@@ -0,0 +1,12 @@
+<ui:composition xmlns="http://www.w3.org/1999/xhtml"
+	xmlns:ui="http://java.sun.com/jsf/facelets"
+	xmlns:h="http://java.sun.com/jsf/html"
+	xmlns:f="http://java.sun.com/jsf/core"
+	xmlns:c="http://java.sun.com/jstl/core"
+	xmlns:fn="http://java.sun.com/jsp/jstl/functions"
+	xmlns:ccInJar="http://mojarra.java.net/ccInJar">
+	
+	<div id="content-head">
+		<div>[layoutContentHead.xhtml]</div>
+	</div>
+</ui:composition>
diff --git a/test/agnostic/facelets/ccInJar/src/main/resources/facelet/tag/template/layoutContentLeft.xhtml b/test/agnostic/facelets/ccInJar/src/main/resources/facelet/tag/template/layoutContentLeft.xhtml
new file mode 100644
index 0000000..687f9b3
--- /dev/null
+++ b/test/agnostic/facelets/ccInJar/src/main/resources/facelet/tag/template/layoutContentLeft.xhtml
@@ -0,0 +1,12 @@
+<ui:composition xmlns="http://www.w3.org/1999/xhtml"
+                xmlns:ui="http://java.sun.com/jsf/facelets"
+                xmlns:h="http://java.sun.com/jsf/html"
+                xmlns:f="http://java.sun.com/jsf/core"
+                xmlns:c="http://java.sun.com/jstl/core"
+                xmlns:fn="http://java.sun.com/jsp/jstl/functions"
+                xmlns:ccInJar="http://mojarra.java.net/ccInJar">
+
+    <div id="content-left">
+        <div>[layoutContentLeft.xhtml]</div>
+    </div>
+</ui:composition>
diff --git a/test/agnostic/facelets/ccInJar/src/main/resources/facelet/tag/template/layoutHead.xhtml b/test/agnostic/facelets/ccInJar/src/main/resources/facelet/tag/template/layoutHead.xhtml
new file mode 100644
index 0000000..4bd54cf
--- /dev/null
+++ b/test/agnostic/facelets/ccInJar/src/main/resources/facelet/tag/template/layoutHead.xhtml
@@ -0,0 +1,17 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:c="http://java.sun.com/jstl/core"
+      xmlns:fn="http://java.sun.com/jsp/jstl/functions"
+      xmlns:ccInJar="http://mojarra.java.net/ccInJar">
+    <ui:composition>
+        <h:head>
+            <title><ui:insert name="pageTitle">[pageTitle layoutHead.xhtml]</ui:insert></title>
+            <ui:insert name="head-meta" />
+            <ui:insert name="head-resources" />
+        </h:head>
+    </ui:composition>
+</html>
diff --git a/test/agnostic/facelets/ccInJar/src/main/resources/facelet/tag/template/webapp.xhtml b/test/agnostic/facelets/ccInJar/src/main/resources/facelet/tag/template/webapp.xhtml
new file mode 100644
index 0000000..3051cc4
--- /dev/null
+++ b/test/agnostic/facelets/ccInJar/src/main/resources/facelet/tag/template/webapp.xhtml
@@ -0,0 +1,17 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:c="http://java.sun.com/jstl/core"
+      xmlns:fn="http://java.sun.com/jsp/jstl/functions"
+      xmlns:ccInJar="http://mojarra.java.net/ccInJar">
+    <ui:include src="layoutHead.xhtml" />
+    <h:body>
+        <div>[webappAll.xhtml]</div>
+        <ui:include src="layoutAll.xhtml"/>
+        <ui:remove>Add some request context to the response</ui:remove>
+        <h:outputText value="[request-information]" escape="false"/>
+    </h:body>
+</html>
diff --git a/test/agnostic/facelets/findChild/nbactions.xml b/test/agnostic/facelets/findChild/nbactions.xml
new file mode 100644
index 0000000..9bc03df
--- /dev/null
+++ b/test/agnostic/facelets/findChild/nbactions.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<actions>
+        <action>
+            <actionName>test.single</actionName>
+            <goals>
+                <goal>test-compile</goal>
+                <goal>surefire:test</goal>
+            </goals>
+            <properties>
+                <test>${packageClassName}</test>
+                <integration.url>http://localhost:8080/test-agnostic-facelets-findChild/</integration.url>
+            </properties>
+        </action>
+        <action>
+            <actionName>debug.test.single</actionName>
+            <goals>
+                <goal>test-compile</goal>
+                <goal>surefire:test</goal>
+            </goals>
+            <properties>
+                <test>${packageClassName}</test>
+                <forkMode>once</forkMode>
+                <maven.surefire.debug>-Xdebug -Xrunjdwp:transport=dt_socket,server=n,address=${jpda.address}</maven.surefire.debug>
+                <jpda.listen>true</jpda.listen>
+                <integration.url>http://localhost:8080/test-agnostic-facelets-findChild/</integration.url>
+            </properties>
+        </action>
+        <action>
+            <actionName>run</actionName>
+            <goals>
+                <goal>package</goal>
+            </goals>
+            <properties>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                <netbeans.deploy>true</netbeans.deploy>
+                <webapp.stateSavingMethod>server</webapp.stateSavingMethod>
+                <webapp.projectStage>Development</webapp.projectStage>
+            </properties>
+        </action>
+    </actions>
diff --git a/test/agnostic/facelets/findChild/pom.xml b/test/agnostic/facelets/findChild/pom.xml
new file mode 100644
index 0000000..1120173
--- /dev/null
+++ b/test/agnostic/facelets/findChild/pom.xml
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <artifactId>pom</artifactId>
+    <groupId>com.sun.faces.test.agnostic.facelets</groupId>
+    <version>2.2.8-SNAPSHOT</version>
+  </parent>
+  
+  <groupId>com.sun.faces.test.agnostic.facelets</groupId>
+  <artifactId>findChild</artifactId>
+  <packaging>war</packaging>
+  <name>Mojarra ${project.version} - Test - Agnostic - Facelets - FindChild</name>
+  
+  <build>
+    <finalName>test-agnostic-facelets-findChild</finalName>
+  </build>
+    <properties>
+        <netbeans.hint.deploy.server>gfv3ee6</netbeans.hint.deploy.server>
+    </properties>
+</project>
diff --git a/test/agnostic/facelets/findChild/src/main/java/de/suedleasing/elease/service_requests/managedBeans/IndexMB.java b/test/agnostic/facelets/findChild/src/main/java/de/suedleasing/elease/service_requests/managedBeans/IndexMB.java
new file mode 100644
index 0000000..a31d30b
--- /dev/null
+++ b/test/agnostic/facelets/findChild/src/main/java/de/suedleasing/elease/service_requests/managedBeans/IndexMB.java
@@ -0,0 +1,26 @@
+package de.suedleasing.elease.service_requests.managedBeans;
+
+import java.io.Serializable;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.SessionScoped;
+
+ at ManagedBean
+ at SessionScoped
+public class IndexMB implements Serializable {
+   
+    public void dummyAction(){
+        //no action
+    }
+    
+    private boolean rendered = true;
+
+    public boolean isRendered() {
+        return rendered;
+    }
+
+    public void setRendered(boolean rendered) {
+        this.rendered = rendered;
+    }
+  
+    
+}
diff --git a/test/agnostic/facelets/findChild/src/main/java/test/PageAjaxTest.java b/test/agnostic/facelets/findChild/src/main/java/test/PageAjaxTest.java
new file mode 100644
index 0000000..6d6a4ec
--- /dev/null
+++ b/test/agnostic/facelets/findChild/src/main/java/test/PageAjaxTest.java
@@ -0,0 +1,49 @@
+/*
+ * To change this template, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package test;
+
+import java.io.Serializable;
+import java.text.DecimalFormat;
+import java.text.NumberFormat;
+import javax.faces.bean.*;
+import javax.faces.context.FacesContext;
+
+ at SessionScoped
+ at ManagedBean(name="pageAjaxTest2")
+public class PageAjaxTest  implements Serializable {
+    
+    private final NumberFormat format;
+
+    public PageAjaxTest() {
+        format = new DecimalFormat("#.##");
+    }
+    
+    
+  
+  public void setInputTextValue(String textVal){}
+    
+  public String getInputTextValue() {
+    String result = "test test test test";    
+
+    return(result);
+  }
+  
+  public String getRandomNumber() {
+    Double x= Math.random() * 100;
+    String retVal = x.toString();
+    return retVal;
+ }
+  
+  public String getRenderTime() {
+      FacesContext context = FacesContext.getCurrentInstance();
+      Long requestStart = (Long) context.getAttributes().get(TimerPhaseListener.REQUEST_START);
+      double elapsedSeconds = ((double)(System.currentTimeMillis() - requestStart)) / 1000;
+      return format.format(elapsedSeconds) + " seconds";
+  }
+  
+  public void buttonSubmit() {
+  }  
+    
+  }
\ No newline at end of file
diff --git a/test/agnostic/facelets/findChild/src/main/java/test/TimerPhaseListener.java b/test/agnostic/facelets/findChild/src/main/java/test/TimerPhaseListener.java
new file mode 100644
index 0000000..22051c1
--- /dev/null
+++ b/test/agnostic/facelets/findChild/src/main/java/test/TimerPhaseListener.java
@@ -0,0 +1,72 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package test;
+
+import javax.faces.context.FacesContext;
+import javax.faces.event.PhaseEvent;
+import javax.faces.event.PhaseId;
+import javax.faces.event.PhaseListener;
+
+public class TimerPhaseListener implements PhaseListener {
+    
+    public static final String REQUEST_START = "REQUEST_START";
+
+    @Override
+    public void afterPhase(PhaseEvent event) {
+        
+    }
+
+    @Override
+    public void beforePhase(PhaseEvent event) {
+        FacesContext context = FacesContext.getCurrentInstance();
+        
+        Long curTime = new Long(System.currentTimeMillis());
+        context.getAttributes().put(REQUEST_START, curTime);
+    }
+
+    @Override
+    public PhaseId getPhaseId() {
+        return PhaseId.RESTORE_VIEW;
+    }
+    
+    
+    
+}
diff --git a/test/agnostic/facelets/findChild/src/main/webapp/AjaxTest.xhtml b/test/agnostic/facelets/findChild/src/main/webapp/AjaxTest.xhtml
new file mode 100644
index 0000000..e902ca2
--- /dev/null
+++ b/test/agnostic/facelets/findChild/src/main/webapp/AjaxTest.xhtml
@@ -0,0 +1,13366 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <meta http-equiv="Content-Style-Type" content="text/css" />
+    </h:head>
+
+
+    <h:body>
+        <h:form id="testForm">
+           <h:outputText id="idAjaxTestOutput" value="#{pageAjaxTest2.randomNumber}" />            
+           <br/>
+            <h:commandButton type="button" value="AJAX" >
+                <f:ajax event="click" render="testForm:idAjaxTestOutput testForm:renderTime" immediate="true"></f:ajax>
+            </h:commandButton>
+        </h:form>
+     
+
+        <br/>
+        
+        
+        <h:form id="idFormTree">
+            <br/>
+           <h:outputText  id="idAjaxTestOutput2" value="#{pageAjaxTest2.randomNumber}" />        
+           <br/>
+            <h:commandButton type="submit" value="POST FORM" action="#{pageAjaxTest2.buttonSubmit}" />            
+
+            <br/>
+            <br/>
+
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+              
+            
+            
+            
+            
+            
+            
+            
+            
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />    
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />              
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />    
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />       
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />    
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />              
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />    
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />             
+
+                <h:panelGroup id="level0PanelGroup">
+
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+              
+            
+            
+            
+            
+            
+            
+            
+            
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />    
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />              
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />    
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />       
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />    
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />              
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />    
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />            
+
+                  <h:panelGroup id="levelTwoPanelGroup">
+
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:inputText value="#{pageAjaxTest2.inputTextValue}" />   
+              
+            
+            
+            
+            
+            
+            
+            
+            
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />    
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />              
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />    
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />       
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />    
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />              
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />    
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />               
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />   
+            <h:outputText value="#{pageAjaxTest2.inputTextValue}" />            
+
+                  </h:panelGroup>
+
+                </h:panelGroup>
+<p>
+
+Render time: <h:outputText id="renderTime" value="#{pageAjaxTest2.renderTime}" />
+
+</p>
+  
+        </h:form>
+    </h:body>
+
+
+
+
+</html>
diff --git a/test/agnostic/facelets/findChild/src/main/webapp/WEB-INF/faces-config.xml b/test/agnostic/facelets/findChild/src/main/webapp/WEB-INF/faces-config.xml
new file mode 100644
index 0000000..8e49e09
--- /dev/null
+++ b/test/agnostic/facelets/findChild/src/main/webapp/WEB-INF/faces-config.xml
@@ -0,0 +1,19 @@
+<?xml version='1.0' encoding='UTF-8'?>
+
+<!-- =========== FULL CONFIGURATION FILE ================================== -->
+
+<faces-config version="2.0"
+    xmlns="http://java.sun.com/xml/ns/javaee" 
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd">
+  <application>
+    <locale-config>
+      <default-locale>en</default-locale>
+    </locale-config>
+  </application>
+  
+  <lifecycle>
+    <phase-listener>test.TimerPhaseListener</phase-listener>
+  </lifecycle>
+  
+</faces-config>
diff --git a/test/agnostic/facelets/findChild/src/main/webapp/WEB-INF/glassfish-web.xml b/test/agnostic/facelets/findChild/src/main/webapp/WEB-INF/glassfish-web.xml
new file mode 100644
index 0000000..dcd27f5
--- /dev/null
+++ b/test/agnostic/facelets/findChild/src/main/webapp/WEB-INF/glassfish-web.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
+<glassfish-web-app error-url="">
+  <context-root>/test-agnostic-facelets-findChild</context-root>
+  <class-loader delegate="true"/>
+  <jsp-config>
+    <property name="keepgenerated" value="true">
+      <description>Keep a copy of the generated servlet class' java code.</description>
+    </property>
+  </jsp-config>
+</glassfish-web-app>
diff --git a/test/agnostic/facelets/findChild/src/main/webapp/WEB-INF/web.xml b/test/agnostic/facelets/findChild/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..ea18964
--- /dev/null
+++ b/test/agnostic/facelets/findChild/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,102 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+  <context-param>
+    <param-name>javax.faces.DEFAULT_SUFFIX</param-name>
+    <param-value>.xhtml</param-value>
+  </context-param>
+  <context-param>
+    <param-name>javax.faces.FACELETS_VIEW_MAPPINGS</param-name>
+    <param-value>*.xhtml</param-value>
+  </context-param>
+  <context-param>
+    <param-name>javax.faces.FACELETS_REFRESH_PERIOD</param-name>
+    <!-- Minimal performance difference -->
+    <param-value>-1</param-value>
+  </context-param>
+  <context-param>
+    <param-name>javax.faces.FACELETS_SKIP_COMMENTS</param-name>
+    <param-value>true</param-value>
+  </context-param>
+  <context-param>
+    <param-name>com.sun.faces.responseBufferSize</param-name>
+    <param-value>500000</param-value>
+  </context-param>
+  <context-param>
+    <param-name>com.sun.faces.verifyObjects</param-name>
+    <param-value>false</param-value>
+  </context-param>
+  
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>${webapp.projectStage}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
+        <param-value>${webapp.partialStateSaving}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>${webapp.stateSavingMethod}</param-value>
+    </context-param>
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet-mapping>
+      <servlet-name>Faces Servlet</servlet-name>
+      <url-pattern>*.xhtml</url-pattern>
+    </servlet-mapping>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <welcome-file-list>
+        <welcome-file>faces/index.xhtml</welcome-file>
+    </welcome-file-list>
+    <session-config>
+      <session-timeout>5</session-timeout>
+    </session-config>
+</web-app>
diff --git a/test/agnostic/facelets/findChild/src/main/webapp/index.xhtml b/test/agnostic/facelets/findChild/src/main/webapp/index.xhtml
new file mode 100644
index 0000000..d4cd998
--- /dev/null
+++ b/test/agnostic/facelets/findChild/src/main/webapp/index.xhtml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="windows-1252"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:h="http://java.sun.com/jsf/html"
+    xmlns:f="http://java.sun.com/jsf/core" >
+<f:view transient="true">
+    <h:head>
+    </h:head>
+    <h:body>
+        <ui:include src="jsfInfo.xhtml"></ui:include>
+        <h:panelGrid columns="1">
+            <h:outputLink value="performance/performanceTest.xhtml">performanceTest.xhtml</h:outputLink>
+        </h:panelGrid>
+    </h:body>
+</f:view>
+</html>
\ No newline at end of file
diff --git a/test/agnostic/facelets/findChild/src/main/webapp/jsfInfo.xhtml b/test/agnostic/facelets/findChild/src/main/webapp/jsfInfo.xhtml
new file mode 100644
index 0000000..be028f8
--- /dev/null
+++ b/test/agnostic/facelets/findChild/src/main/webapp/jsfInfo.xhtml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="windows-1252"?>
+<ui:component xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core">
+    <h:outputText value="JSF Implementation Information:" />
+    <h:panelGrid columns="2">
+        <h:outputText value="Implementation Title:" />
+        <h:outputText value="#{facesContext.getClass().getPackage().getImplementationTitle()}" />
+
+        <h:outputText value="Implementation Version" />
+        <h:outputText value="#{facesContext.getClass().getPackage().getImplementationVersion()}" />
+
+        <h:outputText value="Implementation Vendor" />
+        <h:outputText value="#{facesContext.getClass().getPackage().getImplementationVendor()}" />
+
+        <h:outputText value="Specification Title:" />
+        <h:outputText value="#{facesContext.getClass().getPackage().getSpecificationTitle()}" />
+
+        <h:outputText value="Specification Version:" />
+        <h:outputText value="#{facesContext.getClass().getPackage().getSpecificationVersion()}" />
+
+        <h:outputText value="Specification Vendor:" />
+        <h:outputText value="#{facesContext.getClass().getPackage().getSpecificationVendor()}" />
+
+        <h:outputText value="JSF Package:" />
+        <h:outputText value="#{facesContext.getClass().getPackage().getName()}" />
+    </h:panelGrid>
+
+</ui:component>
\ No newline at end of file
diff --git a/test/agnostic/facelets/findChild/src/main/webapp/performance/performanceNoneRenderedObjects.xhtml b/test/agnostic/facelets/findChild/src/main/webapp/performance/performanceNoneRenderedObjects.xhtml
new file mode 100644
index 0000000..85741c0
--- /dev/null
+++ b/test/agnostic/facelets/findChild/src/main/webapp/performance/performanceNoneRenderedObjects.xhtml
@@ -0,0 +1,20 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<ui:component xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:h="http://java.sun.com/jsf/html"
+    xmlns:f="http://java.sun.com/jsf/core">
+    <h:outputText value="LOLLLL" />
+    <h:outputText value="LOLLLL" />
+    <h:outputText value="LOLLLL" />
+    <h:outputText value="LOLLLL" />
+    <h:outputText value="LOLLLL" />
+    <h:outputText value="LOLLLL" />
+    <h:outputText value="LOLLLL" />
+    <h:outputText value="LOLLLL" />
+    <h:outputText value="LOLLLL" />
+    <h:outputText value="LOLLLL" />
+    <h:outputText value="LOLLLL" />
+    <h:outputText value="LOLLLL" />
+    <h:outputText value="LOLLLL" />
+    <h:outputText value="LOLLLL" />
+    <h:outputText value="LOLLLL" />
+    <h:outputText value="LOLLLL" />
+</ui:component>
\ No newline at end of file
diff --git a/test/agnostic/facelets/findChild/src/main/webapp/performance/performanceNoneRenderedObjectsMultiplikator.xhtml b/test/agnostic/facelets/findChild/src/main/webapp/performance/performanceNoneRenderedObjectsMultiplikator.xhtml
new file mode 100644
index 0000000..e6f0099
--- /dev/null
+++ b/test/agnostic/facelets/findChild/src/main/webapp/performance/performanceNoneRenderedObjectsMultiplikator.xhtml
@@ -0,0 +1,102 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<ui:component xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:h="http://java.sun.com/jsf/html"
+    xmlns:f="http://java.sun.com/jsf/core">
+    <ui:include src="performanceNoneRenderedObjects.xhtml" />
+    <ui:include src="performanceNoneRenderedObjects.xhtml" />
+    <ui:include src="performanceNoneRenderedObjects.xhtml" />
+    <ui:include src="performanceNoneRenderedObjects.xhtml" />
+    <ui:include src="performanceNoneRenderedObjects.xhtml" />
+    <ui:include src="performanceNoneRenderedObjects.xhtml" />
+    <ui:include src="performanceNoneRenderedObjects.xhtml" />
+    <ui:include src="performanceNoneRenderedObjects.xhtml" />
+    <ui:include src="performanceNoneRenderedObjects.xhtml" />
+    <ui:include src="performanceNoneRenderedObjects.xhtml" />
+    <ui:include src="performanceNoneRenderedObjects.xhtml" />
+    <ui:include src="performanceNoneRenderedObjects.xhtml" />
+    <ui:include src="performanceNoneRenderedObjects.xhtml" />
+    <ui:include src="performanceNoneRenderedObjects.xhtml" />
+    <ui:include src="performanceNoneRenderedObjects.xhtml" />
+    <ui:include src="performanceNoneRenderedObjects.xhtml" />
+    <ui:include src="performanceNoneRenderedObjects.xhtml" />
+    <ui:include src="performanceNoneRenderedObjects.xhtml" />
+    <ui:include src="performanceNoneRenderedObjects.xhtml" />
+    <ui:include src="performanceNoneRenderedObjects.xhtml" />
+    <ui:include src="performanceNoneRenderedObjects.xhtml" />
+    <ui:include src="performanceNoneRenderedObjects.xhtml" />
+    <ui:include src="performanceNoneRenderedObjects.xhtml" />
+    <ui:include src="performanceNoneRenderedObjects.xhtml" />
+    <ui:include src="performanceNoneRenderedObjects.xhtml" />
+    <ui:include src="performanceNoneRenderedObjects.xhtml" />
+    <ui:include src="performanceNoneRenderedObjects.xhtml" />
+    <ui:include src="performanceNoneRenderedObjects.xhtml" />
+    <ui:include src="performanceNoneRenderedObjects.xhtml" />
+    <ui:include src="performanceNoneRenderedObjects.xhtml" />
+    <ui:include src="performanceNoneRenderedObjects.xhtml" />
+    <ui:include src="performanceNoneRenderedObjects.xhtml" />
+    <ui:include src="performanceNoneRenderedObjects.xhtml" />
+    <ui:include src="performanceNoneRenderedObjects.xhtml" />
+    <ui:include src="performanceNoneRenderedObjects.xhtml" />
+    <ui:include src="performanceNoneRenderedObjects.xhtml" />
+    <ui:include src="performanceNoneRenderedObjects.xhtml" />
+    <ui:include src="performanceNoneRenderedObjects.xhtml" />
+    <ui:include src="performanceNoneRenderedObjects.xhtml" />
+    <ui:include src="performanceNoneRenderedObjects.xhtml" />
+    <ui:include src="performanceNoneRenderedObjects.xhtml" />
+    <ui:include src="performanceNoneRenderedObjects.xhtml" />
+    <ui:include src="performanceNoneRenderedObjects.xhtml" />
+    <ui:include src="performanceNoneRenderedObjects.xhtml" />
+    <ui:include src="performanceNoneRenderedObjects.xhtml" />
+    <ui:include src="performanceNoneRenderedObjects.xhtml" />
+    <ui:include src="performanceNoneRenderedObjects.xhtml" />
+    <ui:include src="performanceNoneRenderedObjects.xhtml" />
+    <ui:include src="performanceNoneRenderedObjects.xhtml" />
+    <ui:include src="performanceNoneRenderedObjects.xhtml" />
+    <ui:include src="performanceNoneRenderedObjects.xhtml" />
+    <ui:include src="performanceNoneRenderedObjects.xhtml" />
+    <ui:include src="performanceNoneRenderedObjects.xhtml" />
+    <ui:include src="performanceNoneRenderedObjects.xhtml" />
+    <ui:include src="performanceNoneRenderedObjects.xhtml" />
+    <ui:include src="performanceNoneRenderedObjects.xhtml" />
+    <ui:include src="performanceNoneRenderedObjects.xhtml" />
+    <ui:include src="performanceNoneRenderedObjects.xhtml" />
+    <ui:include src="performanceNoneRenderedObjects.xhtml" />
+    <ui:include src="performanceNoneRenderedObjects.xhtml" />
+    <ui:include src="performanceNoneRenderedObjects.xhtml" />
+    <ui:include src="performanceNoneRenderedObjects.xhtml" />
+    <ui:include src="performanceNoneRenderedObjects.xhtml" />
+    <ui:include src="performanceNoneRenderedObjects.xhtml" />
+    <ui:include src="performanceNoneRenderedObjects.xhtml" />
+    <ui:include src="performanceNoneRenderedObjects.xhtml" />
+    <ui:include src="performanceNoneRenderedObjects.xhtml" />
+    <ui:include src="performanceNoneRenderedObjects.xhtml" />
+    <ui:include src="performanceNoneRenderedObjects.xhtml" />
+    <ui:include src="performanceNoneRenderedObjects.xhtml" />
+    <ui:include src="performanceNoneRenderedObjects.xhtml" />
+    <ui:include src="performanceNoneRenderedObjects.xhtml" />
+    <ui:include src="performanceNoneRenderedObjects.xhtml" />
+    <ui:include src="performanceNoneRenderedObjects.xhtml" />
+    <ui:include src="performanceNoneRenderedObjects.xhtml" />
+    <ui:include src="performanceNoneRenderedObjects.xhtml" />
+    <ui:include src="performanceNoneRenderedObjects.xhtml" />
+    <ui:include src="performanceNoneRenderedObjects.xhtml" />
+    <ui:include src="performanceNoneRenderedObjects.xhtml" />
+    <ui:include src="performanceNoneRenderedObjects.xhtml" />
+    <ui:include src="performanceNoneRenderedObjects.xhtml" />
+    <ui:include src="performanceNoneRenderedObjects.xhtml" />
+    <ui:include src="performanceNoneRenderedObjects.xhtml" />
+    <ui:include src="performanceNoneRenderedObjects.xhtml" />
+    <ui:include src="performanceNoneRenderedObjects.xhtml" />
+    <ui:include src="performanceNoneRenderedObjects.xhtml" />
+    <ui:include src="performanceNoneRenderedObjects.xhtml" />
+    <ui:include src="performanceNoneRenderedObjects.xhtml" />
+    <ui:include src="performanceNoneRenderedObjects.xhtml" />
+    <ui:include src="performanceNoneRenderedObjects.xhtml" />
+    <ui:include src="performanceNoneRenderedObjects.xhtml" />
+    <ui:include src="performanceNoneRenderedObjects.xhtml" />
+    <ui:include src="performanceNoneRenderedObjects.xhtml" />
+    <ui:include src="performanceNoneRenderedObjects.xhtml" />
+    <ui:include src="performanceNoneRenderedObjects.xhtml" />
+    <ui:include src="performanceNoneRenderedObjects.xhtml" />
+    <ui:include src="performanceNoneRenderedObjects.xhtml" />
+    <ui:include src="performanceNoneRenderedObjects.xhtml" />
+</ui:component>
\ No newline at end of file
diff --git a/test/agnostic/facelets/findChild/src/main/webapp/performance/performanceTest.xhtml b/test/agnostic/facelets/findChild/src/main/webapp/performance/performanceTest.xhtml
new file mode 100644
index 0000000..ec2feef
--- /dev/null
+++ b/test/agnostic/facelets/findChild/src/main/webapp/performance/performanceTest.xhtml
@@ -0,0 +1,131 @@
+<?xml version="1.0" encoding="windows-1252"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:c="http://java.sun.com/jsp/jstl/core"
+xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:h="http://java.sun.com/jsf/html"
+    xmlns:f="http://java.sun.com/jsf/core">
+<h:head>
+</h:head>
+<h:body>
+    <h:form id="form" prependId="false">
+        <h:commandButton action="#{indexMB.dummyAction()}" value="ping">
+            <f:ajax execute="@this :checkbox" render=":renderTime" />
+        </h:commandButton>
+        
+        <h:commandButton action="#{indexMB.dummyAction()}" value="non-Ajax" />
+        
+        <p>render subview: <h:selectBooleanCheckbox id="checkbox" value="#{indexMB.rendered}" /></p>
+        
+        <f:subview id="subview">
+          <c:if test="#{indexMB.rendered}">
+            <ui:include src="performanceNoneRenderedObjectsMultiplikator.xhtml" />
+            <ui:include src="performanceNoneRenderedObjectsMultiplikator.xhtml" />
+            <ui:include src="performanceNoneRenderedObjectsMultiplikator.xhtml" />
+            <ui:include src="performanceNoneRenderedObjectsMultiplikator.xhtml" />
+            <ui:include src="performanceNoneRenderedObjectsMultiplikator.xhtml" />
+            <ui:include src="performanceNoneRenderedObjectsMultiplikator.xhtml" />
+            <ui:include src="performanceNoneRenderedObjectsMultiplikator.xhtml" />
+            <ui:include src="performanceNoneRenderedObjectsMultiplikator.xhtml" />
+            <ui:include src="performanceNoneRenderedObjectsMultiplikator.xhtml" />
+            <ui:include src="performanceNoneRenderedObjectsMultiplikator.xhtml" />
+            <ui:include src="performanceNoneRenderedObjectsMultiplikator.xhtml" />
+            <ui:include src="performanceNoneRenderedObjectsMultiplikator.xhtml" />
+            <ui:include src="performanceNoneRenderedObjectsMultiplikator.xhtml" />
+            <ui:include src="performanceNoneRenderedObjectsMultiplikator.xhtml" />
+            <ui:include src="performanceNoneRenderedObjectsMultiplikator.xhtml" />
+            <ui:include src="performanceNoneRenderedObjectsMultiplikator.xhtml" />
+            <ui:include src="performanceNoneRenderedObjectsMultiplikator.xhtml" />
+            <ui:include src="performanceNoneRenderedObjectsMultiplikator.xhtml" />
+            <ui:include src="performanceNoneRenderedObjectsMultiplikator.xhtml" />
+            <ui:include src="performanceNoneRenderedObjectsMultiplikator.xhtml" />
+            <ui:include src="performanceNoneRenderedObjectsMultiplikator.xhtml" />
+            <ui:include src="performanceNoneRenderedObjectsMultiplikator.xhtml" />
+            <ui:include src="performanceNoneRenderedObjectsMultiplikator.xhtml" />
+            <ui:include src="performanceNoneRenderedObjectsMultiplikator.xhtml" />
+            <ui:include src="performanceNoneRenderedObjectsMultiplikator.xhtml" />
+            <ui:include src="performanceNoneRenderedObjectsMultiplikator.xhtml" />
+            <ui:include src="performanceNoneRenderedObjectsMultiplikator.xhtml" />
+            <ui:include src="performanceNoneRenderedObjectsMultiplikator.xhtml" />
+            <ui:include src="performanceNoneRenderedObjectsMultiplikator.xhtml" />
+            <ui:include src="performanceNoneRenderedObjectsMultiplikator.xhtml" />
+            <ui:include src="performanceNoneRenderedObjectsMultiplikator.xhtml" />
+            <ui:include src="performanceNoneRenderedObjectsMultiplikator.xhtml" />
+            <ui:include src="performanceNoneRenderedObjectsMultiplikator.xhtml" />
+            <ui:include src="performanceNoneRenderedObjectsMultiplikator.xhtml" />
+            <ui:include src="performanceNoneRenderedObjectsMultiplikator.xhtml" />
+            <ui:include src="performanceNoneRenderedObjectsMultiplikator.xhtml" />
+            <ui:include src="performanceNoneRenderedObjectsMultiplikator.xhtml" />
+            <ui:include src="performanceNoneRenderedObjectsMultiplikator.xhtml" />
+            <ui:include src="performanceNoneRenderedObjectsMultiplikator.xhtml" />
+            <ui:include src="performanceNoneRenderedObjectsMultiplikator.xhtml" />
+            <ui:include src="performanceNoneRenderedObjectsMultiplikator.xhtml" />
+            <ui:include src="performanceNoneRenderedObjectsMultiplikator.xhtml" />
+            <ui:include src="performanceNoneRenderedObjectsMultiplikator.xhtml" />
+            <ui:include src="performanceNoneRenderedObjectsMultiplikator.xhtml" />
+            <ui:include src="performanceNoneRenderedObjectsMultiplikator.xhtml" />
+            <ui:include src="performanceNoneRenderedObjectsMultiplikator.xhtml" />
+            <ui:include src="performanceNoneRenderedObjectsMultiplikator.xhtml" />
+            <ui:include src="performanceNoneRenderedObjectsMultiplikator.xhtml" />
+            <ui:include src="performanceNoneRenderedObjectsMultiplikator.xhtml" />
+            <ui:include src="performanceNoneRenderedObjectsMultiplikator.xhtml" />
+            <ui:include src="performanceNoneRenderedObjectsMultiplikator.xhtml" />
+            <ui:include src="performanceNoneRenderedObjectsMultiplikator.xhtml" />
+            <ui:include src="performanceNoneRenderedObjectsMultiplikator.xhtml" />
+            <ui:include src="performanceNoneRenderedObjectsMultiplikator.xhtml" />
+            <ui:include src="performanceNoneRenderedObjectsMultiplikator.xhtml" />
+            <ui:include src="performanceNoneRenderedObjectsMultiplikator.xhtml" />
+            <ui:include src="performanceNoneRenderedObjectsMultiplikator.xhtml" />
+            <ui:include src="performanceNoneRenderedObjectsMultiplikator.xhtml" />
+            <ui:include src="performanceNoneRenderedObjectsMultiplikator.xhtml" />
+            <ui:include src="performanceNoneRenderedObjectsMultiplikator.xhtml" />
+            <ui:include src="performanceNoneRenderedObjectsMultiplikator.xhtml" />
+            <ui:include src="performanceNoneRenderedObjectsMultiplikator.xhtml" />
+            <ui:include src="performanceNoneRenderedObjectsMultiplikator.xhtml" />
+            <ui:include src="performanceNoneRenderedObjectsMultiplikator.xhtml" />
+            <ui:include src="performanceNoneRenderedObjectsMultiplikator.xhtml" />
+            <ui:include src="performanceNoneRenderedObjectsMultiplikator.xhtml" />
+            <ui:include src="performanceNoneRenderedObjectsMultiplikator.xhtml" />
+            <ui:include src="performanceNoneRenderedObjectsMultiplikator.xhtml" />
+            <ui:include src="performanceNoneRenderedObjectsMultiplikator.xhtml" />
+            <ui:include src="performanceNoneRenderedObjectsMultiplikator.xhtml" />
+            <ui:include src="performanceNoneRenderedObjectsMultiplikator.xhtml" />
+            <ui:include src="performanceNoneRenderedObjectsMultiplikator.xhtml" />
+            <ui:include src="performanceNoneRenderedObjectsMultiplikator.xhtml" />
+            <ui:include src="performanceNoneRenderedObjectsMultiplikator.xhtml" />
+            <ui:include src="performanceNoneRenderedObjectsMultiplikator.xhtml" />
+            <ui:include src="performanceNoneRenderedObjectsMultiplikator.xhtml" />
+            <ui:include src="performanceNoneRenderedObjectsMultiplikator.xhtml" />
+            <ui:include src="performanceNoneRenderedObjectsMultiplikator.xhtml" />
+            <ui:include src="performanceNoneRenderedObjectsMultiplikator.xhtml" />
+            <ui:include src="performanceNoneRenderedObjectsMultiplikator.xhtml" />
+            <ui:include src="performanceNoneRenderedObjectsMultiplikator.xhtml" />
+            <ui:include src="performanceNoneRenderedObjectsMultiplikator.xhtml" />
+            <ui:include src="performanceNoneRenderedObjectsMultiplikator.xhtml" />
+            <ui:include src="performanceNoneRenderedObjectsMultiplikator.xhtml" />
+            <ui:include src="performanceNoneRenderedObjectsMultiplikator.xhtml" />
+            <ui:include src="performanceNoneRenderedObjectsMultiplikator.xhtml" />
+            <ui:include src="performanceNoneRenderedObjectsMultiplikator.xhtml" />
+            <ui:include src="performanceNoneRenderedObjectsMultiplikator.xhtml" />
+            <ui:include src="performanceNoneRenderedObjectsMultiplikator.xhtml" />
+            <ui:include src="performanceNoneRenderedObjectsMultiplikator.xhtml" />
+            <ui:include src="performanceNoneRenderedObjectsMultiplikator.xhtml" />
+            <ui:include src="performanceNoneRenderedObjectsMultiplikator.xhtml" />
+            <ui:include src="performanceNoneRenderedObjectsMultiplikator.xhtml" />
+            <ui:include src="performanceNoneRenderedObjectsMultiplikator.xhtml" />
+            <ui:include src="performanceNoneRenderedObjectsMultiplikator.xhtml" />
+            <ui:include src="performanceNoneRenderedObjectsMultiplikator.xhtml" />
+            <ui:include src="performanceNoneRenderedObjectsMultiplikator.xhtml" />
+            <ui:include src="performanceNoneRenderedObjectsMultiplikator.xhtml" />
+          </c:if>
+        </f:subview>
+        
+<p>
+
+Render time: <h:outputText id="renderTime" value="#{pageAjaxTest2.renderTime}" />
+
+</p>
+        
+    </h:form>
+</h:body>
+</html>
diff --git a/test/agnostic/facelets/findChild/src/main/webapp/simplestPage.xhtml b/test/agnostic/facelets/findChild/src/main/webapp/simplestPage.xhtml
new file mode 100644
index 0000000..769a680
--- /dev/null
+++ b/test/agnostic/facelets/findChild/src/main/webapp/simplestPage.xhtml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <p>Template text.</p>
+    <h:form prependId="false">
+        <p><h:inputText id="input" /></p>
+        <p><h:commandButton id="submit" value="submit" /></p>
+    </h:form>
+</html>
+
diff --git a/test/agnostic/facelets/findChild/src/test/java/com/sun/faces/test/agnostic/facelets/AutomatedTestIT.java b/test/agnostic/facelets/findChild/src/test/java/com/sun/faces/test/agnostic/facelets/AutomatedTestIT.java
new file mode 100644
index 0000000..53870cd
--- /dev/null
+++ b/test/agnostic/facelets/findChild/src/test/java/com/sun/faces/test/agnostic/facelets/AutomatedTestIT.java
@@ -0,0 +1,115 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.facelets;
+
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.assertEquals;
+
+public class AutomatedTestIT {
+    /**
+     * Stores the web URL.
+     */
+    private String webUrl;
+    /**
+     * Stores the web client.
+     */
+    private WebClient webClient;
+
+    /**
+     * Setup before testing.
+     * 
+     * @throws Exception when a serious error occurs.
+     */
+    @BeforeClass
+    public static void setUpClass() throws Exception {
+    }
+
+    /**
+     * Cleanup after testing.
+     * 
+     * @throws Exception when a serious error occurs.
+     */
+    @AfterClass
+    public static void tearDownClass() throws Exception {
+    }
+
+    /**
+     * Setup before testing.
+     */
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    /**
+     * Tear down after testing.
+     */
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testBuilderDefinedFlowWithMethodCall() throws Exception {
+        doTest("start_a");
+    }
+
+    @Test
+    public void testXmlDefinedFlowWithMethodCall() throws Exception {
+        doTest("start_b");
+    }
+
+    public void doTest(String startId) throws Exception {
+        HtmlPage page = webClient.getPage(webUrl);
+
+        assertTrue(page.getBody().asText().indexOf("") != -1);
+        
+    }
+}
diff --git a/test/agnostic/facelets/pom.xml b/test/agnostic/facelets/pom.xml
new file mode 100644
index 0000000..bb926ed
--- /dev/null
+++ b/test/agnostic/facelets/pom.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.agnostic</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.agnostic.facelets</groupId>
+    <artifactId>pom</artifactId>
+    <packaging>pom</packaging>
+    <name>Mojarra ${project.version} - Test - Agnostic - Facelets</name>
+    <modules>
+        <module>cc</module>
+        <module>ccInJar</module>
+	<module>findChild</module>
+        <module>viewAction</module>
+        <module>processing</module>
+    </modules>
+</project>
diff --git a/test/agnostic/facelets/processing/escaping01/nbactions.xml b/test/agnostic/facelets/processing/escaping01/nbactions.xml
new file mode 100644
index 0000000..7fc4161
--- /dev/null
+++ b/test/agnostic/facelets/processing/escaping01/nbactions.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<actions>
+        <action>
+            <actionName>debug.test.single</actionName>
+            <packagings>
+                <packaging>*</packaging>
+            </packagings>
+            <goals>
+                <goal>test-compile</goal>
+                <goal>surefire:test</goal>
+            </goals>
+            <properties>
+                <test>${packageClassName}</test>
+                <forkMode>once</forkMode>
+                <maven.surefire.debug>-Xdebug -Xrunjdwp:transport=dt_socket,server=n,address=${jpda.address}</maven.surefire.debug>
+                <jpda.listen>true</jpda.listen>
+                <integration.url>http://localhost:8080/test-agnostic-facelets-escaping01/</integration.url>
+            </properties>
+        </action>
+    </actions>
diff --git a/test/agnostic/facelets/processing/escaping01/pom.xml b/test/agnostic/facelets/processing/escaping01/pom.xml
new file mode 100644
index 0000000..e95e70c
--- /dev/null
+++ b/test/agnostic/facelets/processing/escaping01/pom.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.agnostic.facelets.processing</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.agnostic.facelets.processing</groupId>
+    <artifactId>escaping01</artifactId>
+    <packaging>war</packaging>
+    <name>Mojarra ${project.version} - Test - Agnostic - Facelets - Processing - escaping01</name>
+    <build>
+        <finalName>test-agnostic-facelets-escaping01</finalName>
+    </build>
+    <properties>
+        <netbeans.hint.deploy.server>gfv3ee6</netbeans.hint.deploy.server>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/test/agnostic/facelets/processing/escaping01/src/main/webapp/WEB-INF/faces-config.xml b/test/agnostic/facelets/processing/escaping01/src/main/webapp/WEB-INF/faces-config.xml
new file mode 100644
index 0000000..ccddb05
--- /dev/null
+++ b/test/agnostic/facelets/processing/escaping01/src/main/webapp/WEB-INF/faces-config.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+
+<faces-config 
+    xmlns="http://xmlns.jcp.org/xml/ns/javaee"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd"
+    version="2.2">
+    <faces-config-extension>
+        <facelets-processing>
+            <file-extension>.xhtml</file-extension>
+            <process-as>html5</process-as>
+        </facelets-processing>
+    </faces-config-extension>
+</faces-config>
diff --git a/test/agnostic/facelets/processing/escaping01/src/main/webapp/WEB-INF/glassfish-web.xml b/test/agnostic/facelets/processing/escaping01/src/main/webapp/WEB-INF/glassfish-web.xml
new file mode 100644
index 0000000..d37036c
--- /dev/null
+++ b/test/agnostic/facelets/processing/escaping01/src/main/webapp/WEB-INF/glassfish-web.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
+<glassfish-web-app error-url="">
+  <context-root>/test-agnostic-facelets-escaping01</context-root>
+  <class-loader delegate="true"/>
+  <jsp-config>
+    <property name="keepgenerated" value="true">
+      <description>Keep a copy of the generated servlet class' java code.</description>
+    </property>
+  </jsp-config>
+</glassfish-web-app>
diff --git a/test/agnostic/facelets/processing/escaping01/src/main/webapp/WEB-INF/web.xml b/test/agnostic/facelets/processing/escaping01/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..1acad6c
--- /dev/null
+++ b/test/agnostic/facelets/processing/escaping01/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" 
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>${webapp.projectStage}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
+        <param-value>${webapp.partialStateSaving}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>${webapp.stateSavingMethod}</param-value>
+    </context-param>
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <session-config>
+        <session-timeout>30</session-timeout>
+    </session-config>
+    <welcome-file-list>
+        <welcome-file>faces/index.xhtml</welcome-file>
+    </welcome-file-list>
+</web-app>
diff --git a/test/agnostic/facelets/processing/escaping01/src/main/webapp/index.xhtml b/test/agnostic/facelets/processing/escaping01/src/main/webapp/index.xhtml
new file mode 100644
index 0000000..19c6564
--- /dev/null
+++ b/test/agnostic/facelets/processing/escaping01/src/main/webapp/index.xhtml
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://xmlns.jcp.org/jsf/html">
+
+<!-- Case 1-->
+
+<h:outputText id="id" value="#{param['id']}"></h:outputText>
+
+<!-- Case 2-->
+
+<h:inputHidden id="id" value="#{param['id']}"></h:inputHidden>
+
+<!-- Case 3 -->
+
+<input type="hidden" name="id" id="id" value="#{param['id']}"/>
+
+beforeScriptBlock: #{param['id']}
+
+<script>
+
+// case 4
+var paramId = #{param['id2']};
+// case 5
+var paramIdd = "<h:outputText value="#{param['id3']}" />";
+</script>
+
+<!-- Case 6 -->
+
+#{param['id4']}
+
+</html>
diff --git a/test/agnostic/facelets/processing/escaping01/src/test/java/com/sun/faces/test/agnostic/facelets/processing/escaping01/Issue3150IT.java b/test/agnostic/facelets/processing/escaping01/src/test/java/com/sun/faces/test/agnostic/facelets/processing/escaping01/Issue3150IT.java
new file mode 100644
index 0000000..0afba8e
--- /dev/null
+++ b/test/agnostic/facelets/processing/escaping01/src/test/java/com/sun/faces/test/agnostic/facelets/processing/escaping01/Issue3150IT.java
@@ -0,0 +1,89 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.facelets.processing.escaping01;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.sun.faces.test.junit.JsfTestRunner;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+import org.junit.runner.RunWith;
+
+ at RunWith(JsfTestRunner.class)
+public class Issue3150IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testEscaping() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/index.xhtml?id4=%3Cscript%3Ealert%28%27hi%27%29;%3C/script%3E&id=myId&id2=\"myId2\"&id3=myId3");
+        String pageMarkup = page.getWebResponse().getContentAsString();
+        
+        assertTrue(pageMarkup.contains("<span id=\"id\">myId</span>"));
+
+        assertTrue(pageMarkup.contains("<input id=\"id\" type=\"hidden\" name=\"id\" value=\"myId\" />"));
+        
+        assertTrue(pageMarkup.contains("<input type=\"hidden\" name=\"id\" id=\"id\" value=\"myId\" />"));
+        
+        assertTrue(pageMarkup.contains("beforeScriptBlock: myId"));
+        
+        assertTrue(pageMarkup.contains("var paramId = \"myId2\";"));
+        
+        assertTrue(pageMarkup.contains("var paramIdd = \"myId3\";"));
+        
+        assertTrue(pageMarkup.contains("<script>alert('hi');</script>"));
+
+
+    }
+}
diff --git a/test/agnostic/facelets/processing/html5/pom.xml b/test/agnostic/facelets/processing/html5/pom.xml
new file mode 100644
index 0000000..9687500
--- /dev/null
+++ b/test/agnostic/facelets/processing/html5/pom.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.agnostic.facelets.processing</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.agnostic.facelets.processing</groupId>
+    <artifactId>processing</artifactId>
+    <packaging>war</packaging>
+    <name>Mojarra ${project.version} - Test - Agnostic - Facelets - Processing - html5</name>
+    <build>
+        <finalName>test-agnostic-facelets-processing</finalName>
+    </build>
+    <properties>
+        <netbeans.hint.deploy.server>gfv3ee6</netbeans.hint.deploy.server>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/test/agnostic/facelets/processing/html5/src/main/java/com/sun/faces/test/agnostic/facelets/processing/Person.java b/test/agnostic/facelets/processing/html5/src/main/java/com/sun/faces/test/agnostic/facelets/processing/Person.java
new file mode 100644
index 0000000..0b3deb9
--- /dev/null
+++ b/test/agnostic/facelets/processing/html5/src/main/java/com/sun/faces/test/agnostic/facelets/processing/Person.java
@@ -0,0 +1,86 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.facelets.processing;
+
+import java.io.Serializable;
+import java.util.Date;
+
+public class Person implements Serializable {
+
+    private final int id;
+    private String name;
+    private String email;
+    private Date birthday;
+
+    public Person(int id, String name, String email) {
+        this.id = id;
+        this.email = email;
+        this.name = name;
+        this.birthday = new Date();
+    }
+
+    public int getId() {
+        return id;
+    }
+
+    public String getEmail() {
+        return email;
+    }
+
+    public void setEmail(String email) {
+        this.email = email;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public Date getBirthday() {
+        return birthday;
+    }
+
+    public void setBirthday(Date birthday) {
+        this.birthday = birthday;
+    }
+}
diff --git a/test/agnostic/facelets/processing/html5/src/main/java/com/sun/faces/test/agnostic/facelets/processing/PersonPage.java b/test/agnostic/facelets/processing/html5/src/main/java/com/sun/faces/test/agnostic/facelets/processing/PersonPage.java
new file mode 100644
index 0000000..cb1822a
--- /dev/null
+++ b/test/agnostic/facelets/processing/html5/src/main/java/com/sun/faces/test/agnostic/facelets/processing/PersonPage.java
@@ -0,0 +1,79 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.facelets.processing;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.ManagedProperty;
+import javax.faces.bean.ViewScoped;
+import java.util.List;
+
+ at ManagedBean
+ at ViewScoped
+public class PersonPage {
+
+    @ManagedProperty("#{personRepository}")
+    private PersonRepository personRepository;
+    private int selectedId;
+    private Person selectedPerson;
+
+    public List<Person> getPersons() {
+        return personRepository.getPersons();
+    }
+
+    public void loadPerson() {
+        selectedPerson = personRepository.getPerson(selectedId);
+    }
+
+    public Person getSelectedPerson() {
+        return selectedPerson;
+    }
+
+    public void setSelectedId(int selectedId) {
+        this.selectedId = selectedId;
+    }
+
+    public int getSelectedId() {
+        return selectedId;
+    }
+
+    public void setPersonRepository(PersonRepository personRepository) {
+        this.personRepository = personRepository;
+    }
+}
diff --git a/test/agnostic/facelets/processing/html5/src/main/java/com/sun/faces/test/agnostic/facelets/processing/PersonRepository.java b/test/agnostic/facelets/processing/html5/src/main/java/com/sun/faces/test/agnostic/facelets/processing/PersonRepository.java
new file mode 100644
index 0000000..3eed06e
--- /dev/null
+++ b/test/agnostic/facelets/processing/html5/src/main/java/com/sun/faces/test/agnostic/facelets/processing/PersonRepository.java
@@ -0,0 +1,71 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.facelets.processing;
+
+import javax.annotation.PostConstruct;
+import javax.faces.bean.ApplicationScoped;
+import javax.faces.bean.ManagedBean;
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.TreeMap;
+
+ at ManagedBean
+ at ApplicationScoped
+public class PersonRepository implements Serializable {
+
+    private Map<Integer, Person> persons = new TreeMap<Integer, Person>();
+
+    @PostConstruct
+    protected void init() {
+        persons.put(1, new Person(1, "Person 1", "person1 at server.com"));
+        persons.put(2, new Person(2, "Person 2", "person2 at server.com"));
+        persons.put(3, new Person(3, "Person 3", "person3 at server.com"));
+    }
+
+    public List<Person> getPersons() {
+        return new ArrayList<Person>(persons.values());
+    }
+
+    public Person getPerson(int id) {
+        return persons.get(id);
+    }
+}
diff --git a/test/agnostic/facelets/processing/html5/src/main/webapp/WEB-INF/faces-config.xml b/test/agnostic/facelets/processing/html5/src/main/webapp/WEB-INF/faces-config.xml
new file mode 100644
index 0000000..ccddb05
--- /dev/null
+++ b/test/agnostic/facelets/processing/html5/src/main/webapp/WEB-INF/faces-config.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+
+<faces-config 
+    xmlns="http://xmlns.jcp.org/xml/ns/javaee"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd"
+    version="2.2">
+    <faces-config-extension>
+        <facelets-processing>
+            <file-extension>.xhtml</file-extension>
+            <process-as>html5</process-as>
+        </facelets-processing>
+    </faces-config-extension>
+</faces-config>
diff --git a/test/agnostic/facelets/processing/html5/src/main/webapp/WEB-INF/glassfish-web.xml b/test/agnostic/facelets/processing/html5/src/main/webapp/WEB-INF/glassfish-web.xml
new file mode 100644
index 0000000..8ddabdc
--- /dev/null
+++ b/test/agnostic/facelets/processing/html5/src/main/webapp/WEB-INF/glassfish-web.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
+<glassfish-web-app error-url="">
+  <context-root>/test-agnostic-facelets-processing</context-root>
+  <class-loader delegate="true"/>
+  <jsp-config>
+    <property name="keepgenerated" value="true">
+      <description>Keep a copy of the generated servlet class' java code.</description>
+    </property>
+  </jsp-config>
+</glassfish-web-app>
diff --git a/test/agnostic/facelets/processing/html5/src/main/webapp/WEB-INF/web.xml b/test/agnostic/facelets/processing/html5/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..1acad6c
--- /dev/null
+++ b/test/agnostic/facelets/processing/html5/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" 
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>${webapp.projectStage}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
+        <param-value>${webapp.partialStateSaving}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>${webapp.stateSavingMethod}</param-value>
+    </context-param>
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <session-config>
+        <session-timeout>30</session-timeout>
+    </session-config>
+    <welcome-file-list>
+        <welcome-file>faces/index.xhtml</welcome-file>
+    </welcome-file-list>
+</web-app>
diff --git a/test/agnostic/facelets/processing/html5/src/main/webapp/editPerson.xhtml b/test/agnostic/facelets/processing/html5/src/main/webapp/editPerson.xhtml
new file mode 100644
index 0000000..411f551
--- /dev/null
+++ b/test/agnostic/facelets/processing/html5/src/main/webapp/editPerson.xhtml
@@ -0,0 +1,39 @@
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:f="http://xmlns.jcp.org/jsf/core"
+      xmlns:h="http://xmlns.jcp.org/jsf/html"
+      xmlns:pt="http://xmlns.jcp.org/jsf/passthrough"
+      xmlns:jsf="http://xmlns.jcp.org/jsf">
+
+    <f:metadata>
+        <f:viewParam name="id" value="#{personPage.selectedId}"/>
+        <f:viewAction action="#{personPage.loadPerson}"/>
+    </f:metadata>
+    <head jsf:id="head">
+        <title>HTML5 Facelets Processing</title>
+    </head>
+    <body jsf:id="body">
+        <form jsf:id="form">
+            <h:messages/>
+            <h:panelGrid columns="2">
+                <h:outputText value="ID:"/>
+                <h:outputText value="#{personPage.selectedPerson.id}"/>
+                <label jsf:for="name">Name:</label>
+                <input type="text" jsf:id="name" jsf:value="#{personPage.selectedPerson.name}"
+                       placeholder="Enter name" data-required="true">
+                    <f:validateLength minimum="3"/>
+                </input>
+                <label jsf:for="email">Email:</label>
+                <h:inputText id="email" value="#{personPage.selectedPerson.email}"
+                             pt:type="email" pt:placeholder="Enter email">
+                    <f:passThroughAttribute name="data-required" value="true"/>
+                    <f:validateLength minimum="3"/>
+                </h:inputText>
+            </h:panelGrid>
+            <button jsf:action="personDetails?faces-redirect=true&includeViewParams=true">Submit</button>
+        </form>
+        <script type="text/javascript" jsf:name="jquery-1.10.2.min.js" jsf:target="head"></script>
+        <script type="text/javascript" jsf:name="script.js"></script>
+    </body>
+</html>
diff --git a/test/agnostic/facelets/processing/html5/src/main/webapp/personDetails.xhtml b/test/agnostic/facelets/processing/html5/src/main/webapp/personDetails.xhtml
new file mode 100644
index 0000000..4834e1b
--- /dev/null
+++ b/test/agnostic/facelets/processing/html5/src/main/webapp/personDetails.xhtml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:f="http://xmlns.jcp.org/jsf/core"
+      xmlns:h="http://xmlns.jcp.org/jsf/html"
+      xmlns:pt="http://xmlns.jcp.org/jsf/passthrough"
+      xmlns:jsf="http://xmlns.jcp.org/jsf">
+    <f:metadata>
+        <f:viewParam name="id" value="#{personPage.selectedId}"/>
+        <f:viewAction action="#{personPage.loadPerson}"/>
+    </f:metadata>
+    <head jsf:id="head">
+        <title>HTML5 Facelets Processing</title>
+    </head>
+    <body jsf:id="body">
+        <form jsf:id="form">
+            <h:messages/>
+            <h:panelGrid columns="2">
+                <h:outputText value="ID:"/>
+                <h:outputText value="#{personPage.selectedPerson.id}"/>
+                <h:outputText value="Name:"/>
+                <h:outputText value="#{personPage.selectedPerson.name}"/>
+                <h:outputText value="Email:"/>
+                <h:outputText value="#{personPage.selectedPerson.email}"/>
+            </h:panelGrid>
+            <br/>
+            <a jsf:outcome="editPerson" title="Edit Person">
+                Edit
+                <f:param name="id" value="#{personPage.selectedPerson.id}"/>
+            </a>
+             
+            <a jsf:outcome="personList" title="Back to person list">Back</a>
+        </form>
+    </body>
+</html>
diff --git a/test/agnostic/facelets/processing/html5/src/main/webapp/personList.xhtml b/test/agnostic/facelets/processing/html5/src/main/webapp/personList.xhtml
new file mode 100644
index 0000000..a771956
--- /dev/null
+++ b/test/agnostic/facelets/processing/html5/src/main/webapp/personList.xhtml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:f="http://xmlns.jcp.org/jsf/core"
+      xmlns:h="http://xmlns.jcp.org/jsf/html"
+      xmlns:jsf="http://xmlns.jcp.org/jsf">
+    <head jsf:id="head">
+        <title>HTML5 Facelets Processing</title>
+    </head>
+    <body jsf:id="body">
+        <form jsf:id="form">
+            <h:dataTable id="persons" value="#{personPage.persons}" var="person">
+                <h:column>
+                    <f:facet name="header">Person</f:facet>
+                    <a jsf:outcome="personDetails" title="Show #{person.name}">
+                        #{person.name}
+                        <f:param name="id" value="#{person.id}"/>
+                    </a>
+                </h:column>
+            </h:dataTable>
+        </form>
+    </body>
+</html>
diff --git a/test/agnostic/facelets/processing/html5/src/main/webapp/resources/jquery-1.10.2.min.js b/test/agnostic/facelets/processing/html5/src/main/webapp/resources/jquery-1.10.2.min.js
new file mode 100644
index 0000000..da41706
--- /dev/null
+++ b/test/agnostic/facelets/processing/html5/src/main/webapp/resources/jquery-1.10.2.min.js
@@ -0,0 +1,6 @@
+/*! jQuery v1.10.2 | (c) 2005, 2013 jQuery Foundation, Inc. | jquery.org/license
+//@ sourceMappingURL=jquery-1.10.2.min.map
+*/
+(function(e,t){var n,r,i=typeof t,o=e.location,a=e.document,s=a.documentElement,l=e.jQuery,u=e.$,c={},p=[],f="1.10.2",d=p.concat,h=p.push,g=p.slice,m=p.indexOf,y=c.toString,v=c.hasOwnProperty,b=f.trim,x=function(e,t){return new x.fn.init(e,t,r)},w=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,T=/\S+/g,C=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,N=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,k=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,E=/^[\],:{}\s]*$/,S=/(?:^|:|,)(?:\s*\[)+/g,A=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/ [...]
+}({});var B=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,P=/([A-Z])/g;function R(e,n,r,i){if(x.acceptData(e)){var o,a,s=x.expando,l=e.nodeType,u=l?x.cache:e,c=l?e[s]:e[s]&&s;if(c&&u[c]&&(i||u[c].data)||r!==t||"string"!=typeof n)return c||(c=l?e[s]=p.pop()||x.guid++:s),u[c]||(u[c]=l?{}:{toJSON:x.noop}),("object"==typeof n||"function"==typeof n)&&(i?u[c]=x.extend(u[c],n):u[c].data=x.extend(u[c].data,n)),a=u[c],i||(a.data||(a.data={}),a=a.data),r!==t&&(a[x.camelCase(n)]=r),"string"==typeof n?(o=a[n],null [...]
+u[o]&&(delete u[o],c?delete n[l]:typeof n.removeAttribute!==i?n.removeAttribute(l):n[l]=null,p.push(o))}},_evalUrl:function(e){return x.ajax({url:e,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})}}),x.fn.extend({wrapAll:function(e){if(x.isFunction(e))return this.each(function(t){x(this).wrapAll(e.call(this,t))});if(this[0]){var t=x(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstChild&&1===e.first [...]
diff --git a/test/agnostic/facelets/processing/html5/src/main/webapp/resources/script.js b/test/agnostic/facelets/processing/html5/src/main/webapp/resources/script.js
new file mode 100644
index 0000000..5f3cd81
--- /dev/null
+++ b/test/agnostic/facelets/processing/html5/src/main/webapp/resources/script.js
@@ -0,0 +1,11 @@
+$(document).ready(function () {
+    $('input').change(function (event) {
+        var targetElement = $(event.target);
+        var required = $(targetElement).data("required");
+        if (required && !targetElement.val()) {
+            targetElement.css("background-color", "#FFEEEE");
+        } else {
+            targetElement.css("background-color", "");
+        }
+    });
+});
diff --git a/test/agnostic/facelets/processing/html5/src/test/java/com/sun/faces/test/agnostic/facelets/processing/Issue2981IT.java b/test/agnostic/facelets/processing/html5/src/test/java/com/sun/faces/test/agnostic/facelets/processing/Issue2981IT.java
new file mode 100644
index 0000000..f277e78
--- /dev/null
+++ b/test/agnostic/facelets/processing/html5/src/test/java/com/sun/faces/test/agnostic/facelets/processing/Issue2981IT.java
@@ -0,0 +1,76 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.facelets.processing;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.sun.faces.test.junit.JsfTest;
+import com.sun.faces.test.junit.JsfTestRunner;
+import com.sun.faces.test.junit.JsfVersion;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+import org.junit.runner.RunWith;
+
+ at RunWith(JsfTestRunner.class)
+public class Issue2981IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @JsfTest(JsfVersion.JSF_2_2_3)
+    @Test
+    public void testHtml5Doctype() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/personList.xhtml");
+        assertTrue(page.getWebResponse().getContentAsString().indexOf("<!DOCTYPE html>") != -1);
+    }
+}
diff --git a/test/agnostic/facelets/processing/pom.xml b/test/agnostic/facelets/processing/pom.xml
new file mode 100644
index 0000000..391d9cb
--- /dev/null
+++ b/test/agnostic/facelets/processing/pom.xml
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.agnostic.facelets</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.agnostic.facelets.processing</groupId>
+    <artifactId>pom</artifactId>
+    <packaging>pom</packaging>
+    <name>Mojarra ${project.version} - Test - Agnostic - Facelets - Processing</name>
+    <modules>
+        <module>html5</module>
+        <module>escaping01</module>
+    </modules>
+</project>
diff --git a/test/agnostic/facelets/viewAction/newsReader/nbactions.xml b/test/agnostic/facelets/viewAction/newsReader/nbactions.xml
new file mode 100644
index 0000000..fca10fb
--- /dev/null
+++ b/test/agnostic/facelets/viewAction/newsReader/nbactions.xml
@@ -0,0 +1,166 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+
+<actions>
+        <action>
+            <actionName>debug.test.single</actionName>
+            <goals>
+                <goal>test-compile</goal>
+                <goal>surefire:test</goal>
+            </goals>
+            <properties>
+                <test>${packageClassName}</test>
+                <forkMode>once</forkMode>
+                <maven.surefire.debug>-Xdebug -Xrunjdwp:transport=dt_socket,server=n,address=${jpda.address}</maven.surefire.debug>
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                <jpda.listen>true</jpda.listen>
+                <project.build.finalName>test-agnostic-facelets-viewAction-newsReader</project.build.finalName>
+                <webapp.projectStage>Development</webapp.projectStage>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                <integration.serverPort>8080</integration.serverPort>
+                <integration.serverName>localhost</integration.serverName>
+                <integration.url>http://localhost:8080/test-agnostic-facelets-viewAction-newsReader/</integration.url>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+            </properties>
+        </action>
+        <action>
+            <actionName>test.single</actionName>
+            <goals>
+                <goal>test-compile</goal>
+                <goal>surefire:test</goal>
+            </goals>
+            <properties>
+                <project.build.finalName>test-agnostic-facelets-viewAction-newsReader</project.build.finalName>
+                <integration.serverPort>8080</integration.serverPort>
+                <integration.serverName>localhost</integration.serverName>
+                <integration.url>http://localhost:8080/test-agnostic-facelets-viewAction-newsReader/</integration.url>
+                <test>${packageClassName}</test>
+            </properties>
+        </action>
+        <action>
+            <actionName>build</actionName>
+            <goals>
+                <goal>install</goal>
+            </goals>
+            <properties>
+                <webapp.projectStage>Development</webapp.projectStage>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+            </properties>
+        </action>
+        <action>
+            <actionName>rebuild</actionName>
+            <goals>
+                <goal>clean</goal>
+                <goal>install</goal>
+            </goals>
+            <properties>
+                
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                
+                <webapp.projectStage>Development</webapp.projectStage>
+                
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                
+            </properties>
+        </action>
+        <action>
+            <actionName>build-with-dependencies</actionName>
+            <reactor>also-make</reactor>
+            <goals>
+                <goal>install</goal>
+            </goals>
+            <properties>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                <webapp.projectStage>Development</webapp.projectStage>
+            </properties>
+        </action>
+        <action>
+            <actionName>run</actionName>
+            <goals>
+                <goal>package</goal>
+            </goals>
+            <properties>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                <netbeans.deploy>true</netbeans.deploy>
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                <webapp.projectStage>Development</webapp.projectStage>
+            </properties>
+        </action>
+        <action>
+            <actionName>run.single.deploy</actionName>
+            <goals>
+                <goal>package</goal>
+            </goals>
+            <properties>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                <netbeans.deploy>true</netbeans.deploy>
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                <netbeans.deploy.clientUrlPart>${webpagePath}</netbeans.deploy.clientUrlPart>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                <webapp.projectStage>Development</webapp.projectStage>
+            </properties>
+        </action>
+        <action>
+            <actionName>debug.single.deploy</actionName>
+            <goals>
+                <goal>package</goal>
+            </goals>
+            <properties>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                <netbeans.deploy>true</netbeans.deploy>
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                <netbeans.deploy.debugmode>true</netbeans.deploy.debugmode>
+                <netbeans.deploy.clientUrlPart>${webpagePath}</netbeans.deploy.clientUrlPart>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                <webapp.projectStage>Development</webapp.projectStage>
+            </properties>
+        </action>
+    </actions>
diff --git a/test/agnostic/facelets/viewAction/newsReader/pom.xml b/test/agnostic/facelets/viewAction/newsReader/pom.xml
new file mode 100644
index 0000000..d74e963
--- /dev/null
+++ b/test/agnostic/facelets/viewAction/newsReader/pom.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <artifactId>pom</artifactId>
+        <groupId>com.sun.faces.test.agnostic.facelets.viewAction</groupId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>  
+    <groupId>com.sun.faces.test.agnostic.facelets.viewAction</groupId>
+    <artifactId>test-agnostic-facelets-viewAction-newsReader</artifactId>
+    <packaging>war</packaging>
+    <name>Mojarra ${project.version} - Test - Agnostic - Facelets - ViewAction - ViewParam and ViewAction NewsReader Test</name>  
+    <build>
+        <finalName>test-agnostic-facelets-viewAction-newsReader</finalName>
+    </build>
+    <properties>
+        <netbeans.hint.deploy.server>gfv3ee6</netbeans.hint.deploy.server>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/test/agnostic/facelets/viewAction/newsReader/src/main/java/com/sun/faces/test/agnostic/facelets/viewAction/newsReader/NewsIndex.java b/test/agnostic/facelets/viewAction/newsReader/src/main/java/com/sun/faces/test/agnostic/facelets/viewAction/newsReader/NewsIndex.java
new file mode 100644
index 0000000..9a99b9f
--- /dev/null
+++ b/test/agnostic/facelets/viewAction/newsReader/src/main/java/com/sun/faces/test/agnostic/facelets/viewAction/newsReader/NewsIndex.java
@@ -0,0 +1,78 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.agnostic.facelets.viewAction.newsReader;
+
+import java.util.Map;
+import java.util.TreeMap;
+import java.util.concurrent.atomic.AtomicLong;
+import javax.annotation.PostConstruct;
+import javax.faces.bean.ApplicationScoped;
+import javax.faces.bean.ManagedBean;
+
+
+ at ApplicationScoped @ManagedBean(eager = true)
+public class NewsIndex {
+
+    private AtomicLong sequenceGenerator;
+    private Map<Long, NewsStory> entries;
+
+    @PostConstruct
+    public void postContruct() {
+        sequenceGenerator = new AtomicLong();
+        entries = new TreeMap<Long, NewsStory>();
+
+        entries.put(sequenceGenerator.incrementAndGet(), new NewsStory(sequenceGenerator.get(), "Story 1 Headline: Glassfish V3 released", "Story 1 Content: After much anticipation, Glassfish V3 has finally been released. And it's a really great piece of engineering."));
+        entries.put(sequenceGenerator.incrementAndGet(), new NewsStory(sequenceGenerator.get(), "Story 2 Headline: ICEfaces evolves integration with NetBeans IDE and GlassFish", "Story 2 Content: The most recent release of ICEfaces (v1.7.2SP1) enhances the migration of existing Project Woodstock applications to ICEfaces. With the latest ICEfaces NetBeans plugin, it's now possible to add the ICEfaces framework to an existing Woodstock project, and begin to develop ICEfaces pages along sid [...]
+    }
+
+    public Map<Long, NewsStory> getEntries() {
+        return entries;
+    }
+
+    public NewsStory getStory(Long id) {
+        if (id == null) {
+            return null;
+        }
+        
+        return entries.get(id);
+    }
+
+}
diff --git a/test/agnostic/facelets/viewAction/newsReader/src/main/java/com/sun/faces/test/agnostic/facelets/viewAction/newsReader/NewsReader.java b/test/agnostic/facelets/viewAction/newsReader/src/main/java/com/sun/faces/test/agnostic/facelets/viewAction/newsReader/NewsReader.java
new file mode 100644
index 0000000..01e9bfe
--- /dev/null
+++ b/test/agnostic/facelets/viewAction/newsReader/src/main/java/com/sun/faces/test/agnostic/facelets/viewAction/newsReader/NewsReader.java
@@ -0,0 +1,119 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.agnostic.facelets.viewAction.newsReader;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.annotation.PostConstruct;
+import javax.faces.application.FacesMessage;
+import javax.faces.context.FacesContext;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.ManagedProperty;
+import javax.faces.bean.RequestScoped;
+
+
+ at RequestScoped @ManagedBean
+public class NewsReader {
+
+    private FacesContext facesContext;
+
+    @ManagedProperty("#{newsIndex}")
+    private NewsIndex newsIndex;
+
+    private List<NewsStory> stories;
+
+    private NewsStory selectedStory;
+
+    private Long selectedStoryId;
+
+    @PostConstruct
+    public void postConstruct() {
+        facesContext = FacesContext.getCurrentInstance();
+        stories = new ArrayList<NewsStory>(newsIndex.getEntries().values());
+    }
+
+    public void loadStory() {
+        if (!facesContext.isValidationFailed()) {
+            NewsStory story = newsIndex.getStory(selectedStoryId);
+            if (story != null) {
+                selectedStory = story;
+                return;
+            }
+
+            facesContext.addMessage(null, new FacesMessage("The headline you requested does not exist."));
+        }
+
+    }
+    
+    public String goToPage01IfValidationFailed() {
+        if (facesContext.isValidationFailed()) {
+            return "/page01";
+        }
+        return null;
+    }
+
+    public List<NewsStory> getStories() {
+        return stories;
+    }
+
+    public NewsStory getSelectedStory() {
+        return selectedStory;
+    }
+
+    public Long getSelectedStoryId() {
+        return selectedStoryId;
+    }
+
+    public void setSelectedStoryId(Long storyId) {
+        this.selectedStoryId = storyId;
+    }
+    
+    public boolean isMissingStoryId() {
+        return null == selectedStoryId;
+    }
+
+    // Injected Properties
+
+    public void setNewsIndex(NewsIndex newsIndex) {
+        this.newsIndex = newsIndex;
+    }
+
+}
diff --git a/test/agnostic/facelets/viewAction/newsReader/src/main/java/com/sun/faces/test/agnostic/facelets/viewAction/newsReader/NewsStory.java b/test/agnostic/facelets/viewAction/newsReader/src/main/java/com/sun/faces/test/agnostic/facelets/viewAction/newsReader/NewsStory.java
new file mode 100644
index 0000000..0d7a0e7
--- /dev/null
+++ b/test/agnostic/facelets/viewAction/newsReader/src/main/java/com/sun/faces/test/agnostic/facelets/viewAction/newsReader/NewsStory.java
@@ -0,0 +1,68 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.agnostic.facelets.viewAction.newsReader;
+
+
+public class NewsStory {
+
+    private Long id;
+    private String headline;
+    private String content;
+
+    public NewsStory(Long id, String headline, String content) {
+        this.id = id;
+        this.headline = headline;
+        this.content = content;
+    }
+
+    public Long getId() {
+        return id;
+    }
+
+    public String getContent() {
+        return content;
+    }
+    
+    public String getHeadline() {
+        return headline;
+    }
+
+}
diff --git a/test/agnostic/facelets/viewAction/newsReader/src/main/webapp/WEB-INF/faces-config.xml b/test/agnostic/facelets/viewAction/newsReader/src/main/webapp/WEB-INF/faces-config.xml
new file mode 100644
index 0000000..4ff6ef5
--- /dev/null
+++ b/test/agnostic/facelets/viewAction/newsReader/src/main/webapp/WEB-INF/faces-config.xml
@@ -0,0 +1,84 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
+    version="2.0">
+
+    <navigation-rule>
+        <from-view-id>/page02.xhtml</from-view-id>
+        <navigation-case>
+            <from-outcome>homeWithParams</from-outcome>
+            <to-view-id>/page01.xhtml</to-view-id>
+            <redirect include-view-params="true"/>
+        </navigation-case>
+        <navigation-case>
+            <from-outcome>story2WithParams</from-outcome>
+            <to-view-id>/page03.xhtml</to-view-id>
+            <redirect include-view-params="true"/>
+        </navigation-case>
+    </navigation-rule>
+
+    <navigation-rule>
+        <from-view-id>/page03.xhtml</from-view-id>
+        <navigation-case>
+            <from-outcome>homeWithParams</from-outcome>
+            <to-view-id>/page01.xhtml</to-view-id>
+            <redirect include-view-params="true"/>
+        </navigation-case>
+    </navigation-rule>
+    
+
+    <navigation-rule>
+      <from-view-id>/page02.xhtml</from-view-id>
+      <navigation-case>
+         <from-action>#{newsReader.loadStory}</from-action>
+             <if>#{newsReader.missingStoryId}</if>
+         <to-view-id>/page01.xhtml</to-view-id>
+         <redirect/>
+      </navigation-case>
+   </navigation-rule>
+    
+
+</faces-config>
diff --git a/test/agnostic/facelets/viewAction/newsReader/src/main/webapp/WEB-INF/glassfish-web.xml b/test/agnostic/facelets/viewAction/newsReader/src/main/webapp/WEB-INF/glassfish-web.xml
new file mode 100644
index 0000000..1129d0d
--- /dev/null
+++ b/test/agnostic/facelets/viewAction/newsReader/src/main/webapp/WEB-INF/glassfish-web.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
+<glassfish-web-app error-url="">
+  <context-root>/test-agnostic-facelets-viewAction-newsReader</context-root>
+  <class-loader delegate="true"/>
+  <jsp-config>
+    <property name="keepgenerated" value="true">
+      <description>Keep a copy of the generated servlet class' java code.</description>
+    </property>
+  </jsp-config>
+</glassfish-web-app>
diff --git a/test/agnostic/facelets/viewAction/newsReader/src/main/webapp/WEB-INF/web.xml b/test/agnostic/facelets/viewAction/newsReader/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..4a48e83
--- /dev/null
+++ b/test/agnostic/facelets/viewAction/newsReader/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,40 @@
+<?xml version='1.0' encoding='UTF-8'?>
+
+<web-app version="3.0"
+         xmlns="http://java.sun.com/xml/ns/javaee"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+
+    <display-name>mojarra-regression-test</display-name>
+    <description>A simple regression test to make it easier to get your bug fixed. The only reason we need a web.xml is to set the PROJECT_STAGE to Develoment.  If you have a web.xml, then you need to map the FacesServlet.</description>
+
+    <context-param>
+        <description>
+            Tell the runtime where we are in the project development
+            lifecycle.  Valid values are: 
+            Development, UnitTest, SystemTest, or Production.
+            The runtime will display helpful hints to correct common mistakes
+            when the value is Development.
+        </description>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>Development</param-value>
+    </context-param>
+
+    <!-- Faces Servlet -->
+  <servlet>
+    <servlet-name>Faces Servlet</servlet-name>
+    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+    <load-on-startup>1</load-on-startup>
+  </servlet>
+
+   <servlet-mapping>
+       <servlet-name>Faces Servlet</servlet-name>
+       <url-pattern>/faces/*</url-pattern>
+       <url-pattern>*.faces</url-pattern>
+   </servlet-mapping>
+
+   <welcome-file-list>
+     <welcome-file>faces/page01.xhtml</welcome-file>
+   </welcome-file-list>
+
+</web-app>
diff --git a/test/agnostic/facelets/viewAction/newsReader/src/main/webapp/events.xhtml b/test/agnostic/facelets/viewAction/newsReader/src/main/webapp/events.xhtml
new file mode 100644
index 0000000..f5b3487
--- /dev/null
+++ b/test/agnostic/facelets/viewAction/newsReader/src/main/webapp/events.xhtml
@@ -0,0 +1,44 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<f:event xmlns:f="http://java.sun.com/jsf/core" type="preRenderView"
+listener="#{newsReader.loadStory}"/>
diff --git a/test/agnostic/facelets/viewAction/newsReader/src/main/webapp/page01.xhtml b/test/agnostic/facelets/viewAction/newsReader/src/main/webapp/page01.xhtml
new file mode 100644
index 0000000..8a562f2
--- /dev/null
+++ b/test/agnostic/facelets/viewAction/newsReader/src/main/webapp/page01.xhtml
@@ -0,0 +1,77 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:h="http://java.sun.com/jsf/html">
+<body>
+<ui:composition template="template.xhtml">
+    <ui:define name="metadata">
+        <f:metadata>
+            <f:viewParam name="id"/>
+        </f:metadata>
+    </ui:define>
+    <ui:define name="content">
+        <h:messages style="color: red; list-style: none; border: 0 solid red; border-left-width: 2px; padding: 0 5px;"/>
+        <h1>The big news stories of the day</h1>
+        <ul>
+            <ui:repeat var="_story" value="#{newsReader.stories}">
+                <li>
+                    <h:link outcome="page02">
+                        <f:param name="id" value="#{_story.id}"/>
+                        #{_story.headline}
+                    </h:link>
+                </li>
+            </ui:repeat>
+        </ul>
+        <h:panelGroup rendered="#{not empty id}">
+            <p style="color: green;">You just looked at story ##{id}.</p>
+        </h:panelGroup>
+    </ui:define>
+</ui:composition>
+
+</body>
+
+</html>
diff --git a/test/agnostic/facelets/viewAction/newsReader/src/main/webapp/page02.xhtml b/test/agnostic/facelets/viewAction/newsReader/src/main/webapp/page02.xhtml
new file mode 100644
index 0000000..fa90b9b
--- /dev/null
+++ b/test/agnostic/facelets/viewAction/newsReader/src/main/webapp/page02.xhtml
@@ -0,0 +1,110 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:h="http://java.sun.com/jsf/html">
+<body>
+<ui:composition template="template.xhtml">
+    <ui:define name="metadata">
+        <f:metadata>
+            <f:viewParam id="id" name="id" value="#{newsReader.selectedStoryId}"
+                     required="true"
+                     requiredMessage="You did not specify a headline. (The id parameter is missing)"
+                     converterMessage="Invalid headline. (The id parameter is not a number)"
+                     validatorMessage="Invalid headline. (The id parameter is not a positive number)">
+                <f:validateLongRange minimum="1"/>
+            </f:viewParam>
+            <f:viewAction action="#{newsReader.goToPage01IfValidationFailed}" 
+                          phase="PROCESS_VALIDATIONS" onPostback="true" />
+            <f:viewAction action="#{newsReader.loadStory}" onPostback="true" />
+        </f:metadata>
+    </ui:define>
+    <ui:define name="content">
+        <h:messages style="color: red; list-style: none; border: 0 solid red; border-left-width: 2px; padding: 0 5px;"/>
+        <h1>#{newsReader.selectedStory.headline}</h1>
+
+        <p>#{newsReader.selectedStory.content}</p>
+        <h:form prependId="false">
+            <p>
+                <h:commandButton id="refresh" value="Refresh"/>
+                #{' '}
+                <h:commandButton id="refreshClearParam"
+                                 value="Refresh (clear param)">
+                    <f:param name="id" value="#{null}"/>
+                </h:commandButton>
+                #{' '}
+                <h:commandButton id="refreshWithRedirectParams"
+                                 action="/page02.xhtml?faces-redirect=true&includeViewParams=true"
+                                 value="Refresh (Redirect After POST w/ params)"/>
+                #{' '}
+                <h:commandButton id="refreshWithRedirect"
+                                 action="/page02.xhtml?faces-redirect=true"
+                                 value="Refresh (Redirect After POST w/o params)"/>
+            </p>
+            <p>
+                <h:commandButton id="home"
+                                 action="/page01.xhtml?faces-redirect=true&from=story"
+                                 value="Home"/>
+                #{' '}
+                <h:commandButton id="homeRememberSelection"
+                                 action="/page01.xhtml?faces-redirect=true&includeViewParams=true&from=story"
+                                 value="Home (Keep selection)"/>
+                #{' '}
+                <h:commandButton id="homeRememberSelectionNavCase"
+                                 action="homeWithParams"
+                                 value="Home (Keep selection nav case)"/>
+
+                <h:commandButton id="story2RememberSelectionNavCase"
+                                 action="story2WithParams"
+                                 value="Story2 (Keep selection nav case)"/>
+
+            </p>
+        </h:form>
+    </ui:define>
+</ui:composition>
+
+</body>
+</html>
diff --git a/test/agnostic/facelets/viewAction/newsReader/src/main/webapp/page03.xhtml b/test/agnostic/facelets/viewAction/newsReader/src/main/webapp/page03.xhtml
new file mode 100644
index 0000000..279090a
--- /dev/null
+++ b/test/agnostic/facelets/viewAction/newsReader/src/main/webapp/page03.xhtml
@@ -0,0 +1,67 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:h="http://java.sun.com/jsf/html">
+<body>
+<ui:composition template="template.xhtml">
+<ui:define name="metadata">
+    <f:metadata>
+        <f:viewParam id="bar" name="bar" value="foo"/>
+        <f:viewParam id="id" name="id" value="#{flash.id}"/>
+    </f:metadata>
+</ui:define>
+<ui:define name="content">
+    <h1>Story 2</h1>
+    <h:messages style="color: red; list-style: none; border: 0 solid red; border-left-width: 2px; padding: 0 5px;"/>
+    <p>bar is:
+        <h:outputText value="#{bar}"/>
+    </p>
+</ui:define>
+</ui:composition>
+</body>
+
+</html>
diff --git a/test/agnostic/facelets/viewAction/newsReader/src/main/webapp/template.xhtml b/test/agnostic/facelets/viewAction/newsReader/src/main/webapp/template.xhtml
new file mode 100644
index 0000000..ef48fc9
--- /dev/null
+++ b/test/agnostic/facelets/viewAction/newsReader/src/main/webapp/template.xhtml
@@ -0,0 +1,59 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xml:lang="en" lang="en">
+
+<body>
+<f:view>
+    <ui:insert name="metadata"/>
+    <div id="container">
+        <ui:insert name="content"/>
+    </div>
+</f:view>
+</body>
+</html>
diff --git a/test/agnostic/facelets/viewAction/newsReader/src/test/java/com/sun/faces/test/agnostic/facelets/viewAction/newsReader/Spec758IT.java b/test/agnostic/facelets/viewAction/newsReader/src/test/java/com/sun/faces/test/agnostic/facelets/viewAction/newsReader/Spec758IT.java
new file mode 100644
index 0000000..b49a9ac
--- /dev/null
+++ b/test/agnostic/facelets/viewAction/newsReader/src/test/java/com/sun/faces/test/agnostic/facelets/viewAction/newsReader/Spec758IT.java
@@ -0,0 +1,315 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.agnostic.facelets.viewAction.newsReader;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import java.util.ArrayList;
+import java.util.List;
+
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import com.gargoylesoftware.htmlunit.html.HtmlAnchor;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+import static org.junit.Assert.assertTrue;
+
+/**
+ * Test cases for Facelets functionality
+ */
+public class Spec758IT {
+
+
+    /**
+     * Stores the web URL.
+     */
+    private String webUrl;
+    /**
+     * Stores the web webClient.
+     */
+    private WebClient webClient;
+    
+
+    /**
+     * Setup before testing.
+     * 
+     * @throws Exception when a serious error occurs.
+     */
+    @BeforeClass
+    public static void setUpClass() throws Exception {
+    }
+
+    /**
+     * Cleanup after testing.
+     * 
+     * @throws Exception when a serious error occurs.
+     */
+    @AfterClass
+    public static void tearDownClass() throws Exception {
+    }
+
+    /**
+     * Setup before testing.
+     */
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+
+    // ------------------------------------------------------------ Test Methods
+
+
+    /*
+     * Added for issue 917.
+     */
+    @Test
+    public void testViewParameters() throws Exception {
+
+        doTestExtensionMapped(0);
+        doTestExtensionMapped(1);
+        
+    }
+
+    @Test
+    public void testViewParametersValidation() throws Exception {
+
+        HtmlPage page = webClient.getPage(webUrl + "page02.faces?id=0");
+        assertTrue(page.asText().contains("Invalid headline. (The id parameter is not a positive number)"));
+
+    }
+    
+    
+    private void doTestExtensionMapped(int i) throws Exception {
+
+        int storyNum = i + 1;
+        HtmlPage page = null;
+        
+        page = fetchHomePageAndClickStoryLink(i);
+
+        page = fetchHomePageAndClickStoryLink(i);
+        
+        page = doRefreshButton(page, storyNum);
+        
+        page = doRefreshClearParamButton(page, storyNum);
+
+        page = fetchHomePageAndClickStoryLink(i);
+        
+        page = doRefreshWithRedirectParamsButton(page, storyNum);
+        
+        page = fetchHomePageAndClickStoryLink(i);
+        
+        page = doRefreshWithoutRedirectParamsButton(page, storyNum);
+        
+        page = fetchHomePageAndClickStoryLink(i);
+
+        page = doHomeButton(page, storyNum);
+        
+        page = fetchHomePageAndClickStoryLink(i);
+
+        page = doHomeKeepSelectionButton(page, i);
+        
+        page = fetchHomePageAndClickStoryLink(i);
+
+        page = doHomeKeepSelectionNavCaseButton(page, i);
+        
+        page = fetchHomePageAndClickStoryLink(i);
+
+        page = doStory2Button(page, i);
+        
+        
+    }
+    
+    private HtmlPage fetchHomePageAndClickStoryLink(int i) throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "page01.faces") ;
+        String pageText = page.asText();
+
+        assertOnHomePage(pageText);
+        
+        List<HtmlAnchor> anchors = new ArrayList<HtmlAnchor>();
+        anchors = (List<HtmlAnchor>) page.getByXPath("//a");
+        HtmlAnchor toClick = anchors.get(i);
+        page = (HtmlPage) toClick.click();
+        
+        int storyNum = i+1;
+        
+        // Assert some things about the content of the page
+        pageText = page.asText();
+        assertTrue(-1 != pageText.indexOf(getTitleContains(storyNum)));
+        assertTrue(-1 != pageText.indexOf(getContentContains(storyNum)));
+        
+        return page;
+    }
+    
+    private String getTitleContains(int storyNum) {
+        String titleContains = "Story " + storyNum + " Headline:";
+        return titleContains;
+    }
+    
+    private String getContentContains(int storyNum) {
+        String contentContains = "Story " + storyNum + " Content:";
+        return contentContains;
+    }
+    
+    private HtmlPage doRefreshButton(HtmlPage page, int storyNum) throws Exception {
+        String pageText = null;
+        
+        // Click the "refresh" button, ensure the page refreshes properly
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getHtmlElementById("refresh");
+        page = (HtmlPage) button.click();
+        pageText = page.asText();
+        assertTrue(-1 != pageText.indexOf(getTitleContains(storyNum)));
+        assertTrue(-1 != pageText.indexOf(getContentContains(storyNum)));
+
+        return page;
+    }
+    
+    private HtmlPage doRefreshClearParamButton(HtmlPage page, int storyNum) throws Exception {
+        String pageText = null;
+        // Click the "refreshClearParam" button, ensure you get back
+        // to the home page
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getHtmlElementById("refreshClearParam");
+        page = (HtmlPage) button.click();
+        pageText = page.asText();
+        
+        // no story content on home page
+        assertTrue(-1 == pageText.indexOf(getContentContains(storyNum)));
+        assertTrue(-1 != pageText.indexOf("You did not specify a headline. (The id parameter is missing)"));
+        assertOnHomePage(pageText);
+        return page;
+    }
+    
+    private HtmlPage doRefreshWithRedirectParamsButton(HtmlPage page, int storyNum) throws Exception {
+        // click the "refreshWithRedirectParams" button and make sure we're still
+        // on the same page.
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getHtmlElementById("refreshWithRedirectParams");
+        page = (HtmlPage) button.click();
+        String pageText = page.asText();
+        assertTrue(-1 != pageText.indexOf(getTitleContains(storyNum)));
+        assertTrue(-1 != pageText.indexOf(getContentContains(storyNum)));
+        
+        return page;
+    }
+    
+    private HtmlPage doRefreshWithoutRedirectParamsButton(HtmlPage page, int storyNum) throws Exception {
+        String pageText = null;
+        // Click the "refreshWithRedirect" button, ensure you get back
+        // to the home page
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getHtmlElementById("refreshWithRedirect");
+        page = (HtmlPage) button.click();
+        pageText = page.asText();
+        
+        // no story content on home page
+        assertTrue(-1 == pageText.indexOf(getContentContains(storyNum)));
+        assertTrue(-1 != pageText.indexOf("You did not specify a headline. (The id parameter is missing)"));
+        assertOnHomePage(pageText);
+        return page;
+    }
+
+    private HtmlPage doHomeButton(HtmlPage page, int storyNum) throws Exception {
+        String pageText = null;
+        // Click the "home" button, ensure you get back
+        // to the home page
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getHtmlElementById("home");
+        page = (HtmlPage) button.click();
+        pageText = page.asText();
+        
+        // no story content on the page, and no messages either
+        assertTrue(-1 == pageText.indexOf(getContentContains(storyNum)));
+        assertTrue(-1 == pageText.indexOf("The headline you requested does not exist."));
+        assertTrue(-1 == pageText.indexOf("You did not specify a headline. (The id parameter is missing)"));
+        assertOnHomePage(pageText);
+
+        return page;
+    }
+    
+    private HtmlPage doHomeKeepSelectionButton(HtmlPage page, int storyNum) throws Exception {
+        String pageText = null;
+        // Click the "homeKeepSelection" button, ensure you get back
+        // to the home page with the proper story number
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getHtmlElementById("homeRememberSelection");
+        page = (HtmlPage) button.click();
+        pageText = page.asText();
+        
+        assertOnHomePage(pageText);
+        assertTrue(-1 == pageText.indexOf("You just looked at story #" + storyNum + "."));
+        
+        
+        return page;
+    }
+    
+    private HtmlPage doHomeKeepSelectionNavCaseButton(HtmlPage page, int storyNum) throws Exception {
+        String pageText = null;
+        // Click the "homeKeepSelectionNavCase" button, ensure you get back
+        // to the home page with the proper story number
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getHtmlElementById("homeRememberSelectionNavCase");
+        page = (HtmlPage) button.click();
+        pageText = page.asText();
+        
+        assertOnHomePage(pageText);
+        assertTrue(-1 == pageText.indexOf("You just looked at story #" + storyNum + "."));
+        
+        
+        return page;
+    }
+    
+    private HtmlPage doStory2Button(HtmlPage page, int storyNum) throws Exception {
+        String pageText = null;
+        // Click the "story2" button, ensure you get
+        // to the story 2 page
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getHtmlElementById("story2RememberSelectionNavCase");
+        page = (HtmlPage) button.click();
+        pageText = page.asText();
+        
+        assertTrue(-1 != pageText.indexOf("Story 2"));
+        assertTrue(-1 != pageText.indexOf("bar is: foo"));
+        
+        return page;
+    }
+    
+    private void assertOnHomePage(String pageText) throws Exception {
+        assertTrue(-1 != pageText.indexOf("The big news stories of the day"));
+    }
+
+}
diff --git a/test/agnostic/facelets/viewAction/pom.xml b/test/agnostic/facelets/viewAction/pom.xml
new file mode 100644
index 0000000..89fc9ea
--- /dev/null
+++ b/test/agnostic/facelets/viewAction/pom.xml
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.agnostic.facelets</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.agnostic.facelets.viewAction</groupId>
+    <artifactId>pom</artifactId>
+    <packaging>pom</packaging>
+    <name>Mojarra ${project.version} - Test - Agnostic - Facelets - ViewAction</name>
+    <modules>
+        <module>newsReader</module>
+    </modules>
+</project>
diff --git a/test/agnostic/flash/basic/nbactions.xml b/test/agnostic/flash/basic/nbactions.xml
new file mode 100644
index 0000000..f770342
--- /dev/null
+++ b/test/agnostic/flash/basic/nbactions.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<actions>
+        <action>
+            <actionName>debug.test.single</actionName>
+            <goals>
+                <goal>test-compile</goal>
+                <goal>surefire:test</goal>
+            </goals>
+            <properties>
+                <integration.url>http://localhost:8080/test-agnostic-flash-basic/</integration.url>
+                <jpda.listen>true</jpda.listen>
+                <maven.surefire.debug>-Xdebug -Xrunjdwp:transport=dt_socket,server=n,address=${jpda.address}</maven.surefire.debug>
+                <forkMode>once</forkMode>
+                <test>${packageClassName}</test>
+            </properties>
+        </action>
+    </actions>
diff --git a/test/agnostic/flash/basic/pom.xml b/test/agnostic/flash/basic/pom.xml
new file mode 100644
index 0000000..52f338d
--- /dev/null
+++ b/test/agnostic/flash/basic/pom.xml
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <artifactId>pom</artifactId>
+        <groupId>com.sun.faces.test.agnostic.flash</groupId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>  
+    <groupId>com.sun.faces.test.agnostic.flash</groupId>
+    <artifactId>basic</artifactId>
+    <packaging>war</packaging>
+    <name>Mojarra ${project.version} - Test - Agnostic - Flash - Basic flash test</name>  
+    <build>
+        <finalName>test-agnostic-flash-basic</finalName>
+    </build>
+    <properties>
+        <netbeans.hint.deploy.server>gfv3ee6</netbeans.hint.deploy.server>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/test/agnostic/flash/basic/src/main/java/com/sun/faces/test/agnostic/flash/basic/AddMessageBean.java b/test/agnostic/flash/basic/src/main/java/com/sun/faces/test/agnostic/flash/basic/AddMessageBean.java
new file mode 100644
index 0000000..d838290
--- /dev/null
+++ b/test/agnostic/flash/basic/src/main/java/com/sun/faces/test/agnostic/flash/basic/AddMessageBean.java
@@ -0,0 +1,56 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.agnostic.flash.basic;
+
+import javax.faces.application.FacesMessage;
+import javax.faces.bean.ManagedBean;
+import javax.faces.context.FacesContext;
+
+ at ManagedBean
+public class AddMessageBean {
+
+    public String addMessage() {
+        FacesContext.getCurrentInstance()
+              .addMessage(null, new FacesMessage("This is a global message"));
+        return "messagePage?faces-redirect=true";
+    }
+
+}
diff --git a/test/agnostic/flash/basic/src/main/java/com/sun/faces/test/agnostic/flash/basic/FlashDropCookieBean.java b/test/agnostic/flash/basic/src/main/java/com/sun/faces/test/agnostic/flash/basic/FlashDropCookieBean.java
new file mode 100644
index 0000000..219d98f
--- /dev/null
+++ b/test/agnostic/flash/basic/src/main/java/com/sun/faces/test/agnostic/flash/basic/FlashDropCookieBean.java
@@ -0,0 +1,77 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.agnostic.flash.basic;
+
+import javax.faces.application.FacesMessage;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.ManagedProperty;
+import javax.faces.bean.RequestScoped;
+import javax.faces.context.FacesContext;
+
+ at ManagedBean
+ at RequestScoped
+public class FlashDropCookieBean {
+
+    @ManagedProperty(value="#{facesContext}")
+    protected FacesContext facesContext;
+
+    public FacesContext getFacesContext() {
+        return facesContext;
+    }
+
+    public void setFacesContext(FacesContext facesContext) {
+        this.facesContext = facesContext;
+    }
+
+
+    protected String value;
+
+    public String getValue() {
+        return value;
+    }
+
+    public void setValue(String value) {
+        this.value = value;
+        FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO,
+                "Message 1", "we are showing the message, but the we are not accessing the flash");
+        getFacesContext().addMessage(null, message);
+    }
+}
diff --git a/test/agnostic/flash/basic/src/main/java/com/sun/faces/test/agnostic/flash/basic/FlashMessagesBean.java b/test/agnostic/flash/basic/src/main/java/com/sun/faces/test/agnostic/flash/basic/FlashMessagesBean.java
new file mode 100644
index 0000000..303012a
--- /dev/null
+++ b/test/agnostic/flash/basic/src/main/java/com/sun/faces/test/agnostic/flash/basic/FlashMessagesBean.java
@@ -0,0 +1,84 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.agnostic.flash.basic;
+
+import javax.faces.application.FacesMessage;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.ManagedProperty;
+import javax.faces.bean.RequestScoped;
+import javax.faces.context.FacesContext;
+
+ at ManagedBean
+ at RequestScoped
+public class FlashMessagesBean {
+
+    @ManagedProperty(value="#{facesContext}")
+    protected FacesContext facesContext;
+
+    public FacesContext getFacesContext() {
+        return facesContext;
+    }
+
+    public void setFacesContext(FacesContext facesContext) {
+        this.facesContext = facesContext;
+    }
+
+
+    protected String value;
+
+    public String getValue() {
+        return value;
+    }
+
+    public void setValue(String value) {
+        this.value = value;
+        FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO,
+                "Mesage 1", "survives redirect");
+        getFacesContext().addMessage(null, message);
+        message = new FacesMessage(FacesMessage.SEVERITY_INFO,
+                "Mesage 2", "survives redirect");
+        getFacesContext().addMessage(null, message);
+        getFacesContext().getExternalContext().getFlash().setKeepMessages(true);
+
+    }
+
+
+}
diff --git a/test/agnostic/flash/basic/src/main/java/com/sun/faces/test/agnostic/flash/issue2973/Bean.java b/test/agnostic/flash/basic/src/main/java/com/sun/faces/test/agnostic/flash/issue2973/Bean.java
new file mode 100644
index 0000000..7e52d00
--- /dev/null
+++ b/test/agnostic/flash/basic/src/main/java/com/sun/faces/test/agnostic/flash/issue2973/Bean.java
@@ -0,0 +1,77 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.test.agnostic.flash.issue2973;
+
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.faces.bean.ManagedBean;
+import javax.faces.context.FacesContext;
+
+ at ManagedBean(name="bean")
+public class Bean {
+    private String text;
+    
+    public String getText() {
+        return text;
+    }
+    
+    public void setText(String text) {
+        this.text = text;
+    }
+    
+    public String nextpage (){
+        FacesContext.getCurrentInstance().getExternalContext().getFlash().put("bean", this);
+        return "page2?faces-redirect=true";
+    }
+    
+    public String simulateServerRestart() {
+        FacesContext context = FacesContext.getCurrentInstance();
+        context.getExternalContext().getApplicationMap().remove("csfcff");
+        try {
+            Thread.currentThread().sleep(3000);
+        } catch (InterruptedException ex) {
+            Logger.getLogger(Bean.class.getName()).log(Level.SEVERE, null, ex);
+        }
+        
+        return null;
+    }
+    
+}
diff --git a/test/agnostic/flash/basic/src/main/webapp/WEB-INF/beans.xml b/test/agnostic/flash/basic/src/main/webapp/WEB-INF/beans.xml
new file mode 100644
index 0000000..c782f57
--- /dev/null
+++ b/test/agnostic/flash/basic/src/main/webapp/WEB-INF/beans.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- This file can be an empty text file (0 bytes) -->
+<!-- We're declaring the schema to save you time if you do have to configure 
+   this in the future -->
+<beans xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+   xsi:schemaLocation="
+        http://java.sun.com/xml/ns/javaee 
+        http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
+</beans>
diff --git a/test/agnostic/flash/basic/src/main/webapp/WEB-INF/glassfish-web.xml b/test/agnostic/flash/basic/src/main/webapp/WEB-INF/glassfish-web.xml
new file mode 100644
index 0000000..efbca66
--- /dev/null
+++ b/test/agnostic/flash/basic/src/main/webapp/WEB-INF/glassfish-web.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
+<glassfish-web-app error-url="">
+  <context-root>/test-agnostic-flash-basic</context-root>
+  <class-loader delegate="true"/>
+  <jsp-config>
+    <property name="keepgenerated" value="true">
+      <description>Keep a copy of the generated servlet class' java code.</description>
+    </property>
+  </jsp-config>
+</glassfish-web-app>
diff --git a/test/agnostic/flash/basic/src/main/webapp/WEB-INF/web.xml b/test/agnostic/flash/basic/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..aaeb9d1
--- /dev/null
+++ b/test/agnostic/flash/basic/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>${webapp.projectStage}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
+        <param-value>${webapp.partialStateSaving}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>${webapp.stateSavingMethod}</param-value>
+    </context-param>
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <welcome-file-list>
+        <welcome-file>faces/keepMessages.xhtml</welcome-file>
+    </welcome-file-list>
+</web-app>
diff --git a/test/agnostic/flash/basic/src/main/webapp/flash01.xhtml b/test/agnostic/flash/basic/src/main/webapp/flash01.xhtml
new file mode 100644
index 0000000..1cb8998
--- /dev/null
+++ b/test/agnostic/flash/basic/src/main/webapp/flash01.xhtml
@@ -0,0 +1,81 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:c="http://java.sun.com/jsp/jstl/core">
+	<h:head>
+		<title>flash 1</title>
+	</h:head>
+	
+	<h:body>
+		<h:form id="nextForm" prependId="false">
+			<c:set target="#{flash}" property="foo" value="bar"/>
+			
+			<h:panelGrid id="trials" columns="1">
+				<h:button id="nextButton"
+						  value="Next (button)"
+						  outcome="flash02.xhtml">
+                                  <f:param name="foo" value="bar"/>
+                                </h:button>
+				<h:link id="nextLink"
+						value="Next (link)"
+						outcome="flash02.xhtml">
+                                  <f:param name="foo" value="bar"/>
+                                </h:link>
+				<h:commandLink id="nextCommandLink"
+						       action="flash02.xhtml"
+						       value="Next 
+(commandLink)"/>
+				<h:commandButton id="nextCommandButton"
+						         action="flash02.xhtml"
+						         value="Next 
+(commandButton)"/>
+			</h:panelGrid>
+		</h:form>
+
+		<ui:debug/>
+	</h:body>
+</html>
diff --git a/test/agnostic/flash/basic/src/main/webapp/flash02.xhtml b/test/agnostic/flash/basic/src/main/webapp/flash02.xhtml
new file mode 100644
index 0000000..abbaaac
--- /dev/null
+++ b/test/agnostic/flash/basic/src/main/webapp/flash02.xhtml
@@ -0,0 +1,68 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC
+	"-//W3C//DTD XHTML 1.0 Strict//EN"
+	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:c="http://java.sun.com/jsp/jstl/core">
+
+<f:metadata>
+  <f:viewParam name="foo" id="foo" value="#{flash.now.foo}" />
+</f:metadata>
+
+	<h:head>
+		<meta http-equiv="Content-Type" content="text/html; charset=UTF-
+8"/>
+		<title>flash 2</title>
+	</h:head>
+	
+	<h:body>
+		foo = ${flash.foo}
+
+		<ui:debug/>
+	</h:body>
+</html>
diff --git a/test/agnostic/flash/basic/src/main/webapp/flashDropCookie.xhtml b/test/agnostic/flash/basic/src/main/webapp/flashDropCookie.xhtml
new file mode 100644
index 0000000..dd7186d
--- /dev/null
+++ b/test/agnostic/flash/basic/src/main/webapp/flashDropCookie.xhtml
@@ -0,0 +1,59 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:c="http://java.sun.com/jsp/jstl/core">
+    <h:head>
+        <title>Test that flash should drop the cookie</title>
+    </h:head>
+    <h:body>
+        <h:form prependId="false">
+            <c:set target="#{flash}" property="foo" value="bar"/>
+            <h:inputText id="input" value="#{flashDropCookieBean.value}" />
+            <h:commandButton id="submit" value="submit" action="flashDropCookie2"/>
+        </h:form>
+    </h:body>
+</html>
diff --git a/test/agnostic/flash/basic/src/main/webapp/flashDropCookie2.xhtml b/test/agnostic/flash/basic/src/main/webapp/flashDropCookie2.xhtml
new file mode 100644
index 0000000..4becb93
--- /dev/null
+++ b/test/agnostic/flash/basic/src/main/webapp/flashDropCookie2.xhtml
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title>Verify the cookie is set to be dropped</title>
+    </h:head>
+    <h:body>
+        <h:messages/>
+        <h:link id="link" value="Next page" outcome="flashDropCookie3"/>
+    </h:body>
+</html>
diff --git a/test/agnostic/flash/basic/src/main/webapp/flashDropCookie3.xhtml b/test/agnostic/flash/basic/src/main/webapp/flashDropCookie3.xhtml
new file mode 100644
index 0000000..f29495e
--- /dev/null
+++ b/test/agnostic/flash/basic/src/main/webapp/flashDropCookie3.xhtml
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title>Verify the cookie is set to be dropped</title>
+    </h:head>
+    <h:body>
+    </h:body>
+</html>
+
diff --git a/test/agnostic/flash/basic/src/main/webapp/flashKeepMessages01.xhtml b/test/agnostic/flash/basic/src/main/webapp/flashKeepMessages01.xhtml
new file mode 100644
index 0000000..e9194fb
--- /dev/null
+++ b/test/agnostic/flash/basic/src/main/webapp/flashKeepMessages01.xhtml
@@ -0,0 +1,59 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title>Test that flash shows multiple messages: issue 1476</title>
+    </h:head>
+    <h:body>
+        <h:form prependId="false">
+
+            <h:inputText value="#{flashMessagesBean.value}" />
+            <h:commandButton id="nextButton" value="submit" action="flashKeepMessages02?faces-redirect=true" />
+
+        </h:form>
+    </h:body>
+</html>
+
diff --git a/test/agnostic/flash/basic/src/main/webapp/flashKeepMessages02.xhtml b/test/agnostic/flash/basic/src/main/webapp/flashKeepMessages02.xhtml
new file mode 100644
index 0000000..7a92482
--- /dev/null
+++ b/test/agnostic/flash/basic/src/main/webapp/flashKeepMessages02.xhtml
@@ -0,0 +1,56 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title>Test that flash shows multiple messages: issue 1476</title>
+    </h:head>
+    <h:body>
+        <h:messages showDetail="true" showSummary="true"
+                    title="should have two messages"
+                    tooltip="should have two messages" />
+    </h:body>
+</html>
+
diff --git a/test/agnostic/flash/basic/src/main/webapp/issue2973/page1.xhtml b/test/agnostic/flash/basic/src/main/webapp/issue2973/page1.xhtml
new file mode 100644
index 0000000..7d38da8
--- /dev/null
+++ b/test/agnostic/flash/basic/src/main/webapp/issue2973/page1.xhtml
@@ -0,0 +1,20 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title>Facelet Title</title>
+    </h:head>
+    <h:body>
+        <h:form prependId="false">
+            <h:panelGrid>
+                <h:outputText value="Text:" />
+                <h:inputText id="input" value="#{bean.text}" />
+                <h:commandButton id="button" action="#{bean.nextpage}" value="Click" />
+                <h:commandButton id="restart" action="#{bean.simulateServerRestart}" value="Simulate server restart" />
+                                
+            </h:panelGrid>
+        </h:form>
+    </h:body>
+</html>
+
diff --git a/test/agnostic/flash/basic/src/main/webapp/issue2973/page2.xhtml b/test/agnostic/flash/basic/src/main/webapp/issue2973/page2.xhtml
new file mode 100644
index 0000000..2803653
--- /dev/null
+++ b/test/agnostic/flash/basic/src/main/webapp/issue2973/page2.xhtml
@@ -0,0 +1,12 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title>Facelet Title</title>
+    </h:head>
+    <h:body>
+        <p id="response">#{flash.bean.text}</p>
+    </h:body>
+</html>
+
diff --git a/test/agnostic/flash/basic/src/main/webapp/keepMessages.xhtml b/test/agnostic/flash/basic/src/main/webapp/keepMessages.xhtml
new file mode 100644
index 0000000..9762658
--- /dev/null
+++ b/test/agnostic/flash/basic/src/main/webapp/keepMessages.xhtml
@@ -0,0 +1,71 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML Basic 1.0//EN"
+      "http://www.w3.org/TR/xhtml-basic/xhtml-basic10.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:c="http://java.sun.com/jsp/jstl/core"
+      xmlns:f="http://java.sun.com/jsf/core">
+<f:view>
+    <h:head>
+        <meta http-equiv="Content-Type"
+              content="text/html; charset=ISO-8859-1"/>
+        <title>Keep Messages Test: first page</title>
+    </h:head>
+    <h:body>
+        <c:set target="#{flash}" property="keepMessages" value="true"/>
+
+        <h:form>
+            <h:commandButton value="Submit"
+                             action="#{addMessageBean.addMessage}" id="submit"/>
+        </h:form>
+
+        <h:form id="requiredForm">
+        	<h:inputText required="true" id="requiredInput"/>
+            <h:commandButton value="Submit"
+                             action="#{addMessageBean.addMessage}" id="submitRequired"/>
+        </h:form>
+    </h:body>
+</f:view>
+</html>
diff --git a/test/agnostic/flash/basic/src/main/webapp/messagePage.xhtml b/test/agnostic/flash/basic/src/main/webapp/messagePage.xhtml
new file mode 100644
index 0000000..aab8a63
--- /dev/null
+++ b/test/agnostic/flash/basic/src/main/webapp/messagePage.xhtml
@@ -0,0 +1,63 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML Basic 1.0//EN"
+      "http://www.w3.org/TR/xhtml-basic/xhtml-basic10.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:c="http://java.sun.com/jsp/jstl/core"
+      xmlns:f="http://java.sun.com/jsf/core">
+<f:view>
+    <h:head>
+        <meta http-equiv="Content-Type"
+              content="text/html; charset=ISO-8859-1"/>
+        <title>Keep Messages Test: second page</title>
+    </h:head>
+    <h:body>
+        <h:messages/>
+        <h:form id="form">
+            <h:commandButton id="button" value="Submit" />
+        </h:form>
+    </h:body>
+</f:view>
+</html>
diff --git a/test/agnostic/flash/basic/src/test/java/com/sun/faces/test/agnostic/flash/basic/FlashMessagesIT.java b/test/agnostic/flash/basic/src/test/java/com/sun/faces/test/agnostic/flash/basic/FlashMessagesIT.java
new file mode 100644
index 0000000..d604b6c
--- /dev/null
+++ b/test/agnostic/flash/basic/src/test/java/com/sun/faces/test/agnostic/flash/basic/FlashMessagesIT.java
@@ -0,0 +1,90 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.agnostic.flash.basic;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+import static org.junit.Assert.assertTrue;
+
+/**
+  *
+ */
+public class FlashMessagesIT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+
+    // ------------------------------------------------------------ Test Methods
+
+
+    /**
+     * Added for issue 1476.
+     */
+    @Test
+    public void testBooleanCheckboxSubmittedValue() throws Exception {
+
+        HtmlPage page = webClient.getPage(webUrl + "/faces/flashKeepMessages01.xhtml");
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("nextButton");
+        page = button.click();
+        String pageText = page.asText();
+        assertTrue(pageText.contains("Mesage 1 survives redirect"));
+        assertTrue(pageText.contains("Mesage 2 survives redirect"));
+
+
+    }
+}
diff --git a/test/agnostic/flash/basic/src/test/java/com/sun/faces/test/agnostic/flash/basic/FlashViewParamIT.java b/test/agnostic/flash/basic/src/test/java/com/sun/faces/test/agnostic/flash/basic/FlashViewParamIT.java
new file mode 100644
index 0000000..f95dbbc
--- /dev/null
+++ b/test/agnostic/flash/basic/src/test/java/com/sun/faces/test/agnostic/flash/basic/FlashViewParamIT.java
@@ -0,0 +1,112 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.flash.basic;
+
+import com.gargoylesoftware.htmlunit.util.Cookie;
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlAnchor;
+import com.gargoylesoftware.htmlunit.html.HtmlButtonInput;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import com.sun.faces.test.junit.JsfTest;
+import com.sun.faces.test.junit.JsfTestRunner;
+import com.sun.faces.test.junit.JsfVersion;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.assertTrue;
+import org.junit.runner.RunWith;
+
+ at RunWith(JsfTestRunner.class)
+public class FlashViewParamIT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    /**
+     * Added for issue 904.
+     */
+    @JsfTest(JsfVersion.JSF_2_2_1)
+    @Test
+    public void testBooleanCheckboxSubmittedValue() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "/faces/flash01.xhtml");
+        HtmlButtonInput button = (HtmlButtonInput) page.getElementById("nextButton");
+        page = button.click();
+        assertTrue(page.asText().contains("foo = bar"));
+
+        Cookie cookie = webClient.getCookieManager().getCookie("csfcfc");
+        assertTrue(cookie.isHttpOnly());
+
+        page = webClient.getPage(webUrl + "/faces/flash01.xhtml");
+        HtmlAnchor link = (HtmlAnchor) page.getElementById("nextLink");
+        page = link.click();
+        assertTrue(page.asText().contains("foo = bar"));
+
+        cookie = webClient.getCookieManager().getCookie("csfcfc");
+        assertTrue(cookie.isHttpOnly());
+
+        page = webClient.getPage(webUrl + "/faces/flash01.xhtml");
+        link = (HtmlAnchor) page.getElementById("nextCommandLink");
+        page = link.click();
+        assertTrue(page.asText().contains("foo = bar"));
+        
+        cookie = webClient.getCookieManager().getCookie("csfcfc");
+        assertTrue(cookie.isHttpOnly());
+
+        page = webClient.getPage(webUrl + "/faces/flash01.xhtml");
+        HtmlSubmitInput submitButton = (HtmlSubmitInput) page.getElementById("nextCommandButton");
+        page = submitButton.click();
+        assertTrue(page.asText().contains("foo = bar"));
+        
+        cookie = webClient.getCookieManager().getCookie("csfcfc");
+        assertTrue(cookie.isHttpOnly());
+    }
+}
diff --git a/test/agnostic/flash/basic/src/test/java/com/sun/faces/test/agnostic/flash/basic/Issue2862IT.java b/test/agnostic/flash/basic/src/test/java/com/sun/faces/test/agnostic/flash/basic/Issue2862IT.java
new file mode 100644
index 0000000..320b4c1
--- /dev/null
+++ b/test/agnostic/flash/basic/src/test/java/com/sun/faces/test/agnostic/flash/basic/Issue2862IT.java
@@ -0,0 +1,93 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.flash.basic;
+
+import com.gargoylesoftware.htmlunit.html.HtmlElement;
+import org.junit.Test;
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
+import com.sun.faces.test.junit.JsfTest;
+import com.sun.faces.test.junit.JsfTestRunner;
+import com.sun.faces.test.junit.JsfVersion;
+import org.junit.After;
+import org.junit.Before;
+import static org.junit.Assert.assertTrue;
+import org.junit.runner.RunWith;
+
+ at RunWith(JsfTestRunner.class)
+public class Issue2862IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @JsfTest(JsfVersion.JSF_2_2_5)
+    @Test
+    public void testDropFlashCookie() throws Exception {
+
+        HtmlPage page = webClient.getPage(webUrl + "faces/flashDropCookie.xhtml") ;
+        webClient.getOptions().setRedirectEnabled(true);
+        HtmlTextInput textInput = (HtmlTextInput) page.getHtmlElementById("input");
+        textInput.setValueAttribute("test");
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getHtmlElementById("submit");
+       
+        int currentSize = webClient.getCookieManager().getCookies().size();
+        
+        page = button.click();
+        HtmlElement element = page.getHtmlElementById("link");
+        page = element.click();
+        
+        int newSize = webClient.getCookieManager().getCookies().size();
+        
+        assertTrue( newSize < currentSize );
+    }
+}
diff --git a/test/agnostic/flash/basic/src/test/java/com/sun/faces/test/agnostic/flash/basic/Issue2973IT.java b/test/agnostic/flash/basic/src/test/java/com/sun/faces/test/agnostic/flash/basic/Issue2973IT.java
new file mode 100644
index 0000000..11657e8
--- /dev/null
+++ b/test/agnostic/flash/basic/src/test/java/com/sun/faces/test/agnostic/flash/basic/Issue2973IT.java
@@ -0,0 +1,114 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.flash.basic;
+
+import com.gargoylesoftware.htmlunit.html.HtmlElement;
+import org.junit.Test;
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
+import com.sun.faces.test.junit.JsfTest;
+import com.sun.faces.test.junit.JsfTestRunner;
+import com.sun.faces.test.junit.JsfVersion;
+import org.junit.After;
+import org.junit.Before;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+import org.junit.runner.RunWith;
+
+ at RunWith(JsfTestRunner.class)
+public class Issue2973IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @JsfTest(JsfVersion.JSF_2_2_2)
+    @Test
+    public void testServerRestartHandledGracefully() throws Exception {
+
+        HtmlPage page = webClient.getPage(webUrl + "faces/issue2973/page1.xhtml") ;
+        webClient.getOptions().setRedirectEnabled(true);
+        HtmlTextInput textInput = (HtmlTextInput) page.getElementById("input");
+        String message = "" + System.currentTimeMillis();
+        textInput.setValueAttribute(message);
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("button");
+        page = button.click();
+        HtmlElement value = (HtmlElement) page.getElementById("response");
+        
+        assertEquals(message, value.asText());
+        
+        webClient.getOptions().setThrowExceptionOnFailingStatusCode(false);
+        boolean assertionValue = false;
+        for (int i = 0; i < 3; i++) {
+            page = webClient.getPage(webUrl + "faces/issue2973/page1.xhtml") ;
+            button = (HtmlSubmitInput) page.getElementById("restart");
+            page = button.click();
+            Thread.sleep(3000);
+            
+            textInput = (HtmlTextInput) page.getElementById("input");
+            message = "" + System.currentTimeMillis();
+            textInput.setValueAttribute(message);
+            button = (HtmlSubmitInput) page.getElementById("button");
+            page = button.click();
+            value = (HtmlElement) page.getElementById("response");
+        
+            if (null != value) {
+                assertionValue = message.equals(value.asText());
+            }
+            if (assertionValue) {
+                break;
+            }
+        }
+        assertTrue(assertionValue);   
+        
+    }
+}
diff --git a/test/agnostic/flash/basic/src/test/java/com/sun/faces/test/agnostic/flash/basic/KeepMessagesIT.java b/test/agnostic/flash/basic/src/test/java/com/sun/faces/test/agnostic/flash/basic/KeepMessagesIT.java
new file mode 100644
index 0000000..eeee332
--- /dev/null
+++ b/test/agnostic/flash/basic/src/test/java/com/sun/faces/test/agnostic/flash/basic/KeepMessagesIT.java
@@ -0,0 +1,122 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.agnostic.flash.basic;
+
+import org.junit.Test;
+import com.gargoylesoftware.htmlunit.WebClient;
+import java.io.IOException;
+
+
+import com.gargoylesoftware.htmlunit.html.HtmlInput;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import org.junit.After;
+import org.junit.Before;
+
+import static org.junit.Assert.assertTrue;
+
+public class KeepMessagesIT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+
+    // ------------------------------------------------------------ Test Methods
+
+    @Test
+    public void testMessagesAreKeptAfterRedirect() throws Exception {
+
+        HtmlPage page = webClient.getPage(webUrl + "/faces/keepMessages.xhtml") ;
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getByXPath("//input[contains(@id, 'submit')]").get(0);
+        page = button.click();
+
+        assertTrue(-1 != page.asText().indexOf("This is a global message"));
+
+        // submit the page again to make sure messages aren't re-displayed since
+        // keep messages isn't set to true on this view
+        button = (HtmlSubmitInput) page.getByXPath("//input[contains(@id, 'button')]").get(0);
+        page = button.click();
+
+        assertTrue(page.asText().indexOf("This is a global message") == -1);
+    }
+    
+    @Test
+    public void testMessagesAreKeptAfterRedirectAfterDoubleValidationError() throws Exception {
+    	
+    	HtmlPage page = webClient.getPage(webUrl + "/faces/keepMessages.xhtml") ;
+		page = submitRequiredForm(page);
+    	assertOnPage(page, "first page");
+    	
+    	page = submitRequiredForm(page);
+    	assertOnPage(page, "first page");
+    	
+    	HtmlInput requiredInput = (HtmlInput) page.getByXPath("//input[contains(@id, 'requiredInput')]").get(0);
+    	requiredInput.setValueAttribute("a value");
+    	
+    	page = submitRequiredForm(page);
+    	assertOnPage(page, "second page");
+    	
+    	assertTrue("FacesMessage should have survived redirect", page.asText().indexOf("This is a global message") != -1);
+    }
+
+
+	private void assertOnPage(HtmlPage page, String titleText) {
+		assertTrue(-1 != page.getTitleText().indexOf(titleText));
+	}
+
+
+	private HtmlPage submitRequiredForm(HtmlPage page) throws IOException {
+		HtmlSubmitInput button = (HtmlSubmitInput) page.getByXPath("//input[contains(@id, 'submitRequired')]").get(0);
+    	return button.click();
+	}
+
+}
diff --git a/test/agnostic/flash/chunkRedirect/nbactions.xml b/test/agnostic/flash/chunkRedirect/nbactions.xml
new file mode 100644
index 0000000..103d39f
--- /dev/null
+++ b/test/agnostic/flash/chunkRedirect/nbactions.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<actions>
+        <action>
+            <actionName>debug.test.single</actionName>
+            <goals>
+                <goal>test-compile</goal>
+                <goal>surefire:test</goal>
+            </goals>
+            <properties>
+                <test>${packageClassName}</test>
+                <forkMode>once</forkMode>
+                <maven.surefire.debug>-Xdebug -Xrunjdwp:transport=dt_socket,server=n,address=${jpda.address}</maven.surefire.debug>
+                <jpda.listen>true</jpda.listen>
+                <integration.url>http://localhost:8080/test-agnostic-flash-chunkRedirect/</integration.url>
+            </properties>
+        </action>
+    </actions>
diff --git a/test/agnostic/flash/chunkRedirect/pom.xml b/test/agnostic/flash/chunkRedirect/pom.xml
new file mode 100644
index 0000000..f71c839
--- /dev/null
+++ b/test/agnostic/flash/chunkRedirect/pom.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.agnostic.flash</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.agnostic.flash</groupId>
+    <artifactId>chunkRedirect</artifactId>
+    <packaging>war</packaging>
+    <name>Mojarra ${project.version} - Test - Agnostic - Flash - chunkRedirect</name>
+    <build>
+        <finalName>test-agnostic-flash-chunkRedirect</finalName>
+    </build>
+    <properties>
+        <netbeans.hint.deploy.server>gfv3ee6</netbeans.hint.deploy.server>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/test/agnostic/flash/chunkRedirect/src/main/java/com/sun/faces/test/agnostic/flash/chunkRedirect/Issue2136Bean.java b/test/agnostic/flash/chunkRedirect/src/main/java/com/sun/faces/test/agnostic/flash/chunkRedirect/Issue2136Bean.java
new file mode 100644
index 0000000..9f5bb92
--- /dev/null
+++ b/test/agnostic/flash/chunkRedirect/src/main/java/com/sun/faces/test/agnostic/flash/chunkRedirect/Issue2136Bean.java
@@ -0,0 +1,60 @@
+package com.sun.faces.test.agnostic.flash.chunkRedirect;
+
+import java.io.Serializable;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.RequestScoped;
+import javax.faces.context.FacesContext;
+
+/**
+ * @author Manfred Riem (manfred.riem at oracle.com)
+ */
+ at ManagedBean
+ at RequestScoped
+public class Issue2136Bean implements Serializable {
+    /**
+     * Stores the flashValue.
+     */
+    private String flashValue;
+    
+    /**
+     * Stores the value.
+     */
+    private String value;
+    
+    /**
+     * Constructor.
+     */
+    public Issue2136Bean() {
+        if (FacesContext.getCurrentInstance().getExternalContext().getFlash().get("flashValue") != null) {
+            this.flashValue = FacesContext.getCurrentInstance().getExternalContext().getFlash().get("flashValue").toString();
+        }
+    }
+    
+    /**
+     * Get the flash value.
+     * 
+     * @return the flash value.
+     */
+    public String getFlashValue() {
+        return this.flashValue;
+    }
+    
+    /**
+     * Get the value.
+     * 
+     * @return the value.
+     */
+    public String getValue() {
+        return this.value;
+    }
+    
+    /**
+     * Set the value.
+     * 
+     * @param value the value.
+     */
+    public void setValue(String value) {
+        this.value = value;
+        FacesContext.getCurrentInstance().getExternalContext().getFlash().put("flashValue", value);
+    }
+}
diff --git a/test/agnostic/flash/chunkRedirect/src/main/java/com/sun/faces/test/agnostic/flash/chunkRedirect/Issue2332Bean.java b/test/agnostic/flash/chunkRedirect/src/main/java/com/sun/faces/test/agnostic/flash/chunkRedirect/Issue2332Bean.java
new file mode 100644
index 0000000..0d30f46
--- /dev/null
+++ b/test/agnostic/flash/chunkRedirect/src/main/java/com/sun/faces/test/agnostic/flash/chunkRedirect/Issue2332Bean.java
@@ -0,0 +1,23 @@
+package com.sun.faces.test.agnostic.flash.chunkRedirect;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.RequestScoped;
+import javax.faces.context.FacesContext;
+import javax.faces.context.Flash;
+import javax.faces.event.ActionEvent;
+
+ at RequestScoped
+ at ManagedBean(name = "issue2332Bean")
+public class Issue2332Bean {
+
+    private Flash flash = FacesContext.getCurrentInstance().getExternalContext().getFlash();
+
+    public void test(ActionEvent ae) {
+        flash.put("flashContent", "== Flash value LINK1 ==");
+    }
+
+    public String test2() {
+        flash.put("flashContent", "== Flash value LINK2 ==");
+        return "page2.xhtml";
+    }
+}
diff --git a/test/agnostic/flash/chunkRedirect/src/main/webapp/WEB-INF/glassfish-web.xml b/test/agnostic/flash/chunkRedirect/src/main/webapp/WEB-INF/glassfish-web.xml
new file mode 100644
index 0000000..c99a234
--- /dev/null
+++ b/test/agnostic/flash/chunkRedirect/src/main/webapp/WEB-INF/glassfish-web.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
+<glassfish-web-app error-url="">
+  <context-root>/test-agnostic-flash-chunkRedirect</context-root>
+  <class-loader delegate="true"/>
+  <jsp-config>
+    <property name="keepgenerated" value="true">
+      <description>Keep a copy of the generated servlet class' java code.</description>
+    </property>
+  </jsp-config>
+</glassfish-web-app>
diff --git a/test/agnostic/flash/chunkRedirect/src/main/webapp/WEB-INF/web.xml b/test/agnostic/flash/chunkRedirect/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..cb7c858
--- /dev/null
+++ b/test/agnostic/flash/chunkRedirect/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" 
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>${webapp.projectStage}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
+        <param-value>${webapp.partialStateSaving}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>${webapp.stateSavingMethod}</param-value>
+    </context-param>
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <session-config>
+        <session-timeout>30</session-timeout>
+    </session-config>
+    <welcome-file-list>
+        <welcome-file>faces/index.xhtml</welcome-file>
+    </welcome-file-list>
+</web-app>
diff --git a/test/agnostic/flash/chunkRedirect/src/main/webapp/index.xhtml b/test/agnostic/flash/chunkRedirect/src/main/webapp/index.xhtml
new file mode 100644
index 0000000..b2d9193
--- /dev/null
+++ b/test/agnostic/flash/chunkRedirect/src/main/webapp/index.xhtml
@@ -0,0 +1,146 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    <h:head>
+        <title>Facelet Title</title>
+    </h:head>
+    <h:body>
+        <h:panelGroup layout="block" style="margin-bottom: 20px;">
+            This application adds a value to the flash in an Ajax 
+            ActionListener. The Ajax response is large enough to be chunked. 
+            Therefore the JSF1095 warning is displayed and the flash cookie 
+            not correctly written.
+        </h:panelGroup>
+        <h:panelGroup layout="block" style="margin-bottom: 20px;">
+            The same thing happens if the value is added in a not in a normal 
+            request and navigation is done to a page that is large enough to 
+            be chunked. See second link. 
+        </h:panelGroup>
+        <h:panelGroup layout="block" style="margin-bottom: 20px;">
+            If the session is cleared and page2 is directly called 
+            (/faces/page2.xhtml) an exception will occur:
+            <br/>
+            java.lang.IllegalStateException: PWC3999: Cannot create a session after the response has been committed
+            <br/>
+            <br/>
+            It seems to be the same problem with the chunked response. As 
+            page2 is large enough to be chunked and contains a form an 
+            exception seems to occur when the session for Server-Side State 
+            Saving is created.
+        </h:panelGroup>
+        <h:form id="form">
+            <h:commandLink id="link1" actionListener="#{issue2332Bean.test}" value="Add value to flash per Ajax">
+                <f:ajax execute="@this" render="flashSection" />
+            </h:commandLink>
+            <br/>
+            <h:commandLink id="link2" action="#{issue2332Bean.test2}" value="Navigate to Page 2"/>
+            <br/>
+            <h:panelGroup layout="block" id="flashSection">
+                <h:panelGroup rendered="#{flash.flashContent != null}">
+
+                    Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore 
+                    et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. 
+                    Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit
+                    amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam 
+
+                    Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et 
+                    dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. 
+                    Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, 
+                    consetetur sadipscing elitr, sed diam nonumy eirmod tempor 
+                    invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et 
+                    justo duo dolores et ea rebum. Stet clita kasd gubergren
+
+                    Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore 
+                    et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. 
+                    Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit
+                    amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam 
+
+                    Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et 
+                    dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. 
+                    Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, 
+                    consetetur sadipscing elitr, sed diam nonumy eirmod tempor 
+                    invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et 
+                    justo duo dolores et ea rebum. Stet clita kasd gubergren
+
+                    Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore 
+                    et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. 
+                    Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit
+                    amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam 
+
+                    Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et 
+                    dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. 
+                    Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, 
+                    consetetur sadipscing elitr, sed diam nonumy eirmod tempor 
+                    invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et 
+                    justo duo dolores et ea rebum. Stet clita kasd gubergren
+
+                    Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore 
+                    et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. 
+                    Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit
+                    amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam 
+
+                    Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et 
+                    dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. 
+                    Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, 
+                    consetetur sadipscing elitr, sed diam nonumy eirmod tempor 
+                    invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et 
+                    justo duo dolores et ea rebum. Stet clita kasd gubergren
+
+                    Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore 
+                    et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. 
+                    Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit
+                    amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam 
+
+                    Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et 
+                    dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. 
+                    Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, 
+                    consetetur sadipscing elitr, sed diam nonumy eirmod tempor 
+                    invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et 
+                    justo duo dolores et ea rebum. Stet clita kasd gubergren
+
+
+                    Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et 
+                    dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. 
+                    Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, 
+                    consetetur sadipscing elitr, sed diam nonumy eirmod tempor 
+                    invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et 
+                    justo duo dolores et ea rebum. Stet clita kasd gubergren
+
+
+                    Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et 
+                    dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. 
+                    Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, 
+                    consetetur sadipscing elitr, sed diam nonumy eirmod tempor 
+                    invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et 
+                    justo duo dolores et ea rebum. Stet clita kasd gubergren
+
+                    Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et 
+                    dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. 
+                    Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, 
+                    consetetur sadipscing elitr, sed diam nonumy eirmod tempor 
+                    invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et 
+                    justo duo dolores et ea rebum. Stet clita kasd gubergren
+
+                    Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et 
+                    dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. 
+                    Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, 
+                    consetetur sadipscing elitr, sed diam nonumy eirmod tempor 
+                    invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et 
+                    justo duo dolores et ea rebum. Stet clita kasd gubergren
+
+                    Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et 
+                    dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. 
+                    Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, 
+                    consetetur sadipscing elitr, sed diam nonumy eirmod tempor 
+                    invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et 
+                    justo duo dolores et ea rebum. Stet clita kasd gubergren
+
+                    <div>#{flash.keep.flashContent}</div>
+                </h:panelGroup>
+            </h:panelGroup>
+        </h:form>
+    </h:body>
+</html>
+
diff --git a/test/agnostic/flash/chunkRedirect/src/main/webapp/issue2136/issue2136.xhtml b/test/agnostic/flash/chunkRedirect/src/main/webapp/issue2136/issue2136.xhtml
new file mode 100644
index 0000000..5011f5e
--- /dev/null
+++ b/test/agnostic/flash/chunkRedirect/src/main/webapp/issue2136/issue2136.xhtml
@@ -0,0 +1,16 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    <h:head>
+        <title>Issue 2136</title>
+    </h:head>
+    <h:body>
+        <h:form id="form">
+            Value to submit:<h:inputText id="input" value="#{issue2136Bean.value}"/><br/>
+            <p>Submit with faces-redirect to page in different directory (Why does this not work?)</p>
+            <h:commandButton id="submit" action="/faces/issue2136b/issue2136b.xhtml?faces-redirect=true" value="Ok"/>
+        </h:form>
+    </h:body>
+</html>
diff --git a/test/agnostic/flash/chunkRedirect/src/main/webapp/issue2136b/issue2136b.xhtml b/test/agnostic/flash/chunkRedirect/src/main/webapp/issue2136b/issue2136b.xhtml
new file mode 100644
index 0000000..78f71f2
--- /dev/null
+++ b/test/agnostic/flash/chunkRedirect/src/main/webapp/issue2136b/issue2136b.xhtml
@@ -0,0 +1,15 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!DOCTYPE html PUBLIC 
+    "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title>Issue 2136b</title>
+    </h:head>
+    <h:body>
+        <h:outputText value="#{issue2136Bean.flashValue}"/>
+    </h:body>
+</html>
diff --git a/test/agnostic/flash/chunkRedirect/src/main/webapp/page2.xhtml b/test/agnostic/flash/chunkRedirect/src/main/webapp/page2.xhtml
new file mode 100644
index 0000000..50714ca
--- /dev/null
+++ b/test/agnostic/flash/chunkRedirect/src/main/webapp/page2.xhtml
@@ -0,0 +1,370 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title>Facelet Title</title>
+    </h:head>
+    <h:body>
+        <h:form>
+
+
+            Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore 
+            et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. 
+            Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit
+            amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam 
+
+            Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et 
+            dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. 
+            Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, 
+            consetetur sadipscing elitr, sed diam nonumy eirmod tempor 
+            invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et 
+            justo duo dolores et ea rebum. Stet clita kasd gubergren
+
+            Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore 
+            et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. 
+            Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit
+            amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam 
+
+            Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et 
+            dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. 
+            Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, 
+            consetetur sadipscing elitr, sed diam nonumy eirmod tempor 
+            invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et 
+            justo duo dolores et ea rebum. Stet clita kasd gubergren
+
+            Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore 
+            et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. 
+            Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit
+            amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam 
+
+            Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et 
+            dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. 
+            Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, 
+            consetetur sadipscing elitr, sed diam nonumy eirmod tempor 
+            invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et 
+            justo duo dolores et ea rebum. Stet clita kasd gubergren
+
+            Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore 
+            et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. 
+            Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit
+            amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam 
+
+            Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et 
+            dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. 
+            Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, 
+            consetetur sadipscing elitr, sed diam nonumy eirmod tempor 
+            invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et 
+            justo duo dolores et ea rebum. Stet clita kasd gubergren
+
+            Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore 
+            et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. 
+            Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit
+            amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam 
+
+            Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et 
+            dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. 
+            Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, 
+            consetetur sadipscing elitr, sed diam nonumy eirmod tempor 
+            invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et 
+            justo duo dolores et ea rebum. Stet clita kasd gubergren
+
+            Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore 
+            et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. 
+            Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit
+            amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam 
+
+            Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et 
+            dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. 
+            Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, 
+            consetetur sadipscing elitr, sed diam nonumy eirmod tempor 
+            invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et 
+            justo duo dolores et ea rebum. Stet clita kasd gubergren
+
+            Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore 
+            et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. 
+            Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit
+            amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam 
+
+            Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et 
+            dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. 
+            Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, 
+            consetetur sadipscing elitr, sed diam nonumy eirmod tempor 
+            invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et 
+            justo duo dolores et ea rebum. Stet clita kasd gubergren
+
+            Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore 
+            et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. 
+            Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit
+            amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam 
+
+            Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et 
+            dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. 
+            Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, 
+            consetetur sadipscing elitr, sed diam nonumy eirmod tempor 
+            invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et 
+            justo duo dolores et ea rebum. Stet clita kasd gubergren
+
+            Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore 
+            et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. 
+            Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit
+            amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam 
+
+            Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et 
+            dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. 
+            Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, 
+            consetetur sadipscing elitr, sed diam nonumy eirmod tempor 
+            invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et 
+            justo duo dolores et ea rebum. Stet clita kasd gubergren
+
+            Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore 
+            et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. 
+            Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit
+            amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam 
+
+            Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et 
+            dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. 
+            Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, 
+            consetetur sadipscing elitr, sed diam nonumy eirmod tempor 
+            invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et 
+            justo duo dolores et ea rebum. Stet clita kasd gubergren
+
+            Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore 
+            et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. 
+            Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit
+            amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam 
+
+            Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et 
+            dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. 
+            Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, 
+            consetetur sadipscing elitr, sed diam nonumy eirmod tempor 
+            invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et 
+            justo duo dolores et ea rebum. Stet clita kasd gubergren
+
+            Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore 
+            et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. 
+            Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit
+            amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam 
+
+            Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et 
+            dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. 
+            Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, 
+            consetetur sadipscing elitr, sed diam nonumy eirmod tempor 
+            invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et 
+            justo duo dolores et ea rebum. Stet clita kasd gubergren
+
+            Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore 
+            et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. 
+            Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit
+            amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam 
+
+            Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et 
+            dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. 
+            Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, 
+            consetetur sadipscing elitr, sed diam nonumy eirmod tempor 
+            invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et 
+            justo duo dolores et ea rebum. Stet clita kasd gubergren
+            Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore 
+            et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. 
+            Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit
+            amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam 
+
+            Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et 
+            dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. 
+            Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, 
+            consetetur sadipscing elitr, sed diam nonumy eirmod tempor 
+            invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et 
+            justo duo dolores et ea rebum. Stet clita kasd gubergren
+
+            Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore 
+            et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. 
+            Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit
+            amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam 
+
+            Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et 
+            dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. 
+            Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, 
+            consetetur sadipscing elitr, sed diam nonumy eirmod tempor 
+            invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et 
+            justo duo dolores et ea rebum. Stet clita kasd gubergren
+
+            Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore 
+            et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. 
+            Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit
+            amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam 
+
+            Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et 
+            dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. 
+            Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, 
+            consetetur sadipscing elitr, sed diam nonumy eirmod tempor 
+            invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et 
+            justo duo dolores et ea rebum. Stet clita kasd gubergren
+
+            Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore 
+            et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. 
+            Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit
+            amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam 
+
+            Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et 
+            dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. 
+            Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, 
+            consetetur sadipscing elitr, sed diam nonumy eirmod tempor 
+            invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et 
+            justo duo dolores et ea rebum. Stet clita kasd gubergren
+
+            Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore 
+            et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. 
+            Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit
+            amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam 
+
+            Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et 
+            dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. 
+            Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, 
+            consetetur sadipscing elitr, sed diam nonumy eirmod tempor 
+            invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et 
+            justo duo dolores et ea rebum. Stet clita kasd gubergren
+
+            Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore 
+            et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. 
+            Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit
+            amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam 
+
+            Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et 
+            dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. 
+            Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, 
+            consetetur sadipscing elitr, sed diam nonumy eirmod tempor 
+            invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et 
+            justo duo dolores et ea rebum. Stet clita kasd gubergren
+
+            Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore 
+            et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. 
+            Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit
+            amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam 
+
+            Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et 
+            dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. 
+            Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, 
+            consetetur sadipscing elitr, sed diam nonumy eirmod tempor 
+            invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et 
+            justo duo dolores et ea rebum. Stet clita kasd gubergren
+
+            Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore 
+            et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. 
+            Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit
+            amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam 
+
+            Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et 
+            dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. 
+            Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, 
+            consetetur sadipscing elitr, sed diam nonumy eirmod tempor 
+            invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et 
+            justo duo dolores et ea rebum. Stet clita kasd gubergren
+
+            Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore 
+            et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. 
+            Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit
+            amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam 
+
+            Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et 
+            dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. 
+            Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, 
+            consetetur sadipscing elitr, sed diam nonumy eirmod tempor 
+            invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et 
+            justo duo dolores et ea rebum. Stet clita kasd gubergren
+
+            Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore 
+            et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. 
+            Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit
+            amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam 
+
+            Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et 
+            dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. 
+            Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, 
+            consetetur sadipscing elitr, sed diam nonumy eirmod tempor 
+            invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et 
+            justo duo dolores et ea rebum. Stet clita kasd gubergren
+
+            Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore 
+            et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. 
+            Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit
+            amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam 
+
+            Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et 
+            dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. 
+            Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, 
+            consetetur sadipscing elitr, sed diam nonumy eirmod tempor 
+            invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et 
+            justo duo dolores et ea rebum. Stet clita kasd gubergren
+
+            Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore 
+            et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. 
+            Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit
+            amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam 
+
+            Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et 
+            dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. 
+            Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, 
+            consetetur sadipscing elitr, sed diam nonumy eirmod tempor 
+            invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et 
+            justo duo dolores et ea rebum. Stet clita kasd gubergren
+
+            Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore 
+            et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. 
+            Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit
+            amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam 
+
+            Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et 
+            dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. 
+            Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, 
+            consetetur sadipscing elitr, sed diam nonumy eirmod tempor 
+            invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et 
+            justo duo dolores et ea rebum. Stet clita kasd gubergren
+
+            Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore 
+            et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. 
+            Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit
+            amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam 
+
+            Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et 
+            dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. 
+            Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, 
+            consetetur sadipscing elitr, sed diam nonumy eirmod tempor 
+            invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et 
+            justo duo dolores et ea rebum. Stet clita kasd gubergren
+            Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore 
+            et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. 
+            Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit
+            amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam 
+
+            Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et 
+            dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. 
+            Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, 
+            consetetur sadipscing elitr, sed diam nonumy eirmod tempor 
+            invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et 
+            justo duo dolores et ea rebum. Stet clita kasd gubergren
+
+
+            Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et 
+            dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. 
+            Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, 
+            consetetur sadipscing elitr, sed diam nonumy eirmod tempor 
+            invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et 
+            justo duo dolores et ea rebum. Stet clita kasd gubergren
+            Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore 
+            et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. 
+            Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit
+            amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam 
+
+            Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et 
+            dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. 
+            Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, 
+            consetetur sadipscing elitr, sed diam nonumy eirmod tempor 
+            invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et 
+            justo duo dolores et ea rebum. Stet clita kasd gubergren
+
+            #{flash.keep.flashContent}
+
+        </h:form>
+    </h:body>
+</html>
+
diff --git a/test/agnostic/flash/chunkRedirect/src/test/java/com/sun/faces/test/agnostic/flash/chunkRedirect/Issue2136IT.java b/test/agnostic/flash/chunkRedirect/src/test/java/com/sun/faces/test/agnostic/flash/chunkRedirect/Issue2136IT.java
new file mode 100644
index 0000000..5f34579
--- /dev/null
+++ b/test/agnostic/flash/chunkRedirect/src/test/java/com/sun/faces/test/agnostic/flash/chunkRedirect/Issue2136IT.java
@@ -0,0 +1,79 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.flash.chunkRedirect;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlInput;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import org.junit.*;
+import static org.junit.Assert.*;
+
+/**
+ * Integration tests for issue #2136
+ *
+ * @author Manfred Riem (manfred.riem at oracle.com)
+ */
+public class Issue2136IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testFlashChunkingLink1() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/issue2136/issue2136.xhtml");
+        HtmlInput input = (HtmlInput) page.getElementById("form:input");
+        input.type("12345");
+        HtmlSubmitInput submit = (HtmlSubmitInput) page.getElementById("form:submit");
+        page = submit.click();
+        assertTrue(page.getBody().asText().indexOf("12345") != -1);
+    }
+}
diff --git a/test/agnostic/flash/chunkRedirect/src/test/java/com/sun/faces/test/agnostic/flash/chunkRedirect/Issue2332IT.java b/test/agnostic/flash/chunkRedirect/src/test/java/com/sun/faces/test/agnostic/flash/chunkRedirect/Issue2332IT.java
new file mode 100644
index 0000000..410305d
--- /dev/null
+++ b/test/agnostic/flash/chunkRedirect/src/test/java/com/sun/faces/test/agnostic/flash/chunkRedirect/Issue2332IT.java
@@ -0,0 +1,90 @@
+package com.sun.faces.test.agnostic.flash.chunkRedirect;
+
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlElement;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.*;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+/**
+ * Integration tests for issue #2332
+ *
+ * @author Manfred Riem (manfred.riem at oracle.com)
+ */
+public class Issue2332IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testFlashChunkingLink1() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/index.xhtml");
+        HtmlElement link = page.getHtmlElementById("form:link1");
+        assertNotNull("Unable to find form:link1 element", link);
+        page = link.click();
+        webClient.waitForBackgroundJavaScript(60000);
+        assertTrue(page.getBody().asText().indexOf("== Flash value LINK1 ==") != -1);
+    }
+
+    @Test
+    public void testFlashChunkingLink2() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/index.xhtml");
+        HtmlElement link = page.getHtmlElementById("form:link2");
+        assertNotNull("Unable to find form:link2 element", link);
+        page = link.click();
+        assertTrue(page.getBody().asText().indexOf("== Flash value LINK2 ==") != -1);
+    }
+}
diff --git a/test/agnostic/flash/custom/pom.xml b/test/agnostic/flash/custom/pom.xml
new file mode 100644
index 0000000..1a086c3
--- /dev/null
+++ b/test/agnostic/flash/custom/pom.xml
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <artifactId>pom</artifactId>
+        <groupId>com.sun.faces.test.agnostic.flash</groupId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>  
+    <groupId>com.sun.faces.test.agnostic.flash</groupId>
+    <artifactId>custom</artifactId>
+    <packaging>war</packaging>
+    <name>Mojarra ${project.version} - Test - Agnostic - Flash - Custom Flash</name>  
+    <build>
+        <finalName>test-agnostic-flash-custom</finalName>
+    </build>
+    <properties>
+        <netbeans.hint.deploy.server>gfv3ee6</netbeans.hint.deploy.server>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/test/agnostic/flash/custom/src/main/java/com/sun/faces/test/agnostic/flash/custom/CustomFlash.java b/test/agnostic/flash/custom/src/main/java/com/sun/faces/test/agnostic/flash/custom/CustomFlash.java
new file mode 100644
index 0000000..6299f81
--- /dev/null
+++ b/test/agnostic/flash/custom/src/main/java/com/sun/faces/test/agnostic/flash/custom/CustomFlash.java
@@ -0,0 +1,58 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.flash.custom;
+
+import javax.faces.FacesWrapper;
+import javax.faces.context.Flash;
+import javax.faces.context.FlashWrapper;
+
+public class CustomFlash extends FlashWrapper implements FacesWrapper<Flash> {
+
+    private final Flash parent;
+
+    public CustomFlash(Flash parent) {
+        this.parent = parent;
+    }
+
+    @Override
+    public Flash getWrapped() {
+        return parent;
+    }
+}
diff --git a/test/agnostic/flash/custom/src/main/java/com/sun/faces/test/agnostic/flash/custom/CustomFlashBean.java b/test/agnostic/flash/custom/src/main/java/com/sun/faces/test/agnostic/flash/custom/CustomFlashBean.java
new file mode 100644
index 0000000..79a0235
--- /dev/null
+++ b/test/agnostic/flash/custom/src/main/java/com/sun/faces/test/agnostic/flash/custom/CustomFlashBean.java
@@ -0,0 +1,54 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.flash.custom;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.RequestScoped;
+import javax.faces.context.FacesContext;
+
+ at ManagedBean(name = "customFlashBean")
+ at RequestScoped
+public class CustomFlashBean {
+
+    public String getFlashClassName() {
+        String result = FacesContext.getCurrentInstance().getExternalContext().getFlash().getClass().getName();
+        return result;
+    }
+}
diff --git a/test/agnostic/flash/custom/src/main/java/com/sun/faces/test/agnostic/flash/custom/CustomFlashFactory.java b/test/agnostic/flash/custom/src/main/java/com/sun/faces/test/agnostic/flash/custom/CustomFlashFactory.java
new file mode 100644
index 0000000..a3fe816
--- /dev/null
+++ b/test/agnostic/flash/custom/src/main/java/com/sun/faces/test/agnostic/flash/custom/CustomFlashFactory.java
@@ -0,0 +1,65 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.flash.custom;
+
+import javax.faces.context.Flash;
+import javax.faces.context.FlashFactory;
+
+public class CustomFlashFactory extends FlashFactory {
+
+    private FlashFactory parent;
+
+    public CustomFlashFactory() {
+    }
+    
+    public CustomFlashFactory(FlashFactory parent) {
+        this.parent = parent;
+    }
+
+    @Override
+    public Flash getFlash(boolean create) {
+        return new CustomFlash(getWrapped().getFlash(create));
+    }
+    
+    @Override
+    public FlashFactory getWrapped() {
+        return parent;
+    }
+}
diff --git a/test/agnostic/flash/custom/src/main/webapp/WEB-INF/faces-config.xml b/test/agnostic/flash/custom/src/main/webapp/WEB-INF/faces-config.xml
new file mode 100644
index 0000000..a915613
--- /dev/null
+++ b/test/agnostic/flash/custom/src/main/webapp/WEB-INF/faces-config.xml
@@ -0,0 +1,52 @@
+<?xml version='1.0' encoding='UTF-8'?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<faces-config xmlns="http://xmlns.jcp.org/xml/ns/javaee"
+              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+              xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd"
+              version="2.2">
+    <factory>
+        <flash-factory>com.sun.faces.test.agnostic.flash.custom.CustomFlashFactory</flash-factory>
+    </factory>
+</faces-config>
diff --git a/test/agnostic/flash/custom/src/main/webapp/WEB-INF/glassfish-web.xml b/test/agnostic/flash/custom/src/main/webapp/WEB-INF/glassfish-web.xml
new file mode 100644
index 0000000..3065843
--- /dev/null
+++ b/test/agnostic/flash/custom/src/main/webapp/WEB-INF/glassfish-web.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE glassfish-web-app PUBLIC 
+    "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" 
+    "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
+
+<glassfish-web-app error-url="">
+    <context-root>/test-agnostic-flash-custom</context-root>
+    <class-loader delegate="true"/>
+    <jsp-config>
+        <property name="keepgenerated" value="true">
+            <description>Keep a copy of the generated servlet class' java code.</description>
+        </property>
+    </jsp-config>
+</glassfish-web-app>
diff --git a/test/agnostic/flash/custom/src/main/webapp/WEB-INF/web.xml b/test/agnostic/flash/custom/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..1acad6c
--- /dev/null
+++ b/test/agnostic/flash/custom/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" 
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>${webapp.projectStage}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
+        <param-value>${webapp.partialStateSaving}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>${webapp.stateSavingMethod}</param-value>
+    </context-param>
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <session-config>
+        <session-timeout>30</session-timeout>
+    </session-config>
+    <welcome-file-list>
+        <welcome-file>faces/index.xhtml</welcome-file>
+    </welcome-file-list>
+</web-app>
diff --git a/test/agnostic/flash/custom/src/main/webapp/customflash.xhtml b/test/agnostic/flash/custom/src/main/webapp/customflash.xhtml
new file mode 100644
index 0000000..764d999
--- /dev/null
+++ b/test/agnostic/flash/custom/src/main/webapp/customflash.xhtml
@@ -0,0 +1,17 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title>Custom Flash</title>
+    </h:head>
+    <h:body>
+        <h:form>
+            <p>Flash class name: #{customFlashBean.flashClassName}</p>
+            <p><h:commandButton value="submit"/></p>
+        </h:form>
+    </h:body>
+</html>
diff --git a/test/agnostic/flash/custom/src/test/java/com/sun/faces/test/agnostic/flash/custom/Spec1071IT.java b/test/agnostic/flash/custom/src/test/java/com/sun/faces/test/agnostic/flash/custom/Spec1071IT.java
new file mode 100644
index 0000000..c368c55
--- /dev/null
+++ b/test/agnostic/flash/custom/src/test/java/com/sun/faces/test/agnostic/flash/custom/Spec1071IT.java
@@ -0,0 +1,71 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.flash.custom;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import java.util.regex.Pattern;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class Spec1071IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testNoDuplicateId() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/customflash.xhtml");
+        assertTrue(Pattern.matches("(?s).*com.sun.faces.test.agnostic.flash.custom.CustomFlash.*", page.asXml()));
+    }
+}
diff --git a/test/agnostic/flash/pom.xml b/test/agnostic/flash/pom.xml
new file mode 100644
index 0000000..f63fa5d
--- /dev/null
+++ b/test/agnostic/flash/pom.xml
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.agnostic</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.agnostic.flash</groupId>
+    <artifactId>pom</artifactId>
+    <packaging>pom</packaging>
+    <name>Mojarra ${project.version} - Test - Agnostic - Flash</name>
+    <modules>
+        <module>basic</module>
+        <module>chunkRedirect</module>
+        <module>custom</module>
+    </modules>
+</project>
diff --git a/test/agnostic/lifecycle/basic/nbactions.xml b/test/agnostic/lifecycle/basic/nbactions.xml
new file mode 100644
index 0000000..6cb7cae
--- /dev/null
+++ b/test/agnostic/lifecycle/basic/nbactions.xml
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--><actions>
+        <action>
+            <actionName>debug.test.single</actionName>
+            <goals>
+                <goal>test-compile</goal>
+                <goal>surefire:test</goal>
+            </goals>
+            <properties>
+                <test>${packageClassName}</test>
+                <forkMode>once</forkMode>
+                <maven.surefire.debug>-Xdebug -Xrunjdwp:transport=dt_socket,server=n,address=${jpda.address}</maven.surefire.debug>
+                <jpda.listen>true</jpda.listen>
+                <project.build.finalName>test-agnostic-lifecycle-basic</project.build.finalName>
+                <integration.serverPort>8080</integration.serverPort>
+                <integration.serverName>localhost</integration.serverName>
+                <integration.url>http://localhost:8080/test-agnostic-lifecycle-basic/</integration.url>
+            </properties>
+        </action>
+        <action>
+            <actionName>test.single</actionName>
+            <goals>
+                <goal>test-compile</goal>
+                <goal>surefire:test</goal>
+            </goals>
+            <properties>
+                <project.build.finalName>test-agnostic-lifecycle-basic</project.build.finalName>
+                <integration.serverPort>8080</integration.serverPort>
+                <integration.serverName>localhost</integration.serverName>
+                <integration.url>http://localhost:8080/test-agnostic-lifecycle-basic/</integration.url>
+                <test>${packageClassName}</test>
+            </properties>
+        </action>
+    </actions>
diff --git a/test/agnostic/lifecycle/basic/pom.xml b/test/agnostic/lifecycle/basic/pom.xml
new file mode 100644
index 0000000..bc73111
--- /dev/null
+++ b/test/agnostic/lifecycle/basic/pom.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.agnostic.lifecycle</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.agnostic.lifecycle</groupId>
+    <artifactId>basic</artifactId>
+    <packaging>war</packaging>
+    <name>Mojarra ${project.version} - Test - Agnostic - Lifecycle - Basic Tests</name>
+    <build>
+        <finalName>test-agnostic-lifecycle-basic</finalName>
+    </build>
+    <properties>
+        <netbeans.hint.deploy.server>gfv3ee6</netbeans.hint.deploy.server>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/test/agnostic/lifecycle/basic/src/main/java/com/sun/faces/test/lifecycle/basic/DocumentPopulator.java b/test/agnostic/lifecycle/basic/src/main/java/com/sun/faces/test/lifecycle/basic/DocumentPopulator.java
new file mode 100644
index 0000000..fd6bc4b
--- /dev/null
+++ b/test/agnostic/lifecycle/basic/src/main/java/com/sun/faces/test/lifecycle/basic/DocumentPopulator.java
@@ -0,0 +1,79 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.test.lifecycle.basic;
+
+import javax.faces.application.ApplicationConfigurationPopulator;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+public class DocumentPopulator extends ApplicationConfigurationPopulator {
+    
+    /**
+     * <p>/faces-config/lifecycle</p>
+     */
+    private static final String LIFECYCLE = "lifecycle";
+    
+    /**
+     * <p>/faces-config/lifecycle/phase-listener</p>
+     */
+    private static final String PHASE_LISTENER = "phase-listener";
+
+    @Override
+    public void populateApplicationConfiguration(Document document) {
+        Element documentElement = document.getDocumentElement();
+        String namespace = documentElement.getNamespaceURI();
+        final String expectedNamespaceURI = "http://xmlns.jcp.org/xml/ns/javaee";
+        if (!expectedNamespaceURI.equals(namespace)) {
+            throw new IllegalStateException("Unexpected namespace");
+        }
+        Element lifecycleElement = document.createElementNS(namespace, LIFECYCLE);
+        Element phaseListenerElement = document.createElementNS(namespace, PHASE_LISTENER);
+        Node phaseListenerNode = document.createTextNode("com.sun.faces.test.lifecycle.basic.MyPhaseListener");
+        phaseListenerElement.appendChild(phaseListenerNode);
+        lifecycleElement.appendChild(phaseListenerElement);
+        documentElement.appendChild(lifecycleElement);
+        
+        
+        
+    }
+    
+}
diff --git a/test/agnostic/lifecycle/basic/src/main/java/com/sun/faces/test/lifecycle/basic/MyPhaseListener.java b/test/agnostic/lifecycle/basic/src/main/java/com/sun/faces/test/lifecycle/basic/MyPhaseListener.java
new file mode 100644
index 0000000..351f283
--- /dev/null
+++ b/test/agnostic/lifecycle/basic/src/main/java/com/sun/faces/test/lifecycle/basic/MyPhaseListener.java
@@ -0,0 +1,68 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.test.lifecycle.basic;
+
+import javax.faces.event.PhaseListener;
+import javax.faces.event.PhaseEvent;
+import javax.faces.event.PhaseId;
+
+public class MyPhaseListener implements PhaseListener {
+
+    @Override
+    public void afterPhase(PhaseEvent event) {
+        event.getFacesContext().getExternalContext().getRequestMap().put("message", "MyPhaseListener called");
+    }
+
+    @Override
+    public void beforePhase(PhaseEvent event) {
+        
+    }
+
+    @Override
+    public PhaseId getPhaseId() {
+        PhaseId result = PhaseId.ANY_PHASE;
+        
+        return result;
+    }
+    
+    
+    
+}
diff --git a/test/agnostic/lifecycle/basic/src/main/java/com/sun/faces/test/lifecycle/basic/Spec1129ResetInputBean.java b/test/agnostic/lifecycle/basic/src/main/java/com/sun/faces/test/lifecycle/basic/Spec1129ResetInputBean.java
new file mode 100644
index 0000000..b63595d
--- /dev/null
+++ b/test/agnostic/lifecycle/basic/src/main/java/com/sun/faces/test/lifecycle/basic/Spec1129ResetInputBean.java
@@ -0,0 +1,70 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.test.lifecycle.basic;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.RequestScoped;
+
+ at ManagedBean
+ at RequestScoped
+public class Spec1129ResetInputBean {
+    
+private String firstname = "Alice", surname;
+
+    public String getFirstname() {
+        return firstname;
+    }
+
+    public void setFirstname(String firstname) {
+        this.firstname = firstname;
+    }
+
+    public String getSurname() {
+        return surname;
+    }
+
+    public void setSurname(String surname) {
+        this.surname = surname;
+    }
+
+public void reset() { firstname = null; surname = null; }    
+    
+}
diff --git a/test/agnostic/lifecycle/basic/src/main/java/com/sun/faces/test/lifecycle/basic/TestBean.java b/test/agnostic/lifecycle/basic/src/main/java/com/sun/faces/test/lifecycle/basic/TestBean.java
new file mode 100644
index 0000000..f57484f
--- /dev/null
+++ b/test/agnostic/lifecycle/basic/src/main/java/com/sun/faces/test/lifecycle/basic/TestBean.java
@@ -0,0 +1,71 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.test.lifecycle.basic;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.RequestScoped;
+
+ at ManagedBean
+ at RequestScoped
+public class TestBean {
+    
+    private Integer input1;
+    private Integer input2 = 1;
+
+    public Integer getInput1() {
+        return input1;
+    }
+
+    public void setInput1(Integer input1) {
+        this.input1 = input1;
+    }
+
+    public Integer getInput2() {
+        return input2;
+    }
+
+    public void setInput2(Integer input2) {
+        this.input2 = input2;
+    }
+    
+    
+    
+}
diff --git a/test/agnostic/lifecycle/basic/src/main/webapp/WEB-INF/classes/META-INF/services/javax.faces.application.ApplicationConfigurationPopulator b/test/agnostic/lifecycle/basic/src/main/webapp/WEB-INF/classes/META-INF/services/javax.faces.application.ApplicationConfigurationPopulator
new file mode 100644
index 0000000..0da22dc
--- /dev/null
+++ b/test/agnostic/lifecycle/basic/src/main/webapp/WEB-INF/classes/META-INF/services/javax.faces.application.ApplicationConfigurationPopulator
@@ -0,0 +1 @@
+com.sun.faces.test.lifecycle.basic.DocumentPopulator
diff --git a/test/agnostic/lifecycle/basic/src/main/webapp/WEB-INF/glassfish-web.xml b/test/agnostic/lifecycle/basic/src/main/webapp/WEB-INF/glassfish-web.xml
new file mode 100644
index 0000000..7cd743c
--- /dev/null
+++ b/test/agnostic/lifecycle/basic/src/main/webapp/WEB-INF/glassfish-web.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
+<glassfish-web-app error-url="">
+  <context-root>/test-agnostic-lifecycle-basic</context-root>
+  <class-loader delegate="true"/>
+  <jsp-config>
+    <property name="keepgenerated" value="true">
+      <description>Keep a copy of the generated servlet class' java code.</description>
+    </property>
+  </jsp-config>
+</glassfish-web-app>
diff --git a/test/agnostic/lifecycle/basic/src/main/webapp/WEB-INF/web.xml b/test/agnostic/lifecycle/basic/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..95cf654
--- /dev/null
+++ b/test/agnostic/lifecycle/basic/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>${webapp.projectStage}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
+        <param-value>${webapp.partialStateSaving}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>${webapp.stateSavingMethod}</param-value>
+    </context-param>
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <session-config>
+        <session-timeout>30</session-timeout>
+    </session-config>
+    <welcome-file-list>
+        <welcome-file>faces/index.xhtml</welcome-file>
+    </welcome-file-list>
+</web-app>
diff --git a/test/agnostic/lifecycle/basic/src/main/webapp/index.xhtml b/test/agnostic/lifecycle/basic/src/main/webapp/index.xhtml
new file mode 100644
index 0000000..5481e3d
--- /dev/null
+++ b/test/agnostic/lifecycle/basic/src/main/webapp/index.xhtml
@@ -0,0 +1,55 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title>Test Programmatic Document Configuration</title>
+    </h:head>
+    <h:body>
+        <p>Test Programmatic Document Configuration</p>
+        
+        <p>message: #{message}</p>
+    </h:body>
+</html>
+
diff --git a/test/agnostic/lifecycle/basic/src/main/webapp/spec1129_resetInput_01.xhtml b/test/agnostic/lifecycle/basic/src/main/webapp/spec1129_resetInput_01.xhtml
new file mode 100644
index 0000000..493ec6a
--- /dev/null
+++ b/test/agnostic/lifecycle/basic/src/main/webapp/spec1129_resetInput_01.xhtml
@@ -0,0 +1,87 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    <h:head id="head"/>
+<h:form id="form" prependId="false" >
+
+<h:messages />
+
+<p>
+<h:inputText id="firstname" value="#{spec1129ResetInputBean.firstname}" required="true" />
+</p>
+
+<p>
+<h:inputText id="surname" value="#{spec1129ResetInputBean.surname}" required="true"/>
+</p>
+
+<p>
+<h:commandButton id="save" value="Ajax Save">
+    <f:ajax render="@form" execute="@form" />
+</h:commandButton>
+</p>
+
+<p>
+<h:commandButton id="nonAjaxSave" value="Non-Ajax Save" />
+</p>
+
+<p>
+<h:commandButton id="reset" value="Ajax Reset" actionListener="#{spec1129ResetInputBean.reset}">
+    <f:ajax render="firstname surname" execute="@this" resetValues="true" />
+</h:commandButton>
+</p>
+
+<p>
+<h:commandButton id="nonAjaxReset" immediate="true" value="Non-Ajax Reset">
+    <f:resetValues render="firstname surname" />
+</h:commandButton>
+</p>
+
+<h:outputText value="#{spec1129ResetInputBean.firstname}" id="display" />
+
+</h:form>    
+    
+</html>
+
diff --git a/test/agnostic/lifecycle/basic/src/main/webapp/spec566.xhtml b/test/agnostic/lifecycle/basic/src/main/webapp/spec566.xhtml
new file mode 100644
index 0000000..4c721dc
--- /dev/null
+++ b/test/agnostic/lifecycle/basic/src/main/webapp/spec566.xhtml
@@ -0,0 +1,83 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    <h:head>
+        <title>UIOutput.getValue()</title>
+    </h:head>
+    <h:body>
+        <p>UIOutput.getValue()</p>
+        
+        <h:form prependId="false">
+            
+            <p>
+                <h:inputText id="input1" value="#{testBean.input1}" />
+                <span id="input1Message"><h:message for="input1"/></span>
+            </p>
+            
+            
+            <p>
+                <h:inputText id="input2" value="#{testBean.input2}" />
+                <span id="input2Message"><h:message for="input2"/></span>
+            </p>
+
+            <ul>
+                
+                <li>Fill in valid number values and submit form.</li>
+                
+                <li>Remove the value from first field and enter an invalid value 
+                    (with an alphabetic character, for example) in second field and submit form.</li>
+                
+            </ul>
+            
+            <p>Expected behavior: Form redisplays with exactly the submitted values in both fields.</p>
+            
+            <h:commandButton value="reload" id="reload"/>
+        </h:form>
+        
+        
+    </h:body>
+</html>
+
diff --git a/test/agnostic/lifecycle/basic/src/test/java/com/sun/faces/test/agnostic/lifeycle/basic/Spec533IT.java b/test/agnostic/lifecycle/basic/src/test/java/com/sun/faces/test/agnostic/lifeycle/basic/Spec533IT.java
new file mode 100644
index 0000000..837f8da
--- /dev/null
+++ b/test/agnostic/lifecycle/basic/src/test/java/com/sun/faces/test/agnostic/lifeycle/basic/Spec533IT.java
@@ -0,0 +1,73 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDLGPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.lifeycle.basic;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+
+import static org.junit.Assert.assertTrue;
+
+public class Spec533IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testConfigurationEffective() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl);
+        String pageText = page.getBody().asText();
+        // http://java.net/jira/browse/JAVASERVERFACES-2509
+        assertTrue(pageText.contains("MyPhaseListener called"));
+    }
+}
diff --git a/test/agnostic/lifecycle/basic/src/test/java/com/sun/faces/test/agnostic/lifeycle/basic/Spec566IT.java b/test/agnostic/lifecycle/basic/src/test/java/com/sun/faces/test/agnostic/lifeycle/basic/Spec566IT.java
new file mode 100644
index 0000000..172dac6
--- /dev/null
+++ b/test/agnostic/lifecycle/basic/src/test/java/com/sun/faces/test/agnostic/lifeycle/basic/Spec566IT.java
@@ -0,0 +1,93 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDLGPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.lifeycle.basic;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlElement;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
+import org.junit.After;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+import org.junit.Before;
+import org.junit.Test;
+
+public class Spec566IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testConfigurationEffective() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/spec566.xhtml");
+        HtmlTextInput input1 = (HtmlTextInput) page.getHtmlElementById("input1");
+        input1.setTextContent("3");
+        HtmlTextInput input2 = (HtmlTextInput) page.getHtmlElementById("input2");
+        input2.setTextContent("4");               
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getHtmlElementById("reload");       
+        page = button.click();       
+        input1 = (HtmlTextInput) page.getHtmlElementById("input1");
+        input1.setValueAttribute("");
+        input2 = (HtmlTextInput) page.getHtmlElementById("input2");
+        input2.setValueAttribute("abcd");       
+        button = (HtmlSubmitInput) page.getHtmlElementById("reload");       
+        page = button.click();        
+        HtmlElement message1 = page.getHtmlElementById("input1Message");
+        assertTrue(!message1.getTextContent().contains("input1:"));        
+        HtmlElement message2 = page.getHtmlElementById("input2Message");
+        assertTrue(message2.getTextContent().contains("input2:"));       
+        input1 = (HtmlTextInput) page.getElementById("input1");
+        assertEquals(0, input1.getTextContent().length());
+        input2 = (HtmlTextInput) page.getElementById("input2");
+        assertEquals("abcd", input2.getValueAttribute());
+    }
+}
diff --git a/test/agnostic/lifecycle/clientWindow/nbactions.xml b/test/agnostic/lifecycle/clientWindow/nbactions.xml
new file mode 100644
index 0000000..772d87c
--- /dev/null
+++ b/test/agnostic/lifecycle/clientWindow/nbactions.xml
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--><actions>
+        <action>
+            <actionName>debug.test.single</actionName>
+            <goals>
+                <goal>test-compile</goal>
+                <goal>surefire:test</goal>
+            </goals>
+            <properties>
+                <test>${packageClassName}</test>
+                <forkMode>once</forkMode>
+                <maven.surefire.debug>-Xdebug -Xrunjdwp:transport=dt_socket,server=n,address=${jpda.address}</maven.surefire.debug>
+                <jpda.listen>true</jpda.listen>
+                <project.build.finalName>test-agnostic-lifecycle-clientWindow</project.build.finalName>
+                <integration.serverPort>8080</integration.serverPort>
+                <integration.serverName>localhost</integration.serverName>
+                <integration.url>http://localhost:8080/test-agnostic-lifecycle-clientWindow/</integration.url>
+            </properties>
+        </action>
+        <action>
+            <actionName>test.single</actionName>
+            <goals>
+                <goal>test-compile</goal>
+                <goal>surefire:test</goal>
+            </goals>
+            <properties>
+                <project.build.finalName>test-agnostic-lifecycle-clientWindow</project.build.finalName>
+                <integration.serverPort>8080</integration.serverPort>
+                <integration.serverName>localhost</integration.serverName>
+                <integration.url>http://localhost:8080/test-agnostic-lifecycle-clientWindow/</integration.url>
+                <test>${packageClassName}</test>
+            </properties>
+        </action>
+    </actions>
diff --git a/test/agnostic/lifecycle/clientWindow/pom.xml b/test/agnostic/lifecycle/clientWindow/pom.xml
new file mode 100644
index 0000000..d9441eb
--- /dev/null
+++ b/test/agnostic/lifecycle/clientWindow/pom.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.agnostic.lifecycle</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.agnostic.lifecycle</groupId>
+    <artifactId>clientWindow</artifactId>
+    <packaging>war</packaging>
+    <name>Mojarra ${project.version} - Test - Agnostic - Lifecycle - ClientWindow Tests</name>
+    <build>
+        <finalName>test-agnostic-lifecycle-clientWindow</finalName>
+    </build>
+    <properties>
+        <netbeans.hint.deploy.server>gfv3ee6</netbeans.hint.deploy.server>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/test/agnostic/lifecycle/clientWindow/src/main/java/com/sun/faces/test/agnostic/lifecycle/clientWindow/UserBean.java b/test/agnostic/lifecycle/clientWindow/src/main/java/com/sun/faces/test/agnostic/lifecycle/clientWindow/UserBean.java
new file mode 100644
index 0000000..63032e3
--- /dev/null
+++ b/test/agnostic/lifecycle/clientWindow/src/main/java/com/sun/faces/test/agnostic/lifecycle/clientWindow/UserBean.java
@@ -0,0 +1,92 @@
+package com.sun.faces.test.agnostic.lifecycle.clientWindow;
+
+import java.io.Serializable;
+import java.util.Date;
+import javax.faces.application.FacesMessage;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.SessionScoped;
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.validator.ValidatorException;
+
+ at ManagedBean
+ at SessionScoped
+public class UserBean implements Serializable {
+    
+    protected String firstName = "Duke";
+    protected String lastName = "Java";
+    protected Date dob;
+    protected String sex = "Unknown";
+    protected String email;
+    protected String serviceLevel = "medium";
+    
+    public UserBean() {}
+
+    public String getFirstName() {
+        return firstName;
+    }
+
+    public void setFirstName(String firstName) {
+        this.firstName = firstName;
+    }
+
+    public String getLastName() {
+        return lastName;
+    }
+
+    public void setLastName(String lastName) {
+        this.lastName = lastName;
+    }
+
+    public Date getDob() {
+        return dob;
+    }
+
+    public void setDob(Date dob) {
+        this.dob = dob;
+    }
+
+    public String getSex() {
+        return sex;
+    }
+
+    public void setSex(String sex) {
+        this.sex = sex;
+    }
+
+    public String getEmail() {
+        return email;
+    }
+
+    public void setEmail(String email) {
+        this.email = email;
+    }
+
+    public String getServiceLevel() {
+        return serviceLevel;
+    }
+
+    public void setServiceLevel(String serviceLevel) {
+        this.serviceLevel = serviceLevel;
+    }
+    
+    public void validateEmail(FacesContext context, UIComponent toValidate,
+            Object value) throws ValidatorException {
+        String emailStr = (String) value;
+        if (-1 == emailStr.indexOf("@")) {
+            FacesMessage message = new FacesMessage("Invalid email address");
+            throw new ValidatorException(message);
+        }
+    }
+
+    public String addConfirmedUser() {
+        // This method would call a database or other service and add the 
+        // confirmed user information.
+        // For now, we just place an informative message in request scope
+        FacesMessage doneMessage = 
+                new FacesMessage("Successfully added new user");
+        FacesContext.getCurrentInstance().addMessage(null, doneMessage);
+        return "done";
+    }
+}
+
diff --git a/test/agnostic/lifecycle/clientWindow/src/main/webapp/WEB-INF/glassfish-web.xml b/test/agnostic/lifecycle/clientWindow/src/main/webapp/WEB-INF/glassfish-web.xml
new file mode 100644
index 0000000..f41b39d
--- /dev/null
+++ b/test/agnostic/lifecycle/clientWindow/src/main/webapp/WEB-INF/glassfish-web.xml
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<glassfish-web-app error-url="">
+  <context-root>/test-agnostic-lifecycle-clientWindow</context-root>
+  <class-loader delegate="true"/>
+  <jsp-config>
+    <property name="keepgenerated" value="true">
+      <description>Keep a copy of the generated servlet class' java code.</description>
+    </property>
+  </jsp-config>
+</glassfish-web-app>
diff --git a/test/agnostic/lifecycle/clientWindow/src/main/webapp/WEB-INF/web.xml b/test/agnostic/lifecycle/clientWindow/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..a06c4e6
--- /dev/null
+++ b/test/agnostic/lifecycle/clientWindow/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+    <display-name>mojarra-regression-test</display-name>
+    <description>A simple regression test to make it easier to get your bug fixed. The only reason we need a web.xml is to set the PROJECT_STAGE to Develoment.  If you have a web.xml, then you need to map the FacesServlet.</description>
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>${webapp.projectStage}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
+        <param-value>${webapp.partialStateSaving}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>${webapp.stateSavingMethod}</param-value>
+    </context-param>
+    <!-- Faces Servlet -->
+    <context-param>
+        <param-name>javax.faces.CLIENT_WINDOW_MODE</param-name>
+        <param-value>url</param-value>
+    </context-param>
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <welcome-file-list>
+        <welcome-file>faces/main.xhtml</welcome-file>
+    </welcome-file-list>
+</web-app>
diff --git a/test/agnostic/lifecycle/clientWindow/src/main/webapp/disableClientWindow.xhtml b/test/agnostic/lifecycle/clientWindow/src/main/webapp/disableClientWindow.xhtml
new file mode 100644
index 0000000..8345479
--- /dev/null
+++ b/test/agnostic/lifecycle/clientWindow/src/main/webapp/disableClientWindow.xhtml
@@ -0,0 +1,63 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+<h:head>
+  <title>disableClientWindow</title>
+</h:head>
+<h:body>
+    
+  <h:form prependId="false">
+      <p><h:link id="disableClientWindowEL" value="page2 via link disableClientWindowFrom EL" outcome="page2" disableClientWindow="#{null != facesContext}" /></p>
+      
+      <p><h:link id="disableClientWindowLiteral" value="page2 via link disableClientWindow from literal" outcome="page2" disableClientWindow="true" /></p>
+      
+      <p><h:button id="disableClientWindowButtonEL" value="page2 via button disableClientWindowFrom EL" outcome="page2" disableClientWindow="#{null != facesContext}" /></p>
+      
+      <p><h:button id="disableClientWindowButtonLiteral" value="page2 via button disableClientWindow from literal" outcome="page2" disableClientWindow="true" /></p>
+  </h:form>
+</h:body>
+</html>
diff --git a/test/agnostic/lifecycle/clientWindow/src/main/webapp/main.xhtml b/test/agnostic/lifecycle/clientWindow/src/main/webapp/main.xhtml
new file mode 100644
index 0000000..4459daf
--- /dev/null
+++ b/test/agnostic/lifecycle/clientWindow/src/main/webapp/main.xhtml
@@ -0,0 +1,94 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+<h:head>
+  <title>A Simple JavaServer Faces 2.0 View</title>
+</h:head>
+<h:body>
+    <script type="text/javascript">
+        //<![CDATA[
+        var clientWindow = "";
+        var callGetClientWindow = function callGetClientWindow() {
+            clientWindow = jsf.getClientWindow(document.forms[0]);
+            var echoClientWindow = document.getElementById("echoClientWindow");
+            echoClientWindow.innerHTML = "<b>" + clientWindow + "</b>";
+            return true;
+        }
+        //]]>        
+        
+    </script>
+    
+    
+  <h:form prependId="false">
+      First name: <h:inputText id="firstName" value="#{userBean.firstName}" /> Last name: #{userBean.lastName}
+      <p><h:commandButton id="submitAjax" value="submitAjax" onclick="callGetClientWindow()">
+              <f:ajax execute="@form" render="echoPanel" />
+          </h:commandButton>
+    
+    </p>
+      <p><h:commandButton id="submitNonAjax" value="submitNonAjax" /> </p>
+      
+      <p><h:commandLink id="commandLink" value="page2 via commandLink" 
+                        action="page2" /></p>
+      <p><h:link id="outcomeTargetLink" value="page2 via link" outcome="page2" /></p>
+      
+      <p><h:button id="outcomeTargetButton" value="page2 via button" outcome="page2" /></p>
+
+      <p><input type="submit" id="getClientWindow" onclick="callGetClientWindow(); return false;"
+                name="getClientWindow" value="getClientWindow" /></p>
+    
+    <h:panelGroup id="echoPanel">
+        
+        |#{userBean.firstName}|
+        
+    </h:panelGroup>
+      
+      <p>|ClientWindow: <span id="echoClientWindow" />|</p>
+      
+  </h:form>
+</h:body>
+</html>
diff --git a/test/agnostic/lifecycle/clientWindow/src/main/webapp/page2.xhtml b/test/agnostic/lifecycle/clientWindow/src/main/webapp/page2.xhtml
new file mode 100644
index 0000000..66d7c5f
--- /dev/null
+++ b/test/agnostic/lifecycle/clientWindow/src/main/webapp/page2.xhtml
@@ -0,0 +1,79 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title>page 2</title>
+        <h:outputScript library="javax.faces" name="jsf.js" />
+    </h:head>
+    <h:body>
+    <script type="text/javascript">
+        //<![CDATA[
+        var clientWindow = "";
+        var callGetClientWindow = function callGetClientWindow() {
+            clientWindow = jsf.getClientWindow(document.forms[0]);
+            var echoClientWindow = document.getElementById("echoClientWindow");
+            echoClientWindow.innerHTML = "<b>" + clientWindow + "</b>";
+            return true;
+        }
+        //]]>        
+        
+    </script>
+        
+        <h:form prependId="false">
+        
+            <p><input type="submit" id="getClientWindow" onclick="callGetClientWindow(); return false;"
+                   name="getClientWindow" value="getClientWindow" /></p>
+            
+            <p><h:commandButton value="back" id="back" action="main" /></p>
+            
+            <p>|ClientWindow: <span id="echoClientWindow" />|</p>
+            
+        </h:form>
+        
+        
+    </h:body>
+</html>
+
diff --git a/test/agnostic/lifecycle/clientWindow/src/test/java/com/sun/faces/test/agnostic/lifeycle/clientWindow/Spec949IT.java b/test/agnostic/lifecycle/clientWindow/src/test/java/com/sun/faces/test/agnostic/lifeycle/clientWindow/Spec949IT.java
new file mode 100644
index 0000000..e1162ba
--- /dev/null
+++ b/test/agnostic/lifecycle/clientWindow/src/test/java/com/sun/faces/test/agnostic/lifeycle/clientWindow/Spec949IT.java
@@ -0,0 +1,185 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDLGPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.lifeycle.clientWindow;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.DomElement;
+import com.gargoylesoftware.htmlunit.html.HtmlAnchor;
+import com.gargoylesoftware.htmlunit.html.HtmlElement;
+import com.gargoylesoftware.htmlunit.html.HtmlInput;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
+import java.net.URL;
+import java.util.List;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotSame;
+import static org.junit.Assert.assertTrue;
+
+public class Spec949IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+        webClient.setJavaScriptEnabled(true);
+        webClient.setJavaScriptTimeout(120000);
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testClientWindow() throws Exception {
+        String clientWindow1, clientWindow2, window1Session, window2Session;
+        clientWindow1 = doTestAndReturnClientWindow(webClient, "window0");
+        clientWindow2 = doTestAndReturnClientWindow(webClient, "window1");
+        assertNotSame(clientWindow1, clientWindow2);
+        window1Session = clientWindow1.substring(0, clientWindow1.indexOf(':'));
+        window2Session = clientWindow2.substring(0, clientWindow2.indexOf(':'));
+        assertEquals(window1Session, window2Session);
+
+    }
+
+    @Test
+    public void testDisableClientWindow() throws Exception {
+        doTestClientWindowsDifferent("/faces/disableClientWindow.xhtml", "disableClientWindowEL");
+
+        doTestClientWindowsDifferent("/faces/disableClientWindow.xhtml", "disableClientWindowLiteral");
+
+        doTestClientWindowsDifferent("/faces/disableClientWindow.xhtml", "disableClientWindowButtonEL");
+
+        doTestClientWindowsDifferent("/faces/disableClientWindow.xhtml", "disableClientWindowButtonLiteral");
+    }
+    
+    public void doTestClientWindowsDifferent(String path, String id) throws Exception {
+        HtmlPage page;
+        List<DomElement> clientWindowHiddenFields;
+        HtmlElement link;
+        String clientWindowBeforeClick, clientWindowAfterClick;
+        
+        // Click the link and verify the ClientWindow is different on the new page.
+        page = webClient.getPage(webUrl + path);
+        link = (HtmlElement) page.getElementById(id);
+        clientWindowHiddenFields = page.getElementsByName("javax.faces.ClientWindow");
+        clientWindowBeforeClick = ((HtmlInput)clientWindowHiddenFields.get(0)).getDefaultValue();
+        
+        page = link.click();
+        clientWindowHiddenFields = page.getElementsByName("javax.faces.ClientWindow");
+        clientWindowAfterClick = ((HtmlInput)clientWindowHiddenFields.get(0)).getDefaultValue();
+        
+        assertNotSame("ClientWindow should not be the same on second page", clientWindowBeforeClick, clientWindowAfterClick);
+        
+    }
+    
+    public String doTestAndReturnClientWindow(WebClient yourClient, String windowName) throws Exception {
+        String clientWindow;
+        
+        // 
+        // Do some actions on this page
+        //
+        HtmlPage page = (HtmlPage) yourClient.openWindow(new URL(webUrl), windowName).getEnclosedPage();
+        HtmlTextInput textField = (HtmlTextInput) page.getElementById("firstName");
+        textField.setValueAttribute("ajaxFirstName");
+        
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("submitAjax");
+        page = button.click();
+        webClient.waitForBackgroundJavaScript(120000);
+        String pageText = page.asText();
+        assertTrue(pageText.contains("|ajaxFirstName|"));
+
+        final String clientWindowLabel = "ClientWindow: ";
+        int clientWindowLabelIndex = pageText.indexOf(clientWindowLabel);
+        clientWindow = pageText.substring(clientWindowLabelIndex + clientWindowLabel.length());
+        
+        
+        textField = (HtmlTextInput) page.getElementById("firstName");
+        textField.setValueAttribute("nonAjaxFirstName");
+        
+        button = (HtmlSubmitInput) page.getElementById("submitNonAjax");
+        page = button.click();
+        webClient.waitForBackgroundJavaScript(120000);
+        pageText = page.asText();
+        assertTrue(pageText.contains("|nonAjaxFirstName|"));
+        
+        
+        // 
+        // visit another page via a commandLink
+        //
+        HtmlAnchor link = (HtmlAnchor) page.getElementById("commandLink");
+        page = link.click();
+        button = (HtmlSubmitInput) page.getElementById("getClientWindow");
+        page = button.click();
+        webClient.waitForBackgroundJavaScript(120000);
+        pageText = page.asText();
+        clientWindowLabelIndex = pageText.indexOf(clientWindowLabel);
+        String newPageClientWindow = pageText.substring(clientWindowLabelIndex + clientWindowLabel.length());
+        assertEquals(clientWindow, newPageClientWindow);
+        
+        // 
+        // Go back to the first page
+        //
+        button = (HtmlSubmitInput) page.getElementById("back");
+        page = button.click();
+        
+        // 
+        // visit another page via an h:link
+        //
+        link = (HtmlAnchor) page.getElementById("outcomeTargetLink");
+        page = link.click();
+        button = (HtmlSubmitInput) page.getElementById("getClientWindow");
+        page = button.click();
+        webClient.waitForBackgroundJavaScript(120000);
+        pageText = page.asText();
+        clientWindowLabelIndex = pageText.indexOf(clientWindowLabel);
+        newPageClientWindow = pageText.substring(clientWindowLabelIndex + clientWindowLabel.length());
+        assertEquals(clientWindow, newPageClientWindow);
+        
+        return clientWindow;
+    }    
+}
diff --git a/test/agnostic/lifecycle/csrf/nbactions.xml b/test/agnostic/lifecycle/csrf/nbactions.xml
new file mode 100644
index 0000000..932ba40
--- /dev/null
+++ b/test/agnostic/lifecycle/csrf/nbactions.xml
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--><actions>
+        <action>
+            <actionName>debug.test.single</actionName>
+            <goals>
+                <goal>test-compile</goal>
+                <goal>surefire:test</goal>
+            </goals>
+            <properties>
+                <test>${packageClassName}</test>
+                <forkMode>once</forkMode>
+                <maven.surefire.debug>-Xdebug -Xrunjdwp:transport=dt_socket,server=n,address=${jpda.address}</maven.surefire.debug>
+                <jpda.listen>true</jpda.listen>
+                <project.build.finalName>test-agnostic-lifecycle-csrf</project.build.finalName>
+                <integration.serverPort>8080</integration.serverPort>
+                <integration.serverName>localhost</integration.serverName>
+                <integration.url>http://localhost:8080/test-agnostic-lifecycle-csrf/</integration.url>
+            </properties>
+        </action>
+        <action>
+            <actionName>test.single</actionName>
+            <goals>
+                <goal>test-compile</goal>
+                <goal>surefire:test</goal>
+            </goals>
+            <properties>
+                <project.build.finalName>test-agnostic-lifecycle-csrf</project.build.finalName>
+                <integration.serverPort>8080</integration.serverPort>
+                <integration.serverName>localhost</integration.serverName>
+                <integration.url>http://localhost:8080/test-agnostic-lifecycle-csrf/</integration.url>
+                <test>${packageClassName}</test>
+            </properties>
+        </action>
+    </actions>
diff --git a/test/agnostic/lifecycle/csrf/pom.xml b/test/agnostic/lifecycle/csrf/pom.xml
new file mode 100644
index 0000000..bb5e8e2
--- /dev/null
+++ b/test/agnostic/lifecycle/csrf/pom.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.agnostic.lifecycle</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.agnostic.lifecycle</groupId>
+    <artifactId>csrf</artifactId>
+    <packaging>war</packaging>
+    <name>Mojarra ${project.version} - Test - Agnostic - Lifecycle - CSRF Tests</name>
+    <build>
+        <finalName>test-agnostic-lifecycle-csrf</finalName>
+    </build>
+    <properties>
+        <netbeans.hint.deploy.server>gfv3ee6</netbeans.hint.deploy.server>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/test/agnostic/lifecycle/csrf/src/main/webapp/WEB-INF/faces-config.xml b/test/agnostic/lifecycle/csrf/src/main/webapp/WEB-INF/faces-config.xml
new file mode 100644
index 0000000..eb8b94e
--- /dev/null
+++ b/test/agnostic/lifecycle/csrf/src/main/webapp/WEB-INF/faces-config.xml
@@ -0,0 +1,52 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<faces-config xmlns="http://xmlns.jcp.org/xml/ns/javaee"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd"
+    version="2.2">
+
+  <protected-views>
+    <url-pattern>/i_spec_869_war_protected.xhtml</url-pattern>
+  </protected-views>
+
+</faces-config>
diff --git a/test/agnostic/lifecycle/csrf/src/main/webapp/WEB-INF/web.xml b/test/agnostic/lifecycle/csrf/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..32f06c8
--- /dev/null
+++ b/test/agnostic/lifecycle/csrf/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>${webapp.projectStage}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
+        <param-value>${webapp.partialStateSaving}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>${webapp.stateSavingMethod}</param-value>
+    </context-param>
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <session-config>
+        <session-timeout>30</session-timeout>
+    </session-config>
+    <welcome-file-list>
+        <welcome-file>faces/i_spec_869_war.xhtml</welcome-file>
+    </welcome-file-list>
+</web-app>
diff --git a/test/agnostic/lifecycle/csrf/src/main/webapp/i_spec_869_war.xhtml b/test/agnostic/lifecycle/csrf/src/main/webapp/i_spec_869_war.xhtml
new file mode 100644
index 0000000..595abf0
--- /dev/null
+++ b/test/agnostic/lifecycle/csrf/src/main/webapp/i_spec_869_war.xhtml
@@ -0,0 +1,18 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+<h:head>
+  <title>This page is not protected.</title>
+</h:head>
+<h:body>
+    <p>Non protected page.</p>
+    <p><h:button id="button" value="non-postback navigation to protected view" 
+                 outcome="i_spec_869_war_protected"/></p>
+    <h:form prependId="false">
+
+        <p><h:commandButton id="button_postback" value="postback navigation to protected view" 
+                 action="i_spec_869_war_protected"/></p>
+    </h:form>
+</h:body>
+</html>
diff --git a/test/agnostic/lifecycle/csrf/src/main/webapp/i_spec_869_war_protected.xhtml b/test/agnostic/lifecycle/csrf/src/main/webapp/i_spec_869_war_protected.xhtml
new file mode 100644
index 0000000..96a8588
--- /dev/null
+++ b/test/agnostic/lifecycle/csrf/src/main/webapp/i_spec_869_war_protected.xhtml
@@ -0,0 +1,14 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+<h:head>
+  <title>A Simple JavaServer Faces 2.0 View</title>
+</h:head>
+<h:body>
+  <h:form>
+      <p>protected view</p>
+      <p><h:commandButton value="submit" action="i_spec_869_war"/></p>
+  </h:form>
+</h:body>
+</html>
diff --git a/test/agnostic/lifecycle/csrf/src/test/java/com/sun/faces/test/agnostic/lifeycle/csrf/Spec869IT.java b/test/agnostic/lifecycle/csrf/src/test/java/com/sun/faces/test/agnostic/lifeycle/csrf/Spec869IT.java
new file mode 100644
index 0000000..f36991d
--- /dev/null
+++ b/test/agnostic/lifecycle/csrf/src/test/java/com/sun/faces/test/agnostic/lifeycle/csrf/Spec869IT.java
@@ -0,0 +1,152 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDLGPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.lifeycle.csrf;
+
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import com.gargoylesoftware.htmlunit.html.HtmlButtonInput;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+
+
+import static org.junit.Assert.assertTrue;
+
+public class Spec869IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testSimpleCSRF() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl);
+        HtmlButtonInput button = (HtmlButtonInput) page.getElementById("button");
+        page = button.click();
+        
+        String pageText = page.getBody().asText();
+        assertTrue(pageText.contains("protected view"));
+        
+        webClient.setThrowExceptionOnFailingStatusCode(false);
+        page = webClient.getPage(webUrl + "faces/i_spec_869_war_protected.xhtml");
+        pageText = page.getBody().asText();
+        
+        assertTrue(pageText.contains("javax.faces.application.ProtectedViewException"));
+        
+    }
+    
+    @Test
+    public void testSimpleCSRFPostback() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl);
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("button_postback");
+        page = button.click();
+        
+        String pageText = page.getBody().asText();
+        assertTrue(pageText.contains("protected view"));
+    }    
+
+    // Tests a request with an invalid referer header request parameter.
+    @Test
+    public void testBadRefererCSRF() throws Exception {
+        webClient.removeRequestHeader("Referer");
+        webClient.addRequestHeader("Referer", "foobar");
+        webClient.setThrowExceptionOnFailingStatusCode(false);
+        HtmlPage page = webClient.getPage(webUrl);
+        HtmlButtonInput button = (HtmlButtonInput) page.getElementById("button");
+        page = button.click();
+        String pageText = page.getBody().asText();
+        assertTrue(pageText.contains("Referer [sic] header value foobar does not appear to be a protected view"));
+    }
+
+    // Tests a request with an invalid origin header request parameter.
+    @Test
+    public void testBadOriginCSRF() throws Exception {
+        webClient.removeRequestHeader("Origin");
+        webClient.addRequestHeader("Origin", "foobar");
+        webClient.setThrowExceptionOnFailingStatusCode(false);
+        HtmlPage page = webClient.getPage(webUrl);
+        HtmlButtonInput button = (HtmlButtonInput) page.getElementById("button");
+        page = button.click();
+        String pageText = page.getBody().asText();
+        assertTrue(pageText.contains("Origin [sic] header value foobar does not appear to be a protected view"));
+    }
+
+    // Tests a request with a valid referer header request parameter.
+    // In this case the referer is an unprotected page, but it is the originating
+    // page in this webapp (for the protected page).
+    @Test
+    public void testGoodRefererCSRF() throws Exception {
+        webClient.removeRequestHeader("Referer");
+        webClient.addRequestHeader("Referer", "i_spec_869_war.xhtml");
+        webClient.setThrowExceptionOnFailingStatusCode(false);
+        HtmlPage page = webClient.getPage(webUrl);
+        HtmlButtonInput button = (HtmlButtonInput) page.getElementById("button");
+        page = button.click();
+        String pageText = page.getBody().asText();
+        assertTrue(!pageText.contains("javax.faces.application.ProtectedViewException"));
+    }
+
+    // Tests a request with a valid origin header request parameter.
+    // In this case the origin is an unprotected page, but it is the originating
+    // page in this webapp (for the protected page).
+    @Test
+    public void testGoodOriginCSRF() throws Exception {
+        webClient.removeRequestHeader("Origin");
+        webClient.addRequestHeader("Origin", "i_spec_869_war.xhtml");
+        webClient.setThrowExceptionOnFailingStatusCode(false);
+        HtmlPage page = webClient.getPage(webUrl);
+        HtmlButtonInput button = (HtmlButtonInput) page.getElementById("button");
+        page = button.click();
+        String pageText = page.getBody().asText();
+        assertTrue(!pageText.contains("javax.faces.application.ProtectedViewException"));
+    }
+
+}
diff --git a/test/agnostic/lifecycle/debugObjectOutputStream/nbactions.xml b/test/agnostic/lifecycle/debugObjectOutputStream/nbactions.xml
new file mode 100644
index 0000000..fd78b60
--- /dev/null
+++ b/test/agnostic/lifecycle/debugObjectOutputStream/nbactions.xml
@@ -0,0 +1,151 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--><actions>
+        <action>
+            <actionName>debug.test.single</actionName>
+            <goals>
+                <goal>test-compile</goal>
+                <goal>surefire:test</goal>
+            </goals>
+            <properties>
+                <test>${packageClassName}</test>
+                <forkMode>once</forkMode>
+                <maven.surefire.debug>-Xdebug -Xrunjdwp:transport=dt_socket,server=n,address=${jpda.address}</maven.surefire.debug>
+                <jpda.listen>true</jpda.listen>
+                <project.build.finalName>test-agnostic-lifecycle-debugObjectOutputStream</project.build.finalName>
+                <integration.serverPort>8080</integration.serverPort>
+                <integration.serverName>localhost</integration.serverName>
+                <integration.url>http://localhost:8080/test-agnostic-lifecycle-debugObjectOutputStream/</integration.url>
+            </properties>
+            <activatedProfiles>
+                <activatedProfile>mojarra-client-state</activatedProfile>
+            </activatedProfiles>
+        </action>
+        <action>
+            <actionName>test.single</actionName>
+            <goals>
+                <goal>test-compile</goal>
+                <goal>surefire:test</goal>
+            </goals>
+            <properties>
+                <project.build.finalName>test-agnostic-lifecycle-debugObjectOutputStream</project.build.finalName>
+                <integration.serverPort>8080</integration.serverPort>
+                <integration.serverName>localhost</integration.serverName>
+                <integration.url>http://localhost:8080/test-agnostic-lifecycle-debugObjectOutputStream/</integration.url>
+                <test>${packageClassName}</test>
+            </properties>
+            <activatedProfiles>
+                <activatedProfile>mojarra-client-state</activatedProfile>
+            </activatedProfiles>
+        </action>
+        <action>
+            <actionName>rebuild</actionName>
+            <goals>
+                <goal>clean</goal>
+                <goal>install</goal>
+            </goals>
+            <activatedProfiles>
+                <activatedProfile>mojarra-client-state</activatedProfile>
+            </activatedProfiles>
+        </action>
+        <action>
+            <actionName>test</actionName>
+            <goals>
+                <goal>test</goal>
+            </goals>
+            <activatedProfiles>
+                <activatedProfile>mojarra-client-state</activatedProfile>
+            </activatedProfiles>
+        </action>
+        <action>
+            <actionName>run</actionName>
+            <goals>
+                <goal>package</goal>
+            </goals>
+            <properties>
+                <netbeans.deploy>true</netbeans.deploy>
+            </properties>
+            <activatedProfiles>
+                <activatedProfile>mojarra-client-state</activatedProfile>
+            </activatedProfiles>
+        </action>
+        <action>
+            <actionName>run.single.deploy</actionName>
+            <goals>
+                <goal>package</goal>
+            </goals>
+            <properties>
+                <netbeans.deploy>true</netbeans.deploy>
+                <netbeans.deploy.clientUrlPart>${webpagePath}</netbeans.deploy.clientUrlPart>
+            </properties>
+            <activatedProfiles>
+                <activatedProfile>mojarra-client-state</activatedProfile>
+            </activatedProfiles>
+        </action>
+        <action>
+            <actionName>debug</actionName>
+            <goals>
+                <goal>package</goal>
+            </goals>
+            <properties>
+                <netbeans.deploy>true</netbeans.deploy>
+                <netbeans.deploy.debugmode>true</netbeans.deploy.debugmode>
+            </properties>
+            <activatedProfiles>
+                <activatedProfile>mojarra-client-state</activatedProfile>
+            </activatedProfiles>
+        </action>
+        <action>
+            <actionName>debug.single.deploy</actionName>
+            <goals>
+                <goal>package</goal>
+            </goals>
+            <properties>
+                <netbeans.deploy>true</netbeans.deploy>
+                <netbeans.deploy.clientUrlPart>${webpagePath}</netbeans.deploy.clientUrlPart>
+                <netbeans.deploy.debugmode>true</netbeans.deploy.debugmode>
+            </properties>
+            <activatedProfiles>
+                <activatedProfile>mojarra-client-state</activatedProfile>
+            </activatedProfiles>
+        </action>
+    </actions>
diff --git a/test/agnostic/lifecycle/debugObjectOutputStream/pom.xml b/test/agnostic/lifecycle/debugObjectOutputStream/pom.xml
new file mode 100644
index 0000000..15d0b1a
--- /dev/null
+++ b/test/agnostic/lifecycle/debugObjectOutputStream/pom.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.agnostic.lifecycle</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.agnostic.lifecycle</groupId>
+    <artifactId>debugObjectOutputStream</artifactId>
+    <packaging>war</packaging>
+    <name>Mojarra ${project.version} - Test - Agnostic - Lifecycle - DebugObjectOutputStream Tests</name>
+    <build>
+        <finalName>test-agnostic-lifecycle-debugObjectOutputStream</finalName>
+    </build>
+    <properties>
+        <netbeans.hint.deploy.server>gfv3ee6</netbeans.hint.deploy.server>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/test/agnostic/lifecycle/debugObjectOutputStream/src/main/java/com/sun/faces/test/agnostic/lifecycle/debugObjectOutputStream/NotSerializableBean.java b/test/agnostic/lifecycle/debugObjectOutputStream/src/main/java/com/sun/faces/test/agnostic/lifecycle/debugObjectOutputStream/NotSerializableBean.java
new file mode 100644
index 0000000..0cee84b
--- /dev/null
+++ b/test/agnostic/lifecycle/debugObjectOutputStream/src/main/java/com/sun/faces/test/agnostic/lifecycle/debugObjectOutputStream/NotSerializableBean.java
@@ -0,0 +1,88 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.test.agnostic.lifecycle.debugObjectOutputStream;
+
+import java.io.IOException;
+import java.io.NotSerializableException;
+import java.io.ObjectStreamException;
+import java.io.Serializable;
+import java.util.Map;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.RequestScoped;
+import javax.faces.context.FacesContext;
+
+ at ManagedBean
+ at RequestScoped
+public class NotSerializableBean implements Serializable {
+    
+    private void writeObject(java.io.ObjectOutputStream out)
+            throws IOException {
+        throw new NotSerializableException("Intentional failure");
+    }
+
+    private void readObject(java.io.ObjectInputStream in)
+            throws IOException, ClassNotFoundException {
+        throw new NotSerializableException("Intentional failure");
+        
+    }
+
+    private void readObjectNoData() 
+                    throws ObjectStreamException {
+        throw new NotSerializableException("Intentional failure");
+        
+    }
+    
+    private String putBadBeanInViewScope = "";
+
+    public String getPutBadBeanInViewScope() {
+        FacesContext context = FacesContext.getCurrentInstance();
+        Map<String, String> queryParams = context.getExternalContext().getRequestParameterMap();
+        if (queryParams.containsKey("fail")) {
+                context.getViewRoot().getViewMap(true).put("badBean", this);
+        }
+        return putBadBeanInViewScope;
+    }
+
+    public void setPutBadBeanInViewScope(String putBadBeanInViewScope) {
+        this.putBadBeanInViewScope = putBadBeanInViewScope;
+    }
+    
+}
diff --git a/test/agnostic/lifecycle/debugObjectOutputStream/src/main/webapp/WEB-INF/glassfish-web.xml b/test/agnostic/lifecycle/debugObjectOutputStream/src/main/webapp/WEB-INF/glassfish-web.xml
new file mode 100644
index 0000000..c6663ef
--- /dev/null
+++ b/test/agnostic/lifecycle/debugObjectOutputStream/src/main/webapp/WEB-INF/glassfish-web.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
+<glassfish-web-app error-url="">
+  <context-root>/test-agnostic-lifecycle-debugObjectOutputStream</context-root>
+  <class-loader delegate="true"/>
+  <jsp-config>
+    <property name="keepgenerated" value="true">
+      <description>Keep a copy of the generated servlet class' java code.</description>
+    </property>
+  </jsp-config>
+</glassfish-web-app>
diff --git a/test/agnostic/lifecycle/debugObjectOutputStream/src/main/webapp/WEB-INF/web.xml b/test/agnostic/lifecycle/debugObjectOutputStream/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..022c2ec
--- /dev/null
+++ b/test/agnostic/lifecycle/debugObjectOutputStream/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>${webapp.projectStage}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
+        <param-value>${webapp.partialStateSaving}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>${webapp.stateSavingMethod}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>com.sun.faces.enableClientStateDebugging</param-name>
+        <param-value>true</param-value>
+    </context-param>
+    
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <session-config>
+        <session-timeout>30</session-timeout>
+    </session-config>
+    <welcome-file-list>
+        <welcome-file>faces/index.xhtml</welcome-file>
+    </welcome-file-list>
+</web-app>
diff --git a/test/agnostic/lifecycle/debugObjectOutputStream/src/main/webapp/index.xhtml b/test/agnostic/lifecycle/debugObjectOutputStream/src/main/webapp/index.xhtml
new file mode 100644
index 0000000..614140c
--- /dev/null
+++ b/test/agnostic/lifecycle/debugObjectOutputStream/src/main/webapp/index.xhtml
@@ -0,0 +1,74 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title>Verify DebugObjectOutputStream Doesn't Break Normal Operation</title>
+    </h:head>
+    <h:body>
+        <p>Verify DebugObjectOutputStream Doesn't Break Normal Operation</p>
+        
+        <p>checkbox: #{sessionScope.checkbox}</p>
+        
+        <p>inputText: #{sessionScope.inputText}</p>
+        
+        #{notSerializableBean.putBadBeanInViewScope}
+        
+        <p><a id="fail" href="?fail=true">click to cause NotSerializableException.</a> Look in the server log for the string 
+        "Path to offending instance".</p>
+        
+        <h:form id="form" prependId="false">
+            
+            <h:selectBooleanCheckbox id="checkbox" value="#{sessionScope.checkbox}" />
+            
+            <h:inputText id="inputText" value="#{sessionScope.inputText}" />
+            
+            <h:commandButton id="button" value="submit" />
+            
+        </h:form>
+        
+
+    </h:body>
+</html>
+
diff --git a/test/agnostic/lifecycle/debugObjectOutputStream/src/test/java/com/sun/faces/test/agnostic/lifeycle/debugObjectOutputStream/Issue2466IT.java b/test/agnostic/lifecycle/debugObjectOutputStream/src/test/java/com/sun/faces/test/agnostic/lifeycle/debugObjectOutputStream/Issue2466IT.java
new file mode 100644
index 0000000..f995fc9
--- /dev/null
+++ b/test/agnostic/lifecycle/debugObjectOutputStream/src/test/java/com/sun/faces/test/agnostic/lifeycle/debugObjectOutputStream/Issue2466IT.java
@@ -0,0 +1,102 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDLGPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.lifeycle.debugObjectOutputStream;
+
+import com.gargoylesoftware.htmlunit.html.HtmlAnchor;
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlCheckBoxInput;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
+import org.junit.*;
+import static org.junit.Assert.*;
+
+public class Issue2466IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testConfigurationEffective() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl);
+        
+        HtmlCheckBoxInput checkbox = (HtmlCheckBoxInput) page.getElementById("checkbox");
+        checkbox.setChecked(true);
+        
+        HtmlTextInput inputText = (HtmlTextInput) page.getElementById("inputText");
+        final String textValue = System.currentTimeMillis() + "";
+        inputText.setValueAttribute(textValue);
+        
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("button");
+        
+        page = button.click();
+        
+        String text = page.getBody().asText();
+        
+        assertTrue(text.contains("checkbox: true"));
+        assertTrue(text.contains("inputText: " + textValue));
+        
+        /******
+         * Because this test has no way to run only when the 
+         * state saving mode would always cause serialization, this 
+         * is commented out.  But it is useful when running the test app
+         * interactively.
+         * 
+        webClient.setThrowExceptionOnFailingStatusCode(false);
+        HtmlAnchor fail = (HtmlAnchor) page.getElementById("fail");
+        page = fail.click();
+        
+        assertTrue(page.asText().contains("Intentional failure"));
+         *****/
+
+    }
+}
diff --git a/test/agnostic/lifecycle/facesServletAccess/nbactions.xml b/test/agnostic/lifecycle/facesServletAccess/nbactions.xml
new file mode 100644
index 0000000..da7bb26
--- /dev/null
+++ b/test/agnostic/lifecycle/facesServletAccess/nbactions.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<actions>
+        <action>
+            <actionName>test.single</actionName>
+            <goals>
+                <goal>test-compile</goal>
+                <goal>surefire:test</goal>
+            </goals>
+            <properties>
+                <test>${packageClassName}</test>
+                <integration.url>http://localhost:8080/test-agnostic-lifecycle-facesServletAccess/</integration.url>
+            </properties>
+        </action>
+    </actions>
diff --git a/test/agnostic/lifecycle/facesServletAccess/pom.xml b/test/agnostic/lifecycle/facesServletAccess/pom.xml
new file mode 100644
index 0000000..a952c9d
--- /dev/null
+++ b/test/agnostic/lifecycle/facesServletAccess/pom.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.agnostic.lifecycle</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.agnostic.lifecycle</groupId>
+    <artifactId>facesServletAccess</artifactId>
+    <packaging>war</packaging>
+    <name>Mojarra ${project.version} - Test - Agnostic - Lifecycle - Faces Servlet access</name>
+    <build>
+        <finalName>test-agnostic-lifecycle-facesServletAccess</finalName>
+    </build>
+    <properties>
+        <netbeans.hint.deploy.server>gfv3ee6</netbeans.hint.deploy.server>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/test/agnostic/lifecycle/facesServletAccess/src/main/webapp/META-INF/youcantgetme.xhtml b/test/agnostic/lifecycle/facesServletAccess/src/main/webapp/META-INF/youcantgetme.xhtml
new file mode 100644
index 0000000..ec41f27
--- /dev/null
+++ b/test/agnostic/lifecycle/facesServletAccess/src/main/webapp/META-INF/youcantgetme.xhtml
@@ -0,0 +1,52 @@
+<!--
+DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+The contents of this file are subject to the terms of either the GNU
+General Public License Version 2 only ("GPL") or the Common Development
+and Distribution License("CDDL") (collectively, the "License").  You
+may not use this file except in compliance with the License.  You can
+obtain a copy of the License at
+https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+or packager/legal/LICENSE.txt.  See the License for the specific
+language governing permissions and limitations under the License.
+
+When distributing the software, include this License Header Notice in each
+file and include the License file at packager/legal/LICENSE.txt.
+
+GPL Classpath Exception:
+Oracle designates this particular file as subject to the "Classpath"
+exception as provided by Oracle in the GPL Version 2 section of the License
+file that accompanied this code.
+
+Modifications:
+If applicable, add the following below the License Header, with the fields
+enclosed by brackets [] replaced by your own identifying information:
+"Portions Copyright [year] [name of copyright owner]"
+
+Contributor(s):
+If you wish your version of this file to be governed by only the CDDL or
+only the GPL Version 2, indicate your decision by adding "[Contributor]
+elects to include this software in this distribution under the [CDDL or GPL
+Version 2] license."  If you don't indicate a single choice of license, a
+recipient has the option to distribute your version of this file under
+either the CDDL, the GPL Version 2 or to extend the choice of license to
+its licensees as provided above.  However, if you add GPL Version 2 code
+and therefore, elected the GPL Version 2 license, then the option applies
+only if the new code is made subject to such option by the copyright
+holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html>
+    <head>
+        <title></title>
+        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+    </head>
+    <body>
+        This page should not directly be available.
+    </body>
+</html>
diff --git a/test/agnostic/lifecycle/facesServletAccess/src/main/webapp/WEB-INF/faces-config.xml b/test/agnostic/lifecycle/facesServletAccess/src/main/webapp/WEB-INF/faces-config.xml
new file mode 100644
index 0000000..14c9e5a
--- /dev/null
+++ b/test/agnostic/lifecycle/facesServletAccess/src/main/webapp/WEB-INF/faces-config.xml
@@ -0,0 +1,17 @@
+<?xml version='1.0' encoding='UTF-8'?>
+
+<!-- =========== FULL CONFIGURATION FILE ================================== -->
+
+<faces-config version="2.0"
+    xmlns="http://java.sun.com/xml/ns/javaee" 
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd">
+
+    <application>
+        <locale-config>
+            <supported-locale>en</supported-locale>
+        </locale-config>
+    </application>
+
+
+</faces-config>
diff --git a/test/agnostic/lifecycle/facesServletAccess/src/main/webapp/WEB-INF/glassfish-web.xml b/test/agnostic/lifecycle/facesServletAccess/src/main/webapp/WEB-INF/glassfish-web.xml
new file mode 100644
index 0000000..4a66f28
--- /dev/null
+++ b/test/agnostic/lifecycle/facesServletAccess/src/main/webapp/WEB-INF/glassfish-web.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
+<glassfish-web-app error-url="">
+  <context-root>/test-agnostic-lifecycle-facesServletAccess</context-root>
+  <class-loader delegate="true"/>
+  <jsp-config>
+    <property name="keepgenerated" value="true">
+      <description>Keep a copy of the generated servlet class' java code.</description>
+    </property>
+  </jsp-config>
+</glassfish-web-app>
diff --git a/test/agnostic/lifecycle/facesServletAccess/src/main/webapp/WEB-INF/web.xml b/test/agnostic/lifecycle/facesServletAccess/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..a58fab4
--- /dev/null
+++ b/test/agnostic/lifecycle/facesServletAccess/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" 
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>${webapp.projectStage}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
+        <param-value>${webapp.partialStateSaving}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>${webapp.stateSavingMethod}</param-value>
+    </context-param>
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <session-config>
+        <session-timeout>30</session-timeout>
+    </session-config>
+    <welcome-file-list>
+        <welcome-file>faces/index.xhtml</welcome-file>
+    </welcome-file-list>
+</web-app>
diff --git a/test/agnostic/lifecycle/facesServletAccess/src/main/webapp/WEB-INF/youcantgetme.xhtml b/test/agnostic/lifecycle/facesServletAccess/src/main/webapp/WEB-INF/youcantgetme.xhtml
new file mode 100644
index 0000000..ec41f27
--- /dev/null
+++ b/test/agnostic/lifecycle/facesServletAccess/src/main/webapp/WEB-INF/youcantgetme.xhtml
@@ -0,0 +1,52 @@
+<!--
+DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+The contents of this file are subject to the terms of either the GNU
+General Public License Version 2 only ("GPL") or the Common Development
+and Distribution License("CDDL") (collectively, the "License").  You
+may not use this file except in compliance with the License.  You can
+obtain a copy of the License at
+https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+or packager/legal/LICENSE.txt.  See the License for the specific
+language governing permissions and limitations under the License.
+
+When distributing the software, include this License Header Notice in each
+file and include the License file at packager/legal/LICENSE.txt.
+
+GPL Classpath Exception:
+Oracle designates this particular file as subject to the "Classpath"
+exception as provided by Oracle in the GPL Version 2 section of the License
+file that accompanied this code.
+
+Modifications:
+If applicable, add the following below the License Header, with the fields
+enclosed by brackets [] replaced by your own identifying information:
+"Portions Copyright [year] [name of copyright owner]"
+
+Contributor(s):
+If you wish your version of this file to be governed by only the CDDL or
+only the GPL Version 2, indicate your decision by adding "[Contributor]
+elects to include this software in this distribution under the [CDDL or GPL
+Version 2] license."  If you don't indicate a single choice of license, a
+recipient has the option to distribute your version of this file under
+either the CDDL, the GPL Version 2 or to extend the choice of license to
+its licensees as provided above.  However, if you add GPL Version 2 code
+and therefore, elected the GPL Version 2 license, then the option applies
+only if the new code is made subject to such option by the copyright
+holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html>
+    <head>
+        <title></title>
+        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+    </head>
+    <body>
+        This page should not directly be available.
+    </body>
+</html>
diff --git a/test/agnostic/lifecycle/facesServletAccess/src/main/webapp/index.xhtml b/test/agnostic/lifecycle/facesServletAccess/src/main/webapp/index.xhtml
new file mode 100644
index 0000000..21a8b85
--- /dev/null
+++ b/test/agnostic/lifecycle/facesServletAccess/src/main/webapp/index.xhtml
@@ -0,0 +1,49 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <body>
+        Normal page
+    </body>
+</html>
diff --git a/test/agnostic/lifecycle/facesServletAccess/src/test/java/com/sun/faces/test/agnostic/lifecycle/facesServletAccess/Issue15973375IT.java b/test/agnostic/lifecycle/facesServletAccess/src/test/java/com/sun/faces/test/agnostic/lifecycle/facesServletAccess/Issue15973375IT.java
new file mode 100644
index 0000000..566fc13
--- /dev/null
+++ b/test/agnostic/lifecycle/facesServletAccess/src/test/java/com/sun/faces/test/agnostic/lifecycle/facesServletAccess/Issue15973375IT.java
@@ -0,0 +1,107 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.lifecycle.facesServletAccess;
+
+import com.gargoylesoftware.htmlunit.html.HtmlAnchor;
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class Issue15973375IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testWebInfWebXml() throws Exception {
+        webClient.setThrowExceptionOnFailingStatusCode(false);
+        HtmlPage page = webClient.getPage(webUrl + "faces/faces/WEB-INF/web.xml");
+        assertEquals(404, page.getWebResponse().getStatusCode());
+    }
+
+    @Test
+    public void testWebInfYouCantGetMe() throws Exception {
+        webClient.setThrowExceptionOnFailingStatusCode(false);
+        HtmlPage page = webClient.getPage(webUrl + "faces/faces/WEB-INF/youcantgetme.xhtml");
+        assertEquals(404, page.getWebResponse().getStatusCode());
+    }
+
+    @Test
+    public void testWebInfFacesConfig() throws Exception {
+        webClient.setThrowExceptionOnFailingStatusCode(false);
+        HtmlPage page = webClient.getPage(webUrl + "faces/faces/WEB-INF/faces-config.xml");
+        assertEquals(404, page.getWebResponse().getStatusCode());
+    }
+
+    @Test
+    public void testNormalPage() throws Exception {
+        webClient.setThrowExceptionOnFailingStatusCode(false);
+        HtmlPage page = webClient.getPage(webUrl + "faces/index.xhtml");
+        assertEquals(200, page.getWebResponse().getStatusCode());
+    }
+
+    @Test
+    public void testMetaInf() throws Exception {
+        webClient.setThrowExceptionOnFailingStatusCode(false);
+        HtmlPage page = webClient.getPage(webUrl + "faces/META-INF");
+        assertEquals(404, page.getWebResponse().getStatusCode());
+    }
+
+    @Test
+    public void testMetaInfYouCantGetMe() throws Exception {
+        webClient.setThrowExceptionOnFailingStatusCode(false);
+        HtmlPage page = webClient.getPage(webUrl + "faces/META-INF/youcantgetme.xhtml");
+        assertEquals(404, page.getWebResponse().getStatusCode());
+    }
+}
diff --git a/test/agnostic/lifecycle/optionsRequest/pom.xml b/test/agnostic/lifecycle/optionsRequest/pom.xml
new file mode 100644
index 0000000..e133d8b
--- /dev/null
+++ b/test/agnostic/lifecycle/optionsRequest/pom.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.agnostic.lifecycle</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.agnostic.lifecycle</groupId>
+    <artifactId>optionsRequest</artifactId>
+    <packaging>war</packaging>
+    <name>Mojarra ${project.version} - Test - Agnostic - Lifecycle - OPTIONS request</name>
+    <build>
+        <finalName>test-agnostic-lifecycle-optionsRequest</finalName>
+    </build>
+    <properties>
+        <netbeans.hint.deploy.server>gfv3ee6</netbeans.hint.deploy.server>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/test/agnostic/lifecycle/optionsRequest/src/main/webapp/WEB-INF/glassfish-web.xml b/test/agnostic/lifecycle/optionsRequest/src/main/webapp/WEB-INF/glassfish-web.xml
new file mode 100644
index 0000000..4d7d638
--- /dev/null
+++ b/test/agnostic/lifecycle/optionsRequest/src/main/webapp/WEB-INF/glassfish-web.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
+<glassfish-web-app error-url="">
+  <context-root>/test-agnostic-lifecycle-optionsRequest</context-root>
+  <class-loader delegate="true"/>
+  <jsp-config>
+    <property name="keepgenerated" value="true">
+      <description>Keep a copy of the generated servlet class' java code.</description>
+    </property>
+  </jsp-config>
+</glassfish-web-app>
diff --git a/test/agnostic/lifecycle/optionsRequest/src/main/webapp/WEB-INF/web.xml b/test/agnostic/lifecycle/optionsRequest/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..a3c5c7b
--- /dev/null
+++ b/test/agnostic/lifecycle/optionsRequest/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" 
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>${webapp.projectStage}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
+        <param-value>${webapp.partialStateSaving}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>${webapp.stateSavingMethod}</param-value>
+    </context-param>
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <session-config>
+        <session-timeout>30</session-timeout>
+    </session-config>
+    <welcome-file-list>
+        <welcome-file>faces/index.xhtml</welcome-file>
+    </welcome-file-list>
+</web-app>
diff --git a/test/agnostic/lifecycle/optionsRequest/src/main/webapp/index.xhtml b/test/agnostic/lifecycle/optionsRequest/src/main/webapp/index.xhtml
new file mode 100644
index 0000000..fa07e06
--- /dev/null
+++ b/test/agnostic/lifecycle/optionsRequest/src/main/webapp/index.xhtml
@@ -0,0 +1,14 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title>Facelet Title</title>
+    </h:head>
+    <h:body>
+        Hello from Facelets
+    </h:body>
+</html>
+
diff --git a/test/agnostic/lifecycle/optionsRequest/src/main/webapp/optionsRequest.xhtml b/test/agnostic/lifecycle/optionsRequest/src/main/webapp/optionsRequest.xhtml
new file mode 100644
index 0000000..e85c3a4
--- /dev/null
+++ b/test/agnostic/lifecycle/optionsRequest/src/main/webapp/optionsRequest.xhtml
@@ -0,0 +1,14 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    <h:head>
+        <title>A Simple JavaServer Faces 2.0 View</title>
+    </h:head>
+    <h:body>
+        <h:form>
+            <p><h:commandButton value="submit" /></p>
+        </h:form>
+    </h:body>
+</html>
diff --git a/test/agnostic/lifecycle/optionsRequest/src/test/java/com/sun/faces/test/agnostic/lifecycle/optionsRequest/Spec915IT.java b/test/agnostic/lifecycle/optionsRequest/src/test/java/com/sun/faces/test/agnostic/lifecycle/optionsRequest/Spec915IT.java
new file mode 100644
index 0000000..0d76161
--- /dev/null
+++ b/test/agnostic/lifecycle/optionsRequest/src/test/java/com/sun/faces/test/agnostic/lifecycle/optionsRequest/Spec915IT.java
@@ -0,0 +1,75 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.lifecycle.optionsRequest;
+
+import com.gargoylesoftware.htmlunit.HttpMethod;
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.WebRequest;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import java.net.URL;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class Spec915IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testOPTIONSRequest() throws Exception {
+        WebRequest request = new WebRequest(new URL(webUrl + "faces/optionsRequest.xhtml"));
+        request.setHttpMethod(HttpMethod.OPTIONS);
+        HtmlPage page = webClient.getPage(request);
+        assertEquals(200, page.getWebResponse().getStatusCode());
+    }
+}
diff --git a/test/agnostic/lifecycle/pom.xml b/test/agnostic/lifecycle/pom.xml
new file mode 100644
index 0000000..ab28b00
--- /dev/null
+++ b/test/agnostic/lifecycle/pom.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.agnostic</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.agnostic.lifecycle</groupId>
+    <artifactId>pom</artifactId>
+    <packaging>pom</packaging>
+    <name>Mojarra ${project.version} - Test - Agnostic - Lifecycle</name>
+    <modules>
+        <module>basic</module>
+        <module>clientWindow</module>
+        <module>csrf</module>
+        <module>debugObjectOutputStream</module>
+        <module>facesServletAccess</module>
+        <module>optionsRequest</module>
+        <module>unserializableServerState_negative</module>
+        <module>unserializableServerState_positive</module>
+    </modules>
+</project>
diff --git a/test/agnostic/lifecycle/unserializableServerState_negative/nbactions.xml b/test/agnostic/lifecycle/unserializableServerState_negative/nbactions.xml
new file mode 100644
index 0000000..e4e3a9a
--- /dev/null
+++ b/test/agnostic/lifecycle/unserializableServerState_negative/nbactions.xml
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--><actions>
+        <action>
+            <actionName>debug.test.single</actionName>
+            <goals>
+                <goal>test-compile</goal>
+                <goal>surefire:test</goal>
+            </goals>
+            <properties>
+                <test>${packageClassName}</test>
+                <forkMode>once</forkMode>
+                <maven.surefire.debug>-Xdebug -Xrunjdwp:transport=dt_socket,server=n,address=${jpda.address}</maven.surefire.debug>
+                <jpda.listen>true</jpda.listen>
+                <project.build.finalName>test-agnostic-lifecycle-unserializableServerState_negative</project.build.finalName>
+                <integration.serverPort>8080</integration.serverPort>
+                <integration.serverName>localhost</integration.serverName>
+                <integration.url>http://localhost:8080/test-agnostic-lifecycle-unserializableServerState_negative/</integration.url>
+            </properties>
+        </action>
+        <action>
+            <actionName>test.single</actionName>
+            <goals>
+                <goal>test-compile</goal>
+                <goal>surefire:test</goal>
+            </goals>
+            <properties>
+                <project.build.finalName>test-agnostic-lifecycle-unserializableServerState_negative</project.build.finalName>
+                <integration.serverPort>8080</integration.serverPort>
+                <integration.serverName>localhost</integration.serverName>
+                <integration.url>http://localhost:8080/test-agnostic-lifecycle-unserializableServerState_negative/</integration.url>
+                <test>${packageClassName}</test>
+            </properties>
+        </action>
+    </actions>
diff --git a/test/agnostic/lifecycle/unserializableServerState_negative/pom.xml b/test/agnostic/lifecycle/unserializableServerState_negative/pom.xml
new file mode 100644
index 0000000..b36b6fd
--- /dev/null
+++ b/test/agnostic/lifecycle/unserializableServerState_negative/pom.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.agnostic.lifecycle</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.agnostic.lifecycle</groupId>
+    <artifactId>unserializableServerState_negative</artifactId>
+    <packaging>war</packaging>
+    <name>Mojarra ${project.version} - Test - Agnostic - Lifecycle - UnserializableServerState Negavite Tests</name>
+    <build>
+        <finalName>test-agnostic-lifecycle-unserializableServerState_negative</finalName>
+    </build>
+    <properties>
+        <netbeans.hint.deploy.server>gfv3ee6</netbeans.hint.deploy.server>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/test/agnostic/lifecycle/unserializableServerState_negative/src/main/java/com/sun/faces/test/lifecycle/unserializableServerState_negative/Bean.java b/test/agnostic/lifecycle/unserializableServerState_negative/src/main/java/com/sun/faces/test/lifecycle/unserializableServerState_negative/Bean.java
new file mode 100644
index 0000000..9a0f375
--- /dev/null
+++ b/test/agnostic/lifecycle/unserializableServerState_negative/src/main/java/com/sun/faces/test/lifecycle/unserializableServerState_negative/Bean.java
@@ -0,0 +1,71 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.test.lifecycle.unserializableServerState_negative;
+
+import java.io.IOException;
+import java.io.NotSerializableException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.io.Serializable;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.RequestScoped;
+import javax.faces.event.ActionEvent;
+
+ at ManagedBean
+ at RequestScoped
+public class Bean {
+    
+    public void putNonSerializableDataInState(ActionEvent ae) {
+        ae.getComponent().getAttributes().put("myAttribute", new NotSerializableClass());
+    }
+    
+    private static class NotSerializableClass implements Serializable {
+        private void writeObject(ObjectOutputStream out) throws IOException
+        {
+            throw new NotSerializableException("This class is not really Serializable");
+        }
+        private void readObject(ObjectInputStream in) throws IOException
+        {
+            throw new NotSerializableException("This class is not really Serializable");
+        }
+    }
+    
+}
diff --git a/test/agnostic/lifecycle/unserializableServerState_negative/src/main/webapp/WEB-INF/web.xml b/test/agnostic/lifecycle/unserializableServerState_negative/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..2c579c7
--- /dev/null
+++ b/test/agnostic/lifecycle/unserializableServerState_negative/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>${webapp.projectStage}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
+        <param-value>${webapp.partialStateSaving}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>server</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.SERIALIZE_SERVER_STATE</param-name>
+        <param-value>true</param-value>
+    </context-param>
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <session-config>
+        <session-timeout>30</session-timeout>
+    </session-config>
+    <welcome-file-list>
+        <welcome-file>faces/index.xhtml</welcome-file>
+    </welcome-file-list>
+</web-app>
diff --git a/test/agnostic/lifecycle/unserializableServerState_negative/src/main/webapp/index.xhtml b/test/agnostic/lifecycle/unserializableServerState_negative/src/main/webapp/index.xhtml
new file mode 100644
index 0000000..35caccb
--- /dev/null
+++ b/test/agnostic/lifecycle/unserializableServerState_negative/src/main/webapp/index.xhtml
@@ -0,0 +1,60 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title>Unserializable data in state: no problem</title>
+    </h:head>
+    <h:body>
+        <p>Unserializable data in state: no problem</p>
+        
+        <h:form prependId="false">
+            
+            <h:commandButton value="reload" id="button" actionListener="#{bean.putNonSerializableDataInState}"/>
+            
+            
+        </h:form>
+    </h:body>
+</html>
+
diff --git a/test/agnostic/lifecycle/unserializableServerState_negative/src/test/java/com/sun/faces/test/agnostic/lifeycle/unserializableServerState_negative/Issue1127IT.java b/test/agnostic/lifecycle/unserializableServerState_negative/src/test/java/com/sun/faces/test/agnostic/lifeycle/unserializableServerState_negative/Issue1127IT.java
new file mode 100644
index 0000000..5b58602
--- /dev/null
+++ b/test/agnostic/lifecycle/unserializableServerState_negative/src/test/java/com/sun/faces/test/agnostic/lifeycle/unserializableServerState_negative/Issue1127IT.java
@@ -0,0 +1,78 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDLGPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.lifeycle.unserializableServerState_negative;
+
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+
+import org.junit.*;
+import static org.junit.Assert.*;
+
+public class Issue1127IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testConfigurationEffective() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl);
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("button");
+        webClient.setThrowExceptionOnFailingStatusCode(true);
+        boolean exceptionThrown = false;
+        try {
+            button.click();
+        } catch (Exception e) {
+            exceptionThrown = true;
+        }
+        assertTrue(exceptionThrown);
+    }
+}
diff --git a/test/agnostic/lifecycle/unserializableServerState_positive/nbactions.xml b/test/agnostic/lifecycle/unserializableServerState_positive/nbactions.xml
new file mode 100644
index 0000000..336aa04
--- /dev/null
+++ b/test/agnostic/lifecycle/unserializableServerState_positive/nbactions.xml
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--><actions>
+        <action>
+            <actionName>debug.test.single</actionName>
+            <goals>
+                <goal>test-compile</goal>
+                <goal>surefire:test</goal>
+            </goals>
+            <properties>
+                <test>${packageClassName}</test>
+                <forkMode>once</forkMode>
+                <maven.surefire.debug>-Xdebug -Xrunjdwp:transport=dt_socket,server=n,address=${jpda.address}</maven.surefire.debug>
+                <jpda.listen>true</jpda.listen>
+                <project.build.finalName>test-agnostic-lifecycle-unserializableServerState_positive</project.build.finalName>
+                <integration.serverPort>8080</integration.serverPort>
+                <integration.serverName>localhost</integration.serverName>
+                <integration.url>http://localhost:8080/test-agnostic-lifecycle-unserializableServerState_positive/</integration.url>
+            </properties>
+        </action>
+        <action>
+            <actionName>test.single</actionName>
+            <goals>
+                <goal>test-compile</goal>
+                <goal>surefire:test</goal>
+            </goals>
+            <properties>
+                <project.build.finalName>test-agnostic-lifecycle-unserializableServerState_positive</project.build.finalName>
+                <integration.serverPort>8080</integration.serverPort>
+                <integration.serverName>localhost</integration.serverName>
+                <integration.url>http://localhost:8080/test-agnostic-lifecycle-unserializableServerState_positive/</integration.url>
+                <test>${packageClassName}</test>
+            </properties>
+        </action>
+    </actions>
diff --git a/test/agnostic/lifecycle/unserializableServerState_positive/pom.xml b/test/agnostic/lifecycle/unserializableServerState_positive/pom.xml
new file mode 100644
index 0000000..5b434cd
--- /dev/null
+++ b/test/agnostic/lifecycle/unserializableServerState_positive/pom.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.agnostic.lifecycle</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.agnostic.lifecycle</groupId>
+    <artifactId>unserializableServerState_positive</artifactId>
+    <packaging>war</packaging>
+    <name>Mojarra ${project.version} - Test - Agnostic - Lifecycle - UnserializableServerState Positive Tests</name>
+    <build>
+        <finalName>test-agnostic-lifecycle-unserializableServerState_positive</finalName>
+    </build>
+    <properties>
+        <netbeans.hint.deploy.server>gfv3ee6</netbeans.hint.deploy.server>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/test/agnostic/lifecycle/unserializableServerState_positive/src/main/java/com/sun/faces/test/lifecycle/unserializableServerState_positive/Bean.java b/test/agnostic/lifecycle/unserializableServerState_positive/src/main/java/com/sun/faces/test/lifecycle/unserializableServerState_positive/Bean.java
new file mode 100644
index 0000000..1816e47
--- /dev/null
+++ b/test/agnostic/lifecycle/unserializableServerState_positive/src/main/java/com/sun/faces/test/lifecycle/unserializableServerState_positive/Bean.java
@@ -0,0 +1,71 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.test.lifecycle.unserializableServerState_positive;
+
+import java.io.IOException;
+import java.io.NotSerializableException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.io.Serializable;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.RequestScoped;
+import javax.faces.event.ActionEvent;
+
+ at ManagedBean
+ at RequestScoped
+public class Bean {
+    
+    public void putNonSerializableDataInState(ActionEvent ae) {
+        ae.getComponent().getAttributes().put("myAttribute", new NotSerializableClass());
+    }
+    
+    private static class NotSerializableClass implements Serializable {
+        private void writeObject(ObjectOutputStream out) throws IOException
+        {
+            throw new NotSerializableException("This class is not really Serializable");
+        }
+        private void readObject(ObjectInputStream in) throws IOException
+        {
+            throw new NotSerializableException("This class is not really Serializable");
+        }
+    }
+    
+}
diff --git a/test/agnostic/lifecycle/unserializableServerState_positive/src/main/webapp/WEB-INF/web.xml b/test/agnostic/lifecycle/unserializableServerState_positive/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..4809700
--- /dev/null
+++ b/test/agnostic/lifecycle/unserializableServerState_positive/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>${webapp.projectStage}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
+        <param-value>${webapp.partialStateSaving}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>server</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.SERIALIZE_SERVER_STATE</param-name>
+        <param-value>false</param-value>
+    </context-param>
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <session-config>
+        <session-timeout>30</session-timeout>
+    </session-config>
+    <welcome-file-list>
+        <welcome-file>faces/index.xhtml</welcome-file>
+    </welcome-file-list>
+</web-app>
diff --git a/test/agnostic/lifecycle/unserializableServerState_positive/src/main/webapp/index.xhtml b/test/agnostic/lifecycle/unserializableServerState_positive/src/main/webapp/index.xhtml
new file mode 100644
index 0000000..35caccb
--- /dev/null
+++ b/test/agnostic/lifecycle/unserializableServerState_positive/src/main/webapp/index.xhtml
@@ -0,0 +1,60 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title>Unserializable data in state: no problem</title>
+    </h:head>
+    <h:body>
+        <p>Unserializable data in state: no problem</p>
+        
+        <h:form prependId="false">
+            
+            <h:commandButton value="reload" id="button" actionListener="#{bean.putNonSerializableDataInState}"/>
+            
+            
+        </h:form>
+    </h:body>
+</html>
+
diff --git a/test/agnostic/lifecycle/unserializableServerState_positive/src/test/java/com/sun/faces/test/agnostic/lifeycle/unserializableServerState_positive/Issue1127IT.java b/test/agnostic/lifecycle/unserializableServerState_positive/src/test/java/com/sun/faces/test/agnostic/lifeycle/unserializableServerState_positive/Issue1127IT.java
new file mode 100644
index 0000000..061ff02
--- /dev/null
+++ b/test/agnostic/lifecycle/unserializableServerState_positive/src/test/java/com/sun/faces/test/agnostic/lifeycle/unserializableServerState_positive/Issue1127IT.java
@@ -0,0 +1,73 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDLGPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.lifeycle.unserializableServerState_positive;
+
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+
+import org.junit.*;
+import static org.junit.Assert.*;
+
+public class Issue1127IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testConfigurationEffective() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl);
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("button");
+        webClient.setThrowExceptionOnFailingStatusCode(true);
+        button.click();
+        
+    }
+}
diff --git a/test/agnostic/pom.xml b/test/agnostic/pom.xml
new file mode 100644
index 0000000..0e45b90
--- /dev/null
+++ b/test/agnostic/pom.xml
@@ -0,0 +1,80 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.agnostic</groupId>
+    <artifactId>pom</artifactId>
+    <packaging>pom</packaging>
+    <name>Mojarra ${project.version} - Test - Agnostic</name>
+    <dependencies>
+        <dependency>
+            <groupId>com.sun.faces.test</groupId>
+            <artifactId>util</artifactId>
+            <version>${project.version}</version>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+    <modules>
+        <module>application</module>
+        <module>ajax-namespace</module>
+        <module>config</module>
+        <module>context</module>
+        <module>converter</module>
+        <module>replace-vr-add-er</module>
+        <module>externalContext</module>
+        <module>facelets</module>
+        <module>flash</module>
+        <module>lifecycle</module>
+        <module>renderKit</module>
+        <module>resource</module>
+        <module>scope</module>
+        <module>stateSaving</module>
+        <module>vdl</module>
+    </modules>
+</project>
diff --git a/test/agnostic/renderKit/basic/nbactions.xml b/test/agnostic/renderKit/basic/nbactions.xml
new file mode 100644
index 0000000..d9f9811
--- /dev/null
+++ b/test/agnostic/renderKit/basic/nbactions.xml
@@ -0,0 +1,166 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+
+<actions>
+        <action>
+            <actionName>debug.test.single</actionName>
+            <goals>
+                <goal>test-compile</goal>
+                <goal>surefire:test</goal>
+            </goals>
+            <properties>
+                <test>${packageClassName}</test>
+                <forkMode>once</forkMode>
+                <maven.surefire.debug>-Xdebug -Xrunjdwp:transport=dt_socket,server=n,address=${jpda.address}</maven.surefire.debug>
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                <jpda.listen>true</jpda.listen>
+                <project.build.finalName>test-agnostic-renderKit-basic</project.build.finalName>
+                <webapp.projectStage>Development</webapp.projectStage>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                <integration.serverPort>8080</integration.serverPort>
+                <integration.serverName>localhost</integration.serverName>
+                <integration.url>http://localhost:8080/test-agnostic-renderKit-basic/</integration.url>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+            </properties>
+        </action>
+        <action>
+            <actionName>test.single</actionName>
+            <goals>
+                <goal>test-compile</goal>
+                <goal>surefire:test</goal>
+            </goals>
+            <properties>
+                <project.build.finalName>test-agnostic-renderKit-basic</project.build.finalName>
+                <integration.serverPort>8080</integration.serverPort>
+                <integration.serverName>localhost</integration.serverName>
+                <integration.url>http://localhost:8080/test-agnostic-renderKit-basic/</integration.url>
+                <test>${packageClassName}</test>
+            </properties>
+        </action>
+        <action>
+            <actionName>build</actionName>
+            <goals>
+                <goal>install</goal>
+            </goals>
+            <properties>
+                <webapp.projectStage>Development</webapp.projectStage>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+            </properties>
+        </action>
+        <action>
+            <actionName>rebuild</actionName>
+            <goals>
+                <goal>clean</goal>
+                <goal>install</goal>
+            </goals>
+            <properties>
+                
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                
+                <webapp.projectStage>Development</webapp.projectStage>
+                
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                
+            </properties>
+        </action>
+        <action>
+            <actionName>build-with-dependencies</actionName>
+            <reactor>also-make</reactor>
+            <goals>
+                <goal>install</goal>
+            </goals>
+            <properties>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                <webapp.projectStage>Development</webapp.projectStage>
+            </properties>
+        </action>
+        <action>
+            <actionName>run</actionName>
+            <goals>
+                <goal>package</goal>
+            </goals>
+            <properties>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                <netbeans.deploy>true</netbeans.deploy>
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                <webapp.projectStage>Development</webapp.projectStage>
+            </properties>
+        </action>
+        <action>
+            <actionName>run.single.deploy</actionName>
+            <goals>
+                <goal>package</goal>
+            </goals>
+            <properties>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                <netbeans.deploy>true</netbeans.deploy>
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                <netbeans.deploy.clientUrlPart>${webpagePath}</netbeans.deploy.clientUrlPart>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                <webapp.projectStage>Development</webapp.projectStage>
+            </properties>
+        </action>
+        <action>
+            <actionName>debug.single.deploy</actionName>
+            <goals>
+                <goal>package</goal>
+            </goals>
+            <properties>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                <netbeans.deploy>true</netbeans.deploy>
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                <netbeans.deploy.debugmode>true</netbeans.deploy.debugmode>
+                <netbeans.deploy.clientUrlPart>${webpagePath}</netbeans.deploy.clientUrlPart>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                <webapp.projectStage>Development</webapp.projectStage>
+            </properties>
+        </action>
+    </actions>
diff --git a/test/agnostic/renderKit/basic/pom.xml b/test/agnostic/renderKit/basic/pom.xml
new file mode 100644
index 0000000..fc9b42b
--- /dev/null
+++ b/test/agnostic/renderKit/basic/pom.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.agnostic.renderKit</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.agnostic.renderKit</groupId>
+    <artifactId>basic</artifactId>
+    <packaging>war</packaging>
+    <name>Mojarra ${project.version} - Test - Agnostic - RenderKit - Basic Tests</name>
+    <build>
+        <finalName>test-agnostic-renderKit-basic</finalName>
+    </build>
+    <properties>
+        <netbeans.hint.deploy.server>gfv3ee6</netbeans.hint.deploy.server>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/test/agnostic/renderKit/basic/src/main/java/com/sun/faces/test/agnostic/renderKit/basic/Bean.java b/test/agnostic/renderKit/basic/src/main/java/com/sun/faces/test/agnostic/renderKit/basic/Bean.java
new file mode 100644
index 0000000..b2f5ac1
--- /dev/null
+++ b/test/agnostic/renderKit/basic/src/main/java/com/sun/faces/test/agnostic/renderKit/basic/Bean.java
@@ -0,0 +1,163 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.agnostic.renderKit.basic;
+
+import com.sun.faces.test.agnostic.renderKit.basic.SelectMany05Bean.HobbitBean;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.RequestScoped;
+import javax.faces.context.FacesContext;
+
+ at ManagedBean
+ at RequestScoped
+
+public class Bean {
+
+    public Bean() {
+        passThroughAttrs = new ConcurrentHashMap<String, Object>();
+        passThroughAttrs.put("literalName", "literalValue");
+        passThroughAttrs.put("elName", FacesContext.getCurrentInstance().getApplication().getExpressionFactory().createValueExpression(FacesContext.getCurrentInstance().getELContext(), "#{facesContext.viewRoot.viewId}", String.class));
+        
+        rendererSpecificAttrs = new ConcurrentHashMap<String, Object>();
+        rendererSpecificAttrs.put("styleClass", "a b c");
+        rendererSpecificAttrs.put("size", FacesContext.getCurrentInstance().getApplication().getExpressionFactory().createValueExpression(FacesContext.getCurrentInstance().getELContext(), "#{bean.one}", Integer.class));
+        
+    }
+    
+    private Map<String, Object> passThroughAttrs;
+    private Map<String, Object> rendererSpecificAttrs;
+
+    public Map<String, Object> getRendererSpecificAttrs() {
+        return rendererSpecificAttrs;
+    }
+
+    public Map<String, Object> getPassThroughAttrs() {
+        return passThroughAttrs;
+    }
+
+    private String nullValue = null;
+
+    public String getNullValue() {
+        return nullValue;
+    }
+
+    public void setNullValue(String nullValue) {
+        this.nullValue = nullValue;
+    }
+    
+    public Integer getOne() { return (Integer) 1; }
+    
+    
+    private String fruitValue;
+
+    public String getFruitValue() {
+        return fruitValue;
+    }
+
+    public void setFruitValue(String stringValue) {
+        this.fruitValue = stringValue;
+    }
+    
+    private String nameValue;
+
+    public String getNameValue() {
+        return nameValue;
+    }
+    
+    List<String> nameValueList;
+
+    public List<String> getNameValueList() {
+        return nameValueList;
+    }
+
+    public void setNameValueList(List<String> nameValueList) {
+        this.nameValueList = nameValueList;
+    }
+
+    public void setNameValue(String nameValue) {
+        this.nameValue = nameValue;
+    }
+    
+    private HobbitBean hobbitBean;
+
+    public HobbitBean getHobbitBean() {
+        return hobbitBean;
+    }
+
+    public void setHobbitBean(HobbitBean hobbitBean) {
+        this.hobbitBean = hobbitBean;
+    }
+    
+    private List<HobbitBean> hobbitBeanList;
+
+    public List<HobbitBean> getHobbitBeanList() {
+        return hobbitBeanList;
+    }
+
+    public void setHobbitBeanList(List<HobbitBean> hobbitBeanList) {
+        this.hobbitBeanList = hobbitBeanList;
+    }
+    
+    
+    
+    private String groupedNameValue;
+
+    public String getGroupedNameValue() {
+        return groupedNameValue;
+    }
+
+    public void setGroupedNameValue(String groupedNameValue) {
+        this.groupedNameValue = groupedNameValue;
+    }
+    
+    private List<String> groupedNameValueList;
+
+    public List<String> getGroupedNameValueList() {
+        return groupedNameValueList;
+    }
+
+    public void setGroupedNameValueList(List<String> groupedNameValueList) {
+        this.groupedNameValueList = groupedNameValueList;
+    }
+    
+}
diff --git a/test/agnostic/renderKit/basic/src/main/java/com/sun/faces/test/agnostic/renderKit/basic/HobbitConverter.java b/test/agnostic/renderKit/basic/src/main/java/com/sun/faces/test/agnostic/renderKit/basic/HobbitConverter.java
new file mode 100644
index 0000000..eaab7e4
--- /dev/null
+++ b/test/agnostic/renderKit/basic/src/main/java/com/sun/faces/test/agnostic/renderKit/basic/HobbitConverter.java
@@ -0,0 +1,77 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.test.agnostic.renderKit.basic;
+
+import com.sun.faces.test.agnostic.renderKit.basic.SelectMany05Bean.HobbitBean;
+import java.util.Collection;
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.convert.Converter;
+import javax.faces.convert.FacesConverter;
+
+ at FacesConverter(value="hobbit-converter")
+public class HobbitConverter implements Converter {
+    
+    @Override
+    public Object getAsObject(FacesContext context, UIComponent component,
+                String value) {
+        SelectMany05Bean bean = new SelectMany05Bean();
+        HobbitBean result = null;
+        Collection<HobbitBean> hobbits = bean.getHobbitCollection();
+        for (HobbitBean cur : hobbits) {
+            if (value.equals(cur.getName())) {
+                result = cur;
+                break;
+            }
+        }
+        
+        
+        return result;
+    }
+
+    @Override
+    public String getAsString(FacesContext context, UIComponent component, Object value) {
+        return ((HobbitBean)value).getName();
+    }
+
+    
+    
+}
diff --git a/test/agnostic/renderKit/basic/src/main/java/com/sun/faces/test/agnostic/renderKit/basic/Issue1830Bean.java b/test/agnostic/renderKit/basic/src/main/java/com/sun/faces/test/agnostic/renderKit/basic/Issue1830Bean.java
new file mode 100644
index 0000000..146464f
--- /dev/null
+++ b/test/agnostic/renderKit/basic/src/main/java/com/sun/faces/test/agnostic/renderKit/basic/Issue1830Bean.java
@@ -0,0 +1,65 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.renderKit.basic;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.RequestScoped;
+
+ at ManagedBean(name = "issue1830Bean")
+ at RequestScoped
+public class Issue1830Bean implements Serializable {
+    /**
+     * Get the repeat.
+     */
+    public List<List<String>> getRepeat() {
+        List<List<String>> result = new ArrayList<List<String>>();
+        for (int i=0; i<10; i++) {
+            List<String> subList = new ArrayList<String>();
+            for(int j=0; j<10; j++) {
+                subList.add(Integer.toString(j));
+            }
+            result.add(subList);
+        }
+        return result;
+    }
+}
diff --git a/test/agnostic/renderKit/basic/src/main/java/com/sun/faces/test/agnostic/renderKit/basic/Issue2065Bean.java b/test/agnostic/renderKit/basic/src/main/java/com/sun/faces/test/agnostic/renderKit/basic/Issue2065Bean.java
new file mode 100644
index 0000000..f1b4690
--- /dev/null
+++ b/test/agnostic/renderKit/basic/src/main/java/com/sun/faces/test/agnostic/renderKit/basic/Issue2065Bean.java
@@ -0,0 +1,72 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.renderKit.basic;
+
+import java.io.Serializable;
+import java.util.Iterator;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.RequestScoped;
+import javax.faces.context.FacesContext;
+import javax.faces.FactoryFinder;
+import javax.faces.render.RenderKit;
+import javax.faces.render.RenderKitFactory;
+
+ at ManagedBean(name = "issue2065Bean")
+ at RequestScoped
+public class Issue2065Bean implements Serializable {
+
+    private RenderKit renderkit;
+
+    public Issue2065Bean() {
+        FacesContext facesContext = FacesContext.getCurrentInstance();
+        RenderKitFactory renderFactory = (RenderKitFactory) FactoryFinder.getFactory(FactoryFinder.RENDER_KIT_FACTORY);
+        renderkit = renderFactory.getRenderKit(facesContext, facesContext.getViewRoot().getRenderKitId());
+        Issue2065ClientBehaviorRenderer clientBehaviorRenderer = new Issue2065ClientBehaviorRenderer();
+        renderkit.addClientBehaviorRenderer("com.sun.faces.test.agnostic.renderKit.basic.Issue2065ClientBehaviorRenderer", clientBehaviorRenderer);
+    }
+
+    public String getClientBehaviorRendererTypes() {
+        String types = "";
+        for (Iterator<String> iter = renderkit.getClientBehaviorRendererTypes(); iter.hasNext();) {
+            types += iter.next() + ";";
+        }
+        return types;
+    }
+}
diff --git a/test/agnostic/renderKit/basic/src/main/java/com/sun/faces/test/agnostic/renderKit/basic/Issue2065ClientBehaviorRenderer.java b/test/agnostic/renderKit/basic/src/main/java/com/sun/faces/test/agnostic/renderKit/basic/Issue2065ClientBehaviorRenderer.java
new file mode 100644
index 0000000..bd44932
--- /dev/null
+++ b/test/agnostic/renderKit/basic/src/main/java/com/sun/faces/test/agnostic/renderKit/basic/Issue2065ClientBehaviorRenderer.java
@@ -0,0 +1,45 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.renderKit.basic;
+
+import javax.faces.render.ClientBehaviorRenderer;
+
+public class Issue2065ClientBehaviorRenderer extends ClientBehaviorRenderer {
+}
diff --git a/test/agnostic/renderKit/basic/src/main/java/com/sun/faces/test/agnostic/renderKit/basic/Issue2613Bean.java b/test/agnostic/renderKit/basic/src/main/java/com/sun/faces/test/agnostic/renderKit/basic/Issue2613Bean.java
new file mode 100644
index 0000000..4475d98
--- /dev/null
+++ b/test/agnostic/renderKit/basic/src/main/java/com/sun/faces/test/agnostic/renderKit/basic/Issue2613Bean.java
@@ -0,0 +1,78 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.renderKit.basic;
+
+import java.io.Serializable;
+import java.util.Collections;
+import java.util.Enumeration;
+import java.util.List;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.SessionScoped;
+import javax.faces.context.FacesContext;
+import javax.servlet.http.HttpServletRequest;
+
+ at ManagedBean(name = "issue2613Bean")
+ at SessionScoped
+public class Issue2613Bean implements Serializable {
+
+    private List<String> parameterNames = null;
+    private int parameterCount = 0;
+
+    public List<String> getParameterNames() {
+        FacesContext context = FacesContext.getCurrentInstance();
+        parameterNames = Collections.list((Enumeration<String>)((
+            HttpServletRequest)context.getExternalContext().getRequest()).getParameterNames());
+        Collections.sort(parameterNames);
+        return parameterNames;
+    }
+
+    public void setParameterNames(List<String> parameterNames) {
+        this.parameterNames = parameterNames;
+    }
+
+    public int getParameterCount() {
+        parameterCount = parameterNames.size();
+        return parameterCount;
+    } 
+
+    public void setParameterCount(int parameterCount) {
+        this.parameterCount = parameterCount;
+    }
+}
diff --git a/test/agnostic/renderKit/basic/src/main/java/com/sun/faces/test/agnostic/renderKit/basic/SelectMany05Bean.java b/test/agnostic/renderKit/basic/src/main/java/com/sun/faces/test/agnostic/renderKit/basic/SelectMany05Bean.java
new file mode 100644
index 0000000..c3a23ac
--- /dev/null
+++ b/test/agnostic/renderKit/basic/src/main/java/com/sun/faces/test/agnostic/renderKit/basic/SelectMany05Bean.java
@@ -0,0 +1,433 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.agnostic.renderKit.basic;
+
+import java.util.Set;
+import java.util.List;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Collections;
+import java.util.SortedSet;
+import java.util.TreeSet;
+import java.util.ArrayList;
+import java.util.LinkedHashSet;
+import java.util.Vector;
+import java.util.LinkedList;
+import java.util.Arrays;
+import java.util.Comparator;
+import java.util.concurrent.CopyOnWriteArraySet;
+
+import javax.faces.model.SelectItem;
+import javax.faces.model.DataModel;
+import javax.faces.model.ListDataModel;
+import javax.faces.FacesException;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.RequestScoped;
+import javax.faces.model.SelectItemGroup;
+
+ at ManagedBean
+ at RequestScoped
+
+public class SelectMany05Bean {
+
+    // As IBM j9 JRE/JDK does not use a static instance for reverseOrder()
+    // we need to keep a static instance to make equals() work
+    private static final Comparator<String> REVERSE_COMPARATOR = Collections.reverseOrder();
+
+    private final Collection<SelectItem> possibleValues;
+    private Set<String> setValues;
+    private SortedSet<String> sortedSetValues;
+    private List<String> listValues;
+    private Collection<String> collectionValues;
+    private String[] arrayValues;
+    private SortedSet<String> initialSortedSetValues;
+    private Collection<String> initialCollectionValues;
+    private Set<String> initialSetValues;
+    private List<String> initialListValues;
+    private Collection<String> collectionFromHintValues;
+    private Collection<String> collectionFromHintValues2;
+    private Object someValues;
+    private Collection<HobbitBean> hobbitCollection;
+    private DataModel<HobbitBean> hobbitDataModel;
+    
+    private List<SelectItem> groupedItems;
+
+    public void setGroupedItems(List<SelectItem> groupedItems) {
+        this.groupedItems = groupedItems;
+    }
+
+    public List<SelectItem> getGroupedItems() {
+        return groupedItems;
+    }
+
+    // ------------------------------------------------------------ Constructors
+
+    public SelectMany05Bean() {
+        HobbitBean[] hobbits = getHobbitBeanArray();
+
+        Set<SelectItem> items = new LinkedHashSet<SelectItem>();
+        for (HobbitBean hobbit : hobbits) {
+            items.add(new SelectItem(hobbit.getName()));
+        }
+        hobbitCollection = new TreeSet<HobbitBean>();
+        hobbitCollection.addAll(Arrays.asList(hobbits));
+        possibleValues = Collections.unmodifiableSet(items);
+        initialSortedSetValues = new TreeSet<String>(REVERSE_COMPARATOR);
+        initialSortedSetValues.add("Pippin");
+        initialSortedSetValues.add("Frodo");
+        initialCollectionValues = new LinkedHashSet<String>(2);
+        initialCollectionValues.add("Bilbo");
+        initialCollectionValues.add("Merry");
+        initialSetValues = new CopyOnWriteArraySet<String>(); // not Cloneable
+        initialSetValues.add("Frodo");
+        initialListValues = new Vector<String>();
+        initialListValues.add("Bilbo");
+        initialListValues.add("Pippin");
+        initialListValues.add("Merry");
+        hobbitDataModel = new ListDataModel<HobbitBean>(new ArrayList<HobbitBean>(Arrays.asList(hobbits)));
+        
+        String strings [] = { "Bobby", "Jerry", "Phil", "Mickey", "Billy", "Brent" };
+        setArrayValues(strings);
+        
+        groupedItems = new ArrayList<SelectItem>();
+        SelectItemGroup group = new SelectItemGroup("Pitched Instruments");
+        SelectItem [] selectItemInstances = new SelectItem[3];
+        selectItemInstances[0] = new SelectItem("Bobby", "Bobby");
+        selectItemInstances[1] = new SelectItem("Jerry", "Jerry");
+        selectItemInstances[2] = new SelectItem("Brent", "Brent");
+        group.setSelectItems(selectItemInstances);
+        groupedItems.add(group);
+        
+        group = new SelectItemGroup("Percussion");
+        selectItemInstances = new SelectItem[2];
+        selectItemInstances[0] = new SelectItem("Mickey", "Mickey");
+        selectItemInstances[1] = new SelectItem("Billy", "Billy");
+        group.setSelectItems(selectItemInstances);
+        groupedItems.add(group);
+        
+    }
+    
+    protected HobbitBean [] getHobbitBeanArray() {
+        HobbitBean[] hobbits = {
+              new HobbitBean("Bilbo", "Bilbo - <Ring Finder>"),
+              new HobbitBean("Frodo", "Frodo - <Ring Bearer>"),
+              new HobbitBean("Merry", "Merry - <Trouble Maker>"),
+              new HobbitBean("Pippin", "Pipping - <Trouble Maker>")
+        };
+        return hobbits;
+    }
+
+
+
+   // ---------------------------------------------------------- Public Methods
+    
+    public Collection<HobbitBean> getHobbitCollection() {
+        return hobbitCollection;
+    }
+
+    public DataModel<HobbitBean> getHobbitDataModel() {
+        return hobbitDataModel;
+    }
+
+    public Set<String> getSetValues() {
+        return setValues;
+    }
+
+    public void setSetValues(Set<String> setValues) {
+        if (!(setValues instanceof HashSet)) {
+            throw new FacesException("[setSetValues] Error: Expected value to be ArrayList");
+        }
+        this.setValues = setValues;
+    }
+
+    public List<String> getListValues() {
+        return listValues;
+    }
+
+    public void setListValues(List<String> listValues) {
+        if (!(listValues instanceof ArrayList)) {
+            throw new FacesException("[setListValues] Error: Expected value to be ArrayList");
+        }
+        this.listValues = listValues;
+    }
+
+    public String[] getArrayValues() {
+        return arrayValues;
+    }
+
+    public void setArrayValues(String[] arrayValues) {
+        this.arrayValues = arrayValues;
+    }
+
+    public SortedSet<String> getSortedSetValues() {
+        return sortedSetValues;
+    }
+
+    public void setSortedSetValues(SortedSet<String> sortedSetValues) {
+        if (!(sortedSetValues instanceof TreeSet)) {
+            throw new FacesException("[setSortedSetValues] Error: Expected value to be TreeSet");
+        }
+        if (((TreeSet) sortedSetValues).comparator() != null) {
+            throw new FacesException("[setSortedSetValues] Error: Expected null comparator");
+        }
+        this.sortedSetValues = sortedSetValues;
+    }
+
+    public Collection<String> getCollectionValues() {
+        return collectionValues;
+    }
+
+    public void setCollectionValues(Collection<String> collectionValues) {
+        if (!(collectionValues instanceof ArrayList)) {
+            throw new FacesException("[setCollectionValues] Error: Expected value to be ArrayList");
+        }
+        this.collectionValues = collectionValues;
+    }
+
+    public Collection<SelectItem> getPossibleValues() {
+        return possibleValues;
+    }
+
+    public Collection<?> getEmptyCollection() {
+        return Collections.emptyList();
+    }
+
+    ////////////////////////////////////////////////////////////////////////////
+
+
+    public SortedSet<String> getInitialSortedSetValues() {
+        return initialSortedSetValues;
+    }
+
+    public void setInitialSortedSetValues(SortedSet<String> initialSortedSetValues) {
+        if (!(initialSortedSetValues instanceof TreeSet)) {
+            throw new FacesException("[setInitialSortedSetValues] Error: Expected value to be TreeSet");
+        }
+
+        if (!REVERSE_COMPARATOR.equals(initialSortedSetValues.comparator())) {
+            throw new FacesException("[setInitialSortedSetValues] Error: Comparator is not equivalent to Collections.reverseOrder()");
+        }
+
+// This comparison fails on AIX platform, so we do the above comparison
+//        if (!Collections.reverseOrder().equals(((TreeSet) initialSortedSetValues).comparator())) {
+//            throw new FacesException("[setInitialSortedSetValues] Error: Comparator is not equivalent to Collections.reverseOrder()");
+//        }
+        this.initialSortedSetValues = initialSortedSetValues;
+    }
+
+    public Collection<String> getInitialCollectionValues() {
+        return initialCollectionValues;
+    }
+
+    public void setInitialCollectionValues(Collection<String> initialCollectionValues) {
+        if (!(initialCollectionValues instanceof LinkedHashSet)) {
+            throw new FacesException("[setCollectionValues] Error: Expected value to be LinkedHashSet");
+        }
+        this.initialCollectionValues = initialCollectionValues;
+    }
+
+    public Set<String> getInitialSetValues() {
+        return initialSetValues;
+    }
+
+    public void setInitialSetValues(Set<String> initialSetValues) {
+        if (!(initialSetValues instanceof CopyOnWriteArraySet)) {
+            throw new FacesException("[initialSetValues] Error: Expected value to be CopyOnWriteArraySet");
+        }
+        this.initialSetValues = initialSetValues;
+    }
+
+    public List<String> getInitialListValues() {
+        return initialListValues;
+    }
+
+    public void setInitialListValues(List<String> initialListValues) {
+        if (!(initialListValues instanceof Vector)) {
+            throw new FacesException("[initialListValues] Error: Expected value to be Vector");
+        }
+        this.initialListValues = initialListValues;
+    }
+
+    ////////////////////////////////////////////////////////////////////////////
+
+    public Collection<String> getCollectionFromHintValues() {
+        return collectionFromHintValues;
+    }
+
+    public void setCollectionFromHintValues(Collection<String> collectionFromHintValues) {
+        if (!(collectionFromHintValues instanceof LinkedList)) {
+            throw new FacesException("[collectionFromHintValues] Error: Expected value to be LinkedList");
+        }
+        this.collectionFromHintValues = collectionFromHintValues;
+    }
+
+     public Collection<String> getCollectionFromHintValues2() {
+        return collectionFromHintValues2;
+    }
+
+    public void setCollectionFromHintValues2(Collection<String> collectionFromHintValues) {
+        if (!(collectionFromHintValues instanceof LinkedList)) {
+            throw new FacesException("[collectionFromHintValues2] Error: Expected value to be LinkedList");
+        }
+        this.collectionFromHintValues2 = collectionFromHintValues;
+    }
+
+    public Class<? extends Collection> getCollectionType() {
+        return LinkedList.class;
+    }
+
+    ////////////////////////////////////////////////////////////////////////////
+
+    private int[] selectedIntValues;
+    private int[] intOptions = new int[] { 1, 2, 3, 4 };
+
+    public int[] getSelectedIntValues() {
+        return selectedIntValues;
+    }
+
+    public void setSelectedIntValues(int[] selectedIntValues) {
+        this.selectedIntValues = selectedIntValues;
+    }
+
+    public int[] getIntOptions() {
+        return intOptions;
+    }
+
+    ////////////////////////////////////////////////////////////////////////////
+
+    private Integer[] selectedIntegerValues;
+    private Integer[] integerOptions = new Integer[] { 1, 2, 3, 4 };
+
+    public Integer[] getSelectedIntegerValues() {
+        return selectedIntegerValues;
+    }
+
+    public void setSelectedIntegerValues(Integer[] selectedIntegerValues) {
+        this.selectedIntegerValues = selectedIntegerValues;
+    }
+
+    public Integer[] getIntegerOptions() {
+        return integerOptions;
+    }
+
+    ////////////////////////////////////////////////////////////////////////////
+
+    public Object getSomeValues() {
+        return someValues;
+    }
+
+    public void setSomeValues(Object someValues) {
+        // validate the case where the type is Object.class.  The logic should
+        // default the value to Object[].
+        if (!someValues.getClass().isArray()) {
+            throw new FacesException("[someValues] Error: Expected value to be an array type");
+        }
+        this.someValues = someValues;
+    }
+
+
+    // ---------------------------------------------------------- Nested Classes
+
+
+    public static final class HobbitBean implements Comparable {
+
+        private String name;
+        private String bio;
+
+
+        // -------------------------------------------------------- Constructors
+
+
+        public HobbitBean(String name, String bio) {
+            this.name = name;
+            this.bio = bio;
+        }
+
+
+        public String getName() {
+            return name;
+        }
+
+        public String getBio() {
+            return bio;
+        }
+
+        @Override
+        public String toString() {
+            return name;
+        }
+
+        @Override
+        public boolean equals(Object obj) {
+            if (obj == null) {
+                return false;
+            }
+            if (getClass() != obj.getClass()) {
+                return false;
+            }
+            final HobbitBean other = (HobbitBean) obj;
+            if ((this.name == null) ? (other.name != null) : !this.name.equals(other.name)) {
+                return false;
+            }
+            if ((this.bio == null) ? (other.bio != null) : !this.bio.equals(other.bio)) {
+                return false;
+            }
+            return true;
+        }
+
+        @Override
+        public int hashCode() {
+            int hash = 7;
+            hash = 29 * hash + (this.name != null ? this.name.hashCode() : 0);
+            hash = 29 * hash + (this.bio != null ? this.bio.hashCode() : 0);
+            return hash;
+        }
+        
+        
+
+        // --------------------------------------------- Methods from Comparable
+
+
+        public int compareTo(Object o) {
+            return name.compareTo(((HobbitBean) o).name);
+        }
+    }
+}
diff --git a/test/agnostic/renderKit/basic/src/main/java/com/sun/faces/test/render/ButtonRenderer.java b/test/agnostic/renderKit/basic/src/main/java/com/sun/faces/test/render/ButtonRenderer.java
new file mode 100644
index 0000000..a3679ca
--- /dev/null
+++ b/test/agnostic/renderKit/basic/src/main/java/com/sun/faces/test/render/ButtonRenderer.java
@@ -0,0 +1,286 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+// ButtonRenderer.java
+
+package com.sun.faces.test.render;
+
+import com.sun.faces.renderkit.Attribute;
+import com.sun.faces.renderkit.AttributeManager;
+import com.sun.faces.renderkit.RenderKitUtils;
+import com.sun.faces.util.MessageUtils;
+import com.sun.faces.util.Util;
+
+import javax.faces.component.NamingContainer;
+import javax.faces.component.UICommand;
+import javax.faces.component.UIComponent;
+import javax.faces.component.UIViewRoot;
+import javax.faces.component.UINamingContainer;
+import javax.faces.context.FacesContext;
+import javax.faces.context.ResponseWriter;
+import javax.faces.event.ActionEvent;
+import javax.faces.render.Renderer;
+
+import java.io.IOException;
+import java.util.Map;
+
+/**
+ * <B>ButtonRenderer</B> is a class that renders the current value of
+ * <code>UICommand<code> as a Button.
+ */
+
+public class ButtonRenderer extends Renderer {
+
+    private static final Attribute[] ATTRIBUTES =
+          AttributeManager.getAttributes(AttributeManager.Key.COMMANDBUTTON);
+
+    public static final String CLEAR_HIDDEN_FIELD_FN_NAME = 
+         "clearFormHiddenParams";
+    public static final String FORM_CLIENT_ID_ATTR = 
+         "com.sun.faces.FORM_CLIENT_ID_ATTR";
+
+    //
+    // Protected Constants
+    //
+    // Log instance for this class
+
+    //
+    // Class Variables
+    //
+
+    //
+    // Instance Variables
+    //
+
+    // Attribute Instance Variables
+
+
+    // Relationship Instance Variables
+
+    //
+    // Constructors and Initializers    
+    //
+
+    //
+    // Class methods
+    //
+
+    //
+    // General Methods
+    //
+    
+    //
+    // Methods From Renderer
+    //
+
+    public void decode(FacesContext context, UIComponent component) {
+        if (context == null) {
+            throw new NullPointerException(
+                MessageUtils.getExceptionMessageString(MessageUtils.NULL_PARAMETERS_ERROR_MESSAGE_ID, "context"));
+        }
+        if (component == null) {
+            throw new NullPointerException(
+                MessageUtils.getExceptionMessageString(MessageUtils.NULL_PARAMETERS_ERROR_MESSAGE_ID, "component"));
+        }
+
+        // If the component is disabled, do not change the value of the
+        // component, since its state cannot be changed.
+        if (Util.componentIsDisabledOrReadonly(component)) {
+            return;
+        } 
+
+
+        // Was our command the one that caused this submission?
+        // we don' have to worry about getting the value from request parameter
+        // because we just need to know if this command caused the submission. We
+        // can get the command name by calling currentValue. This way we can 
+        // get around the IE bug.
+        String clientId = component.getClientId(context);
+        Map requestParameterMap = context.getExternalContext()
+            .getRequestParameterMap();
+        String value = (String) requestParameterMap.get(clientId);
+        if (value == null) {
+            if (requestParameterMap.get(clientId + ".x") == null &&
+                requestParameterMap.get(clientId + ".y") == null) {
+                return;
+            }
+        }
+
+        String type = (String) component.getAttributes().get("type");
+        if ((type != null) && (type.toLowerCase().equals("reset"))) {
+            return;
+        }
+        ActionEvent actionEvent = new ActionEvent(component);
+        component.queueEvent(actionEvent);
+
+
+        return;
+    }
+
+
+    public void encodeBegin(FacesContext context, UIComponent component)
+        throws IOException {
+        if (context == null) {
+            throw new NullPointerException(
+                MessageUtils.getExceptionMessageString(MessageUtils.NULL_PARAMETERS_ERROR_MESSAGE_ID, "context"));
+        }
+        if (component == null) {
+            throw new NullPointerException(
+                MessageUtils.getExceptionMessageString(MessageUtils.NULL_PARAMETERS_ERROR_MESSAGE_ID, "component"));
+        }
+        // suppress rendering if "rendered" property on the component is
+        // false.
+        if (!component.isRendered()) {
+            return;
+        }
+        
+        // Which button type (SUBMIT, RESET, or BUTTON) should we generate?
+        String type = (String) component.getAttributes().get("type");
+        String styleClass = null;
+        if (type == null) {
+            type = "submit";
+            // This is needed in the decode method
+            component.getAttributes().put("type", type);
+        }
+
+        ResponseWriter writer = context.getResponseWriter();
+        assert (writer != null);
+
+        String label = "";
+        Object value = ((UICommand) component).getValue();
+        if (value != null) {
+            label = value.toString();
+        }
+        String imageSrc = (String) component.getAttributes().get("image");
+        writer.startElement("input", component);
+        writeIdAttributeIfNecessary(context, writer, component);
+	String clientId = component.getClientId(context);
+        if (imageSrc != null) {
+            writer.writeAttribute("type", "image", "type");
+            writer.writeURIAttribute("src", src(context, imageSrc), "image");
+            writer.writeAttribute("name", clientId, "clientId");
+        } else {
+            writer.writeAttribute("type", type.toLowerCase(), "type");
+            writer.writeAttribute("name", clientId, "clientId");
+            writer.writeAttribute("value", label, "value");
+        }
+        
+        // look up the clientId of the form in request scope to arrive the name of
+        // the javascript function to invoke from the onclick event handler.
+        // PENDING (visvan) we need to fix this dependency between the renderers.
+        // This solution is only temporary.
+        Map requestMap = context.getExternalContext().getRequestMap();
+        String formClientId = (String)requestMap.get(FORM_CLIENT_ID_ATTR);
+        
+        StringBuffer sb = new StringBuffer();
+        // call the javascript function that clears the all the hidden field
+        // parameters in the form.
+        sb.append(CLEAR_HIDDEN_FIELD_FN_NAME);
+        if (formClientId != null) {
+            sb.append("_").append(formClientId.replace(UINamingContainer.getSeparatorChar(context), '_'));
+        }
+        sb.append("(this.form.id);");
+        // append user specified script for onclick if any.
+        String onclickAttr = (String)component.getAttributes().get("onclick");
+        if (onclickAttr != null && onclickAttr.length() != 0) {
+            sb.append(onclickAttr);
+            
+        }
+        writer.writeAttribute("onclick", sb.toString(), null);
+
+        RenderKitUtils.renderPassThruAttributes(context,
+              writer,
+                                                component,
+                                                ATTRIBUTES);
+        RenderKitUtils.renderXHTMLStyleBooleanAttributes(writer, component);
+
+        if (null != (styleClass = (String)
+            component.getAttributes().get("styleClass"))) {
+            writer.writeAttribute("class", styleClass, "styleClass");
+        }
+        writer.endElement("input");
+    }
+
+    public void encodeEnd(FacesContext context, UIComponent component)
+        throws IOException {
+        if (context == null) {
+            throw new NullPointerException(
+                MessageUtils.getExceptionMessageString(MessageUtils.NULL_PARAMETERS_ERROR_MESSAGE_ID, "context"));
+        }
+        if (component == null) {
+            throw new NullPointerException(
+                MessageUtils.getExceptionMessageString(MessageUtils.NULL_PARAMETERS_ERROR_MESSAGE_ID, "component"));
+        }
+    }
+
+    //
+    // General Methods
+    //
+       
+    private String src(FacesContext context, String value) {
+        if (value == null) {
+            return "";
+        }
+        value = context.getApplication().getViewHandler().
+            getResourceURL(context, value);
+        return (context.getExternalContext().encodeResourceURL(value));
+    }
+                                                                                                          
+    private boolean shouldWriteIdAttribute(UIComponent component) {
+        String id;
+        return (null != (id = component.getId()) &&
+            !id.startsWith(UIViewRoot.UNIQUE_ID_PREFIX));
+    }
+
+    private void writeIdAttributeIfNecessary(FacesContext context,
+                                               ResponseWriter writer,
+                                               UIComponent component) {
+        String id;
+        if (shouldWriteIdAttribute(component)) {
+            try {
+                writer.writeAttribute("id", component.getClientId(context),
+                                      "id");
+            } catch (IOException e) {
+            }
+        }
+    }
+
+
+} // end of class ButtonRenderer
diff --git a/test/agnostic/renderKit/basic/src/main/java/com/sun/faces/test/render/CustomRenderKitImpl.java b/test/agnostic/renderKit/basic/src/main/java/com/sun/faces/test/render/CustomRenderKitImpl.java
new file mode 100644
index 0000000..cf54121
--- /dev/null
+++ b/test/agnostic/renderKit/basic/src/main/java/com/sun/faces/test/render/CustomRenderKitImpl.java
@@ -0,0 +1,243 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+// CustomRenderKitImpl.java
+
+package com.sun.faces.test.render;
+
+import com.sun.faces.util.MessageUtils;
+import com.sun.faces.renderkit.ResponseStateManagerImpl;
+
+import javax.faces.context.ResponseStream;
+import javax.faces.context.ResponseWriter;
+import javax.faces.render.RenderKit;
+import javax.faces.render.Renderer;
+import javax.faces.render.ResponseStateManager;
+
+import java.io.IOException;
+import java.io.OutputStream;
+import java.io.Writer;
+import java.util.HashMap;
+
+/**
+ * <B>CustomRenderKitImpl</B> is a class ...
+ * <p/>
+ * <B>Lifetime And Scope</B> <P>
+ *
+ */
+
+public class CustomRenderKitImpl extends RenderKit {
+
+//
+// Protected Constants
+//
+
+//
+// Class Variables
+//
+
+//
+// Instance Variables
+//
+    // used for ResponseWriter creation;
+    private final static String HTML_CONTENT_TYPE = "text/html";
+    private final static String CHAR_ENCODING = "ISO-8859-1";
+//
+// Ivars used during actual client lifetime
+//
+
+// Relationship Instance Variables
+
+    /**
+     * Keys are String renderer family.  Values are HashMaps.  Nested
+     * HashMap keys are Strings for the rendererType, and values are the
+     * Renderer instances themselves.
+     */
+
+    private HashMap rendererFamilies;
+
+    private ResponseStateManager responseStateManager = null;
+//
+// Constructors and Initializers    
+//
+
+    public CustomRenderKitImpl() {
+        super();
+	rendererFamilies = new HashMap();
+    }
+
+
+    //
+    // Class methods
+    //
+
+    //
+    // General Methods
+    //
+
+    //
+    // Methods From RenderKit
+    //
+
+    public void addRenderer(String family, String rendererType,
+                            Renderer renderer) {
+        if (family == null) {
+            String message = MessageUtils.getExceptionMessageString
+                (MessageUtils.NULL_PARAMETERS_ERROR_MESSAGE_ID, "family");
+            throw new NullPointerException(message);
+                
+        }
+        if (rendererType == null) {
+            String message = MessageUtils.getExceptionMessageString
+                (MessageUtils.NULL_PARAMETERS_ERROR_MESSAGE_ID, "rendererType");
+            throw new NullPointerException(message);
+                
+        }
+        if (renderer == null) {
+            String message = MessageUtils.getExceptionMessageString
+                (MessageUtils.NULL_PARAMETERS_ERROR_MESSAGE_ID, "renderer");
+            throw new NullPointerException(message);
+                
+        }
+        HashMap renderers = null;
+
+        synchronized (rendererFamilies) {
+	    // PENDING(edburns): generics would be nice here.
+	    if (null == (renderers = (HashMap) rendererFamilies.get(family))) {
+		rendererFamilies.put(family, renderers = new HashMap());
+	    }
+            renderers.put(rendererType, renderer);
+        }
+    }
+
+
+    public Renderer getRenderer(String family, String rendererType) {
+
+        if (rendererType == null) {
+            String message = MessageUtils.getExceptionMessageString
+                (MessageUtils.NULL_PARAMETERS_ERROR_MESSAGE_ID, "rendererType");
+            throw new NullPointerException(message);
+        }
+        if (family == null) {
+            String message = MessageUtils.getExceptionMessageString
+                (MessageUtils.NULL_PARAMETERS_ERROR_MESSAGE_ID, "family");
+            throw new NullPointerException(message);
+        }
+
+        assert (rendererFamilies != null);
+
+        HashMap renderers = null;
+        Renderer renderer = null;
+
+	if (null != (renderers = (HashMap) rendererFamilies.get(family))) {
+	    renderer = (Renderer) renderers.get(rendererType);
+	}
+	
+        return renderer;
+    }
+
+
+    public synchronized ResponseStateManager getResponseStateManager() {
+        if (responseStateManager == null) {
+            responseStateManager = new ResponseStateManagerImpl();
+        }
+        return responseStateManager;
+    }
+
+
+    public ResponseWriter createResponseWriter(Writer writer, String contentTypeList,
+                                               String characterEncoding) {
+        if (writer == null) {
+            return null;
+        }
+        // Set the default content type to html;  However, if a content type list
+        // argument was specified, make sure it contains an html content type;
+        // PENDING(rogerk) ideally, we want to analyze the content type string
+        // in more detail, to determine the preferred content type - as outlined in
+        // http://www.ietf.org/rfc/rfc2616.txt?number=2616 - Section 14.1
+        // (since this is not an html renderkit);
+        //
+        String contentType = HTML_CONTENT_TYPE;
+        if (contentTypeList != null) {
+            if (contentTypeList.indexOf(contentType) < 0) {
+                throw new IllegalArgumentException(MessageUtils.getExceptionMessageString(
+                    MessageUtils.CONTENT_TYPE_ERROR_MESSAGE_ID));
+            }
+        }
+        if (characterEncoding == null) {
+            characterEncoding = CHAR_ENCODING;
+        }
+
+        return new CustomResponseWriter(writer, contentType, characterEncoding);
+    }
+
+
+    public ResponseStream createResponseStream(OutputStream out) {
+        final OutputStream output = out;
+        return new ResponseStream() {
+            public void write(int b) throws IOException {
+                output.write(b);
+            }
+
+
+            public void write(byte b[]) throws IOException {
+                output.write(b);
+            }
+
+
+            public void write(byte b[], int off, int len) throws IOException {
+                output.write(b, off, len);
+            }
+
+
+            public void flush() throws IOException {
+                output.flush();
+            }
+
+
+            public void close() throws IOException {
+                output.close();
+            }
+        };
+    }       
+    // The test for this class is in TestRenderKit.java
+
+} // end of class CustomRenderKitImpl
+
diff --git a/test/agnostic/renderKit/basic/src/main/java/com/sun/faces/test/render/CustomResponseWriter.java b/test/agnostic/renderKit/basic/src/main/java/com/sun/faces/test/render/CustomResponseWriter.java
new file mode 100644
index 0000000..97888b5
--- /dev/null
+++ b/test/agnostic/renderKit/basic/src/main/java/com/sun/faces/test/render/CustomResponseWriter.java
@@ -0,0 +1,588 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.render;
+
+import javax.faces.FacesException;
+import javax.faces.component.UIComponent;
+import javax.faces.context.ResponseWriter;
+
+import java.io.IOException;
+import java.io.Writer;
+
+import com.sun.faces.util.HtmlUtils;
+import com.sun.faces.util.MessageUtils;
+
+
+/**
+ * <p><strong>CustomResponseWriter</strong> is an Html specific implementation
+ * of the <code>ResponseWriter</code> abstract class.
+ * Kudos to Adam Winer (Oracle) for much of this code.
+ */
+public class CustomResponseWriter extends ResponseWriter {
+
+    // Content Type for this Writer.
+    //
+    private String contentType = "text/html";
+
+    // Character encoding of that Writer - this may be null
+    // if the encoding isn't known.
+    //
+    private String encoding = null;
+
+    // Writer to use for output;
+    //
+    private Writer writer = null;
+
+    // True when we need to close a start tag
+    //
+    private boolean closeStart;
+
+    // True when we shouldn't be escaping output (basically,
+    // inside of <script> and <style> elements).
+    //
+    private boolean dontEscape;
+
+    // Internal buffer used when outputting properly escaped information
+    // using HtmlUtils class.
+    //
+    private char[] buffer = new char[1028];
+
+    // Internal buffer for to store the result of String.getChars() for
+    // values passed to the writer as String to reduce the overhead
+    // of String.charAt().  This buffer will be grown, if necessary, to
+    // accomodate larger values.
+    private char[] textBuffer = new char[128];
+
+    private char[] charHolder = new char[1];
+
+
+    /**
+     * Constructor sets the <code>ResponseWriter</code> and
+     * encoding.
+     *
+     * @param writer      the <code>ResponseWriter</code>
+     * @param contentType the content type.
+     * @param encoding    the character encoding.
+     * @throws if the encoding is not recognized.
+     */
+    public CustomResponseWriter(Writer writer, String contentType, String encoding)
+        throws FacesException {
+        this.writer = writer;
+        if (null != contentType) {
+            this.contentType = contentType;
+        }
+        this.encoding = encoding;
+
+        // Check the character encoding
+        // Check the character encoding
+        if (!HtmlUtils.validateEncoding(encoding)) {
+            throw new IllegalArgumentException(MessageUtils.getExceptionMessageString(
+                  MessageUtils.ENCODING_ERROR_MESSAGE_ID));    
+        }
+    }
+
+
+    /**
+     * @return the content type such as "text/html" for this ResponseWriter.
+     */
+    public String getContentType() {
+        return contentType;
+    }
+
+
+    /**
+     * @return the character encoding, such as "ISO-8859-1" for this
+     *         ResponseWriter.  Refer to:
+     *         <a href="http://www.iana.org/assignments/character-sets">theIANA</a>
+     *         for a list of character encodings.
+     */
+    public String getCharacterEncoding() {
+        return encoding;
+    }
+
+
+    /**
+     * <p>Write the text that should begin a response.</p>
+     *
+     * @throws IOException if an input/output error occurs
+     */
+    public void startDocument() throws IOException {
+        // do nothing;
+    }
+
+
+    /**
+     * Output the text for the end of a document.
+     */
+    public void endDocument() throws IOException {
+        writer.flush();
+    }
+
+
+    /**
+     * Flush any buffered output to the contained writer.
+     *
+     * @throws IOException if an input/output error occurs.
+     */
+    public void flush() throws IOException {
+        // NOTE: Internal buffer's contents (the ivar "buffer") is
+        // written to the contained writer in the HtmlUtils class - see
+        // HtmlUtils.flushBuffer method; Buffering is done during
+        // writeAttribute/writeText - otherwise, output is written
+        // directly to the writer (ex: writer.write(....)..
+        //
+        // close any previously started element, if necessary
+        closeStartIfNecessary();
+    }
+
+
+    /**
+     * <p>Write the start of an element, up to and including the
+     * element name.  Clients call <code>writeAttribute()</code> or
+     * <code>writeURIAttribute()</code> methods to add attributes after
+     * calling this method.
+     *
+     * @param name                Name of the starting element
+     * @param componentForElement The UIComponent instance that applies to this
+     *                            element.  This argument may be <code>null</code>.
+     * @throws IOException          if an input/output error occurs
+     * @throws NullPointerException if <code>name</code>
+     *                              is <code>null</code>
+     */
+    public void startElement(String name, UIComponent componentForElement)
+        throws IOException {
+        if (name == null) {
+            throw new NullPointerException(MessageUtils.getExceptionMessageString(
+                MessageUtils.NULL_PARAMETERS_ERROR_MESSAGE_ID, "name"));
+        }
+        closeStartIfNecessary();
+        char firstChar = name.charAt(0);
+        if ((firstChar == 's') ||
+            (firstChar == 'S')) {
+            if ("script".equalsIgnoreCase(name) ||
+                "style".equalsIgnoreCase(name)) {
+                dontEscape = true;
+            }
+        }
+        
+        
+        //PENDING (horwat) using String as a result of Tomcat char writer
+        //         ArrayIndexOutOfBoundsException (3584)
+        writer.write("<");
+        writer.write(name);
+        closeStart = true;
+    }
+
+
+    /**
+     * <p>Write the end of an element. This method will first
+     * close any open element created by a call to
+     * <code>startElement()</code>.
+     *
+     * @param name Name of the element to be ended
+     * @throws IOException          if an input/output error occurs
+     * @throws NullPointerException if <code>name</code>
+     *                              is <code>null</code>
+     */
+    public void endElement(String name) throws IOException {
+        if (name == null) {
+            throw new NullPointerException(MessageUtils.getExceptionMessageString(
+                MessageUtils.NULL_PARAMETERS_ERROR_MESSAGE_ID, "name"));
+        }
+
+        // always turn escaping back on once an element ends
+        dontEscape = false;
+        // See if we need to close the start of the last element
+        if (closeStart) {
+            boolean isEmptyElement = HtmlUtils.isEmptyElement(name);
+
+            if (isEmptyElement) {
+                writer.write(" />");
+                closeStart = false;
+                return;
+            }
+
+            writer.write(">");
+            closeStart = false;
+        }
+
+        writer.write("</");
+        writer.write(name);
+        //PENDING (horwat) using String as a result of Tomcat char writer
+        //         ArrayIndexOutOfBoundsException (3584)
+        writer.write(">");
+    }
+
+
+    /**
+     * <p>Write a properly escaped attribute name and the corresponding
+     * value.  The value text will be converted to a String if
+     * necessary.  This method may only be called after a call to
+     * <code>startElement()</code>, and before the opened element has been
+     * closed.</p>
+     *
+     * @param name                  Attribute name to be added
+     * @param value                 Attribute value to be added
+     * @param componentPropertyName The name of the component property to
+     *                              which this attribute argument applies.  This argument may be
+     *                              <code>null</code>.
+     * @throws IllegalStateException if this method is called when there
+     *                               is no currently open element
+     * @throws IOException           if an input/output error occurs
+     * @throws NullPointerException  if <code>name</code> or
+     *                               <code>value</code> is <code>null</code>
+     */
+    public void writeAttribute(String name, Object value, String componentPropertyName)
+        throws IOException {
+        if (name == null) {
+            throw new NullPointerException(MessageUtils.getExceptionMessageString(
+                MessageUtils.NULL_PARAMETERS_ERROR_MESSAGE_ID, "name"));
+        }
+        if (value == null) {
+            throw new NullPointerException(MessageUtils.getExceptionMessageString(
+                MessageUtils.NULL_PARAMETERS_ERROR_MESSAGE_ID, "value"));
+        }
+
+        Class valueClass = value.getClass();
+
+        // Output Boolean values specially
+        if (valueClass == Boolean.class) {
+            if (Boolean.TRUE.equals(value)) {
+                //PENDING (horwat) using String as a result of
+                //Tomcat char writer ArrayIndexOutOfBoundsException (3584)
+                writer.write(" ");
+                writer.write(name);
+            } else {
+                // Don't write anything for "false" booleans
+            }
+        } else {
+            writer.write(" ");
+            writer.write(name);
+            writer.write("=\"");
+            
+            // write the attribute value
+            ensureTextBufferCapacity(value.toString());
+            HtmlUtils.writeAttribute(writer, true, true, buffer, value.toString(), textBuffer, true);
+            //PENDING (horwat) using String as a result of Tomcat char
+            //        writer ArrayIndexOutOfBoundsException (3584)
+            writer.write("\"");
+        }
+    }
+
+
+    /**
+     * <p>Write a properly encoded URI attribute name and the corresponding
+     * value. The value text will be converted to a String if necessary).
+     * This method may only be called after a call to
+     * <code>startElement()</code>, and before the opened element has been
+     * closed.</p>
+     *
+     * @param name                  Attribute name to be added
+     * @param value                 Attribute value to be added
+     * @param componentPropertyName The name of the component property to
+     *                              which this attribute argument applies.  This argument may be
+     *                              <code>null</code>.
+     * @throws IllegalStateException if this method is called when there
+     *                               is no currently open element
+     * @throws IOException           if an input/output error occurs
+     * @throws NullPointerException  if <code>name</code> or
+     *                               <code>value</code> is <code>null</code>
+     */
+    public void writeURIAttribute(String name, Object value,
+                                  String componentPropertyName)
+        throws IOException {
+        if (name == null) {
+            throw new NullPointerException(MessageUtils.getExceptionMessageString(
+                MessageUtils.NULL_PARAMETERS_ERROR_MESSAGE_ID, "name"));
+        }
+        if (value == null) {
+            throw new NullPointerException(MessageUtils.getExceptionMessageString(
+                MessageUtils.NULL_PARAMETERS_ERROR_MESSAGE_ID, "value"));
+        }
+
+        //PENDING (horwat) using String as a result of Tomcat char writer
+        //         ArrayIndexOutOfBoundsException (3584)
+        writer.write(" ");
+        writer.write(name);
+        writer.write("=\"");
+
+        String stringValue = value.toString();
+        ensureTextBufferCapacity(stringValue);
+        // Javascript URLs should not be URL-encoded
+        if (stringValue.startsWith("javascript:")) {
+            HtmlUtils.writeAttribute(writer, true, true, buffer, stringValue, textBuffer, true);
+        } else {
+            HtmlUtils.writeURL(writer, stringValue, textBuffer, encoding);
+        }
+        
+        //PENDING (horwat) using String as a result of Tomcat char writer
+        //         ArrayIndexOutOfBoundsException (3584)
+        writer.write("\"");
+    }
+
+
+    /**
+     * <p>Write a comment string containing the specified text.
+     * The text will be converted to a String if necessary.
+     * If there is an open element that has been created by a call
+     * to <code>startElement()</code>, that element will be closed
+     * first.</p>
+     *
+     * @param comment Text content of the comment
+     * @throws IOException          if an input/output error occurs
+     * @throws NullPointerException if <code>comment</code>
+     *                              is <code>null</code>
+     */
+    public void writeComment(Object comment) throws IOException {
+        if (comment == null) {
+            throw new NullPointerException(MessageUtils.getExceptionMessageString(
+                MessageUtils.NULL_PARAMETERS_ERROR_MESSAGE_ID, "comment"));
+        }
+        closeStartIfNecessary();
+        writer.write("<!-- ");
+        writer.write(comment.toString());
+        writer.write(" -->");
+    }
+
+
+    /**
+     * <p>Write a properly escaped object. The object will be converted
+     * to a String if necessary.  If there is an open element
+     * that has been created by a call to <code>startElement()</code>,
+     * that element will be closed first.</p>
+     *
+     * @param text                  Text to be written
+     * @param componentPropertyName The name of the component property to
+     *                              which this text argument applies.  This argument may be <code>null</code>.
+     * @throws IOException          if an input/output error occurs
+     * @throws NullPointerException if <code>text</code>
+     *                              is <code>null</code>
+     */
+    public void writeText(Object text, String componentPropertyName)
+        throws IOException {
+        if (text == null) {
+            throw new NullPointerException(MessageUtils.getExceptionMessageString(
+                MessageUtils.NULL_PARAMETERS_ERROR_MESSAGE_ID, "text"));
+        }
+        closeStartIfNecessary();
+        if (dontEscape) {
+            writer.write(text.toString());
+        } else {
+            ensureTextBufferCapacity(text.toString());
+            HtmlUtils.writeText(writer, true, true, buffer, text.toString(), textBuffer);
+        }
+    }
+
+
+    /**
+     * <p>Write a properly escaped single character, If there
+     * is an open element that has been created by a call to
+     * <code>startElement()</code>, that element will be closed first.</p>
+     * <p/>
+     * <p>All angle bracket occurrences in the argument must be escaped
+     * using the &gt; &lt; syntax.</p>
+     *
+     * @param text Text to be written
+     * @throws IOException if an input/output error occurs
+     */
+    public void writeText(char text) throws IOException {
+        closeStartIfNecessary();
+        if (dontEscape) {
+            writer.write(text);
+        } else {
+            charHolder[0] = text;
+            HtmlUtils.writeText(writer, true, true, buffer, charHolder);
+        }
+    }
+
+
+    /**
+     * <p>Write properly escaped text from a character array.
+     * The output from this command is identical to the invocation:
+     * <code>writeText(c, 0, c.length)</code>.
+     * If there is an open element that has been created by a call to
+     * <code>startElement()</code>, that element will be closed first.</p>
+     * </p>
+     * <p/>
+     * <p>All angle bracket occurrences in the argument must be escaped
+     * using the &gt; &lt; syntax.</p>
+     *
+     * @param text Text to be written
+     * @throws IOException          if an input/output error occurs
+     * @throws NullPointerException if <code>text</code>
+     *                              is <code>null</code>
+     */
+    public void writeText(char text[]) throws IOException {
+        if (text == null) {
+            throw new NullPointerException(MessageUtils.getExceptionMessageString(
+                MessageUtils.NULL_PARAMETERS_ERROR_MESSAGE_ID, "text"));
+        }
+        closeStartIfNecessary();
+        if (dontEscape) {
+            writer.write(text);
+        } else {
+            HtmlUtils.writeText(writer, true, true, buffer, text);
+        }
+    }
+
+
+    /**
+     * <p>Write properly escaped text from a character array.
+     * If there is an open element that has been created by a call
+     * to <code>startElement()</code>, that element will be closed
+     * first.</p>
+     * <p/>
+     * <p>All angle bracket occurrences in the argument must be escaped
+     * using the &gt; &lt; syntax.</p>
+     *
+     * @param text Text to be written
+     * @param off  Starting offset (zero-relative)
+     * @param len  Number of characters to be written
+     * @throws IndexOutOfBoundsException if the calculated starting or
+     *                                   ending position is outside the bounds of the character array
+     * @throws IOException               if an input/output error occurs
+     * @throws NullPointerException      if <code>text</code>
+     *                                   is <code>null</code>
+     */
+    public void writeText(char text[], int off, int len)
+        throws IOException {
+        if (text == null) {
+            throw new NullPointerException(MessageUtils.getExceptionMessageString(
+                MessageUtils.NULL_PARAMETERS_ERROR_MESSAGE_ID, "text"));
+        }
+        if (off < 0 || off > text.length || len < 0 || len > text.length) {
+            throw new IndexOutOfBoundsException();
+        }
+        closeStartIfNecessary();
+        if (dontEscape) {
+            writer.write(text, off, len);
+        } else {
+            HtmlUtils.writeText(writer, true, true, buffer, text, off, len);
+        }
+    }
+
+
+    // PENDING - Do we need to implement these for this test?
+    public void startCDATA() {
+        throw new IllegalStateException();
+    }
+    public void endCDATA() {
+        throw new IllegalStateException();
+    }
+
+    /**
+     * <p>Create a new instance of this <code>ResponseWriter</code> using
+     * a different <code>Writer</code>.
+     *
+     * @param writer The <code>Writer</code> that will be used to create
+     *               another <code>ResponseWriter</code>.
+     */
+    public ResponseWriter cloneWithWriter(Writer writer) {
+        try {
+            return new CustomResponseWriter(writer, getContentType(),
+                                          getCharacterEncoding());
+        } catch (FacesException e) {
+            // This should never happen
+            throw new IllegalStateException();
+        }
+    }
+
+
+    /**
+     * This method automatically closes a previous element (if not
+     * already closed).
+     */
+    private void closeStartIfNecessary() throws IOException {
+        if (closeStart) {
+            //PENDING (horwat) using String as a result of Tomcat char 
+            //         writer ArrayIndexOutOfBoundsException (3584)
+            writer.write(">");
+            closeStart = false;
+        }
+    }
+
+
+    /**
+     * Methods From <code>java.io.Writer</code>
+     */
+
+    public void close() throws IOException {
+        closeStartIfNecessary();
+        writer.close();
+    }
+
+
+    public void write(char cbuf) throws IOException {
+        closeStartIfNecessary();
+        writer.write(cbuf);
+    }
+
+
+    public void write(char[] cbuf, int off, int len) throws IOException {
+        closeStartIfNecessary();
+        writer.write(cbuf, off, len);
+    }
+
+
+    public void write(int c) throws IOException {
+        closeStartIfNecessary();
+        writer.write(c);
+    }
+
+
+    public void write(String str) throws IOException {
+        closeStartIfNecessary();
+        writer.write(str);
+    }
+
+
+    public void write(String str, int off, int len) throws IOException {
+        closeStartIfNecessary();
+        writer.write(str, off, len);
+    }
+
+    private void ensureTextBufferCapacity(String source) {
+        int len = source.length();
+        if (textBuffer.length < len) {
+            textBuffer = new char[len * 2];
+        }
+    }
+}
diff --git a/test/agnostic/renderKit/basic/src/main/java/com/sun/faces/test/render/FormRenderer.java b/test/agnostic/renderKit/basic/src/main/java/com/sun/faces/test/render/FormRenderer.java
new file mode 100644
index 0000000..94db1b5
--- /dev/null
+++ b/test/agnostic/renderKit/basic/src/main/java/com/sun/faces/test/render/FormRenderer.java
@@ -0,0 +1,361 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+// FormRenderer.java
+
+package com.sun.faces.test.render;
+
+import com.sun.faces.RIConstants;
+import com.sun.faces.renderkit.Attribute;
+import com.sun.faces.renderkit.AttributeManager;
+import com.sun.faces.renderkit.RenderKitUtils;
+import com.sun.faces.util.MessageUtils;
+
+
+import javax.faces.component.NamingContainer;
+import javax.faces.component.UIComponent;
+import javax.faces.component.UIForm;
+import javax.faces.component.UINamingContainer;
+import javax.faces.context.FacesContext;
+import javax.faces.context.ResponseWriter;
+import javax.faces.render.Renderer;
+
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+
+/**
+ * <B>FormRenderer</B> is a class that renders a <code>UIForm<code> as a Form.
+ */
+
+public class FormRenderer extends Renderer {
+
+    private static final Attribute[] ATTRIBUTES =
+          AttributeManager.getAttributes(AttributeManager.Key.FORMFORM);
+
+    public static final String SCRIPT_ELEMENT = "script";
+    public static final String SCRIPT_TYPE = "type";
+    public static final String CLEAR_HIDDEN_FIELD_FN_NAME = 
+         "clearFormHiddenParams";
+    public static final String FORM_CLIENT_ID_ATTR = 
+         "com.sun.faces.FORM_CLIENT_ID_ATTR";
+
+    //
+    // Protected Constants
+    //
+    // Log instance for this class
+    //
+    // Class Variables
+    //
+
+    //
+    // Instance Variables
+    //
+
+    // Attribute Instance Variables
+
+
+    // Relationship Instance Variables
+
+    //
+    // Constructors and Initializers    
+    //
+
+    public FormRenderer() {
+        super();
+    }
+
+    //
+    // Class methods
+    //
+
+    //
+    // General Methods
+    //
+
+    //
+    // Methods From Renderer
+    //
+
+    public void decode(FacesContext context, UIComponent component) {
+        // Was our form the one that was submitted?  If so, we need to set
+        // the indicator accordingly..
+        //
+        String clientId = component.getClientId(context);
+        Map requestParameterMap = context.getExternalContext()
+            .getRequestParameterMap();
+        if (requestParameterMap.containsKey(clientId)) {
+            ((UIForm) component).setSubmitted(true);
+        } else {
+            ((UIForm) component).setSubmitted(false);
+        }
+    }
+
+
+    public void encodeBegin(FacesContext context, UIComponent component)
+        throws IOException {
+        String styleClass = null;
+
+        if (context == null) {
+            throw new NullPointerException(
+                MessageUtils.getExceptionMessageString(MessageUtils.NULL_PARAMETERS_ERROR_MESSAGE_ID, "context"));
+        }
+        if (component == null) {
+            throw new NullPointerException(
+                MessageUtils.getExceptionMessageString(MessageUtils.NULL_PARAMETERS_ERROR_MESSAGE_ID, "component"));
+        }
+        // suppress rendering if "rendered" property on the component is
+        // false.
+        if (!component.isRendered()) {
+            return;
+        }
+        ResponseWriter writer = context.getResponseWriter();
+        assert (writer != null);
+        // since method and action are rendered here they are not added
+        // to the pass through attributes in Util class.
+        writer.startElement("form", component);
+        writer.writeAttribute("id", component.getClientId(context), "clientId");
+        writer.writeAttribute("method", "post", null);
+        writer.writeAttribute("action", getActionStr(context), null);
+        if (null != (styleClass = (String)
+            component.getAttributes().get("styleClass"))) {
+            writer.writeAttribute("class", styleClass, "styleClass");
+        }
+        String acceptcharset = null;
+        if (null != (acceptcharset = (String)
+            component.getAttributes().get("acceptcharset"))) {
+            writer.writeAttribute("accept-charset", acceptcharset, 
+                    "acceptcharset");
+        }
+        
+        RenderKitUtils.renderPassThruAttributes(context,
+              writer,
+                                                component,
+                                                ATTRIBUTES);       
+        writer.writeText("\n", null);
+        
+        // store the clientId of the form in request scope. This will be used
+        // by the commandLinkRenderer and ButtonRenderer to arrive the name of
+        // the javascript function to invoke from the onclick event handler.
+        // PENDING (visvan) we need to fix this dependency between the renderers.
+        // This solution is only temporary.
+        Map requestMap =context.getExternalContext().getRequestMap();
+        requestMap.put(FORM_CLIENT_ID_ATTR, component.getClientId(context));
+    }
+
+
+    /**
+     * <p>Return the value to be rendered as the <code>action</code> attribute
+     * of the form generated for this component.</p>
+     *
+     * @param context FacesContext for the response we are creating
+     */
+    private String getActionStr(FacesContext context) {
+        String viewId = context.getViewRoot().getViewId();
+        String actionURL =
+            context.getApplication().getViewHandler().
+            getActionURL(context, viewId);
+        return (context.getExternalContext().encodeActionURL(actionURL));
+    }
+
+
+    public void encodeEnd(FacesContext context, UIComponent component)
+        throws IOException {
+        if (context == null) {
+            throw new NullPointerException(
+                MessageUtils.getExceptionMessageString(MessageUtils.NULL_PARAMETERS_ERROR_MESSAGE_ID, "context"));
+        }
+        if (component == null) {
+            throw new NullPointerException(
+                MessageUtils.getExceptionMessageString(MessageUtils.NULL_PARAMETERS_ERROR_MESSAGE_ID, "component"));
+        }
+        // suppress rendering if "rendered" property on the component is
+        // false.
+        if (!component.isRendered()) {
+            return;
+        }
+
+        context.getApplication().getViewHandler().writeState(context);
+
+        // Render the end tag for form
+        ResponseWriter writer = context.getResponseWriter();
+        assert (writer != null);
+
+        // this hidden field will be checked in the decode method to determine if
+        // this form has been submitted.
+        //
+        writer.startElement("input", component);
+        writer.writeAttribute("type", "hidden", "type");
+        writer.writeAttribute("name", component.getClientId(context),
+                              "clientId");
+        writer.writeAttribute("value", component.getClientId(context), "value");
+        writer.endElement("input");
+
+        renderNeededHiddenFields(context, component);
+        writer.endElement("form");
+        
+        Map requestMap = context.getExternalContext().getRequestMap();
+        String formClientId = (String)requestMap.put(FORM_CLIENT_ID_ATTR, null);
+    }
+
+
+    /**
+     * <p>Render any need hidden fields.</p>
+     */
+    private static void renderNeededHiddenFields(FacesContext context,
+                                                 UIComponent component)
+        throws IOException {
+
+        ResponseWriter writer = context.getResponseWriter();
+        Map map = getHiddenFieldMap(context, false);
+        if (map != null) {
+            Iterator entries = map.entrySet().iterator();
+            while (entries.hasNext()) {
+                Map.Entry entry = (Map.Entry) entries.next();
+                if (Boolean.TRUE.equals(entry.getValue())) {
+                    writer.startElement("input", component);
+                    writer.writeAttribute("type", "hidden", null);
+                    writer.writeAttribute("name", entry.getKey(), null);
+                    writer.endElement("input");
+                }
+            }
+                
+            // Clear the hidden field map
+            Map requestMap = context.getExternalContext().getRequestMap();
+            requestMap.put(HIDDEN_FIELD_KEY, null);
+        }
+        String formTarget = (String) component.getAttributes().get("target");
+        renderClearHiddenParamsJavaScript(context,
+                                          writer,
+                                          map,
+                                          formTarget,
+                                          component.getClientId(context));
+    }
+
+
+    /**
+     * <p>Remember that we will need a new hidden field.</p>
+     */
+    public static void addNeededHiddenField(FacesContext context,
+                                            String clientId) {
+        Map map = getHiddenFieldMap(context, true);
+        if (!map.containsKey(clientId)) {
+            map.put(clientId, Boolean.TRUE);
+        }
+    }
+
+
+    /**
+     * <p>Note that a hidden field has already been rendered.</p>
+     */
+    public static void addRenderedHiddenField(FacesContext context,
+                                              String clientId) {
+        Map map = getHiddenFieldMap(context, true);
+        map.put(clientId, Boolean.FALSE);
+    }
+
+
+    private static Map getHiddenFieldMap(FacesContext context,
+                                         boolean createIfNew) {
+        Map requestMap = context.getExternalContext().getRequestMap();
+        Map map = (Map) requestMap.get(HIDDEN_FIELD_KEY);
+        if (map == null) {
+            if (createIfNew) {
+                map = new HashMap();
+                requestMap.put(HIDDEN_FIELD_KEY, map);
+            }
+        }
+
+        return map;
+    }
+
+    /**
+     * Generates a JavaScript function to clear all the hidden fields
+     * associated with a form and reset the target attribute if necessary.
+     */
+    private static void renderClearHiddenParamsJavaScript(FacesContext ctx,
+                                                          ResponseWriter writer,
+                                                          Map formParams,
+                                                          String formTarget,
+                                                          String formName)
+    throws IOException {
+            
+         // clear all the hidden field parameters in the form represented by
+         // formName.
+         writer.write("\n");
+         writer.startElement(SCRIPT_ELEMENT, null);
+         writer.writeAttribute(SCRIPT_TYPE, "text/javascript", null);
+         writer.write("\n<!--");
+         writer.write("\nfunction ");
+         String functionName = (CLEAR_HIDDEN_FIELD_FN_NAME + "_" + formName.replace(UINamingContainer.getSeparatorChar(ctx), '_'));
+         writer.write(functionName);
+         writer.write("(curFormName) {");
+         writer.write("\n  var curForm = document.forms[curFormName];"); 
+         if (formParams != null) {
+            Iterator entries = formParams.entrySet().iterator();
+            // clear only the hidden fields rendered by the form.
+            while (entries.hasNext()) {
+                Map.Entry entry = (Map.Entry) entries.next();
+                if (Boolean.TRUE.equals(entry.getValue())) {
+                    writer.write("\n curForm.elements['"); 
+                    writer.write((String) entry.getKey());
+                    writer.write("'].value = null;");
+                }
+            }
+         }
+         // clear form target attribute if its present
+         if (formTarget != null && formTarget.length() > 0) {
+             writer.write("\n  curForm.target=");
+             writer.write("'");
+             writer.write(formTarget);
+             writer.write("';");
+         }
+         writer.write("\n}");
+         writer.write("\n//-->\n");
+         writer.endElement(SCRIPT_ELEMENT);
+         writer.write("\n");
+         
+     }
+
+    private static final String HIDDEN_FIELD_KEY =
+        RIConstants.FACES_PREFIX + "FormHiddenFieldMap";
+
+} // end of class FormRenderer
diff --git a/test/agnostic/renderKit/basic/src/main/java/com/sun/faces/test/render/TextRenderer.java b/test/agnostic/renderKit/basic/src/main/java/com/sun/faces/test/render/TextRenderer.java
new file mode 100644
index 0000000..ef236ba
--- /dev/null
+++ b/test/agnostic/renderKit/basic/src/main/java/com/sun/faces/test/render/TextRenderer.java
@@ -0,0 +1,365 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+// TextRenderer.java
+
+package com.sun.faces.test.render;
+
+import javax.faces.component.UIComponent;
+import javax.faces.component.UIInput;
+import javax.faces.component.UIOutput;
+import javax.faces.component.UIViewRoot;
+import javax.faces.component.ValueHolder;
+import javax.faces.context.FacesContext;
+import javax.faces.context.ResponseWriter;
+import javax.faces.convert.Converter;
+import javax.faces.convert.ConverterException;
+import javax.faces.render.Renderer;
+
+import java.io.IOException;
+
+import com.sun.faces.renderkit.Attribute;
+import com.sun.faces.renderkit.AttributeManager;
+import com.sun.faces.renderkit.RenderKitUtils;
+import com.sun.faces.util.MessageFactory;
+import com.sun.faces.util.MessageUtils;
+import com.sun.faces.util.Util;
+
+
+/**
+ * <B>TextRenderer</B> is a class that renders the current value of
+ * <code>UIInput<code> or <code>UIOutput<code> component as a input field or
+ * static text.
+ */
+public class TextRenderer extends Renderer {
+
+    private static final Attribute[] INPUT_ATTRIBUTES =
+              AttributeManager.getAttributes(AttributeManager.Key.INPUTTEXT);
+        private static final Attribute[] OUTPUT_ATTRIBUTES =
+              AttributeManager.getAttributes(AttributeManager.Key.OUTPUTTEXT);
+
+
+    //
+    // Protected Constants
+    //
+    // Log instance for this class
+
+    //
+    // Class Variables
+    //
+
+    //
+    // Instance Variables
+    //
+
+    // Attribute Instance Variables
+
+
+    // Relationship Instance Variables
+
+    //
+    // Constructors and Initializers
+    //
+
+    public TextRenderer() {
+        super();
+    }
+
+    //
+    // Class methods
+    //
+
+    //
+    // General Methods
+    //
+
+    //
+    // Methods From Renderer
+    //
+
+    public void encodeBegin(FacesContext context, UIComponent component)
+        throws IOException {
+        if (context == null) {
+            throw new NullPointerException(
+                MessageUtils.getExceptionMessageString(MessageUtils.NULL_PARAMETERS_ERROR_MESSAGE_ID, "context"));
+        }
+        if (component == null) {
+            throw new NullPointerException(
+                MessageUtils.getExceptionMessageString(MessageUtils.NULL_PARAMETERS_ERROR_MESSAGE_ID, "component"));
+        }
+    }
+
+    public void encodeEnd(FacesContext context, UIComponent component)
+        throws IOException {
+
+        String currentValue = null;
+        ResponseWriter writer = null;
+        String styleClass = null;
+
+        if (context == null) {
+            throw new NullPointerException(
+                MessageUtils.getExceptionMessageString(MessageUtils.NULL_PARAMETERS_ERROR_MESSAGE_ID, "context"));
+        }
+        if (component == null) {
+            throw new NullPointerException(
+                MessageUtils.getExceptionMessageString(MessageUtils.NULL_PARAMETERS_ERROR_MESSAGE_ID, "component"));
+        }
+
+
+        // suppress rendering if "rendered" property on the component is
+        // false.
+        if (!component.isRendered()) {
+            return;
+        }
+
+        writer = context.getResponseWriter();
+        assert (writer != null);
+
+        currentValue = getCurrentValue(context, component);
+        getEndTextToRender(context, component, currentValue);
+    }
+
+    protected String getCurrentValue(FacesContext context, UIComponent component) {
+
+        if (component instanceof UIInput) {
+            Object submittedValue = ((UIInput) component).getSubmittedValue();
+            if (submittedValue != null) {
+                return (String) submittedValue;
+            }
+        }
+
+        String currentValue = null;
+        Object currentObj = getValue(component);
+        if (currentObj != null) {
+            currentValue = getFormattedValue(context, component, currentObj);
+        }
+        return currentValue;
+    }
+
+    protected void getEndTextToRender(FacesContext context,
+                                      UIComponent component, String currentValue)
+        throws IOException {
+
+        ResponseWriter writer = context.getResponseWriter();
+        assert (writer != null);
+        boolean
+            shouldWriteIdAttribute = false,
+            isOutput = false;
+
+        String style = (String) component.getAttributes().get("style");
+        String styleClass = (String) component.getAttributes().get("styleClass");
+        String dir = (String) component.getAttributes().get("dir");
+        String lang = (String) component.getAttributes().get("lang");
+        String title = (String) component.getAttributes().get("title");
+        if (component instanceof UIInput) {
+            writer.startElement("input", component);
+            writeIdAttributeIfNecessary(context, writer, component);
+            writer.writeAttribute("type", "text", null);
+            writer.writeAttribute("name", (component.getClientId(context)),
+                                  "clientId");
+
+            // render default text specified
+            if (currentValue != null) {
+                writer.writeAttribute("value", currentValue, "value");
+            }
+            if (null != styleClass) {
+                writer.writeAttribute("class", styleClass, "styleClass");
+            }
+
+            // style is rendered as a passthur attribute
+            RenderKitUtils.renderPassThruAttributes(context,
+                  writer,
+                                                    component,
+                                                    INPUT_ATTRIBUTES);
+            RenderKitUtils.renderXHTMLStyleBooleanAttributes(writer, component);
+
+            writer.endElement("input");
+
+        } else if (isOutput = (component instanceof UIOutput)) {
+            if (styleClass != null
+                 || style != null
+                 || dir != null
+                 || lang != null
+                 || title != null
+                 || (shouldWriteIdAttribute = shouldWriteIdAttribute(component))) {
+                writer.startElement("span", component);
+                writeIdAttributeIfNecessary(context, writer, component);
+                if (null != styleClass) {
+                    writer.writeAttribute("class", styleClass, "styleClass");
+                }
+                // style is rendered as a passthru attribute
+                RenderKitUtils.renderPassThruAttributes(context,
+                      writer,
+                                                        component,
+                                                        OUTPUT_ATTRIBUTES);
+                RenderKitUtils.renderXHTMLStyleBooleanAttributes(writer, component);
+
+            }
+            if (currentValue != null) {
+                Object val = null;
+                boolean escape = true;
+                if (null != (val = component.getAttributes().get("escape"))) {
+                    if (val instanceof Boolean) {
+                        escape = ((Boolean) val).booleanValue();
+                    } else if (val instanceof String) {
+                        try {
+                            escape =
+                                Boolean.valueOf((String) val).booleanValue();
+                        } catch (Throwable e) {
+                        }
+                    }
+                }
+                if (escape) {
+                    writer.writeText(currentValue, "value");
+                } else {
+                    writer.write(currentValue);
+                }
+                writer.writeText(" FROM THE CUSTOM RENDERER", null);
+            }
+        }
+        if (isOutput && (styleClass != null
+                 || style != null
+                 || dir != null
+                 || lang != null
+                 || title != null
+                 || (shouldWriteIdAttribute))) {
+            writer.endElement("span");
+        }
+    }
+
+    protected Object getValue(UIComponent component) {
+        if (component instanceof ValueHolder) {
+            Object value = ((ValueHolder) component).getValue();
+            return value;
+        }
+
+        return null;
+    }
+
+    protected String getFormattedValue(FacesContext context, UIComponent component,
+                                       Object currentValue)
+        throws ConverterException {
+
+        String result = null;
+        // formatting is supported only for components that support
+        // converting value attributes.
+        if (!(component instanceof ValueHolder)) {
+            if (currentValue != null) {
+                result = currentValue.toString();
+            }
+            return result;
+        }
+
+        Converter converter = null;
+
+        // If there is a converter attribute, use it to to ask application
+        // instance for a converter with this identifer.
+
+        if (component instanceof ValueHolder) {
+            converter = ((ValueHolder) component).getConverter();
+        }
+
+        // if value is null and no converter attribute is specified, then
+        // return a zero length String.
+        if (converter == null && currentValue == null) {
+            return "";
+        }
+
+        if (converter == null) {
+            // Do not look for "by-type" converters for Strings
+            if (currentValue instanceof String) {
+                return (String) currentValue;
+            }
+
+            // if converter attribute set, try to acquire a converter
+            // using its class type.
+
+            Class converterType = currentValue.getClass();
+            converter = Util.getConverterForClass(converterType, context);
+
+            // if there is no default converter available for this identifier,
+            // assume the model type to be String.
+            if (converter == null && currentValue != null) {
+                result = currentValue.toString();
+                return result;
+            }
+        }
+
+        if (converter != null) {
+            result = converter.getAsString(context, component, currentValue);
+
+            return result;
+        } else {
+            // throw converter exception if no converter can be
+            // identified
+	    Object [] params = {
+		currentValue,
+		"null Converter"
+	    };
+
+            throw new ConverterException(MessageFactory.getMessage(
+                context, MessageUtils.CONVERSION_ERROR_MESSAGE_ID, params));
+        }
+    }
+    private boolean shouldWriteIdAttribute(UIComponent component) {
+        String id;
+        return (null != (id = component.getId()) &&
+            !id.startsWith(UIViewRoot.UNIQUE_ID_PREFIX));
+    }
+
+    private void writeIdAttributeIfNecessary(FacesContext context,
+                                               ResponseWriter writer,
+                                               UIComponent component) {
+        String id;
+        if (shouldWriteIdAttribute(component)) {
+            try {
+                writer.writeAttribute("id", component.getClientId(context),
+                                      "id");
+            } catch (IOException e) {
+            }
+        }
+    }
+
+
+    // The testcase for this class is TestRenderers_2.java
+
+} // end of class TextRenderer
+
+
diff --git a/test/agnostic/renderKit/basic/src/main/webapp/WEB-INF/faces-config.xml b/test/agnostic/renderKit/basic/src/main/webapp/WEB-INF/faces-config.xml
new file mode 100644
index 0000000..9d2b3a1
--- /dev/null
+++ b/test/agnostic/renderKit/basic/src/main/webapp/WEB-INF/faces-config.xml
@@ -0,0 +1,71 @@
+<?xml version='1.0' encoding='UTF-8'?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<faces-config version="2.2"
+    xmlns="http://xmlns.jcp.org/xml/ns/javaee" 
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd">
+
+  <render-kit>
+    <render-kit-id>CUSTOM</render-kit-id>
+    <render-kit-class>com.sun.faces.test.render.CustomRenderKitImpl</render-kit-class>
+    <renderer>
+      <component-family>javax.faces.Output</component-family>
+      <renderer-type>javax.faces.Text</renderer-type>
+      <renderer-class>com.sun.faces.test.render.TextRenderer</renderer-class>
+    </renderer>
+    <renderer>
+      <component-family>javax.faces.Form</component-family>
+      <renderer-type>javax.faces.Form</renderer-type>
+      <renderer-class>com.sun.faces.test.render.FormRenderer</renderer-class>
+    </renderer>
+    <renderer>
+      <component-family>javax.faces.Command</component-family>
+      <renderer-type>javax.faces.Button</renderer-type>
+      <renderer-class>com.sun.faces.test.render.ButtonRenderer</renderer-class>
+    </renderer>
+
+  </render-kit>
+
+</faces-config>
diff --git a/test/agnostic/renderKit/basic/src/main/webapp/WEB-INF/glassfish-web.xml b/test/agnostic/renderKit/basic/src/main/webapp/WEB-INF/glassfish-web.xml
new file mode 100644
index 0000000..36366c0
--- /dev/null
+++ b/test/agnostic/renderKit/basic/src/main/webapp/WEB-INF/glassfish-web.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
+<glassfish-web-app error-url="">
+  <context-root>/test-agnostic-renderKit-basic</context-root>
+  <class-loader delegate="true"/>
+  <jsp-config>
+    <property name="keepgenerated" value="true">
+      <description>Keep a copy of the generated servlet class' java code.</description>
+    </property>
+  </jsp-config>
+</glassfish-web-app>
diff --git a/test/agnostic/renderKit/basic/src/main/webapp/WEB-INF/web.xml b/test/agnostic/renderKit/basic/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..6084a33
--- /dev/null
+++ b/test/agnostic/renderKit/basic/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>${webapp.projectStage}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
+        <param-value>${webapp.partialStateSaving}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>${webapp.stateSavingMethod}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>com.sun.faces.enableClientStateDebugging</param-name>
+        <param-value>${webapp.enableClientStateDebugging}</param-value>
+    </context-param>
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <welcome-file-list>
+        <welcome-file>faces/renderkit03.jsp</welcome-file>
+    </welcome-file-list>
+</web-app>
diff --git a/test/agnostic/renderKit/basic/src/main/webapp/attributes.xhtml b/test/agnostic/renderKit/basic/src/main/webapp/attributes.xhtml
new file mode 100644
index 0000000..3a59516
--- /dev/null
+++ b/test/agnostic/renderKit/basic/src/main/webapp/attributes.xhtml
@@ -0,0 +1,67 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:h="http://java.sun.com/jsf/html">
+
+<h:form id="form">
+
+    <p>
+        
+    <h:selectManyListbox>
+        
+        <f:attributes value="#{bean.rendererSpecificAttrs}" />
+        
+        <f:selectItem itemValue="Item1" itemLabel="Item1" />
+        <f:selectItem itemValue="Item2" itemLabel="Item2" />
+        <f:selectItem itemValue="Item3" itemLabel="Item3" />
+        
+    </h:selectManyListbox>
+    
+    </p>
+    
+    
+</h:form>
+    
+</html>
diff --git a/test/agnostic/renderKit/basic/src/main/webapp/data-attributes.xhtml b/test/agnostic/renderKit/basic/src/main/webapp/data-attributes.xhtml
new file mode 100644
index 0000000..d7b820d
--- /dev/null
+++ b/test/agnostic/renderKit/basic/src/main/webapp/data-attributes.xhtml
@@ -0,0 +1,90 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:h="http://java.sun.com/jsf/html">
+
+    <h:form id="form">
+
+        <p>
+            
+        <h:outputText value="nameAndValueFromEL">
+            <f:passThroughAttribute name="data-#{'Development'}" value="#{facesContext.viewRoot.viewId}" />
+        </h:outputText>
+            
+            
+        </p>
+
+        <p>
+            
+        <h:outputText value="simple">
+            <f:passThroughAttribute name="data-name" value="value" />
+        </h:outputText>
+
+        </p>
+    
+        <p>
+        
+        <h:outputText value="nested">
+            <f:passThroughAttribute name="data-outer-inner" value="innerValue" />
+        </h:outputText>
+        
+        
+        </p>
+    
+        <p>
+        
+        <h:outputText value="complex">
+            <f:passThroughAttribute name="data-a-b-c-d" value="e" />
+            <f:passThroughAttribute name="data-a-b-c-f" value="g" />
+            <f:passThroughAttribute name="data-a-b-c-h" value="i" />
+            <f:passThroughAttribute name="data-a-b-c-j-k-l-m" value="n" />
+        </h:outputText>
+        
+        </p>
+        
+    
+</h:form>
+    
+</html>
diff --git a/test/agnostic/renderKit/basic/src/main/webapp/hbody.xhtml b/test/agnostic/renderKit/basic/src/main/webapp/hbody.xhtml
new file mode 100644
index 0000000..8d97316
--- /dev/null
+++ b/test/agnostic/renderKit/basic/src/main/webapp/hbody.xhtml
@@ -0,0 +1,49 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:body id="bodyid">
+    </h:body>
+</html>
diff --git a/test/agnostic/renderKit/basic/src/main/webapp/hhead.xhtml b/test/agnostic/renderKit/basic/src/main/webapp/hhead.xhtml
new file mode 100644
index 0000000..51f5ad3
--- /dev/null
+++ b/test/agnostic/renderKit/basic/src/main/webapp/hhead.xhtml
@@ -0,0 +1,50 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head id="headid"><title>The page title</title></h:head>
+    <h:body id="bodyid">
+    </h:body>
+</html>
diff --git a/test/agnostic/renderKit/basic/src/main/webapp/hlink.xhtml b/test/agnostic/renderKit/basic/src/main/webapp/hlink.xhtml
new file mode 100644
index 0000000..1f689c1
--- /dev/null
+++ b/test/agnostic/renderKit/basic/src/main/webapp/hlink.xhtml
@@ -0,0 +1,51 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:h="http://java.sun.com/jsf/html">
+
+    <h:form id="form">
+       <h:link id="link1" value="Link Page" outcome="hlink" disabled="true"/>
+    </h:form>
+
+</html>
diff --git a/test/agnostic/renderKit/basic/src/main/webapp/inputFileRenderTest.xhtml b/test/agnostic/renderKit/basic/src/main/webapp/inputFileRenderTest.xhtml
new file mode 100644
index 0000000..a5237ee
--- /dev/null
+++ b/test/agnostic/renderKit/basic/src/main/webapp/inputFileRenderTest.xhtml
@@ -0,0 +1,53 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:h="http://java.sun.com/jsf/html">
+
+    <h:form id="form" enctype="multipart/form-data">
+       <h:inputFile id="file" value="text value"/> 
+       <br/>
+       <h:commandButton id="button" value="submit"/>
+    </h:form>
+
+</html>
diff --git a/test/agnostic/renderKit/basic/src/main/webapp/issue1830.xhtml b/test/agnostic/renderKit/basic/src/main/webapp/issue1830.xhtml
new file mode 100644
index 0000000..84af3d6
--- /dev/null
+++ b/test/agnostic/renderKit/basic/src/main/webapp/issue1830.xhtml
@@ -0,0 +1,57 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <body>
+        <h:form id="form">
+            <ui:repeat id="repeat" value="#{issue1830Bean.repeat}" var="item">
+                <h:dataTable id="table" value="#{item}" var="row">
+                    <h:column>
+                        <h:inputText id="row" value="#{row}"/>
+                    </h:column>
+                </h:dataTable>
+            </ui:repeat>
+        </h:form>
+    </body>
+</html>
diff --git a/test/agnostic/renderKit/basic/src/main/webapp/issue2065.xhtml b/test/agnostic/renderKit/basic/src/main/webapp/issue2065.xhtml
new file mode 100644
index 0000000..2059efb
--- /dev/null
+++ b/test/agnostic/renderKit/basic/src/main/webapp/issue2065.xhtml
@@ -0,0 +1,50 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <body>
+        Types: <h:outputText value="#{issue2065Bean.clientBehaviorRendererTypes}"/>
+    </body>
+</html>
diff --git a/test/agnostic/renderKit/basic/src/main/webapp/issue2168.xhtml b/test/agnostic/renderKit/basic/src/main/webapp/issue2168.xhtml
new file mode 100644
index 0000000..04d2d99
--- /dev/null
+++ b/test/agnostic/renderKit/basic/src/main/webapp/issue2168.xhtml
@@ -0,0 +1,53 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+    </h:head>
+    <body id="body">
+        <h:form id="form" prependId="false">
+           <h:outputScript library="alibrary" name="script.js?v=1"/> 
+        </h:form>
+    </body>
+</html>
diff --git a/test/agnostic/renderKit/basic/src/main/webapp/issue2459.xhtml b/test/agnostic/renderKit/basic/src/main/webapp/issue2459.xhtml
new file mode 100644
index 0000000..0dda734
--- /dev/null
+++ b/test/agnostic/renderKit/basic/src/main/webapp/issue2459.xhtml
@@ -0,0 +1,74 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
+      xmlns:f="http://xmlns.jcp.org/jsf/core"
+      xmlns:h="http://xmlns.jcp.org/jsf/html"
+      xmlns:p="http://xmlns.jcp.org/jsf/passthrough">
+
+<h:form id="form1" 
+        accept="text/html"
+        dir="LTR"
+        enctype="noneDefault"
+        lang="en"
+        onclick="js1"
+        ondblclick="js2"
+        onkeydown="js3"
+        onkeypress="js4"
+        onkeyup="js5"
+        onmousedown="js6"
+        onmousemove="js7"
+        onmouseout="js8"
+        onmouseover="js9"
+        onmouseup="js10"
+        onreset="js11"
+        onsubmit="js12"
+        style="Color: red;"
+        target="frame1"
+        title="FormTitle"        
+        p:foo="bar">
+    
+    
+</h:form>
+    
+</html>
diff --git a/test/agnostic/renderKit/basic/src/main/webapp/issue2523.xhtml b/test/agnostic/renderKit/basic/src/main/webapp/issue2523.xhtml
new file mode 100644
index 0000000..e122b1a
--- /dev/null
+++ b/test/agnostic/renderKit/basic/src/main/webapp/issue2523.xhtml
@@ -0,0 +1,55 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:h="http://java.sun.com/jsf/html" 
+      xmlns:c="http://java.sun.com/jstl/core">
+    <body>
+        <c:if test="#{true}">
+            This should show up
+        </c:if>
+        <c:if test="#{false}">
+            And this should not
+        </c:if>
+    </body>
+</html>
diff --git a/test/agnostic/renderKit/basic/src/main/webapp/issue2613.xhtml b/test/agnostic/renderKit/basic/src/main/webapp/issue2613.xhtml
new file mode 100644
index 0000000..577ccbd
--- /dev/null
+++ b/test/agnostic/renderKit/basic/src/main/webapp/issue2613.xhtml
@@ -0,0 +1,78 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title>Putting it all together</title>
+        <script target="body" name="js.js"/>
+        <link name="css.css" rel="stylesheet" type="text/css" />
+    </h:head>
+    <body id="body">
+        <h:form id="form" prependId="false">
+            <fieldset></fieldset>
+            <br/>
+            <button id="button" name="button" type="button" value="button"/>
+            <br/>
+            <label for="name">Name</label>
+            <input id="name" name="name" type="text" value="aaa"/>
+            <br/>
+            <label for="tel">Tel</label>
+            <input id="tel" name="tel" type="tel" value="bbb"/>
+            <br/>
+            <label for="email">Email</label>
+            <input id="email" name="email" type="email" value="ccc"/>
+            <br/>
+            <br/>
+            <h:commandButton id="submit" value="submit">
+               <f:ajax execute="@this" render="@form" />
+            </h:commandButton>
+            <br/>
+            <br/>
+            #{issue2613Bean.parameterNames}
+            <br/>
+            #{issue2613Bean.parameterCount}
+  
+        </h:form>
+    </body>
+</html>
diff --git a/test/agnostic/renderKit/basic/src/main/webapp/issue2767.xhtml b/test/agnostic/renderKit/basic/src/main/webapp/issue2767.xhtml
new file mode 100644
index 0000000..319ee33
--- /dev/null
+++ b/test/agnostic/renderKit/basic/src/main/webapp/issue2767.xhtml
@@ -0,0 +1,77 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
+      xmlns:f="http://xmlns.jcp.org/jsf/core"
+      xmlns:h="http://xmlns.jcp.org/jsf/html"
+      xmlns:c="http://xmlns.jcp.org/jsp/jstl/core"
+      xmlns:p="http://xmlns.jcp.org/jsf/passthrough">
+
+<h:form id="form">
+
+    <p>
+        
+    <h:outputText value="Simple outputText">
+        
+        <f:passThroughAttributes value="#{bean.passThroughAttrs}" />
+        
+    </h:outputText>
+    
+    </p>
+    
+    <p>
+        
+    <h:outputText value="Namespaced Attributes" p:foo="bar" />
+    
+    </p>
+
+    <c:if test="#{true}">
+        This should show up
+    </c:if>
+    <c:if test="#{false}">
+        And this should not
+    </c:if>
+    
+</h:form>
+    
+</html>
diff --git a/test/agnostic/renderKit/basic/src/main/webapp/outputEscape.xhtml b/test/agnostic/renderKit/basic/src/main/webapp/outputEscape.xhtml
new file mode 100644
index 0000000..d557400
--- /dev/null
+++ b/test/agnostic/renderKit/basic/src/main/webapp/outputEscape.xhtml
@@ -0,0 +1,19 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:test="http://java.sun.com/jsf/composite/test">
+    <h:head>
+        <title>Escape attribute override</title>
+    </h:head>
+    <h:body>
+        <h:form>
+            <h:commandLink/>
+        </h:form>
+        <p>These fields should be escaped:</p>
+        <h:outputText id="txt1" escape="#{true}" value="<i>test1</i>"/><br/>
+        <h:outputText id="txt2" escape="true" value="<i>test2</i>"/><br/>
+        <h:outputText id="txt3" value="<i>test3</i>"/>
+    </h:body>
+</html>
+
diff --git a/test/agnostic/renderKit/basic/src/main/webapp/outputEscape1.xhtml b/test/agnostic/renderKit/basic/src/main/webapp/outputEscape1.xhtml
new file mode 100644
index 0000000..6b48ec1
--- /dev/null
+++ b/test/agnostic/renderKit/basic/src/main/webapp/outputEscape1.xhtml
@@ -0,0 +1,59 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:test="http://java.sun.com/jsf/composite/test">
+    <h:head>
+        <title>Escape Test</title>
+        <script type="text/javascript" src="resources/foo.js"></script>
+        <style type="text/css">
+            @import url("resources/import1.css");
+        </style>
+    </h:head>
+    <h:body>
+       <h:outputText value="Tom & Jerry"/>
+    </h:body>
+</html>
+
diff --git a/test/agnostic/renderKit/basic/src/main/webapp/outputFormat.xhtml b/test/agnostic/renderKit/basic/src/main/webapp/outputFormat.xhtml
new file mode 100644
index 0000000..974704b
--- /dev/null
+++ b/test/agnostic/renderKit/basic/src/main/webapp/outputFormat.xhtml
@@ -0,0 +1,61 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:h="http://java.sun.com/jsf/html">
+
+    <h:form id="form">
+       outputFormat with no arguements:
+       <h:outputFormat/> 
+       end outputFormat with no arguements:
+       <br/>
+       outputFormat with null expression:
+       <h:outputFormat value="#{null}"/>
+       end outputFormat with null expression
+       <br/>
+       outputFormat with expression that evaluates to null (via bean) :
+       <h:outputFormat value="#{bean.nullValue}"/>
+       end outputFormat with expression that evaluates to null (via bean) :
+    </h:form>
+
+</html>
diff --git a/test/agnostic/renderKit/basic/src/main/webapp/panelGrid.xhtml b/test/agnostic/renderKit/basic/src/main/webapp/panelGrid.xhtml
new file mode 100644
index 0000000..4447802
--- /dev/null
+++ b/test/agnostic/renderKit/basic/src/main/webapp/panelGrid.xhtml
@@ -0,0 +1,67 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title>h:panelGrid</title>
+    </h:head>
+    <h:body>
+        <h:form prependId="false">
+            
+            <h:panelGrid columns="2" role="presentation">
+                
+                <h:commandButton id="one" value="one" />
+                
+                <h:commandButton id="two" value="one" />
+
+                <h:commandButton id="three" value="three" />
+                
+                <h:commandButton id="four" value="four" />                
+                
+            </h:panelGrid>
+
+        </h:form>
+    </h:body>
+</html>
+
diff --git a/test/agnostic/renderKit/basic/src/main/webapp/passThroughAttributes.xhtml b/test/agnostic/renderKit/basic/src/main/webapp/passThroughAttributes.xhtml
new file mode 100644
index 0000000..664de10
--- /dev/null
+++ b/test/agnostic/renderKit/basic/src/main/webapp/passThroughAttributes.xhtml
@@ -0,0 +1,69 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
+      xmlns:f="http://xmlns.jcp.org/jsf/core"
+      xmlns:h="http://xmlns.jcp.org/jsf/html"
+      xmlns:p="http://xmlns.jcp.org/jsf/passthrough">
+
+<h:form id="form">
+
+    <p>
+        
+    <h:outputText value="Simple outputText">
+        
+        <f:passThroughAttributes value="#{bean.passThroughAttrs}" />
+        
+    </h:outputText>
+    
+    </p>
+    
+    <p>
+        
+    <h:outputText value="Namespaced Attributes" p:foo="bar" />
+    
+    </p>
+    
+</h:form>
+    
+</html>
diff --git a/test/agnostic/renderKit/basic/src/main/webapp/passThroughAttributesSelect.xhtml b/test/agnostic/renderKit/basic/src/main/webapp/passThroughAttributesSelect.xhtml
new file mode 100644
index 0000000..7bb1f2c
--- /dev/null
+++ b/test/agnostic/renderKit/basic/src/main/webapp/passThroughAttributesSelect.xhtml
@@ -0,0 +1,173 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
+      xmlns:f="http://xmlns.jcp.org/jsf/core"
+      xmlns:h="http://xmlns.jcp.org/jsf/html"
+      xmlns:p="http://xmlns.jcp.org/jsf/passthrough">
+    <h:head>
+        <h:outputStylesheet library="css" name="main.css" />
+    </h:head>
+
+    <h1>Testing dimensions</h1>
+    
+    <ul>
+        
+        <li>component-family: UISelectOne, UISelectMany</li>
+        
+        <li>item style: individual f:selectItem instances, f:selectItems</li>
+        
+        <li>pass through attribute style: f:passThroughAttribute, f:passThroughAttribute, prefixed attribute</li>
+        
+    </ul>
+    
+    <div class="content">
+    
+<h:form id="form_selectOne">
+
+    <p>Current fruitValue: #{bean.fruitValue}</p>
+
+    <p>Current nameValue: #{bean.nameValue}</p>
+    
+    <p>Current hobbitValue: #{bean.hobbitBean}</p>
+
+    <p>Current groupedNameValue: #{bean.groupedNameValue}</p>
+
+    <h:commandButton id="button" value="submit" />
+
+    <p>Messages: <h:messages /></p>
+    
+    <h2>UISelectOne, f:selectItem f:passThroughAttribute</h2>
+    
+    <h:selectOneMenu id="selectOne_selectItem_passThroughAttribute" value="#{bean.fruitValue}">
+        <f:selectItem itemLabel="Apple" itemValue="Apple">
+            <f:passThroughAttribute name="data-apple" value="apple-data" />
+        </f:selectItem>
+        <f:selectItem itemLabel="Orange" itemValue="Orange">
+            <f:passThroughAttribute name="data-orange" value="orange-data" />
+        </f:selectItem>
+        <f:selectItem itemLabel="Pear" itemValue="Pear">
+            <f:passThroughAttribute name="data-pear" value="pear-data" />
+        </f:selectItem>
+        
+    </h:selectOneMenu>
+    
+    <h2>UISelectOne, f:selectItems f:passThroughAttribute</h2>
+    
+    <h:selectOneMenu id="selectOne_selectItem_passThroughAttributes_stringArray" value="#{bean.nameValue}">
+        <f:selectItems value="#{selectMany05Bean.arrayValues}">
+            <f:passThroughAttribute name="data-array" value="array-data" />
+        </f:selectItems>
+        
+    </h:selectOneMenu>
+    
+    <br></br>
+
+    <h:selectOneMenu value="#{bean.hobbitBean}" id="selectOne_selectItem_passThroughAttribute_beanCollection" >
+        <f:selectItems value="#{selectMany05Bean.hobbitCollection}">
+            <f:passThroughAttribute name="data-collection" value="collection-data" />
+        </f:selectItems>
+        <f:converter converterId="hobbit-converter" />
+        
+    </h:selectOneMenu>
+    
+    <br></br>
+
+    <h:selectOneMenu value="#{bean.groupedNameValue}" id="selectOne_selectItem_selectItemGrouped">
+        <f:selectItems value="#{selectMany05Bean.groupedItems}">
+            <f:passThroughAttribute name="data-grouped" value="grouped-data" />
+        </f:selectItems>
+        
+    </h:selectOneMenu>
+
+</h:form>
+        
+    </div>
+    
+    <div class="content">
+        
+    
+<h:form id="form_selectMany">
+    
+    <p>Current nameValueList: #{bean.nameValueList[0]} #{bean.nameValueList[1]}</p>
+    
+    <p>Current hobbitList: #{bean.hobbitBeanList[0]} #{bean.hobbitBeanList[1]}</p>
+    
+    <p>Current groupedItems: #{bean.groupedNameValueList[0]} #{bean.groupedNameValueList[1]}</p>
+    
+    <h:commandButton id="button" value="submit" />
+    
+    <h2>UISelectMany, f:selectItems f:passThroughAttribute</h2>
+    
+    <h:selectManyListbox  id="selectMany_selectItem_passThroughAttributes_stringArray" value="#{bean.nameValueList}">
+        <f:selectItems value="#{selectMany05Bean.arrayValues}">
+            <f:passThroughAttribute name="data-array" value="array-data" />
+        </f:selectItems>
+        
+    </h:selectManyListbox>
+    
+    <br></br>
+
+    <h:selectManyListbox value="#{bean.hobbitBeanList}" id="selectMany_selectItem_passThroughAttribute_beanCollection" >
+        <f:selectItems value="#{selectMany05Bean.hobbitCollection}">
+            <f:passThroughAttribute name="data-collection" value="collection-data" />
+        </f:selectItems>
+        <f:converter converterId="hobbit-converter" />
+        
+    </h:selectManyListbox>
+    
+    <br></br>
+
+    <h:selectManyListbox value="#{bean.groupedNameValueList}" id="selectMany_selectItem_selectItemGrouped">
+        <f:selectItems value="#{selectMany05Bean.groupedItems}">
+            <f:passThroughAttribute name="data-grouped" value="grouped-data" />
+        </f:selectItems>
+        
+    </h:selectManyListbox>
+    
+    
+</h:form>
+        
+    </div>
+    
+</html>
diff --git a/test/agnostic/renderKit/basic/src/main/webapp/renderkit03.jsp b/test/agnostic/renderKit/basic/src/main/webapp/renderkit03.jsp
new file mode 100644
index 0000000..3be8f88
--- /dev/null
+++ b/test/agnostic/renderKit/basic/src/main/webapp/renderkit03.jsp
@@ -0,0 +1,92 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<%@ page contentType="text/html"
+%><%@ page import="javax.faces.FactoryFinder"
+%><%@ page import="javax.faces.context.FacesContext"
+%><%@ page import="javax.faces.context.FacesContextFactory"
+%><%@ page import="javax.faces.component.UIViewRoot"
+%><%@ page import="javax.faces.lifecycle.Lifecycle"
+%><%@ page import="javax.faces.render.RenderKitFactory"
+%><%@ page import="javax.faces.lifecycle.LifecycleFactory"
+%><%
+
+// This test demonstrates the request processing lifecycle of
+// a "non-faces" request --->  faces response
+// It uses a "custom" renderkit to show how a renderkit can be
+// set.
+//
+    // Create a Lifecycle
+    LifecycleFactory lFactory = (LifecycleFactory)
+        FactoryFinder.getFactory(FactoryFinder.LIFECYCLE_FACTORY);
+    Lifecycle lifecycle = lFactory.getLifecycle(LifecycleFactory.DEFAULT_LIFECYCLE);
+    if (lifecycle == null) {
+        out.println("/renderkit03.jsp FAILED - Could not create Lifecycle");
+        return;
+    }
+
+    // Create a FacesContext 
+    FacesContextFactory facesContextFactory = (FacesContextFactory)
+        FactoryFinder.getFactory(FactoryFinder.FACES_CONTEXT_FACTORY);
+    FacesContext facesContext = facesContextFactory.getFacesContext(
+        config.getServletContext(), request, response, lifecycle);
+    if (facesContext == null) {
+        out.println("/renderkit03.jsp FAILED - Could not create FacesContext");
+        return;
+    }
+
+    // Acquire a view
+    UIViewRoot view = facesContext.getApplication().getViewHandler().restoreView(facesContext, "/renderkit03A.jsp");
+    if ( view == null)  {
+        view = facesContext.getApplication().getViewHandler().createView(facesContext, "/renderkit03A.jsp");
+    }
+    // Set the RenderKitFactory.HTML_BASIC_RENDER_KIT renderkit Id
+    view.setRenderKitId("CUSTOM");
+    facesContext.setViewRoot(view);
+    facesContext.renderResponse();
+
+    lifecycle.execute(facesContext);
+    lifecycle.render(facesContext);
+
+    // All tests passed
+    out.println("/renderkit03.jsp PASSED");
+%>
diff --git a/test/agnostic/renderKit/basic/src/main/webapp/renderkit03A.jsp b/test/agnostic/renderKit/basic/src/main/webapp/renderkit03A.jsp
new file mode 100644
index 0000000..4451dce
--- /dev/null
+++ b/test/agnostic/renderKit/basic/src/main/webapp/renderkit03A.jsp
@@ -0,0 +1,52 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<HTML>
+
+    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
+    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+
+       <f:view>  
+          <h:outputText id="simplelabel" value="This IS A SIMPLE LABEL" /> 
+       </f:view>
+
+</HTML>
diff --git a/test/agnostic/renderKit/basic/src/main/webapp/resources/alibrary/script.js b/test/agnostic/renderKit/basic/src/main/webapp/resources/alibrary/script.js
new file mode 100644
index 0000000..a609c2e
--- /dev/null
+++ b/test/agnostic/renderKit/basic/src/main/webapp/resources/alibrary/script.js
@@ -0,0 +1,42 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+// Placeholder empty script file
+
+alert("You found me!");
diff --git a/test/agnostic/renderKit/basic/src/main/webapp/resources/css/main.css b/test/agnostic/renderKit/basic/src/main/webapp/resources/css/main.css
new file mode 100644
index 0000000..6a63865
--- /dev/null
+++ b/test/agnostic/renderKit/basic/src/main/webapp/resources/css/main.css
@@ -0,0 +1,75 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+
+div.content 
+{
+	clear:both;
+	float:left;
+	padding:1em;
+	border:1px dashed blue;
+}
+
+div.content .button 
+{
+	clear:both;
+	float:left;
+	margin-top:1em;
+}
+
+div.component
+{
+	clear:both;
+	float:left;
+	padding:0.5em;
+	border:1px dashed red;
+}
+
+div.controls
+{
+	clear:both;
+	float:left;
+	padding:0.5em;
+}
+
+input
+{
+	margin-right:1em;
+}
diff --git a/test/agnostic/renderKit/basic/src/main/webapp/resources/foo.js b/test/agnostic/renderKit/basic/src/main/webapp/resources/foo.js
new file mode 100644
index 0000000..c06c5f1
--- /dev/null
+++ b/test/agnostic/renderKit/basic/src/main/webapp/resources/foo.js
@@ -0,0 +1,40 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+// Placeholder empty script file
diff --git a/test/agnostic/renderKit/basic/src/main/webapp/resources/import1.css b/test/agnostic/renderKit/basic/src/main/webapp/resources/import1.css
new file mode 100644
index 0000000..e5c22a6
--- /dev/null
+++ b/test/agnostic/renderKit/basic/src/main/webapp/resources/import1.css
@@ -0,0 +1,40 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
diff --git a/test/agnostic/renderKit/basic/src/main/webapp/scriptWithComment.xhtml b/test/agnostic/renderKit/basic/src/main/webapp/scriptWithComment.xhtml
new file mode 100644
index 0000000..e843946
--- /dev/null
+++ b/test/agnostic/renderKit/basic/src/main/webapp/scriptWithComment.xhtml
@@ -0,0 +1,15 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://xmlns.jcp.org/jsf/html">
+    <h:head>
+        <title>Facelet Title</title>
+    </h:head>
+    <h:body>
+        <script>
+            <!-- This has a " in it -->
+        </script>
+    </h:body>
+</html>
diff --git a/test/agnostic/renderKit/basic/src/main/webapp/scriptWithComment2.xhtml b/test/agnostic/renderKit/basic/src/main/webapp/scriptWithComment2.xhtml
new file mode 100644
index 0000000..e60e007
--- /dev/null
+++ b/test/agnostic/renderKit/basic/src/main/webapp/scriptWithComment2.xhtml
@@ -0,0 +1,21 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://xmlns.jcp.org/jsf/html"
+      xmlns:f="http://xmlns.jcp.org/jsf/core">
+    <h:head>
+        <title>Facelet Title</title>
+    </h:head>
+    <h:body>
+        <h:form id="form">
+            <h:commandButton id="submit" value="Submit">
+                <f:ajax execute="@form" render="@form"/>
+            </h:commandButton>
+            <script>
+                <!-- This has a " in it -->
+            </script>
+        </h:form>
+    </h:body>
+</html>
diff --git a/test/agnostic/renderKit/basic/src/test/java/com/sun/faces/test/agnostic/renderKit/basic/CustomRenderKitIT.java b/test/agnostic/renderKit/basic/src/test/java/com/sun/faces/test/agnostic/renderKit/basic/CustomRenderKitIT.java
new file mode 100644
index 0000000..b6a9359
--- /dev/null
+++ b/test/agnostic/renderKit/basic/src/test/java/com/sun/faces/test/agnostic/renderKit/basic/CustomRenderKitIT.java
@@ -0,0 +1,106 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.renderKit.basic;
+
+import org.junit.After;
+import static org.junit.Assert.assertTrue;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+
+public class CustomRenderKitIT {
+    
+    /**
+     * Stores the web URL.
+     */
+    private String webUrl;
+    /**
+     * Stores the web client.
+     */
+    private WebClient webClient;
+
+    /**
+     * Setup before testing.
+     * 
+     * @throws Exception when a serious error occurs.
+     */
+    @BeforeClass
+    public static void setUpClass() throws Exception {
+    }
+
+    /**
+     * Cleanup after testing.
+     * 
+     * @throws Exception when a serious error occurs.
+     */
+    @AfterClass
+    public static void tearDownClass() throws Exception {
+    }
+
+    /**
+     * Setup before testing.
+     */
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    /**
+     * Tear down after testing.
+     */
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testRenderKit03() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "renderkit03.jsp");
+        String pageText = page.getBody().asText();
+        assertTrue(pageText.matches("(?s).*This IS A SIMPLE LABEL FROM THE CUSTOM RENDERER.*/renderkit03.jsp PASSED.*"));
+
+        
+    }
+       
+}
diff --git a/test/agnostic/renderKit/basic/src/test/java/com/sun/faces/test/agnostic/renderKit/basic/Issue1089IT.java b/test/agnostic/renderKit/basic/src/test/java/com/sun/faces/test/agnostic/renderKit/basic/Issue1089IT.java
new file mode 100644
index 0000000..f03f82f
--- /dev/null
+++ b/test/agnostic/renderKit/basic/src/test/java/com/sun/faces/test/agnostic/renderKit/basic/Issue1089IT.java
@@ -0,0 +1,213 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDLGPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.renderKit.basic;
+
+import com.gargoylesoftware.htmlunit.html.HtmlOption;
+import java.util.List;
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+
+import com.gargoylesoftware.htmlunit.html.HtmlSelect;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import org.junit.*;
+import static org.junit.Assert.*;
+
+public class Issue1089IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testDataAttributes() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/data-attributes.xhtml");
+        String pageMarkup = page.getBody().asXml();
+        assertTrue(pageMarkup.contains("data-development=\"/data-attributes.xhtml\""));
+        assertTrue(pageMarkup.contains("data-name=\"value\""));
+        assertTrue(pageMarkup.contains("data-outer-inner=\"innerValue\""));
+        assertTrue(pageMarkup.contains("data-a-b-c-d=\"e\""));
+        assertTrue(pageMarkup.contains("data-a-b-c-f=\"g\""));
+        assertTrue(pageMarkup.contains("data-a-b-c-h=\"i\""));
+        assertTrue(pageMarkup.contains("data-a-b-c-j-k-l-m=\"n\""));
+
+    }
+    
+    @Test
+    public void testPassThroughAttributes() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/passThroughAttributes.xhtml");
+        String pageMarkup = page.getBody().asXml();
+        assertTrue(pageMarkup.contains("elname=\"/passThroughAttributes.xhtml\""));
+        assertTrue(pageMarkup.contains("literalname=\"literalValue\""));
+        assertTrue(!pageMarkup.contains("xmlns:p=\"http://java.sun.com/jsf/passthrough\""));
+        assertTrue(pageMarkup.contains("foo=\"bar\""));
+
+    }
+    
+    @Test
+    public void testAttributes() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/attributes.xhtml");
+        String pageMarkup = page.getBody().asXml();
+        assertTrue(pageMarkup.contains("class=\"a b c\""));
+        assertTrue(pageMarkup.contains("size=\"1\""));
+        
+    }
+    
+    
+    @Test
+    public void testSelectPassThroughAttributesMarkup() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/passThroughAttributesSelect.xhtml");
+        
+        HtmlSelect select = (HtmlSelect) page.getElementById("form_selectOne:selectOne_selectItem_passThroughAttribute");
+        String xml = select.asXml();
+        
+        assertTrue(xml.contains("data-apple=\"apple-data\""));
+        assertTrue(xml.contains("data-apple=\"apple-data\""));
+        assertTrue(xml.contains("data-orange=\"orange-data\""));
+        assertTrue(xml.contains("data-pear=\"pear-data\""));
+        
+        select = (HtmlSelect) page.getElementById("form_selectOne:selectOne_selectItem_passThroughAttributes_stringArray");
+        xml = select.asXml();
+        assertTrue(xml.contains("data-array=\"array-data\""));
+        
+        select = (HtmlSelect) page.getElementById("form_selectOne:selectOne_selectItem_passThroughAttribute_beanCollection");
+        xml = select.asXml();
+        assertTrue(xml.contains("data-collection=\"collection-data\""));
+        
+        select = (HtmlSelect) page.getElementById("form_selectOne:selectOne_selectItem_selectItemGrouped");
+        xml = select.asXml();
+        assertTrue(xml.matches("(?s).*select.*optgroup.*option.*optgroup.*optgroup.*option.*"));
+        
+        select = (HtmlSelect) page.getElementById("form_selectMany:selectMany_selectItem_passThroughAttributes_stringArray");
+        xml = select.asXml();
+        assertTrue(xml.contains("data-array=\"array-data\""));
+        
+        select = (HtmlSelect) page.getElementById("form_selectMany:selectMany_selectItem_passThroughAttribute_beanCollection");
+        xml = select.asXml();
+        assertTrue(xml.contains("data-collection=\"collection-data\""));
+        
+        select = (HtmlSelect) page.getElementById("form_selectMany:selectMany_selectItem_selectItemGrouped");
+        xml = select.asXml();
+        assertTrue(xml.contains("data-grouped=\"grouped-data\""));
+        assertTrue(xml.matches("(?s).*select.*optgroup.*data-grouped=\"grouped-data\".*option.*option.*option.*option.*option.*option.*optgroup.*optgroup.*option.*option.*option.*option.*optgroup.*select.*"));
+        
+    }
+    
+    @Test
+    public void testSelectOnePassThroughAttributesBehavior() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/passThroughAttributesSelect.xhtml");
+        
+        HtmlSelect select = (HtmlSelect) page.getElementById("form_selectOne:selectOne_selectItem_passThroughAttribute");
+        List<HtmlOption> options = select.getOptions();
+        HtmlOption last = options.get(options.size() - 1);
+        select.setSelectedAttribute(last, true);
+        
+        select = (HtmlSelect) page.getElementById("form_selectOne:selectOne_selectItem_passThroughAttributes_stringArray");
+        options = select.getOptions();
+        last = options.get(options.size() - 1);        
+        select.setSelectedAttribute(last, true);
+        
+        select = (HtmlSelect) page.getElementById("form_selectOne:selectOne_selectItem_passThroughAttribute_beanCollection");
+        options = select.getOptions();
+        last = options.get(options.size() - 1);        
+        select.setSelectedAttribute(last, true);
+        
+        select = (HtmlSelect) page.getElementById("form_selectOne:selectOne_selectItem_selectItemGrouped");
+        options = select.getOptions();
+        last = options.get(options.size() - 1);        
+        select.setSelectedAttribute(last, true);
+        
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("form_selectOne:button");
+        
+        page = button.click();
+        String text = page.asText();
+        
+        assertTrue(text.contains("Current fruitValue: Pear"));
+        assertTrue(text.contains("Current nameValue: Brent"));
+        assertTrue(text.contains("Current hobbitValue: Pippin"));
+        assertTrue(text.contains("Current groupedNameValue: Billy"));
+    }
+    
+    @Test 
+    public void testSelectManyPassThroughAttributesBehavior() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/passThroughAttributesSelect.xhtml");
+
+        HtmlSelect select = (HtmlSelect) page.getElementById("form_selectMany:selectMany_selectItem_passThroughAttributes_stringArray");
+        List<HtmlOption> options = select.getOptions();
+        HtmlOption nextToLast = options.get(options.size() - 2),
+                last = options.get(options.size() - 1);
+        select.setSelectedAttribute(nextToLast, true);
+        select.setSelectedAttribute(last, true);
+
+        select = (HtmlSelect) page.getElementById("form_selectMany:selectMany_selectItem_passThroughAttribute_beanCollection");
+        options = select.getOptions();
+        nextToLast = options.get(options.size() - 2);
+        last = options.get(options.size() - 1);
+        select.setSelectedAttribute(nextToLast, true);
+        select.setSelectedAttribute(last, true);
+        
+        select = (HtmlSelect) page.getElementById("form_selectMany:selectMany_selectItem_selectItemGrouped");
+        options = select.getOptions();
+        nextToLast = options.get(options.size() - 2);
+        last = options.get(options.size() - 1);
+        select.setSelectedAttribute(nextToLast, true);
+        select.setSelectedAttribute(last, true);
+        
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("form_selectMany:button");
+        page = button.click();
+        
+        String text = page.asText();
+        
+        assertTrue(text.contains("Current nameValueList: Billy Brent"));
+        assertTrue(text.contains("Current hobbitList: Merry Pippin"));
+        assertTrue(text.contains("Current groupedItems: Mickey Billy"));        
+        
+    }
+    
+}
diff --git a/test/agnostic/renderKit/basic/src/test/java/com/sun/faces/test/agnostic/renderKit/basic/Issue1100IT.java b/test/agnostic/renderKit/basic/src/test/java/com/sun/faces/test/agnostic/renderKit/basic/Issue1100IT.java
new file mode 100644
index 0000000..3aac762
--- /dev/null
+++ b/test/agnostic/renderKit/basic/src/test/java/com/sun/faces/test/agnostic/renderKit/basic/Issue1100IT.java
@@ -0,0 +1,69 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDLGPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.renderKit.basic;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+
+import org.junit.*;
+import static org.junit.Assert.*;
+
+public class Issue1100IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testHBodyWithGivenId() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/hhead.xhtml");
+        assertTrue(page.asXml().contains("headid"));
+    }
+}
diff --git a/test/agnostic/renderKit/basic/src/test/java/com/sun/faces/test/agnostic/renderKit/basic/Issue1134IT.java b/test/agnostic/renderKit/basic/src/test/java/com/sun/faces/test/agnostic/renderKit/basic/Issue1134IT.java
new file mode 100644
index 0000000..b20b91b
--- /dev/null
+++ b/test/agnostic/renderKit/basic/src/test/java/com/sun/faces/test/agnostic/renderKit/basic/Issue1134IT.java
@@ -0,0 +1,83 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDLGPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.agnostic.renderKit.basic; 
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+
+import org.junit.*;
+import static org.junit.Assert.*;
+
+public class Issue1134IT {
+
+    /**
+     * Stores the web URL.
+     */
+    private String webUrl;
+    /**
+     * Stores the web client.
+     */
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+
+    // ------------------------------------------------------------ Test Methods
+
+    @Test
+    public void testRole() throws Exception {
+
+        webClient = new WebClient();
+        HtmlPage page = webClient.getPage(webUrl+"faces/panelGrid.xhtml");
+        String xml = page.asXml();
+        assertTrue(xml.matches("(?s).*<table\\s+role=\"presentation\".*"));
+    }
+
+}
diff --git a/test/agnostic/renderKit/basic/src/test/java/com/sun/faces/test/agnostic/renderKit/basic/Issue1830IT.java b/test/agnostic/renderKit/basic/src/test/java/com/sun/faces/test/agnostic/renderKit/basic/Issue1830IT.java
new file mode 100644
index 0000000..3dec591
--- /dev/null
+++ b/test/agnostic/renderKit/basic/src/test/java/com/sun/faces/test/agnostic/renderKit/basic/Issue1830IT.java
@@ -0,0 +1,78 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDLGPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.renderKit.basic;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlElement;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.*;
+import static org.junit.Assert.*;
+
+public class Issue1830IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    /**
+     * This test verifies that using a null value for the value of outputFormat
+     * works. It should just display nothing.
+     */
+    @Test
+    public void testNullValueForOutputFormat() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/issue1830.xhtml");
+        for (int i=0; i<10; i++) {
+            for(int j=0; j<10; j++) {
+                HtmlElement element = page.getHtmlElementById("form:repeat:" + i + ":table:" + j + ":row");
+                assertNotNull(element);
+            }
+        }
+    }
+}
diff --git a/test/agnostic/renderKit/basic/src/test/java/com/sun/faces/test/agnostic/renderKit/basic/Issue2065IT.java b/test/agnostic/renderKit/basic/src/test/java/com/sun/faces/test/agnostic/renderKit/basic/Issue2065IT.java
new file mode 100644
index 0000000..3d4966f
--- /dev/null
+++ b/test/agnostic/renderKit/basic/src/test/java/com/sun/faces/test/agnostic/renderKit/basic/Issue2065IT.java
@@ -0,0 +1,69 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDLGPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.renderKit.basic;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.*;
+import static org.junit.Assert.*;
+
+public class Issue2065IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testAddClientBehaviorRenderer() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/issue2065.xhtml");
+        assertTrue(page.asText().contains("javax.faces.behavior.Ajax;"));
+        assertTrue(page.asText().contains("com.sun.faces.test.agnostic.renderKit.basic.Issue2065ClientBehaviorRenderer;"));
+    }
+}
diff --git a/test/agnostic/renderKit/basic/src/test/java/com/sun/faces/test/agnostic/renderKit/basic/Issue2168IT.java b/test/agnostic/renderKit/basic/src/test/java/com/sun/faces/test/agnostic/renderKit/basic/Issue2168IT.java
new file mode 100644
index 0000000..50a154b
--- /dev/null
+++ b/test/agnostic/renderKit/basic/src/test/java/com/sun/faces/test/agnostic/renderKit/basic/Issue2168IT.java
@@ -0,0 +1,70 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.renderKit.basic;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class Issue2168IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testIssue2168() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/issue2168.xhtml");
+        assertTrue(page.asXml().contains("ln=alibrary&v=1"));
+    }
+}
diff --git a/test/agnostic/renderKit/basic/src/test/java/com/sun/faces/test/agnostic/renderKit/basic/Issue2351IT.java b/test/agnostic/renderKit/basic/src/test/java/com/sun/faces/test/agnostic/renderKit/basic/Issue2351IT.java
new file mode 100644
index 0000000..d93ddfe
--- /dev/null
+++ b/test/agnostic/renderKit/basic/src/test/java/com/sun/faces/test/agnostic/renderKit/basic/Issue2351IT.java
@@ -0,0 +1,85 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDLGPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.agnostic.renderKit.basic; 
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+
+import org.junit.*;
+import static org.junit.Assert.*;
+
+public class Issue2351IT {
+
+    /**
+     * Stores the web URL.
+     */
+    private String webUrl;
+    /**
+     * Stores the web client.
+     */
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+
+    // ------------------------------------------------------------ Test Methods
+
+    /**
+     * This test verifies that using a null value for the value of outputFormat works.
+     * It should just dispaly nothing. 
+     */
+    @Test
+    public void testNullValueForOutputFormat() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl+"faces/outputFormat.xhtml");
+        assertTrue(page.asText().contains("outputFormat with no arguements: end outputFormat with no arguements"));
+        assertTrue(page.asText().contains("outputFormat with null expression: end outputFormat with null expression"));
+        assertTrue(page.asText().contains("outputFormat with expression that evaluates to null (via bean) : end outputFormat with expression that evaluates to null (via bean)"));
+    }
+}
diff --git a/test/agnostic/renderKit/basic/src/test/java/com/sun/faces/test/agnostic/renderKit/basic/Issue2386IT.java b/test/agnostic/renderKit/basic/src/test/java/com/sun/faces/test/agnostic/renderKit/basic/Issue2386IT.java
new file mode 100644
index 0000000..5889f2c
--- /dev/null
+++ b/test/agnostic/renderKit/basic/src/test/java/com/sun/faces/test/agnostic/renderKit/basic/Issue2386IT.java
@@ -0,0 +1,82 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDLGPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.agnostic.renderKit.basic; 
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+
+import org.junit.*;
+import static org.junit.Assert.*;
+
+public class Issue2386IT {
+
+    /**
+     * Stores the web URL.
+     */
+    private String webUrl;
+    /**
+     * Stores the web client.
+     */
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+
+    // ------------------------------------------------------------ Test Methods
+
+    @Test
+    public void testDisabledLink() throws Exception {
+
+        HtmlPage page = webClient.getPage(webUrl+"faces/hlink.xhtml");
+        assertTrue(!(page.asXml().contains("disabled")));
+    }
+
+}
diff --git a/test/agnostic/renderKit/basic/src/test/java/com/sun/faces/test/agnostic/renderKit/basic/Issue2409IT.java b/test/agnostic/renderKit/basic/src/test/java/com/sun/faces/test/agnostic/renderKit/basic/Issue2409IT.java
new file mode 100644
index 0000000..f6b835b
--- /dev/null
+++ b/test/agnostic/renderKit/basic/src/test/java/com/sun/faces/test/agnostic/renderKit/basic/Issue2409IT.java
@@ -0,0 +1,69 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDLGPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.renderKit.basic;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+
+import org.junit.*;
+import static org.junit.Assert.*;
+
+public class Issue2409IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testHBodyWithGivenId() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/hbody.xhtml");
+        assertTrue(page.asXml().contains("bodyid"));
+    }
+}
diff --git a/test/agnostic/renderKit/basic/src/test/java/com/sun/faces/test/agnostic/renderKit/basic/Issue2420IT.java b/test/agnostic/renderKit/basic/src/test/java/com/sun/faces/test/agnostic/renderKit/basic/Issue2420IT.java
new file mode 100644
index 0000000..e01d306
--- /dev/null
+++ b/test/agnostic/renderKit/basic/src/test/java/com/sun/faces/test/agnostic/renderKit/basic/Issue2420IT.java
@@ -0,0 +1,72 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDLGPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.renderKit.basic;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlFileInput;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+
+import org.junit.*;
+import static org.junit.Assert.*;
+
+public class Issue2420IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testInputFileRender() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/inputFileRenderTest.xhtml");
+        String expectedOutput = "<input id="+'"'+"form:file"+'"'+" type="+'"'+"file"+'"' +
+            " name="+'"'+"form:file"+'"'+" value="+'"'+"text value"+'"'+" />";
+        assertTrue(page.getWebResponse().getContentAsString().contains(expectedOutput));
+    }
+}
diff --git a/test/agnostic/renderKit/basic/src/test/java/com/sun/faces/test/agnostic/renderKit/basic/Issue2459IT.java b/test/agnostic/renderKit/basic/src/test/java/com/sun/faces/test/agnostic/renderKit/basic/Issue2459IT.java
new file mode 100644
index 0000000..2ecb4b4
--- /dev/null
+++ b/test/agnostic/renderKit/basic/src/test/java/com/sun/faces/test/agnostic/renderKit/basic/Issue2459IT.java
@@ -0,0 +1,154 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDLGPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.renderKit.basic;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlForm;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+import static org.junit.Assert.assertEquals;
+
+public class Issue2459IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testInputFileRender() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/issue2459.xhtml");
+        HtmlForm form = (HtmlForm) page.getElementById("form1");
+        String attrValue = form.getAttribute("foo");
+        assertEquals("bar", attrValue);
+        
+        attrValue = form.getAttribute("foo");
+        assertEquals("bar", attrValue);
+        
+        attrValue = form.getAttribute("accept");
+        assertEquals("text/html", attrValue);
+        
+        
+        attrValue = form.getAttribute("dir");
+        assertEquals("LTR", attrValue);
+        
+        
+        attrValue = form.getAttribute("enctype");
+        assertEquals("noneDefault", attrValue);
+        
+        
+        attrValue = form.getAttribute("lang");
+        assertEquals("en", attrValue);
+        
+        
+        attrValue = form.getAttribute("onclick");
+        assertEquals("js1", attrValue);
+        
+        
+        attrValue = form.getAttribute("ondblclick");
+        assertEquals("js2", attrValue);
+        
+        
+        attrValue = form.getAttribute("onkeydown");
+        assertEquals("js3", attrValue);
+        
+        
+        attrValue = form.getAttribute("onkeypress");
+        assertEquals("js4", attrValue);
+        
+        
+        attrValue = form.getAttribute("onkeyup");
+        assertEquals("js5", attrValue);
+        
+        
+        attrValue = form.getAttribute("onmousedown");
+        assertEquals("js6", attrValue);
+        
+        
+        attrValue = form.getAttribute("onmousemove");
+        assertEquals("js7", attrValue);
+        
+        
+        attrValue = form.getAttribute("onmouseout");
+        assertEquals("js8", attrValue);
+        
+
+        attrValue = form.getAttribute("onmouseover");
+        assertEquals("js9", attrValue);
+        
+        
+        attrValue = form.getAttribute("onmouseup");
+        assertEquals("js10", attrValue);
+        
+        
+        attrValue = form.getAttribute("onreset");
+        assertEquals("js11", attrValue);
+        
+        
+        attrValue = form.getAttribute("onsubmit");
+        assertEquals("js12", attrValue);
+        
+        
+        attrValue = form.getAttribute("style");
+        assertEquals("Color: red;", attrValue);
+        
+        
+        attrValue = form.getAttribute("target");
+        assertEquals("frame1", attrValue);
+        
+        
+        attrValue = form.getAttribute("title");
+        assertEquals("FormTitle", attrValue);
+        
+        
+    }
+}
diff --git a/test/agnostic/renderKit/basic/src/test/java/com/sun/faces/test/agnostic/renderKit/basic/Issue2502IT.java b/test/agnostic/renderKit/basic/src/test/java/com/sun/faces/test/agnostic/renderKit/basic/Issue2502IT.java
new file mode 100644
index 0000000..62304bf
--- /dev/null
+++ b/test/agnostic/renderKit/basic/src/test/java/com/sun/faces/test/agnostic/renderKit/basic/Issue2502IT.java
@@ -0,0 +1,94 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDLGPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.agnostic.renderKit.basic; 
+
+import com.gargoylesoftware.htmlunit.BrowserVersion;
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+
+import org.junit.*;
+import static org.junit.Assert.*;
+
+public class Issue2502IT {
+
+    /**
+     * Stores the web URL.
+     */
+    private String webUrl;
+    /**
+     * Stores the web client.
+     */
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+
+    // ------------------------------------------------------------ Test Methods
+
+    @Test
+    public void testEscape() throws Exception {
+
+        String expected1 = "<i>test1</i>";
+        String expected2 = "<i>test2</i>";
+        String expected3 = "<i>test3</i>";
+
+        /*
+         * We don't want this to be simulated as an IE browser since IE
+         * does some automatic replacing.
+         */
+        webClient = new WebClient(BrowserVersion.FIREFOX_3_6);
+        HtmlPage page = webClient.getPage(webUrl+"faces/outputEscape.xhtml");
+        assertTrue(page.asXml().contains(expected1));
+        assertTrue(page.asXml().contains(expected2));
+        assertTrue(page.asXml().contains(expected3));
+    }
+
+}
diff --git a/test/agnostic/renderKit/basic/src/test/java/com/sun/faces/test/agnostic/renderKit/basic/Issue2503IT.java b/test/agnostic/renderKit/basic/src/test/java/com/sun/faces/test/agnostic/renderKit/basic/Issue2503IT.java
new file mode 100644
index 0000000..8f7971f
--- /dev/null
+++ b/test/agnostic/renderKit/basic/src/test/java/com/sun/faces/test/agnostic/renderKit/basic/Issue2503IT.java
@@ -0,0 +1,92 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDLGPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.agnostic.renderKit.basic; 
+
+import com.gargoylesoftware.htmlunit.BrowserVersion;
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+
+import org.junit.*;
+import static org.junit.Assert.*;
+
+public class Issue2503IT {
+
+    /**
+     * Stores the web URL.
+     */
+    private String webUrl;
+    /**
+     * Stores the web client.
+     */
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+
+    // ------------------------------------------------------------ Test Methods
+
+    @Test
+    public void testEscape() throws Exception {
+
+        String expected1 = "@import url(\"resources/import1.css\");";
+        String expected2 = "Tom & Jerry";
+
+        /*
+         * We don't want this to be simulated as an IE browser since IE
+         * does some automatic replacing.
+         */
+        webClient = new WebClient(BrowserVersion.FIREFOX_3_6);
+        HtmlPage page = webClient.getPage(webUrl+"faces/outputEscape1.xhtml");
+        assertTrue(page.asXml().contains(expected1));
+        assertTrue(page.asXml().contains(expected2));
+    }
+
+}
diff --git a/test/agnostic/renderKit/basic/src/test/java/com/sun/faces/test/agnostic/renderKit/basic/Issue2523IT.java b/test/agnostic/renderKit/basic/src/test/java/com/sun/faces/test/agnostic/renderKit/basic/Issue2523IT.java
new file mode 100644
index 0000000..c8be76c
--- /dev/null
+++ b/test/agnostic/renderKit/basic/src/test/java/com/sun/faces/test/agnostic/renderKit/basic/Issue2523IT.java
@@ -0,0 +1,70 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDLGPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.renderKit.basic;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlElement;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.*;
+import static org.junit.Assert.*;
+
+public class Issue2523IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testIssue2523() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/issue2523.xhtml");
+        assertTrue(page.asText().indexOf("This should show up") != -1);
+        assertTrue(page.asText().indexOf("And this should not") == -1);
+    }
+}
diff --git a/test/agnostic/renderKit/basic/src/test/java/com/sun/faces/test/agnostic/renderKit/basic/Issue2613IT.java b/test/agnostic/renderKit/basic/src/test/java/com/sun/faces/test/agnostic/renderKit/basic/Issue2613IT.java
new file mode 100644
index 0000000..7f048e3
--- /dev/null
+++ b/test/agnostic/renderKit/basic/src/test/java/com/sun/faces/test/agnostic/renderKit/basic/Issue2613IT.java
@@ -0,0 +1,77 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.renderKit.basic;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+import org.junit.Ignore;
+
+public class Issue2613IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    @Ignore
+    public void testIssue2613() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/issue2613.xhtml");
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getHtmlElementById("submit");
+        page = button.click();
+        webClient.waitForBackgroundJavaScript(120000);
+        assertTrue(page.asXml().contains("button, email, form, javax.faces.ViewState, javax.faces.behavior.event, javax.faces.partial.ajax, javax.faces.partial.event, javax.faces.partial.execute, javax.faces.partial.render, javax.faces.source, name, tel"));
+        assertTrue(page.asXml().contains("12"));
+    }
+}
diff --git a/test/agnostic/renderKit/basic/src/test/java/com/sun/faces/test/agnostic/renderKit/basic/Issue2721IT.java b/test/agnostic/renderKit/basic/src/test/java/com/sun/faces/test/agnostic/renderKit/basic/Issue2721IT.java
new file mode 100644
index 0000000..21decdd
--- /dev/null
+++ b/test/agnostic/renderKit/basic/src/test/java/com/sun/faces/test/agnostic/renderKit/basic/Issue2721IT.java
@@ -0,0 +1,87 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDLGPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.renderKit.basic;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlElement;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.sun.faces.test.junit.JsfTest;
+import com.sun.faces.test.junit.JsfTestRunner;
+import com.sun.faces.test.junit.JsfVersion;
+import org.junit.*;
+import static org.junit.Assert.*;
+import org.junit.runner.RunWith;
+
+ at RunWith(JsfTestRunner.class)
+public class Issue2721IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @JsfTest(JsfVersion.JSF_2_2_4)
+    @Test
+    public void testScriptWithComment() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/scriptWithComment.xhtml");
+        String response = page.getWebResponse().getContentAsString();
+        assertTrue(response.indexOf("\"") != -1);
+    }
+
+    @JsfTest(JsfVersion.JSF_2_2_4)
+    @Test
+    public void testScriptWithComment2() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/scriptWithComment2.xhtml");
+        HtmlElement submit = page.getHtmlElementById("form:submit");
+        submit.click();
+        webClient.waitForBackgroundJavaScript(60000);
+        String response = page.getWebResponse().getContentAsString();
+        assertTrue(response.indexOf("\"") != -1);
+    }
+}
diff --git a/test/agnostic/renderKit/basic/src/test/java/com/sun/faces/test/agnostic/renderKit/basic/Issue2767IT.java b/test/agnostic/renderKit/basic/src/test/java/com/sun/faces/test/agnostic/renderKit/basic/Issue2767IT.java
new file mode 100644
index 0000000..bd226b9
--- /dev/null
+++ b/test/agnostic/renderKit/basic/src/test/java/com/sun/faces/test/agnostic/renderKit/basic/Issue2767IT.java
@@ -0,0 +1,80 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDLGPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.renderKit.basic;
+
+import com.gargoylesoftware.htmlunit.html.HtmlOption;
+import java.util.List;
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+
+import com.gargoylesoftware.htmlunit.html.HtmlSelect;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import org.junit.*;
+import static org.junit.Assert.*;
+
+public class Issue2767IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testPassThroughAttributes() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/issue2767.xhtml");
+        String pageMarkup = page.getBody().asXml();
+        assertTrue(pageMarkup.contains("elname=\"/issue2767.xhtml\""));
+        assertTrue(pageMarkup.contains("literalname=\"literalValue\""));
+        assertTrue(!pageMarkup.contains("xmlns:p=\"http://xmlns.jcp.org/jsf/passthrough\""));
+        assertTrue(pageMarkup.contains("foo=\"bar\""));
+        assertTrue(page.asText().contains("This should show up"));
+        assertTrue(!page.asText().contains("And this should not"));
+
+    }
+}
diff --git a/test/agnostic/renderKit/noLinkDecoration/nbactions.xml b/test/agnostic/renderKit/noLinkDecoration/nbactions.xml
new file mode 100644
index 0000000..c7f6666
--- /dev/null
+++ b/test/agnostic/renderKit/noLinkDecoration/nbactions.xml
@@ -0,0 +1,169 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--><actions>
+        <action>
+            <actionName>debug.test.single</actionName>
+            <goals>
+                <goal>test-compile</goal>
+                <goal>surefire:test</goal>
+            </goals>
+            <properties>
+                <test>Issue3054</test>
+                <forkMode>once</forkMode>
+                <maven.surefire.debug>-Xdebug -Xrunjdwp:transport=dt_socket,server=n,address=${jpda.address}</maven.surefire.debug>
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                <jpda.listen>true</jpda.listen>
+                <project.build.finalName>test-agnostic-renderKit-noLinkDecoration</project.build.finalName>
+                <webapp.projectStage>Development</webapp.projectStage>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                <integration.serverPort>8080</integration.serverPort>
+                <integration.serverName>localhost</integration.serverName>
+                <integration.url>http://localhost:8080/test-agnostic-renderKit-noLinkDecoration/</integration.url>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+            </properties>
+        </action>
+        <action>
+            <actionName>test.single</actionName>
+            <goals>
+                <goal>test-compile</goal>
+                <goal>surefire:test</goal>
+            </goals>
+            <properties>
+                <project.build.finalName>test-agnostic-renderKit-noLinkDecoration</project.build.finalName>
+                <integration.serverPort>8080</integration.serverPort>
+                <integration.serverName>localhost</integration.serverName>
+                <integration.url>http://localhost:8080/test-agnostic-renderKit-noLinkDecoration/</integration.url>
+                <test>Issue3054</test>
+            </properties>
+        </action>
+        <action>
+            <actionName>build</actionName>
+            <goals>
+                <goal>install</goal>
+            </goals>
+            <properties>
+                <webapp.projectStage>Development</webapp.projectStage>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+            </properties>
+        </action>
+        <action>
+            <actionName>rebuild</actionName>
+            <goals>
+                <goal>clean</goal>
+                <goal>install</goal>
+            </goals>
+            <properties>
+                
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                
+                <webapp.projectStage>Development</webapp.projectStage>
+                
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                
+            </properties>
+            <activatedProfiles>
+                <activatedProfile>faces-test</activatedProfile>
+            </activatedProfiles>
+        </action>
+        <action>
+            <actionName>build-with-dependencies</actionName>
+            <reactor>also-make</reactor>
+            <goals>
+                <goal>install</goal>
+            </goals>
+            <properties>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                <webapp.projectStage>Development</webapp.projectStage>
+            </properties>
+        </action>
+        <action>
+            <actionName>run</actionName>
+            <goals>
+                <goal>package</goal>
+            </goals>
+            <properties>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                <netbeans.deploy>true</netbeans.deploy>
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                <webapp.projectStage>Development</webapp.projectStage>
+            </properties>
+            <activatedProfiles>
+                <activatedProfile>faces-test</activatedProfile>
+            </activatedProfiles>
+        </action>
+        <action>
+            <actionName>run.single.deploy</actionName>
+            <goals>
+                <goal>package</goal>
+            </goals>
+            <properties>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                <netbeans.deploy>true</netbeans.deploy>
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                <netbeans.deploy.clientUrlPart>${webpagePath}</netbeans.deploy.clientUrlPart>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                <webapp.projectStage>Development</webapp.projectStage>
+            </properties>
+        </action>
+        <action>
+            <actionName>debug.single.deploy</actionName>
+            <goals>
+                <goal>package</goal>
+            </goals>
+            <properties>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                <netbeans.deploy>true</netbeans.deploy>
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                <netbeans.deploy.debugmode>true</netbeans.deploy.debugmode>
+                <netbeans.deploy.clientUrlPart>${webpagePath}</netbeans.deploy.clientUrlPart>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                <webapp.projectStage>Development</webapp.projectStage>
+            </properties>
+        </action>
+    </actions>
diff --git a/test/agnostic/renderKit/noLinkDecoration/pom.xml b/test/agnostic/renderKit/noLinkDecoration/pom.xml
new file mode 100644
index 0000000..29836ce
--- /dev/null
+++ b/test/agnostic/renderKit/noLinkDecoration/pom.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.agnostic.renderKit</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.agnostic.renderKit</groupId>
+    <artifactId>noLinkDecoration</artifactId>
+    <packaging>war</packaging>
+    <name>Mojarra ${project.version} - Test - Agnostic - RenderKit - No Link Decoration test</name>
+    <build>
+        <finalName>test-agnostic-renderKit-noLinkDecoration</finalName>
+    </build>
+    <properties>
+        <netbeans.hint.deploy.server>gfv3ee6</netbeans.hint.deploy.server>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/test/agnostic/renderKit/noLinkDecoration/src/main/webapp/WEB-INF/faces-config.xml b/test/agnostic/renderKit/noLinkDecoration/src/main/webapp/WEB-INF/faces-config.xml
new file mode 100644
index 0000000..e69de29
diff --git a/test/agnostic/renderKit/noLinkDecoration/src/main/webapp/WEB-INF/glassfish-web.xml b/test/agnostic/renderKit/noLinkDecoration/src/main/webapp/WEB-INF/glassfish-web.xml
new file mode 100644
index 0000000..a20f4aa
--- /dev/null
+++ b/test/agnostic/renderKit/noLinkDecoration/src/main/webapp/WEB-INF/glassfish-web.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
+<glassfish-web-app error-url="">
+  <context-root>/test-agnostic-renderKit-noLinkDecoration</context-root>
+  <class-loader delegate="true"/>
+  <jsp-config>
+    <property name="keepgenerated" value="true">
+      <description>Keep a copy of the generated servlet class' java code.</description>
+    </property>
+  </jsp-config>
+</glassfish-web-app>
diff --git a/test/agnostic/renderKit/noLinkDecoration/src/main/webapp/index.xhtml b/test/agnostic/renderKit/noLinkDecoration/src/main/webapp/index.xhtml
new file mode 100644
index 0000000..becad0d
--- /dev/null
+++ b/test/agnostic/renderKit/noLinkDecoration/src/main/webapp/index.xhtml
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <head>
+        <title></title>
+    </head>
+    <body>
+        <h:form prependId="false">
+
+          <h:link value="link" outcome="page" />
+
+        </h:form>
+    </body>
+</html>
+
diff --git a/test/agnostic/renderKit/noLinkDecoration/src/main/webapp/page.xhtml b/test/agnostic/renderKit/noLinkDecoration/src/main/webapp/page.xhtml
new file mode 100644
index 0000000..3cff25d
--- /dev/null
+++ b/test/agnostic/renderKit/noLinkDecoration/src/main/webapp/page.xhtml
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <head>
+        <title></title>
+    </head>
+    <body>
+        <h:form prependId="false">
+
+          <p id="result">result page</p>
+
+        </h:form>
+    </body>
+</html>
+
diff --git a/test/agnostic/renderKit/noLinkDecoration/src/test/java/com/sun/faces/test/agnostic/renderkit/nolinkdecoration/Issue3054IT.java b/test/agnostic/renderKit/noLinkDecoration/src/test/java/com/sun/faces/test/agnostic/renderkit/nolinkdecoration/Issue3054IT.java
new file mode 100644
index 0000000..a591ab3
--- /dev/null
+++ b/test/agnostic/renderKit/noLinkDecoration/src/test/java/com/sun/faces/test/agnostic/renderkit/nolinkdecoration/Issue3054IT.java
@@ -0,0 +1,81 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.renderkit.nolinkdecoration;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlAnchor;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.sun.faces.test.junit.JsfTest;
+import com.sun.faces.test.junit.JsfTestRunner;
+import com.sun.faces.test.junit.JsfVersion;
+import java.util.List;
+import org.junit.After;
+import static org.junit.Assert.assertTrue;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+ at RunWith(JsfTestRunner.class)
+public class Issue3054IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+    
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @JsfTest(JsfVersion.JSF_2_2_5)
+    @Test
+    public void testNoLinkDecoration() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/index.xhtml");
+        List<HtmlAnchor> anchors = page.getAnchors();
+        String href = anchors.get(0).getHrefAttribute();
+        assertTrue(!href.contains("jftfdi"));
+        assertTrue(!href.contains("jffi"));        
+    }
+}
diff --git a/test/agnostic/renderKit/passthrough/nbactions.xml b/test/agnostic/renderKit/passthrough/nbactions.xml
new file mode 100644
index 0000000..39f7791
--- /dev/null
+++ b/test/agnostic/renderKit/passthrough/nbactions.xml
@@ -0,0 +1,155 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--><actions>
+        <action>
+            <actionName>debug.test.single</actionName>
+            <goals>
+                <goal>test-compile</goal>
+                <goal>surefire:test</goal>
+            </goals>
+            <properties>
+                <test>${packageClassName}</test>
+                <forkMode>once</forkMode>
+                <maven.surefire.debug>-Xdebug -Xrunjdwp:transport=dt_socket,server=n,address=${jpda.address}</maven.surefire.debug>
+                <jpda.listen>true</jpda.listen>
+                <project.build.finalName>test-agnostic-renderKit-passthrough</project.build.finalName>
+                <webapp.projectStage>Development</webapp.projectStage>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                <integration.serverPort>8080</integration.serverPort>
+                <integration.serverName>localhost</integration.serverName>
+                <integration.url>http://localhost:8080/test-agnostic-renderKit-passthrough/</integration.url>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+            </properties>
+        </action>
+        <action>
+            <actionName>test.single</actionName>
+            <goals>
+                <goal>test-compile</goal>
+                <goal>surefire:test</goal>
+            </goals>
+            <properties>
+                <project.build.finalName>test-agnostic-renderKit-passthrough</project.build.finalName>
+                <integration.serverPort>8080</integration.serverPort>
+                <integration.serverName>localhost</integration.serverName>
+                <integration.url>http://localhost:8080/test-agnostic-renderKit-passthrough/</integration.url>
+                <test>${packageClassName}</test>
+            </properties>
+        </action>
+        <action>
+            <actionName>build</actionName>
+            <goals>
+                <goal>install</goal>
+            </goals>
+            <properties>
+                <webapp.projectStage>Development</webapp.projectStage>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+            </properties>
+        </action>
+        <action>
+            <actionName>rebuild</actionName>
+            <goals>
+                <goal>clean</goal>
+                <goal>install</goal>
+            </goals>
+            <properties>
+                
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                
+                <webapp.projectStage>Development</webapp.projectStage>
+                
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                
+            </properties>
+        </action>
+        <action>
+            <actionName>build-with-dependencies</actionName>
+            <reactor>also-make</reactor>
+            <goals>
+                <goal>install</goal>
+            </goals>
+            <properties>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                <webapp.projectStage>Development</webapp.projectStage>
+            </properties>
+        </action>
+        <action>
+            <actionName>run</actionName>
+            <goals>
+                <goal>package</goal>
+            </goals>
+            <properties>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                <netbeans.deploy>true</netbeans.deploy>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                <webapp.projectStage>Development</webapp.projectStage>
+            </properties>
+        </action>
+        <action>
+            <actionName>run.single.deploy</actionName>
+            <goals>
+                <goal>package</goal>
+            </goals>
+            <properties>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                <netbeans.deploy>true</netbeans.deploy>
+                <netbeans.deploy.clientUrlPart>${webpagePath}</netbeans.deploy.clientUrlPart>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                <webapp.projectStage>Development</webapp.projectStage>
+            </properties>
+        </action>
+        <action>
+            <actionName>debug.single.deploy</actionName>
+            <goals>
+                <goal>package</goal>
+            </goals>
+            <properties>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                <netbeans.deploy>true</netbeans.deploy>
+                <netbeans.deploy.debugmode>true</netbeans.deploy.debugmode>
+                <netbeans.deploy.clientUrlPart>${webpagePath}</netbeans.deploy.clientUrlPart>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                <webapp.projectStage>Development</webapp.projectStage>
+            </properties>
+        </action>
+    </actions>
diff --git a/test/agnostic/renderKit/passthrough/pom.xml b/test/agnostic/renderKit/passthrough/pom.xml
new file mode 100644
index 0000000..be0fb25
--- /dev/null
+++ b/test/agnostic/renderKit/passthrough/pom.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.agnostic.renderKit</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.agnostic.renderKit</groupId>
+    <artifactId>passthrough</artifactId>
+    <packaging>war</packaging>
+    <name>Mojarra ${project.version} - Test - Agnostic - RenderKit - Passthrough Element and Attribute Tests</name>
+    <build>
+        <finalName>test-agnostic-renderKit-passthrough</finalName>
+    </build>
+    <properties>
+        <netbeans.hint.deploy.server>gfv3ee6</netbeans.hint.deploy.server>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/test/agnostic/renderKit/passthrough/src/main/java/com/sun/faces/test/renderKit/passthrough/Bean.java b/test/agnostic/renderKit/passthrough/src/main/java/com/sun/faces/test/renderKit/passthrough/Bean.java
new file mode 100644
index 0000000..25ae191
--- /dev/null
+++ b/test/agnostic/renderKit/passthrough/src/main/java/com/sun/faces/test/renderKit/passthrough/Bean.java
@@ -0,0 +1,206 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.test.renderKit.passthrough;
+
+import java.io.Serializable;
+import java.util.Arrays;
+import java.util.List;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.SessionScoped;
+
+ at ManagedBean
+ at SessionScoped
+public class Bean implements Serializable {
+    
+    private String text1 = "text1";
+    private String text2 = "text2";
+    
+    private String publicKey;
+    
+    private String publicKey2;
+
+    public String getPublicKey2() {
+        return publicKey2;
+    }
+
+    public void setPublicKey2(String publicKey2) {
+        this.publicKey2 = publicKey2;
+    }
+
+    public String getPublicKey() {
+        return publicKey;
+    }
+
+    public void setPublicKey(String publicKey) {
+        this.publicKey = publicKey;
+    }
+
+    private String email = "anybody at example.com";
+
+    private boolean checkboxValue;
+
+    private Integer number = 10;
+    private List<String> list = Arrays.asList("1", "2", "3", "4", "5", "6", "7");
+    private String selectOne = "2";
+    private String selectOneSize2 = "3";
+    private List<String> selectMany = Arrays.asList("4", "6");
+    private String longText = "Long text";
+
+    private String lastAction;
+
+    public String getText1() {
+        return text1;
+    }
+
+    public void setText1(String text1) {
+        this.text1 = text1;
+    }
+
+    public String getText2() {
+        return text2;
+    }
+
+    public void setText2(String text2) {
+        this.text2 = text2;
+    }
+
+    public String getEmail() {
+        return email;
+    }
+
+    public void setEmail(String email) {
+        this.email = email;
+    }
+
+    public Integer getNumber() {
+        return number;
+    }
+
+    public void setNumber(Integer number) {
+        this.number = number;
+    }
+
+    public boolean getCheckboxValue() {
+        return checkboxValue;
+    }
+
+    public void setCheckboxValue(boolean checkboxValue) {
+        this.checkboxValue = checkboxValue;
+    }
+
+    public void setList(List<String> list) {
+        this.list = list;
+    }
+
+    public List<String> getList() {
+        return list;
+    }
+
+    public void setSelectOne(String selectOne) {
+        this.selectOne = selectOne;
+    }
+
+    public String getSelectOne() {
+        return selectOne;
+    }
+
+    public void setSelectOneSize2(String selectOneSize2) {
+        this.selectOneSize2 = selectOneSize2;
+    }
+
+    public String getSelectOneSize2() {
+        return selectOneSize2;
+    }
+
+    public void setSelectMany(List<String> selectMany) {
+        this.selectMany = selectMany;
+    }
+
+    public List<String> getSelectMany() {
+        return selectMany;
+    }
+
+    public void setLongText(String longText) {
+        this.longText = longText;
+    }
+
+    public String getLongText() {
+        return longText;
+    }
+
+    public String action1() {
+        lastAction = "action1";
+        return null;
+    }
+
+    public String action2() {
+        lastAction = "action2";
+        return null;
+    }
+    
+    public String getOutcome1() {
+        return "outcome1";
+    }
+
+    public String getLastAction() {
+        return lastAction;
+    }
+
+    private String min = "100";
+
+    public void setMin(String min) {
+        this.min = min;
+    }
+
+    public String getMin() {
+        return min;
+    }
+
+    private String max = "500";
+
+    public void setMax(String max) {
+        this.max = max;
+    }
+
+    public String getMax() {
+        return max;
+    }
+}
diff --git a/test/agnostic/renderKit/passthrough/src/main/java/com/sun/faces/test/renderKit/passthrough/Complex.java b/test/agnostic/renderKit/passthrough/src/main/java/com/sun/faces/test/renderKit/passthrough/Complex.java
new file mode 100644
index 0000000..53c2d8e
--- /dev/null
+++ b/test/agnostic/renderKit/passthrough/src/main/java/com/sun/faces/test/renderKit/passthrough/Complex.java
@@ -0,0 +1,93 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.test.renderKit.passthrough;
+
+import java.io.Serializable;
+import javax.faces.bean.SessionScoped;
+import javax.faces.bean.ManagedBean;
+
+ at ManagedBean
+ at SessionScoped
+public class Complex implements Serializable {
+
+    private String name;
+    private String tel;
+    private String email;
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setTel(String tel) {
+        this.tel = tel;
+    }
+
+    public String getTel() {
+        return tel;
+    }
+
+    public void setEmail(String email) {
+        this.email = email;
+    }
+
+    public String getEmail() {
+        return email;
+    }
+
+    public String getProgress() {
+        int progress = 0;
+        if(name != null) {
+            progress++;
+        }
+        if(tel != null) {
+            progress++;
+        }
+        if(email != null) {
+            progress++;
+        }
+        return progress + "";
+    }
+    
+}
diff --git a/test/agnostic/renderKit/passthrough/src/main/webapp/WEB-INF/faces-config.xml b/test/agnostic/renderKit/passthrough/src/main/webapp/WEB-INF/faces-config.xml
new file mode 100644
index 0000000..f0fef7c
--- /dev/null
+++ b/test/agnostic/renderKit/passthrough/src/main/webapp/WEB-INF/faces-config.xml
@@ -0,0 +1,50 @@
+<?xml version='1.0' encoding='UTF-8'?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<faces-config version="2.2"
+    xmlns="http://xmlns.jcp.org/xml/ns/javaee" 
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd">
+
+</faces-config>
diff --git a/test/agnostic/renderKit/passthrough/src/main/webapp/WEB-INF/glassfish-web.xml b/test/agnostic/renderKit/passthrough/src/main/webapp/WEB-INF/glassfish-web.xml
new file mode 100644
index 0000000..d4195ca
--- /dev/null
+++ b/test/agnostic/renderKit/passthrough/src/main/webapp/WEB-INF/glassfish-web.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
+<glassfish-web-app error-url="">
+  <context-root>/test-agnostic-renderKit-passthrough</context-root>
+  <class-loader delegate="true"/>
+  <jsp-config>
+    <property name="keepgenerated" value="true">
+      <description>Keep a copy of the generated servlet class' java code.</description>
+    </property>
+  </jsp-config>
+</glassfish-web-app>
diff --git a/test/agnostic/renderKit/passthrough/src/main/webapp/WEB-INF/web.xml b/test/agnostic/renderKit/passthrough/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..252aee8
--- /dev/null
+++ b/test/agnostic/renderKit/passthrough/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>${webapp.projectStage}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
+        <param-value>${webapp.partialStateSaving}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>${webapp.stateSavingMethod}</param-value>
+    </context-param>
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <welcome-file-list>
+        <welcome-file>index.html</welcome-file>
+    </welcome-file-list>
+</web-app>
diff --git a/test/agnostic/renderKit/passthrough/src/main/webapp/article.xhtml b/test/agnostic/renderKit/passthrough/src/main/webapp/article.xhtml
new file mode 100644
index 0000000..7ba8186
--- /dev/null
+++ b/test/agnostic/renderKit/passthrough/src/main/webapp/article.xhtml
@@ -0,0 +1,93 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:f="http://xmlns.jcp.org/jsf/core"
+      xmlns:h="http://xmlns.jcp.org/jsf/html"
+      xmlns:jsf="http://xmlns.jcp.org/jsf">
+
+      <h:head>
+
+      </h:head>
+
+      <h:body>
+
+        <script type="text/javascript">
+         var statusUpdate = function statusUpdate(data) {
+            var statusArea = document.getElementById("statusArea");
+            var text = statusArea.value;
+            text = text + "Name: "+data.source.id;
+            if (data.type === "event") {
+                text = text +" Event: "+data.status+" ";
+            }
+            statusArea.value = text;
+         }
+        </script>
+
+
+      <form jsf:id="form" jsf:prependId="false" >
+
+        <p>
+
+        <article jsf:id="article1">
+          <p>This is textual content within an article.</p>
+        </article>
+
+        <br/>
+
+        <article jsf:id="article2">
+          <f:ajax event="mouseover" onevent="statusUpdate"/>
+          <p>This is textual content within an article. Mouse over me to fire an Ajax request.</p> 
+        </article>
+
+       </p>
+
+     </form>
+
+      <p>
+        <h3> Status:</h3>
+        <textarea id="statusArea" cols="40" rows="10" readonly="readonly" />
+      </p>
+
+    </h:body>
+    
+</html>
diff --git a/test/agnostic/renderKit/passthrough/src/main/webapp/aside.xhtml b/test/agnostic/renderKit/passthrough/src/main/webapp/aside.xhtml
new file mode 100644
index 0000000..1014180
--- /dev/null
+++ b/test/agnostic/renderKit/passthrough/src/main/webapp/aside.xhtml
@@ -0,0 +1,93 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:f="http://xmlns.jcp.org/jsf/core"
+      xmlns:h="http://xmlns.jcp.org/jsf/html"
+      xmlns:jsf="http://xmlns.jcp.org/jsf">
+
+      <h:head>
+
+      </h:head>
+
+      <h:body>
+
+        <script type="text/javascript">
+         var statusUpdate = function statusUpdate(data) {
+            var statusArea = document.getElementById("statusArea");
+            var text = statusArea.value;
+            text = text + "Name: "+data.source.id;
+            if (data.type === "event") {
+                text = text +" Event: "+data.status+" ";
+            }
+            statusArea.value = text;
+         }
+        </script>
+
+
+      <form jsf:id="form" jsf:prependId="false" >
+
+        <p>
+
+        <aside jsf:id="aside1">
+          <p>This is textual content within an aside.</p>
+        </aside>
+
+        <br/>
+
+        <aside jsf:id="aside2">
+          <f:ajax onevent="statusUpdate"/>
+          <p>This is textual content within an aside. Click on me to fire an Ajax request.</p> 
+        </aside>
+
+       </p>
+
+     </form>
+
+      <p>
+        <h3> Status:</h3>
+        <textarea id="statusArea" cols="40" rows="10" readonly="readonly" />
+      </p>
+
+    </h:body>
+    
+</html>
diff --git a/test/agnostic/renderKit/passthrough/src/main/webapp/base.xhtml b/test/agnostic/renderKit/passthrough/src/main/webapp/base.xhtml
new file mode 100644
index 0000000..c7fb2c0
--- /dev/null
+++ b/test/agnostic/renderKit/passthrough/src/main/webapp/base.xhtml
@@ -0,0 +1,56 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:f="http://xmlns.jcp.org/jsf/core"
+      xmlns:h="http://xmlns.jcp.org/jsf/html"
+      xmlns:jsf="http://xmlns.jcp.org/jsf">
+
+      <h:head>
+         <base jsf:id="base1" href="http://foobar.com" target="_blank"/>
+      </h:head>
+
+      <h:body>
+
+   </h:body>
+
+</html>
diff --git a/test/agnostic/renderKit/passthrough/src/main/webapp/button.xhtml b/test/agnostic/renderKit/passthrough/src/main/webapp/button.xhtml
new file mode 100644
index 0000000..d9b25c8
--- /dev/null
+++ b/test/agnostic/renderKit/passthrough/src/main/webapp/button.xhtml
@@ -0,0 +1,76 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:jsf="http://xmlns.jcp.org/jsf" xmlns:p="http://xmlns.jcp.org/jsf/passthrough">
+
+<form jsf:id="form" jsf:prependId="false">
+
+    <p>
+        <span id="lastAction">#{bean.lastAction}</span>
+    </p>
+    
+    
+    <p>
+        <span id="publicKey1">#{bean.publicKey}</span>
+        
+    </p>
+
+    <p>
+        <span id="publicKey2">#{bean.publicKey2}</span>
+    </p>
+
+    <button type="submit" jsf:id="fancyButton1" jsf:action="#{bean.action1}">
+        <strong>F</strong>ancy <strong style="color: red;">Button</strong> 1
+    </button>
+
+    <button type="submit" jsf:id="fancyButton2" jsf:action="#{bean.action2}">
+        <strong>F</strong>ancy <strong style="color: blue;">Button</strong> 2
+    </button>
+
+</form>
+
+<button jsf:outcome="outcome1" jsf:id="outcomeButton">
+    <strong>O</strong>utcome <strong style="color: green;">Button</strong>
+</button>
+
+</html>
diff --git a/test/agnostic/renderKit/passthrough/src/main/webapp/causeError.xhtml b/test/agnostic/renderKit/passthrough/src/main/webapp/causeError.xhtml
new file mode 100644
index 0000000..cc0eb5d
--- /dev/null
+++ b/test/agnostic/renderKit/passthrough/src/main/webapp/causeError.xhtml
@@ -0,0 +1,56 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<!DOCTYPE html>
+<html xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
+      xmlns:f="http://xmlns.jcp.org/jsf/core"
+      xmlns:h="http://xmlns.jcp.org/jsf/html"
+      xmlns:jsf="http://xmlns.jcp.org/jsf">
+
+<h:form id="form" prependId="false">
+    
+
+    <h:commandButton jsf:id="button" value="submit" />
+
+    
+</h:form>
+    
+</html>
diff --git a/test/agnostic/renderKit/passthrough/src/main/webapp/command.xhtml b/test/agnostic/renderKit/passthrough/src/main/webapp/command.xhtml
new file mode 100644
index 0000000..e5477a4
--- /dev/null
+++ b/test/agnostic/renderKit/passthrough/src/main/webapp/command.xhtml
@@ -0,0 +1,59 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:f="http://xmlns.jcp.org/jsf/core"
+      xmlns:h="http://xmlns.jcp.org/jsf/html"
+      xmlns:jsf="http://xmlns.jcp.org/jsf">
+
+      <h:head>
+      </h:head>
+
+      <h:body>
+
+      <h:form id="form" prependId="false">
+         <command jsf:id="command1" onclick="doThat()"/>
+      </h:form>
+
+   </h:body>
+
+</html>
diff --git a/test/agnostic/renderKit/passthrough/src/main/webapp/complex.xhtml b/test/agnostic/renderKit/passthrough/src/main/webapp/complex.xhtml
new file mode 100644
index 0000000..95c32ee
--- /dev/null
+++ b/test/agnostic/renderKit/passthrough/src/main/webapp/complex.xhtml
@@ -0,0 +1,76 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:jsf="http://xmlns.jcp.org/jsf" xmlns:f="http://xmlns.jcp.org/jsf/core" xmlns:ui="http://xmlns.jcp.org/jsf/facelets">
+    <head jsf:id="head">
+        <title>Putting it all together</title>
+        <script jsf:target="body" jsf:name="js.js"/>
+        <link jsf:name="css.css" rel="stylesheet" type="text/css" />
+    </head>
+    <body jsf:id="body">
+        <form jsf:id="form" jsf:prependId="false">
+           <p> 
+               <label jsf:for="name">Name</label>
+               <input jsf:id="name" type="text" jsf:value="#{complex.name}">
+                 <f:ajax execute="@this" render="progress"/>
+               </input> 
+           </p>
+           <p>
+            <label jsf:for="tel">Tel</label>
+            <input jsf:id="tel" type="tel" jsf:value="#{complex.tel}">
+                <f:ajax execute="@this" render="progress"/>
+            </input>
+                </p>
+                <p>
+            <label jsf:for="email">Email</label>
+            <input jsf:id="email" type="email" jsf:value="#{complex.email}">
+                <f:ajax execute="@this" render="progress"/>
+            </input>
+                </p>
+                <p>
+            <label for="progress">Progress</label>
+            <progress jsf:id="progress" max="3" value="#{complex.progress}" />
+            </p>
+        </form>
+    </body>
+</html>
diff --git a/test/agnostic/renderKit/passthrough/src/main/webapp/datalist.xhtml b/test/agnostic/renderKit/passthrough/src/main/webapp/datalist.xhtml
new file mode 100644
index 0000000..def09d3
--- /dev/null
+++ b/test/agnostic/renderKit/passthrough/src/main/webapp/datalist.xhtml
@@ -0,0 +1,64 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:f="http://xmlns.jcp.org/jsf/core"
+      xmlns:h="http://xmlns.jcp.org/jsf/html"
+      xmlns:jsf="http://xmlns.jcp.org/jsf">
+
+      <form jsf:id="form" jsf:prependId="false" >
+
+        <p>
+        <label>
+         Enter your favorite color:<br />
+         <input type="text" name="favCharacter" list="colors" maxlength="50" style="width:95%;"/>
+         <datalist jsf:id="colors">
+            <option jsf:id="r" value="red"/>
+            <option jsf:id="b" value="blue"/>
+            <option jsf:id="g" value="green"/>
+         </datalist>
+         </label>
+       </p>
+
+     </form>
+
+</html>
diff --git a/test/agnostic/renderKit/passthrough/src/main/webapp/divWithClass.xhtml b/test/agnostic/renderKit/passthrough/src/main/webapp/divWithClass.xhtml
new file mode 100644
index 0000000..92caf95
--- /dev/null
+++ b/test/agnostic/renderKit/passthrough/src/main/webapp/divWithClass.xhtml
@@ -0,0 +1,16 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://xmlns.jcp.org/jsf/html"
+      xmlns:jsf="http://xmlns.jcp.org/jsf">
+    <h:head>
+        <title>Facelet Title</title>
+    </h:head>
+    <h:body>
+        <div class="myclass" jsf:id="bar">This should not blow up :)</div>
+    </h:body>
+</html>
+
diff --git a/test/agnostic/renderKit/passthrough/src/main/webapp/fieldset.xhtml b/test/agnostic/renderKit/passthrough/src/main/webapp/fieldset.xhtml
new file mode 100644
index 0000000..e071453
--- /dev/null
+++ b/test/agnostic/renderKit/passthrough/src/main/webapp/fieldset.xhtml
@@ -0,0 +1,122 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:f="http://xmlns.jcp.org/jsf/core"
+      xmlns:h="http://xmlns.jcp.org/jsf/html"
+      xmlns:jsf="http://xmlns.jcp.org/jsf">
+
+      <h:head>
+
+      </h:head>
+
+      <h:body>
+
+        <script type="text/javascript">
+         var statusUpdate = function statusUpdate(data) {
+            var statusArea = document.getElementById("statusArea");
+            var text = statusArea.value;
+            text = text + "Name: "+data.source.id;
+            if (data.type === "event") {
+                text = text +" Event: "+data.status+" ";
+            }
+            statusArea.value = text;
+         }
+        </script>
+
+
+      <form jsf:id="form" jsf:prependId="false" >
+
+        <p>
+        <fieldset jsf:id="fieldset1">
+         <legend jsf:id="legend1">FieldSet1</legend>
+          <label><input jsf:id="inputText1" type="text" jsf:value="#{bean.text1}"/>Input1</label>
+          <br/>
+          <label><input jsf:id="inputText2" type="text" jsf:value="#{bean.text2}"/>Input2</label>
+        </fieldset>
+
+        <br/>
+
+        <fieldset jsf:id="fieldset2" disabled="disabled">
+         <legend jsf:id="legend2">
+          FieldSet2
+          <h:selectBooleanCheckbox id="cbox1" onchange="form.fieldset2.disabled = !checked"/>
+         </legend>
+          <label><input jsf:id="inputText3" type="text" jsf:value="#{bean.text1}"/>Input3</label>
+          <br/>
+          <label><input jsf:id="inputText4" type="text" jsf:value="#{bean.text2}"/>Input4</label>
+        </fieldset>
+
+        <br/>
+
+        <fieldset jsf:id="fieldset3" form="form" name="myfieldset">
+         <legend jsf:id="legend3">FieldSet3</legend>
+          <label><input jsf:id="inputText5" type="text" jsf:value="#{bean.text1}"/>Input5</label>
+          <br/>
+          <label><input jsf:id="inputText6" type="text" jsf:value="#{bean.text2}"/>Input6</label>
+        </fieldset>
+
+        <br/>
+
+        <fieldset jsf:id="fieldset4">
+
+         <f:ajax onevent="statusUpdate"/>
+
+         <legend jsf:id="legend4">FieldSet4</legend>
+          <label><input jsf:id="inputText7" type="text" jsf:value="#{bean.text1}"/>Input7</label>
+          <br/>
+          <label><input jsf:id="inputText8" type="text" jsf:value="#{bean.text2}"/>Input8</label>
+
+        </fieldset>
+       
+       </p>
+
+     </form>
+
+      <p>
+        <h3> Status:</h3>
+        <textarea id="statusArea" cols="40" rows="10" readonly="readonly" />
+      </p>
+
+    </h:body>
+    
+</html>
diff --git a/test/agnostic/renderKit/passthrough/src/main/webapp/h1h2h3h4h5h6.xhtml b/test/agnostic/renderKit/passthrough/src/main/webapp/h1h2h3h4h5h6.xhtml
new file mode 100644
index 0000000..f88010a
--- /dev/null
+++ b/test/agnostic/renderKit/passthrough/src/main/webapp/h1h2h3h4h5h6.xhtml
@@ -0,0 +1,120 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:f="http://xmlns.jcp.org/jsf/core"
+      xmlns:h="http://xmlns.jcp.org/jsf/html"
+      xmlns:jsf="http://xmlns.jcp.org/jsf">
+
+      <h:head>
+
+      </h:head>
+
+      <h:body>
+
+        <script type="text/javascript">
+         var statusUpdate = function statusUpdate(data) {
+            var statusArea = document.getElementById("statusArea");
+            var text = statusArea.value;
+            text = text + "Name: "+data.source.id;
+            if (data.type === "event") {
+                text = text +" Event: "+data.status+" ";
+            }
+            statusArea.value = text;
+         }
+        </script>
+
+
+      <form jsf:id="form" jsf:prependId="false" >
+
+        <p>
+
+        <h1 jsf:id="header1">
+          This is textual content within an h1 element.
+        </h1>
+
+        <br/>
+
+        <h2 jsf:id="header2">
+          <f:ajax event="mouseover" onevent="statusUpdate"/>
+          This is textual content within an h2 element.<br/> 
+          Mouse over me to fire an Ajax request.
+        </h2>
+
+        <br/>
+
+        <h3 jsf:id="header3">
+          This is textual content within an h3 element.
+        </h3>
+
+        <br/>
+
+        <h4 jsf:id="header4">
+          This is textual content within an h4 element.
+        </h4>
+
+        <br/>
+
+        <h5 jsf:id="header5">
+          This is textual content within an h5 element.
+        </h5>
+
+        <br/>
+
+        <h6 jsf:id="header6">
+          This is textual content within an h6 element.
+        </h6>
+
+        <br/>
+
+       </p>
+
+     </form>
+
+      <p>
+        <h3> Status:</h3>
+        <textarea id="statusArea" cols="40" rows="10" readonly="readonly" />
+      </p>
+
+    </h:body>
+    
+</html>
diff --git a/test/agnostic/renderKit/passthrough/src/main/webapp/hgroup.xhtml b/test/agnostic/renderKit/passthrough/src/main/webapp/hgroup.xhtml
new file mode 100644
index 0000000..d0ff902
--- /dev/null
+++ b/test/agnostic/renderKit/passthrough/src/main/webapp/hgroup.xhtml
@@ -0,0 +1,101 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:f="http://xmlns.jcp.org/jsf/core"
+      xmlns:h="http://xmlns.jcp.org/jsf/html"
+      xmlns:jsf="http://xmlns.jcp.org/jsf">
+
+      <h:head>
+
+      </h:head>
+
+      <h:body>
+
+        <script type="text/javascript">
+         var statusUpdate = function statusUpdate(data) {
+            var statusArea = document.getElementById("statusArea");
+            var text = statusArea.value;
+            text = text + "Name: "+data.source.id;
+            if (data.type === "event") {
+                text = text +" Event: "+data.status+" ";
+            }
+            statusArea.value = text;
+         }
+        </script>
+
+
+      <form jsf:id="form" jsf:prependId="false" >
+
+        <p>
+
+        <hgroup jsf:id="hgroup">
+          <f:ajax onevent="statusUpdate"/>
+          This text is in an outer hgroup element.<br/>
+          Click on me to fire an Ajax request.
+
+          <h1 jsf:id="header1">
+            This is textual content within an h1 element.
+          </h1>
+
+          <br/>
+
+          <h2 jsf:id="header2">
+            <f:ajax event="mouseover" onevent="statusUpdate"/>
+            This is textual content within an h2 element.<br/> 
+            Mouse over me to fire an Ajax request.
+          </h2>
+
+       </hgroup>
+
+       </p>
+
+     </form>
+
+      <p>
+        <h3> Status:</h3>
+        <textarea id="statusArea" cols="40" rows="10" readonly="readonly" />
+      </p>
+
+    </h:body>
+    
+</html>
diff --git a/test/agnostic/renderKit/passthrough/src/main/webapp/index.html b/test/agnostic/renderKit/passthrough/src/main/webapp/index.html
new file mode 100644
index 0000000..3fb904f
--- /dev/null
+++ b/test/agnostic/renderKit/passthrough/src/main/webapp/index.html
@@ -0,0 +1,62 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<!DOCTYPE html>
+
+<html>
+  <head><title>Passthrough Renderers</title></head>
+
+  <body>
+
+    <ul>
+
+        <li><a href="faces/input.xhtml">input</a>
+        <li><a href="faces/select.xhtml">select</a>
+        <li><a href="faces/textarea.xhtml">textarea</a>
+        <li><a href="faces/button.xhtml">button</a>
+        <li><a href="faces/complex.xhtml">complex</a>
+        <li><a href="faces/links.xhtml">links</a>
+        <li><a href="faces/simplestForm.xhtml">simplest form</a>
+
+    </ul>
+
+  </body>
+</html>
diff --git a/test/agnostic/renderKit/passthrough/src/main/webapp/input.xhtml b/test/agnostic/renderKit/passthrough/src/main/webapp/input.xhtml
new file mode 100644
index 0000000..129e301
--- /dev/null
+++ b/test/agnostic/renderKit/passthrough/src/main/webapp/input.xhtml
@@ -0,0 +1,78 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:jsf="http://xmlns.jcp.org/jsf">
+
+<form jsf:id="form" jsf:prependId="false" >
+
+    <p>
+        <input jsf:id="inputText" type="text" jsf:value="#{bean.text1}" disabled="disabled" />
+    </p>
+
+    <p>
+        <input name="textField" type="text" jsf:value="#{bean.text1}" />
+    </p>
+
+    <p>
+        <input jsf:id="inputText2" type="text" jsf:value="#{bean.text2}"/>
+    </p>
+
+    <p>
+        <input jsf:id="emailField" type="email" jsf:value="#{bean.email}" />
+    </p>
+
+    <p>
+        <input jsf:id="numberField" type="number" jsf:value="#{bean.number}" pattern="[0-9]*" />
+    </p>
+
+    <p>
+        <input jsf:id="checkBox" type="checkbox" jsf:value="#{bean.checkboxValue}" />
+    </p>
+
+    <input type="reset" jsf:id="resetButton" value="reset"/>
+
+    <input type="submit" jsf:id="submitButton" value="submit" />
+
+</form>
+    
+</html>
diff --git a/test/agnostic/renderKit/passthrough/src/main/webapp/input1.xhtml b/test/agnostic/renderKit/passthrough/src/main/webapp/input1.xhtml
new file mode 100644
index 0000000..3156815
--- /dev/null
+++ b/test/agnostic/renderKit/passthrough/src/main/webapp/input1.xhtml
@@ -0,0 +1,75 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:f="http://xmlns.jcp.org/jsf/core"
+      xmlns:h="http://xmlns.jcp.org/jsf/html"
+      xmlns:p="http://xmlns.jcp.org/jsf/passthrough"
+      xmlns:jsf="http://xmlns.jcp.org/jsf">
+
+<form jsf:id="form" jsf:prependId="false" >
+
+    <p>
+        <h:inputText id="input1" type="text" p:placeholder="Enter text here" />
+    </p>
+    <p>
+        <h:inputText id="input2" type="text" p:autocomplete="on" />
+    </p>
+    <p>
+        <h:inputText id="input3" type="text" p:autofocus="autofocus" />
+    </p>
+    <p>
+        <h:inputText id="input4" type="text" p:list="mydatalist" />
+    </p>
+    <p>
+        Country Code: <h:inputText id="input5" type="text" p:pattern="[A-Za-z]{3}" />
+    </p>
+    <p>
+        <h:inputText id="input6" type="text" p:required="required" />
+    </p>
+    <p>
+        <h:inputText id="input7" type="text" p:dirname="input7.dir" />
+    </p>
+
+</form>
+    
+</html>
diff --git a/test/agnostic/renderKit/passthrough/src/main/webapp/issue2767.xhtml b/test/agnostic/renderKit/passthrough/src/main/webapp/issue2767.xhtml
new file mode 100644
index 0000000..2524af0
--- /dev/null
+++ b/test/agnostic/renderKit/passthrough/src/main/webapp/issue2767.xhtml
@@ -0,0 +1,61 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:f="http://xmlns.jcp.org/jsf/core"
+      xmlns:h="http://xmlns.jcp.org/jsf/html"
+      xmlns:jsf="http://xmlns.jcp.org/jsf">
+
+      <form jsf:id="form" jsf:prependId="false" >
+
+        <p>
+        <meter jsf:id="meter1" min="200" max="500" value="350">350 degrees</meter>
+
+        <br/>
+
+        <meter jsf:id="meter2" min="#{bean.min}" max="#{bean.max}" value="350">350 degrees</meter>
+
+       </p>
+
+     </form>
+    
+</html>
diff --git a/test/agnostic/renderKit/passthrough/src/main/webapp/keygen.xhtml b/test/agnostic/renderKit/passthrough/src/main/webapp/keygen.xhtml
new file mode 100644
index 0000000..d9dcb70
--- /dev/null
+++ b/test/agnostic/renderKit/passthrough/src/main/webapp/keygen.xhtml
@@ -0,0 +1,56 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:f="http://xmlns.jcp.org/jsf/core"
+      xmlns:h="http://xmlns.jcp.org/jsf/html"
+      xmlns:jsf="http://xmlns.jcp.org/jsf">
+
+      <form jsf:id="form" jsf:prependId="false" >
+
+        <p>
+        <keygen jsf:id="keygen1" name="RSA public key" challenge="123456789" KEYTYPE="RSA"/>
+       </p>
+
+     </form>
+    
+</html>
diff --git a/test/agnostic/renderKit/passthrough/src/main/webapp/label.xhtml b/test/agnostic/renderKit/passthrough/src/main/webapp/label.xhtml
new file mode 100644
index 0000000..06e2f48
--- /dev/null
+++ b/test/agnostic/renderKit/passthrough/src/main/webapp/label.xhtml
@@ -0,0 +1,90 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:f="http://xmlns.jcp.org/jsf/core"
+      xmlns:h="http://xmlns.jcp.org/jsf/html"
+      xmlns:jsf="http://xmlns.jcp.org/jsf">
+
+      <h:head>
+
+      </h:head>
+
+      <h:body>
+
+        <script type="text/javascript">
+         var statusUpdate = function statusUpdate(data) {
+            var statusArea = document.getElementById("statusArea");
+            var text = statusArea.value;
+            text = text + "Name: "+data.source.id;
+            if (data.type === "event") {
+                text = text +" Event: "+data.status+" ";
+            }
+            statusArea.value = text;
+         }
+        </script>
+
+      <form jsf:id="form" jsf:prependId="false" >
+
+        <p>
+        <label jsf:id="label1" form="form" for="input1">Input 1</label>
+        <h:inputText id="input1"/>
+
+        <br/>
+
+        <label jsf:id="label2" form="form" for="input2">
+         Input 2
+         <f:ajax event="mouseover" onevent="statusUpdate"/>
+        </label>
+        <h:inputText id="input2"/>
+       </p>
+
+     </form>
+
+      <p>
+        <h3> Status:</h3>
+        <textarea id="statusArea" cols="40" rows="10" readonly="readonly" />
+      </p>
+
+   </h:body>
+
+</html>
diff --git a/test/agnostic/renderKit/passthrough/src/main/webapp/links.xhtml b/test/agnostic/renderKit/passthrough/src/main/webapp/links.xhtml
new file mode 100644
index 0000000..714e340
--- /dev/null
+++ b/test/agnostic/renderKit/passthrough/src/main/webapp/links.xhtml
@@ -0,0 +1,60 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:jsf="http://xmlns.jcp.org/jsf" xmlns:f="http://xmlns.jcp.org/jsf/core">
+    <head jsf:id="head">
+        <title>Testing outputLink and commandLink</title>
+    </head>
+    <body jsf:id="body">
+        <form jsf:id="form" jsf:prependId="false">
+            <input jsf:id="text1" type="text" jsf:value="#{bean.text1}">
+            </input>
+            <p><a href="#" jsf:action="#{bean.action1}" jsf:id="action1">action1</a></p>
+            <p><a href="#" jsf:action="#{bean.action2}" jsf:id="action2">action2</a></p>
+            <p><a jsf:outcome="#{bean.outcome1}" jsf:id="outcome1">link</a></p>
+
+            <p><span id="lastAction">#{bean.lastAction}</span></p>
+            <a  jsf:value="http://javaserverfaces.java.net" jsf:id="jsf">http://javaserverfaces.java.net</a>
+        </form>
+    </body>
+</html>
diff --git a/test/agnostic/renderKit/passthrough/src/main/webapp/meta.xhtml b/test/agnostic/renderKit/passthrough/src/main/webapp/meta.xhtml
new file mode 100644
index 0000000..7c4146c
--- /dev/null
+++ b/test/agnostic/renderKit/passthrough/src/main/webapp/meta.xhtml
@@ -0,0 +1,56 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:f="http://xmlns.jcp.org/jsf/core"
+      xmlns:h="http://xmlns.jcp.org/jsf/html"
+      xmlns:jsf="http://xmlns.jcp.org/jsf">
+
+      <h:head>
+         <meta jsf:id="meta1" charset="UTF-8"/>
+      </h:head>
+
+      <h:body>
+
+   </h:body>
+
+</html>
diff --git a/test/agnostic/renderKit/passthrough/src/main/webapp/meter.xhtml b/test/agnostic/renderKit/passthrough/src/main/webapp/meter.xhtml
new file mode 100644
index 0000000..2524af0
--- /dev/null
+++ b/test/agnostic/renderKit/passthrough/src/main/webapp/meter.xhtml
@@ -0,0 +1,61 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:f="http://xmlns.jcp.org/jsf/core"
+      xmlns:h="http://xmlns.jcp.org/jsf/html"
+      xmlns:jsf="http://xmlns.jcp.org/jsf">
+
+      <form jsf:id="form" jsf:prependId="false" >
+
+        <p>
+        <meter jsf:id="meter1" min="200" max="500" value="350">350 degrees</meter>
+
+        <br/>
+
+        <meter jsf:id="meter2" min="#{bean.min}" max="#{bean.max}" value="350">350 degrees</meter>
+
+       </p>
+
+     </form>
+    
+</html>
diff --git a/test/agnostic/renderKit/passthrough/src/main/webapp/nav.xhtml b/test/agnostic/renderKit/passthrough/src/main/webapp/nav.xhtml
new file mode 100644
index 0000000..c02233a
--- /dev/null
+++ b/test/agnostic/renderKit/passthrough/src/main/webapp/nav.xhtml
@@ -0,0 +1,103 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:f="http://xmlns.jcp.org/jsf/core"
+      xmlns:h="http://xmlns.jcp.org/jsf/html"
+      xmlns:jsf="http://xmlns.jcp.org/jsf">
+
+      <h:head>
+
+      </h:head>
+
+      <h:body>
+
+        <script type="text/javascript">
+         var statusUpdate = function statusUpdate(data) {
+            var statusArea = document.getElementById("statusArea");
+            var text = statusArea.value;
+            text = text + "Name: "+data.source.id;
+            if (data.type === "event") {
+                text = text +" Event: "+data.status+" ";
+            }
+            statusArea.value = text;
+         }
+        </script>
+
+
+      <form jsf:id="form" jsf:prependId="false" >
+
+        <p>
+
+        <nav jsf:id="nav1">
+          <p>This text and the links below reside in a nav element.</p>
+          <a href="http://yahoo.com">Yahoo</a> |
+          <a href="http://google.com">Google</a> |
+          <a href="http://java.net">Java.net</a>
+        </nav>
+
+        <br/>
+
+        <nav jsf:id="nav2">
+          <f:ajax onevent="statusUpdate"/>
+          <p>This text and the links below reside in a nav element.<br/>
+           The links are produced with jsf tags.  Click on this text<br/>
+           or any link below and an Ajax request will be fired.</p>
+          <h:outputLink value="http://yahoo.com">Yahoo</h:outputLink>
+          <br/>
+          <h:outputLink value="http://google.com">Google</h:outputLink>
+          <br/>
+          <h:outputLink value="http://java.net">Java.net</h:outputLink>
+        </nav>
+
+       </p>
+
+     </form>
+
+      <p>
+        <h3> Status:</h3>
+        <textarea id="statusArea" cols="40" rows="10" readonly="readonly" />
+      </p>
+
+    </h:body>
+    
+</html>
diff --git a/test/agnostic/renderKit/passthrough/src/main/webapp/outcome1.xhtml b/test/agnostic/renderKit/passthrough/src/main/webapp/outcome1.xhtml
new file mode 100644
index 0000000..bd9a114
--- /dev/null
+++ b/test/agnostic/renderKit/passthrough/src/main/webapp/outcome1.xhtml
@@ -0,0 +1,57 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://xmlns.jcp.org/jsf/html"
+      xmlns:jsf="http://xmlns.jcp.org/jsf" >
+    <h:head>
+        <title>outcome1</title>
+    </h:head>
+    <h:body>
+        <p><span id="lastOutcome">outcome1</span></p>
+        
+        <p><a jsf:outcome="links" jsf:id="links">back</a></p>
+
+        
+    </h:body>
+</html>
+
diff --git a/test/agnostic/renderKit/passthrough/src/main/webapp/output.xhtml b/test/agnostic/renderKit/passthrough/src/main/webapp/output.xhtml
new file mode 100644
index 0000000..9655244
--- /dev/null
+++ b/test/agnostic/renderKit/passthrough/src/main/webapp/output.xhtml
@@ -0,0 +1,54 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:f="http://xmlns.jcp.org/jsf/core"
+      xmlns:h="http://xmlns.jcp.org/jsf/html"
+      xmlns:jsf="http://xmlns.jcp.org/jsf">
+
+      <form jsf:id="form" jsf:prependId="false" oninput="result.value=parseInt(numa.value)+parseInt(numb.value)"> 
+<input jsf:id="numa" name="numa" type="number"/> +
+<input jsf:id="numb" name="numb" type="number"/> =
+<output jsf:id="output1" name="result"></output>
+</form>
+
+</html>
diff --git a/test/agnostic/renderKit/passthrough/src/main/webapp/resources/css.css b/test/agnostic/renderKit/passthrough/src/main/webapp/resources/css.css
new file mode 100644
index 0000000..fa20aa1
--- /dev/null
+++ b/test/agnostic/renderKit/passthrough/src/main/webapp/resources/css.css
@@ -0,0 +1,14 @@
+label {
+    width: 90px;
+    display: block;
+    float: left;
+}
+
+input, progress {
+    width: 100px;
+    display: block;
+}
+
+progress {
+    white-space: nowrap;
+}
\ No newline at end of file
diff --git a/test/agnostic/renderKit/passthrough/src/main/webapp/resources/js.js b/test/agnostic/renderKit/passthrough/src/main/webapp/resources/js.js
new file mode 100644
index 0000000..e8404cb
--- /dev/null
+++ b/test/agnostic/renderKit/passthrough/src/main/webapp/resources/js.js
@@ -0,0 +1,13 @@
+jsf.ajax.addOnEvent(function (data) {
+    // the status is checked in the unittest
+    window.status = data.status;
+});
+
+jsfAjaxRequest = jsf.ajax.request;
+
+jsf.ajax.request = function (source, event, options) {
+    // always make synchronous ajax calls to make live easier for HtmlUnit
+    options.async = false;
+
+    jsfAjaxRequest(source, event, options);
+};
diff --git a/test/agnostic/renderKit/passthrough/src/main/webapp/section.xhtml b/test/agnostic/renderKit/passthrough/src/main/webapp/section.xhtml
new file mode 100644
index 0000000..820b8ec
--- /dev/null
+++ b/test/agnostic/renderKit/passthrough/src/main/webapp/section.xhtml
@@ -0,0 +1,93 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:f="http://xmlns.jcp.org/jsf/core"
+      xmlns:h="http://xmlns.jcp.org/jsf/html"
+      xmlns:jsf="http://xmlns.jcp.org/jsf">
+
+      <h:head>
+
+      </h:head>
+
+      <h:body>
+
+        <script type="text/javascript">
+         var statusUpdate = function statusUpdate(data) {
+            var statusArea = document.getElementById("statusArea");
+            var text = statusArea.value;
+            text = text + "Name: "+data.source.id;
+            if (data.type === "event") {
+                text = text +" Event: "+data.status+" ";
+            }
+            statusArea.value = text;
+         }
+        </script>
+
+
+      <form jsf:id="form" jsf:prependId="false" >
+
+        <p>
+
+        <section jsf:id="section1">
+          <p>This is textual content within an section.</p>
+        </section>
+
+        <br/>
+
+        <section jsf:id="section2">
+          <f:ajax event="mouseover" onevent="statusUpdate"/>
+          <p>This is textual content within an section. Mouse over me to fire an Ajax request.</p> 
+        </section>
+
+       </p>
+
+     </form>
+
+      <p>
+        <h3> Status:</h3>
+        <textarea id="statusArea" cols="40" rows="10" readonly="readonly" />
+      </p>
+
+    </h:body>
+    
+</html>
diff --git a/test/agnostic/renderKit/passthrough/src/main/webapp/select.xhtml b/test/agnostic/renderKit/passthrough/src/main/webapp/select.xhtml
new file mode 100644
index 0000000..c61d22f
--- /dev/null
+++ b/test/agnostic/renderKit/passthrough/src/main/webapp/select.xhtml
@@ -0,0 +1,72 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:jsf="http://xmlns.jcp.org/jsf" xmlns:f="http://xmlns.jcp.org/jsf/core">
+
+<form jsf:id="form" jsf:prependId="false">
+
+    <p>
+        <select jsf:id="selectOne" size="1" jsf:value="#{bean.selectOne}">
+            <f:selectItems value="#{bean.list}"/>
+        </select>
+    </p>
+
+    <p>
+        <select jsf:id="selectOneSize2" size="2" jsf:value="#{bean.selectOneSize2}">
+            <f:selectItems value="#{bean.list}"/>
+        </select>
+    </p>
+
+    <p>
+        <select jsf:id="selectMany" multiple="multiple" jsf:value="#{bean.selectMany}">
+            <f:selectItems value="#{bean.list}"/>
+        </select>
+    </p>
+
+    <input type="reset" jsf:id="resetButton" value="reset"/>
+
+    <input type="submit" jsf:id="submitButton" value="submit" />
+
+</form>
+    
+</html>
diff --git a/test/agnostic/renderKit/passthrough/src/main/webapp/simplestForm.xhtml b/test/agnostic/renderKit/passthrough/src/main/webapp/simplestForm.xhtml
new file mode 100644
index 0000000..f86a23c
--- /dev/null
+++ b/test/agnostic/renderKit/passthrough/src/main/webapp/simplestForm.xhtml
@@ -0,0 +1,57 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:myNS="http://xmlns.jcp.org/jsf">
+
+<form myNS:id="form">
+    
+    <input name="textField" type="text" myNS:value="#{bean.text1}" />
+
+    <input type="submit" myNS:id="submitButton" value="submit" />
+    
+    <p>submitted text: #{bean.text1}.</p>
+
+</form>
+
+
+</html>
diff --git a/test/agnostic/renderKit/passthrough/src/main/webapp/spuriousClosing.xhtml b/test/agnostic/renderKit/passthrough/src/main/webapp/spuriousClosing.xhtml
new file mode 100644
index 0000000..fbd3df2
--- /dev/null
+++ b/test/agnostic/renderKit/passthrough/src/main/webapp/spuriousClosing.xhtml
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:jsf="http://xmlns.jcp.org/jsf" 
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:body>
+        <div style="background-color: red;">
+            <h:form prependId="false">
+                <div>
+                        <button jsf:action="#{test}">
+                            <span></span>
+                        </button>
+                </div>
+                <div>
+                        <input type="text" jsf:id="date" disabled="disabled" value="#{'123'}" />
+                </div>
+                <div>
+                        <button jsf:action="#{test}">
+                            <span></span>
+                        </button>
+                </div>
+            </h:form>
+        </div> 
+        <!-- End red div -->
+        <div style="background-color: blue; opacity:0.5;margin-top: 20px;">
+            <table style="border: 2px solid black; width: 100%;opacity:1;">
+                <tr>
+                    <td style="border: 2px solid black;">test</td>
+                    <td style="border: 2px solid black;">table</td>
+                </tr>
+            </table>
+        </div>
+    </h:body>
+</html>
\ No newline at end of file
diff --git a/test/agnostic/renderKit/passthrough/src/main/webapp/textarea.xhtml b/test/agnostic/renderKit/passthrough/src/main/webapp/textarea.xhtml
new file mode 100644
index 0000000..88dd5f0
--- /dev/null
+++ b/test/agnostic/renderKit/passthrough/src/main/webapp/textarea.xhtml
@@ -0,0 +1,58 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:jsf="http://xmlns.jcp.org/jsf">
+
+<form jsf:id="form" jsf:prependId="false">
+
+    <p>
+        <textarea jsf:id="textarea" jsf:value="#{bean.longText}" autofocus="autofocus"/>
+    </p>
+
+    <input type="reset" jsf:id="resetButton" value="reset"/>
+
+    <input type="submit" jsf:id="submitButton" value="submit" />
+
+</form>
+    
+</html>
diff --git a/test/agnostic/renderKit/passthrough/src/test/java/com/sun/faces/test/agnostic/renderKit/passthrough/Issue1111IT.java b/test/agnostic/renderKit/passthrough/src/test/java/com/sun/faces/test/agnostic/renderKit/passthrough/Issue1111IT.java
new file mode 100644
index 0000000..bcf4b81
--- /dev/null
+++ b/test/agnostic/renderKit/passthrough/src/test/java/com/sun/faces/test/agnostic/renderKit/passthrough/Issue1111IT.java
@@ -0,0 +1,385 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDLGPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.renderKit.passthrough;
+
+import com.gargoylesoftware.htmlunit.html.HtmlButton;
+import com.gargoylesoftware.htmlunit.Page;
+import com.gargoylesoftware.htmlunit.StatusHandler;
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlAnchor;
+import com.gargoylesoftware.htmlunit.html.HtmlCheckBoxInput;
+import com.gargoylesoftware.htmlunit.html.HtmlElement;
+import com.gargoylesoftware.htmlunit.html.HtmlOption;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlResetInput;
+import com.gargoylesoftware.htmlunit.html.HtmlSelect;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import com.gargoylesoftware.htmlunit.html.HtmlTextArea;
+import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
+import com.gargoylesoftware.htmlunit.javascript.host.html.HTMLButtonElement;
+import java.util.Arrays;
+import java.util.List;
+import org.junit.*;
+import static org.junit.Assert.*;
+
+public class Issue1111IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testInputMarkup() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/input.xhtml");
+        assertInputDefaults(page);
+    }
+
+    private void assertInputDefaults(HtmlPage page) {
+        assertInput(page, "inputText", "type" ,"text", "value", "text1");
+        assertInput(page, "inputText2", "type" ,"text", "value", "text2");
+        assertInput(page, "textField", "type" ,"text", "value", "text1");
+        assertInput(page, "emailField", "type" ,"email", "value", "anybody at example.com");
+        assertInput(page, "numberField", "type" ,"number", "value", "10", "pattern", "[0-9]*");
+        assertInput(page, "checkBox", "type" ,"checkbox");
+        HtmlCheckBoxInput checkBoxInput = (HtmlCheckBoxInput) page.getElementById("checkBox");
+        assertFalse(checkBoxInput.isChecked());
+    }
+
+    @Test
+    public void testInputPostback() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/input.xhtml");
+
+        setValue(page, "inputText2", "new text2");
+        setValue(page, "textField", "new text1");
+        setValue(page, "emailField", "nobody at example.com");
+        setValue(page, "numberField", "12");
+        HtmlCheckBoxInput checkBoxInput = (HtmlCheckBoxInput) page.getElementById("checkBox");
+        checkBoxInput.setChecked(true);
+
+        HtmlResetInput resetButton = (HtmlResetInput) page.getElementById("resetButton");
+        page = resetButton.click();
+
+        assertInputDefaults(page);
+
+        setValue(page, "inputText2", "new text2");
+        setValue(page, "textField", "new text1");
+        setValue(page, "emailField", "nobody at example.com");
+        setValue(page, "numberField", "12");
+        checkBoxInput.setChecked(true);
+
+        HtmlSubmitInput submitButton = (HtmlSubmitInput) page.getElementById("submitButton");
+        page = submitButton.click();
+
+        assertInput(page, "inputText", "type" ,"text", "value", "new text1");
+        assertInput(page, "inputText2", "type" ,"text", "value", "new text2");
+        assertInput(page, "textField", "type" ,"text", "value", "new text1");
+        assertInput(page, "emailField", "type" ,"email", "value", "nobody at example.com");
+        assertInput(page, "numberField", "type", "number", "value", "12", "pattern", "[0-9]*");
+
+        checkBoxInput = (HtmlCheckBoxInput) page.getElementById("checkBox");
+        assertTrue(checkBoxInput.isChecked());
+    }
+
+    private void setValue(HtmlPage page, String id, String value) {
+        HtmlTextInput input = (HtmlTextInput) page.getElementById(id);
+        input.setValueAttribute(value);
+    }
+
+    private void assertInput(HtmlPage page, String id, String... attrs) {
+        assertFormElement(page, "input", id, attrs);
+    }
+
+    private void assertSelect(HtmlPage page, String id, String... attrs) {
+        assertFormElement(page, "select", id, attrs);
+    }
+
+    private void assertFormElement(HtmlPage page, String elementName, String id, String... attrs) {
+        HtmlElement input = page.getHtmlElementById(id);
+        String xml = input.asXml();
+
+        assertTrue(xml.contains("<" + elementName));
+        assertTrue(xml.contains("id=\"" + id + "\""));
+        assertTrue(xml.contains("name=\"" + id + "\""));
+
+        if(attrs == null) {
+            return;
+        }
+        for(int i = 0; i < attrs.length; i++) {
+            String name = attrs[i];
+            String value = attrs[++i];
+            assertTrue(xml.contains(name + "=\"" + value + "\""));
+        }
+    }
+    
+    @Test
+    public void testCauseError() throws Exception {
+        webClient.setThrowExceptionOnFailingStatusCode(false);
+        HtmlPage page = webClient.getPage(webUrl + "faces/causeError.xhtml");
+        String xml = page.getBody().asXml();
+        assertTrue(xml.contains("FaceletException"));
+        webClient.setThrowExceptionOnFailingStatusCode(true);
+    }        
+    
+    @Test
+    public void testSelectMarkup() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/select.xhtml");
+        assertSelectAttributes(page);
+        assertDefaultSelections(page);
+    }
+
+    private void assertDefaultSelections(HtmlPage page) {
+        assertSelection(page, "selectOne", "2");
+        assertSelection(page, "selectOneSize2", "3");
+        assertSelection(page, "selectMany", "4", "6");
+    }
+
+    private void assertSelection(HtmlPage page, String id, String... values) {
+        HtmlSelect select = (HtmlSelect) page.getElementById(id);
+        List<String> valuesAsList = Arrays.asList(values);
+        for (HtmlOption option : select.getOptions()) {
+            boolean shouldBeSelected = valuesAsList.contains(option.getValueAttribute());
+
+            if(option.isSelected()) {
+                assertTrue(shouldBeSelected);
+            } else {
+                assertFalse(shouldBeSelected);
+            }
+        }
+    }
+
+    private void assertSelectAttributes(HtmlPage page) {
+        assertSelect(page, "selectOne", "size" ,"1");
+        assertSelect(page, "selectOneSize2", "size" ,"2");
+        assertSelect(page, "selectMany", "size", "7", "multiple", "multiple");
+    }
+
+    @Test
+    public void testSelectPostback() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/select.xhtml");
+
+        select(page, "selectOne", "3");
+        select(page, "selectOneSize2", "5");
+        select(page, "selectMany", "1", "2");
+
+        HtmlResetInput resetButton = (HtmlResetInput) page.getElementById("resetButton");
+        page = resetButton.click();
+
+        assertSelectAttributes(page);
+        assertDefaultSelections(page);
+
+        select(page, "selectOne", "3");
+        select(page, "selectOneSize2", "5");
+        select(page, "selectMany", "1", "2");
+
+        HtmlSubmitInput submitButton = (HtmlSubmitInput) page.getElementById("submitButton");
+        page = submitButton.click();
+
+        assertSelectAttributes(page);
+
+        assertSelection(page, "selectOne", "3");
+        assertSelection(page, "selectOneSize2", "5");
+        assertSelection(page, "selectMany", "1", "2");
+    }
+
+    private void select(HtmlPage page, String id, String... values) {
+        HtmlSelect select = (HtmlSelect) page.getElementById(id);
+        List<String> valuesAsList = Arrays.asList(values);
+
+        for (HtmlOption option : select.getOptions()) {
+            option.setSelected(valuesAsList.contains(option.getValueAttribute()));
+        }
+    }
+
+    @Test
+    public void testTextareaMarkup() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/textarea.xhtml");
+        assertFormElement(page, "textarea", "textarea", "autofocus", "autofocus");
+        HtmlTextArea textarea = (HtmlTextArea) page.getElementById("textarea");
+        assertEquals(textarea.getText(), "Long text");
+    }
+
+    @Test
+    public void testTextareaPostback() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/textarea.xhtml");
+        HtmlTextArea textarea = (HtmlTextArea) page.getElementById("textarea");
+        textarea.setText("Very long text");
+
+        HtmlSubmitInput submitButton = (HtmlSubmitInput) page.getElementById("submitButton");
+        page = submitButton.click();
+
+        assertFormElement(page, "textarea", "textarea", "autofocus", "autofocus");
+
+        textarea = (HtmlTextArea) page.getElementById("textarea");
+        assertEquals("Very long text", textarea.getText());
+    }
+
+    @Test
+    public void testButton() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/button.xhtml");
+        assertFormElement(page, "button", "fancyButton1");
+        assertFormElement(page, "button", "fancyButton2");
+        String lastAction = page.getElementById("lastAction").getTextContent();
+        assertEquals("", lastAction);
+
+        page = page.getHtmlElementById("fancyButton1").click();
+
+        lastAction = page.getElementById("lastAction").getTextContent();
+        assertEquals("action1", lastAction);
+
+        page = page.getHtmlElementById("fancyButton2").click();
+
+        lastAction = page.getElementById("lastAction").getTextContent();
+        assertEquals("action2", lastAction);
+        
+        page = webClient.getPage(webUrl + "faces/button.xhtml");
+        HtmlButton button = (HtmlButton) page.getElementById("outcomeButton");
+        page = button.click();
+        String outcome = page.getElementById("lastOutcome").getTextContent();
+        assertEquals("outcome1", outcome);
+    }
+    
+    @Test
+    public void testLinks() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/links.xhtml");
+        
+        HtmlAnchor link = (HtmlAnchor) page.getElementById("action1");
+        page = link.click();
+        
+        String lastStr = page.getElementById("lastAction").getTextContent();
+        assertEquals("action1", lastStr);
+
+        link = (HtmlAnchor) page.getElementById("action2");
+        page = link.click();
+        
+        lastStr = page.getElementById("lastAction").getTextContent();
+        assertEquals("action2", lastStr);
+        
+        link = (HtmlAnchor) page.getElementById("outcome1");
+        page = link.click();
+        lastStr = page.getElementById("lastOutcome").getTextContent();
+        assertEquals("outcome1", lastStr);
+        
+        
+    }
+
+    @Test
+    public void testComplex() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/complex.xhtml");
+        
+        AjaxWaiter waiter = new AjaxWaiter();
+        webClient.setStatusHandler(waiter);
+
+        HtmlTextInput name = (HtmlTextInput)page.getElementById("name");
+        name.focus();
+        name.setText("Horst");
+
+        HtmlTextInput tel = (HtmlTextInput)page.getElementById("tel");
+        tel.focus();
+
+        waiter.waitForSuccess();
+
+        assertEquals("1", page.getElementById("progress").getAttribute("value"));
+
+        tel.setText("4711");
+        
+        waiter.clear();
+        
+        HtmlTextInput email = (HtmlTextInput)page.getElementById("email");
+        email.focus();
+
+        waiter.waitForSuccess();
+        
+        System.out.println(page.asXml());
+
+        assertEquals("2", page.getElementById("progress").getAttribute("value"));
+
+        waiter.clear();
+
+        email.setText("horst at example.com");
+        email.blur();
+
+        waiter.waitForSuccess();
+        
+        assertEquals("3", page.getElementById("progress").getAttribute("value"));
+    }
+
+    private static class AjaxWaiter implements StatusHandler {
+
+        private String lastMessage;
+
+        private int sleepTime = 10;
+
+        private int maxWaitTime = 10000;
+
+        @Override
+        public void statusMessageChanged(Page page, String message) {
+            this.lastMessage = message;
+        }
+
+        private void waitForSuccess() {
+            int diff = 0;
+            while (!"success".equals(lastMessage)) {
+                if(diff >= maxWaitTime) {
+                    fail("waited " + diff + "ms for ajax success");
+                }
+                try {
+                    diff += sleepTime;
+                    Thread.sleep(sleepTime);
+                } catch (InterruptedException e) {
+                    // ignore
+                }
+            }
+        }
+
+        private void clear() {
+            lastMessage = null;
+        }
+    }
+}
\ No newline at end of file
diff --git a/test/agnostic/renderKit/passthrough/src/test/java/com/sun/faces/test/agnostic/renderKit/passthrough/Issue2605IT.java b/test/agnostic/renderKit/passthrough/src/test/java/com/sun/faces/test/agnostic/renderKit/passthrough/Issue2605IT.java
new file mode 100644
index 0000000..9f59957
--- /dev/null
+++ b/test/agnostic/renderKit/passthrough/src/test/java/com/sun/faces/test/agnostic/renderKit/passthrough/Issue2605IT.java
@@ -0,0 +1,154 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDLGPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.renderKit.passthrough;
+
+import com.gargoylesoftware.htmlunit.Page;
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.WebResponse;
+import com.gargoylesoftware.htmlunit.html.HtmlCheckBoxInput;
+import com.gargoylesoftware.htmlunit.html.HtmlElement;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
+import java.util.Arrays;
+import java.util.List;
+import org.junit.*;
+import static org.junit.Assert.*;
+
+public class Issue2605IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testFieldset() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/fieldset.xhtml");
+        HtmlElement elem = page.getHtmlElementById("fieldset1");
+        String xml = elem.asXml();
+        assertTrue(xml.contains("<fieldset"));
+        assertTrue(xml.contains("id=\"" + "fieldset1" + "\""));
+
+        elem = page.getHtmlElementById("fieldset2");
+        xml = elem.asXml();
+        assertTrue(xml.contains("<fieldset"));
+        assertTrue(xml.contains("id=\"" + "fieldset2" + "\""));
+        assertTrue(xml.contains("disabled=\"" + "disabled" + "\""));
+
+        elem = page.getHtmlElementById("fieldset3");
+        xml = elem.asXml();
+        assertTrue(xml.contains("<fieldset"));
+        assertTrue(xml.contains("id=\"" + "fieldset3" + "\""));
+        assertTrue(xml.contains("form=\"" + "form" + "\""));
+        assertTrue(xml.contains("name=\"" + "myfieldset" + "\""));
+    }
+
+    @Test
+    public void testMeter() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/meter.xhtml");
+        HtmlElement elem = page.getHtmlElementById("meter1");
+        String xml = elem.asXml();
+        assertTrue(xml.contains("<meter"));
+        assertTrue(xml.contains("id=\"" + "meter1" + "\""));
+        assertTrue(xml.contains("min=\"" + "200" + "\""));
+        assertTrue(xml.contains("max=\"" + "500" + "\""));
+        assertTrue(xml.contains("value=\"" + "350" + "\""));
+
+        elem = page.getHtmlElementById("meter2");
+        xml = elem.asXml();
+        assertTrue(xml.contains("<meter"));
+        assertTrue(xml.contains("id=\"" + "meter2" + "\""));
+        assertTrue(xml.contains("min=\"" + "100" + "\""));
+        assertTrue(xml.contains("max=\"" + "500" + "\""));
+        assertTrue(xml.contains("value=\"" + "350" + "\""));
+    }
+
+    @Test
+    public void testLabel() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/label.xhtml");
+        HtmlElement elem = page.getHtmlElementById("label1");
+        String xml = elem.asXml();
+        assertTrue(xml.contains("<label"));
+        assertTrue(xml.contains("id=\"" + "label1" + "\""));
+        assertTrue(xml.contains("form=\"" + "form" + "\""));
+        assertTrue(xml.contains("for=\"" + "input1" + "\""));
+    }
+
+    @Test
+    public void testDataList() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/datalist.xhtml");
+        HtmlElement elem = page.getHtmlElementById("colors");
+        String xml = elem.asXml();
+        assertTrue(xml.contains("<datalist"));
+        assertTrue(xml.contains("id=\"" + "colors" + "\""));
+        WebResponse resp = page.getWebResponse();
+        String text = resp.getContentAsString();
+        assertTrue(text.contains("<option id="+'"'+"r"+'"'+" value="+'"'+"red"+'"'));
+        assertTrue(text.contains("<option id="+'"'+"b"+'"'+" value="+'"'+"blue"+'"'));
+        assertTrue(text.contains("<option id="+'"'+"g"+'"'+" value="+'"'+"green"+'"'));
+    }
+
+    @Test
+    public void testOutput() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/output.xhtml");
+        HtmlElement elem = page.getHtmlElementById("output1");
+        String xml = elem.asXml();
+        assertTrue(xml.contains("<output"));
+        assertTrue(xml.contains("id=\"" + "output1" + "\""));
+    }
+
+    @Test
+    public void testKeygen() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/keygen.xhtml");
+        HtmlElement elem = page.getHtmlElementById("keygen1");
+        String xml = elem.asXml();
+        assertTrue(xml.contains("<keygen"));
+        assertTrue(xml.contains("id=\"" + "keygen1" + "\""));
+    }
+}
diff --git a/test/agnostic/renderKit/passthrough/src/test/java/com/sun/faces/test/agnostic/renderKit/passthrough/Issue2606IT.java b/test/agnostic/renderKit/passthrough/src/test/java/com/sun/faces/test/agnostic/renderKit/passthrough/Issue2606IT.java
new file mode 100644
index 0000000..ce24584
--- /dev/null
+++ b/test/agnostic/renderKit/passthrough/src/test/java/com/sun/faces/test/agnostic/renderKit/passthrough/Issue2606IT.java
@@ -0,0 +1,222 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.agnostic.renderKit.passthrough;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlFieldSet;
+import com.gargoylesoftware.htmlunit.html.HtmlElement;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import org.junit.After;
+import org.junit.Before;
+import static org.junit.Assert.*;
+import org.junit.Test;
+
+public class Issue2606IT {
+    
+    /**
+     * Stores the web URL.
+     */
+    private String webUrl;
+    /**
+     * Stores the web client.
+     */
+    private WebClient webClient;
+
+    /**
+     * Setup before testing.
+     */
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+        webClient.setJavaScriptEnabled(true);
+        webClient.setJavaScriptTimeout(60000);
+    }
+
+    /**
+     * Tear down after testing.
+     */
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testArticle() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "/faces/article.xhtml");
+        HtmlElement article1 = page.getHtmlElementById("article1");
+        String xml = article1.asXml();
+        assertTrue(xml.contains("<article"));
+        assertTrue(xml.contains("id=\"" + "article1" + "\""));
+
+        HtmlElement article2 = page.getHtmlElementById("article2");
+        xml = article2.asXml();
+        assertTrue(xml.contains("<article"));
+        assertTrue(xml.contains("id=\"" + "article2" + "\""));
+
+        webClient.setJavaScriptEnabled(true);
+        webClient.setJavaScriptTimeout(60000);
+        page = (HtmlPage)article2.mouseOver();
+        webClient.waitForBackgroundJavaScript(60000);
+        assertTrue(page.asXml().contains("article2 Event: begin"));
+        assertTrue(page.asXml().contains("article2 Event: complete"));
+        assertTrue(page.asXml().contains("article2 Event: success"));
+    } 
+
+    @Test
+    public void testAside() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "/faces/aside.xhtml");
+        HtmlElement aside1 = page.getHtmlElementById("aside1");
+        String xml = aside1.asXml();
+        assertTrue(xml.contains("<aside"));
+        assertTrue(xml.contains("id=\"" + "aside1" + "\""));
+
+        HtmlElement aside2 = page.getHtmlElementById("aside2");
+        xml = aside2.asXml();
+        assertTrue(xml.contains("<aside"));
+        assertTrue(xml.contains("id=\"" + "aside2" + "\""));
+
+        webClient.setJavaScriptEnabled(true);
+        webClient.setJavaScriptTimeout(60000);
+        page = (HtmlPage)aside2.click();
+        webClient.waitForBackgroundJavaScript(60000);
+        assertTrue(page.asXml().contains("aside2 Event: begin"));
+        assertTrue(page.asXml().contains("aside2 Event: complete"));
+        assertTrue(page.asXml().contains("aside2 Event: success"));
+    }
+
+    @Test
+    public void testNav() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "/faces/nav.xhtml");
+        HtmlElement nav1 = page.getHtmlElementById("nav1");
+        String xml = nav1.asXml();
+        assertTrue(xml.contains("<nav"));
+        assertTrue(xml.contains("id=\"" + "nav1" + "\""));
+
+        HtmlElement nav2 = page.getHtmlElementById("nav2");
+        xml = nav2.asXml();
+        assertTrue(xml.contains("<nav"));
+        assertTrue(xml.contains("id=\"" + "nav2" + "\""));
+
+        webClient.setJavaScriptEnabled(true);
+        webClient.setJavaScriptTimeout(60000);
+        page = (HtmlPage)nav2.click();
+        webClient.waitForBackgroundJavaScript(60000);
+        assertTrue(page.asXml().contains("nav2 Event: begin"));
+        assertTrue(page.asXml().contains("nav2 Event: complete"));
+        assertTrue(page.asXml().contains("nav2 Event: success"));
+    }
+
+    @Test
+    public void testSection() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "/faces/section.xhtml");
+        HtmlElement section1 = page.getHtmlElementById("section1");
+        String xml = section1.asXml();
+        assertTrue(xml.contains("<section"));
+        assertTrue(xml.contains("id=\"" + "section1" + "\""));
+
+        HtmlElement section2 = page.getHtmlElementById("section2");
+        xml = section2.asXml();
+        assertTrue(xml.contains("<section"));
+        assertTrue(xml.contains("id=\"" + "section2" + "\""));
+
+        webClient.setJavaScriptEnabled(true);
+        webClient.setJavaScriptTimeout(60000);
+        page = (HtmlPage)section2.mouseOver();
+        webClient.waitForBackgroundJavaScript(60000);
+        assertTrue(page.asXml().contains("section2 Event: begin"));
+        assertTrue(page.asXml().contains("section2 Event: complete"));
+        assertTrue(page.asXml().contains("section2 Event: success"));
+    }
+
+    @Test
+    public void testHeaders() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "/faces/h1h2h3h4h5h6.xhtml");
+        HtmlElement h1 = page.getHtmlElementById("header1");
+        String xml = h1.asXml();
+        assertTrue(xml.contains("<h1"));
+        assertTrue(xml.contains("id=\"" + "header1" + "\""));
+
+        HtmlElement h2 = page.getHtmlElementById("header2");
+        xml = h2.asXml();
+        assertTrue(xml.contains("<h2"));
+        assertTrue(xml.contains("id=\"" + "header2" + "\""));
+
+        webClient.setJavaScriptEnabled(true);
+        webClient.setJavaScriptTimeout(60000);
+        page = (HtmlPage)h2.mouseOver();
+        webClient.waitForBackgroundJavaScript(60000);
+        assertTrue(page.asXml().contains("header2 Event: begin"));
+        assertTrue(page.asXml().contains("header2 Event: complete"));
+        assertTrue(page.asXml().contains("header2 Event: success"));
+
+        HtmlElement h3 = page.getHtmlElementById("header3");
+        xml = h3.asXml();
+        assertTrue(xml.contains("<h3"));
+        assertTrue(xml.contains("id=\"" + "header3" + "\""));
+
+        HtmlElement h4 = page.getHtmlElementById("header4");
+        xml = h4.asXml();
+        assertTrue(xml.contains("<h4"));
+        assertTrue(xml.contains("id=\"" + "header4" + "\""));
+
+        HtmlElement h5 = page.getHtmlElementById("header5");
+        xml = h5.asXml();
+        assertTrue(xml.contains("<h5"));
+        assertTrue(xml.contains("id=\"" + "header5" + "\""));
+
+        HtmlElement h6 = page.getHtmlElementById("header6");
+        xml = h6.asXml();
+        assertTrue(xml.contains("<h6"));
+        assertTrue(xml.contains("id=\"" + "header6" + "\""));
+    }
+
+    @Test
+    public void testHeaderGroup() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "/faces/hgroup.xhtml");
+        HtmlElement hgroup = page.getHtmlElementById("hgroup");
+        String xml = hgroup.asXml();
+        assertTrue(xml.contains("<hgroup"));
+        assertTrue(xml.contains("id=\"" + "hgroup" + "\""));
+    }
+
+}
diff --git a/test/agnostic/renderKit/passthrough/src/test/java/com/sun/faces/test/agnostic/renderKit/passthrough/Issue2607IT.java b/test/agnostic/renderKit/passthrough/src/test/java/com/sun/faces/test/agnostic/renderKit/passthrough/Issue2607IT.java
new file mode 100644
index 0000000..a8a7933
--- /dev/null
+++ b/test/agnostic/renderKit/passthrough/src/test/java/com/sun/faces/test/agnostic/renderKit/passthrough/Issue2607IT.java
@@ -0,0 +1,123 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.agnostic.renderKit.passthrough;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlFieldSet;
+import com.gargoylesoftware.htmlunit.html.HtmlElement;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import org.junit.After;
+import org.junit.Before;
+import static org.junit.Assert.*;
+import org.junit.Test;
+
+public class Issue2607IT {
+    
+    /**
+     * Stores the web URL.
+     */
+    private String webUrl;
+    /**
+     * Stores the web client.
+     */
+    private WebClient webClient;
+
+    /**
+     * Setup before testing.
+     */
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+        webClient.setJavaScriptEnabled(true);
+        webClient.setJavaScriptTimeout(60000);
+    }
+
+    /**
+     * Tear down after testing.
+     */
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    // This tests the following markup:
+    // <base jsf:id="base1" href="http://foobar.com" target="_blank" />
+    //
+    @Test
+    public void testBase() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "/faces/base.xhtml");
+        HtmlElement base = page.getHtmlElementById("base1");
+        String xml = base.asXml();
+        assertTrue(xml.contains("<base"));
+        assertTrue(xml.contains("id=\"" + "base1" + "\""));
+        assertTrue(xml.contains("href=\"" + "http://foobar.com" + "\""));
+        assertTrue(xml.contains("target=\"" + "_blank" + "\""));
+    } 
+
+    // This tests the following markup:
+    // <command jsf:id="command1" onclick="doThat()"/>
+    //
+    @Test
+    public void testCommand() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "/faces/command.xhtml");
+        HtmlElement command = page.getHtmlElementById("command1");
+        String xml = command.asXml();
+        assertTrue(xml.contains("<command"));
+        assertTrue(xml.contains("id=\"" + "command1" + "\""));
+        assertTrue(xml.contains("onclick=\"" + "doThat()" + "\""));
+    } 
+
+    // This tests the following markup:
+    // <meta jsf:id="meta1" charset="UTF-8"/>
+    //
+    @Test
+    public void testMeta() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "/faces/meta.xhtml");
+        HtmlElement meta = page.getHtmlElementById("meta1");
+        String xml = meta.asXml();
+        assertTrue(xml.contains("<meta"));
+        assertTrue(xml.contains("id=\"" + "meta1" + "\""));
+        assertTrue(xml.contains("charset=\"" + "UTF-8" + "\""));
+    } 
+
+}
diff --git a/test/agnostic/renderKit/passthrough/src/test/java/com/sun/faces/test/agnostic/renderKit/passthrough/Issue2608IT.java b/test/agnostic/renderKit/passthrough/src/test/java/com/sun/faces/test/agnostic/renderKit/passthrough/Issue2608IT.java
new file mode 100644
index 0000000..e3807c9
--- /dev/null
+++ b/test/agnostic/renderKit/passthrough/src/test/java/com/sun/faces/test/agnostic/renderKit/passthrough/Issue2608IT.java
@@ -0,0 +1,185 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.agnostic.renderKit.passthrough;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlElement;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.After;
+import org.junit.Before;
+import static org.junit.Assert.*;
+import org.junit.Test;
+
+public class Issue2608IT {
+    
+    /**
+     * Stores the web URL.
+     */
+    private String webUrl;
+    /**
+     * Stores the web client.
+     */
+    private WebClient webClient;
+
+    /**
+     * Setup before testing.
+     */
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+        webClient.setJavaScriptEnabled(true);
+        webClient.setJavaScriptTimeout(60000);
+    }
+
+    /**
+     * Tear down after testing.
+     */
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    // This tests the following markup:
+    // <h:inputText id="input1" type="text" p:placeholder="Enter text here" />
+    //
+    @Test
+    public void testInputTextPlaceholder() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "/faces/input1.xhtml");
+        HtmlElement input = page.getHtmlElementById("input1");
+        String xml = input.asXml();
+        assertTrue(xml.contains("<input"));
+        assertTrue(xml.contains("id=\"" + "input1" + "\""));
+        assertTrue(xml.contains("type=\"" + "text" + "\""));
+        assertTrue(xml.contains("name=\"" + "input1" + "\""));
+        assertTrue(xml.contains("placeholder=\"" + "Enter text here" + "\""));
+    } 
+
+    // This tests the following markup:
+    // <h:inputText id="input2" type="text" p:autocomplete="on" />
+    //
+    @Test
+    public void testInputTextAutocomplete() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "/faces/input1.xhtml");
+        HtmlElement input = page.getHtmlElementById("input2");
+        String xml = input.asXml();
+        assertTrue(xml.contains("<input"));
+        assertTrue(xml.contains("id=\"" + "input2" + "\""));
+        assertTrue(xml.contains("type=\"" + "text" + "\""));
+        assertTrue(xml.contains("name=\"" + "input2" + "\""));
+        assertTrue(xml.contains("autocomplete=\"" + "on" + "\""));
+    } 
+
+    // This tests the following markup:
+    // <h:inputText id="input3" type="text" p:autofocus="autofocus" />
+    //
+    @Test
+    public void testInputTextAutofocus() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "/faces/input1.xhtml");
+        HtmlElement input = page.getHtmlElementById("input3");
+        String xml = input.asXml();
+        assertTrue(xml.contains("<input"));
+        assertTrue(xml.contains("id=\"" + "input3" + "\""));
+        assertTrue(xml.contains("type=\"" + "text" + "\""));
+        assertTrue(xml.contains("name=\"" + "input3" + "\""));
+        assertTrue(xml.contains("autofocus=\"" + "autofocus" + "\""));
+    } 
+
+    // This tests the following markup:
+    // <h:inputText id="input4" type="text" p:list="mydatalist" />
+    //
+    @Test
+    public void testInputTextList() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "/faces/input1.xhtml");
+        HtmlElement input = page.getHtmlElementById("input4");
+        String xml = input.asXml();
+        assertTrue(xml.contains("<input"));
+        assertTrue(xml.contains("id=\"" + "input4" + "\""));
+        assertTrue(xml.contains("type=\"" + "text" + "\""));
+        assertTrue(xml.contains("name=\"" + "input4" + "\""));
+        assertTrue(xml.contains("list=\"" + "mydatalist" + "\""));
+    } 
+
+    // This tests the following markup:
+    // <h:inputText id="input5" type="text" p:pattern="[A-Za-z]{3}" />
+    //
+    @Test
+    public void testInputTextPattern() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "/faces/input1.xhtml");
+        HtmlElement input = page.getHtmlElementById("input5");
+        String xml = input.asXml();
+        assertTrue(xml.contains("<input"));
+        assertTrue(xml.contains("id=\"" + "input5" + "\""));
+        assertTrue(xml.contains("type=\"" + "text" + "\""));
+        assertTrue(xml.contains("name=\"" + "input5" + "\""));
+        assertTrue(xml.contains("pattern=\"" + "[A-Za-z]{3}" + "\""));
+    } 
+
+    // This tests the following markup:
+    // <h:inputText id="input6" type="text" p:required="required" />
+    //
+    @Test
+    public void testInputTextRequired() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "/faces/input1.xhtml");
+        HtmlElement input = page.getHtmlElementById("input6");
+        String xml = input.asXml();
+        assertTrue(xml.contains("<input"));
+        assertTrue(xml.contains("id=\"" + "input6" + "\""));
+        assertTrue(xml.contains("type=\"" + "text" + "\""));
+        assertTrue(xml.contains("name=\"" + "input6" + "\""));
+        assertTrue(xml.contains("required=\"" + "required" + "\""));
+    } 
+
+    // This tests the following markup:
+    // <h:inputText id="input7" type="text" p:dirname="input7.dir" />
+    //
+    @Test
+    public void testInputTextDirname() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "/faces/input1.xhtml");
+        HtmlElement input = page.getHtmlElementById("input7");
+        String xml = input.asXml();
+        assertTrue(xml.contains("<input"));
+        assertTrue(xml.contains("id=\"" + "input7" + "\""));
+        assertTrue(xml.contains("type=\"" + "text" + "\""));
+        assertTrue(xml.contains("name=\"" + "input7" + "\""));
+        assertTrue(xml.contains("dirname=\"" + "input7.dir" + "\""));
+    } 
+}
diff --git a/test/agnostic/renderKit/passthrough/src/test/java/com/sun/faces/test/agnostic/renderKit/passthrough/Issue2629IT.java b/test/agnostic/renderKit/passthrough/src/test/java/com/sun/faces/test/agnostic/renderKit/passthrough/Issue2629IT.java
new file mode 100644
index 0000000..1e960bc
--- /dev/null
+++ b/test/agnostic/renderKit/passthrough/src/test/java/com/sun/faces/test/agnostic/renderKit/passthrough/Issue2629IT.java
@@ -0,0 +1,108 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.agnostic.renderKit.passthrough;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlFieldSet;
+import com.gargoylesoftware.htmlunit.html.HtmlElement;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import org.junit.After;
+import org.junit.Before;
+import static org.junit.Assert.*;
+import org.junit.Test;
+
+public class Issue2629IT {
+    
+    /**
+     * Stores the web URL.
+     */
+    private String webUrl;
+    /**
+     * Stores the web client.
+     */
+    private WebClient webClient;
+
+    /**
+     * Setup before testing.
+     */
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+        webClient.setJavaScriptEnabled(true);
+        webClient.setJavaScriptTimeout(60000);
+    }
+
+    /**
+     * Tear down after testing.
+     */
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testFieldSetAjaxBehavior() throws Exception {
+        webClient.setJavaScriptEnabled(true);
+        webClient.setJavaScriptTimeout(60000);
+        HtmlPage page = webClient.getPage(webUrl + "/faces/fieldset.xhtml");
+        HtmlFieldSet fieldset = (HtmlFieldSet)page.getHtmlElementById("fieldset4");
+        page = fieldset.click();
+        webClient.waitForBackgroundJavaScript(60000);
+        assertTrue(page.asXml().contains("fieldset4 Event: begin"));
+        assertTrue(page.asXml().contains("fieldset4 Event: complete"));
+        assertTrue(page.asXml().contains("fieldset4 Event: success"));
+    }
+
+    @Test
+    public void testLabelAjaxBehavior() throws Exception {
+        webClient.setJavaScriptEnabled(true);
+        webClient.setJavaScriptTimeout(60000);
+        HtmlPage page = webClient.getPage(webUrl + "/faces/label.xhtml");
+        HtmlElement label = page.getHtmlElementById("label2");
+        page = (HtmlPage)label.mouseOver();
+        webClient.waitForBackgroundJavaScript(60000);
+        assertTrue(page.asXml().contains("label2 Event: begin"));
+        assertTrue(page.asXml().contains("label2 Event: complete"));
+        assertTrue(page.asXml().contains("label2 Event: success"));
+    }
+}
diff --git a/test/agnostic/renderKit/passthrough/src/test/java/com/sun/faces/test/agnostic/renderKit/passthrough/Issue2711IT.java b/test/agnostic/renderKit/passthrough/src/test/java/com/sun/faces/test/agnostic/renderKit/passthrough/Issue2711IT.java
new file mode 100644
index 0000000..304a51c
--- /dev/null
+++ b/test/agnostic/renderKit/passthrough/src/test/java/com/sun/faces/test/agnostic/renderKit/passthrough/Issue2711IT.java
@@ -0,0 +1,98 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.agnostic.renderKit.passthrough;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlFieldSet;
+import com.gargoylesoftware.htmlunit.html.HtmlElement;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import org.junit.After;
+import org.junit.Before;
+import static org.junit.Assert.*;
+import org.junit.Test;
+
+public class Issue2711IT {
+    
+    /**
+     * Stores the web URL.
+     */
+    private String webUrl;
+    /**
+     * Stores the web client.
+     */
+    private WebClient webClient;
+
+    /**
+     * Setup before testing.
+     */
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+        webClient.setJavaScriptEnabled(true);
+        webClient.setJavaScriptTimeout(60000);
+    }
+
+    /**
+     * Tear down after testing.
+     */
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    // This tests the following markup:
+    // <h:inputText id="input1" type="text" p:placeholder="Enter text here" />
+    //
+    @Test
+    public void testInputTextPlaceholder() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "/faces/input1.xhtml");
+        HtmlElement input1 = page.getHtmlElementById("input1");
+        String xml = input1.asXml();
+        assertTrue(xml.contains("<input"));
+        assertTrue(xml.contains("id=\"" + "input1" + "\""));
+        assertTrue(xml.contains("type=\"" + "text" + "\""));
+        assertTrue(xml.contains("name=\"" + "input1" + "\""));
+        assertTrue(xml.contains("placeholder=\"" + "Enter text here" + "\""));
+    } 
+
+}
diff --git a/test/agnostic/renderKit/passthrough/src/test/java/com/sun/faces/test/agnostic/renderKit/passthrough/Issue3025IT.java b/test/agnostic/renderKit/passthrough/src/test/java/com/sun/faces/test/agnostic/renderKit/passthrough/Issue3025IT.java
new file mode 100644
index 0000000..7d0201f
--- /dev/null
+++ b/test/agnostic/renderKit/passthrough/src/test/java/com/sun/faces/test/agnostic/renderKit/passthrough/Issue3025IT.java
@@ -0,0 +1,77 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.renderKit.passthrough;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.sun.faces.test.junit.JsfTest;
+import com.sun.faces.test.junit.JsfTestRunner;
+import com.sun.faces.test.junit.JsfVersion;
+import org.junit.After;
+import org.junit.Before;
+import static org.junit.Assert.*;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+ at RunWith(JsfTestRunner.class)
+public class Issue3025IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @JsfTest(JsfVersion.JSF_2_2_4)
+    @Test
+    public void testDivWithClass() throws Exception {
+        webClient.getOptions().setThrowExceptionOnFailingStatusCode(false);
+        HtmlPage page = webClient.getPage(webUrl + "/faces/divWithClass.xhtml");
+        assertEquals(200, page.getWebResponse().getStatusCode());
+    }
+}
diff --git a/test/agnostic/renderKit/passthrough/src/test/java/com/sun/faces/test/agnostic/renderKit/passthrough/Issue3169IT.java b/test/agnostic/renderKit/passthrough/src/test/java/com/sun/faces/test/agnostic/renderKit/passthrough/Issue3169IT.java
new file mode 100644
index 0000000..51bf110
--- /dev/null
+++ b/test/agnostic/renderKit/passthrough/src/test/java/com/sun/faces/test/agnostic/renderKit/passthrough/Issue3169IT.java
@@ -0,0 +1,71 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.renderKit.passthrough;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.After;
+import org.junit.Before;
+import static org.junit.Assert.*;
+import org.junit.Test;
+
+public class Issue3169IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testSpuriousClosing() throws Exception {
+        webClient.getOptions().setThrowExceptionOnFailingStatusCode(false);
+        HtmlPage page = webClient.getPage(webUrl + "faces/spuriousClosing.xhtml");
+        assertTrue(page.getWebResponse().getContentAsString().indexOf("/input") == -1);
+    }
+}
diff --git a/test/agnostic/renderKit/pom.xml b/test/agnostic/renderKit/pom.xml
new file mode 100644
index 0000000..41b1b10
--- /dev/null
+++ b/test/agnostic/renderKit/pom.xml
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.agnostic</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.agnostic.renderKit</groupId>
+    <artifactId>pom</artifactId>
+    <packaging>pom</packaging>
+    <name>Mojarra ${project.version} - Test - Agnostic - RenderKit</name>
+    <modules>
+        <module>basic</module>
+        <module>noLinkDecoration</module>
+        <module>passthrough</module>
+    </modules>
+</project>
diff --git a/test/agnostic/replace-vr-add-er/nbactions.xml b/test/agnostic/replace-vr-add-er/nbactions.xml
new file mode 100644
index 0000000..3b5e73e
--- /dev/null
+++ b/test/agnostic/replace-vr-add-er/nbactions.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<actions>
+        <action>
+            <actionName>test.single</actionName>
+            <goals>
+                <goal>test-compile</goal>
+                <goal>surefire:test</goal>
+            </goals>
+            <properties>
+                <test>${packageClassName}</test>
+                <integration.url>http://localhost:8080/test-agnostic-replace-vr-add-er/</integration.url>
+            </properties>
+        </action>
+        <action>
+            <actionName>debug.test.single</actionName>
+            <goals>
+                <goal>test-compile</goal>
+                <goal>surefire:test</goal>
+            </goals>
+            <properties>
+                <test>${packageClassName}</test>
+                <forkMode>once</forkMode>
+                <maven.surefire.debug>-Xdebug -Xrunjdwp:transport=dt_socket,server=n,address=${jpda.address}</maven.surefire.debug>
+                <jpda.listen>true</jpda.listen>
+                <integration.url>http://localhost:8080/test-agnostic-replace-vr-add-er/</integration.url>
+            </properties>
+        </action>
+    </actions>
diff --git a/test/agnostic/replace-vr-add-er/pom.xml b/test/agnostic/replace-vr-add-er/pom.xml
new file mode 100644
index 0000000..6fbe09a
--- /dev/null
+++ b/test/agnostic/replace-vr-add-er/pom.xml
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <artifactId>pom</artifactId>
+    <groupId>com.sun.faces.test.agnostic</groupId>
+    <version>2.2.8-SNAPSHOT</version>
+  </parent>
+  
+  <groupId>com.sun.faces.test.agnostic</groupId>
+  <artifactId>replace-vr-add-er</artifactId>
+  <packaging>war</packaging>
+  <name>Mojarra ${project.version} - Test - Agnostic - replace-vr-add-er</name>
+  
+  <build>
+    <finalName>test-agnostic-replace-vr-add-er</finalName>
+  </build>
+  
+
+</project>
diff --git a/test/agnostic/replace-vr-add-er/src/main/java/com/sun/faces/test/agnostic/replace_vr_add_er/Bean.java b/test/agnostic/replace-vr-add-er/src/main/java/com/sun/faces/test/agnostic/replace_vr_add_er/Bean.java
new file mode 100644
index 0000000..4c1873a
--- /dev/null
+++ b/test/agnostic/replace-vr-add-er/src/main/java/com/sun/faces/test/agnostic/replace_vr_add_er/Bean.java
@@ -0,0 +1,196 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+/*
+ * Bean.java
+ *
+ * Created on April 29, 2006, 1:57 PM
+ *
+ * To change this template, choose Tools | Template Manager
+ * and open the template in the editor.
+ */
+
+package com.sun.faces.test.agnostic.replace_vr_add_er;
+
+import javax.el.ELResolver;
+import javax.el.ExpressionFactory;
+import javax.el.ValueExpression;
+import javax.faces.context.FacesContext;
+import javax.faces.el.EvaluationException;
+import javax.faces.el.VariableResolver;
+import javax.faces.event.ActionEvent;
+import javax.servlet.ServletContext;
+import javax.servlet.jsp.JspApplicationContext;
+import javax.servlet.jsp.JspFactory;
+
+/**
+ *
+ * @author edburns
+ */
+public class Bean {
+    
+    /** Creates a new instance of Bean */
+    public Bean() {
+    }
+    
+    public String callMethodsOnVariableResolver(FacesContext context, 
+            VariableResolver vr) throws EvaluationException {
+        Object result = null;
+        
+        result = vr.resolveVariable(context, "noneBean");
+        
+        if (!(result instanceof TestBean)) {
+            throw new IllegalStateException("Bean not of correct type");
+        }
+        
+        result = vr.resolveVariable(context, "custom");
+        
+        if (!result.equals("custom")) {
+            throw new IllegalStateException("Bean not of correct type");
+        }
+        
+        return "success";
+    }
+
+    public void verifyELResolverChainIsCorrectlyConfigured(ActionEvent e) {
+        String result = null;
+        final FacesContext context = FacesContext.getCurrentInstance();
+        StringBuilder message = Bean.getBuilder(context);
+
+        message.append("<br /><br />\n\n  <h1>FacesELResolverForFaces</h1><br /><br />\n\n  ");
+
+        // FacesELResolver Chain
+        context.getApplication().getELResolver().getValue(context.getELContext(), null,
+                new Object() {
+
+            @Override
+            public String toString() {
+                Bean.captureStackTrace(context);
+                return "traceResolution";
+            }
+
+        });
+
+        message.append("<br /><br />\n\n  <h1>FacesELResolverForJsp</h1><br /><br />\n\n  ");
+
+        JspFactory factory = JspFactory.getDefaultFactory();
+        JspApplicationContext jspContext = factory.
+                getJspApplicationContext((ServletContext)
+                context.getExternalContext().getContext());
+        ExpressionFactory elFactory = jspContext.getExpressionFactory();
+        ValueExpression ve = elFactory.createValueExpression(context.getELContext(), "#{traceResolution}",
+                Object.class);
+        ve.getValue(context.getELContext());
+    }
+
+    public static StringBuilder getBuilder(FacesContext context) {
+        StringBuilder result = (StringBuilder) context.getExternalContext().getRequestMap().get("message");
+        if (null == result) {
+            result = new StringBuilder();
+            context.getExternalContext().getRequestMap().put("message", result);
+        }
+        return result;
+    }
+
+    public static void captureStackTrace(FacesContext context) {
+        StringBuilder message = getBuilder(context);
+        message.append("<h2>toString() invocation</h2>");
+
+        StackTraceElement[] stackTrace = Thread.currentThread().getStackTrace();
+        String stackTraceElement;
+        for (int i = 0; i < 4; i++) {
+            StackTraceElement cur = stackTrace[i];
+            stackTraceElement = cur.toString();
+            if (!(stackTraceElement.contains("Thread") ||
+                  stackTraceElement.contains(Bean.class.getCanonicalName()))) {
+                message.append("<p>").append(stackTraceElement).append("</p>");
+                break;
+            }
+        }
+    }
+    
+    public String getInvokeVariableResolverThruChain() throws EvaluationException {
+        FacesContext context = FacesContext.getCurrentInstance();
+        VariableResolver vr = context.getApplication().getVariableResolver();
+        return callMethodsOnVariableResolver(context, vr);
+    }
+    
+    public String getInvokeVariableResolverDirectly() throws EvaluationException {
+        FacesContext context = FacesContext.getCurrentInstance();
+        VariableResolver vr = (VariableResolver) context.getExternalContext().getApplicationMap().get("newVR");
+        return callMethodsOnVariableResolver(context, vr);
+    }
+    
+    public String getInvokeELResolverThruChain() throws EvaluationException {
+        FacesContext context = FacesContext.getCurrentInstance();
+        ELResolver er = context.getApplication().getELResolver();
+        boolean isReadOnly = er.isReadOnly(context.getELContext(), "newERThruChain", null);
+
+        return Boolean.valueOf(isReadOnly).toString();
+    }
+
+    public String getInvokeELResolverDirectly() throws EvaluationException {
+        FacesContext context = FacesContext.getCurrentInstance();
+        ELResolver er = (ELResolver) context.getExternalContext().getApplicationMap().get("newER");
+        boolean isReadOnly = er.isReadOnly(context.getELContext(), "newERDirect", null);
+
+        return Boolean.valueOf(isReadOnly).toString();
+    }
+
+    public String getInvokeVariableResolverThruChain1() throws EvaluationException {
+        FacesContext context = FacesContext.getCurrentInstance();
+        VariableResolver vr = context.getApplication().getVariableResolver();
+        Object result = vr.resolveVariable(context, "nonmanaged");
+        if (!(result instanceof TestBean)) {
+            throw new IllegalStateException("Bean not of correct type");
+        }
+        return "success";
+    }
+    
+    public String getInvokeVariableResolverDirectly1() throws EvaluationException {
+        FacesContext context = FacesContext.getCurrentInstance();
+        VariableResolver vr = (VariableResolver) context.getExternalContext().getApplicationMap().get("newVR");
+        Object result = vr.resolveVariable(context, "nonmanaged");
+        if (!(result instanceof TestBean)) {
+            throw new IllegalStateException("Bean not of correct type");
+        }
+        return "success";
+    }
+}
diff --git a/test/agnostic/replace-vr-add-er/src/main/java/com/sun/faces/test/agnostic/replace_vr_add_er/EagerApplicationScopedBean.java b/test/agnostic/replace-vr-add-er/src/main/java/com/sun/faces/test/agnostic/replace_vr_add_er/EagerApplicationScopedBean.java
new file mode 100644
index 0000000..9717e00
--- /dev/null
+++ b/test/agnostic/replace-vr-add-er/src/main/java/com/sun/faces/test/agnostic/replace_vr_add_er/EagerApplicationScopedBean.java
@@ -0,0 +1,68 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.agnostic.replace_vr_add_er;
+
+import javax.annotation.PostConstruct;
+import javax.el.ELResolver;
+import javax.faces.application.Application;
+import javax.faces.bean.ApplicationScoped;
+import javax.faces.bean.ManagedBean;
+import javax.faces.context.FacesContext;
+import javax.faces.el.VariableResolver;
+
+ at ManagedBean(eager=true)
+ at ApplicationScoped
+public class EagerApplicationScopedBean {
+
+    @PostConstruct
+    public void installProgrammaticListener() {
+        Application app = null;
+        FacesContext context = FacesContext.getCurrentInstance();
+        app = context.getApplication();
+        VariableResolver oldVr = app.getVariableResolver();
+        VariableResolver newVr = new NewVariableResolver(oldVr, context);
+        app.setVariableResolver(newVr);
+        ELResolver newER = new NewELResolver(context);
+        app.addELResolver(newER);
+
+    }
+
+}
diff --git a/test/agnostic/replace-vr-add-er/src/main/java/com/sun/faces/test/agnostic/replace_vr_add_er/NewELResolver.java b/test/agnostic/replace-vr-add-er/src/main/java/com/sun/faces/test/agnostic/replace_vr_add_er/NewELResolver.java
new file mode 100644
index 0000000..c97afbd
--- /dev/null
+++ b/test/agnostic/replace-vr-add-er/src/main/java/com/sun/faces/test/agnostic/replace_vr_add_er/NewELResolver.java
@@ -0,0 +1,115 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.agnostic.replace_vr_add_er;
+
+import java.beans.FeatureDescriptor;
+import java.util.Collections;
+import java.util.Iterator;
+import javax.el.ELContext;
+import javax.el.ELResolver;
+import javax.faces.context.FacesContext;
+import javax.servlet.ServletContext;
+
+public class NewELResolver extends ELResolver {
+
+    public NewELResolver() {
+        FacesContext.getCurrentInstance().getExternalContext().getApplicationMap().put("newER", this);
+    }
+
+    public NewELResolver(FacesContext context) {
+        context.getExternalContext().getApplicationMap().put("newER", this);
+    }
+
+
+    @Override
+    public Class<?> getCommonPropertyType(ELContext elc, Object o) {
+        return Object.class;
+    }
+
+    @Override
+    public Iterator<FeatureDescriptor> getFeatureDescriptors(ELContext elc, Object o) {
+        return Collections.EMPTY_LIST.iterator();
+    }
+
+    @Override
+    public Class<?> getType(ELContext elc, Object o, Object o1) {
+        return Object.class;
+    }
+
+    @Override
+    public Object getValue(ELContext elc, Object name, Object property) {
+        if (property.equals("traceResolution")) {
+            Bean.captureStackTrace((FacesContext)elc.getContext(FacesContext.class));
+        }
+
+        return null;
+    }
+
+    @Override
+    public boolean isReadOnly(ELContext elc, Object o, Object o1) {
+        boolean result = false;
+        FacesContext facesContext = (FacesContext) elc.getContext(FacesContext.class);
+
+        if (null != o) {
+            if (o.equals("newERDirect")) {
+                facesContext.getExternalContext().getRequestMap().put("newERDirect",
+                        "isReadOnly invoked directly");
+                elc.setPropertyResolved(true);
+                result = true;
+            } else if (o.equals("newERThruChain")) {
+                facesContext.getExternalContext().getRequestMap().put("newERThruChain",
+                        "isReadOnly invoked thru chain");
+                elc.setPropertyResolved(true);
+                result = true;
+            }
+
+        }
+        return result;
+    }
+
+    @Override
+    public void setValue(ELContext elc, Object o, Object o1, Object o2) {
+        
+    }
+
+
+
+}
diff --git a/test/agnostic/replace-vr-add-er/src/main/java/com/sun/faces/test/agnostic/replace_vr_add_er/NewVariableResolver.java b/test/agnostic/replace-vr-add-er/src/main/java/com/sun/faces/test/agnostic/replace_vr_add_er/NewVariableResolver.java
new file mode 100644
index 0000000..f2bc754
--- /dev/null
+++ b/test/agnostic/replace-vr-add-er/src/main/java/com/sun/faces/test/agnostic/replace_vr_add_er/NewVariableResolver.java
@@ -0,0 +1,123 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+/*
+ * NewVariableResolver.java
+ *
+ * Created on April 29, 2006, 1:50 PM
+ *
+ * To change this template, choose Tools | Template Manager
+ * and open the template in the editor.
+ */
+
+package com.sun.faces.test.agnostic.replace_vr_add_er;
+
+import com.sun.faces.util.Util;
+import javax.faces.context.FacesContext;
+import javax.faces.el.EvaluationException;
+import javax.faces.el.VariableResolver;
+import javax.servlet.ServletContext;
+
+/**
+ *
+ * @author edburns
+ */
+public class NewVariableResolver extends VariableResolver {
+    
+    private VariableResolver original = null;
+    
+    /** Creates a new instance of NewVariableResolver */
+    public NewVariableResolver(VariableResolver original) {
+        this.original = original;
+        
+        FacesContext.getCurrentInstance().getExternalContext().getApplicationMap().put("newVR", this);
+    }
+
+    public NewVariableResolver(VariableResolver original, FacesContext context) {
+        this.original = original;
+
+        context.getExternalContext().getApplicationMap().put("newVR", this);
+    }
+
+    public Object resolveVariable(FacesContext context, String name) throws EvaluationException {
+        Object result = null;
+        
+        // This expects a plain old bean that is not configured as a Faces
+        // managed bean.  However, an additional check is done to make sure
+        // that is not configured as a managed bean.  So, we've resolved 
+        // the name as a "non" managed bean, but want to do some additional
+        // checks to make sure that name does not also resolve to a 
+        // managed bean. 
+        //  
+        if (name.equals("nonmanaged")) {
+            Object bean = null;
+            Object managedBean = null;             
+            try {
+                Class clazz = Util.loadClass("com.sun.faces.systest.model.TestBean", context);
+                bean = clazz.newInstance();
+            } catch (Exception e) {
+            } 
+            managedBean = original.resolveVariable(context, name); 
+            if (bean == null) {
+                if (managedBean==null) {
+                    return null;
+                } else {
+                    result = managedBean;
+                }
+            } else {
+                result = bean;
+            }
+            return result;
+        }
+        if (name.equals("traceResolution")) {
+            Bean.captureStackTrace(context);
+        }
+
+        if (name.equals("custom")) {
+            result = "custom";
+        }
+        else {
+            result = original.resolveVariable(context, name);
+        }
+        
+        return result;
+    }
+    
+}
diff --git a/test/agnostic/replace-vr-add-er/src/main/java/com/sun/faces/test/agnostic/replace_vr_add_er/SpecialBean.java b/test/agnostic/replace-vr-add-er/src/main/java/com/sun/faces/test/agnostic/replace_vr_add_er/SpecialBean.java
new file mode 100644
index 0000000..5d9fb2b
--- /dev/null
+++ b/test/agnostic/replace-vr-add-er/src/main/java/com/sun/faces/test/agnostic/replace_vr_add_er/SpecialBean.java
@@ -0,0 +1,62 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.agnostic.replace_vr_add_er;
+public class SpecialBean {
+
+        private final String special;
+
+        public SpecialBean(String specialValue) {
+            special = specialValue;
+        }
+
+        public String getString() {
+            return special;
+        }
+
+        public boolean equals(Object target) {
+           if (!(target instanceof SpecialBean)) {
+              return false;
+           } else {
+           return (special.equals(((SpecialBean) target).getString()));
+           }
+        }
+    }
+
diff --git a/test/agnostic/replace-vr-add-er/src/main/java/com/sun/faces/test/agnostic/replace_vr_add_er/TestBean.java b/test/agnostic/replace-vr-add-er/src/main/java/com/sun/faces/test/agnostic/replace_vr_add_er/TestBean.java
new file mode 100644
index 0000000..37ca448
--- /dev/null
+++ b/test/agnostic/replace-vr-add-er/src/main/java/com/sun/faces/test/agnostic/replace_vr_add_er/TestBean.java
@@ -0,0 +1,1011 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.agnostic.replace_vr_add_er;
+
+import java.beans.FeatureDescriptor;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Random;
+import java.util.ResourceBundle;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
+import javax.el.ELContext;
+import javax.el.ELResolver;
+import javax.faces.FactoryFinder;
+import javax.faces.application.Application;
+import javax.faces.component.UIComponent;
+import javax.faces.component.UIInput;
+import javax.faces.component.UINamingContainer;
+import javax.faces.component.html.HtmlCommandButton;
+import javax.faces.component.html.HtmlOutputText;
+import javax.faces.context.ExternalContext;
+import javax.faces.context.FacesContext;
+import javax.faces.el.EvaluationException;
+import javax.faces.el.PropertyNotFoundException;
+import javax.faces.el.PropertyResolver;
+import javax.faces.event.AbortProcessingException;
+import javax.faces.event.ActionEvent;
+import javax.faces.event.SystemEvent;
+import javax.faces.event.SystemEventListener;
+import javax.faces.event.SystemEventListenerHolder;
+import javax.faces.event.ValueChangeEvent;
+import javax.faces.model.SelectItem;
+import javax.servlet.ServletContext;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpSession;
+
+/**
+ * <p>Test JavaBean for managed object creation facility.</p>
+ */
+public class TestBean implements SystemEventListenerHolder {
+
+    public List<SystemEventListener> getListenersForEventClass(Class<? extends SystemEvent> arg0) {
+        return Collections.EMPTY_LIST;
+    }
+    
+public enum Suit { Hearts, Clubs, Diamonds, Spades }
+public enum Color { Red, Blue, Green, Orange }
+
+    private Random random;
+    private ArrayList newList1= new ArrayList();
+    private ArrayList newList2= new ArrayList();
+    private ArrayList oneElementList;
+    private List newList3 = new ArrayList();
+
+    ServletContext servletContext = null;
+    
+    public Suit returnSpades() {
+        return Suit.Spades;
+    }
+    
+    public Suit returnDiamonds() {
+        return Suit.Diamonds;
+    }
+
+    public TestBean() {
+    random = new Random(4143);
+        FacesContext context = FacesContext.getCurrentInstance();
+        ExternalContext extContext = (null != context) ? context.getExternalContext() : null;
+        servletContext = (null != extContext) ? (ServletContext) extContext.getContext() : null;
+        oneElementList = new ArrayList<String>(1);
+        oneElementList.add("hello");
+    }
+
+
+    private boolean booleanProperty = true;
+
+
+    public boolean getBooleanProperty() {
+        return (this.booleanProperty);
+    }
+
+
+    public void setBooleanProperty(boolean booleanProperty) {
+        this.booleanProperty = booleanProperty;
+    }
+
+    private boolean booleanProperty2 = false;
+    public boolean getBooleanProperty2() {
+    return booleanProperty2;
+    }
+
+    public void setBooleanProperty2(boolean newBooleanProperty2) {
+    booleanProperty2 = newBooleanProperty2;
+    }
+
+    protected String successOutcome = "/success.xhtml";
+
+    public String getSuccessOutcome() {
+        return successOutcome;
+    }
+
+    public void setSuccessOutcome(String successOutcome) {
+        this.successOutcome = successOutcome;
+    }
+    protected String failureOutcome = "/failure.xhtml";
+
+    public String getFailureOutcome() {
+        return failureOutcome;
+    }
+
+    public void setFailureOutcome(String failureOutcome) {
+        this.failureOutcome = failureOutcome;
+    }
+
+
+
+    private byte byteProperty = 12;
+
+
+    public byte getByteProperty() {
+        return (this.byteProperty);
+    }
+
+
+    public void setByteProperty(byte byteProperty) {
+        this.byteProperty = byteProperty;
+    }
+
+
+    private double doubleProperty = 123.45;
+
+
+    public double getDoubleProperty() {
+        return (this.doubleProperty);
+    }
+
+
+    public void setDoubleProperty(double doubleProperty) {
+        this.doubleProperty = doubleProperty;
+    }
+
+
+    private float floatProperty = (float) 12.34;
+
+
+    public float getFloatProperty() {
+        return (this.floatProperty);
+    }
+
+
+    public void setFloatProperty(float floatProperty) {
+        this.floatProperty = floatProperty;
+    }
+
+
+    private int intProperty = 123;
+
+
+    public int getIntProperty() {
+        return (this.intProperty);
+    }
+
+
+    public void setIntProperty(int intProperty) {
+        this.intProperty = intProperty;
+    }
+
+    private int[] intsProperty = {5, 6, 7};
+
+    public int[] getIntsProperty() {
+        return (this.intsProperty);
+    }
+
+    public void setIntsProperty(int[] intsProperty) {
+        this.intsProperty = intsProperty;
+    }
+
+    private long longProperty = 12345;
+
+
+    public long getLongProperty() {
+        return (this.longProperty);
+    }
+
+
+    public void setLongProperty(long longProperty) {
+        this.longProperty = longProperty;
+    }
+
+
+    private short shortProperty = 1234;
+
+
+    public short getShortProperty() {
+        return (this.shortProperty);
+    }
+
+
+    public void setShortProperty(short shortProperty) {
+        this.shortProperty = shortProperty;
+    }
+
+
+    private String stringProperty = "This is a String property";
+
+
+    public String getStringProperty() {
+        return (this.stringProperty);
+    }
+
+
+    public void setStringProperty(String stringProperty) {
+        this.stringProperty = stringProperty;
+    }
+
+
+    private UIInput userName = null;
+
+
+    public UIInput getUserName() {
+        return (this.userName);
+    }
+
+
+    public void setUserName(UIInput userName) {
+        this.userName = userName;
+    }
+
+    private String renderKitInfo = null;
+    public String getRenderKitInfo() {
+        renderKitInfo = FacesContext.getCurrentInstance().
+            getViewRoot().getRenderKitId();
+        return renderKitInfo;
+    }
+    public void setRenderKitInfo(String renderKitInfo) {
+        this.renderKitInfo = renderKitInfo;
+    }
+    private String responseWriterInfo = null;
+    public String getResponseWriterInfo() {
+        FacesContext context = FacesContext.getCurrentInstance();
+        if (null != context) {
+            Object responseWriter = context.getResponseWriter();
+            if (null != responseWriter) {
+                responseWriterInfo = responseWriter.getClass().getName();
+            }
+        }
+        return responseWriterInfo;
+    }
+    public void setResponseWriterInfo(String responseWriterInfo) {
+        this.responseWriterInfo = responseWriterInfo;
+    }
+
+    private Object bean = null;
+
+
+    public Object getBean() {
+        return (this.bean);
+    }
+
+
+    public void setBean(Object bean) {
+        this.bean = bean;
+    }
+
+    public List selectList = null;
+
+    public List getSelectList() {
+    if (null == selectList) {
+        selectList = new ArrayList();
+        selectList.add(new SelectItem("one", "one", "one"));
+        selectList.add(new SelectItem("two", "two", "two"));
+        selectList.add(new SelectItem("three", "three", "three"));
+    }
+    return selectList;
+    }
+
+    public void setSelectList(List newSelectList) {
+    selectList = newSelectList;
+    }
+
+    protected String selection = null;
+
+    public String getSelection() {
+    return selection;
+    }
+
+    public void setSelection(String newSelection) {
+    selection = newSelection;
+    }
+
+    protected String [] multiSelection;
+    public String [] getMultiSelection() {
+    return multiSelection;
+    }
+
+    public void setMultiSelection(String [] newMultiSelection) {
+    multiSelection = newMultiSelection;
+    }
+    
+    public Object getNullProperty() {
+        return null;
+    }
+
+    public ArrayList getOneElementList() {
+        return oneElementList;
+    }
+
+    public void setOneElementList(ArrayList oneElementList) {
+        this.oneElementList = oneElementList;
+    }
+
+    public void valueChanged(ValueChangeEvent event)
+        throws AbortProcessingException {
+    String [] values = (String []) event.getNewValue();
+    if (null == values) {
+        valueChangeMessage = "";
+    }
+    else {
+        valueChangeMessage = "value changed, new values: ";
+        for (int i = 0; i < values.length; i++) {
+        valueChangeMessage = valueChangeMessage + " " + values[i];
+        }
+    }
+    }
+
+    protected String valueChangeMessage;
+    public String getValueChangeMessage() {
+    return valueChangeMessage;
+    }
+
+    public void setValueChangeMessage(String newValueChangeMessage) {
+    valueChangeMessage = newValueChangeMessage;
+    }
+
+    public List getNondeterministicSelectList() {
+    ArrayList list = new ArrayList(3);
+    String str = new String((new Float(random.nextFloat())).toString());
+    list.add(new SelectItem(str, str, str));
+    str = new String((new Float(random.nextFloat())).toString());
+    list.add(new SelectItem(str, str, str));
+    str = new String((new Float(random.nextFloat())).toString());
+    list.add(new SelectItem(str, str, str));
+    return list;
+    }
+
+    public void setNondeterministicSelectList(List newNondeterministicSelectList) {
+    }
+
+    public void addComponentToTree(ActionEvent action) {
+    HtmlOutputText output = new HtmlOutputText();
+    output.setValue("<p>==new output==</p>");
+    output.setEscape(false);
+
+    FacesContext ctx = FacesContext.getCurrentInstance();
+    UIComponent group = ctx.getViewRoot().findComponent("form" + UINamingContainer.getSeparatorChar(ctx) +  "addHere");
+    group.getChildren().add(output);
+
+    }
+
+    /*
+     * replace the propertyResolver with one that does our bidding for
+     * this test.
+     */
+
+    public void replacePropertyResolver(ActionEvent action) {
+    FacesContext context = FacesContext.getCurrentInstance();
+    Application app = context.getApplication();
+
+    // see if we need to take action-
+    if (null == context.getExternalContext().getSessionMap().get("systest.replacePropertyResolver")) {
+        final PropertyResolver oldProp = app.getPropertyResolver();
+        PropertyResolver
+        newProp = new PropertyResolver() {
+            public Object getValue(Object base, Object property)
+            throws EvaluationException, PropertyNotFoundException {
+            return oldProp.getValue(base, property);
+            }
+
+            public Object getValue(Object base, int index)
+            throws EvaluationException, PropertyNotFoundException {
+            return oldProp.getValue(base, index);
+            }
+
+            public void setValue(Object base, Object property, Object value)
+            throws EvaluationException, PropertyNotFoundException {
+            TestBean.this.setValueChangeMessage("setValue() called");
+            oldProp.setValue(base, property, value);
+            }
+
+            public void setValue(Object base, int index, Object value)
+            throws EvaluationException, PropertyNotFoundException {
+            TestBean.this.setValueChangeMessage("setValue() called");
+            oldProp.setValue(base, index, value);
+            }
+
+            public boolean isReadOnly(Object base, Object property)
+            throws EvaluationException, PropertyNotFoundException {
+            return oldProp.isReadOnly(base, property);
+            }
+
+            public boolean isReadOnly(Object base, int index)
+            throws EvaluationException, PropertyNotFoundException {
+            return oldProp.isReadOnly(base, index);
+            }
+
+            public Class getType(Object base, Object property)
+            throws EvaluationException, PropertyNotFoundException {
+            return oldProp.getType(base, property);
+            }
+
+            public Class getType(Object base, int index)
+            throws EvaluationException, PropertyNotFoundException {
+            return oldProp.getType(base, index);
+            }
+
+        };
+        app.setPropertyResolver(newProp);
+        context.getExternalContext().getSessionMap().put("systest.replacePropertyResolver", oldProp);
+    }
+    }
+
+
+
+    /*
+     * restore the original PropertyResolver.
+     */
+
+    public void restorePropertyResolver(ActionEvent action) {
+    FacesContext context = FacesContext.getCurrentInstance();
+    Application app = context.getApplication();
+    PropertyResolver oldProp = null;
+
+    // see if we need to take action-
+    if (null != (oldProp = (PropertyResolver) context.getExternalContext().getSessionMap().get("systest.replacePropertyResolver"))) {
+        app.setPropertyResolver(oldProp);
+        context.getExternalContext().getSessionMap().remove("systest.replacePropertyResolver");
+        setValueChangeMessage(null);
+
+    }
+    }
+
+    protected HtmlCommandButton boundButton = new HtmlCommandButton();
+    public HtmlCommandButton getBoundButton() {
+    if (null != boundButton) {
+        boundButton.setValue("button label");
+    }
+    return boundButton;
+    }
+
+    public void setBoundButton(HtmlCommandButton newBoundButton) {
+    boundButton = newBoundButton;
+    }
+
+    public String getFactoryPrintout() {
+        String result = "";
+        String[] factoryNames = {
+              FactoryFinder.APPLICATION_FACTORY,
+              FactoryFinder.FACES_CONTEXT_FACTORY,
+              FactoryFinder.LIFECYCLE_FACTORY,
+              FactoryFinder.RENDER_KIT_FACTORY
+        };
+        for (int i = 0; i < factoryNames.length; i++) {
+            String tmp = FactoryFinder.getFactory(factoryNames[i]).toString();
+            if (tmp.startsWith("com.sun.faces")) {
+                int idx = tmp.lastIndexOf('.');
+                tmp = tmp.substring(idx + 1);
+                idx = tmp.indexOf('@');
+                tmp = tmp.substring(0, idx);
+                result += tmp + ' ';
+            } else {
+                result += FactoryFinder.getFactory(factoryNames[i]).toString()
+                          + ' ';
+            }
+        }
+        return result;
+    }
+
+    /**
+     * Holds value of property setPropertyTarget.
+     */
+    private String setPropertyTarget = "default value";
+
+    /**
+     * Getter for property setPropertyTarget.
+     * @return Value of property setPropertyTarget.
+     */
+    public String getSetPropertyTarget() {
+
+        return this.setPropertyTarget;
+    }
+
+    /**
+     * Setter for property setPropertyTarget.
+     * @param setPropertyTarget New value of property setPropertyTarget.
+     */
+    public void setSetPropertyTarget(String setPropertyTarget) {
+
+        this.setPropertyTarget = setPropertyTarget;
+    }
+
+    /**
+     * Holds value of property counter.
+     */
+    private String counter = "0";
+    private int counterInt = 0;
+
+    /**
+     * Getter for property counter.
+     * @return Value of property counter.
+     */
+    public String getCounter() {
+        counter = Integer.valueOf(counterInt++).toString();
+        return counter;
+    }
+
+    /**
+     * Holds value of property validatorMessage.
+     */
+    private String validatorMessage = "Validator Message Expression";
+
+    /**
+     * Getter for property validatorMessage.
+     * @return Value of property validatorMessage.
+     */
+    public String getValidatorMessage() {
+
+        return this.validatorMessage;
+    }
+
+    /**
+     * Holds value of property converterMessage.
+     */
+    private String converterMessage = "Converter Message Expression";
+
+    /**
+     * Getter for property converterMessage.
+     * @return Value of property converterMessage.
+     */
+    public String getConverterMessage() {
+
+        return this.converterMessage;
+    }
+
+    public ArrayList getNewList1() {
+        return newList1;
+    }
+
+    public ArrayList getNewList2() {
+        return newList2;
+    }
+
+   public void valueChange1(ValueChangeEvent vce) {
+        String newValue = vce.getNewValue().toString();
+        if (newList1.size() == 3){
+            newList1.clear();
+        }
+        newList1.add(newValue);
+   }
+   
+   public void valueChange0() {
+       FacesContext.getCurrentInstance().getExternalContext().getRequestMap().put("valueChange0Called", 
+               "true");
+   }
+   
+    public void actionListener0() {
+       FacesContext.getCurrentInstance().getExternalContext().getRequestMap().put("actionListener0Called", 
+               "true");
+   }
+
+
+   public void valueChange2(ValueChangeEvent vce) {
+        String newValue = vce.getNewValue().toString();
+        if (newList2.size() == 3){
+            newList2.clear();
+        }
+        newList2.add(newValue);
+   }
+
+    private Integer selectedValue = new Integer(2);
+
+    public Integer getSelectedValue() {
+        return selectedValue;
+    }
+
+    public void setSelectedValue(Integer selectedValue) {
+        this.selectedValue = selectedValue;
+    }
+
+    public SelectItem[] getMySelectItems(){
+        return new SelectItem[]{
+            new SelectItem(new Integer(1),"1"),
+            new SelectItem(new Integer(2),"2"),
+            new SelectItem(new Integer(3),"3")
+        };
+    }
+
+    private int intVal = 3;
+    public int getInt() {
+        return intVal;
+    }
+
+
+    public void setInt(int newIntVal) {
+        intVal = newIntVal;
+    }
+
+
+    @PostConstruct
+    public void postConstruct() {
+        setPostConstructCalled(true);
+        FacesContext context = FacesContext.getCurrentInstance();
+        context.getApplication().publishEvent(context, TestBeanPostConstructEvent.class, this);
+    }
+
+    @PreDestroy
+    public void preDestroy() {
+        setPreDestroyCalled(true);
+        FacesContext context = FacesContext.getCurrentInstance();
+        if (null != context) {
+            context.getApplication().publishEvent(context, TestBeanPreDestroyEvent.class, this);
+        }
+    }
+
+    /**
+     * Holds value of property postConstructCalled.
+     */
+    private boolean postConstructCalled  = false;
+
+    /**
+     * Getter for property postConstructCalled.
+     * @return Value of property postConstructCalled.
+     */
+    public boolean isPostConstructCalled() {
+
+        return this.postConstructCalled;
+    }
+
+    /**
+     * Setter for property postConstructCalled.
+     * @param postConstructCalled New value of property postConstructCalled.
+     */
+    public void setPostConstructCalled(boolean postConstructCalled) {
+
+        this.postConstructCalled = postConstructCalled;
+        appendStatusMessage("bean: " + getStringProperty() +
+                            " postConstructCalled: " + postConstructCalled);
+
+    }
+
+    /**
+     * Holds value of property preDestroyCalled.
+     */
+    private boolean preDestroyCalled  = false;
+
+    /**
+     * Getter for property preDestroyCalled.
+     * @return Value of property preDestroyCalled.
+     */
+    public boolean isPreDestroyCalled() {
+
+        return this.preDestroyCalled;
+    }
+
+    /**
+     * Setter for property preDestroyCalled.
+     * @param preDestroyCalled New value of property preDestroyCalled.
+     */
+    public void setPreDestroyCalled(boolean preDestroyCalled) {
+        this.preDestroyCalled = preDestroyCalled;
+        appendStatusMessage("bean: " + getStringProperty() +
+                            " preDestroyCalled: " + preDestroyCalled);
+    }
+
+    public String invalidateSession() {
+        ((HttpSession)FacesContext.getCurrentInstance().getExternalContext().getSession(true)).invalidate();
+        return null;
+    }
+
+    public String removeRequestBean() {
+        FacesContext.getCurrentInstance().getExternalContext().getRequestMap().remove("requestBean");
+        return null;
+    }
+
+    public String removeRequestBean2() {
+        HttpServletRequest request = (HttpServletRequest)
+              FacesContext.getCurrentInstance().getExternalContext().getRequest();
+        request.removeAttribute("requestBean");
+        return null;
+    }
+
+    public String replaceRequestBean() {
+        HttpServletRequest request = (HttpServletRequest)
+            FacesContext.getCurrentInstance().getExternalContext().getRequest();
+        request.setAttribute("requestBean", new TestBean());
+        return null;
+    }
+
+    public String replaceRequestBean2() {
+        HttpServletRequest request = (HttpServletRequest)
+            FacesContext.getCurrentInstance().getExternalContext().getRequest();
+        Object oldValue = request.getAttribute("requestBean");
+        request.setAttribute("requestBean", oldValue);
+        return null;
+    }
+
+    public String removeSessionBean() {
+        FacesContext.getCurrentInstance().getExternalContext().getSessionMap().remove("sessionBean");
+        return null;
+    }
+
+    public String removeSessionBean2() {
+        HttpSession request = (HttpSession)
+              FacesContext.getCurrentInstance().getExternalContext().getSession(true);
+        request.removeAttribute("sessionBean");
+        return null;
+    }
+
+    public String replaceSessionBean() {
+        HttpSession session = (HttpSession)
+            FacesContext.getCurrentInstance().getExternalContext().getSession(true);
+        session.setAttribute("sessionBean", new TestBean());
+        return null;
+    }
+
+    public String replaceSessionBean2() {
+        HttpSession session = (HttpSession)
+            FacesContext.getCurrentInstance().getExternalContext().getSession(true);
+        Object oldValue = session.getAttribute("sessionBean");
+        session.setAttribute("sessionBean", oldValue);
+        return null;
+    }
+
+    public String removeApplicationBean() {
+        FacesContext.getCurrentInstance().getExternalContext().getApplicationMap().remove("applicationBean");
+        return null;
+    }
+
+    public String removeApplicationBean2() {
+        ServletContext request = (ServletContext)
+              FacesContext.getCurrentInstance().getExternalContext().getContext();
+        request.removeAttribute("applicationBean");
+        return null;
+    }
+
+    public String replaceApplicationBean() {
+        ServletContext application = (ServletContext)
+            FacesContext.getCurrentInstance().getExternalContext().getContext();
+        application.setAttribute("applicationBean", new TestBean());
+        return null;
+    }
+
+    public String replaceApplicationBean2() {
+        ServletContext application = (ServletContext)
+            FacesContext.getCurrentInstance().getExternalContext().getContext();
+        Object oldValue = application.getAttribute("applicationBean");
+        application.setAttribute("applicationBean", oldValue);
+        return null;
+    }
+
+    public String clearRequestMap() {
+        FacesContext.getCurrentInstance().getExternalContext().getRequestMap().clear();
+        return null;
+    }
+
+    public String clearRequestMapTwice() {
+        clearRequestMap();
+        clearRequestMap();
+        return null;
+    }
+
+    public String clearSessionMap() {
+        FacesContext.getCurrentInstance().getExternalContext().getSessionMap().clear();
+        return null;
+    }
+
+    public String clearSessionMapTwice() {
+        clearSessionMap();
+        clearSessionMap();
+        return null;
+    }
+
+    public void appendStatusMessage(String message) {
+        if (null == servletContext) {
+            return;
+        }
+        String oldMessage = (String) servletContext.getAttribute("previousRequestStatus");
+        oldMessage = (null != oldMessage) ? oldMessage + "\n": "";
+        message = (null != message) ? message : "";
+        oldMessage = oldMessage + message;
+        servletContext.setAttribute("previousRequestStatus", oldMessage);
+
+    }
+
+    public String getAppendRequestMarker() {
+        appendStatusMessage("-----------------");
+        return "";
+    }
+
+    public String clearStatusMessage() {
+        if (null != servletContext) {
+            servletContext.removeAttribute("previousRequestStatus");
+        }
+        return null;
+    }
+    
+    public Map getSelectItems() {
+        Map<String,SpecialBean> map = new HashMap<String,SpecialBean>();
+        map.put("key1", new SpecialBean("value1"));
+        map.put("key2", new SpecialBean("value2"));
+        map.put("key3", new SpecialBean("value3"));
+        return map;        
+    }
+    
+    private SpecialBean special;
+    public void setSpecialModel(SpecialBean special) {
+        this.special = special;        
+    }
+    
+    public SpecialBean getSpecialModel() {
+        return special;
+    }
+
+    /**
+     * Holds value of property suit.
+     */
+    private Suit suit;
+
+    /**
+     * Getter for property suit.
+     * @return Value of property suit.
+     */
+    public Suit getSuit() {
+        return this.suit;
+    }
+
+    /**
+     * Setter for property suit.
+     * @param suit New value of property suit.
+     */
+    public void setSuit(Suit suit) {
+        this.suit = suit;
+    }
+
+    /**
+     * Holds value of property referencedSuit.
+     */
+    private Suit referencedSuit;
+
+    /**
+     * Getter for property referencedSuit.
+     * @return Value of property referencedSuit.
+     */
+    public Suit getReferencedSuit() {
+        return this.referencedSuit;
+    }
+
+    // taken from TCK facesResourceBundleResolverGetTypeTest
+    public String getResourceBundleType() {
+        FacesContext context = FacesContext.getCurrentInstance();
+        ELContext elContext = context.getELContext();
+        ELResolver elResolver = elContext.getELResolver();
+        Class type = elResolver.getType(elContext, null, "resourceBundle03");
+
+        return type.toString();
+    }
+
+    // taken from TCK facesResourceBundleResolverFeatureDescriptorTest
+    public String getFeatureDescriptorCorrectness() {
+        StringBuilder builder = new StringBuilder();
+
+        ELContext elContext = FacesContext.getCurrentInstance().getELContext();
+        ELResolver resolver = elContext.getELResolver();
+        boolean fd_Found = false;
+
+        // Setup golden FeatureDescriptor.
+        FeatureDescriptor controlDesc = new FeatureDescriptor();
+        controlDesc.setValue("resolvable", Boolean.TRUE);
+        controlDesc.setValue("type", ResourceBundle.class);
+        controlDesc.setName("resourceBundle03");
+        controlDesc.setDisplayName("simple");
+        controlDesc.setExpert(false);
+        controlDesc.setHidden(false);
+        controlDesc.setPreferred(true);
+        controlDesc.setShortDescription("");
+
+        builder.append("<h1>getFeatureDescriptors output</h1>\n");
+        for (Iterator i = resolver.getFeatureDescriptors(elContext, null);
+                i.hasNext();) {
+            FeatureDescriptor test = (FeatureDescriptor) i.next();
+            builder.append("<p>Name: ").append(test.getName()).
+                    append(" displayName: ").append(test.getDisplayName()).
+                    append("</p>\n");
+        }
+
+        return builder.toString();
+    }
+
+    /**
+     * Setter for property referencedSuit.
+     * @param referencedSuit New value of property referencedSuit.
+     */
+    public void setReferencedSuit(Suit referencedSuit) {
+        this.referencedSuit = referencedSuit;
+    }
+
+    /**
+     * Holds value of property color.
+     */
+    private Color color;
+
+    /**
+     * Getter for property color.
+     * @return Value of property color.
+     */
+    public Color getColor() {
+        return this.color;
+    }
+
+    /**
+     * Setter for property color.
+     * @param color New value of property color.
+     */
+    public void setColor(Color color) {
+        this.color = color;
+    }
+
+    public String emptyStringAction() {
+        return null;
+    }
+
+    public String getIsCompositeComponentValue() {
+        String result = null;
+
+        UIComponent currentComposite = UIComponent.getCurrentCompositeComponent(FacesContext.getCurrentInstance());
+        result = "" + UIComponent.isCompositeComponent(currentComposite);
+
+        return result;
+    }
+
+    public String getCurrentTimeMillis() {
+        return "" + System.currentTimeMillis();
+    }
+
+    private Integer idcounter = new Integer(0);
+ 
+    public List getNewList3() {
+        return newList3;
+    }
+
+    public void setNewList3(List newList3) {
+        this.newList3 = newList3;
+    }
+
+    public String addNewLineBeginning() {
+        newList3.add(0, "ID" + idcounter.toString());
+        idcounter++;
+        return null;
+    }
+
+    public String addNewLineEnd() {
+        newList3.add("ID" + idcounter.toString());
+        idcounter++;
+        return null;
+    }
+
+
+
+}
diff --git a/test/agnostic/replace-vr-add-er/src/main/java/com/sun/faces/test/agnostic/replace_vr_add_er/TestBeanEventClass.java b/test/agnostic/replace-vr-add-er/src/main/java/com/sun/faces/test/agnostic/replace_vr_add_er/TestBeanEventClass.java
new file mode 100644
index 0000000..4f0d336
--- /dev/null
+++ b/test/agnostic/replace-vr-add-er/src/main/java/com/sun/faces/test/agnostic/replace_vr_add_er/TestBeanEventClass.java
@@ -0,0 +1,56 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.agnostic.replace_vr_add_er;
+
+import javax.faces.event.SystemEvent;
+
+/**
+ *
+ * @author edburns
+ */
+public class TestBeanEventClass extends SystemEvent {
+    private static final long serialVersionUID = 9094883372644090191L;
+
+    public TestBeanEventClass(TestBean source) {
+        super(source);
+    }
+
+}
diff --git a/test/agnostic/replace-vr-add-er/src/main/java/com/sun/faces/test/agnostic/replace_vr_add_er/TestBeanPostConstructEvent.java b/test/agnostic/replace-vr-add-er/src/main/java/com/sun/faces/test/agnostic/replace_vr_add_er/TestBeanPostConstructEvent.java
new file mode 100644
index 0000000..f446382
--- /dev/null
+++ b/test/agnostic/replace-vr-add-er/src/main/java/com/sun/faces/test/agnostic/replace_vr_add_er/TestBeanPostConstructEvent.java
@@ -0,0 +1,54 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.agnostic.replace_vr_add_er;
+
+/**
+ *
+ * @author edburns
+ */
+public class TestBeanPostConstructEvent extends TestBeanEventClass {
+
+    public TestBeanPostConstructEvent(TestBean source) {
+        super(source);
+    }
+    
+
+}
diff --git a/test/agnostic/replace-vr-add-er/src/main/java/com/sun/faces/test/agnostic/replace_vr_add_er/TestBeanPreDestroyEvent.java b/test/agnostic/replace-vr-add-er/src/main/java/com/sun/faces/test/agnostic/replace_vr_add_er/TestBeanPreDestroyEvent.java
new file mode 100644
index 0000000..9d7dd7f
--- /dev/null
+++ b/test/agnostic/replace-vr-add-er/src/main/java/com/sun/faces/test/agnostic/replace_vr_add_er/TestBeanPreDestroyEvent.java
@@ -0,0 +1,52 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.agnostic.replace_vr_add_er;
+
+
+public class TestBeanPreDestroyEvent extends TestBeanEventClass {
+    private static final long serialVersionUID = -732534303887158542L;
+
+    public TestBeanPreDestroyEvent(TestBean source) {
+        super(source);
+    }
+    
+
+}
diff --git a/test/agnostic/replace-vr-add-er/src/main/webapp/WEB-INF/faces-config.xml b/test/agnostic/replace-vr-add-er/src/main/webapp/WEB-INF/faces-config.xml
new file mode 100644
index 0000000..2a8fc00
--- /dev/null
+++ b/test/agnostic/replace-vr-add-er/src/main/webapp/WEB-INF/faces-config.xml
@@ -0,0 +1,65 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
+    version="2.0">
+
+  <managed-bean>
+    <managed-bean-name>noneBean</managed-bean-name>
+    <managed-bean-class>
+      com.sun.faces.test.agnostic.replace_vr_add_er.TestBean
+    </managed-bean-class>
+    <managed-bean-scope>none</managed-bean-scope>
+  </managed-bean>
+
+  <managed-bean>
+    <managed-bean-name>requestBean</managed-bean-name>
+    <managed-bean-class>
+      com.sun.faces.test.agnostic.replace_vr_add_er.Bean
+    </managed-bean-class>
+    <managed-bean-scope>request</managed-bean-scope>
+  </managed-bean>
+
+</faces-config>
diff --git a/test/agnostic/replace-vr-add-er/src/main/webapp/WEB-INF/glassfish-web.xml b/test/agnostic/replace-vr-add-er/src/main/webapp/WEB-INF/glassfish-web.xml
new file mode 100644
index 0000000..8a802e4
--- /dev/null
+++ b/test/agnostic/replace-vr-add-er/src/main/webapp/WEB-INF/glassfish-web.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
+<glassfish-web-app error-url="">
+  <context-root>/test-agnostic-replace-vr-add-er</context-root>
+  <class-loader delegate="true"/>
+  <jsp-config>
+    <property name="keepgenerated" value="true">
+      <description>Keep a copy of the generated servlet class' java code.</description>
+    </property>
+  </jsp-config>
+</glassfish-web-app>
diff --git a/test/agnostic/replace-vr-add-er/src/main/webapp/WEB-INF/web.xml b/test/agnostic/replace-vr-add-er/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..ef01e1e
--- /dev/null
+++ b/test/agnostic/replace-vr-add-er/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>${webapp.projectStage}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
+        <param-value>${webapp.partialStateSaving}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>${webapp.stateSavingMethod}</param-value>
+    </context-param>
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <welcome-file-list>
+        <welcome-file>faces/test.jsp</welcome-file>
+    </welcome-file-list>
+</web-app>
diff --git a/test/agnostic/replace-vr-add-er/src/main/webapp/test.jsp b/test/agnostic/replace-vr-add-er/src/main/webapp/test.jsp
new file mode 100644
index 0000000..406488d
--- /dev/null
+++ b/test/agnostic/replace-vr-add-er/src/main/webapp/test.jsp
@@ -0,0 +1,84 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+  <head>
+    <title>test</title>
+    <%@ taglib uri="http://java.sun.com/jsf/core"  prefix="f" %>
+    <%@ taglib uri="http://java.sun.com/jsf/html"  prefix="h" %>
+    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+  </head>
+
+  <body>
+    <h1>test</h1>
+
+<f:view>
+
+    <h:form prependId="false">
+
+    <p>Invoking the variable resolver chain: <h:outputText value="#{requestBean.invokeVariableResolverThruChain}" />.</p>
+    
+    <p>Invoking the variable resolver directly: <h:outputText value="#{requestBean.invokeVariableResolverDirectly}" />.</p>
+
+    <p>Invoking the EL resolver directly: <h:outputText value="#{requestBean.invokeELResolverDirectly}" />.</p>
+
+    <p>result: <h:outputText value="#{requestScope['newERDirect']}" />.</p>
+
+    <p>Invoking the EL resolver via chain: <h:outputText value="#{requestBean.invokeELResolverThruChain}" />.</p>
+
+    <p>result: <h:outputText value="#{requestScope['newERThruChain']}" />.</p>
+
+    <p><h:commandButton id="reload" value="reload" actionListener="#{requestBean.verifyELResolverChainIsCorrectlyConfigured}" /> </p>
+
+    <p>StackTrace from el resolution: </p>
+    <h:outputText escape="false" value="#{requestScope['message']}" />
+
+  </h:form>
+
+</f:view>
+
+    <hr>
+  </body>
+</html>
diff --git a/test/agnostic/replace-vr-add-er/src/main/webapp/test1.jsp b/test/agnostic/replace-vr-add-er/src/main/webapp/test1.jsp
new file mode 100644
index 0000000..266a91d
--- /dev/null
+++ b/test/agnostic/replace-vr-add-er/src/main/webapp/test1.jsp
@@ -0,0 +1,70 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+  <head>
+    <title>test</title>
+    <%@ taglib uri="http://java.sun.com/jsf/core"  prefix="f" %>
+    <%@ taglib uri="http://java.sun.com/jsf/html"  prefix="h" %>
+  </head>
+
+  <body>
+    <h1>test</h1>
+
+<f:view>
+
+  <h:form>
+
+    <p>Invoking the resolver chain: <h:outputText value="#{requestBean.invokeVariableResolverThruChain1}" />.</p>
+    
+    <p>Invoking the resolver directly: <h:outputText value="#{requestBean.invokeVariableResolverDirectly1}" />.</p>
+
+  </h:form>
+
+</f:view>
+
+    <hr>
+  </body>
+</html>
diff --git a/test/agnostic/replace-vr-add-er/src/test/java/com/sun/faces/test/agnostic/IssueReplaceVariableResolverAndAddELResolverProgrammaticallyIT.java b/test/agnostic/replace-vr-add-er/src/test/java/com/sun/faces/test/agnostic/IssueReplaceVariableResolverAndAddELResolverProgrammaticallyIT.java
new file mode 100644
index 0000000..c75f884
--- /dev/null
+++ b/test/agnostic/replace-vr-add-er/src/test/java/com/sun/faces/test/agnostic/IssueReplaceVariableResolverAndAddELResolverProgrammaticallyIT.java
@@ -0,0 +1,163 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.agnostic;
+
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import com.gargoylesoftware.htmlunit.WebClient;
+import org.junit.Ignore;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+
+/**
+ * <p>Make sure that an application that replaces the ApplicationFactory
+ * but uses the decorator pattern to allow the existing ApplicationImpl
+ * to do the bulk of the requests works.</p>
+ */
+
+public class IssueReplaceVariableResolverAndAddELResolverProgrammaticallyIT {
+
+
+    /**
+     * Stores the web URL.
+     */
+    private String webUrl;
+    /**
+     * Stores the web client.
+     */
+    private WebClient webClient;
+
+    /**
+     * Setup before testing.
+     * 
+     * @throws Exception when a serious error occurs.
+     */
+    @BeforeClass
+    public static void setUpClass() throws Exception {
+    }
+
+    /**
+     * Cleanup after testing.
+     * 
+     * @throws Exception when a serious error occurs.
+     */
+    @AfterClass
+    public static void tearDownClass() throws Exception {
+    }
+
+    /**
+     * Setup before testing.
+     */
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    /**
+     * Tear down after testing.
+     */
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    /**
+     *
+     * <p>Verify that the bean is successfully resolved</p>
+     */
+    @Test
+    public void testReplaceVariableResolverAndAddELResolverProgrammatically() throws Exception {
+	HtmlPage page = webClient.getPage(webUrl + "faces/test.jsp");
+	assertTrue(-1 != page.asText().indexOf("Invoking the variable resolver chain: success."));
+	assertTrue(-1 != page.asText().indexOf("Invoking the variable resolver directly: success."));
+	assertTrue(-1 != page.asText().indexOf("Invoking the EL resolver directly: true."));
+	assertTrue(-1 != page.asText().indexOf("result: isReadOnly invoked directly."));
+	assertTrue(-1 != page.asText().indexOf("Invoking the EL resolver via chain: true."));
+	assertTrue(-1 != page.asText().indexOf("result: isReadOnly invoked thru chain."));
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("reload", true);
+        page = (HtmlPage) button.click();
+        String text = page.asXml();
+        text = text.replaceAll(":[0-9]*\\)", "\\)");
+        text = text.replaceAll("com.sun.faces.", "");
+        text = text.replaceAll("toString() invocation", "");
+
+        String [] orderedListOfStringsToFindInPage = {
+            "FacesELResolverForFaces",
+            "el.ImplicitObjectELResolver.getValue",
+            "el.VariableResolverChainWrapper.getValue",
+            "NewVariableResolver.resolveVariable",
+            "NewELResolver.getValue",
+            "el.ManagedBeanELResolver.resolveBean",
+            "el.FacesResourceBundleELResolver.getValue",
+            "el.ScopedAttributeELResolver.getValue",
+            "FacesELResolverForJsp",
+            "NewVariableResolver.resolveVariable",
+            "NewELResolver.getValue"
+        };
+        boolean [] foundFlags = new boolean[orderedListOfStringsToFindInPage.length];
+        int i,j;
+        for (i = 0; i < foundFlags.length; i++) {
+            foundFlags[i] = false;
+        }
+        String [] textSplitOnSpace = text.split(" ");
+        j = 0;
+        for (i = 0; i < textSplitOnSpace.length &&
+                    j < orderedListOfStringsToFindInPage.length; i++) {
+            if (textSplitOnSpace[i].contains(orderedListOfStringsToFindInPage[j])) {
+                foundFlags[j++] = true;
+            }
+        }
+        for (i = 0; i < foundFlags.length; i++) {
+            if (!foundFlags[i]) {
+                fail("Unable to find " + orderedListOfStringsToFindInPage[i] +
+                     " at expected order in ELResolver chain.  Text: " + text);
+            }
+        }
+    }
+
+}
diff --git a/test/agnostic/resource/basic/nbactions.xml b/test/agnostic/resource/basic/nbactions.xml
new file mode 100644
index 0000000..ea8154f
--- /dev/null
+++ b/test/agnostic/resource/basic/nbactions.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<actions>
+        <action>
+            <actionName>test.single</actionName>
+            <goals>
+                <goal>test-compile</goal>
+                <goal>surefire:test</goal>
+            </goals>
+            <properties>
+                <test>${packageClassName}</test>
+                <integration.url>http://localhost:8080/test-agnostic-resource-basic/</integration.url>
+            </properties>
+        </action>
+        <action>
+            <actionName>debug.test.single</actionName>
+            <goals>
+                <goal>test-compile</goal>
+                <goal>surefire:test</goal>
+            </goals>
+            <properties>
+                <test>${packageClassName}</test>
+                <forkMode>once</forkMode>
+                <maven.surefire.debug>-Xdebug -Xrunjdwp:transport=dt_socket,server=n,address=${jpda.address}</maven.surefire.debug>
+                <jpda.listen>true</jpda.listen>
+                <integration.url>http://localhost:8080/test-agnostic-resource-basic/</integration.url>
+            </properties>
+        </action>
+    </actions>
diff --git a/test/agnostic/resource/basic/pom.xml b/test/agnostic/resource/basic/pom.xml
new file mode 100644
index 0000000..0ebc027
--- /dev/null
+++ b/test/agnostic/resource/basic/pom.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.agnostic.resource</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.agnostic.resource</groupId>
+    <artifactId>basic</artifactId>
+    <packaging>war</packaging>
+    <name>Mojarra ${project.version} - Test - Agnostic - Resource - Basic</name>
+    <build>
+        <finalName>test-agnostic-resource-basic</finalName>
+    </build>
+    <properties>
+        <netbeans.hint.deploy.server>gfv3ee6</netbeans.hint.deploy.server>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/test/agnostic/resource/basic/src/main/java/com/sun/faces/test/agnostic/resource/basic/ResourceBean.java b/test/agnostic/resource/basic/src/main/java/com/sun/faces/test/agnostic/resource/basic/ResourceBean.java
new file mode 100644
index 0000000..ee49ef5
--- /dev/null
+++ b/test/agnostic/resource/basic/src/main/java/com/sun/faces/test/agnostic/resource/basic/ResourceBean.java
@@ -0,0 +1,176 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.agnostic.resource.basic;
+
+import java.io.IOException;
+import java.io.InputStream;
+import javax.faces.application.Resource;
+import javax.faces.application.ResourceHandler;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.RequestScoped;
+import javax.faces.context.FacesContext;
+
+ at ManagedBean
+ at RequestScoped
+public class ResourceBean {
+
+    private static final String LIBRARY_NAME = "css";
+    private static final String RESOURCE_NAME = "images/background.png";
+    private static final String RESOURCE_TYPE = "images/png";
+    private static final String COMBINED_NAME = LIBRARY_NAME + "/" + RESOURCE_NAME;
+
+    public ResourceBean() {
+    }
+
+    public String getResourceWithLibrary() {
+        FacesContext fc = FacesContext.getCurrentInstance();
+        ResourceHandler handler = fc.getApplication().getResourceHandler();
+        Resource resource = handler.createResource(RESOURCE_NAME, LIBRARY_NAME, RESOURCE_TYPE);
+        String resourceAsString = null;
+        try {
+            resourceAsString = resource.toString();
+        } catch (Exception e) {
+            resourceAsString = "** could not create resource " + RESOURCE_NAME + " in library " + LIBRARY_NAME + " **";
+        }
+        return resourceAsString;
+    }
+
+    public void setResourceWithLibrary(String resourceWithLibrary) {
+        //noop
+    }
+
+    public String getResourceWithoutLibrary() {
+        FacesContext fc = FacesContext.getCurrentInstance();
+        ResourceHandler handler = fc.getApplication().getResourceHandler();
+        Resource resource = handler.createResource(COMBINED_NAME);
+        String resourceAsString = null;
+        try {
+            resourceAsString = resource.toString();
+        } catch (Exception e) {
+            resourceAsString = "** could not create resource " + COMBINED_NAME + " **";
+        }
+        return resourceAsString;
+    }
+
+    public void setResourceWithoutLibrary(String resourceWithoutLibrary) {
+        //noop
+    }
+    
+    
+    public String getResourceWithTrailingUnderscore() {
+        FacesContext fc = FacesContext.getCurrentInstance();
+        ResourceHandler handler = fc.getApplication().getResourceHandler();
+
+        Resource resource = handler.createResource("trailing.css", "styles");
+        if (null != resource) {
+            try {
+                InputStream is = resource.getInputStream();
+                while (-1 != is.read()) {
+                    
+                }
+            } catch (IOException ex) {
+                return "FAILURE";
+            }
+        }
+        return "SUCCESS";
+        
+    }
+    
+    public String getResourceWithLeadingUnderscore() {
+        FacesContext fc = FacesContext.getCurrentInstance();
+        ResourceHandler handler = fc.getApplication().getResourceHandler();
+
+        Resource resource = handler.createResource("leading.css", "styles");
+        if (null != resource) {
+            try {
+                InputStream is = resource.getInputStream();
+                while (-1 != is.read()) {
+                    
+                }
+            } catch (IOException ex) {
+                return "FAILURE";
+            }
+        }
+        return "SUCCESS";
+        
+    }
+
+    public String getResourceWithInvalidVersion() {
+        FacesContext fc = FacesContext.getCurrentInstance();
+        ResourceHandler handler = fc.getApplication().getResourceHandler();
+
+        Resource resource = handler.createResource("noUnderscore.css", "styles");
+        if (null != resource) {
+            try {
+                InputStream is = resource.getInputStream();
+                while (-1 != is.read()) {
+                    
+                }
+            } catch (IOException ex) {
+                return "FAILURE";
+            }
+        }
+        return "SUCCESS";
+        
+    }
+    
+    public String getResourceWithValidVersion() {
+        FacesContext fc = FacesContext.getCurrentInstance();
+        ResourceHandler handler = fc.getApplication().getResourceHandler();
+
+        Resource resource = handler.createResource("foreground.css", "styles");
+        if (null != resource) {
+            try {
+                InputStream is = resource.getInputStream();
+                if (-1 == is.read()) {
+                    return "FAILURE";
+                }
+                is.close();
+            } catch (IOException ex) {
+                return "FAILURE";
+            }
+        }
+        return "SUCCESS";
+        
+    }
+    
+    
+}
diff --git a/test/agnostic/resource/basic/src/main/java/com/sun/faces/test/agnostic/resource/basic/ResourceComponent.java b/test/agnostic/resource/basic/src/main/java/com/sun/faces/test/agnostic/resource/basic/ResourceComponent.java
new file mode 100644
index 0000000..bf221dc
--- /dev/null
+++ b/test/agnostic/resource/basic/src/main/java/com/sun/faces/test/agnostic/resource/basic/ResourceComponent.java
@@ -0,0 +1,59 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.agnostic.resource.basic;
+
+import javax.faces.application.ResourceDependencies;
+import javax.faces.component.FacesComponent;
+import javax.faces.component.UIComponentBase;
+
+ at FacesComponent("com.sun.faces.test.agnostic.resource.ResourceComponent")
+ at ResourceDependencies({@javax.faces.application.ResourceDependency(library="js", name="foo.js", target="body")})
+public class ResourceComponent extends UIComponentBase {
+
+    //
+    // Public methods
+    //
+
+    @Override
+    public String getFamily() {
+        return "com.sun.faces.test.agnostic.resource";
+    }
+}
diff --git a/test/agnostic/resource/basic/src/main/java/com/sun/faces/test/agnostic/resource/basic/ResourceNPEBean.java b/test/agnostic/resource/basic/src/main/java/com/sun/faces/test/agnostic/resource/basic/ResourceNPEBean.java
new file mode 100644
index 0000000..5cec425
--- /dev/null
+++ b/test/agnostic/resource/basic/src/main/java/com/sun/faces/test/agnostic/resource/basic/ResourceNPEBean.java
@@ -0,0 +1,70 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.resource.basic;
+
+import javax.faces.application.ResourceHandler;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.RequestScoped;
+import javax.faces.context.FacesContext;
+
+ at ManagedBean(name = "resourceNPEBean")
+ at RequestScoped
+public class ResourceNPEBean {
+
+    private String exists = "false";
+
+    public ResourceNPEBean() {
+        FacesContext context = FacesContext.getCurrentInstance();
+        ResourceHandler handler = context.getApplication().getResourceHandler();
+        if (handler.libraryExists("FooBar")) {
+            exists = "true";
+        } else {
+            exists = "false";
+        }
+    }
+
+    public String getLibraryExists() {
+        return exists;
+    }
+
+    public void setLibraryExists(String exists) {
+        this.exists = exists;
+    }
+}
diff --git a/test/agnostic/resource/basic/src/main/webapp/WEB-INF/faces-config.xml b/test/agnostic/resource/basic/src/main/webapp/WEB-INF/faces-config.xml
new file mode 100644
index 0000000..d2392ac
--- /dev/null
+++ b/test/agnostic/resource/basic/src/main/webapp/WEB-INF/faces-config.xml
@@ -0,0 +1,57 @@
+<?xml version='1.0' encoding='UTF-8'?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<faces-config version="2.1"
+    xmlns="http://java.sun.com/xml/ns/javaee"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_1.xsd">
+
+    <navigation-rule>
+        <navigation-case>
+            <from-outcome>POSTback</from-outcome>
+            <to-view-id>/issue2889.xhtml</to-view-id>
+        </navigation-case>
+    </navigation-rule>
+
+</faces-config>
diff --git a/test/agnostic/resource/basic/src/main/webapp/WEB-INF/glassfish-web.xml b/test/agnostic/resource/basic/src/main/webapp/WEB-INF/glassfish-web.xml
new file mode 100644
index 0000000..04464a5
--- /dev/null
+++ b/test/agnostic/resource/basic/src/main/webapp/WEB-INF/glassfish-web.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
+<glassfish-web-app error-url="">
+  <context-root>/test-agnostic-resource-basic</context-root>
+  <class-loader delegate="true"/>
+  <jsp-config>
+    <property name="keepgenerated" value="true">
+      <description>Keep a copy of the generated servlet class' java code.</description>
+    </property>
+  </jsp-config>
+</glassfish-web-app>
diff --git a/test/agnostic/resource/basic/src/main/webapp/WEB-INF/resource.taglib.xml b/test/agnostic/resource/basic/src/main/webapp/WEB-INF/resource.taglib.xml
new file mode 100644
index 0000000..2eb40b9
--- /dev/null
+++ b/test/agnostic/resource/basic/src/main/webapp/WEB-INF/resource.taglib.xml
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<facelet-taglib xmlns="http://java.sun.com/xml/ns/javaee"
+                xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+                xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facelettagli brary_2_0.xsd" version="2.0">
+    <namespace>http://www.oracle.com/mojarra/test/resource</namespace>
+    <tag>
+        <tag-name>resourceComponent</tag-name>
+        <component>
+            <component-type>com.sun.faces.test.agnostic.resource.ResourceComponent</component-type>
+        </component>
+    </tag>
+</facelet-taglib>
+
diff --git a/test/agnostic/resource/basic/src/main/webapp/WEB-INF/web.xml b/test/agnostic/resource/basic/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..0a7b05f
--- /dev/null
+++ b/test/agnostic/resource/basic/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" 
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+    <context-param>
+        <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
+        <param-value>${webapp.partialStateSaving}</param-value>
+    </context-param>
+     <context-param>
+         <param-name>javax.faces.FACELETS_LIBRARIES</param-name>
+         <param-value>/WEB-INF/resource.taglib.xml</param-value>
+     </context-param>
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+        <url-pattern>*.xhtml</url-pattern>
+    </servlet-mapping>
+    <session-config>
+        <session-timeout>30</session-timeout>
+    </session-config>
+</web-app>
diff --git a/test/agnostic/resource/basic/src/main/webapp/index.xhtml b/test/agnostic/resource/basic/src/main/webapp/index.xhtml
new file mode 100644
index 0000000..ebdc55a
--- /dev/null
+++ b/test/agnostic/resource/basic/src/main/webapp/index.xhtml
@@ -0,0 +1,16 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title>Resource tests</title>
+    </h:head>
+    <h:body>
+        <ul>
+            <li><a href="javax.faces.resource/WEB-INF/faces-config.xml.xhtml?ln=.\..">Show faces-config.xml. (Should return 404)</a><br/></li>
+            <li><a href="javax.faces.resource/WEB-INF/web.xml.xhtml?ln=.\..">Show web.xml. (Should return 404)</a></li>
+        </ul>
+    </h:body>
+</html>
diff --git a/test/agnostic/resource/basic/src/main/webapp/issue2565.xhtml b/test/agnostic/resource/basic/src/main/webapp/issue2565.xhtml
new file mode 100644
index 0000000..8de8dd5
--- /dev/null
+++ b/test/agnostic/resource/basic/src/main/webapp/issue2565.xhtml
@@ -0,0 +1,61 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title>Issue2565</title>
+    </h:head>
+    <h:body>
+        <p><span id="trailingUnderscore">#{resourceBean.resourceWithTrailingUnderscore}</span></p>
+        
+        <p><span id="noUnderscore">#{resourceBean.resourceWithInvalidVersion}</span></p>
+        
+        <p><span id="leadingUnderscore">#{resourceBean.resourceWithLeadingUnderscore}</span></p>
+        
+        <p><span id="validVersion">#{resourceBean.resourceWithValidVersion}</span></p>
+        
+    </h:body>
+</html>
+
diff --git a/test/agnostic/resource/basic/src/main/webapp/issue2889.xhtml b/test/agnostic/resource/basic/src/main/webapp/issue2889.xhtml
new file mode 100644
index 0000000..ba6d9d4
--- /dev/null
+++ b/test/agnostic/resource/basic/src/main/webapp/issue2889.xhtml
@@ -0,0 +1,67 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]    
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a    
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to    
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "
+    http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:res="http://www.oracle.com/mojarra/test/resource">
+
+<h:head></h:head>
+
+<h:body>
+
+   <h:form id="form">
+
+      <res:resourceComponent/>
+
+      <h:commandLink id="link" value="POSTback" action="POSTback"/>
+
+   </h:form>
+
+</h:body>
+
+</html>
diff --git a/test/agnostic/resource/basic/src/main/webapp/resourceNPE.xhtml b/test/agnostic/resource/basic/src/main/webapp/resourceNPE.xhtml
new file mode 100644
index 0000000..8767cb0
--- /dev/null
+++ b/test/agnostic/resource/basic/src/main/webapp/resourceNPE.xhtml
@@ -0,0 +1,54 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head></h:head>
+    <h:body>
+            Library Exists: #{resourceNPEBean.libraryExists}
+    </h:body>
+</html>
diff --git a/test/agnostic/resource/basic/src/main/webapp/resources/css/el.css b/test/agnostic/resource/basic/src/main/webapp/resources/css/el.css
new file mode 100644
index 0000000..d71de54
--- /dev/null
+++ b/test/agnostic/resource/basic/src/main/webapp/resources/css/el.css
@@ -0,0 +1,8 @@
+.divWithLibraryBackground{
+    background: url("#{resource['css:images/background.png']}");
+}
+
+.divWithoutLibraryBackground{
+    background: url("#{resource['css/images/background.png']}");
+}
+
diff --git a/test/agnostic/resource/basic/src/main/webapp/resources/css/images/background.png b/test/agnostic/resource/basic/src/main/webapp/resources/css/images/background.png
new file mode 100644
index 0000000..e6e90ba
Binary files /dev/null and b/test/agnostic/resource/basic/src/main/webapp/resources/css/images/background.png differ
diff --git a/test/agnostic/resource/basic/src/main/webapp/resources/js/foo.js b/test/agnostic/resource/basic/src/main/webapp/resources/js/foo.js
new file mode 100644
index 0000000..f90a796
--- /dev/null
+++ b/test/agnostic/resource/basic/src/main/webapp/resources/js/foo.js
@@ -0,0 +1 @@
+// Purposely left empty.
diff --git a/test/agnostic/resource/basic/src/main/webapp/start.xhtml b/test/agnostic/resource/basic/src/main/webapp/start.xhtml
new file mode 100644
index 0000000..4dfb547
--- /dev/null
+++ b/test/agnostic/resource/basic/src/main/webapp/start.xhtml
@@ -0,0 +1,82 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+
+<h:head>
+    <title>Mojarra 2.2 Test App</title>
+    <h:outputStylesheet library="css"
+                        name="el.css"/>
+</h:head>
+
+<h:body>
+
+    <h2>Div with Library</h2>
+
+    <div class="divWithLibraryBackground">
+        <p>This div has a background image specified using an EL express in the stylesheet.</p>
+
+        <p>The expression is structured to contain a library name along with the resource id:</p>
+
+        <p>resource['css:images/background.png']</p>
+        <h:outputText value="Resource created with library: #{resourceBean.resourceWithLibrary}"/>
+    </div>
+
+    <h2>Div without Library</h2>
+
+    <div class="divWithoutLibraryBackground">
+        <p>This div has a background image specified using an EL express in the stylesheet.</p>
+
+        <p>The expression
+            is structured so that it only includes the resource id (no library name).</p>
+
+        <p>resource['css/images/background.png']</p>
+        <h:outputText value="Resource created without library: #{resourceBean.resourceWithoutLibrary}"/>
+    </div>
+
+</h:body>
+</html>
+
diff --git a/test/agnostic/resource/basic/src/main/webapp/styles/2_0/foreground.css/3_2_1.css b/test/agnostic/resource/basic/src/main/webapp/styles/2_0/foreground.css/3_2_1.css
new file mode 100644
index 0000000..0d2a262
--- /dev/null
+++ b/test/agnostic/resource/basic/src/main/webapp/styles/2_0/foreground.css/3_2_1.css
@@ -0,0 +1,23 @@
+root { 
+    display: block;
+}
+
+night {
+    background: black;
+    color: #80c0c0
+}
+
+morning {
+    background: yellow;
+    color: #80c0c0
+}
+
+afternoon {
+    background: white;
+    color: #80c0c0
+}
+
+dusk {
+    background: grey;
+    color: #80c0c0
+}
\ No newline at end of file
diff --git a/test/agnostic/resource/basic/src/main/webapp/styles/2_0/leading.css/_99.css b/test/agnostic/resource/basic/src/main/webapp/styles/2_0/leading.css/_99.css
new file mode 100644
index 0000000..3f96253
--- /dev/null
+++ b/test/agnostic/resource/basic/src/main/webapp/styles/2_0/leading.css/_99.css
@@ -0,0 +1,8 @@
+root { 
+    display: block;
+}
+
+night {
+    background: black;
+    color: #80c0c0
+}
diff --git a/test/agnostic/resource/basic/src/main/webapp/styles/2_0/noUnderscore.css/99-100-101.css b/test/agnostic/resource/basic/src/main/webapp/styles/2_0/noUnderscore.css/99-100-101.css
new file mode 100644
index 0000000..9c5ad9c
--- /dev/null
+++ b/test/agnostic/resource/basic/src/main/webapp/styles/2_0/noUnderscore.css/99-100-101.css
@@ -0,0 +1,4 @@
+root { 
+    display: block;
+}
+
diff --git a/test/agnostic/resource/basic/src/main/webapp/styles/2_0/trailing.css/42_.css b/test/agnostic/resource/basic/src/main/webapp/styles/2_0/trailing.css/42_.css
new file mode 100644
index 0000000..b0fef2f
--- /dev/null
+++ b/test/agnostic/resource/basic/src/main/webapp/styles/2_0/trailing.css/42_.css
@@ -0,0 +1 @@
+body { background-color: #ffb57a }
diff --git a/test/agnostic/resource/basic/src/test/java/com/sun/faces/test/agnostic/resource/basic/Issue2052IT.java b/test/agnostic/resource/basic/src/test/java/com/sun/faces/test/agnostic/resource/basic/Issue2052IT.java
new file mode 100644
index 0000000..a27a64c
--- /dev/null
+++ b/test/agnostic/resource/basic/src/test/java/com/sun/faces/test/agnostic/resource/basic/Issue2052IT.java
@@ -0,0 +1,70 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDLGPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.resource.basic; 
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.After;
+import static org.junit.Assert.assertTrue;
+import org.junit.Before;
+import org.junit.Test;
+
+public class Issue2052IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testResourceWithAndWithoutLibrary() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl+"faces/resourceNPE.xhtml");
+        assertTrue(page.asText().contains("Library Exists: false"));
+    }
+}
diff --git a/test/agnostic/resource/basic/src/test/java/com/sun/faces/test/agnostic/resource/basic/Issue2401IT.java b/test/agnostic/resource/basic/src/test/java/com/sun/faces/test/agnostic/resource/basic/Issue2401IT.java
new file mode 100644
index 0000000..d474fb4
--- /dev/null
+++ b/test/agnostic/resource/basic/src/test/java/com/sun/faces/test/agnostic/resource/basic/Issue2401IT.java
@@ -0,0 +1,99 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDLGPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.agnostic.resource.basic; 
+
+import com.gargoylesoftware.htmlunit.html.HtmlElement;
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+
+import org.junit.*;
+import static org.junit.Assert.*;
+
+public class Issue2401IT {
+
+    /**
+     * Stores the web URL.
+     */
+    private String webUrl;
+    /**
+     * Stores the web client.
+     */
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+
+    // ------------------------------------------------------------ Test Methods
+
+    @Test
+    public void testResourceWithAndWithoutLibrary() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl+"faces/start.xhtml");
+        assertTrue(page.asText().contains("Resource created with library: /test-agnostic-resource-basic/faces/javax.faces.resource/images/background.png?ln=css"));
+        assertTrue(page.asText().contains("Resource created without library: /test-agnostic-resource-basic/faces/javax.faces.resource/css/images/background.png"));
+    }
+    
+    @Test 
+    public void testResourceVersions() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/issue2565.xhtml");
+                
+        HtmlElement element = page.getHtmlElementById("trailingUnderscore");
+        assertEquals("SUCCESS", element.getTextContent());
+
+        element = page.getHtmlElementById("noUnderscore");
+        assertEquals("SUCCESS", element.getTextContent());
+    
+        element = page.getHtmlElementById("leadingUnderscore");
+        assertEquals("SUCCESS", element.getTextContent());
+
+        element = page.getHtmlElementById("validVersion");
+        assertEquals("SUCCESS", element.getTextContent());
+    }
+
+}
diff --git a/test/agnostic/resource/basic/src/test/java/com/sun/faces/test/agnostic/resource/basic/Issue2889IT.java b/test/agnostic/resource/basic/src/test/java/com/sun/faces/test/agnostic/resource/basic/Issue2889IT.java
new file mode 100644
index 0000000..59de0cb
--- /dev/null
+++ b/test/agnostic/resource/basic/src/test/java/com/sun/faces/test/agnostic/resource/basic/Issue2889IT.java
@@ -0,0 +1,87 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDLGPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.agnostic.resource.basic; 
+
+import com.gargoylesoftware.htmlunit.html.HtmlElement;
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlAnchor;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+
+import org.junit.*;
+import static org.junit.Assert.*;
+
+public class Issue2889IT {
+
+    /**
+     * Stores the web URL.
+     */
+    private String webUrl;
+    /**
+     * Stores the web client.
+     */
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+
+    // ------------------------------------------------------------ Test Methods
+
+    // Assert that a resource that is loaded via a component ResourceDepencies annotation
+    // is still there after postback.
+    @Test
+    public void testComponentResourceDependency() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl+"faces/issue2889.xhtml");
+        assertTrue(page.asXml().contains("foo.js"));
+        HtmlAnchor anchor = (HtmlAnchor)page.getElementById("form:link");
+        page = anchor.click();
+        assertTrue(page.asXml().contains("foo.js"));
+    }
+    
+}
diff --git a/test/agnostic/resource/basic/src/test/java/com/sun/faces/test/agnostic/resource/basic/Issue2932IT.java b/test/agnostic/resource/basic/src/test/java/com/sun/faces/test/agnostic/resource/basic/Issue2932IT.java
new file mode 100644
index 0000000..ee6369b
--- /dev/null
+++ b/test/agnostic/resource/basic/src/test/java/com/sun/faces/test/agnostic/resource/basic/Issue2932IT.java
@@ -0,0 +1,73 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDLGPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.resource.basic;
+
+import com.gargoylesoftware.htmlunit.Page;
+import com.gargoylesoftware.htmlunit.WebClient;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class Issue2932IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testDefaultHeaders() throws Exception {
+        Page page = webClient.getPage(webUrl + "faces/javax.faces.resource/css/images/background.png");
+        assertEquals(200, page.getWebResponse().getStatusCode());
+        assertNotNull(page.getWebResponse().getResponseHeaderValue("Last-Modified"));
+        assertNotNull(page.getWebResponse().getResponseHeaderValue("ETag"));
+        assertNotNull(page.getWebResponse().getResponseHeaderValue("Expires"));
+    }
+}
diff --git a/test/agnostic/resource/basic/src/test/java/com/sun/faces/test/agnostic/resource/basic/Issue3204IT.java b/test/agnostic/resource/basic/src/test/java/com/sun/faces/test/agnostic/resource/basic/Issue3204IT.java
new file mode 100644
index 0000000..f720dc2
--- /dev/null
+++ b/test/agnostic/resource/basic/src/test/java/com/sun/faces/test/agnostic/resource/basic/Issue3204IT.java
@@ -0,0 +1,71 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDLGPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.resource.basic;
+
+import com.gargoylesoftware.htmlunit.Page;
+import com.gargoylesoftware.htmlunit.WebClient;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class Issue3204IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testFacesConfig() throws Exception {
+        webClient.getOptions().setThrowExceptionOnFailingStatusCode(false);
+        Page page = webClient.getPage(webUrl + "javax.faces.resource/WEB-INF/faces-config.xml.xhtml?ln=.\\..");
+        assertEquals(404, page.getWebResponse().getStatusCode());
+    }
+}
diff --git a/test/agnostic/resource/pom.xml b/test/agnostic/resource/pom.xml
new file mode 100644
index 0000000..7782fd7
--- /dev/null
+++ b/test/agnostic/resource/pom.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.agnostic</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.agnostic.resource</groupId>
+    <artifactId>pom</artifactId>
+    <packaging>pom</packaging>
+    <name>Mojarra ${project.version} - Test - Agnostic - Resource</name>
+    <modules>
+        <module>basic</module>
+        <module>relocated</module>
+    </modules>
+    <properties>
+        <netbeans.hint.deploy.server>gfv3ee6</netbeans.hint.deploy.server>
+    </properties>
+</project>
diff --git a/test/agnostic/resource/relocated/pom.xml b/test/agnostic/resource/relocated/pom.xml
new file mode 100644
index 0000000..11b9d7b
--- /dev/null
+++ b/test/agnostic/resource/relocated/pom.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.agnostic.resource</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.agnostic.resource</groupId>
+    <artifactId>relocated</artifactId>
+    <packaging>war</packaging>
+    <name>Mojarra ${project.version} - Test - Agnostic - Resource - Relocated</name>
+    <build>
+        <finalName>test-agnostic-resource-relocated</finalName>
+    </build>
+    <properties>
+        <netbeans.hint.deploy.server>gfv3ee6</netbeans.hint.deploy.server>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/test/agnostic/resource/relocated/src/main/webapp/WEB-INF/glassfish-web.xml b/test/agnostic/resource/relocated/src/main/webapp/WEB-INF/glassfish-web.xml
new file mode 100644
index 0000000..0449436
--- /dev/null
+++ b/test/agnostic/resource/relocated/src/main/webapp/WEB-INF/glassfish-web.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
+<glassfish-web-app error-url="">
+  <context-root>/test-agnostic-resource-relocated</context-root>
+  <class-loader delegate="true"/>
+  <jsp-config>
+    <property name="keepgenerated" value="true">
+      <description>Keep a copy of the generated servlet class' java code.</description>
+    </property>
+  </jsp-config>
+</glassfish-web-app>
diff --git a/test/agnostic/resource/relocated/src/main/webapp/WEB-INF/myresources/default.xhtml b/test/agnostic/resource/relocated/src/main/webapp/WEB-INF/myresources/default.xhtml
new file mode 100644
index 0000000..da3806a
--- /dev/null
+++ b/test/agnostic/resource/relocated/src/main/webapp/WEB-INF/myresources/default.xhtml
@@ -0,0 +1,22 @@
+<?xml version='1.0' encoding='UTF-8' ?> 
+
+<!DOCTYPE html PUBLIC 
+    "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+        <title>Facelets Template</title>
+    </h:head>
+    <h:body>
+        <div id="top" class="top">
+            <ui:insert name="top">Top</ui:insert>
+        </div>
+        <div id="content" class="center_content">
+            <ui:insert name="content">Content</ui:insert>
+        </div>
+    </h:body>
+</html>
diff --git a/test/agnostic/resource/relocated/src/main/webapp/WEB-INF/web.xml b/test/agnostic/resource/relocated/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..20c5c2a
--- /dev/null
+++ b/test/agnostic/resource/relocated/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" 
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>${webapp.projectStage}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
+        <param-value>${webapp.partialStateSaving}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>${webapp.stateSavingMethod}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.WebAppResourcesDirectory</param-name>
+        <param-value>/WEB-INF/myresources</param-value>
+    </context-param>
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <session-config>
+        <session-timeout>30</session-timeout>
+    </session-config>
+    <welcome-file-list>
+        <welcome-file>index.jsp</welcome-file>
+    </welcome-file-list>
+</web-app>
diff --git a/test/agnostic/resource/relocated/src/main/webapp/issue2348.xhtml b/test/agnostic/resource/relocated/src/main/webapp/issue2348.xhtml
new file mode 100644
index 0000000..9fb0830
--- /dev/null
+++ b/test/agnostic/resource/relocated/src/main/webapp/issue2348.xhtml
@@ -0,0 +1,19 @@
+<?xml version='1.0' encoding='UTF-8'?>
+
+<!DOCTYPE html PUBLIC 
+    "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+    <body>
+        <ui:composition template="/WEB-INF/myresources/default.xhtml">
+            <ui:define name="top">
+                Using a template inside /WEB-INF/myresources
+            </ui:define>
+            <ui:define name="content">
+                And it works!
+            </ui:define>
+        </ui:composition>
+    </body>
+</html>
diff --git a/test/agnostic/resource/relocated/src/test/java/com/sun/faces/test/agnostic/resource/relocated/Issue2348IT.java b/test/agnostic/resource/relocated/src/test/java/com/sun/faces/test/agnostic/resource/relocated/Issue2348IT.java
new file mode 100644
index 0000000..0ee54b8
--- /dev/null
+++ b/test/agnostic/resource/relocated/src/test/java/com/sun/faces/test/agnostic/resource/relocated/Issue2348IT.java
@@ -0,0 +1,76 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.resource.relocated;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.*;
+import static org.junit.Assert.*;
+
+/**
+ * Integration tests for issue #2348.
+ *
+ * @author Manfred Riem (manfred.riem at oracle.com)
+ */
+public class Issue2348IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    /*
+     * Test test will test if we can have resources in /WEB-INF/myresources
+     */
+    @Test
+    public void testWebinfMyResources() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/issue2348.xhtml");
+        assertEquals(200, page.getWebResponse().getStatusCode());
+    }
+}
diff --git a/test/agnostic/scope/pom.xml b/test/agnostic/scope/pom.xml
new file mode 100644
index 0000000..615c1fa
--- /dev/null
+++ b/test/agnostic/scope/pom.xml
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.agnostic</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.agnostic.scope</groupId>
+    <artifactId>pom</artifactId>
+    <packaging>pom</packaging>
+    <name>Mojarra ${project.version} - Test - Agnostic - Scope</name>
+    <modules>
+        <module>session</module>
+    </modules>
+</project>
diff --git a/test/agnostic/scope/session/pom.xml b/test/agnostic/scope/session/pom.xml
new file mode 100644
index 0000000..cb88e7a
--- /dev/null
+++ b/test/agnostic/scope/session/pom.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.agnostic.scope</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.agnostic.scope</groupId>
+    <artifactId>session</artifactId>
+    <packaging>war</packaging>
+    <name>Mojarra ${project.version} - Test - Agnostic - Scope - Session</name>
+    <build>
+        <finalName>test-agnostic-scope-session</finalName>
+    </build>
+    <properties>
+        <netbeans.hint.deploy.server>gfv3ee6</netbeans.hint.deploy.server>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/test/agnostic/scope/session/src/main/java/com/sun/faces/test/agnostic/scope/session/InvalidatedBean.java b/test/agnostic/scope/session/src/main/java/com/sun/faces/test/agnostic/scope/session/InvalidatedBean.java
new file mode 100644
index 0000000..bf07262
--- /dev/null
+++ b/test/agnostic/scope/session/src/main/java/com/sun/faces/test/agnostic/scope/session/InvalidatedBean.java
@@ -0,0 +1,106 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.scope.session;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.SessionScoped;
+import javax.faces.context.FacesContext;
+
+/**
+ * A ViewScoped bean testing session invalidation functionality.
+ */
+ at ManagedBean(name = "invalidatedBean")
+ at SessionScoped
+public class InvalidatedBean {
+
+    /**
+     * Stores the text.
+     */
+    private String text;
+
+    /**
+     * Constructor.
+     */
+    public InvalidatedBean() {
+        this.text = "This is from the constructor";
+    }
+
+    /**
+     * Post-construct.
+     *
+     */
+    @PostConstruct
+    public void init() {
+        FacesContext.getCurrentInstance().getExternalContext().getApplicationMap().remove("count");
+        this.text = "This is from the @PostConstruct";
+    }
+
+    /**
+     * Pre-destroy
+     */
+    @PreDestroy
+    public void destroy() {
+        /*
+         * For the purpose of the test we can actually ask for the current 
+         * instance of the FacesContext, because we trigger invalidating of the 
+         * session through a JSF page, however in the normal case of session 
+         * invalidation this will NOT be true. So this means that normally the 
+         * @PreDestroy annotated method should not try to use 
+         * FacesContext.getCurrentInstance().
+         */
+        if (FacesContext.getCurrentInstance() != null) {
+            Integer count = 0;
+            if (FacesContext.getCurrentInstance().getExternalContext().getApplicationMap().containsKey("count")) {
+                count = (Integer) FacesContext.getCurrentInstance().getExternalContext().getApplicationMap().get("count");
+            }
+            count++;
+            FacesContext.getCurrentInstance().getExternalContext().getApplicationMap().put("count", count);
+        }
+    }
+
+    /**
+     * Get the text.
+     */
+    public String getText() {
+        return this.text;
+    }
+}
diff --git a/test/agnostic/scope/session/src/main/webapp/WEB-INF/glassfish-web.xml b/test/agnostic/scope/session/src/main/webapp/WEB-INF/glassfish-web.xml
new file mode 100644
index 0000000..8dfbac5
--- /dev/null
+++ b/test/agnostic/scope/session/src/main/webapp/WEB-INF/glassfish-web.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
+<glassfish-web-app error-url="">
+  <context-root>/test-agnostic-scope-session</context-root>
+  <class-loader delegate="true"/>
+  <jsp-config>
+    <property name="keepgenerated" value="true">
+      <description>Keep a copy of the generated servlet class' java code.</description>
+    </property>
+  </jsp-config>
+</glassfish-web-app>
diff --git a/test/agnostic/scope/session/src/main/webapp/WEB-INF/web.xml b/test/agnostic/scope/session/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..af53a6d
--- /dev/null
+++ b/test/agnostic/scope/session/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" 
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>${webapp.projectStage}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
+        <param-value>${webapp.partialStateSaving}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>${webapp.stateSavingMethod}</param-value>
+    </context-param>
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <session-config>
+        <session-timeout>30</session-timeout>
+    </session-config>
+    <welcome-file-list>
+        <welcome-file>faces/index.xhtml</welcome-file>
+    </welcome-file-list>
+</web-app>
diff --git a/test/agnostic/scope/session/src/main/webapp/invalidatedPerform.xhtml b/test/agnostic/scope/session/src/main/webapp/invalidatedPerform.xhtml
new file mode 100644
index 0000000..2fee959
--- /dev/null
+++ b/test/agnostic/scope/session/src/main/webapp/invalidatedPerform.xhtml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE html PUBLIC 
+    "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title>Invalidated Session Perform</title>
+    </h:head>
+    <h:body>
+        #{facesContext.externalContext.invalidateSession()}
+    </h:body>
+</html>
diff --git a/test/agnostic/scope/session/src/main/webapp/invalidatedSession.xhtml b/test/agnostic/scope/session/src/main/webapp/invalidatedSession.xhtml
new file mode 100644
index 0000000..9320204
--- /dev/null
+++ b/test/agnostic/scope/session/src/main/webapp/invalidatedSession.xhtml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE html PUBLIC 
+    "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title>Navigate Away Test</title>
+    </h:head>
+    <h:body>
+        <h:outputText value="#{invalidatedBean.text}"/>
+    </h:body>
+</html>
diff --git a/test/agnostic/scope/session/src/main/webapp/invalidatedVerify.xhtml b/test/agnostic/scope/session/src/main/webapp/invalidatedVerify.xhtml
new file mode 100644
index 0000000..0e9d1f2
--- /dev/null
+++ b/test/agnostic/scope/session/src/main/webapp/invalidatedVerify.xhtml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE html PUBLIC 
+    "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title>Invalidated Session Verify</title>
+    </h:head>
+    <h:body>
+        <h:outputText value="#{applicationScope['count']}"/>
+    </h:body>
+</html>
diff --git a/test/agnostic/scope/session/src/test/java/com/sun/faces/test/agnostic/scope/session/Issue1960IT.java b/test/agnostic/scope/session/src/test/java/com/sun/faces/test/agnostic/scope/session/Issue1960IT.java
new file mode 100644
index 0000000..823db76
--- /dev/null
+++ b/test/agnostic/scope/session/src/test/java/com/sun/faces/test/agnostic/scope/session/Issue1960IT.java
@@ -0,0 +1,81 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.scope.session;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.sun.faces.test.junit.JsfTest;
+import com.sun.faces.test.junit.JsfTestRunner;
+import com.sun.faces.test.junit.JsfVersion;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+import org.junit.runner.RunWith;
+
+ at RunWith(JsfTestRunner.class)
+public class Issue1960IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+        webClient.setJavaScriptEnabled(true);
+        webClient.setJavaScriptTimeout(60000);
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @JsfTest(JsfVersion.JSF_2_2_1)
+    @Test
+    public void testInvalidatedSession() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/invalidatedSession.xhtml");
+        assertTrue(page.asText().indexOf("This is from the @PostConstruct") != -1);
+        webClient.getPage(webUrl + "faces/invalidatedPerform.xhtml");
+        page = webClient.getPage(webUrl + "faces/invalidatedVerify.xhtml");
+        assertTrue(page.asText().indexOf("1") != -1);
+    }
+}
diff --git a/test/agnostic/stateSaving/basic/nbactions.xml b/test/agnostic/stateSaving/basic/nbactions.xml
new file mode 100644
index 0000000..3a67224
--- /dev/null
+++ b/test/agnostic/stateSaving/basic/nbactions.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<actions>
+        <action>
+            <actionName>test.single</actionName>
+            <goals>
+                <goal>test-compile</goal>
+                <goal>surefire:test</goal>
+            </goals>
+            <properties>
+                <test>${packageClassName}</test>
+                <integration.url>http://localhost:8080/test-agnostic-statesaving/</integration.url>
+            </properties>
+        </action>
+        <action>
+            <actionName>debug.test.single</actionName>
+            <goals>
+                <goal>test-compile</goal>
+                <goal>surefire:test</goal>
+            </goals>
+            <properties>
+                <test>${packageClassName}</test>
+                <forkMode>once</forkMode>
+                <maven.surefire.debug>-Xdebug -Xrunjdwp:transport=dt_socket,server=n,address=${jpda.address}</maven.surefire.debug>
+                <jpda.listen>true</jpda.listen>
+                <integration.url>http://localhost:8080/test-agnostic-statesaving/</integration.url>
+            </properties>
+        </action>
+    </actions>
diff --git a/test/agnostic/stateSaving/basic/pom.xml b/test/agnostic/stateSaving/basic/pom.xml
new file mode 100644
index 0000000..cd92aba
--- /dev/null
+++ b/test/agnostic/stateSaving/basic/pom.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.agnostic.statesaving</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.agnostic.statesaving</groupId>
+    <artifactId>basic</artifactId>
+    <packaging>war</packaging>
+    <name>Mojarra ${project.version} - Test - Agnostic - State Saving - Basic</name>
+    <build>
+        <finalName>test-agnostic-statesaving-basic</finalName>
+    </build>
+    <properties>
+        <netbeans.hint.deploy.server>gfv3ee6</netbeans.hint.deploy.server>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/test/agnostic/stateSaving/basic/src/main/java/com/sun/faces/test/agnostic/statesaving/basic/DynamicParentComponent.java b/test/agnostic/stateSaving/basic/src/main/java/com/sun/faces/test/agnostic/statesaving/basic/DynamicParentComponent.java
new file mode 100644
index 0000000..de96488
--- /dev/null
+++ b/test/agnostic/stateSaving/basic/src/main/java/com/sun/faces/test/agnostic/statesaving/basic/DynamicParentComponent.java
@@ -0,0 +1,106 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.statesaving.basic;
+
+import javax.faces.component.FacesComponent;
+import javax.faces.component.UIComponentBase;
+import javax.faces.component.UIViewRoot;
+import javax.faces.component.html.HtmlOutputText;
+import javax.faces.context.FacesContext;
+import javax.faces.event.AbortProcessingException;
+import javax.faces.event.PreRenderViewEvent;
+import javax.faces.event.SystemEvent;
+import javax.faces.event.SystemEventListener;
+
+ at FacesComponent(value = "com.sun.faces.test.agnostic.statesaving.basic.DynamicParentComponent")
+public class DynamicParentComponent extends UIComponentBase implements SystemEventListener {
+
+    /**
+     * Constructor.
+     */
+    public DynamicParentComponent() {
+        setRendererType("com.sun.faces.test.agnostic.statesaving.basic.DynamicParentComponentRenderer");
+
+        FacesContext context = FacesContext.getCurrentInstance();
+        UIViewRoot root = context.getViewRoot();
+
+        if (!context.isPostback()) {
+            root.subscribeToViewEvent(PreRenderViewEvent.class, this);
+        }
+    }
+
+    /**
+     * Get the component family.
+     *
+     * @return the component family.
+     */
+    public String getFamily() {
+        return "com.sun.faces.test.agnostic.statesaving.basic.DynamicParentComponent";
+    }
+
+    /**
+     * Is listener for the given source.
+     *
+     * @param source the source object.
+     * @return true if we are listening, false otherwise.
+     */
+    public boolean isListenerForSource(Object source) {
+        return (source instanceof UIViewRoot);
+    }
+
+    /**
+     * Process the system event.
+     *
+     * <p> Here we'll add a child in between static text. If dynamic component
+     * state saving works properly then upon redisplay it should have first
+     * static, then dynamic and then static text. </p>
+     *
+     * @param event the system event.
+     * @throws AbortProcessingException when processing should be aborted.
+     */
+    public void processEvent(SystemEvent event)
+            throws AbortProcessingException {
+        FacesContext context = FacesContext.getCurrentInstance();
+        HtmlOutputText outputText = (HtmlOutputText) context.getApplication().createComponent("javax.faces.HtmlOutputText");
+        outputText.setValue("Dynamic Text");
+        outputText.setEscape(false);
+        getChildren().add(1, outputText);
+    }
+}
diff --git a/test/agnostic/stateSaving/basic/src/main/java/com/sun/faces/test/agnostic/statesaving/basic/DynamicParentComponentRenderer.java b/test/agnostic/stateSaving/basic/src/main/java/com/sun/faces/test/agnostic/statesaving/basic/DynamicParentComponentRenderer.java
new file mode 100644
index 0000000..139dec1
--- /dev/null
+++ b/test/agnostic/stateSaving/basic/src/main/java/com/sun/faces/test/agnostic/statesaving/basic/DynamicParentComponentRenderer.java
@@ -0,0 +1,78 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.statesaving.basic;
+
+import java.io.IOException;
+
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.render.FacesRenderer;
+import javax.faces.render.Renderer;
+
+ at FacesRenderer(componentFamily = "com.sun.faces.test.agnostic.statesaving.basic.DynamicParentComponent",
+rendererType = "com.sun.faces.test.agnostic.statesaving.basic.DynamicParentComponentRenderer")
+public class DynamicParentComponentRenderer extends Renderer {
+    /**
+     * Encode the begin.
+     * 
+     * @param context the Faces context.
+     * @param component the UI component.
+     * @throws IOException 
+     */
+    @Override
+    public void encodeBegin(FacesContext context, UIComponent component) throws IOException {
+        context.getResponseWriter().write("<div>");
+        super.encodeBegin(context, component);
+    }
+    
+    /**
+     * Encode the end.
+     * 
+     * @param context the Faces context.
+     * @param component the UI component.
+     * @throws IOException 
+     */
+    @Override
+    public void encodeEnd(FacesContext context, UIComponent component)
+            throws IOException {
+        context.getResponseWriter().write("</div>");
+        super.encodeEnd(context, component);
+    }
+}
diff --git a/test/agnostic/stateSaving/basic/src/main/java/com/sun/faces/test/agnostic/statesaving/basic/Issue1554Bean.java b/test/agnostic/stateSaving/basic/src/main/java/com/sun/faces/test/agnostic/statesaving/basic/Issue1554Bean.java
new file mode 100644
index 0000000..098d344
--- /dev/null
+++ b/test/agnostic/stateSaving/basic/src/main/java/com/sun/faces/test/agnostic/statesaving/basic/Issue1554Bean.java
@@ -0,0 +1,81 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU General
+ * Public License Version 2 only ("GPL") or the Common Development and
+ * Distribution License("CDDL") (collectively, the "License"). You may not use
+ * this file except in compliance with the License. You can obtain a copy of the
+ * License at https://glassfish.dev.java.net/public/CDDLGPL_1_1.html or
+ * packager/legal/LICENSE.txt. See the License for the specific language
+ * governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception: Oracle designates this particular file as subject to
+ * the "Classpath" exception as provided by Oracle in the GPL Version 2 section
+ * of the License file that accompanied this code.
+ *
+ * Modifications: If applicable, add the following below the License Header,
+ * with the fields enclosed by brackets [] replaced by your own identifying
+ * information: "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s): If you wish your version of this file to be governed by only
+ * the CDDL or only the GPL Version 2, indicate your decision by adding
+ * "[Contributor] elects to include this software in this distribution under the
+ * [CDDL or GPL Version 2] license." If you don't indicate a single choice of
+ * license, a recipient has the option to distribute your version of this file
+ * under either the CDDL, the GPL Version 2 or to extend the choice of license
+ * to its licensees as provided above. However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright holder.
+ */
+package com.sun.faces.test.agnostic.statesaving.basic;
+
+import java.io.Serializable;
+import java.util.List;
+import javax.faces.bean.ManagedBean;
+import javax.faces.component.UIComponent;
+import javax.faces.component.html.HtmlOutputText;
+import javax.faces.event.ActionEvent;
+
+/**
+ * A managed bean for issue #1554.
+ */
+ at ManagedBean
+public class Issue1554Bean implements Serializable {
+    /**
+     * Add the transient component.
+     * 
+     * @param ae the action event.
+     */
+    public void add(ActionEvent ae) {
+        UIComponent button = ae.getComponent();
+        UIComponent addto = button.findComponent("addto");
+        List<UIComponent> children = addto.getChildren();
+
+        HtmlOutputText transientAdd = new HtmlOutputText();
+        transientAdd.setValue(" transient ");
+        transientAdd.setTransient(true);
+
+        HtmlOutputText output = new HtmlOutputText();
+        output.setValue(" non-transient ");
+
+        children.add(1, transientAdd);
+        children.add(2, output);
+
+        UIComponent addto2 = button.findComponent("addto2");
+        List<UIComponent> children2 = addto2.getChildren();
+
+        HtmlOutputText output1 = new HtmlOutputText();
+        output1.setValue(" non-transient 1");
+
+        HtmlOutputText output2 = new HtmlOutputText();
+        output2.setValue(" non-transient 2");
+
+        children2.add(1, output1);
+        children2.add(2, output2);
+    }
+}
diff --git a/test/agnostic/stateSaving/basic/src/main/java/com/sun/faces/test/agnostic/statesaving/basic/Issue2518Bean.java b/test/agnostic/stateSaving/basic/src/main/java/com/sun/faces/test/agnostic/statesaving/basic/Issue2518Bean.java
new file mode 100644
index 0000000..4f1bea8
--- /dev/null
+++ b/test/agnostic/stateSaving/basic/src/main/java/com/sun/faces/test/agnostic/statesaving/basic/Issue2518Bean.java
@@ -0,0 +1,55 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU General
+ * Public License Version 2 only ("GPL") or the Common Development and
+ * Distribution License("CDDL") (collectively, the "License"). You may not use
+ * this file except in compliance with the License. You can obtain a copy of the
+ * License at https://glassfish.dev.java.net/public/CDDLGPL_1_1.html or
+ * packager/legal/LICENSE.txt. See the License for the specific language
+ * governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception: Oracle designates this particular file as subject to
+ * the "Classpath" exception as provided by Oracle in the GPL Version 2 section
+ * of the License file that accompanied this code.
+ *
+ * Modifications: If applicable, add the following below the License Header,
+ * with the fields enclosed by brackets [] replaced by your own identifying
+ * information: "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s): If you wish your version of this file to be governed by only
+ * the CDDL or only the GPL Version 2, indicate your decision by adding
+ * "[Contributor] elects to include this software in this distribution under the
+ * [CDDL or GPL Version 2] license." If you don't indicate a single choice of
+ * license, a recipient has the option to distribute your version of this file
+ * under either the CDDL, the GPL Version 2 or to extend the choice of license
+ * to its licensees as provided above. However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright holder.
+ */
+package com.sun.faces.test.agnostic.statesaving.basic;
+
+import java.io.Serializable;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.SessionScoped;
+
+ at ManagedBean(name="issue2518Bean")
+ at SessionScoped
+public class Issue2518Bean implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+    private boolean actionClicked;
+
+    public boolean isActionClicked() {
+        return actionClicked;
+    }
+
+    public void clickAction() {
+        actionClicked = true;
+    }
+}
diff --git a/test/agnostic/stateSaving/basic/src/main/java/com/sun/faces/test/agnostic/statesaving/basic/SimplePhaseListener.java b/test/agnostic/stateSaving/basic/src/main/java/com/sun/faces/test/agnostic/statesaving/basic/SimplePhaseListener.java
new file mode 100644
index 0000000..2c6a4a2
--- /dev/null
+++ b/test/agnostic/stateSaving/basic/src/main/java/com/sun/faces/test/agnostic/statesaving/basic/SimplePhaseListener.java
@@ -0,0 +1,109 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.agnostic.statesaving.basic;
+
+import javax.faces.application.FacesMessage;
+import javax.faces.component.UIForm;
+import javax.faces.component.UIPanel;
+import javax.faces.component.UIViewRoot;
+import javax.faces.context.FacesContext;
+import javax.faces.event.PhaseEvent;
+import javax.faces.event.PhaseId;
+import javax.faces.event.PhaseListener;
+
+public class SimplePhaseListener implements PhaseListener {
+
+    private boolean afterInvokeAppPhase = false;
+
+    public SimplePhaseListener() {
+    }
+
+    public void afterPhase(PhaseEvent event) {
+        FacesContext context = event.getFacesContext();
+        String msg = null;
+        if (event.getPhaseId() == PhaseId.INVOKE_APPLICATION) {
+            afterInvokeAppPhase = true;
+            if (transientSubTreeExists(context)) {
+                msg = " After "+event.getPhaseId()+" Transient Subtree Exists";
+                context.addMessage("ia", new FacesMessage(FacesMessage.SEVERITY_ERROR, msg, null));
+            } else {
+                msg = " After "+event.getPhaseId()+" Transient Subtree Does Not Exist";
+                context.addMessage("ia", new FacesMessage(FacesMessage.SEVERITY_ERROR, msg, null));
+            }
+        }
+        if (event.getPhaseId() == PhaseId.RESTORE_VIEW) {
+            if (afterInvokeAppPhase) {
+                if (transientSubTreeExists(event.getFacesContext())) {
+                    msg = " After "+event.getPhaseId()+" Transient Subtree Exists";
+                    context.addMessage("rv", new FacesMessage(FacesMessage.SEVERITY_ERROR, msg, null));
+                } else {
+                    msg = " After "+event.getPhaseId()+" Transient Subtree Does Not Exist";
+                    context.addMessage("rv", new FacesMessage(FacesMessage.SEVERITY_ERROR, msg, null));
+                }
+                afterInvokeAppPhase = false;
+            }
+        }
+    }
+
+    public void beforePhase(PhaseEvent event) {
+    }
+
+
+    public PhaseId getPhaseId() {
+        return PhaseId.ANY_PHASE;
+    }
+
+    private boolean transientSubTreeExists(FacesContext context) {
+        UIViewRoot root = context.getViewRoot();
+        UIForm form = (UIForm)root.findComponent("helloForm");
+        if (null == form) {
+            System.err.println("FORM IS NULL");
+            return false;
+        }
+        UIPanel panel = (UIPanel)form.findComponent("addto");
+        if (panel.getChildren().size() > 0) {
+            return true;
+        } else {
+            return false;
+        }
+    }
+
+}
diff --git a/test/agnostic/stateSaving/basic/src/main/java/com/sun/faces/test/agnostic/statesaving/basic/StateBean.java b/test/agnostic/stateSaving/basic/src/main/java/com/sun/faces/test/agnostic/statesaving/basic/StateBean.java
new file mode 100644
index 0000000..bd09058
--- /dev/null
+++ b/test/agnostic/stateSaving/basic/src/main/java/com/sun/faces/test/agnostic/statesaving/basic/StateBean.java
@@ -0,0 +1,88 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.statesaving.basic;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.SessionScoped;
+
+import java.io.Serializable;
+
+import javax.faces.component.UIComponent;
+import javax.faces.component.html.HtmlOutputText;
+import javax.faces.component.html.HtmlPanelGroup;
+import javax.faces.event.ActionEvent;
+
+ at ManagedBean
+public class StateBean
+  implements Serializable
+{
+
+
+  public void temporaryMoveComponent(ActionEvent ae)
+  {
+    System.out.println("Temporarily moving a component");
+    UIComponent button = ae.getComponent();
+    UIComponent moveme = button.findComponent("moveme");
+    UIComponent moveto = button.findComponent("moveto");
+    UIComponent parent = moveme.getParent();
+
+    parent.getChildren().remove(moveme);
+    moveto.getChildren().add(moveme);
+    moveto.getChildren().remove(moveme);
+    parent.getChildren().add(moveme);
+  }
+  
+
+  public void transientRoot(ActionEvent ae)
+  {
+    System.out.println("Adding a subtree with a transient root");
+    UIComponent button = ae.getComponent();
+    UIComponent addto = button.findComponent("addto");
+    
+    HtmlPanelGroup transientRoot = new HtmlPanelGroup();
+    transientRoot.setTransient(true);
+    HtmlOutputText text = new HtmlOutputText();
+    text.setValue("transient parent");
+    transientRoot.getChildren().add(text);
+    addto.getChildren().add(transientRoot);
+    
+  }
+
+}
diff --git a/test/agnostic/stateSaving/basic/src/main/webapp/WEB-INF/dynamicParentComponent.taglib.xml b/test/agnostic/stateSaving/basic/src/main/webapp/WEB-INF/dynamicParentComponent.taglib.xml
new file mode 100644
index 0000000..f5da2f6
--- /dev/null
+++ b/test/agnostic/stateSaving/basic/src/main/webapp/WEB-INF/dynamicParentComponent.taglib.xml
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<facelet-taglib xmlns="http://java.sun.com/xml/ns/javaee"
+                xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+                xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facelettaglibrary_2_0.xsd"
+                version="2.0">
+
+    <namespace>http://www.oracle.com/mojarra/test/dynamicParentComponent</namespace>
+    <tag>
+        <tag-name>parentComponent</tag-name>
+        <component>
+            <component-type>com.sun.faces.test.agnostic.statesaving.basic.DynamicParentComponent</component-type>
+            <renderer-type>com.sun.faces.test.agnostic.statesaving.basic.DynamicParentComponentRenderer</renderer-type>
+        </component>
+    </tag>
+</facelet-taglib>
diff --git a/test/agnostic/stateSaving/basic/src/main/webapp/WEB-INF/faces-config.xml b/test/agnostic/stateSaving/basic/src/main/webapp/WEB-INF/faces-config.xml
new file mode 100644
index 0000000..8fd1f5b
--- /dev/null
+++ b/test/agnostic/stateSaving/basic/src/main/webapp/WEB-INF/faces-config.xml
@@ -0,0 +1,50 @@
+<?xml version='1.0' encoding='UTF-8'?>
+
+<!--
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ 
+ Copyright 1997-2012 Sun Microsystems, Inc. All rights reserved.
+ 
+ The contents of this file are subject to the terms of either the GNU
+ General Public License Version 2 only ("GPL") or the Common Development
+ and Distribution License("CDDL") (collectively, the "License").  You
+ may not use this file except in compliance with the License. You can obtain
+ a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
+ or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ language governing permissions and limitations under the License.
+ 
+ When distributing the software, include this License Header Notice in each
+ file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
+ Sun designates this particular file as subject to the "Classpath" exception
+ as provided by Sun in the GPL Version 2 section of the License file that
+ accompanied this code.  If applicable, add the following below the License
+ Header, with the fields enclosed by brackets [] replaced by your own
+ identifying information: "Portions Copyrighted [year]
+ [name of copyright owner]"
+ 
+ Contributor(s):
+ 
+ If you wish your version of this file to be governed by only the CDDL or
+ only the GPL Version 2, indicate your decision by adding "[Contributor]
+ elects to include this software in this distribution under the [CDDL or GPL
+ Version 2] license."  If you don't indicate a single choice of license, a
+ recipient has the option to distribute your version of this file under
+ either the CDDL, the GPL Version 2 or to extend the choice of license to
+ its licensees as provided above.  However, if you add GPL Version 2 code
+ and therefore, elected the GPL Version 2 license, then the option applies
+ only if the new code is made subject to such option by the copyright
+ holder.
+-->
+
+
+<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
+    version="2.0">
+
+
+   <lifecycle>
+     <phase-listener>com.sun.faces.test.agnostic.statesaving.basic.SimplePhaseListener</phase-listener>
+   </lifecycle>
+  
+</faces-config>
diff --git a/test/agnostic/stateSaving/basic/src/main/webapp/WEB-INF/glassfish-web.xml b/test/agnostic/stateSaving/basic/src/main/webapp/WEB-INF/glassfish-web.xml
new file mode 100644
index 0000000..ef0181d
--- /dev/null
+++ b/test/agnostic/stateSaving/basic/src/main/webapp/WEB-INF/glassfish-web.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
+<glassfish-web-app error-url="">
+  <context-root>/test-agnostic-statesaving-basic</context-root>
+  <class-loader delegate="true"/>
+  <jsp-config>
+    <property name="keepgenerated" value="true">
+      <description>Keep a copy of the generated servlet class' java code.</description>
+    </property>
+  </jsp-config>
+</glassfish-web-app>
diff --git a/test/agnostic/stateSaving/basic/src/main/webapp/WEB-INF/web.xml b/test/agnostic/stateSaving/basic/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..b076c43
--- /dev/null
+++ b/test/agnostic/stateSaving/basic/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,69 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+ Copyright 1997-2012 Sun Microsystems, Inc. All rights reserved.
+
+ The contents of this file are subject to the terms of either the GNU
+ General Public License Version 2 only ("GPL") or the Common Development
+ and Distribution License("CDDL") (collectively, the "License").  You
+ may not use this file except in compliance with the License. You can obtain
+ a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
+ or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ language governing permissions and limitations under the License.
+
+ When distributing the software, include this License Header Notice in each
+ file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
+ Sun designates this particular file as subject to the "Classpath" exception
+ as provided by Sun in the GPL Version 2 section of the License file that
+ accompanied this code.  If applicable, add the following below the License
+ Header, with the fields enclosed by brackets [] replaced by your own
+ identifying information: "Portions Copyrighted [year]
+ [name of copyright owner]"
+
+ Contributor(s):
+
+ If you wish your version of this file to be governed by only the CDDL or
+ only the GPL Version 2, indicate your decision by adding "[Contributor]
+ elects to include this software in this distribution under the [CDDL or GPL
+ Version 2] license."  If you don't indicate a single choice of license, a
+ recipient has the option to distribute your version of this file under
+ either the CDDL, the GPL Version 2 or to extend the choice of license to
+ its licensees as provided above.  However, if you add GPL Version 2 code
+ and therefore, elected the GPL Version 2 license, then the option applies
+ only if the new code is made subject to such option by the copyright
+ holder.
+
+-->
+
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>${webapp.projectStage}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
+        <param-value>${webapp.partialStateSaving}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>${webapp.stateSavingMethod}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.FACELETS_LIBRARIES</param-name>
+        <param-value>/WEB-INF/dynamicParentComponent.taglib.xml</param-value>
+    </context-param>
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <welcome-file-list>
+        <welcome-file>faces/hello.xhtml</welcome-file>
+    </welcome-file-list>
+</web-app>
diff --git a/test/agnostic/stateSaving/basic/src/main/webapp/dynamicChildAtCorrectIndex.xhtml b/test/agnostic/stateSaving/basic/src/main/webapp/dynamicChildAtCorrectIndex.xhtml
new file mode 100644
index 0000000..8d56595
--- /dev/null
+++ b/test/agnostic/stateSaving/basic/src/main/webapp/dynamicChildAtCorrectIndex.xhtml
@@ -0,0 +1,60 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:f="http://java.sun.com/jsf/core"      
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:dynamic="http://www.oracle.com/mojarra/test/dynamicParentComponent">
+    <f:view contentType="text/html">
+        <h:body>
+            <h:form id="form1">
+                <dynamic:parentComponent>
+                    <h:outputText value="Static Text "/>
+                    <h:outputText value=" Static Text"/>
+                </dynamic:parentComponent>
+                <h:commandButton id="submit" value="Submit"/>
+            </h:form>
+        </h:body>
+    </f:view>
+</html>
diff --git a/test/agnostic/stateSaving/basic/src/main/webapp/issue1554.xhtml b/test/agnostic/stateSaving/basic/src/main/webapp/issue1554.xhtml
new file mode 100644
index 0000000..bf6a7f6
--- /dev/null
+++ b/test/agnostic/stateSaving/basic/src/main/webapp/issue1554.xhtml
@@ -0,0 +1,32 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!DOCTYPE html PUBLIC 
+    "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:f="http://java.sun.com/jsf/core"      
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:body>
+        <h:form id="helloForm" >       
+            <h:outputText value="Press the 'add components' button, then press the submit button"/>
+            <br></br>
+            <h:commandButton actionListener="#{issue1554Bean.add}" id="cb2" value="add components"/>
+            <h:commandButton value="submit"/>
+            <br></br>
+            <h:outputText value="When you press the 'add components' button above, note that a transient and non-transient component are added between the two existing children. However after the submit button is pressed, the new non-transient component is now in the wrong position."/>
+            <h:panelGrid columns="1" id="addto"  style="border:green 1px solid">
+                <h:outputText value=" tree child 1 "/>
+                <h:outputText value=" tree child 2 "/>
+            </h:panelGrid>  
+            <br></br>
+            <br></br>          
+            <h:outputText value="The example below is just showing that when there's no transient component, things work as expected. So when you press the 'add components' button above, two components are added between the two existing children. After the submit button is pressed, these components remain in the correct positions."/>
+            <h:panelGrid columns="1" id="addto2"  style="border:red 1px solid">
+                <h:outputText value=" tree child 1 "/>
+                <h:outputText value=" tree child 2 "/>
+            </h:panelGrid>
+
+        </h:form>
+    </h:body>
+</html>
diff --git a/test/agnostic/stateSaving/basic/src/main/webapp/issue2518.xhtml b/test/agnostic/stateSaving/basic/src/main/webapp/issue2518.xhtml
new file mode 100644
index 0000000..bf54d9b
--- /dev/null
+++ b/test/agnostic/stateSaving/basic/src/main/webapp/issue2518.xhtml
@@ -0,0 +1,26 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:f="http://java.sun.com/jsf/core"      
+      xmlns:c="http://java.sun.com/jsp/jstl/core"
+      xmlns:h="http://java.sun.com/jsf/html">
+
+    <f:view>
+        <h:head>
+            <title>Issue 2518</title>
+        </h:head>
+        <h:body>
+            <p>
+                See JAVASERVERFACES-2518 on how to work with this test.
+            </p>
+            <h:form>
+                <c:if test="#{issue2518Bean.actionClicked}">
+                    <h:outputText id="text1" value="Text1" /> 
+                </c:if>
+                <h:outputText id="text2" value="Text2" />
+                <h:commandButton value="Click me" action="#{issue2518Bean.clickAction}"/>
+            </h:form>
+        </h:body>
+    </f:view>
+</html>
diff --git a/test/agnostic/stateSaving/basic/src/main/webapp/transientParent.xhtml b/test/agnostic/stateSaving/basic/src/main/webapp/transientParent.xhtml
new file mode 100644
index 0000000..8fe558d
--- /dev/null
+++ b/test/agnostic/stateSaving/basic/src/main/webapp/transientParent.xhtml
@@ -0,0 +1,61 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:f="http://java.sun.com/jsf/core"      
+      xmlns:h="http://java.sun.com/jsf/html">
+    <f:view contentType="text/html"/>
+    <h:body bgcolor="white">
+        <h:form id="helloForm" >       
+            <h:outputText value="Put a breakpoint in StateManagementStrategyImpl.handleAddEvent. Press the 'add subtree with transient root' button. This adds a subtree with a non-transient outputText as the child of a transient panelGroup. In handleAddEvent note that although the outputText is the child of a transient component, there is still an attempt to state save the outputText."/>
+            <br></br>
+            <h:commandButton id="button" actionListener="#{stateBean.transientRoot}"
+                              value="add subtree with transient root"/>
+            <br></br>
+            <h:panelGroup id="addto"  style="border:green 1px solid"></h:panelGroup>
+                        
+        </h:form>
+        <br/>
+        <h:messages/>
+    </h:body>
+</html>
diff --git a/test/agnostic/stateSaving/basic/src/test/java/com/sun/faces/test/agnostic/statesaving/basic/Issue2371IT.java b/test/agnostic/stateSaving/basic/src/test/java/com/sun/faces/test/agnostic/statesaving/basic/Issue2371IT.java
new file mode 100644
index 0000000..98b3d0c
--- /dev/null
+++ b/test/agnostic/stateSaving/basic/src/test/java/com/sun/faces/test/agnostic/statesaving/basic/Issue2371IT.java
@@ -0,0 +1,86 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDLGPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.agnostic.statesaving.basic;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+
+import org.junit.*;
+import static org.junit.Assert.*;
+
+public class Issue2371IT {
+
+    /**
+     * Stores the web URL.
+     */
+    private String webUrl;
+    /**
+     * Stores the web client.
+     */
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+
+    // ------------------------------------------------------------ Test Methods
+
+    @Test
+    public void testTransientParent() throws Exception {
+
+        HtmlPage page = webClient.getPage(webUrl+"faces/transientParent.xhtml");
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("helloForm:button");
+        page = button.click();
+        assertTrue(page.asText().contains("After INVOKE_APPLICATION 5 Transient Subtree Exists"));
+        page = button.click();
+        assertTrue(page.asText().contains("After RESTORE_VIEW 1 Transient Subtree Does Not Exist"));
+    }
+
+}
diff --git a/test/agnostic/stateSaving/basic/src/test/java/com/sun/faces/test/agnostic/statesaving/basic/Issue2372IT.java b/test/agnostic/stateSaving/basic/src/test/java/com/sun/faces/test/agnostic/statesaving/basic/Issue2372IT.java
new file mode 100644
index 0000000..0650a8e
--- /dev/null
+++ b/test/agnostic/stateSaving/basic/src/test/java/com/sun/faces/test/agnostic/statesaving/basic/Issue2372IT.java
@@ -0,0 +1,79 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDLGPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.statesaving.basic;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+
+import org.junit.*;
+import static org.junit.Assert.*;
+
+public class Issue2372IT {
+
+    /**
+     * Stores the web URL.
+     */
+    private String webUrl;
+    /**
+     * Stores the web client.
+     */
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testDynamicChildAtCorrectIndex() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/dynamicChildAtCorrectIndex.xhtml");
+        assertTrue(page.asText().contains("Static Text Dynamic Text Static Text"));
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("form1:submit");
+        page = button.click();
+        assertTrue(page.asText().contains("Static Text Dynamic Text Static Text"));
+    }
+}
diff --git a/test/agnostic/stateSaving/disableIdUniqueness/pom.xml b/test/agnostic/stateSaving/disableIdUniqueness/pom.xml
new file mode 100644
index 0000000..374d396
--- /dev/null
+++ b/test/agnostic/stateSaving/disableIdUniqueness/pom.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.agnostic.statesaving</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.agnostic.statesaving</groupId>
+    <artifactId>disableiduniqueness</artifactId>
+    <packaging>war</packaging>
+    <name>Mojarra ${project.version} - Test - Agnostic - State Saving - Disable ID Uniqueness</name>
+    <build>
+        <finalName>test-agnostic-statesaving-disableiduniqueness</finalName>
+    </build>
+    <properties>
+        <netbeans.hint.deploy.server>gfv3ee6</netbeans.hint.deploy.server>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/test/agnostic/stateSaving/disableIdUniqueness/src/main/webapp/WEB-INF/faces-config.xml b/test/agnostic/stateSaving/disableIdUniqueness/src/main/webapp/WEB-INF/faces-config.xml
new file mode 100644
index 0000000..8581909
--- /dev/null
+++ b/test/agnostic/stateSaving/disableIdUniqueness/src/main/webapp/WEB-INF/faces-config.xml
@@ -0,0 +1,45 @@
+<?xml version='1.0' encoding='UTF-8'?>
+
+<!--
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ 
+ Copyright 1997-2012 Sun Microsystems, Inc. All rights reserved.
+ 
+ The contents of this file are subject to the terms of either the GNU
+ General Public License Version 2 only ("GPL") or the Common Development
+ and Distribution License("CDDL") (collectively, the "License").  You
+ may not use this file except in compliance with the License. You can obtain
+ a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
+ or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ language governing permissions and limitations under the License.
+ 
+ When distributing the software, include this License Header Notice in each
+ file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
+ Sun designates this particular file as subject to the "Classpath" exception
+ as provided by Sun in the GPL Version 2 section of the License file that
+ accompanied this code.  If applicable, add the following below the License
+ Header, with the fields enclosed by brackets [] replaced by your own
+ identifying information: "Portions Copyrighted [year]
+ [name of copyright owner]"
+ 
+ Contributor(s):
+ 
+ If you wish your version of this file to be governed by only the CDDL or
+ only the GPL Version 2, indicate your decision by adding "[Contributor]
+ elects to include this software in this distribution under the [CDDL or GPL
+ Version 2] license."  If you don't indicate a single choice of license, a
+ recipient has the option to distribute your version of this file under
+ either the CDDL, the GPL Version 2 or to extend the choice of license to
+ its licensees as provided above.  However, if you add GPL Version 2 code
+ and therefore, elected the GPL Version 2 license, then the option applies
+ only if the new code is made subject to such option by the copyright
+ holder.
+-->
+
+
+<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
+    version="2.0">
+  
+</faces-config>
diff --git a/test/agnostic/stateSaving/disableIdUniqueness/src/main/webapp/WEB-INF/glassfish-web.xml b/test/agnostic/stateSaving/disableIdUniqueness/src/main/webapp/WEB-INF/glassfish-web.xml
new file mode 100644
index 0000000..42195cb
--- /dev/null
+++ b/test/agnostic/stateSaving/disableIdUniqueness/src/main/webapp/WEB-INF/glassfish-web.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
+<glassfish-web-app error-url="">
+    <context-root>/test-agnostic-statesaving-disableiduniqueness</context-root>
+    <class-loader delegate="true"/>
+    <jsp-config>
+        <property name="keepgenerated" value="true">
+            <description>Keep a copy of the generated servlet class' java code.</description>
+        </property>
+    </jsp-config>
+</glassfish-web-app>
diff --git a/test/agnostic/stateSaving/disableIdUniqueness/src/main/webapp/WEB-INF/web.xml b/test/agnostic/stateSaving/disableIdUniqueness/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..e5313ec
--- /dev/null
+++ b/test/agnostic/stateSaving/disableIdUniqueness/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,69 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+ Copyright 1997-2012 Sun Microsystems, Inc. All rights reserved.
+
+ The contents of this file are subject to the terms of either the GNU
+ General Public License Version 2 only ("GPL") or the Common Development
+ and Distribution License("CDDL") (collectively, the "License").  You
+ may not use this file except in compliance with the License. You can obtain
+ a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
+ or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ language governing permissions and limitations under the License.
+
+ When distributing the software, include this License Header Notice in each
+ file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
+ Sun designates this particular file as subject to the "Classpath" exception
+ as provided by Sun in the GPL Version 2 section of the License file that
+ accompanied this code.  If applicable, add the following below the License
+ Header, with the fields enclosed by brackets [] replaced by your own
+ identifying information: "Portions Copyrighted [year]
+ [name of copyright owner]"
+
+ Contributor(s):
+
+ If you wish your version of this file to be governed by only the CDDL or
+ only the GPL Version 2, indicate your decision by adding "[Contributor]
+ elects to include this software in this distribution under the [CDDL or GPL
+ Version 2] license."  If you don't indicate a single choice of license, a
+ recipient has the option to distribute your version of this file under
+ either the CDDL, the GPL Version 2 or to extend the choice of license to
+ its licensees as provided above.  However, if you add GPL Version 2 code
+ and therefore, elected the GPL Version 2 license, then the option applies
+ only if the new code is made subject to such option by the copyright
+ holder.
+
+-->
+
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>Production</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
+        <param-value>${webapp.partialStateSaving}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>${webapp.stateSavingMethod}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>com.sun.faces.disableIdUniquenessCheck</param-name>
+        <param-value>true</param-value>
+    </context-param>
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <welcome-file-list>
+        <welcome-file>faces/hello.xhtml</welcome-file>
+    </welcome-file-list>
+</web-app>
diff --git a/test/agnostic/stateSaving/disableIdUniqueness/src/main/webapp/hello.xhtml b/test/agnostic/stateSaving/disableIdUniqueness/src/main/webapp/hello.xhtml
new file mode 100644
index 0000000..72ca98a
--- /dev/null
+++ b/test/agnostic/stateSaving/disableIdUniqueness/src/main/webapp/hello.xhtml
@@ -0,0 +1,55 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:f="http://java.sun.com/jsf/core"      
+      xmlns:h="http://java.sun.com/jsf/html">
+    <f:view contentType="text/html">
+        <h:body>
+            <h:form>
+                <h:outputText id="hello1" value="#{facesContext}"/> <br/>
+                <h:outputText id="hello1" value="#{facesContext}"/> <br/>
+            </h:form>
+        </h:body>
+    </f:view>
+</html>
diff --git a/test/agnostic/stateSaving/disableIdUniqueness/src/test/java/com/sun/faces/test/agnostic/statesaving/disableiduniqueness/Issue2414IT.java b/test/agnostic/stateSaving/disableIdUniqueness/src/test/java/com/sun/faces/test/agnostic/statesaving/disableiduniqueness/Issue2414IT.java
new file mode 100644
index 0000000..10b2b9d
--- /dev/null
+++ b/test/agnostic/stateSaving/disableIdUniqueness/src/test/java/com/sun/faces/test/agnostic/statesaving/disableiduniqueness/Issue2414IT.java
@@ -0,0 +1,69 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDLGPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.statesaving.disableiduniqueness;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.*;
+import static org.junit.Assert.*;
+
+public class Issue2414IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testHelloPage() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/hello.xhtml");
+        assertEquals(200, page.getWebResponse().getStatusCode());
+        assertTrue(page.asText().contains("com.sun.faces.context.FacesContextImpl"));
+    }
+}
diff --git a/test/agnostic/stateSaving/pom.xml b/test/agnostic/stateSaving/pom.xml
new file mode 100644
index 0000000..d800447
--- /dev/null
+++ b/test/agnostic/stateSaving/pom.xml
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.agnostic</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.agnostic.statesaving</groupId>
+    <artifactId>pom</artifactId>
+    <packaging>pom</packaging>
+    <name>Mojarra ${project.version} - Test - Agnostic - State Saving</name>
+    <modules>
+        <module>basic</module>
+        <module>disableIdUniqueness</module>
+        <module>serializeServerState</module>
+    </modules>
+</project>
diff --git a/test/agnostic/stateSaving/serializeServerState/pom.xml b/test/agnostic/stateSaving/serializeServerState/pom.xml
new file mode 100644
index 0000000..0089a40
--- /dev/null
+++ b/test/agnostic/stateSaving/serializeServerState/pom.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.agnostic.statesaving</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.agnostic.statesaving</groupId>
+    <artifactId>serializeServerState</artifactId>
+    <packaging>war</packaging>
+    <name>Mojarra ${project.version} - Test - Agnostic - State Saving - Serialize Server State</name>
+    <build>
+        <finalName>test-agnostic-statesaving-serializeserverstate</finalName>
+    </build>
+    <properties>
+        <netbeans.hint.deploy.server>gfv3ee6</netbeans.hint.deploy.server>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/test/agnostic/stateSaving/serializeServerState/src/main/webapp/WEB-INF/faces-config.xml b/test/agnostic/stateSaving/serializeServerState/src/main/webapp/WEB-INF/faces-config.xml
new file mode 100644
index 0000000..64d35d7
--- /dev/null
+++ b/test/agnostic/stateSaving/serializeServerState/src/main/webapp/WEB-INF/faces-config.xml
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+
+<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
+              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+              xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
+              version="2.0">
+</faces-config>
diff --git a/test/agnostic/stateSaving/serializeServerState/src/main/webapp/WEB-INF/glassfish-web.xml b/test/agnostic/stateSaving/serializeServerState/src/main/webapp/WEB-INF/glassfish-web.xml
new file mode 100644
index 0000000..d2f792f
--- /dev/null
+++ b/test/agnostic/stateSaving/serializeServerState/src/main/webapp/WEB-INF/glassfish-web.xml
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<glassfish-web-app error-url="">
+  <context-root>/test-agnostic-statesaving-serializeserverstate</context-root>
+  <class-loader delegate="true"/>
+  <jsp-config>
+    <property name="keepgenerated" value="true">
+      <description>Keep a copy of the generated servlet class' java code.</description>
+    </property>
+  </jsp-config>
+</glassfish-web-app>
diff --git a/test/agnostic/stateSaving/serializeServerState/src/main/webapp/WEB-INF/web.xml b/test/agnostic/stateSaving/serializeServerState/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..8136bd9
--- /dev/null
+++ b/test/agnostic/stateSaving/serializeServerState/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,74 @@
+<?xml version='1.0' encoding='UTF-8'?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>${webapp.projectStage}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
+        <param-value>${webapp.partialStateSaving}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>${webapp.stateSavingMethod}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>com.sun.faces.serializeServerState</param-name>
+        <param-value>true</param-value>
+    </context-param>
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <welcome-file-list>
+        <welcome-file>faces/hello.xhtml</welcome-file>
+    </welcome-file-list>
+</web-app>
diff --git a/test/agnostic/stateSaving/serializeServerState/src/main/webapp/simpleFormSubmit.xhtml b/test/agnostic/stateSaving/serializeServerState/src/main/webapp/simpleFormSubmit.xhtml
new file mode 100644
index 0000000..a017712
--- /dev/null
+++ b/test/agnostic/stateSaving/serializeServerState/src/main/webapp/simpleFormSubmit.xhtml
@@ -0,0 +1,58 @@
+<?xml version='1.0' encoding='UTF-8'?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title>Serialize server state test</title>
+    </h:head>
+    <h:body>
+        <h:form id="form">
+            Just press submit!
+            <h:commandButton id="submit" value="Submit"/>
+        </h:form>
+    </h:body>
+</html>
diff --git a/test/agnostic/stateSaving/serializeServerState/src/test/java/com/sun/faces/test/agnostic/statesaving/serializeserverstate/Issue3000IT.java b/test/agnostic/stateSaving/serializeServerState/src/test/java/com/sun/faces/test/agnostic/statesaving/serializeserverstate/Issue3000IT.java
new file mode 100644
index 0000000..8d72517
--- /dev/null
+++ b/test/agnostic/stateSaving/serializeServerState/src/test/java/com/sun/faces/test/agnostic/statesaving/serializeserverstate/Issue3000IT.java
@@ -0,0 +1,79 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDLGPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.statesaving.serializeserverstate;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlElement;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.sun.faces.test.junit.JsfTest;
+import com.sun.faces.test.junit.JsfTestRunner;
+import com.sun.faces.test.junit.JsfVersion;
+import org.junit.*;
+import static org.junit.Assert.*;
+import org.junit.runner.RunWith;
+
+ at RunWith(JsfTestRunner.class)
+public class Issue3000IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @JsfTest(JsfVersion.JSF_2_2_3)
+    @Test
+    public void testSerializeServerState() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/simpleFormSubmit.xhtml");
+        assertEquals(200, page.getWebResponse().getStatusCode());
+        HtmlElement submit = page.getHtmlElementById("form:submit");
+        page = submit.click();
+        assertEquals(200, page.getWebResponse().getStatusCode());
+        assertTrue(page.asXml().indexOf("Just press submit!") != -1);
+    }
+}
diff --git a/test/agnostic/vdl/facelets/contracts/basic/nbactions.xml b/test/agnostic/vdl/facelets/contracts/basic/nbactions.xml
new file mode 100644
index 0000000..8be4c65
--- /dev/null
+++ b/test/agnostic/vdl/facelets/contracts/basic/nbactions.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<actions>
+        <action>
+            <actionName>test.single</actionName>
+            <goals>
+                <goal>test-compile</goal>
+                <goal>surefire:test</goal>
+            </goals>
+            <properties>
+                <test>${packageClassName}</test>
+                <integration.url>http://localhost:8080/test-agnostic-vdl-facelets-contracts-basic/</integration.url>
+            </properties>
+        </action>
+        <action>
+            <actionName>debug.test.single</actionName>
+            <goals>
+                <goal>test-compile</goal>
+                <goal>surefire:test</goal>
+            </goals>
+            <properties>
+                <test>${packageClassName}</test>
+                <forkMode>once</forkMode>
+                <maven.surefire.debug>-Xdebug -Xrunjdwp:transport=dt_socket,server=n,address=${jpda.address}</maven.surefire.debug>
+                <jpda.listen>true</jpda.listen>
+                <integration.url>http://localhost:8080/test-agnostic-vdl-facelets-contracts-basic/</integration.url>
+            </properties>
+        </action>
+    </actions>
diff --git a/test/agnostic/vdl/facelets/contracts/basic/pom.xml b/test/agnostic/vdl/facelets/contracts/basic/pom.xml
new file mode 100644
index 0000000..fc3151a
--- /dev/null
+++ b/test/agnostic/vdl/facelets/contracts/basic/pom.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.agnostic.vdl.facelets.contracts</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.agnostic.vdl.facelets.contracts</groupId>
+    <artifactId>basic</artifactId>
+    <packaging>war</packaging>
+    <name>Mojarra ${project.version} - Test - Agnostic - VDL - Facelets - Contracts - Basic</name>
+    <build>
+        <finalName>test-agnostic-vdl-facelets-contracts-basic</finalName>
+    </build>
+    <properties>
+        <netbeans.hint.deploy.server>gfv3ee6</netbeans.hint.deploy.server>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/test/agnostic/vdl/facelets/contracts/basic/src/main/webapp/WEB-INF/glassfish-web.xml b/test/agnostic/vdl/facelets/contracts/basic/src/main/webapp/WEB-INF/glassfish-web.xml
new file mode 100644
index 0000000..46915bd
--- /dev/null
+++ b/test/agnostic/vdl/facelets/contracts/basic/src/main/webapp/WEB-INF/glassfish-web.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
+<glassfish-web-app error-url="">
+  <context-root>/test-agnostic-vdl-facelets-contracts-basic</context-root>
+  <class-loader delegate="true"/>
+  <jsp-config>
+    <property name="keepgenerated" value="true">
+      <description>Keep a copy of the generated servlet class' java code.</description>
+    </property>
+  </jsp-config>
+</glassfish-web-app>
diff --git a/test/agnostic/vdl/facelets/contracts/basic/src/main/webapp/WEB-INF/web.xml b/test/agnostic/vdl/facelets/contracts/basic/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..94e2237
--- /dev/null
+++ b/test/agnostic/vdl/facelets/contracts/basic/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>${webapp.projectStage}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
+        <param-value>${webapp.partialStateSaving}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>${webapp.stateSavingMethod}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.FACELETS_REFRESH_PERIOD</param-name>
+        <param-value>3600</param-value>
+    </context-param>
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <welcome-file-list>
+        <welcome-file>/faces/index.xhtml</welcome-file>
+    </welcome-file-list>
+</web-app>
diff --git a/test/agnostic/vdl/facelets/contracts/basic/src/main/webapp/contracts/siteLayout/cssLayout.css b/test/agnostic/vdl/facelets/contracts/basic/src/main/webapp/contracts/siteLayout/cssLayout.css
new file mode 100644
index 0000000..8ee7ceb
--- /dev/null
+++ b/test/agnostic/vdl/facelets/contracts/basic/src/main/webapp/contracts/siteLayout/cssLayout.css
@@ -0,0 +1,61 @@
+
+#top {
+    position: relative;
+    background-color: #036fab;
+    color: white;
+    padding: 5px;
+    margin: 0px 0px 10px 0px;
+}
+
+#bottom {
+    position: relative;
+    background-color: #c2dfef;
+    padding: 5px;
+    margin: 10px 0px 0px 0px;
+}
+
+#left {
+    float: left;
+    background-color: #ece3a5;
+    padding: 5px;
+    width: 150px;
+}
+
+#right {
+    float: right;
+    background-color: #ece3a5;
+    padding: 5px;
+    width: 150px;
+}
+
+.center_content {
+    position: relative;
+    background-color: #dddddd;
+    padding: 5px;
+}
+
+.left_content {
+    background-color: #dddddd;
+    padding: 5px;
+    margin-left: 170px;
+}
+
+.right_content {
+    background-color: #dddddd;
+    padding: 5px;
+    margin: 0px 170px 0px 170px;
+}
+
+#top a:link, #top a:visited {
+  color: white;
+  font-weight : bold;
+  text-decoration: none;
+}
+
+#top a:link:hover, #top a:visited:hover  {
+  color: black;
+  font-weight : bold;
+  text-decoration : underline;
+}
+
+
diff --git a/test/agnostic/vdl/facelets/contracts/basic/src/main/webapp/contracts/siteLayout/default.css b/test/agnostic/vdl/facelets/contracts/basic/src/main/webapp/contracts/siteLayout/default.css
new file mode 100644
index 0000000..6cbc3d1
--- /dev/null
+++ b/test/agnostic/vdl/facelets/contracts/basic/src/main/webapp/contracts/siteLayout/default.css
@@ -0,0 +1,29 @@
+body {
+    background-color: #ffffff;
+    font-size: 12px;
+    font-family: Verdana, "Verdana CE",  Arial, "Arial CE", "Lucida Grande CE", lucida, "Helvetica CE", sans-serif;
+    color: #000000;  
+    margin: 10px;
+}
+
+h1 {
+    font-family: Arial, "Arial CE", "Lucida Grande CE", lucida, "Helvetica CE", sans-serif;
+    border-bottom: 1px solid #AFAFAF; 
+    font-size:  16px;
+    font-weight: bold;
+    margin: 0px;
+    padding: 0px;
+    color: #D20005;
+}
+
+a:link, a:visited {
+  color: #045491;
+  font-weight : bold;
+  text-decoration: none;
+}
+
+a:link:hover, a:visited:hover  {
+  color: #045491;
+  font-weight : bold;
+  text-decoration : underline;
+}
diff --git a/test/agnostic/vdl/facelets/contracts/basic/src/main/webapp/contracts/siteLayout/leftNav_foo.xhtml b/test/agnostic/vdl/facelets/contracts/basic/src/main/webapp/contracts/siteLayout/leftNav_foo.xhtml
new file mode 100644
index 0000000..81a00ab
--- /dev/null
+++ b/test/agnostic/vdl/facelets/contracts/basic/src/main/webapp/contracts/siteLayout/leftNav_foo.xhtml
@@ -0,0 +1,68 @@
+<?xml version='1.0' encoding='UTF-8' ?> 
+<!DOCTYPE html>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:h="http://java.sun.com/jsf/html">
+
+    <h:head>
+        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+        <h:outputStylesheet name="default.css" />
+        <h:outputStylesheet name="cssLayout.css" />
+        <title><ui:insert name="title"></ui:insert></title>
+    </h:head>
+
+    <h:body>
+
+        <div id="left">
+            <p>Left Side Navigation Menu</p>
+            <ui:insert name="nav">Nav Content</ui:insert>
+        </div>
+        
+        <div id="content" class="left_content">
+            <ui:insert name="content">Content</ui:insert>
+        </div>
+
+    </h:body>
+
+</html>
diff --git a/test/agnostic/vdl/facelets/contracts/basic/src/main/webapp/contracts/siteLayout/topNav_Template.xhtml b/test/agnostic/vdl/facelets/contracts/basic/src/main/webapp/contracts/siteLayout/topNav_Template.xhtml
new file mode 100644
index 0000000..d9a4e7d
--- /dev/null
+++ b/test/agnostic/vdl/facelets/contracts/basic/src/main/webapp/contracts/siteLayout/topNav_Template.xhtml
@@ -0,0 +1,68 @@
+<?xml version='1.0' encoding='UTF-8' ?> 
+<!DOCTYPE html>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:h="http://java.sun.com/jsf/html">
+
+    <h:head>
+        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+        <h:outputStylesheet id="default" name="default.css" />
+        <h:outputStylesheet name="cssLayout.css" />
+        <title><ui:insert name="title"></ui:insert></title>
+    </h:head>
+
+    <h:body>
+
+        <div id="top" class="top">
+            <p>Top Navigation Menu</p>
+            <ui:insert name="nav">Nav content</ui:insert>
+        </div>
+
+        <div id="content" class="center_content">
+            <ui:insert name="content">Content</ui:insert>
+        </div>
+
+    </h:body>
+
+</html>
diff --git a/test/agnostic/vdl/facelets/contracts/basic/src/main/webapp/index.xhtml b/test/agnostic/vdl/facelets/contracts/basic/src/main/webapp/index.xhtml
new file mode 100644
index 0000000..d487cf1
--- /dev/null
+++ b/test/agnostic/vdl/facelets/contracts/basic/src/main/webapp/index.xhtml
@@ -0,0 +1,72 @@
+<?xml version='1.0' encoding='UTF-8'?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+    <body>
+        <ui:composition template="/topNav_Template.xhtml">
+            <ui:define name="title">
+                title
+            </ui:define>
+            <ui:define name="nav">
+                nav
+            </ui:define>
+            <ui:define name="content">
+                <h:form prependId="false">                
+                    <p>
+                        <h:commandButton id="button" value="next" action="page2" />
+                    </p>
+                </h:form>
+                <h:form prependId="false">
+                    <p>
+                        <h:commandButton id="currentButton" value="Stay here"/>
+                    </p>
+                </h:form>
+            </ui:define>
+        </ui:composition>
+    </body>
+</html>
diff --git a/test/agnostic/vdl/facelets/contracts/basic/src/main/webapp/page2.xhtml b/test/agnostic/vdl/facelets/contracts/basic/src/main/webapp/page2.xhtml
new file mode 100644
index 0000000..3d26b01
--- /dev/null
+++ b/test/agnostic/vdl/facelets/contracts/basic/src/main/webapp/page2.xhtml
@@ -0,0 +1,25 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+
+    <body>
+
+        <ui:composition template="/leftNav_foo.xhtml">
+
+            <ui:define name="title">
+                title
+            </ui:define>
+
+            <ui:define name="nav">
+                nav
+            </ui:define>
+
+            <ui:define name="content">
+                content
+            </ui:define>
+
+        </ui:composition>
+
+    </body>
+</html>
diff --git a/test/agnostic/vdl/facelets/contracts/basic/src/test/java/com/sun/faces/test/agnostic/vdl/facelets/contracts/basic/Issue2511IT.java b/test/agnostic/vdl/facelets/contracts/basic/src/test/java/com/sun/faces/test/agnostic/vdl/facelets/contracts/basic/Issue2511IT.java
new file mode 100644
index 0000000..665b4b0
--- /dev/null
+++ b/test/agnostic/vdl/facelets/contracts/basic/src/test/java/com/sun/faces/test/agnostic/vdl/facelets/contracts/basic/Issue2511IT.java
@@ -0,0 +1,123 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.test.agnostic.vdl.facelets.contracts.basic;
+
+import java.io.BufferedReader;
+import java.io.InputStreamReader;
+import java.net.URL;
+import com.gargoylesoftware.htmlunit.html.HtmlLink;
+import com.gargoylesoftware.htmlunit.html.HtmlElement;
+import com.gargoylesoftware.htmlunit.html.DomNodeList;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.DomElement;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+public class Issue2511IT {
+    
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testTemplatesAreUsed() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/index.xhtml");
+        String text = page.asText();
+        
+        assertTrue(text.contains("Top Navigation Menu"));
+        
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("button");
+        page = button.click();
+        
+        text = page.asText();
+        assertTrue(text.contains("Left Side Navigation Menu"));
+        
+    }
+
+    @Test
+    public void testResourcesAreRendered() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/index.xhtml");
+        
+        examineCss(page.getElementsByTagName("link"));
+        
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("button");
+        page = button.click();
+        
+        examineCss(page.getElementsByTagName("link"));
+    }
+    
+    private void examineCss(DomNodeList<DomElement> cssFiles) throws Exception {
+        HtmlLink curLink;
+        String href;
+        String content;
+        for (DomElement cur : cssFiles) {
+            curLink = (HtmlLink) cur;
+            href = curLink.getHrefAttribute();
+            assertTrue(href.contains("con=siteLayout"));
+            if (href.contains("default.css")) {
+                content = curLink.getWebResponse(true).getContentAsString("UTF-8");
+                assertTrue(content.contains("#AFAFAF"));
+            } else if (href.contains("cssLayout.css")) {
+                content = curLink.getWebResponse(true).getContentAsString("UTF-8");
+                assertTrue(content.contains("#036fab"));
+            } else {
+                fail();
+            }
+        }
+        
+    }
+
+}
diff --git a/test/agnostic/vdl/facelets/contracts/basic/src/test/java/com/sun/faces/test/agnostic/vdl/facelets/contracts/basic/Issue2914IT.java b/test/agnostic/vdl/facelets/contracts/basic/src/test/java/com/sun/faces/test/agnostic/vdl/facelets/contracts/basic/Issue2914IT.java
new file mode 100644
index 0000000..0d2e4eb
--- /dev/null
+++ b/test/agnostic/vdl/facelets/contracts/basic/src/test/java/com/sun/faces/test/agnostic/vdl/facelets/contracts/basic/Issue2914IT.java
@@ -0,0 +1,74 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.test.agnostic.vdl.facelets.contracts.basic;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlElement;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.After;
+import static org.junit.Assert.assertEquals;
+import org.junit.Before;
+import org.junit.Test;
+
+public class Issue2914IT {
+    
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testTemplatesAreUsed() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/index.xhtml");
+        HtmlElement stayButton = page.getHtmlElementById("currentButton");
+        page = stayButton.click();
+        assertEquals(200, page.getWebResponse().getStatusCode());
+    }
+}
diff --git a/test/agnostic/vdl/facelets/contracts/basic_contract_in_jar/nbactions.xml b/test/agnostic/vdl/facelets/contracts/basic_contract_in_jar/nbactions.xml
new file mode 100644
index 0000000..24b262f
--- /dev/null
+++ b/test/agnostic/vdl/facelets/contracts/basic_contract_in_jar/nbactions.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<actions>
+        <action>
+            <actionName>test.single</actionName>
+            <goals>
+                <goal>test-compile</goal>
+                <goal>surefire:test</goal>
+            </goals>
+            <properties>
+                <test>${packageClassName}</test>
+                <integration.url>http://localhost:8080/test-agnostic-vdl-facelets-contracts-basic_contract_in_jar/</integration.url>
+            </properties>
+        </action>
+        <action>
+            <actionName>debug.test.single</actionName>
+            <goals>
+                <goal>test-compile</goal>
+                <goal>surefire:test</goal>
+            </goals>
+            <properties>
+                <test>${packageClassName}</test>
+                <forkMode>once</forkMode>
+                <maven.surefire.debug>-Xdebug -Xrunjdwp:transport=dt_socket,server=n,address=${jpda.address}</maven.surefire.debug>
+                <jpda.listen>true</jpda.listen>
+                <integration.url>http://localhost:8080/test-agnostic-vdl-facelets-contracts-basic_contract_in_jar/</integration.url>
+            </properties>
+        </action>
+    </actions>
diff --git a/test/agnostic/vdl/facelets/contracts/basic_contract_in_jar/pom.xml b/test/agnostic/vdl/facelets/contracts/basic_contract_in_jar/pom.xml
new file mode 100644
index 0000000..de2fe79
--- /dev/null
+++ b/test/agnostic/vdl/facelets/contracts/basic_contract_in_jar/pom.xml
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.agnostic.vdl.facelets.contracts</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.agnostic.vdl.facelets.contracts</groupId>
+    <artifactId>basic_contract_in_jar</artifactId>
+    <packaging>war</packaging>
+    <name>Mojarra ${project.version} - Test - Agnostic - VDL - Facelets - Contracts - Basic using contract in JAR</name>
+    <build>
+        <finalName>test-agnostic-vdl-facelets-contracts-basic_contract_in_jar</finalName>
+    </build>
+    <dependencies>
+      <dependency>
+        <groupId>com.sun.faces.test.agnostic.vdl.facelets.contracts</groupId>
+        <artifactId>contract_jar</artifactId>
+        <version>${project.version}</version>
+      </dependency>
+    </dependencies>
+    <properties>
+        <netbeans.hint.deploy.server>gfv3ee6</netbeans.hint.deploy.server>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/test/agnostic/vdl/facelets/contracts/basic_contract_in_jar/src/main/webapp/WEB-INF/glassfish-web.xml b/test/agnostic/vdl/facelets/contracts/basic_contract_in_jar/src/main/webapp/WEB-INF/glassfish-web.xml
new file mode 100644
index 0000000..696d2ae
--- /dev/null
+++ b/test/agnostic/vdl/facelets/contracts/basic_contract_in_jar/src/main/webapp/WEB-INF/glassfish-web.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
+<glassfish-web-app error-url="">
+  <context-root>/test-agnostic-vdl-facelets-contracts-basic_contract_in_jar</context-root>
+  <class-loader delegate="true"/>
+  <jsp-config>
+    <property name="keepgenerated" value="true">
+      <description>Keep a copy of the generated servlet class' java code.</description>
+    </property>
+  </jsp-config>
+</glassfish-web-app>
diff --git a/test/agnostic/vdl/facelets/contracts/basic_contract_in_jar/src/main/webapp/WEB-INF/web.xml b/test/agnostic/vdl/facelets/contracts/basic_contract_in_jar/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..94e2237
--- /dev/null
+++ b/test/agnostic/vdl/facelets/contracts/basic_contract_in_jar/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>${webapp.projectStage}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
+        <param-value>${webapp.partialStateSaving}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>${webapp.stateSavingMethod}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.FACELETS_REFRESH_PERIOD</param-name>
+        <param-value>3600</param-value>
+    </context-param>
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <welcome-file-list>
+        <welcome-file>/faces/index.xhtml</welcome-file>
+    </welcome-file-list>
+</web-app>
diff --git a/test/agnostic/vdl/facelets/contracts/basic_contract_in_jar/src/main/webapp/index.xhtml b/test/agnostic/vdl/facelets/contracts/basic_contract_in_jar/src/main/webapp/index.xhtml
new file mode 100644
index 0000000..b7837f1
--- /dev/null
+++ b/test/agnostic/vdl/facelets/contracts/basic_contract_in_jar/src/main/webapp/index.xhtml
@@ -0,0 +1,30 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:h="http://java.sun.com/jsf/html">
+
+    <body>
+
+        <ui:composition template="/topNav_Template.xhtml">
+
+            <ui:define name="title">
+                title
+            </ui:define>
+
+            <ui:define name="nav">
+                nav
+            </ui:define>
+
+            <ui:define name="content">
+                
+                <h:form prependId="false">                
+                    
+                <p><h:commandButton id="button" value="next" action="page2" /></p>
+                
+                </h:form>
+            </ui:define>
+
+        </ui:composition>
+
+    </body>
+</html>
diff --git a/test/agnostic/vdl/facelets/contracts/basic_contract_in_jar/src/main/webapp/page2.xhtml b/test/agnostic/vdl/facelets/contracts/basic_contract_in_jar/src/main/webapp/page2.xhtml
new file mode 100644
index 0000000..3d26b01
--- /dev/null
+++ b/test/agnostic/vdl/facelets/contracts/basic_contract_in_jar/src/main/webapp/page2.xhtml
@@ -0,0 +1,25 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+
+    <body>
+
+        <ui:composition template="/leftNav_foo.xhtml">
+
+            <ui:define name="title">
+                title
+            </ui:define>
+
+            <ui:define name="nav">
+                nav
+            </ui:define>
+
+            <ui:define name="content">
+                content
+            </ui:define>
+
+        </ui:composition>
+
+    </body>
+</html>
diff --git a/test/agnostic/vdl/facelets/contracts/basic_contract_in_jar/src/test/java/com/sun/faces/test/agnostic/vdl/facelets/contracts/basic_in_jar/Issue2511IT.java b/test/agnostic/vdl/facelets/contracts/basic_contract_in_jar/src/test/java/com/sun/faces/test/agnostic/vdl/facelets/contracts/basic_in_jar/Issue2511IT.java
new file mode 100644
index 0000000..fd6d8c4
--- /dev/null
+++ b/test/agnostic/vdl/facelets/contracts/basic_contract_in_jar/src/test/java/com/sun/faces/test/agnostic/vdl/facelets/contracts/basic_in_jar/Issue2511IT.java
@@ -0,0 +1,120 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.test.agnostic.vdl.facelets.contracts.basic_in_jar;
+
+import com.gargoylesoftware.htmlunit.html.HtmlLink;
+import com.gargoylesoftware.htmlunit.html.HtmlElement;
+import com.gargoylesoftware.htmlunit.html.DomNodeList;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.DomElement;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+public class Issue2511IT {
+    
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testTemplatesAreUsed() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/index.xhtml");
+        String text = page.asText();
+        
+        assertTrue(text.contains("Top Navigation Menu"));
+        
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("button");
+        page = button.click();
+        
+        text = page.asText();
+        assertTrue(text.contains("Left Side Navigation Menu"));
+        
+    }
+
+    @Test
+    public void testResourcesAreRendered() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/index.xhtml");
+        
+        examineCss(page.getElementsByTagName("link"));
+        
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("button");
+        page = button.click();
+        
+        examineCss(page.getElementsByTagName("link"));
+    }
+    
+    private void examineCss(DomNodeList<DomElement> cssFiles) throws Exception {
+        HtmlLink curLink;
+        String href;
+        String content;
+        for (DomElement cur : cssFiles) {
+            curLink = (HtmlLink) cur;
+            href = curLink.getHrefAttribute();
+            assertTrue(href.contains("con=siteLayout"));
+            if (href.contains("default.css")) {
+                content = curLink.getWebResponse(true).getContentAsString("UTF-8");
+                assertTrue(content.contains("#AFAFAF"));
+            } else if (href.contains("cssLayout.css")) {
+                content = curLink.getWebResponse(true).getContentAsString("UTF-8");
+                assertTrue(content.contains("#036fab"));
+            } else {
+                fail();
+            }
+        }
+        
+    }
+
+}
diff --git a/test/agnostic/vdl/facelets/contracts/basic_contract_jar/pom.xml b/test/agnostic/vdl/facelets/contracts/basic_contract_jar/pom.xml
new file mode 100644
index 0000000..74e8283
--- /dev/null
+++ b/test/agnostic/vdl/facelets/contracts/basic_contract_jar/pom.xml
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" 
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.agnostic.vdl.facelets.contracts</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.agnostic.vdl.facelets.contracts</groupId>
+    <artifactId>contract_jar</artifactId>
+    <packaging>jar</packaging>
+    <name>Mojarra ${project.version} - Test - Agnostic - VDL - Facelets - Contracts - Contract in JAR, the actual jar</name>
+    <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/test/agnostic/vdl/facelets/contracts/basic_contract_jar/src/main/resources/META-INF/contracts/siteLayout/cssLayout.css b/test/agnostic/vdl/facelets/contracts/basic_contract_jar/src/main/resources/META-INF/contracts/siteLayout/cssLayout.css
new file mode 100644
index 0000000..8ee7ceb
--- /dev/null
+++ b/test/agnostic/vdl/facelets/contracts/basic_contract_jar/src/main/resources/META-INF/contracts/siteLayout/cssLayout.css
@@ -0,0 +1,61 @@
+
+#top {
+    position: relative;
+    background-color: #036fab;
+    color: white;
+    padding: 5px;
+    margin: 0px 0px 10px 0px;
+}
+
+#bottom {
+    position: relative;
+    background-color: #c2dfef;
+    padding: 5px;
+    margin: 10px 0px 0px 0px;
+}
+
+#left {
+    float: left;
+    background-color: #ece3a5;
+    padding: 5px;
+    width: 150px;
+}
+
+#right {
+    float: right;
+    background-color: #ece3a5;
+    padding: 5px;
+    width: 150px;
+}
+
+.center_content {
+    position: relative;
+    background-color: #dddddd;
+    padding: 5px;
+}
+
+.left_content {
+    background-color: #dddddd;
+    padding: 5px;
+    margin-left: 170px;
+}
+
+.right_content {
+    background-color: #dddddd;
+    padding: 5px;
+    margin: 0px 170px 0px 170px;
+}
+
+#top a:link, #top a:visited {
+  color: white;
+  font-weight : bold;
+  text-decoration: none;
+}
+
+#top a:link:hover, #top a:visited:hover  {
+  color: black;
+  font-weight : bold;
+  text-decoration : underline;
+}
+
+
diff --git a/test/agnostic/vdl/facelets/contracts/basic_contract_jar/src/main/resources/META-INF/contracts/siteLayout/default.css b/test/agnostic/vdl/facelets/contracts/basic_contract_jar/src/main/resources/META-INF/contracts/siteLayout/default.css
new file mode 100644
index 0000000..6cbc3d1
--- /dev/null
+++ b/test/agnostic/vdl/facelets/contracts/basic_contract_jar/src/main/resources/META-INF/contracts/siteLayout/default.css
@@ -0,0 +1,29 @@
+body {
+    background-color: #ffffff;
+    font-size: 12px;
+    font-family: Verdana, "Verdana CE",  Arial, "Arial CE", "Lucida Grande CE", lucida, "Helvetica CE", sans-serif;
+    color: #000000;  
+    margin: 10px;
+}
+
+h1 {
+    font-family: Arial, "Arial CE", "Lucida Grande CE", lucida, "Helvetica CE", sans-serif;
+    border-bottom: 1px solid #AFAFAF; 
+    font-size:  16px;
+    font-weight: bold;
+    margin: 0px;
+    padding: 0px;
+    color: #D20005;
+}
+
+a:link, a:visited {
+  color: #045491;
+  font-weight : bold;
+  text-decoration: none;
+}
+
+a:link:hover, a:visited:hover  {
+  color: #045491;
+  font-weight : bold;
+  text-decoration : underline;
+}
diff --git a/test/agnostic/vdl/facelets/contracts/basic_contract_jar/src/main/resources/META-INF/contracts/siteLayout/javax.faces.contract.xml b/test/agnostic/vdl/facelets/contracts/basic_contract_jar/src/main/resources/META-INF/contracts/siteLayout/javax.faces.contract.xml
new file mode 100644
index 0000000..e69de29
diff --git a/test/agnostic/vdl/facelets/contracts/basic_contract_jar/src/main/resources/META-INF/contracts/siteLayout/leftNav_foo.xhtml b/test/agnostic/vdl/facelets/contracts/basic_contract_jar/src/main/resources/META-INF/contracts/siteLayout/leftNav_foo.xhtml
new file mode 100644
index 0000000..81a00ab
--- /dev/null
+++ b/test/agnostic/vdl/facelets/contracts/basic_contract_jar/src/main/resources/META-INF/contracts/siteLayout/leftNav_foo.xhtml
@@ -0,0 +1,68 @@
+<?xml version='1.0' encoding='UTF-8' ?> 
+<!DOCTYPE html>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:h="http://java.sun.com/jsf/html">
+
+    <h:head>
+        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+        <h:outputStylesheet name="default.css" />
+        <h:outputStylesheet name="cssLayout.css" />
+        <title><ui:insert name="title"></ui:insert></title>
+    </h:head>
+
+    <h:body>
+
+        <div id="left">
+            <p>Left Side Navigation Menu</p>
+            <ui:insert name="nav">Nav Content</ui:insert>
+        </div>
+        
+        <div id="content" class="left_content">
+            <ui:insert name="content">Content</ui:insert>
+        </div>
+
+    </h:body>
+
+</html>
diff --git a/test/agnostic/vdl/facelets/contracts/basic_contract_jar/src/main/resources/META-INF/contracts/siteLayout/topNav_Template.xhtml b/test/agnostic/vdl/facelets/contracts/basic_contract_jar/src/main/resources/META-INF/contracts/siteLayout/topNav_Template.xhtml
new file mode 100644
index 0000000..d9a4e7d
--- /dev/null
+++ b/test/agnostic/vdl/facelets/contracts/basic_contract_jar/src/main/resources/META-INF/contracts/siteLayout/topNav_Template.xhtml
@@ -0,0 +1,68 @@
+<?xml version='1.0' encoding='UTF-8' ?> 
+<!DOCTYPE html>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:h="http://java.sun.com/jsf/html">
+
+    <h:head>
+        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+        <h:outputStylesheet id="default" name="default.css" />
+        <h:outputStylesheet name="cssLayout.css" />
+        <title><ui:insert name="title"></ui:insert></title>
+    </h:head>
+
+    <h:body>
+
+        <div id="top" class="top">
+            <p>Top Navigation Menu</p>
+            <ui:insert name="nav">Nav content</ui:insert>
+        </div>
+
+        <div id="content" class="center_content">
+            <ui:insert name="content">Content</ui:insert>
+        </div>
+
+    </h:body>
+
+</html>
diff --git a/test/agnostic/vdl/facelets/contracts/extended/extended_base/pom.xml b/test/agnostic/vdl/facelets/contracts/extended/extended_base/pom.xml
new file mode 100644
index 0000000..83fe508
--- /dev/null
+++ b/test/agnostic/vdl/facelets/contracts/extended/extended_base/pom.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project
+    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
+    xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.agnostic.vdl.facelets.contracts</groupId>
+        <artifactId>extended</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.agnostic.vdl.facelets.contracts.extended</groupId>
+    <artifactId>extended_base</artifactId>
+    <name>Mojarra ${project.version} - Test - Agnostic - VDL - Facelets - Contracts - extended - extended_base</name>
+    <build>
+        <finalName>test-agnostic-vdl-facelets-contracts-extended-extended_base</finalName>
+    </build>
+    <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/test/agnostic/vdl/facelets/contracts/extended/extended_base/src/main/resources/META-INF/contracts/jarbase/css/contract.css b/test/agnostic/vdl/facelets/contracts/extended/extended_base/src/main/resources/META-INF/contracts/jarbase/css/contract.css
new file mode 100644
index 0000000..638cb4b
--- /dev/null
+++ b/test/agnostic/vdl/facelets/contracts/extended/extended_base/src/main/resources/META-INF/contracts/jarbase/css/contract.css
@@ -0,0 +1,29 @@
+body {
+    background-color: #ffffff;
+    font-size: 12px;
+    font-family: Verdana, "Verdana CE",  Arial, "Arial CE", "Lucida Grande CE", lucida, "Helvetica CE", sans-serif;
+    color: #000000;  
+    margin: 10px;
+}
+
+h1 {
+    font-family: Arial, "Arial CE", "Lucida Grande CE", lucida, "Helvetica CE", sans-serif;
+    border-bottom: 1px solid #AFAFAF; 
+    font-size:  16px;
+    font-weight: bold;
+    margin: 0px;
+    padding: 0px;
+    color: #FFFFFF;
+}
+
+a:link, a:visited {
+  color: #045491;
+  font-weight : bold;
+  text-decoration: none;
+}
+
+a:link:hover, a:visited:hover  {
+  color: #045491;
+  font-weight : bold;
+  text-decoration : underline;
+}
diff --git a/test/agnostic/vdl/facelets/contracts/extended/extended_base/src/main/resources/META-INF/contracts/jarbase/css/cssLayout.css b/test/agnostic/vdl/facelets/contracts/extended/extended_base/src/main/resources/META-INF/contracts/jarbase/css/cssLayout.css
new file mode 100644
index 0000000..a90f5fa
--- /dev/null
+++ b/test/agnostic/vdl/facelets/contracts/extended/extended_base/src/main/resources/META-INF/contracts/jarbase/css/cssLayout.css
@@ -0,0 +1,24 @@
+#top {
+    position: relative;
+    background-color: gray;
+    color: white;
+    padding: 5px;
+    margin: 0px 0px 10px 0px;
+}
+.center_content {
+    position: relative;
+    background-color: lightgray;
+    padding: 5px;
+}
+
+#top a:link, #top a:visited {
+  color: white;
+  font-weight : bold;
+  text-decoration: none;
+}
+
+#top a:link:hover, #top a:visited:hover  {
+  color: black;
+  font-weight : bold;
+  text-decoration : underline;
+}
diff --git a/test/agnostic/vdl/facelets/contracts/extended/extended_base/src/main/resources/META-INF/contracts/jarbase/javax.faces.contract.xml b/test/agnostic/vdl/facelets/contracts/extended/extended_base/src/main/resources/META-INF/contracts/jarbase/javax.faces.contract.xml
new file mode 100644
index 0000000..2c0f1bc
--- /dev/null
+++ b/test/agnostic/vdl/facelets/contracts/extended/extended_base/src/main/resources/META-INF/contracts/jarbase/javax.faces.contract.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. Copyright (c) 
+    1997-2013 Oracle and/or its affiliates. All rights reserved. The contents 
+    of this file are subject to the terms of either the GNU General Public License 
+    Version 2 only ("GPL") or the Common Development and Distribution License("CDDL") 
+    (collectively, the "License"). You may not use this file except in compliance 
+    with the License. You can obtain a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html 
+    or packager/legal/LICENSE.txt. See the License for the specific language 
+    governing permissions and limitations under the License. When distributing 
+    the software, include this License Header Notice in each file and include 
+    the License file at packager/legal/LICENSE.txt. GPL Classpath Exception: 
+    Oracle designates this particular file as subject to the "Classpath" exception 
+    as provided by Oracle in the GPL Version 2 section of the License file that 
+    accompanied this code. Modifications: If applicable, add the following below 
+    the License Header, with the fields enclosed by brackets [] replaced by your 
+    own identifying information: "Portions Copyright [year] [name of copyright 
+    owner]" Contributor(s): If you wish your version of this file to be governed 
+    by only the CDDL or only the GPL Version 2, indicate your decision by adding 
+    "[Contributor] elects to include this software in this distribution under 
+    the [CDDL or GPL Version 2] license." If you don't indicate a single choice 
+    of license, a recipient has the option to distribute your version of this 
+    file under either the CDDL, the GPL Version 2 or to extend the choice of 
+    license to its licensees as provided above. However, if you add GPL Version 
+    2 code and therefore, elected the GPL Version 2 license, then the option 
+    applies only if the new code is made subject to such option by the copyright 
+    holder. -->
+
+<!-- 
+	Marker file to identify contracts in jars.
+ -->
\ No newline at end of file
diff --git a/test/agnostic/vdl/facelets/contracts/extended/extended_base/src/main/resources/META-INF/contracts/jarbase/subtemplate.xhtml b/test/agnostic/vdl/facelets/contracts/extended/extended_base/src/main/resources/META-INF/contracts/jarbase/subtemplate.xhtml
new file mode 100644
index 0000000..829890c
--- /dev/null
+++ b/test/agnostic/vdl/facelets/contracts/extended/extended_base/src/main/resources/META-INF/contracts/jarbase/subtemplate.xhtml
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. Copyright (c) 
+    1997-2013 Oracle and/or its affiliates. All rights reserved. The contents 
+    of this file are subject to the terms of either the GNU General Public License 
+    Version 2 only ("GPL") or the Common Development and Distribution License("CDDL") 
+    (collectively, the "License"). You may not use this file except in compliance 
+    with the License. You can obtain a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html 
+    or packager/legal/LICENSE.txt. See the License for the specific language 
+    governing permissions and limitations under the License. When distributing 
+    the software, include this License Header Notice in each file and include 
+    the License file at packager/legal/LICENSE.txt. GPL Classpath Exception: 
+    Oracle designates this particular file as subject to the "Classpath" exception 
+    as provided by Oracle in the GPL Version 2 section of the License file that 
+    accompanied this code. Modifications: If applicable, add the following below 
+    the License Header, with the fields enclosed by brackets [] replaced by your 
+    own identifying information: "Portions Copyright [year] [name of copyright 
+    owner]" Contributor(s): If you wish your version of this file to be governed 
+    by only the CDDL or only the GPL Version 2, indicate your decision by adding 
+    "[Contributor] elects to include this software in this distribution under 
+    the [CDDL or GPL Version 2] license." If you don't indicate a single choice 
+    of license, a recipient has the option to distribute your version of this 
+    file under either the CDDL, the GPL Version 2 or to extend the choice of 
+    license to its licensees as provided above. However, if you add GPL Version 
+    2 code and therefore, elected the GPL Version 2 license, then the option 
+    applies only if the new code is made subject to such option by the copyright 
+    holder. -->
+
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"
+	xmlns:ui="http://java.sun.com/jsf/facelets"
+	xmlns:f="http://java.sun.com/jsf/core"
+	xmlns:h="http://java.sun.com/jsf/html">
+
+<f:view>
+	<h:head>
+		<title>JSF 2.2 Resource Library Contract (contract jarbase)</title>
+		<h:outputStylesheet library="css" name="cssLayout.css" media="all" />
+		<h:outputStylesheet library="css" name="contract.css" media="all" />
+	</h:head>
+
+	<h:body>
+
+		<div id="top" class="top">
+			<ui:insert name="top">
+				<h1>(JSF 2.2 Resource Library Contract) "jarbase" template header</h1>
+			</ui:insert>
+		</div>
+
+		<div id="content" class="center_content">
+			<ui:insert name="content">Content "jarbase" template</ui:insert>
+			<hr/>
+			<h3>Combined contracts tesing:</h3>
+			<p>
+				Title bar background color depends on the actual first selected contract. 
+				Default title bar background color is gray (contract jarbase). 
+			</p>
+			<p>
+				Content background color depends on the actual base contract. 
+				Default content background color is lightgray (contract jarbase). 
+			</p>
+		</div>
+		
+		<hr/>
+		<h3>Debug information (from "jarbase" subtemplate.xhtml)</h3>
+		<div>selected contracts: [#{contractsBean.contracts}]</div>
+		<div>resolved contracts: #{facesContext.resourceLibraryContracts}</div>
+		<ui:insert name="template"/>
+	</h:body>
+
+</f:view>
+
+</html>
diff --git a/test/agnostic/vdl/facelets/contracts/extended/extended_base/src/main/resources/META-INF/contracts/jarbase/template.xhtml b/test/agnostic/vdl/facelets/contracts/extended/extended_base/src/main/resources/META-INF/contracts/jarbase/template.xhtml
new file mode 100644
index 0000000..5c9a0b5
--- /dev/null
+++ b/test/agnostic/vdl/facelets/contracts/extended/extended_base/src/main/resources/META-INF/contracts/jarbase/template.xhtml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. Copyright (c) 
+    1997-2013 Oracle and/or its affiliates. All rights reserved. The contents 
+    of this file are subject to the terms of either the GNU General Public License 
+    Version 2 only ("GPL") or the Common Development and Distribution License("CDDL") 
+    (collectively, the "License"). You may not use this file except in compliance 
+    with the License. You can obtain a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html 
+    or packager/legal/LICENSE.txt. See the License for the specific language 
+    governing permissions and limitations under the License. When distributing 
+    the software, include this License Header Notice in each file and include 
+    the License file at packager/legal/LICENSE.txt. GPL Classpath Exception: 
+    Oracle designates this particular file as subject to the "Classpath" exception 
+    as provided by Oracle in the GPL Version 2 section of the License file that 
+    accompanied this code. Modifications: If applicable, add the following below 
+    the License Header, with the fields enclosed by brackets [] replaced by your 
+    own identifying information: "Portions Copyright [year] [name of copyright 
+    owner]" Contributor(s): If you wish your version of this file to be governed 
+    by only the CDDL or only the GPL Version 2, indicate your decision by adding 
+    "[Contributor] elects to include this software in this distribution under 
+    the [CDDL or GPL Version 2] license." If you don't indicate a single choice 
+    of license, a recipient has the option to distribute your version of this 
+    file under either the CDDL, the GPL Version 2 or to extend the choice of 
+    license to its licensees as provided above. However, if you add GPL Version 
+    2 code and therefore, elected the GPL Version 2 license, then the option 
+    applies only if the new code is made subject to such option by the copyright 
+    holder. -->
+
+<ui:composition xmlns="http://www.w3.org/1999/xhtml"
+    xmlns:ui="http://java.sun.com/jsf/facelets" 
+    template="subtemplate.xhtml">
+    <!-- this construct allows to use the subtemplate.xhtml from extending contracts -->
+</ui:composition>
\ No newline at end of file
diff --git a/test/agnostic/vdl/facelets/contracts/extended/extended_base/src/main/resources/META-INF/faces-config.xml b/test/agnostic/vdl/facelets/contracts/extended/extended_base/src/main/resources/META-INF/faces-config.xml
new file mode 100644
index 0000000..160538f
--- /dev/null
+++ b/test/agnostic/vdl/facelets/contracts/extended/extended_base/src/main/resources/META-INF/faces-config.xml
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. Copyright (c) 
+    1997-2013 Oracle and/or its affiliates. All rights reserved. The contents 
+    of this file are subject to the terms of either the GNU General Public License 
+    Version 2 only ("GPL") or the Common Development and Distribution License("CDDL") 
+    (collectively, the "License"). You may not use this file except in compliance 
+    with the License. You can obtain a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html 
+    or packager/legal/LICENSE.txt. See the License for the specific language 
+    governing permissions and limitations under the License. When distributing 
+    the software, include this License Header Notice in each file and include 
+    the License file at packager/legal/LICENSE.txt. GPL Classpath Exception: 
+    Oracle designates this particular file as subject to the "Classpath" exception 
+    as provided by Oracle in the GPL Version 2 section of the License file that 
+    accompanied this code. Modifications: If applicable, add the following below 
+    the License Header, with the fields enclosed by brackets [] replaced by your 
+    own identifying information: "Portions Copyright [year] [name of copyright 
+    owner]" Contributor(s): If you wish your version of this file to be governed 
+    by only the CDDL or only the GPL Version 2, indicate your decision by adding 
+    "[Contributor] elects to include this software in this distribution under 
+    the [CDDL or GPL Version 2] license." If you don't indicate a single choice 
+    of license, a recipient has the option to distribute your version of this 
+    file under either the CDDL, the GPL Version 2 or to extend the choice of 
+    license to its licensees as provided above. However, if you add GPL Version 
+    2 code and therefore, elected the GPL Version 2 license, then the option 
+    applies only if the new code is made subject to such option by the copyright 
+    holder. -->
+
+<faces-config xmlns="http://xmlns.jcp.org/xml/ns/javaee"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
+        http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd"
+	version="2.2">
+	<!-- resource-library-contracts configuration works only with the new xml 
+		namespaces! -->
+
+	<application>
+		<resource-library-contracts>
+			<contract-mapping>
+				<url-pattern>*</url-pattern>
+				<contracts>jarbase</contracts>
+			</contract-mapping>
+		</resource-library-contracts>
+	</application>
+
+</faces-config>
diff --git a/test/agnostic/vdl/facelets/contracts/extended/extended_blue/pom.xml b/test/agnostic/vdl/facelets/contracts/extended/extended_blue/pom.xml
new file mode 100644
index 0000000..23e8cf9
--- /dev/null
+++ b/test/agnostic/vdl/facelets/contracts/extended/extended_blue/pom.xml
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.agnostic.vdl.facelets.contracts</groupId>
+        <artifactId>extended</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.agnostic.vdl.facelets.contracts.extended</groupId>
+    <artifactId>extended_blue</artifactId>
+    <name>Mojarra ${project.version} - Test - Agnostic - VDL - Facelets - Contracts - extended - extended_blue</name>
+    <build>
+        <finalName>test-agnostic-vdl-facelets-contracts-extended-extended_blue</finalName>
+    </build>
+    <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/test/agnostic/vdl/facelets/contracts/extended/extended_blue/src/main/resources/META-INF/contracts/blue/css/contract.css b/test/agnostic/vdl/facelets/contracts/extended/extended_blue/src/main/resources/META-INF/contracts/blue/css/contract.css
new file mode 100644
index 0000000..9e46323
--- /dev/null
+++ b/test/agnostic/vdl/facelets/contracts/extended/extended_blue/src/main/resources/META-INF/contracts/blue/css/contract.css
@@ -0,0 +1,36 @@
+#top {
+    position: relative;
+    background-color: blue;
+    color: white;
+    padding: 5px;
+    margin: 0px 0px 10px 0px;
+}
+body {
+    background-color: #ffffff;
+    font-size: 12px;
+    font-family: Verdana, "Verdana CE",  Arial, "Arial CE", "Lucida Grande CE", lucida, "Helvetica CE", sans-serif;
+    color: #000000;  
+    margin: 10px;
+}
+
+h1 {
+    font-family: Arial, "Arial CE", "Lucida Grande CE", lucida, "Helvetica CE", sans-serif;
+    border-bottom: 1px solid #AFAFAF; 
+    font-size:  16px;
+    font-weight: bold;
+    margin: 0px;
+    padding: 0px;
+    color: #FFFFFF;
+}
+
+a:link, a:visited {
+  color: #045491;
+  font-weight : bold;
+  text-decoration: none;
+}
+
+a:link:hover, a:visited:hover  {
+  color: #045491;
+  font-weight : bold;
+  text-decoration : underline;
+}
diff --git a/test/agnostic/vdl/facelets/contracts/extended/extended_blue/src/main/resources/META-INF/contracts/blue/javax.faces.contract.xml b/test/agnostic/vdl/facelets/contracts/extended/extended_blue/src/main/resources/META-INF/contracts/blue/javax.faces.contract.xml
new file mode 100644
index 0000000..2c0f1bc
--- /dev/null
+++ b/test/agnostic/vdl/facelets/contracts/extended/extended_blue/src/main/resources/META-INF/contracts/blue/javax.faces.contract.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. Copyright (c) 
+    1997-2013 Oracle and/or its affiliates. All rights reserved. The contents 
+    of this file are subject to the terms of either the GNU General Public License 
+    Version 2 only ("GPL") or the Common Development and Distribution License("CDDL") 
+    (collectively, the "License"). You may not use this file except in compliance 
+    with the License. You can obtain a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html 
+    or packager/legal/LICENSE.txt. See the License for the specific language 
+    governing permissions and limitations under the License. When distributing 
+    the software, include this License Header Notice in each file and include 
+    the License file at packager/legal/LICENSE.txt. GPL Classpath Exception: 
+    Oracle designates this particular file as subject to the "Classpath" exception 
+    as provided by Oracle in the GPL Version 2 section of the License file that 
+    accompanied this code. Modifications: If applicable, add the following below 
+    the License Header, with the fields enclosed by brackets [] replaced by your 
+    own identifying information: "Portions Copyright [year] [name of copyright 
+    owner]" Contributor(s): If you wish your version of this file to be governed 
+    by only the CDDL or only the GPL Version 2, indicate your decision by adding 
+    "[Contributor] elects to include this software in this distribution under 
+    the [CDDL or GPL Version 2] license." If you don't indicate a single choice 
+    of license, a recipient has the option to distribute your version of this 
+    file under either the CDDL, the GPL Version 2 or to extend the choice of 
+    license to its licensees as provided above. However, if you add GPL Version 
+    2 code and therefore, elected the GPL Version 2 license, then the option 
+    applies only if the new code is made subject to such option by the copyright 
+    holder. -->
+
+<!-- 
+	Marker file to identify contracts in jars.
+ -->
\ No newline at end of file
diff --git a/test/agnostic/vdl/facelets/contracts/extended/extended_blue/src/main/resources/META-INF/contracts/blue/template.xhtml b/test/agnostic/vdl/facelets/contracts/extended/extended_blue/src/main/resources/META-INF/contracts/blue/template.xhtml
new file mode 100644
index 0000000..d38c988
--- /dev/null
+++ b/test/agnostic/vdl/facelets/contracts/extended/extended_blue/src/main/resources/META-INF/contracts/blue/template.xhtml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. Copyright (c) 
+    1997-2013 Oracle and/or its affiliates. All rights reserved. The contents 
+    of this file are subject to the terms of either the GNU General Public License 
+    Version 2 only ("GPL") or the Common Development and Distribution License("CDDL") 
+    (collectively, the "License"). You may not use this file except in compliance 
+    with the License. You can obtain a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html 
+    or packager/legal/LICENSE.txt. See the License for the specific language 
+    governing permissions and limitations under the License. When distributing 
+    the software, include this License Header Notice in each file and include 
+    the License file at packager/legal/LICENSE.txt. GPL Classpath Exception: 
+    Oracle designates this particular file as subject to the "Classpath" exception 
+    as provided by Oracle in the GPL Version 2 section of the License file that 
+    accompanied this code. Modifications: If applicable, add the following below 
+    the License Header, with the fields enclosed by brackets [] replaced by your 
+    own identifying information: "Portions Copyright [year] [name of copyright 
+    owner]" Contributor(s): If you wish your version of this file to be governed 
+    by only the CDDL or only the GPL Version 2, indicate your decision by adding 
+    "[Contributor] elects to include this software in this distribution under 
+    the [CDDL or GPL Version 2] license." If you don't indicate a single choice 
+    of license, a recipient has the option to distribute your version of this 
+    file under either the CDDL, the GPL Version 2 or to extend the choice of 
+    license to its licensees as provided above. However, if you add GPL Version 
+    2 code and therefore, elected the GPL Version 2 license, then the option 
+    applies only if the new code is made subject to such option by the copyright 
+    holder. -->
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:h="http://java.sun.com/jsf/html">
+<ui:composition template="/subtemplate.xhtml" >
+	
+	<ui:define name="top"><h1>(JSF 2.2 Resource Library Contract) "blue" template header</h1></ui:define>
+
+	<ui:define name="content">Content "blue" template</ui:define>
+
+	<ui:define name="template">blue refers to template="/subtemplate.xhtml"</ui:define>
+</ui:composition>
+</html>
diff --git a/test/agnostic/vdl/facelets/contracts/extended/extended_blue/src/main/resources/META-INF/faces-config.xml b/test/agnostic/vdl/facelets/contracts/extended/extended_blue/src/main/resources/META-INF/faces-config.xml
new file mode 100644
index 0000000..7d6d24e
--- /dev/null
+++ b/test/agnostic/vdl/facelets/contracts/extended/extended_blue/src/main/resources/META-INF/faces-config.xml
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. Copyright (c) 
+    1997-2013 Oracle and/or its affiliates. All rights reserved. The contents 
+    of this file are subject to the terms of either the GNU General Public License 
+    Version 2 only ("GPL") or the Common Development and Distribution License("CDDL") 
+    (collectively, the "License"). You may not use this file except in compliance 
+    with the License. You can obtain a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html 
+    or packager/legal/LICENSE.txt. See the License for the specific language 
+    governing permissions and limitations under the License. When distributing 
+    the software, include this License Header Notice in each file and include 
+    the License file at packager/legal/LICENSE.txt. GPL Classpath Exception: 
+    Oracle designates this particular file as subject to the "Classpath" exception 
+    as provided by Oracle in the GPL Version 2 section of the License file that 
+    accompanied this code. Modifications: If applicable, add the following below 
+    the License Header, with the fields enclosed by brackets [] replaced by your 
+    own identifying information: "Portions Copyright [year] [name of copyright 
+    owner]" Contributor(s): If you wish your version of this file to be governed 
+    by only the CDDL or only the GPL Version 2, indicate your decision by adding 
+    "[Contributor] elects to include this software in this distribution under 
+    the [CDDL or GPL Version 2] license." If you don't indicate a single choice 
+    of license, a recipient has the option to distribute your version of this 
+    file under either the CDDL, the GPL Version 2 or to extend the choice of 
+    license to its licensees as provided above. However, if you add GPL Version 
+    2 code and therefore, elected the GPL Version 2 license, then the option 
+    applies only if the new code is made subject to such option by the copyright 
+    holder. -->
+
+<faces-config xmlns="http://xmlns.jcp.org/xml/ns/javaee"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
+        http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd"
+	version="2.2">
+	<!-- resource-library-contracts configuration works only with the new xml 
+		namespaces! -->
+
+	<application>
+		<resource-library-contracts>
+			<contract-mapping>
+				<!-- blue depends on contract base -->
+				<url-pattern>/user/*</url-pattern>
+				<contracts>blue,jarbase</contracts>
+			</contract-mapping>
+		</resource-library-contracts>
+	</application>
+
+</faces-config>
diff --git a/test/agnostic/vdl/facelets/contracts/extended/extended_contracts/pom.xml b/test/agnostic/vdl/facelets/contracts/extended/extended_contracts/pom.xml
new file mode 100644
index 0000000..e51a175
--- /dev/null
+++ b/test/agnostic/vdl/facelets/contracts/extended/extended_contracts/pom.xml
@@ -0,0 +1,80 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.agnostic.vdl.facelets.contracts</groupId>
+        <artifactId>extended</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.agnostic.vdl.facelets.contracts.extended</groupId>
+    <artifactId>extended_contracts</artifactId>
+    <packaging>war</packaging>
+    <name>Mojarra ${project.version} - Test - Agnostic - VDL - Facelets - Contracts - extended</name>
+    <build>
+        <finalName>test-agnostic-vdl-facelets-contracts-extended-extended_contracts</finalName>
+    </build>
+    <dependencies>
+        <dependency>
+            <artifactId>extended_base</artifactId>
+            <groupId>com.sun.faces.test.agnostic.vdl.facelets.contracts.extended</groupId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <artifactId>extended_blue</artifactId>
+            <groupId>com.sun.faces.test.agnostic.vdl.facelets.contracts.extended</groupId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <artifactId>extended_red</artifactId>
+            <groupId>com.sun.faces.test.agnostic.vdl.facelets.contracts.extended</groupId>
+            <version>${project.version}</version>
+        </dependency>
+    </dependencies>
+    <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/test/agnostic/vdl/facelets/contracts/extended/extended_contracts/src/main/java/com/sun/faces/test/agnostic/vdl/facelets/contracts/extended/bean/ContractsBean.java b/test/agnostic/vdl/facelets/contracts/extended/extended_contracts/src/main/java/com/sun/faces/test/agnostic/vdl/facelets/contracts/extended/bean/ContractsBean.java
new file mode 100644
index 0000000..996e006
--- /dev/null
+++ b/test/agnostic/vdl/facelets/contracts/extended/extended_contracts/src/main/java/com/sun/faces/test/agnostic/vdl/facelets/contracts/extended/bean/ContractsBean.java
@@ -0,0 +1,60 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.vdl.facelets.contracts.extended.bean;
+
+import java.io.Serializable;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.SessionScoped;
+
+ at ManagedBean
+ at SessionScoped
+public class ContractsBean implements Serializable {
+    
+    String contracts;
+
+    public String getContracts() {
+        return contracts;
+    }
+
+    public void setContracts(String contracts) {
+    		this.contracts = contracts;
+    }
+}
diff --git a/test/agnostic/vdl/facelets/contracts/extended/extended_contracts/src/main/java/com/sun/faces/test/agnostic/vdl/facelets/contracts/extended/context/ContractsFacesContext.java b/test/agnostic/vdl/facelets/contracts/extended/extended_contracts/src/main/java/com/sun/faces/test/agnostic/vdl/facelets/contracts/extended/context/ContractsFacesContext.java
new file mode 100644
index 0000000..42f38c1
--- /dev/null
+++ b/test/agnostic/vdl/facelets/contracts/extended/extended_contracts/src/main/java/com/sun/faces/test/agnostic/vdl/facelets/contracts/extended/context/ContractsFacesContext.java
@@ -0,0 +1,112 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.vdl.facelets.contracts.extended.context;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import javax.el.ELContext;
+import javax.el.ELException;
+import javax.el.ExpressionFactory;
+import javax.el.ValueExpression;
+import javax.faces.context.FacesContext;
+import javax.faces.context.FacesContextWrapper;
+import javax.faces.event.PhaseId;
+
+/**
+ * Wrap FacesContext to allow general contracts activation through a managed
+ * bean.
+ * 
+ * @author dueni
+ * 
+ */
+public class ContractsFacesContext extends FacesContextWrapper {
+
+	private static final Logger LOG = Logger.getLogger(ContractsFacesContext.class.getName());
+
+	private static final String ACTIVE_CONTRACTS = "active-contracts";
+
+	private FacesContext wrapped;
+
+	private boolean activeContractsEvaluated = false;
+
+	public ContractsFacesContext(FacesContext toWrap) {
+		wrapped = toWrap;
+	}
+
+	@Override
+	public FacesContext getWrapped() {
+		return wrapped;
+	}
+
+	@Override
+	public List<String> getResourceLibraryContracts() {
+		if (!activeContractsEvaluated) {
+			activeContractsEvaluated = true;
+			String value = getExternalContext().getInitParameter(ACTIVE_CONTRACTS);
+			if (value != null) {
+				try {
+					ELContext el = getELContext();
+					ExpressionFactory elFactory = getApplication().getExpressionFactory();
+					ValueExpression ve = elFactory.createValueExpression(el, value, Object.class);
+					Object result = ve.getValue(el);
+					if (result instanceof String && !((String)result).isEmpty()) {
+						String[] contracts = ((String) result).split(",");
+						getWrapped().setResourceLibraryContracts(Arrays.asList(contracts));
+					}
+				} catch (ELException elx) {
+					LOG.log(Level.SEVERE, "Exception while evaluating '" + ACTIVE_CONTRACTS
+							+ "' web.xml context-parameter!", elx);
+				}
+			}
+		}
+		return getWrapped().getResourceLibraryContracts();
+	}
+	
+	@Override
+	public void setCurrentPhaseId(PhaseId currentPhaseId) {
+		if (currentPhaseId == PhaseId.RENDER_RESPONSE) {
+			activeContractsEvaluated = false;
+		}
+		super.setCurrentPhaseId(currentPhaseId);
+	}
+}
diff --git a/test/agnostic/vdl/facelets/contracts/extended/extended_contracts/src/main/java/com/sun/faces/test/agnostic/vdl/facelets/contracts/extended/context/ContractsFacesContextFactory.java b/test/agnostic/vdl/facelets/contracts/extended/extended_contracts/src/main/java/com/sun/faces/test/agnostic/vdl/facelets/contracts/extended/context/ContractsFacesContextFactory.java
new file mode 100644
index 0000000..84d17a6
--- /dev/null
+++ b/test/agnostic/vdl/facelets/contracts/extended/extended_contracts/src/main/java/com/sun/faces/test/agnostic/vdl/facelets/contracts/extended/context/ContractsFacesContextFactory.java
@@ -0,0 +1,67 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.vdl.facelets.contracts.extended.context;
+
+import javax.faces.FacesException;
+import javax.faces.context.FacesContext;
+import javax.faces.context.FacesContextFactory;
+import javax.faces.lifecycle.Lifecycle;
+
+public class ContractsFacesContextFactory extends FacesContextFactory {
+	
+	private FacesContextFactory wrapped;
+	
+	public ContractsFacesContextFactory(FacesContextFactory toWrap) {
+		wrapped = toWrap;
+	}
+
+	@Override
+	public FacesContext getFacesContext(Object context, Object request,
+			Object response, Lifecycle lifecycle) throws FacesException {
+		FacesContext jsf = getWrapped().getFacesContext(context, request, response, lifecycle);
+		return new ContractsFacesContext(jsf);
+	}
+	
+	@Override
+	public FacesContextFactory getWrapped() {
+		return wrapped;
+	}
+
+}
diff --git a/test/agnostic/vdl/facelets/contracts/extended/extended_contracts/src/main/webapp/WEB-INF/beans.xml b/test/agnostic/vdl/facelets/contracts/extended/extended_contracts/src/main/webapp/WEB-INF/beans.xml
new file mode 100644
index 0000000..a9414dd
--- /dev/null
+++ b/test/agnostic/vdl/facelets/contracts/extended/extended_contracts/src/main/webapp/WEB-INF/beans.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. Copyright (c) 
+    1997-2013 Oracle and/or its affiliates. All rights reserved. The contents 
+    of this file are subject to the terms of either the GNU General Public License 
+    Version 2 only ("GPL") or the Common Development and Distribution License("CDDL") 
+    (collectively, the "License"). You may not use this file except in compliance 
+    with the License. You can obtain a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html 
+    or packager/legal/LICENSE.txt. See the License for the specific language 
+    governing permissions and limitations under the License. When distributing 
+    the software, include this License Header Notice in each file and include 
+    the License file at packager/legal/LICENSE.txt. GPL Classpath Exception: 
+    Oracle designates this particular file as subject to the "Classpath" exception 
+    as provided by Oracle in the GPL Version 2 section of the License file that 
+    accompanied this code. Modifications: If applicable, add the following below 
+    the License Header, with the fields enclosed by brackets [] replaced by your 
+    own identifying information: "Portions Copyright [year] [name of copyright 
+    owner]" Contributor(s): If you wish your version of this file to be governed 
+    by only the CDDL or only the GPL Version 2, indicate your decision by adding 
+    "[Contributor] elects to include this software in this distribution under 
+    the [CDDL or GPL Version 2] license." If you don't indicate a single choice 
+    of license, a recipient has the option to distribute your version of this 
+    file under either the CDDL, the GPL Version 2 or to extend the choice of 
+    license to its licensees as provided above. However, if you add GPL Version 
+    2 code and therefore, elected the GPL Version 2 license, then the option 
+    applies only if the new code is made subject to such option by the copyright 
+    holder. -->
+
+<beans xmlns="http://java.sun.com/xml/ns/javaee"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
+</beans>
diff --git a/test/agnostic/vdl/facelets/contracts/extended/extended_contracts/src/main/webapp/WEB-INF/faces-config.xml b/test/agnostic/vdl/facelets/contracts/extended/extended_contracts/src/main/webapp/WEB-INF/faces-config.xml
new file mode 100644
index 0000000..437ad4f
--- /dev/null
+++ b/test/agnostic/vdl/facelets/contracts/extended/extended_contracts/src/main/webapp/WEB-INF/faces-config.xml
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. Copyright (c) 
+    1997-2013 Oracle and/or its affiliates. All rights reserved. The contents 
+    of this file are subject to the terms of either the GNU General Public License 
+    Version 2 only ("GPL") or the Common Development and Distribution License("CDDL") 
+    (collectively, the "License"). You may not use this file except in compliance 
+    with the License. You can obtain a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html 
+    or packager/legal/LICENSE.txt. See the License for the specific language 
+    governing permissions and limitations under the License. When distributing 
+    the software, include this License Header Notice in each file and include 
+    the License file at packager/legal/LICENSE.txt. GPL Classpath Exception: 
+    Oracle designates this particular file as subject to the "Classpath" exception 
+    as provided by Oracle in the GPL Version 2 section of the License file that 
+    accompanied this code. Modifications: If applicable, add the following below 
+    the License Header, with the fields enclosed by brackets [] replaced by your 
+    own identifying information: "Portions Copyright [year] [name of copyright 
+    owner]" Contributor(s): If you wish your version of this file to be governed 
+    by only the CDDL or only the GPL Version 2, indicate your decision by adding 
+    "[Contributor] elects to include this software in this distribution under 
+    the [CDDL or GPL Version 2] license." If you don't indicate a single choice 
+    of license, a recipient has the option to distribute your version of this 
+    file under either the CDDL, the GPL Version 2 or to extend the choice of 
+    license to its licensees as provided above. However, if you add GPL Version 
+    2 code and therefore, elected the GPL Version 2 license, then the option 
+    applies only if the new code is made subject to such option by the copyright 
+    holder. -->
+
+<faces-config xmlns="http://xmlns.jcp.org/xml/ns/javaee"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd"
+	version="2.2">
+
+	<application>
+		<resource-library-contracts>
+			<contract-mapping>
+				<url-pattern>/green/*</url-pattern>
+				<contracts>green,jarbase</contracts>
+			</contract-mapping>
+		</resource-library-contracts>
+	</application>
+
+	<factory>
+		<faces-context-factory>com.sun.faces.test.agnostic.vdl.facelets.contracts.extended.context.ContractsFacesContextFactory</faces-context-factory>
+	</factory>
+
+</faces-config>
diff --git a/test/agnostic/vdl/facelets/contracts/extended/extended_contracts/src/main/webapp/WEB-INF/web.xml b/test/agnostic/vdl/facelets/contracts/extended/extended_contracts/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..3e8a987
--- /dev/null
+++ b/test/agnostic/vdl/facelets/contracts/extended/extended_contracts/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. Copyright (c) 
+    1997-2013 Oracle and/or its affiliates. All rights reserved. The contents 
+    of this file are subject to the terms of either the GNU General Public License 
+    Version 2 only ("GPL") or the Common Development and Distribution License("CDDL") 
+    (collectively, the "License"). You may not use this file except in compliance 
+    with the License. You can obtain a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html 
+    or packager/legal/LICENSE.txt. See the License for the specific language 
+    governing permissions and limitations under the License. When distributing 
+    the software, include this License Header Notice in each file and include 
+    the License file at packager/legal/LICENSE.txt. GPL Classpath Exception: 
+    Oracle designates this particular file as subject to the "Classpath" exception 
+    as provided by Oracle in the GPL Version 2 section of the License file that 
+    accompanied this code. Modifications: If applicable, add the following below 
+    the License Header, with the fields enclosed by brackets [] replaced by your 
+    own identifying information: "Portions Copyright [year] [name of copyright 
+    owner]" Contributor(s): If you wish your version of this file to be governed 
+    by only the CDDL or only the GPL Version 2, indicate your decision by adding 
+    "[Contributor] elects to include this software in this distribution under 
+    the [CDDL or GPL Version 2] license." If you don't indicate a single choice 
+    of license, a recipient has the option to distribute your version of this 
+    file under either the CDDL, the GPL Version 2 or to extend the choice of 
+    license to its licensees as provided above. However, if you add GPL Version 
+    2 code and therefore, elected the GPL Version 2 license, then the option 
+    applies only if the new code is made subject to such option by the copyright 
+    holder. -->
+
+<web-app version="3.0"
+	xmlns="http://java.sun.com/xml/ns/javaee"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>Development</param-value>
+    </context-param>
+    
+    <context-param>
+    	<param-name>active-contracts</param-name>
+    	<param-value>#{contractsBean.contracts}</param-value>
+    </context-param>
+    
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <welcome-file-list>
+        <welcome-file>faces/index.xhtml</welcome-file>
+    </welcome-file-list>    
+</web-app>
diff --git a/test/agnostic/vdl/facelets/contracts/extended/extended_contracts/src/main/webapp/contracts/green/css/contract.css b/test/agnostic/vdl/facelets/contracts/extended/extended_contracts/src/main/webapp/contracts/green/css/contract.css
new file mode 100644
index 0000000..9a27e8a
--- /dev/null
+++ b/test/agnostic/vdl/facelets/contracts/extended/extended_contracts/src/main/webapp/contracts/green/css/contract.css
@@ -0,0 +1,36 @@
+#top {
+    position: relative;
+    background-color: green;
+    color: white;
+    padding: 5px;
+    margin: 0px 0px 10px 0px;
+}
+body {
+    background-color: #ffffff;
+    font-size: 12px;
+    font-family: Verdana, "Verdana CE",  Arial, "Arial CE", "Lucida Grande CE", lucida, "Helvetica CE", sans-serif;
+    color: #000000;  
+    margin: 10px;
+}
+
+h1 {
+    font-family: Arial, "Arial CE", "Lucida Grande CE", lucida, "Helvetica CE", sans-serif;
+    border-bottom: 1px solid #AFAFAF; 
+    font-size:  16px;
+    font-weight: bold;
+    margin: 0px;
+    padding: 0px;
+    color: #FFFFFF;
+}
+
+a:link, a:visited {
+  color: #045491;
+  font-weight : bold;
+  text-decoration: none;
+}
+
+a:link:hover, a:visited:hover  {
+  color: #045491;
+  font-weight : bold;
+  text-decoration : underline;
+}
diff --git a/test/agnostic/vdl/facelets/contracts/extended/extended_contracts/src/main/webapp/contracts/green/template.xhtml b/test/agnostic/vdl/facelets/contracts/extended/extended_contracts/src/main/webapp/contracts/green/template.xhtml
new file mode 100644
index 0000000..e1646cb
--- /dev/null
+++ b/test/agnostic/vdl/facelets/contracts/extended/extended_contracts/src/main/webapp/contracts/green/template.xhtml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. Copyright (c) 
+    1997-2013 Oracle and/or its affiliates. All rights reserved. The contents 
+    of this file are subject to the terms of either the GNU General Public License 
+    Version 2 only ("GPL") or the Common Development and Distribution License("CDDL") 
+    (collectively, the "License"). You may not use this file except in compliance 
+    with the License. You can obtain a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html 
+    or packager/legal/LICENSE.txt. See the License for the specific language 
+    governing permissions and limitations under the License. When distributing 
+    the software, include this License Header Notice in each file and include 
+    the License file at packager/legal/LICENSE.txt. GPL Classpath Exception: 
+    Oracle designates this particular file as subject to the "Classpath" exception 
+    as provided by Oracle in the GPL Version 2 section of the License file that 
+    accompanied this code. Modifications: If applicable, add the following below 
+    the License Header, with the fields enclosed by brackets [] replaced by your 
+    own identifying information: "Portions Copyright [year] [name of copyright 
+    owner]" Contributor(s): If you wish your version of this file to be governed 
+    by only the CDDL or only the GPL Version 2, indicate your decision by adding 
+    "[Contributor] elects to include this software in this distribution under 
+    the [CDDL or GPL Version 2] license." If you don't indicate a single choice 
+    of license, a recipient has the option to distribute your version of this 
+    file under either the CDDL, the GPL Version 2 or to extend the choice of 
+    license to its licensees as provided above. However, if you add GPL Version 
+    2 code and therefore, elected the GPL Version 2 license, then the option 
+    applies only if the new code is made subject to such option by the copyright 
+    holder. -->
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:h="http://java.sun.com/jsf/html">
+<ui:composition template="/subtemplate.xhtml" >
+	
+	<ui:define name="top"><h1>(JSF 2.2 Resource Library Contract) "green" template header</h1></ui:define>
+
+	<ui:define name="content">Content "green" template</ui:define>
+
+    <ui:define name="template">green refers to template="/subtemplate.xhtml"</ui:define>
+</ui:composition>
+</html>
diff --git a/test/agnostic/vdl/facelets/contracts/extended/extended_contracts/src/main/webapp/contracts/warbase/css/contract.css b/test/agnostic/vdl/facelets/contracts/extended/extended_contracts/src/main/webapp/contracts/warbase/css/contract.css
new file mode 100644
index 0000000..638cb4b
--- /dev/null
+++ b/test/agnostic/vdl/facelets/contracts/extended/extended_contracts/src/main/webapp/contracts/warbase/css/contract.css
@@ -0,0 +1,29 @@
+body {
+    background-color: #ffffff;
+    font-size: 12px;
+    font-family: Verdana, "Verdana CE",  Arial, "Arial CE", "Lucida Grande CE", lucida, "Helvetica CE", sans-serif;
+    color: #000000;  
+    margin: 10px;
+}
+
+h1 {
+    font-family: Arial, "Arial CE", "Lucida Grande CE", lucida, "Helvetica CE", sans-serif;
+    border-bottom: 1px solid #AFAFAF; 
+    font-size:  16px;
+    font-weight: bold;
+    margin: 0px;
+    padding: 0px;
+    color: #FFFFFF;
+}
+
+a:link, a:visited {
+  color: #045491;
+  font-weight : bold;
+  text-decoration: none;
+}
+
+a:link:hover, a:visited:hover  {
+  color: #045491;
+  font-weight : bold;
+  text-decoration : underline;
+}
diff --git a/test/agnostic/vdl/facelets/contracts/extended/extended_contracts/src/main/webapp/contracts/warbase/css/cssLayout.css b/test/agnostic/vdl/facelets/contracts/extended/extended_contracts/src/main/webapp/contracts/warbase/css/cssLayout.css
new file mode 100644
index 0000000..fd660cf
--- /dev/null
+++ b/test/agnostic/vdl/facelets/contracts/extended/extended_contracts/src/main/webapp/contracts/warbase/css/cssLayout.css
@@ -0,0 +1,24 @@
+#top {
+    position: relative;
+    background-color: yellow;
+    color: white;
+    padding: 5px;
+    margin: 0px 0px 10px 0px;
+}
+.center_content {
+    position: relative;
+    background-color: lightyellow;
+    padding: 5px;
+}
+
+#top a:link, #top a:visited {
+  color: white;
+  font-weight : bold;
+  text-decoration: none;
+}
+
+#top a:link:hover, #top a:visited:hover  {
+  color: black;
+  font-weight : bold;
+  text-decoration : underline;
+}
diff --git a/test/agnostic/vdl/facelets/contracts/extended/extended_contracts/src/main/webapp/contracts/warbase/subtemplate.xhtml b/test/agnostic/vdl/facelets/contracts/extended/extended_contracts/src/main/webapp/contracts/warbase/subtemplate.xhtml
new file mode 100644
index 0000000..704d586
--- /dev/null
+++ b/test/agnostic/vdl/facelets/contracts/extended/extended_contracts/src/main/webapp/contracts/warbase/subtemplate.xhtml
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. Copyright (c) 
+    1997-2013 Oracle and/or its affiliates. All rights reserved. The contents 
+    of this file are subject to the terms of either the GNU General Public License 
+    Version 2 only ("GPL") or the Common Development and Distribution License("CDDL") 
+    (collectively, the "License"). You may not use this file except in compliance 
+    with the License. You can obtain a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html 
+    or packager/legal/LICENSE.txt. See the License for the specific language 
+    governing permissions and limitations under the License. When distributing 
+    the software, include this License Header Notice in each file and include 
+    the License file at packager/legal/LICENSE.txt. GPL Classpath Exception: 
+    Oracle designates this particular file as subject to the "Classpath" exception 
+    as provided by Oracle in the GPL Version 2 section of the License file that 
+    accompanied this code. Modifications: If applicable, add the following below 
+    the License Header, with the fields enclosed by brackets [] replaced by your 
+    own identifying information: "Portions Copyright [year] [name of copyright 
+    owner]" Contributor(s): If you wish your version of this file to be governed 
+    by only the CDDL or only the GPL Version 2, indicate your decision by adding 
+    "[Contributor] elects to include this software in this distribution under 
+    the [CDDL or GPL Version 2] license." If you don't indicate a single choice 
+    of license, a recipient has the option to distribute your version of this 
+    file under either the CDDL, the GPL Version 2 or to extend the choice of 
+    license to its licensees as provided above. However, if you add GPL Version 
+    2 code and therefore, elected the GPL Version 2 license, then the option 
+    applies only if the new code is made subject to such option by the copyright 
+    holder. -->
+
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"
+	xmlns:ui="http://java.sun.com/jsf/facelets"
+	xmlns:f="http://java.sun.com/jsf/core"
+	xmlns:h="http://java.sun.com/jsf/html">
+
+<f:view>
+	<h:head>
+		<title>JSF 2.2 Resource Library Contract (contract warbase)</title>
+		<h:outputStylesheet library="css" name="cssLayout.css" media="all" />
+		<h:outputStylesheet library="css" name="contract.css" media="all" />
+	</h:head>
+
+	<h:body>
+
+		<div id="top" class="top">
+			<ui:insert name="top">
+				<h1>(JSF 2.2 Resource Library Contract) "warbase" template header</h1>
+			</ui:insert>
+		</div>
+
+		<div id="content" class="center_content">
+			<ui:insert name="content">Content "warbase" template</ui:insert>
+			<hr/>
+			<h3>Combined contracts tesing:</h3>
+			<p>
+				Title bar background color depends on the actual first selected contract. 
+				Default title bar background color is yellow (contract warbase). 
+			</p>
+			<p>
+				Content background color depends on the actual base contract. 
+				Default content background color is lightyellow (contract warbase). 
+			</p>
+		</div>
+		
+		<hr/>
+		<h3>Debug information (from "warbase" subtemplate.xhtml)</h3>
+		<div>selected contracts: [#{contractsBean.contracts}]</div>
+		<div>resolved contracts: #{facesContext.resourceLibraryContracts}</div>
+		<ui:insert name="template"/>
+	</h:body>
+
+</f:view>
+
+</html>
diff --git a/test/agnostic/vdl/facelets/contracts/extended/extended_contracts/src/main/webapp/contracts/warbase/template.xhtml b/test/agnostic/vdl/facelets/contracts/extended/extended_contracts/src/main/webapp/contracts/warbase/template.xhtml
new file mode 100644
index 0000000..49a3c66
--- /dev/null
+++ b/test/agnostic/vdl/facelets/contracts/extended/extended_contracts/src/main/webapp/contracts/warbase/template.xhtml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. Copyright (c) 
+    1997-2013 Oracle and/or its affiliates. All rights reserved. The contents 
+    of this file are subject to the terms of either the GNU General Public License 
+    Version 2 only ("GPL") or the Common Development and Distribution License("CDDL") 
+    (collectively, the "License"). You may not use this file except in compliance 
+    with the License. You can obtain a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html 
+    or packager/legal/LICENSE.txt. See the License for the specific language 
+    governing permissions and limitations under the License. When distributing 
+    the software, include this License Header Notice in each file and include 
+    the License file at packager/legal/LICENSE.txt. GPL Classpath Exception: 
+    Oracle designates this particular file as subject to the "Classpath" exception 
+    as provided by Oracle in the GPL Version 2 section of the License file that 
+    accompanied this code. Modifications: If applicable, add the following below 
+    the License Header, with the fields enclosed by brackets [] replaced by your 
+    own identifying information: "Portions Copyright [year] [name of copyright 
+    owner]" Contributor(s): If you wish your version of this file to be governed 
+    by only the CDDL or only the GPL Version 2, indicate your decision by adding 
+    "[Contributor] elects to include this software in this distribution under 
+    the [CDDL or GPL Version 2] license." If you don't indicate a single choice 
+    of license, a recipient has the option to distribute your version of this 
+    file under either the CDDL, the GPL Version 2 or to extend the choice of 
+    license to its licensees as provided above. However, if you add GPL Version 
+    2 code and therefore, elected the GPL Version 2 license, then the option 
+    applies only if the new code is made subject to such option by the copyright 
+    holder. -->
+
+<ui:composition xmlns="http://www.w3.org/1999/xhtml"
+	xmlns:ui="http://java.sun.com/jsf/facelets" 
+	template="subtemplate.xhtml">
+	<!-- this construct allows to use the subtemplate.xhtml from extending contracts -->
+</ui:composition>
diff --git a/test/agnostic/vdl/facelets/contracts/extended/extended_contracts/src/main/webapp/green/index.xhtml b/test/agnostic/vdl/facelets/contracts/extended/extended_contracts/src/main/webapp/green/index.xhtml
new file mode 100644
index 0000000..e562009
--- /dev/null
+++ b/test/agnostic/vdl/facelets/contracts/extended/extended_contracts/src/main/webapp/green/index.xhtml
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. Copyright (c) 
+    1997-2013 Oracle and/or its affiliates. All rights reserved. The contents 
+    of this file are subject to the terms of either the GNU General Public License 
+    Version 2 only ("GPL") or the Common Development and Distribution License("CDDL") 
+    (collectively, the "License"). You may not use this file except in compliance 
+    with the License. You can obtain a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html 
+    or packager/legal/LICENSE.txt. See the License for the specific language 
+    governing permissions and limitations under the License. When distributing 
+    the software, include this License Header Notice in each file and include 
+    the License file at packager/legal/LICENSE.txt. GPL Classpath Exception: 
+    Oracle designates this particular file as subject to the "Classpath" exception 
+    as provided by Oracle in the GPL Version 2 section of the License file that 
+    accompanied this code. Modifications: If applicable, add the following below 
+    the License Header, with the fields enclosed by brackets [] replaced by your 
+    own identifying information: "Portions Copyright [year] [name of copyright 
+    owner]" Contributor(s): If you wish your version of this file to be governed 
+    by only the CDDL or only the GPL Version 2, indicate your decision by adding 
+    "[Contributor] elects to include this software in this distribution under 
+    the [CDDL or GPL Version 2] license." If you don't indicate a single choice 
+    of license, a recipient has the option to distribute your version of this 
+    file under either the CDDL, the GPL Version 2 or to extend the choice of 
+    license to its licensees as provided above. However, if you add GPL Version 
+    2 code and therefore, elected the GPL Version 2 license, then the option 
+    applies only if the new code is made subject to such option by the copyright 
+    holder. -->
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+	xmlns:ui="http://java.sun.com/jsf/facelets"
+	xmlns:f="http://java.sun.com/jsf/core"
+	xmlns:h="http://java.sun.com/jsf/html">
+
+<ui:composition template="/template.xhtml">
+
+	<ui:define name="content">
+		<h:link outcome="/index.xhtml">Go to root index</h:link>
+
+		<p>Look at WEB-INF/faces-config.xml for contract configuration.</p>
+
+	</ui:define>
+
+</ui:composition>
+
+</html>
diff --git a/test/agnostic/vdl/facelets/contracts/extended/extended_contracts/src/main/webapp/index.xhtml b/test/agnostic/vdl/facelets/contracts/extended/extended_contracts/src/main/webapp/index.xhtml
new file mode 100644
index 0000000..61a93dd
--- /dev/null
+++ b/test/agnostic/vdl/facelets/contracts/extended/extended_contracts/src/main/webapp/index.xhtml
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. Copyright (c) 
+    1997-2013 Oracle and/or its affiliates. All rights reserved. The contents 
+    of this file are subject to the terms of either the GNU General Public License 
+    Version 2 only ("GPL") or the Common Development and Distribution License("CDDL") 
+    (collectively, the "License"). You may not use this file except in compliance 
+    with the License. You can obtain a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html 
+    or packager/legal/LICENSE.txt. See the License for the specific language 
+    governing permissions and limitations under the License. When distributing 
+    the software, include this License Header Notice in each file and include 
+    the License file at packager/legal/LICENSE.txt. GPL Classpath Exception: 
+    Oracle designates this particular file as subject to the "Classpath" exception 
+    as provided by Oracle in the GPL Version 2 section of the License file that 
+    accompanied this code. Modifications: If applicable, add the following below 
+    the License Header, with the fields enclosed by brackets [] replaced by your 
+    own identifying information: "Portions Copyright [year] [name of copyright 
+    owner]" Contributor(s): If you wish your version of this file to be governed 
+    by only the CDDL or only the GPL Version 2, indicate your decision by adding 
+    "[Contributor] elects to include this software in this distribution under 
+    the [CDDL or GPL Version 2] license." If you don't indicate a single choice 
+    of license, a recipient has the option to distribute your version of this 
+    file under either the CDDL, the GPL Version 2 or to extend the choice of 
+    license to its licensees as provided above. However, if you add GPL Version 
+    2 code and therefore, elected the GPL Version 2 license, then the option 
+    applies only if the new code is made subject to such option by the copyright 
+    holder. -->
+
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"
+	xmlns:ui="http://java.sun.com/jsf/facelets"
+	xmlns:f="http://java.sun.com/jsf/core"
+	xmlns:h="http://java.sun.com/jsf/html">
+
+<ui:composition template="/template.xhtml">
+
+	<ui:define name="content">
+		<h3>Path based configured contracts - work only if no contract is selected below!</h3>
+		<ul>
+			<li>
+				<h:link outcome="/user/index.xhtml">Go to /user/index.xhtml</h:link>
+				contracts config resolves to "blue,warbase" (blue template has absolute reference to /contracts/warbase/template.xhtml).
+			</li>
+			<li>
+				<h:link outcome="/red/index.xhtml">Go to /red/index.xhtml</h:link>
+				contracts config resolves to "red,warbase" (red template has absolute reference to /contracts/warbase/template.xhtml).
+			</li>
+			<li>
+				<h:link outcome="/green/index.xhtml">Go to /green/index.xhtml</h:link>
+				contracts config resolves to "green,jarbase" (green template has absolute reference to /contracts/jarbase/template.xhtml).
+			</li>
+		</ul>
+
+		<h3>Choose contracts:</h3>
+		<h:form prependId="false">
+			<h:selectOneMenu id="selectOne" value="#{contractsBean.contracts}" 
+					layout="pageDirection" required="false">
+				<f:selectItem itemValue="" itemLabel="none preset" />
+				<f:selectItem itemValue="warbase" itemLabel="warbase" />
+				<f:selectItem itemValue="jarbase" itemLabel="jarbase" />
+				<f:selectItem itemValue="red,warbase" itemLabel="red,warbase" />
+				<f:selectItem itemValue="red,jarbase" itemLabel="red,jarbase" />
+				<f:selectItem itemValue="blue,warbase" itemLabel="blue,warbase" />
+				<f:selectItem itemValue="blue,jarbase" itemLabel="blue,jarbase" />
+				<f:selectItem itemValue="green,warbase" itemLabel="green,warbase" />
+				<f:selectItem itemValue="green,jarbase" itemLabel="green,jarbase" />
+			</h:selectOneMenu>
+			<h:commandButton id="apply" value="Apply" />
+		</h:form>
+	</ui:define>
+
+</ui:composition>
+</html>
diff --git a/test/agnostic/vdl/facelets/contracts/extended/extended_contracts/src/main/webapp/red/index.xhtml b/test/agnostic/vdl/facelets/contracts/extended/extended_contracts/src/main/webapp/red/index.xhtml
new file mode 100644
index 0000000..e562009
--- /dev/null
+++ b/test/agnostic/vdl/facelets/contracts/extended/extended_contracts/src/main/webapp/red/index.xhtml
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. Copyright (c) 
+    1997-2013 Oracle and/or its affiliates. All rights reserved. The contents 
+    of this file are subject to the terms of either the GNU General Public License 
+    Version 2 only ("GPL") or the Common Development and Distribution License("CDDL") 
+    (collectively, the "License"). You may not use this file except in compliance 
+    with the License. You can obtain a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html 
+    or packager/legal/LICENSE.txt. See the License for the specific language 
+    governing permissions and limitations under the License. When distributing 
+    the software, include this License Header Notice in each file and include 
+    the License file at packager/legal/LICENSE.txt. GPL Classpath Exception: 
+    Oracle designates this particular file as subject to the "Classpath" exception 
+    as provided by Oracle in the GPL Version 2 section of the License file that 
+    accompanied this code. Modifications: If applicable, add the following below 
+    the License Header, with the fields enclosed by brackets [] replaced by your 
+    own identifying information: "Portions Copyright [year] [name of copyright 
+    owner]" Contributor(s): If you wish your version of this file to be governed 
+    by only the CDDL or only the GPL Version 2, indicate your decision by adding 
+    "[Contributor] elects to include this software in this distribution under 
+    the [CDDL or GPL Version 2] license." If you don't indicate a single choice 
+    of license, a recipient has the option to distribute your version of this 
+    file under either the CDDL, the GPL Version 2 or to extend the choice of 
+    license to its licensees as provided above. However, if you add GPL Version 
+    2 code and therefore, elected the GPL Version 2 license, then the option 
+    applies only if the new code is made subject to such option by the copyright 
+    holder. -->
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+	xmlns:ui="http://java.sun.com/jsf/facelets"
+	xmlns:f="http://java.sun.com/jsf/core"
+	xmlns:h="http://java.sun.com/jsf/html">
+
+<ui:composition template="/template.xhtml">
+
+	<ui:define name="content">
+		<h:link outcome="/index.xhtml">Go to root index</h:link>
+
+		<p>Look at WEB-INF/faces-config.xml for contract configuration.</p>
+
+	</ui:define>
+
+</ui:composition>
+
+</html>
diff --git a/test/agnostic/vdl/facelets/contracts/extended/extended_contracts/src/main/webapp/user/index.xhtml b/test/agnostic/vdl/facelets/contracts/extended/extended_contracts/src/main/webapp/user/index.xhtml
new file mode 100644
index 0000000..ffebf24
--- /dev/null
+++ b/test/agnostic/vdl/facelets/contracts/extended/extended_contracts/src/main/webapp/user/index.xhtml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. Copyright (c) 
+    1997-2013 Oracle and/or its affiliates. All rights reserved. The contents 
+    of this file are subject to the terms of either the GNU General Public License 
+    Version 2 only ("GPL") or the Common Development and Distribution License("CDDL") 
+    (collectively, the "License"). You may not use this file except in compliance 
+    with the License. You can obtain a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html 
+    or packager/legal/LICENSE.txt. See the License for the specific language 
+    governing permissions and limitations under the License. When distributing 
+    the software, include this License Header Notice in each file and include 
+    the License file at packager/legal/LICENSE.txt. GPL Classpath Exception: 
+    Oracle designates this particular file as subject to the "Classpath" exception 
+    as provided by Oracle in the GPL Version 2 section of the License file that 
+    accompanied this code. Modifications: If applicable, add the following below 
+    the License Header, with the fields enclosed by brackets [] replaced by your 
+    own identifying information: "Portions Copyright [year] [name of copyright 
+    owner]" Contributor(s): If you wish your version of this file to be governed 
+    by only the CDDL or only the GPL Version 2, indicate your decision by adding 
+    "[Contributor] elects to include this software in this distribution under 
+    the [CDDL or GPL Version 2] license." If you don't indicate a single choice 
+    of license, a recipient has the option to distribute your version of this 
+    file under either the CDDL, the GPL Version 2 or to extend the choice of 
+    license to its licensees as provided above. However, if you add GPL Version 
+    2 code and therefore, elected the GPL Version 2 license, then the option 
+    applies only if the new code is made subject to such option by the copyright 
+    holder. -->
+
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"
+	xmlns:ui="http://java.sun.com/jsf/facelets"
+	xmlns:h="http://java.sun.com/jsf/html"
+	xmlns:f="http://java.sun.com/jsf/core">
+
+<ui:composition template="/template.xhtml">
+
+	<ui:define name="content">
+		<h:link outcome="/faces/index.xhtml">Go to /index.xhtml</h:link>
+
+		<p>
+			Header bar should have <span style="background-color: blue;">blue</span>
+			background color unless user activated other contracts.
+		</p>
+	</ui:define>
+
+</ui:composition>
+
+</html>
diff --git a/test/agnostic/vdl/facelets/contracts/extended/extended_contracts/src/test/java/com/sun/faces/test/agnostic/vdl/facelets/contracts/extended/Issue3137IT.java b/test/agnostic/vdl/facelets/contracts/extended/extended_contracts/src/test/java/com/sun/faces/test/agnostic/vdl/facelets/contracts/extended/Issue3137IT.java
new file mode 100644
index 0000000..3e9bda0
--- /dev/null
+++ b/test/agnostic/vdl/facelets/contracts/extended/extended_contracts/src/test/java/com/sun/faces/test/agnostic/vdl/facelets/contracts/extended/Issue3137IT.java
@@ -0,0 +1,271 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.test.agnostic.vdl.facelets.contracts.extended;
+
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.fail;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.DomElement;
+import com.gargoylesoftware.htmlunit.html.DomNodeList;
+import com.gargoylesoftware.htmlunit.html.HtmlLink;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSelect;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+
+public class Issue3137IT {
+
+	private String webUrl;
+	private WebClient webClient;
+
+	@Before
+	public void setUp() {
+		webUrl = System.getProperty("integration.url");
+		webClient = new WebClient();
+	}
+
+	@After
+	public void tearDown() {
+		webClient.closeAllWindows();
+	}
+
+	@Test
+	public void testInitialContractIsJarbase() throws Exception {
+		HtmlPage page = webClient.getPage(webUrl + "faces/index.xhtml");
+
+		// start with initial jarbase contract
+		String text = page.asText();
+		assertTrue(text.contains("\"jarbase\" template header"));
+		assertTrue(text.contains("from \"jarbase\" subtemplate.xhtml"));
+		assertTrue(text.contains("resolved contracts: [jarbase]"));
+		assertContractForCss(page, "contract.css", "jarbase");
+		assertContractForCss(page, "cssLayout.css", "jarbase");
+
+	}
+
+	@Test
+	public void testWarbaseContract() throws Exception {
+		HtmlPage page = webClient.getPage(webUrl + "faces/index.xhtml");
+
+		// switch to warbase contract
+		HtmlSelect selectOne = (HtmlSelect) page.getElementById("selectOne");
+		selectOne.setSelectedAttribute("warbase", true);
+		HtmlSubmitInput apply = (HtmlSubmitInput) page.getElementById("apply");
+		page = apply.click();
+
+		String text = page.asText();
+		assertTrue(text.contains("\"warbase\" template header"));
+		assertTrue(text.contains("from \"warbase\" subtemplate.xhtml"));
+		assertTrue(text.contains("resolved contracts: [warbase]"));
+		assertContractForCss(page, "contract.css", "warbase");
+		assertContractForCss(page, "cssLayout.css", "warbase");
+
+	}
+
+	@Test
+	public void testRedExtendsWarbaseOrJarBaseContract() throws Exception {
+		HtmlPage page = webClient.getPage(webUrl + "faces/index.xhtml");
+
+		// switch to red,warbase contract
+		HtmlSelect selectOne = (HtmlSelect) page.getElementById("selectOne");
+		selectOne.setSelectedAttribute("red,warbase", true);
+		HtmlSubmitInput apply = (HtmlSubmitInput) page.getElementById("apply");
+		page = apply.click();
+
+		String text = page.asText();
+		assertTrue(text.contains("\"red\" template header"));
+		assertTrue(text.contains("from \"warbase\" subtemplate.xhtml"));
+		assertTrue(text.contains("resolved contracts: [red, warbase]"));
+		assertContractForCss(page, "contract.css", "red");
+		assertContractForCss(page, "cssLayout.css", "warbase");
+
+		// switch to red,jarbase contract
+		selectOne = (HtmlSelect) page.getElementById("selectOne");
+		selectOne.setSelectedAttribute("red,jarbase", true);
+		apply = (HtmlSubmitInput) page.getElementById("apply");
+		page = apply.click();
+
+		text = page.asText();
+		assertTrue(text.contains("\"red\" template header"));
+		assertTrue(text.contains("from \"jarbase\" subtemplate.xhtml"));
+		assertTrue(text.contains("resolved contracts: [red, jarbase]"));
+		assertContractForCss(page, "contract.css", "red");
+		assertContractForCss(page, "cssLayout.css", "jarbase");
+
+	}
+
+	@Test
+	public void testBlueExtendsWarbaseOrJarBaseContract() throws Exception {
+		HtmlPage page = webClient.getPage(webUrl + "faces/index.xhtml");
+
+		// switch to blue,warbase contract
+		HtmlSelect selectOne = (HtmlSelect) page.getElementById("selectOne");
+		selectOne.setSelectedAttribute("blue,warbase", true);
+		HtmlSubmitInput apply = (HtmlSubmitInput) page.getElementById("apply");
+		page = apply.click();
+
+		String text = page.asText();
+		assertTrue(text.contains("\"blue\" template header"));
+		assertTrue(text.contains("from \"warbase\" subtemplate.xhtml"));
+		assertTrue(text.contains("resolved contracts: [blue, warbase]"));
+		assertContractForCss(page, "contract.css", "blue");
+		assertContractForCss(page, "cssLayout.css", "warbase");
+
+		// switch to blue,jarbase contract
+		selectOne = (HtmlSelect) page.getElementById("selectOne");
+		selectOne.setSelectedAttribute("blue,jarbase", true);
+		apply = (HtmlSubmitInput) page.getElementById("apply");
+		page = apply.click();
+
+		text = page.asText();
+		assertTrue(text.contains("\"blue\" template header"));
+		assertTrue(text.contains("from \"jarbase\" subtemplate.xhtml"));
+		assertTrue(text.contains("resolved contracts: [blue, jarbase]"));
+		assertContractForCss(page, "contract.css", "blue");
+		assertContractForCss(page, "cssLayout.css", "jarbase");
+
+	}
+
+	@Test
+	public void testGreenExtendsWarbaseOrJarBaseContract() throws Exception {
+		HtmlPage page = webClient.getPage(webUrl + "faces/index.xhtml");
+
+		// switch to green,warbase contract
+		HtmlSelect selectOne = (HtmlSelect) page.getElementById("selectOne");
+		selectOne.setSelectedAttribute("green,warbase", true);
+		HtmlSubmitInput apply = (HtmlSubmitInput) page.getElementById("apply");
+		page = apply.click();
+
+		String text = page.asText();
+		assertTrue(text.contains("\"green\" template header"));
+		assertTrue(text.contains("from \"warbase\" subtemplate.xhtml"));
+		assertTrue(text.contains("resolved contracts: [green, warbase]"));
+		assertContractForCss(page, "contract.css", "green");
+		assertContractForCss(page, "cssLayout.css", "warbase");
+
+		// switch to green,jarbase contract
+		selectOne = (HtmlSelect) page.getElementById("selectOne");
+		selectOne.setSelectedAttribute("green,jarbase", true);
+		apply = (HtmlSubmitInput) page.getElementById("apply");
+		page = apply.click();
+
+		text = page.asText();
+		assertTrue(text.contains("\"green\" template header"));
+		assertTrue(text.contains("from \"jarbase\" subtemplate.xhtml"));
+		assertTrue(text.contains("resolved contracts: [green, jarbase]"));
+		assertContractForCss(page, "contract.css", "green");
+		assertContractForCss(page, "cssLayout.css", "jarbase");
+
+	}
+
+
+	@Test
+	public void testUserPathCalculatedContracts() throws Exception {
+		HtmlPage page = webClient.getPage(webUrl + "faces/user/index.xhtml");
+
+		// expect contracts blue,jarbase
+		String text = page.asText();
+		assertTrue(text.contains("\"blue\" template header"));
+		assertTrue(text.contains("from \"jarbase\" subtemplate.xhtml"));
+		assertTrue(text.contains("resolved contracts: [blue, jarbase]"));
+		assertContractForCss(page, "contract.css", "blue");
+		assertContractForCss(page, "cssLayout.css", "jarbase");
+
+	}
+
+	@Test
+	public void testRedPathCalculatedContracts() throws Exception {
+		HtmlPage page = webClient.getPage(webUrl + "faces/red/index.xhtml");
+
+		// expect contracts red,jarbase
+		String text = page.asText();
+		assertTrue(text.contains("\"red\" template header"));
+		assertTrue(text.contains("from \"jarbase\" subtemplate.xhtml"));
+		assertTrue(text.contains("resolved contracts: [red, jarbase]"));
+		assertContractForCss(page, "contract.css", "red");
+		assertContractForCss(page, "cssLayout.css", "jarbase");
+
+	}
+	
+	@Test
+	public void testGreenPathCalculatedContracts() throws Exception {
+		HtmlPage page = webClient.getPage(webUrl + "faces/green/index.xhtml");
+
+		// expect contracts green,jarbase
+		String text = page.asText();
+		assertTrue(text.contains("\"green\" template header"));
+		assertTrue(text.contains("from \"jarbase\" subtemplate.xhtml"));
+		assertTrue(text.contains("resolved contracts: [green, jarbase]"));
+		assertContractForCss(page, "contract.css", "green");
+		assertContractForCss(page, "cssLayout.css", "jarbase");
+
+	}
+
+	
+	
+	private void assertContractForCss(HtmlPage page, String resourceName,
+	        String expectedContract) {
+		DomNodeList<DomElement> links = page.getElementsByTagName("link");
+		for (DomElement cur : links) {
+			HtmlLink link = (HtmlLink) cur;
+			String href = link.getHrefAttribute();
+			if (href.contains(resourceName)) {
+				String query = href.substring(href.indexOf("?") + 1);
+				String[] parts = query.split("&");
+				for (String part : parts) {
+					String[] kv = part.split("=");
+					if ("con".equals(kv[0])) {
+						assertEquals("examined link href=" + href,
+						        expectedContract, kv[1]);
+						return;
+					}
+				}
+			}
+		}
+		fail("Could not find link for resource '" + resourceName + "'!");
+	}
+
+}
diff --git a/test/agnostic/vdl/facelets/contracts/extended/extended_red/pom.xml b/test/agnostic/vdl/facelets/contracts/extended/extended_red/pom.xml
new file mode 100644
index 0000000..22b477b
--- /dev/null
+++ b/test/agnostic/vdl/facelets/contracts/extended/extended_red/pom.xml
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.agnostic.vdl.facelets.contracts</groupId>
+        <artifactId>extended</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.agnostic.vdl.facelets.contracts.extended</groupId>
+    <artifactId>extended_red</artifactId>
+    <name>Mojarra ${project.version} - Test - Agnostic - VDL - Facelets - Contracts - extended - extended_red</name>
+    <build>
+        <finalName>test-agnostic-vdl-facelets-contracts-extended-extended_red</finalName>
+    </build>
+    <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/test/agnostic/vdl/facelets/contracts/extended/extended_red/src/main/resources/META-INF/contracts/red/css/contract.css b/test/agnostic/vdl/facelets/contracts/extended/extended_red/src/main/resources/META-INF/contracts/red/css/contract.css
new file mode 100644
index 0000000..8fea5d6
--- /dev/null
+++ b/test/agnostic/vdl/facelets/contracts/extended/extended_red/src/main/resources/META-INF/contracts/red/css/contract.css
@@ -0,0 +1,36 @@
+#top {
+    position: relative;
+    background-color: red;
+    color: white;
+    padding: 5px;
+    margin: 0px 0px 10px 0px;
+}
+body {
+    background-color: #ffffff;
+    font-size: 12px;
+    font-family: Verdana, "Verdana CE",  Arial, "Arial CE", "Lucida Grande CE", lucida, "Helvetica CE", sans-serif;
+    color: #000000;  
+    margin: 10px;
+}
+
+h1 {
+    font-family: Arial, "Arial CE", "Lucida Grande CE", lucida, "Helvetica CE", sans-serif;
+    border-bottom: 1px solid #AFAFAF; 
+    font-size:  16px;
+    font-weight: bold;
+    margin: 0px;
+    padding: 0px;
+    color: #FFFFFF;
+}
+
+a:link, a:visited {
+  color: #045491;
+  font-weight : bold;
+  text-decoration: none;
+}
+
+a:link:hover, a:visited:hover  {
+  color: #045491;
+  font-weight : bold;
+  text-decoration : underline;
+}
diff --git a/test/agnostic/vdl/facelets/contracts/extended/extended_red/src/main/resources/META-INF/contracts/red/javax.faces.contract.xml b/test/agnostic/vdl/facelets/contracts/extended/extended_red/src/main/resources/META-INF/contracts/red/javax.faces.contract.xml
new file mode 100644
index 0000000..2c0f1bc
--- /dev/null
+++ b/test/agnostic/vdl/facelets/contracts/extended/extended_red/src/main/resources/META-INF/contracts/red/javax.faces.contract.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. Copyright (c) 
+    1997-2013 Oracle and/or its affiliates. All rights reserved. The contents 
+    of this file are subject to the terms of either the GNU General Public License 
+    Version 2 only ("GPL") or the Common Development and Distribution License("CDDL") 
+    (collectively, the "License"). You may not use this file except in compliance 
+    with the License. You can obtain a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html 
+    or packager/legal/LICENSE.txt. See the License for the specific language 
+    governing permissions and limitations under the License. When distributing 
+    the software, include this License Header Notice in each file and include 
+    the License file at packager/legal/LICENSE.txt. GPL Classpath Exception: 
+    Oracle designates this particular file as subject to the "Classpath" exception 
+    as provided by Oracle in the GPL Version 2 section of the License file that 
+    accompanied this code. Modifications: If applicable, add the following below 
+    the License Header, with the fields enclosed by brackets [] replaced by your 
+    own identifying information: "Portions Copyright [year] [name of copyright 
+    owner]" Contributor(s): If you wish your version of this file to be governed 
+    by only the CDDL or only the GPL Version 2, indicate your decision by adding 
+    "[Contributor] elects to include this software in this distribution under 
+    the [CDDL or GPL Version 2] license." If you don't indicate a single choice 
+    of license, a recipient has the option to distribute your version of this 
+    file under either the CDDL, the GPL Version 2 or to extend the choice of 
+    license to its licensees as provided above. However, if you add GPL Version 
+    2 code and therefore, elected the GPL Version 2 license, then the option 
+    applies only if the new code is made subject to such option by the copyright 
+    holder. -->
+
+<!-- 
+	Marker file to identify contracts in jars.
+ -->
\ No newline at end of file
diff --git a/test/agnostic/vdl/facelets/contracts/extended/extended_red/src/main/resources/META-INF/contracts/red/template.xhtml b/test/agnostic/vdl/facelets/contracts/extended/extended_red/src/main/resources/META-INF/contracts/red/template.xhtml
new file mode 100644
index 0000000..7dcbce6
--- /dev/null
+++ b/test/agnostic/vdl/facelets/contracts/extended/extended_red/src/main/resources/META-INF/contracts/red/template.xhtml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. Copyright (c) 
+    1997-2013 Oracle and/or its affiliates. All rights reserved. The contents 
+    of this file are subject to the terms of either the GNU General Public License 
+    Version 2 only ("GPL") or the Common Development and Distribution License("CDDL") 
+    (collectively, the "License"). You may not use this file except in compliance 
+    with the License. You can obtain a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html 
+    or packager/legal/LICENSE.txt. See the License for the specific language 
+    governing permissions and limitations under the License. When distributing 
+    the software, include this License Header Notice in each file and include 
+    the License file at packager/legal/LICENSE.txt. GPL Classpath Exception: 
+    Oracle designates this particular file as subject to the "Classpath" exception 
+    as provided by Oracle in the GPL Version 2 section of the License file that 
+    accompanied this code. Modifications: If applicable, add the following below 
+    the License Header, with the fields enclosed by brackets [] replaced by your 
+    own identifying information: "Portions Copyright [year] [name of copyright 
+    owner]" Contributor(s): If you wish your version of this file to be governed 
+    by only the CDDL or only the GPL Version 2, indicate your decision by adding 
+    "[Contributor] elects to include this software in this distribution under 
+    the [CDDL or GPL Version 2] license." If you don't indicate a single choice 
+    of license, a recipient has the option to distribute your version of this 
+    file under either the CDDL, the GPL Version 2 or to extend the choice of 
+    license to its licensees as provided above. However, if you add GPL Version 
+    2 code and therefore, elected the GPL Version 2 license, then the option 
+    applies only if the new code is made subject to such option by the copyright 
+    holder. -->
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+	xmlns:ui="http://java.sun.com/jsf/facelets"
+	xmlns:f="http://java.sun.com/jsf/core"
+	xmlns:h="http://java.sun.com/jsf/html">
+<ui:composition template="/subtemplate.xhtml">
+
+	<ui:define name="top">
+		<h1>(JSF 2.2 Resource Library Contract) "red" template header</h1>
+	</ui:define>
+
+	<ui:define name="content">Content ("red" template)</ui:define>
+
+    <ui:define name="template">red refers to template="/subtemplate.xhtml"</ui:define>
+</ui:composition>
+</html>
diff --git a/test/agnostic/vdl/facelets/contracts/extended/extended_red/src/main/resources/META-INF/faces-config.xml b/test/agnostic/vdl/facelets/contracts/extended/extended_red/src/main/resources/META-INF/faces-config.xml
new file mode 100644
index 0000000..517d161
--- /dev/null
+++ b/test/agnostic/vdl/facelets/contracts/extended/extended_red/src/main/resources/META-INF/faces-config.xml
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. Copyright (c) 
+    1997-2013 Oracle and/or its affiliates. All rights reserved. The contents 
+    of this file are subject to the terms of either the GNU General Public License 
+    Version 2 only ("GPL") or the Common Development and Distribution License("CDDL") 
+    (collectively, the "License"). You may not use this file except in compliance 
+    with the License. You can obtain a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html 
+    or packager/legal/LICENSE.txt. See the License for the specific language 
+    governing permissions and limitations under the License. When distributing 
+    the software, include this License Header Notice in each file and include 
+    the License file at packager/legal/LICENSE.txt. GPL Classpath Exception: 
+    Oracle designates this particular file as subject to the "Classpath" exception 
+    as provided by Oracle in the GPL Version 2 section of the License file that 
+    accompanied this code. Modifications: If applicable, add the following below 
+    the License Header, with the fields enclosed by brackets [] replaced by your 
+    own identifying information: "Portions Copyright [year] [name of copyright 
+    owner]" Contributor(s): If you wish your version of this file to be governed 
+    by only the CDDL or only the GPL Version 2, indicate your decision by adding 
+    "[Contributor] elects to include this software in this distribution under 
+    the [CDDL or GPL Version 2] license." If you don't indicate a single choice 
+    of license, a recipient has the option to distribute your version of this 
+    file under either the CDDL, the GPL Version 2 or to extend the choice of 
+    license to its licensees as provided above. However, if you add GPL Version 
+    2 code and therefore, elected the GPL Version 2 license, then the option 
+    applies only if the new code is made subject to such option by the copyright 
+    holder. -->
+
+<faces-config xmlns="http://xmlns.jcp.org/xml/ns/javaee"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
+        http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd"
+	version="2.2">
+	<!-- resource-library-contracts configuration works only with the new xml 
+		namespaces! -->
+
+	<application>
+		<resource-library-contracts>
+			<contract-mapping>
+				<url-pattern>/red/*</url-pattern>
+				<contracts>red,jarbase</contracts>
+			</contract-mapping>
+		</resource-library-contracts>
+	</application>
+
+</faces-config>
diff --git a/test/agnostic/vdl/facelets/contracts/extended/pom.xml b/test/agnostic/vdl/facelets/contracts/extended/pom.xml
new file mode 100644
index 0000000..d68f61c
--- /dev/null
+++ b/test/agnostic/vdl/facelets/contracts/extended/pom.xml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.agnostic.vdl.facelets.contracts</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.agnostic.vdl.facelets.contracts</groupId>
+    <artifactId>extended</artifactId>
+    <packaging>pom</packaging>
+    <name>Mojarra ${project.version} - Test - Agnostic - VDL - Facelets - Contracts - extended</name>
+    <modules>
+        <module>extended_base</module>
+        <module>extended_blue</module>
+        <module>extended_red</module>
+        <module>extended_contracts</module>
+    </modules>
+</project>
diff --git a/test/agnostic/vdl/facelets/contracts/pom.xml b/test/agnostic/vdl/facelets/contracts/pom.xml
new file mode 100644
index 0000000..5dc32f7
--- /dev/null
+++ b/test/agnostic/vdl/facelets/contracts/pom.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.agnostic.vdl.facelets</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.agnostic.vdl.facelets.contracts</groupId>
+    <artifactId>pom</artifactId>
+    <packaging>pom</packaging>
+    <name>Mojarra ${project.version} - Test - Agnostic - VDL - Facelets - Contracts</name>
+    <modules>
+        <module>basic</module>
+        <module>basic_contract_in_jar</module>
+        <module>basic_contract_jar</module>
+        <module>extended</module>
+        <module>sample</module>
+        <module>simple</module>
+        <module>vhosts</module>
+        <module>viewroot</module>
+    </modules>
+</project>
diff --git a/test/agnostic/vdl/facelets/contracts/sample/pom.xml b/test/agnostic/vdl/facelets/contracts/sample/pom.xml
new file mode 100644
index 0000000..95a1e17
--- /dev/null
+++ b/test/agnostic/vdl/facelets/contracts/sample/pom.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.agnostic.vdl.facelets.contracts</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.agnostic.vdl.facelets.contracts</groupId>
+    <artifactId>sample</artifactId>
+    <packaging>war</packaging>
+    <name>Mojarra ${project.version} - Test - Agnostic - VDL - Facelets - Contracts - Sample</name>
+    <build>
+        <finalName>test-agnostic-vdl-facelets-contracts-sample</finalName>
+    </build>
+    <properties>
+        <netbeans.hint.deploy.server>gfv3ee6</netbeans.hint.deploy.server>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/test/agnostic/vdl/facelets/contracts/sample/src/main/webapp/WEB-INF/faces-config.xml b/test/agnostic/vdl/facelets/contracts/sample/src/main/webapp/WEB-INF/faces-config.xml
new file mode 100644
index 0000000..50d4261
--- /dev/null
+++ b/test/agnostic/vdl/facelets/contracts/sample/src/main/webapp/WEB-INF/faces-config.xml
@@ -0,0 +1,21 @@
+<?xml version='1.0' encoding='UTF-8'?>
+
+<!-- =========== FULL CONFIGURATION FILE ================================== -->
+
+<faces-config version="2.2"
+              xmlns="http://xmlns.jcp.org/xml/ns/javaee"
+              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+              xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd">
+    <application>
+        <resource-library-contracts>
+            <contract-mapping>
+                <url-pattern>/user/*</url-pattern>
+                <contracts>user</contracts>
+            </contract-mapping>
+            <contract-mapping>
+                <url-pattern>*</url-pattern>
+                <contracts>default</contracts>
+            </contract-mapping>
+        </resource-library-contracts>
+    </application>
+</faces-config>
diff --git a/test/agnostic/vdl/facelets/contracts/sample/src/main/webapp/WEB-INF/glassfish-web.xml b/test/agnostic/vdl/facelets/contracts/sample/src/main/webapp/WEB-INF/glassfish-web.xml
new file mode 100644
index 0000000..8576848
--- /dev/null
+++ b/test/agnostic/vdl/facelets/contracts/sample/src/main/webapp/WEB-INF/glassfish-web.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
+<glassfish-web-app error-url="">
+  <context-root>/test-agnostic-vdl-facelets-contracts-sample</context-root>
+  <class-loader delegate="true"/>
+  <jsp-config>
+    <property name="keepgenerated" value="true">
+      <description>Keep a copy of the generated servlet class' java code.</description>
+    </property>
+  </jsp-config>
+</glassfish-web-app>
diff --git a/test/agnostic/vdl/facelets/contracts/sample/src/main/webapp/WEB-INF/web.xml b/test/agnostic/vdl/facelets/contracts/sample/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..93e14e1
--- /dev/null
+++ b/test/agnostic/vdl/facelets/contracts/sample/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <welcome-file-list>
+        <welcome-file>faces/index.xhtml</welcome-file>
+    </welcome-file-list>
+</web-app>
diff --git a/test/agnostic/vdl/facelets/contracts/sample/src/main/webapp/contracts/default/template.xhtml b/test/agnostic/vdl/facelets/contracts/sample/src/main/webapp/contracts/default/template.xhtml
new file mode 100644
index 0000000..21fb20b
--- /dev/null
+++ b/test/agnostic/vdl/facelets/contracts/sample/src/main/webapp/contracts/default/template.xhtml
@@ -0,0 +1,18 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+    <h:head>
+        <title>Default Contract</title>
+    </h:head>
+    <h:body>
+        <p>
+            <ui:insert name="nav"></ui:insert>
+            <ui:insert name="content"></ui:insert>
+        </p>
+    </h:body>
+</html>
+
diff --git a/test/agnostic/vdl/facelets/contracts/sample/src/main/webapp/contracts/user/template.xhtml b/test/agnostic/vdl/facelets/contracts/sample/src/main/webapp/contracts/user/template.xhtml
new file mode 100644
index 0000000..6a8571a
--- /dev/null
+++ b/test/agnostic/vdl/facelets/contracts/sample/src/main/webapp/contracts/user/template.xhtml
@@ -0,0 +1,17 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+    <h:head>
+        <title>User area contract</title>
+    </h:head>
+    <h:body>
+        <p>
+            <ui:insert name="nav">Navigation area (user)</ui:insert>
+            <ui:insert name="content"></ui:insert>
+        </p>
+    </h:body>
+</html>
diff --git a/test/agnostic/vdl/facelets/contracts/sample/src/main/webapp/index.xhtml b/test/agnostic/vdl/facelets/contracts/sample/src/main/webapp/index.xhtml
new file mode 100644
index 0000000..fcc780f
--- /dev/null
+++ b/test/agnostic/vdl/facelets/contracts/sample/src/main/webapp/index.xhtml
@@ -0,0 +1,38 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:h="http://java.sun.com/jsf/html">
+    <body>
+        <ui:composition template="/template.xhtml">
+            <ui:define name="nav">
+                Navigation area
+            </ui:define>
+            <ui:define name="content">
+                <p>
+                    This example demonstrates that a facelets template can come from
+                    a resource library contract. What that means is that you can set
+                    different areas in your application to use a different resource
+                    library contract.
+                </p>
+                <p>
+                    This particular page uses the 'default' contract, see contracts/default.
+                </p>
+                <p>
+                    To see how it triggers this particular template see the WEB-INF/faces-config.xml.
+                </p>
+                <p>
+                    <h:form prependId="false">
+                        Click on the button and you will see that it still uses the 'default' contract.
+                        <p><h:commandButton id="button" value="next" action="page2" /></p>
+                    </h:form>
+                </p>
+                <p>
+                    Or if you want click on the link to go to the user area which uses the 'user' contract.
+                    <a href="#{facesContext.externalContext.requestContextPath}/faces/user/index.xhtml">User area</a>
+                </p>
+            </ui:define>
+        </ui:composition>
+    </body>
+</html>
diff --git a/test/agnostic/vdl/facelets/contracts/sample/src/main/webapp/page2.xhtml b/test/agnostic/vdl/facelets/contracts/sample/src/main/webapp/page2.xhtml
new file mode 100644
index 0000000..1b1b611
--- /dev/null
+++ b/test/agnostic/vdl/facelets/contracts/sample/src/main/webapp/page2.xhtml
@@ -0,0 +1,20 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:h="http://java.sun.com/jsf/html">
+    <body>
+        <ui:composition template="/template.xhtml">
+            <ui:define name="content">
+                <p>
+                    This area uses the 'default' resource library contract.
+                </p>
+                <p>
+                    Click
+                    <a href="#{facesContext.externalContext.requestContextPath}/faces/index.xhtml">here</a> to go back.
+                </p>
+            </ui:define>
+        </ui:composition>
+    </body>
+</html>
diff --git a/test/agnostic/vdl/facelets/contracts/sample/src/main/webapp/user/index.xhtml b/test/agnostic/vdl/facelets/contracts/sample/src/main/webapp/user/index.xhtml
new file mode 100644
index 0000000..5646f59
--- /dev/null
+++ b/test/agnostic/vdl/facelets/contracts/sample/src/main/webapp/user/index.xhtml
@@ -0,0 +1,20 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:h="http://java.sun.com/jsf/html">
+    <body>
+        <ui:composition template="/template.xhtml">
+            <ui:define name="content">
+                <p>
+                    This area uses the 'user' resource library contract.
+                </p>
+                <p>
+                    Click
+                    <a href="#{facesContext.externalContext.requestContextPath}/faces/index.xhtml">here</a> to go back.
+                </p>
+            </ui:define>
+        </ui:composition>
+    </body>
+</html>
diff --git a/test/agnostic/vdl/facelets/contracts/sample/src/test/java/com/sun/faces/test/agnostic/vdl/facelets/contracts/sample/Issue2709IT.java b/test/agnostic/vdl/facelets/contracts/sample/src/test/java/com/sun/faces/test/agnostic/vdl/facelets/contracts/sample/Issue2709IT.java
new file mode 100644
index 0000000..88d8e25
--- /dev/null
+++ b/test/agnostic/vdl/facelets/contracts/sample/src/test/java/com/sun/faces/test/agnostic/vdl/facelets/contracts/sample/Issue2709IT.java
@@ -0,0 +1,82 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.vdl.facelets.contracts.sample;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class Issue2709IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testIndex() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/index.xhtml");
+        assertTrue(page.getTitleText().equals("Default Contract"));
+    }
+
+    @Test
+    public void testUserIndex() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/user/index.xhtml");
+        assertTrue(page.getTitleText().equals("User area contract"));
+    }
+
+    @Test
+    public void testPage2() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/page2.xhtml");
+        assertTrue(page.getTitleText().equals("Default Contract"));
+    }
+}
diff --git a/test/agnostic/vdl/facelets/contracts/simple/pom.xml b/test/agnostic/vdl/facelets/contracts/simple/pom.xml
new file mode 100644
index 0000000..02d8a66
--- /dev/null
+++ b/test/agnostic/vdl/facelets/contracts/simple/pom.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.agnostic.vdl.facelets.contracts</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.agnostic.vdl.facelets.contracts</groupId>
+    <artifactId>simple</artifactId>
+    <packaging>war</packaging>
+    <name>Mojarra ${project.version} - Test - Agnostic - VDL - Facelets - Contracts - Simple</name>
+    <build>
+        <finalName>test-agnostic-vdl-facelets-contracts-simple</finalName>
+    </build>
+    <properties>
+        <netbeans.hint.deploy.server>gfv3ee6</netbeans.hint.deploy.server>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/test/agnostic/vdl/facelets/contracts/simple/src/main/webapp/WEB-INF/faces-config.xml b/test/agnostic/vdl/facelets/contracts/simple/src/main/webapp/WEB-INF/faces-config.xml
new file mode 100644
index 0000000..040f1fe
--- /dev/null
+++ b/test/agnostic/vdl/facelets/contracts/simple/src/main/webapp/WEB-INF/faces-config.xml
@@ -0,0 +1,17 @@
+<?xml version='1.0' encoding='UTF-8'?>
+
+<!-- =========== FULL CONFIGURATION FILE ================================== -->
+
+<faces-config version="2.2"
+              xmlns="http://xmlns.jcp.org/xml/ns/javaee"
+              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+              xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd">
+    <application>
+        <resource-library-contracts>
+            <contract-mapping>
+                <url-pattern>*</url-pattern>
+                <contracts>siteLayout</contracts>
+            </contract-mapping>
+        </resource-library-contracts>
+    </application>
+</faces-config>
diff --git a/test/agnostic/vdl/facelets/contracts/simple/src/main/webapp/WEB-INF/glassfish-web.xml b/test/agnostic/vdl/facelets/contracts/simple/src/main/webapp/WEB-INF/glassfish-web.xml
new file mode 100644
index 0000000..13b2c96
--- /dev/null
+++ b/test/agnostic/vdl/facelets/contracts/simple/src/main/webapp/WEB-INF/glassfish-web.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
+<glassfish-web-app error-url="">
+  <context-root>/test-agnostic-vdl-facelets-contracts-simple</context-root>
+  <class-loader delegate="true"/>
+  <jsp-config>
+    <property name="keepgenerated" value="true">
+      <description>Keep a copy of the generated servlet class' java code.</description>
+    </property>
+  </jsp-config>
+</glassfish-web-app>
diff --git a/test/agnostic/vdl/facelets/contracts/simple/src/main/webapp/WEB-INF/web.xml b/test/agnostic/vdl/facelets/contracts/simple/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..94e2237
--- /dev/null
+++ b/test/agnostic/vdl/facelets/contracts/simple/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>${webapp.projectStage}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
+        <param-value>${webapp.partialStateSaving}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>${webapp.stateSavingMethod}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.FACELETS_REFRESH_PERIOD</param-name>
+        <param-value>3600</param-value>
+    </context-param>
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <welcome-file-list>
+        <welcome-file>/faces/index.xhtml</welcome-file>
+    </welcome-file-list>
+</web-app>
diff --git a/test/agnostic/vdl/facelets/contracts/simple/src/main/webapp/contracts/siteLayout/cssLayout.css b/test/agnostic/vdl/facelets/contracts/simple/src/main/webapp/contracts/siteLayout/cssLayout.css
new file mode 100644
index 0000000..8ee7ceb
--- /dev/null
+++ b/test/agnostic/vdl/facelets/contracts/simple/src/main/webapp/contracts/siteLayout/cssLayout.css
@@ -0,0 +1,61 @@
+
+#top {
+    position: relative;
+    background-color: #036fab;
+    color: white;
+    padding: 5px;
+    margin: 0px 0px 10px 0px;
+}
+
+#bottom {
+    position: relative;
+    background-color: #c2dfef;
+    padding: 5px;
+    margin: 10px 0px 0px 0px;
+}
+
+#left {
+    float: left;
+    background-color: #ece3a5;
+    padding: 5px;
+    width: 150px;
+}
+
+#right {
+    float: right;
+    background-color: #ece3a5;
+    padding: 5px;
+    width: 150px;
+}
+
+.center_content {
+    position: relative;
+    background-color: #dddddd;
+    padding: 5px;
+}
+
+.left_content {
+    background-color: #dddddd;
+    padding: 5px;
+    margin-left: 170px;
+}
+
+.right_content {
+    background-color: #dddddd;
+    padding: 5px;
+    margin: 0px 170px 0px 170px;
+}
+
+#top a:link, #top a:visited {
+  color: white;
+  font-weight : bold;
+  text-decoration: none;
+}
+
+#top a:link:hover, #top a:visited:hover  {
+  color: black;
+  font-weight : bold;
+  text-decoration : underline;
+}
+
+
diff --git a/test/agnostic/vdl/facelets/contracts/simple/src/main/webapp/contracts/siteLayout/default.css b/test/agnostic/vdl/facelets/contracts/simple/src/main/webapp/contracts/siteLayout/default.css
new file mode 100644
index 0000000..6cbc3d1
--- /dev/null
+++ b/test/agnostic/vdl/facelets/contracts/simple/src/main/webapp/contracts/siteLayout/default.css
@@ -0,0 +1,29 @@
+body {
+    background-color: #ffffff;
+    font-size: 12px;
+    font-family: Verdana, "Verdana CE",  Arial, "Arial CE", "Lucida Grande CE", lucida, "Helvetica CE", sans-serif;
+    color: #000000;  
+    margin: 10px;
+}
+
+h1 {
+    font-family: Arial, "Arial CE", "Lucida Grande CE", lucida, "Helvetica CE", sans-serif;
+    border-bottom: 1px solid #AFAFAF; 
+    font-size:  16px;
+    font-weight: bold;
+    margin: 0px;
+    padding: 0px;
+    color: #D20005;
+}
+
+a:link, a:visited {
+  color: #045491;
+  font-weight : bold;
+  text-decoration: none;
+}
+
+a:link:hover, a:visited:hover  {
+  color: #045491;
+  font-weight : bold;
+  text-decoration : underline;
+}
diff --git a/test/agnostic/vdl/facelets/contracts/simple/src/main/webapp/contracts/siteLayout/leftNav_foo.xhtml b/test/agnostic/vdl/facelets/contracts/simple/src/main/webapp/contracts/siteLayout/leftNav_foo.xhtml
new file mode 100644
index 0000000..81a00ab
--- /dev/null
+++ b/test/agnostic/vdl/facelets/contracts/simple/src/main/webapp/contracts/siteLayout/leftNav_foo.xhtml
@@ -0,0 +1,68 @@
+<?xml version='1.0' encoding='UTF-8' ?> 
+<!DOCTYPE html>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:h="http://java.sun.com/jsf/html">
+
+    <h:head>
+        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+        <h:outputStylesheet name="default.css" />
+        <h:outputStylesheet name="cssLayout.css" />
+        <title><ui:insert name="title"></ui:insert></title>
+    </h:head>
+
+    <h:body>
+
+        <div id="left">
+            <p>Left Side Navigation Menu</p>
+            <ui:insert name="nav">Nav Content</ui:insert>
+        </div>
+        
+        <div id="content" class="left_content">
+            <ui:insert name="content">Content</ui:insert>
+        </div>
+
+    </h:body>
+
+</html>
diff --git a/test/agnostic/vdl/facelets/contracts/simple/src/main/webapp/contracts/siteLayout/topNav_Template.xhtml b/test/agnostic/vdl/facelets/contracts/simple/src/main/webapp/contracts/siteLayout/topNav_Template.xhtml
new file mode 100644
index 0000000..d9a4e7d
--- /dev/null
+++ b/test/agnostic/vdl/facelets/contracts/simple/src/main/webapp/contracts/siteLayout/topNav_Template.xhtml
@@ -0,0 +1,68 @@
+<?xml version='1.0' encoding='UTF-8' ?> 
+<!DOCTYPE html>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:h="http://java.sun.com/jsf/html">
+
+    <h:head>
+        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+        <h:outputStylesheet id="default" name="default.css" />
+        <h:outputStylesheet name="cssLayout.css" />
+        <title><ui:insert name="title"></ui:insert></title>
+    </h:head>
+
+    <h:body>
+
+        <div id="top" class="top">
+            <p>Top Navigation Menu</p>
+            <ui:insert name="nav">Nav content</ui:insert>
+        </div>
+
+        <div id="content" class="center_content">
+            <ui:insert name="content">Content</ui:insert>
+        </div>
+
+    </h:body>
+
+</html>
diff --git a/test/agnostic/vdl/facelets/contracts/simple/src/main/webapp/index.xhtml b/test/agnostic/vdl/facelets/contracts/simple/src/main/webapp/index.xhtml
new file mode 100644
index 0000000..b7837f1
--- /dev/null
+++ b/test/agnostic/vdl/facelets/contracts/simple/src/main/webapp/index.xhtml
@@ -0,0 +1,30 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:h="http://java.sun.com/jsf/html">
+
+    <body>
+
+        <ui:composition template="/topNav_Template.xhtml">
+
+            <ui:define name="title">
+                title
+            </ui:define>
+
+            <ui:define name="nav">
+                nav
+            </ui:define>
+
+            <ui:define name="content">
+                
+                <h:form prependId="false">                
+                    
+                <p><h:commandButton id="button" value="next" action="page2" /></p>
+                
+                </h:form>
+            </ui:define>
+
+        </ui:composition>
+
+    </body>
+</html>
diff --git a/test/agnostic/vdl/facelets/contracts/simple/src/main/webapp/page2.xhtml b/test/agnostic/vdl/facelets/contracts/simple/src/main/webapp/page2.xhtml
new file mode 100644
index 0000000..3d26b01
--- /dev/null
+++ b/test/agnostic/vdl/facelets/contracts/simple/src/main/webapp/page2.xhtml
@@ -0,0 +1,25 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+
+    <body>
+
+        <ui:composition template="/leftNav_foo.xhtml">
+
+            <ui:define name="title">
+                title
+            </ui:define>
+
+            <ui:define name="nav">
+                nav
+            </ui:define>
+
+            <ui:define name="content">
+                content
+            </ui:define>
+
+        </ui:composition>
+
+    </body>
+</html>
diff --git a/test/agnostic/vdl/facelets/contracts/simple/src/test/java/com/sun/faces/test/agnostic/vdl/facelets/contracts/simple/Issue2640IT.java b/test/agnostic/vdl/facelets/contracts/simple/src/test/java/com/sun/faces/test/agnostic/vdl/facelets/contracts/simple/Issue2640IT.java
new file mode 100644
index 0000000..f053bb6
--- /dev/null
+++ b/test/agnostic/vdl/facelets/contracts/simple/src/test/java/com/sun/faces/test/agnostic/vdl/facelets/contracts/simple/Issue2640IT.java
@@ -0,0 +1,118 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.test.agnostic.vdl.facelets.contracts.simple;
+
+import com.gargoylesoftware.htmlunit.html.HtmlLink;
+import com.gargoylesoftware.htmlunit.html.HtmlElement;
+import com.gargoylesoftware.htmlunit.html.DomNodeList;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.DomElement;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+public class Issue2640IT {
+    
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testTemplatesAreUsed() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/index.xhtml");
+        String text = page.asText();
+        
+        assertTrue(text.contains("Top Navigation Menu"));
+        
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("button");
+        page = button.click();
+        
+        text = page.asText();
+        assertTrue(text.contains("Left Side Navigation Menu"));
+        
+    }
+
+    @Test
+    public void testResourcesAreRendered() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/index.xhtml");
+        
+        examineCss(page.getElementsByTagName("link"));
+        
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("button");
+        page = button.click();
+        
+        examineCss(page.getElementsByTagName("link"));
+    }
+    
+    private void examineCss(DomNodeList<DomElement> cssFiles) throws Exception {
+        HtmlLink curLink;
+        String href;
+        String content;
+        for (DomElement cur : cssFiles) {
+            curLink = (HtmlLink) cur;
+            href = curLink.getHrefAttribute();
+            assertTrue(href.contains("con=siteLayout"));
+            if (href.contains("default.css")) {
+                content = curLink.getWebResponse(true).getContentAsString("UTF-8");
+                assertTrue(content.contains("#AFAFAF"));
+            } else if (href.contains("cssLayout.css")) {
+                content = curLink.getWebResponse(true).getContentAsString("UTF-8");
+                assertTrue(content.contains("#036fab"));
+            } else {
+                fail();
+            }
+        }        
+    }
+}
diff --git a/test/agnostic/vdl/facelets/contracts/vhosts/nbactions.xml b/test/agnostic/vdl/facelets/contracts/vhosts/nbactions.xml
new file mode 100644
index 0000000..88968a6
--- /dev/null
+++ b/test/agnostic/vdl/facelets/contracts/vhosts/nbactions.xml
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<actions>
+        <action>
+            <actionName>test.single</actionName>
+            <goals>
+                <goal>test-compile</goal>
+                <goal>surefire:test</goal>
+            </goals>
+            <properties>
+                <test>${packageClassName}</test>
+                <integration.url>http://localhost:8080/test-agnostic-vdl-facelets-contracts-vhosts/</integration.url>
+            </properties>
+        </action>
+        <action>
+            <actionName>debug.test.single</actionName>
+            <goals>
+                <goal>test-compile</goal>
+                <goal>surefire:test</goal>
+            </goals>
+            <properties>
+                <test>${packageClassName}</test>
+                <forkMode>once</forkMode>
+                <maven.surefire.debug>-Xdebug -Xrunjdwp:transport=dt_socket,server=n,address=${jpda.address}</maven.surefire.debug>
+                <jpda.listen>true</jpda.listen>
+                <integration.url>http://localhost:8080/test-agnostic-vdl-facelets-contracts-vhosts/</integration.url>
+            </properties>
+        </action>
+        <action>
+            <actionName>test</actionName>
+            <goals>
+                <goal>test</goal>
+            </goals>
+            <properties>
+                <integration.url>http://localhost:8080/test-agnostic-vdl-facelets-contracts-vhosts/</integration.url>
+            </properties>
+        </action>
+        <action>
+            <actionName>run</actionName>
+            <goals>
+                <goal>package</goal>
+            </goals>
+            <properties>
+                <integration.url>http://localhost:8080/test-agnostic-vdl-facelets-contracts-vhosts/</integration.url>
+                <netbeans.deploy>true</netbeans.deploy>
+            </properties>
+        </action>
+    </actions>
diff --git a/test/agnostic/vdl/facelets/contracts/vhosts/pom.xml b/test/agnostic/vdl/facelets/contracts/vhosts/pom.xml
new file mode 100644
index 0000000..81709ac
--- /dev/null
+++ b/test/agnostic/vdl/facelets/contracts/vhosts/pom.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.agnostic.vdl.facelets.contracts</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.agnostic.vdl.facelets.contracts</groupId>
+    <artifactId>vhosts</artifactId>
+    <packaging>war</packaging>
+    <name>Mojarra ${project.version} - Test - Agnostic - VDL - Facelets - Contracts - Virtual Hosts</name>
+    <build>
+        <finalName>test-agnostic-vdl-facelets-contracts-vhosts</finalName>
+    </build>
+    <properties>
+        <netbeans.hint.deploy.server>gfv3ee6</netbeans.hint.deploy.server>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/test/agnostic/vdl/facelets/contracts/vhosts/src/main/java/com/sun/faces/test/vdl/facelets/contracts/vhosts/VDLFactory.java b/test/agnostic/vdl/facelets/contracts/vhosts/src/main/java/com/sun/faces/test/vdl/facelets/contracts/vhosts/VDLFactory.java
new file mode 100644
index 0000000..73c005f
--- /dev/null
+++ b/test/agnostic/vdl/facelets/contracts/vhosts/src/main/java/com/sun/faces/test/vdl/facelets/contracts/vhosts/VDLFactory.java
@@ -0,0 +1,65 @@
+package com.sun.faces.test.vdl.facelets.contracts.vhosts;
+
+import javax.faces.context.FacesContext;
+import javax.faces.view.ViewDeclarationLanguage;
+import javax.faces.view.ViewDeclarationLanguageFactory;
+import javax.faces.view.ViewDeclarationLanguageWrapper;
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * Use resource library contracts for something like virtual hosts.
+ *
+ * @author Frank Caputo
+ */
+public class VDLFactory extends ViewDeclarationLanguageFactory {
+
+    private ViewDeclarationLanguageFactory wrapped;
+
+    public VDLFactory(ViewDeclarationLanguageFactory wrapped) {
+        this.wrapped = wrapped;
+    }
+
+    @Override
+    public ViewDeclarationLanguageFactory getWrapped() {
+        return wrapped;
+    }
+
+    @Override
+    public ViewDeclarationLanguage getViewDeclarationLanguage(String viewId) {
+        return new VDL(wrapped.getViewDeclarationLanguage(viewId));
+    }
+
+    private static class VDL extends ViewDeclarationLanguageWrapper {
+
+        private static final List<String> KNOWN_HOSTS = Arrays.asList("host1", "host2", "host3", "host5");
+
+        private ViewDeclarationLanguage wrapped;
+
+        private VDL(ViewDeclarationLanguage wrapped) {
+            this.wrapped = wrapped;
+        }
+
+        @Override
+        public ViewDeclarationLanguage getWrapped() {
+            return wrapped;
+        }
+
+        @Override
+        public List<String> calculateResourceLibraryContracts(FacesContext context, String viewId) {
+            String host = context.getExternalContext().getRequestHeaderMap().get("host");
+
+            if(KNOWN_HOSTS.contains(host)) {
+                return Arrays.asList(host);
+            }
+
+            if("host4".equals(host)) {
+                // host4 is a special one. It extends host2 (this is something Leonardo wanted).
+                return Arrays.asList("host4", "host2");
+            }
+
+            return null;
+        }
+
+    }
+}
diff --git a/test/agnostic/vdl/facelets/contracts/vhosts/src/main/webapp/WEB-INF/faces-config.xml b/test/agnostic/vdl/facelets/contracts/vhosts/src/main/webapp/WEB-INF/faces-config.xml
new file mode 100644
index 0000000..36cfa59
--- /dev/null
+++ b/test/agnostic/vdl/facelets/contracts/vhosts/src/main/webapp/WEB-INF/faces-config.xml
@@ -0,0 +1,12 @@
+<?xml version='1.0' encoding='UTF-8'?>
+
+<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
+              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+              xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
+              version="2.0">
+    <factory>
+        <view-declaration-language-factory>
+            com.sun.faces.test.vdl.facelets.contracts.vhosts.VDLFactory
+        </view-declaration-language-factory>
+    </factory>
+</faces-config>
\ No newline at end of file
diff --git a/test/agnostic/vdl/facelets/contracts/vhosts/src/main/webapp/WEB-INF/glassfish-web.xml b/test/agnostic/vdl/facelets/contracts/vhosts/src/main/webapp/WEB-INF/glassfish-web.xml
new file mode 100644
index 0000000..7d1f751
--- /dev/null
+++ b/test/agnostic/vdl/facelets/contracts/vhosts/src/main/webapp/WEB-INF/glassfish-web.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
+<glassfish-web-app error-url="">
+  <context-root>/test-agnostic-vdl-facelets-contracts-vhosts</context-root>
+  <class-loader delegate="true"/>
+  <jsp-config>
+    <property name="keepgenerated" value="true">
+      <description>Keep a copy of the generated servlet class' java code.</description>
+    </property>
+  </jsp-config>
+</glassfish-web-app>
diff --git a/test/agnostic/vdl/facelets/contracts/vhosts/src/main/webapp/WEB-INF/web.xml b/test/agnostic/vdl/facelets/contracts/vhosts/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..2bcd9ed
--- /dev/null
+++ b/test/agnostic/vdl/facelets/contracts/vhosts/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>${webapp.projectStage}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
+        <param-value>${webapp.partialStateSaving}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>${webapp.stateSavingMethod}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.FACELETS_REFRESH_PERIOD</param-name>
+        <param-value>3600</param-value>
+    </context-param>
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <welcome-file-list>
+        <welcome-file>faces/index.xhtml</welcome-file>
+    </welcome-file-list>
+</web-app>
diff --git a/test/agnostic/vdl/facelets/contracts/vhosts/src/main/webapp/contracts/host1/css/layout.css b/test/agnostic/vdl/facelets/contracts/vhosts/src/main/webapp/contracts/host1/css/layout.css
new file mode 100644
index 0000000..2d7bc51
--- /dev/null
+++ b/test/agnostic/vdl/facelets/contracts/vhosts/src/main/webapp/contracts/host1/css/layout.css
@@ -0,0 +1,3 @@
+html {
+    background: yellow;
+}
\ No newline at end of file
diff --git a/test/agnostic/vdl/facelets/contracts/vhosts/src/main/webapp/contracts/host1/header.xhtml b/test/agnostic/vdl/facelets/contracts/vhosts/src/main/webapp/contracts/host1/header.xhtml
new file mode 100644
index 0000000..3cb9003
--- /dev/null
+++ b/test/agnostic/vdl/facelets/contracts/vhosts/src/main/webapp/contracts/host1/header.xhtml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui:composition xmlns:ui="http://java.sun.com/jsf/facelets">
+
+  <div style="padding: 8px; margin: 10px 0; border: 1px solid #CCC; background-color: #00FBFF;">
+    
+    <p>header from host1 contract</p>
+    
+    // we have no header
+    
+  </div>
+</ui:composition>
\ No newline at end of file
diff --git a/test/agnostic/vdl/facelets/contracts/vhosts/src/main/webapp/contracts/host1/lib/cc.xhtml b/test/agnostic/vdl/facelets/contracts/vhosts/src/main/webapp/contracts/host1/lib/cc.xhtml
new file mode 100644
index 0000000..5029dfa
--- /dev/null
+++ b/test/agnostic/vdl/facelets/contracts/vhosts/src/main/webapp/contracts/host1/lib/cc.xhtml
@@ -0,0 +1,23 @@
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:c="http://java.sun.com/jsp/jstl/core"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:composite="http://java.sun.com/jsf/composite">
+
+<composite:interface></composite:interface>
+<composite:implementation>
+           
+    <div style="padding: 8px; margin: 10px 0; border: 1px solid #CCC; background-color: #FF9100;">
+
+                <p>within composite component defined within current resource library contract</p>
+            
+            
+
+    <div id="ccContent">
+        host1/lib/cc.xhtml
+    </div>
+                
+    </div>
+</composite:implementation>
+</html>
diff --git a/test/agnostic/vdl/facelets/contracts/vhosts/src/main/webapp/contracts/host2/template.xhtml b/test/agnostic/vdl/facelets/contracts/vhosts/src/main/webapp/contracts/host2/template.xhtml
new file mode 100644
index 0000000..5ac6479
--- /dev/null
+++ b/test/agnostic/vdl/facelets/contracts/vhosts/src/main/webapp/contracts/host2/template.xhtml
@@ -0,0 +1,63 @@
+<?xml version='1.0' encoding='UTF-8' ?> 
+<!DOCTYPE html>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:h="http://java.sun.com/jsf/html">
+
+    <h:head>
+        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+        <h:outputStylesheet name="/css/layout.css" />
+        <title>#{facesContext.externalContext.requestHeaderMap.host}</title>
+    </h:head>
+
+    <h:body>
+        <div id="host2content">
+            <ui:insert name="content"/>
+        </div>
+        <div id="footer">
+            <ui:insert name="footer"/>
+        </div>
+    </h:body>
+
+</html>
diff --git a/test/agnostic/vdl/facelets/contracts/vhosts/src/main/webapp/contracts/host3/index.xhtml b/test/agnostic/vdl/facelets/contracts/vhosts/src/main/webapp/contracts/host3/index.xhtml
new file mode 100644
index 0000000..ca8cf35
--- /dev/null
+++ b/test/agnostic/vdl/facelets/contracts/vhosts/src/main/webapp/contracts/host3/index.xhtml
@@ -0,0 +1,59 @@
+<?xml version='1.0' encoding='UTF-8' ?> 
+<!DOCTYPE html>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:h="http://java.sun.com/jsf/html">
+
+    <h:head>
+        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+        <title>#{facesContext.externalContext.requestHeaderMap.host}</title>
+    </h:head>
+
+    <h:body>
+        <div id="content">
+            false positive
+        </div>
+    </h:body>
+
+</html>
diff --git a/test/agnostic/vdl/facelets/contracts/vhosts/src/main/webapp/contracts/host4/index.xhtml b/test/agnostic/vdl/facelets/contracts/vhosts/src/main/webapp/contracts/host4/index.xhtml
new file mode 100644
index 0000000..f6a5932
--- /dev/null
+++ b/test/agnostic/vdl/facelets/contracts/vhosts/src/main/webapp/contracts/host4/index.xhtml
@@ -0,0 +1,13 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:h="http://java.sun.com/jsf/html">
+
+    <body>
+        <ui:composition template="/template.xhtml">
+            <ui:define name="content">
+                host4 content
+            </ui:define>
+        </ui:composition>
+    </body>
+</html>
diff --git a/test/agnostic/vdl/facelets/contracts/vhosts/src/main/webapp/contracts/host5/foo/template.xhtml b/test/agnostic/vdl/facelets/contracts/vhosts/src/main/webapp/contracts/host5/foo/template.xhtml
new file mode 100644
index 0000000..9052d01
--- /dev/null
+++ b/test/agnostic/vdl/facelets/contracts/vhosts/src/main/webapp/contracts/host5/foo/template.xhtml
@@ -0,0 +1,61 @@
+<?xml version='1.0' encoding='UTF-8' ?> 
+<!DOCTYPE html>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:h="http://java.sun.com/jsf/html">
+
+    <h:head>
+        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+        <h:outputStylesheet name="/css/layout.css" />
+        <title>#{facesContext.externalContext.requestHeaderMap.host}</title>
+    </h:head>
+
+    <h:body>
+        host5: foo/template.xhtml
+        <div id="content">
+            <ui:insert name="content"/>
+        </div>
+    </h:body>
+
+</html>
diff --git a/test/agnostic/vdl/facelets/contracts/vhosts/src/main/webapp/foo/index.xhtml b/test/agnostic/vdl/facelets/contracts/vhosts/src/main/webapp/foo/index.xhtml
new file mode 100644
index 0000000..9f53a3b
--- /dev/null
+++ b/test/agnostic/vdl/facelets/contracts/vhosts/src/main/webapp/foo/index.xhtml
@@ -0,0 +1,16 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:h="http://java.sun.com/jsf/html">
+
+    <body>
+        <ui:composition template="/foo/template.xhtml">
+            <ui:define name="content">
+                main content
+            </ui:define>
+            <ui:define name="footer">
+                footer info
+            </ui:define>
+        </ui:composition>
+    </body>
+</html>
diff --git a/test/agnostic/vdl/facelets/contracts/vhosts/src/main/webapp/foo/template.xhtml b/test/agnostic/vdl/facelets/contracts/vhosts/src/main/webapp/foo/template.xhtml
new file mode 100644
index 0000000..a574d73
--- /dev/null
+++ b/test/agnostic/vdl/facelets/contracts/vhosts/src/main/webapp/foo/template.xhtml
@@ -0,0 +1,62 @@
+<?xml version='1.0' encoding='UTF-8' ?> 
+<!DOCTYPE html>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:h="http://java.sun.com/jsf/html">
+
+    <h:head>
+        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+        <h:outputStylesheet name="/css/layout.css" />
+        <title>#{facesContext.externalContext.requestHeaderMap.host}</title>
+    </h:head>
+
+    <h:body>
+        foo/template.xhtml
+        <ui:include src="/header.xhtml"/>
+        <div id="content">
+            <ui:insert name="content"/>
+        </div>
+    </h:body>
+
+</html>
diff --git a/test/agnostic/vdl/facelets/contracts/vhosts/src/main/webapp/header.xhtml b/test/agnostic/vdl/facelets/contracts/vhosts/src/main/webapp/header.xhtml
new file mode 100644
index 0000000..887bddd
--- /dev/null
+++ b/test/agnostic/vdl/facelets/contracts/vhosts/src/main/webapp/header.xhtml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui:composition xmlns="http://www.w3.org/1999/xhtml"
+                xmlns:ui="http://java.sun.com/jsf/facelets">
+    <div id="header">header content</div>
+    <p>Header from top level web app root.</p>
+    
+</ui:composition>
\ No newline at end of file
diff --git a/test/agnostic/vdl/facelets/contracts/vhosts/src/main/webapp/index.xhtml b/test/agnostic/vdl/facelets/contracts/vhosts/src/main/webapp/index.xhtml
new file mode 100644
index 0000000..3d7969f
--- /dev/null
+++ b/test/agnostic/vdl/facelets/contracts/vhosts/src/main/webapp/index.xhtml
@@ -0,0 +1,18 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:lib="http://java.sun.com/jsf/composite/lib">
+    <body>
+        <ui:composition template="/template.xhtml">
+            <ui:define name="content">
+                <lib:cc/>
+                main content
+            </ui:define>
+            <ui:define name="footer">
+                footer info
+            </ui:define>
+        </ui:composition>
+    </body>
+</html>
diff --git a/test/agnostic/vdl/facelets/contracts/vhosts/src/main/webapp/resources/css/layout.css b/test/agnostic/vdl/facelets/contracts/vhosts/src/main/webapp/resources/css/layout.css
new file mode 100644
index 0000000..6a3a219
--- /dev/null
+++ b/test/agnostic/vdl/facelets/contracts/vhosts/src/main/webapp/resources/css/layout.css
@@ -0,0 +1,3 @@
+html {
+    background: red;
+}
\ No newline at end of file
diff --git a/test/agnostic/vdl/facelets/contracts/vhosts/src/main/webapp/resources/lib/2_3/cc.xhtml b/test/agnostic/vdl/facelets/contracts/vhosts/src/main/webapp/resources/lib/2_3/cc.xhtml
new file mode 100644
index 0000000..73fcda7
--- /dev/null
+++ b/test/agnostic/vdl/facelets/contracts/vhosts/src/main/webapp/resources/lib/2_3/cc.xhtml
@@ -0,0 +1,23 @@
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:c="http://java.sun.com/jsp/jstl/core"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:composite="http://java.sun.com/jsf/composite">
+
+<composite:interface></composite:interface>
+<composite:implementation>
+    <ui:decorate template="template.xhtml">
+        <ui:define name="ccContent">
+            <div style="padding: 8px; margin: 10px 0; border: 1px solid #CCC; background-color: #FFD000;">
+
+                <p>within composite component defined in web app root</p>
+            
+            
+            lib/2_3/cc.xhtml
+            
+            </div>
+        </ui:define>
+    </ui:decorate>
+</composite:implementation>
+</html>
diff --git a/test/agnostic/vdl/facelets/contracts/vhosts/src/main/webapp/resources/lib/2_3/template.xhtml b/test/agnostic/vdl/facelets/contracts/vhosts/src/main/webapp/resources/lib/2_3/template.xhtml
new file mode 100644
index 0000000..1b3b888
--- /dev/null
+++ b/test/agnostic/vdl/facelets/contracts/vhosts/src/main/webapp/resources/lib/2_3/template.xhtml
@@ -0,0 +1,56 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<ui:composition xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+
+<div style="padding: 8px; margin: 10px 0; border: 1px solid #CCC; background-color: #EA00FF;">
+    
+    <p>template from within composite component directory</p>
+    
+<div id="ccTemplate">lib/2_3/template.xhtml</div>
+<div id="ccContent">
+    <ui:insert name="ccContent"/>
+</div>
+
+</div>
+</ui:composition>
diff --git a/test/agnostic/vdl/facelets/contracts/vhosts/src/main/webapp/template.xhtml b/test/agnostic/vdl/facelets/contracts/vhosts/src/main/webapp/template.xhtml
new file mode 100644
index 0000000..9420374
--- /dev/null
+++ b/test/agnostic/vdl/facelets/contracts/vhosts/src/main/webapp/template.xhtml
@@ -0,0 +1,68 @@
+<?xml version='1.0' encoding='UTF-8' ?> 
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:h="http://java.sun.com/jsf/html">
+
+    <h:head>
+        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+        <h:outputStylesheet name="/css/layout.css" />
+        <title>#{facesContext.externalContext.requestHeaderMap.host}</title>
+    </h:head>
+    <h:body>
+        <div style="padding: 8px; margin: 10px 0; border: 1px solid #CCC; background-color: #00ff04;">
+        <p>template from top level web app root</p>
+                
+        /template.xhtml
+        <ui:include src="/header.xhtml"/>
+        <div id="content">
+            <ui:insert name="content"/>
+        </div>
+        
+        </div>
+    </h:body>
+</html>
diff --git a/test/agnostic/vdl/facelets/contracts/vhosts/src/test/java/com/sun/faces/test/agnostic/vdl/facelets/contracts/vhosts/Issue2511IT.java b/test/agnostic/vdl/facelets/contracts/vhosts/src/test/java/com/sun/faces/test/agnostic/vdl/facelets/contracts/vhosts/Issue2511IT.java
new file mode 100644
index 0000000..2dccdb7
--- /dev/null
+++ b/test/agnostic/vdl/facelets/contracts/vhosts/src/test/java/com/sun/faces/test/agnostic/vdl/facelets/contracts/vhosts/Issue2511IT.java
@@ -0,0 +1,176 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.vdl.facelets.contracts.vhosts;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.DomElement;
+import com.gargoylesoftware.htmlunit.html.DomNodeList;
+import com.gargoylesoftware.htmlunit.html.HtmlElement;
+import com.gargoylesoftware.htmlunit.html.HtmlLink;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.sun.faces.test.junit.JsfTest;
+import com.sun.faces.test.junit.JsfTestRunner;
+import com.sun.faces.test.junit.JsfVersion;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import java.io.IOException;
+import static org.hamcrest.CoreMatchers.*;
+import static org.junit.Assert.assertThat;
+import org.junit.runner.RunWith;
+
+ at RunWith(JsfTestRunner.class)
+public class Issue2511IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testResources() throws Exception {
+        checkCss("defaultHost", null);
+        checkCss("host1", "host1");
+        checkCss("host2", null);
+    }
+
+    @Test
+    public void testDefaultTemplate() throws Exception {
+        webClient.removeRequestHeader("Host");
+        HtmlPage page = webClient.getPage(webUrl + "faces/index.xhtml");
+        DomElement footer = page.getElementById("footer");
+        assertThat(footer, nullValue());
+        DomElement content = page.getElementById("content");
+        assertThat(content, notNullValue());
+        assertThat(content.getTextContent().trim(), containsString("main content"));
+    }
+
+    @Test
+    public void testAnotherTemplate() throws Exception {
+        webClient.addRequestHeader("Host", "host2");
+        HtmlPage page = webClient.getPage(webUrl + "faces/index.xhtml");
+        HtmlElement host2content = page.getHtmlElementById("host2content");
+        assertThat(host2content, notNullValue());
+        HtmlElement footer = page.getHtmlElementById("footer");
+        assertThat(footer, notNullValue());
+        assertThat(footer.getTextContent().trim(), is("footer info"));
+    }
+
+    @Test
+    public void testFalsePositive() throws Exception {
+        webClient.addRequestHeader("Host", "host3");
+        HtmlPage page = webClient.getPage(webUrl + "faces/index.xhtml");
+        HtmlElement content = page.getHtmlElementById("content");
+        assertThat(content, notNullValue());
+        assertThat(content.getTextContent().trim(), is("false positive"));
+    }
+
+    @Test
+    public void testInclude() throws Exception {
+        webClient.removeRequestHeader("Host");
+        HtmlPage page = webClient.getPage(webUrl + "faces/index.xhtml");
+        DomElement header = page.getElementById("header");
+        assertThat(header, notNullValue());
+        assertThat(header.getTextContent().trim(), is("header content"));
+        webClient.addRequestHeader("Host", "host1");
+        page = webClient.getPage(webUrl + "faces/index.xhtml");
+        header = page.getElementById("header");
+        assertThat(header, nullValue());
+    }
+
+    @Test
+    public void testExtension() throws Exception {
+        webClient.addRequestHeader("Host", "host4");
+        HtmlPage page = webClient.getPage(webUrl + "faces/index.xhtml");
+        HtmlElement content = page.getHtmlElementById("host2content");
+        assertThat(content, notNullValue());
+        assertThat(content.getTextContent().trim(), is("host4 content"));
+        HtmlElement footer = page.getHtmlElementById("footer");
+        assertThat(footer, notNullValue());
+        assertThat(footer.getTextContent().trim(), is(""));
+    }
+
+    @JsfTest(JsfVersion.JSF_2_2_1)
+    @Test
+    public void testCompositeComponent() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/index.xhtml");
+
+        HtmlElement template = page.getHtmlElementById("ccTemplate");
+        assertThat(template, notNullValue());
+        assertThat(template.getTextContent().trim(), is("lib/2_3/template.xhtml"));
+
+        HtmlElement content = page.getHtmlElementById("ccContent");
+        assertThat(content, notNullValue());
+        assertThat(content.getTextContent().trim(), containsString("lib/2_3/cc.xhtml"));
+
+        webClient.addRequestHeader("Host", "host1");
+        page = webClient.getPage(webUrl + "faces/index.xhtml");
+
+        content = page.getHtmlElementById("ccContent");
+        assertThat(content, notNullValue());
+        assertThat(content.getTextContent().trim(), containsString("host1/lib/cc.xhtml"));
+
+    }
+
+    private void checkCss(String host, String contract) throws IOException {
+        webClient.addRequestHeader("Host", host);
+        HtmlPage page = webClient.getPage(webUrl + "faces/index.xhtml");
+        String titleText = page.getTitleText();
+        assertThat(titleText, is(host));
+        DomNodeList<DomElement> linkElements = page.getElementsByTagName("link");
+        for (DomElement linkElement : linkElements) {
+            HtmlLink link = (HtmlLink) linkElement;
+            if(contract == null) {
+                assertThat(link.getHrefAttribute(), not(containsString("con=")));
+            } else {
+                assertThat(link.getHrefAttribute(), containsString("con=" + contract));
+            }
+        }
+    }
+}
diff --git a/test/agnostic/vdl/facelets/contracts/vhosts/src/test/java/com/sun/faces/test/agnostic/vdl/facelets/contracts/vhosts/Issue2679IT.java b/test/agnostic/vdl/facelets/contracts/vhosts/src/test/java/com/sun/faces/test/agnostic/vdl/facelets/contracts/vhosts/Issue2679IT.java
new file mode 100644
index 0000000..abd7eb0
--- /dev/null
+++ b/test/agnostic/vdl/facelets/contracts/vhosts/src/test/java/com/sun/faces/test/agnostic/vdl/facelets/contracts/vhosts/Issue2679IT.java
@@ -0,0 +1,92 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.vdl.facelets.contracts.vhosts;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.DomNode;
+import com.gargoylesoftware.htmlunit.html.HtmlElement;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.hamcrest.CoreMatchers.*;
+import static org.junit.Assert.assertThat;
+import org.junit.Ignore;
+
+public class Issue2679IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testDummy() {
+    }
+
+    public void testRelative() throws Exception {
+        webClient.removeRequestHeader("Host");
+        HtmlPage page = webClient.getPage(webUrl + "faces/foo/index.xhtml");
+        HtmlElement body = page.getBody();
+
+        // the first child is the text node
+        DomNode firstChild = body.getChildren().iterator().next();
+        String textContent = firstChild.getTextContent().trim();
+        assertThat(textContent, is("foo/template.xhtml"));
+
+        webClient.addRequestHeader("Host", "host5");
+        page = webClient.getPage(webUrl + "faces/foo/index.xhtml");
+        body = page.getBody();
+
+        // the first child is the text node
+        firstChild = body.getChildren().iterator().next();
+        textContent = firstChild.getTextContent().trim();
+        assertThat(textContent, is("host5: foo/template.xhtml"));
+    }
+}
diff --git a/test/agnostic/vdl/facelets/contracts/viewroot/pom.xml b/test/agnostic/vdl/facelets/contracts/viewroot/pom.xml
new file mode 100644
index 0000000..a1d7de1
--- /dev/null
+++ b/test/agnostic/vdl/facelets/contracts/viewroot/pom.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.agnostic.vdl.facelets.contracts</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.agnostic.vdl.facelets.contracts</groupId>
+    <artifactId>viewroot</artifactId>
+    <packaging>war</packaging>
+    <name>Mojarra ${project.version} - Test - Agnostic - VDL - Facelets - Contracts - ViewRoot</name>
+    <build>
+        <finalName>test-agnostic-vdl-facelets-contracts-viewroot</finalName>
+    </build>
+    <properties>
+        <netbeans.hint.deploy.server>gfv3ee6</netbeans.hint.deploy.server>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/test/agnostic/vdl/facelets/contracts/viewroot/src/main/java/com/sun/faces/test/agnostic/vdl/facelets/contracts/viewroot/ViewRootContractsELBean.java b/test/agnostic/vdl/facelets/contracts/viewroot/src/main/java/com/sun/faces/test/agnostic/vdl/facelets/contracts/viewroot/ViewRootContractsELBean.java
new file mode 100644
index 0000000..4c0d59d
--- /dev/null
+++ b/test/agnostic/vdl/facelets/contracts/viewroot/src/main/java/com/sun/faces/test/agnostic/vdl/facelets/contracts/viewroot/ViewRootContractsELBean.java
@@ -0,0 +1,58 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.vdl.facelets.contracts.viewroot;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.RequestScoped;
+
+ at RequestScoped
+ at ManagedBean(name = "viewRootConstractsELBean")
+public class ViewRootContractsELBean {
+
+    private String contracts = null;
+
+    public String getContracts() {
+        return contracts;
+    }
+
+    public void setContracts(String contracts) {
+        this.contracts = contracts;
+    }
+}
diff --git a/test/agnostic/vdl/facelets/contracts/viewroot/src/main/webapp/WEB-INF/faces-config.xml b/test/agnostic/vdl/facelets/contracts/viewroot/src/main/webapp/WEB-INF/faces-config.xml
new file mode 100644
index 0000000..30d561b
--- /dev/null
+++ b/test/agnostic/vdl/facelets/contracts/viewroot/src/main/webapp/WEB-INF/faces-config.xml
@@ -0,0 +1,7 @@
+<?xml version='1.0' encoding='UTF-8'?>
+
+<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
+              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+              xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
+              version="2.0">
+</faces-config>
diff --git a/test/agnostic/vdl/facelets/contracts/viewroot/src/main/webapp/WEB-INF/glassfish-web.xml b/test/agnostic/vdl/facelets/contracts/viewroot/src/main/webapp/WEB-INF/glassfish-web.xml
new file mode 100644
index 0000000..fad1c98
--- /dev/null
+++ b/test/agnostic/vdl/facelets/contracts/viewroot/src/main/webapp/WEB-INF/glassfish-web.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
+<glassfish-web-app error-url="">
+  <context-root>/test-agnostic-vdl-facelets-contracts-viewroot</context-root>
+  <class-loader delegate="true"/>
+  <jsp-config>
+    <property name="keepgenerated" value="true">
+      <description>Keep a copy of the generated servlet class' java code.</description>
+    </property>
+  </jsp-config>
+</glassfish-web-app>
diff --git a/test/agnostic/vdl/facelets/contracts/viewroot/src/main/webapp/WEB-INF/web.xml b/test/agnostic/vdl/facelets/contracts/viewroot/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..85c0580
--- /dev/null
+++ b/test/agnostic/vdl/facelets/contracts/viewroot/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>${webapp.projectStage}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
+        <param-value>${webapp.partialStateSaving}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>${webapp.stateSavingMethod}</param-value>
+    </context-param>
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <welcome-file-list>
+        <welcome-file>faces/index.xhtml</welcome-file>
+    </welcome-file-list>
+</web-app>
diff --git a/test/agnostic/vdl/facelets/contracts/viewroot/src/main/webapp/contracts/layout1/css/layout.css b/test/agnostic/vdl/facelets/contracts/viewroot/src/main/webapp/contracts/layout1/css/layout.css
new file mode 100644
index 0000000..2d7bc51
--- /dev/null
+++ b/test/agnostic/vdl/facelets/contracts/viewroot/src/main/webapp/contracts/layout1/css/layout.css
@@ -0,0 +1,3 @@
+html {
+    background: yellow;
+}
\ No newline at end of file
diff --git a/test/agnostic/vdl/facelets/contracts/viewroot/src/main/webapp/contracts/layout1/header.xhtml b/test/agnostic/vdl/facelets/contracts/viewroot/src/main/webapp/contracts/layout1/header.xhtml
new file mode 100644
index 0000000..319f6a8
--- /dev/null
+++ b/test/agnostic/vdl/facelets/contracts/viewroot/src/main/webapp/contracts/layout1/header.xhtml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<ui:composition xmlns:ui="http://java.sun.com/jsf/facelets">
+    // we have no header
+</ui:composition>
diff --git a/test/agnostic/vdl/facelets/contracts/viewroot/src/main/webapp/contracts/layout2/template.xhtml b/test/agnostic/vdl/facelets/contracts/viewroot/src/main/webapp/contracts/layout2/template.xhtml
new file mode 100644
index 0000000..56f789b
--- /dev/null
+++ b/test/agnostic/vdl/facelets/contracts/viewroot/src/main/webapp/contracts/layout2/template.xhtml
@@ -0,0 +1,63 @@
+<?xml version='1.0' encoding='UTF-8' ?> 
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+        <h:outputStylesheet name="/css/layout.css" />
+        <title>#{param['style']}</title>
+    </h:head>
+    <h:body>
+        <div id="host2content">
+            <ui:insert name="content"/>
+        </div>
+        <div id="footer">
+            <ui:insert name="footer"/>
+        </div>
+    </h:body>
+</html>
diff --git a/test/agnostic/vdl/facelets/contracts/viewroot/src/main/webapp/header.xhtml b/test/agnostic/vdl/facelets/contracts/viewroot/src/main/webapp/header.xhtml
new file mode 100644
index 0000000..29fb8e2
--- /dev/null
+++ b/test/agnostic/vdl/facelets/contracts/viewroot/src/main/webapp/header.xhtml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<ui:composition 
+    xmlns="http://www.w3.org/1999/xhtml"
+    xmlns:ui="http://java.sun.com/jsf/facelets">
+    <div id="header">header content</div>
+</ui:composition>
diff --git a/test/agnostic/vdl/facelets/contracts/viewroot/src/main/webapp/index.xhtml b/test/agnostic/vdl/facelets/contracts/viewroot/src/main/webapp/index.xhtml
new file mode 100644
index 0000000..30e26e3
--- /dev/null
+++ b/test/agnostic/vdl/facelets/contracts/viewroot/src/main/webapp/index.xhtml
@@ -0,0 +1,21 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets" 
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    <body>
+        <f:view contracts="#{param['style']}">
+            <ui:composition template="/template.xhtml">
+                <ui:define name="content">
+                    main content
+                </ui:define>
+                <ui:define name="footer">
+                    footer info
+                </ui:define>
+            </ui:composition>
+        </f:view>
+    </body>
+</html>
diff --git a/test/agnostic/vdl/facelets/contracts/viewroot/src/main/webapp/resources/css/layout.css b/test/agnostic/vdl/facelets/contracts/viewroot/src/main/webapp/resources/css/layout.css
new file mode 100644
index 0000000..6a3a219
--- /dev/null
+++ b/test/agnostic/vdl/facelets/contracts/viewroot/src/main/webapp/resources/css/layout.css
@@ -0,0 +1,3 @@
+html {
+    background: red;
+}
\ No newline at end of file
diff --git a/test/agnostic/vdl/facelets/contracts/viewroot/src/main/webapp/template.xhtml b/test/agnostic/vdl/facelets/contracts/viewroot/src/main/webapp/template.xhtml
new file mode 100644
index 0000000..3f8c5fb
--- /dev/null
+++ b/test/agnostic/vdl/facelets/contracts/viewroot/src/main/webapp/template.xhtml
@@ -0,0 +1,61 @@
+<?xml version='1.0' encoding='UTF-8' ?> 
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:h="http://java.sun.com/jsf/html">
+        <h:head>
+            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+            <h:outputStylesheet name="/css/layout.css" />
+            <title>#{param['style']}</title>
+        </h:head>
+        <h:body>
+            <ui:include src="/header.xhtml"/>
+            <div id="content">
+                <ui:insert name="content"/>
+            </div>
+        </h:body>
+</html>
diff --git a/test/agnostic/vdl/facelets/contracts/viewroot/src/main/webapp/viewRootContractsEL.xhtml b/test/agnostic/vdl/facelets/contracts/viewroot/src/main/webapp/viewRootContractsEL.xhtml
new file mode 100644
index 0000000..c801e26
--- /dev/null
+++ b/test/agnostic/vdl/facelets/contracts/viewroot/src/main/webapp/viewRootContractsEL.xhtml
@@ -0,0 +1,63 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets" 
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    <body>
+        <f:view contracts="#{viewRootContractsELBean.contracts}">
+            <ui:composition template="/template.xhtml">
+                <ui:define name="content">
+                    main content
+                </ui:define>
+                <ui:define name="footer">
+                    footer info
+                </ui:define>
+            </ui:composition>
+        </f:view>
+    </body>
+</html>
diff --git a/test/agnostic/vdl/facelets/contracts/viewroot/src/main/webapp/wrong.xhtml b/test/agnostic/vdl/facelets/contracts/viewroot/src/main/webapp/wrong.xhtml
new file mode 100644
index 0000000..f5f006f
--- /dev/null
+++ b/test/agnostic/vdl/facelets/contracts/viewroot/src/main/webapp/wrong.xhtml
@@ -0,0 +1,21 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets" 
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    <body>
+        <ui:composition template="/template.xhtml">
+            <ui:define name="content">
+                <f:view contracts="#{param['style']}">
+                    main content
+                </f:view>
+            </ui:define>
+            <ui:define name="footer">
+                footer info
+            </ui:define>
+        </ui:composition>
+    </body>
+</html>
diff --git a/test/agnostic/vdl/facelets/contracts/viewroot/src/test/java/com/sun/faces/test/agnostic/vdl/facelets/contracts/viewroot/Issue2654IT.java b/test/agnostic/vdl/facelets/contracts/viewroot/src/test/java/com/sun/faces/test/agnostic/vdl/facelets/contracts/viewroot/Issue2654IT.java
new file mode 100644
index 0000000..0283999
--- /dev/null
+++ b/test/agnostic/vdl/facelets/contracts/viewroot/src/test/java/com/sun/faces/test/agnostic/vdl/facelets/contracts/viewroot/Issue2654IT.java
@@ -0,0 +1,82 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.vdl.facelets.contracts.viewroot;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class Issue2654IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testLayout1() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/index.xhtml?style=layout1");
+        assertEquals("layout1", page.getTitleText());
+    }
+
+    @Test
+    public void testLayout2() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/index.xhtml?style=layout2");
+        assertEquals("layout2", page.getTitleText());
+    }
+
+    @Test
+    public void testLayout3() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/index.xhtml?style=layout3");
+        assertEquals("layout3", page.getTitleText());
+    }
+}
diff --git a/test/agnostic/vdl/facelets/contracts/viewroot/src/test/java/com/sun/faces/test/agnostic/vdl/facelets/contracts/viewroot/Issue2671IT.java b/test/agnostic/vdl/facelets/contracts/viewroot/src/test/java/com/sun/faces/test/agnostic/vdl/facelets/contracts/viewroot/Issue2671IT.java
new file mode 100644
index 0000000..e490065
--- /dev/null
+++ b/test/agnostic/vdl/facelets/contracts/viewroot/src/test/java/com/sun/faces/test/agnostic/vdl/facelets/contracts/viewroot/Issue2671IT.java
@@ -0,0 +1,82 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.vdl.facelets.contracts.viewroot;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class Issue2671IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    /**
+     * Test that loads up a page where the f:view tag was placed incorrectly.
+     * 
+     * <p>
+     * It will silently ignore the wrong placement, but to verify it did deal
+     * with the scenario correctly look in the server.log for the following 
+     * message:
+     * </p>
+     * <pre>
+     *  INFO: f:view contracts attribute found, but not used at top level
+     * </pre>
+     */
+    @Test
+    public void testWrong() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/wrong.xhtml?style=wrong");
+        assertEquals("wrong", page.getTitleText());
+    }
+}
diff --git a/test/agnostic/vdl/facelets/contracts/viewroot/src/test/java/com/sun/faces/test/agnostic/vdl/facelets/contracts/viewroot/Issue2736IT.java b/test/agnostic/vdl/facelets/contracts/viewroot/src/test/java/com/sun/faces/test/agnostic/vdl/facelets/contracts/viewroot/Issue2736IT.java
new file mode 100644
index 0000000..8df8323
--- /dev/null
+++ b/test/agnostic/vdl/facelets/contracts/viewroot/src/test/java/com/sun/faces/test/agnostic/vdl/facelets/contracts/viewroot/Issue2736IT.java
@@ -0,0 +1,70 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.vdl.facelets.contracts.viewroot;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class Issue2736IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testViewRootConstractsEL() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/viewRootContractsEL.xhtml");
+        assertEquals(200, page.getWebResponse().getStatusCode());
+    }
+}
diff --git a/test/agnostic/vdl/facelets/only_faces_config_in_jar/app/nbactions.xml b/test/agnostic/vdl/facelets/only_faces_config_in_jar/app/nbactions.xml
new file mode 100644
index 0000000..577b27c
--- /dev/null
+++ b/test/agnostic/vdl/facelets/only_faces_config_in_jar/app/nbactions.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<actions>
+        <action>
+            <actionName>test.single</actionName>
+            <goals>
+                <goal>test-compile</goal>
+                <goal>surefire:test</goal>
+            </goals>
+            <properties>
+                <test>${packageClassName}</test>
+                <integration.url>http://localhost:8080/test-agnostic-vdl-facelets-only_faces_config_in_jar_app/</integration.url>
+            </properties>
+        </action>
+        <action>
+            <actionName>debug.test.single</actionName>
+            <goals>
+                <goal>test-compile</goal>
+                <goal>surefire:test</goal>
+            </goals>
+            <properties>
+                <test>${packageClassName}</test>
+                <forkMode>once</forkMode>
+                <maven.surefire.debug>-Xdebug -Xrunjdwp:transport=dt_socket,server=n,address=${jpda.address}</maven.surefire.debug>
+                <jpda.listen>true</jpda.listen>
+                <integration.url>http://localhost:8080/test-agnostic-vdl-facelets-only_faces_config_in_jar_app/</integration.url>
+            </properties>
+        </action>
+    </actions>
diff --git a/test/agnostic/vdl/facelets/only_faces_config_in_jar/app/pom.xml b/test/agnostic/vdl/facelets/only_faces_config_in_jar/app/pom.xml
new file mode 100644
index 0000000..6a7e786
--- /dev/null
+++ b/test/agnostic/vdl/facelets/only_faces_config_in_jar/app/pom.xml
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.agnostic.vdl.facelets.only_faces_config_in_jar</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.agnostic.vdl.facelets.only_faces_config_in_jar</groupId>
+    <artifactId>only_faces_config_in_jar_app</artifactId>
+    <packaging>war</packaging>
+    <name>Mojarra ${project.version} - Test - Agnostic - VDL - Facelets - only_faces_config_in_jar_app</name>
+    <build>
+        <finalName>test-agnostic-vdl-facelets-only_faces_config_in_jar_app</finalName>
+    </build>
+    <dependencies>
+        <dependency>
+            <groupId>com.sun.faces.test.agnostic.vdl.facelets.only_faces_config_in_jar</groupId>
+            <artifactId>only_faces_config_in_jar_jar</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+    </dependencies>
+    <properties>
+        <netbeans.hint.deploy.server>gfv3ee6</netbeans.hint.deploy.server>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/test/agnostic/vdl/facelets/only_faces_config_in_jar/app/src/main/java/com/sun/faces/test/agnostic/vdl/facelets/only_faces_config_in_jar/TestBean.java b/test/agnostic/vdl/facelets/only_faces_config_in_jar/app/src/main/java/com/sun/faces/test/agnostic/vdl/facelets/only_faces_config_in_jar/TestBean.java
new file mode 100644
index 0000000..f188dcd
--- /dev/null
+++ b/test/agnostic/vdl/facelets/only_faces_config_in_jar/app/src/main/java/com/sun/faces/test/agnostic/vdl/facelets/only_faces_config_in_jar/TestBean.java
@@ -0,0 +1,73 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.agnostic.vdl.facelets.only_faces_config_in_jar;
+
+import java.io.Serializable;
+
+import javax.faces.bean.ManagedBean;
+
+ at ManagedBean(name = "test")
+public class TestBean implements Serializable {
+
+    private String[] strList;
+
+    public String[] getStrList() {
+        strList = new String[10];
+        for (int i = 0; i < 10; i++) {
+            strList[i] = "str" + i;
+        }
+        return strList;
+    }
+
+    public void setStrList(String[] strList) {
+        this.strList = strList;
+    }
+
+    public int size = 5;
+
+    public int getSize() {
+        return size;
+    }
+
+    public void setSize(int size) {
+        this.size = size;
+    }
+}
diff --git a/test/agnostic/vdl/facelets/only_faces_config_in_jar/app/src/main/webapp/WEB-INF/glassfish-web.xml b/test/agnostic/vdl/facelets/only_faces_config_in_jar/app/src/main/webapp/WEB-INF/glassfish-web.xml
new file mode 100644
index 0000000..d4e9409
--- /dev/null
+++ b/test/agnostic/vdl/facelets/only_faces_config_in_jar/app/src/main/webapp/WEB-INF/glassfish-web.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
+<glassfish-web-app error-url="">
+  <context-root>/test-agnostic-vdl-facelets-only_faces_config_in_jar_app</context-root>
+  <class-loader delegate="true"/>
+  <jsp-config>
+    <property name="keepgenerated" value="true">
+      <description>Keep a copy of the generated servlet class' java code.</description>
+    </property>
+  </jsp-config>
+</glassfish-web-app>
diff --git a/test/agnostic/vdl/facelets/only_faces_config_in_jar/app/src/main/webapp/WEB-INF/web.xml b/test/agnostic/vdl/facelets/only_faces_config_in_jar/app/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..512c90c
--- /dev/null
+++ b/test/agnostic/vdl/facelets/only_faces_config_in_jar/app/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" 
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>${webapp.projectStage}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
+        <param-value>${webapp.partialStateSaving}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>${webapp.stateSavingMethod}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.FACELETS_REFRESH_PERIOD</param-name>
+        <param-value>3600</param-value>
+    </context-param>
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <welcome-file-list>
+        <welcome-file>faces/index.xhtml</welcome-file>
+    </welcome-file-list>
+
+</web-app>
diff --git a/test/agnostic/vdl/facelets/only_faces_config_in_jar/app/src/main/webapp/index.xhtml b/test/agnostic/vdl/facelets/only_faces_config_in_jar/app/src/main/webapp/index.xhtml
new file mode 100644
index 0000000..7d96e68
--- /dev/null
+++ b/test/agnostic/vdl/facelets/only_faces_config_in_jar/app/src/main/webapp/index.xhtml
@@ -0,0 +1,90 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+    <h:head>
+    </h:head>
+    <h:body>
+       <h3>These examples work off an array of 10 values: str0 str1 str2 str3 str4 str5 str6 str7 str8 str9</h3>
+       <h3>Example: UIRepeat With Literal Size Attribute: 5</h3>
+       <ui:repeat value="#{test.strList}" size="5" var="item">
+           l<h:outputText value="#{item}" />
+       </ui:repeat>
+
+       <br/>
+
+       <h3>Example: UIRepeat With ValueExpression Size Attribute: 5</h3>
+       <ui:repeat value="#{test.strList}" size="#{test.size}" var="item">
+           v<h:outputText value="#{item}" />
+       </ui:repeat>
+
+       <br/>
+
+       <h3>Example: UIRepeat With Size Attribute Set From ui:param Value Of 5</h3>
+       <ui:param name="size" value="5"/>
+       <ui:repeat value="#{test.strList}" size="#{size}" var="item">
+           p<h:outputText value="#{item}" />
+       </ui:repeat>
+
+       <br/>
+
+       <h3>Example: UIRepeat With Literal Size Attribute: 10</h3>
+       <ui:repeat value="#{test.strList}" size="10" var="item">
+           m<h:outputText value="#{item}" />
+       </ui:repeat>
+
+       <br/>
+
+       <h3>Example: UIRepeat With Literal Size Attribute: 5 And offset Attribute: 2</h3>
+       <ui:repeat value="#{test.strList}" size="5" offset="2" var="item">
+           o<h:outputText value="#{item}" />
+       </ui:repeat>
+       
+       
+       <p id="bean_in_jar">Bean in jar: #{bean_in_jar.name}</p>
+       
+       
+    </h:body>
+</html>
+
diff --git a/test/agnostic/vdl/facelets/only_faces_config_in_jar/app/src/test/java/com/sun/faces/test/agnostic/vdl/facelets/only_faces_config_in_jar/Issue2841IT.java b/test/agnostic/vdl/facelets/only_faces_config_in_jar/app/src/test/java/com/sun/faces/test/agnostic/vdl/facelets/only_faces_config_in_jar/Issue2841IT.java
new file mode 100644
index 0000000..833cc82
--- /dev/null
+++ b/test/agnostic/vdl/facelets/only_faces_config_in_jar/app/src/test/java/com/sun/faces/test/agnostic/vdl/facelets/only_faces_config_in_jar/Issue2841IT.java
@@ -0,0 +1,70 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDLGPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.vdl.facelets.only_faces_config_in_jar;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class Issue2841IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testId() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl);
+        assertTrue(page.asText().contains("lstr0 lstr1 lstr2 lstr3 lstr4"));
+    }
+}
diff --git a/test/agnostic/vdl/facelets/only_faces_config_in_jar/jar/pom.xml b/test/agnostic/vdl/facelets/only_faces_config_in_jar/jar/pom.xml
new file mode 100644
index 0000000..4af7721
--- /dev/null
+++ b/test/agnostic/vdl/facelets/only_faces_config_in_jar/jar/pom.xml
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" 
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.agnostic.vdl.facelets.only_faces_config_in_jar</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.agnostic.vdl.facelets.only_faces_config_in_jar</groupId>
+    <artifactId>only_faces_config_in_jar_jar</artifactId>
+    <packaging>jar</packaging>
+    <name>Mojarra ${project.version} - Test - Agnostic - VDL - facelets only_faces_config_in_jar, the actual jar</name>
+    <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/test/agnostic/vdl/facelets/only_faces_config_in_jar/jar/src/main/java/com/sun/faces/test/agnostic/vdl/facelets/only_faces_config_in_jar/Bean.java b/test/agnostic/vdl/facelets/only_faces_config_in_jar/jar/src/main/java/com/sun/faces/test/agnostic/vdl/facelets/only_faces_config_in_jar/Bean.java
new file mode 100644
index 0000000..bcd47da
--- /dev/null
+++ b/test/agnostic/vdl/facelets/only_faces_config_in_jar/jar/src/main/java/com/sun/faces/test/agnostic/vdl/facelets/only_faces_config_in_jar/Bean.java
@@ -0,0 +1,55 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.test.agnostic.vdl.facelets.only_faces_config_in_jar;
+
+public class Bean {
+    
+    private String name = "MyBeanName";
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+    
+}
diff --git a/test/agnostic/vdl/facelets/only_faces_config_in_jar/jar/src/main/resources/META-INF/faces-config.xml b/test/agnostic/vdl/facelets/only_faces_config_in_jar/jar/src/main/resources/META-INF/faces-config.xml
new file mode 100644
index 0000000..9e07adc
--- /dev/null
+++ b/test/agnostic/vdl/facelets/only_faces_config_in_jar/jar/src/main/resources/META-INF/faces-config.xml
@@ -0,0 +1,54 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<faces-config xmlns="http://java.sun.com/xml/ns/javaee" 
+              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+              xmlns:xi="http://www.w3.org/2001/XInclude" 
+              xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd" 
+              version="1.2">
+  <managed-bean>
+    <managed-bean-name>bean_in_jar</managed-bean-name>
+    <managed-bean-class>com.sun.faces.test.agnostic.vdl.facelets.only_faces_config_in_jar.Bean</managed-bean-class>
+    <managed-bean-scope>request</managed-bean-scope>
+  </managed-bean>
+</faces-config>
diff --git a/test/agnostic/vdl/facelets/only_faces_config_in_jar/pom.xml b/test/agnostic/vdl/facelets/only_faces_config_in_jar/pom.xml
new file mode 100644
index 0000000..8efae3a
--- /dev/null
+++ b/test/agnostic/vdl/facelets/only_faces_config_in_jar/pom.xml
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.agnostic.vdl.facelets</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.agnostic.vdl.facelets.only_faces_config_in_jar</groupId>
+    <artifactId>pom</artifactId>
+    <packaging>pom</packaging>
+    <name>Mojarra ${project.version} - Test - Agnostic - VDL - only_faces_config_in_jar</name>
+    <modules>
+        <module>app</module> 
+        <module>jar</module>
+    </modules>
+</project>
diff --git a/test/agnostic/vdl/facelets/pom.xml b/test/agnostic/vdl/facelets/pom.xml
new file mode 100644
index 0000000..554ac15
--- /dev/null
+++ b/test/agnostic/vdl/facelets/pom.xml
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.agnostic.vdl</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.agnostic.vdl.facelets</groupId>
+    <artifactId>pom</artifactId>
+    <packaging>pom</packaging>
+    <name>Mojarra ${project.version} - Test - Agnostic - VDL - Facelets</name>
+    <modules>
+        <module>contracts</module>
+        <module>only_faces_config_in_jar</module>
+    </modules>
+</project>
+
diff --git a/test/agnostic/vdl/pom.xml b/test/agnostic/vdl/pom.xml
new file mode 100644
index 0000000..83dfc31
--- /dev/null
+++ b/test/agnostic/vdl/pom.xml
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.agnostic</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.agnostic.vdl</groupId>
+    <artifactId>pom</artifactId>
+    <packaging>pom</packaging>
+    <name>Mojarra ${project.version} - Test - Agnostic - VDL</name>
+    <modules>
+        <module>facelets</module>
+    </modules>
+</project>
diff --git a/test/bin/test-glassfish-default.bat b/test/bin/test-glassfish-default.bat
new file mode 100644
index 0000000..cf45e3b
--- /dev/null
+++ b/test/bin/test-glassfish-default.bat
@@ -0,0 +1,2 @@
+call %~dp0\test-glassfish-specific.bat Production true server
+if not "%ERRORLEVEL%" == "0" exit /b
diff --git a/test/bin/test-glassfish-default.sh b/test/bin/test-glassfish-default.sh
new file mode 100755
index 0000000..edeac47
--- /dev/null
+++ b/test/bin/test-glassfish-default.sh
@@ -0,0 +1,47 @@
+#!/bin/bash
+
+#    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+#    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+#
+#    The contents of this file are subject to the terms of either the GNU
+#    General Public License Version 2 only ("GPL") or the Common Development
+#    and Distribution License("CDDL") (collectively, the "License").  You
+#    may not use this file except in compliance with the License.  You can
+#    obtain a copy of the License at
+#    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+#    or packager/legal/LICENSE.txt.  See the License for the specific
+#    language governing permissions and limitations under the License.
+#
+#    When distributing the software, include this License Header Notice in each
+#    file and include the License file at packager/legal/LICENSE.txt.
+#
+#    GPL Classpath Exception:
+#    Oracle designates this particular file as subject to the "Classpath"
+#    exception as provided by Oracle in the GPL Version 2 section of the License
+#    file that accompanied this code.
+#
+#    Modifications:
+#    If applicable, add the following below the License Header, with the fields
+#    enclosed by brackets [] replaced by your own identifying information:
+#    "Portions Copyright [year] [name of copyright owner]"
+#
+#    Contributor(s):
+#    If you wish your version of this file to be governed by only the CDDL or
+#    only the GPL Version 2, indicate your decision by adding "[Contributor]
+#    elects to include this software in this distribution under the [CDDL or GPL
+#    Version 2] license."  If you don't indicate a single choice of license, a
+#    recipient has the option to distribute your version of this file under
+#    either the CDDL, the GPL Version 2 or to extend the choice of license to
+#    its licensees as provided above.  However, if you add GPL Version 2 code
+#    and therefore, elected the GPL Version 2 license, then the option applies
+#    only if the new code is made subject to such option by the copyright
+#    holder.
+
+
+scriptdir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
+$scriptdir/test-glassfish-specific.sh Production true server
+echo $?
+if [ "$?" -ne "0" ]; then
+exit $? 
+fi
diff --git a/test/bin/test-glassfish-matrix.bat b/test/bin/test-glassfish-matrix.bat
new file mode 100644
index 0000000..e780a89
--- /dev/null
+++ b/test/bin/test-glassfish-matrix.bat
@@ -0,0 +1,23 @@
+call %~dp0\test-glassfish-specific.bat Development true server
+if not "%ERRORLEVEL%" == "0" exit /b
+
+call %~dp0\test-glassfish-specific.bat Development true client
+if not "%ERRORLEVEL%" == "0" exit /b
+
+call %~dp0\test-glassfish-specific.bat Development false server
+if not "%ERRORLEVEL%" == "0" exit /b
+
+call %~dp0\test-glassfish-specific.bat Development false client
+if not "%ERRORLEVEL%" == "0" exit /b
+
+call %~dp0\test-glassfish-specific.bat Production true server
+if not "%ERRORLEVEL%" == "0" exit /b
+
+call %~dp0\test-glassfish-specific.bat Production true client
+if not "%ERRORLEVEL%" == "0" exit /b
+
+call %~dp0\test-glassfish-specific.bat Production false server
+if not "%ERRORLEVEL%" == "0" exit /b
+
+call %~dp0\test-glassfish-specific.bat Production false client
+if not "%ERRORLEVEL%" == "0" exit /b
diff --git a/test/bin/test-glassfish-matrix.sh b/test/bin/test-glassfish-matrix.sh
new file mode 100755
index 0000000..a564fcb
--- /dev/null
+++ b/test/bin/test-glassfish-matrix.sh
@@ -0,0 +1,77 @@
+#!/bin/bash
+
+#    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+#    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+#
+#    The contents of this file are subject to the terms of either the GNU
+#    General Public License Version 2 only ("GPL") or the Common Development
+#    and Distribution License("CDDL") (collectively, the "License").  You
+#    may not use this file except in compliance with the License.  You can
+#    obtain a copy of the License at
+#    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+#    or packager/legal/LICENSE.txt.  See the License for the specific
+#    language governing permissions and limitations under the License.
+#
+#    When distributing the software, include this License Header Notice in each
+#    file and include the License file at packager/legal/LICENSE.txt.
+#
+#    GPL Classpath Exception:
+#    Oracle designates this particular file as subject to the "Classpath"
+#    exception as provided by Oracle in the GPL Version 2 section of the License
+#    file that accompanied this code.
+#
+#    Modifications:
+#    If applicable, add the following below the License Header, with the fields
+#    enclosed by brackets [] replaced by your own identifying information:
+#    "Portions Copyright [year] [name of copyright owner]"
+#
+#    Contributor(s):
+#    If you wish your version of this file to be governed by only the CDDL or
+#    only the GPL Version 2, indicate your decision by adding "[Contributor]
+#    elects to include this software in this distribution under the [CDDL or GPL
+#    Version 2] license."  If you don't indicate a single choice of license, a
+#    recipient has the option to distribute your version of this file under
+#    either the CDDL, the GPL Version 2 or to extend the choice of license to
+#    its licensees as provided above.  However, if you add GPL Version 2 code
+#    and therefore, elected the GPL Version 2 license, then the option applies
+#    only if the new code is made subject to such option by the copyright
+#    holder.
+
+scriptdir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
+
+$scriptdir/test-glassfish-specific.sh Development true server
+if [ "$?" -ne "0" ]; then
+exit $?
+fi
+
+$scriptdir/test-glassfish-specific.sh Development false server
+if [ "$?" -ne "0" ]; then
+exit $?
+fi
+
+$scriptdir/test-glassfish-specific.sh Development false client
+if [ "$?" -ne "0" ]; then
+exit $?
+fi
+
+$scriptdir/test-glassfish-specific.sh Production true server
+if [ "$?" -ne "0" ]; then
+exit $?
+fi
+
+$scriptdir/test-glassfish-specific.sh Production true client
+if [ "$?" -ne "0" ]; then
+exit $?
+fi
+
+$scriptdir/test-glassfish-specific.sh Production false server
+if [ "$?" -ne "0" ]; then
+exit $?
+fi
+
+$scriptdir/test-glassfish-specific.sh Production false client
+if [ "$?" -ne "0" ]; then
+exit $?
+fi
+
diff --git a/test/bin/test-glassfish-specific.bat b/test/bin/test-glassfish-specific.bat
new file mode 100644
index 0000000..190386c
--- /dev/null
+++ b/test/bin/test-glassfish-specific.bat
@@ -0,0 +1,29 @@
+ at echo *************************************************************************
+ at echo *
+ at echo *  Test for (%1, %2, %3) 
+ at echo *
+ at echo *************************************************************************
+
+call mvn -N -Pglassfish-prepare validate
+if not "%ERRORLEVEL%" == "0" exit /b
+
+call mvn -Dwebapp.projectStage=%1 -Dwebapp.partialStateSaving=%2 -Dwebapp.stateSavingMethod=%3 clean install
+if not "%ERRORLEVEL%" == "0" exit /b
+
+call mvn -N -Pglassfish-cargo -Dwebapp.projectStage=%1 -Dwebapp.partialStateSaving=%2 -Dwebapp.stateSavingMethod=%3 cargo:start
+if not "%ERRORLEVEL%" == "0" exit /b
+
+call mvn -Pglassfish-cargo -Dwebapp.projectStage=%1 -Dwebapp.partialStateSaving=%2 -Dwebapp.stateSavingMethod=%3 cargo:redeploy
+if not "%ERRORLEVEL%" == "0" (
+    call mvn -N -Pglassfish-cargo -Dwebapp.projectStage=%1 -Dwebapp.partialStateSaving=%2 -Dwebapp.stateSavingMethod=%3 cargo:stop 
+    exit /b
+)
+
+call mvn -Pintegration -Dwebapp.projectStage=%1 -Dwebapp.partialStateSaving=%2 -Dwebapp.stateSavingMethod=%3 verify 
+if not "%ERRORLEVEL%" == "0" (
+    call mvn -N -Pglassfish-cargo -Dwebapp.projectStage=%1 -Dwebapp.partialStateSaving=%2 -Dwebapp.stateSavingMethod=%3 cargo:stop 
+    exit /b
+)
+
+call mvn -N -Pglassfish-cargo -Dwebapp.projectStage=%1 -Dwebapp.partialStateSaving=%2 -Dwebapp.stateSavingMethod=%3 cargo:stop
+if not "%ERRORLEVEL%" == "0" exit /b
diff --git a/test/bin/test-glassfish-specific.sh b/test/bin/test-glassfish-specific.sh
new file mode 100755
index 0000000..2eda4cb
--- /dev/null
+++ b/test/bin/test-glassfish-specific.sh
@@ -0,0 +1,83 @@
+#!/bin/bash
+
+#    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+#    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+#
+#    The contents of this file are subject to the terms of either the GNU
+#    General Public License Version 2 only ("GPL") or the Common Development
+#    and Distribution License("CDDL") (collectively, the "License").  You
+#    may not use this file except in compliance with the License.  You can
+#    obtain a copy of the License at
+#    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+#    or packager/legal/LICENSE.txt.  See the License for the specific
+#    language governing permissions and limitations under the License.
+#
+#    When distributing the software, include this License Header Notice in each
+#    file and include the License file at packager/legal/LICENSE.txt.
+#
+#    GPL Classpath Exception:
+#    Oracle designates this particular file as subject to the "Classpath"
+#    exception as provided by Oracle in the GPL Version 2 section of the License
+#    file that accompanied this code.
+#
+#    Modifications:
+#    If applicable, add the following below the License Header, with the fields
+#    enclosed by brackets [] replaced by your own identifying information:
+#    "Portions Copyright [year] [name of copyright owner]"
+#
+#    Contributor(s):
+#    If you wish your version of this file to be governed by only the CDDL or
+#    only the GPL Version 2, indicate your decision by adding "[Contributor]
+#    elects to include this software in this distribution under the [CDDL or GPL
+#    Version 2] license."  If you don't indicate a single choice of license, a
+#    recipient has the option to distribute your version of this file under
+#    either the CDDL, the GPL Version 2 or to extend the choice of license to
+#    its licensees as provided above.  However, if you add GPL Version 2 code
+#    and therefore, elected the GPL Version 2 license, then the option applies
+#    only if the new code is made subject to such option by the copyright
+#    holder.
+
+echo *************************************************************************
+echo *
+echo *  Test for $1, $2, $3
+echo *
+echo *************************************************************************
+
+mvn -N -Pglassfish-patch validate
+
+if [ "$?" -ne "0" ]; then
+exit $?
+fi
+
+mvn -Dwebapp.projectStage=$1 -Dwebapp.partialStateSaving=$2 -Dwebapp.stateSavingMethod=$3 clean install
+
+if [ "$?" -ne "0" ]; then
+exit $?
+fi
+
+mvn -N -Pglassfish-cargo -Dwebapp.projectStage=$1 -Dwebapp.partialStateSaving=$2 -Dwebapp.stateSavingMethod=$3 cargo:start
+
+if [ "$?" -ne "0" ]; then
+exit $?
+fi
+
+mvn -Pglassfish-cargo -Dwebapp.projectStage=$1 -Dwebapp.partialStateSaving=$2 -Dwebapp.stateSavingMethod=$3 cargo:redeploy
+
+if [ "$?" -ne "0" ]; then
+    mvn -N -Pglassfish-cargo -Dwebapp.projectStage=$1 -Dwebapp.partialStateSaving=$2 -Dwebapp.stateSavingMethod=$3 cargo:stop;
+    exit $?
+fi
+
+mvn -Pintegration -Dwebapp.projectStage=$1 -Dwebapp.partialStateSaving=$2 -Dwebapp.stateSavingMethod=$3 verify
+
+if [ "$?" -ne "0" ]; then
+    mvn -N -Pglassfish-cargo -Dwebapp.projectStage=$1 -Dwebapp.partialStateSaving=$2 -Dwebapp.stateSavingMethod=$3 cargo:stop;
+    exit $?
+fi
+
+mvn -N -Pglassfish-cargo -Dwebapp.projectStage=$1 -Dwebapp.partialStateSaving=$2 -Dwebapp.stateSavingMethod=$3 cargo:stop
+
+if [ "$?" -ne "0" ]; then
+exit $?
+fi
diff --git a/test/bin/test-weblogic-default.sh b/test/bin/test-weblogic-default.sh
new file mode 100755
index 0000000..f49321c
--- /dev/null
+++ b/test/bin/test-weblogic-default.sh
@@ -0,0 +1,47 @@
+#!/bin/bash
+
+#    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+#    Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+#
+#    The contents of this file are subject to the terms of either the GNU
+#    General Public License Version 2 only ("GPL") or the Common Development
+#    and Distribution License("CDDL") (collectively, the "License").  You
+#    may not use this file except in compliance with the License.  You can
+#    obtain a copy of the License at
+#    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+#    or packager/legal/LICENSE.txt.  See the License for the specific
+#    language governing permissions and limitations under the License.
+#
+#    When distributing the software, include this License Header Notice in each
+#    file and include the License file at packager/legal/LICENSE.txt.
+#
+#    GPL Classpath Exception:
+#    Oracle designates this particular file as subject to the "Classpath"
+#    exception as provided by Oracle in the GPL Version 2 section of the License
+#    file that accompanied this code.
+#
+#    Modifications:
+#    If applicable, add the following below the License Header, with the fields
+#    enclosed by brackets [] replaced by your own identifying information:
+#    "Portions Copyright [year] [name of copyright owner]"
+#
+#    Contributor(s):
+#    If you wish your version of this file to be governed by only the CDDL or
+#    only the GPL Version 2, indicate your decision by adding "[Contributor]
+#    elects to include this software in this distribution under the [CDDL or GPL
+#    Version 2] license."  If you don't indicate a single choice of license, a
+#    recipient has the option to distribute your version of this file under
+#    either the CDDL, the GPL Version 2 or to extend the choice of license to
+#    its licensees as provided above.  However, if you add GPL Version 2 code
+#    and therefore, elected the GPL Version 2 license, then the option applies
+#    only if the new code is made subject to such option by the copyright
+#    holder.
+
+
+scriptdir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
+$scriptdir/test-weblogic-specific.sh Production true server
+echo $?
+if [ "$?" -ne "0" ]; then
+exit $? 
+fi
diff --git a/test/bin/test-weblogic-specific.sh b/test/bin/test-weblogic-specific.sh
new file mode 100755
index 0000000..067ec9d
--- /dev/null
+++ b/test/bin/test-weblogic-specific.sh
@@ -0,0 +1,90 @@
+#!/bin/bash
+
+#    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+#    Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+#
+#    The contents of this file are subject to the terms of either the GNU
+#    General Public License Version 2 only ("GPL") or the Common Development
+#    and Distribution License("CDDL") (collectively, the "License").  You
+#    may not use this file except in compliance with the License.  You can
+#    obtain a copy of the License at
+#    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+#    or packager/legal/LICENSE.txt.  See the License for the specific
+#    language governing permissions and limitations under the License.
+#
+#    When distributing the software, include this License Header Notice in each
+#    file and include the License file at packager/legal/LICENSE.txt.
+#
+#    GPL Classpath Exception:
+#    Oracle designates this particular file as subject to the "Classpath"
+#    exception as provided by Oracle in the GPL Version 2 section of the License
+#    file that accompanied this code.
+#
+#    Modifications:
+#    If applicable, add the following below the License Header, with the fields
+#    enclosed by brackets [] replaced by your own identifying information:
+#    "Portions Copyright [year] [name of copyright owner]"
+#
+#    Contributor(s):
+#    If you wish your version of this file to be governed by only the CDDL or
+#    only the GPL Version 2, indicate your decision by adding "[Contributor]
+#    elects to include this software in this distribution under the [CDDL or GPL
+#    Version 2] license."  If you don't indicate a single choice of license, a
+#    recipient has the option to distribute your version of this file under
+#    either the CDDL, the GPL Version 2 or to extend the choice of license to
+#    its licensees as provided above.  However, if you add GPL Version 2 code
+#    and therefore, elected the GPL Version 2 license, then the option applies
+#    only if the new code is made subject to such option by the copyright
+#    holder.
+
+echo *************************************************************************
+echo *
+echo *  Test for $1, $2, $3
+echo *
+echo *************************************************************************
+
+mvn -N -Pweblogic-patch clean install
+
+if [ "$?" -ne "0" ]; then
+    exit $?
+fi
+
+mvn -Dwebapp.projectStage=$1 -Dwebapp.partialStateSaving=$2 -Dwebapp.stateSavingMethod=$3 clean install
+
+if [ "$?" -ne "0" ]; then
+    exit $?
+fi
+
+mvn -N -Pweblogic-cargo -Dwebapp.projectStage=$1 -Dwebapp.partialStateSaving=$2 -Dwebapp.stateSavingMethod=$3 com.oracle.weblogic:wls-maven-plugin:start-server
+
+if [ "$?" -ne "0" ]; then
+    exit $?
+fi
+
+mvn -Pweblogic-cargo -Dwebapp.projectStage=$1 -Dwebapp.partialStateSaving=$2 -Dwebapp.stateSavingMethod=$3 pre-integration-test
+
+if [ "$?" -ne "0" ]; then
+    mvn -N -Pweblogic-cargo -Dwebapp.projectStage=$1 -Dwebapp.partialStateSaving=$2 -Dwebapp.stateSavingMethod=$3 com.oracle.weblogic:wls-maven-plugin:stop-server
+    exit $?
+fi
+
+mvn -U -Pintegration -Dintegration.serverPort=7001 verify
+
+if [ "$?" -ne "0" ]; then
+    mvn -N -Pweblogic-cargo -Dwebapp.projectStage=$1 -Dwebapp.partialStateSaving=$2 -Dwebapp.stateSavingMethod=$3 com.oracle.weblogic:wls-maven-plugin:stop-server
+    exit $?
+fi
+
+mvn -Pweblogic-cargo -Dwebapp.projectStage=$1 -Dwebapp.partialStateSaving=$2 -Dwebapp.stateSavingMethod=$3 post-integration-test
+
+if [ "$?" -ne "0" ]; then
+    mvn -N -Pweblogic-cargo -Dwebapp.projectStage=$1 -Dwebapp.partialStateSaving=$2 -Dwebapp.stateSavingMethod=$3 com.oracle.weblogic:wls-maven-plugin:stop-server
+    exit $?
+fi
+
+mvn -N -Pweblogic-cargo -Dwebapp.projectStage=$1 -Dwebapp.partialStateSaving=$2 -Dwebapp.stateSavingMethod=$3 com.oracle.weblogic:wls-maven-plugin:stop-server
+
+if [ "$?" -ne "0" ]; then
+    exit $?
+fi
diff --git a/test/cluster/javaee6web/flow/basic_faces_flow_call/nbactions.xml b/test/cluster/javaee6web/flow/basic_faces_flow_call/nbactions.xml
new file mode 100644
index 0000000..e2be2a1
--- /dev/null
+++ b/test/cluster/javaee6web/flow/basic_faces_flow_call/nbactions.xml
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--><actions>
+    <action>
+        <actionName>debug.test.single</actionName>
+        <goals>
+            <goal>test-compile</goal>
+            <goal>surefire:test</goal>
+        </goals>
+        <properties>
+            <test>${packageClassName}</test>
+            <forkMode>once</forkMode>
+            <maven.surefire.debug>-Xdebug -Xrunjdwp:transport=dt_socket,server=n,address=${jpda.address}</maven.surefire.debug>
+            <jpda.listen>true</jpda.listen>
+            <integration.url>http://localhost:18080/test-cluster-javaee6web-flow-basic_faces_flow_call/</integration.url>
+            <integration.url2>http://localhost:18080/test-cluster-javaee6web-flow-basic_faces_flow_call/</integration.url2>
+        </properties>
+    </action>
+    <action>
+        <actionName>test.single</actionName>
+        <goals>
+            <goal>test-compile</goal>
+            <goal>surefire:test</goal>
+        </goals>
+        <properties>
+            <integration.url>http://localhost:18080/test-webprofile-cluster-flow-basic_faces_flow_call/</integration.url>
+            <integration.url2>http://localhost:28080/test-webprofile-cluster-flow-basic_faces_flow_call/</integration.url2>
+            <test>${packageClassName}</test>
+        </properties>
+    </action>
+</actions>
diff --git a/test/cluster/javaee6web/flow/basic_faces_flow_call/pom.xml b/test/cluster/javaee6web/flow/basic_faces_flow_call/pom.xml
new file mode 100644
index 0000000..17ed4db
--- /dev/null
+++ b/test/cluster/javaee6web/flow/basic_faces_flow_call/pom.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.cluster.javaee6web.flow</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.cluster.javaee6web.flow</groupId>
+    <artifactId>basic_faces_flow_call</artifactId>
+    <packaging>war</packaging>
+    <name>Mojarra ${project.version} - Test - Cluster - JavaEE 6 Web - Flow - Basic flow-call test</name>
+    <build>
+        <finalName>test-cluster-javaee6web-flow-basic_faces_flow_call</finalName>
+    </build>
+    <properties>
+        <netbeans.hint.deploy.server>gfv3ee6</netbeans.hint.deploy.server>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/test/cluster/javaee6web/flow/basic_faces_flow_call/src/main/java/com/sun/faces/test/cluster/javaee6web/flow/basic_faces_flow_call/FlowA.java b/test/cluster/javaee6web/flow/basic_faces_flow_call/src/main/java/com/sun/faces/test/cluster/javaee6web/flow/basic_faces_flow_call/FlowA.java
new file mode 100644
index 0000000..bf1475c
--- /dev/null
+++ b/test/cluster/javaee6web/flow/basic_faces_flow_call/src/main/java/com/sun/faces/test/cluster/javaee6web/flow/basic_faces_flow_call/FlowA.java
@@ -0,0 +1,72 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.test.cluster.javaee6web.flow.basic_faces_flow_call;
+
+import java.io.Serializable;
+import javax.enterprise.inject.Produces;
+import javax.faces.flow.Flow;
+import javax.faces.flow.builder.FlowBuilder;
+import javax.faces.flow.builder.FlowDefinition;
+import javax.faces.flow.builder.FlowBuilderParameter;
+
+
+public class FlowA implements Serializable {
+    
+    private static final long serialVersionUID = -7623501087369765218L;
+
+    public FlowA() {
+    }
+    
+    @Produces @FlowDefinition
+    public Flow buildMyFlow(@FlowBuilderParameter FlowBuilder flowBuilder) {
+        String flowId = "flow-a";
+        flowBuilder.id("unique", flowId);
+        flowBuilder.returnNode("taskFlowReturn1").
+                fromOutcome("#{flow_a_Bean.returnValue}");
+        flowBuilder.inboundParameter("param1FromFlowB", "#{flowScope.param1Value}");
+        flowBuilder.inboundParameter("param2FromFlowB", "#{flowScope.param2Value}");
+        flowBuilder.flowCallNode("callB").flowReference("", "flow-b").
+                outboundParameter("param1FromFlowA", "param1Value").
+                outboundParameter("param2FromFlowA", "param2Value");
+        
+        return flowBuilder.getFlow();
+    }
+}
diff --git a/test/cluster/javaee6web/flow/basic_faces_flow_call/src/main/java/com/sun/faces/test/cluster/javaee6web/flow/basic_faces_flow_call/FlowC.java b/test/cluster/javaee6web/flow/basic_faces_flow_call/src/main/java/com/sun/faces/test/cluster/javaee6web/flow/basic_faces_flow_call/FlowC.java
new file mode 100644
index 0000000..f0d5efb
--- /dev/null
+++ b/test/cluster/javaee6web/flow/basic_faces_flow_call/src/main/java/com/sun/faces/test/cluster/javaee6web/flow/basic_faces_flow_call/FlowC.java
@@ -0,0 +1,68 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.test.cluster.javaee6web.flow.basic_faces_flow_call;
+
+import java.io.Serializable;
+import javax.enterprise.inject.Produces;
+import javax.faces.flow.Flow;
+import javax.faces.flow.builder.FlowBuilder;
+import javax.faces.flow.builder.FlowDefinition;
+import javax.faces.flow.builder.FlowBuilderParameter;
+
+
+public class FlowC implements Serializable {
+
+    private static final long serialVersionUID = -758160342621469893L;
+    
+    public FlowC() {
+    }
+    
+    @Produces @FlowDefinition
+    public Flow buildMyFlow(@FlowBuilderParameter FlowBuilder flowBuilder) {
+        String flowId = "flow-c";
+        flowBuilder.id("", flowId);
+        flowBuilder.returnNode("taskFlowReturn1").
+                fromOutcome("#{flow_c_Bean.returnValue}");
+        flowBuilder.flowCallNode("callA").flowReference("unique", "flow-a");
+        
+        return flowBuilder.getFlow();
+    }
+}
diff --git a/test/cluster/javaee6web/flow/basic_faces_flow_call/src/main/java/com/sun/faces/test/cluster/javaee6web/flow/basic_faces_flow_call/Flow_a_Bean.java b/test/cluster/javaee6web/flow/basic_faces_flow_call/src/main/java/com/sun/faces/test/cluster/javaee6web/flow/basic_faces_flow_call/Flow_a_Bean.java
new file mode 100644
index 0000000..e63d0fe
--- /dev/null
+++ b/test/cluster/javaee6web/flow/basic_faces_flow_call/src/main/java/com/sun/faces/test/cluster/javaee6web/flow/basic_faces_flow_call/Flow_a_Bean.java
@@ -0,0 +1,58 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.cluster.javaee6web.flow.basic_faces_flow_call;
+
+import javax.faces.flow.FlowScoped;
+import java.io.Serializable;
+
+import javax.inject.Named;
+
+ at Named
+ at FlowScoped(definingDocumentId="unique", value="flow-a")
+public class Flow_a_Bean implements Serializable {
+
+   public String getName() {
+       return "Flow_a_Bean";
+   }
+   
+   public String getReturnValue() {
+       return "/return1";
+   }
+}
diff --git a/test/cluster/javaee6web/flow/basic_faces_flow_call/src/main/java/com/sun/faces/test/cluster/javaee6web/flow/basic_faces_flow_call/Flow_b_Bean.java b/test/cluster/javaee6web/flow/basic_faces_flow_call/src/main/java/com/sun/faces/test/cluster/javaee6web/flow/basic_faces_flow_call/Flow_b_Bean.java
new file mode 100644
index 0000000..e69ccca
--- /dev/null
+++ b/test/cluster/javaee6web/flow/basic_faces_flow_call/src/main/java/com/sun/faces/test/cluster/javaee6web/flow/basic_faces_flow_call/Flow_b_Bean.java
@@ -0,0 +1,58 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.cluster.javaee6web.flow.basic_faces_flow_call;
+
+import javax.faces.flow.FlowScoped;
+import java.io.Serializable;
+
+import javax.inject.Named;
+
+ at Named
+ at FlowScoped("flow-b")
+public class Flow_b_Bean implements Serializable {
+
+   public String getName() {
+       return "Flow_B_Bean";
+   }
+   
+   public String getReturnValue() {
+       return "/return1";
+   }
+}
diff --git a/test/cluster/javaee6web/flow/basic_faces_flow_call/src/main/java/com/sun/faces/test/cluster/javaee6web/flow/basic_faces_flow_call/Flow_c_Bean.java b/test/cluster/javaee6web/flow/basic_faces_flow_call/src/main/java/com/sun/faces/test/cluster/javaee6web/flow/basic_faces_flow_call/Flow_c_Bean.java
new file mode 100644
index 0000000..dd5343d
--- /dev/null
+++ b/test/cluster/javaee6web/flow/basic_faces_flow_call/src/main/java/com/sun/faces/test/cluster/javaee6web/flow/basic_faces_flow_call/Flow_c_Bean.java
@@ -0,0 +1,58 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.cluster.javaee6web.flow.basic_faces_flow_call;
+
+import javax.faces.flow.FlowScoped;
+import java.io.Serializable;
+
+import javax.inject.Named;
+
+ at Named
+ at FlowScoped("flow-c")
+public class Flow_c_Bean implements Serializable {
+
+   public String getName() {
+       return "Flow_C_Bean";
+   }
+   
+   public String getReturnValue() {
+       return "/return1";
+   }
+}
diff --git a/test/cluster/javaee6web/flow/basic_faces_flow_call/src/main/webapp/WEB-INF/beans.xml b/test/cluster/javaee6web/flow/basic_faces_flow_call/src/main/webapp/WEB-INF/beans.xml
new file mode 100644
index 0000000..c782f57
--- /dev/null
+++ b/test/cluster/javaee6web/flow/basic_faces_flow_call/src/main/webapp/WEB-INF/beans.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- This file can be an empty text file (0 bytes) -->
+<!-- We're declaring the schema to save you time if you do have to configure 
+   this in the future -->
+<beans xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+   xsi:schemaLocation="
+        http://java.sun.com/xml/ns/javaee 
+        http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
+</beans>
diff --git a/test/cluster/javaee6web/flow/basic_faces_flow_call/src/main/webapp/WEB-INF/glassfish-web.xml b/test/cluster/javaee6web/flow/basic_faces_flow_call/src/main/webapp/WEB-INF/glassfish-web.xml
new file mode 100644
index 0000000..9065bfb
--- /dev/null
+++ b/test/cluster/javaee6web/flow/basic_faces_flow_call/src/main/webapp/WEB-INF/glassfish-web.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE glassfish-web-app PUBLIC 
+    "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" 
+    "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
+
+<glassfish-web-app error-url="">
+    <context-root>/test-cluster-javaee6web-flow-basic_faces_flow_call</context-root>
+    <class-loader delegate="true"/>
+    <jsp-config>
+        <property name="keepgenerated" value="true">
+            <description>Keep a copy of the generated servlet class' java code.</description>
+        </property>
+    </jsp-config>
+    
+  <session-config>
+    <session-manager persistence-type="replicated">
+      <manager-properties>
+    <property name="relaxCacheVersionSemantics" value="true"/>
+      </manager-properties>
+    </session-manager>
+  </session-config>
+  
+</glassfish-web-app>
diff --git a/test/cluster/javaee6web/flow/basic_faces_flow_call/src/main/webapp/WEB-INF/web.xml b/test/cluster/javaee6web/flow/basic_faces_flow_call/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..ec21db0
--- /dev/null
+++ b/test/cluster/javaee6web/flow/basic_faces_flow_call/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>${webapp.projectStage}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
+        <param-value>${webapp.partialStateSaving}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>${webapp.stateSavingMethod}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>com.sun.faces.enableAgressiveSessionDirtying</param-name>
+        <param-value>true</param-value>
+    </context-param>
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <welcome-file-list>
+        <welcome-file>faces/index.xhtml</welcome-file>
+    </welcome-file-list>
+    <distributable/>
+    
+    <env-entry>
+        <env-entry-name>jsf/ClientSideSecretKey</env-entry-name>
+        <env-entry-type>java.lang.String</env-entry-type>
+        <!-- http://www.digitalsanctuary.com/aes-key-generator.php -->
+        <env-entry-value>vxI50oNETIH5iSsUPFBvzP0913W8fy8lwZ/LT6caXyI= </env-entry-value>
+    </env-entry>
+    
+    
+</web-app>
diff --git a/test/cluster/javaee6web/flow/basic_faces_flow_call/src/main/webapp/WEB-INF/weblogic.xml b/test/cluster/javaee6web/flow/basic_faces_flow_call/src/main/webapp/WEB-INF/weblogic.xml
new file mode 100644
index 0000000..3290939
--- /dev/null
+++ b/test/cluster/javaee6web/flow/basic_faces_flow_call/src/main/webapp/WEB-INF/weblogic.xml
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+The contents of this file are subject to the terms of either the GNU
+General Public License Version 2 only ("GPL") or the Common Development
+and Distribution License("CDDL") (collectively, the "License").  You
+may not use this file except in compliance with the License.  You can
+obtain a copy of the License at
+https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+or packager/legal/LICENSE.txt.  See the License for the specific
+language governing permissions and limitations under the License.
+
+When distributing the software, include this License Header Notice in each
+file and include the License file at packager/legal/LICENSE.txt.
+
+GPL Classpath Exception:
+Oracle designates this particular file as subject to the "Classpath"
+exception as provided by Oracle in the GPL Version 2 section of the License
+file that accompanied this code.
+
+Modifications:
+If applicable, add the following below the License Header, with the fields
+enclosed by brackets [] replaced by your own identifying information:
+"Portions Copyright [year] [name of copyright owner]"
+
+Contributor(s):
+If you wish your version of this file to be governed by only the CDDL or
+only the GPL Version 2, indicate your decision by adding "[Contributor]
+elects to include this software in this distribution under the [CDDL or GPL
+Version 2] license."  If you don't indicate a single choice of license, a
+recipient has the option to distribute your version of this file under
+either the CDDL, the GPL Version 2 or to extend the choice of license to
+its licensees as provided above.  However, if you add GPL Version 2 code
+and therefore, elected the GPL Version 2 license, then the option applies
+only if the new code is made subject to such option by the copyright
+holder.
+
+-->
+
+
+<weblogic-web-app xmlns="http://www.bea.com/ns/weblogic/90"
+      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+      xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd http://www.bea.com/ns/weblogic/90 http://www.bea.com/ns/weblogic/90/weblogic-web-app.xsd">
+    <session-descriptor>
+        <sharing-enabled>true</sharing-enabled>
+        <debug-enabled>true</debug-enabled>
+        <persistent-store-type>replicated</persistent-store-type>   
+        <tracking-enabled>true</tracking-enabled>
+    </session-descriptor>
+
+</weblogic-web-app>
diff --git a/test/cluster/javaee6web/flow/basic_faces_flow_call/src/main/webapp/flow-a/flow-a.xhtml b/test/cluster/javaee6web/flow/basic_faces_flow_call/src/main/webapp/flow-a/flow-a.xhtml
new file mode 100644
index 0000000..c468641
--- /dev/null
+++ b/test/cluster/javaee6web/flow/basic_faces_flow_call/src/main/webapp/flow-a/flow-a.xhtml
@@ -0,0 +1,67 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    
+    <head>
+        <title>First page in the flow</title>
+    </head>
+    <body bgcolor="red">
+    <h:form prependId="false">
+        <p>First page in the flow</p>
+        <p>Flow bean name: #{flow_a_Bean.name}</p>
+
+        <p><span id="param1FromFlowB">#{flowScope.param1Value}</span></p>
+        <p><span id="param2FromFlowB">#{flowScope.param2Value}</span></p>
+
+        <p>Has a flow: #{null != facesContext.application.flowHandler.currentFlow}.</p>
+        
+        <p><h:commandButton id="next_a" value="next" action="next_a" /></p>
+        
+    </h:form>
+    </body>
+</html>
diff --git a/test/cluster/javaee6web/flow/basic_faces_flow_call/src/main/webapp/flow-a/next_a.xhtml b/test/cluster/javaee6web/flow/basic_faces_flow_call/src/main/webapp/flow-a/next_a.xhtml
new file mode 100644
index 0000000..912e548
--- /dev/null
+++ b/test/cluster/javaee6web/flow/basic_faces_flow_call/src/main/webapp/flow-a/next_a.xhtml
@@ -0,0 +1,65 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    
+    <head>
+        <title>Second page in the flow</title>
+    </head>
+    <body bgcolor="red">
+    <h:form prependId="false">
+        <p>Second page in the flow</p>
+        <p>Flow bean name: #{flow_a_Bean.name}</p>
+        
+        <p>value: <h:inputText id="input" value="#{flowScope.value}" /></p>
+        
+        <p><h:commandButton id="start" value="back" action="flow-a" /></p>
+        <p><h:commandButton id="next" value="next" action="next_b" /></p>
+        
+    </h:form>
+    </body>
+</html>
diff --git a/test/cluster/javaee6web/flow/basic_faces_flow_call/src/main/webapp/flow-a/next_b.xhtml b/test/cluster/javaee6web/flow/basic_faces_flow_call/src/main/webapp/flow-a/next_b.xhtml
new file mode 100644
index 0000000..3da2881
--- /dev/null
+++ b/test/cluster/javaee6web/flow/basic_faces_flow_call/src/main/webapp/flow-a/next_b.xhtml
@@ -0,0 +1,98 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    
+    <head>
+        <title>Last page in the flow</title>
+        <script type="text/javascript">
+            
+            var switchPort = function switchPort() {
+                var formAction = document['myForm'].action;
+                if (-1 != formAction.indexOf("18080")) {
+                    document['myForm'].action = formAction.replace("18080", "28080");
+                } else if (-1 != formAction.indexOf("28080")) {
+                    document['myForm'].action = formAction.replace("28080", "18080");
+                } else if (formAction.charAt(0) == '/') {
+                    var loc = window.location;
+                    var otherPort = (loc.port == 18080) ? 28080 : 18080;
+                    var newActionUrl = loc.protocol + "//" + loc.hostname + ":" + otherPort + formAction;
+                    document['myForm'].action = newActionUrl;
+                } else {
+                    throw new Error("This test assumes the port is either 18080 or 28080. formAction: " + formAction);
+                }
+                var actionUrlMessageDiv = document.getElementById("actionUrlMessage");
+                actionUrlMessageDiv.innerHTML = "<p>new actionUrl is " + document['myForm'].action + ". </p>";
+            }
+            
+            
+        </script>
+        
+        
+    </head>
+    <body bgcolor="red">
+
+        <div id="actionUrlMessage"></div>
+
+        <p>Last page in the flow</p>
+        <p>Flow bean name: #{flow_a_Bean.name}</p>
+        
+        <p>value: #{flowScope.value}</p>
+        
+    <h:form id="myForm" prependId="false">
+        <p><h:commandButton id="back" value="back" action="next_a" /></p>
+        <p><h:commandButton id="return" value="return" action="taskFlowReturn1" /></p>
+        <p><h:button id="return_GET" value="return via GET" outcome="taskFlowReturn1" /></p>
+        <p><h:commandButton id="callB" value="callB" action="callB" /></p>
+        <p><h:button id="callB_GET" value="callB via GET" outcome="callB" /></p>
+        
+    </h:form>
+    
+    <p><button id="switchPort" type="button" onclick="switchPort(); return false;">switchPort</button></p>
+        
+    </body>
+</html>
diff --git a/test/cluster/javaee6web/flow/basic_faces_flow_call/src/main/webapp/flow-b/flow-b-flow.xml b/test/cluster/javaee6web/flow/basic_faces_flow_call/src/main/webapp/flow-b/flow-b-flow.xml
new file mode 100644
index 0000000..6491dd6
--- /dev/null
+++ b/test/cluster/javaee6web/flow/basic_faces_flow_call/src/main/webapp/flow-b/flow-b-flow.xml
@@ -0,0 +1,83 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<faces-config version="2.2" xmlns="http://xmlns.jcp.org/xml/ns/javaee"
+   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+   xsi:schemaLocation="
+        http://xmlns.jcp.org/xml/ns/javaee
+        http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd">
+
+    <flow-definition id="flow-b">
+        
+            <flow-return id="taskFlowReturn1">
+                <from-outcome>#{flow_b_Bean.returnValue}</from-outcome>
+            </flow-return>
+
+            <inbound-parameter>
+                <name>param1FromFlowA</name>
+                <value>#{flowScope.param1Value}</value>
+            </inbound-parameter>
+            <inbound-parameter>
+                <name>param2FromFlowA</name>
+                <value>#{flowScope.param2Value}</value>
+            </inbound-parameter>
+            
+            <flow-call id="callA">
+                <flow-reference>
+                    <flow-document-id>unique</flow-document-id>
+                    <flow-id>flow-a</flow-id>
+                </flow-reference>
+                <outbound-parameter>
+                    <name>param1FromFlowB</name>
+                    <value>param1Value</value>
+                </outbound-parameter>
+                <outbound-parameter>
+                    <name>param2FromFlowB</name>
+                    <value>param2Value</value>
+                </outbound-parameter>
+            </flow-call>
+                        
+        </flow-definition>
+
+</faces-config>
+
diff --git a/test/cluster/javaee6web/flow/basic_faces_flow_call/src/main/webapp/flow-b/flow-b.xhtml b/test/cluster/javaee6web/flow/basic_faces_flow_call/src/main/webapp/flow-b/flow-b.xhtml
new file mode 100644
index 0000000..10eecb9
--- /dev/null
+++ b/test/cluster/javaee6web/flow/basic_faces_flow_call/src/main/webapp/flow-b/flow-b.xhtml
@@ -0,0 +1,67 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    
+    <head>
+        <title>First page in the flow</title>
+    </head>
+    <body bgcolor="blue">
+    <h:form prependId="false">
+        <p>First page in the flow</p>
+        <p>Flow bean name: #{flow_b_Bean.name}</p>
+        
+        <p><span id="param1FromFlowA">#{flowScope.param1Value}</span></p>
+        <p><span id="param2FromFlowA">#{flowScope.param2Value}</span></p>
+        
+        <p><h:commandButton id="index" value="home" action="/index" /></p>
+        <p><h:commandButton id="next_a" value="next" action="next_a" /></p>
+        <p><h:commandButton id="nonFlow" value="nonFlow" action="/nonFlow" /></p>
+        
+    </h:form>
+    </body>
+</html>
diff --git a/test/cluster/javaee6web/flow/basic_faces_flow_call/src/main/webapp/flow-b/next_a.xhtml b/test/cluster/javaee6web/flow/basic_faces_flow_call/src/main/webapp/flow-b/next_a.xhtml
new file mode 100644
index 0000000..7b19ed9
--- /dev/null
+++ b/test/cluster/javaee6web/flow/basic_faces_flow_call/src/main/webapp/flow-b/next_a.xhtml
@@ -0,0 +1,65 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    
+    <head>
+        <title>Second page in the flow</title>
+    </head>
+    <body bgcolor="blue">
+    <h:form prependId="false">
+        <p>Second page in the flow</p>
+        <p>Flow bean name: #{flow_b_Bean.name}</p>
+        
+        <p>value: <h:inputText id="input" value="#{flowScope.value}" /></p>
+        
+        <p><h:commandButton id="start" value="back" action="flow-a" /></p>
+        <p><h:commandButton id="next" value="next" action="next_b" /></p>
+        
+    </h:form>
+    </body>
+</html>
diff --git a/test/cluster/javaee6web/flow/basic_faces_flow_call/src/main/webapp/flow-b/next_b.xhtml b/test/cluster/javaee6web/flow/basic_faces_flow_call/src/main/webapp/flow-b/next_b.xhtml
new file mode 100644
index 0000000..7ad25fb
--- /dev/null
+++ b/test/cluster/javaee6web/flow/basic_faces_flow_call/src/main/webapp/flow-b/next_b.xhtml
@@ -0,0 +1,72 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    
+    <head>
+        <title>Last page in the flow</title>
+    </head>
+    <body bgcolor="blue">
+        
+        <p>Last page in the flow</p>
+        <p>Flow bean name: #{flow_b_Bean.name}</p>
+        
+        <p>value: #{flowScope.value}</p>
+        
+    <h:form prependId="false">
+        <p><h:commandButton id="back" value="back" action="next_a" /></p>
+        <p><h:commandButton id="return" value="return" action="taskFlowReturn1" /></p>
+        <p><h:button id="return_GET" value="return via GET" outcome="taskFlowReturn1" /></p>
+        <p><h:commandButton id="callA" value="callA" action="callA" /></p>
+        <p><h:button id="callA_GET" value="callA via GET" outcome="callA">
+              <f:attribute name="to-flow-document-id" value="unique"/>
+        </h:button></p>
+        
+        
+    </h:form>
+    </body>
+</html>
diff --git a/test/cluster/javaee6web/flow/basic_faces_flow_call/src/main/webapp/flow-c/flow-c.xhtml b/test/cluster/javaee6web/flow/basic_faces_flow_call/src/main/webapp/flow-c/flow-c.xhtml
new file mode 100644
index 0000000..e530fa0
--- /dev/null
+++ b/test/cluster/javaee6web/flow/basic_faces_flow_call/src/main/webapp/flow-c/flow-c.xhtml
@@ -0,0 +1,64 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    
+    <head>
+        <title>First page in the flow</title>
+    </head>
+    <body bgcolor="green">
+    <h:form prependId="false">
+        <p>First page in the flow</p>
+        <p>Flow bean name: #{flow_c_Bean.name}</p>
+        
+        <p><h:commandButton id="index" value="home" action="/index" /></p>
+        <p><h:commandButton id="next_a" value="next" action="next_a" /></p>
+        <p><h:commandButton id="nonFlow" value="nonFlow" action="/nonFlow" /></p>
+        
+    </h:form>
+    </body>
+</html>
diff --git a/test/cluster/javaee6web/flow/basic_faces_flow_call/src/main/webapp/flow-c/next_a.xhtml b/test/cluster/javaee6web/flow/basic_faces_flow_call/src/main/webapp/flow-c/next_a.xhtml
new file mode 100644
index 0000000..c631826
--- /dev/null
+++ b/test/cluster/javaee6web/flow/basic_faces_flow_call/src/main/webapp/flow-c/next_a.xhtml
@@ -0,0 +1,65 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    
+    <head>
+        <title>Second page in the flow</title>
+    </head>
+    <body bgcolor="green">
+    <h:form prependId="false">
+        <p>Second page in the flow</p>
+        <p>Flow bean name: #{flow_c_Bean.name}</p>
+        
+        <p>value: <h:inputText id="input" value="#{flowScope.value}" /></p>
+        
+        <p><h:commandButton id="start" value="back" action="flow-a" /></p>
+        <p><h:commandButton id="next" value="next" action="next_b" /></p>
+        
+    </h:form>
+    </body>
+</html>
diff --git a/test/cluster/javaee6web/flow/basic_faces_flow_call/src/main/webapp/flow-c/next_b.xhtml b/test/cluster/javaee6web/flow/basic_faces_flow_call/src/main/webapp/flow-c/next_b.xhtml
new file mode 100644
index 0000000..5344c90
--- /dev/null
+++ b/test/cluster/javaee6web/flow/basic_faces_flow_call/src/main/webapp/flow-c/next_b.xhtml
@@ -0,0 +1,72 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    
+    <head>
+        <title>Last page in the flow</title>
+    </head>
+    <body bgcolor="green">
+        
+        <p>Last page in the flow</p>
+        <p>Flow bean name: #{flow_c_Bean.name}</p>
+        
+        <p>value: #{flowScope.value}</p>
+        
+    <h:form prependId="false">
+        <p><h:commandButton id="back" value="back" action="next_a" /></p>
+        <p><h:commandButton id="return" value="return" action="taskFlowReturn1" /></p>
+        <p><h:button id="return_GET" value="return via GET" outcome="taskFlowReturn1" /></p>
+        <p><h:commandButton id="callA" value="callA" action="callA" /></p>
+        <p><h:button id="callA_GET" value="callA via GET" outcome="callA">
+              <f:attribute name="to-flow-document-id" value="unique"/>
+        </h:button></p>
+        
+        
+    </h:form>
+    </body>
+</html>
diff --git a/test/cluster/javaee6web/flow/basic_faces_flow_call/src/main/webapp/index.xhtml b/test/cluster/javaee6web/flow/basic_faces_flow_call/src/main/webapp/index.xhtml
new file mode 100644
index 0000000..60fe21c
--- /dev/null
+++ b/test/cluster/javaee6web/flow/basic_faces_flow_call/src/main/webapp/index.xhtml
@@ -0,0 +1,73 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core">
+    <head>
+        <title>Outside of flow</title>
+    </head>
+    <body>
+        <h1>Outside of flow</h1>
+        
+    <h:form prependId="false">
+        <p><h:commandButton id="start_a" value="enter flow-a" 
+                            action="flow-a">
+              <f:attribute name="to-flow-document-id" value="unique"/>
+            </h:commandButton></p>
+        <p><h:button id="start_a_GET" value="enter flow-a via GET" outcome="flow-a">
+              <f:attribute name="to-flow-document-id" value="unique"/>
+            </h:button></p>
+        <p><h:commandButton id="start_b" value="enter flow-b" 
+                            action="flow-b" /></p>
+        <p><h:button id="start_b_GET" value="enter flow-b via GET" outcome="flow-b" /></p>
+        <p><h:commandButton id="start_c" value="enter flow-c" 
+                            action="flow-c">
+            </h:commandButton></p>
+        <p><h:button id="start_c_GET" value="enter flow-c via GET" outcome="flow-c">
+            </h:button></p>
+        <p><h:commandButton id="stay" value="stay" /></p>
+    </h:form>
+</body>
+</html>
diff --git a/test/cluster/javaee6web/flow/basic_faces_flow_call/src/main/webapp/nonFlow.xhtml b/test/cluster/javaee6web/flow/basic_faces_flow_call/src/main/webapp/nonFlow.xhtml
new file mode 100644
index 0000000..b5d740b
--- /dev/null
+++ b/test/cluster/javaee6web/flow/basic_faces_flow_call/src/main/webapp/nonFlow.xhtml
@@ -0,0 +1,61 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <head>
+        <title>Try to access a flow bean from outside of a flow</title>
+    </head>
+    <body>
+    <h:form prependId="false">
+        <p>Try to access a flow bean from outside of a flow</p>
+        <p>Flow bean name: #{flowBean.name}</p>
+        
+        <p><h:commandButton id="index" value="home" action="index" /></p>
+        <p><h:commandButton id="nonFlow" value="nonFlow" action="nonFlow" /></p>
+        
+    </h:form>
+    </body>
+</html>
diff --git a/test/cluster/javaee6web/flow/basic_faces_flow_call/src/main/webapp/return1.xhtml b/test/cluster/javaee6web/flow/basic_faces_flow_call/src/main/webapp/return1.xhtml
new file mode 100644
index 0000000..73a0b25
--- /dev/null
+++ b/test/cluster/javaee6web/flow/basic_faces_flow_call/src/main/webapp/return1.xhtml
@@ -0,0 +1,63 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <head>
+        <title>Page navigated to upon return from any flow</title>
+    </head>
+    <body>
+        <h1>Page navigated to upon return from any flow</h1>
+        
+    <h:form prependId="false">
+        <p>return page</p>
+        
+        <p>Has a flow: #{null != facesContext.application.flowHandler.currentFlow}.</p>
+        
+        <p>flowScope value, should be empty: #{flowScope.value}.</p>
+                
+    </h:form>
+</body>
+</html>
diff --git a/test/cluster/javaee6web/flow/basic_faces_flow_call/src/test/java/com/sun/faces/test/cluster/javaee6web/flow/basic_faces_flow_call/FlowACallsFlowBIT.java b/test/cluster/javaee6web/flow/basic_faces_flow_call/src/test/java/com/sun/faces/test/cluster/javaee6web/flow/basic_faces_flow_call/FlowACallsFlowBIT.java
new file mode 100644
index 0000000..5db57d0
--- /dev/null
+++ b/test/cluster/javaee6web/flow/basic_faces_flow_call/src/test/java/com/sun/faces/test/cluster/javaee6web/flow/basic_faces_flow_call/FlowACallsFlowBIT.java
@@ -0,0 +1,226 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.cluster.javaee6web.flow.basic_faces_flow_call;
+
+import com.gargoylesoftware.htmlunit.html.HtmlButton;
+import com.gargoylesoftware.htmlunit.html.HtmlElement;
+import com.gargoylesoftware.htmlunit.html.HtmlInput;
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.junit.Ignore;
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
+import com.sun.faces.test.util.ClusterUtils;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.assertEquals;
+
+public class FlowACallsFlowBIT {
+    /**
+     * Stores the web URL.
+     */
+    private String webUrl;
+    /**
+     * Stores the web client.
+     */
+    private WebClient webClient;
+
+    /**
+     * Setup before testing.
+     * 
+     * @throws Exception when a serious error occurs.
+     */
+    @BeforeClass
+    public static void setUpClass() throws Exception {
+    }
+
+    /**
+     * Cleanup after testing.
+     * 
+     * @throws Exception when a serious error occurs.
+     */
+    @AfterClass
+    public static void tearDownClass() throws Exception {
+    }
+
+    /**
+     * Setup before testing.
+     */
+    @Before
+    public void setUp() {
+        webUrl = ClusterUtils.getRandomizedBaseUrls()[0];
+        webClient = new WebClient();
+    }
+
+    /**
+     * Tear down after testing.
+     */
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testFacesFlowCallPostback() throws Exception {
+        doTestFacesFlowCall("");
+    }
+
+    @Test
+    public void testFacesFlowCallGet() throws Exception {
+        doTestFacesFlowCall("_GET");
+    }
+
+    public void doTestFacesFlowCall(String flowInvocationSuffix) throws Exception {
+        HtmlPage page = webClient.getPage(webUrl);
+
+        assertTrue(page.getBody().asText().indexOf("Outside of flow") != -1);
+        
+        HtmlInput button = (HtmlInput) page.getElementById("start_a" + flowInvocationSuffix);
+        page = button.click();
+        String pageText = page.asText();
+        assertTrue(pageText.contains("Flow_a_Bean"));
+        assertTrue(pageText.matches("(?s).*Has a flow:\\s+true\\..*"));
+        
+        String param1Value = page.getElementById("param1FromFlowB").getTextContent();
+        assertEquals("", param1Value);
+        String param2Value = page.getElementById("param2FromFlowB").getTextContent();
+        assertEquals("", param2Value);
+        
+        
+        button = (HtmlInput) page.getElementById("next_a");
+        page = button.click();
+        pageText = page.asText();
+        assertTrue(pageText.contains("Second page in the flow"));
+        
+        HtmlTextInput input = (HtmlTextInput) page.getElementById("input");
+        String value = "" + System.currentTimeMillis();
+        input.setValueAttribute(value);
+        
+        button = (HtmlInput) page.getElementById("next");
+        page = button.click();
+        
+        pageText = page.asText();
+        assertTrue(pageText.contains(value));
+        
+        HtmlButton switchPort = (HtmlButton) page.getElementById("switchPort");
+        page = switchPort.click();
+        
+        Thread.sleep(10000);
+        
+        button = (HtmlInput) page.getElementById("callB" + flowInvocationSuffix);
+        page = button.click();
+        
+        pageText = page.asText();
+        assertTrue(pageText.contains("Flow_B_Bean"));
+        assertTrue(!pageText.contains("Flow_A_Bean"));
+        
+        param1Value = page.getElementById("param1FromFlowA").getTextContent();
+        assertEquals("param1Value", param1Value);
+        param2Value = page.getElementById("param2FromFlowA").getTextContent();
+        assertEquals("param2Value", param2Value);
+        
+        
+        button = (HtmlInput) page.getElementById("next_a");
+        page = button.click();
+        pageText = page.asText();
+        assertTrue(pageText.contains("Second page in the flow"));
+        
+        input = (HtmlTextInput) page.getElementById("input");
+        value = "" + System.currentTimeMillis();
+        input.setValueAttribute(value);
+        
+        button = (HtmlInput) page.getElementById("next");
+        page = button.click();
+        
+        pageText = page.asText();
+        assertTrue(pageText.contains(value));
+        
+        button = (HtmlInput) page.getElementById("callA" + flowInvocationSuffix);
+        page = button.click();
+        
+        param1Value = page.getElementById("param1FromFlowB").getTextContent();
+        assertEquals("param1Value", param1Value);
+        param2Value = page.getElementById("param2FromFlowB").getTextContent();
+        assertEquals("param2Value", param2Value);
+        
+        button = (HtmlInput) page.getElementById("next_a");
+        page = button.click();
+        pageText = page.asText();
+        assertTrue(pageText.contains("Second page in the flow"));
+        
+        button = (HtmlInput) page.getElementById("next");
+        page = button.click();
+        
+        button = (HtmlInput) page.getElementById("return" + flowInvocationSuffix);
+        page = button.click();
+        
+        pageText = page.asText();
+        assertTrue(pageText.contains("Flow bean name: Flow_B_Bean"));
+        
+        button = (HtmlInput) page.getElementById("next_a");
+        page = button.click();
+        
+        button = (HtmlInput) page.getElementById("next");
+        page = button.click();
+        
+        button = (HtmlInput) page.getElementById("return" + flowInvocationSuffix);
+        page = button.click();
+        
+        pageText = page.asText();
+        assertTrue(pageText.contains("Flow bean name: Flow_a_Bean"));
+        
+        button = (HtmlInput) page.getElementById("next_a");
+        page = button.click();
+        
+        button = (HtmlInput) page.getElementById("next");
+        page = button.click();
+        
+        button = (HtmlInput) page.getElementById("return" + flowInvocationSuffix);
+        page = button.click();
+        
+        pageText = page.asText();
+        assertTrue(pageText.matches("(?s).*flowScope value,\\s+should be empty:\\s+\\..*"));
+        assertTrue(pageText.matches("(?s).*Has a flow:\\s+false\\..*"));
+
+    }
+}
diff --git a/test/cluster/javaee6web/flow/pom.xml b/test/cluster/javaee6web/flow/pom.xml
new file mode 100644
index 0000000..260dbe1
--- /dev/null
+++ b/test/cluster/javaee6web/flow/pom.xml
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" 
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.cluster.javaee6web</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.cluster.javaee6web.flow</groupId>
+    <artifactId>pom</artifactId>
+    <packaging>pom</packaging>
+    <name>Mojarra ${project.version} - Test - Cluster - JavaEE 6 Web - Flow</name>
+    <modules>
+        <module>basic_faces_flow_call</module>
+    </modules>
+</project>
diff --git a/test/cluster/javaee6web/pom.xml b/test/cluster/javaee6web/pom.xml
new file mode 100644
index 0000000..fbf277b
--- /dev/null
+++ b/test/cluster/javaee6web/pom.xml
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.cluster</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.cluster.javaee6web</groupId>
+    <artifactId>pom</artifactId>
+    <packaging>pom</packaging>
+    <name>Mojarra ${project.version} - Test - Cluster - JavaEE 6 Web</name>
+    <modules>
+        <module>flow</module>
+        <module>viewScoped</module>
+  </modules>
+</project>
diff --git a/test/cluster/javaee6web/viewScoped/nbactions.xml b/test/cluster/javaee6web/viewScoped/nbactions.xml
new file mode 100644
index 0000000..7bbec61
--- /dev/null
+++ b/test/cluster/javaee6web/viewScoped/nbactions.xml
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--><actions>
+    <action>
+        <actionName>debug.test.single</actionName>
+        <goals>
+            <goal>test-compile</goal>
+            <goal>surefire:test</goal>
+        </goals>
+        <properties>
+            <test>${packageClassName}</test>
+            <forkMode>once</forkMode>
+            <maven.surefire.debug>-Xdebug -Xrunjdwp:transport=dt_socket,server=n,address=${jpda.address}</maven.surefire.debug>
+            <jpda.listen>true</jpda.listen>
+            <integration.url>http://localhost:18080/test-cluster-javaee6web-viewScoped/</integration.url>
+        </properties>
+    </action>
+    <action>
+        <actionName>test.single</actionName>
+        <goals>
+            <goal>test-compile</goal>
+            <goal>surefire:test</goal>
+        </goals>
+        <properties>
+            <integration.url>http://localhost:18080/test-cluster-javaee6web-viewScoped/</integration.url>
+            <integration.url2>http://localhost:18080/test-cluster-javaee6web-viewScoped/</integration.url2>
+            <test>${packageClassName}</test>
+        </properties>
+    </action>
+</actions>
diff --git a/test/cluster/javaee6web/viewScoped/pom.xml b/test/cluster/javaee6web/viewScoped/pom.xml
new file mode 100644
index 0000000..84d263f
--- /dev/null
+++ b/test/cluster/javaee6web/viewScoped/pom.xml
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <artifactId>pom</artifactId>
+    <groupId>com.sun.faces.test.cluster.javaee6web</groupId>
+    <version>2.2.8-SNAPSHOT</version>
+  </parent>
+  
+  <groupId>com.sun.faces.test.cluster.javaee6web</groupId>
+  <artifactId>viewScoped</artifactId>
+  <version>2.2.8-SNAPSHOT</version>
+  <packaging>war</packaging>
+  <name>Mojarra ${project.version} - Test - Cluster - JavaEE 6 Web - ViewScoped test</name>
+  
+  <build>
+    <finalName>test-cluster-javaee6web-viewScoped</finalName>
+  </build>
+  
+</project>
diff --git a/test/cluster/javaee6web/viewScoped/src/main/java/com/sun/faces/test/cluster/javaee6web/viewScoped/SessionFailoverListener.java b/test/cluster/javaee6web/viewScoped/src/main/java/com/sun/faces/test/cluster/javaee6web/viewScoped/SessionFailoverListener.java
new file mode 100644
index 0000000..d78d82a
--- /dev/null
+++ b/test/cluster/javaee6web/viewScoped/src/main/java/com/sun/faces/test/cluster/javaee6web/viewScoped/SessionFailoverListener.java
@@ -0,0 +1,60 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.test.cluster.javaee6web.viewScoped;
+
+import javax.servlet.http.HttpSessionActivationListener;
+import javax.servlet.http.HttpSessionEvent;
+
+public class SessionFailoverListener implements HttpSessionActivationListener {
+
+    @Override
+    public void sessionDidActivate(HttpSessionEvent se) {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    @Override
+    public void sessionWillPassivate(HttpSessionEvent se) {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+    
+    
+    
+}
diff --git a/test/cluster/javaee6web/viewScoped/src/main/java/com/sun/faces/test/cluster/javaee6web/viewScoped/ViewScopedBean.java b/test/cluster/javaee6web/viewScoped/src/main/java/com/sun/faces/test/cluster/javaee6web/viewScoped/ViewScopedBean.java
new file mode 100644
index 0000000..ff363fe
--- /dev/null
+++ b/test/cluster/javaee6web/viewScoped/src/main/java/com/sun/faces/test/cluster/javaee6web/viewScoped/ViewScopedBean.java
@@ -0,0 +1,86 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.test.cluster.javaee6web.viewScoped;
+
+import java.io.Serializable;
+import javax.faces.view.ViewScoped;
+import javax.inject.Named;
+
+ at ViewScoped
+ at Named
+public class ViewScopedBean implements Serializable {
+    
+    private static final long serialVersionUID = -2814204756771716324L;
+    
+    private String name;
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (obj == null) {
+            return false;
+        }
+        if (getClass() != obj.getClass()) {
+            return false;
+        }
+        final ViewScopedBean other = (ViewScopedBean) obj;
+        if ((this.name == null) ? (other.name != null) : !this.name.equals(other.name)) {
+            return false;
+        }
+        return true;
+    }
+
+    @Override
+    public int hashCode() {
+        int hash = 7;
+        hash = 37 * hash + (this.name != null ? this.name.hashCode() : 0);
+        return hash;
+    }
+    
+    
+}
diff --git a/test/cluster/javaee6web/viewScoped/src/main/webapp/WEB-INF/beans.xml b/test/cluster/javaee6web/viewScoped/src/main/webapp/WEB-INF/beans.xml
new file mode 100644
index 0000000..c782f57
--- /dev/null
+++ b/test/cluster/javaee6web/viewScoped/src/main/webapp/WEB-INF/beans.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- This file can be an empty text file (0 bytes) -->
+<!-- We're declaring the schema to save you time if you do have to configure 
+   this in the future -->
+<beans xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+   xsi:schemaLocation="
+        http://java.sun.com/xml/ns/javaee 
+        http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
+</beans>
diff --git a/test/cluster/javaee6web/viewScoped/src/main/webapp/WEB-INF/glassfish-web.xml b/test/cluster/javaee6web/viewScoped/src/main/webapp/WEB-INF/glassfish-web.xml
new file mode 100644
index 0000000..215a06d
--- /dev/null
+++ b/test/cluster/javaee6web/viewScoped/src/main/webapp/WEB-INF/glassfish-web.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
+<glassfish-web-app error-url="">
+  <context-root>/test-cluster-javaee6web-viewScoped</context-root>
+  <class-loader delegate="true"/>
+  <jsp-config>
+    <property name="keepgenerated" value="true">
+      <description>Keep a copy of the generated servlet class' java code.</description>
+    </property>
+  </jsp-config>
+  
+  <session-config>
+    <session-manager persistence-type="replicated">
+      <manager-properties>
+    <property name="relaxCacheVersionSemantics" value="true"/>
+      </manager-properties>
+    </session-manager>
+  </session-config>
+  
+</glassfish-web-app>
diff --git a/test/cluster/javaee6web/viewScoped/src/main/webapp/WEB-INF/web.xml b/test/cluster/javaee6web/viewScoped/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..d807f3d
--- /dev/null
+++ b/test/cluster/javaee6web/viewScoped/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,79 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+    <distributable/>
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>${webapp.projectStage}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
+        <param-value>${webapp.partialStateSaving}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>${webapp.stateSavingMethod}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>com.sun.faces.enableAgressiveSessionDirtying</param-name>
+        <param-value>true</param-value>
+    </context-param>
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <welcome-file-list>
+        <welcome-file>faces/index.xhtml</welcome-file>
+    </welcome-file-list>
+    <env-entry>
+        <env-entry-name>jsf/ClientSideSecretKey</env-entry-name>
+        <env-entry-type>java.lang.String</env-entry-type>
+        <!-- http://www.digitalsanctuary.com/aes-key-generator.php -->
+        <env-entry-value>dMh+VboIOe/AJr4bQHXktfQB1HjJhtymh9SAcIVJNHg=</env-entry-value>
+    </env-entry>
+</web-app>
diff --git a/test/cluster/javaee6web/viewScoped/src/main/webapp/index.xhtml b/test/cluster/javaee6web/viewScoped/src/main/webapp/index.xhtml
new file mode 100644
index 0000000..3da26f4
--- /dev/null
+++ b/test/cluster/javaee6web/viewScoped/src/main/webapp/index.xhtml
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title></title>
+        <script type="text/javascript">
+            
+            var switchPort = function switchPort() {
+                var loc = window.location;
+                var otherPort = (loc.port == 18080) ? 28080 : 18080;
+                var newActionUrl = loc.protocol + "//" + loc.hostname + ":" + otherPort + loc.pathname;
+                var actionUrlMessageDiv = document.getElementById("actionUrlMessage");
+                actionUrlMessageDiv.innerHTML = "<p>new actionUrl is " + newActionUrl + ". </p>";
+                document['myForm'].action = newActionUrl;
+                
+            }
+            
+            
+        </script>
+    </h:head>
+    <body>
+        <div id="actionUrlMessage"></div>
+        <h:form id="myForm" prependId="false">
+            <p><h:inputText id="text" value="#{viewScopedBean.name}" /></p>
+            <p><h:commandButton id="reload" value="reload" /></p>
+            <p><h:commandButton id="page2" value="page2" action="page2" /></p>
+        </h:form>
+    
+        <p><button id="switchPort" type="button" onclick="switchPort(); return false;">switchPort</button></p>
+    </body>
+</html>
+
diff --git a/test/cluster/javaee6web/viewScoped/src/main/webapp/page2.xhtml b/test/cluster/javaee6web/viewScoped/src/main/webapp/page2.xhtml
new file mode 100644
index 0000000..4a642dd
--- /dev/null
+++ b/test/cluster/javaee6web/viewScoped/src/main/webapp/page2.xhtml
@@ -0,0 +1,18 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title>Page 2</title>
+    </h:head>
+    <h:body>
+        Navigation to here from index.xhtml causes the ViewScoped beans to expire.
+        <h:form prependId="false">
+            
+            <h:commandButton action="index" value="back" id="back" />
+            
+        </h:form>
+        
+    </h:body>
+</html>
+
diff --git a/test/cluster/javaee6web/viewScoped/src/test/java/com/sun/faces/test/cluster/javaee6web/viewScoped/Issue3319IT.java b/test/cluster/javaee6web/viewScoped/src/test/java/com/sun/faces/test/cluster/javaee6web/viewScoped/Issue3319IT.java
new file mode 100644
index 0000000..729dff1
--- /dev/null
+++ b/test/cluster/javaee6web/viewScoped/src/test/java/com/sun/faces/test/cluster/javaee6web/viewScoped/Issue3319IT.java
@@ -0,0 +1,178 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.cluster.javaee6web.viewScoped;
+
+import com.gargoylesoftware.htmlunit.NicelyResynchronizingAjaxController;
+import com.gargoylesoftware.htmlunit.html.HtmlButton;
+import com.gargoylesoftware.htmlunit.html.HtmlElement;
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
+import static org.junit.Assert.assertTrue;
+
+public class Issue3319IT {
+    /**
+     * Stores the web URL.
+     */
+    private String webUrl;
+    /**
+     * Stores the web client.
+     */
+    private WebClient webClient;
+
+    /**
+     * Setup before testing.
+     * 
+     * @throws Exception when a serious error occurs.
+     */
+    @BeforeClass
+    public static void setUpClass() throws Exception {
+    }
+
+    /**
+     * Cleanup after testing.
+     * 
+     * @throws Exception when a serious error occurs.
+     */
+    @AfterClass
+    public static void tearDownClass() throws Exception {
+    }
+
+    /**
+     * Setup before testing.
+     */
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    /**
+     * Tear down after testing.
+     */
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testViewScopeAndViewStateIsReplicated() throws Exception {
+        webClient.setAjaxController(new NicelyResynchronizingAjaxController());
+        HtmlPage page = webClient.getPage(webUrl);
+
+        HtmlTextInput myText = (HtmlTextInput) page.getElementById("text");
+        String value = "" + System.currentTimeMillis();
+        myText.setValueAttribute(value);
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("reload");
+        page = button.click();
+        
+        myText = (HtmlTextInput) page.getElementById("text");
+        assertTrue(myText.getValueAttribute().equals(value));
+        
+        HtmlButton switchPort = (HtmlButton) page.getElementById("switchPort");
+        page = switchPort.click();
+        
+        Thread.sleep(10000);
+        
+        button = (HtmlSubmitInput) page.getElementById("reload");
+        page = button.click();
+        
+        myText = (HtmlTextInput) page.getElementById("text");
+        assertTrue(myText.getValueAttribute().equals(value));        
+        
+    }
+    
+    @Test
+    public void testViewScopeAndViewStateIsClearedAndReplicated() throws Exception {
+        webClient.setAjaxController(new NicelyResynchronizingAjaxController());
+        HtmlPage page = webClient.getPage(webUrl);
+
+        HtmlTextInput myText = (HtmlTextInput) page.getElementById("text");
+        String value = "" + System.currentTimeMillis();
+        myText.setValueAttribute(value);
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("reload");
+        page = button.click();
+        
+        myText = (HtmlTextInput) page.getElementById("text");
+        assertTrue(myText.getValueAttribute().equals(value));
+        
+        button = (HtmlSubmitInput) page.getElementById("page2");
+        page = button.click();
+        button = (HtmlSubmitInput) page.getElementById("back");
+        page = button.click();
+
+        myText = (HtmlTextInput) page.getElementById("text");
+        assertTrue(!myText.getValueAttribute().equals(value));
+        
+        value = "" + System.currentTimeMillis();
+        myText.setValueAttribute(value);
+        button = (HtmlSubmitInput) page.getElementById("reload");
+        page = button.click();
+        
+        myText = (HtmlTextInput) page.getElementById("text");
+        assertTrue(myText.getValueAttribute().equals(value));
+        
+        HtmlButton switchPort = (HtmlButton) page.getElementById("switchPort");
+        page = switchPort.click();
+        
+        Thread.sleep(10000);
+        
+        button = (HtmlSubmitInput) page.getElementById("reload");
+        page = button.click();
+        
+        myText = (HtmlTextInput) page.getElementById("text");
+        assertTrue(myText.getValueAttribute().equals(value));        
+        
+        button = (HtmlSubmitInput) page.getElementById("page2");
+        page = button.click();
+        button = (HtmlSubmitInput) page.getElementById("back");
+        page = button.click();
+        myText = (HtmlTextInput) page.getElementById("text");
+        assertTrue(!myText.getValueAttribute().equals(value));
+        
+    }
+    
+}
diff --git a/test/cluster/pom.xml b/test/cluster/pom.xml
new file mode 100644
index 0000000..abf8a3b
--- /dev/null
+++ b/test/cluster/pom.xml
@@ -0,0 +1,520 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.cluster</groupId>
+    <artifactId>pom</artifactId>
+    <packaging>pom</packaging>
+    <name>Mojarra ${project.version} - Test - Cluster</name>
+    <dependencies>
+        <dependency>
+            <groupId>com.sun.faces.test</groupId>
+            <artifactId>util</artifactId>
+            <version>${project.version}</version>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+    <modules>
+        <module>javaee6web</module>
+        <module>servlet25</module>
+    </modules>
+    <profiles>
+        <profile>
+            <id>integration-failsafe-cluster</id>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-failsafe-plugin</artifactId>
+                        <inherited>true</inherited>
+                        <executions>
+                            <execution>
+                                <goals>
+                                    <goal>integration-test</goal>
+                                    <goal>verify</goal>
+                                </goals>
+                                <configuration>
+                                    <systemPropertyVariables>
+                                        <integration.url>${integration.protocol}://${integration.serverName1}:${integration.serverPort1}/${project.build.finalName}/</integration.url>
+                                        <integration.url2>${integration.protocol}://${integration.serverName2}:${integration.serverPort2}/${project.build.finalName}/</integration.url2>
+                                        <project.build.sourceEncoding>${project.build.sourceEncoding}</project.build.sourceEncoding>
+                                    </systemPropertyVariables>
+                                </configuration>
+                            </execution>
+                        </executions>
+                    </plugin>                
+                </plugins>
+            </build>
+            <properties>
+                <integration.protocol>http</integration.protocol>
+                <integration.serverName1>localhost</integration.serverName1>
+                <integration.serverName2>localhost</integration.serverName2>
+                <integration.serverPort1>18080</integration.serverPort1>
+                <integration.serverPort2>28080</integration.serverPort2>
+            </properties>
+            <reporting>
+                <plugins>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-surefire-report-plugin</artifactId>
+                        <reportSets>
+                            <reportSet>
+                                <id>integration-tests</id>
+                                <reports>
+                                    <report>failsafe-report-only</report>
+                                </reports>
+                            </reportSet>
+                        </reportSets>
+                    </plugin>
+                </plugins>
+            </reporting>
+        </profile>
+        <profile>
+            <id>integration-glassfish-cluster</id>
+            <build>
+                <plugins>
+                    <plugin>                 
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-dependency-plugin</artifactId>
+                        <executions>
+                            <execution>
+                                <id>copy</id>                         
+                                <phase>package</phase>
+                                <goals>
+                                    <goal>copy</goal>
+                                </goals>
+                                <configuration>
+                                    <artifactItems>
+                                        <artifactItem>
+                                            <groupId>${jsf.groupId}</groupId>
+                                            <artifactId>${jsf.artifactId}</artifactId>
+                                            <version>${jsf.version}</version>
+                                            <type>jar</type>
+                                            <overWrite>true</overWrite>                                     
+                                            <outputDirectory>${integration.container.home}/glassfish/modules</outputDirectory>
+                                            <destFileName>javax.faces.jar</destFileName>
+                                        </artifactItem>
+                                    </artifactItems>
+                                </configuration>
+                            </execution>
+                        </executions>
+                    </plugin>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-antrun-plugin</artifactId>
+                        <executions>
+                            <execution>
+                                <id>start-container</id>
+                                <phase>pre-integration-test</phase>
+                                <goals>
+                                    <goal>run</goal>
+                                </goals>
+                                <configuration>
+                                    <target>
+                                        <echo>=== Starting ${integration.container.cluster.domain} ===</echo>
+                                        <exec executable="${integration.container.home}/glassfish/bin/asadmin.bat" osfamily="windows">
+                                            <arg line="start-domain ${integration.container.cluster.domain}"/>
+                                        </exec>
+                                        <exec executable="${integration.container.home}/glassfish/bin/asadmin" osfamily="unix">
+                                            <arg line="start-domain ${integration.container.cluster.domain}"/>
+                                        </exec>
+                                        <echo>=== Starting ${integration.container.cluster.name} ===</echo>
+                                        <exec executable="${integration.container.home}/glassfish/bin/asadmin.bat" osfamily="windows">
+                                            <arg line="start-cluster ${integration.container.cluster.name}"/>
+                                        </exec>
+                                        <exec executable="${integration.container.home}/glassfish/bin/asadmin" osfamily="unix">
+                                            <arg line="start-cluster ${integration.container.cluster.name}"/>
+                                        </exec>
+                                        <echo>=== Deploying ${project.build.finalName} to ${integration.container.cluster.name} ===</echo>
+                                        <exec executable="${integration.container.home}/glassfish/bin/asadmin.bat" osfamily="windows">
+                                            <arg line="deploy --force --availabilityenabled=true --target ${integration.container.cluster.name} ${project.build.directory}/${project.build.finalName}.war"/>
+                                        </exec>
+                                        <exec executable="${integration.container.home}/glassfish/bin/asadmin" osfamily="unix">
+                                            <arg line="deploy --force --availabilityenabled=true --target ${integration.container.cluster.name} ${project.build.directory}/${project.build.finalName}.war"/>
+                                        </exec>
+                                    </target>
+                                </configuration>
+                            </execution>
+                            <execution>
+                                <id>stop-container</id>
+                                <phase>post-integration-test</phase>
+                                <goals>
+                                    <goal>run</goal>
+                                </goals>
+                                <configuration>
+                                    <target>
+                                        <echo>=== Undeploying ${project.build.finalName} from ${integration.container.cluster.name} ===</echo>
+                                        <exec executable="${integration.container.home}/glassfish/bin/asadmin.bat" osfamily="windows">
+                                            <arg line="undeploy --target ${integration.container.cluster.name} ${project.build.finalName}"/>
+                                        </exec>
+                                        <exec executable="${integration.container.home}/glassfish/bin/asadmin" osfamily="unix">
+                                            <arg line="undeploy --target ${integration.container.cluster.name} ${project.build.finalName}"/>
+                                        </exec>
+                                        <echo>=== Stopping ${integration.container.cluster.name} ===</echo>
+                                        <exec executable="${integration.container.home}/glassfish/bin/asadmin.bat" osfamily="windows">
+                                            <arg line="stop-cluster ${integration.container.cluster.name}"/>
+                                        </exec>
+                                        <exec executable="${integration.container.home}/glassfish/bin/asadmin" osfamily="unix">
+                                            <arg line="stop-cluster ${integration.container.cluster.name}"/>
+                                        </exec>
+                                        <echo>=== Stopping ${integration.container.cluster.domain} ===</echo>
+                                        <exec executable="${integration.container.home}/glassfish/bin/asadmin.bat" osfamily="windows">
+                                            <arg line="stop-domain ${integration.container.cluster.domain}"/>
+                                        </exec>
+                                        <exec executable="${integration.container.home}/glassfish/bin/asadmin" osfamily="unix">
+                                            <arg line="stop-domain ${integration.container.cluster.domain}"/>
+                                        </exec>
+                                    </target>
+                                </configuration>
+                            </execution>
+                        </executions>
+                    </plugin>                    
+                </plugins>
+            </build>
+            <properties>
+                <integration.container.cluster.domain>domain1</integration.container.cluster.domain>
+                <integration.container.cluster.name>cluster1</integration.container.cluster.name>
+                <integration.container.home>C:/Glassfish3.1.2.2</integration.container.home>
+            </properties>
+        </profile>
+        <profile>
+            <id>integration-glassfish-cluster-start</id>
+            <build>
+                <plugins>
+                    <plugin>                 
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-dependency-plugin</artifactId>
+                        <executions>
+                            <execution>
+                                <id>copy</id>                         
+                                <phase>package</phase>
+                                <goals>
+                                    <goal>copy</goal>
+                                </goals>
+                                <configuration>
+                                    <artifactItems>
+                                        <artifactItem>
+                                            <groupId>${jsf.groupId}</groupId>
+                                            <artifactId>${jsf.artifactId}</artifactId>
+                                            <version>${jsf.version}</version>
+                                            <type>jar</type>
+                                            <overWrite>true</overWrite>                                     
+                                            <outputDirectory>${integration.container.home}/glassfish/modules</outputDirectory>
+                                            <destFileName>javax.faces.jar</destFileName>
+                                        </artifactItem>
+                                    </artifactItems>
+                                </configuration>
+                            </execution>
+                        </executions>
+                    </plugin>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-antrun-plugin</artifactId>
+                        <executions>
+                            <execution>
+                                <id>start-container</id>
+                                <phase>pre-integration-test</phase>
+                                <goals>
+                                    <goal>run</goal>
+                                </goals>
+                                <configuration>
+                                    <target>
+                                        <echo>=== Starting ${integration.container.cluster.domain} ===</echo>
+                                        <exec executable="${integration.container.home}/glassfish/bin/asadmin.bat" osfamily="windows">
+                                            <arg line="start-domain ${integration.container.cluster.domain}"/>
+                                        </exec>
+                                        <exec executable="${integration.container.home}/glassfish/bin/asadmin" osfamily="unix">
+                                            <arg line="start-domain ${integration.container.cluster.domain}"/>
+                                        </exec>
+                                        <echo>=== Starting ${integration.container.cluster.name} ===</echo>
+                                        <exec executable="${integration.container.home}/glassfish/bin/asadmin.bat" osfamily="windows">
+                                            <arg line="start-cluster ${integration.container.cluster.name}"/>
+                                        </exec>
+                                        <exec executable="${integration.container.home}/glassfish/bin/asadmin" osfamily="unix">
+                                            <arg line="start-cluster ${integration.container.cluster.name}"/>
+                                        </exec>
+                                    </target>
+                                </configuration>
+                            </execution>
+                        </executions>
+                    </plugin>                    
+                </plugins>
+            </build>
+            <properties>
+                <integration.container.cluster.domain>domain1</integration.container.cluster.domain>
+                <integration.container.cluster.name>cluster1</integration.container.cluster.name>
+                <integration.container.home>C:/Glassfish3.1.2.2</integration.container.home>
+            </properties>
+        </profile>
+        <profile>
+            <id>integration-glassfish-cluster-start-debug</id>
+            <!-- Taken from https://blogs.oracle.com/foo/entry/how_to_debug_clustered_appserver -->
+            <build>
+                <plugins>
+                    <plugin>                 
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-dependency-plugin</artifactId>
+                        <executions>
+                            <execution>
+                                <id>copy</id>                         
+                                <phase>package</phase>
+                                <goals>
+                                    <goal>copy</goal>
+                                </goals>
+                                <configuration>
+                                    <artifactItems>
+                                        <artifactItem>
+                                            <groupId>${jsf.groupId}</groupId>
+                                            <artifactId>${jsf.artifactId}</artifactId>
+                                            <version>${jsf.version}</version>
+                                            <type>jar</type>
+                                            <overWrite>true</overWrite>                                     
+                                            <outputDirectory>${integration.container.home}/glassfish/modules</outputDirectory>
+                                            <destFileName>javax.faces.jar</destFileName>
+                                        </artifactItem>
+                                    </artifactItems>
+                                </configuration>
+                            </execution>
+                        </executions>
+                    </plugin>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-antrun-plugin</artifactId>
+                        <executions>
+                            <execution>
+                                <id>start-container</id>
+                                <phase>pre-integration-test</phase>
+                                <goals>
+                                    <goal>run</goal>
+                                </goals>
+                                <configuration>
+                                    <target>
+                                        <echo>=== Starting ${integration.container.cluster.domain} ===</echo>
+                                        <exec executable="${integration.container.home}/glassfish/bin/asadmin.bat" osfamily="windows">
+                                            <arg line="start-domain ${integration.container.cluster.domain}"/>
+                                        </exec>
+                                        <exec executable="${integration.container.home}/glassfish/bin/asadmin" osfamily="unix">
+                                            <arg line="start-domain ${integration.container.cluster.domain}"/>
+                                        </exec>
+                                        <echo>=== Configuring ${integration.container.cluster.domain} ${integration.container.cluster.name} for cluster debugging ===</echo>
+                                        <exec executable="${integration.container.home}/glassfish/bin/asadmin.bat" osfamily="windows">
+                                            <arg line="set ${integration.container.cluster.name}-config.java-config.debug-enabled=true"/>
+                                        </exec>
+                                        <exec executable="${integration.container.home}/glassfish/bin/asadmin" osfamily="unix">
+                                            <arg line="set ${integration.container.cluster.name}-config.java-config.debug-enabled=true"/>
+                                        </exec>
+                                        <echo>=== Starting ${integration.container.cluster.name} ===</echo>
+                                        <exec executable="${integration.container.home}/glassfish/bin/asadmin.bat" osfamily="windows">
+                                            <arg line="start-cluster ${integration.container.cluster.name}"/>
+                                        </exec>
+                                        <exec executable="${integration.container.home}/glassfish/bin/asadmin" osfamily="unix">
+                                            <arg line="start-cluster ${integration.container.cluster.name}"/>
+                                        </exec>
+
+                                        <echo>=== Configuring instances of ${integration.container.cluster.name} for debugging ===</echo>
+                                        <exec executable="${integration.container.home}/glassfish/bin/asadmin.bat" osfamily="windows">
+                                            <arg line="create-system-properties --target ${integration.container.cluster.instance.1} JAVA_DEBUGGER_PORT=${integration.container.cluster.instance.1.debugPort}"/>
+                                        </exec>
+                                        <exec executable="${integration.container.home}/glassfish/bin/asadmin" osfamily="unix">
+                                            <arg line="create-system-properties --target ${integration.container.cluster.instance.1} JAVA_DEBUGGER_PORT=${integration.container.cluster.instance.1.debugPort}"/>
+                                        </exec>
+                                        <exec executable="${integration.container.home}/glassfish/bin/asadmin.bat" osfamily="windows">
+                                            <arg line="create-system-properties --target ${integration.container.cluster.instance.2} JAVA_DEBUGGER_PORT=${integration.container.cluster.instance.2.debugPort}"/>
+                                        </exec>
+                                        <exec executable="${integration.container.home}/glassfish/bin/asadmin" osfamily="unix">
+                                            <arg line="create-system-properties --target ${integration.container.cluster.instance.2} JAVA_DEBUGGER_PORT=${integration.container.cluster.instance.2.debugPort}"/>
+                                        </exec>
+                                        <echo>=== Stopping and re-starting ${integration.container.cluster.name} after configuring instances for debugging ===</echo>
+                                        <exec executable="${integration.container.home}/glassfish/bin/asadmin.bat" osfamily="windows">
+                                            <arg line="stop-cluster ${integration.container.cluster.name}"/>
+                                        </exec>
+                                        <exec executable="${integration.container.home}/glassfish/bin/asadmin" osfamily="unix">
+                                            <arg line="stop-cluster ${integration.container.cluster.name}"/>
+                                        </exec>
+                                        <exec executable="${integration.container.home}/glassfish/bin/asadmin.bat" osfamily="windows">
+                                            <arg line="start-cluster ${integration.container.cluster.name}"/>
+                                        </exec>
+                                        <exec executable="${integration.container.home}/glassfish/bin/asadmin" osfamily="unix">
+                                            <arg line="start-cluster ${integration.container.cluster.name}"/>
+                                        </exec>
+                                    </target>
+                                </configuration>
+                            </execution>
+                        </executions>
+                    </plugin>                    
+                </plugins>
+            </build>
+            <properties>
+                <integration.container.cluster.domain>domain1</integration.container.cluster.domain>
+                <integration.container.cluster.name>cluster1</integration.container.cluster.name>
+                <integration.container.cluster.instance.1>instance1</integration.container.cluster.instance.1>
+                <integration.container.cluster.instance.1.debugPort>19009</integration.container.cluster.instance.1.debugPort>
+                <integration.container.cluster.instance.2>instance2</integration.container.cluster.instance.2>
+                <integration.container.cluster.instance.2.debugPort>29009</integration.container.cluster.instance.2.debugPort>
+                <integration.container.home>C:/Glassfish3.1.2.2</integration.container.home>
+            </properties>
+        </profile>
+        <profile>
+            <id>integration-glassfish-cluster-deploy</id>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-antrun-plugin</artifactId>
+                        <executions>
+                            <execution>
+                                <id>start-container</id>
+                                <phase>pre-integration-test</phase>
+                                <goals>
+                                    <goal>run</goal>
+                                </goals>
+                                <configuration>
+                                    <target>
+                                        <echo>=== Deploying ${project.build.finalName} to ${integration.container.cluster.name} ===</echo>
+                                        <exec executable="${integration.container.home}/glassfish/bin/asadmin.bat" osfamily="windows">
+                                            <arg line="deploy --force --availabilityenabled=true --target ${integration.container.cluster.name} ${project.build.directory}/${project.build.finalName}.war"/>
+                                        </exec>
+                                        <exec executable="${integration.container.home}/glassfish/bin/asadmin" osfamily="unix">
+                                            <arg line="deploy --force --availabilityenabled=true --target ${integration.container.cluster.name} ${project.build.directory}/${project.build.finalName}.war"/>
+                                        </exec>
+                                    </target>
+                                </configuration>
+                            </execution>
+                        </executions>
+                    </plugin>                    
+                </plugins>
+            </build>
+            <properties>
+                <integration.container.cluster.domain>domain1</integration.container.cluster.domain>
+                <integration.container.cluster.name>cluster1</integration.container.cluster.name>
+                <integration.container.home>C:/Glassfish3.1.2.2</integration.container.home>
+            </properties>
+        </profile>
+        <profile>
+            <id>integration-glassfish-cluster-undeploy</id>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-antrun-plugin</artifactId>
+                        <executions>
+                            <execution>
+                                <id>undeploy</id>
+                                <phase>post-integration-test</phase>
+                                <goals>
+                                    <goal>run</goal>
+                                </goals>
+                                <configuration>
+                                    <target>
+                                        <echo>=== Undeploying ${project.build.finalName} from ${integration.container.cluster.name} ===</echo>
+                                        <exec executable="${integration.container.home}/glassfish/bin/asadmin.bat" osfamily="windows">
+                                            <arg line="undeploy --target ${integration.container.cluster.name} ${project.build.finalName}"/>
+                                        </exec>
+                                        <exec executable="${integration.container.home}/glassfish/bin/asadmin" osfamily="unix">
+                                            <arg line="undeploy --target ${integration.container.cluster.name} ${project.build.finalName}"/>
+                                        </exec>
+                                    </target>
+                                </configuration>
+                            </execution>
+                        </executions>
+                    </plugin>                    
+                </plugins>
+            </build>
+            <properties>
+                <integration.container.cluster.domain>domain1</integration.container.cluster.domain>
+                <integration.container.cluster.name>cluster1</integration.container.cluster.name>
+                <integration.container.home>C:/Glassfish3.1.2.2</integration.container.home>
+            </properties>
+        </profile>
+        <profile>
+            <id>integration-glassfish-cluster-stop</id>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-antrun-plugin</artifactId>
+                        <executions>
+                            <execution>
+                                <id>stop-container</id>
+                                <phase>post-integration-test</phase>
+                                <goals>
+                                    <goal>run</goal>
+                                </goals>
+                                <configuration>
+                                    <target>
+                                        <echo>=== Stopping ${integration.container.cluster.name} ===</echo>
+                                        <exec executable="${integration.container.home}/glassfish/bin/asadmin.bat" osfamily="windows">
+                                            <arg line="stop-cluster ${integration.container.cluster.name}"/>
+                                        </exec>
+                                        <exec executable="${integration.container.home}/glassfish/bin/asadmin" osfamily="unix">
+                                            <arg line="stop-cluster ${integration.container.cluster.name}"/>
+                                        </exec>
+                                        <echo>=== Stopping ${integration.container.cluster.domain} ===</echo>
+                                        <exec executable="${integration.container.home}/glassfish/bin/asadmin.bat" osfamily="windows">
+                                            <arg line="stop-domain ${integration.container.cluster.domain}"/>
+                                        </exec>
+                                        <exec executable="${integration.container.home}/glassfish/bin/asadmin" osfamily="unix">
+                                            <arg line="stop-domain ${integration.container.cluster.domain}"/>
+                                        </exec>
+                                    </target>
+                                </configuration>
+                            </execution>
+                        </executions>
+                    </plugin>                    
+                </plugins>
+            </build>
+            <properties>
+                <integration.container.cluster.domain>domain1</integration.container.cluster.domain>
+                <integration.container.cluster.name>cluster1</integration.container.cluster.name>
+                <integration.container.home>C:/Glassfish3.1.2.2</integration.container.home>
+            </properties>
+        </profile>
+    </profiles>
+</project>
diff --git a/test/cluster/servlet25/bytearrayguard/pom.xml b/test/cluster/servlet25/bytearrayguard/pom.xml
new file mode 100644
index 0000000..8871c33
--- /dev/null
+++ b/test/cluster/servlet25/bytearrayguard/pom.xml
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" 
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.cluster.servlet25</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.cluster.servlet25</groupId>
+    <artifactId>bytearrayguard</artifactId>
+    <packaging>war</packaging>
+    <name>Mojarra ${project.version} - Test - Cluster - Servlet 2.5 - ByteArrayGuard</name>
+    <build>
+        <finalName>test-cluster-servlet25-bytearrayguard</finalName>
+    </build>
+    <properties>
+        <netbeans.hint.deploy.server>gfv3ee6</netbeans.hint.deploy.server>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/test/cluster/servlet25/bytearrayguard/src/main/webapp/WEB-INF/web.xml b/test/cluster/servlet25/bytearrayguard/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..b3cd356
--- /dev/null
+++ b/test/cluster/servlet25/bytearrayguard/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" 
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>${webapp.projectStage}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
+        <param-value>${webapp.partialStateSaving}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>client</param-value>
+    </context-param>
+    <env-entry>
+        <env-entry-name>jsf/ClientSideSecretKey</env-entry-name>
+        <env-entry-type>java.lang.String</env-entry-type>
+        <env-entry-value>K3zwks27RX+hxw/fAI0v2A==</env-entry-value>
+    </env-entry>
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <session-config>
+        <session-timeout>30</session-timeout>
+    </session-config>
+    <welcome-file-list>
+        <welcome-file>faces/index.xhtml</welcome-file>
+    </welcome-file-list>
+</web-app>
diff --git a/test/cluster/servlet25/bytearrayguard/src/main/webapp/index.xhtml b/test/cluster/servlet25/bytearrayguard/src/main/webapp/index.xhtml
new file mode 100644
index 0000000..e30d4ec
--- /dev/null
+++ b/test/cluster/servlet25/bytearrayguard/src/main/webapp/index.xhtml
@@ -0,0 +1,15 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://xmlns.jcp.org/jsf/html">
+    <h:head>
+        <title>Facelet Title</title>
+    </h:head>
+    <h:body>
+        Form!
+        <h:form id="form">
+            <h:commandButton id="submit" value="Click Me"/>
+        </h:form>
+    </h:body>
+</html>
+
diff --git a/test/cluster/servlet25/flash/basic/nbactions.xml b/test/cluster/servlet25/flash/basic/nbactions.xml
new file mode 100644
index 0000000..2864b88
--- /dev/null
+++ b/test/cluster/servlet25/flash/basic/nbactions.xml
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--><actions>
+    <action>
+        <actionName>debug.test.single</actionName>
+        <goals>
+            <goal>test-compile</goal>
+            <goal>surefire:test</goal>
+        </goals>
+        <properties>
+            <test>${packageClassName}</test>
+            <forkMode>once</forkMode>
+            <maven.surefire.debug>-Xdebug -Xrunjdwp:transport=dt_socket,server=n,address=${jpda.address}</maven.surefire.debug>
+            <jpda.listen>true</jpda.listen>
+            <integration.url>http://localhost:18080/test-cluster-servlet25-flash-basic/</integration.url>
+            <integration.url2>http://localhost:18080/test-cluster-servlet25-flash-basic/</integration.url2>
+        </properties>
+    </action>
+    <action>
+        <actionName>test.single</actionName>
+        <goals>
+            <goal>test-compile</goal>
+            <goal>surefire:test</goal>
+        </goals>
+        <properties>
+            <integration.url>http://localhost:18080/test-webprofile-cluster-flow-basic_faces_flow_call/</integration.url>
+            <integration.url2>http://localhost:28080/test-webprofile-cluster-flow-basic_faces_flow_call/</integration.url2>
+            <test>${packageClassName}</test>
+        </properties>
+    </action>
+</actions>
diff --git a/test/cluster/servlet25/flash/basic/pom.xml b/test/cluster/servlet25/flash/basic/pom.xml
new file mode 100644
index 0000000..4dfa447
--- /dev/null
+++ b/test/cluster/servlet25/flash/basic/pom.xml
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <artifactId>pom</artifactId>
+        <groupId>com.sun.faces.test.cluster.servlet25.flash</groupId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.cluster.servlet25.flash</groupId>
+    <artifactId>basic</artifactId>
+    <packaging>war</packaging>
+    <name>Mojarra ${project.version} - Test - Cluster - Servlet25 - Flash - Basic flash test</name>  
+    <build>
+        <finalName>test-cluster-servlet25-flash-basic</finalName>
+    </build>
+    <properties>
+        <netbeans.hint.deploy.server>gfv3ee6</netbeans.hint.deploy.server>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/test/cluster/servlet25/flash/basic/src/main/java/com/sun/faces/test/cluster/flash/basic/AddMessageBean.java b/test/cluster/servlet25/flash/basic/src/main/java/com/sun/faces/test/cluster/flash/basic/AddMessageBean.java
new file mode 100644
index 0000000..0c42ae1
--- /dev/null
+++ b/test/cluster/servlet25/flash/basic/src/main/java/com/sun/faces/test/cluster/flash/basic/AddMessageBean.java
@@ -0,0 +1,59 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.cluster.flash.basic;
+
+import java.io.Serializable;
+import javax.faces.application.FacesMessage;
+import javax.faces.bean.ManagedBean;
+import javax.faces.context.FacesContext;
+
+ at ManagedBean
+public class AddMessageBean implements Serializable {
+    
+    private static final long serialVersionUID = -8286877842021747622L;
+
+    public String addMessage() {
+        FacesContext.getCurrentInstance()
+              .addMessage(null, new FacesMessage("This is a global message"));
+        return "messagePage?faces-redirect=true";
+    }
+
+}
diff --git a/test/cluster/servlet25/flash/basic/src/main/java/com/sun/faces/test/cluster/flash/basic/FlashDropCookieBean.java b/test/cluster/servlet25/flash/basic/src/main/java/com/sun/faces/test/cluster/flash/basic/FlashDropCookieBean.java
new file mode 100644
index 0000000..52c0195
--- /dev/null
+++ b/test/cluster/servlet25/flash/basic/src/main/java/com/sun/faces/test/cluster/flash/basic/FlashDropCookieBean.java
@@ -0,0 +1,80 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.cluster.flash.basic;
+
+import java.io.Serializable;
+import javax.faces.application.FacesMessage;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.ManagedProperty;
+import javax.faces.bean.RequestScoped;
+import javax.faces.context.FacesContext;
+
+ at ManagedBean
+ at RequestScoped
+public class FlashDropCookieBean implements Serializable {
+    
+    private static final long serialVersionUID = -8825856563586964065L;
+
+    @ManagedProperty(value="#{facesContext}")
+    protected FacesContext facesContext;
+
+    public FacesContext getFacesContext() {
+        return facesContext;
+    }
+
+    public void setFacesContext(FacesContext facesContext) {
+        this.facesContext = facesContext;
+    }
+
+
+    protected String value;
+
+    public String getValue() {
+        return value;
+    }
+
+    public void setValue(String value) {
+        this.value = value;
+        FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO,
+                "Message 1", "we are showing the message, but the we are not accessing the flash");
+        getFacesContext().addMessage(null, message);
+    }
+}
diff --git a/test/cluster/servlet25/flash/basic/src/main/java/com/sun/faces/test/cluster/flash/basic/FlashMessagesBean.java b/test/cluster/servlet25/flash/basic/src/main/java/com/sun/faces/test/cluster/flash/basic/FlashMessagesBean.java
new file mode 100644
index 0000000..1f6446f
--- /dev/null
+++ b/test/cluster/servlet25/flash/basic/src/main/java/com/sun/faces/test/cluster/flash/basic/FlashMessagesBean.java
@@ -0,0 +1,87 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.cluster.flash.basic;
+
+import java.io.Serializable;
+import javax.faces.application.FacesMessage;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.ManagedProperty;
+import javax.faces.bean.RequestScoped;
+import javax.faces.context.FacesContext;
+
+ at ManagedBean
+ at RequestScoped
+public class FlashMessagesBean implements Serializable {
+    
+    private static final long serialVersionUID = 119534842073074733L;
+
+    @ManagedProperty(value="#{facesContext}")
+    protected FacesContext facesContext;
+
+    public FacesContext getFacesContext() {
+        return facesContext;
+    }
+
+    public void setFacesContext(FacesContext facesContext) {
+        this.facesContext = facesContext;
+    }
+
+
+    protected String value;
+
+    public String getValue() {
+        return value;
+    }
+
+    public void setValue(String value) {
+        this.value = value;
+        FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO,
+                "Mesage 1", "survives redirect");
+        getFacesContext().addMessage(null, message);
+        message = new FacesMessage(FacesMessage.SEVERITY_INFO,
+                "Mesage 2", "survives redirect");
+        getFacesContext().addMessage(null, message);
+        getFacesContext().getExternalContext().getFlash().setKeepMessages(true);
+
+    }
+
+
+}
diff --git a/test/cluster/servlet25/flash/basic/src/main/java/com/sun/faces/test/cluster/flash/issue2973/Bean.java b/test/cluster/servlet25/flash/basic/src/main/java/com/sun/faces/test/cluster/flash/issue2973/Bean.java
new file mode 100644
index 0000000..e0004e5
--- /dev/null
+++ b/test/cluster/servlet25/flash/basic/src/main/java/com/sun/faces/test/cluster/flash/issue2973/Bean.java
@@ -0,0 +1,81 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.test.cluster.flash.issue2973;
+
+import java.io.Serializable;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.faces.bean.ManagedBean;
+import javax.faces.context.FacesContext;
+
+ at ManagedBean(name="bean")
+public class Bean implements Serializable {
+    
+    private static final long serialVersionUID = -4183580262084818534L;
+    
+    private String text;
+    
+    public String getText() {
+        return text;
+    }
+    
+    public void setText(String text) {
+        this.text = text;
+    }
+    
+    public String nextpage (){
+        FacesContext.getCurrentInstance().getExternalContext().getFlash().put("bean", this);
+        return "page2?faces-redirect=true";
+    }
+    
+    public String simulateServerRestart() {
+        FacesContext context = FacesContext.getCurrentInstance();
+        context.getExternalContext().getApplicationMap().remove("csfcff");
+        try {
+            Thread.currentThread().sleep(3000);
+        } catch (InterruptedException ex) {
+            Logger.getLogger(Bean.class.getName()).log(Level.SEVERE, null, ex);
+        }
+        
+        return null;
+    }
+    
+}
diff --git a/test/cluster/servlet25/flash/basic/src/main/webapp/WEB-INF/glassfish-web.xml b/test/cluster/servlet25/flash/basic/src/main/webapp/WEB-INF/glassfish-web.xml
new file mode 100644
index 0000000..3b17756
--- /dev/null
+++ b/test/cluster/servlet25/flash/basic/src/main/webapp/WEB-INF/glassfish-web.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
+<glassfish-web-app error-url="">
+  <context-root>/test-cluster-servlet25-flash-basic</context-root>
+  <class-loader delegate="true"/>
+  <jsp-config>
+    <property name="keepgenerated" value="true">
+      <description>Keep a copy of the generated servlet class' java code.</description>
+    </property>
+  </jsp-config>
+  <session-config>
+    <session-manager persistence-type="replicated">
+      <manager-properties>
+        <property name="relaxCacheVersionSemantics" value="true"/>
+      </manager-properties>
+    </session-manager>
+  </session-config>
+</glassfish-web-app>
diff --git a/test/cluster/servlet25/flash/basic/src/main/webapp/WEB-INF/web.xml b/test/cluster/servlet25/flash/basic/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..4176189
--- /dev/null
+++ b/test/cluster/servlet25/flash/basic/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+    <distributable/>
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>${webapp.projectStage}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
+        <param-value>${webapp.partialStateSaving}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>${webapp.stateSavingMethod}</param-value>
+    </context-param>
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <welcome-file-list>
+        <welcome-file>faces/keepMessages.xhtml</welcome-file>
+    </welcome-file-list>
+    
+    <env-entry>
+        <env-entry-name>jsf/FlashSecretKey</env-entry-name>
+        <env-entry-type>java.lang.String</env-entry-type>
+        <!-- http://www.digitalsanctuary.com/aes-key-generator.php -->
+        <env-entry-value>YeMYsp5+BDTvzL6A5n40IusWI9E8Jqr9q/hk5GU53RE=</env-entry-value>
+    </env-entry>
+    <env-entry>
+        <env-entry-name>jsf/ClientSideSecretKey</env-entry-name>
+        <env-entry-type>java.lang.String</env-entry-type>
+        <!-- http://www.digitalsanctuary.com/aes-key-generator.php -->
+        <env-entry-value>vxI50oNETIH5iSsUPFBvzP0913W8fy8lwZ/LT6caXyI= </env-entry-value>
+    </env-entry>
+    
+    
+</web-app>
diff --git a/test/cluster/servlet25/flash/basic/src/main/webapp/WEB-INF/weblogic.xml b/test/cluster/servlet25/flash/basic/src/main/webapp/WEB-INF/weblogic.xml
new file mode 100644
index 0000000..3290939
--- /dev/null
+++ b/test/cluster/servlet25/flash/basic/src/main/webapp/WEB-INF/weblogic.xml
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+The contents of this file are subject to the terms of either the GNU
+General Public License Version 2 only ("GPL") or the Common Development
+and Distribution License("CDDL") (collectively, the "License").  You
+may not use this file except in compliance with the License.  You can
+obtain a copy of the License at
+https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+or packager/legal/LICENSE.txt.  See the License for the specific
+language governing permissions and limitations under the License.
+
+When distributing the software, include this License Header Notice in each
+file and include the License file at packager/legal/LICENSE.txt.
+
+GPL Classpath Exception:
+Oracle designates this particular file as subject to the "Classpath"
+exception as provided by Oracle in the GPL Version 2 section of the License
+file that accompanied this code.
+
+Modifications:
+If applicable, add the following below the License Header, with the fields
+enclosed by brackets [] replaced by your own identifying information:
+"Portions Copyright [year] [name of copyright owner]"
+
+Contributor(s):
+If you wish your version of this file to be governed by only the CDDL or
+only the GPL Version 2, indicate your decision by adding "[Contributor]
+elects to include this software in this distribution under the [CDDL or GPL
+Version 2] license."  If you don't indicate a single choice of license, a
+recipient has the option to distribute your version of this file under
+either the CDDL, the GPL Version 2 or to extend the choice of license to
+its licensees as provided above.  However, if you add GPL Version 2 code
+and therefore, elected the GPL Version 2 license, then the option applies
+only if the new code is made subject to such option by the copyright
+holder.
+
+-->
+
+
+<weblogic-web-app xmlns="http://www.bea.com/ns/weblogic/90"
+      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+      xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd http://www.bea.com/ns/weblogic/90 http://www.bea.com/ns/weblogic/90/weblogic-web-app.xsd">
+    <session-descriptor>
+        <sharing-enabled>true</sharing-enabled>
+        <debug-enabled>true</debug-enabled>
+        <persistent-store-type>replicated</persistent-store-type>   
+        <tracking-enabled>true</tracking-enabled>
+    </session-descriptor>
+
+</weblogic-web-app>
diff --git a/test/cluster/servlet25/flash/basic/src/main/webapp/flash01.xhtml b/test/cluster/servlet25/flash/basic/src/main/webapp/flash01.xhtml
new file mode 100644
index 0000000..804f30b
--- /dev/null
+++ b/test/cluster/servlet25/flash/basic/src/main/webapp/flash01.xhtml
@@ -0,0 +1,110 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:c="http://java.sun.com/jsp/jstl/core">
+	<h:head>
+		<title>flash 1</title>
+        <script type="text/javascript">
+            
+            var switchPort = function switchPort() {
+                var formAction = document['nextForm'].action;
+                if (-1 != formAction.indexOf("18080")) {
+                    document['nextForm'].action = formAction.replace("18080", "28080");
+                } else if (-1 != formAction.indexOf("28080")) {
+                    document['nextForm'].action = formAction.replace("28080", "18080");
+                } else if (formAction.charAt(0) == '/') {
+                    var loc = window.location;
+                    var otherPort = (loc.port == 18080) ? 28080 : 18080;
+                    var newActionUrl = loc.protocol + "//" + loc.hostname + ":" + otherPort + formAction;
+                    document['nextForm'].action = newActionUrl;
+                } else {
+                    throw new Error("This test assumes the port is either 18080 or 28080. formAction: " + formAction);
+                }
+                var actionUrlMessageDiv = document.getElementById("actionUrlMessage");
+                actionUrlMessageDiv.innerHTML = "<p>new actionUrl is " + document['nextForm'].action + ". </p>";
+            }
+            
+            
+        </script>
+                
+	</h:head>
+	
+	<h:body>
+            
+        <div id="actionUrlMessage"></div>
+            
+		<h:form id="nextForm" prependId="false">
+			<c:set target="#{flash}" property="foo" value="bar"/>
+			
+			<h:panelGrid id="trials" columns="1">
+				<h:button id="nextButton"
+						  value="Next (button)"
+						  outcome="flash02.xhtml">
+                                  <f:param name="foo" value="bar"/>
+                                </h:button>
+				<h:link id="nextLink"
+						value="Next (link)"
+						outcome="flash02.xhtml">
+                                  <f:param name="foo" value="bar"/>
+                                </h:link>
+				<h:commandLink id="nextCommandLink"
+						       action="flash02.xhtml"
+						       value="Next 
+(commandLink)"/>
+				<h:commandButton id="nextCommandButton"
+						         action="flash02.xhtml"
+						         value="Next 
+(commandButton)"/>
+			</h:panelGrid>
+		</h:form>
+        
+    <p><button id="switchPort" type="button" onclick="switchPort(); return false;">switchPort</button></p>
+        
+
+		<ui:debug/>
+	</h:body>
+</html>
diff --git a/test/cluster/servlet25/flash/basic/src/main/webapp/flash02.xhtml b/test/cluster/servlet25/flash/basic/src/main/webapp/flash02.xhtml
new file mode 100644
index 0000000..058524f
--- /dev/null
+++ b/test/cluster/servlet25/flash/basic/src/main/webapp/flash02.xhtml
@@ -0,0 +1,67 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC
+	"-//W3C//DTD XHTML 1.0 Strict//EN"
+	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:c="http://java.sun.com/jsp/jstl/core">
+
+<f:metadata>
+  <f:viewParam name="foo" id="foo" value="#{flash.now.foo}" />
+</f:metadata>
+
+	<h:head>
+		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+		<title>flash 2</title>
+	</h:head>
+	
+	<h:body>
+		foo = ${flash.foo}
+
+		<ui:debug/>
+	</h:body>
+</html>
diff --git a/test/cluster/servlet25/flash/basic/src/main/webapp/flashDropCookie.xhtml b/test/cluster/servlet25/flash/basic/src/main/webapp/flashDropCookie.xhtml
new file mode 100644
index 0000000..dd7186d
--- /dev/null
+++ b/test/cluster/servlet25/flash/basic/src/main/webapp/flashDropCookie.xhtml
@@ -0,0 +1,59 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:c="http://java.sun.com/jsp/jstl/core">
+    <h:head>
+        <title>Test that flash should drop the cookie</title>
+    </h:head>
+    <h:body>
+        <h:form prependId="false">
+            <c:set target="#{flash}" property="foo" value="bar"/>
+            <h:inputText id="input" value="#{flashDropCookieBean.value}" />
+            <h:commandButton id="submit" value="submit" action="flashDropCookie2"/>
+        </h:form>
+    </h:body>
+</html>
diff --git a/test/cluster/servlet25/flash/basic/src/main/webapp/flashDropCookie2.xhtml b/test/cluster/servlet25/flash/basic/src/main/webapp/flashDropCookie2.xhtml
new file mode 100644
index 0000000..4becb93
--- /dev/null
+++ b/test/cluster/servlet25/flash/basic/src/main/webapp/flashDropCookie2.xhtml
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title>Verify the cookie is set to be dropped</title>
+    </h:head>
+    <h:body>
+        <h:messages/>
+        <h:link id="link" value="Next page" outcome="flashDropCookie3"/>
+    </h:body>
+</html>
diff --git a/test/cluster/servlet25/flash/basic/src/main/webapp/flashDropCookie3.xhtml b/test/cluster/servlet25/flash/basic/src/main/webapp/flashDropCookie3.xhtml
new file mode 100644
index 0000000..f29495e
--- /dev/null
+++ b/test/cluster/servlet25/flash/basic/src/main/webapp/flashDropCookie3.xhtml
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title>Verify the cookie is set to be dropped</title>
+    </h:head>
+    <h:body>
+    </h:body>
+</html>
+
diff --git a/test/cluster/servlet25/flash/basic/src/main/webapp/flashKeepMessages01.xhtml b/test/cluster/servlet25/flash/basic/src/main/webapp/flashKeepMessages01.xhtml
new file mode 100644
index 0000000..e9194fb
--- /dev/null
+++ b/test/cluster/servlet25/flash/basic/src/main/webapp/flashKeepMessages01.xhtml
@@ -0,0 +1,59 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title>Test that flash shows multiple messages: issue 1476</title>
+    </h:head>
+    <h:body>
+        <h:form prependId="false">
+
+            <h:inputText value="#{flashMessagesBean.value}" />
+            <h:commandButton id="nextButton" value="submit" action="flashKeepMessages02?faces-redirect=true" />
+
+        </h:form>
+    </h:body>
+</html>
+
diff --git a/test/cluster/servlet25/flash/basic/src/main/webapp/flashKeepMessages02.xhtml b/test/cluster/servlet25/flash/basic/src/main/webapp/flashKeepMessages02.xhtml
new file mode 100644
index 0000000..7a92482
--- /dev/null
+++ b/test/cluster/servlet25/flash/basic/src/main/webapp/flashKeepMessages02.xhtml
@@ -0,0 +1,56 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title>Test that flash shows multiple messages: issue 1476</title>
+    </h:head>
+    <h:body>
+        <h:messages showDetail="true" showSummary="true"
+                    title="should have two messages"
+                    tooltip="should have two messages" />
+    </h:body>
+</html>
+
diff --git a/test/cluster/servlet25/flash/basic/src/main/webapp/issue2973/page1.xhtml b/test/cluster/servlet25/flash/basic/src/main/webapp/issue2973/page1.xhtml
new file mode 100644
index 0000000..7d38da8
--- /dev/null
+++ b/test/cluster/servlet25/flash/basic/src/main/webapp/issue2973/page1.xhtml
@@ -0,0 +1,20 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title>Facelet Title</title>
+    </h:head>
+    <h:body>
+        <h:form prependId="false">
+            <h:panelGrid>
+                <h:outputText value="Text:" />
+                <h:inputText id="input" value="#{bean.text}" />
+                <h:commandButton id="button" action="#{bean.nextpage}" value="Click" />
+                <h:commandButton id="restart" action="#{bean.simulateServerRestart}" value="Simulate server restart" />
+                                
+            </h:panelGrid>
+        </h:form>
+    </h:body>
+</html>
+
diff --git a/test/cluster/servlet25/flash/basic/src/main/webapp/issue2973/page2.xhtml b/test/cluster/servlet25/flash/basic/src/main/webapp/issue2973/page2.xhtml
new file mode 100644
index 0000000..2803653
--- /dev/null
+++ b/test/cluster/servlet25/flash/basic/src/main/webapp/issue2973/page2.xhtml
@@ -0,0 +1,12 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title>Facelet Title</title>
+    </h:head>
+    <h:body>
+        <p id="response">#{flash.bean.text}</p>
+    </h:body>
+</html>
+
diff --git a/test/cluster/servlet25/flash/basic/src/main/webapp/keepMessages.xhtml b/test/cluster/servlet25/flash/basic/src/main/webapp/keepMessages.xhtml
new file mode 100644
index 0000000..9762658
--- /dev/null
+++ b/test/cluster/servlet25/flash/basic/src/main/webapp/keepMessages.xhtml
@@ -0,0 +1,71 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML Basic 1.0//EN"
+      "http://www.w3.org/TR/xhtml-basic/xhtml-basic10.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:c="http://java.sun.com/jsp/jstl/core"
+      xmlns:f="http://java.sun.com/jsf/core">
+<f:view>
+    <h:head>
+        <meta http-equiv="Content-Type"
+              content="text/html; charset=ISO-8859-1"/>
+        <title>Keep Messages Test: first page</title>
+    </h:head>
+    <h:body>
+        <c:set target="#{flash}" property="keepMessages" value="true"/>
+
+        <h:form>
+            <h:commandButton value="Submit"
+                             action="#{addMessageBean.addMessage}" id="submit"/>
+        </h:form>
+
+        <h:form id="requiredForm">
+        	<h:inputText required="true" id="requiredInput"/>
+            <h:commandButton value="Submit"
+                             action="#{addMessageBean.addMessage}" id="submitRequired"/>
+        </h:form>
+    </h:body>
+</f:view>
+</html>
diff --git a/test/cluster/servlet25/flash/basic/src/main/webapp/messagePage.xhtml b/test/cluster/servlet25/flash/basic/src/main/webapp/messagePage.xhtml
new file mode 100644
index 0000000..aab8a63
--- /dev/null
+++ b/test/cluster/servlet25/flash/basic/src/main/webapp/messagePage.xhtml
@@ -0,0 +1,63 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML Basic 1.0//EN"
+      "http://www.w3.org/TR/xhtml-basic/xhtml-basic10.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:c="http://java.sun.com/jsp/jstl/core"
+      xmlns:f="http://java.sun.com/jsf/core">
+<f:view>
+    <h:head>
+        <meta http-equiv="Content-Type"
+              content="text/html; charset=ISO-8859-1"/>
+        <title>Keep Messages Test: second page</title>
+    </h:head>
+    <h:body>
+        <h:messages/>
+        <h:form id="form">
+            <h:commandButton id="button" value="Submit" />
+        </h:form>
+    </h:body>
+</f:view>
+</html>
diff --git a/test/cluster/servlet25/flash/basic/src/test/java/com/sun/faces/test/cluster/flash/basic/FlashClusterIT.java b/test/cluster/servlet25/flash/basic/src/test/java/com/sun/faces/test/cluster/flash/basic/FlashClusterIT.java
new file mode 100644
index 0000000..fcadb85
--- /dev/null
+++ b/test/cluster/servlet25/flash/basic/src/test/java/com/sun/faces/test/cluster/flash/basic/FlashClusterIT.java
@@ -0,0 +1,114 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.cluster.flash.basic;
+
+import com.gargoylesoftware.htmlunit.NicelyResynchronizingAjaxController;
+import com.gargoylesoftware.htmlunit.html.HtmlAnchor;
+import com.gargoylesoftware.htmlunit.html.HtmlButton;
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+import static org.junit.Assert.assertTrue;
+
+/**
+  *
+ */
+public class FlashClusterIT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+
+    // ------------------------------------------------------------ Test Methods
+
+
+    @Test
+    public void testButton() throws Exception {
+        webClient.setAjaxController(new NicelyResynchronizingAjaxController());
+        HtmlPage page = webClient.getPage(webUrl + "/faces/flash01.xhtml");
+        
+        HtmlButton switchPort = (HtmlButton) page.getElementById("switchPort");
+        page = switchPort.click();
+        
+        Thread.sleep(10000);
+        
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("nextCommandButton");
+        page = button.click();
+        String pageText = page.asXml();
+        assertTrue(pageText.contains("foo = bar"));
+
+
+    }
+    
+    @Test
+    public void testLink() throws Exception {
+        webClient.setAjaxController(new NicelyResynchronizingAjaxController());
+        HtmlPage page = webClient.getPage(webUrl + "/faces/flash01.xhtml");
+        
+        HtmlButton switchPort = (HtmlButton) page.getElementById("switchPort");
+        page = switchPort.click();
+        
+        Thread.sleep(10000);
+        
+        HtmlAnchor link = (HtmlAnchor) page.getElementById("nextCommandLink");
+        page = link.click();
+        String pageText = page.asXml();
+        assertTrue(pageText.contains("foo = bar"));
+
+
+    }
+    
+}
diff --git a/test/cluster/servlet25/flash/basic/src/test/java/com/sun/faces/test/cluster/flash/basic/FlashMessagesIT.java b/test/cluster/servlet25/flash/basic/src/test/java/com/sun/faces/test/cluster/flash/basic/FlashMessagesIT.java
new file mode 100644
index 0000000..6d67ad6
--- /dev/null
+++ b/test/cluster/servlet25/flash/basic/src/test/java/com/sun/faces/test/cluster/flash/basic/FlashMessagesIT.java
@@ -0,0 +1,90 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.cluster.flash.basic;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+import static org.junit.Assert.assertTrue;
+
+/**
+  *
+ */
+public class FlashMessagesIT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+
+    // ------------------------------------------------------------ Test Methods
+
+
+    /**
+     * Added for issue 1476.
+     */
+    @Test
+    public void testBooleanCheckboxSubmittedValue() throws Exception {
+
+        HtmlPage page = webClient.getPage(webUrl + "/faces/flashKeepMessages01.xhtml");
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("nextButton");
+        page = button.click();
+        String pageText = page.asText();
+        assertTrue(pageText.contains("Mesage 1 survives redirect"));
+        assertTrue(pageText.contains("Mesage 2 survives redirect"));
+
+
+    }
+}
diff --git a/test/cluster/servlet25/flash/basic/src/test/java/com/sun/faces/test/cluster/flash/basic/FlashViewParamIT.java b/test/cluster/servlet25/flash/basic/src/test/java/com/sun/faces/test/cluster/flash/basic/FlashViewParamIT.java
new file mode 100644
index 0000000..af6dad3
--- /dev/null
+++ b/test/cluster/servlet25/flash/basic/src/test/java/com/sun/faces/test/cluster/flash/basic/FlashViewParamIT.java
@@ -0,0 +1,106 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.cluster.flash.basic;
+
+import com.gargoylesoftware.htmlunit.util.Cookie;
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlAnchor;
+import com.gargoylesoftware.htmlunit.html.HtmlButtonInput;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.assertTrue;
+
+public class FlashViewParamIT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    /**
+     * Added for issue 904.
+     */
+    @Test
+    public void testBooleanCheckboxSubmittedValue() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "/faces/flash01.xhtml");
+        HtmlButtonInput button = (HtmlButtonInput) page.getElementById("nextButton");
+        page = button.click();
+        assertTrue(page.asText().contains("foo = bar"));
+
+        Cookie cookie = webClient.getCookieManager().getCookie("csfcfc");
+        assertTrue(cookie.isHttpOnly());
+
+        page = webClient.getPage(webUrl + "/faces/flash01.xhtml");
+        HtmlAnchor link = (HtmlAnchor) page.getElementById("nextLink");
+        page = link.click();
+        assertTrue(page.asText().contains("foo = bar"));
+
+        cookie = webClient.getCookieManager().getCookie("csfcfc");
+        assertTrue(cookie.isHttpOnly());
+
+        page = webClient.getPage(webUrl + "/faces/flash01.xhtml");
+        link = (HtmlAnchor) page.getElementById("nextCommandLink");
+        page = link.click();
+        assertTrue(page.asText().contains("foo = bar"));
+        
+        cookie = webClient.getCookieManager().getCookie("csfcfc");
+        assertTrue(cookie.isHttpOnly());
+
+        page = webClient.getPage(webUrl + "/faces/flash01.xhtml");
+        HtmlSubmitInput submitButton = (HtmlSubmitInput) page.getElementById("nextCommandButton");
+        page = submitButton.click();
+        assertTrue(page.asText().contains("foo = bar"));
+        
+        cookie = webClient.getCookieManager().getCookie("csfcfc");
+        assertTrue(cookie.isHttpOnly());
+    }
+}
diff --git a/test/cluster/servlet25/flash/basic/src/test/java/com/sun/faces/test/cluster/flash/basic/Issue2862IT.java b/test/cluster/servlet25/flash/basic/src/test/java/com/sun/faces/test/cluster/flash/basic/Issue2862IT.java
new file mode 100644
index 0000000..a4c7946
--- /dev/null
+++ b/test/cluster/servlet25/flash/basic/src/test/java/com/sun/faces/test/cluster/flash/basic/Issue2862IT.java
@@ -0,0 +1,87 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.cluster.flash.basic;
+
+import com.gargoylesoftware.htmlunit.html.HtmlElement;
+import org.junit.Test;
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
+import org.junit.After;
+import org.junit.Before;
+import static org.junit.Assert.assertTrue;
+
+public class Issue2862IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testDropFlashCookie() throws Exception {
+
+        HtmlPage page = webClient.getPage(webUrl + "faces/flashDropCookie.xhtml") ;
+        webClient.getOptions().setRedirectEnabled(true);
+        HtmlTextInput textInput = (HtmlTextInput) page.getHtmlElementById("input");
+        textInput.setValueAttribute("test");
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getHtmlElementById("submit");
+       
+        int currentSize = webClient.getCookieManager().getCookies().size();
+        
+        page = button.click();
+        HtmlElement element = page.getHtmlElementById("link");
+        page = element.click();
+        
+        int newSize = webClient.getCookieManager().getCookies().size();
+        
+        assertTrue( newSize < currentSize );
+    }
+}
diff --git a/test/cluster/servlet25/flash/basic/src/test/java/com/sun/faces/test/cluster/flash/basic/Issue2973IT.java b/test/cluster/servlet25/flash/basic/src/test/java/com/sun/faces/test/cluster/flash/basic/Issue2973IT.java
new file mode 100644
index 0000000..68ce019
--- /dev/null
+++ b/test/cluster/servlet25/flash/basic/src/test/java/com/sun/faces/test/cluster/flash/basic/Issue2973IT.java
@@ -0,0 +1,108 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.cluster.flash.basic;
+
+import com.gargoylesoftware.htmlunit.html.HtmlElement;
+import org.junit.Test;
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
+import org.junit.After;
+import org.junit.Before;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+public class Issue2973IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testServerRestartHandledGracefully() throws Exception {
+
+        HtmlPage page = webClient.getPage(webUrl + "faces/issue2973/page1.xhtml") ;
+        webClient.getOptions().setRedirectEnabled(true);
+        HtmlTextInput textInput = (HtmlTextInput) page.getElementById("input");
+        String message = "" + System.currentTimeMillis();
+        textInput.setValueAttribute(message);
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("button");
+        page = button.click();
+        HtmlElement value = (HtmlElement) page.getElementById("response");
+        
+        assertEquals(message, value.asText());
+        
+        webClient.getOptions().setThrowExceptionOnFailingStatusCode(false);
+        boolean assertionValue = false;
+        for (int i = 0; i < 3; i++) {
+            page = webClient.getPage(webUrl + "faces/issue2973/page1.xhtml") ;
+            button = (HtmlSubmitInput) page.getElementById("restart");
+            page = button.click();
+            Thread.sleep(3000);
+            
+            textInput = (HtmlTextInput) page.getElementById("input");
+            message = "" + System.currentTimeMillis();
+            textInput.setValueAttribute(message);
+            button = (HtmlSubmitInput) page.getElementById("button");
+            page = button.click();
+            value = (HtmlElement) page.getElementById("response");
+        
+            if (null != value) {
+                assertionValue = message.equals(value.asText());
+            }
+            if (assertionValue) {
+                break;
+            }
+        }
+        assertTrue(assertionValue);   
+        
+    }
+}
diff --git a/test/cluster/servlet25/flash/basic/src/test/java/com/sun/faces/test/cluster/flash/basic/KeepMessagesIT.java b/test/cluster/servlet25/flash/basic/src/test/java/com/sun/faces/test/cluster/flash/basic/KeepMessagesIT.java
new file mode 100644
index 0000000..b3b122b
--- /dev/null
+++ b/test/cluster/servlet25/flash/basic/src/test/java/com/sun/faces/test/cluster/flash/basic/KeepMessagesIT.java
@@ -0,0 +1,122 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.cluster.flash.basic;
+
+import org.junit.Test;
+import com.gargoylesoftware.htmlunit.WebClient;
+import java.io.IOException;
+
+
+import com.gargoylesoftware.htmlunit.html.HtmlInput;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import org.junit.After;
+import org.junit.Before;
+
+import static org.junit.Assert.assertTrue;
+
+public class KeepMessagesIT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+
+    // ------------------------------------------------------------ Test Methods
+
+    @Test
+    public void testMessagesAreKeptAfterRedirect() throws Exception {
+
+        HtmlPage page = webClient.getPage(webUrl + "/faces/keepMessages.xhtml") ;
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getByXPath("//input[contains(@id, 'submit')]").get(0);
+        page = button.click();
+
+        assertTrue(-1 != page.asText().indexOf("This is a global message"));
+
+        // submit the page again to make sure messages aren't re-displayed since
+        // keep messages isn't set to true on this view
+        button = (HtmlSubmitInput) page.getByXPath("//input[contains(@id, 'button')]").get(0);
+        page = button.click();
+
+        assertTrue(page.asText().indexOf("This is a global message") == -1);
+    }
+    
+    @Test
+    public void testMessagesAreKeptAfterRedirectAfterDoubleValidationError() throws Exception {
+    	
+    	HtmlPage page = webClient.getPage(webUrl + "/faces/keepMessages.xhtml") ;
+		page = submitRequiredForm(page);
+    	assertOnPage(page, "first page");
+    	
+    	page = submitRequiredForm(page);
+    	assertOnPage(page, "first page");
+    	
+    	HtmlInput requiredInput = (HtmlInput) page.getByXPath("//input[contains(@id, 'requiredInput')]").get(0);
+    	requiredInput.setValueAttribute("a value");
+    	
+    	page = submitRequiredForm(page);
+    	assertOnPage(page, "second page");
+    	
+    	assertTrue("FacesMessage should have survived redirect", page.asText().indexOf("This is a global message") != -1);
+    }
+
+
+	private void assertOnPage(HtmlPage page, String titleText) {
+		assertTrue(-1 != page.getTitleText().indexOf(titleText));
+	}
+
+
+	private HtmlPage submitRequiredForm(HtmlPage page) throws IOException {
+		HtmlSubmitInput button = (HtmlSubmitInput) page.getByXPath("//input[contains(@id, 'submitRequired')]").get(0);
+    	return button.click();
+	}
+
+}
diff --git a/test/cluster/servlet25/flash/pom.xml b/test/cluster/servlet25/flash/pom.xml
new file mode 100644
index 0000000..e7358a6
--- /dev/null
+++ b/test/cluster/servlet25/flash/pom.xml
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.cluster.servlet25</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.cluster.servlet25.flash</groupId>
+    <artifactId>pom</artifactId>
+    <packaging>pom</packaging>
+    <name>Mojarra ${project.version} - Test - Cluster - Servlet25 - Flash</name>
+    <modules>
+        <module>reaper</module>
+        <module>basic</module>
+    </modules>
+</project>
diff --git a/test/cluster/servlet25/flash/reaper/nbactions.xml b/test/cluster/servlet25/flash/reaper/nbactions.xml
new file mode 100644
index 0000000..6ae909d
--- /dev/null
+++ b/test/cluster/servlet25/flash/reaper/nbactions.xml
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--><actions>
+    <action>
+        <actionName>debug.test.single</actionName>
+        <goals>
+            <goal>test-compile</goal>
+            <goal>surefire:test</goal>
+        </goals>
+        <properties>
+            <test>${packageClassName}</test>
+            <forkMode>once</forkMode>
+            <maven.surefire.debug>-Xdebug -Xrunjdwp:transport=dt_socket,server=n,address=${jpda.address}</maven.surefire.debug>
+            <jpda.listen>true</jpda.listen>
+            <integration.url>http://localhost:18080/test-cluster-servlet25-flash-reaper/</integration.url>
+            <integration.url2>http://localhost:28080/test-cluster-servlet25-flash-reaper/</integration.url2>
+        </properties>
+    </action>
+    <action>
+        <actionName>test.single</actionName>
+        <goals>
+            <goal>test-compile</goal>
+            <goal>surefire:test</goal>
+        </goals>
+        <properties>
+            <integration.url>http://localhost:18080/test-cluster-servlet25-flash-reaper/</integration.url>
+            <integration.url2>http://localhost:28080/test-cluster-servlet25-flash-reaper/</integration.url2>
+            <test>${packageClassName}</test>
+        </properties>
+    </action>
+</actions>
diff --git a/test/cluster/servlet25/flash/reaper/pom.xml b/test/cluster/servlet25/flash/reaper/pom.xml
new file mode 100644
index 0000000..3396abf
--- /dev/null
+++ b/test/cluster/servlet25/flash/reaper/pom.xml
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <artifactId>pom</artifactId>
+        <groupId>com.sun.faces.test.cluster.servlet25.flash</groupId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.cluster.servlet25.flash</groupId>
+    <artifactId>reaper</artifactId>
+    <packaging>war</packaging>
+    <name>Mojarra ${project.version} - Test - Cluster - Servlet25 - Flash - Reaper</name>
+    <build>
+        <finalName>test-cluster-servlet25-flash-reaper</finalName>
+    </build>  
+</project>
diff --git a/test/cluster/servlet25/flash/reaper/src/main/java/com/sun/faces/test/cluster/servlet25/flash/reaper/FlashReaperBean.java b/test/cluster/servlet25/flash/reaper/src/main/java/com/sun/faces/test/cluster/servlet25/flash/reaper/FlashReaperBean.java
new file mode 100644
index 0000000..aa4fdc5
--- /dev/null
+++ b/test/cluster/servlet25/flash/reaper/src/main/java/com/sun/faces/test/cluster/servlet25/flash/reaper/FlashReaperBean.java
@@ -0,0 +1,73 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.cluster.servlet25.flash.reaper;
+
+import com.sun.faces.context.flash.ELFlash;
+import java.lang.reflect.Field;
+import java.util.Map;
+import javax.faces.bean.ApplicationScoped;
+import javax.faces.bean.ManagedBean;
+import javax.faces.context.FacesContext;
+
+ at ManagedBean(eager=true)
+ at ApplicationScoped
+public class FlashReaperBean {
+
+    public static final int NUMBER_OF_ZOMBIES = 12;
+
+    public  FlashReaperBean() {
+
+    }
+
+    public String getNumberEntriesInInnerMap() throws Exception {
+        String result = null;
+
+        ELFlash flash = (ELFlash) FacesContext.getCurrentInstance().getExternalContext().getFlash();
+        Field innerMapField = ELFlash.class.getDeclaredField("flashInnerMap");
+        innerMapField.setAccessible(true);
+        Map<String,Map<String, Object>> innerMap =
+                (Map<String,Map<String, Object>>) innerMapField.get(flash);
+        result = "" + innerMap.size();
+
+        return result;
+    }
+
+}
diff --git a/test/cluster/servlet25/flash/reaper/src/main/webapp/WEB-INF/glassfish-web.xml b/test/cluster/servlet25/flash/reaper/src/main/webapp/WEB-INF/glassfish-web.xml
new file mode 100644
index 0000000..8ba2fdf
--- /dev/null
+++ b/test/cluster/servlet25/flash/reaper/src/main/webapp/WEB-INF/glassfish-web.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
+<glassfish-web-app error-url="">
+  <context-root>/test-cluster-servlet25-flash-reaper</context-root>
+  <class-loader delegate="true"/>
+  <jsp-config>
+    <property name="keepgenerated" value="true">
+      <description>Keep a copy of the generated servlet class' java code.</description>
+    </property>
+  </jsp-config>
+  <session-config>
+    <session-manager persistence-type="replicated">
+      <manager-properties>
+        <property name="relaxCacheVersionSemantics" value="true"/>
+      </manager-properties>
+    </session-manager>
+  </session-config>
+</glassfish-web-app>
diff --git a/test/cluster/servlet25/flash/reaper/src/main/webapp/WEB-INF/web.xml b/test/cluster/servlet25/flash/reaper/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..1b7ba61
--- /dev/null
+++ b/test/cluster/servlet25/flash/reaper/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,89 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>${webapp.projectStage}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
+        <param-value>${webapp.partialStateSaving}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>${webapp.stateSavingMethod}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>com.sun.faces.numberOfFlashesBetweenFlashReapings</param-name>
+        <param-value>24</param-value>
+    </context-param>
+    <context-param>
+        <param-name>com.sun.faces.numberOfConcerrentFlashUsers</param-name>
+        <param-value>12</param-value>
+    </context-param>
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <welcome-file-list>
+        <welcome-file>faces/index.xhtml</welcome-file>
+    </welcome-file-list>
+    <distributable/>
+    <env-entry>
+        <env-entry-name>jsf/FlashSecretKey</env-entry-name>
+        <env-entry-type>java.lang.String</env-entry-type>
+        <!-- http://www.digitalsanctuary.com/aes-key-generator.php -->
+        <env-entry-value>YeMYsp5+BDTvzL6A5n40IusWI9E8Jqr9q/hk5GU53RE=</env-entry-value>
+    </env-entry>
+    <env-entry>
+        <env-entry-name>jsf/ClientSideSecretKey</env-entry-name>
+        <env-entry-type>java.lang.String</env-entry-type>
+        <!-- http://www.digitalsanctuary.com/aes-key-generator.php -->
+        <env-entry-value>vxI50oNETIH5iSsUPFBvzP0913W8fy8lwZ/LT6caXyI= </env-entry-value>
+    </env-entry>
+</web-app>
diff --git a/test/cluster/servlet25/flash/reaper/src/main/webapp/WEB-INF/weblogic.xml b/test/cluster/servlet25/flash/reaper/src/main/webapp/WEB-INF/weblogic.xml
new file mode 100644
index 0000000..3290939
--- /dev/null
+++ b/test/cluster/servlet25/flash/reaper/src/main/webapp/WEB-INF/weblogic.xml
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+The contents of this file are subject to the terms of either the GNU
+General Public License Version 2 only ("GPL") or the Common Development
+and Distribution License("CDDL") (collectively, the "License").  You
+may not use this file except in compliance with the License.  You can
+obtain a copy of the License at
+https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+or packager/legal/LICENSE.txt.  See the License for the specific
+language governing permissions and limitations under the License.
+
+When distributing the software, include this License Header Notice in each
+file and include the License file at packager/legal/LICENSE.txt.
+
+GPL Classpath Exception:
+Oracle designates this particular file as subject to the "Classpath"
+exception as provided by Oracle in the GPL Version 2 section of the License
+file that accompanied this code.
+
+Modifications:
+If applicable, add the following below the License Header, with the fields
+enclosed by brackets [] replaced by your own identifying information:
+"Portions Copyright [year] [name of copyright owner]"
+
+Contributor(s):
+If you wish your version of this file to be governed by only the CDDL or
+only the GPL Version 2, indicate your decision by adding "[Contributor]
+elects to include this software in this distribution under the [CDDL or GPL
+Version 2] license."  If you don't indicate a single choice of license, a
+recipient has the option to distribute your version of this file under
+either the CDDL, the GPL Version 2 or to extend the choice of license to
+its licensees as provided above.  However, if you add GPL Version 2 code
+and therefore, elected the GPL Version 2 license, then the option applies
+only if the new code is made subject to such option by the copyright
+holder.
+
+-->
+
+
+<weblogic-web-app xmlns="http://www.bea.com/ns/weblogic/90"
+      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+      xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd http://www.bea.com/ns/weblogic/90 http://www.bea.com/ns/weblogic/90/weblogic-web-app.xsd">
+    <session-descriptor>
+        <sharing-enabled>true</sharing-enabled>
+        <debug-enabled>true</debug-enabled>
+        <persistent-store-type>replicated</persistent-store-type>   
+        <tracking-enabled>true</tracking-enabled>
+    </session-descriptor>
+
+</weblogic-web-app>
diff --git a/jsf-ri/systest/web/flashReaper.xhtml b/test/cluster/servlet25/flash/reaper/src/main/webapp/flashReaper.xhtml
similarity index 100%
rename from jsf-ri/systest/web/flashReaper.xhtml
rename to test/cluster/servlet25/flash/reaper/src/main/webapp/flashReaper.xhtml
diff --git a/test/cluster/servlet25/flash/reaper/src/test/java/com/sun/faces/test/cluster/servlet25/flash/reaper/FlashReaperIT.java b/test/cluster/servlet25/flash/reaper/src/test/java/com/sun/faces/test/cluster/servlet25/flash/reaper/FlashReaperIT.java
new file mode 100644
index 0000000..82b7ad1
--- /dev/null
+++ b/test/cluster/servlet25/flash/reaper/src/test/java/com/sun/faces/test/cluster/servlet25/flash/reaper/FlashReaperIT.java
@@ -0,0 +1,117 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.cluster.servlet25.flash.reaper;
+
+import com.sun.faces.test.util.ClusterUtils;
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import java.net.URL;
+import java.net.URLConnection;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+import static org.junit.Assert.assertTrue;
+
+/**
+  *
+ */
+public class FlashReaperIT {
+
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+
+    // ------------------------------------------------------------ Test Methods
+
+
+    @Test
+    public void testFlashesAreReaped() throws Exception {
+        
+        doTestFlashesAreReaped(0);
+        doTestFlashesAreReaped(1);
+                
+    }
+    
+    public void doTestFlashesAreReaped(int instanceNumber) throws Exception {
+        
+        String [] baseUrls = ClusterUtils.getBaseUrls();
+
+        URL makeZombie = new URL(baseUrls[instanceNumber] + "faces/flashReaper.xhtml");
+        URLConnection zombieConnection;
+        HtmlPage page;
+        int numberOfReaps = 0, numberEntriesInInnerMap = 0;
+        boolean didReap = false;
+
+
+        for (int i = 0; i < 50; i++) {
+            zombieConnection = makeZombie.openConnection();
+            zombieConnection.getContent();
+            zombieConnection.getInputStream().close();
+            page = webClient.getPage(baseUrls[instanceNumber] + "faces/flashReaper.xhtml");
+
+            numberEntriesInInnerMap = Integer.parseInt(page.asText().trim());
+            // When we move across instance numbers as done in this test, the
+            // entries from the first instance are never reaped because 
+            // we are not interleaving requests to each instance number.
+            // Instead we are making N requests to instance1 and then N
+            // requests to instance2.  Therefore, consider the reaping
+            // boundary based on the instance number
+            if (numberEntriesInInnerMap <= 
+                ((1+instanceNumber)*FlashReaperBean.NUMBER_OF_ZOMBIES)) {
+                didReap = true;
+                numberOfReaps++;
+            }
+        }
+
+        assertTrue(didReap);
+        assertTrue(2 < numberOfReaps);
+    }
+}
diff --git a/test/cluster/servlet25/pom.xml b/test/cluster/servlet25/pom.xml
new file mode 100644
index 0000000..ee2e753
--- /dev/null
+++ b/test/cluster/servlet25/pom.xml
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" 
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.cluster</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.cluster.servlet25</groupId>
+    <artifactId>pom</artifactId>
+    <packaging>pom</packaging>
+    <name>Mojarra ${project.version} - Test - Cluster - Servlet25</name>
+    <modules>
+        <module>bytearrayguard</module>
+        <module>flash</module>
+    </modules>
+</project>
diff --git a/test/glassfish/bundle22/README.txt b/test/glassfish/bundle22/README.txt
new file mode 100644
index 0000000..8b4e10b
--- /dev/null
+++ b/test/glassfish/bundle22/README.txt
@@ -0,0 +1,3 @@
+This test exercises the deployment of a very simple JSF application that 
+has a JSF 2.2 jar file bundled in the application.  The application is deployed
+and the test simply visits the web page to verify the deployment succeeded.
diff --git a/test/glassfish/bundle22/pom.xml b/test/glassfish/bundle22/pom.xml
new file mode 100644
index 0000000..18632ef
--- /dev/null
+++ b/test/glassfish/bundle22/pom.xml
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.glassfish</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.glassfish</groupId>
+    <artifactId>bundle22</artifactId>
+    <packaging>war</packaging>
+    <name>Mojarra ${project.version} - Test - Glassfish - Bundle 2.2</name>
+    <build>
+        <finalName>test-glassfish-bundle22</finalName>
+    </build>
+    <dependencies>
+        <dependency>
+            <groupId>org.glassfish</groupId>
+            <artifactId>javax.faces</artifactId>
+            <version>2.2.6</version>
+            <scope>compile</scope>
+        </dependency>
+    </dependencies>
+    <properties>
+        <netbeans.hint.deploy.server>gfv3ee6</netbeans.hint.deploy.server>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/test/glassfish/bundle22/src/main/java/com/sun/faces/test/glassfish/bundle22/Bean.java b/test/glassfish/bundle22/src/main/java/com/sun/faces/test/glassfish/bundle22/Bean.java
new file mode 100644
index 0000000..f30ef1b
--- /dev/null
+++ b/test/glassfish/bundle22/src/main/java/com/sun/faces/test/glassfish/bundle22/Bean.java
@@ -0,0 +1,64 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.glassfish.bundle22;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.SessionScoped;
+import javax.faces.context.FacesContext;
+import javax.faces.event.ActionEvent;
+
+ at ManagedBean
+ at SessionScoped
+public class Bean {
+    String str = "";
+
+    public String getStr() {
+        return str;
+    }
+
+    public void setStr(String str) {
+        this.str = str;
+    }
+
+    public void submit(ActionEvent ae) {
+        str = "Bundled JSF Version: "+FacesContext.getCurrentInstance().getClass().getPackage().getImplementationVersion(); 
+    }
+}
diff --git a/test/glassfish/bundle22/src/main/webapp/WEB-INF/glassfish-web.xml b/test/glassfish/bundle22/src/main/webapp/WEB-INF/glassfish-web.xml
new file mode 100644
index 0000000..c53ca0e
--- /dev/null
+++ b/test/glassfish/bundle22/src/main/webapp/WEB-INF/glassfish-web.xml
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<glassfish-web-app error-url="">
+  <context-root>/test-glassfish-bundle22</context-root>
+  <class-loader delegate="false"/>
+  <property name="useBundledJsf" value="true"/>
+  <jsp-config>
+    <property name="keepgenerated" value="true">
+      <description>Keep a copy of the generated servlet class' java code.</description>
+    </property>
+  </jsp-config>
+</glassfish-web-app>
diff --git a/test/glassfish/bundle22/src/main/webapp/WEB-INF/web.xml b/test/glassfish/bundle22/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..9be8bb8
--- /dev/null
+++ b/test/glassfish/bundle22/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" 
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>${webapp.projectStage}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
+        <param-value>${webapp.partialStateSaving}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>${webapp.stateSavingMethod}</param-value>
+    </context-param>
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <session-config>
+        <session-timeout>30</session-timeout>
+    </session-config>
+    <welcome-file-list>
+        <welcome-file>faces/index.xhtml</welcome-file>
+    </welcome-file-list>
+</web-app>
diff --git a/test/glassfish/bundle22/src/main/webapp/simple.xhtml b/test/glassfish/bundle22/src/main/webapp/simple.xhtml
new file mode 100644
index 0000000..3bcc5cb
--- /dev/null
+++ b/test/glassfish/bundle22/src/main/webapp/simple.xhtml
@@ -0,0 +1,69 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+<f:view contentType="text/html"/>
+<h:head>
+    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
+    <title>Simple</title>
+</h:head>
+<h:body>
+    <h:form id="form1">    
+        <br/>
+        <br/>
+        Press the button:
+        <br/>
+        <br/>
+        <h:commandButton id="submit" value="submit" actionListener="#{bean.submit}"/>
+        <br/>
+        <br/>
+        #{bean.str}
+        <h:messages/>
+    </h:form>
+
+</h:body>
+</html>
diff --git a/test/glassfish/bundle22/src/test/java/com/sun/faces/test/glassfish/bundle22/Issue2984IT.java b/test/glassfish/bundle22/src/test/java/com/sun/faces/test/glassfish/bundle22/Issue2984IT.java
new file mode 100644
index 0000000..a045702
--- /dev/null
+++ b/test/glassfish/bundle22/src/test/java/com/sun/faces/test/glassfish/bundle22/Issue2984IT.java
@@ -0,0 +1,86 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDLGPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.glassfish.bundle22;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import com.sun.faces.test.junit.JsfTest;
+import com.sun.faces.test.junit.JsfTestRunner;
+import static com.sun.faces.test.junit.JsfVersion.JSF_2_2_0;
+import org.junit.After;
+import static org.junit.Assert.assertTrue;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+ at RunWith(JsfTestRunner.class)
+public class Issue2984IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    /**
+     * This test verifies the deployment of the application (containing a
+     * bundled JSF 2.2.6) deployed and is accessible.
+     * 
+     * @throws Exception when a serious error occurs.
+     */
+    @JsfTest(value=JSF_2_2_0)
+    @Test
+    public void testBundlingOtherJSFVersionInApp() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/simple.xhtml");
+        assertTrue(page.asText().contains("Press the button"));
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("form1:submit");
+        page = button.click();
+        assertTrue(page.asText().contains("Bundled JSF Version: 2.2.6"));
+    }
+}
diff --git a/test/glassfish/facelets/core/pom.xml b/test/glassfish/facelets/core/pom.xml
new file mode 100644
index 0000000..d2a26b3
--- /dev/null
+++ b/test/glassfish/facelets/core/pom.xml
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.glassfish.facelets</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.glassfish.facelets</groupId>
+    <artifactId>core</artifactId>
+    <packaging>war</packaging>
+    <name>Mojarra ${project.version} - Test - Glassfish - Facelets - Core</name>
+    <build>
+        <finalName>test-glassfish-facelets-core</finalName>
+    </build>
+    <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/test/glassfish/facelets/core/src/main/java/com/sun/faces/annotation/AnnotatedValidatorNoValue.java b/test/glassfish/facelets/core/src/main/java/com/sun/faces/annotation/AnnotatedValidatorNoValue.java
new file mode 100644
index 0000000..d837d87
--- /dev/null
+++ b/test/glassfish/facelets/core/src/main/java/com/sun/faces/annotation/AnnotatedValidatorNoValue.java
@@ -0,0 +1,64 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.annotation;
+
+import javax.faces.validator.Validator;
+import javax.faces.validator.ValidatorException;
+import javax.faces.validator.FacesValidator;
+import javax.faces.context.FacesContext;
+import javax.faces.component.UIComponent;
+
+ at FacesValidator
+public class AnnotatedValidatorNoValue implements Validator {
+    public void validate(FacesContext context,
+                         UIComponent component,
+                         Object value) throws ValidatorException {
+        return;
+    }
+
+    private String welcomeMessage ="AnnotatedValidatorNoValue";
+
+    public String getWelcomeMessage() {
+        return welcomeMessage;
+    }
+
+}
+
diff --git a/test/glassfish/facelets/core/src/main/java/com/sun/faces/test/glassfish/facelets/core/AnnotationTestBean.java b/test/glassfish/facelets/core/src/main/java/com/sun/faces/test/glassfish/facelets/core/AnnotationTestBean.java
new file mode 100644
index 0000000..1a9cc6d
--- /dev/null
+++ b/test/glassfish/facelets/core/src/main/java/com/sun/faces/test/glassfish/facelets/core/AnnotationTestBean.java
@@ -0,0 +1,111 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.glassfish.facelets.core;
+
+import java.util.Set;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.faces.FacesException;
+import javax.faces.application.Application;
+import javax.faces.context.FacesContext;
+import javax.faces.validator.Validator;
+
+import com.sun.faces.annotation.AnnotatedValidatorNoValue;
+
+public class AnnotationTestBean {
+    
+      public String getTestResult() {
+
+        try {
+            testAnnotatedComponentsWebInfClasses();
+            return Boolean.TRUE.toString();
+        } catch (Exception e) {
+            Logger.getAnonymousLogger().log(Level.SEVERE,
+                                            "AnnotationTestBean validation failure!",
+                                            e);
+            return Boolean.FALSE.toString();
+        }
+    }
+    
+    private void testAnnotatedComponentsWebInfClasses() throws Exception {
+        FacesContext ctx = FacesContext.getCurrentInstance();
+        Application app = ctx.getApplication();
+        Validator v = app.createValidator("annotatedValidatorNoValue");
+        
+        assertNotNull(v);
+        assertTrue(v instanceof AnnotatedValidatorNoValue);
+        Set<String> defaultValidatorIds = app.getDefaultValidatorInfo().keySet();
+        assertFalse(defaultValidatorIds.contains("AnnotatedValidatorNoValue"));
+        String welcomeMessage = ((AnnotatedValidatorNoValue)v).getWelcomeMessage();
+        assertTrue(welcomeMessage.equals("AnnotatedValidatorNoValue"));
+
+        boolean exceptionThrown = false;
+        v = null;
+        try {
+            v = app.createValidator("AnnotatedValidatorNoValue");
+        }
+        catch (FacesException fe) {
+            assertTrue(null == v);
+            exceptionThrown = true;
+        }
+        assertTrue(exceptionThrown);
+
+    } 
+    
+     private void assertNotNull(Object v) {
+        if (v == null) {
+            throw new RuntimeException();
+        }
+    }
+
+    private void assertTrue(boolean t) {
+        if (!t) {
+            throw new RuntimeException();
+        }
+    }
+
+    private void assertFalse(boolean t) {
+        if (t) {
+            throw new RuntimeException();
+        }
+    }
+
+}
diff --git a/test/glassfish/facelets/core/src/main/webapp/WEB-INF/faces-config.xml b/test/glassfish/facelets/core/src/main/webapp/WEB-INF/faces-config.xml
new file mode 100644
index 0000000..9b27015
--- /dev/null
+++ b/test/glassfish/facelets/core/src/main/webapp/WEB-INF/faces-config.xml
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
+    version="2.0">
+
+    <managed-bean>
+      <managed-bean-name>annotationTestBean</managed-bean-name>
+      <managed-bean-class>com.sun.faces.test.glassfish.facelets.core.AnnotationTestBean</managed-bean-class>
+      <managed-bean-scope>request</managed-bean-scope>
+  </managed-bean>  
+    
+</faces-config>
diff --git a/test/glassfish/facelets/core/src/main/webapp/WEB-INF/glassfish-web.xml b/test/glassfish/facelets/core/src/main/webapp/WEB-INF/glassfish-web.xml
new file mode 100644
index 0000000..ae537b8
--- /dev/null
+++ b/test/glassfish/facelets/core/src/main/webapp/WEB-INF/glassfish-web.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE glassfish-web-app PUBLIC 
+    "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" 
+    "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
+    
+<glassfish-web-app error-url="">
+    <context-root>/test-glassfish-faceslet-core</context-root>
+</glassfish-web-app>
diff --git a/test/glassfish/facelets/core/src/main/webapp/WEB-INF/web.xml b/test/glassfish/facelets/core/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..36e4924
--- /dev/null
+++ b/test/glassfish/facelets/core/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<web-app version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd">
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>${webapp.projectStage}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
+        <param-value>${webapp.partialStateSaving}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>${webapp.stateSavingMethod}</param-value>
+    </context-param>
+     
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <session-config>
+        <session-timeout>
+            30
+        </session-timeout>
+    </session-config>
+    <welcome-file-list>
+        <welcome-file>faces/annotationtest.xhtml</welcome-file>
+    </welcome-file-list>
+</web-app>
diff --git a/test/glassfish/facelets/core/src/main/webapp/annotationtest.xhtml b/test/glassfish/facelets/core/src/main/webapp/annotationtest.xhtml
new file mode 100644
index 0000000..630a3df
--- /dev/null
+++ b/test/glassfish/facelets/core/src/main/webapp/annotationtest.xhtml
@@ -0,0 +1,17 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    <head>
+        <title>Annotation Scanning Test Case</title>
+    </head>
+
+    <body>
+        <h:outputText value="#{request.servletContext.serverInfo}"/>
+        <h:outputText style="font-style: italic;"
+                      value="Test Passed: #{annotationTestBean.testResult}"/>
+
+    </body>
+</html>
+
diff --git a/test/glassfish/facelets/core/src/test/java/com/sun/faces/test/glassfish/facelets/core/AnnotatedComponentIT.java b/test/glassfish/facelets/core/src/test/java/com/sun/faces/test/glassfish/facelets/core/AnnotatedComponentIT.java
new file mode 100644
index 0000000..cf58b4a
--- /dev/null
+++ b/test/glassfish/facelets/core/src/test/java/com/sun/faces/test/glassfish/facelets/core/AnnotatedComponentIT.java
@@ -0,0 +1,74 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.glassfish.facelets.core;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+
+import static org.junit.Assert.assertTrue;
+
+public class AnnotatedComponentIT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testAnnotations() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "/faces/annotationtest.xhtml");
+
+        String pageText = page.getBody().asText();
+        assertTrue(pageText.contains("true"));
+    }
+}
diff --git a/test/glassfish/facelets/pom.xml b/test/glassfish/facelets/pom.xml
new file mode 100644
index 0000000..c29e3a8
--- /dev/null
+++ b/test/glassfish/facelets/pom.xml
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.glassfish</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.glassfish.facelets</groupId>
+    <artifactId>pom</artifactId>
+    <packaging>pom</packaging>
+    <name>Mojarra ${project.version} - Test - Glassfish - Facelets</name>
+    <modules>
+	<module>core</module>
+    </modules>
+</project>
+
diff --git a/test/glassfish/pom.xml b/test/glassfish/pom.xml
new file mode 100644
index 0000000..cde2083
--- /dev/null
+++ b/test/glassfish/pom.xml
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.glassfish</groupId>
+    <artifactId>pom</artifactId>
+    <packaging>pom</packaging>
+    <name>Mojarra ${project.version} - Test - Glassfish</name>
+    <dependencies>
+        <dependency>
+            <groupId>com.sun.faces.test</groupId>
+            <artifactId>util</artifactId>
+            <version>${project.version}</version>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>    
+    <modules>
+	<module>bundle22</module>
+        <module>facelets</module>
+        <module>request_char_encoding</module>
+	<module>request_char_encoding2</module>
+        <module>undeploy</module>
+    </modules>
+</project>
diff --git a/test/glassfish/request_char_encoding/nbactions.xml b/test/glassfish/request_char_encoding/nbactions.xml
new file mode 100644
index 0000000..951fd60
--- /dev/null
+++ b/test/glassfish/request_char_encoding/nbactions.xml
@@ -0,0 +1,148 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--><actions>
+        <action>
+            <actionName>debug.test.single</actionName>
+            <goals>
+                <goal>test-compile</goal>
+                <goal>surefire:test</goal>
+            </goals>
+            <properties>
+                <test>${packageClassName}</test>
+                <forkMode>once</forkMode>
+                <maven.surefire.debug>-Xdebug -Xrunjdwp:transport=dt_socket,server=n,address=${jpda.address}</maven.surefire.debug>
+                <jpda.listen>true</jpda.listen>
+                <project.build.finalName>test-glassfish-request_char_encoding</project.build.finalName>
+                <integration.serverPort>8080</integration.serverPort>
+                <integration.serverName>localhost</integration.serverName>
+                <integration.url>http://localhost:8080/test-glassfish-request_char_encoding/</integration.url>
+            </properties>
+        </action>
+        <action>
+            <actionName>test.single</actionName>
+            <goals>
+                <goal>test-compile</goal>
+                <goal>surefire:test</goal>
+            </goals>
+            <properties>
+                <project.build.finalName>test-glassfish-request_char_encoding</project.build.finalName>
+                <integration.serverPort>8080</integration.serverPort>
+                <integration.serverName>localhost</integration.serverName>
+                <integration.url>http://localhost:8080/test-glassfish-request_char_encoding/</integration.url>
+                <test>${packageClassName}</test>
+            </properties>
+        </action>
+    </actions>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--><actions>
+        <action>
+            <actionName>debug.test.single</actionName>
+            <goals>
+                <goal>test-compile</goal>
+                <goal>surefire:test</goal>
+            </goals>
+            <properties>
+                <test>${packageClassName}</test>
+                <forkMode>once</forkMode>
+                <maven.surefire.debug>-Xdebug -Xrunjdwp:transport=dt_socket,server=n,address=${jpda.address}</maven.surefire.debug>
+                <jpda.listen>true</jpda.listen>
+                <project.build.finalName>test-webprofile-lifecycle-request_char_encoding</project.build.finalName>
+                <integration.serverPort>8080</integration.serverPort>
+                <integration.serverName>localhost</integration.serverName>
+                <integration.url>http://localhost:8080/test-webprofile-lifecycle-request_char_encoding/</integration.url>
+            </properties>
+        </action>
+        <action>
+            <actionName>test.single</actionName>
+            <goals>
+                <goal>test-compile</goal>
+                <goal>surefire:test</goal>
+            </goals>
+            <properties>
+                <project.build.finalName>test-webprofile-lifecycle-request_char_encoding</project.build.finalName>
+                <integration.serverPort>8080</integration.serverPort>
+                <integration.serverName>localhost</integration.serverName>
+                <integration.url>http://localhost:8080/test-webprofile-lifecycle-request_char_encoding/</integration.url>
+                <test>${packageClassName}</test>
+            </properties>
+        </action>
+    </actions>
diff --git a/test/glassfish/request_char_encoding/pom.xml b/test/glassfish/request_char_encoding/pom.xml
new file mode 100644
index 0000000..7dae6ef
--- /dev/null
+++ b/test/glassfish/request_char_encoding/pom.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.glassfish</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.glassfish</groupId>
+    <artifactId>request_char_encoding</artifactId>
+    <packaging>war</packaging>
+    <name>Mojarra ${project.version} - Test - Glassfish - Request Character Encoding</name>
+    <build>
+        <finalName>test-glassfish-request_char_encoding</finalName>
+    </build>
+    <properties>
+        <netbeans.hint.deploy.server>gfv3ee6</netbeans.hint.deploy.server>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/test/glassfish/request_char_encoding/src/main/java/com/sun/faces/test/Bean.java b/test/glassfish/request_char_encoding/src/main/java/com/sun/faces/test/Bean.java
new file mode 100644
index 0000000..aff6186
--- /dev/null
+++ b/test/glassfish/request_char_encoding/src/main/java/com/sun/faces/test/Bean.java
@@ -0,0 +1,92 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.test;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.ViewScoped;
+import javax.faces.context.ExternalContext;
+import javax.faces.context.FacesContext;
+
+ at ManagedBean
+ at ViewScoped
+public class Bean implements Serializable {
+    
+    String valueFromQueryParamAtCtorTime;
+    
+    public Bean() {
+        ExternalContext extContext = FacesContext.getCurrentInstance().getExternalContext();
+        valueFromQueryParamAtCtorTime = extContext.getRequestParameterMap().get("pageWithViewScopedBean");
+        foos = new ArrayList<Foo>();
+        foos.add(new Foo("Shirley"));
+        foos.add(new Foo("Stan"));
+        foos.add(new Foo("Cole"));
+
+    }
+    
+    
+    public String getBob() { return "Bob created with param " + valueFromQueryParamAtCtorTime; }
+    
+    
+    List<Foo> foos;
+
+    public List<Foo> getFoos() {
+        return foos;
+    }
+
+    public void setFoos(List<Foo> foos) {
+        this.foos = foos;
+    }
+        
+    private Foo selectedFoo;
+
+    public Foo getSelectedFoo() {
+        return selectedFoo;
+    }
+
+    public void setSelectedFoo(Foo selectedFoo) {
+        this.selectedFoo = selectedFoo;
+    }
+    
+    
+}
diff --git a/test/glassfish/request_char_encoding/src/main/java/com/sun/faces/test/Foo.java b/test/glassfish/request_char_encoding/src/main/java/com/sun/faces/test/Foo.java
new file mode 100644
index 0000000..d1e8116
--- /dev/null
+++ b/test/glassfish/request_char_encoding/src/main/java/com/sun/faces/test/Foo.java
@@ -0,0 +1,85 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.test;
+
+import java.io.Serializable;
+
+public class Foo implements Serializable {
+    
+    private String name = "";
+
+    public Foo(String name) {
+        this.name = name;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (obj == null) {
+            return false;
+        }
+        if (getClass() != obj.getClass()) {
+            return false;
+        }
+        final Foo other = (Foo) obj;
+        if ((this.name == null) ? (other.name != null) : !this.name.equals(other.name)) {
+            return false;
+        }
+        return true;
+    }
+
+    @Override
+    public int hashCode() {
+        int hash = 5;
+        hash = 41 * hash + (this.name != null ? this.name.hashCode() : 0);
+        return hash;
+    }
+    
+    
+    
+}
diff --git a/test/glassfish/request_char_encoding/src/main/java/com/sun/faces/test/FooConverterBase.java b/test/glassfish/request_char_encoding/src/main/java/com/sun/faces/test/FooConverterBase.java
new file mode 100644
index 0000000..2681db7
--- /dev/null
+++ b/test/glassfish/request_char_encoding/src/main/java/com/sun/faces/test/FooConverterBase.java
@@ -0,0 +1,75 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.test;
+
+import java.util.logging.Logger;
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.convert.Converter;
+
+public class FooConverterBase implements Converter {
+    
+    public static final Logger LOGGER = Logger.getAnonymousLogger();
+
+    public FooConverterBase() {
+        LOGGER.info("FooConverter ctor");        
+    }
+    
+    @Override
+    public Object getAsObject(FacesContext context, UIComponent component, String value) {
+        Foo result = new Foo(value);
+        
+        return result;
+    }
+
+    @Override
+    public String getAsString(FacesContext context, UIComponent component, Object value) {
+        String result = "";
+        
+        if (null != value) {
+            result =  ((Foo)value).getName();
+        }
+        return result;
+    }
+    
+    
+    
+}
diff --git a/test/glassfish/request_char_encoding/src/main/java/com/sun/faces/test/FooConverterByClass.java b/test/glassfish/request_char_encoding/src/main/java/com/sun/faces/test/FooConverterByClass.java
new file mode 100644
index 0000000..aca6c42
--- /dev/null
+++ b/test/glassfish/request_char_encoding/src/main/java/com/sun/faces/test/FooConverterByClass.java
@@ -0,0 +1,48 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.test;
+
+import javax.faces.convert.FacesConverter;
+
+ at FacesConverter(forClass = com.sun.faces.test.Foo.class)
+public class FooConverterByClass extends FooConverterBase {
+    
+}
diff --git a/test/glassfish/request_char_encoding/src/main/java/com/sun/faces/test/FooConverterById.java b/test/glassfish/request_char_encoding/src/main/java/com/sun/faces/test/FooConverterById.java
new file mode 100644
index 0000000..c7022c9
--- /dev/null
+++ b/test/glassfish/request_char_encoding/src/main/java/com/sun/faces/test/FooConverterById.java
@@ -0,0 +1,49 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.test;
+
+import javax.faces.convert.FacesConverter;
+
+
+ at FacesConverter(value = "fooConverter")
+public class FooConverterById extends FooConverterBase {
+    
+}
diff --git a/test/glassfish/request_char_encoding/src/main/java/hello1/Hello.java b/test/glassfish/request_char_encoding/src/main/java/hello1/Hello.java
new file mode 100644
index 0000000..28d5522
--- /dev/null
+++ b/test/glassfish/request_char_encoding/src/main/java/hello1/Hello.java
@@ -0,0 +1,64 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package hello1;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.SessionScoped;
+
+ at ManagedBean
+ at SessionScoped
+public class Hello {
+
+    private String name;
+
+    public Hello() {
+    }
+
+    public String getName() { 
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+}
+
diff --git a/test/glassfish/request_char_encoding/src/main/webapp/WEB-INF/glassfish-web.xml b/test/glassfish/request_char_encoding/src/main/webapp/WEB-INF/glassfish-web.xml
new file mode 100644
index 0000000..0b6e1c6
--- /dev/null
+++ b/test/glassfish/request_char_encoding/src/main/webapp/WEB-INF/glassfish-web.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" 
+    "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
+
+<glassfish-web-app error-url="">
+  <locale-charset-info default-locale="">
+    <locale-charset-map charset="" locale=""/>
+    <parameter-encoding default-charset="UTF-8"/>
+  </locale-charset-info>
+</glassfish-web-app>
diff --git a/test/glassfish/request_char_encoding/src/main/webapp/WEB-INF/web.xml b/test/glassfish/request_char_encoding/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..93059b5
--- /dev/null
+++ b/test/glassfish/request_char_encoding/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<web-app version="3.0"
+         xmlns="http://java.sun.com/xml/ns/javaee"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>${webapp.projectStage}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
+        <param-value>${webapp.partialStateSaving}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>${webapp.stateSavingMethod}</param-value>
+    </context-param>
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <session-config>
+        <session-timeout>
+            30
+        </session-timeout>
+    </session-config>
+    <welcome-file-list>
+        <welcome-file>faces/index.xhtml</welcome-file>
+    </welcome-file-list>
+</web-app>
diff --git a/test/glassfish/request_char_encoding/src/main/webapp/duke.waving.gif b/test/glassfish/request_char_encoding/src/main/webapp/duke.waving.gif
new file mode 100644
index 0000000..6f7aa07
Binary files /dev/null and b/test/glassfish/request_char_encoding/src/main/webapp/duke.waving.gif differ
diff --git a/test/glassfish/request_char_encoding/src/main/webapp/index.xhtml b/test/glassfish/request_char_encoding/src/main/webapp/index.xhtml
new file mode 100644
index 0000000..389eee1
--- /dev/null
+++ b/test/glassfish/request_char_encoding/src/main/webapp/index.xhtml
@@ -0,0 +1,33 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html lang="en"
+      xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title>Facelets Hello Greeting</title>
+    </h:head>
+    <h:body>
+        <h:form prependId="false">
+            <h:graphicImage url="duke.waving.gif" alt="Duke waving his hand"/>
+            <h2>Hello, my name is Duke. What's yours?</h2>
+            <h:inputText id="username"
+                         title="My name is: "
+                         value="#{hello.name}"
+                         required="true"
+                         requiredMessage="Error: A name is required."
+                         maxlength="25" />
+            <p></p>
+            <h:commandButton id="submit" value="Submit" action="response">
+            </h:commandButton>
+            <h:commandButton id="reset" value="Reset" type="reset">
+            </h:commandButton>
+        </h:form>
+        <div class="messagecolor">
+            <h:messages showSummary="true" 
+                        showDetail="false"
+                        errorStyle="color: #d20005" 
+                        infoStyle="color: blue"/>
+        </div>
+    </h:body>
+</html>
diff --git a/test/glassfish/request_char_encoding/src/main/webapp/response.xhtml b/test/glassfish/request_char_encoding/src/main/webapp/response.xhtml
new file mode 100644
index 0000000..c7fac01
--- /dev/null
+++ b/test/glassfish/request_char_encoding/src/main/webapp/response.xhtml
@@ -0,0 +1,18 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html lang="en"
+      xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title>Facelets Hello Response</title>
+    </h:head>
+    <h:body>
+        <h:form>
+            <h:graphicImage url="duke.waving.gif" alt="Duke waving his hand"/>
+            <h2>Hello, #{hello.name}!</h2>
+            <p></p>
+            <h:commandButton id="back" value="Back" action="index" />
+        </h:form>
+    </h:body>
+</html>
diff --git a/test/glassfish/request_char_encoding/src/test/java/com/sun/faces/test/glassfish/request_char_encoding/Issue2217IT.java b/test/glassfish/request_char_encoding/src/test/java/com/sun/faces/test/glassfish/request_char_encoding/Issue2217IT.java
new file mode 100644
index 0000000..08fe61a
--- /dev/null
+++ b/test/glassfish/request_char_encoding/src/test/java/com/sun/faces/test/glassfish/request_char_encoding/Issue2217IT.java
@@ -0,0 +1,100 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDLGPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.glassfish.request_char_encoding;
+
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import static org.junit.Assert.assertTrue;
+
+public class Issue2217IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testJapanese() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl);
+        
+        String pageText = page.getBody().asText();
+        assertTrue(pageText.contains("Hello, my name is Duke. What's yours?"));
+
+        HtmlTextInput text = (HtmlTextInput) page.getElementById("username");
+        text.type("\u65E5");
+        
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("submit");
+        page = button.click();
+        
+        pageText = page.getBody().asText();
+        assertTrue(pageText.contains("\u65E5"));
+    }
+        
+    @Test
+    public void testHebrew() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl);
+        
+        String pageText = page.getBody().asText();
+        assertTrue(pageText.contains("Hello, my name is Duke. What's yours?"));
+
+        HtmlTextInput text = (HtmlTextInput) page.getElementById("username");
+        text.type("\u05D0");
+        
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("submit");
+        page = button.click();
+        
+        pageText = page.getBody().asText();
+        assertTrue(pageText.contains("\u05D0"));
+    }
+}
diff --git a/test/glassfish/request_char_encoding2/nbactions.xml b/test/glassfish/request_char_encoding2/nbactions.xml
new file mode 100644
index 0000000..35e170b
--- /dev/null
+++ b/test/glassfish/request_char_encoding2/nbactions.xml
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--><actions>
+        <action>
+            <actionName>debug.test.single</actionName>
+            <goals>
+                <goal>test-compile</goal>
+                <goal>surefire:test</goal>
+            </goals>
+            <properties>
+                <test>${packageClassName}</test>
+                <forkMode>once</forkMode>
+                <maven.surefire.debug>-Xdebug -Xrunjdwp:transport=dt_socket,server=n,address=${jpda.address}</maven.surefire.debug>
+                <jpda.listen>true</jpda.listen>
+                <project.build.finalName>test-webprofile-lifecycle-request_char_encoding2</project.build.finalName>
+                <integration.serverPort>8080</integration.serverPort>
+                <integration.serverName>localhost</integration.serverName>
+                <integration.url>http://localhost:8080/test-webprofile-lifecycle-request_char_encoding2/</integration.url>
+            </properties>
+        </action>
+        <action>
+            <actionName>test.single</actionName>
+            <goals>
+                <goal>test-compile</goal>
+                <goal>surefire:test</goal>
+            </goals>
+            <properties>
+                <project.build.finalName>test-webprofile-lifecycle-request_char_encoding2</project.build.finalName>
+                <integration.serverPort>8080</integration.serverPort>
+                <integration.serverName>localhost</integration.serverName>
+                <integration.url>http://localhost:8080/test-webprofile-lifecycle-request_char_encoding2/</integration.url>
+                <test>${packageClassName}</test>
+            </properties>
+        </action>
+    </actions>
diff --git a/test/glassfish/request_char_encoding2/pom.xml b/test/glassfish/request_char_encoding2/pom.xml
new file mode 100644
index 0000000..19d845d
--- /dev/null
+++ b/test/glassfish/request_char_encoding2/pom.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.glassfish</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.glassfish</groupId>
+    <artifactId>request_char_encoding2</artifactId>
+    <packaging>war</packaging>
+    <name>Mojarra ${project.version} - Test - Glassfish - Request Character Encoding #2</name>
+    <build>
+        <finalName>test-glassfish-request_char_encoding2</finalName>
+    </build>
+    <properties>
+        <netbeans.hint.deploy.server>gfv3ee6</netbeans.hint.deploy.server>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/test/glassfish/request_char_encoding2/src/main/java/com/sun/faces/test/Bean.java b/test/glassfish/request_char_encoding2/src/main/java/com/sun/faces/test/Bean.java
new file mode 100644
index 0000000..aff6186
--- /dev/null
+++ b/test/glassfish/request_char_encoding2/src/main/java/com/sun/faces/test/Bean.java
@@ -0,0 +1,92 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.test;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.ViewScoped;
+import javax.faces.context.ExternalContext;
+import javax.faces.context.FacesContext;
+
+ at ManagedBean
+ at ViewScoped
+public class Bean implements Serializable {
+    
+    String valueFromQueryParamAtCtorTime;
+    
+    public Bean() {
+        ExternalContext extContext = FacesContext.getCurrentInstance().getExternalContext();
+        valueFromQueryParamAtCtorTime = extContext.getRequestParameterMap().get("pageWithViewScopedBean");
+        foos = new ArrayList<Foo>();
+        foos.add(new Foo("Shirley"));
+        foos.add(new Foo("Stan"));
+        foos.add(new Foo("Cole"));
+
+    }
+    
+    
+    public String getBob() { return "Bob created with param " + valueFromQueryParamAtCtorTime; }
+    
+    
+    List<Foo> foos;
+
+    public List<Foo> getFoos() {
+        return foos;
+    }
+
+    public void setFoos(List<Foo> foos) {
+        this.foos = foos;
+    }
+        
+    private Foo selectedFoo;
+
+    public Foo getSelectedFoo() {
+        return selectedFoo;
+    }
+
+    public void setSelectedFoo(Foo selectedFoo) {
+        this.selectedFoo = selectedFoo;
+    }
+    
+    
+}
diff --git a/test/glassfish/request_char_encoding2/src/main/java/com/sun/faces/test/Foo.java b/test/glassfish/request_char_encoding2/src/main/java/com/sun/faces/test/Foo.java
new file mode 100644
index 0000000..d1e8116
--- /dev/null
+++ b/test/glassfish/request_char_encoding2/src/main/java/com/sun/faces/test/Foo.java
@@ -0,0 +1,85 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.test;
+
+import java.io.Serializable;
+
+public class Foo implements Serializable {
+    
+    private String name = "";
+
+    public Foo(String name) {
+        this.name = name;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (obj == null) {
+            return false;
+        }
+        if (getClass() != obj.getClass()) {
+            return false;
+        }
+        final Foo other = (Foo) obj;
+        if ((this.name == null) ? (other.name != null) : !this.name.equals(other.name)) {
+            return false;
+        }
+        return true;
+    }
+
+    @Override
+    public int hashCode() {
+        int hash = 5;
+        hash = 41 * hash + (this.name != null ? this.name.hashCode() : 0);
+        return hash;
+    }
+    
+    
+    
+}
diff --git a/test/glassfish/request_char_encoding2/src/main/java/com/sun/faces/test/FooConverterBase.java b/test/glassfish/request_char_encoding2/src/main/java/com/sun/faces/test/FooConverterBase.java
new file mode 100644
index 0000000..2681db7
--- /dev/null
+++ b/test/glassfish/request_char_encoding2/src/main/java/com/sun/faces/test/FooConverterBase.java
@@ -0,0 +1,75 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.test;
+
+import java.util.logging.Logger;
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.convert.Converter;
+
+public class FooConverterBase implements Converter {
+    
+    public static final Logger LOGGER = Logger.getAnonymousLogger();
+
+    public FooConverterBase() {
+        LOGGER.info("FooConverter ctor");        
+    }
+    
+    @Override
+    public Object getAsObject(FacesContext context, UIComponent component, String value) {
+        Foo result = new Foo(value);
+        
+        return result;
+    }
+
+    @Override
+    public String getAsString(FacesContext context, UIComponent component, Object value) {
+        String result = "";
+        
+        if (null != value) {
+            result =  ((Foo)value).getName();
+        }
+        return result;
+    }
+    
+    
+    
+}
diff --git a/test/glassfish/request_char_encoding2/src/main/java/com/sun/faces/test/FooConverterByClass.java b/test/glassfish/request_char_encoding2/src/main/java/com/sun/faces/test/FooConverterByClass.java
new file mode 100644
index 0000000..aca6c42
--- /dev/null
+++ b/test/glassfish/request_char_encoding2/src/main/java/com/sun/faces/test/FooConverterByClass.java
@@ -0,0 +1,48 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.test;
+
+import javax.faces.convert.FacesConverter;
+
+ at FacesConverter(forClass = com.sun.faces.test.Foo.class)
+public class FooConverterByClass extends FooConverterBase {
+    
+}
diff --git a/test/glassfish/request_char_encoding2/src/main/java/com/sun/faces/test/FooConverterById.java b/test/glassfish/request_char_encoding2/src/main/java/com/sun/faces/test/FooConverterById.java
new file mode 100644
index 0000000..c7022c9
--- /dev/null
+++ b/test/glassfish/request_char_encoding2/src/main/java/com/sun/faces/test/FooConverterById.java
@@ -0,0 +1,49 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.test;
+
+import javax.faces.convert.FacesConverter;
+
+
+ at FacesConverter(value = "fooConverter")
+public class FooConverterById extends FooConverterBase {
+    
+}
diff --git a/test/glassfish/request_char_encoding2/src/main/java/hello1/Hello.java b/test/glassfish/request_char_encoding2/src/main/java/hello1/Hello.java
new file mode 100644
index 0000000..28d5522
--- /dev/null
+++ b/test/glassfish/request_char_encoding2/src/main/java/hello1/Hello.java
@@ -0,0 +1,64 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package hello1;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.SessionScoped;
+
+ at ManagedBean
+ at SessionScoped
+public class Hello {
+
+    private String name;
+
+    public Hello() {
+    }
+
+    public String getName() { 
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+}
+
diff --git a/test/glassfish/request_char_encoding2/src/main/webapp/WEB-INF/glassfish-web.xml b/test/glassfish/request_char_encoding2/src/main/webapp/WEB-INF/glassfish-web.xml
new file mode 100644
index 0000000..8f151eb
--- /dev/null
+++ b/test/glassfish/request_char_encoding2/src/main/webapp/WEB-INF/glassfish-web.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
+<glassfish-web-app error-url="">
+  <locale-charset-info default-locale="">
+    <locale-charset-map charset="" locale=""/>
+    <parameter-encoding default-charset="US-ASCII"/>
+  </locale-charset-info>
+</glassfish-web-app>
diff --git a/test/glassfish/request_char_encoding2/src/main/webapp/WEB-INF/web.xml b/test/glassfish/request_char_encoding2/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..93059b5
--- /dev/null
+++ b/test/glassfish/request_char_encoding2/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<web-app version="3.0"
+         xmlns="http://java.sun.com/xml/ns/javaee"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>${webapp.projectStage}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
+        <param-value>${webapp.partialStateSaving}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>${webapp.stateSavingMethod}</param-value>
+    </context-param>
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <session-config>
+        <session-timeout>
+            30
+        </session-timeout>
+    </session-config>
+    <welcome-file-list>
+        <welcome-file>faces/index.xhtml</welcome-file>
+    </welcome-file-list>
+</web-app>
diff --git a/test/glassfish/request_char_encoding2/src/main/webapp/duke.waving.gif b/test/glassfish/request_char_encoding2/src/main/webapp/duke.waving.gif
new file mode 100644
index 0000000..4336a2d
Binary files /dev/null and b/test/glassfish/request_char_encoding2/src/main/webapp/duke.waving.gif differ
diff --git a/test/glassfish/request_char_encoding2/src/main/webapp/index.xhtml b/test/glassfish/request_char_encoding2/src/main/webapp/index.xhtml
new file mode 100644
index 0000000..389eee1
--- /dev/null
+++ b/test/glassfish/request_char_encoding2/src/main/webapp/index.xhtml
@@ -0,0 +1,33 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html lang="en"
+      xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title>Facelets Hello Greeting</title>
+    </h:head>
+    <h:body>
+        <h:form prependId="false">
+            <h:graphicImage url="duke.waving.gif" alt="Duke waving his hand"/>
+            <h2>Hello, my name is Duke. What's yours?</h2>
+            <h:inputText id="username"
+                         title="My name is: "
+                         value="#{hello.name}"
+                         required="true"
+                         requiredMessage="Error: A name is required."
+                         maxlength="25" />
+            <p></p>
+            <h:commandButton id="submit" value="Submit" action="response">
+            </h:commandButton>
+            <h:commandButton id="reset" value="Reset" type="reset">
+            </h:commandButton>
+        </h:form>
+        <div class="messagecolor">
+            <h:messages showSummary="true" 
+                        showDetail="false"
+                        errorStyle="color: #d20005" 
+                        infoStyle="color: blue"/>
+        </div>
+    </h:body>
+</html>
diff --git a/test/glassfish/request_char_encoding2/src/main/webapp/response.xhtml b/test/glassfish/request_char_encoding2/src/main/webapp/response.xhtml
new file mode 100644
index 0000000..c7fac01
--- /dev/null
+++ b/test/glassfish/request_char_encoding2/src/main/webapp/response.xhtml
@@ -0,0 +1,18 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html lang="en"
+      xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title>Facelets Hello Response</title>
+    </h:head>
+    <h:body>
+        <h:form>
+            <h:graphicImage url="duke.waving.gif" alt="Duke waving his hand"/>
+            <h2>Hello, #{hello.name}!</h2>
+            <p></p>
+            <h:commandButton id="back" value="Back" action="index" />
+        </h:form>
+    </h:body>
+</html>
diff --git a/test/glassfish/request_char_encoding2/src/test/java/com/sun/faces/test/glassfish/request_char_encoding2/Issue2217IT.java b/test/glassfish/request_char_encoding2/src/test/java/com/sun/faces/test/glassfish/request_char_encoding2/Issue2217IT.java
new file mode 100644
index 0000000..e9d53eb
--- /dev/null
+++ b/test/glassfish/request_char_encoding2/src/test/java/com/sun/faces/test/glassfish/request_char_encoding2/Issue2217IT.java
@@ -0,0 +1,106 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDLGPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.glassfish.request_char_encoding2;
+
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.assertFalse;
+
+/*
+ * Because the glassfish-web.xml sets the requestencoding to US-ASCII, the
+ * UTF-8 characters will not be processed correctly.
+ */
+public class Issue2217IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testJapanese() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl);
+        
+        String str = page.getBody().asText();
+        assertTrue(str.contains("Hello, my name is Duke. What's yours?"));
+
+        HtmlTextInput text = (HtmlTextInput) page.getElementById("username");
+        text.type("\u65E5");
+        
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("submit");
+        page = button.click();
+        
+        str = page.asXml();
+        assertFalse(str.contains("\u65E5"));    
+    }
+        
+    @Test
+    public void testHebrew() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl);
+        
+        String pageText = page.getBody().asText();
+        assertTrue(pageText.contains("Hello, my name is Duke. What's yours?"));
+
+        HtmlTextInput text = (HtmlTextInput) page.getElementById("username");
+        text.type("\u05D0");
+        
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("submit");
+        page = button.click();
+        
+        pageText = page.getBody().asText();
+        assertFalse(pageText.contains("\u05D0"));   
+    }
+}
diff --git a/test/glassfish/undeploy/pom.xml b/test/glassfish/undeploy/pom.xml
new file mode 100644
index 0000000..affc194
--- /dev/null
+++ b/test/glassfish/undeploy/pom.xml
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.glassfish</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.glassfish.undeploy</groupId>
+    <artifactId>pom</artifactId>
+    <packaging>pom</packaging>
+    <name>Mojarra ${project.version} - Test - Glassfish - Undeploy</name>
+    <modules>
+        <module>undeploy1</module>
+        <module>undeploy2</module>
+    </modules>
+</project>
diff --git a/test/glassfish/undeploy/undeploy1/pom.xml b/test/glassfish/undeploy/undeploy1/pom.xml
new file mode 100644
index 0000000..8169f6c
--- /dev/null
+++ b/test/glassfish/undeploy/undeploy1/pom.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.glassfish.undeploy</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.glassfish.undeploy</groupId>
+    <artifactId>undeploy1</artifactId>
+    <packaging>war</packaging>
+    <name>Mojarra ${project.version} - Test - Glassfish - Undeploy - Undeploy #1</name>
+    <build>
+        <finalName>test-glassfish-undeploy-undeploy1</finalName>
+    </build>
+    <properties>
+        <netbeans.hint.deploy.server>gfv3ee6</netbeans.hint.deploy.server>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/test/glassfish/undeploy/undeploy1/src/main/webapp/WEB-INF/glassfish-web.xml b/test/glassfish/undeploy/undeploy1/src/main/webapp/WEB-INF/glassfish-web.xml
new file mode 100644
index 0000000..f04741d
--- /dev/null
+++ b/test/glassfish/undeploy/undeploy1/src/main/webapp/WEB-INF/glassfish-web.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE glassfish-web-app PUBLIC 
+    "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" 
+    "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
+    
+<glassfish-web-app error-url="">
+    <context-root>/test-glassfish-undeploy-undeploy1</context-root>
+    <class-loader delegate="true"/>
+    <jsp-config>
+        <property name="keepgenerated" value="true">
+            <description>Keep a copy of the generated servlet class' java code.</description>
+        </property>
+    </jsp-config>
+</glassfish-web-app>
diff --git a/test/glassfish/undeploy/undeploy1/src/main/webapp/WEB-INF/web.xml b/test/glassfish/undeploy/undeploy1/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..af53a6d
--- /dev/null
+++ b/test/glassfish/undeploy/undeploy1/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" 
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>${webapp.projectStage}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
+        <param-value>${webapp.partialStateSaving}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>${webapp.stateSavingMethod}</param-value>
+    </context-param>
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <session-config>
+        <session-timeout>30</session-timeout>
+    </session-config>
+    <welcome-file-list>
+        <welcome-file>faces/index.xhtml</welcome-file>
+    </welcome-file-list>
+</web-app>
diff --git a/test/glassfish/undeploy/undeploy1/src/main/webapp/index.xhtml b/test/glassfish/undeploy/undeploy1/src/main/webapp/index.xhtml
new file mode 100644
index 0000000..f87d893
--- /dev/null
+++ b/test/glassfish/undeploy/undeploy1/src/main/webapp/index.xhtml
@@ -0,0 +1,13 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title>Undeploy #1</title>
+    </h:head>
+    <h:body>
+        Undeploy #1 is active!
+    </h:body>
+</html>
diff --git a/test/glassfish/undeploy/undeploy2/pom.xml b/test/glassfish/undeploy/undeploy2/pom.xml
new file mode 100644
index 0000000..e9e29bb
--- /dev/null
+++ b/test/glassfish/undeploy/undeploy2/pom.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.glassfish.undeploy</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.glassfish.undeploy</groupId>
+    <artifactId>undeploy2</artifactId>
+    <packaging>war</packaging>
+    <name>Mojarra ${project.version} - Test - Glassfish - Undeploy - Undeploy #2</name>
+    <build>
+        <finalName>test-glassfish-undeploy-undeploy2</finalName>
+    </build>
+    <properties>
+        <netbeans.hint.deploy.server>gfv3ee6</netbeans.hint.deploy.server>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/test/glassfish/undeploy/undeploy2/src/main/java/com/sun/faces/test/glassfish/undeploy/undeploy2/CountBean.java b/test/glassfish/undeploy/undeploy2/src/main/java/com/sun/faces/test/glassfish/undeploy/undeploy2/CountBean.java
new file mode 100644
index 0000000..d8d9d07
--- /dev/null
+++ b/test/glassfish/undeploy/undeploy2/src/main/java/com/sun/faces/test/glassfish/undeploy/undeploy2/CountBean.java
@@ -0,0 +1,50 @@
+/*
+ * To change this template, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package com.sun.faces.test.glassfish.undeploy.undeploy2;
+
+import java.lang.reflect.Field;
+import java.util.concurrent.ConcurrentHashMap;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.RequestScoped;
+import javax.faces.context.FacesContext;
+
+ at ManagedBean(name = "countBean")
+ at RequestScoped
+public class CountBean {
+
+    /**
+     * Get the count.
+     *
+     * @return the count.
+     */
+    public Integer getCount() {
+        Integer result = 0;
+
+        try {
+            ConcurrentHashMap threadInitContext;
+            Field threadMap = FacesContext.class.getDeclaredField("threadInitContext");
+            threadMap.setAccessible(true);
+            threadInitContext = (ConcurrentHashMap) threadMap.get(null);
+
+            if (threadInitContext != null) {
+                result += threadInitContext.size();
+            }
+
+            ConcurrentHashMap initContextServletContext;
+            Field initContextMap = FacesContext.class.getDeclaredField("initContextServletContext");
+            initContextMap.setAccessible(true);
+            initContextServletContext = (ConcurrentHashMap) initContextMap.get(null);
+            
+            if (initContextServletContext != null) {
+                result += initContextServletContext.size();
+            }
+
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+        return result;
+    }
+}
diff --git a/test/glassfish/undeploy/undeploy2/src/main/webapp/WEB-INF/glassfish-web.xml b/test/glassfish/undeploy/undeploy2/src/main/webapp/WEB-INF/glassfish-web.xml
new file mode 100644
index 0000000..39b70e4
--- /dev/null
+++ b/test/glassfish/undeploy/undeploy2/src/main/webapp/WEB-INF/glassfish-web.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
+<glassfish-web-app error-url="">
+  <context-root>/test-glassfish-undeploy-undeploy2</context-root>
+  <class-loader delegate="true"/>
+  <jsp-config>
+    <property name="keepgenerated" value="true">
+      <description>Keep a copy of the generated servlet class' java code.</description>
+    </property>
+  </jsp-config>
+</glassfish-web-app>
diff --git a/test/glassfish/undeploy/undeploy2/src/main/webapp/WEB-INF/web.xml b/test/glassfish/undeploy/undeploy2/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..af53a6d
--- /dev/null
+++ b/test/glassfish/undeploy/undeploy2/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" 
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>${webapp.projectStage}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
+        <param-value>${webapp.partialStateSaving}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>${webapp.stateSavingMethod}</param-value>
+    </context-param>
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <session-config>
+        <session-timeout>30</session-timeout>
+    </session-config>
+    <welcome-file-list>
+        <welcome-file>faces/index.xhtml</welcome-file>
+    </welcome-file-list>
+</web-app>
diff --git a/test/glassfish/undeploy/undeploy2/src/main/webapp/count.xhtml b/test/glassfish/undeploy/undeploy2/src/main/webapp/count.xhtml
new file mode 100644
index 0000000..14f6d1e
--- /dev/null
+++ b/test/glassfish/undeploy/undeploy2/src/main/webapp/count.xhtml
@@ -0,0 +1,14 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title></title>
+    </h:head>
+    <h:body>
+        #{countBean.count}
+    </h:body>
+</html>
diff --git a/test/glassfish/undeploy/undeploy2/src/main/webapp/index.xhtml b/test/glassfish/undeploy/undeploy2/src/main/webapp/index.xhtml
new file mode 100644
index 0000000..10673bb
--- /dev/null
+++ b/test/glassfish/undeploy/undeploy2/src/main/webapp/index.xhtml
@@ -0,0 +1,13 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title>Undeploy #2</title>
+    </h:head>
+    <h:body>
+        Undeploy #2 is active!
+    </h:body>
+</html>
diff --git a/test/glassfish/undeploy/undeploy2/src/test/java/com/sun/faces/test/glassfish/undeploy/undeploy2/Issue2398IT.java b/test/glassfish/undeploy/undeploy2/src/test/java/com/sun/faces/test/glassfish/undeploy/undeploy2/Issue2398IT.java
new file mode 100644
index 0000000..0f92f6b
--- /dev/null
+++ b/test/glassfish/undeploy/undeploy2/src/test/java/com/sun/faces/test/glassfish/undeploy/undeploy2/Issue2398IT.java
@@ -0,0 +1,117 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.glassfish.undeploy.undeploy2;
+
+import com.gargoylesoftware.htmlunit.FailingHttpStatusCodeException;
+import com.gargoylesoftware.htmlunit.HttpMethod;
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.WebRequest;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import java.net.URL;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class Issue2398IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+        webClient.setJavaScriptEnabled(true);
+        webClient.setJavaScriptTimeout(60000);
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    /**
+     * Test for issue #2398.
+     *
+     * 1. Test if the undeploy #1 application is active. 2. Test if the undeploy
+     * #2 application is active. 3. Get the number of active InitFacesContexts.
+     * 4. Undeploy 'undeploy #1' 5. Verify the number of active
+     * InitFacesContexts stayed the same.
+     *
+     * @throws Exception when a serious error occurs.
+     */
+    @Test
+    public void testIssue2398() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl.substring(0, webUrl.length() - 2) + "2/faces/index.xhtml");
+
+        if (!(page.getWebResponse().getResponseHeaderValue("Server").equals("GlassFish Server Open Source Edition  4.0"))) {
+            page = webClient.getPage(webUrl + "faces/index.xhtml");
+
+            page = webClient.getPage(webUrl.substring(0, webUrl.length() - 2) + "1/faces/index.xhtml");
+            assertTrue(page.asText().indexOf("Undeploy #1 is active!") != -1);
+
+            page = webClient.getPage(webUrl + "faces/index.xhtml");
+            assertTrue(page.asText().indexOf("Undeploy #2 is active!") != -1);
+
+            page = webClient.getPage(webUrl + "faces/count.xhtml");
+            Integer count = new Integer(page.asText().trim());
+
+            WebRequest webRequest = new WebRequest(
+                    new URL("http://localhost:4848/management/domain/applications/application/test-glassfish-undeploy-undeploy1"),
+                    HttpMethod.DELETE);
+            webRequest.setAdditionalHeader("X-Requested-By", "127.0.0.1");
+            webClient.getPage(webRequest);
+
+            try {
+                webClient.setPrintContentOnFailingStatusCode(false);
+                webClient.getPage(webUrl.substring(0, webUrl.length() - 2) + "1/faces/index.xhtml");
+                fail("Undeploy #1 is active!");
+            } catch (FailingHttpStatusCodeException exception) {
+                assertEquals(404, exception.getStatusCode());
+                webClient.setPrintContentOnFailingStatusCode(true);
+            }
+
+            page = webClient.getPage(webUrl + "faces/count.xhtml");
+            Integer newCount = new Integer(page.asText().trim());
+            assertTrue(count.intValue() >= newCount.intValue());
+        }
+    }
+}
diff --git a/test/groovy/basic/nbactions.xml b/test/groovy/basic/nbactions.xml
new file mode 100644
index 0000000..53e7771
--- /dev/null
+++ b/test/groovy/basic/nbactions.xml
@@ -0,0 +1,163 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--><actions>
+        <action>
+            <actionName>debug.test.single</actionName>
+            <goals>
+                <goal>test-compile</goal>
+                <goal>surefire:test</goal>
+            </goals>
+            <properties>
+                <test>test-basic</test>
+                <forkMode>once</forkMode>
+                <maven.surefire.debug>-Xdebug -Xrunjdwp:transport=dt_socket,server=n,address=${jpda.address}</maven.surefire.debug>
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                <jpda.listen>true</jpda.listen>
+                <project.build.finalName>test-groovy-basic</project.build.finalName>
+                <webapp.projectStage>Development</webapp.projectStage>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                <integration.serverPort>8080</integration.serverPort>
+                <integration.serverName>localhost</integration.serverName>
+                <integration.url>http://localhost:8080/test-groovy-basic/</integration.url>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+            </properties>
+        </action>
+        <action>
+            <actionName>test.single</actionName>
+            <goals>
+                <goal>test-compile</goal>
+                <goal>surefire:test</goal>
+            </goals>
+            <properties>
+                <project.build.finalName>test-groovy-basic</project.build.finalName>
+                <integration.serverPort>8080</integration.serverPort>
+                <integration.serverName>localhost</integration.serverName>
+                <integration.url>http://localhost:8080/test-groovy-basic/</integration.url>
+                <test>test-basic</test>
+            </properties>
+        </action>
+        <action>
+            <actionName>build</actionName>
+            <goals>
+                <goal>install</goal>
+            </goals>
+            <properties>
+                <webapp.projectStage>Development</webapp.projectStage>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+            </properties>
+        </action>
+        <action>
+            <actionName>rebuild</actionName>
+            <goals>
+                <goal>clean</goal>
+                <goal>install</goal>
+            </goals>
+            <properties>
+                
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                
+                <webapp.projectStage>Development</webapp.projectStage>
+                
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                
+            </properties>
+        </action>
+        <action>
+            <actionName>build-with-dependencies</actionName>
+            <reactor>also-make</reactor>
+            <goals>
+                <goal>install</goal>
+            </goals>
+            <properties>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                <webapp.projectStage>Development</webapp.projectStage>
+            </properties>
+        </action>
+        <action>
+            <actionName>run</actionName>
+            <goals>
+                <goal>package</goal>
+            </goals>
+            <properties>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                <netbeans.deploy>true</netbeans.deploy>
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                <webapp.projectStage>Development</webapp.projectStage>
+            </properties>
+        </action>
+        <action>
+            <actionName>run.single.deploy</actionName>
+            <goals>
+                <goal>package</goal>
+            </goals>
+            <properties>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                <netbeans.deploy>true</netbeans.deploy>
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                <netbeans.deploy.clientUrlPart>${webpagePath}</netbeans.deploy.clientUrlPart>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                <webapp.projectStage>Development</webapp.projectStage>
+            </properties>
+        </action>
+        <action>
+            <actionName>debug.single.deploy</actionName>
+            <goals>
+                <goal>package</goal>
+            </goals>
+            <properties>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                <netbeans.deploy>true</netbeans.deploy>
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                <netbeans.deploy.debugmode>true</netbeans.deploy.debugmode>
+                <netbeans.deploy.clientUrlPart>${webpagePath}</netbeans.deploy.clientUrlPart>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                <webapp.projectStage>Development</webapp.projectStage>
+            </properties>
+        </action>
+    </actions>
diff --git a/test/groovy/basic/pom.xml b/test/groovy/basic/pom.xml
new file mode 100644
index 0000000..b8db12e
--- /dev/null
+++ b/test/groovy/basic/pom.xml
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" 
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.groovy</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.groovy</groupId>
+    <artifactId>basic</artifactId>
+    <packaging>war</packaging>
+    <name>Mojarra ${project.version} - Test - Groovy - Basic</name>
+    <build>
+        <finalName>test-groovy-basic</finalName>
+    </build>
+</project>
diff --git a/test/groovy/basic/src/main/java/com/sun/faces/test/groovy/basic/Name.java b/test/groovy/basic/src/main/java/com/sun/faces/test/groovy/basic/Name.java
new file mode 100644
index 0000000..9f06c61
--- /dev/null
+++ b/test/groovy/basic/src/main/java/com/sun/faces/test/groovy/basic/Name.java
@@ -0,0 +1,81 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.groovy.basic;
+
+import java.util.StringTokenizer;
+
+public class Name {
+  String first = "";
+  String last = "";
+
+    public Name(String name) {
+
+        System.out.println("Name : name = " + name);
+        StringTokenizer token = new StringTokenizer(name);
+        String[] nameArray = new String[2];
+        int i = 0;
+        while (token.hasMoreTokens()) {
+            nameArray[i] = token.nextToken();
+            //System.out.println("Name : nameArray[" + i + "] = " + nameArray[i]);
+            i++;
+        }
+        if (nameArray[0] != null)
+            this.first = nameArray[0].toUpperCase();
+        if (nameArray[1] != null)
+            this.last = nameArray[1].toUpperCase();
+    }
+
+    public String getFirst() {
+        return first;
+    }
+
+    public String  getLast() {
+        return last;
+    }
+
+    public void setFirst(String first) {
+        this.first = first;
+    }
+
+    public void setLast(String last) {
+        this.last = last;
+    }
+}
diff --git a/test/groovy/basic/src/main/resources/runtime_overwrites/groovy/hello/AgeComponent.groovy b/test/groovy/basic/src/main/resources/runtime_overwrites/groovy/hello/AgeComponent.groovy
new file mode 100644
index 0000000..74d4002
--- /dev/null
+++ b/test/groovy/basic/src/main/resources/runtime_overwrites/groovy/hello/AgeComponent.groovy
@@ -0,0 +1,27 @@
+package hello
+
+import javax.faces.component.UIInput;
+import javax.faces.context.FacesContext;
+import javax.faces.context.ExternalContext;
+import javax.faces.context.ResponseWriter;
+
+public class AgeComponent extends UIInput {
+  public AgeComponent() {
+    System.out.println("AgeComponent initialized...");
+  }
+
+   
+  public void encodeBegin(FacesContext context) throws IOException {
+     super.encodeBegin(context);
+      ExternalContext extContext = context.getExternalContext();
+      Map<String, String> requestParamMap = extContext.getRequestParameterMap();
+      ResponseWriter out = context.getResponseWriter();
+      out.startElement("p", this);
+      out.writeText("@tstamp@", this, "prefix");
+      out.endElement("p");
+
+
+  }
+  
+  
+}
\ No newline at end of file
diff --git a/test/groovy/basic/src/main/webapp/WEB-INF/faces-config.xml b/test/groovy/basic/src/main/webapp/WEB-INF/faces-config.xml
new file mode 100644
index 0000000..906e20a
--- /dev/null
+++ b/test/groovy/basic/src/main/webapp/WEB-INF/faces-config.xml
@@ -0,0 +1,85 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
+              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+              xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
+              version="2.0">
+
+    <converter>
+        <converter-id>nameconverter</converter-id>
+        <converter-class>hello.NameConverter</converter-class>
+    </converter>
+
+    <validator>
+      <validator-id>namevalidator</validator-id>
+        <validator-class>hello.NameValidator</validator-class>
+    </validator>
+
+     <component>
+        <component-type>agecomponent</component-type>
+        <component-class>hello.AgeComponent</component-class>
+    </component>
+
+    <component>
+        <component-type>messageoutput</component-type>
+        <component-class>hello.MessageOutput</component-class>
+    </component>
+
+    <managed-bean>
+        <managed-bean-name>hello</managed-bean-name>
+        <managed-bean-class>hello.HelloBean</managed-bean-class>
+        <managed-bean-scope>session</managed-bean-scope>
+    </managed-bean>
+
+    <render-kit>
+        <description>Render the message</description>
+        <renderer>
+                <component-family>javax.faces.Output</component-family>
+                <renderer-type>messagerenderer</renderer-type>
+                <renderer-class>hello.MessageRenderer</renderer-class>
+        </renderer>
+     </render-kit>
+
+
+</faces-config>
diff --git a/test/groovy/basic/src/main/webapp/WEB-INF/glassfish-web.xml b/test/groovy/basic/src/main/webapp/WEB-INF/glassfish-web.xml
new file mode 100644
index 0000000..96e0183
--- /dev/null
+++ b/test/groovy/basic/src/main/webapp/WEB-INF/glassfish-web.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
+<glassfish-web-app error-url="">
+  <context-root>/test-groovy-basic</context-root>
+  <class-loader delegate="true"/>
+  <jsp-config>
+    <property name="keepgenerated" value="true">
+      <description>Keep a copy of the generated servlet class' java code.</description>
+    </property>
+  </jsp-config>
+</glassfish-web-app>
diff --git a/test/groovy/basic/src/main/webapp/WEB-INF/groovy-taglib.xml b/test/groovy/basic/src/main/webapp/WEB-INF/groovy-taglib.xml
new file mode 100644
index 0000000..bb55332
--- /dev/null
+++ b/test/groovy/basic/src/main/webapp/WEB-INF/groovy-taglib.xml
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<facelet-taglib xmlns="http://xmlns.jcp.org/xml/ns/javaee"
+              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+              xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-facelettaglibrary_2_2.xsd"
+              version="2.2">
+    <namespace>http://mojarra.dev.java.net/source1</namespace>
+    <tag>
+        <tag-name>hello</tag-name>
+        <component>
+            <component-type>agecomponent</component-type>
+        </component>
+
+    </tag>
+
+    <tag>
+        <tag-name>messageoutput</tag-name>
+        <component>
+            <component-type>messageoutput</component-type>
+        </component>
+
+    </tag>
+
+     <tag>
+         <tag-name>renderer</tag-name>
+         <component>
+             <component-type>javax.faces.Output</component-type>
+             <renderer-type>messagerenderer</renderer-type>
+         </component>
+     </tag>
+
+</facelet-taglib>
diff --git a/test/groovy/basic/src/main/webapp/WEB-INF/groovy/hello/AgeComponent.groovy b/test/groovy/basic/src/main/webapp/WEB-INF/groovy/hello/AgeComponent.groovy
new file mode 100644
index 0000000..efe768d
--- /dev/null
+++ b/test/groovy/basic/src/main/webapp/WEB-INF/groovy/hello/AgeComponent.groovy
@@ -0,0 +1,10 @@
+package hello
+
+import javax.faces.component.UIInput;
+
+public class AgeComponent extends UIInput {
+  public AgeComponent() {
+    System.out.println("AgeComponent initialized...");
+  }
+  
+}
\ No newline at end of file
diff --git a/test/groovy/basic/src/main/webapp/WEB-INF/groovy/hello/HelloBean.groovy b/test/groovy/basic/src/main/webapp/WEB-INF/groovy/hello/HelloBean.groovy
new file mode 100644
index 0000000..e4f51f9
--- /dev/null
+++ b/test/groovy/basic/src/main/webapp/WEB-INF/groovy/hello/HelloBean.groovy
@@ -0,0 +1,32 @@
+package hello
+
+//import javax.faces.bean.ManagedBean
+//import javax.faces.bean.ApplicationScoped
+
+//@ManagedBean(name = "hello", eager = true)
+//@ApplicationScoped
+public class HelloBean {
+    String fname;
+  int age;
+
+    public HelloBean() {
+        System.out.println("HelloBean instantiated")
+    }
+    public String getMessage() {
+        return "Hello " + fname + ", You are " + age + " years old. Happy Birthday!"
+    }
+    public String getFname() {
+        return fname
+    }
+    public  void setFname(String name) {
+        this.fname = name
+    }
+
+  public int getAge() {
+    return age;
+  }
+
+  public void setAge(int age) {
+    this.age = age;
+  }
+}
\ No newline at end of file
diff --git a/test/groovy/basic/src/main/webapp/WEB-INF/groovy/hello/MessageOutput.groovy b/test/groovy/basic/src/main/webapp/WEB-INF/groovy/hello/MessageOutput.groovy
new file mode 100644
index 0000000..b5956f3
--- /dev/null
+++ b/test/groovy/basic/src/main/webapp/WEB-INF/groovy/hello/MessageOutput.groovy
@@ -0,0 +1,20 @@
+package com.sun.faces.systest;
+
+import javax.faces.context.FacesContext;
+import javax.faces.context.ResponseWriter;
+import javax.faces.component.UIComponentBase;
+import java.io.IOException;
+import java.util.Date;
+
+public class MessageOutput extends UIComponentBase {
+  public MessageOutput() {
+      System.out.println("MessageOutput initialized...");
+  }
+
+    @Override
+    public String getFamily() {
+        return "HelloFamily";
+    }
+
+
+}
\ No newline at end of file
diff --git a/test/groovy/basic/src/main/webapp/WEB-INF/groovy/hello/MessageRenderer.groovy b/test/groovy/basic/src/main/webapp/WEB-INF/groovy/hello/MessageRenderer.groovy
new file mode 100644
index 0000000..f763294
--- /dev/null
+++ b/test/groovy/basic/src/main/webapp/WEB-INF/groovy/hello/MessageRenderer.groovy
@@ -0,0 +1,38 @@
+package hello
+
+import javax.faces.render.Renderer;
+import javax.faces.context.FacesContext;
+import javax.faces.context.ResponseWriter;
+import javax.faces.component.UIComponent;
+
+public class MessageRenderer extends Renderer {
+
+  public MessageRenderer() {
+    System.out.println("MessageRenderer initialized...");
+  }
+
+  public String getFamily()
+  {
+    return "HelloFamily";
+  }
+
+  @Override
+   public void encodeEnd(FacesContext context, UIComponent component) throws IOException
+    {
+      String hellomsg = (String)component.getAttributes().get("hellomsg");
+      ResponseWriter writer = context.getResponseWriter();
+
+      System.out.println("MessageRenderer : hellomsg = " + hellomsg);
+      writer.startElement("h3",component);
+      if(hellomsg != null) {
+        System.out.println("MessageRenderer : hellomsg is not null...");
+        writer.writeText(hellomsg, "hellomsg");
+      } else
+        writer.writeText("could not retrieve the message from ManagedBean HelloBean...", null);
+      writer.endElement("h3");
+      writer.startElement("p", component);
+      writer.writeText(" Today is: " + new Date(), null);
+      writer.endElement("p");
+    }
+
+}
\ No newline at end of file
diff --git a/test/groovy/basic/src/main/webapp/WEB-INF/groovy/hello/NameConverter.groovy b/test/groovy/basic/src/main/webapp/WEB-INF/groovy/hello/NameConverter.groovy
new file mode 100644
index 0000000..fd8edd9
--- /dev/null
+++ b/test/groovy/basic/src/main/webapp/WEB-INF/groovy/hello/NameConverter.groovy
@@ -0,0 +1,29 @@
+package hello
+
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.convert.Converter;
+import com.sun.faces.test.groovy.basic.Name;
+
+public class NameConverter implements Converter {
+
+       private String message = "04:48";
+
+
+    public NameConverter() {
+        System.out.println("NameConverter instantiated " + message);
+    }
+    public Object getAsObject(FacesContext context, UIComponent component,
+            String value) {
+      Name name = new Name(value);
+      return name.getFirst() + " " + name.getLast();
+
+    }
+
+    public String getAsString(FacesContext context, UIComponent component,
+                              Object value) {
+      return value.toString();
+    }
+
+  
+}
diff --git a/test/groovy/basic/src/main/webapp/WEB-INF/groovy/hello/NameValidator.groovy b/test/groovy/basic/src/main/webapp/WEB-INF/groovy/hello/NameValidator.groovy
new file mode 100644
index 0000000..c78dfc3
--- /dev/null
+++ b/test/groovy/basic/src/main/webapp/WEB-INF/groovy/hello/NameValidator.groovy
@@ -0,0 +1,22 @@
+package hello
+
+import javax.faces.validator.Validator
+import javax.faces.validator.ValidatorException
+import javax.faces.context.FacesContext
+import javax.faces.component.UIComponent;
+import javax.faces.application.FacesMessage;
+
+public class NameValidator implements Validator {
+
+  void validate(FacesContext context, UIComponent component, Object value) {
+    System.out.println("NameValidator : value = " + (Integer)value);
+
+    int age = ((Integer)value).intValue();
+      if (age < 0 || age > 65)
+        throw new ValidatorException(new FacesMessage("please enter a valid age between 0 and 65. 04:06"));
+  }
+
+}
+
+
+
diff --git a/test/groovy/basic/src/main/webapp/WEB-INF/web.xml b/test/groovy/basic/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..d76084c
--- /dev/null
+++ b/test/groovy/basic/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>${webapp.projectStage}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
+        <param-value>${webapp.partialStateSaving}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>${webapp.stateSavingMethod}</param-value>
+    </context-param>
+    
+    <context-param>
+        <param-name>com.sun.faces.enableGroovyScripting</param-name>
+        <param-value>true</param-value>
+    </context-param>
+
+    <context-param>
+        <param-name>javax.faces.FACELETS_LIBRARIES</param-name>
+        <param-value>/WEB-INF/groovy-taglib.xml</param-value>
+    </context-param>
+
+    <filter>
+        <filter-name>GroovyFilter</filter-name>
+        <filter-class>com.sun.faces.scripting.GroovySupportFilter</filter-class>
+    </filter>
+    <filter-mapping>
+        <filter-name>GroovyFilter</filter-name>
+        <url-pattern>/*</url-pattern>
+        <dispatcher>REQUEST</dispatcher>
+        <dispatcher>FORWARD</dispatcher>
+        <dispatcher>INCLUDE</dispatcher>
+        <dispatcher>ERROR</dispatcher>
+    </filter-mapping>
+
+    
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <welcome-file-list>
+        <welcome-file>faces/hello.xhtml</welcome-file>
+    </welcome-file-list>
+</web-app>
diff --git a/test/groovy/basic/src/main/webapp/closedStreamComponent.xhtml b/test/groovy/basic/src/main/webapp/closedStreamComponent.xhtml
new file mode 100644
index 0000000..1b3874b
--- /dev/null
+++ b/test/groovy/basic/src/main/webapp/closedStreamComponent.xhtml
@@ -0,0 +1,16 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:closedStreamComponent="http://java.sun.com/jsf/composite/closedStreamComponent">
+    <h:head>
+        <title></title>
+    </h:head>
+    <h:body>
+        <h:form prependId="false">
+            <closedStreamComponent:closedStreamComponent/>      
+            <p><h:commandButton id="button" value="submit" /></p>
+        </h:form>
+    </h:body>
+</html>
diff --git a/test/groovy/basic/src/main/webapp/hello.xhtml b/test/groovy/basic/src/main/webapp/hello.xhtml
new file mode 100644
index 0000000..1f4c909
--- /dev/null
+++ b/test/groovy/basic/src/main/webapp/hello.xhtml
@@ -0,0 +1,27 @@
+<!DOCTYPE html
+    PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:hellotag="http://mojarra.dev.java.net/source1">
+    <head>
+        <title>Hello JSF 2!</title>
+    </head>
+    <body>
+        <h:form id="form">
+            Name : <h:inputText id="name"
+                                value="#{hello.fname}">
+                <f:converter  converterId="nameconverter" />
+            </h:inputText>
+            Age :   <hellotag:hello id="age"
+                                    value="#{hello.age}">
+                <f:validator validatorId="namevalidator"/>
+            </hellotag:hello>
+            <h:commandButton id="command" value="submit" action="submit?faces-redirect=true"></h:commandButton>
+        </h:form>
+        <h:messages/>
+    </body>
+</html>
+
+
diff --git a/test/groovy/basic/src/main/webapp/resources/closedStreamComponent/closedStreamComponent.groovy b/test/groovy/basic/src/main/webapp/resources/closedStreamComponent/closedStreamComponent.groovy
new file mode 100644
index 0000000..28507a2
--- /dev/null
+++ b/test/groovy/basic/src/main/webapp/resources/closedStreamComponent/closedStreamComponent.groovy
@@ -0,0 +1,59 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+import javax.faces.component.UINamingContainer;
+import javax.faces.context.FacesContext;
+
+public class myComponent extends UINamingContainer {
+    
+    public void processUpdates(FacesContext context) {
+        
+        context.getExternalContext().getRequestMap().put("message", 
+                                                         "groovyCalled");
+
+        super.processUpdates(context);
+
+    } 
+    
+    public String getFamily() {
+        return "javax.faces.NamingContainer";
+    }
+    
+}
diff --git a/test/groovy/basic/src/main/webapp/resources/closedStreamComponent/closedStreamComponent.properties b/test/groovy/basic/src/main/webapp/resources/closedStreamComponent/closedStreamComponent.properties
new file mode 100644
index 0000000..0916bb9
--- /dev/null
+++ b/test/groovy/basic/src/main/webapp/resources/closedStreamComponent/closedStreamComponent.properties
@@ -0,0 +1,41 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
+localizedText=This is the localized text for the composite component.
diff --git a/test/groovy/basic/src/main/webapp/resources/closedStreamComponent/closedStreamComponent.xhtml b/test/groovy/basic/src/main/webapp/resources/closedStreamComponent/closedStreamComponent.xhtml
new file mode 100644
index 0000000..eb48bad
--- /dev/null
+++ b/test/groovy/basic/src/main/webapp/resources/closedStreamComponent/closedStreamComponent.xhtml
@@ -0,0 +1,18 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:cc="http://java.sun.com/jsf/composite"
+      xmlns:h="http://java.sun.com/jsf/html">
+
+    <!-- INTERFACE -->
+    <cc:interface>
+    </cc:interface>
+
+    <!-- IMPLEMENTATION -->
+    <cc:implementation>
+        <p>#{cc.resourceBundleMap.localizedText}</p>
+        <p>#{message}</p>
+        <h:inputText id="textField" value="text field value" />
+
+    </cc:implementation>
+</html>
\ No newline at end of file
diff --git a/test/groovy/basic/src/main/webapp/submit.xhtml b/test/groovy/basic/src/main/webapp/submit.xhtml
new file mode 100644
index 0000000..cd7150c
--- /dev/null
+++ b/test/groovy/basic/src/main/webapp/submit.xhtml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html
+    PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:render="http://mojarra.dev.java.net/source1">
+    <head>
+        <title>Hello</title>
+    </head>
+    <body>
+        <h:form id="form">
+            <render:messageoutput id="string">
+                <render:renderer hellomsg="#{hello.message}"/>
+            </render:messageoutput>
+        </h:form>
+        <h:messages/>
+    </body>
+</html>
\ No newline at end of file
diff --git a/test/groovy/basic/src/test/java/com/sun/faces/test/groovy/basic/Issue1655IT.java b/test/groovy/basic/src/test/java/com/sun/faces/test/groovy/basic/Issue1655IT.java
new file mode 100644
index 0000000..5cfd480
--- /dev/null
+++ b/test/groovy/basic/src/test/java/com/sun/faces/test/groovy/basic/Issue1655IT.java
@@ -0,0 +1,107 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.groovy.basic;
+
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.assertFalse;
+
+public class Issue1655IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testBasicAppFunctionality() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl);
+
+        HtmlTextInput inputText = (HtmlTextInput) page.getElementById("form:name");
+        String val = "" + System.currentTimeMillis();
+        inputText.setValueAttribute(val);
+
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("form:command");
+        page = (HtmlPage) button.click();
+        String pageAsText = page.asText();
+        assertTrue(pageAsText.contains("Hello " + val));
+        assertTrue(pageAsText.contains("Happy Birthday"));
+
+        String pageText = page.asXml();
+        assertTrue(pageText.contains("<input type=\"hidden\" name=\"javax.faces.ViewState\" id="));
+    }
+
+    @Test
+    public void testBasicAppFunctionalityNegative() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl);
+
+        HtmlTextInput inputText = (HtmlTextInput) page.getElementById("form:name");
+        String val = "" + System.currentTimeMillis();
+        inputText.setValueAttribute(val);
+        inputText = (HtmlTextInput) page.getElementById("form:age");
+        inputText.setValueAttribute("-12");
+
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("form:command");
+        page = (HtmlPage) button.click();
+        String pageAsText = page.asXml();
+        assertFalse(pageAsText.contains("Hello " + val));
+        assertFalse(pageAsText.contains("Happy Birthday"));
+        System.out.println("debug: edburns: " + pageAsText);
+        assertTrue(pageAsText.matches("(?s).*please.*enter.*a.*valid.*age.*between.*0.*and.*65.*"));
+
+        String pageText = page.asXml();
+        assertTrue(pageText.contains("<input type=\"hidden\" name=\"javax.faces.ViewState\" id="));
+    }
+}
diff --git a/test/groovy/basic/src/test/java/com/sun/faces/test/groovy/basic/Issue2113IT.java b/test/groovy/basic/src/test/java/com/sun/faces/test/groovy/basic/Issue2113IT.java
new file mode 100644
index 0000000..793b475
--- /dev/null
+++ b/test/groovy/basic/src/test/java/com/sun/faces/test/groovy/basic/Issue2113IT.java
@@ -0,0 +1,74 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.groovy.basic;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import org.junit.After;
+import static org.junit.Assert.assertTrue;
+import org.junit.Before;
+import org.junit.Test;
+
+public class Issue2113IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testClosedStreamComponent() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/closedStreamComponent.xhtml");
+        assertTrue(page.asText().contains("This is the localized text for the composite component."));
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("button");
+        page = button.click();
+        assertTrue(page.asText().contains("groovyCalled"));
+    }
+}
diff --git a/test/groovy/pom.xml b/test/groovy/pom.xml
new file mode 100644
index 0000000..5c9faa1
--- /dev/null
+++ b/test/groovy/pom.xml
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.groovy</groupId>
+    <artifactId>pom</artifactId>
+    <packaging>pom</packaging>
+    <name>Mojarra ${project.version} - Test - Groovy</name>
+    <modules>
+      <module>basic</module>
+      <module>weldAware</module>
+  </modules>
+</project>
diff --git a/test/groovy/weldAware/nbactions.xml b/test/groovy/weldAware/nbactions.xml
new file mode 100644
index 0000000..3c441ab
--- /dev/null
+++ b/test/groovy/weldAware/nbactions.xml
@@ -0,0 +1,163 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--><actions>
+        <action>
+            <actionName>debug.test.single</actionName>
+            <goals>
+                <goal>test-compile</goal>
+                <goal>surefire:test</goal>
+            </goals>
+            <properties>
+                <test>test-basic</test>
+                <forkMode>once</forkMode>
+                <maven.surefire.debug>-Xdebug -Xrunjdwp:transport=dt_socket,server=n,address=${jpda.address}</maven.surefire.debug>
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                <jpda.listen>true</jpda.listen>
+                <project.build.finalName>test-groovy-weldAware</project.build.finalName>
+                <webapp.projectStage>Development</webapp.projectStage>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                <integration.serverPort>8080</integration.serverPort>
+                <integration.serverName>localhost</integration.serverName>
+                <integration.url>http://localhost:8080/test-groovy-weldAware/</integration.url>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+            </properties>
+        </action>
+        <action>
+            <actionName>test.single</actionName>
+            <goals>
+                <goal>test-compile</goal>
+                <goal>surefire:test</goal>
+            </goals>
+            <properties>
+                <project.build.finalName>test-groovy-weldAware</project.build.finalName>
+                <integration.serverPort>8080</integration.serverPort>
+                <integration.serverName>localhost</integration.serverName>
+                <integration.url>http://localhost:8080/test-groovy-weldAware/</integration.url>
+                <test>test-basic</test>
+            </properties>
+        </action>
+        <action>
+            <actionName>build</actionName>
+            <goals>
+                <goal>install</goal>
+            </goals>
+            <properties>
+                <webapp.projectStage>Development</webapp.projectStage>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+            </properties>
+        </action>
+        <action>
+            <actionName>rebuild</actionName>
+            <goals>
+                <goal>clean</goal>
+                <goal>install</goal>
+            </goals>
+            <properties>
+                
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                
+                <webapp.projectStage>Development</webapp.projectStage>
+                
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                
+            </properties>
+        </action>
+        <action>
+            <actionName>build-with-dependencies</actionName>
+            <reactor>also-make</reactor>
+            <goals>
+                <goal>install</goal>
+            </goals>
+            <properties>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                <webapp.projectStage>Development</webapp.projectStage>
+            </properties>
+        </action>
+        <action>
+            <actionName>run</actionName>
+            <goals>
+                <goal>package</goal>
+            </goals>
+            <properties>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                <netbeans.deploy>true</netbeans.deploy>
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                <webapp.projectStage>Development</webapp.projectStage>
+            </properties>
+        </action>
+        <action>
+            <actionName>run.single.deploy</actionName>
+            <goals>
+                <goal>package</goal>
+            </goals>
+            <properties>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                <netbeans.deploy>true</netbeans.deploy>
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                <netbeans.deploy.clientUrlPart>${webpagePath}</netbeans.deploy.clientUrlPart>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                <webapp.projectStage>Development</webapp.projectStage>
+            </properties>
+        </action>
+        <action>
+            <actionName>debug.single.deploy</actionName>
+            <goals>
+                <goal>package</goal>
+            </goals>
+            <properties>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                <netbeans.deploy>true</netbeans.deploy>
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                <netbeans.deploy.debugmode>true</netbeans.deploy.debugmode>
+                <netbeans.deploy.clientUrlPart>${webpagePath}</netbeans.deploy.clientUrlPart>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                <webapp.projectStage>Development</webapp.projectStage>
+            </properties>
+        </action>
+    </actions>
diff --git a/test/groovy/weldAware/pom.xml b/test/groovy/weldAware/pom.xml
new file mode 100644
index 0000000..da63422
--- /dev/null
+++ b/test/groovy/weldAware/pom.xml
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" 
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.groovy</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>  
+    <groupId>com.sun.faces.test.groovy</groupId>
+    <artifactId>weldAware</artifactId>
+    <packaging>war</packaging>
+    <name>Mojarra ${project.version} - Test - Groovy - Weld Aware</name>
+    <build>
+        <finalName>test-groovy-weldAware</finalName>
+    </build>
+</project>
diff --git a/test/groovy/weldAware/src/main/java/com/sun/faces/test/groovy/weldAware/Name.java b/test/groovy/weldAware/src/main/java/com/sun/faces/test/groovy/weldAware/Name.java
new file mode 100644
index 0000000..22e575d
--- /dev/null
+++ b/test/groovy/weldAware/src/main/java/com/sun/faces/test/groovy/weldAware/Name.java
@@ -0,0 +1,81 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.groovy.weldAware;
+
+import java.util.StringTokenizer;
+
+public class Name {
+  String first = "";
+  String last = "";
+
+    public Name(String name) {
+
+        System.out.println("Name : name = " + name);
+        StringTokenizer token = new StringTokenizer(name);
+        String[] nameArray = new String[2];
+        int i = 0;
+        while (token.hasMoreTokens()) {
+            nameArray[i] = token.nextToken();
+            //System.out.println("Name : nameArray[" + i + "] = " + nameArray[i]);
+            i++;
+        }
+        if (nameArray[0] != null)
+            this.first = nameArray[0].toUpperCase();
+        if (nameArray[1] != null)
+            this.last = nameArray[1].toUpperCase();
+    }
+
+    public String getFirst() {
+        return first;
+    }
+
+    public String  getLast() {
+        return last;
+    }
+
+    public void setFirst(String first) {
+        this.first = first;
+    }
+
+    public void setLast(String last) {
+        this.last = last;
+    }
+}
diff --git a/test/groovy/weldAware/src/main/resources/runtime_overwrites/groovy/hello/AgeComponent.groovy b/test/groovy/weldAware/src/main/resources/runtime_overwrites/groovy/hello/AgeComponent.groovy
new file mode 100644
index 0000000..74d4002
--- /dev/null
+++ b/test/groovy/weldAware/src/main/resources/runtime_overwrites/groovy/hello/AgeComponent.groovy
@@ -0,0 +1,27 @@
+package hello
+
+import javax.faces.component.UIInput;
+import javax.faces.context.FacesContext;
+import javax.faces.context.ExternalContext;
+import javax.faces.context.ResponseWriter;
+
+public class AgeComponent extends UIInput {
+  public AgeComponent() {
+    System.out.println("AgeComponent initialized...");
+  }
+
+   
+  public void encodeBegin(FacesContext context) throws IOException {
+     super.encodeBegin(context);
+      ExternalContext extContext = context.getExternalContext();
+      Map<String, String> requestParamMap = extContext.getRequestParameterMap();
+      ResponseWriter out = context.getResponseWriter();
+      out.startElement("p", this);
+      out.writeText("@tstamp@", this, "prefix");
+      out.endElement("p");
+
+
+  }
+  
+  
+}
\ No newline at end of file
diff --git a/test/groovy/weldAware/src/main/webapp/WEB-INF/beans.xml b/test/groovy/weldAware/src/main/webapp/WEB-INF/beans.xml
new file mode 100644
index 0000000..e69de29
diff --git a/test/groovy/weldAware/src/main/webapp/WEB-INF/faces-config.xml b/test/groovy/weldAware/src/main/webapp/WEB-INF/faces-config.xml
new file mode 100644
index 0000000..906e20a
--- /dev/null
+++ b/test/groovy/weldAware/src/main/webapp/WEB-INF/faces-config.xml
@@ -0,0 +1,85 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
+              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+              xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
+              version="2.0">
+
+    <converter>
+        <converter-id>nameconverter</converter-id>
+        <converter-class>hello.NameConverter</converter-class>
+    </converter>
+
+    <validator>
+      <validator-id>namevalidator</validator-id>
+        <validator-class>hello.NameValidator</validator-class>
+    </validator>
+
+     <component>
+        <component-type>agecomponent</component-type>
+        <component-class>hello.AgeComponent</component-class>
+    </component>
+
+    <component>
+        <component-type>messageoutput</component-type>
+        <component-class>hello.MessageOutput</component-class>
+    </component>
+
+    <managed-bean>
+        <managed-bean-name>hello</managed-bean-name>
+        <managed-bean-class>hello.HelloBean</managed-bean-class>
+        <managed-bean-scope>session</managed-bean-scope>
+    </managed-bean>
+
+    <render-kit>
+        <description>Render the message</description>
+        <renderer>
+                <component-family>javax.faces.Output</component-family>
+                <renderer-type>messagerenderer</renderer-type>
+                <renderer-class>hello.MessageRenderer</renderer-class>
+        </renderer>
+     </render-kit>
+
+
+</faces-config>
diff --git a/test/groovy/weldAware/src/main/webapp/WEB-INF/glassfish-web.xml b/test/groovy/weldAware/src/main/webapp/WEB-INF/glassfish-web.xml
new file mode 100644
index 0000000..81daf11
--- /dev/null
+++ b/test/groovy/weldAware/src/main/webapp/WEB-INF/glassfish-web.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
+<glassfish-web-app error-url="">
+  <context-root>/test-groovy-weldAware</context-root>
+  <class-loader delegate="true"/>
+  <jsp-config>
+    <property name="keepgenerated" value="true">
+      <description>Keep a copy of the generated servlet class' java code.</description>
+    </property>
+  </jsp-config>
+</glassfish-web-app>
diff --git a/test/groovy/weldAware/src/main/webapp/WEB-INF/groovy-taglib.xml b/test/groovy/weldAware/src/main/webapp/WEB-INF/groovy-taglib.xml
new file mode 100644
index 0000000..feb9291
--- /dev/null
+++ b/test/groovy/weldAware/src/main/webapp/WEB-INF/groovy-taglib.xml
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<facelet-taglib xmlns="http://xmlns.jcp.org/xml/ns/javaee"
+              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+              xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-facelettaglibrary_2_2.xsd"
+              version="2.2">
+    <namespace>http://mojarra.dev.java.net/source1</namespace>
+    <tag>
+        <tag-name>hello</tag-name>
+        <component>
+            <component-type>agecomponent</component-type>
+        </component>
+
+    </tag>
+
+    <tag>
+        <tag-name>messageoutput</tag-name>
+        <component>
+            <component-type>messageoutput</component-type>
+        </component>
+
+    </tag>
+
+     <tag>
+         <tag-name>renderer</tag-name>
+         <component>
+             <component-type>javax.faces.Output</component-type>
+             <renderer-type>messagerenderer</renderer-type>
+         </component>
+     </tag>
+
+</facelet-taglib>
diff --git a/test/groovy/weldAware/src/main/webapp/WEB-INF/groovy/hello/AgeComponent.groovy b/test/groovy/weldAware/src/main/webapp/WEB-INF/groovy/hello/AgeComponent.groovy
new file mode 100644
index 0000000..efe768d
--- /dev/null
+++ b/test/groovy/weldAware/src/main/webapp/WEB-INF/groovy/hello/AgeComponent.groovy
@@ -0,0 +1,10 @@
+package hello
+
+import javax.faces.component.UIInput;
+
+public class AgeComponent extends UIInput {
+  public AgeComponent() {
+    System.out.println("AgeComponent initialized...");
+  }
+  
+}
\ No newline at end of file
diff --git a/test/groovy/weldAware/src/main/webapp/WEB-INF/groovy/hello/HelloBean.groovy b/test/groovy/weldAware/src/main/webapp/WEB-INF/groovy/hello/HelloBean.groovy
new file mode 100644
index 0000000..87ddaff
--- /dev/null
+++ b/test/groovy/weldAware/src/main/webapp/WEB-INF/groovy/hello/HelloBean.groovy
@@ -0,0 +1,32 @@
+package hello
+
+//import javax.faces.bean.ManagedBean
+//import javax.faces.bean.ApplicationScoped
+
+//@ManagedBean(name = "hello", eager = true)
+//@ApplicationScoped
+public class HelloBean implements java.io.Serializable {
+    String fname;
+  int age;
+
+    public HelloBean() {
+        System.out.println("HelloBean instantiated")
+    }
+    public String getMessage() {
+        return "Hello " + fname + ", You are " + age + " years old. Happy Birthday!"
+    }
+    public String getFname() {
+        return fname
+    }
+    public  void setFname(String name) {
+        this.fname = name
+    }
+
+  public int getAge() {
+    return age;
+  }
+
+  public void setAge(int age) {
+    this.age = age;
+  }
+}
\ No newline at end of file
diff --git a/test/groovy/weldAware/src/main/webapp/WEB-INF/groovy/hello/MessageOutput.groovy b/test/groovy/weldAware/src/main/webapp/WEB-INF/groovy/hello/MessageOutput.groovy
new file mode 100644
index 0000000..b5956f3
--- /dev/null
+++ b/test/groovy/weldAware/src/main/webapp/WEB-INF/groovy/hello/MessageOutput.groovy
@@ -0,0 +1,20 @@
+package com.sun.faces.systest;
+
+import javax.faces.context.FacesContext;
+import javax.faces.context.ResponseWriter;
+import javax.faces.component.UIComponentBase;
+import java.io.IOException;
+import java.util.Date;
+
+public class MessageOutput extends UIComponentBase {
+  public MessageOutput() {
+      System.out.println("MessageOutput initialized...");
+  }
+
+    @Override
+    public String getFamily() {
+        return "HelloFamily";
+    }
+
+
+}
\ No newline at end of file
diff --git a/test/groovy/weldAware/src/main/webapp/WEB-INF/groovy/hello/MessageRenderer.groovy b/test/groovy/weldAware/src/main/webapp/WEB-INF/groovy/hello/MessageRenderer.groovy
new file mode 100644
index 0000000..f763294
--- /dev/null
+++ b/test/groovy/weldAware/src/main/webapp/WEB-INF/groovy/hello/MessageRenderer.groovy
@@ -0,0 +1,38 @@
+package hello
+
+import javax.faces.render.Renderer;
+import javax.faces.context.FacesContext;
+import javax.faces.context.ResponseWriter;
+import javax.faces.component.UIComponent;
+
+public class MessageRenderer extends Renderer {
+
+  public MessageRenderer() {
+    System.out.println("MessageRenderer initialized...");
+  }
+
+  public String getFamily()
+  {
+    return "HelloFamily";
+  }
+
+  @Override
+   public void encodeEnd(FacesContext context, UIComponent component) throws IOException
+    {
+      String hellomsg = (String)component.getAttributes().get("hellomsg");
+      ResponseWriter writer = context.getResponseWriter();
+
+      System.out.println("MessageRenderer : hellomsg = " + hellomsg);
+      writer.startElement("h3",component);
+      if(hellomsg != null) {
+        System.out.println("MessageRenderer : hellomsg is not null...");
+        writer.writeText(hellomsg, "hellomsg");
+      } else
+        writer.writeText("could not retrieve the message from ManagedBean HelloBean...", null);
+      writer.endElement("h3");
+      writer.startElement("p", component);
+      writer.writeText(" Today is: " + new Date(), null);
+      writer.endElement("p");
+    }
+
+}
\ No newline at end of file
diff --git a/test/groovy/weldAware/src/main/webapp/WEB-INF/groovy/hello/NameConverter.groovy b/test/groovy/weldAware/src/main/webapp/WEB-INF/groovy/hello/NameConverter.groovy
new file mode 100644
index 0000000..b0fb32d
--- /dev/null
+++ b/test/groovy/weldAware/src/main/webapp/WEB-INF/groovy/hello/NameConverter.groovy
@@ -0,0 +1,29 @@
+package hello
+
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.convert.Converter;
+import com.sun.faces.test.groovy.weldAware.Name;
+
+public class NameConverter implements Converter {
+
+       private String message = "04:48";
+
+
+    public NameConverter() {
+        System.out.println("NameConverter instantiated " + message);
+    }
+    public Object getAsObject(FacesContext context, UIComponent component,
+            String value) {
+      Name name = new Name(value);
+      return name.getFirst() + " " + name.getLast();
+
+    }
+
+    public String getAsString(FacesContext context, UIComponent component,
+                              Object value) {
+      return value.toString();
+    }
+
+  
+}
diff --git a/test/groovy/weldAware/src/main/webapp/WEB-INF/groovy/hello/NameValidator.groovy b/test/groovy/weldAware/src/main/webapp/WEB-INF/groovy/hello/NameValidator.groovy
new file mode 100644
index 0000000..c78dfc3
--- /dev/null
+++ b/test/groovy/weldAware/src/main/webapp/WEB-INF/groovy/hello/NameValidator.groovy
@@ -0,0 +1,22 @@
+package hello
+
+import javax.faces.validator.Validator
+import javax.faces.validator.ValidatorException
+import javax.faces.context.FacesContext
+import javax.faces.component.UIComponent;
+import javax.faces.application.FacesMessage;
+
+public class NameValidator implements Validator {
+
+  void validate(FacesContext context, UIComponent component, Object value) {
+    System.out.println("NameValidator : value = " + (Integer)value);
+
+    int age = ((Integer)value).intValue();
+      if (age < 0 || age > 65)
+        throw new ValidatorException(new FacesMessage("please enter a valid age between 0 and 65. 04:06"));
+  }
+
+}
+
+
+
diff --git a/test/groovy/weldAware/src/main/webapp/WEB-INF/web.xml b/test/groovy/weldAware/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..c861cb9
--- /dev/null
+++ b/test/groovy/weldAware/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,88 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>${webapp.projectStage}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
+        <param-value>${webapp.partialStateSaving}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>${webapp.stateSavingMethod}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>com.sun.faces.enableGroovyScripting</param-name>
+        <param-value>true</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.FACELETS_LIBRARIES</param-name>
+        <param-value>/WEB-INF/groovy-taglib.xml</param-value>
+    </context-param>
+    <filter>
+        <filter-name>GroovyFilter</filter-name>
+        <filter-class>com.sun.faces.scripting.GroovySupportFilter</filter-class>
+    </filter>
+    <filter-mapping>
+        <filter-name>GroovyFilter</filter-name>
+        <url-pattern>/*</url-pattern>
+        <dispatcher>REQUEST</dispatcher>
+        <dispatcher>FORWARD</dispatcher>
+        <dispatcher>INCLUDE</dispatcher>
+        <dispatcher>ERROR</dispatcher>
+    </filter-mapping>
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <welcome-file-list>
+        <welcome-file>faces/hello.xhtml</welcome-file>
+    </welcome-file-list>
+</web-app>
diff --git a/test/groovy/weldAware/src/main/webapp/hello.xhtml b/test/groovy/weldAware/src/main/webapp/hello.xhtml
new file mode 100644
index 0000000..1f4c909
--- /dev/null
+++ b/test/groovy/weldAware/src/main/webapp/hello.xhtml
@@ -0,0 +1,27 @@
+<!DOCTYPE html
+    PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:hellotag="http://mojarra.dev.java.net/source1">
+    <head>
+        <title>Hello JSF 2!</title>
+    </head>
+    <body>
+        <h:form id="form">
+            Name : <h:inputText id="name"
+                                value="#{hello.fname}">
+                <f:converter  converterId="nameconverter" />
+            </h:inputText>
+            Age :   <hellotag:hello id="age"
+                                    value="#{hello.age}">
+                <f:validator validatorId="namevalidator"/>
+            </hellotag:hello>
+            <h:commandButton id="command" value="submit" action="submit?faces-redirect=true"></h:commandButton>
+        </h:form>
+        <h:messages/>
+    </body>
+</html>
+
+
diff --git a/test/groovy/weldAware/src/main/webapp/submit.xhtml b/test/groovy/weldAware/src/main/webapp/submit.xhtml
new file mode 100644
index 0000000..b0e2dd4
--- /dev/null
+++ b/test/groovy/weldAware/src/main/webapp/submit.xhtml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html
+    PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:render="http://mojarra.dev.java.net/source1">
+    <head>
+        <title>Hello</title>
+    </head>
+    <body>
+        <h:form id="form">
+
+            <render:messageoutput id="string">
+                <render:renderer hellomsg="#{hello.message}"/>
+            </render:messageoutput>
+        </h:form>
+        <h:messages/>
+    </body>
+</html>
\ No newline at end of file
diff --git a/test/groovy/weldAware/src/test/java/com/sun/faces/test/groovy/weldAware/Issue3005IT.java b/test/groovy/weldAware/src/test/java/com/sun/faces/test/groovy/weldAware/Issue3005IT.java
new file mode 100644
index 0000000..ccb4353
--- /dev/null
+++ b/test/groovy/weldAware/src/test/java/com/sun/faces/test/groovy/weldAware/Issue3005IT.java
@@ -0,0 +1,102 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.groovy.weldAware;
+
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.assertFalse;
+
+public class Issue3005IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testBasicAppFunctionality() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl);
+        HtmlTextInput inputText = (HtmlTextInput) page.getElementById("form:name");
+        String val = "" + System.currentTimeMillis();
+        inputText.setValueAttribute(val);
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("form:command");
+        page = (HtmlPage) button.click();
+        String pageAsText = page.asText();
+        assertTrue(pageAsText.contains("Hello " + val));
+        assertTrue(pageAsText.contains("Happy Birthday"));
+        String pageText = page.asXml();
+        assertTrue(pageText.contains("<input type=\"hidden\" name=\"javax.faces.ViewState\" id="));
+    }
+
+    @Test
+    public void testBasicAppFunctionalityNegative() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl);
+
+        HtmlTextInput inputText = (HtmlTextInput) page.getElementById("form:name");
+        String val = "" + System.currentTimeMillis();
+        inputText.setValueAttribute(val);
+        inputText = (HtmlTextInput) page.getElementById("form:age");
+        inputText.setValueAttribute("-12");
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("form:command");
+        page = (HtmlPage) button.click();
+        String pageAsText = page.asXml();
+        assertFalse(pageAsText.contains("Hello " + val));
+        assertFalse(pageAsText.contains("Happy Birthday"));
+        System.out.println("debug: edburns: " + pageAsText);
+        assertTrue(pageAsText.matches("(?s).*please.*enter.*a.*valid.*age.*between.*0.*and.*65.*"));
+        String pageText = page.asXml();
+        assertTrue(pageText.contains("<input type=\"hidden\" name=\"javax.faces.ViewState\" id="));
+    }
+}
diff --git a/test/javaee6/pom.xml b/test/javaee6/pom.xml
new file mode 100644
index 0000000..af52850
--- /dev/null
+++ b/test/javaee6/pom.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.javaee6</groupId>
+    <artifactId>pom</artifactId>
+    <packaging>pom</packaging>
+    <name>Mojarra ${project.version} - Test - JavaEE 6</name>
+    <dependencies>
+        <dependency>
+            <groupId>com.sun.faces.test</groupId>
+            <artifactId>util</artifactId>
+            <version>${project.version}</version>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>    
+    <modules>
+        <module>resource</module>
+    </modules>
+</project>
diff --git a/test/javaee6/resource/cacheLastMod/ear/nbactions.xml b/test/javaee6/resource/cacheLastMod/ear/nbactions.xml
new file mode 100644
index 0000000..804f132
--- /dev/null
+++ b/test/javaee6/resource/cacheLastMod/ear/nbactions.xml
@@ -0,0 +1,163 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--><actions>
+        <action>
+            <actionName>debug.test.single</actionName>
+            <goals>
+                <goal>test-compile</goal>
+                <goal>surefire:test</goal>
+            </goals>
+            <properties>
+                <test>${packageClassName}</test>
+                <forkMode>once</forkMode>
+                <maven.surefire.debug>-Xdebug -Xrunjdwp:transport=dt_socket,server=n,address=${jpda.address}</maven.surefire.debug>
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                <jpda.listen>true</jpda.listen>
+                <project.build.finalName>test-javaee6-resource-cacheLastMod</project.build.finalName>
+                <webapp.projectStage>Development</webapp.projectStage>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                <integration.serverPort>8080</integration.serverPort>
+                <integration.serverName>localhost</integration.serverName>
+                <integration.url>http://localhost:8080/test-javaee6-resource-cacheLastMod/</integration.url>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+            </properties>
+        </action>
+        <action>
+            <actionName>test.single</actionName>
+            <goals>
+                <goal>test-compile</goal>
+                <goal>surefire:test</goal>
+            </goals>
+            <properties>
+                <project.build.finalName>test-javaee6-resource-cacheLastMod</project.build.finalName>
+                <integration.serverPort>8080</integration.serverPort>
+                <integration.serverName>localhost</integration.serverName>
+                <integration.url>http://localhost:8080/test-javaee6-resource-cacheLastMod/</integration.url>
+                <test>${packageClassName}</test>
+            </properties>
+        </action>
+        <action>
+            <actionName>build</actionName>
+            <goals>
+                <goal>install</goal>
+            </goals>
+            <properties>
+                <webapp.projectStage>Development</webapp.projectStage>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+            </properties>
+        </action>
+        <action>
+            <actionName>rebuild</actionName>
+            <goals>
+                <goal>clean</goal>
+                <goal>install</goal>
+            </goals>
+            <properties>
+                
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                
+                <webapp.projectStage>Development</webapp.projectStage>
+                
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                
+            </properties>
+        </action>
+        <action>
+            <actionName>build-with-dependencies</actionName>
+            <reactor>also-make</reactor>
+            <goals>
+                <goal>install</goal>
+            </goals>
+            <properties>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                <webapp.projectStage>Development</webapp.projectStage>
+            </properties>
+        </action>
+        <action>
+            <actionName>run</actionName>
+            <goals>
+                <goal>package</goal>
+            </goals>
+            <properties>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                <netbeans.deploy>true</netbeans.deploy>
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                <webapp.projectStage>Development</webapp.projectStage>
+            </properties>
+        </action>
+        <action>
+            <actionName>run.single.deploy</actionName>
+            <goals>
+                <goal>package</goal>
+            </goals>
+            <properties>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                <netbeans.deploy>true</netbeans.deploy>
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                <netbeans.deploy.clientUrlPart>${webpagePath}</netbeans.deploy.clientUrlPart>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                <webapp.projectStage>Development</webapp.projectStage>
+            </properties>
+        </action>
+        <action>
+            <actionName>debug.single.deploy</actionName>
+            <goals>
+                <goal>package</goal>
+            </goals>
+            <properties>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                <netbeans.deploy>true</netbeans.deploy>
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                <netbeans.deploy.debugmode>true</netbeans.deploy.debugmode>
+                <netbeans.deploy.clientUrlPart>${webpagePath}</netbeans.deploy.clientUrlPart>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                <webapp.projectStage>Development</webapp.projectStage>
+            </properties>
+        </action>
+    </actions>
diff --git a/test/javaee6/resource/cacheLastMod/ear/pom.xml b/test/javaee6/resource/cacheLastMod/ear/pom.xml
new file mode 100644
index 0000000..29d2804
--- /dev/null
+++ b/test/javaee6/resource/cacheLastMod/ear/pom.xml
@@ -0,0 +1,95 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.javaee6.resource.cacheLastMod</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <name>Mojarra ${project.version} - Test - JavaEE 6 - resource - cacheLastMod - ear</name>
+    <groupId>com.sun.faces.test.javaee6.resource.cacheLastMod</groupId>
+    <artifactId>ear</artifactId>
+    <packaging>ear</packaging>
+    <build>
+        <finalName>test-javaee6-resource-cacheLastMod</finalName>
+        <plugins>
+            <plugin>
+                <artifactId>maven-ear-plugin</artifactId>
+                <version>2.8</version>
+                <configuration>
+                    <displayName>Test-Ear</displayName>
+                    <encoding>UTF-8</encoding>
+                    <version>6</version>
+                    <defaultLibBundleDir>lib/</defaultLibBundleDir>
+                    <modules>
+                        <webModule>
+                            <groupId>com.sun.faces.test.javaee6.resource.cacheLastMod</groupId>
+                            <artifactId>war</artifactId>
+                            <contextRoot>/test-javaee6-resource-cacheLastMod</contextRoot>
+                        </webModule>
+                    </modules>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+    <dependencies>
+        <dependency>
+            <groupId>com.sun.faces.test.javaee6.resource.cacheLastMod</groupId>
+            <artifactId>war</artifactId>
+            <type>war</type>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>com.sun.faces.test.javaee6.resource.cacheLastMod</groupId>
+            <artifactId>jar</artifactId>
+            <type>jar</type>
+            <version>${project.version}</version>
+        </dependency>
+    </dependencies>
+    <properties>
+        <netbeans.hint.deploy.server>gfv3ee6</netbeans.hint.deploy.server>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/test/javaee6/resource/cacheLastMod/jar/pom.xml b/test/javaee6/resource/cacheLastMod/jar/pom.xml
new file mode 100644
index 0000000..11bf85a
--- /dev/null
+++ b/test/javaee6/resource/cacheLastMod/jar/pom.xml
@@ -0,0 +1,59 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.javaee6.resource.cacheLastMod</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <name>Mojarra ${project.version} - Test - JavaEE 6 - resource - cacheLastMod - jar</name>
+    <groupId>com.sun.faces.test.javaee6.resource.cacheLastMod</groupId>
+    <artifactId>jar</artifactId>
+    <packaging>jar</packaging>
+    <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
+
diff --git a/test/javaee6/resource/cacheLastMod/jar/src/main/java/util/jsf/CustomResourceResolver.java b/test/javaee6/resource/cacheLastMod/jar/src/main/java/util/jsf/CustomResourceResolver.java
new file mode 100644
index 0000000..eb3e28a
--- /dev/null
+++ b/test/javaee6/resource/cacheLastMod/jar/src/main/java/util/jsf/CustomResourceResolver.java
@@ -0,0 +1,32 @@
+package util.jsf;
+
+import java.net.URL;
+import javax.faces.view.facelets.ResourceResolver;
+
+/** Allows to share jsf files (placing them in shared jar) 
+ *  between several applications (war or ear)
+ */
+public class CustomResourceResolver extends ResourceResolver {
+
+    private ResourceResolver parent;
+    private String basePath;
+
+    public CustomResourceResolver(ResourceResolver parent) {
+        this.parent = parent;
+        this.basePath = "/META-INF/resources"; // TODO: Make configureable?
+    }
+
+    @Override
+    public URL resolveUrl(String path) {
+        // Resolves from WAR
+        URL url = parent.resolveUrl(path); 
+
+        if (url == null) {
+            // Resolves from JAR
+            url = getClass().getResource(basePath + path); 
+        }
+
+        return url;
+    }
+
+}
\ No newline at end of file
diff --git a/test/javaee6/resource/cacheLastMod/jar/src/main/resources/META-INF/resources/other-styles.css b/test/javaee6/resource/cacheLastMod/jar/src/main/resources/META-INF/resources/other-styles.css
new file mode 100644
index 0000000..ba90878
--- /dev/null
+++ b/test/javaee6/resource/cacheLastMod/jar/src/main/resources/META-INF/resources/other-styles.css
@@ -0,0 +1,4 @@
+
+.another-style {
+    color: red;
+}
\ No newline at end of file
diff --git a/test/javaee6/resource/cacheLastMod/jar/src/main/resources/META-INF/resources/styles.css b/test/javaee6/resource/cacheLastMod/jar/src/main/resources/META-INF/resources/styles.css
new file mode 100644
index 0000000..d1ad576
--- /dev/null
+++ b/test/javaee6/resource/cacheLastMod/jar/src/main/resources/META-INF/resources/styles.css
@@ -0,0 +1,4 @@
+
+.some-style {
+    color: purple;
+}
diff --git a/test/javaee6/resource/cacheLastMod/jar/src/main/resources/META-INF/resources/template.xhtml b/test/javaee6/resource/cacheLastMod/jar/src/main/resources/META-INF/resources/template.xhtml
new file mode 100644
index 0000000..1570cd8
--- /dev/null
+++ b/test/javaee6/resource/cacheLastMod/jar/src/main/resources/META-INF/resources/template.xhtml
@@ -0,0 +1,26 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:c="http://java.sun.com/jsp/jstl/core"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:gc="http://java.sun.com/jsf/composite/components">
+
+<h:head>
+    <h:outputScript name="test.js"/>
+
+    <h:outputStylesheet name="styles.css" />
+    <h:outputStylesheet name="other-styles.css" />
+    
+</h:head>
+
+<h:body>
+
+<ui:insert name="body">Unspecified body</ui:insert>
+
+</h:body>
+
+</html>
+  
diff --git a/test/javaee6/resource/cacheLastMod/jar/src/main/resources/META-INF/resources/test.js b/test/javaee6/resource/cacheLastMod/jar/src/main/resources/META-INF/resources/test.js
new file mode 100644
index 0000000..f96f3c2
--- /dev/null
+++ b/test/javaee6/resource/cacheLastMod/jar/src/main/resources/META-INF/resources/test.js
@@ -0,0 +1,5 @@
+function doSomething(id)  {
+    var elem = document.getElementById(id);
+    // change default value to some other text to reproduce the caching issue
+    elem.defaultValue = "bla-bla text...";
+}
\ No newline at end of file
diff --git a/test/javaee6/resource/cacheLastMod/pom.xml b/test/javaee6/resource/cacheLastMod/pom.xml
new file mode 100644
index 0000000..9f5f0a9
--- /dev/null
+++ b/test/javaee6/resource/cacheLastMod/pom.xml
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.javaee6.resource</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.javaee6.resource.cacheLastMod</groupId>
+    <artifactId>pom</artifactId>
+    <packaging>pom</packaging>
+    <name>Mojarra ${project.version} - Test - JavaEE 6 - resource - cacheLastMod</name>
+    <modules>
+        <module>ear</module>
+        <module>jar</module>
+        <module>war</module>
+        <module>war-test</module>
+    </modules>
+</project>
diff --git a/test/javaee6/resource/cacheLastMod/war-test/nbactions.xml b/test/javaee6/resource/cacheLastMod/war-test/nbactions.xml
new file mode 100644
index 0000000..4843bec
--- /dev/null
+++ b/test/javaee6/resource/cacheLastMod/war-test/nbactions.xml
@@ -0,0 +1,163 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--><actions>
+        <action>
+            <actionName>debug.test.single</actionName>
+            <goals>
+                <goal>test-compile</goal>
+                <goal>surefire:test</goal>
+            </goals>
+            <properties>
+                <test>${packageClassName}</test>
+                <forkMode>once</forkMode>
+                <maven.surefire.debug>-Xdebug -Xrunjdwp:transport=dt_socket,server=n,address=${jpda.address}</maven.surefire.debug>
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                <jpda.listen>true</jpda.listen>
+                <project.build.finalName>test-javaee6-resource-cacheLastMod</project.build.finalName>
+                <webapp.projectStage>Development</webapp.projectStage>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                <integration.serverPort>8080</integration.serverPort>
+                <integration.serverName>127.0.0.1</integration.serverName>
+                <integration.url>http://127.0.0.1:8080/test-javaee6-resource-cacheLastMod/</integration.url>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+            </properties>
+        </action>
+        <action>
+            <actionName>test.single</actionName>
+            <goals>
+                <goal>test-compile</goal>
+                <goal>surefire:test</goal>
+            </goals>
+            <properties>
+                <project.build.finalName>test-javaee6-resource-cacheLastMod</project.build.finalName>
+                <integration.serverPort>8080</integration.serverPort>
+                <integration.serverName>127.0.0.1</integration.serverName>
+                <integration.url>http://127.0.0.1:8080/test-javaee6-resource-cacheLastMod/</integration.url>
+                <test>${packageClassName}</test>
+            </properties>
+        </action>
+        <action>
+            <actionName>build</actionName>
+            <goals>
+                <goal>install</goal>
+            </goals>
+            <properties>
+                <webapp.projectStage>Development</webapp.projectStage>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+            </properties>
+        </action>
+        <action>
+            <actionName>rebuild</actionName>
+            <goals>
+                <goal>clean</goal>
+                <goal>install</goal>
+            </goals>
+            <properties>
+                
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                
+                <webapp.projectStage>Development</webapp.projectStage>
+                
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                
+            </properties>
+        </action>
+        <action>
+            <actionName>build-with-dependencies</actionName>
+            <reactor>also-make</reactor>
+            <goals>
+                <goal>install</goal>
+            </goals>
+            <properties>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                <webapp.projectStage>Development</webapp.projectStage>
+            </properties>
+        </action>
+        <action>
+            <actionName>run</actionName>
+            <goals>
+                <goal>package</goal>
+            </goals>
+            <properties>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                <netbeans.deploy>true</netbeans.deploy>
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                <webapp.projectStage>Development</webapp.projectStage>
+            </properties>
+        </action>
+        <action>
+            <actionName>run.single.deploy</actionName>
+            <goals>
+                <goal>package</goal>
+            </goals>
+            <properties>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                <netbeans.deploy>true</netbeans.deploy>
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                <netbeans.deploy.clientUrlPart>${webpagePath}</netbeans.deploy.clientUrlPart>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                <webapp.projectStage>Development</webapp.projectStage>
+            </properties>
+        </action>
+        <action>
+            <actionName>debug.single.deploy</actionName>
+            <goals>
+                <goal>package</goal>
+            </goals>
+            <properties>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                <netbeans.deploy>true</netbeans.deploy>
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                <netbeans.deploy.debugmode>true</netbeans.deploy.debugmode>
+                <netbeans.deploy.clientUrlPart>${webpagePath}</netbeans.deploy.clientUrlPart>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                <webapp.projectStage>Development</webapp.projectStage>
+            </properties>
+        </action>
+    </actions>
diff --git a/test/javaee6/resource/cacheLastMod/war-test/pom.xml b/test/javaee6/resource/cacheLastMod/war-test/pom.xml
new file mode 100644
index 0000000..f641ff9
--- /dev/null
+++ b/test/javaee6/resource/cacheLastMod/war-test/pom.xml
@@ -0,0 +1,70 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.javaee6.resource.cacheLastMod</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <name>Mojarra ${project.version} - Test - JavaEE 6 - resource - cacheLastMod - war-test</name>
+    <groupId>com.sun.faces.test.javaee6.resource.cacheLastMod</groupId>
+    <artifactId>war-test</artifactId>
+    <packaging>jar</packaging>
+    <build>
+        <finalName>test-javaee6-resource-cacheLastMod</finalName>
+    </build>
+    <dependencies>
+        <dependency>
+            <groupId>com.sun.faces.test.javaee6.resource.cacheLastMod</groupId>
+            <artifactId>ear</artifactId>
+            <version>${project.version}</version>
+            <type>ear</type>
+            <scope>provided</scope>
+        </dependency>
+    </dependencies>
+    <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/test/javaee6/resource/cacheLastMod/war-test/src/test/java/com/sun/faces/test/javaee6/resource/cacheLastMod/wartest/Issue2895IT.java b/test/javaee6/resource/cacheLastMod/war-test/src/test/java/com/sun/faces/test/javaee6/resource/cacheLastMod/wartest/Issue2895IT.java
new file mode 100644
index 0000000..2668336
--- /dev/null
+++ b/test/javaee6/resource/cacheLastMod/war-test/src/test/java/com/sun/faces/test/javaee6/resource/cacheLastMod/wartest/Issue2895IT.java
@@ -0,0 +1,97 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.javaee6.resource.cacheLastMod.wartest;
+
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.Page;
+import static org.junit.Assert.*;
+
+public class Issue2895IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @BeforeClass
+    public static void setUpClass() throws Exception {
+    }
+
+    @AfterClass
+    public static void tearDownClass() throws Exception {
+    }
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testResourceCaching() throws Exception {
+        webClient.getOptions().setThrowExceptionOnFailingStatusCode(false);
+        
+        Page initialPage = webClient.getPage(webUrl + "faces/index.xhtml");
+        if (initialPage.getWebResponse().getStatusCode() == 200) {
+            String cssUrl = webUrl + "faces/javax.faces.resource/styles.css";
+            Page cssPage = webClient.getPage(cssUrl);
+            assertEquals(200, cssPage.getWebResponse().getStatusCode());
+
+            String ifModifiedSinceValue = cssPage.getWebResponse().getResponseHeaderValue("Last-Modified");
+            if (ifModifiedSinceValue == null) {
+                ifModifiedSinceValue = cssPage.getWebResponse().getResponseHeaderValue("Date");
+            }
+
+            webClient.getCache().clear();
+            webClient.addRequestHeader("If-Modified-Since", ifModifiedSinceValue);
+            webClient.addRequestHeader(("Cache-Control"), "max-age=0");
+            cssPage = webClient.getPage(cssUrl);
+            assertEquals(304, cssPage.getWebResponse().getStatusCode());
+        }
+    }
+}
diff --git a/test/javaee6/resource/cacheLastMod/war/pom.xml b/test/javaee6/resource/cacheLastMod/war/pom.xml
new file mode 100644
index 0000000..c715599
--- /dev/null
+++ b/test/javaee6/resource/cacheLastMod/war/pom.xml
@@ -0,0 +1,73 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.javaee6.resource.cacheLastMod</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <name>Mojarra ${project.version} - Test - JavaEE 6 - resource - cacheLastMod - war</name>
+    <groupId>com.sun.faces.test.javaee6.resource.cacheLastMod</groupId>
+    <artifactId>war</artifactId>
+    <packaging>war</packaging>
+    <build>
+        <finalName>test-javaee6-resource-cacheLastMod</finalName>
+        <plugins>
+            <plugin>
+                <groupId>org.codehaus.cargo</groupId>
+                <artifactId>cargo-maven2-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <id>run-test</id>
+                        <phase>none</phase>
+                    </execution>
+                </executions>                        
+            </plugin>
+        </plugins>
+    </build>    
+    <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/test/javaee6/resource/cacheLastMod/war/src/main/webapp/WEB-INF/faces-config.xml b/test/javaee6/resource/cacheLastMod/war/src/main/webapp/WEB-INF/faces-config.xml
new file mode 100644
index 0000000..c1cacaa
--- /dev/null
+++ b/test/javaee6/resource/cacheLastMod/war/src/main/webapp/WEB-INF/faces-config.xml
@@ -0,0 +1,7 @@
+<?xml version='1.0' encoding='UTF-8'?>
+
+<faces-config version="2.0"
+              xmlns="http://java.sun.com/xml/ns/javaee"
+              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+              xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd">
+</faces-config>
diff --git a/test/javaee6/resource/cacheLastMod/war/src/main/webapp/WEB-INF/web.xml b/test/javaee6/resource/cacheLastMod/war/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..cb7c858
--- /dev/null
+++ b/test/javaee6/resource/cacheLastMod/war/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" 
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>${webapp.projectStage}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
+        <param-value>${webapp.partialStateSaving}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>${webapp.stateSavingMethod}</param-value>
+    </context-param>
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <session-config>
+        <session-timeout>30</session-timeout>
+    </session-config>
+    <welcome-file-list>
+        <welcome-file>faces/index.xhtml</welcome-file>
+    </welcome-file-list>
+</web-app>
diff --git a/test/javaee6/resource/cacheLastMod/war/src/main/webapp/index.xhtml b/test/javaee6/resource/cacheLastMod/war/src/main/webapp/index.xhtml
new file mode 100644
index 0000000..7da83b2
--- /dev/null
+++ b/test/javaee6/resource/cacheLastMod/war/src/main/webapp/index.xhtml
@@ -0,0 +1,27 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:c="http://java.sun.com/jsp/jstl/core"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:fn="http://java.sun.com/jsp/jstl/functions"
+      xmlns:gc="http://java.sun.com/jsf/composite/components">
+
+<ui:composition template="/template.xhtml">
+
+<ui:define name="body">
+    <h:outputText value="This is a test of static resources caching" styleClass="some-style"/>
+    <div class="another-style">
+        To reproduce the issue: after deploying this app and opening this page in a browser, 
+        change JS code or/and some style color - redeploy the app, reload the page (F5) 
+        and you will see that the old styles/JS are still used. 
+    </div>
+    <textarea id="text-area-id"/>
+    <script>doSomething("text-area-id");</script>
+</ui:define>
+
+</ui:composition>
+
+</html>
\ No newline at end of file
diff --git a/test/javaee6/resource/pom.xml b/test/javaee6/resource/pom.xml
new file mode 100644
index 0000000..1ec0edc
--- /dev/null
+++ b/test/javaee6/resource/pom.xml
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.javaee6</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.javaee6.resource</groupId>
+    <artifactId>pom</artifactId>
+    <packaging>pom</packaging>
+    <name>Mojarra ${project.version} - Test - JavaEE 6 - resource</name>
+    <modules>
+        <module>cacheLastMod</module>
+    </modules>
+</project>
diff --git a/test/javaee6web/ajax/pom.xml b/test/javaee6web/ajax/pom.xml
new file mode 100644
index 0000000..fd6eb4a
--- /dev/null
+++ b/test/javaee6web/ajax/pom.xml
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.javaee6web</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <artifactId>ajaxc</artifactId>
+    <packaging>war</packaging>
+    <name>Mojarra ${project.version} - Test - JavaEE 6 Web - Ajax</name>
+    <build>
+        <finalName>test-javaee6web-ajax</finalName>
+    </build>
+    <properties>
+        <netbeans.hint.deploy.server>gfv3ee6</netbeans.hint.deploy.server>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/test/javaee6web/ajax/src/main/java/com/sun/faces/test/javaee6web/ajax/ProgrammaticClientBehaviorBean.java b/test/javaee6web/ajax/src/main/java/com/sun/faces/test/javaee6web/ajax/ProgrammaticClientBehaviorBean.java
new file mode 100644
index 0000000..498d98b
--- /dev/null
+++ b/test/javaee6web/ajax/src/main/java/com/sun/faces/test/javaee6web/ajax/ProgrammaticClientBehaviorBean.java
@@ -0,0 +1,84 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.javaee6web.ajax;
+
+import javax.annotation.PostConstruct;
+import javax.enterprise.inject.Model;
+import javax.faces.component.behavior.AjaxBehavior;
+import javax.faces.component.html.HtmlInputText;
+import javax.faces.context.FacesContext;
+import javax.faces.event.AbortProcessingException;
+import javax.faces.event.AjaxBehaviorEvent;
+import javax.faces.event.AjaxBehaviorListener;
+
+ at Model
+public class ProgrammaticClientBehaviorBean implements AjaxBehaviorListener {
+
+    private HtmlInputText text;
+
+    public HtmlInputText getText() {
+        return text;
+    }
+
+    public void setText(HtmlInputText text) {
+        this.text = text;
+    }
+
+    @Override
+    public void processAjaxBehavior(AjaxBehaviorEvent event)
+            throws AbortProcessingException {
+    }
+
+    @PostConstruct
+    public void init() {
+        HtmlInputText inputText = (HtmlInputText) FacesContext
+                .getCurrentInstance().getApplication()
+                .createComponent(HtmlInputText.COMPONENT_TYPE);
+        AjaxBehavior ajaxBehavior = (AjaxBehavior) FacesContext
+                .getCurrentInstance().getApplication()
+                .createBehavior(AjaxBehavior.BEHAVIOR_ID);
+        inputText.setId("input");
+        ajaxBehavior.addAjaxBehaviorListener(this);
+        ajaxBehavior.setTransient(true);
+        ajaxBehavior.setDisabled(false);
+        inputText.addClientBehavior("focus", ajaxBehavior);
+        text = inputText;
+    }
+}
diff --git a/test/javaee6web/ajax/src/main/webapp/WEB-INF/beans.xml b/test/javaee6web/ajax/src/main/webapp/WEB-INF/beans.xml
new file mode 100644
index 0000000..38bba1f
--- /dev/null
+++ b/test/javaee6web/ajax/src/main/webapp/WEB-INF/beans.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<beans xmlns="http://java.sun.com/xml/ns/javaee"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
+</beans>
diff --git a/test/javaee6web/ajax/src/main/webapp/WEB-INF/glassfish-web.xml b/test/javaee6web/ajax/src/main/webapp/WEB-INF/glassfish-web.xml
new file mode 100644
index 0000000..7408bab
--- /dev/null
+++ b/test/javaee6web/ajax/src/main/webapp/WEB-INF/glassfish-web.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE glassfish-web-app PUBLIC 
+    "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" 
+    "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
+
+<glassfish-web-app error-url="">
+    <context-root>/test-javaee6web-ajax</context-root>
+    <class-loader delegate="true"/>
+    <jsp-config>
+        <property name="keepgenerated" value="true">
+            <description>Keep a copy of the generated servlet class' java code.</description>
+        </property>
+    </jsp-config>
+</glassfish-web-app>
diff --git a/test/javaee6web/ajax/src/main/webapp/WEB-INF/web.xml b/test/javaee6web/ajax/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..104b3ca
--- /dev/null
+++ b/test/javaee6web/ajax/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" 
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>${webapp.projectStage}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
+        <param-value>${webapp.partialStateSaving}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>${webapp.stateSavingMethod}</param-value>
+    </context-param>
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <session-config>
+        <session-timeout>30</session-timeout>
+    </session-config>
+    <welcome-file-list>
+        <welcome-file>faces/index.xhtml</welcome-file>
+    </welcome-file-list>
+</web-app>
diff --git a/test/javaee6web/ajax/src/main/webapp/programmaticClientBehavior.xhtml b/test/javaee6web/ajax/src/main/webapp/programmaticClientBehavior.xhtml
new file mode 100644
index 0000000..cfa88e1
--- /dev/null
+++ b/test/javaee6web/ajax/src/main/webapp/programmaticClientBehavior.xhtml
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC
+    "-//W3C//DTD XHTML 1.0 Transitional//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title>Programmatic ClientBehavior</title>
+    </h:head>
+    <h:body>
+        <h:outputScript library="javax.faces" name="jsf.js" target="head"/>
+        <h:form id="form">
+            <h:inputText id="input1" binding="#{programmaticClientBehaviorBean.text}" value="hi"/>
+        </h:form>
+    </h:body>
+</html>
diff --git a/test/javaee6web/ajax/src/test/java/com/sun/faces/test/javaee6web/ajax/Issue2674IT.java b/test/javaee6web/ajax/src/test/java/com/sun/faces/test/javaee6web/ajax/Issue2674IT.java
new file mode 100644
index 0000000..e852519
--- /dev/null
+++ b/test/javaee6web/ajax/src/test/java/com/sun/faces/test/javaee6web/ajax/Issue2674IT.java
@@ -0,0 +1,77 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDLGPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.javaee6web.ajax; 
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.After;
+import static org.junit.Assert.assertTrue;
+import org.junit.Before;
+import org.junit.Test;
+
+public class Issue2674IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    /**
+     * This test verifies AjaxBehavior was programmatically attached to input 
+     * text component. 
+     * 
+     * @throws Exception
+     */
+    @Test
+    public void testProgrammaticAjaxBehavior() throws Exception {
+        String expectedString = "<input id="+'"'+"form:input1"+'"'+" type="+'"'+"text"+'"'+" name="+'"'+"form:input1"+'"'+" value="+'"'+"hi"+'"'+" onfocus="+'"'+"mojarra.ab(this,event,'focus',0,0)"+'"';
+        HtmlPage page = webClient.getPage(webUrl+"faces/programmaticClientBehavior.xhtml");
+        assertTrue(page.asXml().contains(expectedString));
+    }
+}
diff --git a/test/javaee6web/el/basic/nbactions.xml b/test/javaee6web/el/basic/nbactions.xml
new file mode 100644
index 0000000..4a3418a
--- /dev/null
+++ b/test/javaee6web/el/basic/nbactions.xml
@@ -0,0 +1,96 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--><actions>
+    <action>
+        <actionName>debug.test.single</actionName>
+        <goals>
+            <goal>test-compile</goal>
+            <goal>surefire:test</goal>
+        </goals>
+        <properties>
+            <test>${packageClassName}</test>
+            <forkMode>once</forkMode>
+            <maven.surefire.debug>-Xdebug -Xrunjdwp:transport=dt_socket,server=n,address=${jpda.address}</maven.surefire.debug>
+            <jpda.listen>true</jpda.listen>
+            <project.build.finalName>test-javaee6web-el-basic</project.build.finalName>
+            <integration.serverPort>8080</integration.serverPort>
+            <integration.serverName>localhost</integration.serverName>
+            <integration.url>http://localhost:8080/test-javaee6web-el-basic/</integration.url>
+            <webapp.partialStateSaving>true</webapp.partialStateSaving>
+        </properties>
+    </action>
+    <action>
+        <actionName>test.single</actionName>
+        <goals>
+            <goal>test-compile</goal>
+            <goal>surefire:test</goal>
+        </goals>
+        <properties>
+            <webapp.partialStateSaving>true</webapp.partialStateSaving>
+            <project.build.finalName>test-javaee6web-el-basic</project.build.finalName>
+            <integration.serverPort>8080</integration.serverPort>
+            <integration.serverName>localhost</integration.serverName>
+            <integration.url>http://localhost:8080/test-javaee6web-el-basic/</integration.url>
+            <test>${packageClassName}</test>
+        </properties>
+    </action>
+    <action>
+        <actionName>clean</actionName>
+        <goals>
+            <goal>clean</goal>
+        </goals>
+        <properties>
+            <webapp.partialStateSaving>true</webapp.partialStateSaving>
+        </properties>
+    </action>
+    <action>
+        <actionName>rebuild</actionName>
+        <goals>
+            <goal>clean</goal>
+            <goal>install</goal>
+        </goals>
+        <properties>
+            <webapp.partialStateSaving>true</webapp.partialStateSaving>
+        </properties>
+    </action>
+</actions>
diff --git a/test/javaee6web/el/basic/pom.xml b/test/javaee6web/el/basic/pom.xml
new file mode 100644
index 0000000..e2b6636
--- /dev/null
+++ b/test/javaee6web/el/basic/pom.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.javaee6web.el</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.javaee6web.el</groupId>
+    <artifactId>basic</artifactId>
+    <packaging>war</packaging>
+    <name>Mojarra ${project.version} - Test - JavaEE 6 Web - EL - Basic Tests</name>
+    <build>
+        <finalName>test-javaee6web-el-basic</finalName>
+    </build>
+    <properties>
+        <netbeans.hint.deploy.server>gfv3ee6</netbeans.hint.deploy.server>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/test/javaee6web/el/basic/src/main/java/com/sun/faces/test/javaee6web/el/basic/ExceptionSwallowedBean.java b/test/javaee6web/el/basic/src/main/java/com/sun/faces/test/javaee6web/el/basic/ExceptionSwallowedBean.java
new file mode 100644
index 0000000..d435bc7
--- /dev/null
+++ b/test/javaee6web/el/basic/src/main/java/com/sun/faces/test/javaee6web/el/basic/ExceptionSwallowedBean.java
@@ -0,0 +1,74 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.test.javaee6web.el.basic;
+
+import java.io.Serializable;
+import javax.enterprise.context.SessionScoped;
+import javax.faces.event.AbortProcessingException;
+import javax.faces.event.ValueChangeEvent;
+import javax.inject.Named;
+
+ at Named(value = "exceptionSwallowedBean")
+ at SessionScoped
+public class ExceptionSwallowedBean implements Serializable {
+
+    private String property;
+
+    public String getProperty() {
+        return property;
+    }
+
+    public void setProperty(String property) {
+        this.property = property;
+    }
+
+    public void actionWithException() throws AbortProcessingException {
+        throw new IllegalStateException();
+    }
+
+    public void actionWithAbort() throws AbortProcessingException {
+        throw new AbortProcessingException();
+    }
+
+    public void throwException(ValueChangeEvent vce) throws AbortProcessingException {
+        throw new NullPointerException();
+    }
+}
diff --git a/test/javaee6web/el/basic/src/main/java/com/sun/faces/test/javaee6web/el/basic/ViewExpiredBean.java b/test/javaee6web/el/basic/src/main/java/com/sun/faces/test/javaee6web/el/basic/ViewExpiredBean.java
new file mode 100644
index 0000000..603723d
--- /dev/null
+++ b/test/javaee6web/el/basic/src/main/java/com/sun/faces/test/javaee6web/el/basic/ViewExpiredBean.java
@@ -0,0 +1,67 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.javaee6web.el.basic;
+
+import java.io.Serializable;
+import java.util.Map;
+import javax.annotation.PreDestroy;
+import javax.faces.context.FacesContext;
+import javax.faces.view.ViewScoped;
+import javax.inject.Named;
+
+ at Named(value = "viewExpiredBean")
+ at ViewScoped
+public class ViewExpiredBean implements Serializable {
+
+    @PreDestroy
+    public void destroy() {
+        Map<String, Object> applicationMap = FacesContext.getCurrentInstance().getExternalContext().getApplicationMap();
+        if (!applicationMap.containsKey("count")) {
+            applicationMap.put("count", 1);
+        } else {
+            int count = ((Integer) applicationMap.get("count")) + 1;
+            applicationMap.put("count", count);
+        }
+    }
+
+    public Integer getCount() {
+        return (Integer) FacesContext.getCurrentInstance().getExternalContext().getApplicationMap().get("count");
+    }
+}
diff --git a/test/javaee6web/el/basic/src/main/webapp/WEB-INF/beans.xml b/test/javaee6web/el/basic/src/main/webapp/WEB-INF/beans.xml
new file mode 100644
index 0000000..9a31ab2
--- /dev/null
+++ b/test/javaee6web/el/basic/src/main/webapp/WEB-INF/beans.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<beans xmlns="http://java.sun.com/xml/ns/javaee" 
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
+</beans>
diff --git a/test/javaee6web/el/basic/src/main/webapp/WEB-INF/glassfish-web.xml b/test/javaee6web/el/basic/src/main/webapp/WEB-INF/glassfish-web.xml
new file mode 100644
index 0000000..d6c56b6
--- /dev/null
+++ b/test/javaee6web/el/basic/src/main/webapp/WEB-INF/glassfish-web.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
+<glassfish-web-app error-url="">
+  <context-root>/test-javaee6web-el-basic</context-root>
+  <class-loader delegate="true"/>
+  <jsp-config>
+    <property name="keepgenerated" value="true">
+      <description>Keep a copy of the generated servlet class' java code.</description>
+    </property>
+  </jsp-config>
+</glassfish-web-app>
diff --git a/test/javaee6web/el/basic/src/main/webapp/WEB-INF/web.xml b/test/javaee6web/el/basic/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..89c2659
--- /dev/null
+++ b/test/javaee6web/el/basic/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" 
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>${webapp.projectStage}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
+        <param-value>${webapp.partialStateSaving}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>${webapp.stateSavingMethod}</param-value>
+    </context-param>
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <session-config>
+        <session-timeout>30</session-timeout>
+    </session-config>
+    <welcome-file-list>
+        <welcome-file>faces/index.xhtml</welcome-file>
+    </welcome-file-list>
+</web-app>
diff --git a/test/javaee6web/el/basic/src/main/webapp/abortDuringMethodExpressionEL.xhtml b/test/javaee6web/el/basic/src/main/webapp/abortDuringMethodExpressionEL.xhtml
new file mode 100644
index 0000000..782e41d
--- /dev/null
+++ b/test/javaee6web/el/basic/src/main/webapp/abortDuringMethodExpressionEL.xhtml
@@ -0,0 +1,49 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:form id="form" prependId="false">
+        <h:inputText value="#{exceptionSwallowedBean.property}" id="input" />
+        <h:commandButton id="submit" actionListener="#{exceptionSwallowedBean.actionWithAbort}" value="Do it!"/>
+    </h:form>
+</html>
diff --git a/test/javaee6web/el/basic/src/main/webapp/exceptionDuringMethodExpressionEL.xhtml b/test/javaee6web/el/basic/src/main/webapp/exceptionDuringMethodExpressionEL.xhtml
new file mode 100644
index 0000000..659fbeb
--- /dev/null
+++ b/test/javaee6web/el/basic/src/main/webapp/exceptionDuringMethodExpressionEL.xhtml
@@ -0,0 +1,49 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:form id="form" prependId="false">
+        <h:inputText value="#{exceptionSwallowedBean.property}" id="input" />
+        <h:commandButton id="submit" actionListener="#{exceptionSwallowedBean.actionWithException}" value="Submit"/>
+    </h:form>
+</html>
diff --git a/test/javaee6web/el/basic/src/main/webapp/exceptionDuringValueChangeEL.xhtml b/test/javaee6web/el/basic/src/main/webapp/exceptionDuringValueChangeEL.xhtml
new file mode 100644
index 0000000..ee30a48
--- /dev/null
+++ b/test/javaee6web/el/basic/src/main/webapp/exceptionDuringValueChangeEL.xhtml
@@ -0,0 +1,49 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:form id="form" prependId="false">
+        <h:inputText value="#{exceptionSwallowedBean.property}" id="input"
+                     valueChangeListener="#{exceptionSwallowedBean.throwException}" />
+        <h:commandButton id="submit" value="submit" />
+    </h:form>
+</html>
diff --git a/test/javaee6web/el/basic/src/main/webapp/index.xhtml b/test/javaee6web/el/basic/src/main/webapp/index.xhtml
new file mode 100644
index 0000000..829c823
--- /dev/null
+++ b/test/javaee6web/el/basic/src/main/webapp/index.xhtml
@@ -0,0 +1,55 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+    <head>
+        <title></title>
+    </head>
+    <body>
+        <p>EL Tests</p>
+        <ul>
+            <li><a href="faces/abortDuringMethodExpressionEL.xhtml">abortDuringMethodExpressionEL</a></li>
+            <li><a href="faces/exceptionDuringMethodExpressionEL.xhtml">exceptionDuringMethodExpressionEL</a></li>
+            <li><a href="faces/exceptionDuringValueChangeEL.xhtml">exceptionDuringValueChangeEL</a></li>
+        </ul>
+    </body>
+</html>
diff --git a/test/javaee6web/el/basic/src/main/webapp/viewExpired.xhtml b/test/javaee6web/el/basic/src/main/webapp/viewExpired.xhtml
new file mode 100644
index 0000000..7dea618
--- /dev/null
+++ b/test/javaee6web/el/basic/src/main/webapp/viewExpired.xhtml
@@ -0,0 +1,17 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title>View Expired Bean</title>
+    </h:head>
+    <h:body>
+        <h:form>
+            <h:outputText value="#{viewExpiredBean.count}"/>
+            <h:commandButton value="Submit"/>
+        </h:form>
+    </h:body>
+</html>
diff --git a/test/javaee6web/el/basic/src/test/java/com/sun/faces/test/javaee6web/el/basic/Issue2397IT.java b/test/javaee6web/el/basic/src/test/java/com/sun/faces/test/javaee6web/el/basic/Issue2397IT.java
new file mode 100644
index 0000000..573c767
--- /dev/null
+++ b/test/javaee6web/el/basic/src/test/java/com/sun/faces/test/javaee6web/el/basic/Issue2397IT.java
@@ -0,0 +1,90 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDLGPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.javaee6web.el.basic;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import org.junit.*;
+import static org.junit.Assert.*;
+
+public class Issue2397IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testExceptionDuringValueChangeEL() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/exceptionDuringValueChangeEL.xhtml");
+        webClient.getOptions().setThrowExceptionOnFailingStatusCode(false);
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("submit");
+        page = button.click();
+        assertTrue(page.asXml().contains("java.lang.NullPointerException"));
+    }
+
+    @Test
+    public void testExceptionDuringMethodExpressionEL() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/exceptionDuringMethodExpressionEL.xhtml");
+        webClient.getOptions().setThrowExceptionOnFailingStatusCode(false);
+        HtmlSubmitInput input = (HtmlSubmitInput) page.getElementById("submit");
+        page = input.click();
+        assertTrue(page.asXml().contains("IllegalStateException"));
+    }
+
+    @Test
+    public void testAbortDuringMethodExpressionEL() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/abortDuringMethodExpressionEL.xhtml");
+        webClient.getOptions().setThrowExceptionOnFailingStatusCode(false);
+        HtmlSubmitInput input = (HtmlSubmitInput) page.getElementById("submit");
+        page = input.click();
+        assertEquals(200, page.getWebResponse().getStatusCode());
+    }
+}
diff --git a/test/javaee6web/el/basic/src/test/java/com/sun/faces/test/javaee6web/el/basic/Issue3194IT.java b/test/javaee6web/el/basic/src/test/java/com/sun/faces/test/javaee6web/el/basic/Issue3194IT.java
new file mode 100644
index 0000000..52d93aa
--- /dev/null
+++ b/test/javaee6web/el/basic/src/test/java/com/sun/faces/test/javaee6web/el/basic/Issue3194IT.java
@@ -0,0 +1,98 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.javaee6web.el.basic;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.After;
+import static org.junit.Assert.assertTrue;
+import org.junit.Before;
+import org.junit.Test;
+
+public class Issue3194IT {
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testViewExpired() throws Exception {
+        webClient.getPage(webUrl + "faces/viewExpired.xhtml");
+        webClient.getPage(webUrl + "faces/viewExpired.xhtml");
+        webClient.getPage(webUrl + "faces/viewExpired.xhtml");
+        webClient.getPage(webUrl + "faces/viewExpired.xhtml");
+        webClient.getPage(webUrl + "faces/viewExpired.xhtml");
+        webClient.getPage(webUrl + "faces/viewExpired.xhtml");
+        webClient.getPage(webUrl + "faces/viewExpired.xhtml");
+        webClient.getPage(webUrl + "faces/viewExpired.xhtml");
+        webClient.getPage(webUrl + "faces/viewExpired.xhtml");
+        webClient.getPage(webUrl + "faces/viewExpired.xhtml");
+        webClient.getPage(webUrl + "faces/viewExpired.xhtml");
+        webClient.getPage(webUrl + "faces/viewExpired.xhtml");
+        webClient.getPage(webUrl + "faces/viewExpired.xhtml");
+        webClient.getPage(webUrl + "faces/viewExpired.xhtml");
+        webClient.getPage(webUrl + "faces/viewExpired.xhtml");
+        webClient.getPage(webUrl + "faces/viewExpired.xhtml");
+        webClient.getPage(webUrl + "faces/viewExpired.xhtml");
+        webClient.getPage(webUrl + "faces/viewExpired.xhtml");
+        webClient.getPage(webUrl + "faces/viewExpired.xhtml");
+        webClient.getPage(webUrl + "faces/viewExpired.xhtml");
+        webClient.getPage(webUrl + "faces/viewExpired.xhtml");
+        webClient.getPage(webUrl + "faces/viewExpired.xhtml");
+        webClient.getPage(webUrl + "faces/viewExpired.xhtml");
+        webClient.getPage(webUrl + "faces/viewExpired.xhtml");
+        webClient.getPage(webUrl + "faces/viewExpired.xhtml");
+        HtmlPage page = webClient.getPage(webUrl + "faces/viewExpired.xhtml");
+        assertTrue(page.asXml().contains("1"));
+        page = webClient.getPage(webUrl + "faces/viewExpired.xhtml");
+        assertTrue(page.asXml().contains("2"));
+        page = webClient.getPage(webUrl + "faces/viewExpired.xhtml");
+        assertTrue(page.asXml().contains("3"));
+    }
+}
diff --git a/test/javaee6web/el/pom.xml b/test/javaee6web/el/pom.xml
new file mode 100644
index 0000000..9ce7442
--- /dev/null
+++ b/test/javaee6web/el/pom.xml
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.javaee6web</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.javaee6web.el</groupId>
+    <artifactId>pom</artifactId>
+    <packaging>pom</packaging>
+    <name>Mojarra ${project.version} - Test - JavaEE 6 Web - EL</name>
+    <modules>
+        <module>basic</module>
+    </modules>
+</project>
diff --git a/test/javaee6web/pom.xml b/test/javaee6web/pom.xml
new file mode 100644
index 0000000..a2fa9d6
--- /dev/null
+++ b/test/javaee6web/pom.xml
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" 
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.javaee6web</groupId>
+    <artifactId>pom</artifactId>
+    <packaging>pom</packaging>
+    <name>Mojarra ${project.version} - Test - JavaEE 6 Web</name>
+    <dependencies>
+        <dependency>
+            <groupId>com.sun.faces.test</groupId>
+            <artifactId>util</artifactId>
+            <version>${project.version}</version>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+    <modules>
+        <module>ajax</module>        
+        <module>el</module>
+    </modules>
+</project>
diff --git a/test/javaee7/action/basic/pom.xml b/test/javaee7/action/basic/pom.xml
new file mode 100644
index 0000000..b0d9233
--- /dev/null
+++ b/test/javaee7/action/basic/pom.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.javaee7.action</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.javaee7.action</groupId>
+    <artifactId>basic</artifactId>
+    <packaging>war</packaging>
+    <name>Mojarra ${project.version} - Test - JavaEE 7 - Action - Basic Tests</name>
+    <build>
+        <finalName>test-javaee7-action-basic</finalName>
+    </build>
+    <properties>
+        <netbeans.hint.deploy.server>gfv3ee6</netbeans.hint.deploy.server>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/test/javaee7/action/basic/src/main/java/com/sun/faces/test/javaee7/action/basic/BasicBean.java b/test/javaee7/action/basic/src/main/java/com/sun/faces/test/javaee7/action/basic/BasicBean.java
new file mode 100644
index 0000000..d207135
--- /dev/null
+++ b/test/javaee7/action/basic/src/main/java/com/sun/faces/test/javaee7/action/basic/BasicBean.java
@@ -0,0 +1,86 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.javaee7.action.basic;
+
+import javax.enterprise.context.RequestScoped;
+import com.sun.faces.action.RequestMapping;
+import java.io.Serializable;
+import javax.faces.context.FacesContext;
+import javax.inject.Named;
+
+ at Named("basicBean")
+ at RequestScoped
+public class BasicBean implements Serializable {
+    private String value;
+
+    public BasicBean() {
+    }
+    
+    @RequestMapping(value = "/exact.xhtml")
+    public String invoke() {
+        return "/exact.xhtml";
+    }
+    
+    @RequestMapping(value = "/prefix/*")
+    public String prefix() {
+        return "/prefix.xhtml";
+    }
+    
+    @RequestMapping(value = "*.do")
+    public String extension() {
+        return "/extension.xhtml";
+    }
+    
+    @RequestMapping(value = "/form1b.xhtml")
+    public String form1() {
+        String inputText1 = (String) FacesContext.getCurrentInstance().
+                getExternalContext().getRequestParameterMap().get("inputText1");
+        setValue("We set inputText1 manually to - " + inputText1);
+        return "/form1b.xhtml";
+    }
+    
+    public String getValue() {
+        return this.value;
+    }
+    
+    public void setValue(String value) {
+        this.value = value;
+    }
+}
diff --git a/test/javaee7/action/basic/src/main/webapp/WEB-INF/beans.xml b/test/javaee7/action/basic/src/main/webapp/WEB-INF/beans.xml
new file mode 100644
index 0000000..28f5565
--- /dev/null
+++ b/test/javaee7/action/basic/src/main/webapp/WEB-INF/beans.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<beans xmlns="http://xmlns.jcp.org/xml/ns/javaee"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/beans_1_1.xsd"
+       bean-discovery-mode="annotated">
+</beans>
diff --git a/test/javaee7/action/basic/src/main/webapp/WEB-INF/faces-config.xml b/test/javaee7/action/basic/src/main/webapp/WEB-INF/faces-config.xml
new file mode 100644
index 0000000..673260b
--- /dev/null
+++ b/test/javaee7/action/basic/src/main/webapp/WEB-INF/faces-config.xml
@@ -0,0 +1,52 @@
+<?xml version='1.0' encoding='UTF-8'?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
+              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+              xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
+              version="2.0">
+    <factory>
+        <lifecycle-factory>com.sun.faces.action.ActionLifecycleFactory</lifecycle-factory>
+    </factory>
+</faces-config>
diff --git a/test/javaee7/action/basic/src/main/webapp/WEB-INF/glassfish-web.xml b/test/javaee7/action/basic/src/main/webapp/WEB-INF/glassfish-web.xml
new file mode 100644
index 0000000..9409544
--- /dev/null
+++ b/test/javaee7/action/basic/src/main/webapp/WEB-INF/glassfish-web.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
+<glassfish-web-app error-url="">
+  <context-root>/test-javaee7-action-basic</context-root>
+  <class-loader delegate="true"/>
+  <jsp-config>
+    <property name="keepgenerated" value="true">
+      <description>Keep a copy of the generated servlet class' java code.</description>
+    </property>
+  </jsp-config>
+</glassfish-web-app>
diff --git a/test/javaee7/action/basic/src/main/webapp/WEB-INF/web.xml b/test/javaee7/action/basic/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..a2fe460
--- /dev/null
+++ b/test/javaee7/action/basic/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,86 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<web-app xmlns="http://java.sun.com/xml/ns/javaee"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee web-app_2_5.xsd"
+         version="2.5">
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>${webapp.projectStage}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
+        <param-value>${webapp.partialStateSaving}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>${webapp.stateSavingMethod}</param-value>
+    </context-param>
+    <servlet>
+        <servlet-name>Faces Action Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <init-param>
+            <param-name>javax.faces.LIFECYCLE_ID</param-name>
+            <param-value>com.sun.faces.action.ActionLifecycle</param-value>
+        </init-param>
+        <load-on-startup>1</load-on-startup>
+    </servlet>      
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>      
+    <servlet-mapping>
+        <servlet-name>Faces Action Servlet</servlet-name>
+        <url-pattern>/action/*</url-pattern>
+    </servlet-mapping>    
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>    
+    <welcome-file-list>
+        <welcome-file>faces/index.xhtml</welcome-file>
+    </welcome-file-list>
+</web-app>
diff --git a/test/javaee7/action/basic/src/main/webapp/exact.xhtml b/test/javaee7/action/basic/src/main/webapp/exact.xhtml
new file mode 100644
index 0000000..cf97fa1
--- /dev/null
+++ b/test/javaee7/action/basic/src/main/webapp/exact.xhtml
@@ -0,0 +1,13 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://xmlns.jcp.org/jsf/html">
+    <h:head>
+        <title>Facelet Title</title>
+    </h:head>
+    <h:body>
+        This page used an exact mapping of /exact.xhtml using @RequestMapping.
+    </h:body>
+</html>
diff --git a/test/javaee7/action/basic/src/main/webapp/extension.xhtml b/test/javaee7/action/basic/src/main/webapp/extension.xhtml
new file mode 100644
index 0000000..ca7605c
--- /dev/null
+++ b/test/javaee7/action/basic/src/main/webapp/extension.xhtml
@@ -0,0 +1,14 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://xmlns.jcp.org/jsf/html">
+    <h:head>
+        <title>Facelet Title</title>
+    </h:head>
+    <h:body>
+        This page used an extension mapping of *.do using @RequestMapping.
+    </h:body>
+</html>
+
diff --git a/test/javaee7/action/basic/src/main/webapp/form1.xhtml b/test/javaee7/action/basic/src/main/webapp/form1.xhtml
new file mode 100644
index 0000000..3eff5e5
--- /dev/null
+++ b/test/javaee7/action/basic/src/main/webapp/form1.xhtml
@@ -0,0 +1,14 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://xmlns.jcp.org/jsf/html">
+    <h:head>
+        <title>Facelet Title</title>
+    </h:head>
+    <h:body>
+        <form action="#{facesContext.externalContext.requestContextPath}/action/form1b.xhtml" enctype="multipart/form-data">
+            <h:inputText id="inputText1" value="#{basicBean.value}"/>
+            <input id="submit" type="submit" value="Submit"/>
+        </form>
+    </h:body>
+</html>
diff --git a/test/javaee7/action/basic/src/main/webapp/form1b.xhtml b/test/javaee7/action/basic/src/main/webapp/form1b.xhtml
new file mode 100644
index 0000000..1fa917d
--- /dev/null
+++ b/test/javaee7/action/basic/src/main/webapp/form1b.xhtml
@@ -0,0 +1,14 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://xmlns.jcp.org/jsf/html">
+    <h:head>
+        <title>Facelet Title</title>
+    </h:head>
+    <h:body>
+        We did a POST to an action based URL and the result is:
+        <h:outputText value="#{basicBean.value}"/>
+    </h:body>
+</html>
diff --git a/test/javaee7/action/basic/src/main/webapp/prefix.xhtml b/test/javaee7/action/basic/src/main/webapp/prefix.xhtml
new file mode 100644
index 0000000..1a8300e
--- /dev/null
+++ b/test/javaee7/action/basic/src/main/webapp/prefix.xhtml
@@ -0,0 +1,13 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://xmlns.jcp.org/jsf/html">
+    <h:head>
+        <title>Facelet Title</title>
+    </h:head>
+    <h:body>
+        This page used an prefix mapping of /prefix/* using @RequestMapping.
+    </h:body>
+</html>
diff --git a/test/javaee7/action/basic/src/test/java/com/sun/faces/test/javaee7/action/basic/Issue3136IT.java b/test/javaee7/action/basic/src/test/java/com/sun/faces/test/javaee7/action/basic/Issue3136IT.java
new file mode 100644
index 0000000..c3c12d9
--- /dev/null
+++ b/test/javaee7/action/basic/src/test/java/com/sun/faces/test/javaee7/action/basic/Issue3136IT.java
@@ -0,0 +1,103 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDLGPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.javaee7.action.basic;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlElement;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import static com.sun.faces.test.junit.JsfServerExclude.WEBLOGIC_12_1_4;
+import com.sun.faces.test.junit.JsfTest;
+import com.sun.faces.test.junit.JsfTestRunner;
+import static com.sun.faces.test.junit.JsfVersion.JSF_2_2_0;
+import org.junit.After;
+import static org.junit.Assert.assertTrue;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+ at RunWith(JsfTestRunner.class)
+public class Issue3136IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @JsfTest(value = JSF_2_2_0)
+    @Test
+    public void testExactMapping() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "action/exact.xhtml");
+        assertTrue(page.asXml().contains("This page used an exact mapping of /exact.xhtml using @RequestMapping."));
+    }
+
+    @JsfTest(value = JSF_2_2_0)
+    @Test
+    public void testPrefixMapping() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "action/prefix/prefix.xhtml");
+        assertTrue(page.asXml().contains("This page used an prefix mapping of /prefix/* using @RequestMapping."));
+    }
+
+    @JsfTest(value = JSF_2_2_0)
+    @Test
+    public void testExtensionMapping() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "action/extension.do");
+        assertTrue(page.asXml().contains("This page used an extension mapping of *.do using @RequestMapping."));
+    }
+
+    @JsfTest(value = JSF_2_2_0)
+    @Test
+    public void testSimpleForm() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/form1.xhtml");
+        HtmlElement inputText1 = page.getHtmlElementById("inputText1");
+        inputText1.type("12345");
+        HtmlElement submit = page.getHtmlElementById("submit");
+        page = submit.click();
+        assertTrue(page.asXml().contains("We set inputText1 manually to - 12345"));
+    }
+}
diff --git a/test/javaee7/action/pom.xml b/test/javaee7/action/pom.xml
new file mode 100644
index 0000000..4e643ec
--- /dev/null
+++ b/test/javaee7/action/pom.xml
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.javaee7</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.javaee7.action</groupId>
+    <artifactId>pom</artifactId>
+    <packaging>pom</packaging>
+    <name>Mojarra ${project.version} - Test - JavaEE 7 - Action</name>
+  <modules>
+    <module>basic</module>
+  </modules>
+</project>
diff --git a/test/javaee7/beanValidation/methodValidation/nbactions.xml b/test/javaee7/beanValidation/methodValidation/nbactions.xml
new file mode 100644
index 0000000..b9af90a
--- /dev/null
+++ b/test/javaee7/beanValidation/methodValidation/nbactions.xml
@@ -0,0 +1,163 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--><actions>
+        <action>
+            <actionName>debug.test.single</actionName>
+            <goals>
+                <goal>test-compile</goal>
+                <goal>surefire:test</goal>
+            </goals>
+            <properties>
+                <test>beanValidatorCdi</test>
+                <forkMode>once</forkMode>
+                <maven.surefire.debug>-Xdebug -Xrunjdwp:transport=dt_socket,server=n,address=${jpda.address}</maven.surefire.debug>
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                <jpda.listen>true</jpda.listen>
+                <project.build.finalName>test-javaee7-beanValidation-methodValidation</project.build.finalName>
+                <webapp.projectStage>Development</webapp.projectStage>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                <integration.serverPort>8080</integration.serverPort>
+                <integration.serverName>localhost</integration.serverName>
+                <integration.url>http://localhost:8080/test-javaee7-beanValidation-methodValidation/</integration.url>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+            </properties>
+        </action>
+        <action>
+            <actionName>test.single</actionName>
+            <goals>
+                <goal>test-compile</goal>
+                <goal>surefire:test</goal>
+            </goals>
+            <properties>
+                <project.build.finalName>test-javaee7-beanValidation-methodValidation</project.build.finalName>
+                <integration.serverPort>8080</integration.serverPort>
+                <integration.serverName>localhost</integration.serverName>
+                <integration.url>http://localhost:8080/test-javaee7-beanValidation-methodValidation/</integration.url>
+                <test>beanValidatorCdi</test>
+            </properties>
+        </action>
+        <action>
+            <actionName>build</actionName>
+            <goals>
+                <goal>install</goal>
+            </goals>
+            <properties>
+                <webapp.projectStage>Development</webapp.projectStage>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+            </properties>
+        </action>
+        <action>
+            <actionName>rebuild</actionName>
+            <goals>
+                <goal>clean</goal>
+                <goal>install</goal>
+            </goals>
+            <properties>
+                
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                
+                <webapp.projectStage>Development</webapp.projectStage>
+                
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                
+            </properties>
+        </action>
+        <action>
+            <actionName>build-with-dependencies</actionName>
+            <reactor>also-make</reactor>
+            <goals>
+                <goal>install</goal>
+            </goals>
+            <properties>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                <webapp.projectStage>Development</webapp.projectStage>
+            </properties>
+        </action>
+        <action>
+            <actionName>run</actionName>
+            <goals>
+                <goal>package</goal>
+            </goals>
+            <properties>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                <netbeans.deploy>true</netbeans.deploy>
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                <webapp.projectStage>Development</webapp.projectStage>
+            </properties>
+        </action>
+        <action>
+            <actionName>run.single.deploy</actionName>
+            <goals>
+                <goal>package</goal>
+            </goals>
+            <properties>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                <netbeans.deploy>true</netbeans.deploy>
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                <netbeans.deploy.clientUrlPart>${webpagePath}</netbeans.deploy.clientUrlPart>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                <webapp.projectStage>Development</webapp.projectStage>
+            </properties>
+        </action>
+        <action>
+            <actionName>debug.single.deploy</actionName>
+            <goals>
+                <goal>package</goal>
+            </goals>
+            <properties>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                <netbeans.deploy>true</netbeans.deploy>
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                <netbeans.deploy.debugmode>true</netbeans.deploy.debugmode>
+                <netbeans.deploy.clientUrlPart>${webpagePath}</netbeans.deploy.clientUrlPart>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                <webapp.projectStage>Development</webapp.projectStage>
+            </properties>
+        </action>
+    </actions>
diff --git a/test/javaee7/beanValidation/methodValidation/pom.xml b/test/javaee7/beanValidation/methodValidation/pom.xml
new file mode 100644
index 0000000..69e6d21
--- /dev/null
+++ b/test/javaee7/beanValidation/methodValidation/pom.xml
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <artifactId>pom</artifactId>
+    <groupId>com.sun.faces.test.javaee7.beanValidation</groupId>
+    <version>2.2.8-SNAPSHOT</version>
+  </parent>
+  
+  <groupId>com.sun.faces.test.javaee7.beanValidation</groupId>
+  <artifactId>methodValidation</artifactId>
+  <version>2.2.8-SNAPSHOT</version>
+  <packaging>war</packaging>
+  <name>Mojarra ${project.version} - Test - JavaEE 7 - Bean Validation - Method Validation</name>
+  
+  <build>
+    <finalName>test-javaee7-beanValidation-methodValidation</finalName>
+  </build>
+
+</project>
diff --git a/test/javaee7/beanValidation/methodValidation/src/main/java/com/sun/faces/test/javaee7/beanValidator/methodValidator/FooConstraint.java b/test/javaee7/beanValidation/methodValidation/src/main/java/com/sun/faces/test/javaee7/beanValidator/methodValidator/FooConstraint.java
new file mode 100644
index 0000000..25b602e
--- /dev/null
+++ b/test/javaee7/beanValidation/methodValidation/src/main/java/com/sun/faces/test/javaee7/beanValidator/methodValidator/FooConstraint.java
@@ -0,0 +1,64 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.test.javaee7.beanValidator.methodValidator;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+import javax.validation.Constraint;
+import javax.validation.Payload;
+
+ at Documented
+ at Constraint(validatedBy = FooConstraintValidator.class)
+ at Target({ ElementType.METHOD, ElementType.FIELD, ElementType.PARAMETER })
+ at Retention(RetentionPolicy.RUNTIME)
+public @interface FooConstraint {
+    
+    String message() default "my message";
+
+    Class<?>[] groups() default {};
+
+    Class<? extends Payload>[] payload() default {};
+    
+
+}
diff --git a/test/javaee7/beanValidation/methodValidation/src/main/java/com/sun/faces/test/javaee7/beanValidator/methodValidator/FooConstraintValidator.java b/test/javaee7/beanValidation/methodValidation/src/main/java/com/sun/faces/test/javaee7/beanValidator/methodValidator/FooConstraintValidator.java
new file mode 100644
index 0000000..6aa54ff
--- /dev/null
+++ b/test/javaee7/beanValidation/methodValidation/src/main/java/com/sun/faces/test/javaee7/beanValidator/methodValidator/FooConstraintValidator.java
@@ -0,0 +1,63 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.test.javaee7.beanValidator.methodValidator;
+
+import javax.inject.Inject;
+import javax.validation.ConstraintValidator;
+import javax.validation.ConstraintValidatorContext;
+
+public class FooConstraintValidator implements ConstraintValidator<FooConstraint, String> {
+    
+    @Override
+    public void initialize(FooConstraint a) {
+    }
+
+    @Override
+    public boolean isValid(String t, ConstraintValidatorContext cvc) {
+        boolean result = false;
+        result = (t != null && "foo".equals(t));
+        
+        return result;
+    }
+    
+    
+    
+}
diff --git a/test/javaee7/beanValidation/methodValidation/src/main/java/com/sun/faces/test/javaee7/beanValidator/methodValidator/HelloService.java b/test/javaee7/beanValidation/methodValidation/src/main/java/com/sun/faces/test/javaee7/beanValidator/methodValidator/HelloService.java
new file mode 100644
index 0000000..1f0fe4a
--- /dev/null
+++ b/test/javaee7/beanValidation/methodValidation/src/main/java/com/sun/faces/test/javaee7/beanValidator/methodValidator/HelloService.java
@@ -0,0 +1,54 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.javaee7.beanValidator.methodValidator;
+
+import java.io.Serializable;
+import javax.enterprise.context.Dependent;
+
+ at Dependent
+public class HelloService implements Serializable {
+    
+    public String sayHello(@FooConstraint String mustBeFoo) {
+        String result = "value is foo";
+        
+        return result;
+    }
+    
+}
diff --git a/test/javaee7/beanValidation/methodValidation/src/main/java/com/sun/faces/test/javaee7/beanValidator/methodValidator/UserBean.java b/test/javaee7/beanValidation/methodValidation/src/main/java/com/sun/faces/test/javaee7/beanValidator/methodValidator/UserBean.java
new file mode 100644
index 0000000..f263f5e
--- /dev/null
+++ b/test/javaee7/beanValidation/methodValidation/src/main/java/com/sun/faces/test/javaee7/beanValidator/methodValidator/UserBean.java
@@ -0,0 +1,60 @@
+package com.sun.faces.test.javaee7.beanValidator.methodValidator;
+
+import java.io.Serializable;
+import javax.enterprise.context.RequestScoped;
+import javax.faces.application.FacesMessage;
+import javax.faces.context.FacesContext;
+import javax.inject.Inject;
+import javax.inject.Named;
+import javax.validation.ConstraintViolationException;
+
+ at Named
+ at RequestScoped
+public class UserBean implements Serializable {
+    
+    @Inject
+    HelloService hello;
+    
+    protected String methodValidationValue = "foo";
+    protected String valueValidationValue = "foo";
+    
+    public UserBean() {}
+
+    @FooConstraint
+    public String getValueValidationValue() {
+        return valueValidationValue;
+    }
+
+    public void setValueValidationValue(String ValueValidationValue) {
+        this.valueValidationValue = ValueValidationValue;
+    }
+
+    public String getMethodValidationValue() {
+        return methodValidationValue;
+    }
+
+    public void setMethodValidationValue(String firstName) {
+        this.methodValidationValue = firstName;
+    }
+    
+    public String getHelloValue() {
+        return hello.sayHello(getMethodValidationValue());
+    }
+    
+    public void preRenderViewListener() {
+        FacesContext context = FacesContext.getCurrentInstance();
+        
+        String value = (String) context.getExternalContext().getRequestMap().get("value");
+        if (null != value && value.equals("bar")) {
+            try {
+                hello.sayHello(value);
+            } catch (ConstraintViolationException e) {
+                FacesMessage m = new FacesMessage(e.getMessage());
+                context.addMessage(null, m);
+            }
+        }
+        
+    }
+    
+}
+
diff --git a/test/javaee7/beanValidation/methodValidation/src/main/webapp/WEB-INF/beans.xml b/test/javaee7/beanValidation/methodValidation/src/main/webapp/WEB-INF/beans.xml
new file mode 100644
index 0000000..ba9b101
--- /dev/null
+++ b/test/javaee7/beanValidation/methodValidation/src/main/webapp/WEB-INF/beans.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://xmlns.jcp.org/xml/ns/javaee"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/beans_1_1.xsd"
+       bean-discovery-mode="annotated">
+</beans>
diff --git a/test/javaee7/beanValidation/methodValidation/src/main/webapp/WEB-INF/glassfish-web.xml b/test/javaee7/beanValidation/methodValidation/src/main/webapp/WEB-INF/glassfish-web.xml
new file mode 100644
index 0000000..ca6dc92
--- /dev/null
+++ b/test/javaee7/beanValidation/methodValidation/src/main/webapp/WEB-INF/glassfish-web.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
+<glassfish-web-app error-url="">
+  <context-root>/test-javaee7-beanValidation-methodValidation</context-root>
+  <class-loader delegate="true"/>
+  <jsp-config>
+    <property name="keepgenerated" value="true">
+      <description>Keep a copy of the generated servlet class' java code.</description>
+    </property>
+  </jsp-config>
+</glassfish-web-app>
diff --git a/test/javaee7/beanValidation/methodValidation/src/main/webapp/WEB-INF/web.xml b/test/javaee7/beanValidation/methodValidation/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..8722f96
--- /dev/null
+++ b/test/javaee7/beanValidation/methodValidation/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>${webapp.projectStage}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
+        <param-value>${webapp.partialStateSaving}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>${webapp.stateSavingMethod}</param-value>
+    </context-param>
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <welcome-file-list>
+        <welcome-file>faces/index.xhtml</welcome-file>
+    </welcome-file-list>
+</web-app>
diff --git a/test/javaee7/beanValidation/methodValidation/src/main/webapp/index.xhtml b/test/javaee7/beanValidation/methodValidation/src/main/webapp/index.xhtml
new file mode 100644
index 0000000..e106912
--- /dev/null
+++ b/test/javaee7/beanValidation/methodValidation/src/main/webapp/index.xhtml
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html" 
+      xmlns:f="http://java.sun.com/jsf/core">
+    <head>
+        <title></title>
+    </head>
+    <body>
+    <f:event type="preRenderView" listener="#{userBean.preRenderViewListener}"  />
+        
+        <h:form prependId="false">
+            <p>method validation test. A non-foo value here invokes method validation during Render Response without correctly dealing with the exception: <h:inputText id="firstName" value="#{userBean.methodValidationValue}" /> </p>
+            <p>value validation test. A non-foo value here invokes value validation during Process Validations: <h:inputText id="lastName" value="#{userBean.valueValidationValue}" /> </p>
+            <p>method validation test. A bar value here invokes method validation before Render Response and does correctly handle the exception.
+            <h:inputText id="requestValue" value="#{requestScope.value}" />
+            
+            </p>
+            
+            <p id="helloValue">#{userBean.helloValue}</p>
+            
+            <h:commandButton id="button" value="submit" />
+            
+            <h:messages />
+
+            
+            
+        </h:form>
+    </body>
+</html>
+
diff --git a/test/javaee7/beanValidation/methodValidation/src/test/java/com/sun/faces/test/javaee7/beanValidator/methodValidator/MethodValidatorIT.java b/test/javaee7/beanValidation/methodValidation/src/test/java/com/sun/faces/test/javaee7/beanValidator/methodValidator/MethodValidatorIT.java
new file mode 100644
index 0000000..5d576bf
--- /dev/null
+++ b/test/javaee7/beanValidation/methodValidation/src/test/java/com/sun/faces/test/javaee7/beanValidator/methodValidator/MethodValidatorIT.java
@@ -0,0 +1,122 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.javaee7.beanValidator.methodValidator;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
+import static com.sun.faces.test.junit.JsfServerExclude.WEBLOGIC_12_1_4;
+import com.sun.faces.test.junit.JsfTest;
+import com.sun.faces.test.junit.JsfTestRunner;
+import static com.sun.faces.test.junit.JsfVersion.JSF_2_2_0;
+import org.junit.After;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+ at RunWith(JsfTestRunner.class)
+public class MethodValidatorIT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @JsfTest(value = JSF_2_2_0, excludes = {WEBLOGIC_12_1_4})
+    @Test
+    public void testIncorrectUsage() throws Exception {
+        webClient.getOptions().setThrowExceptionOnFailingStatusCode(false);
+        HtmlPage page = webClient.getPage(webUrl);
+        HtmlTextInput input = (HtmlTextInput) page.getElementById("firstName");
+        input.setValueAttribute("notfoo");
+        
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("button");
+        page = button.click();
+        String text = page.asText();
+
+        assertTrue(text.contains("FooConstraint"));
+        assertTrue(text.contains("my message"));
+        assertEquals(500, page.getWebResponse().getStatusCode());
+    }
+    
+    @JsfTest(value = JSF_2_2_0, excludes = {WEBLOGIC_12_1_4})
+    @Test
+    public void testCorrectUsage1() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl);
+        HtmlTextInput input = (HtmlTextInput) page.getElementById("lastName");
+        input.setValueAttribute("notfoo");
+        
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("button");
+        page = button.click();
+        String text = page.asText();
+
+        assertTrue(!text.contains("FooConstraint"));
+        assertTrue(text.contains("my message"));
+        assertEquals(200, page.getWebResponse().getStatusCode());
+    }
+    
+    @JsfTest(value = JSF_2_2_0, excludes = {WEBLOGIC_12_1_4})
+    @Test
+    public void testCorrectUsage2() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl);
+        HtmlTextInput input = (HtmlTextInput) page.getElementById("requestValue");
+        input.setValueAttribute("bar");
+        
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("button");
+        page = button.click();
+        String text = page.asText();
+
+        assertTrue(text.contains("FooConstraint"));
+        assertTrue(text.contains("my message"));
+        assertEquals(200, page.getWebResponse().getStatusCode());
+    }
+}
diff --git a/test/javaee7/beanValidation/pom.xml b/test/javaee7/beanValidation/pom.xml
new file mode 100644
index 0000000..7af7966
--- /dev/null
+++ b/test/javaee7/beanValidation/pom.xml
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.javaee7</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.javaee7.beanValidation</groupId>
+    <artifactId>pom</artifactId>
+    <packaging>pom</packaging>
+    <name>Mojarra ${project.version} - Test - JavaEE 7 - Bean Validation</name>
+    <modules>
+        <module>methodValidation</module>
+    </modules>
+</project>
diff --git a/test/javaee7/cdi/beanValidatorCdi/nbactions.xml b/test/javaee7/cdi/beanValidatorCdi/nbactions.xml
new file mode 100644
index 0000000..95003ee
--- /dev/null
+++ b/test/javaee7/cdi/beanValidatorCdi/nbactions.xml
@@ -0,0 +1,163 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--><actions>
+        <action>
+            <actionName>debug.test.single</actionName>
+            <goals>
+                <goal>test-compile</goal>
+                <goal>surefire:test</goal>
+            </goals>
+            <properties>
+                <test>beanValidatorCdi</test>
+                <forkMode>once</forkMode>
+                <maven.surefire.debug>-Xdebug -Xrunjdwp:transport=dt_socket,server=n,address=${jpda.address}</maven.surefire.debug>
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                <jpda.listen>true</jpda.listen>
+                <project.build.finalName>test-javaee7-cdi-beanValidatorCdi</project.build.finalName>
+                <webapp.projectStage>Development</webapp.projectStage>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                <integration.serverPort>8080</integration.serverPort>
+                <integration.serverName>localhost</integration.serverName>
+                <integration.url>http://localhost:8080/test-javaee7-cdi-beanValidatorCdi/</integration.url>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+            </properties>
+        </action>
+        <action>
+            <actionName>test.single</actionName>
+            <goals>
+                <goal>test-compile</goal>
+                <goal>surefire:test</goal>
+            </goals>
+            <properties>
+                <project.build.finalName>test-javaee7-cdi-beanValidatorCdi</project.build.finalName>
+                <integration.serverPort>8080</integration.serverPort>
+                <integration.serverName>localhost</integration.serverName>
+                <integration.url>http://localhost:8080/test-javaee7-cdi-beanValidatorCdi/</integration.url>
+                <test>beanValidatorCdi</test>
+            </properties>
+        </action>
+        <action>
+            <actionName>build</actionName>
+            <goals>
+                <goal>install</goal>
+            </goals>
+            <properties>
+                <webapp.projectStage>Development</webapp.projectStage>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+            </properties>
+        </action>
+        <action>
+            <actionName>rebuild</actionName>
+            <goals>
+                <goal>clean</goal>
+                <goal>install</goal>
+            </goals>
+            <properties>
+                
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                
+                <webapp.projectStage>Development</webapp.projectStage>
+                
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                
+            </properties>
+        </action>
+        <action>
+            <actionName>build-with-dependencies</actionName>
+            <reactor>also-make</reactor>
+            <goals>
+                <goal>install</goal>
+            </goals>
+            <properties>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                <webapp.projectStage>Development</webapp.projectStage>
+            </properties>
+        </action>
+        <action>
+            <actionName>run</actionName>
+            <goals>
+                <goal>package</goal>
+            </goals>
+            <properties>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                <netbeans.deploy>true</netbeans.deploy>
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                <webapp.projectStage>Development</webapp.projectStage>
+            </properties>
+        </action>
+        <action>
+            <actionName>run.single.deploy</actionName>
+            <goals>
+                <goal>package</goal>
+            </goals>
+            <properties>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                <netbeans.deploy>true</netbeans.deploy>
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                <netbeans.deploy.clientUrlPart>${webpagePath}</netbeans.deploy.clientUrlPart>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                <webapp.projectStage>Development</webapp.projectStage>
+            </properties>
+        </action>
+        <action>
+            <actionName>debug.single.deploy</actionName>
+            <goals>
+                <goal>package</goal>
+            </goals>
+            <properties>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                <netbeans.deploy>true</netbeans.deploy>
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                <netbeans.deploy.debugmode>true</netbeans.deploy.debugmode>
+                <netbeans.deploy.clientUrlPart>${webpagePath}</netbeans.deploy.clientUrlPart>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                <webapp.projectStage>Development</webapp.projectStage>
+            </properties>
+        </action>
+    </actions>
diff --git a/test/javaee7/cdi/beanValidatorCdi/pom.xml b/test/javaee7/cdi/beanValidatorCdi/pom.xml
new file mode 100644
index 0000000..4816bd9
--- /dev/null
+++ b/test/javaee7/cdi/beanValidatorCdi/pom.xml
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" 
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <artifactId>pom</artifactId>
+        <groupId>com.sun.faces.test.javaee7.cdi</groupId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.javaee7.cdi</groupId>
+    <artifactId>beanValidatorCdi</artifactId>
+    <version>2.2.8-SNAPSHOT</version>
+    <packaging>war</packaging>
+    <name>Mojarra ${project.version} - Test - JavaEE 7 - CDI - beanValidatorCdi</name>  
+    <build>
+        <finalName>test-javaee7-cdi-beanValidatorCdi</finalName>
+    </build>
+</project>
diff --git a/test/javaee7/cdi/beanValidatorCdi/src/main/java/com/sun/faces/test/javaee7/cdi/beanValidatorCdi/FooConstraint.java b/test/javaee7/cdi/beanValidatorCdi/src/main/java/com/sun/faces/test/javaee7/cdi/beanValidatorCdi/FooConstraint.java
new file mode 100644
index 0000000..9ab4d29
--- /dev/null
+++ b/test/javaee7/cdi/beanValidatorCdi/src/main/java/com/sun/faces/test/javaee7/cdi/beanValidatorCdi/FooConstraint.java
@@ -0,0 +1,64 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.test.javaee7.cdi.beanValidatorCdi;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+import javax.validation.Constraint;
+import javax.validation.Payload;
+
+ at Documented
+ at Constraint(validatedBy = FooConstraintValidator.class)
+ at Target({ ElementType.METHOD, ElementType.FIELD })
+ at Retention(RetentionPolicy.RUNTIME)
+public @interface FooConstraint {
+    
+    String message() default "my message";
+
+    Class<?>[] groups() default {};
+
+    Class<? extends Payload>[] payload() default {};
+    
+
+}
diff --git a/test/javaee7/cdi/beanValidatorCdi/src/main/java/com/sun/faces/test/javaee7/cdi/beanValidatorCdi/FooConstraintValidator.java b/test/javaee7/cdi/beanValidatorCdi/src/main/java/com/sun/faces/test/javaee7/cdi/beanValidatorCdi/FooConstraintValidator.java
new file mode 100644
index 0000000..c79b856
--- /dev/null
+++ b/test/javaee7/cdi/beanValidatorCdi/src/main/java/com/sun/faces/test/javaee7/cdi/beanValidatorCdi/FooConstraintValidator.java
@@ -0,0 +1,66 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.test.javaee7.cdi.beanValidatorCdi;
+
+import javax.inject.Inject;
+import javax.validation.ConstraintValidator;
+import javax.validation.ConstraintValidatorContext;
+
+public class FooConstraintValidator implements ConstraintValidator<FooConstraint, String> {
+    
+    @Inject
+    private UserBean mySessionBean;
+
+    @Override
+    public void initialize(FooConstraint a) {
+    }
+
+    @Override
+    public boolean isValid(String t, ConstraintValidatorContext cvc) {
+        boolean result = false;
+        result = null != mySessionBean;
+        
+        return result;
+    }
+    
+    
+    
+}
diff --git a/test/javaee7/cdi/beanValidatorCdi/src/main/java/com/sun/faces/test/javaee7/cdi/beanValidatorCdi/UserBean.java b/test/javaee7/cdi/beanValidatorCdi/src/main/java/com/sun/faces/test/javaee7/cdi/beanValidatorCdi/UserBean.java
new file mode 100644
index 0000000..9f38d91
--- /dev/null
+++ b/test/javaee7/cdi/beanValidatorCdi/src/main/java/com/sun/faces/test/javaee7/cdi/beanValidatorCdi/UserBean.java
@@ -0,0 +1,93 @@
+package com.sun.faces.test.javaee7.cdi.beanValidatorCdi;
+
+import java.io.Serializable;
+import java.util.Date;
+import javax.enterprise.context.SessionScoped;
+import javax.faces.application.FacesMessage;
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.validator.ValidatorException;
+import javax.inject.Named;
+
+ at Named
+ at SessionScoped
+public class UserBean implements Serializable {
+    
+    protected String firstName = "Duke";
+    protected String lastName = "Java";
+    protected Date dob;
+    protected String sex = "Unknown";
+    protected String email;
+    protected String serviceLevel = "medium";
+    
+    public UserBean() {}
+
+    @FooConstraint
+    public String getFirstName() {
+        return firstName;
+    }
+
+    public void setFirstName(String firstName) {
+        this.firstName = firstName;
+    }
+
+    public String getLastName() {
+        return lastName;
+    }
+
+    public void setLastName(String lastName) {
+        this.lastName = lastName;
+    }
+
+    public Date getDob() {
+        return dob;
+    }
+
+    public void setDob(Date dob) {
+        this.dob = dob;
+    }
+
+    public String getSex() {
+        return sex;
+    }
+
+    public void setSex(String sex) {
+        this.sex = sex;
+    }
+
+    public String getEmail() {
+        return email;
+    }
+
+    public void setEmail(String email) {
+        this.email = email;
+    }
+
+    public String getServiceLevel() {
+        return serviceLevel;
+    }
+
+    public void setServiceLevel(String serviceLevel) {
+        this.serviceLevel = serviceLevel;
+    }
+    
+    public void validateEmail(FacesContext context, UIComponent toValidate,
+            Object value) throws ValidatorException {
+        String emailStr = (String) value;
+        if (-1 == emailStr.indexOf("@")) {
+            FacesMessage message = new FacesMessage("Invalid email address");
+            throw new ValidatorException(message);
+        }
+    }
+
+    public String addConfirmedUser() {
+        // This method would call a database or other service and add the 
+        // confirmed user information.
+        // For now, we just place an informative message in request scope
+        FacesMessage doneMessage = 
+                new FacesMessage("Successfully added new user");
+        FacesContext.getCurrentInstance().addMessage(null, doneMessage);
+        return "done";
+    }
+}
+
diff --git a/test/javaee7/cdi/beanValidatorCdi/src/main/webapp/WEB-INF/beans.xml b/test/javaee7/cdi/beanValidatorCdi/src/main/webapp/WEB-INF/beans.xml
new file mode 100644
index 0000000..ba9b101
--- /dev/null
+++ b/test/javaee7/cdi/beanValidatorCdi/src/main/webapp/WEB-INF/beans.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://xmlns.jcp.org/xml/ns/javaee"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/beans_1_1.xsd"
+       bean-discovery-mode="annotated">
+</beans>
diff --git a/test/javaee7/cdi/beanValidatorCdi/src/main/webapp/WEB-INF/glassfish-web.xml b/test/javaee7/cdi/beanValidatorCdi/src/main/webapp/WEB-INF/glassfish-web.xml
new file mode 100644
index 0000000..9dfd0b4
--- /dev/null
+++ b/test/javaee7/cdi/beanValidatorCdi/src/main/webapp/WEB-INF/glassfish-web.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE glassfish-web-app PUBLIC 
+    "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" 
+    "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
+
+<glassfish-web-app error-url="">
+    <context-root>/test-javaee7-cdi-beanValidatorCdi</context-root>
+    <class-loader delegate="true"/>
+    <jsp-config>
+        <property name="keepgenerated" value="true">
+            <description>Keep a copy of the generated servlet class' java code.</description>
+        </property>
+    </jsp-config>
+</glassfish-web-app>
diff --git a/test/javaee7/cdi/beanValidatorCdi/src/main/webapp/WEB-INF/web.xml b/test/javaee7/cdi/beanValidatorCdi/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..8722f96
--- /dev/null
+++ b/test/javaee7/cdi/beanValidatorCdi/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>${webapp.projectStage}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
+        <param-value>${webapp.partialStateSaving}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>${webapp.stateSavingMethod}</param-value>
+    </context-param>
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <welcome-file-list>
+        <welcome-file>faces/index.xhtml</welcome-file>
+    </welcome-file-list>
+</web-app>
diff --git a/test/javaee7/cdi/beanValidatorCdi/src/main/webapp/index.xhtml b/test/javaee7/cdi/beanValidatorCdi/src/main/webapp/index.xhtml
new file mode 100644
index 0000000..968b035
--- /dev/null
+++ b/test/javaee7/cdi/beanValidatorCdi/src/main/webapp/index.xhtml
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <head>
+        <title></title>
+    </head>
+    <body>
+        <h:form prependId="false">
+            <h:inputText id="input" value="#{userBean.firstName}" />
+            <h:commandButton id="button" value="submit" />
+        </h:form>
+    </body>
+</html>
+
diff --git a/test/javaee7/cdi/beanValidatorCdi/src/test/java/com/sun/faces/test/javaee7/cdi/beanValidatorCdi/Issue3014IT.java b/test/javaee7/cdi/beanValidatorCdi/src/test/java/com/sun/faces/test/javaee7/cdi/beanValidatorCdi/Issue3014IT.java
new file mode 100644
index 0000000..dbf0e36
--- /dev/null
+++ b/test/javaee7/cdi/beanValidatorCdi/src/test/java/com/sun/faces/test/javaee7/cdi/beanValidatorCdi/Issue3014IT.java
@@ -0,0 +1,80 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.javaee7.cdi.beanValidatorCdi;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import static com.sun.faces.test.junit.JsfServerExclude.WEBLOGIC_12_1_4;
+import com.sun.faces.test.junit.JsfTest;
+import com.sun.faces.test.junit.JsfTestRunner;
+import static com.sun.faces.test.junit.JsfVersion.JSF_2_2_0;
+import org.junit.After;
+import static org.junit.Assert.assertTrue;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+ at RunWith(JsfTestRunner.class)
+public class Issue3014IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @JsfTest(value = JSF_2_2_0, excludes = {WEBLOGIC_12_1_4})
+    @Test
+    public void testValidatorInjection() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl);
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("button");
+        page = button.click();
+        assertTrue(!page.getBody().asText().contains("my message"));
+    }
+}
diff --git a/test/javaee7/cdi/initDestroy/nbactions.xml b/test/javaee7/cdi/initDestroy/nbactions.xml
new file mode 100644
index 0000000..f108154
--- /dev/null
+++ b/test/javaee7/cdi/initDestroy/nbactions.xml
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<actions>
+    <action>
+        <actionName>debug.test.single</actionName>
+        <goals>
+            <goal>test-compile</goal>
+            <goal>surefire:test</goal>
+        </goals>
+        <properties>
+            <test>${packageClassName}</test>
+            <forkMode>once</forkMode>
+            <maven.surefire.debug>-Xdebug -Xrunjdwp:transport=dt_socket,server=n,address=${jpda.address}</maven.surefire.debug>
+            <jpda.listen>true</jpda.listen>
+            <integration.url>http://localhost:8080/test-javaee7-cdi-initDestroy/</integration.url>
+        </properties>
+    </action>
+    <action>
+        <actionName>test.single</actionName>
+        <goals>
+            <goal>test-compile</goal>
+            <goal>surefire:test</goal>
+        </goals>
+        <properties>
+            <integration.url>http://localhost:8080/test-javaee7-cdi-initDestroy/</integration.url>
+            <test>${packageClassName}</test>
+        </properties>
+    </action>
+</actions>
diff --git a/test/javaee7/cdi/initDestroy/pom.xml b/test/javaee7/cdi/initDestroy/pom.xml
new file mode 100644
index 0000000..030693d
--- /dev/null
+++ b/test/javaee7/cdi/initDestroy/pom.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.javaee7.cdi</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>  
+    <groupId>com.sun.faces.test.javaee7.cdi</groupId>
+    <artifactId>initDestroy</artifactId>
+    <packaging>war</packaging>
+    <name>Mojarra ${project.version} - Test - JavaEE 7 - CDI - initDestroy</name>
+    <build>
+        <finalName>test-javaee7-cdi-initDestroy</finalName>
+    </build>
+    <properties>
+        <netbeans.hint.deploy.server>gfv3ee6</netbeans.hint.deploy.server>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/test/javaee7/cdi/initDestroy/src/main/java/com/sun/faces/test/javaee7/cdi/initDestroy/AppBean.java b/test/javaee7/cdi/initDestroy/src/main/java/com/sun/faces/test/javaee7/cdi/initDestroy/AppBean.java
new file mode 100644
index 0000000..be528d1
--- /dev/null
+++ b/test/javaee7/cdi/initDestroy/src/main/java/com/sun/faces/test/javaee7/cdi/initDestroy/AppBean.java
@@ -0,0 +1,69 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.test.javaee7.cdi.initDestroy;
+
+import java.io.Serializable;
+import javax.enterprise.context.ApplicationScoped;
+import javax.faces.context.FacesContext;
+import javax.inject.Named;
+import javax.servlet.http.HttpSession;
+
+ at Named
+ at ApplicationScoped
+public class AppBean implements Serializable {
+    
+    private String sessionDestroyedMessage;
+
+    public String getSessionDestroyedMessage() {
+        return sessionDestroyedMessage;
+    }
+
+    public void setSessionDestroyedMessage(String sessionDestroyedMessage) {
+        this.sessionDestroyedMessage = sessionDestroyedMessage;
+    }
+    
+    
+    public void invalidateSession() {
+        FacesContext context = FacesContext.getCurrentInstance();
+        HttpSession mySession = (HttpSession) context.getExternalContext().getSession(true);
+        mySession.invalidate();
+    }
+}
diff --git a/test/javaee7/cdi/initDestroy/src/main/java/com/sun/faces/test/javaee7/cdi/initDestroy/FlowLogger.java b/test/javaee7/cdi/initDestroy/src/main/java/com/sun/faces/test/javaee7/cdi/initDestroy/FlowLogger.java
new file mode 100644
index 0000000..11f4689
--- /dev/null
+++ b/test/javaee7/cdi/initDestroy/src/main/java/com/sun/faces/test/javaee7/cdi/initDestroy/FlowLogger.java
@@ -0,0 +1,76 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.test.javaee7.cdi.initDestroy;
+
+import javax.enterprise.context.Dependent;
+import javax.enterprise.event.Observes;
+import javax.enterprise.context.Initialized;
+import javax.enterprise.context.Destroyed;
+import javax.faces.flow.Flow;
+import javax.faces.flow.FlowScoped;
+import javax.inject.Inject;
+
+ at Dependent
+public class FlowLogger {
+    
+    @Inject UserBean userBean;
+
+    public FlowLogger() {
+        System.out.println("FlowLogger ctor");
+    }
+        
+    
+    public void observeFlowStart(@Observes
+    @Initialized(FlowScoped.class) Flow currentFlow) {
+        long currentTime = System.currentTimeMillis();
+        userBean.setInitFlowMessage("" + currentTime);
+        userBean.setFlowId(currentFlow.getId());
+    }
+    
+    public void observeFlowEnd(@Observes
+    @Destroyed(FlowScoped.class) Flow currentFlow) {
+        long currentTime = System.currentTimeMillis();
+        userBean.setDestroyFlowMessage("" + currentTime);
+        userBean.setFlowId(currentFlow.getId());
+    }    
+    
+    
+}
diff --git a/test/javaee7/cdi/initDestroy/src/main/java/com/sun/faces/test/javaee7/cdi/initDestroy/SessionLogger.java b/test/javaee7/cdi/initDestroy/src/main/java/com/sun/faces/test/javaee7/cdi/initDestroy/SessionLogger.java
new file mode 100644
index 0000000..5425c88
--- /dev/null
+++ b/test/javaee7/cdi/initDestroy/src/main/java/com/sun/faces/test/javaee7/cdi/initDestroy/SessionLogger.java
@@ -0,0 +1,76 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.test.javaee7.cdi.initDestroy;
+
+import javax.enterprise.context.SessionScoped;
+import javax.enterprise.context.Dependent;
+import javax.enterprise.event.Observes;
+import javax.servlet.http.HttpSession;
+import javax.enterprise.context.Initialized;
+import javax.enterprise.context.Destroyed;
+import javax.inject.Inject;
+
+ at Dependent
+public class SessionLogger {
+    
+    public SessionLogger() {
+        System.out.println("SessionLogger ctor");
+    }
+    
+    
+    @Inject UserBean userBean;
+    @Inject AppBean appBean;
+    
+    
+    public void observeSessionStart(@Observes
+    @Initialized(SessionScoped.class) HttpSession event) {
+        long currentTime = System.currentTimeMillis();
+        userBean.setInitMessage("" + currentTime);
+    }
+    
+    public void observeSessionEnd(@Observes
+    @Destroyed(SessionScoped.class) HttpSession event) {
+        long currentTime = System.currentTimeMillis();
+        appBean.setSessionDestroyedMessage("" + currentTime);
+    }    
+    
+    
+}
diff --git a/test/javaee7/cdi/initDestroy/src/main/java/com/sun/faces/test/javaee7/cdi/initDestroy/SimplestFlowBean.java b/test/javaee7/cdi/initDestroy/src/main/java/com/sun/faces/test/javaee7/cdi/initDestroy/SimplestFlowBean.java
new file mode 100644
index 0000000..20ae47b
--- /dev/null
+++ b/test/javaee7/cdi/initDestroy/src/main/java/com/sun/faces/test/javaee7/cdi/initDestroy/SimplestFlowBean.java
@@ -0,0 +1,63 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.test.javaee7.cdi.initDestroy;
+
+import java.io.Serializable;
+import javax.faces.flow.FlowScoped;
+import javax.inject.Named;
+
+ at Named
+ at FlowScoped("01_simplest")
+public class SimplestFlowBean implements Serializable {
+    
+    private static final long serialVersionUID = -7991411387185942791L;
+    
+    private String name;
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+    
+}
diff --git a/test/javaee7/cdi/initDestroy/src/main/java/com/sun/faces/test/javaee7/cdi/initDestroy/UserBean.java b/test/javaee7/cdi/initDestroy/src/main/java/com/sun/faces/test/javaee7/cdi/initDestroy/UserBean.java
new file mode 100644
index 0000000..3183b82
--- /dev/null
+++ b/test/javaee7/cdi/initDestroy/src/main/java/com/sun/faces/test/javaee7/cdi/initDestroy/UserBean.java
@@ -0,0 +1,175 @@
+package com.sun.faces.test.javaee7.cdi.initDestroy;
+
+import java.io.Serializable;
+import java.util.Date;
+import javax.enterprise.context.SessionScoped;
+import javax.faces.application.FacesMessage;
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.validator.ValidatorException;
+import javax.inject.Named;
+
+ at Named
+ at SessionScoped
+public class UserBean implements Serializable {
+    
+    protected String firstName = "Duke";
+    protected String lastName = "Java";
+    protected Date dob;
+    protected String sex = "Unknown";
+    protected String email;
+    protected String serviceLevel = "medium";
+    
+    public UserBean() {}
+
+    public String getFirstName() {
+        return firstName;
+    }
+
+    public void setFirstName(String firstName) {
+        this.firstName = firstName;
+    }
+
+    public String getLastName() {
+        return lastName;
+    }
+
+    public void setLastName(String lastName) {
+        this.lastName = lastName;
+    }
+
+    public Date getDob() {
+        return dob;
+    }
+
+    public void setDob(Date dob) {
+        this.dob = dob;
+    }
+
+    public String getSex() {
+        return sex;
+    }
+
+    public void setSex(String sex) {
+        this.sex = sex;
+    }
+
+    public String getEmail() {
+        return email;
+    }
+
+    public void setEmail(String email) {
+        this.email = email;
+    }
+
+    public String getServiceLevel() {
+        return serviceLevel;
+    }
+
+    public void setServiceLevel(String serviceLevel) {
+        this.serviceLevel = serviceLevel;
+    }
+    
+    public void validateEmail(FacesContext context, UIComponent toValidate,
+            Object value) throws ValidatorException {
+        String emailStr = (String) value;
+        if (-1 == emailStr.indexOf("@")) {
+            FacesMessage message = new FacesMessage("Invalid email address");
+            throw new ValidatorException(message);
+        }
+    }
+
+    public String addConfirmedUser() {
+        // This method would call a database or other service and add the 
+        // confirmed user information.
+        // For now, we just place an informative message in request scope
+        FacesMessage doneMessage = 
+                new FacesMessage("Successfully added new user");
+        FacesContext.getCurrentInstance().addMessage(null, doneMessage);
+        return "done";
+    }
+    
+    
+    private String initMessage;
+
+    public String getInitMessage() {
+        return initMessage;
+    }
+
+    public void setInitMessage(String initMessage) {
+        this.initMessage = initMessage;
+    }
+    
+    private String destroyMessage;
+
+    public String getDestroyMessage() {
+        return destroyMessage;
+    }
+
+    public void setDestroyMessage(String destroyMessage) {
+        this.destroyMessage = destroyMessage;
+    }
+    
+    private String flowId;
+
+    public String getFlowId() {
+        return flowId;
+    }
+
+    public void setFlowId(String flowId) {
+        this.flowId = flowId;
+    }
+    
+    private String initFlowMessage;
+
+    public String getInitFlowMessage() {
+        return initFlowMessage;
+    }
+
+    public void setInitFlowMessage(String initFlowMessage) {
+        this.initFlowMessage = initFlowMessage;
+    }
+    
+    private String destroyFlowMessage;
+
+    public String getDestroyFlowMessage() {
+        return destroyFlowMessage;
+    }
+
+    public void setDestroyFlowMessage(String destroyFlowMessage) {
+        this.destroyFlowMessage = destroyFlowMessage;
+    }
+    
+    private String initViewScopeMesasge;
+
+    public String getInitViewScopeMesasge() {
+        return initViewScopeMesasge;
+    }
+
+    public void setInitViewScopeMesasge(String initViewScopeMesasge) {
+        this.initViewScopeMesasge = initViewScopeMesasge;
+    }
+    
+    private String destroyViewScopeMessage;
+
+    public String getDestroyViewScopeMessage() {
+        return destroyViewScopeMessage;
+    }
+
+    public void setDestroyViewScopeMessage(String destroyViewScopeMessage) {
+        this.destroyViewScopeMessage = destroyViewScopeMessage;
+    }
+    
+    
+    private String destroyIssue2997FlowMessage;
+
+    public String getDestroyIssue2997FlowMessage() {
+        return destroyIssue2997FlowMessage;
+    }
+
+    public void setDestroyIssue2997FlowMessage(String destroyIssue2997FlowMessage) {
+        this.destroyIssue2997FlowMessage = destroyIssue2997FlowMessage;
+    }
+    
+}
+
diff --git a/test/javaee7/cdi/initDestroy/src/main/java/com/sun/faces/test/javaee7/cdi/initDestroy/ViewScopedBean.java b/test/javaee7/cdi/initDestroy/src/main/java/com/sun/faces/test/javaee7/cdi/initDestroy/ViewScopedBean.java
new file mode 100644
index 0000000..8a08bf7
--- /dev/null
+++ b/test/javaee7/cdi/initDestroy/src/main/java/com/sun/faces/test/javaee7/cdi/initDestroy/ViewScopedBean.java
@@ -0,0 +1,58 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.test.javaee7.cdi.initDestroy;
+
+import java.io.Serializable;
+import javax.faces.view.ViewScoped;
+import javax.inject.Named;
+
+ at Named
+ at ViewScoped
+public class ViewScopedBean implements Serializable {
+    
+    private static final long serialVersionUID = -6301337067401894253L;
+    
+    private String value = "My View Scoped Value";
+
+    public String getValue() {
+        return value;
+    }
+}
diff --git a/test/javaee7/cdi/initDestroy/src/main/java/com/sun/faces/test/javaee7/cdi/initDestroy/ViewScopedLogger.java b/test/javaee7/cdi/initDestroy/src/main/java/com/sun/faces/test/javaee7/cdi/initDestroy/ViewScopedLogger.java
new file mode 100644
index 0000000..07f18c2
--- /dev/null
+++ b/test/javaee7/cdi/initDestroy/src/main/java/com/sun/faces/test/javaee7/cdi/initDestroy/ViewScopedLogger.java
@@ -0,0 +1,74 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.test.javaee7.cdi.initDestroy;
+
+import javax.enterprise.context.Dependent;
+import javax.enterprise.event.Observes;
+import javax.enterprise.context.Initialized;
+import javax.enterprise.context.Destroyed;
+import javax.faces.component.UIViewRoot;
+import javax.faces.view.ViewScoped;
+import javax.inject.Inject;
+
+ at Dependent
+public class ViewScopedLogger {
+    
+    @Inject UserBean userBean;
+
+    public ViewScopedLogger() {
+        System.out.println("ViewScopedLogger ctor");
+    }
+        
+    
+    public void observeViewScopedStart(@Observes
+    @Initialized(ViewScoped.class) UIViewRoot root) {
+        long currentTime = System.currentTimeMillis();
+        userBean.setInitViewScopeMesasge("" + currentTime);
+    }
+    
+    public void observeViewScopedEnd(@Observes
+    @Destroyed(ViewScoped.class) UIViewRoot root) {
+        long currentTime = System.currentTimeMillis();
+        userBean.setDestroyViewScopeMessage("" + currentTime);
+    }    
+    
+    
+}
diff --git a/test/javaee7/cdi/initDestroy/src/main/java/com/sun/faces/test/javaee7/cdi/initDestroy/issue2997/Issue2997Bean.java b/test/javaee7/cdi/initDestroy/src/main/java/com/sun/faces/test/javaee7/cdi/initDestroy/issue2997/Issue2997Bean.java
new file mode 100644
index 0000000..3b471bc
--- /dev/null
+++ b/test/javaee7/cdi/initDestroy/src/main/java/com/sun/faces/test/javaee7/cdi/initDestroy/issue2997/Issue2997Bean.java
@@ -0,0 +1,78 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.test.javaee7.cdi.initDestroy.issue2997;
+
+import com.sun.faces.test.javaee7.cdi.initDestroy.UserBean;
+import java.io.Serializable;
+import javax.annotation.PreDestroy;
+import javax.faces.flow.FlowScoped;
+import javax.inject.Inject;
+import javax.inject.Named;
+
+ at Named
+ at FlowScoped("flow-with-templates")
+public class Issue2997Bean implements Serializable {
+    
+    private static final long serialVersionUID = -7181467406646852183L;
+    
+    private String name;
+    @Inject UserBean userBean;
+    
+    public Issue2997Bean() {
+        name = System.currentTimeMillis() + "issue2997Bean";
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+    
+    @PreDestroy
+    public void preDestroy() {
+        long currentTime = System.currentTimeMillis();
+        userBean.setDestroyIssue2997FlowMessage("" + currentTime + getName());
+        
+    }
+    
+}
diff --git a/test/javaee7/cdi/initDestroy/src/main/webapp/01_simplest-return.xhtml b/test/javaee7/cdi/initDestroy/src/main/webapp/01_simplest-return.xhtml
new file mode 100644
index 0000000..d9d8bd8
--- /dev/null
+++ b/test/javaee7/cdi/initDestroy/src/main/webapp/01_simplest-return.xhtml
@@ -0,0 +1,21 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    
+    <head>
+        <title>Return page</title>
+    </head>
+    <body>
+    <h:form prependId="false">
+        <p>Return page</p>
+
+        <p id="destroyMessage">#{userBean.destroyFlowMessage}</p>
+        
+        <p><h:link outcome="index" value="go home" /></p>
+ 
+    </h:form>
+    </body>
+</html>
diff --git a/test/javaee7/cdi/initDestroy/src/main/webapp/01_simplest/01_simplest-flow.xml b/test/javaee7/cdi/initDestroy/src/main/webapp/01_simplest/01_simplest-flow.xml
new file mode 100644
index 0000000..e69de29
diff --git a/test/javaee7/cdi/initDestroy/src/main/webapp/01_simplest/01_simplest.xhtml b/test/javaee7/cdi/initDestroy/src/main/webapp/01_simplest/01_simplest.xhtml
new file mode 100644
index 0000000..6a1cb33
--- /dev/null
+++ b/test/javaee7/cdi/initDestroy/src/main/webapp/01_simplest/01_simplest.xhtml
@@ -0,0 +1,26 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    
+    <head>
+        <title>First page in the flow</title>
+    </head>
+    <body>
+    <h:form prependId="false">
+        <p>First page in the flow</p>
+
+        <p>Value: <h:inputText id="input" value="#{simplestFlowBean.name}" /></p>
+ 
+        <p><h:commandButton id="a" value="next" action="a" /></p>
+        
+        
+        <p id="initMessage">#{userBean.initFlowMessage}</p>
+            
+        
+ 
+    </h:form>
+    </body>
+</html>
diff --git a/test/javaee7/cdi/initDestroy/src/main/webapp/01_simplest/a.xhtml b/test/javaee7/cdi/initDestroy/src/main/webapp/01_simplest/a.xhtml
new file mode 100644
index 0000000..468ed87
--- /dev/null
+++ b/test/javaee7/cdi/initDestroy/src/main/webapp/01_simplest/a.xhtml
@@ -0,0 +1,21 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    
+    <head>
+        <title>Second page in the flow</title>
+    </head>
+    <body>
+    <h:form prependId="false">
+        <p>Second page in the flow</p>
+        <p>Value: #{simplestFlowBean.name}</p>
+        
+        <p><h:commandButton id="return" value="return" action="01_simplest-return" /></p>
+        
+    </h:form>
+    </body>
+</html>
diff --git a/test/javaee7/cdi/initDestroy/src/main/webapp/WEB-INF/beans.xml b/test/javaee7/cdi/initDestroy/src/main/webapp/WEB-INF/beans.xml
new file mode 100644
index 0000000..28f5565
--- /dev/null
+++ b/test/javaee7/cdi/initDestroy/src/main/webapp/WEB-INF/beans.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<beans xmlns="http://xmlns.jcp.org/xml/ns/javaee"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/beans_1_1.xsd"
+       bean-discovery-mode="annotated">
+</beans>
diff --git a/test/javaee7/cdi/initDestroy/src/main/webapp/WEB-INF/faces-config.xml b/test/javaee7/cdi/initDestroy/src/main/webapp/WEB-INF/faces-config.xml
new file mode 100644
index 0000000..eb35394
--- /dev/null
+++ b/test/javaee7/cdi/initDestroy/src/main/webapp/WEB-INF/faces-config.xml
@@ -0,0 +1,19 @@
+<?xml version='1.0' encoding='UTF-8'?>
+
+<!-- =========== FULL CONFIGURATION FILE ================================== -->
+
+<faces-config version="2.0"
+    xmlns="http://java.sun.com/xml/ns/javaee" 
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd">
+    
+        <navigation-rule>
+            <from-view-id>*</from-view-id>
+            <navigation-case>
+                <from-action>issue2997PageInFacesConfig</from-action>
+                <to-view-id>/issue2997PageInFacesConfig.xhtml</to-view-id>
+            </navigation-case>
+        </navigation-rule>
+            
+
+</faces-config>
diff --git a/test/javaee7/cdi/initDestroy/src/main/webapp/WEB-INF/glassfish-web.xml b/test/javaee7/cdi/initDestroy/src/main/webapp/WEB-INF/glassfish-web.xml
new file mode 100644
index 0000000..6c8217c
--- /dev/null
+++ b/test/javaee7/cdi/initDestroy/src/main/webapp/WEB-INF/glassfish-web.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE glassfish-web-app PUBLIC 
+    "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" 
+    "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
+
+<glassfish-web-app error-url="">
+    <context-root>/test-javaee7-cdi-initDestroy</context-root>
+    <class-loader delegate="true"/>
+    <jsp-config>
+        <property name="keepgenerated" value="true">
+            <description>Keep a copy of the generated servlet class' java code.</description>
+        </property>
+    </jsp-config>
+</glassfish-web-app>
diff --git a/test/javaee7/cdi/initDestroy/src/main/webapp/WEB-INF/web.xml b/test/javaee7/cdi/initDestroy/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..8722f96
--- /dev/null
+++ b/test/javaee7/cdi/initDestroy/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>${webapp.projectStage}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
+        <param-value>${webapp.partialStateSaving}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>${webapp.stateSavingMethod}</param-value>
+    </context-param>
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <welcome-file-list>
+        <welcome-file>faces/index.xhtml</welcome-file>
+    </welcome-file-list>
+</web-app>
diff --git a/test/javaee7/cdi/initDestroy/src/main/webapp/flow-with-templates/flow-with-templates-flow.xml b/test/javaee7/cdi/initDestroy/src/main/webapp/flow-with-templates/flow-with-templates-flow.xml
new file mode 100644
index 0000000..e69de29
diff --git a/test/javaee7/cdi/initDestroy/src/main/webapp/flow-with-templates/flow-with-templates.xhtml b/test/javaee7/cdi/initDestroy/src/main/webapp/flow-with-templates/flow-with-templates.xhtml
new file mode 100644
index 0000000..6ff81ee
--- /dev/null
+++ b/test/javaee7/cdi/initDestroy/src/main/webapp/flow-with-templates/flow-with-templates.xhtml
@@ -0,0 +1,24 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:h="http://java.sun.com/jsf/html">
+
+    <body>
+
+        <ui:composition template="/templates/issue2997-template.xhtml">
+
+            <ui:define name="content">
+                Page 01 in the flow
+                
+                <p id="beanMessage">#{issue2997Bean.name}</p>
+                
+                <h:form prependId="false">
+                <h:commandButton action="page02" value="page02" id="page02" />
+                </h:form>
+            </ui:define>
+
+        </ui:composition>
+
+    </body>
+</html>
diff --git a/test/javaee7/cdi/initDestroy/src/main/webapp/flow-with-templates/page02.xhtml b/test/javaee7/cdi/initDestroy/src/main/webapp/flow-with-templates/page02.xhtml
new file mode 100644
index 0000000..8443f9e
--- /dev/null
+++ b/test/javaee7/cdi/initDestroy/src/main/webapp/flow-with-templates/page02.xhtml
@@ -0,0 +1,24 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:h="http://java.sun.com/jsf/html">
+
+    <body>
+
+        <ui:composition template="/templates/issue2997-template.xhtml">
+
+            <ui:define name="content">
+                Page 02 in the flow
+
+                <p id="beanMessage">#{issue2997Bean.name}</p>
+                
+                <h:form prependId="false">
+                <h:commandButton action="flow-with-templates" value="page01" id="page01" />
+                </h:form>
+            </ui:define>
+
+        </ui:composition>
+
+    </body>
+</html>
diff --git a/test/javaee7/cdi/initDestroy/src/main/webapp/index.xhtml b/test/javaee7/cdi/initDestroy/src/main/webapp/index.xhtml
new file mode 100644
index 0000000..f52264e
--- /dev/null
+++ b/test/javaee7/cdi/initDestroy/src/main/webapp/index.xhtml
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <head>
+        <title></title>
+    </head>
+    <body>
+        <h:form prependId="false">
+            <h:inputText value="#{userBean.firstName}" />
+            <h:commandButton value="submit" />
+            
+            
+            <p id="initMessage">#{userBean.initMessage}</p>
+            
+            <p><h:commandButton id="enterFlow" value="enter flow" action="01_simplest"/></p>
+            
+            <p><h:commandButton id="flow-with-templates" value="flow-with-templates" action="flow-with-templates"/></p>
+            
+            <p><h:commandButton id="invalidateSession" value="invalidate session" 
+                                actionListener="#{appBean.invalidateSession}" 
+                                action="page02?faces-redirect=true" /></p>
+        </h:form>
+    </body>
+</html>
+
diff --git a/test/javaee7/cdi/initDestroy/src/main/webapp/issue2997Home.xhtml b/test/javaee7/cdi/initDestroy/src/main/webapp/issue2997Home.xhtml
new file mode 100644
index 0000000..2210da2
--- /dev/null
+++ b/test/javaee7/cdi/initDestroy/src/main/webapp/issue2997Home.xhtml
@@ -0,0 +1,17 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title>Facelet Title</title>
+    </h:head>
+    <h:body>
+        Issue2997Home
+        
+        <p id="destroyMessage">#{userBean.destroyFlowMessage}</p>
+        <p id="flowId">#{userBean.flowId}</p>
+        <p id="destroyBean">#{userBean.destroyIssue2997FlowMessage}</p>
+        
+    </h:body>
+</html>
+
diff --git a/test/javaee7/cdi/initDestroy/src/main/webapp/issue2997PageInFacesConfig.xhtml b/test/javaee7/cdi/initDestroy/src/main/webapp/issue2997PageInFacesConfig.xhtml
new file mode 100644
index 0000000..a892467
--- /dev/null
+++ b/test/javaee7/cdi/initDestroy/src/main/webapp/issue2997PageInFacesConfig.xhtml
@@ -0,0 +1,17 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title>Facelet Title</title>
+    </h:head>
+    <h:body>
+        Issue2997PageInFacesConfig
+        
+        <p id="destroyMessage">#{userBean.destroyFlowMessage}</p>
+        <p id="flowId">#{userBean.flowId}</p>
+        <p id="destroyBean">#{userBean.destroyIssue2997FlowMessage}</p>
+                
+    </h:body>
+</html>
+
diff --git a/test/javaee7/cdi/initDestroy/src/main/webapp/issue2997UserList.xhtml b/test/javaee7/cdi/initDestroy/src/main/webapp/issue2997UserList.xhtml
new file mode 100644
index 0000000..ce2ceaa
--- /dev/null
+++ b/test/javaee7/cdi/initDestroy/src/main/webapp/issue2997UserList.xhtml
@@ -0,0 +1,17 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title>Facelet Title</title>
+    </h:head>
+    <h:body>
+        Issue2997UserList
+        
+        <p id="destroyMessage">#{userBean.destroyFlowMessage}</p>
+        <p id="flowId">#{userBean.flowId}</p>
+        <p id="destroyBean">#{userBean.destroyIssue2997FlowMessage}</p>
+        
+    </h:body>
+</html>
+
diff --git a/test/javaee7/cdi/initDestroy/src/main/webapp/page02.xhtml b/test/javaee7/cdi/initDestroy/src/main/webapp/page02.xhtml
new file mode 100644
index 0000000..a42bc39
--- /dev/null
+++ b/test/javaee7/cdi/initDestroy/src/main/webapp/page02.xhtml
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <head>
+        <title></title>
+    </head>
+    <body>
+        <h:form prependId="false">
+            <p id="destroyMessage">#{appBean.sessionDestroyedMessage}</p>
+        </h:form>
+    </body>
+</html>
+
diff --git a/test/javaee7/cdi/initDestroy/src/main/webapp/resources/templates/cssLayout.css b/test/javaee7/cdi/initDestroy/src/main/webapp/resources/templates/cssLayout.css
new file mode 100644
index 0000000..8ee7ceb
--- /dev/null
+++ b/test/javaee7/cdi/initDestroy/src/main/webapp/resources/templates/cssLayout.css
@@ -0,0 +1,61 @@
+
+#top {
+    position: relative;
+    background-color: #036fab;
+    color: white;
+    padding: 5px;
+    margin: 0px 0px 10px 0px;
+}
+
+#bottom {
+    position: relative;
+    background-color: #c2dfef;
+    padding: 5px;
+    margin: 10px 0px 0px 0px;
+}
+
+#left {
+    float: left;
+    background-color: #ece3a5;
+    padding: 5px;
+    width: 150px;
+}
+
+#right {
+    float: right;
+    background-color: #ece3a5;
+    padding: 5px;
+    width: 150px;
+}
+
+.center_content {
+    position: relative;
+    background-color: #dddddd;
+    padding: 5px;
+}
+
+.left_content {
+    background-color: #dddddd;
+    padding: 5px;
+    margin-left: 170px;
+}
+
+.right_content {
+    background-color: #dddddd;
+    padding: 5px;
+    margin: 0px 170px 0px 170px;
+}
+
+#top a:link, #top a:visited {
+  color: white;
+  font-weight : bold;
+  text-decoration: none;
+}
+
+#top a:link:hover, #top a:visited:hover  {
+  color: black;
+  font-weight : bold;
+  text-decoration : underline;
+}
+
+
diff --git a/test/javaee7/cdi/initDestroy/src/main/webapp/resources/templates/default.css b/test/javaee7/cdi/initDestroy/src/main/webapp/resources/templates/default.css
new file mode 100644
index 0000000..6cbc3d1
--- /dev/null
+++ b/test/javaee7/cdi/initDestroy/src/main/webapp/resources/templates/default.css
@@ -0,0 +1,29 @@
+body {
+    background-color: #ffffff;
+    font-size: 12px;
+    font-family: Verdana, "Verdana CE",  Arial, "Arial CE", "Lucida Grande CE", lucida, "Helvetica CE", sans-serif;
+    color: #000000;  
+    margin: 10px;
+}
+
+h1 {
+    font-family: Arial, "Arial CE", "Lucida Grande CE", lucida, "Helvetica CE", sans-serif;
+    border-bottom: 1px solid #AFAFAF; 
+    font-size:  16px;
+    font-weight: bold;
+    margin: 0px;
+    padding: 0px;
+    color: #D20005;
+}
+
+a:link, a:visited {
+  color: #045491;
+  font-weight : bold;
+  text-decoration: none;
+}
+
+a:link:hover, a:visited:hover  {
+  color: #045491;
+  font-weight : bold;
+  text-decoration : underline;
+}
diff --git a/test/javaee7/cdi/initDestroy/src/main/webapp/templates/issue2997-template.xhtml b/test/javaee7/cdi/initDestroy/src/main/webapp/templates/issue2997-template.xhtml
new file mode 100644
index 0000000..c5a8029
--- /dev/null
+++ b/test/javaee7/cdi/initDestroy/src/main/webapp/templates/issue2997-template.xhtml
@@ -0,0 +1,38 @@
+<?xml version='1.0' encoding='UTF-8' ?> 
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:h="http://java.sun.com/jsf/html">
+
+    <h:head>
+        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+        <h:outputStylesheet name="default.css" library="templates" />
+        <h:outputStylesheet name="cssLayout.css" library="templates" />
+        <title>Facelets Template</title>
+    </h:head>
+
+    <h:body>
+
+        <div id="top">
+            <ui:insert name="top">Top From Template</ui:insert>
+        </div>
+
+        <div id="content" class="center_content">
+            <ui:insert name="content">Content From Template</ui:insert>
+        </div>
+
+        <div id="bottom">
+            <ui:insert name="bottom">Bottom From Template</ui:insert>
+            <br />
+            
+            <h:form prependId="false">
+            <h:commandButton id="issue2997Home" value="home" immediate="true" action="/issue2997Home" /> <br />
+            <h:commandButton id="issue2997UserList" value="User List" immediate="true" action="/issue2997UserList" /> <br />
+            <h:commandButton id="issue2997PageInFacesConfig" value="Page in faces config" immediate="true" action="issue2997PageInFacesConfig" /> <br />
+            </h:form>
+            
+        </div>
+
+    </h:body>
+
+</html>
diff --git a/test/javaee7/cdi/initDestroy/src/main/webapp/viewScoped01.xhtml b/test/javaee7/cdi/initDestroy/src/main/webapp/viewScoped01.xhtml
new file mode 100644
index 0000000..41509d0
--- /dev/null
+++ b/test/javaee7/cdi/initDestroy/src/main/webapp/viewScoped01.xhtml
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <head>
+        <title></title>
+    </head>
+    <body>
+        <h:form prependId="false">
+            <h:commandButton value="submit" id="viewScoped02" action="viewScoped02"/>
+            
+            <p>#{viewScopedBean.value}</p>
+            
+            <p id="initMessage">#{userBean.initViewScopeMesasge}</p>
+            
+        </h:form>
+    </body>
+</html>
+
diff --git a/test/javaee7/cdi/initDestroy/src/main/webapp/viewScoped02.xhtml b/test/javaee7/cdi/initDestroy/src/main/webapp/viewScoped02.xhtml
new file mode 100644
index 0000000..594582c
--- /dev/null
+++ b/test/javaee7/cdi/initDestroy/src/main/webapp/viewScoped02.xhtml
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <head>
+        <title></title>
+    </head>
+    <body>
+        <h:form prependId="false">
+            <p id="destroyMessage">#{userBean.destroyViewScopeMessage}</p>
+            
+        </h:form>
+    </body>
+</html>
+
diff --git a/test/javaee7/cdi/initDestroy/src/test/java/com/sun/faces/test/javaee7/cdi/initDestroy/Issue2948IT.java b/test/javaee7/cdi/initDestroy/src/test/java/com/sun/faces/test/javaee7/cdi/initDestroy/Issue2948IT.java
new file mode 100644
index 0000000..961c68d
--- /dev/null
+++ b/test/javaee7/cdi/initDestroy/src/test/java/com/sun/faces/test/javaee7/cdi/initDestroy/Issue2948IT.java
@@ -0,0 +1,114 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.javaee7.cdi.initDestroy;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlElement;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import com.sun.faces.test.junit.JsfTest;
+import com.sun.faces.test.junit.JsfTestRunner;
+import static com.sun.faces.test.junit.JsfVersion.JSF_2_2_0;
+import org.junit.After;
+import static org.junit.Assert.assertTrue;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+ at RunWith(JsfTestRunner.class)
+public class Issue2948IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @JsfTest(value = JSF_2_2_0)
+    @Test
+    public void testSessionLogging() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl);
+        HtmlElement e = (HtmlElement) page.getElementById("initMessage");
+        long sessionInitTime = Long.valueOf(e.asText());
+        HtmlSubmitInput invalidateButton = (HtmlSubmitInput) page.getElementById("invalidateSession");
+        page = invalidateButton.click();
+        e = (HtmlElement) page.getElementById("destroyMessage");
+        long sessionDestroyTime = Long.valueOf(e.asText());
+        assertTrue(sessionInitTime < sessionDestroyTime);
+    }
+
+    @JsfTest(value = JSF_2_2_0)
+    @Test
+    public void testFlowLogging() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl);
+        HtmlSubmitInput enterFlow = (HtmlSubmitInput) page.getElementById("enterFlow");
+        page = enterFlow.click();
+        HtmlElement e = (HtmlElement) page.getElementById("initMessage");
+        long flowInitTime = Long.valueOf(e.asText());
+        HtmlSubmitInput next = (HtmlSubmitInput) page.getElementById("a");
+        page = next.click();
+        HtmlSubmitInput returnButton = (HtmlSubmitInput) page.getElementById("return");
+        page = returnButton.click();
+        e = (HtmlElement) page.getElementById("destroyMessage");
+        long flowDestroyTime = Long.valueOf(e.asText());
+        assertTrue(flowInitTime < flowDestroyTime);
+    }
+
+    @JsfTest(value = JSF_2_2_0)
+    @Test
+    public void testViewScopedLogging() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/viewScoped01.xhtml");
+        HtmlElement e = (HtmlElement) page.getElementById("initMessage");
+        long flowInitTime = Long.valueOf(e.asText());
+        HtmlSubmitInput returnButton = (HtmlSubmitInput) page.getElementById("viewScoped02");
+        page = returnButton.click();
+        e = (HtmlElement) page.getElementById("destroyMessage");
+        long flowDestroyTime = Long.valueOf(e.asText());
+        assertTrue(flowInitTime < flowDestroyTime);
+    }
+}
diff --git a/test/javaee7/cdi/initDestroy/src/test/java/com/sun/faces/test/javaee7/cdi/initDestroy/Issue2997IT.java b/test/javaee7/cdi/initDestroy/src/test/java/com/sun/faces/test/javaee7/cdi/initDestroy/Issue2997IT.java
new file mode 100644
index 0000000..f0559f3
--- /dev/null
+++ b/test/javaee7/cdi/initDestroy/src/test/java/com/sun/faces/test/javaee7/cdi/initDestroy/Issue2997IT.java
@@ -0,0 +1,123 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.javaee7.cdi.initDestroy;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import com.sun.faces.test.junit.JsfTest;
+import com.sun.faces.test.junit.JsfTestRunner;
+import static com.sun.faces.test.junit.JsfVersion.JSF_2_2_0;
+import org.junit.After;
+import static org.junit.Assert.assertTrue;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+ at RunWith(JsfTestRunner.class)
+public class Issue2997IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @JsfTest(value = JSF_2_2_0)
+    @Test
+    public void testGlobalReturn() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl);
+
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("flow-with-templates");
+        page = button.click();
+        
+        String pageText = page.getBody().asText();
+        assertTrue(pageText.contains("Bottom From Template"));
+        assertTrue(pageText.contains("issue2997Bean"));
+        
+        button = (HtmlSubmitInput) page.getElementById("issue2997Home");
+        page = button.click();
+        
+        pageText = page.getBody().asText();
+        assertTrue(pageText.contains("Issue2997Home"));
+        assertTrue(pageText.contains("flow-with-templates"));
+        assertTrue(pageText.contains("issue2997Bean"));
+
+        page = webClient.getPage(webUrl);
+
+        button = (HtmlSubmitInput) page.getElementById("flow-with-templates");
+        page = button.click();
+        
+        pageText = page.getBody().asText();
+        assertTrue(pageText.contains("Bottom From Template"));
+        
+        button = (HtmlSubmitInput) page.getElementById("issue2997UserList");
+        page = button.click();
+        
+        pageText = page.getBody().asText();
+        assertTrue(pageText.contains("Issue2997UserList"));
+        assertTrue(pageText.contains("flow-with-templates"));
+        assertTrue(pageText.contains("issue2997Bean"));
+        
+        page = webClient.getPage(webUrl);
+
+        button = (HtmlSubmitInput) page.getElementById("flow-with-templates");
+        page = button.click();
+        
+        pageText = page.getBody().asText();
+        assertTrue(pageText.contains("Bottom From Template"));
+        
+        button = (HtmlSubmitInput) page.getElementById("issue2997PageInFacesConfig");
+        page = button.click();
+        
+        pageText = page.getBody().asText();
+        assertTrue(pageText.contains("Issue2997PageInFacesConfig"));
+        assertTrue(pageText.contains("flow-with-templates"));
+        assertTrue(pageText.contains("issue2997Bean"));   
+    }
+}
diff --git a/test/javaee7/cdi/multi-tenant/cdi-app-sets-tccl/nbactions.xml b/test/javaee7/cdi/multi-tenant/cdi-app-sets-tccl/nbactions.xml
new file mode 100644
index 0000000..16d35f5
--- /dev/null
+++ b/test/javaee7/cdi/multi-tenant/cdi-app-sets-tccl/nbactions.xml
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<actions>
+    <action>
+        <actionName>debug.test.single</actionName>
+        <goals>
+            <goal>test-compile</goal>
+            <goal>surefire:test</goal>
+        </goals>
+        <properties>
+            <test>${packageClassName}</test>
+            <forkMode>once</forkMode>
+            <maven.surefire.debug>-Xdebug -Xrunjdwp:transport=dt_socket,server=n,address=${jpda.address}</maven.surefire.debug>
+            <jpda.listen>true</jpda.listen>
+            <integration.url>http://localhost:8080/test-cdi-app-sets-tccl/</integration.url>
+        </properties>
+    </action>
+    <action>
+        <actionName>test.single</actionName>
+        <goals>
+            <goal>test-compile</goal>
+            <goal>surefire:test</goal>
+        </goals>
+        <properties>
+            <integration.url>http://localhost:8080/test-cdi-app-sets-tccl/</integration.url>
+            <test>${packageClassName}</test>
+        </properties>
+    </action>
+</actions>
diff --git a/test/javaee7/cdi/multi-tenant/cdi-app-sets-tccl/pom.xml b/test/javaee7/cdi/multi-tenant/cdi-app-sets-tccl/pom.xml
new file mode 100644
index 0000000..a42ebb8
--- /dev/null
+++ b/test/javaee7/cdi/multi-tenant/cdi-app-sets-tccl/pom.xml
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <artifactId>pom</artifactId>
+    <groupId>com.sun.faces.test.javaee7.cdi.multi-tenant</groupId>
+    <version>2.2.8-SNAPSHOT</version>
+  </parent>
+  
+  <groupId>com.sun.faces.test.javaee7.cdi.multi-tenant</groupId>
+  <artifactId>cdi-app-sets-tccl</artifactId>
+  <version>2.2.8-SNAPSHOT</version>
+  <packaging>war</packaging>
+  <name>Mojarra ${project.version} - Test - Java EE 7 - CDI - Multi-Tenant - App Sets TCCL</name>
+  
+  <build>
+    <finalName>test-cdi-app-sets-tccl</finalName>
+  </build>
+  
+</project>
diff --git a/test/javaee7/cdi/multi-tenant/cdi-app-sets-tccl/src/main/java/com/sun/faces/test/servlet30/multi_tenant/app_sets_tccl/BeforeFilter.java b/test/javaee7/cdi/multi-tenant/cdi-app-sets-tccl/src/main/java/com/sun/faces/test/servlet30/multi_tenant/app_sets_tccl/BeforeFilter.java
new file mode 100644
index 0000000..17736b4
--- /dev/null
+++ b/test/javaee7/cdi/multi-tenant/cdi-app-sets-tccl/src/main/java/com/sun/faces/test/servlet30/multi_tenant/app_sets_tccl/BeforeFilter.java
@@ -0,0 +1,165 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+
+package com.sun.faces.test.servlet30.multi_tenant.app_sets_tccl;
+
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.net.URL;
+import java.net.URLClassLoader;
+import javax.faces.FactoryFinder;
+import javax.faces.context.FacesContext;
+import javax.faces.context.FacesContextFactory;
+import javax.faces.lifecycle.LifecycleFactory;
+import javax.servlet.Filter;
+import javax.servlet.FilterChain;
+import javax.servlet.FilterConfig;
+import javax.servlet.ServletContext;
+import javax.servlet.ServletException;
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletResponse;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+public class BeforeFilter implements Filter {
+    
+    private FilterConfig filterConfig = null;
+    
+    private static final String INIT_HAS_LIFECYCLE_KEY = "BeforeServlet_hasLifecycle";
+    private static final String INIT_HAS_INITFACESCONTEXT_KEY = "BeforeServlet_hasInitFacesContext";
+    
+    private static final String REQUEST_HAS_LIFECYCLE = "BeforeServlet_requestHasLifecycle";
+    private static final String REQUEST_HAS_FACESCONTEXT = "BeforeServlet_requestHasFacesContext";
+
+    public BeforeFilter() {
+    }    
+    
+    @Override
+    public void doFilter(ServletRequest request, ServletResponse response,
+            FilterChain chain)
+            throws IOException, ServletException {
+        
+        Thread thread = Thread.currentThread();
+        ClassLoader tccl = thread.getContextClassLoader();
+        ClassLoader tcclp1 = new URLClassLoader(new URL[0], tccl); //new URLClassLoader(new URL [0]);
+        thread.setContextClassLoader(tcclp1);
+        
+        HttpServletRequest req = (HttpServletRequest) request;
+        LifecycleFactory lifecycle = (LifecycleFactory) FactoryFinder.getFactory(FactoryFinder.LIFECYCLE_FACTORY);
+        req.setAttribute(REQUEST_HAS_LIFECYCLE, 
+                (null != lifecycle) ? "TRUE":"FALSE");
+        FacesContext facesContext = FacesContext.getCurrentInstance();
+        req.setAttribute(REQUEST_HAS_FACESCONTEXT, 
+                (null != facesContext) ? "TRUE":"FALSE");
+        
+        // Dispatching to JSF throws this exception:
+        /**
+         * 
+         * 
+
+java.lang.IllegalStateException: Singleton not set for java.net.URLClassLoader at 511e5bf4
+	at org.glassfish.weld.ACLSingletonProvider$ACLSingleton.get(ACLSingletonProvider.java:110)
+	at org.jboss.weld.Container.instance(Container.java:54)
+	at org.jboss.weld.jsf.ConversationAwareViewHandler.getConversationContext(ConversationAwareViewHandler.java:80)
+	at org.jboss.weld.jsf.ConversationAwareViewHandler.getActionURL(ConversationAwareViewHandler.java:102)
+	at com.sun.faces.renderkit.html_basic.FormRenderer.getActionStr(FormRenderer.java:250)
+	at com.sun.faces.renderkit.html_basic.FormRenderer.encodeBegin(FormRenderer.java:143)
+	at javax.faces.component.UIComponentBase.encodeBegin(UIComponentBase.java:864)
+	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1854)
+	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1859)
+	at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:456)
+	at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:133)
+	at javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:337)
+	at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:120)
+	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
+	at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:219)
+         * 
+         */
+        // I think this is a side-effect of Weld also not being resilient
+        // to TCCL replacement.  To continue with the job of exercising 
+        // the fix in FactoryFinder, we just exercise it directly here.
+        // I confirmed this is fixed in Weld 2.2.2 Final, which is in GlassFish 4.0.1
+        final boolean weldIsTCCLReplacementResilient = true;
+        
+        if (weldIsTCCLReplacementResilient) {
+            try {
+                chain.doFilter(request, response);
+            } catch (Exception t) {
+                throw new ServletException(t);
+            } finally {
+                thread.setContextClassLoader(tccl);
+            }
+        } else {
+            FacesContextFactory fcFactory = (FacesContextFactory) 
+                    FactoryFinder.getFactory(FactoryFinder.FACES_CONTEXT_FACTORY);
+            HttpServletResponse resp = (HttpServletResponse) response;
+            PrintWriter pw = resp.getWriter();
+            try {
+                if (null != fcFactory) {
+                    pw.print("<html><body><p id=\"result\">SUCCESS</p></body></html>");
+                } else {
+                    pw.print("<html><body><p id=\"result\">FAILURE</p></body></html>");
+                }
+                resp.setStatus(200);
+                pw.close();
+            } catch (Exception e) {
+            }
+        }
+        
+    }
+
+    public void destroy() {        
+    }
+
+    public void init(FilterConfig filterConfig) {        
+        this.filterConfig = filterConfig;
+        ServletContext sc = this.filterConfig.getServletContext();
+        LifecycleFactory lifecycle = (LifecycleFactory) FactoryFinder.getFactory(FactoryFinder.LIFECYCLE_FACTORY);
+        sc.setAttribute(INIT_HAS_LIFECYCLE_KEY, 
+                (null != lifecycle) ? "TRUE":"FALSE");
+        FacesContext initFacesContext = FacesContext.getCurrentInstance();
+        sc.setAttribute(INIT_HAS_INITFACESCONTEXT_KEY, 
+                (null != initFacesContext) ? "TRUE":"FALSE");
+        
+        
+    }
+    
+}
diff --git a/test/javaee7/cdi/multi-tenant/cdi-app-sets-tccl/src/main/java/com/sun/faces/test/servlet30/multi_tenant/app_sets_tccl/UserBean.java b/test/javaee7/cdi/multi-tenant/cdi-app-sets-tccl/src/main/java/com/sun/faces/test/servlet30/multi_tenant/app_sets_tccl/UserBean.java
new file mode 100644
index 0000000..f4b6be1
--- /dev/null
+++ b/test/javaee7/cdi/multi-tenant/cdi-app-sets-tccl/src/main/java/com/sun/faces/test/servlet30/multi_tenant/app_sets_tccl/UserBean.java
@@ -0,0 +1,92 @@
+package com.sun.faces.test.servlet30.multi_tenant.app_sets_tccl;
+
+import java.io.Serializable;
+import java.util.Date;
+import javax.faces.application.FacesMessage;
+import javax.faces.bean.SessionScoped;
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.validator.ValidatorException;
+import javax.inject.Named;
+
+ at Named
+ at SessionScoped
+public class UserBean implements Serializable {
+    
+    protected String firstName = "Duke";
+    protected String lastName = "Java";
+    protected Date dob;
+    protected String sex = "Unknown";
+    protected String email;
+    protected String serviceLevel = "medium";
+    
+    public UserBean() {}
+
+    public String getFirstName() {
+        return firstName;
+    }
+
+    public void setFirstName(String firstName) {
+        this.firstName = firstName;
+    }
+
+    public String getLastName() {
+        return lastName;
+    }
+
+    public void setLastName(String lastName) {
+        this.lastName = lastName;
+    }
+
+    public Date getDob() {
+        return dob;
+    }
+
+    public void setDob(Date dob) {
+        this.dob = dob;
+    }
+
+    public String getSex() {
+        return sex;
+    }
+
+    public void setSex(String sex) {
+        this.sex = sex;
+    }
+
+    public String getEmail() {
+        return email;
+    }
+
+    public void setEmail(String email) {
+        this.email = email;
+    }
+
+    public String getServiceLevel() {
+        return serviceLevel;
+    }
+
+    public void setServiceLevel(String serviceLevel) {
+        this.serviceLevel = serviceLevel;
+    }
+    
+    public void validateEmail(FacesContext context, UIComponent toValidate,
+            Object value) throws ValidatorException {
+        String emailStr = (String) value;
+        if (-1 == emailStr.indexOf("@")) {
+            FacesMessage message = new FacesMessage("Invalid email address");
+            throw new ValidatorException(message);
+        }
+    }
+
+    public String addConfirmedUser() {
+        // This method would call a database or other service and add the 
+        // confirmed user information.
+        // For now, we just place an informative message in request scope
+        FacesMessage doneMessage = 
+                new FacesMessage("Successfully added new user");
+        FacesContext.getCurrentInstance().addMessage(null, doneMessage);
+        return "done";
+    }
+}
+
diff --git a/test/javaee7/cdi/multi-tenant/cdi-app-sets-tccl/src/main/webapp/WEB-INF/beans.xml b/test/javaee7/cdi/multi-tenant/cdi-app-sets-tccl/src/main/webapp/WEB-INF/beans.xml
new file mode 100644
index 0000000..e69de29
diff --git a/test/javaee7/cdi/multi-tenant/cdi-app-sets-tccl/src/main/webapp/WEB-INF/glassfish-web.xml b/test/javaee7/cdi/multi-tenant/cdi-app-sets-tccl/src/main/webapp/WEB-INF/glassfish-web.xml
new file mode 100644
index 0000000..d3b4848
--- /dev/null
+++ b/test/javaee7/cdi/multi-tenant/cdi-app-sets-tccl/src/main/webapp/WEB-INF/glassfish-web.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
+<glassfish-web-app error-url="">
+  <context-root>/test-cdi-app-sets-tccl</context-root>
+  <class-loader delegate="true"/>
+  <jsp-config>
+    <property name="keepgenerated" value="true">
+      <description>Keep a copy of the generated servlet class' java code.</description>
+    </property>
+  </jsp-config>
+</glassfish-web-app>
diff --git a/test/javaee7/cdi/multi-tenant/cdi-app-sets-tccl/src/main/webapp/WEB-INF/web.xml b/test/javaee7/cdi/multi-tenant/cdi-app-sets-tccl/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..a48dc40
--- /dev/null
+++ b/test/javaee7/cdi/multi-tenant/cdi-app-sets-tccl/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>${webapp.projectStage}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
+        <param-value>${webapp.partialStateSaving}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>${webapp.stateSavingMethod}</param-value>
+    </context-param>
+    <filter>
+        <filter-name>BeforeFilter</filter-name>
+        <filter-class>com.sun.faces.test.servlet30.multi_tenant.app_sets_tccl.BeforeFilter</filter-class>
+    </filter>
+    <filter-mapping>
+        <filter-name>BeforeFilter</filter-name>
+        <url-pattern>/*</url-pattern>
+    </filter-mapping>
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <welcome-file-list>
+        <welcome-file>faces/index.xhtml</welcome-file>
+    </welcome-file-list>
+    
+</web-app>
diff --git a/test/javaee7/cdi/multi-tenant/cdi-app-sets-tccl/src/main/webapp/index.xhtml b/test/javaee7/cdi/multi-tenant/cdi-app-sets-tccl/src/main/webapp/index.xhtml
new file mode 100644
index 0000000..c6cde5b
--- /dev/null
+++ b/test/javaee7/cdi/multi-tenant/cdi-app-sets-tccl/src/main/webapp/index.xhtml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <head>
+        <title></title>
+    </head>
+    <body>
+        <h:form prependId="false">
+            <h:inputText value="#{userBean.firstName}" />
+            <h:commandButton value="submit" />
+            
+            <p>First name: <h:outputText id="firstName" value="#{userBean.firstName}" /></p>
+            <p>BeforeServlet init found Lifecycle: <h:outputText id="initHasLifecycle"
+                                                            value="#{applicationScope.BeforeServlet_hasLifecycle}"/></p>
+            <p>BeforeServlet init found FacesContext: <h:outputText id="initHasInitFacesContext"
+                                                            value="#{applicationScope.BeforeServlet_hasInitFacesContext}"/></p>
+            <p>BeforeServlet request found Lifecycle: <h:outputText id="requestHasLifecycle"
+                                                            value="#{requestScope.BeforeServlet_requestHasLifecycle}"/></p>
+            <p>BeforeServlet request found FacesContext: <h:outputText id="requestHasInitFacesContext"
+                                                            value="#{requestScope.BeforeServlet_requestHasFacesContext}"/></p>
+        </h:form>
+    </body>
+</html>
+
diff --git a/test/javaee7/cdi/multi-tenant/cdi-app-sets-tccl/src/test/java/com/sun/faces/test/servlet30/multi_tenant/app_sets_tccl/Issue3341IT.java b/test/javaee7/cdi/multi-tenant/cdi-app-sets-tccl/src/test/java/com/sun/faces/test/servlet30/multi_tenant/app_sets_tccl/Issue3341IT.java
new file mode 100644
index 0000000..9067270
--- /dev/null
+++ b/test/javaee7/cdi/multi-tenant/cdi-app-sets-tccl/src/test/java/com/sun/faces/test/servlet30/multi_tenant/app_sets_tccl/Issue3341IT.java
@@ -0,0 +1,112 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.multi_tenant.app_sets_tccl;
+
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import static org.junit.Assert.assertTrue;
+import org.junit.Ignore;
+
+public class Issue3341IT {
+    /**
+     * Stores the web URL.
+     */
+    private String webUrl;
+    /**
+     * Stores the web client.
+     */
+    private WebClient webClient;
+
+    /**
+     * Setup before testing.
+     * 
+     * @throws Exception when a serious error occurs.
+     */
+    @BeforeClass
+    public static void setUpClass() throws Exception {
+    }
+
+    /**
+     * Cleanup after testing.
+     * 
+     * @throws Exception when a serious error occurs.
+     */
+    @AfterClass
+    public static void tearDownClass() throws Exception {
+    }
+
+    /**
+     * Setup before testing.
+     */
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    /**
+     * Tear down after testing.
+     */
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    @Ignore // Enable when running against a GlassFish that has 19296686 fixed
+    public void testTCCLReplacementResilience() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl);
+
+        String pageText = page.getBody().asText();
+        assertTrue(pageText.matches("(?s).*Duke.*submit.*"));
+        assertTrue(pageText.matches("(?s).*First name:\\s*Duke.*"));
+        assertTrue(pageText.matches("(?s).*BeforeServlet init found Lifecycle:\\s*TRUE.*"));
+        assertTrue(pageText.matches("(?s).*BeforeServlet init found FacesContext:\\sTRUE.*"));
+        assertTrue(pageText.matches("(?s).*BeforeServlet request found Lifecycle:\\s*TRUE.*"));
+        // Yes, the FacesContext.getCurrentInstance() should not be found 
+        // because this is in a Filter before the run of the FacesServlet.service().
+        assertTrue(pageText.matches("(?s).*BeforeServlet request found FacesContext:\\s*FALSE.*"));        
+    }
+}
diff --git a/test/javaee7/cdi/multi-tenant/cdi-jsp-only-app-sets-tccl/nbactions.xml b/test/javaee7/cdi/multi-tenant/cdi-jsp-only-app-sets-tccl/nbactions.xml
new file mode 100644
index 0000000..fe97754
--- /dev/null
+++ b/test/javaee7/cdi/multi-tenant/cdi-jsp-only-app-sets-tccl/nbactions.xml
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<actions>
+    <action>
+        <actionName>debug.test.single</actionName>
+        <goals>
+            <goal>test-compile</goal>
+            <goal>surefire:test</goal>
+        </goals>
+        <properties>
+            <test>${packageClassName}</test>
+            <forkMode>once</forkMode>
+            <maven.surefire.debug>-Xdebug -Xrunjdwp:transport=dt_socket,server=n,address=${jpda.address}</maven.surefire.debug>
+            <jpda.listen>true</jpda.listen>
+            <integration.url>http://localhost:8080/test-cdi-jsp-only-app-sets-tccl/</integration.url>
+        </properties>
+    </action>
+    <action>
+        <actionName>test.single</actionName>
+        <goals>
+            <goal>test-compile</goal>
+            <goal>surefire:test</goal>
+        </goals>
+        <properties>
+            <integration.url>http://localhost:8080/test-cdi-jsp-only-app-sets-tccl/</integration.url>
+            <test>${packageClassName}</test>
+        </properties>
+    </action>
+</actions>
diff --git a/test/javaee7/cdi/multi-tenant/cdi-jsp-only-app-sets-tccl/pom.xml b/test/javaee7/cdi/multi-tenant/cdi-jsp-only-app-sets-tccl/pom.xml
new file mode 100644
index 0000000..4eb5c3f
--- /dev/null
+++ b/test/javaee7/cdi/multi-tenant/cdi-jsp-only-app-sets-tccl/pom.xml
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  
+  <groupId>com.sun.faces.test.javaee7.cdi.multi-tenant</groupId>
+  <artifactId>cdi-jsp-only-app-sets-tccl</artifactId>
+  <version>2.2.8-SNAPSHOT</version>
+  <packaging>war</packaging>
+  <name>Mojarra ${project.version} - Test - Java EE 7 - CDI - Multi-Tenant - CDI+JSP Only App Sets TCCL</name>
+
+  <dependencies>
+    <dependency>
+      <groupId>com.sun.faces.test</groupId>
+      <artifactId>util</artifactId>
+      <version>2.2.8-SNAPSHOT</version>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>javax</groupId>
+      <artifactId>javaee-api</artifactId>
+      <version>7.0</version>
+      <scope>provided</scope>
+    </dependency>
+  </dependencies>
+  
+  <build>
+    <finalName>test-cdi-jsp-only-app-sets-tccl</finalName>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-compiler-plugin</artifactId>
+        <inherited>true</inherited>
+        <configuration>
+          <source>1.6</source>
+          <target>1.6</target>
+          <encoding>${project.build.sourceEncoding}</encoding>
+        </configuration>
+      </plugin>
+    </plugins>
+      
+  </build>
+  
+</project>
diff --git a/test/javaee7/cdi/multi-tenant/cdi-jsp-only-app-sets-tccl/src/main/java/com/sun/faces/test/javaee7/multi_tenant/cdi_jsp_only_app_sets_tccl/BeforeFilter.java b/test/javaee7/cdi/multi-tenant/cdi-jsp-only-app-sets-tccl/src/main/java/com/sun/faces/test/javaee7/multi_tenant/cdi_jsp_only_app_sets_tccl/BeforeFilter.java
new file mode 100644
index 0000000..c1ce323
--- /dev/null
+++ b/test/javaee7/cdi/multi-tenant/cdi-jsp-only-app-sets-tccl/src/main/java/com/sun/faces/test/javaee7/multi_tenant/cdi_jsp_only_app_sets_tccl/BeforeFilter.java
@@ -0,0 +1,120 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+
+package com.sun.faces.test.javaee7.multi_tenant.cdi_jsp_only_app_sets_tccl;
+
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.net.URL;
+import java.net.URLClassLoader;
+import javax.faces.FactoryFinder;
+import javax.faces.context.FacesContextFactory;
+import javax.servlet.Filter;
+import javax.servlet.FilterChain;
+import javax.servlet.FilterConfig;
+import javax.servlet.ServletException;
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletResponse;
+import javax.servlet.http.HttpServletResponse;
+
+public class BeforeFilter implements Filter {
+    
+    private FilterConfig filterConfig = null;
+    
+    public BeforeFilter() {
+    }    
+    
+    @Override
+    public void doFilter(ServletRequest request, ServletResponse response,
+            FilterChain chain)
+            throws IOException, ServletException {
+        
+        Thread thread = Thread.currentThread();
+        ClassLoader tccl = thread.getContextClassLoader();
+        ClassLoader tcclp1 = new URLClassLoader(new URL[0], tccl); 
+        thread.setContextClassLoader(tcclp1);
+        
+        final boolean weldIsTCCLReplacementResilient = true;
+        
+        if (weldIsTCCLReplacementResilient) {
+            try {
+                chain.doFilter(request, response);
+            } catch (Exception t) {
+                HttpServletResponse resp = (HttpServletResponse) response;
+                PrintWriter pw = resp.getWriter();
+                try {
+                    pw.print("<html><body><p id=\"result\">FAILURE</p>");
+                    int indentLevel = 0;
+                    String indent;
+                    Throwable cause = t;
+                    do {
+                        StringBuilder indentBuilder = new StringBuilder();
+                        for (int i = 0; i < indentLevel; i++) {
+                            indentBuilder.append("  ");
+                        }
+                        indent = indentBuilder.toString();
+                        pw.print("<p>" + indent + " Exception: " + cause.getClass().getName() + "</p>");
+                        pw.print("<p>" + indent + " Exception Message: " + cause.getLocalizedMessage() + "</p>");
+                        pw.print("<code><pre>");
+                        cause.printStackTrace(pw);
+                        pw.print("</pre></code>");
+                    } while (null != (cause = cause.getCause()));
+                    pw.print("</body></html>");
+                    resp.setStatus(200);
+                    pw.close();
+                } catch (Exception e) {
+                }
+            } finally {
+                thread.setContextClassLoader(tccl);
+            }
+        } else {
+        }
+        
+    }
+
+    public void destroy() {        
+    }
+
+    public void init(FilterConfig filterConfig) {        
+        this.filterConfig = filterConfig;
+    }
+    
+}
diff --git a/test/javaee7/cdi/multi-tenant/cdi-jsp-only-app-sets-tccl/src/main/java/com/sun/faces/test/javaee7/multi_tenant/cdi_jsp_only_app_sets_tccl/UserBean.java b/test/javaee7/cdi/multi-tenant/cdi-jsp-only-app-sets-tccl/src/main/java/com/sun/faces/test/javaee7/multi_tenant/cdi_jsp_only_app_sets_tccl/UserBean.java
new file mode 100644
index 0000000..1a6d941
--- /dev/null
+++ b/test/javaee7/cdi/multi-tenant/cdi-jsp-only-app-sets-tccl/src/main/java/com/sun/faces/test/javaee7/multi_tenant/cdi_jsp_only_app_sets_tccl/UserBean.java
@@ -0,0 +1,92 @@
+package com.sun.faces.test.javaee7.multi_tenant.cdi_jsp_only_app_sets_tccl;
+
+import java.io.Serializable;
+import java.util.Date;
+import javax.enterprise.context.SessionScoped;
+import javax.faces.application.FacesMessage;
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.validator.ValidatorException;
+import javax.inject.Named;
+
+ at Named
+ at SessionScoped
+public class UserBean implements Serializable {
+    
+    protected String firstName = "SUCCESS";
+    protected String lastName = "Java";
+    protected Date dob;
+    protected String sex = "Unknown";
+    protected String email;
+    protected String serviceLevel = "medium";
+    
+    public UserBean() {}
+
+    public String getFirstName() {
+        return firstName;
+    }
+
+    public void setFirstName(String firstName) {
+        this.firstName = firstName;
+    }
+
+    public String getLastName() {
+        return lastName;
+    }
+
+    public void setLastName(String lastName) {
+        this.lastName = lastName;
+    }
+
+    public Date getDob() {
+        return dob;
+    }
+
+    public void setDob(Date dob) {
+        this.dob = dob;
+    }
+
+    public String getSex() {
+        return sex;
+    }
+
+    public void setSex(String sex) {
+        this.sex = sex;
+    }
+
+    public String getEmail() {
+        return email;
+    }
+
+    public void setEmail(String email) {
+        this.email = email;
+    }
+
+    public String getServiceLevel() {
+        return serviceLevel;
+    }
+
+    public void setServiceLevel(String serviceLevel) {
+        this.serviceLevel = serviceLevel;
+    }
+    
+    public void validateEmail(FacesContext context, UIComponent toValidate,
+            Object value) throws ValidatorException {
+        String emailStr = (String) value;
+        if (-1 == emailStr.indexOf("@")) {
+            FacesMessage message = new FacesMessage("Invalid email address");
+            throw new ValidatorException(message);
+        }
+    }
+
+    public String addConfirmedUser() {
+        // This method would call a database or other service and add the 
+        // confirmed user information.
+        // For now, we just place an informative message in request scope
+        FacesMessage doneMessage = 
+                new FacesMessage("Successfully added new user");
+        FacesContext.getCurrentInstance().addMessage(null, doneMessage);
+        return "done";
+    }
+}
+
diff --git a/test/javaee7/cdi/multi-tenant/cdi-jsp-only-app-sets-tccl/src/main/webapp/WEB-INF/beans.xml b/test/javaee7/cdi/multi-tenant/cdi-jsp-only-app-sets-tccl/src/main/webapp/WEB-INF/beans.xml
new file mode 100644
index 0000000..e69de29
diff --git a/test/javaee7/cdi/multi-tenant/cdi-jsp-only-app-sets-tccl/src/main/webapp/WEB-INF/glassfish-web.xml b/test/javaee7/cdi/multi-tenant/cdi-jsp-only-app-sets-tccl/src/main/webapp/WEB-INF/glassfish-web.xml
new file mode 100644
index 0000000..4104413
--- /dev/null
+++ b/test/javaee7/cdi/multi-tenant/cdi-jsp-only-app-sets-tccl/src/main/webapp/WEB-INF/glassfish-web.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
+<glassfish-web-app error-url="">
+  <context-root>/test-cdi-jsp-only-app-sets-tccl</context-root>
+  <class-loader delegate="true"/>
+  <jsp-config>
+    <property name="keepgenerated" value="true">
+      <description>Keep a copy of the generated servlet class' java code.</description>
+    </property>
+  </jsp-config>
+</glassfish-web-app>
diff --git a/test/javaee7/cdi/multi-tenant/cdi-jsp-only-app-sets-tccl/src/main/webapp/WEB-INF/web.xml b/test/javaee7/cdi/multi-tenant/cdi-jsp-only-app-sets-tccl/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..d06ceff
--- /dev/null
+++ b/test/javaee7/cdi/multi-tenant/cdi-jsp-only-app-sets-tccl/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+    <filter>
+        <filter-name>BeforeFilter</filter-name>
+        <filter-class>com.sun.faces.test.javaee7.multi_tenant.cdi_jsp_only_app_sets_tccl.BeforeFilter</filter-class>
+    </filter>
+    <filter-mapping>
+        <filter-name>BeforeFilter</filter-name>
+        <url-pattern>/*</url-pattern>
+    </filter-mapping>
+    <welcome-file-list>
+        <welcome-file>index.jsp</welcome-file>
+    </welcome-file-list>
+</web-app>
diff --git a/test/javaee7/cdi/multi-tenant/cdi-jsp-only-app-sets-tccl/src/main/webapp/index.jsp b/test/javaee7/cdi/multi-tenant/cdi-jsp-only-app-sets-tccl/src/main/webapp/index.jsp
new file mode 100644
index 0000000..1c6baab
--- /dev/null
+++ b/test/javaee7/cdi/multi-tenant/cdi-jsp-only-app-sets-tccl/src/main/webapp/index.jsp
@@ -0,0 +1,20 @@
+<%-- 
+    Document   : index
+    Created on : Jul 21, 2014, 11:51:59 AM
+    Author     : ejburns
+--%>
+
+<%@page contentType="text/html" pageEncoding="UTF-8"%>
+<!DOCTYPE html>
+<html>
+    <head>
+        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+        <title>BeforeFilter sets TCCL</title>
+    </head>
+    <body>
+        <h1>BeforeFilter sets TCCL</h1>
+        
+        <p id="result">${userBean.firstName}</p>
+        
+    </body>
+</html>
diff --git a/test/javaee7/cdi/multi-tenant/cdi-jsp-only-app-sets-tccl/src/test/java/com/sun/faces/test/javaee7/multi_tenant/cdi_jsp_only_app_sets_tccl/Issue3341IT.java b/test/javaee7/cdi/multi-tenant/cdi-jsp-only-app-sets-tccl/src/test/java/com/sun/faces/test/javaee7/multi_tenant/cdi_jsp_only_app_sets_tccl/Issue3341IT.java
new file mode 100644
index 0000000..3a5bd9a
--- /dev/null
+++ b/test/javaee7/cdi/multi-tenant/cdi-jsp-only-app-sets-tccl/src/test/java/com/sun/faces/test/javaee7/multi_tenant/cdi_jsp_only_app_sets_tccl/Issue3341IT.java
@@ -0,0 +1,115 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.javaee7.multi_tenant.cdi_jsp_only_app_sets_tccl;
+
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import static com.sun.faces.test.junit.JsfServerExclude.GLASSFISH_3_1_2_2;
+import static com.sun.faces.test.junit.JsfServerExclude.GLASSFISH_4_0;
+import static com.sun.faces.test.junit.JsfServerExclude.WEBLOGIC_12_1_1;
+import static com.sun.faces.test.junit.JsfServerExclude.WEBLOGIC_12_1_2;
+import static com.sun.faces.test.junit.JsfServerExclude.WEBLOGIC_12_1_3;
+import static com.sun.faces.test.junit.JsfServerExclude.WEBLOGIC_12_1_4;
+import com.sun.faces.test.junit.JsfTest;
+import com.sun.faces.test.junit.JsfTestRunner;
+import static com.sun.faces.test.junit.JsfVersion.JSF_2_2_0;
+import static org.junit.Assert.assertTrue;
+import org.junit.runner.RunWith;
+
+ at RunWith(JsfTestRunner.class)
+public class Issue3341IT {
+    /**
+     * Stores the web URL.
+     */
+    private String webUrl;
+    /**
+     * Stores the web client.
+     */
+    private WebClient webClient;
+
+    /**
+     * Setup before testing.
+     * 
+     * @throws Exception when a serious error occurs.
+     */
+    @BeforeClass
+    public static void setUpClass() throws Exception {
+    }
+
+    /**
+     * Cleanup after testing.
+     * 
+     * @throws Exception when a serious error occurs.
+     */
+    @AfterClass
+    public static void tearDownClass() throws Exception {
+    }
+
+    /**
+     * Setup before testing.
+     */
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    /**
+     * Tear down after testing.
+     */
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @JsfTest(value=JSF_2_2_0, excludes={GLASSFISH_3_1_2_2, GLASSFISH_4_0, WEBLOGIC_12_1_1, WEBLOGIC_12_1_2, WEBLOGIC_12_1_3, WEBLOGIC_12_1_4})
+    @Test
+    public void testCDIWithTCCL() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl);
+
+        assertTrue(page.getBody().asText().indexOf("SUCCESS") != -1);
+        
+    }
+}
diff --git a/test/javaee7/cdi/multi-tenant/pom.xml b/test/javaee7/cdi/multi-tenant/pom.xml
new file mode 100644
index 0000000..d4402e4
--- /dev/null
+++ b/test/javaee7/cdi/multi-tenant/pom.xml
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.javaee7.cdi</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.javaee7.cdi.multi-tenant</groupId>
+    <artifactId>pom</artifactId>
+    <packaging>pom</packaging>
+    <name>Mojarra ${project.version} - Test - Java EE 7 - CDI - Multi-Tenant</name>
+    <modules>
+        <module>cdi-jsp-only-app-sets-tccl</module>
+        <module>cdi-app-sets-tccl</module>
+    </modules>
+</project>
diff --git a/test/javaee7/cdi/noBeansXml/nbactions.xml b/test/javaee7/cdi/noBeansXml/nbactions.xml
new file mode 100644
index 0000000..6d4e576
--- /dev/null
+++ b/test/javaee7/cdi/noBeansXml/nbactions.xml
@@ -0,0 +1,163 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--><actions>
+        <action>
+            <actionName>debug.test.single</actionName>
+            <goals>
+                <goal>test-compile</goal>
+                <goal>surefire:test</goal>
+            </goals>
+            <properties>
+                <test>noBeansXml</test>
+                <forkMode>once</forkMode>
+                <maven.surefire.debug>-Xdebug -Xrunjdwp:transport=dt_socket,server=n,address=${jpda.address}</maven.surefire.debug>
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                <jpda.listen>true</jpda.listen>
+                <project.build.finalName>test-noBeansXml</project.build.finalName>
+                <webapp.projectStage>Development</webapp.projectStage>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                <integration.serverPort>8080</integration.serverPort>
+                <integration.serverName>localhost</integration.serverName>
+                <integration.url>http://localhost:8080/test-noBeansXml/</integration.url>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+            </properties>
+        </action>
+        <action>
+            <actionName>test.single</actionName>
+            <goals>
+                <goal>test-compile</goal>
+                <goal>surefire:test</goal>
+            </goals>
+            <properties>
+                <project.build.finalName>test-noBeansXml</project.build.finalName>
+                <integration.serverPort>8080</integration.serverPort>
+                <integration.serverName>localhost</integration.serverName>
+                <integration.url>http://localhost:8080/test-noBeansXml/</integration.url>
+                <test>noBeansXml</test>
+            </properties>
+        </action>
+        <action>
+            <actionName>build</actionName>
+            <goals>
+                <goal>install</goal>
+            </goals>
+            <properties>
+                <webapp.projectStage>Development</webapp.projectStage>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+            </properties>
+        </action>
+        <action>
+            <actionName>rebuild</actionName>
+            <goals>
+                <goal>clean</goal>
+                <goal>install</goal>
+            </goals>
+            <properties>
+                
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                
+                <webapp.projectStage>Development</webapp.projectStage>
+                
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                
+            </properties>
+        </action>
+        <action>
+            <actionName>build-with-dependencies</actionName>
+            <reactor>also-make</reactor>
+            <goals>
+                <goal>install</goal>
+            </goals>
+            <properties>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                <webapp.projectStage>Development</webapp.projectStage>
+            </properties>
+        </action>
+        <action>
+            <actionName>run</actionName>
+            <goals>
+                <goal>package</goal>
+            </goals>
+            <properties>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                <netbeans.deploy>true</netbeans.deploy>
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                <webapp.projectStage>Development</webapp.projectStage>
+            </properties>
+        </action>
+        <action>
+            <actionName>run.single.deploy</actionName>
+            <goals>
+                <goal>package</goal>
+            </goals>
+            <properties>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                <netbeans.deploy>true</netbeans.deploy>
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                <netbeans.deploy.clientUrlPart>${webpagePath}</netbeans.deploy.clientUrlPart>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                <webapp.projectStage>Development</webapp.projectStage>
+            </properties>
+        </action>
+        <action>
+            <actionName>debug.single.deploy</actionName>
+            <goals>
+                <goal>package</goal>
+            </goals>
+            <properties>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                <netbeans.deploy>true</netbeans.deploy>
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                <netbeans.deploy.debugmode>true</netbeans.deploy.debugmode>
+                <netbeans.deploy.clientUrlPart>${webpagePath}</netbeans.deploy.clientUrlPart>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                <webapp.projectStage>Development</webapp.projectStage>
+            </properties>
+        </action>
+    </actions>
diff --git a/test/javaee7/cdi/noBeansXml/pom.xml b/test/javaee7/cdi/noBeansXml/pom.xml
new file mode 100644
index 0000000..bb8de45
--- /dev/null
+++ b/test/javaee7/cdi/noBeansXml/pom.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.javaee7.cdi</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>  
+    <groupId>com.sun.faces.test.javaee7.cdi</groupId>
+    <artifactId>noBeansXml</artifactId>
+    <packaging>war</packaging>
+    <name>Mojarra ${project.version} - Test - JavaEE 7 - CDI - noBeansXml</name>  
+    <build>
+        <finalName>test-javaee7-cdi-noBeansXml</finalName>
+    </build>
+    <properties>
+        <netbeans.hint.deploy.server>gfv3ee6</netbeans.hint.deploy.server>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/test/javaee7/cdi/noBeansXml/src/main/java/com/sun/faces/test/javaee7/cdi/noBeansXml/SimplestFlowBean.java b/test/javaee7/cdi/noBeansXml/src/main/java/com/sun/faces/test/javaee7/cdi/noBeansXml/SimplestFlowBean.java
new file mode 100644
index 0000000..0b1c2a5
--- /dev/null
+++ b/test/javaee7/cdi/noBeansXml/src/main/java/com/sun/faces/test/javaee7/cdi/noBeansXml/SimplestFlowBean.java
@@ -0,0 +1,63 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.test.javaee7.cdi.noBeansXml;
+
+import java.io.Serializable;
+import javax.faces.flow.FlowScoped;
+import javax.inject.Named;
+
+ at Named
+ at FlowScoped("01_simplest")
+public class SimplestFlowBean implements Serializable {
+    
+    private static final long serialVersionUID = -7991411387185942791L;
+    
+    private String name;
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+    
+}
diff --git a/test/javaee7/cdi/noBeansXml/src/main/webapp/01_simplest-return.xhtml b/test/javaee7/cdi/noBeansXml/src/main/webapp/01_simplest-return.xhtml
new file mode 100644
index 0000000..d9d8bd8
--- /dev/null
+++ b/test/javaee7/cdi/noBeansXml/src/main/webapp/01_simplest-return.xhtml
@@ -0,0 +1,21 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    
+    <head>
+        <title>Return page</title>
+    </head>
+    <body>
+    <h:form prependId="false">
+        <p>Return page</p>
+
+        <p id="destroyMessage">#{userBean.destroyFlowMessage}</p>
+        
+        <p><h:link outcome="index" value="go home" /></p>
+ 
+    </h:form>
+    </body>
+</html>
diff --git a/test/javaee7/cdi/noBeansXml/src/main/webapp/01_simplest/01_simplest-flow.xml b/test/javaee7/cdi/noBeansXml/src/main/webapp/01_simplest/01_simplest-flow.xml
new file mode 100644
index 0000000..e69de29
diff --git a/test/javaee7/cdi/noBeansXml/src/main/webapp/01_simplest/01_simplest.xhtml b/test/javaee7/cdi/noBeansXml/src/main/webapp/01_simplest/01_simplest.xhtml
new file mode 100644
index 0000000..931be14
--- /dev/null
+++ b/test/javaee7/cdi/noBeansXml/src/main/webapp/01_simplest/01_simplest.xhtml
@@ -0,0 +1,21 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    
+    <head>
+        <title>First page in the flow</title>
+    </head>
+    <body>
+    <h:form prependId="false">
+        <p>First page in the flow</p>
+
+        <p>Value: <h:inputText id="input" value="#{simplestFlowBean.name}" /></p>
+ 
+        <p><h:commandButton id="a" value="next" action="a" /></p>
+ 
+    </h:form>
+    </body>
+</html>
diff --git a/test/javaee7/cdi/noBeansXml/src/main/webapp/01_simplest/a.xhtml b/test/javaee7/cdi/noBeansXml/src/main/webapp/01_simplest/a.xhtml
new file mode 100644
index 0000000..cb2d0ef
--- /dev/null
+++ b/test/javaee7/cdi/noBeansXml/src/main/webapp/01_simplest/a.xhtml
@@ -0,0 +1,21 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    
+    <head>
+        <title>Second page in the flow</title>
+    </head>
+    <body>
+    <h:form prependId="false">
+        <p>Second page in the flow</p>
+        <p id="value">#{simplestFlowBean.name}</p>
+        
+        <p><h:commandButton id="return" value="return" action="01_simplest-return" /></p>
+        
+    </h:form>
+    </body>
+</html>
diff --git a/test/javaee7/cdi/noBeansXml/src/main/webapp/WEB-INF/glassfish-web.xml b/test/javaee7/cdi/noBeansXml/src/main/webapp/WEB-INF/glassfish-web.xml
new file mode 100644
index 0000000..acdcee3
--- /dev/null
+++ b/test/javaee7/cdi/noBeansXml/src/main/webapp/WEB-INF/glassfish-web.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE glassfish-web-app PUBLIC 
+    "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" 
+    "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
+
+<glassfish-web-app error-url="">
+    <context-root>/test-javaee7-cdi-noBeansXml</context-root>
+    <class-loader delegate="true"/>
+    <jsp-config>
+        <property name="keepgenerated" value="true">
+            <description>Keep a copy of the generated servlet class' java code.</description>
+        </property>
+    </jsp-config>
+</glassfish-web-app>
diff --git a/test/javaee7/cdi/noBeansXml/src/main/webapp/WEB-INF/web.xml b/test/javaee7/cdi/noBeansXml/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..8722f96
--- /dev/null
+++ b/test/javaee7/cdi/noBeansXml/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>${webapp.projectStage}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
+        <param-value>${webapp.partialStateSaving}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>${webapp.stateSavingMethod}</param-value>
+    </context-param>
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <welcome-file-list>
+        <welcome-file>faces/index.xhtml</welcome-file>
+    </welcome-file-list>
+</web-app>
diff --git a/test/javaee7/cdi/noBeansXml/src/main/webapp/index.xhtml b/test/javaee7/cdi/noBeansXml/src/main/webapp/index.xhtml
new file mode 100644
index 0000000..c23165b
--- /dev/null
+++ b/test/javaee7/cdi/noBeansXml/src/main/webapp/index.xhtml
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <head>
+        <title></title>
+    </head>
+    <body>
+        <h:form prependId="false">
+
+            <p><h:commandButton id="enterFlow" value="enter flow" action="01_simplest"/></p>
+            
+        </h:form>
+    </body>
+</html>
+
diff --git a/test/javaee7/cdi/noBeansXml/src/test/java/com/sun/faces/test/javaee7/cdi/noBeansXml/NoBeansXmlIT.java b/test/javaee7/cdi/noBeansXml/src/test/java/com/sun/faces/test/javaee7/cdi/noBeansXml/NoBeansXmlIT.java
new file mode 100644
index 0000000..58a5203
--- /dev/null
+++ b/test/javaee7/cdi/noBeansXml/src/test/java/com/sun/faces/test/javaee7/cdi/noBeansXml/NoBeansXmlIT.java
@@ -0,0 +1,88 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.javaee7.cdi.noBeansXml;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlElement;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
+import static com.sun.faces.test.junit.JsfServerExclude.WEBLOGIC_12_1_4;
+import com.sun.faces.test.junit.JsfTest;
+import com.sun.faces.test.junit.JsfTestRunner;
+import static com.sun.faces.test.junit.JsfVersion.JSF_2_2_0;
+import org.junit.After;
+import static org.junit.Assert.assertEquals;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+ at RunWith(JsfTestRunner.class)
+public class NoBeansXmlIT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @JsfTest(value = JSF_2_2_0, excludes = {WEBLOGIC_12_1_4})
+    @Test
+    public void testFlowWithNoBeansXml() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl);
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("enterFlow");
+        page = button.click();
+        HtmlTextInput input = (HtmlTextInput) page.getElementById("input");
+        String message = "" + System.currentTimeMillis();
+        input.setValueAttribute(message);
+        button = (HtmlSubmitInput) page.getElementById("a");
+        page = button.click();
+        HtmlElement e = (HtmlElement) page.getElementById("value");
+        assertEquals(e.asText(), message);
+    }    
+}
diff --git a/test/javaee7/cdi/pom.xml b/test/javaee7/cdi/pom.xml
new file mode 100644
index 0000000..5518055
--- /dev/null
+++ b/test/javaee7/cdi/pom.xml
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.javaee7</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.javaee7.cdi</groupId>
+    <artifactId>pom</artifactId>
+    <packaging>pom</packaging>
+    <name>Mojarra ${project.version} - Test - JavaEE 7 - CDI</name>
+    <modules>
+        <module>beanValidatorCdi</module>
+        <module>initDestroy</module>
+        <module>noBeansXml</module>
+        <module>multi-tenant</module>
+    </modules>
+</project>
diff --git a/test/javaee7/el/basicLambda/nbactions.xml b/test/javaee7/el/basicLambda/nbactions.xml
new file mode 100644
index 0000000..18a7f5c
--- /dev/null
+++ b/test/javaee7/el/basicLambda/nbactions.xml
@@ -0,0 +1,163 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--><actions>
+        <action>
+            <actionName>debug.test.single</actionName>
+            <goals>
+                <goal>test-compile</goal>
+                <goal>surefire:test</goal>
+            </goals>
+            <properties>
+                <test>basicLambda</test>
+                <forkMode>once</forkMode>
+                <maven.surefire.debug>-Xdebug -Xrunjdwp:transport=dt_socket,server=n,address=${jpda.address}</maven.surefire.debug>
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                <jpda.listen>true</jpda.listen>
+                <project.build.finalName>test-javaee7-el-basicLambda</project.build.finalName>
+                <webapp.projectStage>Development</webapp.projectStage>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                <integration.serverPort>8080</integration.serverPort>
+                <integration.serverName>localhost</integration.serverName>
+                <integration.url>http://localhost:8080/test-javaee7-el-basicLambda/</integration.url>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+            </properties>
+        </action>
+        <action>
+            <actionName>test.single</actionName>
+            <goals>
+                <goal>test-compile</goal>
+                <goal>surefire:test</goal>
+            </goals>
+            <properties>
+                <project.build.finalName>test-javaee7-el-basicLambda</project.build.finalName>
+                <integration.serverPort>8080</integration.serverPort>
+                <integration.serverName>localhost</integration.serverName>
+                <integration.url>http://localhost:8080/test-javaee7-el-basicLambda/</integration.url>
+                <test>basicLambda</test>
+            </properties>
+        </action>
+        <action>
+            <actionName>build</actionName>
+            <goals>
+                <goal>install</goal>
+            </goals>
+            <properties>
+                <webapp.projectStage>Development</webapp.projectStage>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+            </properties>
+        </action>
+        <action>
+            <actionName>rebuild</actionName>
+            <goals>
+                <goal>clean</goal>
+                <goal>install</goal>
+            </goals>
+            <properties>
+                
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                
+                <webapp.projectStage>Development</webapp.projectStage>
+                
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                
+            </properties>
+        </action>
+        <action>
+            <actionName>build-with-dependencies</actionName>
+            <reactor>also-make</reactor>
+            <goals>
+                <goal>install</goal>
+            </goals>
+            <properties>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                <webapp.projectStage>Development</webapp.projectStage>
+            </properties>
+        </action>
+        <action>
+            <actionName>run</actionName>
+            <goals>
+                <goal>package</goal>
+            </goals>
+            <properties>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                <netbeans.deploy>true</netbeans.deploy>
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                <webapp.projectStage>Development</webapp.projectStage>
+            </properties>
+        </action>
+        <action>
+            <actionName>run.single.deploy</actionName>
+            <goals>
+                <goal>package</goal>
+            </goals>
+            <properties>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                <netbeans.deploy>true</netbeans.deploy>
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                <netbeans.deploy.clientUrlPart>${webpagePath}</netbeans.deploy.clientUrlPart>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                <webapp.projectStage>Development</webapp.projectStage>
+            </properties>
+        </action>
+        <action>
+            <actionName>debug.single.deploy</actionName>
+            <goals>
+                <goal>package</goal>
+            </goals>
+            <properties>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                <netbeans.deploy>true</netbeans.deploy>
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                <netbeans.deploy.debugmode>true</netbeans.deploy.debugmode>
+                <netbeans.deploy.clientUrlPart>${webpagePath}</netbeans.deploy.clientUrlPart>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                <webapp.projectStage>Development</webapp.projectStage>
+            </properties>
+        </action>
+    </actions>
diff --git a/test/javaee7/el/basicLambda/pom.xml b/test/javaee7/el/basicLambda/pom.xml
new file mode 100644
index 0000000..67a8146
--- /dev/null
+++ b/test/javaee7/el/basicLambda/pom.xml
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" 
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <artifactId>pom</artifactId>
+        <groupId>com.sun.faces.test.javaee7.el</groupId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>  
+    <groupId>com.sun.faces.test.javaee7.el</groupId>
+    <artifactId>basicLambda</artifactId>
+    <version>2.2.8-SNAPSHOT</version>
+    <packaging>war</packaging>
+    <name>Mojarra ${project.version} - Test - JavaEE 7 - EL - basicLambda</name>
+    <build>
+        <finalName>test-javaee7-el-basicLambda</finalName>
+    </build>
+    <properties>
+        <netbeans.hint.deploy.server>gfv3ee6</netbeans.hint.deploy.server>
+    </properties>
+</project>
diff --git a/test/javaee7/el/basicLambda/src/main/java/com/sun/faces/test/javaee7/el/basicLambda/Book.java b/test/javaee7/el/basicLambda/src/main/java/com/sun/faces/test/javaee7/el/basicLambda/Book.java
new file mode 100644
index 0000000..cd7aa80
--- /dev/null
+++ b/test/javaee7/el/basicLambda/src/main/java/com/sun/faces/test/javaee7/el/basicLambda/Book.java
@@ -0,0 +1,75 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.javaee7.el.basicLambda;
+
+import java.io.Serializable;
+import javax.enterprise.context.SessionScoped;
+import javax.inject.Named;
+
+ at Named
+ at SessionScoped
+public class Book implements Serializable {
+    
+    private String title;
+    private String category;
+
+    public Book(String title, String category) {
+        this.title = title;
+        this.category = category;
+    }
+    public String getTitle() {
+        return title;
+    }
+
+    public void setTitle(String title) {
+        this.title = title;
+    }
+
+    public String getCategory() {
+        return category;
+    }
+
+    public void setCategory(String category) {
+        this.category = category;
+    }
+    
+}
+
diff --git a/test/javaee7/el/basicLambda/src/main/java/com/sun/faces/test/javaee7/el/basicLambda/BookTableBacking.java b/test/javaee7/el/basicLambda/src/main/java/com/sun/faces/test/javaee7/el/basicLambda/BookTableBacking.java
new file mode 100644
index 0000000..07635fe
--- /dev/null
+++ b/test/javaee7/el/basicLambda/src/main/java/com/sun/faces/test/javaee7/el/basicLambda/BookTableBacking.java
@@ -0,0 +1,65 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+
+package com.sun.faces.test.javaee7.el.basicLambda;
+
+import java.util.List;
+import javax.enterprise.context.Dependent;
+import javax.faces.context.FacesContext;
+import javax.inject.Named;
+
+ at Named
+ at Dependent
+public class BookTableBacking {
+    
+    public String getValue() {
+        String result = "";
+        FacesContext context = FacesContext.getCurrentInstance();
+        List<Book> books = context.getApplication().evaluateExpressionGet(context, 
+                "#{library.books.stream()." +
+                                "filter(b->b.category == 'Philosophical Fiction').toList()}", List.class);
+        if (!books.isEmpty()) {
+            result = books.get(0).getTitle();
+        }
+        return result;
+    }
+
+}
diff --git a/test/javaee7/el/basicLambda/src/main/java/com/sun/faces/test/javaee7/el/basicLambda/Library.java b/test/javaee7/el/basicLambda/src/main/java/com/sun/faces/test/javaee7/el/basicLambda/Library.java
new file mode 100644
index 0000000..813aa4c
--- /dev/null
+++ b/test/javaee7/el/basicLambda/src/main/java/com/sun/faces/test/javaee7/el/basicLambda/Library.java
@@ -0,0 +1,70 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+
+package com.sun.faces.test.javaee7.el.basicLambda;
+
+import java.io.Serializable;
+import java.util.List;
+import java.util.concurrent.CopyOnWriteArrayList;
+import javax.annotation.PostConstruct;
+import javax.enterprise.context.SessionScoped;
+import javax.inject.Named;
+
+ at Named
+ at SessionScoped
+public class Library implements Serializable {
+    
+    private List<Book> books;
+    
+    @PostConstruct
+    private void create() {
+        books = new CopyOnWriteArrayList<Book>();
+        books.add(new Book("The Picture of Dorian Gray", "Philosophical Fiction"));
+        books.add(new Book("At Swim Two Birds", "Comedy"));
+        books.add(new Book("North and South", "Social Commentary"));
+        books.add(new Book("The Third Policeman", "Comedy"));
+    }
+
+    public List<Book> getBooks() {
+        return books;
+    }
+
+}
diff --git a/test/javaee7/el/basicLambda/src/main/webapp/WEB-INF/glassfish-web.xml b/test/javaee7/el/basicLambda/src/main/webapp/WEB-INF/glassfish-web.xml
new file mode 100644
index 0000000..13e0059
--- /dev/null
+++ b/test/javaee7/el/basicLambda/src/main/webapp/WEB-INF/glassfish-web.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
+<glassfish-web-app error-url="">
+  <class-loader delegate="true"/>
+  <jsp-config>
+    <property name="keepgenerated" value="true">
+      <description>Keep a copy of the generated servlet class' java code.</description>
+    </property>
+  </jsp-config>
+</glassfish-web-app>
diff --git a/test/javaee7/el/basicLambda/src/main/webapp/WEB-INF/web.xml b/test/javaee7/el/basicLambda/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..0e4a3e3
--- /dev/null
+++ b/test/javaee7/el/basicLambda/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<web-app version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd">
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>${webapp.projectStage}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
+        <param-value>${webapp.partialStateSaving}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>${webapp.stateSavingMethod}</param-value>
+    </context-param>
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <welcome-file-list>
+        <welcome-file>faces/index.xhtml</welcome-file>
+    </welcome-file-list>
+</web-app>
diff --git a/test/javaee7/el/basicLambda/src/main/webapp/bookTable.xhtml b/test/javaee7/el/basicLambda/src/main/webapp/bookTable.xhtml
new file mode 100644
index 0000000..73157d2
--- /dev/null
+++ b/test/javaee7/el/basicLambda/src/main/webapp/bookTable.xhtml
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://xmlns.jcp.org/jsf/html">
+    <head>
+        <title></title>
+    </head>
+    <body>
+        <h:form prependId="false">
+            
+            <h:dataTable value="#{library.books.stream().
+                                  filter(b->b.category == 'Comedy').toList()}" var="book">
+                <h:column>
+                    #{book.category}
+                </h:column>
+                
+                <h:column>
+                    #{book.title}
+                </h:column>
+                
+            </h:dataTable>
+
+            <p id="output2">#{bookTableBacking.value}</p>
+            
+        </h:form>
+    </body>
+</html>
+
diff --git a/test/javaee7/el/basicLambda/src/main/webapp/index.xhtml b/test/javaee7/el/basicLambda/src/main/webapp/index.xhtml
new file mode 100644
index 0000000..22681c3
--- /dev/null
+++ b/test/javaee7/el/basicLambda/src/main/webapp/index.xhtml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://xmlns.jcp.org/jsf/html">
+    <head>
+        <title></title>
+    </head>
+    <body>
+        <h:form prependId="false">
+            <p><h:inputText id="input" value="#{requestScope.i}" /></p>
+            
+            <!--
+            #{xx = (null != requestScope.i) ? requestScope.i : 0}
+            -->
+            
+            <p id="output"><h:outputText value="#{[1,2,3,4,5,6,7,8].stream().
+                                                  filter(i->i%2 == 0).map(i->i*10).toArray()[xx]}" /></p>
+            <h:commandButton id="button" value="submit" />
+        </h:form>
+    </body>
+</html>
+
diff --git a/test/javaee7/el/basicLambda/src/test/java/com/sun/faces/test/javaee7/el/basicLambda/BasicLambdaIT.java b/test/javaee7/el/basicLambda/src/test/java/com/sun/faces/test/javaee7/el/basicLambda/BasicLambdaIT.java
new file mode 100644
index 0000000..9c711f2
--- /dev/null
+++ b/test/javaee7/el/basicLambda/src/test/java/com/sun/faces/test/javaee7/el/basicLambda/BasicLambdaIT.java
@@ -0,0 +1,106 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.javaee7.el.basicLambda;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlElement;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
+import static com.sun.faces.test.junit.JsfServerExclude.WEBLOGIC_12_1_4;
+import com.sun.faces.test.junit.JsfTest;
+import com.sun.faces.test.junit.JsfTestRunner;
+import static com.sun.faces.test.junit.JsfVersion.JSF_2_2_0;
+import org.junit.After;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+ at RunWith(JsfTestRunner.class)
+public class BasicLambdaIT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @JsfTest(value = JSF_2_2_0)
+    @Test
+    public void testIndex() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl);
+        HtmlElement out = page.getHtmlElementById("output");
+        assertEquals("20", out.asText());
+
+        HtmlTextInput input = (HtmlTextInput) page.getElementById("input");
+        input.setValueAttribute("1");
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("button");
+        page = button.click();
+        out = page.getHtmlElementById("output");
+        assertEquals("40", out.asText());
+
+        input = (HtmlTextInput) page.getElementById("input");
+        input.setValueAttribute("2");
+        button = (HtmlSubmitInput) page.getElementById("button");
+        page = button.click();
+        out = page.getHtmlElementById("output");
+        assertEquals("60", out.asText());
+    }
+
+    @JsfTest(value = JSF_2_2_0, excludes = {WEBLOGIC_12_1_4})
+    @Test
+    public void testBookTable() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/bookTable.xhtml");
+        assertTrue(page.asText().contains("At Swim Two Birds"));
+        assertTrue(page.asText().contains("The Third Policeman"));
+        HtmlElement out = page.getHtmlElementById("output2");
+        assertEquals("The Picture of Dorian Gray", out.asText());
+    }
+}
diff --git a/test/javaee7/el/pom.xml b/test/javaee7/el/pom.xml
new file mode 100644
index 0000000..08e0fef
--- /dev/null
+++ b/test/javaee7/el/pom.xml
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.javaee7</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.javaee7.el</groupId>
+    <artifactId>pom</artifactId>
+    <packaging>pom</packaging>
+    <name>Mojarra ${project.version} - Test - JavaEE 7 - EL</name>
+    <modules>
+      <module>basicLambda</module>
+    </modules>
+</project>
diff --git a/test/javaee7/facelets/pom.xml b/test/javaee7/facelets/pom.xml
new file mode 100644
index 0000000..e08785b
--- /dev/null
+++ b/test/javaee7/facelets/pom.xml
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.javaee7</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.javaee7.facelets</groupId>
+    <artifactId>pom</artifactId>
+    <packaging>pom</packaging>
+    <name>Mojarra ${project.version} - Test - JavaEE 7 - Facelets</name>
+    <modules>
+        <module>ui</module>
+    </modules>
+</project>
diff --git a/test/javaee7/facelets/ui/nbactions.xml b/test/javaee7/facelets/ui/nbactions.xml
new file mode 100644
index 0000000..863dcf6
--- /dev/null
+++ b/test/javaee7/facelets/ui/nbactions.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<actions>
+        <action>
+            <actionName>debug.test.single</actionName>
+            <goals>
+                <goal>test-compile</goal>
+                <goal>surefire:test</goal>
+            </goals>
+            <properties>
+                <test>${packageClassName}</test>
+                <forkMode>once</forkMode>
+                <maven.surefire.debug>-Xdebug -Xrunjdwp:transport=dt_socket,server=n,address=${jpda.address}</maven.surefire.debug>
+                <jpda.listen>true</jpda.listen>
+                <integration.url>http://localhost:8080/test-javaee7-facelets-ui/</integration.url>
+            </properties>
+        </action>
+        <action>
+            <actionName>test.single</actionName>
+            <goals>
+                <goal>test-compile</goal>
+                <goal>surefire:test</goal>
+            </goals>
+            <properties>
+                <integration.url>http://localhost:8080/test-javaee7-facelets-ui/</integration.url>
+                <jpda.listen>true</jpda.listen>
+                <maven.surefire.debug>-Xdebug -Xrunjdwp:transport=dt_socket,server=n,address=${jpda.address}</maven.surefire.debug>
+                <forkMode>once</forkMode>
+                <test>${packageClassName}</test>
+            </properties>
+        </action>
+    </actions>
diff --git a/test/javaee7/facelets/ui/pom.xml b/test/javaee7/facelets/ui/pom.xml
new file mode 100644
index 0000000..a342a44
--- /dev/null
+++ b/test/javaee7/facelets/ui/pom.xml
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <artifactId>pom</artifactId>
+        <groupId>com.sun.faces.test.javaee7.facelets</groupId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <artifactId>ui</artifactId>
+    <packaging>war</packaging> 
+    <name>Mojarra ${project.version} - Test - JavaEE 7 - Facelets - UI</name>
+    <build>
+        <finalName>test-javaee7-facelets-ui</finalName>
+    </build>
+</project>
diff --git a/test/javaee7/facelets/ui/src/main/java/com/sun/faces/test/javaee7/facelets/ui/SessionController.java b/test/javaee7/facelets/ui/src/main/java/com/sun/faces/test/javaee7/facelets/ui/SessionController.java
new file mode 100644
index 0000000..28f6d6e
--- /dev/null
+++ b/test/javaee7/facelets/ui/src/main/java/com/sun/faces/test/javaee7/facelets/ui/SessionController.java
@@ -0,0 +1,66 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+
+package com.sun.faces.test.javaee7.facelets.ui;
+
+import java.io.Serializable;
+import java.util.Arrays;
+import java.util.List;
+import javax.annotation.security.PermitAll;
+import javax.enterprise.context.SessionScoped;
+import javax.inject.Named;
+
+ at SessionScoped
+ at Named
+ at PermitAll
+public class SessionController implements Serializable {
+    private static final long serialVersionUID = -5419091806376438376L;
+    
+    private final String template = "foo";
+
+    public String getTemplate() {
+        return template;
+    }
+    
+    public List<String> getTestString() {
+        return Arrays.asList(new String[] {"a", "b", "c"});
+    }    
+}
diff --git a/test/javaee7/facelets/ui/src/main/webapp/WEB-INF/glassfish-web.xml b/test/javaee7/facelets/ui/src/main/webapp/WEB-INF/glassfish-web.xml
new file mode 100644
index 0000000..06f123d
--- /dev/null
+++ b/test/javaee7/facelets/ui/src/main/webapp/WEB-INF/glassfish-web.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
+<glassfish-web-app error-url="">
+  <context-root>/test-javaee7-facelets-ui</context-root>
+  <class-loader delegate="true"/>
+  <jsp-config>
+    <property name="keepgenerated" value="true">
+      <description>Keep a copy of the generated servlet class' java code.</description>
+    </property>
+  </jsp-config>
+</glassfish-web-app>
diff --git a/test/javaee7/facelets/ui/src/main/webapp/WEB-INF/templates/foo/template.xhtml b/test/javaee7/facelets/ui/src/main/webapp/WEB-INF/templates/foo/template.xhtml
new file mode 100644
index 0000000..7fa9a3f
--- /dev/null
+++ b/test/javaee7/facelets/ui/src/main/webapp/WEB-INF/templates/foo/template.xhtml
@@ -0,0 +1,26 @@
+<?xml version='1.0' encoding='UTF-8' ?> 
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
+      xmlns:h="http://xmlns.jcp.org/jsf/html">
+
+    <h:head>
+        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+        <h:outputStylesheet name="./css/default.css"/>
+        <h:outputStylesheet name="./css/cssLayout.css"/>
+        <title>Facelets Template</title>
+    </h:head>
+
+    <h:body>
+
+        <div id="top" class="top">
+            <ui:insert name="top">Top</ui:insert>
+        </div>
+
+        <div id="content" class="center_content">
+            <ui:insert name="content">Content</ui:insert>
+        </div>
+
+    </h:body>
+
+</html>
diff --git a/test/javaee7/facelets/ui/src/main/webapp/WEB-INF/web.xml b/test/javaee7/facelets/ui/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..8722f96
--- /dev/null
+++ b/test/javaee7/facelets/ui/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>${webapp.projectStage}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
+        <param-value>${webapp.partialStateSaving}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>${webapp.stateSavingMethod}</param-value>
+    </context-param>
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <welcome-file-list>
+        <welcome-file>faces/index.xhtml</welcome-file>
+    </welcome-file-list>
+</web-app>
diff --git a/test/javaee7/facelets/ui/src/main/webapp/index.xhtml b/test/javaee7/facelets/ui/src/main/webapp/index.xhtml
new file mode 100644
index 0000000..0c38521
--- /dev/null
+++ b/test/javaee7/facelets/ui/src/main/webapp/index.xhtml
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<!DOCTYPE html>
+
+<ui:composition xmlns="http://www.w3.org/1999/xhtml"
+                xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
+                template="/WEB-INF/templates/#{sessionController.template}/template.xhtml">
+
+    <ui:define name="content">   
+        <ul>
+            <ui:repeat value="#{sessionController.testString}" var="v">
+                <li>#{v}</li>
+            </ui:repeat>
+        </ul>
+    </ui:define>
+
+</ui:composition>
diff --git a/test/javaee7/facelets/ui/src/main/webapp/resources/css/cssLayout.css b/test/javaee7/facelets/ui/src/main/webapp/resources/css/cssLayout.css
new file mode 100644
index 0000000..8ee7ceb
--- /dev/null
+++ b/test/javaee7/facelets/ui/src/main/webapp/resources/css/cssLayout.css
@@ -0,0 +1,61 @@
+
+#top {
+    position: relative;
+    background-color: #036fab;
+    color: white;
+    padding: 5px;
+    margin: 0px 0px 10px 0px;
+}
+
+#bottom {
+    position: relative;
+    background-color: #c2dfef;
+    padding: 5px;
+    margin: 10px 0px 0px 0px;
+}
+
+#left {
+    float: left;
+    background-color: #ece3a5;
+    padding: 5px;
+    width: 150px;
+}
+
+#right {
+    float: right;
+    background-color: #ece3a5;
+    padding: 5px;
+    width: 150px;
+}
+
+.center_content {
+    position: relative;
+    background-color: #dddddd;
+    padding: 5px;
+}
+
+.left_content {
+    background-color: #dddddd;
+    padding: 5px;
+    margin-left: 170px;
+}
+
+.right_content {
+    background-color: #dddddd;
+    padding: 5px;
+    margin: 0px 170px 0px 170px;
+}
+
+#top a:link, #top a:visited {
+  color: white;
+  font-weight : bold;
+  text-decoration: none;
+}
+
+#top a:link:hover, #top a:visited:hover  {
+  color: black;
+  font-weight : bold;
+  text-decoration : underline;
+}
+
+
diff --git a/test/javaee7/facelets/ui/src/main/webapp/resources/css/default.css b/test/javaee7/facelets/ui/src/main/webapp/resources/css/default.css
new file mode 100644
index 0000000..6cbc3d1
--- /dev/null
+++ b/test/javaee7/facelets/ui/src/main/webapp/resources/css/default.css
@@ -0,0 +1,29 @@
+body {
+    background-color: #ffffff;
+    font-size: 12px;
+    font-family: Verdana, "Verdana CE",  Arial, "Arial CE", "Lucida Grande CE", lucida, "Helvetica CE", sans-serif;
+    color: #000000;  
+    margin: 10px;
+}
+
+h1 {
+    font-family: Arial, "Arial CE", "Lucida Grande CE", lucida, "Helvetica CE", sans-serif;
+    border-bottom: 1px solid #AFAFAF; 
+    font-size:  16px;
+    font-weight: bold;
+    margin: 0px;
+    padding: 0px;
+    color: #D20005;
+}
+
+a:link, a:visited {
+  color: #045491;
+  font-weight : bold;
+  text-decoration: none;
+}
+
+a:link:hover, a:visited:hover  {
+  color: #045491;
+  font-weight : bold;
+  text-decoration : underline;
+}
diff --git a/test/javaee7/facelets/ui/src/test/java/com/sun/faces/test/javaee7/facelets/ui/VerifyTemplateUIIT.java b/test/javaee7/facelets/ui/src/test/java/com/sun/faces/test/javaee7/facelets/ui/VerifyTemplateUIIT.java
new file mode 100644
index 0000000..01d296f
--- /dev/null
+++ b/test/javaee7/facelets/ui/src/test/java/com/sun/faces/test/javaee7/facelets/ui/VerifyTemplateUIIT.java
@@ -0,0 +1,80 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.javaee7.facelets.ui;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import static com.sun.faces.test.junit.JsfServerExclude.WEBLOGIC_12_1_4;
+import com.sun.faces.test.junit.JsfTest;
+import com.sun.faces.test.junit.JsfTestRunner;
+import static com.sun.faces.test.junit.JsfVersion.JSF_2_2_0;
+import org.junit.After;
+import static org.junit.Assert.assertTrue;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+ at RunWith(JsfTestRunner.class)
+public class VerifyTemplateUIIT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @JsfTest(value = JSF_2_2_0, excludes = {WEBLOGIC_12_1_4})
+    @Test
+    public void testUL() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl);
+        String pageXml = page.getBody().asXml();
+        assertTrue(pageXml.matches("(?s).*<li>\\s+a\\s+</li>.*"));
+        assertTrue(pageXml.matches("(?s).*<li>\\s+b\\s+</li>.*"));
+        assertTrue(pageXml.matches("(?s).*<li>\\s+c\\s+</li>.*"));
+    }
+}
diff --git a/test/javaee7/pom.xml b/test/javaee7/pom.xml
new file mode 100644
index 0000000..4b2aa9e
--- /dev/null
+++ b/test/javaee7/pom.xml
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.javaee7</groupId>
+    <artifactId>pom</artifactId>
+    <packaging>pom</packaging>
+    <name>Mojarra ${project.version} - Test - JavaEE 7</name>
+    <dependencies>
+        <dependency>
+            <groupId>com.sun.faces.test</groupId>
+            <artifactId>util</artifactId>
+            <version>${project.version}</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>javax</groupId>
+            <artifactId>javaee-api</artifactId>
+            <version>7.0</version>
+            <scope>provided</scope>
+        </dependency>
+    </dependencies>    
+    <modules>
+	<module>action</module>
+        <module>cdi</module>
+        <module>el</module>
+        <module>beanValidation</module>
+        <module>facelets</module>
+    </modules>
+</project>
diff --git a/test/performance/pom.xml b/test/performance/pom.xml
new file mode 100644
index 0000000..0f9f081
--- /dev/null
+++ b/test/performance/pom.xml
@@ -0,0 +1,202 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" 
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test</groupId>
+    <artifactId>performance</artifactId>
+    <packaging>war</packaging>
+    <name>Mojarra ${jsf.version} - Test - Performance</name>
+    <build>
+        <finalName>test-performance</finalName>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>2.4</version>
+                <configuration>
+                    <source>1.6</source>
+                    <target>1.6</target>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+    <profiles>
+        <profile>
+            <id>jmeter</id>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>org.codehaus.mojo</groupId>
+                        <artifactId>chronos-jmeter-maven-plugin</artifactId>
+                        <version>1.0</version>
+                        <executions>
+                            <execution>
+                                <id>perform</id>
+                                <configuration>
+                                    <input>${basedir}/src/test/jmeter</input>
+                                    <historydir>${basedir}/chronos-history</historydir>
+                                </configuration>
+                                <goals>
+                                    <goal>jmeter</goal>
+                                </goals>
+                            </execution>
+                            <execution>
+                                <id>save</id>
+                                <configuration>
+                                    <historydir>${basedir}/chronos-history</historydir>
+                                </configuration>
+                                <goals>
+                                    <goal>savehistory</goal>
+                                </goals>
+                            </execution>
+                        </executions>
+                    </plugin>
+                </plugins>
+            </build>
+            <properties>
+                <performance.title>Performance - ${jsf.version}</performance.title>
+            </properties>
+            <reporting>
+                <plugins>
+                    <plugin>
+                        <groupId>org.codehaus.mojo</groupId>
+                        <artifactId>chronos-report-maven-plugin</artifactId>
+                        <version>1.0</version>
+                        <configuration>
+                            <title>${performance.title}</title>
+                            <historydir>${basedir}/chronos-history</historydir>
+                            <showaverage>true</showaverage>
+                            <showdetails>true</showdetails>
+                            <showgc>false</showgc>
+                            <showhistogram>true</showhistogram>
+                            <showinfotable>true</showinfotable>
+                            <showpercentile>true</showpercentile>
+                            <showpercentile95>true</showpercentile95>
+                            <showpercentile99>true</showpercentile99>
+                            <showresponse>true</showresponse>
+                            <showsummary>true</showsummary>
+                            <showsummarycharts>true</showsummarycharts>
+                            <showthroughput>true</showthroughput>
+                            <showtimeinfo>true</showtimeinfo>
+                        </configuration>
+                        <reportSets>
+                            <reportSet>
+                                <reports>
+                                    <report>report</report>
+                                    <report>historyreport</report>
+                                </reports>
+                            </reportSet>
+                        </reportSets>
+                    </plugin>
+                </plugins>
+            </reporting>        
+        </profile>
+        <profile>
+            <id>jmeter-owan</id>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>org.codehaus.mojo</groupId>
+                        <artifactId>chronos-jmeter-maven-plugin</artifactId>
+                        <version>1.0</version>
+                        <executions>
+                            <execution>
+                                <id>perform</id>
+                                <configuration>
+                                    <input>${basedir}/src/test/jmeter</input>
+                                    <historydir>${basedir}/chronos-history</historydir>
+                                    <sysproperties>
+                                        <http.proxyHost>www-proxy.us.oracle.com</http.proxyHost>
+                                        <http.proxyPort>80</http.proxyPort>
+                                    </sysproperties>
+                                </configuration>
+                                <goals>
+                                    <goal>jmeter</goal>
+                                </goals>
+                            </execution>
+                            <execution>
+                                <id>save</id>
+                                <configuration>
+                                    <historydir>${basedir}/chronos-history</historydir>
+                                    <sysproperties>
+                                        <http.proxyHost>www-proxy.us.oracle.com</http.proxyHost>
+                                        <http.proxyPort>80</http.proxyPort>
+                                    </sysproperties>
+                                </configuration>
+                                <goals>
+                                    <goal>savehistory</goal>
+                                </goals>
+                            </execution>
+                        </executions>
+                    </plugin>
+                </plugins>
+            </build>
+            <properties>
+                <performance.title>Performance - ${jsf.version}</performance.title>
+            </properties>
+            <reporting>
+                <plugins>
+                    <plugin>
+                        <groupId>org.codehaus.mojo</groupId>
+                        <artifactId>chronos-report-maven-plugin</artifactId>
+                        <version>1.0</version>
+                        <configuration>
+                            <title>${performance.title}</title>
+                            <historydir>${basedir}/chronos-history</historydir>
+                            <showaverage>true</showaverage>
+                            <showdetails>true</showdetails>
+                            <showgc>false</showgc>
+                            <showhistogram>true</showhistogram>
+                            <showinfotable>true</showinfotable>
+                            <showpercentile>true</showpercentile>
+                            <showpercentile95>true</showpercentile95>
+                            <showpercentile99>true</showpercentile99>
+                            <showresponse>true</showresponse>
+                            <showsummary>true</showsummary>
+                            <showsummarycharts>true</showsummarycharts>
+                            <showthroughput>true</showthroughput>
+                            <showtimeinfo>true</showtimeinfo>
+                        </configuration>
+                        <reportSets>
+                            <reportSet>
+                                <reports>
+                                    <report>report</report>
+                                    <report>historyreport</report>
+                                </reports>
+                            </reportSet>
+                        </reportSets>
+                    </plugin>
+                </plugins>
+            </reporting>        
+        </profile>
+    </profiles>
+    <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+        <webapp.disableIdUniqueness>false</webapp.disableIdUniqueness>
+        <webapp.delegate>true</webapp.delegate>
+        <webapp.useBundledJsf>false</webapp.useBundledJsf>
+    </properties>
+    <reporting>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-project-info-reports-plugin</artifactId>
+                <version>2.7</version>
+                <reportSets>
+                    <reportSet>
+                        <reports>
+                            <report>index</report>
+                        </reports>
+                    </reportSet>
+                </reportSets>
+            </plugin>
+        </plugins>        
+    </reporting>
+</project>
diff --git a/test/performance/src/main/java/com/sun/faces/test/performance/Issue2413Bean.java b/test/performance/src/main/java/com/sun/faces/test/performance/Issue2413Bean.java
new file mode 100644
index 0000000..c10e6c8
--- /dev/null
+++ b/test/performance/src/main/java/com/sun/faces/test/performance/Issue2413Bean.java
@@ -0,0 +1,55 @@
+/*
+ * 
+ */
+package com.sun.faces.test.performance;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import javax.annotation.PostConstruct;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.RequestScoped;
+import javax.faces.component.html.HtmlOutputText;
+import javax.faces.component.html.HtmlPanelGroup;
+import javax.faces.context.FacesContext;
+import javax.faces.event.ActionEvent;
+import javax.faces.event.ActionListener;
+import javax.faces.event.AjaxBehaviorEvent;
+import javax.faces.event.PhaseId;
+
+ at ManagedBean(name = "issue2413Bean")
+ at RequestScoped
+public class Issue2413Bean implements Serializable {
+
+    private static final long serialVersionUID = 5862863998950684902L;
+    private HtmlPanelGroup panelGroup;
+    private ArrayList<String> data = new ArrayList<String>();
+
+    @PostConstruct
+    public void init() {
+        for (int i = 0; i < 1000; i++) {
+            data.add(String.valueOf(i));
+        }
+    }
+
+    public HtmlPanelGroup getPanelGroup() {
+        return panelGroup;
+    }
+
+    public void setPanelGroup(HtmlPanelGroup panelGroup) {
+        this.panelGroup = panelGroup;
+    }
+
+    public void onAddComponent(ActionEvent event) {
+        HtmlOutputText out = new HtmlOutputText();
+        out.setValue("test - " + System.currentTimeMillis());
+        getPanelGroup().getChildren().add(out);
+    }
+
+    public ArrayList<String> getData() {
+        return data;
+    }
+
+    public void setData(ArrayList<String> data) {
+        this.data = data;
+    }
+}
diff --git a/test/performance/src/main/webapp/WEB-INF/glassfish-web.xml b/test/performance/src/main/webapp/WEB-INF/glassfish-web.xml
new file mode 100644
index 0000000..7eb264c
--- /dev/null
+++ b/test/performance/src/main/webapp/WEB-INF/glassfish-web.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE glassfish-web-app PUBLIC 
+    "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" 
+    "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
+
+<glassfish-web-app error-url="">
+    <context-root>/test-performance</context-root>
+    <class-loader delegate="${webapp.delegate}"/>
+    <property name="useBundledJsf" value="${webapp.useBundledJsf}"/>
+    <jsp-config>
+        <property name="keepgenerated" value="true">
+            <description>Keep a copy of the generated servlet class' java code.</description>
+        </property>
+    </jsp-config>
+</glassfish-web-app>
diff --git a/test/performance/src/main/webapp/WEB-INF/web.xml b/test/performance/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..a6c450c
--- /dev/null
+++ b/test/performance/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>Development</param-value>
+    </context-param>
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <session-config>
+        <session-timeout>
+            30
+        </session-timeout>
+    </session-config>
+    <welcome-file-list>
+        <welcome-file>faces/index.xhtml</welcome-file>
+    </welcome-file-list>
+</web-app>
diff --git a/test/performance/src/main/webapp/index.html b/test/performance/src/main/webapp/index.html
new file mode 100644
index 0000000..613530c
--- /dev/null
+++ b/test/performance/src/main/webapp/index.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+
+<html>
+    <head>
+        <title>Performance tests</title>
+        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+    </head>
+    <body>
+    </body>
+</html>
diff --git a/test/performance/src/main/webapp/issue2413.xhtml b/test/performance/src/main/webapp/issue2413.xhtml
new file mode 100644
index 0000000..d0ed103
--- /dev/null
+++ b/test/performance/src/main/webapp/issue2413.xhtml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+
+    <f:view contentType="text/html">
+        <h:head>
+            <meta content='text/html; charset=UTF-8' http-equiv="Content-Type" />
+        </h:head>
+        <h:body>
+            <h:form id="form">
+                <h:panelGroup binding="#{issue2413Bean.panelGroup}" />
+                <h:commandButton id="add" value="add component" actionListener="#{issue2413Bean.onAddComponent}"/>
+                <h:dataTable value="#{issue2413Bean.data}" var="data" rendered="false">
+                    <h:column>
+                        <h:outputText value="#{data}"/>
+                    </h:column>
+                </h:dataTable>
+            </h:form>
+        </h:body>
+    </f:view>
+</html>
diff --git a/test/performance/src/test/jmeter/0001-index-page.jmx b/test/performance/src/test/jmeter/0001-index-page.jmx
new file mode 100644
index 0000000..4a82ceb
--- /dev/null
+++ b/test/performance/src/test/jmeter/0001-index-page.jmx
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<jmeterTestPlan version="1.2" properties="2.2">
+  <hashTree>
+    <TestPlan guiclass="TestPlanGui" testclass="TestPlan" testname="Test Plan" enabled="true">
+      <stringProp name="TestPlan.comments"></stringProp>
+      <boolProp name="TestPlan.functional_mode">false</boolProp>
+      <boolProp name="TestPlan.serialize_threadgroups">false</boolProp>
+      <elementProp name="TestPlan.user_defined_variables" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+        <collectionProp name="Arguments.arguments"/>
+      </elementProp>
+      <stringProp name="TestPlan.user_define_classpath"></stringProp>
+    </TestPlan>
+    <hashTree>
+      <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="Thread Group" enabled="true">
+        <stringProp name="ThreadGroup.on_sample_error">continue</stringProp>
+        <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true">
+          <boolProp name="LoopController.continue_forever">false</boolProp>
+          <stringProp name="LoopController.loops">100</stringProp>
+        </elementProp>
+        <stringProp name="ThreadGroup.num_threads">100</stringProp>
+        <stringProp name="ThreadGroup.ramp_time">5</stringProp>
+        <longProp name="ThreadGroup.start_time">1337281888000</longProp>
+        <longProp name="ThreadGroup.end_time">1337281888000</longProp>
+        <boolProp name="ThreadGroup.scheduler">false</boolProp>
+        <stringProp name="ThreadGroup.duration"></stringProp>
+        <stringProp name="ThreadGroup.delay"></stringProp>
+      </ThreadGroup>
+      <hashTree>
+        <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="index-page" enabled="true">
+          <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+            <collectionProp name="Arguments.arguments"/>
+          </elementProp>
+          <stringProp name="HTTPSampler.domain">localhost</stringProp>
+          <stringProp name="HTTPSampler.port">8080</stringProp>
+          <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+          <stringProp name="HTTPSampler.response_timeout"></stringProp>
+          <stringProp name="HTTPSampler.protocol"></stringProp>
+          <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+          <stringProp name="HTTPSampler.path">/test-performance/index.html</stringProp>
+          <stringProp name="HTTPSampler.method">GET</stringProp>
+          <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+          <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+          <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+          <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+          <boolProp name="HTTPSampler.monitor">false</boolProp>
+          <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+        </HTTPSamplerProxy>
+        <hashTree/>
+      </hashTree>
+      <ResultCollector guiclass="GraphVisualizer" testclass="ResultCollector" testname="Graph Results" enabled="true">
+        <boolProp name="ResultCollector.error_logging">false</boolProp>
+        <objProp>
+          <name>saveConfig</name>
+          <value class="SampleSaveConfiguration">
+            <time>true</time>
+            <latency>true</latency>
+            <timestamp>true</timestamp>
+            <success>true</success>
+            <label>true</label>
+            <code>true</code>
+            <message>true</message>
+            <threadName>true</threadName>
+            <dataType>true</dataType>
+            <encoding>false</encoding>
+            <assertions>true</assertions>
+            <subresults>true</subresults>
+            <responseData>false</responseData>
+            <samplerData>false</samplerData>
+            <xml>true</xml>
+            <fieldNames>false</fieldNames>
+            <responseHeaders>false</responseHeaders>
+            <requestHeaders>false</requestHeaders>
+            <responseDataOnError>false</responseDataOnError>
+            <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
+            <assertionsResultsToSave>0</assertionsResultsToSave>
+            <bytes>true</bytes>
+          </value>
+        </objProp>
+        <stringProp name="filename"></stringProp>
+        <boolProp name="ResultCollector.success_only_logging">true</boolProp>
+      </ResultCollector>
+      <hashTree/>
+    </hashTree>
+  </hashTree>
+</jmeterTestPlan>
diff --git a/test/performance/src/test/jmeter/0002-issue-2413.jmx b/test/performance/src/test/jmeter/0002-issue-2413.jmx
new file mode 100644
index 0000000..0e32110
--- /dev/null
+++ b/test/performance/src/test/jmeter/0002-issue-2413.jmx
@@ -0,0 +1,188 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<jmeterTestPlan version="1.2" properties="2.2">
+  <hashTree>
+    <TestPlan guiclass="TestPlanGui" testclass="TestPlan" testname="Test Plan" enabled="true">
+      <stringProp name="TestPlan.comments"></stringProp>
+      <boolProp name="TestPlan.functional_mode">false</boolProp>
+      <boolProp name="TestPlan.serialize_threadgroups">false</boolProp>
+      <elementProp name="TestPlan.user_defined_variables" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+        <collectionProp name="Arguments.arguments"/>
+      </elementProp>
+      <stringProp name="TestPlan.user_define_classpath"></stringProp>
+    </TestPlan>
+    <hashTree>
+      <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="Thread Group" enabled="true">
+        <stringProp name="ThreadGroup.on_sample_error">continue</stringProp>
+        <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true">
+          <boolProp name="LoopController.continue_forever">false</boolProp>
+          <stringProp name="LoopController.loops">100</stringProp>
+        </elementProp>
+        <stringProp name="ThreadGroup.num_threads">100</stringProp>
+        <stringProp name="ThreadGroup.ramp_time">5</stringProp>
+        <longProp name="ThreadGroup.start_time">1337281888000</longProp>
+        <longProp name="ThreadGroup.end_time">1337281888000</longProp>
+        <boolProp name="ThreadGroup.scheduler">false</boolProp>
+        <stringProp name="ThreadGroup.duration"></stringProp>
+        <stringProp name="ThreadGroup.delay"></stringProp>
+      </ThreadGroup>
+      <hashTree>
+        <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Regular Expression Extractor" enabled="true">
+          <stringProp name="RegexExtractor.useHeaders">false</stringProp>
+          <stringProp name="RegexExtractor.refname">jsfViewState</stringProp>
+          <stringProp name="RegexExtractor.regex"><input type="hidden" name="javax\.faces\.ViewState" id="(.+?)javax\.faces\.ViewState(.+?)" value="(.+?)"</stringProp>
+          <stringProp name="RegexExtractor.template">$1$$2$$3$</stringProp>
+          <stringProp name="RegexExtractor.default"></stringProp>
+          <stringProp name="RegexExtractor.match_number">0</stringProp>
+          <stringProp name="Sample.scope">all</stringProp>
+        </RegexExtractor>
+        <hashTree/>
+        <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
+          <collectionProp name="CookieManager.cookies"/>
+          <boolProp name="CookieManager.clearEachIteration">true</boolProp>
+        </CookieManager>
+        <hashTree/>
+        <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Simple Controller" enabled="true"/>
+        <hashTree>
+          <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="issue2413-0" enabled="true">
+            <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+              <collectionProp name="Arguments.arguments"/>
+            </elementProp>
+            <stringProp name="HTTPSampler.domain">localhost</stringProp>
+            <stringProp name="HTTPSampler.port">8080</stringProp>
+            <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+            <stringProp name="HTTPSampler.response_timeout"></stringProp>
+            <stringProp name="HTTPSampler.protocol"></stringProp>
+            <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+            <stringProp name="HTTPSampler.path">/test-performance/faces/issue2413.xhtml</stringProp>
+            <stringProp name="HTTPSampler.method">GET</stringProp>
+            <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+            <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+            <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+            <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+            <boolProp name="HTTPSampler.monitor">false</boolProp>
+            <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+          </HTTPSamplerProxy>
+          <hashTree/>
+          <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="issue2413-1" enabled="true">
+            <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+              <collectionProp name="Arguments.arguments">
+                <elementProp name="form" elementType="HTTPArgument">
+                  <boolProp name="HTTPArgument.always_encode">false</boolProp>
+                  <stringProp name="Argument.value">form</stringProp>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                  <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                  <stringProp name="Argument.name">form</stringProp>
+                </elementProp>
+                <elementProp name="form:add" elementType="HTTPArgument">
+                  <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                  <stringProp name="Argument.value">add component</stringProp>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                  <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                  <stringProp name="Argument.name">form:add</stringProp>
+                </elementProp>
+                <elementProp name="${jsfViewState_g1}javax.faces.ViewState${jsfViewState_g2}" elementType="HTTPArgument">
+                  <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                  <stringProp name="Argument.value">${jsfViewState_g3}</stringProp>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                  <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                  <stringProp name="Argument.name">${jsfViewState_g1}javax.faces.ViewState${jsfViewState_g2}</stringProp>
+                </elementProp>
+              </collectionProp>
+            </elementProp>
+            <stringProp name="HTTPSampler.domain">localhost</stringProp>
+            <stringProp name="HTTPSampler.port">8080</stringProp>
+            <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+            <stringProp name="HTTPSampler.response_timeout"></stringProp>
+            <stringProp name="HTTPSampler.protocol"></stringProp>
+            <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+            <stringProp name="HTTPSampler.path">/test-performance/faces/issue2413.xhtml</stringProp>
+            <stringProp name="HTTPSampler.method">POST</stringProp>
+            <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+            <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+            <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+            <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+            <boolProp name="HTTPSampler.BROWSER_COMPATIBLE_MULTIPART">true</boolProp>
+            <boolProp name="HTTPSampler.monitor">false</boolProp>
+            <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+          </HTTPSamplerProxy>
+          <hashTree/>
+          <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="issue2413-2" enabled="true">
+            <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+              <collectionProp name="Arguments.arguments">
+                <elementProp name="form" elementType="HTTPArgument">
+                  <boolProp name="HTTPArgument.always_encode">false</boolProp>
+                  <stringProp name="Argument.value">form</stringProp>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                  <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                  <stringProp name="Argument.name">form</stringProp>
+                </elementProp>
+                <elementProp name="form:add" elementType="HTTPArgument">
+                  <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                  <stringProp name="Argument.value">add component</stringProp>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                  <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                  <stringProp name="Argument.name">form:add</stringProp>
+                </elementProp>
+                <elementProp name="${jsfViewState_g1}javax.faces.ViewState${jsfViewState_g2}" elementType="HTTPArgument">
+                  <boolProp name="HTTPArgument.always_encode">true</boolProp>
+                  <stringProp name="Argument.value">${jsfViewState_g3}</stringProp>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                  <boolProp name="HTTPArgument.use_equals">true</boolProp>
+                  <stringProp name="Argument.name">${jsfViewState_g1}javax.faces.ViewState${jsfViewState_g2}</stringProp>
+                </elementProp>
+              </collectionProp>
+            </elementProp>
+            <stringProp name="HTTPSampler.domain">localhost</stringProp>
+            <stringProp name="HTTPSampler.port">8080</stringProp>
+            <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+            <stringProp name="HTTPSampler.response_timeout"></stringProp>
+            <stringProp name="HTTPSampler.protocol"></stringProp>
+            <stringProp name="HTTPSampler.contentEncoding"></stringProp>
+            <stringProp name="HTTPSampler.path">/test-performance/faces/issue2413.xhtml</stringProp>
+            <stringProp name="HTTPSampler.method">POST</stringProp>
+            <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
+            <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+            <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
+            <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+            <boolProp name="HTTPSampler.BROWSER_COMPATIBLE_MULTIPART">true</boolProp>
+            <boolProp name="HTTPSampler.monitor">false</boolProp>
+            <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+          </HTTPSamplerProxy>
+          <hashTree/>
+        </hashTree>
+      </hashTree>
+      <ResultCollector guiclass="ViewResultsFullVisualizer" testclass="ResultCollector" testname="View Results Tree" enabled="false">
+        <boolProp name="ResultCollector.error_logging">false</boolProp>
+        <objProp>
+          <name>saveConfig</name>
+          <value class="SampleSaveConfiguration">
+            <time>true</time>
+            <latency>true</latency>
+            <timestamp>true</timestamp>
+            <success>true</success>
+            <label>true</label>
+            <code>true</code>
+            <message>true</message>
+            <threadName>true</threadName>
+            <dataType>true</dataType>
+            <encoding>false</encoding>
+            <assertions>true</assertions>
+            <subresults>true</subresults>
+            <responseData>false</responseData>
+            <samplerData>false</samplerData>
+            <xml>true</xml>
+            <fieldNames>false</fieldNames>
+            <responseHeaders>false</responseHeaders>
+            <requestHeaders>false</requestHeaders>
+            <responseDataOnError>false</responseDataOnError>
+            <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
+            <assertionsResultsToSave>0</assertionsResultsToSave>
+            <bytes>true</bytes>
+          </value>
+        </objProp>
+        <stringProp name="filename"></stringProp>
+      </ResultCollector>
+      <hashTree/>
+    </hashTree>
+  </hashTree>
+</jmeterTestPlan>
diff --git a/test/pom.xml b/test/pom.xml
new file mode 100644
index 0000000..6ea511d
--- /dev/null
+++ b/test/pom.xml
@@ -0,0 +1,879 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" 
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <groupId>com.sun.faces.test</groupId>
+    <artifactId>pom</artifactId>
+    <version>2.2.8-SNAPSHOT</version>
+    <packaging>pom</packaging>
+    <name>Mojarra ${project.version} - Test</name>
+    <modules>
+        <module>agnostic</module>
+        <module>cluster</module>
+        <module>glassfish</module>
+        <module>groovy</module>
+        <module>javaee6</module>
+        <module>javaee6web</module>
+        <module>javaee7</module>
+        <module>performance</module>
+        <module>protocolaware</module>
+        <module>quality</module>
+        <module>selenium</module>
+        <module>servlet30</module>
+        <module>servlet31</module>
+        <module>unit</module>
+        <module>util</module>
+        <module>web-profile</module>
+        <module>weblogic</module>
+        <module>weblogic12c</module>
+    </modules>
+    <build>
+        <pluginManagement>
+            <plugins>
+                <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-antrun-plugin</artifactId>
+                    <version>1.7</version>
+                </plugin>                
+                <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-compiler-plugin</artifactId>
+                    <version>3.1</version>
+                </plugin>
+                <plugin>                 
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-dependency-plugin</artifactId>
+                    <version>2.8</version>
+                </plugin>
+                <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-failsafe-plugin</artifactId>
+                    <version>2.16</version>
+                </plugin>                
+                <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-resources-plugin</artifactId>
+                    <version>2.6</version>
+                </plugin>
+                <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-site-plugin</artifactId>
+                    <version>3.3</version>
+                </plugin>
+                <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-surefire-report-plugin</artifactId>
+                    <version>2.16</version>
+                </plugin>                
+                <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-war-plugin</artifactId>
+                    <version>2.4</version>
+                </plugin>
+                <plugin>
+                    <groupId>org.codehaus.cargo</groupId>
+                    <artifactId>cargo-maven2-plugin</artifactId>
+                    <version>1.4.4</version>
+                </plugin>
+            </plugins>
+        </pluginManagement>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <inherited>true</inherited>
+                <configuration>
+                    <source>1.6</source>
+                    <target>1.6</target>
+                    <encoding>${project.build.sourceEncoding}</encoding>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-resources-plugin</artifactId>
+                <inherited>true</inherited>
+                <configuration>
+                    <encoding>${project.build.sourceEncoding}</encoding>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-war-plugin</artifactId>
+                <inherited>true</inherited>
+                <configuration>
+                    <filteringDeploymentDescriptors>true</filteringDeploymentDescriptors>
+                    <failOnMissingWebXml>false</failOnMissingWebXml>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+    <dependencies>
+        <dependency>
+            <groupId>javax.faces</groupId>
+            <artifactId>javax.faces-api</artifactId>
+            <version>2.2</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.glassfish</groupId>
+            <artifactId>javax.faces</artifactId>
+            <version>${jsf.version}</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>javax</groupId>
+            <artifactId>javaee-web-api</artifactId>
+            <version>6.0</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <version>4.11</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>net.sourceforge.htmlunit</groupId>
+            <artifactId>htmlunit</artifactId>
+            <version>2.12</version>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+    <profiles>
+        <profile>
+            <id>glassfish-cargo</id>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>org.codehaus.cargo</groupId>
+                        <artifactId>cargo-maven2-plugin</artifactId>
+                        <inherited>true</inherited>
+                        <executions>
+                            <execution>
+                                <id>start-container</id>
+                                <phase>pre-integration-test</phase>
+                                <goals>
+                                    <goal>start</goal>
+                                </goals>
+                                <configuration>
+                                    <timeout>2400000</timeout>
+                                </configuration>
+                            </execution>
+                            <execution>
+                                <id>stop-container</id>
+                                <phase>post-integration-test</phase>
+                                <goals>
+                                    <goal>stop</goal>
+                                </goals>
+                                <configuration>
+                                    <timeout>2400000</timeout>
+                                </configuration>
+                            </execution>
+                        </executions>                        
+                        <configuration>
+                            <container>
+                                <containerId>${glassfish.cargo.id}</containerId>
+                                <type>installed</type>
+                                <home>${glassfish.cargo.home}</home>
+                                <timeout>2400000</timeout>
+                            </container>
+                            <configuration>
+                                <type>${glassfish.cargo.configType}</type>
+                                <home>${glassfish.cargo.config}</home>
+                                <properties>
+                                    <cargo.hostname>${glassfish.cargo.serverName}</cargo.hostname>
+                                    <cargo.servlet.port>${glassfish.cargo.servletPort}</cargo.servlet.port>
+                                    <cargo.glassfish.domain.name>${glassfish.cargo.domain}</cargo.glassfish.domain.name>
+                                </properties>
+                            </configuration>
+                        </configuration>
+                    </plugin>
+                </plugins>
+            </build>
+            <properties>
+                <glassfish.cargo.home>C:/Glassfish4.0</glassfish.cargo.home>
+                <glassfish.cargo.configType>standalone</glassfish.cargo.configType>
+                <glassfish.cargo.config>${glassfish.cargo.home}/glassfish/domains</glassfish.cargo.config>
+                <glassfish.cargo.domain>domain1</glassfish.cargo.domain>
+                <glassfish.cargo.id>glassfish3x</glassfish.cargo.id>
+                <glassfish.cargo.serverName>localhost</glassfish.cargo.serverName>
+                <glassfish.cargo.servletPort>8080</glassfish.cargo.servletPort>
+            </properties>
+        </profile>
+        <profile>
+            <id>glassfish-patch</id>
+            <build>
+                <plugins>
+                    <plugin>                 
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-dependency-plugin</artifactId>
+                        <executions>
+                            <execution>
+                                <id>copy</id>                         
+                                <phase>validate</phase>
+                                <goals>
+                                    <goal>copy</goal>
+                                </goals>
+                                <configuration>
+                                    <artifactItems>
+                                        <artifactItem>
+                                            <groupId>org.glassfish</groupId>
+                                            <artifactId>javax.faces</artifactId>
+                                            <version>${jsf.version}</version>
+                                            <type>jar</type>
+                                            <overWrite>true</overWrite>                                     
+                                            <outputDirectory>${glassfish.patch.home}/glassfish/modules</outputDirectory>
+                                            <destFileName>javax.faces.jar</destFileName>
+                                        </artifactItem>
+                                    </artifactItems>
+                                </configuration>
+                            </execution>
+                        </executions>
+                    </plugin>
+                </plugins>
+            </build>
+            <properties>
+                <glassfish.patch.home>C:/Glassfish4.0</glassfish.patch.home>
+            </properties>
+        </profile>
+        <profile>
+            <id>glassfish-tck</id>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-antrun-plugin</artifactId>
+                        <executions>
+                            <execution>
+                                <id>prepare</id>
+                                <phase>validate</phase>
+                                <configuration>
+                                    <target>
+                                        <unzip src="${glassfish.tck.zip.file}" dest=".." overwrite="true"/>
+                                        <mkdir dir="../jsftck/report.dir"/>
+                                        <mkdir dir="../jsftck/work.dir"/>
+                                        <delete file="../ts.jtx" failonerror="false"/>
+                                        <get src="${glassfish.tck.exclude.url}" dest="../ts.jtx"/>
+                                        <copy force="true" file="../ts.jtx" tofile="../jsftck/bin/ts.jtx"/>
+                                        <replaceregexp file="../jsftck/bin/ts.jte" 
+                                                       match="sigTestClasspath=(.*)"
+                                                       replace="sigTestClasspath=${sigTestClasspath}"
+                                                       byline="true"/>
+                                        <replaceregexp file="../jsftck/bin/ts.jte" 
+                                                       match="jsf.classes=(.*)"
+                                                       replace="jsf.classes=${jsfClasses}"
+                                                       byline="true"/>
+                                        <replaceregexp file="../jsftck/bin/ts.jte" 
+                                                       match="jspservlet.classes=(.*)"
+                                                       replace="jspservlet.classes=${jspServletClasses}"
+                                                       byline="true"/>
+                                        <replaceregexp file="../jsftck/bin/ts.jte" 
+                                                       match="webServerHome=(.*)"
+                                                       replace="webServerHome=${glassfishHome}"
+                                                       byline="true"/>
+                                        <replaceregexp file="../jsftck/bin/ts.jte" 
+                                                       match="webServerPort=(.*)"
+                                                       replace="webServerPort=${glassfishPort}"
+                                                       byline="true"/>
+                                        <replaceregexp file="../jsftck/bin/ts.jte" 
+                                                       match="webServerHost=(.*)"
+                                                       replace="webServerHost=${glassfishHost}"
+                                                       byline="true"/>
+                                        <replaceregexp file="../jsftck/bin/ts.jte" 
+                                                       match="impl.vi=(.*)"
+                                                       replace="impl.vi=glassfish"
+                                                       byline="true"/>
+                                        <replaceregexp file="../jsftck/bin/ts.jte" 
+                                                       match="impl.vi.deploy.dir=(.*)"
+                                                       replace="impl.vi.deploy.dir=${glassfishDeployDir}"
+                                                       byline="true"/>
+                                        <replaceregexp file="../jsftck/bin/ts.jte" 
+                                                       match="impl.deploy.timeout.multiplier=(.*)"
+                                                       replace="impl.deploy.timeout.multiplier=20"
+                                                       byline="true"/>
+                                        <ant antfile="${glassfish.tck.build.file}" target="deploy.all"/>
+                                        <echo message="Waiting for deploy to settle down (5 minutes)"/>
+                                        <sleep seconds="300"/>
+                                        <ant antfile="${glassfish.tck.build.file}" target="run.all"/>
+                                        <ant antfile="${glassfish.tck.build.file}" target="undeploy.all"/>
+                                    </target>
+                                </configuration>
+                                <goals>
+                                    <goal>run</goal>
+                                </goals>
+                            </execution>
+                        </executions>
+                        <dependencies>
+                            <dependency>
+                                <groupId>ant-contrib</groupId>
+                                <artifactId>ant-contrib</artifactId>
+                                <version>1.0b3</version>
+                                <exclusions>
+                                    <exclusion>
+                                        <groupId>ant</groupId>
+                                        <artifactId>ant</artifactId>
+                                    </exclusion>
+                                </exclusions>
+                            </dependency>
+                        </dependencies>
+                    </plugin>  
+                </plugins>
+            </build>
+            <properties>
+                <glassfish.tck.zip.file>tck.zip</glassfish.tck.zip.file>
+                <glassfish.tck.build.file>jsftck/bin/build.xml</glassfish.tck.build.file>
+                <glassfish.tck.exclude.url>http://localhost/js.tx</glassfish.tck.exclude.url>
+            </properties>
+        </profile>
+        <profile>
+            <id>glassfish-unzip</id>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-antrun-plugin</artifactId>
+                        <executions>
+                            <execution>
+                                <id>prepare</id>
+                                <phase>validate</phase>
+                                <configuration>
+                                    <target>
+                                        <delete quiet="true" failonerror="false" dir="${glassfish.unzip.unzipDir}"/>
+                                        <mkdir dir="${glassfish.unzip.unzipDir}"/>
+                                        <unzip src="${glassfish.unzip.zipFile}" dest="${glassfish.unzip.unzipDir}"/>
+                                        <exec executable="sh" osfamily="unix">
+                                            <arg line='-c "chmod a+x ${glassfish.unzip.home}/glassfish/bin/*"'/>
+                                        </exec>
+                                    </target>
+                                </configuration>
+                                <goals>
+                                    <goal>run</goal>
+                                </goals>
+                            </execution>
+                        </executions>
+                        <dependencies>
+                            <dependency>
+                                <groupId>ant-contrib</groupId>
+                                <artifactId>ant-contrib</artifactId>
+                                <version>1.0b3</version>
+                                <exclusions>
+                                    <exclusion>
+                                        <groupId>ant</groupId>
+                                        <artifactId>ant</artifactId>
+                                    </exclusion>
+                                </exclusions>
+                            </dependency>
+                        </dependencies>
+                    </plugin>                    
+                </plugins>
+            </build>
+            <properties>
+                <glassfish.unzip.unzipDir>C:/</glassfish.unzip.unzipDir>
+                <glassfish.unzip.home>C:/glassfish4</glassfish.unzip.home>
+                <glassfish.unzip.zipFile>C:/Downloads/Glassfish4.0.zip</glassfish.unzip.zipFile>
+            </properties>
+        </profile>
+        <profile>
+            <id>integration</id>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-failsafe-plugin</artifactId>
+                        <inherited>true</inherited>
+                        <executions>
+                            <execution>
+                                <goals>
+                                    <goal>integration-test</goal>
+                                    <goal>verify</goal>
+                                </goals>
+                            </execution>
+                        </executions>
+                        <configuration>
+                            <systemPropertyVariables>
+                                <integration.serverName>${integration.serverName}</integration.serverName>
+                                <integration.serverPort>${integration.serverPort}</integration.serverPort>
+                                <integration.serverProtocol>${integration.serverProtocol}</integration.serverProtocol>
+                                <integration.url>${integration.protocol}://${integration.serverName}:${integration.serverPort}/${project.build.finalName}/</integration.url>
+                                <jsf.version>${jsf.version}</jsf.version>
+                                <project.build.finalName>${project.build.finalName}</project.build.finalName>
+                                <project.build.sourceEncoding>${project.build.sourceEncoding}</project.build.sourceEncoding>
+                            </systemPropertyVariables>
+                        </configuration>
+                    </plugin>                
+                </plugins>
+            </build>
+            <properties>
+                <integration.protocol>http</integration.protocol>
+                <integration.serverName>localhost</integration.serverName>
+                <integration.serverPort>8080</integration.serverPort>
+            </properties>
+            <reporting>
+                <plugins>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-surefire-report-plugin</artifactId>
+                        <reportSets>
+                            <reportSet>
+                                <id>integration-tests</id>
+                                <reports>
+                                    <report>failsafe-report-only</report>
+                                </reports>
+                            </reportSet>
+                        </reportSets>
+                    </plugin>
+                </plugins>
+            </reporting>
+        </profile>
+        <profile>
+            <id>integration-virtual</id>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-failsafe-plugin</artifactId>
+                        <inherited>true</inherited>
+                        <executions>
+                            <execution>
+                                <id>server1</id>
+                                <goals>
+                                    <goal>integration-test</goal>
+                                    <goal>verify</goal>
+                                </goals>
+                                <configuration>
+                                    <systemPropertyVariables>
+                                        <integration.serverName>${integration.serverName1}</integration.serverName>
+                                        <integration.serverPort>${integration.serverPort1}</integration.serverPort>
+                                        <integration.serverProtocol>${integration.protocol}</integration.serverProtocol>
+                                        <integration.url>${integration.protocol}://${integration.serverName1}:${integration.serverPort1}/${project.build.finalName}/</integration.url>
+                                        <project.build.finalName>${project.build.finalName}</project.build.finalName>
+                                        <project.build.sourceEncoding>${project.build.sourceEncoding}</project.build.sourceEncoding>
+                                    </systemPropertyVariables>
+                                </configuration>
+                            </execution>
+                            <execution>
+                                <id>server2</id>
+                                <goals>
+                                    <goal>integration-test</goal>
+                                    <goal>verify</goal>
+                                </goals>
+                                <configuration>
+                                    <systemPropertyVariables>
+                                        <integration.serverName>${integration.serverName2}</integration.serverName>
+                                        <integration.serverPort>${integration.serverPort2}</integration.serverPort>
+                                        <integration.serverProtocol>${integration.protocol}</integration.serverProtocol>
+                                        <integration.url>${integration.protocol}://${integration.serverName2}:${integration.serverPort2}/${project.build.finalName}/</integration.url>
+                                        <project.build.finalName>${project.build.finalName}</project.build.finalName>
+                                        <project.build.sourceEncoding>${project.build.sourceEncoding}</project.build.sourceEncoding>
+                                    </systemPropertyVariables>
+                                </configuration>
+                            </execution>
+                        </executions>
+                    </plugin>                
+                </plugins>
+            </build>
+            <properties>
+                <integration.protocol>http</integration.protocol>
+                <integration.serverName1>localhost</integration.serverName1>
+                <integration.serverName2>localhost</integration.serverName2>
+                <integration.serverPort1>8080</integration.serverPort1>
+                <integration.serverPort2>8081</integration.serverPort2>
+            </properties>
+            <reporting>
+                <plugins>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-surefire-report-plugin</artifactId>
+                        <reportSets>
+                            <reportSet>
+                                <id>integration-tests</id>
+                                <reports>
+                                    <report>failsafe-report-only</report>
+                                </reports>
+                            </reportSet>
+                        </reportSets>
+                    </plugin>
+                </plugins>
+            </reporting>
+        </profile>
+        <profile>
+            <id>patch</id>
+            <build>
+                <plugins>
+                    <plugin>                 
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-dependency-plugin</artifactId>
+                        <executions>
+                            <execution>
+                                <id>copy</id>                         
+                                <phase>validate</phase>
+                                <goals>
+                                    <goal>copy</goal>
+                                </goals>
+                                <configuration>
+                                    <artifactItems>
+                                        <artifactItem>
+                                            <groupId>${patch.groupId}</groupId>
+                                            <artifactId>${patch.artifactId}</artifactId>
+                                            <version>${patch.version}</version>
+                                            <type>jar</type>
+                                            <overWrite>true</overWrite>                                     
+                                            <outputDirectory>${patch.outputDirectory}</outputDirectory>
+                                            <destFileName>${patch.destFilename}</destFileName>
+                                        </artifactItem>
+                                    </artifactItems>
+                                </configuration>
+                            </execution>
+                        </executions>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+        <profile>
+            <id>tomcat-cargo</id>
+            <build>
+                <plugins>
+                    <plugin>                 
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-dependency-plugin</artifactId>
+                        <executions>
+                            <execution>
+                                <id>copy</id>                         
+                                <phase>package</phase>
+                                <goals>
+                                    <goal>copy</goal>
+                                </goals>
+                                <configuration>
+                                    <artifactItems>
+                                        <artifactItem>
+                                            <groupId>${jsf.groupId}</groupId>
+                                            <artifactId>${jsf.artifactId}</artifactId>
+                                            <version>${jsf.version}</version>
+                                            <type>jar</type>
+                                            <overWrite>true</overWrite>                                     
+                                            <outputDirectory>${integration.container.extractDir}/apache-tomcat-${tomcat.version}/apache-tomcat-${tomcat.version}/lib</outputDirectory>
+                                            <destFileName>javax.faces.jar</destFileName>
+                                        </artifactItem>
+                                        <artifactItem>
+                                            <groupId>javax.servlet.jsp.jstl</groupId> 
+                                            <artifactId>jstl-api</artifactId> 
+                                            <version>1.2</version> 
+                                            <type>jar</type>
+                                            <overWrite>true</overWrite>                                     
+                                            <outputDirectory>${integration.container.extractDir}/apache-tomcat-${tomcat.version}/apache-tomcat-${tomcat.version}/lib</outputDirectory>
+                                            <destFileName>jstl-api.jar</destFileName>
+                                        </artifactItem>
+                                        <artifactItem>
+                                            <groupId>org.glassfish.web</groupId>
+                                            <artifactId>javax.servlet.jsp.jstl</artifactId>
+                                            <version>1.2.1</version>
+                                            <type>jar</type>
+                                            <overWrite>true</overWrite>                                     
+                                            <outputDirectory>${integration.container.extractDir}/apache-tomcat-${tomcat.version}/apache-tomcat-${tomcat.version}/lib</outputDirectory>
+                                            <destFileName>jstl-impl.jar</destFileName>
+                                        </artifactItem>
+                                    </artifactItems>
+                                </configuration>
+                            </execution>
+                        </executions>
+                    </plugin>
+                    <plugin>
+                        <groupId>org.codehaus.cargo</groupId>
+                        <artifactId>cargo-maven2-plugin</artifactId>
+                        <inherited>true</inherited>
+                        <executions>
+                            <execution>
+                                <id>start-container</id>
+                                <phase>pre-integration-test</phase>
+                                <goals>
+                                    <goal>start</goal>
+                                </goals>
+                                <configuration>
+                                    <timeout>2400000</timeout>
+                                </configuration>
+                            </execution>
+                            <execution>
+                                <id>stop-container</id>
+                                <phase>post-integration-test</phase>
+                                <goals>
+                                    <goal>stop</goal>
+                                </goals>
+                                <configuration>
+                                    <timeout>2400000</timeout>
+                                </configuration>
+                            </execution>
+                        </executions>                        
+                        <configuration>
+                            <container>
+                                <containerId>${integration.container.id}</containerId>
+                                <zipUrlInstaller>
+                                    <url>${integration.container.downloadUrl}</url>
+                                    <downloadDir>${integration.container.downloadDir}</downloadDir>
+                                    <extractDir>${integration.container.extractDir}</extractDir>
+                                </zipUrlInstaller>
+                                <timeout>2400000</timeout>
+                                <type>installed</type>
+                            </container>
+                            <configuration>
+                                <type>standalone</type>
+                                <home>${integration.container.home}</home>
+                                <properties>
+                                    <cargo.hostname>${integration.serverName}</cargo.hostname>
+                                    <cargo.servlet.port>${integration.serverPort}</cargo.servlet.port>
+<!-- 
+  Uncomment to cause Tomcat to be started with debugging enabled.  Make
+  sure to pay attention to the value of the suspend parameter.
+
+                                    <cargo.jvmargs>
+                                      -Xdebug
+                                      -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=9009
+                                      -Xnoagent
+                                      -Djava.compiler=NONE
+                                    </cargo.jvmargs>
+-->
+                                </properties>
+                            </configuration>
+                        </configuration>
+                    </plugin>
+                </plugins>
+            </build>
+            <properties>
+                <integration.container.downloadDir>C:/Temp/Cargo/download</integration.container.downloadDir>
+                <integration.container.downloadUrl>http://archive.apache.org/dist/tomcat/tomcat-7/v7.0.35/bin/apache-tomcat-7.0.35.zip</integration.container.downloadUrl>
+                <integration.container.extractDir>C:/Temp/Cargo/extracts</integration.container.extractDir>
+                <integration.container.home>C:/Temp/Cargo/tomcat7</integration.container.home>
+                <integration.container.id>tomcat7x</integration.container.id>
+                <tomcat.version>7.0.35</tomcat.version>
+            </properties>
+        </profile>
+        <profile>
+            <id>weblogic-cargo</id>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>com.oracle.weblogic</groupId>
+                        <artifactId>wls-maven-plugin</artifactId>
+                        <version>12.1.3.0</version>
+                        <inherited>true</inherited>
+                        <executions>
+                            <execution>
+                                <id>deploy</id>
+                                <phase>pre-integration-test</phase>
+                                <goals>
+                                    <goal>deploy</goal>
+                                </goals>
+                            </execution>
+                            <execution>
+                                <id>undeploy</id>
+                                <phase>post-integration-test</phase>
+                                <goals>
+                                    <goal>undeploy</goal>
+                                </goals>
+                            </execution>
+                        </executions>
+                    </plugin>
+                </plugins>
+            </build>
+            <properties>
+                <weblogic.cargo.home>C:/Wls1214</weblogic.cargo.home>
+                <weblogic.cargo.wlservername>myserver</weblogic.cargo.wlservername>
+                <weblogic.cargo.username>admin</weblogic.cargo.username>
+                <weblogic.cargo.password>adminadmin1</weblogic.cargo.password>
+                <weblogic.cargo.wldomain>${weblogic.cargo.home}/user_projects/domains/mydomain</weblogic.cargo.wldomain>
+                <weblogic.cargo.wlserver>${weblogic.cargo.home}/wlserver</weblogic.cargo.wlserver>
+                <weblogic.cargo.memargs>-Xms512m -Xmx786m -XX:MaxPermSize=786m</weblogic.cargo.memargs>
+                <adminurl>t3://localhost:7001</adminurl>
+                <domainHome>${weblogic.cargo.wldomain}</domainHome>
+                <middlewareHome>${weblogic.cargo.home}</middlewareHome>
+                <weblogicHome>${weblogic.cargo.wlserver}</weblogicHome>
+                <user>${weblogic.cargo.username}</user>
+                <password>${weblogic.cargo.password}</password>
+                <name>${project.build.finalName}</name>
+                <failOnError>false</failOnError>
+                <timeout>60</timeout>
+            </properties>
+        </profile>
+        <profile>
+            <id>weblogic-patch</id>
+            <build>
+                <plugins>
+                    <plugin>                 
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-dependency-plugin</artifactId>
+                        <executions>
+                            <execution>
+                                <id>copy</id>                         
+                                <phase>prepare-package</phase>
+                                <goals>
+                                    <goal>copy</goal>
+                                </goals>
+                                <configuration>
+                                    <artifactItems>
+                                        <artifactItem>
+                                            <groupId>${jsf.groupId}</groupId>
+                                            <artifactId>${jsf.artifactId}</artifactId>
+                                            <version>${jsf.version}</version>
+                                            <type>jar</type>
+                                            <overWrite>true</overWrite>                                     
+                                            <outputDirectory>${weblogic.patch.home}/tmp.mojarra</outputDirectory>
+                                            <destFileName>javax.faces.jar</destFileName>
+                                        </artifactItem>
+                                    </artifactItems>
+                                </configuration>
+                            </execution>
+                        </executions>
+                    </plugin>
+                    <plugin>                 
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-antrun-plugin</artifactId>
+                        <executions>
+                            <execution>
+                                <id>create-wls.mojarra</id>
+                                <phase>validate</phase>
+                                <goals>
+                                    <goal>run</goal>
+                                </goals>
+                                <configuration>
+                                    <target>
+                                        <delete failonerror="false" dir="${weblogic.patch.home}/tmp.mojarra" />
+                                        <mkdir dir="${weblogic.patch.home}/tmp.mojarra/wls.mojarra" />
+                                    </target>
+                                </configuration>
+                            </execution>
+                            <execution>
+                                <id>instrument-wls-with-mojarra</id>
+                                <phase>package</phase>
+                                <goals>
+                                    <goal>run</goal>
+                                </goals>
+                                <configuration>
+                                    <target>
+                                        <unzip src="${weblogic.patch.home}/${weblogic.patch.mojarraJarPath}/${weblogic.patch.mojarraJarName}"
+                                               dest="${weblogic.patch.home}/tmp.mojarra/wls.mojarra" />
+                                        <delete dir="${weblogic.patch.home}/tmp.mojarra/wls.mojarra/javax" />
+                                        <delete dir="${weblogic.patch.home}/tmp.mojarra/wls.mojarra/com/sun" />
+                                        <delete dir="${weblogic.patch.home}/tmp.mojarra/wls.mojarra/META-INF" />
+                                        <unzip src="${weblogic.patch.home}/tmp.mojarra/javax.faces.jar"
+                                               dest="${weblogic.patch.home}/tmp.mojarra/wls.mojarra" />
+                                        <zip destfile="${weblogic.patch.home}/tmp.mojarra/${weblogic.patch.mojarraJarName}"
+                                             basedir="${weblogic.patch.home}/tmp.mojarra/wls.mojarra"
+                                             update="true" />
+                                        <copy overwrite="true"
+                                              file="${weblogic.patch.home}/tmp.mojarra/${weblogic.patch.mojarraJarName}"
+                                              tofile="${weblogic.patch.home}/${weblogic.patch.mojarraJarPath}/${weblogic.patch.mojarraJarName}" />
+                                    </target>
+                                </configuration>
+                            </execution>
+                        </executions>
+                    </plugin>
+                </plugins>
+            </build>
+            <properties>
+                <weblogic.patch.mojarraJarPath>wlserver/modules</weblogic.patch.mojarraJarPath>
+                <weblogic.patch.mojarraJarName>glassfish.jsf_2.0.0.0_2-1-20.jar</weblogic.patch.mojarraJarName>
+            </properties>
+        </profile>
+        <profile>
+            <id>weblogic-start</id>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>com.oracle.weblogic</groupId>
+                        <artifactId>wls-maven-plugin</artifactId>
+                        <version>12.1.3.0</version>
+                        <inherited>true</inherited>
+                        <executions>
+                            <execution>
+                                <id>startServer</id>
+                                <phase>install</phase>
+                                <configuration>
+                                    <script>
+startServer(
+    'AdminServer', 'mydomain', 't3://localhost:7001', '${weblogic.cargo.username}',
+    '${weblogic.cargo.password}', '${weblogic.cargo.wldomain}', jvmArgs='${weblogic.cargo.memargs}')
+                                    </script>
+                                </configuration>
+                                <goals>
+                                    <goal>wlst</goal>
+                                </goals>
+                             </execution>
+                        </executions>
+                    </plugin>
+                </plugins>
+            </build>
+            <properties>
+                <weblogic.cargo.home>C:/Wls1214</weblogic.cargo.home>
+                <weblogic.cargo.wlservername>myserver</weblogic.cargo.wlservername>
+                <weblogic.cargo.username>admin</weblogic.cargo.username>
+                <weblogic.cargo.password>adminadmin1</weblogic.cargo.password>
+                <weblogic.cargo.wldomain>${weblogic.cargo.home}/user_projects/domains/mydomain</weblogic.cargo.wldomain>
+                <weblogic.cargo.wlserver>${weblogic.cargo.home}/wlserver</weblogic.cargo.wlserver>
+                <weblogic.cargo.memargs>-Xms512m, -Xmx786m, -XX:MaxPermSize=786m, -Xrs</weblogic.cargo.memargs>
+                <domainHome>${weblogic.cargo.wldomain}</domainHome>
+                <middlewareHome>${weblogic.cargo.home}</middlewareHome>
+                <weblogicHome>${weblogic.cargo.wlserver}</weblogicHome>
+                <user>${weblogic.cargo.username}</user>
+                <password>${weblogic.cargo.password}</password>
+                <name>${project.build.finalName}</name>
+                <failOnError>false</failOnError>
+                <timeout>60</timeout>
+            </properties>
+        </profile>
+        <profile>
+            <id>weblogic-unzip</id>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-antrun-plugin</artifactId>
+                        <executions>
+                            <execution>
+                                <id>prepare</id>
+                                <phase>validate</phase>
+                                <configuration>
+                                    <target>
+                                        <delete quiet="true" failonerror="false" dir="${weblogic.unzip.unzipDir}"/>
+                                        <mkdir dir="${weblogic.unzip.unzipDir}"/>
+                                        <unzip src="${weblogic.unzip.zipFile}" dest="${weblogic.unzip.unzipDir}"/>
+                                        <delete failonerror="false" dir="${weblogic.unzip.unzipDir}/wls/user_projects/domains/mydomain"/>
+                                    </target>
+                                </configuration>
+                                <goals>
+                                    <goal>run</goal>
+                                </goals>
+                            </execution>
+                        </executions>
+                        <dependencies>
+                            <dependency>
+                                <groupId>ant-contrib</groupId>
+                                <artifactId>ant-contrib</artifactId>
+                                <version>1.0b3</version>
+                                <exclusions>
+                                    <exclusion>
+                                        <groupId>ant</groupId>
+                                        <artifactId>ant</artifactId>
+                                    </exclusion>
+                                </exclusions>
+                            </dependency>
+                        </dependencies>
+                    </plugin>                    
+                </plugins>
+            </build>
+            <properties>
+                <weblogic.unzip.unzipDir>C:/</weblogic.unzip.unzipDir>
+                <weblogic.unzip.zipFile>C:/Downloads/Weblogic12.1.2.zip</weblogic.unzip.zipFile>
+            </properties>
+        </profile>
+    </profiles>
+    <properties>
+        <jsf.artifactId>javax.faces</jsf.artifactId>
+        <jsf.groupId>org.glassfish</jsf.groupId>
+        <jsf.version>${project.version}</jsf.version>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+        <webapp.partialStateSaving>true</webapp.partialStateSaving>
+        <webapp.projectStage>Production</webapp.projectStage>
+        <webapp.stateSavingMethod>server</webapp.stateSavingMethod>
+    </properties>
+</project>
diff --git a/test/protocolaware/flash/basic/nbactions.xml b/test/protocolaware/flash/basic/nbactions.xml
new file mode 100644
index 0000000..238dc68
--- /dev/null
+++ b/test/protocolaware/flash/basic/nbactions.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<actions>
+        <action>
+            <actionName>debug.test.single</actionName>
+            <goals>
+                <goal>test-compile</goal>
+                <goal>surefire:test</goal>
+            </goals>
+            <properties>
+                <test>${packageClassName}</test>
+                <integration.url.https>https://127.0.0.1:8181/test-protocolaware-flash-basic/</integration.url.https>
+                <forkMode>once</forkMode>
+                <maven.surefire.debug>-Xdebug -Xrunjdwp:transport=dt_socket,server=n,address=${jpda.address}</maven.surefire.debug>
+                <jpda.listen>true</jpda.listen>
+                
+                <integration.url>http://localhost:8080/test-protocolaware-flash-basic/</integration.url>
+            </properties>
+        </action>
+    </actions>
diff --git a/test/protocolaware/flash/basic/pom.xml b/test/protocolaware/flash/basic/pom.xml
new file mode 100644
index 0000000..2679cbd
--- /dev/null
+++ b/test/protocolaware/flash/basic/pom.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <artifactId>pom</artifactId>
+        <groupId>com.sun.faces.test.protocolaware.flash</groupId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.protocolaware.flash</groupId>
+    <artifactId>basic</artifactId>
+    <packaging>war</packaging>
+    <name>Mojarra ${project.version} - Test - Protocol Aware - Flash - Basic flash test</name>  
+    <build>
+        <finalName>test-protocolaware-flash-basic</finalName>
+    </build>
+    <properties>
+        <netbeans.hint.deploy.server>gfv3ee6</netbeans.hint.deploy.server>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/test/protocolaware/flash/basic/src/main/webapp/WEB-INF/glassfish-web.xml b/test/protocolaware/flash/basic/src/main/webapp/WEB-INF/glassfish-web.xml
new file mode 100644
index 0000000..74f5691
--- /dev/null
+++ b/test/protocolaware/flash/basic/src/main/webapp/WEB-INF/glassfish-web.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
+<glassfish-web-app error-url="">
+  <context-root>/test-protocolaware-flash-basic</context-root>
+  <class-loader delegate="true"/>
+  <jsp-config>
+    <property name="keepgenerated" value="true">
+      <description>Keep a copy of the generated servlet class' java code.</description>
+    </property>
+  </jsp-config>
+</glassfish-web-app>
diff --git a/test/protocolaware/flash/basic/src/main/webapp/WEB-INF/web.xml b/test/protocolaware/flash/basic/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..aaeb9d1
--- /dev/null
+++ b/test/protocolaware/flash/basic/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>${webapp.projectStage}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
+        <param-value>${webapp.partialStateSaving}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>${webapp.stateSavingMethod}</param-value>
+    </context-param>
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <welcome-file-list>
+        <welcome-file>faces/keepMessages.xhtml</welcome-file>
+    </welcome-file-list>
+</web-app>
diff --git a/test/protocolaware/flash/basic/src/main/webapp/flash01.xhtml b/test/protocolaware/flash/basic/src/main/webapp/flash01.xhtml
new file mode 100644
index 0000000..1cb8998
--- /dev/null
+++ b/test/protocolaware/flash/basic/src/main/webapp/flash01.xhtml
@@ -0,0 +1,81 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:c="http://java.sun.com/jsp/jstl/core">
+	<h:head>
+		<title>flash 1</title>
+	</h:head>
+	
+	<h:body>
+		<h:form id="nextForm" prependId="false">
+			<c:set target="#{flash}" property="foo" value="bar"/>
+			
+			<h:panelGrid id="trials" columns="1">
+				<h:button id="nextButton"
+						  value="Next (button)"
+						  outcome="flash02.xhtml">
+                                  <f:param name="foo" value="bar"/>
+                                </h:button>
+				<h:link id="nextLink"
+						value="Next (link)"
+						outcome="flash02.xhtml">
+                                  <f:param name="foo" value="bar"/>
+                                </h:link>
+				<h:commandLink id="nextCommandLink"
+						       action="flash02.xhtml"
+						       value="Next 
+(commandLink)"/>
+				<h:commandButton id="nextCommandButton"
+						         action="flash02.xhtml"
+						         value="Next 
+(commandButton)"/>
+			</h:panelGrid>
+		</h:form>
+
+		<ui:debug/>
+	</h:body>
+</html>
diff --git a/test/protocolaware/flash/basic/src/main/webapp/flash02.xhtml b/test/protocolaware/flash/basic/src/main/webapp/flash02.xhtml
new file mode 100644
index 0000000..abbaaac
--- /dev/null
+++ b/test/protocolaware/flash/basic/src/main/webapp/flash02.xhtml
@@ -0,0 +1,68 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC
+	"-//W3C//DTD XHTML 1.0 Strict//EN"
+	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:c="http://java.sun.com/jsp/jstl/core">
+
+<f:metadata>
+  <f:viewParam name="foo" id="foo" value="#{flash.now.foo}" />
+</f:metadata>
+
+	<h:head>
+		<meta http-equiv="Content-Type" content="text/html; charset=UTF-
+8"/>
+		<title>flash 2</title>
+	</h:head>
+	
+	<h:body>
+		foo = ${flash.foo}
+
+		<ui:debug/>
+	</h:body>
+</html>
diff --git a/test/protocolaware/flash/basic/src/test/java/com/sun/faces/test/protocolaware/flash/basic/FlashViewParamIT.java b/test/protocolaware/flash/basic/src/test/java/com/sun/faces/test/protocolaware/flash/basic/FlashViewParamIT.java
new file mode 100644
index 0000000..24bc120
--- /dev/null
+++ b/test/protocolaware/flash/basic/src/test/java/com/sun/faces/test/protocolaware/flash/basic/FlashViewParamIT.java
@@ -0,0 +1,127 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.protocolaware.flash.basic;
+
+import com.gargoylesoftware.htmlunit.util.Cookie;
+import com.sun.faces.test.util.HttpUtils;
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlAnchor;
+import com.gargoylesoftware.htmlunit.html.HtmlButtonInput;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+import static org.junit.Assert.assertTrue;
+
+/**
+  *
+ */
+public class FlashViewParamIT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+
+    // ------------------------------------------------------------ Test Methods
+
+
+    /**
+     * Added for issue 904.
+     */
+    @Test
+    public void testBooleanCheckboxSubmittedValue() throws Exception {
+
+        doTestBooleanCheckboxSubmittedValue(webUrl);
+    }
+    
+    @Test 
+    public void testSecure() throws Exception {
+        webClient.getCookieManager().clearCookies();
+        webClient.setUseInsecureSSL(true);
+        String httpsUrl = System.getProperty("integration.url.https");
+
+        doTestBooleanCheckboxSubmittedValue(httpsUrl);
+        
+        HtmlPage page = webClient.getPage(httpsUrl + "/faces/flash01.xhtml");
+        Cookie flashCookie = webClient.getCookieManager().getCookie("csfcfc");
+        assertTrue(flashCookie.isSecure());
+        
+    }
+    
+    
+    public void doTestBooleanCheckboxSubmittedValue(String url) throws Exception {
+
+        HtmlPage page = webClient.getPage(url + "/faces/flash01.xhtml");
+        HtmlButtonInput button = (HtmlButtonInput) page.getElementById("nextButton");
+        page = button.click();
+        assertTrue(page.asText().contains("foo = bar"));
+
+        page = webClient.getPage(url + "/faces/flash01.xhtml");
+        HtmlAnchor link = (HtmlAnchor) page.getElementById("nextLink");
+        page = link.click();
+        assertTrue(page.asText().contains("foo = bar"));
+
+        page = webClient.getPage(url + "/faces/flash01.xhtml");
+        link = (HtmlAnchor) page.getElementById("nextCommandLink");
+        page = link.click();
+        assertTrue(page.asText().contains("foo = bar"));
+
+        page = webClient.getPage(url + "/faces/flash01.xhtml");
+        HtmlSubmitInput submitButton = (HtmlSubmitInput) page.getElementById("nextCommandButton");
+        page = submitButton.click();
+        assertTrue(page.asText().contains("foo = bar"));
+
+    }
+    
+}
diff --git a/test/protocolaware/flash/pom.xml b/test/protocolaware/flash/pom.xml
new file mode 100644
index 0000000..1e9bafb
--- /dev/null
+++ b/test/protocolaware/flash/pom.xml
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.protocolaware</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.protocolaware.flash</groupId>
+    <artifactId>pom</artifactId>
+    <packaging>pom</packaging>
+    <name>Mojarra ${project.version} - Test - Protocol Aware - Flash</name>
+    <modules>
+        <module>basic</module>
+    </modules>
+</project>
diff --git a/test/protocolaware/pom.xml b/test/protocolaware/pom.xml
new file mode 100644
index 0000000..e9d4c2c
--- /dev/null
+++ b/test/protocolaware/pom.xml
@@ -0,0 +1,120 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.protocolaware</groupId>
+    <artifactId>pom</artifactId>
+    <packaging>pom</packaging>
+    <name>Mojarra ${project.version} - Test - Protocol Aware</name>
+    <dependencies>
+        <dependency>
+            <groupId>com.sun.faces.test</groupId>
+            <artifactId>util</artifactId>
+            <version>${project.version}</version>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>    
+    <modules>
+        <module>flash</module>
+    </modules>
+    <profiles>
+        <profile>
+            <id>integration-protocolaware</id>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-failsafe-plugin</artifactId>
+                        <inherited>true</inherited>
+                        <executions>
+                            <execution>
+                                <goals>
+                                    <goal>integration-test</goal>
+                                    <goal>verify</goal>
+                                </goals>
+                                <configuration>
+                                    <systemPropertyVariables>
+                                        <integration.url>${integration.protocol}://${integration.serverName1}:${integration.serverPort1}/${project.build.finalName}/</integration.url>
+                                        <integration.url.https>${integration.protocol2}://${integration.serverName2}:${integration.serverPort2}/${project.build.finalName}/</integration.url.https>
+                                        <project.build.sourceEncoding>${project.build.sourceEncoding}</project.build.sourceEncoding>
+                                    </systemPropertyVariables>
+                                </configuration>
+                            </execution>
+                        </executions>
+                    </plugin>                
+                </plugins>
+            </build>
+            <properties>
+                <integration.protocol>http</integration.protocol>
+                <integration.protocol2>https</integration.protocol2>
+                <integration.serverName1>localhost</integration.serverName1>
+                <integration.serverName2>127.0.0.1</integration.serverName2>
+                <integration.serverPort1>8080</integration.serverPort1>
+                <integration.serverPort2>8181</integration.serverPort2>
+            </properties>
+            <reporting>
+                <plugins>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-surefire-report-plugin</artifactId>
+                        <reportSets>
+                            <reportSet>
+                                <id>integration-tests</id>
+                                <reports>
+                                    <report>failsafe-report-only</report>
+                                </reports>
+                            </reportSet>
+                        </reportSets>
+                    </plugin>
+                </plugins>
+            </reporting>
+        </profile>
+    </profiles>
+</project>
diff --git a/test/quality/findbugs-exclude.xml b/test/quality/findbugs-exclude.xml
new file mode 100644
index 0000000..857dd44
--- /dev/null
+++ b/test/quality/findbugs-exclude.xml
@@ -0,0 +1,130 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2011-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<FindBugsFilter>
+    <!--
+        Sure, these inner classes might be more efficient if they
+        were static, but the code would be harder to read too.
+    -->
+    <Match>
+	<Bug pattern="SIC_INNER_SHOULD_BE_STATIC_ANON"/>
+    </Match>
+
+    <!--
+        We ignore Exception all over the place.  Mostly it's on purpose.
+    -->
+    <Match>
+	<Bug pattern="DE_MIGHT_IGNORE"/>
+    </Match>
+
+    <!--
+        And sometimes we catch Exception even though it's not throw,
+        just to be sure to catch any problems that might occur.
+    -->
+    <Match>
+	<Bug pattern="REC_CATCH_EXCEPTION"/>
+    </Match>
+
+    <!--
+        Arrays are passed in and out of internal APIs all over the place.
+        Mostly this is just fine.  Finding the few places where this might
+        be a real issue is a problem for another day.
+    -->
+    <Match>
+        <Or>
+            <Bug pattern="EI_EXPOSE_REP"/>
+            <Bug pattern="EI_EXPOSE_REP2"/>
+        </Or>
+    </Match>
+
+    <!--
+        Yes, zero length arrays are preferred, but this isn't worth fixing.
+    -->
+    <Match>
+	<Bug pattern="PZLA_PREFER_ZERO_LENGTH_ARRAYS"/>
+    </Match>
+
+    <!--
+        Lots of classes extend serializable classes but we never depend
+        on their serialized state, so we don't worry about this.
+    -->
+    <Match>
+	<Bug pattern="SE_NO_SERIALVERSIONID"/>
+    </Match>
+
+    <!--
+        We do I/O using the default encoding everywhere, usually
+        to local files that we expect to be encoded with the default
+        encoding.  Some of these are probably real errors, but most
+        are not.
+    -->
+    <Match>
+	<Bug pattern="DM_DEFAULT_ENCODING"/>
+    </Match>
+
+    <!--
+        Exclude all low priority bugs in the EJB CMP code,
+	which we really don't want to touch.
+    -->
+    <Match>
+	<Or>
+	    <Priority value="2"/>
+	    <Priority value="3"/>
+	</Or>
+	<Or>
+	    <Class name="~com\.sun\.jdo\.spi\.persistence\..*"/>
+	    <Class name="~com\.sun\.jdo\.api\.persistence\..*"/>
+	</Or>
+    </Match>
+
+    <!--
+        Exclude these logging related errors for now.
+        There are way too many of these errors and we need to reduce
+        the error count before we can check these by default.
+    -->
+    <Match>
+	<Or>
+            <Bug pattern="GF_MISSING_LOGMESSAGE_INFO_ANNOTATION"/>
+            <Bug pattern="GF_INVALID_MSG_ID_PATTERN"/>
+	</Or>
+    </Match>
+</FindBugsFilter>
diff --git a/test/quality/pmd-ruleset.xml b/test/quality/pmd-ruleset.xml
new file mode 100644
index 0000000..bf87151
--- /dev/null
+++ b/test/quality/pmd-ruleset.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+
+<ruleset name="myruleset"
+         xmlns="http://pmd.sourceforge.net/ruleset/2.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://pmd.sourceforge.net/ruleset/2.0.0 http://pmd.sourceforge.net/ruleset_2_0_0.xsd">
+    <description>Our ruleset</description>
+
+    <rule ref="rulesets/java/basic.xml"/>
+    <rule ref="rulesets/java/finalizers.xml"/>
+    <rule ref="rulesets/java/imports.xml"/>
+    <rule ref="rulesets/java/naming.xml">
+        <exclude name="AbstractNaming"/>
+        <exclude name="LongVariable"/>
+        <exclude name="ShortVariable"/>
+    </rule>
+    <rule ref="rulesets/java/optimizations.xml">
+        <exclude name="LocalVariableCouldBeFinal"/>
+        <exclude name="MethodArgumentCouldBeFinal"/>
+    </rule>
+    <rule ref="rulesets/java/strings.xml"/>
+    <rule ref="rulesets/java/unusedcode.xml">
+        <exclude name="UnusedModifier"/>
+    </rule>
+</ruleset>
diff --git a/test/quality/pom.xml b/test/quality/pom.xml
new file mode 100644
index 0000000..9a4ae38
--- /dev/null
+++ b/test/quality/pom.xml
@@ -0,0 +1,251 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test</groupId>
+    <artifactId>quality</artifactId>
+    <packaging>jar</packaging>
+    <name>Mojarra ${project.version} - Test - Quality</name>
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-antrun-plugin</artifactId>
+                <version>1.7</version>
+                <executions>
+                    <execution>
+                        <phase>clean</phase>
+                        <goals>
+                            <goal>run</goal>
+                        </goals>
+                        <configuration>
+                            <target>
+                                <delete dir="${basedir}/src/main/java/com"/>
+                                <delete dir="${basedir}/src/main/java/javax"/>
+                                <delete dir="${basedir}/src/main/resources/com"/>
+                                <delete dir="${basedir}/src/main/resources/javax"/>
+                                <delete dir="${basedir}/src/main/resources/META-INF"/>
+                            </target>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-dependency-plugin</artifactId>
+                <version>2.8</version>
+                <executions>
+                    <execution>
+                        <id>unpack-sources</id>
+                        <phase>process-resources</phase>
+                        <goals>
+                            <goal>unpack</goal>
+                        </goals>
+                        <configuration>
+                            <artifactItems>
+                                <artifactItem>
+                                    <groupId>org.glassfish</groupId>
+                                    <artifactId>javax.faces</artifactId>
+                                    <version>${project.version}</version>
+                                    <type>jar</type>
+                                    <classifier>sources</classifier>
+                                    <overWrite>true</overWrite>
+                                </artifactItem>
+                            </artifactItems>
+                            <includes>**/*.java</includes>
+                            <outputDirectory>${project.build.directory}/../src/main/java</outputDirectory>
+                            <overWriteReleases>true</overWriteReleases>
+                            <overWriteSnapshots>true</overWriteSnapshots>
+                        </configuration>
+                    </execution>
+                    <execution>
+                        <id>unpack-classes</id>
+                        <phase>process-resources</phase>
+                        <goals>
+                            <goal>unpack</goal>
+                        </goals>
+                        <configuration>
+                            <artifactItems>
+                                <artifactItem>
+                                    <groupId>org.glassfish</groupId>
+                                    <artifactId>javax.faces</artifactId>
+                                    <version>${project.version}</version>
+                                    <type>jar</type>
+                                    <overWrite>true</overWrite>
+                                </artifactItem>
+                            </artifactItems>
+                            <excludes>**/*.class</excludes>
+                            <outputDirectory>${project.build.directory}/../src/main/resources</outputDirectory>
+                            <overWriteReleases>true</overWriteReleases>
+                            <overWriteSnapshots>true</overWriteSnapshots>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>3.1</version>
+                <configuration>
+                    <source>1.6</source>
+                    <target>1.6</target>
+                    <showWarnings>true</showWarnings>
+                    <useIncrementalCompilation>false</useIncrementalCompilation>
+                    <!-- 
+
+                        Excluding these classes since they bring in 
+                        JavaEE 7 dependencies. We recompile here to
+                        verify that we are not relying on JavaEE 7
+                        APIs anywhere else.
+
+                        -->
+                    <excludes>
+                        <exclude>com/sun/faces/flow/FlowCDIEventFireHelperImpl.java</exclude>
+                        <exclude>com/sun/faces/application/view/ViewScopedCDIEventFireHelperImpl.java</exclude>
+                        <exclude>com/sun/faces/util/cdi11/CDIUtilImpl.java</exclude>
+                        <exclude>com/sun/faces/action/ActionPhase.java</exclude>
+                    </excludes>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.codehaus.mojo</groupId>
+                <artifactId>findbugs-maven-plugin</artifactId>
+                <version>2.5.2</version>
+                <configuration>
+                    <threshold>High</threshold>
+                    <excludeFilterFile>findbugs-exclude.xml</excludeFilterFile>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-pmd-plugin</artifactId>
+                <version>3.0.1</version>
+                <configuration>
+                    <targetJdk>1.6</targetJdk>
+                    <excludes>
+                        <exclude>com/sun/faces/taglib/html_basic/**/*.java</exclude>
+                        <exclude>javax/faces/component/html/**/*.java</exclude>
+                    </excludes>
+                    <rulesets>
+                        <ruleset>${project.build.directory}/../pmd-ruleset.xml</ruleset>
+                    </rulesets>
+                </configuration>
+                <dependencies>
+                    <dependency>
+                        <groupId>net.sourceforge.pmd</groupId>
+                        <artifactId>pmd</artifactId>
+                        <version>5.0.4</version>
+                    </dependency>
+                </dependencies>
+            </plugin>
+        </plugins>
+    </build>
+    <dependencies>
+        <dependency>
+            <groupId>javax</groupId>
+            <artifactId>javaee-web-api</artifactId>
+            <version>6.0</version>
+            <scope>provided</scope>
+        </dependency>
+        <!--
+        
+            The dependency below is only necessary if you want to use
+            Groovy for your pages. If you do not want to use Groovy
+            simply omit this dependency.
+        
+        -->
+        <dependency>
+            <groupId>org.codehaus.groovy</groupId>
+            <artifactId>groovy-all</artifactId>
+            <version>2.0.1</version>
+            <scope>provided</scope>
+            <optional>true</optional>
+        </dependency>
+    </dependencies>
+    <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+    <reporting>
+        <plugins>
+            <plugin>
+                <groupId>org.codehaus.mojo</groupId>
+                <artifactId>findbugs-maven-plugin</artifactId>
+                <version>2.5.2</version>
+                <configuration>
+                    <threshold>High</threshold>
+                    <excludeFilterFile>findbugs-exclude.xml</excludeFilterFile>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-pmd-plugin</artifactId>
+                <version>3.0.1</version>
+                <configuration>
+                    <targetJdk>1.6</targetJdk>
+                    <excludes>
+                        <exclude>com/sun/faces/taglib/html_basic/**/*.java</exclude>
+                        <exclude>javax/faces/component/html/**/*.java</exclude>
+                    </excludes>
+                    <rulesets>
+                        <ruleset>${project.build.directory}/../pmd-ruleset.xml</ruleset>
+                    </rulesets>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-jxr-plugin</artifactId>
+                <version>2.3</version>
+            </plugin>
+            <plugin>
+                <groupId>org.codehaus.mojo</groupId>
+                <artifactId>taglist-maven-plugin</artifactId>
+                <version>2.4</version>
+            </plugin>
+            <plugin>
+                <groupId>org.codehaus.mojo</groupId>
+                <artifactId>clirr-maven-plugin</artifactId>
+                <version>2.5</version>
+                <configuration>
+                    <comparisonArtifacts>
+                        <comparisonArtifact>
+                            <groupId>javax.faces</groupId>
+                            <artifactId>jsf-api</artifactId>
+                            <version>2.1</version>
+                        </comparisonArtifact>
+                    </comparisonArtifacts>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-javadoc-plugin</artifactId>
+                <version>2.9.1</version>
+                <configuration>
+                    <links>
+                        <link>http://docs.oracle.com/javaee/6/api/</link>
+                    </links>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-checkstyle-plugin</artifactId>
+                <version>2.9.1</version>
+                <configuration>
+                    <configLocation>${project.build.directory}/../src/checkstyle/config.xml</configLocation>
+                </configuration>
+                <reportSets>
+                    <reportSet>
+                        <reports>
+                            <report>checkstyle</report>
+                        </reports>
+                    </reportSet>
+                </reportSets>
+            </plugin>            
+        </plugins>
+    </reporting>
+</project>
diff --git a/test/quality/src/checkstyle/config.xml b/test/quality/src/checkstyle/config.xml
new file mode 100644
index 0000000..01ea181
--- /dev/null
+++ b/test/quality/src/checkstyle/config.xml
@@ -0,0 +1,163 @@
+<?xml version="1.0"?>
+<!DOCTYPE module PUBLIC
+    "-//Puppy Crawl//DTD Check Configuration 1.2//EN"
+    "http://www.puppycrawl.com/dtds/configuration_1_2.dtd">
+
+
+<module name="Checker">
+
+    <!-- Checks that each Java package has a Javadoc file used for commenting. -->
+    <!-- See http://checkstyle.sf.net/config_javadoc.html#JavadocPackage       -->
+    <module name="JavadocPackage">
+        <property name="allowLegacy" value="true"/>
+    </module>
+
+    <!-- Checks whether files end with a new line.                        -->
+    <!-- See http://checkstyle.sf.net/config_misc.html#NewlineAtEndOfFile -->
+<!--    <module name="NewlineAtEndOfFile"/>-->
+    <module name="NewlineAtEndOfFile">
+        <property name="lineSeparator" value="lf"/>
+    </module>
+
+    <!-- Checks that property files contain the same keys.         -->
+    <!-- See http://checkstyle.sf.net/config_misc.html#Translation -->
+    <module name="Translation"/>
+
+    <module name="FileLength"/>
+
+    <!-- Following interprets the header file as regular expressions. -->
+    <!-- <module name="RegexpHeader"/>                                -->
+
+<!--    <module name="FileTabCharacter">
+        <property name="eachLine" value="true"/>
+    </module>-->
+
+<!--    <module name="RegexpSingleline">
+         \s matches whitespace character, $ matches end of line. 
+        <property name="format" value="\s+$"/>
+        <property name="message" value="Line has trailing spaces."/>
+    </module>-->
+
+    <module name="TreeWalker">
+
+        <property name="cacheFile" value="${checkstyle.cache.file}"/>
+
+        <!-- Checks for Javadoc comments.                     -->
+        <!-- See http://checkstyle.sf.net/config_javadoc.html -->
+        <module name="JavadocMethod"/>
+        <module name="JavadocType"/>
+        <module name="JavadocVariable"/>
+        <module name="JavadocStyle"/>
+
+
+        <!-- Checks for Naming Conventions.                  -->
+        <!-- See http://checkstyle.sf.net/config_naming.html -->
+        <module name="ConstantName"/>
+        <module name="LocalFinalVariableName"/>
+        <module name="LocalVariableName"/>
+        <module name="MemberName"/>
+        <module name="MethodName"/>
+        <module name="PackageName"/>
+        <module name="ParameterName"/>
+        <module name="StaticVariableName"/>
+        <module name="TypeName"/>
+
+
+        <!-- Checks for Headers                                -->
+        <!-- See http://checkstyle.sf.net/config_header.html   -->
+        <!-- <module name="Header">                            -->
+            <!-- The follow property value demonstrates the ability     -->
+            <!-- to have access to ANT properties. In this case it uses -->
+            <!-- the ${basedir} property to allow Checkstyle to be run  -->
+            <!-- from any directory within a project. See property      -->
+            <!-- expansion,                                             -->
+            <!-- http://checkstyle.sf.net/config.html#properties        -->
+            <!-- <property                                              -->
+            <!--     name="headerFile"                                  -->
+            <!--     value="${basedir}/java.header"/>                   -->
+        <!-- </module> -->
+
+
+        <!-- Checks for imports                              -->
+        <!-- See http://checkstyle.sf.net/config_import.html -->
+        <module name="AvoidStarImport"/>
+        <module name="IllegalImport"/> <!-- defaults to sun.* packages -->
+        <module name="RedundantImport"/>
+        <module name="UnusedImports"/>
+
+
+        <!-- Checks for Size Violations.                    -->
+        <!-- See http://checkstyle.sf.net/config_sizes.html -->
+<!--        <module name="LineLength"/>-->
+        <module name="MethodLength"/>
+        <module name="ParameterNumber"/>
+
+
+        <!-- Checks for whitespace                               -->
+        <!-- See http://checkstyle.sf.net/config_whitespace.html -->
+        <module name="EmptyForIteratorPad"/>
+        <module name="MethodParamPad"/>
+        <module name="NoWhitespaceAfter"/>
+        <module name="NoWhitespaceBefore"/>
+        <module name="OperatorWrap"/>
+        <module name="ParenPad"/>
+        <module name="TypecastParenPad"/>
+        <module name="WhitespaceAfter"/>
+        <module name="WhitespaceAround"/>
+
+
+        <!-- Modifier Checks                                    -->
+        <!-- See http://checkstyle.sf.net/config_modifiers.html -->
+        <module name="ModifierOrder"/>
+<!--        <module name="RedundantModifier"/>-->
+
+
+        <!-- Checks for blocks. You know, those {}'s         -->
+        <!-- See http://checkstyle.sf.net/config_blocks.html -->
+        <module name="AvoidNestedBlocks"/>
+        <module name="EmptyBlock"/>
+        <module name="LeftCurly"/>
+        <module name="NeedBraces"/>
+        <module name="RightCurly"/>
+
+
+        <!-- Checks for common coding problems               -->
+        <!-- See http://checkstyle.sf.net/config_coding.html -->
+        <module name="AvoidInlineConditionals"/>
+        <module name="DoubleCheckedLocking"/>
+        <module name="EmptyStatement"/>
+        <module name="EqualsHashCode"/>
+<!--        <module name="HiddenField"/>-->
+        <module name="HiddenField">
+            <property name="ignoreSetter" value="true"/>
+            <property name="ignoreConstructorParameter" value="true"/>
+        </module>
+        <module name="IllegalInstantiation"/>
+        <module name="InnerAssignment"/>
+        <module name="MagicNumber"/>
+        <module name="MissingSwitchDefault"/>
+        <module name="RedundantThrows"/>
+        <module name="SimplifyBooleanExpression"/>
+        <module name="SimplifyBooleanReturn"/>
+
+        <!-- Checks for class design                         -->
+        <!-- See http://checkstyle.sf.net/config_design.html -->
+<!--        <module name="DesignForExtension"/>-->
+        <module name="FinalClass"/>
+        <module name="HideUtilityClassConstructor"/>
+        <module name="InterfaceIsType"/>
+<!--        <module name="VisibilityModifier"/>-->
+        <module name="VisibilityModifier">
+            <property name="protectedAllowed" value="true"/>
+        </module>
+
+        <!-- Miscellaneous other checks.                   -->
+        <!-- See http://checkstyle.sf.net/config_misc.html -->
+        <module name="ArrayTypeStyle"/>
+<!--        <module name="FinalParameters"/>-->
+        <module name="TodoComment"/>
+        <module name="UpperEll"/>
+
+    </module>
+
+</module>
diff --git a/test/selenium/agnostic/pom.xml b/test/selenium/agnostic/pom.xml
new file mode 100644
index 0000000..e583ec5
--- /dev/null
+++ b/test/selenium/agnostic/pom.xml
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.selenium</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.selenium.agnostic</groupId>
+    <artifactId>pom</artifactId>
+    <packaging>pom</packaging>
+    <name>Mojarra ${project.version} - Test - Selenium - Agnostic</name>
+    <modules>
+        <module>shared</module>
+    </modules>
+    <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/test/selenium/agnostic/shared/pom.xml b/test/selenium/agnostic/shared/pom.xml
new file mode 100644
index 0000000..d15dd67
--- /dev/null
+++ b/test/selenium/agnostic/shared/pom.xml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" 
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.selenium.agnostic</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.selenium.agnostic</groupId>
+    <artifactId>shared</artifactId>
+    <packaging>war</packaging>
+    <name>Mojarra ${project.version} - Test - Selenium - Agnostic - Shared Tests</name>
+    <build>
+        <finalName>test-selenium-agnostic-shared</finalName>
+    </build>
+    <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/test/selenium/agnostic/shared/src/main/webapp/WEB-INF/glassfish-web.xml b/test/selenium/agnostic/shared/src/main/webapp/WEB-INF/glassfish-web.xml
new file mode 100644
index 0000000..644d18f
--- /dev/null
+++ b/test/selenium/agnostic/shared/src/main/webapp/WEB-INF/glassfish-web.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
+<glassfish-web-app error-url="">
+  <context-root>/test-selenium-agnostic-shared</context-root>
+  <class-loader delegate="true"/>
+  <jsp-config>
+    <property name="keepgenerated" value="true">
+      <description>Keep a copy of the generated servlet class' java code.</description>
+    </property>
+  </jsp-config>
+</glassfish-web-app>
diff --git a/test/selenium/agnostic/shared/src/main/webapp/index.jsp b/test/selenium/agnostic/shared/src/main/webapp/index.jsp
new file mode 100644
index 0000000..85a65fc
--- /dev/null
+++ b/test/selenium/agnostic/shared/src/main/webapp/index.jsp
@@ -0,0 +1,17 @@
+<%@page contentType="text/html" pageEncoding="UTF-8"%>
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+   "http://www.w3.org/TR/html4/loose.dtd">
+
+<html>
+    <head>
+        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+        <title>Selenium Tests</title>
+    </head>
+    <body>
+        <h1>Selenium Tests</h1>
+        <ul>
+            <li><a id="simple" href="simple.jsp">Simple Selenium Test</a></li>
+        </ul>
+    </body>
+</html>
diff --git a/test/selenium/agnostic/shared/src/main/webapp/simple.jsp b/test/selenium/agnostic/shared/src/main/webapp/simple.jsp
new file mode 100644
index 0000000..eb42e43
--- /dev/null
+++ b/test/selenium/agnostic/shared/src/main/webapp/simple.jsp
@@ -0,0 +1,15 @@
+<%@page contentType="text/html" pageEncoding="UTF-8"%>
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+   "http://www.w3.org/TR/html4/loose.dtd">
+
+<html>
+    <head>
+        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+        <title>Selenium Tests</title>
+    </head>
+    <body>
+        <h1>Simple Selenium Test</h1>
+        <a href="index.jsp">Back</a>
+    </body>
+</html>
diff --git a/test/selenium/agnostic/shared/src/test/java/com/sun/faces/test/selenium/shared/IndexPageIT.java b/test/selenium/agnostic/shared/src/test/java/com/sun/faces/test/selenium/shared/IndexPageIT.java
new file mode 100644
index 0000000..e25675a
--- /dev/null
+++ b/test/selenium/agnostic/shared/src/test/java/com/sun/faces/test/selenium/shared/IndexPageIT.java
@@ -0,0 +1,56 @@
+package com.sun.faces.test.selenium.agnostic.shared;
+
+import org.openqa.selenium.WebDriver;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.openqa.selenium.By;
+import org.openqa.selenium.htmlunit.HtmlUnitDriver;
+import static org.junit.Assert.*;
+
+public class IndexPageIT {
+
+    /**
+     * Stores the webdriver instance.
+     */
+    private WebDriver driver;
+    
+    /**
+     * Stores the base URL.
+     */
+    private String baseUrl;
+
+    /**
+     * Setup before testing.
+     *
+     * @throws Exception when a serious error occurs.
+     */
+    @Before
+    public void setUp() throws Exception {
+        driver = new HtmlUnitDriver(true);
+        baseUrl = System.getProperty("integration.url");
+    }
+
+    /**
+     * Test going to index.jsp and simple.jsp and back.
+     * 
+     * @throws Exception when a serious error occurs.
+     */
+    @Test
+    public void testIndexPage() throws Exception {
+        driver.get(baseUrl);
+        assertEquals(baseUrl, driver.getCurrentUrl());
+        driver.findElement(By.id("simple")).click();
+        driver.findElement(By.linkText("Back")).click();;
+    }
+
+    /**
+     * Cleanup after testing.
+     * 
+     * @throws Exception when a serious error occurs.
+     */
+    @After
+    public void tearDown() throws Exception {
+        driver.close();
+    }
+}
diff --git a/test/selenium/pom.xml b/test/selenium/pom.xml
new file mode 100644
index 0000000..1b4d674
--- /dev/null
+++ b/test/selenium/pom.xml
@@ -0,0 +1,121 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.selenium</groupId>
+    <artifactId>pom</artifactId>
+    <packaging>pom</packaging>
+    <name>Mojarra ${project.version} - Test - Selenium</name>
+    <modules>
+        <module>agnostic</module>
+    </modules>
+    <dependencies>
+        <dependency>
+            <groupId>org.seleniumhq.selenium</groupId>
+            <artifactId>selenium-java</artifactId>
+            <version>2.21.0</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>com.sun.faces.test</groupId>
+            <artifactId>util</artifactId>
+            <version>${project.version}</version>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+    <profiles>
+        <profile>
+            <id>integration-selenium</id>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-failsafe-plugin</artifactId>
+                        <inherited>true</inherited>
+                        <executions>
+                            <execution>
+                                <goals>
+                                    <goal>integration-test</goal>
+                                    <goal>verify</goal>
+                                </goals>
+                            </execution>
+                        </executions>
+                        <configuration>
+                            <systemPropertyVariables>
+                                <integration.url>${integration.protocol}://${integration.serverName}:${integration.serverPort}/${project.build.finalName}/</integration.url>
+                            </systemPropertyVariables>
+                        </configuration>
+                    </plugin>                
+                </plugins>
+            </build>
+            <properties>
+                <integration.serverPort>8080</integration.serverPort>
+                <integration.serverName>localhost</integration.serverName>
+                <integration.protocol>http</integration.protocol>
+            </properties>
+            <reporting>
+                <plugins>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-surefire-report-plugin</artifactId>
+                        <reportSets>
+                            <reportSet>
+                                <id>integration-tests</id>
+                                <reports>
+                                    <report>failsafe-report-only</report>
+                                </reports>
+                            </reportSet>
+                        </reportSets>
+                    </plugin>
+                </plugins>
+            </reporting>
+        </profile>
+    </profiles>
+</project>
diff --git a/test/servlet30/ajax/nbactions.xml b/test/servlet30/ajax/nbactions.xml
new file mode 100644
index 0000000..539f9a4
--- /dev/null
+++ b/test/servlet30/ajax/nbactions.xml
@@ -0,0 +1,190 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<actions>
+        <action>
+            <actionName>rebuild</actionName>
+            <packagings>
+                <packaging>*</packaging>
+            </packagings>
+            <goals>
+                <goal>clean</goal>
+                <goal>install</goal>
+            </goals>
+            <properties>
+                <webapp.projectStage>Development</webapp.projectStage>
+            </properties>
+        </action>
+        <action>
+            <actionName>run.single.main</actionName>
+            <packagings>
+                <packaging>*</packaging>
+            </packagings>
+            <goals>
+                <goal>process-classes</goal>
+                <goal>org.codehaus.mojo:exec-maven-plugin:1.2.1:exec</goal>
+            </goals>
+            <properties>
+                <exec.args>-classpath %classpath ${packageClassName}</exec.args>
+                <exec.executable>java</exec.executable>
+                <exec.classpathScope>${classPathScope}</exec.classpathScope>
+                <webapp.projectStage>Development</webapp.projectStage>
+            </properties>
+        </action>
+        <action>
+            <actionName>build</actionName>
+            <packagings>
+                <packaging>*</packaging>
+            </packagings>
+            <goals>
+                <goal>install</goal>
+            </goals>
+            <properties>
+                <webapp.projectStage>Development</webapp.projectStage>
+            </properties>
+        </action>
+        <action>
+            <actionName>clean</actionName>
+            <packagings>
+                <packaging>*</packaging>
+            </packagings>
+            <goals>
+                <goal>clean</goal>
+            </goals>
+            <properties>
+                <webapp.projectStage>Development</webapp.projectStage>
+            </properties>
+        </action>
+        <action>
+            <actionName>build-with-dependencies</actionName>
+            <reactor>also-make</reactor>
+            <packagings>
+                <packaging>*</packaging>
+            </packagings>
+            <goals>
+                <goal>install</goal>
+            </goals>
+            <properties>
+                <webapp.projectStage>Development</webapp.projectStage>
+            </properties>
+        </action>
+        <action>
+            <actionName>test</actionName>
+            <packagings>
+                <packaging>*</packaging>
+            </packagings>
+            <goals>
+                <goal>test</goal>
+            </goals>
+            <properties>
+                <webapp.projectStage>Development</webapp.projectStage>
+            </properties>
+        </action>
+        <action>
+            <actionName>test.single</actionName>
+            <packagings>
+                <packaging>*</packaging>
+            </packagings>
+            <goals>
+                <goal>test-compile</goal>
+                <goal>surefire:test</goal>
+            </goals>
+            <properties>
+                <test>${packageClassName}</test>
+                <webapp.projectStage>Development</webapp.projectStage>
+            </properties>
+        </action>
+        <action>
+            <actionName>run</actionName>
+            <packagings>
+                <packaging>war</packaging>
+                <packaging>ear</packaging>
+                <packaging>ejb</packaging>
+            </packagings>
+            <goals>
+                <goal>package</goal>
+            </goals>
+            <properties>
+                <netbeans.deploy>true</netbeans.deploy>
+                <webapp.projectStage>Development</webapp.projectStage>
+            </properties>
+        </action>
+        <action>
+            <actionName>run.single.deploy</actionName>
+            <packagings>
+                <packaging>war</packaging>
+            </packagings>
+            <goals>
+                <goal>package</goal>
+            </goals>
+            <properties>
+                <netbeans.deploy>true</netbeans.deploy>
+                <netbeans.deploy.clientUrlPart>${webpagePath}</netbeans.deploy.clientUrlPart>
+                <webapp.projectStage>Development</webapp.projectStage>
+            </properties>
+        </action>
+        <action>
+            <actionName>debug</actionName>
+            <packagings>
+                <packaging>war</packaging>
+                <packaging>ear</packaging>
+                <packaging>ejb</packaging>
+            </packagings>
+            <goals>
+                <goal>package</goal>
+            </goals>
+            <properties>
+                <netbeans.deploy.debugmode>true</netbeans.deploy.debugmode>
+                <netbeans.deploy>true</netbeans.deploy>
+                <webapp.projectStage>Development</webapp.projectStage>
+            </properties>
+        </action>
+        <action>
+            <actionName>debug.single.main</actionName>
+            <packagings>
+                <packaging>*</packaging>
+            </packagings>
+            <goals>
+                <goal>process-classes</goal>
+                <goal>org.codehaus.mojo:exec-maven-plugin:1.2.1:exec</goal>
+            </goals>
+            <properties>
+                <exec.args>-Xdebug -Xrunjdwp:transport=dt_socket,server=n,address=${jpda.address} -classpath %classpath ${packageClassName}</exec.args>
+                <exec.executable>java</exec.executable>
+                <exec.classpathScope>${classPathScope}</exec.classpathScope>
+                <jpda.listen>true</jpda.listen>
+                <webapp.projectStage>Development</webapp.projectStage>
+            </properties>
+        </action>
+        <action>
+            <actionName>debug.single.deploy</actionName>
+            <packagings>
+                <packaging>war</packaging>
+            </packagings>
+            <goals>
+                <goal>package</goal>
+            </goals>
+            <properties>
+                <netbeans.deploy.clientUrlPart>${webpagePath}</netbeans.deploy.clientUrlPart>
+                <netbeans.deploy.debugmode>true</netbeans.deploy.debugmode>
+                <netbeans.deploy>true</netbeans.deploy>
+                <webapp.projectStage>Development</webapp.projectStage>
+            </properties>
+        </action>
+        <action>
+            <actionName>debug.test.single</actionName>
+            <packagings>
+                <packaging>*</packaging>
+            </packagings>
+            <goals>
+                <goal>test-compile</goal>
+                <goal>surefire:test</goal>
+            </goals>
+            <properties>
+                <test>${packageClassName}</test>
+                <forkMode>once</forkMode>
+                <maven.surefire.debug>-Xdebug -Xrunjdwp:transport=dt_socket,server=n,address=${jpda.address}</maven.surefire.debug>
+                <jpda.listen>true</jpda.listen>
+                <webapp.projectStage>Development</webapp.projectStage>
+                <integration.url>http://localhost:8080//test-servlet30-ajax/</integration.url>
+            </properties>
+        </action>
+    </actions>
diff --git a/test/servlet30/ajax/pom.xml b/test/servlet30/ajax/pom.xml
new file mode 100644
index 0000000..4e72108
--- /dev/null
+++ b/test/servlet30/ajax/pom.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.servlet30</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.servlet30</groupId>
+    <artifactId>ajax</artifactId>
+    <packaging>war</packaging>
+    <name>Mojarra ${project.version} - Test - Servlet 3.0 - Ajax</name>
+    <build>
+        <finalName>test-servlet30-ajax</finalName>
+    </build>
+    <properties>
+        <netbeans.hint.deploy.server>gfv3ee6</netbeans.hint.deploy.server>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/test/servlet30/ajax/src/main/java/com/sun/faces/test/servlet30/ajax/AjaxRedirectBean.java b/test/servlet30/ajax/src/main/java/com/sun/faces/test/servlet30/ajax/AjaxRedirectBean.java
new file mode 100644
index 0000000..cce44cc
--- /dev/null
+++ b/test/servlet30/ajax/src/main/java/com/sun/faces/test/servlet30/ajax/AjaxRedirectBean.java
@@ -0,0 +1,82 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+
+package com.sun.faces.test.servlet30.ajax;
+
+import java.io.IOException;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.RequestScoped;
+import javax.faces.context.ExternalContext;
+import javax.faces.context.FacesContext;
+
+ at ManagedBean
+ at RequestScoped
+public class AjaxRedirectBean {
+
+    public AjaxRedirectBean() {
+    }
+    
+    public void causeRedirect() {
+        FacesContext facesContext = FacesContext.getCurrentInstance();
+        ExternalContext extContext = facesContext.getExternalContext();
+        String scheme = extContext.getRequestScheme();
+        String host = extContext.getRequestServerName();
+        int port = extContext.getRequestServerPort();
+        String contextPath = extContext.getRequestContextPath();
+        StringBuilder sb = new StringBuilder();
+        sb.append(scheme).
+           append("://").
+           append(host).
+           append(":").
+           append(port).
+           append(contextPath).
+           append("/ajaxRedirect02.html");        
+        try {
+            extContext.redirect(sb.toString());
+        } catch (IOException ex) {
+            Logger.getLogger(AjaxRedirectBean.class.getName()).log(Level.SEVERE, null, ex);
+        }
+                
+    }
+    
+}
diff --git a/test/servlet30/ajax/src/main/java/com/sun/faces/test/servlet30/ajax/AjaxTable.java b/test/servlet30/ajax/src/main/java/com/sun/faces/test/servlet30/ajax/AjaxTable.java
new file mode 100644
index 0000000..4856f61
--- /dev/null
+++ b/test/servlet30/ajax/src/main/java/com/sun/faces/test/servlet30/ajax/AjaxTable.java
@@ -0,0 +1,100 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.servlet30.ajax;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.SessionScoped;
+
+
+ at ManagedBean
+ at SessionScoped
+public class AjaxTable {
+
+
+    private Info[] list = new Info[]{
+            new Info(101, "Bob", ""),
+            new Info(102, "Joe", ""),
+            new Info(103, "Ron", ""),
+    };
+
+    private String selectedCity = "alpha";
+
+    public Info[] getList() {
+        return list;
+    }
+
+    public class Info {
+        int id;
+        String name;
+        String city;
+
+        public Info(int id, String name, String city) {
+            this.id = id;
+            this.name = name;
+            this.city = city;
+        }
+
+        public int getId() {
+            return id;
+        }
+
+        public String getName() {
+            return name;
+        }
+
+
+        public String getCity() {
+            return selectedCity;
+        }
+
+        public void setCity(String city) {
+            this.city = city;
+        }
+
+    }
+
+    public void setSelectedCity(String selectedCity) {
+        this.selectedCity = selectedCity;
+    }
+    public String getSelectedCity() {
+        return selectedCity;
+    }
+}
diff --git a/test/servlet30/ajax/src/main/java/com/sun/faces/test/servlet30/ajax/Bean.java b/test/servlet30/ajax/src/main/java/com/sun/faces/test/servlet30/ajax/Bean.java
new file mode 100644
index 0000000..756b507
--- /dev/null
+++ b/test/servlet30/ajax/src/main/java/com/sun/faces/test/servlet30/ajax/Bean.java
@@ -0,0 +1,117 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.servlet30.ajax;
+
+import java.util.Collection;
+import java.util.Collections;
+import java.util.LinkedHashSet;
+import java.util.Set;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.SessionScoped;
+import javax.faces.context.FacesContext;
+import javax.faces.context.PartialViewContext;
+import javax.faces.event.ActionEvent;
+import javax.faces.event.AjaxBehaviorEvent;
+import javax.faces.event.ValueChangeEvent;
+import javax.faces.model.SelectItem;
+
+ at ManagedBean(name = "bean")
+ at SessionScoped
+public class Bean {
+
+    private final Collection<SelectItem> items;
+    private String radioValue = "blue";
+    private String status = null;
+
+    public Bean() {
+        Set<SelectItem> initialItems = new LinkedHashSet<SelectItem>();
+        initialItems.add(new SelectItem("red"));
+        initialItems.add(new SelectItem("blue"));
+        initialItems.add(new SelectItem("white"));
+        items = Collections.unmodifiableSet(initialItems);
+    }
+
+    public Collection<SelectItem> getItems() {
+        return items;
+    }
+
+    public void setRadioValue(String radioValue) {
+        this.radioValue = radioValue;
+    }
+
+    public String getRadioValue() {
+        return radioValue;
+    }
+
+    public void setStatus(String status) {
+        this.status = status;
+    }
+    
+    public String getStatus() {
+        return status;
+    }
+    
+    public void processLink(ActionEvent ae) {
+        status = "LINK ACTION";
+    }
+
+    public void processRadio(ValueChangeEvent vce) {
+        status = "RADIO:"+(String)vce.getNewValue();
+    }
+
+    public void processIt(AjaxBehaviorEvent event) {
+        setRadioValue("red");
+    }
+    
+    public String getThrowExceptionOnAjax() {
+        FacesContext context = FacesContext.getCurrentInstance();
+        PartialViewContext partialContext = context.getPartialViewContext();
+        if (null != partialContext) {
+            if (partialContext.isAjaxRequest()) {
+                throw new RuntimeException("Intentionally throwing exception on ajax request");
+            }
+        }
+        
+        String result = "not an ajax request";
+        
+        return result;
+    }
+}
diff --git a/test/servlet30/ajax/src/main/java/com/sun/faces/test/servlet30/ajax/ButtonOnlySubmitsOneBean.java b/test/servlet30/ajax/src/main/java/com/sun/faces/test/servlet30/ajax/ButtonOnlySubmitsOneBean.java
new file mode 100644
index 0000000..913f792
--- /dev/null
+++ b/test/servlet30/ajax/src/main/java/com/sun/faces/test/servlet30/ajax/ButtonOnlySubmitsOneBean.java
@@ -0,0 +1,76 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.test.servlet30.ajax;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+import javax.annotation.PostConstruct;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.RequestScoped;
+import javax.faces.event.ActionEvent;
+
+ at ManagedBean(name = "buttonOnlySubmitsOneBean")
+ at RequestScoped
+public class ButtonOnlySubmitsOneBean implements Serializable {
+    
+    private List<String> strings;
+    
+    @PostConstruct
+    public void init() {
+        strings = new ArrayList();
+        strings.add("value1");
+        strings.add("value2");
+    }
+    
+    public void listener(ActionEvent event) {
+        strings.remove(0);
+    }
+    
+    public String getValue() {
+        StringBuilder result = new StringBuilder();
+        for (String string : strings) {
+            result.append(string);
+            result.append(",");
+        }
+        return result.toString();
+    }
+}
diff --git a/test/servlet30/ajax/src/main/java/com/sun/faces/test/servlet30/ajax/DivInCompositeBean.java b/test/servlet30/ajax/src/main/java/com/sun/faces/test/servlet30/ajax/DivInCompositeBean.java
new file mode 100644
index 0000000..61c0e11
--- /dev/null
+++ b/test/servlet30/ajax/src/main/java/com/sun/faces/test/servlet30/ajax/DivInCompositeBean.java
@@ -0,0 +1,58 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.ajax;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.RequestScoped;
+
+ at ManagedBean
+ at RequestScoped
+public class DivInCompositeBean {
+
+    private Boolean test = false;
+
+    public Boolean getTest() {
+        return test;
+    }
+
+    public void setTest(Boolean test) {
+        this.test = test;
+    }
+}
diff --git a/test/servlet30/ajax/src/main/java/com/sun/faces/test/servlet30/ajax/EchoBean.java b/test/servlet30/ajax/src/main/java/com/sun/faces/test/servlet30/ajax/EchoBean.java
new file mode 100644
index 0000000..b77cf01
--- /dev/null
+++ b/test/servlet30/ajax/src/main/java/com/sun/faces/test/servlet30/ajax/EchoBean.java
@@ -0,0 +1,64 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.servlet30.ajax;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.SessionScoped;
+import javax.faces.event.ActionEvent;
+
+ at ManagedBean(name = "ajaxecho")
+ at SessionScoped
+public class EchoBean {
+    String str = "";
+
+    public String getStr() {
+        return str;
+    }
+
+    public void setStr(String str) {
+        this.str = str;
+    }
+
+    public void reset(ActionEvent ae) {
+        str = "";
+    }
+
+}
diff --git a/test/servlet30/ajax/src/main/java/com/sun/faces/test/servlet30/ajax/GreetBehavior.java b/test/servlet30/ajax/src/main/java/com/sun/faces/test/servlet30/ajax/GreetBehavior.java
new file mode 100644
index 0000000..811eb70
--- /dev/null
+++ b/test/servlet30/ajax/src/main/java/com/sun/faces/test/servlet30/ajax/GreetBehavior.java
@@ -0,0 +1,123 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.servlet30.ajax;
+
+
+import javax.faces.context.FacesContext;
+import javax.faces.component.behavior.ClientBehaviorBase;
+import javax.faces.component.behavior.ClientBehaviorContext;
+import javax.faces.component.behavior.FacesBehavior;
+
+
+/**
+ * <p>A trivial Behavior implementation that shows a greeting to the
+ * user when invoked.</p>
+ */
+ at FacesBehavior(value="custom.behavior.Greet")
+public class GreetBehavior extends ClientBehaviorBase {
+
+    public GreetBehavior() {}
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getScript(ClientBehaviorContext behaviorContext) {
+
+        String name = (this.name == null) ? "World" : this.name;
+
+        StringBuilder builder = new StringBuilder(19 + name.length());
+        builder.append("alert('Hello, ");
+        builder.append(name);
+        builder.append("!');");
+
+        return builder.toString();
+    }
+
+    @Override
+    public Object saveState(FacesContext context) {
+
+        if (context == null) {
+            throw new NullPointerException();
+        }
+        if (initialStateMarked()) {
+            Object superState = super.saveState(context);
+            if (superState == null) {
+                return null;
+            } else {
+                return new Object[] { superState };
+            }
+        } else {
+            Object[] values = new Object[2];
+      
+            values[0] = super.saveState(context);
+            values[1] = name;
+
+            return values;
+        }
+
+    }
+
+
+    @Override
+    public void restoreState(FacesContext context, Object state) {
+
+        if (context == null) {
+            throw new NullPointerException();
+        }
+
+        if (state == null) {
+            return;
+        }
+        Object[] values = (Object[]) state;
+        super.restoreState(context, values[0]);
+        if (values.length == 2) {
+            name = (String)values[1];
+        }
+
+    }
+
+    private String name;
+}
diff --git a/test/servlet30/ajax/src/main/java/com/sun/faces/test/servlet30/ajax/InsertBean.java b/test/servlet30/ajax/src/main/java/com/sun/faces/test/servlet30/ajax/InsertBean.java
new file mode 100644
index 0000000..5ac2eaf
--- /dev/null
+++ b/test/servlet30/ajax/src/main/java/com/sun/faces/test/servlet30/ajax/InsertBean.java
@@ -0,0 +1,102 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.servlet30.ajax;
+
+import java.util.HashMap;
+import java.util.Map;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.RequestScoped;
+import javax.faces.context.FacesContext;
+import javax.faces.context.ExternalContext;
+import javax.faces.context.PartialResponseWriter;
+import javax.faces.FacesException;
+
+ at ManagedBean
+ at RequestScoped
+
+public class InsertBean {
+
+    public String insertBefore() {
+        FacesContext ctx = FacesContext.getCurrentInstance();
+        ExternalContext extContext = ctx.getExternalContext();
+        if (ctx.getPartialViewContext().isAjaxRequest()) {
+            try {
+                extContext.setResponseContentType("text/xml");
+                extContext.addResponseHeader("Cache-Control", "no-cache");
+                PartialResponseWriter writer =
+                    ctx.getPartialViewContext().getPartialResponseWriter();
+                writer.startDocument();
+                writer.startInsertBefore("alpha");
+                writer.write("This is before text");
+                writer.endInsert();
+                writer.endDocument();
+                writer.flush();
+                ctx.responseComplete();
+            } catch (Exception e) {
+                throw new FacesException(e);
+            }
+        }
+        return null;
+    }
+
+    public String insertAfter() {
+        FacesContext ctx = FacesContext.getCurrentInstance();
+        ExternalContext extContext = ctx.getExternalContext();
+        if (ctx.getPartialViewContext().isAjaxRequest()) {
+            try {
+                extContext.setResponseContentType("text/xml");
+                extContext.addResponseHeader("Cache-Control", "no-cache");
+                PartialResponseWriter writer =
+                    ctx.getPartialViewContext().getPartialResponseWriter();
+                writer.startDocument();
+                writer.startInsertAfter("alpha");
+                writer.write("This is after text");
+                writer.endInsert();
+                writer.endDocument();
+                writer.flush();
+                ctx.responseComplete();
+            } catch (Exception e) {
+                throw new FacesException(e);
+            }
+        }
+        return null;
+    }
+}
diff --git a/test/servlet30/ajax/src/main/java/com/sun/faces/test/servlet30/ajax/Issue1533Bean.java b/test/servlet30/ajax/src/main/java/com/sun/faces/test/servlet30/ajax/Issue1533Bean.java
new file mode 100644
index 0000000..3732a3c
--- /dev/null
+++ b/test/servlet30/ajax/src/main/java/com/sun/faces/test/servlet30/ajax/Issue1533Bean.java
@@ -0,0 +1,110 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.ajax;
+
+import java.io.Serializable;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.SessionScoped;
+import javax.faces.event.AbortProcessingException;
+import javax.faces.event.AjaxBehaviorEvent;
+
+/**
+ * @author Manfred Riem (manfred.riem at oracle.com)
+ */
+ at ManagedBean(name = "issue1533Bean")
+ at SessionScoped
+public class Issue1533Bean implements Serializable {
+
+    /**
+     * Stores the fire state.
+     */
+    private String fireState;
+    /**
+     * Stores the VIP.
+     */
+    private String vip;
+
+    /**
+     * Fired through Ajax.
+     *
+     * @param event the event.
+     * @throws AbortProcessingException when further processing needs to be
+     * aborted.
+     */
+    public void ajaxFired(AjaxBehaviorEvent event) throws AbortProcessingException {
+        setFireState(event.getComponent().getClientId() + "-" + vip);
+    }
+
+    /**
+     * Get the fire state.
+     *
+     * @return the fire state.
+     */
+    public String getFireState() {
+        return this.fireState;
+    }
+
+    /**
+     * Get the VIP.
+     *
+     * @return the VIP.
+     */
+    public String getVip() {
+        return this.vip;
+    }
+
+    /**
+     * Set the VIP.
+     *
+     * @param vip the VIP.
+     */
+    public void setVip(String vip) {
+        this.vip = vip;
+    }
+
+    /**
+     * Get the fire state.
+     *
+     * @return the fire state.
+     */
+    public void setFireState(String fireState) {
+        this.fireState = fireState;
+    }
+}
diff --git a/test/servlet30/ajax/src/main/java/com/sun/faces/test/servlet30/ajax/Issue1581Bean.java b/test/servlet30/ajax/src/main/java/com/sun/faces/test/servlet30/ajax/Issue1581Bean.java
new file mode 100644
index 0000000..c9b5505
--- /dev/null
+++ b/test/servlet30/ajax/src/main/java/com/sun/faces/test/servlet30/ajax/Issue1581Bean.java
@@ -0,0 +1,73 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.servlet30.ajax;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.SessionScoped;
+
+ at ManagedBean
+ at SessionScoped
+public class Issue1581Bean implements Serializable {
+
+    private List<Issue1581Bug> bugs = new ArrayList<Issue1581Bug>();
+
+    public Issue1581Bean() { 
+        bugs.add(new Issue1581Bug(false, "JAVASERVERFACES-1")); 
+        bugs.add(new Issue1581Bug(false, "JAVASERVERFACES-2")); 
+        bugs.add(new Issue1581Bug(false, "JAVASERVERFACES-3")); 
+        bugs.add(new Issue1581Bug(false, "JAVASERVERFACES-4")); 
+    }
+
+    public void selectionChanged() { 
+        System.out.println("Selection: "+bugs); 
+    }
+
+    public List<Issue1581Bug> getBugs() { 
+        return bugs; 
+    }
+
+    public void setBugs(List<Issue1581Bug> bugs) { 
+        this.bugs = bugs; 
+    }
+}
diff --git a/test/servlet30/ajax/src/main/java/com/sun/faces/test/servlet30/ajax/Issue1581Bug.java b/test/servlet30/ajax/src/main/java/com/sun/faces/test/servlet30/ajax/Issue1581Bug.java
new file mode 100644
index 0000000..b6c9a4c
--- /dev/null
+++ b/test/servlet30/ajax/src/main/java/com/sun/faces/test/servlet30/ajax/Issue1581Bug.java
@@ -0,0 +1,76 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.servlet30.ajax;
+
+import java.io.Serializable;
+
+public class Issue1581Bug implements Serializable {
+    private boolean uiselected;
+    private String text;
+
+    public String getText() { 
+        return text; 
+    }
+
+    public void setText(String text) { 
+        this.text = text; 
+    }
+
+    public boolean getUiselected() { 
+        return uiselected; 
+    }
+
+    public void setUiselected(boolean uiselected) { 
+        this.uiselected = uiselected; 
+    }
+
+    public Issue1581Bug(boolean uiselected, String text) { 
+        this.uiselected = uiselected; this.text = text; 
+    }
+
+    public Issue1581Bug() {
+    }
+
+    @Override
+    public String toString() { 
+        return text+" "+uiselected; 
+    }
+}
diff --git a/test/servlet30/ajax/src/main/java/com/sun/faces/test/servlet30/ajax/Issue1817Bean.java b/test/servlet30/ajax/src/main/java/com/sun/faces/test/servlet30/ajax/Issue1817Bean.java
new file mode 100644
index 0000000..557db28
--- /dev/null
+++ b/test/servlet30/ajax/src/main/java/com/sun/faces/test/servlet30/ajax/Issue1817Bean.java
@@ -0,0 +1,66 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.servlet30.ajax;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.RequestScoped;
+
+ at ManagedBean
+ at RequestScoped
+public class Issue1817Bean {
+    private List<Issue1817Item> items; 
+
+    public Issue1817Bean() {
+        items = new ArrayList<Issue1817Item>();
+        items.add(new Issue1817Item("0"));
+        items.add(new Issue1817Item("1"));
+        items.add(new Issue1817Item("2"));
+    }
+	
+    public List<Issue1817Item> getItems() {
+        return items;
+    }
+}
+
+
diff --git a/test/servlet30/ajax/src/main/java/com/sun/faces/test/servlet30/ajax/Issue1817Item.java b/test/servlet30/ajax/src/main/java/com/sun/faces/test/servlet30/ajax/Issue1817Item.java
new file mode 100644
index 0000000..3ef4a60
--- /dev/null
+++ b/test/servlet30/ajax/src/main/java/com/sun/faces/test/servlet30/ajax/Issue1817Item.java
@@ -0,0 +1,32 @@
+package com.sun.faces.test.servlet30.ajax;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class Issue1817Item {
+
+	private String label;
+
+	public Issue1817Item(String label) {
+		super();
+		this.label = label;
+	}
+
+	public String getLabel() {
+		return label;
+	}
+
+	public void setLabel(String label) {
+		this.label = label;
+	}
+	
+	public List<Issue1817Item> getSubItems() {
+		List<Issue1817Item> subItems = new ArrayList<Issue1817Item>();
+		subItems.add(new Issue1817Item(label + ".0"));
+		subItems.add(new Issue1817Item(label + ".1"));
+		subItems.add(new Issue1817Item(label + ".2"));
+		
+		return subItems;
+	}
+		
+}
diff --git a/test/servlet30/ajax/src/main/java/com/sun/faces/test/servlet30/ajax/Issue2041Bean.java b/test/servlet30/ajax/src/main/java/com/sun/faces/test/servlet30/ajax/Issue2041Bean.java
new file mode 100644
index 0000000..294d8ff
--- /dev/null
+++ b/test/servlet30/ajax/src/main/java/com/sun/faces/test/servlet30/ajax/Issue2041Bean.java
@@ -0,0 +1,63 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.ajax;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.SessionScoped;
+
+ at ManagedBean(name = "issue2041Bean")
+ at SessionScoped
+public class Issue2041Bean {
+
+    String currentPage = "issue2041-page1.xhtml";
+
+    public String changePage() {
+        if ("issue2041-page1.xhtml".equals(currentPage)) {
+            currentPage = "issue2041-page2.xhtml";
+        } else {
+            currentPage = "issue2041-page1.xhtml";
+        }
+        return "success";
+    }
+
+    public String getCurrentPage() {
+        return currentPage;
+    }
+}
diff --git a/test/servlet30/ajax/src/main/java/com/sun/faces/test/servlet30/ajax/Issue2162Bean.java b/test/servlet30/ajax/src/main/java/com/sun/faces/test/servlet30/ajax/Issue2162Bean.java
new file mode 100644
index 0000000..127e547
--- /dev/null
+++ b/test/servlet30/ajax/src/main/java/com/sun/faces/test/servlet30/ajax/Issue2162Bean.java
@@ -0,0 +1,67 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.ajax;
+
+import java.io.Serializable;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.SessionScoped;
+
+ at ManagedBean(name = "issue2162Bean")
+ at SessionScoped
+public class Issue2162Bean implements Serializable {
+    /**
+     * Stores init called.
+     */
+    private StringBuilder initCalled = new StringBuilder();
+    
+    /**
+     * Init.
+     */
+    public void init() {
+        this.initCalled.append("Init called\n");
+    }
+    
+    /**
+     * Get init called.
+     */
+    public String getInitCalled() {
+        return initCalled.toString();
+    }
+}
diff --git a/test/servlet30/ajax/src/main/java/com/sun/faces/test/servlet30/ajax/Issue2179Component1.java b/test/servlet30/ajax/src/main/java/com/sun/faces/test/servlet30/ajax/Issue2179Component1.java
new file mode 100644
index 0000000..18ddaf2
--- /dev/null
+++ b/test/servlet30/ajax/src/main/java/com/sun/faces/test/servlet30/ajax/Issue2179Component1.java
@@ -0,0 +1,64 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.servlet30.ajax;
+
+import java.io.IOException;
+
+import javax.faces.component.FacesComponent;
+import javax.faces.component.UIInput;
+import javax.faces.context.FacesContext;
+
+ at FacesComponent( value = "com.sun.faces.test.servlet30.ajax.Issue2179Component1" )
+public class Issue2179Component1 extends UIInput {
+
+    public Issue2179Component1() {
+        setRendererType("javax.faces.Text");
+    }
+
+    public String getFamily() {
+        return ("javax.faces.Input");
+    }
+
+    public void encodeAll(FacesContext context) throws IOException {
+        super.encodeAll(context);
+        throw new IOException("IO EXCEPTION!!!!!");
+    }
+}
diff --git a/test/servlet30/ajax/src/main/java/com/sun/faces/test/servlet30/ajax/Issue2179Component2.java b/test/servlet30/ajax/src/main/java/com/sun/faces/test/servlet30/ajax/Issue2179Component2.java
new file mode 100644
index 0000000..2fb1ed4
--- /dev/null
+++ b/test/servlet30/ajax/src/main/java/com/sun/faces/test/servlet30/ajax/Issue2179Component2.java
@@ -0,0 +1,63 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.servlet30.ajax;
+
+import java.io.IOException;
+
+import javax.faces.component.FacesComponent;
+import javax.faces.component.UIInput;
+import javax.faces.context.FacesContext;
+
+ at FacesComponent( value = "com.sun.faces.test.servlet30.ajax.Issue2179Component2" )
+public class Issue2179Component2 extends UIInput {
+
+    public Issue2179Component2() {
+        setRendererType("javax.faces.Text");
+    }
+
+    public String getFamily() {
+        return ("javax.faces.Input");
+    }
+
+    public void decode(FacesContext context) {
+        throw new RuntimeException("decode: A RuntimeException Has Occurred!"); 
+    }
+}
diff --git a/test/servlet30/ajax/src/main/java/com/sun/faces/test/servlet30/ajax/Issue2500Bean.java b/test/servlet30/ajax/src/main/java/com/sun/faces/test/servlet30/ajax/Issue2500Bean.java
new file mode 100644
index 0000000..caae37d
--- /dev/null
+++ b/test/servlet30/ajax/src/main/java/com/sun/faces/test/servlet30/ajax/Issue2500Bean.java
@@ -0,0 +1,111 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.servlet30.ajax;
+
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Set;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.SessionScoped;
+import javax.faces.context.FacesContext;
+import javax.faces.event.ActionEvent;
+
+ at ManagedBean(name = "issue2500Bean")
+ at SessionScoped
+public class Issue2500Bean {
+
+    
+    public Issue2500Bean() {
+    }
+
+    private boolean visible = false;
+
+    public void setVisible(boolean visible) {
+        this.visible = visible;
+    }
+
+    public boolean getVisible() {
+        return visible;
+    }
+
+    public void toggle(ActionEvent ae) {
+        if (visible) {
+            visible = false;
+        } else if (!visible) {
+            visible = true;
+        }
+
+        determineViewStateValueOccurences();
+    }
+
+    public String msg = null;
+
+    public void setMsg(String msg) {
+        this.msg = msg;
+    }
+
+    public String getMsg() {
+        return msg;
+    }
+
+    private void determineViewStateValueOccurences() {
+        FacesContext context = FacesContext.getCurrentInstance();
+        Map <String, String[]>requestParams = context.getExternalContext().getRequestParameterValuesMap();
+        Set s = requestParams.entrySet();
+        Iterator it = s.iterator();
+        while (it.hasNext()) {
+            Map.Entry m = (Map.Entry)it.next();
+            String key = (String)m.getKey();
+            String[] values = (String[])m.getValue();
+            if (key.equals("javax.faces.ViewState")) {
+                if (null != values) {
+                    if (values.length > 1) {
+                        msg = "javax.faces.ViewState Has More than One Value";
+                    } else if (values.length == 1) {
+                        msg = "javax.faces.ViewState Has One Value";
+                    }
+                } 
+               break;
+           }
+        }
+    } 
+}
diff --git a/test/servlet30/ajax/src/main/java/com/sun/faces/test/servlet30/ajax/Issue2578Bean.java b/test/servlet30/ajax/src/main/java/com/sun/faces/test/servlet30/ajax/Issue2578Bean.java
new file mode 100644
index 0000000..b924322
--- /dev/null
+++ b/test/servlet30/ajax/src/main/java/com/sun/faces/test/servlet30/ajax/Issue2578Bean.java
@@ -0,0 +1,133 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.ajax;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.Iterator;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.SessionScoped;
+import javax.faces.component.EditableValueHolder;
+import javax.faces.component.UIComponent;
+import javax.faces.component.UIForm;
+import javax.faces.event.ActionEvent;
+
+ at ManagedBean
+ at SessionScoped
+public class Issue2578Bean implements Serializable {
+
+    private Date date;
+    private Date date2;
+    private String text;
+    private String text2;
+
+    public String getText2() {
+        return text2;
+    }
+
+    public void setText2(String text2) {
+        this.text2 = text2;
+    }
+
+    public Date getDate2() {
+        return date2;
+    }
+
+    public void setDate2(Date date2) {
+        this.date2 = date2;
+    }
+    
+    
+
+    public String getText() {
+        return text;
+    }
+
+    public void setText(String text) {
+        this.text = text;
+    }
+    
+    
+
+    public Date getDate() {
+        return date;
+    }
+
+    public void setDate(Date date) {
+        this.date = date;
+    }
+    
+    public void altClear(ActionEvent event){
+        this.date = null;
+        this.date2 = null;
+        this.text = null;
+        this.text2 = null;
+    }
+
+    public void clear(ActionEvent event) {
+        altClear(event);
+    }
+
+    private UIComponent getContainingForm(UIComponent component) {
+        UIComponent previous = component;
+        UIComponent parent = component.getParent();
+
+        while (parent != null) {
+            if (parent instanceof UIForm) {
+                return parent;
+            }
+            previous = parent;
+            parent = parent.getParent();
+        }
+        return previous;
+    }
+
+    protected void resetChildren(UIComponent component) {
+        Iterator<UIComponent> kids = component.getFacetsAndChildren();
+        while (kids.hasNext()) {
+            UIComponent kid = kids.next();
+            if (kid instanceof EditableValueHolder) {
+                EditableValueHolder editable = (EditableValueHolder) kid;
+                editable.resetValue();
+            }
+            resetChildren(kid);
+        }
+    }
+}
diff --git a/test/servlet30/ajax/src/main/java/com/sun/faces/test/servlet30/ajax/Issue2636Bean.java b/test/servlet30/ajax/src/main/java/com/sun/faces/test/servlet30/ajax/Issue2636Bean.java
new file mode 100644
index 0000000..3cdb42a
--- /dev/null
+++ b/test/servlet30/ajax/src/main/java/com/sun/faces/test/servlet30/ajax/Issue2636Bean.java
@@ -0,0 +1,74 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.servlet30.ajax;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.faces.bean.ManagedBean;
+
+ at ManagedBean
+public class Issue2636Bean {
+	
+    public List<String> getValues() {
+        List<String> values = new ArrayList<String>();
+        values.add("test");
+        return values;
+    }
+
+    public void linkAction1() {
+        actionText = "linkAction1";
+    }
+
+    public void linkAction2() {
+        actionText = "linkAction2";
+    }
+
+    private String actionText = null;
+
+    public String getActionText() {
+        return actionText;
+    }
+
+    public void setActionText(String actionText) {
+        this.actionText = actionText;
+    }
+}
diff --git a/test/servlet30/ajax/src/main/java/com/sun/faces/test/servlet30/ajax/Issue2648Bean.java b/test/servlet30/ajax/src/main/java/com/sun/faces/test/servlet30/ajax/Issue2648Bean.java
new file mode 100644
index 0000000..377304f
--- /dev/null
+++ b/test/servlet30/ajax/src/main/java/com/sun/faces/test/servlet30/ajax/Issue2648Bean.java
@@ -0,0 +1,95 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.ajax;
+
+import java.io.IOException;
+import java.io.Serializable;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.SessionScoped;
+import javax.faces.context.ExternalContext;
+import javax.faces.context.FacesContext;
+import javax.faces.event.AbortProcessingException;
+import javax.faces.event.ActionEvent;
+import javax.faces.event.AjaxBehaviorEvent;
+import javax.servlet.http.HttpSession;
+
+ at ManagedBean(name = "issue2648Bean")
+ at SessionScoped
+public class Issue2648Bean implements Serializable {
+
+    public void processAjax(AjaxBehaviorEvent event) throws AbortProcessingException {
+        FacesContext fctx = FacesContext.getCurrentInstance();
+        ExternalContext ectx = fctx.getExternalContext();
+        HttpSession session = (HttpSession)ectx.getSession(true);
+        String temp1 = session.getServletContext().getContextPath() + "/faces/issue2648-1.xhtml";
+        String temp2 = session.getServletContext().getContextPath() + "/faces/issue2648-2.xhtml";
+        try {
+            boolean complete1 = fctx.getResponseComplete(); 
+            ectx.redirect(temp1); 
+            boolean complete2 = fctx.getResponseComplete(); 
+            ectx.redirect(temp2); 
+            boolean complete3 = fctx.getResponseComplete(); 
+        } catch (Exception e) {
+            if (e instanceof IllegalStateException) {
+                session.setAttribute("IllegalStateException", "true");
+            }
+        }
+    }
+
+    public void process(ActionEvent event) {
+        FacesContext fctx = FacesContext.getCurrentInstance();
+        ExternalContext ectx = fctx.getExternalContext();
+        HttpSession session = (HttpSession)ectx.getSession(true);
+        String temp1 = session.getServletContext().getContextPath() + "/faces/issue2648-1.xhtml";
+        String temp2 = session.getServletContext().getContextPath() + "/faces/issue2648-2.xhtml";
+        try {
+            boolean complete1 = fctx.getResponseComplete(); 
+            ectx.redirect(temp1); 
+            boolean complete2 = fctx.getResponseComplete(); 
+            ectx.redirect(temp2); 
+            boolean complete3 = fctx.getResponseComplete(); 
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+
+    }
+
+}
diff --git a/test/servlet30/ajax/src/main/java/com/sun/faces/test/servlet30/ajax/Issue2666Bean.java b/test/servlet30/ajax/src/main/java/com/sun/faces/test/servlet30/ajax/Issue2666Bean.java
new file mode 100644
index 0000000..f163568
--- /dev/null
+++ b/test/servlet30/ajax/src/main/java/com/sun/faces/test/servlet30/ajax/Issue2666Bean.java
@@ -0,0 +1,89 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.servlet30.ajax;
+
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Set;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.SessionScoped;
+import javax.faces.context.FacesContext;
+import javax.faces.event.AbortProcessingException;
+import javax.faces.event.AjaxBehaviorEvent;
+
+ at ManagedBean(name = "issue2666Bean")
+ at SessionScoped
+public class Issue2666Bean {
+
+    
+    public Issue2666Bean() {
+    }
+
+    public String msg = "";
+
+    public void setMsg(String msg) {
+        this.msg = msg;
+    }
+
+    public String getMsg() {
+        return msg;
+    }
+
+    public void processAjax(AjaxBehaviorEvent event) throws AbortProcessingException {
+        boolean buttonParamExists = false;
+        FacesContext context = FacesContext.getCurrentInstance();
+        Iterator iter = context.getExternalContext().getRequestParameterNames();
+        while (iter.hasNext()) {
+            String name = (String)iter.next();
+            if (name.equals("button")) {
+                buttonParamExists = true;
+                break;
+            }
+            if (buttonParamExists) {
+                msg = "Request parameter name 'button' exists";
+            } else {
+                msg = "Request parameter name 'button' does not exist";
+            }
+        }
+        
+    } 
+}
diff --git a/test/servlet30/ajax/src/main/java/com/sun/faces/test/servlet30/ajax/Issue2674Bean.java b/test/servlet30/ajax/src/main/java/com/sun/faces/test/servlet30/ajax/Issue2674Bean.java
new file mode 100644
index 0000000..42052ed
--- /dev/null
+++ b/test/servlet30/ajax/src/main/java/com/sun/faces/test/servlet30/ajax/Issue2674Bean.java
@@ -0,0 +1,87 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.servlet30.ajax;
+ 
+import javax.annotation.PostConstruct;
+import javax.faces.bean.ManagedBean;
+import javax.faces.component.behavior.AjaxBehavior;
+import javax.faces.component.html.HtmlInputText;
+import javax.faces.context.FacesContext;
+import javax.faces.event.AbortProcessingException;
+import javax.faces.event.AjaxBehaviorEvent;
+import javax.faces.event.AjaxBehaviorListener;
+ 
+ at ManagedBean
+public class Issue2674Bean implements AjaxBehaviorListener {
+ 
+  private HtmlInputText text;
+ 
+	public HtmlInputText getText() {
+		return text;
+	}
+ 
+	public void setText(HtmlInputText text) {
+		this.text = text;
+	}
+ 
+	@Override
+	public void processAjaxBehavior(AjaxBehaviorEvent event)
+			throws AbortProcessingException {
+		System.out.println("Ajax call");
+ 
+	}
+ 
+	@PostConstruct
+	private void setup() {
+		HtmlInputText inputText = (HtmlInputText) FacesContext
+				.getCurrentInstance().getApplication()
+				.createComponent(HtmlInputText.COMPONENT_TYPE);
+		AjaxBehavior ajaxBehavior = (AjaxBehavior) FacesContext
+				.getCurrentInstance().getApplication()
+				.createBehavior(AjaxBehavior.BEHAVIOR_ID);
+		inputText.setId("input");
+		ajaxBehavior.addAjaxBehaviorListener(this);
+		ajaxBehavior.setTransient(true);
+		ajaxBehavior.setDisabled(false);
+		inputText.addClientBehavior("focus", ajaxBehavior);
+		text = inputText;
+	}
+}
diff --git a/test/servlet30/ajax/src/main/java/com/sun/faces/test/servlet30/ajax/Issue2682Bean.java b/test/servlet30/ajax/src/main/java/com/sun/faces/test/servlet30/ajax/Issue2682Bean.java
new file mode 100644
index 0000000..09861ca
--- /dev/null
+++ b/test/servlet30/ajax/src/main/java/com/sun/faces/test/servlet30/ajax/Issue2682Bean.java
@@ -0,0 +1,76 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.ajax;
+
+import java.io.IOException;
+import java.io.Serializable;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.SessionScoped;
+import javax.faces.context.ExternalContext;
+import javax.faces.context.FacesContext;
+import javax.faces.event.AbortProcessingException;
+import javax.faces.event.ActionEvent;
+import javax.faces.event.AjaxBehaviorEvent;
+import javax.servlet.http.HttpSession;
+
+ at ManagedBean(name = "issue2682Bean")
+ at SessionScoped
+public class Issue2682Bean implements Serializable {
+
+    private Boolean chkStatus;
+    /**
+     * Creates a new instance of SessionBean
+     */
+    public Issue2682Bean() {
+        chkStatus = false;
+    }
+    
+    public void refresh(ActionEvent e){
+    }
+    
+
+    public Boolean getChkStatus() {
+        return chkStatus;
+    }
+
+    public void setChkStatus(Boolean chkStatus) {
+        this.chkStatus = chkStatus;
+    }
+}
diff --git a/test/servlet30/ajax/src/main/java/com/sun/faces/test/servlet30/ajax/Issue2906Bean.java b/test/servlet30/ajax/src/main/java/com/sun/faces/test/servlet30/ajax/Issue2906Bean.java
new file mode 100644
index 0000000..224e84c
--- /dev/null
+++ b/test/servlet30/ajax/src/main/java/com/sun/faces/test/servlet30/ajax/Issue2906Bean.java
@@ -0,0 +1,79 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.ajax;
+
+import java.util.List;
+import java.util.Vector;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.SessionScoped;
+
+ at ManagedBean
+ at SessionScoped
+public class Issue2906Bean {
+    
+    private int currentView = 1;
+
+    /**
+     * 
+     */
+    public Issue2906Bean() {
+    }
+    
+    public String chooseView(int newView) {
+        currentView = newView;
+        return null;
+    }
+    
+    public List<Integer> getCurrentView() {
+       Vector<Integer> v = new Vector<Integer>();
+       
+       int counter = 10 - currentView;
+       if(counter <= 0) {
+           counter = 1;
+       }
+       
+       for(int index = 0; index <= counter; index++) {
+           v.add(currentView+1);
+       }
+       
+       return v;
+    }
+}
diff --git a/test/servlet30/ajax/src/main/java/com/sun/faces/test/servlet30/ajax/Issue3020Bean.java b/test/servlet30/ajax/src/main/java/com/sun/faces/test/servlet30/ajax/Issue3020Bean.java
new file mode 100644
index 0000000..c0c8281
--- /dev/null
+++ b/test/servlet30/ajax/src/main/java/com/sun/faces/test/servlet30/ajax/Issue3020Bean.java
@@ -0,0 +1,86 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.test.servlet30.ajax;
+    
+import javax.annotation.PostConstruct;
+import javax.faces.bean.ManagedBean;
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+import javax.faces.bean.RequestScoped;
+
+ at ManagedBean
+ at RequestScoped
+public class Issue3020Bean implements Serializable {
+    private String product;
+    private List<String> products;
+
+    @PostConstruct
+    public void init() {
+        products = new ArrayList<String>();
+        String p = "a";
+        for (int i = 0; i < 10; i++) {
+            products.add(p);
+            p += "a";
+        }
+    }
+
+    public List<String> getMatchingProducts() {
+        List<String> matchingProducts = new ArrayList<String>();
+        if (product != null) {
+            for (String p : products) {
+                if (p.startsWith(product)) {
+                    matchingProducts.add(p);
+                }
+            }
+        }
+        return matchingProducts;
+    }
+
+    public String getProduct() {
+        return product;
+    }
+
+    public void setProduct(String product) {
+        this.product = product;
+    }    
+    
+}
diff --git a/test/servlet30/ajax/src/main/java/com/sun/faces/test/servlet30/ajax/LegendWithoutIdBean.java b/test/servlet30/ajax/src/main/java/com/sun/faces/test/servlet30/ajax/LegendWithoutIdBean.java
new file mode 100644
index 0000000..1e5f90b
--- /dev/null
+++ b/test/servlet30/ajax/src/main/java/com/sun/faces/test/servlet30/ajax/LegendWithoutIdBean.java
@@ -0,0 +1,19 @@
+package com.sun.faces.test.servlet30.ajax;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.SessionScoped;
+
+ at ManagedBean(name = "legendWithoutIdBean")
+ at SessionScoped
+public class LegendWithoutIdBean {
+
+    private String value;
+
+    public String getValue() {
+        return value;
+    }
+
+    public void setValue(String value) {
+        this.value = value;
+    }
+}
diff --git a/test/servlet30/ajax/src/main/java/com/sun/faces/test/servlet30/ajax/MultiPart1Bean.java b/test/servlet30/ajax/src/main/java/com/sun/faces/test/servlet30/ajax/MultiPart1Bean.java
new file mode 100644
index 0000000..b28a56f
--- /dev/null
+++ b/test/servlet30/ajax/src/main/java/com/sun/faces/test/servlet30/ajax/MultiPart1Bean.java
@@ -0,0 +1,73 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.ajax;
+
+import java.io.Serializable;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.ViewScoped;
+import javax.faces.context.FacesContext;
+
+ at ManagedBean(name="multiPart1Bean")
+ at ViewScoped
+public class MultiPart1Bean implements Serializable {
+    
+    public void delay() {
+        
+        Integer count = (Integer) FacesContext.getCurrentInstance().getExternalContext().getApplicationMap().get("multiPart1Count");
+        if (count == null) {
+            count = new Integer(1);
+            FacesContext.getCurrentInstance().getExternalContext().getApplicationMap().put("multiPart1Count", count);
+        } else {
+            count = count + 1;
+            FacesContext.getCurrentInstance().getExternalContext().getApplicationMap().put("multiPart1Count", count);
+        }
+        
+        try {
+            Thread.sleep(2000);
+            
+        } catch(InterruptedException ex) {
+            ex.printStackTrace();
+        }
+    }
+    
+    public String getCount() {
+        return "count is " + FacesContext.getCurrentInstance().getExternalContext().getApplicationMap().get("multiPart1Count");
+    }
+}
diff --git a/test/servlet30/ajax/src/main/java/com/sun/faces/test/servlet30/ajax/SelectBean.java b/test/servlet30/ajax/src/main/java/com/sun/faces/test/servlet30/ajax/SelectBean.java
new file mode 100644
index 0000000..faf0d73
--- /dev/null
+++ b/test/servlet30/ajax/src/main/java/com/sun/faces/test/servlet30/ajax/SelectBean.java
@@ -0,0 +1,79 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.servlet30.ajax;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.SessionScoped;
+import javax.faces.event.ActionEvent;
+
+ at ManagedBean(name = "ajaxselect")
+ at SessionScoped
+public class SelectBean {
+    private String string = "Pending";
+    private String[] sarray;
+
+        public String getString() {
+        return string;
+    }
+
+    public void setString(String string) {
+        this.string = string;
+    }
+
+    public String[] getSarray() {
+        return sarray;
+    }
+
+    public void setSarray(String[] sarray) {
+        this.sarray = sarray;
+        if (sarray.length == 0) {
+            string = "Pending";
+        } else {
+            string = "";
+        }
+        for (String str : sarray) {
+            if (!"".equals(string)) {
+                string = string + " ";
+            }
+            string = string + str;
+        }
+    }
+}
diff --git a/test/servlet30/ajax/src/main/java/com/sun/faces/test/servlet30/ajax/UpdateBean.java b/test/servlet30/ajax/src/main/java/com/sun/faces/test/servlet30/ajax/UpdateBean.java
new file mode 100644
index 0000000..6164280
--- /dev/null
+++ b/test/servlet30/ajax/src/main/java/com/sun/faces/test/servlet30/ajax/UpdateBean.java
@@ -0,0 +1,237 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.servlet30.ajax;
+
+import java.util.HashMap;
+import java.util.Map;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.RequestScoped;
+import javax.faces.context.FacesContext;
+import javax.faces.context.ExternalContext;
+import javax.faces.context.PartialResponseWriter;
+import javax.faces.FacesException;
+
+ at ManagedBean
+ at RequestScoped
+
+public class UpdateBean {
+
+    public String updateBodyTag() {
+        FacesContext ctx = FacesContext.getCurrentInstance();
+        ExternalContext extContext = ctx.getExternalContext();
+        if (ctx.getPartialViewContext().isAjaxRequest()) {
+            try {
+                extContext.setResponseContentType("text/xml");
+                extContext.addResponseHeader("Cache-Control", "no-cache");
+                PartialResponseWriter writer =
+                    ctx.getPartialViewContext().getPartialResponseWriter();
+                writer.startDocument();
+                writer.startUpdate("javax.faces.ViewBody");
+                writer.startElement("body",null);
+                writer.writeAttribute("class","foo","class");
+                writer.writeAttribute("title","fooTitle","title");
+                writer.writeAttribute("lang","fooLang","lang");
+                writer.startElement("span", null);
+                writer.writeAttribute("id","status","id");
+                writer.endElement("span");
+                writer.endElement("body");
+                writer.endUpdate();
+                writer.startEval();
+                writer.write("var body = document.getElementsByTagName('body')[0];");
+                writer.write("document.getElementById('status').innerHTML='BODY CLASS:'+body.className+' BODY TITLE:'+body.title+' BODY LANG:'+body.lang");
+                writer.endEval();
+                writer.endDocument();
+                writer.flush();
+                ctx.responseComplete();
+            } catch (Exception e) {
+                throw new FacesException(e);
+            }
+        }
+        return null;
+    }
+
+    public String updateValueAsAttributeName() {
+        FacesContext ctx = FacesContext.getCurrentInstance();
+        ExternalContext extContext = ctx.getExternalContext();
+        if (ctx.getPartialViewContext().isAjaxRequest()) {
+            try {
+                Map attrs = new HashMap();
+                attrs.put("value", "");
+                extContext.setResponseContentType("text/xml");
+                extContext.addResponseHeader("Cache-Control", "no-cache");
+                PartialResponseWriter writer =
+                    ctx.getPartialViewContext().getPartialResponseWriter();
+                writer.startDocument();
+                writer.updateAttributes("form1:foo", attrs); 
+                writer.startEval();
+                writer.write("document.getElementById('form1:foo').value = 'bar';");
+                writer.endEval();
+                writer.endDocument();
+                writer.flush();
+                ctx.responseComplete();
+            } catch (Exception e) {
+                throw new FacesException(e);
+            }
+        }
+        return null;
+    }
+
+    public String updateDisabledAsAttributeName() {
+        FacesContext ctx = FacesContext.getCurrentInstance();
+        ExternalContext extContext = ctx.getExternalContext();
+        if (ctx.getPartialViewContext().isAjaxRequest()) {
+            try {
+                Map attrs = new HashMap();
+                attrs.put("disabled", "true");
+                extContext.setResponseContentType("text/xml");
+                extContext.addResponseHeader("Cache-Control", "no-cache");
+                PartialResponseWriter writer =
+                    ctx.getPartialViewContext().getPartialResponseWriter();
+                writer.startDocument();
+                writer.updateAttributes("form1:foo", attrs);
+                writer.startEval();
+                writer.write("document.getElementById('form1:foo').disabled = false;");
+                writer.endEval();
+                writer.endDocument();
+                writer.flush();
+                ctx.responseComplete();
+            } catch (Exception e) {
+                throw new FacesException(e);
+            }
+        }
+        return null;
+    }
+
+    public String updateClassAsAttributeName() {
+        FacesContext ctx = FacesContext.getCurrentInstance();
+        ExternalContext extContext = ctx.getExternalContext();
+        if (ctx.getPartialViewContext().isAjaxRequest()) {
+            try {
+                Map attrs = new HashMap();
+                attrs.put("class", "myclass");
+                extContext.setResponseContentType("text/xml");
+                extContext.addResponseHeader("Cache-Control", "no-cache");
+                PartialResponseWriter writer =
+                    ctx.getPartialViewContext().getPartialResponseWriter();
+                writer.startDocument();
+                writer.updateAttributes("form1:foo", attrs);
+                writer.startEval();
+                writer.write("document.getElementById('form1:foo').value = document.getElementById('form1:foo').className;");
+                writer.endEval();
+                writer.endDocument();
+                writer.flush();
+                ctx.responseComplete();
+            } catch (Exception e) {
+                throw new FacesException(e);
+            }
+        }
+        return null;
+    }
+
+    public String updateCheckedAsAttributeName() {
+        FacesContext ctx = FacesContext.getCurrentInstance();
+        ExternalContext extContext = ctx.getExternalContext();
+        if (ctx.getPartialViewContext().isAjaxRequest()) {
+            try {
+                Map attrs = new HashMap();
+                attrs.put("checked", "true");
+                extContext.setResponseContentType("text/xml");
+                extContext.addResponseHeader("Cache-Control", "no-cache");
+                PartialResponseWriter writer =
+                    ctx.getPartialViewContext().getPartialResponseWriter();
+                writer.startDocument();
+                writer.updateAttributes("form1:foo", attrs);
+                writer.endDocument();
+                writer.flush();
+                ctx.responseComplete();
+            } catch (Exception e) {
+                throw new FacesException(e);
+            }
+        }
+        return null;
+    }
+
+    public String updateReadonlyAsAttributeName() {
+        FacesContext ctx = FacesContext.getCurrentInstance();
+        ExternalContext extContext = ctx.getExternalContext();
+        if (ctx.getPartialViewContext().isAjaxRequest()) {
+            try {
+                Map attrs = new HashMap();
+                attrs.put("readonly", "true");
+                extContext.setResponseContentType("text/xml");
+                extContext.addResponseHeader("Cache-Control", "no-cache");
+                PartialResponseWriter writer =
+                    ctx.getPartialViewContext().getPartialResponseWriter();
+                writer.startDocument();
+                writer.updateAttributes("form1:foo", attrs);
+                writer.endDocument();
+                writer.flush();
+                ctx.responseComplete();
+            } catch (Exception e) {
+                throw new FacesException(e);
+            }
+        }
+        return null;
+    }
+
+    public String updateOnAsAttributeName() {
+        FacesContext ctx = FacesContext.getCurrentInstance();
+        ExternalContext extContext = ctx.getExternalContext();
+        if (ctx.getPartialViewContext().isAjaxRequest()) {
+            try {
+                Map attrs = new HashMap();
+                attrs.put("onclick", "document.getElementById('form1:out').innerHTML='ONCLICK CALLED';return;");
+                extContext.setResponseContentType("text/xml");
+                extContext.addResponseHeader("Cache-Control", "no-cache");
+                PartialResponseWriter writer =
+                    ctx.getPartialViewContext().getPartialResponseWriter();
+                writer.startDocument();
+                writer.updateAttributes("form1:button1", attrs);
+                writer.endDocument();
+                writer.flush();
+                ctx.responseComplete();
+            } catch (Exception e) {
+                throw new FacesException(e);
+            }
+        }
+        return null;
+    }
+}
diff --git a/test/servlet30/ajax/src/main/java/com/sun/faces/test/servlet30/ajax/ViewExpired1Bean.java b/test/servlet30/ajax/src/main/java/com/sun/faces/test/servlet30/ajax/ViewExpired1Bean.java
new file mode 100644
index 0000000..2821b3b
--- /dev/null
+++ b/test/servlet30/ajax/src/main/java/com/sun/faces/test/servlet30/ajax/ViewExpired1Bean.java
@@ -0,0 +1,65 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.servlet30.ajax;
+
+import javax.faces.application.FacesMessage;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.RequestScoped;
+import javax.faces.context.FacesContext;
+
+ at ManagedBean(name="viewExpired1Bean")
+ at RequestScoped
+public class ViewExpired1Bean {
+
+    public String getStateSavingMethod() {
+        return FacesContext.getCurrentInstance().getApplication().
+                getStateManager().isSavingStateInClient(FacesContext.getCurrentInstance()) ? "client" : "server";
+    }
+    
+    public void expireSessionSoon() {
+        FacesContext.getCurrentInstance().getExternalContext().setSessionMaxInactiveInterval(1);
+    }
+    
+    public void verifySession() {
+        FacesContext.getCurrentInstance().addMessage(null, 
+                new FacesMessage(FacesMessage.SEVERITY_FATAL, "Should not see this!", "Should not see this!"));
+    }
+}
diff --git a/test/servlet30/ajax/src/main/java/com/sun/faces/test/servlet30/ajax/ViewScopeBean.java b/test/servlet30/ajax/src/main/java/com/sun/faces/test/servlet30/ajax/ViewScopeBean.java
new file mode 100644
index 0000000..260bb99
--- /dev/null
+++ b/test/servlet30/ajax/src/main/java/com/sun/faces/test/servlet30/ajax/ViewScopeBean.java
@@ -0,0 +1,77 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.servlet30.ajax;
+
+import java.io.Serializable;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.ViewScoped;
+
+ at ManagedBean
+ at ViewScoped
+public class ViewScopeBean implements Serializable{
+
+    public ViewScopeBean() {
+
+        if (null == System.getProperty("RESULT")) {
+            System.setProperty("RESULT", "VIEWCOPEBEAN() CALLED ");
+        } else {
+            String result = System.getProperty("RESULT");
+            result += "VIEWSCOPEBEAN() CALLED ";
+            System.setProperty("RESULT", result);
+        }
+
+    }
+
+    public String getBeanVal() {
+        if (null == System.getProperty("RESULT")) {
+            System.setProperty("RESULT", "");
+        }
+       
+        return System.getProperty("RESULT");
+    }
+
+    // Reset property to the single constructor load so we can determine if the 
+    // constructor is called more than once.
+    public void reset() {
+        System.setProperty("RESULT", "VIEWSCOPEBEAN() CALLED ");
+    }
+    
+}
diff --git a/test/servlet30/ajax/src/main/java/com/sun/faces/test/servlet30/ajax/ViewState1Bean.java b/test/servlet30/ajax/src/main/java/com/sun/faces/test/servlet30/ajax/ViewState1Bean.java
new file mode 100644
index 0000000..e4f2a61
--- /dev/null
+++ b/test/servlet30/ajax/src/main/java/com/sun/faces/test/servlet30/ajax/ViewState1Bean.java
@@ -0,0 +1,68 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.ajax;
+
+import java.io.Serializable;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.SessionScoped;
+
+ at ManagedBean(name = "viewState1Bean")
+ at SessionScoped
+public class ViewState1Bean implements Serializable {
+
+    protected String firstName = "Duke";
+    protected String lastName = "Java";
+
+    public String getFirstName() {
+        return firstName;
+    }
+
+    public void setFirstName(String firstName) {
+        this.firstName = firstName;
+    }
+
+    public String getLastName() {
+        return lastName;
+    }
+
+    public void setLastName(String lastName) {
+        this.lastName = lastName;
+    }
+}
diff --git a/test/servlet30/ajax/src/main/java/com/sun/faces/test/servlet30/ajax/filter/BeforeFilter.java b/test/servlet30/ajax/src/main/java/com/sun/faces/test/servlet30/ajax/filter/BeforeFilter.java
new file mode 100644
index 0000000..dc6a49d
--- /dev/null
+++ b/test/servlet30/ajax/src/main/java/com/sun/faces/test/servlet30/ajax/filter/BeforeFilter.java
@@ -0,0 +1,122 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+
+package com.sun.faces.test.servlet30.ajax.filter;
+
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.io.Writer;
+import java.lang.reflect.Constructor;
+import javax.faces.context.PartialResponseWriter;
+import javax.faces.context.ResponseWriter;
+import javax.servlet.Filter;
+import javax.servlet.FilterChain;
+import javax.servlet.FilterConfig;
+import javax.servlet.ServletException;
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletResponse;
+import javax.servlet.http.HttpServletResponse;
+
+public class BeforeFilter implements Filter {
+    
+    private FilterConfig filterConfig = null;
+    
+    public BeforeFilter() {
+    }    
+    
+    @Override
+    public void doFilter(ServletRequest request, ServletResponse response,
+            FilterChain chain)
+            throws IOException, ServletException {
+        
+        
+        try {
+            HttpServletResponse resp = (HttpServletResponse) response;
+            PrintWriter pw = resp.getWriter();
+
+            ResponseWriter responseWriter;
+            Class htmlResponseWriterClass = Class.forName("com.sun.faces.renderkit.html_basic.HtmlResponseWriter");
+            Constructor ctor = htmlResponseWriterClass.getConstructor(Writer.class, String.class, String.class);
+            responseWriter = (ResponseWriter) ctor.newInstance(pw, "text/xml", "UTF-8");
+            PartialResponseWriter partialResponseWriter = new PartialResponseWriter(responseWriter);
+//            partialResponseWriter.writePreamble("<?xml version='1.0' encoding='UTF-8'?>\n");
+            partialResponseWriter.startDocument();
+            partialResponseWriter.startUpdate("foo");
+            partialResponseWriter.endUpdate();
+            partialResponseWriter.endDocument();
+            partialResponseWriter.close();
+        } catch (Exception t) {
+            HttpServletResponse resp = (HttpServletResponse) response;
+            PrintWriter pw = resp.getWriter();
+            try {
+                pw.print("<html><body><p id=\"result\">FAILURE</p>");
+                int indentLevel = 0;
+                String indent;
+                Throwable cause = t;
+                do {
+                    StringBuilder indentBuilder = new StringBuilder();
+                    for (int i = 0; i < indentLevel; i++) {
+                        indentBuilder.append("  ");
+                    }
+                    indent = indentBuilder.toString();
+                    pw.print("<p>" + indent + " Exception: " + cause.getClass().getName() + "</p>");
+                    pw.print("<p>" + indent + " Exception Message: " + cause.getLocalizedMessage() + "</p>");
+                        pw.print("<code><pre>");
+                        cause.printStackTrace(pw);
+                        pw.print("</pre></code>");
+                } while (null != (cause = cause.getCause()));
+                pw.print("</body></html>");
+                resp.setStatus(200);
+                pw.close();
+            } catch (Exception e) {
+            }
+        }
+        
+    }
+
+    public void destroy() {        
+    }
+
+    public void init(FilterConfig filterConfig) {        
+        this.filterConfig = filterConfig;
+    }
+    
+}
diff --git a/test/servlet30/ajax/src/main/webapp/WEB-INF/behavior-taglib.xml b/test/servlet30/ajax/src/main/webapp/WEB-INF/behavior-taglib.xml
new file mode 100644
index 0000000..7ebfc59
--- /dev/null
+++ b/test/servlet30/ajax/src/main/webapp/WEB-INF/behavior-taglib.xml
@@ -0,0 +1,58 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<facelet-taglib xmlns="http://java.sun.com/xml/ns/javaee"
+              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+              xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facelettaglibrary_2_0.xsd"
+              version="2.0">
+    <namespace>http://javaserverfaces.dev.java.net/demo/behavior</namespace>
+
+    <tag>
+        <tag-name>greet</tag-name>
+        <behavior>
+           <behavior-id>custom.behavior.Greet</behavior-id>
+        </behavior>
+    </tag>
+
+</facelet-taglib>
+
diff --git a/test/servlet30/ajax/src/main/webapp/WEB-INF/glassfish-web.xml b/test/servlet30/ajax/src/main/webapp/WEB-INF/glassfish-web.xml
new file mode 100644
index 0000000..ea88787
--- /dev/null
+++ b/test/servlet30/ajax/src/main/webapp/WEB-INF/glassfish-web.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
+<glassfish-web-app error-url="">
+  <context-root>/test-servlet30-ajax</context-root>
+  <class-loader delegate="true"/>
+  <jsp-config>
+    <property name="keepgenerated" value="true">
+      <description>Keep a copy of the generated servlet class' java code.</description>
+    </property>
+  </jsp-config>
+</glassfish-web-app>
diff --git a/test/servlet30/ajax/src/main/webapp/WEB-INF/taglib.xml b/test/servlet30/ajax/src/main/webapp/WEB-INF/taglib.xml
new file mode 100644
index 0000000..b1bfca7
--- /dev/null
+++ b/test/servlet30/ajax/src/main/webapp/WEB-INF/taglib.xml
@@ -0,0 +1,64 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<facelet-taglib xmlns="http://java.sun.com/xml/ns/javaee"
+              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+              xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facelettaglibrary_2_0.xsd"
+              version="2.0">
+    <namespace>http://testcomponent</namespace>
+
+    <tag>
+        <tag-name>input1</tag-name>
+        <component>
+            <component-type>com.sun.faces.test.servlet30.ajax.Issue2179Component1</component-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>input2</tag-name>
+        <component>
+            <component-type>com.sun.faces.test.servlet30.ajax.Issue2179Component2</component-type>
+        </component>
+    </tag>
+
+</facelet-taglib>
+
diff --git a/test/servlet30/ajax/src/main/webapp/WEB-INF/web.xml b/test/servlet30/ajax/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..7f75022
--- /dev/null
+++ b/test/servlet30/ajax/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>${webapp.projectStage}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
+        <param-value>${webapp.partialStateSaving}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>${webapp.stateSavingMethod}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.FACELETS_LIBRARIES</param-name>
+        <param-value>/WEB-INF/behavior-taglib.xml;/WEB-INF/taglib.xml</param-value>
+    </context-param>
+    <filter>
+        <filter-name>BeforeFilter</filter-name>
+        <filter-class>com.sun.faces.test.servlet30.ajax.filter.BeforeFilter</filter-class>
+    </filter>
+    <filter-mapping>
+        <filter-name>BeforeFilter</filter-name>
+        <url-pattern>/BeforeFilter</url-pattern>
+    </filter-mapping>
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <session-config>
+        <session-timeout>30</session-timeout>
+    </session-config>
+    <welcome-file-list>
+        <welcome-file>faces/index.xhtml</welcome-file>
+    </welcome-file-list>
+</web-app>
diff --git a/test/servlet30/ajax/src/main/webapp/ajaxProjectStage.xhtml b/test/servlet30/ajax/src/main/webapp/ajaxProjectStage.xhtml
new file mode 100644
index 0000000..85b51df
--- /dev/null
+++ b/test/servlet30/ajax/src/main/webapp/ajaxProjectStage.xhtml
@@ -0,0 +1,65 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+<f:view contentType="text/html"/>
+<h:head>
+    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
+    <title>Ajax Project Stage</title>
+</h:head>
+<h:body>
+    <h:outputScript name="jsf.js" library="javax.faces" target="head"/>
+
+    <div id="stage"/>
+
+    <script type="text/javascript">
+        var stage = document.getElementById("stage");
+        stage.innerHTML = jsf.getProjectStage();
+    </script>
+
+</h:body>
+</html>
diff --git a/test/servlet30/ajax/src/main/webapp/ajaxRedirect01.xhtml b/test/servlet30/ajax/src/main/webapp/ajaxRedirect01.xhtml
new file mode 100644
index 0000000..85c2fe1
--- /dev/null
+++ b/test/servlet30/ajax/src/main/webapp/ajaxRedirect01.xhtml
@@ -0,0 +1,27 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://xmlns.jcp.org/jsf/html"
+      xmlns:f="http://xmlns.jcp.org/jsf/core">
+    <h:head>
+        <title>Redirect Happens During Ajax POSTback processing</title>
+        <h:outputScript library="ajaxRedirect" name="ajaxRedirect.js" />
+    </h:head>
+    <h:body>
+        <script type="text/javascript">
+            jsf.ajax.addOnEvent(ajaxEvent);
+        </script>
+        
+        
+        <h:form prependId="false" id="form">
+            
+            <div id="responseText"></div>
+            
+            <h:commandButton id="button" value="submit" actionListener="#{ajaxRedirectBean.causeRedirect}">
+                <f:ajax />
+            </h:commandButton>
+            
+        </h:form>
+        
+    </h:body>
+</html>
\ No newline at end of file
diff --git a/test/servlet30/ajax/src/main/webapp/ajaxRedirect02.html b/test/servlet30/ajax/src/main/webapp/ajaxRedirect02.html
new file mode 100644
index 0000000..64058d0
--- /dev/null
+++ b/test/servlet30/ajax/src/main/webapp/ajaxRedirect02.html
@@ -0,0 +1,51 @@
+<!DOCTYPE html>
+<!--
+DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+The contents of this file are subject to the terms of either the GNU
+General Public License Version 2 only ("GPL") or the Common Development
+and Distribution License("CDDL") (collectively, the "License").  You
+may not use this file except in compliance with the License.  You can
+obtain a copy of the License at
+https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+or packager/legal/LICENSE.txt.  See the License for the specific
+language governing permissions and limitations under the License.
+
+When distributing the software, include this License Header Notice in each
+file and include the License file at packager/legal/LICENSE.txt.
+
+GPL Classpath Exception:
+Oracle designates this particular file as subject to the "Classpath"
+exception as provided by Oracle in the GPL Version 2 section of the License
+file that accompanied this code.
+
+Modifications:
+If applicable, add the following below the License Header, with the fields
+enclosed by brackets [] replaced by your own identifying information:
+"Portions Copyright [year] [name of copyright owner]"
+
+Contributor(s):
+If you wish your version of this file to be governed by only the CDDL or
+only the GPL Version 2, indicate your decision by adding "[Contributor]
+elects to include this software in this distribution under the [CDDL or GPL
+Version 2] license."  If you don't indicate a single choice of license, a
+recipient has the option to distribute your version of this file under
+either the CDDL, the GPL Version 2 or to extend the choice of license to
+its licensees as provided above.  However, if you add GPL Version 2 code
+and therefore, elected the GPL Version 2 license, then the option applies
+only if the new code is made subject to such option by the copyright
+holder.
+
+-->
+<html>
+    <head>
+        <title>PLAIN HTML FILE</title>
+        <meta charset="UTF-8">
+        <meta name="viewport" content="width=device-width">
+    </head>
+    <body>
+        <p id="result">PLAIN HTML FILE</p>
+    </body>
+</html>
diff --git a/test/servlet30/ajax/src/main/webapp/attributeNameIsChecked.xhtml b/test/servlet30/ajax/src/main/webapp/attributeNameIsChecked.xhtml
new file mode 100644
index 0000000..fd7b1af
--- /dev/null
+++ b/test/servlet30/ajax/src/main/webapp/attributeNameIsChecked.xhtml
@@ -0,0 +1,62 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+<f:view contentType="text/html"/>
+<h:head>
+    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
+    <title>Ajax</title>
+</h:head>
+<h:body>
+    <h:form id="form1">
+       <h:selectBooleanCheckbox id="foo" />
+       <h:commandButton id="button" value="checked" action="#{updateBean.updateCheckedAsAttributeName}"> 
+          <f:ajax render="foo"/>
+       </h:commandButton>
+    </h:form>
+</h:body>
+</html>
diff --git a/test/servlet30/ajax/src/main/webapp/attributeNameIsClass.xhtml b/test/servlet30/ajax/src/main/webapp/attributeNameIsClass.xhtml
new file mode 100644
index 0000000..65e4e75
--- /dev/null
+++ b/test/servlet30/ajax/src/main/webapp/attributeNameIsClass.xhtml
@@ -0,0 +1,62 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+<f:view contentType="text/html"/>
+<h:head>
+    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
+    <title>Ajax</title>
+</h:head>
+<h:body>
+    <h:form id="form1">
+       <h:inputText id="foo" value="foo"/>
+       <h:commandButton id="button" value="class" action="#{updateBean.updateClassAsAttributeName}"> 
+          <f:ajax render="foo"/>
+       </h:commandButton>
+    </h:form>
+</h:body>
+</html>
diff --git a/test/servlet30/ajax/src/main/webapp/attributeNameIsDisabled.xhtml b/test/servlet30/ajax/src/main/webapp/attributeNameIsDisabled.xhtml
new file mode 100644
index 0000000..edc9f52
--- /dev/null
+++ b/test/servlet30/ajax/src/main/webapp/attributeNameIsDisabled.xhtml
@@ -0,0 +1,62 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+<f:view contentType="text/html"/>
+<h:head>
+    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
+    <title>Ajax</title>
+</h:head>
+<h:body>
+    <h:form id="form1">
+       <h:inputText id="foo" value="foo"/>
+       <h:commandButton id="button" value="disabled" action="#{updateBean.updateDisabledAsAttributeName}"> 
+          <f:ajax render="foo"/>
+       </h:commandButton>
+    </h:form>
+</h:body>
+</html>
diff --git a/test/servlet30/ajax/src/main/webapp/attributeNameIsOn.xhtml b/test/servlet30/ajax/src/main/webapp/attributeNameIsOn.xhtml
new file mode 100644
index 0000000..d1cec22
--- /dev/null
+++ b/test/servlet30/ajax/src/main/webapp/attributeNameIsOn.xhtml
@@ -0,0 +1,81 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+<f:view contentType="text/html"/>
+<h:head>
+    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
+    <title>Ajax</title>
+</h:head>
+<h:body>
+             <script type="text/javascript">
+              var statusUpdate = function statusUpdate(data) {
+                 var statusArea = document.getElementById("statusArea");
+                 var text = statusArea.value;
+                 text = text + "Name: "+data.source.id;
+                 if (data.type === "event") {
+                     text = text + " Response: "+data.responseText;
+                 }
+                 statusArea.value = text;
+              }
+            </script>
+    <h:form id="form1">
+       <h:commandButton id="button" value="Fire" action="#{updateBean.updateOnAsAttributeName}"> 
+          <f:ajax onevent="statusUpdate"/>
+       </h:commandButton>
+       <br/>
+       <br/>
+       <br/>
+       <h:commandButton id="button1" value="On"/>
+       <br/>
+       <br/>
+       <br/>
+       <h3> Status:</h3>
+       <textarea id="statusArea" cols="40" rows="10" readonly="readonly" />
+    </h:form>
+</h:body>
+</html>
diff --git a/test/servlet30/ajax/src/main/webapp/attributeNameIsReadonly.xhtml b/test/servlet30/ajax/src/main/webapp/attributeNameIsReadonly.xhtml
new file mode 100644
index 0000000..32b56ea
--- /dev/null
+++ b/test/servlet30/ajax/src/main/webapp/attributeNameIsReadonly.xhtml
@@ -0,0 +1,62 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+<f:view contentType="text/html"/>
+<h:head>
+    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
+    <title>Ajax</title>
+</h:head>
+<h:body>
+    <h:form id="form1">
+       <h:inputText id="foo" value="foo"/>
+       <h:commandButton id="button" value="readonly" action="#{updateBean.updateReadonlyAsAttributeName}"> 
+          <f:ajax render="foo"/>
+       </h:commandButton>
+    </h:form>
+</h:body>
+</html>
diff --git a/test/servlet30/ajax/src/main/webapp/attributeNameIsValue.xhtml b/test/servlet30/ajax/src/main/webapp/attributeNameIsValue.xhtml
new file mode 100644
index 0000000..e7406c5
--- /dev/null
+++ b/test/servlet30/ajax/src/main/webapp/attributeNameIsValue.xhtml
@@ -0,0 +1,62 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+<f:view contentType="text/html"/>
+<h:head>
+    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
+    <title>Ajax</title>
+</h:head>
+<h:body>
+    <h:form id="form1">
+       <h:inputText id="foo" value="foo"/>
+       <h:commandButton id="button" value="value" action="#{updateBean.updateValueAsAttributeName}"> 
+          <f:ajax render="foo"/>
+       </h:commandButton>
+    </h:form>
+</h:body>
+</html>
diff --git a/test/servlet30/ajax/src/main/webapp/body.xhtml b/test/servlet30/ajax/src/main/webapp/body.xhtml
new file mode 100644
index 0000000..9f968e6
--- /dev/null
+++ b/test/servlet30/ajax/src/main/webapp/body.xhtml
@@ -0,0 +1,16 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    <h:head>
+        <title>Facelet Title</title>
+    </h:head>
+    <h:body>
+        <f:ajax event="load"/>
+        Hello from Facelets
+    </h:body>
+</html>
\ No newline at end of file
diff --git a/test/servlet30/ajax/src/main/webapp/buttonOnlySubmitsOne.xhtml b/test/servlet30/ajax/src/main/webapp/buttonOnlySubmitsOne.xhtml
new file mode 100644
index 0000000..dcdd1ed
--- /dev/null
+++ b/test/servlet30/ajax/src/main/webapp/buttonOnlySubmitsOne.xhtml
@@ -0,0 +1,20 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    <h:head>
+        <title>Facelet Title</title>
+    </h:head>
+    <h:body>
+        <h:form id="form">
+            <h:commandButton id="button1" type="button" actionListener="#{buttonOnlySubmitsOneBean.listener}" value="Button 1">
+                <f:ajax execute="@form" render="@form"/>
+            </h:commandButton>
+            <h:commandButton id="button2" type="button" actionListener="#{buttonOnlySubmitsOneBean.listener}" value="Button 2">
+                <f:ajax execute="@form" render="@form"/>
+            </h:commandButton>
+            <h:outputText value="#{buttonOnlySubmitsOneBean.value}"/>
+        </h:form>
+    </h:body>
+</html>
diff --git a/test/servlet30/ajax/src/main/webapp/commandLinkRadio.xhtml b/test/servlet30/ajax/src/main/webapp/commandLinkRadio.xhtml
new file mode 100644
index 0000000..93782b8
--- /dev/null
+++ b/test/servlet30/ajax/src/main/webapp/commandLinkRadio.xhtml
@@ -0,0 +1,65 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.  
+
+--> 
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+<h:head>
+</h:head>
+<h:body>
+	<h:form prependId="false">
+           <h:commandLink id="testLink" value="testlink" actionListener="#{bean.processLink}">
+              <f:ajax execute="@form" render="out" />
+           </h:commandLink>
+
+           <h:selectOneRadio id="testRadio" value="#{bean.radioValue}" valueChangeListener="#{bean.processRadio}">
+              <f:selectItems value="#{bean.items}" />
+              <f:ajax execute="@this" render="out" />
+           </h:selectOneRadio>
+
+           <br/>
+           <h:outputText id="out" value="#{bean.status}"/>
+	</h:form>
+</h:body>
+</html>
diff --git a/test/servlet30/ajax/src/main/webapp/disabledBehaviors.xhtml b/test/servlet30/ajax/src/main/webapp/disabledBehaviors.xhtml
new file mode 100644
index 0000000..fbbf60a
--- /dev/null
+++ b/test/servlet30/ajax/src/main/webapp/disabledBehaviors.xhtml
@@ -0,0 +1,77 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:be="http://javaserverfaces.dev.java.net/demo/behavior">
+<f:view contentType="text/html"/>
+<h:head>
+    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
+    <title>Ajax</title>
+</h:head>
+<h:body>
+    <h:form id="form1">    <!-- Note that unlike previous examples, prependid='true' -->
+<!-- Test one: No behaviors rendered -->
+       <h:inputText id="input1">
+	  <f:ajax execute="@all" render="@all" disabled="true"/>
+          <f:ajax execute="@this" render="@all" disabled="true"/>
+       </h:inputText>
+       <br/>
+<!-- Test two: Second behavior rendered -->
+       <h:inputText id="input2">
+	  <f:ajax execute="@all" render="@all" disabled="true"/>
+          <f:ajax execute="@this" render="@all"/>
+       </h:inputText>
+       <br/>
+<!-- Test three: First behavior rendered -->
+       <h:inputText id="input3">
+          <be:greet/>
+	  <f:ajax execute="@all" render="@all" disabled="true"/>
+       </h:inputText>
+    </h:form>
+
+</h:body>
+</html>
diff --git a/test/servlet30/ajax/src/main/webapp/divInComposite.xhtml b/test/servlet30/ajax/src/main/webapp/divInComposite.xhtml
new file mode 100644
index 0000000..cc97ff2
--- /dev/null
+++ b/test/servlet30/ajax/src/main/webapp/divInComposite.xhtml
@@ -0,0 +1,66 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html contentType="text/html" xmlns="http://www.w3.org/1999/xhtml"
+	xmlns:h="http://java.sun.com/jsf/html"
+	xmlns:f="http://java.sun.com/jsf/core"
+	xmlns:ui="http://java.sun.com/jsf/facelets"
+	xmlns:divInComposite="http://java.sun.com/jsf/composite/divInComposite">
+    <h:head>
+    </h:head>
+    <h:body>
+        <divInComposite:component id="cc">
+            <h:form id="form" >
+               <fieldset>
+                   <legend>Test Ajax Composite bug</legend>
+                   <h:selectBooleanCheckbox id="test" value="#{divInCompositeBean.test}">
+                      <f:ajax render="output"/>
+                   </h:selectBooleanCheckbox>
+                   <h:outputText value = "#{divInCompositeBean.test}" id="output"/>
+               </fieldset>
+            </h:form>
+        </divInComposite:component>
+    </h:body>
+</html>
diff --git a/test/servlet30/ajax/src/main/webapp/dupViewState.xhtml b/test/servlet30/ajax/src/main/webapp/dupViewState.xhtml
new file mode 100644
index 0000000..c5b68f9
--- /dev/null
+++ b/test/servlet30/ajax/src/main/webapp/dupViewState.xhtml
@@ -0,0 +1,83 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!-- This comment will put IE 6, 7, 8, and 9 in quirks mode -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+<f:view contentType="text/html"/>
+<h:head>
+    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
+    <title>Ajax</title>
+</h:head>
+<h:body>
+
+    <h:form id="form1" prependId="false">    <!-- Note that unlike previous examples, prependid='true' -->
+
+        <h3>Click Stock JSF Page button once.  Click Show/Hide button.  Message should say: javax.faces.ViewState Has One Value.  Click Show/Hide button again.  Message should still say: javax.faces.ViewState Has One Value.</h3>
+        <h:panelGroup id="pg1">
+        <h:outputText id="out1" value="Show" rendered="#{issue2500Bean.visible}"/>
+        </h:panelGroup>
+        <h:panelGroup id="pg2">
+        <h:outputText id="out2" value="Or Not" rendered="#{!issue2500Bean.visible}"/>
+        </h:panelGroup>
+        <br/>
+        <h:commandButton id="button1" value="Show/Hide"
+                         actionListener="#{issue2500Bean.toggle}" >
+            <f:ajax execute="button1" render="pg1 pg2 msg" />
+        </h:commandButton>
+        <br/>
+        <h:commandButton id="btn5" action="/faces/dupViewState.xhtml" value="Stock JSF Page (ajax - form)">
+            <f:ajax execute="@this" render="form1"/>
+        </h:commandButton>
+        <br/>
+        <br/>
+        <h:outputText id="msg" value="#{issue2500Bean.msg}"/>
+        <h:messages/>
+        
+    </h:form>
+
+</h:body>
+</html>
diff --git a/test/servlet30/ajax/src/main/webapp/exceptionDuringRender.xhtml b/test/servlet30/ajax/src/main/webapp/exceptionDuringRender.xhtml
new file mode 100644
index 0000000..434b27d
--- /dev/null
+++ b/test/servlet30/ajax/src/main/webapp/exceptionDuringRender.xhtml
@@ -0,0 +1,83 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+<f:view contentType="text/html"/>
+<h:head>
+    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
+    <title>Exception During Render</title>
+</h:head>
+<h:body>
+
+    <p><span id="exceptionDuringRender"/> </p>
+
+    <script type="text/javascript">
+        
+
+    var handleError = function handleError(data) {
+        var errorMessageString = "Error from " + data.source.id;
+        var span = document.getElementById("exceptionDuringRender");
+        span.innerHTML = errorMessageString;
+    }
+
+    jsf.ajax.addOnError(handleError);
+
+        
+        
+    </script>
+    
+    <h:form prependId="false">
+        
+        <h:outputText id="willThrowException" value="#{bean.throwExceptionOnAjax}" />
+        <h:commandButton id="submit" value="submit">
+            <f:ajax execute="@form" render=":willThrowException" />
+        </h:commandButton>
+        
+    </h:form>
+
+</h:body>
+</html>
diff --git a/test/servlet30/ajax/src/main/webapp/index.xhtml b/test/servlet30/ajax/src/main/webapp/index.xhtml
new file mode 100644
index 0000000..57284ad
--- /dev/null
+++ b/test/servlet30/ajax/src/main/webapp/index.xhtml
@@ -0,0 +1,13 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title>Ajax tests</title>
+    </h:head>
+    <h:body>
+        <a href="#{facesContext.externalContext.requestContextPath}/faces/legendWithoutId.xhtml">Legend without id (IE11)</a>
+    </h:body>
+</html>
diff --git a/test/servlet30/ajax/src/main/webapp/insertElement.xhtml b/test/servlet30/ajax/src/main/webapp/insertElement.xhtml
new file mode 100644
index 0000000..cea1ad3
--- /dev/null
+++ b/test/servlet30/ajax/src/main/webapp/insertElement.xhtml
@@ -0,0 +1,68 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+<f:view contentType="text/html"/>
+<h:head>
+    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
+    <title>Ajax</title>
+</h:head>
+<h:body>
+    <h:form id="form1" prependId="false">
+       <h:commandButton id="beforeButton" value="Insert Before" action="#{insertBean.insertBefore}">
+          <f:ajax execute="@this" render="alpha"/>
+       </h:commandButton>
+       <br/>
+       <h:commandButton id="afterButton" value="Insert After" action="#{insertBean.insertAfter}">
+          <f:ajax execute="@this" render="alpha"/>
+       </h:commandButton>
+       <br/>
+       <br/>
+       <h:outputText id="alpha" value="alpha"/>
+    </h:form>
+</h:body>
+</html>
diff --git a/test/servlet30/ajax/src/main/webapp/issue1284.xhtml b/test/servlet30/ajax/src/main/webapp/issue1284.xhtml
new file mode 100644
index 0000000..6ed3eda
--- /dev/null
+++ b/test/servlet30/ajax/src/main/webapp/issue1284.xhtml
@@ -0,0 +1,70 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+<f:view contentType="text/html"/>
+<h:head>
+    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
+    <title>Ajax</title>
+</h:head>
+<h:body>
+    <h:form id="form1">    <!-- Note that unlike previous examples, prependid='true' -->
+        <h:outputScript name="jsf.js" library="javax.faces" target="head"/>
+        <h:outputScript name="echo1.js" target="head"/>
+
+        Output: <h:outputText id="out1" value="#{ajaxecho.str}"/>
+        <br/>
+        Input: <h:inputText id="in1" value="#{ajaxecho.str}"/>
+        <!-- Increment the counter on the server, and the client -->
+        <br/>
+        <h:commandButton id="button1" value="Echo"
+                         onclick="return buttonpush('form1:out1 form1:in1', 'form1:button1 form1:in1', this, event);"/>
+        <h:messages/>
+    </h:form>
+
+</h:body>
+</html>
diff --git a/test/servlet30/ajax/src/main/webapp/issue1533.xhtml b/test/servlet30/ajax/src/main/webapp/issue1533.xhtml
new file mode 100644
index 0000000..47d86d6
--- /dev/null
+++ b/test/servlet30/ajax/src/main/webapp/issue1533.xhtml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE html PUBLIC 
+    "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    <h:head>
+        <title>Issue #1533</title>
+    </h:head>
+    <h:body>
+        <h:form id="form">
+            <h:selectOneRadio id="vip" layout="pageDirection" label="Vip Lounge Access" value="#{issue1533Bean.vip}">
+                <f:selectItem itemLabel="Yes" itemValue="true" />
+                <f:selectItem itemLabel="No" itemValue="false" />
+                <f:ajax execute="@this" render="@form" listener="#{issue1533Bean.ajaxFired}"/>
+            </h:selectOneRadio>
+            <h:outputText value="#{issue1533Bean.fireState}"/>
+        </h:form>
+    </h:body>
+</html>
diff --git a/test/servlet30/ajax/src/main/webapp/issue1581.xhtml b/test/servlet30/ajax/src/main/webapp/issue1581.xhtml
new file mode 100644
index 0000000..650b11f
--- /dev/null
+++ b/test/servlet30/ajax/src/main/webapp/issue1581.xhtml
@@ -0,0 +1,70 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+xmlns:h="http://java.sun.com/jsf/html"
+xmlns:f="http://java.sun.com/jsf/core"
+xmlns:ui="http://java.sun.com/jsf/facelets">
+<h:head>
+   <title>Facelet Title</title>
+</h:head>
+<h:body>
+   <h:form>
+      My favourite bugs:
+      <table>
+         <ui:repeat value="#{issue1581Bean.bugs}" var="bug">
+            <tr>
+               <td>
+                <h:selectBooleanCheckbox id="checkbox" value="#{bug.uiselected}"
+                    valueChangeListener="#{issue1581Bean.selectionChanged}">
+                    <f:ajax render="@form"/>
+                </h:selectBooleanCheckbox>
+                <h:outputLabel for="checkbox" value="#{bug.text}"/>
+               </td>
+            </tr>
+         </ui:repeat>
+      </table>
+      #{issue1581Bean.bugs}
+   </h:form>
+</h:body>
+</html>
diff --git a/test/servlet30/ajax/src/main/webapp/issue1817.xhtml b/test/servlet30/ajax/src/main/webapp/issue1817.xhtml
new file mode 100644
index 0000000..825579e
--- /dev/null
+++ b/test/servlet30/ajax/src/main/webapp/issue1817.xhtml
@@ -0,0 +1,113 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+	xmlns:ui="http://java.sun.com/jsf/facelets"
+	xmlns:h="http://java.sun.com/jsf/html"
+	xmlns:f="http://java.sun.com/jsf/core">
+
+<h:head>
+</h:head>
+<h:body>
+   <h:form>
+      Triggered item: #{output}
+      <br />
+      <br />
+      Double nested ui:repeat WITH ajax:<br />
+      <ui:repeat id="repeat1" var="item" value="#{issue1817Bean.items}">
+          <h:commandLink value="#{item.label}">
+             <f:setPropertyActionListener target="#{requestScope.output}" value="#{item.label}" />
+             <f:ajax render="@form" />
+          </h:commandLink>
+           
+          <ui:repeat var="subItem" value="#{item.subItems}">
+              <h:commandLink value="#{subItem.label}">
+                 <f:setPropertyActionListener target="#{requestScope.output}" value="#{subItem.label}" />
+                 <f:ajax render="@form" />
+              </h:commandLink>
+               
+          </ui:repeat>
+          <br />
+      </ui:repeat>
+      <br />
+      <br />
+      Double nested ui:repeat WITHOUT ajax:<br />
+      <ui:repeat var="item" value="#{issue1817Bean.items}">
+          <h:commandLink id="force" value="#{item.label}">
+             <f:setPropertyActionListener target="#{requestScope.output}" value="#{item.label}" />
+          </h:commandLink>
+           
+          <ui:repeat var="subItem" value="#{item.subItems}">
+              <h:commandLink id="force2" value="#{subItem.label}">
+                 <f:setPropertyActionListener target="#{requestScope.output}" value="#{subItem.label}" />
+              </h:commandLink>
+               
+          </ui:repeat>
+          <br />
+      </ui:repeat>
+      <br />
+      <br />
+      Double nested h:dataTable WITH ajax:<br />
+      <h:dataTable var="item" value="#{issue1817Bean.items}">
+         <h:column>
+            <h:commandLink id="force3" value="#{item.label}">
+               <f:setPropertyActionListener target="#{requestScope.output}" value="#{item.label}" />
+               <f:ajax render="@form" />
+            </h:commandLink>
+             
+            <h:dataTable var="subItem" value="#{item.subItems}">
+               <h:column>
+                  <h:commandLink id="force4" value="#{subItem.label}">
+                     <f:setPropertyActionListener target="#{requestScope.output}" value="#{subItem.label}" />
+                     <f:ajax render="@form" />
+                  </h:commandLink>
+                   
+               </h:column>
+            </h:dataTable>
+            <br />
+         </h:column>
+      </h:dataTable>
+   </h:form>
+</h:body>
+</html>
diff --git a/test/servlet30/ajax/src/main/webapp/issue1825.xhtml b/test/servlet30/ajax/src/main/webapp/issue1825.xhtml
new file mode 100644
index 0000000..e216eee
--- /dev/null
+++ b/test/servlet30/ajax/src/main/webapp/issue1825.xhtml
@@ -0,0 +1,64 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:issue1825="http://java.sun.com/composite/issue1825">
+    <f:view contentType="text/html">
+        <h:head>
+            <title>Issue 1825</title>
+        </h:head>
+        <h:body>
+            <h:form id="form">
+                <issue1825:issue1825>
+                    <h:commandButton id="button" value="Click me twice to fail">
+                        <f:ajax/>
+                    </h:commandButton>
+                </issue1825:issue1825>
+            </h:form>
+        </h:body>
+    </f:view>
+</html>
diff --git a/test/servlet30/ajax/src/main/webapp/issue1957.xhtml b/test/servlet30/ajax/src/main/webapp/issue1957.xhtml
new file mode 100755
index 0000000..d599263
--- /dev/null
+++ b/test/servlet30/ajax/src/main/webapp/issue1957.xhtml
@@ -0,0 +1,83 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:h="http://java.sun.com/jsf/html">
+
+     <h:head></h:head>
+      
+      <h:body>
+             <script type="text/javascript">
+              var statusUpdate = function statusUpdate(data) {
+                 var statusArea = document.getElementById("statusArea");
+                 var text = statusArea.value;
+                 text = text + "Name: "+data.source.id;
+                 if (data.type === "event") {
+                     text = text +" Event: "+data.status+" ";
+                 }
+                 statusArea.value = text;
+              }
+            </script>
+
+            <h:form id="form">
+            
+                <h:panelGroup id="group">
+                   <f:ajax event="click" onevent="statusUpdate"/>
+                   <h:outputText value="I am in a panel group"/>
+                </h:panelGroup>
+
+                <h:messages/>
+
+            </h:form>
+
+            <p>
+              <h3> Status:</h3>
+              <textarea id="statusArea" cols="40" rows="10" readonly="readonly" />
+            </p>
+
+      </h:body>
+
+</html>
diff --git a/test/servlet30/ajax/src/main/webapp/issue2041-page1.xhtml b/test/servlet30/ajax/src/main/webapp/issue2041-page1.xhtml
new file mode 100644
index 0000000..0d13302
--- /dev/null
+++ b/test/servlet30/ajax/src/main/webapp/issue2041-page1.xhtml
@@ -0,0 +1,13 @@
+<ui:fragment xmlns="http://www.w3.org/1999/xhtml"
+             xmlns:h="http://java.sun.com/jsf/html"
+             xmlns:f="http://java.sun.com/jsf/core"
+             xmlns:ui="http://java.sun.com/jsf/facelets">
+    <p>
+        PAGE 1 BEGIN
+    </p>
+    This is page 1
+    <p>
+        PAGE 1 END
+    </p>
+    
+</ui:fragment>
diff --git a/test/servlet30/ajax/src/main/webapp/issue2041-page2.xhtml b/test/servlet30/ajax/src/main/webapp/issue2041-page2.xhtml
new file mode 100644
index 0000000..f82e7c7
--- /dev/null
+++ b/test/servlet30/ajax/src/main/webapp/issue2041-page2.xhtml
@@ -0,0 +1,19 @@
+<ui:fragment xmlns="http://www.w3.org/1999/xhtml"
+             xmlns:h="http://java.sun.com/jsf/html"
+             xmlns:f="http://java.sun.com/jsf/core"
+             xmlns:ui="http://java.sun.com/jsf/facelets">
+    <p>
+        PAGE 2 BEGIN
+    </p>
+    <h:form>
+        <f:ajax disabled="true" event="click">
+            <h:commandButton value="Button"/>
+        </f:ajax>
+    </h:form>
+    <h:form>
+        <h:commandLink value="Page1" action="#{issue2041Bean.changePage}"/>
+    </h:form>
+    <p>
+        PAGE 2 END
+    </p>
+</ui:fragment>
diff --git a/test/servlet30/ajax/src/main/webapp/issue2041.xhtml b/test/servlet30/ajax/src/main/webapp/issue2041.xhtml
new file mode 100644
index 0000000..842c08f
--- /dev/null
+++ b/test/servlet30/ajax/src/main/webapp/issue2041.xhtml
@@ -0,0 +1,9 @@
+<ui:composition xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      template="/templates/issue2041.xhtml">
+    <ui:define name="panelContent">
+        <ui:include src="#{issue2041Bean.currentPage}" />
+    </ui:define>
+</ui:composition>
diff --git a/test/servlet30/ajax/src/main/webapp/issue2162.xhtml b/test/servlet30/ajax/src/main/webapp/issue2162.xhtml
new file mode 100644
index 0000000..acfc2b6
--- /dev/null
+++ b/test/servlet30/ajax/src/main/webapp/issue2162.xhtml
@@ -0,0 +1,65 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    <f:view contentType="text/html">
+        <f:metadata>
+            <f:event type="preRenderView" listener="#{issue2162Bean.init}"/>
+        </f:metadata>
+        <h:head>
+            <title>Issue 2162</title>
+        </h:head>
+        <h:body>
+            <h:form id="form">
+                <h:commandButton id="submit" value="Submit">
+                    <h:outputText value="#{issue2162Bean.initCalled}"/>
+                    <f:ajax event="click" execute="@form" render="@all"/>
+                </h:commandButton>
+            </h:form>
+        </h:body>
+    </f:view>
+</html>
diff --git a/test/servlet30/ajax/src/main/webapp/issue2179-page1.xhtml b/test/servlet30/ajax/src/main/webapp/issue2179-page1.xhtml
new file mode 100644
index 0000000..2d0eb8f
--- /dev/null
+++ b/test/servlet30/ajax/src/main/webapp/issue2179-page1.xhtml
@@ -0,0 +1,65 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:test="http://testcomponent">
+
+     <h:head></h:head>
+      
+      <h:body>
+
+            <h:form id="form">
+            
+                <test:input1 id="foo"/>
+
+                <h:messages/>
+
+            </h:form>
+
+        </h:body>
+
+</html>
diff --git a/test/servlet30/ajax/src/main/webapp/issue2179-page2.xhtml b/test/servlet30/ajax/src/main/webapp/issue2179-page2.xhtml
new file mode 100644
index 0000000..686a2a6
--- /dev/null
+++ b/test/servlet30/ajax/src/main/webapp/issue2179-page2.xhtml
@@ -0,0 +1,85 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:test="http://testcomponent">
+
+     <h:head></h:head>
+      
+      <h:body>
+             <script type="text/javascript">
+              var statusUpdate = function statusUpdate(data) {
+                 var statusArea = document.getElementById("statusArea");
+                 var text = statusArea.value;
+                 text = text + "Name: "+data.source.id;
+                 if (data.type === "error") {
+                     text = text + " Error: "+data.status+" "+data.errorMessage;
+                 }
+                 statusArea.value = text;
+              }
+            </script>
+
+            <h:form id="form">
+            
+                <test:input2 id="foo"/>
+
+                <h:commandButton id="submit" value="Submit">
+                   <f:ajax execute="foo" render ="@form" onerror="statusUpdate"/>
+                </h:commandButton>
+
+                <h:messages/>
+
+            </h:form>
+
+            <p>
+              <h3> Status:</h3>
+              <textarea id="statusArea" cols="40" rows="10" readonly="readonly" />
+            </p>
+
+      </h:body>
+
+</html>
diff --git a/test/servlet30/ajax/src/main/webapp/issue2574.xhtml b/test/servlet30/ajax/src/main/webapp/issue2574.xhtml
new file mode 100644
index 0000000..bb57c4f
--- /dev/null
+++ b/test/servlet30/ajax/src/main/webapp/issue2574.xhtml
@@ -0,0 +1,74 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:h="http://java.sun.com/jsf/html">
+
+      <h:head></h:head>
+      
+      <h:body>
+
+            <h:form id="form">
+            
+                <p id="output"></p>
+
+                <script id="template" type="text/template">
+                    This script must not be eval'ed on ajax response.
+                </script>
+
+                <h:commandButton id="refresh" value="Ajax Refresh">
+                    <f:ajax render="@form" />
+                </h:commandButton>
+                
+                <script type="text/javascript">
+                    document.getElementById("output").innerHTML = document.getElementById("template").innerHTML;
+                </script>
+
+            </h:form>
+
+        </h:body>
+
+</html>
diff --git a/test/servlet30/ajax/src/main/webapp/issue2578.xhtml b/test/servlet30/ajax/src/main/webapp/issue2578.xhtml
new file mode 100755
index 0000000..b5e656b
--- /dev/null
+++ b/test/servlet30/ajax/src/main/webapp/issue2578.xhtml
@@ -0,0 +1,68 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:h="http://java.sun.com/jsf/html"
+      >
+    <h:head>
+        <title>JAVASERVERFACES-2578</title>
+    </h:head>
+    <h:body>
+        <h:form id="form">
+            <h:panelGrid columns="2">
+                <h:outputText value="Ajax Input:"/>
+                <h:inputText id="input" value="#{issue2578Bean.text2}">
+                    <f:ajax  execute="@this" render="@this" event="change"/>
+                </h:inputText>    
+            </h:panelGrid>            
+            <h:panelGroup>
+                <h:commandButton id="clear" value="Clear" actionListener="#{issue2578Bean.altClear}"
+                                 immediate="true">
+                    <f:ajax execute="@this" render="input"/>
+                </h:commandButton>
+            </h:panelGroup>
+        </h:form>
+    </h:body>
+</html>
diff --git a/test/servlet30/ajax/src/main/webapp/issue2636.xhtml b/test/servlet30/ajax/src/main/webapp/issue2636.xhtml
new file mode 100644
index 0000000..8f36b4b
--- /dev/null
+++ b/test/servlet30/ajax/src/main/webapp/issue2636.xhtml
@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<h:html xmlns="http://www.w3.org/1999/xhtml" 
+	xmlns:f="http://java.sun.com/jsf/core" 
+	xmlns:h="http://java.sun.com/jsf/html"
+	xmlns:ui="http://java.sun.com/jsf/facelets">
+
+	<h:head>
+	</h:head>
+	
+	<h:body>
+
+           <h:form id="topform">
+		
+              <ui:repeat value="#{issue2636Bean.values}" var="val">
+                  <h:commandLink action="#{issue2636Bean.linkAction1()}" value="#{val}">
+                     <f:ajax render=":topform:content :topform:out" />
+                  </h:commandLink>
+              </ui:repeat>
+		
+              <h:panelGroup id="content" layout="block">
+                 <ui:repeat value="#{issue2636Bean.values}" var="val">
+                     <h:commandLink action="#{issue2636Bean.linkAction2()}" value="#{val}">
+                        <f:ajax render=":topform:content :topform:out" />
+                     </h:commandLink>
+                 </ui:repeat>
+              </h:panelGroup>
+
+              <br/>
+
+              <h:outputText id="out" value="#{issue2636Bean.actionText}"/>
+
+           </h:form>
+	
+	</h:body>
+
+</h:html>
diff --git a/test/servlet30/ajax/src/main/webapp/issue2648-1.xhtml b/test/servlet30/ajax/src/main/webapp/issue2648-1.xhtml
new file mode 100644
index 0000000..25b15a6
--- /dev/null
+++ b/test/servlet30/ajax/src/main/webapp/issue2648-1.xhtml
@@ -0,0 +1,54 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    <h3>Redirect Page 1</h3>
+    <h:form>
+       IllegalStateException: <h:outputText value="#{sessionScope['IllegalStateException']}" /> 
+    </h:form>
+
+</html>
diff --git a/test/servlet30/ajax/src/main/webapp/issue2648-2.xhtml b/test/servlet30/ajax/src/main/webapp/issue2648-2.xhtml
new file mode 100644
index 0000000..0602da3
--- /dev/null
+++ b/test/servlet30/ajax/src/main/webapp/issue2648-2.xhtml
@@ -0,0 +1,50 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    <h3>Redirect Page 2</h3>
+</html>
diff --git a/test/servlet30/ajax/src/main/webapp/issue2648.xhtml b/test/servlet30/ajax/src/main/webapp/issue2648.xhtml
new file mode 100644
index 0000000..0cd5a8d
--- /dev/null
+++ b/test/servlet30/ajax/src/main/webapp/issue2648.xhtml
@@ -0,0 +1,62 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    <h:head>
+        <title>Issue #2648</title>
+    </h:head>
+    <h:body>
+        <h:form id="form">
+            <h:commandButton id="button" value="ajax submit">
+                <f:ajax execute="@this" render="@form" listener="#{issue2648Bean.processAjax}"/>
+            </h:commandButton>
+            <br/>
+            <br/>
+            IllegalStateException: <h:outputText value="#{sessionScope['IllegalStateException']}" />
+        </h:form>
+    </h:body>
+</html>
diff --git a/test/servlet30/ajax/src/main/webapp/issue2666.xhtml b/test/servlet30/ajax/src/main/webapp/issue2666.xhtml
new file mode 100644
index 0000000..4fcf917
--- /dev/null
+++ b/test/servlet30/ajax/src/main/webapp/issue2666.xhtml
@@ -0,0 +1,76 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:h="http://java.sun.com/jsf/html">
+
+      <h:head></h:head>
+      
+      <h:body>
+
+            <h:form id="form">
+            
+                <p id="output"></p>
+
+                <h:commandButton id="submit" value="Submit">
+                    <f:ajax render="out" listener="#{issue2666Bean.processAjax}"/>
+                </h:commandButton>
+
+                <br/>
+                <br/>
+
+                <input type="button" value="button" />
+
+                <br/>
+                <br/>
+
+                <h:outputText id="out" value="#{issue2666Bean.msg}"/> 
+
+            </h:form>
+
+        </h:body>
+
+</html>
diff --git a/test/servlet30/ajax/src/main/webapp/issue2674.xhtml b/test/servlet30/ajax/src/main/webapp/issue2674.xhtml
new file mode 100644
index 0000000..0d5e05c
--- /dev/null
+++ b/test/servlet30/ajax/src/main/webapp/issue2674.xhtml
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC
+    "-//W3C//DTD XHTML 1.0 Transitional//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    <h:head>
+        <title>Issue #2674</title>
+    </h:head>
+    <h:body>
+        <h:outputScript library="javax.faces" name="jsf.js" target="head"/>
+        <h:form id="form">
+           <h:inputText id="input1" binding="#{issue2674Bean.text}" value="hi"/>
+        </h:form>
+    </h:body>
+</html>
diff --git a/test/servlet30/ajax/src/main/webapp/issue2682.xhtml b/test/servlet30/ajax/src/main/webapp/issue2682.xhtml
new file mode 100644
index 0000000..f35b678
--- /dev/null
+++ b/test/servlet30/ajax/src/main/webapp/issue2682.xhtml
@@ -0,0 +1,65 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    <h:head>
+        <title>Issue #2682</title>
+    </h:head>
+    <h:body>
+        <h:form id="form" prependId="false">
+            <h:selectBooleanCheckbox id="cbox" value="#{issue2682Bean.chkStatus}" >
+                <f:ajax execute="@this" render="@this backedBeanValue" />
+            </h:selectBooleanCheckbox>
+            <br/>
+            <br/>
+            <h:commandButton id="button" value="Full Refresh" />
+            <br/>
+            <br/>
+            Check Box Status: <h:outputText id="backedBeanValue" value="#{issue2682Bean.chkStatus}" />
+        </h:form>
+    </h:body>
+</html>
diff --git a/test/servlet30/ajax/src/main/webapp/issue2754.xhtml b/test/servlet30/ajax/src/main/webapp/issue2754.xhtml
new file mode 100644
index 0000000..a4775c1
--- /dev/null
+++ b/test/servlet30/ajax/src/main/webapp/issue2754.xhtml
@@ -0,0 +1,60 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:h="http://java.sun.com/jsf/html">
+<h:head>
+</h:head>
+
+    <h:form id="myform" prependId="false">
+       <h:inputText id="input" required="true"/>
+       <br/>
+       
+       <h:commandButton id="button" value="submit">
+          <f:ajax execute="@all" render="@all"/>
+       </h:commandButton>
+       
+       <p><h:messages id="messages" /></p>
+    </h:form>
+
+</html>
diff --git a/test/servlet30/ajax/src/main/webapp/issue2767.xhtml b/test/servlet30/ajax/src/main/webapp/issue2767.xhtml
new file mode 100644
index 0000000..d573a0b
--- /dev/null
+++ b/test/servlet30/ajax/src/main/webapp/issue2767.xhtml
@@ -0,0 +1,65 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.  
+
+--> 
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://xmlns.jcp.org/jsf/html"
+      xmlns:f="http://xmlns.jcp.org/jsf/core">
+<h:head>
+</h:head>
+<h:body>
+	<h:form prependId="false">
+           <h:commandLink id="testLink" value="testlink" actionListener="#{bean.processLink}">
+              <f:ajax execute="@form" render="out" />
+           </h:commandLink>
+
+           <h:selectOneRadio id="testRadio" value="#{bean.radioValue}" valueChangeListener="#{bean.processRadio}">
+              <f:selectItems value="#{bean.items}" />
+              <f:ajax execute="@this" render="out" />
+           </h:selectOneRadio>
+
+           <br/>
+           <h:outputText id="out" value="#{bean.status}"/>
+	</h:form>
+</h:body>
+</html>
diff --git a/test/servlet30/ajax/src/main/webapp/issue2906.xhtml b/test/servlet30/ajax/src/main/webapp/issue2906.xhtml
new file mode 100644
index 0000000..f9227f8
--- /dev/null
+++ b/test/servlet30/ajax/src/main/webapp/issue2906.xhtml
@@ -0,0 +1,70 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3c.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:c="http://java.sun.com/jsp/jstl/core" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core" xmlns:ui="http://java.sun.com/jsf/facelets">
+<f:view >
+    <h:head>
+       <meta http-equiv="cache-control" content="no-cache" />
+       <meta http-equiv="pragma" content="no-cache" />
+       <meta http-equiv="expires" content="0" />
+       <meta content="text/html; charset=UTF-8" http-equiv="content-type" />
+    </h:head>
+
+    <h:body onload="">
+    
+       <h:form>
+          <h:commandButton  action="#{issue2906Bean.chooseView(1)}" value="Back to 1" />
+       </h:form>
+    
+       <h:form id="productBrowserForm">
+          <ui:repeat value="#{issue2906Bean.currentView}" var="entry" varStatus="status">
+              <h:commandLink action="#{issue2906Bean.chooseView(entry)}" value="#{entry}" >
+                 <f:ajax execute="@form" render="@form" />
+              </h:commandLink>
+              
+          </ui:repeat>
+       
+       </h:form>
+    </h:body>
+</f:view>
+</html>
diff --git a/test/servlet30/ajax/src/main/webapp/issue2927.xhtml b/test/servlet30/ajax/src/main/webapp/issue2927.xhtml
new file mode 100644
index 0000000..a3dec0c
--- /dev/null
+++ b/test/servlet30/ajax/src/main/webapp/issue2927.xhtml
@@ -0,0 +1,89 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!--
+****** NOTE: There is NO HtmlUnit test for this page (issue) because HtmlUnit cannot
+      handle programmatic creation of IFrame onload callback (done in JSF) 
+      for IE. IFrame is still used because the form is multipart/form-data.
+      This tests standard ajax in conjuction with that form enc type.
+******
+-->
+
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"
+	xmlns:h="http://xmlns.jcp.org/jsf/html"
+	xmlns:f="http://xmlns.jcp.org/jsf/core"
+	xmlns:ui="http://xmlns.jcp.org/jsf/facelets">
+<h:head>
+</h:head>
+<h:body>
+   <script type="text/javascript">
+      var statusUpdate = function statusUpdate(data) {
+          var statusArea = document.getElementById("statusArea");
+          var text = statusArea.value;
+          text = text + "Name: "+data.source.id;
+          if (data.type === "event") {
+              text = text +" Event: "+data.status+" ";
+          }
+          statusArea.value = text;
+      }
+   </script>
+
+   <h:form id="testform" enctype="multipart/form-data">
+      <br/>
+      <br/>
+      Color: #{bean.radioValue}
+      <br/>
+      <br/>
+      <h:commandButton id="button" value="Submit" >
+         <f:ajax execute="@this" render="@form" immediate="true" listener="#{bean.processIt}"
+            onerror="statusUpdate" onevent="statusUpdate"/>
+      </h:commandButton>
+   </h:form>
+
+   <p>
+   <h3> Status:</h3>
+   <textarea id="statusArea" cols="40" rows="10" readonly="readonly" />
+   </p>
+
+</h:body>
+</html>
diff --git a/test/servlet30/ajax/src/main/webapp/issue2978.xhtml b/test/servlet30/ajax/src/main/webapp/issue2978.xhtml
new file mode 100644
index 0000000..2d0cdfb
--- /dev/null
+++ b/test/servlet30/ajax/src/main/webapp/issue2978.xhtml
@@ -0,0 +1,150 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!--
+****** NOTE: There is NO HtmlUnit test for this page (issue) because HtmlUnit cannot
+      handle programmatic creation of IFrame onload callback (done in JSF)
+      for IE. IFrame is still used because the form is multipart/form-data.
+      This tests standard ajax in conjuction with that form enc type.
+******
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+<f:view contentType="text/html"/>
+<h:head>
+    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
+    <title>Ajax</title>
+</h:head>
+<h:body>
+   <!-- Displays Form Elements Through Lifecycle Of Ajax Request -->
+
+   <script type="text/javascript">
+      var statusUpdate = function statusUpdate(data) {
+          var statusArea = document.getElementById("statusArea");
+          var text = statusArea.value;
+          if (data.type === "event") {
+              if (data.status === "begin") {
+                  statusArea.value = "";
+                  text = statusArea.value;
+              }
+              text = text +" Event: "+data.status+" ";
+              statusArea.value = text;
+              if (data.status === "begin" || data.status === "complete" ||
+                  data.status === "success") {
+                  displayFormElements();
+              }
+          }
+      }
+      var displayFormElements = function displayFormElements() {
+           var statusArea = document.getElementById("statusArea");
+           var text = statusArea.value;
+           var form = document.forms[0];
+           var elements = form.childNodes;
+           var i = 0;
+           while(true) {
+               if (i == elements.length) {
+                   break;
+               }
+               if (typeof elements[i].name === "undefined") {
+                   i++;
+                   continue;
+               }
+               text = text + elements[i].name+" ";
+               statusArea.value = text;
+               i++;
+           }
+      }
+      var beforeAjax = function beforeAjax() {
+          var statusArea = document.getElementById("statusArea");
+          statusArea.value = "";
+          displayFormElements();
+      }
+      var afterAjax = function beforeAjax() {
+          var statusArea = document.getElementById("statusArea");
+          statusArea.value = "";
+          displayFormElements();
+      }
+
+   </script>
+    <h:form id="form1" enctype="multipart/form-data"> 
+        <h:outputScript name="jsf.js" library="javax.faces" target="head"/>
+        <h:outputScript name="echo1.js" target="head"/>
+        <b>This page displays form elements before, during an after an Ajax request.</b><br/>
+        <b>The Status box displays the form elements after each button push.</b>
+        <ul>
+        <li>Press the <i>Before Ajax</i> button.</li>
+        <li>Enter a value in the input field and press the <i>Ajax</i>button to cause an Ajax Request.<br/>
+            You will see form elements through the lifecycle of an Ajax request.</li>
+        <li>Press the <i>After Ajax</i> button.</li>
+        </ul>
+         
+        Output: <h:outputText id="out1" value="#{ajaxecho.str}"/>
+        <br/>
+        Input: <h:inputText id="in1" value="#{ajaxecho.str}"/>
+        <!-- Increment the counter on the server, and the client -->
+        <br/>
+        <br/>
+        <h:commandButton id="button1" value="Before Ajax" onclick="beforeAjax(); return false;"/>
+        <br/>
+        <br/>
+        <h:commandButton id="button2" value="Ajax">
+           <f:ajax render="@form" execute="@this form1:in1" onevent="statusUpdate"/>
+        </h:commandButton>
+        <br/>
+        <br/>
+        <h:commandButton id="button3" value="After Ajax" onclick="afterAjax(); return false;"/>
+        <br/>
+        <h:messages/>
+    </h:form>
+
+   <p>
+   <h3> Status:</h3>
+   <textarea id="statusArea" cols="40" rows="10" readonly="readonly" />
+   </p>
+
+</h:body>
+</html>
diff --git a/test/servlet30/ajax/src/main/webapp/issue3020Negative.xhtml b/test/servlet30/ajax/src/main/webapp/issue3020Negative.xhtml
new file mode 100755
index 0000000..0c1dc96
--- /dev/null
+++ b/test/servlet30/ajax/src/main/webapp/issue3020Negative.xhtml
@@ -0,0 +1,70 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+
+<h:head>
+    <title>Issue3020</title>
+</h:head>
+<h:body>
+    <h:outputScript library="javax.faces" name="jsf.js"/>
+
+    <h:form prependId="false" id="form">
+        <h:inputText id="input" value="#{issue3020Bean.product}">
+            <f:ajax event="keyup" render="result" delay="NaN"/>
+        </h:inputText>
+        <br/>
+        <h:panelGroup id="result">
+            <ui:repeat value="#{issue3020Bean.matchingProducts}" var="p">
+                #{p}<br/>
+            </ui:repeat>
+        </h:panelGroup>
+    </h:form>
+
+</h:body>     
+</html>
diff --git a/test/servlet30/ajax/src/main/webapp/issue3020Positive.xhtml b/test/servlet30/ajax/src/main/webapp/issue3020Positive.xhtml
new file mode 100755
index 0000000..eb65898
--- /dev/null
+++ b/test/servlet30/ajax/src/main/webapp/issue3020Positive.xhtml
@@ -0,0 +1,70 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+
+<h:head>
+    <title>Issue3020</title>
+</h:head>
+<h:body>
+    <h:outputScript library="javax.faces" name="jsf.js"/>
+
+    <h:form prependId="false" id="form">
+        <h:inputText id="input" value="#{issue3020Bean.product}">
+            <f:ajax event="keyup" render="result" delay="300"/>
+        </h:inputText>
+        <br/>
+        <h:panelGroup id="result">
+            <ui:repeat value="#{issue3020Bean.matchingProducts}" var="p">
+                #{p}<br/>
+            </ui:repeat>
+        </h:panelGroup>
+    </h:form>
+
+</h:body>     
+</html>
diff --git a/test/servlet30/ajax/src/main/webapp/issue939.xhtml b/test/servlet30/ajax/src/main/webapp/issue939.xhtml
new file mode 100644
index 0000000..6ed3eda
--- /dev/null
+++ b/test/servlet30/ajax/src/main/webapp/issue939.xhtml
@@ -0,0 +1,70 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+<f:view contentType="text/html"/>
+<h:head>
+    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
+    <title>Ajax</title>
+</h:head>
+<h:body>
+    <h:form id="form1">    <!-- Note that unlike previous examples, prependid='true' -->
+        <h:outputScript name="jsf.js" library="javax.faces" target="head"/>
+        <h:outputScript name="echo1.js" target="head"/>
+
+        Output: <h:outputText id="out1" value="#{ajaxecho.str}"/>
+        <br/>
+        Input: <h:inputText id="in1" value="#{ajaxecho.str}"/>
+        <!-- Increment the counter on the server, and the client -->
+        <br/>
+        <h:commandButton id="button1" value="Echo"
+                         onclick="return buttonpush('form1:out1 form1:in1', 'form1:button1 form1:in1', this, event);"/>
+        <h:messages/>
+    </h:form>
+
+</h:body>
+</html>
diff --git a/test/servlet30/ajax/src/main/webapp/legendWithoutId.xhtml b/test/servlet30/ajax/src/main/webapp/legendWithoutId.xhtml
new file mode 100644
index 0000000..e046d45
--- /dev/null
+++ b/test/servlet30/ajax/src/main/webapp/legendWithoutId.xhtml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xml:lang="en" lang="en">
+    <h:head>
+        <title>Legend without id</title>
+    </h:head>
+    <h:body>
+        <h:form id="form">
+            <fieldset>
+                <legend>Sample</legend>
+                <h:inputText id="input" value="#{legendWithoutIdBean.value}"></h:inputText>
+                <h:commandButton id="submit" value="Click">
+                    <f:ajax execute="form:input" />
+                </h:commandButton>
+            </fieldset>
+        </h:form>
+    </h:body>
+</html>
diff --git a/test/servlet30/ajax/src/main/webapp/multiPart1.xhtml b/test/servlet30/ajax/src/main/webapp/multiPart1.xhtml
new file mode 100644
index 0000000..d912982
--- /dev/null
+++ b/test/servlet30/ajax/src/main/webapp/multiPart1.xhtml
@@ -0,0 +1,17 @@
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:f="http://xmlns.jcp.org/jsf/core"
+      xmlns:h="http://xmlns.jcp.org/jsf/html">
+    <h:head>
+        <title></title>
+    </h:head>
+    <h:body>
+        <h:form id="form" enctype="multipart/form-data">
+            <h:outputText id="count" value="#{multiPart1Bean.count}"/>
+            <h:commandLink id="submit" value="Submit" actionListener="#{multiPart1Bean.delay()}">
+                <f:ajax execute="@form" render="@form"/>
+            </h:commandLink>
+        </h:form>
+    </h:body>
+</html>
diff --git a/test/servlet30/ajax/src/main/webapp/multiPart1b.xhtml b/test/servlet30/ajax/src/main/webapp/multiPart1b.xhtml
new file mode 100644
index 0000000..5f4433f
--- /dev/null
+++ b/test/servlet30/ajax/src/main/webapp/multiPart1b.xhtml
@@ -0,0 +1,11 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://xmlns.jcp.org/jsf/html">
+    <h:head>
+        <title>Facelet Title</title>
+    </h:head>
+    <h:body>
+        Count is #{facesContext.externalContext.applicationMap.get('multiPart1Count')}
+    </h:body>
+</html>
diff --git a/test/servlet30/ajax/src/main/webapp/resources/ajaxRedirect/ajaxRedirect.js b/test/servlet30/ajax/src/main/webapp/resources/ajaxRedirect/ajaxRedirect.js
new file mode 100644
index 0000000..38502a8
--- /dev/null
+++ b/test/servlet30/ajax/src/main/webapp/resources/ajaxRedirect/ajaxRedirect.js
@@ -0,0 +1,63 @@
+/* 
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ 
+ */
+
+var ajaxEvent = function ajaxEvent(data) {
+    if (data.status == "complete") {
+        var responseText = data.responseText;
+        var re = new RegExp('<', 'g');
+        responseText = responseText.replace(re, "<");
+        re = new RegExp('>', 'g');
+        responseText = responseText.replace(re, ">");
+        re = new RegExp('\'', 'g');
+        responseText = responseText.replace(re, """);
+        
+        var partialResponseElement = data.responseXML.getElementsByTagName('partial-response')[0];
+        var redirectElement = partialResponseElement.getElementsByTagName('redirect')[0];
+        partialResponseElement.removeChild(redirectElement);
+        
+        var changesElement = document.createElement('changes');
+        partialResponseElement.appendChild(changesElement);
+        
+        var responseTextElementDiv = document.getElementById('responseText');
+        responseTextElementDiv.innerHTML = responseText;
+        
+    }
+};
diff --git a/test/servlet30/ajax/src/main/webapp/resources/composite/cc.xhtml b/test/servlet30/ajax/src/main/webapp/resources/composite/cc.xhtml
new file mode 100644
index 0000000..a909941
--- /dev/null
+++ b/test/servlet30/ajax/src/main/webapp/resources/composite/cc.xhtml
@@ -0,0 +1,59 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+xmlns:h="http://java.sun.com/jsf/html"
+xmlns:f="http://java.sun.com/jsf/core"
+xmlns:composite="http://java.sun.com/jsf/composite">
+
+    <composite:interface>
+        <composite:attribute name="val" />
+    </composite:interface>
+
+    <composite:implementation>
+        <h:outputText value="#{cc.attrs.val}"/>
+    </composite:implementation>
+
+</html>
diff --git a/test/servlet30/ajax/src/main/webapp/resources/composite/ccAttrRequired.xhtml b/test/servlet30/ajax/src/main/webapp/resources/composite/ccAttrRequired.xhtml
new file mode 100644
index 0000000..d6f4e49
--- /dev/null
+++ b/test/servlet30/ajax/src/main/webapp/resources/composite/ccAttrRequired.xhtml
@@ -0,0 +1,59 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+xmlns:h="http://java.sun.com/jsf/html"
+xmlns:f="http://java.sun.com/jsf/core"
+xmlns:composite="http://java.sun.com/jsf/composite">
+
+    <composite:interface>
+        <composite:attribute name="val" required="true" />
+    </composite:interface>
+
+    <composite:implementation>
+        <h:outputText value="#{cc.attrs.val}"/>
+    </composite:implementation>
+
+</html>
diff --git a/test/servlet30/ajax/src/main/webapp/resources/composite/compositeControl.xhtml b/test/servlet30/ajax/src/main/webapp/resources/composite/compositeControl.xhtml
new file mode 100644
index 0000000..57bbbd7
--- /dev/null
+++ b/test/servlet30/ajax/src/main/webapp/resources/composite/compositeControl.xhtml
@@ -0,0 +1,21 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+          "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+	xmlns:h="http://java.sun.com/jsf/html"
+	xmlns:f="http://java.sun.com/jsf/core"
+	xmlns:ui="http://java.sun.com/jsf/facelets"
+	xmlns:composite="http://java.sun.com/jsf/composite">
+
+<composite:interface>
+	<composite:facet name="content" required="false">
+	</composite:facet>
+	
+</composite:interface>
+
+<composite:implementation>
+	<composite:renderFacet
+						name="content">
+					</composite:renderFacet>
+</composite:implementation>
+
+</html>
diff --git a/test/servlet30/ajax/src/main/webapp/resources/divInComposite/component.xhtml b/test/servlet30/ajax/src/main/webapp/resources/divInComposite/component.xhtml
new file mode 100644
index 0000000..64b7064
--- /dev/null
+++ b/test/servlet30/ajax/src/main/webapp/resources/divInComposite/component.xhtml
@@ -0,0 +1,15 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:composite="http://java.sun.com/jsf/composite">
+    <composite:interface>
+    </composite:interface>
+    <composite:implementation>
+        <div>
+            <composite:insertChildren/>
+        </div>
+    </composite:implementation>
+</html>
diff --git a/test/servlet30/ajax/src/main/webapp/resources/echo1.js b/test/servlet30/ajax/src/main/webapp/resources/echo1.js
new file mode 100644
index 0000000..4ada89c
--- /dev/null
+++ b/test/servlet30/ajax/src/main/webapp/resources/echo1.js
@@ -0,0 +1,61 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+// Javascript for ajaxEcho test
+
+function buttonpush(target, exec, element, event) {
+    try {
+        jsf.ajax.request(element, event, {execute: exec, render: target});
+    } catch (ex) {
+        // Handle errors here
+        alert(ex);
+    }
+    return false;
+} 
+
+function resetpush(element, event) {
+    try {
+        jsf.ajax.request(element, event, {execute: element.id});
+    } catch (ex) {
+        // Handle errors here
+        alert(ex);
+    }
+    return false;
+}
diff --git a/test/servlet30/ajax/src/main/webapp/resources/issue1825/issue1825.xhtml b/test/servlet30/ajax/src/main/webapp/resources/issue1825/issue1825.xhtml
new file mode 100644
index 0000000..fa5645f
--- /dev/null
+++ b/test/servlet30/ajax/src/main/webapp/resources/issue1825/issue1825.xhtml
@@ -0,0 +1,55 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html
+    xmlns="http://www.w3.org/1999/xhtml"
+    xmlns:cc="http://java.sun.com/jsf/composite">
+
+    <cc:interface>
+    </cc:interface>
+    <cc:implementation>
+        <cc:insertChildren/>
+    </cc:implementation>
+</html>
diff --git a/test/servlet30/ajax/src/main/webapp/script.xhtml b/test/servlet30/ajax/src/main/webapp/script.xhtml
new file mode 100644
index 0000000..0ba98e0
--- /dev/null
+++ b/test/servlet30/ajax/src/main/webapp/script.xhtml
@@ -0,0 +1,77 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+<f:view contentType="text/html"/>
+<h:head>
+    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
+    <title>Ajax</title>
+</h:head>
+<h:body>
+
+<script>
+/**
+
+  *    Does something.
+    */
+    var span = document.createElement("span"); 
+    spanid = "span1";
+    span.appendChild(document.createTextNode("SCRIPT EXECUTED!"));
+    document.body.appendChild(span);
+</script>
+
+    <h:form id="form1">    <!-- Note that unlike previous examples, prependid='true' -->
+
+        <h:commandButton id="button1" value="Submit">
+           <f:ajax execute="@this" render="@all"/>
+        </h:commandButton>
+        
+        <h:messages/>
+    </h:form>
+
+</h:body>
+</html>
diff --git a/test/servlet30/ajax/src/main/webapp/scriptQuote.xhtml b/test/servlet30/ajax/src/main/webapp/scriptQuote.xhtml
new file mode 100644
index 0000000..74464a5
--- /dev/null
+++ b/test/servlet30/ajax/src/main/webapp/scriptQuote.xhtml
@@ -0,0 +1,62 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+<f:view contentType="text/html"/>
+<h:head>
+    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
+    <title>Ajax</title>
+</h:head>
+<h:body>
+
+<script>
+    "";
+    "<div></div>";
+</script>
+
+</h:body>
+</html>
diff --git a/test/servlet30/ajax/src/main/webapp/selectBooleanCheckbox.xhtml b/test/servlet30/ajax/src/main/webapp/selectBooleanCheckbox.xhtml
new file mode 100644
index 0000000..523aa34
--- /dev/null
+++ b/test/servlet30/ajax/src/main/webapp/selectBooleanCheckbox.xhtml
@@ -0,0 +1,63 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.  
+
+--> 
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+<h:head>
+</h:head>
+<h:body>
+	<h:form prependId="false">
+                <h:selectBooleanCheckbox id="checkbox" value="#{facesContext.externalContext.sessionMap['checkbox']}">
+                        <f:ajax execute="checkbox radio" />
+                </h:selectBooleanCheckbox>
+
+                <h:selectOneRadio id="radio" value="#{facesContext.externalContext.sessionMap['radio']}">
+                        <f:selectItem itemValue="1" itemLabel="1" />
+                        <f:selectItem itemValue="2" itemLabel="2" />
+                        <f:ajax />
+                </h:selectOneRadio>
+	</h:form>
+</h:body>
+</html>
diff --git a/test/servlet30/ajax/src/main/webapp/selectManyCheckboxIdsInComposite.xhtml b/test/servlet30/ajax/src/main/webapp/selectManyCheckboxIdsInComposite.xhtml
new file mode 100644
index 0000000..c03ac30
--- /dev/null
+++ b/test/servlet30/ajax/src/main/webapp/selectManyCheckboxIdsInComposite.xhtml
@@ -0,0 +1,74 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+	xmlns:h="http://java.sun.com/jsf/html"
+	xmlns:f="http://java.sun.com/jsf/core"
+	xmlns:ui="http://java.sun.com/jsf/facelets"
+	xmlns:test="http://java.sun.com/jsf/composite/composite">
+
+<f:view>
+   <h:head>
+   </h:head>
+   <h:body>
+       <h:form id="form">
+           <test:compositeControl id="compId">
+               <f:facet name="content">
+	          Before
+                  <h:selectManyCheckbox id="cbox" value="#{ajaxselect.sarray}">
+                      <f:selectItem itemValue="mcheck-1" itemLabel="1"/>
+                      <f:selectItem itemValue="mcheck-2" itemLabel="2"/>
+                      <f:selectItem itemValue="mcheck-3" itemLabel="3"/>
+                      <f:ajax event="valueChange" execute=":form:compId:cbox" render=":form"/>
+                  </h:selectManyCheckbox>
+                  After
+                  <br/>
+                  <h:outputText id="out" value="Status: #{ajaxselect.string}"/>                  
+               </f:facet>
+          </test:compositeControl>
+       </h:form>
+   </h:body>
+</f:view>
+
+
+</html>
diff --git a/test/servlet30/ajax/src/main/webapp/selectManyCheckboxInComposite.xhtml b/test/servlet30/ajax/src/main/webapp/selectManyCheckboxInComposite.xhtml
new file mode 100644
index 0000000..0f2104e
--- /dev/null
+++ b/test/servlet30/ajax/src/main/webapp/selectManyCheckboxInComposite.xhtml
@@ -0,0 +1,74 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+	xmlns:h="http://java.sun.com/jsf/html"
+	xmlns:f="http://java.sun.com/jsf/core"
+	xmlns:ui="http://java.sun.com/jsf/facelets"
+	xmlns:test="http://java.sun.com/jsf/composite/composite">
+
+<f:view>
+   <h:head>
+   </h:head>
+   <h:body>
+       <h:form>
+           <test:compositeControl>
+               <f:facet name="content">
+	          Before
+                  <h:selectManyCheckbox value="#{ajaxselect.sarray}">
+                      <f:selectItem itemValue="mcheck-1" itemLabel="1"/>
+                      <f:selectItem itemValue="mcheck-2" itemLabel="2"/>
+                      <f:selectItem itemValue="mcheck-3" itemLabel="3"/>
+                      <f:ajax event="valueChange" execute="@this" render="@form" />
+                  </h:selectManyCheckbox>
+                  After
+                  <br/>
+                  <h:outputText id="out" value="Status: #{ajaxselect.string}"/>                  
+               </f:facet>
+          </test:compositeControl>
+       </h:form>
+   </h:body>
+</f:view>
+
+
+</html>
diff --git a/test/servlet30/ajax/src/main/webapp/selectManyCheckboxNoComposite.xhtml b/test/servlet30/ajax/src/main/webapp/selectManyCheckboxNoComposite.xhtml
new file mode 100644
index 0000000..a135139
--- /dev/null
+++ b/test/servlet30/ajax/src/main/webapp/selectManyCheckboxNoComposite.xhtml
@@ -0,0 +1,70 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+	xmlns:h="http://java.sun.com/jsf/html"
+	xmlns:f="http://java.sun.com/jsf/core"
+	xmlns:ui="http://java.sun.com/jsf/facelets"
+	xmlns:test="http://java.sun.com/jsf/composite/composite">
+
+<f:view>
+   <h:head>
+   </h:head>
+   <h:body>
+       <h:form>
+	          Before
+                  <h:selectManyCheckbox value="#{ajaxselect.sarray}">
+                      <f:selectItem itemValue="mcheck-1" itemLabel="1"/>
+                      <f:selectItem itemValue="mcheck-2" itemLabel="2"/>
+                      <f:selectItem itemValue="mcheck-3" itemLabel="3"/>
+                      <f:ajax event="valueChange" execute="@this" render="@form" />
+                  </h:selectManyCheckbox>
+                  After
+                  <br/>
+                  <h:outputText id="out" value="Status: #{ajaxselect.string}"/>                  
+       </h:form>
+   </h:body>
+</f:view>
+
+
+</html>
diff --git a/test/servlet30/ajax/src/main/webapp/selectOneMenuDataTable.xhtml b/test/servlet30/ajax/src/main/webapp/selectOneMenuDataTable.xhtml
new file mode 100644
index 0000000..f0613ac
--- /dev/null
+++ b/test/servlet30/ajax/src/main/webapp/selectOneMenuDataTable.xhtml
@@ -0,0 +1,96 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+<h:head>
+    <title>Ajax Table</title>
+</h:head>
+<body>
+    <h:form id="form" prependId="false">
+
+        <h:dataTable id="table" value="#{ajaxTable.list}" var="item">
+
+            <f:facet name="header">
+                    <h:outputText id="head" value="'dataTable' ajax test" />
+            </f:facet>
+
+            <h:column>
+                    <f:facet name="header">
+                    <h:outputText value="id" />
+                    </f:facet>
+                         <h:outputText id="outId" value="#{item.id}"/>
+            </h:column>
+
+            <h:column>
+                    <f:facet name="header">
+                    <h:outputText value="name"/>
+                    </f:facet>
+                         <h:outputText id="outName" value="#{item.name}"/>
+            </h:column>
+
+            <h:column id="city">
+                    <f:facet name="header">
+                    <h:outputText value="city"/>
+                    </f:facet>
+                         <h:outputText id="inCity" value="#{item.city}"/>
+            </h:column>
+
+        </h:dataTable>
+
+        <br/>
+
+        <h:selectOneMenu id="selectMenu" value="#{ajaxTable.selectedCity}">
+           <f:selectItem itemValue="alpha" itemLabel="alpha"/>
+           <f:selectItem itemValue="beta" itemLabel="beta"/>
+           <f:selectItem itemValue="gamma" itemLabel="gamma"/>
+           <f:ajax event="change" execute="@this" render="form:table"/>
+        </h:selectOneMenu>
+
+    </h:form>
+</body>
+</html>
diff --git a/test/servlet30/ajax/src/main/webapp/selectOneRadioIdsInComposite.xhtml b/test/servlet30/ajax/src/main/webapp/selectOneRadioIdsInComposite.xhtml
new file mode 100644
index 0000000..8d13852
--- /dev/null
+++ b/test/servlet30/ajax/src/main/webapp/selectOneRadioIdsInComposite.xhtml
@@ -0,0 +1,74 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+	xmlns:h="http://java.sun.com/jsf/html"
+	xmlns:f="http://java.sun.com/jsf/core"
+	xmlns:ui="http://java.sun.com/jsf/facelets"
+	xmlns:test="http://java.sun.com/jsf/composite/composite">
+
+<f:view>
+   <h:head>
+   </h:head>
+   <h:body>
+       <h:form id="form">
+           <test:compositeControl id="compId">
+               <f:facet name="content">
+	          Before
+                  <h:selectOneRadio id="radio" value="#{ajaxselect.string}">
+                      <f:selectItem itemValue="radio-1" itemLabel="1"/>
+                      <f:selectItem itemValue="radio-2" itemLabel="2"/>
+                      <f:selectItem itemValue="radio-3" itemLabel="3"/>
+                      <f:ajax event="valueChange" execute=":form:compId:radio" render=":form:compId:out" />
+                  </h:selectOneRadio>
+                  After
+                  <br/>
+                  <h:outputText id="out" value="Status: #{ajaxselect.string}"/>                  
+               </f:facet>
+          </test:compositeControl>
+       </h:form>
+   </h:body>
+</f:view>
+
+
+</html>
diff --git a/test/servlet30/ajax/src/main/webapp/selectOneRadioInComposite.xhtml b/test/servlet30/ajax/src/main/webapp/selectOneRadioInComposite.xhtml
new file mode 100644
index 0000000..44ad7cd
--- /dev/null
+++ b/test/servlet30/ajax/src/main/webapp/selectOneRadioInComposite.xhtml
@@ -0,0 +1,74 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+	xmlns:h="http://java.sun.com/jsf/html"
+	xmlns:f="http://java.sun.com/jsf/core"
+	xmlns:ui="http://java.sun.com/jsf/facelets"
+	xmlns:test="http://java.sun.com/jsf/composite/composite">
+
+<f:view>
+   <h:head>
+   </h:head>
+   <h:body>
+       <h:form>
+           <test:compositeControl>
+               <f:facet name="content">
+	          Before
+                  <h:selectOneRadio value="#{ajaxselect.string}">
+                      <f:selectItem itemValue="radio-1" itemLabel="1"/>
+                      <f:selectItem itemValue="radio-2" itemLabel="2"/>
+                      <f:selectItem itemValue="radio-3" itemLabel="3"/>
+                      <f:ajax event="valueChange" execute="@this" render="@form" />
+                  </h:selectOneRadio>
+                  After
+                  <br/>
+                  <h:outputText id="out" value="Status: #{ajaxselect.string}"/>                  
+               </f:facet>
+          </test:compositeControl>
+       </h:form>
+   </h:body>
+</f:view>
+
+
+</html>
diff --git a/test/servlet30/ajax/src/main/webapp/selectOneRadioNoComposite.xhtml b/test/servlet30/ajax/src/main/webapp/selectOneRadioNoComposite.xhtml
new file mode 100644
index 0000000..7fc5836
--- /dev/null
+++ b/test/servlet30/ajax/src/main/webapp/selectOneRadioNoComposite.xhtml
@@ -0,0 +1,70 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+	xmlns:h="http://java.sun.com/jsf/html"
+	xmlns:f="http://java.sun.com/jsf/core"
+	xmlns:ui="http://java.sun.com/jsf/facelets"
+	xmlns:test="http://java.sun.com/jsf/composite/composite">
+
+<f:view>
+   <h:head>
+   </h:head>
+   <h:body>
+       <h:form>
+	          Before
+                  <h:selectOneRadio value="#{ajaxselect.string}">
+                      <f:selectItem itemValue="radio-1" itemLabel="1"/>
+                      <f:selectItem itemValue="radio-2" itemLabel="2"/>
+                      <f:selectItem itemValue="radio-3" itemLabel="3"/>
+                      <f:ajax event="valueChange" execute="@this" render="@form" />
+                  </h:selectOneRadio>
+                  After
+                  <br/>
+                  <h:outputText id="out" value="Status: #{ajaxselect.string}"/>                  
+       </h:form>
+   </h:body>
+</f:view>
+
+
+</html>
diff --git a/test/servlet30/ajax/src/main/webapp/templates/issue2041.xhtml b/test/servlet30/ajax/src/main/webapp/templates/issue2041.xhtml
new file mode 100644
index 0000000..3d40eae
--- /dev/null
+++ b/test/servlet30/ajax/src/main/webapp/templates/issue2041.xhtml
@@ -0,0 +1,18 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+    <h:head>
+    </h:head>
+    <h:body>
+        <ui:insert name="toolbar">
+            <h:form prependId="false">
+                <h:commandLink id="commandLink" action="#{issue2041Bean.changePage}" value="Change Page" />
+            </h:form>
+        </ui:insert>
+        <ui:insert name="panelContent"/>
+    </h:body>
+</html>
diff --git a/test/servlet30/ajax/src/main/webapp/updateBody.xhtml b/test/servlet30/ajax/src/main/webapp/updateBody.xhtml
new file mode 100644
index 0000000..083e7eb
--- /dev/null
+++ b/test/servlet30/ajax/src/main/webapp/updateBody.xhtml
@@ -0,0 +1,61 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+<f:view contentType="text/html"/>
+<h:head>
+    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
+    <title>Ajax</title>
+</h:head>
+<h:body>
+    <h:form id="form1">
+       <h:commandButton id="bodytag" value="BodyTag" action="#{updateBean.updateBodyTag}">
+          <f:ajax execute="@this" render="@none"/>
+       </h:commandButton>
+    </h:form>
+</h:body>
+</html>
diff --git a/test/servlet30/ajax/src/main/webapp/viewExpired1.xhtml b/test/servlet30/ajax/src/main/webapp/viewExpired1.xhtml
new file mode 100644
index 0000000..41f8723
--- /dev/null
+++ b/test/servlet30/ajax/src/main/webapp/viewExpired1.xhtml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+    <h:head>
+        <title>View Expiration 1</title>
+    </h:head>
+    <h:body>    
+        <h:form id="form">
+            State Saving Method: <h:outputText value="#{viewExpired1Bean.stateSavingMethod}"/>
+            <h:commandButton id="expireSessionSoon" value="Expire Session Soon" actionListener="#{viewExpired1Bean.expireSessionSoon}">
+                <f:ajax render="@all"/>
+            </h:commandButton>
+            <h:commandButton id="submit" value="Submit" actionListener="#{viewExpired1Bean.verifySession}">
+                <f:ajax render="@all"/>
+            </h:commandButton>
+        </h:form>
+        <script>
+            function errorFunc(data) {
+                document.getElementById("errorDiv").appendChild(document.createTextNode(data.errorName));
+            }
+        </script>
+        <script>jsf.ajax.addOnError(errorFunc);</script>
+        <div id="errorDiv">
+            
+        </div>        
+    </h:body>
+</html>
diff --git a/test/servlet30/ajax/src/main/webapp/viewScope.xhtml b/test/servlet30/ajax/src/main/webapp/viewScope.xhtml
new file mode 100644
index 0000000..5c04bdd
--- /dev/null
+++ b/test/servlet30/ajax/src/main/webapp/viewScope.xhtml
@@ -0,0 +1,86 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html>
+<f:view contentType="text/html" xmlns="http://www.w3.org/1999/xhtml"
+	xmlns:h="http://java.sun.com/jsf/html"
+	xmlns:f="http://java.sun.com/jsf/core"
+	xmlns:ui="http://java.sun.com/jsf/facelets"
+	xmlns:composite="http://java.sun.com/jsf/composite/composite">
+
+    <h:head>
+    </h:head>
+
+    <h:body>
+        <h:form id="form" >
+            <h:commandButton id="ajax" value="Make an Ajax request">
+                <f:ajax execute="form" render="form out"/>
+            </h:commandButton>
+
+            <br/>
+            <br/>
+
+            <composite:cc val="#{viewScopeBean.beanVal}"/>
+
+            <br/>
+            <br/>
+
+            <composite:ccAttrRequired val="#{viewScopeBean.beanVal}"/>
+
+            <br/>
+            <br/>
+   
+            <h:outputText id="out" />
+
+            <br/>
+            <br/>
+            
+            <h:commandButton id="reset" value="reset" action="#{viewScopeBean.reset}"/>
+
+        </h:form>
+    </h:body>
+
+</f:view>
+</html>
diff --git a/test/servlet30/ajax/src/main/webapp/viewState1.xhtml b/test/servlet30/ajax/src/main/webapp/viewState1.xhtml
new file mode 100644
index 0000000..d5cb4c9
--- /dev/null
+++ b/test/servlet30/ajax/src/main/webapp/viewState1.xhtml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    <h:head>
+        <title>A Simple JavaServer Faces 2.0 View</title>
+    </h:head>
+    <h:body>
+        <h:form prependId="false">
+            First name: <h:inputText id="firstName" value="#{viewState1Bean.firstName}" /> 
+            Last name: #{viewState1Bean.lastName}
+            <p>
+                <h:commandButton id="submitAjax" value="submitAjax">
+                    <f:ajax execute="@form" render="echoPanel" />
+                </h:commandButton>
+            </p>
+            <p><h:commandButton id="submitNonAjax" value="submitNonAjax" /> </p>
+            <h:panelGroup id="echoPanel">
+                |#{viewState1Bean.firstName}|
+            </h:panelGroup>
+        </h:form>
+    </h:body>
+</html>
diff --git a/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue1284IT.java b/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue1284IT.java
new file mode 100644
index 0000000..5e85556
--- /dev/null
+++ b/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue1284IT.java
@@ -0,0 +1,104 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.ajax;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class Issue1284IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+        webClient.setJavaScriptEnabled(true);
+        webClient.setJavaScriptTimeout(60000);
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testCdataEscape5() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/issue1284.xhtml");
+        assertTrue(page.getHtmlElementById("form1:out1").asText().equals("")); 
+        assertTrue(page.getHtmlElementById("form1:in1").asText().equals("")); 
+
+        HtmlTextInput in1 = (HtmlTextInput) page.getHtmlElementById("form1:in1");
+        in1.type("[");
+
+        // Submit the ajax request
+        HtmlSubmitInput button1 = (HtmlSubmitInput) page.getHtmlElementById("form1:button1");
+        page = (HtmlPage) button1.click();
+        webClient.waitForBackgroundJavaScript(60000);
+
+        // Check that the ajax request succeeds
+        assertTrue(page.getHtmlElementById("form1:out1").asText().equals("[")); 
+    }
+
+    @Test
+    public void testCdataEscape6() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/issue1284.xhtml");
+        assertTrue(page.getHtmlElementById("form1:out1").asText().equals("")); 
+        assertTrue(page.getHtmlElementById("form1:in1").asText().equals("")); 
+
+        HtmlTextInput in1 = (HtmlTextInput) page.getHtmlElementById("form1:in1");
+        in1.type("var a=[");
+
+        // Submit the ajax request
+        HtmlSubmitInput button1 = (HtmlSubmitInput) page.getHtmlElementById("form1:button1");
+        page = (HtmlPage) button1.click();
+        webClient.waitForBackgroundJavaScript(60000);
+
+        // Check that the ajax request succeeds
+        assertTrue(page.getHtmlElementById("form1:out1").asText().equals("var a=[")); 
+    }
+}
diff --git a/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue1533IT.java b/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue1533IT.java
new file mode 100644
index 0000000..e518098
--- /dev/null
+++ b/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue1533IT.java
@@ -0,0 +1,84 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.ajax;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlInput;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+import org.junit.Ignore;
+
+/**
+ * @author Manfred Riem (manfred.riem at oracle.com)
+ */
+public class Issue1533IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+        webClient.setJavaScriptEnabled(true);
+        webClient.setJavaScriptTimeout(60000);
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testIssue1533() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/issue1533.xhtml");
+        HtmlInput input = (HtmlInput) page.getHtmlElementById("form:vip:0");
+        page = input.click();
+        webClient.waitForBackgroundJavaScript(120000);
+        assertTrue(page.asText().indexOf("form:vip-true") != -1);
+        input = (HtmlInput) page.getHtmlElementById("form:vip:1");
+        page = input.click();
+        webClient.waitForBackgroundJavaScript(120000);
+        assertTrue(page.asText().indexOf("form:vip-false") != -1);
+    }
+}
diff --git a/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue1581IT.java b/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue1581IT.java
new file mode 100644
index 0000000..b81a2a0
--- /dev/null
+++ b/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue1581IT.java
@@ -0,0 +1,118 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDLGPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.servlet30.ajax; 
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.DomElement;
+import com.gargoylesoftware.htmlunit.html.DomNodeList;
+import com.gargoylesoftware.htmlunit.html.HtmlCheckBoxInput;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import org.junit.*;
+import static org.junit.Assert.*;
+
+public class Issue1581IT {
+
+    /**
+     * Stores the web URL.
+     */
+    private String webUrl;
+    /**
+     * Stores the web client.
+     */
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+
+    // ------------------------------------------------------------ Test Methods
+
+    /**
+     * This test verifies correct function of SelectManyCheckbox in a Composite
+     * Component over Ajax. 
+     */
+    @Test
+    public void testSelectManyCheckboxInComposite() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl+"faces/issue1581.xhtml");
+        final List<HtmlCheckBoxInput> checkBoxes = new ArrayList();
+        final DomNodeList<DomElement> elements = page.getElementsByTagName("input");
+        for (Iterator<DomElement> it = elements.iterator(); it.hasNext();) {
+            DomElement elem = it.next();
+            if (elem instanceof HtmlCheckBoxInput) {
+                checkBoxes.add((HtmlCheckBoxInput)elem);
+            }
+        }
+        HtmlCheckBoxInput cbox1 = checkBoxes.get(0);
+        HtmlCheckBoxInput cbox2 = checkBoxes.get(1);
+        HtmlCheckBoxInput cbox3 = checkBoxes.get(2);
+        HtmlCheckBoxInput cbox4 = checkBoxes.get(3);
+        // This will ensure JavaScript finishes before evaluating the page.
+        webClient.waitForBackgroundJavaScript(60000);
+        assertTrue(page.asXml().contains("JAVASERVERFACES-1 false, JAVASERVERFACES-2 false, JAVASERVERFACES-3 false, JAVASERVERFACES-4 false")); 
+        page = cbox1.click();
+        webClient.waitForBackgroundJavaScript(60000);
+        assertTrue(page.asXml().contains("JAVASERVERFACES-1 true, JAVASERVERFACES-2 false, JAVASERVERFACES-3 false, JAVASERVERFACES-4 false")); 
+
+        page = cbox2.click();
+        webClient.waitForBackgroundJavaScript(60000);
+        assertTrue(page.asXml().contains("JAVASERVERFACES-1 true, JAVASERVERFACES-2 true, JAVASERVERFACES-3 false, JAVASERVERFACES-4 false")); 
+
+        page = cbox3.click();
+        webClient.waitForBackgroundJavaScript(60000);
+        assertTrue(page.asXml().contains("JAVASERVERFACES-1 true, JAVASERVERFACES-2 true, JAVASERVERFACES-3 true, JAVASERVERFACES-4 false")); 
+
+        page = cbox4.click();
+        webClient.waitForBackgroundJavaScript(60000);
+        assertTrue(page.asXml().contains("JAVASERVERFACES-1 true, JAVASERVERFACES-2 true, JAVASERVERFACES-3 true, JAVASERVERFACES-4 true")); 
+    }
+
+}
diff --git a/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue1781IT.java b/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue1781IT.java
new file mode 100644
index 0000000..46b19c4
--- /dev/null
+++ b/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue1781IT.java
@@ -0,0 +1,85 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.ajax;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.sun.faces.test.junit.JsfTest;
+import com.sun.faces.test.junit.JsfTestRunner;
+import com.sun.faces.test.junit.JsfVersion;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+import org.junit.runner.RunWith;
+
+ at RunWith(JsfTestRunner.class)
+public class Issue1781IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+        webClient.setJavaScriptEnabled(true);
+        webClient.setJavaScriptTimeout(60000);
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    /**
+     * Test attaching a ClientBehaviorHolder to h:body. Note the current 2.1
+     * spec does not allow using f:ajax outside of a form so this will throw
+     * a script error which we are going to ignore.
+     */
+    @JsfTest(JsfVersion.JSF_2_2_1)
+    @Test
+    public void testAjaxToOnBody() throws Exception {
+        webClient.setThrowExceptionOnFailingStatusCode(true);
+        webClient.setThrowExceptionOnScriptError(false);
+        HtmlPage page = webClient.getPage(webUrl + "faces/body.xhtml");
+        assertEquals(200, page.getWebResponse().getStatusCode());
+    }
+}
diff --git a/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue1817IT.java b/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue1817IT.java
new file mode 100644
index 0000000..b227758
--- /dev/null
+++ b/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue1817IT.java
@@ -0,0 +1,81 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDLGPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.ajax;
+
+import com.gargoylesoftware.htmlunit.BrowserVersion;
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.DomElement;
+import com.gargoylesoftware.htmlunit.html.DomNodeList;
+import com.gargoylesoftware.htmlunit.html.HtmlElement;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.*;
+import static org.junit.Assert.*;
+
+public class Issue1817IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient(BrowserVersion.CHROME);
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testAjaxUIRepeat() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/issue1817.xhtml");
+        final DomNodeList<DomElement> elements = page.getElementsByTagName("a");
+        for (DomElement elem : elements) {
+            webClient.waitForBackgroundJavaScript(60000);
+            System.out.println(elem);
+            HtmlElement anchor = page.getHtmlElementById(elem.getId());
+            page = anchor.click();
+            webClient.waitForBackgroundJavaScript(60000);
+            String expectedText = "Triggered item: " + elem.getTextContent();
+            assertTrue(page.asXml().contains(expectedText));
+        }
+    }
+}
diff --git a/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue1825IT.java b/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue1825IT.java
new file mode 100644
index 0000000..4739b8f
--- /dev/null
+++ b/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue1825IT.java
@@ -0,0 +1,81 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.ajax;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+/**
+ * @author Manfred Riem (manfred.riem at oracle.com)
+ */
+public class Issue1825IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+        webClient.setJavaScriptEnabled(true);
+        webClient.setJavaScriptTimeout(60000);
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testIssue1825() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/issue1825.xhtml");
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getHtmlElementById("form:button");
+        page = button.click();
+        assertEquals(200, page.getWebResponse().getStatusCode());
+        button = (HtmlSubmitInput) page.getHtmlElementById("form:button");
+        page = button.click();
+        assertEquals(200, page.getWebResponse().getStatusCode());
+    }
+}
diff --git a/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue1957IT.java b/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue1957IT.java
new file mode 100644
index 0000000..7d25880
--- /dev/null
+++ b/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue1957IT.java
@@ -0,0 +1,94 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.servlet30.ajax;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSpan;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import org.junit.After;
+import org.junit.Before;
+import static org.junit.Assert.*;
+import org.junit.Test;
+
+public class Issue1957IT {
+    
+    /**
+     * Stores the web URL.
+     */
+    private String webUrl;
+    /**
+     * Stores the web client.
+     */
+    private WebClient webClient;
+
+    /**
+     * Setup before testing.
+     */
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+        webClient.setJavaScriptEnabled(true);
+        webClient.setJavaScriptTimeout(60000);
+    }
+
+    /**
+     * Tear down after testing.
+     */
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testPanelGroupAjaxBehavior() throws Exception {
+        webClient.setJavaScriptEnabled(true);
+        webClient.setJavaScriptTimeout(60000);
+        HtmlPage page = webClient.getPage(webUrl + "/faces/issue1957.xhtml");
+        HtmlSpan span = (HtmlSpan)page.getElementById("form:group");
+        page = span.click();
+        webClient.waitForBackgroundJavaScript(60000);
+        assertTrue(page.asXml().contains("form:group Event: begin"));
+        assertTrue(page.asXml().contains("form:group Event: complete"));
+        assertTrue(page.asXml().contains("form:group Event: success"));
+    }
+}
diff --git a/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue2041IT.java b/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue2041IT.java
new file mode 100644
index 0000000..cd492d8
--- /dev/null
+++ b/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue2041IT.java
@@ -0,0 +1,91 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.ajax;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlAnchor;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+import org.junit.Ignore;
+
+/**
+ * @author Manfred Riem (manfred.riem at oracle.com)
+ */
+public class Issue2041IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+        webClient.setJavaScriptEnabled(true);
+        webClient.setJavaScriptTimeout(60000);
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testIssue2041() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "/faces/issue2041.xhtml");
+
+        assertTrue(page.asText().indexOf("PAGE 1 BEGIN") != -1);
+        assertTrue(page.asText().indexOf("PAGE 1 END") != -1);
+
+        HtmlAnchor anchor = (HtmlAnchor) page.getHtmlElementById("commandLink");
+        page = anchor.click();
+
+        assertTrue(page.asText().indexOf("PAGE 2 BEGIN") != -1);
+        assertTrue(page.asText().indexOf("PAGE 2 END") != -1);
+
+        anchor = (HtmlAnchor) page.getHtmlElementById("commandLink");
+        page = anchor.click();
+
+        assertTrue(page.asText().indexOf("PAGE 1 BEGIN") != -1);
+        assertTrue(page.asText().indexOf("PAGE 1 END") != -1);
+    }
+}
diff --git a/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue2162IT.java b/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue2162IT.java
new file mode 100644
index 0000000..b67593a
--- /dev/null
+++ b/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue2162IT.java
@@ -0,0 +1,86 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.ajax;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import com.gargoylesoftware.htmlunit.html.XHtmlPage;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+/**
+ * @author Manfred Riem (manfred.riem at oracle.com)
+ */
+public class Issue2162IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+        webClient.setJavaScriptEnabled(true);
+        webClient.setJavaScriptTimeout(60000);
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testIssue2162() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "/faces/issue2162.xhtml");
+
+        assertTrue(page.asXml().indexOf("Init called\n") != -1);
+
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getHtmlElementById("form:submit");
+        page = button.click();
+ 
+        webClient.waitForBackgroundJavaScriptStartingBefore(60000); 
+        
+        assertTrue(page.asXml().indexOf("Init called\nInit called\n") != -1);
+        assertFalse(page.asXml().indexOf("Init called\nInit called\nInit called") != -1);
+    }
+}
diff --git a/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue2179IT.java b/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue2179IT.java
new file mode 100644
index 0000000..b7dea3b
--- /dev/null
+++ b/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue2179IT.java
@@ -0,0 +1,104 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.servlet30.ajax;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import org.junit.After;
+import org.junit.Before;
+import static org.junit.Assert.*;
+import org.junit.Test;
+
+public class Issue2179IT {
+    
+    /**
+     * Stores the web URL.
+     */
+    private String webUrl;
+    /**
+     * Stores the web client.
+     */
+    private WebClient webClient;
+
+    /**
+     * Setup before testing.
+     */
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+        webClient.setJavaScriptEnabled(true);
+        webClient.setJavaScriptTimeout(60000);
+    }
+
+    /**
+     * Tear down after testing.
+     */
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testEncodeException() throws Exception {
+        webClient.setJavaScriptEnabled(true);
+        webClient.setJavaScriptTimeout(60000);
+        boolean exceptionThrown = false;
+        try {
+            HtmlPage page = webClient.getPage(webUrl + "/faces/issue2179-page1.xhtml");
+        } catch (Exception e) {
+            exceptionThrown = true;
+        }
+        assertTrue(exceptionThrown);
+    }
+
+    @Test
+    public void testDecodeException() throws Exception {
+        webClient.setJavaScriptEnabled(true);
+        webClient.setJavaScriptTimeout(60000);
+        HtmlPage page = webClient.getPage(webUrl + "/faces/issue2179-page2.xhtml");
+        HtmlSubmitInput button = (HtmlSubmitInput)page.getElementById("form:submit");
+        page = button.click();
+        webClient.waitForBackgroundJavaScript(60000);
+        assertTrue(page.asXml().contains("decode: A RuntimeException Has Occurred!"));
+    }
+}
diff --git a/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue2255IT.java b/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue2255IT.java
new file mode 100644
index 0000000..a9593b2
--- /dev/null
+++ b/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue2255IT.java
@@ -0,0 +1,89 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.ajax;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlCheckBoxInput;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.After;
+import org.junit.Before;
+import static org.junit.Assert.*;
+import org.junit.Test;
+
+public class Issue2255IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+        webClient.setJavaScriptEnabled(true);
+        webClient.setJavaScriptTimeout(60000);
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    /**
+     * Test div.
+     */
+    @Test
+    public void testBehaviorState() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/divInComposite.xhtml");
+        assertTrue(page.asText().contains("false"));
+        HtmlCheckBoxInput cbox = (HtmlCheckBoxInput) page.getElementById("cc:form:test");
+        page = cbox.click();
+        webClient.waitForBackgroundJavaScript(60000);
+        assertTrue(page.asText().contains("true"));
+        page = cbox.click();
+        webClient.waitForBackgroundJavaScript(60000);
+        assertTrue(page.asText().contains("false"));
+        page = cbox.click();
+        webClient.waitForBackgroundJavaScript(60000);
+        assertTrue(page.asText().contains("true"));
+        page = cbox.click();
+        webClient.waitForBackgroundJavaScript(60000);
+        assertTrue(page.asText().contains("false"));
+    }
+}
diff --git a/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue2340IT.java b/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue2340IT.java
new file mode 100644
index 0000000..0b4510d
--- /dev/null
+++ b/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue2340IT.java
@@ -0,0 +1,104 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDLGPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.servlet30.ajax; 
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlAnchor;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlRadioButtonInput;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.junit.*;
+import static org.junit.Assert.*;
+
+public class Issue2340IT {
+
+    /**
+     * Stores the web URL.
+     */
+    private String webUrl;
+    /**
+     * Stores the web client.
+     */
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+
+    // ------------------------------------------------------------ Test Methods
+
+    @Test
+    public void testCommandLinkRadio() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl+"faces/commandLinkRadio.xhtml");
+        HtmlAnchor anchor = (HtmlAnchor)page.getElementById("testLink");
+        // This will ensure JavaScript finishes before evaluating the page.
+        webClient.waitForBackgroundJavaScript(60000);
+        anchor.click();
+        webClient.waitForBackgroundJavaScript(60000);
+        assertTrue(page.asXml().contains("LINK ACTION"));
+        HtmlRadioButtonInput radio1 = (HtmlRadioButtonInput)page.getElementById("testRadio:0");
+        HtmlRadioButtonInput radio2 = (HtmlRadioButtonInput)page.getElementById("testRadio:1");
+        HtmlRadioButtonInput radio3 = (HtmlRadioButtonInput)page.getElementById("testRadio:2");
+
+        page = radio1.click();
+        webClient.waitForBackgroundJavaScript(60000);
+        assertTrue(page.asXml().contains("RADIO:red"));
+
+        page = radio2.click();
+        webClient.waitForBackgroundJavaScript(60000);
+        assertTrue(page.asXml().contains("RADIO:blue"));
+
+        page = radio3.click();
+        webClient.waitForBackgroundJavaScript(60000);
+        assertTrue(page.asXml().contains("RADIO:white"));
+    }
+}
diff --git a/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue2381IT.java b/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue2381IT.java
new file mode 100644
index 0000000..8732de8
--- /dev/null
+++ b/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue2381IT.java
@@ -0,0 +1,89 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDLGPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.servlet30.ajax; 
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+
+import org.junit.*;
+import static org.junit.Assert.*;
+
+public class Issue2381IT {
+
+    /**
+     * Stores the web URL.
+     */
+    private String webUrl;
+    /**
+     * Stores the web client.
+     */
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+
+    // ------------------------------------------------------------ Test Methods
+
+    /**
+     * This test verifies that the page contains updated information from an
+     * Ajax response.  The response is updated in <code>UpdateBean</code>.
+     */
+    @Test
+    public void testBodyAttributesAfterUpdate() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl+"faces/updateBody.xhtml");
+        HtmlSubmitInput button = page.getHtmlElementById("form1:bodytag");
+        HtmlPage page1 = button.click();
+        // This will ensure JavaScript finishes before evaluating the page.
+        webClient.waitForBackgroundJavaScript(60000);
+        assertTrue(page1.asXml().contains("BODY CLASS:foo BODY TITLE:fooTitle BODY LANG:fooLang"));
+    }
+
+}
diff --git a/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue2407IT.java b/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue2407IT.java
new file mode 100644
index 0000000..ae4a50d
--- /dev/null
+++ b/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue2407IT.java
@@ -0,0 +1,88 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDLGPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.servlet30.ajax; 
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+
+import org.junit.*;
+import static org.junit.Assert.*;
+
+public class Issue2407IT {
+
+    /**
+     * Stores the web URL.
+     */
+    private String webUrl;
+    /**
+     * Stores the web client.
+     */
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+
+    // ------------------------------------------------------------ Test Methods
+
+    /**
+     * This test verifies that an attribute nameed 'value' can be successfully updated
+     * from a partial response (over Ajax). 
+     */
+    @Test
+    public void testUpdateAttributeNamedValue() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl+"faces/attributeNameIsValue.xhtml");
+        assertTrue(page.asXml().contains("foo"));
+        HtmlSubmitInput button = (HtmlSubmitInput)page.getElementById("form1:button");
+        page = button.click();
+        webClient.waitForBackgroundJavaScript(60000);
+        assertTrue(page.asXml().contains("bar"));
+    }
+}
diff --git a/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue2408IT.java b/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue2408IT.java
new file mode 100644
index 0000000..71135ec
--- /dev/null
+++ b/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue2408IT.java
@@ -0,0 +1,273 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDLGPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.servlet30.ajax; 
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.DomElement;
+import com.gargoylesoftware.htmlunit.html.DomNodeList;
+import com.gargoylesoftware.htmlunit.html.HtmlCheckBoxInput;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlRadioButtonInput;
+import java.util.ArrayList;
+import java.util.List;
+import org.junit.*;
+import static org.junit.Assert.*;
+
+public class Issue2408IT {
+
+    /**
+     * Stores the web URL.
+     */
+    private String webUrl;
+    /**
+     * Stores the web client.
+     */
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+
+    // ------------------------------------------------------------ Test Methods
+
+    /**
+     * This test verifies correct function of SelectManyCheckbox in a Composite
+     * Component over Ajax. 
+     */
+    @Test
+    public void testSelectManyCheckboxInComposite() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl+"faces/selectManyCheckboxInComposite.xhtml");
+        final List<HtmlCheckBoxInput> checkBoxes = new ArrayList();
+        final DomNodeList<DomElement> elements = page.getElementsByTagName("input");
+        for (DomElement elem : elements) {
+            if (elem instanceof HtmlCheckBoxInput) {
+                checkBoxes.add((HtmlCheckBoxInput)elem);
+            }
+        }
+        HtmlCheckBoxInput cbox1 = checkBoxes.get(0);
+        HtmlCheckBoxInput cbox2 = checkBoxes.get(1);
+        HtmlCheckBoxInput cbox3 = checkBoxes.get(2);
+        // This will ensure JavaScript finishes before evaluating the page.
+        webClient.waitForBackgroundJavaScript(60000);
+        assertTrue(page.asXml().contains("Status: Pending"));
+
+        page = cbox1.click();
+        webClient.waitForBackgroundJavaScript(60000);
+        assertTrue(page.asXml().contains("Status: mcheck-1"));
+
+        page = cbox2.click();
+        webClient.waitForBackgroundJavaScript(60000);
+        assertTrue(page.asXml().contains("Status: mcheck-1 mcheck-2"));
+
+        page = cbox3.click();
+        webClient.waitForBackgroundJavaScript(60000);
+        assertTrue(page.asXml().contains("Status: mcheck-1 mcheck-2 mcheck-3"));
+    }
+
+    /**
+     * This test verifies correct function of SelectManyCheckbox in a Composite
+     * Component over Ajax. The components in the page have ids.
+     */
+    @Test
+    public void testSelectManyCheckboxIdsInComposite() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl+"faces/selectManyCheckboxIdsInComposite.xhtml");
+        
+        HtmlCheckBoxInput cbox1 = (HtmlCheckBoxInput)page.getElementById("form:compId:cbox:0");
+        HtmlCheckBoxInput cbox2 = (HtmlCheckBoxInput)page.getElementById("form:compId:cbox:1");
+        HtmlCheckBoxInput cbox3 = (HtmlCheckBoxInput)page.getElementById("form:compId:cbox:2");
+
+        // This will ensure JavaScript finishes before evaluating the page.
+        webClient.waitForBackgroundJavaScript(60000);
+        assertTrue(page.asXml().contains("Status: Pending"));
+
+        page = cbox1.click();
+        webClient.waitForBackgroundJavaScript(60000);
+        assertTrue(page.asXml().contains("Status: mcheck-1"));
+
+        page = cbox2.click();
+        webClient.waitForBackgroundJavaScript(60000);
+        assertTrue(page.asXml().contains("Status: mcheck-1 mcheck-2"));
+
+        page = cbox3.click();
+        webClient.waitForBackgroundJavaScript(60000);
+        assertTrue(page.asXml().contains("Status: mcheck-1 mcheck-2 mcheck-3"));
+    }
+
+    /**
+     * This test verifies correct function of SelectManyCheckbox Component over Ajax.
+     */
+    @Test
+    public void testSelectManyCheckboxNoComposite() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl+"faces/selectManyCheckboxNoComposite.xhtml");
+        final List<HtmlCheckBoxInput> checkBoxes = new ArrayList();
+        final DomNodeList<DomElement> elements = page.getElementsByTagName("input");
+        for (DomElement elem : elements) {
+            if (elem instanceof HtmlCheckBoxInput) {
+                checkBoxes.add((HtmlCheckBoxInput)elem);
+            }
+        }
+        HtmlCheckBoxInput cbox1 = checkBoxes.get(0);
+        HtmlCheckBoxInput cbox2 = checkBoxes.get(1);
+        HtmlCheckBoxInput cbox3 = checkBoxes.get(2);
+        // This will ensure JavaScript finishes before evaluating the page.
+        webClient.waitForBackgroundJavaScript(60000);
+        assertTrue(page.asXml().contains("Status: Pending"));
+
+        page = cbox1.click();
+        webClient.waitForBackgroundJavaScript(60000);
+        assertTrue(page.asXml().contains("Status: mcheck-1"));
+
+        page = cbox2.click();
+        webClient.waitForBackgroundJavaScript(60000);
+        assertTrue(page.asXml().contains("Status: mcheck-1 mcheck-2"));
+
+        page = cbox3.click();
+        webClient.waitForBackgroundJavaScript(60000);
+        assertTrue(page.asXml().contains("Status: mcheck-1 mcheck-2 mcheck-3"));
+    }
+
+    /**
+     * This test verifies correct function of SelectOneRadio in a Composite
+     * Component over Ajax.
+     */
+    @Test
+    public void testSelectOneRadioInComposite() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl+"faces/selectOneRadioInComposite.xhtml");
+        final List<HtmlRadioButtonInput> radios = new ArrayList();
+        final DomNodeList<DomElement> elements = page.getElementsByTagName("input");
+        for (DomElement elem : elements) {
+            if (elem instanceof HtmlRadioButtonInput) {
+                radios.add((HtmlRadioButtonInput)elem);
+            }
+        }
+        HtmlRadioButtonInput radio1 = radios.get(0);
+        HtmlRadioButtonInput radio2 = radios.get(1);
+        HtmlRadioButtonInput radio3 = radios.get(2);
+
+        // This will ensure JavaScript finishes before evaluating the page.
+        webClient.waitForBackgroundJavaScript(60000);
+        assertTrue(page.asXml().contains("Status: Pending"));
+
+        page = radio1.click();
+        webClient.waitForBackgroundJavaScript(60000);
+        assertTrue(page.asXml().contains("Status: radio-1"));
+
+        page = radio2.click();
+        webClient.waitForBackgroundJavaScript(60000);
+        assertTrue(page.asXml().contains("Status: radio-2"));
+
+        page = radio3.click();
+        webClient.waitForBackgroundJavaScript(60000);
+        assertTrue(page.asXml().contains("Status: radio-3"));
+    }
+
+    /**
+     * This test verifies correct function of SelectOneRadio in a Composite
+     * Component over Ajax. The components in the page have ids.
+     */
+    @Test
+    public void testSelectOneRadioIdsInComposite() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl+"faces/selectOneRadioIdsInComposite.xhtml");
+
+        HtmlRadioButtonInput radio1 = (HtmlRadioButtonInput)page.getElementById("form:compId:radio:0");
+        HtmlRadioButtonInput radio2 = (HtmlRadioButtonInput)page.getElementById("form:compId:radio:1");
+        HtmlRadioButtonInput radio3 = (HtmlRadioButtonInput)page.getElementById("form:compId:radio:2");
+
+        // This will ensure JavaScript finishes before evaluating the page.
+        webClient.waitForBackgroundJavaScript(60000);
+        assertTrue(page.asXml().contains("Status: Pending"));
+
+        page = radio1.click();
+        webClient.waitForBackgroundJavaScript(60000);
+        assertTrue(page.asXml().contains("Status: radio-1"));
+
+        page = radio2.click();
+        webClient.waitForBackgroundJavaScript(60000);
+        assertTrue(page.asXml().contains("Status: radio-2"));
+
+        page = radio3.click();
+        webClient.waitForBackgroundJavaScript(60000);
+        assertTrue(page.asXml().contains("Status: radio-3"));
+    }
+
+    /**
+     * This test verifies correct function of SelectOneRadio Component over Ajax.
+     */
+    @Test
+    public void testSelectOneRadioNoComposite() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl+"faces/selectOneRadioNoComposite.xhtml");
+        final List<HtmlRadioButtonInput> radios = new ArrayList();
+        final DomNodeList<DomElement> elements = page.getElementsByTagName("input");
+        for (DomElement elem : elements) {
+            if (elem instanceof HtmlRadioButtonInput) {
+                radios.add((HtmlRadioButtonInput)elem);
+            }
+        }
+        HtmlRadioButtonInput radio1 = radios.get(0);
+        HtmlRadioButtonInput radio2 = radios.get(1);
+        HtmlRadioButtonInput radio3 = radios.get(2);
+
+        // This will ensure JavaScript finishes before evaluating the page.
+        webClient.waitForBackgroundJavaScript(60000);
+        assertTrue(page.asXml().contains("Status: Pending"));
+
+        page = radio1.click();
+        webClient.waitForBackgroundJavaScript(60000);
+        assertTrue(page.asXml().contains("Status: radio-1"));
+
+        page = radio2.click();
+        webClient.waitForBackgroundJavaScript(60000);
+        assertTrue(page.asXml().contains("Status: radio-2"));
+
+        page = radio3.click();
+        webClient.waitForBackgroundJavaScript(60000);
+        assertTrue(page.asXml().contains("Status: radio-3"));
+    }
+
+}
diff --git a/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue2421IT.java b/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue2421IT.java
new file mode 100644
index 0000000..08d4c4f
--- /dev/null
+++ b/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue2421IT.java
@@ -0,0 +1,92 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDLGPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.servlet30.ajax; 
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
+
+import org.junit.*;
+import static org.junit.Assert.*;
+
+public class Issue2421IT {
+
+    /**
+     * Stores the web URL.
+     */
+    private String webUrl;
+    /**
+     * Stores the web client.
+     */
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+
+    // ------------------------------------------------------------ Test Methods
+
+    /**
+     * This test verifies that an attribute named 'disabled' can be successfully updated
+     * from a partial response (over Ajax). 
+     */
+    @Test
+    public void testUpdateAttributeNamedDisabled() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl+"faces/attributeNameIsDisabled.xhtml");
+        HtmlTextInput input = (HtmlTextInput)page.getElementById("form1:foo");
+        assertTrue(input.isDisabled() == false);
+        assertTrue(page.asXml().contains("foo"));
+        HtmlSubmitInput button = (HtmlSubmitInput)page.getElementById("form1:button");
+        page = button.click();
+        webClient.waitForBackgroundJavaScript(60000);
+        input = (HtmlTextInput)page.getElementById("form1:foo");
+        assertTrue(input.isDisabled() == false);
+    }
+}
diff --git a/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue2422IT.java b/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue2422IT.java
new file mode 100644
index 0000000..70a5723
--- /dev/null
+++ b/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue2422IT.java
@@ -0,0 +1,95 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDLGPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.servlet30.ajax; 
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlCheckBoxInput;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.junit.*;
+import static org.junit.Assert.*;
+
+public class Issue2422IT {
+
+    /**
+     * Stores the web URL.
+     */
+    private String webUrl;
+    /**
+     * Stores the web client.
+     */
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+
+    // ------------------------------------------------------------ Test Methods
+
+    /**
+     * This test verifies correct function of SelectManyCheckbox in a Composite
+     * Component over Ajax. 
+     */
+    @Test
+    public void testSelectBooleanCheckbox() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl+"faces/selectBooleanCheckbox.xhtml");
+        HtmlCheckBoxInput cbox = (HtmlCheckBoxInput)page.getElementById("checkbox");
+        // This will ensure JavaScript finishes before evaluating the page.
+        webClient.waitForBackgroundJavaScript(60000);
+        assertTrue(!cbox.isChecked());
+
+        page = cbox.click();
+        webClient.waitForBackgroundJavaScript(60000);
+        assertTrue(cbox.isChecked());
+
+    }
+}
diff --git a/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue2439IT.java b/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue2439IT.java
new file mode 100644
index 0000000..d325367
--- /dev/null
+++ b/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue2439IT.java
@@ -0,0 +1,94 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDLGPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.servlet30.ajax; 
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+
+import org.junit.*;
+import static org.junit.Assert.*;
+
+public class Issue2439IT {
+
+    /**
+     * Stores the web URL.
+     */
+    private String webUrl;
+    /**
+     * Stores the web client.
+     */
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+
+    // ------------------------------------------------------------ Test Methods
+
+    /**
+     * This test verifies that an attribute nameed 'value' can be successfully updated
+     * from a partial response (over Ajax). 
+     */
+    @Test
+    public void testUpdateAttributeNamedValue() throws Exception {
+        String expectedString1 = "<input id="+'"'+"form1:input1"+'"'+" type="+'"'+"text"+'"'+" name="+'"'+"form1:input1"+'"'+"/>";
+        
+        String expectedString2 = "<input id="+'"'+"form1:input2"+'"'+" type="+'"'+"text"+'"'+" name="+'"'+"form1:input2"+'"'+" onchange="+'"'+"jsf.util.chain(this,event,'mojarra.ab(this,event,"+"\\"+"'valueChange\\"+"'"+",\\'@this\\',\\'@all\\')')"+'"'+"/>";
+
+        String expectedString3 = "<input id="+'"'+"form1:input3"+'"'+" type="+'"'+"text"+'"'+" name="+'"'+"form1:input3"
++'"'+" onchange="+'"'+"jsf.util.chain(this,event,'alert(\\'Hello, World!\\');')"+'"'+"/>";
+
+        HtmlPage page = webClient.getPage(webUrl+"faces/disabledBehaviors.xhtml");
+        assertTrue(page.asXml().contains(expectedString1));
+        assertTrue(page.asXml().contains(expectedString2));
+        assertTrue(page.asXml().contains(expectedString3));
+    }
+}
+
diff --git a/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue2443IT.java b/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue2443IT.java
new file mode 100644
index 0000000..b721be1
--- /dev/null
+++ b/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue2443IT.java
@@ -0,0 +1,86 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDLGPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.servlet30.ajax; 
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+
+import org.junit.*;
+import static org.junit.Assert.*;
+
+public class Issue2443IT {
+
+    /**
+     * Stores the web URL.
+     */
+    private String webUrl;
+    /**
+     * Stores the web client.
+     */
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+
+    // ------------------------------------------------------------ Test Methods
+
+    /**
+     * This test verifies that an attribute nameed 'value' can be successfully updated
+     * from a partial response (over Ajax). 
+     */
+    @Test
+    public void testQuotesInScript() throws Exception {
+        String expectedText = '"' + "<div></div>" + '"' + ";";
+        HtmlPage page = webClient.getPage(webUrl+"faces/scriptQuote.xhtml");
+        assertTrue(page.asXml().contains(expectedText));
+    }
+}
+
diff --git a/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue2456IT.java b/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue2456IT.java
new file mode 100644
index 0000000..497ffe2
--- /dev/null
+++ b/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue2456IT.java
@@ -0,0 +1,88 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDLGPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.servlet30.ajax; 
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+
+import org.junit.*;
+import static org.junit.Assert.*;
+
+public class Issue2456IT {
+
+    /**
+     * Stores the web URL.
+     */
+    private String webUrl;
+    /**
+     * Stores the web client.
+     */
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+
+    // ------------------------------------------------------------ Test Methods
+
+    /**
+     * This test verifies that an attribute nameed 'value' can be successfully updated
+     * from a partial response (over Ajax). 
+     */
+    @Test
+    public void testScript() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl+"faces/script.xhtml");
+        assertTrue(page.asXml().contains("SCRIPT EXECUTED!"));
+        HtmlSubmitInput button = (HtmlSubmitInput)page.getElementById("form1:button1");
+        page = button.click();
+        assertTrue(page.asXml().contains("SCRIPT EXECUTED!"));
+    }
+}
+
diff --git a/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue2461IT.java b/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue2461IT.java
new file mode 100644
index 0000000..fbb76b6
--- /dev/null
+++ b/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue2461IT.java
@@ -0,0 +1,90 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDLGPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.servlet30.ajax; 
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+
+import org.junit.*;
+import static org.junit.Assert.*;
+
+public class Issue2461IT {
+
+    /**
+     * Stores the web URL.
+     */
+    private String webUrl;
+    /**
+     * Stores the web client.
+     */
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+
+    // ------------------------------------------------------------ Test Methods
+
+    /**
+     * This test verifies that the page contains updated information from an
+     * Ajax response.  The response is updated in <code>UpdateBean</code>.
+     */
+    @Test
+    public void testBodyAttributesAfterUpdate() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl+"faces/updateBody.xhtml");
+        HtmlSubmitInput button = page.getHtmlElementById("form1:bodytag");
+        HtmlPage page1 = button.click();
+        // This will ensure JavaScript finishes before evaluating the page.
+        webClient.waitForBackgroundJavaScript(60000);
+        assertTrue(page1.asXml().contains("BODY CLASS:foo BODY TITLE:fooTitle BODY LANG:fooLang"));
+    }
+
+}
+
diff --git a/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue2479IT.java b/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue2479IT.java
new file mode 100644
index 0000000..68338d9
--- /dev/null
+++ b/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue2479IT.java
@@ -0,0 +1,102 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDLGPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.servlet30.ajax; 
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSelect;
+import com.gargoylesoftware.htmlunit.html.HtmlSpan;
+
+import org.junit.*;
+import static org.junit.Assert.*;
+
+public class Issue2479IT {
+
+    /**
+     * Stores the web URL.
+     */
+    private String webUrl;
+    /**
+     * Stores the web client.
+     */
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+        webClient.setJavaScriptEnabled(true);
+        webClient.setJavaScriptTimeout(60000);
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+
+    // ------------------------------------------------------------ Test Methods
+
+    /**
+     * This test verifies that an attribute nameed 'value' can be successfully updated
+     * from a partial response (over Ajax). 
+     */
+    @Test
+    public void testSelectDataTable() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl+"faces/selectOneMenuDataTable.xhtml");
+        HtmlSpan span1 = (HtmlSpan)page.getElementById("table:0:inCity");
+        assertTrue((span1.asText()).equals("alpha"));
+        HtmlSpan span2 = (HtmlSpan)page.getElementById("table:1:inCity");
+        assertTrue((span2.asText()).equals("alpha"));
+        HtmlSpan span3 = (HtmlSpan)page.getElementById("table:2:inCity");
+        assertTrue((span3.asText()).equals("alpha"));
+        HtmlSelect select = (HtmlSelect)page.getElementById("selectMenu");
+        page = (HtmlPage) select.setSelectedAttribute("beta",true);
+        webClient.waitForBackgroundJavaScript(60000);
+        span1 = (HtmlSpan)page.getElementById("table:0:inCity");
+        assertTrue((span1.asText()).equals("beta"));
+        span2 = (HtmlSpan)page.getElementById("table:1:inCity");
+        assertTrue((span2.asText()).equals("beta"));
+        span3 = (HtmlSpan)page.getElementById("table:2:inCity");
+        assertTrue((span3.asText()).equals("beta"));
+    }
+}
+
diff --git a/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue2500IT.java b/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue2500IT.java
new file mode 100644
index 0000000..d4100a1
--- /dev/null
+++ b/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue2500IT.java
@@ -0,0 +1,95 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDLGPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.servlet30.ajax; 
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+
+import org.junit.*;
+
+import java.util.List;
+
+import static org.junit.Assert.*;
+
+public class Issue2500IT {
+
+    /**
+     * Stores the web URL.
+     */
+    private String webUrl;
+    /**
+     * Stores the web client.
+     */
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+
+    // ------------------------------------------------------------ Test Methods
+
+    /**
+     * This test verifies that an attribute nameed 'value' can be successfully updated
+     * from a partial response (over Ajax). 
+     */
+    @Test
+    public void testNoDuplicateViewState() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl+"faces/dupViewState.xhtml");
+        HtmlSubmitInput button1 = (HtmlSubmitInput)page.getElementById("btn5");
+        page = button1.click();
+        webClient.waitForBackgroundJavaScript(60000);
+        HtmlSubmitInput button2 = (HtmlSubmitInput)page.getElementById("button1");
+        page = button2.click();
+        webClient.waitForBackgroundJavaScript(60000);
+        page = button2.click();
+        webClient.waitForBackgroundJavaScript(60000);
+        assertTrue(page.asXml().contains("javax.faces.ViewState Has One Value"));
+    }
+}
diff --git a/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue2574IT.java b/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue2574IT.java
new file mode 100644
index 0000000..9b4e556
--- /dev/null
+++ b/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue2574IT.java
@@ -0,0 +1,90 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDLGPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.servlet30.ajax; 
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+
+import org.junit.*;
+
+import java.util.List;
+
+import static org.junit.Assert.*;
+
+public class Issue2574IT {
+
+    /**
+     * Stores the web URL.
+     */
+    private String webUrl;
+    /**
+     * Stores the web client.
+     */
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+
+    // ------------------------------------------------------------ Test Methods
+
+    /**
+     * This test verifies that an attribute nameed 'value' can be successfully updated
+     * from a partial response (over Ajax). 
+     */
+    @Test
+    public void testOtherScriptType() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl+"faces/issue2574.xhtml");
+        HtmlSubmitInput button1 = (HtmlSubmitInput)page.getElementById("form:refresh");
+        page = button1.click();
+        webClient.waitForBackgroundJavaScript(60000);
+        assertTrue(page.asXml().contains("This script must not be eval'ed on ajax response."));
+    }
+}
diff --git a/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue2578IT.java b/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue2578IT.java
new file mode 100644
index 0000000..0b6d19e
--- /dev/null
+++ b/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue2578IT.java
@@ -0,0 +1,103 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.servlet30.ajax;
+
+import com.gargoylesoftware.htmlunit.BrowserVersion;
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
+import org.junit.After;
+import org.junit.Before;
+import static org.junit.Assert.*;
+import org.junit.Test;
+
+public class Issue2578IT {
+    
+    /**
+     * Stores the web URL.
+     */
+    private String webUrl;
+    /**
+     * Stores the web client.
+     */
+    private WebClient webClient;
+
+    /**
+     * Setup before testing.
+     */
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+        webClient.setJavaScriptEnabled(true);
+        webClient.setJavaScriptTimeout(60000);
+    }
+
+    /**
+     * Tear down after testing.
+     */
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testAjaxClear() throws Exception {
+        webClient.setJavaScriptEnabled(true);
+        webClient.setJavaScriptTimeout(60000);
+        HtmlPage page = webClient.getPage(webUrl + "/faces/issue2578.xhtml");
+
+        assertTrue(page.getElementById("form:input").asXml().indexOf("hello") == -1);
+        
+        HtmlTextInput input = (HtmlTextInput) page.getHtmlElementById("form:input");
+        input.type("hello");
+        webClient.waitForBackgroundJavaScript(60000);
+
+        assertTrue(page.getElementById("form:input").asXml().indexOf("hello") != -1);
+
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getHtmlElementById("form:clear");
+        page = (HtmlPage) button.click();
+        webClient.waitForBackgroundJavaScript(60000);
+
+        assertTrue(page.getElementById("form:input").asXml().indexOf("hello") == -1);
+    }
+}
diff --git a/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue2636IT.java b/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue2636IT.java
new file mode 100644
index 0000000..dc33f92
--- /dev/null
+++ b/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue2636IT.java
@@ -0,0 +1,104 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDLGPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.servlet30.ajax; 
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlAnchor;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlRadioButtonInput;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.junit.*;
+import static org.junit.Assert.*;
+
+public class Issue2636IT {
+
+    /**
+     * Stores the web URL.
+     */
+    private String webUrl;
+    /**
+     * Stores the web client.
+     */
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+
+    // ------------------------------------------------------------ Test Methods
+
+    @Test
+    public void testCommandLinksInRepeat() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl+"faces/issue2636.xhtml");
+        webClient.waitForBackgroundJavaScript(60000);
+        List anchors = page.getAnchors();
+
+        HtmlAnchor anchor1 = (HtmlAnchor)anchors.get(0);
+        page = anchor1.click();
+        webClient.waitForBackgroundJavaScript(60000);
+        assertTrue(page.asXml().contains("linkAction1"));
+
+        anchors = page.getAnchors();
+
+        HtmlAnchor anchor2 = (HtmlAnchor)anchors.get(1);
+        page = anchor2.click();
+        webClient.waitForBackgroundJavaScript(60000);
+        assertTrue(page.asXml().contains("linkAction2"));
+
+        anchors = page.getAnchors();
+
+        anchor1 = (HtmlAnchor)anchors.get(0);
+        page = anchor1.click();
+        webClient.waitForBackgroundJavaScript(60000);
+        assertTrue(page.asXml().contains("linkAction1"));
+    }
+}
diff --git a/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue2648IT.java b/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue2648IT.java
new file mode 100644
index 0000000..9ea1ca6
--- /dev/null
+++ b/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue2648IT.java
@@ -0,0 +1,79 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.ajax;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+import org.junit.Ignore;
+
+public class Issue2648IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+        webClient.setJavaScriptEnabled(true);
+        webClient.setJavaScriptTimeout(60000);
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testIssue2648() throws Exception {
+        boolean exceptionThrown = false;
+        HtmlPage page = webClient.getPage(webUrl + "faces/issue2648.xhtml");
+        HtmlSubmitInput input = (HtmlSubmitInput) page.getHtmlElementById("form:button");
+        page = input.click();
+        webClient.waitForBackgroundJavaScript(120000);
+        page = webClient.getPage(webUrl + "faces/issue2648-1.xhtml");
+        assertTrue(page.asXml().contains("IllegalStateException: true"));
+    }
+}
diff --git a/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue2666IT.java b/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue2666IT.java
new file mode 100644
index 0000000..25bf5c1
--- /dev/null
+++ b/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue2666IT.java
@@ -0,0 +1,80 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.ajax;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+import org.junit.Ignore;
+
+public class Issue2666IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+        webClient.setJavaScriptEnabled(true);
+        webClient.setJavaScriptTimeout(60000);
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testRequestParamWithNoNameDoesNotExist() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/issue2666.xhtml");
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("form:submit");
+        page = button.click();
+        webClient.waitForBackgroundJavaScript(120000);
+
+        // Assert the page does not display the request parameter name 'button' that 
+        // is in the page without a 'name' attribute.
+        assertTrue(page.asText().contains("Request parameter name 'button' does not exist"));
+    }
+}
diff --git a/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue2674IT.java b/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue2674IT.java
new file mode 100644
index 0000000..5abeb9d
--- /dev/null
+++ b/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue2674IT.java
@@ -0,0 +1,84 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDLGPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.servlet30.ajax; 
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+
+import org.junit.*;
+import static org.junit.Assert.*;
+
+public class Issue2674IT {
+
+    /**
+     * Stores the web URL.
+     */
+    private String webUrl;
+    /**
+     * Stores the web client.
+     */
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+
+    // ------------------------------------------------------------ Test Methods
+
+    /**
+     * This test verifies ajax behavior was programmatically attached to input text component. 
+     */
+    @Test
+    public void testProgrammaticAjaxBehavior() throws Exception {
+        String expectedString = "<input id="+'"'+"form:input1"+'"'+" type="+'"'+"text"+'"'+" name="+'"'+"form:input1"+'"'+" value="+'"'+"hi"+'"'+" onfocus="+'"'+"mojarra.ab(this,event,'focus',0,0)"+'"';
+        HtmlPage page = webClient.getPage(webUrl+"faces/issue2674.xhtml");
+        assertTrue(page.asXml().contains(expectedString));
+    }
+}
+
diff --git a/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue2682IT.java b/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue2682IT.java
new file mode 100644
index 0000000..73f7d0d
--- /dev/null
+++ b/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue2682IT.java
@@ -0,0 +1,92 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.ajax;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlCheckBoxInput;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+import org.junit.Ignore;
+
+public class Issue2682IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+        webClient.setJavaScriptEnabled(true);
+        webClient.setJavaScriptTimeout(60000);
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testIssue2682() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/issue2682.xhtml");
+        webClient.waitForBackgroundJavaScript(120000);
+        assertTrue(page.asText().contains("Check Box Status: false"));
+        HtmlCheckBoxInput cbox = (HtmlCheckBoxInput) page.getHtmlElementById("cbox");
+        page = cbox.click();
+        webClient.waitForBackgroundJavaScript(120000);
+        assertTrue(page.asText().contains("Check Box Status: true"));
+        HtmlSubmitInput input = (HtmlSubmitInput) page.getHtmlElementById("button");
+        page = input.click();
+        webClient.waitForBackgroundJavaScript(120000);
+        assertTrue(page.asText().contains("Check Box Status: true"));
+        cbox = (HtmlCheckBoxInput) page.getHtmlElementById("cbox");
+        page = cbox.click();
+        webClient.waitForBackgroundJavaScript(120000);
+        assertTrue(page.asText().contains("Check Box Status: false"));
+        input = (HtmlSubmitInput) page.getHtmlElementById("button");
+        page = input.click();
+        webClient.waitForBackgroundJavaScript(120000);
+        assertTrue(page.asText().contains("Check Box Status: false"));
+    }
+}
diff --git a/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue2697IT.java b/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue2697IT.java
new file mode 100644
index 0000000..cc2af68
--- /dev/null
+++ b/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue2697IT.java
@@ -0,0 +1,83 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.ajax;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+import org.junit.Ignore;
+
+public class Issue2697IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+        webClient.setJavaScriptEnabled(true);
+        webClient.setJavaScriptTimeout(60000);
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testAjaxViewScope() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/viewScope.xhtml");
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("form:reset");
+        page = button.click();
+
+        button = (HtmlSubmitInput) page.getElementById("form:ajax");
+        page = button.click();
+        assertTrue(page.asText().contains("VIEWSCOPEBEAN() CALLED"));
+
+        // Assert that second Ajax request does not execute the bean constructor again.
+        page = button.click();
+        assertTrue(!page.asText().contains("VIEWSCOPEBEAN() CALLED VIEWSCOPEBEAN() CALLED"));
+    }
+}
diff --git a/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue2749IT.java b/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue2749IT.java
new file mode 100644
index 0000000..fd1d774
--- /dev/null
+++ b/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue2749IT.java
@@ -0,0 +1,90 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDLGPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.servlet30.ajax; 
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlCheckBoxInput;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
+
+import org.junit.*;
+import static org.junit.Assert.*;
+
+public class Issue2749IT {
+
+    /**
+     * Stores the web URL.
+     */
+    private String webUrl;
+    /**
+     * Stores the web client.
+     */
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+
+    // ------------------------------------------------------------ Test Methods
+
+    /**
+     * This test verifies that an attribute named 'onclick' can be successfully updated
+     * from a partial response (over Ajax). 
+     */
+    @Test
+    public void testUpdateAttributeNamedOn() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl+"faces/attributeNameIsOn.xhtml");
+        HtmlSubmitInput button = (HtmlSubmitInput)page.getElementById("form1:button");
+        page = button.click();
+        webClient.waitForBackgroundJavaScript(60000);
+        assertTrue(page.asText().contains("ONCLICK CALLED"));
+    }
+
+}
diff --git a/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue2750IT.java b/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue2750IT.java
new file mode 100644
index 0000000..e9c7f93
--- /dev/null
+++ b/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue2750IT.java
@@ -0,0 +1,110 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDLGPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.servlet30.ajax; 
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlCheckBoxInput;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
+
+import org.junit.*;
+import static org.junit.Assert.*;
+
+public class Issue2750IT {
+
+    /**
+     * Stores the web URL.
+     */
+    private String webUrl;
+    /**
+     * Stores the web client.
+     */
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+
+    // ------------------------------------------------------------ Test Methods
+
+    /**
+     * This test verifies that an attribute named 'checked' can be successfully updated
+     * from a partial response (over Ajax). 
+     */
+    @Test
+    public void testUpdateAttributeNamedChecked() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl+"faces/attributeNameIsChecked.xhtml");
+        HtmlCheckBoxInput cbox = (HtmlCheckBoxInput)page.getElementById("form1:foo");
+        assertTrue(cbox.isChecked() == false);
+        assertTrue(page.asXml().contains("foo"));
+        HtmlSubmitInput button = (HtmlSubmitInput)page.getElementById("form1:button");
+        page = button.click();
+        webClient.waitForBackgroundJavaScript(60000);
+        cbox = (HtmlCheckBoxInput)page.getElementById("form1:foo");
+        assertTrue(cbox.isChecked() == true);
+    }
+
+    /**
+     * This test verifies that an attribute named 'readonly' can be successfully updated
+     * from a partial response (over Ajax).
+     */
+    @Test
+    public void testUpdateAttributeNamedReadonly() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl+"faces/attributeNameIsReadonly.xhtml");
+        HtmlTextInput input = (HtmlTextInput)page.getElementById("form1:foo");
+        assertTrue(input.isReadOnly() == false);
+        HtmlSubmitInput button = (HtmlSubmitInput)page.getElementById("form1:button");
+        page = button.click();
+        webClient.waitForBackgroundJavaScript(60000);
+        input = (HtmlTextInput)page.getElementById("form1:foo");
+        assertTrue(input.isReadOnly() == true);
+    }
+
+}
diff --git a/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue2751IT.java b/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue2751IT.java
new file mode 100644
index 0000000..d8173f4
--- /dev/null
+++ b/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue2751IT.java
@@ -0,0 +1,91 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDLGPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.servlet30.ajax; 
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
+
+import org.junit.*;
+import static org.junit.Assert.*;
+
+public class Issue2751IT {
+
+    /**
+     * Stores the web URL.
+     */
+    private String webUrl;
+    /**
+     * Stores the web client.
+     */
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+
+    // ------------------------------------------------------------ Test Methods
+
+    /**
+     * This test verifies that an attribute named 'disabled' can be successfully updated
+     * from a partial response (over Ajax). 
+     */
+    @Test
+    public void testUpdateAttributeNamedClass() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl+"faces/attributeNameIsClass.xhtml");
+        HtmlTextInput input = (HtmlTextInput)page.getElementById("form1:foo");
+        assertTrue(page.asXml().contains("foo"));
+        HtmlSubmitInput button = (HtmlSubmitInput)page.getElementById("form1:button");
+        page = button.click();
+        webClient.waitForBackgroundJavaScript(60000);
+        input = (HtmlTextInput)page.getElementById("form1:foo");
+        assertTrue(page.asXml().contains("myclass"));
+    }
+}
diff --git a/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue2752IT.java b/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue2752IT.java
new file mode 100644
index 0000000..b36df18
--- /dev/null
+++ b/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue2752IT.java
@@ -0,0 +1,96 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDLGPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.servlet30.ajax; 
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+
+import org.junit.*;
+import static org.junit.Assert.*;
+
+public class Issue2752IT {
+
+    /**
+     * Stores the web URL.
+     */
+    private String webUrl;
+    /**
+     * Stores the web client.
+     */
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+        webClient.setJavaScriptEnabled(true);
+        webClient.setJavaScriptTimeout(60000);
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+
+    // ------------------------------------------------------------ Test Methods
+
+    /**
+     * This test verifies that the page contains updated information from an
+     * Ajax response.  The response is updated in <code>InsertBean</code>.
+     */
+    @Test
+    public void testInsertFromResponse() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl+"faces/insertElement.xhtml");
+        HtmlSubmitInput beforeButton = page.getHtmlElementById("beforeButton");
+        page = beforeButton.click();
+        // This will ensure JavaScript finishes before evaluating the page.
+        webClient.waitForBackgroundJavaScript(60000);
+        assertTrue(page.asText().contains("This is before textalpha"));
+        HtmlSubmitInput afterButton = page.getHtmlElementById("afterButton");
+        page = afterButton.click();
+        // This will ensure JavaScript finishes before evaluating the page.
+        webClient.waitForBackgroundJavaScript(60000);
+        assertTrue(page.asText().contains("This is before textalphaThis is after text"));
+    }
+
+}
diff --git a/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue2754IT.java b/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue2754IT.java
new file mode 100644
index 0000000..a55bee6
--- /dev/null
+++ b/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue2754IT.java
@@ -0,0 +1,84 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.ajax;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+import org.junit.Ignore;
+
+public class Issue2754IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+        webClient.setJavaScriptEnabled(true);
+        webClient.setJavaScriptTimeout(60000);
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testAjaxViewScope() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/issue2754.xhtml");
+        HtmlTextInput input = (HtmlTextInput) page.getHtmlElementById("input");
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("button");
+        page = button.click();
+        webClient.waitForBackgroundJavaScript(60000);
+        assertTrue(page.asText().contains("input: Validation Error: Value is required"));
+        input.type("hello");
+        webClient.waitForBackgroundJavaScript(60000);
+        page = button.click();
+        webClient.waitForBackgroundJavaScript(60000);
+        assertTrue(!page.asText().contains("input: Validation Error: Value is required"));
+    }
+}
diff --git a/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue2767IT.java b/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue2767IT.java
new file mode 100644
index 0000000..7460066
--- /dev/null
+++ b/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue2767IT.java
@@ -0,0 +1,104 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDLGPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.servlet30.ajax; 
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlAnchor;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlRadioButtonInput;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.junit.*;
+import static org.junit.Assert.*;
+
+public class Issue2767IT {
+
+    /**
+     * Stores the web URL.
+     */
+    private String webUrl;
+    /**
+     * Stores the web client.
+     */
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+
+    // ------------------------------------------------------------ Test Methods
+
+    @Test
+    public void testCommandLinkRadio() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl+"faces/issue2767.xhtml");
+        HtmlAnchor anchor = (HtmlAnchor)page.getElementById("testLink");
+        // This will ensure JavaScript finishes before evaluating the page.
+        webClient.waitForBackgroundJavaScript(60000);
+        anchor.click();
+        webClient.waitForBackgroundJavaScript(60000);
+        assertTrue(page.asXml().contains("LINK ACTION"));
+        HtmlRadioButtonInput radio1 = (HtmlRadioButtonInput)page.getElementById("testRadio:0");
+        HtmlRadioButtonInput radio2 = (HtmlRadioButtonInput)page.getElementById("testRadio:1");
+        HtmlRadioButtonInput radio3 = (HtmlRadioButtonInput)page.getElementById("testRadio:2");
+
+        page = radio1.click();
+        webClient.waitForBackgroundJavaScript(60000);
+        assertTrue(page.asXml().contains("RADIO:red"));
+
+        page = radio2.click();
+        webClient.waitForBackgroundJavaScript(60000);
+        assertTrue(page.asXml().contains("RADIO:blue"));
+
+        page = radio3.click();
+        webClient.waitForBackgroundJavaScript(60000);
+        assertTrue(page.asXml().contains("RADIO:white"));
+    }
+}
diff --git a/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue2906IT.java b/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue2906IT.java
new file mode 100644
index 0000000..908e4ee
--- /dev/null
+++ b/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue2906IT.java
@@ -0,0 +1,117 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDLGPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.ajax;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlAnchor;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.sun.faces.test.junit.JsfTest;
+import com.sun.faces.test.junit.JsfTestRunner;
+import com.sun.faces.test.junit.JsfVersion;
+import java.util.List;
+import org.junit.*;
+import static org.junit.Assert.*;
+import org.junit.runner.RunWith;
+
+ at RunWith(JsfTestRunner.class)
+public class Issue2906IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @JsfTest(JsfVersion.JSF_2_2_1)
+    @Test
+    public void testCommandLinksInRepeat() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/issue2906.xhtml");
+        assertTrue(page.asText().contains("2   2   2   2   2   2   2   2   2   2"));
+
+        List anchors = page.getAnchors();
+        HtmlAnchor anchor = (HtmlAnchor) anchors.get(9);
+        page = anchor.click();
+        webClient.waitForBackgroundJavaScript(60000);
+        anchors.clear();
+        anchors = page.getAnchors();
+        assertTrue(page.asText().contains("3   3   3   3   3   3   3   3   3"));
+        assertTrue(anchors.size() == 9);
+
+        anchor = (HtmlAnchor) anchors.get(8);
+        page = anchor.click();
+        webClient.waitForBackgroundJavaScript(60000);
+        anchors.clear();
+        anchors = page.getAnchors();
+        assertTrue(page.asText().contains("4   4   4   4   4   4   4   4"));
+        assertTrue(anchors.size() == 8);
+
+        anchor = (HtmlAnchor) anchors.get(7);
+        page = anchor.click();
+        webClient.waitForBackgroundJavaScript(60000);
+        anchors.clear();
+        anchors = page.getAnchors();
+        assertTrue(page.asText().contains("5   5   5   5   5   5   5"));
+        assertTrue(anchors.size() == 7);
+
+        anchor = (HtmlAnchor) anchors.get(0);
+        page = anchor.click();
+        webClient.waitForBackgroundJavaScript(60000);
+        anchors.clear();
+        anchors = page.getAnchors();
+        assertTrue(page.asText().contains("6   6   6   6   6   6"));
+        assertTrue(anchors.size() == 6);
+
+        anchor = (HtmlAnchor) anchors.get(2);
+        page = anchor.click();
+        webClient.waitForBackgroundJavaScript(60000);
+        anchors.clear();
+        anchors = page.getAnchors();
+        assertTrue(page.asText().contains("7   7   7   7   7"));
+        assertTrue(anchors.size() == 5);
+    }
+}
diff --git a/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue2969IT.java b/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue2969IT.java
new file mode 100644
index 0000000..cabcbf5
--- /dev/null
+++ b/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue2969IT.java
@@ -0,0 +1,73 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDLGPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.ajax;
+
+import com.gargoylesoftware.htmlunit.BrowserVersion;
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.DomElement;
+import com.gargoylesoftware.htmlunit.html.DomNodeList;
+import com.gargoylesoftware.htmlunit.html.HtmlElement;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.*;
+import static org.junit.Assert.*;
+
+public class Issue2969IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient(BrowserVersion.CHROME);
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testAjaxProjectStage() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/ajaxProjectStage.xhtml");
+        String stage = page.getHtmlElementById("stage").asText();
+        assertTrue(stage.equals("Production") || stage.equals("Development")); 
+    }
+}
diff --git a/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue3020IT.java b/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue3020IT.java
new file mode 100644
index 0000000..440bc8c
--- /dev/null
+++ b/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue3020IT.java
@@ -0,0 +1,104 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.ajax;
+
+import com.gargoylesoftware.htmlunit.ScriptException;
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+import org.junit.Ignore;
+
+public class Issue3020IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+        webClient.setJavaScriptEnabled(true);
+        webClient.setJavaScriptTimeout(60000);
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testDelayPositive() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/issue3020Positive.xhtml");
+
+        HtmlTextInput in1 = (HtmlTextInput) page.getHtmlElementById("input");
+        in1.type("a");
+
+        webClient.waitForBackgroundJavaScript(60000);
+
+        // Check that the ajax request succeeds
+        assertTrue(page.getHtmlElementById("result").asText().contains("aaaaaaaaaa")); 
+    }
+    
+    @Test
+    public void testDelayNegative() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/issue3020Negative.xhtml");
+
+        HtmlTextInput in1 = (HtmlTextInput) page.getHtmlElementById("input");
+        boolean exceptionCaught = false;
+        try {
+            in1.type("a");
+            
+            webClient.waitForBackgroundJavaScript(60000);
+        } catch (ScriptException se) {
+            assertTrue(se.getMessage().contains("NaN"));
+            exceptionCaught = true;
+        }
+
+        // Check that the ajax request does not succeed
+        assertTrue(exceptionCaught);
+    }
+    
+
+}
diff --git a/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue3097IT.java b/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue3097IT.java
new file mode 100644
index 0000000..f2a527a
--- /dev/null
+++ b/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue3097IT.java
@@ -0,0 +1,89 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.ajax;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlElement;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class Issue3097IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+        webClient.setJavaScriptEnabled(true);
+        webClient.setJavaScriptTimeout(60000);
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    /*
+     * This test is purposely only triggering when server side state saving 
+     * as there is no way to force a view to expire when client side state 
+     * saving.
+     */
+    @Test
+    public void testViewExpired1() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/viewExpired1.xhtml");
+
+        if (page.asXml().indexOf("State Saving Method: server") != -1) {
+            HtmlElement expireButton = page.getHtmlElementById("form:expireSessionSoon");
+            expireButton.click();
+            webClient.waitForBackgroundJavaScript(60000);
+            Thread.sleep(25000);
+            HtmlElement submitButton = page.getHtmlElementById("form:submit");
+            page = submitButton.click();
+            webClient.waitForBackgroundJavaScript(60000);
+            String text = page.asXml();
+            assertTrue(text.indexOf("class javax.faces.application.ViewExpiredException") != -1);
+        }
+    }
+}
diff --git a/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue3106IT.java b/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue3106IT.java
new file mode 100644
index 0000000..636e9ee
--- /dev/null
+++ b/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue3106IT.java
@@ -0,0 +1,86 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.ajax;
+
+import com.gargoylesoftware.htmlunit.ScriptException;
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlElement;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class Issue3106IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+        webClient.getOptions().setJavaScriptEnabled(true);
+        webClient.setJavaScriptTimeout(60000);
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    /*
+     * Unfortunately the recipe can only be executed manually as HtmlUnit seems
+     * to be throwing a fit on the JavaScript.
+     */
+    public void testMultiPart1() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/multiPart1.xhtml");
+        HtmlElement element = page.getHtmlElementById("form:submit");
+
+        element.click();
+        
+        element.click();
+        
+        Thread.sleep(3000);
+        
+        page = webClient.getPage(webUrl + "faces/multiPart1b.xhtml");
+        assertTrue(page.asXml().contains("Count is 2")); 
+    }
+}
diff --git a/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue3171IT.java b/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue3171IT.java
new file mode 100644
index 0000000..1f5404c
--- /dev/null
+++ b/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue3171IT.java
@@ -0,0 +1,92 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.ajax;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlElement;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class Issue3171IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+        webClient.getOptions().setJavaScriptEnabled(true);
+        webClient.setJavaScriptTimeout(60000);
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testExceptionDuringRenderOk() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/exceptionDuringRender.xhtml");
+        webClient.getOptions().setThrowExceptionOnFailingStatusCode(false);
+        webClient.getOptions().setThrowExceptionOnScriptError(false);
+        String pageText = page.asText();
+        
+        assertTrue(pageText.contains("not an ajax request"));
+        
+        HtmlSubmitInput button = page.getHtmlElementById("submit");
+
+        page = button.click();
+        webClient.waitForBackgroundJavaScript(60000);
+        
+        pageText = page.asText();
+        String pageXml = page.asXml();
+        HtmlElement span = page.getHtmlElementById("exceptionDuringRender");
+        String spanXML = span.asXml();
+        
+        assertTrue(pageText.contains("not an ajax request"));
+        assertTrue(pageText.contains("Error from submit"));
+        
+    }
+}
diff --git a/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue3261IT.java b/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue3261IT.java
new file mode 100644
index 0000000..2da5c56
--- /dev/null
+++ b/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue3261IT.java
@@ -0,0 +1,82 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.ajax;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlElement;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class Issue3261IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+        webClient.getOptions().setJavaScriptEnabled(true);
+        webClient.setJavaScriptTimeout(60000);
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testLegendWithoutIdOK() throws Exception {
+        webClient.getOptions().setThrowExceptionOnFailingStatusCode(false);
+        webClient.getOptions().setThrowExceptionOnScriptError(false);
+
+        HtmlPage page = webClient.getPage(webUrl + "faces/legendWithoutId.xhtml");
+        HtmlSubmitInput button = page.getHtmlElementById("form:submit");
+
+        page = button.click();
+        webClient.waitForBackgroundJavaScript(60000);
+        
+        assertEquals(200, page.getWebResponse().getStatusCode());
+    }
+}
diff --git a/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue3344IT.java b/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue3344IT.java
new file mode 100644
index 0000000..d05ab11
--- /dev/null
+++ b/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue3344IT.java
@@ -0,0 +1,78 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.ajax;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class Issue3344IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+        webClient.getOptions().setJavaScriptEnabled(true);
+        webClient.setJavaScriptTimeout(60000);
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testXmlPreambleOnRedirect() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/ajaxRedirect01.xhtml");
+        
+        HtmlSubmitInput button = page.getHtmlElementById("button");
+        page = button.click();
+        
+        webClient.waitForBackgroundJavaScript(60000);
+        assertTrue(page.asXml().contains("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"));
+    }
+}
diff --git a/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue3351IT.java b/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue3351IT.java
new file mode 100644
index 0000000..01eee4a
--- /dev/null
+++ b/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue3351IT.java
@@ -0,0 +1,81 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.ajax;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlElement;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class Issue3351IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+        webClient.getOptions().setJavaScriptEnabled(true);
+        webClient.setJavaScriptTimeout(60000);
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testButtonOnlySubmitsOne() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/buttonOnlySubmitsOne.xhtml");
+        assertTrue(page.asXml().contains("value1,value2,"));
+        
+        HtmlElement button = page.getHtmlElementById("form:button1");
+        page = button.click();
+        
+        webClient.waitForBackgroundJavaScript(60000);
+        assertTrue(page.asXml().contains("value2,"));
+        assertFalse(page.asXml().contains("value1,value2,"));
+    }
+}
diff --git a/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue939IT.java b/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue939IT.java
new file mode 100644
index 0000000..3575ace
--- /dev/null
+++ b/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Issue939IT.java
@@ -0,0 +1,141 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.ajax;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+import org.junit.Ignore;
+
+public class Issue939IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+        webClient.setJavaScriptEnabled(true);
+        webClient.setJavaScriptTimeout(60000);
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testCdataEscape1() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/issue939.xhtml");
+        assertTrue(page.getHtmlElementById("form1:out1").asText().equals("")); 
+        assertTrue(page.getHtmlElementById("form1:in1").asText().equals("")); 
+
+        HtmlTextInput in1 = (HtmlTextInput) page.getHtmlElementById("form1:in1");
+        in1.type("]]>");
+
+        // Submit the ajax request
+        HtmlSubmitInput button1 = (HtmlSubmitInput) page.getHtmlElementById("form1:button1");
+        page = (HtmlPage) button1.click();
+        webClient.waitForBackgroundJavaScript(60000);
+
+        // Check that the ajax request succeeds
+        assertTrue(page.getHtmlElementById("form1:out1").asText().equals("]]>")); 
+    }
+
+    @Test
+    public void testCdataEscape2() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/issue939.xhtml");
+        assertTrue(page.getHtmlElementById("form1:out1").asText().equals("")); 
+        assertTrue(page.getHtmlElementById("form1:in1").asText().equals("")); 
+
+        HtmlTextInput in1 = (HtmlTextInput) page.getHtmlElementById("form1:in1");
+        in1.type("<!");
+
+        // Submit the ajax request
+        HtmlSubmitInput button1 = (HtmlSubmitInput) page.getHtmlElementById("form1:button1");
+        page = (HtmlPage) button1.click();
+        webClient.waitForBackgroundJavaScript(60000);
+
+        // Check that the ajax request succeeds
+        assertTrue(page.getHtmlElementById("form1:out1").asText().equals("<!")); 
+    }
+
+    @Test
+    public void testCdataEscape3() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/issue939.xhtml");
+        assertTrue(page.getHtmlElementById("form1:out1").asText().equals("")); 
+        assertTrue(page.getHtmlElementById("form1:in1").asText().equals("")); 
+
+        HtmlTextInput in1 = (HtmlTextInput) page.getHtmlElementById("form1:in1");
+        in1.type("]");
+
+        // Submit the ajax request
+        HtmlSubmitInput button1 = (HtmlSubmitInput) page.getHtmlElementById("form1:button1");
+        page = (HtmlPage) button1.click();
+        webClient.waitForBackgroundJavaScript(60000);
+
+        // Check that the ajax request succeeds
+        assertTrue(page.getHtmlElementById("form1:out1").asText().equals("]")); 
+    }
+
+    @Test
+    public void testCdataEscape4() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/issue939.xhtml");
+        assertTrue(page.getHtmlElementById("form1:out1").asText().equals("")); 
+        assertTrue(page.getHtmlElementById("form1:in1").asText().equals("")); 
+
+        HtmlTextInput in1 = (HtmlTextInput) page.getHtmlElementById("form1:in1");
+        in1.type("<![CDATA[ ]]>");
+
+        // Submit the ajax request
+        HtmlSubmitInput button1 = (HtmlSubmitInput) page.getHtmlElementById("form1:button1");
+        page = (HtmlPage) button1.click();
+        webClient.waitForBackgroundJavaScript(60000);
+
+        // Check that the ajax request succeeds
+        assertTrue(page.getHtmlElementById("form1:out1").asText().equals("<![CDATA[ ]]>")); 
+    }
+}
diff --git a/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Spec1296IT.java b/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Spec1296IT.java
new file mode 100644
index 0000000..c83770a
--- /dev/null
+++ b/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Spec1296IT.java
@@ -0,0 +1,74 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.ajax;
+
+import com.gargoylesoftware.htmlunit.Page;
+import com.gargoylesoftware.htmlunit.WebClient;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+import org.junit.Ignore;
+
+public class Spec1296IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+        webClient.setJavaScriptEnabled(true);
+        webClient.setJavaScriptTimeout(60000);
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testPartialResponseWriterOutsideFacesServlet() throws Exception {
+        Page page = webClient.getPage(webUrl + "BeforeFilter");
+        String pageXml = page.getWebResponse().getContentAsString("UTF-8");
+        assertTrue(pageXml.matches("(?s).*<\\?xml\\s+version=\\'1\\.0\\'\\s+encoding=\\'UTF-8\\'\\?>\\s*<partial-response>\\s*<changes>\\s*<update\\s+id=\\\"foo\\\">\\s*<\\!\\[CDATA\\[\\s*\\]]>\\s*</update>\\s*</changes>\\s*</partial-response>.*"));
+    }
+}
diff --git a/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Spec220IT.java b/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Spec220IT.java
new file mode 100644
index 0000000..4ab6e26
--- /dev/null
+++ b/test/servlet30/ajax/src/test/java/com/sun/faces/test/servlet30/ajax/Spec220IT.java
@@ -0,0 +1,91 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.ajax;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
+import static junit.framework.Assert.assertTrue;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class Spec220IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+        webClient.setJavaScriptEnabled(true);
+        webClient.setJavaScriptTimeout(60000);
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testViewState() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/viewState1.xhtml");
+        HtmlTextInput textField = (HtmlTextInput) page.getElementById("firstName");
+        textField.setValueAttribute("ajaxFirstName");
+        
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("submitAjax");
+        page = button.click();
+        Thread.sleep(2000);
+        String pageText = page.asText();
+        assertTrue(pageText.contains("|ajaxFirstName|"));
+
+        textField = (HtmlTextInput) page.getElementById("firstName");
+        textField.setValueAttribute("nonAjaxFirstName");
+        
+        button = (HtmlSubmitInput) page.getElementById("submitNonAjax");
+        page = button.click();
+        Thread.sleep(2000);
+        pageText = page.asText();
+        assertTrue(pageText.contains("|nonAjaxFirstName|"));
+    }
+}
diff --git a/test/servlet30/component/pom.xml b/test/servlet30/component/pom.xml
new file mode 100644
index 0000000..fc55d25
--- /dev/null
+++ b/test/servlet30/component/pom.xml
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.servlet30</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <artifactId>component</artifactId>
+    <packaging>war</packaging>
+    <name>Mojarra ${project.version} - Test - Servlet 3.0 - Component</name>
+    <build>
+        <finalName>test-servlet30-component</finalName>
+    </build>
+    <properties>
+        <netbeans.hint.deploy.server>gfv3ee6</netbeans.hint.deploy.server>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/test/servlet30/component/src/main/java/com/sun/faces/test/servlet30/component/CreateComponentBean.java b/test/servlet30/component/src/main/java/com/sun/faces/test/servlet30/component/CreateComponentBean.java
new file mode 100644
index 0000000..27113b3
--- /dev/null
+++ b/test/servlet30/component/src/main/java/com/sun/faces/test/servlet30/component/CreateComponentBean.java
@@ -0,0 +1,71 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.component;
+
+import javax.faces.application.Application;
+import javax.faces.application.ViewHandler;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.NoneScoped;
+import javax.faces.component.html.HtmlInputText;
+import javax.faces.context.FacesContext;
+import javax.faces.view.ViewDeclarationLanguage;
+
+ at ManagedBean
+ at NoneScoped
+public class CreateComponentBean {
+    
+    public String getDoCreateComponent() {
+        String result = "FAILED";
+        FacesContext context = FacesContext.getCurrentInstance();
+        Application application = context.getApplication();
+        
+        ViewHandler vh = application.getViewHandler();
+        ViewDeclarationLanguage vdl = vh.getViewDeclarationLanguage(context, context.getViewRoot().getViewId());
+        
+        HtmlInputText inputText = 
+                (HtmlInputText) vdl.createComponent(context, 
+                "http://java.sun.com/jsf/html", "inputText", null);
+        if ("javax.faces.Text".equals(inputText.getRendererType())) {
+            result = "SUCCESS";
+        }
+        
+        return result;
+    }    
+}
diff --git a/test/servlet30/component/src/main/java/com/sun/faces/test/servlet30/component/ListenerComponent.java b/test/servlet30/component/src/main/java/com/sun/faces/test/servlet30/component/ListenerComponent.java
new file mode 100644
index 0000000..a091faf
--- /dev/null
+++ b/test/servlet30/component/src/main/java/com/sun/faces/test/servlet30/component/ListenerComponent.java
@@ -0,0 +1,64 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.component;
+
+import java.util.Map;
+import javax.faces.component.FacesComponent;
+import javax.faces.component.html.HtmlInputText;
+import javax.faces.context.FacesContext;
+import javax.faces.event.AbortProcessingException;
+import javax.faces.event.ComponentSystemEvent;
+import javax.faces.event.ListenerFor;
+import javax.faces.event.PreRenderComponentEvent;
+
+ at FacesComponent(value = "com.sun.faces.test.servlet30.component.ListenerComponent")
+ at ListenerFor(systemEventClass = PreRenderComponentEvent.class)
+public class ListenerComponent extends HtmlInputText {
+
+    @Override
+    public void processEvent(ComponentSystemEvent event) throws AbortProcessingException {
+        Map<String, Object> requestMap = FacesContext.getCurrentInstance().getExternalContext().getRequestMap();
+        if (event instanceof PreRenderComponentEvent) {
+            requestMap.put("preRenderComponentEvent", "preRenderComponentEvent");
+        } else {
+            super.processEvent(event);
+        }
+    }
+}
diff --git a/test/servlet30/component/src/main/java/com/sun/faces/test/servlet30/component/ListenersComponent.java b/test/servlet30/component/src/main/java/com/sun/faces/test/servlet30/component/ListenersComponent.java
new file mode 100644
index 0000000..66aee2a
--- /dev/null
+++ b/test/servlet30/component/src/main/java/com/sun/faces/test/servlet30/component/ListenersComponent.java
@@ -0,0 +1,71 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.component;
+
+import java.util.Map;
+import javax.faces.component.FacesComponent;
+import javax.faces.component.html.HtmlInputText;
+import javax.faces.context.FacesContext;
+import javax.faces.event.AbortProcessingException;
+import javax.faces.event.ComponentSystemEvent;
+import javax.faces.event.ListenerFor;
+import javax.faces.event.ListenersFor;
+import javax.faces.event.PostValidateEvent;
+import javax.faces.event.PreValidateEvent;
+
+ at FacesComponent(value = "com.sun.faces.test.servlet30.component.ListenersComponent")
+ at ListenersFor({
+    @ListenerFor(systemEventClass = PreValidateEvent.class),
+    @ListenerFor(systemEventClass = PostValidateEvent.class)
+})
+public class ListenersComponent extends HtmlInputText {
+
+    @Override
+    public void processEvent(ComponentSystemEvent event) throws AbortProcessingException {
+        Map<String, Object> requestMap = FacesContext.getCurrentInstance().getExternalContext().getRequestMap();
+        if (event instanceof PreValidateEvent) {
+            requestMap.put("preValidateEvent", "preValidateEvent");
+        } else if (event instanceof PostValidateEvent) {
+            requestMap.put("postValidateEvent", "postValidateEvent");
+        } else {
+            super.processEvent(event);
+        }
+    }
+}
diff --git a/test/servlet30/component/src/main/java/com/sun/faces/test/servlet30/component/ResourceDependencyBean.java b/test/servlet30/component/src/main/java/com/sun/faces/test/servlet30/component/ResourceDependencyBean.java
new file mode 100644
index 0000000..6909781
--- /dev/null
+++ b/test/servlet30/component/src/main/java/com/sun/faces/test/servlet30/component/ResourceDependencyBean.java
@@ -0,0 +1,69 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.component;
+
+import java.io.Serializable;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.ViewScoped;
+import javax.faces.component.UIOutput;
+
+ at ManagedBean(name = "resourceDependencyBean")
+ at ViewScoped
+public class ResourceDependencyBean implements Serializable {
+
+    private int counter = 0;
+    private UIOutput hello;
+
+    public void setHello(UIOutput hello) {
+        this.hello = hello;
+    }
+
+    public UIOutput getHello() {
+        return this.hello;
+    }
+
+    public void add() {
+        ++counter;
+    }
+
+    public int getCounter() {
+        return counter;
+    }
+}
diff --git a/test/servlet30/component/src/main/java/com/sun/faces/test/servlet30/component/ResourceDependencyRenderer.java b/test/servlet30/component/src/main/java/com/sun/faces/test/servlet30/component/ResourceDependencyRenderer.java
new file mode 100644
index 0000000..7b26ca9
--- /dev/null
+++ b/test/servlet30/component/src/main/java/com/sun/faces/test/servlet30/component/ResourceDependencyRenderer.java
@@ -0,0 +1,60 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.component;
+
+import java.io.IOException;
+import javax.faces.application.ResourceDependencies;
+import javax.faces.application.ResourceDependency;
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.render.Renderer;
+
+ at ResourceDependencies({
+    @ResourceDependency(library = "resourceDependency", name = "resourceDependency.js")})
+public class ResourceDependencyRenderer extends Renderer {
+
+    @Override
+    public void encodeBegin(FacesContext context, UIComponent component) throws IOException {
+        context.getResponseWriter().startElement("button", null);
+        context.getResponseWriter().writeAttribute("onclick", "javascript:hello();", null);
+        context.getResponseWriter().writeText("Hello, world", null);
+        context.getResponseWriter().endElement("button");
+    }
+}
diff --git a/test/servlet30/component/src/main/webapp/WEB-INF/eventListener.taglib.xml b/test/servlet30/component/src/main/webapp/WEB-INF/eventListener.taglib.xml
new file mode 100644
index 0000000..1594549
--- /dev/null
+++ b/test/servlet30/component/src/main/webapp/WEB-INF/eventListener.taglib.xml
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<facelet-taglib xmlns="http://xmlns.jcp.org/xml/ns/javaee"
+                xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+                xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-facelettaglibrary_2_2.xsd" version="2.2">
+    <namespace>http://eventlistener</namespace>
+    <tag>
+        <tag-name>listenerComponent</tag-name>
+        <component>
+            <component-type>com.sun.faces.test.servlet30.component.ListenerComponent</component-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>listenersComponent</tag-name>
+        <component>
+            <component-type>com.sun.faces.test.servlet30.component.ListenersComponent</component-type>
+        </component>
+    </tag>
+</facelet-taglib>
diff --git a/test/servlet30/component/src/main/webapp/WEB-INF/faces-config.xml b/test/servlet30/component/src/main/webapp/WEB-INF/faces-config.xml
new file mode 100644
index 0000000..b0b19f2
--- /dev/null
+++ b/test/servlet30/component/src/main/webapp/WEB-INF/faces-config.xml
@@ -0,0 +1,56 @@
+<?xml version='1.0' encoding='UTF-8'?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<faces-config version="2.1"
+              xmlns="http://java.sun.com/xml/ns/javaee"
+              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+              xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_1.xsd">
+    <render-kit>
+        <renderer>
+            <component-family>javax.faces.Output</component-family>
+            <renderer-type>com.sun.faces.test.servlet30.component.ResourceDependencyRenderer</renderer-type>
+            <renderer-class>com.sun.faces.test.servlet30.component.ResourceDependencyRenderer</renderer-class>
+        </renderer>
+    </render-kit>
+</faces-config>
diff --git a/test/servlet30/component/src/main/webapp/WEB-INF/glassfish-web.xml b/test/servlet30/component/src/main/webapp/WEB-INF/glassfish-web.xml
new file mode 100644
index 0000000..11b47c0
--- /dev/null
+++ b/test/servlet30/component/src/main/webapp/WEB-INF/glassfish-web.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
+<glassfish-web-app error-url="">
+  <context-root>/test-servlet30-component</context-root>
+  <class-loader delegate="true"/>
+  <jsp-config>
+    <property name="keepgenerated" value="true">
+      <description>Keep a copy of the generated servlet class' java code.</description>
+    </property>
+  </jsp-config>
+</glassfish-web-app>
diff --git a/test/servlet30/component/src/main/webapp/WEB-INF/resourceDependency.taglib.xml b/test/servlet30/component/src/main/webapp/WEB-INF/resourceDependency.taglib.xml
new file mode 100644
index 0000000..9ca9e56
--- /dev/null
+++ b/test/servlet30/component/src/main/webapp/WEB-INF/resourceDependency.taglib.xml
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<facelet-taglib xmlns="http://java.sun.com/xml/ns/javaee" version="2.0">
+    <namespace>http://javaserverfaces.java.net/resourceDependency</namespace>
+    <tag>
+        <tag-name>hello</tag-name>
+        <description>
+            Writes a hello world.
+        </description>
+        <component>
+            <component-type>javax.faces.Output</component-type>
+            <renderer-type>com.sun.faces.test.servlet30.component.ResourceDependencyRenderer</renderer-type>
+        </component>
+    </tag>
+</facelet-taglib>
diff --git a/test/servlet30/component/src/main/webapp/WEB-INF/web.xml b/test/servlet30/component/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..bef0fde
--- /dev/null
+++ b/test/servlet30/component/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" 
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>${webapp.projectStage}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
+        <param-value>${webapp.partialStateSaving}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>${webapp.stateSavingMethod}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.FACELETS_LIBRARIES</param-name>
+        <param-value>/WEB-INF/resourceDependency.taglib.xml;/WEB-INF/eventListener.taglib.xml</param-value>
+    </context-param>
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+</web-app>
diff --git a/test/servlet30/component/src/main/webapp/componentEndlessLoop.xhtml b/test/servlet30/component/src/main/webapp/componentEndlessLoop.xhtml
new file mode 100644
index 0000000..81b2b1c
--- /dev/null
+++ b/test/servlet30/component/src/main/webapp/componentEndlessLoop.xhtml
@@ -0,0 +1,62 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title></title>
+    </h:head>
+    <h:body>
+        <h:form id="form">
+            <h:inputText id="input1" />
+            <br/>
+            <br/>
+            <h:inputText id="input2" />
+            <br/>
+            <br/>
+            <h:commandButton id="button" value="submit" />
+        </h:form>
+    </h:body>
+</html>
diff --git a/test/servlet30/component/src/main/webapp/createComponent.xhtml b/test/servlet30/component/src/main/webapp/createComponent.xhtml
new file mode 100644
index 0000000..0fc63e1
--- /dev/null
+++ b/test/servlet30/component/src/main/webapp/createComponent.xhtml
@@ -0,0 +1,56 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title></title>
+    </h:head>
+    <h:body>
+        <h:form prependId="false" id="form">
+            <p>result: #{createComponentBean.doCreateComponent}</p>
+        </h:form>
+    </h:body>
+</html>
diff --git a/test/servlet30/component/src/main/webapp/eventListener.xhtml b/test/servlet30/component/src/main/webapp/eventListener.xhtml
new file mode 100644
index 0000000..23312f2
--- /dev/null
+++ b/test/servlet30/component/src/main/webapp/eventListener.xhtml
@@ -0,0 +1,66 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:eventListener="http://eventlistener"
+      >
+    <h:head>
+        <title></title>
+    </h:head>
+    <h:body>
+        <h:form prependId="false">
+            <eventListener:listenersComponent id="listenersComponent">
+                <f:validateLength minimum="3"/>
+            </eventListener:listenersComponent>
+            <eventListener:listenerComponent id="listenerComponent">
+                <f:validateLength minimum="3"/>
+            </eventListener:listenerComponent>
+            <p>#{preRenderComponentEvent} #{preValidateEvent} #{postValidateEvent}</p>
+            <h:commandButton id="button" value="reload" />
+        </h:form>
+    </h:body>
+</html>
diff --git a/test/servlet30/component/src/main/webapp/resourceDependency.xhtml b/test/servlet30/component/src/main/webapp/resourceDependency.xhtml
new file mode 100644
index 0000000..0229d03
--- /dev/null
+++ b/test/servlet30/component/src/main/webapp/resourceDependency.xhtml
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:resourceDependency="http://javaserverfaces.java.net/resourceDependency">
+    <h:head>
+    </h:head>
+    <h:body> 
+        <h:form id="form">
+            <resourceDependency:hello binding="#{resourceDependencyBean.hello}"/>
+            <div>
+                <h:commandButton id="submit" value="Increment" action="#{resourceDependencyBean.add}" />
+            </div>
+            <h:outputText value="#{resourceDependencyBean.counter}" />
+        </h:form>
+    </h:body>
+</html>
diff --git a/test/servlet30/component/src/main/webapp/resources/resourceDependency/resourceDependency.js b/test/servlet30/component/src/main/webapp/resources/resourceDependency/resourceDependency.js
new file mode 100644
index 0000000..85f7685
--- /dev/null
+++ b/test/servlet30/component/src/main/webapp/resources/resourceDependency/resourceDependency.js
@@ -0,0 +1,4 @@
+
+function hello() {
+    alert("Hello, world!");
+}
diff --git a/test/servlet30/component/src/test/java/com/sun/faces/test/servlet30/component/Issue2544IT.java b/test/servlet30/component/src/test/java/com/sun/faces/test/servlet30/component/Issue2544IT.java
new file mode 100644
index 0000000..c1d59e9
--- /dev/null
+++ b/test/servlet30/component/src/test/java/com/sun/faces/test/servlet30/component/Issue2544IT.java
@@ -0,0 +1,78 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.component;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import org.junit.After;
+import static org.junit.Assert.assertTrue;
+import org.junit.Before;
+import org.junit.Test;
+
+public class Issue2544IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testComponentEndlessLoop() throws Exception {
+        int cnt = 0;
+        while (cnt <= 100) {
+            HtmlPage page = webClient.getPage(webUrl + "faces/componentEndlessLoop.xhtml");
+            HtmlSubmitInput button = (HtmlSubmitInput) page.getHtmlElementById("form:button");
+            button.click();
+            cnt++;
+        }
+
+        assertTrue(cnt == 101);
+    }
+}
diff --git a/test/servlet30/component/src/test/java/com/sun/faces/test/servlet30/component/Issue2740IT.java b/test/servlet30/component/src/test/java/com/sun/faces/test/servlet30/component/Issue2740IT.java
new file mode 100644
index 0000000..b174e33
--- /dev/null
+++ b/test/servlet30/component/src/test/java/com/sun/faces/test/servlet30/component/Issue2740IT.java
@@ -0,0 +1,74 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.component;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlElement;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class Issue2740IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testIssue2544() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/resourceDependency.xhtml");
+        assertTrue(page.asXml().contains("resourceDependency.js"));
+        HtmlElement button = page.getHtmlElementById("form:submit");
+        page = button.click();
+        assertTrue(page.asXml().contains("resourceDependency.js"));
+    }
+}
diff --git a/test/servlet30/component/src/test/java/com/sun/faces/test/servlet30/component/Issue3319IT.java b/test/servlet30/component/src/test/java/com/sun/faces/test/servlet30/component/Issue3319IT.java
new file mode 100644
index 0000000..499be1e
--- /dev/null
+++ b/test/servlet30/component/src/test/java/com/sun/faces/test/servlet30/component/Issue3319IT.java
@@ -0,0 +1,83 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.component;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import com.sun.faces.test.junit.JsfTest;
+import com.sun.faces.test.junit.JsfTestRunner;
+import static com.sun.faces.test.junit.JsfVersion.JSF_2_2_0;
+import org.junit.After;
+import static org.junit.Assert.assertTrue;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+ at RunWith(JsfTestRunner.class)
+public class Issue3319IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @JsfTest(value = JSF_2_2_0)
+    @Test
+    public void testEventListener() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/eventListener.xhtml");
+        assertTrue(page.asText().contains("preRenderComponentEvent"));
+
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("button");
+        page = button.click();
+
+        assertTrue(page.asText().contains("preValidateEvent"));
+        assertTrue(page.asText().contains("postValidateEvent"));
+    }
+}
diff --git a/test/servlet30/component/src/test/java/com/sun/faces/test/servlet30/component/Spec599IT.java b/test/servlet30/component/src/test/java/com/sun/faces/test/servlet30/component/Spec599IT.java
new file mode 100644
index 0000000..2421927
--- /dev/null
+++ b/test/servlet30/component/src/test/java/com/sun/faces/test/servlet30/component/Spec599IT.java
@@ -0,0 +1,70 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.component;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.assertTrue;
+
+public class Spec599IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testCreateComponent() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/createComponent.xhtml");
+        assertTrue(page.asText().contains("SUCCESS"));
+    }
+}
diff --git a/test/servlet30/composite/pom.xml b/test/servlet30/composite/pom.xml
new file mode 100644
index 0000000..7e230a4
--- /dev/null
+++ b/test/servlet30/composite/pom.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.servlet30</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.servlet30</groupId>
+    <artifactId>composite</artifactId>
+    <packaging>war</packaging>
+    <name>Mojarra ${project.version} - Test - Servlet 3.0 - Composite Components</name>
+    <build>
+        <finalName>test-servlet30-composite</finalName>
+    </build>
+    <properties>
+        <netbeans.hint.deploy.server>gfv3ee6</netbeans.hint.deploy.server>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/test/servlet30/composite/src/main/java/com/sun/faces/test/servlet30/composite/Action3Bean.java b/test/servlet30/composite/src/main/java/com/sun/faces/test/servlet30/composite/Action3Bean.java
new file mode 100644
index 0000000..96534a2
--- /dev/null
+++ b/test/servlet30/composite/src/main/java/com/sun/faces/test/servlet30/composite/Action3Bean.java
@@ -0,0 +1,66 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.composite;
+
+import javax.faces.application.FacesMessage;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.RequestScoped;
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+
+ at ManagedBean(name = "action3Bean")
+ at RequestScoped
+public class Action3Bean {
+
+    public String action() {
+        FacesContext ctx = FacesContext.getCurrentInstance();
+        UIComponent c = UIComponent.getCurrentComponent(ctx);
+        ctx.addMessage(null,
+                new FacesMessage(FacesMessage.SEVERITY_ERROR,
+                "Action invoked: " + c.getClientId(ctx),
+                "Action invoked: " + c.getClientId(ctx)));
+        return "";
+
+    }
+
+    public String submit() {
+        throw new RuntimeException();
+    }
+}
diff --git a/test/servlet30/composite/src/main/java/com/sun/faces/test/servlet30/composite/ActionBean.java b/test/servlet30/composite/src/main/java/com/sun/faces/test/servlet30/composite/ActionBean.java
new file mode 100644
index 0000000..163fc59
--- /dev/null
+++ b/test/servlet30/composite/src/main/java/com/sun/faces/test/servlet30/composite/ActionBean.java
@@ -0,0 +1,69 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.composite;
+
+import javax.faces.application.FacesMessage;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.RequestScoped;
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+
+/**
+ * @author Manfred Riem (manfred.riem at oracle.com)
+ */
+ at ManagedBean(name = "actionBean")
+ at RequestScoped
+public class ActionBean {
+
+    public String action() {
+        FacesContext ctx = FacesContext.getCurrentInstance();
+        UIComponent c = UIComponent.getCurrentComponent(ctx);
+        ctx.addMessage(null,
+                new FacesMessage(FacesMessage.SEVERITY_ERROR,
+                "Action invoked: " + c.getClientId(ctx),
+                "Action invoked: " + c.getClientId(ctx)));
+        return "";
+
+    }
+
+    public String submit() {
+        throw new RuntimeException();
+    }
+}
diff --git a/test/servlet30/composite/src/main/java/com/sun/faces/test/servlet30/composite/ActionSourceBean.java b/test/servlet30/composite/src/main/java/com/sun/faces/test/servlet30/composite/ActionSourceBean.java
new file mode 100644
index 0000000..633357a
--- /dev/null
+++ b/test/servlet30/composite/src/main/java/com/sun/faces/test/servlet30/composite/ActionSourceBean.java
@@ -0,0 +1,84 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.composite;
+
+import javax.faces.application.FacesMessage;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.RequestScoped;
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.event.AbortProcessingException;
+import javax.faces.event.ActionEvent;
+import javax.faces.event.ActionListener;
+
+/**
+ * @author Manfred Riem (manfred.riem at oracle.com)
+ */
+ at ManagedBean(name = "actionSourceBean")
+ at RequestScoped
+public class ActionSourceBean {
+    /**
+     * Get the action listener.
+     * 
+     * @return the action listener.
+     */
+    public ActionListener getActionListener() {
+        return new ActionListener() {
+            /**
+             * Process the action.
+             * 
+             * <p>
+             *  This action listener will add messages to the context.
+             * </p>
+             */
+            public void processAction(ActionEvent event)
+                    throws AbortProcessingException {
+                FacesContext ctx = FacesContext.getCurrentInstance();
+                UIComponent source = (UIComponent) event.getSource();
+                String cid = source.getClientId(ctx);
+                ctx.addMessage(cid,
+                        new FacesMessage(FacesMessage.SEVERITY_INFO,
+                        "Action Invoked : " + cid,
+                        "Action Invoked : " + cid));
+            }
+        };
+
+    }
+}
diff --git a/test/servlet30/composite/src/main/java/com/sun/faces/test/servlet30/composite/AttributeTypeBean.java b/test/servlet30/composite/src/main/java/com/sun/faces/test/servlet30/composite/AttributeTypeBean.java
new file mode 100644
index 0000000..f51732d
--- /dev/null
+++ b/test/servlet30/composite/src/main/java/com/sun/faces/test/servlet30/composite/AttributeTypeBean.java
@@ -0,0 +1,95 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.composite;
+
+import java.util.Map;
+import javax.el.ELContext;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.RequestScoped;
+import javax.faces.context.FacesContext;
+
+ at ManagedBean(name = "attributeTypeBean")
+ at RequestScoped
+public class AttributeTypeBean {
+
+    private String test;
+
+    public String from(Map<String, Object> attrs) {
+        FacesContext context = FacesContext.getCurrentInstance();
+        ELContext elc = context.getELContext();
+        Class<?> type = elc.getELResolver().getType(elc, attrs, test);
+        return String.format("type of @%s: %s", test, type == null ? null : type.getSimpleName());
+    }
+
+    public String getTest() {
+        return test;
+    }
+
+    public void setTest(String test) {
+        this.test = test;
+    }
+
+    public static abstract class Animal {
+    }
+
+    public static abstract class Dog extends Animal {
+    }
+
+    public static class Wienerdoodle extends Dog {
+    }
+
+    private final Wienerdoodle dog = new Wienerdoodle();
+
+    public Animal getAnimal() {
+        return dog;
+    }
+
+    public Dog getDog() {
+        return dog;
+    }
+
+    public Wienerdoodle getWienerdoodle() {
+        return dog;
+    }
+
+    public Dog getLostDog() {
+        return null;
+    }
+}
diff --git a/test/servlet30/composite/src/main/java/com/sun/faces/test/servlet30/composite/AttributeTypeComponent.java b/test/servlet30/composite/src/main/java/com/sun/faces/test/servlet30/composite/AttributeTypeComponent.java
new file mode 100644
index 0000000..c5e71f6
--- /dev/null
+++ b/test/servlet30/composite/src/main/java/com/sun/faces/test/servlet30/composite/AttributeTypeComponent.java
@@ -0,0 +1,53 @@
+
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.composite;
+
+import javax.faces.component.FacesComponent;
+import javax.faces.component.UINamingContainer;
+
+ at FacesComponent(value = "com.sun.faces.test.servlet30.composite.AttributeTypeComponent")
+public class AttributeTypeComponent extends UINamingContainer {
+
+    public AttributeTypeComponent() {
+        getAttributes().put("untypedXsetByApi", new AttributeTypeBean.Wienerdoodle());
+        getAttributes().put("typedXsetByApi", new AttributeTypeBean.Wienerdoodle());
+    }
+}
diff --git a/test/servlet30/composite/src/main/java/com/sun/faces/test/servlet30/composite/BasicBean.java b/test/servlet30/composite/src/main/java/com/sun/faces/test/servlet30/composite/BasicBean.java
new file mode 100644
index 0000000..83f1a9d
--- /dev/null
+++ b/test/servlet30/composite/src/main/java/com/sun/faces/test/servlet30/composite/BasicBean.java
@@ -0,0 +1,63 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.composite;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.RequestScoped;
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+
+/**
+ * @author Manfred Riem (manfred.riem at oracle.com)
+ */
+ at ManagedBean(name = "basicBean")
+ at RequestScoped
+public class BasicBean {
+
+    /**
+     * Are we inside a composite component.
+     *
+     * @return true if we are, false otherwise.
+     */
+    public String getInsideCompositeComponent() {
+        UIComponent currentComposite = UIComponent.getCurrentCompositeComponent(FacesContext.getCurrentInstance());
+        return "" + (currentComposite != null ? UIComponent.isCompositeComponent(currentComposite) : false);
+    }
+}
diff --git a/test/servlet30/composite/src/main/java/com/sun/faces/test/servlet30/composite/CompositeBean.java b/test/servlet30/composite/src/main/java/com/sun/faces/test/servlet30/composite/CompositeBean.java
new file mode 100644
index 0000000..afeb546
--- /dev/null
+++ b/test/servlet30/composite/src/main/java/com/sun/faces/test/servlet30/composite/CompositeBean.java
@@ -0,0 +1,93 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.composite;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.RequestScoped;
+
+/**
+ * A session scoped bean used in some tests for composite components
+ * 
+ * @author Manfred Riem (manfred.riem at oracle.com)
+ */
+ at ManagedBean
+ at RequestScoped
+public class CompositeBean {
+    /**
+     * Stores input 1.
+     */
+    private String input1;
+    
+    /**
+     * Get EL value.
+     * 
+     * @return "EL value"
+     */
+    public String getValue() {
+        return "EL value";
+    }
+    
+    /**
+     * Get input 1.
+     * 
+     * @return input 1.
+     */
+    public String getInput1() {
+        return input1;
+    }
+    
+    /**
+     * Set input 1.
+     * 
+     * @param input1 input 1.
+     */
+    public void setInput1(String input1) {
+        this.input1 = input1;
+    }
+    
+    /**
+     * Action that handles input 1.
+     * 
+     * @return "input1"
+     */
+    public String doInput1() {
+        return "input1";
+    }
+}
diff --git a/test/servlet30/composite/src/main/java/com/sun/faces/test/servlet30/composite/ConverterBean.java b/test/servlet30/composite/src/main/java/com/sun/faces/test/servlet30/composite/ConverterBean.java
new file mode 100644
index 0000000..2fab731
--- /dev/null
+++ b/test/servlet30/composite/src/main/java/com/sun/faces/test/servlet30/composite/ConverterBean.java
@@ -0,0 +1,77 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.composite;
+
+import javax.faces.application.FacesMessage;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.RequestScoped;
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.convert.Converter;
+
+/**
+ * A session scoped bean used in some tests for composite components
+ *
+ * @author Manfred Riem (manfred.riem at oracle.com)
+ */
+ at ManagedBean(name = "converterBean")
+ at RequestScoped
+public class ConverterBean {
+
+    public Converter getConverter() {
+        return new TestConverter();
+    }
+
+    public static class TestConverter implements Converter {
+
+        public Object getAsObject(FacesContext context, UIComponent component, String value) {
+            return value;
+        }
+
+        public String getAsString(FacesContext context, UIComponent component, Object value) {
+            String cid = component.getClientId(context);
+            context.addMessage(cid,
+                    new FacesMessage(FacesMessage.SEVERITY_INFO,
+                    "Converter Invoked : " + cid,
+                    "Converter Invoked : " + cid));
+            return value.toString();
+        }
+    }
+}
diff --git a/test/servlet30/composite/src/main/java/com/sun/faces/test/servlet30/composite/IfBean.java b/test/servlet30/composite/src/main/java/com/sun/faces/test/servlet30/composite/IfBean.java
new file mode 100644
index 0000000..fb1f203
--- /dev/null
+++ b/test/servlet30/composite/src/main/java/com/sun/faces/test/servlet30/composite/IfBean.java
@@ -0,0 +1,55 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.composite;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.RequestScoped;
+
+/**
+ * @author Manfred Riem (manfred.riem at oracle.com)
+ */
+ at ManagedBean
+ at RequestScoped
+public class IfBean {
+
+    public boolean getAlwaysTrue() {
+        return true;
+    }
+}
diff --git a/test/servlet30/composite/src/main/java/com/sun/faces/test/servlet30/composite/Issue1943Bean.java b/test/servlet30/composite/src/main/java/com/sun/faces/test/servlet30/composite/Issue1943Bean.java
new file mode 100644
index 0000000..a41c830
--- /dev/null
+++ b/test/servlet30/composite/src/main/java/com/sun/faces/test/servlet30/composite/Issue1943Bean.java
@@ -0,0 +1,42 @@
+package com.sun.faces.test.servlet30.composite;
+
+import java.io.Serializable;
+
+import javax.faces.application.FacesMessage;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.SessionScoped;
+import javax.faces.context.FacesContext;
+import javax.faces.event.AbortProcessingException;
+import javax.faces.event.ValueChangeEvent;
+
+ at ManagedBean
+ at SessionScoped
+public class Issue1943Bean implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+    private String groupToAdd = "select one";
+
+    public void valueChange(ValueChangeEvent vce) throws AbortProcessingException {
+        System.err.println("VALUECHANGE CALLED!!!");
+        FacesMessage fMsg = new FacesMessage(FacesMessage.SEVERITY_INFO,
+                "valueChange Called...", null);
+        FacesContext.getCurrentInstance().addMessage(null, fMsg);
+
+    }
+
+    public String getGroupToAdd() {
+        return groupToAdd;
+    }
+
+    public void setGroupToAdd(String groupToAdd) {
+        this.groupToAdd = groupToAdd;
+    }
+
+    public String removeGroup() {
+        System.err.println("REMOVEGROUP CALLED!!!");
+        FacesMessage fMsg = new FacesMessage(FacesMessage.SEVERITY_INFO,
+                "removeGroup Called...", null);
+        FacesContext.getCurrentInstance().addMessage(null, fMsg);
+        return null;
+    }
+}
diff --git a/test/servlet30/composite/src/main/java/com/sun/faces/test/servlet30/composite/Issue2176Bean.java b/test/servlet30/composite/src/main/java/com/sun/faces/test/servlet30/composite/Issue2176Bean.java
new file mode 100644
index 0000000..1ec9154
--- /dev/null
+++ b/test/servlet30/composite/src/main/java/com/sun/faces/test/servlet30/composite/Issue2176Bean.java
@@ -0,0 +1,101 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.composite;
+
+import java.beans.BeanInfo;
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.SessionScoped;
+import javax.faces.component.UIComponent;
+import javax.faces.component.visit.VisitCallback;
+import javax.faces.component.visit.VisitContext;
+import javax.faces.component.visit.VisitResult;
+import javax.faces.context.FacesContext;
+
+/**
+ * @author Manfred Riem (manfred.riem at oracle.com)
+ */
+ at ManagedBean(name = "issue2176Bean")
+ at SessionScoped
+public class Issue2176Bean implements Serializable {
+
+    /**
+     * Stores the previos count.
+     */
+    private int previousCount = -1;
+
+    /**
+     * Get the status.
+     */
+    public String getStatus() {
+        String result = "SUCCESS";
+        final List<Integer> seenCount = new ArrayList<Integer>();
+        seenCount.add(0);
+        VisitContext visitContext = VisitContext.createVisitContext(FacesContext.getCurrentInstance());
+        FacesContext.getCurrentInstance().getViewRoot().visitTree(visitContext, new VisitCallback() {
+
+            public VisitResult visit(VisitContext context, UIComponent target) {
+                if ("javax.faces.Composite".equals(target.getRendererType())) {
+                    BeanInfo beanInfo = (BeanInfo) target.getAttributes().get(UIComponent.BEANINFO_KEY);
+                    Collection<String> ids = (Collection<String>) beanInfo.getBeanDescriptor().getValue(UIComponent.ATTRS_WITH_DECLARED_DEFAULT_VALUES);
+
+                    int count = 0;
+                    if (ids != null) {
+                        for (String id : ids) {
+                            count++;
+                        }
+                    }
+                    
+                    seenCount.set(0, Integer.valueOf(seenCount.get(0).intValue() + count));
+                }
+                return VisitResult.ACCEPT;
+            }
+        });
+        int observedCount = (Integer) seenCount.get(0);
+        if (previousCount != -1 && observedCount > previousCount) {
+            result = "FAILED";
+        }
+        previousCount = observedCount;
+        return result;
+    }
+}
diff --git a/test/servlet30/composite/src/main/java/com/sun/faces/test/servlet30/composite/Issue2320PhaseListener.java b/test/servlet30/composite/src/main/java/com/sun/faces/test/servlet30/composite/Issue2320PhaseListener.java
new file mode 100644
index 0000000..77f0e81
--- /dev/null
+++ b/test/servlet30/composite/src/main/java/com/sun/faces/test/servlet30/composite/Issue2320PhaseListener.java
@@ -0,0 +1,68 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.composite;
+
+import javax.faces.context.FacesContext;
+import javax.faces.event.PhaseEvent;
+import javax.faces.event.PhaseId;
+import javax.faces.event.PhaseListener;
+import com.sun.faces.util.Util;
+
+import java.util.HashSet;
+
+public class Issue2320PhaseListener implements PhaseListener {
+
+    @Override
+    public void afterPhase(PhaseEvent event) {
+        if (event.getFacesContext().getViewRoot().getViewId().equals("/issue2320.xhtml")) {
+            FacesContext context = FacesContext.getCurrentInstance();
+            Util.checkIdUniqueness(context, context.getViewRoot(), new HashSet<String>());
+        }
+    }
+
+    @Override
+    public void beforePhase(PhaseEvent event) {
+    }
+
+    @Override
+    public PhaseId getPhaseId() {
+        return PhaseId.RENDER_RESPONSE;
+    }
+}
diff --git a/test/servlet30/composite/src/main/java/com/sun/faces/test/servlet30/composite/PreRenderViewBean.java b/test/servlet30/composite/src/main/java/com/sun/faces/test/servlet30/composite/PreRenderViewBean.java
new file mode 100644
index 0000000..9d50410
--- /dev/null
+++ b/test/servlet30/composite/src/main/java/com/sun/faces/test/servlet30/composite/PreRenderViewBean.java
@@ -0,0 +1,70 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.composite;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.RequestScoped;
+
+ at ManagedBean(name = "preRenderViewBean")
+ at RequestScoped
+public class PreRenderViewBean {
+
+    private List<PreRenderViewDataItem> data;
+
+    public List<PreRenderViewDataItem> getData() {
+
+        if (data == null) {
+            data = new ArrayList<PreRenderViewDataItem>();
+            for (int i = 0; i < 10; i++) {
+                data.add(this.createTestDataItem("Item" + i));
+            }
+        }
+
+        return data;
+    }
+
+    public PreRenderViewDataItem createTestDataItem(String text) {
+        PreRenderViewDataItem item = new PreRenderViewDataItem();
+        item.setText(text);
+        return item;
+    }
+}
diff --git a/test/servlet30/composite/src/main/java/com/sun/faces/test/servlet30/composite/PreRenderViewComponent1.java b/test/servlet30/composite/src/main/java/com/sun/faces/test/servlet30/composite/PreRenderViewComponent1.java
new file mode 100644
index 0000000..b844f90
--- /dev/null
+++ b/test/servlet30/composite/src/main/java/com/sun/faces/test/servlet30/composite/PreRenderViewComponent1.java
@@ -0,0 +1,98 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.composite;
+
+import java.util.Map;
+import javax.el.ExpressionFactory;
+import javax.el.ValueExpression;
+import javax.faces.component.FacesComponent;
+import javax.faces.component.NamingContainer;
+import javax.faces.component.UIComponent;
+import javax.faces.component.html.HtmlInputText;
+import javax.faces.component.html.HtmlOutputText;
+import javax.faces.context.FacesContext;
+import javax.faces.event.AbortProcessingException;
+import javax.faces.event.ComponentSystemEvent;
+import javax.faces.event.ComponentSystemEventListener;
+import javax.faces.event.PreRenderComponentEvent;
+
+ at FacesComponent("com.sun.faces.test.servlet30.composite.PreRenderViewComponent1")
+public class PreRenderViewComponent1 extends PreRenderViewComponentBase
+        implements NamingContainer, ComponentSystemEventListener {
+
+    public static final String COMPONENT_FAMILY = "javax.faces.NamingContainer";
+
+    public PreRenderViewComponent1() {
+        super();
+        FacesContext ctx = FacesContext.getCurrentInstance();
+        subscribeToEvent(PreRenderComponentEvent.class, this);
+    }
+
+    @Override
+    public String getFamily() {
+        return (COMPONENT_FAMILY);
+    }
+
+    @Override
+    public void processEvent(ComponentSystemEvent e) throws AbortProcessingException {
+        if (e instanceof PreRenderComponentEvent) {
+            this.processPreRenderViewEvent((PreRenderComponentEvent) e);
+        }
+    }
+
+    private void processPreRenderViewEvent(PreRenderComponentEvent e) throws AbortProcessingException {
+        FacesContext ctx = FacesContext.getCurrentInstance();
+        if (!ctx.isPostback()) {
+            UIComponent parent = findComponent("controls");
+            ExpressionFactory ef = ctx.getApplication().getExpressionFactory();
+            HtmlOutputText itemCheck = new HtmlOutputText();
+            Map<String, Object> attrs = getAttributes();
+            Object item = attrs.get("item");
+            boolean itemIsNull = (item == null);
+            itemCheck.setValue("Item Attribute is null: " + itemIsNull);
+            HtmlInputText txt = new HtmlInputText();
+            txt.setId("txt");
+            ValueExpression ve = ef.createValueExpression(ctx.getELContext(), "#{cc.attrs.item.text}", java.lang.String.class);
+            txt.setValueExpression("value", ve);
+            parent.getChildren().add(txt);
+            parent.getChildren().add(itemCheck);
+        }
+    }
+}
diff --git a/test/servlet30/composite/src/main/java/com/sun/faces/test/servlet30/composite/PreRenderViewComponent2.java b/test/servlet30/composite/src/main/java/com/sun/faces/test/servlet30/composite/PreRenderViewComponent2.java
new file mode 100644
index 0000000..650733a
--- /dev/null
+++ b/test/servlet30/composite/src/main/java/com/sun/faces/test/servlet30/composite/PreRenderViewComponent2.java
@@ -0,0 +1,95 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.composite;
+
+import javax.el.ExpressionFactory;
+import javax.el.ValueExpression;
+import javax.faces.component.FacesComponent;
+import javax.faces.component.NamingContainer;
+import javax.faces.component.UIComponent;
+import javax.faces.component.html.HtmlInputText;
+import javax.faces.component.html.HtmlOutputText;
+import javax.faces.context.FacesContext;
+import javax.faces.event.AbortProcessingException;
+import javax.faces.event.ComponentSystemEvent;
+import javax.faces.event.ComponentSystemEventListener;
+import javax.faces.event.PreRenderComponentEvent;
+
+ at FacesComponent("com.sun.faces.test.servlet30.composite.PreRenderViewComponent2")
+public class PreRenderViewComponent2 extends PreRenderViewComponentBase
+        implements NamingContainer, ComponentSystemEventListener {
+
+    public static final String COMPONENT_FAMILY = "javax.faces.NamingContainer";
+
+    public PreRenderViewComponent2() {
+        super();
+        FacesContext ctx = FacesContext.getCurrentInstance();
+        subscribeToEvent(PreRenderComponentEvent.class, this);
+    }
+
+    @Override
+    public String getFamily() {
+        return (COMPONENT_FAMILY);
+    }
+
+    @Override
+    public void processEvent(ComponentSystemEvent e) throws AbortProcessingException {
+        if (e instanceof PreRenderComponentEvent) {
+            this.processPreRenderViewEvent((PreRenderComponentEvent) e);
+        }
+    }
+
+    private void processPreRenderViewEvent(PreRenderComponentEvent e) throws AbortProcessingException {
+        FacesContext ctx = FacesContext.getCurrentInstance();
+        if (!ctx.isPostback()) {
+            UIComponent parent = this.findComponent("controls");
+            ExpressionFactory ef = ctx.getApplication().getExpressionFactory();
+            HtmlOutputText itemCheck = new HtmlOutputText();
+            boolean itemIsNull = (this.getAttributes().get("item") == null);
+            itemCheck.setValue("Item Attribute is null: " + itemIsNull);
+            HtmlInputText txt = new HtmlInputText();
+            txt.setId("txt");
+            ValueExpression ve = ef.createValueExpression(ctx.getELContext(), "#{cc.attrs.item.text}", java.lang.String.class);
+            txt.setValueExpression("value", ve);
+            parent.getChildren().add(txt);
+            parent.getChildren().add(itemCheck);
+        }
+    }
+}
diff --git a/test/servlet30/composite/src/main/java/com/sun/faces/test/servlet30/composite/PreRenderViewComponentBase.java b/test/servlet30/composite/src/main/java/com/sun/faces/test/servlet30/composite/PreRenderViewComponentBase.java
new file mode 100644
index 0000000..4a6d3b1
--- /dev/null
+++ b/test/servlet30/composite/src/main/java/com/sun/faces/test/servlet30/composite/PreRenderViewComponentBase.java
@@ -0,0 +1,128 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.composite;
+
+import java.util.Collection;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Set;
+import javax.faces.component.UINamingContainer;
+
+public abstract class PreRenderViewComponentBase extends UINamingContainer {
+
+    private Map<String, Object> localAttrs;
+
+    @Override
+    public Map<String, Object> getAttributes() {
+        if (null == localAttrs) {
+            localAttrs = new MapWrapper(super.getAttributes());
+        }
+        return localAttrs;
+    }
+
+    public class MapWrapper implements Map<String, Object> {
+
+        private Map<String, Object> parent;
+
+        public MapWrapper(Map<String, Object> parent) {
+            this.parent = parent;
+        }
+
+        @Override
+        public void clear() {
+            parent.clear();
+        }
+
+        @Override
+        public boolean containsKey(Object key) {
+            return parent.containsKey(key);
+        }
+
+        @Override
+        public boolean containsValue(Object value) {
+            return parent.containsValue(value);
+        }
+
+        @Override
+        public Set<Entry<String, Object>> entrySet() {
+            return parent.entrySet();
+        }
+
+        @Override
+        public Object get(Object key) {
+            return parent.get(key);
+        }
+
+        @Override
+        public boolean isEmpty() {
+            return parent.isEmpty();
+        }
+
+        @Override
+        public Set<String> keySet() {
+            return parent.keySet();
+        }
+
+        @Override
+        public Object put(String key, Object value) {
+            return parent.put(key, value);
+        }
+
+        @Override
+        public void putAll(Map<? extends String, ? extends Object> m) {
+            parent.putAll(m);
+        }
+
+        @Override
+        public Object remove(Object key) {
+            return parent.remove(key);
+        }
+
+        @Override
+        public int size() {
+            return parent.size();
+        }
+
+        @Override
+        public Collection<Object> values() {
+            return parent.values();
+        }
+    }
+}
diff --git a/test/servlet30/composite/src/main/java/com/sun/faces/test/servlet30/composite/PreRenderViewDataItem.java b/test/servlet30/composite/src/main/java/com/sun/faces/test/servlet30/composite/PreRenderViewDataItem.java
new file mode 100644
index 0000000..ce74cf8
--- /dev/null
+++ b/test/servlet30/composite/src/main/java/com/sun/faces/test/servlet30/composite/PreRenderViewDataItem.java
@@ -0,0 +1,57 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.composite;
+
+import java.io.Serializable;
+
+public class PreRenderViewDataItem implements Serializable {
+
+    private static final long serialVersionUID = 7929568704398543163L;
+
+    private String text;
+
+    public String getText() {
+        return text;
+    }
+
+    public void setText(String text) {
+        this.text = text;
+    }
+}
diff --git a/test/servlet30/composite/src/main/java/com/sun/faces/test/servlet30/composite/ProgrammaticComponentBean.java b/test/servlet30/composite/src/main/java/com/sun/faces/test/servlet30/composite/ProgrammaticComponentBean.java
new file mode 100644
index 0000000..09d4c9f
--- /dev/null
+++ b/test/servlet30/composite/src/main/java/com/sun/faces/test/servlet30/composite/ProgrammaticComponentBean.java
@@ -0,0 +1,74 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.test.servlet30.composite;
+
+import java.util.HashMap;
+import java.util.Map;
+import javax.faces.application.Application;
+import javax.faces.application.ViewHandler;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.RequestScoped;
+import javax.faces.context.FacesContext;
+import javax.faces.component.UIComponent;
+import javax.faces.view.ViewDeclarationLanguage;
+
+ at ManagedBean
+ at RequestScoped
+public class ProgrammaticComponentBean {
+    
+    public String getTest() {        
+        Map<String, Object> attrs=new HashMap<String, Object>();
+        attrs.put("pi", (float) 3.14);
+        attrs.put("pagecontent", "" + System.currentTimeMillis());
+        
+        FacesContext context = FacesContext.getCurrentInstance();
+        Application application = context.getApplication();
+        ViewHandler vh = application.getViewHandler();
+        ViewDeclarationLanguage vdl = vh.getViewDeclarationLanguage(context, 
+                context.getViewRoot().getViewId());
+        
+        UIComponent c = vdl.createComponent(FacesContext.getCurrentInstance(), 
+                "http://java.sun.com/jsf/composite/programmatic", 
+                "programmaticComponent", attrs);
+        
+        return null == c ? "FAILURE" : "SUCCESS";
+    }
+}
diff --git a/test/servlet30/composite/src/main/java/com/sun/faces/test/servlet30/composite/ValidatorComponent.java b/test/servlet30/composite/src/main/java/com/sun/faces/test/servlet30/composite/ValidatorComponent.java
new file mode 100644
index 0000000..2b98c28
--- /dev/null
+++ b/test/servlet30/composite/src/main/java/com/sun/faces/test/servlet30/composite/ValidatorComponent.java
@@ -0,0 +1,54 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.composite;
+
+import javax.faces.application.FacesMessage;
+import javax.faces.component.FacesComponent;
+import javax.faces.component.UIComponent;
+import javax.faces.component.UINamingContainer;
+import javax.faces.context.FacesContext;
+
+ at FacesComponent(value = "com.sun.faces.test.servlet30.composite.ValidatorComponent")
+public class ValidatorComponent extends UINamingContainer {
+    
+    public void someValidator(FacesContext context, UIComponent component, Object value) {
+        context.addMessage(component.getClientId(), new FacesMessage("Validator method called"));
+    }
+}
diff --git a/test/servlet30/composite/src/main/webapp/WEB-INF/faces-config.xml b/test/servlet30/composite/src/main/webapp/WEB-INF/faces-config.xml
new file mode 100644
index 0000000..ec0e3cc
--- /dev/null
+++ b/test/servlet30/composite/src/main/webapp/WEB-INF/faces-config.xml
@@ -0,0 +1,10 @@
+<?xml version='1.0' encoding='UTF-8'?>
+
+<faces-config version="2.0"
+              xmlns="http://java.sun.com/xml/ns/javaee" 
+              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+              xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd">
+    <lifecycle>
+        <phase-listener>com.sun.faces.test.servlet30.composite.Issue2320PhaseListener</phase-listener>
+    </lifecycle>
+</faces-config>
diff --git a/test/servlet30/composite/src/main/webapp/WEB-INF/glassfish-web.xml b/test/servlet30/composite/src/main/webapp/WEB-INF/glassfish-web.xml
new file mode 100644
index 0000000..700e8be
--- /dev/null
+++ b/test/servlet30/composite/src/main/webapp/WEB-INF/glassfish-web.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
+<glassfish-web-app error-url="">
+  <context-root>/test-servlet30-composite</context-root>
+  <class-loader delegate="true"/>
+  <jsp-config>
+    <property name="keepgenerated" value="true">
+      <description>Keep a copy of the generated servlet class' java code.</description>
+    </property>
+  </jsp-config>
+</glassfish-web-app>
diff --git a/test/servlet30/composite/src/main/webapp/WEB-INF/web.xml b/test/servlet30/composite/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..9cdfdc7
--- /dev/null
+++ b/test/servlet30/composite/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" 
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>${webapp.projectStage}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
+        <param-value>${webapp.partialStateSaving}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>${webapp.stateSavingMethod}</param-value>
+    </context-param>
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <session-config>
+        <session-timeout>30</session-timeout>
+    </session-config>
+    <welcome-file-list>
+        <welcome-file>index.jsp</welcome-file>
+    </welcome-file-list>
+</web-app>
diff --git a/test/servlet30/composite/src/main/webapp/action/action1.xhtml b/test/servlet30/composite/src/main/webapp/action/action1.xhtml
new file mode 100644
index 0000000..c9e06ed
--- /dev/null
+++ b/test/servlet30/composite/src/main/webapp/action/action1.xhtml
@@ -0,0 +1,61 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:action="http://java.sun.com/jsf/composite/action">
+    <h:head>
+        <title>Action test</title>
+    </h:head>
+    <h:body>
+        <h:form id="form">
+            <action:action1 id="c0" action="#{actionBean.action}"/>
+        </h:form>
+        <h:messages id="messages"/>
+        <h:form>
+            <h:commandButton value="Clear Messages" />
+        </h:form>
+    </h:body>
+</html>
diff --git a/test/servlet30/composite/src/main/webapp/action/action2.xhtml b/test/servlet30/composite/src/main/webapp/action/action2.xhtml
new file mode 100644
index 0000000..19fe3c8
--- /dev/null
+++ b/test/servlet30/composite/src/main/webapp/action/action2.xhtml
@@ -0,0 +1,63 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:action="http://java.sun.com/jsf/composite/action">
+    <h:head>
+        <title>Action at various composite nesting levels</title>
+    </h:head>
+    <h:body>
+        <h:form id="form">
+            <p>
+                2. Two nesting levels. Level 1 defines a custom action and 
+                passes it to level 2. Level 2 targets an action.
+            </p>
+            <action:action2 id="c1" customAction="#{actionBean.action}"/>
+        </h:form>
+        <h:messages id="messages"/>
+        <h:form>
+            <h:commandButton value="Clear Messages" />
+        </h:form>
+    </h:body>
+</html>
diff --git a/test/servlet30/composite/src/main/webapp/action/action3.xhtml b/test/servlet30/composite/src/main/webapp/action/action3.xhtml
new file mode 100644
index 0000000..616c86b
--- /dev/null
+++ b/test/servlet30/composite/src/main/webapp/action/action3.xhtml
@@ -0,0 +1,55 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:action="http://java.sun.com/jsf/composite/action">
+    <h:head>
+        <title>Action </title>
+    </h:head>
+    <h:body>
+        <h:form id="form">
+           <p>Composite submit: <action:action3 id="action" action="#{action3Bean.submit}" /></p>
+        </h:form>
+    </h:body>
+</html>
diff --git a/test/servlet30/composite/src/main/webapp/actionSource/actionSource1.xhtml b/test/servlet30/composite/src/main/webapp/actionSource/actionSource1.xhtml
new file mode 100644
index 0000000..089410f
--- /dev/null
+++ b/test/servlet30/composite/src/main/webapp/actionSource/actionSource1.xhtml
@@ -0,0 +1,71 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:actionSource="http://java.sun.com/jsf/composite/actionSource">
+    <h:head>
+        <title>actionSource1</title>
+    </h:head>
+    <h:body>
+        <ui:debug hotkey="p" rendered="true"/>
+        <h:form id="form">
+            <p>
+                Maps ActionListener to commandButton within actionSource/actionSource1.xhtml 
+                using only the name attribute.
+            </p>
+            <actionSource:actionSource1 id="actionsource1">
+                <f:actionListener for="command" binding="#{actionSourceBean.actionListener}"/>
+            </actionSource:actionSource1>
+            <h:commandButton id="clear" value="Clear Messages"/>
+        </h:form>
+        <h:messages id="messages"/>
+        <p>
+            <a href="#{facesContext.externalContext.requestContextPath}">Up</a>
+        </p>
+    </h:body>
+</html>
diff --git a/test/servlet30/composite/src/main/webapp/attribute/attribute1.xhtml b/test/servlet30/composite/src/main/webapp/attribute/attribute1.xhtml
new file mode 100644
index 0000000..11a6c4b
--- /dev/null
+++ b/test/servlet30/composite/src/main/webapp/attribute/attribute1.xhtml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:attribute="http://java.sun.com/jsf/composite/attribute">
+    <h:head>
+        <title>A simple composite component</title>
+    </h:head>
+    <h:body>
+        <attribute:attribute1 text="This should show up also!"/>
+        <p>
+            <a href="#{facesContext.externalContext.requestContextPath}">Up</a>
+        </p>
+    </h:body>
+</html>
diff --git a/test/servlet30/composite/src/main/webapp/attribute/attribute2.xhtml b/test/servlet30/composite/src/main/webapp/attribute/attribute2.xhtml
new file mode 100644
index 0000000..e76859f
--- /dev/null
+++ b/test/servlet30/composite/src/main/webapp/attribute/attribute2.xhtml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:attribute="http://java.sun.com/jsf/composite/attribute">
+    <h:head>
+        <title>A simple composite component</title>
+    </h:head>
+    <h:body>
+        <p>
+            Using the default below.
+        </p>
+        <p>
+            <attribute:attribute2/>
+        </p>
+        <p>
+            Not using the default below.
+        </p>
+        <p>
+            <attribute:attribute2 text="This is not the default"/>
+        </p>
+        <p>
+            <a href="#{facesContext.externalContext.requestContextPath}">Up</a>
+        </p>
+    </h:body>
+</html>
diff --git a/test/servlet30/composite/src/main/webapp/attribute/attributeType.xhtml b/test/servlet30/composite/src/main/webapp/attribute/attributeType.xhtml
new file mode 100644
index 0000000..14bf51d
--- /dev/null
+++ b/test/servlet30/composite/src/main/webapp/attribute/attributeType.xhtml
@@ -0,0 +1,32 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:attribute="http://java.sun.com/jsf/composite/attribute">
+    <f:metadata>
+        <f:viewParam name="test" value="#{attributeTypeBean.test}" />
+    </f:metadata>
+    <h:head>
+        <title>Attribute type test</title>
+    </h:head>
+    <h:body>
+        <h:form id="form">
+            <attribute:attributeType
+                untypedXliteral="literalValue"
+                untypedXwideEL="#{attributeTypeBean.animal}"
+                untypedXmediumEL="#{attributeTypeBean.dog}"
+                untypedXnarrowEL="#{attributeTypeBean.wienerdoodle}"
+                untypedXnullEL="#{attributeTypeBean.lostDog}"
+
+                typedXliteral="745"
+                typedXwideEL="#{attributeTypeBean.animal}"
+                typedXmediumEL="#{attributeTypeBean.dog}"
+                typedXnarrowEL="#{attributeTypeBean.wienerdoodle}"
+                typedXnullEL="#{attributeTypeBean.lostDog}"
+                />
+            <h:commandButton id="submit" value="reload" />
+        </h:form>
+    </h:body>
+</html>
diff --git a/test/servlet30/composite/src/main/webapp/attribute/issue2176.xhtml b/test/servlet30/composite/src/main/webapp/attribute/issue2176.xhtml
new file mode 100644
index 0000000..249d9cd
--- /dev/null
+++ b/test/servlet30/composite/src/main/webapp/attribute/issue2176.xhtml
@@ -0,0 +1,68 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:attribute="http://java.sun.com/jsf/composite/attribute">
+    <h:head>
+        <title>A simple composite component</title>
+    </h:head>
+    <h:body>
+        <h:form id="form">
+            <attribute:issue2176>
+                <attribute:issue2176/>
+                <attribute:issue2176/>
+                <attribute:issue2176/>
+                <attribute:issue2176/>
+                <attribute:issue2176/>
+            </attribute:issue2176>
+            <h:outputText value="#{issue2176Bean.status}"/>
+            <h:commandButton id="submit" value="Submit"/>
+        </h:form>
+        <p>
+            <a href="#{facesContext.externalContext.requestContextPath}">Up</a>
+        </p>
+    </h:body>
+</html>
diff --git a/test/servlet30/composite/src/main/webapp/basic/isInsideCompositeComponent.xhtml b/test/servlet30/composite/src/main/webapp/basic/isInsideCompositeComponent.xhtml
new file mode 100644
index 0000000..b2531c4
--- /dev/null
+++ b/test/servlet30/composite/src/main/webapp/basic/isInsideCompositeComponent.xhtml
@@ -0,0 +1,58 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:basic="http://java.sun.com/jsf/composite/basic">
+    <h:head>
+        <title>Is Inside Composite Component</title>
+    </h:head>
+    <h:body>
+        <basic:isInsideCompositeComponent/>
+        <p>
+            <a href="#{facesContext.externalContext.requestContextPath}">Up</a>
+        </p>
+    </h:body>
+</html>
diff --git a/test/servlet30/composite/src/main/webapp/basic/isInsideCompositeComponent2.xhtml b/test/servlet30/composite/src/main/webapp/basic/isInsideCompositeComponent2.xhtml
new file mode 100644
index 0000000..ab3a7ef
--- /dev/null
+++ b/test/servlet30/composite/src/main/webapp/basic/isInsideCompositeComponent2.xhtml
@@ -0,0 +1,60 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:basic="http://java.sun.com/jsf/composite/basic">
+    <h:head>
+        <title>Is Inside Composite Component</title>
+    </h:head>
+    <h:body>
+        <basic:isInsideCompositeComponent2>
+            isInsideCompositeComponent: <h:outputText value="#{basicBean.insideCompositeComponent}"/>
+        </basic:isInsideCompositeComponent2>
+        <p>
+            <a href="#{facesContext.externalContext.requestContextPath}">Up</a>
+        </p>
+    </h:body>
+</html>
diff --git a/test/servlet30/composite/src/main/webapp/basic/simple1.xhtml b/test/servlet30/composite/src/main/webapp/basic/simple1.xhtml
new file mode 100644
index 0000000..e608e43
--- /dev/null
+++ b/test/servlet30/composite/src/main/webapp/basic/simple1.xhtml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:simple="http://java.sun.com/jsf/composite/simple">
+    <h:head>
+        <title>A simple composite component</title>
+    </h:head>
+    <h:body>
+        <simple:simple1/>
+        <p>
+            <a href="#{facesContext.externalContext.requestContextPath}">Up</a>
+        </p>
+    </h:body>
+</html>
diff --git a/test/servlet30/composite/src/main/webapp/basic/simple2.xhtml b/test/servlet30/composite/src/main/webapp/basic/simple2.xhtml
new file mode 100644
index 0000000..7167b48
--- /dev/null
+++ b/test/servlet30/composite/src/main/webapp/basic/simple2.xhtml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:simple="http://java.sun.com/jsf/composite/simple">
+    <h:head>
+        <title>A h:outputText inside a composite component</title>
+    </h:head>
+    <h:body>
+        <simple:simple2/>
+        <p>
+            <a href="#{facesContext.externalContext.requestContextPath}">Up</a>
+        </p>
+    </h:body>
+</html>
diff --git a/test/servlet30/composite/src/main/webapp/basic/simple3.xhtml b/test/servlet30/composite/src/main/webapp/basic/simple3.xhtml
new file mode 100644
index 0000000..2bdc4db
--- /dev/null
+++ b/test/servlet30/composite/src/main/webapp/basic/simple3.xhtml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:simple="http://java.sun.com/jsf/composite/simple">
+    <h:head>
+        <title>A h:outputText inside a composite component (using EL)</title>
+    </h:head>
+    <h:body>
+        <simple:simple3/>
+        <p>
+            <a href="#{facesContext.externalContext.requestContextPath}">Up</a>
+        </p>
+    </h:body>
+</html>
diff --git a/test/servlet30/composite/src/main/webapp/choose/choose1.xhtml b/test/servlet30/composite/src/main/webapp/choose/choose1.xhtml
new file mode 100644
index 0000000..09fca1d
--- /dev/null
+++ b/test/servlet30/composite/src/main/webapp/choose/choose1.xhtml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:choose="http://java.sun.com/jsf/composite/choose">
+    <h:head>
+        <title>A simple composite component</title>
+    </h:head>
+    <h:body>
+        <choose:choose1 value="Execute choose"/>
+        <p>
+            <a href="#{facesContext.externalContext.requestContextPath}">Up</a>
+        </p>
+    </h:body>
+</html>
diff --git a/test/servlet30/composite/src/main/webapp/choose/choose1b.xhtml b/test/servlet30/composite/src/main/webapp/choose/choose1b.xhtml
new file mode 100644
index 0000000..0d02abc
--- /dev/null
+++ b/test/servlet30/composite/src/main/webapp/choose/choose1b.xhtml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:choose="http://java.sun.com/jsf/composite/choose">
+    <h:head>
+        <title>A simple composite component</title>
+    </h:head>
+    <h:body>
+        <choose:choose1 value="Execute otherwise"/>
+        <p>
+            <a href="#{facesContext.externalContext.requestContextPath}">Up</a>
+        </p>
+    </h:body>
+</html>
diff --git a/test/servlet30/composite/src/main/webapp/choose/choose2.xhtml b/test/servlet30/composite/src/main/webapp/choose/choose2.xhtml
new file mode 100644
index 0000000..f1d7182
--- /dev/null
+++ b/test/servlet30/composite/src/main/webapp/choose/choose2.xhtml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:choose="http://java.sun.com/jsf/composite/choose">
+    <h:head>
+        <title>A simple composite component</title>
+    </h:head>
+    <h:body>
+        <choose:choose2 top="Execute choose"/>
+        <p>
+            <a href="#{facesContext.externalContext.requestContextPath}">Up</a>
+        </p>
+    </h:body>
+</html>
diff --git a/test/servlet30/composite/src/main/webapp/choose/choose2b.xhtml b/test/servlet30/composite/src/main/webapp/choose/choose2b.xhtml
new file mode 100644
index 0000000..14be138
--- /dev/null
+++ b/test/servlet30/composite/src/main/webapp/choose/choose2b.xhtml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:choose="http://java.sun.com/jsf/composite/choose">
+    <h:head>
+        <title>A simple composite component</title>
+    </h:head>
+    <h:body>
+        <choose:choose2b top="Execute otherwise"/>
+        <p>
+            <a href="#{facesContext.externalContext.requestContextPath}">Up</a>
+        </p>
+    </h:body>
+</html>
diff --git a/test/servlet30/composite/src/main/webapp/compositePartialState.xhtml b/test/servlet30/composite/src/main/webapp/compositePartialState.xhtml
new file mode 100644
index 0000000..56ff247
--- /dev/null
+++ b/test/servlet30/composite/src/main/webapp/compositePartialState.xhtml
@@ -0,0 +1,18 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:ez="http://java.sun.com/jsf/composite/action">
+<f:view contentType="text/html"/>
+<h:head />
+
+<h:body>
+
+    <h:form prependId="false">
+	    <ez:actionButton id="button" />
+	</h:form>
+
+</h:body>
+
+</html>
diff --git a/test/servlet30/composite/src/main/webapp/converter/converter1.xhtml b/test/servlet30/composite/src/main/webapp/converter/converter1.xhtml
new file mode 100644
index 0000000..fa380fa
--- /dev/null
+++ b/test/servlet30/composite/src/main/webapp/converter/converter1.xhtml
@@ -0,0 +1,69 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:converter="http://java.sun.com/jsf/composite/converter">
+    <h:head>
+        <title>Converter</title>
+    </h:head>
+    <h:body>
+        <h:form id="form">
+            <p>
+                Maps Converter to the inputText within the composite
+                component using only the name attribute.
+            </p>
+            <converter:converter1 id="converter1">
+                <f:converter for="input" binding="#{converterBean.converter}"/>
+            </converter:converter1>
+            <h:commandButton id="s1" value="Submit"/>
+        </h:form>
+        <h:form id="cf">
+            <p />
+            <h:commandButton id="clear" value="Clear Messages"/>
+        </h:form>
+        <h:messages id="messages"/>
+    </h:body>
+</html>
diff --git a/test/servlet30/composite/src/main/webapp/define/define1.xhtml b/test/servlet30/composite/src/main/webapp/define/define1.xhtml
new file mode 100644
index 0000000..a4019da
--- /dev/null
+++ b/test/servlet30/composite/src/main/webapp/define/define1.xhtml
@@ -0,0 +1,12 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<ui:composition xmlns:ui="http://java.sun.com/jsf/facelets"
+                template="/templates/define1.xhtml">
+
+    <ui:define name="name">
+        What is in a name?
+    </ui:define>
+
+</ui:composition>
diff --git a/test/servlet30/composite/src/main/webapp/if/if1.xhtml b/test/servlet30/composite/src/main/webapp/if/if1.xhtml
new file mode 100644
index 0000000..5642150
--- /dev/null
+++ b/test/servlet30/composite/src/main/webapp/if/if1.xhtml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:if="http://java.sun.com/jsf/composite/if">
+    <h:head>
+        <title>A simple composite component</title>
+    </h:head>
+    <h:body>
+        <if:if1/>
+        <p>
+            <a href="#{facesContext.externalContext.requestContextPath}">Up</a>
+        </p>
+    </h:body>
+</html>
diff --git a/test/servlet30/composite/src/main/webapp/if/if2.xhtml b/test/servlet30/composite/src/main/webapp/if/if2.xhtml
new file mode 100644
index 0000000..984c49a
--- /dev/null
+++ b/test/servlet30/composite/src/main/webapp/if/if2.xhtml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:if="http://java.sun.com/jsf/composite/if">
+    <h:head>
+        <title>A simple composite component</title>
+    </h:head>
+    <h:body>
+        <if:if2/>
+        <p>
+            <a href="#{facesContext.externalContext.requestContextPath}">Up</a>
+        </p>
+    </h:body>
+</html>
diff --git a/test/servlet30/composite/src/main/webapp/include/include1-some.xhtml b/test/servlet30/composite/src/main/webapp/include/include1-some.xhtml
new file mode 100644
index 0000000..c86e1c5
--- /dev/null
+++ b/test/servlet30/composite/src/main/webapp/include/include1-some.xhtml
@@ -0,0 +1,50 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <p>
+        This is included using a ui:include.
+    </p>
+</html>
diff --git a/test/servlet30/composite/src/main/webapp/include/include1.xhtml b/test/servlet30/composite/src/main/webapp/include/include1.xhtml
new file mode 100644
index 0000000..8b7764d
--- /dev/null
+++ b/test/servlet30/composite/src/main/webapp/include/include1.xhtml
@@ -0,0 +1,65 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC 
+    "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:include="http://java.sun.com/jsf/composite/include">
+    <body>
+        <f:view>
+            <center>
+                <h:outputText value="Now we are going to use ui:include"/> <br/>
+                <ui:include src="include1-some.xhtml"/>
+                <p>
+                    <include:include1/>
+                </p>
+            </center>
+        </f:view>
+    </body>
+</html>
diff --git a/test/servlet30/composite/src/main/webapp/index.jsp b/test/servlet30/composite/src/main/webapp/index.jsp
new file mode 100644
index 0000000..d28adc6
--- /dev/null
+++ b/test/servlet30/composite/src/main/webapp/index.jsp
@@ -0,0 +1,66 @@
+<%@page contentType="text/html" pageEncoding="UTF-8"%>
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+    "http://www.w3.org/TR/html4/loose.dtd">
+
+<html>
+    <head>
+        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+        <title>Mojarra Agnostic Composite Component Tests</title>
+    </head>
+    <body>
+        <h1>Mojarra Agnostic Composite Component Tests</h1>
+        <h3>Simple</h3>
+        <ul>
+            <li><a href="faces/basic/isInsideCompositeComponent.xhtml">Test to see if we are inside a composite component</a></li>
+            <li><a href="faces/basic/isInsideCompositeComponent2.xhtml">Test to see if we are inside a composite component #2</a></li>
+            <li><a href="faces/basic/simple1.xhtml">A simple composite component</a></li>
+            <li><a href="faces/basic/simple2.xhtml">A h:outputText inside a composite component</a></li>
+            <li><a href="faces/basic/simple3.xhtml">A h:outputText inside a composite component (using EL)</a></li>
+        </ul>
+        <h3>Nested</h3>
+        <ul>
+            <li><a href="faces/nested/nested1.xhtml">A nested composite component test</a></li>
+            <li><a href="faces/nested/nested2.xhtml">A h:outputText inside a nested composite component</a></li>
+            <li><a href="faces/nested/nested3.xhtml">A h:outputText inside a nested composite component (using EL)</a></li>
+        </ul>
+        <h3>cc:actionSource</h3>
+        <ul>
+            <li><a href="faces/actionSource/actionSource1.xhtml">A cc:actionSource test</a></li>
+        </ul>
+        <h3>cc:attribute and # {cc.attrs}</h3>
+        <ul>
+            <li><a href="faces/attribute/attribute1.xhtml">A composite component using # {cc.attrs.text}</a></li>
+            <li><a href="faces/attribute/attribute2.xhtml">A composite component using cc:attribute with a default and overriding the default</a></li>
+        </ul>
+        <h3>cc:attribute and actions</h3>
+        <ul>
+            <li><a href="faces/action/action1.xhtml">A custom action</a></li>
+        </ul>
+        <h3>cc:insertChildren</h3>
+        <ul>
+            <li><a href="faces/insertChildren/insertChildren1.xhtml">A cc:insertChildren inside a composite component</a></li>
+            <li><a href="faces/insertChildren/insertChildren2.xhtml">A cc:insertChildren inside a nested composite component</a></li>
+            <li><a href="faces/insertChildren/insertChildren3.xhtml">A cc:insertChildren inside a composite component with an inactive facet</a></li>
+            <li><a href="faces/insertChildren/insertChildren4.xhtml">A cc:insertChildren inside of panelGroup inside a composite component</a></li>
+        </ul>
+        <h3>cc:insertFacet</h3>
+        <ul>
+            <li><a href="faces/insertFacet/insertFacet1.xhtml">A composite component with cc:insertFacet in it</a></li>
+        </ul>
+        <h3>cc:renderFacet</h3>
+        <ul>
+            <li><a href="faces/renderFacet/renderFacet1.xhtml">A composite component using cc:renderFacet</a></li>
+            <li><a href="faces/renderFacet/renderFacet2.xhtml">A composite component using cc:renderFacet #2</a></li>
+        </ul>
+        <h3>h:input</h3>
+        <ul>
+            <li><a href="faces/input/input1.xhtml">A composite component with a UIInput in it</a></li>
+        </ul>
+        <h3>ui:define</h3>
+        <ul>
+            <li><a href="faces/define/define1.xhtml">A composite component with template functionality in it</a></li>
+        </ul>
+    </ul>
+</body>
+</html>
diff --git a/test/servlet30/composite/src/main/webapp/input/input1.xhtml b/test/servlet30/composite/src/main/webapp/input/input1.xhtml
new file mode 100644
index 0000000..61a5f15
--- /dev/null
+++ b/test/servlet30/composite/src/main/webapp/input/input1.xhtml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:input="http://java.sun.com/jsf/composite/input">
+    <h:head>
+        <title>A simple composite component</title>
+    </h:head>
+    <h:body>
+        <h:form id="form">
+            <input:input1 id="composite"/><br/> 
+            The value of input 1 is [<h:outputText value="#{compositeBean.input1}"/>] <br/>
+            <h:commandButton id="submitButton" action="#{compositeBean.doInput1}" value="Submit"/>
+        </h:form>
+        <p>
+            <a href="#{facesContext.externalContext.requestContextPath}">Up</a>
+        </p>
+    </h:body>
+</html>
diff --git a/test/servlet30/composite/src/main/webapp/insertChildren/insertChildren1.xhtml b/test/servlet30/composite/src/main/webapp/insertChildren/insertChildren1.xhtml
new file mode 100644
index 0000000..b58fe22
--- /dev/null
+++ b/test/servlet30/composite/src/main/webapp/insertChildren/insertChildren1.xhtml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:insertChildren="http://java.sun.com/jsf/composite/insertChildren">
+    <h:head>
+        <title>A composite component using insertChildren</title>
+    </h:head>
+    <h:body>
+        <p>
+            You should see a text below this pushed in using cc:insertChildren.
+        </p>
+        <insertChildren:insertChildren1>
+            <h:outputText value="Inserting children"/>
+        </insertChildren:insertChildren1>
+        <p>
+            You should see a text above this pushed in using cc:insertChildren.
+        </p>
+        <p>
+            <a href="#{facesContext.externalContext.requestContextPath}">Up</a>
+        </p>
+    </h:body>
+</html>
diff --git a/test/servlet30/composite/src/main/webapp/insertChildren/insertChildren2.xhtml b/test/servlet30/composite/src/main/webapp/insertChildren/insertChildren2.xhtml
new file mode 100644
index 0000000..239b36a
--- /dev/null
+++ b/test/servlet30/composite/src/main/webapp/insertChildren/insertChildren2.xhtml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:insertChildren="http://java.sun.com/jsf/composite/insertChildren">
+    <h:head>
+        <title>A composite component using insertChildren</title>
+    </h:head>
+    <h:body>
+        <insertChildren:insertChildren2/>
+        <p>
+            <a href="#{facesContext.externalContext.requestContextPath}">Up</a>
+        </p>
+    </h:body>
+</html>
diff --git a/test/servlet30/composite/src/main/webapp/insertChildren/insertChildren3.xhtml b/test/servlet30/composite/src/main/webapp/insertChildren/insertChildren3.xhtml
new file mode 100644
index 0000000..0de880b
--- /dev/null
+++ b/test/servlet30/composite/src/main/webapp/insertChildren/insertChildren3.xhtml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:insertChildren="http://java.sun.com/jsf/composite/insertChildren"
+      xmlns:f="http://java.sun.com/jsf/core">
+    <h:head>
+        <title>A composite component using insertChildren</title>
+    </h:head>
+    <h:body>
+        <insertChildren:insertChildren3>
+            <f:facet name="inactive">
+                <h:outputText value="I should not show up anywhere"/>
+            </f:facet>
+        </insertChildren:insertChildren3>
+        <p>
+            <a href="#{facesContext.externalContext.requestContextPath}">Up</a>
+        </p>
+    </h:body>
+</html>
diff --git a/test/servlet30/composite/src/main/webapp/insertChildren/insertChildren4.xhtml b/test/servlet30/composite/src/main/webapp/insertChildren/insertChildren4.xhtml
new file mode 100644
index 0000000..6aceb9c
--- /dev/null
+++ b/test/servlet30/composite/src/main/webapp/insertChildren/insertChildren4.xhtml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:insertChildren="http://java.sun.com/jsf/composite/insertChildren"
+      xmlns:f="http://java.sun.com/jsf/core">
+    <h:head>
+        <title>A composite component using insertChildren</title>
+    </h:head>
+    <h:body>
+        <insertChildren:insertChildren4>
+            <h:outputText value="I should show up somewhere"/>
+        </insertChildren:insertChildren4>
+        <p>
+            <a href="#{facesContext.externalContext.requestContextPath}">Up</a>
+        </p>
+    </h:body>
+</html>
diff --git a/test/servlet30/composite/src/main/webapp/insertFacet/insertFacet1.xhtml b/test/servlet30/composite/src/main/webapp/insertFacet/insertFacet1.xhtml
new file mode 100644
index 0000000..e470d7d
--- /dev/null
+++ b/test/servlet30/composite/src/main/webapp/insertFacet/insertFacet1.xhtml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:insertFacet="http://java.sun.com/jsf/composite/insertFacet"
+      xmlns:f="http://java.sun.com/jsf/core">
+    <h:head>
+        <title>A composite component using insertFacet</title>
+    </h:head>
+    <h:body>
+        <p>
+            You should see a text below this pushed in using cc:insertFacet.
+        </p>
+        <insertFacet:insertFacet1>
+            <f:facet name="caption">
+                <h:outputText value="Testing insertFacet"/>
+            </f:facet>
+        </insertFacet:insertFacet1>
+        <p>
+            You should see a text above this pushed in using cc:insertFacet.
+        </p>
+        <p>
+            <a href="#{facesContext.externalContext.requestContextPath}">Up</a>
+        </p>
+    </h:body>
+</html>
diff --git a/test/servlet30/composite/src/main/webapp/insertFacet/insertFacet2.xhtml b/test/servlet30/composite/src/main/webapp/insertFacet/insertFacet2.xhtml
new file mode 100644
index 0000000..2a7c532
--- /dev/null
+++ b/test/servlet30/composite/src/main/webapp/insertFacet/insertFacet2.xhtml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:insertFacet="http://java.sun.com/jsf/composite/insertFacet"
+      xmlns:f="http://java.sun.com/jsf/core">
+    <h:head>
+        <title>A composite component using insertFacet</title>
+    </h:head>
+    <h:body>
+        <p>
+            You should see a text below this pushed in using cc:insertFacet.
+        </p>
+            <insertFacet:insertFacet2>
+                <f:facet name="myFacet">
+                    <h1><h:outputText value="myFacet Text" /></h1>
+                </f:facet>
+            </insertFacet:insertFacet2>
+        <p>
+            You should see a text above this pushed in using cc:insertFacet.
+        </p>
+        <p>
+            <a href="#{facesContext.externalContext.requestContextPath}">Up</a>
+        </p>
+    </h:body>
+</html>
diff --git a/test/servlet30/composite/src/main/webapp/issue1943-action.xhtml b/test/servlet30/composite/src/main/webapp/issue1943-action.xhtml
new file mode 100644
index 0000000..25faa5c
--- /dev/null
+++ b/test/servlet30/composite/src/main/webapp/issue1943-action.xhtml
@@ -0,0 +1,17 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:issue1943="http://java.sun.com/jsf/composite/issue1943">
+    <body>
+        <h:form>
+            <issue1943:issue1943b bean="#{issue1943Bean}"/>
+            <h:commandButton value="Refresh"/>
+            <h:messages styleClass="errorMessage" showDetail="true"/>
+        </h:form>
+    </body>
+</html>
diff --git a/test/servlet30/composite/src/main/webapp/issue1943.xhtml b/test/servlet30/composite/src/main/webapp/issue1943.xhtml
new file mode 100644
index 0000000..c94ac57
--- /dev/null
+++ b/test/servlet30/composite/src/main/webapp/issue1943.xhtml
@@ -0,0 +1,18 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:issue1943="http://java.sun.com/jsf/composite/issue1943">
+    <body>
+        <f:view>
+            <h:form>
+                <issue1943:issue1943 bean="#{issue1943Bean}"/>
+                <h:messages styleClass="errorMessage" showDetail="true"/>
+            </h:form>
+        </f:view>
+    </body>
+</html>
diff --git a/test/servlet30/composite/src/main/webapp/issue2035.xhtml b/test/servlet30/composite/src/main/webapp/issue2035.xhtml
new file mode 100644
index 0000000..e8eb15b
--- /dev/null
+++ b/test/servlet30/composite/src/main/webapp/issue2035.xhtml
@@ -0,0 +1,62 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:issue2035="http://java.sun.com/jsf/composite/issue2035"
+      xml:lang="nl" lang="nl">
+    <h:head>
+        <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
+        <meta http-equiv="Pragma" content="no-cache" />
+        <meta http-equiv="Expires" content="Thu, 01 Jan 1970 00:00:00 GMT" />
+        <meta http-equiv="cache-control" content="no-store,no-cache,must-revalidate" />
+        <title>Test</title>
+    </h:head>
+    <h:body>
+        <h1>Test</h1>
+        <h:form>							
+            <issue2035:issue2035 ProdDescription="myDescription" ProdDescriptionLabel="myLabel"/>
+        </h:form>
+    </h:body>
+</html>
diff --git a/test/servlet30/composite/src/main/webapp/issue2035b.xhtml b/test/servlet30/composite/src/main/webapp/issue2035b.xhtml
new file mode 100644
index 0000000..7ef278a
--- /dev/null
+++ b/test/servlet30/composite/src/main/webapp/issue2035b.xhtml
@@ -0,0 +1,62 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:issue2035="http://java.sun.com/jsf/composite/issue2035"
+      xml:lang="nl" lang="nl">
+    <h:head>
+        <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
+        <meta http-equiv="Pragma" content="no-cache" />
+        <meta http-equiv="Expires" content="Thu, 01 Jan 1970 00:00:00 GMT" />
+        <meta http-equiv="cache-control" content="no-store,no-cache,must-revalidate" />
+        <title>Test</title>
+    </h:head>
+    <h:body>
+        <h1>Test</h1>
+        <h:form>	
+            <issue2035:issue2035 ProdDescriptionLabel="myLabel"/>
+        </h:form>
+    </h:body>
+</html>
diff --git a/test/servlet30/composite/src/main/webapp/issue2320.xhtml b/test/servlet30/composite/src/main/webapp/issue2320.xhtml
new file mode 100644
index 0000000..6215f50
--- /dev/null
+++ b/test/servlet30/composite/src/main/webapp/issue2320.xhtml
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:issue2320="http://java.sun.com/jsf/composite/issue2320">
+
+    <h:body>
+        <f:facet name="tmp1">
+            <h:outputText value="Hello"/>
+            <h:outputText value="World"/>
+        </f:facet>
+        <f:facet name="tmp2">
+            <h:outputText value="Hello"/>
+            <h:outputText value="World"/>
+        </f:facet>
+
+        Problem with composite component below <br/>
+        <issue2320:issue2320>
+            <f:facet name="header">
+                <h:outputText value="Hello"/>
+                <h:outputText value="World"/>
+            </f:facet>
+        </issue2320:issue2320>
+        <br/> Problem with composite component above.
+    </h:body>
+</html>
diff --git a/test/servlet30/composite/src/main/webapp/link/link1.xhtml b/test/servlet30/composite/src/main/webapp/link/link1.xhtml
new file mode 100644
index 0000000..4696da4
--- /dev/null
+++ b/test/servlet30/composite/src/main/webapp/link/link1.xhtml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE html PUBLIC 
+    "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:link="http://java.sun.com/jsf/composite/link">
+    <h:head>
+        <title>Link test</title>
+    </h:head>
+    <h:body>
+        <link:link1 onclick="alert('OneClick')"/>
+    </h:body>
+</html>
diff --git a/test/servlet30/composite/src/main/webapp/nested/nested1.xhtml b/test/servlet30/composite/src/main/webapp/nested/nested1.xhtml
new file mode 100644
index 0000000..e379151
--- /dev/null
+++ b/test/servlet30/composite/src/main/webapp/nested/nested1.xhtml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:nested="http://java.sun.com/jsf/composite/nested">
+    <h:head>
+        <title>A nested composite component</title>
+    </h:head>
+    <h:body>
+        <nested:nested1/>
+        <p>
+            <a href="#{facesContext.externalContext.requestContextPath}">Up</a>
+        </p>
+    </h:body>
+</html>
diff --git a/test/servlet30/composite/src/main/webapp/nested/nested2.xhtml b/test/servlet30/composite/src/main/webapp/nested/nested2.xhtml
new file mode 100644
index 0000000..917bc4a
--- /dev/null
+++ b/test/servlet30/composite/src/main/webapp/nested/nested2.xhtml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:nested="http://java.sun.com/jsf/composite/nested">
+    <h:head>
+        <title>A nested composite component</title>
+    </h:head>
+    <h:body>
+        <nested:nested2/>
+        <p>
+            <a href="#{facesContext.externalContext.requestContextPath}">Up</a>
+        </p>
+    </h:body>
+</html>
diff --git a/test/servlet30/composite/src/main/webapp/nested/nested3.xhtml b/test/servlet30/composite/src/main/webapp/nested/nested3.xhtml
new file mode 100644
index 0000000..cfabce4
--- /dev/null
+++ b/test/servlet30/composite/src/main/webapp/nested/nested3.xhtml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:nested="http://java.sun.com/jsf/composite/nested">
+    <h:head>
+        <title>A nested composite component</title>
+    </h:head>
+    <h:body>
+        <nested:nested3/>
+        <p>
+            <a href="#{facesContext.externalContext.requestContextPath}">Up</a>
+        </p>
+    </h:body>
+</html>
diff --git a/test/servlet30/composite/src/main/webapp/outputStylesheet/outputStylesheet.xhtml b/test/servlet30/composite/src/main/webapp/outputStylesheet/outputStylesheet.xhtml
new file mode 100644
index 0000000..d471c3f
--- /dev/null
+++ b/test/servlet30/composite/src/main/webapp/outputStylesheet/outputStylesheet.xhtml
@@ -0,0 +1,65 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xml:lang="en" lang="en" 
+      xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:outputStylesheet="http://java.sun.com/jsf/composite/outputStylesheet">
+
+    <h:form id="form">
+        <outputStylesheet:outputStylesheet1 id="email" label="Email:">
+            <h:inputText id="input">
+                <f:validateLength minimum="2"/>
+            </h:inputText>
+        </outputStylesheet:outputStylesheet1>
+        <outputStylesheet:outputStylesheet1 id="password" label="New Password:">
+            <h:inputSecret id="input" required="false">
+                <f:validateLength minimum="2"/>
+            </h:inputSecret>
+        </outputStylesheet:outputStylesheet1>
+        <h:commandButton id="submit" value="Save"/>
+    </h:form>
+</html>
diff --git a/test/servlet30/composite/src/main/webapp/preRenderView.xhtml b/test/servlet30/composite/src/main/webapp/preRenderView.xhtml
new file mode 100644
index 0000000..98a9122
--- /dev/null
+++ b/test/servlet30/composite/src/main/webapp/preRenderView.xhtml
@@ -0,0 +1,65 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:preRenderView="http://java.sun.com/jsf/composite/preRenderView">
+    <h:head>
+        <title></title>
+        <h:outputStylesheet library="preRenderView" name="preRenderView.css" />
+    </h:head>
+    <h:body>
+        <h:form id="form1" prependId="true" >
+            <h:panelGroup id="content" layout="block" styleClass="content" >
+                <preRenderView:component1 id="component1" item="#{preRenderViewBean.data[0]}" />
+                <h:commandButton id="testCommand" value="Postback" styleClass="button" >
+                </h:commandButton>
+            </h:panelGroup>
+        </h:form>
+    </h:body>
+    <ui:debug hotkey="o" />
+</html>
diff --git a/test/servlet30/composite/src/main/webapp/programmaticComponent.xhtml b/test/servlet30/composite/src/main/webapp/programmaticComponent.xhtml
new file mode 100644
index 0000000..212a9a1
--- /dev/null
+++ b/test/servlet30/composite/src/main/webapp/programmaticComponent.xhtml
@@ -0,0 +1,49 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+
+    <h:form id="form" prependId="false">         
+        <p><span id="result">#{programmaticComponentBean.test}</span></p>
+    </h:form>
+</html>
diff --git a/test/servlet30/composite/src/main/webapp/renderFacet/renderFacet1.xhtml b/test/servlet30/composite/src/main/webapp/renderFacet/renderFacet1.xhtml
new file mode 100644
index 0000000..4ad4cae
--- /dev/null
+++ b/test/servlet30/composite/src/main/webapp/renderFacet/renderFacet1.xhtml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:renderFacet="http://java.sun.com/jsf/composite/renderFacet"
+      xmlns:f="http://java.sun.com/jsf/core">
+    <h:head>
+        <title>A composite component using insertFacet</title>
+    </h:head>
+    <h:body>
+        <p>
+            You should see a text below this pushed in using cc:renderFacet.
+        </p>
+        <renderFacet:renderFacet1>
+            <f:facet name="myfacet">
+                <h:outputText value="This came from a rendered facet"/>
+            </f:facet>
+        </renderFacet:renderFacet1>
+        <p>
+            You should see a text above this pushed in using cc:renderFacet.
+        </p>
+        <p>
+            <a href="#{facesContext.externalContext.requestContextPath}">Up</a>
+        </p>
+    </h:body>
+</html>
diff --git a/test/servlet30/composite/src/main/webapp/renderFacet/renderFacet2.xhtml b/test/servlet30/composite/src/main/webapp/renderFacet/renderFacet2.xhtml
new file mode 100644
index 0000000..dcbe137
--- /dev/null
+++ b/test/servlet30/composite/src/main/webapp/renderFacet/renderFacet2.xhtml
@@ -0,0 +1,63 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:renderFacet="http://java.sun.com/jsf/composite/renderFacet">
+    <h:head>
+        <title>Render Facet 2</title>
+    </h:head>
+    <h:body>
+        <renderFacet:renderFacet2>
+            <f:facet name="myFacet">
+                <h1><h:outputText value="myFacet Text"/></h1>
+            </f:facet>
+        </renderFacet:renderFacet2>
+        <p>
+            <a href="#{facesContext.externalContext.requestContextPath}">Up</a>
+        </p>
+    </h:body>
+</html>
diff --git a/test/servlet30/composite/src/main/webapp/renderFacet/renderFacetDuplicateId.xhtml b/test/servlet30/composite/src/main/webapp/renderFacet/renderFacetDuplicateId.xhtml
new file mode 100644
index 0000000..8772775
--- /dev/null
+++ b/test/servlet30/composite/src/main/webapp/renderFacet/renderFacetDuplicateId.xhtml
@@ -0,0 +1,120 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:renderFacet="http://java.sun.com/jsf/composite/renderFacet">
+    <h:head>
+        <title></title>
+    </h:head>
+    <h:body>
+        <h:form id="form">
+            <renderFacet:renderFacetDuplicateId>
+                <f:facet name="col1">
+                    <h:commandLink value="col1Link" />
+                </f:facet>
+                <f:facet name="col2">
+                    <h:commandLink value="col2Link" />
+                </f:facet>
+            </renderFacet:renderFacetDuplicateId>
+            <renderFacet:renderFacetDuplicateId>
+                <f:facet name="col1">
+                    <h:commandLink value="col1Link" />
+                </f:facet>
+                <f:facet name="col2">
+                    <h:commandLink value="col2Link" />
+                </f:facet>
+            </renderFacet:renderFacetDuplicateId>
+            <renderFacet:renderFacetDuplicateId>
+                <f:facet name="col1">
+                    <h:commandLink value="col1Link" />
+                </f:facet>
+                <f:facet name="col2">
+                    <h:commandLink value="col2Link" />
+                </f:facet>
+            </renderFacet:renderFacetDuplicateId>
+            <renderFacet:renderFacetDuplicateId>
+                <f:facet name="col1">
+                    <h:commandLink value="col1Link" />
+                </f:facet>
+                <f:facet name="col2">
+                    <h:commandLink value="col2Link" />
+                </f:facet>
+            </renderFacet:renderFacetDuplicateId>
+            <renderFacet:renderFacetDuplicateId>
+                <f:facet name="col1">
+                    <h:commandLink value="col1Link" />
+                </f:facet>
+                <f:facet name="col2">
+                    <h:commandLink value="col2Link" />
+                </f:facet>
+            </renderFacet:renderFacetDuplicateId>
+            <renderFacet:renderFacetDuplicateId>
+                <f:facet name="col1">
+                    <h:commandLink value="col1Link" />
+                </f:facet>
+                <f:facet name="col2">
+                    <h:commandLink value="col2Link" />
+                </f:facet>
+            </renderFacet:renderFacetDuplicateId>
+            <renderFacet:renderFacetDuplicateId>
+                <f:facet name="col1">
+                    <h:commandLink value="col1Link" />
+                </f:facet>
+                <f:facet name="col2">
+                    <h:commandLink value="col2Link" />
+                </f:facet>
+            </renderFacet:renderFacetDuplicateId>
+            <renderFacet:renderFacetDuplicateId>
+                <f:facet name="col1">
+                    <h:commandLink value="col1Link" />
+                </f:facet>
+                <f:facet name="col2">
+                    <h:commandLink value="col2Link" />
+                </f:facet>
+            </renderFacet:renderFacetDuplicateId>
+        </h:form>
+    </h:body>
+</html>
diff --git a/test/servlet30/composite/src/main/webapp/resources/action/action1.xhtml b/test/servlet30/composite/src/main/webapp/resources/action/action1.xhtml
new file mode 100644
index 0000000..7adbfbe
--- /dev/null
+++ b/test/servlet30/composite/src/main/webapp/resources/action/action1.xhtml
@@ -0,0 +1,62 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:composite="http://java.sun.com/jsf/composite">
+    <head>
+        <title>Not present in rendered output</title>
+    </head>
+    <body>
+        <composite:interface>
+            <composite:attribute name="action" method-signature="String f()" targets="command"/>
+        </composite:interface>
+        <composite:implementation>
+            <div style="border: 1px black solid;">
+                <h:commandButton id="command" value="Click Me"/>
+            </div>
+        </composite:implementation>
+    </body>
+</html>
diff --git a/test/servlet30/composite/src/main/webapp/resources/action/action2.xhtml b/test/servlet30/composite/src/main/webapp/resources/action/action2.xhtml
new file mode 100644
index 0000000..e463122
--- /dev/null
+++ b/test/servlet30/composite/src/main/webapp/resources/action/action2.xhtml
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:composite="http://java.sun.com/jsf/composite"
+      xmlns:action="http://java.sun.com/jsf/composite/action">
+    <head>
+    </head>
+
+    <body>
+        <composite:interface>
+            <composite:attribute name="customAction" method-signature="String f()" required="false"/>
+        </composite:interface>
+        <composite:implementation>
+            <action:action2b id="nesting">
+                <div style="border: 1px black solid">
+                    <action:action1 id="aw1" action="#{cc.attrs.customAction}" />
+                </div>
+            </action:action2b>
+        </composite:implementation>
+    </body>
+</html>
diff --git a/test/servlet30/composite/src/main/webapp/resources/action/action2b.xhtml b/test/servlet30/composite/src/main/webapp/resources/action/action2b.xhtml
new file mode 100644
index 0000000..f80258d
--- /dev/null
+++ b/test/servlet30/composite/src/main/webapp/resources/action/action2b.xhtml
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:composite="http://java.sun.com/jsf/composite">
+    <head>
+    </head>
+    <body>
+        <composite:interface/>
+        <composite:implementation>
+            <composite:insertChildren/>
+        </composite:implementation>
+    </body>
+</html>
diff --git a/test/servlet30/composite/src/main/webapp/resources/action/action3.xhtml b/test/servlet30/composite/src/main/webapp/resources/action/action3.xhtml
new file mode 100644
index 0000000..9c65d21
--- /dev/null
+++ b/test/servlet30/composite/src/main/webapp/resources/action/action3.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:composite="http://java.sun.com/jsf/composite">
+    <head>
+    </head>
+    <body>
+        <composite:interface>
+           <composite:attribute name="action" required="true"
+               method-signature="java.lang.String action()" />
+        </composite:interface>
+        <composite:implementation>
+            <h:form id="form1">
+               <h:commandButton id="submit" value="submit" action="#{cc.attrs.action}" />
+            </h:form> 
+        </composite:implementation>
+    </body>
+</html>
diff --git a/test/servlet30/composite/src/main/webapp/resources/action/actionButton.xhtml b/test/servlet30/composite/src/main/webapp/resources/action/actionButton.xhtml
new file mode 100644
index 0000000..8d84dd6
--- /dev/null
+++ b/test/servlet30/composite/src/main/webapp/resources/action/actionButton.xhtml
@@ -0,0 +1,16 @@
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:composite="http://java.sun.com/jsf/composite">
+
+<composite:interface>
+  <composite:actionSource name="abutton" />
+</composite:interface>
+
+<composite:implementation>
+      <h:commandButton id="abutton" value="Click Me" />
+</composite:implementation>
+
+
+</html>
diff --git a/test/servlet30/composite/src/main/webapp/resources/actionSource/actionSource1.xhtml b/test/servlet30/composite/src/main/webapp/resources/actionSource/actionSource1.xhtml
new file mode 100644
index 0000000..5d4ca1e
--- /dev/null
+++ b/test/servlet30/composite/src/main/webapp/resources/actionSource/actionSource1.xhtml
@@ -0,0 +1,57 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:composite="http://java.sun.com/jsf/composite">
+    <body>
+        <composite:interface>
+            <composite:actionSource name="command"/>
+        </composite:interface>
+        <composite:implementation>
+            <h:commandButton id="command" value="ActionSource1"/>
+        </composite:implementation>
+    </body>
+</html>
diff --git a/test/servlet30/composite/src/main/webapp/resources/attribute/attribute1.xhtml b/test/servlet30/composite/src/main/webapp/resources/attribute/attribute1.xhtml
new file mode 100644
index 0000000..7e303ea
--- /dev/null
+++ b/test/servlet30/composite/src/main/webapp/resources/attribute/attribute1.xhtml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:cc="http://java.sun.com/jsf/composite"
+      xmlns:h="http://java.sun.com/jsf/html">
+
+    <cc:interface>
+        <cc:attribute name="text" type="java.lang.String"/>
+    </cc:interface>
+    <cc:implementation>
+        <p>
+        The text below is coming in through # {cc.attrs.text}.
+        </p>
+        <h:outputText value="#{cc.attrs.text}"/>
+        <p>
+        The text above is coming in through # {cc.attrs.text}.
+        </p>
+    </cc:implementation>
+</html>
diff --git a/test/servlet30/composite/src/main/webapp/resources/attribute/attribute2.xhtml b/test/servlet30/composite/src/main/webapp/resources/attribute/attribute2.xhtml
new file mode 100644
index 0000000..3500545
--- /dev/null
+++ b/test/servlet30/composite/src/main/webapp/resources/attribute/attribute2.xhtml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:cc="http://java.sun.com/jsf/composite"
+      xmlns:h="http://java.sun.com/jsf/html">
+
+    <cc:interface>
+        <cc:attribute name="text" type="java.lang.String" default="This is the default text"/>
+    </cc:interface>
+    <cc:implementation>
+        <h:outputText value="#{cc.attrs.text}"/>
+    </cc:implementation>
+</html>
diff --git a/test/servlet30/composite/src/main/webapp/resources/attribute/attributeType.xhtml b/test/servlet30/composite/src/main/webapp/resources/attribute/attributeType.xhtml
new file mode 100644
index 0000000..a8f809e
--- /dev/null
+++ b/test/servlet30/composite/src/main/webapp/resources/attribute/attributeType.xhtml
@@ -0,0 +1,44 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:cc="http://java.sun.com/jsf/composite">
+
+    <cc:interface componentType="com.sun.faces.test.servlet30.composite.AttributeTypeComponent">
+
+        <cc:attribute name="untypedXunset" />
+        <cc:attribute name="untypedXliteral" />
+        <cc:attribute name="untypedXwideEL" />
+        <cc:attribute name="untypedXmediumEL" />
+        <cc:attribute name="untypedXnarrowEL" />
+        <cc:attribute name="untypedXnullEL" />
+        <cc:attribute name="untypedXsetByApi" />
+
+        <cc:attribute name="typedXunset"
+            type="com.sun.faces.test.servlet30.composite.AttributeTypeBean$Dog" />
+
+        <cc:attribute name="typedXliteral" type="java.lang.Integer" />
+
+        <cc:attribute name="typedXwideEL"
+            type="com.sun.faces.test.servlet30.composite.AttributeTypeBean$Dog" />
+
+        <cc:attribute name="typedXmediumEL"
+            type="com.sun.faces.test.servlet30.composite.AttributeTypeBean$Dog" />
+
+        <cc:attribute name="typedXnarrowEL"
+            type="com.sun.faces.test.servlet30.composite.AttributeTypeBean$Dog" />
+
+        <cc:attribute name="typedXnullEL"
+            type="com.sun.faces.test.servlet30.composite.AttributeTypeBean$Dog" />
+
+        <cc:attribute name="typedXsetByApi"
+            type="com.sun.faces.test.servlet30.composite.AttributeTypeBean$Dog" />
+
+    </cc:interface>
+    <cc:implementation>
+        <p>#{attributeTypeBean.from(cc.attrs)}</p>
+        <p>#{cc.attrs.customProperty}</p>
+    </cc:implementation> 
+</html>
diff --git a/test/servlet30/composite/src/main/webapp/resources/attribute/issue2176.xhtml b/test/servlet30/composite/src/main/webapp/resources/attribute/issue2176.xhtml
new file mode 100644
index 0000000..ed9786d
--- /dev/null
+++ b/test/servlet30/composite/src/main/webapp/resources/attribute/issue2176.xhtml
@@ -0,0 +1,57 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:cc="http://java.sun.com/jsf/composite"
+      xmlns:h="http://java.sun.com/jsf/html">
+
+    <cc:interface>
+        <cc:attribute name="text" default="DEFAULT" type="java.lang.String"/>
+    </cc:interface>
+    <cc:implementation>
+        <h:outputText value="#{cc.attrs.text}"/> <br/>
+        <cc:insertChildren/>
+    </cc:implementation>
+</html>
diff --git a/test/servlet30/composite/src/main/webapp/resources/basic/isInsideCompositeComponent.xhtml b/test/servlet30/composite/src/main/webapp/resources/basic/isInsideCompositeComponent.xhtml
new file mode 100644
index 0000000..4b6b646
--- /dev/null
+++ b/test/servlet30/composite/src/main/webapp/resources/basic/isInsideCompositeComponent.xhtml
@@ -0,0 +1,59 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:cc="http://java.sun.com/jsf/composite"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <head>
+        <title></title>
+    </head>
+    <body>
+        <cc:interface>
+        </cc:interface>
+        <cc:implementation>
+            isInsideCompositeComponent: <h:outputText value="#{basicBean.insideCompositeComponent}"/>
+        </cc:implementation>
+    </body>
+</html>
diff --git a/test/servlet30/composite/src/main/webapp/resources/basic/isInsideCompositeComponent2.xhtml b/test/servlet30/composite/src/main/webapp/resources/basic/isInsideCompositeComponent2.xhtml
new file mode 100644
index 0000000..7e1277d
--- /dev/null
+++ b/test/servlet30/composite/src/main/webapp/resources/basic/isInsideCompositeComponent2.xhtml
@@ -0,0 +1,58 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:cc="http://java.sun.com/jsf/composite">
+    <head>
+        <title></title>
+    </head>
+    <body>
+        <cc:interface>
+        </cc:interface>
+        <cc:implementation>
+            <cc:insertChildren/>
+        </cc:implementation>
+    </body>
+</html>
diff --git a/test/servlet30/composite/src/main/webapp/resources/choose/choose1.xhtml b/test/servlet30/composite/src/main/webapp/resources/choose/choose1.xhtml
new file mode 100644
index 0000000..37dc63f
--- /dev/null
+++ b/test/servlet30/composite/src/main/webapp/resources/choose/choose1.xhtml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:cc="http://java.sun.com/jsf/composite"
+      xmlns:c="http://java.sun.com/jsp/jstl/core">
+    <cc:interface>
+    </cc:interface>
+    <cc:implementation>
+        <c:choose>
+            <c:when test="#{cc.attrs.value eq 'Execute choose'}">
+                <span>Choose</span><br />
+            </c:when>
+            <c:otherwise>
+                <span>Otherwise</span><br />
+            </c:otherwise>
+        </c:choose>
+    </cc:implementation>
+</html>
diff --git a/test/servlet30/composite/src/main/webapp/resources/choose/choose2.xhtml b/test/servlet30/composite/src/main/webapp/resources/choose/choose2.xhtml
new file mode 100644
index 0000000..993b6d6
--- /dev/null
+++ b/test/servlet30/composite/src/main/webapp/resources/choose/choose2.xhtml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:cc="http://java.sun.com/jsf/composite"
+      xmlns:choose="http://java.sun.com/jsf/composite/choose">
+    <cc:interface>
+        <cc:attribute name="top" type="java.lang.String"/>
+    </cc:interface>
+    <cc:implementation>
+        <choose:choose2b nested="#{cc.attrs.top}"/>
+    </cc:implementation>
+</html>
diff --git a/test/servlet30/composite/src/main/webapp/resources/choose/choose2b.xhtml b/test/servlet30/composite/src/main/webapp/resources/choose/choose2b.xhtml
new file mode 100644
index 0000000..aad269e
--- /dev/null
+++ b/test/servlet30/composite/src/main/webapp/resources/choose/choose2b.xhtml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:cc="http://java.sun.com/jsf/composite"
+      xmlns:c="http://java.sun.com/jsp/jstl/core">
+    <cc:interface>
+    </cc:interface>
+    <cc:implementation>
+        <c:choose>
+            <c:when test="#{cc.attrs.nested eq 'Execute choose'}">
+                <span>Choose</span><br />
+            </c:when>
+            <c:otherwise>
+                <span>Otherwise</span><br />
+            </c:otherwise>
+        </c:choose>
+    </cc:implementation>
+</html>
diff --git a/test/servlet30/composite/src/main/webapp/resources/converter/converter1.xhtml b/test/servlet30/composite/src/main/webapp/resources/converter/converter1.xhtml
new file mode 100644
index 0000000..ac6fb72
--- /dev/null
+++ b/test/servlet30/composite/src/main/webapp/resources/converter/converter1.xhtml
@@ -0,0 +1,60 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:composite="http://java.sun.com/jsf/composite">
+    <head>
+        <title>Not present in rendered output</title>
+    </head>
+    <body>
+        <composite:interface>
+            <composite:editableValueHolder name="input"/>
+        </composite:interface>
+        <composite:implementation>
+            <h:inputText id="input" value="Input1"/>
+        </composite:implementation>
+    </body>
+</html>
diff --git a/test/servlet30/composite/src/main/webapp/resources/define/define1.xhtml b/test/servlet30/composite/src/main/webapp/resources/define/define1.xhtml
new file mode 100644
index 0000000..f0addeb
--- /dev/null
+++ b/test/servlet30/composite/src/main/webapp/resources/define/define1.xhtml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:cc="http://java.sun.com/jsf/composite"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+    <cc:interface>
+    </cc:interface>
+    <cc:implementation>
+        <p>
+            The name is inserted below here.
+        </p>
+        <ui:insert name="name">Composite Name</ui:insert>
+        <p>
+            The name is inserted above here.
+        </p>
+    </cc:implementation>
+</html>
diff --git a/test/servlet30/composite/src/main/webapp/resources/form/formAndComposite1.xhtml b/test/servlet30/composite/src/main/webapp/resources/form/formAndComposite1.xhtml
new file mode 100644
index 0000000..3366998
--- /dev/null
+++ b/test/servlet30/composite/src/main/webapp/resources/form/formAndComposite1.xhtml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:cc="http://java.sun.com/jsf/composite"
+      xmlns:h="http://java.sun.com/jsf/html">
+
+    <cc:interface>
+    </cc:interface>
+    <cc:implementation>
+        Enter the value for input1: <h:inputText value="#{stateBean.input1}"/>
+        <h:commandButton action="form1" value="Submit"/>
+    </cc:implementation>
+</html>
diff --git a/test/servlet30/composite/src/main/webapp/resources/form/formAndComposite2.xhtml b/test/servlet30/composite/src/main/webapp/resources/form/formAndComposite2.xhtml
new file mode 100644
index 0000000..3366998
--- /dev/null
+++ b/test/servlet30/composite/src/main/webapp/resources/form/formAndComposite2.xhtml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:cc="http://java.sun.com/jsf/composite"
+      xmlns:h="http://java.sun.com/jsf/html">
+
+    <cc:interface>
+    </cc:interface>
+    <cc:implementation>
+        Enter the value for input1: <h:inputText value="#{stateBean.input1}"/>
+        <h:commandButton action="form1" value="Submit"/>
+    </cc:implementation>
+</html>
diff --git a/test/servlet30/composite/src/main/webapp/resources/if/if1.xhtml b/test/servlet30/composite/src/main/webapp/resources/if/if1.xhtml
new file mode 100644
index 0000000..fed6076
--- /dev/null
+++ b/test/servlet30/composite/src/main/webapp/resources/if/if1.xhtml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:cc="http://java.sun.com/jsf/composite"
+      xmlns:c="http://java.sun.com/jsp/jstl/core">
+    <cc:interface>
+    </cc:interface>
+    <cc:implementation>
+        <c:if test="#{ifBean.alwaysTrue}">
+            We should always show up!
+        </c:if>
+    </cc:implementation>
+</html>
diff --git a/test/servlet30/composite/src/main/webapp/resources/if/if2.xhtml b/test/servlet30/composite/src/main/webapp/resources/if/if2.xhtml
new file mode 100644
index 0000000..5e0fb75
--- /dev/null
+++ b/test/servlet30/composite/src/main/webapp/resources/if/if2.xhtml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:cc="http://java.sun.com/jsf/composite"
+      xmlns:c="http://java.sun.com/jsp/jstl/core">
+    <cc:interface>
+    </cc:interface>
+    <cc:implementation>
+        <c:if test="#{not ifBean.alwaysTrue}">
+            We should never show up!
+        </c:if>
+    </cc:implementation>
+</html>
diff --git a/test/servlet30/composite/src/main/webapp/resources/include/include1.xhtml b/test/servlet30/composite/src/main/webapp/resources/include/include1.xhtml
new file mode 100644
index 0000000..feb59e5
--- /dev/null
+++ b/test/servlet30/composite/src/main/webapp/resources/include/include1.xhtml
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:composite="http://java.sun.com/jsf/composite"
+      xmlns:include="http://java.sun.com/jsf/composite/include">
+    <composite:interface>
+    </composite:interface>
+    <composite:implementation>
+        Some bla bla bla goes in here
+        <div>
+            <include:include1a name="First name"/>
+        </div>
+        <div>
+            <include:include1b name="Second name"/>
+        </div>
+    </composite:implementation>
+</html>
diff --git a/test/servlet30/composite/src/main/webapp/resources/include/include1a.xhtml b/test/servlet30/composite/src/main/webapp/resources/include/include1a.xhtml
new file mode 100644
index 0000000..f38ca45
--- /dev/null
+++ b/test/servlet30/composite/src/main/webapp/resources/include/include1a.xhtml
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:composite="http://java.sun.com/jsf/composite">
+    <composite:interface>
+        <composite:attribute name="name" required="true" />
+    </composite:interface>
+    <composite:implementation>
+        <h:outputText value="Hello #{cc.attrs.name}" />
+    </composite:implementation>
+</html>
diff --git a/test/servlet30/composite/src/main/webapp/resources/include/include1b.xhtml b/test/servlet30/composite/src/main/webapp/resources/include/include1b.xhtml
new file mode 100644
index 0000000..e2ee21b
--- /dev/null
+++ b/test/servlet30/composite/src/main/webapp/resources/include/include1b.xhtml
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:composite="http://java.sun.com/jsf/composite">
+    <composite:interface>
+        <composite:attribute name="name" required="true" />
+    </composite:interface>
+    <composite:implementation>
+        <h:outputText value="Hello #{cc.attrs.name}" />
+    </composite:implementation>
+</html>
\ No newline at end of file
diff --git a/test/servlet30/composite/src/main/webapp/resources/input/input1.xhtml b/test/servlet30/composite/src/main/webapp/resources/input/input1.xhtml
new file mode 100644
index 0000000..c39a8c4
--- /dev/null
+++ b/test/servlet30/composite/src/main/webapp/resources/input/input1.xhtml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:cc="http://java.sun.com/jsf/composite"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <cc:interface>
+    </cc:interface>
+    <cc:implementation>
+        <h:inputText id="input" value="#{compositeBean.input1}"/>
+    </cc:implementation>
+</html>
diff --git a/test/servlet30/composite/src/main/webapp/resources/insertChildren/insertChildren1.xhtml b/test/servlet30/composite/src/main/webapp/resources/insertChildren/insertChildren1.xhtml
new file mode 100644
index 0000000..7f64ed1
--- /dev/null
+++ b/test/servlet30/composite/src/main/webapp/resources/insertChildren/insertChildren1.xhtml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:cc="http://java.sun.com/jsf/composite">
+    <cc:interface>
+    </cc:interface>
+    <cc:implementation>
+        <cc:insertChildren/>
+    </cc:implementation>
+</html>
diff --git a/test/servlet30/composite/src/main/webapp/resources/insertChildren/insertChildren2.xhtml b/test/servlet30/composite/src/main/webapp/resources/insertChildren/insertChildren2.xhtml
new file mode 100644
index 0000000..3fc7839
--- /dev/null
+++ b/test/servlet30/composite/src/main/webapp/resources/insertChildren/insertChildren2.xhtml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:cc="http://java.sun.com/jsf/composite"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:insertChildren="http://java.sun.com/jsf/composite/insertChildren">
+    <cc:interface>
+    </cc:interface>
+    <cc:implementation>
+        <p>
+            Text below is inserted using a nested composite component and cc:insertChildren.
+        </p>
+        <insertChildren:insertChildren1>
+            <h:outputText value="Inserting children"/>
+        </insertChildren:insertChildren1>
+        <p>
+            Text above is inserted using a nested composite component and cc:insertChildren.
+        </p>
+    </cc:implementation>
+</html>
diff --git a/test/servlet30/composite/src/main/webapp/resources/insertChildren/insertChildren3.xhtml b/test/servlet30/composite/src/main/webapp/resources/insertChildren/insertChildren3.xhtml
new file mode 100644
index 0000000..3fc7839
--- /dev/null
+++ b/test/servlet30/composite/src/main/webapp/resources/insertChildren/insertChildren3.xhtml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:cc="http://java.sun.com/jsf/composite"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:insertChildren="http://java.sun.com/jsf/composite/insertChildren">
+    <cc:interface>
+    </cc:interface>
+    <cc:implementation>
+        <p>
+            Text below is inserted using a nested composite component and cc:insertChildren.
+        </p>
+        <insertChildren:insertChildren1>
+            <h:outputText value="Inserting children"/>
+        </insertChildren:insertChildren1>
+        <p>
+            Text above is inserted using a nested composite component and cc:insertChildren.
+        </p>
+    </cc:implementation>
+</html>
diff --git a/test/servlet30/composite/src/main/webapp/resources/insertChildren/insertChildren4.xhtml b/test/servlet30/composite/src/main/webapp/resources/insertChildren/insertChildren4.xhtml
new file mode 100644
index 0000000..414a4b2
--- /dev/null
+++ b/test/servlet30/composite/src/main/webapp/resources/insertChildren/insertChildren4.xhtml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:cc="http://java.sun.com/jsf/composite"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:insertChildren="http://java.sun.com/jsf/composite/insertChildren">
+    <cc:interface>
+    </cc:interface>
+    <cc:implementation>
+        <p>
+            Text below is inserted using a nested composite component and cc:insertChildren.
+        </p>
+        <insertChildren:insertChildren4b>
+            <h:outputText value="Inserting children"/>
+        </insertChildren:insertChildren4b>
+        <p>
+            Text above is inserted using a nested composite component and cc:insertChildren.
+        </p>
+    </cc:implementation>
+</html>
diff --git a/test/servlet30/composite/src/main/webapp/resources/insertChildren/insertChildren4b.xhtml b/test/servlet30/composite/src/main/webapp/resources/insertChildren/insertChildren4b.xhtml
new file mode 100644
index 0000000..90cdec1
--- /dev/null
+++ b/test/servlet30/composite/src/main/webapp/resources/insertChildren/insertChildren4b.xhtml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:cc="http://java.sun.com/jsf/composite"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <cc:interface>
+    </cc:interface>
+    <cc:implementation>
+        <h:panelGroup>
+            <cc:insertChildren/>
+        </h:panelGroup>
+    </cc:implementation>
+</html>
diff --git a/test/servlet30/composite/src/main/webapp/resources/insertFacet/insertFacet1.xhtml b/test/servlet30/composite/src/main/webapp/resources/insertFacet/insertFacet1.xhtml
new file mode 100644
index 0000000..1ba185c
--- /dev/null
+++ b/test/servlet30/composite/src/main/webapp/resources/insertFacet/insertFacet1.xhtml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:cc="http://java.sun.com/jsf/composite"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <cc:interface>
+    </cc:interface>
+    <cc:implementation>
+        <h:panelGrid columns="2">
+            <cc:insertFacet name="caption"/>
+        </h:panelGrid>
+    </cc:implementation>
+</html>
diff --git a/test/servlet30/composite/src/main/webapp/resources/insertFacet/insertFacet2.xhtml b/test/servlet30/composite/src/main/webapp/resources/insertFacet/insertFacet2.xhtml
new file mode 100644
index 0000000..5bb96f8
--- /dev/null
+++ b/test/servlet30/composite/src/main/webapp/resources/insertFacet/insertFacet2.xhtml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:cc="http://java.sun.com/jsf/composite"
+      xmlns:insertFacet="http://java.sun.com/jsf/composite/insertFacet">
+    <cc:interface>
+        <cc:facet name="myFacet" required="false"/>
+    </cc:interface>
+    <cc:implementation>
+        <cc:insertChildren/>
+        <insertFacet:insertFacet2b>
+            <cc:insertFacet name="myFacet"/>
+        </insertFacet:insertFacet2b>
+    </cc:implementation>
+</html>
diff --git a/test/servlet30/composite/src/main/webapp/resources/insertFacet/insertFacet2b.xhtml b/test/servlet30/composite/src/main/webapp/resources/insertFacet/insertFacet2b.xhtml
new file mode 100644
index 0000000..9ab0e21
--- /dev/null
+++ b/test/servlet30/composite/src/main/webapp/resources/insertFacet/insertFacet2b.xhtml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:cc="http://java.sun.com/jsf/composite">
+    <cc:interface>
+        <cc:facet name="myFacet" required="false"/>
+    </cc:interface>
+    <cc:implementation>
+        <cc:renderFacet name="myFacet"/>
+    </cc:implementation>
+</html>
diff --git a/test/servlet30/composite/src/main/webapp/resources/issue1943/issue1943.xhtml b/test/servlet30/composite/src/main/webapp/resources/issue1943/issue1943.xhtml
new file mode 100644
index 0000000..556c365
--- /dev/null
+++ b/test/servlet30/composite/src/main/webapp/resources/issue1943/issue1943.xhtml
@@ -0,0 +1,25 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:composite="http://java.sun.com/jsf/composite">
+    <body>
+        <composite:interface name="groupsTable">
+            <composite:attribute name="bean" required="true" shortDescription="a controller"/>
+        </composite:interface>
+        <composite:implementation>
+            <h:selectOneListbox value="#{cc.attrs.bean.groupToAdd}"
+                                valueChangeListener="#{cc.attrs.bean.valueChange}"
+                                immediate="true"
+                                hideNoSelectionOption="false">
+                <f:selectItem itemValue="4" itemLabel="Bobby Orr" />
+                <f:selectItem itemValue="10" itemLabel="Guy Lafleur"/>
+            </h:selectOneListbox>
+            <h:commandButton id="submit" value="submit"/>
+        </composite:implementation>
+    </body>
+</html>
diff --git a/test/servlet30/composite/src/main/webapp/resources/issue1943/issue1943b.xhtml b/test/servlet30/composite/src/main/webapp/resources/issue1943/issue1943b.xhtml
new file mode 100644
index 0000000..d24b142
--- /dev/null
+++ b/test/servlet30/composite/src/main/webapp/resources/issue1943/issue1943b.xhtml
@@ -0,0 +1,20 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:composite="http://java.sun.com/jsf/composite"
+      xmlns:issue1943="http://java.sun.com/jsf/composite/issue1943">
+    <body>
+        <composite:interface name="groupsTable">
+            <composite:attribute name="bean" required="true" shortDescription="a controller"/>
+        </composite:interface>
+        <composite:implementation>
+            <issue1943:issue1943c>
+                <h:commandButton action="#{cc.attrs.bean.removeGroup}" value="Remove"/>
+            </issue1943:issue1943c>
+        </composite:implementation>
+    </body>
+</html>
diff --git a/test/servlet30/composite/src/main/webapp/resources/issue1943/issue1943c.xhtml b/test/servlet30/composite/src/main/webapp/resources/issue1943/issue1943c.xhtml
new file mode 100644
index 0000000..6e15ced
--- /dev/null
+++ b/test/servlet30/composite/src/main/webapp/resources/issue1943/issue1943c.xhtml
@@ -0,0 +1,15 @@
+<?xml version='1.0' encoding='UTF-8'?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:composite="http://java.sun.com/jsf/composite">
+
+    <body>
+        <composite:interface name="outer"/>
+        <composite:implementation>
+            (<composite:insertChildren/>)
+        </composite:implementation>
+    </body>
+</html>
diff --git a/test/servlet30/composite/src/main/webapp/resources/issue2035/issue2035.xhtml b/test/servlet30/composite/src/main/webapp/resources/issue2035/issue2035.xhtml
new file mode 100644
index 0000000..3a3ea28
--- /dev/null
+++ b/test/servlet30/composite/src/main/webapp/resources/issue2035/issue2035.xhtml
@@ -0,0 +1,55 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:cc="http://java.sun.com/jsf/composite">
+    <cc:interface>
+        <cc:attribute name="ProdDescription" required="true" displayName="Description" default="No Description"/>
+        <cc:attribute name="ProdDescriptionLabel"/>
+    </cc:interface>
+    <cc:implementation>
+        <h:commandButton id="button" value="#{cc.attrs.label}">	
+            <h:inputText id="input" value="#{cc.attrs.ProdDescription}" label="#{cc.attrs.ProdDescriptionLabel}"/>
+        </h:commandButton>
+    </cc:implementation>
+</html>
diff --git a/test/servlet30/composite/src/main/webapp/resources/issue2320/issue2320.xhtml b/test/servlet30/composite/src/main/webapp/resources/issue2320/issue2320.xhtml
new file mode 100644
index 0000000..492e5eb
--- /dev/null
+++ b/test/servlet30/composite/src/main/webapp/resources/issue2320/issue2320.xhtml
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:composite="http://java.sun.com/jsf/composite" >
+    <composite:interface>
+    </composite:interface>
+    <composite:implementation>
+        Hello, world <br/>
+    </composite:implementation>
+</html>
diff --git a/test/servlet30/composite/src/main/webapp/resources/link/link1.xhtml b/test/servlet30/composite/src/main/webapp/resources/link/link1.xhtml
new file mode 100644
index 0000000..1e3d788
--- /dev/null
+++ b/test/servlet30/composite/src/main/webapp/resources/link/link1.xhtml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:cc="http://java.sun.com/jsf/composite"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <cc:interface>
+        <cc:attribute name="onclick"/>
+    </cc:interface>
+    <cc:implementation>
+        <h:link id="link" value="Link" onclick="#{cc.attrs.onclick}"/>
+    </cc:implementation>
+</html>
diff --git a/test/servlet30/composite/src/main/webapp/resources/nested/nested1.xhtml b/test/servlet30/composite/src/main/webapp/resources/nested/nested1.xhtml
new file mode 100644
index 0000000..8d2ecab
--- /dev/null
+++ b/test/servlet30/composite/src/main/webapp/resources/nested/nested1.xhtml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:cc="http://java.sun.com/jsf/composite"
+      xmlns:simple="http://java.sun.com/jsf/composite/simple">
+
+    <cc:interface>
+    </cc:interface>
+    <cc:implementation>
+        <p>
+            The content below this is coming from a nested composite component.
+        </p>
+        <simple:simple1/>
+        <p>
+            The content above this is coming from a nested composite component.
+        </p>
+    </cc:implementation>
+</html>
diff --git a/test/servlet30/composite/src/main/webapp/resources/nested/nested2.xhtml b/test/servlet30/composite/src/main/webapp/resources/nested/nested2.xhtml
new file mode 100644
index 0000000..de3707a
--- /dev/null
+++ b/test/servlet30/composite/src/main/webapp/resources/nested/nested2.xhtml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:cc="http://java.sun.com/jsf/composite"
+      xmlns:simple="http://java.sun.com/jsf/composite/simple">
+
+    <cc:interface>
+    </cc:interface>
+    <cc:implementation>
+        <p>
+            The content below this is coming from a nested composite component.
+        </p>
+        <simple:simple2/>
+        <p>
+            The content above this is coming from a nested composite component.
+        </p>
+    </cc:implementation>
+</html>
diff --git a/test/servlet30/composite/src/main/webapp/resources/nested/nested3.xhtml b/test/servlet30/composite/src/main/webapp/resources/nested/nested3.xhtml
new file mode 100644
index 0000000..33a3cae
--- /dev/null
+++ b/test/servlet30/composite/src/main/webapp/resources/nested/nested3.xhtml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:cc="http://java.sun.com/jsf/composite"
+      xmlns:simple="http://java.sun.com/jsf/composite/simple">
+
+    <cc:interface>
+    </cc:interface>
+    <cc:implementation>
+        <p>
+            The content below this is coming from a nested composite component.
+        </p>
+        <simple:simple3/>
+        <p>
+            The content above this is coming from a nested composite component.
+        </p>
+    </cc:implementation>
+</html>
diff --git a/test/servlet30/composite/src/main/webapp/resources/nested/nestedForm1.xhtml b/test/servlet30/composite/src/main/webapp/resources/nested/nestedForm1.xhtml
new file mode 100644
index 0000000..820968d
--- /dev/null
+++ b/test/servlet30/composite/src/main/webapp/resources/nested/nestedForm1.xhtml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:cc="http://java.sun.com/jsf/composite"
+      xmlns:h="http://java.sun.com/jsf/html">
+
+    <cc:interface>
+    </cc:interface>
+    <cc:implementation>
+        <h:form>
+            Enter the value for input1: <h:inputText value="#{stateBean.input1}"/>
+            <h:commandButton action="form1" value="Submit"/>
+        </h:form>
+        <p>
+            And the value of input1 is '<h:outputText value="#{stateBean.input1}"/>'
+        </p>
+    </cc:implementation>
+</html>
diff --git a/test/servlet30/composite/src/main/webapp/resources/nested/nestedForm2.xhtml b/test/servlet30/composite/src/main/webapp/resources/nested/nestedForm2.xhtml
new file mode 100644
index 0000000..11c3fbe
--- /dev/null
+++ b/test/servlet30/composite/src/main/webapp/resources/nested/nestedForm2.xhtml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:cc="http://java.sun.com/jsf/composite"
+      xmlns:h="http://java.sun.com/jsf/html">
+
+    <cc:interface>
+    </cc:interface>
+    <cc:implementation>
+        <h:form prependId="false">
+            Enter the value for input1: <h:inputText value="#{stateBean.input1}"/>
+            <h:commandButton action="form1" value="Submit"/>
+        </h:form>
+        <p>
+            And the value of input1 is '<h:outputText value="#{stateBean.input1}"/>'
+        </p>
+    </cc:implementation>
+</html>
diff --git a/test/servlet30/composite/src/main/webapp/resources/outputStylesheet/outputStylesheet1.xhtml b/test/servlet30/composite/src/main/webapp/resources/outputStylesheet/outputStylesheet1.xhtml
new file mode 100644
index 0000000..79872bb
--- /dev/null
+++ b/test/servlet30/composite/src/main/webapp/resources/outputStylesheet/outputStylesheet1.xhtml
@@ -0,0 +1,52 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:cc="http://java.sun.com/jsf/composite">
+
+    <cc:interface/>
+    <cc:implementation>
+        <h:outputStylesheet name="css/outputStylesheet1.css"/>
+        <cc:insertChildren/>
+    </cc:implementation>
+</html>
diff --git a/test/servlet30/composite/src/main/webapp/resources/preRenderView/component1.xhtml b/test/servlet30/composite/src/main/webapp/resources/preRenderView/component1.xhtml
new file mode 100644
index 0000000..fa7b3be
--- /dev/null
+++ b/test/servlet30/composite/src/main/webapp/resources/preRenderView/component1.xhtml
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:composite="http://java.sun.com/jsf/composite"
+      xmlns:preRenderView="http://java.sun.com/jsf/composite/preRenderView">
+    <composite:interface componentType="com.sun.faces.test.servlet30.composite.PreRenderViewComponent1">
+        <composite:attribute name="item" type="com.sun.faces.test.servlet30.composite.PreRenderViewDataItem"/>
+    </composite:interface>
+    <composite:implementation>
+        <h:panelGroup id="group" layout="block" styleClass="component">
+            <h:panelGroup id="controls" layout="block" styleClass="controls">
+            </h:panelGroup>
+            <preRenderView:component2 item="#{cc.attrs.item}" />
+        </h:panelGroup>
+    </composite:implementation>
+</html>
diff --git a/test/servlet30/composite/src/main/webapp/resources/preRenderView/component2.xhtml b/test/servlet30/composite/src/main/webapp/resources/preRenderView/component2.xhtml
new file mode 100644
index 0000000..47253a7
--- /dev/null
+++ b/test/servlet30/composite/src/main/webapp/resources/preRenderView/component2.xhtml
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" >
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:composite="http://java.sun.com/jsf/composite" >
+    <composite:interface componentType="com.sun.faces.test.servlet30.composite.PreRenderViewComponent2">
+        <composite:attribute name="item" type="com.sun.faces.test.servlet30.composite.PreRenderViewDataItem"/>
+    </composite:interface>
+    <composite:implementation>
+        <h:panelGroup layout="block" styleClass="component" >
+            <h:panelGroup id="controls" layout="block" styleClass="controls">
+            </h:panelGroup>
+        </h:panelGroup>
+    </composite:implementation>
+</html>
diff --git a/test/servlet30/composite/src/main/webapp/resources/preRenderView/preRenderView.css b/test/servlet30/composite/src/main/webapp/resources/preRenderView/preRenderView.css
new file mode 100644
index 0000000..46a964b
--- /dev/null
+++ b/test/servlet30/composite/src/main/webapp/resources/preRenderView/preRenderView.css
@@ -0,0 +1,75 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+
+div.content 
+{
+    clear:both;
+    float:left;
+    padding:1em;
+    border:1px dashed blue;
+}
+
+div.content .button 
+{
+    clear:both;
+    float:left;
+    margin-top:1em;
+}
+
+div.component
+{
+    clear:both;
+    float:left;
+    padding:0.5em;
+    border:1px dashed red;
+}
+
+div.controls
+{
+    clear:both;
+    float:left;
+    padding:0.5em;
+}
+
+input
+{
+    margin-right:1em;
+}
diff --git a/test/servlet30/composite/src/main/webapp/resources/programmatic/programmaticComponent.xhtml b/test/servlet30/composite/src/main/webapp/resources/programmatic/programmaticComponent.xhtml
new file mode 100644
index 0000000..763de91
--- /dev/null
+++ b/test/servlet30/composite/src/main/webapp/resources/programmatic/programmaticComponent.xhtml
@@ -0,0 +1,17 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:cc="http://java.sun.com/jsf/composite">
+    <body>
+        <cc:interface>
+            <cc:attribute name="model" 
+                          shortDescription="Has a RW string property named fieldValue."/>
+        </cc:interface>
+        <cc:implementation>
+            <p>Input: <h:inputText id="button" value="#{cc.attrs.model.fieldValue}"/></p>
+        </cc:implementation>
+    </body>
+</html>
diff --git a/test/servlet30/composite/src/main/webapp/resources/renderFacet/renderFacet1.xhtml b/test/servlet30/composite/src/main/webapp/resources/renderFacet/renderFacet1.xhtml
new file mode 100644
index 0000000..3accb29
--- /dev/null
+++ b/test/servlet30/composite/src/main/webapp/resources/renderFacet/renderFacet1.xhtml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:cc="http://java.sun.com/jsf/composite">
+    <cc:interface>
+    </cc:interface>
+    <cc:implementation>
+        <cc:renderFacet name="myfacet"/>
+    </cc:implementation>
+</html>
diff --git a/test/servlet30/composite/src/main/webapp/resources/renderFacet/renderFacet2.xhtml b/test/servlet30/composite/src/main/webapp/resources/renderFacet/renderFacet2.xhtml
new file mode 100644
index 0000000..6daf828
--- /dev/null
+++ b/test/servlet30/composite/src/main/webapp/resources/renderFacet/renderFacet2.xhtml
@@ -0,0 +1,63 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:cc="http://java.sun.com/jsf/composite"
+      xmlns:renderFacet="http://java.sun.com/jsf/composite/renderFacet">
+    <head>
+        <title></title>
+    </head>
+    <body>
+        <cc:interface>
+            <cc:facet name="myFacet" required="false"/>
+        </cc:interface>
+        <cc:implementation>
+            <cc:insertChildren/>
+            <renderFacet:renderFacet2b> 	
+                <cc:insertFacet name="myFacet"/>
+            </renderFacet:renderFacet2b>
+        </cc:implementation>
+    </body>
+</html>
diff --git a/test/servlet30/composite/src/main/webapp/resources/renderFacet/renderFacet2b.xhtml b/test/servlet30/composite/src/main/webapp/resources/renderFacet/renderFacet2b.xhtml
new file mode 100644
index 0000000..28521dc
--- /dev/null
+++ b/test/servlet30/composite/src/main/webapp/resources/renderFacet/renderFacet2b.xhtml
@@ -0,0 +1,59 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:cc="http://java.sun.com/jsf/composite">
+    <head>
+        <title></title>
+    </head>
+    <body>
+        <cc:interface>
+            <cc:facet name="myFacet" required="false"/>
+        </cc:interface>
+        <cc:implementation>
+            <cc:renderFacet name="myFacet"/>
+        </cc:implementation>
+    </body>
+</html>
diff --git a/test/servlet30/composite/src/main/webapp/resources/renderFacet/renderFacetDuplicateId.xhtml b/test/servlet30/composite/src/main/webapp/resources/renderFacet/renderFacetDuplicateId.xhtml
new file mode 100644
index 0000000..ec53966
--- /dev/null
+++ b/test/servlet30/composite/src/main/webapp/resources/renderFacet/renderFacetDuplicateId.xhtml
@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:composite="http://java.sun.com/jsf/composite">
+    <h:head>
+        <title></title>
+    </h:head>
+    <h:body>
+        <composite:interface>
+            <composite:attribute name="title" required="false" />
+            <composite:attribute name="styleClass" required="false" 
+                                 default="ui-two-cols-layout"/>
+            <composite:attribute name="style" required="false" />
+            <composite:attribute name="col1Width" required="false" 
+                                 default="50%"/>
+            <composite:attribute name="col2Width" required="false" 
+                                 default="50%"/>
+            <composite:facet name="col1"/>
+            <composite:facet name="col2"/>
+        </composite:interface>
+        <composite:implementation>        
+            <div style="#{cc.attrs.style}" class="#{cc.attrs.styleClass}" 
+                 role="two-cols-layout">
+                <div class="two-cols-layout-col1"  style="width: #{cc.attrs.col1Width};">
+                    <composite:renderFacet name="col1" />
+                </div>
+                <div class="two-cols-layout-col2" style="width: #{cc.attrs.col2Width};">
+                    <composite:renderFacet name="col2" />
+                </div>                
+            </div>        
+        </composite:implementation>
+    </h:body>
+</html>
diff --git a/test/servlet30/composite/src/main/webapp/resources/simple/simple1.xhtml b/test/servlet30/composite/src/main/webapp/resources/simple/simple1.xhtml
new file mode 100644
index 0000000..6719433
--- /dev/null
+++ b/test/servlet30/composite/src/main/webapp/resources/simple/simple1.xhtml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:cc="http://java.sun.com/jsf/composite">
+
+    <cc:interface>
+    </cc:interface>
+    <cc:implementation>
+        This is coming from a composite component.
+    </cc:implementation>
+</html>
diff --git a/test/servlet30/composite/src/main/webapp/resources/simple/simple2.xhtml b/test/servlet30/composite/src/main/webapp/resources/simple/simple2.xhtml
new file mode 100644
index 0000000..aad26e4
--- /dev/null
+++ b/test/servlet30/composite/src/main/webapp/resources/simple/simple2.xhtml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:cc="http://java.sun.com/jsf/composite"
+      xmlns:h="http://java.sun.com/jsf/html">
+
+    <cc:interface>
+    </cc:interface>
+    <cc:implementation>
+        <p>
+            The content below this is coming from a h:outputText.
+        </p>
+        <h:outputText value="This is an outputText"/>
+        <p>
+            The content above this is coming from a h:outputText.
+        </p>
+    </cc:implementation>
+</html>
diff --git a/test/servlet30/composite/src/main/webapp/resources/simple/simple3.xhtml b/test/servlet30/composite/src/main/webapp/resources/simple/simple3.xhtml
new file mode 100644
index 0000000..bcc42ff
--- /dev/null
+++ b/test/servlet30/composite/src/main/webapp/resources/simple/simple3.xhtml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:cc="http://java.sun.com/jsf/composite"
+      xmlns:h="http://java.sun.com/jsf/html">
+
+    <cc:interface>
+    </cc:interface>
+    <cc:implementation>
+        <p>
+            The content below this is coming from a h:outputText using EL.
+        </p>
+        <h:outputText value="#{compositeBean.value}"/>
+        <p>
+            The content above this is coming from a h:outputText using EL.
+        </p>
+    </cc:implementation>
+</html>
diff --git a/test/servlet30/composite/src/main/webapp/resources/validator/validatorComponent.xhtml b/test/servlet30/composite/src/main/webapp/resources/validator/validatorComponent.xhtml
new file mode 100644
index 0000000..478108a
--- /dev/null
+++ b/test/servlet30/composite/src/main/webapp/resources/validator/validatorComponent.xhtml
@@ -0,0 +1,19 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:cc="http://java.sun.com/jsf/composite">
+    <h:head>
+        <title>Facelet Title</title>
+    </h:head>
+    <h:body>
+        <cc:interface componentType="com.sun.faces.test.servlet30.composite.ValidatorComponent">
+        </cc:interface>
+        <cc:implementation>
+            <h:inputText id="inputText" validator="#{cc.someValidator}"/>
+        </cc:implementation>
+    </h:body>
+</html>
diff --git a/test/servlet30/composite/src/main/webapp/templates/define1.xhtml b/test/servlet30/composite/src/main/webapp/templates/define1.xhtml
new file mode 100644
index 0000000..67175d4
--- /dev/null
+++ b/test/servlet30/composite/src/main/webapp/templates/define1.xhtml
@@ -0,0 +1,18 @@
+<?xml version='1.0' encoding='UTF-8' ?> 
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:define="http://java.sun.com/jsf/composite/define">
+    <h:head>
+        <title>Facelets Template</title>
+    </h:head>
+    <h:body>
+        <define:define1/>
+        <p>
+            <a href="#{facesContext.externalContext.requestContextPath}">Up</a>
+        </p>
+    </h:body>
+</html>
diff --git a/test/servlet30/composite/src/main/webapp/validator/validatorComponent.xhtml b/test/servlet30/composite/src/main/webapp/validator/validatorComponent.xhtml
new file mode 100644
index 0000000..274dc08
--- /dev/null
+++ b/test/servlet30/composite/src/main/webapp/validator/validatorComponent.xhtml
@@ -0,0 +1,18 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://xmlns.jcp.org/jsf/html"   
+      xmlns:validator="http://xmlns.jcp.org/jsf/composite/validator">
+    <h:head>
+        <title>Facelet Title</title>
+    </h:head>
+    <h:body>
+        <h:form id="form">
+            <h:messages/>
+            <validator:validatorComponent id="validatorComponent"/>
+            <h:commandButton id="submit" value="Submit"/>
+        </h:form>
+    </h:body>
+</html>
+
diff --git a/test/servlet30/composite/src/test/java/com/sun/faces/test/servlet30/composite/AttributeIT.java b/test/servlet30/composite/src/test/java/com/sun/faces/test/servlet30/composite/AttributeIT.java
new file mode 100644
index 0000000..21f69a9
--- /dev/null
+++ b/test/servlet30/composite/src/test/java/com/sun/faces/test/servlet30/composite/AttributeIT.java
@@ -0,0 +1,79 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.composite;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.*;
+import static org.junit.Assert.*;
+
+/**
+ * Integration tests for composite components.
+ *
+ * @author Manfred Riem (manfred.riem at oracle.com)
+ */
+public class AttributeIT {
+
+    /**
+     * Stores the web URL.
+     */
+    private String webUrl;
+    /**
+     * Stores the web client.
+     */
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testAttribute1() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/attribute/attribute1.xhtml");
+        assertTrue(page.getBody().asText().indexOf("This should show up also!") != -1);
+    }
+}
diff --git a/test/servlet30/composite/src/test/java/com/sun/faces/test/servlet30/composite/BasicIT.java b/test/servlet30/composite/src/test/java/com/sun/faces/test/servlet30/composite/BasicIT.java
new file mode 100644
index 0000000..f56e0ef
--- /dev/null
+++ b/test/servlet30/composite/src/test/java/com/sun/faces/test/servlet30/composite/BasicIT.java
@@ -0,0 +1,91 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.composite;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.*;
+import static org.junit.Assert.*;
+
+/**
+ * Integration tests for composite components.
+ *
+ * @author Manfred Riem (manfred.riem at oracle.com)
+ */
+public class BasicIT {
+
+    /**
+     * Stores the web URL.
+     */
+    private String webUrl;
+    /**
+     * Stores the web client.
+     */
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testSimple() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/basic/simple1.xhtml");
+        assertTrue(page.getBody().asText().indexOf("This is coming from a composite component") != -1);
+    }
+
+    @Test
+    public void testSimple2() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/basic/simple2.xhtml");
+        assertTrue(page.getBody().asText().indexOf("This is an outputText") != -1);
+    }
+
+    @Test
+    public void testSimple3() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/basic/simple3.xhtml");
+        assertTrue(page.getBody().asText().indexOf("EL value") != -1);
+    }
+}
diff --git a/test/servlet30/composite/src/test/java/com/sun/faces/test/servlet30/composite/ConverterIT.java b/test/servlet30/composite/src/test/java/com/sun/faces/test/servlet30/composite/ConverterIT.java
new file mode 100644
index 0000000..3f1ea23
--- /dev/null
+++ b/test/servlet30/composite/src/test/java/com/sun/faces/test/servlet30/composite/ConverterIT.java
@@ -0,0 +1,79 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.composite;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.*;
+import static org.junit.Assert.*;
+
+/**
+ * Integration tests for composite components related to f:converter.
+ *
+ * @author Manfred Riem (manfred.riem at oracle.com)
+ */
+public class ConverterIT {
+
+    /**
+     * Stores the web URL.
+     */
+    private String webUrl;
+    /**
+     * Stores the web client.
+     */
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testConverter1() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/converter/converter1.xhtml");
+        assertNotNull(page);
+    }
+}
diff --git a/test/servlet30/composite/src/test/java/com/sun/faces/test/servlet30/composite/DefineIT.java b/test/servlet30/composite/src/test/java/com/sun/faces/test/servlet30/composite/DefineIT.java
new file mode 100644
index 0000000..82e6f85
--- /dev/null
+++ b/test/servlet30/composite/src/test/java/com/sun/faces/test/servlet30/composite/DefineIT.java
@@ -0,0 +1,79 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.composite;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.*;
+import static org.junit.Assert.*;
+
+/**
+ * Integration tests for composite components.
+ *
+ * @author Manfred Riem (manfred.riem at oracle.com)
+ */
+public class DefineIT {
+
+    /**
+     * Stores the web URL.
+     */
+    private String webUrl;
+    /**
+     * Stores the web client.
+     */
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+    
+//    @Test
+//    public void testTemplate1() throws Exception {
+//        HtmlPage page = webClient.getPage(webUrl + "faces/define/define1.xhtml");
+//        assertTrue(page.getBody().asText().indexOf("What is in a name?") != -1);
+//    }
+}
diff --git a/test/servlet30/composite/src/test/java/com/sun/faces/test/servlet30/composite/InputIT.java b/test/servlet30/composite/src/test/java/com/sun/faces/test/servlet30/composite/InputIT.java
new file mode 100644
index 0000000..9fa672e
--- /dev/null
+++ b/test/servlet30/composite/src/test/java/com/sun/faces/test/servlet30/composite/InputIT.java
@@ -0,0 +1,85 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.composite;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlElement;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.*;
+import static org.junit.Assert.*;
+
+/**
+ * Integration tests for composite components.
+ *
+ * @author Manfred Riem (manfred.riem at oracle.com)
+ */
+public class InputIT {
+
+    /**
+     * Stores the web URL.
+     */
+    private String webUrl;
+    /**
+     * Stores the web client.
+     */
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testInput1() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/input/input1.xhtml");
+        assertTrue(page.getBody().asText().indexOf("The value of input 1 is []") != -1);
+        HtmlElement element = page.getHtmlElementById("form:composite:input");
+        assertNotNull("Unable to find input element", element);
+        element.type("Tester Test");
+        page = page.getHtmlElementById("form:submitButton").click();
+        assertTrue(page.getBody().asText().indexOf("The value of input 1 is [Tester Test]") != -1);
+    }
+}
diff --git a/test/servlet30/composite/src/test/java/com/sun/faces/test/servlet30/composite/InsertChildrenIT.java b/test/servlet30/composite/src/test/java/com/sun/faces/test/servlet30/composite/InsertChildrenIT.java
new file mode 100644
index 0000000..702ae88
--- /dev/null
+++ b/test/servlet30/composite/src/test/java/com/sun/faces/test/servlet30/composite/InsertChildrenIT.java
@@ -0,0 +1,85 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.composite;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.*;
+import static org.junit.Assert.*;
+
+/**
+ * Integration tests for composite components.
+ *
+ * @author Manfred Riem (manfred.riem at oracle.com)
+ */
+public class InsertChildrenIT {
+
+    /**
+     * Stores the web URL.
+     */
+    private String webUrl;
+    /**
+     * Stores the web client.
+     */
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testInsertChildren1() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/insertChildren/insertChildren1.xhtml");
+        assertTrue(page.getBody().asText().indexOf("Inserting children") != -1);
+    }
+
+    @Test
+    public void testInsertChildren2() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/insertChildren/insertChildren2.xhtml");
+        assertTrue(page.getBody().asText().indexOf("Inserting children") != -1);
+    }
+}
diff --git a/test/servlet30/composite/src/test/java/com/sun/faces/test/servlet30/composite/InsertFacetIT.java b/test/servlet30/composite/src/test/java/com/sun/faces/test/servlet30/composite/InsertFacetIT.java
new file mode 100644
index 0000000..71df38e
--- /dev/null
+++ b/test/servlet30/composite/src/test/java/com/sun/faces/test/servlet30/composite/InsertFacetIT.java
@@ -0,0 +1,73 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.composite;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.*;
+import static org.junit.Assert.*;
+
+/**
+ * Integration tests verifying the workings of cc:insertFacet.
+ *
+ * @author Manfred Riem (manfred.riem at oracle.com)
+ */
+public class InsertFacetIT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testInsertFacet1() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/insertFacet/insertFacet1.xhtml");
+        assertTrue(page.getBody().asText().indexOf("Testing insertFacet") != -1);
+    }
+}
diff --git a/test/servlet30/composite/src/test/java/com/sun/faces/test/servlet30/composite/Issue1806IT.java b/test/servlet30/composite/src/test/java/com/sun/faces/test/servlet30/composite/Issue1806IT.java
new file mode 100644
index 0000000..d8efb3f
--- /dev/null
+++ b/test/servlet30/composite/src/test/java/com/sun/faces/test/servlet30/composite/Issue1806IT.java
@@ -0,0 +1,85 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.composite;
+
+import com.gargoylesoftware.htmlunit.FailingHttpStatusCodeException;
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import org.junit.After;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.fail;
+import org.junit.Before;
+import org.junit.Test;
+
+public class Issue1806IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    /**
+     * This test method ensures a RuntimeException is thrown (since that is what
+     * is thrown in the test bean.
+     *
+     * @throws java.lang.Exception
+     */
+    @Test
+    public void testException() throws Exception {
+        try {
+            HtmlPage page = webClient.getPage(webUrl + "faces/action/action3.xhtml");
+            HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("form:action:form1:submit");
+            button.click();
+            fail();
+        } catch (FailingHttpStatusCodeException re) {
+            assertNotNull(re);
+        }
+    }
+}
diff --git a/test/servlet30/composite/src/test/java/com/sun/faces/test/servlet30/composite/Issue1853IT.java b/test/servlet30/composite/src/test/java/com/sun/faces/test/servlet30/composite/Issue1853IT.java
new file mode 100644
index 0000000..c9587e7
--- /dev/null
+++ b/test/servlet30/composite/src/test/java/com/sun/faces/test/servlet30/composite/Issue1853IT.java
@@ -0,0 +1,80 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.composite;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlElement;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.sun.faces.test.junit.JsfTest;
+import com.sun.faces.test.junit.JsfTestRunner;
+import com.sun.faces.test.junit.JsfVersion;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+import org.junit.runner.RunWith;
+
+ at RunWith(JsfTestRunner.class)
+public class Issue1853IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @JsfTest(JsfVersion.JSF_2_2_1)
+    @Test
+    public void testNoELEvaluation() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/outputStylesheet/outputStylesheet.xhtml");
+        assertEquals(200, page.getWebResponse().getStatusCode());
+        HtmlElement button = page.getHtmlElementById("form:submit");
+        page = button.click();
+        assertEquals(200, page.getWebResponse().getStatusCode());
+    }
+}
diff --git a/test/servlet30/composite/src/test/java/com/sun/faces/test/servlet30/composite/Issue1854IT.java b/test/servlet30/composite/src/test/java/com/sun/faces/test/servlet30/composite/Issue1854IT.java
new file mode 100644
index 0000000..3b5cf70
--- /dev/null
+++ b/test/servlet30/composite/src/test/java/com/sun/faces/test/servlet30/composite/Issue1854IT.java
@@ -0,0 +1,78 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.composite;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.*;
+import static org.junit.Assert.*;
+
+/**
+ * @author Manfred Riem (manfred.riem at oracle.com)
+ */
+public class Issue1854IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    /**
+     * Test to see the onclick only shows up once in the page.
+     *
+     * @throws Exception when a serious error occurs.
+     */
+    @Test
+    public void testHLink() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/link/link1.xhtml");
+        String pageText = page.asXml();
+        assertTrue(pageText.indexOf("OneClick") != -1);
+        assertTrue(pageText.indexOf("OneClick") == pageText.lastIndexOf("OneClick"));
+    }
+}
diff --git a/test/servlet30/composite/src/test/java/com/sun/faces/test/servlet30/composite/Issue1943IT.java b/test/servlet30/composite/src/test/java/com/sun/faces/test/servlet30/composite/Issue1943IT.java
new file mode 100644
index 0000000..3031b69
--- /dev/null
+++ b/test/servlet30/composite/src/test/java/com/sun/faces/test/servlet30/composite/Issue1943IT.java
@@ -0,0 +1,91 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.composite;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlOption;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSelect;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import java.util.List;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class Issue1943IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testIssue1943() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/issue1943.xhtml");
+
+        List<HtmlSelect> selectList = page.getDocumentElement().getHtmlElementsByTagName("select");
+        HtmlSelect select = selectList.get(0);
+        List<HtmlOption> options = select.getOptions();
+        select.setSelectedAttribute(options.get(0), true);
+        List<HtmlSubmitInput> buttonList = page.getDocumentElement().getHtmlElementsByTagName("input");
+        HtmlSubmitInput submitButton = buttonList.get(1);
+        page = (HtmlPage) submitButton.click();
+        assertTrue(page.asText().contains("valueChange Called"));
+
+        page = webClient.getPage(webUrl + "faces/issue1943-action.xhtml");
+        buttonList = page.getDocumentElement().getHtmlElementsByTagName("input");
+        HtmlSubmitInput submitButton1 = buttonList.get(1);
+        page = (HtmlPage) submitButton1.click();
+        assertTrue(page.asText().contains("removeGroup Called"));
+        HtmlSubmitInput submitButton2 = buttonList.get(2);
+        page = (HtmlPage) submitButton2.click();
+        assertTrue(!page.asText().contains("removeGroup Called"));
+    }
+}
diff --git a/test/servlet30/composite/src/test/java/com/sun/faces/test/servlet30/composite/Issue1958IT.java b/test/servlet30/composite/src/test/java/com/sun/faces/test/servlet30/composite/Issue1958IT.java
new file mode 100644
index 0000000..0ec20a3
--- /dev/null
+++ b/test/servlet30/composite/src/test/java/com/sun/faces/test/servlet30/composite/Issue1958IT.java
@@ -0,0 +1,71 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.composite;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import java.util.regex.Pattern;
+import org.junit.After;
+import static org.junit.Assert.assertTrue;
+import org.junit.Before;
+import org.junit.Test;
+
+public class Issue1958IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testNoDuplicateId() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/renderFacet/renderFacetDuplicateId.xhtml");
+        assertTrue(Pattern.matches("(?s).*col1Link.*col2Link.*col1Link.*col2Link.*col1Link.*col2Link.*col1Link.*col2Link.*col1Link.*col2Link.*col1Link.*col2Link.*col1Link.*col2Link.*col1Link.*col2Link.*", page.asXml()));
+    }
+}
diff --git a/test/servlet30/composite/src/test/java/com/sun/faces/test/servlet30/composite/Issue2035IT.java b/test/servlet30/composite/src/test/java/com/sun/faces/test/servlet30/composite/Issue2035IT.java
new file mode 100644
index 0000000..e3eb02a
--- /dev/null
+++ b/test/servlet30/composite/src/test/java/com/sun/faces/test/servlet30/composite/Issue2035IT.java
@@ -0,0 +1,80 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.composite;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+/**
+ *
+ * @author Manfred Riem (manfred.riem at oracle.com)
+ */
+public class Issue2035IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testIssue2035() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/issue2035.xhtml");
+        assertTrue(page.asText().contains("myDescription"));
+    }
+
+    @Test
+    public void testIssue2035b() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/issue2035b.xhtml");
+        assertTrue(page.asText().contains("No Description"));
+    }
+}
diff --git a/test/servlet30/composite/src/test/java/com/sun/faces/test/servlet30/composite/Issue2089IT.java b/test/servlet30/composite/src/test/java/com/sun/faces/test/servlet30/composite/Issue2089IT.java
new file mode 100644
index 0000000..faab952
--- /dev/null
+++ b/test/servlet30/composite/src/test/java/com/sun/faces/test/servlet30/composite/Issue2089IT.java
@@ -0,0 +1,71 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.composite;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import java.util.regex.Pattern;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class Issue2089IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testPreRenderView() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/preRenderView.xhtml");
+        assertTrue(Pattern.matches("(?s).*Item Attribute is null: false.*Item Attribute is null: false.*", page.asText()));
+    }
+}
diff --git a/test/servlet30/composite/src/test/java/com/sun/faces/test/servlet30/composite/Issue2176IT.java b/test/servlet30/composite/src/test/java/com/sun/faces/test/servlet30/composite/Issue2176IT.java
new file mode 100644
index 0000000..92bac08
--- /dev/null
+++ b/test/servlet30/composite/src/test/java/com/sun/faces/test/servlet30/composite/Issue2176IT.java
@@ -0,0 +1,90 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.composite;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import org.junit.*;
+import static org.junit.Assert.*;
+
+/**
+ * @author Manfred Riem (manfred.riem at oracle.com)
+ */
+public class Issue2176IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    /**
+     * Test to see if the number of default attribute values does not grow.
+     *
+     * @throws Exception when a serious error occurs.
+     */
+    @Test
+    public void testHLink() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/attribute/issue2176.xhtml");
+        String pageText = page.asXml();
+        assertTrue(pageText.indexOf("SUCCESS") != -1);
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("form:submit");
+        page = button.click();
+        pageText = page.asXml();
+        assertTrue(pageText.indexOf("SUCCESS") != -1);
+        button = (HtmlSubmitInput) page.getElementById("form:submit");
+        page = button.click();
+        pageText = page.asXml();
+        assertTrue(pageText.indexOf("SUCCESS") != -1);
+        button = (HtmlSubmitInput) page.getElementById("form:submit");
+        page = button.click();
+        pageText = page.asXml();
+        assertTrue(pageText.indexOf("SUCCESS") != -1);
+    }
+}
diff --git a/test/servlet30/composite/src/test/java/com/sun/faces/test/servlet30/composite/Issue2320IT.java b/test/servlet30/composite/src/test/java/com/sun/faces/test/servlet30/composite/Issue2320IT.java
new file mode 100644
index 0000000..667948d
--- /dev/null
+++ b/test/servlet30/composite/src/test/java/com/sun/faces/test/servlet30/composite/Issue2320IT.java
@@ -0,0 +1,73 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.composite;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import org.junit.*;
+
+/**
+ * @author Manfred Riem (manfred.riem at oracle.com)
+ */
+public class Issue2320IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    /**
+     * Test to see if ids are unique within a composite component.
+     *
+     * @throws Exception when a serious error occurs.
+     */
+    @Test
+    public void testIds() throws Exception {
+        webClient.getPage(webUrl + "faces/issue2320.xhtml");
+    }
+}
diff --git a/test/servlet30/composite/src/test/java/com/sun/faces/test/servlet30/composite/Issue2437IT.java b/test/servlet30/composite/src/test/java/com/sun/faces/test/servlet30/composite/Issue2437IT.java
new file mode 100644
index 0000000..ef24fa9
--- /dev/null
+++ b/test/servlet30/composite/src/test/java/com/sun/faces/test/servlet30/composite/Issue2437IT.java
@@ -0,0 +1,84 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.composite;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import org.junit.*;
+import static org.junit.Assert.*;
+
+/**
+ * Integration tests for issue #2437.
+ *
+ * @author Manfred Riem (manfred.riem at oracle.com)
+ */
+public class Issue2437IT {
+
+    /**
+     * Stores the web URL.
+     */
+    private String webUrl;
+    /**
+     * Stores the web client.
+     */
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    /*
+     * Test test will make sure we can have composite components after a
+     * ui:include.
+     */
+    @Test
+    public void testNoException() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/include/include1.xhtml");
+        assertEquals(200, page.getWebResponse().getStatusCode());
+    }
+}
diff --git a/test/servlet30/composite/src/test/java/com/sun/faces/test/servlet30/composite/Issue2562IT.java b/test/servlet30/composite/src/test/java/com/sun/faces/test/servlet30/composite/Issue2562IT.java
new file mode 100644
index 0000000..20bcb1f
--- /dev/null
+++ b/test/servlet30/composite/src/test/java/com/sun/faces/test/servlet30/composite/Issue2562IT.java
@@ -0,0 +1,72 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDLGPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.composite; 
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlElement;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.After;
+import static org.junit.Assert.assertEquals;
+import org.junit.Before;
+import org.junit.Test;
+
+public class Issue2562IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testProgrammaticComponent() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl+"faces/programmaticComponent.xhtml");
+        HtmlElement element = page.getHtmlElementById("result");
+        assertEquals("SUCCESS", element.getTextContent());
+    }
+}
diff --git a/test/servlet30/composite/src/test/java/com/sun/faces/test/servlet30/composite/Issue2698IT.java b/test/servlet30/composite/src/test/java/com/sun/faces/test/servlet30/composite/Issue2698IT.java
new file mode 100644
index 0000000..8b35031
--- /dev/null
+++ b/test/servlet30/composite/src/test/java/com/sun/faces/test/servlet30/composite/Issue2698IT.java
@@ -0,0 +1,83 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.composite;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import org.junit.*;
+import static org.junit.Assert.*;
+
+/**
+ */
+public class Issue2698IT {
+
+    /**
+     * Stores the web URL.
+     */
+    private String webUrl;
+    /**
+     * Stores the web client.
+     */
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    /*
+     * Test test will make sure we can have composite components after a
+     * ui:include.
+     */
+    @Test
+    public void testNoException() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/compositePartialState.xhtml");
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("button:abutton");
+        page = button.click();
+        assertTrue(page.asText().contains("Click Me"));
+    }
+}
diff --git a/test/servlet30/composite/src/test/java/com/sun/faces/test/servlet30/composite/Issue3198IT.java b/test/servlet30/composite/src/test/java/com/sun/faces/test/servlet30/composite/Issue3198IT.java
new file mode 100644
index 0000000..5356e96
--- /dev/null
+++ b/test/servlet30/composite/src/test/java/com/sun/faces/test/servlet30/composite/Issue3198IT.java
@@ -0,0 +1,81 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.composite;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlElement;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.sun.faces.test.junit.JsfTest;
+import com.sun.faces.test.junit.JsfTestRunner;
+import static com.sun.faces.test.junit.JsfVersion.JSF_2_2_0;
+import org.junit.After;
+import static org.junit.Assert.assertTrue;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+ at RunWith(JsfTestRunner.class)
+public class Issue3198IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @JsfTest(value = JSF_2_2_0)
+    @Test
+    public void testValidatorComponent() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/validator/validatorComponent.xhtml");
+        HtmlElement inputText = (HtmlElement) page.getElementById("form:validatorComponent:inputText");
+        inputText.type("1234");
+        HtmlElement button = (HtmlElement) page.getElementById("form:submit");
+        page = button.click();
+        assertTrue(page.asXml().contains("Validator method called"));
+    }
+}
diff --git a/test/servlet30/composite/src/test/java/com/sun/faces/test/servlet30/composite/NestedIT.java b/test/servlet30/composite/src/test/java/com/sun/faces/test/servlet30/composite/NestedIT.java
new file mode 100644
index 0000000..190ab6d
--- /dev/null
+++ b/test/servlet30/composite/src/test/java/com/sun/faces/test/servlet30/composite/NestedIT.java
@@ -0,0 +1,91 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.composite;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.*;
+import static org.junit.Assert.*;
+
+/**
+ * Integration tests for composite components.
+ *
+ * @author Manfred Riem (manfred.riem at oracle.com)
+ */
+public class NestedIT {
+
+    /**
+     * Stores the web URL.
+     */
+    private String webUrl;
+    /**
+     * Stores the web client.
+     */
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testNested1() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/nested/nested1.xhtml");
+        assertTrue(page.getBody().asText().indexOf("This is coming from a composite component.") != -1);
+    }
+
+    @Test
+    public void testNested2() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/nested/nested2.xhtml");
+        assertTrue(page.getBody().asText().indexOf("This is an outputText") != -1);
+    }
+
+    @Test
+    public void testNested3() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/nested/nested3.xhtml");
+        assertTrue(page.getBody().asText().indexOf("EL value") != -1);
+    }
+}
diff --git a/test/servlet30/composite/src/test/java/com/sun/faces/test/servlet30/composite/RenderFacetIT.java b/test/servlet30/composite/src/test/java/com/sun/faces/test/servlet30/composite/RenderFacetIT.java
new file mode 100644
index 0000000..23f57a5
--- /dev/null
+++ b/test/servlet30/composite/src/test/java/com/sun/faces/test/servlet30/composite/RenderFacetIT.java
@@ -0,0 +1,79 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.composite;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.*;
+import static org.junit.Assert.*;
+
+/**
+ * Integration tests verifying the workings of cc:renderFacet.
+ *
+ * @author Manfred Riem (manfred.riem at oracle.com)
+ */
+public class RenderFacetIT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testRenderFacet1() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/renderFacet/renderFacet1.xhtml");
+        assertTrue(page.getBody().asText().indexOf("This came from a rendered facet") != -1);
+    }
+
+    @Test
+    public void testRenderFacet2() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/renderFacet/renderFacet2.xhtml");
+        assertTrue(page.getBody().asText().indexOf("myFacet Text") != -1);
+    }
+}
diff --git a/test/servlet30/composite/src/test/java/com/sun/faces/test/servlet30/composite/Spec745IT.java b/test/servlet30/composite/src/test/java/com/sun/faces/test/servlet30/composite/Spec745IT.java
new file mode 100644
index 0000000..2b7507c
--- /dev/null
+++ b/test/servlet30/composite/src/test/java/com/sun/faces/test/servlet30/composite/Spec745IT.java
@@ -0,0 +1,196 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.composite;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlElement;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.After;
+import static org.junit.Assert.assertTrue;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Test;
+
+public class Spec745IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testType1() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/attribute/attributeType.xhtml?test=untypedXunset");
+        assertTrue(page.asXml().contains("type of @untypedXunset: Object"));       
+        HtmlElement button = (HtmlElement) page.getElementById("form:submit");
+        page = button.click();
+        assertTrue(page.asXml().contains("type of @untypedXunset: Object"));       
+    }
+
+    @Test
+    public void testType2() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/attribute/attributeType.xhtml?test=untypedXsetByApi");
+        assertTrue(page.asXml().contains("type of @untypedXsetByApi: Object"));       
+        HtmlElement button = (HtmlElement) page.getElementById("form:submit");
+        page = button.click();
+        assertTrue(page.asXml().contains("type of @untypedXsetByApi: Object"));       
+    }
+
+    @Test
+    public void testType3() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/attribute/attributeType.xhtml?test=untypedXliteral");
+        assertTrue(page.asXml().contains("type of @untypedXliteral: Object"));       
+        HtmlElement button = (HtmlElement) page.getElementById("form:submit");
+        page = button.click();
+        assertTrue(page.asXml().contains("type of @untypedXliteral: Object"));       
+    }
+
+    @Test
+    public void testType4() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/attribute/attributeType.xhtml?test=untypedXwideEL");
+        assertTrue(page.asXml().contains("type of @untypedXwideEL: Animal"));       
+        HtmlElement button = (HtmlElement) page.getElementById("form:submit");
+        page = button.click();
+        assertTrue(page.asXml().contains("type of @untypedXwideEL: Animal"));       
+    }
+
+    @Test
+    public void testType5() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/attribute/attributeType.xhtml?test=untypedXmediumEL");
+        assertTrue(page.asXml().contains("type of @untypedXmediumEL: Dog"));       
+        HtmlElement button = (HtmlElement) page.getElementById("form:submit");
+        page = button.click();
+        assertTrue(page.asXml().contains("type of @untypedXmediumEL: Dog"));       
+    }
+
+    @Test
+    public void testType6() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/attribute/attributeType.xhtml?test=untypedXnarrowEL");
+        assertTrue(page.asXml().contains("type of @untypedXnarrowEL: Wienerdoodle"));       
+        HtmlElement button = (HtmlElement) page.getElementById("form:submit");
+        page = button.click();
+        assertTrue(page.asXml().contains("type of @untypedXnarrowEL: Wienerdoodle"));       
+    }
+
+    @Test
+    public void testType7() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/attribute/attributeType.xhtml?test=untypedXnullEL");
+        assertTrue(page.asXml().contains("type of @untypedXnullEL: Dog"));       
+        HtmlElement button = (HtmlElement) page.getElementById("form:submit");
+        page = button.click();
+        assertTrue(page.asXml().contains("type of @untypedXnullEL: Dog"));       
+    }
+
+    @Test
+    @Ignore
+    public void testType8() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/attribute/attributeType.xhtml?test=typedXunset");
+        assertTrue(page.asXml().contains("type of @typedXunset: Dog"));       
+        HtmlElement button = (HtmlElement) page.getElementById("form:submit");
+        page = button.click();
+        assertTrue(page.asXml().contains("type of @typedXunset: Dog"));       
+    }
+
+    @Test
+    @Ignore
+    public void testType9() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/attribute/attributeType.xhtml?test=typedXliteral");
+        assertTrue(page.asXml().contains("type of @typedXliteral: Integer"));       
+        HtmlElement button = (HtmlElement) page.getElementById("form:submit");
+        page = button.click();
+        assertTrue(page.asXml().contains("type of @typedXliteral: Integer"));       
+    }
+
+    @Test
+    @Ignore
+    public void testType10() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/attribute/attributeType.xhtml?test=typedXwideEL");
+        assertTrue(page.asXml().contains("type of @typedXwideEL: Dog"));       
+        HtmlElement button = (HtmlElement) page.getElementById("form:submit");
+        page = button.click();
+        assertTrue(page.asXml().contains("type of @typedXwideEL: Dog"));       
+    }
+
+    @Test
+    public void testType11() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/attribute/attributeType.xhtml?test=typedXmediumEL");
+        assertTrue(page.asXml().contains("type of @typedXmediumEL: Dog"));       
+        HtmlElement button = (HtmlElement) page.getElementById("form:submit");
+        page = button.click();
+        assertTrue(page.asXml().contains("type of @typedXmediumEL: Dog"));       
+    }
+
+    @Test
+    public void testType12() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/attribute/attributeType.xhtml?test=typedXnarrowEL");
+        assertTrue(page.asXml().contains("type of @typedXnarrowEL: Wienerdoodle"));       
+        HtmlElement button = (HtmlElement) page.getElementById("form:submit");
+        page = button.click();
+        assertTrue(page.asXml().contains("type of @typedXnarrowEL: Wienerdoodle"));       
+    }
+
+    @Test
+    public void testType13() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/attribute/attributeType.xhtml?test=typedXnullEL");
+        assertTrue(page.asXml().contains("type of @typedXnullEL: Dog"));       
+        HtmlElement button = (HtmlElement) page.getElementById("form:submit");
+        page = button.click();
+        assertTrue(page.asXml().contains("type of @typedXnullEL: Dog"));       
+    }
+
+    @Test
+    @Ignore
+    public void testType14() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/attribute/attributeType.xhtml?test=typedXsetByApi");
+        assertTrue(page.asXml().contains("type of @typedXsetByApi: Dog"));       
+        HtmlElement button = (HtmlElement) page.getElementById("form:submit");
+        page = button.click();
+        assertTrue(page.asXml().contains("type of @typedXsetByApi: Dog"));       
+    }
+}
diff --git a/test/servlet30/dynamic/pom.xml b/test/servlet30/dynamic/pom.xml
new file mode 100644
index 0000000..3236b9f
--- /dev/null
+++ b/test/servlet30/dynamic/pom.xml
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" 
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.servlet30</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.servlet30</groupId>
+    <artifactId>dynamic</artifactId>
+    <packaging>war</packaging>
+    <name>Mojarra ${project.version} - Test - Servlet 3.0 - Dynamic Components</name>
+    <build>
+        <finalName>test-servlet30-dynamic</finalName>
+    </build>
+    <properties>
+        <netbeans.hint.deploy.server>gfv3ee6</netbeans.hint.deploy.server>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/test/servlet30/dynamic/src/main/java/com/sun/faces/test/servlet30/dynamic/AddBean.java b/test/servlet30/dynamic/src/main/java/com/sun/faces/test/servlet30/dynamic/AddBean.java
new file mode 100644
index 0000000..9ddfd1c
--- /dev/null
+++ b/test/servlet30/dynamic/src/main/java/com/sun/faces/test/servlet30/dynamic/AddBean.java
@@ -0,0 +1,81 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU General
+ * Public License Version 2 only ("GPL") or the Common Development and
+ * Distribution License("CDDL") (collectively, the "License"). You may not use
+ * this file except in compliance with the License. You can obtain a copy of the
+ * License at https://glassfish.dev.java.net/public/CDDLGPL_1_1.html or
+ * packager/legal/LICENSE.txt. See the License for the specific language
+ * governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception: Oracle designates this particular file as subject to
+ * the "Classpath" exception as provided by Oracle in the GPL Version 2 section
+ * of the License file that accompanied this code.
+ *
+ * Modifications: If applicable, add the following below the License Header,
+ * with the fields enclosed by brackets [] replaced by your own identifying
+ * information: "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s): If you wish your version of this file to be governed by only
+ * the CDDL or only the GPL Version 2, indicate your decision by adding
+ * "[Contributor] elects to include this software in this distribution under the
+ * [CDDL or GPL Version 2] license." If you don't indicate a single choice of
+ * license, a recipient has the option to distribute your version of this file
+ * under either the CDDL, the GPL Version 2 or to extend the choice of license
+ * to its licensees as provided above. However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright holder.
+ */
+package com.sun.faces.test.servlet30.dynamic;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.component.UIComponent;
+import javax.faces.component.UINamingContainer;
+import javax.faces.component.html.HtmlOutputText;
+import javax.faces.context.FacesContext;
+
+ at ManagedBean(name = "addBean")
+public class AddBean {
+
+    private static final List<String>   LIST;
+
+    static {
+        LIST = new ArrayList<String>();
+        LIST.add( "Foo" );
+        LIST.add( "Bar" );
+        LIST.add( "Baz" );
+    }
+
+    public List<String> getList() {
+        return LIST;
+    }
+
+    /**
+     * Save.
+     */
+    public void save() {
+        // Do nothing - just a way to postback.
+    }
+
+    /**
+     * Appends an OutputText component to another component.
+     */
+    public void addComponent() {
+        FacesContext ctx = FacesContext.getCurrentInstance();
+        UIComponent group = ctx.getViewRoot().findComponent("dynamicForm" +
+            UINamingContainer.getSeparatorChar(ctx) +  "group");
+        HtmlOutputText output = new HtmlOutputText();
+        output.setValue("OUTPUT");
+        group.getChildren().add(output);
+    }
+
+}
diff --git a/test/servlet30/dynamic/src/main/java/com/sun/faces/test/servlet30/dynamic/AddComponent.java b/test/servlet30/dynamic/src/main/java/com/sun/faces/test/servlet30/dynamic/AddComponent.java
new file mode 100644
index 0000000..d80dfcc
--- /dev/null
+++ b/test/servlet30/dynamic/src/main/java/com/sun/faces/test/servlet30/dynamic/AddComponent.java
@@ -0,0 +1,86 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU General
+ * Public License Version 2 only ("GPL") or the Common Development and
+ * Distribution License("CDDL") (collectively, the "License"). You may not use
+ * this file except in compliance with the License. You can obtain a copy of the
+ * License at https://glassfish.dev.java.net/public/CDDLGPL_1_1.html or
+ * packager/legal/LICENSE.txt. See the License for the specific language
+ * governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception: Oracle designates this particular file as subject to
+ * the "Classpath" exception as provided by Oracle in the GPL Version 2 section
+ * of the License file that accompanied this code.
+ *
+ * Modifications: If applicable, add the following below the License Header,
+ * with the fields enclosed by brackets [] replaced by your own identifying
+ * information: "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s): If you wish your version of this file to be governed by only
+ * the CDDL or only the GPL Version 2, indicate your decision by adding
+ * "[Contributor] elects to include this software in this distribution under the
+ * [CDDL or GPL Version 2] license." If you don't indicate a single choice of
+ * license, a recipient has the option to distribute your version of this file
+ * under either the CDDL, the GPL Version 2 or to extend the choice of license
+ * to its licensees as provided above. However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright holder.
+ */
+
+package com.sun.faces.test.servlet30.dynamic;
+
+import javax.faces.component.FacesComponent;
+import javax.faces.component.UIComponentBase;
+import javax.faces.component.UIViewRoot;
+import javax.faces.component.html.HtmlOutputText;
+import javax.faces.context.FacesContext;
+import javax.faces.event.AbortProcessingException;
+import javax.faces.event.PreRenderViewEvent;
+import javax.faces.event.SystemEvent;
+import javax.faces.event.SystemEventListener;
+
+ at FacesComponent( value = "com.sun.faces.test.servlet30.dynamic.AddComponent" )
+public class AddComponent extends UIComponentBase implements SystemEventListener {
+
+    //
+    // Constructor - subscribes to PreRenderViewEvent(s)
+    //
+
+    public AddComponent() {
+        setRendererType( "component" );
+        FacesContext context = FacesContext.getCurrentInstance();
+        UIViewRoot root = context.getViewRoot();
+        root.subscribeToViewEvent( PreRenderViewEvent.class, this );
+    }
+
+    //
+    // Public methods
+    //
+
+    @Override
+    public String getFamily() {
+        return "com.sun.faces.test.servlet30.dynamic";
+    }
+
+    public boolean isListenerForSource( Object source ) {
+        return ( source instanceof UIViewRoot );
+    }
+
+    // This event method will add a new component for pre-render event.
+
+    @Override
+    public void processEvent( SystemEvent event )
+        throws AbortProcessingException {
+        if ( !FacesContext.getCurrentInstance().isPostback() ) {
+            HtmlOutputText component = new HtmlOutputText();
+            component.setValue( "Dynamically added child" );
+            getChildren().add( component );
+        }
+    }
+}
diff --git a/test/servlet30/dynamic/src/main/java/com/sun/faces/test/servlet30/dynamic/AddComponent1.java b/test/servlet30/dynamic/src/main/java/com/sun/faces/test/servlet30/dynamic/AddComponent1.java
new file mode 100644
index 0000000..a3cfca8
--- /dev/null
+++ b/test/servlet30/dynamic/src/main/java/com/sun/faces/test/servlet30/dynamic/AddComponent1.java
@@ -0,0 +1,108 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU General
+ * Public License Version 2 only ("GPL") or the Common Development and
+ * Distribution License("CDDL") (collectively, the "License"). You may not use
+ * this file except in compliance with the License. You can obtain a copy of the
+ * License at https://glassfish.dev.java.net/public/CDDLGPL_1_1.html or
+ * packager/legal/LICENSE.txt. See the License for the specific language
+ * governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception: Oracle designates this particular file as subject to
+ * the "Classpath" exception as provided by Oracle in the GPL Version 2 section
+ * of the License file that accompanied this code.
+ *
+ * Modifications: If applicable, add the following below the License Header,
+ * with the fields enclosed by brackets [] replaced by your own identifying
+ * information: "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s): If you wish your version of this file to be governed by only
+ * the CDDL or only the GPL Version 2, indicate your decision by adding
+ * "[Contributor] elects to include this software in this distribution under the
+ * [CDDL or GPL Version 2] license." If you don't indicate a single choice of
+ * license, a recipient has the option to distribute your version of this file
+ * under either the CDDL, the GPL Version 2 or to extend the choice of license
+ * to its licensees as provided above. However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright holder.
+ */
+
+package com.sun.faces.test.servlet30.dynamic;
+
+import javax.faces.component.FacesComponent;
+import javax.faces.component.UIComponentBase;
+import javax.faces.component.UIViewRoot;
+import javax.faces.component.html.HtmlOutputText;
+import javax.faces.component.html.HtmlPanelGrid;
+import javax.faces.context.FacesContext;
+import javax.faces.event.AbortProcessingException;
+import javax.faces.event.PreRenderViewEvent;
+import javax.faces.event.PostRestoreStateEvent;
+import javax.faces.event.SystemEvent;
+import javax.faces.event.SystemEventListener;
+
+ at FacesComponent( value = "com.sun.faces.test.servlet30.dynamic.AddComponent1" )
+public class AddComponent1 extends UIComponentBase implements SystemEventListener {
+
+    //
+    // Constructor - subscribes to PreRenderViewEvent(s)
+    // and PostRestoreStateEvent(s)
+    //
+
+    public AddComponent1() {
+        setRendererType( "component" );
+        FacesContext context = FacesContext.getCurrentInstance();
+        UIViewRoot root = context.getViewRoot();
+        root.subscribeToViewEvent( PreRenderViewEvent.class, this );
+        root.subscribeToViewEvent( PostRestoreStateEvent.class, this );
+    }
+
+    //
+    // Public methods
+    //
+
+    @Override
+    public String getFamily() {
+        return "com.sun.faces.test.servlet30.dynamic";
+    }
+
+    public boolean isListenerForSource( Object source ) {
+        return ( source instanceof UIViewRoot );
+    }
+
+    // This event method will do the following:
+    //   If not a postback (as in PreRenderViewEvent), creates a PanelGrid
+    //   and adds it as a child to this component. 
+    //   On postback (as in PostRestoreStateEvent), creates an OutputText
+    //   and adds it to the PanelGrid (only creates and adds if not done
+    //   previously).
+
+    @Override
+    public void processEvent( SystemEvent event )
+        throws AbortProcessingException {
+        if ( !FacesContext.getCurrentInstance().isPostback() ) {
+            HtmlPanelGrid component = new HtmlPanelGrid();
+            component.setId("PANEL");
+            component.setStyle( "border: 1px dashed blue; padding: 5px; margin: 5px" );
+            getChildren().add( component );
+        } else {
+            // Get PanelGrid component
+            HtmlPanelGrid component = (HtmlPanelGrid)getChildren().get(0);
+            // If the child has not already been added - add it
+            String added = (String)component.getAttributes().get("CHILD_ADDED");
+            if (null == added) {
+                HtmlOutputText output = new HtmlOutputText();
+                output.setId("OUTPUT");
+                output.setValue("NEW-OUTPUT");
+                component.getChildren().add(output);
+                component.getAttributes().put("CHILD_ADDED","CHILD_ADDED");
+            }
+        }
+    }
+}
diff --git a/test/servlet30/dynamic/src/main/java/com/sun/faces/test/servlet30/dynamic/ComponentRenderer.java b/test/servlet30/dynamic/src/main/java/com/sun/faces/test/servlet30/dynamic/ComponentRenderer.java
new file mode 100644
index 0000000..6aac975
--- /dev/null
+++ b/test/servlet30/dynamic/src/main/java/com/sun/faces/test/servlet30/dynamic/ComponentRenderer.java
@@ -0,0 +1,64 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.servlet30.dynamic;
+
+import java.io.IOException;
+
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.render.FacesRenderer;
+import javax.faces.render.Renderer;
+
+ at FacesRenderer(componentFamily = "com.sun.faces.test.servlet30.dynamic", rendererType = "component")
+public class ComponentRenderer extends Renderer {
+
+    @Override
+    public void encodeBegin(FacesContext context, UIComponent component) throws IOException {
+        context.getResponseWriter().write( "<div style=\"border: 1px solid red; margin: 2px\"><div style=\"background-color: #ffc0c0; padding: 2px; margin-bottom: 5px; display:block\">Component::encodeBegin</div>" );
+        super.encodeBegin( context, component );
+    }
+
+    @Override
+    public void encodeEnd(FacesContext context, UIComponent component) throws IOException {
+        super.encodeEnd( context, component );
+        context.getResponseWriter().write( "<div style=\"background-color: #ffc0c0; padding: 2px; margin-top: 5px; display:block\">Component::encodeEnd</div></div>" );
+    }
+}
diff --git a/test/servlet30/dynamic/src/main/java/com/sun/faces/test/servlet30/dynamic/Issue1414Bean.java b/test/servlet30/dynamic/src/main/java/com/sun/faces/test/servlet30/dynamic/Issue1414Bean.java
new file mode 100644
index 0000000..c2635e7
--- /dev/null
+++ b/test/servlet30/dynamic/src/main/java/com/sun/faces/test/servlet30/dynamic/Issue1414Bean.java
@@ -0,0 +1,31 @@
+package com.sun.faces.test.servlet30.dynamic;
+
+import java.io.Serializable;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.SessionScoped;
+import javax.faces.component.UIComponent;
+import javax.faces.event.ActionEvent;
+
+ at ManagedBean(name = "issue1414Bean")
+ at SessionScoped
+public class Issue1414Bean implements Serializable {
+
+    public void temporaryMoveComponent(ActionEvent ae) {
+
+        System.out.println("Temporarily moving a component");
+        UIComponent button = ae.getComponent();
+        UIComponent movefrom = button.findComponent("movefrom");
+        UIComponent moveto = button.findComponent("moveto");
+
+        if (movefrom.getChildren().isEmpty()) {
+            UIComponent moveme = moveto.getChildren().get(0);
+            moveto.getChildren().remove(moveme);
+            movefrom.getChildren().add(moveme);
+        } else {
+            UIComponent moveme = movefrom.getChildren().get(0);
+            movefrom.getChildren().remove(moveme);
+            moveto.getChildren().add(moveme);
+        }
+    }
+}
diff --git a/test/servlet30/dynamic/src/main/java/com/sun/faces/test/servlet30/dynamic/Issue2395Bean.java b/test/servlet30/dynamic/src/main/java/com/sun/faces/test/servlet30/dynamic/Issue2395Bean.java
new file mode 100644
index 0000000..89eef1c
--- /dev/null
+++ b/test/servlet30/dynamic/src/main/java/com/sun/faces/test/servlet30/dynamic/Issue2395Bean.java
@@ -0,0 +1,93 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU General
+ * Public License Version 2 only ("GPL") or the Common Development and
+ * Distribution License("CDDL") (collectively, the "License"). You may not use
+ * this file except in compliance with the License. You can obtain a copy of the
+ * License at https://glassfish.dev.java.net/public/CDDLGPL_1_1.html or
+ * packager/legal/LICENSE.txt. See the License for the specific language
+ * governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception: Oracle designates this particular file as subject to
+ * the "Classpath" exception as provided by Oracle in the GPL Version 2 section
+ * of the License file that accompanied this code.
+ *
+ * Modifications: If applicable, add the following below the License Header,
+ * with the fields enclosed by brackets [] replaced by your own identifying
+ * information: "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s): If you wish your version of this file to be governed by only
+ * the CDDL or only the GPL Version 2, indicate your decision by adding
+ * "[Contributor] elects to include this software in this distribution under the
+ * [CDDL or GPL Version 2] license." If you don't indicate a single choice of
+ * license, a recipient has the option to distribute your version of this file
+ * under either the CDDL, the GPL Version 2 or to extend the choice of license
+ * to its licensees as provided above. However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright holder.
+ */
+package com.sun.faces.test.servlet30.dynamic;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.RequestScoped;
+import javax.faces.component.UIComponent;
+import javax.faces.component.html.HtmlOutputText;
+import javax.faces.component.html.HtmlPanelGroup;
+import javax.faces.event.ActionEvent;
+
+ at ManagedBean
+ at RequestScoped
+public class Issue2395Bean {
+
+    private HtmlPanelGroup panelGroup;
+
+    public HtmlPanelGroup getPanelGroup() {
+        return panelGroup;
+    }
+
+    public void setPanelGroup(HtmlPanelGroup panelGroup) {
+        this.panelGroup = panelGroup;
+    }
+
+    public void doAdd(ActionEvent event) {
+        HtmlOutputText out = new HtmlOutputText();
+        out.setValue("I was dynamically added");
+        getPanelGroup().getChildren().add(out);
+        }
+    
+    public void doAddRemove(ActionEvent event) {
+        HtmlOutputText out = new HtmlOutputText();
+        getPanelGroup().getChildren().add(out);
+        out.setValue("I was dynamically added");
+        getPanelGroup().getChildren().remove(out);
+        }
+
+    public void doAddRemoveAdd(ActionEvent event) {
+        HtmlOutputText out = new HtmlOutputText();
+        out.setValue("I was dynamically added");
+        getPanelGroup().getChildren().add(out);
+        getPanelGroup().getChildren().remove(out);
+        getPanelGroup().getChildren().add(out);
+        }
+
+    public void doRemove(ActionEvent event) {
+        getPanelGroup().getChildren().remove(0);
+        }
+    
+    public void doRemoveAdd(ActionEvent event) {
+        UIComponent component = getPanelGroup().getChildren().remove(0);
+        getPanelGroup().getChildren().add(component);
+        }
+    
+    public void doRemoveAddRemove(ActionEvent event) {
+        UIComponent component = getPanelGroup().getChildren().remove(0);
+        getPanelGroup().getChildren().add(component);
+        getPanelGroup().getChildren().remove(component);
+        }
+    }
diff --git a/test/servlet30/dynamic/src/main/java/com/sun/faces/test/servlet30/dynamic/Issue2471Bean.java b/test/servlet30/dynamic/src/main/java/com/sun/faces/test/servlet30/dynamic/Issue2471Bean.java
new file mode 100644
index 0000000..9a276d2
--- /dev/null
+++ b/test/servlet30/dynamic/src/main/java/com/sun/faces/test/servlet30/dynamic/Issue2471Bean.java
@@ -0,0 +1,61 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU General
+ * Public License Version 2 only ("GPL") or the Common Development and
+ * Distribution License("CDDL") (collectively, the "License"). You may not use
+ * this file except in compliance with the License. You can obtain a copy of the
+ * License at https://glassfish.dev.java.net/public/CDDLGPL_1_1.html or
+ * packager/legal/LICENSE.txt. See the License for the specific language
+ * governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception: Oracle designates this particular file as subject to
+ * the "Classpath" exception as provided by Oracle in the GPL Version 2 section
+ * of the License file that accompanied this code.
+ *
+ * Modifications: If applicable, add the following below the License Header,
+ * with the fields enclosed by brackets [] replaced by your own identifying
+ * information: "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s): If you wish your version of this file to be governed by only
+ * the CDDL or only the GPL Version 2, indicate your decision by adding
+ * "[Contributor] elects to include this software in this distribution under the
+ * [CDDL or GPL Version 2] license." If you don't indicate a single choice of
+ * license, a recipient has the option to distribute your version of this file
+ * under either the CDDL, the GPL Version 2 or to extend the choice of license
+ * to its licensees as provided above. However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright holder.
+ */
+package com.sun.faces.test.servlet30.dynamic;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.RequestScoped;
+import javax.faces.component.UIComponent;
+import javax.faces.component.UIViewRoot;
+import javax.faces.context.FacesContext;
+
+/**
+ * The managed bean for issue #2471.
+ */
+ at ManagedBean(name = "issue2471Bean")
+ at RequestScoped
+public class Issue2471Bean {
+
+    /**
+     * Remove the component resources.
+     */
+    public void removeComponentResources() {
+        FacesContext context = FacesContext.getCurrentInstance();
+        UIViewRoot viewRoot = context.getViewRoot();
+
+        for (UIComponent componentResource : viewRoot.getComponentResources(context, "head")) {
+            viewRoot.removeComponentResource(context, componentResource, "head");
+        }
+     }
+}
diff --git a/test/servlet30/dynamic/src/main/java/com/sun/faces/test/servlet30/dynamic/Issue2471Component.java b/test/servlet30/dynamic/src/main/java/com/sun/faces/test/servlet30/dynamic/Issue2471Component.java
new file mode 100644
index 0000000..6473bc1
--- /dev/null
+++ b/test/servlet30/dynamic/src/main/java/com/sun/faces/test/servlet30/dynamic/Issue2471Component.java
@@ -0,0 +1,63 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU General
+ * Public License Version 2 only ("GPL") or the Common Development and
+ * Distribution License("CDDL") (collectively, the "License"). You may not use
+ * this file except in compliance with the License. You can obtain a copy of the
+ * License at https://glassfish.dev.java.net/public/CDDLGPL_1_1.html or
+ * packager/legal/LICENSE.txt. See the License for the specific language
+ * governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception: Oracle designates this particular file as subject to
+ * the "Classpath" exception as provided by Oracle in the GPL Version 2 section
+ * of the License file that accompanied this code.
+ *
+ * Modifications: If applicable, add the following below the License Header,
+ * with the fields enclosed by brackets [] replaced by your own identifying
+ * information: "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s): If you wish your version of this file to be governed by only
+ * the CDDL or only the GPL Version 2, indicate your decision by adding
+ * "[Contributor] elects to include this software in this distribution under the
+ * [CDDL or GPL Version 2] license." If you don't indicate a single choice of
+ * license, a recipient has the option to distribute your version of this file
+ * under either the CDDL, the GPL Version 2 or to extend the choice of license
+ * to its licensees as provided above. However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright holder.
+ */
+package com.sun.faces.test.servlet30.dynamic;
+
+import javax.faces.application.ResourceDependency;
+import javax.faces.component.FacesComponent;
+import javax.faces.component.UIComponentBase;
+import javax.faces.context.FacesContext;
+
+/**
+ * The component for issue #2471.
+ */
+ at FacesComponent("com.sun.faces.test.servlet30.dynamic.Issue2471Component")
+ at ResourceDependency(target="head", name = "issue2471.js")
+public class Issue2471Component extends UIComponentBase {
+
+    public Issue2471Component() {
+    }
+
+    @Override
+    public String getFamily() {
+        return "com.sun.faces.test.servlet30.dynamic.Issue2471Component";
+    }
+
+    public Object saveTransientState(FacesContext context) {
+        return null;
+    }
+
+    public void restoreTransientState(FacesContext context, Object state) {
+    }
+}
diff --git a/test/servlet30/dynamic/src/main/java/com/sun/faces/test/servlet30/dynamic/MoveComponent.java b/test/servlet30/dynamic/src/main/java/com/sun/faces/test/servlet30/dynamic/MoveComponent.java
new file mode 100644
index 0000000..7877c60
--- /dev/null
+++ b/test/servlet30/dynamic/src/main/java/com/sun/faces/test/servlet30/dynamic/MoveComponent.java
@@ -0,0 +1,98 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU General
+ * Public License Version 2 only ("GPL") or the Common Development and
+ * Distribution License("CDDL") (collectively, the "License"). You may not use
+ * this file except in compliance with the License. You can obtain a copy of the
+ * License at https://glassfish.dev.java.net/public/CDDLGPL_1_1.html or
+ * packager/legal/LICENSE.txt. See the License for the specific language
+ * governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception: Oracle designates this particular file as subject to
+ * the "Classpath" exception as provided by Oracle in the GPL Version 2 section
+ * of the License file that accompanied this code.
+ *
+ * Modifications: If applicable, add the following below the License Header,
+ * with the fields enclosed by brackets [] replaced by your own identifying
+ * information: "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s): If you wish your version of this file to be governed by only
+ * the CDDL or only the GPL Version 2, indicate your decision by adding
+ * "[Contributor] elects to include this software in this distribution under the
+ * [CDDL or GPL Version 2] license." If you don't indicate a single choice of
+ * license, a recipient has the option to distribute your version of this file
+ * under either the CDDL, the GPL Version 2 or to extend the choice of license
+ * to its licensees as provided above. However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright holder.
+ */
+
+package com.sun.faces.test.servlet30.dynamic;
+
+import javax.faces.component.FacesComponent;
+import javax.faces.component.UIComponentBase;
+import javax.faces.component.UIViewRoot;
+import javax.faces.component.html.HtmlOutputText;
+import javax.faces.component.html.HtmlPanelGroup;
+import javax.faces.context.FacesContext;
+import javax.faces.event.AbortProcessingException;
+import javax.faces.event.PreRenderViewEvent;
+import javax.faces.event.PostAddToViewEvent;
+import javax.faces.event.SystemEvent;
+import javax.faces.event.SystemEventListener;
+
+ at FacesComponent( value = "com.sun.faces.test.servlet30.dynamic.MoveComponent" )
+public class MoveComponent extends UIComponentBase implements SystemEventListener {
+
+    //
+    // Constructor - subscribes to PostAddToViewEvent(s)
+    //
+
+    public MoveComponent() {
+        setRendererType( "component" );
+        FacesContext context = FacesContext.getCurrentInstance();
+        UIViewRoot root = context.getViewRoot();
+        root.subscribeToViewEvent( PreRenderViewEvent.class, this );
+    }
+
+    //
+    // Public methods
+    //
+
+    @Override
+    public String getFamily() {
+        return "com.sun.faces.test.servlet30.dynamic";
+    }
+
+    public boolean isListenerForSource( Object source ) {
+        return ( source instanceof UIViewRoot );
+    }
+
+    // This event method will do the following:
+    //   PostAddToViewEvent processing: 
+    //     Dynamically modifies component tree by moving "Foo" from outside
+    //     the panel to inside the panel.
+
+    @Override
+    public void processEvent( SystemEvent event )
+        throws AbortProcessingException {
+        // Do not re-modify the component tree
+
+        if (FacesContext.getCurrentInstance().isPostback()) {
+                return;
+        }
+
+        // Dynamically modify the component tree. Move Foo from outside to inside the panel
+
+        HtmlOutputText  outputText = (HtmlOutputText) getChildren().get( 0 );
+        HtmlPanelGroup panel = (HtmlPanelGroup) getChildren().get( 1 );
+        boolean removed = getChildren().remove( outputText );
+        panel.getChildren().add( 0, outputText );
+    }
+}
diff --git a/test/servlet30/dynamic/src/main/java/com/sun/faces/test/servlet30/dynamic/MoveComponent2.java b/test/servlet30/dynamic/src/main/java/com/sun/faces/test/servlet30/dynamic/MoveComponent2.java
new file mode 100644
index 0000000..87b83b0
--- /dev/null
+++ b/test/servlet30/dynamic/src/main/java/com/sun/faces/test/servlet30/dynamic/MoveComponent2.java
@@ -0,0 +1,80 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU General
+ * Public License Version 2 only ("GPL") or the Common Development and
+ * Distribution License("CDDL") (collectively, the "License"). You may not use
+ * this file except in compliance with the License. You can obtain a copy of the
+ * License at https://glassfish.dev.java.net/public/CDDLGPL_1_1.html or
+ * packager/legal/LICENSE.txt. See the License for the specific language
+ * governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception: Oracle designates this particular file as subject to
+ * the "Classpath" exception as provided by Oracle in the GPL Version 2 section
+ * of the License file that accompanied this code.
+ *
+ * Modifications: If applicable, add the following below the License Header,
+ * with the fields enclosed by brackets [] replaced by your own identifying
+ * information: "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s): If you wish your version of this file to be governed by only
+ * the CDDL or only the GPL Version 2, indicate your decision by adding
+ * "[Contributor] elects to include this software in this distribution under the
+ * [CDDL or GPL Version 2] license." If you don't indicate a single choice of
+ * license, a recipient has the option to distribute your version of this file
+ * under either the CDDL, the GPL Version 2 or to extend the choice of license
+ * to its licensees as provided above. However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright holder.
+ */
+package com.sun.faces.test.servlet30.dynamic;
+
+import javax.faces.component.FacesComponent;
+import javax.faces.component.UIComponent;
+import javax.faces.component.UIComponentBase;
+import javax.faces.context.FacesContext;
+import javax.faces.event.AbortProcessingException;
+import javax.faces.event.PreRenderViewEvent;
+import javax.faces.event.SystemEvent;
+import javax.faces.event.SystemEventListener;
+
+ at FacesComponent(value = "com.sun.faces.test.servlet30.dynamic.MoveComponent2")
+public class MoveComponent2 extends UIComponentBase implements SystemEventListener {
+
+    @Override
+    public String getFamily() {
+        return "HTML_BASIC";
+    }
+
+    public MoveComponent2() {
+        FacesContext context = FacesContext.getCurrentInstance();
+
+        if (!context.isPostback()) {
+            context.getViewRoot().subscribeToViewEvent(PreRenderViewEvent.class, this);
+        }
+    }
+
+    @Override
+    public boolean isListenerForSource(Object source) {
+        return true;
+    }
+
+    @Override
+    public void processEvent(SystemEvent event) throws AbortProcessingException {
+
+        String forValue = (String) getAttributes().get("for");
+
+        if (forValue != null) {
+            UIComponent component = FacesContext.getCurrentInstance().getViewRoot().findComponent(forValue);
+
+            for (UIComponent childComponent : getChildren()) {
+                component.getChildren().add(childComponent);
+            }
+        }
+    }
+}
diff --git a/test/servlet30/dynamic/src/main/java/com/sun/faces/test/servlet30/dynamic/MoveComponent2Bean.java b/test/servlet30/dynamic/src/main/java/com/sun/faces/test/servlet30/dynamic/MoveComponent2Bean.java
new file mode 100644
index 0000000..1fc7a2e
--- /dev/null
+++ b/test/servlet30/dynamic/src/main/java/com/sun/faces/test/servlet30/dynamic/MoveComponent2Bean.java
@@ -0,0 +1,59 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU General
+ * Public License Version 2 only ("GPL") or the Common Development and
+ * Distribution License("CDDL") (collectively, the "License"). You may not use
+ * this file except in compliance with the License. You can obtain a copy of the
+ * License at https://glassfish.dev.java.net/public/CDDLGPL_1_1.html or
+ * packager/legal/LICENSE.txt. See the License for the specific language
+ * governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception: Oracle designates this particular file as subject to
+ * the "Classpath" exception as provided by Oracle in the GPL Version 2 section
+ * of the License file that accompanied this code.
+ *
+ * Modifications: If applicable, add the following below the License Header,
+ * with the fields enclosed by brackets [] replaced by your own identifying
+ * information: "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s): If you wish your version of this file to be governed by only
+ * the CDDL or only the GPL Version 2, indicate your decision by adding
+ * "[Contributor] elects to include this software in this distribution under the
+ * [CDDL or GPL Version 2] license." If you don't indicate a single choice of
+ * license, a recipient has the option to distribute your version of this file
+ * under either the CDDL, the GPL Version 2 or to extend the choice of license
+ * to its licensees as provided above. However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright holder.
+ */
+package com.sun.faces.test.servlet30.dynamic;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.RequestScoped;
+import javax.faces.context.FacesContext;
+
+ at ManagedBean(name = "moveComponent2Bean")
+ at RequestScoped
+public class MoveComponent2Bean {
+
+    private String text = "This should be bold";
+
+    public void update() {
+        text = "The text should remain bold";
+    }
+    
+    public String getStateSavingMode() {
+        return FacesContext.getCurrentInstance().
+                getViewRoot().initialStateMarked() ? "PSS" : "FSS";
+    }
+
+    public String getText() {
+        return text;
+    }
+}
diff --git a/test/servlet30/dynamic/src/main/java/com/sun/faces/test/servlet30/dynamic/MoveComponentBean.java b/test/servlet30/dynamic/src/main/java/com/sun/faces/test/servlet30/dynamic/MoveComponentBean.java
new file mode 100644
index 0000000..4027735
--- /dev/null
+++ b/test/servlet30/dynamic/src/main/java/com/sun/faces/test/servlet30/dynamic/MoveComponentBean.java
@@ -0,0 +1,77 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU General
+ * Public License Version 2 only ("GPL") or the Common Development and
+ * Distribution License("CDDL") (collectively, the "License"). You may not use
+ * this file except in compliance with the License. You can obtain a copy of the
+ * License at https://glassfish.dev.java.net/public/CDDLGPL_1_1.html or
+ * packager/legal/LICENSE.txt. See the License for the specific language
+ * governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception: Oracle designates this particular file as subject to
+ * the "Classpath" exception as provided by Oracle in the GPL Version 2 section
+ * of the License file that accompanied this code.
+ *
+ * Modifications: If applicable, add the following below the License Header,
+ * with the fields enclosed by brackets [] replaced by your own identifying
+ * information: "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s): If you wish your version of this file to be governed by only
+ * the CDDL or only the GPL Version 2, indicate your decision by adding
+ * "[Contributor] elects to include this software in this distribution under the
+ * [CDDL or GPL Version 2] license." If you don't indicate a single choice of
+ * license, a recipient has the option to distribute your version of this file
+ * under either the CDDL, the GPL Version 2 or to extend the choice of license
+ * to its licensees as provided above. However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright holder.
+ */
+package com.sun.faces.test.servlet30.dynamic;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.event.ActionEvent;
+
+ at ManagedBean(name = "moveComponentBean")
+public class MoveComponentBean {
+
+    /**
+     * Move the child.
+     *
+     * @param actionEvent the action event.
+     */
+    public void moveChild(ActionEvent actionEvent) {
+        UIComponent destinationContainer = actionEvent.getComponent().getParent();
+        UIComponent viewRoot = FacesContext.getCurrentInstance().getViewRoot();
+
+        UIComponent moveableChild = destinationContainer.findComponent("outputText2");
+
+        if (moveableChild == null) {
+            moveableChild = viewRoot.findComponent("form1:outputText2");
+        }
+
+        if (moveableChild == null) {
+            moveableChild = viewRoot.findComponent("form1:subview1:outputText2");
+        }
+        
+        if (moveableChild == null) {
+            moveableChild = viewRoot.findComponent("form1:subview2:outputText2");
+        }
+        
+        if (moveableChild == null) {
+            moveableChild = viewRoot.findComponent("form1:subview2:subview2b:outputText2");
+        }
+
+        if (moveableChild != null) {
+            moveableChild.getParent().getChildren().remove(moveableChild);
+            destinationContainer.getChildren().add(0, moveableChild);
+        }
+    }
+}
diff --git a/test/servlet30/dynamic/src/main/java/com/sun/faces/test/servlet30/dynamic/RecursiveComponent.java b/test/servlet30/dynamic/src/main/java/com/sun/faces/test/servlet30/dynamic/RecursiveComponent.java
new file mode 100644
index 0000000..403b1dc
--- /dev/null
+++ b/test/servlet30/dynamic/src/main/java/com/sun/faces/test/servlet30/dynamic/RecursiveComponent.java
@@ -0,0 +1,89 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU General
+ * Public License Version 2 only ("GPL") or the Common Development and
+ * Distribution License("CDDL") (collectively, the "License"). You may not use
+ * this file except in compliance with the License. You can obtain a copy of the
+ * License at https://glassfish.dev.java.net/public/CDDLGPL_1_1.html or
+ * packager/legal/LICENSE.txt. See the License for the specific language
+ * governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception: Oracle designates this particular file as subject to
+ * the "Classpath" exception as provided by Oracle in the GPL Version 2 section
+ * of the License file that accompanied this code.
+ *
+ * Modifications: If applicable, add the following below the License Header,
+ * with the fields enclosed by brackets [] replaced by your own identifying
+ * information: "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s): If you wish your version of this file to be governed by only
+ * the CDDL or only the GPL Version 2, indicate your decision by adding
+ * "[Contributor] elects to include this software in this distribution under the
+ * [CDDL or GPL Version 2] license." If you don't indicate a single choice of
+ * license, a recipient has the option to distribute your version of this file
+ * under either the CDDL, the GPL Version 2 or to extend the choice of license
+ * to its licensees as provided above. However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright holder.
+ */
+
+package com.sun.faces.test.servlet30.dynamic;
+
+import javax.faces.component.FacesComponent;
+import javax.faces.component.UIComponentBase;
+import javax.faces.component.UIViewRoot;
+import javax.faces.component.html.HtmlOutputText;
+import javax.faces.context.FacesContext;
+import javax.faces.event.AbortProcessingException;
+import javax.faces.event.PreRenderViewEvent;
+import javax.faces.event.SystemEvent;
+import javax.faces.event.SystemEventListener;
+
+ at FacesComponent( value = "com.sun.faces.test.servlet30.dynamic.RecursiveComponent" )
+public class RecursiveComponent extends UIComponentBase implements SystemEventListener {
+
+    //
+    // Constructor - subscribes to PreRenderViewEvent(s)
+    //
+
+    public RecursiveComponent() {
+        setRendererType( "component" );
+        FacesContext context = FacesContext.getCurrentInstance();
+        UIViewRoot root = context.getViewRoot();
+        root.subscribeToViewEvent( PreRenderViewEvent.class, this );
+    }
+
+    //
+    // Public methods
+    //
+
+    @Override
+    public String getFamily() {
+        return "com.sun.faces.test.servlet30.dynamic";
+    }
+
+    public boolean isListenerForSource( Object source ) {
+        return ( source instanceof UIViewRoot );
+    }
+
+    // This event method will add a new nested component for pre-render event.
+
+    @Override
+    public void processEvent( SystemEvent event )
+        throws AbortProcessingException {
+        if ( !FacesContext.getCurrentInstance().isPostback() ) {
+            HtmlOutputText component = new HtmlOutputText();
+            component.setValue( "Dynamically added child" );
+            getChildren().add( component );
+            if ( !( getParent() instanceof RecursiveComponent ) ) {
+                getChildren().add( new RecursiveComponent() );
+            }
+        }
+    }
+}
diff --git a/test/servlet30/dynamic/src/main/java/com/sun/faces/test/servlet30/dynamic/RemoveComponentBean.java b/test/servlet30/dynamic/src/main/java/com/sun/faces/test/servlet30/dynamic/RemoveComponentBean.java
new file mode 100644
index 0000000..342d25c
--- /dev/null
+++ b/test/servlet30/dynamic/src/main/java/com/sun/faces/test/servlet30/dynamic/RemoveComponentBean.java
@@ -0,0 +1,72 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU General
+ * Public License Version 2 only ("GPL") or the Common Development and
+ * Distribution License("CDDL") (collectively, the "License"). You may not use
+ * this file except in compliance with the License. You can obtain a copy of the
+ * License at https://glassfish.dev.java.net/public/CDDLGPL_1_1.html or
+ * packager/legal/LICENSE.txt. See the License for the specific language
+ * governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception: Oracle designates this particular file as subject to
+ * the "Classpath" exception as provided by Oracle in the GPL Version 2 section
+ * of the License file that accompanied this code.
+ *
+ * Modifications: If applicable, add the following below the License Header,
+ * with the fields enclosed by brackets [] replaced by your own identifying
+ * information: "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s): If you wish your version of this file to be governed by only
+ * the CDDL or only the GPL Version 2, indicate your decision by adding
+ * "[Contributor] elects to include this software in this distribution under the
+ * [CDDL or GPL Version 2] license." If you don't indicate a single choice of
+ * license, a recipient has the option to distribute your version of this file
+ * under either the CDDL, the GPL Version 2 or to extend the choice of license
+ * to its licensees as provided above. However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright holder.
+ */
+package com.sun.faces.test.servlet30.dynamic;
+
+import javax.faces.application.FacesMessage;
+import javax.faces.bean.ManagedBean;
+import javax.faces.component.UIComponent;
+import javax.faces.component.UINamingContainer;
+import javax.faces.context.FacesContext;
+import javax.faces.event.ComponentSystemEvent;
+import javax.faces.validator.ValidatorException;
+
+ at ManagedBean(name = "removeComponentBean")
+public class RemoveComponentBean {
+
+    public void validateDeletion(FacesContext context, UIComponent comp, Object value) {
+        UIComponent button = findButton(context);
+        if (button != null) {
+            throw new ValidatorException(new FacesMessage("cbutton should not be found"));
+        }
+    }
+
+    public void removePreRenderComponent(ComponentSystemEvent event) {
+        FacesContext context = FacesContext.getCurrentInstance();
+
+        UIComponent buttonParent;
+        UIComponent button = findButton(context);
+
+        if (button != null) {
+            buttonParent = button.getParent();
+            buttonParent.getChildren().remove(button);
+        }
+    }
+
+    private UIComponent findButton(FacesContext context) {
+        char sep = UINamingContainer.getSeparatorChar(context);
+        UIComponent result = context.getViewRoot().findComponent(sep + "form" + sep + "cbutton");
+        return result;
+    }
+}
diff --git a/test/servlet30/dynamic/src/main/java/com/sun/faces/test/servlet30/dynamic/StableComponent.java b/test/servlet30/dynamic/src/main/java/com/sun/faces/test/servlet30/dynamic/StableComponent.java
new file mode 100644
index 0000000..86e3333
--- /dev/null
+++ b/test/servlet30/dynamic/src/main/java/com/sun/faces/test/servlet30/dynamic/StableComponent.java
@@ -0,0 +1,99 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU General
+ * Public License Version 2 only ("GPL") or the Common Development and
+ * Distribution License("CDDL") (collectively, the "License"). You may not use
+ * this file except in compliance with the License. You can obtain a copy of the
+ * License at https://glassfish.dev.java.net/public/CDDLGPL_1_1.html or
+ * packager/legal/LICENSE.txt. See the License for the specific language
+ * governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception: Oracle designates this particular file as subject to
+ * the "Classpath" exception as provided by Oracle in the GPL Version 2 section
+ * of the License file that accompanied this code.
+ *
+ * Modifications: If applicable, add the following below the License Header,
+ * with the fields enclosed by brackets [] replaced by your own identifying
+ * information: "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s): If you wish your version of this file to be governed by only
+ * the CDDL or only the GPL Version 2, indicate your decision by adding
+ * "[Contributor] elects to include this software in this distribution under the
+ * [CDDL or GPL Version 2] license." If you don't indicate a single choice of
+ * license, a recipient has the option to distribute your version of this file
+ * under either the CDDL, the GPL Version 2 or to extend the choice of license
+ * to its licensees as provided above. However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright holder.
+ */
+
+package com.sun.faces.test.servlet30.dynamic;
+
+import javax.faces.component.FacesComponent;
+import javax.faces.component.UIComponentBase;
+import javax.faces.component.UIViewRoot;
+import javax.faces.component.html.HtmlInputText;
+import javax.faces.context.FacesContext;
+import javax.faces.event.AbortProcessingException;
+import javax.faces.event.PreRenderViewEvent;
+import javax.faces.event.SystemEvent;
+import javax.faces.event.SystemEventListener;
+
+ at FacesComponent( value = "com.sun.faces.test.servlet30.dynamic.StableComponent" )
+public class StableComponent extends UIComponentBase implements SystemEventListener {
+
+    //
+    // Constructor - subscribes to PreRenderViewEvent(s)
+    //
+
+    public StableComponent() {
+        setRendererType( "component" );
+        FacesContext context = FacesContext.getCurrentInstance();
+        UIViewRoot root = context.getViewRoot();
+        root.subscribeToViewEvent( PreRenderViewEvent.class, this );
+    }
+
+    //
+    // Public methods
+    //
+
+    @Override
+    public String getFamily() {
+        return "com.sun.faces.test.servlet30.dynamic";
+    }
+
+    public boolean isListenerForSource( Object source ) {
+        return ( source instanceof UIViewRoot );
+    }
+
+    //
+    // Event processing method: Adds 3 input components.
+    //
+
+    @Override
+    public void processEvent( SystemEvent event )
+        throws AbortProcessingException {
+        if ( FacesContext.getCurrentInstance().getMaximumSeverity() != null ) {
+            return;
+        }
+
+        HtmlInputText inputText1 = new HtmlInputText();
+        inputText1.setValue( "1" );
+        getChildren().add( inputText1 );
+
+        HtmlInputText inputText2 = new HtmlInputText();
+        inputText2.setValue( "2" );
+        getChildren().add( inputText2 );
+
+        HtmlInputText inputText3 = new HtmlInputText();
+        inputText3.setId( "text3" );
+        inputText3.setRequired( true );
+        getChildren().add( inputText3 );
+    }
+}
diff --git a/test/servlet30/dynamic/src/main/java/com/sun/faces/test/servlet30/dynamic/TableComponent.java b/test/servlet30/dynamic/src/main/java/com/sun/faces/test/servlet30/dynamic/TableComponent.java
new file mode 100644
index 0000000..87d0b8e
--- /dev/null
+++ b/test/servlet30/dynamic/src/main/java/com/sun/faces/test/servlet30/dynamic/TableComponent.java
@@ -0,0 +1,106 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.servlet30.dynamic;
+
+import javax.faces.application.Application;
+import javax.faces.component.FacesComponent;
+import javax.faces.component.UIColumn;
+import javax.faces.component.UIComponentBase;
+import javax.faces.component.UIViewRoot;
+import javax.faces.component.html.HtmlDataTable;
+import javax.faces.component.html.HtmlOutputText;
+import javax.faces.context.FacesContext;
+import javax.faces.event.AbortProcessingException;
+import javax.faces.event.PreRenderViewEvent;
+import javax.faces.event.SystemEvent;
+import javax.faces.event.SystemEventListener;
+
+ at FacesComponent(value = "com.sun.faces.test.servlet30.dynamic.TableComponent" )
+public class TableComponent extends UIComponentBase implements SystemEventListener {
+
+    //
+    // Constructor: Subscribes to PreRenderView Event(s)
+    //
+    public TableComponent() {
+        setRendererType( "component" );
+        FacesContext context = FacesContext.getCurrentInstance();
+        UIViewRoot root = context.getViewRoot();
+        root.subscribeToViewEvent( PreRenderViewEvent.class, this );
+    }
+
+    @Override
+    public String getFamily() {
+        return "com.sun.faces.test.servlet30.dynamic";
+    }
+
+    public boolean isListenerForSource( Object source ) {
+        return ( source instanceof UIViewRoot );
+    }
+
+    //
+    // Event processing: Creates a datatable and adds a component to it.
+    //
+    @Override
+    public void processEvent( SystemEvent event ) throws AbortProcessingException {
+        FacesContext context = FacesContext.getCurrentInstance();
+           if ( !context.isPostback() ) {
+              Application application = context.getApplication();
+
+              HtmlDataTable dataTable = new HtmlDataTable();
+              dataTable.setVar( "_internal" );
+              dataTable.setValueExpression( "value", 
+                  application.getExpressionFactory().createValueExpression( 
+                     context.getELContext(), "#{addBean.list}", Object.class ));
+              getChildren().add( dataTable );
+
+              UIColumn column = new UIColumn();
+              column.setId( context.getViewRoot().createUniqueId() );
+              dataTable.getChildren().add( column );
+
+              HtmlOutputText outputText = new HtmlOutputText();
+              outputText.setId( context.getViewRoot().createUniqueId() );
+              outputText.setValueExpression( "value", 
+                  application.getExpressionFactory().createValueExpression( 
+                     context.getELContext(), "#{_internal}", Object.class ));
+              column.getChildren().add( outputText );
+        }
+    }
+}
diff --git a/test/servlet30/dynamic/src/main/java/com/sun/faces/test/servlet30/dynamic/ToggleBean.java b/test/servlet30/dynamic/src/main/java/com/sun/faces/test/servlet30/dynamic/ToggleBean.java
new file mode 100644
index 0000000..b0879d1
--- /dev/null
+++ b/test/servlet30/dynamic/src/main/java/com/sun/faces/test/servlet30/dynamic/ToggleBean.java
@@ -0,0 +1,47 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU General
+ * Public License Version 2 only ("GPL") or the Common Development and
+ * Distribution License("CDDL") (collectively, the "License"). You may not use
+ * this file except in compliance with the License. You can obtain a copy of the
+ * License at https://glassfish.dev.java.net/public/CDDLGPL_1_1.html or
+ * packager/legal/LICENSE.txt. See the License for the specific language
+ * governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception: Oracle designates this particular file as subject to
+ * the "Classpath" exception as provided by Oracle in the GPL Version 2 section
+ * of the License file that accompanied this code.
+ *
+ * Modifications: If applicable, add the following below the License Header,
+ * with the fields enclosed by brackets [] replaced by your own identifying
+ * information: "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s): If you wish your version of this file to be governed by only
+ * the CDDL or only the GPL Version 2, indicate your decision by adding
+ * "[Contributor] elects to include this software in this distribution under the
+ * [CDDL or GPL Version 2] license." If you don't indicate a single choice of
+ * license, a recipient has the option to distribute your version of this file
+ * under either the CDDL, the GPL Version 2 or to extend the choice of license
+ * to its licensees as provided above. However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright holder.
+ */
+package com.sun.faces.test.servlet30.dynamic;
+
+import javax.faces.bean.ManagedBean;
+
+ at ManagedBean(name = "toggleBean")
+public class ToggleBean {
+
+    /**
+     * Toggle.
+     */
+    public void toggle() {
+    }
+}
diff --git a/test/servlet30/dynamic/src/main/java/com/sun/faces/test/servlet30/dynamic/ToggleComponent.java b/test/servlet30/dynamic/src/main/java/com/sun/faces/test/servlet30/dynamic/ToggleComponent.java
new file mode 100644
index 0000000..ba0935f
--- /dev/null
+++ b/test/servlet30/dynamic/src/main/java/com/sun/faces/test/servlet30/dynamic/ToggleComponent.java
@@ -0,0 +1,71 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU General
+ * Public License Version 2 only ("GPL") or the Common Development and
+ * Distribution License("CDDL") (collectively, the "License"). You may not use
+ * this file except in compliance with the License. You can obtain a copy of the
+ * License at https://glassfish.dev.java.net/public/CDDLGPL_1_1.html or
+ * packager/legal/LICENSE.txt. See the License for the specific language
+ * governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception: Oracle designates this particular file as subject to
+ * the "Classpath" exception as provided by Oracle in the GPL Version 2 section
+ * of the License file that accompanied this code.
+ *
+ * Modifications: If applicable, add the following below the License Header,
+ * with the fields enclosed by brackets [] replaced by your own identifying
+ * information: "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s): If you wish your version of this file to be governed by only
+ * the CDDL or only the GPL Version 2, indicate your decision by adding
+ * "[Contributor] elects to include this software in this distribution under the
+ * [CDDL or GPL Version 2] license." If you don't indicate a single choice of
+ * license, a recipient has the option to distribute your version of this file
+ * under either the CDDL, the GPL Version 2 or to extend the choice of license
+ * to its licensees as provided above. However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright holder.
+ */
+package com.sun.faces.test.servlet30.dynamic;
+
+import javax.faces.component.FacesComponent;
+import javax.faces.component.UIComponent;
+import javax.faces.component.UIComponentBase;
+import javax.faces.component.UIViewRoot;
+import javax.faces.context.FacesContext;
+import javax.faces.event.AbortProcessingException;
+import javax.faces.event.PreRenderViewEvent;
+import javax.faces.event.SystemEvent;
+import javax.faces.event.SystemEventListener;
+
+ at FacesComponent(value = "com.sun.faces.test.servlet30.dynamic.ToggleComponent")
+public class ToggleComponent extends UIComponentBase implements SystemEventListener {
+
+    public ToggleComponent() {
+        setRendererType("component");
+        FacesContext context = FacesContext.getCurrentInstance();
+        UIViewRoot root = context.getViewRoot();
+        root.subscribeToViewEvent(PreRenderViewEvent.class, this);
+    }
+
+    @Override
+    public String getFamily() {
+        return "com.sun.faces.test.servlet30.dynamic";
+    }
+
+    public boolean isListenerForSource(Object source) {
+        return (source instanceof UIViewRoot);
+    }
+
+    @Override
+    public void processEvent(SystemEvent event) throws AbortProcessingException {
+        UIComponent component = getChildren().remove(0);
+        getChildren().add(component);
+    }
+}
diff --git a/test/servlet30/dynamic/src/main/java/com/sun/faces/test/servlet30/dynamic/TransientFirstChildBean.java b/test/servlet30/dynamic/src/main/java/com/sun/faces/test/servlet30/dynamic/TransientFirstChildBean.java
new file mode 100644
index 0000000..e90664d
--- /dev/null
+++ b/test/servlet30/dynamic/src/main/java/com/sun/faces/test/servlet30/dynamic/TransientFirstChildBean.java
@@ -0,0 +1,70 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU General
+ * Public License Version 2 only ("GPL") or the Common Development and
+ * Distribution License("CDDL") (collectively, the "License"). You may not use
+ * this file except in compliance with the License. You can obtain a copy of the
+ * License at https://glassfish.dev.java.net/public/CDDLGPL_1_1.html or
+ * packager/legal/LICENSE.txt. See the License for the specific language
+ * governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception: Oracle designates this particular file as subject to
+ * the "Classpath" exception as provided by Oracle in the GPL Version 2 section
+ * of the License file that accompanied this code.
+ *
+ * Modifications: If applicable, add the following below the License Header,
+ * with the fields enclosed by brackets [] replaced by your own identifying
+ * information: "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s): If you wish your version of this file to be governed by only
+ * the CDDL or only the GPL Version 2, indicate your decision by adding
+ * "[Contributor] elects to include this software in this distribution under the
+ * [CDDL or GPL Version 2] license." If you don't indicate a single choice of
+ * license, a recipient has the option to distribute your version of this file
+ * under either the CDDL, the GPL Version 2 or to extend the choice of license
+ * to its licensees as provided above. However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright holder.
+ */
+package com.sun.faces.test.servlet30.dynamic;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.RequestScoped;
+import javax.faces.component.UIComponent;
+import javax.faces.component.html.HtmlOutputText;
+import javax.faces.context.FacesContext;
+
+ at ManagedBean
+ at RequestScoped
+public class TransientFirstChildBean {
+
+    private transient UIComponent parentContainer;
+
+    public UIComponent getParent() {
+        return this.parentContainer;
+    }
+
+    public void setParent(UIComponent container) {
+        this.parentContainer = container;
+    }
+
+    public String add() {
+        FacesContext context = FacesContext.getCurrentInstance();
+
+        HtmlOutputText dynamicComp = (HtmlOutputText) context.
+                getApplication().createComponent(HtmlOutputText.COMPONENT_TYPE);
+
+        dynamicComp.setValue("dynamically added; now perform a reload");
+        dynamicComp.setStyle("background-color: yellow");
+
+        parentContainer.getChildren().add(dynamicComp);
+
+        return null;
+    }
+}
diff --git a/test/servlet30/dynamic/src/main/webapp/WEB-INF/dynamic.taglib.xml b/test/servlet30/dynamic/src/main/webapp/WEB-INF/dynamic.taglib.xml
new file mode 100644
index 0000000..8b607ac
--- /dev/null
+++ b/test/servlet30/dynamic/src/main/webapp/WEB-INF/dynamic.taglib.xml
@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<facelet-taglib xmlns="http://java.sun.com/xml/ns/javaee"
+                xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+                xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facelettaglibrary_2_0.xsd" 
+                version="2.0">
+    <namespace>http://www.oracle.com/mojarra/test/dynamic</namespace>
+    <tag>
+        <tag-name>toggleComponent</tag-name>
+        <component>
+            <component-type>com.sun.faces.test.servlet30.dynamic.ToggleComponent</component-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>addcomponent</tag-name>
+        <component>
+            <component-type>com.sun.faces.test.servlet30.dynamic.AddComponent</component-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>stablecomponent</tag-name>
+        <component>
+            <component-type>com.sun.faces.test.servlet30.dynamic.StableComponent</component-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>tablecomponent</tag-name>
+        <component>
+            <component-type>com.sun.faces.test.servlet30.dynamic.TableComponent</component-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>recursivecomponent</tag-name>
+        <component>
+            <component-type>com.sun.faces.test.servlet30.dynamic.RecursiveComponent</component-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>addcomponent1</tag-name>
+        <component>
+            <component-type>com.sun.faces.test.servlet30.dynamic.AddComponent1</component-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>movecomponent</tag-name>
+        <component>
+            <component-type>com.sun.faces.test.servlet30.dynamic.MoveComponent</component-type>
+        </component>
+    </tag>
+    <tag>
+        <tag-name>movecomponent2</tag-name>
+        <component>
+            <component-type>com.sun.faces.test.servlet30.dynamic.MoveComponent2</component-type>
+        </component>
+    </tag>
+</facelet-taglib>
diff --git a/test/servlet30/dynamic/src/main/webapp/WEB-INF/faces-config.xml b/test/servlet30/dynamic/src/main/webapp/WEB-INF/faces-config.xml
new file mode 100644
index 0000000..97eb777
--- /dev/null
+++ b/test/servlet30/dynamic/src/main/webapp/WEB-INF/faces-config.xml
@@ -0,0 +1,49 @@
+<?xml version='1.0' encoding='UTF-8'?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
+              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+              xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
+              version="2.0">
+</faces-config>
diff --git a/test/servlet30/dynamic/src/main/webapp/WEB-INF/glassfish-web.xml b/test/servlet30/dynamic/src/main/webapp/WEB-INF/glassfish-web.xml
new file mode 100644
index 0000000..7428d44
--- /dev/null
+++ b/test/servlet30/dynamic/src/main/webapp/WEB-INF/glassfish-web.xml
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE glassfish-web-app PUBLIC 
+    "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" 
+    "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<glassfish-web-app error-url="">
+    <context-root>/test-servlet30-dynamic</context-root>
+    <class-loader delegate="true"/>
+    <jsp-config>
+        <property name="keepgenerated" value="true">
+            <description>Keep a copy of the generated servlet class' java code.</description>
+        </property>
+    </jsp-config>
+</glassfish-web-app>
diff --git a/test/servlet30/dynamic/src/main/webapp/WEB-INF/issue2471.taglib.xml b/test/servlet30/dynamic/src/main/webapp/WEB-INF/issue2471.taglib.xml
new file mode 100644
index 0000000..2b17c67
--- /dev/null
+++ b/test/servlet30/dynamic/src/main/webapp/WEB-INF/issue2471.taglib.xml
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<facelet-taglib xmlns="http://java.sun.com/xml/ns/javaee"
+                xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+                xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facelettaglibrary_2_0.xsd" 
+                version="2.0">
+    <namespace>http://java.sun.com/jsf/issues/issue2471</namespace>
+    <tag>
+        <tag-name>issue2471Component</tag-name>
+        <component>
+            <component-type>com.sun.faces.test.servlet30.dynamic.Issue2471Component</component-type>
+        </component>
+    </tag>
+</facelet-taglib>
diff --git a/test/servlet30/dynamic/src/main/webapp/WEB-INF/web.xml b/test/servlet30/dynamic/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..7e56b1e
--- /dev/null
+++ b/test/servlet30/dynamic/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+ Copyright 1997-2012 Sun Microsystems, Inc. All rights reserved.
+
+ The contents of this file are subject to the terms of either the GNU
+ General Public License Version 2 only ("GPL") or the Common Development
+ and Distribution License("CDDL") (collectively, the "License").  You
+ may not use this file except in compliance with the License. You can obtain
+ a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
+ or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ language governing permissions and limitations under the License.
+
+ When distributing the software, include this License Header Notice in each
+ file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
+ Sun designates this particular file as subject to the "Classpath" exception
+ as provided by Sun in the GPL Version 2 section of the License file that
+ accompanied this code.  If applicable, add the following below the License
+ Header, with the fields enclosed by brackets [] replaced by your own
+ identifying information: "Portions Copyrighted [year]
+ [name of copyright owner]"
+
+ Contributor(s):
+
+ If you wish your version of this file to be governed by only the CDDL or
+ only the GPL Version 2, indicate your decision by adding "[Contributor]
+ elects to include this software in this distribution under the [CDDL or GPL
+ Version 2] license."  If you don't indicate a single choice of license, a
+ recipient has the option to distribute your version of this file under
+ either the CDDL, the GPL Version 2 or to extend the choice of license to
+ its licensees as provided above.  However, if you add GPL Version 2 code
+ and therefore, elected the GPL Version 2 license, then the option applies
+ only if the new code is made subject to such option by the copyright
+ holder.
+
+-->
+
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" 
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>${webapp.projectStage}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
+        <param-value>${webapp.partialStateSaving}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>${webapp.stateSavingMethod}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.FACELETS_LIBRARIES</param-name>
+        <param-value>/WEB-INF/dynamic.taglib.xml;/WEB-INF/issue2471.taglib.xml</param-value>
+    </context-param>
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <welcome-file-list>
+        <welcome-file>faces/index.xhtml</welcome-file>
+    </welcome-file-list>
+</web-app>
diff --git a/test/servlet30/dynamic/src/main/webapp/add.xhtml b/test/servlet30/dynamic/src/main/webapp/add.xhtml
new file mode 100644
index 0000000..3b11857
--- /dev/null
+++ b/test/servlet30/dynamic/src/main/webapp/add.xhtml
@@ -0,0 +1,76 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "
+    http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:dynamic="http://www.oracle.com/mojarra/test/dynamic">
+
+    <body>
+        <f:view>
+            <h2>Add Test Instructions</h2>
+            <ol>
+		<li>The component should have dynamically modified the tree so that 'Dynamically added child' appears inside the red box</li>
+		<li>Click 'POSTback'. The 'Dynamically added child' should not disappear (because it should have been serialized in the ViewState)</li>
+	    </ol>
+		
+	    <h:messages/>
+		
+	    <h:form prependId="false" id="dynamicForm">
+	
+		<dynamic:addcomponent/>
+		
+		<br/>
+		
+		<h:commandButton id="button" value="POSTback" action="#{addBean.save}"/>
+		
+	    </h:form>			
+        </f:view>
+    </body>
+</html>
+	
+
diff --git a/test/servlet30/dynamic/src/main/webapp/add1.xhtml b/test/servlet30/dynamic/src/main/webapp/add1.xhtml
new file mode 100644
index 0000000..7f0a46a
--- /dev/null
+++ b/test/servlet30/dynamic/src/main/webapp/add1.xhtml
@@ -0,0 +1,77 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "
+    http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:dynamic="http://www.oracle.com/mojarra/test/dynamic">
+
+    <body>
+        <f:view>
+            <h2>Add Test Instructions</h2>
+            <ol>
+                <li>Just before the page is rendered (pre render view event), a custom component should have created a dynamic component (PanelGrid) and added it as a child.</li>
+                <li>Click 'PostBack'. The Action processing for the button will create another dynamic component (OutputText) and add it as a child to the dynamic PanelGrid component.</li>
+                <li>Click 'PostBack' again.  The PanelGrid should still have the OutputText child.</li>
+	    </ol>
+		
+	    <h:messages/>
+		
+	    <h:form prependId="false" id="dynamicForm">
+	
+		<dynamic:addcomponent1/>
+		
+		<br/>
+		
+		<h:commandButton id="button" value="POSTback" action="#{addBean.save}"/>
+		
+	    </h:form>			
+        </f:view>
+    </body>
+</html>
+	
+
diff --git a/test/servlet30/dynamic/src/main/webapp/add2.xhtml b/test/servlet30/dynamic/src/main/webapp/add2.xhtml
new file mode 100644
index 0000000..963d553
--- /dev/null
+++ b/test/servlet30/dynamic/src/main/webapp/add2.xhtml
@@ -0,0 +1,74 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "
+    http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:dynamic="http://www.oracle.com/mojarra/test/dynamic">
+
+    <body>
+        <f:view>
+            <h2>Add Test Instructions</h2>
+            <ol>
+                <li>Click 'AddComponent'. The Action processing for the button will create another dynamic component (OutputText) and add it as a child to the PanelGroup component.</li>
+                <li>Each subsequent 'AddComponent' click should dynamically create and add an OutputText component at the end.</li>
+	    </ol>
+		
+	    <h:messages/>
+		
+	    <h:form prependId="false" id="dynamicForm">
+	
+               <h:panelGroup id="group">
+                  <h:commandButton id="add" value="AddComponent" action="#{addBean.addComponent}"/>
+               </h:panelGroup>
+
+	    </h:form>			
+        </f:view>
+    </body>
+</html>
+	
+
diff --git a/test/servlet30/dynamic/src/main/webapp/index.xhtml b/test/servlet30/dynamic/src/main/webapp/index.xhtml
new file mode 100644
index 0000000..8970f13
--- /dev/null
+++ b/test/servlet30/dynamic/src/main/webapp/index.xhtml
@@ -0,0 +1,76 @@
+<?xml version='1.0' encoding='UTF-8'?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "
+    http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:f="http://java.sun.com/jsf/core">
+    <body>
+        <f:view>
+            <h2>Dynamic Component Tests</h2>
+            <ul>
+                <li><a href="#{facesContext.externalContext.requestContextPath}/faces/moveComponent.xhtml">ActionEvent Processing: Move a component around</a></li>
+                <br/>
+                <li><a href="#{facesContext.externalContext.requestContextPath}/faces/moveComponent1.xhtml">PreRenderViewEvent Processing: Move a component</a></li>
+                <br/>
+                <li><a href="#{facesContext.externalContext.requestContextPath}/faces/toggle.xhtml">PreRenderViewEvent Processing: Toggle components</a></li>
+                <br/>
+                <li><a href="#{facesContext.externalContext.requestContextPath}/faces/removeComponent.xhtml">PreRenderViewEvent Processing: Remove a component</a></li>
+                <br/>
+                <li><a href="#{facesContext.externalContext.requestContextPath}/faces/add.xhtml">PreRenderViewEvent Processing: Creates/adds a component</a></li>
+                <br/>
+                <li><a href="#{facesContext.externalContext.requestContextPath}/faces/stable.xhtml">PreRenderViewEvent Processing: Creates/adds three input components. Tests for ordering stability after postback</a></li>
+                <br/>
+                <li><a href="#{facesContext.externalContext.requestContextPath}/faces/table.xhtml">PreRenderViewEvent Processing: Creates/adds a datatable component, followed by the creation/addition of a component to the datatable</a></li>
+                <br/>
+                <li><a href="#{facesContext.externalContext.requestContextPath}/faces/recursive.xhtml">PreRenderViewEvent Processing: Creates/adds a component, followed by the creation/addition of a nested component</a></li>
+                <br/>
+                <li><a href="#{facesContext.externalContext.requestContextPath}/faces/add1.xhtml">PreRenderViewEvent / PostRestoreStateEvent Processing: Creates/adds components</a></li>
+                <br/>
+                <li><a href="#{facesContext.externalContext.requestContextPath}/faces/add2.xhtml">PreRenderViewEvent Processing: Creates/adds a component to an existing component.  Each subsequent action appends a new component.</a></li>
+            </ul>
+        </f:view>
+    </body>
+</html>
diff --git a/test/servlet30/dynamic/src/main/webapp/issue1414.xhtml b/test/servlet30/dynamic/src/main/webapp/issue1414.xhtml
new file mode 100644
index 0000000..faa9704
--- /dev/null
+++ b/test/servlet30/dynamic/src/main/webapp/issue1414.xhtml
@@ -0,0 +1,22 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <f:view>
+        <h:body bgcolor="white">
+            <h:form id="form">
+                <h:outputText value="Press the 'temporarily move a component' button" />
+                <br />
+                <h:commandButton id="submit" actionListener="#{issue1414Bean.temporaryMoveComponent}" value="temporarily move a component" />
+                <br />
+                <h:panelGroup id="movefrom" style="border: red 1px solid">
+                    <h:outputText id="moveme" value="move me" />
+                </h:panelGroup>
+                <h:panelGroup id="moveto" style="border: green 1px solid">
+                </h:panelGroup>	
+            </h:form>
+        </h:body>
+    </f:view>
+</html>
diff --git a/test/servlet30/dynamic/src/main/webapp/issue2395.xhtml b/test/servlet30/dynamic/src/main/webapp/issue2395.xhtml
new file mode 100644
index 0000000..9babf57
--- /dev/null
+++ b/test/servlet30/dynamic/src/main/webapp/issue2395.xhtml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+
+    <f:view contentType="text/html">
+        <h:head>
+            <meta content='text/html; charset=UTF-8' http-equiv="Content-Type" />
+        </h:head>
+        <h:body>
+            <h:form id="form">
+                <h:panelGroup binding="#{issue2395Bean.panelGroup}">
+                    <h:inputText id="removeMe" value="Remove Me"/>
+                </h:panelGroup> <br/>
+                <h:commandButton id="add" value="add" actionListener="#{issue2395Bean.doAdd}"/> <br/>
+                <h:commandButton id="addRemove" value="addRemove" actionListener="#{issue2395Bean.doAddRemove}"/> <br/>
+                <h:commandButton id="addRemoveAdd" value="addRemoveAdd" actionListener="#{issue2395Bean.doAddRemoveAdd}"/> <br/>
+                <h:commandButton id="remove" value="remove" actionListener="#{issue2395Bean.doRemove}"/> <br/>
+                <h:commandButton id="removeAdd" value="removeAdd" actionListener="#{issue2395Bean.doRemoveAdd}"/> <br/>
+                <h:commandButton id="removeAddRemove" value="removeAddRemove" actionListener="#{issue2395Bean.doRemoveAddRemove}"/> <br/>
+            </h:form>
+            <h:messages/>
+        </h:body>
+    </f:view>
+</html>
diff --git a/test/servlet30/dynamic/src/main/webapp/issue2471.xhtml b/test/servlet30/dynamic/src/main/webapp/issue2471.xhtml
new file mode 100644
index 0000000..4cbe603
--- /dev/null
+++ b/test/servlet30/dynamic/src/main/webapp/issue2471.xhtml
@@ -0,0 +1,19 @@
+<!DOCTYPE html>
+
+<html lang="en" 
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:issue2471="http://java.sun.com/jsf/issues/issue2471">
+    <f:view>
+        <h:head>
+            <title>Issue #2471</title>
+        </h:head>
+        <h:body>
+            <issue2471:issue2471Component/>
+            <f:event type="preRenderView" listener="#{issue2471Bean.removeComponentResources}"/>
+            <h:form id="form">
+                <h:commandButton id="submit" value="submit"/>
+            </h:form>
+        </h:body>
+    </f:view>
+</html>
diff --git a/test/servlet30/dynamic/src/main/webapp/moveComponent.xhtml b/test/servlet30/dynamic/src/main/webapp/moveComponent.xhtml
new file mode 100644
index 0000000..0be2c2a
--- /dev/null
+++ b/test/servlet30/dynamic/src/main/webapp/moveComponent.xhtml
@@ -0,0 +1,92 @@
+<?xml version='1.0' encoding='UTF-8'?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "
+    http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:f="http://java.sun.com/jsf/core"      
+      xmlns:h="http://java.sun.com/jsf/html">
+    <body>
+        <f:view>
+            <h:form id="form1">
+                <h:outputText id="ot1" value="The following text should move above the buttons when you click on them: "/>
+                <h:outputText value="Moveable HELLO text" id="outputText2"/>
+                <br/>
+                <br/>
+                <h:panelGrid id="panelBox11" style="border-width: 1px; border-style: dashed; padding: 5px;">
+                    <h:commandButton 
+                        id="commandButton11" 
+                        value="Move Moveable HELLO before me"
+                        actionListener="#{moveComponentBean.moveChild}"/>
+                </h:panelGrid>
+                <br/>
+                <f:subview id="subview1">
+                    <h:panelGrid id="panelBox12" style="border-width: 1px; border-style: dashed; padding: 5px;">
+                        <h:commandButton 
+                            id="commandButton12" 
+                            value="Move Moveable HELLO before me"
+                            actionListener="#{moveComponentBean.moveChild}" />
+                    </h:panelGrid>
+                </f:subview>
+                <br/>
+                <f:subview id="subview2">
+                    <h:panelGrid id="panelBox3" style="border-width: 1px; border-style: dashed; padding: 5px;">
+                        <h:commandButton 
+                            id="commandButton13" 
+                            value="Move Moveable HELLO before me"
+                            actionListener="#{moveComponentBean.moveChild}"/>
+                        <f:subview id="subview2b">
+                            <h:panelGrid id="panelBox4" style="border-width: 1px; border-style: dashed; padding: 5px;">
+                                <h:commandButton id="commandButton14" 
+                                                 value="Move Moveable HELLO before me"
+                                                 actionListener="#{moveComponentBean.moveChild}"/>
+                            </h:panelGrid>
+                        </f:subview>
+                    </h:panelGrid>
+                </f:subview>
+            </h:form>
+        </f:view>
+    </body>
+</html>
diff --git a/test/servlet30/dynamic/src/main/webapp/moveComponent1.xhtml b/test/servlet30/dynamic/src/main/webapp/moveComponent1.xhtml
new file mode 100644
index 0000000..fbc650f
--- /dev/null
+++ b/test/servlet30/dynamic/src/main/webapp/moveComponent1.xhtml
@@ -0,0 +1,77 @@
+<?xml version='1.0' encoding='UTF-8'?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "
+    http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:f="http://java.sun.com/jsf/core"      
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:dynamic="http://www.oracle.com/mojarra/test/dynamic">
+    <body>
+        <f:view>
+            <h2>Move Test Instructions</h2>
+            <ol>
+                <li>
+                    The component should have dynamically modified the tree so that 
+                    'Foo' appears inside the red box. 
+                </li>
+                <li>
+                    Click 'POSTback'. There should be no errors. 
+                </li>
+            </ol>
+            <h:messages/>
+            <h:form id="form1" prependId="false">
+                <dynamic:movecomponent>
+                    <h:outputText value="Foo"/>
+                    <h:panelGroup style="border: 1px solid red; display: block">
+                       <h:outputText value="Bar"/>
+                    </h:panelGroup>
+                </dynamic:movecomponent>
+                <br/>
+                <h:commandButton id="button" value="POSTback" action="#{addBean.save}"/>
+            </h:form>
+        </f:view>
+    </body>
+</html>
diff --git a/test/servlet30/dynamic/src/main/webapp/moveComponent2.xhtml b/test/servlet30/dynamic/src/main/webapp/moveComponent2.xhtml
new file mode 100644
index 0000000..5da7d11
--- /dev/null
+++ b/test/servlet30/dynamic/src/main/webapp/moveComponent2.xhtml
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+
+<html lang="en"
+      xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:test="http://www.oracle.com/mojarra/test/dynamic">
+    <h:head/>
+    <body>
+        State Saving Mode: <h:outputText value="#{moveComponent2Bean.stateSavingMode}"/>
+        <h:panelGroup id="target"/>
+        <test:movecomponent2 for="target">
+            <h:panelGroup id="source">
+                <b><h:outputText value="#{moveComponent2Bean.text}"/></b>
+            </h:panelGroup>
+        </test:movecomponent2>
+        <h:form id="updateForm">
+            <h:commandButton id="submit" value="Update" action="#{moveComponent2Bean.update}" />
+        </h:form>
+    </body>
+</html>
diff --git a/test/servlet30/dynamic/src/main/webapp/moveContainerComponent.xhtml b/test/servlet30/dynamic/src/main/webapp/moveContainerComponent.xhtml
new file mode 100644
index 0000000..a82af2d
--- /dev/null
+++ b/test/servlet30/dynamic/src/main/webapp/moveContainerComponent.xhtml
@@ -0,0 +1,94 @@
+<?xml version='1.0' encoding='UTF-8'?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "
+    http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:f="http://java.sun.com/jsf/core"      
+      xmlns:h="http://java.sun.com/jsf/html">
+    <body>
+        <f:view>
+            <h:form id="form1">
+                <h:outputText id="ot1" value="The following text should move above the buttons when you click on them: "/>
+                <h:panelGroup id="outputText2">
+                    <h:outputText value="Moveable HELLO text" id="text_in_outputText2"/>
+                </h:panelGroup>
+                <br/>
+                <br/>
+                <h:panelGrid id="panelBox11" style="border-width: 1px; border-style: dashed; padding: 5px;">
+                    <h:commandButton 
+                        id="commandButton11" 
+                        value="Move Moveable HELLO before me"
+                        actionListener="#{moveComponentBean.moveChild}"/>
+                </h:panelGrid>
+                <br/>
+                <f:subview id="subview1">
+                    <h:panelGrid id="panelBox12" style="border-width: 1px; border-style: dashed; padding: 5px;">
+                        <h:commandButton 
+                            id="commandButton12" 
+                            value="Move Moveable HELLO before me"
+                            actionListener="#{moveComponentBean.moveChild}" />
+                    </h:panelGrid>
+                </f:subview>
+                <br/>
+                <f:subview id="subview2">
+                    <h:panelGrid id="panelBox3" style="border-width: 1px; border-style: dashed; padding: 5px;">
+                        <h:commandButton 
+                            id="commandButton13" 
+                            value="Move Moveable HELLO before me"
+                            actionListener="#{moveComponentBean.moveChild}"/>
+                        <f:subview id="subview2b">
+                            <h:panelGrid id="panelBox4" style="border-width: 1px; border-style: dashed; padding: 5px;">
+                                <h:commandButton id="commandButton14" 
+                                                 value="Move Moveable HELLO before me"
+                                                 actionListener="#{moveComponentBean.moveChild}"/>
+                            </h:panelGrid>
+                        </f:subview>
+                    </h:panelGrid>
+                </f:subview>
+            </h:form>
+        </f:view>
+    </body>
+</html>
diff --git a/test/servlet30/dynamic/src/main/webapp/recursive.xhtml b/test/servlet30/dynamic/src/main/webapp/recursive.xhtml
new file mode 100644
index 0000000..cdcecd7
--- /dev/null
+++ b/test/servlet30/dynamic/src/main/webapp/recursive.xhtml
@@ -0,0 +1,77 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "
+    http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:dynamic="http://www.oracle.com/mojarra/test/dynamic">
+
+    <body>
+        <f:view>
+            <h2>Recursive Test Instructions</h2>
+            <ol>
+                <li>The component should have dynamically modified the tree so that 'Dynamically added child' appears inside the red box</li>
+                <li>There should be a nested component that also contains 'Dynamically added child' inside the red box</li>
+                <li>Click 'POSTback'. Nothing should disappear (because it should have been serialized in the ViewState)</li>
+	    </ol>
+		
+	    <h:messages/>
+		
+	    <h:form prependId="false" id="dynamicForm">
+	
+		<dynamic:recursivecomponent/>
+		
+		<br/>
+		
+		<h:commandButton id="button" value="POSTback" action="#{addBean.save}"/>
+		
+	    </h:form>			
+        </f:view>
+    </body>
+</html>
+	
+
diff --git a/test/servlet30/dynamic/src/main/webapp/removeComponent.xhtml b/test/servlet30/dynamic/src/main/webapp/removeComponent.xhtml
new file mode 100644
index 0000000..a3be7de
--- /dev/null
+++ b/test/servlet30/dynamic/src/main/webapp/removeComponent.xhtml
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE html PUBLIC 
+    "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+    <head>
+        <title>Remove a button using a preRenderComponent event</title>
+    </head>
+    <body>
+        <h:form id="form">
+            <p>
+                Type some text <h:inputText id="textField" validator="#{removeComponentBean.validateDeletion}"/>
+            </p>
+            <p>
+                <h:outputText value="This text has a listener attached to it that deletes the button with id cbutton">
+                    <f:event type="preRenderComponent" listener="#{removeComponentBean.removePreRenderComponent}"/>
+                </h:outputText>
+            </p>
+            <p>
+                <h:commandButton value="delete me" id="cbutton"/>
+            </p>
+            <p>
+                <h:commandButton value="reload" id="reload"/>
+            </p>
+        </h:form>
+    </body>
+</html>
diff --git a/test/servlet30/dynamic/src/main/webapp/resources/issue2471.js b/test/servlet30/dynamic/src/main/webapp/resources/issue2471.js
new file mode 100644
index 0000000..8444f1c
--- /dev/null
+++ b/test/servlet30/dynamic/src/main/webapp/resources/issue2471.js
@@ -0,0 +1,3 @@
+/*
+ * Content does not matter
+ */
\ No newline at end of file
diff --git a/test/servlet30/dynamic/src/main/webapp/stable.xhtml b/test/servlet30/dynamic/src/main/webapp/stable.xhtml
new file mode 100644
index 0000000..a12db4f
--- /dev/null
+++ b/test/servlet30/dynamic/src/main/webapp/stable.xhtml
@@ -0,0 +1,78 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "
+    http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:dynamic="http://www.oracle.com/mojarra/test/dynamic">
+
+    <body>
+        <f:view>
+            <h2>Stable Test Instructions</h2>
+            <ol>
+		<li>3 text boxes should have been dynamically added inside the component. The first two should display '1' and '2'. The third should be blank</li>
+                <li>The first two boxes will receive an auto-generated id. The third box has had its id set programmatically</li>
+                <li>The third box is a required field, so when you click 'POSTback' you should see a 'Value is required' message</li>
+                <li>Keep clicking 'POSTback'. The order of the boxes should not change - it should remain stable</li>
+	    </ol>
+		
+	    <h:messages/>
+		
+	    <h:form prependId="false" form="dynamicForm">
+	
+		<dynamic:stablecomponent/>
+		
+		<br/>
+		
+		<h:commandButton id="button" value="POSTback" action="#{addBean.save}"/>
+		
+	    </h:form>			
+        </f:view>
+    </body>
+</html>
+	
+
diff --git a/test/servlet30/dynamic/src/main/webapp/table.xhtml b/test/servlet30/dynamic/src/main/webapp/table.xhtml
new file mode 100644
index 0000000..228daf2
--- /dev/null
+++ b/test/servlet30/dynamic/src/main/webapp/table.xhtml
@@ -0,0 +1,80 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "
+    http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:dynamic="http://www.oracle.com/mojarra/test/dynamic">
+
+    <body>
+        <f:view>
+            <h2>Table Test Instructions</h2>
+            <ol>
+                <li>The component should have dynamically created a HtmlDataTable</li>
+                <li>
+                        The 'dynamic creation' code has subtle similarities to the 're-use same component on each row' code within HtmlDataTable. Specifically
+                        if the 'dynamic creation' code is hooking in to 'setParent' then it might get triggered by HtmlDataTable
+                </li>
+                <li>Click 'POSTback'. There should be no error</li>
+	    </ol>
+		
+	    <h:messages/>
+		
+	    <h:form prependId="false" form="dynamicForm">
+	
+		<dynamic:tablecomponent/>
+		
+		<br/>
+		
+		<h:commandButton id="button" value="POSTback" action="#{addBean.save}"/>
+		
+	    </h:form>			
+        </f:view>
+    </body>
+</html>
+	
+
diff --git a/test/servlet30/dynamic/src/main/webapp/toggle.xhtml b/test/servlet30/dynamic/src/main/webapp/toggle.xhtml
new file mode 100644
index 0000000..178c72b
--- /dev/null
+++ b/test/servlet30/dynamic/src/main/webapp/toggle.xhtml
@@ -0,0 +1,80 @@
+<?xml version='1.0' encoding='UTF-8'?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "
+    http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:f="http://java.sun.com/jsf/core"      
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:dynamic="http://www.oracle.com/mojarra/test/dynamic">
+    <body>
+        <f:view>
+            <h2>Toggle Test Instructions</h2>
+            <ol>
+                <li>
+                    The component should have dynamically modified the tree so that 
+                    'Manually added child 2' appears before 'Manually added child 1'
+                </li>
+                <li>
+                    Click 'POSTback'. The 'Manually added child 2' and 'Manually 
+                    added child 1' should keep switching places
+                </li>
+                <li>
+                    Click 'POSTback' once again they should swap. And that should
+                    keep happening when you click the button.
+                </li>
+            </ol>
+            <h:messages/>
+            <h:form id="form1">
+                <dynamic:toggleComponent>
+                    <h:outputText id="child1" value="Manually added child1<br/>" escape="false"/>
+                    <h:outputText id="child2" value="Manually added child2<br/>" escape="false"/>
+                </dynamic:toggleComponent>
+                <br/>
+                <h:commandButton id="button" value="POSTback" action="#{toggleBean.toggle}"/>
+            </h:form>
+        </f:view>
+    </body>
+</html>
diff --git a/test/servlet30/dynamic/src/main/webapp/transientFirstChild.xhtml b/test/servlet30/dynamic/src/main/webapp/transientFirstChild.xhtml
new file mode 100644
index 0000000..f980872
--- /dev/null
+++ b/test/servlet30/dynamic/src/main/webapp/transientFirstChild.xhtml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title>Test for problem with dynamically added components after plain HTML</title>      
+    </h:head>
+    <h:body>
+        <h1>Test for problem with dynamically added components after plain HTML</h1>
+        <h:form id="form">
+            <ol>
+                <li>
+                    <h:commandLink id="add" value="Add component after plain HTML" action="#{transientFirstChildBean.add}">
+                        <f:ajax render=":parent"/>
+                    </h:commandLink>
+                </li>
+                <li>
+                    <h:commandLink id="reload" value="reload"/>
+                </li>
+            </ol>
+        </h:form>
+        <h:panelGroup id="parent" binding="#{transientFirstChildBean.parent}">
+            <h:panelGroup>
+                <h2>transient first child</h2>            
+            </h:panelGroup>
+        </h:panelGroup>
+    </h:body>
+</html>
\ No newline at end of file
diff --git a/test/servlet30/dynamic/src/test/java/com/sun/faces/test/servlet30/dynamic/Issue1414IT.java b/test/servlet30/dynamic/src/test/java/com/sun/faces/test/servlet30/dynamic/Issue1414IT.java
new file mode 100644
index 0000000..d472866
--- /dev/null
+++ b/test/servlet30/dynamic/src/test/java/com/sun/faces/test/servlet30/dynamic/Issue1414IT.java
@@ -0,0 +1,98 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDLGPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.dynamic;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlElement;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import org.junit.*;
+import static org.junit.Assert.*;
+
+public class Issue1414IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testIssue1414() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/issue1414.xhtml");
+        HtmlElement group = page.getHtmlElementById("form:movefrom");
+        assertTrue(group.getChildNodes().size() > 0);
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getHtmlElementById("form:submit");
+        page = button.click();
+        group = page.getHtmlElementById("form:movefrom");
+        assertTrue(group.getChildNodes().size() == 0);
+        group = page.getHtmlElementById("form:moveto");
+        assertTrue(group.getChildNodes().size() > 0);
+
+        button = (HtmlSubmitInput) page.getHtmlElementById("form:submit");
+        page = button.click();
+        group = page.getHtmlElementById("form:movefrom");
+        assertTrue(group.getChildNodes().size() > 0);
+        group = page.getHtmlElementById("form:moveto");
+        assertTrue(group.getChildNodes().size() == 0);
+
+        button = (HtmlSubmitInput) page.getElementById("form:submit");
+        page = button.click();
+        group = page.getHtmlElementById("form:movefrom");
+        assertTrue(group.getChildNodes().size() == 0);
+        group = page.getHtmlElementById("form:moveto");
+        assertTrue(group.getChildNodes().size() > 0);
+
+        button = (HtmlSubmitInput) page.getElementById("form:submit");
+        page = button.click();
+        group = page.getHtmlElementById("form:movefrom");
+        assertTrue(group.getChildNodes().size() > 0);
+        group = page.getHtmlElementById("form:moveto");
+        assertTrue(group.getChildNodes().size() == 0);
+    }
+}
diff --git a/test/servlet30/dynamic/src/test/java/com/sun/faces/test/servlet30/dynamic/Issue1826IT.java b/test/servlet30/dynamic/src/test/java/com/sun/faces/test/servlet30/dynamic/Issue1826IT.java
new file mode 100644
index 0000000..e2abb04
--- /dev/null
+++ b/test/servlet30/dynamic/src/test/java/com/sun/faces/test/servlet30/dynamic/Issue1826IT.java
@@ -0,0 +1,160 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU General
+ * Public License Version 2 only ("GPL") or the Common Development and
+ * Distribution License("CDDL") (collectively, the "License"). You may not use
+ * this file except in compliance with the License. You can obtain a copy of the
+ * License at https://glassfish.dev.java.net/public/CDDLGPL_1_1.html or
+ * packager/legal/LICENSE.txt. See the License for the specific language
+ * governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception: Oracle designates this particular file as subject to
+ * the "Classpath" exception as provided by Oracle in the GPL Version 2 section
+ * of the License file that accompanied this code.
+ *
+ * Modifications: If applicable, add the following below the License Header,
+ * with the fields enclosed by brackets [] replaced by your own identifying
+ * information: "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s): If you wish your version of this file to be governed by only
+ * the CDDL or only the GPL Version 2, indicate your decision by adding
+ * "[Contributor] elects to include this software in this distribution under the
+ * [CDDL or GPL Version 2] license." If you don't indicate a single choice of
+ * license, a recipient has the option to distribute your version of this file
+ * under either the CDDL, the GPL Version 2 or to extend the choice of license
+ * to its licensees as provided above. However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright holder.
+ */
+package com.sun.faces.test.servlet30.dynamic;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class Issue1826IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testAddComponent() throws Exception {
+
+        /*
+         * Make sure the added component is contained within the outer component. 
+         */
+        HtmlPage page = webClient.getPage(webUrl + "faces/add.xhtml");
+        assertTrue(page.asXml().indexOf("encodeBegin") < page.asXml().indexOf(" Dynamically added child"));
+        assertTrue(page.asXml().indexOf(" Dynamically added child") < page.asXml().indexOf("encodeEnd"));
+
+        /**
+         * After clicking make sure the added component is still in its proper place.
+         */
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("button");
+        page = button.click();
+        assertTrue(page.asXml().indexOf("encodeBegin") < page.asXml().indexOf(" Dynamically added child"));
+        assertTrue(page.asXml().indexOf(" Dynamically added child") < page.asXml().indexOf("encodeEnd"));
+    }
+
+    @Test
+    public void testStable() throws Exception {
+
+         String inputValue1 = "value=" + '"' + "1" + '"';
+         String inputValue2 = "value=" + '"' + "2" + '"';
+         String idText3 = "id=" + '"' + "text3" + '"';
+
+        /*
+         * Make sure the three dynamically added input components are in their proper place. 
+         */
+        HtmlPage page = webClient.getPage(webUrl + "faces/stable.xhtml");
+        assertTrue(page.asXml().indexOf("encodeBegin") < page.asXml().indexOf(inputValue1));
+        assertTrue(page.asXml().indexOf(inputValue1) < page.asXml().indexOf(inputValue2));
+        assertTrue(page.asXml().indexOf(inputValue2) < page.asXml().indexOf(idText3));
+        assertTrue(page.asXml().indexOf("text3") < page.asXml().indexOf("encodeEnd"));
+
+        /**
+         * After clicking make sure the added component is still in its proper place.
+         * Also verify the validation required error message appears as the third input
+         * component has required attribute set to true.
+         */
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("button");
+        page = button.click();
+        assertTrue(page.asXml().contains("text3: Validation Error: Value is required."));
+        assertTrue(page.asXml().indexOf("encodeBegin") < page.asXml().indexOf(inputValue1));
+        assertTrue(page.asXml().indexOf(inputValue1) < page.asXml().indexOf(inputValue2));
+        assertTrue(page.asXml().indexOf(inputValue2) < page.asXml().indexOf(idText3));
+        assertTrue(page.asXml().indexOf("text3") < page.asXml().indexOf("encodeEnd"));
+    }
+
+    @Test
+    public void testTable() throws Exception {
+
+        /*
+         * Make sure the dynamically added table and table values are in place.
+         */
+        HtmlPage page = webClient.getPage(webUrl + "faces/table.xhtml");
+        assertTrue(page.asXml().indexOf("encodeBegin") < page.asXml().indexOf("Foo"));
+        assertTrue(page.asXml().indexOf("Foo") < page.asXml().indexOf("Bar"));
+        assertTrue(page.asXml().indexOf("Bar") < page.asXml().indexOf("Baz"));
+        assertTrue(page.asXml().indexOf("Baz") < page.asXml().indexOf("encodeEnd"));
+
+        /**
+         * After clicking make sure the added component is still in its proper place.
+         * Also verify the validation required error message appears as the third input
+         * component has required attribute set to true.
+         */
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("button");
+        page = button.click();
+        assertTrue(page.asXml().indexOf("encodeBegin") < page.asXml().indexOf("Foo"));
+        assertTrue(page.asXml().indexOf("Foo") < page.asXml().indexOf("Bar"));
+        assertTrue(page.asXml().indexOf("Bar") < page.asXml().indexOf("Baz"));
+        assertTrue(page.asXml().indexOf("Baz") < page.asXml().indexOf("encodeEnd"));
+    }
+
+    @Test
+    public void testRecursive() throws Exception {
+        /*
+         * Make sure the added component and nested component is in the proper place. 
+         */
+        HtmlPage page = webClient.getPage(webUrl + "faces/recursive.xhtml");
+        String text = page.asText();
+        int first = text.indexOf("Dynamically");
+        int next = text.indexOf("Dynamically", first + ("Dynamically").length());
+        assertTrue(first < next);
+
+        /**
+         * After clicking make sure the added component and nested component is still in 
+         * its proper place.
+         */
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("button");
+        page = button.click();
+        text = page.asText();
+        first = text.indexOf("Dynamically");
+        next = text.indexOf("Dynamically", first + ("Dynamically").length());
+        assertTrue(first < next);
+    }
+
+
+}
diff --git a/test/servlet30/dynamic/src/test/java/com/sun/faces/test/servlet30/dynamic/Issue2119IT.java b/test/servlet30/dynamic/src/test/java/com/sun/faces/test/servlet30/dynamic/Issue2119IT.java
new file mode 100644
index 0000000..1f6dbe8
--- /dev/null
+++ b/test/servlet30/dynamic/src/test/java/com/sun/faces/test/servlet30/dynamic/Issue2119IT.java
@@ -0,0 +1,85 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU General
+ * Public License Version 2 only ("GPL") or the Common Development and
+ * Distribution License("CDDL") (collectively, the "License"). You may not use
+ * this file except in compliance with the License. You can obtain a copy of the
+ * License at https://glassfish.dev.java.net/public/CDDLGPL_1_1.html or
+ * packager/legal/LICENSE.txt. See the License for the specific language
+ * governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception: Oracle designates this particular file as subject to
+ * the "Classpath" exception as provided by Oracle in the GPL Version 2 section
+ * of the License file that accompanied this code.
+ *
+ * Modifications: If applicable, add the following below the License Header,
+ * with the fields enclosed by brackets [] replaced by your own identifying
+ * information: "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s): If you wish your version of this file to be governed by only
+ * the CDDL or only the GPL Version 2, indicate your decision by adding
+ * "[Contributor] elects to include this software in this distribution under the
+ * [CDDL or GPL Version 2] license." If you don't indicate a single choice of
+ * license, a recipient has the option to distribute your version of this file
+ * under either the CDDL, the GPL Version 2 or to extend the choice of license
+ * to its licensees as provided above. However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright holder.
+ */
+package com.sun.faces.test.servlet30.dynamic;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class Issue2119IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testAddComponent() throws Exception {
+
+        /*
+         * Make sure the added component is contained within the outer component. 
+         */
+        HtmlPage page = webClient.getPage(webUrl + "faces/add1.xhtml");
+        String text = page.asText();
+        assertTrue(text.matches("(?s).*Component::encodeBegin\\s*Component::encodeEnd.*"));
+
+        /**
+         * After clicking make sure the added component and its child are still in their proper place.
+         */
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("button");
+        page = button.click();
+        text = page.asText();
+        assertTrue(text.matches("(?s).*Component::encodeBegin\\s*NEW-OUTPUT\\s*Component::encodeEnd.*"));
+
+        button = (HtmlSubmitInput) page.getElementById("button");
+        page = button.click();
+        text = page.asText();
+        assertTrue(text.matches("(?s).*Component::encodeBegin\\s*NEW-OUTPUT\\s*Component::encodeEnd.*"));
+    }
+}
diff --git a/test/servlet30/dynamic/src/test/java/com/sun/faces/test/servlet30/dynamic/Issue2121IT.java b/test/servlet30/dynamic/src/test/java/com/sun/faces/test/servlet30/dynamic/Issue2121IT.java
new file mode 100644
index 0000000..b0bd58b
--- /dev/null
+++ b/test/servlet30/dynamic/src/test/java/com/sun/faces/test/servlet30/dynamic/Issue2121IT.java
@@ -0,0 +1,81 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU General
+ * Public License Version 2 only ("GPL") or the Common Development and
+ * Distribution License("CDDL") (collectively, the "License"). You may not use
+ * this file except in compliance with the License. You can obtain a copy of the
+ * License at https://glassfish.dev.java.net/public/CDDLGPL_1_1.html or
+ * packager/legal/LICENSE.txt. See the License for the specific language
+ * governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception: Oracle designates this particular file as subject to
+ * the "Classpath" exception as provided by Oracle in the GPL Version 2 section
+ * of the License file that accompanied this code.
+ *
+ * Modifications: If applicable, add the following below the License Header,
+ * with the fields enclosed by brackets [] replaced by your own identifying
+ * information: "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s): If you wish your version of this file to be governed by only
+ * the CDDL or only the GPL Version 2, indicate your decision by adding
+ * "[Contributor] elects to include this software in this distribution under the
+ * [CDDL or GPL Version 2] license." If you don't indicate a single choice of
+ * license, a recipient has the option to distribute your version of this file
+ * under either the CDDL, the GPL Version 2 or to extend the choice of license
+ * to its licensees as provided above. However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright holder.
+ */
+package com.sun.faces.test.servlet30.dynamic;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class Issue2121IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testAddComponent() throws Exception {
+        // First assert: initial page render - no child added.
+        HtmlPage page = webClient.getPage(webUrl + "faces/add2.xhtml");
+        String text = page.asText();
+        assertTrue(!text.endsWith("AddComponentOUTPUT"));
+
+        // Second assert: first postback - single child added.
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("add");
+        page = button.click();
+        text = page.asText();
+        assertTrue(text.endsWith("AddComponentOUTPUT"));
+
+        // Third assert: first postback - another child added.
+        button = (HtmlSubmitInput) page.getElementById("add");
+        page = button.click();
+        text = page.asText();
+        assertTrue(text.endsWith("AddComponentOUTPUTOUTPUT"));
+    }
+}
diff --git a/test/servlet30/dynamic/src/test/java/com/sun/faces/test/servlet30/dynamic/Issue2373IT.java b/test/servlet30/dynamic/src/test/java/com/sun/faces/test/servlet30/dynamic/Issue2373IT.java
new file mode 100644
index 0000000..2264280
--- /dev/null
+++ b/test/servlet30/dynamic/src/test/java/com/sun/faces/test/servlet30/dynamic/Issue2373IT.java
@@ -0,0 +1,170 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU General
+ * Public License Version 2 only ("GPL") or the Common Development and
+ * Distribution License("CDDL") (collectively, the "License"). You may not use
+ * this file except in compliance with the License. You can obtain a copy of the
+ * License at https://glassfish.dev.java.net/public/CDDLGPL_1_1.html or
+ * packager/legal/LICENSE.txt. See the License for the specific language
+ * governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception: Oracle designates this particular file as subject to
+ * the "Classpath" exception as provided by Oracle in the GPL Version 2 section
+ * of the License file that accompanied this code.
+ *
+ * Modifications: If applicable, add the following below the License Header,
+ * with the fields enclosed by brackets [] replaced by your own identifying
+ * information: "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s): If you wish your version of this file to be governed by only
+ * the CDDL or only the GPL Version 2, indicate your decision by adding
+ * "[Contributor] elects to include this software in this distribution under the
+ * [CDDL or GPL Version 2] license." If you don't indicate a single choice of
+ * license, a recipient has the option to distribute your version of this file
+ * under either the CDDL, the GPL Version 2 or to extend the choice of license
+ * to its licensees as provided above. However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright holder.
+ */
+package com.sun.faces.test.servlet30.dynamic;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class Issue2373IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testMoveComponent() throws Exception {
+
+        /*
+         * Make sure the Moveable HELLO is before the first panelBox11
+         */
+        HtmlPage page = webClient.getPage(webUrl + "faces/moveComponent.xhtml");
+        assertTrue(page.asXml().indexOf("Moveable HELLO text") < page.asXml().indexOf("form1:panelBox11"));
+
+        /**
+         * After clicking make sure it is inside the first panelBox11
+         */
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("form1:commandButton11");
+        page = button.click();
+        assertTrue(page.asXml().indexOf("Moveable HELLO text") > page.asXml().indexOf("form1:panelBox11"));
+        assertTrue(page.asXml().indexOf("Moveable HELLO text") < page.asXml().indexOf("form1:commandButton11"));
+
+        /**
+         * After clicking the same button make sure it is still there.
+         */
+        button = (HtmlSubmitInput) page.getElementById("form1:commandButton11");
+        page = button.click();
+        assertTrue(page.asXml().indexOf("Moveable HELLO text") > page.asXml().indexOf("form1:panelBox11"));
+        assertTrue(page.asXml().indexOf("Moveable HELLO text") < page.asXml().indexOf("form1:commandButton11"));
+    }
+
+    @Test
+    public void testMoveComponent2() throws Exception {
+
+        /*
+         * Make sure the Moveable HELLO is before the first panelBox11
+         */
+        HtmlPage page = webClient.getPage(webUrl + "faces/moveComponent.xhtml");
+        assertTrue(page.asXml().indexOf("Moveable HELLO text") < page.asXml().indexOf("form1:subview1:panelBox12"));
+
+        /**
+         * After clicking make sure it is inside the first panelBox11
+         */
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("form1:subview1:commandButton12");
+        page = button.click();
+        assertTrue(page.asXml().indexOf("Moveable HELLO text") > page.asXml().indexOf("form1:subview1:panelBox12"));
+        assertTrue(page.asXml().indexOf("Moveable HELLO text") < page.asXml().indexOf("form1:subview1:commandButton12"));
+
+        /**
+         * And now move it to the first panel box.
+         */
+        button = (HtmlSubmitInput) page.getElementById("form1:commandButton11");
+        page = button.click();
+        assertTrue(page.asXml().indexOf("Moveable HELLO text") > page.asXml().indexOf("form1:panelBox11"));
+        assertTrue(page.asXml().indexOf("Moveable HELLO text") < page.asXml().indexOf("form1:commandButton11"));
+    }
+
+    @Test
+    public void testMoveComponent3() throws Exception {
+        /*
+         * Make sure the Moveable HELLO is before the first panelBox11
+         */
+        HtmlPage page = webClient.getPage(webUrl + "faces/moveComponent.xhtml");
+        assertTrue(page.asXml().indexOf("Moveable HELLO text") < page.asXml().indexOf("form1:subview1:panelBox12"));
+
+        for (int i = 0; i < 10; i++) {
+            /**
+             * After clicking make sure it is inside the first panelBox11
+             */
+            HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("form1:subview1:commandButton12");
+            page = button.click();
+            assertTrue(page.asXml().indexOf("Moveable HELLO text") > page.asXml().indexOf("form1:subview1:panelBox12"));
+            assertTrue(page.asXml().indexOf("Moveable HELLO text") < page.asXml().indexOf("form1:subview1:commandButton12"));
+
+            /**
+             * And now move it to the first panel box.
+             */
+            button = (HtmlSubmitInput) page.getElementById("form1:commandButton11");
+            page = button.click();
+            assertTrue(page.asXml().indexOf("Moveable HELLO text") > page.asXml().indexOf("form1:panelBox11"));
+            assertTrue(page.asXml().indexOf("Moveable HELLO text") < page.asXml().indexOf("form1:commandButton11"));
+
+            /**
+             * And now move it to the third panel box.
+             */
+            button = (HtmlSubmitInput) page.getElementById("form1:subview2:commandButton13");
+            page = button.click();
+            assertTrue(page.asXml().indexOf("Moveable HELLO text") > page.asXml().indexOf("form1:subview2:panelBox11"));
+            assertTrue(page.asXml().indexOf("Moveable HELLO text") < page.asXml().indexOf("form1:subview2:commandButton13"));
+
+            /**
+             * And now move it to the fourth panel box.
+             */
+            button = (HtmlSubmitInput) page.getElementById("form1:subview2:subview2b:commandButton14");
+            page = button.click();
+            assertTrue(page.asXml().indexOf("Moveable HELLO text") > page.asXml().indexOf("form1:subview2:subview2b:panelBox4"));
+            assertTrue(page.asXml().indexOf("Moveable HELLO text") < page.asXml().indexOf("form1:subview2:subview2b:commandButton14"));
+        }
+    }
+    
+    @Test
+    public void testToggle1() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/toggle.xhtml");
+        for(int i=0; i<10; i++) {
+            String text = page.asXml();
+            assertTrue(text.indexOf("Manually added child2") < text.indexOf("Manually added child1"));
+            HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("form1:button");
+            page = button.click();
+            text = page.asXml();
+            assertTrue(text.indexOf("Manually added child1") < text.indexOf("Manually added child2"));
+            button = (HtmlSubmitInput) page.getElementById("form1:button");
+            page = button.click();
+        }
+    }
+}
diff --git a/test/servlet30/dynamic/src/test/java/com/sun/faces/test/servlet30/dynamic/Issue2395IT.java b/test/servlet30/dynamic/src/test/java/com/sun/faces/test/servlet30/dynamic/Issue2395IT.java
new file mode 100644
index 0000000..defdb3a
--- /dev/null
+++ b/test/servlet30/dynamic/src/test/java/com/sun/faces/test/servlet30/dynamic/Issue2395IT.java
@@ -0,0 +1,108 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU General
+ * Public License Version 2 only ("GPL") or the Common Development and
+ * Distribution License("CDDL") (collectively, the "License"). You may not use
+ * this file except in compliance with the License. You can obtain a copy of the
+ * License at https://glassfish.dev.java.net/public/CDDLGPL_1_1.html or
+ * packager/legal/LICENSE.txt. See the License for the specific language
+ * governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception: Oracle designates this particular file as subject to
+ * the "Classpath" exception as provided by Oracle in the GPL Version 2 section
+ * of the License file that accompanied this code.
+ *
+ * Modifications: If applicable, add the following below the License Header,
+ * with the fields enclosed by brackets [] replaced by your own identifying
+ * information: "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s): If you wish your version of this file to be governed by only
+ * the CDDL or only the GPL Version 2, indicate your decision by adding
+ * "[Contributor] elects to include this software in this distribution under the
+ * [CDDL or GPL Version 2] license." If you don't indicate a single choice of
+ * license, a recipient has the option to distribute your version of this file
+ * under either the CDDL, the GPL Version 2 or to extend the choice of license
+ * to its licensees as provided above. However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright holder.
+ */
+package com.sun.faces.test.servlet30.dynamic;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class Issue2395IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testAdd() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/issue2395.xhtml");
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("form:add");
+        page = button.click();
+        assertTrue(page.asXml().indexOf("I was dynamically added") != -1);
+    }
+
+    @Test
+    public void testAddRemove() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/issue2395.xhtml");
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("form:addRemove");
+        page = button.click();
+        assertTrue(page.asXml().indexOf("I was dynamically added") == -1);
+    }
+
+    @Test
+    public void testAddRemoveAdd() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/issue2395.xhtml");
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("form:addRemoveAdd");
+        page = button.click();
+        assertTrue(page.asXml().indexOf("I was dynamically added") != -1);
+    }
+
+    @Test
+    public void testRemove() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/issue2395.xhtml");
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("form:remove");
+        page = button.click();
+        assertTrue(page.asXml().indexOf("Remove Me") == -1);
+    }
+
+    @Test
+    public void testRemoveAdd() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/issue2395.xhtml");
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("form:removeAdd");
+        page = button.click();
+        assertTrue(page.asXml().indexOf("Remove Me") != -1);
+    }
+
+    @Test
+    public void testRemoveAddRemove() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/issue2395.xhtml");
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("form:removeAddRemove");
+        page = button.click();
+        assertTrue(page.asXml().indexOf("Remove Me") == -1);
+    }
+}
diff --git a/test/servlet30/dynamic/src/test/java/com/sun/faces/test/servlet30/dynamic/Issue2471IT.java b/test/servlet30/dynamic/src/test/java/com/sun/faces/test/servlet30/dynamic/Issue2471IT.java
new file mode 100644
index 0000000..18c136d
--- /dev/null
+++ b/test/servlet30/dynamic/src/test/java/com/sun/faces/test/servlet30/dynamic/Issue2471IT.java
@@ -0,0 +1,69 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU General
+ * Public License Version 2 only ("GPL") or the Common Development and
+ * Distribution License("CDDL") (collectively, the "License"). You may not use
+ * this file except in compliance with the License. You can obtain a copy of the
+ * License at https://glassfish.dev.java.net/public/CDDLGPL_1_1.html or
+ * packager/legal/LICENSE.txt. See the License for the specific language
+ * governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception: Oracle designates this particular file as subject to
+ * the "Classpath" exception as provided by Oracle in the GPL Version 2 section
+ * of the License file that accompanied this code.
+ *
+ * Modifications: If applicable, add the following below the License Header,
+ * with the fields enclosed by brackets [] replaced by your own identifying
+ * information: "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s): If you wish your version of this file to be governed by only
+ * the CDDL or only the GPL Version 2, indicate your decision by adding
+ * "[Contributor] elects to include this software in this distribution under the
+ * [CDDL or GPL Version 2] license." If you don't indicate a single choice of
+ * license, a recipient has the option to distribute your version of this file
+ * under either the CDDL, the GPL Version 2 or to extend the choice of license
+ * to its licensees as provided above. However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright holder.
+ */
+package com.sun.faces.test.servlet30.dynamic;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+import org.junit.Ignore;
+
+public class Issue2471IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testIssue2471() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/issue2471.xhtml");
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("form:submit");
+        page = button.click();
+        assertEquals(200, page.getWebResponse().getStatusCode());
+    }
+}
diff --git a/test/servlet30/dynamic/src/test/java/com/sun/faces/test/servlet30/dynamic/Issue2888IT.java b/test/servlet30/dynamic/src/test/java/com/sun/faces/test/servlet30/dynamic/Issue2888IT.java
new file mode 100644
index 0000000..604af4e
--- /dev/null
+++ b/test/servlet30/dynamic/src/test/java/com/sun/faces/test/servlet30/dynamic/Issue2888IT.java
@@ -0,0 +1,80 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU General
+ * Public License Version 2 only ("GPL") or the Common Development and
+ * Distribution License("CDDL") (collectively, the "License"). You may not use
+ * this file except in compliance with the License. You can obtain a copy of the
+ * License at https://glassfish.dev.java.net/public/CDDLGPL_1_1.html or
+ * packager/legal/LICENSE.txt. See the License for the specific language
+ * governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception: Oracle designates this particular file as subject to
+ * the "Classpath" exception as provided by Oracle in the GPL Version 2 section
+ * of the License file that accompanied this code.
+ *
+ * Modifications: If applicable, add the following below the License Header,
+ * with the fields enclosed by brackets [] replaced by your own identifying
+ * information: "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s): If you wish your version of this file to be governed by only
+ * the CDDL or only the GPL Version 2, indicate your decision by adding
+ * "[Contributor] elects to include this software in this distribution under the
+ * [CDDL or GPL Version 2] license." If you don't indicate a single choice of
+ * license, a recipient has the option to distribute your version of this file
+ * under either the CDDL, the GPL Version 2 or to extend the choice of license
+ * to its licensees as provided above. However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright holder.
+ */
+package com.sun.faces.test.servlet30.dynamic;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class Issue2888IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testMoveComponent() throws Exception {
+
+        /*
+         * Make sure the moved component is contained within the outer component. 
+         */
+        HtmlPage page = webClient.getPage(webUrl + "faces/moveComponent1.xhtml");
+        String text = page.asText();
+        assertTrue(text.matches("(?s).*Component::encodeBegin\\s*FooBar\\s*Component::encodeEnd.*"));
+
+        /**
+         * After clicking make sure the moved component is still in proper place.
+         */
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("button");
+        page = button.click();
+        text = page.asText();
+        assertTrue(text.matches("(?s).*Component::encodeBegin\\s*FooBar\\s*Component::encodeEnd.*"));
+    }
+}
diff --git a/test/servlet30/dynamic/src/test/java/com/sun/faces/test/servlet30/dynamic/Issue3310IT.java b/test/servlet30/dynamic/src/test/java/com/sun/faces/test/servlet30/dynamic/Issue3310IT.java
new file mode 100644
index 0000000..e2b9e5e
--- /dev/null
+++ b/test/servlet30/dynamic/src/test/java/com/sun/faces/test/servlet30/dynamic/Issue3310IT.java
@@ -0,0 +1,74 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU General
+ * Public License Version 2 only ("GPL") or the Common Development and
+ * Distribution License("CDDL") (collectively, the "License"). You may not use
+ * this file except in compliance with the License. You can obtain a copy of the
+ * License at https://glassfish.dev.java.net/public/CDDLGPL_1_1.html or
+ * packager/legal/LICENSE.txt. See the License for the specific language
+ * governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception: Oracle designates this particular file as subject to
+ * the "Classpath" exception as provided by Oracle in the GPL Version 2 section
+ * of the License file that accompanied this code.
+ *
+ * Modifications: If applicable, add the following below the License Header,
+ * with the fields enclosed by brackets [] replaced by your own identifying
+ * information: "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s): If you wish your version of this file to be governed by only
+ * the CDDL or only the GPL Version 2, indicate your decision by adding
+ * "[Contributor] elects to include this software in this distribution under the
+ * [CDDL or GPL Version 2] license." If you don't indicate a single choice of
+ * license, a recipient has the option to distribute your version of this file
+ * under either the CDDL, the GPL Version 2 or to extend the choice of license
+ * to its licensees as provided above. However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright holder.
+ */
+package com.sun.faces.test.servlet30.dynamic;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlElement;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.After;
+import static org.junit.Assert.assertTrue;
+import org.junit.Before;
+import org.junit.Test;
+
+public class Issue3310IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testMoveComponent() throws Exception {
+
+        HtmlPage page = webClient.getPage(webUrl + "faces/transientFirstChild.xhtml");
+        HtmlElement button = (HtmlElement) page.getHtmlElementById("form:add");
+        page = button.click();
+        webClient.waitForBackgroundJavaScript(60000);
+        button = page.getHtmlElementById("form:reload");
+        page = button.click();
+        webClient.waitForBackgroundJavaScript(60000);
+        assertTrue(page.asXml().indexOf("transient first child") < 
+                page.asXml().indexOf("dynamically added; now perform a reload"));
+    }
+}
diff --git a/test/servlet30/dynamic/src/test/java/com/sun/faces/test/servlet30/dynamic/Issue3332IT.java b/test/servlet30/dynamic/src/test/java/com/sun/faces/test/servlet30/dynamic/Issue3332IT.java
new file mode 100644
index 0000000..ff98496
--- /dev/null
+++ b/test/servlet30/dynamic/src/test/java/com/sun/faces/test/servlet30/dynamic/Issue3332IT.java
@@ -0,0 +1,74 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU General
+ * Public License Version 2 only ("GPL") or the Common Development and
+ * Distribution License("CDDL") (collectively, the "License"). You may not use
+ * this file except in compliance with the License. You can obtain a copy of the
+ * License at https://glassfish.dev.java.net/public/CDDLGPL_1_1.html or
+ * packager/legal/LICENSE.txt. See the License for the specific language
+ * governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception: Oracle designates this particular file as subject to
+ * the "Classpath" exception as provided by Oracle in the GPL Version 2 section
+ * of the License file that accompanied this code.
+ *
+ * Modifications: If applicable, add the following below the License Header,
+ * with the fields enclosed by brackets [] replaced by your own identifying
+ * information: "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s): If you wish your version of this file to be governed by only
+ * the CDDL or only the GPL Version 2, indicate your decision by adding
+ * "[Contributor] elects to include this software in this distribution under the
+ * [CDDL or GPL Version 2] license." If you don't indicate a single choice of
+ * license, a recipient has the option to distribute your version of this file
+ * under either the CDDL, the GPL Version 2 or to extend the choice of license
+ * to its licensees as provided above. However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright holder.
+ */
+package com.sun.faces.test.servlet30.dynamic;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlElement;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.After;
+import static org.junit.Assert.assertTrue;
+import org.junit.Before;
+import org.junit.Test;
+
+public class Issue3332IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testMoveComponent2() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/moveComponent2.xhtml");
+        
+        if (page.asXml().contains("State Saving Mode: PSS")) {        
+            assertTrue(page.asXml().indexOf("<b>") < page.asXml().indexOf("This should be bold"));
+            assertTrue(page.asXml().indexOf("</b>") > page.asXml().indexOf("This should be bold"));
+            HtmlElement button = (HtmlElement) page.getHtmlElementById("updateForm:submit");
+            page = button.click();
+            assertTrue(page.asXml().indexOf("<b>") < page.asXml().indexOf("The text should remain bold"));
+            assertTrue(page.asXml().indexOf("</b>") > page.asXml().indexOf("The text should remain bold"));
+        }
+    }
+}
diff --git a/test/servlet30/el/basic/nbactions.xml b/test/servlet30/el/basic/nbactions.xml
new file mode 100644
index 0000000..ad5c645
--- /dev/null
+++ b/test/servlet30/el/basic/nbactions.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<actions>
+        <action>
+            <actionName>debug.test.single</actionName>
+            <goals>
+                <goal>test-compile</goal>
+                <goal>surefire:test</goal>
+            </goals>
+            <properties>
+                <integration.url>http://localhost:8080/test-servlet30-el-basic/</integration.url>
+                <jpda.listen>true</jpda.listen>
+                <maven.surefire.debug>-Xdebug -Xrunjdwp:transport=dt_socket,server=n,address=${jpda.address}</maven.surefire.debug>
+                <forkMode>once</forkMode>
+                <test>${packageClassName}</test>
+            </properties>
+        </action>
+    </actions>
diff --git a/test/servlet30/el/basic/pom.xml b/test/servlet30/el/basic/pom.xml
new file mode 100644
index 0000000..83461d4
--- /dev/null
+++ b/test/servlet30/el/basic/pom.xml
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.servlet30.el</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <artifactId>el</artifactId>
+    <packaging>war</packaging>
+    <name>Mojarra ${project.version} - Test - Servlet 3.0 - EL - Basic</name>
+    <build>
+        <finalName>test-servlet30-el-basic</finalName>
+    </build>
+    <properties>
+        <netbeans.hint.deploy.server>gfv3ee6</netbeans.hint.deploy.server>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/test/servlet30/el/basic/src/main/java/com/sun/faces/test/servlet30/el/basic/GetFeatureDescriptorsBean.java b/test/servlet30/el/basic/src/main/java/com/sun/faces/test/servlet30/el/basic/GetFeatureDescriptorsBean.java
new file mode 100644
index 0000000..ed3b3d1
--- /dev/null
+++ b/test/servlet30/el/basic/src/main/java/com/sun/faces/test/servlet30/el/basic/GetFeatureDescriptorsBean.java
@@ -0,0 +1,84 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.test.servlet30.el.basic;
+
+import java.beans.FeatureDescriptor;
+import java.io.Serializable;
+import java.util.Iterator;
+import javax.el.ELContext;
+import javax.el.ELResolver;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.NoneScoped;
+import javax.faces.context.FacesContext;
+
+ at ManagedBean
+ at NoneScoped
+public class GetFeatureDescriptorsBean implements Serializable {
+    private static final long serialVersionUID = -8697181848858606709L;
+    
+    
+    String[] implictNames = new String[]{
+        "application", "applicationScope", "cc", "component", "cookie", "facesContext",
+        "flowScope",
+        "header", "headerValues", "initParam", "param", "paramValues",
+        "request", "requestScope", "resource", "session", "sessionScope", 
+        "view", "viewScope" };
+    
+    public String getTopLevelVariables() {
+        String result = "FAILED";
+        FacesContext context = FacesContext.getCurrentInstance();
+        ELResolver elResolver = context.getApplication().getELResolver();
+        ELContext elContext = context.getELContext();
+        
+        Iterator<FeatureDescriptor> featureDescriptors = elResolver.getFeatureDescriptors(elContext, null);
+        StringBuilder builder = new StringBuilder();
+        while (featureDescriptors.hasNext()) {
+            FeatureDescriptor cur = featureDescriptors.next();
+            builder.append("<p>").append(cur.getName()).append("</p>");
+        }
+        if (0 < builder.length()) {
+            result = builder.toString();
+        }
+        
+        return result;
+    }
+        
+}
diff --git a/test/servlet30/el/basic/src/main/java/com/sun/faces/test/servlet30/el/basic/Issue2989Bean.java b/test/servlet30/el/basic/src/main/java/com/sun/faces/test/servlet30/el/basic/Issue2989Bean.java
new file mode 100644
index 0000000..8e60add
--- /dev/null
+++ b/test/servlet30/el/basic/src/main/java/com/sun/faces/test/servlet30/el/basic/Issue2989Bean.java
@@ -0,0 +1,152 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.test.servlet30.el.basic;
+
+import java.util.Date;
+import javax.el.ELContext;
+import javax.el.ELResolver;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.NoneScoped;
+import javax.faces.context.ExternalContext;
+import javax.faces.context.FacesContext;
+
+ at ManagedBean
+ at NoneScoped
+public class Issue2989Bean {
+    
+    private static final int FACES_PHASE = 0;
+    
+    
+    private ELContext[] getELContexts(FacesContext context) {
+        
+        ELContext[] contexts = new ELContext[1];
+        contexts[FACES_PHASE] = context.getELContext();
+        
+
+        return contexts;
+
+    }
+    
+    private ELResolver[] getELResolvers(ELContext[] contexts) {
+        
+        ELResolver[] resolvers = new ELResolver[1];
+        resolvers[FACES_PHASE] = contexts[FACES_PHASE].getELResolver();
+        
+        return resolvers;
+        
+    }
+    
+    public String getTestResult() {
+        FacesContext context = FacesContext.getCurrentInstance();
+        
+        ELContext[] elContexts = getELContexts(context);
+        ELResolver[] resolvers = getELResolvers(elContexts);
+        boolean passed = true;
+        
+        for (int i = 0, size = resolvers.length; i < size; i++) {
+            
+            // if an object is associated with the name "description" in
+            // either request, session, or application return that object
+            // (searching in that order)
+            ExternalContext extContext = context.getExternalContext();
+            extContext.getRequestMap().put("description", "request");
+            extContext.getSessionMap().put("description", "session");
+            extContext.getApplicationMap().put("description", "application");
+            
+            String result = (String)
+                    resolvers[i].getValue(elContexts[i], null, "description");
+            
+            if (!"request".equals(result)) {
+                passed = false;
+                throw new IllegalStateException("Test FAILED.  Expected managed bean resolver to " +
+                        "search request scope first, but instead it searched" +
+                        result);
+            }
+            
+            extContext.getRequestMap().remove("description");
+            
+            result = (String)
+                    resolvers[i].getValue(elContexts[i], null, "description");
+            
+            if (!"session".equals(result)) {
+                passed = false;
+                throw new IllegalStateException("Test FAILED.  Expected managed bean resolver to " +
+                        "search session scope first, but instead it searched" +
+                        result);
+            }
+            
+            extContext.getSessionMap().remove("description");
+            
+            result = (String)
+                resolvers[i].getValue(elContexts[i], null, "description");
+
+            if (!"application".equals(result)) {
+                passed = false;
+                throw new IllegalStateException("Test FAILED.  Expected managed bean resolver to " +
+                            "search application scope first, but instead it searched" +
+                            result);
+            }
+
+            extContext.getApplicationMap().remove("description");
+
+            Date date = (Date)
+                resolvers[i].getValue(elContexts[i], null, "description");
+
+            if (date == null) {
+                passed = false;
+                throw new IllegalStateException("Test FAILED.  ELResolver.getValue() with a null " +
+                        "base and a property matching the name of a managed" +
+                            " bean did not result in the bean being instantiated" +
+                            " and returned.");
+            } else {
+                if (!elContexts[i].isPropertyResolved()) {
+                    passed = false;
+                    throw new IllegalStateException("Test FAILED.  A new managed bean was created," +
+                                " but isPropertyResolved() returned false.");
+                }
+            }
+            passed = true;
+        }        
+
+        return passed ? "PASSED" : "FAILED";
+    }
+    
+}
diff --git a/test/servlet30/el/basic/src/main/java/com/sun/faces/test/servlet30/el/basic/SetNullBean.java b/test/servlet30/el/basic/src/main/java/com/sun/faces/test/servlet30/el/basic/SetNullBean.java
new file mode 100644
index 0000000..8eb8111
--- /dev/null
+++ b/test/servlet30/el/basic/src/main/java/com/sun/faces/test/servlet30/el/basic/SetNullBean.java
@@ -0,0 +1,203 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.el.basic;
+
+import java.io.Serializable;
+import javax.el.ELException;
+import javax.el.ValueExpression;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.RequestScoped;
+import javax.faces.context.FacesContext;
+import javax.faces.el.ValueBinding;
+
+ at ManagedBean(name = "setNullBean")
+ at RequestScoped
+public class SetNullBean implements Serializable {
+
+    public String getTest1() {
+        FacesContext facesContext = FacesContext.getCurrentInstance();
+        SetNullTestBean setNullTestBean = new SetNullTestBean();
+
+        facesContext.getExternalContext().
+                getSessionMap().put("setNullTestBean", setNullTestBean);
+
+        ValueBinding valueBinding = facesContext.
+                getApplication().createValueBinding("#{sessionScope.setNullTestBean.one}");
+        valueBinding.setValue(facesContext, null);
+
+        return setNullTestBean.getOne() == null ? "SUCCESS" : "FAILED";
+    }
+
+    public String getTest2() {
+        FacesContext facesContext = FacesContext.getCurrentInstance();
+        SetNullTestBean setNullTestBean = new SetNullTestBean();
+        SetNullInnerTestBean inner = new SetNullInnerTestBean();
+
+        facesContext.getExternalContext().
+                getSessionMap().put("setNullTestBean", setNullTestBean);
+
+        ValueBinding valueBinding = facesContext.
+                getApplication().createValueBinding("#{sessionScope.setNullTestBean.inner}");
+        valueBinding.setValue(facesContext, inner);
+
+        return setNullTestBean.getInner() != null ? "SUCCESS" : "FAILED";
+    }
+
+    public String getTest3() {
+        FacesContext facesContext = FacesContext.getCurrentInstance();
+        SetNullTestBean setNullTestBean = new SetNullTestBean();
+        SetNullInnerTestBean inner = new SetNullInnerTestBean();
+
+        facesContext.getExternalContext().
+                getSessionMap().put("setNullTestBean", setNullTestBean);
+
+        ValueBinding valueBinding = facesContext.
+                getApplication().createValueBinding("#{sessionScope.setNullTestBean.inner}");
+        valueBinding.setValue(facesContext, inner);
+
+        valueBinding = facesContext.
+                getApplication().createValueBinding("#{sessionScope.setNullTestBean.inner}");
+        valueBinding.setValue(facesContext, null);
+
+        return setNullTestBean.getInner() == null ? "SUCCESS" : "FAILED";
+    }
+
+    public String getTest4() {
+        FacesContext facesContext = FacesContext.getCurrentInstance();
+        SetNullTestBean setNullTestBean = new SetNullTestBean();
+        SetNullInnerTestBean inner = new SetNullInnerTestBean();
+
+        facesContext.getExternalContext().
+                getSessionMap().put("setNullTestBean", setNullTestBean);
+
+        ValueBinding valueBinding = facesContext.
+                getApplication().createValueBinding("#{sessionScope.setNullTestBean.inner}");
+        valueBinding.setValue(facesContext, inner);
+
+        valueBinding = facesContext.
+                getApplication().createValueBinding("#{sessionScope.setNullTestBean.inner}");
+        valueBinding.setValue(facesContext, inner);
+
+        boolean exceptionThrown = false;
+        valueBinding = facesContext.
+                getApplication().createValueBinding("#{sessionScope.setNullTestBean.inner.test4}");
+        try {
+            valueBinding.setValue(facesContext, null);
+        } catch (javax.faces.el.EvaluationException ee) {
+            exceptionThrown = true;
+        }
+        return exceptionThrown ? "SUCCESS" : "FAILED";
+    }
+    
+    public String getTest5() {
+        FacesContext facesContext = FacesContext.getCurrentInstance();
+        SetNullTestBean setNullTestBean = new SetNullTestBean();
+
+        facesContext.getExternalContext().
+                getSessionMap().put("setNullTestBean", setNullTestBean);
+
+        ValueExpression valueExpression = facesContext.getApplication().getExpressionFactory().
+                createValueExpression(facesContext.getELContext(), "#{sessionScope.setNullTestBean.one}", Object.class);
+        valueExpression.setValue(facesContext.getELContext(), null);
+
+        return setNullTestBean.getOne() == null ? "SUCCESS" : "FAILED";
+    }
+
+    public String getTest6() {
+        FacesContext facesContext = FacesContext.getCurrentInstance();
+        SetNullTestBean setNullTestBean = new SetNullTestBean();
+        SetNullInnerTestBean inner = new SetNullInnerTestBean();
+
+        facesContext.getExternalContext().
+                getSessionMap().put("setNullTestBean", setNullTestBean);
+
+        ValueExpression valueExpression = facesContext.getApplication().getExpressionFactory().
+                createValueExpression(facesContext.getELContext(), "#{sessionScope.setNullTestBean.inner}", Object.class);
+        valueExpression.setValue(facesContext.getELContext(), inner);
+
+        return setNullTestBean.getInner() != null ? "SUCCESS" : "FAILED";
+    }
+
+    public String getTest7() {
+        FacesContext facesContext = FacesContext.getCurrentInstance();
+        SetNullTestBean setNullTestBean = new SetNullTestBean();
+        SetNullInnerTestBean inner = new SetNullInnerTestBean();
+
+        facesContext.getExternalContext().
+                getSessionMap().put("setNullTestBean", setNullTestBean);
+
+        ValueExpression valueExpression = facesContext.getApplication().getExpressionFactory().
+                createValueExpression(facesContext.getELContext(), "#{sessionScope.setNullTestBean.inner}", Object.class);
+        valueExpression.setValue(facesContext.getELContext(), inner);
+        
+        valueExpression = facesContext.getApplication().getExpressionFactory().
+                createValueExpression(facesContext.getELContext(), "#{sessionScope.setNullTestBean.inner}", Object.class);
+        valueExpression.setValue(facesContext.getELContext(), null);
+
+        return setNullTestBean.getInner() == null ? "SUCCESS" : "FAILED";
+    }
+
+    public String getTest8() {
+        FacesContext facesContext = FacesContext.getCurrentInstance();
+        SetNullTestBean setNullTestBean = new SetNullTestBean();
+        SetNullInnerTestBean inner = new SetNullInnerTestBean();
+
+        facesContext.getExternalContext().
+                getSessionMap().put("setNullTestBean", setNullTestBean);
+
+        ValueExpression valueExpression = facesContext.getApplication().getExpressionFactory().
+                createValueExpression(facesContext.getELContext(), "#{sessionScope.setNullTestBean.inner}", Object.class);
+        valueExpression.setValue(facesContext.getELContext(), inner);
+
+        valueExpression = facesContext.getApplication().getExpressionFactory().
+                createValueExpression(facesContext.getELContext(), "#{sessionScope.setNullTestBean.inner}", Object.class);
+        valueExpression.setValue(facesContext.getELContext(), inner);
+
+        boolean exceptionThrown = false;
+        valueExpression = facesContext.getApplication().getExpressionFactory().
+                createValueExpression(facesContext.getELContext(), "#{sessionScope.setNullTestBean.inner.test4}", Object.class);
+        try {
+            valueExpression.setValue(facesContext.getELContext(), null);
+        } catch (ELException ee) {
+            exceptionThrown = true;
+        }
+        return exceptionThrown ? "SUCCESS" : "FAILED";
+    }
+}
diff --git a/test/servlet30/el/basic/src/main/java/com/sun/faces/test/servlet30/el/basic/SetNullInnerTestBean.java b/test/servlet30/el/basic/src/main/java/com/sun/faces/test/servlet30/el/basic/SetNullInnerTestBean.java
new file mode 100644
index 0000000..eec6827
--- /dev/null
+++ b/test/servlet30/el/basic/src/main/java/com/sun/faces/test/servlet30/el/basic/SetNullInnerTestBean.java
@@ -0,0 +1,49 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.el.basic;
+
+import java.io.Serializable;
+
+public class SetNullInnerTestBean implements Serializable {
+
+    public String getTest4() {
+        return "You should not see me!";
+    }
+}
diff --git a/test/servlet30/el/basic/src/main/java/com/sun/faces/test/servlet30/el/basic/SetNullTestBean.java b/test/servlet30/el/basic/src/main/java/com/sun/faces/test/servlet30/el/basic/SetNullTestBean.java
new file mode 100644
index 0000000..301610a
--- /dev/null
+++ b/test/servlet30/el/basic/src/main/java/com/sun/faces/test/servlet30/el/basic/SetNullTestBean.java
@@ -0,0 +1,64 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.el.basic;
+
+import java.io.Serializable;
+
+public class SetNullTestBean implements Serializable {
+
+    private SetNullInnerTestBean inner;
+    private Object one;
+
+    public SetNullInnerTestBean getInner() {
+        return this.inner;
+    }
+
+    public Object getOne() {
+        return this.one;
+    }
+
+    public void setInner(SetNullInnerTestBean inner) {
+        this.inner = inner;
+    }
+
+    public void setOne(Object one) {
+        this.one = one;
+    }
+}
diff --git a/test/servlet30/el/basic/src/main/java/com/sun/faces/test/servlet30/el/basic/ValueBindingSetBean.java b/test/servlet30/el/basic/src/main/java/com/sun/faces/test/servlet30/el/basic/ValueBindingSetBean.java
new file mode 100644
index 0000000..9f678cf
--- /dev/null
+++ b/test/servlet30/el/basic/src/main/java/com/sun/faces/test/servlet30/el/basic/ValueBindingSetBean.java
@@ -0,0 +1,106 @@
+package com.sun.faces.test.servlet30.el.basic;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.RequestScoped;
+import javax.faces.context.FacesContext;
+import javax.faces.el.ValueBinding;
+
+ at ManagedBean(name = "valueBindingSetBean")
+ at RequestScoped
+public class ValueBindingSetBean {
+
+    private String value1;
+
+    private String value2 = "two";
+
+    private String value3;
+
+    private String value4 = "four";
+
+    public String getTest1() {
+        FacesContext facesContext = FacesContext.getCurrentInstance();
+        ValueBinding valueBinding = facesContext.getApplication().createValueBinding("#{valueBindingSetBean.value1}");
+        valueBinding.setValue(facesContext, "one");
+        ValueBindingSetBean bean = (ValueBindingSetBean) facesContext.getExternalContext().getRequestMap().get("valueBindingSetBean");
+        return bean.getValue1();
+    }
+
+    public String getTest2() {
+        FacesContext facesContext = FacesContext.getCurrentInstance();
+        ValueBinding valueBinding = facesContext.getApplication().createValueBinding("#{valueBindingSetBean.value2}");
+        valueBinding.setValue(facesContext, null);
+        ValueBindingSetBean bean = (ValueBindingSetBean) facesContext.getExternalContext().getRequestMap().get("valueBindingSetBean");
+        String value = bean.getValue2();
+        if (value == null || value.trim().equals("")) {
+            value = "NULL";
+        }
+        return value;
+    }
+    
+    public String getTest3() {
+        FacesContext facesContext = FacesContext.getCurrentInstance();
+        ValueBinding valueBinding = facesContext.getApplication().createValueBinding("#{requestScope['valueBindingSetBean'].value3}");
+        valueBinding.setValue(facesContext, "three");
+        ValueBindingSetBean bean = (ValueBindingSetBean) facesContext.getExternalContext().getRequestMap().get("valueBindingSetBean");
+        return bean.getValue3();
+    }
+    
+    public String getTest4() {
+        FacesContext facesContext = FacesContext.getCurrentInstance();
+        ValueBinding valueBinding = facesContext.getApplication().createValueBinding("#{requestScope['valueBindingSetBean'].value4}");
+        valueBinding.setValue(facesContext, null);
+        ValueBindingSetBean bean = (ValueBindingSetBean) facesContext.getExternalContext().getRequestMap().get("valueBindingSetBean");
+        String value = bean.getValue4();
+        if (value == null || value.trim().equals("")) {
+            value = "NULL";
+        }
+        return value;
+    }
+    
+    public String getTest5() {
+        FacesContext facesContext = FacesContext.getCurrentInstance();
+        ValueBinding valueBinding = facesContext.getApplication().createValueBinding("#{value5}");
+        valueBinding.setValue(facesContext, "five");
+        return (String) facesContext.getExternalContext().getRequestMap().get("value5");
+    }
+    
+    public String getTest6() {
+        FacesContext facesContext = FacesContext.getCurrentInstance();
+        facesContext.getExternalContext().getRequestMap().put("value6", "five");
+        ValueBinding valueBinding = facesContext.getApplication().createValueBinding("#{value6}");
+        valueBinding.setValue(facesContext, "six");
+        return (String) facesContext.getExternalContext().getRequestMap().get("value6");
+    }
+    
+    public String getValue1() {
+        return value1;
+    }
+    
+    public String getValue2() {
+        return value2;
+    }
+    
+    public String getValue3() {
+        return value3;
+    }
+    
+    public String getValue4() {
+        return value4;
+    }
+
+    public void setValue1(String value1) {
+        this.value1 = value1;
+    }
+
+    public void setValue2(String value2) {
+        this.value2 = value2;
+    }
+
+    public void setValue3(String value3) {
+        this.value3 = value3;
+    }
+
+    public void setValue4(String value4) {
+        this.value4 = value4;
+    }
+}
diff --git a/test/servlet30/el/basic/src/main/java/com/sun/faces/test/servlet30/el/basic/ViewConstructorBean.java b/test/servlet30/el/basic/src/main/java/com/sun/faces/test/servlet30/el/basic/ViewConstructorBean.java
new file mode 100644
index 0000000..7c8e38f
--- /dev/null
+++ b/test/servlet30/el/basic/src/main/java/com/sun/faces/test/servlet30/el/basic/ViewConstructorBean.java
@@ -0,0 +1,70 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.el.basic;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.ViewScoped;
+
+/**
+ * A ViewScoped bean testing constructor functionality.
+ */
+ at ManagedBean(name = "viewConstructorBean")
+ at ViewScoped
+public class ViewConstructorBean {
+
+    /**
+     * Stores the text.
+     */
+    private String text;
+    
+    /**
+     * Constructor.
+     */
+    public ViewConstructorBean() {
+        this.text = "This is constructed";
+    }
+    
+    /**
+     * Get the text.
+     */
+    public String getText() {
+        return this.text;
+    }
+}
diff --git a/test/servlet30/el/basic/src/main/java/com/sun/faces/test/servlet30/el/basic/ViewInitFacesListener.java b/test/servlet30/el/basic/src/main/java/com/sun/faces/test/servlet30/el/basic/ViewInitFacesListener.java
new file mode 100644
index 0000000..5427537
--- /dev/null
+++ b/test/servlet30/el/basic/src/main/java/com/sun/faces/test/servlet30/el/basic/ViewInitFacesListener.java
@@ -0,0 +1,91 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.el.basic;
+
+import javax.faces.component.UIViewRoot;
+import javax.faces.context.FacesContext;
+import javax.faces.event.AbortProcessingException;
+import javax.faces.event.SystemEvent;
+import javax.faces.event.SystemEventListener;
+import java.util.Map;
+
+/**
+ * A system event listener that registers as a preRenderComponent event listener.
+ */
+public class ViewInitFacesListener implements SystemEventListener {
+    /**
+     * Constructor.
+     */
+    public ViewInitFacesListener() {
+        FacesContext fc = FacesContext.getCurrentInstance();
+        UIViewRoot viewRoot = fc.getViewRoot();
+        if (viewRoot != null) {
+            Map viewMap = viewRoot.getViewMap();
+            if (viewMap != null) {
+                if (FacesContext.getCurrentInstance() != null &&
+                        FacesContext.getCurrentInstance().getClass().getName().equals("com.sun.faces.config.InitFacesContext")) {
+                    FacesContext.getCurrentInstance().getExternalContext().getApplicationMap().put("viewMapCreated", "Yes");
+                }
+            }
+        }
+    }
+
+    /**
+     * Process the event.
+     * 
+     * @param event the system event.
+     * @throws AbortProcessingException when processing needs to be aborted.
+     */
+    public void processEvent(SystemEvent event) throws AbortProcessingException {
+    }
+
+    /**
+     * Is a listener for source.
+     * 
+     * @param source the source.
+     * @return true or false.
+     */
+    public boolean isListenerForSource(Object source) {
+        if (source instanceof UIViewRoot) {
+            return true;
+        }
+        return false;
+    }
+}
diff --git a/test/servlet30/el/basic/src/main/java/com/sun/faces/test/servlet30/el/basic/ViewInvalidated2Bean.java b/test/servlet30/el/basic/src/main/java/com/sun/faces/test/servlet30/el/basic/ViewInvalidated2Bean.java
new file mode 100644
index 0000000..f67b81c
--- /dev/null
+++ b/test/servlet30/el/basic/src/main/java/com/sun/faces/test/servlet30/el/basic/ViewInvalidated2Bean.java
@@ -0,0 +1,91 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.el.basic;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.ViewScoped;
+import javax.faces.context.FacesContext;
+import javax.servlet.http.HttpSession;
+
+/**
+ * A ViewScoped bean testing session invalidation functionality.
+ */
+ at ManagedBean(name = "viewInvalidated2Bean")
+ at ViewScoped
+public class ViewInvalidated2Bean {
+
+    /**
+     * Stores the invalidated attribute name.
+     */
+    private static final String INVALIDATED_ATTRIBUTE = "com.sun.faces.test.servlet30.el.Invalidated2";
+    /**
+     * Stores the local count.
+     */
+    private int count;
+
+    /**
+     * Constructor.
+     */
+    public ViewInvalidated2Bean() {
+        FacesContext.getCurrentInstance().getExternalContext().getApplicationMap().remove(INVALIDATED_ATTRIBUTE);
+        FacesContext.getCurrentInstance().getExternalContext().getApplicationMap().put(INVALIDATED_ATTRIBUTE, false);
+    }
+
+    /**
+     * Action that invalidates the session.
+     */
+    public String doInvalidate() {
+        HttpSession session = (HttpSession) FacesContext.getCurrentInstance().getExternalContext().getSession(false);
+        if (session != null) {
+            session.invalidate();
+            FacesContext.getCurrentInstance().getExternalContext().getApplicationMap().put(INVALIDATED_ATTRIBUTE, true);
+        }
+        return "";
+    }
+
+    /**
+     * Get the count.
+     *
+     * @return the count.
+     */
+    public int getCount() {
+        return count;
+    }
+}
diff --git a/test/servlet30/el/basic/src/main/java/com/sun/faces/test/servlet30/el/basic/ViewInvalidatedBean.java b/test/servlet30/el/basic/src/main/java/com/sun/faces/test/servlet30/el/basic/ViewInvalidatedBean.java
new file mode 100644
index 0000000..91a0090
--- /dev/null
+++ b/test/servlet30/el/basic/src/main/java/com/sun/faces/test/servlet30/el/basic/ViewInvalidatedBean.java
@@ -0,0 +1,101 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.el.basic;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.ViewScoped;
+import javax.faces.context.FacesContext;
+
+/**
+ * A ViewScoped bean testing session invalidation functionality.
+ */
+ at ManagedBean(name = "viewInvalidatedBean")
+ at ViewScoped
+public class ViewInvalidatedBean {
+
+    /**
+     * Stores the text.
+     */
+    private String text;
+
+    /**
+     * Constructor.
+     */
+    public ViewInvalidatedBean() {
+        this.text = "This is from the constructor";
+    }
+
+    /**
+     * Post-construct.
+     *
+     */
+    @PostConstruct
+    public void init() {
+        FacesContext.getCurrentInstance().getExternalContext().getApplicationMap().remove("invalidated");
+        this.text = "This is from the @PostConstruct";
+    }
+
+    /**
+     * Pre-destroy
+     */
+    @PreDestroy
+    public void destroy() {
+        /*
+         * For the purpose of the test we can actually ask for the current 
+         * instance of the FacesContext, because we trigger invalidating of the 
+         * session through a JSF page, however in the normal case of session 
+         * invalidation this will NOT be true. So this means that normally the 
+         * @PreDestroy annotated method should not try to use 
+         * FacesContext.getCurrentInstance().
+         */
+        if (FacesContext.getCurrentInstance() != null) {
+            FacesContext.getCurrentInstance().getExternalContext().getApplicationMap().put("invalidated", true);
+        }
+    }
+
+    /**
+     * Get the text.
+     */
+    public String getText() {
+        return this.text;
+    }
+}
diff --git a/test/servlet30/el/basic/src/main/java/com/sun/faces/test/servlet30/el/basic/ViewNavigateAwayBean.java b/test/servlet30/el/basic/src/main/java/com/sun/faces/test/servlet30/el/basic/ViewNavigateAwayBean.java
new file mode 100644
index 0000000..f58de78
--- /dev/null
+++ b/test/servlet30/el/basic/src/main/java/com/sun/faces/test/servlet30/el/basic/ViewNavigateAwayBean.java
@@ -0,0 +1,93 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.el.basic;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.ViewScoped;
+import javax.faces.context.FacesContext;
+
+/**
+ * A ViewScoped bean testing navigate away functionality.
+ */
+ at ManagedBean(name = "viewNavigateAwayBean")
+ at ViewScoped
+public class ViewNavigateAwayBean {
+
+    /**
+     * Stores the text.
+     */
+    private String text;
+
+    /**
+     * Constructor.
+     */
+    public ViewNavigateAwayBean() {
+        this.text = "This is from the constructor";
+    }
+
+    /**
+     * Post-construct.
+     *
+     */
+    @PostConstruct
+    public void init() {
+        FacesContext.getCurrentInstance().getExternalContext().getApplicationMap().remove("navigatedAway");
+        this.text = "This is from the @PostConstruct";
+    }
+
+    /**
+     * Pre-destroy
+     */
+    @PreDestroy
+    public void destroy() {
+        if (FacesContext.getCurrentInstance() != null) {
+            FacesContext.getCurrentInstance().getExternalContext().getApplicationMap().put("navigatedAway", true);
+        }
+    }
+
+    /**
+     * Get the text.
+     */
+    public String getText() {
+        return this.text;
+    }
+}
diff --git a/test/servlet30/el/basic/src/main/java/com/sun/faces/test/servlet30/el/basic/ViewNavigateBean.java b/test/servlet30/el/basic/src/main/java/com/sun/faces/test/servlet30/el/basic/ViewNavigateBean.java
new file mode 100644
index 0000000..25e56f9
--- /dev/null
+++ b/test/servlet30/el/basic/src/main/java/com/sun/faces/test/servlet30/el/basic/ViewNavigateBean.java
@@ -0,0 +1,80 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.el.basic;
+
+import javax.annotation.PostConstruct;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.ViewScoped;
+
+/**
+ * A ViewScoped bean testing navigate functionality.
+ */
+ at ManagedBean(name = "viewNavigateBean")
+ at ViewScoped
+public class ViewNavigateBean {
+
+    /**
+     * Stores the text.
+     */
+    private String text;
+    
+    /**
+     * Constructor.
+     */
+    public ViewNavigateBean() {
+        this.text = "This is from the constructor";
+    }
+    
+    /**
+     * Post-construct.
+     * 
+     */
+    @PostConstruct
+    public void init() {
+        this.text = "This is from the @PostConstruct";
+    }
+    
+    /**
+     * Get the text.
+     */
+    public String getText() {
+        return this.text;
+    }
+}
diff --git a/test/servlet30/el/basic/src/main/java/com/sun/faces/test/servlet30/el/basic/ViewPostConstructBean.java b/test/servlet30/el/basic/src/main/java/com/sun/faces/test/servlet30/el/basic/ViewPostConstructBean.java
new file mode 100644
index 0000000..d80d6da
--- /dev/null
+++ b/test/servlet30/el/basic/src/main/java/com/sun/faces/test/servlet30/el/basic/ViewPostConstructBean.java
@@ -0,0 +1,80 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.el.basic;
+
+import javax.annotation.PostConstruct;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.ViewScoped;
+
+/**
+ * A ViewScoped bean testing @PostConstruct functionality.
+ */
+ at ManagedBean(name = "viewPostConstructBean")
+ at ViewScoped
+public class ViewPostConstructBean {
+
+    /**
+     * Stores the text.
+     */
+    private String text;
+    
+    /**
+     * Constructor.
+     */
+    public ViewPostConstructBean() {
+        this.text = "This is from the constructor";
+    }
+    
+    /**
+     * Post-construct.
+     * 
+     */
+    @PostConstruct
+    public void init() {
+        this.text = "This is from the @PostConstruct";
+    }
+    
+    /**
+     * Get the text.
+     */
+    public String getText() {
+        return this.text;
+    }
+}
diff --git a/test/servlet30/el/basic/src/main/java/com/sun/faces/test/servlet30/el/basic/ViewVerbatimBean.java b/test/servlet30/el/basic/src/main/java/com/sun/faces/test/servlet30/el/basic/ViewVerbatimBean.java
new file mode 100644
index 0000000..58fe75a
--- /dev/null
+++ b/test/servlet30/el/basic/src/main/java/com/sun/faces/test/servlet30/el/basic/ViewVerbatimBean.java
@@ -0,0 +1,83 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.el.basic;
+
+import javax.annotation.PostConstruct;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.ViewScoped;
+import javax.faces.event.ActionEvent;
+
+ at ManagedBean(name = "viewVerbatimBean")
+ at ViewScoped
+public class ViewVerbatimBean {
+
+    /**
+     * Initialize the bean.
+     */
+    @PostConstruct
+    public void init() {
+    }
+
+    /**
+     * Update the time.
+     *
+     * @param ae the action event.
+     */
+    public void updateTime(ActionEvent ae) {
+    }
+
+    /**
+     * Get the time.
+     *
+     * @return the time.
+     */
+    public String getTime() {
+        return Long.toString(System.currentTimeMillis());
+    }
+
+    /**
+     * Get the bean hash.
+     *
+     * @return the bean hash.
+     */
+    public String getBeanHash() {
+        return this.toString();
+    }
+}
diff --git a/test/servlet30/el/basic/src/main/webapp/WEB-INF/faces-config.xml b/test/servlet30/el/basic/src/main/webapp/WEB-INF/faces-config.xml
new file mode 100644
index 0000000..4791fac
--- /dev/null
+++ b/test/servlet30/el/basic/src/main/webapp/WEB-INF/faces-config.xml
@@ -0,0 +1,61 @@
+<?xml version='1.0' encoding='UTF-8'?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
+              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+              xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_1.xsd"
+              version="2.1">
+    <application>
+        <system-event-listener>
+            <system-event-listener-class>com.sun.faces.test.servlet30.el.basic.ViewInitFacesListener</system-event-listener-class>
+            <system-event-class>javax.faces.event.PreRenderComponentEvent</system-event-class>
+        </system-event-listener>
+    </application>    
+    <managed-bean>
+        <description>This is a description</description>
+        <managed-bean-name>description</managed-bean-name>
+        <managed-bean-class>java.util.Date</managed-bean-class>
+        <managed-bean-scope>request</managed-bean-scope>
+    </managed-bean>
+</faces-config>
diff --git a/test/servlet30/el/basic/src/main/webapp/WEB-INF/glassfish-web.xml b/test/servlet30/el/basic/src/main/webapp/WEB-INF/glassfish-web.xml
new file mode 100644
index 0000000..4664d5f
--- /dev/null
+++ b/test/servlet30/el/basic/src/main/webapp/WEB-INF/glassfish-web.xml
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<glassfish-web-app error-url="">
+  <context-root>/test-servlet30-el-basic</context-root>
+  <class-loader delegate="true"/>
+  <jsp-config>
+    <property name="keepgenerated" value="true">
+      <description>Keep a copy of the generated servlet class' java code.</description>
+    </property>
+  </jsp-config>
+</glassfish-web-app>
diff --git a/test/servlet30/el/basic/src/main/webapp/WEB-INF/web.xml b/test/servlet30/el/basic/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..5aa3100
--- /dev/null
+++ b/test/servlet30/el/basic/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" 
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>${webapp.projectStage}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
+        <param-value>${webapp.partialStateSaving}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>${webapp.stateSavingMethod}</param-value>
+    </context-param>
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <session-config>
+        <session-timeout>30</session-timeout>
+    </session-config>
+    <welcome-file-list>
+        <welcome-file>faces/index.xhtml</welcome-file>
+    </welcome-file-list>
+</web-app>
diff --git a/test/servlet30/el/basic/src/main/webapp/getFeatureDescriptors.xhtml b/test/servlet30/el/basic/src/main/webapp/getFeatureDescriptors.xhtml
new file mode 100644
index 0000000..7fc7336
--- /dev/null
+++ b/test/servlet30/el/basic/src/main/webapp/getFeatureDescriptors.xhtml
@@ -0,0 +1,16 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title>Facelet Title</title>
+    </h:head>
+    <h:body>
+        <div id="topLevelVariables">
+            
+            <h:outputText escape="false" value="#{getFeatureDescriptorsBean.topLevelVariables}" />
+        
+        </div>
+    </h:body>
+</html>
+
diff --git a/test/servlet30/el/basic/src/main/webapp/index.xhtml b/test/servlet30/el/basic/src/main/webapp/index.xhtml
new file mode 100644
index 0000000..ad5c758
--- /dev/null
+++ b/test/servlet30/el/basic/src/main/webapp/index.xhtml
@@ -0,0 +1,55 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title>EL tests</title>
+    </h:head>
+    <h:body>
+    </h:body>
+</html>
diff --git a/test/servlet30/el/basic/src/main/webapp/issue2566.jsp b/test/servlet30/el/basic/src/main/webapp/issue2566.jsp
new file mode 100644
index 0000000..cd78c64
--- /dev/null
+++ b/test/servlet30/el/basic/src/main/webapp/issue2566.jsp
@@ -0,0 +1,58 @@
+<%@page import="javax.el.ELResolver,javax.el.ELContext,java.util.Iterator"%>
+<%@page contentType="text/plain"%>
+
+<%
+    /*
+     * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+     *
+     * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+     *
+     * The contents of this file are subject to the terms of either the GNU
+     * General Public License Version 2 only ("GPL") or the Common Development
+     * and Distribution License("CDDL") (collectively, the "License").  You
+     * may not use this file except in compliance with the License.  You can
+     * obtain a copy of the License at
+     * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+     * or packager/legal/LICENSE.txt.  See the License for the specific
+     * language governing permissions and limitations under the License.
+     *
+     * When distributing the software, include this License Header Notice in each
+     * file and include the License file at packager/legal/LICENSE.txt.
+     *
+     * GPL Classpath Exception:
+     * Oracle designates this particular file as subject to the "Classpath"
+     * exception as provided by Oracle in the GPL Version 2 section of the License
+     * file that accompanied this code.
+     *
+     * Modifications:
+     * If applicable, add the following below the License Header, with the fields
+     * enclosed by brackets [] replaced by your own identifying information:
+     * "Portions Copyright [year] [name of copyright owner]"
+     *
+     * Contributor(s):
+     * If you wish your version of this file to be governed by only the CDDL or
+     * only the GPL Version 2, indicate your decision by adding "[Contributor]
+     * elects to include this software in this distribution under the [CDDL or GPL
+     * Version 2] license."  If you don't indicate a single choice of license, a
+     * recipient has the option to distribute your version of this file under
+     * either the CDDL, the GPL Version 2 or to extend the choice of license to
+     * its licensees as provided above.  However, if you add GPL Version 2 code
+     * and therefore, elected the GPL Version 2 license, then the option applies
+     * only if the new code is made subject to such option by the copyright
+     * holder.
+     */
+    if (pageContext != null) {
+        ELContext elContext = pageContext.getELContext();
+
+        if (elContext != null) {
+            ELResolver resolver = elContext.getELResolver();
+            Iterator i = resolver.getFeatureDescriptors(elContext, null);
+            while (i.hasNext()) {
+                out.println("[" + i + "] is ok");
+                i.next();
+            }
+            out.println("EL Resolver Passed");
+        }
+    }
+%>
+
diff --git a/test/servlet30/el/basic/src/main/webapp/issue2989.jsp b/test/servlet30/el/basic/src/main/webapp/issue2989.jsp
new file mode 100644
index 0000000..836cba9
--- /dev/null
+++ b/test/servlet30/el/basic/src/main/webapp/issue2989.jsp
@@ -0,0 +1,20 @@
+<%@page contentType="text/html" pageEncoding="UTF-8"%>
+
+
+<%@taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
+<%@taglib prefix="h" uri="http://java.sun.com/jsf/html"%>
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+    "http://www.w3.org/TR/html4/loose.dtd">
+
+<f:view>
+    <html>
+        <head>
+            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+            <title>JSP Page</title>
+        </head>
+        <body>
+            <h1><h:outputText value="#{issue2989Bean.testResult}"/></h1>
+        </body>
+    </html>
+</f:view>
diff --git a/test/servlet30/el/basic/src/main/webapp/setNull1.xhtml b/test/servlet30/el/basic/src/main/webapp/setNull1.xhtml
new file mode 100644
index 0000000..a88b45b
--- /dev/null
+++ b/test/servlet30/el/basic/src/main/webapp/setNull1.xhtml
@@ -0,0 +1,14 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://xmlns.jcp.org/jsf/html">
+    <h:head>
+        <title>SetNull test 1</title>
+    </h:head>
+    <h:body>
+        <h:outputText value="#{setNullBean.test1}"/>
+    </h:body>
+</html>
diff --git a/test/servlet30/el/basic/src/main/webapp/setNull2.xhtml b/test/servlet30/el/basic/src/main/webapp/setNull2.xhtml
new file mode 100644
index 0000000..a17c080
--- /dev/null
+++ b/test/servlet30/el/basic/src/main/webapp/setNull2.xhtml
@@ -0,0 +1,14 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://xmlns.jcp.org/jsf/html">
+    <h:head>
+        <title>SetNull test 2</title>
+    </h:head>
+    <h:body>
+        <h:outputText value="#{setNullBean.test2}"/>
+    </h:body>
+</html>
diff --git a/test/servlet30/el/basic/src/main/webapp/setNull3.xhtml b/test/servlet30/el/basic/src/main/webapp/setNull3.xhtml
new file mode 100644
index 0000000..f613312
--- /dev/null
+++ b/test/servlet30/el/basic/src/main/webapp/setNull3.xhtml
@@ -0,0 +1,14 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://xmlns.jcp.org/jsf/html">
+    <h:head>
+        <title>SetNull test 3</title>
+    </h:head>
+    <h:body>
+        <h:outputText value="#{setNullBean.test3}"/>
+    </h:body>
+</html>
diff --git a/test/servlet30/el/basic/src/main/webapp/setNull4.xhtml b/test/servlet30/el/basic/src/main/webapp/setNull4.xhtml
new file mode 100644
index 0000000..917cad5
--- /dev/null
+++ b/test/servlet30/el/basic/src/main/webapp/setNull4.xhtml
@@ -0,0 +1,14 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://xmlns.jcp.org/jsf/html">
+    <h:head>
+        <title>SetNull test 4</title>
+    </h:head>
+    <h:body>
+        <h:outputText value="#{setNullBean.test4}"/>
+    </h:body>
+</html>
diff --git a/test/servlet30/el/basic/src/main/webapp/setNull5.xhtml b/test/servlet30/el/basic/src/main/webapp/setNull5.xhtml
new file mode 100644
index 0000000..14de101
--- /dev/null
+++ b/test/servlet30/el/basic/src/main/webapp/setNull5.xhtml
@@ -0,0 +1,14 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://xmlns.jcp.org/jsf/html">
+    <h:head>
+        <title>SetNull test 5</title>
+    </h:head>
+    <h:body>
+        <h:outputText value="#{setNullBean.test5}"/>
+    </h:body>
+</html>
diff --git a/test/servlet30/el/basic/src/main/webapp/setNull6.xhtml b/test/servlet30/el/basic/src/main/webapp/setNull6.xhtml
new file mode 100644
index 0000000..c90ba85
--- /dev/null
+++ b/test/servlet30/el/basic/src/main/webapp/setNull6.xhtml
@@ -0,0 +1,14 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://xmlns.jcp.org/jsf/html">
+    <h:head>
+        <title>SetNull test 6</title>
+    </h:head>
+    <h:body>
+        <h:outputText value="#{setNullBean.test6}"/>
+    </h:body>
+</html>
diff --git a/test/servlet30/el/basic/src/main/webapp/setNull7.xhtml b/test/servlet30/el/basic/src/main/webapp/setNull7.xhtml
new file mode 100644
index 0000000..1467a05
--- /dev/null
+++ b/test/servlet30/el/basic/src/main/webapp/setNull7.xhtml
@@ -0,0 +1,14 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://xmlns.jcp.org/jsf/html">
+    <h:head>
+        <title>SetNull test 7</title>
+    </h:head>
+    <h:body>
+        <h:outputText value="#{setNullBean.test7}"/>
+    </h:body>
+</html>
diff --git a/test/servlet30/el/basic/src/main/webapp/setNull8.xhtml b/test/servlet30/el/basic/src/main/webapp/setNull8.xhtml
new file mode 100644
index 0000000..928613a
--- /dev/null
+++ b/test/servlet30/el/basic/src/main/webapp/setNull8.xhtml
@@ -0,0 +1,14 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://xmlns.jcp.org/jsf/html">
+    <h:head>
+        <title>SetNull test 8</title>
+    </h:head>
+    <h:body>
+        <h:outputText value="#{setNullBean.test8}"/>
+    </h:body>
+</html>
diff --git a/test/servlet30/el/basic/src/main/webapp/valueBindingSet1.xhtml b/test/servlet30/el/basic/src/main/webapp/valueBindingSet1.xhtml
new file mode 100644
index 0000000..d40381c
--- /dev/null
+++ b/test/servlet30/el/basic/src/main/webapp/valueBindingSet1.xhtml
@@ -0,0 +1,13 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title>ValueBindingSet1</title>
+    </h:head>
+    <h:body>
+        #{valueBindingSetBean.test1}
+    </h:body>
+</html>
diff --git a/test/servlet30/el/basic/src/main/webapp/valueBindingSet2.xhtml b/test/servlet30/el/basic/src/main/webapp/valueBindingSet2.xhtml
new file mode 100644
index 0000000..f1f92ad
--- /dev/null
+++ b/test/servlet30/el/basic/src/main/webapp/valueBindingSet2.xhtml
@@ -0,0 +1,13 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title>ValueBindingSet2</title>
+    </h:head>
+    <h:body>
+        #{valueBindingSetBean.test2}
+    </h:body>
+</html>
diff --git a/test/servlet30/el/basic/src/main/webapp/valueBindingSet3.xhtml b/test/servlet30/el/basic/src/main/webapp/valueBindingSet3.xhtml
new file mode 100644
index 0000000..64ae6d1
--- /dev/null
+++ b/test/servlet30/el/basic/src/main/webapp/valueBindingSet3.xhtml
@@ -0,0 +1,13 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title>ValueBindingSet3</title>
+    </h:head>
+    <h:body>
+        #{valueBindingSetBean.test3}
+    </h:body>
+</html>
diff --git a/test/servlet30/el/basic/src/main/webapp/valueBindingSet4.xhtml b/test/servlet30/el/basic/src/main/webapp/valueBindingSet4.xhtml
new file mode 100644
index 0000000..a50d04d
--- /dev/null
+++ b/test/servlet30/el/basic/src/main/webapp/valueBindingSet4.xhtml
@@ -0,0 +1,13 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title>ValueBindingSet4</title>
+    </h:head>
+    <h:body>
+        #{valueBindingSetBean.test4}
+    </h:body>
+</html>
diff --git a/test/servlet30/el/basic/src/main/webapp/valueBindingSet5.xhtml b/test/servlet30/el/basic/src/main/webapp/valueBindingSet5.xhtml
new file mode 100644
index 0000000..24b5a7f
--- /dev/null
+++ b/test/servlet30/el/basic/src/main/webapp/valueBindingSet5.xhtml
@@ -0,0 +1,13 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title>ValueBindingSet5</title>
+    </h:head>
+    <h:body>
+        #{valueBindingSetBean.test5}
+    </h:body>
+</html>
diff --git a/test/servlet30/el/basic/src/main/webapp/valueBindingSet6.xhtml b/test/servlet30/el/basic/src/main/webapp/valueBindingSet6.xhtml
new file mode 100644
index 0000000..2ea215b
--- /dev/null
+++ b/test/servlet30/el/basic/src/main/webapp/valueBindingSet6.xhtml
@@ -0,0 +1,13 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title>ValueBindingSet6</title>
+    </h:head>
+    <h:body>
+        #{valueBindingSetBean.test6}
+    </h:body>
+</html>
diff --git a/test/servlet30/el/basic/src/main/webapp/viewConstructor.xhtml b/test/servlet30/el/basic/src/main/webapp/viewConstructor.xhtml
new file mode 100644
index 0000000..d08b3a7
--- /dev/null
+++ b/test/servlet30/el/basic/src/main/webapp/viewConstructor.xhtml
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC 
+    "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title>Constructor Test</title>
+    </h:head>
+    <h:body>
+        <h:outputText value="#{viewConstructorBean.text}"/>
+    </h:body>
+</html>
diff --git a/test/servlet30/el/basic/src/main/webapp/viewInitFaces.xhtml b/test/servlet30/el/basic/src/main/webapp/viewInitFaces.xhtml
new file mode 100644
index 0000000..0a5a2ce
--- /dev/null
+++ b/test/servlet30/el/basic/src/main/webapp/viewInitFaces.xhtml
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC 
+    "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title>InitFaces Test</title>
+    </h:head>
+    <h:body>
+        We are OK
+    </h:body>
+</html>
diff --git a/test/servlet30/el/basic/src/main/webapp/viewInitFaces2.xhtml b/test/servlet30/el/basic/src/main/webapp/viewInitFaces2.xhtml
new file mode 100644
index 0000000..e7367c6
--- /dev/null
+++ b/test/servlet30/el/basic/src/main/webapp/viewInitFaces2.xhtml
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC 
+    "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title>InitFaces2 Test</title>
+    </h:head>
+    <h:body>
+        <h:outputText value="#{applicationScope['viewMapCreated']}"/>
+    </h:body>
+</html>
diff --git a/test/servlet30/el/basic/src/main/webapp/viewInvalidatedPerform.xhtml b/test/servlet30/el/basic/src/main/webapp/viewInvalidatedPerform.xhtml
new file mode 100644
index 0000000..c693a57
--- /dev/null
+++ b/test/servlet30/el/basic/src/main/webapp/viewInvalidatedPerform.xhtml
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC 
+    "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title>Invalidated Session Perform</title>
+    </h:head>
+    <h:body>
+        #{facesContext.externalContext.invalidateSession()}
+    </h:body>
+</html>
diff --git a/test/servlet30/el/basic/src/main/webapp/viewInvalidatedSession.xhtml b/test/servlet30/el/basic/src/main/webapp/viewInvalidatedSession.xhtml
new file mode 100644
index 0000000..03c0968
--- /dev/null
+++ b/test/servlet30/el/basic/src/main/webapp/viewInvalidatedSession.xhtml
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC 
+    "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title>Invalidated Session Test</title>
+    </h:head>
+    <h:body>
+        <h:outputText value="#{viewInvalidatedBean.text}"/>
+    </h:body>
+</html>
diff --git a/test/servlet30/el/basic/src/main/webapp/viewInvalidatedSession2.xhtml b/test/servlet30/el/basic/src/main/webapp/viewInvalidatedSession2.xhtml
new file mode 100644
index 0000000..470991c
--- /dev/null
+++ b/test/servlet30/el/basic/src/main/webapp/viewInvalidatedSession2.xhtml
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC 
+    "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title>Invalidate Session #2</title>
+    </h:head>
+    <h:body>
+        <h:form id="form">
+            Local Count: <h:outputText value="#{viewInvalidated2Bean.count}"/> <br/>
+            Invalidated: <h:outputText value="#{applicationScope['com.sun.faces.test.servlet30.el.Invalidated2']}"/> <br/>
+            <h:commandButton id="button" action="#{viewInvalidated2Bean.doInvalidate}" value="Invalidate session"/>
+        </h:form>
+    </h:body>
+</html>
diff --git a/test/servlet30/el/basic/src/main/webapp/viewInvalidatedVerify.xhtml b/test/servlet30/el/basic/src/main/webapp/viewInvalidatedVerify.xhtml
new file mode 100644
index 0000000..56f61cc
--- /dev/null
+++ b/test/servlet30/el/basic/src/main/webapp/viewInvalidatedVerify.xhtml
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC 
+    "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title>Invalidated Session Verify</title>
+    </h:head>
+    <h:body>
+        <h:outputText value="#{applicationScope['invalidated']}"/>
+    </h:body>
+</html>
diff --git a/test/servlet30/el/basic/src/main/webapp/viewNavigate.xhtml b/test/servlet30/el/basic/src/main/webapp/viewNavigate.xhtml
new file mode 100644
index 0000000..61a6a94
--- /dev/null
+++ b/test/servlet30/el/basic/src/main/webapp/viewNavigate.xhtml
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC 
+    "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title>Navigate Test</title>
+    </h:head>
+    <h:body>
+        <h:form id="form">
+            <h:outputText value="#{viewNavigateBean.text}"/>
+            <h:commandLink id="submit" value="Submit"/>
+        </h:form>
+    </h:body>
+</html>
diff --git a/test/servlet30/el/basic/src/main/webapp/viewNavigateAway.xhtml b/test/servlet30/el/basic/src/main/webapp/viewNavigateAway.xhtml
new file mode 100644
index 0000000..cb89dbc
--- /dev/null
+++ b/test/servlet30/el/basic/src/main/webapp/viewNavigateAway.xhtml
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC 
+    "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title>Navigate Away Test</title>
+    </h:head>
+    <h:body>
+        <h:form id="form">
+            <h:outputText value="#{viewNavigateAwayBean.text}"/>
+            <h:commandLink id="submit" action="/viewNavigatedAway" value="Submit"/>
+        </h:form>
+    </h:body>
+</html>
diff --git a/test/servlet30/el/basic/src/main/webapp/viewNavigatedAway.xhtml b/test/servlet30/el/basic/src/main/webapp/viewNavigatedAway.xhtml
new file mode 100644
index 0000000..a4d72fa
--- /dev/null
+++ b/test/servlet30/el/basic/src/main/webapp/viewNavigatedAway.xhtml
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC 
+    "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title>Navigated Away Test</title>
+    </h:head>
+    <h:body>
+        <h:outputText value="#{applicationScope['navigatedAway']}"/>
+    </h:body>
+</html>
diff --git a/test/servlet30/el/basic/src/main/webapp/viewPostconstruct.xhtml b/test/servlet30/el/basic/src/main/webapp/viewPostconstruct.xhtml
new file mode 100644
index 0000000..687370c
--- /dev/null
+++ b/test/servlet30/el/basic/src/main/webapp/viewPostconstruct.xhtml
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC 
+    "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title>@PostConstruct Test</title>
+    </h:head>
+    <h:body>
+        <h:outputText value="#{viewPostConstructBean.text}"/>
+    </h:body>
+</html>
diff --git a/test/servlet30/el/basic/src/main/webapp/viewVerbatim.xhtml b/test/servlet30/el/basic/src/main/webapp/viewVerbatim.xhtml
new file mode 100644
index 0000000..5e13b85
--- /dev/null
+++ b/test/servlet30/el/basic/src/main/webapp/viewVerbatim.xhtml
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    <h:body>
+        <h:form id="form">
+            <h2>Page uses f:verbatim</h2>
+            <h:panelGroup>
+                <f:verbatim>#{viewVerbatimBean.time}</f:verbatim> <br/>
+            </h:panelGroup>
+            <h:panelGroup>
+                Hash='<h:outputText value="#{viewVerbatimBean.beanHash}"/>' <br/>
+            </h:panelGroup>
+            <h:panelGrid columns="1">
+                <h:commandButton id="button"
+                                 value="Trigger action listener"
+                                 actionListener="#{viewVerbatimBean.updateTime}"/>
+            </h:panelGrid>
+        </h:form>
+    </h:body>
+</html>
diff --git a/test/servlet30/el/basic/src/test/java/com/sun/faces/test/servlet30/el/basic/Issue1706IT.java b/test/servlet30/el/basic/src/test/java/com/sun/faces/test/servlet30/el/basic/Issue1706IT.java
new file mode 100644
index 0000000..f8e2574
--- /dev/null
+++ b/test/servlet30/el/basic/src/test/java/com/sun/faces/test/servlet30/el/basic/Issue1706IT.java
@@ -0,0 +1,81 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.el.basic;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlElement;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class Issue1706IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+        webClient.setJavaScriptEnabled(true);
+        webClient.setJavaScriptTimeout(60000);
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testVerbatim() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/viewVerbatim.xhtml");
+        String text = page.asText();
+        text = text.substring(text.indexOf("Hash='") + "Hash='".length());
+        text = text.substring(0, text.indexOf("'"));
+        HtmlElement button = page.getHtmlElementById("form:button");
+        page = button.click();
+        String text2 = page.asText();
+        text2 = text2.substring(text2.indexOf("Hash='") + "Hash='".length());
+        text2 = text2.substring(0, text2.indexOf("'"));
+        assertEquals(text, text2);
+    }
+}
diff --git a/test/servlet30/el/basic/src/test/java/com/sun/faces/test/servlet30/el/basic/Issue2561IT.java b/test/servlet30/el/basic/src/test/java/com/sun/faces/test/servlet30/el/basic/Issue2561IT.java
new file mode 100644
index 0000000..1c80500
--- /dev/null
+++ b/test/servlet30/el/basic/src/test/java/com/sun/faces/test/servlet30/el/basic/Issue2561IT.java
@@ -0,0 +1,106 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.el.basic;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlElement;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class Issue2561IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+        webClient.setJavaScriptEnabled(true);
+        webClient.setJavaScriptTimeout(60000);
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testConstructor() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/viewConstructor.xhtml");
+        assertTrue(page.asText().indexOf("This is constructed") != -1);
+    }
+
+    @Test
+    public void testPostConstruct() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/viewPostconstruct.xhtml");
+        assertTrue(page.asText().indexOf("This is from the @PostConstruct") != -1);
+    }
+
+    @Test
+    public void testNavigate() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/viewNavigate.xhtml");
+        assertTrue(page.asText().indexOf("This is from the @PostConstruct") != -1);
+        HtmlElement anchor = page.getHtmlElementById("form:submit");
+        page = anchor.click();
+        assertTrue(page.asText().indexOf("This is from the @PostConstruct") != -1);
+    }
+
+    @Test
+    public void testNavigateAway() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/viewNavigateAway.xhtml");
+        assertTrue(page.asText().indexOf("This is from the @PostConstruct") != -1);
+        HtmlElement anchor = page.getHtmlElementById("form:submit");
+        page = anchor.click();
+        assertTrue(page.asText().indexOf("true") != -1);
+    }
+
+    @Test
+    public void testInvalidatedSession() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/viewInvalidatedSession.xhtml");
+        assertTrue(page.asText().indexOf("This is from the @PostConstruct") != -1);
+        webClient.getPage(webUrl + "faces/viewInvalidatedPerform.xhtml");
+        page = webClient.getPage(webUrl + "faces/viewInvalidatedVerify.xhtml");
+        assertTrue(page.asText().indexOf("true") != -1);
+    }
+}
diff --git a/test/servlet30/el/basic/src/test/java/com/sun/faces/test/servlet30/el/basic/Issue2566IT.java b/test/servlet30/el/basic/src/test/java/com/sun/faces/test/servlet30/el/basic/Issue2566IT.java
new file mode 100644
index 0000000..7546bde
--- /dev/null
+++ b/test/servlet30/el/basic/src/test/java/com/sun/faces/test/servlet30/el/basic/Issue2566IT.java
@@ -0,0 +1,70 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.el.basic;
+
+import com.gargoylesoftware.htmlunit.TextPage;
+import com.gargoylesoftware.htmlunit.WebClient;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class Issue2566IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testIssue1533() throws Exception {
+        TextPage page = webClient.getPage(webUrl + "issue2566.jsp");
+        assertTrue(page.getContent().indexOf("EL Resolver Passed") != -1);
+    }
+}
diff --git a/test/servlet30/el/basic/src/test/java/com/sun/faces/test/servlet30/el/basic/Issue2638IT.java b/test/servlet30/el/basic/src/test/java/com/sun/faces/test/servlet30/el/basic/Issue2638IT.java
new file mode 100644
index 0000000..0035b8b
--- /dev/null
+++ b/test/servlet30/el/basic/src/test/java/com/sun/faces/test/servlet30/el/basic/Issue2638IT.java
@@ -0,0 +1,78 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.el.basic;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlElement;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class Issue2638IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+        webClient.setJavaScriptEnabled(true);
+        webClient.setJavaScriptTimeout(60000);
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testInvalidatedSession2() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/viewInvalidatedSession2.xhtml");
+        assertTrue(page.asText().indexOf("Local Count: 0") != -1);
+        assertTrue(page.asText().indexOf("Invalidated: false") != -1);
+        HtmlElement button = page.getHtmlElementById("form:button");
+        page = button.click();
+        assertTrue(page.asText().indexOf("Local Count: 0") != -1);
+        assertTrue(page.asText().indexOf("Invalidated: true") != -1);
+    }
+}
diff --git a/test/servlet30/el/basic/src/test/java/com/sun/faces/test/servlet30/el/basic/Issue2644IT.java b/test/servlet30/el/basic/src/test/java/com/sun/faces/test/servlet30/el/basic/Issue2644IT.java
new file mode 100644
index 0000000..bcd09b3
--- /dev/null
+++ b/test/servlet30/el/basic/src/test/java/com/sun/faces/test/servlet30/el/basic/Issue2644IT.java
@@ -0,0 +1,72 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.el.basic;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class Issue2644IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+        webClient.setJavaScriptEnabled(true);
+        webClient.setJavaScriptTimeout(60000);
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testInitFaces() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/viewInitFaces.xhtml");
+        assertTrue(page.asText().indexOf("We are OK") != -1);
+    }
+}
diff --git a/test/servlet30/el/basic/src/test/java/com/sun/faces/test/servlet30/el/basic/Issue2673IT.java b/test/servlet30/el/basic/src/test/java/com/sun/faces/test/servlet30/el/basic/Issue2673IT.java
new file mode 100644
index 0000000..913ad56
--- /dev/null
+++ b/test/servlet30/el/basic/src/test/java/com/sun/faces/test/servlet30/el/basic/Issue2673IT.java
@@ -0,0 +1,78 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.el.basic;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.sun.faces.test.junit.JsfTest;
+import com.sun.faces.test.junit.JsfTestRunner;
+import com.sun.faces.test.junit.JsfVersion;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+import org.junit.runner.RunWith;
+
+ at RunWith(value=JsfTestRunner.class)
+ at JsfTest(JsfVersion.JSF_2_2_0_M09)
+public class Issue2673IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+        webClient.setJavaScriptEnabled(true);
+        webClient.setJavaScriptTimeout(60000);
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testInitFaces() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/viewInitFaces2.xhtml");
+        assertTrue(page.asText().indexOf("Yes") != -1);
+    }
+}
diff --git a/test/servlet30/el/basic/src/test/java/com/sun/faces/test/servlet30/el/basic/Issue2829IT.java b/test/servlet30/el/basic/src/test/java/com/sun/faces/test/servlet30/el/basic/Issue2829IT.java
new file mode 100644
index 0000000..2aed0d9
--- /dev/null
+++ b/test/servlet30/el/basic/src/test/java/com/sun/faces/test/servlet30/el/basic/Issue2829IT.java
@@ -0,0 +1,100 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.el.basic;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class Issue2829IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testValueBindingSet() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/valueBindingSet1.xhtml");
+        assertTrue(page.asXml().indexOf("one") != -1);
+    }
+
+    @Test
+    public void testValueBindingSetNull() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/valueBindingSet2.xhtml");
+        assertTrue(page.asXml().indexOf("NULL") != -1);
+    }
+
+    @Test
+    public void testValueBindingSetMapNotation() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/valueBindingSet3.xhtml");
+        assertTrue(page.asXml().indexOf("three") != -1);
+    }
+
+    @Test
+    public void testValueBindingSetNullMapNotation() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/valueBindingSet4.xhtml");
+        assertTrue(page.asXml().indexOf("NULL") != -1);
+    }
+
+    @Test
+    public void testValueBindingSetDoesNotExist() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/valueBindingSet5.xhtml");
+        assertTrue(page.asXml().indexOf("five") != -1);
+    }
+
+    @Test
+    public void testValueBindingSetSessionVariable() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/valueBindingSet6.xhtml");
+        assertTrue(page.asXml().indexOf("six") != -1);
+    }
+}
diff --git a/test/servlet30/el/basic/src/test/java/com/sun/faces/test/servlet30/el/basic/Issue2830IT.java b/test/servlet30/el/basic/src/test/java/com/sun/faces/test/servlet30/el/basic/Issue2830IT.java
new file mode 100644
index 0000000..6ede09f
--- /dev/null
+++ b/test/servlet30/el/basic/src/test/java/com/sun/faces/test/servlet30/el/basic/Issue2830IT.java
@@ -0,0 +1,88 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.el.basic;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class Issue2830IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testSetNull5() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/setNull5.xhtml");
+        assertTrue(page.asXml().indexOf("SUCCESS") != -1);
+    }
+
+    @Test
+    public void testSetNull6() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/setNull6.xhtml");
+        assertTrue(page.asXml().indexOf("SUCCESS") != -1);
+    }
+
+    @Test
+    public void testSetNull7() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/setNull7.xhtml");
+        assertTrue(page.asXml().indexOf("SUCCESS") != -1);
+    }
+
+    @Test
+    public void testSetNull8() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/setNull8.xhtml");
+        assertTrue(page.asXml().indexOf("SUCCESS") != -1);
+    }
+}
diff --git a/test/servlet30/el/basic/src/test/java/com/sun/faces/test/servlet30/el/basic/Issue2831IT.java b/test/servlet30/el/basic/src/test/java/com/sun/faces/test/servlet30/el/basic/Issue2831IT.java
new file mode 100644
index 0000000..800ff93
--- /dev/null
+++ b/test/servlet30/el/basic/src/test/java/com/sun/faces/test/servlet30/el/basic/Issue2831IT.java
@@ -0,0 +1,88 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.el.basic;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class Issue2831IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testSetNull1() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/setNull1.xhtml");
+        assertTrue(page.asXml().indexOf("SUCCESS") != -1);
+    }
+
+    @Test
+    public void testSetNull2() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/setNull2.xhtml");
+        assertTrue(page.asXml().indexOf("SUCCESS") != -1);
+    }
+
+    @Test
+    public void testSetNull3() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/setNull3.xhtml");
+        assertTrue(page.asXml().indexOf("SUCCESS") != -1);
+    }
+
+    @Test
+    public void testSetNull4() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/setNull4.xhtml");
+        assertTrue(page.asXml().indexOf("SUCCESS") != -1);
+    }
+}
diff --git a/test/servlet30/el/basic/src/test/java/com/sun/faces/test/servlet30/el/basic/Issue2989IT.java b/test/servlet30/el/basic/src/test/java/com/sun/faces/test/servlet30/el/basic/Issue2989IT.java
new file mode 100644
index 0000000..954b7f5
--- /dev/null
+++ b/test/servlet30/el/basic/src/test/java/com/sun/faces/test/servlet30/el/basic/Issue2989IT.java
@@ -0,0 +1,76 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.el.basic;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.sun.faces.test.junit.JsfTest;
+import com.sun.faces.test.junit.JsfTestRunner;
+import com.sun.faces.test.junit.JsfVersion;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+import org.junit.runner.RunWith;
+
+ at RunWith(JsfTestRunner.class)
+public class Issue2989IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @JsfTest(JsfVersion.JSF_2_2_3)
+    @Test
+    public void testSetNull1() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/issue2989.jsp");
+        assertTrue(page.asXml().indexOf("PASSED") != -1);
+    }
+}
diff --git a/test/servlet30/el/basic/src/test/java/com/sun/faces/test/servlet30/el/basic/Issue3268IT.java b/test/servlet30/el/basic/src/test/java/com/sun/faces/test/servlet30/el/basic/Issue3268IT.java
new file mode 100644
index 0000000..bf2f671
--- /dev/null
+++ b/test/servlet30/el/basic/src/test/java/com/sun/faces/test/servlet30/el/basic/Issue3268IT.java
@@ -0,0 +1,90 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.el.basic;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class Issue3268IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testImplicitObjects() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/getFeatureDescriptors.xhtml");
+        String pageXml = page.asXml();
+        assertTrue(pageXml.indexOf("application") != -1);
+        assertTrue(pageXml.indexOf("applicationScope") != -1);
+        assertTrue(pageXml.indexOf("cc") != -1);
+        assertTrue(pageXml.indexOf("component") != -1);
+        assertTrue(pageXml.indexOf("cookie") != -1);
+        assertTrue(pageXml.indexOf("facesContext") != -1);
+        assertTrue(pageXml.indexOf("flash") != -1);
+        assertTrue(pageXml.indexOf("flowScope") != -1);
+        assertTrue(pageXml.indexOf("view") != -1);
+        assertTrue(pageXml.indexOf("header") != -1);
+        assertTrue(pageXml.indexOf("headerValues") != -1);
+        assertTrue(pageXml.indexOf("initParam") != -1);
+        assertTrue(pageXml.indexOf("param") != -1);
+        assertTrue(pageXml.indexOf("paramValues") != -1);
+        assertTrue(pageXml.indexOf("request") != -1);
+        assertTrue(pageXml.indexOf("requestScope") != -1);
+        assertTrue(pageXml.indexOf("resource") != -1);
+        assertTrue(pageXml.indexOf("session") != -1);
+        assertTrue(pageXml.indexOf("sessionScope") != -1);
+        assertTrue(pageXml.indexOf("viewScope") != -1);
+    }
+}
\ No newline at end of file
diff --git a/test/servlet30/el/decorate-context/app/pom.xml b/test/servlet30/el/decorate-context/app/pom.xml
new file mode 100644
index 0000000..3cfef76
--- /dev/null
+++ b/test/servlet30/el/decorate-context/app/pom.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+      <groupId>com.sun.faces.test.servlet30.el.decorate-context</groupId>
+      <artifactId>pom</artifactId>
+      <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.servlet30.el.decorate-context</groupId>
+    <artifactId>test-servlet30-el-decorate-context</artifactId>
+    <packaging>war</packaging>
+    <name>Mojarra ${project.version} - Test - Servlet 3.0 - EL - Decorate Context - Test App</name>
+    <build>
+        <finalName>test-servlet30-el-decorate-context</finalName>
+        <plugins>
+            <plugin>
+                <artifactId>maven-war-plugin</artifactId>
+                <configuration>
+                  <failOnMissingWebXml>false</failOnMissingWebXml>
+                </configuration>
+            </plugin>
+
+        </plugins>
+    </build>
+    <dependencies>
+      <dependency>
+        <groupId>com.sun.faces.test.servlet30.el.decorate-context</groupId>
+        <artifactId>decorate-exceptionhandlerfactory</artifactId>
+        <version>${project.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>com.sun.faces.test.servlet30.el.decorate-context</groupId>
+        <artifactId>decorate-facescontextfactory</artifactId>
+        <version>${project.version}</version>
+      </dependency>
+    </dependencies>
+</project>
diff --git a/test/servlet30/el/decorate-context/app/src/main/webapp/WEB-INF/glassfish-web.xml b/test/servlet30/el/decorate-context/app/src/main/webapp/WEB-INF/glassfish-web.xml
new file mode 100644
index 0000000..5882435
--- /dev/null
+++ b/test/servlet30/el/decorate-context/app/src/main/webapp/WEB-INF/glassfish-web.xml
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<glassfish-web-app error-url="">
+  <context-root>/test-servlet30-el-decorate-context</context-root>
+  <class-loader delegate="true"/>
+  <jsp-config>
+    <property name="keepgenerated" value="true">
+      <description>Keep a copy of the generated servlet class' java code.</description>
+    </property>
+  </jsp-config>
+</glassfish-web-app>
diff --git a/test/servlet30/el/decorate-context/app/src/main/webapp/WEB-INF/web.xml b/test/servlet30/el/decorate-context/app/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..092afaa
--- /dev/null
+++ b/test/servlet30/el/decorate-context/app/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,39 @@
+<?xml version='1.0' encoding='UTF-8'?>
+
+<web-app version="3.0"
+         xmlns="http://java.sun.com/xml/ns/javaee"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+
+    <display-name>mojarra-regression-test</display-name>
+    <description>A simple regression test to make it easier to get your bug fixed. The only reason we need a web.xml is to set the PROJECT_STAGE to Develoment.  If you have a web.xml, then you need to map the FacesServlet.</description>
+
+    <context-param>
+        <description>
+            Tell the runtime where we are in the project development
+            lifecycle.  Valid values are: 
+            Development, UnitTest, SystemTest, or Production.
+            The runtime will display helpful hints to correct common mistakes
+            when the value is Development.
+        </description>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>Development</param-value>
+    </context-param>
+
+    <!-- Faces Servlet -->
+  <servlet>
+    <servlet-name>Faces Servlet</servlet-name>
+    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+    <load-on-startup>1</load-on-startup>
+  </servlet>
+
+   <servlet-mapping>
+       <servlet-name>Faces Servlet</servlet-name>
+       <url-pattern>/faces/*</url-pattern>
+   </servlet-mapping>
+
+   <welcome-file-list>
+     <welcome-file>faces/main.xhtml</welcome-file>
+   </welcome-file-list>
+
+</web-app>
diff --git a/test/servlet30/el/decorate-context/app/src/main/webapp/main.xhtml b/test/servlet30/el/decorate-context/app/src/main/webapp/main.xhtml
new file mode 100644
index 0000000..113d09c
--- /dev/null
+++ b/test/servlet30/el/decorate-context/app/src/main/webapp/main.xhtml
@@ -0,0 +1,16 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+
+  <h:form prependId="false">
+      
+      <p id="facesContext"><h:outputText value="#{facesContext.getClass().getName()}" /></p>
+      
+      <p id="exceptionHandler"><h:outputText value="${facesContext.exceptionHandler.getClass().getName()}" /></p>
+      
+      <h:commandButton id="button" value="submit" />
+    
+  </h:form>
+  
+</html>
diff --git a/test/servlet30/el/decorate-context/app/src/test/java/com/sun/faces/test/servlet30/el/decorate_context/Issue3352IT.java b/test/servlet30/el/decorate-context/app/src/test/java/com/sun/faces/test/servlet30/el/decorate_context/Issue3352IT.java
new file mode 100644
index 0000000..18eb703
--- /dev/null
+++ b/test/servlet30/el/decorate-context/app/src/test/java/com/sun/faces/test/servlet30/el/decorate_context/Issue3352IT.java
@@ -0,0 +1,72 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.el.decorate_context;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class Issue3352IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testDecoratedFactories() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl);
+        String pageXml = page.asXml();
+        assertTrue(pageXml.indexOf("MyFacesContextFactory$MyFacesContext") != -1);
+        assertTrue(pageXml.indexOf("MyExceptionHandlerFactory$MyExceptionHandler") != -1);
+    }
+}
\ No newline at end of file
diff --git a/test/servlet30/el/decorate-context/decorate-exceptionhandlerfactory/pom.xml b/test/servlet30/el/decorate-context/decorate-exceptionhandlerfactory/pom.xml
new file mode 100644
index 0000000..209a9d6
--- /dev/null
+++ b/test/servlet30/el/decorate-context/decorate-exceptionhandlerfactory/pom.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" 
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+      <groupId>com.sun.faces.test.servlet30.el.decorate-context</groupId>
+      <artifactId>pom</artifactId>
+      <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.servlet30.el.decorate-context</groupId>
+    <artifactId>decorate-exceptionhandlerfactory</artifactId>
+    <packaging>jar</packaging>
+    <name>Mojarra ${project.version} - Test - Servlet 3.0 - EL - Decorate Context - decorate-exceptionhandlerfactory</name>
+    <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/test/servlet30/el/decorate-context/decorate-exceptionhandlerfactory/src/main/java/com/sun/faces/mt_safety/MyExceptionHandlerFactory.java b/test/servlet30/el/decorate-context/decorate-exceptionhandlerfactory/src/main/java/com/sun/faces/mt_safety/MyExceptionHandlerFactory.java
new file mode 100644
index 0000000..05dd242
--- /dev/null
+++ b/test/servlet30/el/decorate-context/decorate-exceptionhandlerfactory/src/main/java/com/sun/faces/mt_safety/MyExceptionHandlerFactory.java
@@ -0,0 +1,81 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+
+package com.sun.faces.mt_safety;
+
+import javax.faces.FacesWrapper;
+import javax.faces.context.ExceptionHandler;
+import javax.faces.context.ExceptionHandlerFactory;
+import javax.faces.context.ExceptionHandlerWrapper;
+
+public class MyExceptionHandlerFactory extends ExceptionHandlerFactory implements FacesWrapper<ExceptionHandlerFactory> {
+    
+    private final ExceptionHandlerFactory parent;
+
+    public MyExceptionHandlerFactory(ExceptionHandlerFactory parent) {
+        this.parent = parent;
+    }
+
+    @Override
+    public ExceptionHandlerFactory getWrapped() {
+        return parent;
+    }
+
+    @Override
+    public ExceptionHandler getExceptionHandler() {
+        return new MyExceptionHandler(getWrapped().getExceptionHandler());
+    }
+    
+    private static class MyExceptionHandler extends ExceptionHandlerWrapper implements FacesWrapper<ExceptionHandler> {
+        private final ExceptionHandler parent;
+
+        public MyExceptionHandler(ExceptionHandler parent) {
+            this.parent = parent;
+        }
+
+        @Override
+        public ExceptionHandler getWrapped() {
+            return parent;
+        }
+        
+    }
+
+}
diff --git a/test/servlet30/el/decorate-context/decorate-exceptionhandlerfactory/src/main/resources/META-INF/faces-config.xml b/test/servlet30/el/decorate-context/decorate-exceptionhandlerfactory/src/main/resources/META-INF/faces-config.xml
new file mode 100644
index 0000000..dc5ac79
--- /dev/null
+++ b/test/servlet30/el/decorate-context/decorate-exceptionhandlerfactory/src/main/resources/META-INF/faces-config.xml
@@ -0,0 +1,52 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<faces-config version="2.2" xmlns="http://xmlns.jcp.org/xml/ns/javaee"
+   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+   xsi:schemaLocation="
+        http://xmlns.jcp.org/xml/ns/javaee
+        http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd">
+
+    <factory>
+        <exception-handler-factory>com.sun.faces.mt_safety.MyExceptionHandlerFactory</exception-handler-factory>
+    </factory>
+</faces-config>
diff --git a/test/servlet30/el/decorate-context/decorate-facescontextfactory/pom.xml b/test/servlet30/el/decorate-context/decorate-facescontextfactory/pom.xml
new file mode 100644
index 0000000..738d5c0
--- /dev/null
+++ b/test/servlet30/el/decorate-context/decorate-facescontextfactory/pom.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" 
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+      <groupId>com.sun.faces.test.servlet30.el.decorate-context</groupId>
+      <artifactId>pom</artifactId>
+      <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.servlet30.el.decorate-context</groupId>
+    <artifactId>decorate-facescontextfactory</artifactId>
+    <packaging>jar</packaging>
+    <name>Mojarra ${project.version} - Test - Servlet 3.0 - EL - Decorate Context - decorate-facescontextfactory</name>
+    <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/test/servlet30/el/decorate-context/decorate-facescontextfactory/src/main/java/com/sun/faces/mt_safety/MyFacesContextFactory.java b/test/servlet30/el/decorate-context/decorate-facescontextfactory/src/main/java/com/sun/faces/mt_safety/MyFacesContextFactory.java
new file mode 100644
index 0000000..d04b18e
--- /dev/null
+++ b/test/servlet30/el/decorate-context/decorate-facescontextfactory/src/main/java/com/sun/faces/mt_safety/MyFacesContextFactory.java
@@ -0,0 +1,91 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+
+package com.sun.faces.mt_safety;
+
+import javax.faces.FacesException;
+import javax.faces.FacesWrapper;
+import javax.faces.context.FacesContext;
+import javax.faces.context.FacesContextFactory;
+import javax.faces.context.FacesContextWrapper;
+import javax.faces.event.PhaseId;
+import javax.faces.lifecycle.Lifecycle;
+
+public class MyFacesContextFactory extends FacesContextFactory implements FacesWrapper<FacesContextFactory> {
+    
+    private final FacesContextFactory parent;
+
+    public MyFacesContextFactory(FacesContextFactory parent) {
+        this.parent = parent;
+    }
+
+    @Override
+    public FacesContextFactory getWrapped() {
+        return parent;
+    }
+
+    @Override
+    public FacesContext getFacesContext(Object context, Object request, Object response, Lifecycle lifecycle) throws FacesException {
+        MyFacesContext result = new MyFacesContext(getWrapped().getFacesContext(context, request, response, lifecycle));
+        result.callSetCurrentInstance();
+        return result;
+    }
+    
+    private static class MyFacesContext extends FacesContextWrapper implements FacesWrapper<FacesContext> {
+    
+        private final FacesContext parent;
+
+        public MyFacesContext(FacesContext parent) {
+            this.parent = parent;
+        }
+        
+        public void callSetCurrentInstance() {
+            FacesContext.setCurrentInstance(this);
+        }
+
+        @Override
+        public FacesContext getWrapped() {
+            return parent;
+        }
+        
+    }
+
+}
diff --git a/test/servlet30/el/decorate-context/decorate-facescontextfactory/src/main/resources/META-INF/faces-config.xml b/test/servlet30/el/decorate-context/decorate-facescontextfactory/src/main/resources/META-INF/faces-config.xml
new file mode 100644
index 0000000..a0c46c6
--- /dev/null
+++ b/test/servlet30/el/decorate-context/decorate-facescontextfactory/src/main/resources/META-INF/faces-config.xml
@@ -0,0 +1,52 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<faces-config version="2.2" xmlns="http://xmlns.jcp.org/xml/ns/javaee"
+   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+   xsi:schemaLocation="
+        http://xmlns.jcp.org/xml/ns/javaee
+        http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd">
+
+    <factory>
+        <faces-context-factory>com.sun.faces.mt_safety.MyFacesContextFactory</faces-context-factory>
+    </factory>
+</faces-config>
diff --git a/test/servlet30/el/decorate-context/pom.xml b/test/servlet30/el/decorate-context/pom.xml
new file mode 100644
index 0000000..1415fa4
--- /dev/null
+++ b/test/servlet30/el/decorate-context/pom.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.servlet30.el</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.servlet30.el.decorate-context</groupId>
+    <artifactId>pom</artifactId>
+    <packaging>pom</packaging>
+    <name>Mojarra ${project.version} - Test - Servlet 3.0 - EL - Decorate Context</name>
+    <modules>
+        <module>decorate-facescontextfactory</module>
+        <module>decorate-exceptionhandlerfactory</module>
+        <module>app</module>
+    </modules>
+</project>
diff --git a/test/servlet30/el/pom.xml b/test/servlet30/el/pom.xml
new file mode 100644
index 0000000..6ada1dc
--- /dev/null
+++ b/test/servlet30/el/pom.xml
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.servlet30</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.servlet30.el</groupId>
+    <artifactId>pom</artifactId>
+    <packaging>pom</packaging>
+    <name>Mojarra ${project.version} - Test - Servlet 3.0 - EL</name>
+    <modules>
+      <module>basic</module>
+      <module>decorate-context</module>
+    </modules>
+</project>
diff --git a/test/servlet30/facelets/c/pom.xml b/test/servlet30/facelets/c/pom.xml
new file mode 100644
index 0000000..7031dff
--- /dev/null
+++ b/test/servlet30/facelets/c/pom.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.servlet30.facelets</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.servlet30.facelets</groupId>
+    <artifactId>c</artifactId>
+    <packaging>war</packaging>
+    <name>Mojarra ${project.version} - Test - Servlet 3.0 - Facelets - C</name>
+    <build>
+        <finalName>test-servlet30-facelets-c</finalName>
+    </build>
+    <properties>
+        <netbeans.hint.deploy.server>gfv3ee6</netbeans.hint.deploy.server>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/test/servlet30/facelets/c/src/main/java/com/sun/faces/test/servlet30/facelets/c/ModifiedForEachBean.java b/test/servlet30/facelets/c/src/main/java/com/sun/faces/test/servlet30/facelets/c/ModifiedForEachBean.java
new file mode 100644
index 0000000..b4df5cd
--- /dev/null
+++ b/test/servlet30/facelets/c/src/main/java/com/sun/faces/test/servlet30/facelets/c/ModifiedForEachBean.java
@@ -0,0 +1,95 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.facelets.c;
+
+import java.util.HashSet;
+import java.util.Set;
+import java.util.TreeSet;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.SessionScoped;
+
+ at ManagedBean(name = "modifiedForEachBean")
+ at SessionScoped
+public class ModifiedForEachBean {
+
+    private boolean toggle;
+    private Set<String> set = new HashSet<String>();
+    private final Set<String> set1;
+    private final Set<String> set2;
+    private String setToShow = "";
+
+    public ModifiedForEachBean() {
+        toggle = true;
+        setToShow = "SET1 - INIT";
+        set1 = populateSet("-SET1");
+        set2 = populateSet("-SET2");
+        set.addAll(set1);
+    }
+
+    public Set<String> getSet() {
+        return set;
+    }
+
+    public String getSetToShow() {
+        return setToShow;
+    }
+
+    public String toggle() {
+        this.toggle = !this.toggle;
+        if (toggle) {
+            setToShow = "SET1";
+            set.clear();
+            set.addAll(set1);
+        } else {
+            setToShow = "SET2";
+            set.clear();
+            set.addAll(set2);
+        }
+        return null;
+    }
+
+    private TreeSet<String> populateSet(String suffix) {
+        TreeSet<String> newSet = new TreeSet<String>();
+        for (int j = 0; j < 3; j++) {
+            newSet.add(j + suffix);
+        }
+        return newSet;
+    }
+}
diff --git a/test/servlet30/facelets/c/src/main/java/com/sun/faces/test/servlet30/facelets/c/NestedForEachBean.java b/test/servlet30/facelets/c/src/main/java/com/sun/faces/test/servlet30/facelets/c/NestedForEachBean.java
new file mode 100644
index 0000000..106c565
--- /dev/null
+++ b/test/servlet30/facelets/c/src/main/java/com/sun/faces/test/servlet30/facelets/c/NestedForEachBean.java
@@ -0,0 +1,36 @@
+package com.sun.faces.test.servlet30.facelets.c;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+import javax.annotation.PostConstruct;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.ViewScoped;
+
+ at ManagedBean(name = "nestedForEachBean")
+ at ViewScoped
+public class NestedForEachBean implements Serializable {
+
+    List<List<NestedForEachItem>> items;
+
+    @PostConstruct
+    public void init() {
+        items = new ArrayList();
+
+        for (int i = 0; i < 3; i++) {
+            List<NestedForEachItem> list = new ArrayList();
+            list.add(new NestedForEachItem("list" + i + "item1"));
+            list.add(new NestedForEachItem("list" + i + "item2"));
+            list.add(new NestedForEachItem("list" + i + "item3"));
+            items.add(list);
+        }
+    }
+
+    public void add(List<NestedForEachItem> list) {
+        list.add(new NestedForEachItem("new" + list.size()));
+    }
+
+    public List<List<NestedForEachItem>> getItems() {
+        return items;
+    }
+}
diff --git a/test/servlet30/facelets/c/src/main/java/com/sun/faces/test/servlet30/facelets/c/NestedForEachItem.java b/test/servlet30/facelets/c/src/main/java/com/sun/faces/test/servlet30/facelets/c/NestedForEachItem.java
new file mode 100644
index 0000000..cbbace7
--- /dev/null
+++ b/test/servlet30/facelets/c/src/main/java/com/sun/faces/test/servlet30/facelets/c/NestedForEachItem.java
@@ -0,0 +1,25 @@
+package com.sun.faces.test.servlet30.facelets.c;
+
+import java.io.Serializable;
+
+public class NestedForEachItem implements Serializable {
+
+    private String value;
+
+    public NestedForEachItem(String v) {
+        value = v;
+    }
+
+    public String getValue() {
+        return value;
+    }
+
+    public void setValue(String v) {
+        value = v;
+    }
+
+    @Override
+    public String toString() {
+        return "item[" + value + "]";
+    }
+}
diff --git a/test/servlet30/facelets/c/src/main/java/com/sun/faces/test/servlet30/facelets/c/SetForEachBean.java b/test/servlet30/facelets/c/src/main/java/com/sun/faces/test/servlet30/facelets/c/SetForEachBean.java
new file mode 100644
index 0000000..fcab537
--- /dev/null
+++ b/test/servlet30/facelets/c/src/main/java/com/sun/faces/test/servlet30/facelets/c/SetForEachBean.java
@@ -0,0 +1,17 @@
+package com.sun.faces.test.servlet30.facelets.c;
+
+import java.util.Arrays;
+import java.util.LinkedHashSet;
+import java.util.Set;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.RequestScoped;
+
+
+ at ManagedBean(name="setForEachBean")
+ at RequestScoped
+public class SetForEachBean {
+
+    public Set<String> getSet() {
+        return new LinkedHashSet<String>(Arrays.asList("foo", "bar", "baz"));
+    }
+}
diff --git a/test/servlet30/facelets/c/src/main/webapp/WEB-INF/faces-config.xml b/test/servlet30/facelets/c/src/main/webapp/WEB-INF/faces-config.xml
new file mode 100644
index 0000000..193e009
--- /dev/null
+++ b/test/servlet30/facelets/c/src/main/webapp/WEB-INF/faces-config.xml
@@ -0,0 +1,7 @@
+<?xml version='1.0' encoding='UTF-8'?>
+
+<faces-config version="2.0"
+              xmlns="http://java.sun.com/xml/ns/javaee"
+              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+              xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd">
+</faces-config>
diff --git a/test/servlet30/facelets/c/src/main/webapp/WEB-INF/glassfish-web.xml b/test/servlet30/facelets/c/src/main/webapp/WEB-INF/glassfish-web.xml
new file mode 100644
index 0000000..6950876
--- /dev/null
+++ b/test/servlet30/facelets/c/src/main/webapp/WEB-INF/glassfish-web.xml
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<glassfish-web-app error-url="">
+  <context-root>/test-servlet30-facelets-c</context-root>
+  <class-loader delegate="true"/>
+  <jsp-config>
+    <property name="keepgenerated" value="true">
+      <description>Keep a copy of the generated servlet class' java code.</description>
+    </property>
+  </jsp-config>
+</glassfish-web-app>
diff --git a/test/servlet30/facelets/c/src/main/webapp/WEB-INF/web.xml b/test/servlet30/facelets/c/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..a3c5c7b
--- /dev/null
+++ b/test/servlet30/facelets/c/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" 
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>${webapp.projectStage}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
+        <param-value>${webapp.partialStateSaving}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>${webapp.stateSavingMethod}</param-value>
+    </context-param>
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <session-config>
+        <session-timeout>30</session-timeout>
+    </session-config>
+    <welcome-file-list>
+        <welcome-file>faces/index.xhtml</welcome-file>
+    </welcome-file-list>
+</web-app>
diff --git a/test/servlet30/facelets/c/src/main/webapp/index.xhtml b/test/servlet30/facelets/c/src/main/webapp/index.xhtml
new file mode 100644
index 0000000..f23c30e
--- /dev/null
+++ b/test/servlet30/facelets/c/src/main/webapp/index.xhtml
@@ -0,0 +1,58 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title>Facelet Title</title>
+    </h:head>
+    <h:body>
+        <a href="#{facesContext.externalContext.requestContextPath}/faces/modifiedForEach.xhtml">Issue #2627 - Modified For-Each</a> <br/>
+        <a href="#{facesContext.externalContext.requestContextPath}/faces/nestedForEach.xhtml">Issue #2829 - Nested For-Each</a> <br/>
+    </h:body>
+</html>
+
diff --git a/test/servlet30/facelets/c/src/main/webapp/modifiedForEach.xhtml b/test/servlet30/facelets/c/src/main/webapp/modifiedForEach.xhtml
new file mode 100644
index 0000000..7fbc7ae
--- /dev/null
+++ b/test/servlet30/facelets/c/src/main/webapp/modifiedForEach.xhtml
@@ -0,0 +1,89 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<f:view 
+    xmlns="http://www.w3.org/1999/xhtml"
+    xmlns:c="http://java.sun.com/jsp/jstl/core"
+    xmlns:f="http://java.sun.com/jsf/core"
+    xmlns:h="http://java.sun.com/jsf/html"
+    xmlns:ui="http://java.sun.com/jsf/facelets"
+    contentType="text/html">
+    <html>
+        <h:body>
+            <h:form id="form">
+                <h3>
+                    Hit toggle, and the set to show will be different from the 
+                    displayed set.
+                </h3>
+                <h3>
+                    Hit refresh to display the correct set.
+                </h3>
+                <h:commandButton id="submit" value="Toggle" action="#{modifiedForEachBean.toggle}" />
+                <h:commandButton value="Refresh" action="null" />
+                <br/>
+                <h2>Set to Show: #{modifiedForEachBean.setToShow}</h2>
+                <table border="1">
+                    <tr>
+                        <th>Value without component</th>
+                        <th colspan="2">
+                            Value inside component (should be equal to value 
+                            without component)
+                        </th>
+                    </tr>
+                    <c:forEach items="#{modifiedForEachBean.set}" var="outer">
+                        <tr>
+                            <td>#{outer}</td>
+                            <td><h:outputText value="#{outer}" /></td>
+                        </tr>
+                    </c:forEach>
+                </table>
+                <h3>
+                    If javax.faces.PARTIAL_STATE_SAVING=true, both columns show 
+                    the previous version of the set.
+                </h3>
+                <h3>
+                    if javax.faces.PARTIAL_STATE_SAVING=false, column #1 is correct but column #2 is stuck on the first set.
+                </h3>		
+            </h:form>
+        </h:body>
+    </html>
+</f:view>
diff --git a/test/servlet30/facelets/c/src/main/webapp/nestedForEach.xhtml b/test/servlet30/facelets/c/src/main/webapp/nestedForEach.xhtml
new file mode 100644
index 0000000..53860c4
--- /dev/null
+++ b/test/servlet30/facelets/c/src/main/webapp/nestedForEach.xhtml
@@ -0,0 +1,27 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:c="http://java.sun.com/jsp/jstl/core"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+    <h:head>
+        <title>Nested c:forEach</title>
+    </h:head>
+    <h:body>
+        <c:forEach items="#{nestedForEachBean.items}" var="list" varStatus="loop">
+            <h:form id="form#{loop.index}">
+                <h3>list #{loop.index}</h3>
+                <c:forEach items="#{list}" var="item" varStatus="itemLoop">
+                    <h:outputText id='item#{loop.index}_#{itemLoop.index}' value="#{item}"/><br/>
+                </c:forEach>
+                <h:commandButton id="addButton" value="add" action="#{nestedForEachBean.add(list)}"/>
+            </h:form>
+        </c:forEach>
+        <ui:debug hotkey="u"/>
+    </h:body>
+</html>
+
diff --git a/test/servlet30/facelets/c/src/main/webapp/setEmpty.xhtml b/test/servlet30/facelets/c/src/main/webapp/setEmpty.xhtml
new file mode 100644
index 0000000..e48f772
--- /dev/null
+++ b/test/servlet30/facelets/c/src/main/webapp/setEmpty.xhtml
@@ -0,0 +1,16 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:c="http://java.sun.com/jsp/jstl/core"
+      xmlns:h="http://xmlns.jcp.org/jsf/html">
+    <h:head>
+        <title>Facelet Title</title>
+    </h:head>
+    <h:body>
+        <c:set var="variable" value=""/>
+    </h:body>
+</html>
+
diff --git a/test/servlet30/facelets/c/src/main/webapp/setForEach.xhtml b/test/servlet30/facelets/c/src/main/webapp/setForEach.xhtml
new file mode 100644
index 0000000..274d4e8
--- /dev/null
+++ b/test/servlet30/facelets/c/src/main/webapp/setForEach.xhtml
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:c="http://xmlns.jcp.org/jsp/jstl/core"
+      xmlns:h="http://xmlns.jcp.org/jsf/html">
+    <h:head>
+        <title>Set ForEach</title>
+    </h:head>
+    <h:body>
+        <c:forEach items="#{setForEachBean.set}" var="s" begin="1">
+            #{s}<br/>
+        </c:forEach>
+    </h:body>
+</html>
diff --git a/test/servlet30/facelets/c/src/test/java/com/sun/faces/test/servlet30/facelets/c/Issue2524IT.java b/test/servlet30/facelets/c/src/test/java/com/sun/faces/test/servlet30/facelets/c/Issue2524IT.java
new file mode 100644
index 0000000..3425fa9
--- /dev/null
+++ b/test/servlet30/facelets/c/src/test/java/com/sun/faces/test/servlet30/facelets/c/Issue2524IT.java
@@ -0,0 +1,78 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.facelets.c;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlElement;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.sun.faces.test.junit.JsfTest;
+import com.sun.faces.test.junit.JsfTestRunner;
+import com.sun.faces.test.junit.JsfVersion;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+import org.junit.runner.RunWith;
+
+ at RunWith(JsfTestRunner.class)
+public class Issue2524IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @JsfTest(JsfVersion.JSF_2_2_4)
+    @Test
+    public void testSetEmpty() throws Exception {
+        webClient.getOptions().setThrowExceptionOnFailingStatusCode(false);
+        HtmlPage page = webClient.getPage(webUrl + "faces/setEmpty.xhtml");
+        assertEquals(200, page.getWebResponse().getStatusCode());
+    }
+}
diff --git a/test/servlet30/facelets/c/src/test/java/com/sun/faces/test/servlet30/facelets/c/Issue2627IT.java b/test/servlet30/facelets/c/src/test/java/com/sun/faces/test/servlet30/facelets/c/Issue2627IT.java
new file mode 100644
index 0000000..3bea16e
--- /dev/null
+++ b/test/servlet30/facelets/c/src/test/java/com/sun/faces/test/servlet30/facelets/c/Issue2627IT.java
@@ -0,0 +1,91 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.facelets.c;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlElement;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.sun.faces.test.junit.JsfTest;
+import com.sun.faces.test.junit.JsfTestRunner;
+import com.sun.faces.test.junit.JsfVersion;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+import org.junit.runner.RunWith;
+
+ at RunWith(JsfTestRunner.class)
+public class Issue2627IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @JsfTest(JsfVersion.JSF_2_2_2)
+    @Test
+    public void testModifiedForEach() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/modifiedForEach.xhtml");
+        HtmlElement submit = page.getHtmlElementById("form:submit");
+        page = submit.click();
+        assertTrue(page.asXml().indexOf("2-SET2") != -1);
+        assertTrue(page.asXml().indexOf("1-SET2") != -1);
+        assertTrue(page.asXml().indexOf("0-SET2") != -1);
+        assertTrue(page.asXml().indexOf("2-SET1") == -1);
+        assertTrue(page.asXml().indexOf("1-SET1") == -1);
+        assertTrue(page.asXml().indexOf("0-SET1") == -1);
+        page = submit.click();
+        assertTrue(page.asXml().indexOf("2-SET2") == -1);
+        assertTrue(page.asXml().indexOf("1-SET2") == -1);
+        assertTrue(page.asXml().indexOf("0-SET2") == -1);
+        assertTrue(page.asXml().indexOf("2-SET1") != -1);
+        assertTrue(page.asXml().indexOf("1-SET1") != -1);
+        assertTrue(page.asXml().indexOf("0-SET1") != -1);
+    }
+}
diff --git a/test/servlet30/facelets/c/src/test/java/com/sun/faces/test/servlet30/facelets/c/Issue2892IT.java b/test/servlet30/facelets/c/src/test/java/com/sun/faces/test/servlet30/facelets/c/Issue2892IT.java
new file mode 100644
index 0000000..6a43bc5
--- /dev/null
+++ b/test/servlet30/facelets/c/src/test/java/com/sun/faces/test/servlet30/facelets/c/Issue2892IT.java
@@ -0,0 +1,74 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.facelets.c;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlElement;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class Issue2892IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testNestedForEach() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/nestedForEach.xhtml");
+        HtmlElement addButton = page.getHtmlElementById("form0:addButton");
+        page = addButton.click();
+        HtmlElement item = page.getHtmlElementById("form0:item0_3");
+        assertTrue(item.asXml().indexOf("item[new3]") != -1);
+    }
+}
diff --git a/test/servlet30/facelets/c/src/test/java/com/sun/faces/test/servlet30/facelets/c/Issue3084IT.java b/test/servlet30/facelets/c/src/test/java/com/sun/faces/test/servlet30/facelets/c/Issue3084IT.java
new file mode 100644
index 0000000..387230f
--- /dev/null
+++ b/test/servlet30/facelets/c/src/test/java/com/sun/faces/test/servlet30/facelets/c/Issue3084IT.java
@@ -0,0 +1,80 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.facelets.c;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.sun.faces.test.junit.JsfTest;
+import com.sun.faces.test.junit.JsfTestRunner;
+import com.sun.faces.test.junit.JsfVersion;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+import org.junit.runner.RunWith;
+
+ at RunWith(JsfTestRunner.class)
+public class Issue3084IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @JsfTest(JsfVersion.JSF_2_2_5)
+    @Test
+    public void testSetForEach() throws Exception {
+        webClient.getOptions().setThrowExceptionOnFailingStatusCode(false);
+        HtmlPage page = webClient.getPage(webUrl + "faces/setForEach.xhtml");
+        assertEquals(200, page.getWebResponse().getStatusCode());
+        assertTrue(page.asXml().indexOf("foo") == -1);
+        assertTrue(page.asXml().indexOf("bar") != -1);
+        assertTrue(page.asXml().indexOf("baz") != -1);
+    }
+}
diff --git a/test/servlet30/facelets/core/nbactions.xml b/test/servlet30/facelets/core/nbactions.xml
new file mode 100644
index 0000000..e8b3f52
--- /dev/null
+++ b/test/servlet30/facelets/core/nbactions.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<actions>
+        <action>
+            <actionName>test.single</actionName>
+            <goals>
+                <goal>test-compile</goal>
+                <goal>surefire:test</goal>
+            </goals>
+            <properties>
+                <test>${packageClassName}</test>
+                <integration.url>http://localhost:8080/test-agnostic-facelets-core/</integration.url>
+            </properties>
+        </action>
+        <action>
+            <actionName>debug.test.single</actionName>
+            <goals>
+                <goal>test-compile</goal>
+                <goal>surefire:test</goal>
+            </goals>
+            <properties>
+                <test>${packageClassName}</test>
+                <forkMode>once</forkMode>
+                <maven.surefire.debug>-Xdebug -Xrunjdwp:transport=dt_socket,server=n,address=${jpda.address}</maven.surefire.debug>
+                <jpda.listen>true</jpda.listen>
+                <integration.url>http://localhost:8080/test-agnostic-facelets-core/</integration.url>
+            </properties>
+        </action>
+        <action>
+            <actionName>run</actionName>
+            <goals>
+                <goal>package</goal>
+            </goals>
+            <properties>
+                
+                <webapp.partialStateSaving>true</webapp.partialStateSaving>
+                <netbeans.deploy>true</netbeans.deploy>
+            </properties>
+        </action>
+    </actions>
diff --git a/test/servlet30/facelets/core/pom.xml b/test/servlet30/facelets/core/pom.xml
new file mode 100644
index 0000000..21f0137
--- /dev/null
+++ b/test/servlet30/facelets/core/pom.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.servlet30.facelets</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.servlet30.facelets</groupId>
+    <artifactId>core</artifactId>
+    <packaging>war</packaging>
+    <name>Mojarra ${project.version} - Test - Servlet 3.0 - Facelets - Core</name>
+    <build>
+        <finalName>test-servlet30-facelets-core</finalName>
+    </build>
+    <properties>
+        <netbeans.hint.deploy.server>gfv3ee6</netbeans.hint.deploy.server>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/test/servlet30/facelets/core/src/main/java/com/sun/faces/test/servlet30/facelets/core/ActionListenerBean.java b/test/servlet30/facelets/core/src/main/java/com/sun/faces/test/servlet30/facelets/core/ActionListenerBean.java
new file mode 100644
index 0000000..b8b4512
--- /dev/null
+++ b/test/servlet30/facelets/core/src/main/java/com/sun/faces/test/servlet30/facelets/core/ActionListenerBean.java
@@ -0,0 +1,61 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.facelets.core;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.event.ActionEvent;
+
+ at ManagedBean
+public class ActionListenerBean {
+
+    private boolean invoked;
+
+    public void listenerWithParam(ActionEvent event) {
+        invoked = true;
+    }
+
+    public void listener() {
+        invoked = true;
+    }
+
+    public boolean isInvoked() {
+        return invoked;
+    }
+}
diff --git a/test/servlet30/facelets/core/src/main/java/com/sun/faces/test/servlet30/facelets/core/CustomComponentHandler.java b/test/servlet30/facelets/core/src/main/java/com/sun/faces/test/servlet30/facelets/core/CustomComponentHandler.java
new file mode 100644
index 0000000..1df66bd
--- /dev/null
+++ b/test/servlet30/facelets/core/src/main/java/com/sun/faces/test/servlet30/facelets/core/CustomComponentHandler.java
@@ -0,0 +1,98 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.test.servlet30.facelets.core;
+
+import java.io.IOException;
+import javax.faces.component.UIComponent;
+import javax.faces.component.UIInput;
+import javax.faces.view.facelets.ComponentConfig;
+import javax.faces.view.facelets.ComponentHandler;
+import javax.faces.view.facelets.FaceletContext;
+import javax.faces.view.facelets.FaceletHandler;
+import javax.faces.view.facelets.Tag;
+import javax.faces.view.facelets.TagConfig;
+
+public class CustomComponentHandler extends ComponentHandler {
+
+    public CustomComponentHandler(final TagConfig config) {
+        super(new ComponentConfig() {
+
+            @Override
+            public String getComponentType() {
+                return UIInput.COMPONENT_TYPE;
+            }
+
+            @Override
+            public String getRendererType() {
+                return "javax.faces.Text";
+            }
+
+            @Override
+            public FaceletHandler getNextHandler() {
+                return config.getNextHandler();
+            }
+
+            @Override
+            public Tag getTag() {
+                return config.getTag();
+            }
+
+            @Override
+            public String getTagId() {
+                return config.getTagId();
+            }
+            
+        });
+    }
+    
+    
+
+    @Override
+    public void apply(FaceletContext ctx, UIComponent parent) throws IOException {
+        ctx.getFacesContext().getAttributes().put("tagHandlerMessage", CustomComponentHandler.class.getSimpleName() +
+                ".apply() called");
+        
+        super.apply(ctx, parent);
+    }
+    
+    
+    
+}
diff --git a/test/servlet30/facelets/core/src/main/java/com/sun/faces/test/servlet30/facelets/core/EnumConverterBean.java b/test/servlet30/facelets/core/src/main/java/com/sun/faces/test/servlet30/facelets/core/EnumConverterBean.java
new file mode 100644
index 0000000..02f9f0e
--- /dev/null
+++ b/test/servlet30/facelets/core/src/main/java/com/sun/faces/test/servlet30/facelets/core/EnumConverterBean.java
@@ -0,0 +1,76 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.facelets.core;
+
+import java.util.HashMap;
+import java.util.Map;
+import javax.faces.bean.ManagedBean;
+import javax.faces.convert.EnumConverter;
+
+ at ManagedBean
+public class EnumConverterBean {
+
+    private Map<String, EnumConverterEnum> choices;
+    private EnumConverterEnum actualChoice;
+    private EnumConverter myEnumConverter = new EnumConverter(EnumConverterEnum.class);
+
+    public EnumConverterBean() {
+        choices = new HashMap<String, EnumConverterEnum>(2);
+
+        choices.put("First choice", EnumConverterEnum.CHOICE_ONE);
+        choices.put("Second choice", EnumConverterEnum.CHOICE_TWO);
+    }
+
+    public EnumConverter getConverter() {
+        return myEnumConverter;
+    }
+
+    public EnumConverterEnum getActualChoice() {
+        return actualChoice;
+    }
+
+    public void setActualChoice(EnumConverterEnum actualChoice) {
+        this.actualChoice = actualChoice;
+    }
+
+    public Map<String, EnumConverterEnum> getChoices() {
+        return choices;
+    }
+}
diff --git a/test/servlet30/facelets/core/src/main/java/com/sun/faces/test/servlet30/facelets/core/EnumConverterEnum.java b/test/servlet30/facelets/core/src/main/java/com/sun/faces/test/servlet30/facelets/core/EnumConverterEnum.java
new file mode 100644
index 0000000..43d7c6c
--- /dev/null
+++ b/test/servlet30/facelets/core/src/main/java/com/sun/faces/test/servlet30/facelets/core/EnumConverterEnum.java
@@ -0,0 +1,47 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.facelets.core;
+
+public enum EnumConverterEnum {
+
+    CHOICE_ONE,
+    CHOICE_TWO,
+    ETC
+}
diff --git a/test/servlet30/facelets/core/src/main/java/com/sun/faces/test/servlet30/facelets/core/ForEachBean.java b/test/servlet30/facelets/core/src/main/java/com/sun/faces/test/servlet30/facelets/core/ForEachBean.java
new file mode 100644
index 0000000..70aa38e
--- /dev/null
+++ b/test/servlet30/facelets/core/src/main/java/com/sun/faces/test/servlet30/facelets/core/ForEachBean.java
@@ -0,0 +1,168 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.facelets.core;
+
+import javax.faces.bean.ManagedBean;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Collections;
+import javax.faces.bean.SessionScoped;
+import javax.faces.context.FacesContext;
+import javax.faces.event.PhaseEvent;
+import javax.faces.event.PhaseId;
+import javax.faces.model.ListDataModel;
+
+ at ManagedBean
+ at SessionScoped
+public class ForEachBean {
+
+    private ArrayList<String> names;
+    private ArrayList<Integer> numbers;
+    private ArrayList<String> repeatValues;
+    private Object [] pages;
+    private ListDataModel dataModel;
+    
+    int count;
+    
+    final int max = 10;
+
+    public ForEachBean() {
+        init();
+        append();
+    }
+    
+    private void init() {
+        count = 0;
+        names = new ArrayList<String>();
+        numbers = new ArrayList<Integer>();
+        repeatValues = new ArrayList<String>();
+        dataModel = new ListDataModel(names);
+
+        Map<String,String> item1 = Collections.singletonMap("page",
+                                                            "includedDynamically01.xhtml");
+        
+        Map<String,String> item2 = Collections.singletonMap("page",
+                                                            "includedDynamically02.xhtml");
+
+        Object [] myPages = { item1, item2 };
+
+        pages = myPages;
+    }
+
+    public int getCount() {
+        return count;
+    }
+    
+    public boolean isEvenCount() {
+        return count % 2 == 0;
+    }
+    
+    private void append() {
+        count++;
+        
+        if (names.size() > 10) {
+            names.clear();
+        }
+        
+        if (numbers.size() > 10) {
+            numbers.clear();
+        }
+        
+        if (repeatValues.size() > 10) {
+            repeatValues.clear();
+        }
+        
+        names.add("Bobby");
+        names.add("Jerry");
+        names.add("Phil");
+        
+        for (int i = 0; i < 3; i++) {
+            numbers.add(new Integer(i));
+        }
+
+        repeatValues.add("Blue");
+        repeatValues.add("Red");
+        repeatValues.add("Green");
+    }
+    
+    public void modify(PhaseEvent e) {
+        if (!e.getPhaseId().equals(PhaseId.APPLY_REQUEST_VALUES)) {
+            return;
+        }
+        append();
+        
+    }
+    
+    public String getReset() {
+        names.clear();
+        numbers.clear();
+        repeatValues.clear();
+        count = 0;
+        
+        append();
+
+        return "true";
+    }
+
+    public ArrayList<String> getRepeatValues() {
+        return repeatValues;
+    }
+    
+    public ArrayList<Integer> getNumbers() {
+        return numbers;
+    }
+    
+    public List<String> getNames() {
+        return names;
+    }
+
+    public Object [] getPages() {
+        return pages;
+    }
+
+    public ListDataModel getDataModel() {
+        return dataModel;
+    }
+    
+    
+    
+}
diff --git a/test/servlet30/facelets/core/src/main/java/com/sun/faces/test/servlet30/facelets/core/MetadataShortCircuitBean.java b/test/servlet30/facelets/core/src/main/java/com/sun/faces/test/servlet30/facelets/core/MetadataShortCircuitBean.java
new file mode 100644
index 0000000..53ecbcc
--- /dev/null
+++ b/test/servlet30/facelets/core/src/main/java/com/sun/faces/test/servlet30/facelets/core/MetadataShortCircuitBean.java
@@ -0,0 +1,71 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.facelets.core;
+
+import java.io.Serializable;
+import java.util.Map;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.RequestScoped;
+import javax.faces.context.FacesContext;
+
+ at RequestScoped
+ at ManagedBean(name = "metadataShortCircuitBean")
+public class MetadataShortCircuitBean implements Serializable {
+
+    void appendMessage(String message) {
+        FacesContext context = FacesContext.getCurrentInstance();
+        Map<String, Object> requestMap = context.getExternalContext().getRequestMap();
+        StringBuilder builder;
+        builder = (StringBuilder) requestMap.get("builder");
+        if (null == builder) {
+            builder = new StringBuilder();
+            requestMap.put("builder", builder);
+        }
+        builder.append(message);
+    }
+
+    public String getMessage() {
+        FacesContext context = FacesContext.getCurrentInstance();
+        Map<String, Object> requestMap = context.getExternalContext().getRequestMap();
+        String result = (requestMap.containsKey("builder")) ? ((StringBuilder) requestMap.get("builder")).toString() : "no message";
+
+        return result;
+    }
+}
diff --git a/test/servlet30/facelets/core/src/main/java/com/sun/faces/test/servlet30/facelets/core/MetadataShortCircuitPhaseListener.java b/test/servlet30/facelets/core/src/main/java/com/sun/faces/test/servlet30/facelets/core/MetadataShortCircuitPhaseListener.java
new file mode 100644
index 0000000..b3a1a5b
--- /dev/null
+++ b/test/servlet30/facelets/core/src/main/java/com/sun/faces/test/servlet30/facelets/core/MetadataShortCircuitPhaseListener.java
@@ -0,0 +1,75 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.facelets.core;
+
+import java.util.Map;
+import javax.faces.context.FacesContext;
+import javax.faces.event.PhaseEvent;
+import javax.faces.event.PhaseId;
+import javax.faces.event.PhaseListener;
+
+public class MetadataShortCircuitPhaseListener implements PhaseListener {
+
+    @Override
+    public void afterPhase(PhaseEvent event) {
+    }
+
+    @Override
+    public void beforePhase(PhaseEvent event) {
+        MetadataShortCircuitBean bean = getUserBean(event.getFacesContext());
+        bean.appendMessage(" beforePhase " + event.getPhaseId().toString());
+    }
+
+    private MetadataShortCircuitBean getUserBean(FacesContext context) {
+        Map<String, Object> requestScope = context.getExternalContext().getRequestMap();
+        MetadataShortCircuitBean result = (MetadataShortCircuitBean) requestScope.get("metadataShortCircuitBean");
+        if (null == result) {
+            result = new MetadataShortCircuitBean();
+            requestScope.put("metadataShortCircuitBean", result);
+        }
+
+        return result;
+    }
+
+    @Override
+    public PhaseId getPhaseId() {
+        return PhaseId.ANY_PHASE;
+    }
+}
diff --git a/test/servlet30/facelets/core/src/main/java/com/sun/faces/test/servlet30/facelets/core/OutcomeTestFirstBean.java b/test/servlet30/facelets/core/src/main/java/com/sun/faces/test/servlet30/facelets/core/OutcomeTestFirstBean.java
new file mode 100644
index 0000000..4309600
--- /dev/null
+++ b/test/servlet30/facelets/core/src/main/java/com/sun/faces/test/servlet30/facelets/core/OutcomeTestFirstBean.java
@@ -0,0 +1,67 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+
+package com.sun.faces.test.servlet30.facelets.core;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.RequestScoped;
+
+ at ManagedBean
+ at RequestScoped
+public class OutcomeTestFirstBean
+{
+    private Long firstId = null;
+
+    public Long getFirstId()
+    {
+        return firstId;
+    }
+
+    public void setFirstId(Long firstId)
+    {
+        this.firstId = firstId;
+    }
+    
+    public String justAnAction()
+    {
+        return null;
+    }
+}
diff --git a/test/servlet30/facelets/core/src/main/java/com/sun/faces/test/servlet30/facelets/core/OutcomeTestSecondBean.java b/test/servlet30/facelets/core/src/main/java/com/sun/faces/test/servlet30/facelets/core/OutcomeTestSecondBean.java
new file mode 100644
index 0000000..bf93e33
--- /dev/null
+++ b/test/servlet30/facelets/core/src/main/java/com/sun/faces/test/servlet30/facelets/core/OutcomeTestSecondBean.java
@@ -0,0 +1,70 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+
+package com.sun.faces.test.servlet30.facelets.core;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.RequestScoped;
+
+ at ManagedBean
+ at RequestScoped
+public class OutcomeTestSecondBean
+{
+    private Long secondId = null;
+    
+    public Long getSecondId()
+    {
+        return secondId;
+    }
+
+    public void setSecondId(Long secondId)
+    {
+        this.secondId = secondId;
+    }
+
+    public void load() throws Exception
+    {
+        if (secondId == null)
+        {
+            throw new Exception("BOOM");
+        }
+    }
+}
diff --git a/test/servlet30/facelets/core/src/main/java/com/sun/faces/test/servlet30/facelets/core/PassThroughAttribute1Bean.java b/test/servlet30/facelets/core/src/main/java/com/sun/faces/test/servlet30/facelets/core/PassThroughAttribute1Bean.java
new file mode 100644
index 0000000..bba65ce
--- /dev/null
+++ b/test/servlet30/facelets/core/src/main/java/com/sun/faces/test/servlet30/facelets/core/PassThroughAttribute1Bean.java
@@ -0,0 +1,54 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.facelets.core;
+
+import java.io.Serializable;
+import java.util.Date;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.RequestScoped;
+
+ at ManagedBean
+ at RequestScoped
+public class PassThroughAttribute1Bean implements Serializable {
+    
+    public Date getDate() {
+        return new Date();
+    }
+}
diff --git a/test/servlet30/facelets/core/src/main/java/com/sun/faces/test/servlet30/facelets/core/PhaseListener1Bean.java b/test/servlet30/facelets/core/src/main/java/com/sun/faces/test/servlet30/facelets/core/PhaseListener1Bean.java
new file mode 100644
index 0000000..3dac3df
--- /dev/null
+++ b/test/servlet30/facelets/core/src/main/java/com/sun/faces/test/servlet30/facelets/core/PhaseListener1Bean.java
@@ -0,0 +1,113 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.facelets.core;
+
+import java.util.List;
+import javax.annotation.PostConstruct;
+import javax.faces.application.FacesMessage;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.RequestScoped;
+import javax.faces.component.UIViewRoot;
+import javax.faces.context.FacesContext;
+import javax.faces.event.PhaseEvent;
+import javax.faces.event.PhaseId;
+import javax.faces.event.PhaseListener;
+
+ at ManagedBean(name = "phaseListener1Bean")
+ at RequestScoped
+public class PhaseListener1Bean {
+    
+    private PhaseListener listener;
+    
+    @PostConstruct
+    public void initialize() {
+        listener = new PhaseListener() {
+            public void afterPhase(PhaseEvent event) {
+
+            }
+
+            public void beforePhase(PhaseEvent event) {
+
+            }
+
+            public PhaseId getPhaseId() {
+                return PhaseId.ANY_PHASE;
+            }
+        };
+    }
+    
+    public void submit() {
+
+        FacesContext ctx = FacesContext.getCurrentInstance();
+        UIViewRoot viewRoot = ctx.getViewRoot();
+        List<PhaseListener> listeners = viewRoot.getPhaseListeners();
+        
+        if (listeners == null || listeners.isEmpty()) {
+            FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_ERROR,
+                                                "ERROR: No listeners registered",
+                                                "ERROR: No listeners registered");
+            ctx.addMessage(null, msg);
+        }
+        
+        if (listeners.size() > 1) {
+            String message = "ERROR: Expected one registered listener but found: " + listeners.size();
+            FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_ERROR,
+                                                message,
+                                                message);
+            ctx.addMessage(null, msg);
+        }
+    }
+
+    public PhaseListener getListener() {
+        return new PhaseListener() {
+            public void afterPhase(PhaseEvent event) {
+
+            }
+
+            public void beforePhase(PhaseEvent event) {
+
+            }
+
+            public PhaseId getPhaseId() {
+                return PhaseId.ANY_PHASE;
+            }
+        };
+    }
+}
diff --git a/test/servlet30/facelets/core/src/main/java/com/sun/faces/test/servlet30/facelets/core/RequestEncodingBean.java b/test/servlet30/facelets/core/src/main/java/com/sun/faces/test/servlet30/facelets/core/RequestEncodingBean.java
new file mode 100644
index 0000000..f9e489b
--- /dev/null
+++ b/test/servlet30/facelets/core/src/main/java/com/sun/faces/test/servlet30/facelets/core/RequestEncodingBean.java
@@ -0,0 +1,52 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.facelets.core;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.context.FacesContext;
+
+ at ManagedBean(name = "requestEncodingBean")
+public class RequestEncodingBean {
+
+    public String getEncoding() {
+        FacesContext context = FacesContext.getCurrentInstance();
+        return context.getExternalContext().getRequestCharacterEncoding();
+    }
+}
diff --git a/test/servlet30/facelets/core/src/main/java/com/sun/faces/test/servlet30/facelets/core/RequestEncodingPhaseListener.java b/test/servlet30/facelets/core/src/main/java/com/sun/faces/test/servlet30/facelets/core/RequestEncodingPhaseListener.java
new file mode 100644
index 0000000..f94cfad
--- /dev/null
+++ b/test/servlet30/facelets/core/src/main/java/com/sun/faces/test/servlet30/facelets/core/RequestEncodingPhaseListener.java
@@ -0,0 +1,69 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.facelets.core;
+
+import java.io.UnsupportedEncodingException;
+import javax.faces.context.FacesContext;
+import javax.faces.event.PhaseEvent;
+import javax.faces.event.PhaseId;
+import javax.faces.event.PhaseListener;
+
+public class RequestEncodingPhaseListener implements PhaseListener {
+
+    @Override
+    public void afterPhase(PhaseEvent event) {
+    }
+    
+    @Override
+    public void beforePhase(PhaseEvent event) {
+        FacesContext context = event.getFacesContext();
+        if (context.getExternalContext().getRequestPathInfo().contains("phaseListenerRequestEncoding.xhtml")) {
+            try {
+                context.getExternalContext().setRequestCharacterEncoding("ISO-8859-1");
+            } catch (UnsupportedEncodingException e) {
+            }
+        }
+    }
+
+    @Override
+    public PhaseId getPhaseId() {
+        return PhaseId.ANY_PHASE;
+    }
+}
diff --git a/test/servlet30/facelets/core/src/main/java/com/sun/faces/test/servlet30/facelets/core/SubviewBean.java b/test/servlet30/facelets/core/src/main/java/com/sun/faces/test/servlet30/facelets/core/SubviewBean.java
new file mode 100644
index 0000000..5fed3b2
--- /dev/null
+++ b/test/servlet30/facelets/core/src/main/java/com/sun/faces/test/servlet30/facelets/core/SubviewBean.java
@@ -0,0 +1,65 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.test.servlet30.facelets.core;
+
+import java.io.Serializable;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.SessionScoped;
+
+ at ManagedBean
+ at SessionScoped
+public class SubviewBean implements Serializable {
+    
+    private static final long serialVersionUID = -8036913177462873553L;
+    
+    private boolean rendered = false;
+
+    public boolean isRendered() {
+        return rendered;
+    }
+
+    public void setRendered(boolean rendered) {
+        this.rendered = rendered;
+    }
+    
+    
+    
+}
diff --git a/test/servlet30/facelets/core/src/main/java/com/sun/faces/test/servlet30/facelets/core/ValidateBeanDisabledBean.java b/test/servlet30/facelets/core/src/main/java/com/sun/faces/test/servlet30/facelets/core/ValidateBeanDisabledBean.java
new file mode 100644
index 0000000..d44f19a
--- /dev/null
+++ b/test/servlet30/facelets/core/src/main/java/com/sun/faces/test/servlet30/facelets/core/ValidateBeanDisabledBean.java
@@ -0,0 +1,21 @@
+package com.sun.faces.test.servlet30.facelets.core;
+
+import javax.faces.application.FacesMessage;
+import javax.faces.context.FacesContext;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.RequestScoped;
+
+ at ManagedBean(name = "validateBeanDisabledBean")
+ at RequestScoped
+public class ValidateBeanDisabledBean {
+
+    private ValidateBeanDisabledFoo foo = new ValidateBeanDisabledFoo();
+
+    public ValidateBeanDisabledFoo getFoo() {
+        return this.foo;
+    }
+
+    public void submit() {
+        FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("SUCCESS! Name set to '" + this.foo.getName() + "'"));
+    }
+}
diff --git a/test/servlet30/facelets/core/src/main/java/com/sun/faces/test/servlet30/facelets/core/ValidateBeanDisabledFoo.java b/test/servlet30/facelets/core/src/main/java/com/sun/faces/test/servlet30/facelets/core/ValidateBeanDisabledFoo.java
new file mode 100644
index 0000000..02b82eb
--- /dev/null
+++ b/test/servlet30/facelets/core/src/main/java/com/sun/faces/test/servlet30/facelets/core/ValidateBeanDisabledFoo.java
@@ -0,0 +1,17 @@
+package com.sun.faces.test.servlet30.facelets.core;
+
+import javax.validation.constraints.Size;
+
+public class ValidateBeanDisabledFoo {
+
+    @Size(min = 1)
+    private String name;
+
+    public String getName() {
+        return this.name;
+    }
+
+    public void setName(final String name) {
+        this.name = name;
+    }
+}
diff --git a/test/servlet30/facelets/core/src/main/java/com/sun/faces/test/servlet30/facelets/core/ValidateRequiredBean.java b/test/servlet30/facelets/core/src/main/java/com/sun/faces/test/servlet30/facelets/core/ValidateRequiredBean.java
new file mode 100644
index 0000000..6777320
--- /dev/null
+++ b/test/servlet30/facelets/core/src/main/java/com/sun/faces/test/servlet30/facelets/core/ValidateRequiredBean.java
@@ -0,0 +1,30 @@
+package com.sun.faces.test.servlet30.facelets.core;
+
+import java.io.Serializable;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.ViewScoped;
+
+ at ManagedBean
+ at ViewScoped
+public class ValidateRequiredBean implements Serializable {
+
+    private static final long serialVersionUID = -8114872795707646008L;
+    private String text1;
+    private String text2;
+
+    public String getText1() {
+        return text1;
+    }
+
+    public void setText1(String text1) {
+        this.text1 = text1;
+    }
+
+    public String getText2() {
+        return text2;
+    }
+
+    public void setText2(String text2) {
+        this.text2 = text2;
+    }
+}
diff --git a/test/servlet30/facelets/core/src/main/java/com/sun/faces/test/servlet30/facelets/core/ViewActionBean.java b/test/servlet30/facelets/core/src/main/java/com/sun/faces/test/servlet30/facelets/core/ViewActionBean.java
new file mode 100644
index 0000000..02f1d3f
--- /dev/null
+++ b/test/servlet30/facelets/core/src/main/java/com/sun/faces/test/servlet30/facelets/core/ViewActionBean.java
@@ -0,0 +1,122 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.facelets.core;
+
+import java.util.Map;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.ManagedProperty;
+import javax.faces.bean.RequestScoped;
+import javax.faces.context.FacesContext;
+import javax.faces.event.AbortProcessingException;
+import javax.faces.event.ActionEvent;
+import javax.faces.event.ActionListener;
+
+ at RequestScoped
+ at ManagedBean
+public class ViewActionBean {
+
+    @ManagedProperty(value = "#{facesContext}")
+    private FacesContext context;
+
+    public String action() {
+        return "viewActionResult";
+    }
+
+    public String pageA() {
+        getContext().getExternalContext().getRequestMap().put("message", "pageA action");
+        return "pageA";
+    }
+
+    public String pageAExplicitRedirect() {
+        getContext().getExternalContext().getRequestMap().put("message", "pageA explicit redirect");
+        return "pageAExplicitRedirect";
+    }
+
+    public String returnEmpty() {
+        getContext().getExternalContext().getRequestMap().put("message", "pageA empty");
+        return "";
+    }
+
+    public String returnNull() {
+        getContext().getExternalContext().getRequestMap().put("message", "pageA null");
+        return null;
+    }
+
+    public FacesContext getContext() {
+        return context;
+    }
+
+    public void setContext(FacesContext context) {
+        this.context = context;
+    }
+
+    private static class ActionListenerImpl implements ActionListener {
+
+        private final String id;
+
+        private ActionListenerImpl(String id) {
+            this.id = id;
+        }
+
+        @Override
+        public void processAction(ActionEvent event) throws AbortProcessingException {
+            FacesContext context = FacesContext.getCurrentInstance();
+            Map<String, Object> sessionMap = context.getExternalContext().getSessionMap();
+
+            String message = (String) sessionMap.get("message");
+            message = (null == message) ? "" : message + " ";
+            message = message + id + " " + event.getComponent().getId();
+            sessionMap.put("message", message);
+        }
+    }
+
+    public ActionListener getActionListener1() {
+        return new ActionListenerImpl("1");
+    }
+
+    public ActionListener getActionListener2() {
+        return new ActionListenerImpl("2");
+    }
+
+    public void actionListenerMethod(ActionEvent event) {
+        ActionListenerImpl actionListener = new ActionListenerImpl("method");
+        actionListener.processAction(event);
+    }
+}
diff --git a/test/servlet30/facelets/core/src/main/java/com/sun/faces/test/servlet30/facelets/core/ViewParam2Bean.java b/test/servlet30/facelets/core/src/main/java/com/sun/faces/test/servlet30/facelets/core/ViewParam2Bean.java
new file mode 100644
index 0000000..89ca728
--- /dev/null
+++ b/test/servlet30/facelets/core/src/main/java/com/sun/faces/test/servlet30/facelets/core/ViewParam2Bean.java
@@ -0,0 +1,60 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.facelets.core;
+
+import java.io.Serializable;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.ViewScoped;
+
+ at ManagedBean(name = "viewParam2Bean")
+ at ViewScoped
+public class ViewParam2Bean implements Serializable {
+
+    private static final long serialVersionUID = -3435711221871111117L;
+    private String text;
+
+    public String getText() {
+        return text;
+    }
+
+    public void setText(String text) {
+        this.text = text;
+    }
+}
diff --git a/test/servlet30/facelets/core/src/main/java/com/sun/faces/test/servlet30/facelets/core/ViewParam3Bean.java b/test/servlet30/facelets/core/src/main/java/com/sun/faces/test/servlet30/facelets/core/ViewParam3Bean.java
new file mode 100644
index 0000000..e905689
--- /dev/null
+++ b/test/servlet30/facelets/core/src/main/java/com/sun/faces/test/servlet30/facelets/core/ViewParam3Bean.java
@@ -0,0 +1,61 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.facelets.core;
+
+import java.io.Serializable;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.ViewScoped;
+
+ at ManagedBean(name = "viewParam3Bean")
+ at ViewScoped
+public class ViewParam3Bean implements Serializable {
+
+    private static final long serialVersionUID = 177753694001912524L;
+    private String text;
+
+    public String getText() {
+        return text;
+    }
+
+    public void setText(final String text) {
+        this.text = text;
+    }
+}
diff --git a/test/servlet30/facelets/core/src/main/java/com/sun/faces/test/servlet30/facelets/core/ViewParam5Bean.java b/test/servlet30/facelets/core/src/main/java/com/sun/faces/test/servlet30/facelets/core/ViewParam5Bean.java
new file mode 100644
index 0000000..8060dcc
--- /dev/null
+++ b/test/servlet30/facelets/core/src/main/java/com/sun/faces/test/servlet30/facelets/core/ViewParam5Bean.java
@@ -0,0 +1,31 @@
+package com.sun.faces.test.servlet30.facelets.core;
+
+import java.io.Serializable;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.ViewScoped;
+
+ at ManagedBean(name = "viewParam5Bean")
+ at ViewScoped
+public class ViewParam5Bean implements Serializable {
+
+    private static final long serialVersionUID = -3435711221871111117L;
+    private String text1;
+    private String text2;
+
+    public String getText1() {
+        return text1;
+    }
+
+    public void setText1(String text1) {
+        this.text1 = text1;
+    }
+
+    public String getText2() {
+        return text2;
+    }
+
+    public void setText2(String text2) {
+        this.text2 = text2;
+    }
+}
diff --git a/test/servlet30/facelets/core/src/main/java/com/sun/faces/test/servlet30/facelets/core/ViewParam6Bean.java b/test/servlet30/facelets/core/src/main/java/com/sun/faces/test/servlet30/facelets/core/ViewParam6Bean.java
new file mode 100644
index 0000000..f04e3d8
--- /dev/null
+++ b/test/servlet30/facelets/core/src/main/java/com/sun/faces/test/servlet30/facelets/core/ViewParam6Bean.java
@@ -0,0 +1,29 @@
+package com.sun.faces.test.servlet30.facelets.core;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.ViewScoped;
+
+ at ManagedBean(name = "viewParam6Bean")
+ at ViewScoped
+public class ViewParam6Bean {
+
+    private static final long serialVersionUID = 177753694001912524L;
+    private String text1;
+    private String text2;
+
+    public String getText1() {
+        return text1;
+    }
+
+    public void setText1(String text1) {
+        this.text1 = text1;
+    }
+
+    public String getText2() {
+        return text2;
+    }
+
+    public void setText2(String text2) {
+        this.text2 = text2;
+    }
+}
diff --git a/test/servlet30/facelets/core/src/main/java/com/sun/faces/test/servlet30/facelets/core/ViewParam7Bean.java b/test/servlet30/facelets/core/src/main/java/com/sun/faces/test/servlet30/facelets/core/ViewParam7Bean.java
new file mode 100644
index 0000000..dd87c7c
--- /dev/null
+++ b/test/servlet30/facelets/core/src/main/java/com/sun/faces/test/servlet30/facelets/core/ViewParam7Bean.java
@@ -0,0 +1,30 @@
+package com.sun.faces.test.servlet30.facelets.core;
+
+import java.io.Serializable;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.ViewScoped;
+
+ at ManagedBean
+ at ViewScoped
+public class ViewParam7Bean implements Serializable {
+
+    private static final long serialVersionUID = -8114872795707646008L;
+    private String text1;
+    private String text2;
+
+    public String getText1() {
+        return text1;
+    }
+
+    public void setText1(String text1) {
+        this.text1 = text1;
+    }
+
+    public String getText2() {
+        return text2;
+    }
+
+    public void setText2(String text2) {
+        this.text2 = text2;
+    }
+}
diff --git a/test/servlet30/facelets/core/src/main/java/com/sun/faces/test/servlet30/facelets/core/ViewParamBean.java b/test/servlet30/facelets/core/src/main/java/com/sun/faces/test/servlet30/facelets/core/ViewParamBean.java
new file mode 100644
index 0000000..03ed521
--- /dev/null
+++ b/test/servlet30/facelets/core/src/main/java/com/sun/faces/test/servlet30/facelets/core/ViewParamBean.java
@@ -0,0 +1,65 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.facelets.core;
+
+import java.io.Serializable;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.RequestScoped;
+import javax.faces.context.FacesContext;
+
+ at ManagedBean
+ at RequestScoped
+public class ViewParamBean implements Serializable {
+
+    private String value;
+
+    public String getValue() {
+        return value;
+    }
+
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+    public String submit() {
+        String viewId = FacesContext.getCurrentInstance().getViewRoot().getViewId();
+        return viewId + "?faces-redirect=true&includeViewParams=true";
+    }
+}
diff --git a/test/servlet30/facelets/core/src/main/java/com/sun/faces/test/servlet30/facelets/core/ViewParamLocaleBean.java b/test/servlet30/facelets/core/src/main/java/com/sun/faces/test/servlet30/facelets/core/ViewParamLocaleBean.java
new file mode 100644
index 0000000..b18b950
--- /dev/null
+++ b/test/servlet30/facelets/core/src/main/java/com/sun/faces/test/servlet30/facelets/core/ViewParamLocaleBean.java
@@ -0,0 +1,64 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.facelets.core;
+
+import java.util.Locale;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.SessionScoped;
+import javax.faces.convert.Converter;
+
+ at ManagedBean
+ at SessionScoped
+public class ViewParamLocaleBean {
+
+    private Locale locale = Locale.ITALIAN;
+    
+    public Converter getConverter() {
+        return new ViewParamLocaleConverter();
+    }
+
+    public String getLanguage() {
+        return locale.getLanguage();
+    }
+
+    public Locale getLocale() {
+        return this.locale;
+    }
+}
diff --git a/test/servlet30/facelets/core/src/main/java/com/sun/faces/test/servlet30/facelets/core/ViewParamLocaleConverter.java b/test/servlet30/facelets/core/src/main/java/com/sun/faces/test/servlet30/facelets/core/ViewParamLocaleConverter.java
new file mode 100644
index 0000000..641fc00
--- /dev/null
+++ b/test/servlet30/facelets/core/src/main/java/com/sun/faces/test/servlet30/facelets/core/ViewParamLocaleConverter.java
@@ -0,0 +1,64 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.facelets.core;
+
+import java.util.ResourceBundle;
+import javax.faces.application.FacesMessage;
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.convert.Converter;
+import javax.faces.convert.ConverterException;
+
+public class ViewParamLocaleConverter implements Converter {
+
+    @Override
+    public Object getAsObject(FacesContext context, UIComponent component, String value) {
+        ResourceBundle bundle = context.getApplication()
+                .evaluateExpressionGet(context, "#{messages}", ResourceBundle.class);
+        String message = bundle.getString("viewParamLocaleMessage");
+        throw new ConverterException(
+                new FacesMessage(FacesMessage.SEVERITY_ERROR, message, null));
+    }
+
+    @Override
+    public String getAsString(FacesContext context, UIComponent component, Object value) {
+        throw new UnsupportedOperationException();
+    }
+}
diff --git a/test/servlet30/facelets/core/src/main/resources/com/sun/faces/test/servlet30/facelets/core/Messages.properties b/test/servlet30/facelets/core/src/main/resources/com/sun/faces/test/servlet30/facelets/core/Messages.properties
new file mode 100644
index 0000000..68471ec
--- /dev/null
+++ b/test/servlet30/facelets/core/src/main/resources/com/sun/faces/test/servlet30/facelets/core/Messages.properties
@@ -0,0 +1 @@
+viewParamLocaleMessage=Definitely not Italian
\ No newline at end of file
diff --git a/test/servlet30/facelets/core/src/main/resources/com/sun/faces/test/servlet30/facelets/core/Messages_it.properties b/test/servlet30/facelets/core/src/main/resources/com/sun/faces/test/servlet30/facelets/core/Messages_it.properties
new file mode 100644
index 0000000..184c157
--- /dev/null
+++ b/test/servlet30/facelets/core/src/main/resources/com/sun/faces/test/servlet30/facelets/core/Messages_it.properties
@@ -0,0 +1 @@
+viewParamLocaleMessage=This ought to be Italian
\ No newline at end of file
diff --git a/test/servlet30/facelets/core/src/main/webapp/WEB-INF/custom.taglib.xml b/test/servlet30/facelets/core/src/main/webapp/WEB-INF/custom.taglib.xml
new file mode 100644
index 0000000..81b3937
--- /dev/null
+++ b/test/servlet30/facelets/core/src/main/webapp/WEB-INF/custom.taglib.xml
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<facelet-taglib xmlns="http://java.sun.com/xml/ns/javaee"
+              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+              xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facelettaglibrary_2_0.xsd"
+              version="2.0">
+    <namespace>http://jsf.java.net/subview</namespace>
+    <tag>
+        <tag-name>custom</tag-name>
+        <handler-class>com.sun.faces.test.servlet30.facelets.core.CustomComponentHandler</handler-class>
+    </tag>
+
+</facelet-taglib>
diff --git a/test/servlet30/facelets/core/src/main/webapp/WEB-INF/faces-config.xml b/test/servlet30/facelets/core/src/main/webapp/WEB-INF/faces-config.xml
new file mode 100644
index 0000000..94b58bf
--- /dev/null
+++ b/test/servlet30/facelets/core/src/main/webapp/WEB-INF/faces-config.xml
@@ -0,0 +1,57 @@
+<?xml version='1.0' encoding='UTF-8'?>
+
+<faces-config version="2.0"
+              xmlns="http://java.sun.com/xml/ns/javaee"
+              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+              xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd">
+    <application>
+        <resource-bundle>
+            <base-name>com.sun.faces.test.servlet30.facelets.core.Messages</base-name>
+            <var>messages</var>
+        </resource-bundle>
+    </application>
+    <lifecycle>
+        <phase-listener>com.sun.faces.test.servlet30.facelets.core.MetadataShortCircuitPhaseListener</phase-listener>
+        <phase-listener>com.sun.faces.test.servlet30.facelets.core.RequestEncodingPhaseListener</phase-listener>
+    </lifecycle>
+    <navigation-rule>
+        <from-view-id>*</from-view-id>
+        <navigation-case>
+            <from-outcome>explicit</from-outcome>
+            <to-view-id>/viewParam.xhtml</to-view-id>
+            <redirect include-view-params="true">
+                <view-param>
+                    <name>elViewParam</name>
+                    <value>#{3 + 3}</value>
+                </view-param>
+            </redirect>
+        </navigation-case>
+    </navigation-rule>
+    <navigation-rule>
+        <navigation-case>
+            <from-outcome>viewParam7</from-outcome>
+            <to-view-id>/viewParam7.xhtml</to-view-id>
+            <redirect>
+                <view-param>
+                    <name>viewparam</name>
+                    <value>#{2+3}</value>
+                </view-param>
+            </redirect>
+        </navigation-case>
+    </navigation-rule>
+    <navigation-rule>
+        <from-view-id>/viewActionPageA.xhtml</from-view-id>
+        <navigation-case>
+            <from-outcome>pageA</from-outcome>
+            <to-view-id>/viewActionPageA.xhtml</to-view-id>
+        </navigation-case>
+    </navigation-rule>
+    <navigation-rule>
+        <from-view-id>/viewActionActionExplicitRedirect.xhtml</from-view-id>
+        <navigation-case>
+            <from-outcome>pageAExplicitRedirect</from-outcome>
+            <to-view-id>/viewActionActionExplicitRedirect.xhtml</to-view-id>
+            <redirect />
+        </navigation-case>
+    </navigation-rule>
+</faces-config>
diff --git a/test/servlet30/facelets/core/src/main/webapp/WEB-INF/glassfish-web.xml b/test/servlet30/facelets/core/src/main/webapp/WEB-INF/glassfish-web.xml
new file mode 100644
index 0000000..4ac2ce4
--- /dev/null
+++ b/test/servlet30/facelets/core/src/main/webapp/WEB-INF/glassfish-web.xml
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<glassfish-web-app error-url="">
+  <context-root>/test-servlet30-facelets-core</context-root>
+  <class-loader delegate="true"/>
+  <jsp-config>
+    <property name="keepgenerated" value="true">
+      <description>Keep a copy of the generated servlet class' java code.</description>
+    </property>
+  </jsp-config>
+</glassfish-web-app>
diff --git a/test/servlet30/facelets/core/src/main/webapp/WEB-INF/web.xml b/test/servlet30/facelets/core/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..9ae5627
--- /dev/null
+++ b/test/servlet30/facelets/core/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>${webapp.projectStage}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
+        <param-value>${webapp.partialStateSaving}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>${webapp.stateSavingMethod}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.FACELETS_LIBRARIES</param-name>
+        <param-value>/WEB-INF/custom.taglib.xml</param-value>
+    </context-param>
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <session-config>
+        <session-timeout>30</session-timeout>
+    </session-config>
+    <welcome-file-list>
+        <welcome-file>faces/index.xhtml</welcome-file>
+    </welcome-file-list>
+</web-app>
diff --git a/test/servlet30/facelets/core/src/main/webapp/actionlistener.xhtml b/test/servlet30/facelets/core/src/main/webapp/actionlistener.xhtml
new file mode 100644
index 0000000..187b783
--- /dev/null
+++ b/test/servlet30/facelets/core/src/main/webapp/actionlistener.xhtml
@@ -0,0 +1,58 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+    xmlns:h="http://java.sun.com/jsf/html"
+    xmlns:f="http://java.sun.com/jsf/core"
+    xmlns:ui="http://java.sun.com/jsf/facelets">
+
+<h:body>
+
+    Listener invoked: #{actionListenerBean.invoked}
+
+    <h:form id="form">
+        <ui:include src="/include.xhtml" />
+    </h:form>
+    
+</h:body>
+</html>
diff --git a/test/servlet30/facelets/core/src/main/webapp/cifRenderedFalse.xhtml b/test/servlet30/facelets/core/src/main/webapp/cifRenderedFalse.xhtml
new file mode 100644
index 0000000..1b332ef
--- /dev/null
+++ b/test/servlet30/facelets/core/src/main/webapp/cifRenderedFalse.xhtml
@@ -0,0 +1,36 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:c="http://java.sun.com/jsp/jstl/core"
+      xmlns:my="http://jsf.java.net/subview">
+    <h:head>
+        <title>Bug18329103</title>
+    </h:head>
+    <h:body>
+        <p>Bug18329103</p>
+        
+        <h:form prependId="false">
+            <p>render subview: <h:selectBooleanCheckbox id="checkbox" value="#{subviewBean.rendered}" /></p>
+            
+            <p><h:commandButton id="button" value="submit" /></p>
+            
+        </h:form>
+        
+        <f:subview id="subview">
+
+          <c:if test="#{subviewBean.rendered}">
+            
+            <p><my:custom id="custom1" /></p>
+            <p><my:custom id="custom2" /></p>
+
+          </c:if>
+            
+        </f:subview>
+        
+        <p id="subviewsRenderedMessage">#{facesContext.attributes.tagHandlerMessage}</p>
+        
+    </h:body>
+</html>
+
diff --git a/test/servlet30/facelets/core/src/main/webapp/enumConverter.xhtml b/test/servlet30/facelets/core/src/main/webapp/enumConverter.xhtml
new file mode 100644
index 0000000..8e4233b
--- /dev/null
+++ b/test/servlet30/facelets/core/src/main/webapp/enumConverter.xhtml
@@ -0,0 +1,59 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:h="http://java.sun.com/jsf/html"> 
+    <h:head>
+    </h:head>
+    <h:body>
+        <h:form id="form">
+            <h:selectOneMenu value="#{enumConverterBean.actualChoice}" converter="#{enumConverterBean.converter}">
+                <f:selectItem noSelectionOption="true" itemValue="#{null}" itemLabel="No selection"/>
+                <f:selectItems value="#{enumConverterBean.choices}"/>
+            </h:selectOneMenu>
+            <h:commandButton id="submit" value="Click me, I'm here!" />
+            <h:messages />
+            <h:outputText value="Selected value = #{enumConverterBean.actualChoice == null ? 'NULL' : enumConverterBean.actualChoice}" />
+        </h:form>
+    </h:body>
+</html>
diff --git a/test/servlet30/facelets/core/src/main/webapp/forEach/false_false_false_false_false_false_false_false_false.xhtml b/test/servlet30/facelets/core/src/main/webapp/forEach/false_false_false_false_false_false_false_false_false.xhtml
new file mode 100644
index 0000000..9abbc99
--- /dev/null
+++ b/test/servlet30/facelets/core/src/main/webapp/forEach/false_false_false_false_false_false_false_false_false.xhtml
@@ -0,0 +1,84 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+    xmlns:h="http://java.sun.com/jsf/html"
+    xmlns:f="http://java.sun.com/jsf/core"
+    xmlns:ui="http://java.sun.com/jsf/facelets"
+    xmlns:c="http://java.sun.com/jsp/jstl/core">
+    
+    <f:view beforePhase="#{forEachBean.modify}">
+
+<h:head>
+<title>forEach</title>
+</h:head>
+
+<h:body>
+    
+<h:form prependId="false" id="form01">
+
+<c:forEach items="#{forEachBean.names}" var="outer">
+
+<p> 
+
+<h:inputText disabled="true" value="#{outer}" /> 
+
+<h:inputText disabled="true" id="literalId" value="#{outer}" /> 
+
+</p>
+
+</c:forEach>
+
+<h:commandButton id="submit" value="submit" />
+
+<h:commandButton id="submitAjax" value="submitAjax">
+  <f:ajax execute="@form" render="@form" />
+</h:commandButton>
+
+</h:form>
+
+</h:body>
+        
+    </f:view>
+
+</html>
diff --git a/test/servlet30/facelets/core/src/main/webapp/forEach/false_false_false_false_false_false_false_false_true.xhtml b/test/servlet30/facelets/core/src/main/webapp/forEach/false_false_false_false_false_false_false_false_true.xhtml
new file mode 100644
index 0000000..6ef6151
--- /dev/null
+++ b/test/servlet30/facelets/core/src/main/webapp/forEach/false_false_false_false_false_false_false_false_true.xhtml
@@ -0,0 +1,77 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+    xmlns:h="http://java.sun.com/jsf/html"
+    xmlns:f="http://java.sun.com/jsf/core"
+    xmlns:ui="http://java.sun.com/jsf/facelets"
+    xmlns:c="http://java.sun.com/jsp/jstl/core">
+    <f:view beforePhase="#{forEachBean.modify}">
+
+<h:head>
+<title>forEach</title>
+</h:head>
+
+<h:body>
+
+<h:form prependId="false" id="form01">
+
+<c:forEach items="#{forEachBean.names}" var="outer">
+
+  <ui:include src="includedLiterally.xhtml" />
+
+</c:forEach>
+
+<h:commandButton id="submit" value="submit" />
+
+<h:commandButton id="submitAjax" value="submitAjax">
+  <f:ajax execute="@form" render="@form" />
+</h:commandButton>
+
+</h:form>
+
+</h:body>
+
+    </f:view>
+
+</html>
diff --git a/test/servlet30/facelets/core/src/main/webapp/forEach/false_false_false_false_false_false_false_true_false.xhtml b/test/servlet30/facelets/core/src/main/webapp/forEach/false_false_false_false_false_false_false_true_false.xhtml
new file mode 100644
index 0000000..17f462a
--- /dev/null
+++ b/test/servlet30/facelets/core/src/main/webapp/forEach/false_false_false_false_false_false_false_true_false.xhtml
@@ -0,0 +1,77 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+    xmlns:h="http://java.sun.com/jsf/html"
+    xmlns:f="http://java.sun.com/jsf/core"
+    xmlns:ui="http://java.sun.com/jsf/facelets"
+    xmlns:c="http://java.sun.com/jsp/jstl/core">
+    <f:view beforePhase="#{forEachBean.modify}">
+
+<h:head>
+<title>forEach</title>
+</h:head>
+
+<h:body>
+
+<h:form prependId="false" id="form01">
+
+<c:forEach items="#{forEachBean.pages}" var="page">
+
+  <ui:include src="#{page.page}" />
+
+</c:forEach>
+
+<h:commandButton id="submit" value="submit" />
+
+<h:commandButton id="submitAjax" value="submitAjax">
+  <f:ajax execute="@form" render="@form" />
+</h:commandButton>
+
+</h:form>
+
+</h:body>
+
+    </f:view>
+
+</html>
diff --git a/test/servlet30/facelets/core/src/main/webapp/forEach/false_false_false_false_false_false_false_true_true.xhtml b/test/servlet30/facelets/core/src/main/webapp/forEach/false_false_false_false_false_false_false_true_true.xhtml
new file mode 100644
index 0000000..78e706e
--- /dev/null
+++ b/test/servlet30/facelets/core/src/main/webapp/forEach/false_false_false_false_false_false_false_true_true.xhtml
@@ -0,0 +1,79 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+    xmlns:h="http://java.sun.com/jsf/html"
+    xmlns:f="http://java.sun.com/jsf/core"
+    xmlns:ui="http://java.sun.com/jsf/facelets"
+    xmlns:c="http://java.sun.com/jsp/jstl/core">
+    <f:view beforePhase="#{forEachBean.modify}">
+
+<h:head>
+<title>forEach</title>
+</h:head>
+
+<h:body>
+
+<h:form prependId="false" id="form01">
+
+<c:forEach items="#{forEachBean.pages}" var="page">
+
+  <ui:include src="#{page.page}" />
+
+  <ui:include src="includedLiterally.xhtml" />
+
+</c:forEach>
+
+<h:commandButton id="submit" value="submit" />
+
+<h:commandButton id="submitAjax" value="submitAjax">
+  <f:ajax execute="@form" render="@form" />
+</h:commandButton>
+
+</h:form>
+
+</h:body>
+
+    </f:view>
+
+</html>
diff --git a/test/servlet30/facelets/core/src/main/webapp/forEach/false_false_false_false_false_false_true_false_false.xhtml b/test/servlet30/facelets/core/src/main/webapp/forEach/false_false_false_false_false_false_true_false_false.xhtml
new file mode 100644
index 0000000..6013d68
--- /dev/null
+++ b/test/servlet30/facelets/core/src/main/webapp/forEach/false_false_false_false_false_false_true_false_false.xhtml
@@ -0,0 +1,87 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+    xmlns:h="http://java.sun.com/jsf/html"
+    xmlns:f="http://java.sun.com/jsf/core"
+    xmlns:ui="http://java.sun.com/jsf/facelets"
+    xmlns:c="http://java.sun.com/jsp/jstl/core">
+    <f:view beforePhase="#{forEachBean.modify}">
+
+<h:head>
+<title>forEach</title>
+</h:head>
+
+<h:body>
+
+<h:form prependId="false" id="form01">
+
+<c:forEach items="#{forEachBean.names}" var="outer">
+    
+    <f:subview id="outer">
+
+<p> 
+
+<h:inputText disabled="true" value="#{outer}" /> 
+
+<h:inputText disabled="true" id="literalId" value="#{sessionScope[outer]}" /> 
+
+</p>
+        
+        </f:subview>
+
+</c:forEach>
+
+<h:commandButton id="submit" value="submit" />
+
+<h:commandButton id="submitAjax" value="submitAjax">
+  <f:ajax  execute="@form" render="@form" />
+</h:commandButton>
+
+</h:form>
+
+</h:body>
+
+    </f:view>
+
+</html>
diff --git a/test/servlet30/facelets/core/src/main/webapp/forEach/false_false_false_false_false_false_true_false_true.xhtml b/test/servlet30/facelets/core/src/main/webapp/forEach/false_false_false_false_false_false_true_false_true.xhtml
new file mode 100644
index 0000000..4a1a998
--- /dev/null
+++ b/test/servlet30/facelets/core/src/main/webapp/forEach/false_false_false_false_false_false_true_false_true.xhtml
@@ -0,0 +1,81 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+    xmlns:h="http://java.sun.com/jsf/html"
+    xmlns:f="http://java.sun.com/jsf/core"
+    xmlns:ui="http://java.sun.com/jsf/facelets"
+    xmlns:c="http://java.sun.com/jsp/jstl/core">
+    <f:view beforePhase="#{forEachBean.modify}">
+
+<h:head>
+<title>forEach</title>
+</h:head>
+
+<h:body>
+
+<h:form prependId="false" id="form01">
+
+<c:forEach items="#{forEachBean.names}" var="outer">
+    
+    <f:subview id="outer">
+
+  <ui:include src="includedLiterally.xhtml" />
+  
+    </f:subview>
+
+</c:forEach>
+
+<h:commandButton id="submit" value="submit" />
+
+<h:commandButton id="submitAjax" value="submitAjax">
+  <f:ajax execute="@form"  render="@form"/>
+</h:commandButton>
+
+</h:form>
+
+</h:body>
+
+    </f:view>
+
+</html>
diff --git a/test/servlet30/facelets/core/src/main/webapp/forEach/false_false_false_false_false_false_true_true_false.xhtml b/test/servlet30/facelets/core/src/main/webapp/forEach/false_false_false_false_false_false_true_true_false.xhtml
new file mode 100644
index 0000000..75d92b3
--- /dev/null
+++ b/test/servlet30/facelets/core/src/main/webapp/forEach/false_false_false_false_false_false_true_true_false.xhtml
@@ -0,0 +1,82 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+    xmlns:h="http://java.sun.com/jsf/html"
+    xmlns:f="http://java.sun.com/jsf/core"
+    xmlns:ui="http://java.sun.com/jsf/facelets"
+    xmlns:c="http://java.sun.com/jsp/jstl/core">
+    <f:view beforePhase="#{forEachBean.modify}">
+
+<h:head>
+<title>forEach</title>
+</h:head>
+
+<h:body>
+
+<h:form prependId="false" id="form01">
+
+<c:forEach items="#{forEachBean.pages}" var="page">
+    
+    
+    <f:subview id="outer">
+
+  <ui:include src="#{page.page}" />
+  
+    </f:subview>
+
+</c:forEach>
+
+<h:commandButton id="submit" value="submit" />
+
+<h:commandButton id="submitAjax" value="submitAjax">
+  <f:ajax  execute="@form" render="@form" />
+</h:commandButton>
+
+</h:form>
+
+</h:body>
+
+    </f:view>
+
+</html>
diff --git a/test/servlet30/facelets/core/src/main/webapp/forEach/false_false_false_false_false_false_true_true_true.xhtml b/test/servlet30/facelets/core/src/main/webapp/forEach/false_false_false_false_false_false_true_true_true.xhtml
new file mode 100644
index 0000000..4ca07e5
--- /dev/null
+++ b/test/servlet30/facelets/core/src/main/webapp/forEach/false_false_false_false_false_false_true_true_true.xhtml
@@ -0,0 +1,83 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+    xmlns:h="http://java.sun.com/jsf/html"
+    xmlns:f="http://java.sun.com/jsf/core"
+    xmlns:ui="http://java.sun.com/jsf/facelets"
+    xmlns:c="http://java.sun.com/jsp/jstl/core">
+    <f:view beforePhase="#{forEachBean.modify}">
+
+<h:head>
+<title>forEach</title>
+</h:head>
+
+<h:body>
+
+<h:form prependId="false" id="form01">
+
+<c:forEach items="#{forEachBean.pages}" var="page">
+    
+    <f:subview id="outer">
+
+  <ui:include src="#{page.page}" />
+
+  <ui:include src="includedLiterally.xhtml" />
+  
+    </f:subview>
+
+</c:forEach>
+
+<h:commandButton id="submit" value="submit" />
+
+<h:commandButton id="submitAjax" value="submitAjax">
+  <f:ajax  execute="@form" render="@form" />
+</h:commandButton>
+
+</h:form>
+
+</h:body>
+
+    </f:view>
+
+</html>
diff --git a/test/servlet30/facelets/core/src/main/webapp/forEach/false_false_false_false_false_true_false_false_false.xhtml b/test/servlet30/facelets/core/src/main/webapp/forEach/false_false_false_false_false_true_false_false_false.xhtml
new file mode 100644
index 0000000..6242157
--- /dev/null
+++ b/test/servlet30/facelets/core/src/main/webapp/forEach/false_false_false_false_false_true_false_false_false.xhtml
@@ -0,0 +1,87 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+    xmlns:h="http://java.sun.com/jsf/html"
+    xmlns:f="http://java.sun.com/jsf/core"
+    xmlns:ui="http://java.sun.com/jsf/facelets"
+    xmlns:c="http://java.sun.com/jsp/jstl/core">
+    <f:view beforePhase="#{forEachBean.modify}">
+
+<h:head>
+<title>forEach</title>
+</h:head>
+
+<h:body>
+
+<h:form prependId="false" id="form01">
+
+<c:forEach items="#{forEachBean.names}" var="outer">
+    
+    <c:forEach items="#{forEachBean.numbers}" var="inner">
+
+        <p> 
+            
+            <h:inputText disabled="true" value="#{outer}" /> 
+            
+            <h:inputText disabled="true" id="literalId" value="#{inner}" /> 
+
+        </p>
+
+    </c:forEach>
+
+</c:forEach>
+
+<h:commandButton id="submit" value="submit" />
+
+<h:commandButton id="submitAjax" value="submitAjax">
+  <f:ajax  execute="@form" render="@form" />
+</h:commandButton>
+
+</h:form>
+
+</h:body>
+
+    </f:view>
+
+</html>
diff --git a/test/servlet30/facelets/core/src/main/webapp/forEach/false_false_false_false_false_true_false_false_true.xhtml b/test/servlet30/facelets/core/src/main/webapp/forEach/false_false_false_false_false_true_false_false_true.xhtml
new file mode 100644
index 0000000..89816ef
--- /dev/null
+++ b/test/servlet30/facelets/core/src/main/webapp/forEach/false_false_false_false_false_true_false_false_true.xhtml
@@ -0,0 +1,81 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+    xmlns:h="http://java.sun.com/jsf/html"
+    xmlns:f="http://java.sun.com/jsf/core"
+    xmlns:ui="http://java.sun.com/jsf/facelets"
+    xmlns:c="http://java.sun.com/jsp/jstl/core">
+    <f:view beforePhase="#{forEachBean.modify}">
+
+<h:head>
+<title>forEach</title>
+</h:head>
+
+<h:body>
+
+<h:form prependId="false" id="form01">
+
+<c:forEach items="#{forEachBean.names}" var="outer">
+    
+    <c:forEach items="#{forEachBean.numbers}" var="inner">
+
+        <ui:include src="includedLiterally.xhtml" />
+        
+    </c:forEach>
+
+</c:forEach>
+
+<h:commandButton id="submit" value="submit" />
+
+<h:commandButton id="submitAjax" value="submitAjax">
+  <f:ajax  execute="@form" render="@form" />
+</h:commandButton>
+
+</h:form>
+
+</h:body>
+
+    </f:view>
+
+</html>
diff --git a/test/servlet30/facelets/core/src/main/webapp/forEach/false_false_false_false_false_true_false_true_false.xhtml b/test/servlet30/facelets/core/src/main/webapp/forEach/false_false_false_false_false_true_false_true_false.xhtml
new file mode 100644
index 0000000..f486252
--- /dev/null
+++ b/test/servlet30/facelets/core/src/main/webapp/forEach/false_false_false_false_false_true_false_true_false.xhtml
@@ -0,0 +1,81 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+    xmlns:h="http://java.sun.com/jsf/html"
+    xmlns:f="http://java.sun.com/jsf/core"
+    xmlns:ui="http://java.sun.com/jsf/facelets"
+    xmlns:c="http://java.sun.com/jsp/jstl/core">
+    <f:view beforePhase="#{forEachBean.modify}">
+
+<h:head>
+<title>forEach</title>
+</h:head>
+
+<h:body>
+
+<h:form prependId="false" id="form01">
+
+<c:forEach items="#{forEachBean.pages}" var="page">
+
+    <c:forEach items="#{forEachBean.numbers}" var="inner">
+
+        <ui:include src="#{page.page}" />
+        
+    </c:forEach>
+
+</c:forEach>
+
+<h:commandButton id="submit" value="submit" />
+
+<h:commandButton id="submitAjax" value="submitAjax">
+  <f:ajax  execute="@form" render="@form" />
+</h:commandButton>
+
+</h:form>
+
+</h:body>
+
+    </f:view>
+
+</html>
diff --git a/test/servlet30/facelets/core/src/main/webapp/forEach/false_false_false_false_false_true_false_true_true.xhtml b/test/servlet30/facelets/core/src/main/webapp/forEach/false_false_false_false_false_true_false_true_true.xhtml
new file mode 100644
index 0000000..aa88796
--- /dev/null
+++ b/test/servlet30/facelets/core/src/main/webapp/forEach/false_false_false_false_false_true_false_true_true.xhtml
@@ -0,0 +1,83 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+    xmlns:h="http://java.sun.com/jsf/html"
+    xmlns:f="http://java.sun.com/jsf/core"
+    xmlns:ui="http://java.sun.com/jsf/facelets"
+    xmlns:c="http://java.sun.com/jsp/jstl/core">
+    <f:view beforePhase="#{forEachBean.modify}">
+
+<h:head>
+<title>forEach</title>
+</h:head>
+
+<h:body>
+
+<h:form prependId="false" id="form01">
+
+<c:forEach items="#{forEachBean.pages}" var="page">
+    
+    <c:forEach items="#{forEachBean.numbers}" var="inner">
+    
+        <ui:include src="#{page.page}" />
+        
+        <ui:include src="includedLiterally.xhtml" />
+        
+    </c:forEach>
+
+</c:forEach>
+
+<h:commandButton id="submit" value="submit" />
+
+<h:commandButton id="submitAjax" value="submitAjax">
+  <f:ajax  execute="@form" render="@form" />
+</h:commandButton>
+
+</h:form>
+
+</h:body>
+
+    </f:view>
+
+</html>
diff --git a/test/servlet30/facelets/core/src/main/webapp/forEach/false_false_false_false_false_true_true_false_false.xhtml b/test/servlet30/facelets/core/src/main/webapp/forEach/false_false_false_false_false_true_true_false_false.xhtml
new file mode 100644
index 0000000..06d8929
--- /dev/null
+++ b/test/servlet30/facelets/core/src/main/webapp/forEach/false_false_false_false_false_true_true_false_false.xhtml
@@ -0,0 +1,91 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+    xmlns:h="http://java.sun.com/jsf/html"
+    xmlns:f="http://java.sun.com/jsf/core"
+    xmlns:ui="http://java.sun.com/jsf/facelets"
+    xmlns:c="http://java.sun.com/jsp/jstl/core">
+    <f:view beforePhase="#{forEachBean.modify}">
+
+<h:head>
+<title>forEach</title>
+</h:head>
+
+<h:body>
+
+<h:form prependId="false" id="form01">
+
+<c:forEach items="#{forEachBean.names}" var="outer">
+    
+    <c:forEach items="#{forEachBean.numbers}" var="inner">
+    
+        <f:subview id="outer">
+            
+            <p> 
+                
+                <h:inputText disabled="true" value="#{outer}" /> 
+                
+                <h:inputText disabled="true" id="literalId" value="#{sessionScope[outer]}" /> 
+                
+            </p>
+            
+        </f:subview>
+        
+    </c:forEach>
+        
+</c:forEach>
+
+<h:commandButton id="submit" value="submit" />
+
+<h:commandButton id="submitAjax" value="submitAjax">
+  <f:ajax  execute="@form" render="@form" />
+</h:commandButton>
+
+</h:form>
+
+</h:body>
+
+    </f:view>
+
+</html>
diff --git a/test/servlet30/facelets/core/src/main/webapp/forEach/false_false_false_false_false_true_true_false_true.xhtml b/test/servlet30/facelets/core/src/main/webapp/forEach/false_false_false_false_false_true_true_false_true.xhtml
new file mode 100644
index 0000000..23e8a5c
--- /dev/null
+++ b/test/servlet30/facelets/core/src/main/webapp/forEach/false_false_false_false_false_true_true_false_true.xhtml
@@ -0,0 +1,85 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+    xmlns:h="http://java.sun.com/jsf/html"
+    xmlns:f="http://java.sun.com/jsf/core"
+    xmlns:ui="http://java.sun.com/jsf/facelets"
+    xmlns:c="http://java.sun.com/jsp/jstl/core">
+    <f:view beforePhase="#{forEachBean.modify}">
+
+<h:head>
+<title>forEach</title>
+</h:head>
+
+<h:body>
+
+<h:form prependId="false" id="form01">
+
+<c:forEach items="#{forEachBean.names}" var="outer">
+    
+    <c:forEach items="#{forEachBean.numbers}" var="inner">
+    
+        <f:subview id="outer">
+            
+            <ui:include src="includedLiterally.xhtml" />
+            
+        </f:subview>
+        
+    </c:forEach>
+    
+</c:forEach>
+
+<h:commandButton id="submit" value="submit" />
+
+<h:commandButton id="submitAjax" value="submitAjax">
+  <f:ajax  execute="@form" render="@form" />
+</h:commandButton>
+
+</h:form>
+
+</h:body>
+
+    </f:view>
+
+</html>
diff --git a/test/servlet30/facelets/core/src/main/webapp/forEach/false_false_false_false_false_true_true_true_false.xhtml b/test/servlet30/facelets/core/src/main/webapp/forEach/false_false_false_false_false_true_true_true_false.xhtml
new file mode 100644
index 0000000..ea05d82
--- /dev/null
+++ b/test/servlet30/facelets/core/src/main/webapp/forEach/false_false_false_false_false_true_true_true_false.xhtml
@@ -0,0 +1,85 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+    xmlns:h="http://java.sun.com/jsf/html"
+    xmlns:f="http://java.sun.com/jsf/core"
+    xmlns:ui="http://java.sun.com/jsf/facelets"
+    xmlns:c="http://java.sun.com/jsp/jstl/core">
+    <f:view beforePhase="#{forEachBean.modify}">
+
+<h:head>
+<title>forEach</title>
+</h:head>
+
+<h:body>
+
+<h:form prependId="false" id="form01">
+
+<c:forEach items="#{forEachBean.pages}" var="page">
+    
+    <c:forEach items="#{forEachBean.numbers}" var="inner">
+        
+        <f:subview id="outer">
+            
+            <ui:include src="#{page.page}" />
+            
+        </f:subview>
+        
+    </c:forEach>
+        
+</c:forEach>
+
+<h:commandButton id="submit" value="submit" />
+
+<h:commandButton id="submitAjax" value="submitAjax">
+  <f:ajax  execute="@form" render="@form" />
+</h:commandButton>
+
+</h:form>
+
+</h:body>
+
+    </f:view>
+
+</html>
diff --git a/test/servlet30/facelets/core/src/main/webapp/forEach/false_false_false_false_false_true_true_true_true.xhtml b/test/servlet30/facelets/core/src/main/webapp/forEach/false_false_false_false_false_true_true_true_true.xhtml
new file mode 100644
index 0000000..c893096
--- /dev/null
+++ b/test/servlet30/facelets/core/src/main/webapp/forEach/false_false_false_false_false_true_true_true_true.xhtml
@@ -0,0 +1,87 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+    xmlns:h="http://java.sun.com/jsf/html"
+    xmlns:f="http://java.sun.com/jsf/core"
+    xmlns:ui="http://java.sun.com/jsf/facelets"
+    xmlns:c="http://java.sun.com/jsp/jstl/core">
+    <f:view beforePhase="#{forEachBean.modify}">
+
+<h:head>
+<title>forEach</title>
+</h:head>
+
+<h:body>
+
+<h:form prependId="false" id="form01">
+
+<c:forEach items="#{forEachBean.pages}" var="page">
+    
+    <c:forEach items="#{forEachBean.numbers}" var="inner">
+        
+        <f:subview id="outer">
+            
+            <ui:include src="#{page.page}" />
+            
+            <ui:include src="includedLiterally.xhtml" />
+            
+        </f:subview>
+        
+    </c:forEach>
+    
+</c:forEach>
+
+<h:commandButton id="submit" value="submit" />
+
+<h:commandButton id="submitAjax" value="submitAjax">
+  <f:ajax  execute="@form" render="@form" />
+</h:commandButton>
+
+</h:form>
+
+</h:body>
+
+    </f:view>
+
+</html>
diff --git a/test/servlet30/facelets/core/src/main/webapp/forEach/false_false_false_false_true_true_true_true_false.xhtml b/test/servlet30/facelets/core/src/main/webapp/forEach/false_false_false_false_true_true_true_true_false.xhtml
new file mode 100644
index 0000000..7f5bd14
--- /dev/null
+++ b/test/servlet30/facelets/core/src/main/webapp/forEach/false_false_false_false_true_true_true_true_false.xhtml
@@ -0,0 +1,86 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+    xmlns:h="http://java.sun.com/jsf/html"
+    xmlns:f="http://java.sun.com/jsf/core"
+    xmlns:ui="http://java.sun.com/jsf/facelets"
+    xmlns:c="http://java.sun.com/jsp/jstl/core">
+    <f:view beforePhase="#{forEachBean.modify}">
+
+<h:head>
+<title>forEach</title>
+</h:head>
+
+<h:body>
+
+<c:forEach items="#{forEachBean.pages}" var="page">
+    
+    <c:forEach items="#{forEachBean.numbers}" var="inner">
+        
+        <f:subview id="outer">
+            
+            <h:form>
+                
+                <ui:include src="#{page.page}" />
+                
+                <h:commandButton id="submit" value="submit" />
+                
+                <h:commandButton id="submitAjax" value="submitAjax">
+                    <f:ajax execute="@form" render="@form"/>
+                </h:commandButton>
+                
+            </h:form>
+            
+        </f:subview>
+        
+    </c:forEach>
+        
+</c:forEach>
+
+
+</h:body>
+
+    </f:view>
+
+</html>
diff --git a/test/servlet30/facelets/core/src/main/webapp/forEach/false_false_false_true_false_true_false_true_true.xhtml b/test/servlet30/facelets/core/src/main/webapp/forEach/false_false_false_true_false_true_false_true_true.xhtml
new file mode 100644
index 0000000..77fd8bb
--- /dev/null
+++ b/test/servlet30/facelets/core/src/main/webapp/forEach/false_false_false_true_false_true_false_true_true.xhtml
@@ -0,0 +1,85 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+    xmlns:h="http://java.sun.com/jsf/html"
+    xmlns:f="http://java.sun.com/jsf/core"
+    xmlns:ui="http://java.sun.com/jsf/facelets"
+    xmlns:c="http://java.sun.com/jsp/jstl/core">
+    <f:view beforePhase="#{forEachBean.modify}">
+
+<h:head>
+<title>forEach</title>
+</h:head>
+
+<h:body>
+
+<h:form prependId="false" id="form01">
+
+<c:forEach items="#{forEachBean.pages}" var="page">
+    
+    <c:forEach items="#{forEachBean.numbers}" var="inner">
+    
+        <ui:include src="#{page.page}" />
+        
+        <ui:include src="includedLiterallyWithParam.xhtml">
+            <ui:param name="param1" value="param1Value#{inner}" />
+        </ui:include>
+        
+    </c:forEach>
+
+</c:forEach>
+
+<h:commandButton id="submit" value="submit" />
+
+<h:commandButton id="submitAjax" value="submitAjax">
+  <f:ajax  execute="@form" render="@form" />
+</h:commandButton>
+
+</h:form>
+
+</h:body>
+
+    </f:view>
+
+</html>
diff --git a/test/servlet30/facelets/core/src/main/webapp/forEach/false_false_true_false_false_false_true_true_false.xhtml b/test/servlet30/facelets/core/src/main/webapp/forEach/false_false_true_false_false_false_true_true_false.xhtml
new file mode 100644
index 0000000..600f553
--- /dev/null
+++ b/test/servlet30/facelets/core/src/main/webapp/forEach/false_false_true_false_false_false_true_true_false.xhtml
@@ -0,0 +1,89 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+    xmlns:h="http://java.sun.com/jsf/html"
+    xmlns:f="http://java.sun.com/jsf/core"
+    xmlns:ui="http://java.sun.com/jsf/facelets"
+    xmlns:c="http://java.sun.com/jsp/jstl/core">
+    <f:view beforePhase="#{forEachBean.modify}">
+
+<h:head>
+<title>forEach</title>
+</h:head>
+
+<h:body>
+
+<h:form prependId="false" id="form01">
+    
+    <h:dataTable border="1" value="#{forEachBean.dataModel}" var="row">
+
+    <h:column id="col01">
+    
+        <c:forEach items="#{forEachBean.pages}" var="page">
+            
+            <f:subview id="outer">
+                
+                <ui:include src="#{page.page}" />
+                
+            </f:subview>
+            
+        </c:forEach>
+
+    </h:column>
+
+    </h:dataTable>
+
+<h:commandButton id="submit" value="submit" />
+
+<h:commandButton id="submitAjax" value="submitAjax">
+  <f:ajax  execute="@form" render="@form" />
+</h:commandButton>
+
+</h:form>
+
+</h:body>
+
+    </f:view>
+
+</html>
diff --git a/test/servlet30/facelets/core/src/main/webapp/forEach/false_true_false_false_false_true_false_true_false.xhtml b/test/servlet30/facelets/core/src/main/webapp/forEach/false_true_false_false_false_true_false_true_false.xhtml
new file mode 100644
index 0000000..fa090e4
--- /dev/null
+++ b/test/servlet30/facelets/core/src/main/webapp/forEach/false_true_false_false_false_true_false_true_false.xhtml
@@ -0,0 +1,85 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+    xmlns:h="http://java.sun.com/jsf/html"
+    xmlns:f="http://java.sun.com/jsf/core"
+    xmlns:ui="http://java.sun.com/jsf/facelets"
+    xmlns:c="http://java.sun.com/jsp/jstl/core">
+    <f:view beforePhase="#{forEachBean.modify}">
+
+<h:head>
+<title>forEach</title>
+</h:head>
+
+<h:body>
+
+<h:form prependId="false" id="form01">
+
+<c:forEach items="#{forEachBean.pages}" var="page">
+    
+    <c:if test="#{forEachBean.evenCount}">
+
+        <c:forEach items="#{forEachBean.numbers}" var="inner">
+            
+            <ui:include src="#{page.page}" />
+            
+        </c:forEach>
+        
+    </c:if>
+
+</c:forEach>
+
+<h:commandButton id="submit" value="submit" />
+
+<h:commandButton id="submitAjax" value="submitAjax">
+  <f:ajax  execute="@form" render="@form" />
+</h:commandButton>
+
+</h:form>
+
+</h:body>
+
+    </f:view>
+
+</html>
diff --git a/test/servlet30/facelets/core/src/main/webapp/forEach/includedDynamically01.xhtml b/test/servlet30/facelets/core/src/main/webapp/forEach/includedDynamically01.xhtml
new file mode 100644
index 0000000..269bb06
--- /dev/null
+++ b/test/servlet30/facelets/core/src/main/webapp/forEach/includedDynamically01.xhtml
@@ -0,0 +1,70 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+    xmlns:h="http://java.sun.com/jsf/html"
+    xmlns:f="http://java.sun.com/jsf/core"
+    xmlns:ui="http://java.sun.com/jsf/facelets"
+    xmlns:c="http://java.sun.com/jsp/jstl/core">
+
+<h:head>
+<title>includedLiterally</title>
+</h:head>
+
+<h:body>
+
+<ui:composition>
+
+<p> 
+
+<h:inputText disabled="true" value="noLiteralId includedDynamically01" /> 
+
+<h:inputText disabled="true" id="literalIdincludedDynamically01" value="literalIdincludedDynamically01" /> 
+
+</p>
+
+</ui:composition>
+
+</h:body>
+
+</html>
diff --git a/test/servlet30/facelets/core/src/main/webapp/forEach/includedDynamically02.xhtml b/test/servlet30/facelets/core/src/main/webapp/forEach/includedDynamically02.xhtml
new file mode 100644
index 0000000..e072b5a
--- /dev/null
+++ b/test/servlet30/facelets/core/src/main/webapp/forEach/includedDynamically02.xhtml
@@ -0,0 +1,70 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+    xmlns:h="http://java.sun.com/jsf/html"
+    xmlns:f="http://java.sun.com/jsf/core"
+    xmlns:ui="http://java.sun.com/jsf/facelets"
+    xmlns:c="http://java.sun.com/jsp/jstl/core">
+
+<h:head>
+<title>includedLiterally</title>
+</h:head>
+
+<h:body>
+
+<ui:composition>
+
+<p> 
+
+<h:inputText disabled="true" value="noLiteralId includedDynamically02" /> 
+
+<h:inputText disabled="true" id="literalIdincludedDynamically02" value="literalIdincludedDynamically02" /> 
+
+</p>
+
+</ui:composition>
+
+</h:body>
+
+</html>
diff --git a/test/servlet30/facelets/core/src/main/webapp/forEach/includedLiterally.xhtml b/test/servlet30/facelets/core/src/main/webapp/forEach/includedLiterally.xhtml
new file mode 100644
index 0000000..8153803
--- /dev/null
+++ b/test/servlet30/facelets/core/src/main/webapp/forEach/includedLiterally.xhtml
@@ -0,0 +1,70 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+    xmlns:h="http://java.sun.com/jsf/html"
+    xmlns:f="http://java.sun.com/jsf/core"
+    xmlns:ui="http://java.sun.com/jsf/facelets"
+    xmlns:c="http://java.sun.com/jsp/jstl/core">
+
+<h:head>
+<title>includedLiterally</title>
+</h:head>
+
+<h:body>
+
+<ui:composition>
+
+<p> 
+
+<h:inputText disabled="true" value="noLiteralId" /> 
+
+<h:inputText disabled="true" id="literalId" value="literalId" /> 
+
+</p>
+
+</ui:composition>
+
+</h:body>
+
+</html>
diff --git a/test/servlet30/facelets/core/src/main/webapp/forEach/includedLiterallyWithParam.xhtml b/test/servlet30/facelets/core/src/main/webapp/forEach/includedLiterallyWithParam.xhtml
new file mode 100644
index 0000000..9b289ee
--- /dev/null
+++ b/test/servlet30/facelets/core/src/main/webapp/forEach/includedLiterallyWithParam.xhtml
@@ -0,0 +1,70 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+    xmlns:h="http://java.sun.com/jsf/html"
+    xmlns:f="http://java.sun.com/jsf/core"
+    xmlns:ui="http://java.sun.com/jsf/facelets"
+    xmlns:c="http://java.sun.com/jsp/jstl/core">
+
+<h:head>
+<title>includedLiterally</title>
+</h:head>
+
+<h:body>
+
+<ui:composition>
+
+<p> 
+
+<h:inputText disabled="true" value="noLiteralId#{param1}" /> 
+
+<h:inputText disabled="true" id="literalId" value="literalId" /> 
+
+</p>
+
+</ui:composition>
+
+</h:body>
+
+</html>
diff --git a/test/servlet30/facelets/core/src/main/webapp/forEach/index.xhtml b/test/servlet30/facelets/core/src/main/webapp/forEach/index.xhtml
new file mode 100644
index 0000000..8a6ecf8
--- /dev/null
+++ b/test/servlet30/facelets/core/src/main/webapp/forEach/index.xhtml
@@ -0,0 +1,848 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+    xmlns:h="http://java.sun.com/jsf/html"
+    xmlns:f="http://java.sun.com/jsf/core"
+    xmlns:ui="http://java.sun.com/jsf/facelets">
+
+<h:body>
+
+<!--    #{forEachBean.reset} -->
+
+    <table border="1">
+
+<tr>
+
+<th>use ui:repeat
+</th>
+
+<th>use c:if
+</th>
+
+<th>use h:dataTable
+</th>
+
+<th>use ui:param
+</th>
+
+<th>h:form inside the c:forEach
+</th>
+
+<th>forEach is nested
+</th>
+
+<th>has NamingContainer around children
+</th>
+
+<th>use facelet inclusion around children with dynamic src
+</th>
+
+<th>use facelet inclusion around children with literal src
+</th>
+
+<th>execute test
+</th>
+
+</tr>
+
+<tr>
+
+<td></td>
+<td></td>
+<td></td>
+<td></td>
+<td></td>
+
+
+<td>FALSE</td>
+<td>FALSE</td>
+<td>FALSE</td>
+<td>FALSE</td>
+<td><a href="false_false_false_false_false_false_false_false_false.xhtml">execute</a></td>
+
+</tr>
+
+<tr>
+<td></td>
+<td></td>
+<td></td>
+<td></td>
+<td></td>
+
+
+<td>FALSE</td>
+<td>FALSE</td>
+<td>FALSE</td>
+<td>TRUE</td>
+<td><a href="false_false_false_false_false_false_false_false_true.xhtml">execute</a></td>
+
+</tr>
+
+<tr>
+<td></td>
+<td></td>
+<td></td>
+<td></td>
+<td></td>
+
+
+<td>FALSE</td>
+<td>FALSE</td>
+<td>TRUE</td>
+<td>FALSE</td>
+<td><a href="false_false_false_false_false_false_false_true_false.xhtml">execute</a></td>
+
+</tr>
+
+<tr>
+<td></td>
+<td></td>
+<td></td>
+<td></td>
+<td></td>
+
+
+<td>FALSE</td>
+<td>FALSE</td>
+<td>TRUE</td>
+<td>TRUE</td>
+<td><a href="false_false_false_false_false_false_false_true_true.xhtml">execute</a></td>
+
+</tr>
+
+    <tr>
+<td></td>
+<td></td>
+<td></td>
+<td></td>
+<td></td>
+
+
+<td>FALSE</td>
+<td>TRUE</td>
+<td>FALSE</td>
+<td>FALSE</td>
+<td><a href="false_false_false_false_false_false_true_false_false.xhtml">execute</a></td>
+
+</tr>
+
+<tr>
+<td></td>
+<td></td>
+<td></td>
+<td></td>
+<td></td>
+
+
+<td>FALSE</td>
+<td>TRUE</td>
+<td>FALSE</td>
+<td>TRUE</td>
+<td><a href="false_false_false_false_false_false_true_false_true.xhtml">execute</a></td>
+
+</tr>
+
+<tr>
+<td></td>
+<td></td>
+<td></td>
+<td></td>
+<td></td>
+
+
+<td>FALSE</td>
+<td>TRUE</td>
+<td>TRUE</td>
+<td>FALSE</td>
+<td><a href="false_false_false_false_false_false_true_true_false.xhtml">execute</a></td>
+
+</tr>
+
+<tr>
+<td></td>
+<td></td>
+<td></td>
+<td></td>
+<td></td>
+
+
+<td>FALSE</td>
+<td>TRUE</td>
+<td>TRUE</td>
+<td>TRUE</td>
+<td><a href="false_false_false_false_false_false_true_true_true.xhtml">execute</a></td>
+
+</tr>
+
+<tr>
+<td></td>
+<td></td>
+<td></td>
+<td></td>
+<td></td>
+
+
+<td>TRUE</td>
+<td>FALSE</td>
+<td>FALSE</td>
+<td>FALSE</td>
+<td><a href="false_false_false_false_false_true_false_false_false.xhtml">execute</a></td>
+
+</tr>
+
+<tr>
+<td></td>
+<td></td>
+<td></td>
+<td></td>
+<td></td>
+
+
+<td>TRUE</td>
+<td>FALSE</td>
+<td>FALSE</td>
+<td>TRUE</td>
+<td><a href="false_false_false_false_false_true_false_false_true.xhtml">execute</a></td>
+
+</tr>
+
+<tr>
+<td></td>
+<td></td>
+<td></td>
+<td></td>
+<td></td>
+
+
+<td>TRUE</td>
+<td>FALSE</td>
+<td>TRUE</td>
+<td>FALSE</td>
+<td><a href="false_false_false_false_false_true_false_true_false.xhtml">execute</a></td>
+
+</tr>
+
+<tr>
+<td></td>
+<td></td>
+<td></td>
+<td></td>
+<td></td>
+
+
+<td>TRUE</td>
+<td>FALSE</td>
+<td>TRUE</td>
+<td>TRUE</td>
+<td><a href="false_false_false_false_false_true_false_true_true.xhtml">execute</a></td>
+
+</tr>
+
+<tr>
+<td></td>
+<td></td>
+<td></td>
+<td></td>
+<td></td>
+
+
+<td>TRUE</td>
+<td>TRUE</td>
+<td>FALSE</td>
+<td>FALSE</td>
+<td><a href="false_false_false_false_false_true_true_false_false.xhtml">execute</a></td>
+
+</tr>
+
+<tr>
+<td></td>
+<td></td>
+<td></td>
+<td></td>
+<td></td>
+
+
+<td>TRUE</td>
+<td>TRUE</td>
+<td>FALSE</td>
+<td>TRUE</td>
+<td><a href="false_false_false_false_false_true_true_false_true.xhtml">execute</a></td>
+
+</tr>
+
+<tr>
+<td></td>
+<td></td>
+<td></td>
+<td></td>
+<td></td>
+
+
+<td>TRUE</td>
+<td>TRUE</td>
+<td>TRUE</td>
+<td>FALSE</td>
+<td><a href="false_false_false_false_false_true_true_true_false.xhtml">execute</a></td>
+
+</tr>
+
+<tr>
+<td></td>
+<td></td>
+<td></td>
+<td></td>
+<td></td>
+
+
+<td>TRUE</td>
+<td>TRUE</td>
+<td>TRUE</td>
+<td>TRUE</td>
+<td><a href="false_false_false_false_false_true_true_true_true.xhtml">execute</a></td>
+
+</tr>
+
+<tr><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td></tr>
+<tr><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td></tr>
+<tr><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td></tr>
+<tr><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td></tr>
+<tr><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td></tr>
+<tr><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td></tr>
+<tr><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td></tr>
+<tr><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td></tr>
+<tr><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td></tr>
+<tr><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td></tr>
+<tr><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td></tr>
+<tr><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td></tr>
+<tr><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td></tr>
+<tr><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td></tr>
+<tr><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td><a href="false_false_false_false_true_true_true_true_false.xhtml">execute</a></td></tr>
+<tr><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td></tr>
+<tr><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td></tr>
+<tr><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td></tr>
+<tr><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td></tr>
+<tr><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td></tr>
+<tr><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td></tr>
+<tr><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td></tr>
+<tr><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td></tr>
+<tr><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td></tr>
+<tr><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td></tr>
+<tr><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td></tr>
+<tr><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td></tr>
+<tr><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td><a href="false_false_false_true_false_true_false_true_true.xhtml">execute</a></td></tr>
+<tr><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td></tr>
+<tr><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td></tr>
+<tr><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td></tr>
+<tr><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td></tr>
+<tr><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td></tr>
+<tr><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td></tr>
+<tr><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td></tr>
+<tr><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td></tr>
+<tr><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td></tr>
+<tr><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td></tr>
+<tr><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td></tr>
+<tr><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td></tr>
+<tr><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td></tr>
+<tr><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td></tr>
+<tr><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td></tr>
+<tr><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td></tr>
+<tr><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td></tr>
+<tr><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td></tr>
+<tr><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td></tr>
+<tr><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td></tr>
+<tr><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td></tr>
+<tr><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td></tr>
+<tr><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td></tr>
+<tr><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td></tr>
+<tr><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td></tr>
+<tr><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td></tr>
+<tr><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td><a href="false_false_true_false_false_false_true_true_false.xhtml">execute</a></td></tr>
+<tr><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td></tr>
+<tr><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td></tr>
+<tr><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td></tr>
+<tr><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td></tr>
+<tr><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td></tr>
+<tr><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td></tr>
+<tr><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td></tr>
+<tr><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td></tr>
+<tr><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td></tr>
+<tr><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td></tr>
+<tr><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td></tr>
+<tr><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td></tr>
+<tr><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td></tr>
+<tr><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td></tr>
+<tr><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td></tr>
+<tr><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td></tr>
+<tr><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td></tr>
+<tr><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td></tr>
+<tr><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td></tr>
+<tr><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td></tr>
+<tr><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td></tr>
+<tr><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td></tr>
+<tr><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td></tr>
+<tr><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td></tr>
+<tr><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td></tr>
+<tr><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td></tr>
+<tr><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td></tr>
+<tr><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td></tr>
+<tr><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td></tr>
+<tr><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td></tr>
+<tr><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td></tr>
+<tr><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td></tr>
+<tr><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td></tr>
+<tr><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td></tr>
+<tr><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td></tr>
+<tr><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td></tr>
+<tr><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td></tr>
+<tr><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td></tr>
+<tr><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td></tr>
+<tr><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td></tr>
+<tr><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td></tr>
+<tr><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td></tr>
+<tr><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td></tr>
+<tr><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td></tr>
+<tr><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td></tr>
+<tr><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td></tr>
+<tr><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td></tr>
+<tr><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td></tr>
+<tr><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td></tr>
+<tr><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td></tr>
+<tr><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td></tr>
+<tr><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td></tr>
+<tr><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td></tr>
+<tr><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td></tr>
+<tr><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td></tr>
+<tr><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td></tr>
+<tr><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td><a href="false_true_false_false_false_true_false_true_false.xhtml">execute</a></td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td></tr>
+<tr><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td><a href="true_false_false_false_false_false_false_false_false.xhtml">execute</a></td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td><td>TRUE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>FALSE</td></tr>
+<tr><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td>TRUE</td><td><a href="true_true_true_true_true_true_true_true_true.xhtml">execute</a></td></tr>
+
+
+</table>
+
+    
+</h:body>
+</html>
diff --git a/test/servlet30/facelets/core/src/main/webapp/forEach/true_false_false_false_false_false_false_false_false.xhtml b/test/servlet30/facelets/core/src/main/webapp/forEach/true_false_false_false_false_false_false_false_false.xhtml
new file mode 100644
index 0000000..17118cf
--- /dev/null
+++ b/test/servlet30/facelets/core/src/main/webapp/forEach/true_false_false_false_false_false_false_false_false.xhtml
@@ -0,0 +1,87 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+    xmlns:h="http://java.sun.com/jsf/html"
+    xmlns:f="http://java.sun.com/jsf/core"
+    xmlns:ui="http://java.sun.com/jsf/facelets"
+    xmlns:c="http://java.sun.com/jsp/jstl/core">
+    <f:view beforePhase="#{forEachBean.modify}">
+
+<h:head>
+<title>forEach</title>
+</h:head>
+
+<h:body>
+
+<h:form prependId="false" id="form01">
+    
+    <ui:repeat value="#{forEachBean.repeatValues}" var="uirepeat">
+
+        <c:forEach items="#{forEachBean.names}" var="outer">
+            
+            <p> 
+                
+                <h:inputText disabled="true" value="#{outer}" /> 
+                
+                <h:inputText disabled="true" id="literalId" value="#{sessionScope[outer]}" /> 
+                
+            </p>
+            
+        </c:forEach>
+        
+    </ui:repeat>
+
+    <h:commandButton id="submit" value="submit" />
+    
+    <h:commandButton id="submitAjax" value="submitAjax">
+        <f:ajax execute="@form" render="@form" />
+    </h:commandButton>
+
+</h:form>
+
+</h:body>
+
+    </f:view>
+
+</html>
diff --git a/test/servlet30/facelets/core/src/main/webapp/forEach/true_true_true_true_true_true_true_true_true.xhtml b/test/servlet30/facelets/core/src/main/webapp/forEach/true_true_true_true_true_true_true_true_true.xhtml
new file mode 100644
index 0000000..e1bb269
--- /dev/null
+++ b/test/servlet30/facelets/core/src/main/webapp/forEach/true_true_true_true_true_true_true_true_true.xhtml
@@ -0,0 +1,100 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+    xmlns:h="http://java.sun.com/jsf/html"
+    xmlns:f="http://java.sun.com/jsf/core"
+    xmlns:ui="http://java.sun.com/jsf/facelets"
+    xmlns:c="http://java.sun.com/jsp/jstl/core">
+    <f:view beforePhase="#{forEachBean.modify}">
+
+<h:head>
+<title>forEach</title>
+</h:head>
+
+<h:body>
+
+    
+    <ui:repeat value="#{forEachBean.repeatValues}" var="repeat">
+
+        <c:forEach items="#{forEachBean.pages}" var="page">
+            
+            <c:forEach items="#{forEachBean.numbers}" var="inner">
+                
+                <h:dataTable border="1" value="#{forEachBean.dataModel}">
+                    
+                    <h:column>
+                        
+                        <f:subview id="outer">
+                            
+                            <h:form>                            
+
+                                <ui:include src="#{page.page}" />
+                                
+                                <c:if test="#{forEachBean.evenCount}">
+                                    <ui:include src="includedLiterallyWithParam.xhtml">
+                                        <ui:param name="param1" value="param1Value#{repeat}" />
+                                    </ui:include>
+                                </c:if>
+                                
+                                <h:commandButton id="submit" value="submit" />
+                                
+                            </h:form>
+                            
+                        </f:subview>
+                        
+                    </h:column>
+                    
+                </h:dataTable>
+                    
+            </c:forEach>
+            
+        </c:forEach>
+        
+    </ui:repeat>
+
+</h:body>
+
+    </f:view>
+
+</html>
diff --git a/test/servlet30/facelets/core/src/main/webapp/htmlAttributeEmpty.xhtml b/test/servlet30/facelets/core/src/main/webapp/htmlAttributeEmpty.xhtml
new file mode 100644
index 0000000..e4e9e7a
--- /dev/null
+++ b/test/servlet30/facelets/core/src/main/webapp/htmlAttributeEmpty.xhtml
@@ -0,0 +1,55 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title>Empty HTML attribute</title>
+    </h:head>
+    <h:body>
+        <img src="foo.jpg" alt=""/>
+    </h:body>
+</html>
diff --git a/test/servlet30/facelets/core/src/main/webapp/include.xhtml b/test/servlet30/facelets/core/src/main/webapp/include.xhtml
new file mode 100644
index 0000000..22de913
--- /dev/null
+++ b/test/servlet30/facelets/core/src/main/webapp/include.xhtml
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+
+<ui:composition xmlns="http://www.w3.org/1999/xhtml"
+    xmlns:ui="http://java.sun.com/jsf/facelets"
+    xmlns:h="http://java.sun.com/jsf/html">
+
+    <ui:param name="test" value="#{actionListenerBean}" />
+
+    <h:commandButton id="buttonParam" actionListener="#{test.listenerWithParam}"
+        value="invoke listener with param" />
+
+    <h:commandButton id="buttonNoParam" actionListener="#{test.listener}"
+        value="invoke listener no param" />
+
+</ui:composition>
diff --git a/test/servlet30/facelets/core/src/main/webapp/metadata/metadataShortCircuit.xhtml b/test/servlet30/facelets/core/src/main/webapp/metadata/metadataShortCircuit.xhtml
new file mode 100644
index 0000000..864576c
--- /dev/null
+++ b/test/servlet30/facelets/core/src/main/webapp/metadata/metadataShortCircuit.xhtml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    <f:metadata id="metadata">
+        <h:inputHidden id="metadataHidden" />
+    </f:metadata>
+    <h:head>
+        <title>Metadata Short-circuit Spec #762</title>
+    </h:head>
+    <h:body>
+        <h:form prependId="false">
+            <p><h:commandButton id="button" value="submit" /></p>
+        </h:form>
+        <p>Message: #{metadataShortCircuitBean.message}</p>
+    </h:body>
+</html>
diff --git a/test/servlet30/facelets/core/src/main/webapp/passThroughAttribute1.xhtml b/test/servlet30/facelets/core/src/main/webapp/passThroughAttribute1.xhtml
new file mode 100644
index 0000000..12d2d9b
--- /dev/null
+++ b/test/servlet30/facelets/core/src/main/webapp/passThroughAttribute1.xhtml
@@ -0,0 +1,18 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://xmlns.jcp.org/jsf/html"
+      xmlns:f="http://xmlns.jcp.org/jsf/core">
+    <h:head>
+        <title>Passthrough</title>
+    </h:head>
+    <h:body>
+        <h:form>
+            <h:inputText>
+                <f:passThroughAttribute name="placeholder" value="#{passThroughAttribute1Bean.date}"/>
+            </h:inputText>
+        </h:form>
+    </h:body>
+</html>
diff --git a/test/servlet30/facelets/core/src/main/webapp/phaseListener1.xhtml b/test/servlet30/facelets/core/src/main/webapp/phaseListener1.xhtml
new file mode 100644
index 0000000..0fde5d0
--- /dev/null
+++ b/test/servlet30/facelets/core/src/main/webapp/phaseListener1.xhtml
@@ -0,0 +1,20 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    <h:head>
+        <title>f:phaseListener</title>
+    </h:head>
+    <h:body>
+        <h:form id="form">
+            <f:phaseListener binding="#{phaseListener1Bean.listener}" />
+            <h:commandButton id="submit" value="Submit" action="#{phaseListener1Bean.submit}"/>
+        </h:form>
+        <h:messages id="messages"/>
+    </h:body>
+</html>
+
diff --git a/test/servlet30/facelets/core/src/main/webapp/phaseListenerRequestEncoding.xhtml b/test/servlet30/facelets/core/src/main/webapp/phaseListenerRequestEncoding.xhtml
new file mode 100644
index 0000000..e4ee6ed
--- /dev/null
+++ b/test/servlet30/facelets/core/src/main/webapp/phaseListenerRequestEncoding.xhtml
@@ -0,0 +1,57 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <head>
+        <title></title>
+    </head>
+    <body>
+        <h:form id="form">
+            <h:commandButton id="button" value="submit"/>
+            <h:outputText value="#{requestEncodingBean.encoding}" />
+        </h:form>
+    </body>
+</html>
diff --git a/test/servlet30/facelets/core/src/main/webapp/validateBeanDisabled.xhtml b/test/servlet30/facelets/core/src/main/webapp/validateBeanDisabled.xhtml
new file mode 100644
index 0000000..f5606c2
--- /dev/null
+++ b/test/servlet30/facelets/core/src/main/webapp/validateBeanDisabled.xhtml
@@ -0,0 +1,35 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    <h:body>
+        <h1>Bean Validation Test</h1>
+        <p>
+            <em>This test sees whether disabling Bean Validation on JSF components gets 'lost' after POST-back.</em> 
+        </p>
+        <p>
+            The field below is annotated <tt>@NotEmpty</tt>, but has <tt><f:validateBean disabled="true"/></tt> on
+            the JSF component. To reproduce the problem:
+        </p>
+        <ul>
+            <li>Leave the field blank, and click Submit</li>
+            <li>Message will say 'SUCCESS' because the empty value got through (this is correct, as bean validation has been disabled)</li>
+            <li>Click Submit again</li>
+            <li>Message will not say 'SUCCESS' because bean validation is enabled again</li>
+        </ul>
+        <hr/>
+        <h:form id="form">
+            <h:messages />
+            <h:outputLabel for="fooBeanFooName" value="Foo:"/>
+            <h:inputText id="fooBeanFooName" value="#{validateBeanDisabledBean.foo.name}">
+                <f:validateBean disabled="#{true}"/>
+            </h:inputText>
+            <p/>
+            <h:commandButton id="submit" value="Submit" action="#{validateBeanDisabledBean.submit}"/>
+        </h:form>
+    </h:body>
+</html>	
diff --git a/test/servlet30/facelets/core/src/main/webapp/validateRequired.xhtml b/test/servlet30/facelets/core/src/main/webapp/validateRequired.xhtml
new file mode 100644
index 0000000..a5bba68
--- /dev/null
+++ b/test/servlet30/facelets/core/src/main/webapp/validateRequired.xhtml
@@ -0,0 +1,20 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    <h:body>
+        <h:form id="form1" prependId="false">
+            <h:inputText id="input2" value="#{validateRequiredBean.text2}">
+                <f:validateRequired />
+            </h:inputText>
+            
+            <h:commandButton value="submit" id="submit" />
+            
+            
+            <p id="messages"><h:messages /></p>
+        </h:form>
+    </h:body>
+</html>
diff --git a/test/servlet30/facelets/core/src/main/webapp/validateRequiredDisabled.xhtml b/test/servlet30/facelets/core/src/main/webapp/validateRequiredDisabled.xhtml
new file mode 100644
index 0000000..45b3526
--- /dev/null
+++ b/test/servlet30/facelets/core/src/main/webapp/validateRequiredDisabled.xhtml
@@ -0,0 +1,20 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    <h:body>
+        <h:form id="form1" prependId="false">
+            <h:inputText id="input2" value="#{validateRequiredBean.text2}">
+                <f:validateRequired disabled="true"/>
+            </h:inputText>
+            
+            <h:commandButton value="submit" />
+            
+            
+            <p id="messages"><h:messages /></p>
+        </h:form>
+    </h:body>
+</html>
diff --git a/test/servlet30/facelets/core/src/main/webapp/viewActionActionEmpty.xhtml b/test/servlet30/facelets/core/src/main/webapp/viewActionActionEmpty.xhtml
new file mode 100644
index 0000000..f62a38d
--- /dev/null
+++ b/test/servlet30/facelets/core/src/main/webapp/viewActionActionEmpty.xhtml
@@ -0,0 +1,20 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    <f:metadata>
+        <f:viewParam name="test" />
+        <f:viewAction action="#{viewActionBean.returnEmpty}" />
+    </f:metadata>
+    <h:head>
+        <title>This page has a viewAction that navigates to itself by returning the empty string.</title>
+    </h:head>
+    <h:body>
+        <h:form>
+            This page has a viewAction that navigates to itself by returning the empty string.
+            message: #{message}
+        </h:form>
+    </h:body>
+</html>
diff --git a/test/servlet30/facelets/core/src/main/webapp/viewActionActionExplicitRedirect.xhtml b/test/servlet30/facelets/core/src/main/webapp/viewActionActionExplicitRedirect.xhtml
new file mode 100644
index 0000000..8fa89d0
--- /dev/null
+++ b/test/servlet30/facelets/core/src/main/webapp/viewActionActionExplicitRedirect.xhtml
@@ -0,0 +1,17 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    <f:metadata>
+        <f:viewParam name="test" />
+        <f:viewAction action="#{viewActionBean.pageAExplicitRedirect}" />
+    </f:metadata>
+    <h:head>
+        <title>This page will cause an infinite redirect loop</title>
+    </h:head>
+    <h:body>
+        <h:form>
+            This page will cause an infinite redirect loop and should never actually render.
+        </h:form>
+    </h:body>
+</html>
diff --git a/test/servlet30/facelets/core/src/main/webapp/viewActionActionListener1a.xhtml b/test/servlet30/facelets/core/src/main/webapp/viewActionActionListener1a.xhtml
new file mode 100644
index 0000000..2f00131
--- /dev/null
+++ b/test/servlet30/facelets/core/src/main/webapp/viewActionActionListener1a.xhtml
@@ -0,0 +1,18 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://xmlns.jcp.org/jsf/html"
+      xmlns:f="http://xmlns.jcp.org/jsf/core">
+    <f:metadata>
+        <f:viewParam name="test"/>
+        <f:viewAction action="#{viewActionBean.action}" id="viewAction1">
+            <f:actionListener binding="#{viewActionBean.actionListener1}"/>
+            <f:actionListener binding="#{viewActionBean.actionListener2}"/>
+        </f:viewAction>    
+    </f:metadata>
+    <h:head>
+        <title>A Simple JavaServer Faces 2.0 View</title>
+    </h:head>
+    <h:body>
+    </h:body>
+</html>
diff --git a/test/servlet30/facelets/core/src/main/webapp/viewActionActionListener1b.xhtml b/test/servlet30/facelets/core/src/main/webapp/viewActionActionListener1b.xhtml
new file mode 100644
index 0000000..be81fa3
--- /dev/null
+++ b/test/servlet30/facelets/core/src/main/webapp/viewActionActionListener1b.xhtml
@@ -0,0 +1,19 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    <f:metadata>
+        <f:viewParam name="test" />
+        <f:viewAction action="#{viewActionBean.action}" id="viewAction1">
+            <f:actionListener binding="#{viewActionBean.actionListener1}" />
+            <f:actionListener binding="#{viewActionBean.actionListener2}" />
+        </f:viewAction>    
+    </f:metadata>
+    <h:head>
+        <title>A Simple JavaServer Faces 2.0 View</title>
+    </h:head>
+    <h:body>
+    </h:body>
+</html>
diff --git a/test/servlet30/facelets/core/src/main/webapp/viewActionActionListener2a.xhtml b/test/servlet30/facelets/core/src/main/webapp/viewActionActionListener2a.xhtml
new file mode 100644
index 0000000..04caa54
--- /dev/null
+++ b/test/servlet30/facelets/core/src/main/webapp/viewActionActionListener2a.xhtml
@@ -0,0 +1,17 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://xmlns.jcp.org/jsf/html"
+      xmlns:f="http://xmlns.jcp.org/jsf/core">
+    <f:metadata>
+        <f:viewParam name="test"/>
+        <f:viewAction action="#{viewActionBean.action}" id="viewAction1"
+                      actionListener="#{viewActionBean.actionListenerMethod}"/>
+    </f:metadata>
+    <h:head>
+        <title>A Simple JavaServer Faces 2.0 View</title>
+    </h:head>
+    <h:body>
+    </h:body>
+</html>
diff --git a/test/servlet30/facelets/core/src/main/webapp/viewActionActionListener2b.xhtml b/test/servlet30/facelets/core/src/main/webapp/viewActionActionListener2b.xhtml
new file mode 100644
index 0000000..f7eda6f
--- /dev/null
+++ b/test/servlet30/facelets/core/src/main/webapp/viewActionActionListener2b.xhtml
@@ -0,0 +1,17 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    <f:metadata>
+        <f:viewParam name="test" />
+        <f:viewAction action="#{viewActionBean.action}" id="viewAction1"
+                      actionListener="#{viewActionBean.actionListenerMethod}" />
+    </f:metadata>
+    <h:head>
+        <title>A Simple JavaServer Faces 2.0 View</title>
+    </h:head>
+    <h:body>
+    </h:body>
+</html>
diff --git a/test/servlet30/facelets/core/src/main/webapp/viewActionActionNull.xhtml b/test/servlet30/facelets/core/src/main/webapp/viewActionActionNull.xhtml
new file mode 100644
index 0000000..a100be1
--- /dev/null
+++ b/test/servlet30/facelets/core/src/main/webapp/viewActionActionNull.xhtml
@@ -0,0 +1,20 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    <f:metadata>
+        <f:viewParam name="test" />
+        <f:viewAction action="#{viewActionBean.returnNull}" />
+    </f:metadata>
+    <h:head>
+        <title>This page has a viewAction that navigates to itself by returning null.</title>
+    </h:head>
+    <h:body>
+        <h:form>
+            This page has a viewAction that navigates to itself by returning null.
+            message: #{message}
+        </h:form>
+    </h:body>
+</html>
diff --git a/test/servlet30/facelets/core/src/main/webapp/viewActionActionPageA.xhtml b/test/servlet30/facelets/core/src/main/webapp/viewActionActionPageA.xhtml
new file mode 100644
index 0000000..60f9bed
--- /dev/null
+++ b/test/servlet30/facelets/core/src/main/webapp/viewActionActionPageA.xhtml
@@ -0,0 +1,20 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    <f:metadata>
+        <f:viewParam name="test"/>
+        <f:viewAction action="#{viewActionBean.pageA}"/>
+    </f:metadata>
+    <h:head>
+        <title>This page has a viewAction that navigates to itself with an explicit rule.</title>
+    </h:head>
+    <h:body>
+        <h:form>
+            This page has a viewAction that navigates to itself with an explicit rule.
+            message: #{message}
+        </h:form>
+    </h:body>
+</html>
diff --git a/test/servlet30/facelets/core/src/main/webapp/viewActionRedirect1a.xhtml b/test/servlet30/facelets/core/src/main/webapp/viewActionRedirect1a.xhtml
new file mode 100644
index 0000000..db27cdc
--- /dev/null
+++ b/test/servlet30/facelets/core/src/main/webapp/viewActionRedirect1a.xhtml
@@ -0,0 +1,15 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    <f:metadata>
+        <f:viewParam name="test" />
+        <f:viewAction action="#{viewActionBean.action}" />
+    </f:metadata>
+    <h:head>
+        <title>A Simple JavaServer Faces 2.0 View</title>
+    </h:head>
+    <h:body>
+    </h:body>
+</html>
diff --git a/test/servlet30/facelets/core/src/main/webapp/viewActionRedirect1b.xhtml b/test/servlet30/facelets/core/src/main/webapp/viewActionRedirect1b.xhtml
new file mode 100644
index 0000000..5a3765d
--- /dev/null
+++ b/test/servlet30/facelets/core/src/main/webapp/viewActionRedirect1b.xhtml
@@ -0,0 +1,16 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://xmlns.jcp.org/jsf/html"
+      xmlns:f="http://xmlns.jcp.org/jsf/core">
+    <f:metadata>
+        <f:viewParam name="test" />
+        <f:viewAction action="#{viewActionBean.action}" />
+    </f:metadata>
+    <h:head>
+        <title>A Simple JavaServer Faces 2.0 View</title>
+    </h:head>
+    <h:body>
+    </h:body>
+</html>
diff --git a/test/servlet30/facelets/core/src/main/webapp/viewActionResult.xhtml b/test/servlet30/facelets/core/src/main/webapp/viewActionResult.xhtml
new file mode 100644
index 0000000..8aea304
--- /dev/null
+++ b/test/servlet30/facelets/core/src/main/webapp/viewActionResult.xhtml
@@ -0,0 +1,11 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:f="http://java.sun.com/jsf/core">
+    <f:view>
+        Result page
+        <p id="result">
+            #{sessionScope.message}
+        </p>
+    </f:view>
+</html>
diff --git a/test/servlet30/facelets/core/src/main/webapp/viewParam.xhtml b/test/servlet30/facelets/core/src/main/webapp/viewParam.xhtml
new file mode 100644
index 0000000..997112c
--- /dev/null
+++ b/test/servlet30/facelets/core/src/main/webapp/viewParam.xhtml
@@ -0,0 +1,23 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    <h:head>
+        <title>A Simple JavaServer Faces 2.0 View</title>
+        <f:metadata>
+            <f:viewParam name="value" value="#{viewParamBean.value}" />
+        </f:metadata>
+    </h:head>
+    <h:body>
+        <h:form prependId="false">
+            <h:inputText id="input" value="#{viewParamBean.value}" />
+            <h:commandButton id="implicitNavigationButton" value="submit with implicit navigation" action="#{viewParamBean.submit}" />
+            <h:commandButton id="explicitNavigationButton" value="submit with explicit navigation" action="explicit" />
+            <br />
+            <p>Param from faces-config: #{param.elViewParam}.</p>
+            <p>Param from input field: #{viewParamBean.value}</p>
+        </h:form>
+    </h:body>
+</html>
diff --git a/test/servlet30/facelets/core/src/main/webapp/viewParam2.xhtml b/test/servlet30/facelets/core/src/main/webapp/viewParam2.xhtml
new file mode 100644
index 0000000..185f113
--- /dev/null
+++ b/test/servlet30/facelets/core/src/main/webapp/viewParam2.xhtml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    <f:metadata>
+        <f:viewParam name="input1" value="#{viewParam2Bean.text}" />
+    </f:metadata>
+    <h:head>
+        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+    </h:head>
+    <h:body>
+        <h:form id="form">
+            <h:outputLabel for="text" value="input1: "/>
+            <h:inputText id="input" value="#{viewParam2Bean.text}"/>
+            <h:commandButton id="button" value="go" action="/viewParam3.xhtml?faces-redirect=true&includeViewParams=true"/>
+        </h:form>
+    </h:body>
+</html>
diff --git a/test/servlet30/facelets/core/src/main/webapp/viewParam3.xhtml b/test/servlet30/facelets/core/src/main/webapp/viewParam3.xhtml
new file mode 100644
index 0000000..53b6a2f
--- /dev/null
+++ b/test/servlet30/facelets/core/src/main/webapp/viewParam3.xhtml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    <f:metadata>
+        <f:viewParam name="input1" value="#{viewParam3Bean.text}" />
+    </f:metadata>
+    <h:head>
+        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+    </h:head>
+    <h:body>
+        <h:form id="form1" prependId="false">
+            <h:outputLabel for="text" value="input1: " />
+            <h:outputText id="text" value="#{viewParam3Bean.text}" />
+        </h:form>
+    </h:body>
+</html>
diff --git a/test/servlet30/facelets/core/src/main/webapp/viewParam4.xhtml b/test/servlet30/facelets/core/src/main/webapp/viewParam4.xhtml
new file mode 100644
index 0000000..c3594a8
--- /dev/null
+++ b/test/servlet30/facelets/core/src/main/webapp/viewParam4.xhtml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    <h:head>
+        <title>starting page for testing JSF includeViewParams issue</title>
+    </h:head>
+    <h:body>
+        start the test app by clicking the link below, this will pass in parameters (input1=1 and input2=2)
+        to be picked up via <f:viewParam .. > in viewParam5.xhtml
+        <br />
+        <br />
+
+        once you are on   viewParam5.xhtml   there are two ways to navigate to   viewParam6.xhtml. 
+        both use a < h:button>  but the first uses   includeViewParams="true" 
+        and the second uses <f:param .. > to pass the parameters. Only the second works
+        correctly
+        <br /> 
+        <br />
+        <h:link id="link" outcome="viewParam5.xhtml?input1=1&input2=2" value="viewParam5.xhtml" />  
+    </h:body>
+</html>
+
diff --git a/test/servlet30/facelets/core/src/main/webapp/viewParam5.xhtml b/test/servlet30/facelets/core/src/main/webapp/viewParam5.xhtml
new file mode 100644
index 0000000..78ad980
--- /dev/null
+++ b/test/servlet30/facelets/core/src/main/webapp/viewParam5.xhtml
@@ -0,0 +1,34 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html   xmlns="http://www.w3.org/1999/xhtml"
+        xmlns:h="http://java.sun.com/jsf/html"
+        xmlns:f="http://java.sun.com/jsf/core">
+    <h:body>
+        <f:metadata>
+            <f:viewParam name="input1" value="#{viewParam5Bean.text1}" />
+            <f:viewParam name="input2" value="#{viewParam5Bean.text2}" />
+        </f:metadata>         		                 		           
+        <h:form id="form1" prependId="false">
+            <h:outputLabel for="text1" value="input1: " />
+            <h:outputText id="text1" value="#{viewParam5Bean.text1}" />
+            <br />
+            <h:outputLabel for="text2" value="input2: " />
+            <h:outputText id="text2" value="#{viewParam5Bean.text2}" />
+            <br />
+            <br />
+            <p>
+                Goto viewParam6.xhtml with an h:button. pass params via includeViewParams (only passes input1 viewParam)
+            </p>
+            <h:button id="firstButton" value="viewParam6.xhtml" outcome="viewParam6.xhtml" includeViewParams="true" />
+            <br />
+            <br />
+            <p>
+                Goto viewParam6.xhtml with an h:button. pass params via f:param  (works)
+            </p>
+            <h:button id="secondButton" value="viewParam6.xhtml" outcome="viewParam6.xhtml">
+                <f:param name="input1" value="#{viewParam5Bean.text1}" />
+                <f:param name="input2" value="#{viewParam5Bean.text2}" />                	                	
+            </h:button>
+        </h:form>
+    </h:body>
+</html>
diff --git a/test/servlet30/facelets/core/src/main/webapp/viewParam6.xhtml b/test/servlet30/facelets/core/src/main/webapp/viewParam6.xhtml
new file mode 100644
index 0000000..6dad647
--- /dev/null
+++ b/test/servlet30/facelets/core/src/main/webapp/viewParam6.xhtml
@@ -0,0 +1,35 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    <h:body>
+        <f:metadata>
+            <f:viewParam name="input1" value="#{viewParam6Bean.text1}" />
+            <f:viewParam name="input2" value="#{viewParam6Bean.text2}" />
+        </f:metadata>         		                 		           
+        <h:form id="form1" prependId="false">
+            <h:outputLabel for="text1" value="input1: " />
+            <h:outputText id="text1" value="#{viewParam6Bean.text1}" />
+            <br />
+            <h:outputLabel for="text2" value="input2: " />
+            <h:outputText id="text2" value="#{viewParam6Bean.text2}" />
+            <br />
+            <br />        
+            Go back and include params via includeViewParams
+            <h:button value="viewParam5.xhtml" outcome="viewParam5.xhtml" includeViewParams="true" />
+            <br />
+            <br />                
+            <p>
+                Go back and include params via f:param (works)
+            </p>
+            <h:button value="viewParam5.xhtml" 
+                      outcome="viewParam5.xhtml" >                			
+                <f:param name="input1" value="#{viewParam6Bean.text1}" />
+                <f:param name="input2" value="#{viewParam6Bean.text2}" />                	                	
+            </h:button>
+        </h:form>
+    </h:body>
+</html>
diff --git a/test/servlet30/facelets/core/src/main/webapp/viewParam7.xhtml b/test/servlet30/facelets/core/src/main/webapp/viewParam7.xhtml
new file mode 100644
index 0000000..321a990
--- /dev/null
+++ b/test/servlet30/facelets/core/src/main/webapp/viewParam7.xhtml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"   
+      xmlns:h="http://java.sun.com/jsf/html"
+      >
+ 
+    <h:body>
+ 
+ 		<h:link value="click here and inspect url, it's wrong" outcome="viewParam7" />
+ 		<br/>
+ 		<br/>
+  		<h:form>
+ 		<h:commandLink value="click here and inspect url, it's right" action="viewParam7" />
+  		</h:form>
+    </h:body>
+ 
+</html>
\ No newline at end of file
diff --git a/test/servlet30/facelets/core/src/main/webapp/viewParam7Required.xhtml b/test/servlet30/facelets/core/src/main/webapp/viewParam7Required.xhtml
new file mode 100644
index 0000000..2fedea3
--- /dev/null
+++ b/test/servlet30/facelets/core/src/main/webapp/viewParam7Required.xhtml
@@ -0,0 +1,20 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    <h:body>
+        <f:metadata>
+            <f:viewParam name="input1" id="input1" value="#{viewParam7Bean.text1}" required="true" 
+                         requiredMessage="INPUT1 HAS NO VALUE!"/>
+            <f:viewParam name="input2" id="input2" value="#{viewParam7Bean.text2}">
+                <f:validateRequired />
+            </f:viewParam>
+        </f:metadata>         		                 		           
+        <h:form id="form1" prependId="false">
+            <p id="messages"><h:messages /></p>
+        </h:form>
+    </h:body>
+</html>
diff --git a/test/servlet30/facelets/core/src/main/webapp/viewParamListener_first.xhtml b/test/servlet30/facelets/core/src/main/webapp/viewParamListener_first.xhtml
new file mode 100644
index 0000000..5004610
--- /dev/null
+++ b/test/servlet30/facelets/core/src/main/webapp/viewParamListener_first.xhtml
@@ -0,0 +1,33 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+	xmlns:ui="http://java.sun.com/jsf/facelets"
+	xmlns:h="http://java.sun.com/jsf/html"
+	xmlns:f="http://java.sun.com/jsf/core">
+
+
+<f:view>
+  <f:metadata>
+    <f:viewParam name="id" value="#{outcomeTestFirstBean.firstId}"></f:viewParam>
+  </f:metadata>
+
+	<h:head>
+	</h:head>
+	<h:form prependId="false">
+		
+		<h2>Problem description:</h2>
+		When visiting this page using the following link: <a id="myHref" href="?id=11111">/first.jsf?id=11111</a> we can show that include-view-params causes a problem.<br/>
+		Clicking the TestOutcomeLink poses no problem and will load the second page normally.<br/>
+		Any postback will however try to execute the preRenderView event of the OutcomeTestSecondBean (because the metaData is parsed at ViewMetadataImpl.createMetadataView(FacesContext) line: 115)
+		<br/><br/><br/>
+		<h:link outcome="second" value="TestOutcomeLink" includeViewParams="true">
+			<f:param name="extraParam" value="99999" />
+		</h:link>
+		<br/><br/><br/>
+		<h:commandLink value="Postback goes BOOM" action="#{outcomeTestFirstBean.justAnAction}" /> 
+		<h:commandButton id="postbackButton" value="Postback goes BOOM" action="#{outcomeTestFirstBean.justAnAction}" />
+	</h:form>
+</f:view>
+</html>
diff --git a/test/servlet30/facelets/core/src/main/webapp/viewParamListener_second.xhtml b/test/servlet30/facelets/core/src/main/webapp/viewParamListener_second.xhtml
new file mode 100644
index 0000000..d05d6e6
--- /dev/null
+++ b/test/servlet30/facelets/core/src/main/webapp/viewParamListener_second.xhtml
@@ -0,0 +1,22 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+	xmlns:ui="http://java.sun.com/jsf/facelets"
+	xmlns:h="http://java.sun.com/jsf/html"
+	xmlns:f="http://java.sun.com/jsf/core">
+
+
+<f:view>
+  <f:metadata>
+    <f:viewParam name="id" value="#{outcomeTestSecondBean.secondId}"></f:viewParam>
+    <f:event listener="#{outcomeTestSecondBean.load}" type="preRenderView" />
+  </f:metadata>
+	<h:head>
+	</h:head>
+    <h:form prependId="false">
+		<h:outputLabel value="#{outcomeTestSecondBean.secondId}" />
+	</h:form>
+</f:view>
+</html>
diff --git a/test/servlet30/facelets/core/src/main/webapp/viewParamLocale.xhtml b/test/servlet30/facelets/core/src/main/webapp/viewParamLocale.xhtml
new file mode 100644
index 0000000..0b29a8b
--- /dev/null
+++ b/test/servlet30/facelets/core/src/main/webapp/viewParamLocale.xhtml
@@ -0,0 +1,61 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html lang="#{viewParamLocaleBean.language}"
+    xmlns="http://www.w3.org/1999/xhtml"
+    xmlns:h="http://java.sun.com/jsf/html"
+    xmlns:f="http://java.sun.com/jsf/core">
+
+    <f:view locale="#{viewParamLocaleBean.locale}">
+        <f:metadata>
+            <f:viewParam name="id" converter="#{viewParamLocaleBean.converter}" />
+        </f:metadata>
+        <h:head>
+            <title>Test</title>
+        </h:head>
+        <h:body>
+            <h:messages/>
+        </h:body>
+    </f:view>
+</html>
diff --git a/test/servlet30/facelets/core/src/main/webapp/viewParamMultiple.xhtml b/test/servlet30/facelets/core/src/main/webapp/viewParamMultiple.xhtml
new file mode 100644
index 0000000..11bce28
--- /dev/null
+++ b/test/servlet30/facelets/core/src/main/webapp/viewParamMultiple.xhtml
@@ -0,0 +1,70 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    <f:view>
+        <f:metadata>
+            <f:viewParam name="param1" value="#{viewScope['param1']}"/>
+            <f:viewParam name="param2" value="#{viewScope['param2']}"/>
+        </f:metadata>
+        <h:head>
+            <title>Test multiple view parameters.</title>
+        </h:head>
+        <h:body>
+            <h:panelGrid columns="1">
+                <h:panelGroup>
+                    <h:form id="form">
+                        <h:outputText value="Param1:=#{param['param1']};"/>
+                        <br/>
+                        <h:outputText value="Param2:=#{param['param2']};"/>
+                        <br/>
+                        <h:outputText value="viewScope-param1:=#{viewScope['param1']};"/>
+                        <br/>
+                        <h:outputText value="viewScope-param2:=#{viewScope['param2']};"/>
+                        <br/>
+                        <br/>
+                        <h:commandLink
+                            id="set1"
+                            value="SET param1"
+                            rendered="#{not 'value'.equals(viewScope['param1'])}">
+                            <f:param name="param1" value="value"/>
+                            <f:ajax execute="@form" render="@form"/>
+                        </h:commandLink>
+                        <h:commandLink
+                            value="UNSET param1"
+                            rendered="#{'value'.equals(viewScope['param1'])}">
+                            <f:param name="param1" value=""/>
+                            <f:ajax execute="@form" render="@form"/>
+                        </h:commandLink>
+                        <br/>
+                        <br/>
+                        <h:commandLink
+                            id="set2"
+                            value="SET param2"
+                            rendered="#{not 'value'.equals(viewScope['param2'])}">
+                            <f:param name="param2" value="value"/>
+                            <f:ajax execute="@form" render="@form"/>
+                        </h:commandLink>
+                        <h:commandLink
+                            value="UNSET param2"
+                            rendered="#{'value'.equals(viewScope['param2'])}">
+                            <f:param name="param2" value=""/>
+                            <f:ajax execute="@form" render="@form"/>
+                        </h:commandLink>
+                        <br/>
+                        <br/>
+                        <h:commandButton id="postback" value="POSTBACK"/>
+                        <br/>
+                        <h:link id="link" value="LINK with ViewParams" includeViewParams="true" outcome="#{view.viewId}"/>
+                        <br/>
+
+                        <h:link value="LINK without ViewParams" includeViewParams="false" outcome="#{view.viewId}"/>
+                        <br/>
+                    </h:form>
+                </h:panelGroup>
+            </h:panelGrid>
+        </h:body>
+    </f:view>
+</html>
diff --git a/test/servlet30/facelets/core/src/main/webapp/viewTransient.xhtml b/test/servlet30/facelets/core/src/main/webapp/viewTransient.xhtml
new file mode 100644
index 0000000..229486b
--- /dev/null
+++ b/test/servlet30/facelets/core/src/main/webapp/viewTransient.xhtml
@@ -0,0 +1,21 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!DOCTYPE html>
+
+<f:view 
+    xmlns="http://www.w3.org/1999/xhtml"
+    xmlns:h="http://java.sun.com/jsf/html"
+    xmlns:f="http://java.sun.com/jsf/core"
+    transient="true">
+    <html>
+        <h:head>
+            <title>A transient view</title>
+        </h:head>
+        <h:body>
+            A transient view
+            <h:form id="form">
+                <h:button id="button" outcome="viewTransient.xhtml" value="Submit"/>
+            </h:form>
+        </h:body>   
+    </html>
+</f:view>
diff --git a/test/servlet30/facelets/core/src/main/webapp/viewTransientAjax.xhtml b/test/servlet30/facelets/core/src/main/webapp/viewTransientAjax.xhtml
new file mode 100644
index 0000000..afb7d63
--- /dev/null
+++ b/test/servlet30/facelets/core/src/main/webapp/viewTransientAjax.xhtml
@@ -0,0 +1,28 @@
+<?xml version='1.0' encoding='UTF-8'?>
+
+<!DOCTYPE html>
+
+<f:view 
+    xmlns="http://www.w3.org/1999/xhtml"
+    xmlns:h="http://java.sun.com/jsf/html"
+    xmlns:f="http://java.sun.com/jsf/core"
+    transient="true">
+    <html>
+        <h:head>
+            <title>A transient view</title>
+        </h:head>
+        <h:body>
+            A transient view
+            <h:form id="form">
+                parameter1: [<h:outputText value="#{param['parameter1']}"/>] <br/>
+                <h:commandButton id="ajaxButton" action="viewTransientAjax.xhtml" value="Ajax Submit">
+                    <f:param name="parameter1" value="ajax"/>
+                    <f:ajax execute="@this" render="@form"/>
+                </h:commandButton>
+                <h:commandButton id="submitButton" action="viewTransientAjax.xhtml" value="Submit">
+                    <f:param name="parameter1" value="non-ajax"/>
+                </h:commandButton>
+            </h:form>
+        </h:body>
+    </html>
+</f:view>
diff --git a/test/servlet30/facelets/core/src/main/webapp/viewTransientFalse.xhtml b/test/servlet30/facelets/core/src/main/webapp/viewTransientFalse.xhtml
new file mode 100644
index 0000000..675f170
--- /dev/null
+++ b/test/servlet30/facelets/core/src/main/webapp/viewTransientFalse.xhtml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE html>
+
+<f:view 
+    xmlns="http://www.w3.org/1999/xhtml"
+    xmlns:h="http://java.sun.com/jsf/html"
+    xmlns:f="http://java.sun.com/jsf/core"
+    transient="false">
+    <html>
+        <h:head>
+            <title>A non-transient view</title>
+        </h:head>
+        <h:body>
+            A non-transient view
+            <h:form id="form">
+                <h:commandButton id="button" action="viewTransientFalse.xhtml" value="Submit"/>
+            </h:form>
+        </h:body>   
+    </html>
+</f:view>
diff --git a/test/servlet30/facelets/core/src/test/java/com/sun/faces/test/servlet30/facelets/core/ForEachIT.java b/test/servlet30/facelets/core/src/test/java/com/sun/faces/test/servlet30/facelets/core/ForEachIT.java
new file mode 100644
index 0000000..db3b3bc
--- /dev/null
+++ b/test/servlet30/facelets/core/src/test/java/com/sun/faces/test/servlet30/facelets/core/ForEachIT.java
@@ -0,0 +1,292 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDLGPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.facelets.core;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class ForEachIT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void test_false_false_false_false_false_false_false_false_false() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/forEach/index.xhtml");
+                
+        page = webClient.getPage(webUrl + "faces/forEach/false_false_false_false_false_false_false_false_false.xhtml");
+
+        assertTrue(page.asXml().matches("(?s).*<form.*>.*<input.+type=\"text\".+value=\"Bobby\".+disabled=\"disabled\".*>.*<input.+id=\"literalId\".+type=\"text\".+name=\"literalId\".+value=\"Bobby\".+disabled=\"disabled\".*/>.*<input.+type=\"text\".+value=\"Jerry\".+disabled=\"disabled\".*/>.*<input.+type=\"text\".+value=\"Jerry\".+disabled=\"disabled\".*/>.*<input.+type=\"text\".+value=\"Phil\".+disabled=\"disabled\".*/>.*<input.+type=\"text\".+value=\"Phil\".+disabled=\"disabled\".*/> [...]
+        
+        HtmlSubmitInput button = page.getHtmlElementById("submit");
+        page = button.click();
+        
+        assertTrue(page.asXml().matches("(?s).*<form.*id=\"form01\".*name=\"form01\".*>.*<input.+type=\"text\".+name=\"j_idt[0-9]+\".+value=\"Bobby\".+disabled=\"disabled\".*/>.*<input.+id=\"literalId\".+type=\"text\".+name=\"literalId\".+value=\"Bobby\".+disabled=\"disabled\".*/>.*<input.+type=\"text\".+name=\"j_idt[0-9]+\".+value=\"Jerry\".+disabled=\"disabled\".*/>.*<input.+type=\"text\".+name=\"j_idt[0-9]+\".+value=\"Jerry\".+disabled=\"disabled\".*/>.*<input.+type=\"text\".+name=\"j [...]
+        
+    }
+    
+    @Test
+    public void test_false_false_false_false_false_false_false_false_true() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/forEach/index.xhtml");
+                
+        page = webClient.getPage(webUrl + "faces/forEach/false_false_false_false_false_false_false_false_true.xhtml");
+
+        
+    }
+
+
+    @Test
+    public void test_false_false_false_false_false_false_false_true_false() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/forEach/index.xhtml");
+                
+        page = webClient.getPage(webUrl + "faces/forEach/false_false_false_false_false_false_false_true_false.xhtml");
+
+        
+    }
+
+
+    @Test
+    public void test_false_false_false_false_false_false_false_true_true() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/forEach/index.xhtml");
+                
+        page = webClient.getPage(webUrl + "faces/forEach/false_false_false_false_false_false_false_true_true.xhtml");
+
+        
+    }
+
+
+    @Test
+    public void test_false_false_false_false_false_false_true_false_false() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/forEach/index.xhtml");
+                
+        page = webClient.getPage(webUrl + "faces/forEach/false_false_false_false_false_false_true_false_false.xhtml");
+
+        
+    }
+
+
+    @Test
+    public void test_false_false_false_false_false_false_true_false_true() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/forEach/index.xhtml");
+                
+        page = webClient.getPage(webUrl + "faces/forEach/false_false_false_false_false_false_true_false_true.xhtml");
+
+        
+    }
+
+
+    @Test
+    public void test_false_false_false_false_false_false_true_true_false() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/forEach/index.xhtml");
+                
+        page = webClient.getPage(webUrl + "faces/forEach/false_false_false_false_false_false_true_true_false.xhtml");
+
+        
+    }
+
+
+    @Test
+    public void test_false_false_false_false_false_false_true_true_true() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/forEach/index.xhtml");
+                
+        page = webClient.getPage(webUrl + "faces/forEach/true_true_true_true_true_true_true_true_true.xhtml");
+
+        
+    }
+
+
+    @Test
+    public void test_false_false_false_false_false_true_false_false_false() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/forEach/index.xhtml");
+                
+        page = webClient.getPage(webUrl + "faces/forEach/false_false_false_false_false_true_false_false_false.xhtml");
+
+        
+    }
+
+
+    @Test
+    public void test_false_false_false_false_false_true_false_false_true() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/forEach/index.xhtml");
+                
+        page = webClient.getPage(webUrl + "faces/forEach/false_false_false_false_false_true_false_false_true.xhtml");
+
+        
+    }
+
+
+    @Test
+    public void test_false_false_false_false_false_true_false_true_false() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/forEach/index.xhtml");
+                
+        page = webClient.getPage(webUrl + "faces/forEach/false_false_false_false_false_true_false_true_false.xhtml");
+
+        
+    }
+
+
+    @Test
+    public void test_false_false_false_false_false_true_false_true_true() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/forEach/index.xhtml");
+                
+        page = webClient.getPage(webUrl + "faces/forEach/false_false_false_false_false_true_false_true_true.xhtml");
+
+        
+    }
+
+
+    @Test
+    public void test_false_false_false_false_false_true_true_false_false() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/forEach/index.xhtml");
+                
+        page = webClient.getPage(webUrl + "faces/forEach/false_false_false_false_false_true_true_false_false.xhtml");
+
+        
+    }
+
+
+    @Test
+    public void test_false_false_false_false_false_true_true_false_true() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/forEach/index.xhtml");
+                
+        page = webClient.getPage(webUrl + "faces/forEach/false_false_false_false_false_true_true_false_true.xhtml");
+
+        
+    }
+
+
+    @Test
+    public void test_false_false_false_false_false_true_true_true_false() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/forEach/index.xhtml");
+                
+        page = webClient.getPage(webUrl + "faces/forEach/false_false_false_false_false_true_true_true_false.xhtml");
+
+        
+    }
+
+
+    @Test
+    public void test_false_false_false_false_false_true_true_true_true() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/forEach/index.xhtml");
+                
+        page = webClient.getPage(webUrl + "faces/forEach/false_false_false_false_false_true_true_true_true.xhtml");
+
+        
+    }
+
+
+    @Test
+    public void test_false_false_false_false_true_true_true_true_false() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/forEach/index.xhtml");
+                
+        page = webClient.getPage(webUrl + "faces/forEach/false_false_false_false_true_true_true_true_false.xhtml");
+
+        
+    }
+
+
+    @Test
+    public void test_false_false_false_true_false_true_false_true_true() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/forEach/index.xhtml");
+                
+        page = webClient.getPage(webUrl + "faces/forEach/false_false_false_true_false_true_false_true_true.xhtml");
+
+        
+    }
+
+
+    @Test
+    public void test_false_false_true_false_false_false_true_true_false() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/forEach/index.xhtml");
+                
+        page = webClient.getPage(webUrl + "faces/forEach/false_false_true_false_false_false_true_true_false.xhtml");
+
+        
+    }
+
+
+    @Test
+    public void test_false_true_false_false_false_true_false_true_false() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/forEach/index.xhtml");
+                
+        page = webClient.getPage(webUrl + "faces/forEach/false_true_false_false_false_true_false_true_false.xhtml");
+
+        
+    }
+
+
+    @Test
+    public void test_true_false_false_false_false_false_false_false_false() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/forEach/index.xhtml");
+                
+        page = webClient.getPage(webUrl + "faces/forEach/true_false_false_false_false_false_false_false_false.xhtml");
+
+        
+    }
+
+
+    @Test
+    public void test_true_true_true_true_true_true_true_true_true() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/forEach/index.xhtml");
+                
+        page = webClient.getPage(webUrl + "faces/forEach/true_true_true_true_true_true_true_true_true.xhtml");
+
+        
+    }
+
+
+
+}
diff --git a/test/servlet30/facelets/core/src/test/java/com/sun/faces/test/servlet30/facelets/core/Glassfish18007IT.java b/test/servlet30/facelets/core/src/test/java/com/sun/faces/test/servlet30/facelets/core/Glassfish18007IT.java
new file mode 100644
index 0000000..018f504
--- /dev/null
+++ b/test/servlet30/facelets/core/src/test/java/com/sun/faces/test/servlet30/facelets/core/Glassfish18007IT.java
@@ -0,0 +1,80 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.facelets.core;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.After;
+import static org.junit.Assert.assertTrue;
+import org.junit.Before;
+import org.junit.Test;
+
+public class Glassfish18007IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    /*
+     * This test is simulating setting the request encoding before the 
+     * ViewHandler.initView call by using a before phaselistener. We do it this 
+     * way so we don't have to create a new view handler as it comes down to 
+     * the same thing.
+     *
+     * Here we assert that the request encoding that the phaselistener 
+     * (simulating the custom view handler) has set is also what the 
+     * FacesContext comes back with when the page gets rendered.
+     */
+    @Test
+    public void testRequestEncoding() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/phaseListenerRequestEncoding.xhtml");
+        assertTrue(page.asText().contains("ISO-8859-1"));
+    }
+}
diff --git a/test/servlet30/facelets/core/src/test/java/com/sun/faces/test/servlet30/facelets/core/Issue18329103IT.java b/test/servlet30/facelets/core/src/test/java/com/sun/faces/test/servlet30/facelets/core/Issue18329103IT.java
new file mode 100644
index 0000000..b20017b
--- /dev/null
+++ b/test/servlet30/facelets/core/src/test/java/com/sun/faces/test/servlet30/facelets/core/Issue18329103IT.java
@@ -0,0 +1,100 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.facelets.core;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlCheckBoxInput;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import com.sun.faces.test.junit.JsfTestRunner;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+import org.junit.runner.RunWith;
+
+ at RunWith(JsfTestRunner.class)
+public class Issue18329103IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testCifRendered() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/cifRenderedFalse.xhtml");
+        String pageXml = page.asXml();
+        assertTrue(!pageXml.contains("CustomComponentHandler.apply() called"));
+        
+        HtmlCheckBoxInput rendered = (HtmlCheckBoxInput) page.getElementById("checkbox");
+        rendered.setChecked(true);
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("button");
+        page = button.click();
+        
+        pageXml = page.asXml();
+        assertTrue(pageXml.contains("CustomComponentHandler.apply() called"));
+        
+        rendered = (HtmlCheckBoxInput) page.getElementById("checkbox");
+        rendered.setChecked(false);
+        
+        button = (HtmlSubmitInput) page.getElementById("button");
+        page = button.click();
+
+        // We need an extra click if partialStateSaving=false because
+        // the facelets are applied to build the view before restore
+        // in that case.
+        button = (HtmlSubmitInput) page.getElementById("button");
+        page = button.click();
+        
+        pageXml = page.asXml();
+        assertTrue(!pageXml.contains("CustomComponentHandler.apply() called"));
+        
+    }
+}
diff --git a/test/servlet30/facelets/core/src/test/java/com/sun/faces/test/servlet30/facelets/core/Issue2045IT.java b/test/servlet30/facelets/core/src/test/java/com/sun/faces/test/servlet30/facelets/core/Issue2045IT.java
new file mode 100644
index 0000000..b4b6de5
--- /dev/null
+++ b/test/servlet30/facelets/core/src/test/java/com/sun/faces/test/servlet30/facelets/core/Issue2045IT.java
@@ -0,0 +1,76 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.facelets.core;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.sun.faces.test.junit.JsfTest;
+import com.sun.faces.test.junit.JsfTestRunner;
+import com.sun.faces.test.junit.JsfVersion;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+import org.junit.runner.RunWith;
+
+ at RunWith(JsfTestRunner.class)
+public class Issue2045IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @JsfTest(JsfVersion.JSF_2_2_1)
+    @Test
+    public void testHtmlAttributeEmpty() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/htmlAttributeEmpty.xhtml");
+        assertTrue(page.asXml().contains("alt=\"\""));
+    }
+}
diff --git a/test/servlet30/facelets/core/src/test/java/com/sun/faces/test/servlet30/facelets/core/Issue2247IT.java b/test/servlet30/facelets/core/src/test/java/com/sun/faces/test/servlet30/facelets/core/Issue2247IT.java
new file mode 100644
index 0000000..9a29985
--- /dev/null
+++ b/test/servlet30/facelets/core/src/test/java/com/sun/faces/test/servlet30/facelets/core/Issue2247IT.java
@@ -0,0 +1,89 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.facelets.core;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class Issue2247IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testNoELEvaluation() throws Exception {
+
+        HtmlPage page = webClient.getPage(webUrl + "faces/viewParam.xhtml");
+
+        HtmlTextInput textField = (HtmlTextInput) page.getElementById("input");
+        textField.setValueAttribute("#{4+5}");
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("implicitNavigationButton");
+        page = button.click();
+        
+        assertTrue(!page.asText().contains("9"));
+
+        textField = (HtmlTextInput) page.getElementById("input");
+        textField.setValueAttribute("#{12+1}");
+        button = (HtmlSubmitInput) page.getElementById("explicitNavigationButton");
+        page = button.click();
+        
+        String text = page.asText();
+        assertTrue(!text.contains("13"));
+        assertTrue(text.contains("6"));
+    }
+}
diff --git a/test/servlet30/facelets/core/src/test/java/com/sun/faces/test/servlet30/facelets/core/Issue2260IT.java b/test/servlet30/facelets/core/src/test/java/com/sun/faces/test/servlet30/facelets/core/Issue2260IT.java
new file mode 100644
index 0000000..cdfcaa0
--- /dev/null
+++ b/test/servlet30/facelets/core/src/test/java/com/sun/faces/test/servlet30/facelets/core/Issue2260IT.java
@@ -0,0 +1,80 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.facelets.core;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class Issue2260IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testViewParamPassing() throws Exception {
+
+        HtmlPage page = webClient.getPage(webUrl + "faces/viewParam2.xhtml");
+
+        HtmlTextInput textField = (HtmlTextInput) page.getElementById("form:input");
+        textField.setValueAttribute("testing");
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("form:button");
+        page = button.click();
+        
+        assertTrue(page.asText().contains("testing"));
+    }
+}
diff --git a/test/servlet30/facelets/core/src/test/java/com/sun/faces/test/servlet30/facelets/core/Issue2347IT.java b/test/servlet30/facelets/core/src/test/java/com/sun/faces/test/servlet30/facelets/core/Issue2347IT.java
new file mode 100644
index 0000000..bbea7a6
--- /dev/null
+++ b/test/servlet30/facelets/core/src/test/java/com/sun/faces/test/servlet30/facelets/core/Issue2347IT.java
@@ -0,0 +1,94 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDLGPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.facelets.core;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class Issue2347IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    /**
+     * Test the action listener with a param. This uses the EL expression that
+     * is defined on the Facelet directly.
+     *
+     * @throws Exception
+     */
+    @Test
+    public void testActionListener1() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/actionlistener.xhtml");
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("form:buttonParam");
+        page = button.click();
+        assertTrue(page.asText().contains("Listener invoked: true"));
+    }
+
+    /**
+     * Test the action listener without a param. This is the main use case for
+     * issue 2347, and depends on the new method expression that is being
+     * created based on the one defined on the Facelet.
+     *
+     * @throws Exception
+     */
+    @Test
+    public void testActionListener2() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/actionlistener.xhtml");
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("form:buttonNoParam");
+        page = button.click();
+        assertTrue(page.asText().contains("Listener invoked: true"));
+    }
+}
diff --git a/test/servlet30/facelets/core/src/test/java/com/sun/faces/test/servlet30/facelets/core/Issue2526IT.java b/test/servlet30/facelets/core/src/test/java/com/sun/faces/test/servlet30/facelets/core/Issue2526IT.java
new file mode 100644
index 0000000..967be0b
--- /dev/null
+++ b/test/servlet30/facelets/core/src/test/java/com/sun/faces/test/servlet30/facelets/core/Issue2526IT.java
@@ -0,0 +1,82 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.facelets.core;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlElement;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class Issue2526IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testMultipleViewParameters() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/validateBeanDisabled.xhtml");
+        HtmlElement element = page.getHtmlElementById("form:submit");
+        page = element.click();
+        assertTrue(page.asXml().indexOf("SUCCESS! Name set to ''") != -1);
+        element = page.getHtmlElementById("form:submit");
+        page = element.click();
+        assertTrue(page.asXml().indexOf("SUCCESS! Name set to ''") != -1);
+        element = page.getHtmlElementById("form:submit");
+        page = element.click();
+        assertTrue(page.asXml().indexOf("SUCCESS! Name set to ''") != -1);
+        element = page.getHtmlElementById("form:submit");
+        page = element.click();
+        assertTrue(page.asXml().indexOf("SUCCESS! Name set to ''") != -1);
+    }
+}
diff --git a/test/servlet30/facelets/core/src/test/java/com/sun/faces/test/servlet30/facelets/core/Issue2718IT.java b/test/servlet30/facelets/core/src/test/java/com/sun/faces/test/servlet30/facelets/core/Issue2718IT.java
new file mode 100644
index 0000000..9b9ad3e
--- /dev/null
+++ b/test/servlet30/facelets/core/src/test/java/com/sun/faces/test/servlet30/facelets/core/Issue2718IT.java
@@ -0,0 +1,93 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDLGPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.facelets.core;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlElement;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class Issue2718IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    /**
+     * Test default Stateless page.
+     *
+     * @throws Exception
+     */
+    @Test
+    public void testDefaultStateless() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/viewParam4.xhtml");
+        
+        HtmlElement link = page.getHtmlElementById("link");
+        page = link.click();
+        
+        int firstIndex = page.asXml().indexOf("input1=1&input2=2");
+        int lastIndex = page.asXml().lastIndexOf("input1=1&input2=2");
+        assertTrue(firstIndex != -1);
+        assertTrue(lastIndex != -1);
+        assertTrue(firstIndex < lastIndex);
+        
+        HtmlElement button = page.getHtmlElementById("firstButton");
+        page = button.click();
+        
+        firstIndex = page.asXml().indexOf("input1=1&input2=2");
+        lastIndex = page.asXml().lastIndexOf("input1=1&input2=2");
+        assertTrue(firstIndex != -1);
+        assertTrue(lastIndex != -1);
+        assertTrue(firstIndex < lastIndex);
+    }
+}
diff --git a/test/servlet30/facelets/core/src/test/java/com/sun/faces/test/servlet30/facelets/core/Issue2720IT.java b/test/servlet30/facelets/core/src/test/java/com/sun/faces/test/servlet30/facelets/core/Issue2720IT.java
new file mode 100644
index 0000000..b42c168
--- /dev/null
+++ b/test/servlet30/facelets/core/src/test/java/com/sun/faces/test/servlet30/facelets/core/Issue2720IT.java
@@ -0,0 +1,77 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.facelets.core;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.sun.faces.test.junit.JsfTest;
+import com.sun.faces.test.junit.JsfTestRunner;
+import com.sun.faces.test.junit.JsfVersion;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+import org.junit.runner.RunWith;
+
+ at RunWith(JsfTestRunner.class)
+public class Issue2720IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @JsfTest(JsfVersion.JSF_2_2_4)
+    @Test
+    public void testNotFound() throws Exception {
+        webClient.getOptions().setThrowExceptionOnFailingStatusCode(false);
+        HtmlPage page = webClient.getPage(webUrl + "faces/notFound.xhtml");
+        assertEquals(404, page.getWebResponse().getStatusCode());
+    }
+}
diff --git a/test/servlet30/facelets/core/src/test/java/com/sun/faces/test/servlet30/facelets/core/Issue2731IT.java b/test/servlet30/facelets/core/src/test/java/com/sun/faces/test/servlet30/facelets/core/Issue2731IT.java
new file mode 100644
index 0000000..005ed25
--- /dev/null
+++ b/test/servlet30/facelets/core/src/test/java/com/sun/faces/test/servlet30/facelets/core/Issue2731IT.java
@@ -0,0 +1,123 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDLGPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.facelets.core;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlElement;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class Issue2731IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    /**
+     * Test default Stateless page.
+     *
+     * @throws Exception
+     */
+    @Test
+    public void testDefaultStateless() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/viewTransient.xhtml");
+        assertTrue(page.asXml().indexOf("\"stateless\"") != -1);
+        
+        HtmlElement button = page.getHtmlElementById("form:button");
+        page = button.click();
+        
+        assertTrue(page.asXml().indexOf("\"stateless\"") != -1);
+    }
+
+
+    /**
+     * Test stateless AJAX page.
+     *
+     * @throws Exception
+     */
+    @Test
+    public void testStatelessAjax() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/viewTransientAjax.xhtml");
+        assertTrue(page.asXml().indexOf("\"stateless\"") != -1);
+        assertTrue(page.asXml().indexOf("[]") != -1);
+        
+        HtmlElement button = page.getHtmlElementById("form:ajaxButton");
+        page = button.click();
+        webClient.waitForBackgroundJavaScript(60000);
+        
+        assertTrue(page.asXml().indexOf("\"stateless\"") != -1);
+        assertTrue(page.asXml().indexOf("[ajax]") != -1);
+
+        button = page.getHtmlElementById("form:submitButton");
+        page = button.click();
+
+        assertTrue(page.asXml().indexOf("\"stateless\"") != -1);
+        assertTrue(page.asXml().indexOf("[non-ajax]") != -1);
+    }
+    
+    /**
+     * Test default Stateful page.
+     *
+     * @throws Exception
+     */
+    @Test
+    public void testDefaultStateful() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/viewTransientFalse.xhtml");
+        assertTrue(page.asXml().indexOf("com.sun.faces.StatelessPostback") == -1);
+        
+        HtmlElement button = page.getHtmlElementById("form:button");
+        page = button.click();
+        
+        assertTrue(page.asXml().indexOf("com.sun.faces.StatelessPostback") == -1);
+    }
+}
diff --git a/test/servlet30/facelets/core/src/test/java/com/sun/faces/test/servlet30/facelets/core/Issue2848IT.java b/test/servlet30/facelets/core/src/test/java/com/sun/faces/test/servlet30/facelets/core/Issue2848IT.java
new file mode 100644
index 0000000..d2c6404
--- /dev/null
+++ b/test/servlet30/facelets/core/src/test/java/com/sun/faces/test/servlet30/facelets/core/Issue2848IT.java
@@ -0,0 +1,89 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.facelets.core;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlElement;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class Issue2848IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testVerifyOnePhaseListener() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/phaseListener1.xhtml");
+        HtmlElement button = page.getHtmlElementById("form:submit");        
+        page = button.click();
+        assertTrue(!page.asText().contains("ERROR"));
+        
+        button = page.getHtmlElementById("form:submit");
+        page = button.click();
+        assertTrue(!page.asText().contains("ERROR"));
+
+        button = page.getHtmlElementById("form:submit");
+        page = button.click();
+        assertTrue(!page.asText().contains("ERROR"));
+
+        button = page.getHtmlElementById("form:submit");
+        page = button.click();
+        assertTrue(!page.asText().contains("ERROR"));
+
+        button = page.getHtmlElementById("form:submit");
+        page = button.click();
+        assertTrue(!page.asText().contains("ERROR"));
+    }
+}
diff --git a/test/servlet30/facelets/core/src/test/java/com/sun/faces/test/servlet30/facelets/core/Issue2884IT.java b/test/servlet30/facelets/core/src/test/java/com/sun/faces/test/servlet30/facelets/core/Issue2884IT.java
new file mode 100644
index 0000000..8006c7f
--- /dev/null
+++ b/test/servlet30/facelets/core/src/test/java/com/sun/faces/test/servlet30/facelets/core/Issue2884IT.java
@@ -0,0 +1,70 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.facelets.core;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class Issue2884IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testELViewParamInFacesConfig() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/viewParam7.xhtml");
+        assertTrue(page.asXml().contains("viewparam=5"));
+    }
+}
diff --git a/test/servlet30/facelets/core/src/test/java/com/sun/faces/test/servlet30/facelets/core/Issue2919IT.java b/test/servlet30/facelets/core/src/test/java/com/sun/faces/test/servlet30/facelets/core/Issue2919IT.java
new file mode 100644
index 0000000..401ae87
--- /dev/null
+++ b/test/servlet30/facelets/core/src/test/java/com/sun/faces/test/servlet30/facelets/core/Issue2919IT.java
@@ -0,0 +1,80 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.facelets.core;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlElement;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.sun.faces.test.junit.JsfTest;
+import com.sun.faces.test.junit.JsfTestRunner;
+import com.sun.faces.test.junit.JsfVersion;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+import org.junit.runner.RunWith;
+
+ at RunWith(JsfTestRunner.class)
+public class Issue2919IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @JsfTest(JsfVersion.JSF_2_2_3)
+    @Test
+    public void testNullValueEnumConverter() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/enumConverter.xhtml");
+        assertTrue(!page.asXml().contains("must be convertible to an enum."));
+        HtmlElement button = page.getHtmlElementById("form:submit");
+        page = button.click();
+        assertTrue(!page.asXml().contains("must be convertible to an enum."));
+    }
+}
diff --git a/test/servlet30/facelets/core/src/test/java/com/sun/faces/test/servlet30/facelets/core/Issue3021IT.java b/test/servlet30/facelets/core/src/test/java/com/sun/faces/test/servlet30/facelets/core/Issue3021IT.java
new file mode 100644
index 0000000..bdc8807
--- /dev/null
+++ b/test/servlet30/facelets/core/src/test/java/com/sun/faces/test/servlet30/facelets/core/Issue3021IT.java
@@ -0,0 +1,77 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.facelets.core;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.sun.faces.test.junit.JsfTest;
+import com.sun.faces.test.junit.JsfTestRunner;
+import com.sun.faces.test.junit.JsfVersion;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+import org.junit.runner.RunWith;
+
+ at RunWith(JsfTestRunner.class)
+public class Issue3021IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @JsfTest(JsfVersion.JSF_2_2_5)
+    @Test
+    public void testViewParamLocale() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/viewParamLocale.xhtml?id=test");
+        assertTrue(!page.asXml().contains("Definitely not Italian"));
+        assertTrue(page.asXml().contains("This ought to be Italian"));
+    }
+}
diff --git a/test/servlet30/facelets/core/src/test/java/com/sun/faces/test/servlet30/facelets/core/Issue3058IT.java b/test/servlet30/facelets/core/src/test/java/com/sun/faces/test/servlet30/facelets/core/Issue3058IT.java
new file mode 100644
index 0000000..9444da1
--- /dev/null
+++ b/test/servlet30/facelets/core/src/test/java/com/sun/faces/test/servlet30/facelets/core/Issue3058IT.java
@@ -0,0 +1,80 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.facelets.core;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.sun.faces.test.junit.JsfTestRunner;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+import org.junit.runner.RunWith;
+
+ at RunWith(JsfTestRunner.class)
+public class Issue3058IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testViewParamRequiredPositive() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/faces/viewParam7Required.xhtml?input1=test");
+        assertTrue(!page.asXml().contains("INPUT1 HAS NO VALUE!"));
+    }
+
+    @Test
+    public void testViewParamRequiredNegative() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/faces/viewParam7Required.xhtml");
+        assertTrue(page.asXml().contains("INPUT1 HAS NO VALUE!"));
+    }
+    
+}
diff --git a/test/servlet30/facelets/core/src/test/java/com/sun/faces/test/servlet30/facelets/core/Issue3080IT.java b/test/servlet30/facelets/core/src/test/java/com/sun/faces/test/servlet30/facelets/core/Issue3080IT.java
new file mode 100644
index 0000000..9cbb1d2
--- /dev/null
+++ b/test/servlet30/facelets/core/src/test/java/com/sun/faces/test/servlet30/facelets/core/Issue3080IT.java
@@ -0,0 +1,84 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.facelets.core;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlElement;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class Issue3080IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testMultipleViewParameters() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/viewParamMultiple.xhtml");
+        webClient.waitForBackgroundJavaScript(60000);
+        HtmlElement element = page.getHtmlElementById("form:set1");
+        page = element.click();
+        webClient.waitForBackgroundJavaScript(60000);
+        element = page.getHtmlElementById("form:set2");
+        page = element.click();
+        webClient.waitForBackgroundJavaScript(60000);
+        element = page.getHtmlElementById("form:postback");
+        page = element.click();
+        webClient.waitForBackgroundJavaScript(60000);
+        element = page.getHtmlElementById("form:link");
+        webClient.waitForBackgroundJavaScript(60000);
+        page = element.click();
+        assertTrue(page.getWebResponse().getWebRequest().getUrl().toString().indexOf("?param1=value&param2=value") != -1);
+    }
+}
diff --git a/test/servlet30/facelets/core/src/test/java/com/sun/faces/test/servlet30/facelets/core/Issue3123IT.java b/test/servlet30/facelets/core/src/test/java/com/sun/faces/test/servlet30/facelets/core/Issue3123IT.java
new file mode 100644
index 0000000..45e98f9
--- /dev/null
+++ b/test/servlet30/facelets/core/src/test/java/com/sun/faces/test/servlet30/facelets/core/Issue3123IT.java
@@ -0,0 +1,70 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.facelets.core;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class Issue3123IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testPassThroughAttributeToString() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/passThroughAttribute1.xhtml");
+        assertEquals(200, page.getWebResponse().getStatusCode());
+    }
+}
diff --git a/test/servlet30/facelets/core/src/test/java/com/sun/faces/test/servlet30/facelets/core/Issue3205IT.java b/test/servlet30/facelets/core/src/test/java/com/sun/faces/test/servlet30/facelets/core/Issue3205IT.java
new file mode 100644
index 0000000..ea51c41
--- /dev/null
+++ b/test/servlet30/facelets/core/src/test/java/com/sun/faces/test/servlet30/facelets/core/Issue3205IT.java
@@ -0,0 +1,81 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.facelets.core;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlAnchor;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import com.sun.faces.test.junit.JsfTestRunner;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.Ignore;
+import static org.junit.Assert.*;
+import org.junit.runner.RunWith;
+
+ at RunWith(JsfTestRunner.class)
+public class Issue3205IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testNotFound() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/viewParamListener_first.xhtml");
+        HtmlAnchor link = page.getElementById("myHref", true);
+        page = link.click();
+        
+        HtmlSubmitInput button = page.getElementById("postbackButton", true);
+        button.click();
+        assertTrue(true);
+    }
+}
diff --git a/test/servlet30/facelets/core/src/test/java/com/sun/faces/test/servlet30/facelets/core/Spec758IT.java b/test/servlet30/facelets/core/src/test/java/com/sun/faces/test/servlet30/facelets/core/Spec758IT.java
new file mode 100644
index 0000000..df51155
--- /dev/null
+++ b/test/servlet30/facelets/core/src/test/java/com/sun/faces/test/servlet30/facelets/core/Spec758IT.java
@@ -0,0 +1,223 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.facelets.core;
+
+import com.gargoylesoftware.htmlunit.FailingHttpStatusCodeException;
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.DomElement;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.sun.faces.test.junit.JsfTest;
+import com.sun.faces.test.junit.JsfTestRunner;
+import com.sun.faces.test.junit.JsfVersion;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+ at RunWith(JsfTestRunner.class)
+public class Spec758IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @Test
+    public void testRedirect1a() throws Exception {
+        webClient.getOptions().setRedirectEnabled(false);
+        HtmlPage page;
+        boolean exceptionThrown = false;
+
+        try {
+            webClient.getPage(webUrl + "faces/viewActionRedirect1a.xhtml");
+        } catch (FailingHttpStatusCodeException ex) {
+            assertEquals(302, ex.getStatusCode());
+            exceptionThrown = true;
+        }
+        assertTrue(exceptionThrown);
+
+        webClient.getOptions().setRedirectEnabled(true);
+        page = webClient.getPage(webUrl + "faces/viewActionRedirect1a.xhtml");
+        assertTrue(page.asText().contains("Result page"));
+    }
+
+    @JsfTest(JsfVersion.JSF_2_2_1)
+    @Test
+    public void testRedirect1b() throws Exception {
+        webClient.getOptions().setRedirectEnabled(false);
+        HtmlPage page;
+        boolean exceptionThrown = false;
+
+        try {
+            webClient.getPage(webUrl + "faces/viewActionRedirect1b.xhtml");
+        } catch (FailingHttpStatusCodeException ex) {
+            assertEquals(302, ex.getStatusCode());
+            exceptionThrown = true;
+        }
+        assertTrue(exceptionThrown);
+
+        webClient.getOptions().setRedirectEnabled(true);
+        page = webClient.getPage(webUrl + "faces/viewActionRedirect1b.xhtml");
+        assertTrue(page.asText().contains("Result page"));
+    }
+
+    @JsfTest(JsfVersion.JSF_2_2_5)
+    @Test
+    public void testActionListener1a() throws Exception {
+        webClient.getOptions().setRedirectEnabled(true);
+        HtmlPage page;
+
+        page = webClient.getPage(webUrl + "faces/viewActionActionListener1a.xhtml");
+        DomElement e = page.getElementById("result");
+        assertTrue(e.asText().contains("1 viewAction1 2 viewAction1"));
+    }
+
+    @JsfTest(JsfVersion.JSF_2_2_5)
+    @Test
+    public void testActionListener1b() throws Exception {
+        webClient.getOptions().setRedirectEnabled(true);
+        HtmlPage page;
+
+        page = webClient.getPage(webUrl + "faces/viewActionActionListener1b.xhtml");
+        DomElement e = page.getElementById("result");
+        assertTrue(e.asText().contains("1 viewAction1 2 viewAction1"));
+    }
+
+    @JsfTest(JsfVersion.JSF_2_2_5)
+    @Test
+    public void testActionListener2a() throws Exception {
+        webClient.getOptions().setRedirectEnabled(true);
+        HtmlPage page;
+
+        page = webClient.getPage(webUrl + "faces/viewActionActionListener2a.xhtml");
+        DomElement e = page.getElementById("result");
+        assertTrue(e.asText().contains("method viewAction1"));
+    }
+
+    @JsfTest(JsfVersion.JSF_2_2_5)
+    @Test
+    public void testActionListener2b() throws Exception {
+        webClient.getOptions().setRedirectEnabled(true);
+        HtmlPage page;
+
+        page = webClient.getPage(webUrl + "faces/viewActionActionListener2b.xhtml");
+        DomElement e = page.getElementById("result");
+        assertTrue(e.asText().contains("method viewAction1"));
+    }
+
+    @Test
+    public void testActionPageA() throws Exception {
+        webClient.getOptions().setRedirectEnabled(false);
+        HtmlPage page = null;
+        boolean exceptionThrown = false;
+
+        try {
+            page = webClient.getPage(webUrl + "faces/viewActionActionPageA.xhtml");
+        } catch (FailingHttpStatusCodeException ex) {
+            assertEquals(302, ex.getStatusCode());
+            exceptionThrown = true;
+        }
+        assertFalse(exceptionThrown);
+        assertTrue(page.asText().contains("pageA action"));
+    }
+
+    @Test
+    public void testActionEmpty() throws Exception {
+        webClient.getOptions().setRedirectEnabled(false);
+        HtmlPage page = null;
+        boolean exceptionThrown = false;
+
+        try {
+            page = webClient.getPage(webUrl + "faces/viewActionActionEmpty.xhtml");
+        } catch (FailingHttpStatusCodeException ex) {
+            assertEquals(302, ex.getStatusCode());
+            exceptionThrown = true;
+        }
+        assertFalse(exceptionThrown);
+        assertTrue(page.asText().contains("pageA empty"));
+    }
+
+    @Test
+    public void testActionNull() throws Exception {
+        webClient.getOptions().setRedirectEnabled(false);
+        HtmlPage page = null;
+        boolean exceptionThrown = false;
+
+        try {
+            page = webClient.getPage(webUrl + "faces/viewActionActionNull.xhtml");
+        } catch (FailingHttpStatusCodeException ex) {
+            assertEquals(302, ex.getStatusCode());
+            exceptionThrown = true;
+        }
+        assertFalse(exceptionThrown);
+        assertTrue(page.asText().contains("pageA null"));
+    }
+
+    @Test
+    public void testNegativeIntentionalInfiniteRedirect() throws Exception {
+        webClient.getOptions().setRedirectEnabled(false);
+        webClient.getOptions().setThrowExceptionOnFailingStatusCode(true);
+        boolean exceptionThrown = false;
+
+        try {
+            webClient.getPage(webUrl + "faces/viewActionActionExplicitRedirect.xhtml");
+        } catch (FailingHttpStatusCodeException ex) {
+            assertEquals(302, ex.getStatusCode());
+            exceptionThrown = true;
+        }
+        assertTrue(exceptionThrown);
+
+        webClient.getOptions().setRedirectEnabled(true);
+        webClient.getOptions().setThrowExceptionOnFailingStatusCode(false);
+        try {
+            webClient.getPage(webUrl + "faces/viewActionActionExplicitRedirect.xhtml");
+        } catch (FailingHttpStatusCodeException ex) {
+            assertEquals(302, ex.getStatusCode());
+            exceptionThrown = true;
+        }
+        assertTrue(exceptionThrown);
+    }
+}
diff --git a/test/servlet30/facelets/core/src/test/java/com/sun/faces/test/servlet30/facelets/core/Spec762IT.java b/test/servlet30/facelets/core/src/test/java/com/sun/faces/test/servlet30/facelets/core/Spec762IT.java
new file mode 100644
index 0000000..538c562
--- /dev/null
+++ b/test/servlet30/facelets/core/src/test/java/com/sun/faces/test/servlet30/facelets/core/Spec762IT.java
@@ -0,0 +1,71 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.facelets.core;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import java.util.regex.Pattern;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class Spec762IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testMetadataShortCircuit() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/metadata/metadataShortCircuit.xhtml");
+        assertTrue(Pattern.matches("(?s).*beforePhase\\s+RESTORE_VIEW\\s+1\\s+beforePhase\\s+APPLY_REQUEST_VALUES\\s+2\\s+beforePhase\\s+PROCESS_VALIDATIONS\\s+3\\s+beforePhase\\s+UPDATE_MODEL_VALUES\\s+4\\s+beforePhase\\s+INVOKE_APPLICATION\\s+5\\s+beforePhase\\s+RENDER_RESPONSE\\s+6.*", page.asXml()));
+    }
+}
diff --git a/test/servlet30/facelets/coreEmptyAsNull/nbactions.xml b/test/servlet30/facelets/coreEmptyAsNull/nbactions.xml
new file mode 100644
index 0000000..72fce25
--- /dev/null
+++ b/test/servlet30/facelets/coreEmptyAsNull/nbactions.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<actions>
+    <action>
+        <actionName>test.single</actionName>
+        <goals>
+            <goal>test-compile</goal>
+            <goal>surefire:test</goal>
+        </goals>
+        <properties>
+            <test>${packageClassName}</test>
+            <integration.url>http://localhost:8080/test-servlet30-facelets-coreEmptyAsNull/</integration.url>
+        </properties>
+    </action>
+    <action>
+        <actionName>debug.test.single</actionName>
+        <goals>
+            <goal>test-compile</goal>
+            <goal>surefire:test</goal>
+        </goals>
+        <properties>
+            <test>${packageClassName}</test>
+            <forkMode>once</forkMode>
+            <maven.surefire.debug>-Xdebug -Xrunjdwp:transport=dt_socket,server=n,address=${jpda.address}</maven.surefire.debug>
+            <jpda.listen>true</jpda.listen>
+            <integration.url>http://localhost:8080/test-servlet30-facelets-coreEmptyAsNull/</integration.url>
+        </properties>
+    </action>
+</actions>
diff --git a/test/servlet30/facelets/coreEmptyAsNull/pom.xml b/test/servlet30/facelets/coreEmptyAsNull/pom.xml
new file mode 100644
index 0000000..d12fd28
--- /dev/null
+++ b/test/servlet30/facelets/coreEmptyAsNull/pom.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.servlet30.facelets</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.servlet30.facelets</groupId>
+    <artifactId>coreEmptyAsNull</artifactId>
+    <packaging>war</packaging>
+    <name>Mojarra ${project.version} - Test - Servlet 3.0 - Facelets - Core (Empty As Null)</name>
+    <build>
+        <finalName>test-servlet30-facelets-coreEmptyAsNull</finalName>
+    </build>
+    <properties>
+        <netbeans.hint.deploy.server>gfv3ee6</netbeans.hint.deploy.server>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/test/servlet30/facelets/coreEmptyAsNull/src/main/java/com/sun/faces/test/servlet30/facelets/coreEmptyAsNull/ValidateEmptyFieldsBean.java b/test/servlet30/facelets/coreEmptyAsNull/src/main/java/com/sun/faces/test/servlet30/facelets/coreEmptyAsNull/ValidateEmptyFieldsBean.java
new file mode 100644
index 0000000..2cebbb5
--- /dev/null
+++ b/test/servlet30/facelets/coreEmptyAsNull/src/main/java/com/sun/faces/test/servlet30/facelets/coreEmptyAsNull/ValidateEmptyFieldsBean.java
@@ -0,0 +1,65 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.facelets.coreEmptyAsNull;
+
+import javax.faces.application.FacesMessage;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.RequestScoped;
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+
+ at ManagedBean(name = "validateEmptyFieldsBean")
+ at RequestScoped
+public class ValidateEmptyFieldsBean {
+
+    private String value;
+
+    public String getValue() {
+        return value;
+    }
+
+    public void setValue(String value) {
+        this.value = value;
+    }
+    
+    public void validate(FacesContext facesContext, UIComponent component, Object value) {
+        facesContext.addMessage(null, new FacesMessage("We got called!"));
+    }
+}
diff --git a/test/servlet30/facelets/coreEmptyAsNull/src/main/webapp/WEB-INF/faces-config.xml b/test/servlet30/facelets/coreEmptyAsNull/src/main/webapp/WEB-INF/faces-config.xml
new file mode 100644
index 0000000..193e009
--- /dev/null
+++ b/test/servlet30/facelets/coreEmptyAsNull/src/main/webapp/WEB-INF/faces-config.xml
@@ -0,0 +1,7 @@
+<?xml version='1.0' encoding='UTF-8'?>
+
+<faces-config version="2.0"
+              xmlns="http://java.sun.com/xml/ns/javaee"
+              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+              xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd">
+</faces-config>
diff --git a/test/servlet30/facelets/coreEmptyAsNull/src/main/webapp/WEB-INF/glassfish-web.xml b/test/servlet30/facelets/coreEmptyAsNull/src/main/webapp/WEB-INF/glassfish-web.xml
new file mode 100644
index 0000000..224f1ab
--- /dev/null
+++ b/test/servlet30/facelets/coreEmptyAsNull/src/main/webapp/WEB-INF/glassfish-web.xml
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<glassfish-web-app error-url="">
+  <context-root>/test-servlet30-facelets-coreEmptyAsNull</context-root>
+  <class-loader delegate="true"/>
+  <jsp-config>
+    <property name="keepgenerated" value="true">
+      <description>Keep a copy of the generated servlet class' java code.</description>
+    </property>
+  </jsp-config>
+</glassfish-web-app>
diff --git a/test/servlet30/facelets/coreEmptyAsNull/src/main/webapp/WEB-INF/web.xml b/test/servlet30/facelets/coreEmptyAsNull/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..b64414c
--- /dev/null
+++ b/test/servlet30/facelets/coreEmptyAsNull/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,79 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" 
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>${webapp.projectStage}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
+        <param-value>${webapp.partialStateSaving}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>${webapp.stateSavingMethod}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL</param-name>
+        <param-value>true</param-value>
+    </context-param>
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <session-config>
+        <session-timeout>30</session-timeout>
+    </session-config>
+    <welcome-file-list>
+        <welcome-file>faces/index.xhtml</welcome-file>
+    </welcome-file-list>
+</web-app>
diff --git a/test/servlet30/facelets/coreEmptyAsNull/src/main/webapp/index.xhtml b/test/servlet30/facelets/coreEmptyAsNull/src/main/webapp/index.xhtml
new file mode 100644
index 0000000..42fbc2d
--- /dev/null
+++ b/test/servlet30/facelets/coreEmptyAsNull/src/main/webapp/index.xhtml
@@ -0,0 +1,13 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title>Core (Empty As Null) tests</title>
+    </h:head>
+    <h:body>
+        <a href="validateEmptyFields.xhtml">Validate empty fields</a>
+    </h:body>
+</html>
diff --git a/test/servlet30/facelets/coreEmptyAsNull/src/main/webapp/validateEmptyFields.xhtml b/test/servlet30/facelets/coreEmptyAsNull/src/main/webapp/validateEmptyFields.xhtml
new file mode 100644
index 0000000..e343b44
--- /dev/null
+++ b/test/servlet30/facelets/coreEmptyAsNull/src/main/webapp/validateEmptyFields.xhtml
@@ -0,0 +1,18 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title>Validate Empty Fields test</title>
+    </h:head>
+    <h:body>
+        <h:form id="form">
+            <h:inputText id="inputText" value="#{validateEmptyFieldsBean.value}" 
+                         validator="#{validateEmptyFieldsBean.validate}"/>
+            <h:commandButton id="submitButton" value="Submit"/>
+        </h:form>
+        <h:messages/>
+    </h:body>
+</html>
diff --git a/test/servlet30/facelets/coreEmptyAsNull/src/test/java/com/sun/faces/test/servlet30/facelets/coreEmptyAsNull/Issue1508IT.java b/test/servlet30/facelets/coreEmptyAsNull/src/test/java/com/sun/faces/test/servlet30/facelets/coreEmptyAsNull/Issue1508IT.java
new file mode 100644
index 0000000..cd6e88f
--- /dev/null
+++ b/test/servlet30/facelets/coreEmptyAsNull/src/test/java/com/sun/faces/test/servlet30/facelets/coreEmptyAsNull/Issue1508IT.java
@@ -0,0 +1,92 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.facelets.coreEmptyAsNull;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import com.sun.faces.test.junit.JsfTest;
+import com.sun.faces.test.junit.JsfTestRunner;
+import com.sun.faces.test.junit.JsfVersion;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+import org.junit.runner.RunWith;
+
+ at RunWith(JsfTestRunner.class)
+public class Issue1508IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    /**
+     * Test to validate empty fields.
+     *
+     * Note: this test is excluded on Tomcat because the included EL parser
+     * requires a System property for this test to work, which would cause
+     * problems with other tests. See
+     * http://tomcat.apache.org/tomcat-7.0-doc/config/systemprops.html and look
+     * for COERCE_TO_ZERO
+     */
+    @JsfTest(JsfVersion.JSF_2_2_1)
+    @Test
+    public void testValidateEmptyFields() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/index.xhtml");
+        if (page.getWebResponse().getResponseHeaderValue("Server") == null
+                || !page.getWebResponse().getResponseHeaderValue("Server").startsWith("Apache-Coyote")) {
+            page = webClient.getPage(webUrl + "faces/validateEmptyFields.xhtml");
+            HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("form:submitButton");
+            page = button.click();
+            assertTrue(page.asXml().contains("We got called!"));
+        }
+    }
+}
diff --git a/test/servlet30/facelets/html/nbactions.xml b/test/servlet30/facelets/html/nbactions.xml
new file mode 100644
index 0000000..49ae6bc
--- /dev/null
+++ b/test/servlet30/facelets/html/nbactions.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<actions>
+        <action>
+            <actionName>debug.test.single</actionName>
+            <goals>
+                <goal>test-compile</goal>
+                <goal>surefire:test</goal>
+            </goals>
+            <properties>
+                <integration.url>http://localhost:8080/test-servlet30-facelets-html/</integration.url>
+                <jpda.listen>true</jpda.listen>
+                <maven.surefire.debug>-Xdebug -Xrunjdwp:transport=dt_socket,server=n,address=${jpda.address}</maven.surefire.debug>
+                <forkMode>once</forkMode>
+                <test>${packageClassName}</test>
+            </properties>
+        </action>
+    </actions>
diff --git a/test/servlet30/facelets/html/pom.xml b/test/servlet30/facelets/html/pom.xml
new file mode 100644
index 0000000..8ae0f89
--- /dev/null
+++ b/test/servlet30/facelets/html/pom.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.servlet30.facelets</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.servlet30.facelets</groupId>
+    <artifactId>html</artifactId>
+    <packaging>war</packaging>
+    <name>Mojarra ${project.version} - Test - Servlet 3.0 - Facelets - HTML</name>
+    <build>
+        <finalName>test-servlet30-facelets-html</finalName>
+    </build>
+    <properties>
+        <netbeans.hint.deploy.server>gfv3ee6</netbeans.hint.deploy.server>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/test/servlet30/facelets/html/src/main/java/com/sun/faces/test/servlet30/facelets/html/DataTableCollectionBean.java b/test/servlet30/facelets/html/src/main/java/com/sun/faces/test/servlet30/facelets/html/DataTableCollectionBean.java
new file mode 100644
index 0000000..d265a66
--- /dev/null
+++ b/test/servlet30/facelets/html/src/main/java/com/sun/faces/test/servlet30/facelets/html/DataTableCollectionBean.java
@@ -0,0 +1,147 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.facelets.html;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.RequestScoped;
+
+ at ManagedBean(name = "dataTableCollectionBean")
+ at RequestScoped
+public class DataTableCollectionBean implements Serializable {
+    
+    Collection<DataTableCollectionItem> users;
+
+    public Collection<DataTableCollectionItem> getUsers() {
+        return users;
+    }
+
+    public void setUsers(Collection<DataTableCollectionItem> users) {
+        this.users = users;
+    }
+    
+    public DataTableCollectionBean() {
+        users = new MyCollection(new ArrayList<DataTableCollectionItem>());
+        DataTableCollectionItem b;
+        for (int i = 0; i < 3; i++) {
+            b = new DataTableCollectionItem();
+            b.setFirstName("First" + i);
+            b.setLastName("Last"+i);
+            users.add(b);
+        }
+    }
+    
+    private static class MyCollection implements Collection {
+        
+        private Collection inner;
+        
+        private MyCollection(Collection c) {
+            inner = c;
+        }
+
+        @Override
+        public boolean add(Object e) {
+            return inner.add(e);
+        }
+
+        @Override
+        public boolean addAll(Collection c) {
+            return inner.addAll(c);
+        }
+
+        @Override
+        public void clear() {
+            inner.clear();
+        }
+
+        @Override
+        public boolean contains(Object o) {
+            return inner.contains(o);
+        }
+
+        @Override
+        public boolean containsAll(Collection c) {
+            return inner.containsAll(c);
+        }
+
+        @Override
+        public boolean isEmpty() {
+            return inner.isEmpty();
+        }
+
+        @Override
+        public Iterator iterator() {
+            return inner.iterator();
+        }
+
+        @Override
+        public boolean remove(Object o) {
+            return inner.remove(o);
+        }
+
+        @Override
+        public boolean removeAll(Collection c) {
+            return inner.removeAll(c);
+        }
+
+        @Override
+        public boolean retainAll(Collection c) {
+            return inner.retainAll(c);
+        }
+
+        @Override
+        public int size() {
+            return inner.size();
+        }
+
+        @Override
+        public Object[] toArray() {
+            return inner.toArray();
+        }
+
+        @Override
+        public Object[] toArray(Object[] a) {
+            return inner.toArray(a);
+        }   
+    }    
+}
diff --git a/test/servlet30/facelets/html/src/main/java/com/sun/faces/test/servlet30/facelets/html/DataTableCollectionItem.java b/test/servlet30/facelets/html/src/main/java/com/sun/faces/test/servlet30/facelets/html/DataTableCollectionItem.java
new file mode 100644
index 0000000..175a4d4
--- /dev/null
+++ b/test/servlet30/facelets/html/src/main/java/com/sun/faces/test/servlet30/facelets/html/DataTableCollectionItem.java
@@ -0,0 +1,67 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.facelets.html;
+
+import java.io.Serializable;
+
+public class DataTableCollectionItem implements Serializable {
+    
+    protected String firstName = "Duke";
+    protected String lastName = "Java";
+    
+    public DataTableCollectionItem() {}
+
+    public String getFirstName() {
+        return firstName;
+    }
+
+    public void setFirstName(String firstName) {
+        this.firstName = firstName;
+    }
+
+    public String getLastName() {
+        return lastName;
+    }
+
+    public void setLastName(String lastName) {
+        this.lastName = lastName;
+    }
+}
+
diff --git a/test/servlet30/facelets/html/src/main/java/com/sun/faces/test/servlet30/facelets/html/DataTableDynamicBean.java b/test/servlet30/facelets/html/src/main/java/com/sun/faces/test/servlet30/facelets/html/DataTableDynamicBean.java
new file mode 100644
index 0000000..1a444a1
--- /dev/null
+++ b/test/servlet30/facelets/html/src/main/java/com/sun/faces/test/servlet30/facelets/html/DataTableDynamicBean.java
@@ -0,0 +1,114 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.facelets.html;
+
+import java.io.Serializable;
+import java.util.Arrays;
+import java.util.List;
+import javax.el.ValueExpression;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.SessionScoped;
+import javax.faces.component.UIComponent;
+import javax.faces.component.UINamingContainer;
+import javax.faces.component.UIViewRoot;
+import javax.faces.component.html.HtmlColumn;
+import javax.faces.component.html.HtmlDataTable;
+import javax.faces.component.html.HtmlOutputText;
+import javax.faces.component.html.HtmlPanelGroup;
+import javax.faces.context.FacesContext;
+
+ at SessionScoped
+ at ManagedBean(name = "dataTableDynamicBean")
+public class DataTableDynamicBean implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    public String getTitle() {
+        return "Can not add table dynamically";
+    }
+
+    public String getAddValue() {
+        return "Add Datatable";
+    }
+
+    public void addTable() {
+        FacesContext fc = FacesContext.getCurrentInstance();
+        UIViewRoot root = fc.getViewRoot();
+        UIComponent container = root.findComponent("form:dtcontainer");
+        container.getChildren().add(creatTable(fc));
+    }
+
+    public HtmlDataTable creatTable(FacesContext fc) {
+        HtmlDataTable table = new HtmlDataTable();
+        ValueExpression ve = fc.getApplication().getExpressionFactory()
+                .createValueExpression(fc.getELContext(), "#{dataTableDynamicBean.testStrings}", Object.class);
+        table.setId("table");
+        table.setValueExpression("value", ve);
+        table.setVar("str");
+
+        UINamingContainer nc = new UINamingContainer();
+        nc.setId("nc");
+
+        HtmlPanelGroup ncPanel = new HtmlPanelGroup();
+        ncPanel.setId("ncpanel");
+
+        HtmlOutputText text = new HtmlOutputText();
+        text.setId("strv");
+        ValueExpression textve = fc.getApplication().getExpressionFactory()
+                .createValueExpression(fc.getELContext(), "#{str}", Object.class);
+        text.setValueExpression("value", textve);
+        ncPanel.getChildren().add(text);
+
+        nc.getChildren().add(ncPanel);
+
+        HtmlPanelGroup panel = new HtmlPanelGroup();
+        panel.getChildren().add(nc);
+
+        HtmlColumn column = new HtmlColumn();
+        column.getChildren().add(panel);
+        table.getChildren().add(column);
+        return table;
+    }
+
+    public List<String> getTestStrings() {
+        String vs[] = {"one", "two", "three", "four"};
+        return Arrays.asList(vs);
+    }
+}
diff --git a/test/servlet30/facelets/html/src/main/java/com/sun/faces/test/servlet30/facelets/html/DataTablePassthroughBean.java b/test/servlet30/facelets/html/src/main/java/com/sun/faces/test/servlet30/facelets/html/DataTablePassthroughBean.java
new file mode 100644
index 0000000..f7efad1
--- /dev/null
+++ b/test/servlet30/facelets/html/src/main/java/com/sun/faces/test/servlet30/facelets/html/DataTablePassthroughBean.java
@@ -0,0 +1,48 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package com.sun.faces.test.servlet30.facelets.html;
+
+import java.util.Arrays;
+import java.util.Date;
+import java.util.List;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.RequestScoped;
+
+ at ManagedBean
+ at RequestScoped
+public class DataTablePassthroughBean {
+
+    public class Entity {
+
+        private String name;
+
+        private Date modifiedOn;
+
+        public Entity(String name, Date modifiedOn) {
+            this.name = name;
+            this.modifiedOn = modifiedOn;
+        }
+
+        public Date getModifiedOn() {
+            return modifiedOn;
+        }
+
+        public String getName() {
+            return name;
+        }
+
+    }
+
+    public List<Entity> entities = Arrays.asList(
+            new Entity("name1", new Date()), new Entity("name2", new Date(
+                            new Date().getTime() + (1000 * 60 * 60 * 24))), new Entity(
+                    "name0", new Date(new Date().getTime()
+                            + (1000 * 60 * 60 * 48))));
+
+    public List<Entity> getEntities() {
+        return entities;
+    }
+}
diff --git a/test/servlet30/facelets/html/src/main/java/com/sun/faces/test/servlet30/facelets/html/FileUploadBean.java b/test/servlet30/facelets/html/src/main/java/com/sun/faces/test/servlet30/facelets/html/FileUploadBean.java
new file mode 100644
index 0000000..e8bee82
--- /dev/null
+++ b/test/servlet30/facelets/html/src/main/java/com/sun/faces/test/servlet30/facelets/html/FileUploadBean.java
@@ -0,0 +1,104 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.facelets.html;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Scanner;
+import javax.faces.application.FacesMessage;
+import javax.faces.application.ProjectStage;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.RequestScoped;
+import javax.faces.context.FacesContext;
+import javax.faces.event.AbortProcessingException;
+import javax.faces.event.AjaxBehaviorEvent;
+import javax.faces.event.ValueChangeEvent;
+import javax.servlet.http.Part;
+
+ at ManagedBean(name = "fileUploadBean")
+ at RequestScoped
+public class FileUploadBean {
+
+    public FileUploadBean() {
+    }
+    private Part uploadedFile;
+
+    public Part getUploadedFile() {
+        return uploadedFile;
+    }
+
+    public void setUploadedFile(Part uploadedFile) {
+        this.uploadedFile = uploadedFile;
+    }
+
+    public String getFileText() {
+        String text = "";
+
+        if (null != uploadedFile) {
+            try {
+                InputStream is = uploadedFile.getInputStream();
+                text = new Scanner(is).useDelimiter("\\A").next();
+            } catch (IOException ex) {
+            }
+        }
+        return text;
+    }
+    private String text;
+
+    public String getText() {
+        return text;
+    }
+
+    public void setText(String text) {
+        this.text = text;
+    }
+
+    public String getProjectStage() {
+        String projectStage = null;
+        if (FacesContext.getCurrentInstance().isProjectStage(ProjectStage.Development)) {
+            projectStage = "ProjectStage.Development";
+        }
+        return projectStage;
+    }
+
+    public void processEvent(AjaxBehaviorEvent event) throws AbortProcessingException {
+        FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("ajax listener was called"));
+    }
+}
diff --git a/test/servlet30/facelets/html/src/main/java/com/sun/faces/test/servlet30/facelets/html/FileValidator.java b/test/servlet30/facelets/html/src/main/java/com/sun/faces/test/servlet30/facelets/html/FileValidator.java
new file mode 100644
index 0000000..85596a7
--- /dev/null
+++ b/test/servlet30/facelets/html/src/main/java/com/sun/faces/test/servlet30/facelets/html/FileValidator.java
@@ -0,0 +1,77 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.test.servlet30.facelets.html;
+
+import java.io.InputStream;
+import java.util.Scanner;
+import javax.faces.application.FacesMessage;
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.validator.FacesValidator;
+import javax.faces.validator.Validator;
+import javax.faces.validator.ValidatorException;
+import javax.servlet.http.Part;
+
+ at FacesValidator(value="FileValidator")
+public class FileValidator implements Validator {
+
+    @Override
+    public void validate(FacesContext context, UIComponent component, Object value) throws ValidatorException {
+        Part file = (Part) value;
+        String text = "";
+        
+        try {
+            InputStream is = file.getInputStream();
+            text = new Scanner( is ).useDelimiter("\\A").next();
+            // Do not accept an upload unless it contains the string
+            // JSR-344
+        } catch (Exception ex) {
+            throw new ValidatorException(new FacesMessage("Invalid file"), ex);
+        }
+        if (!text.contains("JSR-344")) {
+            throw new ValidatorException(new FacesMessage("Invalid file.  File must contain special string"));
+        }
+        
+    }
+    
+    
+    
+}
diff --git a/test/servlet30/facelets/html/src/main/java/com/sun/faces/test/servlet30/facelets/html/FormDuplicateIdBean.java b/test/servlet30/facelets/html/src/main/java/com/sun/faces/test/servlet30/facelets/html/FormDuplicateIdBean.java
new file mode 100644
index 0000000..011947b
--- /dev/null
+++ b/test/servlet30/facelets/html/src/main/java/com/sun/faces/test/servlet30/facelets/html/FormDuplicateIdBean.java
@@ -0,0 +1,59 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.test.servlet30.facelets.html;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.RequestScoped;
+
+ at ManagedBean(name = "formDuplicateIdBean")
+ at RequestScoped
+public class FormDuplicateIdBean {
+
+    private String input;
+
+    public String getInput() {
+        return input;
+    }
+
+    public void setInput(String input) {
+        this.input = input;
+    }
+}
diff --git a/test/servlet30/facelets/html/src/main/java/com/sun/faces/test/servlet30/facelets/html/InputFile1Bean.java b/test/servlet30/facelets/html/src/main/java/com/sun/faces/test/servlet30/facelets/html/InputFile1Bean.java
new file mode 100644
index 0000000..fd8c2c0
--- /dev/null
+++ b/test/servlet30/facelets/html/src/main/java/com/sun/faces/test/servlet30/facelets/html/InputFile1Bean.java
@@ -0,0 +1,79 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.facelets.html;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.Serializable;
+import java.util.Scanner;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.SessionScoped;
+import javax.servlet.http.Part;
+
+ at ManagedBean(name="inputFile1Bean")
+ at SessionScoped
+public class InputFile1Bean implements Serializable {
+    
+    private Part uploadedFile;
+
+    public Part getUploadedFile() {
+        return uploadedFile;
+    }
+
+    public void setUploadedFile(Part uploadedFile) {
+        this.uploadedFile = uploadedFile;
+    }
+    
+    public String getFileText() {
+        String text = "";
+
+        if (null != uploadedFile) {
+            try {
+                InputStream is = uploadedFile.getInputStream();
+                text = new Scanner( is ).useDelimiter("\\A").next();
+            } catch (IOException ex) {
+                
+            }
+        }
+        return text;
+    }
+    
+}
+
diff --git a/test/servlet30/facelets/html/src/main/java/com/sun/faces/test/servlet30/facelets/html/InputFile1Validator.java b/test/servlet30/facelets/html/src/main/java/com/sun/faces/test/servlet30/facelets/html/InputFile1Validator.java
new file mode 100644
index 0000000..cf5653f
--- /dev/null
+++ b/test/servlet30/facelets/html/src/main/java/com/sun/faces/test/servlet30/facelets/html/InputFile1Validator.java
@@ -0,0 +1,74 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.facelets.html;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Scanner;
+import javax.faces.application.FacesMessage;
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.validator.FacesValidator;
+import javax.faces.validator.Validator;
+import javax.faces.validator.ValidatorException;
+import javax.servlet.http.Part;
+
+ at FacesValidator(value="InputFile1Validator")
+public class InputFile1Validator implements Validator {
+
+    @Override
+    public void validate(FacesContext context, UIComponent component, Object value) throws ValidatorException {
+        Part file = (Part) value;
+        
+        try {
+            InputStream is = file.getInputStream();
+            String text = new Scanner( is ).useDelimiter("\\A").next();
+            // Do not accept an upload unless it contains the string
+            // JSR-344
+            if (!text.contains("JSR-344")) {
+                throw new ValidatorException(new FacesMessage("Invalid file.  File must contain the string JSR-344"));
+            }
+        } catch (IOException ex) {
+            throw new ValidatorException(new FacesMessage("Invalid file"), ex);
+        } catch (ValidatorException ex) {
+            throw new ValidatorException(new FacesMessage("Invalid file"), ex);
+        }   
+    }
+}
diff --git a/test/servlet30/facelets/html/src/main/java/com/sun/faces/test/servlet30/facelets/html/InputTextSetBean.java b/test/servlet30/facelets/html/src/main/java/com/sun/faces/test/servlet30/facelets/html/InputTextSetBean.java
new file mode 100644
index 0000000..feb9fee
--- /dev/null
+++ b/test/servlet30/facelets/html/src/main/java/com/sun/faces/test/servlet30/facelets/html/InputTextSetBean.java
@@ -0,0 +1,115 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.facelets.html;
+
+import java.io.Serializable;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Set;
+import java.util.TreeSet;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.SessionScoped;
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.convert.Converter;
+
+ at ManagedBean(name = "inputTextSetBean")
+ at SessionScoped
+public class InputTextSetBean implements Serializable {
+
+    protected Set<String> tags = new TreeSet<String>(Arrays.asList("seed"));
+
+    public Set<String> getTags() {
+        return tags;
+    }
+
+    public void setTags(Set<String> tags) {
+        this.tags = tags;
+    }
+
+    public static class StringToSetConverter implements Converter {
+
+        @Override
+        public Object getAsObject(FacesContext ctx, UIComponent component, String value) {
+            if (value == null) {
+                return null;
+            }
+            Set<String> tagSet = new TreeSet<String>();
+            for (String tag : value.split("\\s+")) {
+                if (!tag.isEmpty()) {
+                    tagSet.add(tag);
+                }
+            }
+            return tagSet;
+        }
+
+        @Override
+        public String getAsString(FacesContext ctx, UIComponent component, Object value) {
+            if (value == null) {
+                return "";
+            }
+            StringBuilder builder = new StringBuilder();
+            @SuppressWarnings("unchecked")
+            Collection<String> tags = (Collection<String>) value;
+            for (String tag : tags) {
+                builder.append(tag);
+                builder.append(" ");
+            }
+            return builder.toString().trim();
+        }
+    }
+
+    public String printTags() {
+        if (tags.isEmpty()) {
+            return "No tags";
+        }
+        StringBuilder builder = new StringBuilder();
+        for (String tag : tags) {
+            builder.append("'");
+            builder.append(tag);
+            builder.append("' ");
+        }
+        return builder.toString().trim();
+    }
+
+    public Converter getTagsConverter() {
+        return new StringToSetConverter();
+    }
+}
diff --git a/test/servlet30/facelets/html/src/main/java/com/sun/faces/test/servlet30/facelets/html/OutputFormatConverter.java b/test/servlet30/facelets/html/src/main/java/com/sun/faces/test/servlet30/facelets/html/OutputFormatConverter.java
new file mode 100644
index 0000000..a23858e
--- /dev/null
+++ b/test/servlet30/facelets/html/src/main/java/com/sun/faces/test/servlet30/facelets/html/OutputFormatConverter.java
@@ -0,0 +1,75 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.facelets.html;
+
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.convert.Converter;
+import javax.faces.convert.ConverterException;
+
+public class OutputFormatConverter implements Converter {
+
+    public OutputFormatConverter() {
+    }
+
+    public Object getAsObject(FacesContext context,
+            UIComponent component, String param) {
+        try {
+            return " ";
+        } catch (Exception e) {
+            throw new ConverterException(e);
+        }
+    }
+
+    public String getAsString(FacesContext context,
+            UIComponent component, Object obj) {
+        String returnVal;
+        try {
+            if (null != obj) {
+                returnVal = "MyConverter.getAsString Called: " + obj.toString();
+            } else {
+                returnVal = " ";
+            }
+            return returnVal;
+        } catch (Exception e) {
+            throw new ConverterException(e);
+        }
+    }
+}
diff --git a/test/servlet30/facelets/html/src/main/java/com/sun/faces/test/servlet30/facelets/html/OutputTextScript1Bean.java b/test/servlet30/facelets/html/src/main/java/com/sun/faces/test/servlet30/facelets/html/OutputTextScript1Bean.java
new file mode 100644
index 0000000..6122245
--- /dev/null
+++ b/test/servlet30/facelets/html/src/main/java/com/sun/faces/test/servlet30/facelets/html/OutputTextScript1Bean.java
@@ -0,0 +1,57 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.facelets.html;
+
+import java.io.Serializable;
+import javax.faces.bean.ManagedBean;
+
+ at ManagedBean(name = "outputTextScript1Bean")
+public class OutputTextScript1Bean implements Serializable {
+
+    private String xmlparam = "";
+
+    public String getXmlparam() {
+        return this.xmlparam;
+    }
+
+    public void setXmlparam(String xmlparam) {
+        this.xmlparam = xmlparam;
+    }
+}
diff --git a/test/servlet30/facelets/html/src/main/java/com/sun/faces/test/servlet30/facelets/html/OutputTextScript2Bean.java b/test/servlet30/facelets/html/src/main/java/com/sun/faces/test/servlet30/facelets/html/OutputTextScript2Bean.java
new file mode 100644
index 0000000..d90c0aa
--- /dev/null
+++ b/test/servlet30/facelets/html/src/main/java/com/sun/faces/test/servlet30/facelets/html/OutputTextScript2Bean.java
@@ -0,0 +1,57 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.facelets.html;
+
+import java.io.Serializable;
+import javax.faces.bean.ManagedBean;
+
+ at ManagedBean(name = "outputTextScript2Bean")
+public class OutputTextScript2Bean implements Serializable {
+
+    private String comment = "Dummy Commnet";
+
+    public String getComment() {
+        return this.comment;
+    }
+
+    public void setComment(String comment) {
+        this.comment = comment;
+    }
+}
diff --git a/test/servlet30/facelets/html/src/main/java/com/sun/faces/test/servlet30/facelets/html/OutputTextWithEscapeBean.java b/test/servlet30/facelets/html/src/main/java/com/sun/faces/test/servlet30/facelets/html/OutputTextWithEscapeBean.java
new file mode 100644
index 0000000..8bceb0b
--- /dev/null
+++ b/test/servlet30/facelets/html/src/main/java/com/sun/faces/test/servlet30/facelets/html/OutputTextWithEscapeBean.java
@@ -0,0 +1,51 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.facelets.html;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.RequestScoped;
+
+ at ManagedBean(name="outputTextWithEscapeBean")
+ at RequestScoped
+public class OutputTextWithEscapeBean {
+    public String getText() {
+        return "&";
+    }
+}
diff --git a/test/servlet30/facelets/html/src/main/java/com/sun/faces/test/servlet30/facelets/html/SelectBooleanCheckboxSubmittedValueBean.java b/test/servlet30/facelets/html/src/main/java/com/sun/faces/test/servlet30/facelets/html/SelectBooleanCheckboxSubmittedValueBean.java
new file mode 100644
index 0000000..04760d8
--- /dev/null
+++ b/test/servlet30/facelets/html/src/main/java/com/sun/faces/test/servlet30/facelets/html/SelectBooleanCheckboxSubmittedValueBean.java
@@ -0,0 +1,42 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package com.sun.faces.test.servlet30.facelets.html;
+
+import java.io.Serializable;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.SessionScoped;
+import javax.faces.context.FacesContext;
+import javax.faces.event.AbortProcessingException;
+import javax.faces.event.ValueChangeEvent;
+
+ at ManagedBean(name = "selectBooleanCheckboxSubmittedValueBean")
+ at SessionScoped
+public class SelectBooleanCheckboxSubmittedValueBean implements Serializable {
+    
+    private Boolean box1;
+    private Boolean box2;
+
+    public Boolean getBox1() {
+        return box1;
+    }
+
+    public Boolean getBox2() {
+        return box2;
+    }
+    
+    public void setBox1(Boolean box1) {
+        this.box1 = box1;
+    }
+
+    public void setBox2(Boolean box2) {
+        this.box2 = box2;
+    }
+
+    public void valueChange(ValueChangeEvent event) throws AbortProcessingException {
+        FacesContext ctx = FacesContext.getCurrentInstance();
+        ctx.renderResponse();
+    }
+}
diff --git a/test/servlet30/facelets/html/src/main/java/com/sun/faces/test/servlet30/facelets/html/SelectOneMenuXSSBean.java b/test/servlet30/facelets/html/src/main/java/com/sun/faces/test/servlet30/facelets/html/SelectOneMenuXSSBean.java
new file mode 100644
index 0000000..23df5a2
--- /dev/null
+++ b/test/servlet30/facelets/html/src/main/java/com/sun/faces/test/servlet30/facelets/html/SelectOneMenuXSSBean.java
@@ -0,0 +1,66 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.facelets.html;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.RequestScoped;
+
+ at ManagedBean(name = "selectOneMenuXSSBean")
+ at RequestScoped
+public class SelectOneMenuXSSBean {
+    
+    private SelectOneMenuXSSItem value;
+
+    public List<SelectOneMenuXSSItem> getList() {
+        List<SelectOneMenuXSSItem> list = new ArrayList<SelectOneMenuXSSItem>();
+        list.add(new SelectOneMenuXSSItem("<script>alert('mytest');</script>"));
+        return list;
+    }
+
+    public SelectOneMenuXSSItem getValue() {
+        return value;
+    }
+
+    public void setValue(SelectOneMenuXSSItem value) {
+        this.value = value;
+    }
+}
diff --git a/test/servlet30/facelets/html/src/main/java/com/sun/faces/test/servlet30/facelets/html/SelectOneMenuXSSItem.java b/test/servlet30/facelets/html/src/main/java/com/sun/faces/test/servlet30/facelets/html/SelectOneMenuXSSItem.java
new file mode 100644
index 0000000..140d2df
--- /dev/null
+++ b/test/servlet30/facelets/html/src/main/java/com/sun/faces/test/servlet30/facelets/html/SelectOneMenuXSSItem.java
@@ -0,0 +1,57 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.facelets.html;
+
+public class SelectOneMenuXSSItem {
+
+    private String name;
+
+    public SelectOneMenuXSSItem(String name) {
+        this.name = name;
+    }
+
+    public String getName() {
+        return this.name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+}
diff --git a/test/servlet30/facelets/html/src/main/java/com/sun/faces/test/servlet30/facelets/html/SelectOnePassthroughBean.java b/test/servlet30/facelets/html/src/main/java/com/sun/faces/test/servlet30/facelets/html/SelectOnePassthroughBean.java
new file mode 100644
index 0000000..bcf3f81
--- /dev/null
+++ b/test/servlet30/facelets/html/src/main/java/com/sun/faces/test/servlet30/facelets/html/SelectOnePassthroughBean.java
@@ -0,0 +1,99 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.facelets.html;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.RequestScoped;
+import javax.faces.model.SelectItem;
+
+ at ManagedBean(name="selectOnePassthroughBean")
+ at RequestScoped
+public class SelectOnePassthroughBean implements Serializable {
+
+    private String name;
+    private Map<String, String> map;
+
+    private List<SelectItem> list;
+
+    public List<SelectItem> getList() {
+        list = new ArrayList<SelectItem>();
+        SelectItem selectItem;
+        selectItem = new SelectItem("aaaaa", "aaaaaaa");
+        list.add(selectItem);
+        selectItem = new SelectItem("bbbbbb", "bbbbbb");
+        list.add(selectItem);
+        selectItem = new SelectItem("cccccc", "cccccccc");
+        list.add(selectItem);
+        selectItem = new SelectItem("ddddddd", "dddddddd");
+        list.add(selectItem);
+        return list;
+    }
+
+    public void setList(List<SelectItem> list) {
+        this.list = list;
+    }
+
+    public Map<String, String> getMap() {
+        map = new LinkedHashMap<String, String>();
+        map.put("aaaaaaa", "aaaaaaaaaa");
+        map.put("bbbbbbb", "bbbbbbbbbb");
+        map.put("ccccccc", "cccccccccc");
+        map.put("ddddddd", "dddddddddd");
+        return map;
+    }
+
+    public void setMap(Map<String, String> map) {
+        this.map = map;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+}
diff --git a/test/servlet30/facelets/html/src/main/webapp/WEB-INF/faces-config.xml b/test/servlet30/facelets/html/src/main/webapp/WEB-INF/faces-config.xml
new file mode 100644
index 0000000..27562de
--- /dev/null
+++ b/test/servlet30/facelets/html/src/main/webapp/WEB-INF/faces-config.xml
@@ -0,0 +1,11 @@
+<?xml version='1.0' encoding='UTF-8'?>
+
+<faces-config version="2.1"
+              xmlns="http://java.sun.com/xml/ns/javaee"
+              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+              xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_1.xsd">
+    <converter>
+        <converter-id>outputFormatConverter</converter-id>
+        <converter-class>com.sun.faces.test.servlet30.facelets.html.OutputFormatConverter</converter-class>
+    </converter>
+</faces-config>
diff --git a/test/servlet30/facelets/html/src/main/webapp/WEB-INF/glassfish-web.xml b/test/servlet30/facelets/html/src/main/webapp/WEB-INF/glassfish-web.xml
new file mode 100644
index 0000000..cb84d62
--- /dev/null
+++ b/test/servlet30/facelets/html/src/main/webapp/WEB-INF/glassfish-web.xml
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<glassfish-web-app error-url="">
+  <context-root>/test-servlet30-facelets-html</context-root>
+  <class-loader delegate="true"/>
+  <jsp-config>
+    <property name="keepgenerated" value="true">
+      <description>Keep a copy of the generated servlet class' java code.</description>
+    </property>
+  </jsp-config>
+</glassfish-web-app>
diff --git a/test/servlet30/facelets/html/src/main/webapp/WEB-INF/web.xml b/test/servlet30/facelets/html/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..1acad6c
--- /dev/null
+++ b/test/servlet30/facelets/html/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" 
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>${webapp.projectStage}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
+        <param-value>${webapp.partialStateSaving}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>${webapp.stateSavingMethod}</param-value>
+    </context-param>
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <session-config>
+        <session-timeout>30</session-timeout>
+    </session-config>
+    <welcome-file-list>
+        <welcome-file>faces/index.xhtml</welcome-file>
+    </welcome-file-list>
+</web-app>
diff --git a/test/servlet30/facelets/html/src/main/webapp/dataTableCollection.xhtml b/test/servlet30/facelets/html/src/main/webapp/dataTableCollection.xhtml
new file mode 100644
index 0000000..8af1cbf
--- /dev/null
+++ b/test/servlet30/facelets/html/src/main/webapp/dataTableCollection.xhtml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title>UIData Supports Collection</title>
+    </h:head>
+    <h:body>
+        <h:form>
+            <h:dataTable value="#{dataTableCollectionBean.users}" var="cur">
+                <h:column>
+                    #{cur.firstName}
+                </h:column>
+                <h:column>
+                    #{cur.lastName}
+                </h:column>
+            </h:dataTable>
+        </h:form>
+    </h:body>
+</html>
diff --git a/test/servlet30/facelets/html/src/main/webapp/dataTableDynamic.xhtml b/test/servlet30/facelets/html/src/main/webapp/dataTableDynamic.xhtml
new file mode 100644
index 0000000..b8d3297
--- /dev/null
+++ b/test/servlet30/facelets/html/src/main/webapp/dataTableDynamic.xhtml
@@ -0,0 +1,17 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    <h:head>
+        <title>#{dataTableDynamicBean.title}</title>
+    </h:head>
+    <h:body>
+        <h:form id="form">
+            <h:commandButton id="button" title="Add DataTable" value="#{dataTableDynamicBean.addValue}" actionListener="#{dataTableDynamicBean.addTable}"/>
+            <h:panelGroup id="dtcontainer" layout="block">
+            </h:panelGroup>
+        </h:form>
+    </h:body>
+</html>
diff --git a/test/servlet30/facelets/html/src/main/webapp/dataTableEmpty.xhtml b/test/servlet30/facelets/html/src/main/webapp/dataTableEmpty.xhtml
new file mode 100644
index 0000000..7a0585d
--- /dev/null
+++ b/test/servlet30/facelets/html/src/main/webapp/dataTableEmpty.xhtml
@@ -0,0 +1,25 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://xmlns.jcp.org/jsf/html">
+    <h:head>
+        <title>Facelet Title</title>
+    </h:head>
+    <h:body>
+        <h:dataTable value="#{String.split('')}" var="item">
+            <h:column>
+                <h:outputText value="#{item}"/>
+            </h:column>
+            <h:column>
+                <h:outputText value="#{item}"/>
+            </h:column>
+            <h:column>
+                <h:outputText value="#{item}"/>
+            </h:column>
+        </h:dataTable>
+    </h:body>
+</html>
+
diff --git a/test/servlet30/facelets/html/src/main/webapp/dataTablePassthrough.xhtml b/test/servlet30/facelets/html/src/main/webapp/dataTablePassthrough.xhtml
new file mode 100644
index 0000000..356377d
--- /dev/null
+++ b/test/servlet30/facelets/html/src/main/webapp/dataTablePassthrough.xhtml
@@ -0,0 +1,22 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns:f="http://xmlns.jcp.org/jsf/core"
+      xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://xmlns.jcp.org/jsf/html"
+      xmlns:p="http://xmlns.jcp.org/jsf/passthrough">
+    <h:head />
+    <h:body>
+        <h:dataTable value="#{dataTablePassthroughBean.entities}" var="entity">
+            <h:column>
+                <f:facet name="footer">
+                    Name
+                </f:facet>
+                <f:passThroughAttribute name="data-order" value="#{entity.modifiedOn}" />
+                <h:outputText value="#{entity.name}" />
+            </h:column>
+        </h:dataTable>
+        <h:messages />
+    </h:body>
+</html>
diff --git a/test/servlet30/facelets/html/src/main/webapp/dataTablePreserved.xhtml b/test/servlet30/facelets/html/src/main/webapp/dataTablePreserved.xhtml
new file mode 100644
index 0000000..cc4e126
--- /dev/null
+++ b/test/servlet30/facelets/html/src/main/webapp/dataTablePreserved.xhtml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:f="http://java.sun.com/jsf/core"      
+      xmlns:h="http://java.sun.com/jsf/html"> 
+    <h:head>
+        <title></title>
+    </h:head>
+    <h:body>
+        <h:form id="form">
+            <h:dataTable id="table" value="#{'T1,T2,T3,T4'.split(',')}" 
+                         rowStatePreserved="true"
+                         var="item">
+                <h:column>
+                    <h:inputText id="inputText" value="#{item}"/>
+                </h:column>
+            </h:dataTable>
+            <h:commandButton id="button" value="click me twice"/>
+        </h:form>
+    </h:body>
+</html>
\ No newline at end of file
diff --git a/test/servlet30/facelets/html/src/main/webapp/doctypeComposition1.xhtml b/test/servlet30/facelets/html/src/main/webapp/doctypeComposition1.xhtml
new file mode 100644
index 0000000..421c34d
--- /dev/null
+++ b/test/servlet30/facelets/html/src/main/webapp/doctypeComposition1.xhtml
@@ -0,0 +1,13 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+    "http://www.w3.org/TR/html4/loose.dtd">
+
+<html xmlns:ui="http://java.sun.com/jsf/facelets">
+    <head><title>Title from Template Client</title></head>
+    <body>
+    <ui:composition template="doctypeComposition1b.xhtml">
+        <ui:define name="content">
+            Content
+        </ui:define>
+    </ui:composition>
+</body>
+</html>
diff --git a/test/servlet30/facelets/html/src/main/webapp/doctypeComposition1b.xhtml b/test/servlet30/facelets/html/src/main/webapp/doctypeComposition1b.xhtml
new file mode 100644
index 0000000..f9af585
--- /dev/null
+++ b/test/servlet30/facelets/html/src/main/webapp/doctypeComposition1b.xhtml
@@ -0,0 +1,55 @@
+<!DOCTYPE html>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:f="http://java.sun.com/jsf/core" 
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+    <f:view>
+        <head><title>Title from Template</title></head>
+        <h:body>
+            <ui:insert name="content" />
+        </h:body>
+    </f:view>
+</html>
diff --git a/test/servlet30/facelets/html/src/main/webapp/doctypeCompositionReload1.xhtml b/test/servlet30/facelets/html/src/main/webapp/doctypeCompositionReload1.xhtml
new file mode 100644
index 0000000..a1e75eb
--- /dev/null
+++ b/test/servlet30/facelets/html/src/main/webapp/doctypeCompositionReload1.xhtml
@@ -0,0 +1,7 @@
+<ui:composition xmlns="http://www.w3.org/1999/xhtml"
+                xmlns:ui="http://java.sun.com/jsf/facelets"
+                template="doctypeCompositionReload1b.xhtml">
+    <ui:define name="content">
+        quirksmode is sub-optimal
+    </ui:define>
+</ui:composition>
\ No newline at end of file
diff --git a/test/servlet30/facelets/html/src/main/webapp/doctypeCompositionReload1b.xhtml b/test/servlet30/facelets/html/src/main/webapp/doctypeCompositionReload1b.xhtml
new file mode 100644
index 0000000..87626b2
--- /dev/null
+++ b/test/servlet30/facelets/html/src/main/webapp/doctypeCompositionReload1b.xhtml
@@ -0,0 +1,21 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+    <ui:insert name="metadata" />
+    <h:head>
+        <title>
+            <ui:insert name="windowTitle">Bla</ui:insert>
+        </title>
+        <ui:insert name="header" />
+    </h:head>
+    <h:body>
+        <ui:insert name="menu" />
+        <ui:insert name="tabs" />
+        <div id="content">
+            <ui:insert name="content"/>
+        </div>
+    </h:body>
+</html>
diff --git a/test/servlet30/facelets/html/src/main/webapp/doctypeInclude1.xhtml b/test/servlet30/facelets/html/src/main/webapp/doctypeInclude1.xhtml
new file mode 100644
index 0000000..626191a
--- /dev/null
+++ b/test/servlet30/facelets/html/src/main/webapp/doctypeInclude1.xhtml
@@ -0,0 +1,5 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+
+<ui:include src="doctypeComposition1.xhtml" xmlns:ui="http://java.sun.com/jsf/facelets"/>
+
diff --git a/test/servlet30/facelets/html/src/main/webapp/findChildByTagIdFacets.xhtml b/test/servlet30/facelets/html/src/main/webapp/findChildByTagIdFacets.xhtml
new file mode 100644
index 0000000..4cec895
--- /dev/null
+++ b/test/servlet30/facelets/html/src/main/webapp/findChildByTagIdFacets.xhtml
@@ -0,0 +1,49 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    <h:head>
+        <title>Components and Facets</title>
+    </h:head>
+    <h:body>
+        <p>Components and Facets</p>
+        
+        <h:dataTable id="table" border="1" value="#{dataTableCollectionBean.users}" var="user">
+            <f:facet name="caption">
+                <h:outputText id="captionFacet" value="My Caption" />
+            </f:facet>
+            
+            <f:facet name="colgroups">
+                <h:panelGroup id="colgroupsPanel">
+                    <col style="background-color:red" />
+                    <col style="background-color:yellow" />      
+                </h:panelGroup>
+            </f:facet>
+            
+            <f:facet name="header">
+                <h:outputText id="headerFacet" value="My Header" />
+            </f:facet>
+            
+            <f:facet name="footer">
+                <h:outputText id="footerFacet" value="My Footer" />
+            </f:facet>
+            
+            <h:column id="nameCol">
+                <h:outputText id="name" value="#{user.firstName}" />
+            </h:column>
+            
+            <h:column id="lastNameCol">
+                <h:outputText id="lastName" value="#{user.lastName}" />
+            </h:column>
+            
+        </h:dataTable>
+        
+        <h:form prependId="false">
+            <p><h:commandButton id="button" value="submit" /></p>
+        </h:form>
+        
+        
+    </h:body>
+</html>
+
diff --git a/test/servlet30/facelets/html/src/main/webapp/formDuplicateId.xhtml b/test/servlet30/facelets/html/src/main/webapp/formDuplicateId.xhtml
new file mode 100644
index 0000000..cd6bf6c
--- /dev/null
+++ b/test/servlet30/facelets/html/src/main/webapp/formDuplicateId.xhtml
@@ -0,0 +1,34 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://xmlns.jcp.org/jsf/html"
+      xmlns:f="http://xmlns.jcp.org/jsf/core">
+    <h:head>
+        <title>Facelet Title</title>
+    </h:head>
+    <h:body>
+        <h:form>
+            <h:inputText value="#{formDuplicateIdBean.input}" id="input" />
+            <h:outputText value="#{formDuplicateIdBean.input}" id="output" />
+            <h:commandButton value="Submit">
+                <f:ajax execute="input" render="output" />
+            </h:commandButton>
+        </h:form>
+        <h:form>
+            <h:inputText value="#{formDuplicateIdBean.input}" id="input" />
+            <h:outputText value="#{formDuplicateIdBean.input}" id="output" />
+            <h:commandButton value="Submit">
+                <f:ajax execute="input" render="output" />
+            </h:commandButton>
+        </h:form>
+        <h:form id="form3">
+            <h:inputText value="#{formDuplicateIdBean.input}" id="input" />
+            <h:outputText value="#{formDuplicateIdBean.input}" id="output" />
+            <h:commandButton value="Submit">
+                <f:ajax execute="input" render="output" />
+            </h:commandButton>
+        </h:form>
+    </h:body>
+</html>
diff --git a/test/servlet30/facelets/html/src/main/webapp/formOmitted.xhtml b/test/servlet30/facelets/html/src/main/webapp/formOmitted.xhtml
new file mode 100644
index 0000000..de5ca97
--- /dev/null
+++ b/test/servlet30/facelets/html/src/main/webapp/formOmitted.xhtml
@@ -0,0 +1,55 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <head>
+        <title>Form Omitted</title>
+    </head>
+    <body>
+        <h:outputText value="#{facesContext.application.projectStage}"/> <br/>
+        <h:commandButton id="button" value="reload"/>
+    </body>
+</html>
diff --git a/test/servlet30/facelets/html/src/main/webapp/graphicImageDirectContract.xhtml b/test/servlet30/facelets/html/src/main/webapp/graphicImageDirectContract.xhtml
new file mode 100644
index 0000000..3a3e195
--- /dev/null
+++ b/test/servlet30/facelets/html/src/main/webapp/graphicImageDirectContract.xhtml
@@ -0,0 +1,11 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://xmlns.jcp.org/jsf/html">
+    <h:head>
+        <title>Facelet Title</title>
+    </h:head>
+    <h:body>
+        <h:graphicImage id="image" value="/contracts/acontract/test.png"/>
+    </h:body>
+</html>
diff --git a/test/servlet30/facelets/html/src/main/webapp/graphicImageDirectContract2.xhtml b/test/servlet30/facelets/html/src/main/webapp/graphicImageDirectContract2.xhtml
new file mode 100644
index 0000000..ae52c8c
--- /dev/null
+++ b/test/servlet30/facelets/html/src/main/webapp/graphicImageDirectContract2.xhtml
@@ -0,0 +1,11 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://xmlns.jcp.org/jsf/html">
+    <h:head>
+        <title>Facelet Title</title>
+    </h:head>
+    <h:body>
+        <h:graphicImage id="image" name="/contracts/acontract/test.png"/>
+    </h:body>
+</html>
diff --git a/test/servlet30/facelets/html/src/main/webapp/index.xhtml b/test/servlet30/facelets/html/src/main/webapp/index.xhtml
new file mode 100644
index 0000000..3ac29d2
--- /dev/null
+++ b/test/servlet30/facelets/html/src/main/webapp/index.xhtml
@@ -0,0 +1,24 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title>Facelet Title</title>
+    </h:head>
+    <h:body>
+        <b>dataTable</b>
+        <p>
+            <a href="#{facesContext.externalContext.requestContextPath}/faces/dataTableDynamic.xhtml">Dynamic dataTable</a>
+        </p>
+        <b>inputText</b>
+        <p>
+            <a href="#{facesContext.externalContext.requestContextPath}/faces/inputTextSet.xhtml">inputText with a Set</a>
+        </p>
+        <b>outputFormat</b>
+        <p>
+            <a href="#{facesContext.externalContext.requestContextPath}/faces/outputFormat.xhtml">outputFormat with a converter</a>
+        </p>
+    </h:body>
+</html>
diff --git a/test/servlet30/facelets/html/src/main/webapp/inputFile1.xhtml b/test/servlet30/facelets/html/src/main/webapp/inputFile1.xhtml
new file mode 100644
index 0000000..2d98ad3
--- /dev/null
+++ b/test/servlet30/facelets/html/src/main/webapp/inputFile1.xhtml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    <h:head>
+        <title>A Simple JavaServer Faces 2.0 View</title>
+    </h:head>
+    <h:body>
+        <h:form prependId="false" enctype="multipart/form-data">
+            <h:inputFile id="fileUpload" value="#{inputFile1Bean.uploadedFile}">
+                <f:validator validatorId="InputFile1Validator" />
+            </h:inputFile>
+            <p><h:commandButton value="submit" /></p>
+            #{inputFile1Bean.fileText}
+            <p><h:messages /></p>
+        </h:form>
+    </h:body>
+</html>
diff --git a/test/servlet30/facelets/html/src/main/webapp/inputFileAjax.xhtml b/test/servlet30/facelets/html/src/main/webapp/inputFileAjax.xhtml
new file mode 100644
index 0000000..932a875
--- /dev/null
+++ b/test/servlet30/facelets/html/src/main/webapp/inputFileAjax.xhtml
@@ -0,0 +1,70 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
+      xmlns:f="http://xmlns.jcp.org/jsf/core"
+      xmlns:h="http://xmlns.jcp.org/jsf/html">
+    <h:head></h:head>
+
+    <h:form id="form" enctype="multipart/form-data" prependId="false">
+        
+        <p><h:inputText id="text" value="#{fileUploadBean.text}">
+           </h:inputText></p>
+        
+        <p><h:inputFile id="file" value="#{fileUploadBean.uploadedFile}"> 
+             <f:validator validatorId="FileValidator" />
+           </h:inputFile>
+        </p>
+       <br/>
+       
+       <p id="textOutput">Text: #{fileUploadBean.text}</p>
+       
+       <h:commandButton id="button" value="submit">
+          <f:ajax execute="@all" render="@all"/>
+       </h:commandButton>
+       
+       #{fileUploadBean.fileText}
+       
+       <p><h:messages id="messages" /></p>
+    </h:form>
+
+</html>
diff --git a/test/servlet30/facelets/html/src/main/webapp/inputFileAjaxListener.xhtml b/test/servlet30/facelets/html/src/main/webapp/inputFileAjaxListener.xhtml
new file mode 100644
index 0000000..e473b53
--- /dev/null
+++ b/test/servlet30/facelets/html/src/main/webapp/inputFileAjaxListener.xhtml
@@ -0,0 +1,27 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://xmlns.jcp.org/jsf/html"
+      xmlns:f="http://xmlns.jcp.org/jsf/core">
+    <h:head>
+        <title>Input File + Ajax Listener</title>
+    </h:head>
+    <h:body>
+        <p>
+            Because of limitations in the JavaScript support of HtmlUnit there
+            is no automated test for this particular test.
+        </p>
+        <h:form id="form" enctype="multipart/form-data" prependId="false">
+            <p><h:inputFile id="inputFile" value="#{fileUploadBean.uploadedFile}"> 
+                    <f:ajax event="valueChange" listener="#{fileUploadBean.processEvent}" execute="@form" render="@form"/>
+                </h:inputFile>
+            </p>
+            <p>
+                <h:messages id="messages" />
+            </p>
+        </h:form>
+    </h:body>
+</html>
diff --git a/test/servlet30/facelets/html/src/main/webapp/inputFileAjaxPartial.xhtml b/test/servlet30/facelets/html/src/main/webapp/inputFileAjaxPartial.xhtml
new file mode 100644
index 0000000..d7d276f
--- /dev/null
+++ b/test/servlet30/facelets/html/src/main/webapp/inputFileAjaxPartial.xhtml
@@ -0,0 +1,70 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
+      xmlns:f="http://xmlns.jcp.org/jsf/core"
+      xmlns:h="http://xmlns.jcp.org/jsf/html">
+    <h:head></h:head>
+
+    <h:form id="form" enctype="multipart/form-data" prependId="false">
+        
+        <p><h:inputText id="text" value="#{fileUploadBean.text}">
+           </h:inputText></p>
+        
+        <p><h:inputFile id="file" value="#{fileUploadBean.uploadedFile}"> 
+             <f:validator validatorId="FileValidator" />
+           </h:inputFile>
+        </p>
+       <br/>
+       
+       <p id="textOutput">Text: #{fileUploadBean.text}</p>
+       
+       <h:commandButton id="button" value="submit">
+          <f:ajax execute="@all" render="file content messages"/>
+       </h:commandButton>
+       
+       <h:outputText id="content" value="#{fileUploadBean.fileText}"/>
+       
+       <p><h:messages id="messages" /></p>
+    </h:form>
+
+</html>
diff --git a/test/servlet30/facelets/html/src/main/webapp/inputFileRequired.xhtml b/test/servlet30/facelets/html/src/main/webapp/inputFileRequired.xhtml
new file mode 100644
index 0000000..d7e423b
--- /dev/null
+++ b/test/servlet30/facelets/html/src/main/webapp/inputFileRequired.xhtml
@@ -0,0 +1,21 @@
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://xmlns.jcp.org/jsf/html">
+    <h:head>
+    </h:head>
+    <h:body>
+        <h:form id="form" enctype="multipart/form-data">
+            <p>
+                <h:inputText id="text" value="#{fileUploadBean.text}"/>
+            </p>
+            <p>
+                <h:inputFile id="file" value="#{fileUploadBean.uploadedFile}" required="true"/> 
+            </p>
+            <p>
+                <h:commandButton id="button" value="submit"/>
+            </p>
+            <p>
+                <h:messages id="messages"/>
+            </p>
+        </h:form>
+    </h:body>
+</html>
diff --git a/test/servlet30/facelets/html/src/main/webapp/inputTextSet.xhtml b/test/servlet30/facelets/html/src/main/webapp/inputTextSet.xhtml
new file mode 100644
index 0000000..619fc1b
--- /dev/null
+++ b/test/servlet30/facelets/html/src/main/webapp/inputTextSet.xhtml
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <head>
+        <title></title>
+    </head>
+    <body>
+        <h:form id="form">
+            <p><h:inputText id="inputText" value="#{inputTextSetBean.tags}" converter="#{inputTextSetBean.tagsConverter}" required="true"/></p>
+            <p>Tags: #{inputTextSetBean.printTags()}</p>
+            <h:commandButton id="submit" value="submit" />
+        </h:form>
+    </body>
+</html>
diff --git a/test/servlet30/facelets/html/src/main/webapp/namespace.xhtml b/test/servlet30/facelets/html/src/main/webapp/namespace.xhtml
new file mode 100644
index 0000000..e9b059f
--- /dev/null
+++ b/test/servlet30/facelets/html/src/main/webapp/namespace.xhtml
@@ -0,0 +1,57 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+    <head>
+        <title>namespace</title>
+    </head>
+    <body>
+        <ul>
+            <li>
+                <svg xmlns="http://www.w3.org/2000/svg" version="1.1" ></svg>
+            </li>
+        </ul>
+    </body>
+</html>
diff --git a/test/servlet30/facelets/html/src/main/webapp/outputFormatConverter.xhtml b/test/servlet30/facelets/html/src/main/webapp/outputFormatConverter.xhtml
new file mode 100644
index 0000000..bd2c97e
--- /dev/null
+++ b/test/servlet30/facelets/html/src/main/webapp/outputFormatConverter.xhtml
@@ -0,0 +1,74 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:h="http://java.sun.com/jsf/html">
+
+    <head>
+        <title>JAVASERVERFACES-2111</title>
+    </head>
+    <body>
+        <h:form id="form">
+            <!-- Case 1: Message With converter -->
+            <h:outputFormat value="MESSAGE 1" converter="outputFormatConverter"/>
+
+            <!-- Case 2: Message and Param With converter -->
+            <h:outputFormat value="MESSAGE 2 {0}" converter="outputFormatConverter">
+               <f:param value="MYPARAM"/>
+            </h:outputFormat> 
+
+            <!-- Case 3: Message With No converter -->
+            <h:outputFormat value="MESSAGE 3"/>
+            
+            <!-- Case 4: Message and Param With No converter -->
+            <h:outputFormat value="MESSAGE 4 {0}">
+               <f:param value="MYPARAM"/>
+            </h:outputFormat> 
+        </h:form>
+    </body>
+</html>
diff --git a/test/servlet30/facelets/html/src/main/webapp/outputScript.xhtml b/test/servlet30/facelets/html/src/main/webapp/outputScript.xhtml
new file mode 100644
index 0000000..20cd7c9
--- /dev/null
+++ b/test/servlet30/facelets/html/src/main/webapp/outputScript.xhtml
@@ -0,0 +1,13 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://xmlns.jcp.org/jsf/html">
+    <h:head>
+        <title>Facelet Title</title>
+    </h:head>
+    <h:body>
+        Project Stage: <h:outputText value="#{facesContext.application.projectStage}"/> <br/>
+        <h:outputScript name="youcantfindme"/> <br/>
+        <h:messages/>
+    </h:body>
+</html>
diff --git a/test/servlet30/facelets/html/src/main/webapp/outputScriptDirectContract.xhtml b/test/servlet30/facelets/html/src/main/webapp/outputScriptDirectContract.xhtml
new file mode 100644
index 0000000..508c79a
--- /dev/null
+++ b/test/servlet30/facelets/html/src/main/webapp/outputScriptDirectContract.xhtml
@@ -0,0 +1,12 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://xmlns.jcp.org/jsf/html">
+    <h:head>
+        <title>Facelet Title</title>
+    </h:head>
+    <h:body>
+        <h:outputScript target="body" id="script" name="/contracts/acontract/script.js"/>
+    </h:body>
+</html>
+
diff --git a/test/servlet30/facelets/html/src/main/webapp/outputScriptMissingHead.xhtml b/test/servlet30/facelets/html/src/main/webapp/outputScriptMissingHead.xhtml
new file mode 100644
index 0000000..b873ef2
--- /dev/null
+++ b/test/servlet30/facelets/html/src/main/webapp/outputScriptMissingHead.xhtml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <head>
+        <title>h:outputScript missing h:head</title>
+    </head>
+    <body>
+        <h:form id="form1">
+            <h:outputScript name="jsf.js" library="javax.faces" target="head"/>
+            <h1>test</h1>
+            <br/>
+            <h:commandButton value="reload"/>
+            <h:messages id="messages"/>
+        </h:form>
+    </body>
+</html>
diff --git a/test/servlet30/facelets/html/src/main/webapp/outputStylesheetDirectContract.xhtml b/test/servlet30/facelets/html/src/main/webapp/outputStylesheetDirectContract.xhtml
new file mode 100644
index 0000000..d613e0b
--- /dev/null
+++ b/test/servlet30/facelets/html/src/main/webapp/outputStylesheetDirectContract.xhtml
@@ -0,0 +1,11 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://xmlns.jcp.org/jsf/html">
+    <h:head>
+        <title>Facelet Title</title>
+    </h:head>
+    <h:body>
+        <h:outputStylesheet id="stylesheet" name="/contracts/acontract/stylesheet.css"/>
+    </h:body>
+</html>
diff --git a/test/servlet30/facelets/html/src/main/webapp/outputTextProjectStage.xhtml b/test/servlet30/facelets/html/src/main/webapp/outputTextProjectStage.xhtml
new file mode 100644
index 0000000..01e3865
--- /dev/null
+++ b/test/servlet30/facelets/html/src/main/webapp/outputTextProjectStage.xhtml
@@ -0,0 +1,13 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title></title>
+    </h:head>
+    <h:body>
+        <h:outputText value="#{facesContext.application.projectStage}"/>
+    </h:body>
+</html>
diff --git a/test/servlet30/facelets/html/src/main/webapp/outputTextScript1.xhtml b/test/servlet30/facelets/html/src/main/webapp/outputTextScript1.xhtml
new file mode 100644
index 0000000..b438cac
--- /dev/null
+++ b/test/servlet30/facelets/html/src/main/webapp/outputTextScript1.xhtml
@@ -0,0 +1,72 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<?xml-stylesheet href="#{outputTextScript1Bean.xmlparam}" type="text/css" ?>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+<head>
+  <meta http-equiv="Contexnt-Type" content="text/html; charset=UTF-8"/>
+  <title></title>
+</head>
+
+<body>
+  <f:view>
+    <h:form id="testForm">
+      Put the following input and JavaScript will be executed. <br/>
+      <table border="2">
+      <td>
+         "?><script>alert('JSF Security hole!!')</script>
+      </td>
+      </table>
+      <br/>
+      <h:inputTextarea id="textarea" cols="40" rows="6" value="#{outputTextScript1Bean.xmlparam}"/><br/>
+      <br/>
+      <h:commandButton id="button" type="submit" value="test"/><br/>
+      <br/>
+     </h:form>
+  </f:view>
+</body>
+</html>
diff --git a/test/servlet30/facelets/html/src/main/webapp/outputTextScript2.xhtml b/test/servlet30/facelets/html/src/main/webapp/outputTextScript2.xhtml
new file mode 100644
index 0000000..e0133bb
--- /dev/null
+++ b/test/servlet30/facelets/html/src/main/webapp/outputTextScript2.xhtml
@@ -0,0 +1,71 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    <head>
+        <meta http-equiv="Contexnt-Type" content="text/html; charset=UTF-8"/>
+        <title></title>
+    </head>
+
+    <body>
+        <f:view>
+            <h:form id="testForm">
+                Put the following input and JavaScript will be executed.<br/>
+                <table border="2">
+                    <td>
+                        --><script>alert('JSF Security hole!!')</script>
+                    </td>
+                </table>
+                <!-- #{outputTextScript2Bean.comment}  -->
+                <br/>
+                <h:inputTextarea id="textarea" cols="40" rows="6" value="#{outputTextScript2Bean.comment}"/><br/>
+                <br/>
+                <h:commandButton id="button" type="submit" value="test"/><br/>
+                <br/>
+            </h:form>
+        </f:view>
+    </body>
+</html>
diff --git a/test/servlet30/facelets/html/src/main/webapp/outputTextWithEscape.xhtml b/test/servlet30/facelets/html/src/main/webapp/outputTextWithEscape.xhtml
new file mode 100644
index 0000000..b70bf25
--- /dev/null
+++ b/test/servlet30/facelets/html/src/main/webapp/outputTextWithEscape.xhtml
@@ -0,0 +1,14 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://xmlns.jcp.org/jsf/html"
+      xmlns:fn="http://java.sun.com/jsp/jstl/functions">
+    <h:head>
+        <title>Facelet Title</title>
+    </h:head>
+    <h:body>
+        <h:outputText value="#{fn:escapeXml(outputTextWithEscapeBean.text)}"/>
+    </h:body>
+</html>
diff --git a/test/servlet30/facelets/html/src/main/webapp/panelGroupStyle.xhtml b/test/servlet30/facelets/html/src/main/webapp/panelGroupStyle.xhtml
new file mode 100644
index 0000000..0951606
--- /dev/null
+++ b/test/servlet30/facelets/html/src/main/webapp/panelGroupStyle.xhtml
@@ -0,0 +1,15 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://xmlns.jcp.org/jsf/html">
+    <h:head>
+        <title>Facelet Title</title>
+    </h:head>
+    <h:body>
+        <h:panelGroup styleClass="foo" layout="block" style="width: 100px; border: 1px solid red; height: 60px">
+        <br/>
+            Hello World !
+            <br/>
+        </h:panelGroup>  
+    </h:body>
+</html>
\ No newline at end of file
diff --git a/test/servlet30/facelets/html/src/main/webapp/selectBooleanCheckboxSubmittedValue.xhtml b/test/servlet30/facelets/html/src/main/webapp/selectBooleanCheckboxSubmittedValue.xhtml
new file mode 100644
index 0000000..95fce73
--- /dev/null
+++ b/test/servlet30/facelets/html/src/main/webapp/selectBooleanCheckboxSubmittedValue.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+    PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <head>
+        <title>checkboxSubmittedValue</title>
+    </head>
+    <body>
+        <h:form prependId="false">
+            <h:selectBooleanCheckbox id="box1" value="#{selectBooleanCheckboxSubmittedValueBean.box1}" />
+            <h:selectBooleanCheckbox id="box2"
+                                     value="#{selectBooleanCheckboxSubmittedValueBean.box2}"
+                                     immediate="true"
+                                     valueChangeListener="#{selectBooleanCheckboxSubmittedValueBean.valueChange}"
+                                     onclick="this.form.submit()"/>
+        </h:form>
+    </body>
+</html>
diff --git a/test/servlet30/facelets/html/src/main/webapp/selectOneMenuXSS.xhtml b/test/servlet30/facelets/html/src/main/webapp/selectOneMenuXSS.xhtml
new file mode 100644
index 0000000..765d5ef
--- /dev/null
+++ b/test/servlet30/facelets/html/src/main/webapp/selectOneMenuXSS.xhtml
@@ -0,0 +1,18 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    <head>
+        <title>Example-Page</title>
+    </head>
+    <body>
+        <h:form>
+            <h:selectOneMenu value="#{selectOneMenuXSSBean.value}">
+                <f:selectItems value="#{selectOneMenuXSSBean.list}" var="obj" itemValue="#{obj}" itemLabel="#{obj.name}" />
+            </h:selectOneMenu>    
+        </h:form>
+    </body>
+</html> 
diff --git a/test/servlet30/facelets/html/src/main/webapp/selectOnePassthrough.xhtml b/test/servlet30/facelets/html/src/main/webapp/selectOnePassthrough.xhtml
new file mode 100644
index 0000000..91f5f03
--- /dev/null
+++ b/test/servlet30/facelets/html/src/main/webapp/selectOnePassthrough.xhtml
@@ -0,0 +1,43 @@
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:jsf="http://xmlns.jcp.org/jsf"
+      xmlns:h="http://xmlns.jcp.org/jsf/html"
+      xmlns:f="http://xmlns.jcp.org/jsf/core">
+    <head jsf:id="head">
+        <title>Test</title>
+    </head>
+    <body>
+        <form jsf:id="form" jsf:prependId="false">
+            OK with standard facelet markup and value of type Iterable
+            <BR />
+            <h:selectOneListbox size="1" value="#{selectOnePassthroughBean.name}">
+                <f:selectItems value="#{selectOnePassthroughBean.list}" />
+            </h:selectOneListbox>
+            <BR />
+            <BR />
+            <BR />
+            OK with standard facelet markup and value of type Map
+            <BR/>
+            <h:selectOneListbox size="1" value="#{selectOnePassthroughBean.name}">
+                <f:selectItems value="#{selectOnePassthroughBean.map}" />
+            </h:selectOneListbox>
+            <BR />
+            <BR />
+            <BR />
+            OK with Html5 friendly markup and value of type Iterable
+            <BR/> 
+            <select size="1" jsf:value="#{selectOnePassthroughBean.name}">
+                <f:selectItems value="#{selectOnePassthroughBean.list}" />
+            </select>
+            <BR />
+            <BR />
+            <BR />
+            <BR />
+            KO with HTML5 friendly markup and value of type Iterable
+            <BR/>
+            <select size="1" jsf:id="ko" jsf:value="#{selectOnePassthroughBean.name}" >
+                <f:selectItems value="#{selectOnePassthroughBean.map}" />
+            </select>
+        </form>
+    </body>
+</html>
diff --git a/test/servlet30/facelets/html/src/test/java/com/sun/faces/test/servlet30/facelets/html/Issue1968IT.java b/test/servlet30/facelets/html/src/test/java/com/sun/faces/test/servlet30/facelets/html/Issue1968IT.java
new file mode 100644
index 0000000..a013d9f
--- /dev/null
+++ b/test/servlet30/facelets/html/src/test/java/com/sun/faces/test/servlet30/facelets/html/Issue1968IT.java
@@ -0,0 +1,70 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.facelets.html;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class Issue1968IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+    
+    @Test
+    public void testOutputTextWithEscape() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/outputTextWithEscape.xhtml");
+        assertTrue(page.asText().contains("&"));
+    }
+}
diff --git a/test/servlet30/facelets/html/src/test/java/com/sun/faces/test/servlet30/facelets/html/Issue2079IT.java b/test/servlet30/facelets/html/src/test/java/com/sun/faces/test/servlet30/facelets/html/Issue2079IT.java
new file mode 100644
index 0000000..6245fb7
--- /dev/null
+++ b/test/servlet30/facelets/html/src/test/java/com/sun/faces/test/servlet30/facelets/html/Issue2079IT.java
@@ -0,0 +1,68 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.facelets.html;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+public class Issue2079IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testProjectStage() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/outputTextProjectStage.xhtml");
+    }
+}
diff --git a/test/servlet30/facelets/html/src/test/java/com/sun/faces/test/servlet30/facelets/html/Issue2111IT.java b/test/servlet30/facelets/html/src/test/java/com/sun/faces/test/servlet30/facelets/html/Issue2111IT.java
new file mode 100644
index 0000000..2f149eb
--- /dev/null
+++ b/test/servlet30/facelets/html/src/test/java/com/sun/faces/test/servlet30/facelets/html/Issue2111IT.java
@@ -0,0 +1,94 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.facelets.html;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class Issue2111IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+    
+    @Test
+    public void testOutputFormatMessages() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/outputFormatConverter.xhtml");
+        assertTrue(page.asText().contains("MyConverter.getAsString Called: MESSAGE 1 MyConverter.getAsString Called: MESSAGE 2 MYPARAM MESSAGE 3 MESSAGE 4 MYPARAM"));
+    }
+    
+    @Test
+    public void testOutputFormatMessage1() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/outputFormatConverter.xhtml");
+        assertTrue(page.asText().contains("MESSAGE 1 MyConverter.getAsString"));
+    }
+    
+    @Test
+    public void testOutputFormatMessage2() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/outputFormatConverter.xhtml");
+        assertTrue(page.asText().contains("MESSAGE 2 MYPARAM"));
+    }
+    
+    @Test
+    public void testOutputFormatMessage3() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/outputFormatConverter.xhtml");
+        assertTrue(page.asText().contains("MESSAGE 3"));
+    }
+    
+    @Test
+    public void testOutputFormatMessage4() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/outputFormatConverter.xhtml");
+        assertTrue(page.asText().contains("MESSAGE 4 MYPARAM"));
+    }
+}
diff --git a/test/servlet30/facelets/html/src/test/java/com/sun/faces/test/servlet30/facelets/html/Issue2112IT.java b/test/servlet30/facelets/html/src/test/java/com/sun/faces/test/servlet30/facelets/html/Issue2112IT.java
new file mode 100644
index 0000000..2cef77d
--- /dev/null
+++ b/test/servlet30/facelets/html/src/test/java/com/sun/faces/test/servlet30/facelets/html/Issue2112IT.java
@@ -0,0 +1,89 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.facelets.html;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import com.gargoylesoftware.htmlunit.html.HtmlTextArea;
+import org.junit.After;
+import static org.junit.Assert.assertTrue;
+import org.junit.Before;
+import org.junit.Test;
+
+public class Issue2112IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+    
+    @Test
+    public void testOutputScript1() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "/faces/outputTextScript1.xhtml");
+        HtmlTextArea input = (HtmlTextArea) page.getElementById("testForm:textarea");
+        String inputValue = '"' + "?><script>alert('JSF Security hole!!')</script>";
+        input.setText(inputValue);
+        HtmlSubmitInput submit = (HtmlSubmitInput) page.getElementById("testForm:button");
+        page = (HtmlPage) submit.click();
+        assertTrue(page.asXml().contains("Put the following input and JavaScript will be executed."));
+        assertTrue(input.getText().contains(inputValue));    }
+    
+    @Test
+    public void testOutputScript2() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "/faces/outputTextScript2.xhtml");
+        HtmlTextArea input = (HtmlTextArea) page.getElementById("testForm:textarea");
+        String inputValue = "--><script>alert('JSF Security hole!!')</script>";
+        input.setText(inputValue);
+        HtmlSubmitInput submit = (HtmlSubmitInput) page.getElementById("testForm:button");
+        page = (HtmlPage) submit.click();
+        assertTrue(page.asXml().contains("Put the following input and JavaScript will be executed."));
+        assertTrue(input.getText().contains(inputValue));
+    }
+}
diff --git a/test/servlet30/facelets/html/src/test/java/com/sun/faces/test/servlet30/facelets/html/Issue2405IT.java b/test/servlet30/facelets/html/src/test/java/com/sun/faces/test/servlet30/facelets/html/Issue2405IT.java
new file mode 100644
index 0000000..cafb1b9
--- /dev/null
+++ b/test/servlet30/facelets/html/src/test/java/com/sun/faces/test/servlet30/facelets/html/Issue2405IT.java
@@ -0,0 +1,77 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.facelets.html;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class Issue2405IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testFormOmitted() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/formOmitted.xhtml");
+        String text = page.asXml();
+        if (text.contains("Development")) {
+            assertTrue(text.contains("The form component needs to have a UIForm in its ancestry."));
+        }
+        
+        if (text.contains("Production")) {
+            assertFalse(text.contains("The form component needs to have a UIForm in its ancestry."));
+        }
+    }
+}
diff --git a/test/servlet30/facelets/html/src/test/java/com/sun/faces/test/servlet30/facelets/html/Issue2453IT.java b/test/servlet30/facelets/html/src/test/java/com/sun/faces/test/servlet30/facelets/html/Issue2453IT.java
new file mode 100644
index 0000000..5e451a4
--- /dev/null
+++ b/test/servlet30/facelets/html/src/test/java/com/sun/faces/test/servlet30/facelets/html/Issue2453IT.java
@@ -0,0 +1,85 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDLGPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.facelets.html;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.After;
+import static org.junit.Assert.assertTrue;
+import org.junit.Before;
+import org.junit.Test;
+
+public class Issue2453IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testIncludeNotMissingDoctype() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/doctypeInclude1.xhtml");
+        String response = page.getWebResponse().getContentAsString();
+        assertTrue(response.contains("<!DOCTYPE HTML>"));
+    }
+    
+    @Test
+    public void testCompositionNotMissingDoctype() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/doctypeComposition1.xhtml");
+        String response = page.getWebResponse().getContentAsString();
+        assertTrue(response.contains("<!DOCTYPE HTML>"));
+    }
+    
+    @Test
+    public void testCompositionNotMissingDoctype2() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/doctypeComposition1b.xhtml");
+        String response = page.getWebResponse().getContentAsString();
+        assertTrue(response.contains("<!DOCTYPE html>"));
+    }
+}
diff --git a/test/servlet30/facelets/html/src/test/java/com/sun/faces/test/servlet30/facelets/html/Issue2575IT.java b/test/servlet30/facelets/html/src/test/java/com/sun/faces/test/servlet30/facelets/html/Issue2575IT.java
new file mode 100644
index 0000000..89947a7
--- /dev/null
+++ b/test/servlet30/facelets/html/src/test/java/com/sun/faces/test/servlet30/facelets/html/Issue2575IT.java
@@ -0,0 +1,75 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDLGPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.facelets.html;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.After;
+import static org.junit.Assert.assertTrue;
+import org.junit.Before;
+import org.junit.Test;
+
+public class Issue2575IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+    
+    @Test
+    public void testNotMissingDoctypeReload() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/doctypeCompositionReload1.xhtml");
+        String response = page.getWebResponse().getContentAsString();
+        assertTrue(response.contains("<!DOCTYPE html>"));
+
+        page = webClient.getPage(webUrl + "faces/doctypeCompositionReload1.xhtml");
+        response = page.getWebResponse().getContentAsString();
+        assertTrue(response.contains("<!DOCTYPE html>"));
+    }
+}
diff --git a/test/servlet30/facelets/html/src/test/java/com/sun/faces/test/servlet30/facelets/html/Issue2623IT.java b/test/servlet30/facelets/html/src/test/java/com/sun/faces/test/servlet30/facelets/html/Issue2623IT.java
new file mode 100644
index 0000000..c1bac76
--- /dev/null
+++ b/test/servlet30/facelets/html/src/test/java/com/sun/faces/test/servlet30/facelets/html/Issue2623IT.java
@@ -0,0 +1,80 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.facelets.html;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlElement;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class Issue2623IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+    
+    @Test
+    public void testDataTableDynamic() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/dataTableDynamic.xhtml");
+        assertFalse(page.asText().contains("one"));
+        assertFalse(page.asText().contains("two"));
+        assertFalse(page.asText().contains("three"));
+        assertFalse(page.asText().contains("four"));
+        HtmlElement button = page.getHtmlElementById("form:button");
+        page = button.click();
+        assertTrue(page.asText().contains("one"));
+        assertTrue(page.asText().contains("two"));
+        assertTrue(page.asText().contains("three"));
+        assertTrue(page.asText().contains("four"));
+    }
+}
diff --git a/test/servlet30/facelets/html/src/test/java/com/sun/faces/test/servlet30/facelets/html/Issue2683IT.java b/test/servlet30/facelets/html/src/test/java/com/sun/faces/test/servlet30/facelets/html/Issue2683IT.java
new file mode 100644
index 0000000..4813215
--- /dev/null
+++ b/test/servlet30/facelets/html/src/test/java/com/sun/faces/test/servlet30/facelets/html/Issue2683IT.java
@@ -0,0 +1,85 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.facelets.html;
+
+import com.gargoylesoftware.htmlunit.ElementNotFoundException;
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlElement;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.sun.faces.test.junit.JsfTest;
+import com.sun.faces.test.junit.JsfTestRunner;
+import com.sun.faces.test.junit.JsfVersion;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+import org.junit.runner.RunWith;
+
+ at RunWith(JsfTestRunner.class)
+public class Issue2683IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @JsfTest(JsfVersion.JSF_2_2_4)
+    @Test
+    public void testDataTablePreserved() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/dataTablePreserved.xhtml");
+        HtmlElement button = page.getHtmlElementById("form:button");
+        page = button.click();
+        try {
+            page.getHtmlElementById("form:table:inputText");
+            fail();
+        } catch (ElementNotFoundException enfe) {
+        }
+        assertTrue(page.getHtmlElementById("form:table:0:inputText") != null);
+    }
+}
diff --git a/test/servlet30/facelets/html/src/test/java/com/sun/faces/test/servlet30/facelets/html/Issue2923IT.java b/test/servlet30/facelets/html/src/test/java/com/sun/faces/test/servlet30/facelets/html/Issue2923IT.java
new file mode 100644
index 0000000..c36edcf
--- /dev/null
+++ b/test/servlet30/facelets/html/src/test/java/com/sun/faces/test/servlet30/facelets/html/Issue2923IT.java
@@ -0,0 +1,80 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.facelets.html;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlElement;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.sun.faces.test.junit.JsfServerExclude;
+import com.sun.faces.test.junit.JsfTest;
+import com.sun.faces.test.junit.JsfTestRunner;
+import com.sun.faces.test.junit.JsfVersion;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+import org.junit.runner.RunWith;
+
+ at RunWith(JsfTestRunner.class)
+public class Issue2923IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+    
+    @JsfTest(value=JsfVersion.JSF_2_2_2, excludes={JsfServerExclude.WEBLOGIC_12_1_3})
+    @Test
+    public void testInputFileRequired() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/inputFileRequired.xhtml");
+        HtmlElement button = page.getHtmlElementById("form:button");
+        page = button.click();
+        assertTrue(page.asXml().contains("form:file: Validation Error: Value is required."));
+    }
+}
diff --git a/test/servlet30/facelets/html/src/test/java/com/sun/faces/test/servlet30/facelets/html/Issue2968IT.java b/test/servlet30/facelets/html/src/test/java/com/sun/faces/test/servlet30/facelets/html/Issue2968IT.java
new file mode 100644
index 0000000..c11776c
--- /dev/null
+++ b/test/servlet30/facelets/html/src/test/java/com/sun/faces/test/servlet30/facelets/html/Issue2968IT.java
@@ -0,0 +1,70 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.facelets.html;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class Issue2968IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+    
+    @Test
+    public void testNamespace() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/namespace.xhtml");
+        assertTrue(page.asXml().contains("</html>"));
+    }
+}
diff --git a/test/servlet30/facelets/html/src/test/java/com/sun/faces/test/servlet30/facelets/html/Issue3016IT.java b/test/servlet30/facelets/html/src/test/java/com/sun/faces/test/servlet30/facelets/html/Issue3016IT.java
new file mode 100644
index 0000000..939e451
--- /dev/null
+++ b/test/servlet30/facelets/html/src/test/java/com/sun/faces/test/servlet30/facelets/html/Issue3016IT.java
@@ -0,0 +1,79 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.facelets.html;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.sun.faces.test.junit.JsfTest;
+import com.sun.faces.test.junit.JsfTestRunner;
+import com.sun.faces.test.junit.JsfVersion;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+import org.junit.runner.RunWith;
+
+ at RunWith(JsfTestRunner.class)
+public class Issue3016IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+    
+    @JsfTest(JsfVersion.JSF_2_2_4)
+    @Test
+    public void testOutputScriptNotFound() throws Exception {
+        webClient.getOptions().setThrowExceptionOnFailingStatusCode(false);
+        HtmlPage page = webClient.getPage(webUrl + "faces/outputScript.xhtml");
+        if (page.asText().contains("Development")) {
+            assertTrue(page.asText().contains("Unable to find resource youcantfindme"));
+        }
+    }
+}
diff --git a/test/servlet30/facelets/html/src/test/java/com/sun/faces/test/servlet30/facelets/html/Issue3127IT.java b/test/servlet30/facelets/html/src/test/java/com/sun/faces/test/servlet30/facelets/html/Issue3127IT.java
new file mode 100644
index 0000000..f556428
--- /dev/null
+++ b/test/servlet30/facelets/html/src/test/java/com/sun/faces/test/servlet30/facelets/html/Issue3127IT.java
@@ -0,0 +1,71 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.facelets.html;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import java.util.regex.Pattern;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class Issue3127IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+    
+    @Test
+    public void testEmpty() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/dataTableEmpty.xhtml");
+        assertTrue(Pattern.matches("(.|\\r|\\n)*<td/>(.|\\r|\\n)*<td/>(.|\\r|\\n)*<td/>(.|\\r|\\n)*", page.asXml()));
+    }
+}
diff --git a/test/servlet30/facelets/html/src/test/java/com/sun/faces/test/servlet30/facelets/html/Issue3134IT.java b/test/servlet30/facelets/html/src/test/java/com/sun/faces/test/servlet30/facelets/html/Issue3134IT.java
new file mode 100644
index 0000000..56dce0f
--- /dev/null
+++ b/test/servlet30/facelets/html/src/test/java/com/sun/faces/test/servlet30/facelets/html/Issue3134IT.java
@@ -0,0 +1,76 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.facelets.html;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlElement;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import java.util.regex.Pattern;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class Issue3134IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+    
+    @Test
+    public void testEmpty() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/selectOnePassthrough.xhtml");
+        int index = page.asXml().indexOf("ko");
+        assertTrue(page.asXml().indexOf("<option value=\"aaaaaaaaaa\"", index) != -1);
+        assertTrue(page.asXml().indexOf("<option value=\"bbbbbbbbbb\"", index) != -1);
+        assertTrue(page.asXml().indexOf("<option value=\"cccccccccc\"", index) != -1);
+        assertTrue(page.asXml().indexOf("<option value=\"dddddddddd\"", index) != -1);
+    }
+}
diff --git a/test/servlet30/facelets/html/src/test/java/com/sun/faces/test/servlet30/facelets/html/Issue3143IT.java b/test/servlet30/facelets/html/src/test/java/com/sun/faces/test/servlet30/facelets/html/Issue3143IT.java
new file mode 100644
index 0000000..9c3cb2e
--- /dev/null
+++ b/test/servlet30/facelets/html/src/test/java/com/sun/faces/test/servlet30/facelets/html/Issue3143IT.java
@@ -0,0 +1,70 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.facelets.html;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class Issue3143IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+    
+    @Test
+    public void testSelectOneMenuXSS() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/selectOneMenuXSS.xhtml");
+        assertTrue(page.asXml().indexOf("<script>alert('mytest');</script>") != -1);
+    }
+}
diff --git a/test/servlet30/facelets/html/src/test/java/com/sun/faces/test/servlet30/facelets/html/Issue3144IT.java b/test/servlet30/facelets/html/src/test/java/com/sun/faces/test/servlet30/facelets/html/Issue3144IT.java
new file mode 100644
index 0000000..3d9fead
--- /dev/null
+++ b/test/servlet30/facelets/html/src/test/java/com/sun/faces/test/servlet30/facelets/html/Issue3144IT.java
@@ -0,0 +1,72 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.facelets.html;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class Issue3144IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+    
+    @Test
+    public void testDuplicateId() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/formDuplicateId.xhtml");
+        assertTrue(page.asXml().contains("j_id1:javax.faces.ViewState:0"));
+        assertTrue(page.asXml().contains("j_id1:javax.faces.ViewState:1"));
+        assertTrue(page.asXml().contains("j_id1:javax.faces.ViewState:2"));
+    }
+}
diff --git a/test/servlet30/facelets/html/src/test/java/com/sun/faces/test/servlet30/facelets/html/Issue3168IT.java b/test/servlet30/facelets/html/src/test/java/com/sun/faces/test/servlet30/facelets/html/Issue3168IT.java
new file mode 100644
index 0000000..149125c
--- /dev/null
+++ b/test/servlet30/facelets/html/src/test/java/com/sun/faces/test/servlet30/facelets/html/Issue3168IT.java
@@ -0,0 +1,92 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.facelets.html;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlImage;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class Issue3168IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+    
+    @Test
+    public void testGraphicImageDirectContract() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/graphicImageDirectContract.xhtml");
+        HtmlImage image = (HtmlImage) page.getHtmlElementById("image");
+        assertTrue(image.getSrcAttribute().equals("RES_NOT_FOUND"));
+    }
+    
+    @Test
+    public void testGraphicImageDirectContract2() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/graphicImageDirectContract2.xhtml");
+        HtmlImage image = (HtmlImage) page.getHtmlElementById("image");
+        assertTrue(image.getSrcAttribute().equals("RES_NOT_FOUND"));
+    }
+    
+    @Test
+    public void testOutputStylesheetDirectContract() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/outputStylesheetDirectContract.xhtml");
+        assertTrue(page.asXml().indexOf("RES_NOT_FOUND") != -1);
+    }
+    
+    @Test
+    public void testOutputScriptDirectContract() throws Exception {
+        webClient.getOptions().setThrowExceptionOnFailingStatusCode(false);
+        HtmlPage page = webClient.getPage(webUrl + "faces/outputScriptDirectContract.xhtml");
+        assertTrue(page.asXml().indexOf("RES_NOT_FOUND") != -1);
+    }
+}
diff --git a/test/servlet30/facelets/html/src/test/java/com/sun/faces/test/servlet30/facelets/html/Issue3208IT.java b/test/servlet30/facelets/html/src/test/java/com/sun/faces/test/servlet30/facelets/html/Issue3208IT.java
new file mode 100644
index 0000000..ec72a84
--- /dev/null
+++ b/test/servlet30/facelets/html/src/test/java/com/sun/faces/test/servlet30/facelets/html/Issue3208IT.java
@@ -0,0 +1,72 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.facelets.html;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class Issue3208IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+    
+    @Test
+    public void testGraphicImageDirectContract() throws Exception {
+        webClient.getOptions().setThrowExceptionOnFailingStatusCode(false);
+        HtmlPage page = webClient.getPage(webUrl + "faces/dataTablePassthrough.xhtml");
+        assertEquals(200, page.getWebResponse().getStatusCode());
+        webClient.getOptions().setThrowExceptionOnFailingStatusCode(true);
+    }
+}
diff --git a/test/servlet30/facelets/html/src/test/java/com/sun/faces/test/servlet30/facelets/html/Issue3267IT.java b/test/servlet30/facelets/html/src/test/java/com/sun/faces/test/servlet30/facelets/html/Issue3267IT.java
new file mode 100644
index 0000000..69b528d
--- /dev/null
+++ b/test/servlet30/facelets/html/src/test/java/com/sun/faces/test/servlet30/facelets/html/Issue3267IT.java
@@ -0,0 +1,75 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.facelets.html;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlElement;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.After;
+import static org.junit.Assert.assertFalse;
+import org.junit.Before;
+import org.junit.Test;
+
+public class Issue3267IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+    
+    @Test
+    public void testInputTextSet() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/inputTextSet.xhtml");
+        HtmlElement inputText = page.getHtmlElementById("form:inputText");
+        inputText.type("");
+        HtmlElement submit = page.getHtmlElementById("form:submit");
+        page = submit.click();
+        assertFalse(page.asXml().contains("No tags"));
+    }
+}
diff --git a/test/servlet30/facelets/html/src/test/java/com/sun/faces/test/servlet30/facelets/html/Issue3270IT.java b/test/servlet30/facelets/html/src/test/java/com/sun/faces/test/servlet30/facelets/html/Issue3270IT.java
new file mode 100644
index 0000000..3cb69ef
--- /dev/null
+++ b/test/servlet30/facelets/html/src/test/java/com/sun/faces/test/servlet30/facelets/html/Issue3270IT.java
@@ -0,0 +1,76 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.facelets.html;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class Issue3270IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+    
+    @Test
+    public void testPanelGroupStyle() throws Exception {
+        webClient.getOptions().setThrowExceptionOnFailingStatusCode(false);
+        HtmlPage page = webClient.getPage(webUrl + "faces/panelGroupStyle.xhtml");
+        String pageXml = page.asXml();
+        int i = pageXml.indexOf("style=");
+        assertTrue(-1 != i);
+        i = pageXml.indexOf("style=", i + 6);
+        assertTrue(-1 == i); 
+        webClient.getOptions().setThrowExceptionOnFailingStatusCode(true);
+    }
+}
diff --git a/test/servlet30/facelets/html/src/test/java/com/sun/faces/test/servlet30/facelets/html/Issue3308IT.java b/test/servlet30/facelets/html/src/test/java/com/sun/faces/test/servlet30/facelets/html/Issue3308IT.java
new file mode 100644
index 0000000..cf9e985
--- /dev/null
+++ b/test/servlet30/facelets/html/src/test/java/com/sun/faces/test/servlet30/facelets/html/Issue3308IT.java
@@ -0,0 +1,82 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.facelets.html;
+
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlTable;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.assertTrue;
+
+public class Issue3308IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+    
+    @Test
+    public void testFindChildByTagIdFacet() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/findChildByTagIdFacets.xhtml");
+        HtmlTable table = (HtmlTable) page.getElementById("table");
+        String matchingRegex = 
+                "(?s).*<table.*>\\s+<caption>.*table:captionFacet.*My Caption.*</caption>.*table:colgroupsPanel.*<thead>.*My Header.*</thead>\\s+<tfoot>.*My Footer.*</tfoot>\\s+<tbody>.*";                
+        String tableXml = table.asXml();
+        assertTrue(tableXml.matches(matchingRegex));
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("button");
+        page = button.click();
+        table = (HtmlTable) page.getElementById("table");
+        tableXml = table.asXml();
+        assertTrue(tableXml.matches(matchingRegex));
+        
+    }
+}
diff --git a/test/servlet30/facelets/html/src/test/java/com/sun/faces/test/servlet30/facelets/html/Issue832IT.java b/test/servlet30/facelets/html/src/test/java/com/sun/faces/test/servlet30/facelets/html/Issue832IT.java
new file mode 100644
index 0000000..c3d6b76
--- /dev/null
+++ b/test/servlet30/facelets/html/src/test/java/com/sun/faces/test/servlet30/facelets/html/Issue832IT.java
@@ -0,0 +1,71 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.facelets.html;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import java.util.regex.Pattern;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class Issue832IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+    
+    @Test
+    public void testOutputScriptMissingHead() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/outputScriptMissingHead.xhtml");
+        assertTrue(Pattern.matches("(?s).*form1:messages.*head.*head.*", page.asXml()));
+    }
+}
diff --git a/test/servlet30/facelets/html/src/test/java/com/sun/faces/test/servlet30/facelets/html/Issue904IT.java b/test/servlet30/facelets/html/src/test/java/com/sun/faces/test/servlet30/facelets/html/Issue904IT.java
new file mode 100644
index 0000000..33191f4
--- /dev/null
+++ b/test/servlet30/facelets/html/src/test/java/com/sun/faces/test/servlet30/facelets/html/Issue904IT.java
@@ -0,0 +1,83 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.facelets.html;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlCheckBoxInput;
+import com.gargoylesoftware.htmlunit.html.HtmlImage;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import static junit.framework.Assert.assertNotNull;
+import static junit.framework.Assert.assertTrue;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class Issue904IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+    
+    @Test
+    public void testSelectBooleanCheckboxSubmittedValue() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/selectBooleanCheckboxSubmittedValue.xhtml");
+        HtmlCheckBoxInput box1 = (HtmlCheckBoxInput) page.getHtmlElementById("box1");
+        assertNotNull(box1);
+        page = (HtmlPage) box1.click();
+        HtmlCheckBoxInput box2 = (HtmlCheckBoxInput) page.getHtmlElementById("box2");
+        assertNotNull(box2);
+        HtmlPage newPage = (HtmlPage) box2.click();
+        box1 = (HtmlCheckBoxInput) newPage.getHtmlElementById("box1");
+        assertTrue(box1.isChecked());
+        box2 = (HtmlCheckBoxInput) newPage.getHtmlElementById("box2");
+        assertTrue(box2.isChecked());
+    }
+}
diff --git a/test/servlet30/facelets/html/src/test/java/com/sun/faces/test/servlet30/facelets/html/Spec479IT.java b/test/servlet30/facelets/html/src/test/java/com/sun/faces/test/servlet30/facelets/html/Spec479IT.java
new file mode 100644
index 0000000..e4d63a1
--- /dev/null
+++ b/test/servlet30/facelets/html/src/test/java/com/sun/faces/test/servlet30/facelets/html/Spec479IT.java
@@ -0,0 +1,71 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.facelets.html;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import java.util.regex.Pattern;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class Spec479IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testDataTableCollection() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/dataTableCollection.xhtml");
+        assertTrue(Pattern.matches("(?s).*First0.*Last0.*First1.*Last1.*First2.*Last2.*", page.asXml()));
+    }
+}
diff --git a/test/servlet30/facelets/html/src/test/java/com/sun/faces/test/servlet30/facelets/html/Spec802IT.java b/test/servlet30/facelets/html/src/test/java/com/sun/faces/test/servlet30/facelets/html/Spec802IT.java
new file mode 100644
index 0000000..c53df85
--- /dev/null
+++ b/test/servlet30/facelets/html/src/test/java/com/sun/faces/test/servlet30/facelets/html/Spec802IT.java
@@ -0,0 +1,70 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.facelets.html;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class Spec802IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testInputFile1() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/inputFile1.xhtml");
+        assertTrue(page.asXml().contains("javax.faces.ViewState"));
+    }
+}
diff --git a/test/servlet30/facelets/pom.xml b/test/servlet30/facelets/pom.xml
new file mode 100644
index 0000000..e2c50a1
--- /dev/null
+++ b/test/servlet30/facelets/pom.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.servlet30</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.servlet30.facelets</groupId>
+    <artifactId>pom</artifactId>
+    <packaging>pom</packaging>
+    <name>Mojarra ${project.version} - Test - Servlet 3.0 - Facelets</name>
+    <modules>
+        <module>c</module>
+	<module>core</module>
+	<module>coreEmptyAsNull</module>
+    	<module>html</module>
+        <module>ui</module>
+    </modules>
+</project>
diff --git a/test/servlet30/facelets/ui/nbactions.xml b/test/servlet30/facelets/ui/nbactions.xml
new file mode 100644
index 0000000..1221dd9
--- /dev/null
+++ b/test/servlet30/facelets/ui/nbactions.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<actions>
+        <action>
+            <actionName>debug.test.single</actionName>
+            <goals>
+                <goal>test-compile</goal>
+                <goal>surefire:test</goal>
+            </goals>
+            <properties>
+                <test>${packageClassName}</test>
+                <forkMode>once</forkMode>
+                <maven.surefire.debug>-Xdebug -Xrunjdwp:transport=dt_socket,server=n,address=${jpda.address}</maven.surefire.debug>
+                <jpda.listen>true</jpda.listen>
+                <integration.url>http://localhost:8080/test-servlet30-facelets-ui/</integration.url>
+            </properties>
+        </action>
+        <action>
+            <actionName>test.single</actionName>
+            <goals>
+                <goal>test-compile</goal>
+                <goal>surefire:test</goal>
+            </goals>
+            <properties>
+                <integration.url>http://localhost:8080/test-servlet30-facelets-ui/</integration.url>
+                <jpda.listen>true</jpda.listen>
+                <maven.surefire.debug>-Xdebug -Xrunjdwp:transport=dt_socket,server=n,address=${jpda.address}</maven.surefire.debug>
+                <forkMode>once</forkMode>
+                <test>${packageClassName}</test>
+            </properties>
+        </action>
+    </actions>
diff --git a/test/servlet30/facelets/ui/pom.xml b/test/servlet30/facelets/ui/pom.xml
new file mode 100644
index 0000000..4d3d1ee
--- /dev/null
+++ b/test/servlet30/facelets/ui/pom.xml
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.servlet30.facelets</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <artifactId>ui</artifactId>
+    <packaging>war</packaging>
+    <name>Mojarra ${project.version} - Test - Servlet 3.0 - Facelets - UI</name>
+    <build>
+        <finalName>test-servlet30-facelets-ui</finalName>
+    </build>
+    <properties>
+        <netbeans.hint.deploy.server>gfv3ee6</netbeans.hint.deploy.server>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/test/servlet30/facelets/ui/src/main/java/com/sun/faces/test/servlet30/facelets/ui/DecorateWithNullTemplateBean.java b/test/servlet30/facelets/ui/src/main/java/com/sun/faces/test/servlet30/facelets/ui/DecorateWithNullTemplateBean.java
new file mode 100644
index 0000000..aba85db
--- /dev/null
+++ b/test/servlet30/facelets/ui/src/main/java/com/sun/faces/test/servlet30/facelets/ui/DecorateWithNullTemplateBean.java
@@ -0,0 +1,56 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+
+package com.sun.faces.test.servlet30.facelets.ui;
+
+import java.io.Serializable;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.RequestScoped;
+
+ at ManagedBean
+ at RequestScoped
+public class DecorateWithNullTemplateBean implements Serializable {
+    
+    public String getNullValue() {
+        return null;
+    }
+
+}
diff --git a/test/servlet30/facelets/ui/src/main/java/com/sun/faces/test/servlet30/facelets/ui/Issue2900Bean.java b/test/servlet30/facelets/ui/src/main/java/com/sun/faces/test/servlet30/facelets/ui/Issue2900Bean.java
new file mode 100644
index 0000000..41efd5f
--- /dev/null
+++ b/test/servlet30/facelets/ui/src/main/java/com/sun/faces/test/servlet30/facelets/ui/Issue2900Bean.java
@@ -0,0 +1,63 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.test.servlet30.facelets.ui;
+
+import java.util.Arrays;
+import java.util.List;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.RequestScoped;
+
+ at ManagedBean
+ at RequestScoped
+public class Issue2900Bean {
+    
+    
+    private List<String> cities;
+    
+    public Issue2900Bean() {
+        cities = Arrays.asList("london, sydney, berlin, washington");
+    }
+    
+    public List<String> getCities() {
+        return cities;
+    }
+    
+}
diff --git a/test/servlet30/facelets/ui/src/main/java/com/sun/faces/test/servlet30/facelets/ui/Repeat3ClickBean.java b/test/servlet30/facelets/ui/src/main/java/com/sun/faces/test/servlet30/facelets/ui/Repeat3ClickBean.java
new file mode 100644
index 0000000..84d9e5c
--- /dev/null
+++ b/test/servlet30/facelets/ui/src/main/java/com/sun/faces/test/servlet30/facelets/ui/Repeat3ClickBean.java
@@ -0,0 +1,37 @@
+package com.sun.faces.test.servlet30.facelets.ui;
+
+import java.io.Serializable;
+import java.util.Arrays;
+import java.util.List;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.ViewScoped;
+
+ at ManagedBean
+ at ViewScoped
+public class Repeat3ClickBean implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+    private List<String> list = Arrays.asList(new String[]{"One", "Two", "Three"});
+    private boolean hide = true;
+
+    public List<String> getList() {
+        return list;
+    }
+
+    public void setList(List<String> list) {
+        this.list = list;
+    }
+
+    public boolean isHide() {
+        return hide;
+    }
+
+    public void setHide(boolean hide) {
+        this.hide = hide;
+    }
+
+    public void toggle() {
+        hide = !hide;
+    }
+}
diff --git a/test/servlet30/facelets/ui/src/main/java/com/sun/faces/test/servlet30/facelets/ui/RepeatAbcBean.java b/test/servlet30/facelets/ui/src/main/java/com/sun/faces/test/servlet30/facelets/ui/RepeatAbcBean.java
new file mode 100644
index 0000000..b13aa12
--- /dev/null
+++ b/test/servlet30/facelets/ui/src/main/java/com/sun/faces/test/servlet30/facelets/ui/RepeatAbcBean.java
@@ -0,0 +1,57 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.facelets.ui;
+
+import java.io.Serializable;
+import javax.faces.bean.ManagedBean;
+
+ at ManagedBean(name = "repeatAbcBean")
+public class RepeatAbcBean implements Serializable {
+
+    private String[] strList;
+
+    public String[] getStrList() {
+        strList = new String[10];
+        for (int i = 0; i < 10; i++) {
+            strList[i] = "str" + i;
+        }
+        return strList;
+    }
+}
diff --git a/test/servlet30/facelets/ui/src/main/java/com/sun/faces/test/servlet30/facelets/ui/RepeatAjaxEvaluateBean.java b/test/servlet30/facelets/ui/src/main/java/com/sun/faces/test/servlet30/facelets/ui/RepeatAjaxEvaluateBean.java
new file mode 100644
index 0000000..02a6845
--- /dev/null
+++ b/test/servlet30/facelets/ui/src/main/java/com/sun/faces/test/servlet30/facelets/ui/RepeatAjaxEvaluateBean.java
@@ -0,0 +1,81 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.facelets.ui;
+
+import java.io.Serializable;
+import java.util.Arrays;
+import java.util.Date;
+import java.util.List;
+import javax.faces.application.FacesMessage;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.SessionScoped;
+import javax.faces.context.FacesContext;
+
+ at ManagedBean(name = "repeatAjaxEvaluateBean")
+ at SessionScoped
+public class RepeatAjaxEvaluateBean implements Serializable {
+
+    private final static List<String> list = Arrays.asList("1", "2", "3");
+
+    public List<String> getList1() {
+        if (FacesContext.getCurrentInstance().isPostback()) {
+            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("Evaluated 1"));
+        }
+        return list;
+    }
+
+    public List<String> getList2() {
+        if (FacesContext.getCurrentInstance().isPostback()) {
+            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("Evaluated 2"));
+        }
+        return list;
+    }
+
+    public List<String> getList3() {
+        if (FacesContext.getCurrentInstance().isPostback()) {
+            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("Evaluated 3"));
+        }
+        return list;
+    }
+
+    public String getCurrentDate() {
+        return (new Date()).toString();
+    }
+}
diff --git a/test/servlet30/facelets/ui/src/main/java/com/sun/faces/test/servlet30/facelets/ui/RepeatDynamicConverterBean.java b/test/servlet30/facelets/ui/src/main/java/com/sun/faces/test/servlet30/facelets/ui/RepeatDynamicConverterBean.java
new file mode 100644
index 0000000..7cfa4c9
--- /dev/null
+++ b/test/servlet30/facelets/ui/src/main/java/com/sun/faces/test/servlet30/facelets/ui/RepeatDynamicConverterBean.java
@@ -0,0 +1,118 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.facelets.ui;
+
+import java.io.Serializable;
+import java.util.LinkedList;
+import java.util.List;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.SessionScoped;
+import javax.faces.component.UIComponent;
+import javax.faces.component.ValueHolder;
+import javax.faces.context.FacesContext;
+import javax.faces.convert.Converter;
+import javax.faces.convert.NumberConverter;
+
+ at ManagedBean(name = "repeatDynamicConverterBean")
+ at SessionScoped
+public class RepeatDynamicConverterBean implements Serializable {
+
+    private int counter = 0;
+    private List<RepeatDynamicConverterItem> items = new LinkedList<RepeatDynamicConverterItem>();
+
+    public List<RepeatDynamicConverterItem> getItems() {
+        return items;
+    }
+
+    public void add() {
+        items.add(new RepeatDynamicConverterItem(++counter));
+    }
+
+    public String getString() {
+        StringBuilder sb = new StringBuilder();
+
+        for (RepeatDynamicConverterItem item : items) {
+            sb.append("[");
+
+            String value = "null";
+            if (item.getValue() != null) {
+                value = item.getValue().toString();
+            }
+
+            sb.append(value);
+            sb.append("] ");
+        }
+
+        return sb.toString();
+    }
+
+    UIComponent findRepeatDynamicConverterItemValue(UIComponent root) {
+        if ("itemValue".equals(root.getId())) {
+            return root;
+        }
+
+        for (UIComponent child : root.getChildren()) {
+            UIComponent ret = findRepeatDynamicConverterItemValue(child);
+            if (ret != null) {
+                return ret;
+            }
+        }
+
+        return null;
+    }
+
+    public void addConverters() {
+        FacesContext ctx = FacesContext.getCurrentInstance();
+
+        if (!ctx.isPostback()) {
+            UIComponent component = findRepeatDynamicConverterItemValue(ctx.getViewRoot());
+            if (component instanceof ValueHolder) {
+                ValueHolder parentValueHolder = (ValueHolder) component;
+                Converter parentConverter = parentValueHolder.getConverter();
+                if (parentConverter == null) {
+                    NumberConverter numberConverter = new NumberConverter();
+                    numberConverter.setMaxFractionDigits(2);
+                    numberConverter.setPattern("##.00");
+                    parentValueHolder.setConverter(numberConverter);
+                }
+            }
+        }
+    }
+}
diff --git a/test/servlet30/facelets/ui/src/main/java/com/sun/faces/test/servlet30/facelets/ui/RepeatDynamicConverterItem.java b/test/servlet30/facelets/ui/src/main/java/com/sun/faces/test/servlet30/facelets/ui/RepeatDynamicConverterItem.java
new file mode 100644
index 0000000..e76d1af
--- /dev/null
+++ b/test/servlet30/facelets/ui/src/main/java/com/sun/faces/test/servlet30/facelets/ui/RepeatDynamicConverterItem.java
@@ -0,0 +1,69 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.facelets.ui;
+
+import java.io.Serializable;
+
+public class RepeatDynamicConverterItem implements Serializable {
+
+    private Number value = null;
+    private int number;
+
+    public RepeatDynamicConverterItem(int number) {
+        this.number = number;
+        this.value = Integer.valueOf(number);
+    }
+
+    public Number getValue() {
+        return value;
+    }
+
+    public void setValue(Number value) {
+        this.value = value;
+    }
+
+    public int getNumber() {
+        return number;
+    }
+
+    public void setNumber(int number) {
+        this.number = number;
+    }
+}
diff --git a/test/servlet30/facelets/ui/src/main/java/com/sun/faces/test/servlet30/facelets/ui/RepeatOffsetBean.java b/test/servlet30/facelets/ui/src/main/java/com/sun/faces/test/servlet30/facelets/ui/RepeatOffsetBean.java
new file mode 100644
index 0000000..404954d
--- /dev/null
+++ b/test/servlet30/facelets/ui/src/main/java/com/sun/faces/test/servlet30/facelets/ui/RepeatOffsetBean.java
@@ -0,0 +1,79 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.facelets.ui;
+
+import java.io.Serializable;
+import javax.faces.bean.ManagedBean;
+
+ at ManagedBean(name = "repeatOffsetBean")
+public class RepeatOffsetBean implements Serializable {
+
+    private String[] strList;
+    private int offset = 2;
+    private int step = 2;
+
+    public String[] getStrList() {
+        strList = new String[10];
+        for (int i = 0; i < 10; i++) {
+            strList[i] = "str" + i;
+        }
+        return strList;
+    }
+
+    public int getOffset() {
+        return offset;
+    }
+
+    public void setOffset(int offset) {
+        this.offset = offset;
+    }
+
+    public int getStep() {
+        return step;
+    }
+
+    public void setStep(int step) {
+        this.step = step;
+    }
+
+    public void setStrList(String[] strList) {
+        this.strList = strList;
+    }
+}
diff --git a/test/servlet30/facelets/ui/src/main/java/com/sun/faces/test/servlet30/facelets/ui/RepeatPropertyActionListenerBean.java b/test/servlet30/facelets/ui/src/main/java/com/sun/faces/test/servlet30/facelets/ui/RepeatPropertyActionListenerBean.java
new file mode 100644
index 0000000..e7bcda7
--- /dev/null
+++ b/test/servlet30/facelets/ui/src/main/java/com/sun/faces/test/servlet30/facelets/ui/RepeatPropertyActionListenerBean.java
@@ -0,0 +1,64 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.facelets.ui;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.RequestScoped;
+
+ at ManagedBean(name = "repeatPropertyActionListenerBean")
+ at RequestScoped
+public class RepeatPropertyActionListenerBean implements Serializable {
+
+    private List<RepeatPropertyActionListenerItem> items;
+
+    public RepeatPropertyActionListenerBean() {
+        items = new ArrayList<RepeatPropertyActionListenerItem>();
+        items.add(new RepeatPropertyActionListenerItem("0"));
+        items.add(new RepeatPropertyActionListenerItem("1"));
+        items.add(new RepeatPropertyActionListenerItem("2"));
+    }
+
+    public List<RepeatPropertyActionListenerItem> getItems() {
+        return items;
+    }
+}
diff --git a/test/servlet30/facelets/ui/src/main/java/com/sun/faces/test/servlet30/facelets/ui/RepeatPropertyActionListenerItem.java b/test/servlet30/facelets/ui/src/main/java/com/sun/faces/test/servlet30/facelets/ui/RepeatPropertyActionListenerItem.java
new file mode 100644
index 0000000..5fca5e7
--- /dev/null
+++ b/test/servlet30/facelets/ui/src/main/java/com/sun/faces/test/servlet30/facelets/ui/RepeatPropertyActionListenerItem.java
@@ -0,0 +1,24 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package com.sun.faces.test.servlet30.facelets.ui;
+
+public class RepeatPropertyActionListenerItem {
+
+    private String label;
+
+    public RepeatPropertyActionListenerItem(String label) {
+        super();
+        this.label = label;
+    }
+
+    public String getLabel() {
+        return label;
+    }
+
+    public void setLabel(String label) {
+        this.label = label;
+    }
+}
diff --git a/test/servlet30/facelets/ui/src/main/java/com/sun/faces/test/servlet30/facelets/ui/RepeatRemovedBean.java b/test/servlet30/facelets/ui/src/main/java/com/sun/faces/test/servlet30/facelets/ui/RepeatRemovedBean.java
new file mode 100644
index 0000000..f1b90f4
--- /dev/null
+++ b/test/servlet30/facelets/ui/src/main/java/com/sun/faces/test/servlet30/facelets/ui/RepeatRemovedBean.java
@@ -0,0 +1,63 @@
+package com.sun.faces.test.servlet30.facelets.ui;
+
+import java.io.Serializable;
+import java.util.AbstractList;
+import java.util.ArrayList;
+import java.util.List;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.RequestScoped;
+
+ at RequestScoped
+ at ManagedBean(name = "repeatRemovedBean")
+public class RepeatRemovedBean implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+    List<Integer> ints = new ArrayList<Integer>();
+    ValueHolderList vl = new ValueHolderList();
+
+    public RepeatRemovedBean() {
+        ints.add(1);
+    }
+
+    public ValueHolderList getList() {
+        return vl;
+    }
+
+    public void removeInt(int index) {
+        ints.remove(index);
+    }
+
+    public class ValueHolder {
+
+        int index;
+
+        public ValueHolder(int index) {
+            super();
+            this.index = index;
+        }
+
+        public int getValue() {
+            return ints.get(index);
+        }
+
+        public void setValue(int value) {
+            ints.set(index, value);
+        }
+    }
+
+    public class ValueHolderList extends AbstractList<ValueHolder> {
+
+        public ValueHolderList() {
+            super();
+        }
+
+        public ValueHolder get(int index) {
+            return new ValueHolder(index);
+        }
+
+        @Override
+        public int size() {
+            return ints.size();
+        }
+    }
+}
diff --git a/test/servlet30/facelets/ui/src/main/java/com/sun/faces/test/servlet30/facelets/ui/RepeatResetNullBean.java b/test/servlet30/facelets/ui/src/main/java/com/sun/faces/test/servlet30/facelets/ui/RepeatResetNullBean.java
new file mode 100644
index 0000000..2304ec7
--- /dev/null
+++ b/test/servlet30/facelets/ui/src/main/java/com/sun/faces/test/servlet30/facelets/ui/RepeatResetNullBean.java
@@ -0,0 +1,85 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.facelets.ui;
+
+import java.io.Serializable;
+import java.util.Arrays;
+import java.util.List;
+import javax.faces.bean.ManagedBean;
+
+ at ManagedBean(name = "repeatResetNullBean")
+public class RepeatResetNullBean implements Serializable {
+    private List<TestHolder> testList = Arrays.asList(new TestHolder("myString"));
+    private TestHolder element = new TestHolder("myStringElement");
+    public List<TestHolder> getTestList() {
+        return testList;
+    }
+    public TestHolder getElement() {
+        return element;
+    }
+    public void setElement(TestHolder element) {
+        this.element = element;
+    }
+    public void setTestList(List<TestHolder> testList) {
+        this.testList = testList;
+    }
+    public boolean isElementNullSet() {
+        return element.getValue() == null;
+    }
+    public boolean isNullOrEmptySet() {
+        return (testList.get(0).getValue() == null) ||
+            (testList.get(0).getValue().length() == 0);
+    }
+
+    public void action(){}
+    
+    public class TestHolder implements Serializable{
+        private String value;
+        public TestHolder(String value) {
+            this.value = value;
+        }
+        public String getValue() {
+            return value;
+        }
+        public void setValue(String value) {
+            this.value = value;
+        }
+    }
+}
diff --git a/test/servlet30/facelets/ui/src/main/java/com/sun/faces/test/servlet30/facelets/ui/RepeatSizeBean.java b/test/servlet30/facelets/ui/src/main/java/com/sun/faces/test/servlet30/facelets/ui/RepeatSizeBean.java
new file mode 100644
index 0000000..a8ceb51
--- /dev/null
+++ b/test/servlet30/facelets/ui/src/main/java/com/sun/faces/test/servlet30/facelets/ui/RepeatSizeBean.java
@@ -0,0 +1,71 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.facelets.ui;
+
+import java.io.Serializable;
+import javax.faces.bean.ManagedBean;
+
+ at ManagedBean(name = "repeatSizeBean")
+public class RepeatSizeBean implements Serializable {
+
+    public int size = 5;
+
+    private String[] strList;
+
+    public String[] getStrList() {
+        strList = new String[10];
+        for (int i = 0; i < 10; i++) {
+            strList[i] = "str" + i;
+        }
+        return strList;
+    }
+
+    public void setStrList(String[] strList) {
+        this.strList = strList;
+    }
+
+    public int getSize() {
+        return size;
+    }
+
+    public void setSize(int size) {
+        this.size = size;
+    }
+}
diff --git a/test/servlet30/facelets/ui/src/main/java/com/sun/faces/test/servlet30/facelets/ui/RepeatTooManyBean.java b/test/servlet30/facelets/ui/src/main/java/com/sun/faces/test/servlet30/facelets/ui/RepeatTooManyBean.java
new file mode 100644
index 0000000..b704c75
--- /dev/null
+++ b/test/servlet30/facelets/ui/src/main/java/com/sun/faces/test/servlet30/facelets/ui/RepeatTooManyBean.java
@@ -0,0 +1,58 @@
+/*
+ * To change this template, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package com.sun.faces.test.servlet30.facelets.ui;
+
+import com.sun.faces.component.visit.FullVisitContext;
+import java.util.ArrayList;
+import java.util.List;
+import javax.el.ValueExpression;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.RequestScoped;
+import javax.faces.component.UIComponent;
+import javax.faces.component.ValueHolder;
+import javax.faces.component.visit.VisitCallback;
+import javax.faces.component.visit.VisitContext;
+import javax.faces.component.visit.VisitResult;
+import javax.faces.context.FacesContext;
+
+ at ManagedBean(name = "repeatTooManyBean")
+ at RequestScoped
+public class RepeatTooManyBean {
+
+    private List<String> _list;
+    private StringBuilder iterations = new StringBuilder();
+
+    public RepeatTooManyBean() {
+        _list = new ArrayList();
+        for (int i = 1; i <= 10; i++) {
+            _list.add(String.valueOf(i));
+        }
+    }
+
+    public String getIterations() {
+        return iterations.toString();
+    }
+
+    public List<String> getList() {
+        return _list;
+    }
+
+    public void visitChildren() {
+        final FacesContext context = FacesContext.getCurrentInstance();
+        context.getViewRoot().visitTree(new FullVisitContext(context), new VisitCallback() {
+            @Override
+            public VisitResult visit(VisitContext visitContext, UIComponent target) {
+                if (target instanceof ValueHolder
+                        && target.getId().equals("out")) {
+                    ValueExpression expr = target.getValueExpression("value");
+                    Object value = expr.getValue(context.getELContext());
+                    iterations.append(value);
+                    return VisitResult.REJECT;
+                }
+                return VisitResult.ACCEPT;
+            }
+        });
+    }
+}
diff --git a/test/servlet30/facelets/ui/src/main/java/com/sun/faces/test/servlet30/facelets/ui/RepeatUseLocalValueBean.java b/test/servlet30/facelets/ui/src/main/java/com/sun/faces/test/servlet30/facelets/ui/RepeatUseLocalValueBean.java
new file mode 100644
index 0000000..35aaa13
--- /dev/null
+++ b/test/servlet30/facelets/ui/src/main/java/com/sun/faces/test/servlet30/facelets/ui/RepeatUseLocalValueBean.java
@@ -0,0 +1,60 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.facelets.ui;
+
+import java.io.Serializable;
+import static java.util.Arrays.asList;
+import java.util.List;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.ViewScoped;
+
+ at ManagedBean(name = "repeatUseLocalValueBean")
+ at ViewScoped
+public class RepeatUseLocalValueBean implements Serializable {
+
+    List<Object> objects = asList(new RepeatUseLocalValueTypeA(), new RepeatUseLocalValueTypeB());
+
+    public List<Object> getObjects() {
+        return objects;
+    }
+
+    public void action() {
+    }
+}
diff --git a/test/servlet30/facelets/ui/src/main/java/com/sun/faces/test/servlet30/facelets/ui/RepeatUseLocalValueTypeA.java b/test/servlet30/facelets/ui/src/main/java/com/sun/faces/test/servlet30/facelets/ui/RepeatUseLocalValueTypeA.java
new file mode 100644
index 0000000..cb34b66
--- /dev/null
+++ b/test/servlet30/facelets/ui/src/main/java/com/sun/faces/test/servlet30/facelets/ui/RepeatUseLocalValueTypeA.java
@@ -0,0 +1,57 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.facelets.ui;
+
+public class RepeatUseLocalValueTypeA {
+
+    private String a = "This is A";
+
+    public void setA(String a) {
+        this.a = a;
+    }
+
+    public String getA() {
+        return a;
+    }
+    
+    public String getName() {
+        return getClass().getName();
+    }
+}
diff --git a/test/servlet30/facelets/ui/src/main/java/com/sun/faces/test/servlet30/facelets/ui/RepeatUseLocalValueTypeB.java b/test/servlet30/facelets/ui/src/main/java/com/sun/faces/test/servlet30/facelets/ui/RepeatUseLocalValueTypeB.java
new file mode 100644
index 0000000..93f4fe2
--- /dev/null
+++ b/test/servlet30/facelets/ui/src/main/java/com/sun/faces/test/servlet30/facelets/ui/RepeatUseLocalValueTypeB.java
@@ -0,0 +1,57 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.facelets.ui;
+
+public class RepeatUseLocalValueTypeB {
+
+    private String b = "This is B";
+
+    public void setB(String b) {
+        this.b = b;
+    }
+
+    public String getB() {
+        return b;
+    }
+    
+    public String getName() {
+        return getClass().getName();
+    }
+}
diff --git a/test/servlet30/facelets/ui/src/main/java/com/sun/faces/test/servlet30/facelets/ui/RepeatValueBean.java b/test/servlet30/facelets/ui/src/main/java/com/sun/faces/test/servlet30/facelets/ui/RepeatValueBean.java
new file mode 100644
index 0000000..a7a358b
--- /dev/null
+++ b/test/servlet30/facelets/ui/src/main/java/com/sun/faces/test/servlet30/facelets/ui/RepeatValueBean.java
@@ -0,0 +1,70 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.facelets.ui;
+
+import java.io.Serializable;
+import javax.faces.bean.ManagedBean;
+
+ at ManagedBean(name = "repeatValueBean")
+public class RepeatValueBean implements Serializable {
+
+    private String[] strList;
+    public int size = 5;
+
+    public String[] getStrList() {
+        strList = new String[10];
+        for (int i = 0; i < 10; i++) {
+            strList[i] = "str" + i;
+        }
+        return strList;
+    }
+
+    public void setStrList(String[] strList) {
+        this.strList = strList;
+    }
+
+    public int getSize() {
+        return size;
+    }
+
+    public void setSize(int size) {
+        this.size = size;
+    }
+}
diff --git a/test/servlet30/facelets/ui/src/main/webapp/WEB-INF/glassfish-web.xml b/test/servlet30/facelets/ui/src/main/webapp/WEB-INF/glassfish-web.xml
new file mode 100644
index 0000000..623d6d8
--- /dev/null
+++ b/test/servlet30/facelets/ui/src/main/webapp/WEB-INF/glassfish-web.xml
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<glassfish-web-app error-url="">
+  <context-root>/test-servlet30-facelets-ui</context-root>
+  <class-loader delegate="true"/>
+  <jsp-config>
+    <property name="keepgenerated" value="true">
+      <description>Keep a copy of the generated servlet class' java code.</description>
+    </property>
+  </jsp-config>
+</glassfish-web-app>
diff --git a/test/servlet30/facelets/ui/src/main/webapp/WEB-INF/web.xml b/test/servlet30/facelets/ui/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..086b156
--- /dev/null
+++ b/test/servlet30/facelets/ui/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,79 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" 
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>${webapp.projectStage}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
+        <param-value>${webapp.partialStateSaving}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>${webapp.stateSavingMethod}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL</param-name>
+        <param-value>true</param-value>
+    </context-param>
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <session-config>
+        <session-timeout>30</session-timeout>
+    </session-config>
+    <welcome-file-list>
+        <welcome-file>faces/index.xhtml</welcome-file>
+    </welcome-file-list>
+</web-app>
diff --git a/test/servlet30/facelets/ui/src/main/webapp/compositionBadPath.xhtml b/test/servlet30/facelets/ui/src/main/webapp/compositionBadPath.xhtml
new file mode 100644
index 0000000..58948e9
--- /dev/null
+++ b/test/servlet30/facelets/ui/src/main/webapp/compositionBadPath.xhtml
@@ -0,0 +1,56 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head></h:head>
+    <h:body>
+        <ui:composition template="foobar">
+
+        </ui:composition>
+    </h:body>
+</html>
diff --git a/test/servlet30/facelets/ui/src/main/webapp/compositionDirectContract.xhtml b/test/servlet30/facelets/ui/src/main/webapp/compositionDirectContract.xhtml
new file mode 100644
index 0000000..cac1fc0
--- /dev/null
+++ b/test/servlet30/facelets/ui/src/main/webapp/compositionDirectContract.xhtml
@@ -0,0 +1,15 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://xmlns.jcp.org/jsf/html"
+      xmlns:ui="http://xmlns.jcp.org/jsf/facelets">
+    <h:head>
+        <title>Facelet Title</title>
+    </h:head>
+    <h:body>
+        <ui:composition template="/contracts/acontracts/template.xhtml">
+            
+        </ui:composition>
+    </h:body>
+</html>
+
diff --git a/test/servlet30/facelets/ui/src/main/webapp/compositionEmptyPath.xhtml b/test/servlet30/facelets/ui/src/main/webapp/compositionEmptyPath.xhtml
new file mode 100644
index 0000000..de2aecd
--- /dev/null
+++ b/test/servlet30/facelets/ui/src/main/webapp/compositionEmptyPath.xhtml
@@ -0,0 +1,57 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head></h:head>
+    <h:body>
+        <ui:composition template=" ">
+
+        </ui:composition>
+    </h:body>
+</html>
diff --git a/test/servlet30/facelets/ui/src/main/webapp/compositionWithNullTemplate.xhtml b/test/servlet30/facelets/ui/src/main/webapp/compositionWithNullTemplate.xhtml
new file mode 100644
index 0000000..2d54caf
--- /dev/null
+++ b/test/servlet30/facelets/ui/src/main/webapp/compositionWithNullTemplate.xhtml
@@ -0,0 +1,60 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:h="http://xmlns.jcp.org/jsf/html"
+      xmlns:ui="http://xmlns.jcp.org/jsf/facelets">
+    <h:head>
+    </h:head>
+    <h:body>
+        <h:form id="form" prependId="false">
+            
+            <ui:composition template="#{decorateWithNullTemplateBean.nullValue}">
+            </ui:composition>
+            
+        </h:form>
+    </h:body>
+</html>
diff --git a/test/servlet30/facelets/ui/src/main/webapp/debugHasId.xhtml b/test/servlet30/facelets/ui/src/main/webapp/debugHasId.xhtml
new file mode 100644
index 0000000..3d3bde0
--- /dev/null
+++ b/test/servlet30/facelets/ui/src/main/webapp/debugHasId.xhtml
@@ -0,0 +1,51 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+    <h:head>
+    </h:head>
+    <h:body>
+       <ui:debug id="myid"/>
+    </h:body>
+</html>
diff --git a/test/servlet30/facelets/ui/src/main/webapp/debugNotRendered.xhtml b/test/servlet30/facelets/ui/src/main/webapp/debugNotRendered.xhtml
new file mode 100644
index 0000000..0ffd4ed
--- /dev/null
+++ b/test/servlet30/facelets/ui/src/main/webapp/debugNotRendered.xhtml
@@ -0,0 +1,51 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+    <h:head>
+    </h:head>
+    <h:body>
+       <ui:debug rendered="false"/>
+    </h:body>
+</html>
diff --git a/test/servlet30/facelets/ui/src/main/webapp/debugQuestionMark.xhtml b/test/servlet30/facelets/ui/src/main/webapp/debugQuestionMark.xhtml
new file mode 100644
index 0000000..613cd65
--- /dev/null
+++ b/test/servlet30/facelets/ui/src/main/webapp/debugQuestionMark.xhtml
@@ -0,0 +1,53 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://xmlns.jcp.org/jsf/facelets">
+    <head><title>JAVASERVERFACES-2074</title></head>
+    <body>
+        <ui:debug/>
+    </body>
+</html>
diff --git a/test/servlet30/facelets/ui/src/main/webapp/debugRendered.xhtml b/test/servlet30/facelets/ui/src/main/webapp/debugRendered.xhtml
new file mode 100644
index 0000000..ebf065f
--- /dev/null
+++ b/test/servlet30/facelets/ui/src/main/webapp/debugRendered.xhtml
@@ -0,0 +1,51 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+    <h:head>
+    </h:head>
+    <h:body>
+        <ui:debug/>
+    </h:body>
+</html>
diff --git a/test/servlet30/facelets/ui/src/main/webapp/decorateBadPath.xhtml b/test/servlet30/facelets/ui/src/main/webapp/decorateBadPath.xhtml
new file mode 100644
index 0000000..e2a69db
--- /dev/null
+++ b/test/servlet30/facelets/ui/src/main/webapp/decorateBadPath.xhtml
@@ -0,0 +1,57 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head></h:head>
+    <h:body>
+        <ui:decorate template="foobar">
+
+        </ui:decorate>
+    </h:body>
+</html>
diff --git a/test/servlet30/facelets/ui/src/main/webapp/decorateDirectContract.xhtml b/test/servlet30/facelets/ui/src/main/webapp/decorateDirectContract.xhtml
new file mode 100644
index 0000000..e608778
--- /dev/null
+++ b/test/servlet30/facelets/ui/src/main/webapp/decorateDirectContract.xhtml
@@ -0,0 +1,14 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://xmlns.jcp.org/jsf/html"
+      xmlns:ui="http://xmlns.jcp.org/jsf/facelets">
+    <h:head>
+        <title>Facelet Title</title>
+    </h:head>
+    <h:body>
+        <ui:decorate template="/contracts/acontracts/template.xhtml">
+            
+        </ui:decorate>
+    </h:body>
+</html>
diff --git a/test/servlet30/facelets/ui/src/main/webapp/decorateEmptyPath.xhtml b/test/servlet30/facelets/ui/src/main/webapp/decorateEmptyPath.xhtml
new file mode 100644
index 0000000..5eba091
--- /dev/null
+++ b/test/servlet30/facelets/ui/src/main/webapp/decorateEmptyPath.xhtml
@@ -0,0 +1,57 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head></h:head>
+    <h:body>
+        <ui:decorate template="">
+
+        </ui:decorate>
+    </h:body>
+</html>
diff --git a/test/servlet30/facelets/ui/src/main/webapp/decorateWithNullTemplate.xhtml b/test/servlet30/facelets/ui/src/main/webapp/decorateWithNullTemplate.xhtml
new file mode 100644
index 0000000..657de3f
--- /dev/null
+++ b/test/servlet30/facelets/ui/src/main/webapp/decorateWithNullTemplate.xhtml
@@ -0,0 +1,60 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:h="http://xmlns.jcp.org/jsf/html"
+      xmlns:ui="http://xmlns.jcp.org/jsf/facelets">
+    <h:head>
+    </h:head>
+    <h:body>
+        <h:form id="form" prependId="false">
+            
+            <ui:decorate template="#{decorateWithNullTemplateBean.nullValue}">
+            </ui:decorate>
+            
+        </h:form>
+    </h:body>
+</html>
diff --git a/test/servlet30/facelets/ui/src/main/webapp/includeDirectContract.xhtml b/test/servlet30/facelets/ui/src/main/webapp/includeDirectContract.xhtml
new file mode 100644
index 0000000..af81ce1
--- /dev/null
+++ b/test/servlet30/facelets/ui/src/main/webapp/includeDirectContract.xhtml
@@ -0,0 +1,12 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://xmlns.jcp.org/jsf/html"
+      xmlns:ui="http://xmlns.jcp.org/jsf/facelets">
+    <h:head>
+        <title>Facelet Title</title>
+    </h:head>
+    <h:body>
+        <ui:include src="/contracts/acontracts/template.xhtml"/>
+    </h:body>
+</html>
diff --git a/test/servlet30/facelets/ui/src/main/webapp/index.xhtml b/test/servlet30/facelets/ui/src/main/webapp/index.xhtml
new file mode 100644
index 0000000..f84a7f7
--- /dev/null
+++ b/test/servlet30/facelets/ui/src/main/webapp/index.xhtml
@@ -0,0 +1,53 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+    </h:head>
+    <h:body>
+        <a href="#{facesContext.externalContext.requestContextPath}/faces/repeatRemoved.xhtml">Issue #2938 - Repeat, remove row</a> <br/>
+    </h:body>
+</html>
diff --git a/test/servlet30/facelets/ui/src/main/webapp/issue2767.xhtml b/test/servlet30/facelets/ui/src/main/webapp/issue2767.xhtml
new file mode 100644
index 0000000..b226020
--- /dev/null
+++ b/test/servlet30/facelets/ui/src/main/webapp/issue2767.xhtml
@@ -0,0 +1,64 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://xmlns.jcp.org/jsf/html"
+      xmlns:f="http://xmlns.jcp.org/jsf/core"
+      xmlns:ui="http://xmlns.jcp.org/jsf/facelets">
+    <head>
+        <title>Repeat with value expressions</title>
+    </head>
+    <body>
+        <ui:repeat value="#{repeatValueBean.strList}" size="5" var="item">
+            Literal
+            <h:outputText value="#{item}" />
+        </ui:repeat>
+        <br/>
+        <ui:repeat value="#{repeatValueBean.strList}" size="#{repeatValueBean.size}" var="item">
+            VE
+            <h:outputText value="#{item}" />
+        </ui:repeat>
+    </body>
+</html>
diff --git a/test/servlet30/facelets/ui/src/main/webapp/issue2900.xhtml b/test/servlet30/facelets/ui/src/main/webapp/issue2900.xhtml
new file mode 100644
index 0000000..b7f620e
--- /dev/null
+++ b/test/servlet30/facelets/ui/src/main/webapp/issue2900.xhtml
@@ -0,0 +1,57 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://xmlns.jcp.org/jsf/html"
+      xmlns:ui="http://xmlns.jcp.org/jsf/facelets">
+    <h:head>
+        <title>Facelet Title</title>
+    </h:head>
+    <h:body>
+        <ul>
+            <ui:repeat value="#{issue2900Bean.cities}" var="city">
+                <li>#{city}</li>
+            </ui:repeat>
+        </ul>
+    </h:body>
+</html>
\ No newline at end of file
diff --git a/test/servlet30/facelets/ui/src/main/webapp/remove.xhtml b/test/servlet30/facelets/ui/src/main/webapp/remove.xhtml
new file mode 100644
index 0000000..5c444e9
--- /dev/null
+++ b/test/servlet30/facelets/ui/src/main/webapp/remove.xhtml
@@ -0,0 +1,55 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://xmlns.jcp.org/jsf/facelets">
+
+    <p>Lorem</p>
+    
+    <ui:remove><p>ipsum</p></ui:remove>
+    
+    <p>dolor sit</p>
+    
+</html>
diff --git a/test/servlet30/facelets/ui/src/main/webapp/repeat3click.xhtml b/test/servlet30/facelets/ui/src/main/webapp/repeat3click.xhtml
new file mode 100644
index 0000000..ee90a53
--- /dev/null
+++ b/test/servlet30/facelets/ui/src/main/webapp/repeat3click.xhtml
@@ -0,0 +1,31 @@
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:f="http://xmlns.jcp.org/jsf/core"
+      xmlns:h="http://xmlns.jcp.org/jsf/html"
+      xmlns:ui="http://xmlns.jcp.org/jsf/facelets">
+
+    <h:head>
+    </h:head>
+    <h:body>
+        <h:form id="form">
+            <h:panelGroup layout="block" rendered="#{repeat3ClickBean.hide}">
+                <ui:repeat id="repeat1" var="a" value="#{repeat3ClickBean.list}" varStatus="s">
+                    <h:outputText id="a" value="#{s.index} - #{a} - odd" />
+                    <h:selectOneMenu id="b"></h:selectOneMenu>
+                    <br />
+                </ui:repeat>
+            </h:panelGroup>
+            <h:panelGroup layout="block" rendered="#{not repeat3ClickBean.hide}">
+                <ui:repeat id="repeat2" var="a" value="#{repeat3ClickBean.list}" varStatus="s">
+                    <h:outputText id="a" value="#{s.index} - #{a} - even" />
+                    <h:selectOneMenu id="b"></h:selectOneMenu>
+                    <br />
+                </ui:repeat>
+            </h:panelGroup>
+            <h:commandLink id="submit" value="refresh" actionListener="#{repeat3ClickBean.toggle}">
+                <f:ajax execute="@form" render="@form"></f:ajax>
+            </h:commandLink>
+        </h:form>
+    </h:body>
+</html>
diff --git a/test/servlet30/facelets/ui/src/main/webapp/repeatAbc.xhtml b/test/servlet30/facelets/ui/src/main/webapp/repeatAbc.xhtml
new file mode 100644
index 0000000..f3eee7c
--- /dev/null
+++ b/test/servlet30/facelets/ui/src/main/webapp/repeatAbc.xhtml
@@ -0,0 +1,13 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html" xmlns:ui="http://java.sun.com/jsf/facelets">
+    <h:head/>
+    <h:body>
+        <h:form id="form">
+            <h:inputText id="inputOut" value="abc"/><br/><br/>
+            <ui:repeat value="#{repeatAbcBean.strList}" var="item">
+                    <h:inputText id="inputIn" value="abc"/>
+            </ui:repeat>
+        </h:form>
+    </h:body>
+</html>
diff --git a/test/servlet30/facelets/ui/src/main/webapp/repeatAjaxEvaluate.xhtml b/test/servlet30/facelets/ui/src/main/webapp/repeatAjaxEvaluate.xhtml
new file mode 100644
index 0000000..072f646
--- /dev/null
+++ b/test/servlet30/facelets/ui/src/main/webapp/repeatAjaxEvaluate.xhtml
@@ -0,0 +1,32 @@
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://xmlns.jcp.org/jsf/html"
+      xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
+      xmlns:f="http://xmlns.jcp.org/jsf/core">
+    <h:head/>
+    <h:body>
+        <h:form id="form">
+            <h:panelGroup id="date" layout="block">
+                <h:outputText value="#{repeatAjaxEvaluateBean.currentDate}"/>
+            </h:panelGroup>
+
+            <h:commandButton id="submit" value="Ajax!">
+                <f:ajax execute="@this" render="date,messages"/>
+            </h:commandButton>
+
+            <!-- 'value' attr gets evaluated per each ajax call -->
+            <ui:repeat value="#{repeatAjaxEvaluateBean.list1}" var="obj" >
+                <h:outputText value="#{obj}"/>
+            </ui:repeat>
+
+            <!-- no evaluation happens here -->
+            <h:dataTable value="#{repeatAjaxEvaluateBean.list2}" var="obj">
+                <h:column>
+                    <h:outputText value="#{obj}"/>
+                </h:column>
+            </h:dataTable>
+            <h:panelGroup id="messages">
+                <h:messages/>
+            </h:panelGroup>
+        </h:form>
+    </h:body>
+</html>
diff --git a/test/servlet30/facelets/ui/src/main/webapp/repeatDynamicConverter.xhtml b/test/servlet30/facelets/ui/src/main/webapp/repeatDynamicConverter.xhtml
new file mode 100644
index 0000000..f6263b6
--- /dev/null
+++ b/test/servlet30/facelets/ui/src/main/webapp/repeatDynamicConverter.xhtml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:h="http://java.sun.com/jsf/html">
+
+    <f:metadata>
+        <f:event type="preRenderView" listener="#{repeatDynamicConverterBean.addConverters}"/>
+    </f:metadata>
+    <h1>Valued items</h1>
+    <h:form id="form">
+        <h:messages />
+        <ul>
+            <ui:repeat value="#{repeatDynamicConverterBean.items}" var="i">
+                <li>Item #{i.number}
+                    <h:inputText id="itemValue" value="#{i.value}"/>
+                </li>
+            </ui:repeat>
+        </ul>
+        <div>
+            <h:commandButton id="button" value="Add" action="#{repeatDynamicConverterBean.add}" />
+        </div>
+        <h:outputText value="#{repeatDynamicConverterBean.string}" />
+    </h:form>
+</html>
diff --git a/test/servlet30/facelets/ui/src/main/webapp/repeatOffset.xhtml b/test/servlet30/facelets/ui/src/main/webapp/repeatOffset.xhtml
new file mode 100644
index 0000000..23f6bda
--- /dev/null
+++ b/test/servlet30/facelets/ui/src/main/webapp/repeatOffset.xhtml
@@ -0,0 +1,62 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+    <head>
+        <title>Repeat Offset</title>
+    </head>
+    <body>
+        <ui:repeat value="#{repeatOffsetBean.strList}" offset="#{repeatOffsetBean.offset}" var="item">
+            Offset VE:<h:outputText value="#{item}" />
+        </ui:repeat>
+        <br/>
+        <ui:repeat value="#{repeatOffsetBean.strList}" offset="2" var="item">
+            Offset Literal:<h:outputText value="#{item}" />
+        </ui:repeat>
+    </body>
+</html>
diff --git a/test/servlet30/facelets/ui/src/main/webapp/repeatPropertyActionListener.xhtml b/test/servlet30/facelets/ui/src/main/webapp/repeatPropertyActionListener.xhtml
new file mode 100644
index 0000000..819f23e
--- /dev/null
+++ b/test/servlet30/facelets/ui/src/main/webapp/repeatPropertyActionListener.xhtml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    <h:head></h:head>
+    <h:body>
+        <h:form id="form">
+            Triggered first: #{output}
+            <br />
+            <br />
+            Click the links, watch the above output and compare values:<br />
+            <ui:repeat id="repeat" var="item" varStatus="status" value="#{repeatPropertyActionListenerBean.items}">
+                <h:commandLink id="#{status.index}link" value="#{item.label} - first: #{status.first}">
+                    <f:setPropertyActionListener target="#{requestScope.output}" value="#{status.first}" />
+                </h:commandLink>
+                 
+                <br />
+            </ui:repeat>
+        </h:form>
+    </h:body>
+</html>
diff --git a/test/servlet30/facelets/ui/src/main/webapp/repeatRemoved.xhtml b/test/servlet30/facelets/ui/src/main/webapp/repeatRemoved.xhtml
new file mode 100644
index 0000000..a2b44b6
--- /dev/null
+++ b/test/servlet30/facelets/ui/src/main/webapp/repeatRemoved.xhtml
@@ -0,0 +1,76 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:h="http://xmlns.jcp.org/jsf/html"
+      xmlns:ui="http://xmlns.jcp.org/jsf/facelets">
+    <h:head>
+    </h:head>
+    <h:body>
+        <h:form id="f">
+            <h:panelGroup id="top">
+                <table>
+                    <ui:repeat var="valueHolder" 
+                               value="#{repeatRemovedBean.list}" 
+                               varStatus="status" 
+                               id="r">
+                        <tr>
+                            <td>
+                                <h:inputText value="#{valueHolder.value}" id="i"/>
+                            </td>
+                            <td>
+                                <h:commandButton 
+                                    value="remove" id="b"
+                                    actionListener="#{repeatRemovedBean.removeInt(status.index)}">
+                                </h:commandButton>
+                            </td>
+                        </tr>
+                    </ui:repeat>
+                </table>
+            </h:panelGroup>
+        </h:form>
+    </h:body>
+</html>
diff --git a/test/servlet30/facelets/ui/src/main/webapp/repeatResetNull.xhtml b/test/servlet30/facelets/ui/src/main/webapp/repeatResetNull.xhtml
new file mode 100644
index 0000000..747354a
--- /dev/null
+++ b/test/servlet30/facelets/ui/src/main/webapp/repeatResetNull.xhtml
@@ -0,0 +1,62 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+    <head>
+        <title>Repeat Reset Null Value</title>
+    </head>
+    <body>
+    <h:form id="form" prependId="false">
+       <ui:repeat id="repeat" value="#{repeatResetNullBean.testList}" var="key" varStatus="status">
+           <h:inputText id="input1" value="#{key.value}" />
+       </ui:repeat>
+       isnull Or Empty ? #{repeatResetNullBean.nullOrEmptySet} 
+       <h:commandButton id="submit" value="submit" action="#{repeatResetNullBean.action}" />
+    </h:form>
+    </body>
+</html>
diff --git a/test/servlet30/facelets/ui/src/main/webapp/repeatSize.xhtml b/test/servlet30/facelets/ui/src/main/webapp/repeatSize.xhtml
new file mode 100644
index 0000000..0174639
--- /dev/null
+++ b/test/servlet30/facelets/ui/src/main/webapp/repeatSize.xhtml
@@ -0,0 +1,85 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+    <h:head>
+    </h:head>
+    <h:body>
+       <h3>These examples work off an array of 10 values: str0 str1 str2 str3 str4 str5 str6 str7 str8 str9</h3>
+       <h3>Example: UIRepeat With Literal Size Attribute: 5</h3>
+       <ui:repeat value="#{repeatSizeBean.strList}" size="5" var="item">
+           l<h:outputText value="#{item}" />
+       </ui:repeat>
+
+       <br/>
+
+       <h3>Example: UIRepeat With ValueExpression Size Attribute: 5</h3>
+       <ui:repeat value="#{repeatSizeBean.strList}" size="#{repeatSizeBean.size}" var="item">
+           v<h:outputText value="#{item}" />
+       </ui:repeat>
+
+       <br/>
+
+       <h3>Example: UIRepeat With Size Attribute Set From ui:param Value Of 5</h3>
+       <ui:param name="size" value="5"/>
+       <ui:repeat value="#{repeatSizeBean.strList}" size="#{size}" var="item">
+           p<h:outputText value="#{item}" />
+       </ui:repeat>
+
+       <br/>
+
+       <h3>Example: UIRepeat With Literal Size Attribute: 10</h3>
+       <ui:repeat value="#{repeatSizeBean.strList}" size="10" var="item">
+           m<h:outputText value="#{item}" />
+       </ui:repeat>
+
+       <br/>
+
+       <h3>Example: UIRepeat With Literal Size Attribute: 5 And offset Attribute: 2</h3>
+       <ui:repeat value="#{repeatSizeBean.strList}" size="5" offset="2" var="item">
+           o<h:outputText value="#{item}" />
+       </ui:repeat>
+    </h:body>
+</html>
+
diff --git a/test/servlet30/facelets/ui/src/main/webapp/repeatTooMany.xhtml b/test/servlet30/facelets/ui/src/main/webapp/repeatTooMany.xhtml
new file mode 100644
index 0000000..86d4a48
--- /dev/null
+++ b/test/servlet30/facelets/ui/src/main/webapp/repeatTooMany.xhtml
@@ -0,0 +1,16 @@
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://xmlns.jcp.org/jsf/html"
+      xmlns:ui="http://xmlns.jcp.org/jsf/facelets">
+    <h:head />
+    <h:body>
+        <ui:repeat value="#{repeatTooManyBean.list}" var="s">
+            <h:outputText id="out" value="#{s}" style="display: block" />
+        </ui:repeat>
+        Iterations: <h:outputText value="#{repeatTooManyBean.iterations}"/>
+        <h:form id="form">
+            <h:commandButton id="submit" value="visitChildren"  action="#{repeatTooManyBean.visitChildren}" />
+        </h:form>
+    </h:body>
+</html>
diff --git a/test/servlet30/facelets/ui/src/main/webapp/repeatUseLocalValue.xhtml b/test/servlet30/facelets/ui/src/main/webapp/repeatUseLocalValue.xhtml
new file mode 100644
index 0000000..b158305
--- /dev/null
+++ b/test/servlet30/facelets/ui/src/main/webapp/repeatUseLocalValue.xhtml
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+    <h:head />
+    <h:body>
+        <h:form id="form">
+            <ui:repeat var="object" value="#{repeatUseLocalValueBean.objects}">
+                <h:panelGroup rendered="#{object.name eq 'com.sun.faces.test.agnostic.facelets.ui.RepeatUseLocalValueTypeA'}">
+                    <h:inputText value="#{object.a}" />
+                </h:panelGroup>
+                <h:panelGroup rendered="#{object.name eq 'com.sun.faces.test.agnostic.facelets.ui.RepeatUseLocalValueTypeB'}">
+                    <h:inputText value="#{object.b}" />
+                </h:panelGroup>
+            </ui:repeat>
+            <br/>
+            <h:commandButton id="submit" value="submit" action="#{repeatUseLocalValueBean.action}" />
+        </h:form>
+    </h:body>
+</html>
diff --git a/test/servlet30/facelets/ui/src/main/webapp/repeatValue.xhtml b/test/servlet30/facelets/ui/src/main/webapp/repeatValue.xhtml
new file mode 100644
index 0000000..8d72b20
--- /dev/null
+++ b/test/servlet30/facelets/ui/src/main/webapp/repeatValue.xhtml
@@ -0,0 +1,64 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://xmlns.jcp.org/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://xmlns.jcp.org/jsf/facelets">
+    <head>
+        <title>Repeat with value expressions</title>
+    </head>
+    <body>
+        <ui:repeat value="#{repeatValueBean.strList}" size="5" var="item">
+            Literal
+            <h:outputText value="#{item}" />
+        </ui:repeat>
+        <br/>
+        <ui:repeat value="#{repeatValueBean.strList}" size="#{repeatValueBean.size}" var="item">
+            VE
+            <h:outputText value="#{item}" />
+        </ui:repeat>
+    </body>
+</html>
diff --git a/test/servlet30/facelets/ui/src/test/java/com/sun/faces/test/servlet30/facelets/ui/Issue12309225IT.java b/test/servlet30/facelets/ui/src/test/java/com/sun/faces/test/servlet30/facelets/ui/Issue12309225IT.java
new file mode 100644
index 0000000..f51608d
--- /dev/null
+++ b/test/servlet30/facelets/ui/src/test/java/com/sun/faces/test/servlet30/facelets/ui/Issue12309225IT.java
@@ -0,0 +1,79 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.facelets.ui;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.After;
+import static org.junit.Assert.assertTrue;
+import org.junit.Before;
+import org.junit.Test;
+
+public class Issue12309225IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testNullInDecorateTemplate() throws Exception {
+        webClient.getOptions().setThrowExceptionOnFailingStatusCode(false);
+        HtmlPage page = webClient.getPage(webUrl + "faces/decorateWithNullTemplate.xhtml");
+        assertTrue(page.asText().contains("Invalid path"));
+    }
+    
+    @Test
+    public void testNullInCompositionTemplate() throws Exception {
+        webClient.getOptions().setThrowExceptionOnFailingStatusCode(false);
+        HtmlPage page = webClient.getPage(webUrl + "faces/compositionWithNullTemplate.xhtml");
+        assertTrue(page.asText().contains("Invalid path"));
+    }
+    
+}
diff --git a/test/servlet30/facelets/ui/src/test/java/com/sun/faces/test/servlet30/facelets/ui/Issue1728IT.java b/test/servlet30/facelets/ui/src/test/java/com/sun/faces/test/servlet30/facelets/ui/Issue1728IT.java
new file mode 100644
index 0000000..3162d27
--- /dev/null
+++ b/test/servlet30/facelets/ui/src/test/java/com/sun/faces/test/servlet30/facelets/ui/Issue1728IT.java
@@ -0,0 +1,70 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDLGPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.facelets.ui;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.After;
+import static org.junit.Assert.assertTrue;
+import org.junit.Before;
+import org.junit.Test;
+
+public class Issue1728IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testId() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/debugHasId.xhtml");
+        assertTrue(page.asXml().contains("myid"));
+    }
+}
diff --git a/test/servlet30/facelets/ui/src/test/java/com/sun/faces/test/servlet30/facelets/ui/Issue1945IT.java b/test/servlet30/facelets/ui/src/test/java/com/sun/faces/test/servlet30/facelets/ui/Issue1945IT.java
new file mode 100644
index 0000000..f8f7517
--- /dev/null
+++ b/test/servlet30/facelets/ui/src/test/java/com/sun/faces/test/servlet30/facelets/ui/Issue1945IT.java
@@ -0,0 +1,72 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.facelets.ui;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlInput;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class Issue1945IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testAbcInRepeatedInputTexts() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/repeatAbc.xhtml");
+        HtmlInput input = page.getHtmlElementById("form:j_idt5:5:inputIn");
+        assertEquals("abc", input.getValueAttribute());
+    }
+}
diff --git a/test/servlet30/facelets/ui/src/test/java/com/sun/faces/test/servlet30/facelets/ui/Issue2025IT.java b/test/servlet30/facelets/ui/src/test/java/com/sun/faces/test/servlet30/facelets/ui/Issue2025IT.java
new file mode 100644
index 0000000..231ce09
--- /dev/null
+++ b/test/servlet30/facelets/ui/src/test/java/com/sun/faces/test/servlet30/facelets/ui/Issue2025IT.java
@@ -0,0 +1,103 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.facelets.ui;
+
+import com.gargoylesoftware.htmlunit.FailingHttpStatusCodeException;
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlInput;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import static junit.framework.Assert.assertTrue;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class Issue2025IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testCompositionBadPath() throws Exception {
+        try { 
+            webClient.getPage(webUrl + "faces/compositionBadPath.xhtml");        
+        } catch (FailingHttpStatusCodeException e) {
+            assertTrue(e.getResponse().getContentAsString().contains("Invalid path : foobar"));
+        }
+    }
+    
+    @Test
+    public void testCompositionEmptyPath() throws Exception {
+        try {
+            webClient.getPage(webUrl + "faces/compositionEmptyPath.xhtml");
+        } catch (FailingHttpStatusCodeException e) {
+            assertTrue(e.getResponse().getContentAsString().contains("Invalid path :"));
+        }
+    }
+    
+    @Test
+    public void testDecorateBadPath() throws Exception {
+        try {
+            webClient.getPage(webUrl + "faces/decorateBadPath.xhtml");
+        } catch (FailingHttpStatusCodeException e) {
+            assertTrue(e.getResponse().getContentAsString().contains("Invalid path : foobar"));
+        }
+    }
+    
+    @Test
+    public void testDecorateEmptyPath() throws Exception {
+        try {
+            webClient.getPage(webUrl + "faces/decorateEmptyPath.xhtml");
+        } catch (FailingHttpStatusCodeException e) {
+            assertTrue(e.getResponse().getContentAsString().contains("Invalid path :"));
+        }        
+    }
+}
diff --git a/test/servlet30/facelets/ui/src/test/java/com/sun/faces/test/servlet30/facelets/ui/Issue2038IT.java b/test/servlet30/facelets/ui/src/test/java/com/sun/faces/test/servlet30/facelets/ui/Issue2038IT.java
new file mode 100644
index 0000000..fefbaa7
--- /dev/null
+++ b/test/servlet30/facelets/ui/src/test/java/com/sun/faces/test/servlet30/facelets/ui/Issue2038IT.java
@@ -0,0 +1,77 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.facelets.ui;
+
+import com.gargoylesoftware.htmlunit.FailingHttpStatusCodeException;
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlElement;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class Issue2038IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testRepeatPropertyActionListener() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/repeatPropertyActionListener.xhtml");  
+        HtmlElement link = page.getHtmlElementById("form:repeat:0:link");
+        page = link.click();
+        assertTrue(page.asXml().contains("Triggered first: true"));
+        link = page.getHtmlElementById("form:repeat:1:link");
+        page = link.click();
+        assertTrue(page.asXml().contains("Triggered first: false"));
+    }
+}
diff --git a/test/servlet30/facelets/ui/src/test/java/com/sun/faces/test/servlet30/facelets/ui/Issue2051IT.java b/test/servlet30/facelets/ui/src/test/java/com/sun/faces/test/servlet30/facelets/ui/Issue2051IT.java
new file mode 100644
index 0000000..458a05e
--- /dev/null
+++ b/test/servlet30/facelets/ui/src/test/java/com/sun/faces/test/servlet30/facelets/ui/Issue2051IT.java
@@ -0,0 +1,77 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDLGPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.facelets.ui;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.After;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+import org.junit.Before;
+import org.junit.Test;
+
+public class Issue2051IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testRendered() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/debugRendered.xhtml");
+        assertTrue(page.asXml().contains("faceletsDebug"));
+    }
+
+    @Test
+    public void testNotRendered() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/debugNotRendered.xhtml");
+        assertFalse(page.asXml().contains("faceletsDebug"));
+    }
+}
diff --git a/test/servlet30/facelets/ui/src/test/java/com/sun/faces/test/servlet30/facelets/ui/Issue2074IT.java b/test/servlet30/facelets/ui/src/test/java/com/sun/faces/test/servlet30/facelets/ui/Issue2074IT.java
new file mode 100644
index 0000000..8c2f133
--- /dev/null
+++ b/test/servlet30/facelets/ui/src/test/java/com/sun/faces/test/servlet30/facelets/ui/Issue2074IT.java
@@ -0,0 +1,82 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.facelets.ui;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class Issue2074IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testForSingleQuestionMark() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/debugQuestionMark.xhtml");
+        String xml = page.asXml();
+        int startIdx = xml.indexOf("faceletsDebug('/");
+        assertTrue("Should contain faceletsDebug Call", startIdx != -1);
+        int endIdx = xml.indexOf(')', startIdx);
+        assertTrue("Should contain faceletsDebug Call", startIdx < endIdx);
+        String call = xml.substring(startIdx, endIdx);
+        int nrOfQMs = 0;
+        for (char c : call.toCharArray()) {
+            if (c == '?') {
+                nrOfQMs++;
+            }
+        }
+        assertEquals("Should only contain one questionmark", 1, nrOfQMs);
+    }
+}
diff --git a/test/servlet30/facelets/ui/src/test/java/com/sun/faces/test/servlet30/facelets/ui/Issue2209IT.java b/test/servlet30/facelets/ui/src/test/java/com/sun/faces/test/servlet30/facelets/ui/Issue2209IT.java
new file mode 100644
index 0000000..2963a62
--- /dev/null
+++ b/test/servlet30/facelets/ui/src/test/java/com/sun/faces/test/servlet30/facelets/ui/Issue2209IT.java
@@ -0,0 +1,76 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.facelets.ui;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class Issue2209IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testOffset() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/repeatOffset.xhtml");
+        assertTrue(page.asText().contains("Offset VE:str2 Offset VE:str3 Offset VE:str4 Offset VE:str5 Offset VE:str6 Offset VE:str7 Offset VE:str8 Offset VE:str9"));
+    }
+
+    @Test
+    public void testOffset2() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/repeatOffset.xhtml");
+        assertTrue(page.asText().contains("Offset Literal:str2 Offset Literal:str3 Offset Literal:str4 Offset Literal:str5 Offset Literal:str6 Offset Literal:str7 Offset Literal:str8 Offset Literal:str9"));
+    }
+}
diff --git a/test/servlet30/facelets/ui/src/test/java/com/sun/faces/test/servlet30/facelets/ui/Issue2258IT.java b/test/servlet30/facelets/ui/src/test/java/com/sun/faces/test/servlet30/facelets/ui/Issue2258IT.java
new file mode 100644
index 0000000..2aceb70
--- /dev/null
+++ b/test/servlet30/facelets/ui/src/test/java/com/sun/faces/test/servlet30/facelets/ui/Issue2258IT.java
@@ -0,0 +1,71 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.facelets.ui;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class Issue2258IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testOffset() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/repeatValue.xhtml");
+        assertTrue(page.asText().contains("Literal str0 Literal str1 Literal str2 Literal str3 Literal str4"));
+        assertTrue(page.asText().contains("VE str0 VE str1 VE str2 VE str3 VE str4"));
+    }
+}
diff --git a/test/servlet30/facelets/ui/src/test/java/com/sun/faces/test/servlet30/facelets/ui/Issue2425IT.java b/test/servlet30/facelets/ui/src/test/java/com/sun/faces/test/servlet30/facelets/ui/Issue2425IT.java
new file mode 100644
index 0000000..ae5d180
--- /dev/null
+++ b/test/servlet30/facelets/ui/src/test/java/com/sun/faces/test/servlet30/facelets/ui/Issue2425IT.java
@@ -0,0 +1,74 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDLGPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.facelets.ui;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.After;
+import static org.junit.Assert.assertTrue;
+import org.junit.Before;
+import org.junit.Test;
+
+public class Issue2425IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testSize() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/repeatSize.xhtml");
+        assertTrue(page.asText().contains("lstr0 lstr1 lstr2 lstr3 lstr4"));
+        assertTrue(page.asText().contains("vstr0 vstr1 vstr2 vstr3 vstr4"));
+        assertTrue(page.asText().contains("pstr0 pstr1 pstr2 pstr3 pstr4"));
+        assertTrue(page.asText().contains("mstr0 mstr1 mstr2 mstr3 mstr4 mstr5 mstr6 mstr7 mstr8 mstr9"));
+        assertTrue(page.asText().contains("ostr2 ostr3 ostr4"));
+    }
+}
diff --git a/test/servlet30/facelets/ui/src/test/java/com/sun/faces/test/servlet30/facelets/ui/Issue2703IT.java b/test/servlet30/facelets/ui/src/test/java/com/sun/faces/test/servlet30/facelets/ui/Issue2703IT.java
new file mode 100644
index 0000000..76f9cab
--- /dev/null
+++ b/test/servlet30/facelets/ui/src/test/java/com/sun/faces/test/servlet30/facelets/ui/Issue2703IT.java
@@ -0,0 +1,80 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.facelets.ui;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlElement;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class Issue2703IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testRepeatDynamicConverter() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/repeatDynamicConverter.xhtml");
+        assertFalse(page.asText().contains("1.00"));
+        HtmlElement element = page.getHtmlElementById("form:button");
+        page = element.click();
+        assertTrue(page.asText().contains("1.00"));
+        page = element.click();
+        assertTrue(page.asText().contains("2.00"));
+        page = element.click();
+        assertTrue(page.asText().contains("3.00"));
+        page = element.click();
+        assertTrue(page.asText().contains("4.00"));
+    }
+}
diff --git a/test/servlet30/facelets/ui/src/test/java/com/sun/faces/test/servlet30/facelets/ui/Issue2717IT.java b/test/servlet30/facelets/ui/src/test/java/com/sun/faces/test/servlet30/facelets/ui/Issue2717IT.java
new file mode 100644
index 0000000..949140a
--- /dev/null
+++ b/test/servlet30/facelets/ui/src/test/java/com/sun/faces/test/servlet30/facelets/ui/Issue2717IT.java
@@ -0,0 +1,82 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.facelets.ui;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class Issue2717IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testIssue2717() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/repeatResetNull.xhtml");
+        assertTrue(page.asText().contains("myString")); 
+        assertTrue(page.asText().contains("isnull Or Empty ? false"));
+        HtmlTextInput input = (HtmlTextInput)page.getHtmlElementById("repeat:0:input1");
+        page = (HtmlPage)input.setValueAttribute("");
+        assertTrue(!page.asText().contains("myString")); 
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getHtmlElementById("submit");
+        page = button.click();
+        webClient.waitForBackgroundJavaScript(120000);
+        assertTrue(page.asText().contains("isnull Or Empty ? true"));
+    }
+}
+
diff --git a/test/servlet30/facelets/ui/src/test/java/com/sun/faces/test/servlet30/facelets/ui/Issue2767IT.java b/test/servlet30/facelets/ui/src/test/java/com/sun/faces/test/servlet30/facelets/ui/Issue2767IT.java
new file mode 100644
index 0000000..efd910f
--- /dev/null
+++ b/test/servlet30/facelets/ui/src/test/java/com/sun/faces/test/servlet30/facelets/ui/Issue2767IT.java
@@ -0,0 +1,71 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.facelets.ui;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class Issue2767IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testOffset() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/issue2767.xhtml");
+        assertTrue(page.asText().contains("Literal str0 Literal str1 Literal str2 Literal str3 Literal str4"));
+        assertTrue(page.asText().contains("VE str0 VE str1 VE str2 VE str3 VE str4"));
+    }
+}
diff --git a/test/servlet30/facelets/ui/src/test/java/com/sun/faces/test/servlet30/facelets/ui/Issue2900IT.java b/test/servlet30/facelets/ui/src/test/java/com/sun/faces/test/servlet30/facelets/ui/Issue2900IT.java
new file mode 100644
index 0000000..b12bfb0
--- /dev/null
+++ b/test/servlet30/facelets/ui/src/test/java/com/sun/faces/test/servlet30/facelets/ui/Issue2900IT.java
@@ -0,0 +1,71 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.facelets.ui;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class Issue2900IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testNoUIInclude() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/issue2900.xhtml");
+        assertTrue(!page.asText().contains("ui:repeat"));
+    }
+    
+}
diff --git a/test/servlet30/facelets/ui/src/test/java/com/sun/faces/test/servlet30/facelets/ui/Issue2938IT.java b/test/servlet30/facelets/ui/src/test/java/com/sun/faces/test/servlet30/facelets/ui/Issue2938IT.java
new file mode 100644
index 0000000..346ad26
--- /dev/null
+++ b/test/servlet30/facelets/ui/src/test/java/com/sun/faces/test/servlet30/facelets/ui/Issue2938IT.java
@@ -0,0 +1,80 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.facelets.ui;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import com.sun.faces.test.junit.JsfTest;
+import com.sun.faces.test.junit.JsfTestRunner;
+import com.sun.faces.test.junit.JsfVersion;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+import org.junit.runner.RunWith;
+
+ at RunWith(JsfTestRunner.class)
+public class Issue2938IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @JsfTest(JsfVersion.JSF_2_2_3)
+    @Test
+    public void testRowRemoved() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/repeatRemoved.xhtml");
+        assertNotNull(page.getHtmlElementById("f:r:0:i"));
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getHtmlElementById("f:r:0:b");
+        page = button.click();
+        assertNull(page.getElementById("f:r:0:i"));
+    }
+}
diff --git a/test/servlet30/facelets/ui/src/test/java/com/sun/faces/test/servlet30/facelets/ui/Issue2956IT.java b/test/servlet30/facelets/ui/src/test/java/com/sun/faces/test/servlet30/facelets/ui/Issue2956IT.java
new file mode 100644
index 0000000..ca85bbc
--- /dev/null
+++ b/test/servlet30/facelets/ui/src/test/java/com/sun/faces/test/servlet30/facelets/ui/Issue2956IT.java
@@ -0,0 +1,80 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.facelets.ui;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import com.sun.faces.test.junit.JsfTest;
+import com.sun.faces.test.junit.JsfTestRunner;
+import com.sun.faces.test.junit.JsfVersion;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+import org.junit.runner.RunWith;
+
+ at RunWith(JsfTestRunner.class)
+public class Issue2956IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @JsfTest(JsfVersion.JSF_2_2_2)
+    @Test
+    public void testTooManyIterations() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/repeatTooMany.xhtml");
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getHtmlElementById("form:submit");
+        page = button.click();
+        assertTrue(page.asText().indexOf("Iterations: 1234567891010") == -1);
+        assertTrue(page.asText().indexOf("Iterations: 12345678910") != -1);
+    }
+}
diff --git a/test/servlet30/facelets/ui/src/test/java/com/sun/faces/test/servlet30/facelets/ui/Issue3035IT.java b/test/servlet30/facelets/ui/src/test/java/com/sun/faces/test/servlet30/facelets/ui/Issue3035IT.java
new file mode 100644
index 0000000..4868e43
--- /dev/null
+++ b/test/servlet30/facelets/ui/src/test/java/com/sun/faces/test/servlet30/facelets/ui/Issue3035IT.java
@@ -0,0 +1,87 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.facelets.ui;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlAnchor;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import com.sun.faces.test.junit.JsfTest;
+import com.sun.faces.test.junit.JsfTestRunner;
+import com.sun.faces.test.junit.JsfVersion;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+import org.junit.runner.RunWith;
+
+ at RunWith(JsfTestRunner.class)
+public class Issue3035IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @JsfTest(JsfVersion.JSF_2_2_5)
+    @Test
+    public void testRepeat3Click() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/repeat3click.xhtml");
+        HtmlAnchor button = (HtmlAnchor) page.getHtmlElementById("form:submit");
+        page = button.click();
+        webClient.waitForBackgroundJavaScript(10000);
+        assertTrue(page.asXml().indexOf("- even") != -1);
+        assertTrue(page.asXml().indexOf("- odd") == -1);
+        button = (HtmlAnchor) page.getHtmlElementById("form:submit");
+        page = button.click();        
+        webClient.waitForBackgroundJavaScript(10000);
+        assertTrue(page.asXml().indexOf("- even") == -1);
+        assertTrue(page.asXml().indexOf("- odd") != -1);
+    }
+}
diff --git a/test/servlet30/facelets/ui/src/test/java/com/sun/faces/test/servlet30/facelets/ui/Issue3146IT.java b/test/servlet30/facelets/ui/src/test/java/com/sun/faces/test/servlet30/facelets/ui/Issue3146IT.java
new file mode 100644
index 0000000..b70d987
--- /dev/null
+++ b/test/servlet30/facelets/ui/src/test/java/com/sun/faces/test/servlet30/facelets/ui/Issue3146IT.java
@@ -0,0 +1,69 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.facelets.ui;
+
+import com.gargoylesoftware.htmlunit.FailingHttpStatusCodeException;
+import com.gargoylesoftware.htmlunit.WebClient;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+public class Issue3146IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test(expected = FailingHttpStatusCodeException.class)
+    public void testCompositionDirectContract() throws Exception {
+        webClient.getOptions().setThrowExceptionOnFailingStatusCode(true);
+        webClient.getPage(webUrl + "faces/compositionDirectContract.xhtml");
+    }
+}
diff --git a/test/servlet30/facelets/ui/src/test/java/com/sun/faces/test/servlet30/facelets/ui/Issue3152IT.java b/test/servlet30/facelets/ui/src/test/java/com/sun/faces/test/servlet30/facelets/ui/Issue3152IT.java
new file mode 100644
index 0000000..06bb0ee
--- /dev/null
+++ b/test/servlet30/facelets/ui/src/test/java/com/sun/faces/test/servlet30/facelets/ui/Issue3152IT.java
@@ -0,0 +1,74 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.facelets.ui;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlElement;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class Issue3152IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testRepeatAjaxEvaluate() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/repeatAjaxEvaluate.xhtml");
+        HtmlElement button = (HtmlElement) page.getHtmlElementById("form:submit");
+        page = button.click();
+        webClient.waitForBackgroundJavaScript(10000);
+        assertTrue(page.asXml().indexOf("Evaluated 1") == -1);
+    }
+}
diff --git a/test/servlet30/facelets/ui/src/test/java/com/sun/faces/test/servlet30/facelets/ui/Issue3167IT.java b/test/servlet30/facelets/ui/src/test/java/com/sun/faces/test/servlet30/facelets/ui/Issue3167IT.java
new file mode 100644
index 0000000..9b9be3f
--- /dev/null
+++ b/test/servlet30/facelets/ui/src/test/java/com/sun/faces/test/servlet30/facelets/ui/Issue3167IT.java
@@ -0,0 +1,77 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.facelets.ui;
+
+import com.gargoylesoftware.htmlunit.FailingHttpStatusCodeException;
+import com.gargoylesoftware.htmlunit.WebClient;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+public class Issue3167IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test(expected = FailingHttpStatusCodeException.class)
+    public void testDecorateDirectContract() throws Exception {
+        webClient.getOptions().setThrowExceptionOnFailingStatusCode(true);
+        webClient.getOptions().setPrintContentOnFailingStatusCode(false);
+        webClient.getPage(webUrl + "faces/decorateDirectContract.xhtml");
+    }
+
+    @Test(expected = FailingHttpStatusCodeException.class)
+    public void testIncludeDirectContract() throws Exception {
+        webClient.getOptions().setThrowExceptionOnFailingStatusCode(true);
+        webClient.getOptions().setPrintContentOnFailingStatusCode(false);
+        webClient.getPage(webUrl + "faces/includeDirectContract.xhtml");
+    }
+}
diff --git a/test/servlet30/facelets/ui/src/test/java/com/sun/faces/test/servlet30/facelets/ui/Issue3215IT.java b/test/servlet30/facelets/ui/src/test/java/com/sun/faces/test/servlet30/facelets/ui/Issue3215IT.java
new file mode 100644
index 0000000..fbac573
--- /dev/null
+++ b/test/servlet30/facelets/ui/src/test/java/com/sun/faces/test/servlet30/facelets/ui/Issue3215IT.java
@@ -0,0 +1,72 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.facelets.ui;
+
+import com.gargoylesoftware.htmlunit.FailingHttpStatusCodeException;
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.After;
+import static org.junit.Assert.assertEquals;
+import org.junit.Before;
+import org.junit.Test;
+
+public class Issue3215IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testRepeatUseLocalValue() throws Exception {
+        webClient.getOptions().setThrowExceptionOnFailingStatusCode(false);
+        HtmlPage page = webClient.getPage(webUrl + "faces/repeatUseLocalValue.xhtml");
+        assertEquals(200, page.getWebResponse().getStatusCode());
+    }
+}
diff --git a/test/servlet30/facelets/ui/src/test/java/com/sun/faces/test/servlet30/facelets/ui/uiRemoveIT.java b/test/servlet30/facelets/ui/src/test/java/com/sun/faces/test/servlet30/facelets/ui/uiRemoveIT.java
new file mode 100644
index 0000000..4c5f1b5
--- /dev/null
+++ b/test/servlet30/facelets/ui/src/test/java/com/sun/faces/test/servlet30/facelets/ui/uiRemoveIT.java
@@ -0,0 +1,70 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.facelets.ui;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class uiRemoveIT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testOffset() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/remove.xhtml");
+        assertTrue(!page.asText().contains("ipsum"));
+    }
+}
diff --git a/test/servlet30/factory/pom.xml b/test/servlet30/factory/pom.xml
new file mode 100644
index 0000000..ed2ad0a
--- /dev/null
+++ b/test/servlet30/factory/pom.xml
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.servlet30</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.servlet30</groupId>
+    <artifactId>factory</artifactId>
+    <packaging>war</packaging>
+    <name>Mojarra ${project.version} - Test - Servlet 3.0 - Factory</name>
+        <build>
+        <finalName>test-servlet30-factory</finalName>
+    </build>
+    <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/test/servlet30/factory/src/main/java/com/sun/faces/test/servlet30/factory/CustomFaceletCacheFactory.java b/test/servlet30/factory/src/main/java/com/sun/faces/test/servlet30/factory/CustomFaceletCacheFactory.java
new file mode 100644
index 0000000..39b8a6e
--- /dev/null
+++ b/test/servlet30/factory/src/main/java/com/sun/faces/test/servlet30/factory/CustomFaceletCacheFactory.java
@@ -0,0 +1,80 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.factory;
+
+import javax.faces.view.facelets.FaceletCache;
+import javax.faces.view.facelets.FaceletCacheFactory;
+
+public class CustomFaceletCacheFactory extends FaceletCacheFactory {
+
+    private boolean oneArgCtorCalled = false;
+    private FaceletCache _cache;
+    private FaceletCacheFactory _wrapped;
+
+    public boolean isOneArgCtorCalled() {
+        return oneArgCtorCalled;
+    }
+
+    @Override
+    public FaceletCacheFactory getWrapped() {
+        return _wrapped;
+    }
+
+    public CustomFaceletCacheFactory() {
+        super();
+        oneArgCtorCalled = false;
+    }
+
+    public CustomFaceletCacheFactory(FaceletCacheFactory wrapped) {
+        oneArgCtorCalled = true;
+        _wrapped = wrapped;
+    }
+
+    @Override
+    public FaceletCache getFaceletCache() {
+        FaceletCacheFactory wrapped = getWrapped();
+
+        if (_cache == null) {
+            _cache = wrapped.getFaceletCache();
+        }
+
+        return _cache;
+    }
+}
diff --git a/test/servlet30/factory/src/main/java/com/sun/faces/test/servlet30/factory/CustomFaceletCacheFactoryBean.java b/test/servlet30/factory/src/main/java/com/sun/faces/test/servlet30/factory/CustomFaceletCacheFactoryBean.java
new file mode 100644
index 0000000..b9eb56b
--- /dev/null
+++ b/test/servlet30/factory/src/main/java/com/sun/faces/test/servlet30/factory/CustomFaceletCacheFactoryBean.java
@@ -0,0 +1,61 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.factory;
+
+import javax.faces.FactoryFinder;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.RequestScoped;
+import javax.faces.view.facelets.FaceletCacheFactory;
+
+ at ManagedBean
+ at RequestScoped
+public class CustomFaceletCacheFactoryBean {
+
+    public String getTestMessage() {
+        String result = "FAILURE";
+        FaceletCacheFactory factory = (FaceletCacheFactory) FactoryFinder.getFactory(
+                "javax.faces.view.facelets.FaceletCacheFactory");
+        if (factory instanceof CustomFaceletCacheFactory) {
+            result = ((CustomFaceletCacheFactory) factory).isOneArgCtorCalled() ? "SUCCESS" : "FAILURE";
+        }
+
+        return result;
+    }
+}
diff --git a/test/servlet30/factory/src/main/java/com/sun/faces/test/servlet30/factory/CustomViewDeclarationLanguage.java b/test/servlet30/factory/src/main/java/com/sun/faces/test/servlet30/factory/CustomViewDeclarationLanguage.java
new file mode 100644
index 0000000..f72c1d1
--- /dev/null
+++ b/test/servlet30/factory/src/main/java/com/sun/faces/test/servlet30/factory/CustomViewDeclarationLanguage.java
@@ -0,0 +1,130 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.factory;
+
+import java.beans.BeanInfo;
+import java.io.IOException;
+import java.util.Map;
+import javax.faces.FacesWrapper;
+import javax.faces.application.Resource;
+import javax.faces.component.UIViewRoot;
+import javax.faces.context.FacesContext;
+import javax.faces.view.StateManagementStrategy;
+import javax.faces.view.ViewDeclarationLanguage;
+import javax.faces.view.ViewMetadata;
+
+public class CustomViewDeclarationLanguage extends ViewDeclarationLanguage
+        implements FacesWrapper<ViewDeclarationLanguage> {
+
+    private final ViewDeclarationLanguage toWrap;
+
+    public CustomViewDeclarationLanguage(ViewDeclarationLanguage toWrap) {
+        this.toWrap = toWrap;
+    }
+
+    public void logMethodInvocation(String method) {
+        FacesContext context = FacesContext.getCurrentInstance();
+        Map<String, Object> requestMap = context.getExternalContext().getRequestMap();
+        final String key = "CustomViewDeclarationLanguageMessage";
+
+        StringBuilder builder = (StringBuilder) requestMap.get(key);
+        if (null == builder) {
+            builder = new StringBuilder();
+            requestMap.put(key, builder);
+        }
+        builder.append(" ").append(method);
+    }
+
+    @Override
+    public void buildView(FacesContext fc, UIViewRoot uivr) throws IOException {
+        Map<String, String> params = fc.getExternalContext().getRequestParameterMap();
+        if (!params.containsKey("skipBuildView")) {
+            this.logMethodInvocation("buildView");
+            this.getWrapped().buildView(fc, uivr);
+        }
+    }
+
+    @Override
+    public ViewDeclarationLanguage getWrapped() {
+        return this.toWrap;
+    }
+
+    @Override
+    public UIViewRoot createView(FacesContext fc, String string) {
+        this.logMethodInvocation("createView");
+        return this.getWrapped().createView(fc, string);
+    }
+
+    @Override
+    public BeanInfo getComponentMetadata(FacesContext fc, Resource rsrc) {
+        this.logMethodInvocation("getComponentMetadata");
+        return this.getWrapped().getComponentMetadata(fc, rsrc);
+    }
+
+    @Override
+    public Resource getScriptComponentResource(FacesContext fc, Resource rsrc) {
+        this.logMethodInvocation("getScriptComponentResource");
+        return this.getWrapped().getScriptComponentResource(fc, rsrc);
+    }
+
+    @Override
+    public StateManagementStrategy getStateManagementStrategy(FacesContext fc, String string) {
+        this.logMethodInvocation("getStateManagementStrategy");
+        return this.getWrapped().getStateManagementStrategy(fc, string);
+    }
+
+    @Override
+    public ViewMetadata getViewMetadata(FacesContext fc, String string) {
+        this.logMethodInvocation("getViewMetadata");
+        return this.getWrapped().getViewMetadata(fc, string);
+    }
+
+    @Override
+    public void renderView(FacesContext fc, UIViewRoot uivr) throws IOException {
+        this.logMethodInvocation("renderView");
+        this.getWrapped().renderView(fc, uivr);
+    }
+
+    @Override
+    public UIViewRoot restoreView(FacesContext fc, String string) {
+        this.logMethodInvocation("restoreView");
+        return this.getWrapped().restoreView(fc, string);
+    }
+}
diff --git a/test/servlet30/factory/src/main/java/com/sun/faces/test/servlet30/factory/CustomViewDeclarationLanguageFactory.java b/test/servlet30/factory/src/main/java/com/sun/faces/test/servlet30/factory/CustomViewDeclarationLanguageFactory.java
new file mode 100644
index 0000000..6bf9597
--- /dev/null
+++ b/test/servlet30/factory/src/main/java/com/sun/faces/test/servlet30/factory/CustomViewDeclarationLanguageFactory.java
@@ -0,0 +1,76 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.factory;
+
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+import javax.faces.view.ViewDeclarationLanguage;
+import javax.faces.view.ViewDeclarationLanguageFactory;
+
+public class CustomViewDeclarationLanguageFactory extends ViewDeclarationLanguageFactory {
+
+    public CustomViewDeclarationLanguageFactory() {
+    }
+
+    private ViewDeclarationLanguageFactory toWrap;
+    private Map<String, CustomViewDeclarationLanguage> vdlImpls;
+
+    public CustomViewDeclarationLanguageFactory(ViewDeclarationLanguageFactory toWrap) {
+        this.toWrap = toWrap;
+        vdlImpls = new ConcurrentHashMap<String, CustomViewDeclarationLanguage>();
+    }
+
+    @Override
+    public ViewDeclarationLanguageFactory getWrapped() {
+        return toWrap;
+    }
+
+    @Override
+    public ViewDeclarationLanguage getViewDeclarationLanguage(String string) {
+        CustomViewDeclarationLanguage result = null;
+
+        if (null == (result = vdlImpls.get(string))) {
+            result = new CustomViewDeclarationLanguage(getWrapped().getViewDeclarationLanguage(string));
+            vdlImpls.put(string, result);
+        }
+
+        return result;
+    }
+}
diff --git a/test/servlet30/factory/src/main/webapp/WEB-INF/faces-config.xml b/test/servlet30/factory/src/main/webapp/WEB-INF/faces-config.xml
new file mode 100644
index 0000000..416621b
--- /dev/null
+++ b/test/servlet30/factory/src/main/webapp/WEB-INF/faces-config.xml
@@ -0,0 +1,11 @@
+<?xml version='1.0' encoding='UTF-8'?>
+
+<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
+              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+              xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
+              version="2.0">
+    <factory>
+        <facelet-cache-factory>com.sun.faces.test.servlet30.factory.CustomFaceletCacheFactory</facelet-cache-factory>            
+        <view-declaration-language-factory>com.sun.faces.test.servlet30.factory.CustomViewDeclarationLanguageFactory</view-declaration-language-factory>
+    </factory>
+</faces-config>
diff --git a/test/servlet30/factory/src/main/webapp/WEB-INF/glassfish-web.xml b/test/servlet30/factory/src/main/webapp/WEB-INF/glassfish-web.xml
new file mode 100644
index 0000000..640f368
--- /dev/null
+++ b/test/servlet30/factory/src/main/webapp/WEB-INF/glassfish-web.xml
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE glassfish-web-app PUBLIC 
+    "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" 
+    "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<glassfish-web-app error-url="">
+    <context-root>/test-servlet30-factory</context-root>
+    <class-loader delegate="true"/>
+    <jsp-config>
+        <property name="keepgenerated" value="true">
+            <description>Keep a copy of the generated servlet class' java code.</description>
+        </property>
+    </jsp-config>
+</glassfish-web-app>
diff --git a/test/servlet30/factory/src/main/webapp/WEB-INF/web.xml b/test/servlet30/factory/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..9e74fbc
--- /dev/null
+++ b/test/servlet30/factory/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+ Copyright 1997-2014 Sun Microsystems, Inc. All rights reserved.
+
+ The contents of this file are subject to the terms of either the GNU
+ General Public License Version 2 only ("GPL") or the Common Development
+ and Distribution License("CDDL") (collectively, the "License").  You
+ may not use this file except in compliance with the License. You can obtain
+ a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
+ or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ language governing permissions and limitations under the License.
+
+ When distributing the software, include this License Header Notice in each
+ file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
+ Sun designates this particular file as subject to the "Classpath" exception
+ as provided by Sun in the GPL Version 2 section of the License file that
+ accompanied this code.  If applicable, add the following below the License
+ Header, with the fields enclosed by brackets [] replaced by your own
+ identifying information: "Portions Copyrighted [year]
+ [name of copyright owner]"
+
+ Contributor(s):
+
+ If you wish your version of this file to be governed by only the CDDL or
+ only the GPL Version 2, indicate your decision by adding "[Contributor]
+ elects to include this software in this distribution under the [CDDL or GPL
+ Version 2] license."  If you don't indicate a single choice of license, a
+ recipient has the option to distribute your version of this file under
+ either the CDDL, the GPL Version 2 or to extend the choice of license to
+ its licensees as provided above.  However, if you add GPL Version 2 code
+ and therefore, elected the GPL Version 2 license, then the option applies
+ only if the new code is made subject to such option by the copyright
+ holder.
+
+-->
+
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" 
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>${webapp.projectStage}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
+        <param-value>${webapp.partialStateSaving}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>${webapp.stateSavingMethod}</param-value>
+    </context-param>
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <welcome-file-list>
+        <welcome-file>faces/index.xhtml</welcome-file>
+    </welcome-file-list>
+</web-app>
diff --git a/test/servlet30/factory/src/main/webapp/customfcf.xhtml b/test/servlet30/factory/src/main/webapp/customfcf.xhtml
new file mode 100644
index 0000000..2d7ddd3
--- /dev/null
+++ b/test/servlet30/factory/src/main/webapp/customfcf.xhtml
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <head>
+        <title></title>
+    </head>
+    <body>
+        <h:form id="myForm" prependId="false">
+            <p id="result">#{customFaceletCacheFactoryBean.testMessage}</p>
+            <h:commandButton value="submit" />
+        </h:form>
+    </body>
+</html>
diff --git a/test/servlet30/factory/src/main/webapp/customvdl.xhtml b/test/servlet30/factory/src/main/webapp/customvdl.xhtml
new file mode 100644
index 0000000..303c562
--- /dev/null
+++ b/test/servlet30/factory/src/main/webapp/customvdl.xhtml
@@ -0,0 +1,60 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    <head>
+        <title></title>
+    </head>
+    <body>
+        <p>message: #{CustomViewDeclarationLanguageMessage}</p>
+        <h:form prependId="false">
+            <h:commandButton id="button" value="reload"/>
+            <h:commandButton id="buttonSkipBuildView" value="reload, skipping Build View">
+                <f:param name="skipBuildView" value="true" />
+            </h:commandButton>
+        </h:form>
+    </body>
+</html>
diff --git a/test/servlet30/factory/src/test/java/com/sun/faces/test/servlet30/factory/Issue11694509IT.java b/test/servlet30/factory/src/test/java/com/sun/faces/test/servlet30/factory/Issue11694509IT.java
new file mode 100644
index 0000000..1df382a
--- /dev/null
+++ b/test/servlet30/factory/src/test/java/com/sun/faces/test/servlet30/factory/Issue11694509IT.java
@@ -0,0 +1,70 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.factory;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.After;
+import static org.junit.Assert.assertTrue;
+import org.junit.Before;
+import org.junit.Test;
+
+public class Issue11694509IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testFaceletCacheDecoration() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/customfcf.xhtml");
+        assertTrue(page.getBody().asText().contains("SUCCESS"));
+    }
+}
diff --git a/test/servlet30/factory/src/test/java/com/sun/faces/test/servlet30/factory/Issue2109IT.java b/test/servlet30/factory/src/test/java/com/sun/faces/test/servlet30/factory/Issue2109IT.java
new file mode 100644
index 0000000..af366a3
--- /dev/null
+++ b/test/servlet30/factory/src/test/java/com/sun/faces/test/servlet30/factory/Issue2109IT.java
@@ -0,0 +1,82 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.factory;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import org.junit.After;
+import static org.junit.Assert.assertTrue;
+import org.junit.Before;
+import org.junit.Test;
+
+public class Issue2109IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testReplaceVDL() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/customvdl.xhtml");
+        String text = page.asText();
+        assertTrue(text.contains("buildView"));
+
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("button");
+        page = button.click();
+        text = page.asText();
+        assertTrue(text.contains("buildView"));
+
+        button = (HtmlSubmitInput) page.getElementById("buttonSkipBuildView");
+        page = button.click();
+        text = page.asText();
+        assertTrue(!text.contains("buildView"));
+    }
+}
diff --git a/test/servlet30/mapping/exact/pom.xml b/test/servlet30/mapping/exact/pom.xml
new file mode 100644
index 0000000..b2838c4
--- /dev/null
+++ b/test/servlet30/mapping/exact/pom.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <artifactId>pom</artifactId>
+        <groupId>com.sun.faces.test.servlet30.mapping</groupId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.servlet30.mapping</groupId>
+    <artifactId>exact</artifactId>
+    <version>2.2.8-SNAPSHOT</version>
+    <packaging>war</packaging>
+    <name>Mojarra ${project.version} - Test - Servlet 3.0 - Mapping - Exact</name>
+    <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/test/servlet30/mapping/exact/src/main/webapp/WEB-INF/web.xml b/test/servlet30/mapping/exact/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..f49427c
--- /dev/null
+++ b/test/servlet30/mapping/exact/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" 
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>${webapp.projectStage}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
+        <param-value>${webapp.partialStateSaving}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>${webapp.stateSavingMethod}</param-value>
+    </context-param>
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/exact.html</url-pattern>
+        <url-pattern>/exact.xhtml</url-pattern>
+    </servlet-mapping>
+    <session-config>
+        <session-timeout>30</session-timeout>
+    </session-config>
+    <welcome-file-list>
+        <welcome-file>/exact.html</welcome-file>
+    </welcome-file-list>
+</web-app>
diff --git a/test/servlet30/mapping/exact/src/main/webapp/exact.xhtml b/test/servlet30/mapping/exact/src/main/webapp/exact.xhtml
new file mode 100644
index 0000000..5fed4c1
--- /dev/null
+++ b/test/servlet30/mapping/exact/src/main/webapp/exact.xhtml
@@ -0,0 +1,14 @@
+<?xml version='1.0' encoding='UTF-8'?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://xmlns.jcp.org/jsf/html">
+    <h:head>
+        <title>Facelet Title</title>
+    </h:head>
+    <h:body>
+        This page is using exact servlet mapping!
+    </h:body>
+</html>
+
diff --git a/test/servlet30/mapping/pom.xml b/test/servlet30/mapping/pom.xml
new file mode 100644
index 0000000..3701005
--- /dev/null
+++ b/test/servlet30/mapping/pom.xml
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.servlet30</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.servlet30.mapping</groupId>
+    <artifactId>pom</artifactId>
+    <packaging>pom</packaging>
+    <name>Mojarra ${project.version} - Test - Servlet 3.0 - Mapping</name>
+    <modules>
+        <module>exact</module>
+    </modules>
+</project>
\ No newline at end of file
diff --git a/test/servlet30/multi-tenant/app-servlet-uses-factoryfinder-from-init/nbactions.xml b/test/servlet30/multi-tenant/app-servlet-uses-factoryfinder-from-init/nbactions.xml
new file mode 100644
index 0000000..34f2698
--- /dev/null
+++ b/test/servlet30/multi-tenant/app-servlet-uses-factoryfinder-from-init/nbactions.xml
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<actions>
+    <action>
+        <actionName>debug.test.single</actionName>
+        <goals>
+            <goal>test-compile</goal>
+            <goal>surefire:test</goal>
+        </goals>
+        <properties>
+            <test>${packageClassName}</test>
+            <forkMode>once</forkMode>
+            <maven.surefire.debug>-Xdebug -Xrunjdwp:transport=dt_socket,server=n,address=${jpda.address}</maven.surefire.debug>
+            <jpda.listen>true</jpda.listen>
+            <integration.url>http://localhost:8080/test-app-servlet-uses-factoryfinder-from-init/</integration.url>
+        </properties>
+    </action>
+    <action>
+        <actionName>test.single</actionName>
+        <goals>
+            <goal>test-compile</goal>
+            <goal>surefire:test</goal>
+        </goals>
+        <properties>
+            <integration.url>http://localhost:8080/test-app-servlet-uses-factoryfinder-from-init/</integration.url>
+            <test>${packageClassName}</test>
+        </properties>
+    </action>
+</actions>
diff --git a/test/servlet30/multi-tenant/app-servlet-uses-factoryfinder-from-init/pom.xml b/test/servlet30/multi-tenant/app-servlet-uses-factoryfinder-from-init/pom.xml
new file mode 100644
index 0000000..7912d4a
--- /dev/null
+++ b/test/servlet30/multi-tenant/app-servlet-uses-factoryfinder-from-init/pom.xml
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <artifactId>pom</artifactId>
+    <groupId>com.sun.faces.test.servlet30.multi-tenant</groupId>
+    <version>2.2.8-SNAPSHOT</version>
+  </parent>
+  
+  <groupId>com.sun.faces.test.servlet30.multi-tenant</groupId>
+  <artifactId>app-servlet-uses-factoryfinder-from-init</artifactId>
+  <version>2.2.8-SNAPSHOT</version>
+  <packaging>war</packaging>
+  <name>Mojarra ${project.version} - Test - Servlet 3.0 - Multi-Tenant - App Servlet Uses FactoryFinder From init</name>
+  
+  <build>
+    <finalName>test-app-servlet-uses-factoryfinder-from-init</finalName>
+  </build>
+  
+</project>
diff --git a/test/servlet30/multi-tenant/app-servlet-uses-factoryfinder-from-init/src/main/java/com/sun/faces/test/servlet30/multi_tenant/app_servlet_uses_factoryfinder_from_init/BeforeServlet.java b/test/servlet30/multi-tenant/app-servlet-uses-factoryfinder-from-init/src/main/java/com/sun/faces/test/servlet30/multi_tenant/app_servlet_uses_factoryfinder_from_init/BeforeServlet.java
new file mode 100644
index 0000000..1f33cc3
--- /dev/null
+++ b/test/servlet30/multi-tenant/app-servlet-uses-factoryfinder-from-init/src/main/java/com/sun/faces/test/servlet30/multi_tenant/app_servlet_uses_factoryfinder_from_init/BeforeServlet.java
@@ -0,0 +1,93 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+
+package com.sun.faces.test.servlet30.multi_tenant.app_servlet_uses_factoryfinder_from_init;
+
+import java.io.IOException;
+import javax.faces.FactoryFinder;
+import javax.faces.context.FacesContext;
+import javax.faces.lifecycle.LifecycleFactory;
+import javax.servlet.ServletConfig;
+import javax.servlet.ServletContext;
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+public class BeforeServlet extends HttpServlet {
+    private static final long serialVersionUID = 2759083267171493482L;
+    
+    private static final String INIT_HAS_LIFECYCLE_KEY = "BeforeServlet_hasLifecycle";
+    private static final String INIT_HAS_INITFACESCONTEXT_KEY = "BeforeServlet_hasInitFacesContext";
+    
+    private static final String REQUEST_HAS_LIFECYCLE = "BeforeServlet_requestHasLifecycle";
+    private static final String REQUEST_HAS_FACESCONTEXT = "BeforeServlet_requestHasFacesContext";
+
+    @Override
+    public void init(ServletConfig config) throws ServletException {
+        super.init(config);
+        LifecycleFactory lifecycle = (LifecycleFactory) FactoryFinder.getFactory(FactoryFinder.LIFECYCLE_FACTORY);
+        ServletContext sc = config.getServletContext();
+        sc.setAttribute(INIT_HAS_LIFECYCLE_KEY, 
+                (null != lifecycle) ? "TRUE":"FALSE");
+        FacesContext initFacesContext = FacesContext.getCurrentInstance();
+        sc.setAttribute(INIT_HAS_INITFACESCONTEXT_KEY, 
+                (null != initFacesContext) ? "TRUE":"FALSE");
+    }
+
+    @Override
+    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
+        
+        LifecycleFactory lifecycle = (LifecycleFactory) FactoryFinder.getFactory(FactoryFinder.LIFECYCLE_FACTORY);
+        req.setAttribute(REQUEST_HAS_LIFECYCLE, 
+                (null != lifecycle) ? "TRUE":"FALSE");
+        FacesContext facesContext = FacesContext.getCurrentInstance();
+        req.setAttribute(REQUEST_HAS_FACESCONTEXT, 
+                (null != facesContext) ? "TRUE":"FALSE");
+        
+        getServletContext().getRequestDispatcher("/faces/index.xhtml").forward(req, resp);
+    }
+    
+    
+
+
+
+}
diff --git a/test/servlet30/multi-tenant/app-servlet-uses-factoryfinder-from-init/src/main/java/com/sun/faces/test/servlet30/multi_tenant/app_servlet_uses_factoryfinder_from_init/UserBean.java b/test/servlet30/multi-tenant/app-servlet-uses-factoryfinder-from-init/src/main/java/com/sun/faces/test/servlet30/multi_tenant/app_servlet_uses_factoryfinder_from_init/UserBean.java
new file mode 100644
index 0000000..3688ec1
--- /dev/null
+++ b/test/servlet30/multi-tenant/app-servlet-uses-factoryfinder-from-init/src/main/java/com/sun/faces/test/servlet30/multi_tenant/app_servlet_uses_factoryfinder_from_init/UserBean.java
@@ -0,0 +1,92 @@
+package com.sun.faces.test.servlet30.multi_tenant.app_servlet_uses_factoryfinder_from_init;
+
+import java.io.Serializable;
+import java.util.Date;
+import javax.enterprise.context.SessionScoped;
+import javax.faces.application.FacesMessage;
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.validator.ValidatorException;
+import javax.inject.Named;
+
+ at Named
+ at SessionScoped
+public class UserBean implements Serializable {
+    
+    protected String firstName = "Duke";
+    protected String lastName = "Java";
+    protected Date dob;
+    protected String sex = "Unknown";
+    protected String email;
+    protected String serviceLevel = "medium";
+    
+    public UserBean() {}
+
+    public String getFirstName() {
+        return firstName;
+    }
+
+    public void setFirstName(String firstName) {
+        this.firstName = firstName;
+    }
+
+    public String getLastName() {
+        return lastName;
+    }
+
+    public void setLastName(String lastName) {
+        this.lastName = lastName;
+    }
+
+    public Date getDob() {
+        return dob;
+    }
+
+    public void setDob(Date dob) {
+        this.dob = dob;
+    }
+
+    public String getSex() {
+        return sex;
+    }
+
+    public void setSex(String sex) {
+        this.sex = sex;
+    }
+
+    public String getEmail() {
+        return email;
+    }
+
+    public void setEmail(String email) {
+        this.email = email;
+    }
+
+    public String getServiceLevel() {
+        return serviceLevel;
+    }
+
+    public void setServiceLevel(String serviceLevel) {
+        this.serviceLevel = serviceLevel;
+    }
+    
+    public void validateEmail(FacesContext context, UIComponent toValidate,
+            Object value) throws ValidatorException {
+        String emailStr = (String) value;
+        if (-1 == emailStr.indexOf("@")) {
+            FacesMessage message = new FacesMessage("Invalid email address");
+            throw new ValidatorException(message);
+        }
+    }
+
+    public String addConfirmedUser() {
+        // This method would call a database or other service and add the 
+        // confirmed user information.
+        // For now, we just place an informative message in request scope
+        FacesMessage doneMessage = 
+                new FacesMessage("Successfully added new user");
+        FacesContext.getCurrentInstance().addMessage(null, doneMessage);
+        return "done";
+    }
+}
+
diff --git a/test/servlet30/multi-tenant/app-servlet-uses-factoryfinder-from-init/src/main/webapp/WEB-INF/glassfish-web.xml b/test/servlet30/multi-tenant/app-servlet-uses-factoryfinder-from-init/src/main/webapp/WEB-INF/glassfish-web.xml
new file mode 100644
index 0000000..1d34f0e
--- /dev/null
+++ b/test/servlet30/multi-tenant/app-servlet-uses-factoryfinder-from-init/src/main/webapp/WEB-INF/glassfish-web.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
+<glassfish-web-app error-url="">
+  <context-root>/test-app-servlet-uses-factoryfinder-from-init</context-root>
+  <class-loader delegate="true"/>
+  <jsp-config>
+    <property name="keepgenerated" value="true">
+      <description>Keep a copy of the generated servlet class' java code.</description>
+    </property>
+  </jsp-config>
+</glassfish-web-app>
diff --git a/test/servlet30/multi-tenant/app-servlet-uses-factoryfinder-from-init/src/main/webapp/WEB-INF/web.xml b/test/servlet30/multi-tenant/app-servlet-uses-factoryfinder-from-init/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..d255a02
--- /dev/null
+++ b/test/servlet30/multi-tenant/app-servlet-uses-factoryfinder-from-init/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>${webapp.projectStage}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
+        <param-value>${webapp.partialStateSaving}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>${webapp.stateSavingMethod}</param-value>
+    </context-param>
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>2</load-on-startup>
+    </servlet>
+    <servlet>
+        <servlet-name>BeforeServlet</servlet-name>
+        <servlet-class>com.sun.faces.test.servlet30.multi_tenant.app_servlet_uses_factoryfinder_from_init.BeforeServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <servlet-mapping>
+        <servlet-name>BeforeServlet</servlet-name>
+        <url-pattern>/BeforeServlet</url-pattern>
+    </servlet-mapping>
+    <welcome-file-list>
+        <welcome-file>faces/index.xhtml</welcome-file>
+    </welcome-file-list>
+</web-app>
diff --git a/test/servlet30/multi-tenant/app-servlet-uses-factoryfinder-from-init/src/main/webapp/index.xhtml b/test/servlet30/multi-tenant/app-servlet-uses-factoryfinder-from-init/src/main/webapp/index.xhtml
new file mode 100644
index 0000000..c6cde5b
--- /dev/null
+++ b/test/servlet30/multi-tenant/app-servlet-uses-factoryfinder-from-init/src/main/webapp/index.xhtml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <head>
+        <title></title>
+    </head>
+    <body>
+        <h:form prependId="false">
+            <h:inputText value="#{userBean.firstName}" />
+            <h:commandButton value="submit" />
+            
+            <p>First name: <h:outputText id="firstName" value="#{userBean.firstName}" /></p>
+            <p>BeforeServlet init found Lifecycle: <h:outputText id="initHasLifecycle"
+                                                            value="#{applicationScope.BeforeServlet_hasLifecycle}"/></p>
+            <p>BeforeServlet init found FacesContext: <h:outputText id="initHasInitFacesContext"
+                                                            value="#{applicationScope.BeforeServlet_hasInitFacesContext}"/></p>
+            <p>BeforeServlet request found Lifecycle: <h:outputText id="requestHasLifecycle"
+                                                            value="#{requestScope.BeforeServlet_requestHasLifecycle}"/></p>
+            <p>BeforeServlet request found FacesContext: <h:outputText id="requestHasInitFacesContext"
+                                                            value="#{requestScope.BeforeServlet_requestHasFacesContext}"/></p>
+        </h:form>
+    </body>
+</html>
+
diff --git a/test/servlet30/multi-tenant/app-servlet-uses-factoryfinder-from-init/src/test/java/com/sun/faces/test/servlet30/multi_tenant/app_servlet_uses_factoryfinder_from_init/Issue3341IT.java b/test/servlet30/multi-tenant/app-servlet-uses-factoryfinder-from-init/src/test/java/com/sun/faces/test/servlet30/multi_tenant/app_servlet_uses_factoryfinder_from_init/Issue3341IT.java
new file mode 100644
index 0000000..a254e71
--- /dev/null
+++ b/test/servlet30/multi-tenant/app-servlet-uses-factoryfinder-from-init/src/test/java/com/sun/faces/test/servlet30/multi_tenant/app_servlet_uses_factoryfinder_from_init/Issue3341IT.java
@@ -0,0 +1,109 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.multi_tenant.app_servlet_uses_factoryfinder_from_init;
+
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import static org.junit.Assert.assertTrue;
+
+public class Issue3341IT {
+    /**
+     * Stores the web URL.
+     */
+    private String webUrl;
+    /**
+     * Stores the web client.
+     */
+    private WebClient webClient;
+
+    /**
+     * Setup before testing.
+     * 
+     * @throws Exception when a serious error occurs.
+     */
+    @BeforeClass
+    public static void setUpClass() throws Exception {
+    }
+
+    /**
+     * Cleanup after testing.
+     * 
+     * @throws Exception when a serious error occurs.
+     */
+    @AfterClass
+    public static void tearDownClass() throws Exception {
+    }
+
+    /**
+     * Setup before testing.
+     */
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url") + "BeforeServlet";
+        webClient = new WebClient();
+    }
+
+    /**
+     * Tear down after testing.
+     */
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testUseFactoryFinderFromServlet() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl);
+
+        String pageText = page.getBody().asText();
+        assertTrue(pageText.matches("(?s).*BeforeServlet init found Lifecycle:\\s*TRUE.*"));
+        assertTrue(pageText.matches("(?s).*BeforeServlet init found FacesContext:\\sTRUE.*"));
+        assertTrue(pageText.matches("(?s).*BeforeServlet request found Lifecycle:\\s*TRUE.*"));
+        // Yes, the FacesContext.getCurrentInstance() should not be found 
+        // because this is in a Filter before the run of the FacesServlet.service().
+        assertTrue(pageText.matches("(?s).*BeforeServlet request found FacesContext:\\s*FALSE.*"));        
+        
+    }
+}
diff --git a/test/servlet30/multi-tenant/app-sets-tccl/nbactions.xml b/test/servlet30/multi-tenant/app-sets-tccl/nbactions.xml
new file mode 100644
index 0000000..50b04df
--- /dev/null
+++ b/test/servlet30/multi-tenant/app-sets-tccl/nbactions.xml
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<actions>
+    <action>
+        <actionName>debug.test.single</actionName>
+        <goals>
+            <goal>test-compile</goal>
+            <goal>surefire:test</goal>
+        </goals>
+        <properties>
+            <test>${packageClassName}</test>
+            <forkMode>once</forkMode>
+            <maven.surefire.debug>-Xdebug -Xrunjdwp:transport=dt_socket,server=n,address=${jpda.address}</maven.surefire.debug>
+            <jpda.listen>true</jpda.listen>
+            <integration.url>http://localhost:8080/test-app-sets-tccl/</integration.url>
+        </properties>
+    </action>
+    <action>
+        <actionName>test.single</actionName>
+        <goals>
+            <goal>test-compile</goal>
+            <goal>surefire:test</goal>
+        </goals>
+        <properties>
+            <integration.url>http://localhost:8080/test-app-sets-tccl/</integration.url>
+            <test>${packageClassName}</test>
+        </properties>
+    </action>
+</actions>
diff --git a/test/servlet30/multi-tenant/app-sets-tccl/pom.xml b/test/servlet30/multi-tenant/app-sets-tccl/pom.xml
new file mode 100644
index 0000000..a781078
--- /dev/null
+++ b/test/servlet30/multi-tenant/app-sets-tccl/pom.xml
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <artifactId>pom</artifactId>
+    <groupId>com.sun.faces.test.servlet30.multi-tenant</groupId>
+    <version>2.2.8-SNAPSHOT</version>
+  </parent>
+  
+  <groupId>com.sun.faces.test.servlet30.multi-tenant</groupId>
+  <artifactId>app-sets-tccl</artifactId>
+  <version>2.2.8-SNAPSHOT</version>
+  <packaging>war</packaging>
+  <name>Mojarra ${project.version} - Test - Servlet 3.0 - Multi-Tenant - App Sets TCCL</name>
+  
+  <build>
+    <finalName>test-app-sets-tccl</finalName>
+  </build>
+  
+</project>
diff --git a/test/servlet30/multi-tenant/app-sets-tccl/src/main/java/com/sun/faces/test/servlet30/multi_tenant/app_sets_tccl/BeforeFilter.java b/test/servlet30/multi-tenant/app-sets-tccl/src/main/java/com/sun/faces/test/servlet30/multi_tenant/app_sets_tccl/BeforeFilter.java
new file mode 100644
index 0000000..17736b4
--- /dev/null
+++ b/test/servlet30/multi-tenant/app-sets-tccl/src/main/java/com/sun/faces/test/servlet30/multi_tenant/app_sets_tccl/BeforeFilter.java
@@ -0,0 +1,165 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+
+package com.sun.faces.test.servlet30.multi_tenant.app_sets_tccl;
+
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.net.URL;
+import java.net.URLClassLoader;
+import javax.faces.FactoryFinder;
+import javax.faces.context.FacesContext;
+import javax.faces.context.FacesContextFactory;
+import javax.faces.lifecycle.LifecycleFactory;
+import javax.servlet.Filter;
+import javax.servlet.FilterChain;
+import javax.servlet.FilterConfig;
+import javax.servlet.ServletContext;
+import javax.servlet.ServletException;
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletResponse;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+public class BeforeFilter implements Filter {
+    
+    private FilterConfig filterConfig = null;
+    
+    private static final String INIT_HAS_LIFECYCLE_KEY = "BeforeServlet_hasLifecycle";
+    private static final String INIT_HAS_INITFACESCONTEXT_KEY = "BeforeServlet_hasInitFacesContext";
+    
+    private static final String REQUEST_HAS_LIFECYCLE = "BeforeServlet_requestHasLifecycle";
+    private static final String REQUEST_HAS_FACESCONTEXT = "BeforeServlet_requestHasFacesContext";
+
+    public BeforeFilter() {
+    }    
+    
+    @Override
+    public void doFilter(ServletRequest request, ServletResponse response,
+            FilterChain chain)
+            throws IOException, ServletException {
+        
+        Thread thread = Thread.currentThread();
+        ClassLoader tccl = thread.getContextClassLoader();
+        ClassLoader tcclp1 = new URLClassLoader(new URL[0], tccl); //new URLClassLoader(new URL [0]);
+        thread.setContextClassLoader(tcclp1);
+        
+        HttpServletRequest req = (HttpServletRequest) request;
+        LifecycleFactory lifecycle = (LifecycleFactory) FactoryFinder.getFactory(FactoryFinder.LIFECYCLE_FACTORY);
+        req.setAttribute(REQUEST_HAS_LIFECYCLE, 
+                (null != lifecycle) ? "TRUE":"FALSE");
+        FacesContext facesContext = FacesContext.getCurrentInstance();
+        req.setAttribute(REQUEST_HAS_FACESCONTEXT, 
+                (null != facesContext) ? "TRUE":"FALSE");
+        
+        // Dispatching to JSF throws this exception:
+        /**
+         * 
+         * 
+
+java.lang.IllegalStateException: Singleton not set for java.net.URLClassLoader at 511e5bf4
+	at org.glassfish.weld.ACLSingletonProvider$ACLSingleton.get(ACLSingletonProvider.java:110)
+	at org.jboss.weld.Container.instance(Container.java:54)
+	at org.jboss.weld.jsf.ConversationAwareViewHandler.getConversationContext(ConversationAwareViewHandler.java:80)
+	at org.jboss.weld.jsf.ConversationAwareViewHandler.getActionURL(ConversationAwareViewHandler.java:102)
+	at com.sun.faces.renderkit.html_basic.FormRenderer.getActionStr(FormRenderer.java:250)
+	at com.sun.faces.renderkit.html_basic.FormRenderer.encodeBegin(FormRenderer.java:143)
+	at javax.faces.component.UIComponentBase.encodeBegin(UIComponentBase.java:864)
+	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1854)
+	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1859)
+	at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:456)
+	at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:133)
+	at javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:337)
+	at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:120)
+	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
+	at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:219)
+         * 
+         */
+        // I think this is a side-effect of Weld also not being resilient
+        // to TCCL replacement.  To continue with the job of exercising 
+        // the fix in FactoryFinder, we just exercise it directly here.
+        // I confirmed this is fixed in Weld 2.2.2 Final, which is in GlassFish 4.0.1
+        final boolean weldIsTCCLReplacementResilient = true;
+        
+        if (weldIsTCCLReplacementResilient) {
+            try {
+                chain.doFilter(request, response);
+            } catch (Exception t) {
+                throw new ServletException(t);
+            } finally {
+                thread.setContextClassLoader(tccl);
+            }
+        } else {
+            FacesContextFactory fcFactory = (FacesContextFactory) 
+                    FactoryFinder.getFactory(FactoryFinder.FACES_CONTEXT_FACTORY);
+            HttpServletResponse resp = (HttpServletResponse) response;
+            PrintWriter pw = resp.getWriter();
+            try {
+                if (null != fcFactory) {
+                    pw.print("<html><body><p id=\"result\">SUCCESS</p></body></html>");
+                } else {
+                    pw.print("<html><body><p id=\"result\">FAILURE</p></body></html>");
+                }
+                resp.setStatus(200);
+                pw.close();
+            } catch (Exception e) {
+            }
+        }
+        
+    }
+
+    public void destroy() {        
+    }
+
+    public void init(FilterConfig filterConfig) {        
+        this.filterConfig = filterConfig;
+        ServletContext sc = this.filterConfig.getServletContext();
+        LifecycleFactory lifecycle = (LifecycleFactory) FactoryFinder.getFactory(FactoryFinder.LIFECYCLE_FACTORY);
+        sc.setAttribute(INIT_HAS_LIFECYCLE_KEY, 
+                (null != lifecycle) ? "TRUE":"FALSE");
+        FacesContext initFacesContext = FacesContext.getCurrentInstance();
+        sc.setAttribute(INIT_HAS_INITFACESCONTEXT_KEY, 
+                (null != initFacesContext) ? "TRUE":"FALSE");
+        
+        
+    }
+    
+}
diff --git a/test/servlet30/multi-tenant/app-sets-tccl/src/main/java/com/sun/faces/test/servlet30/multi_tenant/app_sets_tccl/UserBean.java b/test/servlet30/multi-tenant/app-sets-tccl/src/main/java/com/sun/faces/test/servlet30/multi_tenant/app_sets_tccl/UserBean.java
new file mode 100644
index 0000000..9690c76
--- /dev/null
+++ b/test/servlet30/multi-tenant/app-sets-tccl/src/main/java/com/sun/faces/test/servlet30/multi_tenant/app_sets_tccl/UserBean.java
@@ -0,0 +1,92 @@
+package com.sun.faces.test.servlet30.multi_tenant.app_sets_tccl;
+
+import java.io.Serializable;
+import java.util.Date;
+import javax.faces.application.FacesMessage;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.SessionScoped;
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.validator.ValidatorException;
+
+ at ManagedBean
+ at SessionScoped
+public class UserBean implements Serializable {
+    
+    protected String firstName = "Duke";
+    protected String lastName = "Java";
+    protected Date dob;
+    protected String sex = "Unknown";
+    protected String email;
+    protected String serviceLevel = "medium";
+    
+    public UserBean() {}
+
+    public String getFirstName() {
+        return firstName;
+    }
+
+    public void setFirstName(String firstName) {
+        this.firstName = firstName;
+    }
+
+    public String getLastName() {
+        return lastName;
+    }
+
+    public void setLastName(String lastName) {
+        this.lastName = lastName;
+    }
+
+    public Date getDob() {
+        return dob;
+    }
+
+    public void setDob(Date dob) {
+        this.dob = dob;
+    }
+
+    public String getSex() {
+        return sex;
+    }
+
+    public void setSex(String sex) {
+        this.sex = sex;
+    }
+
+    public String getEmail() {
+        return email;
+    }
+
+    public void setEmail(String email) {
+        this.email = email;
+    }
+
+    public String getServiceLevel() {
+        return serviceLevel;
+    }
+
+    public void setServiceLevel(String serviceLevel) {
+        this.serviceLevel = serviceLevel;
+    }
+    
+    public void validateEmail(FacesContext context, UIComponent toValidate,
+            Object value) throws ValidatorException {
+        String emailStr = (String) value;
+        if (-1 == emailStr.indexOf("@")) {
+            FacesMessage message = new FacesMessage("Invalid email address");
+            throw new ValidatorException(message);
+        }
+    }
+
+    public String addConfirmedUser() {
+        // This method would call a database or other service and add the 
+        // confirmed user information.
+        // For now, we just place an informative message in request scope
+        FacesMessage doneMessage = 
+                new FacesMessage("Successfully added new user");
+        FacesContext.getCurrentInstance().addMessage(null, doneMessage);
+        return "done";
+    }
+}
+
diff --git a/test/servlet30/multi-tenant/app-sets-tccl/src/main/webapp/WEB-INF/glassfish-web.xml b/test/servlet30/multi-tenant/app-sets-tccl/src/main/webapp/WEB-INF/glassfish-web.xml
new file mode 100644
index 0000000..cc00b1f
--- /dev/null
+++ b/test/servlet30/multi-tenant/app-sets-tccl/src/main/webapp/WEB-INF/glassfish-web.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
+<glassfish-web-app error-url="">
+  <context-root>/test-app-sets-tccl</context-root>
+  <class-loader delegate="true"/>
+  <jsp-config>
+    <property name="keepgenerated" value="true">
+      <description>Keep a copy of the generated servlet class' java code.</description>
+    </property>
+  </jsp-config>
+</glassfish-web-app>
diff --git a/test/servlet30/multi-tenant/app-sets-tccl/src/main/webapp/WEB-INF/web.xml b/test/servlet30/multi-tenant/app-sets-tccl/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..a48dc40
--- /dev/null
+++ b/test/servlet30/multi-tenant/app-sets-tccl/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>${webapp.projectStage}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
+        <param-value>${webapp.partialStateSaving}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>${webapp.stateSavingMethod}</param-value>
+    </context-param>
+    <filter>
+        <filter-name>BeforeFilter</filter-name>
+        <filter-class>com.sun.faces.test.servlet30.multi_tenant.app_sets_tccl.BeforeFilter</filter-class>
+    </filter>
+    <filter-mapping>
+        <filter-name>BeforeFilter</filter-name>
+        <url-pattern>/*</url-pattern>
+    </filter-mapping>
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <welcome-file-list>
+        <welcome-file>faces/index.xhtml</welcome-file>
+    </welcome-file-list>
+    
+</web-app>
diff --git a/test/servlet30/multi-tenant/app-sets-tccl/src/main/webapp/index.xhtml b/test/servlet30/multi-tenant/app-sets-tccl/src/main/webapp/index.xhtml
new file mode 100644
index 0000000..c6cde5b
--- /dev/null
+++ b/test/servlet30/multi-tenant/app-sets-tccl/src/main/webapp/index.xhtml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <head>
+        <title></title>
+    </head>
+    <body>
+        <h:form prependId="false">
+            <h:inputText value="#{userBean.firstName}" />
+            <h:commandButton value="submit" />
+            
+            <p>First name: <h:outputText id="firstName" value="#{userBean.firstName}" /></p>
+            <p>BeforeServlet init found Lifecycle: <h:outputText id="initHasLifecycle"
+                                                            value="#{applicationScope.BeforeServlet_hasLifecycle}"/></p>
+            <p>BeforeServlet init found FacesContext: <h:outputText id="initHasInitFacesContext"
+                                                            value="#{applicationScope.BeforeServlet_hasInitFacesContext}"/></p>
+            <p>BeforeServlet request found Lifecycle: <h:outputText id="requestHasLifecycle"
+                                                            value="#{requestScope.BeforeServlet_requestHasLifecycle}"/></p>
+            <p>BeforeServlet request found FacesContext: <h:outputText id="requestHasInitFacesContext"
+                                                            value="#{requestScope.BeforeServlet_requestHasFacesContext}"/></p>
+        </h:form>
+    </body>
+</html>
+
diff --git a/test/servlet30/multi-tenant/app-sets-tccl/src/test/java/com/sun/faces/test/servlet30/multi_tenant/app_sets_tccl/Issue3341IT.java b/test/servlet30/multi-tenant/app-sets-tccl/src/test/java/com/sun/faces/test/servlet30/multi_tenant/app_sets_tccl/Issue3341IT.java
new file mode 100644
index 0000000..742f332
--- /dev/null
+++ b/test/servlet30/multi-tenant/app-sets-tccl/src/test/java/com/sun/faces/test/servlet30/multi_tenant/app_sets_tccl/Issue3341IT.java
@@ -0,0 +1,110 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.multi_tenant.app_sets_tccl;
+
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import static org.junit.Assert.assertTrue;
+
+public class Issue3341IT {
+    /**
+     * Stores the web URL.
+     */
+    private String webUrl;
+    /**
+     * Stores the web client.
+     */
+    private WebClient webClient;
+
+    /**
+     * Setup before testing.
+     * 
+     * @throws Exception when a serious error occurs.
+     */
+    @BeforeClass
+    public static void setUpClass() throws Exception {
+    }
+
+    /**
+     * Cleanup after testing.
+     * 
+     * @throws Exception when a serious error occurs.
+     */
+    @AfterClass
+    public static void tearDownClass() throws Exception {
+    }
+
+    /**
+     * Setup before testing.
+     */
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    /**
+     * Tear down after testing.
+     */
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testTCCLReplacementResilience() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl);
+
+        String pageText = page.getBody().asText();
+        assertTrue(pageText.matches("(?s).*Duke.*submit.*"));
+        assertTrue(pageText.matches("(?s).*First name:\\s*Duke.*"));
+        assertTrue(pageText.matches("(?s).*BeforeServlet init found Lifecycle:\\s*TRUE.*"));
+        assertTrue(pageText.matches("(?s).*BeforeServlet init found FacesContext:\\sTRUE.*"));
+        assertTrue(pageText.matches("(?s).*BeforeServlet request found Lifecycle:\\s*TRUE.*"));
+        // Yes, the FacesContext.getCurrentInstance() should not be found 
+        // because this is in a Filter before the run of the FacesServlet.service().
+        assertTrue(pageText.matches("(?s).*BeforeServlet request found FacesContext:\\s*FALSE.*"));        
+    }
+}
diff --git a/test/servlet30/multi-tenant/pom.xml b/test/servlet30/multi-tenant/pom.xml
new file mode 100644
index 0000000..1b18ed8
--- /dev/null
+++ b/test/servlet30/multi-tenant/pom.xml
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.servlet30</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.servlet30.multi-tenant</groupId>
+    <artifactId>pom</artifactId>
+    <packaging>pom</packaging>
+    <name>Mojarra ${project.version} - Test - Servlet 3.0 - Multi-Tenant</name>
+    <modules>
+      <module>app-servlet-uses-factoryfinder-from-init</module>
+      <module>app-sets-tccl</module>
+    </modules>
+</project>
diff --git a/test/servlet30/navigation/pom.xml b/test/servlet30/navigation/pom.xml
new file mode 100644
index 0000000..39ec245
--- /dev/null
+++ b/test/servlet30/navigation/pom.xml
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.servlet30</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.servlet30</groupId>
+    <artifactId>navigation</artifactId>
+    <packaging>war</packaging>
+    <name>Mojarra ${project.version} - Test - Servlet 3.0 - Navigation</name>
+        <build>
+        <finalName>test-servlet30-navigation</finalName>
+    </build>
+    <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/test/servlet30/navigation/src/main/webapp/WEB-INF/faces-config.xml b/test/servlet30/navigation/src/main/webapp/WEB-INF/faces-config.xml
new file mode 100644
index 0000000..4c0d6cc
--- /dev/null
+++ b/test/servlet30/navigation/src/main/webapp/WEB-INF/faces-config.xml
@@ -0,0 +1,58 @@
+<?xml version='1.0' encoding='UTF-8'?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<faces-config 
+    xmlns="http://java.sun.com/xml/ns/javaee"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
+    version="2.0">
+    <navigation-rule>
+        <from-view-id>/viewParams1.jsp</from-view-id>
+        <navigation-case>
+            <from-outcome>viewParams1</from-outcome>
+            <to-view-id>/viewParams1b.jsp</to-view-id>
+            <redirect include-view-params="true"/>
+        </navigation-case>
+    </navigation-rule>
+</faces-config>
diff --git a/test/servlet30/navigation/src/main/webapp/WEB-INF/glassfish-web.xml b/test/servlet30/navigation/src/main/webapp/WEB-INF/glassfish-web.xml
new file mode 100644
index 0000000..d0d7750
--- /dev/null
+++ b/test/servlet30/navigation/src/main/webapp/WEB-INF/glassfish-web.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
+<glassfish-web-app error-url="">
+  <context-root>/test-servlet30-navigation</context-root>
+  <class-loader delegate="true"/>
+  <jsp-config>
+    <property name="keepgenerated" value="true">
+      <description>Keep a copy of the generated servlet class' java code.</description>
+    </property>
+  </jsp-config>
+</glassfish-web-app>
diff --git a/test/servlet30/navigation/src/main/webapp/WEB-INF/web.xml b/test/servlet30/navigation/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..741eb9d
--- /dev/null
+++ b/test/servlet30/navigation/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" 
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>${webapp.projectStage}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
+        <param-value>${webapp.partialStateSaving}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>${webapp.stateSavingMethod}</param-value>
+    </context-param>
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <session-config>
+        <session-timeout>30</session-timeout>
+    </session-config>
+    <welcome-file-list>
+        <welcome-file>faces/index.xhtml</welcome-file>
+    </welcome-file-list>
+</web-app>
diff --git a/test/servlet30/navigation/src/main/webapp/viewParams1.jsp b/test/servlet30/navigation/src/main/webapp/viewParams1.jsp
new file mode 100644
index 0000000..21c2837
--- /dev/null
+++ b/test/servlet30/navigation/src/main/webapp/viewParams1.jsp
@@ -0,0 +1,59 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<%@ taglib uri="http://java.sun.com/jsf/core"  prefix="f" %>
+<%@ taglib uri="http://java.sun.com/jsf/html"  prefix="h" %>
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+
+<html>
+    <head>
+        <title>View Params NullPointerException</title>
+    </head>
+    <f:view>
+        <h:form id="form">
+            <h:commandButton id="button"
+                             action="viewParams1"
+                             value="Refresh w/ params)"/>
+        </h:form>
+    </f:view>
+</html>
diff --git a/test/servlet30/navigation/src/main/webapp/viewParams1b.jsp b/test/servlet30/navigation/src/main/webapp/viewParams1b.jsp
new file mode 100644
index 0000000..53ebaea
--- /dev/null
+++ b/test/servlet30/navigation/src/main/webapp/viewParams1b.jsp
@@ -0,0 +1,61 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<%@ taglib uri="http://java.sun.com/jsf/core"  prefix="f" %>
+<%@ taglib uri="http://java.sun.com/jsf/html"  prefix="h" %>
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+
+<html>
+    <head>
+        <title>View Params NullPointerException</title>
+    </head>
+    <body>
+        <h1>ViewParams - Page 2</h1>
+        <f:view>
+            <h:form id="form">
+                <h:outputText value="PAGE 2 OUTPUT"/>
+            </h:form>
+        </f:view>
+        <hr>
+    </body>
+</html>
diff --git a/test/servlet30/navigation/src/test/java/com/sun/faces/test/servlet30/navigation/Issue2266IT.java b/test/servlet30/navigation/src/test/java/com/sun/faces/test/servlet30/navigation/Issue2266IT.java
new file mode 100644
index 0000000..b8c1029
--- /dev/null
+++ b/test/servlet30/navigation/src/test/java/com/sun/faces/test/servlet30/navigation/Issue2266IT.java
@@ -0,0 +1,73 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet30.navigation;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class Issue2266IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testViewParamsNullPointerException() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/viewParams1.jsp");
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getHtmlElementById("form:button");
+        page = button.click();
+        assertTrue(page.asXml().contains("PAGE 2 OUTPUT"));
+    }
+}
diff --git a/test/servlet30/pom.xml b/test/servlet30/pom.xml
new file mode 100644
index 0000000..6043228
--- /dev/null
+++ b/test/servlet30/pom.xml
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.servlet30</groupId>
+    <artifactId>pom</artifactId>
+    <packaging>pom</packaging>
+    <name>Mojarra ${project.version} - Test - Servlet 3.0</name>
+    <dependencies>
+        <dependency>
+            <groupId>com.sun.faces.test</groupId>
+            <artifactId>util</artifactId>
+            <version>${project.version}</version>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+    <modules>
+        <module>ajax</module>
+        <module>component</module>
+        <module>composite</module>
+        <module>dynamic</module>
+        <module>el</module>
+        <module>facelets</module>
+        <module>factory</module>
+        <module>mapping</module>
+        <module>multi-tenant</module>
+        <module>navigation</module>
+        <module>systest</module>
+    </modules>
+</project>
diff --git a/test/servlet30/systest/pom.xml b/test/servlet30/systest/pom.xml
new file mode 100644
index 0000000..090cfa9
--- /dev/null
+++ b/test/servlet30/systest/pom.xml
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.servlet30</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.servlet30</groupId>
+    <artifactId>systest</artifactId>
+    <packaging>war</packaging>
+    <name>Mojarra ${project.version} - Test - Servlet 3.0 - Systest</name>
+    <build>
+        <finalName>jsf-systest</finalName>
+    </build>
+    <dependencies>
+        <dependency>
+            <groupId>net.sourceforge.htmlunit</groupId>
+            <artifactId>htmlunit</artifactId>
+            <version>2.4</version>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+    <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/annotation/AnnotatedBean.java b/test/servlet30/systest/src/main/java/com/sun/faces/annotation/AnnotatedBean.java
new file mode 100644
index 0000000..d531734
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/annotation/AnnotatedBean.java
@@ -0,0 +1,73 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.annotation;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.ManagedProperty;
+import javax.faces.bean.RequestScoped;
+
+ at ManagedBean
+ at RequestScoped
+public class AnnotatedBean {
+
+    @ManagedProperty(name="silly",value="#{requestScope.name}")
+    private String name;
+
+    public void setSilly(String name) {
+        this.name = name;
+    }
+
+    public String getSilly() {
+        return name;
+    }
+
+    @ManagedProperty(name="age",value="#{requestScope.age}")
+    private int age;
+
+    public int getAge() {
+        return age;
+    }
+
+    public void setAge(int age) {
+        this.age = age;
+    }
+    
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/annotation/AnnotatedBehavior.java b/test/servlet30/systest/src/main/java/com/sun/faces/annotation/AnnotatedBehavior.java
new file mode 100644
index 0000000..685c152
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/annotation/AnnotatedBehavior.java
@@ -0,0 +1,67 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.annotation;
+
+import javax.annotation.Resource;
+import javax.faces.component.behavior.ClientBehaviorBase;
+import javax.faces.component.behavior.FacesBehavior;
+
+/**
+ * <p class="changed_added_2_0"></p>
+ * @author asmirnov at exadel.com
+ *
+ */
+ at FacesBehavior("AnnotatedBehavior")
+public class AnnotatedBehavior extends ClientBehaviorBase {
+
+	@Override
+	public String getRendererType() {
+		return "AnnotatedBehaviorRenderer";
+	}
+
+    @Resource(name="welcomeMessage")
+    private String welcomeMessage;
+
+    public String getWelcomeMessage() {
+        return welcomeMessage;
+    }
+
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/annotation/AnnotatedBehaviorRenderer.java b/test/servlet30/systest/src/main/java/com/sun/faces/annotation/AnnotatedBehaviorRenderer.java
new file mode 100644
index 0000000..23b97f0
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/annotation/AnnotatedBehaviorRenderer.java
@@ -0,0 +1,54 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.annotation;
+
+import javax.faces.render.ClientBehaviorRenderer;
+import javax.faces.render.FacesBehaviorRenderer;
+
+/**
+ * <p class="changed_added_2_0"></p>
+ * @author asmirnov at exadel.com
+ *
+ */
+ at FacesBehaviorRenderer(rendererType="AnnotatedBehaviorRenderer")
+public class AnnotatedBehaviorRenderer extends ClientBehaviorRenderer {
+
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/annotation/AnnotatedComponent.java b/test/servlet30/systest/src/main/java/com/sun/faces/annotation/AnnotatedComponent.java
new file mode 100644
index 0000000..d9e38ce
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/annotation/AnnotatedComponent.java
@@ -0,0 +1,56 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.annotation;
+
+import javax.faces.component.FacesComponent;
+import javax.faces.component.UIComponentBase;
+
+/**
+ * Annotated Component
+ */
+ at FacesComponent(value = "AnnotatedComponent")
+public class AnnotatedComponent extends UIComponentBase {
+
+    public String getFamily() {
+        return "AnnotatedComponent";
+    }
+
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/annotation/AnnotatedComponentSystemEvent.java b/test/servlet30/systest/src/main/java/com/sun/faces/annotation/AnnotatedComponentSystemEvent.java
new file mode 100644
index 0000000..e9fb4f4
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/annotation/AnnotatedComponentSystemEvent.java
@@ -0,0 +1,56 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.annotation;
+
+import javax.faces.component.UIComponent;
+import javax.faces.event.ComponentSystemEvent;
+import javax.faces.event.NamedEvent;
+
+/**
+ *
+ */
+ at NamedEvent
+public class AnnotatedComponentSystemEvent extends ComponentSystemEvent {
+    public AnnotatedComponentSystemEvent(UIComponent component) {
+        super(component);
+    }
+
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/annotation/AnnotatedConverter.java b/test/servlet30/systest/src/main/java/com/sun/faces/annotation/AnnotatedConverter.java
new file mode 100644
index 0000000..6bd53d7
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/annotation/AnnotatedConverter.java
@@ -0,0 +1,72 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.annotation;
+
+import javax.annotation.Resource;
+import javax.faces.convert.Converter;
+import javax.faces.convert.FacesConverter;
+import javax.faces.context.FacesContext;
+import javax.faces.component.UIComponent;
+
+
+ at FacesConverter(value = "AnnotatedConverter")
+public class AnnotatedConverter implements Converter {
+
+    public Object getAsObject(FacesContext context,
+                              UIComponent component,
+                              String value) {
+        return value;
+    }
+
+    public String getAsString(FacesContext context,
+                              UIComponent component,
+                              Object value) {
+        return value.toString();
+    }
+    
+    @Resource(name="welcomeMessage")
+    private String welcomeMessage;
+
+    public String getWelcomeMessage() {
+        return welcomeMessage;
+    }
+    
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/annotation/AnnotatedConverterForClass.java b/test/servlet30/systest/src/main/java/com/sun/faces/annotation/AnnotatedConverterForClass.java
new file mode 100644
index 0000000..d47dfb8
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/annotation/AnnotatedConverterForClass.java
@@ -0,0 +1,64 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.annotation;
+
+import javax.faces.convert.Converter;
+import javax.faces.convert.FacesConverter;
+import javax.faces.context.FacesContext;
+import javax.faces.component.UIComponent;
+import javax.faces.validator.FacesValidator;
+
+
+ at FacesConverter(forClass=java.lang.CharSequence.class)
+public class AnnotatedConverterForClass implements Converter {
+
+    public Object getAsObject(FacesContext context,
+                              UIComponent component,
+                              String value) {
+        return value;
+    }
+
+    public String getAsString(FacesContext context,
+                              UIComponent component,
+                              Object value) {
+        return value.toString();
+    }
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/annotation/AnnotatedPhaseListener.java b/test/servlet30/systest/src/main/java/com/sun/faces/annotation/AnnotatedPhaseListener.java
new file mode 100644
index 0000000..6a21cf4
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/annotation/AnnotatedPhaseListener.java
@@ -0,0 +1,78 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+ * Copyright (c) 2011 Oracle and/or its affiliates. All rights reserved.
+
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.annotation;
+
+import java.util.Map;
+import javax.annotation.Resource;
+import javax.faces.context.FacesContext;
+import javax.faces.event.PhaseEvent;
+import javax.faces.event.PhaseId;
+import javax.faces.event.PhaseListener;
+
+
+public class AnnotatedPhaseListener implements PhaseListener {
+    
+    public AnnotatedPhaseListener() { }
+    
+
+    public void afterPhase(PhaseEvent pe) {
+        
+    }
+
+    public void beforePhase(PhaseEvent pe) {
+
+        Map<String, Object> requestMap = FacesContext.getCurrentInstance().getExternalContext().getRequestMap();
+        requestMap.put("AnnotatedPhaseListenerMessage", getWelcomeMessage());
+    }
+
+    public PhaseId getPhaseId() {
+        return PhaseId.ANY_PHASE;
+    }
+    
+    @Resource(name="welcomeMessage")
+    private String welcomeMessage;
+
+    public String getWelcomeMessage() {
+        return welcomeMessage;
+    }
+
+    
+    
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/annotation/AnnotatedRenderer.java b/test/servlet30/systest/src/main/java/com/sun/faces/annotation/AnnotatedRenderer.java
new file mode 100644
index 0000000..07285cc
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/annotation/AnnotatedRenderer.java
@@ -0,0 +1,52 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.annotation;
+
+import javax.faces.render.Renderer;
+import javax.faces.render.FacesRenderer;
+
+ at FacesRenderer(renderKitId = "HTML_BASIC",
+               rendererType = "AnnotatedRenderer",
+               componentFamily = "AnnotatedRenderer")
+public class AnnotatedRenderer extends Renderer {
+
+    
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/annotation/AnnotatedValidator.java b/test/servlet30/systest/src/main/java/com/sun/faces/annotation/AnnotatedValidator.java
new file mode 100644
index 0000000..bf0efb8
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/annotation/AnnotatedValidator.java
@@ -0,0 +1,65 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.annotation;
+
+import javax.annotation.Resource;
+import javax.faces.validator.Validator;
+import javax.faces.validator.ValidatorException;
+import javax.faces.validator.FacesValidator;
+import javax.faces.context.FacesContext;
+import javax.faces.component.UIComponent;
+
+ at FacesValidator(value = "AnnotatedValidator")
+public class AnnotatedValidator implements Validator {
+    public void validate(FacesContext context,
+                         UIComponent component,
+                         Object value) throws ValidatorException {
+        return;
+    }
+    
+    @Resource(name="welcomeMessage")
+    private String welcomeMessage;
+
+    public String getWelcomeMessage() {
+        return welcomeMessage;
+    }
+    
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/annotation/AnnotatedValidatorDefault.java b/test/servlet30/systest/src/main/java/com/sun/faces/annotation/AnnotatedValidatorDefault.java
new file mode 100644
index 0000000..20e2181
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/annotation/AnnotatedValidatorDefault.java
@@ -0,0 +1,60 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.annotation;
+
+import javax.faces.validator.FacesValidator;
+import javax.faces.validator.Validator;
+import javax.faces.validator.ValidatorException;
+import javax.faces.context.FacesContext;
+import javax.faces.component.UIComponent;
+
+
+ at FacesValidator(value = "AnnotatedValidatorDefault", isDefault = true)
+public class AnnotatedValidatorDefault implements Validator {
+
+    public void validate(FacesContext context,
+                         UIComponent component,
+                         Object value)
+    throws ValidatorException {
+
+    }
+
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/annotation/AnnotatedValidatorNoValue.java b/test/servlet30/systest/src/main/java/com/sun/faces/annotation/AnnotatedValidatorNoValue.java
new file mode 100644
index 0000000..99c5477
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/annotation/AnnotatedValidatorNoValue.java
@@ -0,0 +1,63 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.annotation;
+
+import javax.faces.validator.Validator;
+import javax.faces.validator.ValidatorException;
+import javax.faces.validator.FacesValidator;
+import javax.faces.context.FacesContext;
+import javax.faces.component.UIComponent;
+
+//@FacesValidator
+public class AnnotatedValidatorNoValue implements Validator {
+    public void validate(FacesContext context,
+                         UIComponent component,
+                         Object value) throws ValidatorException {
+        return;
+    }
+    
+    private String welcomeMessage ="AnnotatedValidatorNoValue";
+
+    public String getWelcomeMessage() {
+        return welcomeMessage;
+    }
+    
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/annotation/AnnotationTestBean.java b/test/servlet30/systest/src/main/java/com/sun/faces/annotation/AnnotationTestBean.java
new file mode 100644
index 0000000..1cf334f
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/annotation/AnnotationTestBean.java
@@ -0,0 +1,310 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.annotation;
+
+import java.util.List;
+import java.util.Set;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import javax.faces.FactoryFinder;
+import javax.faces.application.Application;
+import javax.faces.component.UIComponent;
+import javax.faces.component.behavior.Behavior;
+import javax.faces.context.FacesContext;
+import javax.faces.convert.Converter;
+import javax.faces.render.ClientBehaviorRenderer;
+import javax.faces.render.RenderKit;
+import javax.faces.render.RenderKitFactory;
+import javax.faces.render.Renderer;
+import javax.faces.validator.Validator;
+import javax.servlet.http.HttpServletRequest;
+import javax.el.ExpressionFactory;
+import javax.el.ValueExpression;
+
+import com.sun.faces.application.ApplicationAssociate;
+import com.sun.faces.mgbean.BeanBuilder;
+import com.sun.faces.mgbean.BeanManager;
+import com.sun.faces.mgbean.ManagedBeanInfo;
+import javax.faces.FacesException;
+
+
+public class AnnotationTestBean {
+
+    public String getTestResult() {
+
+        try {
+            testAnnotatedComponentsWebInfClasses();
+            testAnnotatedComponentsWebInfLib();
+            return Boolean.TRUE.toString();
+        } catch (Exception e) {
+            Logger.getAnonymousLogger().log(Level.SEVERE,
+                                            "AnnotationTestBean validation failure!",
+                                            e);
+            return Boolean.FALSE.toString();
+        }
+    }
+
+    private void testAnnotatedComponentsWebInfClasses() throws Exception {
+        
+        String injectedString;
+
+        FacesContext ctx = FacesContext.getCurrentInstance();
+        Application app = ctx.getApplication();
+
+        UIComponent c = app.createComponent("AnnotatedComponent");
+        assertNotNull(c);
+        assertTrue(c instanceof AnnotatedComponent);
+
+        Converter cv = app.createConverter("AnnotatedConverter");
+        assertNotNull(cv);
+        assertTrue(cv instanceof AnnotatedConverter);
+        injectedString = ((AnnotatedConverter)cv).getWelcomeMessage();
+        assertTrue(injectedString.equals("Hello World from env-entry!"));
+        
+
+        cv = app.createConverter(java.lang.CharSequence.class);
+        assertNotNull(cv);
+        assertTrue(cv instanceof AnnotatedConverterForClass);
+
+        Validator v = app.createValidator("AnnotatedValidator");
+        assertNotNull(v);
+        assertTrue(v instanceof AnnotatedValidator);
+        Set<String> defaultValidatorIds = app.getDefaultValidatorInfo().keySet();
+        assertFalse(defaultValidatorIds.contains("AnnotatedValidator"));
+        injectedString = ((AnnotatedValidator)v).getWelcomeMessage();
+        assertTrue(injectedString.equals("Hello World from env-entry!"));
+
+        /*****  JAVASERVERFACES-3266
+        v = app.createValidator("annotatedValidatorNoValue");
+        assertNotNull(v);
+        assertTrue(v instanceof AnnotatedValidatorNoValue);
+        defaultValidatorIds = app.getDefaultValidatorInfo().keySet();
+        assertFalse(defaultValidatorIds.contains("AnnotatedValidatorNoValue"));
+        String welcomeMessage = ((AnnotatedValidatorNoValue)v).getWelcomeMessage();
+        assertTrue(welcomeMessage.equals("AnnotatedValidatorNoValue"));
+        
+        boolean exceptionThrown = false;
+        v = null;
+        try {
+            v = app.createValidator("AnnotatedValidatorNoValue");
+        }
+        catch (FacesException fe) {
+            assertTrue(null == v);
+            exceptionThrown = true;
+        }
+        assertTrue(exceptionThrown);
+         ***/
+        
+
+        // AnnotatedValidatorDefault has isDefault set to true.  Make sure
+        // it's present in the default validator info obtained above.
+        assertTrue(defaultValidatorIds.contains("AnnotatedValidatorDefault"));
+        
+        Behavior b = app.createBehavior("AnnotatedBehavior");
+        assertNotNull(b);
+        assertTrue(b instanceof AnnotatedBehavior);
+        injectedString = ((AnnotatedBehavior)b).getWelcomeMessage();
+        assertTrue(injectedString.equals("Hello World from env-entry!"));
+
+        RenderKitFactory rkf = (RenderKitFactory) FactoryFinder
+              .getFactory(FactoryFinder.RENDER_KIT_FACTORY);
+        RenderKit rk =
+              rkf.getRenderKit(ctx, RenderKitFactory.HTML_BASIC_RENDER_KIT);
+        assertNotNull(rk);
+
+        Renderer r = rk.getRenderer("AnnotatedRenderer", "AnnotatedRenderer");
+        assertNotNull(r);
+        assertTrue(r instanceof AnnotatedRenderer);
+
+        ClientBehaviorRenderer br = rk.getClientBehaviorRenderer("AnnotatedBehaviorRenderer");
+        assertNotNull(br);
+        assertTrue(br instanceof AnnotatedBehaviorRenderer);
+        // validate class annotated with @ManagedBean
+        ApplicationAssociate associate =
+              ApplicationAssociate.getInstance(ctx.getExternalContext());
+        BeanManager manager = associate.getBeanManager();
+        BeanBuilder bean1 = manager.getBuilder("annotatedBean");
+        assertNotNull(bean1);
+        ManagedBeanInfo bean1Info = bean1.getManagedBeanInfo();
+        assertEquals("annotatedBean", bean1Info.getName());
+        assertEquals("request", bean1Info.getScope());
+        assertFalse(bean1Info.isEager());
+        List<ManagedBeanInfo.ManagedProperty> managedProperties =
+              bean1Info.getManagedProperties();
+        assertNotNull(managedProperties);
+        assertTrue(managedProperties.size() == 2);
+        ManagedBeanInfo.ManagedProperty p1 = managedProperties.get(0);
+        assertEquals("silly", p1.getPropertyName());
+        assertEquals(String.class.getName(), p1.getPropertyClass());
+        assertEquals("#{requestScope.name}", p1.getPropertyValue());
+        ManagedBeanInfo.ManagedProperty p2 = managedProperties.get(1);
+        assertEquals("age", p2.getPropertyName());
+        assertEquals(Integer.TYPE.getName(), p2.getPropertyClass());
+        assertEquals("#{requestScope.age}", p2.getPropertyValue());
+        HttpServletRequest request = (HttpServletRequest) ctx.getExternalContext().getRequest();
+        request.setAttribute("name", "Bill");
+        request.setAttribute("age", 33);
+        AnnotatedBean bean1Instance =
+              (AnnotatedBean) manager.create("annotatedBean", ctx);
+        assertEquals("Bill", bean1Instance.getSilly());
+        assertEquals(33, bean1Instance.getAge());
+        assertNotNull(request.getAttribute("annotatedBean"));
+        request.removeAttribute("annotatedBean");
+
+        // custom scope
+        ExpressionFactory factory = ctx.getApplication().getExpressionFactory();
+        ValueExpression ve = factory.createValueExpression(ctx.getELContext(),
+                                                           "#{customScopeAnnotatedBean.greeting}",
+                                                           String.class);
+        String greeting = (String) ve.getValue(ctx.getELContext());
+        assertEquals("Hello", greeting);
+        assertTrue(ctx.getExternalContext().getRequestMap().get("customScopeAnnotatedBean") instanceof CustomScopeAnnotatedBean);
+
+        // validate inheritance
+        ve = factory.createValueExpression(ctx.getELContext(),
+                                           "#{baseBean}",
+                                           Object.class);
+        BaseBeanImplementation impl = (BaseBeanImplementation) ve.getValue(ctx.getELContext());
+        assertEquals(20, impl.getAge());
+        assertEquals("Bill", impl.getName());
+
+    }
+
+    private void testAnnotatedComponentsWebInfLib() throws Exception {
+
+        FacesContext ctx = FacesContext.getCurrentInstance();
+        Application app = ctx.getApplication();
+
+        UIComponent c = app.createComponent("AnnotatedComponent2");
+        assertNotNull(c);
+        assertTrue(c.getClass().getName().endsWith("AnnotatedComponent2"));
+
+        Converter cv = app.createConverter("AnnotatedConverter2");
+        assertNotNull(cv);
+        assertTrue(cv.getClass().getName().endsWith("AnnotatedConverter2"));
+
+
+        Validator v = app.createValidator("AnnotatedValidator2");
+        assertNotNull(v);
+        assertTrue(v.getClass().getName().endsWith("AnnotatedValidator2"));
+        Set<String> defaultValidatorIds = app.getDefaultValidatorInfo().keySet();
+        assertFalse(defaultValidatorIds.contains("AnnotatedValidator2"));
+
+        RenderKitFactory rkf = (RenderKitFactory) FactoryFinder
+              .getFactory(FactoryFinder.RENDER_KIT_FACTORY);
+        RenderKit rk =
+              rkf.getRenderKit(ctx, RenderKitFactory.HTML_BASIC_RENDER_KIT);
+        assertNotNull(rk);
+
+        Renderer r = rk.getRenderer("AnnotatedRenderer2", "AnnotatedRenderer2");
+        assertNotNull(r);
+        assertTrue(r.getClass().getName().endsWith("AnnotatedRenderer2"));
+
+        // Test default naming logic
+        assertNotNull(ApplicationAssociate.getInstance(ctx.getExternalContext())
+              .getNamedEventManager().getNamedEvent("com.sun.faces.annotation.annotatedComponentSystem"));
+        // Test short name
+        assertNotNull(ApplicationAssociate.getInstance(ctx.getExternalContext())
+              .getNamedEventManager().getNamedEvent("com.sun.faces.annotation.anotherAnnotatedComponentSystem"));
+        // Test FQCN
+        assertNotNull(ApplicationAssociate.getInstance(ctx.getExternalContext())
+              .getNamedEventManager().getNamedEvent(AnnotatedComponentSystemEvent.class.getName()));
+        assertNotNull(ApplicationAssociate.getInstance(ctx.getExternalContext())
+              .getNamedEventManager().getNamedEvent("explicitEventName"));
+
+        Object bean = ctx.getApplication().evaluateExpressionGet(ctx,
+                                                                 "#{annotatedBean4}",
+                                                                 Object.class);
+        assertNotNull(bean);
+        assertEquals("com.sun.faces.annotation.AnnotatedBean4", bean.getClass().getName());
+
+        // negative tests - if the jar files are metadata-complete, then their
+        // annotated classes shouldn't be scanned/registered
+
+        // faces-config is versioned at 2.0 and is marked metadata-complete
+        bean = ctx.getApplication().evaluateExpressionGet(ctx,
+                                                          "#{notFoundBean1}",
+                                                          Object.class);
+        assertTrue(bean == null);
+
+        // faces-config is versioned at 1.2 which assumes metadata-complete
+        bean = ctx.getApplication().evaluateExpressionGet(ctx,
+                                                          "#{notFoundBean2}",
+                                                          Object.class);
+        assertTrue(bean == null);
+
+    }
+
+    private void assertNotNull(Object v) {
+        if (v == null) {
+            throw new RuntimeException();
+        }
+    }
+
+    private void assertTrue(boolean t) {
+        if (!t) {
+            throw new RuntimeException();
+        }
+    }
+
+    private void assertEquals(Object o1, Object o2) {
+        if (o1 == null && o2 != null) {
+            throw new RuntimeException();
+        }
+        if (o2 == null && o1 != null) {
+            throw new RuntimeException();
+        }
+        if (o1 == null) {
+            return;
+        }
+        if (!o1.equals(o2)) {
+            throw new RuntimeException();
+        }
+
+    }
+
+    private void assertFalse(boolean t) {
+        if (t) {
+            throw new RuntimeException();
+        }
+    }
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/annotation/AnotherAnnotatedComponentSystemEvent.java b/test/servlet30/systest/src/main/java/com/sun/faces/annotation/AnotherAnnotatedComponentSystemEvent.java
new file mode 100644
index 0000000..32e6f27
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/annotation/AnotherAnnotatedComponentSystemEvent.java
@@ -0,0 +1,56 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.annotation;
+
+import javax.faces.component.UIComponent;
+import javax.faces.event.ComponentSystemEvent;
+import javax.faces.event.NamedEvent;
+
+/**
+ *
+ */
+ at NamedEvent(shortName="explicitEventName")
+public class AnotherAnnotatedComponentSystemEvent  extends ComponentSystemEvent {
+    public AnotherAnnotatedComponentSystemEvent(UIComponent component) {
+        super(component);
+    }
+
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/annotation/BaseBean.java b/test/servlet30/systest/src/main/java/com/sun/faces/annotation/BaseBean.java
new file mode 100644
index 0000000..917a2bd
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/annotation/BaseBean.java
@@ -0,0 +1,71 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.annotation;
+
+import javax.faces.bean.ManagedProperty;
+
+
+public abstract class BaseBean {
+
+    @ManagedProperty(name="name", value="FAIL")
+    private String name;
+
+    @ManagedProperty(name="age", value="20")
+    private int age;
+
+
+    public int getAge() {
+        return age;
+    }
+
+    public void setAge(int age) {
+        this.age = age;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/annotation/BaseBeanImplementation.java b/test/servlet30/systest/src/main/java/com/sun/faces/annotation/BaseBeanImplementation.java
new file mode 100644
index 0000000..356c9f6
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/annotation/BaseBeanImplementation.java
@@ -0,0 +1,57 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.annotation;
+
+import javax.faces.bean.ManagedProperty;
+import javax.faces.bean.ManagedBean;
+
+ at ManagedBean(name="baseBean")
+public class BaseBeanImplementation extends BaseBean {
+
+    @ManagedProperty(name="name", value="Bill")
+    private String name;
+
+    @Override
+    public void setName(String name) {
+        super.setName(name);
+    }
+
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/annotation/CustomScopeAnnotatedBean.java b/test/servlet30/systest/src/main/java/com/sun/faces/annotation/CustomScopeAnnotatedBean.java
new file mode 100644
index 0000000..88d8207
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/annotation/CustomScopeAnnotatedBean.java
@@ -0,0 +1,52 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.annotation;
+
+import javax.faces.bean.CustomScoped;
+import javax.faces.bean.ManagedBean;
+
+ at ManagedBean
+ at CustomScoped(value="#{facesContext.externalContext.requestMap}")
+public class CustomScopeAnnotatedBean {
+
+    public String getGreeting() { return "Hello"; }
+    
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/application/ResetUniqueRequestIdBean.java b/test/servlet30/systest/src/main/java/com/sun/faces/application/ResetUniqueRequestIdBean.java
new file mode 100644
index 0000000..fbe53c2
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/application/ResetUniqueRequestIdBean.java
@@ -0,0 +1,72 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.application;
+
+import javax.faces.context.FacesContext;
+
+import com.sun.faces.util.LRUMap;
+import com.sun.faces.util.RequestStateManager;
+
+public class ResetUniqueRequestIdBean {
+
+    public ResetUniqueRequestIdBean() {
+    }
+
+    protected String reset = "Unique Id Counter Has Been Reset";
+
+    public String getReset() {
+        FacesContext context = FacesContext.getCurrentInstance();
+        LRUMap lruMap = new LRUMap(15);
+        context.getExternalContext().getSessionMap().put(RequestStateManager.LOGICAL_VIEW_MAP, lruMap);
+        StateManagerImpl stateManagerImpl =
+            (StateManagerImpl) context.getApplication().getStateManager();
+//        TestingUtil.setPrivateField("requestIdSerial",
+//                                    StateManagerImpl.class,
+//                                    stateManagerImpl,
+//                                    ((char) -1));
+        return reset;
+    }
+
+    public void setReset(String newReset) {
+        reset = newReset;
+    }
+
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/component/DynamicAdd.java b/test/servlet30/systest/src/main/java/com/sun/faces/component/DynamicAdd.java
new file mode 100644
index 0000000..69d42ed
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/component/DynamicAdd.java
@@ -0,0 +1,136 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.component;
+
+import java.io.IOException;
+import java.util.Map;
+import javax.faces.component.FacesComponent;
+import javax.faces.component.UIComponent;
+import javax.faces.component.UINamingContainer;
+import javax.faces.component.UIViewRoot;
+import javax.faces.component.html.HtmlPanelGroup;
+import javax.faces.context.FacesContext;
+import javax.faces.context.ResponseWriter;
+import javax.faces.event.AbortProcessingException;
+import javax.faces.event.PreRenderViewEvent;
+import javax.faces.event.SystemEvent;
+import javax.faces.event.SystemEventListener;
+
+ at FacesComponent(value="dynamicAdd")
+public class DynamicAdd extends UINamingContainer implements SystemEventListener {
+  
+  private boolean facetRequired = true;
+
+    public boolean isFacetRequired() {
+        return facetRequired;
+    }
+
+    public void setFacetRequired(boolean facetRequired) {
+        this.facetRequired = facetRequired;
+    }
+
+    public DynamicAdd() {
+        FacesContext ctx = FacesContext.getCurrentInstance();
+        Map<String, Object> viewMap = ctx.getViewRoot().getViewMap();
+        // increment the counter
+        viewMap.put("dynamicAdd", null == viewMap.get("dynamicAdd") ?
+            (Integer) 1 : ((Integer)viewMap.get("dynamicAdd")) + 1);
+        this.setId("dynamic" + viewMap.get("dynamicAdd").toString());
+
+        ctx.getViewRoot().subscribeToViewEvent(PreRenderViewEvent.class, (SystemEventListener) this);
+    }
+
+    public void processEvent(SystemEvent se) throws AbortProcessingException {
+        FacesContext ctx = FacesContext.getCurrentInstance();
+        UIComponent source = (UIComponent) se.getSource();
+        String id = source.getClientId(ctx);
+        if (source.equals(ctx.getViewRoot())) {
+            Map<String, Object> viewMap = ctx.getViewRoot().getViewMap();
+            Integer numAddedSoFar = (Integer) viewMap.get("dynamicAdd");
+            if (numAddedSoFar < 5) {
+                DynamicAdd dynamic = (DynamicAdd) ctx.getApplication().createComponent("dynamicAdd");
+                dynamic.setFacetRequired(this.isFacetRequired());
+                this.getChildren().add(dynamic);
+            }
+        }
+    }
+
+    public boolean isListenerForSource(Object o) {
+        return o instanceof UIViewRoot;
+    }
+
+    @Override
+    public void encodeBegin(FacesContext context) throws IOException {
+      // conditionally create dynamic component facets
+      if (facetRequired && null == getFacet("dynamicAddFacet")) {
+        getFacets().put("dynamicAddFacet", new HtmlPanelGroup());
+      }
+        Map<Object, Object> contextMap = context.getAttributes();
+        ResponseWriter writer = context.getResponseWriter();
+        writer.startElement("ul", this);
+        writer.startElement("p", this);
+        writer.write("Dynamic Component " + this.getId());
+        
+    }
+
+    @Override
+    public void encodeEnd(FacesContext context) throws IOException {
+        Map<Object, Object> contextMap = context.getAttributes();
+        ResponseWriter writer = context.getResponseWriter();
+        writer.endElement("p");
+        writer.endElement("ul");
+
+    }
+
+    @Override
+    public void processDecodes(FacesContext context) {
+      // conditionally recreate the dynamic component facet before process decode
+      if (facetRequired && null == getFacet("dynamicAddFacet")) {
+        getFacets().put("dynamicAddFacet", new HtmlPanelGroup());
+      }
+      
+      // TODO Auto-generated method stub
+      super.processDecodes(context);
+    }
+
+
+
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/component/PostAddTester.java b/test/servlet30/systest/src/main/java/com/sun/faces/component/PostAddTester.java
new file mode 100644
index 0000000..5681d87
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/component/PostAddTester.java
@@ -0,0 +1,74 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.component;
+
+import javax.faces.component.FacesComponent;
+import javax.faces.component.UIComponent;
+import javax.faces.component.UIComponentBase;
+import javax.faces.context.FacesContext;
+import javax.faces.event.AbortProcessingException;
+import javax.faces.event.ComponentSystemEvent;
+import javax.faces.event.ComponentSystemEventListener;
+import javax.faces.event.ListenerFor;
+import javax.faces.event.PostAddToViewEvent;
+
+ at ListenerFor(systemEventClass=PostAddToViewEvent.class)
+ at FacesComponent("PostAddTester")
+public class PostAddTester extends UIComponentBase implements ComponentSystemEventListener {
+
+    @Override
+    public String getFamily() {
+        return "PostAddTester";
+    }
+
+
+
+    public void processEvent(ComponentSystemEvent cse) throws AbortProcessingException {
+        UIComponent source = cse.getComponent();
+        FacesContext context = FacesContext.getCurrentInstance();
+        context.getExternalContext().getRequestMap().put("1682message",
+                "source id: " + source.getId());
+
+    }
+
+    
+
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/component/ViewScopedComponentBindingBean.java b/test/servlet30/systest/src/main/java/com/sun/faces/component/ViewScopedComponentBindingBean.java
new file mode 100644
index 0000000..63a742f
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/component/ViewScopedComponentBindingBean.java
@@ -0,0 +1,91 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License. You can obtain
+ * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
+ * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
+ * Sun designates this particular file as subject to the "Classpath" exception
+ * as provided by Sun in the GPL Version 2 section of the License file that
+ * accompanied this code.  If applicable, add the following below the License
+ * Header, with the fields enclosed by brackets [] replaced by your own
+ * identifying information: "Portions Copyrighted [year]
+ * [name of copyright owner]"
+ *
+ * Contributor(s):
+ *
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.component;
+
+import java.util.Map;
+import javax.faces.application.Application;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.ViewScoped;
+import javax.faces.component.UICommand;
+import javax.faces.context.FacesContext;
+
+ at ManagedBean(name="viewScopedBean")
+ at ViewScoped
+public class ViewScopedComponentBindingBean {
+    
+    private static final String REQUEST_KEY = "com.sun.faces.component.ViewScopedComponentBindingBeanKey";
+    
+    
+    public ViewScopedComponentBindingBean() {
+        Map<String, Object> requestMap = FacesContext.getCurrentInstance().getExternalContext().getRequestMap();
+        StringBuilder sb = (StringBuilder) requestMap.get(REQUEST_KEY);
+        if (null == sb) {
+            sb = new StringBuilder();
+            requestMap.put(REQUEST_KEY, sb);
+        }
+        sb.append(" ctor called ");
+        
+    }
+    
+    public String getCtorMessage() {
+        String result = "";
+        
+        Map<String, Object> requestMap = FacesContext.getCurrentInstance().getExternalContext().getRequestMap();
+        StringBuilder sb = (StringBuilder) requestMap.get(REQUEST_KEY);
+        if (null != sb) {
+            result = sb.toString();
+        }
+        
+        return result;
+
+    }
+
+    private UICommand button = null;
+
+    public void setCommandButton(UICommand button) {
+        this.button = button;
+    }
+
+    public UICommand getCommandButton () {
+        if (null == button) {
+            FacesContext context = FacesContext.getCurrentInstance();
+            Application app = context.getApplication();
+            button = (UICommand) app.createComponent(context, "javax.faces.Command", "javax.faces.Button");
+        }
+        return button;
+    }
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/composite/BootstrapCompositeComponent.java b/test/servlet30/systest/src/main/java/com/sun/faces/composite/BootstrapCompositeComponent.java
new file mode 100644
index 0000000..6b005ec
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/composite/BootstrapCompositeComponent.java
@@ -0,0 +1,97 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.composite;
+
+import java.beans.BeanDescriptor;
+import java.beans.BeanInfo;
+import java.beans.PropertyDescriptor;
+import java.io.IOException;
+import java.util.Enumeration;
+import javax.el.ValueExpression;
+import javax.faces.application.Resource;
+import javax.faces.component.FacesComponent;
+import javax.faces.component.UIOutput;
+import javax.faces.context.FacesContext;
+import javax.faces.context.ResponseWriter;
+import javax.faces.view.ViewDeclarationLanguage;
+
+ at FacesComponent(value="systest.BootstrapComponent")
+public class BootstrapCompositeComponent extends UIOutput {
+
+    @Override
+    public void encodeAll(FacesContext context) throws IOException {
+        ResponseWriter writer = context.getResponseWriter();
+
+        ViewDeclarationLanguage vdl = context.getApplication().
+                getViewHandler().getViewDeclarationLanguage(context,
+                "/composite/boostrapCompositeComponentMetadata.xhtml");
+        Resource compositeComponentResource = context.getApplication().getResourceHandler().createResource("componentWithMetadata.xhtml", "composite");
+
+        long
+                beforeFirstCall = System.currentTimeMillis(),
+                afterFirstCall, beforeSecondCall, afterSecondCall,
+                firstCallDuration, secondCallDuration;
+        BeanInfo metadata = vdl.getComponentMetadata(context, compositeComponentResource);
+        afterFirstCall = System.currentTimeMillis();
+        firstCallDuration = afterFirstCall - beforeFirstCall;
+
+        CompositeComponentMetadataUtils.writeMetadata(metadata, writer);
+
+        beforeSecondCall = System.currentTimeMillis();
+        metadata = vdl.getComponentMetadata(context, compositeComponentResource);
+        afterSecondCall = System.currentTimeMillis();
+        
+        secondCallDuration = afterSecondCall - beforeSecondCall;
+
+        CompositeComponentMetadataUtils.writeMetadata(metadata, writer);
+
+        writer.write("firstCallDuration: " + firstCallDuration +
+                " secondCallDuration: " + secondCallDuration + "\n");
+        if (firstCallDuration > secondCallDuration) {
+            writer.write("First call longer than second call by " +
+                    (firstCallDuration - secondCallDuration));
+        } else {
+            writer.write("Cache did not work!");
+        }
+
+
+    }
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/composite/ComponentResolverActionListener.java b/test/servlet30/systest/src/main/java/com/sun/faces/composite/ComponentResolverActionListener.java
new file mode 100644
index 0000000..d0524d5
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/composite/ComponentResolverActionListener.java
@@ -0,0 +1,64 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.composite;
+
+import javax.el.ValueExpression;
+import javax.faces.context.FacesContext;
+import javax.faces.event.AbortProcessingException;
+import javax.faces.event.ActionEvent;
+import javax.faces.event.ActionListener;
+
+public class ComponentResolverActionListener implements ActionListener {
+
+    public void processAction(ActionEvent event)
+          throws AbortProcessingException {
+        FacesContext context = FacesContext.getCurrentInstance();
+        ValueExpression expression = context.getApplication()
+              .getExpressionFactory()
+              .createValueExpression(context.getELContext(),
+                                     "#{component.family}",
+                                     String.class);
+        context.getExternalContext().getRequestMap().put(
+              "resolvedComponentFamily",
+              expression.getValue(context.getELContext()));
+    }
+
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/composite/CompositeBean.java b/test/servlet30/systest/src/main/java/com/sun/faces/composite/CompositeBean.java
new file mode 100644
index 0000000..06e9f34
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/composite/CompositeBean.java
@@ -0,0 +1,309 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.composite;
+
+import java.awt.Color;
+import java.math.BigDecimal;
+import java.text.DecimalFormat;
+import java.text.Format;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.RequestScoped;
+import javax.faces.event.ActionListener;
+import javax.faces.event.ActionEvent;
+import javax.faces.event.AbortProcessingException;
+import javax.faces.event.ValueChangeEvent;
+import javax.faces.context.FacesContext;
+import javax.faces.component.UIComponent;
+import javax.faces.application.FacesMessage;
+import javax.faces.validator.Validator;
+import javax.faces.validator.ValidatorException;
+import javax.faces.convert.Converter;
+
+ at ManagedBean
+ at RequestScoped
+public class CompositeBean {
+
+
+    public List<String> getTableInputValues() {
+        List<String> result = new ArrayList<String>();
+        result.add("a value");
+        return result;
+    }
+
+    public ActionListener getActionListener() {
+        return new ActionListener() {
+
+            public void processAction(ActionEvent event)
+                  throws AbortProcessingException {
+                FacesContext ctx = FacesContext.getCurrentInstance();
+                UIComponent source = (UIComponent) event.getSource();
+                String cid = source.getClientId(ctx);
+                ctx.addMessage(cid,
+                               new FacesMessage(FacesMessage.SEVERITY_INFO,
+                                                "Action Invoked : " + cid,
+                                                "Action Invoked : " + cid));
+            }
+        };
+
+    }
+
+    private String text = "DEFAULT VALUE";
+    public String getText() {
+        return text;
+    }
+
+    // for #1966
+    private List<String> defaultValueList = Arrays.asList("Item 1","Item 2");
+
+    public List<String> getDefaultValueList() {
+        return this.defaultValueList;
+    }
+
+    private List<String> emptyList = Collections.emptyList();
+
+    public List<String> getEmptyList() {
+        return this.emptyList;
+    }
+
+    public Color getColor() {
+        return Color.PINK;
+    }
+    // end #1966
+
+    // for #1986
+    private BigDecimal bigDecimalValue = null;
+
+    public BigDecimal getBigDecimalValue() {
+        return bigDecimalValue;
+    }
+    // end #1986
+
+    public void setBigDecimalValue(BigDecimal bigDecimalValue) {
+        this.bigDecimalValue = bigDecimalValue;
+    }
+
+
+    public Validator getValidator() {
+
+        return new TestValidator();
+
+    }
+
+
+    public Converter getConverter() {
+
+        return new TestConverter();
+
+    }
+
+
+    public String doNav() {
+
+        return "nestingNav";
+
+    }
+
+
+    public String action() {
+
+        FacesContext ctx = FacesContext.getCurrentInstance();
+        UIComponent c = UIComponent.getCurrentComponent(ctx);
+        ctx.addMessage(null,
+                       new FacesMessage(FacesMessage.SEVERITY_ERROR,
+                                        "Action invoked: " + c.getClientId(ctx),
+                                        "Action invoked: " + c.getClientId(ctx)));
+        return "";
+
+    }
+
+
+    public String action(Object arg1, Object arg2) {
+
+        FacesContext ctx = FacesContext.getCurrentInstance();
+        UIComponent c = UIComponent.getCurrentComponent(ctx);
+        String message = "Action invoked: "
+                             + c.getClientId(ctx)
+                             + ", arg1: " + arg1.toString()
+                             + ", arg2: " + arg2.toString();
+
+        ctx.addMessage(null,
+                       new FacesMessage(FacesMessage.SEVERITY_ERROR,
+                                        message,
+                                        message));
+        return "";
+
+    }
+
+    public String custom() {
+
+        FacesContext ctx = FacesContext.getCurrentInstance();
+        UIComponent c = UIComponent.getCurrentComponent(ctx);
+        ctx.addMessage(null,
+                       new FacesMessage(FacesMessage.SEVERITY_ERROR,
+                                        "Custom action invoked: " + c.getClientId(ctx),
+                                        "Custom action invoked: " + c.getClientId(ctx)));
+        return "";
+
+    }
+
+     public String custom(Object arg1, Object arg2) {
+
+        FacesContext ctx = FacesContext.getCurrentInstance();
+        UIComponent c = UIComponent.getCurrentComponent(ctx);
+        String message = "Custom action invoked: "
+                             + c.getClientId(ctx)
+                             + ", arg1: " + arg1.toString()
+                             + ", arg2: " + arg2.toString();
+
+        ctx.addMessage(null,
+                       new FacesMessage(FacesMessage.SEVERITY_ERROR,
+                                        message,
+                                        message));
+        return "";
+
+    }
+
+
+    public String display(String arg) {
+
+        return "arg: " + arg;
+
+    }
+
+
+    public void actionListener(ActionEvent ae) {
+
+        FacesContext ctx = FacesContext.getCurrentInstance();
+        UIComponent c = UIComponent.getCurrentComponent(ctx);
+        ctx.addMessage(null,
+                       new FacesMessage(FacesMessage.SEVERITY_ERROR,
+                                        "ActionListener invoked: " + c.getClientId(ctx),
+                                        "ActionListener invoked: " + c.getClientId(ctx)));
+    }
+
+
+    public void validate(FacesContext ctx, UIComponent c, Object o) {
+
+        ctx.addMessage(null,
+                       new FacesMessage(FacesMessage.SEVERITY_ERROR,
+                                        "validator invoked: " + c.getClientId(ctx),
+                                        "validator invoked: " + c.getClientId(ctx)));
+
+    }
+
+
+    public void valueChange(ValueChangeEvent event) {
+
+        FacesContext ctx = FacesContext.getCurrentInstance();
+        UIComponent c = event.getComponent();
+        ctx.addMessage(null,
+                       new FacesMessage(FacesMessage.SEVERITY_ERROR,
+                                        "ValueChange invoked: " + c.getClientId(ctx),
+                                        "ValueChange invoked: " + c.getClientId(ctx)));
+
+    }
+
+    public Format getFormat() {
+        Format result = new DecimalFormat();
+        return result;
+    }
+
+
+    public String getStringValue() {
+
+        return "equalityCheck";
+
+    }
+
+    public String[] getStringValues() {
+        return new String[] { "equalityCheck", "failedCheck" };
+    }
+
+    public String[] getItems() {
+        return new String[] { "A", "B", "C" };
+    }
+
+    public List<Integer> getTestValues() {
+        List<Integer> values = new ArrayList<Integer>(1);
+        values.add(1);
+        return values;
+    }
+
+
+    // ---------------------------------------------------------- Nested Classes
+
+
+    public static class TestValidator implements Validator {
+
+        public void validate(FacesContext context, UIComponent component, Object value)
+              throws ValidatorException {
+
+            String cid = component.getClientId(context);
+            context.addMessage(cid,
+                               new FacesMessage(FacesMessage.SEVERITY_INFO,
+                                                "Validator Invoked : " + cid,
+                                                "Validator Invoked : " + cid));
+        }
+    }
+
+
+    public static class TestConverter implements Converter {
+
+        public Object getAsObject(FacesContext context, UIComponent component, String value) {
+            return value;
+        }
+
+        public String getAsString(FacesContext context, UIComponent component, Object value) {
+            String cid = component.getClientId(context);
+            context.addMessage(cid,
+                               new FacesMessage(FacesMessage.SEVERITY_INFO,
+                                                "Converter Invoked : " + cid,
+                                                "Converter Invoked : " + cid));
+            return value.toString();
+        }
+    }
+
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/composite/CompositeComponentMetadataUtils.java b/test/servlet30/systest/src/main/java/com/sun/faces/composite/CompositeComponentMetadataUtils.java
new file mode 100644
index 0000000..35b983f
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/composite/CompositeComponentMetadataUtils.java
@@ -0,0 +1,136 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.composite;
+
+import java.beans.BeanDescriptor;
+import java.beans.BeanInfo;
+import java.beans.FeatureDescriptor;
+import java.beans.PropertyDescriptor;
+import java.io.IOException;
+import java.util.Enumeration;
+import java.util.List;
+import java.util.Map;
+import javax.el.ValueExpression;
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.context.ResponseWriter;
+import javax.faces.view.AttachedObjectTarget;
+
+public class CompositeComponentMetadataUtils {
+
+    /**
+     * <p>Use the composite component metadata specification
+     * in section JSF.3.6.2.1 to print out the metadata to
+     * the argument writer.</p>
+     * @throws IOException
+     */
+
+    public static void writeMetadata(BeanInfo metadata, 
+            ResponseWriter writer) throws IOException{
+
+        // Print out the top level BeanDescriptor stuff.
+        BeanDescriptor descriptor = metadata.getBeanDescriptor();
+        writeFeatureDescriptor("composite-component-BeanDescriptor", descriptor,
+                writer);
+        writeFeatureDescriptorValues(
+                "composite-component-BeanDescriptor", descriptor,
+                writer);
+        PropertyDescriptor attributes[] = metadata.getPropertyDescriptors();
+        for (PropertyDescriptor cur : attributes) {
+            writeFeatureDescriptor("composite-component-attribute", cur,
+                    writer);
+            writeFeatureDescriptorValues("composite-component-attribute", cur,
+                    writer);
+        }
+    }
+
+    public static void writeFeatureDescriptor(String prefix,
+            FeatureDescriptor fd, ResponseWriter writer) throws IOException {
+
+        writer.write(prefix + "-name:" +
+                fd.getName() + "\n");
+        writer.write(prefix + "-displayName:" +
+                fd.getDisplayName() + "\n");
+        writer.write(prefix + "-shortDescription:" +
+                fd.getShortDescription() + "\n");
+        writer.write(prefix + "-expert:" +
+                fd.isExpert() + "\n");
+        writer.write(prefix + "-hidden:" +
+                fd.isHidden() + "\n");
+        writer.write(prefix + "-preferred:" +
+                fd.isPreferred() + "\n");
+
+    }
+
+    public static void writeFeatureDescriptorValues(String prefix,
+            FeatureDescriptor fd, ResponseWriter writer) throws IOException {
+
+        Enumeration<String> extraValues = fd.attributeNames();
+        String curName;
+        while (extraValues.hasMoreElements()) {
+            curName = extraValues.nextElement();
+            if (curName.equals(AttachedObjectTarget.ATTACHED_OBJECT_TARGETS_KEY)) {
+                List<AttachedObjectTarget> attachedObjects =
+                        (List<AttachedObjectTarget>) fd.getValue(curName);
+                for (AttachedObjectTarget curTarget : attachedObjects) {
+                    writer.write(prefix + "-attached-object-" + curTarget.getName() + "\n");
+                }
+            } else if (curName.equals(UIComponent.FACETS_KEY)) {
+                Map<String, PropertyDescriptor> facets =
+                        (Map<String, PropertyDescriptor>) fd.getValue(curName);
+                for (String cur : facets.keySet()) {
+                    String facetPrefix = prefix + "-facet-" + cur;
+                    writeFeatureDescriptor(facetPrefix, facets.get(cur),
+                            writer);
+                    writeFeatureDescriptorValues(facetPrefix,
+                            facets.get(cur), writer);
+                }
+            } else {
+                ValueExpression ve = (ValueExpression) fd.getValue(curName);
+                writer.write(prefix + "-extra-attribute-" + curName + ": " +
+                        ve.getValue(FacesContext.getCurrentInstance().getELContext())
+                        + "\n");
+            }
+        }
+    }
+
+
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/composite/JavaBackedComponentDefaultAttrValues.java b/test/servlet30/systest/src/main/java/com/sun/faces/composite/JavaBackedComponentDefaultAttrValues.java
new file mode 100644
index 0000000..36dc9ce
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/composite/JavaBackedComponentDefaultAttrValues.java
@@ -0,0 +1,78 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.composite;
+
+import java.io.IOException;
+import java.util.Map;
+import javax.faces.component.FacesComponent;
+import javax.faces.component.UINamingContainer;
+import javax.faces.context.FacesContext;
+import javax.faces.context.ResponseWriter;
+
+ at FacesComponent(value="JavaBackedComponentDefaultAttrValues")
+public class JavaBackedComponentDefaultAttrValues extends UINamingContainer {
+
+    @Override
+    public String getFamily() {
+        return "javax.faces.NamingContainer";
+    }
+
+    @Override
+    public void encodeAll(FacesContext context) throws IOException {
+        super.encodeAll(context);
+        ResponseWriter responseWriter = context.getResponseWriter();
+        Map<String, Object> attrs = this.getAttributes();
+        String clientId = this.getClientId(context);
+        responseWriter.startElement("p", this);
+        responseWriter.writeAttribute("id", clientId, "clientId");
+        responseWriter.writeText("attr1 value is " + attrs.get("attr1").toString() + ". ", "attr1");
+        responseWriter.writeText("attr2 value is " + attrs.get("attr2").toString() + ". ", "attr2");
+        responseWriter.writeText("attr3 value is " + attrs.get("attr3").toString() + ". ", "attr3");
+        responseWriter.writeText("action value is " + attrs.get("action").toString() + ". ", "action");
+        responseWriter.writeText("actionListener value is " + attrs.get("action").toString() + ". ", "action");
+        responseWriter.writeText("validator value is " + attrs.get("validator").toString() + ". ", "validator");
+        responseWriter.writeText("valueChangeListener value is " + attrs.get("valueChangeListener").toString() + ". ", "valueChangeListener");
+        responseWriter.endElement("p");
+    }
+
+
+
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/composite/JavaTopLevelActionListenerComponent.java b/test/servlet30/systest/src/main/java/com/sun/faces/composite/JavaTopLevelActionListenerComponent.java
new file mode 100644
index 0000000..cbc3d63
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/composite/JavaTopLevelActionListenerComponent.java
@@ -0,0 +1,64 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.composite;
+
+import javax.faces.component.FacesComponent;
+import javax.faces.component.UINamingContainer;
+import javax.faces.event.AbortProcessingException;
+import javax.faces.event.ActionEvent;
+import javax.faces.event.ActionListener;
+
+ at FacesComponent(value = "javaTopLevelActionListenerComponent")
+public class JavaTopLevelActionListenerComponent extends UINamingContainer
+      implements ActionListener {
+
+    private String item = "Value hard coded in Java source file";
+
+    public String getItem() {
+        return item;
+    }
+
+    public void processAction(ActionEvent event)
+          throws AbortProcessingException {
+        item = "Action was processed successfully";
+    }
+
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/composite/JavaTopLevelComponent.java b/test/servlet30/systest/src/main/java/com/sun/faces/composite/JavaTopLevelComponent.java
new file mode 100644
index 0000000..86508b9
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/composite/JavaTopLevelComponent.java
@@ -0,0 +1,87 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.composite;
+
+import java.util.Map;
+import javax.faces.component.UINamingContainer;
+import javax.faces.component.FacesComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.event.ComponentSystemEvent;
+
+ at FacesComponent(value = "javaTopLevelComponent")
+public class JavaTopLevelComponent extends UINamingContainer {
+
+    public JavaTopLevelComponent() {
+
+    }
+
+    public String getFamily() {
+        return "javax.faces.NamingContainer";
+    }
+    private String item = "Value hard coded in Java source file";
+
+    public String getItem() {
+        return item;
+    }
+
+    public void setItem(String item) {
+        this.item = item;
+    }
+
+    private int intv;
+
+    public void setInt(int intv) {
+        this.intv = intv;
+    }
+
+    public int getInt() {
+        return intv;
+    }
+
+    public void forwardIfNotInRole(ComponentSystemEvent cse) {
+        FacesContext context = FacesContext.getCurrentInstance();
+        Map<String, Object> requestMap = context.getExternalContext().getRequestMap();
+        String message = "Received event: " + cse.getClass().getName() + " for component: " +
+                cse.getComponent().getClass().getName();
+        requestMap.put("message", message);
+    }
+
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/composite/PhaseListenerInCompositeComponent.java b/test/servlet30/systest/src/main/java/com/sun/faces/composite/PhaseListenerInCompositeComponent.java
new file mode 100644
index 0000000..a93f7b5
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/composite/PhaseListenerInCompositeComponent.java
@@ -0,0 +1,63 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.composite;
+
+import javax.faces.event.PhaseEvent;
+import javax.faces.event.PhaseId;
+import javax.faces.event.PhaseListener;
+
+public class PhaseListenerInCompositeComponent implements PhaseListener {
+
+    public void beforePhase(PhaseEvent event) {
+        event.getFacesContext().getExternalContext().getRequestMap().put("beforeMessage",
+                "PASSED");
+    }
+
+    public void afterPhase(PhaseEvent event) {
+    }
+
+    public PhaseId getPhaseId() {
+        return PhaseId.RENDER_RESPONSE;
+    }
+
+
+
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/composite/ResourceDependencyComponent.java b/test/servlet30/systest/src/main/java/com/sun/faces/composite/ResourceDependencyComponent.java
new file mode 100644
index 0000000..6ca924a
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/composite/ResourceDependencyComponent.java
@@ -0,0 +1,52 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.composite;
+
+import javax.faces.application.ResourceDependency;
+import javax.faces.component.FacesComponent;
+import javax.faces.component.UINamingContainer;
+
+ at FacesComponent(value = "resourceDependencyComponent")
+ at ResourceDependency(name="simple.css")
+public class ResourceDependencyComponent extends UINamingContainer {
+
+
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/composite/TimeWastingTagHandler.java b/test/servlet30/systest/src/main/java/com/sun/faces/composite/TimeWastingTagHandler.java
new file mode 100644
index 0000000..30db88f
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/composite/TimeWastingTagHandler.java
@@ -0,0 +1,64 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.composite;
+
+import java.io.IOException;
+import javax.faces.component.UIComponent;
+import javax.faces.view.facelets.FaceletContext;
+import javax.faces.view.facelets.TagConfig;
+import javax.faces.view.facelets.TagHandler;
+
+
+public class TimeWastingTagHandler extends TagHandler {
+
+    public TimeWastingTagHandler(TagConfig config) {
+        super(config);
+    }
+
+    public void apply(FaceletContext ctx, UIComponent parent) throws IOException {
+
+        try {
+            Thread.sleep(5000);
+        } catch (InterruptedException ex) {
+        }
+
+    }
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/event/PostAddToViewListener.java b/test/servlet30/systest/src/main/java/com/sun/faces/event/PostAddToViewListener.java
new file mode 100644
index 0000000..641ac0e
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/event/PostAddToViewListener.java
@@ -0,0 +1,90 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.event;
+
+import java.util.Map;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.SessionScoped;
+import javax.faces.component.UIComponent;
+import javax.faces.component.html.HtmlInputText;
+import javax.faces.context.FacesContext;
+import javax.faces.event.AbortProcessingException;
+import javax.faces.event.PostAddToViewEvent;
+import javax.faces.event.SystemEvent;
+import javax.faces.event.SystemEventListener;
+
+ at ManagedBean
+ at SessionScoped
+public class PostAddToViewListener implements SystemEventListener {
+
+    private boolean installed = false;
+
+    public String getInstallEvent() {
+        if (!installed) {
+            FacesContext.getCurrentInstance().
+                    getApplication().subscribeToEvent(PostAddToViewEvent.class,
+                    HtmlInputText.class, this);
+            installed = true;
+        }
+
+        return "";
+    }
+
+    public String getUninstallEvent() {
+        FacesContext.getCurrentInstance().
+                getApplication().unsubscribeFromEvent(PostAddToViewEvent.class,
+                HtmlInputText.class, this);
+        installed = false;
+        return "";
+    }
+
+    public void processEvent(SystemEvent event) throws AbortProcessingException {
+        Map<String, Object> requestMap = FacesContext.getCurrentInstance().getExternalContext().getRequestMap();
+        requestMap.put("message", event.getClass().getName());
+
+    }
+
+    public boolean isListenerForSource(Object source) {
+        return source instanceof HtmlInputText;
+    }
+
+
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/event/PostRestoreStateListener.java b/test/servlet30/systest/src/main/java/com/sun/faces/event/PostRestoreStateListener.java
new file mode 100644
index 0000000..c15d413
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/event/PostRestoreStateListener.java
@@ -0,0 +1,90 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.event;
+
+import java.util.Map;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.SessionScoped;
+import javax.faces.component.html.HtmlInputText;
+import javax.faces.context.FacesContext;
+import javax.faces.event.AbortProcessingException;
+import javax.faces.event.PostRestoreStateEvent;
+import javax.faces.event.SystemEvent;
+import javax.faces.event.SystemEventListener;
+
+ at ManagedBean
+ at SessionScoped
+public class PostRestoreStateListener implements SystemEventListener {
+
+
+    private boolean installed = false;
+
+    public String getInstallEvent() {
+        if (!installed) {
+            FacesContext.getCurrentInstance().
+                    getApplication().subscribeToEvent(PostRestoreStateEvent.class,
+                    HtmlInputText.class, this);
+            installed = true;
+        }
+
+        return "";
+    }
+
+    public String getUninstallEvent() {
+        FacesContext.getCurrentInstance().
+                getApplication().unsubscribeFromEvent(PostRestoreStateEvent.class,
+                HtmlInputText.class, this);
+        installed = false;
+        return "";
+    }
+
+    public void processEvent(SystemEvent event) throws AbortProcessingException {
+        Map<String, Object> requestMap = FacesContext.getCurrentInstance().getExternalContext().getRequestMap();
+        String message = requestMap.get("message").toString();
+        requestMap.put("message", message + " " + event.getClass().getName());
+    }
+
+    public boolean isListenerForSource(Object source) {
+        return source instanceof HtmlInputText;
+    }
+
+
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/event/TestComponentRenderer.java b/test/servlet30/systest/src/main/java/com/sun/faces/event/TestComponentRenderer.java
new file mode 100644
index 0000000..01d6dbc
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/event/TestComponentRenderer.java
@@ -0,0 +1,64 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.event;
+
+import java.io.IOException;
+
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.render.FacesRenderer;
+import javax.faces.render.Renderer;
+
+ at FacesRenderer(componentFamily = "com.sun.faces.event", rendererType = "testcomponent")
+public class TestComponentRenderer extends Renderer {
+
+    @Override
+    public void encodeBegin(FacesContext context, UIComponent component) throws IOException {
+        context.getResponseWriter().write( "<div style=\"border: 1px solid red; margin: 2px\"><div style=\"background-color: #ffc0c0; padding: 2px; margin-bottom: 5px; display:block\">TestComponent::encodeBegin</div>" );
+        super.encodeBegin( context, component );
+    }
+
+    @Override
+    public void encodeEnd(FacesContext context, UIComponent component) throws IOException {
+        super.encodeEnd( context, component );
+        context.getResponseWriter().write( "<div style=\"background-color: #ffc0c0; padding: 2px; margin-top: 5px; display:block\">TestComponent::encodeEnd</div></div>" );
+    }
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/event/TestManagedBean.java b/test/servlet30/systest/src/main/java/com/sun/faces/event/TestManagedBean.java
new file mode 100644
index 0000000..9b185dd
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/event/TestManagedBean.java
@@ -0,0 +1,82 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.event;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.component.UIComponent;
+import javax.faces.component.UINamingContainer;
+import javax.faces.component.html.HtmlOutputText;
+import javax.faces.context.FacesContext;
+
+
+ at ManagedBean
+public class TestManagedBean {
+
+    private static final List<String>	LIST;
+
+    static {
+        LIST = new ArrayList<String>();
+        LIST.add( "Foo" );
+        LIST.add( "Bar" );
+        LIST.add( "Baz" );
+    }
+
+    public List<String> getList() {
+		return LIST;
+    }
+
+    public void save() {
+        // Do nothing. Just a way to POSTback
+    }
+
+    public void addComponent() {
+        FacesContext ctx = FacesContext.getCurrentInstance();
+        UIComponent group = ctx.getViewRoot().findComponent("dynamicForm" +
+            UINamingContainer.getSeparatorChar(ctx) +  "group");
+        HtmlOutputText output = new HtmlOutputText();
+        output.setValue("OUTPUT");
+        group.getChildren().add(output);
+    }
+
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/event/UIAddComponent.java b/test/servlet30/systest/src/main/java/com/sun/faces/event/UIAddComponent.java
new file mode 100644
index 0000000..12fe804
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/event/UIAddComponent.java
@@ -0,0 +1,58 @@
+package com.sun.faces.event;
+
+import javax.faces.component.FacesComponent;
+import javax.faces.component.UIComponentBase;
+import javax.faces.component.UIViewRoot;
+import javax.faces.component.html.HtmlOutputText;
+import javax.faces.context.FacesContext;
+import javax.faces.event.AbortProcessingException;
+import javax.faces.event.PreRenderViewEvent;
+import javax.faces.event.SystemEvent;
+import javax.faces.event.SystemEventListener;
+
+ at FacesComponent( value = "com.sun.faces.event.UIAddComponent" )
+public class UIAddComponent
+	extends UIComponentBase
+	implements SystemEventListener {
+
+	//
+	// Constructor
+	//
+
+	public UIAddComponent() {
+
+		setRendererType( "testcomponent" );
+
+		FacesContext context = FacesContext.getCurrentInstance();
+		UIViewRoot root = context.getViewRoot();
+
+		root.subscribeToViewEvent( PreRenderViewEvent.class, this );
+	}
+
+	//
+	// Public methods
+	//
+
+	@Override
+	public String getFamily() {
+
+		return "com.sun.faces.event";
+	}
+
+	public boolean isListenerForSource( Object source ) {
+
+		return ( source instanceof UIViewRoot );
+	}
+
+	@Override
+	public void processEvent( SystemEvent event )
+		throws AbortProcessingException {
+
+		if ( !FacesContext.getCurrentInstance().isPostback() ) {
+
+			HtmlOutputText component = new HtmlOutputText();
+			component.setValue( "Dynamically added child" );
+			getChildren().add( component );
+		}
+	}
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/event/UIAddComponent1.java b/test/servlet30/systest/src/main/java/com/sun/faces/event/UIAddComponent1.java
new file mode 100644
index 0000000..8b7c8fb
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/event/UIAddComponent1.java
@@ -0,0 +1,74 @@
+package com.sun.faces.event;
+
+import javax.faces.component.FacesComponent;
+import javax.faces.component.UIComponent;
+import javax.faces.component.UIComponentBase;
+import javax.faces.component.UIViewRoot;
+import javax.faces.component.html.HtmlOutputText;
+import javax.faces.component.html.HtmlPanelGrid;
+import javax.faces.context.FacesContext;
+import javax.faces.event.AbortProcessingException;
+import javax.faces.event.PreRenderViewEvent;
+import javax.faces.event.PostRestoreStateEvent;
+import javax.faces.event.SystemEvent;
+import javax.faces.event.SystemEventListener;
+
+ at FacesComponent( value = "com.sun.faces.event.UIAddComponent1" )
+public class UIAddComponent1
+	extends UIComponentBase
+	implements SystemEventListener {
+
+	//
+	// Constructor
+	//
+
+	public UIAddComponent1() {
+
+		setRendererType( "testcomponent" );
+
+		FacesContext context = FacesContext.getCurrentInstance();
+		UIViewRoot root = context.getViewRoot();
+
+		root.subscribeToViewEvent( PreRenderViewEvent.class, this );
+		root.subscribeToViewEvent( PostRestoreStateEvent.class, this );
+	}
+
+	//
+	// Public methods
+	//
+
+	@Override
+	public String getFamily() {
+
+		return "com.sun.faces.event";
+	}
+
+	public boolean isListenerForSource( Object source ) {
+
+		return ( source instanceof UIViewRoot );
+	}
+
+	@Override
+	public void processEvent( SystemEvent event )
+		throws AbortProcessingException {
+
+		if ( !FacesContext.getCurrentInstance().isPostback() ) {
+            HtmlPanelGrid component = new HtmlPanelGrid();
+            component.setId("PANEL");
+            component.setStyle( "border: 1px dashed blue; padding: 5px; margin: 5px" );
+            getChildren().add( component );
+		} else {
+            // Get PanelGrid component
+            HtmlPanelGrid component = (HtmlPanelGrid)getChildren().get(0);
+            // If the child has not already been added - add it
+             String added = (String)component.getAttributes().get("CHILD_ADDED");
+            if (null == added) {
+                HtmlOutputText output = new HtmlOutputText();
+                output.setId("OUTPUT");
+                output.setValue("NEW-OUTPUT");
+                component.getChildren().add(output);
+                component.getAttributes().put("CHILD_ADDED","CHILD_ADDED");
+            }
+        }
+	}
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/event/UIAddComponent2.java b/test/servlet30/systest/src/main/java/com/sun/faces/event/UIAddComponent2.java
new file mode 100644
index 0000000..912635a
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/event/UIAddComponent2.java
@@ -0,0 +1,97 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.event;
+
+import javax.faces.application.FacesMessage;
+import javax.faces.component.FacesComponent;
+import javax.faces.component.UIComponent;
+import javax.faces.component.UIComponentBase;
+import javax.faces.component.UIViewRoot;
+import javax.faces.component.html.HtmlOutputText;
+import javax.faces.component.html.HtmlPanelGrid;
+import javax.faces.context.FacesContext;
+import javax.faces.event.AbortProcessingException;
+import javax.faces.event.PostAddToViewEvent;
+import javax.faces.event.PreRenderViewEvent;
+import javax.faces.event.SystemEvent;
+import javax.faces.event.SystemEventListener;
+
+ at FacesComponent( value = "com.sun.faces.event.UIAddComponent2" )
+public class UIAddComponent2
+    extends UIComponentBase
+    implements SystemEventListener {
+
+    //
+    // Constructor
+    //
+
+    public UIAddComponent2() {
+
+        setRendererType( "testcomponent" );
+
+        FacesContext context = FacesContext.getCurrentInstance();
+            UIViewRoot root = context.getViewRoot();
+
+            root.subscribeToViewEvent( PreRenderViewEvent.class, this );
+            root.subscribeToViewEvent( PostAddToViewEvent.class, this );
+    }
+
+    //
+    // Public methods
+    //
+
+    @Override
+    public String getFamily() {
+        return "com.sun.faces.event";
+    }
+
+    public boolean isListenerForSource( Object source ) {
+        return ( source instanceof UIViewRoot );
+    }
+
+    @Override
+    public void processEvent( SystemEvent event )
+        throws AbortProcessingException {
+        FacesContext context = FacesContext.getCurrentInstance();
+        context.addMessage(getId(),
+            new FacesMessage(FacesMessage.SEVERITY_ERROR,
+                getId() + " : Event: " + event, null));
+    }
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/event/UIAddComponent3.java b/test/servlet30/systest/src/main/java/com/sun/faces/event/UIAddComponent3.java
new file mode 100644
index 0000000..86c969a
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/event/UIAddComponent3.java
@@ -0,0 +1,81 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.event;
+
+import javax.faces.component.FacesComponent;
+import javax.faces.component.UIComponent;
+import javax.faces.component.UIComponentBase;
+import javax.faces.component.UIViewRoot;
+import javax.faces.component.html.HtmlOutputText;
+import javax.faces.component.html.HtmlPanelGrid;
+import javax.faces.context.FacesContext;
+import javax.faces.event.AbortProcessingException;
+import javax.faces.event.PostAddToViewEvent;
+import javax.faces.event.PreRenderViewEvent;
+import javax.faces.event.PostRestoreStateEvent;
+import javax.faces.event.SystemEvent;
+import javax.faces.event.SystemEventListener;
+
+ at FacesComponent( value = "com.sun.faces.event.UIAddComponent3" )
+public class UIAddComponent3
+    extends UIComponentBase {
+
+    //
+    // Constructor
+    //
+
+    public UIAddComponent3() {
+
+        setRendererType( "testcomponent" );
+
+        FacesContext context = FacesContext.getCurrentInstance();
+            UIViewRoot root = context.getViewRoot();
+    }
+
+    //
+    // Public methods
+    //
+
+    @Override
+    public String getFamily() {
+        return "com.sun.faces.event";
+    }
+
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/event/UIRecursiveComponent.java b/test/servlet30/systest/src/main/java/com/sun/faces/event/UIRecursiveComponent.java
new file mode 100644
index 0000000..c745564
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/event/UIRecursiveComponent.java
@@ -0,0 +1,62 @@
+package com.sun.faces.event;
+
+import javax.faces.component.FacesComponent;
+import javax.faces.component.UIComponentBase;
+import javax.faces.component.UIViewRoot;
+import javax.faces.component.html.HtmlOutputText;
+import javax.faces.context.FacesContext;
+import javax.faces.event.AbortProcessingException;
+import javax.faces.event.PreRenderViewEvent;
+import javax.faces.event.SystemEvent;
+import javax.faces.event.SystemEventListener;
+
+ at FacesComponent( value = "com.sun.faces.event.UIRecursiveComponent" )
+public class UIRecursiveComponent
+	extends UIComponentBase
+	implements SystemEventListener {
+
+	//
+	// Constructor
+	//
+
+	public UIRecursiveComponent() {
+
+		setRendererType( "testcomponent" );
+
+		FacesContext context = FacesContext.getCurrentInstance();
+		UIViewRoot root = context.getViewRoot();
+
+		root.subscribeToViewEvent( PreRenderViewEvent.class, this );
+	}
+
+	//
+	// Public methods
+	//
+
+	@Override
+	public String getFamily() {
+
+		return "com.sun.faces.event";
+	}
+
+	public boolean isListenerForSource( Object source ) {
+
+		return ( source instanceof UIViewRoot );
+	}
+
+	@Override
+	public void processEvent( SystemEvent event )
+		throws AbortProcessingException {
+
+		if ( !FacesContext.getCurrentInstance().isPostback() ) {
+
+			HtmlOutputText component = new HtmlOutputText();
+			component.setValue( "Dynamically added child" );
+			getChildren().add( component );
+
+			if ( !( getParent() instanceof UIRecursiveComponent ) ) {
+				getChildren().add( new UIRecursiveComponent() );
+			}
+		}
+	}
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/event/UIStableComponent.java b/test/servlet30/systest/src/main/java/com/sun/faces/event/UIStableComponent.java
new file mode 100644
index 0000000..ded8151
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/event/UIStableComponent.java
@@ -0,0 +1,68 @@
+package com.sun.faces.event;
+
+import javax.faces.component.FacesComponent;
+import javax.faces.component.UIComponentBase;
+import javax.faces.component.UIViewRoot;
+import javax.faces.component.html.HtmlInputText;
+import javax.faces.context.FacesContext;
+import javax.faces.event.AbortProcessingException;
+import javax.faces.event.PreRenderViewEvent;
+import javax.faces.event.SystemEvent;
+import javax.faces.event.SystemEventListener;
+
+ at FacesComponent( value = "com.sun.faces.event.UIStableComponent" )
+public class UIStableComponent
+	extends UIComponentBase
+	implements SystemEventListener {
+
+	//
+	// Constructor
+	//
+
+	public UIStableComponent() {
+
+		setRendererType( "testcomponent" );
+
+		FacesContext context = FacesContext.getCurrentInstance();
+		UIViewRoot root = context.getViewRoot();
+
+		root.subscribeToViewEvent( PreRenderViewEvent.class, this );
+	}
+
+	//
+	// Public methods
+	//
+
+	@Override
+	public String getFamily() {
+
+		return "com.sun.faces.event";
+	}
+
+	public boolean isListenerForSource( Object source ) {
+
+		return ( source instanceof UIViewRoot );
+	}
+
+	@Override
+	public void processEvent( SystemEvent event )
+		throws AbortProcessingException {
+
+		if ( FacesContext.getCurrentInstance().getMaximumSeverity() != null ) {
+			return;
+		}
+
+		HtmlInputText inputText1 = new HtmlInputText();
+		inputText1.setValue( "1" );
+		getChildren().add( inputText1 );
+
+		HtmlInputText inputText2 = new HtmlInputText();
+		inputText2.setValue( "2" );
+		getChildren().add( inputText2 );
+
+		HtmlInputText inputText3 = new HtmlInputText();
+		inputText3.setId( "text3" );
+		inputText3.setRequired( true );
+		getChildren().add( inputText3 );
+	}
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/event/UITableComponent.java b/test/servlet30/systest/src/main/java/com/sun/faces/event/UITableComponent.java
new file mode 100644
index 0000000..89f078a
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/event/UITableComponent.java
@@ -0,0 +1,100 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.event;
+
+import javax.faces.application.Application;
+import javax.faces.component.FacesComponent;
+import javax.faces.component.UIColumn;
+import javax.faces.component.UIComponentBase;
+import javax.faces.component.UIViewRoot;
+import javax.faces.component.html.HtmlDataTable;
+import javax.faces.component.html.HtmlOutputText;
+import javax.faces.context.FacesContext;
+import javax.faces.event.AbortProcessingException;
+import javax.faces.event.PreRenderViewEvent;
+import javax.faces.event.SystemEvent;
+import javax.faces.event.SystemEventListener;
+
+ at FacesComponent(value = "com.sun.faces.event.UITableComponent" )
+public class UITableComponent extends UIComponentBase implements SystemEventListener {
+
+    public UITableComponent() {
+        setRendererType( "testcomponent" );
+        FacesContext context = FacesContext.getCurrentInstance();
+        UIViewRoot root = context.getViewRoot();
+        root.subscribeToViewEvent( PreRenderViewEvent.class, this );
+    }
+
+    @Override
+    public String getFamily() {
+        return "com.sun.faces.event";
+    }
+
+    public boolean isListenerForSource( Object source ) {
+        return ( source instanceof UIViewRoot );
+    }
+
+    @Override
+    public void processEvent( SystemEvent event ) throws AbortProcessingException {
+        FacesContext context = FacesContext.getCurrentInstance();
+           if ( !context.isPostback() ) {
+              Application application = context.getApplication();
+
+              HtmlDataTable dataTable = new HtmlDataTable();
+              dataTable.setVar( "_internal" );
+              dataTable.setValueExpression( "value", 
+                  application.getExpressionFactory().createValueExpression( 
+                     context.getELContext(), "#{testManagedBean.list}", Object.class ));
+              getChildren().add( dataTable );
+
+              UIColumn column = new UIColumn();
+              column.setId( context.getViewRoot().createUniqueId() );
+              dataTable.getChildren().add( column );
+
+              HtmlOutputText outputText = new HtmlOutputText();
+              outputText.setId( context.getViewRoot().createUniqueId() );
+              outputText.setValueExpression( "value", 
+                  application.getExpressionFactory().createValueExpression( 
+                     context.getELContext(), "#{_internal}", Object.class ));
+              column.getChildren().add( outputText );
+        }
+    }
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/event/UIToggleComponent.java b/test/servlet30/systest/src/main/java/com/sun/faces/event/UIToggleComponent.java
new file mode 100644
index 0000000..f98a2af
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/event/UIToggleComponent.java
@@ -0,0 +1,54 @@
+package com.sun.faces.event;
+
+import javax.faces.component.FacesComponent;
+import javax.faces.component.UIComponent;
+import javax.faces.component.UIComponentBase;
+import javax.faces.component.UIViewRoot;
+import javax.faces.context.FacesContext;
+import javax.faces.event.AbortProcessingException;
+import javax.faces.event.PreRenderViewEvent;
+import javax.faces.event.SystemEvent;
+import javax.faces.event.SystemEventListener;
+
+ at FacesComponent( value = "com.sun.faces.event.UIToggleComponent" )
+public class UIToggleComponent
+	extends UIComponentBase
+	implements SystemEventListener {
+
+	//
+	// Constructor
+	//
+
+	public UIToggleComponent() {
+
+		setRendererType( "testcomponent" );
+
+		FacesContext context = FacesContext.getCurrentInstance();
+		UIViewRoot root = context.getViewRoot();
+
+		root.subscribeToViewEvent( PreRenderViewEvent.class, this );
+	}
+
+	//
+	// Public methods
+	//
+
+	@Override
+	public String getFamily() {
+
+		return "com.sun.faces.event";
+	}
+
+	public boolean isListenerForSource( Object source ) {
+
+		return ( source instanceof UIViewRoot );
+	}
+
+	@Override
+	public void processEvent( SystemEvent event )
+		throws AbortProcessingException {
+
+		UIComponent component = getChildren().remove( 0 );
+		getChildren().add( component );
+	}
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/facelets/RepeatBean.java b/test/servlet30/systest/src/main/java/com/sun/faces/facelets/RepeatBean.java
new file mode 100644
index 0000000..2cb86bd
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/facelets/RepeatBean.java
@@ -0,0 +1,94 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.facelets;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.RequestScoped;
+import javax.faces.context.FacesContext;
+import javax.faces.application.FacesMessage;
+
+ at ManagedBean
+ at RequestScoped
+public class RepeatBean {
+    
+    List<String> flavors;
+    List<String> singleFlavor;
+    
+    public List<String> getFlavorsList() {
+        if (null == flavors) {
+            flavors = new ArrayList<String>();
+            flavors.add("chocolate");
+            flavors.add("vanilla");
+            flavors.add("strawberry");
+            flavors.add("chocolate peanut butter");
+        }
+        return flavors;
+    }
+
+    public List<String> getSingleFlavorList() {
+        if (singleFlavor == null) {
+            singleFlavor = new ArrayList<String>(1);
+            singleFlavor.add("chocolate");
+        }
+        return singleFlavor;
+    }
+
+
+    public void setIndex(int index) {
+
+        FacesContext ctx = FacesContext.getCurrentInstance();
+        FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_INFO,
+                                            "Index: " + index,
+                                            "Index: " + index);
+        ctx.addMessage(null, msg);
+        
+    }
+
+    
+    public String [] getFlavorsArray() {
+        String [] result = new String[getFlavorsList().size()];
+        getFlavorsList().toArray(result);    
+        return result;
+    }
+
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/systest/ChildrenComponent.java b/test/servlet30/systest/src/main/java/com/sun/faces/systest/ChildrenComponent.java
new file mode 100644
index 0000000..7b8ef8e
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/systest/ChildrenComponent.java
@@ -0,0 +1,115 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest;
+
+
+import javax.faces.component.UIComponent;
+import javax.faces.component.UIOutput;
+import javax.faces.context.FacesContext;
+import javax.faces.context.ResponseWriter;
+
+import java.io.IOException;
+import java.util.Iterator;
+
+
+/**
+ * <p>Test <code>UIComponent</code> for sys tests.</p>
+ */
+
+public class ChildrenComponent extends UIOutput {
+
+
+    public ChildrenComponent() {
+        super();
+    }
+
+
+    public ChildrenComponent(String id) {
+        super();
+        setId(id);
+    }
+
+
+    public boolean getRendersChildren() {
+        return (true);
+    }
+
+
+    public void encodeBegin(FacesContext context) throws IOException {
+        ResponseWriter writer = context.getResponseWriter();
+        writer.write("{ ");
+    }
+
+
+    public void encodeChildren(FacesContext context) throws IOException {
+        ResponseWriter writer = context.getResponseWriter();
+        Iterator kids = getChildren().iterator();
+        while (kids.hasNext()) {
+            encodeRecursive(context, (UIComponent) kids.next());
+            writer.write(" ");
+        }
+    }
+
+
+    public void encodeEnd(FacesContext context) throws IOException {
+        ResponseWriter writer = context.getResponseWriter();
+        writer.write("}\n");
+    }
+
+
+    private void encodeRecursive(FacesContext context, UIComponent component)
+        throws IOException {
+
+        component.encodeBegin(context);
+        if (component.getRendersChildren()) {
+            component.encodeChildren(context);
+        } else {
+            Iterator kids = component.getChildren().iterator();
+            while (kids.hasNext()) {
+                UIComponent kid = (UIComponent) kids.next();
+                encodeRecursive(context, kid);
+            }
+        }
+        component.encodeEnd(context);
+    }
+
+
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/systest/ChildrenComponentBodyTag.java b/test/servlet30/systest/src/main/java/com/sun/faces/systest/ChildrenComponentBodyTag.java
new file mode 100644
index 0000000..765fa65
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/systest/ChildrenComponentBodyTag.java
@@ -0,0 +1,97 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest;
+
+
+import javax.faces.webapp.UIComponentBodyTag;
+import javax.servlet.jsp.JspException;
+import javax.servlet.jsp.tagext.BodyContent;
+
+
+/**
+ * <p><code>UIComponentBodyTag</code> for <code>ChildrenComponent</code>.</p>
+ */
+
+public class ChildrenComponentBodyTag extends UIComponentBodyTag {
+
+    private boolean firstPass = true;
+
+    // -------------------------------------------------------------- Attributes
+
+
+    // ---------------------------------------------------------- Public Methods
+
+
+    public String getComponentType() {
+        return ("ChildrenComponent");
+    }
+
+
+    public String getRendererType() {
+        return (null);
+    }
+
+
+    /**
+     * <p>Handle the ending of the nested body content for this tag.  The
+     * default implementation simply calls <code>getDoAfterBodyValue()</code> to
+     * retrieve the flag value to be returned.</p>
+     *
+     * @throws javax.servlet.jsp.JspException if an error is encountered
+     */
+    public int doAfterBody() throws JspException {
+        if (firstPass) {
+            System.out.println("Evaluating body again...");
+            BodyContent cont = getBodyContent();
+            cont.clearBody();
+            firstPass = false;
+            return EVAL_BODY_AGAIN;
+        }
+        else {
+            return super.doAfterBody();
+        }
+    }
+
+
+    // ------------------------------------------------------- Protected Methods
+
+
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/systest/ChildrenComponentTag.java b/test/servlet30/systest/src/main/java/com/sun/faces/systest/ChildrenComponentTag.java
new file mode 100644
index 0000000..c9295aa
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/systest/ChildrenComponentTag.java
@@ -0,0 +1,84 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest;
+
+
+import javax.faces.component.UIComponent;
+import javax.faces.webapp.UIComponentTag;
+
+
+/**
+ * <p><code>UIComponentTag</code> for <code>ChildrenComponent</code>.</p>
+ */
+
+public class ChildrenComponentTag extends UIComponentTag {
+
+
+    // -------------------------------------------------------------- Attributes
+
+
+    // ---------------------------------------------------------- Public Methods
+
+
+    public String getComponentType() {
+        return ("ChildrenComponent");
+    }
+
+
+    public String getRendererType() {
+        return (null);
+    }
+
+
+    public void release() {
+        super.release();
+    }
+
+
+    // ------------------------------------------------------- Protected Methods
+
+
+    protected void setProperties(UIComponent component) {
+        super.setProperties(component);
+    }
+
+
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/systest/DuplicateIds04.java b/test/servlet30/systest/src/main/java/com/sun/faces/systest/DuplicateIds04.java
new file mode 100644
index 0000000..7f686d9
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/systest/DuplicateIds04.java
@@ -0,0 +1,188 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest;
+
+import java.util.List;
+import javax.faces.component.UISelectItem;
+import javax.faces.component.html.HtmlInputText;
+import javax.faces.component.html.HtmlPanelGrid;
+import javax.faces.component.html.HtmlSelectOneMenu;
+import javax.faces.event.ValueChangeEvent;
+
+/**
+ * Backing bean for search criteria screen.
+ *
+ * @author  Mark Roth
+ */
+public class DuplicateIds04 {
+    
+    /** Either "and" or "or" */
+    private String operator = "and";
+    
+    /** Panel grid component to store components */
+    private HtmlPanelGrid panelGrid;
+
+    private int serialNumber = 0;
+
+    public DuplicateIds04() { }
+    
+    /**
+     * Called when the "More" button is pressed
+     */
+    public String more() {
+        return "again";
+    }
+    
+    /**
+     * Called when the "Fewer" button is pressed
+     */
+    public String fewer() {
+        return "again";
+    }
+    
+    /**
+     * Called when the "Search" button is pressed
+     */
+    public String search() {
+        return "search";
+    }
+    
+    /**
+     * Getter for property operator.
+     * @return Value of property operator.
+     */
+    public String getOperator() {
+        return operator;
+    }
+    
+    /**
+     * Setter for property operator.
+     * @param operator New value of property operator.
+     */
+    public void setOperator(String operator) {
+        this.operator = operator;
+    }
+    
+    /**
+     * Getter for property panelGrid.  If the panel grid does not yet exist,
+     * create it, and add the initial children.
+     *
+     * @return Value of property panelGrid.
+     */
+    public HtmlPanelGrid getPanelGrid() {
+        if(panelGrid == null) {
+            panelGrid = new HtmlPanelGrid();
+	    //	    panelGrid.setId("searchCriteria" + serialNumber++);
+
+            panelGrid.setColumns(3);
+            panelGrid.setBorder(1);
+            panelGrid.setCellpadding("5");
+            panelGrid.setCellspacing("0");
+            List children = panelGrid.getChildren();
+            HtmlSelectOneMenu field = createFieldMenu();
+            HtmlSelectOneMenu operator = createOperatorMenu();
+            HtmlInputText text = new HtmlInputText();
+	    //	    text.setId("searchCriteria" + serialNumber++);
+
+            text.setSize(25);
+            children.add(field);
+            children.add(operator);
+            children.add(text);
+        }
+        return panelGrid;
+    }
+    
+    /**
+     * Creates the menu that allows the user to select a field.
+     */
+    private HtmlSelectOneMenu createFieldMenu() {
+        HtmlSelectOneMenu field = new HtmlSelectOneMenu();
+	//	field.setId("searchCriteria" + serialNumber++);
+
+        List children = field.getChildren();
+        children.add(createSelectItem("Subject"));
+        children.add(createSelectItem("Sender"));
+        children.add(createSelectItem("Date"));
+        children.add(createSelectItem("Priority"));
+        children.add(createSelectItem("Status"));
+        children.add(createSelectItem("To"));
+        children.add(createSelectItem("Cc"));
+        children.add(createSelectItem("To or Cc"));
+        return field;
+    }
+    
+    /**
+     * Creates the menu that allows the user to select an operator
+     */
+    private HtmlSelectOneMenu createOperatorMenu() {
+        HtmlSelectOneMenu field = new HtmlSelectOneMenu();
+	//	field.setId("searchCriteria" + serialNumber++);
+
+        List children = field.getChildren();
+        children.add(createSelectItem("contains"));
+        children.add(createSelectItem("doesn't contain"));
+        children.add(createSelectItem("is"));
+        children.add(createSelectItem("isn't"));
+        children.add(createSelectItem("starts with"));
+        children.add(createSelectItem("ends with"));
+        return field;
+    }
+    
+    /**
+     * Creates a select tiem with the given value and label.
+     */
+    private UISelectItem createSelectItem(String label) {
+        UISelectItem result = new UISelectItem();
+	//	result.setId("searchCriteria" + serialNumber++);
+        result.setItemValue(label);
+        result.setItemLabel(label);
+        return result;
+    }
+    
+    /**
+     * Setter for property panelGrid.
+     * @param panelGrid New value of property panelGrid.
+     */
+    public void setPanelGrid(HtmlPanelGrid panelGrid) {
+        this.panelGrid = panelGrid;
+    }
+    
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/systest/DynamicComponent.java b/test/servlet30/systest/src/main/java/com/sun/faces/systest/DynamicComponent.java
new file mode 100644
index 0000000..0fd28bd
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/systest/DynamicComponent.java
@@ -0,0 +1,181 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest;
+
+
+import javax.faces.component.UIComponent;
+import javax.faces.component.UIComponentBase;
+import javax.faces.component.UIOutput;
+import javax.faces.context.FacesContext;
+import javax.faces.context.ResponseWriter;
+
+import java.io.IOException;
+import java.util.Iterator;
+import java.util.Map;
+
+
+/**
+ * <p>Test <code>UIComponent</code> for sys tests that dynamically creates
+ * or removes children UIOutput components with specified ids and values.
+ * It pays attention to the following request parameters in the
+ * <code>encodeBegin()</code> method:</p>
+ * <ul>
+ * <li><code>?mode=create&id=foo&value=bar</code> - Create a new
+ * <code>UIOutput</code> child with a component identifier of
+ * <code>foo</code> and a value of <code>bar</code> (optional).  Set the
+ * <code>rendererType</code> property to <code>Text</code>.  The
+ * new child will be appended to the child list.</li>
+ * <li><code>?mode=delete&id=foo</code> - Remove any child with a
+ * component identifier of <code>foo</code>.</li>
+ * </ul>
+ *
+ * <p>In accordance with our current restrictions, this component sets
+ * <code>rendersChildren</code> to <code>true</code>, and recursively
+ * renders its children in <code>encodeChildren</code>.  This component
+ * itself renders "{" at the beginning and "}" at the end, just like
+ * <code>ChildrenComponent</code>.</p>
+ */
+
+public class DynamicComponent extends UIComponentBase {
+
+
+    public static final String COMPONENT_FAMILY = "Dynamic";
+
+    // ------------------------------------------------------------ Constructors
+
+
+    public DynamicComponent() {
+        this("dynamic");
+    }
+
+
+    public DynamicComponent(String componentId) {
+        super();
+        setId(componentId);
+    }
+
+
+    // ----------------------------------------------------- UIComponent Methods
+
+    public String getFamily() {
+
+        return (COMPONENT_FAMILY);
+
+    }
+
+
+    public boolean getRendersChildren() {
+        return (true);
+    }
+
+
+    public void encodeBegin(FacesContext context) throws IOException {
+        process(context);
+        ResponseWriter writer = context.getResponseWriter();
+        writer.write("{ ");
+    }
+
+
+    public void encodeChildren(FacesContext context) throws IOException {
+        ResponseWriter writer = context.getResponseWriter();
+        Iterator kids = getChildren().iterator();
+        while (kids.hasNext()) {
+            encodeRecursive(context, (UIComponent) kids.next());
+            writer.write(" ");
+        }
+    }
+
+
+    public void encodeEnd(FacesContext context) throws IOException {
+        ResponseWriter writer = context.getResponseWriter();
+        writer.write(" }\n");
+    }
+
+
+    // --------------------------------------------------------- Private Methods
+
+
+    private void encodeRecursive(FacesContext context, UIComponent component)
+        throws IOException {
+
+        component.encodeBegin(context);
+        if (component.getRendersChildren()) {
+            component.encodeChildren(context);
+        } else {
+            Iterator kids = component.getChildren().iterator();
+            while (kids.hasNext()) {
+                UIComponent kid = (UIComponent) kids.next();
+                encodeRecursive(context, kid);
+            }
+        }
+        component.encodeEnd(context);
+
+    }
+
+
+    private void process(FacesContext context) {
+        Map map = context.getExternalContext().getRequestParameterMap();
+        String mode = (String) map.get("mode");
+        String id = (String) map.get("id");
+        String value = (String) map.get("value");
+        if (mode == null) {
+            return;
+        } else if ("create".equals(mode)) {
+            UIOutput output = new UIOutput();
+            output.setId(id);
+            output.setRendererType("javax.faces.Text");
+            output.setValue(value);
+            getChildren().add(output);
+        } else if ("delete".equals(mode)) {
+            Iterator kids = getChildren().iterator();
+            while (kids.hasNext()) {
+                UIComponent kid = (UIComponent) kids.next();
+                if (id.equals(kid.getId())) {
+                    getChildren().remove(kid);
+                    break;
+                }
+            }
+        }
+
+    }
+
+
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/systest/DynamicComponentTag.java b/test/servlet30/systest/src/main/java/com/sun/faces/systest/DynamicComponentTag.java
new file mode 100644
index 0000000..07fe73c
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/systest/DynamicComponentTag.java
@@ -0,0 +1,84 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest;
+
+
+import javax.faces.component.UIComponent;
+import javax.faces.webapp.UIComponentTag;
+
+
+/**
+ * <p><code>UIComponentTag</code> for <code>ChildrenComponent</code>.</p>
+ */
+
+public class DynamicComponentTag extends UIComponentTag {
+
+
+    // -------------------------------------------------------------- Attributes
+
+
+    // ---------------------------------------------------------- Public Methods
+
+
+    public String getComponentType() {
+        return ("DynamicComponent");
+    }
+
+
+    public String getRendererType() {
+        return (null);
+    }
+
+
+    public void release() {
+        super.release();
+    }
+
+
+    // ------------------------------------------------------- Protected Methods
+
+
+    protected void setProperties(UIComponent component) {
+        super.setProperties(component);
+    }
+
+
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/systest/FacetComponent.java b/test/servlet30/systest/src/main/java/com/sun/faces/systest/FacetComponent.java
new file mode 100644
index 0000000..9279d97
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/systest/FacetComponent.java
@@ -0,0 +1,89 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest;
+
+
+import javax.faces.component.UIOutput;
+import javax.faces.context.FacesContext;
+import javax.faces.context.ResponseWriter;
+
+import java.io.IOException;
+
+
+/**
+ * <p>Test <code>UIComponent</code> for sys tests.</p>
+ */
+
+public class FacetComponent extends UIOutput {
+
+
+    public FacetComponent() {
+        super();
+    }
+
+
+    public FacetComponent(String id) {
+        super();
+        setId(id);
+    }
+
+
+    public void encodeEnd(FacesContext context) throws IOException {
+        ResponseWriter writer = context.getResponseWriter();
+        UIOutput facet = (UIOutput) getFacet("header");
+        if (facet != null) {
+            writer.write("[" + facet.getValue() + "] ");
+        } else {
+            writer.write("[] ");
+        }
+        writer.write("[");
+        writer.write((String) getValue());
+        writer.write("] ");
+        facet = (UIOutput) getFacet("footer");
+        if (facet != null) {
+            writer.write("[" + facet.getValue() + "] ");
+        } else {
+            writer.write("[] ");
+        }
+    }
+
+
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/systest/FacetComponentTag.java b/test/servlet30/systest/src/main/java/com/sun/faces/systest/FacetComponentTag.java
new file mode 100644
index 0000000..72b5a7e
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/systest/FacetComponentTag.java
@@ -0,0 +1,96 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest;
+
+
+import javax.faces.component.UIComponent;
+import javax.faces.webapp.UIComponentTag;
+
+
+/**
+ * <p><code>UIComponentTag</code> for <code>FacetComponent</code>.</p>
+ */
+
+public class FacetComponentTag extends UIComponentTag {
+
+
+    // -------------------------------------------------------------- Attributes
+
+
+    private String value = null;
+
+
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+
+    // ---------------------------------------------------------- Public Methods
+
+
+    public String getComponentType() {
+        return ("FacetComponent");
+    }
+
+
+    public String getRendererType() {
+        return (null);
+    }
+
+
+    public void release() {
+        super.release();
+        value = null;
+    }
+
+
+    // ------------------------------------------------------- Protected Methods
+
+
+    protected void setProperties(UIComponent component) {
+        super.setProperties(component);
+        if (value != null) {
+            ((FacetComponent) component).setValue(value);
+        }
+    }
+
+
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/systest/HelloBean.java b/test/servlet30/systest/src/main/java/com/sun/faces/systest/HelloBean.java
new file mode 100644
index 0000000..2c8085e
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/systest/HelloBean.java
@@ -0,0 +1,67 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.ApplicationScoped;
+
+ at ManagedBean(name = "hello", eager = true)
+ at ApplicationScoped
+public class HelloBean {
+    String fname;
+    public HelloBean() {
+        System.out.println("HelloBean instantiated");
+    }
+    public String getMessage() {
+        return "Hello " + fname + ", Good Morning!";
+    }
+    public String getFname() {
+        return fname;
+    }
+    public  void setFname(String name) {
+        this.fname = name;
+    }
+
+
+    public String getNextAction() {
+        return "/submit.xhtml";
+    }
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/systest/MessageBean.java b/test/servlet30/systest/src/main/java/com/sun/faces/systest/MessageBean.java
new file mode 100644
index 0000000..6d5ff8d
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/systest/MessageBean.java
@@ -0,0 +1,72 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest;
+
+import javax.faces.application.FacesMessage;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.ManagedProperty;
+import javax.faces.bean.RequestScoped;
+import javax.faces.context.FacesContext;
+
+ at ManagedBean (eager=true)
+ at RequestScoped
+public class MessageBean {
+
+    public MessageBean() {
+        FacesContext context = FacesContext.getCurrentInstance();
+        FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO,
+                "This is the summary", "This is the detail");
+        context.addMessage("output1", message);
+        context.addMessage("output2", message);
+    }
+
+    protected String value;
+
+    public String getValue() {
+        return "";
+    }
+
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/systest/NamingTag.java b/test/servlet30/systest/src/main/java/com/sun/faces/systest/NamingTag.java
new file mode 100644
index 0000000..27bb4f6
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/systest/NamingTag.java
@@ -0,0 +1,74 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest;
+
+
+import javax.faces.webapp.UIComponentTag;
+
+
+/**
+ * <p><code>UIComponentTag</code> for a <code>UINamingContainer</code>
+ * component.</p>
+ */
+
+public class NamingTag extends UIComponentTag {
+
+
+    // -------------------------------------------------------------- Attributes
+
+
+    // ---------------------------------------------------------- Public Methods
+
+
+    public String getComponentType() {
+        return ("NamingContainer");
+    }
+
+
+    public String getRendererType() {
+        return (null);
+    }
+
+
+    // ------------------------------------------------------- Protected Methods
+
+
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/systest/OutputVerbatimTag.java b/test/servlet30/systest/src/main/java/com/sun/faces/systest/OutputVerbatimTag.java
new file mode 100644
index 0000000..8ed22f5
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/systest/OutputVerbatimTag.java
@@ -0,0 +1,95 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest;
+
+
+import javax.faces.component.UIOutput;
+import javax.faces.webapp.UIComponentBodyTag;
+import javax.servlet.jsp.JspException;
+
+
+/**
+ * <p><code>UIComponentBodyTag</code> for <code>Verbatim</code> rendering.
+ * In other words, the body content of this tag is captured and then
+ * rendered as the value of this component.</p>
+ */
+
+public class OutputVerbatimTag extends UIComponentBodyTag {
+
+
+    // -------------------------------------------------------------- Attributes
+
+
+    // ---------------------------------------------------------- Public Methods
+
+
+    public String getComponentType() {
+        return ("Output");
+    }
+
+
+    public String getRendererType() {
+        return ("Text");
+    }
+
+
+    // Assign the trimmed body content of this tag as the value of the
+    // current component.
+    public int doAfterBody() throws JspException {
+
+        // Save the trimmed body content of this tag (if any)
+        if (getBodyContent() != null) {
+            String value = getBodyContent().getString().trim();
+            if (value != null) {
+                ((UIOutput) getComponentInstance()).setValue(value);
+            }
+        }
+
+        // Perform normal superclass processing
+        return (super.doAfterBody());
+
+    }
+
+
+    // ------------------------------------------------------- Protected Methods
+
+
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/systest/SystemEventListenerImpl.java b/test/servlet30/systest/src/main/java/com/sun/faces/systest/SystemEventListenerImpl.java
new file mode 100644
index 0000000..75667f0
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/systest/SystemEventListenerImpl.java
@@ -0,0 +1,65 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest;
+
+import com.sun.faces.systest.model.TestBean;
+import javax.faces.context.FacesContext;
+import javax.faces.event.AbortProcessingException;
+import javax.faces.event.SystemEvent;
+import javax.faces.event.SystemEventListener;
+
+/**
+ *
+ * @author edburns
+ */
+public class SystemEventListenerImpl implements SystemEventListener {
+
+    public boolean isListenerForSource(Object component) {
+        return component instanceof TestBean;
+    }
+
+    public void processEvent(SystemEvent event) throws AbortProcessingException {
+	FacesContext.getCurrentInstance().getExternalContext().getRequestMap().put("eventFromBean",
+									 "eventFromBean: source: " + 
+                                                                         event.getSource().getClass().getName());
+    }
+
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/systest/TestActionListener01.java b/test/servlet30/systest/src/main/java/com/sun/faces/systest/TestActionListener01.java
new file mode 100755
index 0000000..5542d16
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/systest/TestActionListener01.java
@@ -0,0 +1,65 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest;
+
+import javax.faces.application.FacesMessage;
+import javax.faces.component.UIComponent;
+import javax.faces.component.UIOutput;
+import javax.faces.context.FacesContext;
+import javax.faces.event.ActionListener;
+import javax.faces.event.ActionEvent;
+import javax.faces.component.StateHolder;
+import javax.faces.event.AbortProcessingException;
+
+public class TestActionListener01 implements ActionListener {
+    
+    public TestActionListener01() {}
+
+    public void processAction(ActionEvent ae)
+        throws AbortProcessingException {
+        FacesContext context = FacesContext.getCurrentInstance();
+        context.addMessage(ae.getComponent().getClientId(context),
+            new FacesMessage(FacesMessage.SEVERITY_ERROR,
+            	ae.getComponent().getId() + " was pressed", null));
+    } 
+    
+    
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/systest/TestComponent.java b/test/servlet30/systest/src/main/java/com/sun/faces/systest/TestComponent.java
new file mode 100644
index 0000000..8743a39
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/systest/TestComponent.java
@@ -0,0 +1,154 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest;
+
+
+import javax.faces.component.UIInput;
+import javax.faces.context.FacesContext;
+
+import java.io.IOException;
+
+
+/**
+ * <p>Test <code>UIComponent</code> for sys tests.</p>
+ */
+
+public class TestComponent extends UIInput {
+
+
+    public TestComponent() {
+        this("test");
+    }
+
+
+    public TestComponent(String componentId) {
+        super();
+        setId(componentId);
+    }
+
+
+    public String getComponentType() {
+        return ("TestComponent");
+    }
+
+
+    // -------------------------------------------------- Trace-Enabled Methods
+
+
+    public void decode(FacesContext context) {
+        trace("d-" + getId());
+        super.decode(context);
+    }
+
+
+    public void encodeBegin(FacesContext context) throws IOException {
+        trace("eB-" + getId());
+        super.encodeBegin(context);
+    }
+
+
+    public void encodeChildren(FacesContext context) throws IOException {
+        trace("eC-" + getId());
+        super.encodeChildren(context);
+    }
+
+
+    public void encodeEnd(FacesContext context) throws IOException {
+        trace("eE-" + getId());
+        super.encodeEnd(context);
+    }
+
+
+    public void updateModel(FacesContext context) {
+        trace("u-" + getId());
+        super.updateModel(context);
+    }
+
+
+    public void validate(FacesContext context) {
+        trace("v-" + getId());
+        super.validate(context);
+    }
+
+
+    public void processDecodes(FacesContext context) {
+        trace("pD-" + getId());
+        super.processDecodes(context);
+    }
+
+
+    public void processValidators(FacesContext context) {
+        trace("pV-" + getId());
+        super.processValidators(context);
+    }
+
+
+    public void processUpdates(FacesContext context) {
+        trace("pU-" + getId());
+        super.processUpdates(context);
+    }
+
+
+    // --------------------------------------------------- Static Trace Methods
+
+
+    // Accumulated trace log
+    private static StringBuffer trace = new StringBuffer();
+
+
+    // Append to the current trace log (or clear if null)
+    public static void trace(String text) {
+        if (text == null) {
+            trace.setLength(0);
+        } else {
+            trace.append('/');
+            trace.append(text);
+        }
+    }
+
+
+    // Retrieve the current trace log
+    public static String trace() {
+        return (trace.toString());
+    }
+
+
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/systest/TestConverter.java b/test/servlet30/systest/src/main/java/com/sun/faces/systest/TestConverter.java
new file mode 100644
index 0000000..a5524bd
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/systest/TestConverter.java
@@ -0,0 +1,65 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest;
+
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.convert.Converter;
+import javax.faces.convert.ConverterException;
+
+/**
+ * <p>Test implementation of {@link Converter}.</p>
+ */
+public class TestConverter implements Converter {
+
+    public Object getAsObject(FacesContext context, UIComponent component,
+                              String newValue) throws ConverterException {
+        // No action taken
+        return newValue;
+    }
+
+
+    public String getAsString(FacesContext context, UIComponent component,
+                              Object value) throws ConverterException {
+        // No action taken
+        return (value.toString());
+    }
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/systest/TestConverter01.java b/test/servlet30/systest/src/main/java/com/sun/faces/systest/TestConverter01.java
new file mode 100755
index 0000000..6593d28
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/systest/TestConverter01.java
@@ -0,0 +1,72 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest;
+
+import javax.faces.application.FacesMessage;
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.convert.Converter;
+import javax.faces.convert.ConverterException;
+
+/**
+ * <p>Test implementation of {@link Converter}.</p>
+ */
+public class TestConverter01 implements Converter {
+
+    public Object getAsObject(FacesContext context, UIComponent component,
+                              String newValue) throws ConverterException {
+        context.addMessage(component.getClientId(context),
+            new FacesMessage(FacesMessage.SEVERITY_ERROR,
+                component.getId() + " was converted to Object", null));
+
+        return newValue;
+    }
+
+
+    public String getAsString(FacesContext context, UIComponent component,
+                              Object value) throws ConverterException {
+        context.addMessage(component.getClientId(context),
+            new FacesMessage(FacesMessage.SEVERITY_ERROR,
+                component.getId() + " was converted to String", null));
+
+        return (value.toString());
+    }
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/systest/TestPhaseListener01.java b/test/servlet30/systest/src/main/java/com/sun/faces/systest/TestPhaseListener01.java
new file mode 100644
index 0000000..559128a
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/systest/TestPhaseListener01.java
@@ -0,0 +1,72 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest;
+
+import javax.faces.application.FacesMessage;
+import javax.faces.event.PhaseListener;
+import javax.faces.event.PhaseId;
+import javax.faces.event.PhaseEvent;
+
+import javax.faces.context.FacesContext;
+
+public class TestPhaseListener01 extends Object implements PhaseListener {
+
+    public void afterPhase(PhaseEvent event) {
+        FacesContext context = FacesContext.getCurrentInstance();
+        context.addMessage("submit",
+            new FacesMessage(FacesMessage.SEVERITY_ERROR,
+                " after " + event.getPhaseId(), null));
+    }
+    
+    
+    public void beforePhase(PhaseEvent event) {
+        FacesContext context = FacesContext.getCurrentInstance();
+        context.addMessage("submit",
+            new FacesMessage(FacesMessage.SEVERITY_ERROR,
+                " before " + event.getPhaseId(), null));
+    }
+
+    public PhaseId getPhaseId() {
+
+        return PhaseId.ANY_PHASE;
+    }
+
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/systest/TestValidator.java b/test/servlet30/systest/src/main/java/com/sun/faces/systest/TestValidator.java
new file mode 100644
index 0000000..5f09342
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/systest/TestValidator.java
@@ -0,0 +1,61 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest;
+
+
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.validator.Validator;
+
+
+/**
+ * <p>Test implementation of {@link Validator}.</p>
+ */
+
+public class TestValidator implements Validator {
+
+
+    public void validate(FacesContext context, UIComponent component, Object value) {
+        ;  // No action taken
+    }
+
+
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/systest/TestValidator01.java b/test/servlet30/systest/src/main/java/com/sun/faces/systest/TestValidator01.java
new file mode 100755
index 0000000..cb32831
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/systest/TestValidator01.java
@@ -0,0 +1,64 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest;
+
+
+import javax.faces.application.FacesMessage;
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.validator.Validator;
+
+
+/**
+ * <p>Test implementation of {@link Validator}.</p>
+ */
+
+public class TestValidator01 implements Validator {
+
+
+    public void validate(FacesContext context, UIComponent component, Object value) {
+        context.addMessage(component.getClientId(context),
+            new FacesMessage(FacesMessage.SEVERITY_ERROR,
+                component.getId() + " was validated", null));
+    }
+
+
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/systest/TestValueChangeListener.java b/test/servlet30/systest/src/main/java/com/sun/faces/systest/TestValueChangeListener.java
new file mode 100644
index 0000000..3985e0b
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/systest/TestValueChangeListener.java
@@ -0,0 +1,61 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest;
+
+
+import javax.faces.component.UIComponent;
+import javax.faces.event.ValueChangeListener;
+import javax.faces.event.ValueChangeEvent;
+import javax.faces.component.StateHolder;
+import javax.faces.event.AbortProcessingException;
+
+public class TestValueChangeListener implements ValueChangeListener {
+    
+    public TestValueChangeListener() {}
+
+    public void processValueChange(ValueChangeEvent vce)
+    throws AbortProcessingException {
+       vce.getComponent().getAttributes().put("onblur",
+                                               vce.getNewValue().toString());
+    } 
+    
+    
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/systest/TestValueChangeListener01.java b/test/servlet30/systest/src/main/java/com/sun/faces/systest/TestValueChangeListener01.java
new file mode 100755
index 0000000..b42e734
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/systest/TestValueChangeListener01.java
@@ -0,0 +1,65 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest;
+
+import javax.faces.application.FacesMessage;
+import javax.faces.component.UIComponent;
+import javax.faces.component.UIOutput;
+import javax.faces.context.FacesContext;
+import javax.faces.event.ValueChangeListener;
+import javax.faces.event.ValueChangeEvent;
+import javax.faces.component.StateHolder;
+import javax.faces.event.AbortProcessingException;
+
+public class TestValueChangeListener01 implements ValueChangeListener {
+    
+    public TestValueChangeListener01() {}
+
+    public void processValueChange(ValueChangeEvent vce)
+        throws AbortProcessingException {
+        FacesContext context = FacesContext.getCurrentInstance();
+        context.addMessage(vce.getComponent().getClientId(context),
+            new FacesMessage(FacesMessage.SEVERITY_ERROR,
+                vce.getComponent().getId() + " value was changed", null));
+    } 
+    
+    
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/systest/component/Issue599Bean.java b/test/servlet30/systest/src/main/java/com/sun/faces/systest/component/Issue599Bean.java
new file mode 100644
index 0000000..add87c0
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/systest/component/Issue599Bean.java
@@ -0,0 +1,125 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+ * Copyright (c) 2011 Oracle and/or its affiliates. All rights reserved.
+
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.systest.component;
+
+import com.sun.faces.event.UIAddComponent;
+import java.util.HashMap;
+import java.util.Map;
+import javax.faces.application.Application;
+import javax.faces.application.ViewHandler;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.RequestScoped;
+import javax.faces.component.UIForm;
+import javax.faces.component.UINamingContainer;
+
+import javax.faces.context.FacesContext;
+import javax.faces.view.ViewDeclarationLanguage;
+
+ at ManagedBean
+ at RequestScoped
+public class Issue599Bean {
+    
+    public String getResult() {
+        FacesContext context = FacesContext.getCurrentInstance();
+        Application app = context.getApplication();
+        ViewHandler vh = app.getViewHandler();
+        ViewDeclarationLanguage vdl = vh.getViewDeclarationLanguage(context, context.getViewRoot().getViewId());
+        
+        // Can I create a simple h:form with prependId="false"?
+        Map<String,Object> attrs = new HashMap<String, Object>();
+        attrs.put("prependId", "false");
+        UIForm form = (UIForm) vdl.createComponent(context, "http://java.sun.com/jsf/html",
+                "form", attrs);
+        
+        if (form.isPrependId()) {
+            throw new IllegalStateException("I asked for a form to be created" +
+                    " with prependId false, but that attr is not set.");
+        }
+        
+        attrs.clear();
+        
+        // Can I create a composite component in the default ResourceLibrary?
+        UINamingContainer cc = (UINamingContainer) vdl.
+                createComponent(context, "http://java.sun.com/jsf/composite/i_spec_599_composite", 
+                "i_spec_599_composite", attrs);
+        attrs = cc.getAttributes();
+        if (!attrs.containsKey("customAttr")) {
+            throw new IllegalArgumentException("I asked for a composite component" +
+                    " with a known default attribute, but that attr is not set.");
+        }
+        
+        if (!"customAttrValue".equals(attrs.get("customAttr"))) {
+            throw new IllegalArgumentException("I asked for a composite component" +
+                    " with a known default attribute" + 
+                    " but the value of that attr is not as expected.");
+        }
+        
+        // Can I create a component coming from a custom taglib?
+        attrs = new HashMap<String, Object>();
+        UIAddComponent ac = (UIAddComponent) vdl.
+                createComponent(context, "http://testcomponent", "addcomponent", attrs);
+        if (!"com.sun.faces.event".equals(ac.getFamily())) {
+            throw new IllegalArgumentException("I asked for a component" +
+                    " with a known family" + 
+                    " but the value of that family is not as expected.");
+            
+        }
+        
+        // Can I create a composite component coming from a custom
+        // taglib?
+        cc = (UINamingContainer) vdl.createComponent(context, "i_spec_599_composite_taglib", 
+                "i_spec_599_composite_taglib", attrs);
+        attrs = cc.getAttributes();
+        if (!attrs.containsKey("customAttr2")) {
+            throw new IllegalArgumentException("I asked for a composite component" +
+                    " with a known default attribute, but that attr is not set.");
+        }
+        
+        if (!"customAttrValue2".equals(attrs.get("customAttr2"))) {
+            throw new IllegalArgumentException("I asked for a composite component" +
+                    " with a known default attribute" + 
+                    " but the value of that attr is not as expected.");
+        }
+        
+        
+        return "success";
+    }
+    
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/systest/composite/MultiActionComponentBean.java b/test/servlet30/systest/src/main/java/com/sun/faces/systest/composite/MultiActionComponentBean.java
new file mode 100644
index 0000000..33ac327
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/systest/composite/MultiActionComponentBean.java
@@ -0,0 +1,61 @@
+
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.composite;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.RequestScoped;
+
+
+ at ManagedBean
+ at RequestScoped
+public class MultiActionComponentBean {
+
+    public Object submitAction() {
+
+        return "compositeComponentWithMultipleActions_submit";
+    }
+
+    public Object cancelAction() {
+
+        return "compositeComponentWithMultipleActions_cancel";
+    }
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/systest/composite/behavior/CompositeBehavior.java b/test/servlet30/systest/src/main/java/com/sun/faces/systest/composite/behavior/CompositeBehavior.java
new file mode 100644
index 0000000..156b6c3
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/systest/composite/behavior/CompositeBehavior.java
@@ -0,0 +1,65 @@
+
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.composite.behavior;
+
+import javax.faces.component.behavior.ClientBehaviorBase;
+import javax.faces.component.behavior.ClientBehaviorContext;
+import javax.faces.component.behavior.FacesBehavior;
+
+
+ at FacesBehavior("compositeBehavior")
+public class CompositeBehavior extends ClientBehaviorBase {
+
+    @Override
+    public String getScript(ClientBehaviorContext behaviorContext) {
+        String result = "";
+
+        if ("ok".equals(behaviorContext.getEventName())) {
+            result = "document.write(\"compositeBehavior script rendered\");";
+        }
+
+        return result;
+    }
+
+
+
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/systest/composite/behavior/CompositeBehaviorTestBean.java b/test/servlet30/systest/src/main/java/com/sun/faces/systest/composite/behavior/CompositeBehaviorTestBean.java
new file mode 100644
index 0000000..e241071
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/systest/composite/behavior/CompositeBehaviorTestBean.java
@@ -0,0 +1,56 @@
+
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.composite.behavior;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.RequestScoped;
+
+
+ at ManagedBean
+ at RequestScoped
+public class CompositeBehaviorTestBean {
+
+    public String doAction() {
+        return "composite02";
+    }
+
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/systest/dynamic1757/Issue1757DynamicManagedBean.java b/test/servlet30/systest/src/main/java/com/sun/faces/systest/dynamic1757/Issue1757DynamicManagedBean.java
new file mode 100644
index 0000000..8b7b3a0
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/systest/dynamic1757/Issue1757DynamicManagedBean.java
@@ -0,0 +1,56 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.dynamic1757;
+
+import javax.faces.bean.ManagedBean;
+
+ at ManagedBean
+public class Issue1757DynamicManagedBean
+{
+	//
+	// Public methods
+	//
+
+	public void save()
+	{
+		// Do nothing
+	}
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/systest/dynamic1757/TestComponentRenderer.java b/test/servlet30/systest/src/main/java/com/sun/faces/systest/dynamic1757/TestComponentRenderer.java
new file mode 100644
index 0000000..8c9b49d
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/systest/dynamic1757/TestComponentRenderer.java
@@ -0,0 +1,72 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.dynamic1757;
+
+import java.io.IOException;
+
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.render.FacesRenderer;
+import javax.faces.render.Renderer;
+
+ at FacesRenderer( componentFamily = "com.sun.faces.systest.dynamic1757.UITestComponent", rendererType = "testcomponent" )
+public class TestComponentRenderer
+	extends Renderer
+{
+	@Override
+	public void encodeBegin( FacesContext context, UIComponent component )
+		throws IOException
+	{
+		context.getResponseWriter().write( "<div style=\"border: 1px solid red\">TestComponent::encodeBegin<br/>" );
+
+		super.encodeBegin( context, component );
+	}
+
+	@Override
+	public void encodeEnd( FacesContext context, UIComponent component )
+		throws IOException
+	{
+		context.getResponseWriter().write( "TestComponent::encodeEnd</div>" );
+
+		super.encodeEnd( context, component );
+	}
+
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/systest/dynamic1757/UITestComponent.java b/test/servlet30/systest/src/main/java/com/sun/faces/systest/dynamic1757/UITestComponent.java
new file mode 100644
index 0000000..7b13901
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/systest/dynamic1757/UITestComponent.java
@@ -0,0 +1,90 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.dynamic1757;
+
+import javax.faces.component.FacesComponent;
+import javax.faces.component.UIComponentBase;
+import javax.faces.component.UIViewRoot;
+import javax.faces.component.html.HtmlOutputText;
+import javax.faces.context.FacesContext;
+import javax.faces.event.AbortProcessingException;
+import javax.faces.event.PreRenderViewEvent;
+import javax.faces.event.SystemEvent;
+import javax.faces.event.SystemEventListener;
+
+ at FacesComponent( value = "com.sun.faces.systest.dynamic1757.UITestComponent" )
+public class UITestComponent
+	extends UIComponentBase
+	implements SystemEventListener
+{
+	public UITestComponent()
+	{
+		setRendererType( "testcomponent" );
+
+		FacesContext context = FacesContext.getCurrentInstance();
+		UIViewRoot root = context.getViewRoot();
+
+		if ( !context.isPostback() ) {
+			root.subscribeToViewEvent( PreRenderViewEvent.class, this );
+		}
+	}
+
+	public String getFamily()
+	{
+		return "com.sun.faces.systest.dynamic1757.UITestComponent";
+	}
+
+	public boolean isListenerForSource( Object source )
+	{
+		return ( source instanceof UIViewRoot );
+	}
+
+	public void processEvent( SystemEvent event )
+		throws AbortProcessingException
+	{
+		FacesContext context = FacesContext.getCurrentInstance();
+		HtmlOutputText outputText = (HtmlOutputText) context.getApplication().createComponent( "javax.faces.HtmlOutputText" );
+		outputText.setValue( "Dynamically added child<br/>" );
+		outputText.setEscape( false );
+
+		getChildren().add( outputText );
+	}
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/systest/implicitnav/ImplicitNavigationBean.java b/test/servlet30/systest/src/main/java/com/sun/faces/systest/implicitnav/ImplicitNavigationBean.java
new file mode 100644
index 0000000..7b8fbd6
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/systest/implicitnav/ImplicitNavigationBean.java
@@ -0,0 +1,77 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.implicitnav;
+
+import java.net.MalformedURLException;
+import java.net.URL;
+import javax.faces.application.ConfigurableNavigationHandler;
+import javax.faces.application.NavigationCase;
+import javax.faces.context.FacesContext;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.RequestScoped;
+
+ at ManagedBean
+ at RequestScoped
+public class ImplicitNavigationBean {
+    
+    public String getCurrentActionUrl() throws MalformedURLException {
+        FacesContext context = FacesContext.getCurrentInstance();
+        ConfigurableNavigationHandler navHandler = (ConfigurableNavigationHandler)
+                context.getApplication().getNavigationHandler();
+        NavigationCase navCase = navHandler.getNavigationCase(context, 
+                null, context.getViewRoot().getViewId());
+        URL myUrl = navCase.getActionURL(context);
+        
+        return myUrl.toExternalForm();
+    }
+
+    public String getCurrentResourceUrl() throws MalformedURLException {
+        FacesContext context = FacesContext.getCurrentInstance();
+        ConfigurableNavigationHandler navHandler = (ConfigurableNavigationHandler)
+                context.getApplication().getNavigationHandler();
+        NavigationCase navCase = navHandler.getNavigationCase(context, 
+                null, context.getViewRoot().getViewId());
+        URL myUrl = navCase.getResourceURL(context);
+        
+        return myUrl.toExternalForm();
+    }
+
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/systest/lifecycle/ApplicationFactoryWrapper.java b/test/servlet30/systest/src/main/java/com/sun/faces/systest/lifecycle/ApplicationFactoryWrapper.java
new file mode 100644
index 0000000..f16d8bf
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/systest/lifecycle/ApplicationFactoryWrapper.java
@@ -0,0 +1,69 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.lifecycle;
+
+import javax.faces.application.ApplicationFactory;
+import javax.faces.application.Application;
+
+public class ApplicationFactoryWrapper extends ApplicationFactory {
+
+    public ApplicationFactoryWrapper() {
+    }
+    
+    private ApplicationFactory oldFactory = null;
+    
+    public ApplicationFactoryWrapper(ApplicationFactory yourOldFactory) {
+	oldFactory = yourOldFactory;
+    }
+    
+    public Application getApplication() {
+	return oldFactory.getApplication();
+    }
+    
+    public void setApplication(Application application) {
+	oldFactory.setApplication(application);
+    }
+
+    public String toString() {
+	return "ApplicationFactoryWrapper";
+    }
+
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/systest/lifecycle/FacesContextFactoryWrapper.java b/test/servlet30/systest/src/main/java/com/sun/faces/systest/lifecycle/FacesContextFactoryWrapper.java
new file mode 100644
index 0000000..56fe40f
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/systest/lifecycle/FacesContextFactoryWrapper.java
@@ -0,0 +1,70 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.lifecycle;
+
+import javax.faces.context.FacesContextFactory;
+import javax.faces.context.FacesContext;
+import javax.faces.lifecycle.Lifecycle;
+import javax.faces.FacesException;
+
+public class FacesContextFactoryWrapper extends FacesContextFactory {
+
+    public FacesContextFactoryWrapper() {
+    }
+    
+    private FacesContextFactory oldFactory = null;
+    
+    public FacesContextFactoryWrapper(FacesContextFactory yourOldFactory) {
+	oldFactory = yourOldFactory;
+    }
+    
+    public FacesContext getFacesContext(Object context, Object request,
+					Object response, 
+					Lifecycle lifecycle) throws FacesException {
+	return oldFactory.getFacesContext(context, request, response, 
+					  lifecycle);
+    }
+
+    public String toString() {
+	return "FacesContextFactoryWrapper";
+    }
+
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/systest/lifecycle/LifecycleFactoryWrapper.java b/test/servlet30/systest/src/main/java/com/sun/faces/systest/lifecycle/LifecycleFactoryWrapper.java
new file mode 100644
index 0000000..5121326
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/systest/lifecycle/LifecycleFactoryWrapper.java
@@ -0,0 +1,78 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.lifecycle;
+
+import javax.faces.lifecycle.Lifecycle;
+import javax.faces.lifecycle.LifecycleFactory;
+import javax.faces.FacesException;
+import java.util.Iterator;
+
+public class LifecycleFactoryWrapper extends LifecycleFactory {
+
+    public LifecycleFactoryWrapper() {
+    }
+    
+    private LifecycleFactory oldFactory = null;
+    
+    public LifecycleFactoryWrapper(LifecycleFactory yourOldFactory) {
+	oldFactory = yourOldFactory;
+    }
+    
+    public void addLifecycle(String lifecycleId,
+			     Lifecycle lifecycle) {
+	oldFactory.addLifecycle(lifecycleId, lifecycle);
+    }
+
+    public Lifecycle getLifecycle(String lifecycleId) {
+	return oldFactory.getLifecycle(lifecycleId);
+    }
+
+    public Iterator<String> getLifecycleIds() {
+	return oldFactory.getLifecycleIds();
+    }
+
+    public String toString() {
+	return "LifecycleFactoryWrapper";
+    }
+
+
+    
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/systest/lifecycle/ReloadPhaseListenerImpl.java b/test/servlet30/systest/src/main/java/com/sun/faces/systest/lifecycle/ReloadPhaseListenerImpl.java
new file mode 100644
index 0000000..4f68cc8
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/systest/lifecycle/ReloadPhaseListenerImpl.java
@@ -0,0 +1,94 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.lifecycle;
+
+import javax.faces.event.PhaseEvent;
+import javax.faces.event.PhaseId;
+import javax.faces.event.PhaseListener;
+
+
+/**
+ * <B>ReloadPhaseListener</B> is a class that looks for a Restore or Render
+ * phase. If it finds that a phase has been entered other than a Restore or
+ * Render, it sets a system property to false.
+ *
+ * This listener is used to determine whether a client refresh with no
+ * request parameters or save state has occurred.
+ *
+ */
+public class ReloadPhaseListenerImpl implements PhaseListener {
+
+    PhaseId phaseId = null;
+    String pageRefresh;
+
+
+    public ReloadPhaseListenerImpl(PhaseId newPhaseId) {
+        phaseId = newPhaseId;
+        pageRefresh = "true";
+    }
+
+
+    public void afterPhase(PhaseEvent event) {
+        System.setProperty("PageRefreshPhases", pageRefresh);
+    }
+
+
+    public void beforePhase(PhaseEvent event) {
+        if (event.getPhaseId() == PhaseId.RESTORE_VIEW) {
+            //reset System property to true when starting phase processing
+            pageRefresh = "true";
+            return;
+        } else if (event.getPhaseId() == PhaseId.RENDER_RESPONSE) {
+            //no other phases should be called
+            return;
+        }
+
+        //phase other than Restore or Render is called
+        pageRefresh = "false";
+    }
+
+
+    public PhaseId getPhaseId() {
+        return phaseId;
+    }
+
+} // end of class ReloadPhaseListenerImpl
+
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/systest/lifecycle/RenderKitFactoryWrapper.java b/test/servlet30/systest/src/main/java/com/sun/faces/systest/lifecycle/RenderKitFactoryWrapper.java
new file mode 100644
index 0000000..d644f96
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/systest/lifecycle/RenderKitFactoryWrapper.java
@@ -0,0 +1,79 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.lifecycle;
+
+import javax.faces.render.RenderKit;
+import javax.faces.render.RenderKitFactory;
+import javax.faces.context.FacesContext;
+import javax.faces.FacesException;
+import java.util.Iterator;
+
+public class RenderKitFactoryWrapper extends RenderKitFactory {
+
+    public RenderKitFactoryWrapper() {
+    }
+    
+    private RenderKitFactory oldFactory = null;
+    
+    public RenderKitFactoryWrapper(RenderKitFactory yourOldFactory) {
+	oldFactory = yourOldFactory;
+    }
+    
+    public void addRenderKit(String renderKitId,
+			     RenderKit renderKit) {
+	oldFactory.addRenderKit(renderKitId, renderKit);
+    }
+
+    public RenderKit getRenderKit(FacesContext context, String renderKitId) {
+	return oldFactory.getRenderKit(context, renderKitId);
+    }
+
+    public Iterator getRenderKitIds() {
+	return oldFactory.getRenderKitIds();
+    }
+
+    public String toString() {
+	return "RenderKitFactoryWrapper";
+    }
+
+
+    
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/systest/listener.java b/test/servlet30/systest/src/main/java/com/sun/faces/systest/listener.java
new file mode 100644
index 0000000..d063ac3
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/systest/listener.java
@@ -0,0 +1,64 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest;
+
+
+
+import javax.faces.context.FacesContext;
+import javax.faces.event.AbortProcessingException;
+import javax.faces.event.ValueChangeEvent;
+import javax.faces.event.ValueChangeListener;
+
+
+
+/**
+ *
+ * @author Keule
+ */
+public class listener implements ValueChangeListener {
+
+    public void processValueChange(ValueChangeEvent event) throws AbortProcessingException {
+
+        FacesContext context = FacesContext.getCurrentInstance();
+        context.getExternalContext().getFlash().put("processValueChangeMessage", "Hello from processValueChange: " + System.currentTimeMillis());
+    }
+
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/AbstractTestBean.java b/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/AbstractTestBean.java
new file mode 100644
index 0000000..2b718f3
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/AbstractTestBean.java
@@ -0,0 +1,62 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.model;
+
+
+/**
+ * <p>Test JavaBean for managed object creation facility.</p>
+ */
+
+public abstract class AbstractTestBean {
+
+    private String stringProperty = "String Property";
+
+
+    public String getStringProperty() {
+        return this.stringProperty;
+    }
+
+
+    public void setStringProperty(String stringProperty) {
+        this.stringProperty = stringProperty;
+    }
+
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/Bean1729.java b/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/Bean1729.java
new file mode 100644
index 0000000..7ed0235
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/Bean1729.java
@@ -0,0 +1,80 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.model;
+
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.RequestScoped;
+import javax.faces.context.FacesContext;
+
+
+/**
+ *
+ * @author Keule
+ */
+ at ManagedBean(name="bean1729")
+ at RequestScoped
+public class Bean1729 {
+
+    /** Creates a new instance of test */
+    public Bean1729() {
+    }
+
+
+    private int input1 = -1;
+
+    public int getInput1() {
+        return input1;
+    }
+
+    public void setInput1(int input1) {
+        this.input1 = input1;
+    }
+
+    public void doIt() {
+        FacesContext context = FacesContext.getCurrentInstance();
+        context.getExternalContext().getFlash().put("processActionListenerMessage", "Aufgerufen: " + System.currentTimeMillis());
+    }
+
+
+}
+
+
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/Bean2194.java b/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/Bean2194.java
new file mode 100644
index 0000000..9ce58a8
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/Bean2194.java
@@ -0,0 +1,82 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.model;
+
+import java.util.Arrays;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.RequestScoped;
+
+ at ManagedBean
+ at RequestScoped
+public class Bean2194 {
+
+    private String actionListenerType = null;
+    private String valueChangeListenerType = null;
+    private String phaseListenerType = null;
+
+    public Bean2194() { 
+    }
+
+    private void setActionListenerType(String type) {
+        this.actionListenerType = type;
+    }
+
+    public String getActionListenerType() {
+        return "com.sun.faces.systest.TestActionListener01";
+    }
+
+    private void setValueChangeListenerType(String type) {
+        this.valueChangeListenerType = type;
+    }
+
+    public String getValueChangeListenerType() {
+        return "com.sun.faces.systest.TestValueChangeListener01";
+    }
+
+    private void setPhaseListenerType(String type) {
+        this.phaseListenerType = type;
+    }
+
+    public String getPhaseListenerType() {
+        return "com.sun.faces.systest.TestPhaseListener01";
+    }
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/Bean2202.java b/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/Bean2202.java
new file mode 100644
index 0000000..3d5133b
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/Bean2202.java
@@ -0,0 +1,64 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.model;
+
+import java.util.Arrays;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.RequestScoped;
+
+ at ManagedBean
+ at RequestScoped
+public class Bean2202 {
+
+    private String insertArea = "INSERT AREA"; 
+
+    public Bean2202() { 
+    }
+
+    private void setInsertArea(String insertArea) {
+        this.insertArea= insertArea;
+    }
+
+    public String getInsertArea() {
+        return insertArea;
+    }
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/BookBean.java b/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/BookBean.java
new file mode 100644
index 0000000..93e0590
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/BookBean.java
@@ -0,0 +1,106 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.model;
+
+import javax.faces.application.FacesMessage;
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.validator.ValidatorException;
+
+
+public class BookBean {
+
+    private String title;
+    private String author;
+    private String isbn;
+    private double price;
+    private int quantity;
+
+    public BookBean(String title, String author, String isbn, double price) {
+        this.title = title;
+        this.author = author;
+        this.isbn = isbn;
+        this.price = price;
+    }
+
+    public String getTitle() {
+        return title;
+    }
+
+    public String getAuthor() {
+        return author;
+    }
+
+    public String getFirstName() {
+        return author;
+    }
+
+    public String getSurname() {
+        return author;
+    }
+
+    public String getIsbn() {
+        return isbn;
+    }
+
+    public double getPrice() {
+        return price;
+    }
+
+    public int getQuantity() {
+        return quantity;
+    }
+
+    public void setQuantity(int quantity) {
+        this.quantity = quantity;
+    }
+
+    public void validateQuantity(FacesContext context,
+                                 UIComponent component,
+                                 Object value) {        
+        int q = (Integer) value;
+        if (q < 0) {
+            throw new ValidatorException(
+                new FacesMessage("Quantity must be zero or greater."));                   
+        }
+    }
+}
+
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/BooksBean.java b/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/BooksBean.java
new file mode 100644
index 0000000..61fc2b4
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/BooksBean.java
@@ -0,0 +1,83 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.model;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+
+public class BooksBean {
+
+    private List<BookBean> books;    
+
+
+    public BooksBean() {
+        books = new ArrayList<BookBean>();
+        books.add(new BookBean("Harry Potter and the Sorcerer's Stone",
+                                "J.K. Rowling",
+                                "10009001",
+                                12.99));
+        books.add(new BookBean("Dune",
+                                "Frank Herbert",
+                                "98111012",
+                                15.99));
+        books.add(new BookBean("The Hitchhiker's Guide to the Galaxy",
+                                "Douglas Adams",
+                                "11001199",
+                                13.99));
+    }    
+
+
+    public List<BookBean> getBooks() {
+        return books;
+    }    
+    
+    public double getTotalCost() {
+        double cost = 0.0;
+        for (Iterator<BookBean> i = books.iterator(); i.hasNext(); ) {
+            BookBean book = i.next();
+            cost += (book.getQuantity() * book.getPrice());     
+        }
+        
+        return cost;
+    }      
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/CSRFBean.java b/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/CSRFBean.java
new file mode 100644
index 0000000..1595572
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/CSRFBean.java
@@ -0,0 +1,83 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.model;
+
+/**
+ * <p>Test JavaBean for CSRF application.</p>
+ */
+public class CSRFBean {
+
+    private String amount = "1000";
+    private String account = "37665";
+    private String destAccount;
+    private String transferAmount;
+
+    public String getAmount() {
+        return amount;
+    } 
+
+    public String getAccount() {
+        return account;
+    } 
+
+    public String getTransferAmount() {
+        return transferAmount;
+    }
+
+    public String getDestAccount() {
+        return destAccount;
+    }
+
+    public void setTransferAmount(String transferAmount) {
+        this.transferAmount = transferAmount;
+    }
+        
+    public void setDestAccount(String destAccount) {
+        this.destAccount = destAccount;
+    }
+
+    public void transfer() {
+        int intAmount = Integer.valueOf(amount).intValue();
+        int intTransferAmount = Integer.valueOf(transferAmount).intValue();
+        intAmount = intAmount - intTransferAmount;
+        amount = String.valueOf(intAmount);
+    }
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/ConverterBean.java b/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/ConverterBean.java
new file mode 100755
index 0000000..4d021f1
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/ConverterBean.java
@@ -0,0 +1,97 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.model;
+
+import com.sun.faces.systest.TestConverter01;
+
+import javax.faces.event.AbortProcessingException;
+import javax.faces.convert.Converter;
+
+
+public class ConverterBean extends Object {
+
+    public ConverterBean() {
+    }
+
+    private Converter converter = null;
+    public Converter getConverter() {
+        if (converter == null) {
+            return new TestConverter01();
+        }
+        return converter;
+    }
+    public void setConverter(Converter converter) {
+        this.converter = converter;
+    }
+
+    private Converter dateTimeConverter = null;
+    public Converter getDateTimeConverter() {
+        if (dateTimeConverter == null) {
+            return new javax.faces.convert.DateTimeConverter();
+        }
+        return dateTimeConverter;
+    }
+    public void setDateTimeConverter(Converter dateTimeConverter) {
+        this.dateTimeConverter = dateTimeConverter;
+    }
+
+    private Converter doubleConverter = null;
+    public Converter getDoubleConverter() {
+        if (doubleConverter == null) {
+            return new javax.faces.convert.DoubleConverter();
+        }
+        return doubleConverter;
+    }
+    public void setDoubleConverter(Converter doubleConverter) {
+        this.doubleConverter = doubleConverter;
+    }
+
+    private Converter numberConverter = null;
+    public Converter getNumberConverter() {
+        if (numberConverter == null) {
+            return new javax.faces.convert.NumberConverter();
+        }
+        return numberConverter;
+    }
+    public void setNumberConverter(Converter numberConverter) {
+        this.numberConverter = numberConverter;
+    }
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/CustomDatatableBean.java b/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/CustomDatatableBean.java
new file mode 100644
index 0000000..6607b29
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/CustomDatatableBean.java
@@ -0,0 +1,98 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.model;
+
+import java.util.List;
+import java.util.ArrayList;
+
+import javax.faces.component.html.HtmlDataTable;
+import javax.faces.component.html.HtmlCommandLink;
+import javax.faces.component.html.HtmlColumn;
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.application.Application;
+import javax.el.ExpressionFactory;
+import javax.el.ValueExpression;
+import javax.el.MethodExpression;
+import javax.el.ELContext;
+
+
+public class CustomDatatableBean {
+
+    private HtmlDataTable table;
+
+        public List<String> getList() {
+            List<String> result = new ArrayList<String>();
+            result.add("abc");
+            result.add("def");
+            result.add("ghi");
+            return result;
+        }
+
+        public UIComponent getTable() {
+            if (table == null) {
+                FacesContext context = FacesContext.getCurrentInstance();
+                Application app = context.getApplication();
+                ExpressionFactory factory = app.getExpressionFactory();
+                table = new HtmlDataTable();
+                table.setVar("p");
+                ELContext elContext = context.getELContext();
+                table.setValueExpression("value", factory.createValueExpression(
+                        elContext, "#{customDataTable.list}", Object.class));
+                HtmlColumn c1 = new HtmlColumn();
+                HtmlCommandLink l = new HtmlCommandLink();
+                MethodExpression expr = factory.createMethodExpression(elContext,
+                        "ok", String.class, new Class<?>[] {});
+                l.setActionExpression(expr);
+                ValueExpression source = factory.createValueExpression(elContext,
+                        "#{p}", String.class);
+                l.setValueExpression("value", source);
+                c1.getChildren().add(l);
+                table.getChildren().add(c1);
+            }
+            return table;
+        }
+
+        public void setTable(UIComponent table) {
+            this.table = (HtmlDataTable) table;
+        }
+    
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/EnumBean.java b/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/EnumBean.java
new file mode 100644
index 0000000..860d180
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/EnumBean.java
@@ -0,0 +1,113 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.model;
+
+import java.util.List;
+import java.util.ArrayList;
+
+public class EnumBean {
+
+    public enum Simple {
+        Value1,
+        Value2,
+        Value3,
+        Value4
+    }
+
+    private Simple selected;
+    private Simple selected2;
+    private Simple selected3;
+    private Simple[] mSelected;
+    public List<Simple> lSelected;
+
+    public EnumBean() {
+        selected = Simple.Value2;
+        selected2 = Simple.Value3;
+        selected3 = Simple.Value4;
+        mSelected = new Simple[] { Simple.Value1, Simple.Value3 };
+        lSelected = new ArrayList<Simple>(4);
+        lSelected.add(Simple.Value2);
+        lSelected.add(Simple.Value4);
+    }   
+
+    public Simple getSelected() {
+        return selected;
+    }
+
+    public void setSelected(Simple selected) {
+        this.selected = selected;
+    }
+    
+     public Simple getSelected2() {
+        return selected2;
+    }
+
+    public void setSelected2(Simple selected2) {
+        this.selected2 = selected2;
+    }
+
+
+    public Simple getSelected3() {
+        return selected3;
+    }
+
+    public void setSelected3(Simple selected3) {
+        this.selected3 = selected3;
+    }
+
+    public Simple[] getSelectedArray() {
+        return mSelected;
+    }
+    
+    public void setSelectedArray(Simple[] mSelected) {
+        this.mSelected = mSelected;
+    }
+    
+    public List getSelectedList() {
+        return lSelected;
+    }
+    
+    public void setSelectedList(List<Simple> lSelected) {
+        this.lSelected = lSelected;
+    }
+
+
+} // END EnumBean
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/EventTagBean.java b/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/EventTagBean.java
new file mode 100644
index 0000000..7f707b3
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/EventTagBean.java
@@ -0,0 +1,139 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.model;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.faces.application.FacesMessage;
+import javax.faces.component.ContextCallback;
+import javax.faces.component.UIComponent;
+import javax.faces.component.UIForm;
+import javax.faces.component.UIOutput;
+import javax.faces.component.ValueHolder;
+import javax.faces.context.FacesContext;
+import javax.faces.event.ComponentSystemEvent;
+
+/**
+ *
+ */
+public class EventTagBean {
+    
+    
+    public void beforeViewRender(ComponentSystemEvent event) {
+        FacesContext context = FacesContext.getCurrentInstance();
+        
+        context.getExternalContext().getRequestMap().put("preRenderComponentMessage", 
+                event.getComponent().getClass() + " pre-render");
+    }
+
+
+    public void beforeEncode(ComponentSystemEvent event) {
+        UIOutput output = (UIOutput)event.getComponent();
+        output.setValue("The '" + event.getClass().getName() + "' event fired!");
+    }
+    
+    public void beforeEncodeNoArg() {
+        FacesContext context = FacesContext.getCurrentInstance();
+        UIOutput output = (UIOutput) context.getViewRoot().findComponent("form:noArgTest");
+//        UIOutput output = (UIOutput)event.getComponent();
+        output.setValue("The no-arg event fired!");
+    }
+
+    public void postValidate(ComponentSystemEvent event) {
+        FacesContext context = FacesContext.getCurrentInstance();
+        final UIForm form = (UIForm) event.getComponent();
+        final String [] clientIds = { "lesser", "greater" };
+        final int [] values = new int[2];
+        final boolean [] hasValues = new boolean[2];
+        final List<FacesMessage> toAdd = new ArrayList<FacesMessage>();
+        
+        // Traverse the form and suck out the individual values
+        for (int i = 0; i < clientIds.length; i++) {
+            final int finalI = i;
+            form.invokeOnComponent(context, clientIds[i], new ContextCallback() {
+
+                public void invokeContextCallback(FacesContext context, UIComponent target) {
+                    Object value = ((ValueHolder) target).getValue();
+                    try {
+                        if (null != value) {
+                            values[finalI] = Integer.parseInt(value.toString());
+                            hasValues[finalI] = true;
+                        } else {
+                            hasValues[finalI] = false;
+                            FacesMessage msg = new FacesMessage(clientIds[finalI] +
+                                    " must have a value");
+                            toAdd.add(msg);
+                        }
+                    } catch (NumberFormatException nfe) {
+                        FacesMessage msg = new FacesMessage("unable to parse the number for field " + 
+                                clientIds[finalI]);
+                        toAdd.add(msg);
+                    }
+
+                }
+            });
+        }
+
+        // case one, ensure both fields have a value
+        if (!hasValues[0] || !hasValues[1]) {
+            FacesMessage msg = new FacesMessage("both fields must have a value");
+            toAdd.add(msg);
+        } else {
+            // case two, ensure lesser is lesser than greater
+            if (!(values[0] < values[1])) {
+                FacesMessage msg = new FacesMessage("lesser must be lesser than greater");
+                toAdd.add(msg);
+            }
+        }
+        
+        // If we have any messages
+        if (!toAdd.isEmpty()) {
+            // add them so the user sees the message
+            String formClientId = form.getClientId(context);
+            for (FacesMessage cur : toAdd) {
+                context.addMessage(formClientId, cur);
+            }
+            // skip remaining lifecycle phases
+            context.renderResponse();
+        }
+    }
+    
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/FaceletsBean.java b/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/FaceletsBean.java
new file mode 100644
index 0000000..de9c1cc
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/FaceletsBean.java
@@ -0,0 +1,66 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.model;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.SessionScoped;
+
+ at ManagedBean
+ at SessionScoped
+public class FaceletsBean {
+
+    boolean toggleState;
+
+
+    public String getFragment() {
+        return (toggleState ? "frag2" : "frag1");
+    }
+
+    public boolean getToggleState() {
+        return toggleState;
+    }
+
+    public String action() {
+        toggleState = !toggleState;
+        return null; // stay with the same UIViewRoot instance on post-back
+    }
+
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/ForEachBean.java b/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/ForEachBean.java
new file mode 100644
index 0000000..06b9111
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/ForEachBean.java
@@ -0,0 +1,112 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.model;
+
+
+import java.util.ArrayList;
+import java.util.List;
+
+
+/**
+ * <p>Test JavaBean for <code><c:forEach></code> testing.</p>
+ */
+
+public class ForEachBean {
+
+
+    // String Array property with pre-initialized values
+    private String arrayProperty[] = {
+        "First String",
+        "Second String",
+        "Third String",
+        "Fourth String",
+        "Fifth String"
+    };
+
+
+    public String[] getArrayProperty() {
+        return (arrayProperty);
+    }
+
+
+    public void setArrayProperty(String arrayProperty[]) {
+        this.arrayProperty = arrayProperty;
+    }
+
+
+    // String List property with pre-initialized values
+    List listProperty = new ArrayList();
+
+
+    {
+        listProperty.add("List First");
+        listProperty.add("List Second");
+        listProperty.add("List Third");
+        listProperty.add("List Fourth");
+        listProperty.add("List Fifth");
+    }
+
+
+    public List getListProperty() {
+        return (listProperty);
+    }
+
+
+    public void setListProperty(List listProperty) {
+        this.listProperty = listProperty;
+    }
+
+
+    // Scalar string property
+    private String stringProperty = "This is a String property";
+
+
+    public String getStringProperty() {
+        return (this.stringProperty);
+    }
+
+
+    public void setStringProperty(String stringProperty) {
+        this.stringProperty = stringProperty;
+    }
+
+
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/FunctionBean.java b/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/FunctionBean.java
new file mode 100644
index 0000000..0ef9842
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/FunctionBean.java
@@ -0,0 +1,63 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.model;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.context.FacesContext;
+import javax.faces.application.FacesMessage;
+import javax.el.ExpressionFactory;
+import javax.el.ValueExpression;
+
+ at ManagedBean
+public class FunctionBean {
+
+    public String getValidationResult() {
+
+        FacesContext ctx = FacesContext.getCurrentInstance();
+        ExpressionFactory factory = ctx.getApplication().getExpressionFactory();
+        ValueExpression expr = factory.createValueExpression(ctx.getELContext(),
+                                                             "#{fn:contains('somestrvalue', 'str')}",
+                                                             Boolean.class);
+        Boolean result = (Boolean) expr.getValue(ctx.getELContext());
+        return (result != null && result) ? "PASSED" : "FAILED";
+        
+    }
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/InterweavingBean.java b/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/InterweavingBean.java
new file mode 100644
index 0000000..c838657
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/InterweavingBean.java
@@ -0,0 +1,71 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.model;
+
+import javax.faces.component.UIData;
+
+import java.util.List;
+import java.util.ArrayList;
+
+public class InterweavingBean {
+
+    private UIData table;
+    List<String> list;
+
+    public InterweavingBean() {
+        list = new ArrayList<String>(1);
+        list.add("Value");
+    }
+
+
+    public UIData getTable() {
+        return table;
+    }
+
+    public void setTable(UIData table) {
+        this.table = table;
+    }
+
+    public List getItems() {
+        return list;
+    }
+    
+} // END InterweavingBean
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/ListHolder.java b/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/ListHolder.java
new file mode 100644
index 0000000..28031be
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/ListHolder.java
@@ -0,0 +1,65 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.model;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.SessionScoped;
+import java.util.List;
+import java.util.ArrayList;
+import java.io.Serializable;
+
+
+ at ManagedBean(name = "listholder")
+ at SessionScoped
+public class ListHolder implements Serializable {
+
+    private List<String[]> list = new ArrayList<String[]>(6);
+
+    {
+        list.add(new String[]{"c1"});
+        list.add(new String[]{"c1_1"});
+        list.add(new String[]{"c1_2"});
+    }
+
+    public List getList() {
+        return list;
+    }
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/ListenerBean.java b/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/ListenerBean.java
new file mode 100755
index 0000000..cc17e26
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/ListenerBean.java
@@ -0,0 +1,70 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.model;
+
+import javax.faces.event.ActionEvent;
+import javax.faces.event.ActionListener;
+import javax.faces.event.AbortProcessingException;
+import javax.faces.event.ValueChangeEvent;
+import javax.faces.event.ValueChangeListener;
+
+
+public class ListenerBean extends Object {
+
+    public ListenerBean() {
+    }
+
+    private ActionListener actionListener = null;
+    public ActionListener getActionListener() {
+        return actionListener;
+    }
+    public void setActionListener(ActionListener actionListener) {
+        this.actionListener = actionListener;
+    }
+
+    private ValueChangeListener valueChangeListener = null;
+    public ValueChangeListener getValueChangeListener() {
+        return valueChangeListener;
+    }
+    public void setValueChangeListener(ValueChangeListener valueChangeListener) {
+        this.valueChangeListener = valueChangeListener;
+    }
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/ListenerCheckBean.java b/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/ListenerCheckBean.java
new file mode 100644
index 0000000..f044e39
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/ListenerCheckBean.java
@@ -0,0 +1,91 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.model;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.context.FacesContext;
+import javax.faces.component.UIViewRoot;
+import javax.faces.event.PhaseListener;
+import javax.faces.event.PhaseEvent;
+import javax.faces.event.PhaseId;
+import javax.faces.application.FacesMessage;
+import java.util.List;
+
+ at ManagedBean
+public class ListenerCheckBean {
+
+    public void checkListeners() {
+
+        FacesContext ctx = FacesContext.getCurrentInstance();
+        UIViewRoot root = ctx.getViewRoot();
+        List<PhaseListener> listeners = root.getPhaseListeners();
+        if (listeners == null || listeners.isEmpty()) {
+            FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_ERROR,
+                                                "ERROR: No listeners registered",
+                                                "ERROR: No listeners registered");
+            ctx.addMessage(null, msg);
+        }
+        if (listeners.size() > 1) {
+            String message = "ERROR: Expected one registered listener but found: " + listeners.size();
+            FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_ERROR,
+                                                message,
+                                                message);
+            ctx.addMessage(null, msg);
+        }
+    }
+
+    public PhaseListener getListener() {
+
+        return new PhaseListener() {
+            public void afterPhase(PhaseEvent event) {
+
+            }
+
+            public void beforePhase(PhaseEvent event) {
+
+            }
+
+            public PhaseId getPhaseId() {
+                return PhaseId.ANY_PHASE;
+            }
+        };
+    }
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/MethodRef.java b/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/MethodRef.java
new file mode 100644
index 0000000..6f56f1b
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/MethodRef.java
@@ -0,0 +1,171 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.model;
+
+import javax.faces.application.FacesMessage;
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.event.ActionEvent;
+import javax.faces.event.ValueChangeEvent;
+import javax.faces.validator.ValidatorException;
+import javax.servlet.http.HttpSession;
+
+import javax.faces.component.UIInput;
+import javax.faces.el.MethodBinding;
+
+import com.sun.faces.systest.TestValueChangeListener;
+
+public class MethodRef extends Object {
+
+    public MethodRef() {
+    }
+
+
+    protected String buttonPressedOutcome = null;
+
+
+    public String getButtonPressedOutcome() {
+        return buttonPressedOutcome;
+    }
+
+
+    public void setButtonPressedOutcome(String newButtonPressedOutcome) {
+        buttonPressedOutcome = newButtonPressedOutcome;
+    }
+
+
+    public String button1Pressed() {
+        setButtonPressedOutcome("button1 was pressed");
+        return null;
+    }
+
+
+    public String invalidateSession() {
+        FacesContext fContext = FacesContext.getCurrentInstance();
+        HttpSession session = (HttpSession)
+            fContext.getExternalContext().getSession(true);
+        session.invalidate();
+        return null;
+    }
+
+
+    public String button2Pressed() {
+        setButtonPressedOutcome("button2 was pressed");
+        return null;
+    }
+
+
+    public void button3Pressed(ActionEvent event) {
+        setButtonPressedOutcome(event.getComponent().getId() +
+                                " was pressed");
+    }
+
+
+    protected String validateOutcome;
+
+
+    public String getValidateOutcome() {
+        return validateOutcome;
+    }
+
+
+    public void setValidateOutcome(String newValidateOutcome) {
+        validateOutcome = newValidateOutcome;
+    }
+
+
+    public void validateInput(FacesContext context, UIComponent toValidate, Object valueObj) {
+        String value = (String) valueObj;
+        if (!value.equals("batman")) {
+            throw new ValidatorException(new FacesMessage(
+                "You didn't enter batman",
+                "You must enter batman"));
+        }
+
+    }
+
+
+    protected String changeOutcome;
+
+
+    public String getChangeOutcome() {
+        return changeOutcome;
+    }
+
+
+    public void setChangeOutcome(String newChangeOutcome) {
+        changeOutcome = newChangeOutcome;
+    }
+
+
+    public void valueChange(ValueChangeEvent vce) {
+        vce.getComponent().getAttributes().put("onblur",
+                                               vce.getNewValue().toString());
+        setChangeOutcome(vce.getNewValue().toString());
+    }
+    
+    public void inputFieldValueChange(ValueChangeEvent vce) {
+        vce.getComponent().getAttributes().put("onblur",
+                                               vce.getNewValue().toString());
+    }
+    
+    protected UIInput inputField = null;
+    public void setInputField(UIInput input){
+        this.inputField = input;
+    }
+    
+    public UIInput getInputField() {
+        if (inputField == null) {
+            inputField = new UIInput();
+            inputField.addValueChangeListener(new TestValueChangeListener());
+            Class args[] = { ValueChangeEvent.class };
+            MethodBinding mb = 
+            FacesContext.getCurrentInstance().getApplication().
+            createMethodBinding("#{methodRef.inputFieldValueChange}", args);
+            inputField.setValueChangeListener(mb);
+        }
+        return inputField;
+    }
+
+
+}
+
+
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/NumberHolder.java b/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/NumberHolder.java
new file mode 100644
index 0000000..d84d341
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/NumberHolder.java
@@ -0,0 +1,63 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.model;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.SessionScoped;
+import java.io.Serializable;
+
+
+ at ManagedBean(name = "numberholder")
+ at SessionScoped
+public class NumberHolder implements Serializable {
+
+    private String s = "";
+
+    private int i = 0;
+
+    public void setNumber(int i) {
+        this.i = i;
+    }
+
+    public int getNumber() {
+        return i;
+    }
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/PrintEventToRequestMapPhaseListener.java b/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/PrintEventToRequestMapPhaseListener.java
new file mode 100644
index 0000000..26a6cc3
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/PrintEventToRequestMapPhaseListener.java
@@ -0,0 +1,125 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.model;
+
+import javax.faces.event.PhaseListener;
+import javax.faces.event.PhaseId;
+import javax.faces.event.PhaseEvent;
+
+import javax.faces.context.FacesContext;
+
+public class PrintEventToRequestMapPhaseListener extends Object implements PhaseListener {
+
+    public void afterPhase(PhaseEvent event) {
+	String attr = (String) event.getFacesContext().getExternalContext().getRequestMap().get("afterPhaseEvent");
+	if (null == attr) {
+	    attr = "";
+	}
+	event.getFacesContext().getExternalContext().getRequestMap().put("afterPhaseEvent", attr + " afterPhase: " + event.getPhaseId());
+    }
+    
+    
+    public void beforePhase(PhaseEvent event) {
+	String attr = (String) event.getFacesContext().getExternalContext().getRequestMap().get("beforePhaseEvent");
+	if (null == attr) {
+	    attr = "";
+	}
+	event.getFacesContext().getExternalContext().getRequestMap().put("beforePhaseEvent", attr + " beforePhase: " + event.getPhaseId());
+    }
+
+    private String phaseIdString = null;
+
+    public void setPhaseIdString(String phaseIdString) {
+	this.phaseIdString = phaseIdString;
+    }
+
+    /**
+     * <p>Look at our phaseIdString ivar.  If non-null, use this as the
+     * phaseId for the substring search below.  If null, look in the
+     * request map for an attribute called "phaseId".  If not found,
+     * return <code>PhaseId.ANY_PHASE</code>.  If found, see if it is a
+     * substring of any of the known phases, if so, return the
+     * corresponding phase Id.  If not return
+     * <code>PhaseId.ANY_PHASE</code>.</p>
+     */
+
+    public PhaseId getPhaseId() {
+
+	String phaseId = 
+	    (null != phaseIdString) ? phaseIdString : (String)
+	    FacesContext.getCurrentInstance().getExternalContext().getRequestMap().get("phaseId");
+	PhaseId result = PhaseId.ANY_PHASE;
+	if (null == phaseId) {
+	    return result;
+	}
+	if (-1 != PhaseId.ANY_PHASE.toString().indexOf(phaseId)) {
+	    result = PhaseId.ANY_PHASE;
+	}
+	else if(-1 !=PhaseId.APPLY_REQUEST_VALUES.toString().indexOf(phaseId)){
+	    result = PhaseId.APPLY_REQUEST_VALUES;
+	}
+	else if(-1 != PhaseId.PROCESS_VALIDATIONS.toString().indexOf(phaseId)){
+	    result = PhaseId.PROCESS_VALIDATIONS;
+	}
+	else if(-1 != PhaseId.UPDATE_MODEL_VALUES.toString().indexOf(phaseId)){
+	    result = PhaseId.UPDATE_MODEL_VALUES;
+	}
+	else if(-1 != PhaseId.INVOKE_APPLICATION.toString().indexOf(phaseId)){
+	    result = PhaseId.INVOKE_APPLICATION;
+	}
+	return result;
+    }
+
+    public PhaseListener getInstance() {
+	return this;
+    }
+
+    protected PhaseListener otherListener = null;
+    public PhaseListener getOtherListener() {
+	return otherListener;
+    }
+
+    public void setOtherListener(PhaseListener newOtherListener) {
+	otherListener = newOtherListener;
+    }
+
+
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/PropertyOrderBean.java b/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/PropertyOrderBean.java
new file mode 100644
index 0000000..1daceb6
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/PropertyOrderBean.java
@@ -0,0 +1,105 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.model;
+
+import java.util.ArrayList;
+
+public class PropertyOrderBean extends Object {
+
+    protected String one;
+    public String getOne() {
+	return one;
+    }
+
+    public void setOne(String newOne) {
+	one = newOne;
+	order = order + " " + one;
+    }
+
+    protected String two;
+    public String getTwo() {
+	return two;
+    }
+
+    public void setTwo(String newTwo) {
+	two = newTwo;
+	order = order + " " + two;
+    }
+
+    protected String three;
+    public String getThree() {
+	return three;
+    }
+
+    public void setThree(String newThree) {
+	three = newThree;
+	order = order + " " + three;
+    }
+
+    protected String four;
+    public String getFour() {
+	return four;
+    }
+
+    public void setFour(String newFour) {
+	four = newFour;
+	order = order + " " + four;
+    }
+
+    
+    protected String order = "";
+    public String getOrder() {
+	return order;
+    }
+
+    protected ArrayList listProperty = new ArrayList();
+
+    public ArrayList getListProperty() {
+	return listProperty;
+    }
+
+    public void setListProperty(ArrayList newListProperty) {
+	listProperty = newListProperty;
+    }
+
+
+
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/ResourceInjectionBean.java b/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/ResourceInjectionBean.java
new file mode 100644
index 0000000..2bb10d3
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/ResourceInjectionBean.java
@@ -0,0 +1,61 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.model;
+
+import java.io.IOException;
+import java.sql.Connection;
+
+import javax.naming.InitialContext;
+import javax.annotation.Resource;
+import javax.annotation.Resources;
+import javax.sql.DataSource;
+
+
+  
+public class ResourceInjectionBean {
+
+    @Resource(name="welcomeMessage")
+    private String welcomeMessage;
+    
+    public String getWelcomeMessage() {
+        return welcomeMessage;
+    }
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/SelectItemsBean.java b/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/SelectItemsBean.java
new file mode 100644
index 0000000..07e046c
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/SelectItemsBean.java
@@ -0,0 +1,114 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.model;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.model.SelectItem;
+import javax.faces.model.SelectItemGroup;
+
+ at ManagedBean
+public class SelectItemsBean {
+    
+    private SelectItem selectedHobbit;
+    private List<SelectItem> ctorHobbits;
+
+    public List<SelectItem> getCtorHobbits() {
+        return ctorHobbits;
+    }
+
+    public SelectItem getSelectedHobbit() {
+        return selectedHobbit;
+    }
+
+    public void setSelectedHobbit(SelectItem selectedHobbit) {
+        this.selectedHobbit = selectedHobbit;
+    }
+
+    public SelectItemsBean() {
+        this.ctorHobbits = new ArrayList<SelectItem>();
+        SelectItem initialValue = new SelectItem("Frodo");
+        setSelectedHobbit(initialValue);
+        this.ctorHobbits.add(initialValue);
+        this.ctorHobbits.add(new SelectItem("Pippin"));
+        this.ctorHobbits.add(new SelectItem("Bilbo"));
+        this.ctorHobbits.add(new SelectItem("Merry"));
+    }
+    
+    
+
+	public List<SelectItem> getHobbits() {
+		List<SelectItem> result = new ArrayList<SelectItem>(4);
+		result.add(new SelectItem("Frodo"));
+		result.add(new SelectItem("Pippin"));
+		result.add(new SelectItem("Bilbo"));
+		result.add(new SelectItem("Merry"));
+		return result;
+	}
+	
+	public List<SelectItem> getHobbitsNestedInGroup() {
+		List<SelectItem> result = new ArrayList<SelectItem>();
+		SelectItemGroup group = new SelectItemGroup("Hobbits");
+		group.setSelectItems(getHobbits().toArray(new SelectItem[0]));
+		result.add(group);
+		return result;
+	}
+	
+	public List<SelectItem> getHobbitsNoSelectionNestedInGroup() {
+		List<SelectItem> result = new ArrayList<SelectItem>();
+		SelectItemGroup group = new SelectItemGroup("Hobbits");
+		group.setSelectItems(getHobbitsNoSelection().toArray(new SelectItem[0]));
+		result.add(group);
+		return result;
+	}
+	
+	public List<SelectItem> getHobbitsNoSelection() {
+		List<SelectItem> result = new ArrayList<SelectItem>(5);
+		SelectItem noSelectionOption = new SelectItem("No Selection");
+		noSelectionOption.setNoSelectionOption(true);
+		result.add(noSelectionOption);
+		result.addAll(getHobbits());
+		return result;
+	}
+    
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/SelectMany05Bean.java b/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/SelectMany05Bean.java
new file mode 100644
index 0000000..e020328
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/SelectMany05Bean.java
@@ -0,0 +1,371 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.model;
+
+import java.util.Set;
+import java.util.List;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Collections;
+import java.util.SortedSet;
+import java.util.TreeSet;
+import java.util.ArrayList;
+import java.util.LinkedHashSet;
+import java.util.Vector;
+import java.util.LinkedList;
+import java.util.Arrays;
+import java.util.Comparator;
+import java.util.concurrent.CopyOnWriteArraySet;
+
+import javax.faces.model.SelectItem;
+import javax.faces.model.DataModel;
+import javax.faces.model.ListDataModel;
+import javax.faces.FacesException;
+
+
+public class SelectMany05Bean {
+
+    // As IBM j9 JRE/JDK does not use a static instance for reverseOrder()
+    // we need to keep a static instance to make equals() work
+    private static final Comparator<String> REVERSE_COMPARATOR = Collections.reverseOrder();
+
+    private final Collection<SelectItem> possibleValues;
+    private Set<String> setValues;
+    private SortedSet<String> sortedSetValues;
+    private List<String> listValues;
+    private Collection<String> collectionValues;
+    private String[] arrayValues;
+    private SortedSet<String> initialSortedSetValues;
+    private Collection<String> initialCollectionValues;
+    private Set<String> initialSetValues;
+    private List<String> initialListValues;
+    private Collection<String> collectionFromHintValues;
+    private Collection<String> collectionFromHintValues2;
+    private Object someValues;
+    private Collection<HobbitBean> hobbitCollection;
+    private DataModel<HobbitBean> hobbitDataModel;
+
+    // ------------------------------------------------------------ Constructors
+
+    public SelectMany05Bean() {
+        HobbitBean[] hobbits = getHobbitBeanArray();
+
+        Set<SelectItem> items = new LinkedHashSet<SelectItem>();
+        for (HobbitBean hobbit : hobbits) {
+            items.add(new SelectItem(hobbit.getName()));
+        }
+        hobbitCollection = new TreeSet<HobbitBean>();
+        hobbitCollection.addAll(Arrays.asList(hobbits));
+        possibleValues = Collections.unmodifiableSet(items);
+        initialSortedSetValues = new TreeSet<String>(REVERSE_COMPARATOR);
+        initialSortedSetValues.add("Pippin");
+        initialSortedSetValues.add("Frodo");
+        initialCollectionValues = new LinkedHashSet<String>(2);
+        initialCollectionValues.add("Bilbo");
+        initialCollectionValues.add("Merry");
+        initialSetValues = new CopyOnWriteArraySet<String>(); // not Cloneable
+        initialSetValues.add("Frodo");
+        initialListValues = new Vector<String>();
+        initialListValues.add("Bilbo");
+        initialListValues.add("Pippin");
+        initialListValues.add("Merry");
+        hobbitDataModel = new ListDataModel<HobbitBean>(new ArrayList<HobbitBean>(Arrays.asList(hobbits)));
+
+    }
+    
+    protected HobbitBean [] getHobbitBeanArray() {
+        HobbitBean[] hobbits = {
+              new HobbitBean("Bilbo", "Bilbo - <Ring Finder>"),
+              new HobbitBean("Frodo", "Frodo - <Ring Bearer>"),
+              new HobbitBean("Merry", "Merry - <Trouble Maker>"),
+              new HobbitBean("Pippin", "Pipping - <Trouble Maker>")
+        };
+        return hobbits;
+    }
+
+
+    // ---------------------------------------------------------- Public Methods
+
+
+    public Collection<HobbitBean> getHobbitCollection() {
+        return hobbitCollection;
+    }
+
+    public DataModel<HobbitBean> getHobbitDataModel() {
+        return hobbitDataModel;
+    }
+
+    public Set<String> getSetValues() {
+        return setValues;
+    }
+
+    public void setSetValues(Set<String> setValues) {
+        if (!(setValues instanceof HashSet)) {
+            throw new FacesException("[setSetValues] Error: Expected value to be ArrayList");
+        }
+        this.setValues = setValues;
+    }
+
+    public List<String> getListValues() {
+        return listValues;
+    }
+
+    public void setListValues(List<String> listValues) {
+        if (!(listValues instanceof ArrayList)) {
+            throw new FacesException("[setListValues] Error: Expected value to be ArrayList");
+        }
+        this.listValues = listValues;
+    }
+
+    public String[] getArrayValues() {
+        return arrayValues;
+    }
+
+    public void setArrayValues(String[] arrayValues) {
+        this.arrayValues = arrayValues;
+    }
+
+    public SortedSet<String> getSortedSetValues() {
+        return sortedSetValues;
+    }
+
+    public void setSortedSetValues(SortedSet<String> sortedSetValues) {
+        if (!(sortedSetValues instanceof TreeSet)) {
+            throw new FacesException("[setSortedSetValues] Error: Expected value to be TreeSet");
+        }
+        if (((TreeSet) sortedSetValues).comparator() != null) {
+            throw new FacesException("[setSortedSetValues] Error: Expected null comparator");
+        }
+        this.sortedSetValues = sortedSetValues;
+    }
+
+    public Collection<String> getCollectionValues() {
+        return collectionValues;
+    }
+
+    public void setCollectionValues(Collection<String> collectionValues) {
+        if (!(collectionValues instanceof ArrayList)) {
+            throw new FacesException("[setCollectionValues] Error: Expected value to be ArrayList");
+        }
+        this.collectionValues = collectionValues;
+    }
+
+    public Collection<SelectItem> getPossibleValues() {
+        return possibleValues;
+    }
+
+    public Collection<?> getEmptyCollection() {
+        return Collections.emptyList();
+    }
+
+    ////////////////////////////////////////////////////////////////////////////
+
+
+    public SortedSet<String> getInitialSortedSetValues() {
+        return initialSortedSetValues;
+    }
+
+    public void setInitialSortedSetValues(SortedSet<String> initialSortedSetValues) {
+        if (!(initialSortedSetValues instanceof TreeSet)) {
+            throw new FacesException("[setInitialSortedSetValues] Error: Expected value to be TreeSet");
+        }
+
+        if (!REVERSE_COMPARATOR.equals(initialSortedSetValues.comparator())) {
+            throw new FacesException("[setInitialSortedSetValues] Error: Comparator is not equivalent to Collections.reverseOrder()");
+        }
+
+// This comparison fails on AIX platform, so we do the above comparison
+//        if (!Collections.reverseOrder().equals(((TreeSet) initialSortedSetValues).comparator())) {
+//            throw new FacesException("[setInitialSortedSetValues] Error: Comparator is not equivalent to Collections.reverseOrder()");
+//        }
+        this.initialSortedSetValues = initialSortedSetValues;
+    }
+
+    public Collection<String> getInitialCollectionValues() {
+        return initialCollectionValues;
+    }
+
+    public void setInitialCollectionValues(Collection<String> initialCollectionValues) {
+        if (!(initialCollectionValues instanceof LinkedHashSet)) {
+            throw new FacesException("[setCollectionValues] Error: Expected value to be LinkedHashSet");
+        }
+        this.initialCollectionValues = initialCollectionValues;
+    }
+
+    public Set<String> getInitialSetValues() {
+        return initialSetValues;
+    }
+
+    public void setInitialSetValues(Set<String> initialSetValues) {
+        if (!(initialSetValues instanceof CopyOnWriteArraySet)) {
+            throw new FacesException("[initialSetValues] Error: Expected value to be CopyOnWriteArraySet");
+        }
+        this.initialSetValues = initialSetValues;
+    }
+
+    public List<String> getInitialListValues() {
+        return initialListValues;
+    }
+
+    public void setInitialListValues(List<String> initialListValues) {
+        if (!(initialListValues instanceof Vector)) {
+            throw new FacesException("[initialListValues] Error: Expected value to be Vector");
+        }
+        this.initialListValues = initialListValues;
+    }
+
+    ////////////////////////////////////////////////////////////////////////////
+
+    public Collection<String> getCollectionFromHintValues() {
+        return collectionFromHintValues;
+    }
+
+    public void setCollectionFromHintValues(Collection<String> collectionFromHintValues) {
+        if (!(collectionFromHintValues instanceof LinkedList)) {
+            throw new FacesException("[collectionFromHintValues] Error: Expected value to be LinkedList");
+        }
+        this.collectionFromHintValues = collectionFromHintValues;
+    }
+
+     public Collection<String> getCollectionFromHintValues2() {
+        return collectionFromHintValues2;
+    }
+
+    public void setCollectionFromHintValues2(Collection<String> collectionFromHintValues) {
+        if (!(collectionFromHintValues instanceof LinkedList)) {
+            throw new FacesException("[collectionFromHintValues2] Error: Expected value to be LinkedList");
+        }
+        this.collectionFromHintValues2 = collectionFromHintValues;
+    }
+
+    public Class<? extends Collection> getCollectionType() {
+        return LinkedList.class;
+    }
+
+    ////////////////////////////////////////////////////////////////////////////
+
+    private int[] selectedIntValues;
+    private int[] intOptions = new int[] { 1, 2, 3, 4 };
+
+    public int[] getSelectedIntValues() {
+        return selectedIntValues;
+    }
+
+    public void setSelectedIntValues(int[] selectedIntValues) {
+        this.selectedIntValues = selectedIntValues;
+    }
+
+    public int[] getIntOptions() {
+        return intOptions;
+    }
+
+    ////////////////////////////////////////////////////////////////////////////
+
+    private Integer[] selectedIntegerValues;
+    private Integer[] integerOptions = new Integer[] { 1, 2, 3, 4 };
+
+    public Integer[] getSelectedIntegerValues() {
+        return selectedIntegerValues;
+    }
+
+    public void setSelectedIntegerValues(Integer[] selectedIntegerValues) {
+        this.selectedIntegerValues = selectedIntegerValues;
+    }
+
+    public Integer[] getIntegerOptions() {
+        return integerOptions;
+    }
+
+    ////////////////////////////////////////////////////////////////////////////
+
+    public Object getSomeValues() {
+        return someValues;
+    }
+
+    public void setSomeValues(Object someValues) {
+        // validate the case where the type is Object.class.  The logic should
+        // default the value to Object[].
+        if (!someValues.getClass().isArray()) {
+            throw new FacesException("[someValues] Error: Expected value to be an array type");
+        }
+        this.someValues = someValues;
+    }
+
+
+    // ---------------------------------------------------------- Nested Classes
+
+
+    public static final class HobbitBean implements Comparable {
+
+        private String name;
+        private String bio;
+
+
+        // -------------------------------------------------------- Constructors
+
+
+        public HobbitBean(String name, String bio) {
+            this.name = name;
+            this.bio = bio;
+        }
+
+
+        public String getName() {
+            return name;
+        }
+
+        public String getBio() {
+            return bio;
+        }
+
+        @Override
+        public String toString() {
+            return name;
+        }
+
+        // --------------------------------------------- Methods from Comparable
+
+
+        public int compareTo(Object o) {
+            return name.compareTo(((HobbitBean) o).name);
+        }
+    }
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/SelectMany05BeanWithNoSelectionValue.java b/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/SelectMany05BeanWithNoSelectionValue.java
new file mode 100644
index 0000000..3791bbd
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/SelectMany05BeanWithNoSelectionValue.java
@@ -0,0 +1,83 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.model;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ *
+ * @author edburns
+ */
+public class SelectMany05BeanWithNoSelectionValue extends SelectMany05Bean {
+
+    private List<HobbitBean> hobbitList;
+    
+    
+    public SelectMany05BeanWithNoSelectionValue() {
+        HobbitBean[] hobbits = getHobbitBeanArray();
+
+        hobbitList = new ArrayList<HobbitBean>();
+        hobbitList.addAll(Arrays.asList(hobbits));
+        
+    }
+
+    @Override
+    protected HobbitBean[] getHobbitBeanArray() {
+        // Prepend a HobbitBean with the value of "No Selection"
+        // without the quotes, to the super's hobbit bean array.
+        HobbitBean [] superResult = super.getHobbitBeanArray();
+        HobbitBean [] result = new HobbitBean[superResult.length + 1];
+        result[0] = new HobbitBean("No Selection", "<No Selection>");
+        for (int i = 1; i < result.length; i++) {
+            result[i] = superResult[i-1];
+        }
+        
+        return result;
+    }
+    
+    public List<HobbitBean> getHobbitList() {
+        return hobbitList;
+    }
+    
+
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/SpecialBean.java b/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/SpecialBean.java
new file mode 100644
index 0000000..98a1f30
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/SpecialBean.java
@@ -0,0 +1,62 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.model;
+public class SpecialBean {
+
+        private final String special;
+
+        public SpecialBean(String specialValue) {
+            special = specialValue;
+        }
+
+        public String getString() {
+            return special;
+        }
+
+        public boolean equals(Object target) {
+           if (!(target instanceof SpecialBean)) {
+              return false;
+           } else {
+           return (special.equals(((SpecialBean) target).getString()));
+           }
+        }
+    }
+
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/SpecialConverter.java b/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/SpecialConverter.java
new file mode 100644
index 0000000..d607065
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/SpecialConverter.java
@@ -0,0 +1,69 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.model;
+
+import javax.faces.context.*;
+import javax.faces.component.*;
+import javax.faces.convert.*;
+public class SpecialConverter implements Converter {
+        public Object getAsObject(FacesContext context,
+                                  UIComponent component,
+                                  String value)
+        throws ConverterException {            
+            if (value == null) {
+               throw new ConverterException();
+            } else {
+                return new SpecialBean(value);
+            }
+        }
+
+        public String getAsString(FacesContext context,
+                                  UIComponent component,
+                                  Object value)
+        throws ConverterException {           
+            if (!(value instanceof SpecialBean)) {
+                throw new ConverterException();
+            } else {
+                return ((SpecialBean) value).getString();
+            }
+        }
+    }
+
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/StringHolder.java b/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/StringHolder.java
new file mode 100644
index 0000000..3e9b210
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/StringHolder.java
@@ -0,0 +1,61 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.model;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.SessionScoped;
+import java.io.Serializable;
+
+
+ at ManagedBean(name = "stringholder")
+ at SessionScoped
+public class StringHolder implements Serializable {
+
+    private String s = "";
+
+    public void setString(String s) {
+        this.s = s;
+    }
+
+    public String getString() {
+        return s;
+    }
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/TestBean.java b/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/TestBean.java
new file mode 100644
index 0000000..d3ecb27
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/TestBean.java
@@ -0,0 +1,1011 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.model;
+
+import java.beans.FeatureDescriptor;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Random;
+import java.util.ResourceBundle;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
+import javax.el.ELContext;
+import javax.el.ELResolver;
+import javax.faces.FactoryFinder;
+import javax.faces.application.Application;
+import javax.faces.component.UIComponent;
+import javax.faces.component.UIInput;
+import javax.faces.component.UINamingContainer;
+import javax.faces.component.html.HtmlCommandButton;
+import javax.faces.component.html.HtmlOutputText;
+import javax.faces.context.ExternalContext;
+import javax.faces.context.FacesContext;
+import javax.faces.el.EvaluationException;
+import javax.faces.el.PropertyNotFoundException;
+import javax.faces.el.PropertyResolver;
+import javax.faces.event.AbortProcessingException;
+import javax.faces.event.ActionEvent;
+import javax.faces.event.SystemEvent;
+import javax.faces.event.SystemEventListener;
+import javax.faces.event.SystemEventListenerHolder;
+import javax.faces.event.ValueChangeEvent;
+import javax.faces.model.SelectItem;
+import javax.servlet.ServletContext;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpSession;
+
+/**
+ * <p>Test JavaBean for managed object creation facility.</p>
+ */
+public class TestBean implements SystemEventListenerHolder {
+
+    public List<SystemEventListener> getListenersForEventClass(Class<? extends SystemEvent> arg0) {
+        return Collections.EMPTY_LIST;
+    }
+    
+public enum Suit { Hearts, Clubs, Diamonds, Spades }
+public enum Color { Red, Blue, Green, Orange }
+
+    private Random random;
+    private ArrayList newList1= new ArrayList();
+    private ArrayList newList2= new ArrayList();
+    private ArrayList oneElementList;
+    private List newList3 = new ArrayList();
+
+    ServletContext servletContext = null;
+    
+    public Suit returnSpades() {
+        return Suit.Spades;
+    }
+    
+    public Suit returnDiamonds() {
+        return Suit.Diamonds;
+    }
+
+    public TestBean() {
+    random = new Random(4143);
+        FacesContext context = FacesContext.getCurrentInstance();
+        ExternalContext extContext = (null != context) ? context.getExternalContext() : null;
+        servletContext = (null != extContext) ? (ServletContext) extContext.getContext() : null;
+        oneElementList = new ArrayList<String>(1);
+        oneElementList.add("hello");
+    }
+
+
+    private boolean booleanProperty = true;
+
+
+    public boolean getBooleanProperty() {
+        return (this.booleanProperty);
+    }
+
+
+    public void setBooleanProperty(boolean booleanProperty) {
+        this.booleanProperty = booleanProperty;
+    }
+
+    private boolean booleanProperty2 = false;
+    public boolean getBooleanProperty2() {
+    return booleanProperty2;
+    }
+
+    public void setBooleanProperty2(boolean newBooleanProperty2) {
+    booleanProperty2 = newBooleanProperty2;
+    }
+
+    protected String successOutcome = "/success.xhtml";
+
+    public String getSuccessOutcome() {
+        return successOutcome;
+    }
+
+    public void setSuccessOutcome(String successOutcome) {
+        this.successOutcome = successOutcome;
+    }
+    protected String failureOutcome = "/failure.xhtml";
+
+    public String getFailureOutcome() {
+        return failureOutcome;
+    }
+
+    public void setFailureOutcome(String failureOutcome) {
+        this.failureOutcome = failureOutcome;
+    }
+
+
+
+    private byte byteProperty = 12;
+
+
+    public byte getByteProperty() {
+        return (this.byteProperty);
+    }
+
+
+    public void setByteProperty(byte byteProperty) {
+        this.byteProperty = byteProperty;
+    }
+
+
+    private double doubleProperty = 123.45;
+
+
+    public double getDoubleProperty() {
+        return (this.doubleProperty);
+    }
+
+
+    public void setDoubleProperty(double doubleProperty) {
+        this.doubleProperty = doubleProperty;
+    }
+
+
+    private float floatProperty = (float) 12.34;
+
+
+    public float getFloatProperty() {
+        return (this.floatProperty);
+    }
+
+
+    public void setFloatProperty(float floatProperty) {
+        this.floatProperty = floatProperty;
+    }
+
+
+    private int intProperty = 123;
+
+
+    public int getIntProperty() {
+        return (this.intProperty);
+    }
+
+
+    public void setIntProperty(int intProperty) {
+        this.intProperty = intProperty;
+    }
+
+    private int[] intsProperty = {5, 6, 7};
+
+    public int[] getIntsProperty() {
+        return (this.intsProperty);
+    }
+
+    public void setIntsProperty(int[] intsProperty) {
+        this.intsProperty = intsProperty;
+    }
+
+    private long longProperty = 12345;
+
+
+    public long getLongProperty() {
+        return (this.longProperty);
+    }
+
+
+    public void setLongProperty(long longProperty) {
+        this.longProperty = longProperty;
+    }
+
+
+    private short shortProperty = 1234;
+
+
+    public short getShortProperty() {
+        return (this.shortProperty);
+    }
+
+
+    public void setShortProperty(short shortProperty) {
+        this.shortProperty = shortProperty;
+    }
+
+
+    private String stringProperty = "This is a String property";
+
+
+    public String getStringProperty() {
+        return (this.stringProperty);
+    }
+
+
+    public void setStringProperty(String stringProperty) {
+        this.stringProperty = stringProperty;
+    }
+
+
+    private UIInput userName = null;
+
+
+    public UIInput getUserName() {
+        return (this.userName);
+    }
+
+
+    public void setUserName(UIInput userName) {
+        this.userName = userName;
+    }
+
+    private String renderKitInfo = null;
+    public String getRenderKitInfo() {
+        renderKitInfo = FacesContext.getCurrentInstance().
+            getViewRoot().getRenderKitId();
+        return renderKitInfo;
+    }
+    public void setRenderKitInfo(String renderKitInfo) {
+        this.renderKitInfo = renderKitInfo;
+    }
+    private String responseWriterInfo = null;
+    public String getResponseWriterInfo() {
+        FacesContext context = FacesContext.getCurrentInstance();
+        if (null != context) {
+            Object responseWriter = context.getResponseWriter();
+            if (null != responseWriter) {
+                responseWriterInfo = responseWriter.getClass().getName();
+            }
+        }
+        return responseWriterInfo;
+    }
+    public void setResponseWriterInfo(String responseWriterInfo) {
+        this.responseWriterInfo = responseWriterInfo;
+    }
+
+    private Object bean = null;
+
+
+    public Object getBean() {
+        return (this.bean);
+    }
+
+
+    public void setBean(Object bean) {
+        this.bean = bean;
+    }
+
+    public List selectList = null;
+
+    public List getSelectList() {
+    if (null == selectList) {
+        selectList = new ArrayList();
+        selectList.add(new SelectItem("one", "one", "one"));
+        selectList.add(new SelectItem("two", "two", "two"));
+        selectList.add(new SelectItem("three", "three", "three"));
+    }
+    return selectList;
+    }
+
+    public void setSelectList(List newSelectList) {
+    selectList = newSelectList;
+    }
+
+    protected String selection = null;
+
+    public String getSelection() {
+    return selection;
+    }
+
+    public void setSelection(String newSelection) {
+    selection = newSelection;
+    }
+
+    protected String [] multiSelection;
+    public String [] getMultiSelection() {
+    return multiSelection;
+    }
+
+    public void setMultiSelection(String [] newMultiSelection) {
+    multiSelection = newMultiSelection;
+    }
+    
+    public Object getNullProperty() {
+        return null;
+    }
+
+    public ArrayList getOneElementList() {
+        return oneElementList;
+    }
+
+    public void setOneElementList(ArrayList oneElementList) {
+        this.oneElementList = oneElementList;
+    }
+
+    public void valueChanged(ValueChangeEvent event)
+        throws AbortProcessingException {
+    String [] values = (String []) event.getNewValue();
+    if (null == values) {
+        valueChangeMessage = "";
+    }
+    else {
+        valueChangeMessage = "value changed, new values: ";
+        for (int i = 0; i < values.length; i++) {
+        valueChangeMessage = valueChangeMessage + " " + values[i];
+        }
+    }
+    }
+
+    protected String valueChangeMessage;
+    public String getValueChangeMessage() {
+    return valueChangeMessage;
+    }
+
+    public void setValueChangeMessage(String newValueChangeMessage) {
+    valueChangeMessage = newValueChangeMessage;
+    }
+
+    public List getNondeterministicSelectList() {
+    ArrayList list = new ArrayList(3);
+    String str = new String((new Float(random.nextFloat())).toString());
+    list.add(new SelectItem(str, str, str));
+    str = new String((new Float(random.nextFloat())).toString());
+    list.add(new SelectItem(str, str, str));
+    str = new String((new Float(random.nextFloat())).toString());
+    list.add(new SelectItem(str, str, str));
+    return list;
+    }
+
+    public void setNondeterministicSelectList(List newNondeterministicSelectList) {
+    }
+
+    public void addComponentToTree(ActionEvent action) {
+    HtmlOutputText output = new HtmlOutputText();
+    output.setValue("<p>==new output==</p>");
+    output.setEscape(false);
+
+    FacesContext ctx = FacesContext.getCurrentInstance();
+    UIComponent group = ctx.getViewRoot().findComponent("form" + UINamingContainer.getSeparatorChar(ctx) +  "addHere");
+    group.getChildren().add(output);
+
+    }
+
+    /*
+     * replace the propertyResolver with one that does our bidding for
+     * this test.
+     */
+
+    public void replacePropertyResolver(ActionEvent action) {
+    FacesContext context = FacesContext.getCurrentInstance();
+    Application app = context.getApplication();
+
+    // see if we need to take action-
+    if (null == context.getExternalContext().getSessionMap().get("systest.replacePropertyResolver")) {
+        final PropertyResolver oldProp = app.getPropertyResolver();
+        PropertyResolver
+        newProp = new PropertyResolver() {
+            public Object getValue(Object base, Object property)
+            throws EvaluationException, PropertyNotFoundException {
+            return oldProp.getValue(base, property);
+            }
+
+            public Object getValue(Object base, int index)
+            throws EvaluationException, PropertyNotFoundException {
+            return oldProp.getValue(base, index);
+            }
+
+            public void setValue(Object base, Object property, Object value)
+            throws EvaluationException, PropertyNotFoundException {
+            TestBean.this.setValueChangeMessage("setValue() called");
+            oldProp.setValue(base, property, value);
+            }
+
+            public void setValue(Object base, int index, Object value)
+            throws EvaluationException, PropertyNotFoundException {
+            TestBean.this.setValueChangeMessage("setValue() called");
+            oldProp.setValue(base, index, value);
+            }
+
+            public boolean isReadOnly(Object base, Object property)
+            throws EvaluationException, PropertyNotFoundException {
+            return oldProp.isReadOnly(base, property);
+            }
+
+            public boolean isReadOnly(Object base, int index)
+            throws EvaluationException, PropertyNotFoundException {
+            return oldProp.isReadOnly(base, index);
+            }
+
+            public Class getType(Object base, Object property)
+            throws EvaluationException, PropertyNotFoundException {
+            return oldProp.getType(base, property);
+            }
+
+            public Class getType(Object base, int index)
+            throws EvaluationException, PropertyNotFoundException {
+            return oldProp.getType(base, index);
+            }
+
+        };
+        app.setPropertyResolver(newProp);
+        context.getExternalContext().getSessionMap().put("systest.replacePropertyResolver", oldProp);
+    }
+    }
+
+
+
+    /*
+     * restore the original PropertyResolver.
+     */
+
+    public void restorePropertyResolver(ActionEvent action) {
+    FacesContext context = FacesContext.getCurrentInstance();
+    Application app = context.getApplication();
+    PropertyResolver oldProp = null;
+
+    // see if we need to take action-
+    if (null != (oldProp = (PropertyResolver) context.getExternalContext().getSessionMap().get("systest.replacePropertyResolver"))) {
+        app.setPropertyResolver(oldProp);
+        context.getExternalContext().getSessionMap().remove("systest.replacePropertyResolver");
+        setValueChangeMessage(null);
+
+    }
+    }
+
+    protected HtmlCommandButton boundButton = new HtmlCommandButton();
+    public HtmlCommandButton getBoundButton() {
+    if (null != boundButton) {
+        boundButton.setValue("button label");
+    }
+    return boundButton;
+    }
+
+    public void setBoundButton(HtmlCommandButton newBoundButton) {
+    boundButton = newBoundButton;
+    }
+
+    public String getFactoryPrintout() {
+        String result = "";
+        String[] factoryNames = {
+              FactoryFinder.APPLICATION_FACTORY,
+              FactoryFinder.FACES_CONTEXT_FACTORY,
+              FactoryFinder.LIFECYCLE_FACTORY,
+              FactoryFinder.RENDER_KIT_FACTORY
+        };
+        for (int i = 0; i < factoryNames.length; i++) {
+            String tmp = FactoryFinder.getFactory(factoryNames[i]).toString();
+            if (tmp.startsWith("com.sun.faces")) {
+                int idx = tmp.lastIndexOf('.');
+                tmp = tmp.substring(idx + 1);
+                idx = tmp.indexOf('@');
+                tmp = tmp.substring(0, idx);
+                result += tmp + ' ';
+            } else {
+                result += FactoryFinder.getFactory(factoryNames[i]).toString()
+                          + ' ';
+            }
+        }
+        return result;
+    }
+
+    /**
+     * Holds value of property setPropertyTarget.
+     */
+    private String setPropertyTarget = "default value";
+
+    /**
+     * Getter for property setPropertyTarget.
+     * @return Value of property setPropertyTarget.
+     */
+    public String getSetPropertyTarget() {
+
+        return this.setPropertyTarget;
+    }
+
+    /**
+     * Setter for property setPropertyTarget.
+     * @param setPropertyTarget New value of property setPropertyTarget.
+     */
+    public void setSetPropertyTarget(String setPropertyTarget) {
+
+        this.setPropertyTarget = setPropertyTarget;
+    }
+
+    /**
+     * Holds value of property counter.
+     */
+    private String counter = "0";
+    private int counterInt = 0;
+
+    /**
+     * Getter for property counter.
+     * @return Value of property counter.
+     */
+    public String getCounter() {
+        counter = Integer.valueOf(counterInt++).toString();
+        return counter;
+    }
+
+    /**
+     * Holds value of property validatorMessage.
+     */
+    private String validatorMessage = "Validator Message Expression";
+
+    /**
+     * Getter for property validatorMessage.
+     * @return Value of property validatorMessage.
+     */
+    public String getValidatorMessage() {
+
+        return this.validatorMessage;
+    }
+
+    /**
+     * Holds value of property converterMessage.
+     */
+    private String converterMessage = "Converter Message Expression";
+
+    /**
+     * Getter for property converterMessage.
+     * @return Value of property converterMessage.
+     */
+    public String getConverterMessage() {
+
+        return this.converterMessage;
+    }
+
+    public ArrayList getNewList1() {
+        return newList1;
+    }
+
+    public ArrayList getNewList2() {
+        return newList2;
+    }
+
+   public void valueChange1(ValueChangeEvent vce) {
+        String newValue = vce.getNewValue().toString();
+        if (newList1.size() == 3){
+            newList1.clear();
+        }
+        newList1.add(newValue);
+   }
+   
+   public void valueChange0() {
+       FacesContext.getCurrentInstance().getExternalContext().getRequestMap().put("valueChange0Called", 
+               "true");
+   }
+   
+    public void actionListener0() {
+       FacesContext.getCurrentInstance().getExternalContext().getRequestMap().put("actionListener0Called", 
+               "true");
+   }
+
+
+   public void valueChange2(ValueChangeEvent vce) {
+        String newValue = vce.getNewValue().toString();
+        if (newList2.size() == 3){
+            newList2.clear();
+        }
+        newList2.add(newValue);
+   }
+
+    private Integer selectedValue = new Integer(2);
+
+    public Integer getSelectedValue() {
+        return selectedValue;
+    }
+
+    public void setSelectedValue(Integer selectedValue) {
+        this.selectedValue = selectedValue;
+    }
+
+    public SelectItem[] getMySelectItems(){
+        return new SelectItem[]{
+            new SelectItem(new Integer(1),"1"),
+            new SelectItem(new Integer(2),"2"),
+            new SelectItem(new Integer(3),"3")
+        };
+    }
+
+    private int intVal = 3;
+    public int getInt() {
+        return intVal;
+    }
+
+
+    public void setInt(int newIntVal) {
+        intVal = newIntVal;
+    }
+
+
+    @PostConstruct
+    public void postConstruct() {
+        setPostConstructCalled(true);
+        FacesContext context = FacesContext.getCurrentInstance();
+        context.getApplication().publishEvent(context, TestBeanPostConstructEvent.class, this);
+    }
+
+    @PreDestroy
+    public void preDestroy() {
+        setPreDestroyCalled(true);
+        FacesContext context = FacesContext.getCurrentInstance();
+        if (null != context) {
+            context.getApplication().publishEvent(context, TestBeanPreDestroyEvent.class, this);
+        }
+    }
+
+    /**
+     * Holds value of property postConstructCalled.
+     */
+    private boolean postConstructCalled  = false;
+
+    /**
+     * Getter for property postConstructCalled.
+     * @return Value of property postConstructCalled.
+     */
+    public boolean isPostConstructCalled() {
+
+        return this.postConstructCalled;
+    }
+
+    /**
+     * Setter for property postConstructCalled.
+     * @param postConstructCalled New value of property postConstructCalled.
+     */
+    public void setPostConstructCalled(boolean postConstructCalled) {
+
+        this.postConstructCalled = postConstructCalled;
+        appendStatusMessage("bean: " + getStringProperty() +
+                            " postConstructCalled: " + postConstructCalled);
+
+    }
+
+    /**
+     * Holds value of property preDestroyCalled.
+     */
+    private boolean preDestroyCalled  = false;
+
+    /**
+     * Getter for property preDestroyCalled.
+     * @return Value of property preDestroyCalled.
+     */
+    public boolean isPreDestroyCalled() {
+
+        return this.preDestroyCalled;
+    }
+
+    /**
+     * Setter for property preDestroyCalled.
+     * @param preDestroyCalled New value of property preDestroyCalled.
+     */
+    public void setPreDestroyCalled(boolean preDestroyCalled) {
+        this.preDestroyCalled = preDestroyCalled;
+        appendStatusMessage("bean: " + getStringProperty() +
+                            " preDestroyCalled: " + preDestroyCalled);
+    }
+
+    public String invalidateSession() {
+        ((HttpSession)FacesContext.getCurrentInstance().getExternalContext().getSession(true)).invalidate();
+        return null;
+    }
+
+    public String removeRequestBean() {
+        FacesContext.getCurrentInstance().getExternalContext().getRequestMap().remove("requestBean");
+        return null;
+    }
+
+    public String removeRequestBean2() {
+        HttpServletRequest request = (HttpServletRequest)
+              FacesContext.getCurrentInstance().getExternalContext().getRequest();
+        request.removeAttribute("requestBean");
+        return null;
+    }
+
+    public String replaceRequestBean() {
+        HttpServletRequest request = (HttpServletRequest)
+            FacesContext.getCurrentInstance().getExternalContext().getRequest();
+        request.setAttribute("requestBean", new TestBean());
+        return null;
+    }
+
+    public String replaceRequestBean2() {
+        HttpServletRequest request = (HttpServletRequest)
+            FacesContext.getCurrentInstance().getExternalContext().getRequest();
+        Object oldValue = request.getAttribute("requestBean");
+        request.setAttribute("requestBean", oldValue);
+        return null;
+    }
+
+    public String removeSessionBean() {
+        FacesContext.getCurrentInstance().getExternalContext().getSessionMap().remove("sessionBean");
+        return null;
+    }
+
+    public String removeSessionBean2() {
+        HttpSession request = (HttpSession)
+              FacesContext.getCurrentInstance().getExternalContext().getSession(true);
+        request.removeAttribute("sessionBean");
+        return null;
+    }
+
+    public String replaceSessionBean() {
+        HttpSession session = (HttpSession)
+            FacesContext.getCurrentInstance().getExternalContext().getSession(true);
+        session.setAttribute("sessionBean", new TestBean());
+        return null;
+    }
+
+    public String replaceSessionBean2() {
+        HttpSession session = (HttpSession)
+            FacesContext.getCurrentInstance().getExternalContext().getSession(true);
+        Object oldValue = session.getAttribute("sessionBean");
+        session.setAttribute("sessionBean", oldValue);
+        return null;
+    }
+
+    public String removeApplicationBean() {
+        FacesContext.getCurrentInstance().getExternalContext().getApplicationMap().remove("applicationBean");
+        return null;
+    }
+
+    public String removeApplicationBean2() {
+        ServletContext request = (ServletContext)
+              FacesContext.getCurrentInstance().getExternalContext().getContext();
+        request.removeAttribute("applicationBean");
+        return null;
+    }
+
+    public String replaceApplicationBean() {
+        ServletContext application = (ServletContext)
+            FacesContext.getCurrentInstance().getExternalContext().getContext();
+        application.setAttribute("applicationBean", new TestBean());
+        return null;
+    }
+
+    public String replaceApplicationBean2() {
+        ServletContext application = (ServletContext)
+            FacesContext.getCurrentInstance().getExternalContext().getContext();
+        Object oldValue = application.getAttribute("applicationBean");
+        application.setAttribute("applicationBean", oldValue);
+        return null;
+    }
+
+    public String clearRequestMap() {
+        FacesContext.getCurrentInstance().getExternalContext().getRequestMap().clear();
+        return null;
+    }
+
+    public String clearRequestMapTwice() {
+        clearRequestMap();
+        clearRequestMap();
+        return null;
+    }
+
+    public String clearSessionMap() {
+        FacesContext.getCurrentInstance().getExternalContext().getSessionMap().clear();
+        return null;
+    }
+
+    public String clearSessionMapTwice() {
+        clearSessionMap();
+        clearSessionMap();
+        return null;
+    }
+
+    public void appendStatusMessage(String message) {
+        if (null == servletContext) {
+            return;
+        }
+        String oldMessage = (String) servletContext.getAttribute("previousRequestStatus");
+        oldMessage = (null != oldMessage) ? oldMessage + "\n": "";
+        message = (null != message) ? message : "";
+        oldMessage = oldMessage + message;
+        servletContext.setAttribute("previousRequestStatus", oldMessage);
+
+    }
+
+    public String getAppendRequestMarker() {
+        appendStatusMessage("-----------------");
+        return "";
+    }
+
+    public String clearStatusMessage() {
+        if (null != servletContext) {
+            servletContext.removeAttribute("previousRequestStatus");
+        }
+        return null;
+    }
+    
+    public Map getSelectItems() {
+        Map<String,SpecialBean> map = new HashMap<String,SpecialBean>();
+        map.put("key1", new SpecialBean("value1"));
+        map.put("key2", new SpecialBean("value2"));
+        map.put("key3", new SpecialBean("value3"));
+        return map;        
+    }
+    
+    private SpecialBean special;
+    public void setSpecialModel(SpecialBean special) {
+        this.special = special;        
+    }
+    
+    public SpecialBean getSpecialModel() {
+        return special;
+    }
+
+    /**
+     * Holds value of property suit.
+     */
+    private Suit suit;
+
+    /**
+     * Getter for property suit.
+     * @return Value of property suit.
+     */
+    public Suit getSuit() {
+        return this.suit;
+    }
+
+    /**
+     * Setter for property suit.
+     * @param suit New value of property suit.
+     */
+    public void setSuit(Suit suit) {
+        this.suit = suit;
+    }
+
+    /**
+     * Holds value of property referencedSuit.
+     */
+    private Suit referencedSuit;
+
+    /**
+     * Getter for property referencedSuit.
+     * @return Value of property referencedSuit.
+     */
+    public Suit getReferencedSuit() {
+        return this.referencedSuit;
+    }
+
+    // taken from TCK facesResourceBundleResolverGetTypeTest
+    public String getResourceBundleType() {
+        FacesContext context = FacesContext.getCurrentInstance();
+        ELContext elContext = context.getELContext();
+        ELResolver elResolver = elContext.getELResolver();
+        Class type = elResolver.getType(elContext, null, "resourceBundle03");
+
+        return type.toString();
+    }
+
+    // taken from TCK facesResourceBundleResolverFeatureDescriptorTest
+    public String getFeatureDescriptorCorrectness() {
+        StringBuilder builder = new StringBuilder();
+
+        ELContext elContext = FacesContext.getCurrentInstance().getELContext();
+        ELResolver resolver = elContext.getELResolver();
+        boolean fd_Found = false;
+
+        // Setup golden FeatureDescriptor.
+        FeatureDescriptor controlDesc = new FeatureDescriptor();
+        controlDesc.setValue("resolvable", Boolean.TRUE);
+        controlDesc.setValue("type", ResourceBundle.class);
+        controlDesc.setName("resourceBundle03");
+        controlDesc.setDisplayName("simple");
+        controlDesc.setExpert(false);
+        controlDesc.setHidden(false);
+        controlDesc.setPreferred(true);
+        controlDesc.setShortDescription("");
+
+        builder.append("<h1>getFeatureDescriptors output</h1>\n");
+        for (Iterator i = resolver.getFeatureDescriptors(elContext, null);
+                i.hasNext();) {
+            FeatureDescriptor test = (FeatureDescriptor) i.next();
+            builder.append("<p>Name: ").append(test.getName()).
+                    append(" displayName: ").append(test.getDisplayName()).
+                    append("</p>\n");
+        }
+
+        return builder.toString();
+    }
+
+    /**
+     * Setter for property referencedSuit.
+     * @param referencedSuit New value of property referencedSuit.
+     */
+    public void setReferencedSuit(Suit referencedSuit) {
+        this.referencedSuit = referencedSuit;
+    }
+
+    /**
+     * Holds value of property color.
+     */
+    private Color color;
+
+    /**
+     * Getter for property color.
+     * @return Value of property color.
+     */
+    public Color getColor() {
+        return this.color;
+    }
+
+    /**
+     * Setter for property color.
+     * @param color New value of property color.
+     */
+    public void setColor(Color color) {
+        this.color = color;
+    }
+
+    public String emptyStringAction() {
+        return null;
+    }
+
+    public String getIsCompositeComponentValue() {
+        String result = null;
+
+        UIComponent currentComposite = UIComponent.getCurrentCompositeComponent(FacesContext.getCurrentInstance());
+        result = "" + UIComponent.isCompositeComponent(currentComposite);
+
+        return result;
+    }
+
+    public String getCurrentTimeMillis() {
+        return "" + System.currentTimeMillis();
+    }
+
+    private Integer idcounter = new Integer(0);
+ 
+    public List getNewList3() {
+        return newList3;
+    }
+
+    public void setNewList3(List newList3) {
+        this.newList3 = newList3;
+    }
+
+    public String addNewLineBeginning() {
+        newList3.add(0, "ID" + idcounter.toString());
+        idcounter++;
+        return null;
+    }
+
+    public String addNewLineEnd() {
+        newList3.add("ID" + idcounter.toString());
+        idcounter++;
+        return null;
+    }
+
+
+
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/TestBean2.java b/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/TestBean2.java
new file mode 100644
index 0000000..a4e0fd8
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/TestBean2.java
@@ -0,0 +1,60 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.model;
+
+import java.io.Serializable;
+
+public class TestBean2 implements Serializable {
+        public int id;
+        public String name;
+        public TestBean2(int id, String name) {
+                this.id = id;
+                this.name = name;
+        }
+
+        @Override
+        public boolean equals(Object obj) {
+                if(obj instanceof TestBean2) {
+                        return ((TestBean2)obj).id == this.id;
+                }
+                return false;
+        }
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/TestBeanConverter.java b/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/TestBeanConverter.java
new file mode 100644
index 0000000..5ab3b23
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/TestBeanConverter.java
@@ -0,0 +1,59 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.model;
+
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.convert.Converter;
+
+public class TestBeanConverter implements Converter {
+
+        public Object getAsObject(FacesContext context, UIComponent component, String
+value) {
+                return new TestBean2(Integer.valueOf(value.substring(0, value.indexOf(","))),
+value.substring(value.indexOf(",")+1));
+        }
+
+        public String getAsString(FacesContext context, UIComponent component, Object
+value) {
+                return ((TestBean2)value).id+","+((TestBean2)value).name;
+        }
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/TestBeanEventClass.java b/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/TestBeanEventClass.java
new file mode 100644
index 0000000..8be447e
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/TestBeanEventClass.java
@@ -0,0 +1,55 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.model;
+
+import javax.faces.event.SystemEvent;
+
+/**
+ *
+ * @author edburns
+ */
+public class TestBeanEventClass extends SystemEvent {
+
+    public TestBeanEventClass(TestBean source) {
+        super(source);
+    }
+
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/TestBeanPostConstructEvent.java b/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/TestBeanPostConstructEvent.java
new file mode 100644
index 0000000..427efe6
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/TestBeanPostConstructEvent.java
@@ -0,0 +1,54 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.model;
+
+/**
+ *
+ * @author edburns
+ */
+public class TestBeanPostConstructEvent extends TestBeanEventClass {
+
+    public TestBeanPostConstructEvent(TestBean source) {
+        super(source);
+    }
+    
+
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/TestBeanPreDestroyEvent.java b/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/TestBeanPreDestroyEvent.java
new file mode 100644
index 0000000..989a466
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/TestBeanPreDestroyEvent.java
@@ -0,0 +1,51 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.model;
+
+
+public class TestBeanPreDestroyEvent extends TestBeanEventClass {
+
+    public TestBeanPreDestroyEvent(TestBean source) {
+        super(source);
+    }
+    
+
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/TestBeanSubclass.java b/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/TestBeanSubclass.java
new file mode 100644
index 0000000..a611feb
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/TestBeanSubclass.java
@@ -0,0 +1,62 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.model;
+
+
+/**
+ * <p>Test JavaBean for managed object creation facility.</p>
+ */
+
+public class TestBeanSubclass extends AbstractTestBean {
+
+    private String extraProperty = "Extra Property";
+
+
+    public String getExtraProperty() {
+        return this.extraProperty;
+    }
+
+
+    public void setExtraProperty(String extraProperty) {
+        this.extraProperty = extraProperty;
+    }
+
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/TestListBox.java b/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/TestListBox.java
new file mode 100644
index 0000000..824181c
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/TestListBox.java
@@ -0,0 +1,74 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.model;
+
+import javax.faces.model.SelectItem;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class TestListBox {
+        private List<TestBean2> listResults;
+        private TestBean2[] arrayResults;
+
+        public List<TestBean2> getListResults() {
+                return listResults;
+        }
+        public void setListResults(List<TestBean2> listResults) {
+                this.listResults = listResults;
+        }
+        public TestBean2[] getArrayResults() {
+                return arrayResults;
+        }
+        public void setArrayResults(TestBean2[] arrayResults) {
+                this.arrayResults = arrayResults;
+        }
+
+
+        public List getSelectItems() {
+                List selectItems = new ArrayList();
+                selectItems.add(new SelectItem(new TestBean2(10, "joe"), "joe"));
+                selectItems.add(new SelectItem(new TestBean2(20, "bob"), "bob"));
+                selectItems.add(new SelectItem(new TestBean2(30, "fred"), "fred"));
+
+                return selectItems;
+        }
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/TestValueChangeListener.java b/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/TestValueChangeListener.java
new file mode 100644
index 0000000..cff7efa
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/TestValueChangeListener.java
@@ -0,0 +1,74 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.model;
+
+import javax.faces.event.ValueChangeListener;
+import javax.faces.event.ValueChangeEvent;
+import javax.faces.event.AbortProcessingException;
+import javax.faces.context.FacesContext;
+import javax.faces.application.FacesMessage;
+
+/**
+ * Leveraged by systest/web/valueChangeListener02.jsp
+ */
+public class TestValueChangeListener implements ValueChangeListener {
+
+    public void processValueChange(ValueChangeEvent event)
+    throws AbortProcessingException {
+
+        FacesContext ctx = FacesContext.getCurrentInstance();
+        String value = event.getOldValue() + "";
+        if (value.length() == 0) {
+            value = "[empty string]";
+        }
+        FacesMessage msg1 = new FacesMessage("old value: " + value);
+
+        value = event.getNewValue() + "";
+        if (value.length() == 0) {
+            value = "[empty string]";
+        }
+
+        FacesMessage msg2 = new FacesMessage("new value: " + value);
+        ctx.addMessage(null, msg1);
+        ctx.addMessage(null, msg2);
+    }
+
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/ThousandsOfPojos.java b/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/ThousandsOfPojos.java
new file mode 100644
index 0000000..98851df
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/ThousandsOfPojos.java
@@ -0,0 +1,156 @@
+
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.model;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.SessionScoped;
+
+
+ at ManagedBean
+ at SessionScoped
+public class ThousandsOfPojos {
+
+    private List<Item> items;
+
+    public ThousandsOfPojos() {
+        int size = 2000;
+        items = new ArrayList<Item>(size);
+        Item cur;
+        String curStr;
+        for (int i = 0; i < size; i++) {
+            curStr = Long.toHexString(System.currentTimeMillis());
+            cur = new Item("a" + curStr, "b" + curStr, "c" + curStr);
+            items.add(cur);
+        }
+    }
+
+    public List<Item> getItems() {
+        return items;
+    }
+
+    
+
+    // <editor-fold defaultstate="collapsed" desc="Inner Classes">
+    
+    public class Item {
+        String a, b, c;
+        InnerItem inner;
+
+        public Item(String a, String b, String c) {
+            this.a = a;
+            this.b = b;
+            this.c = c;
+            
+            inner = new InnerItem(a+b, a+c);
+        }
+        
+        
+        
+        public String getA() {
+            return a;
+        }
+
+        public void setA(String a) {
+            this.a = a;
+        }
+
+        public String getB() {
+            return b;
+        }
+
+        public void setB(String b) {
+            this.b = b;
+        }
+
+        public String getC() {
+            return c;
+        }
+
+        public void setC(String c) {
+            this.c = c;
+        }
+
+        public InnerItem getInner() {
+            return inner;
+        }
+
+        public void setInner(InnerItem inner) {
+            this.inner = inner;
+        }
+        
+        
+        
+    }
+    
+    public class InnerItem {
+        String d, e;
+
+        public InnerItem(String d, String e) {
+            this.d = d;
+            this.e = e;
+        }
+        
+        
+
+        public String getD() {
+            return d;
+        }
+
+        public void setD(String d) {
+            this.d = d;
+        }
+
+        public String getE() {
+            return e;
+        }
+
+        public void setE(String e) {
+            this.e = e;
+        }
+        
+    }
+
+    // </editor-fold>
+
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/ValidatorBean.java b/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/ValidatorBean.java
new file mode 100755
index 0000000..5e8285f
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/ValidatorBean.java
@@ -0,0 +1,100 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.model;
+
+import com.sun.faces.systest.TestValidator01;
+
+import javax.faces.event.AbortProcessingException;
+import javax.faces.validator.Validator;
+
+
+public class ValidatorBean extends Object {
+
+    public ValidatorBean() {
+    }
+
+    private Validator validator = null;
+    public Validator getValidator() {
+        if (validator == null) {
+            return new TestValidator01();
+        }
+        return validator;
+    }
+    public void setValidator(Validator validator) {
+        this.validator = validator;
+    }
+
+    private Validator doubleValidator = null;
+    public Validator getDoubleValidator() {
+        if (doubleValidator == null) {
+            return new javax.faces.validator.DoubleRangeValidator();
+        }
+        return doubleValidator;
+    }
+    public void setDoubleValidator(Validator doubleValidator) {
+        this.doubleValidator = doubleValidator;
+    }
+
+    private Validator lengthValidator = null;
+    public Validator getLengthValidator() {
+//        if (lengthValidator == null) {
+//System.out.println("RETURN VAL INSTANCE..");
+//            return new javax.faces.validator.LengthValidator();
+//        }
+        return lengthValidator;
+    }
+    public void setLengthValidator(Validator lengthValidator) {
+        this.lengthValidator = lengthValidator;
+System.out.println("SET VAL INSTANCE..");
+    }
+
+    private Validator longRangeValidator = null;
+    public Validator getLongRangeValidator() {
+        if (longRangeValidator == null) {
+            return new javax.faces.validator.LongRangeValidator();
+        }
+        return longRangeValidator;
+    }
+    public void setLongRangeValidator(Validator longRangeValidator) {
+        this.longRangeValidator = longRangeValidator;
+    }
+
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/ValueChangeListenerBean.java b/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/ValueChangeListenerBean.java
new file mode 100644
index 0000000..0f03b29
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/ValueChangeListenerBean.java
@@ -0,0 +1,87 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.model;
+
+import javax.faces.event.ValueChangeEvent;
+import javax.faces.event.AbortProcessingException;
+import javax.faces.context.FacesContext;
+
+
+public class ValueChangeListenerBean extends Object {
+
+    public ValueChangeListenerBean() {
+    }
+
+    protected String textAResult;
+    public String getTextAResult() {
+	return textAResult;
+    }
+
+    public void setTextAResult(String newTextAResult) {
+	textAResult = newTextAResult;
+    }
+
+    protected String textBResult;
+    public String getTextBResult() {
+	return textBResult;
+    }
+
+    public void setTextBResult(String newTextBResult) {
+	textBResult = newTextBResult;
+    }
+    
+    public void textAChanged(ValueChangeEvent event) throws AbortProcessingException {
+	setTextAResult("Received valueChangeEvent for textA: " + 
+		       event.hashCode());
+    }
+
+    public void textBChanged(ValueChangeEvent event) throws AbortProcessingException {
+	setTextBResult("Received valueChangeEvent for textB: " + 
+		       event.hashCode());
+    }
+
+    public void valueChange(ValueChangeEvent event)
+    throws AbortProcessingException {
+        FacesContext ctx = FacesContext.getCurrentInstance();
+        ctx.renderResponse();
+    }
+
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/ValueChangeSetPropertyActionListenerBean.java b/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/ValueChangeSetPropertyActionListenerBean.java
new file mode 100644
index 0000000..ba494cb
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/ValueChangeSetPropertyActionListenerBean.java
@@ -0,0 +1,72 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.model;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.RequestScoped;
+import javax.faces.event.ValueChangeListener;
+import javax.faces.event.ValueChangeEvent;
+import javax.faces.context.FacesContext;
+import java.io.Serializable;
+
+
+ at ManagedBean
+ at RequestScoped
+public class ValueChangeSetPropertyActionListenerBean implements Serializable, ValueChangeListener {
+
+    public ValueChangeSetPropertyActionListenerBean() {
+        System.out.println(this.getClass().getName() + "ctor called");
+    }
+
+    
+    
+    
+    public void processValueChange(ValueChangeEvent event) {
+        FacesContext.getCurrentInstance().getExternalContext().getRequestMap().put("message", "ValueChangeSetPropertyActionListenerBean.processValueChange called");
+    }
+    
+    public String getNanoTime() {
+        return "" + System.nanoTime();
+    }
+
+    
+
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/ViewRootExtension.java b/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/ViewRootExtension.java
new file mode 100644
index 0000000..6aa2614
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/ViewRootExtension.java
@@ -0,0 +1,59 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.model;
+
+import javax.faces.component.UIViewRoot;
+
+/**
+ *
+ * @author edburns
+ */
+public class ViewRootExtension extends UIViewRoot {
+    
+    /**
+     * Creates a new instance of ViewRootExtension 
+     */
+    public ViewRootExtension() {
+    }
+    
+ 
+    
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/ajax/AjaxRequestBean.java b/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/ajax/AjaxRequestBean.java
new file mode 100644
index 0000000..da8ea5c
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/ajax/AjaxRequestBean.java
@@ -0,0 +1,141 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.model.ajax;
+
+import javax.faces.FacesException;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.SessionScoped;
+import javax.faces.context.ExternalContext;
+import javax.faces.context.FacesContext;
+import javax.faces.event.ActionEvent;
+import javax.faces.event.AjaxBehaviorEvent;
+import javax.faces.event.ValueChangeEvent;
+
+ at ManagedBean(name="ajaxrequest")
+ at SessionScoped
+public class AjaxRequestBean {
+    private Integer count = 0;
+
+    private String echo = "echo";
+    private String echo1 = "";
+    private String echo2 = "";
+    private String echo3 = "";
+    private String echo4 = "";
+
+    public String getEcho1() {
+        return echo1;
+    }
+
+    public void setEcho1(String echo1) {
+        this.echo1 = echo1;
+    }
+
+    public String getEcho2() {
+        return echo2;
+    }
+
+    public void setEcho2(String echo2) {
+        this.echo2 = echo2;
+    }
+
+    public String getEcho3() {
+        return echo3;
+    }
+
+    public void setEcho3(String echo3) {
+        this.echo3 = echo3;
+    }
+
+    public String getEcho4() {
+        return echo4;
+    }
+
+    public void setEcho4(String echo4) {
+        this.echo4 = echo4;
+    }
+
+    public String getEcho() {
+        return echo;
+    }
+
+    public void setEcho(String echo) {
+        this.echo = echo;
+    }
+
+    public void echoValue(ValueChangeEvent event) {
+        String str = (String)event.getNewValue();
+        echo = str;
+    }
+
+    public void resetEcho(ActionEvent ae) {
+        echo = "reset";
+        echo1 = "reset";
+        echo2 = "reset";
+        echo3 = "reset";
+        echo4 = "reset";
+    }
+
+    public Integer getCount() {
+        return count++;
+    }
+
+    public void resetCount(ActionEvent ae) {
+        count = 0;
+    }
+
+    public void generateError(AjaxBehaviorEvent event) {
+        throw new FacesException("Ajax request error");
+    }
+
+    public String contentType = null;
+    public String getContentType() {
+        FacesContext context = FacesContext.getCurrentInstance();
+        ExternalContext eContext = context.getExternalContext();
+        contentType = eContext.getRequestContentType();
+        return contentType;
+    }
+
+    public void setcontentType(String contentType) {
+        this.contentType = contentType;
+    }
+        
+
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/ajax/AjaxTable.java b/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/ajax/AjaxTable.java
new file mode 100644
index 0000000..6f2cf4e
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/ajax/AjaxTable.java
@@ -0,0 +1,109 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.model.ajax;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.SessionScoped;
+
+
+ at ManagedBean
+ at SessionScoped
+public class AjaxTable {
+
+
+    private Info[] list = new Info[]{
+            new Info(101, "Ryan", "Mountain Fastness", true),
+            new Info(102, "Jim", "Santa Clara", true),
+            new Info(103, "Roger", "Boston", true),
+            new Info(104, "Ed", "Orlando", false),
+            new Info(105, "Barbera", "Mountain View", true),
+    };
+
+    public Info[] getList() {
+        return list;
+    }
+
+    public class Info {
+        int id;
+        String name;
+        String city;
+        boolean likescheese;
+
+        public Info(int id, String name, String city, boolean likescheese) {
+            this.id = id;
+            this.name = name;
+            this.city = city;
+            this.likescheese = likescheese;
+        }
+
+        public int getId() {
+            return id;
+        }
+
+        public String getName() {
+            return name;
+        }
+
+
+        public String getCity() {
+            return city;
+        }
+
+        public void setCity(String city) {
+            this.city = city;
+        }
+
+        public boolean getLikesCheese() {
+            return likescheese;
+        }
+
+        public void setLikesCheese(boolean likescheese) {
+            this.likescheese = likescheese;
+        }
+
+        public String getCheesePreference() {
+            return (likescheese ? "Cheese Please" : "Eww");
+        }
+
+    }
+
+
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/ajax/AjaxTagValuesBean.java b/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/ajax/AjaxTagValuesBean.java
new file mode 100644
index 0000000..a67d006
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/ajax/AjaxTagValuesBean.java
@@ -0,0 +1,120 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.model.ajax;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.SessionScoped;
+import javax.faces.event.ActionEvent;
+import javax.faces.event.ValueChangeEvent;
+import java.util.Collection;
+import java.util.LinkedHashSet;
+import java.util.Arrays;
+
+ at ManagedBean(name="ajaxtag")
+ at SessionScoped
+public class AjaxTagValuesBean {
+    private Integer count = 0;
+    private Boolean checked = false;
+    private String text = "";
+    private String[] outArray = { "out1", ":form2:out2", ":out3" };
+    private Collection<String> outSet = new LinkedHashSet<String>(Arrays.asList(outArray));
+    private String render = "out1";
+    private String[] checkedvalues = {};
+    
+    public String getText() {
+        return text;
+    }
+
+    public void setText(String text) {
+        this.text = text;
+    }
+
+    public Boolean getChecked() {
+        return checked;
+    }
+
+    public void setChecked(Boolean checked) {
+        this.checked = checked;
+    }
+
+    public Integer getCount() {
+        return count++;
+    }
+
+    public void setCheckedValues(String[] values) {
+        this.checkedvalues = values;
+    }
+
+    public String[] getCheckedValues() {
+        return checkedvalues;
+    }
+
+    public String getCheckedValuesString() {
+        String v = "Value: ";
+        for (String value : checkedvalues) {
+            v = v + value;
+        }
+        return v;
+    }
+
+    public void reset(ActionEvent ae) {
+        count = 0;
+        checked = false;
+        text = "";
+    }
+
+    public Collection<String> getRenderList() {
+        return outSet;
+    }
+
+    public String getRenderOne() {
+        return render;
+    }
+
+    private String ajaxEvent = "valueChange";
+    public void setAjaxEvent(String ajaxEvent) {
+        this.ajaxEvent = ajaxEvent;
+    }
+    public String getAjaxEvent() {
+        return ajaxEvent;
+    }
+
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/ajax/AttrsBean.java b/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/ajax/AttrsBean.java
new file mode 100644
index 0000000..77e6360
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/ajax/AttrsBean.java
@@ -0,0 +1,81 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.model.ajax;
+
+import javax.faces.context.FacesContext;
+import javax.faces.context.ExternalContext;
+import javax.faces.context.PartialResponseWriter;
+import javax.faces.FacesException;
+import javax.faces.bean.RequestScoped;
+import javax.faces.bean.ManagedBean;
+import java.util.Map;
+import java.util.HashMap;
+
+ at ManagedBean
+ at RequestScoped
+public class AttrsBean {
+
+    public String eval() {
+
+        Map<String, String> map = new HashMap<String, String>();
+        map.put("value","New Value");
+
+        FacesContext ctx = FacesContext.getCurrentInstance();
+        ExternalContext extContext = ctx.getExternalContext();
+        if (ctx.getPartialViewContext().isAjaxRequest()) {
+            try {
+                extContext.setResponseContentType("text/xml");
+                extContext.addResponseHeader("Cache-Control", "no-cache");
+                PartialResponseWriter writer =
+                      ctx.getPartialViewContext().getPartialResponseWriter();
+                writer.startDocument();
+                writer.updateAttributes("form:attr",map);
+                writer.endDocument();
+                writer.flush();
+                ctx.responseComplete();
+            } catch (Exception e) {
+                throw new FacesException(e);
+            }
+        }
+        return null;
+
+    }
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/ajax/CountBean.java b/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/ajax/CountBean.java
new file mode 100644
index 0000000..d1d53f4
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/ajax/CountBean.java
@@ -0,0 +1,85 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.model.ajax;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.SessionScoped;
+import javax.faces.event.ActionEvent;
+
+
+ at ManagedBean(name="ajaxcount")
+ at SessionScoped
+public class CountBean {
+    private Integer count1 = 0;
+    private Integer count2 = 0;
+    private Integer count3 = 0;
+    private Integer count4 = 0;
+    private Integer count5 = 0;
+
+    public void resetCount(ActionEvent ae) {
+        count1 = 0;
+        count2 = 0;
+        count3 = 0;
+        count4 = 0;
+        count5 = 0;
+    }
+
+    public Integer getCount1() {
+        return count1++;
+    }
+
+    public Integer getCount2() {
+        return count2++;
+    }
+
+    public Integer getCount3() {
+        return count3++;
+    }
+
+    public Integer getCount4() {
+        return count4++;
+    }
+
+    public Integer getCount5() {
+        return count5++;
+    }
+}
+
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/ajax/Echo.java b/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/ajax/Echo.java
new file mode 100644
index 0000000..86c20ce
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/ajax/Echo.java
@@ -0,0 +1,64 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.model.ajax;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.SessionScoped;
+import javax.faces.event.ActionEvent;
+
+ at ManagedBean(name = "ajaxecho")
+ at SessionScoped
+public class Echo {
+    String str = "";
+
+    public String getStr() {
+        return str;
+    }
+
+    public void setStr(String str) {
+        this.str = str;
+    }
+
+    public void reset(ActionEvent ae) {
+        str = "";
+    }
+
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/ajax/ErrorBean.java b/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/ajax/ErrorBean.java
new file mode 100644
index 0000000..0c70409
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/ajax/ErrorBean.java
@@ -0,0 +1,78 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.model.ajax;
+
+import javax.faces.context.FacesContext;
+import javax.faces.context.ExternalContext;
+import javax.faces.context.PartialResponseWriter;
+import javax.faces.FacesException;
+import javax.faces.bean.RequestScoped;
+import javax.faces.bean.ManagedBean;
+
+ at ManagedBean
+ at RequestScoped
+public class ErrorBean {
+
+    public String error() {
+
+        FacesContext ctx = FacesContext.getCurrentInstance();
+        ExternalContext extContext = ctx.getExternalContext();
+        if (ctx.getPartialViewContext().isAjaxRequest()) {
+            try {
+                extContext.setResponseContentType("text/xml");
+                extContext.addResponseHeader("Cache-Control", "no-cache");
+                PartialResponseWriter writer =
+                      ctx.getPartialViewContext().getPartialResponseWriter();
+                writer.startDocument();
+                writer.startError("errorName");
+                writer.write("Error Message");
+                writer.endError();
+                writer.endDocument();
+                writer.flush();
+                ctx.responseComplete();
+            } catch (Exception e) {
+                throw new FacesException(e);
+            }
+        }
+        return null;
+
+    }
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/ajax/EvalBean.java b/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/ajax/EvalBean.java
new file mode 100644
index 0000000..75d6276
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/ajax/EvalBean.java
@@ -0,0 +1,78 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.model.ajax;
+
+import javax.faces.context.FacesContext;
+import javax.faces.context.ExternalContext;
+import javax.faces.context.PartialResponseWriter;
+import javax.faces.FacesException;
+import javax.faces.bean.RequestScoped;
+import javax.faces.bean.ManagedBean;
+
+ at ManagedBean
+ at RequestScoped
+public class EvalBean {
+
+    public String eval() {
+
+        FacesContext ctx = FacesContext.getCurrentInstance();
+        ExternalContext extContext = ctx.getExternalContext();
+        if (ctx.getPartialViewContext().isAjaxRequest()) {
+            try {
+                extContext.setResponseContentType("text/xml");
+                extContext.addResponseHeader("Cache-Control", "no-cache");
+                PartialResponseWriter writer =
+                      ctx.getPartialViewContext().getPartialResponseWriter();
+                writer.startDocument();
+                writer.startEval();
+                writer.write("alert('test');");
+                writer.endEval();
+                writer.endDocument();
+                writer.flush();
+                ctx.responseComplete();
+            } catch (Exception e) {
+                throw new FacesException(e);
+            }
+        }
+        return null;
+
+    }
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/ajax/FailBean.java b/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/ajax/FailBean.java
new file mode 100644
index 0000000..04d0fa9
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/ajax/FailBean.java
@@ -0,0 +1,77 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.model.ajax;
+
+import javax.faces.context.FacesContext;
+import javax.faces.context.ExternalContext;
+import javax.faces.context.PartialResponseWriter;
+import javax.faces.FacesException;
+import javax.faces.bean.RequestScoped;
+import javax.faces.bean.ManagedBean;
+
+ at ManagedBean
+ at RequestScoped
+public class FailBean {
+
+    public String fail1() {
+
+        FacesContext ctx = FacesContext.getCurrentInstance();
+        ExternalContext extContext = ctx.getExternalContext();
+        if (ctx.getPartialViewContext().isAjaxRequest()) {
+            try {
+                extContext.setResponseContentType("text/xml");
+                extContext.addResponseHeader("Cache-Control", "no-cache");
+                PartialResponseWriter writer =
+                      ctx.getPartialViewContext().getPartialResponseWriter();
+                writer.startDocument();
+                writer.startUpdate("doesntExist");
+                writer.endUpdate();
+                writer.endDocument();
+                writer.flush();
+                ctx.responseComplete();
+            } catch (Exception e) {
+                throw new FacesException(e);
+            }
+        }
+        return null;
+
+    }
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/ajax/InsertDeleteBean.java b/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/ajax/InsertDeleteBean.java
new file mode 100644
index 0000000..59330c2
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/ajax/InsertDeleteBean.java
@@ -0,0 +1,181 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.model.ajax;
+
+import javax.faces.bean.RequestScoped;
+import javax.faces.bean.ManagedBean;
+import javax.faces.context.FacesContext;
+import javax.faces.context.PartialResponseWriter;
+import javax.faces.context.ExternalContext;
+import javax.faces.FacesException;
+
+ at ManagedBean
+ at RequestScoped
+public class InsertDeleteBean {
+
+    public String insertBefore() {
+
+        FacesContext ctx = FacesContext.getCurrentInstance();
+        ExternalContext extContext = ctx.getExternalContext();
+        if (ctx.getPartialViewContext().isAjaxRequest()) {
+            try {
+                extContext.setResponseContentType("text/xml");
+                extContext.addResponseHeader("Cache-Control", "no-cache");
+                PartialResponseWriter writer =
+                      ctx.getPartialViewContext().getPartialResponseWriter();
+                writer.startDocument();
+                
+                writer.startInsertBefore("hr");
+                writer.writeAttribute("id", "h2before", "id");
+                writer.startElement("h2", null);
+                writer.writeText("BEFORE", null, null);
+                writer.endElement("h2");
+                writer.endInsert();
+                
+                writer.startInsertBefore("tablecenter");
+                writer.writeAttribute("id", "trbefore", "id");
+                writer.startElement("tr", null);
+                writer.writeAttribute("id", "trbefore", "id");
+                writer.startElement("td", null);
+                writer.writeText("BEFORE", null, null);
+                writer.endElement("td");
+                writer.endElement("tr");
+                writer.endInsert();
+                
+                writer.endDocument();
+                writer.flush();
+                ctx.responseComplete();
+            } catch (Exception e) {
+                throw new FacesException(e);
+            }
+        }
+        return null;
+
+    }
+
+    public String insertAfter() {
+
+        FacesContext ctx = FacesContext.getCurrentInstance();
+        ExternalContext extContext = ctx.getExternalContext();
+        if (ctx.getPartialViewContext().isAjaxRequest()) {
+            try {
+                PartialResponseWriter writer =
+                      ctx.getPartialViewContext().getPartialResponseWriter();
+                extContext.setResponseContentType("text/xml");
+                extContext.addResponseHeader("Cache-Control", "no-cache");
+                writer.startDocument();
+
+                writer.startInsertAfter("hr");
+                writer.startElement("h2", null);
+                writer.writeAttribute("id", "h2after", "id");
+                writer.writeText("AFTER", null, null);
+                writer.endElement("h2");
+                writer.endInsert();
+
+                writer.startInsertAfter("tablecenter");
+                writer.writeAttribute("id", "trafter", "id");
+                writer.startElement("tr", null);
+                writer.writeAttribute("id", "trafter", "id");
+                writer.startElement("td", null);
+                writer.writeText("AFTER", null, null);
+                writer.endElement("td");
+                writer.endElement("tr");
+                writer.endInsert();
+
+                writer.endDocument();
+                writer.flush();
+                ctx.responseComplete();
+            } catch (Exception e) {
+                throw new FacesException(e);
+            }
+        }
+        return null;
+
+    }
+
+
+    public String removeBefore() {
+
+        FacesContext ctx = FacesContext.getCurrentInstance();
+        ExternalContext extContext = ctx.getExternalContext();
+        if (ctx.getPartialViewContext().isAjaxRequest()) {
+            try {
+                PartialResponseWriter writer =
+                      ctx.getPartialViewContext().getPartialResponseWriter();
+                extContext.setResponseContentType("text/xml");
+                extContext.addResponseHeader("Cache-Control", "no-cache");
+                writer.startDocument();
+                writer.delete("h2before");
+                writer.delete("trbefore");
+                writer.endDocument();
+                writer.flush();
+                ctx.responseComplete();
+            } catch (Exception e) {
+                throw new FacesException(e);
+            }
+        }
+        return null;
+
+    }
+
+    public String removeAfter() {
+        FacesContext ctx = FacesContext.getCurrentInstance();
+        ExternalContext extContext = ctx.getExternalContext();
+        if (ctx.getPartialViewContext().isAjaxRequest()) {
+            try {
+                PartialResponseWriter writer =
+                      ctx.getPartialViewContext().getPartialResponseWriter();
+                extContext.setResponseContentType("text/xml");
+                extContext.addResponseHeader("Cache-Control", "no-cache");
+                writer.startDocument();
+                writer.delete("h2after");
+                writer.delete("trafter");
+                writer.endDocument();
+                writer.flush();
+                ctx.responseComplete();
+            } catch (Exception e) {
+                throw new FacesException(e);
+            }
+        }
+        return null;    
+    }
+
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/ajax/InvalidXMLBean.java b/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/ajax/InvalidXMLBean.java
new file mode 100644
index 0000000..3766d31
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/ajax/InvalidXMLBean.java
@@ -0,0 +1,83 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.model.ajax;
+
+import javax.faces.FacesException;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.RequestScoped;
+import javax.faces.context.ExternalContext;
+import javax.faces.context.FacesContext;
+import javax.faces.context.PartialResponseWriter;
+
+ at ManagedBean
+ at RequestScoped
+public class InvalidXMLBean {
+
+    public String emitBadXML() {
+
+        FacesContext ctx = FacesContext.getCurrentInstance();
+        ExternalContext extContext = ctx.getExternalContext();
+        if (ctx.getPartialViewContext().isAjaxRequest()) {
+            try {
+                extContext.setResponseContentType("text/xml");
+                extContext.addResponseHeader("Cache-Control", "no-cache");
+                PartialResponseWriter writer =
+                      ctx.getPartialViewContext().getPartialResponseWriter();
+                writer.startDocument();
+                writer.startUpdate("javax.faces.ViewBody");
+                writer.startElement("body",null);
+                writer.startElement("h2", null);
+                writer.writeAttribute("id", "h2", "id");
+                writer.write("Bread & Butter");
+                writer.endElement("h2");
+                writer.endElement("body");
+                writer.endUpdate();
+                writer.endDocument();
+                writer.flush();
+                ctx.responseComplete();
+            } catch (Exception e) {
+                throw new FacesException(e);
+            }
+        }
+        return null;
+
+    }
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/ajax/RedirectBean.java b/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/ajax/RedirectBean.java
new file mode 100644
index 0000000..796d021
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/ajax/RedirectBean.java
@@ -0,0 +1,67 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.model.ajax;
+
+import javax.faces.bean.RequestScoped;
+import javax.faces.bean.ManagedBean;
+import javax.faces.context.FacesContext;
+import javax.faces.context.ExternalContext;
+import javax.faces.FacesException;
+import java.io.IOException;
+
+ at ManagedBean
+ at RequestScoped
+public class RedirectBean {
+
+    public String redirect() {
+
+        FacesContext ctx = FacesContext.getCurrentInstance();
+        ExternalContext extContext = ctx.getExternalContext();
+        String url = extContext.encodeActionURL(ctx.getApplication().getViewHandler().getActionURL(ctx, "/ajax/redirecttarget.xhtml"));
+        try {
+            extContext.redirect(url);
+        } catch (IOException ioe) {
+            throw new FacesException(ioe);
+        }
+        return null;
+
+    }
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/ajax/browser/BrowserAttributesBean.java b/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/ajax/browser/BrowserAttributesBean.java
new file mode 100644
index 0000000..8715b8f
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/ajax/browser/BrowserAttributesBean.java
@@ -0,0 +1,156 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.model.ajax.browser;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.RequestScoped;
+import javax.faces.context.FacesContext;
+import javax.faces.context.ExternalContext;
+import javax.faces.context.PartialResponseWriter;
+import javax.faces.FacesException;
+import java.util.Map;
+import java.util.TreeMap;
+
+ at ManagedBean(name="browserAttributes")
+ at RequestScoped
+ at SuppressWarnings("unused")
+public class BrowserAttributesBean {
+
+    public String updateValue() {
+        Map<String,String> map = new TreeMap<String,String>();
+        map.put("value","PASSED");
+
+        FacesContext ctx = FacesContext.getCurrentInstance();
+        ExternalContext extContext = ctx.getExternalContext();
+        if (ctx.getPartialViewContext().isAjaxRequest()) {
+            try {
+                extContext.setResponseContentType("text/xml");
+                extContext.addResponseHeader("Cache-Control", "no-cache");
+                PartialResponseWriter writer =
+                      ctx.getPartialViewContext().getPartialResponseWriter();
+                writer.startDocument();
+                writer.updateAttributes("checkvalue",map);
+                writer.endDocument();
+                writer.flush();
+                ctx.responseComplete();
+            } catch (Exception e) {
+                throw new FacesException(e);
+            }
+        }
+        return null;
+    }
+
+    public String updateStyle() {
+        Map<String,String> map = new TreeMap<String,String>();
+        map.put("value","green means PASSED");
+        map.put("style","background-color: green;");
+
+        FacesContext ctx = FacesContext.getCurrentInstance();
+        ExternalContext extContext = ctx.getExternalContext();
+        if (ctx.getPartialViewContext().isAjaxRequest()) {
+            try {
+                extContext.setResponseContentType("text/xml");
+                extContext.addResponseHeader("Cache-Control", "no-cache");
+                PartialResponseWriter writer =
+                      ctx.getPartialViewContext().getPartialResponseWriter();
+                writer.startDocument();
+                writer.updateAttributes("checkvalue",map);
+                writer.endDocument();
+                writer.flush();
+                ctx.responseComplete();
+            } catch (Exception e) {
+                throw new FacesException(e);
+            }
+        }
+        return null;
+    }
+
+    public String updateClass() {
+        Map<String,String> map = new TreeMap<String,String>();
+        map.put("value","green means PASSED");
+        map.put("class","green");
+
+        FacesContext ctx = FacesContext.getCurrentInstance();
+        ExternalContext extContext = ctx.getExternalContext();
+        if (ctx.getPartialViewContext().isAjaxRequest()) {
+            try {
+                extContext.setResponseContentType("text/xml");
+                extContext.addResponseHeader("Cache-Control", "no-cache");
+                PartialResponseWriter writer =
+                      ctx.getPartialViewContext().getPartialResponseWriter();
+                writer.startDocument();
+                writer.updateAttributes("checkvalue",map);
+                writer.endDocument();
+                writer.flush();
+                ctx.responseComplete();
+            } catch (Exception e) {
+                throw new FacesException(e);
+            }
+        }
+        return null;
+    }
+
+    public String updateEvent() {
+        Map<String,String> map = new TreeMap<String,String>();
+        map.put("style","display: inline;");
+        map.put("value","Click Me");
+        map.put("onclick","checkPass();");
+
+        FacesContext ctx = FacesContext.getCurrentInstance();
+        ExternalContext extContext = ctx.getExternalContext();
+        if (ctx.getPartialViewContext().isAjaxRequest()) {
+            try {
+                extContext.setResponseContentType("text/xml");
+                extContext.addResponseHeader("Cache-Control", "no-cache");
+                PartialResponseWriter writer =
+                      ctx.getPartialViewContext().getPartialResponseWriter();
+                writer.startDocument();
+                writer.updateAttributes("checkbutton",map);
+                writer.endDocument();
+                writer.flush();
+                ctx.responseComplete();
+            } catch (Exception e) {
+                throw new FacesException(e);
+            }
+        }
+        return null;
+    }
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/ajax/browser/EvalScriptBean.java b/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/ajax/browser/EvalScriptBean.java
new file mode 100644
index 0000000..c3cdbd3
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/ajax/browser/EvalScriptBean.java
@@ -0,0 +1,233 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.model.ajax.browser;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.RequestScoped;
+import javax.faces.context.FacesContext;
+import javax.faces.context.ExternalContext;
+import javax.faces.context.PartialResponseWriter;
+import javax.faces.FacesException;
+
+ at ManagedBean
+ at RequestScoped
+ at SuppressWarnings("unused")
+public class EvalScriptBean {
+
+    public String doEval() {
+        FacesContext ctx = FacesContext.getCurrentInstance();
+        ExternalContext extContext = ctx.getExternalContext();
+        if (ctx.getPartialViewContext().isAjaxRequest()) {
+            try {
+                extContext.setResponseContentType("text/xml");
+                extContext.addResponseHeader("Cache-Control", "no-cache");
+                PartialResponseWriter writer =
+                      ctx.getPartialViewContext().getPartialResponseWriter();
+                writer.startDocument();
+                writer.startEval();
+                writer.write("var marker = true; checkPass();");
+                writer.endEval();
+                writer.endDocument();
+                writer.flush();
+                ctx.responseComplete();
+            } catch (Exception e) {
+                throw new FacesException(e);
+            }
+        }
+        return null;
+    }
+
+
+    public String doInline() {
+        FacesContext ctx = FacesContext.getCurrentInstance();
+        ExternalContext extContext = ctx.getExternalContext();
+        if (ctx.getPartialViewContext().isAjaxRequest()) {
+            try {
+                extContext.setResponseContentType("text/xml");
+                extContext.addResponseHeader("Cache-Control", "no-cache");
+                PartialResponseWriter writer =
+                      ctx.getPartialViewContext().getPartialResponseWriter();
+                writer.startDocument();
+                writer.startUpdate("updated");
+                writer.startElement("div", null);
+                writer.writeAttribute("id","updated","id");
+                writer.startElement("script",null);
+                writer.writeAttribute("type","text/javascript","type");
+                writer.write("var marker = true; checkPass();");
+                writer.endElement("script");
+                writer.endElement("div");
+                writer.endUpdate();
+                writer.endDocument();
+                writer.flush();
+                ctx.responseComplete();
+            } catch (Exception e) {
+                throw new FacesException(e);
+            }
+        }
+        return null;
+    }
+
+    public String doUpdateRootAllEval() {
+        FacesContext ctx = FacesContext.getCurrentInstance();
+        ExternalContext extContext = ctx.getExternalContext();
+        if (ctx.getPartialViewContext().isAjaxRequest()) {
+            try {
+                extContext.setResponseContentType("text/xml");
+                extContext.addResponseHeader("Cache-Control", "no-cache");
+                PartialResponseWriter writer =
+                      ctx.getPartialViewContext().getPartialResponseWriter();
+                writer.startDocument();
+                writer.startUpdate("javax.faces.ViewRoot");
+                writer.startElement("html",null);
+                writer.startElement("head",null);
+                writer.startElement("title",null);
+                writer.writeText("PASSED",null);
+                writer.endElement("title");
+                writer.endElement("head");
+                writer.startElement("body",null);
+                writer.startElement("span",null);
+                writer.writeAttribute("id","target","id");
+                writer.endElement("span");
+                writer.startElement("script",null);
+                writer.writeAttribute("type","text/javascript","type");
+                writer.write("var marker = true; checkPass();");
+                writer.endElement("script");
+                writer.endElement("body");
+                writer.endElement("html");
+                writer.endUpdate();
+                writer.endDocument();
+                writer.flush();
+                ctx.responseComplete();
+            } catch (Exception e) {
+                throw new FacesException(e);
+            }
+        }
+        return null;
+    }
+
+        public String doUpdateRootSimpleEval() {
+        FacesContext ctx = FacesContext.getCurrentInstance();
+        ExternalContext extContext = ctx.getExternalContext();
+        if (ctx.getPartialViewContext().isAjaxRequest()) {
+            try {
+                extContext.setResponseContentType("text/xml");
+                extContext.addResponseHeader("Cache-Control", "no-cache");
+                PartialResponseWriter writer =
+                      ctx.getPartialViewContext().getPartialResponseWriter();
+                writer.startDocument();
+                writer.startUpdate("javax.faces.ViewRoot");
+                writer.startElement("span",null);
+                writer.writeAttribute("id","target","id");
+                writer.endElement("span");
+                writer.startElement("script",null);
+                writer.writeAttribute("type","text/javascript","type");
+                writer.write("var marker = true; checkPass();");
+                writer.endElement("script");
+                writer.endUpdate();
+                writer.endDocument();
+                writer.flush();
+                ctx.responseComplete();
+            } catch (Exception e) {
+                throw new FacesException(e);
+            }
+        }
+        return null;
+    }
+
+    public String doUpdateBodyTagEval() {
+        FacesContext ctx = FacesContext.getCurrentInstance();
+        ExternalContext extContext = ctx.getExternalContext();
+        if (ctx.getPartialViewContext().isAjaxRequest()) {
+            try {
+                extContext.setResponseContentType("text/xml");
+                extContext.addResponseHeader("Cache-Control", "no-cache");
+                PartialResponseWriter writer =
+                      ctx.getPartialViewContext().getPartialResponseWriter();
+                writer.startDocument();
+                writer.startUpdate("javax.faces.ViewBody");
+                writer.startElement("body",null);
+                writer.startElement("span",null);
+                writer.writeAttribute("id","target","id");
+                writer.endElement("span");
+                writer.startElement("script",null);
+                writer.writeAttribute("type","text/javascript","type");
+                writer.write("var marker = true; checkPass();");
+                writer.endElement("script");
+                writer.endElement("body");
+                writer.endUpdate();
+                writer.endDocument();
+                writer.flush();
+                ctx.responseComplete();
+            } catch (Exception e) {
+                throw new FacesException(e);
+            }
+        }
+        return null;
+    }
+
+    public String insertBeforeEval() {
+        FacesContext ctx = FacesContext.getCurrentInstance();
+        ExternalContext extContext = ctx.getExternalContext();
+        if (ctx.getPartialViewContext().isAjaxRequest()) {
+            try {
+                extContext.setResponseContentType("text/xml");
+                extContext.addResponseHeader("Cache-Control", "no-cache");
+                PartialResponseWriter writer =
+                      ctx.getPartialViewContext().getPartialResponseWriter();
+                writer.startDocument();
+                writer.startInsertBefore("target");
+                writer.writeAttribute("id", "target2", "id");
+                writer.startElement("script",null);
+                writer.writeAttribute("type","text/javascript","type");
+                writer.write("var marker = true; checkPass();");
+                writer.endElement("script");
+                writer.endInsert();
+                writer.endDocument();
+                writer.flush();
+                ctx.responseComplete();
+            } catch (Exception e) {
+                throw new FacesException(e);
+            }
+        }
+        return null;
+    }
+
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/ajax/browser/SelectChangeBean.java b/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/ajax/browser/SelectChangeBean.java
new file mode 100644
index 0000000..ba03513
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/ajax/browser/SelectChangeBean.java
@@ -0,0 +1,94 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.model.ajax.browser;
+
+import javax.faces.bean.RequestScoped;
+import javax.faces.bean.ManagedBean;
+
+ at ManagedBean(name="selectChange")
+ at RequestScoped
+ at SuppressWarnings("unused")
+public class SelectChangeBean {
+
+    private String string = "Pending";
+    private String[] sarray;
+    private boolean bool;
+
+    public String getString() {
+        return string;
+    }
+
+    public void setString(String string) {
+        this.string = string;
+    }
+
+    public String[] getSarray() {
+        return sarray;
+    }
+
+    public void setSarray(String[] sarray) {
+        this.sarray = sarray;
+        if (sarray.length == 0) {
+            string = "Pending";
+        } else {
+            string = "";
+        }
+        for (String str : sarray) {
+            if (!"".equals(string)) {
+                string = string + " ";
+            }
+            string = string + str;
+        }
+    }
+
+    public boolean isBool() {
+        return bool;
+    }
+
+    public void setBool(boolean bool) {
+        this.bool = bool;
+        if (bool) {
+            string = "PASSED";
+        } else {
+            string = "Pending";
+        }
+    }
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/ajax/browser/UpdateRootBean.java b/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/ajax/browser/UpdateRootBean.java
new file mode 100644
index 0000000..3c385ff
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/systest/model/ajax/browser/UpdateRootBean.java
@@ -0,0 +1,422 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.model.ajax.browser;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.RequestScoped;
+import javax.faces.context.FacesContext;
+import javax.faces.context.ExternalContext;
+import javax.faces.context.PartialResponseWriter;
+import javax.faces.FacesException;
+
+ at ManagedBean
+ at RequestScoped
+ at SuppressWarnings("unused")
+public class UpdateRootBean {
+
+    public String updateRootSimple() {
+        FacesContext ctx = FacesContext.getCurrentInstance();
+        ExternalContext extContext = ctx.getExternalContext();
+        if (ctx.getPartialViewContext().isAjaxRequest()) {
+            try {
+                extContext.setResponseContentType("text/xml");
+                extContext.addResponseHeader("Cache-Control", "no-cache");
+                PartialResponseWriter writer =
+                      ctx.getPartialViewContext().getPartialResponseWriter();
+                writer.startDocument();
+                writer.startUpdate("javax.faces.ViewRoot");
+                writer.startElement("span", null);
+                writer.writeAttribute("id","newvalue","id");
+                writer.writeText("PASSED",null);
+                writer.endElement("span");
+                writer.endUpdate();
+                writer.endDocument();
+                writer.flush();
+                ctx.responseComplete();
+            } catch (Exception e) {
+                throw new FacesException(e);
+            }
+        }
+        return null;
+    }
+
+    public String updateRootBody() {
+        FacesContext ctx = FacesContext.getCurrentInstance();
+        ExternalContext extContext = ctx.getExternalContext();
+        if (ctx.getPartialViewContext().isAjaxRequest()) {
+            try {
+                extContext.setResponseContentType("text/xml");
+                extContext.addResponseHeader("Cache-Control", "no-cache");
+                PartialResponseWriter writer =
+                      ctx.getPartialViewContext().getPartialResponseWriter();
+                writer.startDocument();
+                writer.startUpdate("javax.faces.ViewRoot");
+                writer.startElement("body",null);
+                writer.startElement("span", null);
+                writer.writeAttribute("id","newvalue","id");
+                writer.writeText("PASSED",null);
+                writer.endElement("span");
+                writer.endElement("body");
+                writer.endUpdate();
+                writer.endDocument();
+                writer.flush();
+                ctx.responseComplete();
+            } catch (Exception e) {
+                throw new FacesException(e);
+            }
+        }
+        return null;
+    }
+
+    public String updateRootAll() {
+        FacesContext ctx = FacesContext.getCurrentInstance();
+        ExternalContext extContext = ctx.getExternalContext();
+        if (ctx.getPartialViewContext().isAjaxRequest()) {
+            try {
+                extContext.setResponseContentType("text/xml");
+                extContext.addResponseHeader("Cache-Control", "no-cache");
+                PartialResponseWriter writer =
+                      ctx.getPartialViewContext().getPartialResponseWriter();
+                writer.startDocument();
+                writer.startUpdate("javax.faces.ViewRoot");
+                writer.startElement("html",null);
+                writer.startElement("head",null);
+                writer.startElement("title",null);
+                writer.writeText("PASSED",null);
+                writer.endElement("title");
+                writer.endElement("head");
+                writer.startElement("body",null);
+                writer.startElement("span", null);
+                writer.writeAttribute("id","newvalue","id");
+                writer.writeText("PASSED",null);
+                writer.endElement("span");
+                writer.endElement("body");
+                writer.endElement("html");
+                writer.endUpdate();
+                writer.endDocument();
+                writer.flush();
+                ctx.responseComplete();
+            } catch (Exception e) {
+                throw new FacesException(e);
+            }
+        }
+        return null;
+    }
+
+    public String updateRootFaulty() {  // missing end tags
+        FacesContext ctx = FacesContext.getCurrentInstance();
+        ExternalContext extContext = ctx.getExternalContext();
+        if (ctx.getPartialViewContext().isAjaxRequest()) {
+            try {
+                extContext.setResponseContentType("text/xml");
+                extContext.addResponseHeader("Cache-Control", "no-cache");
+                PartialResponseWriter writer =
+                      ctx.getPartialViewContext().getPartialResponseWriter();
+                writer.startDocument();
+                writer.startUpdate("javax.faces.ViewRoot");
+                writer.startElement("html",null);
+                writer.startElement("head",null);
+                writer.startElement("title",null);
+                writer.writeText("PASSED",null);
+                writer.endElement("title");
+                writer.endElement("head");
+                writer.startElement("body",null);
+                writer.startElement("span", null);
+                writer.writeAttribute("id","newvalue","id");
+                writer.writeText("PASSED",null);
+                writer.endElement("span");
+                writer.endElement("body");
+                writer.endUpdate();
+                writer.endDocument();
+                writer.flush();
+                ctx.responseComplete();
+            } catch (Exception e) {
+                throw new FacesException(e);
+            }
+        }
+        return null;
+    }
+
+    public String updateBodySimple() {  // missing end tags
+        FacesContext ctx = FacesContext.getCurrentInstance();
+        ExternalContext extContext = ctx.getExternalContext();
+        if (ctx.getPartialViewContext().isAjaxRequest()) {
+            try {
+                extContext.setResponseContentType("text/xml");
+                extContext.addResponseHeader("Cache-Control", "no-cache");
+                PartialResponseWriter writer =
+                      ctx.getPartialViewContext().getPartialResponseWriter();
+                writer.startDocument();
+                writer.startUpdate("javax.faces.ViewRoot");
+                writer.startElement("span", null);
+                writer.writeAttribute("id","newvalue","id");
+                writer.writeText("PASSED",null);
+                writer.endElement("span");
+                writer.endUpdate();
+                writer.endDocument();
+                writer.flush();
+                ctx.responseComplete();
+            } catch (Exception e) {
+                throw new FacesException(e);
+            }
+        }
+        return null;
+    }
+
+    public String updateBodyTag() {
+        FacesContext ctx = FacesContext.getCurrentInstance();
+        ExternalContext extContext = ctx.getExternalContext();
+        if (ctx.getPartialViewContext().isAjaxRequest()) {
+            try {
+                extContext.setResponseContentType("text/xml");
+                extContext.addResponseHeader("Cache-Control", "no-cache");
+                PartialResponseWriter writer =
+                      ctx.getPartialViewContext().getPartialResponseWriter();
+                writer.startDocument();
+                writer.startUpdate("javax.faces.ViewBody");
+                writer.startElement("body",null);
+                writer.startElement("span", null);
+                writer.writeAttribute("id","newvalue","id");
+                writer.writeText("PASSED",null);
+                writer.endElement("span");
+                writer.endElement("body");
+                writer.endUpdate();
+                writer.endDocument();
+                writer.flush();
+                ctx.responseComplete();
+            } catch (Exception e) {
+                throw new FacesException(e);
+            }
+        }
+        return null;
+    }
+
+    public String updateHead() {
+        FacesContext ctx = FacesContext.getCurrentInstance();
+        ExternalContext extContext = ctx.getExternalContext();
+        if (ctx.getPartialViewContext().isAjaxRequest()) {
+            try {
+                extContext.setResponseContentType("text/xml");
+                extContext.addResponseHeader("Cache-Control", "no-cache");
+                PartialResponseWriter writer =
+                      ctx.getPartialViewContext().getPartialResponseWriter();
+                writer.startDocument();
+                writer.startUpdate("javax.faces.ViewHead");
+                writer.startElement("head",null);
+                writer.startElement("title",null);
+                writer.writeText("PASSED",null);
+                writer.endElement("title");
+                writer.endElement("head");
+                writer.endUpdate();
+                writer.endDocument();
+                writer.flush();
+                ctx.responseComplete();
+            } catch (Exception e) {
+                throw new FacesException(e);
+            }
+        }
+        return null;
+    }
+
+    public String updateRootAllEvent() {
+        FacesContext ctx = FacesContext.getCurrentInstance();
+        ExternalContext extContext = ctx.getExternalContext();
+        if (ctx.getPartialViewContext().isAjaxRequest()) {
+            try {
+                extContext.setResponseContentType("text/xml");
+                extContext.addResponseHeader("Cache-Control", "no-cache");
+                PartialResponseWriter writer =
+                      ctx.getPartialViewContext().getPartialResponseWriter();
+                writer.startDocument();
+                writer.startUpdate("javax.faces.ViewRoot");
+                writer.startElement("html",null);
+                writer.startElement("head",null);
+                writer.startElement("title",null);
+                writer.writeText("PASSED",null);
+                writer.endElement("title");
+                writer.endElement("head");
+                writer.startElement("body",null);
+                writer.startElement("input", null);
+                writer.writeAttribute("id","newbutton","id");
+                writer.writeAttribute("type","button","type");
+                writer.writeAttribute("onclick","checkPass();","onclick");
+                writer.writeAttribute("value","Click Me","value");
+                writer.endElement("input");
+                writer.endElement("body");
+                writer.endElement("html");
+                writer.endUpdate();
+                writer.endDocument();
+                writer.flush();
+                ctx.responseComplete();
+            } catch (Exception e) {
+                throw new FacesException(e);
+            }
+        }
+        return null;
+    }
+
+    public String updateRootBodyStyle() {
+        FacesContext ctx = FacesContext.getCurrentInstance();
+        ExternalContext extContext = ctx.getExternalContext();
+        if (ctx.getPartialViewContext().isAjaxRequest()) {
+            try {
+                extContext.setResponseContentType("text/xml");
+                extContext.addResponseHeader("Cache-Control", "no-cache");
+                PartialResponseWriter writer =
+                      ctx.getPartialViewContext().getPartialResponseWriter();
+                writer.startDocument();
+                writer.startUpdate("javax.faces.ViewRoot");
+                writer.startElement("html",null);
+                writer.startElement("head",null);
+                writer.startElement("title",null);
+                writer.writeText("PASSED",null);
+                writer.endElement("title");
+                writer.endElement("head");
+                writer.startElement("body",null);
+                writer.writeAttribute("id","bodyId","id");
+                writer.writeAttribute("style", "background-color: green","style");
+                writer.writeText("Green means PASSED",null);
+                writer.endElement("body");
+                writer.endElement("html");
+                writer.endUpdate();
+                writer.endDocument();
+                writer.flush();
+                ctx.responseComplete();
+            } catch (Exception e) {
+                throw new FacesException(e);
+            }
+        }
+        return null;
+    }
+
+    public String updateRootSimpleEvent() {
+        FacesContext ctx = FacesContext.getCurrentInstance();
+        ExternalContext extContext = ctx.getExternalContext();
+        if (ctx.getPartialViewContext().isAjaxRequest()) {
+            try {
+                extContext.setResponseContentType("text/xml");
+                extContext.addResponseHeader("Cache-Control", "no-cache");
+                PartialResponseWriter writer =
+                      ctx.getPartialViewContext().getPartialResponseWriter();
+                writer.startDocument();
+                writer.startUpdate("javax.faces.ViewRoot");
+                writer.startElement("input", null);
+                writer.writeAttribute("id","newbutton","id");
+                writer.writeAttribute("type","button","type");
+                writer.writeAttribute("onclick","checkPass();","onclick");
+                writer.writeAttribute("value","Click Me","value");
+                writer.endElement("input");
+                writer.endUpdate();
+                writer.endDocument();
+                writer.flush();
+                ctx.responseComplete();
+            } catch (Exception e) {
+                throw new FacesException(e);
+            }
+        }
+        return null;
+    }
+
+
+    public String updateRootAllStyle() {
+        FacesContext ctx = FacesContext.getCurrentInstance();
+        ExternalContext extContext = ctx.getExternalContext();
+        if (ctx.getPartialViewContext().isAjaxRequest()) {
+            try {
+                extContext.setResponseContentType("text/xml");
+                extContext.addResponseHeader("Cache-Control", "no-cache");
+                PartialResponseWriter writer =
+                      ctx.getPartialViewContext().getPartialResponseWriter();
+                writer.startDocument();
+                writer.startUpdate("javax.faces.ViewRoot");
+                writer.startElement("html",null);
+                writer.startElement("head",null);
+                writer.startElement("title",null);
+                writer.writeText("PASSED",null);
+                writer.endElement("title");
+                writer.endElement("head");
+                writer.startElement("body",null);
+                writer.startElement("span", null);
+                writer.writeAttribute("id","newvalue","id");
+                writer.writeAttribute("style", "background-color: green","style");
+                writer.writeText("Green means PASSED",null);
+                writer.endElement("span");
+                writer.endElement("body");
+                writer.endElement("html");
+                writer.endUpdate();
+                writer.endDocument();
+                writer.flush();
+                ctx.responseComplete();
+            } catch (Exception e) {
+                throw new FacesException(e);
+            }
+        }
+        return null;
+    }
+
+    public String updateRootSimpleStyle() {
+        FacesContext ctx = FacesContext.getCurrentInstance();
+        ExternalContext extContext = ctx.getExternalContext();
+        if (ctx.getPartialViewContext().isAjaxRequest()) {
+            try {
+                extContext.setResponseContentType("text/xml");
+                extContext.addResponseHeader("Cache-Control", "no-cache");
+                PartialResponseWriter writer =
+                      ctx.getPartialViewContext().getPartialResponseWriter();
+                writer.startDocument();
+                writer.startUpdate("javax.faces.ViewRoot");
+                writer.startElement("span", null);
+                writer.writeAttribute("id","newvalue","id");
+                writer.writeAttribute("style", "background-color: green","style");
+                writer.writeText("Green means PASSED",null);
+                writer.endElement("span");
+                writer.endUpdate();
+                writer.endDocument();
+                writer.flush();
+                ctx.responseComplete();
+            } catch (Exception e) {
+                throw new FacesException(e);
+            }
+        }
+        return null;
+    }
+
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/systest/render/Base64.java b/test/servlet30/systest/src/main/java/com/sun/faces/systest/render/Base64.java
new file mode 100644
index 0000000..3a14ea4
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/systest/render/Base64.java
@@ -0,0 +1,420 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+/*
+ * $Header: /cvs/javaserverfaces-sources/jsf-ri/systest/src/com/sun/faces/systest/render/Base64.java,v 1.2 2007/04/27 22:01:16 ofung Exp $
+ * $Revision: 1.2 $
+ * $Date: 2007/04/27 22:01:16 $
+ * ====================================================================
+ *
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 1999-2002 The Apache Software Foundation.  All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * 3. The end-user documentation included with the redistribution, if
+ *    any, must include the following acknowlegement:
+ *       "This product includes software developed by the
+ *        Apache Software Foundation (http://www.apache.org/)."
+ *    Alternately, this acknowlegement may appear in the software itself,
+ *    if and wherever such third-party acknowlegements normally appear.
+ *
+ * 4. The names "The Jakarta Project", "HttpClient", and "Apache Software
+ *    Foundation" must not be used to endorse or promote products derived
+ *    from this software without prior written permission. For written
+ *    permission, please contact apache@@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache"
+ *    nor may "Apache" appear in their names without prior written
+ *    permission of the Apache Group.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation.  For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ *
+ */
+
+package com.sun.faces.systest.render;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.OutputStreamWriter;
+import java.io.UnsupportedEncodingException;
+
+/**
+ * <p>Base64 encoder and decoder.</p>
+ * <p/>
+ * This class provides encoding/decoding methods for
+ * the Base64 encoding as defined by RFC 2045,
+ * N. Freed and N. Borenstein.
+ * RFC 2045: Multipurpose Internet Mail Extensions (MIME)
+ * Part One: Format of Internet Message Bodies. Reference
+ * 1996. Available at: http://www.ietf.org/rfc/rfc2045.txt
+ * </p>
+ *
+ * @@author Jeffrey Rodriguez
+ * @@version $Revision: 1.2 $ $Date: 2007/04/27 22:01:16 $
+ */
+public final class Base64 {
+
+    static protected final String DEFAULT_CHAR_ENCODING = "ISO-8859-1";
+    static private final int BASELENGTH = 255;
+    static private final int LOOKUPLENGTH = 64;
+    static private final int TWENTYFOURBITGROUP = 24;
+    static private final int EIGHTBIT = 8;
+    static private final int SIXTEENBIT = 16;
+    static private final int SIXBIT = 6;
+    static private final int FOURBYTE = 4;
+    static private final int SIGN = -128;
+    static private final byte PAD = (byte) '=';
+    static private final byte[] EMPTY_BYTE_ARRAY = new byte[0];
+    static private byte[] base64Alphabet = new byte[BASELENGTH];
+    static private byte[] lookUpBase64Alphabet = new byte[LOOKUPLENGTH];
+
+
+    static {
+
+        for (int i = 0; i < BASELENGTH; i++) {
+            base64Alphabet[i] = -1;
+        }
+        for (int i = 'Z'; i >= 'A'; i--) {
+            base64Alphabet[i] = (byte) (i - 'A');
+        }
+        for (int i = 'z'; i >= 'a'; i--) {
+            base64Alphabet[i] = (byte) (i - 'a' + 26);
+        }
+
+        for (int i = '9'; i >= '0'; i--) {
+            base64Alphabet[i] = (byte) (i - '0' + 52);
+        }
+
+        base64Alphabet['+'] = 62;
+        base64Alphabet['/'] = 63;
+
+        for (int i = 0; i <= 25; i++)
+            lookUpBase64Alphabet[i] = (byte) ('A' + i);
+
+        for (int i = 26, j = 0; i <= 51; i++, j++)
+            lookUpBase64Alphabet[i] = (byte) ('a' + j);
+
+        for (int i = 52, j = 0; i <= 61; i++, j++)
+            lookUpBase64Alphabet[i] = (byte) ('0' + j);
+        lookUpBase64Alphabet[62] = (byte) '+';
+        lookUpBase64Alphabet[63] = (byte) '/';
+
+    }
+
+    //
+    // Constructors and Initializers
+    //
+    private Base64() {
+
+        throw new IllegalStateException();
+
+    }
+
+
+    public static boolean isBase64(String isValidString) {
+        return (isBase64(isValidString.getBytes()));
+    }
+
+
+    public static boolean isBase64(byte octect) {
+        // Should we ignore white space?
+        return (octect == PAD || base64Alphabet[octect] != -1);
+    }
+
+
+    public static boolean isBase64(byte[] arrayOctect) {
+        int length = arrayOctect.length;
+        if (length == 0) {
+            return true;
+        }
+        for (int i = 0; i < length; i++) {
+            if (!Base64.isBase64(arrayOctect[i]))
+                return false;
+        }
+        return true;
+    }
+
+
+    /**
+     * Encodes hex octects into Base64
+     *
+     * @@param binaryData Array containing binaryData
+     * @@return Base64-encoded array
+     */
+    public static byte[] encode(byte[] binaryData) {
+        if (binaryData == null)
+            binaryData = EMPTY_BYTE_ARRAY;
+
+        int lengthDataBits = binaryData.length * EIGHTBIT;
+        int fewerThan24bits = lengthDataBits % TWENTYFOURBITGROUP;
+        int numberTriplets = lengthDataBits / TWENTYFOURBITGROUP;
+        byte encodedData[] = null;
+
+
+        if (fewerThan24bits != 0) //data not divisible by 24 bit
+            encodedData = new byte[(numberTriplets + 1) * 4];
+        else // 16 or 8 bit
+            encodedData = new byte[numberTriplets * 4];
+
+        byte k = 0, l = 0, b1 = 0, b2 = 0, b3 = 0;
+
+        int encodedIndex = 0;
+        int dataIndex = 0;
+        int i = 0;
+        for (i = 0; i < numberTriplets; i++) {
+
+            dataIndex = i * 3;
+            b1 = binaryData[dataIndex];
+            b2 = binaryData[dataIndex + 1];
+            b3 = binaryData[dataIndex + 2];
+
+            l = (byte) (b2 & 0x0f);
+            k = (byte) (b1 & 0x03);
+
+            encodedIndex = i * 4;
+            byte val1 = ((b1 & SIGN) == 0) ?
+                (byte) (b1 >> 2) : (byte) ((b1) >> 2 ^ 0xc0);
+
+            byte val2 = ((b2 & SIGN) == 0) ?
+                (byte) (b2 >> 4) : (byte) ((b2) >> 4 ^ 0xf0);
+            byte val3 = ((b3 & SIGN) == 0) ?
+                (byte) (b3 >> 6) : (byte) ((b3) >> 6 ^ 0xfc);
+
+            encodedData[encodedIndex] = lookUpBase64Alphabet[val1];
+            encodedData[encodedIndex + 1] =
+                lookUpBase64Alphabet[val2 | (k << 4)];
+            encodedData[encodedIndex + 2] =
+                lookUpBase64Alphabet[(l << 2) | val3];
+            encodedData[encodedIndex + 3] = lookUpBase64Alphabet[b3 & 0x3f];
+        }
+
+        // form integral number of 6-bit groups
+        dataIndex = i * 3;
+        encodedIndex = i * 4;
+        if (fewerThan24bits == EIGHTBIT) {
+            b1 = binaryData[dataIndex];
+            k = (byte) (b1 & 0x03);
+            byte val1 = ((b1 & SIGN) == 0) ?
+                (byte) (b1 >> 2) : (byte) ((b1) >> 2 ^ 0xc0);
+            encodedData[encodedIndex] = lookUpBase64Alphabet[val1];
+            encodedData[encodedIndex + 1] = lookUpBase64Alphabet[k << 4];
+            encodedData[encodedIndex + 2] = PAD;
+            encodedData[encodedIndex + 3] = PAD;
+        } else if (fewerThan24bits == SIXTEENBIT) {
+            b1 = binaryData[dataIndex];
+            b2 = binaryData[dataIndex + 1];
+            l = (byte) (b2 & 0x0f);
+            k = (byte) (b1 & 0x03);
+
+            byte val1 = ((b1 & SIGN) == 0) ?
+                (byte) (b1 >> 2) : (byte) ((b1) >> 2 ^ 0xc0);
+            byte val2 = ((b2 & SIGN) == 0) ?
+                (byte) (b2 >> 4) : (byte) ((b2) >> 4 ^ 0xf0);
+
+            encodedData[encodedIndex] = lookUpBase64Alphabet[val1];
+            encodedData[encodedIndex + 1] =
+                lookUpBase64Alphabet[val2 | (k << 4)];
+            encodedData[encodedIndex + 2] = lookUpBase64Alphabet[l << 2];
+            encodedData[encodedIndex + 3] = PAD;
+        }
+        return encodedData;
+    }
+
+
+    /**
+     * Returns the base64 encoding of String.  First the String is
+     * converted to byte[], using the character encoding of
+     * <code>ISO-8859-1</code>.
+     *
+     * @@param data String of data to convert
+     * @@return Base64-encoded String
+     */
+    public static String encode(String data) {
+        try {
+            return encode(data, DEFAULT_CHAR_ENCODING);
+        } catch (UnsupportedEncodingException uee) {
+            throw new IllegalStateException(uee.toString());
+        }
+    }
+
+
+    /**
+     * Returns the base64 encoding of String (by first converting to
+     * byte[], using the specified <code>charEncoding</code>).  The
+     * return value is also a String.  The Default
+     * <code>codeEncoding</chode> is <code>ISO-8859-1</code>.
+     *
+     * @@param data String of data to convert
+     * @@param charEncoding the character encoding to use when converting
+     * a String to a byte[]
+     * @@return Base64-encoded String
+     */
+    public static String encode(String data, String charEncoding)
+        throws UnsupportedEncodingException {
+
+        // Check arguments
+        if (data == null)
+            data = "";
+        if (charEncoding == null)
+            charEncoding = DEFAULT_CHAR_ENCODING;
+
+        // Convert to byte[]
+        ByteArrayOutputStream bos = new ByteArrayOutputStream();
+        OutputStreamWriter osw = new OutputStreamWriter(bos, charEncoding);
+        try {
+            osw.write(data);
+        } catch (IOException ioe) {
+            throw new RuntimeException(ioe.toString());
+        }
+
+        // Encode
+        byte[] encodedData = encode(bos.toByteArray());
+
+        // Convert to String
+        if (encodedData == null)
+            return "";
+        bos = new ByteArrayOutputStream(encodedData.length);
+        try {
+            bos.write(encodedData);
+        } catch (IOException ioe) {
+            throw new RuntimeException(ioe.toString());
+        }
+
+        return bos.toString(charEncoding);
+    }
+
+
+    /**
+     * Decodes Base64 data into octects
+     *
+     * @@param binaryData Byte array containing Base64 data
+     * @@return Array containing decoded data.
+     */
+    public static byte[] decode(byte[] base64Data) {
+        // Should we throw away anything not in base64Data ?
+
+        // handle the edge case, so we don't have to worry about it later
+        if (base64Data.length == 0) {
+            return EMPTY_BYTE_ARRAY;
+        }
+
+        int numberQuadruple = base64Data.length / FOURBYTE;
+        byte decodedData[] = null;
+        byte b1 = 0, b2 = 0, b3 = 0, b4 = 0, marker0 = 0, marker1 = 0;
+
+        int encodedIndex = 0;
+        int dataIndex = 0;
+        {
+            // this block sizes the output array properly - rlw
+            int lastData = base64Data.length;
+            // ignore the '=' padding
+            while (base64Data[lastData - 1] == PAD) {
+                if (--lastData == 0) {
+                    return EMPTY_BYTE_ARRAY;
+                }
+            }
+            decodedData = new byte[lastData - numberQuadruple];
+        }
+
+        for (int i = 0; i < numberQuadruple; i++) {
+            dataIndex = i * 4;
+            marker0 = base64Data[dataIndex + 2];
+            marker1 = base64Data[dataIndex + 3];
+
+            b1 = base64Alphabet[base64Data[dataIndex]];
+            b2 = base64Alphabet[base64Data[dataIndex + 1]];
+
+            if (marker0 != PAD && marker1 != PAD) {
+                //No PAD e.g 3cQl
+                b3 = base64Alphabet[marker0];
+                b4 = base64Alphabet[marker1];
+
+                decodedData[encodedIndex] = (byte) (b1 << 2 | b2 >> 4);
+                decodedData[encodedIndex + 1] =
+                    (byte) (((b2 & 0xf) << 4) | ((b3 >> 2) & 0xf));
+                decodedData[encodedIndex + 2] = (byte) (b3 << 6 | b4);
+            } else if (marker0 == PAD) {
+                //Two PAD e.g. 3c[Pad][Pad]
+                decodedData[encodedIndex] = (byte) (b1 << 2 | b2 >> 4);
+            } else if (marker1 == PAD) {
+                //One PAD e.g. 3cQ[Pad]
+                b3 = base64Alphabet[marker0];
+
+                decodedData[encodedIndex] = (byte) (b1 << 2 | b2 >> 4);
+                decodedData[encodedIndex + 1] =
+                    (byte) (((b2 & 0xf) << 4) | ((b3 >> 2) & 0xf));
+            }
+            encodedIndex += 3;
+        }
+        return decodedData;
+    }
+
+}
+
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/systest/render/ButtonRenderer.java b/test/servlet30/systest/src/main/java/com/sun/faces/systest/render/ButtonRenderer.java
new file mode 100644
index 0000000..3579e01
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/systest/render/ButtonRenderer.java
@@ -0,0 +1,286 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+// ButtonRenderer.java
+
+package com.sun.faces.systest.render;
+
+import com.sun.faces.renderkit.Attribute;
+import com.sun.faces.renderkit.AttributeManager;
+import com.sun.faces.renderkit.RenderKitUtils;
+import com.sun.faces.util.MessageUtils;
+import com.sun.faces.util.Util;
+
+import javax.faces.component.NamingContainer;
+import javax.faces.component.UICommand;
+import javax.faces.component.UIComponent;
+import javax.faces.component.UIViewRoot;
+import javax.faces.component.UINamingContainer;
+import javax.faces.context.FacesContext;
+import javax.faces.context.ResponseWriter;
+import javax.faces.event.ActionEvent;
+import javax.faces.render.Renderer;
+
+import java.io.IOException;
+import java.util.Map;
+
+/**
+ * <B>ButtonRenderer</B> is a class that renders the current value of
+ * <code>UICommand<code> as a Button.
+ */
+
+public class ButtonRenderer extends Renderer {
+
+    private static final Attribute[] ATTRIBUTES =
+          AttributeManager.getAttributes(AttributeManager.Key.COMMANDBUTTON);
+
+    public static final String CLEAR_HIDDEN_FIELD_FN_NAME = 
+         "clearFormHiddenParams";
+    public static final String FORM_CLIENT_ID_ATTR = 
+         "com.sun.faces.FORM_CLIENT_ID_ATTR";
+
+    //
+    // Protected Constants
+    //
+    // Log instance for this class
+
+    //
+    // Class Variables
+    //
+
+    //
+    // Instance Variables
+    //
+
+    // Attribute Instance Variables
+
+
+    // Relationship Instance Variables
+
+    //
+    // Constructors and Initializers    
+    //
+
+    //
+    // Class methods
+    //
+
+    //
+    // General Methods
+    //
+    
+    //
+    // Methods From Renderer
+    //
+
+    public void decode(FacesContext context, UIComponent component) {
+        if (context == null) {
+            throw new NullPointerException(
+                MessageUtils.getExceptionMessageString(MessageUtils.NULL_PARAMETERS_ERROR_MESSAGE_ID, "context"));
+        }
+        if (component == null) {
+            throw new NullPointerException(
+                MessageUtils.getExceptionMessageString(MessageUtils.NULL_PARAMETERS_ERROR_MESSAGE_ID, "component"));
+        }
+
+        // If the component is disabled, do not change the value of the
+        // component, since its state cannot be changed.
+        if (Util.componentIsDisabledOrReadonly(component)) {
+            return;
+        } 
+
+
+        // Was our command the one that caused this submission?
+        // we don' have to worry about getting the value from request parameter
+        // because we just need to know if this command caused the submission. We
+        // can get the command name by calling currentValue. This way we can 
+        // get around the IE bug.
+        String clientId = component.getClientId(context);
+        Map requestParameterMap = context.getExternalContext()
+            .getRequestParameterMap();
+        String value = (String) requestParameterMap.get(clientId);
+        if (value == null) {
+            if (requestParameterMap.get(clientId + ".x") == null &&
+                requestParameterMap.get(clientId + ".y") == null) {
+                return;
+            }
+        }
+
+        String type = (String) component.getAttributes().get("type");
+        if ((type != null) && (type.toLowerCase().equals("reset"))) {
+            return;
+        }
+        ActionEvent actionEvent = new ActionEvent(component);
+        component.queueEvent(actionEvent);
+
+
+        return;
+    }
+
+
+    public void encodeBegin(FacesContext context, UIComponent component)
+        throws IOException {
+        if (context == null) {
+            throw new NullPointerException(
+                MessageUtils.getExceptionMessageString(MessageUtils.NULL_PARAMETERS_ERROR_MESSAGE_ID, "context"));
+        }
+        if (component == null) {
+            throw new NullPointerException(
+                MessageUtils.getExceptionMessageString(MessageUtils.NULL_PARAMETERS_ERROR_MESSAGE_ID, "component"));
+        }
+        // suppress rendering if "rendered" property on the component is
+        // false.
+        if (!component.isRendered()) {
+            return;
+        }
+        
+        // Which button type (SUBMIT, RESET, or BUTTON) should we generate?
+        String type = (String) component.getAttributes().get("type");
+        String styleClass = null;
+        if (type == null) {
+            type = "submit";
+            // This is needed in the decode method
+            component.getAttributes().put("type", type);
+        }
+
+        ResponseWriter writer = context.getResponseWriter();
+        assert (writer != null);
+
+        String label = "";
+        Object value = ((UICommand) component).getValue();
+        if (value != null) {
+            label = value.toString();
+        }
+        String imageSrc = (String) component.getAttributes().get("image");
+        writer.startElement("input", component);
+        writeIdAttributeIfNecessary(context, writer, component);
+	String clientId = component.getClientId(context);
+        if (imageSrc != null) {
+            writer.writeAttribute("type", "image", "type");
+            writer.writeURIAttribute("src", src(context, imageSrc), "image");
+            writer.writeAttribute("name", clientId, "clientId");
+        } else {
+            writer.writeAttribute("type", type.toLowerCase(), "type");
+            writer.writeAttribute("name", clientId, "clientId");
+            writer.writeAttribute("value", label, "value");
+        }
+        
+        // look up the clientId of the form in request scope to arrive the name of
+        // the javascript function to invoke from the onclick event handler.
+        // PENDING (visvan) we need to fix this dependency between the renderers.
+        // This solution is only temporary.
+        Map requestMap = context.getExternalContext().getRequestMap();
+        String formClientId = (String)requestMap.get(FORM_CLIENT_ID_ATTR);
+        
+        StringBuffer sb = new StringBuffer();
+        // call the javascript function that clears the all the hidden field
+        // parameters in the form.
+        sb.append(CLEAR_HIDDEN_FIELD_FN_NAME);
+        if (formClientId != null) {
+            sb.append("_").append(formClientId.replace(UINamingContainer.getSeparatorChar(context), '_'));
+        }
+        sb.append("(this.form.id);");
+        // append user specified script for onclick if any.
+        String onclickAttr = (String)component.getAttributes().get("onclick");
+        if (onclickAttr != null && onclickAttr.length() != 0) {
+            sb.append(onclickAttr);
+            
+        }
+        writer.writeAttribute("onclick", sb.toString(), null);
+
+        RenderKitUtils.renderPassThruAttributes(context,
+              writer,
+                                                component,
+                                                ATTRIBUTES);
+        RenderKitUtils.renderXHTMLStyleBooleanAttributes(writer, component);
+
+        if (null != (styleClass = (String)
+            component.getAttributes().get("styleClass"))) {
+            writer.writeAttribute("class", styleClass, "styleClass");
+        }
+        writer.endElement("input");
+    }
+
+    public void encodeEnd(FacesContext context, UIComponent component)
+        throws IOException {
+        if (context == null) {
+            throw new NullPointerException(
+                MessageUtils.getExceptionMessageString(MessageUtils.NULL_PARAMETERS_ERROR_MESSAGE_ID, "context"));
+        }
+        if (component == null) {
+            throw new NullPointerException(
+                MessageUtils.getExceptionMessageString(MessageUtils.NULL_PARAMETERS_ERROR_MESSAGE_ID, "component"));
+        }
+    }
+
+    //
+    // General Methods
+    //
+       
+    private String src(FacesContext context, String value) {
+        if (value == null) {
+            return "";
+        }
+        value = context.getApplication().getViewHandler().
+            getResourceURL(context, value);
+        return (context.getExternalContext().encodeResourceURL(value));
+    }
+                                                                                                          
+    private boolean shouldWriteIdAttribute(UIComponent component) {
+        String id;
+        return (null != (id = component.getId()) &&
+            !id.startsWith(UIViewRoot.UNIQUE_ID_PREFIX));
+    }
+
+    private void writeIdAttributeIfNecessary(FacesContext context,
+                                               ResponseWriter writer,
+                                               UIComponent component) {
+        String id;
+        if (shouldWriteIdAttribute(component)) {
+            try {
+                writer.writeAttribute("id", component.getClientId(context),
+                                      "id");
+            } catch (IOException e) {
+            }
+        }
+    }
+
+
+} // end of class ButtonRenderer
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/systest/render/CustomRenderKitImpl.java b/test/servlet30/systest/src/main/java/com/sun/faces/systest/render/CustomRenderKitImpl.java
new file mode 100644
index 0000000..8bee198
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/systest/render/CustomRenderKitImpl.java
@@ -0,0 +1,243 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+// CustomRenderKitImpl.java
+
+package com.sun.faces.systest.render;
+
+import com.sun.faces.util.MessageUtils;
+import com.sun.faces.renderkit.ResponseStateManagerImpl;
+
+import javax.faces.context.ResponseStream;
+import javax.faces.context.ResponseWriter;
+import javax.faces.render.RenderKit;
+import javax.faces.render.Renderer;
+import javax.faces.render.ResponseStateManager;
+
+import java.io.IOException;
+import java.io.OutputStream;
+import java.io.Writer;
+import java.util.HashMap;
+
+/**
+ * <B>CustomRenderKitImpl</B> is a class ...
+ * <p/>
+ * <B>Lifetime And Scope</B> <P>
+ *
+ */
+
+public class CustomRenderKitImpl extends RenderKit {
+
+//
+// Protected Constants
+//
+
+//
+// Class Variables
+//
+
+//
+// Instance Variables
+//
+    // used for ResponseWriter creation;
+    private static String HTML_CONTENT_TYPE = "text/html";
+    private static String CHAR_ENCODING = "ISO-8859-1";
+//
+// Ivars used during actual client lifetime
+//
+
+// Relationship Instance Variables
+
+    /**
+     * Keys are String renderer family.  Values are HashMaps.  Nested
+     * HashMap keys are Strings for the rendererType, and values are the
+     * Renderer instances themselves.
+     */
+
+    private HashMap rendererFamilies;
+
+    private ResponseStateManager responseStateManager = null;
+//
+// Constructors and Initializers    
+//
+
+    public CustomRenderKitImpl() {
+        super();
+	rendererFamilies = new HashMap();
+    }
+
+
+    //
+    // Class methods
+    //
+
+    //
+    // General Methods
+    //
+
+    //
+    // Methods From RenderKit
+    //
+
+    public void addRenderer(String family, String rendererType,
+                            Renderer renderer) {
+        if (family == null) {
+            String message = MessageUtils.getExceptionMessageString
+                (MessageUtils.NULL_PARAMETERS_ERROR_MESSAGE_ID, "family");
+            throw new NullPointerException(message);
+                
+        }
+        if (rendererType == null) {
+            String message = MessageUtils.getExceptionMessageString
+                (MessageUtils.NULL_PARAMETERS_ERROR_MESSAGE_ID, "rendererType");
+            throw new NullPointerException(message);
+                
+        }
+        if (renderer == null) {
+            String message = MessageUtils.getExceptionMessageString
+                (MessageUtils.NULL_PARAMETERS_ERROR_MESSAGE_ID, "renderer");
+            throw new NullPointerException(message);
+                
+        }
+        HashMap renderers = null;
+
+        synchronized (rendererFamilies) {
+	    // PENDING(edburns): generics would be nice here.
+	    if (null == (renderers = (HashMap) rendererFamilies.get(family))) {
+		rendererFamilies.put(family, renderers = new HashMap());
+	    }
+            renderers.put(rendererType, renderer);
+        }
+    }
+
+
+    public Renderer getRenderer(String family, String rendererType) {
+
+        if (rendererType == null) {
+            String message = MessageUtils.getExceptionMessageString
+                (MessageUtils.NULL_PARAMETERS_ERROR_MESSAGE_ID, "rendererType");
+            throw new NullPointerException(message);
+        }
+        if (family == null) {
+            String message = MessageUtils.getExceptionMessageString
+                (MessageUtils.NULL_PARAMETERS_ERROR_MESSAGE_ID, "family");
+            throw new NullPointerException(message);
+        }
+
+        assert (rendererFamilies != null);
+
+        HashMap renderers = null;
+        Renderer renderer = null;
+
+	if (null != (renderers = (HashMap) rendererFamilies.get(family))) {
+	    renderer = (Renderer) renderers.get(rendererType);
+	}
+	
+        return renderer;
+    }
+
+
+    public synchronized ResponseStateManager getResponseStateManager() {
+        if (responseStateManager == null) {
+            responseStateManager = new ResponseStateManagerImpl();
+        }
+        return responseStateManager;
+    }
+
+
+    public ResponseWriter createResponseWriter(Writer writer, String contentTypeList,
+                                               String characterEncoding) {
+        if (writer == null) {
+            return null;
+        }
+        // Set the default content type to html;  However, if a content type list
+        // argument was specified, make sure it contains an html content type;
+        // PENDING(rogerk) ideally, we want to analyze the content type string
+        // in more detail, to determine the preferred content type - as outlined in
+        // http://www.ietf.org/rfc/rfc2616.txt?number=2616 - Section 14.1
+        // (since this is not an html renderkit);
+        //
+        String contentType = HTML_CONTENT_TYPE;
+        if (contentTypeList != null) {
+            if (contentTypeList.indexOf(contentType) < 0) {
+                throw new IllegalArgumentException(MessageUtils.getExceptionMessageString(
+                    MessageUtils.CONTENT_TYPE_ERROR_MESSAGE_ID));
+            }
+        }
+        if (characterEncoding == null) {
+            characterEncoding = CHAR_ENCODING;
+        }
+
+        return new CustomResponseWriter(writer, contentType, characterEncoding);
+    }
+
+
+    public ResponseStream createResponseStream(OutputStream out) {
+        final OutputStream output = out;
+        return new ResponseStream() {
+            public void write(int b) throws IOException {
+                output.write(b);
+            }
+
+
+            public void write(byte b[]) throws IOException {
+                output.write(b);
+            }
+
+
+            public void write(byte b[], int off, int len) throws IOException {
+                output.write(b, off, len);
+            }
+
+
+            public void flush() throws IOException {
+                output.flush();
+            }
+
+
+            public void close() throws IOException {
+                output.close();
+            }
+        };
+    }       
+    // The test for this class is in TestRenderKit.java
+
+} // end of class CustomRenderKitImpl
+
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/systest/render/CustomResponseStateManagerImpl.java b/test/servlet30/systest/src/main/java/com/sun/faces/systest/render/CustomResponseStateManagerImpl.java
new file mode 100644
index 0000000..4c019a6
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/systest/render/CustomResponseStateManagerImpl.java
@@ -0,0 +1,270 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.render;
+
+import javax.faces.application.StateManager;
+import javax.faces.application.StateManager.SerializedView;
+import javax.faces.context.FacesContext;
+import javax.faces.render.ResponseStateManager;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.util.Map;
+import java.util.zip.GZIPInputStream;
+import java.util.zip.GZIPOutputStream;
+
+import com.sun.faces.util.Util;
+
+
+/**
+ * <B>RenderKitImpl</B> is a class ...
+ */
+
+public class CustomResponseStateManagerImpl extends ResponseStateManager {
+
+    //
+    // Protected Constants
+    //
+    private static final String FACES_VIEW_STATE =
+        "com.sun.faces.FACES_VIEW_STATE";
+    
+     private static final String COMPRESS_STATE_PARAM =
+        "com.sun.faces.COMPRESS_STATE";
+    //
+    // Class Variables
+    //
+
+    //
+    // Instance Variables
+    //
+    private Boolean compressStateSet = null;
+
+    
+    //
+    // Ivars used during actual client lifetime
+    //
+
+    // Relationship Instance Variables
+
+    
+    //
+    // Constructors and Initializers    
+    //
+
+    public CustomResponseStateManagerImpl() {
+        super();       
+    }
+
+
+    //
+    // Class methods
+    //
+
+    //
+    // General Methods
+    //
+
+    //
+    // Methods From ResponseStateManager
+    //
+
+    public Object getState(FacesContext context, String viewId) {
+        Object stateArray[] = { getTreeStructure(context, viewId),
+                                getComponentState(context) };
+        return stateArray;
+    }
+
+    public boolean isPostback(FacesContext context) {
+	boolean result = context.getExternalContext().getRequestParameterMap().
+                containsKey(javax.faces.render.ResponseStateManager.VIEW_STATE_PARAM);
+	return result;
+    }
+
+    private Object getComponentState(FacesContext context) {
+
+        // requestMap is a local variable so we don't need to synchronize
+        Map requestMap = context.getExternalContext().getRequestMap();
+        Object state = requestMap.get(FACES_VIEW_STATE);
+        // null out the temporary attribute, since we don't need it anymore.
+        requestMap.remove(FACES_VIEW_STATE);
+        return state;
+    }
+
+    private Object getTreeStructure(FacesContext context,
+                                            String treeId) {
+	StateManager stateManager = Util.getStateManager(context);
+        
+	Map requestParamMap = context.getExternalContext()
+	    .getRequestParameterMap();
+	
+	String viewString = (String) requestParamMap.get(
+							 javax.faces.render.ResponseStateManager.VIEW_STATE_PARAM);
+	Object structure = null;
+	if (viewString == null) {
+	    return null;
+	}
+	
+	if (stateManager.isSavingStateInClient(context)) {
+	    Object state = null;
+	    ByteArrayInputStream bis = null;
+	    GZIPInputStream gis = null;
+	    ObjectInputStream ois = null;
+	    boolean compress = isCompressStateSet(context);
+	   
+	    try {
+                 byte[] bytes = Base64.decode(viewString.getBytes());
+		bis = new ByteArrayInputStream(bytes);
+		if (isCompressStateSet(context)) {
+		    gis = new GZIPInputStream(bis);
+		    ois = new ObjectInputStream(gis);
+		} else {
+		    ois = new ObjectInputStream(bis);
+		}
+		structure = ois.readObject();
+		state = ois.readObject();
+		Map requestMap = context.getExternalContext().getRequestMap();
+		// store the state object temporarily in request scope
+		// until it is processed by getComponentStateToRestore
+		// which resets it.
+		requestMap.put(FACES_VIEW_STATE, state);
+		bis.close();
+		if ( compress) {
+		    gis.close();
+		}
+		ois.close();
+	    } catch (java.io.OptionalDataException ode) {
+	    } catch (java.lang.ClassNotFoundException cnfe) {
+	    } catch (java.io.IOException iox) {
+	    }
+	}
+	else {
+	    structure = viewString;
+	}
+	return structure;
+    }
+
+    public void writeState(FacesContext context,
+                           Object state) throws IOException {
+        SerializedView view = null;
+        if (state instanceof SerializedView) {
+            view = (SerializedView) state;
+        }
+        else {
+            Object[] stateArray = (Object[])state;
+            StateManager stateManager =
+                context.getApplication().getStateManager();
+            view = stateManager.new SerializedView(stateArray[0], null);
+        }
+        writeSerializedState(context, view);
+    }
+
+    private void writeSerializedState(FacesContext context, SerializedView view)
+        throws IOException {
+        String hiddenField = null;
+	StateManager stateManager = Util.getStateManager(context);
+	
+	if (stateManager.isSavingStateInClient(context)) {
+	    GZIPOutputStream zos = null;
+	    ObjectOutputStream oos = null;
+	    boolean compress = isCompressStateSet(context);
+	    
+	    ByteArrayOutputStream bos = new ByteArrayOutputStream();
+	    if (compress) {
+		zos = new GZIPOutputStream(bos);
+		oos = new ObjectOutputStream(zos);
+	    } else {
+		oos = new ObjectOutputStream(bos);    
+	    }
+	    oos.writeObject(view.getStructure());
+	    oos.writeObject(view.getState());
+	    oos.close();
+	    if (compress) {
+		zos.close();
+	    }
+            byte[] securedata = bos.toByteArray();
+	    bos.close();
+	    
+	    hiddenField = " <input type=\"hidden\" name=\""
+		+ javax.faces.render.ResponseStateManager.VIEW_STATE_PARAM + "\"" + " value=\"" +
+                    (new String(Base64.encode(securedata), "ISO-8859-1"))
+		+ "\" />\n ";
+	}
+	else {
+	    hiddenField = " <input type=\"hidden\" name=\""
+		+ javax.faces.render.ResponseStateManager.VIEW_STATE_PARAM + "\"" + " value=\"" +
+		view.getStructure() +
+		"\" />\n ";
+	    
+	}
+        context.getResponseWriter().write(hiddenField);
+
+        // write this out regardless of state saving mode
+        // Only write it out if there is a default specified, and 
+        // this render kit identifier is not the default.
+        String result = context.getApplication().getDefaultRenderKitId();
+        if ((null != result && !result.equals("CUSTOM")) || result == null) {
+            hiddenField = " <input type=\"hidden\" name=\""
+                + ResponseStateManager.RENDER_KIT_ID_PARAM + "\"" + " value=\"CUSTOM\"" +
+                "\" />\n ";
+            context.getResponseWriter().write(hiddenField);
+        }
+    }
+    
+    private boolean isCompressStateSet(FacesContext context) {
+	if (null != compressStateSet) {
+	    return compressStateSet.booleanValue();
+	}
+	compressStateSet = Boolean.TRUE;
+
+        String compressStateParam = context.getExternalContext().
+            getInitParameter(COMPRESS_STATE_PARAM);
+        if (compressStateParam != null){
+	    compressStateSet = Boolean.valueOf(compressStateParam);
+        }
+	return compressStateSet.booleanValue();
+    }
+
+
+} // end of class CustomResponseStateManagerImpl
+
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/systest/render/CustomResponseWriter.java b/test/servlet30/systest/src/main/java/com/sun/faces/systest/render/CustomResponseWriter.java
new file mode 100644
index 0000000..a50c2f4
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/systest/render/CustomResponseWriter.java
@@ -0,0 +1,588 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.render;
+
+import javax.faces.FacesException;
+import javax.faces.component.UIComponent;
+import javax.faces.context.ResponseWriter;
+
+import java.io.IOException;
+import java.io.Writer;
+
+import com.sun.faces.util.HtmlUtils;
+import com.sun.faces.util.MessageUtils;
+
+
+/**
+ * <p><strong>CustomResponseWriter</strong> is an Html specific implementation
+ * of the <code>ResponseWriter</code> abstract class.
+ * Kudos to Adam Winer (Oracle) for much of this code.
+ */
+public class CustomResponseWriter extends ResponseWriter {
+
+    // Content Type for this Writer.
+    //
+    private String contentType = "text/html";
+
+    // Character encoding of that Writer - this may be null
+    // if the encoding isn't known.
+    //
+    private String encoding = null;
+
+    // Writer to use for output;
+    //
+    private Writer writer = null;
+
+    // True when we need to close a start tag
+    //
+    private boolean closeStart;
+
+    // True when we shouldn't be escaping output (basically,
+    // inside of <script> and <style> elements).
+    //
+    private boolean dontEscape;
+
+    // Internal buffer used when outputting properly escaped information
+    // using HtmlUtils class.
+    //
+    private char[] buffer = new char[1028];
+
+    // Internal buffer for to store the result of String.getChars() for
+    // values passed to the writer as String to reduce the overhead
+    // of String.charAt().  This buffer will be grown, if necessary, to
+    // accomodate larger values.
+    private char[] textBuffer = new char[128];
+
+    private char[] charHolder = new char[1];
+
+
+    /**
+     * Constructor sets the <code>ResponseWriter</code> and
+     * encoding.
+     *
+     * @param writer      the <code>ResponseWriter</code>
+     * @param contentType the content type.
+     * @param encoding    the character encoding.
+     * @throws if the encoding is not recognized.
+     */
+    public CustomResponseWriter(Writer writer, String contentType, String encoding)
+        throws FacesException {
+        this.writer = writer;
+        if (null != contentType) {
+            this.contentType = contentType;
+        }
+        this.encoding = encoding;
+
+        // Check the character encoding
+        // Check the character encoding
+        if (!HtmlUtils.validateEncoding(encoding)) {
+            throw new IllegalArgumentException(MessageUtils.getExceptionMessageString(
+                  MessageUtils.ENCODING_ERROR_MESSAGE_ID));    
+        }
+    }
+
+
+    /**
+     * @return the content type such as "text/html" for this ResponseWriter.
+     */
+    public String getContentType() {
+        return contentType;
+    }
+
+
+    /**
+     * @return the character encoding, such as "ISO-8859-1" for this
+     *         ResponseWriter.  Refer to:
+     *         <a href="http://www.iana.org/assignments/character-sets">theIANA</a>
+     *         for a list of character encodings.
+     */
+    public String getCharacterEncoding() {
+        return encoding;
+    }
+
+
+    /**
+     * <p>Write the text that should begin a response.</p>
+     *
+     * @throws IOException if an input/output error occurs
+     */
+    public void startDocument() throws IOException {
+        // do nothing;
+    }
+
+
+    /**
+     * Output the text for the end of a document.
+     */
+    public void endDocument() throws IOException {
+        writer.flush();
+    }
+
+
+    /**
+     * Flush any buffered output to the contained writer.
+     *
+     * @throws IOException if an input/output error occurs.
+     */
+    public void flush() throws IOException {
+        // NOTE: Internal buffer's contents (the ivar "buffer") is
+        // written to the contained writer in the HtmlUtils class - see
+        // HtmlUtils.flushBuffer method; Buffering is done during
+        // writeAttribute/writeText - otherwise, output is written
+        // directly to the writer (ex: writer.write(....)..
+        //
+        // close any previously started element, if necessary
+        closeStartIfNecessary();
+    }
+
+
+    /**
+     * <p>Write the start of an element, up to and including the
+     * element name.  Clients call <code>writeAttribute()</code> or
+     * <code>writeURIAttribute()</code> methods to add attributes after
+     * calling this method.
+     *
+     * @param name                Name of the starting element
+     * @param componentForElement The UIComponent instance that applies to this
+     *                            element.  This argument may be <code>null</code>.
+     * @throws IOException          if an input/output error occurs
+     * @throws NullPointerException if <code>name</code>
+     *                              is <code>null</code>
+     */
+    public void startElement(String name, UIComponent componentForElement)
+        throws IOException {
+        if (name == null) {
+            throw new NullPointerException(MessageUtils.getExceptionMessageString(
+                MessageUtils.NULL_PARAMETERS_ERROR_MESSAGE_ID, "name"));
+        }
+        closeStartIfNecessary();
+        char firstChar = name.charAt(0);
+        if ((firstChar == 's') ||
+            (firstChar == 'S')) {
+            if ("script".equalsIgnoreCase(name) ||
+                "style".equalsIgnoreCase(name)) {
+                dontEscape = true;
+            }
+        }
+        
+        
+        //PENDING (horwat) using String as a result of Tomcat char writer
+        //         ArrayIndexOutOfBoundsException (3584)
+        writer.write("<");
+        writer.write(name);
+        closeStart = true;
+    }
+
+
+    /**
+     * <p>Write the end of an element. This method will first
+     * close any open element created by a call to
+     * <code>startElement()</code>.
+     *
+     * @param name Name of the element to be ended
+     * @throws IOException          if an input/output error occurs
+     * @throws NullPointerException if <code>name</code>
+     *                              is <code>null</code>
+     */
+    public void endElement(String name) throws IOException {
+        if (name == null) {
+            throw new NullPointerException(MessageUtils.getExceptionMessageString(
+                MessageUtils.NULL_PARAMETERS_ERROR_MESSAGE_ID, "name"));
+        }
+
+        // always turn escaping back on once an element ends
+        dontEscape = false;
+        // See if we need to close the start of the last element
+        if (closeStart) {
+            boolean isEmptyElement = HtmlUtils.isEmptyElement(name);
+
+            if (isEmptyElement) {
+                writer.write(" />");
+                closeStart = false;
+                return;
+            }
+
+            writer.write(">");
+            closeStart = false;
+        }
+
+        writer.write("</");
+        writer.write(name);
+        //PENDING (horwat) using String as a result of Tomcat char writer
+        //         ArrayIndexOutOfBoundsException (3584)
+        writer.write(">");
+    }
+
+
+    /**
+     * <p>Write a properly escaped attribute name and the corresponding
+     * value.  The value text will be converted to a String if
+     * necessary.  This method may only be called after a call to
+     * <code>startElement()</code>, and before the opened element has been
+     * closed.</p>
+     *
+     * @param name                  Attribute name to be added
+     * @param value                 Attribute value to be added
+     * @param componentPropertyName The name of the component property to
+     *                              which this attribute argument applies.  This argument may be
+     *                              <code>null</code>.
+     * @throws IllegalStateException if this method is called when there
+     *                               is no currently open element
+     * @throws IOException           if an input/output error occurs
+     * @throws NullPointerException  if <code>name</code> or
+     *                               <code>value</code> is <code>null</code>
+     */
+    public void writeAttribute(String name, Object value, String componentPropertyName)
+        throws IOException {
+        if (name == null) {
+            throw new NullPointerException(MessageUtils.getExceptionMessageString(
+                MessageUtils.NULL_PARAMETERS_ERROR_MESSAGE_ID, "name"));
+        }
+        if (value == null) {
+            throw new NullPointerException(MessageUtils.getExceptionMessageString(
+                MessageUtils.NULL_PARAMETERS_ERROR_MESSAGE_ID, "value"));
+        }
+
+        Class valueClass = value.getClass();
+
+        // Output Boolean values specially
+        if (valueClass == Boolean.class) {
+            if (Boolean.TRUE.equals(value)) {
+                //PENDING (horwat) using String as a result of
+                //Tomcat char writer ArrayIndexOutOfBoundsException (3584)
+                writer.write(" ");
+                writer.write(name);
+            } else {
+                // Don't write anything for "false" booleans
+            }
+        } else {
+            writer.write(" ");
+            writer.write(name);
+            writer.write("=\"");
+            
+            // write the attribute value
+            ensureTextBufferCapacity(value.toString());
+            HtmlUtils.writeAttribute(writer, true, true, buffer, value.toString(), textBuffer, true);
+            //PENDING (horwat) using String as a result of Tomcat char
+            //        writer ArrayIndexOutOfBoundsException (3584)
+            writer.write("\"");
+        }
+    }
+
+
+    /**
+     * <p>Write a properly encoded URI attribute name and the corresponding
+     * value. The value text will be converted to a String if necessary).
+     * This method may only be called after a call to
+     * <code>startElement()</code>, and before the opened element has been
+     * closed.</p>
+     *
+     * @param name                  Attribute name to be added
+     * @param value                 Attribute value to be added
+     * @param componentPropertyName The name of the component property to
+     *                              which this attribute argument applies.  This argument may be
+     *                              <code>null</code>.
+     * @throws IllegalStateException if this method is called when there
+     *                               is no currently open element
+     * @throws IOException           if an input/output error occurs
+     * @throws NullPointerException  if <code>name</code> or
+     *                               <code>value</code> is <code>null</code>
+     */
+    public void writeURIAttribute(String name, Object value,
+                                  String componentPropertyName)
+        throws IOException {
+        if (name == null) {
+            throw new NullPointerException(MessageUtils.getExceptionMessageString(
+                MessageUtils.NULL_PARAMETERS_ERROR_MESSAGE_ID, "name"));
+        }
+        if (value == null) {
+            throw new NullPointerException(MessageUtils.getExceptionMessageString(
+                MessageUtils.NULL_PARAMETERS_ERROR_MESSAGE_ID, "value"));
+        }
+
+        //PENDING (horwat) using String as a result of Tomcat char writer
+        //         ArrayIndexOutOfBoundsException (3584)
+        writer.write(" ");
+        writer.write(name);
+        writer.write("=\"");
+
+        String stringValue = value.toString();
+        ensureTextBufferCapacity(stringValue);
+        // Javascript URLs should not be URL-encoded
+        if (stringValue.startsWith("javascript:")) {
+            HtmlUtils.writeAttribute(writer, true, true, buffer, stringValue, textBuffer, true);
+        } else {
+            HtmlUtils.writeURL(writer, stringValue, textBuffer, encoding);
+        }
+        
+        //PENDING (horwat) using String as a result of Tomcat char writer
+        //         ArrayIndexOutOfBoundsException (3584)
+        writer.write("\"");
+    }
+
+
+    /**
+     * <p>Write a comment string containing the specified text.
+     * The text will be converted to a String if necessary.
+     * If there is an open element that has been created by a call
+     * to <code>startElement()</code>, that element will be closed
+     * first.</p>
+     *
+     * @param comment Text content of the comment
+     * @throws IOException          if an input/output error occurs
+     * @throws NullPointerException if <code>comment</code>
+     *                              is <code>null</code>
+     */
+    public void writeComment(Object comment) throws IOException {
+        if (comment == null) {
+            throw new NullPointerException(MessageUtils.getExceptionMessageString(
+                MessageUtils.NULL_PARAMETERS_ERROR_MESSAGE_ID, "comment"));
+        }
+        closeStartIfNecessary();
+        writer.write("<!-- ");
+        writer.write(comment.toString());
+        writer.write(" -->");
+    }
+
+
+    /**
+     * <p>Write a properly escaped object. The object will be converted
+     * to a String if necessary.  If there is an open element
+     * that has been created by a call to <code>startElement()</code>,
+     * that element will be closed first.</p>
+     *
+     * @param text                  Text to be written
+     * @param componentPropertyName The name of the component property to
+     *                              which this text argument applies.  This argument may be <code>null</code>.
+     * @throws IOException          if an input/output error occurs
+     * @throws NullPointerException if <code>text</code>
+     *                              is <code>null</code>
+     */
+    public void writeText(Object text, String componentPropertyName)
+        throws IOException {
+        if (text == null) {
+            throw new NullPointerException(MessageUtils.getExceptionMessageString(
+                MessageUtils.NULL_PARAMETERS_ERROR_MESSAGE_ID, "text"));
+        }
+        closeStartIfNecessary();
+        if (dontEscape) {
+            writer.write(text.toString());
+        } else {
+            ensureTextBufferCapacity(text.toString());
+            HtmlUtils.writeText(writer, true, true, buffer, text.toString(), textBuffer);
+        }
+    }
+
+
+    /**
+     * <p>Write a properly escaped single character, If there
+     * is an open element that has been created by a call to
+     * <code>startElement()</code>, that element will be closed first.</p>
+     * <p/>
+     * <p>All angle bracket occurrences in the argument must be escaped
+     * using the &gt; &lt; syntax.</p>
+     *
+     * @param text Text to be written
+     * @throws IOException if an input/output error occurs
+     */
+    public void writeText(char text) throws IOException {
+        closeStartIfNecessary();
+        if (dontEscape) {
+            writer.write(text);
+        } else {
+            charHolder[0] = text;
+            HtmlUtils.writeText(writer, true, true, buffer, charHolder);
+        }
+    }
+
+
+    /**
+     * <p>Write properly escaped text from a character array.
+     * The output from this command is identical to the invocation:
+     * <code>writeText(c, 0, c.length)</code>.
+     * If there is an open element that has been created by a call to
+     * <code>startElement()</code>, that element will be closed first.</p>
+     * </p>
+     * <p/>
+     * <p>All angle bracket occurrences in the argument must be escaped
+     * using the &gt; &lt; syntax.</p>
+     *
+     * @param text Text to be written
+     * @throws IOException          if an input/output error occurs
+     * @throws NullPointerException if <code>text</code>
+     *                              is <code>null</code>
+     */
+    public void writeText(char text[]) throws IOException {
+        if (text == null) {
+            throw new NullPointerException(MessageUtils.getExceptionMessageString(
+                MessageUtils.NULL_PARAMETERS_ERROR_MESSAGE_ID, "text"));
+        }
+        closeStartIfNecessary();
+        if (dontEscape) {
+            writer.write(text);
+        } else {
+            HtmlUtils.writeText(writer, true, true, buffer, text);
+        }
+    }
+
+
+    /**
+     * <p>Write properly escaped text from a character array.
+     * If there is an open element that has been created by a call
+     * to <code>startElement()</code>, that element will be closed
+     * first.</p>
+     * <p/>
+     * <p>All angle bracket occurrences in the argument must be escaped
+     * using the &gt; &lt; syntax.</p>
+     *
+     * @param text Text to be written
+     * @param off  Starting offset (zero-relative)
+     * @param len  Number of characters to be written
+     * @throws IndexOutOfBoundsException if the calculated starting or
+     *                                   ending position is outside the bounds of the character array
+     * @throws IOException               if an input/output error occurs
+     * @throws NullPointerException      if <code>text</code>
+     *                                   is <code>null</code>
+     */
+    public void writeText(char text[], int off, int len)
+        throws IOException {
+        if (text == null) {
+            throw new NullPointerException(MessageUtils.getExceptionMessageString(
+                MessageUtils.NULL_PARAMETERS_ERROR_MESSAGE_ID, "text"));
+        }
+        if (off < 0 || off > text.length || len < 0 || len > text.length) {
+            throw new IndexOutOfBoundsException();
+        }
+        closeStartIfNecessary();
+        if (dontEscape) {
+            writer.write(text, off, len);
+        } else {
+            HtmlUtils.writeText(writer, true, true, buffer, text, off, len);
+        }
+    }
+
+
+    // PENDING - Do we need to implement these for this test?
+    public void startCDATA() {
+        throw new IllegalStateException();
+    }
+    public void endCDATA() {
+        throw new IllegalStateException();
+    }
+
+    /**
+     * <p>Create a new instance of this <code>ResponseWriter</code> using
+     * a different <code>Writer</code>.
+     *
+     * @param writer The <code>Writer</code> that will be used to create
+     *               another <code>ResponseWriter</code>.
+     */
+    public ResponseWriter cloneWithWriter(Writer writer) {
+        try {
+            return new CustomResponseWriter(writer, getContentType(),
+                                          getCharacterEncoding());
+        } catch (FacesException e) {
+            // This should never happen
+            throw new IllegalStateException();
+        }
+    }
+
+
+    /**
+     * This method automatically closes a previous element (if not
+     * already closed).
+     */
+    private void closeStartIfNecessary() throws IOException {
+        if (closeStart) {
+            //PENDING (horwat) using String as a result of Tomcat char 
+            //         writer ArrayIndexOutOfBoundsException (3584)
+            writer.write(">");
+            closeStart = false;
+        }
+    }
+
+
+    /**
+     * Methods From <code>java.io.Writer</code>
+     */
+
+    public void close() throws IOException {
+        closeStartIfNecessary();
+        writer.close();
+    }
+
+
+    public void write(char cbuf) throws IOException {
+        closeStartIfNecessary();
+        writer.write(cbuf);
+    }
+
+
+    public void write(char[] cbuf, int off, int len) throws IOException {
+        closeStartIfNecessary();
+        writer.write(cbuf, off, len);
+    }
+
+
+    public void write(int c) throws IOException {
+        closeStartIfNecessary();
+        writer.write(c);
+    }
+
+
+    public void write(String str) throws IOException {
+        closeStartIfNecessary();
+        writer.write(str);
+    }
+
+
+    public void write(String str, int off, int len) throws IOException {
+        closeStartIfNecessary();
+        writer.write(str, off, len);
+    }
+
+    private void ensureTextBufferCapacity(String source) {
+        int len = source.length();
+        if (textBuffer.length < len) {
+            textBuffer = new char[len * 2];
+        }
+    }
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/systest/render/FormRenderer.java b/test/servlet30/systest/src/main/java/com/sun/faces/systest/render/FormRenderer.java
new file mode 100644
index 0000000..9b7f979
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/systest/render/FormRenderer.java
@@ -0,0 +1,361 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+// FormRenderer.java
+
+package com.sun.faces.systest.render;
+
+import com.sun.faces.RIConstants;
+import com.sun.faces.renderkit.Attribute;
+import com.sun.faces.renderkit.AttributeManager;
+import com.sun.faces.renderkit.RenderKitUtils;
+import com.sun.faces.util.MessageUtils;
+
+
+import javax.faces.component.NamingContainer;
+import javax.faces.component.UIComponent;
+import javax.faces.component.UIForm;
+import javax.faces.component.UINamingContainer;
+import javax.faces.context.FacesContext;
+import javax.faces.context.ResponseWriter;
+import javax.faces.render.Renderer;
+
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+
+/**
+ * <B>FormRenderer</B> is a class that renders a <code>UIForm<code> as a Form.
+ */
+
+public class FormRenderer extends Renderer {
+
+    private static final Attribute[] ATTRIBUTES =
+          AttributeManager.getAttributes(AttributeManager.Key.FORMFORM);
+
+    public static final String SCRIPT_ELEMENT = "script";
+    public static final String SCRIPT_TYPE = "type";
+    public static final String CLEAR_HIDDEN_FIELD_FN_NAME = 
+         "clearFormHiddenParams";
+    public static final String FORM_CLIENT_ID_ATTR = 
+         "com.sun.faces.FORM_CLIENT_ID_ATTR";
+
+    //
+    // Protected Constants
+    //
+    // Log instance for this class
+    //
+    // Class Variables
+    //
+
+    //
+    // Instance Variables
+    //
+
+    // Attribute Instance Variables
+
+
+    // Relationship Instance Variables
+
+    //
+    // Constructors and Initializers    
+    //
+
+    public FormRenderer() {
+        super();
+    }
+
+    //
+    // Class methods
+    //
+
+    //
+    // General Methods
+    //
+
+    //
+    // Methods From Renderer
+    //
+
+    public void decode(FacesContext context, UIComponent component) {
+        // Was our form the one that was submitted?  If so, we need to set
+        // the indicator accordingly..
+        //
+        String clientId = component.getClientId(context);
+        Map requestParameterMap = context.getExternalContext()
+            .getRequestParameterMap();
+        if (requestParameterMap.containsKey(clientId)) {
+            ((UIForm) component).setSubmitted(true);
+        } else {
+            ((UIForm) component).setSubmitted(false);
+        }
+    }
+
+
+    public void encodeBegin(FacesContext context, UIComponent component)
+        throws IOException {
+        String styleClass = null;
+
+        if (context == null) {
+            throw new NullPointerException(
+                MessageUtils.getExceptionMessageString(MessageUtils.NULL_PARAMETERS_ERROR_MESSAGE_ID, "context"));
+        }
+        if (component == null) {
+            throw new NullPointerException(
+                MessageUtils.getExceptionMessageString(MessageUtils.NULL_PARAMETERS_ERROR_MESSAGE_ID, "component"));
+        }
+        // suppress rendering if "rendered" property on the component is
+        // false.
+        if (!component.isRendered()) {
+            return;
+        }
+        ResponseWriter writer = context.getResponseWriter();
+        assert (writer != null);
+        // since method and action are rendered here they are not added
+        // to the pass through attributes in Util class.
+        writer.startElement("form", component);
+        writer.writeAttribute("id", component.getClientId(context), "clientId");
+        writer.writeAttribute("method", "post", null);
+        writer.writeAttribute("action", getActionStr(context), null);
+        if (null != (styleClass = (String)
+            component.getAttributes().get("styleClass"))) {
+            writer.writeAttribute("class", styleClass, "styleClass");
+        }
+        String acceptcharset = null;
+        if (null != (acceptcharset = (String)
+            component.getAttributes().get("acceptcharset"))) {
+            writer.writeAttribute("accept-charset", acceptcharset, 
+                    "acceptcharset");
+        }
+        
+        RenderKitUtils.renderPassThruAttributes(context,
+              writer,
+                                                component,
+                                                ATTRIBUTES);       
+        writer.writeText("\n", null);
+        
+        // store the clientId of the form in request scope. This will be used
+        // by the commandLinkRenderer and ButtonRenderer to arrive the name of
+        // the javascript function to invoke from the onclick event handler.
+        // PENDING (visvan) we need to fix this dependency between the renderers.
+        // This solution is only temporary.
+        Map requestMap =context.getExternalContext().getRequestMap();
+        requestMap.put(FORM_CLIENT_ID_ATTR, component.getClientId(context));
+    }
+
+
+    /**
+     * <p>Return the value to be rendered as the <code>action</code> attribute
+     * of the form generated for this component.</p>
+     *
+     * @param context FacesContext for the response we are creating
+     */
+    private String getActionStr(FacesContext context) {
+        String viewId = context.getViewRoot().getViewId();
+        String actionURL =
+            context.getApplication().getViewHandler().
+            getActionURL(context, viewId);
+        return (context.getExternalContext().encodeActionURL(actionURL));
+    }
+
+
+    public void encodeEnd(FacesContext context, UIComponent component)
+        throws IOException {
+        if (context == null) {
+            throw new NullPointerException(
+                MessageUtils.getExceptionMessageString(MessageUtils.NULL_PARAMETERS_ERROR_MESSAGE_ID, "context"));
+        }
+        if (component == null) {
+            throw new NullPointerException(
+                MessageUtils.getExceptionMessageString(MessageUtils.NULL_PARAMETERS_ERROR_MESSAGE_ID, "component"));
+        }
+        // suppress rendering if "rendered" property on the component is
+        // false.
+        if (!component.isRendered()) {
+            return;
+        }
+
+        context.getApplication().getViewHandler().writeState(context);
+
+        // Render the end tag for form
+        ResponseWriter writer = context.getResponseWriter();
+        assert (writer != null);
+
+        // this hidden field will be checked in the decode method to determine if
+        // this form has been submitted.
+        //
+        writer.startElement("input", component);
+        writer.writeAttribute("type", "hidden", "type");
+        writer.writeAttribute("name", component.getClientId(context),
+                              "clientId");
+        writer.writeAttribute("value", component.getClientId(context), "value");
+        writer.endElement("input");
+
+        renderNeededHiddenFields(context, component);
+        writer.endElement("form");
+        
+        Map requestMap = context.getExternalContext().getRequestMap();
+        String formClientId = (String)requestMap.put(FORM_CLIENT_ID_ATTR, null);
+    }
+
+
+    /**
+     * <p>Render any need hidden fields.</p>
+     */
+    private static void renderNeededHiddenFields(FacesContext context,
+                                                 UIComponent component)
+        throws IOException {
+
+        ResponseWriter writer = context.getResponseWriter();
+        Map map = getHiddenFieldMap(context, false);
+        if (map != null) {
+            Iterator entries = map.entrySet().iterator();
+            while (entries.hasNext()) {
+                Map.Entry entry = (Map.Entry) entries.next();
+                if (Boolean.TRUE.equals(entry.getValue())) {
+                    writer.startElement("input", component);
+                    writer.writeAttribute("type", "hidden", null);
+                    writer.writeAttribute("name", entry.getKey(), null);
+                    writer.endElement("input");
+                }
+            }
+                
+            // Clear the hidden field map
+            Map requestMap = context.getExternalContext().getRequestMap();
+            requestMap.put(HIDDEN_FIELD_KEY, null);
+        }
+        String formTarget = (String) component.getAttributes().get("target");
+        renderClearHiddenParamsJavaScript(context,
+                                          writer,
+                                          map,
+                                          formTarget,
+                                          component.getClientId(context));
+    }
+
+
+    /**
+     * <p>Remember that we will need a new hidden field.</p>
+     */
+    public static void addNeededHiddenField(FacesContext context,
+                                            String clientId) {
+        Map map = getHiddenFieldMap(context, true);
+        if (!map.containsKey(clientId)) {
+            map.put(clientId, Boolean.TRUE);
+        }
+    }
+
+
+    /**
+     * <p>Note that a hidden field has already been rendered.</p>
+     */
+    public static void addRenderedHiddenField(FacesContext context,
+                                              String clientId) {
+        Map map = getHiddenFieldMap(context, true);
+        map.put(clientId, Boolean.FALSE);
+    }
+
+
+    private static Map getHiddenFieldMap(FacesContext context,
+                                         boolean createIfNew) {
+        Map requestMap = context.getExternalContext().getRequestMap();
+        Map map = (Map) requestMap.get(HIDDEN_FIELD_KEY);
+        if (map == null) {
+            if (createIfNew) {
+                map = new HashMap();
+                requestMap.put(HIDDEN_FIELD_KEY, map);
+            }
+        }
+
+        return map;
+    }
+
+    /**
+     * Generates a JavaScript function to clear all the hidden fields
+     * associated with a form and reset the target attribute if necessary.
+     */
+    private static void renderClearHiddenParamsJavaScript(FacesContext ctx,
+                                                          ResponseWriter writer,
+                                                          Map formParams,
+                                                          String formTarget,
+                                                          String formName)
+    throws IOException {
+            
+         // clear all the hidden field parameters in the form represented by
+         // formName.
+         writer.write("\n");
+         writer.startElement(SCRIPT_ELEMENT, null);
+         writer.writeAttribute(SCRIPT_TYPE, "text/javascript", null);
+         writer.write("\n<!--");
+         writer.write("\nfunction ");
+         String functionName = (CLEAR_HIDDEN_FIELD_FN_NAME + "_" + formName.replace(UINamingContainer.getSeparatorChar(ctx), '_'));
+         writer.write(functionName);
+         writer.write("(curFormName) {");
+         writer.write("\n  var curForm = document.forms[curFormName];"); 
+         if (formParams != null) {
+            Iterator entries = formParams.entrySet().iterator();
+            // clear only the hidden fields rendered by the form.
+            while (entries.hasNext()) {
+                Map.Entry entry = (Map.Entry) entries.next();
+                if (Boolean.TRUE.equals(entry.getValue())) {
+                    writer.write("\n curForm.elements['"); 
+                    writer.write((String) entry.getKey());
+                    writer.write("'].value = null;");
+                }
+            }
+         }
+         // clear form target attribute if its present
+         if (formTarget != null && formTarget.length() > 0) {
+             writer.write("\n  curForm.target=");
+             writer.write("'");
+             writer.write(formTarget);
+             writer.write("';");
+         }
+         writer.write("\n}");
+         writer.write("\n//-->\n");
+         writer.endElement(SCRIPT_ELEMENT);
+         writer.write("\n");
+         
+     }
+
+    private static final String HIDDEN_FIELD_KEY =
+        RIConstants.FACES_PREFIX + "FormHiddenFieldMap";
+
+} // end of class FormRenderer
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/systest/render/TextRenderer.java b/test/servlet30/systest/src/main/java/com/sun/faces/systest/render/TextRenderer.java
new file mode 100644
index 0000000..69c9b31
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/systest/render/TextRenderer.java
@@ -0,0 +1,365 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+// TextRenderer.java
+
+package com.sun.faces.systest.render;
+
+import javax.faces.component.UIComponent;
+import javax.faces.component.UIInput;
+import javax.faces.component.UIOutput;
+import javax.faces.component.UIViewRoot;
+import javax.faces.component.ValueHolder;
+import javax.faces.context.FacesContext;
+import javax.faces.context.ResponseWriter;
+import javax.faces.convert.Converter;
+import javax.faces.convert.ConverterException;
+import javax.faces.render.Renderer;
+
+import java.io.IOException;
+
+import com.sun.faces.renderkit.Attribute;
+import com.sun.faces.renderkit.AttributeManager;
+import com.sun.faces.renderkit.RenderKitUtils;
+import com.sun.faces.util.MessageFactory;
+import com.sun.faces.util.MessageUtils;
+import com.sun.faces.util.Util;
+
+
+/**
+ * <B>TextRenderer</B> is a class that renders the current value of
+ * <code>UIInput<code> or <code>UIOutput<code> component as a input field or
+ * static text.
+ */
+public class TextRenderer extends Renderer {
+
+    private static final Attribute[] INPUT_ATTRIBUTES =
+              AttributeManager.getAttributes(AttributeManager.Key.INPUTTEXT);
+        private static final Attribute[] OUTPUT_ATTRIBUTES =
+              AttributeManager.getAttributes(AttributeManager.Key.OUTPUTTEXT);
+
+
+    //
+    // Protected Constants
+    //
+    // Log instance for this class
+
+    //
+    // Class Variables
+    //
+
+    //
+    // Instance Variables
+    //
+
+    // Attribute Instance Variables
+
+
+    // Relationship Instance Variables
+
+    //
+    // Constructors and Initializers
+    //
+
+    public TextRenderer() {
+        super();
+    }
+
+    //
+    // Class methods
+    //
+
+    //
+    // General Methods
+    //
+
+    //
+    // Methods From Renderer
+    //
+
+    public void encodeBegin(FacesContext context, UIComponent component)
+        throws IOException {
+        if (context == null) {
+            throw new NullPointerException(
+                MessageUtils.getExceptionMessageString(MessageUtils.NULL_PARAMETERS_ERROR_MESSAGE_ID, "context"));
+        }
+        if (component == null) {
+            throw new NullPointerException(
+                MessageUtils.getExceptionMessageString(MessageUtils.NULL_PARAMETERS_ERROR_MESSAGE_ID, "component"));
+        }
+    }
+
+    public void encodeEnd(FacesContext context, UIComponent component)
+        throws IOException {
+
+        String currentValue = null;
+        ResponseWriter writer = null;
+        String styleClass = null;
+
+        if (context == null) {
+            throw new NullPointerException(
+                MessageUtils.getExceptionMessageString(MessageUtils.NULL_PARAMETERS_ERROR_MESSAGE_ID, "context"));
+        }
+        if (component == null) {
+            throw new NullPointerException(
+                MessageUtils.getExceptionMessageString(MessageUtils.NULL_PARAMETERS_ERROR_MESSAGE_ID, "component"));
+        }
+
+
+        // suppress rendering if "rendered" property on the component is
+        // false.
+        if (!component.isRendered()) {
+            return;
+        }
+
+        writer = context.getResponseWriter();
+        assert (writer != null);
+
+        currentValue = getCurrentValue(context, component);
+        getEndTextToRender(context, component, currentValue);
+    }
+
+    protected String getCurrentValue(FacesContext context, UIComponent component) {
+
+        if (component instanceof UIInput) {
+            Object submittedValue = ((UIInput) component).getSubmittedValue();
+            if (submittedValue != null) {
+                return (String) submittedValue;
+            }
+        }
+
+        String currentValue = null;
+        Object currentObj = getValue(component);
+        if (currentObj != null) {
+            currentValue = getFormattedValue(context, component, currentObj);
+        }
+        return currentValue;
+    }
+
+    protected void getEndTextToRender(FacesContext context,
+                                      UIComponent component, String currentValue)
+        throws IOException {
+
+        ResponseWriter writer = context.getResponseWriter();
+        assert (writer != null);
+        boolean
+            shouldWriteIdAttribute = false,
+            isOutput = false;
+
+        String style = (String) component.getAttributes().get("style");
+        String styleClass = (String) component.getAttributes().get("styleClass");
+        String dir = (String) component.getAttributes().get("dir");
+        String lang = (String) component.getAttributes().get("lang");
+        String title = (String) component.getAttributes().get("title");
+        if (component instanceof UIInput) {
+            writer.startElement("input", component);
+            writeIdAttributeIfNecessary(context, writer, component);
+            writer.writeAttribute("type", "text", null);
+            writer.writeAttribute("name", (component.getClientId(context)),
+                                  "clientId");
+
+            // render default text specified
+            if (currentValue != null) {
+                writer.writeAttribute("value", currentValue, "value");
+            }
+            if (null != styleClass) {
+                writer.writeAttribute("class", styleClass, "styleClass");
+            }
+
+            // style is rendered as a passthur attribute
+            RenderKitUtils.renderPassThruAttributes(context,
+                  writer,
+                                                    component,
+                                                    INPUT_ATTRIBUTES);
+            RenderKitUtils.renderXHTMLStyleBooleanAttributes(writer, component);
+
+            writer.endElement("input");
+
+        } else if (isOutput = (component instanceof UIOutput)) {
+            if (styleClass != null
+                 || style != null
+                 || dir != null
+                 || lang != null
+                 || title != null
+                 || (shouldWriteIdAttribute = shouldWriteIdAttribute(component))) {
+                writer.startElement("span", component);
+                writeIdAttributeIfNecessary(context, writer, component);
+                if (null != styleClass) {
+                    writer.writeAttribute("class", styleClass, "styleClass");
+                }
+                // style is rendered as a passthru attribute
+                RenderKitUtils.renderPassThruAttributes(context,
+                      writer,
+                                                        component,
+                                                        OUTPUT_ATTRIBUTES);
+                RenderKitUtils.renderXHTMLStyleBooleanAttributes(writer, component);
+
+            }
+            if (currentValue != null) {
+                Object val = null;
+                boolean escape = true;
+                if (null != (val = component.getAttributes().get("escape"))) {
+                    if (val instanceof Boolean) {
+                        escape = ((Boolean) val).booleanValue();
+                    } else if (val instanceof String) {
+                        try {
+                            escape =
+                                Boolean.valueOf((String) val).booleanValue();
+                        } catch (Throwable e) {
+                        }
+                    }
+                }
+                if (escape) {
+                    writer.writeText(currentValue, "value");
+                } else {
+                    writer.write(currentValue);
+                }
+                writer.writeText(" FROM THE CUSTOM RENDERER", null);
+            }
+        }
+        if (isOutput && (styleClass != null
+                 || style != null
+                 || dir != null
+                 || lang != null
+                 || title != null
+                 || (shouldWriteIdAttribute))) {
+            writer.endElement("span");
+        }
+    }
+
+    protected Object getValue(UIComponent component) {
+        if (component instanceof ValueHolder) {
+            Object value = ((ValueHolder) component).getValue();
+            return value;
+        }
+
+        return null;
+    }
+
+    protected String getFormattedValue(FacesContext context, UIComponent component,
+                                       Object currentValue)
+        throws ConverterException {
+
+        String result = null;
+        // formatting is supported only for components that support
+        // converting value attributes.
+        if (!(component instanceof ValueHolder)) {
+            if (currentValue != null) {
+                result = currentValue.toString();
+            }
+            return result;
+        }
+
+        Converter converter = null;
+
+        // If there is a converter attribute, use it to to ask application
+        // instance for a converter with this identifer.
+
+        if (component instanceof ValueHolder) {
+            converter = ((ValueHolder) component).getConverter();
+        }
+
+        // if value is null and no converter attribute is specified, then
+        // return a zero length String.
+        if (converter == null && currentValue == null) {
+            return "";
+        }
+
+        if (converter == null) {
+            // Do not look for "by-type" converters for Strings
+            if (currentValue instanceof String) {
+                return (String) currentValue;
+            }
+
+            // if converter attribute set, try to acquire a converter
+            // using its class type.
+
+            Class converterType = currentValue.getClass();
+            converter = Util.getConverterForClass(converterType, context);
+
+            // if there is no default converter available for this identifier,
+            // assume the model type to be String.
+            if (converter == null && currentValue != null) {
+                result = currentValue.toString();
+                return result;
+            }
+        }
+
+        if (converter != null) {
+            result = converter.getAsString(context, component, currentValue);
+
+            return result;
+        } else {
+            // throw converter exception if no converter can be
+            // identified
+	    Object [] params = {
+		currentValue,
+		"null Converter"
+	    };
+
+            throw new ConverterException(MessageFactory.getMessage(
+                context, MessageUtils.CONVERSION_ERROR_MESSAGE_ID, params));
+        }
+    }
+    private boolean shouldWriteIdAttribute(UIComponent component) {
+        String id;
+        return (null != (id = component.getId()) &&
+            !id.startsWith(UIViewRoot.UNIQUE_ID_PREFIX));
+    }
+
+    private void writeIdAttributeIfNecessary(FacesContext context,
+                                               ResponseWriter writer,
+                                               UIComponent component) {
+        String id;
+        if (shouldWriteIdAttribute(component)) {
+            try {
+                writer.writeAttribute("id", component.getClientId(context),
+                                      "id");
+            } catch (IOException e) {
+            }
+        }
+    }
+
+
+    // The testcase for this class is TestRenderers_2.java
+
+} // end of class TextRenderer
+
+
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/systest/resources/Resources_en.java b/test/servlet30/systest/src/main/java/com/sun/faces/systest/resources/Resources_en.java
new file mode 100644
index 0000000..b51fbba
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/systest/resources/Resources_en.java
@@ -0,0 +1,65 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+/*
+ * %W% %G%
+ */
+
+package com.sun.faces.systest.resources;
+
+import java.util.ListResourceBundle;
+
+public class Resources_en extends ListResourceBundle {
+
+    public Resources_en() {
+    }
+
+
+    /**
+     * See class description.
+     */
+    protected Object[][] getContents() {
+        return new Object[][]{
+            {"button_key", "RES-BUNDLE KEY"},
+            {"image_key", "resbundle_image.gif"},
+            {"hyperlink_key", "RES-BUNDLE LINK"}
+        };
+    }
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/systest/state/CaptureIsSavingStateValueBean.java b/test/servlet30/systest/src/main/java/com/sun/faces/systest/state/CaptureIsSavingStateValueBean.java
new file mode 100644
index 0000000..f4f4a92
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/systest/state/CaptureIsSavingStateValueBean.java
@@ -0,0 +1,88 @@
+
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.state;
+
+import java.util.Map;
+import javax.faces.application.StateManager;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.RequestScoped;
+import javax.faces.context.FacesContext;
+import javax.faces.event.PhaseEvent;
+import javax.faces.event.PhaseId;
+import static javax.faces.application.StateManager.IS_SAVING_STATE;
+
+ at ManagedBean
+ at RequestScoped
+public class CaptureIsSavingStateValueBean {
+
+    public String getRemoveMessagesFromSession() {
+        FacesContext context = FacesContext.getCurrentInstance();
+        Map<String, Object> sessionMap = context.getExternalContext().getSessionMap();
+        sessionMap.remove(StateManager.IS_SAVING_STATE);
+        sessionMap.remove("beforeMessage");
+        sessionMap.remove("afterMessage");
+        return "";
+    }
+
+    public void afterPhase(PhaseEvent pe) {
+        if (pe.getPhaseId() == PhaseId.RENDER_RESPONSE) {
+            FacesContext context = FacesContext.getCurrentInstance();
+            Map<Object, Object> contextAttrs = context.getAttributes();
+            Map<String, Object> sessionMap = context.getExternalContext().getSessionMap();
+            sessionMap.put("afterMessage",
+                    null == contextAttrs.get(IS_SAVING_STATE) ? "no value" :
+                        contextAttrs.get(IS_SAVING_STATE));
+        }
+    }
+
+    public void beforePhase(PhaseEvent pe) {
+        if (pe.getPhaseId() == PhaseId.RENDER_RESPONSE) {
+            FacesContext context = FacesContext.getCurrentInstance();
+            Map<Object, Object> contextAttrs = context.getAttributes();
+            Map<String, Object> sessionMap = context.getExternalContext().getSessionMap();
+            sessionMap.put("beforeMessage",
+                    null == contextAttrs.get(IS_SAVING_STATE) ? "no value" :
+                        contextAttrs.get(IS_SAVING_STATE));
+        }
+    }
+
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/systest/state/CaptureIsSavingStateValueComponent.java b/test/servlet30/systest/src/main/java/com/sun/faces/systest/state/CaptureIsSavingStateValueComponent.java
new file mode 100644
index 0000000..f2f54ed
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/systest/state/CaptureIsSavingStateValueComponent.java
@@ -0,0 +1,67 @@
+
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.state;
+
+import java.util.Map;
+import javax.faces.component.FacesComponent;
+import javax.faces.component.UINamingContainer;
+import javax.faces.context.FacesContext;
+import static javax.faces.application.StateManager.IS_SAVING_STATE;
+
+
+ at FacesComponent("captureIsSavingStateValueComponent")
+public class CaptureIsSavingStateValueComponent extends UINamingContainer {
+
+    @Override
+    public Object saveState(FacesContext context) {
+        Object result = super.saveState(context);
+
+        Map<Object, Object> contextAttrs = context.getAttributes();
+        Map<String, Object> sessionMap = context.getExternalContext().getSessionMap();
+        sessionMap.put(IS_SAVING_STATE, contextAttrs.get(IS_SAVING_STATE));
+        
+        return result;
+    }
+
+    
+
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/systest/state/DynamicStateBean.java b/test/servlet30/systest/src/main/java/com/sun/faces/systest/state/DynamicStateBean.java
new file mode 100644
index 0000000..320fe02
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/systest/state/DynamicStateBean.java
@@ -0,0 +1,159 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.state;
+
+import javax.faces.FacesException;
+import javax.faces.application.FacesMessage;
+import javax.faces.component.UIComponent;
+import javax.faces.component.UIComponentBase;
+import javax.faces.component.UINamingContainer;
+import javax.faces.component.html.HtmlCommandButton;
+import javax.faces.component.html.HtmlOutputText;
+import javax.faces.component.html.HtmlPanelGroup;
+import javax.faces.context.FacesContext;
+import javax.faces.event.ActionEvent;
+import javax.faces.event.ComponentSystemEvent;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.RequestScoped;
+import javax.faces.validator.ValidatorException;
+
+ at ManagedBean
+ at RequestScoped
+public class DynamicStateBean {
+    
+    public void validateDeletion(FacesContext context, UIComponent comp, Object val) {
+        // The button should not be here on postback
+        UIComponent button = findButton(context);
+        if (null != button) {
+            throw new ValidatorException(new FacesMessage("cbutton should not be found"));
+        }
+        
+    }
+    
+    public void validateAddition(FacesContext context, UIComponent comp, Object val) {
+        // The button should not be here on postback
+        UIComponent button = findButton(context);
+        if (null == button) {
+            throw new ValidatorException(new FacesMessage("cbutton should be found"));
+        }
+        
+    }
+    public void beforeRenderDeletion(ComponentSystemEvent event) {
+        FacesContext context = FacesContext.getCurrentInstance();
+        
+        UIComponent 
+                buttonParent = null, 
+                button = findButton(context);
+        if (null != button) {
+            buttonParent = button.getParent();
+            buttonParent.getChildren().remove(button);
+        }
+    }
+
+    public void beforeRenderAddition(ComponentSystemEvent event) {
+        FacesContext context = FacesContext.getCurrentInstance();
+        
+        UIComponent
+                form = findForm(context);
+        HtmlCommandButton button;
+        if (null == (button = (HtmlCommandButton) findButton(context))) {
+            button = new HtmlCommandButton();
+            button.setId("cbutton");
+            button.setValue("added button");
+            form.getChildren().add(button);
+        }
+    }
+
+
+    public void transientRoot(ActionEvent ae) {
+       
+        UIComponent button = ae.getComponent();
+        UIComponent addto = button.findComponent("addto");
+
+        HtmlPanelGroup transientRoot = new HtmlPanelGroup();
+        transientRoot.setTransient(true);
+        transientRoot.setId("troot");
+        StateComponent text = new StateComponent();
+        text.setValue("transient parent");
+        text.setId("text");
+        HtmlPanelGroup group = new HtmlPanelGroup();
+        group.setId("group");
+        StateComponent text2 = new StateComponent();
+        text2.setValue(" test");
+        text2.setId("text2");
+        group.getChildren().add(text2);
+        transientRoot.getChildren().add(text);
+        transientRoot.getChildren().add(group);
+        addto.getChildren().add(transientRoot);
+
+    }
+
+
+    
+    
+    private UIComponent findButton(FacesContext context) {
+        char sep = UINamingContainer.getSeparatorChar(context);
+        UIComponent result = null;
+                result = context.getViewRoot().findComponent(sep + "form" + 
+                sep + "cbutton");
+        return result;
+    }
+
+    private UIComponent findForm(FacesContext context) {
+        char sep = UINamingContainer.getSeparatorChar(context);
+        UIComponent result = null;
+                result = context.getViewRoot().findComponent(sep + "form");
+        return result;
+    }
+
+
+    public static class StateComponent extends HtmlOutputText {
+
+
+        @Override public Object saveState(FacesContext context) {
+
+            throw new FacesException("saveState(FacesContext) was incorrectly called for component with client ID: "
+                                     + this.getClientId(context));
+        }
+
+    }
+    
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/systest/state/DynamicStateBean2.java b/test/servlet30/systest/src/main/java/com/sun/faces/systest/state/DynamicStateBean2.java
new file mode 100644
index 0000000..7dd9984
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/systest/state/DynamicStateBean2.java
@@ -0,0 +1,124 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.state;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.component.UIComponent;
+import javax.faces.component.html.HtmlPanelGroup;
+import javax.faces.component.html.HtmlInputText;
+import javax.faces.component.html.HtmlCommandButton;
+import javax.faces.context.FacesContext;
+
+ at ManagedBean
+public class DynamicStateBean2 {
+
+    private String value;
+
+    public DynamicStateBean2() {
+        value = "default value";
+    }
+
+    public String getValue() {
+        return value;
+    }
+
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+    public void render() {
+
+        // <h:form id="form">
+        //   <h:panelGroup id="viewPanel"/>
+        // </h:form>
+
+        UIComponent viewPanel = FacesContext
+              .getCurrentInstance()
+              .getViewRoot()
+              .findComponent("form:viewPanel");
+
+        viewPanel.getChildren().clear();
+
+        UIComponent childPanel = new HtmlPanelGroup();
+        childPanel.setId("childPanel");
+        viewPanel.getChildren().add(childPanel);
+
+        // Add a textinput to the inner most panel with a
+        // binding to the the value property of this bean.
+        //  ...
+        //  <h:panelGroup id="viewPanel">
+        //      <h:panelGroup id="childPanel"/>
+        //        <h:textInput value="#{render.value}"/>
+        //      </h:panelGroup>
+        //  </h:panelGroup>
+        //  ...
+
+        UIComponent textInput = new HtmlInputText();
+        textInput.setId("textInput");
+        textInput.setValueExpression("value", FacesContext.getCurrentInstance()
+              .getApplication().getExpressionFactory().createValueExpression(
+              FacesContext.getCurrentInstance().getELContext(),
+              "#{dynamicStateBean2.value}", Object.class));
+
+        childPanel.getChildren().add(textInput);
+    }
+
+    public void render2() {
+
+        FacesContext ctx = FacesContext.getCurrentInstance();
+        UIComponent viewPanel = ctx.getViewRoot().findComponent("form:viewPanel");
+
+        viewPanel.getChildren().clear();
+
+        HtmlCommandButton btn = (HtmlCommandButton)
+              ctx.getApplication().createComponent(HtmlCommandButton.COMPONENT_TYPE);
+        btn.setValue("dynamically added button");
+
+        // Using a non-generated identifier will not cause
+        // the exception to be thrown.
+
+        //btn.setId("btn");
+
+        viewPanel.getChildren().add(btn);
+
+    }
+    
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/systest/viewparameters/NewsIndex.java b/test/servlet30/systest/src/main/java/com/sun/faces/systest/viewparameters/NewsIndex.java
new file mode 100644
index 0000000..04b6a69
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/systest/viewparameters/NewsIndex.java
@@ -0,0 +1,78 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.viewparameters;
+
+import java.util.Map;
+import java.util.TreeMap;
+import java.util.concurrent.atomic.AtomicLong;
+import javax.annotation.PostConstruct;
+import javax.faces.bean.ApplicationScoped;
+import javax.faces.bean.ManagedBean;
+
+
+ at ApplicationScoped @ManagedBean(eager = true)
+public class NewsIndex {
+
+    private AtomicLong sequenceGenerator;
+    private Map<Long, NewsStory> entries;
+
+    @PostConstruct
+    public void postContruct() {
+        sequenceGenerator = new AtomicLong();
+        entries = new TreeMap<Long, NewsStory>();
+
+        entries.put(sequenceGenerator.incrementAndGet(), new NewsStory(sequenceGenerator.get(), "Story 1 Headline: Glassfish V3 released", "Story 1 Content: After much anticipation, Glassfish V3 has finally been released. And it's a really great piece of engineering."));
+        entries.put(sequenceGenerator.incrementAndGet(), new NewsStory(sequenceGenerator.get(), "Story 2 Headline: ICEfaces evolves integration with NetBeans IDE and GlassFish", "Story 2 Content: The most recent release of ICEfaces (v1.7.2SP1) enhances the migration of existing Project Woodstock applications to ICEfaces. With the latest ICEfaces NetBeans plugin, it's now possible to add the ICEfaces framework to an existing Woodstock project, and begin to develop ICEfaces pages along sid [...]
+    }
+
+    public Map<Long, NewsStory> getEntries() {
+        return entries;
+    }
+
+    public NewsStory getStory(Long id) {
+        if (id == null) {
+            return null;
+        }
+        
+        return entries.get(id);
+    }
+
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/systest/viewparameters/NewsReader.java b/test/servlet30/systest/src/main/java/com/sun/faces/systest/viewparameters/NewsReader.java
new file mode 100644
index 0000000..0fa0b3d
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/systest/viewparameters/NewsReader.java
@@ -0,0 +1,112 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.viewparameters;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.annotation.PostConstruct;
+import javax.faces.application.FacesMessage;
+import javax.faces.context.FacesContext;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.ManagedProperty;
+import javax.faces.bean.RequestScoped;
+
+
+ at RequestScoped @ManagedBean
+public class NewsReader {
+
+    private FacesContext facesContext;
+
+    @ManagedProperty("#{newsIndex}")
+    private NewsIndex newsIndex;
+
+    private List<NewsStory> stories;
+
+    private NewsStory selectedStory;
+
+    private Long selectedStoryId;
+
+    @PostConstruct
+    public void postConstruct() {
+        facesContext = FacesContext.getCurrentInstance();
+        stories = new ArrayList<NewsStory>(newsIndex.getEntries().values());
+    }
+
+    public void loadStory() {
+        if (!facesContext.isValidationFailed()) {
+            NewsStory story = newsIndex.getStory(selectedStoryId);
+            if (story != null) {
+                selectedStory = story;
+                return;
+            }
+
+            facesContext.addMessage(null, new FacesMessage("The headline you requested does not exist."));
+        }
+
+        //facesContext.getFlash().setKeepMessages(true); // only needed if navigation case is a redirect
+        facesContext.getApplication().getNavigationHandler().handleNavigation(facesContext, null, "/viewParameters/page01");
+        // we would like the following instead
+        // facesContext.fireNavigation("home");
+    }
+
+    public List<NewsStory> getStories() {
+        return stories;
+    }
+
+    public NewsStory getSelectedStory() {
+        return selectedStory;
+    }
+
+    public Long getSelectedStoryId() {
+        return selectedStoryId;
+    }
+
+    public void setSelectedStoryId(Long storyId) {
+        this.selectedStoryId = storyId;
+    }
+
+    // Injected Properties
+
+    public void setNewsIndex(NewsIndex newsIndex) {
+        this.newsIndex = newsIndex;
+    }
+
+}
diff --git a/test/servlet30/systest/src/main/java/com/sun/faces/systest/viewparameters/NewsStory.java b/test/servlet30/systest/src/main/java/com/sun/faces/systest/viewparameters/NewsStory.java
new file mode 100644
index 0000000..f511f4e
--- /dev/null
+++ b/test/servlet30/systest/src/main/java/com/sun/faces/systest/viewparameters/NewsStory.java
@@ -0,0 +1,68 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.viewparameters;
+
+
+public class NewsStory {
+
+    private Long id;
+    private String headline;
+    private String content;
+
+    public NewsStory(Long id, String headline, String content) {
+        this.id = id;
+        this.headline = headline;
+        this.content = content;
+    }
+
+    public Long getId() {
+        return id;
+    }
+
+    public String getContent() {
+        return content;
+    }
+    
+    public String getHeadline() {
+        return headline;
+    }
+
+}
diff --git a/test/servlet30/systest/src/main/resources/com/sun/faces/CustomMessages.properties b/test/servlet30/systest/src/main/resources/com/sun/faces/CustomMessages.properties
new file mode 100644
index 0000000..b799a56
--- /dev/null
+++ b/test/servlet30/systest/src/main/resources/com/sun/faces/CustomMessages.properties
@@ -0,0 +1,58 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
+javax.faces.validator.DoubleRangeValidator.LIMIT=Validation Error:This summary replaces the RI summary
+Custom1A=This Is Custom1A Summary
+Custom1A_detail=This Is Custom1A Detail
+Custom1B=This Is Custom1B Summary
+Custom1B_detail=This Is Custom1B Detail
+Custom1C=This Is Custom1C Summary
+Custom1C_detail=This Is Custom1C Detail
+Custom2A=This Is Custom2A Summary
+Custom2A_detail=This Is Custom2A Detail
+Custom2B=This Is Custom2B Summary
+Custom2B_detail=This Is Custom2B Detail
+Custom2C=This Is Custom2C Summary
+Custom2C_detail=This Is Custom2C Detail
+
+BigDecimalLabel=BigDecimal2
+
+
+
diff --git a/test/servlet30/systest/src/main/resources/com/sun/faces/CustomMessages_en.properties b/test/servlet30/systest/src/main/resources/com/sun/faces/CustomMessages_en.properties
new file mode 100644
index 0000000..5145869
--- /dev/null
+++ b/test/servlet30/systest/src/main/resources/com/sun/faces/CustomMessages_en.properties
@@ -0,0 +1,45 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
+Custom1B=This Is Custom1B Summary (en)
+Custom1B_detail=This Is Custom1B Detail (en)
+Custom2B=This Is Custom2B Summary (en)
+Custom2B_detail=This Is Custom2B Detail (en)
+
diff --git a/test/servlet30/systest/src/main/resources/com/sun/faces/CustomMessages_fr.properties b/test/servlet30/systest/src/main/resources/com/sun/faces/CustomMessages_fr.properties
new file mode 100644
index 0000000..2f81f48
--- /dev/null
+++ b/test/servlet30/systest/src/main/resources/com/sun/faces/CustomMessages_fr.properties
@@ -0,0 +1,45 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
+Custom1B=This Is Custom1B Summary (fr)
+Custom1B_detail=This Is Custom1B Detail (fr)
+Custom2B=This Is Custom2B Summary (fr)
+Custom2B_detail=This Is Custom2B Detail (fr)
+
diff --git a/test/servlet30/systest/src/main/resources/com/sun/faces/systest/resources/ResourceBundle01_en.properties b/test/servlet30/systest/src/main/resources/com/sun/faces/systest/resources/ResourceBundle01_en.properties
new file mode 100644
index 0000000..88c1988
--- /dev/null
+++ b/test/servlet30/systest/src/main/resources/com/sun/faces/systest/resources/ResourceBundle01_en.properties
@@ -0,0 +1,42 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
+# Sample ResourceBundle properties file
+value1=Value From ResourceBundle
diff --git a/test/servlet30/systest/src/main/resources/com/sun/faces/systest/resources/ResourceBundle03_en.properties b/test/servlet30/systest/src/main/resources/com/sun/faces/systest/resources/ResourceBundle03_en.properties
new file mode 100644
index 0000000..16750a3
--- /dev/null
+++ b/test/servlet30/systest/src/main/resources/com/sun/faces/systest/resources/ResourceBundle03_en.properties
@@ -0,0 +1,42 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
+# Sample ResourceBundle properties file
+value3=Value from ResourceBundle03
diff --git a/test/servlet30/systest/src/main/webapp/Iterator02.jsp b/test/servlet30/systest/src/main/webapp/Iterator02.jsp
new file mode 100644
index 0000000..422d96d
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/Iterator02.jsp
@@ -0,0 +1,56 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<%@ page contentType="text/html" language="java" %>
+<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
+<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
+<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %>
+
+  <br>
+  <c:forEach var="i" begin="0" end="3" varStatus="status">
+    Array[<c:out value="${i}"/>]: 
+    <h:outputText value="This component has no ID " /><br>
+  </c:forEach>
+
+
diff --git a/test/servlet30/systest/src/main/webapp/ModelSelectItemConversion.jsp b/test/servlet30/systest/src/main/webapp/ModelSelectItemConversion.jsp
new file mode 100644
index 0000000..269781f
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/ModelSelectItemConversion.jsp
@@ -0,0 +1,67 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+  <head>
+    <title>test</title>
+    <%@ taglib uri="http://java.sun.com/jsf/core"  prefix="f" %>
+    <%@ taglib uri="http://java.sun.com/jsf/html"  prefix="h" %>
+  </head>
+
+  <body>
+    <h1>test</h1>
+
+<f:view>
+    <h:form id="form">
+        <h:selectOneMenu id="test" value="#{sessionBean.specialModel}" >
+            <f:selectItems value="#{sessionBean.selectItems}"/>
+        </h:selectOneMenu>
+        <h:commandButton id="submit" value="Submit" type="submit"/>
+    </h:form>
+</f:view>
+
+    <hr>
+  </body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/ProcessSaveRestoreStateTest.jsp b/test/servlet30/systest/src/main/webapp/ProcessSaveRestoreStateTest.jsp
new file mode 100644
index 0000000..99acb23
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/ProcessSaveRestoreStateTest.jsp
@@ -0,0 +1,72 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<%@page contentType="text/html"%>
+<%@page pageEncoding="UTF-8"%>
+
+<%@taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
+<%@taglib prefix="h" uri="http://java.sun.com/jsf/html"%>
+<%@page import="javax.faces.component.*,javax.faces.context.*" %>
+
+<html>
+    <head>
+        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+        <title>ProcessSaveRestoreStateTest</title>
+    </head>
+    <body>
+    <%
+       UIComponent comp1 = new UIOutput();
+       UIComponent child11 = new UIInput();
+       child11.setTransient(true);
+       UIComponent child12 = new UIInput();
+       UIComponent child111 = new UIInput();
+       UIComponent child121 = new UIInput();
+       comp1.getChildren().add(child11); 
+       comp1.getChildren().add(child12); 
+       child11.getChildren().add(child111);
+       child12.getChildren().add(child121);
+       Object state = comp1.processSaveState(FacesContext.getCurrentInstance());
+       comp1.processRestoreState(FacesContext.getCurrentInstance(), state);
+    %>
+    PASSED
+    </body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/SelectManyConverterTest.jsp b/test/servlet30/systest/src/main/webapp/SelectManyConverterTest.jsp
new file mode 100644
index 0000000..974ee44
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/SelectManyConverterTest.jsp
@@ -0,0 +1,78 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+    <title>test</title>
+    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
+</head>
+
+<body>
+<h1>test</h1>
+
+<f:view>
+    <%-- Ensure converters are applied for List as well as Array
+         target values --%>
+    <h:form>
+        <h:selectManyListbox id="list" value="#{testListBox.listResults}"
+                             converter="#{testBeanConverter}">
+            <f:selectItems value="#{testListBox.selectItems}"/>
+        </h:selectManyListbox>
+        <h:message for="list"/>
+        <br/>
+        <h:selectManyListbox id="array" value="#{testListBox.arrayResults}"
+                             converter="#{testBeanConverter}">
+            <f:selectItems value="#{testListBox.selectItems}"/>
+        </h:selectManyListbox>
+        <h:message for="array"/>
+        <br/>
+        <h:commandButton id="submit" value="Submit"/>
+    </h:form>
+</f:view>
+
+<hr>
+</body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/TCCI_subview01.jsp b/test/servlet30/systest/src/main/webapp/TCCI_subview01.jsp
new file mode 100644
index 0000000..0142c4d
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/TCCI_subview01.jsp
@@ -0,0 +1,58 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<%@ page contentType="text/html" language="java" autoFlush="true" %>
+<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
+<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
+<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %>
+
+<p>Subview 1: Inner template text followed by
+
+<h:outputText id="innerComponent1" value="inner component 1" />
+
+</p>
+
+<p>Subview 1: Inner template 2 text followed by
+
+<h:outputText id="innerComponent2" value="inner component 2" />
+
+</p>
diff --git a/test/servlet30/systest/src/main/webapp/TCCI_subview02.jsp b/test/servlet30/systest/src/main/webapp/TCCI_subview02.jsp
new file mode 100644
index 0000000..faa417d
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/TCCI_subview02.jsp
@@ -0,0 +1,54 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<%@ page contentType="text/html" language="java" %>
+<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
+<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
+<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %>
+
+<f:subview id="innerSubView">
+
+<p>Subview 2: Inner template text followed by
+<h:outputText id="innerComponent3" value="inner component 3" /></p>
+
+
+</f:subview>
diff --git a/test/servlet30/systest/src/main/webapp/TCCI_subview03.jsp b/test/servlet30/systest/src/main/webapp/TCCI_subview03.jsp
new file mode 100644
index 0000000..ed4774e
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/TCCI_subview03.jsp
@@ -0,0 +1,54 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<%@ page contentType="text/html" language="java" %>
+<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
+<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
+<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %>
+
+<f:subview id="innerSubView2">
+
+<p>Subview 2: Inner template text followed by
+<h:outputText id="innerComponent4" value="inner component 4" /></p>
+
+
+</f:subview>
diff --git a/test/servlet30/systest/src/main/webapp/TCCI_subview04.jsp b/test/servlet30/systest/src/main/webapp/TCCI_subview04.jsp
new file mode 100644
index 0000000..4025b6f
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/TCCI_subview04.jsp
@@ -0,0 +1,58 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<%@ page contentType="text/html" language="java" autoFlush="true" %>
+<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
+<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
+<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %>
+
+<p>Subview 4: Inner template text followed by
+
+<h:outputText id="innerComponent5" value="inner component 5" />
+
+</p>
+
+<p>Subview 4: Inner template 2 text followed by
+
+<h:outputText id="innerComponent6" value="inner component 6" />
+
+</p>
diff --git a/test/servlet30/systest/src/main/webapp/TCCI_subview05.jsp b/test/servlet30/systest/src/main/webapp/TCCI_subview05.jsp
new file mode 100644
index 0000000..0e3acda
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/TCCI_subview05.jsp
@@ -0,0 +1,54 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<%@ page contentType="text/html" language="java" %>
+<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
+<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
+<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %>
+
+<f:subview id="innerSubView4">
+
+<p>Subview 5: Inner template text followed by
+<h:outputText id="innerComponent7" value="inner component 7" /></p>
+
+
+</f:subview>
diff --git a/test/servlet30/systest/src/main/webapp/TCCI_subview06.jsp b/test/servlet30/systest/src/main/webapp/TCCI_subview06.jsp
new file mode 100644
index 0000000..0d8b348
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/TCCI_subview06.jsp
@@ -0,0 +1,54 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<%@ page contentType="text/html" language="java" %>
+<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
+<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
+<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %>
+
+<f:subview id="innerSubView5">
+
+<p>Subview 6: Inner template text followed by
+<h:outputText id="innerComponent8" value="inner component 8" /></p>
+
+
+</f:subview>
diff --git a/test/servlet30/systest/src/main/webapp/TestCoreValidatorFail.jsp b/test/servlet30/systest/src/main/webapp/TestCoreValidatorFail.jsp
new file mode 100755
index 0000000..774dd7f
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/TestCoreValidatorFail.jsp
@@ -0,0 +1,80 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<html>
+<title>Validator Test Page</title>
+<head>
+    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
+    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+</head>
+<body>
+
+
+<f:view>
+
+  <p>actionListener must have either a type or binding attribute.</p>
+  <h:commandButton value="submit" >
+      <f:actionListener /> 
+  </h:commandButton>
+
+  <p>valueChangeListener must have either a type or binding attribute.</p>
+  <h:inputText >
+      <f:valueChangeListener /> 
+  </h:inputText>
+
+  <p>validator must have either a validatorId or binding attribute.</p>
+  <h:inputText >
+      <f:validator />
+  </h:inputText>
+
+  <p>converter must have either a converterId or binding attribute.</p>
+  <h:inputText >
+      <f:converter />
+  </h:inputText>
+
+</f:view>
+
+</body>
+</head>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/TestCoreValidatorIfFail.jsp b/test/servlet30/systest/src/main/webapp/TestCoreValidatorIfFail.jsp
new file mode 100644
index 0000000..82c1315
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/TestCoreValidatorIfFail.jsp
@@ -0,0 +1,71 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<html>
+<title>Validator Test Page</title>
+<head>
+    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
+    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+</head>
+<body>
+
+<h1>TLV c:if without JSF id</h1>
+This page should FAIL.
+<br>
+<br>
+
+<% request.setAttribute("one", new String("one")); %>
+
+<f:view>
+
+  <c:if test="${one == 'one'}">
+    <h:outputText  value="NO ID"/>
+  </c:if>
+
+</f:view>
+
+</body>
+</head>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/TestCoreValidatorIfSucceed.jsp b/test/servlet30/systest/src/main/webapp/TestCoreValidatorIfSucceed.jsp
new file mode 100644
index 0000000..1ba2053
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/TestCoreValidatorIfSucceed.jsp
@@ -0,0 +1,71 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<html>
+<title>Validator Test Page</title>
+<head>
+    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
+    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+</head>
+<body>
+
+<h1>TLV c:if with JSF id</h1>
+This page should succeed.
+<br>
+<br>
+
+<% request.setAttribute("one", new String("one")); %>
+
+<f:view>
+
+  <c:if test="${one == 'one'}">
+    <h:outputText id="has_id" value="HAS ID"/>
+  </c:if>
+
+</f:view>
+
+</body>
+</head>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/TestCoreValidatorIteratorFail.jsp b/test/servlet30/systest/src/main/webapp/TestCoreValidatorIteratorFail.jsp
new file mode 100644
index 0000000..fa4c643
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/TestCoreValidatorIteratorFail.jsp
@@ -0,0 +1,70 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<html>
+<title>Validator Test Page</title>
+<head>
+    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
+    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+    <%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>
+</head>
+<body>
+
+<h1>TLV c:iterator without JSF id</h1>
+This page should FAIL.
+<br>
+<br>
+
+<f:view>
+
+  <c:forEach var="i" begin="0" end="3" varStatus="status">
+    Array[<c:out value="${i}"/>]: 
+    <h:outputText value="NO ID"/><br>
+  </c:forEach>
+
+</f:view>
+
+</body>
+</head>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/TestCoreValidatorIteratorSucceed.jsp b/test/servlet30/systest/src/main/webapp/TestCoreValidatorIteratorSucceed.jsp
new file mode 100644
index 0000000..eafa5b0
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/TestCoreValidatorIteratorSucceed.jsp
@@ -0,0 +1,73 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<html>
+<title>Validator Test Page</title>
+<head>
+    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
+    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+    <%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>
+</head>
+<body>
+
+<h1>TLV c:iterator with JSF id</h1>
+This page should succeed.
+<br>
+<br>
+
+<f:view>
+
+  <c:forEach begin="0" end="3"  var="i" varStatus="status">
+    <c:set var="i" scope="request" value="${i}"/>
+    <c:set var="status" scope="request" value="${status}"/>
+    <c:set var="id" scope="request" value="foo${status.index}"/>
+    Array[<c:out value="${i}"/>]: 
+    <h:outputText id="#{id}" value="#{i}"/><br>
+  </c:forEach>
+
+</f:view>
+
+</body>
+</head>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/TestCoreValidatorSucceed.jsp b/test/servlet30/systest/src/main/webapp/TestCoreValidatorSucceed.jsp
new file mode 100755
index 0000000..b5368bf
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/TestCoreValidatorSucceed.jsp
@@ -0,0 +1,80 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<html>
+<title>Validator Test Page</title>
+<head>
+    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
+    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+</head>
+<body>
+
+
+<f:view>
+
+  <p>actionListener must have either a type or binding attribute.</p>
+  <h:commandButton value="submit" >
+      <f:actionListener type="com.sun.faces.systest.TestActionListener01" /> 
+  </h:commandButton>
+
+  <p>valueChangeListener must have either a type or binding attribute.</p>
+  <h:inputText >
+      <f:valueChangeListener type="com.sun.faces.systest.TestValueChangeListener01"/>
+  </h:inputText>
+
+  <p>validator must have either a validatorId or binding attribute.</p>
+  <h:inputText >
+      <f:validator validatorId="javax.faces.DoubleRange" />
+  </h:inputText>
+
+  <p>converter must have either a converterId or binding attribute.</p>
+  <h:inputText >
+      <f:converter converterId="javax.faces.Number" />
+  </h:inputText>
+
+</f:view>
+
+</body>
+</head>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/TestElValidatorActionRefFail.jsp b/test/servlet30/systest/src/main/webapp/TestElValidatorActionRefFail.jsp
new file mode 100644
index 0000000..62f4002
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/TestElValidatorActionRefFail.jsp
@@ -0,0 +1,71 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<html>
+<title>Validator Test Page</title>
+<head>
+    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
+    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+</head>
+<body>
+
+<%
+  pageContext.setAttribute("ford", new String("harrison"), PageContext.REQUEST_SCOPE);
+%>
+
+<h1>TLV commandButton, invalid 'action' expression</h1>
+This page should Fail.
+<br>
+<br>
+
+<f:view>
+
+  <p>This command button has an invalid action expression</p>
+  <h:commandButton value="hello" action="#{ford < 1}"/>
+
+</f:view>
+
+</body>
+</head>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/TestElValidatorActionRefSucceed.jsp b/test/servlet30/systest/src/main/webapp/TestElValidatorActionRefSucceed.jsp
new file mode 100644
index 0000000..78e841b
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/TestElValidatorActionRefSucceed.jsp
@@ -0,0 +1,70 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<html>
+<title>Validator Test Page</title>
+<head>
+    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
+    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+</head>
+<body>
+
+<%
+  pageContext.setAttribute("ford", new String("harrison"), PageContext.REQUEST_SCOPE);
+%>
+
+<h1>TLV commandButton, valid 'action' expression</h1>
+This page should Succeed.
+<br>
+<br>
+
+<f:view>
+
+  <h:commandButton value="hello" action="#{ford.go}" />
+
+</f:view>
+
+</body>
+</head>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/TestElValidatorComponentFail.jsp b/test/servlet30/systest/src/main/webapp/TestElValidatorComponentFail.jsp
new file mode 100644
index 0000000..989b584
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/TestElValidatorComponentFail.jsp
@@ -0,0 +1,71 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<html>
+<title>Validator Test Page</title>
+<head>
+    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
+    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+</head>
+<body>
+
+<%
+  pageContext.setAttribute("ford", new String("harrison"), PageContext.REQUEST_SCOPE);
+%>
+
+<h1>TLV commandButton, invalid 'binding' expression</h1>
+This page should Fail.
+<br>
+<br>
+
+<f:view>
+
+  <p>This command button has an invalid component expression</p>
+  <h:commandButton value="hello" binding=".ford"/>
+
+</f:view>
+
+</body>
+</head>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/TestElValidatorComponentSucceed.jsp b/test/servlet30/systest/src/main/webapp/TestElValidatorComponentSucceed.jsp
new file mode 100644
index 0000000..445f7d4
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/TestElValidatorComponentSucceed.jsp
@@ -0,0 +1,75 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<html>
+<title>Validator Test Page</title>
+<head>
+    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
+    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+</head>
+<body>
+
+<%@ page contentType="text/html"
+%><%@ page import="javax.faces.component.UICommand"
+%>
+
+<%
+  UICommand command = new UICommand();
+  pageContext.setAttribute("ford", command, PageContext.REQUEST_SCOPE);
+%>
+
+<h1>TLV commandButton, valid 'binding' expression</h1>
+This page should Succeed.
+<br>
+<br>
+
+<f:view>
+
+  <h:commandButton value="hello" binding="#{requestScope.ford}" />
+
+</f:view>
+
+</body>
+</head>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/TestElValidatorIdFail.jsp b/test/servlet30/systest/src/main/webapp/TestElValidatorIdFail.jsp
new file mode 100644
index 0000000..c9e6cce
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/TestElValidatorIdFail.jsp
@@ -0,0 +1,71 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<html>
+<title>Validator Test Page</title>
+<head>
+    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
+    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+</head>
+<body>
+
+<%
+  pageContext.setAttribute("ford", new String("harrison"));
+%>
+
+<h1>TLV commandButton, invalid 'id' expression</h1>
+This page should Fail.
+<br>
+<br>
+
+<f:view>
+
+  <p>This command button has an invalid id expression</p>
+  <h:commandButton id="#{#{ford}}" value="hello" />
+
+</f:view>
+
+</body>
+</head>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/TestElValidatorIdSucceed.jsp b/test/servlet30/systest/src/main/webapp/TestElValidatorIdSucceed.jsp
new file mode 100644
index 0000000..85ac0f5
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/TestElValidatorIdSucceed.jsp
@@ -0,0 +1,72 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<html>
+<title>Validator Test Page</title>
+<head>
+    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
+    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+</head>
+<body>
+
+<%
+  pageContext.setAttribute("first", new String("Harrison"));
+  pageContext.setAttribute("last", new String("Ford"));
+%>
+
+<h1>TLV commandButton, valid 'id' expression</h1>
+This page should Succeed.
+<br>
+<br>
+
+<f:view>
+  <c:set var="temp" scope="request" value="${pageScope.first}${pageScope.last}"/>
+  <h:commandButton id="temp" value="indiana" />
+
+</f:view>
+
+</body>
+</head>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/TestElValidatorValueRefFail.jsp b/test/servlet30/systest/src/main/webapp/TestElValidatorValueRefFail.jsp
new file mode 100644
index 0000000..6ecad36
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/TestElValidatorValueRefFail.jsp
@@ -0,0 +1,67 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<html>
+<title>Validator Test Page</title>
+<head>
+    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
+    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+</head>
+<body>
+
+<h1>TLV commandButton, invalid 'value' expression</h1>
+This page should Fail.
+<br>
+<br>
+
+<f:view>
+
+  <p>This command button has an invalid value expression</p>
+  <h:commandButton value="hello" value="#{-3"/>
+
+</f:view>
+
+</body>
+</head>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/TestElValidatorValueRefSucceed.jsp b/test/servlet30/systest/src/main/webapp/TestElValidatorValueRefSucceed.jsp
new file mode 100644
index 0000000..c71e336
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/TestElValidatorValueRefSucceed.jsp
@@ -0,0 +1,66 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<html>
+<title>Validator Test Page</title>
+<head>
+    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
+    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+</head>
+<body>
+
+<h1>TLV commandButton, valid 'valueRef' expression</h1>
+This page should Succeed.
+<br>
+<br>
+
+<f:view>
+
+  <h:commandButton value="#{hello}" />
+
+</f:view>
+
+</body>
+</head>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/TestHtmlBasicValidatorFail.jsp b/test/servlet30/systest/src/main/webapp/TestHtmlBasicValidatorFail.jsp
new file mode 100644
index 0000000..7ebc7cd
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/TestHtmlBasicValidatorFail.jsp
@@ -0,0 +1,79 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<html>
+<title>Validator Test Page</title>
+<head>
+    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
+    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+</head>
+<body>
+
+<%
+  pageContext.setAttribute("hello", new String("hello"), PageContext.REQUEST_SCOPE);
+%>
+
+
+    <c:set scope="application" var="javax.faces.VALIDATE_EMPTY_FIELDS"
+           value="false" />
+
+
+<h1>TLV commandButton, no lable or key</h1>
+This page should FAIL.
+<br>
+<br>
+
+<f:view>
+
+  <p>This must have either a label or key attribute.</p>
+  <h:commandButton>
+    <h:outputText value="#{hello}"/>
+  </h:commandButton>
+
+</f:view>
+
+</body>
+</head>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/TestHtmlBasicValidatorSucceed.jsp b/test/servlet30/systest/src/main/webapp/TestHtmlBasicValidatorSucceed.jsp
new file mode 100644
index 0000000..c254725
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/TestHtmlBasicValidatorSucceed.jsp
@@ -0,0 +1,68 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<html>
+<title>Validator Test Page</title>
+<head>
+    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
+    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+</head>
+<body>
+
+<h1>TLV commandButton, no lable or key</h1>
+This page should Succeed.
+<br>
+<br>
+
+<f:view>
+
+  <h:commandButton value="hello"/>
+
+  <h:commandButton value="hello"/>
+
+</f:view>
+
+</body>
+</head>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/TestValueChangeAndActionListenerNoArg.jsp b/test/servlet30/systest/src/main/webapp/TestValueChangeAndActionListenerNoArg.jsp
new file mode 100644
index 0000000..179b4d2
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/TestValueChangeAndActionListenerNoArg.jsp
@@ -0,0 +1,83 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+  <head>
+    <title>Test that method expressions pointing to no-arg methods work for valueChangeListener and actionListener</title>
+    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
+  </head>
+
+  <body>
+    <h1>Test that method expressions pointing to no-arg methods work for valueChangeListener and actionListener</h1>
+
+
+<f:view>
+    <h:form id="form" prependId="false">
+
+      <p>
+
+         <h:inputText id="username" value="#{test1.stringProperty}" 
+                required="true"
+             valueChangeListener="#{test1.valueChange0}"/>
+
+      </p>
+
+      <p>
+
+	<h:commandButton id="loginEvent" value="Login" 
+             actionListener="#{test1.actionListener0}">
+
+	</h:commandButton>  
+
+      </p>
+
+<p>valueChange0Called: <h:outputText value="#{valueChange0Called}" /></p>
+
+<p>actionListener0Called: <h:outputText value="#{actionListener0Called}" /></p>
+
+    </h:form>
+</f:view>
+
+  </body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/TestValueChangeAndActionListenerNoArg.xhtml b/test/servlet30/systest/src/main/webapp/TestValueChangeAndActionListenerNoArg.xhtml
new file mode 100644
index 0000000..c6cdd6c
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/TestValueChangeAndActionListenerNoArg.xhtml
@@ -0,0 +1,83 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+  <h:head>
+    <title>Test that method expressions pointing to no-arg methods work for valueChangeListener and actionListener</title>
+  </h:head>
+
+  <h:body>
+    <h1>Test that method expressions pointing to no-arg methods work for valueChangeListener and actionListener</h1>
+
+
+<f:view>
+    <h:form id="form" prependId="false">
+
+      <p>
+
+         <h:inputText id="username" value="#{test1.stringProperty}" 
+                required="true"
+             valueChangeListener="#{test1.valueChange0}"/>
+
+      </p>
+
+      <p>
+
+	<h:commandButton id="loginEvent" value="Login" 
+             actionListener="#{test1.actionListener0}">
+
+	</h:commandButton>  
+
+      </p>
+
+<p>valueChange0Called: <h:outputText value="#{valueChange0Called}" /></p>
+
+<p>actionListener0Called: <h:outputText value="#{actionListener0Called}" /></p>
+
+    </h:form>
+</f:view>
+
+  </h:body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/WEB-INF/composite-behavior.taglib.xml b/test/servlet30/systest/src/main/webapp/WEB-INF/composite-behavior.taglib.xml
new file mode 100644
index 0000000..f58ccd2
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/WEB-INF/composite-behavior.taglib.xml
@@ -0,0 +1,58 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<facelet-taglib xmlns="http://java.sun.com/xml/ns/javaee"
+              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+              xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facelettaglibrary_2_0.xsd"
+              version="2.0">
+    <namespace>http://mojarra.dev.java.net/composite-behavior</namespace>
+
+    <tag>
+        <tag-name>behavior</tag-name>
+        <behavior>
+           <behavior-id>compositeBehavior</behavior-id>
+        </behavior>
+    </tag>
+
+</facelet-taglib>
+
diff --git a/test/servlet30/systest/src/main/webapp/WEB-INF/faces-config.xml b/test/servlet30/systest/src/main/webapp/WEB-INF/faces-config.xml
new file mode 100644
index 0000000..27d832c
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/WEB-INF/faces-config.xml
@@ -0,0 +1,860 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
+    version="2.0">
+
+
+  <application>
+    <message-bundle>com.sun.faces.CustomMessages</message-bundle>
+    <locale-config>
+        <default-locale>en_US</default-locale>
+    </locale-config>
+    <resource-bundle>      
+      <base-name>com.sun.faces.systest.resources.ResourceBundle01</base-name>
+      <var>resourceBundle01</var>
+      <display-name>resourceBundle01 displayName</display-name>
+    </resource-bundle>
+    <resource-bundle>      
+      <base-name>com.sun.faces.systest.resources.ResourceBundle03</base-name>
+        <var>resourceBundle03</var>
+        <display-name>resourceBundle03 displayName</display-name>
+    </resource-bundle>
+  </application>
+  
+  <lifecycle>
+      <phase-listener>com.sun.faces.annotation.AnnotatedPhaseListener</phase-listener>
+  </lifecycle>
+  
+  <factory>
+    <application-factory>com.sun.faces.systest.lifecycle.ApplicationFactoryWrapper</application-factory>
+    <faces-context-factory>com.sun.faces.systest.lifecycle.FacesContextFactoryWrapper</faces-context-factory>
+    <lifecycle-factory>com.sun.faces.systest.lifecycle.LifecycleFactoryWrapper</lifecycle-factory>
+    <render-kit-factory>com.sun.faces.systest.lifecycle.RenderKitFactoryWrapper</render-kit-factory>
+  </factory>
+    
+    <converter>
+        <converter-for-class>com.sun.faces.systest.model.SpecialBean</converter-for-class>
+        <converter-class>com.sun.faces.systest.model.SpecialConverter</converter-class>        
+    </converter>
+
+    <managed-bean>
+        <managed-bean-name>enumbean</managed-bean-name>
+        <managed-bean-class>
+            com.sun.faces.systest.model.EnumBean
+        </managed-bean-class>
+        <managed-bean-scope>request</managed-bean-scope>
+    </managed-bean>
+
+    <managed-bean>
+        <managed-bean-name>annotationTestBean</managed-bean-name>
+        <managed-bean-class>com.sun.faces.annotation.AnnotationTestBean</managed-bean-class>
+        <managed-bean-scope>request</managed-bean-scope>
+    </managed-bean>
+    
+  <managed-bean>
+    <managed-bean-name>valueChangeListenerBean</managed-bean-name>
+    <managed-bean-class>
+      com.sun.faces.systest.model.ValueChangeListenerBean
+    </managed-bean-class>
+    <managed-bean-scope>request</managed-bean-scope>
+  </managed-bean>
+
+  <managed-bean>
+    <managed-bean-name>listenerBean</managed-bean-name>
+    <managed-bean-class>
+      com.sun.faces.systest.model.ListenerBean
+    </managed-bean-class>
+    <managed-bean-scope>request</managed-bean-scope>
+  </managed-bean>
+
+  <managed-bean>
+    <managed-bean-name>csrfBean</managed-bean-name>
+    <managed-bean-class>
+      com.sun.faces.systest.model.CSRFBean
+    </managed-bean-class>
+    <managed-bean-scope>session</managed-bean-scope>
+  </managed-bean>
+
+  <managed-bean>
+    <managed-bean-name>TestValueChangeListener01</managed-bean-name>
+    <managed-bean-class>
+      com.sun.faces.systest.TestValueChangeListener01
+    </managed-bean-class>
+    <managed-bean-scope>request</managed-bean-scope>
+  </managed-bean>
+
+  <managed-bean>
+    <managed-bean-name>TestActionListener01</managed-bean-name>
+    <managed-bean-class>
+      com.sun.faces.systest.TestActionListener01
+    </managed-bean-class>
+    <managed-bean-scope>request</managed-bean-scope>
+  </managed-bean>
+
+  <managed-bean>
+    <managed-bean-name>validatorBean</managed-bean-name>
+    <managed-bean-class>
+      com.sun.faces.systest.model.ValidatorBean
+    </managed-bean-class>
+    <managed-bean-scope>request</managed-bean-scope>
+  </managed-bean>
+                                                                                
+  <managed-bean>
+    <managed-bean-name>converterBean</managed-bean-name>
+    <managed-bean-class>
+      com.sun.faces.systest.model.ConverterBean
+    </managed-bean-class>
+    <managed-bean-scope>request</managed-bean-scope>
+  </managed-bean>
+
+  <!-- Managed Bean #1, No Property Overrides -->
+  <managed-bean>
+    <managed-bean-name>test1</managed-bean-name>
+    <managed-bean-class>
+      com.sun.faces.systest.model.TestBean
+    </managed-bean-class>
+    <managed-bean-scope>request</managed-bean-scope>
+  </managed-bean>
+    
+    <managed-bean>
+        <managed-bean-name>interweaving08</managed-bean-name>
+        <managed-bean-class>
+            com.sun.faces.systest.model.InterweavingBean
+        </managed-bean-class>
+        <managed-bean-scope>session</managed-bean-scope>
+    </managed-bean>
+    
+    <managed-bean>
+        <managed-bean-name>interweaving09</managed-bean-name>
+        <managed-bean-class>
+            com.sun.faces.systest.model.InterweavingBean
+        </managed-bean-class>
+        <managed-bean-scope>session</managed-bean-scope>
+    </managed-bean>
+    
+    <managed-bean>
+        <managed-bean-name>interweaving10</managed-bean-name>
+        <managed-bean-class>
+            com.sun.faces.systest.model.InterweavingBean
+        </managed-bean-class>
+        <managed-bean-scope>session</managed-bean-scope>
+    </managed-bean>
+  
+  <managed-bean>
+    <managed-bean-name>forEachBean1</managed-bean-name>
+    <managed-bean-class>
+      com.sun.faces.systest.model.TestBean
+    </managed-bean-class>
+    <managed-bean-scope>session</managed-bean-scope>
+  </managed-bean>
+
+  <managed-bean>
+        <managed-bean-name>BooksBean</managed-bean-name>
+        <managed-bean-class>com.sun.faces.systest.model.BooksBean</managed-bean-class> 
+        <managed-bean-scope>session</managed-bean-scope>
+  </managed-bean>     
+
+  <!-- Managed Bean #2, Primitive Property Overrides -->
+  <managed-bean>
+    <managed-bean-name>test2</managed-bean-name>
+    <managed-bean-class>
+      com.sun.faces.systest.model.TestBean
+    </managed-bean-class>
+    <managed-bean-scope>request</managed-bean-scope>
+    <managed-property>
+      <property-name>booleanProperty</property-name>
+      <value>false</value>
+    </managed-property>
+    <managed-property>
+      <property-name>byteProperty</property-name>
+      <value>21</value>
+    </managed-property>
+    <managed-property>
+      <property-name>doubleProperty</property-name>
+      <value>321.54</value>
+    </managed-property>
+    <managed-property>
+      <property-name>floatProperty</property-name>
+      <value>21.43</value>
+    </managed-property>
+    <managed-property>
+      <property-name>intProperty</property-name>
+      <value>321</value>
+    </managed-property>
+    <managed-property>
+      <property-name>longProperty</property-name>
+      <value>54321</value>
+    </managed-property>
+    <managed-property>
+      <property-name>shortProperty</property-name>
+      <value>4321</value>
+    </managed-property>
+    <managed-property>
+      <property-name>stringProperty</property-name>
+      <value>New String Value</value>
+    </managed-property>
+    <managed-property>
+      <property-name>userName</property-name>
+      <value>#{usernamecomponent}</value>
+    </managed-property>
+    <managed-property>
+      <property-name>suit</property-name>
+      <value>Hearts</value>
+    </managed-property>
+    <managed-property>
+      <property-name>referencedSuit</property-name>
+      <value>#{test3.suit}</value>
+    </managed-property>    
+  </managed-bean>
+
+  <!-- Managed Bean #3, No Property Overrides -->
+  <managed-bean>
+    <managed-bean-name>test3</managed-bean-name>
+    <managed-bean-class>
+      com.sun.faces.systest.model.TestBean
+    </managed-bean-class>
+    <managed-bean-scope>session</managed-bean-scope>
+    <managed-property>
+      <property-name>suit</property-name>
+      <value>Spades</value>
+    </managed-property>
+  </managed-bean>
+
+  <managed-bean>
+    <managed-bean-name>issue13582626Bean</managed-bean-name>
+    <managed-bean-class>
+      com.sun.faces.systest.model.TestBean
+    </managed-bean-class>
+    <managed-bean-scope>request</managed-bean-scope>
+  </managed-bean>
+
+
+  <managed-bean>
+    <managed-bean-name>phaseListener</managed-bean-name>
+    <managed-bean-class>
+      com.sun.faces.systest.model.PrintEventToRequestMapPhaseListener
+    </managed-bean-class>
+    <managed-bean-scope>request</managed-bean-scope>
+    <managed-property>
+      <property-name>phaseIdString</property-name>
+      <value>ANY_PHASE</value>
+    </managed-property>
+  </managed-bean>
+
+    <managed-bean>
+        <managed-bean-name>eagerApp1</managed-bean-name>
+        <managed-bean-class>java.util.Date</managed-bean-class>
+        <managed-bean-scope>application</managed-bean-scope>
+    </managed-bean>
+
+    <managed-bean eager="true">
+        <managed-bean-name>eagerApp2</managed-bean-name>
+        <managed-bean-class>java.util.Date</managed-bean-class>
+        <managed-bean-scope>application</managed-bean-scope>
+    </managed-bean>
+
+    <managed-bean eager="false">
+        <managed-bean-name>eagerApp3</managed-bean-name>
+        <managed-bean-class>java.util.Date</managed-bean-class>
+        <managed-bean-scope>application</managed-bean-scope>
+    </managed-bean>
+
+    <managed-bean eager="true">
+        <managed-bean-name>eagerSes1</managed-bean-name>
+        <managed-bean-class>java.util.Date</managed-bean-class>
+        <managed-bean-scope>session</managed-bean-scope>
+    </managed-bean>
+
+    <managed-bean eager="true">
+        <managed-bean-name>eagerReq1</managed-bean-name>
+        <managed-bean-class>java.util.Date</managed-bean-class>
+        <managed-bean-scope>request</managed-bean-scope>
+    </managed-bean>
+
+    <managed-bean>
+        <managed-bean-name>select05</managed-bean-name>
+        <managed-bean-class>com.sun.faces.systest.model.SelectMany05Bean</managed-bean-class>
+        <managed-bean-scope>session</managed-bean-scope>
+    </managed-bean>
+
+    <managed-bean>
+        <managed-bean-name>issue1726</managed-bean-name>
+        <managed-bean-class>com.sun.faces.systest.model.SelectMany05Bean</managed-bean-class>
+        <managed-bean-scope>none</managed-bean-scope>
+    </managed-bean>
+
+    <managed-bean>
+        <managed-bean-name>issue1727</managed-bean-name>
+        <managed-bean-class>com.sun.faces.systest.model.SelectMany05Bean</managed-bean-class>
+        <managed-bean-scope>session</managed-bean-scope>
+    </managed-bean>
+
+
+    <managed-bean>
+        <managed-bean-name>select05NoSelection</managed-bean-name>
+        <managed-bean-class>com.sun.faces.systest.model.SelectMany05BeanWithNoSelectionValue</managed-bean-class>
+        <managed-bean-scope>session</managed-bean-scope>
+    </managed-bean>
+
+    <managed-bean>
+        <managed-bean-name>mojarra932Bean</managed-bean-name>
+        <managed-bean-class>com.sun.faces.systest.model.SelectItemsBean</managed-bean-class>
+        <managed-bean-scope>session</managed-bean-scope>
+    </managed-bean>
+
+
+
+   <!-- validator -->
+  <validator>
+    <description>TestValidator Description</description>
+    <validator-id>TestValidator</validator-id>
+    <validator-class>com.sun.faces.systest.TestValidator</validator-class>
+  </validator>
+
+  <validator>
+    <description>TestValidator01 Description</description>
+    <validator-id>TestValidator01</validator-id>
+    <validator-class>com.sun.faces.systest.TestValidator01</validator-class>
+  </validator>
+
+  <!-- converter -->
+  <converter>
+    <description>Test Converter</description>
+    <converter-id>TestConverter</converter-id>
+    <converter-class>com.sun.faces.systest.TestConverter</converter-class>
+  </converter>
+  
+  <converter>
+    <description>TestConverter01 Description</description>
+    <converter-id>TestConverter01</converter-id>
+    <converter-class>com.sun.faces.systest.TestConverter01</converter-class>
+  </converter>
+
+  <!-- component -->
+  <component>
+    <component-type>TestComponent</component-type>
+    <component-class>com.sun.faces.systest.TestComponent</component-class>
+  </component>
+  
+   <managed-bean>
+      <managed-bean-name>usernamecomponent</managed-bean-name>
+      <managed-bean-class>
+         javax.faces.component.UIInput
+      </managed-bean-class>
+      <managed-bean-scope>request</managed-bean-scope>
+      <managed-property>
+        <property-name>size</property-name>
+        <value>16</value>
+      </managed-property>
+      <managed-property>
+        <property-name>maxlength</property-name>
+        <value>32</value>
+      </managed-property>
+  </managed-bean>
+  
+  <!-- custom renderkit -->
+  <render-kit>
+    <render-kit-id>CUSTOM</render-kit-id>
+    <render-kit-class>com.sun.faces.systest.render.CustomRenderKitImpl</render-kit-class>
+    <renderer>
+      <component-family>javax.faces.Output</component-family>
+      <renderer-type>javax.faces.Text</renderer-type>
+      <renderer-class>com.sun.faces.systest.render.TextRenderer</renderer-class>
+    </renderer>
+    <renderer>
+      <component-family>javax.faces.Form</component-family>
+      <renderer-type>javax.faces.Form</renderer-type>
+      <renderer-class>com.sun.faces.systest.render.FormRenderer</renderer-class>
+    </renderer>
+    <renderer>
+      <component-family>javax.faces.Command</component-family>
+      <renderer-type>javax.faces.Button</renderer-type>
+      <renderer-class>com.sun.faces.systest.render.ButtonRenderer</renderer-class>
+    </renderer>
+  </render-kit>
+
+  <!-- Component that renders its own "header" and "footer" facets -->
+  <component>
+    <component-type>FacetComponent</component-type>
+    <component-class>com.sun.faces.systest.FacetComponent</component-class>
+  </component>
+
+  <!-- Component that renders its own children -->
+  <component>
+    <component-type>ChildrenComponent</component-type>
+    <component-class>com.sun.faces.systest.ChildrenComponent</component-class>
+  </component>
+
+  <!-- Component that dynamically adds and removes children -->
+  <component>
+    <component-type>DynamicComponent</component-type>
+    <component-class>com.sun.faces.systest.DynamicComponent</component-class>
+  </component>
+
+  <!-- Managed Bean for "jsp/form-input-02" tests -->
+  <managed-bean>
+    <managed-bean-name>formInput02</managed-bean-name>
+    <managed-bean-class>
+      com.sun.faces.systest.model.TestBean
+    </managed-bean-class>
+    <managed-bean-scope>request</managed-bean-scope>
+  </managed-bean>
+
+  <!-- Managed Bean for "jsp/prependId" tests -->
+  <managed-bean>
+    <managed-bean-name>prependIdBean</managed-bean-name>
+    <managed-bean-class>
+      com.sun.faces.systest.model.TestBean
+    </managed-bean-class>
+    <managed-bean-scope>request</managed-bean-scope>
+    <managed-property>
+      <property-name>booleanProperty</property-name>
+      <value>true</value>
+    </managed-property>
+    <managed-property>
+      <property-name>booleanProperty2</property-name>
+      <value>false</value>
+    </managed-property>
+  </managed-bean>
+
+
+  <!-- Managed Bean for "jsp/jstl-foreach-XX" tests -->
+  <managed-bean>
+    <managed-bean-name>forEachBean</managed-bean-name>
+    <managed-bean-class>
+      com.sun.faces.systest.model.ForEachBean
+    </managed-bean-class>
+    <managed-bean-scope>request</managed-bean-scope>
+  </managed-bean>
+
+  <!-- Test Managed bean cyclic references -->
+  <managed-bean>
+    <managed-bean-name>
+        cyclic1
+    </managed-bean-name>
+    <managed-bean-class>
+        com.sun.faces.systest.model.TestBean
+    </managed-bean-class>
+    <managed-bean-scope>
+        request
+    </managed-bean-scope>
+   
+    <managed-property>
+        <property-name>bean</property-name>
+        <value>#{cyclic2}</value>
+    </managed-property>
+  </managed-bean>
+   
+  <managed-bean>
+    <managed-bean-name>
+        cyclic2
+    </managed-bean-name>
+    <managed-bean-class>
+        com.sun.faces.systest.model.TestBean
+    </managed-bean-class>
+    <managed-bean-scope>
+        request
+    </managed-bean-scope>
+   
+    <managed-property>
+        <property-name>bean</property-name>
+        <value>#{cyclic3}</value>
+    </managed-property> 
+  </managed-bean>
+  
+  <managed-bean>
+    <managed-bean-name>
+        cyclic3
+    </managed-bean-name>
+    <managed-bean-class>
+        com.sun.faces.systest.model.TestBean
+    </managed-bean-class>
+    <managed-bean-scope>
+        request
+    </managed-bean-scope>
+   
+    <managed-property>
+        <property-name>bean</property-name>
+        <value>#{cyclic1}</value>
+    </managed-property> 
+  </managed-bean>
+  
+  <!-- for the methodref tests -->
+  <managed-bean>
+    <managed-bean-name>methodRef</managed-bean-name>
+    <managed-bean-class>
+      com.sun.faces.systest.model.MethodRef
+    </managed-bean-class>
+    <managed-bean-scope>session</managed-bean-scope>
+  </managed-bean>
+
+  <managed-bean>
+    <description>This bean refers to a request scoped bean: should cause exception.</description>
+    <managed-bean-name>test4</managed-bean-name>
+    <managed-bean-class>
+      com.sun.faces.systest.model.TestBean
+    </managed-bean-class>
+    <managed-bean-scope>session</managed-bean-scope>
+    <managed-property>
+      <property-name>stringProperty</property-name>
+      <value>#{test1.stringProperty}</value>
+    </managed-property>
+  </managed-bean>
+
+  <managed-bean>
+    <description>immediate01</description>
+    <managed-bean-name>immediateBean</managed-bean-name>
+    <managed-bean-class>
+      com.sun.faces.systest.model.TestBean
+    </managed-bean-class>
+    <managed-bean-scope>session</managed-bean-scope>
+    <managed-property>
+      <property-name>stringProperty</property-name>
+      <null-value />
+    </managed-property>
+  </managed-bean>
+
+  <managed-bean>
+    <managed-bean-name>propertyOrder</managed-bean-name>
+    <managed-bean-class>
+      com.sun.faces.systest.model.PropertyOrderBean
+    </managed-bean-class>
+    <managed-bean-scope>none</managed-bean-scope>
+    <managed-property>
+      <property-name>one</property-name>
+      <value>one</value>
+    </managed-property>
+    <managed-property>
+      <property-name>two</property-name>
+      <value>two</value>
+    </managed-property>
+    <managed-property>
+      <property-name>three</property-name>
+      <value>three</value>
+    </managed-property>
+    <managed-property>
+      <property-name>four</property-name>
+      <value>four</value>
+    </managed-property>
+    <managed-property>
+      <property-name>listProperty</property-name>
+      <list-entries>
+        <value>five</value>
+        <value>six</value>
+        <value>seven</value>
+        <value>eight</value>
+      </list-entries>
+    </managed-property>
+  </managed-bean>
+
+  <managed-bean>
+    <managed-bean-name>duplicateIds04</managed-bean-name>
+    <managed-bean-class>
+      com.sun.faces.systest.DuplicateIds04
+    </managed-bean-class>
+    <managed-bean-scope>session</managed-bean-scope>
+  </managed-bean>
+  
+  <managed-bean>
+    <managed-bean-name>resourceInjectionBean</managed-bean-name>
+    <managed-bean-class>
+      com.sun.faces.systest.model.ResourceInjectionBean
+    </managed-bean-class>
+    <managed-bean-scope>session</managed-bean-scope>
+  </managed-bean>
+
+  <managed-bean>
+    <managed-bean-name>resourceInjectionBean2</managed-bean-name>
+    <managed-bean-class>
+      com.sun.faces.systest.model.ResourceInjectionBean
+    </managed-bean-class>
+    <managed-bean-scope>view</managed-bean-scope>
+  </managed-bean>
+
+  <managed-bean>
+    <managed-bean-name>ResetUniqueRequestIdBean</managed-bean-name>
+    <managed-bean-class>
+      com.sun.faces.application.ResetUniqueRequestIdBean
+    </managed-bean-class>
+    <managed-bean-scope>request</managed-bean-scope>
+  </managed-bean>
+  
+    <managed-bean>
+    <managed-bean-name>noneBean</managed-bean-name>
+    <managed-bean-class>
+      com.sun.faces.systest.model.TestBean
+    </managed-bean-class>
+    <managed-bean-scope>none</managed-bean-scope>
+    <managed-property>
+      <property-name>stringProperty</property-name>
+      <value>noneBean</value>
+    </managed-property>
+  </managed-bean>
+  
+    <managed-bean>
+    <managed-bean-name>requestBean</managed-bean-name>
+    <managed-bean-class>
+      com.sun.faces.systest.model.TestBean
+    </managed-bean-class>
+    <managed-bean-scope>request</managed-bean-scope>
+    <managed-property>
+      <property-name>stringProperty</property-name>
+      <value>requestBean</value>
+    </managed-property>
+  </managed-bean>
+  
+  <managed-bean>
+    <managed-bean-name>sessionBean</managed-bean-name>
+    <managed-bean-class>
+      com.sun.faces.systest.model.TestBean
+    </managed-bean-class>
+    <managed-bean-scope>session</managed-bean-scope>
+    <managed-property>
+      <property-name>stringProperty</property-name>
+      <value>sessionBean</value>
+    </managed-property>
+  </managed-bean>
+  
+  <managed-bean>
+    <managed-bean-name>applicationBean</managed-bean-name>
+    <managed-bean-class>
+      com.sun.faces.systest.model.TestBean
+    </managed-bean-class>
+    <managed-bean-scope>application</managed-bean-scope>
+      <managed-property>
+      <property-name>stringProperty</property-name>
+      <value>applicationBean</value>
+    </managed-property>
+</managed-bean>  
+    
+    <managed-bean>
+       <managed-bean-name>testListBox</managed-bean-name>
+       <managed-bean-class>com.sun.faces.systest.model.TestListBox</managed-bean-class>
+       <managed-bean-scope>request</managed-bean-scope>
+     </managed-bean>
+     <managed-bean>
+       <managed-bean-name>testBeanConverter</managed-bean-name>
+       <managed-bean-class>com.sun.faces.systest.model.TestBeanConverter</managed-bean-class>
+       <managed-bean-scope>none</managed-bean-scope>
+     </managed-bean>
+
+    <managed-bean>
+        <managed-bean-name>customDataTable</managed-bean-name>
+        <managed-bean-class>com.sun.faces.systest.model.CustomDatatableBean</managed-bean-class>
+        <managed-bean-scope>request</managed-bean-scope>
+    </managed-bean>
+    
+    <managed-bean>
+        <managed-bean-name>eventTagBean</managed-bean-name>
+        <managed-bean-class>com.sun.faces.systest.model.EventTagBean</managed-bean-class>
+        <managed-bean-scope>request</managed-bean-scope>
+    </managed-bean>
+
+  <navigation-rule>
+    <from-view-id>*</from-view-id>
+    <navigation-case>
+      <description>Default rule, go back to welcome page</description> 
+      <display-name>The Generic Rule</display-name> 
+      <from-outcome>welcome</from-outcome>
+      <to-view-id>/index.html</to-view-id>
+      <redirect/>
+    </navigation-case>
+  </navigation-rule>
+    
+
+  <navigation-rule>
+    <from-view-id>/redirect.jsp</from-view-id>
+    <navigation-case>
+      <description>If the action returns "success", goto
+      redirect1.jsp</description> 
+      <display-name>The Generic Rule</display-name> 
+      <from-outcome>success</from-outcome>
+      <to-view-id>/redirect1.jsp</to-view-id>
+      <redirect/>
+    </navigation-case>
+  </navigation-rule>
+
+  <navigation-rule>
+    <from-view-id>/jsp/verbatim-test.jsp</from-view-id>
+    <navigation-case>
+      <description>If the action returns "success", goto
+      redirect1.jsp</description> 
+      <display-name>The Generic Rule</display-name> 
+      <from-outcome>success</from-outcome>
+      <to-view-id>/redirect1.jsp</to-view-id>
+    </navigation-case>
+  </navigation-rule>
+
+  <navigation-rule>
+    <from-view-id>/taglib/commandLink_multiform_test.jsp</from-view-id>
+     <navigation-case>
+       <from-outcome>redirect</from-outcome>
+       <to-view-id>/redirect1.jsp</to-view-id>
+       <redirect/>
+     </navigation-case>
+     <navigation-case>
+       <from-outcome>forward</from-outcome>
+       <to-view-id>/redirect1.jsp</to-view-id>
+     </navigation-case>
+  </navigation-rule>
+
+  <navigation-rule>
+    <from-view-id>/renderkit04.jsp</from-view-id>
+    <navigation-case>
+      <description>If the action returns "success", goto
+      renderkit05.jsp</description>
+      <display-name>The Generic Rule</display-name>
+      <from-outcome>success</from-outcome>
+      <to-view-id>/renderkit05.jsp</to-view-id>
+    </navigation-case>
+  </navigation-rule>
+  <navigation-rule>
+    <from-view-id>/renderkit05.jsp</from-view-id>
+    <navigation-case>
+      <description>If the action returns "success", goto
+      renderkit04.jsp</description>
+      <display-name>The Generic Rule</display-name>
+      <from-outcome>success</from-outcome>
+      <to-view-id>/renderkit04.jsp</to-view-id>
+    </navigation-case>
+  </navigation-rule>
+  
+  <navigation-rule>
+    <from-view-id>/enum01.jsp</from-view-id>
+    <navigation-case>
+      <description>If the action returns "Spades", goto
+      hello.jsp</description>
+      <display-name>The Generic Rule</display-name>
+      <from-outcome>Spades</from-outcome>
+      <to-view-id>/hello.jsp</to-view-id>
+    </navigation-case>
+  </navigation-rule>
+
+    <navigation-rule>
+        <from-view-id>/viewParameters/page02.xhtml</from-view-id>
+        <navigation-case>
+            <from-outcome>homeWithParams</from-outcome>
+            <to-view-id>/viewParameters/page01.xhtml</to-view-id>
+            <redirect include-view-params="true"/>
+        </navigation-case>
+        <navigation-case>
+            <from-outcome>story2WithParams</from-outcome>
+            <to-view-id>/viewParameters/page03.xhtml</to-view-id>
+            <redirect include-view-params="true"/>
+        </navigation-case>
+    </navigation-rule>
+
+    <navigation-rule>
+        <from-view-id>/viewParameters/page03.xhtml</from-view-id>
+        <navigation-case>
+            <from-outcome>homeWithParams</from-outcome>
+            <to-view-id>/viewParameters/page01.xhtml</to-view-id>
+            <redirect include-view-params="true"/>
+        </navigation-case>
+    </navigation-rule>
+
+    <navigation-rule>
+        <from-view-id>/standard/outcometarget01.xhtml</from-view-id>
+        <navigation-case>
+            <from-outcome>nav1</from-outcome>
+            <to-view-id>/standard/nav1.xhtml</to-view-id>
+        </navigation-case>
+        <navigation-case>
+            <from-outcome>nav2</from-outcome>
+            <to-view-id>/standard/nav2.xhtml</to-view-id>
+        </navigation-case>
+    </navigation-rule>
+
+    <navigation-rule>
+        <from-view-id>*</from-view-id>
+        <navigation-case>
+            <from-outcome>redirectWithParams</from-outcome>
+            <to-view-id>/standard/outcometarget01.xhtml</to-view-id>
+            <redirect>
+                <view-param>
+                    <name>id</name>
+                    <value>config</value>
+                </view-param>
+            </redirect>
+        </navigation-case>
+    </navigation-rule>
+
+     <navigation-rule>
+        <from-view-id>*</from-view-id>
+        <navigation-case>
+            <from-outcome>redirectWithAll</from-outcome>
+            <to-view-id>/standard/outcometarget01.xhtml</to-view-id>
+            <redirect include-view-params="true">
+                <view-param>
+                    <name>id</name>
+                    <value>#{'config'}</value>
+                </view-param>
+            </redirect>
+        </navigation-case>
+    </navigation-rule>
+
+<navigation-rule>
+  <from-view-id>/conditionalNav.xhtml</from-view-id>
+  <navigation-case>
+    <from-outcome>submit</from-outcome>
+    <if>#{test1.booleanProperty}</if>
+    <to-view-id>#{test1.successOutcome}</to-view-id>
+  </navigation-case>
+  <navigation-case>
+    <from-outcome>submit</from-outcome>
+    <to-view-id>#{test1.failureOutcome}</to-view-id>
+  </navigation-case>
+</navigation-rule>
+
+  <faces-config-extension>
+    <facelets-processing>
+      <file-extension>.xhtml</file-extension>
+      <process-as>xhtml</process-as>
+    </facelets-processing>
+  </faces-config-extension>
+
+
+</faces-config>
diff --git a/test/servlet30/systest/src/main/webapp/WEB-INF/formlayout.taglib.xml b/test/servlet30/systest/src/main/webapp/WEB-INF/formlayout.taglib.xml
new file mode 100644
index 0000000..8f75879
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/WEB-INF/formlayout.taglib.xml
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<facelet-taglib xmlns="http://java.sun.com/xml/ns/javaee"
+              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+              xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facelettaglibrary_2_0.xsd"
+              version="2.0">
+    <namespace>http://mojarra.dev.java.net/formlayout</namespace>
+    <tag>
+        <tag-name>layout</tag-name>
+        <source>formlayout/layout.xhtml</source>
+    </tag>
+
+</facelet-taglib>
diff --git a/test/servlet30/systest/src/main/webapp/WEB-INF/formlayout/layout.xhtml b/test/servlet30/systest/src/main/webapp/WEB-INF/formlayout/layout.xhtml
new file mode 100644
index 0000000..8c8d0a5
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/WEB-INF/formlayout/layout.xhtml
@@ -0,0 +1,58 @@
+<?xml version = "1.0" encoding = "UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+
+<ui:component>
+
+  <f:view>
+
+  	<ui:decorate template="sub/maintemplate.xhtml" />
+
+	</f:view>
+
+</ui:component>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/WEB-INF/formlayout/sub/maintemplate.xhtml b/test/servlet30/systest/src/main/webapp/WEB-INF/formlayout/sub/maintemplate.xhtml
new file mode 100644
index 0000000..e4bd7a2
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/WEB-INF/formlayout/sub/maintemplate.xhtml
@@ -0,0 +1,61 @@
+<?xml version = "1.0" encoding = "UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+
+<ui:composition>
+   <h:head>
+        <ui:insert name="title" >Default title</ui:insert>
+	 </h:head>
+    
+    <h:body>
+      <h:form>
+        <ui:insert name="content" >Default Content</ui:insert>
+      </h:form>
+    </h:body>
+    
+</ui:composition>  
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/WEB-INF/glassfish-web.xml b/test/servlet30/systest/src/main/webapp/WEB-INF/glassfish-web.xml
new file mode 100644
index 0000000..f7e4e28
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/WEB-INF/glassfish-web.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
+<glassfish-web-app error-url="">
+  <context-root>/jsf-systest</context-root>
+  <session-config>
+    <session-manager persistence-type="memory"/>
+  </session-config>
+  <resource-ref>
+    <res-ref-name>com.sun.faces.systest.model.ResourceInjectionBean/ds1</res-ref-name>
+    <jndi-name>jdbc/__default</jndi-name>
+  </resource-ref>
+  <resource-ref>
+    <res-ref-name>myDataSource2</res-ref-name>
+    <jndi-name>jdbc/__default</jndi-name>
+  </resource-ref>
+  <resource-ref>
+    <res-ref-name>jdbc/myDataSource3</res-ref-name>
+    <jndi-name>jdbc/__default</jndi-name>
+  </resource-ref>
+  <resource-ref>
+    <res-ref-name>myDataSource4</res-ref-name>
+    <jndi-name>jdbc/__default</jndi-name>
+  </resource-ref>
+  <resource-ref>
+    <res-ref-name>myDataSource5</res-ref-name>
+    <jndi-name>jdbc/__default</jndi-name>
+  </resource-ref>
+  <resource-ref>
+    <res-ref-name>jdbc/myDataSource6</res-ref-name>
+    <jndi-name>jdbc/__default</jndi-name>
+  </resource-ref>
+  <class-loader delegate="true"/>
+  <jsp-config>
+    <property name="keepgenerated" value="true">
+      <description>Keep a copy of the generated servlet class' java code.</description>
+    </property>
+  </jsp-config>
+</glassfish-web-app>
diff --git a/test/servlet30/systest/src/main/webapp/WEB-INF/groovy/com/sun/faces/groovy/GroovyBacked.groovy b/test/servlet30/systest/src/main/webapp/WEB-INF/groovy/com/sun/faces/groovy/GroovyBacked.groovy
new file mode 100644
index 0000000..54625a2
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/WEB-INF/groovy/com/sun/faces/groovy/GroovyBacked.groovy
@@ -0,0 +1,63 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.groovy;
+
+import javax.faces.component.FacesComponent;
+import javax.faces.component.UIInput;
+import javax.faces.component.NamingContainer;
+import javax.faces.component.UINamingContainer;
+
+ at FacesComponent("com.sun.faces.groovy.GroovyBacked")
+class GroovyBacked extends UIInput implements NamingContainer {
+    @Override
+    public String getFamily() {
+        return UINamingContainer.COMPONENT_FAMILY;
+    }
+
+    public String getText() {
+        String value = (String) getValue();
+        if (value != null) {
+            return value.toUpperCase();
+        } else {
+            return null;
+        }
+    }
+}
diff --git a/test/servlet30/systest/src/main/webapp/WEB-INF/groovy/com/sun/faces/groovy/SimpleBean.groovy b/test/servlet30/systest/src/main/webapp/WEB-INF/groovy/com/sun/faces/groovy/SimpleBean.groovy
new file mode 100644
index 0000000..54872cf
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/WEB-INF/groovy/com/sun/faces/groovy/SimpleBean.groovy
@@ -0,0 +1,54 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.groovy;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.RequestScoped;
+
+ at ManagedBean(name="bean")
+public class SimpleBean {
+    
+    private String message = "Hello World!";
+    
+    public String getMessage() {
+        return message;
+    }
+}
diff --git a/test/servlet30/systest/src/main/webapp/WEB-INF/i_spec_599_composite_taglib.taglib.xml b/test/servlet30/systest/src/main/webapp/WEB-INF/i_spec_599_composite_taglib.taglib.xml
new file mode 100644
index 0000000..10027a0
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/WEB-INF/i_spec_599_composite_taglib.taglib.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<facelet-taglib xmlns="http://java.sun.com/xml/ns/javaee"
+                xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+                xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facelettaglibary_2_0.xsd"
+                version="2.0">
+
+	<namespace>i_spec_599_composite_taglib</namespace>
+<!--	
+	<tag>
+              <tag-name>i_spec_599_composite_taglib</tag-name>
+              <component>
+		<resource-id>i_spec_599_composite_taglib/i_spec_599_composite_taglib.xhtml </resource-id>
+              </component>
+	</tag>
+-->
+</facelet-taglib>
diff --git a/test/servlet30/systest/src/main/webapp/WEB-INF/init-faces-config.xml b/test/servlet30/systest/src/main/webapp/WEB-INF/init-faces-config.xml
new file mode 100644
index 0000000..7646d3f
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/WEB-INF/init-faces-config.xml
@@ -0,0 +1,59 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd"
+    version="1.2">
+
+
+  <!-- Managed Bean #1, No Property Overrides -->
+  <managed-bean>
+    <managed-bean-name>mybean</managed-bean-name>
+    <managed-bean-class>
+      com.sun.faces.systest.model.TestBean
+    </managed-bean-class>
+    <managed-bean-scope>request</managed-bean-scope>
+  </managed-bean>
+
+</faces-config>
diff --git a/test/servlet30/systest/src/main/webapp/WEB-INF/source1.taglib.xml b/test/servlet30/systest/src/main/webapp/WEB-INF/source1.taglib.xml
new file mode 100644
index 0000000..f41ed85
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/WEB-INF/source1.taglib.xml
@@ -0,0 +1,93 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<facelet-taglib xmlns="http://java.sun.com/xml/ns/javaee"
+              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+              xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facelettaglibrary_2_0.xsd"
+              version="2.0">
+    <namespace>http://mojarra.dev.java.net/source1</namespace>
+    <tag>
+        <tag-name>hello</tag-name>
+        <source>tags/source.xhtml</source>
+    </tag>
+    <tag>
+        <tag-name>naming</tag-name>
+        <component>
+            <component-type>javax.faces.NamingContainer</component-type>
+        </component>
+    </tag>
+
+    <tag>
+        <tag-name>bootstrapComponent</tag-name>
+        <component>
+            <component-type>systest.BootstrapComponent</component-type>
+        </component>
+    </tag>
+
+    <tag>
+        <tag-name>timeWastingTag</tag-name>
+        <handler-class>com.sun.faces.composite.TimeWastingTagHandler</handler-class>
+    </tag>
+
+    <tag>
+        <tag-name>dynamicAdd</tag-name>
+        <component>
+            <component-type>dynamicAdd</component-type>
+        </component>
+    </tag>
+
+    <tag>
+        <tag-name>postAddTester</tag-name>
+        <component>
+            <component-type>PostAddTester</component-type>
+        </component>
+    </tag>
+
+    <tag>
+        <tag-name>testcomponent</tag-name>
+        <component>
+            <component-type>com.sun.faces.systest.dynamic1757.UITestComponent</component-type>
+        </component>
+    </tag>
+
+</facelet-taglib>
diff --git a/test/servlet30/systest/src/main/webapp/WEB-INF/sun-web.xml b/test/servlet30/systest/src/main/webapp/WEB-INF/sun-web.xml
new file mode 100644
index 0000000..a712059
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/WEB-INF/sun-web.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE sun-web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Sun ONE Application Server 8.0 Servlet 2.4//EN" "http://www.sun.com/software/sunone/appserver/dtds/sun-web-app_2_4-0.dtd">
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<sun-web-app>
+  <context-root>/jsf-systest</context-root>
+  <session-config>
+    <session-manager persistence-type="memory"/>
+  </session-config>
+  <resource-ref>
+    <res-ref-name>com.sun.faces.systest.model.ResourceInjectionBean/ds1</res-ref-name>
+    <jndi-name>jdbc/__default</jndi-name>
+  </resource-ref>
+  <resource-ref>
+    <res-ref-name>myDataSource2</res-ref-name>
+    <jndi-name>jdbc/__default</jndi-name>
+  </resource-ref>
+  <resource-ref>
+    <res-ref-name>jdbc/myDataSource3</res-ref-name>
+    <jndi-name>jdbc/__default</jndi-name>
+  </resource-ref>
+  <resource-ref>
+    <res-ref-name>myDataSource4</res-ref-name>
+    <jndi-name>jdbc/__default</jndi-name>
+  </resource-ref>
+  <resource-ref>
+    <res-ref-name>myDataSource5</res-ref-name>
+    <jndi-name>jdbc/__default</jndi-name>
+  </resource-ref>
+  <resource-ref>
+    <res-ref-name>jdbc/myDataSource6</res-ref-name>
+    <jndi-name>jdbc/__default</jndi-name>
+  </resource-ref>
+  <class-loader delegate="true"/>
+  <jsp-config/>
+</sun-web-app>
diff --git a/test/servlet30/systest/src/main/webapp/WEB-INF/taglib.tld b/test/servlet30/systest/src/main/webapp/WEB-INF/taglib.tld
new file mode 100644
index 0000000..385d7f1
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/WEB-INF/taglib.tld
@@ -0,0 +1,230 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE taglib
+  PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
+  "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
+
+
+<taglib>
+
+  <tlib-version>0.01</tlib-version>
+  <jsp-version>1.2</jsp-version>
+  <short-name>Systest Components Tag Library</short-name>
+  <uri>/WEB-INF/taglib.tld</uri>
+  <description>
+    Tag library containing component tags for the systest suite.
+  </description>
+
+  <tag>
+                                                                                                                           
+    <name>converter</name>
+    <tag-class>javax.faces.webapp.ConverterTag</tag-class>
+    <body-content>empty</body-content>
+    <description>
+      Register a named Converter instance on the UIComponent
+      associated with the closest parent UIComponent custom action.
+    </description>
+                                                                                                                           
+    <attribute>
+      <name>converterId</name>
+      <required>true</required>
+      <rtexprvalue>false</rtexprvalue>
+      <description>
+        Converter identifier of the Converter instance to be
+        created and registered.
+      </description>
+    </attribute>
+                                                                                                                           
+  </tag>
+
+  <tag>
+
+    <name>children_body</name>
+    <tag-class>com.sun.faces.systest.ChildrenComponentBodyTag</tag-class>
+
+    <attribute>
+      <name>id</name>
+      <required>false</required>
+      <rtexprvalue>false</rtexprvalue>
+    </attribute>
+
+  </tag>
+
+
+  <tag>
+
+    <name>children</name>
+    <tag-class>com.sun.faces.systest.ChildrenComponentTag</tag-class>
+
+    <attribute>
+      <name>id</name>
+      <required>false</required>
+      <rtexprvalue>false</rtexprvalue>
+    </attribute>
+
+  </tag>
+
+
+  <tag>
+
+    <name>dynamic</name>
+    <tag-class>com.sun.faces.systest.DynamicComponentTag</tag-class>
+
+    <attribute>
+      <name>id</name>
+      <required>false</required>
+      <rtexprvalue>false</rtexprvalue>
+    </attribute>
+
+  </tag>
+
+
+  <tag>
+
+    <name>facets</name>
+    <tag-class>com.sun.faces.systest.FacetComponentTag</tag-class>
+
+    <attribute>
+      <name>id</name>
+      <required>false</required>
+      <rtexprvalue>false</rtexprvalue>
+    </attribute>
+
+    <attribute>
+      <name>value</name>
+      <required>false</required>
+      <rtexprvalue>false</rtexprvalue>
+    </attribute>
+
+  </tag>
+
+
+  <tag>
+
+    <name>naming</name>
+    <tag-class>com.sun.faces.systest.NamingTag</tag-class>
+    <body-content>JSP</body-content>
+    <description>
+      Tag to introduce a UINamingContainer component.
+    </description>
+
+    <attribute>
+      <name>binding</name>
+      <required>false</required>
+      <rtexprvalue>false</rtexprvalue>
+    </attribute>
+
+    <attribute>
+      <name>id</name>
+      <required>false</required>
+      <rtexprvalue>false</rtexprvalue>
+    </attribute>
+
+    <attribute>
+      <name>rendered</name>
+      <required>false</required>
+      <rtexprvalue>false</rtexprvalue>
+    </attribute>
+
+  </tag>
+
+
+  <tag>
+      <name>output_text</name>
+      <tag-class>com.sun.faces.taglib.html_basic.Output_TextTag</tag-class>
+      <body-content>JSP</body-content>
+      <description>
+        This is a copy of the output_text tag from the html_basic.tld,
+        and is placed here in an attempt to bypass the TLV checking for
+        mandatory ids inside c:if and c:choose tags.
+      </description>
+      <attribute>
+        <name>id</name>
+        <required>false</required>
+        <rtexprvalue>false</rtexprvalue>
+      </attribute>
+    <attribute>
+      <name>rendered</name>
+      <required>false</required>
+      <rtexprvalue>false</rtexprvalue>
+    </attribute>
+    <attribute>
+      <name>converter</name>
+      <required>false</required>
+      <rtexprvalue>true</rtexprvalue>
+      <type>javax.faces.convert.Converter</type>
+    </attribute>
+    <attribute>
+      <name>value</name>
+      <required>false</required>
+      <rtexprvalue>false</rtexprvalue>
+    </attribute>
+    <attribute>
+      <name>styleClass</name>
+      <required>false</required>
+      <rtexprvalue>false</rtexprvalue>
+    </attribute>
+    <attribute>
+      <name>binding</name>
+      <required>false</required>
+      <rtexprvalue>false</rtexprvalue>
+    </attribute>
+  </tag>
+
+
+  <tag>
+
+    <name>output_verbatim</name>
+    <tag-class>com.sun.faces.systest.OutputVerbatimTag</tag-class>
+
+    <attribute>
+      <name>id</name>
+      <required>false</required>
+      <rtexprvalue>false</rtexprvalue>
+    </attribute>
+
+  </tag>
+
+
+</taglib>
diff --git a/test/servlet30/systest/src/main/webapp/WEB-INF/tags/outputLink.tag b/test/servlet30/systest/src/main/webapp/WEB-INF/tags/outputLink.tag
new file mode 100644
index 0000000..05bb66b
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/WEB-INF/tags/outputLink.tag
@@ -0,0 +1,4 @@
+<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
+<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+
+<h:outputLink value="http://java.sun.com"><f:verbatim>java.sun.com</f:verbatim></h:outputLink>
diff --git a/test/servlet30/systest/src/main/webapp/WEB-INF/tags/source.xhtml b/test/servlet30/systest/src/main/webapp/WEB-INF/tags/source.xhtml
new file mode 100644
index 0000000..bce6ed8
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/WEB-INF/tags/source.xhtml
@@ -0,0 +1,43 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<h:outputText xmlns:h="http://java.sun.com/jsf/html" style="color:red" value="Hello!"/>
diff --git a/test/servlet30/systest/src/main/webapp/WEB-INF/templates/compositeTestTemplate.xhtml b/test/servlet30/systest/src/main/webapp/WEB-INF/templates/compositeTestTemplate.xhtml
new file mode 100644
index 0000000..4ea7154
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/WEB-INF/templates/compositeTestTemplate.xhtml
@@ -0,0 +1,61 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xml:lang="en" lang="en">
+<h:head>
+    <title>${title}</title>
+</h:head>
+
+<body>
+<div id="container">
+   <span id="templateText">Template text</span>
+<ui:insert name="content"/>
+</div>
+</body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/WEB-INF/templates/templateCompTemplate.xhtml b/test/servlet30/systest/src/main/webapp/WEB-INF/templates/templateCompTemplate.xhtml
new file mode 100644
index 0000000..4ea7154
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/WEB-INF/templates/templateCompTemplate.xhtml
@@ -0,0 +1,61 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xml:lang="en" lang="en">
+<h:head>
+    <title>${title}</title>
+</h:head>
+
+<body>
+<div id="container">
+   <span id="templateText">Template text</span>
+<ui:insert name="content"/>
+</div>
+</body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/WEB-INF/templates/templateDecorateTemplate.xhtml b/test/servlet30/systest/src/main/webapp/WEB-INF/templates/templateDecorateTemplate.xhtml
new file mode 100644
index 0000000..390b3a6
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/WEB-INF/templates/templateDecorateTemplate.xhtml
@@ -0,0 +1,64 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xml:lang="en" lang="en">
+<h:head>
+    <title>Ignored</title>
+</h:head>
+
+<body>
+<div id="container">
+    <ui:composition>
+        <span id="comp">Composition Text</span>
+        <ui:insert name="insert"/>
+    </ui:composition>
+    <span id="templateText">Template text</span>
+</div>
+</body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/WEB-INF/test.jsp b/test/servlet30/systest/src/main/webapp/WEB-INF/test.jsp
new file mode 100644
index 0000000..e211ea9
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/WEB-INF/test.jsp
@@ -0,0 +1,52 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<html>
+<head>
+    <title>Shouldn't be here</title>
+</head>
+<body>
+We shouldn't have gotten here
+</body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/WEB-INF/testcomponent.taglib.xml b/test/servlet30/systest/src/main/webapp/WEB-INF/testcomponent.taglib.xml
new file mode 100644
index 0000000..11d97e2
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/WEB-INF/testcomponent.taglib.xml
@@ -0,0 +1,113 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<facelet-taglib xmlns="http://java.sun.com/xml/ns/javaee"
+              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+              xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facelettaglibrary_2_0.xsd" version="2.0">
+
+	<namespace>http://testcomponent</namespace>
+
+	<tag>
+		<tag-name>addcomponent</tag-name>
+		<component>
+			<component-type>com.sun.faces.event.UIAddComponent</component-type>
+		</component>
+	</tag>
+
+	<tag>
+		<tag-name>addcomponent1</tag-name>
+		<component>
+			<component-type>com.sun.faces.event.UIAddComponent1</component-type>
+		</component>
+	</tag>
+
+	<tag>
+		<tag-name>addcomponent2</tag-name>
+		<component>
+			<component-type>com.sun.faces.event.UIAddComponent2</component-type>
+		</component>
+	</tag>
+
+	<tag>
+		<tag-name>addcomponent3</tag-name>
+		<component>
+			<component-type>com.sun.faces.event.UIAddComponent3</component-type>
+		</component>
+	</tag>
+
+	<tag>
+		<tag-name>togglecomponent</tag-name>
+		<component>
+			<component-type>com.sun.faces.event.UIToggleComponent</component-type>
+		</component>
+	</tag>
+
+	<tag>
+		<tag-name>recursivecomponent</tag-name>
+		<component>
+			<component-type>com.sun.faces.event.UIRecursiveComponent</component-type>
+		</component>
+	</tag>
+
+	<tag>
+		<tag-name>stablecomponent</tag-name>
+		<component>
+			<component-type>com.sun.faces.event.UIStableComponent</component-type>
+		</component>
+	</tag>
+
+	<tag>
+		<tag-name>tablecomponent</tag-name>
+		<component>
+			<component-type>com.sun.faces.event.UITableComponent</component-type>
+		</component>
+	</tag>
+
+	<tag>
+		<tag-name>inputcomponent</tag-name>
+		<component>
+			<component-type>com.sun.faces.event.UIInputComponent</component-type>
+		</component>
+	</tag>
+
+</facelet-taglib>
diff --git a/test/servlet30/systest/src/main/webapp/WEB-INF/web.xml b/test/servlet30/systest/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..8231f58
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,163 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<web-app version="2.5"
+         xmlns="http://java.sun.com/xml/ns/javaee"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
+
+    <description>
+       JSF Systests
+    </description>
+    <display-name>JSF Systests</display-name>
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>${webapp.projectStage}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
+        <param-value>${webapp.partialStateSaving}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>${webapp.stateSavingMethod}</param-value>
+    </context-param>
+
+    <!-- Validate the Application Configuration Resources -->
+    <context-param>
+      <param-name>com.sun.faces.validateXml</param-name>
+      <param-value>true</param-value>
+    </context-param>
+
+    <context-param>
+      <param-name>com.sun.faces.autoCompleteOffOnViewState</param-name>
+      <param-value>false</param-value>
+    </context-param>
+
+    <context-param>
+      <param-name>com.sun.faces.allowedHttpMethods</param-name>
+      <param-value>OPTIONS GET HEAD POST PUT DELETE TRACE CONNECT GETBOGUSALLOWED</param-value>
+    </context-param>
+
+<!--    <context-param>
+        <param-name>com.sun.faces.enableThreading</param-name>
+        <param-value>true</param-value>
+    </context-param>-->
+    <context-param>
+        <param-name>com.sun.faces.generateUniqueServerStateIds</param-name>
+        <param-value>false</param-value>
+    </context-param>
+    <context-param>
+        <param-name>com.sun.faces.enableHtmlTagLibValidator</param-name>
+        <param-value>true</param-value>
+    </context-param>
+    <context-param>
+        <param-name>com.sun.faces.ENABLE_HTTP_METHOD_RESTRICTION_PHASE_LISTENER</param-name>
+        <param-value>true</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.CSRF_ALGORITHM</param-name>
+        <param-value>all</param-value>
+    </context-param>
+    <context-param>
+        <param-name>com.sun.faces.enableJSStyleHiding</param-name>
+        <param-value>true</param-value>
+    </context-param>
+    <context-param>
+        <param-name>com.sun.faces.writeStateAtFormEnd</param-name>
+        <param-value>false</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.CONFIG_FILES</param-name>
+        <param-value>/WEB-INF/init-faces-config.xml</param-value>
+    </context-param>
+
+    <context-param>
+        <param-name>com.sun.faces.externalizeJavaScript</param-name>
+        <param-value>false</param-value>
+    </context-param>
+
+    <context-param>
+        <param-name>facelets.VIEW_MAPPINGS</param-name>
+        <param-value>/resources/composite/*;*.xhtml;*.view.xml</param-value>
+    </context-param>
+
+    <context-param>
+        <param-name>javax.faces.FACELETS_LIBRARIES</param-name>
+        <param-value>/WEB-INF/testcomponent.taglib.xml;/WEB-INF/source1.taglib.xml;/WEB-INF/composite-behavior.taglib.xml;/WEB-INF/formlayout.taglib.xml;/WEB-INF/i_spec_599_composite_taglib.taglib.xml</param-value>
+    </context-param>
+
+    <jsp-config>
+        <jsp-property-group>
+            <url-pattern>*.jspx</url-pattern>
+            <is-xml>true</is-xml>
+        </jsp-property-group>
+    </jsp-config>
+
+    <!-- Faces Servlet -->
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup> 1 </load-on-startup>
+    </servlet>
+
+    <!-- Faces Servlet Mapping -->
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>*.faces</url-pattern>
+    </servlet-mapping>
+
+
+    <env-entry>
+        <env-entry-name>welcomeMessage</env-entry-name>
+        <env-entry-type>java.lang.String</env-entry-type>
+        <env-entry-value>Hello World from env-entry!</env-entry-value>
+    </env-entry>
+
+
+</web-app>
diff --git a/test/servlet30/systest/src/main/webapp/WEB-INF/web.xml.template b/test/servlet30/systest/src/main/webapp/WEB-INF/web.xml.template
new file mode 100644
index 0000000..c7cab7c
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/WEB-INF/web.xml.template
@@ -0,0 +1,164 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<web-app version="2.5"
+         xmlns="http://java.sun.com/xml/ns/javaee"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
+
+    <description>
+       JSF Systests
+    </description>
+    <display-name>JSF Systests</display-name>
+
+    <!-- Validate the Application Configuration Resources -->
+    <context-param>
+      <param-name>com.sun.faces.validateXml</param-name>
+      <param-value>true</param-value>
+    </context-param>
+
+    <context-param>
+      <param-name>com.sun.faces.autoCompleteOffOnViewState</param-name>
+      <param-value>false</param-value>
+    </context-param>
+
+    <context-param>
+      <param-name>com.sun.faces.allowedHttpMethods</param-name>
+      <param-value>OPTIONS GET HEAD POST PUT DELETE TRACE CONNECT GETBOGUSALLOWED</param-value>
+    </context-param>
+
+    <context-param>
+        <param-name>com.sun.faces.enableThreading</param-name>
+        <param-value>true</param-value>
+    </context-param>
+    <context-param>
+        <param-name>com.sun.faces.generateUniqueServerStateIds</param-name>
+        <param-value>false</param-value>
+    </context-param>
+    <context-param>
+        <param-name>com.sun.faces.enableHtmlTagLibValidator</param-name>
+        <param-value>true</param-value>
+    </context-param>
+    <context-param>
+        <param-name>com.sun.faces.ENABLE_HTTP_METHOD_RESTRICTION_PHASE_LISTENER</param-name>
+        <param-value>true</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>server</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.CSRF_ALGORITHM</param-name>
+        <param-value>all</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
+        <param-value>{partial-state-saving}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>com.sun.faces.enableJSStyleHiding</param-name>
+        <param-value>true</param-value>
+    </context-param>
+    <context-param>
+        <param-name>com.sun.faces.writeStateAtFormEnd</param-name>
+        <param-value>false</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.CONFIG_FILES</param-name>
+        <param-value>/WEB-INF/init-faces-config.xml</param-value>
+    </context-param>
+
+    <context-param>
+        <param-name>com.sun.faces.externalizeJavaScript</param-name>
+        <param-value>false</param-value>
+    </context-param>
+
+    <context-param>
+        <param-name>facelets.VIEW_MAPPINGS</param-name>
+        <param-value>/resources/composite/*;*.xhtml;*.view.xml</param-value>
+    </context-param>
+
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>Development</param-value>
+    </context-param>
+
+    <context-param>
+        <param-name>javax.faces.FACELETS_LIBRARIES</param-name>
+        <param-value>/WEB-INF/testcomponent.taglib.xml;/WEB-INF/source1.taglib.xml;/WEB-INF/composite-behavior.taglib.xml;/WEB-INF/formlayout.taglib.xml;/WEB-INF/i_spec_599_composite_taglib.taglib.xml</param-value>
+    </context-param>
+
+    <jsp-config>
+        <jsp-property-group>
+            <url-pattern>*.jspx</url-pattern>
+            <is-xml>true</is-xml>
+        </jsp-property-group>
+    </jsp-config>
+
+    <!-- Faces Servlet -->
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup> 1 </load-on-startup>
+    </servlet>
+
+    <!-- Faces Servlet Mapping -->
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>*.faces</url-pattern>
+    </servlet-mapping>
+
+
+    <env-entry>
+        <env-entry-name>welcomeMessage</env-entry-name>
+        <env-entry-type>java.lang.String</env-entry-type>
+        <env-entry-value>Hello World from env-entry!</env-entry-value>
+    </env-entry>
+
+
+</web-app>
diff --git a/test/servlet30/systest/src/main/webapp/ajax/ajaxAllKeyword1.xhtml b/test/servlet30/systest/src/main/webapp/ajax/ajaxAllKeyword1.xhtml
new file mode 100644
index 0000000..4f542a9
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/ajax/ajaxAllKeyword1.xhtml
@@ -0,0 +1,75 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+        PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+
+<h:head>
+    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
+    <title>Ajax Request</title>
+    <script type="text/javascript">
+    </script>
+</h:head>
+
+<h:body>
+
+<!-- Ajaxify Individual Controls -->
+
+    <h:form id="form1" >
+        <h:outputText id="out1" value="testtext"/>
+
+       <h:commandButton id="allKeyword"
+                        value="@all">
+           <f:ajax execute="@all"
+                   render="@all"/>
+       </h:commandButton>
+
+   </h:form>
+
+</h:body>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/ajax/ajaxAllKeyword2.xhtml b/test/servlet30/systest/src/main/webapp/ajax/ajaxAllKeyword2.xhtml
new file mode 100644
index 0000000..d8da102
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/ajax/ajaxAllKeyword2.xhtml
@@ -0,0 +1,77 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+        PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+
+<h:head>
+    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
+    <title>Ajax Request</title>
+    <script type="text/javascript">
+        var a = true;
+        var b = false;
+    </script>
+</h:head>
+
+<h:body>
+
+<!-- Ajaxify Individual Controls -->
+
+    <h:form id="form1" >
+        <h:outputText id="out1" value="testtext"/>
+
+       <h:commandButton id="allKeyword"
+                        value="@all">
+           <f:ajax execute="@all"
+                   render="@all"/>
+       </h:commandButton>
+
+   </h:form>
+
+</h:body>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/ajax/ajaxAllKeyword3.xhtml b/test/servlet30/systest/src/main/webapp/ajax/ajaxAllKeyword3.xhtml
new file mode 100644
index 0000000..9693279
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/ajax/ajaxAllKeyword3.xhtml
@@ -0,0 +1,80 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+        PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+
+<h:head>
+    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
+    <title>Ajax Request</title>
+    <script type="text/javascript">
+        // <![CDATA[
+        var a = true;
+        var b = false;
+        var c = a && b;
+        // ]]>
+    </script>
+</h:head>
+
+<h:body>
+
+<!-- Ajaxify Individual Controls -->
+
+    <h:form id="form1" >
+        <h:outputText id="out1" value="testtext"/>
+
+       <h:commandButton id="allKeyword"
+                        value="@all">
+           <f:ajax execute="@all"
+                   render="@all"/>
+       </h:commandButton>
+
+   </h:form>
+
+</h:body>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/ajax/ajaxAttrs.xhtml b/test/servlet30/systest/src/main/webapp/ajax/ajaxAttrs.xhtml
new file mode 100644
index 0000000..924e4b6
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/ajax/ajaxAttrs.xhtml
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+<h:head>
+    <title>Ajax Eval</title>
+</h:head>
+<body>
+    <h:form id="form">
+        <h:commandButton id="attr" value="Dummy" action="#{attrsBean.eval}">
+            <f:ajax execute="@this" render="@none" delay="none" />
+        </h:commandButton>
+
+        <h:commandButton id="attrImplicitDelay" value="Dummy Implicit Delay" action="#{attrsBean.eval}">
+            <f:ajax execute="@this" render="@none" />
+        </h:commandButton>
+
+        <h:commandButton id="attrDelay" value="Dummy Delay" action="#{attrsBean.eval}">
+            <f:ajax execute="@this" render="@none" delay="200" />
+        </h:commandButton>
+
+    </h:form>
+</body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/ajax/ajaxCount.xhtml b/test/servlet30/systest/src/main/webapp/ajax/ajaxCount.xhtml
new file mode 100644
index 0000000..7688d1b
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/ajax/ajaxCount.xhtml
@@ -0,0 +1,72 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+        PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+<h:head>
+    <title>Ajax Request Test Page</title>
+</h:head>
+<h:body>
+    <h:outputScript library="javax.faces" name="jsf.js" target="head"/>
+    <h1>Simple Counter Test</h1>
+    <h:form id="countForm">
+        <h:outputText id="out1" value="#{ajaxrequest.count}"/>
+        <br/>
+        <!-- Increment the counter on the server, and the client -->
+        <h:commandButton id="button1" value="Count"
+                         onclick="jsf.ajax.request(this, event, {execute: this.id, render: 'countForm:out1'}); return false;"/>
+        <br/>
+        <!-- Resets the counter, doesn't refresh the page -->
+        <h:commandButton id="reset" value="reset"
+                            onclick="jsf.ajax.request(this, event, {execute:'countForm:reset', render: 'countForm:out1'}); return false;"
+                            actionListener="#{ajaxrequest.resetCount}"/>
+    </h:form>
+    <!-- Contained outside the form - shouldn't update except for full page load -->
+    <h:outputText id="out2" value="#{ajaxrequest.count}"/>
+
+</h:body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/ajax/ajaxEcho.xhtml b/test/servlet30/systest/src/main/webapp/ajax/ajaxEcho.xhtml
new file mode 100644
index 0000000..75508d2
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/ajax/ajaxEcho.xhtml
@@ -0,0 +1,82 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+<f:view contentType="text/html"/>
+<h:head>
+    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
+    <title>Ajax</title>
+</h:head>
+<h:body>
+    <h:form id="form1">    <!-- Note that unlike previous examples, prependid='true' -->
+        <h:outputScript name="jsf.js" library="javax.faces" target="head"/>
+        <h:outputScript name="echo1.js" library="ajax" target="head"/>
+        <h:outputStylesheet name="stylesheet.css"/>
+
+        Output: <h:outputText id="out1" value="#{ajaxecho.str}"/>
+        <br/>
+        Input: <h:inputText id="in1" value="#{ajaxecho.str}"/>
+        <!-- Increment the counter on the server, and the client -->
+        <br/>
+        <h:commandButton id="button1" value="Echo"
+                         onclick="return buttonpush('form1:out1 form1:in1', 'form1:button1 form1:in1', this, event);"/>
+        <br/>
+        <!-- Test using a valid string as an identifier, instead of an element -->
+        <h:commandButton id="button2" value="Echo"
+                         onclick="return buttonpush('form1:out1 form1:in1', 'form1:button2 form1:in1', 'form1:button2', event);"/>
+        <br/>
+        <!-- Resets the string, refreshes the form, but not the page -->
+        <h:commandButton id="reset" value="reset"
+                            onclick="return resetpush(this, event);"
+                            actionListener="#{ajaxecho.reset}"/>
+        <!-- Reloads the page, doesn't reset the string -->
+        <h:commandButton id="reload" value="reload"/>
+        <h:messages/>
+    </h:form>
+
+</h:body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/ajax/ajaxEchoArea.xhtml b/test/servlet30/systest/src/main/webapp/ajax/ajaxEchoArea.xhtml
new file mode 100644
index 0000000..ce5fdb9
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/ajax/ajaxEchoArea.xhtml
@@ -0,0 +1,69 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+<f:view contentType="text/html; charset=iso-8859-1"/>
+<h:head>
+    <title>Ajax Textarea</title>
+</h:head>
+<h:body>
+    <h:form id="form1">
+        Output: <h:outputText id="out1" value="#{ajaxecho.str}"/>
+        Output: <h:outputText id="out2" value="#{ajaxecho.str}"/>
+        <br/>
+        Input: <h:inputTextarea id="in1" value="#{ajaxecho.str}">
+            <f:ajax render="out1  out2"/>
+        </h:inputTextarea>
+        <br/>
+        <h:commandButton id="button1" value="Echo" type="button"/>
+        <br/>
+        <h:commandButton id="reload" value="reload"/>
+        <h:messages/>
+    </h:form>
+
+</h:body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/ajax/ajaxError.xhtml b/test/servlet30/systest/src/main/webapp/ajax/ajaxError.xhtml
new file mode 100644
index 0000000..3979bdd
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/ajax/ajaxError.xhtml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+<f:view contentType="text/html"/>
+<h:head>
+    <title>Ajax Eval</title>
+</h:head>
+<body>
+    <h:form id="form">
+        Project Stage: <h:outputText value="#{facesContext.application.projectStage}"/>
+        <h:commandButton id="eval" value="Eval" action="#{evalBean.error}">
+            <f:ajax execute="@this" render="@none"/>
+        </h:commandButton>
+    </h:form>
+</body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/ajax/ajaxError2.xhtml b/test/servlet30/systest/src/main/webapp/ajax/ajaxError2.xhtml
new file mode 100644
index 0000000..ebd180d
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/ajax/ajaxError2.xhtml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+<f:view contentType="text/html"/>
+<h:head>
+    <title>Ajax Error 2</title>
+</h:head>
+<body>
+    <h:form id="form">
+        Project Stage: <h:outputText value="#{facesContext.application.projectStage}"/>
+        <h:commandButton id="error" value="Error" action="#{errorBean.error}">
+            <f:ajax execute="@this" render="@none"/>
+        </h:commandButton>
+    </h:form>
+</body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/ajax/ajaxError3.xhtml b/test/servlet30/systest/src/main/webapp/ajax/ajaxError3.xhtml
new file mode 100644
index 0000000..ab846db
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/ajax/ajaxError3.xhtml
@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+<h:head>
+    <title>Ajax Error 3</title>
+</h:head>
+<body>
+    <script type="text/javascript">
+        var errorUpdate = function errorUpdate(data) {
+            var statusArea = document.getElementById("statusArea");
+            var text = statusArea.value;
+            text = text + "Name: "+data.source.id;
+            if (data.type === "event") {
+                text = text +" Event: "+data.status+" ";
+            } else {  // otherwise, it's an error
+                text = text + " Error: "+data.status+" ";
+            }
+            statusArea.value = text;
+        }
+    </script>
+
+    <h:form id="form">
+        Project Stage: <h:outputText value="#{facesContext.application.projectStage}"/>
+        <h:commandButton id="error" value="Error" action="#{errorBean.error}">
+            <f:ajax execute="@this" render="@none" onerror="errorUpdate"/>
+        </h:commandButton>
+    </h:form>
+
+    <input id="statusArea" type="text" />
+</body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/ajax/ajaxEval.xhtml b/test/servlet30/systest/src/main/webapp/ajax/ajaxEval.xhtml
new file mode 100644
index 0000000..f225498
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/ajax/ajaxEval.xhtml
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+<h:head>
+    <title>Ajax Eval</title>
+</h:head>
+<body>
+    <h:form id="form">
+        <h:commandButton id="eval" value="Eval" action="#{evalBean.eval}">
+            <f:ajax execute="@this" render="@none"/>
+        </h:commandButton>
+    </h:form>
+</body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/ajax/ajaxEvent.xhtml b/test/servlet30/systest/src/main/webapp/ajax/ajaxEvent.xhtml
new file mode 100644
index 0000000..896f917
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/ajax/ajaxEvent.xhtml
@@ -0,0 +1,91 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+        PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+<h:head>
+    <title>Ajax Request Test Page</title>
+</h:head>
+<h:body>
+    <h:outputScript library="javax.faces" name="jsf.js" target="head"/>
+<script type="text/javascript">
+var statusUpdate = function statusUpdate(data) {
+    var statusArea = document.getElementById("statusArea");
+    var text = statusArea.value;
+    text = text + "Name: "+data.source.id;
+    if (data.type === "event") {
+        text = text +" Event: "+data.status+" ";
+    } else {  // otherwise, it's an error
+        text = text + " Error: "+data.status+" ";
+    }
+    statusArea.value = text;
+}
+</script>
+    <h1>Simple Event Test</h1>
+    <h:form id="countForm">
+        <h:outputText id="out1" value="#{ajaxrequest.count}"/>
+        <br/>
+        <!-- Increment the counter on the server, and the client -->
+        <h:commandButton id="button1" value="Count"
+                         onclick="jsf.ajax.request(this, event, {execute: this.id, render: 'countForm:out1', onevent: statusUpdate, onerror: statusUpdate}); return false;"/>
+        <br/>
+        <h:commandButton id="button2" value="Count form"
+                         onclick="jsf.ajax.request(this, event, {execute: this.id, render: 'countForm', onevent: statusUpdate, onerror: statusUpdate}); return false;"/>
+        <br/>
+        <!-- Resets the counter, doesn't refresh the page -->
+        <h:commandButton id="reset" value="reset"
+                            onclick="jsf.ajax.request(this, event, {execute:'countForm:reset', render: 'countForm:out1', onevent: statusUpdate, onerror: statusUpdate}); return false;"
+                            actionListener="#{ajaxrequest.resetCount}"/>
+    </h:form>
+    <!-- Contained outside the form - shouldn't update except for full page load -->
+    <h:outputText id="out2" value="#{ajaxrequest.count}"/>
+    <p>
+        <h3> Status:</h3>
+        <textarea id="statusArea" cols="40" rows="10" readonly="readonly" />
+    </p>
+</h:body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/ajax/ajaxIncludedScript.xhtml b/test/servlet30/systest/src/main/webapp/ajax/ajaxIncludedScript.xhtml
new file mode 100644
index 0000000..e056364
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/ajax/ajaxIncludedScript.xhtml
@@ -0,0 +1,93 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+        PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+<h:head>
+    <title>Ajax Request Test Page</title>
+</h:head>
+<h:body>
+    <h:outputScript library="javax.faces" name="jsf.js" target="head"/>
+
+    <h1>Simple Event Test</h1>
+    <h:form id="countForm">
+<!--   Render the entire form, including the enclosed script.
+       This tests if included scripts have their CDATA blocks
+       escaped correctly.
+    -->
+<script type="text/javascript">
+var statusUpdate = function statusUpdate(data) {
+    var statusArea = document.getElementById("statusArea");
+    var text = statusArea.value;
+    text = text + "Name: "+data.source.id;
+    if (data.type === "event") {
+        text = text +" Event: "+data.name+" ";
+    } else {  // otherwise, it's an error
+        text = text + " Error: "+data.name+" ";
+    }
+    statusArea.value = text;
+}
+</script>
+        <h:outputText id="out1" value="#{ajaxrequest.count}"/>
+        <br/>
+        <!-- Increment the counter on the server, and the client -->
+        <h:commandButton id="button1" value="Count"
+                         onclick="jsf.ajax.request(this, event, {execute: this.id, render: 'countForm', onevent: statusUpdate, onerror: statusUpdate}); return false;"/>
+        <br/>
+        <!-- Resets the counter, doesn't refresh the page -->
+        <h:commandButton id="reset" value="reset"
+                            onclick="jsf.ajax.request(this, event, {execute:'countForm:reset', render: 'countForm:out1', onevent: statusUpdate, onerror: statusUpdate}); return false;"
+                            actionListener="#{ajaxrequest.resetCount}"/>
+    </h:form>
+    <!-- Contained outside the form - shouldn't update except for full page load -->
+    <h:outputText id="out2" value="#{ajaxrequest.count}"/>
+    <p>
+        <h3> Status:</h3>
+        <textarea id="statusArea" cols="40" rows="10" readonly="readonly" />
+    </p>
+</h:body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/ajax/ajaxIncludedText.xhtml b/test/servlet30/systest/src/main/webapp/ajax/ajaxIncludedText.xhtml
new file mode 100644
index 0000000..ace6acb
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/ajax/ajaxIncludedText.xhtml
@@ -0,0 +1,77 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+        PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+<h:head>
+    <title>Ajax Included Text Page</title>
+</h:head>
+<h:body>
+    <h:outputScript library="javax.faces" name="jsf.js" target="head"/>
+    <h1>Test included text with ajax</h1>
+    <h:form id="form1" prependId="true">
+        <h:panelGroup layout="block" id="outPanel">
+            <h:outputText id="out" value="outval"/><br/>
+            <span id="finalSpan1">Text should stay</span>
+        </h:panelGroup>
+        <br/>
+        <h:commandButton id="refresh"
+                         onclick="jsf.ajax.request(this,event, {render: 'form1:outPanel'}); return false;" />
+        Explicit parameters:
+    </h:form>
+    <h:form id="form2" prependId="true">
+        <h:panelGroup layout="block" id="outPanel">
+            <h:outputText id="out" value=""/><br/>
+            <span id="finalSpan2">Text should stay</span>
+        </h:panelGroup>
+        <br/>
+        <h:commandButton id="refresh"
+                         onclick="jsf.ajax.request(this,event, {render: 'form2:outPanel'}); return false;" />
+        Explicit parameters:
+    </h:form>
+</h:body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/ajax/ajaxInsertDelete.xhtml b/test/servlet30/systest/src/main/webapp/ajax/ajaxInsertDelete.xhtml
new file mode 100644
index 0000000..6736c3c
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/ajax/ajaxInsertDelete.xhtml
@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+<h:head>
+    <title>Ajax Insert/Delete</title>
+</h:head>
+<h:body>
+    <h:form id="form1">
+        <h:commandButton id="before" value="Add Before" action="#{insertDeleteBean.insertBefore}">
+              <f:ajax execute="@this" render="@none"/>
+        </h:commandButton>
+        <h:commandButton id="removeBefore" value="Remove Before" action="#{insertDeleteBean.removeBefore}">
+            <f:ajax execute="@this" render="@none"/>
+        </h:commandButton>
+        <h:commandButton id="after" value="Add After" action="#{insertDeleteBean.insertAfter}">
+            <f:ajax execute="@this" render="@none" />
+        </h:commandButton>
+         <h:commandButton id="removeAfter" value="Remove After" action="#{insertDeleteBean.removeAfter}">
+            <f:ajax execute="@this" render="@none"/>
+        </h:commandButton>
+    </h:form>
+    <br/>
+    <hr id="hr" />
+    <br/>
+    <table border="1"><tbody>
+    <tr id="tablecenter"><td>TABLE CENTER</td></tr>
+    </tbody></table>
+</h:body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/ajax/ajaxInvalidXML.xhtml b/test/servlet30/systest/src/main/webapp/ajax/ajaxInvalidXML.xhtml
new file mode 100644
index 0000000..7866c17
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/ajax/ajaxInvalidXML.xhtml
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+<h:head>
+    <title>Ajax Bad XML</title>
+</h:head>
+<h:body>
+    <h:form id="form1">
+        <h:commandButton id="bad" value="Emit Bad XML" action="#{invalidXMLBean.emitBadXML}">
+              <f:ajax execute="@this" render="@none"/>
+        </h:commandButton>
+    </h:form>
+</h:body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/ajax/ajaxMalformedXML.xhtml b/test/servlet30/systest/src/main/webapp/ajax/ajaxMalformedXML.xhtml
new file mode 100644
index 0000000..8113809
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/ajax/ajaxMalformedXML.xhtml
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+<h:head>
+    <title>Ajax Eval</title>
+</h:head>
+<body>
+    <h:form id="form">
+        <h:commandButton id="error" value="error" action="#{failBean.fail1}">
+            <f:ajax execute="@this" render="@none"/>
+        </h:commandButton>
+    </h:form>
+</body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/ajax/ajaxMessage.xhtml b/test/servlet30/systest/src/main/webapp/ajax/ajaxMessage.xhtml
new file mode 100644
index 0000000..d119899
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/ajax/ajaxMessage.xhtml
@@ -0,0 +1,120 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+        PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+<h:head>
+    <title>Test Message Render</title>
+</h:head>
+<h:body>
+    <h1>Test Message Render</h1>
+    <h2> Test with id</h2>
+    <h:form id="testform1">
+        <h:inputText id="in1" value="#{numberholder.number}"/>
+        <br/>
+        <h:commandButton id="button2" type="submit" value="Count"
+                         action="/ajax/ajaxMessage">
+            <f:ajax execute="in1" render="in1 msgs"/>
+                         </h:commandButton>
+        <h:messages id="msgs"/>
+    </h:form>
+    <br/>
+    <h:form id="testform1a">
+        <h:inputText id="in1" value="#{numberholder.number}"/>
+        <br/>
+        <h:commandButton id="button2" type="submit" value="Count"
+                         action="/ajax/ajaxMessage">
+            <f:ajax execute="in1" render="in1 msgs"/>
+                         </h:commandButton>
+        <h:messages id="msgs" layout="table"/>
+    </h:form>
+    <br/>
+    <h:form id="testform2">
+        <h:inputText id="in1" value="#{numberholder.number}"/>
+        <br/>
+        <h:commandButton id="button2" type="submit" value="Count"
+                         action="/ajax/ajaxMessage">
+            <f:ajax execute="in1" render="in1 msg"/>
+                         </h:commandButton>
+        <br/>
+        <h:message for="in1" id="msg"/>
+    </h:form>
+
+    <h2>Test without id</h2>
+    <h:form id="testform3">
+        <h:inputText id="in1" value="#{numberholder.number}"/>
+        <br/>
+        <h:commandButton id="button2" type="submit" value="Count"
+                         action="/ajax/ajaxMessage">
+            <f:ajax execute="in1" render="@form"/>
+                         </h:commandButton>
+        <h:messages/>
+    </h:form>
+    <br/>
+    <h:form id="testform3a">
+        <h:inputText id="in1" value="#{numberholder.number}"/>
+        <br/>
+        <h:commandButton id="button2" type="submit" value="Count"
+                         action="/ajax/ajaxMessage">
+            <f:ajax execute="in1" render="@form"/>
+                         </h:commandButton>
+        <h:messages layout="table"/>
+    </h:form>
+    <br/>
+    <h:form id="testform4">
+        <h:inputText id="in1" value="#{numberholder.number}"/>
+        <br/>
+        <h:commandButton id="button2" type="submit" value="Count"
+                         action="/ajax/ajaxMessage">
+            <f:ajax execute="in1" render="@form"/>
+                         </h:commandButton>
+        <br/>
+        <h:message for="in1"/>
+    </h:form>
+
+</h:body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/ajax/ajaxMultiform.xhtml b/test/servlet30/systest/src/main/webapp/ajax/ajaxMultiform.xhtml
new file mode 100644
index 0000000..fc2e653
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/ajax/ajaxMultiform.xhtml
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+        PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+<h:head>
+    <title>Ajax Request Test Page</title>
+</h:head>
+<h:body>
+    <h:outputScript library="javax.faces" name="jsf.js" target="head"/>
+    <h1>Simple Counter Test</h1>
+    <h:form id="countForm1">
+        <h:outputText id="out1" value="#{ajaxrequest.count}"/>
+        <br/>
+        <!-- Increment the counter on the server, and the client -->
+        <h:commandButton id="button1" value="Count">
+            <f:ajax render="countForm1:out1"/>
+        </h:commandButton>
+        <br/>
+        <!-- Resets the counter, doesn't refresh the page -->
+        <h:commandButton id="reset" value="reset" actionListener="#{ajaxrequest.resetCount}">
+            <f:ajax execute="countForm1:reset" render="countForm1:out1"/>
+        </h:commandButton>
+    </h:form>
+    <h:form id="countForm2">
+        <h:outputText id="out1" value="#{ajaxrequest.count}"/>
+        <br/>
+        <!-- Increment the counter on the server, and the client -->
+        <h:commandButton id="button1" value="Count">
+            <f:ajax render="countForm2:out1"/>
+        </h:commandButton>
+        <br/>
+        <!-- Resets the counter, doesn't refresh the page -->
+        <h:commandButton id="reset" value="reset" actionListener="#{ajaxrequest.resetCount}">
+            <f:ajax execute="countForm2:reset" render="countForm2:out1"/>
+        </h:commandButton>
+    </h:form>
+    <h:form id="countForm3">
+        <h:outputText id="out1" value="#{ajaxrequest.count}"/>
+        <br/>
+        <!-- Increment the counter on the server, and the client -->
+        <h:commandButton id="button1" value="Count">
+            <f:ajax render="countForm3:out1"/>
+        </h:commandButton>
+        <br/>
+        <!-- Resets the counter, doesn't refresh the page -->
+        <h:commandButton id="reset" value="reset" actionListener="#{ajaxrequest.resetCount}">
+            <f:ajax execute="countForm3:reset" render="countForm3:out1"/>
+        </h:commandButton>
+    </h:form>
+    <!-- Contained outside the form - shouldn't update except for full page load -->
+    <h:outputText id="out2" value="#{ajaxrequest.count}"/>
+
+</h:body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/ajax/ajaxProjectStage.xhtml b/test/servlet30/systest/src/main/webapp/ajax/ajaxProjectStage.xhtml
new file mode 100644
index 0000000..c899a2a
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/ajax/ajaxProjectStage.xhtml
@@ -0,0 +1,65 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+<f:view contentType="text/html"/>
+<h:head>
+    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
+    <title>Ajax Project Stage</title>
+</h:head>
+<h:body>
+    <h:outputScript name="jsf.js" library="javax.faces" target="head"/>
+
+    <div id="stage"/>
+
+    <script type="text/javascript">
+        var stage = document.getElementById("stage");
+        stage.innerHTML = jsf.getProjectStage();
+    </script>
+
+</h:body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/ajax/ajaxRedirect.xhtml b/test/servlet30/systest/src/main/webapp/ajax/ajaxRedirect.xhtml
new file mode 100644
index 0000000..db79416
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/ajax/ajaxRedirect.xhtml
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+<h:head>
+    <title>Ajax Redirect</title>
+</h:head>
+<h:body>
+    <h:form id="form">
+        <h:commandButton id="redirect" value="Redirect" action="#{redirectBean.redirect}">
+             <f:ajax execute="@this" render="@none"/>
+        </h:commandButton>
+    </h:form>
+</h:body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/ajax/ajaxRequestDefaultsButton.xhtml b/test/servlet30/systest/src/main/webapp/ajax/ajaxRequestDefaultsButton.xhtml
new file mode 100644
index 0000000..6129b86
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/ajax/ajaxRequestDefaultsButton.xhtml
@@ -0,0 +1,93 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+        PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+<h:head>
+    <title>Ajax Defaults Request Test Page</title>
+</h:head>
+<h:body>
+    <h:outputScript library="javax.faces" name="jsf.js" target="head"/>
+    <h1>Test defaults with Prepended Ids</h1>
+    <h:form id="form1">
+        <h:outputText id="out1" value="#{ajaxrequest.count}"/>
+        <br/>
+        <!-- Increment the counter on the server, and the client -->
+        <h:commandButton id="button1" value="Count"
+                         onclick="jsf.ajax.request(this, event, {execute: this.id, render: 'form1:out1'}); return false;"/>
+        <br/>
+        <!-- Resets the counter, doesn't refresh the page-->
+        Explicit parameters:
+        <h:commandButton id="reset1" value="reset1"
+                            onclick="jsf.ajax.request(this, event, {execute:'form1:reset1', render: 'form1:out1'}); return false;"
+                            actionListener="#{ajaxrequest.resetCount}"/>
+        <br/>
+        Implicit execute:
+        <h:commandButton id="reset2" value="reset2"
+                            onclick="jsf.ajax.request(this, event, {render: 'form1:out1'}); return false;"
+                            actionListener="#{ajaxrequest.resetCount}"/>
+        <br/>
+        Implicit render:
+        <h:commandButton id="reset3" value="reset3"
+                            onclick="jsf.ajax.request(this, event, {execute:'form1:reset3'}); return false;"
+                            actionListener="#{ajaxrequest.resetCount}"/>
+        <br/>
+        Default Options:
+        <h:commandButton id="reset4" value="reset4"
+                            onclick="jsf.ajax.request(this, event); return false;"
+                            actionListener="#{ajaxrequest.resetCount}"/>
+        <br/>
+        <!-- Contained within the form - but still shouldn't update except for full page load -->
+        <h:outputText id="out2" value="#{ajaxrequest.count}"/>
+        <br/>
+        <h:commandButton id="reload" value="reload" />
+    </h:form>
+    <!-- Contained outside the form - shouldn't update except for full page load -->
+    <h:outputText id="out3" value="#{ajaxrequest.count}"/>
+
+</h:body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/ajax/ajaxRequestDefaultsButtonNoPrepend.xhtml b/test/servlet30/systest/src/main/webapp/ajax/ajaxRequestDefaultsButtonNoPrepend.xhtml
new file mode 100644
index 0000000..6bdac49
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/ajax/ajaxRequestDefaultsButtonNoPrepend.xhtml
@@ -0,0 +1,95 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+        PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+<h:head>
+    <title>Ajax Defaults Request Test Page</title>
+</h:head>
+<h:body>
+    <h:outputScript library="javax.faces" name="jsf.js" target="head"/>
+    <h1>Test defaults without Prepended Ids</h1>
+    <h:form id="form1" prependId="false">
+
+        <h:outputText id="out1" value="#{ajaxrequest.count}"/>
+        <br/>
+        <!-- Increment the counter on the server, and the client -->
+        <h:commandButton id="button1" value="Count"
+                         onclick="jsf.ajax.request(this, event, {execute: this.id, render: 'out1'}); return false;"/>
+        <br/>
+        <!-- Resets the counter, doesn't refresh the page-->
+        Explicit parameters:
+        <h:commandButton id="reset1" value="reset1"
+                            onclick="jsf.ajax.request(this, event, {execute:'reset1', render: 'out1'}); return false;"
+                            actionListener="#{ajaxrequest.resetCount}"/>
+        <br/>
+        Implicit execute:
+        <h:commandButton id="reset2" value="reset2"
+                            onclick="jsf.ajax.request(this, event, {render: 'out1'}); return false;"
+                            actionListener="#{ajaxrequest.resetCount}"/>
+        <br/>
+        Implicit render:
+        <h:commandButton id="reset3" value="reset3"
+                            onclick="jsf.ajax.request(this, event, {execute:'reset3'}); return false;"
+                            actionListener="#{ajaxrequest.resetCount}"/>
+        <br/>
+        Default Options:
+        <h:commandButton id="reset4" value="reset4"
+                            onclick="jsf.ajax.request(this, event); return false;"
+                            actionListener="#{ajaxrequest.resetCount}"/>
+        <br/>
+        <!-- Contained within the form - but still shouldn't update except for full page load -->
+        <h:outputText id="out2" value="#{ajaxrequest.count}"/>
+        <br/>
+        <h:commandButton id="reload" value="reload" />
+    </h:form>
+    <!-- Contained outside the form - shouldn't update except for full page load -->
+    <h:outputText id="out3" value="#{ajaxrequest.count}"/>
+
+</h:body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/ajax/ajaxRequestDefaultsEdit.xhtml b/test/servlet30/systest/src/main/webapp/ajax/ajaxRequestDefaultsEdit.xhtml
new file mode 100644
index 0000000..fc05a4f
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/ajax/ajaxRequestDefaultsEdit.xhtml
@@ -0,0 +1,104 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+        PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+<h:head>
+    <title>Ajax Defaults Request Test Page</title>
+</h:head>
+<h:body>
+    <h:outputScript library="javax.faces" name="jsf.js" target="head"/>
+    <h1>Test defaults with Prepended Ids</h1>
+    <h:form id="form1">
+        <h:panelGroup layout="block" id="outPanel">
+            <h:outputText id="out1" value="#{ajaxrequest.echo}"/>
+            <br/>
+            <h:outputText id="echo1Out" value="#{ajaxrequest.echo1}"/>
+            <br/>
+            <h:outputText id="echo2Out" value="#{ajaxrequest.echo2}"/>
+            <br/>
+            <h:outputText id="echo3Out" value="#{ajaxrequest.echo3}"/>
+            <br/>
+            <h:outputText id="echo4Out" value="#{ajaxrequest.echo4}"/>
+            <br/>
+        </h:panelGroup>
+        <h:commandButton id="refresh"
+                         onclick="jsf.ajax.request(this,event, {render: 'form1:outPanel'}); return false;" />
+        Explicit parameters:
+        <h:inputText id="edit1" value="#{ajaxrequest.echo1}"
+                            onchange="jsf.ajax.request(this,event, {execute:'form1:edit1', render: 'form1:edit1'});"
+                            valueChangeListener="#{ajaxrequest.echoValue}"/>
+        <br/>
+        Implicit execute:
+        <h:inputText id="edit2" value="#{ajaxrequest.echo2}"
+                            onchange="jsf.ajax.request(this,event, {render: 'form1:edit2'});"
+                            valueChangeListener="#{ajaxrequest.echoValue}"/>
+        <br/>
+        Implicit render:
+        <h:inputText id="edit3" value="#{ajaxrequest.echo3}"
+                            onchange="jsf.ajax.request(this,event, {execute:'form1:edit3'});"
+                            valueChangeListener="#{ajaxrequest.echoValue}"/>
+        <br/>
+        Default Options:
+        <h:inputText id="edit4" value="#{ajaxrequest.echo4}"
+                            onchange="jsf.ajax.request(this,event);"
+                            valueChangeListener="#{ajaxrequest.echoValue}"/>
+        <br/>
+        <!-- Contained within the form - but still shouldn't update except for full page load -->
+        <h:outputText id="out2" value="#{ajaxrequest.echo}"/>
+        <br/>
+        <!-- Used to reset the values between tests -->
+        <h:commandButton id="reset" value="reset" actionListener="#{ajaxrequest.resetEcho}"/>
+        <br/>
+        <h:commandButton id="reload" value="reload" />
+    </h:form>
+    <!-- Contained outside the form - shouldn't update except for full page load -->
+    <h:outputText id="out3" value="#{ajaxrequest.echo}"/>
+
+</h:body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/ajax/ajaxRequestDefaultsEditNoPrepend.xhtml b/test/servlet30/systest/src/main/webapp/ajax/ajaxRequestDefaultsEditNoPrepend.xhtml
new file mode 100644
index 0000000..f999a6b
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/ajax/ajaxRequestDefaultsEditNoPrepend.xhtml
@@ -0,0 +1,104 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+        PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+<h:head>
+    <title>Ajax Defaults Request Page</title>
+</h:head>
+<h:body>
+    <h:outputScript library="javax.faces" name="jsf.js" target="head"/>
+    <h1>Test defaults without Prepended Ids</h1>
+    <h:form id="form1" prependId="false">
+        <h:panelGroup layout="block" id="outPanel">
+            <h:outputText id="out1" value="#{ajaxrequest.echo}"/>
+            <br/>
+            <h:outputText id="echo1Out" value="#{ajaxrequest.echo1}"/>
+            <br/>
+            <h:outputText id="echo2Out" value="#{ajaxrequest.echo2}"/>
+            <br/>
+            <h:outputText id="echo3Out" value="#{ajaxrequest.echo3}"/>
+            <br/>
+            <h:outputText id="echo4Out" value="#{ajaxrequest.echo4}"/>
+            <br/>
+        </h:panelGroup>
+        <h:commandButton id="refresh"
+                         onclick="jsf.ajax.request(this,event, {render: 'outPanel'}); return false;" />
+        Explicit parameters:
+        <h:inputText id="edit1" value="#{ajaxrequest.echo1}"
+                            onchange="jsf.ajax.request(this,event, {execute:'edit1', render: 'edit1'});"
+                            valueChangeListener="#{ajaxrequest.echoValue}"/>
+        <br/>
+        Implicit execute:
+        <h:inputText id="edit2" value="#{ajaxrequest.echo2}"
+                            onchange="jsf.ajax.request(this,event, {render: 'edit2'});"
+                            valueChangeListener="#{ajaxrequest.echoValue}"/>
+        <br/>
+        Implicit render:
+        <h:inputText id="edit3" value="#{ajaxrequest.echo3}"
+                            onchange="jsf.ajax.request(this,event, {execute:'edit3'});"
+                            valueChangeListener="#{ajaxrequest.echoValue}"/>
+        <br/>
+        Default Options:
+        <h:inputText id="edit4" value="#{ajaxrequest.echo4}"
+                            onchange="jsf.ajax.request(this,event);"
+                            valueChangeListener="#{ajaxrequest.echoValue}"/>
+        <br/>
+        <!-- Contained within the form - but still shouldn't update except for full page load -->
+        <h:outputText id="out2" value="#{ajaxrequest.echo}"/>
+        <br/>
+        <!-- Used to reset the values between tests -->
+        <h:commandButton id="reset" value="reset" actionListener="#{ajaxrequest.resetEcho}"/>
+        <br/>
+        <h:commandButton id="reload" value="reload" />
+    </h:form>
+    <!-- Contained outside the form - shouldn't update except for full page load -->
+    <h:outputText id="out3" value="#{ajaxrequest.echo}"/>
+
+</h:body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/ajax/ajaxRequestHeader.xhtml b/test/servlet30/systest/src/main/webapp/ajax/ajaxRequestHeader.xhtml
new file mode 100644
index 0000000..8d06547
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/ajax/ajaxRequestHeader.xhtml
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+<h:head>
+    <title>Ajax Request Header</title>
+</h:head>
+<body>
+    <h:form id="form">
+        <h:commandButton id="req" value="Get Request Header Info">
+            <f:ajax execute="@this" render="out"/>
+        </h:commandButton>
+        <h:outputText id="out" value="#{ajaxrequest.contentType}"/>
+    </h:form>
+</body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/ajax/ajaxRequestMultiRender.xhtml b/test/servlet30/systest/src/main/webapp/ajax/ajaxRequestMultiRender.xhtml
new file mode 100644
index 0000000..ed3bda5
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/ajax/ajaxRequestMultiRender.xhtml
@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+        PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+<h:head>
+    <title>Ajax Request Test Page</title>
+</h:head>
+<h:body>
+    <h:outputScript library="javax.faces" name="jsf.js" target="head"/>
+    <h1>Simple Counter Test</h1>
+    <h:form id="countForm" prependId="false">
+        <h:outputText id="out1" value="#{ajaxcount.count1}"/>
+        <br/>
+        <h:outputText id="out2" value="#{ajaxcount.count2}"/>
+        <br/>
+        <h:outputText id="out3" value="#{ajaxcount.count3}"/>
+        <br/>
+        <!-- Increment the counter on the server, and the client -->
+        <h:commandButton id="button1" value="Count 1 2 3"
+                         onclick="jsf.ajax.request(this, event, {execute: this.id, render: 'out1 out2 out3'}); return false;"/>
+        <br/>
+        <!-- Resets the counter, doesn't refresh the page -->
+        <h:commandButton id="reset" value="reset 1 2 3"
+                            onclick="jsf.ajax.request(this, event, {render: 'out1 out2 out3 out4'}); return false;"
+                            actionListener="#{ajaxcount.resetCount}">
+        </h:commandButton>
+    </h:form>
+    <!-- Contained outside the form - shouldn't update except for full page load -->
+    <h:outputText id="out4" value="#{ajaxcount.count4}"/>
+
+</h:body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/ajax/ajaxRerenderOtherForm.xhtml b/test/servlet30/systest/src/main/webapp/ajax/ajaxRerenderOtherForm.xhtml
new file mode 100644
index 0000000..489332e
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/ajax/ajaxRerenderOtherForm.xhtml
@@ -0,0 +1,71 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+        PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+<h:head>
+    <title>Ajax Request Test Page</title>
+</h:head>
+<h:body>
+
+    <h1>Rerender a form from within another form</h1>
+    <h:form id="form1">
+    	<h:outputText value="#{viewScope.postback}"/>
+        <h:commandButton value="Should be postback" id="button1">
+        	<f:setPropertyActionListener value="It was a postback!!!" target="#{viewScope['postback']}"/>
+        </h:commandButton>
+    </h:form>
+    
+    <h:form id="form2">
+    	<h:commandButton value="Rerender form1" id="button2">
+			<f:ajax render=":form1"/>
+	</h:commandButton>
+    </h:form>
+
+</h:body>
+</html>
+
diff --git a/test/servlet30/systest/src/main/webapp/ajax/ajaxSelect.xhtml b/test/servlet30/systest/src/main/webapp/ajax/ajaxSelect.xhtml
new file mode 100644
index 0000000..da1523c
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/ajax/ajaxSelect.xhtml
@@ -0,0 +1,101 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    <h:head><title>SelectOneAjaxTest</title></h:head>
+    <h:body>
+
+    <h:outputText id="out" value="#{selectChange.string}"/>
+    <hr/>
+    <h:form id="form">
+        <h:selectOneRadio id="s1rad" value="#{selectChange.string}">
+            <f:ajax render=":out"/>
+            <f:selectItem itemValue="radio-1" itemLabel="1"/>
+            <f:selectItem itemValue="radio-2" itemLabel="2"/>
+            <f:selectItem itemValue="radio-2" itemLabel="3"/>
+        </h:selectOneRadio>
+        <br/>
+        <h:selectOneMenu id="s1menu" value="#{selectChange.string}">
+            <f:ajax render=":out"/>
+            <f:selectItem itemValue="menu-1" itemLabel="1"/>
+            <f:selectItem itemValue="menu-2" itemLabel="2"/>
+            <f:selectItem itemValue="menu-3" itemLabel="3"/>
+        </h:selectOneMenu>
+        <br/>
+        <h:selectOneListbox id="s1list" value="#{selectChange.string}">
+            <f:ajax render=":out"/>
+            <f:selectItem itemValue="list-1" itemLabel="1"/>
+            <f:selectItem itemValue="list-2" itemLabel="2"/>
+            <f:selectItem itemValue="list-3" itemLabel="3"/>
+        </h:selectOneListbox>
+        <br/>
+        <h:selectManyListbox id="smlist" value="#{selectChange.sarray}">
+            <f:ajax render=":out"/>
+            <f:selectItem itemValue="mlist-1" itemLabel="1"/>
+            <f:selectItem itemValue="mlist-2" itemLabel="2"/>
+            <f:selectItem itemValue="mlist-3" itemLabel="3"/>
+        </h:selectManyListbox>
+        <br/>
+        <h:selectManyCheckbox id="smcheck" value="#{selectChange.sarray}">
+            <f:ajax render=":out"/>
+            <f:selectItem itemValue="mcheck-1" itemLabel="1"/>
+            <f:selectItem itemValue="mcheck-2" itemLabel="2"/>
+            <f:selectItem itemValue="mcheck-3" itemLabel="3"/>
+        </h:selectManyCheckbox>
+        <br/>
+        <h:outputLabel for="bool" value="Check me"/>
+        <h:selectBooleanCheckbox id="bool" value="#{selectChange.bool}">
+            <f:ajax render=":out"/>
+        </h:selectBooleanCheckbox>
+        <br/>
+        <h:commandButton id="button" value="Click Me">
+            <f:ajax render="@all"/>
+        </h:commandButton>
+    </h:form>
+    </h:body>
+</html>
+
diff --git a/test/servlet30/systest/src/main/webapp/ajax/ajaxTable.xhtml b/test/servlet30/systest/src/main/webapp/ajax/ajaxTable.xhtml
new file mode 100644
index 0000000..e9d2616
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/ajax/ajaxTable.xhtml
@@ -0,0 +1,129 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+<h:head>
+    <title>Ajax Table</title>
+</h:head>
+<body>
+    <h:form id="form" prependId="false">
+
+        <h:dataTable id="table" value="#{ajaxTable.list}" var="item">
+
+            <f:facet name="header">
+                    <h:outputText id="head" value="'dataTable' ajax test" />
+            </f:facet>
+
+            <h:column>
+                    <f:facet name="header">
+                    <h:outputText value="id" />
+                    </f:facet>
+                         <h:outputText id="outId" value="#{item.id}"/>
+            </h:column>
+
+            <h:column>
+                    <f:facet name="header">
+                    <h:outputText value="name"/>
+                    </f:facet>
+                         <h:outputText id="outName" value="#{item.name}"/>
+            </h:column>
+
+            <h:column id="city">
+                    <f:facet name="header">
+                    <h:outputText value="city"/>
+                    </f:facet>
+                         <h:inputText id="inCity" value="#{item.city}">
+                             <f:ajax/>
+                         </h:inputText>
+            </h:column>
+
+            <h:column>
+                <f:facet name="likescheese">
+                    <h:outputText value="likescheese"/>
+                </f:facet>
+                <h:selectBooleanCheckbox id="cheesecheck" value="#{item.likesCheese}">
+                    <f:ajax render="cheesepref"/>
+                </h:selectBooleanCheckbox>
+            </h:column>
+            
+            <h:column>
+                <f:facet name="cheesepref">
+                    <h:outputText value="Cheese Pref"/>
+                </f:facet>
+                <h:outputText id="cheesepref" value="#{item.cheesePreference}"/>
+            </h:column>
+
+            <h:column>
+                <f:facet name="countlink">
+                    <h:outputText value="Count Link"/>
+                </f:facet>
+                <h:commandLink id="countlink" value="Count">
+                    <f:ajax render="count :form:count"/>
+                </h:commandLink>
+            </h:column>
+
+            <h:column>
+                <f:facet name="count">
+                    <h:outputText value="Count"/>
+                </f:facet>
+                <h:outputText id="count" value="#{ajaxcount.count1}"/>
+            </h:column>
+        </h:dataTable>
+
+        <!-- Submits with out executing the table, so tests the city change -->
+        <h:commandButton id="submitButton" value="Submit" type="submit">
+            <f:ajax render="form:table"/>
+        </h:commandButton>
+
+        <br/>
+
+        <h:outputText value="Count:"/><h:outputText id="count" value="#{ajaxcount.count2}"/>
+
+    </h:form>
+</body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/ajax/ajaxTagCount.xhtml b/test/servlet30/systest/src/main/webapp/ajax/ajaxTagCount.xhtml
new file mode 100644
index 0000000..72ab4a4
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/ajax/ajaxTagCount.xhtml
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+        PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+<h:head>
+    <title>Ajax Request Test Page</title>
+</h:head>
+<h:body>
+    <h1>Simple Counter Test</h1>
+    <h:form id="countForm">
+        <h:outputText id="out1" value="#{ajaxrequest.count}"/>
+        <br/>
+        <!-- Increment the counter on the server, and the client -->
+        <h:commandButton id="button1" value="Count">
+            <f:ajax render="countForm:out1"/>
+        </h:commandButton>
+        <br/>
+        <!-- Resets the counter, doesn't refresh the page -->
+        <h:commandButton id="reset" value="reset" actionListener="#{ajaxrequest.resetCount}">
+            <f:ajax  render="countForm:out1"/>
+        </h:commandButton>
+    </h:form>
+    <!-- Contained outside the form - shouldn't update except for full page load -->
+    <h:outputText id="out2" value="#{ajaxrequest.count}"/>
+
+</h:body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/ajax/ajaxTagDefaultsButton.xhtml b/test/servlet30/systest/src/main/webapp/ajax/ajaxTagDefaultsButton.xhtml
new file mode 100644
index 0000000..bc19292
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/ajax/ajaxTagDefaultsButton.xhtml
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+        PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+<h:head>
+    <title>Ajax Defaults Request Test Page</title>
+</h:head>
+<h:body>
+    <h1>Test Ajax tag defaults with Prepended Ids</h1>
+    <h:form id="form1">
+        <h:outputText id="out1" value="#{ajaxrequest.count}"/>
+        <br/>
+        <!-- Increment the counter on the server, and the client -->
+        <h:commandButton id="button1" value="Count">
+            <f:ajax render="form1:out1"/>
+        </h:commandButton>
+        <br/>
+        <!-- Resets the counter, doesn't refresh the page-->
+        Explicit parameters:
+        <h:commandButton id="reset1" value="reset1" actionListener="#{ajaxrequest.resetCount}">
+            <f:ajax execute="form1:reset1" render="form1:out1"/>
+        </h:commandButton>
+        <br/>
+        Implicit execute:
+        <h:commandButton id="reset2" value="reset2" actionListener="#{ajaxrequest.resetCount}">
+            <f:ajax render="form1:out1"/>
+        </h:commandButton>
+        <br/>
+        Implicit render:
+        <h:commandButton id="reset3" value="reset3" actionListener="#{ajaxrequest.resetCount}">
+            <f:ajax execute="form1:reset3"/>
+        </h:commandButton>
+        <br/>
+        Default Options:
+        <h:commandButton id="reset4" value="reset4" actionListener="#{ajaxrequest.resetCount}">
+            <f:ajax/>
+        </h:commandButton>
+        <br/>
+        <!-- Contained within the form - but still shouldn't update except for full page load -->
+        <h:outputText id="out2" value="#{ajaxrequest.count}"/>
+        <br/>
+        <h:commandButton id="reload" value="reload"/>
+    </h:form>
+    <!-- Contained outside the form - shouldn't update except for full page load -->
+    <h:outputText id="out3" value="#{ajaxrequest.count}"/>
+
+</h:body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/ajax/ajaxTagDefaultsButtonNoPrepend.xhtml b/test/servlet30/systest/src/main/webapp/ajax/ajaxTagDefaultsButtonNoPrepend.xhtml
new file mode 100644
index 0000000..1dfc112
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/ajax/ajaxTagDefaultsButtonNoPrepend.xhtml
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+        PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+<h:head>
+    <title>Ajax Defaults Request Test Page</title>
+</h:head>
+<h:body>
+    <h1>Test Ajax tag defaults with Prepended Ids</h1>
+    <h:form id="form1" prependId="false">
+        <h:outputText id="out1" value="#{ajaxrequest.count}"/>
+        <br/>
+        <!-- Increment the counter on the server, and the client -->
+        <h:commandButton id="button1" value="Count">
+            <f:ajax render="out1"/>
+        </h:commandButton>
+        <br/>
+        <!-- Resets the counter, doesn't refresh the page-->
+        Explicit parameters:
+        <h:commandButton id="reset1" value="reset1" actionListener="#{ajaxrequest.resetCount}">
+            <f:ajax execute="reset1" render="out1"/>
+        </h:commandButton>
+        <br/>
+        Implicit execute:
+        <h:commandButton id="reset2" value="reset2" actionListener="#{ajaxrequest.resetCount}">
+            <f:ajax render="out1"/>
+        </h:commandButton>
+        <br/>
+        Implicit render:
+        <h:commandButton id="reset3" value="reset3" actionListener="#{ajaxrequest.resetCount}">
+            <f:ajax execute="reset3"/>
+        </h:commandButton>
+        <br/>
+        Default Options:
+        <h:commandButton id="reset4" value="reset4" actionListener="#{ajaxrequest.resetCount}">
+            <f:ajax/>
+        </h:commandButton>
+        <br/>
+        <!-- Contained within the form - but still shouldn't update except for full page load -->
+        <h:outputText id="out2" value="#{ajaxrequest.count}"/>
+        <br/>
+        <h:commandButton id="reload" value="reload"/>
+    </h:form>
+    <!-- Contained outside the form - shouldn't update except for full page load -->
+    <h:outputText id="out3" value="#{ajaxrequest.count}"/>
+
+</h:body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/ajax/ajaxTagDefaultsEdit.xhtml b/test/servlet30/systest/src/main/webapp/ajax/ajaxTagDefaultsEdit.xhtml
new file mode 100644
index 0000000..f123a52
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/ajax/ajaxTagDefaultsEdit.xhtml
@@ -0,0 +1,105 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+        PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+<h:head>
+    <title>Ajax Defaults Request Test Page</title>
+</h:head>
+<h:body>
+    <h:outputScript library="javax.faces" name="jsf.js" target="head"/>
+    <h1>Test defaults with Prepended Ids</h1>
+    <h:form id="form1">
+        <h:panelGroup layout="block" id="outPanel">
+        <h:outputText id="out1" value="#{ajaxrequest.echo}"/>
+        <br/>
+        <h:outputText id="echo1Out" value="#{ajaxrequest.echo1}"/>
+        <br/>
+        <h:outputText id="echo2Out" value="#{ajaxrequest.echo2}"/>
+        <br/>
+        <h:outputText id="echo3Out" value="#{ajaxrequest.echo3}"/>
+        <br/>
+        <h:outputText id="echo4Out" value="#{ajaxrequest.echo4}"/>
+        <br/>
+        </h:panelGroup>
+    <h:commandButton id="refresh" value="refresh">
+            <f:ajax render="form1:outPanel"/>
+            </h:commandButton>
+        Explicit parameters:
+            <h:inputText id="edit1" value="#{ajaxrequest.echo1}" valueChangeListener="#{ajaxrequest.echoValue}" >
+                <f:ajax execute="form1:edit1" render="form1:edit1" />
+                </h:inputText>
+            <br/>
+            Implicit execute:
+            <h:inputText id="edit2" value="#{ajaxrequest.echo2}" valueChangeListener="#{ajaxrequest.echoValue}" >
+                <f:ajax render="form1:edit2" />
+            </h:inputText>
+            <br/>
+            Implicit render:
+            <h:inputText id="edit3" value="#{ajaxrequest.echo3}" valueChangeListener="#{ajaxrequest.echoValue}" >
+                <f:ajax execute="form1:edit3"/>
+                </h:inputText>
+            <br/>
+            Default Options:
+            <h:inputText id="edit4" value="#{ajaxrequest.echo4}" valueChangeListener="#{ajaxrequest.echoValue}" >
+                <f:ajax/>
+                </h:inputText>
+            <br/>
+            <!-- Contained within the form - but still shouldn't update except for full page load -->
+        <h:outputText id="out2" value="#{ajaxrequest.echo}"/>
+        <br/>
+        <!-- Used to reset the values between tests -->
+        <h:commandButton id="reset" value="reset" actionListener="#{ajaxrequest.resetEcho}"/>
+        <br/>
+        <h:commandButton id="reload" value="reload" />
+    </h:form>
+    <!-- Contained outside the form - shouldn't update except for full page load -->
+    <h:outputText id="out3" value="#{ajaxrequest.echo}"/>
+
+</h:body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/ajax/ajaxTagDefaultsEditNoPrepend.xhtml b/test/servlet30/systest/src/main/webapp/ajax/ajaxTagDefaultsEditNoPrepend.xhtml
new file mode 100644
index 0000000..78ca278
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/ajax/ajaxTagDefaultsEditNoPrepend.xhtml
@@ -0,0 +1,105 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+        PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+<h:head>
+    <title>Ajax Defaults Request Page</title>
+</h:head>
+<h:body>
+    <h:outputScript library="javax.faces" name="jsf.js" target="head"/>
+    <h1>Test defaults without Prepended Ids</h1>
+    <h:form id="form1" prependId="false">
+        <h:panelGroup layout="block" id="outPanel">
+        <h:outputText id="out1" value="#{ajaxrequest.echo}"/>
+        <br/>
+        <h:outputText id="echo1Out" value="#{ajaxrequest.echo1}"/>
+        <br/>
+        <h:outputText id="echo2Out" value="#{ajaxrequest.echo2}"/>
+        <br/>
+        <h:outputText id="echo3Out" value="#{ajaxrequest.echo3}"/>
+        <br/>
+        <h:outputText id="echo4Out" value="#{ajaxrequest.echo4}"/>
+        <br/>
+        </h:panelGroup>
+        <h:commandButton id="refresh" value="refresh">
+            <f:ajax render="outPanel"/>
+            </h:commandButton>
+        Explicit parameters:
+        <h:inputText id="edit1" value="#{ajaxrequest.echo1}" valueChangeListener="#{ajaxrequest.echoValue}" >
+            <f:ajax execute="edit1" render="edit1" />
+            </h:inputText>
+        <br/>
+        Implicit execute:
+        <h:inputText id="edit2" value="#{ajaxrequest.echo2}" valueChangeListener="#{ajaxrequest.echoValue}" >
+            <f:ajax render="edit2" />
+        </h:inputText>
+        <br/>
+        Implicit render:
+        <h:inputText id="edit3" value="#{ajaxrequest.echo3}" valueChangeListener="#{ajaxrequest.echoValue}" >
+            <f:ajax execute="edit3"/>
+            </h:inputText>
+        <br/>
+        Default Options:
+        <h:inputText id="edit4" value="#{ajaxrequest.echo4}" valueChangeListener="#{ajaxrequest.echoValue}" >
+            <f:ajax/>
+            </h:inputText>
+        <br/>
+        <!-- Contained within the form - but still shouldn't update except for full page load -->
+        <h:outputText id="out2" value="#{ajaxrequest.echo}"/>
+        <br/>
+        <!-- Used to reset the values between tests -->
+        <h:commandButton id="reset" value="reset" actionListener="#{ajaxrequest.resetEcho}"/>
+        <br/>
+        <h:commandButton id="reload" value="reload" />
+    </h:form>
+    <!-- Contained outside the form - shouldn't update except for full page load -->
+    <h:outputText id="out3" value="#{ajaxrequest.echo}"/>
+
+</h:body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/ajax/ajaxTagDisabled.xhtml b/test/servlet30/systest/src/main/webapp/ajax/ajaxTagDisabled.xhtml
new file mode 100644
index 0000000..c3d5b32
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/ajax/ajaxTagDisabled.xhtml
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+        PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+<h:head>
+    <title>Ajax Request Test Page</title>
+</h:head>
+<h:body>
+    <h1>Simple Counter Test</h1>
+    <h:form id="countForm">
+        <h:outputText id="out1" value="#{ajaxrequest.count}"/>
+        <br/>
+        <!-- Increment the counter on the server, and the client -->
+        <h:commandButton id="button1" type="button" value="Disabled Count">
+            <f:ajax render="countForm:out1" disabled="true"/>
+        </h:commandButton>
+        <br/>
+        <h:commandButton id="button2" type="button" value="Enabled Count">
+            <f:ajax render="countForm:out1" disabled="false"/>
+        </h:commandButton>
+        <br/>
+        <!-- Resets the counter, doesn't refresh the page -->
+        <h:commandButton id="reset" value="reset" actionListener="#{ajaxrequest.resetCount}">
+            <f:ajax execute="countForm:reset" render="countForm:out1"/>
+        </h:commandButton>
+    </h:form>
+    <!-- Contained outside the form - shouldn't update except for full page load -->
+    <h:outputText id="out2" value="#{ajaxrequest.count}"/>
+
+</h:body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/ajax/ajaxTagEvent.xhtml b/test/servlet30/systest/src/main/webapp/ajax/ajaxTagEvent.xhtml
new file mode 100644
index 0000000..3070a6a
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/ajax/ajaxTagEvent.xhtml
@@ -0,0 +1,96 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+        PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+<h:head>
+    <title>Ajax Request Test Page</title>
+</h:head>
+<h:body>
+    <h:outputScript library="javax.faces" name="jsf.js" target="head"/>
+<script type="text/javascript">
+ var statusUpdate = function statusUpdate(data) {
+    var statusArea = document.getElementById("statusArea");
+    var text = statusArea.value;
+    text = text + "Name: "+data.source.id;
+    if (data.type === "event") {
+        text = text +" Event: "+data.status+" ";
+    } else {  // otherwise, it's an error
+        text = text + " Error: "+data.status+" ";
+    }
+    statusArea.value = text;
+}
+</script>
+    <h1>Simple Counter Test</h1>
+    <h:form id="countForm">
+        <h:outputText id="out1" value="#{ajaxrequest.count}"/>
+        <br/>
+        <!-- Increment the counter on the server, and the client -->
+        <h:commandButton id="button1" value="Count">
+            <f:ajax render="countForm:out1" onevent="statusUpdate" onerror="statusUpdate"/>
+        </h:commandButton>
+        <br/>
+        <!-- Resets the counter, doesn't refresh the page -->
+        <h:commandButton id="reset" value="reset" actionListener="#{ajaxrequest.resetCount}">
+            <f:ajax execute="countForm:reset" render="countForm:out1" onevent="statusUpdate" onerror="statusUpdate"/>
+        </h:commandButton>
+        <!-- Test all events (begin, complete, success) if applicaton event (generated on server) occurs -->
+        <h:commandButton id="error" value="error" listener="#{ajaxrequest.generateError}">
+            <f:ajax execute="countForm:error" onevent="statusUpdate" onerror="statusUpdate"/>
+        </h:commandButton>
+        
+    
+    </h:form>
+    <!-- Contained outside the form - shouldn't update except for full page load -->
+    <h:outputText id="out2" value="#{ajaxrequest.count}"/>
+    <p>
+        <h3> Status:</h3>
+        <textarea id="statusArea" cols="40" rows="10" readonly="readonly" />
+    </p>
+</h:body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/ajax/ajaxTagEventAttribute.xhtml b/test/servlet30/systest/src/main/webapp/ajax/ajaxTagEventAttribute.xhtml
new file mode 100644
index 0000000..a243f26
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/ajax/ajaxTagEventAttribute.xhtml
@@ -0,0 +1,110 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+        PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+<h:head>
+    <title>Ajax Tag Test Page</title>
+</h:head>
+<h:body>
+    <h1>Test ajax tag event attribute</h1>
+    <h:form id="form" prependId="false">
+
+        <!-- Bug #1081 filed against it not using mouseover on outputText -->
+        <f:ajax event="mouseover" render="out2">
+            <h:outputText id="out1" value="#{ajaxtag.count}"/>
+        </f:ajax>
+        <br/>
+
+        <h:outputText id="out2" value="#{ajaxtag.count}"/>
+        <br/>
+        
+        <f:ajax event="valueChange" render="out3">
+            <h:inputText id="in1" value="#{ajaxtag.text}"/>
+        </f:ajax>
+        <br/>
+
+        <h:outputText id="out3" value="#{ajaxtag.text}"/>
+        <br/>
+
+        <f:ajax event="action" render="out2">
+            <h:commandButton id="button" value="reset" actionListener="#{ajaxtag.reset}"/>
+        </f:ajax>
+
+
+        <br/>
+        <h:selectBooleanCheckbox id="checkbox1" value="#{ajaxtag.checked}">
+            <f:ajax render="checkedvalue1"/>
+            </h:selectBooleanCheckbox>
+        <h:outputText id="checkedvalue1" value="#{ajaxtag.checked}"/>
+        <br/>
+
+        <h:selectBooleanCheckbox id="checkbox2" value="#{ajaxtag.checked}">
+            <f:ajax event="valueChange" render="checkedvalue2"/>
+            </h:selectBooleanCheckbox>
+        <h:outputText id="checkedvalue2" value="#{ajaxtag.checked}"/>
+        <br/>
+
+        <!-- ajax "event" Value Expression -->
+        <h:selectBooleanCheckbox id="checkbox3" value="#{ajaxtag.checked}">
+            <f:ajax event="#{ajaxtag.ajaxEvent}" render="checkedvalue3"/>
+        </h:selectBooleanCheckbox>
+        <h:outputText id="checkedvalue3" value="#{ajaxtag.checked}"/>
+        <br/>
+
+        <!-- Resets the counter, doesn't refresh the page -->
+        <h:commandButton id="reset" value="reset" actionListener="#{ajaxtag.reset}">
+            <f:ajax execute="reset"/>
+        </h:commandButton>
+        <h:commandButton id="reload" value="reload" />
+    </h:form>
+    <!-- Contained outside the form - shouldn't update except for full page load -->
+    <h:outputText id="out4" value="#{ajaxtag.count}"/>
+
+</h:body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/ajax/ajaxTagEventWrapping.xhtml b/test/servlet30/systest/src/main/webapp/ajax/ajaxTagEventWrapping.xhtml
new file mode 100644
index 0000000..d8abc09
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/ajax/ajaxTagEventWrapping.xhtml
@@ -0,0 +1,132 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+        PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+<h:head>
+    <title>Ajax Tag Test Page</title>
+</h:head>
+<h:body>
+    <script type="text/javascript">
+        var count = 1;
+        function say() {
+            var out2 = document.getElementById("say");
+            out2.innerHTML = count++;
+        };
+    </script>
+    <h1>Test onclick and onchange wrapping</h1>
+    <h:form id="form" prependId="false">
+        <h:outputText id="out1" value="#{ajaxtag.count}"/>
+        <br/>
+        <h:outputText id="say" value="init"/>
+        <br/>
+        <h:outputText id="paramOut" value="#{param.testname}"/>
+        <br/>
+        <!-- Increment the counter on the server, and the client -->
+        <h:commandButton id="button1" value="Count">
+            <f:ajax render="out1"/>
+        </h:commandButton>
+        <br/>
+        <h:commandButton id="button2" value="Say"
+                onclick="say();return false;"/>
+        <br/>
+        <h:commandButton id="button3" value="Count and Say"
+                onclick="say();return true;">
+            <f:ajax render="out1 paramOut"/>
+        </h:commandButton>
+        <br/>
+        <h:commandButton id="button4" value="Param">
+            <f:param name="testname" value="testval"/>
+        </h:commandButton>
+        <br/>
+        <h:commandButton id="button5" value="Count and Param">
+            <f:param name="testname" value="testval"/>
+            <f:ajax render="out1 paramOut"/>
+        </h:commandButton>
+        <br/>
+        <h:commandButton id="button6" value="Count and Say and Param"
+                onclick="say();return true;">
+            <f:param name="testname" value="testval"/>
+            <f:ajax render="out1 paramOut"/>
+        </h:commandButton>
+        <br/>
+        <h:commandButton id="button7" value="Say and Param"
+                onclick="say();return true;">
+            <f:param name="testname" value="testval"/>
+        </h:commandButton>
+        <br/>
+        <h:selectBooleanCheckbox id="checkbox1" value="#{ajaxtag.checked}">
+            <f:ajax render="checkedvalue1"/>
+            </h:selectBooleanCheckbox>
+        <h:outputText id="checkedvalue1" value="#{ajaxtag.checked}"/>
+        <br/>
+        <h:selectBooleanCheckbox id="checkbox2" value="#{ajaxtag.checked}"
+                onclick="say();return true;">
+            <f:ajax render="checkedvalue2"/>
+        </h:selectBooleanCheckbox>
+        <h:outputText id="checkedvalue2" value="#{ajaxtag.checked}"/>
+        <br/>
+        <h:selectBooleanCheckbox id="checkbox3" value="#{ajaxtag.checked}"
+                onclick="say();return true;">
+        </h:selectBooleanCheckbox>
+        <h:outputText id="checkedvalue3" value="#{ajaxtag.checked}"/>
+        <br/>
+        <h:selectBooleanCheckbox id="checkbox4" value="#{ajaxtag.checked}"/>
+        <h:outputText id="checkedvalue4" value="#{ajaxtag.checked}"/>
+        <br/>
+        <!-- Resets the counter, doesn't refresh the page -->
+        <h:commandButton id="reset" value="reset" actionListener="#{ajaxtag.reset}">
+            <f:ajax execute="reset"/>
+        </h:commandButton>
+        <h:commandButton id="reload" value="reload" />
+    </h:form>
+    <!-- Contained outside the form - shouldn't update except for full page load -->
+    <h:outputText id="out2" value="#{ajaxtag.count}"/>
+
+</h:body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/ajax/ajaxTagKeywords.xhtml b/test/servlet30/systest/src/main/webapp/ajax/ajaxTagKeywords.xhtml
new file mode 100644
index 0000000..93099a9
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/ajax/ajaxTagKeywords.xhtml
@@ -0,0 +1,93 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+        PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+<h:head>
+    <title>Ajax Request Test Page</title>
+</h:head>
+<h:body>
+    <h1>Simple Counter Test</h1>
+    <h:form id="countForm" prependId="false">
+        <h:outputText id="out1" value="#{ajaxrequest.count}"/>
+        <br/>
+        <h:outputText id="out2" value="#{ajaxrequest.count}"/>
+        <br/>
+        <h:commandButton id="button1" value="Count">
+            <f:ajax render="@all"/>
+        </h:commandButton>
+        <br/>
+        <br/>
+        <h:commandButton id="button2" value="Count">
+            <f:ajax render="@form"/>
+        </h:commandButton>
+        <br/>
+        <br/>
+        <h:commandButton id="button3" value="#{ajaxrequest.count}">
+            <f:ajax render="@this"/>
+        </h:commandButton>
+        <br/>
+        <br/>
+        <h:commandButton id="button4" value="Count">
+            <f:ajax render="@none"/>
+        </h:commandButton>
+        <br/>
+        <br/>
+        <h:commandButton id="button5" value="Count">
+            <f:ajax render="countForm:out2"/>
+        </h:commandButton>
+        <br/>
+        <h:commandButton id="reset" value="reset" actionListener="#{ajaxrequest.resetCount}">
+            <f:ajax execute="countForm:reset" render="countForm:out1"/>
+        </h:commandButton>
+    </h:form>
+    <!-- Contained outside the form - shouldn't update except for full page load -->
+    <h:outputText id="out3" value="#{ajaxrequest.count}"/>
+
+</h:body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/ajax/ajaxTagMulti.xhtml b/test/servlet30/systest/src/main/webapp/ajax/ajaxTagMulti.xhtml
new file mode 100644
index 0000000..f67a58a
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/ajax/ajaxTagMulti.xhtml
@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+        PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+<h:head>
+    <title>Ajax Request Test Page</title>
+</h:head>
+<h:body>
+    <h:outputScript library="javax.faces" name="jsf.js" target="head"/>
+    <h1>Simple Counter Test</h1>
+    <h:form id="countForm">
+        <h:outputText id="out1" value="#{ajaxrequest.count}"/>
+        <br/>
+        <h:outputText id="out2" value="#{ajaxrequest.count}"/>
+        <br/>
+        <h:outputText id="out3" value="#{ajaxrequest.count}"/>
+        <br/>
+        <!-- Increment the counter on the server, and the client -->
+        <h:commandButton id="button1" value="Count 1">
+            <f:ajax render="out1"/>
+        </h:commandButton>
+        <br/>
+        <h:commandButton id="button2" value="Count 2">
+            <f:ajax render="out1 out2"/>
+        </h:commandButton>
+        <br/>
+        <h:commandButton id="button3" value="Count all 3">
+            <f:ajax render="out1 out2 out3"/>
+        </h:commandButton>
+        <br/>
+        <h:commandButton id="button4" value="Refresh Form">
+            <f:ajax render="countForm"/>
+        </h:commandButton>
+        <br/>
+        <!-- Resets the counter, doesn't refresh the page -->
+        <h:commandButton id="reset" value="reset" actionListener="#{ajaxrequest.resetCount}">
+            <f:ajax execute="countForm:reset" render="countForm"/>
+        </h:commandButton>
+    </h:form>
+    <!-- Contained outside the form - shouldn't update except for full page load -->
+    <h:outputText id="outside" value="#{ajaxrequest.count}"/>
+
+</h:body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/ajax/ajaxTagResolve.xhtml b/test/servlet30/systest/src/main/webapp/ajax/ajaxTagResolve.xhtml
new file mode 100644
index 0000000..4048054
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/ajax/ajaxTagResolve.xhtml
@@ -0,0 +1,99 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+        PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+<h:head>
+    <title>Ajax Tag Resolve Test Page</title>
+</h:head>
+<h:body>
+    <h1>Test of Resolving Cliet Id's within Ajax Tag</h1>
+    <h:form id="form1">
+        <h:outputText id="out1" value="#{ajaxtag.count}"/>
+        <br/>
+        <h:outputText id="out5" value="#{ajaxtag.count}"/>
+        <br/>
+        <!-- Increment the counter on the server, and the client -->
+        <h:commandButton id="button1" value="Count 1">
+            <f:ajax render="out1"/>
+        </h:commandButton>
+        <br/>
+        <h:commandButton id="button2" value="Count 2">
+            <f:ajax render=":form2:out2"/>
+        </h:commandButton>
+        <br/>
+        <h:commandButton id="button3" value="Count 3">
+            <f:ajax render=":out3"/>
+        </h:commandButton>
+        <br/>
+        <h:commandButton id="button4" value="Count One">
+            <f:ajax render="#{ajaxtag.renderOne}"/>
+        </h:commandButton>
+        <br/>
+        <h:commandButton id="button5" value="Count List">
+            <f:ajax render="#{ajaxtag.renderList}"/>
+        </h:commandButton>
+        <br/>
+        <!-- Resets the counter, doesn't refresh the form -->
+        <h:commandButton id="reset" value="reset" actionListener="#{ajaxtag.reset}">
+            <f:ajax execute="reset" render="form1"/>
+        </h:commandButton>
+        <br/>
+        <h:commandButton id="reload" value="reload"/>
+        <br/>
+    </h:form>
+    <h:form id="form2">
+        <h:outputText id="out2" value="#{ajaxtag.count}"/>
+        <br/>
+    </h:form>
+    <h:outputText id="out3" value="#{ajaxtag.count}"/>
+    <br/>
+    <h:outputText id="out4" value="#{ajaxtag.count}"/>
+    <br/>
+</h:body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/ajax/ajaxTagWrapping.xhtml b/test/servlet30/systest/src/main/webapp/ajax/ajaxTagWrapping.xhtml
new file mode 100644
index 0000000..1986239
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/ajax/ajaxTagWrapping.xhtml
@@ -0,0 +1,106 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+        PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+<h:head>
+    <title>Ajax Tag Test Page</title>
+</h:head>
+<h:body>
+    <h1>Test Tag with each component</h1>
+    <h:form id="form" prependId="false">
+        <h:outputText id="out1" value="#{ajaxtag.count}"/>
+        <br/>
+        <!-- Increment the counter on the server, and the client -->
+        <h:commandButton id="button1" value="Count">
+            <f:ajax render="out1"/>
+        </h:commandButton>
+        <br/>
+        <h:commandButton id="button2" value="Count">
+            <f:ajax event="click" render="out1"/>
+        </h:commandButton>
+        <br/>
+        <h:commandLink id="link1" value="Count" >
+            <f:ajax render="out1"/>
+        </h:commandLink>
+        <br/>
+        <h:inputText id="intext" value="#{ajaxtag.text}">
+            <f:ajax render="outtext"/>
+        </h:inputText>
+        <h:inputText id="intext2" value="#{ajaxtag.text}">
+            <f:ajax event="change" render="outtext"/>
+        </h:inputText>
+        <h:outputText id="outtext" value="#{ajaxtag.text}"/>
+        <br/>
+        <h:selectBooleanCheckbox id="checkbox" value="#{ajaxtag.checked}">
+            <f:ajax render="checkedvalue"/>
+        </h:selectBooleanCheckbox>
+        <h:outputText id="checkedvalue" value="#{ajaxtag.checked}"/>
+        <br/>
+        <h:selectManyCheckbox id="manyCheckbox" value="#{ajaxtag.checkedValues}">
+            <f:selectItem itemLabel="One" itemValue="1" />
+            <f:selectItem itemLabel="Two" itemValue="2" />
+            <f:selectItem itemLabel="Three" itemValue="3" />
+            <f:ajax render="manyCheckedValue" />
+        </h:selectManyCheckbox>
+        <h:outputText id="manyCheckedValue" value="#{ajaxtag.checkedValuesString}" />
+        <br/>
+        <!-- Resets the counter, doesn't refresh the page -->
+        <h:commandButton id="reset" value="reset" actionListener="#{ajaxtag.reset}">
+            <f:ajax execute="reset" render="form"/>
+        </h:commandButton>
+        <br/>
+        <h:commandButton id="reload-ajax" value="reload-ajax" type="submit">
+            <f:ajax execute="@all" render="@all"/>
+        </h:commandButton>
+        <br/>
+        <h:commandButton id="reload" value="reload" type="submit" />
+    </h:form>
+
+</h:body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/ajax/ajaxViewState.xhtml b/test/servlet30/systest/src/main/webapp/ajax/ajaxViewState.xhtml
new file mode 100644
index 0000000..86b0b6b
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/ajax/ajaxViewState.xhtml
@@ -0,0 +1,80 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+        PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+<h:head>
+    <title>Ajax Tag Test Page</title>
+</h:head>
+<h:body>
+    <script type="text/javascript">
+        var form = document.getElementById("form");
+        function vstate() {
+            var form = document.getElementById("form");
+            var state = jsf.getViewState(form);
+            var out2 = document.getElementById("say");
+            out2.innerHTML = state;
+        };
+    </script>
+
+    <h1>Test ajax tag event attribute</h1>
+    <h:form id="form" prependId="false">
+        <h:outputText id="say" value="init"/>
+        <br/>
+        <h:selectBooleanCheckbox id="checkbox1" value="#{ajaxtag.checked}">
+            <f:ajax render="checkedvalue1"/>
+            </h:selectBooleanCheckbox>
+        <h:outputText id="checkedvalue1" value="#{ajaxtag.checked}"/>
+        <br/>
+
+        <h:commandButton id="viewState" value="viewState" 
+            onclick="vstate(); return false;">
+        </h:commandButton>
+    </h:form>
+</h:body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/ajax/browser/browser.xhtml b/test/servlet30/systest/src/main/webapp/ajax/browser/browser.xhtml
new file mode 100644
index 0000000..0a5a629
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/ajax/browser/browser.xhtml
@@ -0,0 +1,58 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+<h:head>
+    <title>JSF Browser Compatibility Test</title>
+</h:head>
+<h:body>
+    <h:link value="browserSelectChange" outcome="browserSelectChange" />    <br/>
+    <h:link value="browserUpdateAttribute" outcome="browserUpdateAttribute" />   <br/>
+    <h:link value="browserUpdateView" outcome="browserUpdateView" />    <br/>
+    <h:link value="browserEvalScripts" outcome="browserEvalScripts" />    <br/>
+</h:body>
+</html>
+
diff --git a/test/servlet30/systest/src/main/webapp/ajax/browser/browserEvalScripts.xhtml b/test/servlet30/systest/src/main/webapp/ajax/browser/browserEvalScripts.xhtml
new file mode 100644
index 0000000..42131d9
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/ajax/browser/browserEvalScripts.xhtml
@@ -0,0 +1,88 @@
+<!DOCTYPE html
+        PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:cc="http://java.sun.com/jsf/composite/ajax">
+<h:head>
+    <title>Eval Script Tests</title>
+</h:head>
+<h:body>
+
+    <span id="target">Pending</span> <br/>
+
+    <script type="text/javascript">
+        var target;
+        window.fileMarker = 0;
+        var checkPass = function checkPass() {
+            target = document.getElementById('target');
+            if (typeof marker === 'undefined') {
+                target.innerHTML = "Failed - marker unset";
+            } else {
+                target.innerHTML = "PASSED";
+            }
+        };
+        var checkPassFile = function checkPassFile(data) {
+            target = document.getElementById("target");
+            if (window.fileMarker == 2) {
+                target.innerHTML = "PASSED";
+            } else {
+                target.innerHTML = "Failed - file marker is " + window.fileMarker + ", should be 2";
+            }
+        };
+        var evalFileEvent = function evalFileEvent(data) {
+            if (data.status == "success") {
+                // need a sleep function, to wait for file load
+                setTimeout(checkPassFile,200);
+            }
+        };
+    </script>
+    <div id="updated"></div>
+    <cc:evalTestFile id="evalFile"/>
+    <cc:evalTestInline id="evalInline"/>
+    <h:form>
+        <h:commandButton id="doEval" value="doEval" action="#{evalScriptBean.doEval}">
+            <f:ajax execute="@this" render="@none"/>
+        </h:commandButton>
+        Works in all browsers except K
+        <br/>
+        <h:commandButton id="doInline" value="doInline" action="#{evalScriptBean.doInline}">
+            <f:ajax execute="@this" render="@none"/>
+        </h:commandButton>
+        Works in all browsers
+        <br/>
+        <h:commandButton id="doInlineCC" value="doInlineCC">
+            <f:ajax execute="@none" render=":evalInline"/>
+        </h:commandButton>
+        Works in all browsers
+        <br/>
+        <h:commandButton id="doFile" value="doFile" action="#{evalScriptBean.doInline}">
+            <f:ajax execute="@none" render=":evalFile" onevent="evalFileEvent"/>
+        </h:commandButton>
+        Works in all browsers
+        <br/>
+        <h:commandButton id="doUpdateRootAllEval" value="doUpdateRootAllEval" action="#{evalScriptBean.doUpdateRootAllEval}">
+            <f:ajax execute="@this" render="@none"/>
+        </h:commandButton>
+        Works in all browsers
+        <br/>
+        <h:commandButton id="doUpdateRootSimpleEval" value="doUpdateRootSimpleEval" action="#{evalScriptBean.doUpdateRootSimpleEval}">
+            <f:ajax execute="@this" render="@none"/>
+        </h:commandButton>
+        Works in all browsers
+        <br/>
+        <h:commandButton id="doUpdateBodyTagEval" value="doUpdateBodyTagEval" action="#{evalScriptBean.doUpdateBodyTagEval}">
+            <f:ajax execute="@this" render="@none"/>
+        </h:commandButton>
+        Works in all browsers
+        <br/>
+        <h:commandButton id="insertBeforeEval" value="insertBeforeEval" action="#{evalScriptBean.insertBeforeEval}">
+            <f:ajax execute="@this" render="@none"/>
+        </h:commandButton>
+        Works in all browsers
+        <br/>
+    </h:form>
+</h:body>
+</html>
\ No newline at end of file
diff --git a/test/servlet30/systest/src/main/webapp/ajax/browser/browserSelectChange.xhtml b/test/servlet30/systest/src/main/webapp/ajax/browser/browserSelectChange.xhtml
new file mode 100644
index 0000000..2c81768
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/ajax/browser/browserSelectChange.xhtml
@@ -0,0 +1,118 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+<h:head>
+    <title>JSF OnChange Test</title>
+</h:head>
+<h:body bgcolor="white">
+    <h:outputText id="out" value="#{selectChange.string}"/>
+    <hr/>
+    <h:form>
+        <h:selectOneRadio value="#{selectChange.string}">
+            <f:ajax render=":out"/>
+            <f:selectItem itemValue="PASSED" itemLabel="Click Me"/>
+            <f:selectItem itemValue="PASSED" itemLabel="2"/>
+            <f:selectItem itemValue="PASSED" itemLabel="3"/>
+        </h:selectOneRadio>
+        <br/>
+    </h:form>
+
+
+    <h:form>
+        <h:selectOneMenu value="#{selectChange.string}">
+            <f:ajax render=":out"/>
+            <f:selectItem itemValue="PASSED" itemLabel="1"/>
+            <f:selectItem itemValue="PASSED" itemLabel="Click Me"/>
+            <f:selectItem itemValue="PASSED" itemLabel="3"/>
+        </h:selectOneMenu>
+    </h:form>
+
+    <h:form>
+        <h:selectOneListbox value="#{selectChange.string}">
+            <f:ajax render=":out"/>
+            <f:selectItem itemValue="PASSED" itemLabel="1"/>
+            <f:selectItem itemValue="PASSED" itemLabel="Click Me"/>
+            <f:selectItem itemValue="PASSED" itemLabel="3"/>
+        </h:selectOneListbox>
+    </h:form>
+
+    <h:form>
+        <h:selectOneListbox value="#{selectChange.string}">
+            <f:ajax render=":out"/>
+            <f:selectItem itemValue="PASSED" itemLabel="1"/>
+            <f:selectItem itemValue="PASSED" itemLabel="Click Me"/>
+            <f:selectItem itemValue="PASSED" itemLabel="3"/>
+        </h:selectOneListbox>
+    </h:form>
+
+    <h:form>
+        <h:selectManyListbox value="#{selectChange.sarray}">
+            <f:ajax render=":out"/>
+            <f:selectItem itemValue="PASSED" itemLabel="1"/>
+            <f:selectItem itemValue="PASSED" itemLabel="Click Me"/>
+            <f:selectItem itemValue="PASSED" itemLabel="3"/>
+        </h:selectManyListbox>
+    </h:form>
+
+    <h:form>
+        <h:selectManyCheckbox value="#{selectChange.sarray}">
+            <f:ajax render=":out"/>
+            <f:selectItem itemValue="PASSED" itemLabel="Check Me"/>
+            <f:selectItem itemValue="PASSED" itemLabel="2"/>
+            <f:selectItem itemValue="PASSED" itemLabel="3"/>
+        </h:selectManyCheckbox>
+    </h:form>
+
+    <h:form>
+        <h:outputLabel for="bool" value="Check me"/>
+        <h:selectBooleanCheckbox id="bool" value="#{selectChange.bool}">
+            <f:ajax render=":out"/>
+        </h:selectBooleanCheckbox>
+    </h:form>
+    
+</h:body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/ajax/browser/browserUpdateAttribute.xhtml b/test/servlet30/systest/src/main/webapp/ajax/browser/browserUpdateAttribute.xhtml
new file mode 100644
index 0000000..abd4c80
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/ajax/browser/browserUpdateAttribute.xhtml
@@ -0,0 +1,87 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+<h:head>
+    <title>Ajax Update Root</title>
+</h:head>
+<h:body>
+    <style type="text/css">
+        .green { background-color: green;}
+    </style>
+    <script type="text/javascript">
+        function checkPass() {
+            var check = document.getElementById('checkvalue');
+            check.value = 'PASSED';
+        };
+    </script>
+    <h:form id="form1" prependId="true">
+        <input id="checkvalue" value="Pending"/>
+        <br/>
+        <input type="button" id="checkbutton" value="" style="display: none"/>
+        <hr/>
+        <h:commandButton id="updatevalue" value="UpdateValue" action="#{browserAttributes.updateValue}">
+              <f:ajax execute="@this" render="@none"/>
+        </h:commandButton> Works in all browsers
+        <br/>
+        <h:commandButton id="updatestyle" value="UpdateStyle" action="#{browserAttributes.updateStyle}">
+              <f:ajax execute="@this" render="@none"/>
+        </h:commandButton> Works in all browsers
+        <br/>
+        <h:commandButton id="updateclass" value="UpdateClass" action="#{browserAttributes.updateClass}">
+              <f:ajax execute="@this" render="@none"/>
+        </h:commandButton> Works in all browsers
+        <br/>
+        <h:commandButton id="updateevent" value="UpdateEvent" action="#{browserAttributes.updateEvent}">
+              <f:ajax execute="@this" render="@none"/>
+        </h:commandButton> Works in all browsers
+        <br/>
+    </h:form>
+</h:body>
+</html>
+
diff --git a/test/servlet30/systest/src/main/webapp/ajax/browser/browserUpdateView.xhtml b/test/servlet30/systest/src/main/webapp/ajax/browser/browserUpdateView.xhtml
new file mode 100644
index 0000000..76511d5
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/ajax/browser/browserUpdateView.xhtml
@@ -0,0 +1,120 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+<h:head>
+    <title>Ajax Update Root</title>
+</h:head>
+<h:body style="background-color: silver">
+    <script type="text/javascript">
+        function checkPass() {
+            var body = document.getElementsByTagName('body')[0];
+            body.innerHTML = '<span id="newvalue">PASSED</span>';
+        };
+        function checkId() {
+            var body = document.getElementById('bodyId');
+            if (body) {
+                body.innerHTML = '<span id="newvalue">PASSED</span>';
+            } else {
+                body.innerHTML = '<span id="newvalue">Failed</span>';
+
+            }
+        };
+    </script>
+    <h:form id="form1">
+        <h:commandButton id="simpleroot" value="SimpleRoot" action="#{updateRootBean.updateRootSimple}">
+              <f:ajax execute="@this" render="@none"/>
+        </h:commandButton> Works in all browsers
+        <br/>
+        <h:commandButton id="bodyviewroot" value="RootBody" action="#{updateRootBean.updateRootBody}">
+              <f:ajax execute="@this" render="@none"/>
+        </h:commandButton> Works in all browsers
+        <br/>
+        <h:commandButton id="allviewroot" value="AllRoot" action="#{updateRootBean.updateRootAll}">
+                      <f:ajax execute="@this" render="@none"/>
+        </h:commandButton> Works in all browsers
+        <br/>
+        <h:commandButton id="faultyviewroot" value="AllRootFaulty" action="#{updateRootBean.updateRootFaulty}">
+                      <f:ajax execute="@this" render="@none"/>
+        </h:commandButton> Works in all browsers
+        <br/>
+        <h:commandButton id="bodysimple" value="BodySimple" action="#{updateRootBean.updateBodySimple}">
+                      <f:ajax execute="@this" render="@none"/>
+        </h:commandButton> Works in all browsers
+        <br/>
+        <h:commandButton id="bodytag" value="BodyTag" action="#{updateRootBean.updateBodyTag}">
+                      <f:ajax execute="@this" render="@none"/>
+        </h:commandButton> Works in all browsers
+        <br/>
+        <h:commandButton id="viewhead" value="ViewHead" action="#{updateRootBean.updateHead}">
+                      <f:ajax execute="@this" render="@none"/>
+        </h:commandButton> Fails on all - this is fine
+        <br/>
+        <h:commandButton id="rootsimpleevent" value="RootSimpleEvent" action="#{updateRootBean.updateRootSimpleEvent}">
+                      <f:ajax execute="@this" render="@none"/>
+        </h:commandButton> Works in all browsers
+        <br/>
+        <h:commandButton id="rootallevent" value="RootAllEvent" action="#{updateRootBean.updateRootAllEvent}">
+                      <f:ajax execute="@this" render="@none"/>
+        </h:commandButton> Works in all browsers
+        <br/>
+        <h:commandButton id="rootbodystyle" value="RootBodyStyle" action="#{updateRootBean.updateRootBodyStyle}">
+                      <f:ajax execute="@this" render="@none"/>
+        </h:commandButton> Works in all browsers
+        <br/>
+        <h:commandButton id="rootsimplestyle" value="RootSimpleStyle" action="#{updateRootBean.updateRootSimpleStyle}">
+                      <f:ajax execute="@this" render="@none"/>
+        </h:commandButton> Works in all browsers
+        <br/>
+        <h:commandButton id="rootallStyle" value="RootAllStyle" action="#{updateRootBean.updateRootAllStyle}">
+                      <f:ajax execute="@this" render="@none"/>
+        </h:commandButton> Works in all browsers
+        <br/>
+    </h:form>
+</h:body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/ajax/issue1760NestedAjaxCheckboxRender.xhtml b/test/servlet30/systest/src/main/webapp/ajax/issue1760NestedAjaxCheckboxRender.xhtml
new file mode 100644
index 0000000..64120d1
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/ajax/issue1760NestedAjaxCheckboxRender.xhtml
@@ -0,0 +1,109 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+<h:head>
+    <title>Ajax Checkbox rerender</title>
+    <style type="text/css">
+        .grayBox { padding: 8px; margin: 10px 0; border: 1px solid #CCC; background-color: #f9f9f9;  }
+    </style>
+
+</h:head>
+<body>
+    <h:form id="form1" prependId="false" styleClass="grayBox">
+
+        <p>nested ajax with render including component within the same form.</p>
+
+        <p>form1CurrentTime: 
+           <h:outputText id="checkedDisplay" value="#{test1.currentTimeMillis}" />.</p>
+
+        <h:selectBooleanCheckbox id="checkbox1" value="#{test1.booleanProperty}">
+            <f:ajax render="checkedDisplay" event="click"/>
+        </h:selectBooleanCheckbox>
+
+    </h:form>
+
+    <h:form id="form2" prependId="false" styleClass="grayBox">
+
+        <p>nested ajax with render including @form.</p>
+
+        <p>form2CurrentTime:
+           <h:outputText id="checkedDisplay2" value="#{test1.currentTimeMillis}" />.</p>
+
+        <h:selectBooleanCheckbox id="checkbox2" value="#{test1.booleanProperty}">
+            <f:ajax render="@form" event="click"/>
+        </h:selectBooleanCheckbox>
+
+    </h:form>
+
+    <h:form id="form3" prependId="false" styleClass="grayBox">
+
+        <p>form3CurrentTime: 
+           <h:outputText id="checkedDisplay3" value="#{test1.currentTimeMillis}" />.</p>
+
+        <h:commandButton id="button1" value="reload">
+            <f:ajax render="checkedDisplay3" event="click"/>
+        </h:commandButton>
+
+    </h:form>
+
+    <h:form id="form4" prependId="false" styleClass="grayBox">
+
+        <p>form4CurrentTime:
+           <h:outputText id="checkedDisplay4" value="#{test1.currentTimeMillis}" />.</p>
+
+        <h:commandLink id="link1" value="reload">
+            <f:ajax render="@form" event="click"/>
+        </h:commandLink>
+
+    </h:form>
+
+
+</body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/ajax/jsfJS.xhtml b/test/servlet30/systest/src/main/webapp/ajax/jsfJS.xhtml
new file mode 100644
index 0000000..d22474e
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/ajax/jsfJS.xhtml
@@ -0,0 +1,82 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+<h:head>
+    <title>Ajax Update Root</title>
+</h:head>
+<h:body style="background-color: silver">
+
+    <script type="text/javascript">
+        function nodeDelete() {
+            var out1 = document.getElementById("result1");
+            var out2 = document.getElementById("result2");
+            var parent = document.createElement("foo");
+            var child = document.createElement("bar");
+            parent.appendChild(child);
+            out1.innerHTML = "child nodes "+parent.childNodes.length;
+            jsf.ajax.testDeleteNode(child);
+            out2.innerHTML = "child nodes "+parent.childNodes.length;
+        };
+    </script>
+
+    <h:outputScript library="ajax" name="test.jsf.js" target="head"/>
+
+    <h:form prependId="false">
+       <h:outputText id="result1" value="init" />
+       <h:outputText id="result2" value="init" />
+       <br/>
+       <h:commandButton id="button" value="button"
+          onclick="nodeDelete(); return false;" />
+    </h:form>
+
+    <div id="div1"/>
+    <div id="div2"/>
+</h:body>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/ajax/redirecttarget.xhtml b/test/servlet30/systest/src/main/webapp/ajax/redirecttarget.xhtml
new file mode 100644
index 0000000..5113b5f
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/ajax/redirecttarget.xhtml
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+<head>
+    <title>Redirect Target</title>
+</head>
+<body>
+<h:outputText id="redirect" value="Redirect Target"/>
+</body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/annotationtest.xhtml b/test/servlet30/systest/src/main/webapp/annotationtest.xhtml
new file mode 100644
index 0000000..a8fa6b5
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/annotationtest.xhtml
@@ -0,0 +1,59 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    <head>
+        <title>Annotation Scanning Test Case</title>
+    </head>
+
+    <body>
+        <h:outputText value="#{request.servletContext.serverInfo}"/>
+        <h:outputText style="font-style: italic;"
+                      value="Test Passed: #{annotationTestBean.testResult}"/>
+
+        <p>AnnotatedPhaseListener: #{AnnotatedPhaseListenerMessage}</p>
+    </body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/bar01.jsp b/test/servlet30/systest/src/main/webapp/bar01.jsp
new file mode 100644
index 0000000..30c3c13
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/bar01.jsp
@@ -0,0 +1,51 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+<%@ page contentType="text/html" language="java" %>
+<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
+<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
+<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %>
+
+<f:subview id="bar01">
+<h:outputText value="bar01"/>
+</f:subview>
diff --git a/test/servlet30/systest/src/main/webapp/bar02.jsp b/test/servlet30/systest/src/main/webapp/bar02.jsp
new file mode 100644
index 0000000..516ff63
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/bar02.jsp
@@ -0,0 +1,51 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+<%@ page contentType="text/html" language="java" %>
+<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
+<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
+<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %>
+
+
+<h:outputText value="bar02"/>
+
diff --git a/test/servlet30/systest/src/main/webapp/binding01.jsp b/test/servlet30/systest/src/main/webapp/binding01.jsp
new file mode 100644
index 0000000..474563b
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/binding01.jsp
@@ -0,0 +1,60 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+<%@ page contentType="text/html" language="java" %>
+<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
+<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %>
+
+<f:view>
+<html>
+<head>
+<title>Test case for bug5030555</title>
+</head>
+<body>
+<h:form id="form">
+<h:inputText id="toChange" binding="#{methodRef.inputField}"/>
+<h:commandButton id="changeValue" value="changeValue"/>
+</h:form>
+</body>
+</html>
+</f:view>
diff --git a/test/servlet30/systest/src/main/webapp/clearApplicationMapProperty.xhtml b/test/servlet30/systest/src/main/webapp/clearApplicationMapProperty.xhtml
new file mode 100644
index 0000000..2cb1ba4
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/clearApplicationMapProperty.xhtml
@@ -0,0 +1,58 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:c="http://java.sun.com/jsp/jstl/core"
+>
+<h:head>
+<title>Clear an application scoped property named in a query string parameter</title>
+</h:head>
+
+<h:body>
+
+    <c:set value="#{null}" target="#{applicationScope}" property="#{param['name']}" />
+
+</h:body>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/commandLinkPrependId.jsp b/test/servlet30/systest/src/main/webapp/commandLinkPrependId.jsp
new file mode 100644
index 0000000..9c0031c
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/commandLinkPrependId.jsp
@@ -0,0 +1,76 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+  <head>
+    <title>Test CommandLink inside prependId form with button name == submit</title>
+    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
+    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+  </head>
+
+  <body>
+    <h1>Test CommandLink inside prependId form with button name == submit</h1>
+
+<f:view>
+
+  <h:form id="form" prependId="false">
+
+    <p>This form has prepndId==false and has a button with an
+    id=="submit".</p>
+
+    <p><h:commandButton id="submit" value="submit" action="welcome"/></p>
+
+    <p><h:commandLink id="whatever" action="welcome">Command Link</h:commandLink></p>
+
+  </h:form>
+
+</f:view>
+
+    <hr>
+    <address><a href="mailto:ed.burns at sun.com">Edward Burns</a></address>
+<!-- Created: Fri Jul 21 06:40:37 PDT 2006 -->
+<!-- hhmts start -->
+Last modified: Fri Jul 21 07:12:08 PDT 2006
+<!-- hhmts end -->
+  </body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/component.jsp b/test/servlet30/systest/src/main/webapp/component.jsp
new file mode 100644
index 0000000..f36adf2
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/component.jsp
@@ -0,0 +1,67 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<%@ page contentType="text/html"
+%><%@ page import="javax.faces.FactoryFinder"
+%><%@ page import="javax.faces.application.Application"
+%><%@ page import="javax.faces.application.ApplicationFactory"
+%><%@ page import="javax.faces.component.UIComponent"
+%><%@ page import="com.sun.faces.systest.TestComponent"
+%><%
+
+  // Acquire our Application instance
+  ApplicationFactory afactory = (ApplicationFactory)
+   FactoryFinder.getFactory(FactoryFinder.APPLICATION_FACTORY);
+  Application appl = afactory.getApplication();
+
+  // try to retrieve our component from Application
+  UIComponent result = appl.createComponent("TestComponent");
+  // report the result
+  if (result == null || 
+      !(result instanceof com.sun.faces.systest.TestComponent)) {
+    out.println("/component.jsp FAILED");
+    return;
+  } else {
+      out.println("/component.jsp PASSED");
+  }
+  
+%>
diff --git a/test/servlet30/systest/src/main/webapp/component01.jsp b/test/servlet30/systest/src/main/webapp/component01.jsp
new file mode 100644
index 0000000..aedf581
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/component01.jsp
@@ -0,0 +1,75 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<%@ page contentType="text/html"
+%><%@ page import="javax.faces.FactoryFinder"
+%><%@ page import="javax.faces.application.Application"
+%><%@ page import="javax.faces.application.ApplicationFactory"
+%><%@ page import="javax.faces.component.UIComponent"
+%><%@ page import="com.sun.faces.systest.TestComponent"
+%><%
+
+  // Acquire our Application instance
+  ApplicationFactory afactory = (ApplicationFactory)
+   FactoryFinder.getFactory(FactoryFinder.APPLICATION_FACTORY);
+  Application appl = afactory.getApplication();
+
+  // replace mappings provided by the JSF implementation in order to 
+  // customize the behavior of standard JSF features.
+  UIComponent oldForm = appl.createComponent("javax.faces.Form");
+  appl.addComponent("javax.faces.Form", "com.sun.faces.systest.TestComponent");
+
+  // try to retrieve our component from Application
+  UIComponent result = appl.createComponent("javax.faces.Form");
+  // report the result
+  if (result == null || 
+      !(result instanceof com.sun.faces.systest.TestComponent)) {
+    out.println("/component01.jsp FAILED");
+    return;
+  } else {
+      out.println("/component01.jsp PASSED");
+  }
+
+  // restore the old mapping
+  appl.addComponent("javax.faces.Form", oldForm.getClass().getName());
+  
+%>
diff --git a/test/servlet30/systest/src/main/webapp/component02.jsp b/test/servlet30/systest/src/main/webapp/component02.jsp
new file mode 100644
index 0000000..45e1cdd
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/component02.jsp
@@ -0,0 +1,58 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<%--
+    Added for issue 212.  
+    Ensure transient components do not cause issues
+    with state restoration (verbatim is treated as transient)
+--%>
+<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
+<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+<f:view>
+    <h:form>
+        <f:verbatim>
+            Test Verbatim
+        </f:verbatim>
+        <h:outputText value="Test Output Text"/>       
+        <h:commandButton id="submit" value="Groovy Button"/>
+    </h:form>
+</f:view>
diff --git a/test/servlet30/systest/src/main/webapp/component03.jsp b/test/servlet30/systest/src/main/webapp/component03.jsp
new file mode 100644
index 0000000..f5faa7b
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/component03.jsp
@@ -0,0 +1,60 @@
+<%--
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ 
+ Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+ 
+ The contents of this file are subject to the terms of either the GNU
+ General Public License Version 2 only ("GPL") or the Common Development
+ and Distribution License("CDDL") (collectively, the "License").  You
+ may not use this file except in compliance with the License. You can obtain
+ a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
+ or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ language governing permissions and limitations under the License.
+ 
+ When distributing the software, include this License Header Notice in each
+ file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
+ Sun designates this particular file as subject to the "Classpath" exception
+ as provided by Sun in the GPL Version 2 section of the License file that
+ accompanied this code.  If applicable, add the following below the License
+ Header, with the fields enclosed by brackets [] replaced by your own
+ identifying information: "Portions Copyrighted [year]
+ [name of copyright owner]"
+ 
+ Contributor(s):
+ 
+ If you wish your version of this file to be governed by only the CDDL or
+ only the GPL Version 2, indicate your decision by adding "[Contributor]
+ elects to include this software in this distribution under the [CDDL or GPL
+ Version 2] license."  If you don't indicate a single choice of license, a
+ recipient has the option to distribute your version of this file under
+ either the CDDL, the GPL Version 2 or to extend the choice of license to
+ its licensees as provided above.  However, if you add GPL Version 2 code
+ and therefore, elected the GPL Version 2 license, then the option applies
+ only if the new code is made subject to such option by the copyright
+ holder.
+--%>
+
+<%--
+    Added for issue 1492.
+    Ensure transient components do not cause issues
+    with state restoration (verbatim is treated as transient)
+--%>
+
+<html><head><title>Issue1492TestCase</title></head>
+<body>
+
+
+<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
+<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+<f:view>
+    <h:form>
+        
+        <h:commandButton binding="#{viewScopedBean.commandButton}" id="submit" value="reload"/>
+
+        |<h:outputText value="#{viewScopedBean.ctorMessage}" />|
+
+    </h:form>
+</f:view>
+
+</body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/componentImplicitObject.jsp b/test/servlet30/systest/src/main/webapp/componentImplicitObject.jsp
new file mode 100644
index 0000000..db15dca
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/componentImplicitObject.jsp
@@ -0,0 +1,64 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<%@ page contentType="text/html" %>
+<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %>
+<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
+<%
+    java.util.List<String> l = new java.util.ArrayList<String>(2);
+    l.add("one");
+    l.add("two");
+    request.setAttribute("list", l);
+%>
+<f:view>
+    <h:form prependId="false">
+        <h:outputText id="ot" value="#{component.id}"/>
+        <h:dataTable value="#{requestScope.list}" var="v">
+            <h:column>
+                <f:facet name="header" >
+                    <h:outputText id="facetOT" value="#{component.id}"/>
+                </f:facet>
+                <h:inputText id="it" value="#{component.id}"/>
+            </h:column>
+        </h:dataTable>        
+    </h:form>
+</f:view>
diff --git a/test/servlet30/systest/src/main/webapp/composite/1462-using.xhtml b/test/servlet30/systest/src/main/webapp/composite/1462-using.xhtml
new file mode 100644
index 0000000..9444d44
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/composite/1462-using.xhtml
@@ -0,0 +1,19 @@
+<?xml version='1.0' encoding='UTF-8' ?> 
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:ez="http://java.sun.com/jsf/composite/composite">
+
+    <ez:verifyUserIsInRole id="mycc"/>
+
+    <h:head>
+    </h:head>
+    
+    <h:body>
+Message: #{message}.
+
+
+    </h:body>
+    
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/composite/action.xhtml b/test/servlet30/systest/src/main/webapp/composite/action.xhtml
new file mode 100644
index 0000000..bd92266
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/composite/action.xhtml
@@ -0,0 +1,93 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:ez="http://java.sun.com/jsf/composite/composite">
+<h:head>
+<title>Action at various composite nesting levels</title>
+</h:head>
+
+<h:body>
+
+  <ui:debug hotkey="p" rendered="true"/>
+
+<h:form id="form">
+
+    <p>
+        1. One nesting level.  Level 1 targets an action.
+    </p>
+    <ez:customAction id="c0" action="#{compositeBean.action}" />
+
+    <p>
+        2. Two nesting levels.  Level 1 defines a custom action and passes it to level 2.  Level 2 targets an action.
+    </p>
+    <ez:actionWrapper1 id="c1" customAction="#{compositeBean.action}"/>
+
+    <p>
+        3. Two nesting levels.  Level 1 defines a bean and passes a property as an action to level 2.  Level 2 targets an action.
+    </p>
+    <ez:actionWrapper2 id="c2" bean="#{compositeBean}" />
+
+    <p>
+        4. Three nesting levels.  Level 1 defines a bean and passes a property as a custom action to level 2.  Level 2 defines a custom action and passes it to level 3.  Level 3 targets an action.
+    </p>
+    <ez:actionWrapper3 id="c3" bean="#{compositeBean}" />
+
+    <p>
+        5. Three nesting levels.  Level 1 defines a custom action and passes it to level 2.  Level 2 defines a custom action and passes it to level 3.  Level 3 targets an action.
+    </p>
+    <ez:actionWrapper4 id="c4" customAction="#{compositeBean.action}" />
+
+</h:form>
+<h:messages id="messages"/>
+<h:form>
+    <h:commandButton value="Clear Messages" />
+</h:form>
+
+
+</h:body>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/composite/actionListener.xhtml b/test/servlet30/systest/src/main/webapp/composite/actionListener.xhtml
new file mode 100644
index 0000000..ef639c1
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/composite/actionListener.xhtml
@@ -0,0 +1,93 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:ez="http://java.sun.com/jsf/composite/composite">
+<h:head>
+<title>ActionListener at various composite nesting levels</title>
+</h:head>
+
+<h:body>
+
+  <ui:debug hotkey="p" rendered="true"/>
+
+<h:form id="form">
+
+    <p>
+        1. One nesting level.  Level 1 targets an actionListener.
+    </p>
+    <ez:customActionListener id="c0" actionListener="#{compositeBean.actionListener}" />
+
+    <p>
+        2. Two nesting levels.  Level 1 defines a custom actionListener and passes it to level 2.  Level 2 targets an actionListener.
+    </p>
+    <ez:actionListenerWrapper1 id="c1" customActionListener="#{compositeBean.actionListener}"/>
+
+    <p>
+        3. Two nesting levels.  Level 1 defines a bean and passes a property as an actionListener to level 2.  Level 2 targets an actionListener.
+    </p>
+    <ez:actionListenerWrapper2 id="c2" bean="#{compositeBean}" />
+
+    <p>
+        4. Three nesting levels.  Level 1 defines a bean and passes a property as a custom actionListener to level 2.  Level 2 defines a custom actionListener and passes it to level 3.  Level 3 targets an actionListener.
+    </p>
+    <ez:actionListenerWrapper3 id="c3" bean="#{compositeBean}" />
+
+    <p>
+        5. Three nesting levels.  Level 1 defines a custom actionListener and passes it to level 2.  Level 2 defines a custom actionListener and passes it to level 3.  Level 3 targets an actionListener.
+    </p>
+    <ez:actionListenerWrapper4 id="c4" customActionListener="#{compositeBean.actionListener}" />
+
+</h:form>
+<h:messages id="messages"/>
+<h:form>
+    <h:commandButton value="Clear Messages" />
+</h:form>
+
+
+</h:body>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/composite/actionsource.xhtml b/test/servlet30/systest/src/main/webapp/composite/actionsource.xhtml
new file mode 100644
index 0000000..d1d3f60
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/composite/actionsource.xhtml
@@ -0,0 +1,106 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:ez="http://java.sun.com/jsf/composite/composite">
+<h:head>
+<title>actionSource1</title>
+</h:head>
+
+<h:body>
+
+  <ui:debug hotkey="p" rendered="true"/>
+
+<h:form id="form">
+   
+    <p>
+        Maps ActionListener to commandButton within composite/actionSource1.xhtml using
+        only the name attribute.
+    </p>
+    <ez:actionSource1 id="actionsource1">
+        <f:actionListener for="command" binding="#{compositeBean.actionListener}"/>
+    </ez:actionSource1>
+
+    <p>
+        Maps ActionListener to commandButton within composite/actionSource2.xhtml using
+        name and target attributes.
+    </p>
+    <ez:actionSource2 id="actionsource2">
+        <f:actionListener for="command" binding="#{compositeBean.actionListener}"/>
+    </ez:actionSource2>
+    
+    <p>
+        Maps ActionListener to a commandButton within a composite/actionSource1.xhtml
+        which is nested within composite/actionSource3.xhtml. Using the same ID
+        in the nesting.
+    </p>
+    <ez:actionSource3 id="actionsource3">
+        <f:actionListener for="command" binding="#{compositeBean.actionListener}"/>
+    </ez:actionSource3>
+
+    <p>
+        Ensure actionListeners are properly re-targeted when the
+        target of the actionListener is nested within another naming
+        container.  Note that the value of the 'for' attribute doesn't
+        mimic the NamingContainer hierarchy, that's handled by the
+        'targets' attribute within the composite:implementation section
+        of actionSource4.xhtml.
+    </p>
+    <ez:actionSource4 id="actionsource4">
+        <f:actionListener for="command" binding="#{compositeBean.actionListener}"/>
+    </ez:actionSource4>
+
+
+    <p />
+    <h:commandButton id="clear" value="Clear Messages"/>
+
+</h:form>
+ <h:messages id="messages"/>
+
+
+</h:body>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/composite/addPhaseListener.xhtml b/test/servlet30/systest/src/main/webapp/composite/addPhaseListener.xhtml
new file mode 100644
index 0000000..c5a4f61
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/composite/addPhaseListener.xhtml
@@ -0,0 +1,52 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!--
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+-->
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:my="http://java.sun.com/jsf/composite/composite">
+<h:head>
+    <title>PhaseListener within a composite component</title>
+</h:head>
+<h:body>
+/composite/addPhaseListener.xhtml <my:addPhaseListener />
+</h:body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/composite/attachedconverter.xhtml b/test/servlet30/systest/src/main/webapp/composite/attachedconverter.xhtml
new file mode 100644
index 0000000..3d825e4
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/composite/attachedconverter.xhtml
@@ -0,0 +1,118 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:ez="http://java.sun.com/jsf/composite/composite">
+<h:head>
+<title>attachedconverter</title>
+</h:head>
+
+<h:body>
+
+  <ui:debug hotkey="p" rendered="true"/>
+
+<h:form id="form">
+   
+    <p>
+        Maps Conveter to inputText within composite/converter1.xhtml using
+        only the name attribute.
+    </p>
+    <ez:converter1 id="converter1">
+        <f:converter for="input" binding="#{compositeBean.converter}"/>
+    </ez:converter1>
+    <h:commandButton id="s1" value="Submit"/>
+
+</h:form>
+
+<h:form id="form2">
+    <p>
+        Maps Converter to inputText within composite/converter2.xhtml using
+        name and target attributes.
+    </p>
+    <ez:converter2 id="converter2">
+        <f:converter for="input" binding="#{compositeBean.converter}"/>
+    </ez:converter2>
+    <h:commandButton id="s2" value="Submit"/>
+
+</h:form>
+
+<h:form id="form3">
+    <p>
+        Maps Converter to a inputText within a composite/converter1.xhtml
+        which is nested within composite/converter3.xhtml. Using the same ID
+        in the nesting.
+    </p>
+    <ez:converter3 id="converter3">
+        <f:converter for="input" binding="#{compositeBean.converter}"/>
+    </ez:converter3>
+    <h:commandButton id="s3" value="Submit"/>
+
+</h:form>
+
+<h:form id="form4">
+    <p>
+        Ensure converters are properly re-targeted when the
+        target of the converter is nested within another naming
+        container.  Note that the value of the 'for' attribute doesn't
+        mimic the NamingContainer hierarchy, that's handled by the
+        'targets' attribute within the composite:implementation section
+        of converter4.xhtml.
+    </p>
+    <ez:converter4 id="converter4">
+        <f:converter for="input" binding="#{compositeBean.converter}"/>
+    </ez:converter4>
+    <h:commandButton id="s4" value="Submit"/>
+</h:form>
+
+
+<h:form id="cf">
+    <p />
+    <h:commandButton id="clear" value="Clear Messages"/>
+</h:form>
+<h:messages id="messages"/>
+</h:body>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/composite/attachedvalidator.xhtml b/test/servlet30/systest/src/main/webapp/composite/attachedvalidator.xhtml
new file mode 100644
index 0000000..d889917
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/composite/attachedvalidator.xhtml
@@ -0,0 +1,118 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:ez="http://java.sun.com/jsf/composite/composite">
+<h:head>
+<title>attachedvalidator</title>
+</h:head>
+
+<h:body>
+
+  <ui:debug hotkey="p" rendered="true"/>
+
+<h:form id="form">
+   
+    <p>
+        Maps Validator to inputText within composite/validator1.xhtml using
+        only the name attribute.
+    </p>
+    <ez:validator1 id="validator1">
+        <f:validator for="input" binding="#{compositeBean.validator}"/>
+    </ez:validator1>
+    <h:commandButton id="s1" value="Submit"/>
+
+</h:form>
+
+<h:form id="form2">
+    <p>
+        Maps Validator to inputText within composite/validator2.xhtml using
+        name and target attributes.
+    </p>
+    <ez:validator2 id="validator2">
+        <f:validator for="input" binding="#{compositeBean.validator}"/>
+    </ez:validator2>
+    <h:commandButton id="s2" value="Submit"/>
+
+</h:form>
+
+<h:form id="form3">
+    <p>
+        Maps Validator to a inputText within a composite/validator1.xhtml
+        which is nested within composite/validator3.xhtml. Using the same ID
+        in the nesting.
+    </p>
+    <ez:validator3 id="validator3">
+        <f:validator for="input" binding="#{compositeBean.validator}"/>
+    </ez:validator3>
+    <h:commandButton id="s3" value="Submit"/>
+
+</h:form>
+
+<h:form id="form4">
+    <p>
+        Ensure validators are properly re-targeted when the
+        target of the validator is nested within another naming
+        container.  Note that the value of the 'for' attribute doesn't
+        mimic the NamingContainer hierarchy, that's handled by the
+        'targets' attribute within the composite:implementation section
+        of validator4.xhtml.
+    </p>
+    <ez:validator4 id="validator4">
+        <f:validator for="input" binding="#{compositeBean.validator}"/>
+    </ez:validator4>
+    <h:commandButton id="s4" value="Submit"/>
+</h:form>
+
+
+<h:form>
+    <p />
+    <h:commandButton id="clear" value="Clear Messages"/>
+</h:form>
+<h:messages id="messages"/>
+</h:body>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/composite/behavior/composite.xhtml b/test/servlet30/systest/src/main/webapp/composite/behavior/composite.xhtml
new file mode 100644
index 0000000..221c659
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/composite/behavior/composite.xhtml
@@ -0,0 +1,58 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ezb="http://java.sun.com/jsf/composite/ezbehaviors"
+      xmlns:b="http://mojarra.dev.java.net/composite-behavior">
+      <h:form id="form">
+        Project Stage: <h:outputText value="#{facesContext.application.projectStage}"/> <br/>
+        <ezb:compositeTest id="composite" commandAction="#{compositeBehaviorTestBean.doAction}">
+              	<b:behavior event="ok"/>        
+                <f:validateLength for="input" minimum="3" />
+        </ezb:compositeTest>
+        <h:commandButton action="refresh" value="refresh" id="refresh" />
+        <h:messages />
+      </h:form>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/composite/behavior/composite02.xhtml b/test/servlet30/systest/src/main/webapp/composite/behavior/composite02.xhtml
new file mode 100644
index 0000000..ae479ab
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/composite/behavior/composite02.xhtml
@@ -0,0 +1,55 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+
+<h:form prependId="false">
+
+  <p>Reaching this page indicates that the method expression retargeting
+  was successful.</p>
+
+  <h:commandButton id="button" action="composite" value="back" />
+</h:form>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/composite/boostrapCompositeComponentMetadata.xhtml b/test/servlet30/systest/src/main/webapp/composite/boostrapCompositeComponentMetadata.xhtml
new file mode 100644
index 0000000..f2db4f5
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/composite/boostrapCompositeComponentMetadata.xhtml
@@ -0,0 +1,69 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:b="http://mojarra.dev.java.net/source1">
+<h:head>
+<title></title>
+<style type="text/css">
+.grayBox { padding: 8px; margin: 10px 0; border: 1px solid #CCC; background-color: #f9f9f9;  }
+</style>
+</h:head>
+
+<h:body>
+
+<h:form>
+
+<pre>
+
+  <b:bootstrapComponent />
+
+</pre>
+
+</h:form>
+
+</h:body>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/composite/childrenfacets.xhtml b/test/servlet30/systest/src/main/webapp/composite/childrenfacets.xhtml
new file mode 100644
index 0000000..9348720
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/composite/childrenfacets.xhtml
@@ -0,0 +1,74 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:ez="http://java.sun.com/jsf/composite/composite">
+<h:head>
+<title>Children and Facets</title>
+</h:head>
+
+<h:body>
+
+<h:form id="form">
+
+   <ez:childrenAndFacets id="cf">
+       <f:facet name="header">
+           <h:outputText id="outheader" style="color:blue" value="Inserted"/>
+       </f:facet>
+       <f:facet name="header2">
+           <h:outputText id="outheader2" style="color:red" value="Rendered"/>
+       </f:facet>
+       <h:outputText id="out1" value="v1"/>
+       <h:outputText id="out2" value="v2"/>
+   </ez:childrenAndFacets>
+   <h:commandButton id="submit" value="Reload"/>
+</h:form>
+<h:messages id="messages"/>
+
+
+</h:body>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/composite/clientId01.xhtml b/test/servlet30/systest/src/main/webapp/composite/clientId01.xhtml
new file mode 100644
index 0000000..69b1311
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/composite/clientId01.xhtml
@@ -0,0 +1,104 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:ez="http://java.sun.com/jsf/composite/composite">
+<h:head>
+<title>clientId from EL</title>
+<style type="text/css">
+.grayBox { padding: 8px; margin: 10px 0; border: 1px solid #CCC; background-color: #f9f9f9;  }
+</style>
+</h:head>
+
+<h:body>
+
+  <ui:debug hotkey="p" rendered="true"/>
+
+<h:form>
+
+<h1>Form with no componentId and no prependId </h1>
+
+  <p>No componentId on usage: <ez:showClientId01 /></p>
+
+  <p>Yes componentId on usage: <ez:showClientId01 id="componentId" /></p>
+
+</h:form>
+
+<h:form prependId="false">
+
+<h1>Form with no componentId and prependId </h1>
+
+  <p>No componentId on usage: <ez:showClientId01 /></p>
+
+  <p>Yes componentId on usage: <ez:showClientId01 id="componentId01" /></p>
+
+</h:form>
+
+<h:form id="form2">
+
+<h1>Form with a componentId and no prependId </h1>
+
+  <p>No componentId on usage: <ez:showClientId01 /></p>
+
+  <p>Yes componentId on usage: <ez:showClientId01 id="componentId" /></p>
+
+</h:form>
+
+<h:form prependId="false" id="form3">
+
+<h1>Form with a componentId and prependId </h1>
+
+  <p>No componentId on usage: <ez:showClientId01 /></p>
+
+  <p>Yes componentId on usage: <ez:showClientId01 id="componentId02" /></p>
+
+</h:form>
+
+
+
+</h:body>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/composite/compActionWithArgs.xhtml b/test/servlet30/systest/src/main/webapp/composite/compActionWithArgs.xhtml
new file mode 100644
index 0000000..f22a5c7
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/composite/compActionWithArgs.xhtml
@@ -0,0 +1,68 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:ez="http://java.sun.com/jsf/composite/composite">
+<h:head>
+<title>Expression using EL arguments</title>
+</h:head>
+
+<h:body>
+
+  <ui:debug hotkey="p" rendered="true"/>
+
+
+  <ez:compWithArgs id="c" arg1="#{'arg1'}" bean="#{compositeBean}" />
+
+<h:messages id="messages"/>
+<h:form>
+    <h:commandButton value="Clear Messages" />
+</h:form>
+
+
+</h:body>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/composite/compAttributeRequired.xhtml b/test/servlet30/systest/src/main/webapp/composite/compAttributeRequired.xhtml
new file mode 100644
index 0000000..e7f5a0b
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/composite/compAttributeRequired.xhtml
@@ -0,0 +1,12 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:ui="http://java.sun.com/jsf/facelets"       
+      xmlns:ez="http://java.sun.com/jsf/composite/composite">
+  <h:head />
+  <h:body>
+    <ui:repeat value="#{compositeBean.testValues}" var="v">
+      <ez:compAttributeRequired val="#{v}" modded="#{1 mod v}"/>
+    </ui:repeat>
+  </h:body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/composite/compAttributeRequiredLiteral.xhtml b/test/servlet30/systest/src/main/webapp/composite/compAttributeRequiredLiteral.xhtml
new file mode 100644
index 0000000..4b0c197
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/composite/compAttributeRequiredLiteral.xhtml
@@ -0,0 +1,12 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:ui="http://java.sun.com/jsf/facelets"       
+      xmlns:ez="http://java.sun.com/jsf/composite/composite">
+  <h:head />
+  <h:body>
+    <ui:repeat value="#{compositeBean.testValues}" var="v">
+      <ez:compAttributeRequired val="2" modded="#{1 mod v}"/>
+    </ui:repeat>
+  </h:body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/composite/compAttributeRequiredNullValue.xhtml b/test/servlet30/systest/src/main/webapp/composite/compAttributeRequiredNullValue.xhtml
new file mode 100644
index 0000000..259c9de
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/composite/compAttributeRequiredNullValue.xhtml
@@ -0,0 +1,12 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" 
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:ui="http://java.sun.com/jsf/facelets"       
+      xmlns:ez="http://java.sun.com/jsf/composite/composite">
+  <h:head />
+  <h:body>
+    <ui:repeat value="#{compositeBean.testValues}" var="v">
+      <ez:compAttributeRequired val="#{null}" modded="#{1 mod v}"/>
+    </ui:repeat>
+  </h:body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/composite/compAttributeResourceRelocation.xhtml b/test/servlet30/systest/src/main/webapp/composite/compAttributeResourceRelocation.xhtml
new file mode 100644
index 0000000..db03bc2
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/composite/compAttributeResourceRelocation.xhtml
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:ez="http://java.sun.com/jsf/composite/composite">
+<h:head>
+    <title>Composite attribute resolution/resource relocation</title>
+</h:head>
+<body>
+<h:form id="form">
+<ez:inlinedStyle1 style="color:red" />
+<h:commandButton id="submit" value="Submit" />
+</h:form>
+</body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/composite/compAttributeWithArgs.xhtml b/test/servlet30/systest/src/main/webapp/composite/compAttributeWithArgs.xhtml
new file mode 100644
index 0000000..8cf8e66
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/composite/compAttributeWithArgs.xhtml
@@ -0,0 +1,68 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:ez="http://java.sun.com/jsf/composite/composite">
+<h:head>
+<title>Expression using EL arguments</title>
+</h:head>
+
+<h:body>
+
+  <ui:debug hotkey="p" rendered="true"/>
+
+
+  <ez:compAttributeWithArgs id="c" arg1="#{'arg1'}" bean="#{compositeBean}" />
+
+<h:messages id="messages"/>
+<h:form>
+    <h:commandButton value="Clear Messages" />
+</h:form>
+
+
+</h:body>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/composite/compositeComponentWithMultipleActions.xhtml b/test/servlet30/systest/src/main/webapp/composite/compositeComponentWithMultipleActions.xhtml
new file mode 100644
index 0000000..98a522f
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/composite/compositeComponentWithMultipleActions.xhtml
@@ -0,0 +1,71 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:ez="http://java.sun.com/jsf/composite/composite">
+<h:head>
+<title>compcomp with multiple action and actionsources</title>
+</h:head>
+
+<h:body>
+
+  <ui:debug hotkey="p" rendered="true"/>
+
+<h:form prependId="false" id="form">
+
+  <ez:multiActionSource id="cc"
+      submitAction="#{multiActionComponentBean.submitAction}" 
+      cancelAction="#{multiActionComponentBean.cancelAction}">
+
+  </ez:multiActionSource>
+
+</h:form>
+
+<h:messages id="messages"/>
+
+</h:body>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/composite/compositeComponentWithMultipleActionsMethodSignatures.xhtml b/test/servlet30/systest/src/main/webapp/composite/compositeComponentWithMultipleActionsMethodSignatures.xhtml
new file mode 100644
index 0000000..486de9f
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/composite/compositeComponentWithMultipleActionsMethodSignatures.xhtml
@@ -0,0 +1,71 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:ez="http://java.sun.com/jsf/composite/composite">
+<h:head>
+<title>compcomp with multiple action and actionsources</title>
+</h:head>
+
+<h:body>
+
+  <ui:debug hotkey="p" rendered="true"/>
+
+<h:form prependId="false" id="form">
+
+  <ez:multiActionSourceMethodSignatures id="cc"
+      submitAction="#{multiActionComponentBean.submitAction}" 
+      cancelAction="#{multiActionComponentBean.cancelAction}">
+
+  </ez:multiActionSourceMethodSignatures>
+
+</h:form>
+
+<h:messages id="messages"/>
+
+</h:body>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/composite/compositeComponentWithMultipleActions_cancel.xhtml b/test/servlet30/systest/src/main/webapp/composite/compositeComponentWithMultipleActions_cancel.xhtml
new file mode 100644
index 0000000..ab02143
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/composite/compositeComponentWithMultipleActions_cancel.xhtml
@@ -0,0 +1,54 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title>cancel pressed</title></head>
+
+<body>
+
+  <p>cancel pressed</p>
+
+
+</body>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/composite/compositeComponentWithMultipleActions_submit.xhtml b/test/servlet30/systest/src/main/webapp/composite/compositeComponentWithMultipleActions_submit.xhtml
new file mode 100644
index 0000000..ec86211
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/composite/compositeComponentWithMultipleActions_submit.xhtml
@@ -0,0 +1,54 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title>submit pressed</title></head>
+
+<body>
+
+  <p>submit pressed</p>
+
+
+</body>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/composite/compositeInsertChildrenNesting.xhtml b/test/servlet30/systest/src/main/webapp/composite/compositeInsertChildrenNesting.xhtml
new file mode 100644
index 0000000..895e073
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/composite/compositeInsertChildrenNesting.xhtml
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:ez="http://java.sun.com/jsf/composite/composite">
+<h:head>
+    <title>Composite InsertChildren Nesting</title>
+</h:head>
+<body>
+<h:form id="form">
+<ez:compA id="compA">
+    <span>Before Nested compcomp (3)</span><br/>
+    <ez:compB id="compB">
+        <span>Inside nested Component (4)</span><br/>
+    </ez:compB>
+    <span>After Nested compcomp(5)</span><br/>
+</ez:compA>
+<h:commandButton id="submit" value="Submit" />
+</h:form>
+</body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/composite/compositeInsertChildrenNesting02.xhtml b/test/servlet30/systest/src/main/webapp/composite/compositeInsertChildrenNesting02.xhtml
new file mode 100644
index 0000000..925dbf8
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/composite/compositeInsertChildrenNesting02.xhtml
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:ez="http://java.sun.com/jsf/composite/composite">
+<head>
+    <title>compositeInsertChildrenNesting02.xhtml</title>
+</head>
+<body>
+<ez:compD id="d">
+    <h:link value="Test">
+        <f:param name="foo" value="bar" />
+    </h:link>
+</ez:compD>
+</body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/composite/compositeInsertFacetNesting.xhtml b/test/servlet30/systest/src/main/webapp/composite/compositeInsertFacetNesting.xhtml
new file mode 100644
index 0000000..0809a8c
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/composite/compositeInsertFacetNesting.xhtml
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:ez="http://java.sun.com/jsf/composite/composite">
+<h:head>
+    <title>Composite InsertFacet Nesting</title>
+</h:head>
+<body>
+<h:form id="form">
+<ez:facetA id="facetA">
+    <f:facet name="header">
+        <h:outputText value="header" />
+    </f:facet>
+    <ez:facetB id="facetB">
+        <h:outputText value="Inside nested Component" style="color:black"/>
+    </ez:facetB>
+    <f:facet name="footer">
+        <h:outputText value="footer" />
+    </f:facet>
+</ez:facetA>
+<h:commandButton id="submit" value="Submit" />
+</h:form>
+</body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/composite/compositeInsertFacetNesting02.xhtml b/test/servlet30/systest/src/main/webapp/composite/compositeInsertFacetNesting02.xhtml
new file mode 100644
index 0000000..e5a0f70
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/composite/compositeInsertFacetNesting02.xhtml
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:ez="http://java.sun.com/jsf/composite/composite">
+<head>
+    <title>compositeInsertChildrenNesting02.xhtml</title>
+</head>
+<body>
+<ez:facetD id="d">
+   <f:facet name="header">
+       <h:outputText value="Header" />
+   </f:facet>
+   <f:facet name="footer">
+       <h:outputText value="Footer" />
+   </f:facet>
+</ez:facetD>
+</body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/composite/compositionWithinCompositeUsingPage.xhtml b/test/servlet30/systest/src/main/webapp/composite/compositionWithinCompositeUsingPage.xhtml
new file mode 100644
index 0000000..3a67085
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/composite/compositionWithinCompositeUsingPage.xhtml
@@ -0,0 +1,69 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:my="http://java.sun.com/jsf/composite/composite">
+<h:head>
+  <title>A Simple JavaServer Faces 2.0 View</title>
+<style type="text/css">
+.grayBox { padding: 8px; margin: 10px 0; border: 1px solid #CCC; background-color: #f9f9f9;  }
+</style>
+
+</h:head>
+<h:body>
+  <h:form prependId="false">
+
+      <p>Ensures a nice exception happens when you try to use a
+      ui:composition within a composite component.</p>
+
+    <p>Composite Component usage:</p>
+
+<div id="cc" class="grayBox" style="border: 1px solid #090;">
+<p><my:compositionWithinComposite id="compcomp" /></p>
+</div>
+
+  </h:form>
+</h:body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/composite/customAction.xhtml b/test/servlet30/systest/src/main/webapp/composite/customAction.xhtml
new file mode 100644
index 0000000..35501f4
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/composite/customAction.xhtml
@@ -0,0 +1,93 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:ez="http://java.sun.com/jsf/composite/composite">
+<h:head>
+<title>Action at various composite nesting levels</title>
+</h:head>
+
+<h:body>
+
+  <ui:debug hotkey="p" rendered="true"/>
+
+<h:form id="form">
+
+    <p>
+        1. One nesting level.  Level 1 passes the action as an attribute.
+    </p>
+    <ez:customCustomAction id="c0" customAction="#{compositeBean.custom}" />
+
+    <p>
+        2. Two nesting levels.  Level 1 defines a custom action and passes it to level 2.  Level 2 passes the action as an attribute.
+    </p>
+    <ez:customActionWrapper1 id="c1" customAction="#{compositeBean.custom}"/>
+
+    <p>
+        3. Two nesting levels.  Level 1 defines a bean and passes a property as an action to level 2.  Level 2 passes the action as an attribute.
+    </p>
+    <ez:customActionWrapper2 id="c2" bean="#{compositeBean}" />
+
+    <p>
+        4. Three nesting levels.  Level 1 defines a bean and passes a property as a custom action to level 2.  Level 2 defines a custom action and passes it to level 3.  Level 3 passes the action as an attribute.
+    </p>
+    <ez:customActionWrapper3 id="c3" bean="#{compositeBean}" />
+
+    <p>
+        5. Three nesting levels.  Level 1 defines a custom action and passes it to level 2.  Level 2 defines a custom action and passes it to level 3.  Level 3 passes the action as an attribute.
+    </p>
+    <ez:customActionWrapper4 id="c4" customAction="#{compositeBean.custom}" />
+
+</h:form>
+<h:messages id="messages"/>
+<h:form>
+    <h:commandButton value="Clear Messages" />
+</h:form>
+
+
+</h:body>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/composite/decorate.xhtml b/test/servlet30/systest/src/main/webapp/composite/decorate.xhtml
new file mode 100644
index 0000000..5eca662
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/composite/decorate.xhtml
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:ez="http://java.sun.com/jsf/composite/composite">
+<head>
+    <title>Decorate Test</title>
+</head>
+<body>
+    <ez:decorate/>
+</body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/composite/defaultActionNext.xhtml b/test/servlet30/systest/src/main/webapp/composite/defaultActionNext.xhtml
new file mode 100644
index 0000000..edc6d0d
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/composite/defaultActionNext.xhtml
@@ -0,0 +1,51 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:ez="http://java.sun.com/jsf/composite/composite">
+<h:head>
+  <title>Next Page</title>
+</h:head>
+<h:body><p>defaultActionNext</p></h:body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/composite/defaultActionUsingPage.xhtml b/test/servlet30/systest/src/main/webapp/composite/defaultActionUsingPage.xhtml
new file mode 100644
index 0000000..33b8d73
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/composite/defaultActionUsingPage.xhtml
@@ -0,0 +1,55 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:ez="http://java.sun.com/jsf/composite/composite">
+<h:head>
+  <title>A Simple JavaServer Faces 2.0 View</title>
+</h:head>
+<h:body>
+  <h:form prependId="false">
+      <ez:defaultAction id="ccTag"/>
+  </h:form>
+</h:body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/composite/defaultAttributeMethodExpression.xhtml b/test/servlet30/systest/src/main/webapp/composite/defaultAttributeMethodExpression.xhtml
new file mode 100644
index 0000000..3fe7be2
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/composite/defaultAttributeMethodExpression.xhtml
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:ez="http://java.sun.com/jsf/composite/composite">
+<head>
+    <title>Composite Component with cc:attributes that are method expressions that have default values</title>
+</head>
+<body>
+    <ez:meDefaults id="def"/>
+    <h:messages />
+</body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/composite/defaultAttributeValueExpression.xhtml b/test/servlet30/systest/src/main/webapp/composite/defaultAttributeValueExpression.xhtml
new file mode 100644
index 0000000..d7bb19e
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/composite/defaultAttributeValueExpression.xhtml
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:ez="http://java.sun.com/jsf/composite/composite">
+<head>
+    <title>Composite Component with cc:attributes that are value expressions that have default values</title>
+</head>
+<body>
+    <ez:veDefaults id="def"/>
+    <h:messages />
+</body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/composite/defaultAttributeValueExpression_1966.xhtml b/test/servlet30/systest/src/main/webapp/composite/defaultAttributeValueExpression_1966.xhtml
new file mode 100644
index 0000000..a7cd9ba
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/composite/defaultAttributeValueExpression_1966.xhtml
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ez="http://java.sun.com/jsf/composite/composite">
+<head>
+    <title>Composite Component with cc:attributes that are value expressions that have default values (Issue 1966: Non String default values)</title>
+</head>
+<body>
+    <ez:veDefaults_1966 id="WithValueEmptyList" items="#{compositeBean.emptyList}"/>
+    <ez:veDefaults_1966 id="WithValueNull" items="#{null}"/>
+    <ez:veDefaults_1966 id="WithValueEmptyString" items=""/>
+    <!-- @TODO read veDefaults_1966_Color but remove awt dependency -->
+</body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/composite/defaultAttributeValueExpression_1986.xhtml b/test/servlet30/systest/src/main/webapp/composite/defaultAttributeValueExpression_1986.xhtml
new file mode 100644
index 0000000..3f48284
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/composite/defaultAttributeValueExpression_1986.xhtml
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:ez="http://java.sun.com/jsf/composite/composite">
+<head>
+    <title>Composite Component with cc:attributes that are value expressions that have default values (Issue 1966: Non String default values)</title>
+</head>
+<body>
+    <h:form prependId="false">
+        <ez:veDefaults_1986 id="WithValueNull" value="#{compositeBean.bigDecimalValue}"/>
+        <ez:veDefaults_1986 id="WithValueEmpty" value=""/>
+    </h:form>
+</body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/composite/defaultAttributeValuesUsingPage.xhtml b/test/servlet30/systest/src/main/webapp/composite/defaultAttributeValuesUsingPage.xhtml
new file mode 100644
index 0000000..02894d7
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/composite/defaultAttributeValuesUsingPage.xhtml
@@ -0,0 +1,71 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:my="http://java.sun.com/jsf/composite/composite">
+<h:head>
+  <title>A Simple JavaServer Faces 2.0 View</title>
+<style type="text/css">
+.grayBox { padding: 8px; margin: 10px 0; border: 1px solid #CCC; background-color: #f9f9f9;  }
+</style>
+
+</h:head>
+<h:body>
+  <h:form prependId="false">
+
+      <p>This test shows that composite:attribute default works for both
+      simple attrbutes and method-expression attributes</p>
+
+    <p>Composite Component usage:</p>
+
+<div id="cc" class="grayBox" style="border: 1px solid #090;">
+<p><my:javaTopLevelComponent id="loginPanel1" 
+                             item="Many Jars"
+                             valExp="#{''}"/></p>
+</div>
+
+  </h:form>
+</h:body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/composite/defaultAttributesUsingPage.xhtml b/test/servlet30/systest/src/main/webapp/composite/defaultAttributesUsingPage.xhtml
new file mode 100644
index 0000000..c7c024a
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/composite/defaultAttributesUsingPage.xhtml
@@ -0,0 +1,62 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:my="http://java.sun.com/jsf/composite/composite">
+<h:head>
+  <title>A Simple JavaServer Faces 2.0 View</title>
+<style type="text/css">
+.grayBox { padding: 8px; margin: 10px 0; border: 1px solid #CCC; background-color: #f9f9f9;  }
+</style>
+
+</h:head>
+<h:body>
+  <h:form prependId="false">
+
+     <my:defaultAttributeValues id="mucomp" /> 
+
+  </h:form>
+</h:body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/composite/insertchildrenrequired01.xhtml b/test/servlet30/systest/src/main/webapp/composite/insertchildrenrequired01.xhtml
new file mode 100644
index 0000000..be678ed
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/composite/insertchildrenrequired01.xhtml
@@ -0,0 +1,59 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:ez="http://java.sun.com/jsf/composite/composite">
+<h:head>
+<title>Insert Children Required 01</title>
+</h:head>
+
+<h:body>
+
+   <ez:insertChildrenRequiredTrue/>
+
+</h:body>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/composite/insertchildrenrequired02.xhtml b/test/servlet30/systest/src/main/webapp/composite/insertchildrenrequired02.xhtml
new file mode 100644
index 0000000..02c65eb
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/composite/insertchildrenrequired02.xhtml
@@ -0,0 +1,63 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:ez="http://java.sun.com/jsf/composite/composite">
+<h:head>
+<title>Insert Children Required 02</title>
+</h:head>
+
+<h:body>
+
+   <ez:insertChildrenRequiredTrue>
+       <f:facet name="facet">
+           <h:outputText value="Shouldn't be rendered"/>
+       </f:facet>
+   </ez:insertChildrenRequiredTrue>
+
+</h:body>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/composite/insertchildrenrequired03.xhtml b/test/servlet30/systest/src/main/webapp/composite/insertchildrenrequired03.xhtml
new file mode 100644
index 0000000..e6d1347
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/composite/insertchildrenrequired03.xhtml
@@ -0,0 +1,59 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:ez="http://java.sun.com/jsf/composite/composite">
+<h:head>
+<title>Insert Children Required 03</title>
+</h:head>
+
+<h:body>
+
+   <ez:insertChildrenRequiredFalse/>
+
+</h:body>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/composite/insertfacetrequired01.xhtml b/test/servlet30/systest/src/main/webapp/composite/insertfacetrequired01.xhtml
new file mode 100644
index 0000000..469b63a
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/composite/insertfacetrequired01.xhtml
@@ -0,0 +1,59 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:ez="http://java.sun.com/jsf/composite/composite">
+<h:head>
+<title>Insert Facet Required 01</title>
+</h:head>
+
+<h:body>
+
+   <ez:insertFacetRequiredTrue/>
+
+</h:body>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/composite/insertfacetrequired02.xhtml b/test/servlet30/systest/src/main/webapp/composite/insertfacetrequired02.xhtml
new file mode 100644
index 0000000..b4593d7
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/composite/insertfacetrequired02.xhtml
@@ -0,0 +1,63 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:ez="http://java.sun.com/jsf/composite/composite">
+<h:head>
+<title>Insert Facet Required 02</title>
+</h:head>
+
+<h:body>
+
+   <ez:insertFacetRequiredTrue>
+       <f:facet name="notWhatIsExpected">
+           <h:outputText value="Should Not Be Rendered"/>
+       </f:facet>
+   </ez:insertFacetRequiredTrue>
+
+</h:body>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/composite/insertfacetrequired03.xhtml b/test/servlet30/systest/src/main/webapp/composite/insertfacetrequired03.xhtml
new file mode 100644
index 0000000..1f1579a
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/composite/insertfacetrequired03.xhtml
@@ -0,0 +1,59 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:ez="http://java.sun.com/jsf/composite/composite">
+<h:head>
+<title>Insert Facet Required 02</title>
+</h:head>
+
+<h:body>
+
+   <ez:insertFacetRequiredFalse/>
+
+</h:body>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/composite/invalidMeArgs.xhtml b/test/servlet30/systest/src/main/webapp/composite/invalidMeArgs.xhtml
new file mode 100644
index 0000000..a8ec7a2
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/composite/invalidMeArgs.xhtml
@@ -0,0 +1,68 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:ez="http://java.sun.com/jsf/composite/composite">
+<h:head>
+<title>Expression using EL arguments</title>
+</h:head>
+
+<h:body>
+
+  <ui:debug hotkey="p" rendered="true"/>
+
+
+  <ez:invalidMeArgs id="c" custom="#{compositeBean.custom}" />
+
+<h:messages id="messages"/>
+<h:form>
+    <h:commandButton value="Clear Messages" />
+</h:form>
+
+
+</h:body>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/composite/invalidVeArgs.xhtml b/test/servlet30/systest/src/main/webapp/composite/invalidVeArgs.xhtml
new file mode 100644
index 0000000..84d2150
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/composite/invalidVeArgs.xhtml
@@ -0,0 +1,68 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:ez="http://java.sun.com/jsf/composite/composite">
+<h:head>
+<title>Expression using EL arguments</title>
+</h:head>
+
+<h:body>
+
+  <ui:debug hotkey="p" rendered="true"/>
+
+
+  <ez:invalidVeArgs id="c" bean="#{compositeBean}" />
+
+<h:messages id="messages"/>
+<h:form>
+    <h:commandButton value="Clear Messages" />
+</h:form>
+
+
+</h:body>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/composite/isCompositeComponentUsing.xhtml b/test/servlet30/systest/src/main/webapp/composite/isCompositeComponentUsing.xhtml
new file mode 100644
index 0000000..3068a10
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/composite/isCompositeComponentUsing.xhtml
@@ -0,0 +1,67 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ez="http://java.sun.com/jsf/composite/composite">
+<h:head>
+<title>isCompositeComponent test</title>
+</h:head>
+
+<h:body>
+
+<h:form id="form">
+
+  <ez:isCompositeComponent id="composite" >
+
+    <p>isCompositeComponent: <h:outputText value="#{test1.isCompositeComponentValue}" /></p>
+    
+  </ez:isCompositeComponent>
+
+
+</h:form>
+
+</h:body>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/composite/issue-1782-using.xhtml b/test/servlet30/systest/src/main/webapp/composite/issue-1782-using.xhtml
new file mode 100644
index 0000000..bec6487
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/composite/issue-1782-using.xhtml
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+	xmlns:h="http://java.sun.com/jsf/html"
+	xmlns:tmo="http://java.sun.com/jsf/composite/tmo">
+
+<h:head>
+	<title>Test page</title>
+</h:head>
+
+<h:body>
+	<h:form id="form">
+		<tmo:block collapsable="#{'true'}"/>
+	</h:form>
+</h:body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/composite/issue1318.xhtml b/test/servlet30/systest/src/main/webapp/composite/issue1318.xhtml
new file mode 100644
index 0000000..28cf5a0
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/composite/issue1318.xhtml
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:ez="http://java.sun.com/jsf/composite/composite">
+<head>
+    <title>argAction</title>
+</head>
+<body>
+    <h:form id="form">
+        <ez:argAction id="arg" arg1="Hello" arg2="World!" />
+    </h:form>
+    <h:messages />
+</body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/composite/javaTopLevelActionListenerComponentUsingPage.xhtml b/test/servlet30/systest/src/main/webapp/composite/javaTopLevelActionListenerComponentUsingPage.xhtml
new file mode 100644
index 0000000..9625b59
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/composite/javaTopLevelActionListenerComponentUsingPage.xhtml
@@ -0,0 +1,89 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!--
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+-->
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:my="http://java.sun.com/jsf/composite/composite">
+<h:head>
+    <title>A Simple JavaServer Faces 2.0 View</title>
+    <style type="text/css">
+        .grayBox {
+            padding: 8px;
+            margin: 10px 0;
+            border: 1px solid #CCC;
+            background-color: #f9f9f9;
+        }
+    </style>
+
+</h:head>
+<h:body>
+    <h:form prependId="false">
+
+        <p>We nest a composite component inside a UIData. The composite
+            component consists of
+            a UICommand with an attached actionListener, in this case the
+            attached actionListener
+            is the composite component itself. When clicking the UICommand,
+            \#{cc} must resolve
+            to the composite component.
+        </p>
+
+        <p>We also added another action listener to the UICommand. This
+            actionListener will resolve \#{component.family} via the EL API. It
+            should return the family of UICommand
+        </p>
+
+
+        <div id="cc" class="grayBox" style="border: 1px solid #090;">
+            <h:form id="form">
+                <h:dataTable value="#{compositeBean.tableInputValues}"
+                             id="table">
+                    <h:column>
+                        <my:javaTopLevelActionListenerComponent/>
+                    </h:column>
+                </h:dataTable>
+            </h:form>
+        </div>
+
+    </h:form>
+</h:body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/composite/javaTopLevelComponent2.xhtml b/test/servlet30/systest/src/main/webapp/composite/javaTopLevelComponent2.xhtml
new file mode 100644
index 0000000..244503d
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/composite/javaTopLevelComponent2.xhtml
@@ -0,0 +1,55 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:my="http://java.sun.com/jsf/composite/composite">
+<h:head>
+  <title>Page 2, tests default action</title>
+
+</h:head>
+<h:body>
+    <p>Made it to page 2</p>
+</h:body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/composite/javaTopLevelComponentUsingPage.xhtml b/test/servlet30/systest/src/main/webapp/composite/javaTopLevelComponentUsingPage.xhtml
new file mode 100644
index 0000000..e41f24a
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/composite/javaTopLevelComponentUsingPage.xhtml
@@ -0,0 +1,81 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:my="http://java.sun.com/jsf/composite/composite">
+<h:head>
+  <title>A Simple JavaServer Faces 2.0 View</title>
+<style type="text/css">
+.grayBox { padding: 8px; margin: 10px 0; border: 1px solid #CCC; background-color: #f9f9f9;  }
+</style>
+
+</h:head>
+<h:body>
+  <h:form prependId="false">
+
+      <p>We pass a literal string as the value of the "item" attribute in the
+          composite component below.  This literal string must be set into
+          the value of the corresponding javaBeans property on the
+      java top level component for javaTopLevelComponent.</p>
+
+      <p>Also, we do not pass an "action" attribute.  The composite component
+          has a default value for the "action" attribute, which is
+      javaTopLevelComponent2.  This means that pressing the login button will
+      cause navigation to javaTopLevelComponent2.</p>
+
+    <p>First Name: #{userBean.firstName} Last Name: #{userBean.lastName}</p>
+
+    <p>Composite Component usage:</p>
+
+<div id="cc" class="grayBox" style="border: 1px solid #090;">
+<p><my:javaTopLevelComponent id="loginPanel1" usernameLabel="username"
+                             loginButtonLabel="Login"
+                             item="Smallberries" valExp="#{param.q}"
+                             int="5"/></p>
+</div>
+
+  </h:form>
+</h:body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/composite/jsr276-using.xhtml b/test/servlet30/systest/src/main/webapp/composite/jsr276-using.xhtml
new file mode 100644
index 0000000..f7d76b3
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/composite/jsr276-using.xhtml
@@ -0,0 +1,76 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:ez="http://java.sun.com/jsf/composite/composite">
+<h:head>
+<title>Using jsr276 in a composite component</title>
+<style type="text/css">
+.grayBox { padding: 8px; margin: 10px 0; border: 1px solid #CCC; background-color: #f9f9f9;  }
+</style>
+</h:head>
+
+<h:body>
+
+  <ui:debug hotkey="p" rendered="true"/>
+
+<h:form>
+
+<h1>Correct usage</h1>
+
+  <p><ez:jsr276Correct01 /></p>
+
+<h1>Incorrect usage</h1>
+
+  <p><ez:jsr276Incorrect01 /></p>
+
+
+
+</h:form>
+
+</h:body>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/composite/methodExprNotRequired.xhtml b/test/servlet30/systest/src/main/webapp/composite/methodExprNotRequired.xhtml
new file mode 100644
index 0000000..bc553c7
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/composite/methodExprNotRequired.xhtml
@@ -0,0 +1,67 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:ez="http://java.sun.com/jsf/composite/composite">
+<h:head>
+<title>actionSource1</title>
+</h:head>
+
+<h:body>
+
+  <ui:debug hotkey="p" rendered="true"/>
+
+<h:form id="form">
+
+    <ez:notrequired />
+
+</h:form>
+ <h:messages id="messages"/>
+
+
+</h:body>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/composite/methodExprRequired.xhtml b/test/servlet30/systest/src/main/webapp/composite/methodExprRequired.xhtml
new file mode 100644
index 0000000..fc3b1c7
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/composite/methodExprRequired.xhtml
@@ -0,0 +1,67 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:ez="http://java.sun.com/jsf/composite/composite">
+<h:head>
+<title>actionSource1</title>
+</h:head>
+
+<h:body>
+
+  <ui:debug hotkey="p" rendered="true"/>
+
+<h:form id="form">
+
+    <ez:required />
+
+</h:form>
+ <h:messages id="messages"/>
+
+
+</h:body>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/composite/nesting01.xhtml b/test/servlet30/systest/src/main/webapp/composite/nesting01.xhtml
new file mode 100644
index 0000000..219c64a
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/composite/nesting01.xhtml
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:ez="http://java.sun.com/jsf/composite/composite">
+<head>
+    <title>Nesting 01</title>
+</head>
+<body>
+    <ez:nesting1 value="Hello World" />   
+</body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/composite/nesting02.xhtml b/test/servlet30/systest/src/main/webapp/composite/nesting02.xhtml
new file mode 100644
index 0000000..a7f7926
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/composite/nesting02.xhtml
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:ez="http://java.sun.com/jsf/composite/composite">
+<head>
+    <title>Nesting 02</title>
+</head>
+<body>
+    <h:form>
+        <ez:nesting2 customAction="#{compositeBean.doNav}" />
+    </h:form>
+</body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/composite/nesting03.xhtml b/test/servlet30/systest/src/main/webapp/composite/nesting03.xhtml
new file mode 100644
index 0000000..d2ad76b
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/composite/nesting03.xhtml
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:ez="http://java.sun.com/jsf/composite/composite">
+<head>
+    <title>Nesting 03</title>
+</head>
+<body>
+    <h:form>
+        <ez:nesting3 action="#{compositeBean.doNav}" />
+    </h:form>
+</body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/composite/nesting04.xhtml b/test/servlet30/systest/src/main/webapp/composite/nesting04.xhtml
new file mode 100644
index 0000000..0e4d51a
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/composite/nesting04.xhtml
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:ez="http://java.sun.com/jsf/composite/composite">
+<head>
+    <title>Nesting 04</title>
+</head>
+<body>
+    <h:form id="form">
+        <ez:nesting4 id="nesting4" attr1="static" attr2="#{facesContext.class.name}" />
+        <h:commandButton id="sub" value="Submit" />
+    </h:form>
+</body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/composite/nesting05.xhtml b/test/servlet30/systest/src/main/webapp/composite/nesting05.xhtml
new file mode 100644
index 0000000..35eb8e1
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/composite/nesting05.xhtml
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:ez="http://java.sun.com/jsf/composite/composite">
+<h:head>
+    <title>Nesting 05</title>
+</h:head>
+<body>
+    <ez:nesting6 id="nesting6" bean="#{compositeBean}" />
+</body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/composite/nesting06.xhtml b/test/servlet30/systest/src/main/webapp/composite/nesting06.xhtml
new file mode 100644
index 0000000..7836e0b
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/composite/nesting06.xhtml
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:ez="http://java.sun.com/jsf/composite/composite">
+<h:head>
+    <title>Nesting 06</title>
+</h:head>
+<body>
+    <ez:nesting10 id="nesting10" bean="#{compositeBean}" />
+</body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/composite/nesting07.xhtml b/test/servlet30/systest/src/main/webapp/composite/nesting07.xhtml
new file mode 100644
index 0000000..433eb0b
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/composite/nesting07.xhtml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:ez="http://java.sun.com/jsf/composite/composite">
+<h:head>
+    <title>Nesting 07</title>
+</h:head>
+<body>
+    <h:form id="form">
+        <ez:wrapper itemsList="#{compositeBean.items}">
+            <ez:ccParentExpression items="#{compositeBean.items}" />
+        </ez:wrapper>
+        <h:commandButton id="submit" value="Refresh" />
+    </h:form>
+</body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/composite/nesting08.xhtml b/test/servlet30/systest/src/main/webapp/composite/nesting08.xhtml
new file mode 100644
index 0000000..0e60e48
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/composite/nesting08.xhtml
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:ez="http://java.sun.com/jsf/composite/composite">
+<h:head>
+    <title>Nesting 08</title>
+</h:head>
+<body>
+    <ez:wrapper testAction="#{compositeBean.action}">
+        <ez:wrapper testAction2="#{cc.attrs.testAction}">
+            <ez:myaction myaction="#{cc.attrs.testAction2}" />
+        </ez:wrapper>
+    </ez:wrapper>
+</body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/composite/nestingCompositeExpressionTreeCreation.xhtml b/test/servlet30/systest/src/main/webapp/composite/nestingCompositeExpressionTreeCreation.xhtml
new file mode 100644
index 0000000..bfe0873
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/composite/nestingCompositeExpressionTreeCreation.xhtml
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:ez="http://java.sun.com/jsf/composite/composite">
+<head>
+    <title>Composite Component Nesting Expression Eval During Tree Creation</title>
+</head>
+<body>
+    <h:form id="form">
+        <ez:nesting8 value="#{compositeBean.stringValue}"
+                     values="#{compositeBean.stringValues}"/>
+        <h:commandButton id="submit" value="Redisplay" /> 
+    </h:form>
+</body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/composite/nestingNav.xhtml b/test/servlet30/systest/src/main/webapp/composite/nestingNav.xhtml
new file mode 100644
index 0000000..cb9828f
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/composite/nestingNav.xhtml
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+    <title>Navigation Result</title>
+</head>
+<body>
+
+</body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/composite/programmaticDefaultAttributeValueAccess.xhtml b/test/servlet30/systest/src/main/webapp/composite/programmaticDefaultAttributeValueAccess.xhtml
new file mode 100644
index 0000000..941230c
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/composite/programmaticDefaultAttributeValueAccess.xhtml
@@ -0,0 +1,55 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:ez="http://java.sun.com/jsf/composite/composite">
+    <h:head>
+        <title>test programmatic access of cc:attributes that have default values</title>
+    </h:head>
+    <h:body>
+        <ez:javaBackedComponentDefaultAttrValues />
+    </h:body>
+</html>
+
diff --git a/test/servlet30/systest/src/main/webapp/composite/renderfacetrequired01.xhtml b/test/servlet30/systest/src/main/webapp/composite/renderfacetrequired01.xhtml
new file mode 100644
index 0000000..33fff5c
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/composite/renderfacetrequired01.xhtml
@@ -0,0 +1,59 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:ez="http://java.sun.com/jsf/composite/composite">
+<h:head>
+<title>Render Facet Required 01</title>
+</h:head>
+
+<h:body>
+
+   <ez:renderFacetRequiredTrue/>
+
+</h:body>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/composite/renderfacetrequired02.xhtml b/test/servlet30/systest/src/main/webapp/composite/renderfacetrequired02.xhtml
new file mode 100644
index 0000000..67bc293
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/composite/renderfacetrequired02.xhtml
@@ -0,0 +1,62 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:ez="http://java.sun.com/jsf/composite/composite">
+<h:head>
+<title>Render Facet Required 02</title>
+</h:head>
+
+<h:body>
+
+   <ez:renderFacetRequiredTrue>
+       <f:facet name="NotWhatIsExpected">
+           <h:outputText value="Should Not Be Rendered"/>
+       </f:facet>
+   </ez:renderFacetRequiredTrue>
+</h:body>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/composite/renderfacetrequired03.xhtml b/test/servlet30/systest/src/main/webapp/composite/renderfacetrequired03.xhtml
new file mode 100644
index 0000000..a6ce70f
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/composite/renderfacetrequired03.xhtml
@@ -0,0 +1,59 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:ez="http://java.sun.com/jsf/composite/composite">
+<h:head>
+<title>Render Facet Required 03</title>
+</h:head>
+
+<h:body>
+
+   <ez:renderFacetRequiredFalse/>
+
+</h:body>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/composite/requiredAttribute.xhtml b/test/servlet30/systest/src/main/webapp/composite/requiredAttribute.xhtml
new file mode 100644
index 0000000..44b8c81
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/composite/requiredAttribute.xhtml
@@ -0,0 +1,67 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:ez="http://java.sun.com/jsf/composite/composite">
+<h:head>
+<title>actionSource1</title>
+</h:head>
+
+<h:body>
+
+  <ui:debug hotkey="p" rendered="true"/>
+
+<h:form id="form">
+
+    <ez:required01 />
+
+</h:form>
+ <h:messages id="messages"/>
+
+
+</h:body>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/composite/requiredFacet.xhtml b/test/servlet30/systest/src/main/webapp/composite/requiredFacet.xhtml
new file mode 100644
index 0000000..6b77646
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/composite/requiredFacet.xhtml
@@ -0,0 +1,67 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:ez="http://java.sun.com/jsf/composite/composite">
+<h:head>
+<title>actionSource1</title>
+</h:head>
+
+<h:body>
+
+  <ui:debug hotkey="p" rendered="true"/>
+
+<h:form id="form">
+
+    <ez:requiredFacet />
+
+</h:form>
+ <h:messages id="messages"/>
+
+
+</h:body>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/composite/resourceDependencyComponentNextPage.xhtml b/test/servlet30/systest/src/main/webapp/composite/resourceDependencyComponentNextPage.xhtml
new file mode 100644
index 0000000..b44e042
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/composite/resourceDependencyComponentNextPage.xhtml
@@ -0,0 +1,59 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:my="http://java.sun.com/jsf/composite/composite">
+<h:head>
+  <title>A Simple JavaServer Faces 2.0 View</title>
+<style type="text/css">
+.grayBox { padding: 8px; margin: 10px 0; border: 1px solid #CCC; background-color: #f9f9f9;  }
+</style>
+
+</h:head>
+<h:body>
+    <h1>Next page</h1>
+    <my:resourceDependencyComponent/>
+</h:body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/composite/resourceDependencyComponentUsingPage.xhtml b/test/servlet30/systest/src/main/webapp/composite/resourceDependencyComponentUsingPage.xhtml
new file mode 100644
index 0000000..c5e6df2
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/composite/resourceDependencyComponentUsingPage.xhtml
@@ -0,0 +1,59 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:my="http://java.sun.com/jsf/composite/composite">
+<h:head>
+  <title>A Simple JavaServer Faces 2.0 View</title>
+<style type="text/css">
+.grayBox { padding: 8px; margin: 10px 0; border: 1px solid #CCC; background-color: #f9f9f9;  }
+</style>
+
+</h:head>
+<h:body>
+    <h1>Using page</h1>
+    <my:resourceDependencyComponent/>
+</h:body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/composite/simpleCompositeComponentUsingPage.xhtml b/test/servlet30/systest/src/main/webapp/composite/simpleCompositeComponentUsingPage.xhtml
new file mode 100644
index 0000000..0fd8a5d
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/composite/simpleCompositeComponentUsingPage.xhtml
@@ -0,0 +1,21 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:mycc="http://java.sun.com/jsf/composite/composite">
+    <h:head>
+        <title>Facelet Title</title>
+    </h:head>
+    <h:body>
+        Hello from Facelets
+        <h:messages/>
+        <h:form>
+            username :
+            <f:validateBean>
+            <mycc:simpleCompositeComponent value="#{hello.fname}"/> <br/>
+            </f:validateBean>
+            <h:commandButton value="submit" action="#{hello.getNextAction}"/>
+        </h:form>
+    </h:body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/composite/submit.xhtml b/test/servlet30/systest/src/main/webapp/composite/submit.xhtml
new file mode 100644
index 0000000..287a429
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/composite/submit.xhtml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html
+        PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"
+        xmlns:h="http://java.sun.com/jsf/html">
+<head>
+    <title>Hello</title>
+</head>
+<body>
+<h:form id="form">
+
+ <h:outputText id="string"
+                 value="#{hello.message}"/>
+</h:form>
+</body>
+</html>
\ No newline at end of file
diff --git a/test/servlet30/systest/src/main/webapp/composite/validator.xhtml b/test/servlet30/systest/src/main/webapp/composite/validator.xhtml
new file mode 100644
index 0000000..e305ba7
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/composite/validator.xhtml
@@ -0,0 +1,93 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:ez="http://java.sun.com/jsf/composite/composite">
+<h:head>
+<title>Validator at various composite nesting levels</title>
+</h:head>
+
+<h:body>
+
+  <ui:debug hotkey="p" rendered="true"/>
+
+<h:form id="form">
+
+    <p>
+        1. One nesting level.  Level 1 targets a validator.
+    </p>
+    <ez:customValidator id="c0" validator="#{compositeBean.validate}" />
+
+    <p>
+        2. Two nesting levels.  Level 1 defines a custom validator and passes it to level 2.  Level 2 targets a validator.
+    </p>
+    <ez:validatorWrapper1 id="c1" customValidator="#{compositeBean.validate}"/>
+
+    <p>
+        3. Two nesting levels.  Level 1 defines a bean and passes a property as a validator to level 2.  Level 2 targets a validator.
+    </p>
+    <ez:validatorWrapper2 id="c2" bean="#{compositeBean}" />
+
+    <p>
+        4. Three nesting levels.  Level 1 defines a bean and passes a property as a custom validator to level 2.  Level 2 defines a custom validator and passes it to level 3.  Level 3 targets a validator.
+    </p>
+    <ez:validatorWrapper3 id="c3" bean="#{compositeBean}" />
+
+    <p>
+        5. Three nesting levels.  Level 1 defines a custom validator and passes it to level 2.  Level 2 defines a custom validator and passes it to level 3.  Level 3 targets a validator.
+    </p>
+    <ez:validatorWrapper4 id="c4" customValidator="#{compositeBean.validate}" />
+    <h:commandButton id="submit" value="Submit" />
+</h:form>
+<h:messages id="messages"/>
+<h:form>
+    <h:commandButton value="Clear Messages" />
+</h:form>
+
+
+</h:body>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/composite/valueChangeListener.xhtml b/test/servlet30/systest/src/main/webapp/composite/valueChangeListener.xhtml
new file mode 100644
index 0000000..8ddadcd
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/composite/valueChangeListener.xhtml
@@ -0,0 +1,93 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:ez="http://java.sun.com/jsf/composite/composite">
+<h:head>
+<title>ValueChangeListener at various composite nesting levels</title>
+</h:head>
+
+<h:body>
+
+  <ui:debug hotkey="p" rendered="true"/>
+
+<h:form id="form">
+
+    <p>
+        1. One nesting level.  Level 1 targets a valueChangeListener.
+    </p>
+    <ez:customValueChangeListener id="c0" valueChangeListener="#{compositeBean.valueChange}" />
+
+    <p>
+        2. Two nesting levels.  Level 1 defines a custom valueChangeListener and passes it to level 2.  Level 2 targets a valueChangeListener.
+    </p>
+    <ez:valueChangeWrapper1 id="c1" customValueChange="#{compositeBean.valueChange}"/>
+
+    <p>
+        3. Two nesting levels.  Level 1 defines a bean and passes a property as a valueChangeListener to level 2.  Level 2 targets a valueChangeListener.
+    </p>
+    <ez:valueChangeWrapper2 id="c2" bean="#{compositeBean}" />
+
+    <p>
+        4. Three nesting levels.  Level 1 defines a bean and passes a property as a custom valueChangeListener to level 2.  Level 2 defines a custom valueChangeListener and passes it to level 3.  Level 3 targets a valueChangeListener.
+    </p>
+    <ez:valueChangeWrapper3 id="c3" bean="#{compositeBean}" />
+
+    <p>
+        5. Three nesting levels.  Level 1 defines a custom valueChangeListener and passes it to level 2.  Level 2 defines a custom valueChangeListener and passes it to level 3.  Level 3 targets a valueChangeListener.
+    </p>
+    <ez:valueChangeWrapper4 id="c4" customValueChange="#{compositeBean.valueChange}" />
+    <h:commandButton id="submit" value="Submit" />
+</h:form>
+<h:messages id="messages"/>
+<h:form>
+    <h:commandButton value="Clear Messages" />
+</h:form>
+
+
+</h:body>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/composite/valueChangeListenerSetPropertyActionListener01.xhtml b/test/servlet30/systest/src/main/webapp/composite/valueChangeListenerSetPropertyActionListener01.xhtml
new file mode 100644
index 0000000..907d42a
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/composite/valueChangeListenerSetPropertyActionListener01.xhtml
@@ -0,0 +1,79 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:ez="http://java.sun.com/jsf/composite/composite">
+<h:head>
+<title>valueChangeListener with nested setPropertyActionListener</title>
+</h:head>
+
+<h:body>
+
+<h:form id="form">
+
+   <ez:valueChangeSetPropertyActionListener id="composite">
+
+      <f:valueChangeListener binding="#{valueChangeSetPropertyActionListenerBean}" for="value" />
+
+      <f:setPropertyActionListener for="submit" 
+         value="#{valueChangeSetPropertyActionListenerBean.nanoTime}" 
+         target="#{flash.note}" />
+
+   </ez:valueChangeSetPropertyActionListener>
+
+   <p>Message: <h:outputText value="#{message}" /></p>
+
+   <p>Property set by setPropertyActionListener:<h:outputText value="#{flash.note}" />; </p>
+
+   <p>System.currentTimeMillis():<h:outputText 
+       value="#{valueChangeSetPropertyActionListenerBean.nanoTime}" />;</p>
+
+
+</h:form>
+
+</h:body>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/conditionalNav.xhtml b/test/servlet30/systest/src/main/webapp/conditionalNav.xhtml
new file mode 100644
index 0000000..f43fed8
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/conditionalNav.xhtml
@@ -0,0 +1,58 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+<h:head>
+  <title>A Simple JavaServer Faces 2.0 View</title>
+</h:head>
+<h:body>
+  <h:form prependId="false">
+      <p>If the checkbox is checked, we go to the success page,
+      otherwise we go to the failure page.</p>
+      <p><h:selectBooleanCheckbox id="checkbox" value="#{test1.booleanProperty}" /></p>
+    <p><h:commandButton id="submit" value="submit" action="submit"/></p>
+  </h:form>
+</h:body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/config01.jsp b/test/servlet30/systest/src/main/webapp/config01.jsp
new file mode 100644
index 0000000..1b18420
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/config01.jsp
@@ -0,0 +1,117 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<%@ page contentType="text/html"
+%><%@ page import="javax.faces.FactoryFinder"
+%><%@ page import="javax.faces.application.Application"
+%><%@ page import="javax.faces.application.ApplicationFactory"
+%><%@ page import="javax.faces.context.FacesContext"
+%><%@ page import="javax.el.ValueExpression"
+%><%@ page import="com.sun.faces.systest.model.TestBean"
+%><%
+
+// This test exercices the config system's ability to load information
+// from a faces configuration file specified as a servlet context
+// initialization parameter, in addition to one that is specified
+// under WEB-INF.
+
+  // Acquire our Application instance
+  ApplicationFactory afactory = (ApplicationFactory)
+   FactoryFinder.getFactory(FactoryFinder.APPLICATION_FACTORY);
+  Application appl = afactory.getApplication();
+
+  // Acquire the FacesContext instance for this request
+  FacesContext facesContext = FacesContext.getCurrentInstance();
+  if (facesContext == null) {
+    out.println("/configd01.jsp FAILED - No FacesContext returned");
+    return;
+  }
+
+  // Acquire a ValueExpression for the bean to be created
+  // "mybean" exists in a Faces configuration file specified as
+  // as a servlet context init parameter.
+  //
+  ValueExpression valueExpression = appl.getExpressionFactory().
+      createValueExpression(facesContext.getELContext(),"#{mybean}", Object.class);
+  if (valueExpression == null) {
+    out.println("/config01.jsp FAILED - No ValueExpression returned");
+    return;
+  }
+
+  // Evaluate the value binding and check for bean creation
+  Object result = valueExpression.getValue(facesContext.getELContext());
+  if (result == null) {
+    out.println("/config01.jsp FAILED - getValue() returned null");
+    return;
+  }
+
+  Object scoped = request.getAttribute("mybean");
+  if (scoped == null) {
+    out.println("/config01.jsp FAILED - not created in request scope");
+    return;
+  }
+
+  // Acquire a ValueExpression for the bean to be created
+  // "test1" exists in a Faces configuration file under WEB-INF. 
+  //
+  valueExpression = appl.getExpressionFactory().createValueExpression(facesContext.getELContext(),"#{test1}", 
+     Object.class);
+  if (valueExpression == null) {
+    out.println("/config01.jsp FAILED - No ValueExpression returned");
+    return;
+  }
+
+  // Evaluate the value binding and check for bean creation
+  result = valueExpression.getValue(facesContext.getELContext());
+  if (result == null) {
+    out.println("/config01.jsp FAILED - getValue() returned null");
+    return;
+  }
+
+  scoped = request.getAttribute("test1");
+  if (scoped == null) {
+    out.println("/config01.jsp FAILED - not created in request scope");
+    return;
+  }
+
+  out.println("/config01.jsp PASSED");
+%>
diff --git a/test/servlet30/systest/src/main/webapp/converter.jsp b/test/servlet30/systest/src/main/webapp/converter.jsp
new file mode 100644
index 0000000..969f35d
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/converter.jsp
@@ -0,0 +1,67 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<%@ page contentType="text/html"
+%><%@ page import="javax.faces.FactoryFinder"
+%><%@ page import="javax.faces.application.Application"
+%><%@ page import="javax.faces.application.ApplicationFactory"
+%><%@ page import="javax.faces.convert.Converter"
+%><%@ page import="com.sun.faces.systest.TestConverter"
+%><%
+
+  // Acquire our Application instance
+  ApplicationFactory afactory = (ApplicationFactory)
+   FactoryFinder.getFactory(FactoryFinder.APPLICATION_FACTORY);
+  Application appl = afactory.getApplication();
+
+  // try to retrieve the converter id from Application
+  Converter result = appl.createConverter("TestConverter");
+  // report the result
+  if (result == null || 
+      !(result instanceof com.sun.faces.systest.TestConverter)) {
+    out.println("/converter.jsp FAILED");
+    return;
+  } else {
+      out.println("/converter.jsp PASSED");
+  }
+  
+%>
diff --git a/test/servlet30/systest/src/main/webapp/converter01.jsp b/test/servlet30/systest/src/main/webapp/converter01.jsp
new file mode 100644
index 0000000..ae8f5f3
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/converter01.jsp
@@ -0,0 +1,71 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<%@ page contentType="text/html"
+%><%@ page import="javax.faces.FactoryFinder"
+%><%@ page import="javax.faces.application.Application"
+%><%@ page import="javax.faces.application.ApplicationFactory"
+%><%@ page import="javax.faces.convert.Converter"
+%><%@ page import="com.sun.faces.systest.TestConverter"
+%><%
+
+  // Acquire our Application instance
+  ApplicationFactory afactory = (ApplicationFactory)
+   FactoryFinder.getFactory(FactoryFinder.APPLICATION_FACTORY);
+  Application appl = afactory.getApplication();
+
+  // replace mappings provided by the JSF implementation in order to 
+  // customize the behavior of standard JSF features.
+  appl.addConverter("number", "com.sun.faces.systest.TestConverter");
+
+  // try to retrieve our component from Application
+  Converter result = appl.createConverter("number");
+  // report the result
+  if (result == null || 
+      !(result instanceof com.sun.faces.systest.TestConverter)) {
+    out.println("/converter01.jsp FAILED");
+    return;
+  } else {
+      out.println("/converter01.jsp PASSED");
+  }
+  
+%>
diff --git a/test/servlet30/systest/src/main/webapp/converter02.jsp b/test/servlet30/systest/src/main/webapp/converter02.jsp
new file mode 100644
index 0000000..922eaa9
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/converter02.jsp
@@ -0,0 +1,55 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<%@ page contentType="text/html" %>
+<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
+
+<jsp:useBean id="numConverter" class="javax.faces.convert.NumberConverter" scope="session" />
+<%
+   // configure the converter
+   numConverter.setLocale(java.util.Locale.US);
+   numConverter.setType("currency");
+%>
+<f:view>
+    <h:outputText id="id1" value="#{test1.doubleProperty}" converter="#{numConverter}" />
+</f:view>
diff --git a/test/servlet30/systest/src/main/webapp/converter03.jsp b/test/servlet30/systest/src/main/webapp/converter03.jsp
new file mode 100644
index 0000000..5d91401
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/converter03.jsp
@@ -0,0 +1,151 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+  <head>
+    <title>Converters</title>
+    <%@ taglib uri="http://java.sun.com/jsf/core"  prefix="f" %>
+    <%@ taglib uri="http://java.sun.com/jsf/html"  prefix="h" %>
+  </head>
+
+  <body>
+    <h1>Converters</h1>
+
+<f:view>
+
+  <h:form>
+
+    <h:panelGrid columns="2">
+
+<%-- Case 1: Custom Converter with "converterId" attribute --%>
+
+      <h:inputText id="text1"> 
+        <f:converter converterId="TestConverter01" />
+      </h:inputText>
+
+      <h:message for="text1" />
+
+<%-- Case 2: Custom Converter with "binding" attribute --%>
+
+      <h:inputText id="text2"> 
+        <f:converter binding="#{converterBean.converter}" />
+      </h:inputText>
+
+      <h:message for="text2" />
+
+<%-- Case 3: "converterId" and "binding" specified                        --%>
+<%--         "binding" will set the instance (created from "converterId") --%>
+<%--         to a property on the backing bean                     --%>
+
+      <h:inputText id="text3"> 
+        <f:converter converterId="TestConverter01"
+           binding="#{converterBean.converter}" />
+      </h:inputText>
+
+      <h:message for="text3" />
+
+<%-- Bind the converter we created (Case 3) to the component --%>
+
+      <h:inputText id="text4">
+        <f:converter binding="#{converterBean.converter}" />
+      </h:inputText>
+
+      <h:message for="text4" />
+
+<%-- DateTime Converter with "binding" attribute --%>
+
+      <h:inputText id="text5" label="text5" value="10:00:01 PM" size="10" maxlength="20">
+         <f:convertDateTime binding="#{converterBean.dateTimeConverter}"
+            type="time" timeStyle="medium"/>
+      </h:inputText>
+
+      <h:message for="text5" />
+
+<%-- Case 1: Double Converter with "converterId" attribute --%>
+
+      <h:inputText id="text6" value="100" size="10" maxlength="20">
+         <f:converter converterId="javax.faces.Double" />
+      </h:inputText>
+
+      <h:message for="text6" />
+
+<%-- Case 2: Double Converter with "binding" attribute --%>
+
+      <h:inputText id="text7" value="100" size="10" maxlength="20">
+         <f:converter binding="#{converterBean.doubleConverter}" />
+      </h:inputText>
+
+      <h:message for="text7" />
+
+<%-- Case 3: Double Converter "converterId" and "binding" specified       --%> 
+<%--         "binding" will set the instance (created from "converterId") --%>
+<%--         to a property on the backing bean                            --%>
+
+      <h:inputText id="text8"> 
+        <f:converter converterId="javax.faces.Double"
+           binding="#{converterBean.doubleConverter}" />
+      </h:inputText>
+
+      <h:message for="text8" />
+
+<%-- Number Converter with "binding" attribute --%>
+
+      <h:inputText id="text9" value="9" size="10" maxlength="20">
+         <f:convertNumber binding="#{converterBean.numberConverter}" />
+      </h:inputText>
+
+      <h:message for="text9" />
+
+      <h:commandButton value="submit" /> <h:messages />
+
+    </h:panelGrid>
+
+  </h:form>
+
+</f:view>
+
+    <hr>
+  </body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/converter04.jsp b/test/servlet30/systest/src/main/webapp/converter04.jsp
new file mode 100644
index 0000000..d7bdfdd
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/converter04.jsp
@@ -0,0 +1,347 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+  <head>
+    <title>Converters</title>
+    <%@ taglib uri="http://java.sun.com/jsf/core"  prefix="f" %>
+    <%@ taglib uri="http://java.sun.com/jsf/html"  prefix="h" %>
+  </head>
+
+  <body>
+    <h1>Converters</h1>
+
+<f:loadBundle basename="com.sun.faces.CustomMessages" var="customBundle"/>
+
+<f:view>
+
+  <h:form id="form">
+
+    <h:panelGrid id="panelGrid" columns="3">
+
+<%-- Case 1: Big Decimal Converter with no "label" attribute --%>
+
+      <h:outputText value="BigDecimal1:" />
+      <h:inputText id="bd1"> 
+        <f:converter converterId="javax.faces.BigDecimal" />
+      </h:inputText>
+      <h:message for="bd1" showSummary="true"/>
+
+<%-- Case 2: Big Decimal Converter with "label" attribute --%>
+
+      <h:outputText value="BigDecimal2:" />
+      <h:inputText id="bd2" label="#{customBundle.BigDecimalLabel}"> 
+        <f:converter converterId="javax.faces.BigDecimal" />
+      </h:inputText>
+      <h:message for="bd2" showSummary="true" />
+
+<%-- Case 3: Big Integer Converter with no "label" attribute --%>
+                                                                                
+      <h:outputText value="BigInteger1:" />
+      <h:inputText id="bi1">
+        <f:converter converterId="javax.faces.BigInteger" />
+      </h:inputText>
+      <h:message for="bi1" showSummary="true"/>
+                                                                                
+<%-- Case 4: Big Integer Converter with "label" attribute --%>
+                                                                                
+      <h:outputText value="BigInteger2:" />
+      <h:inputText id="bi2" label="BigInteger2">
+        <f:converter converterId="javax.faces.BigInteger" />
+      </h:inputText>
+      <h:message for="bi2" showSummary="true" />
+
+<%-- Case 5: Boolean Converter with no "label" attribute --%>
+                                                                                
+      <h:outputText value="Boolean1:" />
+      <h:selectBooleanCheckbox id="b1" value="idontknow">
+        <f:converter converterId="javax.faces.Boolean" />
+      </h:selectBooleanCheckbox>
+      <h:message for="b1" showSummary="true" />
+
+                                                                                
+<%-- Case 6: Boolean Converter with "label" attribute --%>
+                                                                                
+      <h:outputText value="Boolean2:" />
+      <h:selectBooleanCheckbox id="b2" label="Boolean2" value="true">
+        <f:converter converterId="javax.faces.Boolean" />
+      </h:selectBooleanCheckbox>
+      <h:message for="b2" showSummary="true" />
+
+<%-- Case 7: Byte Converter with no "label" attribute --%>
+                                                                                         
+      <h:outputText value="Byte1:" />
+      <h:inputText id="byte1">
+        <f:converter converterId="javax.faces.Byte" />
+      </h:inputText>
+      <h:message for="byte1"  showSummary="true"/>
+                                                                                         
+<%-- Case 8: Byte Converter with "label" attribute --%>
+                                                                                         
+      <h:outputText value="Byte2:" />
+      <h:inputText id="byte2" label="Byte2">
+        <f:converter converterId="javax.faces.Byte" />
+      </h:inputText>
+      <h:message for="byte2" showSummary="true" />
+
+<%-- Case 9: Character Converter with no "label" attribute --%>
+                                                                                         
+      <h:outputText value="Character1:" />
+      <h:inputText id="char1">
+        <f:converter converterId="javax.faces.Character" />
+      </h:inputText>
+      <h:message for="char1"  showSummary="true"/>
+                                                                                         
+<%-- Case 10: Character Converter with "label" attribute --%>
+                                                                                         
+      <h:outputText value="Character2:" />
+      <h:inputText id="char2" label="Character2">
+        <f:converter converterId="javax.faces.Character" />
+      </h:inputText>
+      <h:message for="char2" showSummary="true" />
+
+<%-- Case 11: DateTime Converter - type="date" with no "label" attribute --%>
+
+      <h:outputText value="Date1:" />
+      <h:inputText id="date1" size="10" maxlength="20">
+         <f:convertDateTime type="date" dateStyle="medium"/>
+      </h:inputText>
+      <h:message for="date1"  showSummary="true"/>
+
+<%-- Case 12: DateTime Converter - type="date" with "label" attribute --%>
+
+      <h:outputText value="Date2:" />
+      <h:inputText id="date2" label="Date2" size="10" maxlength="20">
+         <f:convertDateTime type="date" dateStyle="medium"/>
+      </h:inputText>
+      <h:message for="date2" showSummary="true" />
+
+<%-- Case 13: DateTime Converter - type="time" with no "label" attribute --%>
+                                                                                         
+      <h:outputText value="Time1:" />
+      <h:inputText id="time1" size="10" maxlength="20">
+         <f:convertDateTime type="time" timeStyle="medium"/>
+      </h:inputText>
+      <h:message for="time1"  showSummary="true"/>
+                                                                                         
+<%-- Case 12: DateTime Converter - type="time" with "label" attribute --%>
+                                                                                         
+      <h:outputText value="Time2:" />
+      <h:inputText id="time2" label="Time2" size="10" maxlength="20">
+         <f:convertDateTime type="time" timeStyle="medium"/>
+      </h:inputText>
+      <h:message for="time2" showSummary="true" />
+
+<%-- Case 13: DateTime Converter - type="both" with no "label" attribute --%>
+                                                                                         
+      <h:outputText value="DateTime1:" />
+      <h:inputText id="datetime1" size="10" maxlength="20">
+         <f:convertDateTime type="both"/>
+      </h:inputText>
+      <h:message for="datetime1"  showSummary="true"/>
+                                                                                         
+<%-- Case 14: DateTime Converter - type="both" with "label" attribute --%>
+                                                                                         
+      <h:outputText value="DateTime2:" />
+      <h:inputText id="datetime2" label="DateTime2" size="10" maxlength="20">
+         <f:convertDateTime type="both" />
+      </h:inputText>
+      <h:message for="datetime2" showSummary="true" />
+
+<%-- Case 15: Double Converter with no "label" attribute --%>
+
+      <h:outputText value="Double1:" />
+      <h:inputText id="double1" size="10" maxlength="20">
+         <f:converter converterId="javax.faces.Double" />
+      </h:inputText>
+      <h:message for="double1"  showSummary="true"/>
+
+<%-- Case 16: Double Converter with "label" attribute --%>
+
+      <h:outputText value="Double2:" />
+      <h:inputText id="double2" label="Double2" size="10" maxlength="20">
+         <f:converter converterId="javax.faces.Double" />
+      </h:inputText>
+      <h:message for="double2" showSummary="true" />
+
+<%-- Case 17: Float Converter with no "label" attribute --%>
+                                                                                         
+      <h:outputText value="Float1:" />
+      <h:inputText id="float1" size="10" maxlength="20">
+         <f:converter converterId="javax.faces.Float" />
+      </h:inputText>
+      <h:message for="float1"  showSummary="true"/>
+                                                                                         
+<%-- Case 18: Float Converter with "label" attribute --%>
+                                                                                         
+      <h:outputText value="Float2:" />
+      <h:inputText id="float2" label="Float2" size="10" maxlength="20">
+         <f:converter converterId="javax.faces.Float" />
+      </h:inputText>
+      <h:message for="float2" showSummary="true" />
+                                                                                         
+<%-- Case 19: Integer Converter with no "label" attribute --%>
+                                                                                         
+      <h:outputText value="Integer1:" />
+      <h:inputText id="integer1" size="10" maxlength="20">
+         <f:converter converterId="javax.faces.Integer" />
+      </h:inputText>
+      <h:message for="integer1"  showSummary="true"/>
+                                                                                         
+<%-- Case 20: Integer Converter with "label" attribute --%>
+                                                                                         
+      <h:outputText value="Integer2:" />
+      <h:inputText id="integer2" label="Integer2" size="10" maxlength="20">
+         <f:converter converterId="javax.faces.Integer" />
+      </h:inputText>
+      <h:message for="integer2" showSummary="true" />
+                                                                                         
+<%-- Case 21: Long Converter with no "label" attribute --%>
+                                                                                         
+      <h:outputText value="Long1:" />
+      <h:inputText id="long1" size="10" maxlength="20">
+         <f:converter converterId="javax.faces.Long" />
+      </h:inputText>
+      <h:message for="long1"  showSummary="true"/>
+                                                                                         
+<%-- Case 22: Long Converter with "label" attribute --%>
+                                                                                         
+      <h:outputText value="Long2:" />
+      <h:inputText id="long2" label="Long2" size="10" maxlength="20">
+         <f:converter converterId="javax.faces.Long" />
+      </h:inputText>
+      <h:message for="long2" showSummary="true" />
+
+<%-- Case 23: Number Converter type="currency" with no "label" attribute --%>
+
+      <h:outputText value="Number1:" />
+      <h:inputText id="number1" size="10" maxlength="20">
+         <f:convertNumber type="currency" />
+      </h:inputText>
+      <h:message for="number1"  showSummary="true"/>
+
+<%-- Case 24: Number Converter type="currency" with "label" attribute --%>
+
+      <h:outputText value="Number2:" />
+      <h:inputText id="number2" label="Number2" size="10" maxlength="20">
+         <f:convertNumber type="currency" />
+      </h:inputText>
+      <h:message for="number2" showSummary="true" />
+
+<%-- Case 25: Number Converter type="number" with no "label" attribute --%>
+                                                                                         
+      <h:outputText value="Number3:" />
+      <h:inputText id="number3" size="10" maxlength="20">
+         <f:convertNumber type="number" />
+      </h:inputText>
+      <h:message for="number3"  showSummary="true"/>
+                                                                                         
+<%-- Case 26: Number Converter type="number" with "label" attribute --%>
+                                                                                         
+      <h:outputText value="Number4:" />
+      <h:inputText id="number4" label="Number4" size="10" maxlength="20">
+         <f:convertNumber type="number" />
+      </h:inputText>
+      <h:message for="number4" showSummary="true" />
+
+<%-- Case 27: Number Converter type="percent" with no "label" attribute --%>
+                                                                                         
+      <h:outputText value="Number5:" />
+      <h:inputText id="number5" size="10" maxlength="20">
+         <f:convertNumber type="percent" />
+      </h:inputText>
+      <h:message for="number5"  showSummary="true"/>
+                                                                                         
+<%-- Case 28: Number Converter type="percent" with "label" attribute --%>
+                                                                                         
+      <h:outputText value="Number6:" />
+      <h:inputText id="number6" label="Number6" size="10" maxlength="20">
+         <f:convertNumber type="percent" />
+      </h:inputText>
+      <h:message for="number6" showSummary="true" />
+
+<%-- Case 29: Number Converter with pattern with no "label" attribute --%>
+                                                                                         
+      <h:outputText value="Number7:" />
+      <h:inputText id="number7" size="10" maxlength="20">
+         <f:convertNumber pattern="invalid pattern" />
+      </h:inputText>
+      <h:message for="number7"  showSummary="true"/>
+                                                                                         
+<%-- Case 30: Number Converter with pattern with "label" attribute --%>
+                                                                                         
+      <h:outputText value="Number8:" />
+      <h:inputText id="number8" label="Number8" size="10" maxlength="20">
+         <f:convertNumber pattern="invalid pattern" />
+      </h:inputText>
+      <h:message for="number8" showSummary="true" />
+
+<%-- Case 31: Short Converter with no "label" attribute --%>
+                                                                                         
+      <h:outputText value="Short1:" />
+      <h:inputText id="short1" size="10" maxlength="20">
+         <f:converter converterId="javax.faces.Short" />
+      </h:inputText>
+      <h:message for="short1"  showSummary="true"/>
+                                                                                         
+<%-- Case 32: Short Converter with "label" attribute --%>
+                                                                                         
+      <h:outputText value="Short2:" />
+      <h:inputText id="short2" label="Short2" size="10" maxlength="20">
+         <f:converter converterId="javax.faces.Short" />
+      </h:inputText>
+      <h:message for="short2" showSummary="true" />
+
+      <h:commandButton value="submit" /> 
+
+    </h:panelGrid>
+
+  </h:form>
+
+</f:view>
+
+    <hr>
+  </body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/converter05.jsp b/test/servlet30/systest/src/main/webapp/converter05.jsp
new file mode 100644
index 0000000..babbbd1
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/converter05.jsp
@@ -0,0 +1,125 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+    <html>
+        <head>
+            <title>Converters</title>
+            <%@ taglib uri="http://java.sun.com/jsf/core"  prefix="f" %>
+            <%@ taglib uri="http://java.sun.com/jsf/html"  prefix="h" %>
+        </head>
+
+        <body>
+            <%
+                java.util.Locale localeObject = new java.util.Locale("en", "US");
+                java.util.TimeZone tzObject =
+                    java.util.TimeZone.getTimeZone("America/New_York");
+                String localeString = "en";
+                String timeZoneString = "America/New_York";
+
+                request.setAttribute("localeObject", localeObject);
+                request.setAttribute("timeZoneObject", tzObject);
+                request.setAttribute("localeString", localeString);
+                request.setAttribute("timeZoneString", timeZoneString);
+                request.setAttribute("localeObjectAU", new java.util.Locale("en", "AU"));
+                request.setAttribute("timeZoneStringAU", "Australia/Melbourne");
+
+            %>
+
+            <f:view>
+                <%--
+                    Ensure timeZone and locale attributes can accept:
+                       - literal string
+                       - VE expression resolving to a String
+                       - VE expression resolving to Locale or TimeZone instance
+                         in the case of the locate and timeZone attributes (respectively)
+                --%>
+                <h:outputText id="outputDatetime1"
+                              value="7/10/96 12:31:31 PM PDT">
+                    <f:convertDateTime type="both" timeStyle="full"
+                                       dateStyle="short"
+                                       locale="en"
+                                       timeZone="America/New_York"/>
+                </h:outputText>
+
+                <h:outputText id="outputDatetime2"
+                              value="7/10/96 12:31:31 PM PDT">
+                    <f:convertDateTime type="both" timeStyle="full"
+                                       dateStyle="short"
+                                       locale="#{requestScope.localeString}"
+                                       timeZone="#{requestScope.timeZoneString}"/>
+                </h:outputText>
+                <h:outputText id="outputDatetime3"
+                              value="7/10/96 12:31:31 PM PDT">
+                    <f:convertDateTime type="both" timeStyle="full"
+                                       dateStyle="short"
+                                       locale="#{requestScope.localeObject}"
+                                       timeZone="#{requestScope.timeZoneObject}"/>
+                </h:outputText>
+                <%--
+                     // commented out due to output differences between
+                     // JDK6u10 and releases prior to that version.  In the test below,
+                     // versions prior to JDK6u10 would always output a two digit
+                     // hour (i.e. 05), however, in JDK6u10, it will trim leading
+                     // zeros.  This part of the test could be considered redundant
+                     // anyway.
+                <h:outputText id="outputDatetime4"
+                              value="7/10/96 12:31:31 PM PDT">
+                    <f:convertDateTime type="both" timeStyle="full"
+                                       dateStyle="short"
+                                       locale="#{requestScope.localeObjectAU}"
+                                       timeZone="#{requestScope.timeZoneStringAU}"/>
+                </h:outputText>
+                --%>
+                <h:outputText id="outputNumber1" value="10000">
+                    <f:convertNumber locale="de"/>
+                </h:outputText>
+                <h:outputText id="outputNumber2" value="10000">
+                    <f:convertNumber locale="#{requestScope.localeString}" />
+                </h:outputText>
+                <h:outputText id="outputNumber3" value="10000">
+                    <f:convertNumber locale="#{requestScope.localeObject}" />
+                </h:outputText>
+            </f:view>
+        </body>
+    </html>
diff --git a/test/servlet30/systest/src/main/webapp/converter06.jsp b/test/servlet30/systest/src/main/webapp/converter06.jsp
new file mode 100644
index 0000000..37d3e8f
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/converter06.jsp
@@ -0,0 +1,135 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+  <head>
+    <title>Converters</title>
+    <%@ taglib uri="http://java.sun.com/jsf/core"  prefix="f" %>
+    <%@ taglib uri="http://java.sun.com/jsf/html"  prefix="h" %>
+    <%@ taglib uri="/WEB-INF/taglib.tld"           prefix="s" %>
+  </head>
+
+  <body>
+    <h1>Converters</h1>
+
+<f:loadBundle basename="com.sun.faces.CustomMessages" var="customBundle"/>
+
+<f:view>
+
+  <h:form id="form">
+
+    <h:panelGrid id="panelGrid" columns="3">
+
+
+<%--
+      Exercises javax.faces.webapp.ConverterELTag when ConverterException
+      Expected result: FacesMessage queued;  Log message;
+--%>
+      <h:outputText value="Number4:" />
+      <h:inputText id="number4" label="Number4" size="10" maxlength="20" value="aaa">
+         <f:convertNumber type="number" />
+      </h:inputText>
+      <h:message for="number4" showSummary="true" />
+
+<%--
+      Exercises javax.faces.webapp.ConverterELTag when ConverterException
+      Expected result: Log message;
+--%>
+      <h:outputText value="Number5:" />
+      <h:outputText id="number5" value="aaa">
+         <f:convertNumber type="number" />
+      </h:outputText>
+      <h:message for="number5" showSummary="true" />
+
+<%--
+      Exercises javax.faces.webapp.ConverterELTag when ConverterException
+      Expected result: FacesMessage queued;  Log message; 
+--%>
+      <h:outputText value="Number6:" />
+      <h:inputText id="number6" label="Number6" size="10" maxlength="20" value="aaa" converterMessage="My own message">
+         <f:convertNumber type="number" />
+      </h:inputText>
+      <h:message for="number6" showSummary="false" />
+
+<%--
+      Exercises javax.faces.webapp.ConverterTag when ConverterException
+      Expected result: FacesMessage queued;  Log message; 
+--%>
+      <h:outputText value="Number6:" />
+      <h:outputText value="Number7:" />
+      <h:inputText id="number7" label="Number7" size="10" maxlength="20" value="aaa">
+         <s:converter converterId="javax.faces.Number" />
+      </h:inputText>
+      <h:message for="number7" showSummary="true" />
+
+<%--
+      Exercises javax.faces.webapp.ConverterTag when ConverterException
+      Expected result: Log message;
+--%>
+      <h:outputText value="Number8:" />
+      <h:outputText id="number8" value="aaa">
+         <s:converter converterId="javax.faces.Number" />
+      </h:outputText>
+      <h:message for="number8" showSummary="true" />
+
+<%--
+      Exercises javax.faces.webapp.ConverterTag when ConverterException
+      Expected result: FacesMessage queued;  Log message; 
+--%>
+      <h:outputText value="Number9:" />
+      <h:inputText id="number9" label="Number6" size="10" maxlength="20" value="aaa" converterMessage="My own message">
+         <s:converter converterId="javax.faces.Number" />
+      </h:inputText>
+      <h:message for="number9" showSummary="false" />
+      <h:commandButton value="submit" /> 
+    </h:panelGrid>
+
+  </h:form>
+
+</f:view>
+
+    <hr>
+  </body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/converter07.jsp b/test/servlet30/systest/src/main/webapp/converter07.jsp
new file mode 100644
index 0000000..6ec5b7a
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/converter07.jsp
@@ -0,0 +1,110 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+  <head>
+    <title>Converters</title>
+    <%@ taglib uri="http://java.sun.com/jsf/core"  prefix="f" %>
+    <%@ taglib uri="http://java.sun.com/jsf/html"  prefix="h" %>
+  </head>
+
+  <body>
+    <h1>Converters</h1>
+
+<f:view>
+
+  <h:form>
+
+    <h:panelGrid columns="2">
+
+<%-- Case 1: Double Converter with "converterId" attribute --%>
+
+      <h:inputText id="text1" value="2.2250738585072012e-308" size="10" maxlength="50">
+         <f:converter converterId="javax.faces.Double" />
+      </h:inputText>
+
+      <h:message for="text1" />
+
+      <h:inputText id="text2" value="0.00022250738585072012e-304" size="10" maxlength="50">
+         <f:converter converterId="javax.faces.Double" />
+      </h:inputText>
+
+      <h:message for="text2" />
+
+      <h:inputText id="text3" value="00000000002.2250738585072012e-308" size="10" maxlength="50">
+         <f:converter converterId="javax.faces.Double" />
+      </h:inputText>
+
+      <h:message for="text3" />
+
+      <h:inputText id="text4" value="2.225073858507201200000e-308" size="10" maxlength="50">
+         <f:converter converterId="javax.faces.Double" />
+      </h:inputText>
+
+      <h:message for="text4" />
+
+      <h:inputText id="text5" value="2.2250738585072012e-00308" size="10" maxlength="50">
+         <f:converter converterId="javax.faces.Double" />
+      </h:inputText>
+
+      <h:message for="text5" />
+
+      <h:inputText id="text6" value="2.2250738585072012997800001e-308" size="10" maxlength="50">
+         <f:converter converterId="javax.faces.Double" />
+      </h:inputText>
+
+      <h:message for="text6" />
+
+      <h:commandButton value="submit" /> <h:messages />
+
+    </h:panelGrid>
+
+  </h:form>
+
+</f:view>
+
+    <hr>
+  </body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/duplicateIds01.jsp b/test/servlet30/systest/src/main/webapp/duplicateIds01.jsp
new file mode 100644
index 0000000..f590425
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/duplicateIds01.jsp
@@ -0,0 +1,62 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
+<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+
+<%-- Confirm duplicate ID's are found --%>
+<% try { %>
+<f:view>
+    <h:outputText id="duplicate1" value="one"/>
+    <h:outputText id="output2" value="two"/>
+    <h:outputText id="duplicate1" value="three"/>
+</f:view>
+<% 
+  } catch (JspException je) {
+       je.printStackTrace();
+       if (!(je.getRootCause() instanceof IllegalStateException)) {
+           throw je;
+       }
+   }
+%>
diff --git a/test/servlet30/systest/src/main/webapp/duplicateIds02.jsp b/test/servlet30/systest/src/main/webapp/duplicateIds02.jsp
new file mode 100644
index 0000000..029a8ae
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/duplicateIds02.jsp
@@ -0,0 +1,55 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
+<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+
+<%-- Confirm no errors --%>
+
+
+<f:view>
+    <h:outputText id="output1"/>
+    <h:outputText />
+    <h:outputText />
+</f:view>
diff --git a/test/servlet30/systest/src/main/webapp/duplicateIds03.jsp b/test/servlet30/systest/src/main/webapp/duplicateIds03.jsp
new file mode 100644
index 0000000..f4df84d
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/duplicateIds03.jsp
@@ -0,0 +1,59 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
+<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+
+<%-- Confirm duplicate ID's are found --%>
+
+<f:view>
+    <h:outputText id="output1"/>
+    <h:outputText />
+    <h:outputText>
+       <f:facet name="facet1">
+           <h:outputText id="output1"/>
+       </f:facet>
+    </h:outputText>
+</f:view>
+
diff --git a/test/servlet30/systest/src/main/webapp/duplicateIds04.jsp b/test/servlet30/systest/src/main/webapp/duplicateIds04.jsp
new file mode 100644
index 0000000..3d75ea7
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/duplicateIds04.jsp
@@ -0,0 +1,65 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<%--
+  - @@copyright@@
+  --%>
+<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %>
+<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
+<f:view>
+  <html>
+    <head>
+      <title>Search Criteria</title>
+    </head>
+    <body>
+      <h2>Search for items that:</h2>
+      <h:form>
+        <h:panelGrid columns="3" border="1" cellpadding="5" cellspacing="0"
+                     binding="#{duplicateIds04.panelGrid}" />
+        <br>
+        <h:commandButton value="redisplay" />
+      </h:form>
+    </body>
+  </html>
+</f:view>
diff --git a/test/servlet30/systest/src/main/webapp/duplicateIds05.jsp b/test/servlet30/systest/src/main/webapp/duplicateIds05.jsp
new file mode 100644
index 0000000..50a8f5c
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/duplicateIds05.jsp
@@ -0,0 +1,55 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<%@ taglib uri="http://java.sun.com/jsf/core"  prefix="f" %>
+<%@ taglib uri="http://java.sun.com/jsf/html"  prefix="h" %>
+<%@ taglib uri="/WEB-INF/taglib.tld"           prefix="s" %>
+
+<f:view>
+  <s:children_body>
+    <h:outputText id="id1" value="output"/>
+    <h:outputText id="id2" value="output2"/>
+    <h:outputText value="output3"/>
+  </s:children_body>
+</f:view>
diff --git a/test/servlet30/systest/src/main/webapp/dynamicComponents.xhtml b/test/servlet30/systest/src/main/webapp/dynamicComponents.xhtml
new file mode 100644
index 0000000..68986eb
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/dynamicComponents.xhtml
@@ -0,0 +1,70 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:dy="http://mojarra.dev.java.net/source1">
+  <h:head>
+    <title>1402</title>
+  </h:head>
+
+  <h:body>
+
+<p>Test for <a href="https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=1402">1402</a>.</p>
+
+
+<f:view>
+
+    <ui:debug />
+    
+    <h:form id="form" prependId="false">
+
+        <dy:dynamicAdd id="dynamic1" />
+
+    </h:form>
+</f:view>
+
+  </h:body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/dynamicComponents00.xhtml b/test/servlet30/systest/src/main/webapp/dynamicComponents00.xhtml
new file mode 100644
index 0000000..e9b83f0
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/dynamicComponents00.xhtml
@@ -0,0 +1,69 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:f="http://java.sun.com/jsf/core">
+  <h:head>
+    <title>1654</title>
+  </h:head>
+
+  <h:body>
+
+<p>Test for <a href="https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=1654">1654</a>.</p>
+
+
+<f:view>
+
+    <ui:debug />
+    
+    <h:form id="form" prependId="false">
+
+      <h:commandButton id="next" value="next" action="dynamicComponents01" />
+
+    </h:form>
+</f:view>
+
+  </h:body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/dynamicComponents01.xhtml b/test/servlet30/systest/src/main/webapp/dynamicComponents01.xhtml
new file mode 100644
index 0000000..1460b0c
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/dynamicComponents01.xhtml
@@ -0,0 +1,74 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:dy="http://mojarra.dev.java.net/source1">
+  <h:head>
+    <title>1654</title>
+  </h:head>
+
+  <h:body>
+
+<p>Test for <a href="https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=1654">1654</a>.</p>
+
+
+<f:view>
+
+    <ui:debug />
+    
+    <h:form id="form" prependId="false">
+
+        <dy:dynamicAdd id="dynamic1" />
+
+        <h:commandButton id="thisAgain" value="this again" 
+                         action="dynamicComponents01" />
+        <h:commandButton id="next" value="next" action="dynamicComponents02" />
+
+    </h:form>
+</f:view>
+
+  </h:body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/dynamicComponents02.xhtml b/test/servlet30/systest/src/main/webapp/dynamicComponents02.xhtml
new file mode 100644
index 0000000..0bbb874
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/dynamicComponents02.xhtml
@@ -0,0 +1,71 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:f="http://java.sun.com/jsf/core">
+  <h:head>
+    <title>1654</title>
+  </h:head>
+
+  <h:body>
+
+<p>Test for <a href="https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=1654">1654</a>.</p>
+
+
+<f:view>
+
+    <ui:debug />
+    
+    <h:form id="form" prependId="false">
+
+      <h:outputText value="no dynamic component" />
+
+      <h:commandButton value="next" action="dynamicComponents03" />
+
+    </h:form>
+</f:view>
+
+  </h:body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/dynamicComponents_2119.xhtml b/test/servlet30/systest/src/main/webapp/dynamicComponents_2119.xhtml
new file mode 100644
index 0000000..cf18768
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/dynamicComponents_2119.xhtml
@@ -0,0 +1,29 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<ui:composition xmlns="http://www.w3.org/1999/xhtml"
+				xmlns:h="http://java.sun.com/jsf/html"
+				xmlns:f="http://java.sun.com/jsf/core"
+				xmlns:ui="http://java.sun.com/jsf/facelets"
+				xmlns:test="http://testcomponent">
+
+	<h2>Add Test Instructions</h2>
+	
+	<ol>
+		<li>Just before the page is rendered (pre render view event), a custom component should have created a dynamic component (PanelGrid) and added it as a child.</li>
+ 		<li>Click 'PostBack'. The Action processing for the button will create another dynamic component (OutputText) and add it as a child to the dynamic PanelGrid component.</li>
+        <li>Click 'PostBack' again.  The PanelGrid should still have the OutputText child.</li>
+	</ol>
+		
+	<h:messages/>
+		
+	<h:form prependId="false" id="dynamicForm">
+	
+           <test:addcomponent1/>
+		
+           <br/>
+
+           <h:commandButton id="postback" value="PostBack" action = "#{testManagedBean.save}"/>
+
+	</h:form>			
+	
+</ui:composition>
+
diff --git a/test/servlet30/systest/src/main/webapp/dynamicComponents_2121.xhtml b/test/servlet30/systest/src/main/webapp/dynamicComponents_2121.xhtml
new file mode 100644
index 0000000..afae49e
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/dynamicComponents_2121.xhtml
@@ -0,0 +1,26 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<ui:composition xmlns="http://www.w3.org/1999/xhtml"
+				xmlns:h="http://java.sun.com/jsf/html"
+				xmlns:f="http://java.sun.com/jsf/core"
+				xmlns:ui="http://java.sun.com/jsf/facelets"
+				xmlns:test="http://testcomponent">
+
+	<h2>Add Test Instructions</h2>
+	
+	<ol>
+ 		<li>Click 'AddComponent'. The Action processing for the button will create another dynamic component (OutputText) and add it as a child to the PanelGroup component.</li>
+        <li>Each subsequent 'AddComponent' click should dynamically create and add an OutputText component at the end.</li>  
+	</ol>
+		
+	<h:messages/>
+		
+	<h:form prependId="false" id="dynamicForm">
+	
+           <h:panelGroup id="group">
+              <h:commandButton id="add" value="AddComponent" action="#{testManagedBean.addComponent}"/>
+           </h:panelGroup> 
+		
+	</h:form>			
+	
+</ui:composition>
+
diff --git a/test/servlet30/systest/src/main/webapp/dynamicComponents_common.xhtml b/test/servlet30/systest/src/main/webapp/dynamicComponents_common.xhtml
new file mode 100644
index 0000000..3c0d8b4
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/dynamicComponents_common.xhtml
@@ -0,0 +1,69 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+      
+	<body>
+	
+		<h1>SystemEvent Acid Test</h1>		
+		
+		<p>
+			This WAR tests aspects of JSF SystemEvent handling. Click on each test below:
+		</p>
+		
+		<ol>
+			<li><a href="dynamicComponents_index.xhtml">Add test</a></li>
+			<li><a href="dynamicComponents_toggle.xhtml">Toggle test</a></li>
+			<li><a href="dynamicComponents_recursive.xhtml">Recursive test</a></li>
+			<li><a href="dynamicComponents_stable.xhtml">Stable test</a></li>
+			<li><a href="dynamicComponents_table.xhtml">table test</a></li>
+		</ol>
+		
+		<hr/>
+		
+		<ui:insert />
+		
+	</body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/dynamicComponents_index.xhtml b/test/servlet30/systest/src/main/webapp/dynamicComponents_index.xhtml
new file mode 100644
index 0000000..0d8ed6d
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/dynamicComponents_index.xhtml
@@ -0,0 +1,29 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<ui:composition xmlns="http://www.w3.org/1999/xhtml"
+				xmlns:h="http://java.sun.com/jsf/html"
+				xmlns:f="http://java.sun.com/jsf/core"
+				xmlns:ui="http://java.sun.com/jsf/facelets"
+				xmlns:test="http://testcomponent"
+				template="dynamicComponents_common.xhtml">
+
+	<h2>Add Test Instructions</h2>
+	
+	<ol>
+		<li>The component should have dynamically modified the tree so that 'Dynamically added child' appears inside the red box</li>
+		<li>Click 'POSTback'. The 'Dynamically added child' should not disappear (because it should have been serialized in the ViewState)</li>
+	</ol>
+		
+	<h:messages/>
+		
+	<h:form prependId="false" form="dynamicForm">
+	
+		<test:addcomponent/>
+		
+		<br/>
+		
+		<h:commandButton id="button" value="POSTback" action="#{testManagedBean.save}"/>
+		
+	</h:form>			
+	
+</ui:composition>
+
diff --git a/test/servlet30/systest/src/main/webapp/dynamicComponents_recursive.xhtml b/test/servlet30/systest/src/main/webapp/dynamicComponents_recursive.xhtml
new file mode 100644
index 0000000..293b10a
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/dynamicComponents_recursive.xhtml
@@ -0,0 +1,29 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<ui:composition xmlns="http://www.w3.org/1999/xhtml"
+				xmlns:h="http://java.sun.com/jsf/html"
+				xmlns:f="http://java.sun.com/jsf/core"
+				xmlns:ui="http://java.sun.com/jsf/facelets"
+				xmlns:test="http://testcomponent"
+				template="dynamicComponents_common.xhtml">
+	
+	<h2>Recursive Test Instructions</h2>
+	
+	<ol>
+		<li>The component should have dynamically modified the tree so that 'Dynamically added child' appears inside the red box</li>
+		<li>There should be a nested component that also contains 'Dynamically added child' inside the red box</li>
+		<li>Click 'POSTback'. Nothing should disappear (because it should have been serialized in the ViewState)</li>
+	</ol>
+		
+	<h:messages/>
+		
+	<h:form prependId="false" form="dynamicForm">
+	
+		<test:recursivecomponent/>
+		
+		<br/>
+		
+		<h:commandButton id="button" value="POSTback" action="#{testManagedBean.save}"/>
+		
+	</h:form>			
+
+</ui:composition>
\ No newline at end of file
diff --git a/test/servlet30/systest/src/main/webapp/dynamicComponents_stable.xhtml b/test/servlet30/systest/src/main/webapp/dynamicComponents_stable.xhtml
new file mode 100644
index 0000000..e9c4e85
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/dynamicComponents_stable.xhtml
@@ -0,0 +1,30 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<ui:composition xmlns="http://www.w3.org/1999/xhtml"
+				xmlns:h="http://java.sun.com/jsf/html"
+				xmlns:f="http://java.sun.com/jsf/core"
+				xmlns:ui="http://java.sun.com/jsf/facelets"
+				xmlns:test="http://testcomponent"
+				template="dynamicComponents_common.xhtml">
+	
+	<h2>Stable Test Instructions</h2>
+	
+	<ol>
+		<li>3 text boxes should have been dynamically added inside the component. The first two should display '1' and '2'. The third should be blank</li>
+		<li>The first two boxes will receive an auto-generated id. The third box has had its id set programmatically</li>
+		<li>The third box is a required field, so when you click 'POSTback' you should see a 'Value is required' message</li>
+		<li>Keep clicking 'POSTback'. The order of the boxes should not change - it should remain stable</li>
+	</ol>
+		
+	<h:messages/>
+		
+	<h:form prependId="false" form="dynamicForm">
+	
+		<test:stablecomponent/>
+		
+		<br/>
+		
+		<h:commandButton id="button" value="POSTback" action="#{testManagedBean.save}"/>
+		
+	</h:form>			
+
+</ui:composition>
\ No newline at end of file
diff --git a/test/servlet30/systest/src/main/webapp/dynamicComponents_table.xhtml b/test/servlet30/systest/src/main/webapp/dynamicComponents_table.xhtml
new file mode 100644
index 0000000..c073833
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/dynamicComponents_table.xhtml
@@ -0,0 +1,74 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<ui:composition xmlns="http://www.w3.org/1999/xhtml"
+                                xmlns:h="http://java.sun.com/jsf/html"
+                                xmlns:f="http://java.sun.com/jsf/core"
+                                xmlns:ui="http://java.sun.com/jsf/facelets"
+                                xmlns:test="http://testcomponent"
+                                template="dynamicComponents_common.xhtml">
+
+        <h2>Table Test Instructions</h2>
+
+        <ol>
+                <li>The component should have dynamically created a HtmlDataTable</li>
+                <li>
+                        The 'dynamic creation' code has subtle similarities to the 're-use same component on each row' code within HtmlDataTable. Specifically
+                        if the 'dynamic creation' code is hooking in to 'setParent' then it might get triggered by HtmlDataTable
+                </li>
+                <li>Click 'POSTback'. There should be no error</li>
+        </ol>
+
+        <h:messages/>
+
+        <h:form>
+
+                <test:tablecomponent/>
+
+                <br/>
+
+                <h:commandButton id="button" value="POSTback" action="#{testManagedBean.save}"/>
+
+        </h:form>
+
+</ui:composition>
diff --git a/test/servlet30/systest/src/main/webapp/dynamicComponents_toggle.xhtml b/test/servlet30/systest/src/main/webapp/dynamicComponents_toggle.xhtml
new file mode 100644
index 0000000..5e7943e
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/dynamicComponents_toggle.xhtml
@@ -0,0 +1,32 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<ui:composition xmlns="http://www.w3.org/1999/xhtml"
+				xmlns:h="http://java.sun.com/jsf/html"
+				xmlns:f="http://java.sun.com/jsf/core"
+				xmlns:ui="http://java.sun.com/jsf/facelets"
+				xmlns:test="http://testcomponent"
+				template="dynamicComponents_common.xhtml">
+      
+	<h2>Toggle Test Instructions</h2>
+	
+	<ol>
+		<li>The component should have dynamically modified the tree so that 'Manually added child 2' appears before 'Manually added child 1' inside the red box</li>
+		<li>Click 'POSTback'. The 'Manually added child 2' and 'Manually added child 1' should keep switching places</li>
+		<li>Click 'POSTback' 3 times. You will see an error.</li>
+	</ol>
+		
+	<h:messages/>
+		
+	<h:form prependId="false" form="dynamicForm">
+	
+		<test:togglecomponent>
+			<h:outputText id="child1" value="Manually added child 1<br/>" escape="false"/>
+			<h:outputText id="child2" value="Manually added child 2<br/>" escape="false"/>
+		</test:togglecomponent>
+		
+		<br/>
+		
+		<h:commandButton id="button" value="POSTback" action="#{testManagedBean.save}"/>
+		
+	</h:form>
+	
+</ui:composition>			
diff --git a/test/servlet30/systest/src/main/webapp/eagerbean.jsp b/test/servlet30/systest/src/main/webapp/eagerbean.jsp
new file mode 100644
index 0000000..3ad70c1
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/eagerbean.jsp
@@ -0,0 +1,66 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<%@ page contentType="text/html" language="java" %>
+<%@ page import="javax.faces.context.FacesContext, java.util.Map" %>
+<%
+    FacesContext ctx = FacesContext.getCurrentInstance();
+    Map<String,Object> appMap = ctx.getExternalContext().getApplicationMap();
+    Map<String,Object> sesMap = ctx.getExternalContext().getSessionMap();
+    Map<String,Object> reqMap = ctx.getExternalContext().getRequestMap();
+
+    if (appMap.containsKey("eagerApp1")) {
+        throw new RuntimeException();
+    }
+    if (!appMap.containsKey("eagerApp2")) {
+        throw new RuntimeException();
+    }
+    if (appMap.containsKey("eagerApp3")) {
+        throw new RuntimeException();
+    }
+    if (appMap.containsKey("eagerSes1")) {
+        throw new RuntimeException();
+    }
+    if (appMap.containsKey("eagerReq1")) {
+        throw new RuntimeException();
+    }
+%>
diff --git a/test/servlet30/systest/src/main/webapp/elfunction.xhtml b/test/servlet30/systest/src/main/webapp/elfunction.xhtml
new file mode 100644
index 0000000..33328ca
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/elfunction.xhtml
@@ -0,0 +1,57 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:fn="http://java.sun.com/jsp/jstl/functions">
+<head>
+    <title>Programmatic ELFunction Access</title>
+</head>
+
+<body>
+<h:outputText style="font-style: italic;"
+          value="Test Result: #{functionBean.validationResult}"/>
+</body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/enum-converter-1.jsp b/test/servlet30/systest/src/main/webapp/enum-converter-1.jsp
new file mode 100644
index 0000000..a267597
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/enum-converter-1.jsp
@@ -0,0 +1,95 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<%@ page contentType="text/html"
+%><%@ page import="javax.faces.component.UIInput" 
+%><%@ page import="javax.faces.context.FacesContext" 
+%><%@ page import="javax.faces.convert.ConverterException"
+%><%@ page import="javax.faces.convert.EnumConverter"
+%><%@ page import="com.sun.faces.systest.model.EnumBean"
+%><%
+
+  // Test - no targetClass Exception
+  EnumConverter enumConverter = new EnumConverter();
+  UIInput input = new UIInput();
+  input.setId("myInput");
+  String msg = null;
+  try {
+      Object obj = enumConverter.getAsObject(FacesContext.getCurrentInstance(), input, "foo");
+  } catch (ConverterException ce) {
+      msg = ce.getMessage();
+  }
+  if (msg.equals("myInput: 'foo' must be convertible to an enum from the enum, but no enum class provided.")) {
+      out.println("/enum-converter-1.jsp PASSED");
+  } else {
+      out.println("/enum-converter-1.jsp FAILED");
+  }
+      
+  try {
+      String str = enumConverter.getAsString(FacesContext.getCurrentInstance(), input, "bar");
+  } catch (ConverterException ce) {
+      msg = ce.getMessage();
+  }
+  if (msg.equals("myInput: 'bar' must be convertible to an enum from the enum, but no enum class provided.")) {
+      out.println("/enum-converter-1.jsp PASSED");
+  } else {
+      out.println("/enum-converter-1.jsp FAILED");
+  }
+
+  // Test Valid Enum member
+  try {
+      enumConverter = new EnumConverter(EnumBean.Simple.class);
+      String str = enumConverter.getAsString(FacesContext.getCurrentInstance(), input, EnumBean.Simple.Value2);  
+      out.println("/enum-converter-1.jsp PASSED");
+  } catch (ConverterException ce) {
+      out.println("/enum-converter-1.jsp FAILED");
+  }
+
+  // Test Invalid Enum member
+  try {
+      enumConverter = new EnumConverter(EnumBean.Simple.class);
+      String str = enumConverter.getAsString(FacesContext.getCurrentInstance(), input, "FOO");  
+      out.println("/enum-converter-1.jsp FAILED");
+  } catch (ConverterException ce) {
+      out.println("/enum-converter-1.jsp PASSED");
+  }
+%>
diff --git a/test/servlet30/systest/src/main/webapp/enum-converter.jsp b/test/servlet30/systest/src/main/webapp/enum-converter.jsp
new file mode 100644
index 0000000..2ebc9cf
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/enum-converter.jsp
@@ -0,0 +1,68 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<!DOCTYPE html
+PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
+    <head> <title>Test Enum Converter</title> </head>
+    <%@ page contentType="application/xhtml+xml" %>
+    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
+    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+    <body bgcolor="white">
+    <f:view>
+
+      <h:form prependId="false">
+
+        Suit (Hearts): <h:inputText id="suit" value="#{test1.suit}" /><p />
+        Color (Blue): <h:inputText id="color" value="#{test1.color}" /><p />
+        <h:commandButton value="reload" /><p />
+        messages: <h:messages showDetail="true"/> <p />
+
+      </h:form>
+
+    </f:view>
+    </body>
+</html>  
diff --git a/test/servlet30/systest/src/main/webapp/enum01.jsp b/test/servlet30/systest/src/main/webapp/enum01.jsp
new file mode 100644
index 0000000..536e4c6
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/enum01.jsp
@@ -0,0 +1,55 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+<%@ page contentType="text/html" language="java" %>
+<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
+<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
+<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %>
+
+<f:view>
+  <h:form id="form">
+    <h:commandButton id="go" value="go to hello" action="#{test1.returnSpades}" />
+    <p />
+    <h:commandButton id="stay" value="stay here" action="#{test1.returnDiamonds}" />
+  </h:form>
+</f:view>
diff --git a/test/servlet30/systest/src/main/webapp/escape_test.jsp b/test/servlet30/systest/src/main/webapp/escape_test.jsp
new file mode 100644
index 0000000..64fa6e2
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/escape_test.jsp
@@ -0,0 +1,87 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
+
+<%@ page import="javax.faces.context.FacesContext"%>
+<%
+  String textToEscape = "This text <b>has angle brackets</b>.";
+  FacesContext.getCurrentInstance().getExternalContext().
+   getRequestMap().put("textToEscape", textToEscape);  
+%>
+
+<f:view>
+
+  <html>
+
+    <head>
+      <title>Test of outputText Escaping</title>
+    </head>
+
+    <body>
+
+      <h1>Test of outputText Escaping</h1>
+
+      <p>
+        [DEFAULT]
+        <h:outputText value="#{textToEscape}"/>
+        The angle brackets MUST be escaped.
+      </p>
+
+      <p>
+        [FALSE]
+        <h:outputText value="#{textToEscape}" escape="false"/>
+        The angle brackets MUST NOT be escaped.
+      </p>
+
+      <p>
+        [TRUE]
+        <h:outputText value="#{textToEscape}" escape="true"/>
+        The angle brackets MUST be escaped.
+      </p>
+
+    </body>
+
+  </html>
+
+</f:view>
diff --git a/test/servlet30/systest/src/main/webapp/eventTag.xhtml b/test/servlet30/systest/src/main/webapp/eventTag.xhtml
new file mode 100644
index 0000000..2b4db47
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/eventTag.xhtml
@@ -0,0 +1,82 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+    xmlns:h="http://java.sun.com/jsf/html"
+    xmlns:f="http://java.sun.com/jsf/core">
+    <h:head>
+        <title>Test that f:event handles events correctly</title>
+    </h:head>
+
+    <h:body>
+    <h1>Test that f:event handles events correctly</h1>
+
+
+    <h:form id="form" prependId="false">
+        <h:outputText id="preRenderComponentTest1" >
+            <f:event type="preRenderComponent" listener="#{eventTagBean.beforeEncode}" />
+        </h:outputText>
+        <br />
+        <h:outputText id="preRenderComponentTest2" >
+            <f:event type="javax.faces.event.PreRenderComponent" listener="#{eventTagBean.beforeEncode}" />
+        </h:outputText>
+        <br />
+        <h:outputText id="postAddToViewTest1" >
+            <f:event type="postAddToView" listener="#{eventTagBean.beforeEncode}" />
+        </h:outputText>
+        <br />
+        <h:outputText id="postAddToViewTest2" >
+            <f:event type="javax.faces.event.PostAddToView" listener="#{eventTagBean.beforeEncode}" />
+        </h:outputText>
+        <br />
+        <h:outputText id="fqcnTest" >
+            <f:event type="javax.faces.event.PreRenderComponentEvent" listener="#{eventTagBean.beforeEncode}" />
+        </h:outputText>
+        <br />
+        <h:outputText id="noArgTest" >
+            <f:event type="preRenderComponent" listener="#{eventTagBean.beforeEncodeNoArg}" />
+        </h:outputText>
+        <h:commandButton id="click" value="Click" />
+    </h:form>
+  </h:body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/eventTag01.xhtml b/test/servlet30/systest/src/main/webapp/eventTag01.xhtml
new file mode 100644
index 0000000..299032a
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/eventTag01.xhtml
@@ -0,0 +1,61 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+    xmlns:h="http://java.sun.com/jsf/html"
+    xmlns:f="http://java.sun.com/jsf/core">
+<f:view>
+  <f:event type="preRenderComponent" listener="#{eventTagBean.beforeViewRender}" />
+  
+    <h:head>
+        <title>Ensure that an f:event just inside of f:view gets called before the page is rendered.</title>
+    </h:head>
+
+    <h:body>
+
+    <h:form id="form" prependId="false">
+      <p><h:outputText value="#{preRenderComponentMessage}" /></p>
+    </h:form>
+  </h:body>
+</f:view>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/eventTag02.xhtml b/test/servlet30/systest/src/main/webapp/eventTag02.xhtml
new file mode 100644
index 0000000..4a5d3c3
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/eventTag02.xhtml
@@ -0,0 +1,70 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+    xmlns:h="http://java.sun.com/jsf/html"
+    xmlns:f="http://java.sun.com/jsf/core">
+<f:view>
+  
+    <h:head>
+        <title>Ensure that an f:event deep inside of f:view gets called before the page is rendered.</title>
+    </h:head>
+
+    <h:body>
+
+    <h:form id="form" prependId="false">
+
+    <h:panelGrid columns="1">
+      <h:outputText value="#{preRenderComponentMessage}" />
+
+      <f:event type="preRenderView" 
+               listener="#{eventTagBean.beforeViewRender}" />
+    </h:panelGrid>
+
+    </h:form>
+
+
+
+    </h:body>
+</f:view>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/eventTagInvalid.xhtml b/test/servlet30/systest/src/main/webapp/eventTagInvalid.xhtml
new file mode 100644
index 0000000..e8f9f40
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/eventTagInvalid.xhtml
@@ -0,0 +1,61 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+    xmlns:h="http://java.sun.com/jsf/html"
+    xmlns:f="http://java.sun.com/jsf/core">
+    <h:head>
+        <title>Test that f:event handles events correctly</title>
+    </h:head>
+
+    <h:body>
+    <h1>Test that f:event handles events correctly</h1>
+
+
+    <h:form id="form" prependId="false">
+        <h:outputText id="preRenderComponentTest" >
+            <f:event type="invalidEvent" listener="#{eventTagBean.beforeEncode}" />
+        </h:outputText>
+    </h:form>
+  </h:body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/examineViewRoot.jsp b/test/servlet30/systest/src/main/webapp/examineViewRoot.jsp
new file mode 100644
index 0000000..38ebab0
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/examineViewRoot.jsp
@@ -0,0 +1,72 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+  <head>
+    <title>Show that createView uses overridden ViewRoot</title>
+    <%@ taglib uri="http://java.sun.com/jsf/core"  prefix="f" %>
+    <%@ taglib uri="http://java.sun.com/jsf/html"  prefix="h" %>
+    <%@ page import="javax.faces.context.FacesContext" %>
+  </head>
+
+  <body>
+    <h1>Show that createView uses overridden ViewRoot</h1>
+
+<% 
+FacesContext context = FacesContext.getCurrentInstance();
+
+context.getExternalContext().getRequestMap().put("root", context.getViewRoot().getClass().getName());
+FacesContext.getCurrentInstance().getApplication().addComponent("javax.faces.ViewRoot", "javax.faces.component.UIViewRoot");
+%>
+
+<f:view>
+
+<p>Replaced ViewRoot is <h:outputText value="#{requestScope.root}" /></p>
+
+<p><a name="replace" href="replaceViewRoot.jsp">Go back to replace</a></p>
+
+</f:view>
+
+    <hr>
+  </body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/external01.jsp b/test/servlet30/systest/src/main/webapp/external01.jsp
new file mode 100644
index 0000000..d330497
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/external01.jsp
@@ -0,0 +1,102 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<%@ page contentType="text/html"
+%><%@ page import="javax.faces.context.FacesContext"
+%><%
+
+  // Set the attribute key and values we'll use throughout the test
+  String key = "/external01.jsp";
+  String value1 = "From Servlet";
+  String value2 = "From Faces";
+  String actual = null;
+
+  // Acquire the FacesContext instance for this request
+  FacesContext facesContext = FacesContext.getCurrentInstance();
+  if (facesContext == null) {
+    out.println("/managed01.jsp FAILED - No FacesContext returned");
+    return;
+  }
+
+  // Eliminate any current attribute under this key
+  request.removeAttribute(key);
+  if (request.getAttribute(key) != null) {
+    out.println("/external01.jsp FAILED - can not remove ServletContext attribute");
+    return;
+  }
+  facesContext.getExternalContext().getRequestMap().remove(key);
+  if (facesContext.getExternalContext().getRequestMap().get(key) != null) {
+    out.println("/external01.jsp FAILED - can not remove application scope attribute");
+    return;
+  }
+
+  // Set via Servlet API and check via Faces API
+  request.setAttribute(key, value1);
+  actual = (String) request.getAttribute(key);
+  if (!value1.equals(actual)) {
+    out.println("/external01.jsp FAILED - ServletContext attribute set to '" +
+                value1 + "' but Servlet API returned '" + actual + "'");
+    return;
+  }
+  actual = (String) facesContext.getExternalContext().getRequestMap().get(key);
+  if (!value1.equals(actual)) {
+    out.println("/external01.jsp FAILED - ServletContext attribute set to '" +
+                value1 + "' but Faces API returned '" + actual + "'");
+  }
+
+  // Set via Faces API and check via Servlet API
+  facesContext.getExternalContext().getRequestMap().put(key, value2);
+  actual = (String) facesContext.getExternalContext().getRequestMap().get(key);
+  if (!value2.equals(actual)) {
+    out.println("/external01.jsp FAILED - Faces attribute set to '" +
+                value2 + "' but Faces API returned '" + actual + "'");
+    return;
+  }
+  actual = (String) request.getAttribute(key);
+  if (!value2.equals(actual)) {
+    out.println("/external01.jsp FAILED - Faces attribute set to '" +
+                value2 + "' but Servlet API returned '" + actual + "'");
+    return;
+  }
+
+  out.println("/external01.jsp PASSED");
+%>
diff --git a/test/servlet30/systest/src/main/webapp/external02.jsp b/test/servlet30/systest/src/main/webapp/external02.jsp
new file mode 100644
index 0000000..539dd1f
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/external02.jsp
@@ -0,0 +1,102 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<%@ page contentType="text/html"
+%><%@ page import="javax.faces.context.FacesContext"
+%><%
+
+  // Set the attribute key and values we'll use throughout the test
+  String key = "/external02.jsp";
+  String value1 = "From Servlet";
+  String value2 = "From Faces";
+  String actual = null;
+
+  // Acquire the FacesContext instance for this request
+  FacesContext facesContext = FacesContext.getCurrentInstance();
+  if (facesContext == null) {
+    out.println("/managed01.jsp FAILED - No FacesContext returned");
+    return;
+  }
+
+  // Eliminate any current attribute under this key
+  session.removeAttribute(key);
+  if (session.getAttribute(key) != null) {
+    out.println("/external02.jsp FAILED - can not remove ServletContext attribute");
+    return;
+  }
+  facesContext.getExternalContext().getSessionMap().remove(key);
+  if (facesContext.getExternalContext().getSessionMap().get(key) != null) {
+    out.println("/external02.jsp FAILED - can not remove application scope attribute");
+    return;
+  }
+
+  // Set via Servlet API and check via Faces API
+  session.setAttribute(key, value1);
+  actual = (String) session.getAttribute(key);
+  if (!value1.equals(actual)) {
+    out.println("/external02.jsp FAILED - ServletContext attribute set to '" +
+                value1 + "' but Servlet API returned '" + actual + "'");
+    return;
+  }
+  actual = (String) facesContext.getExternalContext().getSessionMap().get(key);
+  if (!value1.equals(actual)) {
+    out.println("/external02.jsp FAILED - ServletContext attribute set to '" +
+                value1 + "' but Faces API returned '" + actual + "'");
+  }
+
+  // Set via Faces API and check via Servlet API
+  facesContext.getExternalContext().getSessionMap().put(key, value2);
+  actual = (String) facesContext.getExternalContext().getSessionMap().get(key);
+  if (!value2.equals(actual)) {
+    out.println("/external02.jsp FAILED - Faces attribute set to '" +
+                value2 + "' but Faces API returned '" + actual + "'");
+    return;
+  }
+  actual = (String) session.getAttribute(key);
+  if (!value2.equals(actual)) {
+    out.println("/external02.jsp FAILED - Faces attribute set to '" +
+                value2 + "' but Servlet API returned '" + actual + "'");
+    return;
+  }
+
+  out.println("/external02.jsp PASSED");
+%>
diff --git a/test/servlet30/systest/src/main/webapp/external03.jsp b/test/servlet30/systest/src/main/webapp/external03.jsp
new file mode 100644
index 0000000..39653b8
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/external03.jsp
@@ -0,0 +1,102 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<%@ page contentType="text/html"
+%><%@ page import="javax.faces.context.FacesContext"
+%><%
+
+  // Set the attribute key and values we'll use throughout the test
+  String key = "/external03.jsp";
+  String value1 = "From Servlet";
+  String value2 = "From Faces";
+  String actual = null;
+
+  // Acquire the FacesContext instance for this request
+  FacesContext facesContext = FacesContext.getCurrentInstance();
+  if (facesContext == null) {
+    out.println("/managed01.jsp FAILED - No FacesContext returned");
+    return;
+  }
+
+  // Eliminate any current attribute under this key
+  application.removeAttribute(key);
+  if (application.getAttribute(key) != null) {
+    out.println("/external03.jsp FAILED - can not remove ServletContext attribute");
+    return;
+  }
+  facesContext.getExternalContext().getApplicationMap().remove(key);
+  if (facesContext.getExternalContext().getApplicationMap().get(key) != null) {
+    out.println("/external03.jsp FAILED - can not remove application scope attribute");
+    return;
+  }
+
+  // Set via Servlet API and check via Faces API
+  application.setAttribute(key, value1);
+  actual = (String) application.getAttribute(key);
+  if (!value1.equals(actual)) {
+    out.println("/external03.jsp FAILED - ServletContext attribute set to '" +
+                value1 + "' but Servlet API returned '" + actual + "'");
+    return;
+  }
+  actual = (String) facesContext.getExternalContext().getApplicationMap().get(key);
+  if (!value1.equals(actual)) {
+    out.println("/external03.jsp FAILED - ServletContext attribute set to '" +
+                value1 + "' but Faces API returned '" + actual + "'");
+  }
+
+  // Set via Faces API and check via Servlet API
+  facesContext.getExternalContext().getApplicationMap().put(key, value2);
+  actual = (String) facesContext.getExternalContext().getApplicationMap().get(key);
+  if (!value2.equals(actual)) {
+    out.println("/external03.jsp FAILED - Faces attribute set to '" +
+                value2 + "' but Faces API returned '" + actual + "'");
+    return;
+  }
+  actual = (String) application.getAttribute(key);
+  if (!value2.equals(actual)) {
+    out.println("/external03.jsp FAILED - Faces attribute set to '" +
+                value2 + "' but Servlet API returned '" + actual + "'");
+    return;
+  }
+
+  out.println("/external03.jsp PASSED");
+%>
diff --git a/test/servlet30/systest/src/main/webapp/facelets/Client1.xhtml b/test/servlet30/systest/src/main/webapp/facelets/Client1.xhtml
new file mode 100644
index 0000000..b4ff96e
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/facelets/Client1.xhtml
@@ -0,0 +1,48 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<ui:decorate template="Template1.xhtml" xmlns:f="http://java.sun.com/jsf/core"
+xmlns:ui="http://java.sun.com/jsf/facelets">
+  <ui:define name="insertArea">
+    Inserted from client1
+  </ui:define>
+</ui:decorate>
diff --git a/test/servlet30/systest/src/main/webapp/facelets/Client2.xhtml b/test/servlet30/systest/src/main/webapp/facelets/Client2.xhtml
new file mode 100644
index 0000000..cd14cd9
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/facelets/Client2.xhtml
@@ -0,0 +1,44 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<ui:decorate template="Template2.xhtml" xmlns:f="http://java.sun.com/jsf/core"
+xmlns:ui="http://java.sun.com/jsf/facelets" />
diff --git a/test/servlet30/systest/src/main/webapp/facelets/Client3.xhtml b/test/servlet30/systest/src/main/webapp/facelets/Client3.xhtml
new file mode 100644
index 0000000..edf37ae
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/facelets/Client3.xhtml
@@ -0,0 +1,48 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2011 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<ui:decorate template="Template3.xhtml" xmlns:f="http://java.sun.com/jsf/core"
+xmlns:ui="http://java.sun.com/jsf/facelets">
+  <ui:define name="#{bean2202.insertArea}">
+    Inserted from client3
+  </ui:define>
+</ui:decorate>
diff --git a/test/servlet30/systest/src/main/webapp/facelets/Issue1576IncludedPage.xhtml b/test/servlet30/systest/src/main/webapp/facelets/Issue1576IncludedPage.xhtml
new file mode 100644
index 0000000..20c52d1
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/facelets/Issue1576IncludedPage.xhtml
@@ -0,0 +1,10 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+
+	<p>This is a © Copyright</p>
+	<p>This is a · Middot</p>
+	<p>This is a " " Space</p>
+	
+</html>
\ No newline at end of file
diff --git a/test/servlet30/systest/src/main/webapp/facelets/Issue1576UsingPage.xhtml b/test/servlet30/systest/src/main/webapp/facelets/Issue1576UsingPage.xhtml
new file mode 100644
index 0000000..2776a68
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/facelets/Issue1576UsingPage.xhtml
@@ -0,0 +1,8 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:h="http://java.sun.com/jsf/html">
+
+	<ui:include src="Issue1576IncludedPage.xhtml" />
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/facelets/Template1.xhtml b/test/servlet30/systest/src/main/webapp/facelets/Template1.xhtml
new file mode 100644
index 0000000..3c0dfd1
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/facelets/Template1.xhtml
@@ -0,0 +1,49 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<f:subview id="t1" xmlns:ui="http://java.sun.com/jsf/facelets"
+xmlns:f="http://java.sun.com/jsf/core">
+         <ui:insert name="insertArea" >
+          Default
+        </ui:insert>
+</f:subview>
+
diff --git a/test/servlet30/systest/src/main/webapp/facelets/Template2.xhtml b/test/servlet30/systest/src/main/webapp/facelets/Template2.xhtml
new file mode 100644
index 0000000..d254582
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/facelets/Template2.xhtml
@@ -0,0 +1,48 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<f:subview id="t2" xmlns:ui="http://java.sun.com/jsf/facelets" 
+xmlns:f="http://java.sun.com/jsf/core">
+        <ui:insert name="insertArea" >
+          Default
+        </ui:insert>
+</f:subview>
diff --git a/test/servlet30/systest/src/main/webapp/facelets/Template3.xhtml b/test/servlet30/systest/src/main/webapp/facelets/Template3.xhtml
new file mode 100644
index 0000000..857bff0
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/facelets/Template3.xhtml
@@ -0,0 +1,49 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2011 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<f:subview id="t1" xmlns:ui="http://java.sun.com/jsf/facelets"
+xmlns:f="http://java.sun.com/jsf/core">
+         <ui:insert name="#{bean2202.insertArea}" >
+          Default
+        </ui:insert>
+</f:subview>
+
diff --git a/test/servlet30/systest/src/main/webapp/facelets/componentELAtBuildTime.xhtml b/test/servlet30/systest/src/main/webapp/facelets/componentELAtBuildTime.xhtml
new file mode 100644
index 0000000..5b508e9
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/facelets/componentELAtBuildTime.xhtml
@@ -0,0 +1,69 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:c="http://java.sun.com/jsp/jstl/core"
+      xmlns:ez="http://java.sun.com/jsf/composite/composite">
+<head>
+    <title>componentELAtBuildTime</title>
+</head>
+
+<body>
+    <h:panelGrid id="out1" value="ignore">
+        <c:if test="#{component.id eq 'out1'}">
+            <h:panelGrid id="out2"><br />
+                <c:if test="#{component.id eq 'out2'}">
+                    <h:outputText style="color:blue" value="PASSED"/><br />
+                </c:if>
+            </h:panelGrid>
+        </c:if>
+        <c:if test="#{component.id eq 'out1'}">
+            <h:outputText style="color:yellow" value="PASSED"/><br />
+        </c:if>
+    </h:panelGrid>
+    <ez:compositeComponentEL />
+</body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/facelets/compositionnotfound.xhtml b/test/servlet30/systest/src/main/webapp/facelets/compositionnotfound.xhtml
new file mode 100644
index 0000000..af686d4
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/facelets/compositionnotfound.xhtml
@@ -0,0 +1,66 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+<head>
+    <title>compositionnotfound.xhtml</title>
+</head>
+
+<body>
+
+<p><strong>template.jsf</strong></p>
+
+<h2><ui:insert name="title" /></h2>
+
+<p><strong>composition.jsf</strong></p>
+
+This text will be ignored.
+<ui:composition template="template.jsf">
+  <ui:define name="title">Hello World!</ui:define>
+</ui:composition>
+This text will be ignored.
+
+</body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/facelets/conditionalCCAttributeRendering.xhtml b/test/servlet30/systest/src/main/webapp/facelets/conditionalCCAttributeRendering.xhtml
new file mode 100644
index 0000000..c971eb5
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/facelets/conditionalCCAttributeRendering.xhtml
@@ -0,0 +1,65 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:c="http://java.sun.com/jsp/jstl/core"
+      xmlns:ez="http://java.sun.com/jsf/composite/composite">
+<head>
+    <title>conditionalCCAttributeRendering</title>
+</head>
+
+<body>
+    <ez:conditionalAttributeRendering style="#{sessionScope.style}"/>
+    <h:form id="form">
+        <h:commandButton id="add" value="Set Attribute">
+            <f:setPropertyActionListener value="color:red" target="#{sessionScope.style}"/>
+        </h:commandButton>
+        <h:commandButton id="remove" value="Remove Attribute">
+            <f:setPropertyActionListener value="#{''}" target="#{sessionScope.style}"/>
+        </h:commandButton>
+    </h:form>
+</body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/facelets/csetTagBody.xhtml b/test/servlet30/systest/src/main/webapp/facelets/csetTagBody.xhtml
new file mode 100644
index 0000000..a135583
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/facelets/csetTagBody.xhtml
@@ -0,0 +1,61 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:c="http://java.sun.com/jsp/jstl/core">
+<head>
+    <title>csetTagBody</title>
+</head>
+
+<body>
+        <c:set var="x" value="y"/>
+        <c:set var="foo" value="bop"></c:set>
+        <c:set var="bob">alice</c:set>
+        <c:set var="bar">#{foo}</c:set>
+        <c:set var="baz" value="yes">no</c:set>
+        <span id="output">#{x} #{foo} #{bob} #{bar} #{baz}</span>
+</body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/facelets/decoratenotfound.xhtml b/test/servlet30/systest/src/main/webapp/facelets/decoratenotfound.xhtml
new file mode 100644
index 0000000..f773b5f
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/facelets/decoratenotfound.xhtml
@@ -0,0 +1,67 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+<head>
+    <title>includenotfound.xhtml</title>
+</head>
+
+<body>
+
+Text before will stay.<br />
+<ui:decorate template="template.jsf">
+<ui:define name="title">Our Products</ui:define>
+  <ui:define name="body">
+    <ul>
+      <li>Apples</li>
+      <li>Oranges</li>
+      <li>Bananas</li>
+    </ul>
+  </ui:define>
+</ui:decorate>
+Text after will stay.
+
+</body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/facelets/forEach.xhtml b/test/servlet30/systest/src/main/webapp/facelets/forEach.xhtml
new file mode 100644
index 0000000..799d005
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/facelets/forEach.xhtml
@@ -0,0 +1,69 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:c="http://java.sun.com/jsp/jstl/core"
+      xmlns:fn="http://java.sun.com/jsp/jstl/functions">
+<head>
+    <title>forEach</title>
+</head>
+
+<body>
+   <c:forEach items="${fn:split('1,2,3', ',')}" var="item" varStatus="vs">
+        #{item}
+    </c:forEach>
+
+   <c:forEach var="item" items="#{repeatBean.flavorsList}">
+       <h:inputText value="#{item}" /> 
+   </c:forEach>
+
+   <c:forEach var="item" items="#{repeatBean.flavorsList}">
+       <h:inputText id="text1" value="#{item}" /> 
+   </c:forEach>
+
+
+</body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/facelets/frag1.xhtml b/test/servlet30/systest/src/main/webapp/facelets/frag1.xhtml
new file mode 100644
index 0000000..c72f247
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/facelets/frag1.xhtml
@@ -0,0 +1,8 @@
+<div xmlns="http://www.w3.org/1999/xhtml"
+         xmlns:ui="http://java.sun.com/jsf/facelets"
+         xmlns:f="http://java.sun.com/jsf/core"
+         xmlns:c="http://java.sun.com/jstl/core"
+         xmlns:h="http://java.sun.com/jsf/html"
+         id="frag1">
+    <h:outputText id="frag1" style="color:green" value="frag1" />    
+</div>
\ No newline at end of file
diff --git a/test/servlet30/systest/src/main/webapp/facelets/frag2.xhtml b/test/servlet30/systest/src/main/webapp/facelets/frag2.xhtml
new file mode 100644
index 0000000..1d61e7b
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/facelets/frag2.xhtml
@@ -0,0 +1,8 @@
+<div xmlns="http://www.w3.org/1999/xhtml"
+         xmlns:ui="http://java.sun.com/jsf/facelets"
+         xmlns:f="http://java.sun.com/jsf/core"
+         xmlns:c="http://java.sun.com/jstl/core"
+         xmlns:h="http://java.sun.com/jsf/html"
+         id="frag2">
+    <h:outputText id="frag2" style="color:blue" value="frag2" />
+</div>
\ No newline at end of file
diff --git a/test/servlet30/systest/src/main/webapp/facelets/i_bugdb_13582626_fViewNullLocale.xhtml b/test/servlet30/systest/src/main/webapp/facelets/i_bugdb_13582626_fViewNullLocale.xhtml
new file mode 100644
index 0000000..4ce7204
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/facelets/i_bugdb_13582626_fViewNullLocale.xhtml
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+
+<f:view locale="#{issue13582626Bean.nullProperty}" >
+<head>
+    <title>f:view with null locale</title>
+</head>
+<body>
+
+<h:form id="form">
+
+<h:outputText value="text value" />
+
+</h:form>
+
+<h:messages id="messages"/>
+
+</body>
+
+</f:view>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/facelets/i_spec_599.xhtml b/test/servlet30/systest/src/main/webapp/facelets/i_spec_599.xhtml
new file mode 100644
index 0000000..c80728e
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/facelets/i_spec_599.xhtml
@@ -0,0 +1,56 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2011 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+<h:head>
+    <title>JAVASERVERFACES_SPEC_PUBLIC-599</title>
+</h:head>
+
+<h:body>
+
+   Test result: #{issue599Bean.result}
+
+</h:body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/facelets/implicitFacet01.xhtml b/test/servlet30/systest/src/main/webapp/facelets/implicitFacet01.xhtml
new file mode 100644
index 0000000..7935ae4
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/facelets/implicitFacet01.xhtml
@@ -0,0 +1,105 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:f="http://java.sun.com/jsf/core">
+<head>
+    <title>implicit facet test</title>
+</head>
+<body>
+<h:form prependId="false" id="form">
+
+  <f:facet id="facet01" name="facet01">
+
+    <h:outputText id="output01" value="output01" />
+    <h:outputText id="output02" value="output02" />
+    <h:outputText id="output03" value="output03" />
+
+  </f:facet>
+
+  <f:facet id="facet02" name="facet02">
+
+    <h:panelGroup id="panelGroup01">
+
+      <h:outputText id="output07" value="output07" />
+      <h:outputText id="output08" value="output08" />
+      <h:outputText id="output09" value="output09" />
+
+    </h:panelGroup>
+
+  </f:facet>
+
+<p>
+ Implicit facet 01 id: <h:outputText id="facet01Output01"
+ value="#{component.parent.facets['facet01'].id}" />.
+ Child 01 of facet 01 id: <h:outputText id="facet01Output02"
+ value="#{component.parent.facets['facet01'].children['0'].id}" />.
+ Child 02 of facet 01 id: <h:outputText id="facet01Output03"
+ value="#{component.parent.facets['facet01'].children['1'].id}" />.
+ Child 03 of facet 01 id: <h:outputText id="facet01Output04"
+ value="#{component.parent.facets['facet01'].children['2'].id}" />.
+
+</p>
+
+<p>
+ Implicit facet 01 id: <h:outputText id="facet02Output01"
+ value="#{component.parent.facets['facet02'].id}" />.
+ Child 01 of facet 01 id: <h:outputText id="facet02Output02"
+ value="#{component.parent.facets['facet02'].children['0'].id}" />.
+ Child 02 of facet 01 id: <h:outputText id="facet02Output03"
+ value="#{component.parent.facets['facet02'].children['1'].id}" />.
+ Child 03 of facet 01 id: <h:outputText id="facet02Output04"
+ value="#{component.parent.facets['facet02'].children['2'].id}" />.
+
+</p>
+
+<h:commandButton id="command" value="Click Me"/>  
+</h:form>
+<h:messages id="messages"/>
+</body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/facelets/includenotfound.xhtml b/test/servlet30/systest/src/main/webapp/facelets/includenotfound.xhtml
new file mode 100644
index 0000000..7d8d6e8
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/facelets/includenotfound.xhtml
@@ -0,0 +1,59 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+<head>
+    <title>includenotfound.xhtml</title>
+</head>
+
+<body>
+
+<p><strong>include.jsf</strong></p>
+
+<ui:include src="header.jsf"/>
+Body text here.
+
+</body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/facelets/issue1313.xhtml b/test/servlet30/systest/src/main/webapp/facelets/issue1313.xhtml
new file mode 100644
index 0000000..5037429
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/facelets/issue1313.xhtml
@@ -0,0 +1,86 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:c="http://java.sun.com/jsp/jstl/core"
+      xmlns:f="http://java.sun.com/jsf/core">
+<h:head>
+    <title>Issue 1313</title>
+</h:head>
+
+<h:body>
+
+    <h:panelGroup id="group">
+    Dynamic Include: <ui:include src="#{faceletsBean.fragment}.xhtml" />
+    <c:if test="#{faceletsBean.toggleState}">
+        <div id="if">
+        C:IF <h:outputText value="TOGGLE STATE TRUE" /> C:IF
+        </div>
+    </c:if>
+
+    <c:choose>
+        <c:when test="#{faceletsBean.toggleState}">
+            <div id="when">
+            C:WHEN <h:outputText value="TOGGLE STATE TRUE" /> C:WHEN
+            </div>
+        </c:when>
+        <c:otherwise>
+            <div id="otherwise">
+            C:OTHERWISE <h:outputText value="TOGGLE STATE FALSE" /> C:OTHERWISE
+            </div>
+        </c:otherwise>
+    </c:choose>
+    <h:messages />
+    </h:panelGroup>
+
+    <h:form id="form">
+        <h:commandButton id="nonajax" value="Submit non-ajax" action="#{faceletsBean.action}"/>
+        <h:commandButton id="ajax" value="Submit ajax" action="#{faceletsBean.action}">
+            <f:ajax render="@all" execute="@all" />
+        </h:commandButton>
+    </h:form>
+</h:body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/facelets/issue1726.xhtml b/test/servlet30/systest/src/main/webapp/facelets/issue1726.xhtml
new file mode 100644
index 0000000..7b12cd5
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/facelets/issue1726.xhtml
@@ -0,0 +1,78 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2011 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+<h:head>
+    <title>Issue 1726</title>
+</h:head>
+
+<h:body>
+    <h:outputText value="#{request.servletContext.serverInfo}"/>
+    <h:dataTable value="#{issue1726.hobbitDataModel}" var="cur">
+
+        <h:column>
+
+            <f:facet name="header" id="facet">
+                <h:outputText value="#{component.parent.getClass().name}" id="nameHeader"/>
+            </f:facet>
+
+            <h:outputText value="#{cur.name}" id="nameColumn"/>
+
+        </h:column>
+
+        <h:column rowHeader="true">
+           <h:outputText value="FOOBAR"/>
+        </h:column>
+
+    </h:dataTable>
+
+    <h:form prependId="false">
+        <h:commandButton value="reload" id="button"/>
+    </h:form>
+
+</h:body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/facelets/issue1727-facet-conditional.xhtml b/test/servlet30/systest/src/main/webapp/facelets/issue1727-facet-conditional.xhtml
new file mode 100644
index 0000000..0fb4407
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/facelets/issue1727-facet-conditional.xhtml
@@ -0,0 +1,87 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:c="http://java.sun.com/jsp/jstl/core"
+      xmlns:fn="http://java.sun.com/jsp/jstl/functions">
+<head>
+    <title>issue 1727</title>
+</head>
+
+<body>
+
+    <p><a href="https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=1727">https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=1727</a></p>
+
+    <h:dataTable value="#{issue1727.hobbitDataModel}" var="cur">
+
+        <h:column>
+
+            <f:facet name="header" id="facet">
+                <h:outputText value="|Not in if 01|" id="nameHeader01"/>
+                <h:outputText value="|Not in if 02|" id="nameHeader02"/>
+                <c:if test="#{sessionScope['facetCheckboxChecked']}">
+                    <h:outputText value="|In if 01|" id="nameHeader03"/>
+                    <h:outputText value="|In if 02|" id="nameHeader04"/>
+                </c:if>
+            </f:facet>
+
+            <h:outputText value="#{cur.name}" id="nameColumn"/>
+
+        </h:column>
+
+    </h:dataTable>
+
+    <hr />
+
+    <h:form prependId="false">
+        <p>display extra facet components <h:selectBooleanCheckbox id="checkbox" value="#{sessionScope['facetCheckboxChecked']}" /> </p>
+        <h:commandButton value="reload" id="button"/>
+    </h:form>
+
+
+
+</body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/facelets/issue1757-dynamic-components.xhtml b/test/servlet30/systest/src/main/webapp/facelets/issue1757-dynamic-components.xhtml
new file mode 100644
index 0000000..3fa4193
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/facelets/issue1757-dynamic-components.xhtml
@@ -0,0 +1,74 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:test="http://mojarra.dev.java.net/source1">
+      
+	<body>
+	
+		<h2>Instructions</h2>
+		
+		<ol>
+			<li>The component should have dynamically modified the tree so that 'Dynamically added child' appears inside the red box</li>
+			<li>Click 'POSTback'. The dynamically added child will disappear!</li>
+		</ol>
+			
+		<h:messages/>
+			
+		<h:form prependId="false">
+		
+			<test:testcomponent>
+				<h:outputText value="Manually added child<br/>" escape="false"/>
+			</test:testcomponent>
+			
+			<br/>
+			
+			<h:commandButton id="button" value="POSTback" action="#{issue1757DynamicManagedBean.save}"/>
+			
+		</h:form>			
+
+	</body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/facelets/setpropertyactionlistener1.xhtml b/test/servlet30/systest/src/main/webapp/facelets/setpropertyactionlistener1.xhtml
new file mode 100644
index 0000000..e650191
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/facelets/setpropertyactionlistener1.xhtml
@@ -0,0 +1,66 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+<head>
+    <title>setpropertyactionlistener1</title>
+</head>
+
+<body>
+    <h:form id="form">
+        <span>Current Name: #{sessionScope.name}</span>
+        <br/>
+        <h:commandButton id="s1" value="ClickMe">
+            <f:setPropertyActionListener value="Mojarra" target="#{sessionScope.name}"/>
+        </h:commandButton>
+        <br/>
+        <h:commandLink id="s2" value="DeleteMe">
+            <f:setPropertyActionListener value="#{null}" target="#{sessionScope.name}"/>
+        </h:commandLink>
+        <br/>
+    </h:form>
+</body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/facelets/sourcefromdtdconfig.xhtml b/test/servlet30/systest/src/main/webapp/facelets/sourcefromdtdconfig.xhtml
new file mode 100644
index 0000000..04cc2b3
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/facelets/sourcefromdtdconfig.xhtml
@@ -0,0 +1,54 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:s1="http://mojarra.dev.java.net/source1">
+<head>
+    <title>sourcefromdtdconfig.xhtml</title>
+</head>
+
+<body>
+    <s1:hello />
+</body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/facelets/templateComp.xhtml b/test/servlet30/systest/src/main/webapp/facelets/templateComp.xhtml
new file mode 100644
index 0000000..a9ca425
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/facelets/templateComp.xhtml
@@ -0,0 +1,62 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xml:lang="en" lang="en">
+<head>
+    <title>Should Not Be Displayed</title>
+</head>
+<body>   
+<ui:composition  template="/WEB-INF/templates/templateCompTemplate.xhtml" >
+    <ui:param name="title" value="Template Test"/>
+    <ui:define name="content">
+        <div id="toplevelContent">Inserted Content</div>
+    </ui:define>
+</ui:composition>
+</body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/facelets/templateDecorate.xhtml b/test/servlet30/systest/src/main/webapp/facelets/templateDecorate.xhtml
new file mode 100644
index 0000000..018cd1a
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/facelets/templateDecorate.xhtml
@@ -0,0 +1,61 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xml:lang="en" lang="en">
+<head>
+    <title>Decorate Test</title>
+</head>
+<body>
+<ui:decorate template="/WEB-INF/templates/templateDecorateTemplate.xhtml">
+    <ui:define name="insert">
+        <span id="insert">Inserted Text</span>
+    </ui:define>
+</ui:decorate>
+</body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/facelets/templateDecoration2.xhtml b/test/servlet30/systest/src/main/webapp/facelets/templateDecoration2.xhtml
new file mode 100644
index 0000000..7cde1ec
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/facelets/templateDecoration2.xhtml
@@ -0,0 +1,50 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:h="http://java.sun.com/jsf/html">
+<h:head />
+<h:body>
+  <ui:include src="Client1.xhtml" />
+  <ui:include src="Client2.xhtml" />
+</h:body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/facelets/uirepeat.xhtml b/test/servlet30/systest/src/main/webapp/facelets/uirepeat.xhtml
new file mode 100644
index 0000000..1416e7a
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/facelets/uirepeat.xhtml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:f="http://java.sun.com/jsf/core">
+<head>
+    <title>ui:repeat test</title>
+</head>
+<body>
+<h:form id="form">
+
+<h1>Iterate over <code>List</code> property</h1>
+<ui:repeat value="#{repeatBean.flavorsList}" var="cur" varStatus="curStatus">
+
+  <p>ListFlavor is #{cur}.  Begin is #{curStatus.begin}. End is #{curStatus.end}. Index is #{curStatus.index}. Step is #{curStatus.step}.  Index is even: #{curStatus.even}. Index is odd: #{curStatus.odd}.  Index is first: #{curStatus.first}. Index is last: #{curStatus.last}.</p>
+
+</ui:repeat>
+
+<h1>Iterate over <code>array</code> property</h1>
+<ui:repeat value="#{repeatBean.flavorsArray}" var="cur" varStatus="curStatus">
+
+  <p>ArrayFlavor is #{cur}.  Begin is #{curStatus.begin}. End is #{curStatus.end}. Index is #{curStatus.index}. Step is #{curStatus.step}.  Index is even: #{curStatus.even}. Index is odd: #{curStatus.odd}.  Index is first: #{curStatus.first}. Index is last: #{curStatus.last}.</p>
+
+</ui:repeat>
+
+  
+</h:form>
+<h:messages id="messages"/>
+</body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/facelets/uirepeat2.xhtml b/test/servlet30/systest/src/main/webapp/facelets/uirepeat2.xhtml
new file mode 100644
index 0000000..3dfdaee
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/facelets/uirepeat2.xhtml
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:f="http://java.sun.com/jsf/core">
+<head>
+    <title>ui:repeat2 test</title>
+</head>
+<body>
+<h:form id="form">
+
+   <ui:repeat var="var" value="#{repeatBean.flavorsList}" varStatus="status">
+       <h:commandLink value="#{var}">
+           <f:setPropertyActionListener target="#{repeatBean.index}" value="#{status.index}" />
+       </h:commandLink>
+       <br />
+   </ui:repeat>
+
+</h:form>
+<h:messages id="messages"/>
+</body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/facelets/uirepeat3.xhtml b/test/servlet30/systest/src/main/webapp/facelets/uirepeat3.xhtml
new file mode 100644
index 0000000..43b61b9
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/facelets/uirepeat3.xhtml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:f="http://java.sun.com/jsf/core">
+<head>
+    <title>ui:repeat3 test</title>
+</head>
+<body>
+<h:form id="form">
+   <h:inputText id="num" value="#{requestScope.num}">
+        <f:convertNumber integerOnly="true" />    
+   </h:inputText>
+   <ui:repeat var="var" value="#{repeatBean.flavorsList}" varStatus="status">
+       <h:inputText value="#{requestScope.val}" />
+   </ui:repeat>
+   <h:commandButton id="submit" value="submit" />
+</h:form>
+<h:messages id="messages"/>
+</body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/facelets/uirepeat4.xhtml b/test/servlet30/systest/src/main/webapp/facelets/uirepeat4.xhtml
new file mode 100644
index 0000000..e8d46e3
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/facelets/uirepeat4.xhtml
@@ -0,0 +1,113 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:f="http://java.sun.com/jsf/core">
+<head>
+    <title>ui:repeat4 test</title>
+</head>
+<body>
+<h:form id="form">
+
+    <div id="section1">
+        <ui:repeat var="var"
+                   value="#{repeatBean.flavorsList}"
+                   varStatus="status"
+                   begin="1">
+            <span>#{var} : index=#{status.index} : begin=#{status.begin} : end=#{status.end} : step=#{status.step} : first=#{status.first} : last=#{status.last} : even=#{status.even} : odd=#{status.odd}</span>
+            <br/>
+        </ui:repeat>
+    </div>
+    <br />
+    <br />
+    <div id="section2">
+        <ui:repeat var="var" value="#{repeatBean.flavorsList}"
+                   varStatus="status"
+                   begin="2"
+                   end="3">
+            <span>#{var}: index=#{status.index} : begin=#{status.begin} : end=#{status.end} : step=#{status.step} : first=#{status.first} : last=#{status.last} : even=#{status.even} : odd=#{status.odd}</span>
+            <br/>
+        </ui:repeat>
+    </div>
+    <br />
+    <br />
+    <div id="section3">
+        <ui:repeat var="var" value="#{repeatBean.flavorsList}"
+                   varStatus="status"
+                   step="2">
+            <span>#{var}: index=#{status.index} : begin=#{status.begin} : end=#{status.end} : step=#{status.step} : first=#{status.first} : last=#{status.last} : even=#{status.even} : odd=#{status.odd}</span>
+            <br/>
+        </ui:repeat>
+    </div>
+    <br />
+    <br />
+    <div id="section4">
+        <ui:repeat var="var" value="#{repeatBean.flavorsList}"
+                   varStatus="status"
+                   begin="1"
+                   end="1"
+                   step="2">
+            <span>#{var}: index=#{status.index} : begin=#{status.begin} : end=#{status.end} : step=#{status.step} : first=#{status.first} : last=#{status.last} : even=#{status.even} : odd=#{status.odd}</span>
+            <br/>
+        </ui:repeat>
+    </div>
+    <br />
+    <br />
+    <div id="section5">
+        <ui:repeat var="var" value="#{repeatBean.singleFlavorList}"
+                   varStatus="status">
+            <span>#{var}: index=#{status.index} : begin=#{status.begin} : end=#{status.end} : step=#{status.step} : first=#{status.first} : last=#{status.last} : even=#{status.even} : odd=#{status.odd}</span>
+            <br/>
+        </ui:repeat>
+    </div>
+
+
+</h:form>
+<h:messages id="messages"/>
+</body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/facelets/uirepeat5.xhtml b/test/servlet30/systest/src/main/webapp/facelets/uirepeat5.xhtml
new file mode 100644
index 0000000..47dde8d
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/facelets/uirepeat5.xhtml
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:f="http://java.sun.com/jsf/core">
+<head>
+    <title>ui:repeat5 test</title>
+</head>
+<body>
+<h:form id="form" prependId="false">
+
+
+        <ui:repeat var="var"
+                   value="#{thousandsOfPojos.items}">
+
+           <h:inputText value="#{var.a}" />
+           <h:inputText value="#{var.b}" />
+           <h:inputText value="#{var.c}" />
+
+           <h:inputText value="#{var.inner.d}" />
+           <h:inputText value="#{var.inner.e}" />
+        </ui:repeat>
+
+
+</h:form>
+<h:messages id="messages"/>
+<ui:debug recordStateSize="true" />
+</body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/facelets/validatorDisabled.xhtml b/test/servlet30/systest/src/main/webapp/facelets/validatorDisabled.xhtml
new file mode 100644
index 0000000..fc8884e
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/facelets/validatorDisabled.xhtml
@@ -0,0 +1,87 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+<head>
+    <title></title>
+</head>
+<body>
+<p>
+    Test 1.  Validate nested validators marked as disabled aren't processed.
+</p>
+<h:form id="form1">
+    <h:inputText id="input" value="#{requestScope.value}">
+        <f:validateLongRange maximum="10" disabled="true" />
+        <f:validateLength minimum="5" />
+        <f:validateDoubleRange minimum="5" disabled="true" />
+    </h:inputText>
+        <br />
+        <h:commandButton id="sub" value="Submit" />
+        <h:messages id="messages1" for="input" />
+</h:form>
+<p>
+    Test 2.  Nested validator disable status takes precedence over wrapped validators.
+    First input field disables the validator, so no messages should appear over the
+    HR.  The second field doesn't have a validator.  Surrounding both fields is
+    a length validator with a minimum of 5.
+</p>
+<h:form id="form2">
+    <f:validateLength minimum="5">
+        <h:inputText id="input1" value="#{requestScope.value1}">
+            <f:validateLength disabled="true" />
+        </h:inputText>
+        <h:inputText id="input2" value="#{requestScope.value2}" />
+    </f:validateLength>
+    <h:commandButton id="sub" value="Submit" />
+    <h:messages id="messages2" for="input1" />
+    <hr />
+    <h:messages id="messages3" for="input2" />
+</h:form>
+</body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/facelets/viewPhaseListeners.xhtml b/test/servlet30/systest/src/main/webapp/facelets/viewPhaseListeners.xhtml
new file mode 100644
index 0000000..5c5c361
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/facelets/viewPhaseListeners.xhtml
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:f="http://java.sun.com/jsf/core">
+<head>
+    <title>UIViewRoot PhaseListeners</title>
+</head>
+<body>
+<h:form id="form">
+   <f:phaseListener binding="#{listenerCheckBean.listener}" />
+   <h:commandButton id="button" value="Submit" action="#{listenerCheckBean.checkListeners}" />
+</h:form>
+<h:messages id="messages"/>
+</body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/facelets/when.xhtml b/test/servlet30/systest/src/main/webapp/facelets/when.xhtml
new file mode 100644
index 0000000..f735456
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/facelets/when.xhtml
@@ -0,0 +1,81 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:c="http://java.sun.com/jsp/jstl/core"
+      xmlns:fn="http://java.sun.com/jsp/jstl/functions">
+<head>
+    <title>forEach</title>
+</head>
+
+<body>
+
+
+    <c:set var="isEmpty" value="#{fn:length(test1.oneElementList) lt 1}"/>
+<p>
+    <h:outputText value="size = #{fn:length(test1.oneElementList)}"/>
+</p>
+<p>
+    <h:outputText value="isEmpty = #{isEmpty}"/>
+</p>
+<c:if test="#{fn:length(test1.oneElementList) lt 1}">
+    <p>there is none!!!</p>
+</c:if>
+<c:if test="#{fn:length(test1.oneElementList) ge 1}">
+    <p>there is some!!!</p>
+</c:if>
+<c:choose>
+    <c:when test="#{isEmpty}">
+        <p>there is none (really)!!!</p>
+    </c:when>
+    <c:otherwise>
+        <p>there is some (really)!!!</p>
+    </c:otherwise>
+</c:choose>
+
+
+</body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/facesResponse.jsp b/test/servlet30/systest/src/main/webapp/facesResponse.jsp
new file mode 100644
index 0000000..c5387d3
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/facesResponse.jsp
@@ -0,0 +1,59 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<%@ page import="javax.servlet.RequestDispatcher" %><%
+
+  // Generically link to a Faces Response for a View Id
+  //
+  // Query Parameters:
+  //  responseViewId           View Id to display via Faces
+
+  String toViewId = request.getParameter("responseViewId");
+  RequestDispatcher rd = application.getRequestDispatcher
+    ("/faces" + toViewId);
+  rd.forward(request, response);
+
+  // Should always forward or throw an exception
+
+%>
diff --git a/test/servlet30/systest/src/main/webapp/factoryFinder.jsp b/test/servlet30/systest/src/main/webapp/factoryFinder.jsp
new file mode 100644
index 0000000..87099fe
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/factoryFinder.jsp
@@ -0,0 +1,66 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+  <head>
+    <title>Print out the names of the current Factories</title>
+    <%@ taglib uri="http://java.sun.com/jsf/core"  prefix="f" %>
+    <%@ taglib uri="http://java.sun.com/jsf/html"  prefix="h" %>
+  </head>
+
+  <body>
+    <h1>Print out the names of the current Factories</h1>
+
+<f:view>
+
+  <h:form>
+
+      <h:outputText value="#{test3.factoryPrintout}" />
+
+  </h:form>
+
+</f:view>
+
+    <hr>
+  </body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/failure.xhtml b/test/servlet30/systest/src/main/webapp/failure.xhtml
new file mode 100644
index 0000000..8273f44
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/failure.xhtml
@@ -0,0 +1,49 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+    <head><title>Failure!</title></head>
+    <body>
+        <p>Failure!</p>
+    </body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/foo01.jsp b/test/servlet30/systest/src/main/webapp/foo01.jsp
new file mode 100644
index 0000000..5200b60
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/foo01.jsp
@@ -0,0 +1,51 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+<%@ page contentType="text/html" language="java" %>
+<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
+<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
+<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %>
+
+<f:subview id="foo01">
+<h:outputText value="foo01"/>
+</f:subview>
diff --git a/test/servlet30/systest/src/main/webapp/foo02.jsp b/test/servlet30/systest/src/main/webapp/foo02.jsp
new file mode 100644
index 0000000..29a44de
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/foo02.jsp
@@ -0,0 +1,51 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+<%@ page contentType="text/html" language="java" %>
+<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
+<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
+<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %>
+
+
+<h:outputText value="foo02"/>
+
diff --git a/test/servlet30/systest/src/main/webapp/forEach.xhtml b/test/servlet30/systest/src/main/webapp/forEach.xhtml
new file mode 100644
index 0000000..3678e5c
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/forEach.xhtml
@@ -0,0 +1,69 @@
+<!--
+
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+ Copyright 1997-2010 Sun Microsystems, Inc. All rights reserved.
+
+ The contents of this file are subject to the terms of either the GNU
+ General Public License Version 2 only ("GPL") or the Common Development
+ and Distribution License("CDDL") (collectively, the "License").  You
+ may not use this file except in compliance with the License. You can obtain
+ a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
+ or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ language governing permissions and limitations under the License.
+
+ When distributing the software, include this License Header Notice in each
+ file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
+ Sun designates this particular file as subject to the "Classpath" exception
+ as provided by Sun in the GPL Version 2 section of the License file that
+ accompanied this code.  If applicable, add the following below the License
+ Header, with the fields enclosed by brackets [] replaced by your own
+ identifying information: "Portions Copyrighted [year]
+ [name of copyright owner]"
+
+ Contributor(s):
+
+ If you wish your version of this file to be governed by only the CDDL or
+ only the GPL Version 2, indicate your decision by adding "[Contributor]
+ elects to include this software in this distribution under the [CDDL or GPL
+ Version 2] license."  If you don't indicate a single choice of license, a
+ recipient has the option to distribute your version of this file under
+ either the CDDL, the GPL Version 2 or to extend the choice of license to
+ its licensees as provided above.  However, if you add GPL Version 2 code
+ and therefore, elected the GPL Version 2 license, then the option applies
+ only if the new code is made subject to such option by the copyright
+ holder.
+
+-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:c="http://java.sun.com/jsp/jstl/core">
+
+  <h:head>
+     <title>1753</title>
+  </h:head>
+
+  <h:body>
+
+<p>Test for <a href="https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=1753">1753</a>.</p>
+
+
+<f:view>
+
+    <h:form id="form">
+
+        <h:commandButton id="beginning" action="#{forEachBean1.addNewLineBeginning}" value="Add new line Beginning" />
+        <h:commandButton id="end" action="#{forEachBean1.addNewLineEnd}" value="Add new line End" /><br/>
+
+        <c:forEach items="#{forEachBean1.newList3}" var="item">
+                <h:outputText id="A#{item}" value="#{item}" />
+        </c:forEach>
+
+    </h:form>
+</f:view>
+
+  </h:body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/forEach01.jsp b/test/servlet30/systest/src/main/webapp/forEach01.jsp
new file mode 100644
index 0000000..2030c85
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/forEach01.jsp
@@ -0,0 +1,115 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+<%@ page contentType="text/html" language="java" %>
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
+<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %>
+
+<%@ page import="java.util.*" %>
+
+<% ArrayList list = new ArrayList();
+   list.add("output1"); list.add("output2"); list.add("output3");
+   pageContext.setAttribute("output", list, pageContext.SESSION_SCOPE);
+
+   ArrayList inputWithIdList = new ArrayList();
+   inputWithIdList.add("inputid1"); inputWithIdList.add("inputid2"); inputWithIdList.add("inputid3");
+   pageContext.setAttribute("inputWithIdList", inputWithIdList, pageContext.SESSION_SCOPE);
+
+   
+   HashMap map1 = new HashMap();
+   map1.put("inputText1", "input1");
+   map1.put("inputText2", "input2");
+   map1.put("inputText3", "input3");
+   pageContext.setAttribute("input", map1, pageContext.SESSION_SCOPE);
+
+%>
+<f:view>
+<html>
+<head>
+<title>c:forEach Test</title>
+</head>
+<body>
+
+<br>
+<h:form id="myform" >
+<br>
+   <h:outputText value ="Test c:ForEach with outputText and no id" />
+   <br> 
+   <c:forEach var="item" items="#{output}">
+       <h:outputText value="#{item}"/> <br>
+   </c:forEach>
+   <br> <br>
+   
+   <!-- inputText without "id" -->
+   <h:outputText value ="Test c:ForEach with inputText and no id" />
+   <br> 
+   <c:forEach var="item" items="#{input}">
+       <h:inputText value="#{item}" valueChangeListener="#{forEachBean1.valueChange1}"/> <br>
+   </c:forEach>
+   
+   <c:forEach var="item" items="#{forEachBean1.newList1}">
+       <h:inputText value="#{item}" /> <br>
+   </c:forEach>
+   
+   
+   <br> <br>
+   <h:outputText value ="Test c:ForEach with inputText and with id" />
+   <br> 
+   <!-- inputText with "id" -->
+   <c:forEach var="itemWithId" items="#{inputWithIdList}">
+       <h:inputText id ="inputId1" value="#{itemWithId}" valueChangeListener="#{forEachBean1.valueChange2}"/>
+       <br>
+   </c:forEach>
+   
+   <c:forEach var="item" items="#{forEachBean1.newList2}">
+       <h:inputText id="inputId2" value="#{item}" /> <br>
+   </c:forEach>
+       
+   <br> <br>
+
+<h:commandButton id="submit" value="Submit" />
+</h:form>
+</body>
+</html>
+</f:view>
diff --git a/test/servlet30/systest/src/main/webapp/forEach02.jsp b/test/servlet30/systest/src/main/webapp/forEach02.jsp
new file mode 100644
index 0000000..1a784da
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/forEach02.jsp
@@ -0,0 +1,89 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
+<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %>
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+<html>
+  <head>
+    <title></title>
+  </head>
+
+  <body>
+    <h1></h1>
+
+<%--
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ 
+ Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
+ 
+ The contents of this file are subject to the terms of either the GNU
+ General Public License Version 2 only ("GPL") or the Common Development
+ and Distribution License("CDDL") (collectively, the "License").  You
+ may not use this file except in compliance with the License. You can obtain
+ a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
+ or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ language governing permissions and limitations under the License.
+ 
+ When distributing the software, include this License Header Notice in each
+ file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
+ Sun designates this particular file as subject to the "Classpath" exception
+ as provided by Sun in the GPL Version 2 section of the License file that
+ accompanied this code.  If applicable, add the following below the License
+ Header, with the fields enclosed by brackets [] replaced by your own
+ identifying information: "Portions Copyrighted [year]
+ [name of copyright owner]"
+ 
+ Contributor(s):
+ 
+ If you wish your version of this file to be governed by only the CDDL or
+ only the GPL Version 2, indicate your decision by adding "[Contributor]
+ elects to include this software in this distribution under the [CDDL or GPL
+ Version 2] license."  If you don't indicate a single choice of license, a
+ recipient has the option to distribute your version of this file under
+ either the CDDL, the GPL Version 2 or to extend the choice of license to
+ its licensees as provided above.  However, if you add GPL Version 2 code
+ and therefore, elected the GPL Version 2 license, then the option applies
+ only if the new code is made subject to such option by the copyright
+ holder.
+--%>
+
+<f:view>
+
+<h:messages/>
+<br>
+
+<h:form               id="form">
+
+
+   <table border="1" style="list-background"
+        summary="Add books from the catalog to your shopping cart.">
+       <tr><th>header</th>
+       </tr>
+
+       <c:forEach items="#{BooksBean.books}" var="book" varStatus="stat" >
+          <tr styleClass="${(stat.index % 2) == 0 ? "list-row-event" : "list-row-odd"}">
+               <td style="list-column-left">
+               <h:commandLink action="null">
+                       
+                          <h:outputText id="bookTitle" value="#{book.title}"/>
+                       
+               </h:commandLink>
+               </td>
+          </tr>
+       </c:forEach>
+  </table>
+
+</h:form>
+
+</f:view>
+
+
+
+    <hr>
+    <address><a href="mailto:ed.burns at sun.com">Edward Burns</a></address>
+
+
+Last modified: Tue Oct  5 01:38:02 EDT 2010
+<!-- hhmts end -->
+  </body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/forEach03.jsp b/test/servlet30/systest/src/main/webapp/forEach03.jsp
new file mode 100644
index 0000000..6256e30
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/forEach03.jsp
@@ -0,0 +1,156 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<%@ page contentType="text/html" language="java"%>
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
+<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
+<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
+<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html"%>
+
+<%@ page import="java.util.*"%>
+
+<%
+        for (int j = 0; j < 3; ++j)
+        {
+            String mapName = "input" + (j + 1);
+            if (pageContext.getAttribute(mapName) == null)
+            {
+                Map map = new LinkedHashMap();
+                for (int i = 0; i < 3; ++i)
+                    map.put("inputText" + (j * 3 + i + 1), "input" + (j * 3 + i + 1));
+                pageContext.setAttribute(mapName, map, pageContext.SESSION_SCOPE);
+            }
+        }
+%>
+<f:view>
+    <html>
+    <head>
+    <title>Test Interaction of c:forEach, h:label and h:message</title>
+    <style type="text/css">
+    label { font-family: sans-serif; font-weight: bold; font-size: 0.8em; }
+    .message { color: red; font-weight: bold; }
+    .subheading { font-weight: bold; background-color: #cfffcf; }
+    </style>
+    </head>
+    <body>
+
+    <br>
+    <h:form id="myform">
+        <h:panelGrid>
+            <f:facet name="header">
+                <h:outputText
+                    value="Test Interaction of c:forEach, h:label and h:message" />
+            </f:facet>
+
+            <!-- list all messages -->
+            <h:messages id="messages" layout="table" styleClass="message" />
+
+            <!-- label without "id" -->
+            <h:outputText styleClass="subheading"
+                value="Test simple label and inputText and no id on the label" />
+            <h:outputLabel for="inputInt1" value="Label for intProperty below" />
+            <h:message for="inputInt1" styleClass="message" />
+            <h:inputText id="inputInt1" value="#{forEachBean1.intProperty}"
+                required="true" />
+
+            <h:inputText id="inputByte1" value="#{forEachBean1.byteProperty}"
+                required="true" />
+            <h:message for="inputByte1" styleClass="message" />
+            <h:outputLabel for="inputByte1" value="Label for byteProperty above" />
+
+            <h:outputText styleClass="subheading"
+                value="Test c:ForEach with label and inputText and no id on the label" />
+            <c:forEach var="item" items="#{input1}">
+                <h:outputLabel for="inputId1" value="Label for #{item.key} below" />
+                <h:message for="inputId1" styleClass="message" />
+                <h:inputText id="inputId1" value="#{input1[item.key]}" required="true" />
+            </c:forEach>
+
+            <!-- label with "id" -->
+            <h:outputText styleClass="subheading"
+                value="Test simple label and inputText with an id on the label" />
+            <h:outputLabel id="inputLong1Label" for="inputLong1"
+                value="Label for longProperty below" />
+            <h:message id="inputLong1Msg" for="inputLong1" styleClass="message" />
+            <h:inputText id="inputLong1" value="#{forEachBean1.longProperty}"
+                required="true" />
+
+            <h:inputText id="inputShort1" value="#{forEachBean1.longProperty}"
+                required="true" />
+            <h:message id="inputShort1Msg" for="inputShort1" styleClass="message" />
+            <h:outputLabel id="inputShort1Label" for="inputShort1"
+                value="Label for shortProperty above" />
+
+            <h:outputText styleClass="subheading"
+                value="Test c:ForEach with label and inputText with an id on the label" />
+            <c:forEach var="item" items="#{input2}">
+                <h:inputText id="inputId2" value="#{input2[item.key]}" required="true" />
+                <h:message id="inputId2Msg" for="inputId2" styleClass="message" />
+                <h:outputLabel id="inputId2Label" for="inputId2"
+                    value="Label for #{item.key} above" />
+            </c:forEach>
+
+            <h:outputText styleClass="subheading"
+                value="Test c:ForEach with transposed table" />
+            <h:panelGroup>
+                <h:panelGrid columns="#{fn:length(input3)}">
+                    <c:forEach var="item" items="#{input3}">
+                        <h:outputLabel for="inputId3" value="Label for #{item.key} below" />
+                    </c:forEach>
+                    <c:forEach var="item" items="#{input3}">
+                        <h:message for="inputId3" styleClass="message" />
+                    </c:forEach>
+                    <c:forEach var="item" items="#{input3}">
+                        <h:inputText id="inputId3" value="#{input3[item.key]}"
+                            required="true" />
+                    </c:forEach>
+                </h:panelGrid>
+            </h:panelGroup>
+        </h:panelGrid>
+        
+        <jsp:include page="forEach03Include.jsp" />       
+
+        <h:commandButton id="submit" value="Submit" />
+    </h:form>
+    </body>
+    </html>
+</f:view>
diff --git a/test/servlet30/systest/src/main/webapp/forEach03Include.jsp b/test/servlet30/systest/src/main/webapp/forEach03Include.jsp
new file mode 100644
index 0000000..652f8dc
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/forEach03Include.jsp
@@ -0,0 +1,59 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<%@ page contentType="text/html" language="java"%>
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
+<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
+<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
+<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html"%>
+
+<c:forEach var="item" items="#{input1}">
+    <h:outputLabel for="inputId11" value="Label for #{item.key} below"/>
+    <h:message for="inputId11" styleClass="message"/>
+    <h:inputText id="inputId11" value="#{input1[item.key]}" required="true"/>
+</c:forEach>
+
+<h:inputText id="Short11" value="#{forEachBean1.longProperty}"
+             required="true"/>
+<h:message for="Short11" styleClass="message"/>
+<h:outputLabel id="Short11Label" for="Short11"
+               value="Label for shortProperty above"/>
diff --git a/test/servlet30/systest/src/main/webapp/forEach04.jsp b/test/servlet30/systest/src/main/webapp/forEach04.jsp
new file mode 100644
index 0000000..6da7677
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/forEach04.jsp
@@ -0,0 +1,66 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %>
+<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+<%
+    String[] paths = new String[] { "frag1", "frag2" };
+    request.setAttribute("paths", paths);
+%>
+<f:view>
+    <html>
+    <head>
+        <title>forEach04.jsp (validates fix for Issue 714)</title>
+    </head>
+    <body>
+    <h:form>
+        <h:commandButton id="clickit" value="Click Me"/>
+        <c:forEach items="#{paths}" var="fragmentPath">
+            <f:subview id="id${fragmentPath}">
+                <jsp:include page="/${fragmentPath}.jsp"/>
+            </f:subview>
+        </c:forEach>
+    </h:form>
+    </body>
+    </html>
+</f:view>
diff --git a/test/servlet30/systest/src/main/webapp/frag1.jsp b/test/servlet30/systest/src/main/webapp/frag1.jsp
new file mode 100644
index 0000000..28a6e96
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/frag1.jsp
@@ -0,0 +1,44 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %>
+<h:outputText value="frag1" id="frag1"/>
diff --git a/test/servlet30/systest/src/main/webapp/frag2.jsp b/test/servlet30/systest/src/main/webapp/frag2.jsp
new file mode 100644
index 0000000..058989a
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/frag2.jsp
@@ -0,0 +1,44 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %>
+<h:outputText value="frag2" id="frag2"/>
diff --git a/test/servlet30/systest/src/main/webapp/groovy/groovy.xhtml b/test/servlet30/systest/src/main/webapp/groovy/groovy.xhtml
new file mode 100644
index 0000000..8207250
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/groovy/groovy.xhtml
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:ez="http://java.sun.com/jsf/composite/composite">
+    <head>
+        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+    </head>
+    <body>
+        <h:outputText id="bean" style="display: block" value="#{bean.message}"/>
+        <br/>
+        <ez:groovyBacked id="header" value="This is a header!"/>
+    </body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/hello.jsp b/test/servlet30/systest/src/main/webapp/hello.jsp
new file mode 100644
index 0000000..1262dad
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/hello.jsp
@@ -0,0 +1,45 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<%@ page contentType="text/html" %><%
+  out.println("/hello.jsp PASSED");
+%>
diff --git a/test/servlet30/systest/src/main/webapp/immediate01.jsp b/test/servlet30/systest/src/main/webapp/immediate01.jsp
new file mode 100644
index 0000000..841c7c3
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/immediate01.jsp
@@ -0,0 +1,77 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+<%@ page contentType="text/html" language="java" %>
+<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
+<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %>
+
+<f:view>
+<html>
+<head>
+<title>immediate01</title>
+</head>
+<body>
+
+<h:form>
+
+<p>PENDING: write an HTMLUNIT testcase for this.</p>
+
+Output: <h:outputText value="#{immediateBean.stringProperty}"/> Input: 
+<h:inputText value="#{immediateBean.stringProperty}"/> <br />
+<h:commandLink action="null">Submit</h:commandLink> <p />
+<h:commandLink action="null" immediate="true">Cancel</h:commandLink> <p />
+
+<h:commandButton value="Submit" action="null" /><p />
+<h:commandButton value="Cancel" action="null" immediate="true" /><p />
+
+<hr />
+
+<h:commandButton value="Clear Bean Property">
+  <f:setPropertyActionListener target="#{immediateBean.stringProperty}" value="" />
+</h:commandButton>
+
+</h:form>
+
+</body>
+</html>
+</f:view>
diff --git a/test/servlet30/systest/src/main/webapp/implicitnav/implicitNavEmptyString.xhtml b/test/servlet30/systest/src/main/webapp/implicitnav/implicitNavEmptyString.xhtml
new file mode 100644
index 0000000..c0a9446
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/implicitnav/implicitNavEmptyString.xhtml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+        PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"
+      xmlns:h="http://java.sun.com/jsf/html">
+<h:head>
+    <title>Implicit Navigation with empty string action</title>
+</h:head>
+<h:body>
+
+  <h:form prependId="false">
+      <p>Implicit Navigation with empty string action</p>
+
+      <p><h:commandButton id="button" action="#{test1.emptyStringAction}"
+                          value="stay here" /></p>
+
+
+  </h:form>
+    
+</h:body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/implicitnav/implicitNavRedirect.xhtml b/test/servlet30/systest/src/main/webapp/implicitnav/implicitNavRedirect.xhtml
new file mode 100644
index 0000000..7377401
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/implicitnav/implicitNavRedirect.xhtml
@@ -0,0 +1,59 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+<h:head>
+  <title>A Simple JavaServer Faces 2.0 View</title>
+</h:head>
+<h:body>
+  <h:form prependId="false">
+      <p>Enter first name: <h:inputText id="input" value="#{test1.stringProperty}" /></p>
+    <p><h:button id="httpGet" value="HTTP GET" outcome="implicitNavRedirect02" /></p>
+    <p><h:commandButton id="httpPostRedirect" value="HTTP POST with Redirect" action="implicitNavRedirect02?faces-redirect=true" /></p>
+    <p><h:commandButton id="httpPostInvalidQueryString" value="HTTP POST with invalid query string" action="implicitNavRedirect02?" /></p>
+    <p><h:commandButton id="httpPost" value="HTTP POST" action="implicitNavRedirect02" /></p>
+  </h:form>
+</h:body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/implicitnav/implicitNavRedirect02.xhtml b/test/servlet30/systest/src/main/webapp/implicitnav/implicitNavRedirect02.xhtml
new file mode 100644
index 0000000..b638eec
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/implicitnav/implicitNavRedirect02.xhtml
@@ -0,0 +1,57 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+<h:head>
+  <title>Page 02</title>
+</h:head>
+<h:body>
+    <p>Page 02</p>
+    <p>Value of First name: <#{test1.stringProperty}>.</p>
+    
+    <p>The value will be empty if either of the "HTTP POST with Redirect" or the
+    "HTTP GET" buttons were pressed.  If the "HTTP POST" button was pressed,
+    the value will not be empty.</p>
+</h:body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/implicitnav/page01.xhtml b/test/servlet30/systest/src/main/webapp/implicitnav/page01.xhtml
new file mode 100644
index 0000000..db1fbc8
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/implicitnav/page01.xhtml
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+        PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"
+      xmlns:h="http://java.sun.com/jsf/html">
+<h:head>
+    <title>Implicit Navigation</title>
+</h:head>
+<h:body>
+
+  <h:form prependId="false">
+
+    <p>Action URL to this page: <h:outputText 
+                         value="#{implicitNavigationBean.currentActionUrl}" /></p>
+
+    <p>Resource URL to this page: <h:outputText 
+                         value="#{implicitNavigationBean.currentResourceUrl}" /></p>
+
+    <p>[page01] <h:commandButton id="page02" value="page02" action="/implicitnav/page02" /></p>
+
+  </h:form>
+    
+</h:body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/implicitnav/page02.xhtml b/test/servlet30/systest/src/main/webapp/implicitnav/page02.xhtml
new file mode 100644
index 0000000..ad444d5
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/implicitnav/page02.xhtml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+    PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title>Implicit Navigation</title>
+    </h:head>
+    <h:body>
+        <h:form prependId="false">
+            <h:outputText value="Project Stage: #{facesContext.application.projectStage}"/>
+            <p>
+                <h:commandButton id="page01" value="page01" action="page01" /> [page02] 
+                <h:commandButton id="page03" value="page03" action="page03" />
+            </p>
+        </h:form>
+    </h:body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/implicitnav/page03.xhtml b/test/servlet30/systest/src/main/webapp/implicitnav/page03.xhtml
new file mode 100644
index 0000000..1f496c1
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/implicitnav/page03.xhtml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+        PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"
+      xmlns:h="http://java.sun.com/jsf/html">
+<h:head>
+    <title>Implicit Navigation</title>
+</h:head>
+<h:body>
+
+  <h:form prependId="false">
+
+    <p><h:commandButton id="page02" value="page02" action="page02" /> [page03]
+
+    <h:commandButton id="page04" value="page04" action="page04?faces-redirect=true" /></p>
+
+  </h:form>
+    
+</h:body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/implicitnav/page04.xhtml b/test/servlet30/systest/src/main/webapp/implicitnav/page04.xhtml
new file mode 100644
index 0000000..a3cb7ac
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/implicitnav/page04.xhtml
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+        PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"
+      xmlns:h="http://java.sun.com/jsf/html">
+<h:head>
+    <title>Implicit Navigation</title>
+</h:head>
+<h:body>
+
+  <h:form prependId="false">
+
+<p>This is the last page.</p>
+
+
+  </h:form>
+    
+</h:body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/include-import-interweaving.jsp b/test/servlet30/systest/src/main/webapp/include-import-interweaving.jsp
new file mode 100644
index 0000000..ba6e2e7
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/include-import-interweaving.jsp
@@ -0,0 +1,140 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<!DOCTYPE html
+PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
+    <head> <title>Hello</title> </head>
+    <%@ page contentType="application/xhtml+xml" autoFlush="true"%>
+    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
+    <%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>    
+    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+    <body bgcolor="white">
+    <f:view>
+    <h:form id="form">
+    
+        <p>Outer Template Text followed by 
+        <h:outputText id="outerComponent" value="outer component" /></p>
+	
+<table border="1">	
+
+<tr><td>
+<ul><font color="blue">        
+
+ <f:subview id="subview01">
+	    <p>Subview on the outside only with jsp:include:</p>
+            <jsp:include page="TCCI_subview01.jsp" />
+ </f:subview>
+        
+</font></ul>        
+
+	    
+</td></tr>
+
+<tr><td>
+<ul><font color="green">        
+
+	    <p>Subview on the inside only with jsp:include:</p>
+            <jsp:include page="TCCI_subview02.jsp" />
+        
+</font></ul>        
+
+	    
+</td></tr>
+
+<tr><td>
+<ul><font color="purple">        
+
+	    <p>Subview on the outside and inside with jsp:include:</p>
+<f:subview id="subview03">
+	    <p>Template Text before the include</p>
+            <jsp:include page="TCCI_subview03.jsp" />
+</f:subview>
+        
+</font></ul>        
+
+	    
+</td></tr>
+
+<tr><td>
+<ul><font color="red">        
+        <f:subview id="outerSubview3">
+	    <p>Subview on the outside only with c:import:</p>
+            <c:import url="TCCI_subview04.jsp" />
+        </f:subview>
+</font></ul>        
+
+	    
+</td></tr>
+
+
+<tr><td>
+<ul><font color="red">        
+	    <p>Subview on the inside only with c:import:</p>
+            <c:import url="TCCI_subview05.jsp" />
+</font></ul>        
+
+	    
+</td></tr>
+
+<tr><td>
+<ul><font color="orange">        
+	    <p>Subview on the outside and inside with c:import:</p>
+<f:subview id="subview05">
+	    <p>Template Text on the outside</p>
+            <c:import url="TCCI_subview06.jsp" />
+</f:subview>
+</font></ul>        
+
+	    
+</td></tr>
+
+
+</table>
+	 
+
+    </h:form>
+    </f:view>
+    </body>
+</html>  
diff --git a/test/servlet30/systest/src/main/webapp/include12.jsp b/test/servlet30/systest/src/main/webapp/include12.jsp
new file mode 100644
index 0000000..59aafbd
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/include12.jsp
@@ -0,0 +1,50 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
+<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %>
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+<c:if test="true">
+    this should be before the button
+    <h:commandButton id="button" value="commandButton 1"/>
+</c:if>
+
diff --git a/test/servlet30/systest/src/main/webapp/index.html b/test/servlet30/systest/src/main/webapp/index.html
new file mode 100644
index 0000000..2f298bf
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/index.html
@@ -0,0 +1,100 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<html>
+    <head>
+        <title></title>
+    </head>
+    <body>
+        <pre>
+
+Test to investigate for migration:
+
+Failed tests: 
+  CompositeComponentsITCase>HtmlUnitFacesITCase.runTest:633->testMissingRequiredFacet:981 null
+  CompositeComponentsITCase>HtmlUnitFacesITCase.runTest:633->testMissingRequiredAttribute:973 null
+  CompositeComponentsITCase>HtmlUnitFacesITCase.runTest:633->testForNoNPE:1007 null
+  CompositeComponentsITCase>HtmlUnitFacesITCase.runTest:633->testNesting05:462 null
+  CompositeComponentsITCase>HtmlUnitFacesITCase.runTest:633->testNesting08:533 null
+  CompositeBehaviorITCase>HtmlUnitFacesITCase.runTest:633->test01:73 Page does not contain validation message after clicking cancel button.
+
+Tests in error: 
+  Jsf2JspITCase>HtmlUnitFacesITCase.runTest:633->testSupportedFeaturesAreSupported:92->HtmlUnitFacesITCase.getPage:264 » FailingHttpStatusCode
+  CommandLinkMultiFormITCase>HtmlUnitFacesITCase.runTest:633->testMultiForm:119 » ElementNotFound
+  CommandLinkOnClickITCase>HtmlUnitFacesITCase.runTest:633->testOnClickReturnFalse:144->HtmlUnitFacesITCase.getPage:264 » Script
+  CommandLinkOnClickITCase>HtmlUnitFacesITCase.runTest:633->testOnClickReturnTrue:102->HtmlUnitFacesITCase.getPage:264 » Script
+  JspIntegrationITCase>HtmlUnitFacesITCase.runTest:633->testJspDynamic01:107->checkJspDynamic01:275->HtmlUnitFacesITCase.getPage:264 » FailingHttpStatusCode
+  JspIntegrationITCase>HtmlUnitFacesITCase.runTest:633->testJspInclude03:177->checkJspInclude03a:332->HtmlUnitFacesITCase.getPage:264 » FailingHttpStatusCode
+  JspIntegrationITCase>HtmlUnitFacesITCase.runTest:633->testJspInclude04:221->checkJspInclude04a:378->HtmlUnitFacesITCase.getPage:264 » FailingHttpStatusCode
+  SelectComponentValueITCase>HtmlUnitFacesITCase.runTest:633->testSelectManyInvalidValue:175 » IllegalArgument
+  SelectComponentValueITCase>HtmlUnitFacesITCase.runTest:633->testSelectManyMismatchValue:150 » FailingHttpStatusCode
+  SelectComponentValueITCase>HtmlUnitFacesITCase.runTest:633->testSelectManyInvalidValue:175 » IllegalArgument
+  SelectComponentValueITCase>HtmlUnitFacesITCase.runTest:633->testSelectManyMismatchValue:150 » FailingHttpStatusCode
+
+  Additional tests to investigate failing client side state saving:
+
+com.sun.faces.composite.CompositeComponentsITCase.testValidator1
+com.sun.faces.composite.CompositeComponentsITCase.testValidator2
+com.sun.faces.composite.CompositeComponentsITCase.testValidator3
+com.sun.faces.composite.CompositeComponentsITCase.testValidator4
+com.sun.faces.composite.CompositeComponentsITCase.testActionSource1
+com.sun.faces.composite.CompositeComponentsITCase.testActionSource2
+com.sun.faces.composite.CompositeComponentsITCase.testActionSource3
+com.sun.faces.composite.CompositeComponentsITCase.testActionSource4
+com.sun.faces.composite.CompositeComponentsITCase.testConverters
+com.sun.faces.jsptest.ForEachITCase.testForEach
+com.sun.faces.jsptest.IdRefITCase.testIncludeNoLoopIdRef
+com.sun.faces.jsptest.IdRefITCase.testIncludedLoopIdRefs
+com.sun.faces.jsptest.IdRefITCase.testIdRefs
+
+  Additional test failing on Tomcat:
+
+com.sun.faces.composite.CompositeComponentsITCase.testNesting04
+com.sun.faces.composite.JavaTopLevelComponentITCase.testJavaBeanPropertyOnTopLevelComponentHasExpectedValue
+com.sun.faces.composite.JavaTopLevelComponentITCase.testDefaultAttribute
+com.sun.faces.composite.JavaTopLevelComponentITCase.testDefaultActionAttribute
+com.sun.faces.jsptest.SelectComponentValueITCase.testSelectOneRadioTypeInt
+com.sun.faces.jsptest.SelectComponentValueITCase.testSelectOneRadioTypeInt
+
+        </pre>        
+    </body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/input01.jsp b/test/servlet30/systest/src/main/webapp/input01.jsp
new file mode 100644
index 0000000..7df7e1a
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/input01.jsp
@@ -0,0 +1,70 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<%@ page contentType="text/html" language="java" %>
+<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
+<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %>
+
+<f:view>
+<html>
+<head>
+<title>input01</title>
+</head>
+<body>
+
+<h:form id="form">
+
+  <table border="1">
+
+    <tr><td>Message: <h:message for="form:input" /></td></tr>
+
+    <tr><td>Clear this value and press reload: <h:inputText id="input" value="#{test3.intProperty}" /></td></tr>
+
+  </table>
+
+  <p><h:commandButton value="reload" /></p>
+
+</h:form>
+
+</body>
+</html>
+</f:view>
diff --git a/test/servlet30/systest/src/main/webapp/interweaving01.jsp b/test/servlet30/systest/src/main/webapp/interweaving01.jsp
new file mode 100644
index 0000000..7df74e5
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/interweaving01.jsp
@@ -0,0 +1,65 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<%@ page contentType="text/html" language="java" %>
+<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
+<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
+<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %>
+
+<f:view>
+<html>
+<head>
+<title>interweaving01</title>
+</head>
+<body>
+<h:outputText value="Begin"/>
+test
+<h:outputText value="jsp include without verbatim"/>
+
+<jsp:include page="test01.jsp"/>
+
+<h:outputText value="End"/>
+test
+<h:outputText value="jsp include without verbatim"/>
+</body>
+</html>
+</f:view>
diff --git a/test/servlet30/systest/src/main/webapp/interweaving02.jsp b/test/servlet30/systest/src/main/webapp/interweaving02.jsp
new file mode 100644
index 0000000..14a606f
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/interweaving02.jsp
@@ -0,0 +1,67 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<%@ page contentType="text/html" language="java" %>
+<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
+<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
+<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %>
+
+<f:view>
+<html>
+<head>
+<title>interweaving01</title>
+</head>
+<body>
+<h:outputText value="Begin"/>
+test
+<h:outputText value="jstl import without verbatim"/>
+
+<c:import url="test01.jsp"/>
+
+<h:outputText value="End"/>
+test
+<h:outputText value="jstl import without verbatim"/>
+</body>
+</html>
+</f:view>
+
+
diff --git a/test/servlet30/systest/src/main/webapp/interweaving03.jsp b/test/servlet30/systest/src/main/webapp/interweaving03.jsp
new file mode 100644
index 0000000..b5d6606
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/interweaving03.jsp
@@ -0,0 +1,57 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+<%@ page contentType="text/html" language="java" %>
+<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
+<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
+<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %>
+
+<f:view>
+    <h:form>
+      <h:panelGrid columns="1">
+	Row 1
+	<h:outputText value="Row 2"/>
+	Row 3
+      </h:panelGrid>
+    </h:form>
+</f:view>
diff --git a/test/servlet30/systest/src/main/webapp/interweaving04.jsp b/test/servlet30/systest/src/main/webapp/interweaving04.jsp
new file mode 100644
index 0000000..a811e4a
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/interweaving04.jsp
@@ -0,0 +1,70 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<%@ page contentType="text/html" language="java" %>
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
+<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %>
+
+<%
+    pageContext.setAttribute("cond", Boolean.TRUE,
+                             PageContext.REQUEST_SCOPE);
+ 
+%>
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<f:view>
+<html>
+<head>
+<title>jstl-if-without-id</title>
+</head>
+<body>
+<h:outputText value="[First]"/>
+<c:if test="${requestScope.cond}">
+  <h:outputText value="[Second]"/>
+</c:if>
+<h:outputText value="[Third]"/>
+</body>
+</html>
+</f:view>
diff --git a/test/servlet30/systest/src/main/webapp/interweaving05.jsp b/test/servlet30/systest/src/main/webapp/interweaving05.jsp
new file mode 100644
index 0000000..d9194fc
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/interweaving05.jsp
@@ -0,0 +1,80 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<%@ page contentType="text/html" language="java" %>
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
+<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %>
+
+<%
+    pageContext.setAttribute("choose", "a",
+                             PageContext.REQUEST_SCOPE);
+ 
+%>
+
+<f:view>
+<html>
+<head>
+<title>jstl-choose test without "id"</title>
+</head>
+<body>
+<h:outputText value="Begin jstl-choose test without id"/>
+<c:choose>
+  <c:when test="${requestScope.choose == 'a'}">
+    <h:outputText  value="[FIRST]"/>
+    <h:outputText  value="[SECOND]"/>
+  </c:when>
+  <c:when test="${requestScope.choose == 'b'}">
+    <h:outputText value="[THIRD]"/>
+    <h:outputText  value="[FOURTH]"/>
+  </c:when>
+  <c:otherwise>
+    <h:outputText value="[FIFTH]"/>
+    <h:outputText value="[SIXTH]"/>
+  </c:otherwise>
+</c:choose>
+<h:outputText value="End jstl-choose test without id"/>
+</body>
+</html>
+</f:view>
diff --git a/test/servlet30/systest/src/main/webapp/interweaving06.jsp b/test/servlet30/systest/src/main/webapp/interweaving06.jsp
new file mode 100644
index 0000000..4882522
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/interweaving06.jsp
@@ -0,0 +1,63 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+<%@ page contentType="text/html" language="java" %>
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
+<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %>
+
+<f:view>
+<html>
+<head>
+<title>interweaving06</title>
+</head>
+<body>
+<p><h:outputText value="Begin test jsp:include without subview and iterator tag in included page"/></p>
+<br />
+<p><jsp:include page="subviewIterator02.jsp"/></p>
+
+<p><h:outputText value="Text from interweaving06.jsp"/></p>
+</p><h:outputText value="End test jsp:include without subview and iterator tag in included page"/></p>
+</body>
+</html>
+</f:view>
diff --git a/test/servlet30/systest/src/main/webapp/interweaving07.jsp b/test/servlet30/systest/src/main/webapp/interweaving07.jsp
new file mode 100644
index 0000000..fec0df3
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/interweaving07.jsp
@@ -0,0 +1,64 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+<%@ page contentType="text/html" language="java" %>
+<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
+<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
+<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %>
+
+<f:view>
+<html>
+<head>
+<title>interweaving07</title>
+</head>
+<body>
+<p><h:outputText value="Begin test <c:import> with iterator tag in imported page"/></p>
+<br />
+<p><c:import url="subviewIterator02.jsp"/></p>
+
+<p><h:outputText value="Text from interweaving07.jsp"/></p>
+
+<p><h:outputText value="End test <c:import> with iterator tag in imported page"/></p>
+</body>
+</html>
+</f:view>
diff --git a/test/servlet30/systest/src/main/webapp/interweaving08.jsp b/test/servlet30/systest/src/main/webapp/interweaving08.jsp
new file mode 100644
index 0000000..e6b95b6
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/interweaving08.jsp
@@ -0,0 +1,68 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<%@page pageEncoding="UTF-8"%>
+<%@taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
+<%@taglib prefix="h" uri="http://java.sun.com/jsf/html"%>
+
+
+<f:view>
+    <html>
+        <body>
+            <h:form id="form">
+                <h:dataTable value="#{interweaving08.items}" var="item"
+binding="#{interweaving08.table}">
+                    <h:column>
+                        <%-- 
+                           Validates CASE 1 in UIComponentClassicTagBase when
+                           using a component binding with a lifetime longer
+                           than request
+                        --%>
+                        ciao
+                        <h:outputText value="#{item}"/>
+                    </h:column>
+                </h:dataTable>                
+            </h:form>
+        </body>
+    </html>
+</f:view>
+
diff --git a/test/servlet30/systest/src/main/webapp/interweaving09.jsp b/test/servlet30/systest/src/main/webapp/interweaving09.jsp
new file mode 100644
index 0000000..b0910e5
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/interweaving09.jsp
@@ -0,0 +1,69 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<%@page pageEncoding="UTF-8"%>
+<%@taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
+<%@taglib prefix="h" uri="http://java.sun.com/jsf/html"%>
+
+
+<f:view>
+    <html>
+        <body>
+            <h:form id="form">
+                <h:dataTable value="#{interweaving09.items}" var="item"
+binding="#{interweaving09.table}">
+                    <h:column>
+                        <%-- 
+                           Validates CASE 2 in UIComponentClassicTagBase when
+                           using a component binding with a lifetime longer
+                           than request
+                        --%>
+                        <h:outputText value="#{item}"/>                     
+                        ciao
+                        <h:outputText value="#{item}"/>
+                    </h:column>
+                </h:dataTable>                
+            </h:form>
+        </body>
+    </html>
+</f:view>
+
diff --git a/test/servlet30/systest/src/main/webapp/interweaving10.jsp b/test/servlet30/systest/src/main/webapp/interweaving10.jsp
new file mode 100644
index 0000000..5d00d2d
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/interweaving10.jsp
@@ -0,0 +1,68 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<%@page pageEncoding="UTF-8"%>
+<%@taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
+<%@taglib prefix="h" uri="http://java.sun.com/jsf/html"%>
+
+
+<f:view>
+    <html>
+        <body>
+            <h:form id="form">
+                <h:dataTable value="#{interweaving10.items}" var="item"
+binding="#{interweaving10.table}">
+                    <h:column>
+                        <%-- 
+                           Validates CASE 4 in UIComponentClassicTagBase when
+                           using a component binding with a lifetime longer
+                           than request
+                        --%>
+                         <h:outputText value="#{item}"/>
+                        ciao                       
+                    </h:column>
+                </h:dataTable>               
+            </h:form>
+        </body>
+    </html>
+</f:view>
+
diff --git a/test/servlet30/systest/src/main/webapp/interweaving11.jsp b/test/servlet30/systest/src/main/webapp/interweaving11.jsp
new file mode 100644
index 0000000..4bab1a7
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/interweaving11.jsp
@@ -0,0 +1,73 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
+<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %>
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+<%
+    java.util.ArrayList list = new java.util.ArrayList();
+    list.add("one");
+    list.add("two");
+    list.add("three");
+    pageContext.setAttribute("list", list, PageContext.REQUEST_SCOPE);
+%>
+<html>
+  <head>
+      <title>interweaving11</title>   
+  </head>
+  <body>
+    <f:view>
+        <h:form>
+            <c:forEach items="#{list}" var="item">
+                <h:commandLink>
+                   <f:param name="param" value="value"/>
+                   <h:outputText value="#{item}"/>
+                </h:commandLink>
+                </br>
+            </c:forEach>
+        </h:form>
+    </f:view>
+  </body>
+</html>
+
diff --git a/test/servlet30/systest/src/main/webapp/interweaving12.jsp b/test/servlet30/systest/src/main/webapp/interweaving12.jsp
new file mode 100644
index 0000000..6b48dbf
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/interweaving12.jsp
@@ -0,0 +1,56 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
+<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %>
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+<html>
+<head><title>interweaving13</title></head>
+<body>
+<f:view>
+  <h:form>
+     <jsp:include page="include12.jsp"/>
+  </h:form>
+</f:view>
+</body>
+</html>
+
diff --git a/test/servlet30/systest/src/main/webapp/issue1682.xhtml b/test/servlet30/systest/src/main/webapp/issue1682.xhtml
new file mode 100644
index 0000000..564411c
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/issue1682.xhtml
@@ -0,0 +1,72 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:d="http://mojarra.dev.java.net/source1"
+      xmlns:f="http://java.sun.com/jsf/core">
+  <h:head>
+    <title>1682</title>
+  </h:head>
+
+  <h:body>
+
+<p>Test for <a href="https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=1682">1682</a>.</p>
+
+
+<f:view>
+
+    <h:form id="form" prependId="false">
+
+        <d:postAddTester id="postAddTester" />
+
+        <h:commandButton value="reload" id="reload"/>
+
+        <p>message: #{requestScope['1682message']}</p>
+
+
+    </h:form>
+</f:view>
+
+  </h:body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/jsf2jsp/ajax-gives-500.jspx b/test/servlet30/systest/src/main/webapp/jsf2jsp/ajax-gives-500.jspx
new file mode 100644
index 0000000..71b3a60
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/jsf2jsp/ajax-gives-500.jspx
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="MacRoman"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page"
+          xmlns:h="http://java.sun.com/jsf/html"
+          xmlns:f="http://java.sun.com/jsf/core" version="2.0">
+
+    <jsp:directive.page contentType="text/html" pageEncoding="MacRoman"/>
+
+    <!-- any content can be specified here, e.g.: -->
+    <jsp:element name="text">
+        <jsp:attribute name="lang">EN</jsp:attribute>
+        <jsp:body>
+            <f:view>
+
+<h:form prependId="false">
+
+<h:commandButton value="reload">
+  <f:ajax />
+</h:commandButton>
+
+</h:form>
+
+            </f:view>
+
+
+
+        </jsp:body>
+    </jsp:element>
+
+</jsp:root>
diff --git a/test/servlet30/systest/src/main/webapp/jsf2jsp/body-gives-500.jspx b/test/servlet30/systest/src/main/webapp/jsf2jsp/body-gives-500.jspx
new file mode 100644
index 0000000..d949059
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/jsf2jsp/body-gives-500.jspx
@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="MacRoman"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page"
+          xmlns:h="http://java.sun.com/jsf/html"
+          xmlns:f="http://java.sun.com/jsf/core" version="2.0">
+
+    <jsp:directive.page contentType="text/html" pageEncoding="MacRoman"/>
+
+    <!-- any content can be specified here, e.g.: -->
+    <jsp:element name="text">
+        <jsp:attribute name="lang">EN</jsp:attribute>
+        <jsp:body>
+            <f:view>
+                <h:body>
+
+                    <p>Test Resource Relocation</p>
+
+                    <ul>
+
+                        <li>output*</li>
+                        <li>@ResourceDependency</li>
+
+
+                    </ul>
+
+                </h:body>
+
+
+
+            </f:view>
+
+
+
+        </jsp:body>
+    </jsp:element>
+
+</jsp:root>
diff --git a/test/servlet30/systest/src/main/webapp/jsf2jsp/button-gives-500.jspx b/test/servlet30/systest/src/main/webapp/jsf2jsp/button-gives-500.jspx
new file mode 100644
index 0000000..df08fe6
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/jsf2jsp/button-gives-500.jspx
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="MacRoman"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page"
+          xmlns:h="http://java.sun.com/jsf/html"
+          xmlns:f="http://java.sun.com/jsf/core" version="2.0">
+
+    <jsp:directive.page contentType="text/html" pageEncoding="MacRoman"/>
+
+    <!-- any content can be specified here, e.g.: -->
+    <jsp:element name="text">
+        <jsp:attribute name="lang">EN</jsp:attribute>
+        <jsp:body>
+            <f:view>
+
+<h:button outcome="next" />
+
+            </f:view>
+
+
+
+        </jsp:body>
+    </jsp:element>
+
+</jsp:root>
diff --git a/test/servlet30/systest/src/main/webapp/jsf2jsp/commandButton-parameter-children-gives-hidden-fields.jspx b/test/servlet30/systest/src/main/webapp/jsf2jsp/commandButton-parameter-children-gives-hidden-fields.jspx
new file mode 100644
index 0000000..70fb365
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/jsf2jsp/commandButton-parameter-children-gives-hidden-fields.jspx
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="MacRoman"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page"
+          xmlns:h="http://java.sun.com/jsf/html"
+          xmlns:f="http://java.sun.com/jsf/core" version="2.0">
+
+    <jsp:directive.page contentType="text/html" pageEncoding="MacRoman"/>
+
+    <!-- any content can be specified here, e.g.: -->
+    <jsp:element name="text">
+        <jsp:attribute name="lang">EN</jsp:attribute>
+        <jsp:body>
+            <f:view>
+
+<h:form prependId="false">
+
+<h:commandButton id="reload" value="reload">
+
+  <f:param name="name01" value="value01" />
+  <f:param name="name02" value="value02" />
+
+</h:commandButton>
+
+<p>name01=<h:outputText value="#{param['name01']}" /></p>
+<p>name02=<h:outputText value="#{param['name02']}" /></p>
+
+</h:form>
+
+            </f:view>
+
+
+
+        </jsp:body>
+    </jsp:element>
+
+</jsp:root>
diff --git a/test/servlet30/systest/src/main/webapp/jsf2jsp/event-gives-500.jspx b/test/servlet30/systest/src/main/webapp/jsf2jsp/event-gives-500.jspx
new file mode 100644
index 0000000..ca57720
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/jsf2jsp/event-gives-500.jspx
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="MacRoman"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page"
+          xmlns:h="http://java.sun.com/jsf/html"
+          xmlns:f="http://java.sun.com/jsf/core" version="2.0">
+
+    <jsp:directive.page contentType="text/html" pageEncoding="MacRoman"/>
+
+    <!-- any content can be specified here, e.g.: -->
+    <jsp:element name="text">
+        <jsp:attribute name="lang">EN</jsp:attribute>
+        <jsp:body>
+            <f:view>
+
+<h:form prependId="false">
+
+<h:commandButton value="reload">
+<f:event name="preRenderComponent" 
+         listener="#{dynamicStateBean.beforeRenderDeletion}" />
+</h:commandButton>
+
+
+
+</h:form>
+
+            </f:view>
+
+
+
+        </jsp:body>
+    </jsp:element>
+
+</jsp:root>
diff --git a/test/servlet30/systest/src/main/webapp/jsf2jsp/head-gives-500.jspx b/test/servlet30/systest/src/main/webapp/jsf2jsp/head-gives-500.jspx
new file mode 100644
index 0000000..c77b4a9
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/jsf2jsp/head-gives-500.jspx
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="MacRoman"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page"
+          xmlns:h="http://java.sun.com/jsf/html"
+          xmlns:f="http://java.sun.com/jsf/core" version="2.0">
+
+    <jsp:directive.page contentType="text/html" pageEncoding="MacRoman"/>
+
+    <!-- any content can be specified here, e.g.: -->
+    <jsp:element name="text">
+        <jsp:attribute name="lang">EN</jsp:attribute>
+        <jsp:body>
+            <f:view>
+                <h:head>
+                    <h:outputStylesheet name="case1.css" />
+
+                </h:head>
+                <h:body>
+
+                    <p>Test Resource Relocation</p>
+
+                    <ul>
+
+                        <li>output*</li>
+                        <li>@ResourceDependency</li>
+
+
+                    </ul>
+
+                </h:body>
+
+
+
+            </f:view>
+
+
+
+        </jsp:body>
+    </jsp:element>
+
+</jsp:root>
diff --git a/test/servlet30/systest/src/main/webapp/jsf2jsp/link-gives-500.jspx b/test/servlet30/systest/src/main/webapp/jsf2jsp/link-gives-500.jspx
new file mode 100644
index 0000000..df08fe6
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/jsf2jsp/link-gives-500.jspx
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="MacRoman"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page"
+          xmlns:h="http://java.sun.com/jsf/html"
+          xmlns:f="http://java.sun.com/jsf/core" version="2.0">
+
+    <jsp:directive.page contentType="text/html" pageEncoding="MacRoman"/>
+
+    <!-- any content can be specified here, e.g.: -->
+    <jsp:element name="text">
+        <jsp:attribute name="lang">EN</jsp:attribute>
+        <jsp:body>
+            <f:view>
+
+<h:button outcome="next" />
+
+            </f:view>
+
+
+
+        </jsp:body>
+    </jsp:element>
+
+</jsp:root>
diff --git a/test/servlet30/systest/src/main/webapp/jsf2jsp/metadata-gives-500.jspx b/test/servlet30/systest/src/main/webapp/jsf2jsp/metadata-gives-500.jspx
new file mode 100644
index 0000000..5203fb3
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/jsf2jsp/metadata-gives-500.jspx
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="MacRoman"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page"
+          xmlns:h="http://java.sun.com/jsf/html"
+          xmlns:f="http://java.sun.com/jsf/core" version="2.0">
+
+    <jsp:directive.page contentType="text/html" pageEncoding="MacRoman"/>
+
+    <!-- any content can be specified here, e.g.: -->
+    <jsp:element name="text">
+        <jsp:attribute name="lang">EN</jsp:attribute>
+        <jsp:body>
+            <f:view>
+<f:metadata>
+  <f:viewParam name="id" />
+</f:metadata>
+
+<h:form prependId="false">
+
+<h:commandButton value="reload">
+</h:commandButton>
+
+
+
+</h:form>
+
+            </f:view>
+
+
+
+        </jsp:body>
+    </jsp:element>
+
+</jsp:root>
diff --git a/test/servlet30/systest/src/main/webapp/jsf2jsp/outputScript-gives-500.jspx b/test/servlet30/systest/src/main/webapp/jsf2jsp/outputScript-gives-500.jspx
new file mode 100644
index 0000000..080dcee
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/jsf2jsp/outputScript-gives-500.jspx
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="MacRoman"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page"
+          xmlns:h="http://java.sun.com/jsf/html"
+          xmlns:f="http://java.sun.com/jsf/core" version="2.0">
+
+    <jsp:directive.page contentType="text/html" pageEncoding="MacRoman"/>
+
+    <!-- any content can be specified here, e.g.: -->
+    <jsp:element name="text">
+        <jsp:attribute name="lang">EN</jsp:attribute>
+        <jsp:body>
+            <f:view>
+
+<h:outputScript name="case1.js" />
+
+                    <p>Test Resource Relocation</p>
+
+                    <ul>
+
+                        <li>output*</li>
+                        <li>@ResourceDependency</li>
+
+
+                    </ul>
+
+            </f:view>
+
+
+
+        </jsp:body>
+    </jsp:element>
+
+</jsp:root>
diff --git a/test/servlet30/systest/src/main/webapp/jsf2jsp/outputStylesheet-gives-500.jspx b/test/servlet30/systest/src/main/webapp/jsf2jsp/outputStylesheet-gives-500.jspx
new file mode 100644
index 0000000..734e566
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/jsf2jsp/outputStylesheet-gives-500.jspx
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="MacRoman"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page"
+          xmlns:h="http://java.sun.com/jsf/html"
+          xmlns:f="http://java.sun.com/jsf/core" version="2.0">
+
+    <jsp:directive.page contentType="text/html" pageEncoding="MacRoman"/>
+
+    <!-- any content can be specified here, e.g.: -->
+    <jsp:element name="text">
+        <jsp:attribute name="lang">EN</jsp:attribute>
+        <jsp:body>
+            <f:view>
+
+<h:outputStylesheet name="case1.css" />
+
+                    <p>Test Resource Relocation</p>
+
+                    <ul>
+
+                        <li>output*</li>
+                        <li>@ResourceDependency</li>
+
+
+                    </ul>
+
+            </f:view>
+
+
+
+        </jsp:body>
+    </jsp:element>
+
+</jsp:root>
diff --git a/test/servlet30/systest/src/main/webapp/jsf2jsp/resource-ELResolver-gives-500.jspx b/test/servlet30/systest/src/main/webapp/jsf2jsp/resource-ELResolver-gives-500.jspx
new file mode 100644
index 0000000..8ded6f6
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/jsf2jsp/resource-ELResolver-gives-500.jspx
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="MacRoman"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page"
+          xmlns:h="http://java.sun.com/jsf/html"
+          xmlns:f="http://java.sun.com/jsf/core" version="2.0">
+
+    <jsp:directive.page contentType="text/html" pageEncoding="MacRoman"/>
+
+    <!-- any content can be specified here, e.g.: -->
+    <jsp:element name="text">
+        <jsp:attribute name="lang">EN</jsp:attribute>
+        <jsp:body>
+            <f:view>
+
+<p>h:graphicImage tag pointing to resource via ELResolver:
+<h:graphicImage value="#{resource['vLibrary:duke-nv.gif']" />.</p>
+
+            </f:view>
+
+
+
+        </jsp:body>
+    </jsp:element>
+
+</jsp:root>
diff --git a/test/servlet30/systest/src/main/webapp/jsf2jsp/resources.jspx b/test/servlet30/systest/src/main/webapp/jsf2jsp/resources.jspx
new file mode 100644
index 0000000..a89713a
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/jsf2jsp/resources.jspx
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="MacRoman"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page"
+          xmlns:h="http://java.sun.com/jsf/html"
+          xmlns:f="http://java.sun.com/jsf/core" version="2.0">
+
+    <jsp:directive.page contentType="text/html" pageEncoding="MacRoman"/>
+
+    <!-- any content can be specified here, e.g.: -->
+    <jsp:element name="text">
+        <jsp:attribute name="lang">EN</jsp:attribute>
+        <jsp:body>
+            <f:view>
+
+<p>h:graphicImage tag pointing to resource via attributes: 
+<h:graphicImage name="duke.gif" library="vLibrary" />.</p>
+
+            </f:view>
+
+
+
+        </jsp:body>
+    </jsp:element>
+
+</jsp:root>
diff --git a/test/servlet30/systest/src/main/webapp/jsf2jsp/selectManyJsf2Features.jspx b/test/servlet30/systest/src/main/webapp/jsf2jsp/selectManyJsf2Features.jspx
new file mode 100644
index 0000000..575b30d
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/jsf2jsp/selectManyJsf2Features.jspx
@@ -0,0 +1,247 @@
+<?xml version="1.0" encoding="MacRoman"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page"
+          xmlns:h="http://java.sun.com/jsf/html"
+          xmlns:f="http://java.sun.com/jsf/core" version="2.0">
+
+    <jsp:directive.page contentType="text/html" pageEncoding="MacRoman"/>
+
+    <!-- any content can be specified here, e.g.: -->
+    <jsp:element name="text">
+        <jsp:attribute name="lang">EN</jsp:attribute>
+        <jsp:body>
+            <f:view>
+
+<h:form prependId="false">
+
+
+    <p>
+        Array Values
+    </p>
+    <h:selectManyListbox id="array" value="#{select05.arrayValues}">
+        <f:selectItems value="#{select05.hobbitCollection}"/>
+    </h:selectManyListbox>
+
+    <p>
+        Initially Null List Values
+    </p>
+    <h:selectManyListbox id="list" value="#{select05.listValues}">
+        <f:selectItems value="#{select05.possibleValues}"/>
+    </h:selectManyListbox>
+
+    <p>
+        Initially Null Set Values
+    </p>
+    <h:selectManyListbox id="set" value="#{select05.setValues}">
+        <f:selectItems value="#{select05.possibleValues}"/>
+    </h:selectManyListbox>
+
+    <p>
+        Initially Null Sorted Set Values
+    </p>
+    <h:selectManyListbox id="sortedset" value="#{select05.sortedSetValues}">
+        <f:selectItems value="#{select05.possibleValues}"/>
+    </h:selectManyListbox>
+
+    <p>
+        Initially Null Collection Values
+    </p>
+    <h:selectManyListbox id="collection" value="#{select05.collectionValues}">
+        <f:selectItems value="#{select05.possibleValues}"/>
+    </h:selectManyListbox>
+
+    <!-- ///////////////////////////////////////////////////////////// -->
+
+    <p>
+        Initially Non-Null List Values/Collection non-select item
+    </p>
+    <h:selectManyListbox id="ilist" value="#{select05.initialListValues}">
+        <f:selectItems value="#{select05.hobbitCollection}"
+                       var="hobbit"
+                       itemLabel="#{hobbit.name}"
+                       itemDescription="#{hobbit.bio}"/>
+    </h:selectManyListbox>
+
+    <p>
+        Initially Non-Null List Values/DataModel non-select item
+    </p>
+    <h:selectManyListbox id="ilist2" value="#{select05.initialListValues}">
+        <f:selectItems value="#{select05.hobbitDataModel}"
+                       var="hobbit"
+                       itemLabel="#{hobbit.name}"
+                       itemDescription="#{hobbit.bio}"/>
+    </h:selectManyListbox>
+
+    <p>
+        Initially Non-Null Set Values
+    </p>
+    <h:selectManyListbox id="iset" value="#{select05.initialSetValues}">
+        <f:selectItems value="#{select05.possibleValues}"/>
+    </h:selectManyListbox>
+
+    <p>
+        Initially Non-Null Sorted Set Values
+    </p>
+    <h:selectManyListbox id="isortedset" value="#{select05.initialSortedSetValues}">
+        <f:selectItems value="#{select05.possibleValues}"/>
+    </h:selectManyListbox>
+
+    <p>
+        Initially Non-Null Collection Values
+    </p>
+    <h:selectManyListbox id="icollection" value="#{select05.initialCollectionValues}">
+        <f:selectItems value="#{select05.possibleValues}"/>
+    </h:selectManyListbox>
+
+    <!-- ///////////////////////////////////////////////////////////// -->
+
+    <p>
+        Initially Null Collection Values using f:attribute hint (java.lang.String)
+    </p>
+    <h:selectManyListbox id="hintString"
+                         value="#{select05.collectionFromHintValues}"
+                         collectionType="java.util.LinkedList">
+        <f:selectItems value="#{select05.possibleValues}"/>
+    </h:selectManyListbox>
+
+    <p>
+        Initially Null Collection Values using f:attribute hint (java.lang.String)
+    </p>
+    <h:selectManyListbox id="hintClass" value="#{select05.collectionFromHintValues2}">
+        <f:attribute name="collectionType" value="#{select05.collectionType}"/>
+        <f:selectItems value="#{select05.possibleValues}"/>
+    </h:selectManyListbox>
+
+    <!-- ///////////////////////////////////////////////////////////// -->
+
+    <p>
+        Initially Null Object type field
+    </p>
+    <h:selectManyListbox id="object" value="#{select05.someValues}">
+        <f:selectItems value="#{select05.possibleValues}"/>
+    </h:selectManyListbox>
+
+    <!-- //////////////////////////////////////////////////////////// -->
+
+    <p>
+        int values
+    </p>
+     <h:selectManyListbox id="intList1" value="#{select05.selectedIntValues}">
+        <f:selectItems value="#{select05.intOptions}"
+                       var="x"
+                       itemLabel="#{x}"
+                       itemDescription="#{x}"/>
+    </h:selectManyListbox>
+
+    <!-- //////////////////////////////////////////////////////////// -->
+
+    <p>
+        Integer values
+    </p>
+     <h:selectManyListbox id="integerList1" value="#{select05.selectedIntegerValues}">
+        <f:selectItems value="#{select05.integerOptions}"
+                       var="n"
+                       itemLabel="#{n}"
+                       itemDescription="#{n}"/>
+    </h:selectManyListbox>
+
+    <!-- //////////////////////////////////////////////////////////// -->
+
+    <p>
+        Item Label Escape (true)
+    </p>
+    <h:selectManyListbox id="escape01" value="#{select05.initialCollectionValues}">
+       <f:selectItems value="#{select05.hobbitCollection}"
+                      var="n"
+                      itemValue="#{n}"
+                      itemLabel="#{n.bio}"
+                      itemLabelEscaped="true"/>
+    </h:selectManyListbox>
+
+    <!-- //////////////////////////////////////////////////////////// -->
+
+    <p>
+        Item Label Escape (false)
+    </p>
+    <h:selectManyListbox id="escape02" value="#{select05.initialCollectionValues}">
+       <f:selectItems value="#{select05.hobbitCollection}"
+                      var="n"
+                      itemValue="#{n}"
+                      itemLabel="#{n.bio}"
+                      itemLabelEscaped="false"/>
+    </h:selectManyListbox>
+
+     <!-- ////////////////////////////////////////////////////////////// -->
+
+
+    <p>
+        Non-null select item with empty f:selectItems Collection
+    </p>
+    <h:selectManyListbox id="emptyItems">
+        <f:selectItem itemValue="Choose" itemLabel="Choose" />
+        <f:selectItems value="#{select05.emptyCollection}"
+                       var="n"
+                       itemValue="#{n}" />
+    </h:selectManyListbox>
+
+
+    <!-- ////////////////////////////////////////////////////////////// -->
+
+
+    <p>
+    <h:commandButton id="command" value="Submit" />
+    </p>
+
+
+</h:form>
+
+
+            </f:view>
+
+
+
+        </jsp:body>
+    </jsp:element>
+
+</jsp:root>
diff --git a/test/servlet30/systest/src/main/webapp/jsp/6992760.jsp b/test/servlet30/systest/src/main/webapp/jsp/6992760.jsp
new file mode 100644
index 0000000..e0d86c8
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/jsp/6992760.jsp
@@ -0,0 +1,70 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+"http://www.w3.org/TR/html4/loose.dtd">
+<%@ page contentType="text/html;charset=windows-1252"%>
+<%@ page import="javax.faces.context.*"%>
+<%@ page import="javax.faces.el.ValueBinding"%>
+<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%>
+<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%>
+<f:view>
+  <html>
+    <head>
+      <meta http-equiv="Content-Type"
+            content="text/html; charset=windows-1252"/>
+      <title>untitled1</title>
+    </head>
+    <body><h:form>
+    
+    <%
+      FacesContext fc = FacesContext.getCurrentInstance();
+      ValueBinding vb = fc.getApplication().createValueBinding("#{1} #{2}");
+      Class type = vb.getType(fc);
+      fc.getExternalContext().getRequestMap().put("message", type);
+      System.out.println("type:"+type);
+    %>
+    <p><a href="http://monaco.sfbay.sun.com/detail.jsf?cr=6992760">http://monaco.sfbay.sun.com/detail.jsf?cr=6992760</a></p>
+    <p>Message: <h:outputText value="#{message}" /></p>
+    </h:form></body>
+  </html>
+</f:view>
diff --git a/test/servlet30/systest/src/main/webapp/jsp/addComponent.jsp b/test/servlet30/systest/src/main/webapp/jsp/addComponent.jsp
new file mode 100644
index 0000000..21634db
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/jsp/addComponent.jsp
@@ -0,0 +1,71 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+  <head>
+    <title>Programmatic Component Addition</title>
+    <%@ taglib uri="http://java.sun.com/jsf/core"  prefix="f" %>
+    <%@ taglib uri="http://java.sun.com/jsf/html"  prefix="h" %>
+  </head>
+
+  <body>
+    <h1>Programmatic Component Addition</h1>
+
+<f:view>
+
+  <h:form id="form">
+
+    <h:commandButton value="submit" id="button"
+                     actionListener="#{test3.addComponentToTree}"/>
+
+    <h:panelGroup id="addHere" />
+
+  </h:form>
+
+</f:view>
+
+    <hr>
+  </body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/jsp/commandLinkOnClickFalse.jsp b/test/servlet30/systest/src/main/webapp/jsp/commandLinkOnClickFalse.jsp
new file mode 100644
index 0000000..35ae44e
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/jsp/commandLinkOnClickFalse.jsp
@@ -0,0 +1,78 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<HTML>
+<body onLoad="initValue('form')"> 
+    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
+    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+
+       <jsp:useBean id="TestBean" class="com.sun.faces.systest.model.TestBean" scope="session" />
+       <f:view >  
+       <script type="text/javascript" language="Javascript">
+       <!--
+       function setValue(curFormName) {
+           var curForm = document.forms[curFormName];
+           curForm.elements['form:init'].value = "Hello";
+       }
+       //-->
+       </script>
+       <script type="text/javascript" language="Javascript">
+       <!--
+       function initValue(curFormName) {
+           var curForm = document.forms[curFormName];
+           curForm.elements['form:_idcl'].value = "Goodbye";
+       }
+       //-->
+       </script>
+               
+          <h:form id="form">
+              <table>
+              <tr>
+                 <td><h:outputText value="Value:" /></td> 
+                 <td><h:inputText id="init" value="initial value" /></td>
+              </tr>
+              </table>
+              <h:commandLink id="submit" onclick="setValue('form'); return false;" value="submit"/>
+          </h:form>
+       </f:view>
+</body>
+</HTML>
diff --git a/test/servlet30/systest/src/main/webapp/jsp/commandLinkOnClickTrue.jsp b/test/servlet30/systest/src/main/webapp/jsp/commandLinkOnClickTrue.jsp
new file mode 100644
index 0000000..a7dc46e
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/jsp/commandLinkOnClickTrue.jsp
@@ -0,0 +1,78 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<HTML>
+<body onLoad="initValue('form')"> 
+    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
+    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+
+       <jsp:useBean id="TestBean" class="com.sun.faces.systest.model.TestBean" scope="session" />
+       <f:view >  
+       <script type="text/javascript" language="Javascript">
+       <!--
+       function setValue(curFormName) {
+           var curForm = document.forms[curFormName];
+           curForm.elements['form:init'].value = "Hello";
+       }
+       //-->
+       </script>
+       <script type="text/javascript" language="Javascript">
+       <!--
+       function initValue(curFormName) {
+           var curForm = document.forms[curFormName];
+           curForm.elements['form:_idcl'].value = "Goodbye";
+       }
+       //-->
+       </script>
+               
+          <h:form id="form">
+              <table>
+              <tr>
+                 <td><h:outputText value="Value:" /></td> 
+                 <td><h:inputText id="init" value="initial value" /></td>
+              </tr>
+              </table>
+              <h:commandLink id="submit" onclick="setValue('form')" value="submit"/>
+          </h:form>
+       </f:view>
+</body>
+</HTML>
diff --git a/test/servlet30/systest/src/main/webapp/jsp/form-input-00.jsp b/test/servlet30/systest/src/main/webapp/jsp/form-input-00.jsp
new file mode 100644
index 0000000..edce4bf
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/jsp/form-input-00.jsp
@@ -0,0 +1,58 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<%@ page contentType="text/html" language="java" %>
+<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
+<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %>
+
+<f:view>
+<html>
+<head>
+<title>form-input-00</title>
+</head>
+<body>
+Dummy page to force resetting the component tree.
+</body>
+</html>
+</f:view>
diff --git a/test/servlet30/systest/src/main/webapp/jsp/form-input-01.jsp b/test/servlet30/systest/src/main/webapp/jsp/form-input-01.jsp
new file mode 100644
index 0000000..8240fa5
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/jsp/form-input-01.jsp
@@ -0,0 +1,58 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<%@ page contentType="text/html" language="java" %>
+<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
+<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %>
+
+<f:view>
+<html>
+<head>
+<title>form-input-01</title>
+</head>
+<body>
+<h:outputText id="success" value="success"/>
+</body>
+</html>
+</f:view>
diff --git a/test/servlet30/systest/src/main/webapp/jsp/form-input-02.jsp b/test/servlet30/systest/src/main/webapp/jsp/form-input-02.jsp
new file mode 100644
index 0000000..dd07f00
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/jsp/form-input-02.jsp
@@ -0,0 +1,102 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<%@ page contentType="text/html" language="java" %>
+<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
+<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %>
+
+<f:view>
+<html>
+<head>
+<title>form-input-02</title>
+</head>
+<body>
+
+<h:form id="formInput02_form">
+
+  <h:panelGrid columns="3">
+
+    <h:outputText value="booleanProperty"/>
+    <h:inputText id="booleanProperty" value="#{formInput02.booleanProperty}"/>
+    <h:message for="booleanProperty"/>
+
+    <h:outputText value="byteProperty"/>
+    <h:inputText id="byteProperty" value="#{formInput02.byteProperty}"/>
+    <h:message for="byteProperty"/>
+
+    <h:outputText value="doubleProperty"/>
+    <h:inputText id="doubleProperty" value="#{formInput02.doubleProperty}"/>
+    <h:message for="doubleProperty"/>
+
+    <h:outputText value="floatProperty"/>
+    <h:inputText id="floatProperty" value="#{formInput02.floatProperty}"/>
+    <h:message for="floatProperty"/>
+
+    <h:outputText value="intProperty"/>
+    <h:inputText id="intProperty" value="#{formInput02.intProperty}"/>
+    <h:message for="intProperty"/>
+
+    <h:outputText value="longProperty"/>
+    <h:inputText id="longProperty" value="#{formInput02.longProperty}"/>
+    <h:message for="longProperty"/>
+
+    <h:outputText value="shortProperty"/>
+    <h:inputText id="shortProperty" value="#{formInput02.shortProperty}"/>
+    <h:message for="shortProperty"/>
+
+    <h:outputText value="stringProperty"/>
+    <h:inputText id="stringProperty" value="#{formInput02.stringProperty}"/>
+    <h:message for="stringProperty"/>
+
+    <h:commandButton id="submit" type="submit" value="Submit"/>
+    <h:commandButton id="reset"  type="reset"  value="Reset"/>
+    <h:outputText value=""/>
+
+  </h:panelGrid>
+
+</h:form>
+
+</body>
+</html>
+</f:view>
diff --git a/test/servlet30/systest/src/main/webapp/jsp/formEl.jsp b/test/servlet30/systest/src/main/webapp/jsp/formEl.jsp
new file mode 100644
index 0000000..939099a
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/jsp/formEl.jsp
@@ -0,0 +1,78 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+  <head>
+    <title>Test form enctype EL feature</title>
+    <%@ taglib uri="http://java.sun.com/jsf/core"  prefix="f" %>
+    <%@ taglib uri="http://java.sun.com/jsf/html"  prefix="h" %>
+  </head>
+
+  <body>
+    <h1>Test form enctype EL feature</h1>
+
+<h2>Literal ids with prependId literal</h2>
+
+<f:view>
+
+    <h:outputText value="#{true ? 'multipart/form-data' :
+        'application/x-www-form-urlencoded'}" />
+
+    <h:form id="multiPart"
+        enctype="#{true ? 'multipart/form-data' : 'application/x-www-form-urlencoded'}">
+    </h:form>
+
+    <h:form id="urlEncoded"
+        enctype="#{false ? 'multipart/form-data' : 'application/x-www-form-urlencoded'}">
+    </h:form>
+
+    <h:form id="stringLiteral" enctype="hi"></h:form>
+
+    <h:form id="elLiteral" enctype="#{'multipart/form-data'}"></h:form>
+</f:view>
+
+    <hr>
+  </body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/jsp/jsp-dynamic-00.jsp b/test/servlet30/systest/src/main/webapp/jsp/jsp-dynamic-00.jsp
new file mode 100644
index 0000000..49510d8
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/jsp/jsp-dynamic-00.jsp
@@ -0,0 +1,60 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<%@ page contentType="text/html" language="java" %>
+<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
+<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %>
+
+<f:view>
+<html>
+<head>
+<title>jsp-dynamic-00</title>
+</head>
+<body>
+Dummy page to force resetting the component tree.
+<h:outputText id="dummy" value="DUMMY"/>
+<h:outputText value="#{ResetUniqueRequestIdBean.reset}"/>
+</body>
+</html>
+</f:view>
diff --git a/test/servlet30/systest/src/main/webapp/jsp/jsp-dynamic-01.jsp b/test/servlet30/systest/src/main/webapp/jsp/jsp-dynamic-01.jsp
new file mode 100644
index 0000000..b458de8
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/jsp/jsp-dynamic-01.jsp
@@ -0,0 +1,63 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<%@ page contentType="text/html" language="java" %>
+<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
+<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %>
+<%@ taglib prefix="s" uri="/WEB-INF/taglib.tld" %>
+
+<f:view>
+<html>
+<head>
+<title>jsp-dynamic-01</title>
+</head>
+<body>
+<h:form>
+<h:outputText value="[A]"/>
+<s:dynamic id="dynamic"/>
+<h:outputText value="[Z]"/>
+</h:form>
+</body>
+</html>
+</f:view>
diff --git a/test/servlet30/systest/src/main/webapp/jsp/jsp-include-00.jsp b/test/servlet30/systest/src/main/webapp/jsp/jsp-include-00.jsp
new file mode 100644
index 0000000..f7cf690
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/jsp/jsp-include-00.jsp
@@ -0,0 +1,60 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<%@ page contentType="text/html" language="java" %>
+<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
+<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %>
+
+<f:view>
+<html>
+<head>
+<title>jsp-include-00</title>
+</head>
+<body>
+Dummy page to force resetting the component tree.
+<h:outputText id="dummy" value="DUMMY"/>
+<h:outputText value="#{ResetUniqueRequestIdBean.reset}"/>
+</body>
+</html>
+</f:view>
diff --git a/test/servlet30/systest/src/main/webapp/jsp/jsp-include-01.jsp b/test/servlet30/systest/src/main/webapp/jsp/jsp-include-01.jsp
new file mode 100644
index 0000000..3747472
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/jsp/jsp-include-01.jsp
@@ -0,0 +1,63 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<%@ page contentType="text/html" language="java" %>
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
+<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %>
+
+<f:view>
+<html>
+<head>
+<title>jsp-include-01</title>
+</head>
+<body>
+<h:outputText value="[A]"/>
+<jsp:include page="jstl-import-01a.jsp"/>
+<h:outputText value="[C]"/>
+<jsp:include page="jstl-import-01b.jsp"/>
+<h:outputText value="[E]"/>
+</body>
+</html>
+</f:view>
diff --git a/test/servlet30/systest/src/main/webapp/jsp/jsp-include-02.jsp b/test/servlet30/systest/src/main/webapp/jsp/jsp-include-02.jsp
new file mode 100644
index 0000000..6d55c48
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/jsp/jsp-include-02.jsp
@@ -0,0 +1,63 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<%@ page contentType="text/html" language="java" %>
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
+<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %>
+
+<f:view>
+<html>
+<head>
+<title>jsp-include-02</title>
+</head>
+<body>
+<h:outputText value="[A]"/>
+<jsp:include page="jstl-import-02a.jsp"/>
+<h:outputText value="[C]"/>
+<jsp:include page="jstl-import-02b.jsp"/>
+<h:outputText value="[E]"/>
+</body>
+</html>
+</f:view>
diff --git a/test/servlet30/systest/src/main/webapp/jsp/jsp-include-03.jsp b/test/servlet30/systest/src/main/webapp/jsp/jsp-include-03.jsp
new file mode 100644
index 0000000..80e4bd9
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/jsp/jsp-include-03.jsp
@@ -0,0 +1,71 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<%@ page contentType="text/html" language="java" %>
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
+<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %>
+
+<f:view>
+<html>
+<head>
+<title>jsp-include-03</title>
+</head>
+<body>
+<h:outputText value="[1]"/>
+<c:choose>
+  <c:when test="${param.choose == 'a'}">
+    <jsp:include page="jstl-import-03a.jsp"/>
+  </c:when>
+  <c:when test="${param.choose == 'b'}">
+    <jsp:include page="jstl-import-03b.jsp"/>
+  </c:when>
+  <c:otherwise>
+    <jsp:include page="jstl-import-03c.jsp"/>
+  </c:otherwise>
+</c:choose>
+<h:outputText value="[3]"/>
+</body>
+</html>
+</f:view>
diff --git a/test/servlet30/systest/src/main/webapp/jsp/jsp-include-04.jsp b/test/servlet30/systest/src/main/webapp/jsp/jsp-include-04.jsp
new file mode 100644
index 0000000..c3db069
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/jsp/jsp-include-04.jsp
@@ -0,0 +1,71 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<%@ page contentType="text/html" language="java" %>
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
+<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %>
+
+<f:view>
+<html>
+<head>
+<title>jsp-include-04</title>
+</head>
+<body>
+<h:outputText value="[1]"/>
+<c:choose>
+  <c:when test="${param.choose == 'a'}">
+    <jsp:include page="jstl-import-04a.jsp"/>
+  </c:when>
+  <c:when test="${param.choose == 'b'}">
+    <jsp:include page="jstl-import-04b.jsp"/>
+  </c:when>
+  <c:otherwise>
+    <jsp:include page="jstl-import-04c.jsp"/>
+  </c:otherwise>
+</c:choose>
+<h:outputText value="[3]"/>
+</body>
+</html>
+</f:view>
diff --git a/test/servlet30/systest/src/main/webapp/jsp/jsp-setProperty-01.jsp b/test/servlet30/systest/src/main/webapp/jsp/jsp-setProperty-01.jsp
new file mode 100644
index 0000000..ee3ba62
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/jsp/jsp-setProperty-01.jsp
@@ -0,0 +1,76 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<%@ page contentType="text/html" language="java" %>
+<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
+<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %>
+
+<f:view>
+<html>
+<head>
+<title>f:setPropertyActionListener</title>
+</head>
+<body>
+<h:form>
+
+Integer Property is: <h:outputText value="#{test3.intProperty}" />. <br>
+String Property is: <h:outputText value="#{test3.stringProperty}" />. <br>
+
+<h:commandButton id="expressionButton1" value="Convert from String To Integer">
+  <f:setPropertyActionListener target="#{test3.intProperty}" value="100" />
+</h:commandButton>
+<h:commandButton id="expressionButton2" value="Convert from Integer to String">
+  <f:setPropertyActionListener target="#{test3.stringProperty}" value="#{test3.intProperty}" />
+</h:commandButton>   
+<h:commandButton id="expressionButton3" value="String to String">
+  <f:setPropertyActionListener target="#{test3.stringProperty}" value="String" />
+</h:commandButton>
+<h:commandButton id="expressionButton4" value="FacesContext to String">
+  <f:setPropertyActionListener target="#{test3.stringProperty}" value="#{facesContext}" />
+</h:commandButton>
+
+</h:form>
+</body>
+</html>
+</f:view>
diff --git a/test/servlet30/systest/src/main/webapp/jsp/jstl-choose-00.jsp b/test/servlet30/systest/src/main/webapp/jsp/jstl-choose-00.jsp
new file mode 100644
index 0000000..330f70b
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/jsp/jstl-choose-00.jsp
@@ -0,0 +1,58 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<%@ page contentType="text/html" language="java" %>
+<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
+<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %>
+
+<f:view>
+<html>
+<head>
+<title>jstl-choose-00</title>
+</head>
+<body>
+Dummy page to force resetting the component tree.
+</body>
+</html>
+</f:view>
diff --git a/test/servlet30/systest/src/main/webapp/jsp/jstl-choose-01.jsp b/test/servlet30/systest/src/main/webapp/jsp/jstl-choose-01.jsp
new file mode 100644
index 0000000..3575e7e
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/jsp/jstl-choose-01.jsp
@@ -0,0 +1,74 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<%@ page contentType="text/html" language="java" %>
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
+<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %>
+
+<f:view>
+<html>
+<head>
+<title>jstl-choose-01</title>
+</head>
+<body>
+<h:outputText value="[1]"/>
+<c:choose>
+  <c:when test="${param.choose == 'a'}">
+    <h:outputText  value="[2a]"/>
+    <h:outputText  value="[2z]"/>
+  </c:when>
+  <c:when test="${param.choose == 'b'}">
+    <h:outputText value="[2b]"/>
+    <h:outputText  value="[2y]"/>
+  </c:when>
+  <c:otherwise>
+    <h:outputText  value="[2c]"/>
+    <h:outputText  value="[2x]"/>
+  </c:otherwise>
+</c:choose>
+<h:outputText value="[3]"/>
+</body>
+</html>
+</f:view>
diff --git a/test/servlet30/systest/src/main/webapp/jsp/jstl-choose-02.jsp b/test/servlet30/systest/src/main/webapp/jsp/jstl-choose-02.jsp
new file mode 100644
index 0000000..f9efb25
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/jsp/jstl-choose-02.jsp
@@ -0,0 +1,80 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<%@ page contentType="text/html" language="java" %>
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
+<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %>
+
+<f:view>
+<html>
+<head>
+<title>jstl-choose-02</title>
+</head>
+<body>
+<h:outputText value="[1]"/>
+<c:choose>
+  <c:when test="${param.choose == 'a'}">
+    <f:subview id="naming2a">
+      <h:outputText value="[2a]"/>
+      <h:outputText value="[2z]"/>
+    </f:subview>
+  </c:when>
+  <c:when test="${param.choose == 'b'}">
+    <f:subview id="naming2b">
+      <h:outputText value="[2b]"/>
+      <h:outputText value="[2y]"/>
+    </f:subview>
+  </c:when>
+  <c:otherwise>
+    <f:subview id="naming2c">
+      <h:outputText value="[2c]"/>
+      <h:outputText value="[2x]"/>
+    </f:subview>
+  </c:otherwise>
+</c:choose>
+<h:outputText value="[3]"/>
+</body>
+</html>
+</f:view>
diff --git a/test/servlet30/systest/src/main/webapp/jsp/jstl-foreach-00.jsp b/test/servlet30/systest/src/main/webapp/jsp/jstl-foreach-00.jsp
new file mode 100644
index 0000000..44cd0b7
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/jsp/jstl-foreach-00.jsp
@@ -0,0 +1,59 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<%@ page contentType="text/html" language="java" %>
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
+<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %>
+
+<f:view>
+<html>
+<head>
+<title>jstl-foreach-00</title>
+</head>
+<body>
+Dummy page to force resetting the component tree.
+</body>
+</html>
+</f:view>
diff --git a/test/servlet30/systest/src/main/webapp/jsp/jstl-foreach-01.jsp b/test/servlet30/systest/src/main/webapp/jsp/jstl-foreach-01.jsp
new file mode 100644
index 0000000..472e934
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/jsp/jstl-foreach-01.jsp
@@ -0,0 +1,88 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<%@ page contentType="text/html" language="java" %>
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
+<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %>
+
+<f:view>
+<html>
+<head>
+<title>jstl-foreach-01</title>
+</head>
+<body>
+
+<h:form id="jstlForeach01_form">
+
+  <table border="0" cellspacing="5" cellpadding="5">
+
+    <jsp:useBean scope="session" 
+                 class="com.sun.faces.systest.model.ForEachBean"
+                 id="forEachBean" />
+
+    <c:forEach items="${forEachBean.arrayProperty}" varStatus="s" var="curVal">
+      <c:set var="val" scope="request" value="${curVal}" />
+      <c:set var="s" scope="request" value="${s}"/>
+      <c:set var="arrayLabel" scope="request" value="arrayLabel${s.index}"/>
+      <c:set var="arrayLabelValue" scope="request" 
+             value="arrayLabel_${s.index}"/>
+      <c:set var="arrayProp" scope="request" value="arrayProp${s.index}"/>
+      <tr>
+        <td><h:outputText id="#{arrayLabel}" value="#{arrayLabelValue}"/></td>
+        <td><h:inputText id="#{arrayProp}" value="#{val}"/></td>
+      </tr>
+    </c:forEach>
+
+    <tr>
+      <td><h:commandButton id="submit" type="submit" value="Submit"/></td>
+      <td><h:commandButton id="reset"  type="reset"  value="Reset"/></td>
+    </tr>
+
+  </table>
+
+</h:form>
+</body>
+</html>
+</f:view>
diff --git a/test/servlet30/systest/src/main/webapp/jsp/jstl-if-00.jsp b/test/servlet30/systest/src/main/webapp/jsp/jstl-if-00.jsp
new file mode 100644
index 0000000..5c09003
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/jsp/jstl-if-00.jsp
@@ -0,0 +1,58 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<%@ page contentType="text/html" language="java" %>
+<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
+<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %>
+
+<f:view>
+<html>
+<head>
+<title>jstl-if-00</title>
+</head>
+<body>
+Dummy page to force resetting the component tree.
+</body>
+</html>
+</f:view>
diff --git a/test/servlet30/systest/src/main/webapp/jsp/jstl-if-01.jsp b/test/servlet30/systest/src/main/webapp/jsp/jstl-if-01.jsp
new file mode 100644
index 0000000..a6d0bba
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/jsp/jstl-if-01.jsp
@@ -0,0 +1,63 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<%@ page contentType="text/html" language="java" %>
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
+<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %>
+
+<f:view>
+<html>
+<head>
+<title>jstl-if test without "id"</title>
+</head>
+<body>
+<h:outputText value="[First]"/>
+<c:if test="${param.cond}">
+  <h:outputText value="[Second]"/>
+</c:if>
+<h:outputText value="[Third]"/>
+</body>
+</html>
+</f:view>
diff --git a/test/servlet30/systest/src/main/webapp/jsp/jstl-if-02.jsp b/test/servlet30/systest/src/main/webapp/jsp/jstl-if-02.jsp
new file mode 100644
index 0000000..74b6181
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/jsp/jstl-if-02.jsp
@@ -0,0 +1,75 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<%@ page contentType="text/html" language="java" %>
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
+<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %>
+<%@ taglib prefix="s" uri="/WEB-INF/taglib.tld" %>
+
+<f:view>
+<html>
+<head>
+<title>jstl-if-02</title>
+</head>
+<body>
+<h:outputText value="[First]"/>
+<c:if test="${param.component}">
+  <s:facets id="comp" value="Second">
+    <c:if test="${param.header}">
+      <f:facet name="header">
+        <h:outputText id="head" value="Header"/>
+      </f:facet>
+    </c:if>
+    <c:if test="${param.footer}">
+      <f:facet name="footer">
+        <h:outputText id="foot" value="Footer"/>
+      </f:facet>
+    </c:if>
+  </s:facets>
+</c:if>
+<h:outputText value="[Third]"/>
+</body>
+</html>
+</f:view>
diff --git a/test/servlet30/systest/src/main/webapp/jsp/jstl-if-03.jsp b/test/servlet30/systest/src/main/webapp/jsp/jstl-if-03.jsp
new file mode 100644
index 0000000..371d2b1
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/jsp/jstl-if-03.jsp
@@ -0,0 +1,65 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<%@ page contentType="text/html" language="java" %>
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
+<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %>
+
+<f:view>
+<html>
+<head>
+<title>jstl-if-03</title>
+</head>
+<body>
+[1]
+<c:if test="${param.cond}">
+  [2]
+  <h:outputText id="cond" value="[3]"/>
+  [4]
+</c:if>
+[5]
+</body>
+</html>
+</f:view>
diff --git a/test/servlet30/systest/src/main/webapp/jsp/jstl-if-04.jsp b/test/servlet30/systest/src/main/webapp/jsp/jstl-if-04.jsp
new file mode 100644
index 0000000..9d1a934
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/jsp/jstl-if-04.jsp
@@ -0,0 +1,72 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<%@ page contentType="text/html" language="java" %>
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
+<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %>
+<%@ taglib prefix="s" uri="/WEB-INF/taglib.tld" %>
+
+<f:view>
+<html>
+<head>
+<title>jstl-if-04</title>
+</head>
+<body>
+[1]
+<c:if test="${param.cond}">
+  <h:outputText       id="other2"  value="[2]"/>
+  [3]
+  <s:children id="kids">
+    <s:output_verbatim id="kids4a">[4a]</s:output_verbatim>
+    <h:outputText     id="kids4b" value="[4b]"/>
+    <s:output_verbatim id="kids4c">[4c]</s:output_verbatim>
+  </s:children>
+  <h:outputText       id="other5" value="[5]"/>
+  [6]
+</c:if>
+[7]
+</body>
+</html>
+</f:view>
diff --git a/test/servlet30/systest/src/main/webapp/jsp/jstl-if-05.jsp b/test/servlet30/systest/src/main/webapp/jsp/jstl-if-05.jsp
new file mode 100644
index 0000000..a9701ac
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/jsp/jstl-if-05.jsp
@@ -0,0 +1,72 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<%@ page contentType="text/html" language="java" %>
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
+<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %>
+<%@ taglib prefix="s" uri="/WEB-INF/taglib.tld" %>
+
+<f:view>
+<html>
+<head>
+<title>jstl-if-05</title>
+</head>
+<body>
+[1]
+<c:if test="${param.cond}">
+  <h:outputText       id="other2"  value="[2]"/>
+  [3]
+  <s:children id="kids">
+    [4a]
+    <h:outputText     id="kids4b" value="[4b]"/>
+    [4c]
+  </s:children>
+  <h:outputText       id="other5" value="[5]"/>
+  [6]
+</c:if>
+[7]
+</body>
+</html>
+</f:view>
diff --git a/test/servlet30/systest/src/main/webapp/jsp/jstl-import-00.jsp b/test/servlet30/systest/src/main/webapp/jsp/jstl-import-00.jsp
new file mode 100644
index 0000000..9338136
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/jsp/jstl-import-00.jsp
@@ -0,0 +1,58 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<%@ page contentType="text/html" language="java" %>
+<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
+<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %>
+
+<f:view>
+<html>
+<head>
+<title>jstl-import-00</title>
+</head>
+<body>
+Dummy page to force resetting the component tree.
+</body>
+</html>
+</f:view>
diff --git a/test/servlet30/systest/src/main/webapp/jsp/jstl-import-01.jsp b/test/servlet30/systest/src/main/webapp/jsp/jstl-import-01.jsp
new file mode 100644
index 0000000..0f7a9e1
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/jsp/jstl-import-01.jsp
@@ -0,0 +1,63 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<%@ page contentType="text/html" language="java" %>
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
+<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %>
+
+<f:view>
+<html>
+<head>
+<title>jstl-import-01</title>
+</head>
+<body>
+<h:outputText value="[A]"/>
+<c:import url="jstl-import-01a.jsp"/>
+<h:outputText value="[C]"/>
+<c:import url="jstl-import-01b.jsp"/>
+<h:outputText value="[E]"/>
+</body>
+</html>
+</f:view>
diff --git a/test/servlet30/systest/src/main/webapp/jsp/jstl-import-01a.jsp b/test/servlet30/systest/src/main/webapp/jsp/jstl-import-01a.jsp
new file mode 100644
index 0000000..b52a0c4
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/jsp/jstl-import-01a.jsp
@@ -0,0 +1,45 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+[B]
diff --git a/test/servlet30/systest/src/main/webapp/jsp/jstl-import-01b.jsp b/test/servlet30/systest/src/main/webapp/jsp/jstl-import-01b.jsp
new file mode 100644
index 0000000..dbaca7f
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/jsp/jstl-import-01b.jsp
@@ -0,0 +1,45 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+[D]
diff --git a/test/servlet30/systest/src/main/webapp/jsp/jstl-import-02.jsp b/test/servlet30/systest/src/main/webapp/jsp/jstl-import-02.jsp
new file mode 100644
index 0000000..3b96858
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/jsp/jstl-import-02.jsp
@@ -0,0 +1,63 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<%@ page contentType="text/html" language="java" %>
+<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
+<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
+<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %>
+
+<f:view>
+<html>
+<head>
+<title>jstl-import-02</title>
+</head>
+<body>
+<h:outputText value="[A]"/>
+<c:import url="jstl-import-02a.jsp"/>
+<h:outputText value="[C]"/>
+<c:import url="jstl-import-02b.jsp"/>
+<h:outputText value="[E]"/>
+</body>
+</html>
+</f:view>
diff --git a/test/servlet30/systest/src/main/webapp/jsp/jstl-import-02a.jsp b/test/servlet30/systest/src/main/webapp/jsp/jstl-import-02a.jsp
new file mode 100644
index 0000000..15d24c7
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/jsp/jstl-import-02a.jsp
@@ -0,0 +1,49 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
+<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %>
+<f:subview id="view1"> 
+<h:outputText value="[B]"/>
+</f:subview> 
diff --git a/test/servlet30/systest/src/main/webapp/jsp/jstl-import-02b.jsp b/test/servlet30/systest/src/main/webapp/jsp/jstl-import-02b.jsp
new file mode 100644
index 0000000..2275448
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/jsp/jstl-import-02b.jsp
@@ -0,0 +1,50 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
+<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %>
+<%-- <f:view> --%>
+<h:outputText value="[D]"/>
+<%-- </f:view> --%>
+
diff --git a/test/servlet30/systest/src/main/webapp/jsp/jstl-import-03.jsp b/test/servlet30/systest/src/main/webapp/jsp/jstl-import-03.jsp
new file mode 100644
index 0000000..42c457f
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/jsp/jstl-import-03.jsp
@@ -0,0 +1,71 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<%@ page contentType="text/html" language="java" %>
+<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
+<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
+<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %>
+
+<f:view>
+<html>
+<head>
+<title>jstl-import-03</title>
+</head>
+<body>
+<h:outputText value="[1]"/>
+<c:choose>
+  <c:when test="${param.choose == 'a'}">
+    <c:import url="jstl-import-03a.jsp"/>
+  </c:when>
+  <c:when test="${param.choose == 'b'}">
+    <c:import url="jstl-import-03b.jsp"/>
+  </c:when>
+  <c:otherwise>
+    <c:import url="jstl-import-03c.jsp"/>
+  </c:otherwise>
+</c:choose>
+<h:outputText value="[3]"/>
+</body>
+</html>
+</f:view>
diff --git a/test/servlet30/systest/src/main/webapp/jsp/jstl-import-03a.jsp b/test/servlet30/systest/src/main/webapp/jsp/jstl-import-03a.jsp
new file mode 100644
index 0000000..101040b
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/jsp/jstl-import-03a.jsp
@@ -0,0 +1,50 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
+<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %>
+<%-- <f:view> --%>
+<h:outputText id="import03a" value="[2a]"/>
+<h:outputText id="import03z" value="[2z]"/>
+<%-- </f:view> --%>
diff --git a/test/servlet30/systest/src/main/webapp/jsp/jstl-import-03b.jsp b/test/servlet30/systest/src/main/webapp/jsp/jstl-import-03b.jsp
new file mode 100644
index 0000000..8d61249
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/jsp/jstl-import-03b.jsp
@@ -0,0 +1,50 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
+<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %>
+<%-- <f:view> --%>
+<h:outputText id="import03b" value="[2b]"/>
+<h:outputText id="import03y" value="[2y]"/>
+<%-- </f:view> --%>
diff --git a/test/servlet30/systest/src/main/webapp/jsp/jstl-import-03c.jsp b/test/servlet30/systest/src/main/webapp/jsp/jstl-import-03c.jsp
new file mode 100644
index 0000000..f88659c
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/jsp/jstl-import-03c.jsp
@@ -0,0 +1,50 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
+<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %>
+<%-- <f:view> --%>
+<h:outputText id="import03c" value="[2c]"/>
+<h:outputText id="import03x" value="[2x]"/>
+<%-- </f:view> --%>
diff --git a/test/servlet30/systest/src/main/webapp/jsp/jstl-import-04.jsp b/test/servlet30/systest/src/main/webapp/jsp/jstl-import-04.jsp
new file mode 100644
index 0000000..ab4a253
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/jsp/jstl-import-04.jsp
@@ -0,0 +1,78 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<%@ page contentType="text/html" language="java" %>
+<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
+<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
+<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %>
+
+<%--
+      NOTE: The included "outputText" component tags are from
+      the systest tag library, not the standard html tag library,
+      in order to bypass the normal requirement for an "id"
+--%>
+
+
+<f:view>
+<html>
+<head>
+<title>jstl-import-04</title>
+</head>
+<body>
+<h:outputText value="[1]"/>
+<c:choose>
+  <c:when test="${param.choose == 'a'}">
+    <c:import url="jstl-import-04a.jsp"/>
+  </c:when>
+  <c:when test="${param.choose == 'b'}">
+    <c:import url="jstl-import-04b.jsp"/>
+  </c:when>
+  <c:otherwise>
+    <c:import url="jstl-import-04c.jsp"/>
+  </c:otherwise>
+</c:choose>
+<h:outputText value="[3]"/>
+</body>
+</html>
+</f:view>
diff --git a/test/servlet30/systest/src/main/webapp/jsp/jstl-import-04a.jsp b/test/servlet30/systest/src/main/webapp/jsp/jstl-import-04a.jsp
new file mode 100644
index 0000000..d21e5bc
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/jsp/jstl-import-04a.jsp
@@ -0,0 +1,52 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
+<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %>
+<%-- <f:view> --%>
+<f:subview id="naming2a">
+ <h:outputText value="[2a]"/>
+ <h:outputText value="[2z]"/>
+</f:subview>
+<%-- </f:view> --%>
diff --git a/test/servlet30/systest/src/main/webapp/jsp/jstl-import-04b.jsp b/test/servlet30/systest/src/main/webapp/jsp/jstl-import-04b.jsp
new file mode 100644
index 0000000..98973ca
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/jsp/jstl-import-04b.jsp
@@ -0,0 +1,53 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
+<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %>
+
+<%-- <f:view> --%>
+<f:subview id="naming2b">
+ <h:outputText value="[2b]"/>
+ <h:outputText value="[2y]"/>
+</f:subview>
+<%-- </f:view> --%>
diff --git a/test/servlet30/systest/src/main/webapp/jsp/jstl-import-04c.jsp b/test/servlet30/systest/src/main/webapp/jsp/jstl-import-04c.jsp
new file mode 100644
index 0000000..fcab041
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/jsp/jstl-import-04c.jsp
@@ -0,0 +1,53 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
+<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %>
+
+<%-- <f:view> --%>
+<f:subview id="naming2c">
+ <h:outputText value="[2c]"/>
+ <h:outputText value="[2x]"/>
+</f:subview>
+<%-- </f:view> --%>
diff --git a/test/servlet30/systest/src/main/webapp/jsp/missing-view.jsp b/test/servlet30/systest/src/main/webapp/jsp/missing-view.jsp
new file mode 100644
index 0000000..fb88dc6
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/jsp/missing-view.jsp
@@ -0,0 +1,70 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+  <head>
+    <title>JSP page missing a view</title>
+    <%@ taglib uri="http://java.sun.com/jsf/core"  prefix="f" %>
+    <%@ taglib uri="http://java.sun.com/jsf/html"  prefix="h" %>
+  </head>
+
+  <body>
+    <h1>JSP page missing a view</h1>
+
+  <h:form>
+
+    <h:panelGrid columns="1">
+
+      <h:outputText value="Hello" />
+
+    </h:panelGrid>
+
+    <h:commandButton value="submit" />
+
+  </h:form>
+
+    <hr>
+  </body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/jsp/prependId.jsp b/test/servlet30/systest/src/main/webapp/jsp/prependId.jsp
new file mode 100644
index 0000000..838b8f9
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/jsp/prependId.jsp
@@ -0,0 +1,144 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+  <head>
+    <title>Test prependId feature</title>
+    <%@ taglib uri="http://java.sun.com/jsf/core"  prefix="f" %>
+    <%@ taglib uri="http://java.sun.com/jsf/html"  prefix="h" %>
+  </head>
+
+  <body>
+    <h1>Test prependId feature</h1>
+
+<h2>Literal ids with prependId literal</h2>
+
+<f:view>
+
+  <h:form id="form1" prependId="false">
+
+      <h:outputText id="case1prependIdFalse" value="prependIdFalse" />
+
+  </h:form>
+
+  <h:form id="form2" prependId="true">
+
+      <h:outputText id="case1prependIdTrue" value="prependIdTrue" />
+
+  </h:form>
+
+  <h:form id="form3">
+
+      <h:outputText id="case1prependIdUnspecified" value="prependIdUnspecified" />
+
+  </h:form>
+
+
+<h2>Literal ids with prependId from expression</h2>
+
+  <h:form id="form4" prependId="#{prependIdBean.booleanProperty2}">
+
+      <h:outputText id="case2prependIdFalse" value="prependIdFalse" />
+
+  </h:form>
+
+  <h:form id="form5" prependId="#{prependIdBean.booleanProperty}">
+
+      <h:outputText id="case2prependIdTrue" value="prependIdTrue" />
+
+  </h:form>
+
+  <h:form id="form6">
+
+      <h:outputText id="case2prependIdUnspecified" value="prependIdUnspecified" />
+
+  </h:form>
+
+
+<h2>Auto-generated ids with prependId literal</h2>
+
+  <h:form prependId="false">
+
+      <h:inputText value="prependIdFalse" />
+
+  </h:form>
+
+  <h:form prependId="true">
+
+      <h:inputText value="prependIdTrue" />
+
+  </h:form>
+
+  <h:form>
+
+      <h:inputText value="prependIdUnspecified" />
+
+  </h:form>
+
+<h2>Auto-generated ids with prependId from expression</h2>
+
+  <h:form prependId="#{prependIdBean.booleanProperty2}">
+
+      <h:inputText value="prependIdFalse" />
+
+  </h:form>
+
+  <h:form prependId="#{prependIdBean.booleanProperty}">
+
+      <h:inputText value="prependIdTrue" />
+
+  </h:form>
+
+  <h:form >
+
+      <h:inputText value="prependIdUnspecified" />
+
+  </h:form>
+
+</f:view>
+
+    <hr>
+  </body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/jsp/selectBooleanValue.jsp b/test/servlet30/systest/src/main/webapp/jsp/selectBooleanValue.jsp
new file mode 100644
index 0000000..f9fddc8
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/jsp/selectBooleanValue.jsp
@@ -0,0 +1,116 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+  <head>
+    <title>selectBoolean test</title>
+    <%@ taglib uri="http://java.sun.com/jsf/core"  prefix="f" %>
+    <%@ taglib uri="http://java.sun.com/jsf/html"  prefix="h" %>
+  </head>
+
+  <body>
+    <h1>selectBoolean test</h1>
+
+<h2>How this testcase works.</h2>
+
+<p>This is the regression test for bugtraq 5016123.</p>
+
+<p>The system test for this page does the following</p>
+
+
+	<ol>
+
+	  <li><p>presses the button with the id "replace" twice.</p>
+
+          <p>The first time pressed, it replaces the default
+          PropertyResolver with one that logs calls to setValue in the
+          "valueChanged" property of bean named test3.  The second time
+          pressed, you'll actually see that the setValue was called.</p>
+
+          </li>
+
+	  <li><p>When the page loads from the second button press, it
+	  looks for the string "setValue() called" and verifies it is
+	  not in the page. </p></li>
+
+	  <li><p>presses the button with the id "restore".
+	  </p></li>
+
+	</ol>
+
+
+<f:view>
+
+  <h:form>
+
+    <h:commandButton id="replace" value="submit and replace PropertyResolver with Logging PropertyResolver" 
+                     actionListener="#{test3.replacePropertyResolver}" />
+
+    <h:panelGrid columns="2">
+
+      <h:selectBooleanCheckbox value="#{test3.booleanProperty2}" />
+
+      <h:outputText value="checkbox" />
+
+      <h:outputText value="valueChanged:" />
+
+      <h:outputText value="#{test3.valueChangeMessage}" />
+
+      <h:messages />
+
+    </h:panelGrid>
+
+    <h:commandButton id="restore" 
+                     value="submit and restore original PropertyResolver" 
+                     actionListener="#{test3.restorePropertyResolver}" />
+
+
+  </h:form>
+
+</f:view>
+
+    <hr>
+  </body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/jsp/selectManyInvalidValue.jsp b/test/servlet30/systest/src/main/webapp/jsp/selectManyInvalidValue.jsp
new file mode 100644
index 0000000..faec99e
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/jsp/selectManyInvalidValue.jsp
@@ -0,0 +1,84 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+  <head>
+    <title>SelectMany with invalid Value</title>
+    <%@ taglib uri="http://java.sun.com/jsf/core"  prefix="f" %>
+    <%@ taglib uri="http://java.sun.com/jsf/html"  prefix="h" %>
+  </head>
+
+  <body>
+    <h1>SelectMany with invalid Value</h1>
+
+<f:view>
+
+  <h:form>
+
+    <h:panelGrid columns="1">
+
+      <h:selectManyListbox
+        required="true" 
+        valueChangeListener="#{test3.valueChanged}"
+        value="#{test3.multiSelection}">
+        <f:selectItems 
+          value="#{test3.nondeterministicSelectList}" />
+      </h:selectManyListbox>
+
+      <h:messages />
+
+      <h:outputText value="#{test3.valueChangeMessage}" />
+
+    </h:panelGrid>
+
+    <h:commandButton value="submit" />
+
+  </h:form>
+
+</f:view>
+
+    <hr>
+  </body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/jsp/selectManyMismatchValue.jsp b/test/servlet30/systest/src/main/webapp/jsp/selectManyMismatchValue.jsp
new file mode 100644
index 0000000..53ce255
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/jsp/selectManyMismatchValue.jsp
@@ -0,0 +1,81 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+  <head>
+    <title>SelectMany with mismatched value type</title>
+    <%@ taglib uri="http://java.sun.com/jsf/core"  prefix="f" %>
+    <%@ taglib uri="http://java.sun.com/jsf/html"  prefix="h" %>
+  </head>
+
+  <body>
+    <h1>SelectMany with mismatched value type</h1>
+
+<f:view>
+
+  <h:form>
+
+    <h:panelGrid columns="1">
+
+      <h:selectManyListbox
+        required="true" 
+        value="#{test3.selection}">
+        <f:selectItems 
+          value="#{test3.selectList}" />
+      </h:selectManyListbox>
+
+      <h:messages />
+
+    </h:panelGrid>
+
+    <h:commandButton value="submit" />
+
+  </h:form>
+
+</f:view>
+
+    <hr>
+  </body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/jsp/selectManyNoValue.jsp b/test/servlet30/systest/src/main/webapp/jsp/selectManyNoValue.jsp
new file mode 100644
index 0000000..957a3ff
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/jsp/selectManyNoValue.jsp
@@ -0,0 +1,81 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+  <head>
+    <title>SelectMany with no Value</title>
+    <%@ taglib uri="http://java.sun.com/jsf/core"  prefix="f" %>
+    <%@ taglib uri="http://java.sun.com/jsf/html"  prefix="h" %>
+  </head>
+
+  <body>
+    <h1>SelectMany with no Value</h1>
+
+<f:view>
+
+  <h:form>
+
+    <h:panelGrid columns="1">
+
+      <h:selectManyListbox
+        required="true" 
+        value="#{test3.multiSelection}">
+        <f:selectItems 
+          value="#{test3.selectList}" />
+      </h:selectManyListbox>
+
+      <h:messages />
+
+    </h:panelGrid>
+
+    <h:commandButton value="submit" />
+
+  </h:form>
+
+</f:view>
+
+    <hr>
+  </body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/jsp/selectManyTypeInts.jsp b/test/servlet30/systest/src/main/webapp/jsp/selectManyTypeInts.jsp
new file mode 100644
index 0000000..fd309be
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/jsp/selectManyTypeInts.jsp
@@ -0,0 +1,79 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+  <head>
+    <title>SelectMany with primitive int array value</title>
+    <%@ taglib uri="http://java.sun.com/jsf/core"  prefix="f" %>
+    <%@ taglib uri="http://java.sun.com/jsf/html"  prefix="h" %>
+  </head>
+
+  <body>
+    <h1>SelectMany with primitive int array value</h1>
+
+<f:view>
+
+  <h:form>
+
+    <h:panelGrid columns="1">
+       <h:selectManyListbox id="intListbox" value="#{test3.intsProperty}">
+          <f:selectItem itemLabel="first" itemValue="1" />
+          <f:selectItem itemLabel="second" itemValue="2" />
+          <f:selectItem itemLabel="three" itemValue="3" />
+       </h:selectManyListbox>
+
+      <h:messages />
+
+    </h:panelGrid>
+
+    <h:commandButton value="submit" />
+
+  </h:form>
+
+</f:view>
+
+    <hr>
+  </body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/jsp/selectOneInvalidValue.jsp b/test/servlet30/systest/src/main/webapp/jsp/selectOneInvalidValue.jsp
new file mode 100644
index 0000000..7a70761
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/jsp/selectOneInvalidValue.jsp
@@ -0,0 +1,84 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+  <head>
+    <title>SelectOne with invalid Value</title>
+    <%@ taglib uri="http://java.sun.com/jsf/core"  prefix="f" %>
+    <%@ taglib uri="http://java.sun.com/jsf/html"  prefix="h" %>
+  </head>
+
+  <body>
+    <h1>SelectOne with invalid Value</h1>
+
+<f:view>
+
+  <h:form>
+
+    <h:panelGrid columns="1">
+
+      <h:selectOneRadio
+        required="true" 
+        valueChangeListener="#{test3.valueChanged}"
+        value="#{test3.multiSelection}">
+        <f:selectItems 
+          value="#{test3.nondeterministicSelectList}" />
+      </h:selectOneRadio>
+
+      <h:messages />
+
+      <h:outputText value="#{test3.valueChangeMessage}" />
+
+    </h:panelGrid>
+
+    <h:commandButton value="submit" />
+
+  </h:form>
+
+</f:view>
+
+    <hr>
+  </body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/jsp/selectOneNoValue.jsp b/test/servlet30/systest/src/main/webapp/jsp/selectOneNoValue.jsp
new file mode 100644
index 0000000..3950b0f
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/jsp/selectOneNoValue.jsp
@@ -0,0 +1,82 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+  <head>
+    <title>SelectOne with no Value</title>
+    <%@ taglib uri="http://java.sun.com/jsf/core"  prefix="f" %>
+    <%@ taglib uri="http://java.sun.com/jsf/html"  prefix="h" %>
+  </head>
+
+  <body>
+    <h1>SelectOne with no Value</h1>
+
+<f:view>
+
+  <h:form>
+
+    <h:panelGrid columns="1">
+
+      <h:selectOneRadio 
+        layout="pageDirection" 
+        required="true"
+        value="#{test3.selection}">
+        <f:selectItems 
+          value="#{test3.selectList}" />
+      </h:selectOneRadio>
+
+      <h:messages />
+
+    </h:panelGrid>
+
+    <h:commandButton value="submit" />
+
+  </h:form>
+
+</f:view>
+
+    <hr>
+  </body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/jsp/selectOneRadioTypeInt.jsp b/test/servlet30/systest/src/main/webapp/jsp/selectOneRadioTypeInt.jsp
new file mode 100644
index 0000000..5058213
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/jsp/selectOneRadioTypeInt.jsp
@@ -0,0 +1,68 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<html>
+<body>
+
+<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
+<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+
+<jsp:useBean id="myBean" class="com.sun.faces.systest.model.TestBean" scope="session" />
+
+<f:view>
+    <h:form id="form">
+        <h:selectOneRadio value="#{myBean.int}">
+          <f:selectItem itemLabel="first" itemValue="1" />
+          <f:selectItem itemLabel="second" itemValue="2" />
+          <f:selectItem itemLabel="three" itemValue="3" />
+        </h:selectOneRadio>
+        <h:outputText value="Model Selection:"/>
+        <h:outputText value="#{myBean.int}"/>
+        <br>
+        <h:commandButton id="nonImmediate" value="Submit immedate false"/>
+        <h:commandButton id="immediate" value="Submit immediate true" immediate="true"/>
+    </h:form>
+    <h:messages/>
+</f:view>
+
+</body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/jsp/selectOneRadioTypeInteger.jsp b/test/servlet30/systest/src/main/webapp/jsp/selectOneRadioTypeInteger.jsp
new file mode 100644
index 0000000..dcad184
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/jsp/selectOneRadioTypeInteger.jsp
@@ -0,0 +1,67 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<html>
+<body>
+
+<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
+<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+
+<jsp:useBean id="myBean" class="com.sun.faces.systest.model.TestBean" scope="session" />
+
+<f:view>
+    <h:form id="form">
+        <h:selectOneRadio converter="javax.faces.Integer"
+           value="#{myBean.selectedValue}">
+            <f:selectItems value="#{myBean.mySelectItems}"/>
+        </h:selectOneRadio>
+        <h:outputText value="Model Selection:"/>
+        <h:outputText value="#{myBean.selectedValue}"/>
+        <br>
+        <h:commandButton id="nonImmediate" value="Submit immedate false" action="success"/>
+        <h:commandButton id="immediate" value="Submit immediate true" immediate="true" action="success"/>
+    </h:form>
+    <h:messages/>
+</f:view>
+
+</body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/jsp/selectOneTypeInt.jsp b/test/servlet30/systest/src/main/webapp/jsp/selectOneTypeInt.jsp
new file mode 100644
index 0000000..feb89a6
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/jsp/selectOneTypeInt.jsp
@@ -0,0 +1,79 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+  <head>
+    <title>SelectOne with primitive int value</title>
+    <%@ taglib uri="http://java.sun.com/jsf/core"  prefix="f" %>
+    <%@ taglib uri="http://java.sun.com/jsf/html"  prefix="h" %>
+  </head>
+
+  <body>
+    <h1>SelectOne with primitive int value</h1>
+
+<f:view>
+
+  <h:form>
+
+    <h:panelGrid columns="1">
+       <h:selectOneListbox id="intListbox" value="#{test3.intProperty}">
+          <f:selectItem itemLabel="first" itemValue="1" />
+          <f:selectItem itemLabel="second" itemValue="2" />
+          <f:selectItem itemLabel="three" itemValue="3" />
+       </h:selectOneListbox>
+
+      <h:messages />
+
+    </h:panelGrid>
+
+    <h:commandButton value="submit" />
+
+  </h:form>
+
+</f:view>
+
+    <hr>
+  </body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/jsp/testMissingActionListenerMethod.jsp b/test/servlet30/systest/src/main/webapp/jsp/testMissingActionListenerMethod.jsp
new file mode 100644
index 0000000..c484857
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/jsp/testMissingActionListenerMethod.jsp
@@ -0,0 +1,63 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<html>
+<title>Missing ActionListener Method Test Page</title>
+<head>
+    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
+    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+</head>
+<body>
+
+<h1>commandButton w/missing ActionListener method</h1>
+This page should Fail.
+<br>
+<br>
+<f:view>
+  <p>This command button has a missing ActionListener method</p>
+  <h:form id="testForm">
+    <h:commandButton id="testButton" actionListener="#{methodRef.missingMethod}" value="Test Button"/>
+  </h:form>
+</f:view>
+</body>
+</head>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/jsp/tlvTest01.jsp b/test/servlet30/systest/src/main/webapp/jsp/tlvTest01.jsp
new file mode 100644
index 0000000..e904220
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/jsp/tlvTest01.jsp
@@ -0,0 +1,70 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+  <head>
+    <title>TLV Test 01</title>
+    <%@ taglib uri="http://java.sun.com/jsf/core"  prefix="f" %>
+    <%@ taglib uri="http://java.sun.com/jsf/html"  prefix="h" %>
+  </head>
+
+  <body>
+    <h1>TLV Test 01</h1>
+
+<f:view>
+
+  <h:form>
+
+    <p>This is a bound button</p>
+
+    <h:commandButton binding="#{test3.boundButton}" />
+
+  </h:form>
+
+</f:view>
+
+    <hr>
+  </body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/jsp/verbatim-one-test.jsp b/test/servlet30/systest/src/main/webapp/jsp/verbatim-one-test.jsp
new file mode 100644
index 0000000..3eab1b3
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/jsp/verbatim-one-test.jsp
@@ -0,0 +1,74 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<html>
+<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
+
+<f:view>
+<head>
+<title><h:outputText id="title" value="title"/></title>
+</head>
+
+<body>
+<h:form id="form">
+   <h:panelGrid id="panel1" columns="2" styleClass="book"
+      columnClasses="menuColumn, chapterColumn">
+
+      <f:facet name="header" >
+         <h:panelGrid id="panel2" columns="1" >
+            <h:outputText id="outputheader" value="this is the header" />
+            <f:verbatim><hr/></f:verbatim>
+         </h:panelGrid>
+      </f:facet>
+
+      <h:commandButton id="submit" value="submit"/>
+
+      <f:verbatim >
+         verbatim text here
+      </f:verbatim>
+
+   </h:panelGrid>
+</h:form>
+</body>
+</f:view>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/jsp/verbatim-test.jsp b/test/servlet30/systest/src/main/webapp/jsp/verbatim-test.jsp
new file mode 100644
index 0000000..30f96fa
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/jsp/verbatim-test.jsp
@@ -0,0 +1,72 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<html>
+    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
+    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+
+    <f:view>
+      <h:form id="form1">
+        <table>
+        <tr>
+         <td>
+         <h:panelGrid id="panelGrid" styleClass="scrollPane" columns="1">
+           <h:panelGroup id="panelGroup">
+             <f:verbatim><DIV STYLE="overflow: auto; height: 100px;"></f:verbatim>
+             <h:outputText id="outputtext" value="An output text"/>
+             <f:verbatim></DIV></f:verbatim>
+           </h:panelGroup>
+         </h:panelGrid>
+         </td>
+        </tr>
+        <tr>
+         <td>
+         <h:commandButton id="submit" value="submit" action="success"/>
+         </td>
+        </tr>
+        </table>
+      </h:form>
+    </f:view>
+</html>
+
diff --git a/test/servlet30/systest/src/main/webapp/jsp/verbatim-two-test.jsp b/test/servlet30/systest/src/main/webapp/jsp/verbatim-two-test.jsp
new file mode 100644
index 0000000..c9a2b72
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/jsp/verbatim-two-test.jsp
@@ -0,0 +1,76 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<html>
+<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
+
+<f:view>
+<head>
+<title><h:outputText id="title" value="title"/></title>
+</head>
+
+<body>
+<h:form id="form">
+   <h:panelGrid id="panel1" columns="2" styleClass="book"
+      columnClasses="menuColumn, chapterColumn">
+
+      <f:verbatim >
+         verbatim one text here
+      </f:verbatim>
+
+      <h:panelGrid id="panel2" columns="1" >
+         <h:outputText id="outputheader" value="this is the header" />
+         <f:verbatim><hr/></f:verbatim>
+      </h:panelGrid>
+
+      <h:commandButton id="submit" value="submit"/>
+
+      <f:verbatim >
+         verbatim two text here
+      </f:verbatim>
+
+   </h:panelGrid>
+</h:form>
+</body>
+</f:view>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/listener-1729.xhtml b/test/servlet30/systest/src/main/webapp/listener-1729.xhtml
new file mode 100644
index 0000000..2674d12
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/listener-1729.xhtml
@@ -0,0 +1,68 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    <h:head>
+        <title>Facelet Title</title>
+    </h:head>
+    <h:body>
+        <p><a href="https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=1729">https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=1729</a></p>
+
+        <h:form prependId="false">
+        <h:inputText id="test" value="#{bean1729.input1}" >
+
+            <f:valueChangeListener type="com.sun.faces.systest.listener" />
+        </h:inputText>
+
+        <h:commandButton  id="button" action="#{bean1729.doIt}"  value="Klick!" />
+        <h:commandLink id="link" action="#{bean1729.doIt}" value="Tja" />
+
+        <p>actionListenerMessage: #{flash['processActionListenerMessage']}</p>
+        <p>valueChangeListenerMessage: #{flash['processValueChangeMessage']}</p>
+
+        </h:form>
+    </h:body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/listener.jsp b/test/servlet30/systest/src/main/webapp/listener.jsp
new file mode 100755
index 0000000..3e75ab7
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/listener.jsp
@@ -0,0 +1,143 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+  <head>
+    <title>ActionListeners and ValueChangeListeners</title>
+    <%@ taglib uri="http://java.sun.com/jsf/core"  prefix="f" %>
+    <%@ taglib uri="http://java.sun.com/jsf/html"  prefix="h" %>
+  </head>
+
+  <body>
+    <h1>ActionListeners and ValueChangeListeners</h1>
+
+<f:view>
+
+  <h:form>
+
+    <p>Enter some text:</p>
+
+    <h:panelGrid columns="2">
+
+<%-- Case 1: "type" specified --%>
+
+      <h:inputText id="text1"> 
+          <f:valueChangeListener type="com.sun.faces.systest.TestValueChangeListener01"/>
+      </h:inputText>
+
+      <h:message for="text1" />
+
+<%-- Case 2: "binding" specified --%>
+
+      <h:inputText id="text2">
+          <f:valueChangeListener binding="#{TestValueChangeListener01}"/>
+      </h:inputText>
+
+      <h:message for="text2" />
+
+<%-- Case 3: "type" and "binding" specified                        --%>
+<%--         "binding" will set the instance (created from "type") --%>
+<%--         to a property on the backing bean                     --%>
+
+      <h:inputText id="text3">
+          <f:valueChangeListener type="com.sun.faces.systest.TestValueChangeListener01" binding="#{listenerBean.valueChangeListener}"/>
+      </h:inputText>      
+
+      <h:message for="text3" />
+
+<%-- Bind the listener we created (Case 3) to the component --%>
+
+      <h:inputText id="text4">
+          <f:valueChangeListener binding="#{listenerBean.valueChangeListener}"/>
+      </h:inputText>
+
+      <h:message for="text4" />
+
+<%-- Case 1: "type" specified --%>
+
+      <h:commandButton id="button1" value="submit" > 
+          <f:actionListener type="com.sun.faces.systest.TestActionListener01"/>
+      </h:commandButton>
+
+      <h:message for="button1" />
+
+<%-- Case 2: "binding" specified --%>
+
+      <h:commandButton id="button2" value="submit" > 
+          <f:actionListener binding="#{TestActionListener01}"/>
+      </h:commandButton>
+
+      <h:message for="button2" />
+
+<%-- Case 3: "type" and "binding" specified                        --%>
+<%--         "binding" will set the instance (created from "type") --%>
+<%--         to a property on the backing bean                     --%>
+
+      <h:commandButton id="button3"  value="submit" > 
+          <f:actionListener type="com.sun.faces.systest.TestActionListener01"
+              binding="#{listenerBean.actionListener}"/>
+      </h:commandButton>
+
+      <h:message for="button3" />
+
+<%-- Bind the listener we created (Case 3) to the component --%>
+
+      <h:commandButton id="button4" value="submit" >
+          <f:actionListener binding="#{listenerBean.actionListener}"/>      
+      </h:commandButton>
+
+      <h:message for="button4" />
+
+      <h:messages />
+
+    </h:panelGrid>
+
+  </h:form>
+
+</f:view>
+
+    <hr>
+  </body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/listenerTagListenersBinding.jsp b/test/servlet30/systest/src/main/webapp/listenerTagListenersBinding.jsp
new file mode 100644
index 0000000..745b11b
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/listenerTagListenersBinding.jsp
@@ -0,0 +1,87 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
+<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %>
+
+<f:view>
+  <f:phaseListener binding="#{phaseListener.instance}" />
+  <html>
+    <head>
+      <title>f:phaseListener Tag</title>
+    </head>
+    <body>
+      <h:form>
+
+        <h2>About this test</h2>
+
+	  <p>The first time this page is visited, we'll only see output
+	  on the PhaseEvents below.  Reason: The listener isn't added
+	  until the <code>phaseListener</code> tag executes, which is
+	  after the beforePhase event time.  The outputText for the
+	  afterPhaseEvent executes before the afterPhase event.</p>
+
+          <p>When the page is re-displayed any number of times by
+          pressing the redisplay button below, we'll see the apply,
+          process, update, invoke, and render phases on the
+          beforePhaseEvent, and we'll see apply, process, update, and
+          invoke on the afterPhaseEvent.  The former is correct because
+          it's impossible to see a restore-view event by using a view
+          scoped listener.  The latter is correct because we see
+          everything but the after render event because the outputText's
+          below render their output before the after event is sent.</p>
+
+       <h2>Output from the PhaseListener</h2>
+
+        <p>beforePhaseEvent: <h:outputText value="#{beforePhaseEvent}"/>.</p>
+
+        <p>afterPhaseEvent: <h:outputText value="#{afterPhaseEvent}"/>.</p>
+
+        <p><h:commandButton value="redisplay" /></p>
+        
+      </h:form>
+     
+    </body>
+  </html>
+</f:view>
+
diff --git a/test/servlet30/systest/src/main/webapp/listenerTagListenersBindingType.jsp b/test/servlet30/systest/src/main/webapp/listenerTagListenersBindingType.jsp
new file mode 100644
index 0000000..47722fe
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/listenerTagListenersBindingType.jsp
@@ -0,0 +1,87 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
+<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %>
+
+<f:view>
+  <f:phaseListener binding="#{phaseListener.otherListener}" type="com.sun.faces.systest.model.PrintEventToRequestMapPhaseListener"/>
+  <html>
+    <head>
+      <title>f:phaseListener Tag</title>
+    </head>
+    <body>
+      <h:form>
+
+        <h2>About this test</h2>
+
+	  <p>The first time this page is visited, we'll only see output
+	  on the PhaseEvents below.  Reason: The listener isn't added
+	  until the <code>phaseListener</code> tag executes, which is
+	  after the beforePhase event time.  The outputText for the
+	  afterPhaseEvent executes before the afterPhase event.</p>
+
+          <p>When the page is re-displayed any number of times by
+          pressing the redisplay button below, we'll see the apply,
+          process, update, invoke, and render phases on the
+          beforePhaseEvent, and we'll see apply, process, update, and
+          invoke on the afterPhaseEvent.  The former is correct because
+          it's impossible to see a restore-view event by using a view
+          scoped listener.  The latter is correct because we see
+          everything but the after render event because the outputText's
+          below render their output before the after event is sent.</p>
+
+       <h2>Output from the PhaseListener</h2>
+
+        <p>beforePhaseEvent: <h:outputText value="#{beforePhaseEvent}"/>.</p>
+
+        <p>afterPhaseEvent: <h:outputText value="#{afterPhaseEvent}"/>.</p>
+
+        <p><h:commandButton value="redisplay" /></p>
+        
+      </h:form>
+     
+    </body>
+  </html>
+</f:view>
+
diff --git a/test/servlet30/systest/src/main/webapp/listenerTagListenersType.jsp b/test/servlet30/systest/src/main/webapp/listenerTagListenersType.jsp
new file mode 100644
index 0000000..1dce2ce
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/listenerTagListenersType.jsp
@@ -0,0 +1,87 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
+<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %>
+
+<f:view>
+  <f:phaseListener type="com.sun.faces.systest.model.PrintEventToRequestMapPhaseListener" />
+  <html>
+    <head>
+      <title>f:phaseListener Tag</title>
+    </head>
+    <body>
+      <h:form>
+
+        <h2>About this test</h2>
+
+	  <p>The first time this page is visited, we'll only see output
+	  on the PhaseEvents below.  Reason: The listener isn't added
+	  until the <code>phaseListener</code> tag executes, which is
+	  after the beforePhase event time.  The outputText for the
+	  afterPhaseEvent executes before the afterPhase event.</p>
+
+          <p>When the page is re-displayed any number of times by
+          pressing the redisplay button below, we'll see the apply,
+          process, update, invoke, and render phases on the
+          beforePhaseEvent, and we'll see apply, process, update, and
+          invoke on the afterPhaseEvent.  The former is correct because
+          it's impossible to see a restore-view event by using a view
+          scoped listener.  The latter is correct because we see
+          everything but the after render event because the outputText's
+          below render their output before the after event is sent.</p>
+
+       <h2>Output from the PhaseListener</h2>
+
+        <p>beforePhaseEvent: <h:outputText value="#{beforePhaseEvent}"/>.</p>
+
+        <p>afterPhaseEvent: <h:outputText value="#{afterPhaseEvent}"/>.</p>
+
+        <p><h:commandButton value="redisplay" /></p>
+        
+      </h:form>
+     
+    </body>
+  </html>
+</f:view>
+
diff --git a/test/servlet30/systest/src/main/webapp/listeners.xhtml b/test/servlet30/systest/src/main/webapp/listeners.xhtml
new file mode 100644
index 0000000..8e171f1
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/listeners.xhtml
@@ -0,0 +1,96 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+  <h:head>
+  </h:head>
+
+  <h:body>
+
+<f:view>
+    <f:phaseListener type="#{bean2194.phaseListenerType}" />
+    <h:form id="form" prependId="false">
+
+      <p>
+
+      <h:commandButton id="button1" value="Fire ActionListener" >
+          <f:actionListener type="com.sun.faces.systest.TestActionListener01"/>
+      </h:commandButton>
+
+      </p>
+
+      <p>
+
+      <h:commandButton id="button2" value="Fire ActionListener" >
+          <f:actionListener type="#{bean2194.actionListenerType}"/>
+      </h:commandButton>
+
+      </p>
+
+      <p>
+
+      <h:inputText id="input1" >
+         <f:valueChangeListener type="com.sun.faces.systest.TestValueChangeListener01"/>
+      </h:inputText>
+
+      </p>
+
+      <p>
+
+      <h:inputText id="input2" >
+         <f:valueChangeListener type="#{bean2194.valueChangeListenerType}"/>
+      </h:inputText>
+
+      </p>
+
+      <h:commandButton id="submit" value="submit"/>
+
+      <h:messages />
+
+    </h:form>
+</f:view>
+
+  </h:body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/managed01.jsp b/test/servlet30/systest/src/main/webapp/managed01.jsp
new file mode 100644
index 0000000..309f46e
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/managed01.jsp
@@ -0,0 +1,140 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<%@ page contentType="text/html"
+%><%@ page import="javax.faces.FactoryFinder"
+%><%@ page import="javax.faces.application.Application"
+%><%@ page import="javax.faces.application.ApplicationFactory"
+%><%@ page import="javax.faces.context.FacesContext"
+%><%@ page import="javax.el.ValueExpression"
+%><%@ page import="com.sun.faces.systest.model.TestBean"
+%><%
+
+  // Instantiate a managed bean and validate property values #1
+
+  // Acquire the FacesContext instance for this request
+  FacesContext facesContext = FacesContext.getCurrentInstance();
+  if (facesContext == null) {
+    out.println("/component01.jsp FAILED - No FacesContext returned");
+    return;
+  }
+  // Acquire our Application instance
+  ApplicationFactory afactory = (ApplicationFactory)
+   FactoryFinder.getFactory(FactoryFinder.APPLICATION_FACTORY);
+  Application appl = afactory.getApplication();
+
+  // Acquire a ValueExpression for the bean to be created
+  ValueExpression valueExpression = appl.getExpressionFactory().createValueExpression(facesContext.getELContext(),"#{test1}", 
+      Object.class);
+  if (valueExpression == null) {
+    out.println("/managed01.jsp FAILED - No ValueExpression returned");
+    return;
+  }
+
+  // Evaluate the value binding and check for bean creation
+  Object result = valueExpression.getValue(facesContext.getELContext());
+  if (result == null) {
+    out.println("/managed01.jsp FAILED - getValue() returned null");
+    return;
+  }
+  if (!(result instanceof TestBean)) {
+    out.println("/managed01.jsp FAILED - result of type " + result.getClass());
+    return;
+  }
+  Object scopedFromExternalContext = ((javax.servlet.http.HttpServletRequest)facesContext.getExternalContext().getRequest()).getAttribute("test1");
+  if (scopedFromExternalContext == null) {
+    out.println("/managed01.jsp FAILED - not created in request scope, from ExternalContext request ");
+    return;
+  }
+  Object scopedFromMap = facesContext.getExternalContext().getRequestMap().get("test1");
+  if (scopedFromMap == null) {
+    out.println("/managed01.jsp FAILED - not created in request scope, from ExternalContext Map");
+    return;
+  }
+
+
+  Object scoped = request.getAttribute("test1");
+  if (scoped == null) {
+    out.println("/managed01.jsp FAILED - not created in request scope");
+    return;
+  }
+  if (!(result == scoped)) {
+    out.println("/managed01.jsp FAILED - created bean not same as attribute");
+    return;
+  }
+
+  // Verify the property values of the created bean
+  TestBean bean = (TestBean) result;
+  StringBuffer sb = new StringBuffer();
+  if (!bean.getBooleanProperty()) {
+    sb.append("booleanProperty(" + bean.getBooleanProperty() + ")|");
+  }
+  if ((byte) 12 != bean.getByteProperty()) {
+    sb.append("byteProperty(" + bean.getByteProperty() + ")|");
+  }
+  if (123.45 != bean.getDoubleProperty()) {
+    sb.append("doubleProperty(" + bean.getDoubleProperty() + ")|");
+  }
+  if ((float) 12.34 != bean.getFloatProperty()) {
+    sb.append("floatProperty(" + bean.getFloatProperty() + ")|");
+  }
+  if (123 != bean.getIntProperty()) {
+    sb.append("intProperty(" + bean.getIntProperty() + ")|");
+  }
+  if (12345 != bean.getLongProperty()) {
+    sb.append("longProperty(" + bean.getLongProperty() + ")|");
+  }
+  if ((short) 1234 != bean.getShortProperty()) {
+    sb.append("shortProperty(" + bean.getShortProperty() + ")|");
+  }
+  if (!"This is a String property".equals(bean.getStringProperty())) {
+    sb.append("stringProperty(" + bean.getStringProperty() + ")|");
+  }
+
+  // Report any property errors
+  String errors = sb.toString();
+  if (errors.length() < 1) {
+    out.println("/managed01.jsp PASSED");
+  } else {
+    out.println("/managed01.jsp FAILED - property value errors:  " + errors);
+  }
+%>
diff --git a/test/servlet30/systest/src/main/webapp/managed02.jsp b/test/servlet30/systest/src/main/webapp/managed02.jsp
new file mode 100644
index 0000000..7087b62
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/managed02.jsp
@@ -0,0 +1,135 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<%@ page contentType="text/html"
+%><%@ page import="javax.faces.FactoryFinder"
+%><%@ page import="javax.faces.application.Application"
+%><%@ page import="javax.faces.application.ApplicationFactory"
+%><%@ page import="javax.faces.context.FacesContext"
+%><%@ page import="javax.el.ValueExpression"
+%><%@ page import="com.sun.faces.systest.model.TestBean"
+%><%
+
+  // Instantiate a managed bean and validate property values #2
+  // Acquire the FacesContext instance for this request
+  FacesContext facesContext = FacesContext.getCurrentInstance();
+  if (facesContext == null) {
+    out.println("/component01.jsp FAILED - No FacesContext returned");
+    return;
+  }
+  // Acquire our Application instance
+  ApplicationFactory afactory = (ApplicationFactory)
+   FactoryFinder.getFactory(FactoryFinder.APPLICATION_FACTORY);
+  Application appl = afactory.getApplication();
+
+  // Acquire a ValueExpression for the bean to be created
+  ValueExpression valueExpression = appl.getExpressionFactory().createValueExpression(facesContext.getELContext(),"#{test2}", 
+      Object.class);
+  if (valueExpression == null) {
+    out.println("/managed02.jsp FAILED - No ValueExpression returned");
+    return;
+  }
+
+  // Evaluate the value binding and check for bean creation
+  Object result = valueExpression.getValue(facesContext.getELContext());
+  if (result == null) {
+    out.println("/managed02.jsp FAILED - getValue() returned null");
+    return;
+  }
+  if (!(result instanceof TestBean)) {
+    out.println("/managed02.jsp FAILED - result of type " + result.getClass());
+    return;
+  }
+  Object scoped = request.getAttribute("test2");
+  if (scoped == null) {
+    out.println("/managed02.jsp FAILED - not created in request scope");
+    return;
+  }
+  if (!(result == scoped)) {
+    out.println("/managed02.jsp FAILED - created bean not same as attribute");
+    return;
+  }
+
+  // Verify the property values of the created bean
+  TestBean bean = (TestBean) result;
+  StringBuffer sb = new StringBuffer();
+  if (bean.getBooleanProperty()) {
+    sb.append("booleanProperty(" + bean.getBooleanProperty() + ")|");
+  }
+  if ((byte) 21 != bean.getByteProperty()) {
+    sb.append("byteProperty(" + bean.getByteProperty() + ")|");
+  }
+  if (321.54 != bean.getDoubleProperty()) {
+    sb.append("doubleProperty(" + bean.getDoubleProperty() + ")|");
+  }
+  if ((float) 21.43 != bean.getFloatProperty()) {
+    sb.append("floatProperty(" + bean.getFloatProperty() + ")|");
+  }
+  if (321 != bean.getIntProperty()) {
+    sb.append("intProperty(" + bean.getIntProperty() + ")|");
+  }
+  if (54321 != bean.getLongProperty()) {
+    sb.append("longProperty(" + bean.getLongProperty() + ")|");
+  }
+  if ((short) 4321 != bean.getShortProperty()) {
+    sb.append("shortProperty(" + bean.getShortProperty() + ")|");
+  }
+  if (!"New String Value".equals(bean.getStringProperty())) {
+    sb.append("stringProperty(" + bean.getStringProperty() + ")|");
+  }
+  TestBean.Suit suit = bean.getSuit();
+  if (suit != TestBean.Suit.Hearts) {
+      sb.append("suit(" + suit.toString() + ")|");
+  }
+  suit = bean.getReferencedSuit();
+  if (suit != TestBean.Suit.Spades) {
+      sb.append("referencedSuit(" + suit.toString() + ")|");
+  }
+
+  // Report any property errors
+  String errors = sb.toString();
+  if (errors.length() < 1) {
+    out.println("/managed02.jsp PASSED");
+  } else {
+    out.println("/managed02.jsp FAILED - property value errors:  " + errors);
+  }
+%>2
diff --git a/test/servlet30/systest/src/main/webapp/managed03.jsp b/test/servlet30/systest/src/main/webapp/managed03.jsp
new file mode 100644
index 0000000..c527f6b
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/managed03.jsp
@@ -0,0 +1,60 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+
+<html>
+    <head>
+        <title>Property that violates scope rules</title>
+        <%@ taglib uri="http://java.sun.com/jsf/core"  prefix="f" %>
+        <%@ taglib uri="http://java.sun.com/jsf/html"  prefix="h" %>
+    </head>
+    <body>
+        <h1>Property that violates scope rules</h1>
+        <f:view>
+            <h:form>
+                <h:outputText value="#{test4.stringProperty}"/>
+            </h:form>
+        </f:view>
+        <hr>
+    </body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/managed04.jsp b/test/servlet30/systest/src/main/webapp/managed04.jsp
new file mode 100644
index 0000000..a36d9ac
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/managed04.jsp
@@ -0,0 +1,70 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+  <head>
+    <title>Verify property ordering</title>
+    <%@ taglib uri="http://java.sun.com/jsf/core"  prefix="f" %>
+    <%@ taglib uri="http://java.sun.com/jsf/html"  prefix="h" %>
+  </head>
+
+  <body>
+    <h1>Verify property ordering</h1>
+
+<f:view>
+
+  <h:form>
+ 
+    <h:outputText value="#{propertyOrder.order}" /> 
+    <h:outputText value="#{propertyOrder.listProperty[0]}" />
+    <h:outputText value="#{propertyOrder.listProperty[1]}" />
+    <h:outputText value="#{propertyOrder.listProperty[2]}" />
+    <h:outputText value="#{propertyOrder.listProperty[3]}" />
+   
+  </h:form>
+
+</f:view>
+
+    <hr>
+  </body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/managed07.jsp b/test/servlet30/systest/src/main/webapp/managed07.jsp
new file mode 100644
index 0000000..e0080a5
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/managed07.jsp
@@ -0,0 +1,65 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+    <head>
+        <title>Property that violates scope rules</title>
+        <%@ taglib uri="http://java.sun.com/jsf/core"  prefix="f" %>
+        <%@ taglib uri="http://java.sun.com/jsf/html"  prefix="h" %>
+    </head>
+    <body>
+        <h1>Property that violates scope rules</h1>
+        <% try { %> 
+        <f:view>
+            <h:form>
+                <h:outputText value="#{cyclic1.bean.stringProperty}" />
+            </h:form>
+        </f:view>
+        <% 
+            } catch (Exception fe) {
+                out.println("Exception seen");
+            }
+        %>
+        <hr>
+    </body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/managed08.jsp b/test/servlet30/systest/src/main/webapp/managed08.jsp
new file mode 100644
index 0000000..a9112d1
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/managed08.jsp
@@ -0,0 +1,113 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+  <head>
+    <title>Managed Bean Lifecycle Annotations</title>
+    <%@ taglib uri="http://java.sun.com/jsf/core"  prefix="f" %>
+    <%@ taglib uri="http://java.sun.com/jsf/html"  prefix="h" %>
+  </head>
+
+  <body>
+    <h1>Managed Bean Lifecycle Annotations</h1>
+
+<f:view>
+
+  <h:form id="form">
+  
+  <h:outputText value="#{noneBean.appendRequestMarker}" />
+
+  <p>requestBean PostConstruct: <h:outputText value="#{requestBean.postConstructCalled}" /></p>
+  <p>requestBean PreDestroy: <h:outputText value="#{requestBean.preDestroyCalled}" /></p>
+
+  <p>sessionBean PostConstruct: <h:outputText value="#{sessionBean.postConstructCalled}" /></p>
+  <p>sessionBean PreDestroy: <h:outputText value="#{sessionBean.preDestroyCalled}" /></p>
+
+  <p>applicationBean PostConstruct: <h:outputText value="#{applicationBean.postConstructCalled}" /></p>
+  <p>applicationBean PreDestroy: <h:outputText value="#{applicationBean.preDestroyCalled}" /></p>
+  
+  <p>previous request status: <pre><h:outputText value="#{applicationScope.previousRequestStatus}" /></pre></p>
+  
+  <p><h:commandButton id="removeRequestBean" value="remove request bean" action="#{noneBean.removeRequestBean}" /></p>
+
+  <p><h:commandButton id="removeRequestBean2" value="remove request bean2" action="#{noneBean.removeRequestBean2}" /></p>
+
+  <p><h:commandButton id="replaceRequestBean" value="replace request bean" action="#{noneBean.replaceRequestBean}" /></p>
+
+  <p><h:commandButton id="replaceRequestBean2" value="replace request bean2" action="#{noneBean.replaceRequestBean2}" /></p>
+       
+  <p><h:commandButton id="removeSessionBean" value="remove session bean" action="#{noneBean.removeSessionBean}" /></p>
+
+  <p><h:commandButton id="removeSessionBean2" value="remove session bean2" action="#{noneBean.removeSessionBean2}" /></p>
+
+  <p><h:commandButton id="replaceSessionBean" value="replace session bean" action="#{noneBean.replaceSessionBean}" /></p>
+
+  <p><h:commandButton id="replaceSessionBean2" value="replace session bean2" action="#{noneBean.replaceSessionBean2}" /></p>
+
+  <p><h:commandButton id="removeApplicationBean" value="remove application bean" action="#{noneBean.removeApplicationBean}" /></p>
+
+  <p><h:commandButton id="removeApplicationBean2" value="remove application bean2" action="#{noneBean.removeApplicationBean2}" /></p>
+
+  <p><h:commandButton id="replaceApplicationBean" value="replace application bean" action="#{noneBean.replaceApplicationBean}" /></p>
+
+  <p><h:commandButton id="replaceApplicationBean2" value="replace application bean2" action="#{noneBean.replaceApplicationBean2}" /></p>
+       
+  <p><h:commandButton id="invalidateSession" value="invalidate session" action="#{noneBean.invalidateSession}" /></p>
+
+  <p><h:commandButton id="clearRequestMap" value="clear request map" action="#{noneBean.clearRequestMap}" /></p>
+
+  <p><h:commandButton id="clearRequestMapTwice" value="clear request map twice" action="#{noneBean.clearRequestMapTwice}" /></p>
+
+  <p><h:commandButton id="clearSessionMap" value="clear session map" action="#{noneBean.clearSessionMap}" /></p>
+
+  <p><h:commandButton id="clearSessionMapTwice" value="clear session map twice" action="#{noneBean.clearSessionMapTwice}" /></p>
+
+  <p><h:commandButton id="clearStatusMessage" value="clear status message" action="#{noneBean.clearStatusMessage}" /></p>
+  
+  <p><h:commandButton id="reload" value="reload" />
+  </h:form>
+
+</f:view>
+    <hr>
+  </body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/message01.jsp b/test/servlet30/systest/src/main/webapp/message01.jsp
new file mode 100644
index 0000000..3f0906f
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/message01.jsp
@@ -0,0 +1,122 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<%@ page contentType="text/html"
+%><%@ page import="java.util.Locale"
+%><%@ page import="javax.faces.FactoryFinder"
+%><%@ page import="javax.faces.application.Application"
+%><%@ page import="javax.faces.application.ApplicationFactory"
+%><%@ page import="javax.faces.application.FacesMessage"
+%><%@ page import="javax.faces.context.FacesContext"
+%><%@ page import="com.sun.faces.util.MessageFactory"
+%><%@ page import="javax.faces.component.UIViewRoot, javax.faces.render.RenderKitFactory"
+%><%
+
+    // Initialize list of message ids
+    String list[] = {
+          "javax.faces.validator.NOT_IN_RANGE",
+          "javax.faces.validator.DoubleRangeValidator.MAXIMUM",
+          "javax.faces.validator.DoubleRangeValidator.MINIMUM",
+          "javax.faces.validator.DoubleRangeValidator.TYPE",
+          "javax.faces.validator.LengthValidator.MAXIMUM",
+          "javax.faces.validator.LengthValidator.MINIMUM",
+          "javax.faces.validator.LongRangeValidator.MAXIMUM",
+          "javax.faces.validator.LongRangeValidator.MINIMUM",
+          "javax.faces.validator.LongRangeValidator.TYPE",
+          "javax.faces.component.UIInput.REQUIRED"
+    };
+
+    // Acquire the FacesContext instance for this request
+    FacesContext facesContext = FacesContext.getCurrentInstance();
+    // Acquire our Application instance
+    ApplicationFactory afactory = (ApplicationFactory)
+          FactoryFinder.getFactory(FactoryFinder.APPLICATION_FACTORY);
+    Application appl = afactory.getApplication();
+     if (appl == null) {
+        out.println("/message01.jsp FAILED - No Application returned");
+        return;
+    }
+    if (facesContext == null) {
+        out.println("/message01.jsp FAILED - No FacesContext returned");
+        return;
+    }
+    UIViewRoot root = (UIViewRoot)
+          appl.createComponent(UIViewRoot.COMPONENT_TYPE);
+    root.setRenderKitId(RenderKitFactory.HTML_BASIC_RENDER_KIT);
+    facesContext.setViewRoot(root);   
+
+    // Test for replacing a Standard Validator Message
+    facesContext.getViewRoot().setLocale(new Locale("en", "US"));
+    FacesMessage msg = MessageFactory.getMessage(facesContext,
+                                                 "javax.faces.validator.DoubleRangeValidator.LIMIT");
+    if (!msg.getSummary()
+          .equals("Validation Error:This summary replaces the RI summary")) {
+        out.println("/message01.jsp FAILED - Missing replacement message");
+        return;
+    }
+
+    // Check message identifiers that should be present (en_US)
+    facesContext.getViewRoot().setLocale(new Locale("en", "US"));
+    for (int i = 0; i < list.length; i++) {
+        FacesMessage message = MessageFactory.getMessage(facesContext, list[i]);
+        if (message == null) {
+            out.println("/message01.jsp FAILED - Missing en_US message '" +
+                        list[i] + "'");
+            return;
+        }
+    }
+
+    // Check message identifiers that should be present (fr_FR)
+    facesContext.getViewRoot().setLocale(new Locale("fr", "FR"));
+    for (int i = 0; i < list.length; i++) {
+        FacesMessage message = MessageFactory.getMessage(facesContext, list[i]);
+        if (message == null) {
+            out.println("/message01.jsp FAILED - Missing fr_FR message '" +
+                        list[i] + "'");
+            return;
+        }
+    }
+
+    // All tests passed
+    out.println("/message01.jsp PASSED");
+
+%>
diff --git a/test/servlet30/systest/src/main/webapp/message02.jsp b/test/servlet30/systest/src/main/webapp/message02.jsp
new file mode 100644
index 0000000..a75772d
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/message02.jsp
@@ -0,0 +1,107 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<%@ page contentType="text/html"
+%><%@ page import="java.util.Locale"
+%><%@ page import="javax.faces.FactoryFinder"
+%><%@ page import="javax.faces.application.Application"
+%><%@ page import="javax.faces.application.ApplicationFactory"
+%><%@ page import="javax.faces.application.FacesMessage"
+%><%@ page import="javax.faces.context.FacesContext"
+%><%@ page import="com.sun.faces.util.MessageFactory"
+%><%@ page import="javax.faces.component.UIViewRoot, javax.faces.render.RenderKitFactory"
+%><%
+
+    // Initialize list of message ids
+    String list[] = {
+          // PENDING(craigmcc) - put message ids here
+    };
+
+    // Acquire the FacesContext instance for this request
+    FacesContext facesContext = FacesContext.getCurrentInstance();
+    if (facesContext == null) {
+        out.println("/message02.jsp FAILED - No FacesContext returned");
+        return;
+    }
+
+    ApplicationFactory afactory = (ApplicationFactory)
+          FactoryFinder.getFactory(FactoryFinder.APPLICATION_FACTORY);
+    Application appl = afactory.getApplication();
+    if (appl == null) {
+        out.println("/message02.jsp FAILED - No Application returned");
+        return;
+    }
+
+    UIViewRoot root = (UIViewRoot)
+          appl.createComponent(UIViewRoot.COMPONENT_TYPE);
+    root.setRenderKitId(RenderKitFactory.HTML_BASIC_RENDER_KIT);
+    facesContext.setViewRoot(root);
+
+    facesContext.setViewRoot(root);
+    // Acquire our Application instance
+
+    // Check message identifiers that should be present (en_US)
+    facesContext.getViewRoot().setLocale(new Locale("en", "US"));
+    for (int i = 0; i < list.length; i++) {
+        FacesMessage message = MessageFactory.getMessage(facesContext, list[i]);
+        if (message == null) {
+            out.println("/message02.jsp FAILED - Missing en_US message '" +
+                        list[i] + "'");
+            return;
+        }
+    }
+
+    // Check message identifiers that should be present (fr_FR)
+    facesContext.getViewRoot().setLocale(new Locale("fr", "FR"));
+    for (int i = 0; i < list.length; i++) {
+        FacesMessage message = MessageFactory.getMessage(facesContext, list[i]);
+        if (message == null) {
+            out.println("/message02.jsp FAILED - Missing fr_FR message '" +
+                        list[i] + "'");
+            return;
+        }
+    }
+
+    // All tests passed
+    out.println("/message02.jsp PASSED");
+
+%>
diff --git a/test/servlet30/systest/src/main/webapp/message03.jsp b/test/servlet30/systest/src/main/webapp/message03.jsp
new file mode 100644
index 0000000..b39e206
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/message03.jsp
@@ -0,0 +1,132 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<%@ page contentType="text/html"
+%><%@ page import="java.util.Locale"
+%><%@ page import="javax.faces.FactoryFinder"
+%><%@ page import="javax.faces.application.Application"
+%><%@ page import="javax.faces.application.ApplicationFactory"
+%><%@ page import="javax.faces.application.FacesMessage"
+%><%@ page import="javax.faces.context.FacesContext"
+%><%@ page import="com.sun.faces.util.MessageFactory"
+%><%@ page import="javax.faces.component.UIViewRoot, javax.faces.render.RenderKitFactory"
+%><%
+
+    // Initialize list of message ids
+    String list[] = {
+          "Custom1A",
+          "Custom1B",
+          "Custom1C",
+    };
+
+    // Acquire the FacesContext instance for this request
+    FacesContext facesContext = FacesContext.getCurrentInstance();
+    ApplicationFactory afactory = (ApplicationFactory)
+          FactoryFinder.getFactory(FactoryFinder.APPLICATION_FACTORY);
+    Application appl = afactory.getApplication();
+    if (appl == null) {
+        out.println("/message03.jsp FAILED - No Application returned");
+        return;
+    }
+    if (facesContext == null) {
+        out.println("/message03.jsp FAILED - No FacesContext returned");
+        return;
+    }
+    UIViewRoot root = (UIViewRoot)
+          appl.createComponent(UIViewRoot.COMPONENT_TYPE);
+    root.setRenderKitId(RenderKitFactory.HTML_BASIC_RENDER_KIT);
+    facesContext.setViewRoot(root);
+
+    FacesMessage message = null;
+
+    // Check message identifiers that should be present (en_US)
+    facesContext.getViewRoot().setLocale(new Locale("en", "US"));
+    for (int i = 0; i < list.length; i++) {
+        message = MessageFactory.getMessage(facesContext, list[i]);
+        if (message == null) {
+            out.println("/message03.jsp FAILED - Missing en_US message '" +
+                        list[i] + "'");
+            return;
+        }
+    }
+
+    // Check specific message characteristics (en_US)
+    message = MessageFactory.getMessage(facesContext, "Custom1B");
+    if (!"This Is Custom1B Detail (en)".equals(message.getDetail())) {
+        out.println("/message03.jsp FAILED - Bad en_US detail '" +
+                    message.getDetail() + "'");
+        return;
+    }
+    if (!"This Is Custom1B Summary (en)".equals(message.getSummary())) {
+        out.println("/message03.jsp FAILED - Bad en_US summary '" +
+                    message.getSummary() + "'");
+        return;
+    }
+
+    // Check message identifiers that should be present (fr_FR)
+    facesContext.getViewRoot().setLocale(new Locale("fr", "FR"));
+    for (int i = 0; i < list.length; i++) {
+        message = MessageFactory.getMessage(facesContext, list[i]);
+        if (message == null) {
+            out.println("/message03.jsp FAILED - Missing fr_FR message '" +
+                        list[i] + "'");
+            return;
+        }
+    }
+
+    // Check specific message characteristics (fr_FR)
+    message = MessageFactory.getMessage(facesContext, "Custom1B");
+    if (!"This Is Custom1B Detail (fr)".equals(message.getDetail())) {
+        out.println("/message03.jsp FAILED - Bad fr_FR detail '" +
+                    message.getDetail() + "'");
+        return;
+    }
+    if (!"This Is Custom1B Summary (fr)".equals(message.getSummary())) {
+        out.println("/message03.jsp FAILED - Bad fr_FR summary '" +
+                    message.getSummary() + "'");
+        return;
+    }
+
+    // All tests passed
+    out.println("/message03.jsp PASSED");
+
+%>
diff --git a/test/servlet30/systest/src/main/webapp/message04.jsp b/test/servlet30/systest/src/main/webapp/message04.jsp
new file mode 100644
index 0000000..75e70e5
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/message04.jsp
@@ -0,0 +1,133 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<%@ page contentType="text/html"
+%><%@ page import="java.util.Locale"
+%><%@ page import="javax.faces.FactoryFinder"
+%><%@ page import="javax.faces.application.Application"
+%><%@ page import="javax.faces.application.ApplicationFactory"
+%><%@ page import="javax.faces.application.FacesMessage"
+%><%@ page import="com.sun.faces.util.MessageFactory"
+%><%@ page import="javax.faces.context.FacesContext"
+%><%@ page import="javax.faces.component.UIViewRoot, javax.faces.render.RenderKitFactory"
+%><%
+
+    // Initialize list of message ids
+    String list[] = {
+          "Custom2A",
+          "Custom2B",
+          "Custom2C",
+    };
+
+// Acquire the FacesContext instance for this request
+    FacesContext facesContext = FacesContext.getCurrentInstance();
+    ApplicationFactory afactory = (ApplicationFactory)
+          FactoryFinder.getFactory(FactoryFinder.APPLICATION_FACTORY);
+    Application appl = afactory.getApplication();
+    if (appl == null) {
+        out.println("/message03.jsp FAILED - No Application returned");
+        return;
+    }
+    if (facesContext == null) {
+        out.println("/message03.jsp FAILED - No FacesContext returned");
+        return;
+    }
+    UIViewRoot root = (UIViewRoot)
+          appl.createComponent(UIViewRoot.COMPONENT_TYPE);
+    root.setRenderKitId(RenderKitFactory.HTML_BASIC_RENDER_KIT);
+    facesContext.setViewRoot(root);
+
+
+    FacesMessage message = null;
+
+    // Check message identifiers that should be present (en_US)
+    facesContext.getViewRoot().setLocale(new Locale("en", "US"));
+    for (int i = 0; i < list.length; i++) {
+        message = MessageFactory.getMessage(facesContext, list[i]);
+        if (message == null) {
+            out.println("/message04.jsp FAILED - Missing en_US message '" +
+                        list[i] + "'");
+            return;
+        }
+    }
+
+    // Check specific message characteristics (en_US)
+    message = MessageFactory.getMessage(facesContext, "Custom2B");
+    if (!"This Is Custom2B Detail (en)".equals(message.getDetail())) {
+        out.println("/message04.jsp FAILED - Bad en_US detail '" +
+                    message.getDetail() + "'");
+        return;
+    }
+    if (!"This Is Custom2B Summary (en)".equals(message.getSummary())) {
+        out.println("/message04.jsp FAILED - Bad en_US summary '" +
+                    message.getSummary() + "'");
+        return;
+    }
+
+    // Check message identifiers that should be present (fr_FR)
+    facesContext.getViewRoot().setLocale(new Locale("fr", "FR"));
+    for (int i = 0; i < list.length; i++) {
+        message = MessageFactory.getMessage(facesContext, list[i]);
+        if (message == null) {
+            out.println("/message04.jsp FAILED - Missing fr_FR message '" +
+                        list[i] + "'");
+            return;
+        }
+    }
+
+    // Check specific message characteristics (fr_FR)
+    message = MessageFactory.getMessage(facesContext, "Custom2B");
+    if (!"This Is Custom2B Detail (fr)".equals(message.getDetail())) {
+        out.println("/message04.jsp FAILED - Bad fr_FR detail '" +
+                    message.getDetail() + "'");
+        return;
+    }
+    if (!"This Is Custom2B Summary (fr)".equals(message.getSummary())) {
+        out.println("/message04.jsp FAILED - Bad fr_FR summary '" +
+                    message.getSummary() + "'");
+        return;
+    }
+
+    // All tests passed
+    out.println("/message04.jsp PASSED");
+
+%>
diff --git a/test/servlet30/systest/src/main/webapp/message05.xhtml b/test/servlet30/systest/src/main/webapp/message05.xhtml
new file mode 100644
index 0000000..ddf4865
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/message05.xhtml
@@ -0,0 +1,53 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<ui:composition xmlns="http://www.w3.org/1999/xhtml"
+				xmlns:h="http://java.sun.com/jsf/html"
+				xmlns:f="http://java.sun.com/jsf/core"
+				xmlns:ui="http://java.sun.com/jsf/facelets"
+				xmlns:test="http://testcomponent">
+      
+	<h2>message test</h2>
+
+	<h:form prependId="false">
+	
+           <h:outputText id="output1" value="#{messageBean.value}"/>  
+           <h:outputText id="output2" value="#{messageBean.value}"/>  
+
+           <br/>
+
+<!-- Case 1: Expected output: Both summary and detail rendered. -->
+
+           <h:message for="output1" showSummary="true" showDetail="true"/>
+
+           <br/>
+
+<!-- Case 2: Expected output: Both summary and detail rendered. Tooltip detail rendered. -->
+
+           <h:message for="output1" showSummary="true" showDetail="true" tooltip="true"/>
+
+           <br/>
+		
+<!-- Case 3: Expected output: Detail rendered. Tooltip detail rendered. -->
+
+           <h:message for="output2" showDetail="true" tooltip="true"/>
+
+           <br/>
+		
+<!-- Case 4: Expected output: Detail rendered. Tooltip detail rendered. -->
+
+           <h:message for="output2" tooltip="true"/>
+
+           <br/>
+		
+<!-- Case 5: Expected output: Both summary and detail rendered. Tooltip detail rendered. -->
+
+           <h:message for="output2" showSummary="true" tooltip="true"/>
+
+           <br/>
+		
+<!-- Case 6: Expected output: Summary rendered. Tooltip detail rendered. -->
+
+           <h:message for="output2" showSummary="true" showDetail="false" tooltip="true"/>
+
+	</h:form>
+	
+</ui:composition>			
diff --git a/test/servlet30/systest/src/main/webapp/messages.xhtml b/test/servlet30/systest/src/main/webapp/messages.xhtml
new file mode 100644
index 0000000..f0e093e
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/messages.xhtml
@@ -0,0 +1,52 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<ui:composition xmlns="http://www.w3.org/1999/xhtml"
+				xmlns:h="http://java.sun.com/jsf/html"
+				xmlns:f="http://java.sun.com/jsf/core"
+				xmlns:ui="http://java.sun.com/jsf/facelets"
+				xmlns:test="http://testcomponent">
+      
+	<h2>message test</h2>
+
+	<h:form prependId="false">
+	
+           <h:outputText id="output1" value="#{messageBean.value}"/>  
+
+           <br/>
+
+<!-- Case 1: Expected output: Both summary and detail rendered. -->
+
+           <h:messages showSummary="true" showDetail="true"/>
+
+           <br/>
+
+<!-- Case 2: Expected output: Both summary and detail rendered. Tooltip detail rendered. -->
+
+           <h:messages showSummary="true" showDetail="true" tooltip="true"/>
+
+           <br/>
+
+<!-- Case 3: Expected output: Both summary and detail rendered. Tooltip detail rendered. -->
+
+           <h:messages showDetail="true" tooltip="true"/>
+
+           <br/>
+
+<!-- Case 4: Expected output: Summary rendered. Tooltip detail rendered. -->
+
+           <h:messages tooltip="true"/>
+
+           <br/>
+
+<!-- Case 5: Expected output: Summary rendered. Tooltip detail rendered. -->
+
+           <h:messages showSummary="true" tooltip="true"/>
+
+           <br/>
+
+<!-- Case 6: Expected output: Summary rendered. Tooltip detail rendered. -->
+
+           <h:messages showSummary="true" showDetail="false" tooltip="true"/>
+
+	</h:form>
+	
+</ui:composition>			
diff --git a/test/servlet30/systest/src/main/webapp/methodref01.jsp b/test/servlet30/systest/src/main/webapp/methodref01.jsp
new file mode 100644
index 0000000..f2f63c4
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/methodref01.jsp
@@ -0,0 +1,99 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+  <head>
+    <title>Test Method References</title>
+  </head>
+
+  <body>
+    <h1>Test Method References</h1>
+
+    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
+    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+
+    <c:set scope="application" var="javax.faces.VALIDATE_EMPTY_FIELDS"
+           value="false" />
+
+    <f:view>  
+      <h:form id="form">
+
+	<hr>
+	<p>Press a button, see some text.</p>
+        <h:inputText readonly="true" id="buttonStatus" 
+                      value="#{methodRef.buttonPressedOutcome}"/>
+        <h:commandButton id="button1" value="button1"
+                           action="#{methodRef.button1Pressed}"/>
+        <h:commandLink id="button2" action="#{methodRef.button2Pressed}">
+          <h:outputText value="button2"/>
+        </h:commandLink>
+        <h:commandButton id="button3" value="button3"
+                           actionListener="#{methodRef.button3Pressed}"/>
+                            <h:message for="buttonStatus"/>
+        <hr>
+	<p>the only valid value is batman</p>
+        <h:inputText id="toValidate" 
+                      validator="#{methodRef.validateInput}"/>
+        <h:commandButton id="validate" value="validate"/>
+        <h:message for="toValidate"/>
+
+        <hr>
+	<p>test value change</p>
+        <h:inputText id="toChange" 
+                      valueChangeListener="#{methodRef.valueChange}"/>
+        <h:commandButton id="changeValue" value="changeValue"/>
+        <h:message for="toChange"/>
+      </h:form>
+    </f:view>
+
+
+
+    <hr>
+    <address><a href="mailto:Ed Burns <ed.burns at sun.com>"></a></address>
+<!-- Created: Fri Oct 31 10:49:23 Eastern Standard Time 2003 -->
+<!-- hhmts start -->
+Last modified: Thu Feb 26 13:28:40 EST 2009
+<!-- hhmts end -->
+  </body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/methodref02.jsp b/test/servlet30/systest/src/main/webapp/methodref02.jsp
new file mode 100644
index 0000000..5ea34cf
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/methodref02.jsp
@@ -0,0 +1,114 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<%@ page contentType="text/html"
+%><%@ page import="javax.faces.application.Application"
+%><%@ page import="javax.faces.context.FacesContext"
+%><%@ page import="javax.faces.el.MethodBinding"
+%><%@ page import="com.sun.faces.systest.model.TestBean"
+%><%@ page import="com.sun.faces.systest.model.TestBeanSubclass"
+%><%
+
+  // Instantiate our test bean in request scope
+  TestBeanSubclass bean = new TestBeanSubclass();
+  FacesContext context = FacesContext.getCurrentInstance();
+  context.getExternalContext().getRequestMap().put
+   ("testMB", bean);
+  MethodBinding mb;
+  Class signature[] = new Class[] { String.class };
+  Object params[] = new Object[1];
+  Object result;
+
+  // Access public methods defined on the bean class itself
+  try {
+      mb = context.getApplication().createMethodBinding
+        ("#{testMB.setExtraProperty}", signature);
+      params[0] = "New Extra Property Value";
+      mb.invoke(context, params);
+  } catch (Exception e) {
+    out.println("/methodref02.jsp FAILED - setExtraProperty() exception: " + e);
+    e.printStackTrace(System.out);
+    return;
+  }
+  try {
+      mb = context.getApplication().createMethodBinding
+        ("#{testMB.getExtraProperty}", null);
+      result = mb.invoke(context, null);
+      if (!params[0].equals(result)) {
+          out.println("/methodref02.jsp FAILED - getExtraProperty() returned: " + result);
+          return;
+      }
+  } catch (Exception e) {
+    out.println("/methodref02.jsp FAILED - getExtraProperty() exception: " + e);
+    e.printStackTrace(System.out);
+    return;
+  }
+
+  // Access public methods defined on the superclass
+  try {
+      mb = context.getApplication().createMethodBinding
+        ("#{testMB.setStringProperty}", signature);
+      params[0] = "New String Property Value";
+      mb.invoke(context, params);
+  } catch (Exception e) {
+    out.println("/methodref02.jsp FAILED - setStringProperty() exception: " + e);
+    e.printStackTrace(System.out);
+    return;
+  }
+  try {
+      mb = context.getApplication().createMethodBinding
+        ("#{testMB.getStringProperty}", null);
+      result = mb.invoke(context, null);
+      if (!params[0].equals(result)) {
+          out.println("/methodref02.jsp FAILED - getStringProperty() returned: " + result);
+          return;
+      }
+  } catch (Exception e) {
+    out.println("/methodref02.jsp FAILED - getStringProperty() exception: " + e);
+    e.printStackTrace(System.out);
+    return;
+  }
+
+  // Report success
+  out.println("/methodref02.jsp PASSED");
+
+%>
diff --git a/test/servlet30/systest/src/main/webapp/phaseListener01.jsp b/test/servlet30/systest/src/main/webapp/phaseListener01.jsp
new file mode 100644
index 0000000..9a713a4
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/phaseListener01.jsp
@@ -0,0 +1,97 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<%@ page contentType="text/html"
+%><%@ page import="javax.faces.FactoryFinder"
+%><%@ page import="javax.faces.context.FacesContext"
+%><%@ page import="javax.faces.context.FacesContextFactory"
+%><%@ page import="javax.faces.render.RenderKitFactory"
+%><%@ page import="javax.faces.component.UIViewRoot"
+%><%@ page import="javax.faces.lifecycle.Lifecycle"
+%><%@ page import="javax.faces.lifecycle.LifecycleFactory"
+%><%@ page import="javax.faces.event.PhaseId"
+%><%@ page import="javax.faces.event.PhaseListener"
+%><%@ page import="com.sun.faces.systest.lifecycle.ReloadPhaseListenerImpl"
+%><%
+
+// This test demonstrates the request processing lifecycle of 
+// a "non-faces" request --->  faces response
+// It uses the "default" renderkit to show how a renderkit can be
+// set.
+//
+    // Create a Lifecycle
+    //
+    LifecycleFactory lFactory = (LifecycleFactory)
+        FactoryFinder.getFactory(FactoryFinder.LIFECYCLE_FACTORY);
+    Lifecycle lifecycle = lFactory.getLifecycle(LifecycleFactory.DEFAULT_LIFECYCLE);
+    if (lifecycle == null) {
+        out.println("/phaseListener01.jsp FAILED - Could not create Lifecycle");
+        return;
+    }
+
+    // Create a FacesContext 
+    //
+    FacesContextFactory facesContextFactory = (FacesContextFactory)
+        FactoryFinder.getFactory(FactoryFinder.FACES_CONTEXT_FACTORY);
+    FacesContext facesContext = facesContextFactory.getFacesContext(
+        config.getServletContext(), request, response, lifecycle);
+    if (facesContext == null) {
+        out.println("/phaseListener01.jsp FAILED - Could not create FacesContext");
+        return;
+    }
+
+    // Acquire a View..
+    //
+    UIViewRoot view = facesContext.getApplication().getViewHandler().
+        createView(facesContext, "/phaseListener01A.jsp");
+
+    // Set the RenderKitFactory.HTML_BASIC_RENDER_KIT renderkit Id
+    //
+    view.setRenderKitId(RenderKitFactory.HTML_BASIC_RENDER_KIT);
+    facesContext.setViewRoot(view);
+
+    PhaseListener phaseListener = new ReloadPhaseListenerImpl(PhaseId.ANY_PHASE);
+    lifecycle.addPhaseListener(phaseListener);
+    lifecycle.execute(facesContext);
+    lifecycle.render(facesContext);
+
+%>
diff --git a/test/servlet30/systest/src/main/webapp/phaseListener01A.jsp b/test/servlet30/systest/src/main/webapp/phaseListener01A.jsp
new file mode 100644
index 0000000..b5fed07
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/phaseListener01A.jsp
@@ -0,0 +1,51 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<%
+    String pageRefresh = System.getProperty("PageRefreshPhases");
+
+    if (pageRefresh.equals("true")) {
+      out.println("/phaseListener01.jsp PASSED");
+    } else {
+      out.println("/phaseListener01.jsp FAILED");
+    }
+%>
diff --git a/test/servlet30/systest/src/main/webapp/positiveTagFile.jsp b/test/servlet30/systest/src/main/webapp/positiveTagFile.jsp
new file mode 100644
index 0000000..3e726f8
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/positiveTagFile.jsp
@@ -0,0 +1,64 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<HTML>
+    <HEAD> <title>positiveTagFile</title> </HEAD>
+    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
+    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+    <%@ taglib prefix="tags" tagdir="/WEB-INF/tags" %>
+
+    <body bgcolor="white">
+    <f:view>
+    <h:form id="helloForm" >
+
+<p>Here is the outputLink: <tags:outputLink /></p>
+
+
+	 <h:commandButton id="submit" action="success" value="Submit" />
+         <p>
+
+    </h:form>
+    </f:view>
+    </body>
+</HTML>  
diff --git a/test/servlet30/systest/src/main/webapp/projectStage/formMessage.xhtml b/test/servlet30/systest/src/main/webapp/projectStage/formMessage.xhtml
new file mode 100644
index 0000000..1d56ee0
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/projectStage/formMessage.xhtml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:f="http://java.sun.com/jsf/core" 
+      xmlns:h="http://java.sun.com/jsf/html">
+   <f:metadata>
+      <f:viewParam name="q" value="Current Problem"/>
+   </f:metadata>
+   <h:head>
+      <title>A Java Trivia Quiz</title>
+   </h:head>
+   <h:body>
+
+<p>Verify that the "missing form" message does not show up.
+ProjectStage must be set to Development.</p>
+
+      <h:form>
+         <p>Which Java keyword is used to define a subclass</p>
+         <p><h:inputText /></p>
+         <p><h:commandButton value="check answer"/></p>
+      </h:form>
+   </h:body>
+</html> 
diff --git a/test/servlet30/systest/src/main/webapp/publishEvents.xhtml b/test/servlet30/systest/src/main/webapp/publishEvents.xhtml
new file mode 100644
index 0000000..4244ef3
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/publishEvents.xhtml
@@ -0,0 +1,61 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<ui:composition xmlns="http://www.w3.org/1999/xhtml"
+				xmlns:h="http://java.sun.com/jsf/html"
+				xmlns:f="http://java.sun.com/jsf/core"
+				xmlns:ui="http://java.sun.com/jsf/facelets"
+				xmlns:test="http://testcomponent">
+
+	<h2>This page contains a component that subscribes to PreRenderViewEvent, PostAddToViewEvent events.   When this page is rendered, the event listener for this component should have fired.</h2>
+	
+	<h:messages/>
+		
+	<h:form prependId="false" id="dynamicForm">
+	
+           <test:addcomponent2 id="componentWithListener"/>
+           <test:addcomponent3 id="componentWithNoListener"/>
+
+	</h:form>			
+	
+</ui:composition>
+
diff --git a/test/servlet30/systest/src/main/webapp/redirect.jsp b/test/servlet30/systest/src/main/webapp/redirect.jsp
new file mode 100644
index 0000000..7795934
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/redirect.jsp
@@ -0,0 +1,58 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<HTML>
+
+    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
+    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+
+       <f:view>  
+         <h:form id="redirect">
+	   <h:outputText value="Label" /> 
+	   <p>
+	   <h:commandButton id="submit" action="success" value="submit"/>
+         </h:form>
+       </f:view>
+
+</HTML>
diff --git a/test/servlet30/systest/src/main/webapp/redirect1.jsp b/test/servlet30/systest/src/main/webapp/redirect1.jsp
new file mode 100644
index 0000000..a1706e7
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/redirect1.jsp
@@ -0,0 +1,59 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<HTML>
+    <HEAD> <TITLE> JSF Standard RenderKit Demo - Thank You Page</TITLE> </HEAD>
+
+    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
+    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+
+    <H3>Thank You Page </H3>
+    <hr>
+
+       <f:view>
+        <h:form>
+	   <h:outputText value="Thank you" style="color: blue"/> 
+        </h:form>
+     </f:view>
+</HTML>
diff --git a/test/servlet30/systest/src/main/webapp/regexp/converter02.txt b/test/servlet30/systest/src/main/webapp/regexp/converter02.txt
new file mode 100644
index 0000000..83fd3f6
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/regexp/converter02.txt
@@ -0,0 +1 @@
+(?s).*<html>\s*<head/>\s*<body>\s*<span\s*id="id1">\s*\$123\.45\s*</span>\s*</body>\s*</html>.*
diff --git a/test/servlet30/systest/src/main/webapp/regexp/converter06.txt b/test/servlet30/systest/src/main/webapp/regexp/converter06.txt
new file mode 100644
index 0000000..7ec1e6a
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/regexp/converter06.txt
@@ -0,0 +1 @@
+(?s).*<form\s*id="form"\s*name="form"\s*method="post"\s*action=".*"\s*enctype="application/x-www-form-urlencoded">\s*<input\s*type="hidden"\s*name="form"\s*value="form"/>\s*<input\s*type="hidden"\s*name="javax.faces.ViewState"\s*id=".*"\s*value=".*"/>\s*<table\s*id="form:panelGrid">\s*<tbody>\s*<tr>\s*<td>\s*Number4:\s*</td>\s*<td>\s*<input\s*id="form:number4"\s*type="text"\s*name="form:number4"\s*value="aaa"\s*maxlength="20"\s*size="10"/>\s*</td>\s*<td/>\s*</tr>\s*<tr>\s*<td>\s*Number5: [...]
diff --git a/test/servlet30/systest/src/main/webapp/regexp/escape_test.txt b/test/servlet30/systest/src/main/webapp/regexp/escape_test.txt
new file mode 100644
index 0000000..4a9a049
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/regexp/escape_test.txt
@@ -0,0 +1 @@
+(?s).*<html>\s*<head>\s*<title>\s*Test\s*of\s*outputText\s*Escaping\s*</title>\s*</head>\s*<body>\s*<h1>\s*Test\s*of\s*outputText\s*Escaping\s*</h1>\s*<p>\s*\[DEFAULT\]\s*This\s*text\s*<b>has\s*angle\s*brackets</b>.\s*The\s*angle\s*brackets\s*MUST\s*be\s*escaped.\s*</p>\s*<p>\s*\[FALSE\]\s*This\s*text\s*<b>\s*has\s*angle\s*brackets\s*</b>\s*.\s*The\s*angle\s*brackets\s*MUST\s*NOT\s*be\s*escaped.\s*</p>\s*<p>\s*\[TRUE\]\s*This\s*text\s*<b>has\s*angle\s*brackets</b> [...]
diff --git a/test/servlet30/systest/src/main/webapp/regexp/regression/AreaTextRowsAttrTest.txt b/test/servlet30/systest/src/main/webapp/regexp/regression/AreaTextRowsAttrTest.txt
new file mode 100644
index 0000000..b450360
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/regexp/regression/AreaTextRowsAttrTest.txt
@@ -0,0 +1 @@
+(?s).*<html>\s*<head>\s*<title>\s*Text\s*Area\s*Row\s*Attribute\s*Regression\s*Test\s*</title>\s*</head>\s*<body>\s*<textarea\s*name=".*"\s*rows="30">\s*</textarea>\s*</body>\s*</html>.*
diff --git a/test/servlet30/systest/src/main/webapp/regexp/regression/SelectOneManySizeAttrTest.txt b/test/servlet30/systest/src/main/webapp/regexp/regression/SelectOneManySizeAttrTest.txt
new file mode 100644
index 0000000..5d83e6b
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/regexp/regression/SelectOneManySizeAttrTest.txt
@@ -0,0 +1 @@
+(?s).*<html>\s*<head>\s*<title>\s*Select.One,Many.ListBox\s*Size\s*Attribute\s*Test\s*</title>\s*</head>\s*<body>\s*<select\s*name=".*"\s*size="5">\s*<option\s*value="val1">\s*val1\s*</option>\s*</select>\s*<select\s*name=".*"\s*multiple="multiple"\s*size="5">\s*<option\s*value="val1">\s*val1\s*</option>\s*</select>\s*</body>\s*</html>.*
diff --git a/test/servlet30/systest/src/main/webapp/regexp/standard/autocomplete.txt b/test/servlet30/systest/src/main/webapp/regexp/standard/autocomplete.txt
new file mode 100644
index 0000000..c52a282
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/regexp/standard/autocomplete.txt
@@ -0,0 +1 @@
+(?s).*<html>\s*<head>\s*<title>\s*autocomplete.jsp\s*</title>\s*</head>\s*<body>\s*autocomplete\s*on\s*.*\s*no\s*attribute\s*rendered:\s*<input\s*id="a"\s*type="password"\s*name="a"\s*value=""/>\s*autocomplete\s*off\s*.*\s*attribute\s*rendered:\s*<input\s*id="b"\s*type="password"\s*name="b"\s*autocomplete="off"\s*value=""/>\s*no\s*autocomplete\s*defined\s*.*\s*no\s*attribute\s*rendered:\s*<input\s*id="c"\s*type="password"\s*name="c"\s*value=""/>\s*autocomplete\s*on\s*.*\s*no\s*attribute\ [...]
diff --git a/test/servlet30/systest/src/main/webapp/regexp/standard/component01.txt b/test/servlet30/systest/src/main/webapp/regexp/standard/component01.txt
new file mode 100644
index 0000000..b058377
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/regexp/standard/component01.txt
@@ -0,0 +1 @@
+(?s).*<html>\s*<head>\s*<title>\s*component01.jsp\s*</title>\s*</head>\s*<body>\s*<input\s*id="username"\s*type="text"\s*name="username"\s*maxlength="32"\s*onkeypress="attrValue"\s*size="20"/>\s*</body>\s*</html>.*
diff --git a/test/servlet30/systest/src/main/webapp/regexp/standard/dtablecolumnclasses.txt b/test/servlet30/systest/src/main/webapp/regexp/standard/dtablecolumnclasses.txt
new file mode 100644
index 0000000..c917c4b
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/regexp/standard/dtablecolumnclasses.txt
@@ -0,0 +1 @@
+(?s).*<html>\s*<head>\s*<title>\s*dtablecolumnclasses.jsp\s*</title>\s*<style\s*type="text/css">\s*\.b1.*\.b2.*\.b3.*\.b4.*\.b5.*.b6.*\.b7.*</style>\s*</head>\s*<body>\s*<table>\s*<tbody>\s*<tr>\s*<td\s*class="b1">\s*c1\s*</td>\s*<td\s*class="b2">\s*c2\s*</td>\s*<td>\s*c3\s*</td>\s*<td>\s*c4\s*</td>\s*<td>\s*c5\s*</td>\s*<td>\s*c6\s*</td>\s*</tr>\s*<tr>\s*<td\s*class="b1">\s*c1_1\s*</td>\s*<td\s*class="b2">\s*c2_1\s*</td>\s*<td>\s*c3_1\s*</td>\s*<td>\s*c4_1\s*</td>\s*<td>\s*c5_1\s*</td>\ [...]
diff --git a/test/servlet30/systest/src/main/webapp/regexp/standard/messages01.txt b/test/servlet30/systest/src/main/webapp/regexp/standard/messages01.txt
new file mode 100644
index 0000000..dddfbae
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/regexp/standard/messages01.txt
@@ -0,0 +1 @@
+(?s).*<head>\s*<title>\s*messages01.jsp\s*</title>\s*<style\s*type="text/css"\s*media="screen">.*\.errors.*</style>\s*</head>\s*<body>\s*<ul\s*class="errors">\s*<li>\s*\{0\}:\s*Validation\s*Error:\s*Value\s*is\s*required.\s*</li>\s*</ul>\s*</body>.*
diff --git a/test/servlet30/systest/src/main/webapp/regexp/standard/messages02.txt b/test/servlet30/systest/src/main/webapp/regexp/standard/messages02.txt
new file mode 100644
index 0000000..90e41c1
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/regexp/standard/messages02.txt
@@ -0,0 +1 @@
+(?s).*<head>\s*<style\s*type="text/css"\s*media="screen">.*\.errors.*</style>\s*</head>\s*<body>\s*<table>\s*<tbody>\s*<tr>\s*<td>\s*<ul\s*dir="LTR"\s*style="left:\s*48px;\s*top:\s*100px;\s*position:\s*absolute">\s*<li\s*style="color:\s*yellow">\s*<span\s*title="Informational\s*Detail">\s*Information\s*Summary\s*Informational\s*Detail\s*</span>\s*</li>\s*<li>\s*<span\s*title="Warning\s*Detail">\s*Warning\s*Summary\s*Warning\s*Detail\s*</span>\s*</li>\s*<li\s*style="color:\s*red">\s*<span [...]
diff --git a/test/servlet30/systest/src/main/webapp/regexp/standard/pgridcolumnclasses.txt b/test/servlet30/systest/src/main/webapp/regexp/standard/pgridcolumnclasses.txt
new file mode 100644
index 0000000..d7d38bf
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/regexp/standard/pgridcolumnclasses.txt
@@ -0,0 +1 @@
+(?s).*<html>\s*<head>\s*<title>\s*pgridcolumnclasses.jsp\s*</title>\s*<style\s*type="text/css">\s*\.b1.*\s*\.b2.*\s*\.b3.*\s*\.b4.*\s*\.b5.*\s*\.b6.*\s*\.b7.*\s*</style>\s*</head>\s*<body>\s*<table>\s*<tbody>\s*<tr>\s*<td\s*class="b1">\s*c1\s*</td>\s*<td\s*class="b2">\s*c2\s*</td>\s*<td>\s*c3\s*</td>\s*<td>\s*c4\s*</td>\s*<td>\s*c5\s*</td>\s*<td>\s*c6\s*</td>\s*</tr>\s*<tr>\s*<td\s*class="b1">\s*c1_1\s*</td>\s*<td\s*class="b2">\s*c2_1\s*</td>\s*<td>\s*c3_1\s*</td>\s*<td>\s*c4_1\s*</td>\s [...]
diff --git a/test/servlet30/systest/src/main/webapp/regexp/standard/selectmany02.txt b/test/servlet30/systest/src/main/webapp/regexp/standard/selectmany02.txt
new file mode 100644
index 0000000..942e402
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/regexp/standard/selectmany02.txt
@@ -0,0 +1 @@
+(?s).*<table\s*class="one">\s*<tbody>\s*<tr>\s*<td>\s*<input\s*name=".*"\s*id=".*"\s*value="1"\s*type="checkbox"\s*checked="checked"/>\s*<label\s*for=".*"\s*class="">\s*Open\s*</label>\s*</td>\s*<td>\s*<input\s*name=".*"\s*id=".*"\s*value="2"\s*type="checkbox"\s*checked="checked"/>\s*<label\s*for=".*"\s*class="">\s*Submitted\s*</label>\s*</td>\s*<td>\s*<input\s*name=".*"\s*id=".*"\s*value="3"\s*type="checkbox"/>\s*<label\s*for=".*"\s*class="">\s*Accepted\s*</label>\s*</td>\s*<td>\s*<inpu [...]
diff --git a/test/servlet30/systest/src/main/webapp/regexp/verbatim_test.txt b/test/servlet30/systest/src/main/webapp/regexp/verbatim_test.txt
new file mode 100644
index 0000000..5dc2a69
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/regexp/verbatim_test.txt
@@ -0,0 +1 @@
+(?s).*\s*<html>\s*<head>\s*<title>\s*Test\s*of\s*the\s*Verbatim\s*Tag\s*</title>\s*</head>\s*<body>\s*<h1>\s*Test\s*of\s*the\s*Verbatim\s*Tag\s*</h1>\s*<p>\s*\[DEFAULT\]\s*This\s*text\s*<b>\s*has\s*angle\s*brackets\s*</b>\s*.\s*The\s*angle\s*brackets\s*MUST\s*NOT\s*be\s*escaped.\s*</p>\s*<p>\s*\[FALSE\]\s*This\s*text\s*<b>\s*has\s*angle\s*brackets\s*</b>\s*.\s*The\s*angle\s*brackets\s*MUST\s*NOT\s*be\s*escaped.\s*</p>\s*<p>\s*\[TRUE\]\s*This\s*text\s*<b>has\s*angle\s*brackets</b [...]
diff --git a/test/servlet30/systest/src/main/webapp/regression/AreaTextRowsAttrTest.jsp b/test/servlet30/systest/src/main/webapp/regression/AreaTextRowsAttrTest.jsp
new file mode 100644
index 0000000..e734ee3
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/regression/AreaTextRowsAttrTest.jsp
@@ -0,0 +1,64 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<%@ page contentType="text/html" language="java" %>
+
+<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
+<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %>
+
+<%--
+   Regression info:
+      Ensure rows attribute is rendered when using the 
+      HTML text area component.  
+   Issue 306: https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=306
+--%>
+
+<html>
+    <head>
+        <title>Text Area Row Attribute Regression Test</title>        
+    </head>
+    <body>
+        <f:view>
+            <h:inputTextarea rows="30" />
+        </f:view>
+    </body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/regression/InjectUserDefJS.jsp b/test/servlet30/systest/src/main/webapp/regression/InjectUserDefJS.jsp
new file mode 100644
index 0000000..b9abc03
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/regression/InjectUserDefJS.jsp
@@ -0,0 +1,67 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<%@ page contentType="text/html" language="java" %>
+
+<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
+<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %>
+
+<%--
+   Regression info:
+      Ensure rows attribute is rendered when using the 
+      HTML text area component.  
+   Issue 312: https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=312
+--%>
+
+<html>
+    <head>
+        <title>User Defined JS Injection Test</title>        
+    </head>
+    <body>
+        <f:view>
+            <h:form>
+                <h:commandLink value="Link" onclick="alert('Are you sure?')"/>
+                <h:commandButton value="Button" onclick="alert('Are you sure?')"/>
+            </h:form>
+        </f:view>
+    </body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/regression/SelectOneManySizeAttrTest.jsp b/test/servlet30/systest/src/main/webapp/regression/SelectOneManySizeAttrTest.jsp
new file mode 100644
index 0000000..2fa20b9
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/regression/SelectOneManySizeAttrTest.jsp
@@ -0,0 +1,68 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<%@ page contentType="text/html" language="java" %>
+
+<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
+<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %>
+
+<%--
+   Regression info:
+      Ensure size attribute is only displayed once 
+      Bug 6410301
+--%>
+
+<html>
+    <head>
+        <title>Select{One,Many}ListBox Size Attribute Test</title>        
+    </head>
+    <body>
+        <f:view>
+            <h:selectOneListbox value="#{requestScope.selection}" size="5">
+                <f:selectItem itemLabel="val1" itemValue="val1"/>
+            </h:selectOneListbox>
+            <h:selectManyListbox value="#{requestScope.selection}" size="5">
+                <f:selectItem itemLabel="val1" itemValue="val1"/>
+            </h:selectManyListbox>          
+        </f:view>
+    </body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/regression/uninstallListeners.xhtml b/test/servlet30/systest/src/main/webapp/regression/uninstallListeners.xhtml
new file mode 100644
index 0000000..5820595
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/regression/uninstallListeners.xhtml
@@ -0,0 +1,58 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+<h:head>
+  <title>A Simple JavaServer Faces 2.0 View</title>
+</h:head>
+<h:body>
+  <h:form prependId="false">
+
+#{postAddToViewListener.uninstallEvent}
+#{postRestoreStateListener.uninstallEvent}
+
+  </h:form>
+</h:body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/regression/verifyBuildBeforeRestore.xhtml b/test/servlet30/systest/src/main/webapp/regression/verifyBuildBeforeRestore.xhtml
new file mode 100644
index 0000000..fb3a35a
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/regression/verifyBuildBeforeRestore.xhtml
@@ -0,0 +1,63 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+<h:head>
+  <title>A Simple JavaServer Faces 2.0 View</title>
+</h:head>
+<h:body>
+  <h:form prependId="false">
+
+#{postAddToViewListener.installEvent}
+#{postRestoreStateListener.installEvent}
+
+      <p>Enter first name: <h:inputText id="input" value="#{test1.stringProperty}" /></p>
+
+      <p>Message: #{message}</p>
+
+      <p><h:commandButton id="submit" value="submit" /></p>     
+  </h:form>
+</h:body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/render/Mojarra932UsingPage.xhtml b/test/servlet30/systest/src/main/webapp/render/Mojarra932UsingPage.xhtml
new file mode 100644
index 0000000..e3d86fe
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/render/Mojarra932UsingPage.xhtml
@@ -0,0 +1,69 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+        PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+<h:head>
+    <title>Test select* with noselection</title>
+</h:head>
+<h:body>
+    <h:form prependId="false">
+
+
+       <h:selectOneMenu id="selectOneMenu" required="true" requiredMessage="REQUIRED" value="#{mojarra932Bean.selectedHobbit}">
+
+         <f:selectItems value="#{mojarra932Bean.ctorHobbits}"/>
+         <f:selectItem itemLabel="-- Select --" itemValue="" />
+
+       </h:selectOneMenu>
+
+       <h:commandButton value="submit" id="button" />
+
+       <p> messages: <h:messages /> </p>
+
+    </h:form>
+</h:body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/render/commandButtonButton.xhtml b/test/servlet30/systest/src/main/webapp/render/commandButtonButton.xhtml
new file mode 100644
index 0000000..e04f2e9
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/render/commandButtonButton.xhtml
@@ -0,0 +1,75 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+        PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+<h:head>
+    <title>Test Command Button Type = Button Page</title>
+</h:head>
+<h:body>
+    <h:outputScript library="javax.faces" name="jsf.js" target="head"/>
+    <h1>Test type="button"</h1>
+    <h:form id="countForm" prependId="false">
+        <h:outputText id="out1" value="#{ajaxrequest.count}"/>
+        <br/>
+        <!-- Increment the counter on the server, and the client -->
+        <h:commandButton id="button1" type="button" value="Count">
+            <f:ajax render="out1"/>
+        </h:commandButton>
+        <br/>
+        <h:commandButton id="button2" type="button" value="Count"
+                         onclick="jsf.ajax.request(this,event,{render: 'out1'})"/>
+        <!-- Resets the counter, doesn't refresh the page -->
+        <h:commandButton id="reset" value="reset" actionListener="#{ajaxrequest.resetCount}">
+            <f:ajax execute="reset" render="out1"/>
+        </h:commandButton>
+    </h:form>
+    <!-- Contained outside the form - shouldn't update except for full page load -->
+    <h:outputText id="outside" value="#{ajaxrequest.count}"/>
+
+</h:body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/render/messageRender.xhtml b/test/servlet30/systest/src/main/webapp/render/messageRender.xhtml
new file mode 100644
index 0000000..55bdab4
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/render/messageRender.xhtml
@@ -0,0 +1,109 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+        PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+<h:head>
+    <title>Test Message Render</title>
+</h:head>
+<h:body>
+    <h1>Test Message Render</h1>
+    <h2> Test with id</h2>
+    <h:form id="testform1">
+        <h:inputText id="in1" value="#{numberholder.number}"/>
+        <br/>
+        <h:commandButton id="button2" type="submit" value="Count"
+                         action="/render/messageRender"/>
+        <h:messages id="msgs"/>
+    </h:form>
+    <br/>
+    <h:form id="testform1a">
+        <h:inputText id="in1" value="#{numberholder.number}"/>
+        <br/>
+        <h:commandButton id="button2" type="submit" value="Count"
+                         action="/render/messageRender"/>
+        <h:messages id="msgs" layout="table"/>
+    </h:form>
+    <br/>
+    <h:form id="testform2">
+        <h:inputText id="in1" value="#{numberholder.number}"/>
+        <br/>
+        <h:commandButton id="button2" type="submit" value="Count"
+                         action="/render/messageRender"/>
+        <br/>
+        <h:message for="in1" id="msg"/>
+    </h:form>
+
+    <h2>Test without id</h2>
+    <h:form id="testform3">
+        <h:inputText id="in1" value="#{numberholder.number}"/>
+        <br/>
+        <h:commandButton id="button2" type="submit" value="Count"
+                         action="/render/messageRender"/>
+        <h:messages/>
+    </h:form>
+    <br/>
+    <h:form id="testform3a">
+        <h:inputText id="in1" value="#{numberholder.number}"/>
+        <br/>
+        <h:commandButton id="button2" type="submit" value="Count"
+                         action="/render/messageRender"/>
+        <h:messages layout="table"/>
+    </h:form>
+    <br/>
+    <h:form id="testform4">
+        <h:inputText id="in1" value="#{numberholder.number}"/>
+        <br/>
+        <h:commandButton id="button2" type="submit" value="Count"
+                         action="/render/messageRender"/>
+        <br/>
+        <h:message for="in1"/>
+    </h:form>
+
+
+</h:body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/render/outputLinkSpaces.jsp b/test/servlet30/systest/src/main/webapp/render/outputLinkSpaces.jsp
new file mode 100644
index 0000000..4dde6bd
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/render/outputLinkSpaces.jsp
@@ -0,0 +1,54 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<%--
+    Added for issue 212.  
+    Ensure transient components do not cause issues
+    with state restoration (verbatim is treated as transient)
+--%>
+<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
+<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+<f:view>
+    <h:form prependId="false" id="form">
+        <h:outputLink id="link" value="text before query string?text after=query string">link text</h:outputLink>
+    </h:form>
+</f:view>
diff --git a/test/servlet30/systest/src/main/webapp/render/outputScriptQuery.xhtml b/test/servlet30/systest/src/main/webapp/render/outputScriptQuery.xhtml
new file mode 100644
index 0000000..b478ba9
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/render/outputScriptQuery.xhtml
@@ -0,0 +1,59 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+<h:head>
+    <title>Script QueryString Test</title>
+</h:head>
+<h:body bgcolor="white">
+    <h:form id="forumForm">
+        <h:outputScript name="simple.js?mod=test"/>
+        <h:outputScript name="simple2.js"/>
+        <h:outputScript library="javax.faces" name="jsf.js"/>
+
+    </h:form>
+</h:body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/render/outputScriptStyleNested.xhtml b/test/servlet30/systest/src/main/webapp/render/outputScriptStyleNested.xhtml
new file mode 100644
index 0000000..f460adb
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/render/outputScriptStyleNested.xhtml
@@ -0,0 +1,169 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+        PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+<h:head>
+    <title>Test nested output script content</title>
+</h:head>
+<h:body>
+    <h:form prependId="false">
+
+<h1>Case 1: script, nested: yes; target: yes; name: yes;</h1>
+
+     <h:outputScript target="head" name="case1.js">
+      alert("case1");
+
+     </h:outputScript>
+
+<h1>Case 2: script, nested: yes; target: yes; name: no;</h1>
+
+     <h:outputScript target="body">
+      alert("case2");
+
+     </h:outputScript>
+
+<h1>Case 3: script, nested: yes; target: no; name: yes;</h1>
+
+     <h:outputScript name="case3.js">
+      alert("case3");
+
+     </h:outputScript>
+
+<h1>Case 4: script, nested: no; target: yes; name: yes;</h1>
+
+     <h:outputScript target="head" name="case4.js"/>
+
+
+<h1>Case 5: script, nested: no; target: no; name: no;</h1>
+
+     <h:outputScript />
+
+<h1>Case 6: script, nested: no; target: no; name: yes;</h1>
+
+     <h:outputScript name="case6.js"/>
+
+<h1>Case 7: script, nested: no; target: yes; name: no;</h1>
+
+     <h:outputScript target="head"/>
+
+<h1>Case 8: script, nested: yes; target: no; name: no;</h1>
+
+     <h:outputScript>
+      alert("case8");
+     </h:outputScript>
+
+<h1>Case 9: Stylesheet, nested: yes; target: yes; name: yes;</h1>
+
+     <h:outputStylesheet target="head" name="case9.css">
+
+.case9 {
+
+color: red;
+
+}
+      
+
+     </h:outputStylesheet>
+
+<h1>Case 10: Stylesheet, nested: yes; target: yes; name: no;</h1>
+
+     <h:outputStylesheet target="body">
+
+.case10 {
+
+color: blue;
+
+}
+
+
+     </h:outputStylesheet>
+
+<h1>Case 11: Stylesheet, nested: yes; target: no; name: yes;</h1>
+
+     <h:outputStylesheet name="case11.css">
+
+.case11 {
+
+color: green;
+
+}
+
+     </h:outputStylesheet>
+
+<h1>Case 12: Stylesheet, nested: no; target: yes; name: yes;</h1>
+
+     <h:outputStylesheet target="head" name="case12.css"/>
+
+<h1>Case 13: Stylesheet, nested: no; target: no; name: no;</h1>
+
+     <h:outputStylesheet />
+
+<h1>Case 14: Stylesheet, nested: no; target: no; name: yes;</h1>
+
+     <h:outputStylesheet name="case14.css"/>
+
+<h1>Case 15: Stylesheet, nested: no; target: yes; name: no;</h1>
+
+     <h:outputStylesheet target="head"/>
+
+<h1>Case 16: Stylesheet, nested: yes; target: no; name: no;</h1>
+
+     <h:outputStylesheet>
+
+.case16 {
+
+color: orange;
+
+}
+
+     </h:outputStylesheet>
+
+
+    </h:form>
+
+</h:body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/render/outputSheetMedia.xhtml b/test/servlet30/systest/src/main/webapp/render/outputSheetMedia.xhtml
new file mode 100644
index 0000000..2c5832b
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/render/outputSheetMedia.xhtml
@@ -0,0 +1,14 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+<h:head>
+    <title>Script QueryString Test</title>
+</h:head>
+<h:body bgcolor="white">
+    <h:form id="form">
+        <h:outputStylesheet name="case9.css" media="print"/>
+    </h:form>
+</h:body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/render/selectStarNoSelection.jspx b/test/servlet30/systest/src/main/webapp/render/selectStarNoSelection.jspx
new file mode 100644
index 0000000..e4c77c0
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/render/selectStarNoSelection.jspx
@@ -0,0 +1,136 @@
+
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:jsp="http://java.sun.com/JSP/Page"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xml:lang="en" lang="en">
+<jsp:output doctype-root-element="html"
+            doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN"
+            doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"/>
+<jsp:directive.page contentType="application/xhtml+xml; charset=UTF-8"/>
+<head>
+    <title>Select* with noSelectionOption</title>
+</head>
+<body bgcolor="white">
+<f:view>
+    <h:form prependId="false">
+
+<h1>SelectOneListbox</h1>
+
+<p>
+
+       <h:selectOneListbox id="selectOneListbox" required="true">
+
+         <f:selectItem noSelectionOption="true" itemLabel="No selection" itemValue="noSelection"/>
+         <f:selectItem itemLabel="Apple" itemValue="Apple"/>
+         <f:selectItem itemLabel="Orange" itemValue="Orange" />
+         <f:selectItem itemLabel="Pear" itemValue="Pear" />
+         <f:selectItem itemLabel="Peach" itemValue="Peach"/>
+
+       </h:selectOneListbox>
+
+</p>
+
+<h1>SelectOneMenu</h1>
+
+<p>
+
+       <h:selectOneMenu id="selectOneMenu" required="true">
+
+         <f:selectItem noSelectionOption="true" itemLabel="No selection" itemValue="noSelection"/>
+         <f:selectItem itemLabel="Apple" itemValue="Apple"/>
+         <f:selectItem itemLabel="Orange" itemValue="Orange" />
+         <f:selectItem itemLabel="Pear" itemValue="Pear" />
+         <f:selectItem itemLabel="Peach" itemValue="Peach"/>
+
+       </h:selectOneMenu>
+
+</p>
+
+<h1>SelectOneRadio</h1>
+
+<p>
+
+       <h:selectOneRadio id="selectOneRadio" required="true">
+
+         <f:selectItem noSelectionOption="true" itemLabel="No selection" itemValue="noSelection"/>
+         <f:selectItem itemLabel="Apple" itemValue="Apple"/>
+         <f:selectItem itemLabel="Orange" itemValue="Orange" />
+         <f:selectItem itemLabel="Pear" itemValue="Pear" />
+         <f:selectItem itemLabel="Peach" itemValue="Peach"/>
+
+       </h:selectOneRadio>
+
+</p>
+
+<h1>SelectManyCheckbox</h1>
+
+<p>
+
+       <h:selectManyCheckbox id="selectManyCheckbox" required="true">
+
+         <f:selectItem noSelectionOption="true" itemLabel="No selection" itemValue="noSelection"/>
+         <f:selectItem itemLabel="Apple" itemValue="Apple"/>
+         <f:selectItem itemLabel="Orange" itemValue="Orange" />
+         <f:selectItem itemLabel="Pear" itemValue="Pear" />
+         <f:selectItem itemLabel="Peach" itemValue="Peach"/>
+
+       </h:selectManyCheckbox>
+
+</p>
+
+<h1>SelectManyListbox</h1>
+
+<p>
+
+       <h:selectManyListbox id="selectManyListbox" required="true">
+
+         <f:selectItem noSelectionOption="true" itemLabel="No selection" itemValue="noSelection"/>
+         <f:selectItem itemLabel="Apple" itemValue="Apple"/>
+         <f:selectItem itemLabel="Orange" itemValue="Orange" />
+         <f:selectItem itemLabel="Pear" itemValue="Pear" />
+         <f:selectItem itemLabel="Peach" itemValue="Peach"/>
+
+       </h:selectManyListbox>
+
+</p>
+
+<h1>SelectManyMenu</h1>
+
+<p>
+
+       <h:selectManyMenu id="selectManyMenu" required="true">
+
+         <f:selectItem noSelectionOption="true" itemLabel="No selection" itemValue="noSelection"/>
+         <f:selectItem itemLabel="Apple" itemValue="Apple"/>
+         <f:selectItem itemLabel="Orange" itemValue="Orange" />
+         <f:selectItem itemLabel="Pear" itemValue="Pear" />
+         <f:selectItem itemLabel="Peach" itemValue="Peach"/>
+
+       </h:selectManyMenu>
+
+</p>
+
+
+
+<p>
+
+       <h:commandButton value="submit" />
+
+</p>
+
+       <p> messages: <h:messages /> </p>
+
+
+
+    </h:form>
+</f:view>
+
+<p>
+    <a href="http://validator.w3.org/check?uri=referer"><img
+          src="http://www.w3.org/Icons/valid-xhtml10"
+          alt="Valid XHTML 1.0!" height="31" width="88"/></a>
+</p>
+</body>
+</html>  
diff --git a/test/servlet30/systest/src/main/webapp/render/selectStarNoSelection.xhtml b/test/servlet30/systest/src/main/webapp/render/selectStarNoSelection.xhtml
new file mode 100644
index 0000000..3e0173a
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/render/selectStarNoSelection.xhtml
@@ -0,0 +1,165 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+        PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+<h:head>
+    <title>Test select* with noselection</title>
+</h:head>
+<h:body>
+    <h:form prependId="false">
+
+<h1>SelectOneListbox</h1>
+
+<p>
+
+       <h:selectOneListbox id="selectOneListbox" required="true">
+
+         <f:selectItem noSelectionOption="true" itemLabel="No selection" itemValue="noSelection"/>
+         <f:selectItem itemLabel="Apple" itemValue="Apple"/>
+         <f:selectItem itemLabel="Orange" itemValue="Orange" />
+         <f:selectItem itemLabel="Pear" itemValue="Pear" />
+         <f:selectItem itemLabel="Peach" itemValue="Peach"/>
+
+       </h:selectOneListbox>
+
+</p>
+
+<h1>SelectOneMenu</h1>
+
+<p>
+
+       <h:selectOneMenu id="selectOneMenu" required="true" requiredMessage="REQUIRED" value="#{test1.stringProperty}">
+
+         <f:selectItem noSelectionOption="true" itemLabel="No selection" itemValue="noSelection"/>
+         <f:selectItem itemLabel="Apple" itemValue="Apple"/>
+         <f:selectItem itemLabel="Orange" itemValue="Orange" />
+         <f:selectItem itemLabel="Pear" itemValue="Pear" />
+         <f:selectItem itemLabel="Peach" itemValue="Peach"/>
+
+       </h:selectOneMenu>
+
+</p>
+
+<h1>SelectOneRadio</h1>
+
+<p>
+
+       <h:selectOneRadio id="selectOneRadio" required="true">
+
+         <f:selectItem noSelectionOption="true" itemLabel="No selection" itemValue="noSelection"/>
+         <f:selectItem itemLabel="Apple" itemValue="Apple"/>
+         <f:selectItem itemLabel="Orange" itemValue="Orange" />
+         <f:selectItem itemLabel="Pear" itemValue="Pear" />
+         <f:selectItem itemLabel="Peach" itemValue="Peach"/>
+
+       </h:selectOneRadio>
+
+</p>
+
+<h1>SelectManyCheckbox</h1>
+
+<p>
+
+       <h:selectManyCheckbox id="selectManyCheckbox" required="true">
+
+         <f:selectItem noSelectionOption="true" itemLabel="No selection" itemValue="noSelection"/>
+         <f:selectItem itemLabel="Apple" itemValue="Apple"/>
+         <f:selectItem itemLabel="Orange" itemValue="Orange" />
+         <f:selectItem itemLabel="Pear" itemValue="Pear" />
+         <f:selectItem itemLabel="Peach" itemValue="Peach"/>
+
+       </h:selectManyCheckbox>
+
+</p>
+
+<h1>SelectManyListbox</h1>
+
+<p>
+
+       <h:selectManyListbox id="selectManyListbox" required="true">
+
+         <f:selectItem noSelectionOption="true" itemLabel="No selection" itemValue="noSelection"/>
+         <f:selectItem itemLabel="Apple" itemValue="Apple"/>
+         <f:selectItem itemLabel="Orange" itemValue="Orange" />
+         <f:selectItem itemLabel="Pear" itemValue="Pear" />
+         <f:selectItem itemLabel="Peach" itemValue="Peach"/>
+
+       </h:selectManyListbox>
+
+</p>
+
+<h1>SelectManyMenu</h1>
+
+<p>
+
+       <h:selectManyMenu id="selectManyMenu" required="true">
+
+         <f:selectItem noSelectionOption="true" itemLabel="No selection" itemValue="noSelection"/>
+         <f:selectItem itemLabel="Apple" itemValue="Apple"/>
+         <f:selectItem itemLabel="Orange" itemValue="Orange" />
+         <f:selectItem itemLabel="Pear" itemValue="Pear" />
+         <f:selectItem itemLabel="Peach" itemValue="Peach"/>
+
+       </h:selectManyMenu>
+
+</p>
+
+
+
+<p>
+
+       <h:commandButton value="submit" />
+
+</p>
+
+       <p> messages: <h:messages /> </p>
+
+
+
+    </h:form>
+</h:body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/render/selectStarSelectionHideNoSelection.xhtml b/test/servlet30/systest/src/main/webapp/render/selectStarSelectionHideNoSelection.xhtml
new file mode 100644
index 0000000..e19a606
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/render/selectStarSelectionHideNoSelection.xhtml
@@ -0,0 +1,165 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+        PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+<h:head>
+    <title>Test select* with noselection</title>
+</h:head>
+<h:body>
+    <h:form prependId="false">
+
+<h1>SelectOneListbox</h1>
+
+<p>
+
+       <h:selectOneListbox id="selectOneListbox" value="Apple" required="true" hideNoSelectionOption="true">
+
+         <f:selectItem noSelectionOption="true" itemLabel="No selection" itemValue="noSelection"/>
+         <f:selectItem itemLabel="Apple" itemValue="Apple"/>
+         <f:selectItem itemLabel="Orange" itemValue="Orange" />
+         <f:selectItem itemLabel="Pear" itemValue="Pear" />
+         <f:selectItem itemLabel="Peach" itemValue="Peach"/>
+
+       </h:selectOneListbox>
+
+</p>
+
+<h1>SelectOneMenu</h1>
+
+<p>
+
+       <h:selectOneMenu id="selectOneMenu" value="Apple" required="true" hideNoSelectionOption="true">
+
+         <f:selectItem noSelectionOption="true" itemLabel="No selection" itemValue="noSelection"/>
+         <f:selectItem itemLabel="Apple" itemValue="Apple"/>
+         <f:selectItem itemLabel="Orange" itemValue="Orange" />
+         <f:selectItem itemLabel="Pear" itemValue="Pear" />
+         <f:selectItem itemLabel="Peach" itemValue="Peach"/>
+
+       </h:selectOneMenu>
+
+</p>
+
+<h1>SelectOneRadio</h1>
+
+<p>
+
+       <h:selectOneRadio id="selectOneRadio" value="Apple" required="true" hideNoSelectionOption="true">
+
+         <f:selectItem noSelectionOption="true" itemLabel="No selection" itemValue="noSelection"/>
+         <f:selectItem itemLabel="Apple" itemValue="Apple"/>
+         <f:selectItem itemLabel="Orange" itemValue="Orange" />
+         <f:selectItem itemLabel="Pear" itemValue="Pear" />
+         <f:selectItem itemLabel="Peach" itemValue="Peach"/>
+
+       </h:selectOneRadio>
+
+</p>
+
+<h1>SelectManyCheckbox</h1>
+
+<p>
+
+       <h:selectManyCheckbox id="selectManyCheckbox" value="Apple" required="true" hideNoSelectionOption="true">
+
+         <f:selectItem noSelectionOption="true" itemLabel="No selection" itemValue="noSelection"/>
+         <f:selectItem itemLabel="Apple" itemValue="Apple"/>
+         <f:selectItem itemLabel="Orange" itemValue="Orange" />
+         <f:selectItem itemLabel="Pear" itemValue="Pear" />
+         <f:selectItem itemLabel="Peach" itemValue="Peach"/>
+
+       </h:selectManyCheckbox>
+
+</p>
+
+<h1>SelectManyListbox</h1>
+
+<p>
+
+       <h:selectManyListbox id="selectManyListbox" value="Apple" required="true" hideNoSelectionOption="true">
+
+         <f:selectItem noSelectionOption="true" itemLabel="No selection" itemValue="noSelection"/>
+         <f:selectItem itemLabel="Apple" itemValue="Apple"/>
+         <f:selectItem itemLabel="Orange" itemValue="Orange" />
+         <f:selectItem itemLabel="Pear" itemValue="Pear" />
+         <f:selectItem itemLabel="Peach" itemValue="Peach"/>
+
+       </h:selectManyListbox>
+
+</p>
+
+<h1>SelectManyMenu</h1>
+
+<p>
+
+       <h:selectManyMenu id="selectManyMenu" value="Apple" required="true" hideNoSelectionOption="true">
+
+         <f:selectItem noSelectionOption="true" itemLabel="No selection" itemValue="noSelection"/>
+         <f:selectItem itemLabel="Apple" itemValue="Apple"/>
+         <f:selectItem itemLabel="Orange" itemValue="Orange" />
+         <f:selectItem itemLabel="Pear" itemValue="Pear" />
+         <f:selectItem itemLabel="Peach" itemValue="Peach"/>
+
+       </h:selectManyMenu>
+
+</p>
+
+
+
+<p>
+
+       <h:commandButton value="submit" />
+
+</p>
+
+       <p> messages: <h:messages /> </p>
+
+
+
+    </h:form>
+</h:body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/renderkit-default-clear.jsp b/test/servlet30/systest/src/main/webapp/renderkit-default-clear.jsp
new file mode 100644
index 0000000..f267eaa
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/renderkit-default-clear.jsp
@@ -0,0 +1,53 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<%@ page contentType="text/html"
+%><%@ page import="javax.faces.FactoryFinder"
+%><%@ page import="javax.faces.application.Application"
+%><%@ page import="javax.faces.application.ApplicationFactory"
+%><%@ page import="javax.faces.context.FacesContext"
+%><%@ page import="javax.faces.el.ValueBinding"
+%><%@ page import="com.sun.faces.systest.model.TestBean"
+%><%
+FacesContext fc = FacesContext.getCurrentInstance();
+fc.getApplication().setDefaultRenderKitId(null);
+%>
diff --git a/test/servlet30/systest/src/main/webapp/renderkit-default.jsp b/test/servlet30/systest/src/main/webapp/renderkit-default.jsp
new file mode 100644
index 0000000..36975ce
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/renderkit-default.jsp
@@ -0,0 +1,53 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<%@ page contentType="text/html"
+%><%@ page import="javax.faces.FactoryFinder"
+%><%@ page import="javax.faces.application.Application"
+%><%@ page import="javax.faces.application.ApplicationFactory"
+%><%@ page import="javax.faces.context.FacesContext"
+%><%@ page import="javax.faces.el.ValueBinding"
+%><%@ page import="com.sun.faces.systest.model.TestBean"
+%><%
+FacesContext fc = FacesContext.getCurrentInstance();
+fc.getApplication().setDefaultRenderKitId("CUSTOM");
+%>
diff --git a/test/servlet30/systest/src/main/webapp/renderkit01.jsp b/test/servlet30/systest/src/main/webapp/renderkit01.jsp
new file mode 100644
index 0000000..1acc7a0
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/renderkit01.jsp
@@ -0,0 +1,174 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<%@ page contentType="text/html"
+%><%@ page import="java.util.Iterator"
+%><%@ page import="java.util.Map"
+%><%@ page import="javax.faces.FactoryFinder"
+%><%@ page import="javax.faces.context.FacesContext"
+%><%@ page import="javax.faces.render.RenderKit"
+%><%@ page import="javax.faces.render.RenderKitFactory"
+%><%@ page import="javax.faces.render.Renderer"
+%><%
+
+// This test goes through the config system to test the loading of 
+// the default renderkit information as well as a custom renderkit
+// consisting of one renderer.
+
+    // Initialize list of Renderer types
+    //
+    String families[] = {
+      "javax.faces.Command",
+      "javax.faces.Command",
+      "javax.faces.Data",
+      "javax.faces.Form",
+      "javax.faces.Graphic",
+      "javax.faces.Input",
+      "javax.faces.Input",
+      "javax.faces.Input",
+      "javax.faces.Input",
+      "javax.faces.Message",
+      "javax.faces.Messages",
+      "javax.faces.Output",
+      "javax.faces.Output",
+      "javax.faces.Output",
+      "javax.faces.Output",
+      "javax.faces.Panel",
+      "javax.faces.Panel",
+      "javax.faces.SelectBoolean",
+      "javax.faces.SelectMany",
+      "javax.faces.SelectMany",
+      "javax.faces.SelectMany",
+      "javax.faces.SelectOne",
+      "javax.faces.SelectOne",
+      "javax.faces.SelectOne"
+    };
+
+    String defaultList[] = {
+      "javax.faces.Button",
+      "javax.faces.Link",
+      "javax.faces.Table",
+      "javax.faces.Form",
+      "javax.faces.Image",
+      "javax.faces.Hidden",
+      "javax.faces.Secret",
+      "javax.faces.Text",
+      "javax.faces.Textarea",
+      "javax.faces.Message",
+      "javax.faces.Messages",
+      "javax.faces.Format",
+      "javax.faces.Label",
+      "javax.faces.Link",
+      "javax.faces.Text",
+      "javax.faces.Grid",
+      "javax.faces.Group",
+      "javax.faces.Checkbox",
+      "javax.faces.Checkbox",
+      "javax.faces.Listbox",
+      "javax.faces.Menu",
+      "javax.faces.Listbox",
+      "javax.faces.Menu",
+      "javax.faces.Radio"
+      };
+
+    String customFamilies[] = {"SysTest"};
+    String customList[] = {"Text"};
+
+    // Acquire RenderKits and check RenderKitId(s)
+    //
+    RenderKitFactory renderKitFactory = (RenderKitFactory)
+        FactoryFinder.getFactory(FactoryFinder.RENDER_KIT_FACTORY);
+    Iterator renderKitIds = renderKitFactory.getRenderKitIds();
+
+    boolean foundDefault = false; 
+    boolean foundCustom= false; 
+    while (renderKitIds.hasNext()) {
+        String renderKitId = (String)renderKitIds.next();
+        if (renderKitId.equals(RenderKitFactory.HTML_BASIC_RENDER_KIT)) {
+            foundDefault = true;
+        } else if (renderKitId.equals("CUSTOM")) {
+            foundCustom = true;
+        }
+    }
+    if (!foundDefault || !foundCustom) {
+        out.println("/renderkit01.jsp FAILED - all renderkit ids not found");
+	return;
+    }
+
+    // Check Renderers For Each RenderKit
+    //
+    while (renderKitIds.hasNext()) {
+        String renderKitId = (String)renderKitIds.next();
+	RenderKit rKit = renderKitFactory.getRenderKit(null, renderKitId);
+	if (rKit == null) {
+	    out.println("/renderkit01.jsp FAILED - renderkit not found");
+	    return;
+	}
+	Renderer renderer = null;
+	if (renderKitId.equals(RenderKitFactory.HTML_BASIC_RENDER_KIT)) {
+	    for (int i=0; i<defaultList.length; i++) {
+	        try {
+	            renderer = rKit.getRenderer(families[i], defaultList[i]);
+	        } catch (IllegalArgumentException ia) {
+	            out.println("/renderkit01.jsp FAILED - renderer not found for type:"+
+		        defaultList[i]+" in renderkit 'DEFAULT'");
+		    return;
+	        }
+	    }
+	} else if (renderKitId.equals("CUSTOM")) {
+	    for (int i=0; i<customList.length; i++) {
+	        try {
+	            renderer = rKit.getRenderer(customFamilies[i],
+                                                customList[i]);
+	        } catch (IllegalArgumentException ia) {
+	            out.println("/renderkit01.jsp FAILED - renderer not found for type:"+
+		        customList[i]+" in renderkit 'CUSTOM'");
+		    return;
+	        }
+	    }
+	}
+    }
+
+    // All tests passed
+    //
+    out.println("/renderkit01.jsp PASSED");
+%>
diff --git a/test/servlet30/systest/src/main/webapp/renderkit02.jsp b/test/servlet30/systest/src/main/webapp/renderkit02.jsp
new file mode 100644
index 0000000..9922e50
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/renderkit02.jsp
@@ -0,0 +1,98 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<%@ page contentType="text/html"
+%><%@ page import="javax.faces.FactoryFinder"
+%><%@ page import="javax.faces.context.FacesContext"
+%><%@ page import="javax.faces.context.FacesContextFactory"
+%><%@ page import="javax.faces.component.UIViewRoot"
+%><%@ page import="javax.faces.lifecycle.Lifecycle"
+%><%@ page import="javax.faces.render.RenderKitFactory"
+%><%@ page import="javax.faces.lifecycle.LifecycleFactory"
+%><%
+
+// This test demonstrates the request processing lifecycle of 
+// a "non-faces" request --->  faces response
+// It uses the "default" renderkit to show how a renderkit can be
+// set.
+//
+    // Create a Lifecycle
+    //
+    LifecycleFactory lFactory = (LifecycleFactory)
+        FactoryFinder.getFactory(FactoryFinder.LIFECYCLE_FACTORY);
+    Lifecycle lifecycle = lFactory.getLifecycle(LifecycleFactory.DEFAULT_LIFECYCLE);
+    if (lifecycle == null) {
+        out.println("/renderkit02.jsp FAILED - Could not create Lifecycle");
+        return;
+    }
+
+    // Create a FacesContext 
+    //
+    FacesContextFactory facesContextFactory = (FacesContextFactory)
+        FactoryFinder.getFactory(FactoryFinder.FACES_CONTEXT_FACTORY);
+    FacesContext facesContext = facesContextFactory.getFacesContext(
+        config.getServletContext(), request, response, lifecycle);
+    if (facesContext == null) {
+        out.println("/renderkit02.jsp FAILED - Could not create FacesContext");
+        return;
+    }
+
+    // Acquire a View..
+    //
+    UIViewRoot view = facesContext.getApplication().getViewHandler().restoreView(facesContext, "/renderkit02A.jsp");
+    if ( view == null)  {
+        view = facesContext.getApplication().getViewHandler().createView(facesContext, "/renderkit02A.jsp");
+    }
+    // Set the RenderKitFactory.HTML_BASIC_RENDER_KIT renderkit Id
+    //
+    view.setRenderKitId(RenderKitFactory.HTML_BASIC_RENDER_KIT);
+    facesContext.setViewRoot(view);
+
+    facesContext.renderResponse();
+
+    lifecycle.execute(facesContext);
+    lifecycle.render(facesContext);
+
+    // All tests passed
+    //
+    out.println("/renderkit02.jsp PASSED");
+%>
diff --git a/test/servlet30/systest/src/main/webapp/renderkit02A.jsp b/test/servlet30/systest/src/main/webapp/renderkit02A.jsp
new file mode 100644
index 0000000..4a15e74
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/renderkit02A.jsp
@@ -0,0 +1,52 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<HTML>
+
+    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
+    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+
+       <f:view>  
+          <h:outputText id="simplelabel" value="Simple Label" /> 
+       </f:view>
+
+</HTML>
diff --git a/test/servlet30/systest/src/main/webapp/renderkit04.jsp b/test/servlet30/systest/src/main/webapp/renderkit04.jsp
new file mode 100644
index 0000000..d59be1a
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/renderkit04.jsp
@@ -0,0 +1,65 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<HTML>
+
+    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
+    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+
+       <jsp:useBean id="TestBean" class="com.sun.faces.systest.model.TestBean" scope="session" />
+       <f:view renderKitId="HTML_BASIC" >  
+          <h:form id="form">
+              <table>
+              <tr>
+                 <td><h:outputText value="RenderKit:" /></td> 
+                 <td><h:outputText value="#{TestBean.renderKitInfo}" /></td>
+              </tr>
+              <tr>
+                 <td><h:outputText value="ResponseWriter:" /></td> 
+                 <td><h:outputText value="#{TestBean.responseWriterInfo}" /></td> 
+              </tr>
+              </table>
+              <h:commandButton id="submit" action="success" value="submit"/>
+          </h:form>
+       </f:view>
+
+</HTML>
diff --git a/test/servlet30/systest/src/main/webapp/renderkit05.jsp b/test/servlet30/systest/src/main/webapp/renderkit05.jsp
new file mode 100644
index 0000000..a35e02c
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/renderkit05.jsp
@@ -0,0 +1,65 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<HTML>
+
+    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
+    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+
+       <jsp:useBean id="TestBean" class="com.sun.faces.systest.model.TestBean" scope="session" />
+       <f:view renderKitId="CUSTOM" >  
+          <h:form id="form">
+              <table>
+              <tr>
+                 <td><h:outputText value="RenderKit:" /></td> 
+                 <td><h:outputText value="#{TestBean.renderKitInfo}" /></td>
+              </tr>
+              <tr>
+                 <td><h:outputText value="ResponseWriter:" /></td> 
+                 <td><h:outputText value="#{TestBean.responseWriterInfo}" /></td> 
+              </tr>
+              </table>
+              <h:commandButton id="submit" action="success" value="submit"/>
+          </h:form>
+       </f:view>
+
+</HTML>
diff --git a/test/servlet30/systest/src/main/webapp/renderkit06.jsp b/test/servlet30/systest/src/main/webapp/renderkit06.jsp
new file mode 100644
index 0000000..a757b1e
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/renderkit06.jsp
@@ -0,0 +1,65 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<HTML>
+
+    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
+    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+
+       <jsp:useBean id="TestBean" class="com.sun.faces.systest.model.TestBean" scope="session" />
+       <f:view >  
+          <h:form id="form">
+              <table>
+              <tr>
+                 <td><h:outputText value="RenderKit:" /></td> 
+                 <td><h:outputText value="#{TestBean.renderKitInfo}" /></td>
+              </tr>
+              <tr>
+                 <td><h:outputText value="ResponseWriter:" /></td> 
+                 <td><h:outputText value="#{TestBean.responseWriterInfo}" /></td> 
+              </tr>
+              </table>
+              <h:commandButton id="submit" action="success" value="submit"/>
+          </h:form>
+       </f:view>
+
+</HTML>
diff --git a/test/servlet30/systest/src/main/webapp/replaceViewRoot.jsp b/test/servlet30/systest/src/main/webapp/replaceViewRoot.jsp
new file mode 100644
index 0000000..74fee4b
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/replaceViewRoot.jsp
@@ -0,0 +1,66 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+  <head>
+    <title>Replace the ViewRoot</title>
+    <%@ taglib uri="http://java.sun.com/jsf/core"  prefix="f" %>
+    <%@ taglib uri="http://java.sun.com/jsf/html"  prefix="h" %>
+    <%@ page import="javax.faces.context.FacesContext" %>
+    <%@ page import="javax.servlet.http.HttpServlet" %>
+  </head>
+
+  <body>
+    <h1>Replace the ViewRoot</h1>
+
+<% 
+
+FacesContext.getCurrentInstance().getApplication().addComponent("javax.faces.ViewRoot", "com.sun.faces.systest.model.ViewRootExtension");
+((HttpServletRequest)FacesContext.getCurrentInstance().getExternalContext().getRequest()).getSession().invalidate();
+
+%>
+
+<p><a name="examine" href="examineViewRoot.jsp">examine the replaced viewRoot.</a></p>
+    <hr>
+  </body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/resourceBundle01.jsp b/test/servlet30/systest/src/main/webapp/resourceBundle01.jsp
new file mode 100644
index 0000000..1263577
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resourceBundle01.jsp
@@ -0,0 +1,43 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+Expression in raw JSP page is ${resourceBundle01.value1}.
diff --git a/test/servlet30/systest/src/main/webapp/resourceBundle02.jsp b/test/servlet30/systest/src/main/webapp/resourceBundle02.jsp
new file mode 100644
index 0000000..7a3e14a
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resourceBundle02.jsp
@@ -0,0 +1,46 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
+<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+
+<f:view>Value from Faces component is <h:outputText value="#{resourceBundle01.value1}" />.</f:view>
diff --git a/test/servlet30/systest/src/main/webapp/resourceBundle03.jsp b/test/servlet30/systest/src/main/webapp/resourceBundle03.jsp
new file mode 100644
index 0000000..e4b02f8
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resourceBundle03.jsp
@@ -0,0 +1,55 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
+<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+
+<f:view>
+Values from Components: <br />
+
+resourceBundle01: <h:outputText value="#{resourceBundle01.value1}" /> <br />
+
+non existing resourceBundle: <h:outputText value="#{resourceBundle02.value1}" /> <br />
+
+resourceBundle03: <h:outputText value="#{resourceBundle03.value3}" /> <br />
+
+</f:view>
diff --git a/test/servlet30/systest/src/main/webapp/resourceBundle04.jsp b/test/servlet30/systest/src/main/webapp/resourceBundle04.jsp
new file mode 100644
index 0000000..30a598a
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resourceBundle04.jsp
@@ -0,0 +1,51 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
+<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+
+<f:view>
+Values from Components: <br />
+
+exsting resource bundle, but non-existing key: <h:outputText value="#{resourceBundle03.bogusKey}" /> <br />
+
+</f:view>
diff --git a/test/servlet30/systest/src/main/webapp/resourceBundle05.jsp b/test/servlet30/systest/src/main/webapp/resourceBundle05.jsp
new file mode 100644
index 0000000..b0b5034
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resourceBundle05.jsp
@@ -0,0 +1,56 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
+<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+
+<f:view>
+
+<p>Testing ResourceBundleELResolver for Faces getType.  Result:
+<h:outputText value="#{test1.resourceBundleType}" /></p>
+
+<p>Testing ResourceBundleELResolver for Faces getFeatureDescriptors.
+Result:</p>
+
+<h:outputText escape="false" value="#{test1.featureDescriptorCorrectness}" />
+
+</f:view>
diff --git a/test/servlet30/systest/src/main/webapp/resourceInjection01.jsp b/test/servlet30/systest/src/main/webapp/resourceInjection01.jsp
new file mode 100644
index 0000000..6188868
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resourceInjection01.jsp
@@ -0,0 +1,63 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+  <head>
+    <title>Test Resource Injection in Managed Beans</title>
+    <%@ taglib uri="http://java.sun.com/jsf/core"  prefix="f" %>
+    <%@ taglib uri="http://java.sun.com/jsf/html"  prefix="h" %>
+  </head>
+
+  <body>
+    <h1>Test Resource Injection in Managed Beans</h1>
+
+<f:view>
+   
+    <h:outputText value="#{resourceInjectionBean.welcomeMessage}" />
+    <h:outputText value="#{resourceInjectionBean2.welcomeMessage}" />    
+   
+</f:view>
+
+    <hr>
+  </body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/resourcerelocation.xhtml b/test/servlet30/systest/src/main/webapp/resourcerelocation.xhtml
new file mode 100644
index 0000000..270f912
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resourcerelocation.xhtml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"
+      xmlns:h="http://java.sun.com/jsf/html">
+<h:head id="head">
+    <title>resourcereslocation</title>
+</h:head>
+<h:body id="body">
+    <h:form id="form">
+        <h:outputScript id="js1" name="simple.js" target="#{param.location}"/>
+        <!-- duplicate added to ensure that duplicates aren't rendered twice -->
+        <h:outputScript id="js2" name="simple.js" target="#{param.location}"/>
+        <!-- target should have no impact on outputStylesheet -->
+        <h:outputStylesheet id="css1" name="simple.css" target="#{param.location}"/>
+        <!-- duplicate added to ensure that duplicates aren't rendered twice -->
+        <h:outputStylesheet id="css2" name="simple.css" target="#{param.location}"/>
+    </h:form>
+</h:body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/resourcerelocation2.xhtml b/test/servlet30/systest/src/main/webapp/resourcerelocation2.xhtml
new file mode 100644
index 0000000..aaeb8cb
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resourcerelocation2.xhtml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"
+      xmlns:h="http://java.sun.com/jsf/html">
+<h:head id="head">
+    <title>resourcereslocation 2</title>
+</h:head>
+<h:body id="body">
+    <h:form id="form">
+        <h:outputStylesheet id="css1" name="simple.css" target="#{param.location}"/>
+        <!-- duplicate added to ensure that duplicates aren't rendered twice -->
+        <h:outputStylesheet id="css2" name="simple.css" target="#{param.location}"/>
+
+        <h:outputScript id="js1" name="simple.js" target="#{param.location}"/>
+        <!-- duplicate added to ensure that duplicates aren't rendered twice -->
+        <h:outputScript id="js2" name="simple.js" target="#{param.location}"/>
+    </h:form>
+</h:body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/resourcerelocation3.xhtml b/test/servlet30/systest/src/main/webapp/resourcerelocation3.xhtml
new file mode 100644
index 0000000..0d9e2d2
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resourcerelocation3.xhtml
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"
+      xmlns:h="http://java.sun.com/jsf/html">
+<h:head id="head">
+    <title>resourcereslocation 3</title>
+</h:head>
+<h:body id="body">
+    <h:form id="form">
+        <h:outputStylesheet id="css" name="simple.css"/>
+        <h:outputScript id="js" name="simple.js" target="#{param.location}"/>
+    </h:form>
+</h:body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/resourcerelocation4.xhtml b/test/servlet30/systest/src/main/webapp/resourcerelocation4.xhtml
new file mode 100644
index 0000000..c368bea
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resourcerelocation4.xhtml
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"
+      xmlns:h="http://java.sun.com/jsf/html">
+<h:head id="head">
+    <title>resourcereslocation 4</title>
+</h:head>
+<h:body id="body">
+    <h:form id="form">
+        <h:outputScript id="js" name="simple.js" target="#{param.location}"/>
+        <h:outputStylesheet id="css" name="simple.css"/>
+    </h:form>
+</h:body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/resources/ajax/echo1.js b/test/servlet30/systest/src/main/webapp/resources/ajax/echo1.js
new file mode 100644
index 0000000..9100d43
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/ajax/echo1.js
@@ -0,0 +1,61 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+// Javascript for ajaxEcho test
+
+function buttonpush(target, exec, element, event) {
+    try {
+        jsf.ajax.request(element, event, {execute: exec, render: target});
+    } catch (ex) {
+        // Handle errors here
+        alert(ex);
+    }
+    return false;
+} 
+
+function resetpush(element, event) {
+    try {
+        jsf.ajax.request(element, event, {execute: element.id});
+    } catch (ex) {
+        // Handle errors here
+        alert(ex);
+    }
+    return false;
+}
diff --git a/test/servlet30/systest/src/main/webapp/resources/ajax/eval.js b/test/servlet30/systest/src/main/webapp/resources/ajax/eval.js
new file mode 100644
index 0000000..7822f7e
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/ajax/eval.js
@@ -0,0 +1,3 @@
+//alert("at first marker is "+window.fileMarker);
+window.fileMarker++;
+//alert("and then marker is "+window.fileMarker);
diff --git a/test/servlet30/systest/src/main/webapp/resources/ajax/evalTestFile.xhtml b/test/servlet30/systest/src/main/webapp/resources/ajax/evalTestFile.xhtml
new file mode 100644
index 0000000..c37ca00
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/ajax/evalTestFile.xhtml
@@ -0,0 +1,65 @@
+<?xml version = "1.0" encoding = "UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:composite="http://java.sun.com/jsf/composite">
+<head>
+
+    <title>Not present in rendered output</title>
+
+</head>
+<composite:interface>
+</composite:interface>
+
+<composite:implementation>
+    <div id="#{cc.clientId}">
+    <script type="text/javascript" src="../../resources/ajax/eval.js"></script>
+    </div>
+</composite:implementation>
+
+<body>
+</body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/resources/ajax/evalTestInline.xhtml b/test/servlet30/systest/src/main/webapp/resources/ajax/evalTestInline.xhtml
new file mode 100644
index 0000000..841c0d6
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/ajax/evalTestInline.xhtml
@@ -0,0 +1,77 @@
+<?xml version = "1.0" encoding = "UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:composite="http://java.sun.com/jsf/composite">
+<head>
+
+    <title>Not present in rendered output</title>
+
+</head>
+<composite:interface>
+</composite:interface>
+
+<composite:implementation>
+    <div id="#{cc.clientId}">
+    <script type="text/javascript">
+        // <![CDATA[
+        if (typeof inlineccmarker !== "undefined") {
+            // include extraneous amp char, to regression test some browsers
+            var ampValue = "&";
+            if (ampValue === "&") {
+                var target = document.getElementById('target');
+                target.innerHTML = "PASSED";
+            }
+        }
+        inlineccmarker = true;
+        //]]>
+    </script>
+    </div>
+</composite:implementation>
+
+<body>
+</body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/resources/ajax/test.jsf.js b/test/servlet30/systest/src/main/webapp/resources/ajax/test.jsf.js
new file mode 100644
index 0000000..77a6c24
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/ajax/test.jsf.js
@@ -0,0 +1,2270 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 2011 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ *
+ * This file incorporates work covered by the following copyright and
+ * permission notices:
+ *
+ * Copyright 2004 The Apache Software Foundation
+ * Copyright 2004-2008 Emmanouil Batsis, mailto: mbatsis at users full stop sourceforge full stop net
+ *
+ * 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.
+ */
+
+/**
+ @project JSF JavaScript Library
+ @version 2.0
+ @description This is the standard implementation of the JSF JavaScript Library.
+ */
+
+/**
+ * Register with OpenAjax
+ */
+if (typeof OpenAjax !== "undefined" &&
+    typeof OpenAjax.hub.registerLibrary !== "undefined") {
+    OpenAjax.hub.registerLibrary("jsf", "www.sun.com", "2.0", null);
+}
+
+// Detect if this is already loaded, and if loaded, if it's a higher version
+if (!((jsf && jsf.specversion && jsf.specversion >= 20000 ) &&
+      (jsf.implversion && jsf.implversion >= 3))) {
+
+    /**
+     * The top level global namespace for JavaServer Faces functionality.
+     * @name jsf
+     * @namespace
+     */
+    var jsf = {};
+
+    /**
+     * The namespace for Ajax functionality.
+     * @name jsf.ajax
+     * @namespace
+     * @exec
+     */
+    jsf.ajax = function() {
+
+        var eventListeners = [];
+        var errorListeners = [];
+
+        /**
+         * Determine if the current browser is part of Microsoft's failed attempt at
+         * standards modification.
+         * @ignore
+         */
+        var isIE = function isIE() {
+            if (typeof isIECache !== "undefined") {
+                return isIECache;
+            }
+            isIECache =
+                   document.all && window.ActiveXObject &&
+                   navigator.userAgent.toLowerCase().indexOf("msie") > -1 &&
+                   navigator.userAgent.toLowerCase().indexOf("opera") == -1;
+            return isIECache;
+        };
+        var isIECache;
+
+        /**
+         * Determine if loading scripts into the page executes the script.
+         * This is instead of doing a complicated browser detection algorithm.  Some do, some don't.
+         * @returns {boolean} does including a script in the dom execute it?
+         * @ignore
+         */
+        var isAutoExec = function isAutoExec() {
+            try {
+                if (typeof isAutoExecCache !== "undefined") {
+                    return isAutoExecCache;
+                }
+                var autoExecTestString = "<script>var mojarra = mojarra || {};mojarra.autoExecTest = true;</script>";
+                var tempElement = document.createElement('span');
+                tempElement.innerHTML = autoExecTestString;
+                var body = document.getElementsByTagName('body')[0];
+                var tempNode = body.appendChild(tempElement);
+                if (mojarra && mojarra.autoExecTest) {
+                    isAutoExecCache = true;
+                    delete mojarra.autoExecTest;
+                } else {
+                    isAutoExecCache = false;
+                }
+                deleteNode(tempNode);
+                return isAutoExecCache;
+            } catch (ex) {
+                // OK, that didn't work, we'll have to make an assumption
+                if (typeof isAutoExecCache === "undefined") {
+                    isAutoExecCache = false;
+                }
+                return isAutoExecCache;
+            }
+        };
+        var isAutoExecCache;
+
+        /**
+         * @ignore
+         */
+        var getTransport = function getTransport() {
+            var methods = [
+                function() {
+                    return new XMLHttpRequest();
+                },
+                function() {
+                    return new ActiveXObject('Msxml2.XMLHTTP');
+                },
+                function() {
+                    return new ActiveXObject('Microsoft.XMLHTTP');
+                }
+            ];
+
+            var returnVal;
+            for (var i = 0, len = methods.length; i < len; i++) {
+                try {
+                    returnVal = methods[i]();
+                } catch(e) {
+                    continue;
+                }
+                return returnVal;
+            }
+            throw new Error('Could not create an XHR object.');
+        };
+
+        /**
+         * Find instance of passed String via getElementById
+         * @ignore
+         */
+        var $ = function $() {
+            var results = [], element;
+            for (var i = 0; i < arguments.length; i++) {
+                element = arguments[i];
+                if (typeof element == 'string') {
+                    element = document.getElementById(element);
+                }
+                results.push(element);
+            }
+            return results.length > 1 ? results : results[0];
+        };
+
+        /**
+         * Get the form element which encloses the supplied element.
+         * @param element - element to act against in search
+         * @returns form element representing enclosing form, or first form if none found.
+         * @ignore
+         */
+        var getForm = function getForm(element) {
+            if (element) {
+                var form = $(element);
+                while (form) {
+
+                    if (form.nodeName && (form.nodeName.toLowerCase() == 'form')) {
+                        return form;
+                    }
+                    if (form.form) {
+                        return form.form;
+                    }
+                    if (form.parentNode) {
+                        form = form.parentNode;
+                    } else {
+                        form = null;
+                    }
+                }
+                return document.forms[0];
+            }
+            return null;
+        };
+
+        /**
+         * Check if a value exists in an array
+         * @ignore
+         */
+        var isInArray = function isInArray(array, value) {
+            for (var i = 0; i < array.length; i++) {
+                if (array[i] === value) {
+                    return true;
+                }
+            }
+            return false;
+        };
+
+
+        /**
+         * Evaluate JavaScript code in a global context.
+         * @param src JavaScript code to evaluate
+         * @ignore
+         */
+        var globalEval = function globalEval(src) {
+            if (window.execScript) {
+                window.execScript(src);
+                return;
+            }
+            // We have to wrap the call in an anon function because of a firefox bug, where this is incorrectly set
+            // We need to explicitly call window.eval because of a Chrome peculiarity
+            var fn = function() {
+                window.eval.call(window,src);
+            };
+            fn();
+        };
+
+        /**
+         * Get all scripts from supplied string, return them as an array for later processing.
+         * @param str
+         * @returns {array} of script text
+         * @ignore
+         */
+        var stripScripts = function stripScripts(str) {
+            // Regex to find all scripts in a string
+            var findscripts = /<script[^>]*>([\S\s]*?)<\/script>/igm;
+            // Regex to find one script, to isolate it's content [2] and attributes [1]
+            var findscript = /<script([^>]*)>([\S\s]*?)<\/script>/im;
+            // Regex to remove leading cruft
+            var stripStart = /^\s*(<!--)*\s*(\/\/)*\s*(\/\*)*\s*(<!\[CDATA\[)*/;
+            // Regex to find src attribute
+            var findsrc = /src="([\S]*?)"/im;
+            var initialnodes = [];
+            var scripts = [];
+            initialnodes = str.match(findscripts);
+            while (!!initialnodes && initialnodes.length > 0) {
+                var scriptStr = [];
+                scriptStr = initialnodes.shift().match(findscript);
+                var src = [];
+                // check if src specified
+                src = scriptStr[1].match(findsrc);
+                var script;
+                if ( !!src && src[1]) {
+                    // if this is a file, load it
+                    var url = src[1];
+                    // if this is another copy of jsf.js, don't load it
+                    // it's never necessary, and can make debugging difficult
+                    if (/\/javax.faces.resource\/jsf.js\?ln=javax\.faces/.test(url)) {
+                        script = false;
+                    } else {
+                        script = loadScript(url);
+                    }
+                } else if (!!scriptStr && scriptStr[2]){
+                    // else get content of tag, without leading CDATA and such
+                    script = scriptStr[2].replace(stripStart,"");
+                } else {
+                    script = false;
+                }
+                if (!!script) {
+                    scripts.push(script);
+                }
+            }
+            return scripts;
+        };
+
+        /**
+         * Load a script via a url, use synchronous XHR request.  This is liable to be slow,
+         * but it's probably the only correct way.
+         * @param url the url to load
+         * @ignore
+         */
+        var loadScript = function loadScript(url) {
+            var xhr = getTransport();
+            if (xhr === null) {
+                return "";
+            }
+
+            xhr.open("GET", url, false);
+            xhr.setRequestHeader("Content-Type", "application/x-javascript");
+            xhr.send(null);
+
+            // PENDING graceful error handling
+            if (xhr.readyState == 4 && xhr.status == 200) {
+                    return xhr.responseText;
+            }
+
+            return "";
+        };
+
+        /**
+         * Run an array of scripts text
+         * @param scripts array of script nodes
+         * @ignore
+         */
+        var runScripts = function runScripts(scripts) {
+            if (!scripts || scripts.length === 0) {
+                return;
+            }
+
+            var head = document.getElementsByTagName('head')[0] || document.documentElement;
+            while (scripts.length) {
+                // create script node
+                var scriptNode = document.createElement('script');
+                scriptNode.type = 'text/javascript';
+                scriptNode.text = scripts.shift(); // add the code to the script node
+                head.appendChild(scriptNode); // add it to the page
+                head.removeChild(scriptNode); // then remove it
+            }
+        };
+
+        /**
+         * Replace DOM element with a new tagname and supplied innerHTML
+         * @param element element to replace
+         * @param tempTagName new tag name to replace with
+         * @param src string new content for element
+         * @ignore
+         */
+        var elementReplaceStr = function elementReplaceStr(element, tempTagName, src) {
+
+            var temp = document.createElement(tempTagName);
+            if (element.id) {
+                temp.id = element.id;
+            }
+
+            // Creating a head element isn't allowed in IE, and faulty in most browsers,
+            // so it is not allowed
+            if (element.nodeName.toLowerCase() === "head") {
+                throw new Error("Attempted to replace a head element - this is not allowed.");
+            } else {
+                var scripts = [];
+                if (isAutoExec()) {
+                    temp.innerHTML = src;
+                } else {
+                    // Get scripts from text
+                    scripts = stripScripts(src);
+                    // Remove scripts from text
+                    src = src.replace(/<script[^>]*>([\S\s]*?)<\/script>/igm,"");
+                    temp.innerHTML = src;
+                }
+            }
+
+            replaceNode(temp, element);            
+            runScripts(scripts);
+
+        };
+
+        /**
+         * Get a string with the concatenated values of all string nodes under the given node
+         * @param  oNode the given DOM node
+         * @param  deep boolean - whether to recursively scan the children nodes of the given node for text as well. Default is <code>false</code>
+         * @ignore
+         * Note:  This code originally from Sarissa: http://dev.abiss.gr/sarissa
+         * It has been modified to fit into the overall codebase
+         */
+        var getText = function getText(oNode, deep) {
+            var Node = {ELEMENT_NODE: 1, ATTRIBUTE_NODE: 2, TEXT_NODE: 3, CDATA_SECTION_NODE: 4,
+                ENTITY_REFERENCE_NODE: 5,  ENTITY_NODE: 6, PROCESSING_INSTRUCTION_NODE: 7,
+                COMMENT_NODE: 8, DOCUMENT_NODE: 9, DOCUMENT_TYPE_NODE: 10,
+                DOCUMENT_FRAGMENT_NODE: 11, NOTATION_NODE: 12};
+
+            var s = "";
+            var nodes = oNode.childNodes;
+            for (var i = 0; i < nodes.length; i++) {
+                var node = nodes[i];
+                var nodeType = node.nodeType;
+                if (nodeType == Node.TEXT_NODE || nodeType == Node.CDATA_SECTION_NODE) {
+                    s += node.data;
+                } else if (deep === true && (nodeType == Node.ELEMENT_NODE ||
+                                             nodeType == Node.DOCUMENT_NODE ||
+                                             nodeType == Node.DOCUMENT_FRAGMENT_NODE)) {
+                    s += getText(node, true);
+                }
+            }
+            return s;
+        };
+
+        var PARSED_OK = "Document contains no parsing errors";
+        var PARSED_EMPTY = "Document is empty";
+        var PARSED_UNKNOWN_ERROR = "Not well-formed or other error";
+        var getParseErrorText;
+        if (isIE()) {
+            /**
+             * Note: This code orginally from Sarissa: http://dev.abiss.gr/sarissa
+             * @ignore
+             */
+            getParseErrorText = function (oDoc) {
+                var parseErrorText = PARSED_OK;
+                if (oDoc && oDoc.parseError && oDoc.parseError.errorCode && oDoc.parseError.errorCode !== 0) {
+                    parseErrorText = "XML Parsing Error: " + oDoc.parseError.reason +
+                                     "\nLocation: " + oDoc.parseError.url +
+                                     "\nLine Number " + oDoc.parseError.line + ", Column " +
+                                     oDoc.parseError.linepos +
+                                     ":\n" + oDoc.parseError.srcText +
+                                     "\n";
+                    for (var i = 0; i < oDoc.parseError.linepos; i++) {
+                        parseErrorText += "-";
+                    }
+                    parseErrorText += "^\n";
+                }
+                else if (oDoc.documentElement === null) {
+                    parseErrorText = PARSED_EMPTY;
+                }
+                return parseErrorText;
+            };
+        } else { // (non-IE)
+
+            /**
+             * <p>Returns a human readable description of the parsing error. Useful
+             * for debugging. Tip: append the returned error string in a <pre>
+             * element if you want to render it.</p>
+             * @param  oDoc The target DOM document
+             * @returns {String} The parsing error description of the target Document in
+             *          human readable form (preformated text)
+             * @ignore
+             * Note:  This code orginally from Sarissa: http://dev.abiss.gr/sarissa
+             */
+            getParseErrorText = function (oDoc) {
+                var parseErrorText = PARSED_OK;
+                if ((!oDoc) || (!oDoc.documentElement)) {
+                    parseErrorText = PARSED_EMPTY;
+                } else if (oDoc.documentElement.tagName == "parsererror") {
+                    parseErrorText = oDoc.documentElement.firstChild.data;
+                    parseErrorText += "\n" + oDoc.documentElement.firstChild.nextSibling.firstChild.data;
+                } else if (oDoc.getElementsByTagName("parsererror").length > 0) {
+                    var parsererror = oDoc.getElementsByTagName("parsererror")[0];
+                    parseErrorText = getText(parsererror, true) + "\n";
+                } else if (oDoc.parseError && oDoc.parseError.errorCode !== 0) {
+                    parseErrorText = PARSED_UNKNOWN_ERROR;
+                }
+                return parseErrorText;
+            };
+        }
+
+        if ((typeof(document.importNode) == "undefined") && isIE()) {
+            try {
+                /**
+                 * Implementation of importNode for the context window document in IE.
+                 * If <code>oNode</code> is a TextNode, <code>bChildren</code> is ignored.
+                 * @param oNode the Node to import
+                 * @param bChildren whether to include the children of oNode
+                 * @returns the imported node for further use
+                 * @ignore
+                 * Note:  This code orginally from Sarissa: http://dev.abiss.gr/sarissa
+                 */
+                document.importNode = function(oNode, bChildren) {
+                    var tmp;
+                    if (oNode.nodeName == '#text') {
+                        return document.createTextNode(oNode.data);
+                    }
+                    else {
+                        if (oNode.nodeName == "tbody" || oNode.nodeName == "tr") {
+                            tmp = document.createElement("table");
+                        }
+                        else if (oNode.nodeName == "td") {
+                            tmp = document.createElement("tr");
+                        }
+                        else if (oNode.nodeName == "option") {
+                            tmp = document.createElement("select");
+                        }
+                        else {
+                            tmp = document.createElement("div");
+                        }
+                        if (bChildren) {
+                            tmp.innerHTML = oNode.xml ? oNode.xml : oNode.outerHTML;
+                        } else {
+                            tmp.innerHTML = oNode.xml ? oNode.cloneNode(false).xml : oNode.cloneNode(false).outerHTML;
+                        }
+                        return tmp.getElementsByTagName("*")[0];
+                    }
+                };
+            } catch(e) {
+            }
+        }
+        // Setup Node type constants for those browsers that don't have them (IE)
+        var Node = {ELEMENT_NODE: 1, ATTRIBUTE_NODE: 2, TEXT_NODE: 3, CDATA_SECTION_NODE: 4,
+            ENTITY_REFERENCE_NODE: 5,  ENTITY_NODE: 6, PROCESSING_INSTRUCTION_NODE: 7,
+            COMMENT_NODE: 8, DOCUMENT_NODE: 9, DOCUMENT_TYPE_NODE: 10,
+            DOCUMENT_FRAGMENT_NODE: 11, NOTATION_NODE: 12};
+
+        // PENDING - add support for removing handlers added via DOM 2 methods
+        /**
+         * Delete all events attached to a node
+         * @param node
+         * @ignore
+         */
+        var clearEvents = function clearEvents(node) {
+            if (!node) {
+                return;
+            }
+
+            // don't do anything for text and comment nodes - unnecessary
+            if (node.nodeType == Node.TEXT_NODE || node.nodeType == Node.COMMENT_NODE) {
+                return;
+            }
+
+            var events = ['abort', 'blur', 'change', 'error', 'focus', 'load', 'reset', 'resize', 'scroll', 'select', 'submit', 'unload',
+            'keydown', 'keypress', 'keyup', 'click', 'mousedown', 'mousemove', 'mouseout', 'mouseover', 'mouseup', 'dblclick' ];
+            try {
+                for (var e in events) {
+                    if (events.hasOwnProperty(e)) {
+                        node[e] = null;
+                    }
+                }
+            } catch (ex) {
+                // it's OK if it fails, at least we tried
+            }
+        };
+
+        /**
+         * Deletes node
+         * @param node
+         * @ignore
+         */
+        var deleteNode = function deleteNode(node) {
+            if (!node) {
+                return;
+            }
+            if (!node.parentNode) {
+                // if there's no parent, there's nothing to do
+                return;
+            }
+            if (!isIE()) {
+                // nothing special required
+                node.parentNode.removeChild(node);
+                return;
+            }
+            // The rest of this code is specialcasing for IE
+            if (node.nodeName.toLowerCase() === "body") {
+                // special case for removing body under IE.
+                deleteChildren(node);
+                try {
+                    node.outerHTML = '';
+                } catch (ex) {
+                    // fails under some circumstances, but not in RI
+                    // supplied responses.  If we've gotten here, it's
+                    // fairly safe to leave a lingering body tag rather than
+                    // fail outright
+                }
+                return;
+            }
+            var temp = node.ownerDocument.createElement('div');
+            var parent = node.parentNode;
+            temp.appendChild(parent.removeChild(node));
+            // Now clean up the temporary element
+            try {
+                temp.outerHTML = ''; //prevent leak in IE
+            } catch (ex) {
+                // at least we tried.  Fails in some circumstances,
+                // but not in RI supplied responses.  Better to leave a lingering
+                // temporary div than to fail outright.
+            }
+        };
+
+        /**
+         * Deletes all children of a node
+         * @param node
+         * @ignore
+         */
+        var deleteChildren = function deleteChildren(node) {
+            if (!node) {
+                return;
+            }
+            for (var x = node.childNodes.length - 1; x >= 0; x--) { //delete all of node's children
+                var childNode = node.childNodes[x];
+                deleteNode(childNode);
+            }
+        };
+
+        /**
+         * <p> Copies the childNodes of nodeFrom to nodeTo</p>
+         *
+         * @param  nodeFrom the Node to copy the childNodes from
+         * @param  nodeTo the Node to copy the childNodes to
+         * @ignore
+         * Note:  This code originally from Sarissa:  http://dev.abiss.gr/sarissa
+         * It has been modified to fit into the overall codebase
+         */
+        var copyChildNodes = function copyChildNodes(nodeFrom, nodeTo) {
+
+            if ((!nodeFrom) || (!nodeTo)) {
+                throw "Both source and destination nodes must be provided";
+            }
+
+            deleteChildren(nodeTo);
+            var nodes = nodeFrom.childNodes;
+            // if within the same doc, just move, else copy and delete
+            if (nodeFrom.ownerDocument == nodeTo.ownerDocument) {
+                while (nodeFrom.firstChild) {
+                    nodeTo.appendChild(nodeFrom.firstChild);
+                }
+            } else {
+                var ownerDoc = nodeTo.nodeType == Node.DOCUMENT_NODE ? nodeTo : nodeTo.ownerDocument;
+                var i;
+                if (typeof(ownerDoc.importNode) != "undefined") {
+                    for (i = 0; i < nodes.length; i++) {
+                        nodeTo.appendChild(ownerDoc.importNode(nodes[i], true));
+                    }
+                } else {
+                    for (i = 0; i < nodes.length; i++) {
+                        nodeTo.appendChild(nodes[i].cloneNode(true));
+                    }
+                }
+            }
+        };
+
+
+        /**
+         * Replace one node with another.  Necessary for handling IE memory leak.
+         * @param node
+         * @param newNode
+         * @ignore
+         */
+        var replaceNode = function replaceNode(newNode, node) {
+               if(isIE()){
+                    node.parentNode.insertBefore(newNode, node);
+                    deleteNode(node);
+               } else {
+                    node.parentNode.replaceChild(newNode, node);
+               }
+        };
+
+
+        /**
+         * copy all attributes from one element to another - except id
+         * @param target element to copy attributes to
+         * @param source element to copy attributes from
+         * @ignore
+         */
+        var cloneAttributes = function cloneAttributes(target, source) {
+
+            // enumerate core element attributes - without 'dir' as special case
+            var coreElementAttributes = ['className', 'title', 'lang', 'xml:lang'];
+
+            // Enumerate additional input element attributes
+            var inputElementAttributes =
+                    [   'name', 'value', 'checked', 'disabled', 'readOnly',
+                        'size', 'maxLength', 'src', 'alt', 'useMap', 'isMap',
+                        'tabIndex', 'accessKey', 'accept', 'type'
+                    ];
+
+            // Enumerate all the names of the event listeners
+            var listenerNames =
+                    [ 'onclick', 'ondblclick', 'onmousedown', 'onmousemove', 'onmouseout',
+                        'onmouseover', 'onmouseup', 'onkeydown', 'onkeypress', 'onkeyup',
+                        'onhelp', 'onblur', 'onfocus', 'onchange', 'onload', 'onunload', 'onabort',
+                        'onreset', 'onselect', 'onsubmit'
+                    ];
+
+            var iIndex, iLength; // for loop variables
+            var attributeName; // name of the attribute to set
+            var newValue, oldValue; // attribute values in each element
+
+            // First, copy over core attributes
+            for (iIndex = 0,iLength = coreElementAttributes.length; iIndex < iLength; iIndex++) {
+                attributeName = coreElementAttributes[iIndex];
+                newValue = source[attributeName];
+                oldValue = target[attributeName];
+                if (oldValue != newValue) {
+                    target[attributeName] = newValue;
+                }
+            }
+
+            // Next, if it's an input, copy those over
+            if (target.nodeName.toLowerCase() === 'input') {
+                for (iIndex = 0,iLength = inputElementAttributes.length; iIndex < iLength; iIndex++) {
+                    attributeName = inputElementAttributes[iIndex];
+                    newValue = source[attributeName];
+                    oldValue = target[attributeName];
+                    if (oldValue != newValue) {
+                        target[attributeName] = newValue;
+                    }
+                }
+            }
+            //'style' attribute special case
+            var newStyle = source.getAttribute('style');
+            var oldStyle = target.getAttribute('style');
+            if (newStyle != oldStyle) {
+                if (isIE()) {
+                    target.style.setAttribute('cssText', newStyle, 0);
+                } else {
+                    target.setAttribute('style',newStyle);
+                }
+            }
+            for (var lIndex = 0, lLength = listenerNames.length; lIndex < lLength; lIndex++) {
+                var name = listenerNames[lIndex];
+                target[name] = source[name] ? source[name] : null;
+                if (source[name]) {
+                    source[name] = null;
+                }
+            }
+            // Special case for 'dir' attribute
+            if (!isIE() && source.dir != target.dir) {
+                target.dir = source.dir ? source.dir : null;
+            }
+        };
+
+        /**
+         * Replace an element from one document into another
+         * @param newElement new element to put in document
+         * @param origElement original element to replace
+         * @ignore
+         */
+        var elementReplace = function elementReplace(newElement, origElement) {
+            copyChildNodes(newElement, origElement);
+            // sadly, we have to reparse all over again
+            // to reregister the event handlers and styles
+            // PENDING do some performance tests on large pages
+            origElement.innerHTML = origElement.innerHTML;
+
+            try {
+                cloneAttributes(origElement, newElement);
+            } catch (ex) {
+                // if in dev mode, report an error, else try to limp onward
+                if (jsf.getProjectStage() == "Development") {
+                    throw new Error("Error updating attributes");
+                }
+            }
+            deleteNode(newElement);
+
+        };
+
+        /**
+         * Create a new document, then select the body element within it
+         * @param docStr Stringified version of document to create
+         * @return element the body element
+         * @ignore
+         */
+        var getBodyElement = function getBodyElement(docStr) {
+
+            var doc;  // intermediate document we'll create
+            var body; // Body element to return
+
+            if (typeof DOMParser !== "undefined") {  // FF, S, Chrome
+                doc = (new DOMParser()).parseFromString(docStr, "text/xml");
+            } else if (typeof ActiveXObject !== "undefined") { // IE
+                doc = new ActiveXObject("MSXML2.DOMDocument");
+                doc.loadXML(docStr);
+            } else {
+                throw new Error("You don't seem to be running a supported browser");
+            }
+
+            if (getParseErrorText(doc) !== PARSED_OK) {
+                throw new Error(getParseErrorText(doc));
+            }
+
+            body = doc.getElementsByTagName("body")[0];
+
+            if (!body) {
+                throw new Error("Can't find body tag in returned document.");
+            }
+
+            return body;
+        };
+
+        /**
+         * Do update.
+         * @param element element to update
+         * @param context context of request
+         * @ignore
+         */
+        var doUpdate = function doUpdate(element, context) {
+            var id, content, markup, state;
+            var stateForm;
+            var scripts = []; // temp holding value for array of script nodes
+
+            id = element.getAttribute('id');
+            if (id === "javax.faces.ViewState") {
+
+                state = element.firstChild;
+
+                // Now set the view state from the server into the DOM
+                // but only for the form that submitted the request.
+
+                stateForm = document.getElementById(context.formid);
+                if (!stateForm || !stateForm.elements) {
+                    // if the form went away for some reason, or it lacks elements 
+                    // we're going to just return silently.
+                    return;
+                }
+                var field = stateForm.elements["javax.faces.ViewState"];
+                if (typeof field == 'undefined') {
+                    field = document.createElement("input");
+                    field.type = "hidden";
+                    field.name = "javax.faces.ViewState";
+                    stateForm.appendChild(field);
+                }
+                field.value = state.nodeValue;
+
+                // Now set the view state from the server into the DOM
+                // for any form that is a render target.
+
+                if (typeof context.render !== 'undefined' && context.render !== null) {
+                    var temp = context.render.split(' ');
+                    for (var i = 0; i < temp.length; i++) {
+                        if (temp.hasOwnProperty(i)) {
+                            // See if the element is a form and
+                            // the form is not the one that caused the submission..
+                            var f = document.forms[temp[i]];
+                            if (typeof f !== 'undefined' && f !== null && f.id !== context.formid) {
+                                field = f.elements["javax.faces.ViewState"];
+                                if (typeof field === 'undefined') {
+                                    field = document.createElement("input");
+                                    field.type = "hidden";
+                                    field.name = "javax.faces.ViewState";
+                                    f.appendChild(field);
+                                }
+                                field.value = state.nodeValue;
+                            }
+                        }
+                    }
+                }
+                return;
+            }
+
+            // join the CDATA sections in the markup
+            markup = '';
+            for (var j = 0; j < element.childNodes.length; j++) {
+                content = element.childNodes[j];
+                markup += content.nodeValue;
+            }
+
+            var src = markup;
+
+            // If our special render all markup is present..
+            if (id === "javax.faces.ViewRoot" || id === "javax.faces.ViewBody") {
+                var bodyStartEx = new RegExp("< *body[^>]*>", "gi");
+                var bodyEndEx = new RegExp("< */ *body[^>]*>", "gi");
+                var newsrc;
+
+                var docBody = document.getElementsByTagName("body")[0];
+                var bodyStart = bodyStartEx.exec(src);
+
+                if (bodyStart !== null) { // replace body tag
+                    // First, try with XML manipulation
+                    try {
+                        // Get scripts from text
+                        scripts = stripScripts(src);
+                        // Remove scripts from text
+                        newsrc = src.replace(/<script[^>]*>([\S\s]*?)<\/script>/igm, "");
+                        elementReplace(getBodyElement(newsrc), docBody);
+                        runScripts(scripts);
+                    } catch (e) {
+                        // OK, replacing the body didn't work with XML - fall back to quirks mode insert
+                        var srcBody, bodyEnd;
+                        // if src contains </body>
+                        bodyEnd = bodyEndEx.exec(src);
+                        if (bodyEnd !== null) {
+                            srcBody = src.substring(bodyStartEx.lastIndex,
+                                    bodyEnd.index);
+                        } else { // can't find the </body> tag, punt
+                            srcBody = src.substring(bodyStartEx.lastIndex);
+                        }
+                        // replace body contents with innerHTML - note, script handling happens within function
+                        elementReplaceStr(docBody, "body", srcBody);
+
+                    }
+
+                } else {  // replace body contents with innerHTML - note, script handling happens within function
+                    elementReplaceStr(docBody, "body", src);
+                }
+            } else if (id === "javax.faces.ViewHead") {
+                throw new Error("javax.faces.ViewHead not supported - browsers cannot reliably replace the head's contents");
+            } else {
+                var d = $(id);
+                if (!d) {
+                    throw new Error("During update: " + id + " not found");
+                }
+                var parent = d.parentNode;
+                // Trim space padding before assigning to innerHTML
+                var html = src.replace(/^\s+/g, '').replace(/\s+$/g, '');
+                var parserElement = document.createElement('div');
+                var tag = d.nodeName.toLowerCase();
+                var tableElements = ['td', 'th', 'tr', 'tbody', 'thead', 'tfoot'];
+                var isInTable = false;
+                for (var tei = 0, tel = tableElements.length; tei < tel; tei++) {
+                    if (tableElements[tei] == tag) {
+                        isInTable = true;
+                        break;
+                    }
+                }
+                if (isInTable) {
+
+                    if (isAutoExec()) {
+                        // Create html
+                        parserElement.innerHTML = '<table>' + html + '</table>';
+                    } else {
+                        // Get the scripts from the text
+                        scripts = stripScripts(html);
+                        // Remove scripts from text
+                        html = html.replace(/<script[^>]*>([\S\s]*?)<\/script>/igm,"");
+                        parserElement.innerHTML = '<table>' + html + '</table>';
+                    }
+                    var newElement = parserElement.firstChild;
+                    //some browsers will also create intermediary elements such as table>tbody>tr>td
+                    while ((null !== newElement) && (id !== newElement.id)) {
+                        newElement = newElement.firstChild;
+                    }
+                    parent.replaceChild(newElement, d);
+                    runScripts(scripts);
+                } else if (d.nodeName.toLowerCase() === 'input') {
+                    // special case handling for 'input' elements
+                    // in order to not lose focus when updating,
+                    // input elements need to be added in place.
+                    parserElement = document.createElement('div');
+                    parserElement.innerHTML = html;
+                    newElement = parserElement.firstChild;
+
+                    cloneAttributes(d, newElement);
+                    deleteNode(parserElement);
+                } else if (html.length > 0) {
+                    if (isAutoExec()) {
+                        // Create html
+                        parserElement.innerHTML = html;
+                    } else {
+                        // Get the scripts from the text
+                        scripts = stripScripts(html);
+                        // Remove scripts from text
+                        html = html.replace(/<script[^>]*>([\S\s]*?)<\/script>/igm,"");
+                        parserElement.innerHTML = html;
+                    }
+                    replaceNode(parserElement.firstChild, d);
+                    deleteNode(parserElement);
+                    runScripts(scripts);
+                }
+            }
+        };
+
+        /**
+         * Delete a node specified by the element.
+         * @param element
+         * @ignore
+         */
+        var doDelete = function doDelete(element) {
+            var id = element.getAttribute('id');
+            var target = $(id);
+            deleteNode(target);
+        };
+
+        /**
+         * Insert a node specified by the element.
+         * @param element
+         * @ignore
+         */
+        var doInsert = function doInsert(element) {
+            var scripts = [];
+            var target = $(element.firstChild.getAttribute('id'));
+            var parent = target.parentNode;
+            var tempElement = document.createElement('span');
+            var html = element.firstChild.firstChild.nodeValue;
+
+            if (isAutoExec()) {
+                // Create html
+                tempElement.innerHTML = html;
+            } else {
+                // Get the scripts from the text
+                scripts = stripScripts(html);
+                // Remove scripts from text
+                html = html.replace(/<script[^>]*>([\S\s]*?)<\/script>/igm,"");
+                tempElement.innerHTML = html;
+            }
+            if (element.firstChild.nodeName === 'after') {
+                // Get the next in the list, to insert before
+                target = target.nextSibling;
+            }  // otherwise, this is a 'before' element
+            if (!!tempElement.innerHTML) { // check if only scripts were inserted - if so, do nothing here
+                parent.insertBefore(tempElement.firstChild, target);
+            }
+            runScripts(scripts);
+            deleteNode(tempElement);
+        };
+
+        /**
+         * Modify attributes of given element id.
+         * @param element
+         * @ignore
+         */
+        var doAttributes = function doAttributes(element) {
+
+            // Get id of element we'll act against
+            var id = element.getAttribute('id');
+
+            var target = $(id);
+
+            if (!target) {
+                throw new Error("The specified id: " + id + " was not found in the page.");
+            }
+
+            // There can be multiple attributes modified.  Loop through the list.
+            var nodes = element.childNodes;
+            for (var i = 0; i < nodes.length; i++) {
+                var name = nodes[i].getAttribute('name');
+                var value = nodes[i].getAttribute('value');
+                if (!isIE()) {
+                    target.setAttribute(name, value);
+                } else { // if it's IE, then quite a bit more work is required
+                    if (name === 'class') {
+                        name = 'className';
+                        target.setAttribute(name, value, 0);
+                    } else if (name === "for") {
+                        name = 'htmlFor';
+                        target.setAttribute(name, value, 0);
+                    } else if (name === 'style') {
+                        target.style.setAttribute('cssText', value, 0);
+                    } else if (name.substring(0, 2) === 'on') {
+                        var fn = function(value) {
+                            return function() {
+                                window.execScript(value);
+                            };
+                        }(value);
+                        target.setAttribute(name, fn, 0);
+                    } else if (name === 'dir') {
+                        if (jsf.getProjectStage() == 'Development') {
+                            throw new Error("Cannot set 'dir' attribute in IE");
+                        }
+                    } else {
+                        target.setAttribute(name, value, 0);
+                    }
+                }
+            }
+        };
+
+        /**
+         * Eval the CDATA of the element.
+         * @param element to eval
+         * @ignore
+         */
+        var doEval = function doEval(element) {
+            var evalText = element.firstChild.nodeValue;
+            globalEval(evalText);
+        };
+
+        /**
+         * Ajax Request Queue
+         * @ignore
+         */
+        var Queue = new function Queue() {
+
+            // Create the internal queue
+            var queue = [];
+
+
+            // the amount of space at the front of the queue, initialised to zero
+            var queueSpace = 0;
+
+            /** Returns the size of this Queue. The size of a Queue is equal to the number
+             * of elements that have been enqueued minus the number of elements that have
+             * been dequeued.
+             * @ignore
+             */
+            this.getSize = function getSize() {
+                return queue.length - queueSpace;
+            };
+
+            /** Returns true if this Queue is empty, and false otherwise. A Queue is empty
+             * if the number of elements that have been enqueued equals the number of
+             * elements that have been dequeued.
+             * @ignore
+             */
+            this.isEmpty = function isEmpty() {
+                return (queue.length === 0);
+            };
+
+            /** Enqueues the specified element in this Queue.
+             *
+             * @param element - the element to enqueue
+             * @ignore
+             */
+            this.enqueue = function enqueue(element) {
+                // Queue the request
+                queue.push(element);
+            };
+
+
+            /** Dequeues an element from this Queue. The oldest element in this Queue is
+             * removed and returned. If this Queue is empty then undefined is returned.
+             *
+             * @returns Object The element that was removed from the queue.
+             * @ignore
+             */
+            this.dequeue = function dequeue() {
+                // initialise the element to return to be undefined
+                var element = undefined;
+
+                // check whether the queue is empty
+                if (queue.length) {
+                    // fetch the oldest element in the queue
+                    element = queue[queueSpace];
+
+                    // update the amount of space and check whether a shift should occur
+                    if (++queueSpace * 2 >= queue.length) {
+                        // set the queue equal to the non-empty portion of the queue
+                        queue = queue.slice(queueSpace);
+                        // reset the amount of space at the front of the queue
+                        queueSpace = 0;
+                    }
+                }
+                // return the removed element
+                try {
+                    return element;
+                } finally {
+                    element = null; // IE 6 leak prevention
+                }
+            };
+
+            /** Returns the oldest element in this Queue. If this Queue is empty then
+             * undefined is returned. This function returns the same value as the dequeue
+             * function, but does not remove the returned element from this Queue.
+             * @ignore
+             */
+            this.getOldestElement = function getOldestElement() {
+                // initialise the element to return to be undefined
+                var element = undefined;
+
+                // if the queue is not element then fetch the oldest element in the queue
+                if (queue.length) {
+                    element = queue[queueSpace];
+                }
+                // return the oldest element
+                try {
+                    return element;
+                } finally {
+                    element = null; //IE 6 leak prevention
+                }
+            };
+        }();
+
+
+        /**
+         * AjaxEngine handles Ajax implementation details.
+         * @ignore
+         */
+        var AjaxEngine = function AjaxEngine() {
+
+            var req = {};                  // Request Object
+            req.url = null;                // Request URL
+            req.context = {};              // Context of request and response
+            req.context.sourceid = null;   // Source of this request
+            req.context.onerror = null;    // Error handler for request
+            req.context.onevent = null;    // Event handler for request
+            req.context.formid = null;     // Form that's the context for this request
+            req.xmlReq = null;             // XMLHttpRequest Object
+            req.async = true;              // Default - Asynchronous
+            req.parameters = {};           // Parameters For GET or POST
+            req.queryString = null;        // Encoded Data For GET or POST
+            req.method = null;             // GET or POST
+            req.status = null;             // Response Status Code From Server
+            req.fromQueue = false;         // Indicates if the request was taken off the queue
+            // before being sent.  This prevents the request from
+            // entering the queue redundantly.
+
+            req.que = Queue;
+
+            // Get an XMLHttpRequest Handle
+            req.xmlReq = getTransport();
+            if (req.xmlReq === null) {
+                return null;
+            }
+
+            function noop() {}
+            
+            // Set up request/response state callbacks
+            /**
+             * @ignore
+             */
+            req.xmlReq.onreadystatechange = function() {
+                if (req.xmlReq.readyState === 4) {
+                    req.onComplete();
+                    // next two lines prevent closure/ciruclar reference leaks
+                    // of XHR instances in IE
+                    req.xmlReq.onreadystatechange = noop;
+                    req.xmlReq = null;
+                }
+            };
+
+            /**
+             * This function is called when the request/response interaction
+             * is complete.  If the return status code is successfull,
+             * dequeue all requests from the queue that have completed.  If a
+             * request has been found on the queue that has not been sent,
+             * send the request.
+             * @ignore
+             */
+            req.onComplete = function onComplete() {
+                if (req.xmlReq.status && (req.xmlReq.status >= 200 && req.xmlReq.status < 300)) {
+                    sendEvent(req.xmlReq, req.context, "complete");
+                    jsf.ajax.response(req.xmlReq, req.context);
+                } else {
+                    sendEvent(req.xmlReq, req.context, "complete");
+                    sendError(req.xmlReq, req.context, "httpError");
+                }
+
+                // Regardless of whether the request completed successfully (or not),
+                // dequeue requests that have been completed (readyState 4) and send
+                // requests that ready to be sent (readyState 0).
+
+                var nextReq = req.que.getOldestElement();
+                if (nextReq === null || typeof nextReq === 'undefined') {
+                    return;
+                }
+                while ((typeof nextReq.xmlReq !== 'undefined' && nextReq.xmlReq !== null) &&
+                       nextReq.xmlReq.readyState === 4) {
+                    req.que.dequeue();
+                    nextReq = req.que.getOldestElement();
+                    if (nextReq === null || typeof nextReq === 'undefined') {
+                        break;
+                    }
+                }
+                if (nextReq === null || typeof nextReq === 'undefined') {
+                    return;
+                }
+                if ((typeof nextReq.xmlReq !== 'undefined' && nextReq.xmlReq !== null) &&
+                    nextReq.xmlReq.readyState === 0) {
+                    nextReq.fromQueue = true;
+                    nextReq.sendRequest();
+                }
+            };
+
+            /**
+             * Utility method that accepts additional arguments for the AjaxEngine.
+             * If an argument is passed in that matches an AjaxEngine property, the
+             * argument value becomes the value of the AjaxEngine property.
+             * Arguments that don't match AjaxEngine properties are added as
+             * request parameters.
+             * @ignore
+             */
+            req.setupArguments = function(args) {
+                for (var i in args) {
+                    if (args.hasOwnProperty(i)) {
+                        if (typeof req[i] === 'undefined') {
+                            req.parameters[i] = args[i];
+                        } else {
+                            req[i] = args[i];
+                        }
+                    }
+                }
+            };
+
+            /**
+             * This function does final encoding of parameters, determines the request method
+             * (GET or POST) and sends the request using the specified url.
+             * @ignore
+             */
+            req.sendRequest = function() {
+                if (req.xmlReq !== null) {
+                    // if there is already a request on the queue waiting to be processed..
+                    // just queue this request
+                    if (!req.que.isEmpty()) {
+                        if (!req.fromQueue) {
+                            req.que.enqueue(req);
+                            return;
+                        }
+                    }
+                    // If the queue is empty, queue up this request and send
+                    if (!req.fromQueue) {
+                        req.que.enqueue(req);
+                    }
+                    // Some logic to get the real request URL
+                    if (req.generateUniqueUrl && req.method == "GET") {
+                        req.parameters["AjaxRequestUniqueId"] = new Date().getTime() + "" + req.requestIndex;
+                    }
+                    var content = null; // For POST requests, to hold query string
+                    for (var i in req.parameters) {
+                        if (req.parameters.hasOwnProperty(i)) {
+                            if (req.queryString.length > 0) {
+                                req.queryString += "&";
+                            }
+                            req.queryString += encodeURIComponent(i) + "=" + encodeURIComponent(req.parameters[i]);
+                        }
+                    }
+                    if (req.method === "GET") {
+                        if (req.queryString.length > 0) {
+                            req.url += ((req.url.indexOf("?") > -1) ? "&" : "?") + req.queryString;
+                        }
+                    }
+                    req.xmlReq.open(req.method, req.url, req.async);
+                    if (req.method === "POST") {
+                        if (typeof req.xmlReq.setRequestHeader !== 'undefined') {
+                            req.xmlReq.setRequestHeader('Faces-Request', 'partial/ajax');
+                            req.xmlReq.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
+                        }
+                        content = req.queryString;
+                    }
+                    // note that async == false is not a supported feature.  We may change it in ways
+                    // that break existing programs at any time, with no warning.
+                    if(!req.async) {
+                        req.xmlReq.onreadystatechange = null; // no need for readystate change listening
+                    }
+                    sendEvent(req.xmlReq, req.context, "begin");
+                    req.xmlReq.send(content);
+                    if(!req.async){
+                        req.onComplete();
+                }
+                }
+            };
+
+            return req;
+        };
+
+        /**
+         * Error handling callback.
+         * Assumes that the request has completed.
+         * @ignore
+         */
+        var sendError = function sendError(request, context, status, description, serverErrorName, serverErrorMessage) {
+
+            // Possible errornames:
+            // httpError
+            // emptyResponse
+            // serverError
+            // malformedXML
+
+            var sent = false;
+            var data = {};  // data payload for function
+            data.type = "error";
+            data.status = status;
+            data.source = context.sourceid;
+            data.responseCode = request.status;
+            data.responseXML = request.responseXML;
+            data.responseText = request.responseText;
+
+            // ensure data source is the dom element and not the ID
+            // per 14.4.1 of the 2.0 specification.
+            if (typeof data.source === 'string') {
+                data.source = document.getElementById(data.source);
+            }
+
+            if (description) {
+                data.description = description;
+            } else if (status == "httpError") {
+                if (data.responseCode === 0) {
+                    data.description = "The Http Transport returned a 0 status code.  This is usually the result of mixing ajax and full requests.  This is usually undesired, for both performance and data integrity reasons.";
+                } else {
+                    data.description = "There was an error communicating with the server, status: " + data.responseCode;
+                }
+            } else if (status == "serverError") {
+                data.description = serverErrorMessage;
+            } else if (status == "emptyResponse") {
+                data.description = "An empty response was received from the server.  Check server error logs.";
+            } else if (status == "malformedXML") {
+                if (getParseErrorText(data.responseXML) !== PARSED_OK) {
+                    data.description = getParseErrorText(data.responseXML);
+                } else {
+                    data.description = "An invalid XML response was received from the server.";
+                }
+            }
+
+            if (status == "serverError") {
+                data.errorName = serverErrorName;
+                data.errorMessage = serverErrorMessage;
+            }
+
+            // If we have a registered callback, send the error to it.
+            if (context.onerror) {
+                context.onerror.call(null, data);
+                sent = true;
+            }
+
+            for (var i in errorListeners) {
+                if (errorListeners.hasOwnProperty(i)) {
+                    errorListeners[i].call(null, data);
+                    sent = true;
+                }
+            }
+
+            if (!sent && jsf.getProjectStage() === "Development") {
+                if (status == "serverError") {
+                    alert("serverError: " + serverErrorName + " " + serverErrorMessage);
+                } else {
+                    alert(status + ": " + data.description);
+                }
+            }
+        };
+
+        /**
+         * Event handling callback.
+         * Request is assumed to have completed, except in the case of event = 'begin'.
+         * @ignore
+         */
+        var sendEvent = function sendEvent(request, context, status) {
+
+            var data = {};
+            data.type = "event";
+            data.status = status;
+            data.source = context.sourceid;
+            // ensure data source is the dom element and not the ID
+            // per 14.4.1 of the 2.0 specification.
+            if (typeof data.source === 'string') {
+                data.source = document.getElementById(data.source);
+            }
+            if (status !== 'begin') {
+                data.responseCode = request.status;
+                data.responseXML = request.responseXML;
+                data.responseText = request.responseText;
+            }
+
+            if (context.onevent) {
+                context.onevent.call(null, data);
+            }
+
+            for (var i in eventListeners) {
+                if (eventListeners.hasOwnProperty(i)) {
+                    eventListeners[i].call(null, data);
+                }
+            }
+        };
+
+        // Use module pattern to return the functions we actually expose
+        return {
+            /**
+             * Register a callback for error handling.
+             * <p><b>Usage:</b></p>
+             * <pre><code>
+             * jsf.ajax.addOnError(handleError);
+             * ...
+             * var handleError = function handleError(data) {
+             * ...
+             * }
+             * </pre></code>
+             * <p><b>Implementation Requirements:</b></p>
+             * This function must accept a reference to an existing JavaScript function.
+             * The JavaScript function reference must be added to a list of callbacks, making it possible
+             * to register more than one callback by invoking <code>jsf.ajax.addOnError</code>
+             * more than once.  This function must throw an error if the <code>callback</code>
+             * argument is not a function.
+             *
+             * @member jsf.ajax
+             * @param callback a reference to a function to call on an error
+             */
+            addOnError: function addOnError(callback) {
+                if (typeof callback === 'function') {
+                    errorListeners[errorListeners.length] = callback;
+                } else {
+                    throw new Error("jsf.ajax.addOnError:  Added a callback that was not a function.");
+                }
+            },
+            /**
+             * Register a callback for event handling.
+             * <p><b>Usage:</b></p>
+             * <pre><code>
+             * jsf.ajax.addOnEvent(statusUpdate);
+             * ...
+             * var statusUpdate = function statusUpdate(data) {
+             * ...
+             * }
+             * </pre></code>
+             * <p><b>Implementation Requirements:</b></p>
+             * This function must accept a reference to an existing JavaScript function.
+             * The JavaScript function reference must be added to a list of callbacks, making it possible
+             * to register more than one callback by invoking <code>jsf.ajax.addOnEvent</code>
+             * more than once.  This function must throw an error if the <code>callback</code>
+             * argument is not a function.
+             *
+             * @member jsf.ajax
+             * @param callback a reference to a function to call on an event
+             */
+            addOnEvent: function addOnEvent(callback) {
+                if (typeof callback === 'function') {
+                    eventListeners[eventListeners.length] = callback;
+                } else {
+                    throw new Error("jsf.ajax.addOnEvent: Added a callback that was not a function");
+                }
+            },
+            /**
+             * <p>Send an asynchronous Ajax request to the server.
+             * <p><b>Usage:</b></p>
+             * <pre><code>
+             * Example showing all optional arguments:
+             *
+             * <commandButton id="button1" value="submit"
+             *     onclick="jsf.ajax.request(this,event,
+             *       {execute:'button1',render:'status',onevent: handleEvent,onerror: handleError});return false;"/>
+             * </commandButton/>
+             * </pre></code>
+             * <p><b>Implementation Requirements:</b></p>
+             * This function must:
+             * <ul>
+             * <li>Be used within the context of a <code>form</code>.</li>
+             * <li>Capture the element that triggered this Ajax request
+             * (from the <code>source</code> argument, also known as the
+             * <code>source</code> element.</li>
+             * <li>If the <code>source</code> element is <code>null</code> or
+             * <code>undefined</code> throw an error.</li>
+             * <li>If the <code>source</code> argument is not a <code>string</code> or
+             * DOM element object, throw an error.</li>
+             * <li>If the <code>source</code> argument is a <code>string</code>, find the
+             * DOM element for that <code>string</code> identifier.
+             * <li>If the DOM element could not be determined, throw an error.</li>
+             * <li>If the <code>onerror</code> and <code>onevent</code> arguments are set,
+             * they must be functions, or throw an error.
+             * <li>Determine the <code>source</code> element's <code>form</code>
+             * element.</li>
+             * <li>Get the <code>form</code> view state by calling
+             * {@link jsf.getViewState} passing the
+             * <code>form</code> element as the argument.</li>
+             * <li>Collect post data arguments for the Ajax request.
+             * <ul>
+             * <li>The following name/value pairs are required post data arguments:
+             * <table border="1">
+             * <tr>
+             * <th>name</th>
+             * <th>value</th>
+             * </tr>
+             * <tr>
+             * <td><code>javax.faces.ViewState</code></td>
+             * <td><code>Contents of javax.faces.ViewState hidden field.  This is included when
+             * {@link jsf.getViewState} is used.</code></td>
+             * </tr>
+             * <tr>
+             * <td><code>javax.faces.partial.ajax</code></td>
+             * <td><code>true</code></td>
+             * </tr>
+             * <tr>
+             * <td><code>javax.faces.source</code></td>
+             * <td><code>The identifier of the element that triggered this request.</code></td>
+             * </tr>
+             * </table>
+             * </li>
+             * </ul>
+             * </li>
+             * <li>Collect optional post data arguments for the Ajax request.
+             * <ul>
+             * <li>Determine additional arguments (if any) from the <code>options</code>
+             * argument. If <code>options.execute</code> exists:
+             * <ul>
+             * <li>If the keyword <code>@none</code> is present, do not create and send
+             * the post data argument <code>javax.faces.partial.execute</code>.</li>
+             * <li>If the keyword <code>@all</code> is present, create the post data argument with
+             * the name <code>javax.faces.partial.execute</code> and the value <code>@all</code>.</li>
+             * <li>Otherwise, there are specific identifiers that need to be sent.  Create the post
+             * data argument with the name <code>javax.faces.partial.execute</code> and the value as a
+             * space delimited <code>string</code> of client identifiers.</li>
+             * </ul>
+             * </li>
+             * <li>If <code>options.execute</code> does not exist, create the post data argument with the
+             * name <code>javax.faces.partial.execute</code> and the value as the identifier of the
+             * element that caused this request.</li>
+             * <li>If <code>options.render</code> exists:
+             * <ul>
+             * <li>If the keyword <code>@none</code> is present, do not create and send
+             * the post data argument <code>javax.faces.partial.render</code>.</li>
+             * <li>If the keyword <code>@all</code> is present, create the post data argument with
+             * the name <code>javax.faces.partial.render</code> and the value <code>@all</code>.</li>
+             * <li>Otherwise, there are specific identifiers that need to be sent.  Create the post
+             * data argument with the name <code>javax.faces.partial.render</code> and the value as a
+             * space delimited <code>string</code> of client identifiers.</li>
+             * </ul>
+             * <li>If <code>options.render</code> does not exist do not create and send the
+             * post data argument <code>javax.faces.partial.render</code>.</li>
+             * <li>Determine additional arguments (if any) from the <code>event</code>
+             * argument.  The following name/value pairs may be used from the
+             * <code>event</code> object:
+             * <ul>
+             * <li><code>target</code> - the ID of the element that triggered the event.</li>
+             * <li><code>captured</code> - the ID of the element that captured the event.</li>
+             * <li><code>type</code> - the type of event (ex: onkeypress)</li>
+             * <li><code>alt</code> - <code>true</code> if ALT key was pressed.</li>
+             * <li><code>ctrl</code> - <code>true</code> if CTRL key was pressed.</li>
+             * <li><code>shift</code> - <code>true</code> if SHIFT key was pressed. </li>
+             * <li><code>meta</code> - <code>true</code> if META key was pressed. </li>
+             * <li><code>right</code> - <code>true</code> if right mouse button
+             * was pressed. </li>
+             * <li><code>left</code> - <code>true</code> if left mouse button
+             * was pressed. </li>
+             * <li><code>keycode</code> - the key code.
+             * </ul>
+             * </li>
+             * </ul>
+             * </li>
+             * <li>Encode the set of post data arguments.</li>
+             * <li>Join the encoded view state with the encoded set of post data arguments
+             * to form the <code>query string</code> that will be sent to the server.</li>
+             * <li>Create a request <code>context</code> object and set the properties:
+             * <ul><li><code>source</code> (the source DOM element for this request)</li>
+             * <li><code>onerror</code> (the error handler for this request)</li>
+             * <li><code>onevent</code> (the event handler for this request)</li></ul>
+             * The request context will be used during error/event handling.</li>
+             * <li>Send a <code>begin</code> event following the procedure as outlined
+             * in the Chapter 13 "Sending Events" section of the spec prose document <a
+             *  href="../../javadocs/overview-summary.html#prose_document">linked in the
+             *  overview summary</a></li>
+             * <li>Set the request header with the name: <code>Faces-Request</code> and the
+             * value: <code>partial/ajax</code>.</li>
+             * <li>Determine the <code>posting URL</code> as follows: If the hidden field
+             * <code>javax.faces.encodedURL</code> is present in the submitting form, use its
+             * value as the <code>posting URL</code>.  Otherwise, use the <code>action</code>
+             * property of the <code>form</code> element as the <code>URL</code>.</li>
+             * <li>Send the request as an <code>asynchronous POST</code> using the
+             * <code>posting URL</code> that was determined in the previous step.</li>
+             * </ul>
+             * Form serialization should occur just before the request is sent to minimize 
+             * the amount of time between the creation of the serialized form data and the 
+             * sending of the serialized form data (in the case of long requests in the queue).
+             * Before the request is sent it must be put into a queue to ensure requests
+             * are sent in the same order as when they were initiated.  The request callback function
+             * must examine the queue and determine the next request to be sent.  The behavior of the
+             * request callback function must be as follows:
+             * <ul>
+             * <li>If the request completed successfully invoke {@link jsf.ajax.response}
+             * passing the <code>request</code> object.</li>
+             * <li>If the request did not complete successfully, notify the client.</li>
+             * <li>Regardless of the outcome of the request (success or error) every request in the
+             * queue must be handled.  Examine the status of each request in the queue starting from
+             * the request that has been in the queue the longest.  If the status of the request is
+             * <code>complete</code> (readyState 4), dequeue the request (remove it from the queue).
+             * If the request has not been sent (readyState 0), send the request.  Requests that are
+             * taken off the queue and sent should not be put back on the queue.</li>
+             * </ul>
+             *
+             * </p>
+             *
+             * @param source The DOM element that triggered this Ajax request, or an id string of the
+             * element to use as the triggering element.
+             * @param event The DOM event that triggered this Ajax request.  The
+             * <code>event</code> argument is optional.
+             * @param options The set of available options that can be sent as
+             * request parameters to control client and/or server side
+             * request processing. Acceptable name/value pair options are:
+             * <table border="1">
+             * <tr>
+             * <th>name</th>
+             * <th>value</th>
+             * </tr>
+             * <tr>
+             * <td><code>execute</code></td>
+             * <td><code>space seperated list of client identifiers</code></td>
+             * </tr>
+             * <tr>
+             * <td><code>render</code></td>
+             * <td><code>space seperated list of client identifiers</code></td>
+             * </tr>
+             * <tr>
+             * <td><code>onevent</code></td>
+             * <td><code>function to callback for event</code></td>
+             * </tr>
+             * <tr>
+             * <td><code>onerror</code></td>
+             * <td><code>function to callback for error</code></td>
+             * </tr>
+             * <tr>
+             * <td><code>params</code></td>
+             * <td><code>object containing parameters to include in the request</code></td>
+             * </tr>
+             * </table>
+             * The <code>options</code> argument is optional.
+             * @member jsf.ajax
+             * @function jsf.ajax.request
+             * @throws Error if first required argument <code>element</code> is not specified
+             */
+            request: function request(source, event, options) {
+
+                var element, form;   //  Element variables
+                var all, none;
+
+                if (typeof source === 'undefined' || source === null) {
+                    throw new Error("jsf.ajax.request: source not set");
+                }
+
+                // set up the element based on source
+                if (typeof source === 'string') {
+                    element = document.getElementById(source);
+                } else if (typeof source === 'object') {
+                    element = source;
+                } else {
+                    throw new Error("jsf.request: source must be object or string");
+                }
+                // attempt to handle case of name unset
+                // this might be true in a badly written composite component
+                if (!element.name) {
+                    element.name = element.id;
+                }
+
+                if (typeof(options) === 'undefined' || options === null) {
+                    options = {};
+                }
+
+                // Error handler for this request
+                var onerror = false;
+
+                if (options.onerror && typeof options.onerror === 'function') {
+                    onerror = options.onerror;
+                } else if (options.onerror && typeof options.onerror !== 'function') {
+                    throw new Error("jsf.ajax.request: Added an onerror callback that was not a function");
+                }
+
+                // Event handler for this request
+                var onevent = false;
+
+                if (options.onevent && typeof options.onevent === 'function') {
+                    onevent = options.onevent;
+                } else if (options.onevent && typeof options.onevent !== 'function') {
+                    throw new Error("jsf.ajax.request: Added an onevent callback that was not a function");
+                }
+
+                form = getForm(element);
+                if (!form) {
+                    throw new Error("jsf.ajax.request: Method must be called within a form");
+                }
+                var viewState = jsf.getViewState(form);
+
+                // Set up additional arguments to be used in the request..
+                // Make sure "javax.faces.source" is set up.
+                // If there were "execute" ids specified, make sure we
+                // include the identifier of the source element in the
+                // "execute" list.  If there were no "execute" ids
+                // specified, determine the default.
+
+                var args = {};
+
+                args["javax.faces.source"] = element.id;
+
+                if (event && !!event.type) {
+                    args["javax.faces.partial.event"] = event.type;
+                }
+
+                // If we have 'execute' identifiers:
+                // Handle any keywords that may be present.
+                // If @none present anywhere, do not send the
+                // "javax.faces.partial.execute" parameter.
+                // The 'execute' and 'render' lists must be space
+                // delimited.
+
+                if (options.execute) {
+                    none = options.execute.search(/@none/);
+                    if (none < 0) {
+                        all = options.execute.search(/@all/);
+                        if (all < 0) {
+                            options.execute = options.execute.replace("@this", element.id);
+                            options.execute = options.execute.replace("@form", form.id);
+                            var temp = options.execute.split(' ');
+                            if (!isInArray(temp, element.name)) {
+                                options.execute = element.name + " " + options.execute;
+                            }
+                        } else {
+                            options.execute = "@all";
+                        }
+                        args["javax.faces.partial.execute"] = options.execute;
+                    }
+                } else {
+                    options.execute = element.name + " " + element.id;
+                    args["javax.faces.partial.execute"] = options.execute;
+                }
+
+                if (options.render) {
+                    none = options.render.search(/@none/);
+                    if (none < 0) {
+                        all = options.render.search(/@all/);
+                        if (all < 0) {
+                            options.render = options.render.replace("@this", element.id);
+                            options.render = options.render.replace("@form", form.id);
+                        } else {
+                            options.render = "@all";
+                        }
+                        args["javax.faces.partial.render"] = options.render;
+                    }
+                }
+
+                // remove non-passthrough options
+                delete options.execute;
+                delete options.render;
+                delete options.onerror;
+                delete options.onevent;
+                // copy all other options to args
+                for (var property in options) {
+                    if (options.hasOwnProperty(property)) {
+                        args[property] = options[property];
+                    }
+                }
+
+                args["javax.faces.partial.ajax"] = "true";
+                args["method"] = "POST";
+
+                // Determine the posting url
+
+                var encodedUrlField = form.elements["javax.faces.encodedURL"];
+                if (typeof encodedUrlField == 'undefined') {
+                    args["url"] = form.action;
+                } else {
+                    args["url"] = encodedUrlField.value;
+                }
+
+                var ajaxEngine = new AjaxEngine();
+                ajaxEngine.setupArguments(args);
+                ajaxEngine.queryString = viewState;
+                ajaxEngine.context.onevent = onevent;
+                ajaxEngine.context.onerror = onerror;
+                ajaxEngine.context.sourceid = element.id;
+                ajaxEngine.context.formid = form.id;
+                ajaxEngine.context.render = args["javax.faces.partial.render"];
+                ajaxEngine.sendRequest();
+
+                // null out element variables to protect against IE memory leak
+                element = null;
+                form = null;
+
+            },
+            /**
+             * <p>Receive an Ajax response from the server.
+             * <p><b>Usage:</b></p>
+             * <pre><code>
+             * jsf.ajax.response(request, context);
+             * </pre></code>
+             * <p><b>Implementation Requirements:</b></p>
+             * This function must evaluate the markup returned in the
+             * <code>request.responseXML</code> object and perform the following action:
+             * <ul>
+             * <p>If there is no XML response returned, signal an <code>emptyResponse</code>
+             * error. If the XML response does not follow the format as outlined
+             * in Appendix A of the spec prose document <a
+             *  href="../../javadocs/overview-summary.html#prose_document">linked in the
+             *  overview summary</a> signal a <code>malformedError</code> error.  Refer to
+             * section "Signaling Errors" in Chapter 13 of the spec prose document <a
+             *  href="../../javadocs/overview-summary.html#prose_document">linked in the
+             *  overview summary</a>.</p>
+             * <p>If the response was successfully processed, send a <code>success</code>
+             * event as outlined in Chapter 13 "Sending Events" section of the spec prose
+             * document <a
+             * href="../../javadocs/overview-summary.html#prose_document">linked in the
+             * overview summary</a>.</p>
+             * <p><i>Update Element Processing</i></p>
+             * The <code>update</code> element is used to update a single DOM element.  The
+             * "id" attribute of the <code>update</code> element refers to the DOM element that
+             * will be updated.  The contents of the <code>CDATA</code> section is the data that 
+             * will be used when updating the contents of the DOM element as specified by the
+             * <code><update></code> element identifier.
+             * <li>If an <code>update</code> element is found in the response
+             * with the identifier <code>javax.faces.ViewRoot</code>:
+             * <pre><code><update id="javax.faces.ViewRoot">
+             *    <![CDATA[...]]>
+             * </update></code></pre>
+             * Update the entire DOM replacing the appropriate <code>head</code> and/or
+             * <code>body</code> sections with the content from the response.</li>
+             * <li>If an <code>update</code> element is found in the response with the identifier
+             * <code>javax.faces.ViewState</code>:
+             * <pre><code><update id="javax.faces.ViewState">
+             *    <![CDATA[...]]>
+             * </update></code></pre>
+             * locate and update the submitting form's <code>javax.faces.ViewState</code> value
+             * with the <code>CDATA</code> contents from the response.  Locate and update the 
+             * <code>javax.faces.ViewState</code> value for all forms specified in the 
+             * <code>render</code> target list.</li>
+             * <li>If an <code>update</code> element is found in the response with the identifier
+             * <code>javax.faces.ViewHead</code>:
+             * <pre><code><update id="javax.faces.ViewHead">
+             *    <![CDATA[...]]>
+             * </update></code></pre>
+             * update the document's <code>head</code> section with the <code>CDATA</code>
+             * contents from the response.</li>
+             * <li>If an <code>update</code> element is found in the response with the identifier
+             * <code>javax.faces.ViewBody</code>:
+             * <pre><code><update id="javax.faces.ViewBody">
+             *    <![CDATA[...]]>
+             * </update></code></pre>
+             * update the document's <code>body</code> section with the <code>CDATA</code>
+             * contents from the response.</li>
+             * <li>For any other <code><update></code> element:
+             * <pre><code><update id="update id">
+             *    <![CDATA[...]]>
+             * </update></code></pre>
+             * Find the DOM element with the identifier that matches the
+             * <code><update></code> element identifier, and replace its contents with
+             * the <code><update></code> element's <code>CDATA</code> contents.</li>
+             * </li>
+             * <p><i>Insert Element Processing</i></p>
+             * <li>If an <code><insert></code> element is found in the response with the
+             * attribute <code>before</code>:
+             * <pre><code><insert id="insert id" before="before id">
+             *    <![CDATA[...]]>
+             * </insert></code></pre>
+             * <ul>
+             * <li>Extract this <code><insert></code> element's <code>CDATA</code> contents
+             * from the response.</li>
+             * <li>Find the DOM element whose identifier matches <code>before id</code> and insert
+             * the <code><insert></code> element's <code>CDATA</code> content before
+             * the DOM element in the document.</li>
+             * </ul>
+             * </li>
+             * <li>If an <code><insert></code> element is found in the response with the
+             * attribute <code>after</code>:
+             * <pre><code><insert id="insert id" after="after id">
+             *    <![CDATA[...]]>
+             * </insert></code></pre>
+             * <ul>
+             * <li>Extract this <code><insert></code> element's <code>CDATA</code> contents
+             * from the response.</li>
+             * <li>Find the DOM element whose identifier matches <code>after id</code> and insert
+             * the <code><insert></code> element's <code>CDATA</code> content after
+             * the DOM element in the document.</li>
+             * </ul>
+             * </li>
+             * <p><i>Delete Element Processing</i></p>
+             * <li>If a <code><delete></code> element is found in the response:
+             * <pre><code><delete id="delete id"/></code></pre>
+             * Find the DOM element whose identifier matches <code>delete id</code> and remove it
+             * from the DOM.</li>
+             * <p><i>Element Attribute Update Processing</i></p>
+             * <li>If an <code><attributes></code> element is found in the response:
+             * <pre><code><attributes id="id of element with attribute">
+             *    <attribute name="attribute name" value="attribute value">
+             *    ...
+             * &lt/attributes></code></pre>
+             * <ul>
+             * <li>Find the DOM element that matches the <code><attributes></code> identifier.</li>
+             * <li>For each nested <code><attribute></code> element in <code><attribute></code>,
+             * update the DOM element attribute value (whose name matches <code>attribute name</code>),
+             * with <code>attribute value</code>.</li>
+             * </ul>
+             * </li>
+             * <p><i>JavaScript Processing</i></p>
+             * <li>If an <code><eval></code> element is found in the response:
+             * <pre><code><eval>
+             *    <![CDATA[...JavaScript...]]>
+             * </eval></code></pre>
+             * <ul>
+             * <li>Extract this <code><eval></code> element's <code>CDATA</code> contents
+             * from the response and execute it as if it were JavaScript code.</li>
+             * </ul>
+             * </li>
+             * <p><i>Redirect Processing</i></p>
+             * <li>If a <code><redirect></code> element is found in the response:
+             * <pre><code><redirect url="redirect url"/></code></pre>
+             * Cause a redirect to the url <code>redirect url</code>.</li>
+             * <p><i>Error Processing</i></p>
+             * <li>If an <code><error></code> element is found in the response:
+             * <pre><code><error>
+             *    <error-name>..fully qualified class name string...<error-name>
+             *    <error-message><![CDATA[...]]><error-message>
+             * </error></code></pre>
+             * Extract this <code><error></code> element's <code>error-name</code> contents
+             * and the <code>error-message</code> contents. Signal a <code>serverError</code> passing
+             * the <code>errorName</code> and <code>errorMessage</code>.  Refer to
+             * section "Signaling Errors" in Chapter 13 of the spec prose document <a
+             *  href="../../javadocs/overview-summary.html#prose_document">linked in the
+             *  overview summary</a>.</li>
+             * <p><i>Extensions</i></p>
+             * <li>The <code><extensions></code> element provides a way for framework
+             * implementations to provide their own information.</li>
+             * <p><li>The implementation must check if <script> elements in the response can
+             * be automatically run, as some browsers support this feature and some do not.  
+             * If they can not be run, then scripts should be extracted from the response and
+             * run separately.</li></p> 
+             * </ul>
+             *
+             * </p>
+             *
+             * @param request The <code>XMLHttpRequest</code> instance that
+             * contains the status code and response message from the server.
+             *
+             * @param context An object containing the request context, including the following properties:
+             * the source element, per call onerror callback function, and per call onevent callback function.
+             *
+             * @throws  Error if request contains no data
+             *
+             * @function jsf.ajax.response
+             */
+            response: function response(request, context) {
+                if (!request) {
+                    throw new Error("jsf.ajax.response: Request parameter is unset");
+                }
+
+                // ensure context source is the dom element and not the ID
+                // per 14.4.1 of the 2.0 specification.  We're doing it here
+                // *before* any errors or events are propagated becasue the
+                // DOM element may be removed after the update has been processed.
+                if (typeof context.sourceid === 'string') {
+                    context.sourceid = document.getElementById(context.sourceid);
+                }
+
+                var xml = request.responseXML;
+                if (xml === null) {
+                    sendError(request, context, "emptyResponse");
+                    return;
+                }
+
+                if (getParseErrorText(xml) !== PARSED_OK) {
+                    sendError(request, context, "malformedXML");
+                    return;
+                }
+
+                var responseType = xml.getElementsByTagName("partial-response")[0].firstChild;
+
+                if (responseType.nodeName === "error") { // it's an error
+                    var errorName = responseType.firstChild.firstChild.nodeValue;
+                    var errorMessage = responseType.firstChild.nextSibling.firstChild.nodeValue;
+                    sendError(request, context, "serverError", null, errorName, errorMessage);
+                    sendEvent(request, context, "success");
+                    return;
+                }
+
+
+                if (responseType.nodeName === "redirect") {
+                    window.location = responseType.getAttribute("url");
+                    return;
+                }
+
+
+                if (responseType.nodeName !== "changes") {
+                    sendError(request, context, "malformedXML", "Top level node must be one of: changes, redirect, error, received: " + responseType.nodeName + " instead.");
+                    return;
+                }
+
+
+                var changes = responseType.childNodes;
+
+                try {
+                    for (var i = 0; i < changes.length; i++) {
+                        switch (changes[i].nodeName) {
+                            case "update":
+                                doUpdate(changes[i], context);
+                                break;
+                            case "delete":
+                                doDelete(changes[i]);
+                                break;
+                            case "insert":
+                                doInsert(changes[i]);
+                                break;
+                            case "attributes":
+                                doAttributes(changes[i]);
+                                break;
+                            case "eval":
+                                doEval(changes[i]);
+                                break;
+                            case "extension":
+                                // no action
+                                break;
+                            default:
+                                sendError(request, context, "malformedXML", "Changes allowed are: update, delete, insert, attributes, eval, extension.  Received " + changes[i].nodeName + " instead.");
+                                return;
+                        }
+                    }
+                } catch (ex) {
+                    sendError(request, context, "malformedXML", ex.message);
+                    return;
+                }
+                sendEvent(request, context, "success");
+
+            },
+
+            /**
+             * Test function for testing private deleteNode function.
+             */
+            testDeleteNode: function testDeleteNode(element) {
+                deleteNode(element);
+            }
+
+
+        };
+    }();
+
+    /**
+     *
+     * <p>Return the value of <code>Application.getProjectStage()</code> for
+     * the currently running application instance.  Calling this method must
+     * not cause any network transaction to happen to the server.</p>
+     * <p><b>Usage:</b></p>
+     * <pre><code>
+     * var stage = jsf.getProjectStage();
+     * if (stage === ProjectStage.Development) {
+     *  ...
+     * } else if stage === ProjectStage.Production) {
+     *  ...
+     * }
+     * </code></pre>
+     *
+     * @returns String <code>String</code> representing the current state of the
+     * running application in a typical product development lifecycle.  Refer
+     * to <code>javax.faces.application.Application.getProjectStage</code> and
+     * <code>javax.faces.application.ProjectStage</code>.
+     * @function jsf.getProjectStage
+     */
+    jsf.getProjectStage = function() {
+        // First, return cached value if available
+        if (typeof mojarra !== 'undefined' && typeof mojarra.projectStageCache !== 'undefined') {
+            return mojarra.projectStageCache;
+        }
+        var scripts = document.getElementsByTagName("script"); // nodelist of scripts
+        var script; // jsf.js script
+        var s = 0; // incremental variable for for loop
+        var stage; // temp value for stage
+        var match; // temp value for match
+        while (s < scripts.length) {
+            if (typeof scripts[s].src === 'string' && scripts[s].src.match('\/javax\.faces\.resource\/jsf\.js\?.*ln=javax\.faces')) {
+                script = scripts[s].src;
+                break;
+            }
+            s++;
+        }
+        if (typeof script == "string") {
+            match = script.match("stage=(.*)");
+            if (match) {
+                stage = match[1];
+            }
+        }
+        if (typeof stage === 'undefined' || !stage) {
+            stage = "Production";
+        }
+
+        mojarra = mojarra || {};
+        mojarra.projectStageCache = stage;
+
+        return mojarra.projectStageCache;
+    };
+
+
+    /**
+     * <p>Collect and encode state for input controls associated
+     * with the specified <code>form</code> element.  This will include
+     * all input controls of type <code>hidden</code>.</p>
+     * <p><b>Usage:</b></p>
+     * <pre><code>
+     * var state = jsf.getViewState(form);
+     * </pre></code>
+     *
+     * @param form The <code>form</code> element whose contained
+     * <code>input</code> controls will be collected and encoded.
+     * Only successful controls will be collected and encoded in
+     * accordance with: <a href="http://www.w3.org/TR/html401/interact/forms.html#h-17.13.2">
+     * Section 17.13.2 of the HTML Specification</a>.
+     *
+     * @returns String The encoded state for the specified form's input controls.
+     * @function jsf.getViewState
+     */
+    jsf.getViewState = function(form) {
+        if (!form) {
+            throw new Error("jsf.getViewState:  form must be set");
+        }
+        var els = form.elements;
+        var len = els.length;
+        // create an array which we'll use to hold all the intermediate strings
+        // this bypasses a problem in IE when repeatedly concatenating very
+        // large strings - we'll perform the concatenation once at the end
+        var qString = [];
+        var addField = function(name, value) {
+            var tmpStr = "";
+            if (qString.length > 0) {
+                tmpStr = "&";
+            }
+            tmpStr += encodeURIComponent(name) + "=" + encodeURIComponent(value);
+            qString.push(tmpStr);
+        };
+        for (var i = 0; i < len; i++) {
+            var el = els[i];
+            if (!el.disabled) {
+                switch (el.type) {
+                    case 'text':
+                    case 'password':
+                    case 'hidden':
+                    case 'textarea':
+                        addField(el.name, el.value);
+                        break;
+                    case 'select-one':
+                        if (el.selectedIndex >= 0) {
+                            addField(el.name, el.options[el.selectedIndex].value);
+                        }
+                        break;
+                    case 'select-multiple':
+                        for (var j = 0; j < el.options.length; j++) {
+                            if (el.options[j].selected) {
+                                addField(el.name, el.options[j].value);
+                            }
+                        }
+                        break;
+                    case 'checkbox':
+                    case 'radio':
+                        if (el.checked) {
+                            addField(el.name, el.value || 'on');
+                        }
+                        break;
+                }
+            }
+        }
+        // concatenate the array
+        return qString.join("");
+    };
+
+    /**
+     * The namespace for JavaServer Faces JavaScript utilities.
+     * @name jsf.util
+     * @namespace
+     */
+    jsf.util = {};
+
+    /**
+     * <p>A varargs function that invokes an arbitrary number of scripts.
+     * If any script in the chain returns false, the chain is short-circuited
+     * and subsequent scripts are not invoked.  Any number of scripts may
+     * specified after the <code>event</code> argument.</p>
+     *
+     * @param source The DOM element that triggered this Ajax request, or an
+     * id string of the element to use as the triggering element.
+     * @param event The DOM event that triggered this Ajax request.  The
+     * <code>event</code> argument is optional.
+     *
+     * @returns boolean <code>false</code> if any scripts in the chain return <code>false</code>,
+     *  otherwise returns <code>true</code>
+     * 
+     * @function jsf.util.chain
+     */
+    jsf.util.chain = function(source, event) {
+
+        if (arguments.length < 3) {
+            return true;
+        }
+
+        // RELEASE_PENDING rogerk - shouldn't this be getElementById instead of null
+        var thisArg = (typeof source === 'object') ? source : null;
+
+        // Call back any scripts that were passed in
+        for (var i = 2; i < arguments.length; i++) {
+
+            var f = new Function("event", arguments[i]);
+            var returnValue = f.call(thisArg, event);
+
+            if (returnValue === false) {
+                return false;
+            }
+        }
+        return true;
+        
+    };
+
+    /**
+     * <p>An integer specifying the specification version that this file implements.
+     * It's format is: rightmost two digits, bug release number, next two digits,
+     * minor release number, leftmost digits, major release number.
+     * This number may only be incremented by a new release of the specification.</p>
+     */
+    jsf.specversion = 20000;
+
+    /**
+     * <p>An integer specifying the implementation version that this file implements.
+     * It's a monotonically increasing number, reset with every increment of
+     * <code>jsf.specversion</code>
+     * This number is implementation dependent.</p>
+     */
+    jsf.implversion = 3;
+
+
+} //end if version detection block
diff --git a/test/servlet30/systest/src/main/webapp/resources/case1.js b/test/servlet30/systest/src/main/webapp/resources/case1.js
new file mode 100644
index 0000000..bc81a6f
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/case1.js
@@ -0,0 +1,3 @@
+function doit1() {
+    alert("doit1");
+}
diff --git a/test/servlet30/systest/src/main/webapp/resources/case11.css b/test/servlet30/systest/src/main/webapp/resources/case11.css
new file mode 100644
index 0000000..6d4c409
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/case11.css
@@ -0,0 +1,43 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+.case11 {
+    color: purple;
+}
diff --git a/test/servlet30/systest/src/main/webapp/resources/case12.css b/test/servlet30/systest/src/main/webapp/resources/case12.css
new file mode 100644
index 0000000..fbc35b2
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/case12.css
@@ -0,0 +1,43 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+.case12 {
+    color: fuchsia;
+}
diff --git a/test/servlet30/systest/src/main/webapp/resources/case14.css b/test/servlet30/systest/src/main/webapp/resources/case14.css
new file mode 100644
index 0000000..5822677
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/case14.css
@@ -0,0 +1,43 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+.case14 {
+    color: lime;
+}
diff --git a/test/servlet30/systest/src/main/webapp/resources/case3.js b/test/servlet30/systest/src/main/webapp/resources/case3.js
new file mode 100644
index 0000000..52cd1dc
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/case3.js
@@ -0,0 +1,3 @@
+function doit3() {
+    alert("doit3");
+}
diff --git a/test/servlet30/systest/src/main/webapp/resources/case4.js b/test/servlet30/systest/src/main/webapp/resources/case4.js
new file mode 100644
index 0000000..061c315
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/case4.js
@@ -0,0 +1,3 @@
+function doit4() {
+    alert("doit4");
+}
diff --git a/test/servlet30/systest/src/main/webapp/resources/case6.js b/test/servlet30/systest/src/main/webapp/resources/case6.js
new file mode 100644
index 0000000..a94ede2
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/case6.js
@@ -0,0 +1,3 @@
+function doit6() {
+    alert("doit6");
+}
diff --git a/test/servlet30/systest/src/main/webapp/resources/case9.css b/test/servlet30/systest/src/main/webapp/resources/case9.css
new file mode 100644
index 0000000..fbb4503
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/case9.css
@@ -0,0 +1,43 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+.case9 {
+    color: yellow;
+}
diff --git a/test/servlet30/systest/src/main/webapp/resources/composite/actionListenerWrapper1.xhtml b/test/servlet30/systest/src/main/webapp/resources/composite/actionListenerWrapper1.xhtml
new file mode 100644
index 0000000..f4c8a0e
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/composite/actionListenerWrapper1.xhtml
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:c="http://java.sun.com/jsp/jstl/core"
+      xmlns:composite="http://java.sun.com/jsf/composite"
+      xmlns:ez="http://java.sun.com/jsf/composite/composite">
+<head>
+</head>
+
+<body>
+<composite:interface>
+    <composite:attribute name="customActionListener" method-signature="void f(javax.faces.event.ActionEvent)" required="false" />
+</composite:interface>
+<composite:implementation>
+   <ez:nesting id="nesting">
+   <div style="border: 1px black solid">
+       <ez:customActionListener id="aw1" actionListener="#{cc.attrs.customActionListener}" />
+   </div>
+   </ez:nesting>
+</composite:implementation>
+
+</body>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/resources/composite/actionListenerWrapper2.xhtml b/test/servlet30/systest/src/main/webapp/resources/composite/actionListenerWrapper2.xhtml
new file mode 100644
index 0000000..0897bf6
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/composite/actionListenerWrapper2.xhtml
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:c="http://java.sun.com/jsp/jstl/core"
+      xmlns:composite="http://java.sun.com/jsf/composite"
+      xmlns:ez="http://java.sun.com/jsf/composite/composite">
+<head>
+</head>
+
+<body>
+<composite:interface>
+    <composite:attribute name="bean" type="com.sun.faces.composite.CompositeBean" required="false" />
+</composite:interface>
+<composite:implementation>
+   <ez:nesting id="nesting">
+   <div style="border: 1px black solid">
+       <ez:customActionListener id="aw2" actionListener="#{cc.attrs.bean.actionListener}" />
+   </div>
+   </ez:nesting>
+</composite:implementation>
+
+</body>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/resources/composite/actionListenerWrapper3.xhtml b/test/servlet30/systest/src/main/webapp/resources/composite/actionListenerWrapper3.xhtml
new file mode 100644
index 0000000..d664fbe
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/composite/actionListenerWrapper3.xhtml
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:c="http://java.sun.com/jsp/jstl/core"
+      xmlns:composite="http://java.sun.com/jsf/composite"
+      xmlns:ez="http://java.sun.com/jsf/composite/composite">
+<head>
+</head>
+
+<body>
+<composite:interface>
+    <composite:attribute name="bean" type="com.sun.faces.composite.CompositeBean" required="false" />
+</composite:interface>
+<composite:implementation>
+   <ez:nesting id="nesting">
+   <div style="border: 1px black solid">
+       <ez:actionListenerWrapper1 id="aw3" customActionListener="#{cc.attrs.bean.actionListener}" />
+   </div>
+   </ez:nesting>
+</composite:implementation>
+
+</body>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/resources/composite/actionListenerWrapper4.xhtml b/test/servlet30/systest/src/main/webapp/resources/composite/actionListenerWrapper4.xhtml
new file mode 100644
index 0000000..b739bb0
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/composite/actionListenerWrapper4.xhtml
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:c="http://java.sun.com/jsp/jstl/core"
+      xmlns:composite="http://java.sun.com/jsf/composite"
+      xmlns:ez="http://java.sun.com/jsf/composite/composite">
+<head>
+</head>
+
+<body>
+<composite:interface>
+    <composite:attribute name="customActionListener" method-signature="void f(javax.faces.event.ActionEvent)" required="true" />
+</composite:interface>
+<composite:implementation>
+   <ez:nesting id="nesting">
+   <div style="border: 1px black solid">
+       <ez:actionListenerWrapper1 id="aw4" customActionListener="#{cc.attrs.customActionListener}" />
+   </div>
+   </ez:nesting>
+</composite:implementation>
+
+</body>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/resources/composite/actionSource1.xhtml b/test/servlet30/systest/src/main/webapp/resources/composite/actionSource1.xhtml
new file mode 100644
index 0000000..46690f0
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/composite/actionSource1.xhtml
@@ -0,0 +1,65 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:composite="http://java.sun.com/jsf/composite">
+<head>
+
+<title>Not present in rendered output</title>
+
+</head>
+
+<body>
+
+<composite:interface>
+    <composite:actionSource name="command"/>
+</composite:interface>
+
+<composite:implementation>
+    <h:commandButton id="command" value="ActionSource1"/>
+</composite:implementation>
+
+</body>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/resources/composite/actionSource2.xhtml b/test/servlet30/systest/src/main/webapp/resources/composite/actionSource2.xhtml
new file mode 100644
index 0000000..da1fdbf
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/composite/actionSource2.xhtml
@@ -0,0 +1,65 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:composite="http://java.sun.com/jsf/composite">
+<head>
+
+<title>Not present in rendered output</title>
+
+</head>
+
+<body>
+
+<composite:interface>
+    <composite:actionSource name="command" targets="ac2"/>
+</composite:interface>
+
+<composite:implementation>
+    <h:commandButton id="ac2" value="ActionSource2"/>
+</composite:implementation>
+
+</body>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/resources/composite/actionSource3.xhtml b/test/servlet30/systest/src/main/webapp/resources/composite/actionSource3.xhtml
new file mode 100644
index 0000000..4041741
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/composite/actionSource3.xhtml
@@ -0,0 +1,66 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:ez="http://java.sun.com/jsf/composite/composite"
+      xmlns:composite="http://java.sun.com/jsf/composite">
+<head>
+
+<title>Not present in rendered output</title>
+
+</head>
+
+<body>
+
+<composite:interface>
+    <composite:actionSource name="command"/>
+</composite:interface>
+
+<composite:implementation>
+    <ez:actionSource1 id="command"/>    
+</composite:implementation>
+
+</body>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/resources/composite/actionSource4.xhtml b/test/servlet30/systest/src/main/webapp/resources/composite/actionSource4.xhtml
new file mode 100644
index 0000000..eebe876
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/composite/actionSource4.xhtml
@@ -0,0 +1,68 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:composite="http://java.sun.com/jsf/composite"
+      xmlns:naming="http://mojarra.dev.java.net/source1">
+<head>
+
+<title>Not present in rendered output</title>
+
+</head>
+
+<body>
+
+<composite:interface>
+    <composite:actionSource name="command" targets="naming:command"/>
+</composite:interface>
+
+<composite:implementation>
+    <naming:naming id="naming">
+        <h:commandButton id="command" value="ActionSource4"/>
+    </naming:naming>
+</composite:implementation>
+
+</body>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/resources/composite/actionWrapper1.xhtml b/test/servlet30/systest/src/main/webapp/resources/composite/actionWrapper1.xhtml
new file mode 100644
index 0000000..b264c31
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/composite/actionWrapper1.xhtml
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:c="http://java.sun.com/jsp/jstl/core"
+      xmlns:composite="http://java.sun.com/jsf/composite"
+      xmlns:ez="http://java.sun.com/jsf/composite/composite">
+<head>
+</head>
+
+<body>
+<composite:interface>
+    <composite:attribute name="customAction" method-signature="String f()" required="false" />
+</composite:interface>
+<composite:implementation>
+   <ez:nesting id="nesting">
+   <div style="border: 1px black solid">
+       <ez:customAction id="aw1" action="#{cc.attrs.customAction}" />
+   </div>
+   </ez:nesting>
+</composite:implementation>
+
+</body>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/resources/composite/actionWrapper2.xhtml b/test/servlet30/systest/src/main/webapp/resources/composite/actionWrapper2.xhtml
new file mode 100644
index 0000000..0787ae3
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/composite/actionWrapper2.xhtml
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:c="http://java.sun.com/jsp/jstl/core"
+      xmlns:composite="http://java.sun.com/jsf/composite"
+      xmlns:ez="http://java.sun.com/jsf/composite/composite">
+<head>
+</head>
+
+<body>
+<composite:interface>
+    <composite:attribute name="bean" type="com.sun.faces.composite.CompositeBean" required="false" />
+</composite:interface>
+<composite:implementation>
+   <ez:nesting id="nesting">
+   <div style="border: 1px black solid">
+       <ez:customAction id="aw2" action="#{cc.attrs.bean.action}" />
+   </div>
+   </ez:nesting>
+</composite:implementation>
+
+</body>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/resources/composite/actionWrapper3.xhtml b/test/servlet30/systest/src/main/webapp/resources/composite/actionWrapper3.xhtml
new file mode 100644
index 0000000..87d18a6
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/composite/actionWrapper3.xhtml
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:c="http://java.sun.com/jsp/jstl/core"
+      xmlns:composite="http://java.sun.com/jsf/composite"
+      xmlns:ez="http://java.sun.com/jsf/composite/composite">
+<head>
+</head>
+
+<body>
+<composite:interface>
+    <composite:attribute name="bean" type="com.sun.faces.composite.CompositeBean" required="false" />
+</composite:interface>
+<composite:implementation>
+   <ez:nesting id="nesting">
+   <div style="border: 1px black solid">
+       <ez:actionWrapper1 id="aw3" customAction="#{cc.attrs.bean.action}" />
+   </div>
+   </ez:nesting>
+</composite:implementation>
+
+</body>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/resources/composite/actionWrapper4.xhtml b/test/servlet30/systest/src/main/webapp/resources/composite/actionWrapper4.xhtml
new file mode 100644
index 0000000..02f407d
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/composite/actionWrapper4.xhtml
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:c="http://java.sun.com/jsp/jstl/core"
+      xmlns:composite="http://java.sun.com/jsf/composite"
+      xmlns:ez="http://java.sun.com/jsf/composite/composite">
+<head>
+</head>
+
+<body>
+<composite:interface>
+    <composite:attribute name="customAction" method-signature="String f()" required="true" />
+</composite:interface>
+<composite:implementation>
+   <ez:nesting id="nesting">
+   <div style="border: 1px black solid">
+       <ez:actionWrapper1 id="aw4" customAction="#{cc.attrs.customAction}" />
+   </div>
+   </ez:nesting>
+</composite:implementation>
+
+</body>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/resources/composite/addPhaseListener.xhtml b/test/servlet30/systest/src/main/webapp/resources/composite/addPhaseListener.xhtml
new file mode 100644
index 0000000..6456313
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/composite/addPhaseListener.xhtml
@@ -0,0 +1,68 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:cc="http://java.sun.com/jsf/composite">
+<head>
+
+<title>Not present in rendered output</title>
+
+</head>
+
+<body>
+
+<cc:interface>
+</cc:interface>
+
+<cc:implementation>
+    <f:phaseListener 
+       type="com.sun.faces.composite.PhaseListenerInCompositeComponent" />
+
+    #{beforeMessage}
+</cc:implementation>
+
+</body>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/resources/composite/argAction.xhtml b/test/servlet30/systest/src/main/webapp/resources/composite/argAction.xhtml
new file mode 100644
index 0000000..74a06b5
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/composite/argAction.xhtml
@@ -0,0 +1,73 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:composite="http://java.sun.com/jsf/composite"
+      xmlns:ez="http://java.sun.com/jsf/composite/composite">
+<head>
+
+<title>Not present in rendered output</title>
+
+</head>
+
+<body>
+
+<composite:interface>
+    <composite:attribute name="arg1" required="true" />
+    <composite:attribute name="arg2" required="true" />
+</composite:interface>
+
+<composite:implementation>
+    <ez:nesting id="n1">
+    <ez:nesting id="n2">
+    <h:commandButton id="command" 
+                     value="Direct bean reference with arguments"
+                     action="#{compositeBean.action(cc.attrs.arg1, cc.attrs.arg2)}"/>
+    </ez:nesting>
+    </ez:nesting>
+</composite:implementation>
+
+</body>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/resources/composite/captureIsSavingStateValue.xhtml b/test/servlet30/systest/src/main/webapp/resources/composite/captureIsSavingStateValue.xhtml
new file mode 100644
index 0000000..eb50a52
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/composite/captureIsSavingStateValue.xhtml
@@ -0,0 +1,60 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:cc="http://java.sun.com/jsf/composite">
+<head>
+
+<title>Not present in rendered output</title>
+
+</head>
+
+<body>
+
+<cc:interface componentType="captureIsSavingStateValueComponent" />
+
+<cc:implementation />
+
+</body>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/resources/composite/ccParentExpression.xhtml b/test/servlet30/systest/src/main/webapp/resources/composite/ccParentExpression.xhtml
new file mode 100644
index 0000000..e26da2b
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/composite/ccParentExpression.xhtml
@@ -0,0 +1,71 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:c="http://java.sun.com/jsp/jstl/core"
+      xmlns:composite="http://java.sun.com/jsf/composite"
+      xmlns:ez="http://java.sun.com/jsf/composite/composite">
+<head>
+</head>
+
+<body>
+<composite:interface>
+    <composite:attribute name="items" required="true" />
+</composite:interface>
+<composite:implementation>
+   <div>
+   <ez:wrapper>
+       <h:outputText style="color:black" value="#{cc.attrs.items[0]}" /><br/> 
+       <c:set var="items" value="#{cc.attrs.items}" />
+       <c:forEach var="i" items="#{items}">
+           <span>#{i}</span><br />
+       </c:forEach>
+   </ez:wrapper>
+   </div>
+</composite:implementation>
+
+</body>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/resources/composite/cc_template.xhtml b/test/servlet30/systest/src/main/webapp/resources/composite/cc_template.xhtml
new file mode 100644
index 0000000..c1c4c4c
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/composite/cc_template.xhtml
@@ -0,0 +1,14 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
+<title><ui:insert name="title">Default Title</ui:insert></title>
+</head>
+<body>
+<h1>Here is the Page Header</h1>
+<ui:insert name="body">
+  Default Body
+</ui:insert>
+</body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/resources/composite/childrenAndFacets.xhtml b/test/servlet30/systest/src/main/webapp/resources/composite/childrenAndFacets.xhtml
new file mode 100644
index 0000000..f22d2c7
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/composite/childrenAndFacets.xhtml
@@ -0,0 +1,78 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:composite="http://java.sun.com/jsf/composite">
+<head>
+
+<title>Not present in rendered output</title>
+
+</head>
+
+<body>
+
+<composite:interface>
+</composite:interface>
+
+<composite:implementation>
+    <composite:renderFacet name="header2"/>
+    <h:panelGrid id="grid1" style="border-style:solid">
+        <composite:insertFacet required="true" name="header"/>
+        <composite:insertChildren />
+    </h:panelGrid>
+    <br/>
+    <h:panelGrid id="grid2" style="border-style:solid">
+        <composite:insertFacet name="header"/> <!-- should be ignored -->
+        <composite:insertChildren /> <!-- should be ignored -->
+    </h:panelGrid>
+    <br/>
+    <br/>
+    Composite Parent Children Count:                   <span id="ccCount">#{cc.childCount}</span><br/>
+    Composite Parent contains facet 'header2':         <span id="header2Facet">#{cc.facets['header2'] != null}</span><br/>
+    Composite Parent does not contain facet 'header':  <span id="header1Facet">#{cc.facets['header1'] == null}</span><br/>
+</composite:implementation>
+
+</body>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/resources/composite/compA.xhtml b/test/servlet30/systest/src/main/webapp/resources/composite/compA.xhtml
new file mode 100644
index 0000000..b5fb5c0
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/composite/compA.xhtml
@@ -0,0 +1,61 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:composite="http://java.sun.com/jsf/composite">
+<head>
+</head>
+
+<body>
+<composite:interface />
+<composite:implementation>
+    <span>Before Insert A(1)</span><br />
+    <composite:insertChildren />
+    <span>After Insert A(2)</span><br />
+</composite:implementation>
+
+</body>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/resources/composite/compAttributeRequired.xhtml b/test/servlet30/systest/src/main/webapp/resources/composite/compAttributeRequired.xhtml
new file mode 100644
index 0000000..8ce5f45
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/composite/compAttributeRequired.xhtml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:composite="http://java.sun.com/jsf/composite">
+  <h:head />
+  <h:body>
+    <composite:interface>
+      <composite:attribute name="val" required="true" />
+      <composite:attribute name="modded" required="true" type="Integer" />
+    </composite:interface>
+    <composite:implementation>
+    xx#{cc.attrs.val}:#{cc.attrs.modded}xx
+    </composite:implementation>
+  </h:body>
+</html>
\ No newline at end of file
diff --git a/test/servlet30/systest/src/main/webapp/resources/composite/compAttributeWithArgs.xhtml b/test/servlet30/systest/src/main/webapp/resources/composite/compAttributeWithArgs.xhtml
new file mode 100644
index 0000000..cc16eaa
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/composite/compAttributeWithArgs.xhtml
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:c="http://java.sun.com/jsp/jstl/core"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:composite="http://java.sun.com/jsf/composite"
+      xmlns:ez="http://java.sun.com/jsf/composite/composite">
+<head>
+    <title>Should Not Be Displayed</title>
+</head>
+<body>
+    <composite:interface>
+        <composite:interface name="arg1" type="java.lang.String" />
+        <composite:attribute name="bean" type="com.sun.faces.composite.CompositeBean" />
+    </composite:interface>
+    <composite:implementation>
+        <ez:nesting id="n">
+        <h:form id="form">
+            <h:outputText id="out" value="#{cc.attrs.bean.display(cc.attrs.arg1)}" />
+        </h:form>
+        </ez:nesting>
+    </composite:implementation>
+</body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/resources/composite/compB.xhtml b/test/servlet30/systest/src/main/webapp/resources/composite/compB.xhtml
new file mode 100644
index 0000000..5682497
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/composite/compB.xhtml
@@ -0,0 +1,61 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:composite="http://java.sun.com/jsf/composite">
+<head>
+</head>
+
+<body>
+<composite:interface />
+<composite:implementation>
+    <span>Before Insert B(1)</span><br />
+    <composite:insertChildren />
+    <span>After Insert B(2)</span><br />
+</composite:implementation>
+
+</body>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/resources/composite/compD.xhtml b/test/servlet30/systest/src/main/webapp/resources/composite/compD.xhtml
new file mode 100644
index 0000000..ddd4d9c
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/composite/compD.xhtml
@@ -0,0 +1,64 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:composite="http://java.sun.com/jsf/composite"
+      xmlns:ez="http://java.sun.com/jsf/composite/composite">
+<head>
+</head>
+
+<body>
+<composite:interface />
+<composite:implementation>
+    Before Insert A(1)<br />
+    <ez:compE id="e">
+       <composite:insertChildren />
+    </ez:compE>
+    After Insert A(2)<br />
+</composite:implementation>
+
+</body>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/resources/composite/compE.xhtml b/test/servlet30/systest/src/main/webapp/resources/composite/compE.xhtml
new file mode 100644
index 0000000..2417188
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/composite/compE.xhtml
@@ -0,0 +1,60 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:composite="http://java.sun.com/jsf/composite">
+<head>
+</head>
+
+<body>                                   
+<composite:interface />
+<composite:implementation>
+    <div id="mydiv">
+       <composite:insertChildren /> <br />
+    </div>
+</composite:implementation>
+</body>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/resources/composite/compWithArgs.xhtml b/test/servlet30/systest/src/main/webapp/resources/composite/compWithArgs.xhtml
new file mode 100644
index 0000000..df63066
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/composite/compWithArgs.xhtml
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:c="http://java.sun.com/jsp/jstl/core"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:composite="http://java.sun.com/jsf/composite"
+      xmlns:ez="http://java.sun.com/jsf/composite/composite">
+<head>
+    <title>Should Not Be Displayed</title>
+</head>
+<body>
+    <composite:interface>
+        <composite:interface name="arg1" type="java.lang.String" />
+        <composite:attribute name="bean" type="com.sun.faces.composite.CompositeBean" />
+    </composite:interface>
+    <composite:implementation>
+        <ez:nesting id="n">
+        <h:form id="form">
+            <h:commandButton id="command" value="custom" action="#{cc.attrs.bean.custom(cc.attrs.arg1, 'arg2')}"/>
+        </h:form>
+        </ez:nesting>
+    </composite:implementation>
+</body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/resources/composite/componentWithMetadata.xhtml b/test/servlet30/systest/src/main/webapp/resources/composite/componentWithMetadata.xhtml
new file mode 100644
index 0000000..dba2414
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/composite/componentWithMetadata.xhtml
@@ -0,0 +1,190 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:fmd="http://java.sun.com/xml/ns/javaee/faces/design-time-metadata"
+      xmlns:b="http://mojarra.dev.java.net/source1"
+      xmlns:cc="http://java.sun.com/jsf/composite">
+<head>
+
+<title>Not present in rendered output</title>
+
+</head>
+
+<body>
+
+<cc:interface 
+    name="component"
+    displayName="A really fancy composite component"
+    expert="true"
+    hidden="false"
+    preferred="true"
+    shortDescription="This component has all the supported metadata."
+    extraTopLevelAttribute="Whatever I want here">
+
+<!-- start top level attributes -->
+
+  <cc:attribute 
+    name="model"
+    required="true"
+    displayName="model"
+    expert="false"
+    hidden="false"
+    preferred="true"
+    shortDescription="The model for this component"
+    extraTopLevelAttribute="Whatever I want here">
+    <cc:extension>
+      <fmd:expert>true</fmd:expert>
+    </cc:extension>
+    <cc:attribute
+      name="userid"
+      default="guest"
+      displayName="User Id"
+      expert="false"
+      hidden="false"
+      preferred="true"
+      shortDescription="The model must have a userid property"/>
+    <cc:attribute
+      name="password"
+      default="guest"
+      displayName="Password"
+      expert="false"
+      hidden="false"
+      preferred="true"
+      shortDescription="The model must have a password property"/>
+  </cc:attribute>
+
+  <cc:attribute name="useridLabel" default="Userid:" />
+
+  <cc:attribute name="passwordLabel" default="Password:" />
+
+  <cc:attribute name="loginButtonLabel" default="Login" />
+
+  <cc:attribute name="loginAction" method-signature="java.lang.String f()"
+    required="true" />
+
+<!-- end top level attributes -->
+
+<!-- start facets -->
+
+  <cc:facet 
+    name="header"
+    displayName="The header facet for the fancy component"
+    expert="true"
+    hidden="false"
+    preferred="false"
+    shortDescription="If you want a header, this is where you put it"
+    anotherExtraAttribute="Lots of metadata" />
+
+  <cc:facet 
+    name="footer"
+    displayName="The footer facet for the fancy component"
+    expert="true"
+    hidden="false"
+    preferred="false"
+    shortDescription="If you want a footer, this is where you put it"
+    anotherExtraAttribute="Lots of metadata" />
+
+<!-- end facets -->
+
+<!-- start attached objects -->
+
+  <cc:editableValueHolder
+    name="userid"
+    displayName="Userid field"
+    expert="true"
+    hidden="false"
+    preferred="false"
+    shortDescription="Attach a converter or validator here, if you like"
+    someExtraMetadata="userid metadata" />
+
+  <cc:editableValueHolder
+    name="password"
+    displayName="Password field"
+    expert="true"
+    hidden="false"
+    preferred="false"
+    shortDescription="Attach a converter or validator here, if you like"
+    someExtraMetadata="password metadata" />
+
+  <cc:actionSource
+    name="login"
+    displayName="Login button"
+    expert="true"
+    hidden="false"
+    preferred="false"
+    shortDescription="Attach an actionListener here, if you like"
+    someExtraMetadata="login metadata" />
+
+<!-- end attached objects -->
+
+  <b:timeWastingTag />
+
+</cc:interface>
+
+<cc:implementation>
+
+  <cc:renderFacet name="header" />
+
+  <p><h:outputLabel for="#{cc.clientId}:userid" 
+                    value="#{cc.attrs.useridLabel}" /> 
+     <h:inputText id="userid" /></p>
+
+  <p><h:outputLabel for="#{cc.clientId}:password" 
+                    value="#{cc.attrs.passwordLabel}" /> 
+     <h:inputText id="password" /></p>
+
+  <p><h:commandButton value="#{cc.attrs.loginButtonLabel}"
+                      action="#{cc.attrs.loginAction}" /></p>
+
+  <cc:renderFacet name="footer" />
+
+
+</cc:implementation>
+
+</body>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/resources/composite/compositeComponentEL.xhtml b/test/servlet30/systest/src/main/webapp/resources/composite/compositeComponentEL.xhtml
new file mode 100644
index 0000000..1a637d4
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/composite/compositeComponentEL.xhtml
@@ -0,0 +1,68 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:c="http://java.sun.com/jsp/jstl/core"
+      xmlns:composite="http://java.sun.com/jsf/composite">
+<head>
+
+<title>Not present in rendered output</title>
+
+</head>
+
+<body>
+<composite:interface />
+<composite:implementation>
+
+    <c:if test="#{cc != null}">
+        <h:outputText style="color:green;" value="PASSED"/>
+    </c:if>
+
+</composite:implementation>
+
+</body>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/resources/composite/compositionWithinComposite.xhtml b/test/servlet30/systest/src/main/webapp/resources/composite/compositionWithinComposite.xhtml
new file mode 100644
index 0000000..9878495
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/composite/compositionWithinComposite.xhtml
@@ -0,0 +1,65 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:cc="http://java.sun.com/jsf/composite">
+
+<cc:interface />
+
+<cc:implementation>
+
+ THIS LINE, AND EVERYTHING ABOVE IT IS DISREGARDED BY JSF
+    <ui:composition template="cc_template.xhtml">
+ 
+      <ui:define name="title">title from cc:impl</ui:define>
+      <ui:define name="body">body from cc:impl</ui:define>
+         
+    </ui:composition>
+    THIS LINE, AND EVERYTHING BELOW IT IS DISREGARDED BY JSF
+ 
+</cc:implementation>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/resources/composite/conditionalAttributeRendering.xhtml b/test/servlet30/systest/src/main/webapp/resources/composite/conditionalAttributeRendering.xhtml
new file mode 100644
index 0000000..a613764
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/composite/conditionalAttributeRendering.xhtml
@@ -0,0 +1,65 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:composite="http://java.sun.com/jsf/composite">
+<head>
+
+<title>Not present in rendered output</title>
+
+</head>
+
+<body>
+<composite:interface />
+<composite:implementation>
+
+    <span style="#{cc.attrs.style}">Content</span>
+
+</composite:implementation>
+
+</body>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/resources/composite/converter1.xhtml b/test/servlet30/systest/src/main/webapp/resources/composite/converter1.xhtml
new file mode 100644
index 0000000..3d1bb2e
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/composite/converter1.xhtml
@@ -0,0 +1,65 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:composite="http://java.sun.com/jsf/composite">
+<head>
+
+<title>Not present in rendered output</title>
+
+</head>
+
+<body>
+
+<composite:interface>
+    <composite:editableValueHolder name="input"/>
+</composite:interface>
+
+<composite:implementation>
+    <h:inputText id="input" value="Input1"/>
+</composite:implementation>
+
+</body>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/resources/composite/converter2.xhtml b/test/servlet30/systest/src/main/webapp/resources/composite/converter2.xhtml
new file mode 100644
index 0000000..135e13a
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/composite/converter2.xhtml
@@ -0,0 +1,65 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:composite="http://java.sun.com/jsf/composite">
+<head>
+
+<title>Not present in rendered output</title>
+
+</head>
+
+<body>
+
+<composite:interface>
+    <composite:editableValueHolder name="input" targets="it2"/>
+</composite:interface>
+
+<composite:implementation>
+    <h:inputText id="it2" value="Input2"/>
+</composite:implementation>
+
+</body>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/resources/composite/converter3.xhtml b/test/servlet30/systest/src/main/webapp/resources/composite/converter3.xhtml
new file mode 100644
index 0000000..d485037
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/composite/converter3.xhtml
@@ -0,0 +1,66 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:ez="http://java.sun.com/jsf/composite/composite"
+      xmlns:composite="http://java.sun.com/jsf/composite">
+<head>
+
+<title>Not present in rendered output</title>
+
+</head>
+
+<body>
+
+<composite:interface>
+    <composite:editableValueHolder name="input"/>
+</composite:interface>
+
+<composite:implementation>
+    <ez:validator1 id="input"/>    
+</composite:implementation>
+
+</body>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/resources/composite/converter4.xhtml b/test/servlet30/systest/src/main/webapp/resources/composite/converter4.xhtml
new file mode 100644
index 0000000..313946d
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/composite/converter4.xhtml
@@ -0,0 +1,68 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:composite="http://java.sun.com/jsf/composite"
+      xmlns:naming="http://mojarra.dev.java.net/source1">
+<head>
+
+<title>Not present in rendered output</title>
+
+</head>
+
+<body>
+
+<composite:interface>
+    <composite:editableValueHolder name="input" targets="naming:input"/>
+</composite:interface>
+
+<composite:implementation>
+    <naming:naming id="naming">
+        <h:inputText id="input" value="Input4"/>
+    </naming:naming>
+</composite:implementation>
+
+</body>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/resources/composite/customAction.xhtml b/test/servlet30/systest/src/main/webapp/resources/composite/customAction.xhtml
new file mode 100644
index 0000000..c699790
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/composite/customAction.xhtml
@@ -0,0 +1,67 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:composite="http://java.sun.com/jsf/composite">
+<head>
+
+<title>Not present in rendered output</title>
+
+</head>
+
+<body>
+
+<composite:interface>
+    <composite:attribute name="action" method-signature="String f()" targets="command" />
+</composite:interface>
+
+<composite:implementation>
+    <div style="border: 1px black solid;">
+        <h:commandButton id="command" value="Click Me"/>
+    </div>
+</composite:implementation>
+
+</body>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/resources/composite/customActionListener.xhtml b/test/servlet30/systest/src/main/webapp/resources/composite/customActionListener.xhtml
new file mode 100644
index 0000000..1fafd32
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/composite/customActionListener.xhtml
@@ -0,0 +1,67 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:composite="http://java.sun.com/jsf/composite">
+<head>
+
+<title>Not present in rendered output</title>
+
+</head>
+
+<body>
+
+<composite:interface>
+    <composite:attribute name="actionListener" method-signature="void f(javax.faces.event.ActionEvent)" targets="command" />
+</composite:interface>
+
+<composite:implementation>
+    <div style="border: 1px black solid;">
+        <h:commandButton id="command" value="Click Me"/>
+    </div>
+</composite:implementation>
+
+</body>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/resources/composite/customActionWrapper1.xhtml b/test/servlet30/systest/src/main/webapp/resources/composite/customActionWrapper1.xhtml
new file mode 100644
index 0000000..b264c31
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/composite/customActionWrapper1.xhtml
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:c="http://java.sun.com/jsp/jstl/core"
+      xmlns:composite="http://java.sun.com/jsf/composite"
+      xmlns:ez="http://java.sun.com/jsf/composite/composite">
+<head>
+</head>
+
+<body>
+<composite:interface>
+    <composite:attribute name="customAction" method-signature="String f()" required="false" />
+</composite:interface>
+<composite:implementation>
+   <ez:nesting id="nesting">
+   <div style="border: 1px black solid">
+       <ez:customAction id="aw1" action="#{cc.attrs.customAction}" />
+   </div>
+   </ez:nesting>
+</composite:implementation>
+
+</body>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/resources/composite/customActionWrapper2.xhtml b/test/servlet30/systest/src/main/webapp/resources/composite/customActionWrapper2.xhtml
new file mode 100644
index 0000000..de55d32
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/composite/customActionWrapper2.xhtml
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:c="http://java.sun.com/jsp/jstl/core"
+      xmlns:composite="http://java.sun.com/jsf/composite"
+      xmlns:ez="http://java.sun.com/jsf/composite/composite">
+<head>
+</head>
+
+<body>
+<composite:interface>
+    <composite:attribute name="bean" type="com.sun.faces.composite.CompositeBean" required="false" />
+</composite:interface>
+<composite:implementation>
+   <ez:nesting id="nesting">
+   <div style="border: 1px black solid">
+       <ez:customAction id="aw2" action="#{cc.attrs.bean.custom}" />
+   </div>
+   </ez:nesting>
+</composite:implementation>
+
+</body>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/resources/composite/customActionWrapper3.xhtml b/test/servlet30/systest/src/main/webapp/resources/composite/customActionWrapper3.xhtml
new file mode 100644
index 0000000..6f80760
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/composite/customActionWrapper3.xhtml
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:c="http://java.sun.com/jsp/jstl/core"
+      xmlns:composite="http://java.sun.com/jsf/composite"
+      xmlns:ez="http://java.sun.com/jsf/composite/composite">
+<head>
+</head>
+
+<body>
+<composite:interface>
+    <composite:attribute name="bean" type="com.sun.faces.composite.CompositeBean" required="false" />
+</composite:interface>
+<composite:implementation>
+   <ez:nesting id="nesting">
+   <div style="border: 1px black solid">
+       <ez:actionWrapper1 id="aw3" customAction="#{cc.attrs.bean.custom}" />
+   </div>
+   </ez:nesting>
+</composite:implementation>
+
+</body>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/resources/composite/customActionWrapper4.xhtml b/test/servlet30/systest/src/main/webapp/resources/composite/customActionWrapper4.xhtml
new file mode 100644
index 0000000..02f407d
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/composite/customActionWrapper4.xhtml
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:c="http://java.sun.com/jsp/jstl/core"
+      xmlns:composite="http://java.sun.com/jsf/composite"
+      xmlns:ez="http://java.sun.com/jsf/composite/composite">
+<head>
+</head>
+
+<body>
+<composite:interface>
+    <composite:attribute name="customAction" method-signature="String f()" required="true" />
+</composite:interface>
+<composite:implementation>
+   <ez:nesting id="nesting">
+   <div style="border: 1px black solid">
+       <ez:actionWrapper1 id="aw4" customAction="#{cc.attrs.customAction}" />
+   </div>
+   </ez:nesting>
+</composite:implementation>
+
+</body>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/resources/composite/customCustomAction.xhtml b/test/servlet30/systest/src/main/webapp/resources/composite/customCustomAction.xhtml
new file mode 100644
index 0000000..adb1a21
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/composite/customCustomAction.xhtml
@@ -0,0 +1,67 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:composite="http://java.sun.com/jsf/composite">
+<head>
+
+<title>Not present in rendered output</title>
+
+</head>
+
+<body>
+
+<composite:interface>
+    <composite:attribute name="customAction" method-signature="String f()" />
+</composite:interface>
+
+<composite:implementation>
+    <div style="border: 1px black solid;">
+        <h:commandButton id="command" action="#{cc.attrs.customAction}" value="Click Me"/>
+    </div>
+</composite:implementation>
+
+</body>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/resources/composite/customValidator.xhtml b/test/servlet30/systest/src/main/webapp/resources/composite/customValidator.xhtml
new file mode 100644
index 0000000..e8bd653
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/composite/customValidator.xhtml
@@ -0,0 +1,67 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:composite="http://java.sun.com/jsf/composite">
+<head>
+
+<title>Not present in rendered output</title>
+
+</head>
+
+<body>
+
+<composite:interface>
+    <composite:attribute name="validator" method-signature="void f(javax.faces.context.FacesContext, javax.faces.component.UIComponent, java.lang.Object)" targets="input" />
+</composite:interface>
+
+<composite:implementation>
+    <div style="border: 1px black solid;">
+        <h:inputText id="input" />
+    </div>
+</composite:implementation>
+
+</body>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/resources/composite/customValueChangeListener.xhtml b/test/servlet30/systest/src/main/webapp/resources/composite/customValueChangeListener.xhtml
new file mode 100644
index 0000000..d03e60b
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/composite/customValueChangeListener.xhtml
@@ -0,0 +1,67 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:composite="http://java.sun.com/jsf/composite">
+<head>
+
+<title>Not present in rendered output</title>
+
+</head>
+
+<body>
+
+<composite:interface>
+    <composite:attribute name="valueChangeListener" method-signature="void f(javax.faces.event.ValueChangeEvent)" targets="input" />
+</composite:interface>
+
+<composite:implementation>
+    <div style="border: 1px black solid;">
+        <h:inputText id="input" />
+    </div>
+</composite:implementation>
+
+</body>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/resources/composite/decorate.xhtml b/test/servlet30/systest/src/main/webapp/resources/composite/decorate.xhtml
new file mode 100644
index 0000000..8a1fa5a
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/composite/decorate.xhtml
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:composite="http://java.sun.com/jsf/composite">
+<head>
+    <title>Should Not Be Displayed</title>
+</head>
+<body>
+    <composite:interface/>
+    <composite:implementation>
+            <ui:decorate template="/WEB-INF/templates/templateDecorateTemplate.xhtml">
+                <ui:define name="insert">
+                <span id="insert">Inserted Text</span>
+            </ui:define>
+        </ui:decorate>
+    </composite:implementation>
+</body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/resources/composite/defaultAction.xhtml b/test/servlet30/systest/src/main/webapp/resources/composite/defaultAction.xhtml
new file mode 100644
index 0000000..e5f1fa4
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/composite/defaultAction.xhtml
@@ -0,0 +1,57 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+  xmlns:h="http://java.sun.com/jsf/html"
+  xmlns:cc="http://java.sun.com/jsf/composite">
+<cc:interface>
+    <cc:attribute name="action" targets="loginButton" default="defaultActionNext?faces-redirect=true" />
+</cc:interface>
+
+<cc:implementation>
+
+  <h:commandButton value="Login" id="loginButton" />
+
+</cc:implementation>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/resources/composite/defaultAttributeValues.xhtml b/test/servlet30/systest/src/main/webapp/resources/composite/defaultAttributeValues.xhtml
new file mode 100644
index 0000000..0fcb282
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/composite/defaultAttributeValues.xhtml
@@ -0,0 +1,68 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:cc="http://java.sun.com/jsf/composite">
+
+    <cc:interface> 
+
+        <cc:attribute name="rendered" default="true"/>
+
+        <cc:attribute name="foo" default="bar"/>
+
+    </cc:interface>
+
+    <cc:implementation>
+        
+        <h:commandButton id="action" value="Submit"/>
+        <br/>
+        rendered=#{cc.attrs.rendered}
+        <br/>
+        foo=#{cc.attrs.foo}
+
+    </cc:implementation>
+
+</html>
+
diff --git a/test/servlet30/systest/src/main/webapp/resources/composite/facetA.xhtml b/test/servlet30/systest/src/main/webapp/resources/composite/facetA.xhtml
new file mode 100644
index 0000000..d34ceef
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/composite/facetA.xhtml
@@ -0,0 +1,63 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:composite="http://java.sun.com/jsf/composite">
+<head>
+</head>
+
+<body>
+<composite:interface />
+<composite:implementation>
+    <composite:insertFacet name="header" />
+    <span>Before Insert A(1)</span><br />
+    <composite:insertChildren />
+    <span>After Insert A(2)</span><br />
+    <composite:insertFacet name="footer" />
+</composite:implementation>
+
+</body>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/resources/composite/facetB.xhtml b/test/servlet30/systest/src/main/webapp/resources/composite/facetB.xhtml
new file mode 100644
index 0000000..bcc6459
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/composite/facetB.xhtml
@@ -0,0 +1,65 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:composite="http://java.sun.com/jsf/composite">
+<head>
+</head>
+
+<body>
+<composite:interface />
+<composite:implementation>
+    <span>Before Insert B(1)</span><br />
+    <h:panelGrid id="grid">
+        <composite:insertFacet name="header" />
+        <composite:insertChildren />
+        <composite:insertFacet name="footer" />
+    </h:panelGrid>
+    <span>After Insert B(2)</span><br />
+</composite:implementation>
+
+</body>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/resources/composite/facetD.xhtml b/test/servlet30/systest/src/main/webapp/resources/composite/facetD.xhtml
new file mode 100644
index 0000000..71a3409
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/composite/facetD.xhtml
@@ -0,0 +1,65 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:composite="http://java.sun.com/jsf/composite"
+      xmlns:ez="http://java.sun.com/jsf/composite/composite">
+<head>
+</head>
+
+<body>
+<composite:interface />
+<composite:implementation>
+    Before Insert A(1)<br />
+    <ez:facetE id="e">
+       <composite:insertFacet name="header" />
+       <composite:insertFacet name="footer" /> 
+    </ez:facetE>
+    After Insert A(2)<br />
+</composite:implementation>
+
+</body>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/resources/composite/facetE.xhtml b/test/servlet30/systest/src/main/webapp/resources/composite/facetE.xhtml
new file mode 100644
index 0000000..cbdb82e
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/composite/facetE.xhtml
@@ -0,0 +1,62 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:composite="http://java.sun.com/jsf/composite">
+<head>
+</head>
+
+<body>                                   
+<composite:interface />
+<composite:implementation>
+    <h:panelGrid>
+        <composite:insertFacet name="header" />
+        <h:outputText value="row" />
+        <composite:insertFacet name="footer" />
+    </h:panelGrid>
+</composite:implementation>
+</body>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/resources/composite/groovyBacked.xhtml b/test/servlet30/systest/src/main/webapp/resources/composite/groovyBacked.xhtml
new file mode 100644
index 0000000..2f8d53c
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/composite/groovyBacked.xhtml
@@ -0,0 +1,57 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:composite="http://java.sun.com/jsf/composite">
+<composite:interface name="groovyBacked"
+                     displayName="Groovy Backed"
+                     shortDescription="A Groovy-backed test component"
+                     componentType="com.sun.faces.groovy.GroovyBacked">
+</composite:interface>
+
+<composite:implementation>
+    <h1 id="#{cc.attrs.id}" style="width: 100%; border: 0px; border-top: 2px; border-bottom: 2px; border-style: solid; border-color: black;">#{cc.text}</h1>
+</composite:implementation>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/resources/composite/inlinedStyle1.xhtml b/test/servlet30/systest/src/main/webapp/resources/composite/inlinedStyle1.xhtml
new file mode 100644
index 0000000..4bda80b
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/composite/inlinedStyle1.xhtml
@@ -0,0 +1,72 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:composite="http://java.sun.com/jsf/composite"
+      xmlns:ez="http://java.sun.com/jsf/composite/composite">
+<head>
+
+<title>Not present in rendered output</title>
+
+</head>
+
+<body>
+
+<composite:interface>
+    <composite:attribute required="true" name="style" type="java.lang.String"/>
+</composite:interface>
+
+<composite:implementation>
+    <h:outputStylesheet>
+        <![CDATA[
+              #{cc.attrs.style}
+        ]]>
+    </h:outputStylesheet>
+    <ez:inlinedStyle2 style="#{cc.attrs.style}" alternateStyle="color:blue" useAlternateStyle="false" />
+    <ez:inlinedStyle2 style="#{cc.attrs.style}" alternateStyle="color:blue" useAlternateStyle="true" />
+</composite:implementation>
+
+</body>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/resources/composite/inlinedStyle2.xhtml b/test/servlet30/systest/src/main/webapp/resources/composite/inlinedStyle2.xhtml
new file mode 100644
index 0000000..35d51e0
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/composite/inlinedStyle2.xhtml
@@ -0,0 +1,85 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:composite="http://java.sun.com/jsf/composite"
+      xmlns:c="http://java.sun.com/jsp/jstl/core"
+      xmlns:ez="http://java.sun.com/jsf/composite/composite">
+<head>
+
+<title>Not present in rendered output</title>
+
+</head>
+
+<body>
+
+<composite:interface>
+    <composite:attribute required="true" name="style" type="java.lang.String"/>
+    <composite:attribute required="true" name="alternateStyle" type="java.lang.String" />
+    <composite:attribute required="true" name="useAlternateStyle" type="java.lang.Boolean" />
+</composite:interface>
+
+<composite:implementation>
+    <c:choose>
+        <c:when test="#{cc.attrs.useAlternateStyle == true}">
+            <h:outputStylesheet>
+                <![CDATA[
+                    #{cc.attrs.style}
+                ]]>
+            </h:outputStylesheet>
+        </c:when>
+        <c:otherwise>
+            <h:outputStylesheet>
+                <![CDATA[
+                    #{cc.attrs.alternateStyle}
+                ]]>
+            </h:outputStylesheet>
+        </c:otherwise>
+    </c:choose>
+    <ez:inlinedStyleAndScript id="ss" style="#{cc.attrs.style}" />
+</composite:implementation>
+
+</body>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/resources/composite/inlinedStyleAndScript.xhtml b/test/servlet30/systest/src/main/webapp/resources/composite/inlinedStyleAndScript.xhtml
new file mode 100644
index 0000000..0bdd1c7
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/composite/inlinedStyleAndScript.xhtml
@@ -0,0 +1,73 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:composite="http://java.sun.com/jsf/composite"
+      xmlns:ez="http://java.sun.com/jsf/composite/composite">
+<head>
+
+<title>Not present in rendered output</title>
+
+</head>
+
+<body>
+
+<composite:interface>
+    <composite:attribute required="true" name="style" type="java.lang.String"/>
+</composite:interface>
+
+<composite:implementation>
+    <h:outputStylesheet>
+        <![CDATA[
+              #{cc.attrs.style}
+        ]]>
+    </h:outputStylesheet>
+    <h:outputScript target="head">
+        var a = "#{cc.id}";
+    </h:outputScript>
+</composite:implementation>
+
+</body>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/resources/composite/insertChildrenRequiredFalse.xhtml b/test/servlet30/systest/src/main/webapp/resources/composite/insertChildrenRequiredFalse.xhtml
new file mode 100644
index 0000000..22833a5
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/composite/insertChildrenRequiredFalse.xhtml
@@ -0,0 +1,65 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:composite="http://java.sun.com/jsf/composite">
+<head>
+
+<title>Not present in rendered output</title>
+
+</head>
+
+<body>
+
+<composite:interface/>
+
+<composite:implementation>
+    <h:panelGrid>
+        <composite:insertChildren/>
+    </h:panelGrid>
+</composite:implementation>
+
+</body>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/resources/composite/insertChildrenRequiredTrue.xhtml b/test/servlet30/systest/src/main/webapp/resources/composite/insertChildrenRequiredTrue.xhtml
new file mode 100644
index 0000000..4e1c9d1
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/composite/insertChildrenRequiredTrue.xhtml
@@ -0,0 +1,65 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:composite="http://java.sun.com/jsf/composite">
+<head>
+
+<title>Not present in rendered output</title>
+
+</head>
+
+<body>
+
+<composite:interface/>
+
+<composite:implementation>
+    <h:panelGrid>
+        <composite:insertChildren required="true"/>
+    </h:panelGrid>
+</composite:implementation>
+
+</body>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/resources/composite/insertFacetRequiredFalse.xhtml b/test/servlet30/systest/src/main/webapp/resources/composite/insertFacetRequiredFalse.xhtml
new file mode 100644
index 0000000..f0815d8
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/composite/insertFacetRequiredFalse.xhtml
@@ -0,0 +1,68 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:composite="http://java.sun.com/jsf/composite">
+<head>
+
+<title>Not present in rendered output</title>
+
+</head>
+
+<body>
+
+<composite:interface/>
+
+<composite:implementation>
+    <h:panelGrid>
+        <composite:insertFacet name="header" required="false"/>
+    </h:panelGrid>
+    <h:panelGrid>
+        <composite:insertFacet name="header2"/>
+    </h:panelGrid>
+</composite:implementation>
+
+</body>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/resources/composite/insertFacetRequiredTrue.xhtml b/test/servlet30/systest/src/main/webapp/resources/composite/insertFacetRequiredTrue.xhtml
new file mode 100644
index 0000000..757a5bf
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/composite/insertFacetRequiredTrue.xhtml
@@ -0,0 +1,65 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:composite="http://java.sun.com/jsf/composite">
+<head>
+
+<title>Not present in rendered output</title>
+
+</head>
+
+<body>
+
+<composite:interface/>
+
+<composite:implementation>
+    <h:panelGrid>
+        <composite:insertFacet name="header" required="true"/>
+    </h:panelGrid>
+</composite:implementation>
+
+</body>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/resources/composite/invalidMeArgs.xhtml b/test/servlet30/systest/src/main/webapp/resources/composite/invalidMeArgs.xhtml
new file mode 100644
index 0000000..14402d9
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/composite/invalidMeArgs.xhtml
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:c="http://java.sun.com/jsp/jstl/core"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:composite="http://java.sun.com/jsf/composite"
+      xmlns:ez="http://java.sun.com/jsf/composite/composite">
+<head>
+    <title>Should Not Be Displayed</title>
+</head>
+<body>
+    <composite:interface>
+        <composite:attribute name="custom" method-signature="String f()" />
+    </composite:interface>
+    <composite:implementation>
+        <ez:nesting id="n">
+        <h:form id="form">
+            <h:commandButton id="out" value="#{cc.attrs.custom(cc.attrs.arg1)}" />
+        </h:form>
+        </ez:nesting>
+    </composite:implementation>
+</body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/resources/composite/invalidVeArgs.xhtml b/test/servlet30/systest/src/main/webapp/resources/composite/invalidVeArgs.xhtml
new file mode 100644
index 0000000..aac50ca
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/composite/invalidVeArgs.xhtml
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:c="http://java.sun.com/jsp/jstl/core"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:composite="http://java.sun.com/jsf/composite"
+      xmlns:ez="http://java.sun.com/jsf/composite/composite">
+<head>
+    <title>Should Not Be Displayed</title>
+</head>
+<body>
+    <composite:interface>
+        <composite:attribute name="bean" method-signature="String f()" />
+    </composite:interface>
+    <composite:implementation>
+        <ez:nesting id="n">
+        <h:form id="form">
+            <h:outputText id="out" value="#{cc.attrs.bean(cc.attrs.arg1)}" />
+        </h:form>
+        </ez:nesting>
+    </composite:implementation>
+</body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/resources/composite/isCompositeComponent.xhtml b/test/servlet30/systest/src/main/webapp/resources/composite/isCompositeComponent.xhtml
new file mode 100644
index 0000000..0735a52
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/composite/isCompositeComponent.xhtml
@@ -0,0 +1,68 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:cc="http://java.sun.com/jsf/composite">
+<head>
+
+<title>Not present in rendered output</title>
+
+</head>
+
+<body>
+
+<cc:interface>
+
+</cc:interface>
+
+<cc:implementation>
+
+  <cc:insertChildren />
+
+</cc:implementation>
+
+</body>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/resources/composite/javaBackedComponentDefaultAttrValues.xhtml b/test/servlet30/systest/src/main/webapp/resources/composite/javaBackedComponentDefaultAttrValues.xhtml
new file mode 100644
index 0000000..d141838
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/composite/javaBackedComponentDefaultAttrValues.xhtml
@@ -0,0 +1,76 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:cc="http://java.sun.com/jsf/composite">
+
+    <cc:interface componentType="JavaBackedComponentDefaultAttrValues">
+
+        <cc:attribute name="attr1" default="attr1Value" />
+        <cc:attribute name="attr2" default="attr2Value" />
+        <cc:attribute name="attr3" method-signature="java.text.Format f()" default="#{compositeBean.format}" />
+        <cc:attribute name="action" method-signature="java.lang.String f()"
+                      default="#{compositeBean.action}" />
+        <cc:attribute name="actionListener" method-signature="void f(javax.faces.event.ActionEvent)"
+                      default="#{compositeBean.actionListener}" />
+        <cc:attribute name="validator" method-signature="void validate(javax.faces.context.FacesContext, javax.faces.component.UIComponent, java.lang.Object)"
+                      default="#{compositeBean.validate}"/>
+        <cc:attribute name="valueChangeListener" method-signature="void valueChange(javax.faces.event.ValueChangeEvent)"
+                      default="#{compositeBean.valueChange}"/>
+
+
+    </cc:interface>
+
+    <cc:implementation>
+        
+        <h:commandButton id="action" value="action button"/>
+        <h:commandButton id="actionListener" value="actionListener button"/>
+        <h:inputText id="validator" />
+        <h:inputText id="valueChangeListener" />
+
+    </cc:implementation>
+
+</html>
+
diff --git a/test/servlet30/systest/src/main/webapp/resources/composite/javaTopLevelActionListenerComponent.xhtml b/test/servlet30/systest/src/main/webapp/resources/composite/javaTopLevelActionListenerComponent.xhtml
new file mode 100644
index 0000000..3ada38c
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/composite/javaTopLevelActionListenerComponent.xhtml
@@ -0,0 +1,88 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:cc="http://java.sun.com/jsf/composite">
+<head>
+
+    <title>Not present in rendered output</title>
+
+</head>
+
+<body>
+
+<cc:interface name="myComponent"
+              displayName="Very Simple Composite Component"
+              preferred="true"
+              expert="false"
+              shortDescription="An illustration of the composite component feature"
+              componentType="javaTopLevelActionListenerComponent">
+
+
+</cc:interface>
+
+<cc:implementation>
+
+    <h:commandButton id="loginAction" value="Login">
+        <f:actionListener
+              type="com.sun.faces.composite.ComponentResolverActionListener"/>
+        <f:actionListener binding="#{cc}"/>
+    </h:commandButton>
+
+
+    <h:panelGrid columns="2">
+        <h:outputText value="Resolved component family:"/>
+        <h:outputText value="#{resolvedComponentFamily}"/>
+        <h:outputText value="Composite component item:"/>
+        <h:outputText value="#{cc.item}"/>
+    </h:panelGrid>
+
+</cc:implementation>
+
+</body>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/resources/composite/javaTopLevelComponent.xhtml b/test/servlet30/systest/src/main/webapp/resources/composite/javaTopLevelComponent.xhtml
new file mode 100644
index 0000000..5fdf8e3
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/composite/javaTopLevelComponent.xhtml
@@ -0,0 +1,103 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:cc="http://java.sun.com/jsf/composite">
+<head>
+
+<title>Not present in rendered output</title>
+
+</head>
+
+<body>
+
+<cc:interface name="myComponent"
+                     displayName="Very Simple Composite Component"
+                     preferred="true"
+                     expert="false"
+                     shortDescription="An illustration of the composite component feature"
+             componentType="javaTopLevelComponent">
+
+  <cc:attribute targets="loginAction" name="action" default="javaTopLevelComponent2"
+                method-signature="java.lang.Object action()" />
+
+  <cc:attribute name="usernameLabel" default="User ID: " />
+
+  <cc:attribute name="loginButtonLabel" default="Login " />
+
+  <cc:attribute name="int" type="int" requred="false" />
+
+  <cc:editableValueHolder name="username" />
+
+  <cc:actionSource name="loginAction" />
+
+</cc:interface>
+
+<cc:implementation>
+
+      <p>Get out java property of type String #{cc.item}</p>
+
+      <p>Get out java property of type int #{cc.int}</p>
+
+      <p>
+
+         #{cc.attrs.usernameLabel}
+         <h:inputText id="username" />
+
+      </p>
+
+      <p>
+
+	<h:commandButton id="loginAction" value="#{cc.attrs.loginButtonLabel}"
+                         action="#{cc.attrs.loginAction}"/>
+
+      </p>
+
+</cc:implementation>
+
+</body>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/resources/composite/jsr276Correct01.xhtml b/test/servlet30/systest/src/main/webapp/resources/composite/jsr276Correct01.xhtml
new file mode 100644
index 0000000..11b5d71
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/composite/jsr276Correct01.xhtml
@@ -0,0 +1,77 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:fmd="http://java.sun.com/xml/ns/javaee/faces/design-time-metadata"
+      xmlns:composite="http://java.sun.com/jsf/composite">
+<head>
+
+<title>Not present in rendered output</title>
+
+</head>
+
+<body>
+
+<composite:interface name="jsr276">
+
+  <composite:attribute name="pinLabel" default="PIN">
+    <composite:extension>
+      <fmd:expert>true</fmd:expert>
+    </composite:extension>
+  </composite:attribute>
+
+</composite:interface>
+
+<composite:implementation>
+
+  <p class="grayBox">composite component with correctly specified jsr276
+  metadata</p>
+
+</composite:implementation>
+
+</body>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/resources/composite/jsr276Incorrect01.xhtml b/test/servlet30/systest/src/main/webapp/resources/composite/jsr276Incorrect01.xhtml
new file mode 100644
index 0000000..a229468
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/composite/jsr276Incorrect01.xhtml
@@ -0,0 +1,75 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:metaData="http://java.sun.com/xml/ns/javaee/faces/design-time-metadata"
+      xmlns:composite="http://java.sun.com/jsf/composite">
+<head>
+
+<title>Not present in rendered output</title>
+
+</head>
+
+<body>
+
+<composite:interface name="jsr276">
+
+  <composite:attribute name="pinLabel" default="PIN">
+      <metaData:expert>true</metaData:expert>
+  </composite:attribute>
+
+</composite:interface>
+
+<composite:implementation>
+
+  <p class="grayBox">composite component with incorrectly specified jsr276
+  metadata</p>
+
+</composite:implementation>
+
+</body>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/resources/composite/meDefaults.xhtml b/test/servlet30/systest/src/main/webapp/resources/composite/meDefaults.xhtml
new file mode 100644
index 0000000..0a36c1c
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/composite/meDefaults.xhtml
@@ -0,0 +1,89 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:c="http://java.sun.com/jsp/jstl/core"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:composite="http://java.sun.com/jsf/composite"
+      xmlns:ez="http://java.sun.com/jsf/composite/composite">
+<head>
+    <title></title>
+</head>
+<body>
+    <composite:interface>
+        <composite:attribute name="action" method-signature="String method()" targets="form1:command" default="#{compositeBean.action}" />
+        <composite:attribute name="actionListener" method-signature="void method()" targets="form2:command2" default="#{compositeBean.actionListener}" />
+        <composite:attribute name="validator" method-signature="void validate(javax.faces.context.FacesContext, javax.faces.component.UIComponent, java.lang.Object)" targets="form4:input" default="#{compositeBean.validate}" />
+        <composite:attribute name="valueChangeListener" method-signature="void valueChange(javax.faces.event.ValueChangeEvent)" targets="form5:input2" default="#{compositeBean.valueChange}" />
+        <composite:attribute name="custom" method-signature="String method()" default="#{compositeBean.custom}"/>
+    </composite:interface>
+    <composite:implementation>
+        <h:form id="form1">
+            <h:commandButton id="command" value="action" />
+        </h:form>
+        <br />
+        <h:form id="form2">
+            <h:commandButton id="command2" value="actionListener" />
+        </h:form>
+        <br />
+        <h:form id="form3">
+            <h:commandButton id="command3" value="custom" action="#{cc.attrs.custom}"/>
+        </h:form>
+        <br />
+        <h:form id="form4">
+            <h:inputText id="input" />
+            <h:commandButton id="command" value="valiator"/>
+        </h:form>
+        <br />
+        <h:form id="form5">
+            <h:inputText id="input2" />
+            <h:commandButton id="command" value="valueChange" />
+        </h:form>
+    </composite:implementation>
+</body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/resources/composite/multiActionSource.xhtml b/test/servlet30/systest/src/main/webapp/resources/composite/multiActionSource.xhtml
new file mode 100644
index 0000000..0539b5c
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/composite/multiActionSource.xhtml
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:cc="http://java.sun.com/jsf/composite">
+<cc:interface>
+  <cc:attribute name="submitAction" targetAttributeName="action" />
+  <cc:attribute name="cancelAction" targetAttributeName="action" />
+  <cc:actionSource name="submitAction"/>
+  <cc:actionSource name="cancelAction"/>  
+</cc:interface>
+<cc:implementation>
+  <h:commandButton id="submitAction" value="submit" />
+  <h:commandButton id="cancelAction" value="cancel" />
+</cc:implementation>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/resources/composite/multiActionSourceMethodSignatures.xhtml b/test/servlet30/systest/src/main/webapp/resources/composite/multiActionSourceMethodSignatures.xhtml
new file mode 100644
index 0000000..2398c50
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/composite/multiActionSourceMethodSignatures.xhtml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:cc="http://java.sun.com/jsf/composite">
+<cc:interface>
+  <cc:attribute name="submitAction" targetAttributeName="action" 
+                method-signature="java.lang.Object action()" />
+  <cc:attribute name="cancelAction" targetAttributeName="action" 
+                method-signature="java.lang.Object action()" />
+  <cc:actionSource name="submitAction"/>
+  <cc:actionSource name="cancelAction"/>  
+</cc:interface>
+<cc:implementation>
+  <h:commandButton id="submitAction" value="submit" />
+  <h:commandButton id="cancelAction" value="cancel" />
+</cc:implementation>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/resources/composite/myaction.xhtml b/test/servlet30/systest/src/main/webapp/resources/composite/myaction.xhtml
new file mode 100644
index 0000000..b5f8262
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/composite/myaction.xhtml
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:composite="http://java.sun.com/jsf/composite"
+      xmlns:ez="http://java.sun.com/jsf/composite/composite">
+<head>
+    <title>Should Not Be Displayed</title>
+</head>
+<body>
+    <composite:interface >
+        <composite:attribute name="myaction" required="false" method-signature="java.lang.String f()" />
+    </composite:interface>
+    <composite:implementation>
+        <h:form id="form">
+            <h:commandButton id="submit" value="submit" action="#{cc.attrs.myaction}" />
+        </h:form>
+        <h:messages />
+    </composite:implementation>
+</body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/resources/composite/nesting.xhtml b/test/servlet30/systest/src/main/webapp/resources/composite/nesting.xhtml
new file mode 100644
index 0000000..1ee4715
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/composite/nesting.xhtml
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:c="http://java.sun.com/jsp/jstl/core"
+      xmlns:composite="http://java.sun.com/jsf/composite"
+      xmlns:ez="http://java.sun.com/jsf/composite/composite">
+<head>
+</head>
+
+<body>
+<composite:interface />
+<composite:implementation>
+    <composite:insertChildren />
+</composite:implementation>
+
+</body>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/resources/composite/nesting1.xhtml b/test/servlet30/systest/src/main/webapp/resources/composite/nesting1.xhtml
new file mode 100644
index 0000000..4733c1a
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/composite/nesting1.xhtml
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:composite="http://java.sun.com/jsf/composite"
+      xmlns:ez="http://java.sun.com/jsf/composite/composite">
+<head>
+    <title>Should Not Be Displayed</title>
+</head>
+<body>
+    <composite:interface>
+        <composite:attribute name="value" required="true"/>
+    </composite:interface>
+    <composite:implementation>
+        <ez:wrapper>
+            <span id="value">Should have a value: <h:outputText value="#{cc.attrs.value}" /></span>
+            <br />
+            <span id="novalue">Shouldn't have a value: <h:outputText value="#{cc.parent.attrs.value}" /></span>
+        </ez:wrapper>
+    </composite:implementation>
+</body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/resources/composite/nesting10.xhtml b/test/servlet30/systest/src/main/webapp/resources/composite/nesting10.xhtml
new file mode 100644
index 0000000..e8c3ccb
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/composite/nesting10.xhtml
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:c="http://java.sun.com/jsp/jstl/core"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:composite="http://java.sun.com/jsf/composite"
+      xmlns:ez="http://java.sun.com/jsf/composite/composite">
+<head>
+    <title>Should Not Be Displayed</title>
+</head>
+<body>
+    <composite:interface>
+        <composite:attribute name="bean" required="true" />
+    </composite:interface>
+    <composite:implementation>
+        <ez:nesting6 id="nesting6" bean="#{cc.attrs.bean}"/>
+    </composite:implementation>
+</body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/resources/composite/nesting11.xhtml b/test/servlet30/systest/src/main/webapp/resources/composite/nesting11.xhtml
new file mode 100644
index 0000000..2d54569
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/composite/nesting11.xhtml
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:c="http://java.sun.com/jsp/jstl/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:composite="http://java.sun.com/jsf/composite"
+      xmlns:ez="http://java.sun.com/jsf/composite/composite">
+<head>
+    <title>Should Not Be Displayed</title>
+</head>
+<body>
+    <composite:interface>
+        <composite:attribute name="value" required="true"/>
+        <composite:attribute name="values" required="true" />
+    </composite:interface>
+    <composite:implementation>
+        <c:choose>
+            <c:when test="#{cc.attrs.value eq 'equalityCheck'}">
+                <span>PASSED</span><br />
+            </c:when>
+            <c:otherwise>
+                <span>FAILED</span><br />
+            </c:otherwise>
+        </c:choose>
+        <ez:nesting9 check="#{cc.attrs.value}" />
+        <c:forEach items="#{cc.attrs.values}" var="v">
+            <ez:nesting9 check="#{v}" />
+        </c:forEach>
+    </composite:implementation>
+</body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/resources/composite/nesting2.xhtml b/test/servlet30/systest/src/main/webapp/resources/composite/nesting2.xhtml
new file mode 100644
index 0000000..e6c1ad9
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/composite/nesting2.xhtml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:composite="http://java.sun.com/jsf/composite"
+      xmlns:ez="http://java.sun.com/jsf/composite/composite">
+<head>
+    <title>Should Not Be Displayed</title>
+</head>
+<body>
+    <composite:interface>
+        <composite:attribute name="customAction" required="true" method-signature="String method()"/>
+    </composite:interface>
+    <composite:implementation>
+        <ez:wrapper>
+            <h:commandButton id="commandButton" value="Click Me" action="#{cc.attrs.customAction}" />
+        </ez:wrapper>
+    </composite:implementation>
+</body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/resources/composite/nesting3.xhtml b/test/servlet30/systest/src/main/webapp/resources/composite/nesting3.xhtml
new file mode 100644
index 0000000..b705b3c
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/composite/nesting3.xhtml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:composite="http://java.sun.com/jsf/composite"
+      xmlns:ez="http://java.sun.com/jsf/composite/composite">
+<head>
+    <title>Should Not Be Displayed</title>
+</head>
+<body>
+    <composite:interface>
+        <composite:attribute name="action" required="true" method-signature="String method()" targets="wrapper:commandButton"/>
+    </composite:interface>
+    <composite:implementation>
+        <ez:wrapper id="wrapper">
+            <h:commandButton id="commandButton" value="Click Me" />
+        </ez:wrapper>
+    </composite:implementation>
+</body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/resources/composite/nesting4.xhtml b/test/servlet30/systest/src/main/webapp/resources/composite/nesting4.xhtml
new file mode 100644
index 0000000..26fd557
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/composite/nesting4.xhtml
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:c="http://java.sun.com/jsp/jstl/core"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:composite="http://java.sun.com/jsf/composite"
+      xmlns:ez="http://java.sun.com/jsf/composite/composite">
+<head>
+    <title>Should Not Be Displayed</title>
+</head>
+<body>
+    <composite:interface>
+        <composite:attribute name="attr1" required="false" />
+        <composite:attribute name="attr2" required="false" />
+    </composite:interface>
+    <composite:implementation>
+        <c:set var="myvar" value="#{cc.attrs.attr1}" />
+        <ez:nesting5 id="nesting5" other="#{myvar}" attr2="#{cc.attrs.attr2}" cid="#{cc.clientId}" />
+    </composite:implementation>
+</body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/resources/composite/nesting5.xhtml b/test/servlet30/systest/src/main/webapp/resources/composite/nesting5.xhtml
new file mode 100644
index 0000000..fa02de2
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/composite/nesting5.xhtml
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:composite="http://java.sun.com/jsf/composite"
+      xmlns:ez="http://java.sun.com/jsf/composite/composite">
+<head>
+    <title>Should Not Be Displayed</title>
+</head>
+<body>
+    <composite:interface>
+        <composite:attribute name="other" required="false" />
+        <composite:attribute name="attr2" required="false" />
+        <composite:attribute name="cid" required="false" />
+    </composite:interface>
+    <composite:implementation>
+        Other: <h:outputText style="color:black" value="#{cc.attrs.other}" /><br />
+        Attr2: <h:outputText style="color:black" value="#{cc.attrs.attr2}" /><br />
+        Cid:   <h:outputText style="color:black" value="#{cc.attrs.cid}" /><br />
+    </composite:implementation>
+</body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/resources/composite/nesting6.xhtml b/test/servlet30/systest/src/main/webapp/resources/composite/nesting6.xhtml
new file mode 100644
index 0000000..82c1225
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/composite/nesting6.xhtml
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:c="http://java.sun.com/jsp/jstl/core"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:composite="http://java.sun.com/jsf/composite"
+      xmlns:ez="http://java.sun.com/jsf/composite/composite">
+<head>
+    <title>Should Not Be Displayed</title>
+</head>
+<body>
+    <composite:interface>
+        <composite:attribute name="bean" required="true" />
+    </composite:interface>
+    <composite:implementation>
+        <ez:nesting7 id="nesting7" action="#{cc.attrs.bean.action}"
+                                   actionListener="#{cc.attrs.bean.actionListener}"
+                                   validator="#{cc.attrs.bean.validate}"
+                                   valueChangeListener="#{cc.attrs.bean.valueChange}"
+                                   bean="#{cc.attrs.bean}"/>
+    </composite:implementation>
+</body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/resources/composite/nesting7.xhtml b/test/servlet30/systest/src/main/webapp/resources/composite/nesting7.xhtml
new file mode 100644
index 0000000..ffc240d
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/composite/nesting7.xhtml
@@ -0,0 +1,89 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:c="http://java.sun.com/jsp/jstl/core"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:composite="http://java.sun.com/jsf/composite"
+      xmlns:ez="http://java.sun.com/jsf/composite/composite">
+<head>
+    <title>Should Not Be Displayed</title>
+</head>
+<body>
+    <composite:interface>
+        <composite:attribute name="action" method-signature="String method()" targets="form1:command" />
+        <composite:attribute name="actionListener" method-signature="void method(javax.faces.event.ActionEvent)" targets="form2:command2" />
+        <composite:attribute name="validator" method-signature="void validate(javax.faces.context.FacesContext, javax.faces.component.UIComponent, java.lang.Object)" targets="form4:input" />
+        <composite:attribute name="valueChangeListener" method-signature="void valueChange(javax.faces.event.ValueChangeEvent)" targets="form5:input2" />
+        <composite:attribute name="bean" type="com.sun.faces.composite.CompositeBean" />
+    </composite:interface>
+    <composite:implementation>
+        <h:form id="form1">
+            <h:commandButton id="command" value="action" />
+        </h:form>
+        <br />
+        <h:form id="form2">
+            <h:commandButton id="command2" value="actionListener" />
+        </h:form>
+        <br />
+        <h:form id="form3">
+            <h:commandButton id="command3" value="custom" action="#{cc.attrs.bean.custom}"/>
+        </h:form>
+        <br />
+        <h:form id="form4">
+            <h:inputText id="input" />
+            <h:commandButton id="command" value="valiator"/>
+        </h:form>
+        <br />
+        <h:form id="form5">
+            <h:inputText id="input2" />
+            <h:commandButton id="command" value="valueChange" />
+        </h:form>
+    </composite:implementation>
+</body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/resources/composite/nesting8.xhtml b/test/servlet30/systest/src/main/webapp/resources/composite/nesting8.xhtml
new file mode 100644
index 0000000..289ef81
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/composite/nesting8.xhtml
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:c="http://java.sun.com/jsp/jstl/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:composite="http://java.sun.com/jsf/composite"
+      xmlns:ez="http://java.sun.com/jsf/composite/composite">
+<head>
+    <title>Should Not Be Displayed</title>
+</head>
+<body>
+    <composite:interface>
+        <composite:attribute name="value" required="true"/>
+        <composite:attribute name="values" required="true" />
+    </composite:interface>
+    <composite:implementation>
+        <c:choose>
+            <c:when test="#{cc.attrs.value eq 'equalityCheck'}">
+                <span>PASSED</span><br />
+            </c:when>
+            <c:otherwise>
+                <span>FAILED</span><br />
+            </c:otherwise>
+        </c:choose>
+        <ez:nesting11 value="#{cc.attrs.value}" values="#{cc.attrs.values}" />
+    </composite:implementation>
+</body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/resources/composite/nesting9.xhtml b/test/servlet30/systest/src/main/webapp/resources/composite/nesting9.xhtml
new file mode 100644
index 0000000..489e803
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/composite/nesting9.xhtml
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:c="http://java.sun.com/jsp/jstl/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:composite="http://java.sun.com/jsf/composite"
+      xmlns:ez="http://java.sun.com/jsf/composite/composite">
+<head>
+    <title>Should Not Be Displayed</title>
+</head>
+<body>
+    <composite:interface>
+        <composite:attribute name="check" required="true"/>
+    </composite:interface>
+    <composite:implementation>
+        <c:choose>
+            <c:when test="#{cc.attrs.check eq 'equalityCheck'}">
+                <span>PASSED</span><br />
+            </c:when>
+            <c:otherwise>
+                <span>FAILED</span><br />
+            </c:otherwise>
+        </c:choose>
+    </composite:implementation>
+</body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/resources/composite/notrequired.xhtml b/test/servlet30/systest/src/main/webapp/resources/composite/notrequired.xhtml
new file mode 100644
index 0000000..078f8ec
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/composite/notrequired.xhtml
@@ -0,0 +1,65 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:composite="http://java.sun.com/jsf/composite">
+<head>
+
+<title>Not present in rendered output</title>
+
+</head>
+
+<body>
+
+<composite:interface>
+    <composite:attribute name="action" required="false" method-signature="String f()" targets="command" />
+</composite:interface>
+
+<composite:implementation>
+    <h:commandButton id="command" />
+</composite:implementation>
+
+</body>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/resources/composite/renderFacetRequiredFalse.xhtml b/test/servlet30/systest/src/main/webapp/resources/composite/renderFacetRequiredFalse.xhtml
new file mode 100644
index 0000000..a3676c6
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/composite/renderFacetRequiredFalse.xhtml
@@ -0,0 +1,63 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:composite="http://java.sun.com/jsf/composite">
+<head>
+
+<title>Not present in rendered output</title>
+
+</head>
+
+<body>
+
+<composite:interface/>
+
+<composite:implementation>
+   <composite:renderFacet name="facet"/>
+</composite:implementation>
+
+</body>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/resources/composite/renderFacetRequiredTrue.xhtml b/test/servlet30/systest/src/main/webapp/resources/composite/renderFacetRequiredTrue.xhtml
new file mode 100644
index 0000000..4717dee
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/composite/renderFacetRequiredTrue.xhtml
@@ -0,0 +1,63 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:composite="http://java.sun.com/jsf/composite">
+<head>
+
+<title>Not present in rendered output</title>
+
+</head>
+
+<body>
+
+<composite:interface/>
+
+<composite:implementation>
+   <composite:renderFacet name="header" required="true"/>
+</composite:implementation>
+
+</body>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/resources/composite/required.xhtml b/test/servlet30/systest/src/main/webapp/resources/composite/required.xhtml
new file mode 100644
index 0000000..8d6eba5
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/composite/required.xhtml
@@ -0,0 +1,65 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:composite="http://java.sun.com/jsf/composite">
+<head>
+
+<title>Not present in rendered output</title>
+
+</head>
+
+<body>
+
+<composite:interface>
+    <composite:attribute name="action" required="true" method-signature="String f()" targets="command" />
+</composite:interface>
+
+<composite:implementation>
+    <h:commandButton id="command" />
+</composite:implementation>
+
+</body>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/resources/composite/required01.xhtml b/test/servlet30/systest/src/main/webapp/resources/composite/required01.xhtml
new file mode 100644
index 0000000..9bf35f6
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/composite/required01.xhtml
@@ -0,0 +1,66 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:composite="http://java.sun.com/jsf/composite">
+<head>
+
+<title>Not present in rendered output</title>
+
+</head>
+
+<body>
+
+<composite:interface>
+
+    <composite:attribute name="table" required="true" />
+</composite:interface>
+
+<composite:implementation>
+    <h:commandButton id="command" value="#{cc.attrs.table}" />
+</composite:implementation>
+
+</body>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/resources/composite/requiredFacet.xhtml b/test/servlet30/systest/src/main/webapp/resources/composite/requiredFacet.xhtml
new file mode 100644
index 0000000..2921ee2
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/composite/requiredFacet.xhtml
@@ -0,0 +1,66 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:composite="http://java.sun.com/jsf/composite">
+<head>
+
+<title>Not present in rendered output</title>
+
+</head>
+
+<body>
+
+<composite:interface>
+
+    <composite:facet name="table" required="true" />
+</composite:interface>
+
+<composite:implementation>
+    <composite:insertFacet name="table" />
+</composite:implementation>
+
+</body>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/resources/composite/resourceDependencyComponent.xhtml b/test/servlet30/systest/src/main/webapp/resources/composite/resourceDependencyComponent.xhtml
new file mode 100644
index 0000000..f6b352b
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/composite/resourceDependencyComponent.xhtml
@@ -0,0 +1,79 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:cc="http://java.sun.com/jsf/composite">
+<head>
+
+<title>Not present in rendered output</title>
+
+</head>
+
+<body>
+
+<cc:interface name="resourceDependencyComponent"
+                     displayName="Very Simple Composite Component"
+                     preferred="true"
+                     expert="false"
+                     shortDescription="An illustration of the composite component feature with a resource dependency"
+                     componentType="resourceDependencyComponent">
+
+
+
+</cc:interface>
+
+<cc:implementation>
+
+    <h:form>
+      <h:commandButton id="navigateAway" value="Go to next page" action="resourceDependencyComponentNextPage" />
+      <h:commandButton id="stay" value="Stay on same page" />
+    </h:form>
+
+</cc:implementation>
+
+</body>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/resources/composite/showClientId01.xhtml b/test/servlet30/systest/src/main/webapp/resources/composite/showClientId01.xhtml
new file mode 100644
index 0000000..6f97352
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/composite/showClientId01.xhtml
@@ -0,0 +1,70 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:composite="http://java.sun.com/jsf/composite">
+<head>
+
+<title>Not present in rendered output</title>
+
+</head>
+
+<body>
+
+<composite:interface >
+
+</composite:interface>
+
+<composite:implementation>
+
+  <p class="grayBox">My clientId is #{cc.clientId}</p>
+
+
+</composite:implementation>
+
+</body>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/resources/composite/simpleCompositeComponent.xhtml b/test/servlet30/systest/src/main/webapp/resources/composite/simpleCompositeComponent.xhtml
new file mode 100644
index 0000000..4519bb9
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/composite/simpleCompositeComponent.xhtml
@@ -0,0 +1,15 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:cc="http://java.sun.com/jsf/composite"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <!-- INTERFACE -->
+    <cc:interface>
+        <cc:attribute preferred="true" name="value" type="String"/>
+    </cc:interface>
+
+    <!-- IMPLEMENTATION -->
+    <cc:implementation>
+        <h:inputText  value="#{cc.attrs.value}"/>
+    </cc:implementation>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/resources/composite/validator1.xhtml b/test/servlet30/systest/src/main/webapp/resources/composite/validator1.xhtml
new file mode 100644
index 0000000..3d1bb2e
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/composite/validator1.xhtml
@@ -0,0 +1,65 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:composite="http://java.sun.com/jsf/composite">
+<head>
+
+<title>Not present in rendered output</title>
+
+</head>
+
+<body>
+
+<composite:interface>
+    <composite:editableValueHolder name="input"/>
+</composite:interface>
+
+<composite:implementation>
+    <h:inputText id="input" value="Input1"/>
+</composite:implementation>
+
+</body>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/resources/composite/validator2.xhtml b/test/servlet30/systest/src/main/webapp/resources/composite/validator2.xhtml
new file mode 100644
index 0000000..135e13a
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/composite/validator2.xhtml
@@ -0,0 +1,65 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:composite="http://java.sun.com/jsf/composite">
+<head>
+
+<title>Not present in rendered output</title>
+
+</head>
+
+<body>
+
+<composite:interface>
+    <composite:editableValueHolder name="input" targets="it2"/>
+</composite:interface>
+
+<composite:implementation>
+    <h:inputText id="it2" value="Input2"/>
+</composite:implementation>
+
+</body>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/resources/composite/validator3.xhtml b/test/servlet30/systest/src/main/webapp/resources/composite/validator3.xhtml
new file mode 100644
index 0000000..d485037
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/composite/validator3.xhtml
@@ -0,0 +1,66 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:ez="http://java.sun.com/jsf/composite/composite"
+      xmlns:composite="http://java.sun.com/jsf/composite">
+<head>
+
+<title>Not present in rendered output</title>
+
+</head>
+
+<body>
+
+<composite:interface>
+    <composite:editableValueHolder name="input"/>
+</composite:interface>
+
+<composite:implementation>
+    <ez:validator1 id="input"/>    
+</composite:implementation>
+
+</body>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/resources/composite/validator4.xhtml b/test/servlet30/systest/src/main/webapp/resources/composite/validator4.xhtml
new file mode 100644
index 0000000..313946d
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/composite/validator4.xhtml
@@ -0,0 +1,68 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:composite="http://java.sun.com/jsf/composite"
+      xmlns:naming="http://mojarra.dev.java.net/source1">
+<head>
+
+<title>Not present in rendered output</title>
+
+</head>
+
+<body>
+
+<composite:interface>
+    <composite:editableValueHolder name="input" targets="naming:input"/>
+</composite:interface>
+
+<composite:implementation>
+    <naming:naming id="naming">
+        <h:inputText id="input" value="Input4"/>
+    </naming:naming>
+</composite:implementation>
+
+</body>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/resources/composite/validatorWrapper1.xhtml b/test/servlet30/systest/src/main/webapp/resources/composite/validatorWrapper1.xhtml
new file mode 100644
index 0000000..5ce65e8
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/composite/validatorWrapper1.xhtml
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:c="http://java.sun.com/jsp/jstl/core"
+      xmlns:composite="http://java.sun.com/jsf/composite"
+      xmlns:ez="http://java.sun.com/jsf/composite/composite">
+<head>
+</head>
+
+<body>
+<composite:interface>
+    <composite:attribute name="customValidator" method-signature="void f(javax.faces.context.FacesContext, javax.faces.component.UIComponent, java.lang.Object)" required="false" />
+</composite:interface>
+<composite:implementation>
+   <ez:nesting id="nesting">
+   <div style="border: 1px black solid">
+       <ez:customValidator id="aw1" validator="#{cc.attrs.customValidator}" />
+   </div>
+   </ez:nesting>
+</composite:implementation>
+
+</body>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/resources/composite/validatorWrapper2.xhtml b/test/servlet30/systest/src/main/webapp/resources/composite/validatorWrapper2.xhtml
new file mode 100644
index 0000000..a714914
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/composite/validatorWrapper2.xhtml
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:c="http://java.sun.com/jsp/jstl/core"
+      xmlns:composite="http://java.sun.com/jsf/composite"
+      xmlns:ez="http://java.sun.com/jsf/composite/composite">
+<head>
+</head>
+
+<body>
+<composite:interface>
+    <composite:attribute name="bean" type="com.sun.faces.composite.CompositeBean" required="false" />
+</composite:interface>
+<composite:implementation>
+   <ez:nesting id="nesting">
+   <div style="border: 1px black solid">
+       <ez:customValidator id="aw2" validator="#{cc.attrs.bean.validate}" />
+   </div>
+   </ez:nesting>
+</composite:implementation>
+
+</body>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/resources/composite/validatorWrapper3.xhtml b/test/servlet30/systest/src/main/webapp/resources/composite/validatorWrapper3.xhtml
new file mode 100644
index 0000000..a9f31b7
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/composite/validatorWrapper3.xhtml
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:c="http://java.sun.com/jsp/jstl/core"
+      xmlns:composite="http://java.sun.com/jsf/composite"
+      xmlns:ez="http://java.sun.com/jsf/composite/composite">
+<head>
+</head>
+
+<body>
+<composite:interface>
+    <composite:attribute name="bean" type="com.sun.faces.composite.CompositeBean" required="false" />
+</composite:interface>
+<composite:implementation>
+   <ez:nesting id="nesting">
+   <div style="border: 1px black solid">
+       <ez:validatorWrapper1 id="aw3" customValidator="#{cc.attrs.bean.validate}" />
+   </div>
+   </ez:nesting>
+</composite:implementation>
+
+</body>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/resources/composite/validatorWrapper4.xhtml b/test/servlet30/systest/src/main/webapp/resources/composite/validatorWrapper4.xhtml
new file mode 100644
index 0000000..797981d
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/composite/validatorWrapper4.xhtml
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:c="http://java.sun.com/jsp/jstl/core"
+      xmlns:composite="http://java.sun.com/jsf/composite"
+      xmlns:ez="http://java.sun.com/jsf/composite/composite">
+<head>
+</head>
+
+<body>
+<composite:interface>
+    <composite:attribute name="customValidator" method-signature="void f(javax.faces.context.FacesContext, javax.faces.component.UIComponent, java.lang.Object)" required="true" />
+</composite:interface>
+<composite:implementation>
+   <ez:nesting id="nesting">
+   <div style="border: 1px black solid">
+       <ez:validatorWrapper1 id="aw4" customValidator="#{cc.attrs.customValidator}" />
+   </div>
+   </ez:nesting>
+</composite:implementation>
+
+</body>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/resources/composite/valueChangeSetPropertyActionListener.xhtml b/test/servlet30/systest/src/main/webapp/resources/composite/valueChangeSetPropertyActionListener.xhtml
new file mode 100644
index 0000000..7b22851
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/composite/valueChangeSetPropertyActionListener.xhtml
@@ -0,0 +1,69 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:composite="http://java.sun.com/jsf/composite">
+<head>
+
+<title>Not present in rendered output</title>
+
+</head>
+
+<body>
+
+<composite:interface>
+    <composite:editableValueHolder name="value"/>
+    <composite:actionSource name="submit"/>
+</composite:interface>
+
+<composite:implementation>
+    <p>inputText with id="value": <h:inputText id="value" /></p>
+
+   <p><h:commandButton id="submit" value="submit" /></p>
+
+</composite:implementation>
+
+</body>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/resources/composite/valueChangeWrapper1.xhtml b/test/servlet30/systest/src/main/webapp/resources/composite/valueChangeWrapper1.xhtml
new file mode 100644
index 0000000..17e6251
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/composite/valueChangeWrapper1.xhtml
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:c="http://java.sun.com/jsp/jstl/core"
+      xmlns:composite="http://java.sun.com/jsf/composite"
+      xmlns:ez="http://java.sun.com/jsf/composite/composite">
+<head>
+</head>
+
+<body>
+<composite:interface>
+    <composite:attribute name="customValueChange" method-signature="void f(javax.faces.event.ValueChangeEvent)" required="false" />
+</composite:interface>
+<composite:implementation>
+   <ez:nesting id="nesting">
+   <div style="border: 1px black solid">
+       <ez:customValueChangeListener id="aw1" valueChangeListener="#{cc.attrs.customValueChange}" />
+   </div>
+   </ez:nesting>
+</composite:implementation>
+
+</body>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/resources/composite/valueChangeWrapper2.xhtml b/test/servlet30/systest/src/main/webapp/resources/composite/valueChangeWrapper2.xhtml
new file mode 100644
index 0000000..3c3f09f
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/composite/valueChangeWrapper2.xhtml
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:c="http://java.sun.com/jsp/jstl/core"
+      xmlns:composite="http://java.sun.com/jsf/composite"
+      xmlns:ez="http://java.sun.com/jsf/composite/composite">
+<head>
+</head>
+
+<body>
+<composite:interface>
+    <composite:attribute name="bean" type="com.sun.faces.composite.CompositeBean" required="false" />
+</composite:interface>
+<composite:implementation>
+   <ez:nesting id="nesting">
+   <div style="border: 1px black solid">
+       <ez:customValueChangeListener id="aw2" valueChangeListener="#{cc.attrs.bean.valueChange}" />
+   </div>
+   </ez:nesting>
+</composite:implementation>
+
+</body>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/resources/composite/valueChangeWrapper3.xhtml b/test/servlet30/systest/src/main/webapp/resources/composite/valueChangeWrapper3.xhtml
new file mode 100644
index 0000000..c232e1c
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/composite/valueChangeWrapper3.xhtml
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:c="http://java.sun.com/jsp/jstl/core"
+      xmlns:composite="http://java.sun.com/jsf/composite"
+      xmlns:ez="http://java.sun.com/jsf/composite/composite">
+<head>
+</head>
+
+<body>
+<composite:interface>
+    <composite:attribute name="bean" type="com.sun.faces.composite.CompositeBean" required="false" />
+</composite:interface>
+<composite:implementation>
+   <ez:nesting id="nesting">
+   <div style="border: 1px black solid">
+       <ez:valueChangeWrapper1 id="aw3" customValueChange="#{cc.attrs.bean.valueChange}" />
+   </div>
+   </ez:nesting>
+</composite:implementation>
+
+</body>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/resources/composite/valueChangeWrapper4.xhtml b/test/servlet30/systest/src/main/webapp/resources/composite/valueChangeWrapper4.xhtml
new file mode 100644
index 0000000..167ed4a
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/composite/valueChangeWrapper4.xhtml
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:c="http://java.sun.com/jsp/jstl/core"
+      xmlns:composite="http://java.sun.com/jsf/composite"
+      xmlns:ez="http://java.sun.com/jsf/composite/composite">
+<head>
+</head>
+
+<body>
+<composite:interface>
+    <composite:attribute name="customValueChange" method-signature="void f(javax.faces.event.ValueChangeEvent)" required="true" />
+</composite:interface>
+<composite:implementation>
+   <ez:nesting id="nesting">
+   <div style="border: 1px black solid">
+       <ez:valueChangeWrapper1 id="aw4" customValueChange="#{cc.attrs.customValueChange}" />
+   </div>
+   </ez:nesting>
+</composite:implementation>
+
+</body>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/resources/composite/veDefaults.xhtml b/test/servlet30/systest/src/main/webapp/resources/composite/veDefaults.xhtml
new file mode 100644
index 0000000..0c7c42b
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/composite/veDefaults.xhtml
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:c="http://java.sun.com/jsp/jstl/core"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:composite="http://java.sun.com/jsf/composite"
+      xmlns:ez="http://java.sun.com/jsf/composite/composite">
+<head>
+    <title></title>
+</head>
+<body>
+    <composite:interface>
+        <composite:attribute name="a1" default="#{compositeBean.text}" />
+    </composite:interface>
+    <composite:implementation>
+        <h:form id="form1">
+            <h:outputText value="#{cc.attrs.a1}"/>
+        </h:form>
+    </composite:implementation>
+</body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/resources/composite/veDefaults_1966.xhtml b/test/servlet30/systest/src/main/webapp/resources/composite/veDefaults_1966.xhtml
new file mode 100644
index 0000000..21ae8f5
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/composite/veDefaults_1966.xhtml
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<extension xmlns="http://java.sun.com/jsf/composite"
+        xmlns:h="http://java.sun.com/jsf/html"
+        xmlns:f="http://java.sun.com/jsf/core">
+
+    <interface>
+        <attribute name="items" required="false" default="#{compositeBean.defaultValueList}" type="java.util.List"/>
+    </interface>
+
+    <implementation>
+        <h:dataTable value="#{cc.attrs.items}" var="item" id="DataTable">
+            <h:column>
+                <h:outputText value="---#{item}---" />
+            </h:column>
+        </h:dataTable>
+    </implementation>
+
+</extension>
\ No newline at end of file
diff --git a/test/servlet30/systest/src/main/webapp/resources/composite/veDefaults_1966_Color.xhtml b/test/servlet30/systest/src/main/webapp/resources/composite/veDefaults_1966_Color.xhtml
new file mode 100644
index 0000000..50930aa
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/composite/veDefaults_1966_Color.xhtml
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<extension xmlns="http://java.sun.com/jsf/composite"
+        xmlns:h="http://java.sun.com/jsf/html"
+        xmlns:f="http://java.sun.com/jsf/core">
+
+    <interface>
+        <attribute name="color" required="false" default="200,100,50" type="java.awt.Color"/>
+    </interface>
+
+    <implementation>
+        <h:outputText id="Output" value="---#{cc.attrs.color}---" />
+    </implementation>
+
+</extension>
\ No newline at end of file
diff --git a/test/servlet30/systest/src/main/webapp/resources/composite/veDefaults_1986.xhtml b/test/servlet30/systest/src/main/webapp/resources/composite/veDefaults_1986.xhtml
new file mode 100644
index 0000000..f643209
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/composite/veDefaults_1986.xhtml
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<extension xmlns="http://java.sun.com/jsf/composite"
+           xmlns:html="http://www.w3.org/1999/xhtml"
+           xmlns:h="http://java.sun.com/jsf/html"
+           xmlns:f="http://java.sun.com/jsf/core">
+
+    <interface>
+        <attribute name="value" required="true"/>
+    </interface>
+
+    <implementation>
+        <h:inputText id="Input" value="#{cc.attrs.value}"/>
+    </implementation>
+
+</extension>
\ No newline at end of file
diff --git a/test/servlet30/systest/src/main/webapp/resources/composite/verifyUserIsInRole.xhtml b/test/servlet30/systest/src/main/webapp/resources/composite/verifyUserIsInRole.xhtml
new file mode 100644
index 0000000..9e74f01
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/composite/verifyUserIsInRole.xhtml
@@ -0,0 +1,18 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+    xmlns:f="http://java.sun.com/jsf/core"
+    xmlns:cc="http://java.sun.com/jsf/composite">
+
+    <cc:interface componentType="javaTopLevelComponent">
+      
+  </cc:interface>
+
+    <cc:implementation>
+
+      <f:event type="preRenderView"
+               listener="#{cc.forwardIfNotInRole}" />
+      
+  </cc:implementation>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/resources/composite/wrapper.xhtml b/test/servlet30/systest/src/main/webapp/resources/composite/wrapper.xhtml
new file mode 100644
index 0000000..0f23af3
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/composite/wrapper.xhtml
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:composite="http://java.sun.com/jsf/composite"
+      xmlns:ez="http://java.sun.com/jsf/composite/composite">
+<head>
+    <title>Should Not Be Displayed</title>
+</head>
+<body>
+    <composite:interface >
+        <composite:attribute name="items" required="false" />
+        <composite:attribute name="itemsList" required="false" />
+        <composite:attribute name="testAction" required="false" method-signature="java.lang.String f()" />
+        <composite:attribute name="testAction2" required="false" method-signature="java.lang.String f()" />
+    </composite:interface>
+    <composite:implementation>
+        <composite:insertChildren />
+    </composite:implementation>
+</body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/resources/ezbehaviors/compositeTest.xhtml b/test/servlet30/systest/src/main/webapp/resources/ezbehaviors/compositeTest.xhtml
new file mode 100644
index 0000000..b5f653c
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/ezbehaviors/compositeTest.xhtml
@@ -0,0 +1,84 @@
+<?xml version = "1.0" encoding = "UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:composite="http://java.sun.com/jsf/composite">
+<head>
+
+    <title>Not present in rendered output</title>
+
+</head>
+<composite:interface name="composite"
+                     displayName="BehaviorHandler composite component test">
+    <composite:attribute name="commandAction"
+                         method-signature="String f1()">
+    </composite:attribute>
+    <composite:attribute name="value" targets="input"/>
+    <composite:editableValueHolder name="input"/>
+    <composite:clientBehavior name="ok" default="true" event="action"
+                              targets="command cancel"/>
+</composite:interface>
+
+<composite:implementation>
+    <p>
+        <h:inputText id="input" value="#{cc.attrs.value}">
+        </h:inputText>
+        <h:commandButton id="cancel" value="Cancel"/>
+        <f:subview id="sub">
+            <h:panelGroup id="group">
+                <h:commandButton id="commandAction" value="Ok"
+                                 action="#{cc.attrs.commandAction}">
+                </h:commandButton>
+            </h:panelGroup>
+        </f:subview>
+    </p>
+
+
+</composite:implementation>
+
+<body>
+</body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/resources/i_spec_599_composite/i_spec_599_composite.xhtml b/test/servlet30/systest/src/main/webapp/resources/i_spec_599_composite/i_spec_599_composite.xhtml
new file mode 100644
index 0000000..213c9cd
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/i_spec_599_composite/i_spec_599_composite.xhtml
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+	xmlns:h="http://java.sun.com/jsf/html"
+	xmlns:ui="http://java.sun.com/jsf/facelets"
+	xmlns:composite="http://java.sun.com/jsf/composite">
+<h:body>
+
+	<composite:interface>
+           <composite:attribute name="customAttr" default="customAttrValue" />
+	</composite:interface>
+
+	<composite:implementation>
+		<p>This is the composite component</p>
+	</composite:implementation>
+
+</h:body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/resources/i_spec_599_composite_taglib/i_spec_599_composite_taglib.xhtml b/test/servlet30/systest/src/main/webapp/resources/i_spec_599_composite_taglib/i_spec_599_composite_taglib.xhtml
new file mode 100644
index 0000000..e137d45
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/i_spec_599_composite_taglib/i_spec_599_composite_taglib.xhtml
@@ -0,0 +1,23 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+          "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+	  xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:cc="http://java.sun.com/jsf/composite">
+<head>
+  <title></title>
+</head>
+
+<body>
+
+	<cc:interface>
+
+           <cc:attribute name="customAttr2" default="customAttrValue2" />
+
+	</cc:interface>
+	<cc:implementation>
+		<div id="#{cc.clientId}">Test</div>
+	</cc:implementation> 
+</body>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/resources/simple.css b/test/servlet30/systest/src/main/webapp/resources/simple.css
new file mode 100644
index 0000000..dcb36dc
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/simple.css
@@ -0,0 +1,43 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+.h1 {
+    color: red
+}
diff --git a/test/servlet30/systest/src/main/webapp/resources/simple.js b/test/servlet30/systest/src/main/webapp/resources/simple.js
new file mode 100644
index 0000000..682d7d3
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/simple.js
@@ -0,0 +1,3 @@
+function doit() {
+    alert("doit");
+}
\ No newline at end of file
diff --git a/test/servlet30/systest/src/main/webapp/resources/simple2.js b/test/servlet30/systest/src/main/webapp/resources/simple2.js
new file mode 100644
index 0000000..682d7d3
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/simple2.js
@@ -0,0 +1,3 @@
+function doit() {
+    alert("doit");
+}
\ No newline at end of file
diff --git a/test/servlet30/systest/src/main/webapp/resources/tmo/block.xhtml b/test/servlet30/systest/src/main/webapp/resources/tmo/block.xhtml
new file mode 100644
index 0000000..cfb0365
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/resources/tmo/block.xhtml
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+	xmlns:h="http://java.sun.com/jsf/html"
+	xmlns:ui="http://java.sun.com/jsf/facelets"
+	xmlns:composite="http://java.sun.com/jsf/composite">
+<h:body>
+
+	<composite:interface>
+		<composite:attribute name="collapsable" required="false" 
+default="false"/>
+	</composite:interface>
+
+	<composite:implementation>
+		<h:outputText value="collapsable = #{cc.attrs.collapsable}" />
+	</composite:implementation>
+
+</h:body>
+</html>
diff --git a/jsf-ri/web/test/resources/nvLibrary/images/duke-nv.gif b/test/servlet30/systest/src/main/webapp/resources/vLibrary/2_0/duke-nv.gif
similarity index 100%
copy from jsf-ri/web/test/resources/nvLibrary/images/duke-nv.gif
copy to test/servlet30/systest/src/main/webapp/resources/vLibrary/2_0/duke-nv.gif
diff --git a/jsf-ri/web/test/resources/nvLibrary/images/duke-nv.gif b/test/servlet30/systest/src/main/webapp/resources/vLibrary/2_0/duke.gif/1_0.gif
similarity index 100%
copy from jsf-ri/web/test/resources/nvLibrary/images/duke-nv.gif
copy to test/servlet30/systest/src/main/webapp/resources/vLibrary/2_0/duke.gif/1_0.gif
diff --git a/jsf-ri/web/test/resources/nvLibrary/images/duke-nv.gif b/test/servlet30/systest/src/main/webapp/resources/vLibrary/2_0/duke.gif/1_1.gif
similarity index 100%
copy from jsf-ri/web/test/resources/nvLibrary/images/duke-nv.gif
copy to test/servlet30/systest/src/main/webapp/resources/vLibrary/2_0/duke.gif/1_1.gif
diff --git a/jsf-ri/web/test/resources/nvLibrary/images/duke-nv.gif b/test/servlet30/systest/src/main/webapp/resources/vLibrary/2_0/duke2.gif/1_1
similarity index 100%
rename from jsf-ri/web/test/resources/nvLibrary/images/duke-nv.gif
rename to test/servlet30/systest/src/main/webapp/resources/vLibrary/2_0/duke2.gif/1_1
diff --git a/test/servlet30/systest/src/main/webapp/selectItemEscape.jsp b/test/servlet30/systest/src/main/webapp/selectItemEscape.jsp
new file mode 100644
index 0000000..dc61b39
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/selectItemEscape.jsp
@@ -0,0 +1,95 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+\<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+
+
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
+  <head> <title>Test SelectItem with escape true and false</title> </head>
+    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
+    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+    <body bgcolor="white">
+    <f:view>
+
+      <h:form prependId="false">
+
+<h:panelGrid columns="2">
+
+  SelectOneMenu with no escape value
+
+<h:selectOneMenu id="menu1">
+						<f:selectItem itemValue="10" itemLabel="menu1_Guy <Lafleur>" />
+						<f:selectItem itemValue="99" itemLabel="menu1_Wayne <Gretzky>" />
+						<f:selectItem itemValue="4" itemLabel="menu1_Bobby +Orr+"  />
+						<f:selectItem itemValue="2" itemLabel="menu1_Brad &{Park}" />
+						<f:selectItem itemValue="9" itemLabel="menu1_Gordie &Howe&" />
+					</h:selectOneMenu>
+SelectOneMenu with true escape value
+
+<h:selectOneMenu id="menu2">
+						<f:selectItem escape="true" itemValue="10" itemLabel="menu2_Guy <Lafleur>" />
+						<f:selectItem escape="true" itemValue="99" itemLabel="menu2_Wayne <Gretzky>" />
+						<f:selectItem escape="true" itemValue="4" itemLabel="menu2_Bobby +Orr+"  />
+						<f:selectItem escape="true" itemValue="2" itemLabel="menu2_Brad &{Park}" />
+						<f:selectItem escape="true" itemValue="9" itemLabel="menu2_Gordie &Howe&" />
+					</h:selectOneMenu>
+
+SelectOneMenu with false escape value
+
+<h:selectOneMenu id="menu3">
+						<f:selectItem escape="false" itemValue="10" itemLabel="menu3_Guy <Lafleur>" />
+						<f:selectItem escape="false" itemValue="99" itemLabel="menu3_Wayne <Gretzky>" />
+						<f:selectItem escape="false" itemValue="4" itemLabel="menu3_Bobby +Orr+"  />
+						<f:selectItem escape="false" itemValue="2" itemLabel="menu3_Brad &{Park}" />
+						<f:selectItem escape="false" itemValue="9" itemLabel="menu3_Gordie &Howe&" />
+					</h:selectOneMenu>
+
+
+</h:panelGrid>
+
+
+      </h:form>
+
+    </f:view>
+    </body>
+</html>  
diff --git a/test/servlet30/systest/src/main/webapp/session-invalidator.jsp b/test/servlet30/systest/src/main/webapp/session-invalidator.jsp
new file mode 100644
index 0000000..76dc3c5
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/session-invalidator.jsp
@@ -0,0 +1,94 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+  <head>
+    <title>Test with action that invalidates a session.</title>
+    <%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
+    <%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %>
+  </head>
+
+  <body>
+    <h1>Test with action that invalidates a session.</h1>
+
+    <f:view>
+
+     <h:form id="form">
+
+      <table border="1">
+
+       <tr>
+
+	 <td>
+
+	    Next cell's contents come from a bean in session scope.
+
+	 </td>
+
+	 <td>
+
+	    <h:outputText value="#{test3.stringProperty}" style="color: red"/>
+
+	 </td>
+
+	 <td>
+
+	   <h:commandButton action="#{methodRef.invalidateSession}"
+                          id="button1"
+                          value="Press to invalidate session and redisplay" />
+
+	 </td>
+
+       </tr>
+
+      </table>
+   
+      </h:form>
+
+    </f:view>
+
+
+  </body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/setApplicationMapProperty.xhtml b/test/servlet30/systest/src/main/webapp/setApplicationMapProperty.xhtml
new file mode 100644
index 0000000..38abc25
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/setApplicationMapProperty.xhtml
@@ -0,0 +1,58 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:c="http://java.sun.com/jsp/jstl/core"
+>
+<h:head>
+<title>Set an application scoped property from query string parameters</title>
+</h:head>
+
+<h:body>
+
+    <c:set value="#{param['value']}" target="#{applicationScope}" property="#{param['name']}" />
+
+</h:body>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/standard/autocomplete.jsp b/test/servlet30/systest/src/main/webapp/standard/autocomplete.jsp
new file mode 100644
index 0000000..7cd9fde
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/standard/autocomplete.jsp
@@ -0,0 +1,64 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+  <head>
+    <title>autocomplete.jsp</title>
+
+ <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
+ <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+
+  </head>
+  <body>
+      <f:view>
+          autocomplete on -> no attribute rendered: <h:inputSecret id="a" autocomplete="on"/>
+          autocomplete off -> attribute rendered: <h:inputSecret id="b" autocomplete="off"/>
+          no autocomplete defined -> no attribute rendered: <h:inputSecret id="c"/>
+          autocomplete on -> no attribute rendered: <h:inputText id="d" autocomplete="on"/>
+          autocomplete off -> attribute rendered: <h:inputText id="e" autocomplete="off"/>
+          no autocomplete defined -> no attribute rendered: <h:inputText id="f"/>
+      </f:view>
+  </body>
+</html>
+
+
diff --git a/test/servlet30/systest/src/main/webapp/standard/clinknoform.jsp b/test/servlet30/systest/src/main/webapp/standard/clinknoform.jsp
new file mode 100644
index 0000000..ab43125
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/standard/clinknoform.jsp
@@ -0,0 +1,65 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+  <head>
+    <title>clinknoform</title>
+    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
+    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+  </head>
+  <body>
+  <f:view>
+
+      <h:commandLink id="clink1" value="Link1"/>
+
+      <h:commandLink id="clink2">
+          <h:outputText value="Link2"/>
+      </h:commandLink>
+
+      <h:commandLink id="clink3" value="Click me once">
+          <h:outputText value=" and click me twice"/>
+      </h:commandLink>
+
+  </f:view>
+  </body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/standard/component01.jsp b/test/servlet30/systest/src/main/webapp/standard/component01.jsp
new file mode 100644
index 0000000..8c270f9
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/standard/component01.jsp
@@ -0,0 +1,100 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+  <head>
+    <title>component01.jsp</title>
+
+<%@ page import="javax.faces.FactoryFinder"
+%><%@ page import="javax.faces.application.Application"
+%><%@ page import="javax.faces.application.ApplicationFactory"
+%><%@ page import="javax.faces.context.FacesContext"
+%><%@ page import="javax.faces.component.UIInput"
+%><%@ page import="javax.el.ValueExpression"
+%>
+ <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
+ <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+<% request.setAttribute("attrName", "attrValue"); %>
+  </head>
+  <body>
+      <f:view>
+          <h:inputText id="username" binding="#{usernamecomponent}" size="20" onkeypress="#{requestScope.attrName}"/> 
+      </f:view>
+  </body>
+</html>
+<%
+
+  // Acquire the FacesContext instance for this request
+  FacesContext facesContext = FacesContext.getCurrentInstance();
+  if (facesContext == null) {
+    out.println("/component01.jsp FAILED - No FacesContext returned");
+    return;
+  }
+
+  // Acquire our Application instance
+  ApplicationFactory afactory = (ApplicationFactory)
+    FactoryFinder.getFactory(FactoryFinder.APPLICATION_FACTORY);
+  Application appl = afactory.getApplication();
+
+  ValueExpression binding = appl.getExpressionFactory().
+    createValueExpression(facesContext.getELContext(),"usernamecomponent", Object.class);
+  Object result = binding.getValue(facesContext.getELContext());
+  if (result == null || !(result instanceof UIInput)) {
+      System.out.println("/component01.jsp FAILED - Couldn't retrieve component.");
+      return;
+  }
+
+  UIInput usernamecomponent = (UIInput)result;
+  String size = (String) usernamecomponent.getAttributes().get("size");
+  if ( !(size.equals("20"))) {
+      System.out.println("/component01.jsp FAILED - Invalid value for size attribute");
+      return;
+  } 
+
+  String maxlength = (String) usernamecomponent.getAttributes().get("maxlength");
+  if ( !(maxlength.equals("32"))) {
+      System.out.println("/component01.jsp FAILED - Invalid value for maxlength attribute");
+      return;
+  } 
+%>
+
diff --git a/test/servlet30/systest/src/main/webapp/standard/dtablecolumnclasses.jsp b/test/servlet30/systest/src/main/webapp/standard/dtablecolumnclasses.jsp
new file mode 100644
index 0000000..de61943
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/standard/dtablecolumnclasses.jsp
@@ -0,0 +1,267 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<%@ page import="java.util.List" %>
+<%@ page import="java.util.ArrayList" %>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+    <title>dtablecolumnclasses.jsp</title>
+    <style type="text/css">
+        .b1 {
+            background-color: red;
+        }
+
+        .b2 {
+            background-color: green;
+        }
+
+        .b3 {
+            background-color: blue;
+        }
+
+        .b4 {
+            background-color: burlywood;
+        }
+        .b5 {
+            background-color: darkolivegreen;
+        }
+        .b6 {
+            background-color: darkviolet;
+        }
+        .b7 {
+            background-color: skyblue;
+        }
+    </style>
+    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
+    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+
+
+    <%
+        List<String[]> list = new ArrayList<String[]>(1);
+        list.add(new String[]{"c1", "c2", "c3", "c4", "c5", "c6"});
+        list.add(new String[]{"c1_1", "c2_1", "c3_1", "c4_1", "c5_1", "c6_1"});
+        request.setAttribute("list", list);
+    %>
+</head>
+<body>
+<f:view>
+    <h:dataTable value="#{requestScope.list}"
+                 var="row"
+                 columnClasses="b1,b2">
+        <h:column>
+            <h:outputText value="#{row[0]}"/>
+        </h:column>
+        <h:column>
+            <h:outputText value="#{row[1]}"/>
+        </h:column>
+        <h:column>
+            <h:outputText value="#{row[2]}"/>
+        </h:column>
+        <h:column>
+            <h:outputText value="#{row[3]}"/>
+        </h:column>
+        <h:column>
+            <h:outputText value="#{row[4]}"/>
+        </h:column>
+        <h:column>
+            <h:outputText value="#{row[5]}"/>
+        </h:column>
+    </h:dataTable>
+    <h:dataTable value="#{requestScope.list}"
+                 var="row"
+                 columnClasses="b1,b2,b3,b4,">
+        <h:column>
+            <h:outputText value="#{row[0]}"/>
+        </h:column>
+        <h:column>
+            <h:outputText value="#{row[1]}"/>
+        </h:column>
+        <h:column>
+            <h:outputText value="#{row[2]}"/>
+        </h:column>
+        <h:column>
+            <h:outputText value="#{row[3]}"/>
+        </h:column>
+        <h:column>
+            <h:outputText value="#{row[4]}"/>
+        </h:column>
+        <h:column>
+            <h:outputText value="#{row[5]}"/>
+        </h:column>
+    </h:dataTable>
+    <h:dataTable value="#{requestScope.list}"
+                 var="row"
+                 columnClasses="b1,b2,b3">
+        <h:column>
+            <h:outputText value="#{row[0]}"/>
+        </h:column>
+        <h:column>
+            <h:outputText value="#{row[1]}"/>
+        </h:column>
+        <h:column>
+            <h:outputText value="#{row[2]}"/>
+        </h:column>
+        <h:column>
+            <h:outputText value="#{row[3]}"/>
+        </h:column>
+        <h:column>
+            <h:outputText value="#{row[4]}"/>
+        </h:column>
+        <h:column>
+            <h:outputText value="#{row[5]}"/>
+        </h:column>
+    </h:dataTable>
+    <h:dataTable value="#{requestScope.list}"
+                 var="row"
+                 columnClasses="b1">
+        <h:column>
+            <h:outputText value="#{row[0]}"/>
+        </h:column>
+        <h:column>
+            <h:outputText value="#{row[1]}"/>
+        </h:column>
+        <h:column>
+            <h:outputText value="#{row[2]}"/>
+        </h:column>
+        <h:column>
+            <h:outputText value="#{row[3]}"/>
+        </h:column>
+        <h:column>
+            <h:outputText value="#{row[4]}"/>
+        </h:column>
+        <h:column>
+            <h:outputText value="#{row[5]}"/>
+        </h:column>
+    </h:dataTable>
+    <h:dataTable value="#{requestScope.list}"
+                 var="row">
+        <h:column>
+            <h:outputText value="#{row[0]}"/>
+        </h:column>
+        <h:column>
+            <h:outputText value="#{row[1]}"/>
+        </h:column>
+        <h:column>
+            <h:outputText value="#{row[2]}"/>
+        </h:column>
+        <h:column>
+            <h:outputText value="#{row[3]}"/>
+        </h:column>
+        <h:column>
+            <h:outputText value="#{row[4]}"/>
+        </h:column>
+        <h:column>
+            <h:outputText value="#{row[5]}"/>
+        </h:column>
+    </h:dataTable>
+     <h:dataTable value="#{requestScope.list}"
+                 var="row"
+                 columnClasses="b1,b2,b3,b4,b5,b6,b7">
+        <h:column>
+            <h:outputText value="#{row[0]}"/>
+        </h:column>
+        <h:column>
+            <h:outputText value="#{row[1]}"/>
+        </h:column>
+        <h:column>
+            <h:outputText value="#{row[2]}"/>
+        </h:column>
+        <h:column>
+            <h:outputText value="#{row[3]}"/>
+        </h:column>
+        <h:column>
+            <h:outputText value="#{row[4]}"/>
+        </h:column>
+        <h:column>
+            <h:outputText value="#{row[5]}"/>
+        </h:column>
+    </h:dataTable>
+    <h:dataTable value="#{requestScope.list}"
+                 var="row"
+                 columnClasses="b1,b2,b3,b4,">
+        <h:column>
+            <h:outputText value="#{row[0]}"/>
+        </h:column>
+        <h:column>
+            <h:outputText value="#{row[1]}"/>
+        </h:column>
+        <h:column>
+            <h:outputText value="#{row[2]}"/>
+        </h:column>
+        <h:column>
+            <h:outputText value="#{row[3]}"/>
+        </h:column>
+        <h:column>
+            <h:outputText value="#{row[4]}"/>
+        </h:column>
+        <h:column>
+            <h:outputText value="#{row[5]}"/>
+        </h:column>
+    </h:dataTable>
+<h:dataTable value="#{requestScope.list}"
+                 var="row"
+                 columnClasses=",b2,,,b4,b5,b6">
+        <h:column>
+            <h:outputText value="#{row[0]}"/>
+        </h:column>
+        <h:column>
+            <h:outputText value="#{row[1]}"/>
+        </h:column>
+        <h:column>
+            <h:outputText value="#{row[2]}"/>
+        </h:column>
+        <h:column>
+            <h:outputText value="#{row[3]}"/>
+        </h:column>
+        <h:column>
+            <h:outputText value="#{row[4]}"/>
+        </h:column>
+        <h:column>
+            <h:outputText value="#{row[5]}"/>
+        </h:column>
+    </h:dataTable>
+</f:view>
+</body>
+</html>
+
+
diff --git a/test/servlet30/systest/src/main/webapp/standard/dtablemultiforms.jsp b/test/servlet30/systest/src/main/webapp/standard/dtablemultiforms.jsp
new file mode 100644
index 0000000..9ad78d0
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/standard/dtablemultiforms.jsp
@@ -0,0 +1,68 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+    <title>dtablecolumnclasses.jsp</title>
+    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
+    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+
+</head>
+<body>
+<f:view>
+    Output: <h:outputText id="out" value="#{stringholder.string}"/>
+    <h:dataTable id="table" value="#{listholder.list}" var="_dontcare">
+        <h:column id="column">
+            <h:form id="columnform">
+                 Input: <h:inputText id="columninput" value="#{stringholder.string}"/>
+                 <h:commandButton id="columnbutton" value="submit"/>
+            </h:form>
+        </h:column>
+    </h:dataTable>
+    <h:form id="finalform">
+                 Input: <h:inputText id="finalinput" value="#{stringholder.string}"/>
+                 <h:commandButton id="finalbutton" value="submit"/>
+    </h:form>
+</f:view>
+</body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/standard/dtablerowclasses.jsp b/test/servlet30/systest/src/main/webapp/standard/dtablerowclasses.jsp
new file mode 100644
index 0000000..22f4eff
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/standard/dtablerowclasses.jsp
@@ -0,0 +1,84 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<%@ page import="java.util.List" %>
+<%@ page import="java.util.ArrayList" %>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+    <title>dtablecolumnclasses.jsp</title>
+    <style type="text/css">
+        .b1 {
+            background-color: red;
+        }
+
+        .b2 {
+            background-color: green;
+        }
+    </style>
+    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
+    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+
+
+    <%
+        List<String[]> list = new ArrayList<String[]>(6);
+        list.add(new String[]{"c1"});
+        list.add(new String[]{"c1_1"});
+        list.add(new String[]{"c1_2"});
+        list.add(new String[]{"c1_3"});
+        list.add(new String[]{"c1_4"});
+        list.add(new String[]{"c1_5"});
+        request.setAttribute("list", list);
+    %>
+</head>
+<body>
+<f:view>
+    <h:dataTable value="#{requestScope.list}"
+                 var="row"
+                 rowClasses="b1,b2">
+        <h:column rowHeader="true">
+            <h:outputText value="#{row[0]}"/>
+        </h:column>
+    </h:dataTable>
+</f:view>
+</body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/standard/dtablevarnotoverwritten.jsp b/test/servlet30/systest/src/main/webapp/standard/dtablevarnotoverwritten.jsp
new file mode 100644
index 0000000..4b04b7a
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/standard/dtablevarnotoverwritten.jsp
@@ -0,0 +1,59 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
+ <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+    <title>dtablevarnotoverwritten.jsp</title>
+</head>
+<body>
+<f:view>
+    <h:form>
+        <h:dataTable binding="#{customDataTable.table}" />
+    </h:form>
+</f:view>
+</body>
+</html>
+
+
diff --git a/test/servlet30/systest/src/main/webapp/standard/dtablewithemptybody.jsp b/test/servlet30/systest/src/main/webapp/standard/dtablewithemptybody.jsp
new file mode 100644
index 0000000..bf2ca36
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/standard/dtablewithemptybody.jsp
@@ -0,0 +1,108 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<%@ page import="java.util.ArrayList" %>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+    <title>dtablewithemptybody.jsp</title>
+    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
+    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+
+
+    <%
+    	ArrayList<String> emptyList = new ArrayList<String>();
+        request.setAttribute("emptyList", emptyList);
+        ArrayList<String> someList = new ArrayList<String>();
+        request.setAttribute("someList", someList);
+        someList.add("AAAA");
+        someList.add("BBBB");
+        someList.add("CCCC");
+    %>
+</head>
+<body>
+<f:view>
+    <h:dataTable value="#{requestScope.emptyList}" id="Empty"
+                 var="row">
+        <h:column rendered="false">
+        	<h:outputText value="not rendered" />
+        </h:column>
+        <h:column>
+        	<h:outputText value="#{row}"/>
+        </h:column>
+        <h:column>
+            <h:outputText value="#{row}"/>
+        </h:column>
+    </h:dataTable>
+    <h:dataTable value="#{requestScope.someList}" id="Some"
+                 var="row">
+        <f:facet name="header"><h:outputText value="Table Header" /></f:facet>
+        <h:column rendered="false">
+        	<f:facet name="header"><h:outputText value="Header1" /></f:facet>
+        	<h:outputText value="not rendered" />
+        </h:column>
+        <h:column rendered="false">
+        	<f:facet name="header"><h:outputText value="Header2" /></f:facet>
+        	<h:outputText value="#{row}"/>
+        </h:column>
+        <h:column rendered="false">
+        	<f:facet name="header"><h:outputText value="Header3" /></f:facet>
+            <h:outputText value="#{row}"/>
+        </h:column>
+        <f:facet name="footer"><h:outputText value="Table Footer" /></f:facet>
+    </h:dataTable>
+    
+    <h:dataTable id="PureEmptyDataTable">
+    </h:dataTable>
+    
+    <h:panelGrid id="PureEmptyPanelGrid">
+    </h:panelGrid>
+    
+    <h:panelGrid id="NoRenderedContentPanelGrid" columns="2">
+    	<f:facet name="header"><h:outputText value="Header" /></f:facet>
+    	<h:outputText value="AAA" rendered="false" />
+    	<h:outputText value="BBB" rendered="false" />
+    	<h:outputText value="CCC" rendered="false" />
+    </h:panelGrid>
+</f:view>
+</body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/standard/formlayouttemplates.xhtml b/test/servlet30/systest/src/main/webapp/standard/formlayouttemplates.xhtml
new file mode 100644
index 0000000..4b57672
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/standard/formlayouttemplates.xhtml
@@ -0,0 +1,22 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:fl="http://mojarra.dev.java.net/formlayout">
+
+    <ui:component>
+        <fl:layout>
+            <ui:define name="title">Page defined title</ui:define>
+            <ui:define name="content">
+                <h:outputText value="Project Stage: #{facesContext.application.projectStage}"/>        
+                Page defined content
+                <h:messages />
+                <ui:include src="include/formomitted_includedcontent.xhtml" />
+            </ui:define>
+        </fl:layout>
+    </ui:component>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/standard/formnotomitted.xhtml b/test/servlet30/systest/src/main/webapp/standard/formnotomitted.xhtml
new file mode 100644
index 0000000..a4ae2dd
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/standard/formnotomitted.xhtml
@@ -0,0 +1,18 @@
+<!DOCTYPE html
+    PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <head>
+        <title>Hello JSF 2!</title>
+    </head>
+    <body>
+        <h:outputText value="Project Stage: #{facesContext.application.projectStage}"/>
+        <h:form>
+            <h:inputText id="string"
+                         value="Hello"/>
+            <h:commandButton id="command" value="submit"/>
+        </h:form>
+    </body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/standard/formomitted.xhtml b/test/servlet30/systest/src/main/webapp/standard/formomitted.xhtml
new file mode 100644
index 0000000..3b44201
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/standard/formomitted.xhtml
@@ -0,0 +1,15 @@
+<!DOCTYPE html
+    PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <head>
+        <title>Hello JSF 2!</title>
+    </head>
+    <body>
+        <h:outputText value="Project Stage: #{facesContext.application.projectStage}"/>
+        <h:inputText id="string" value="Hello"/>
+        <h:commandButton id="command" value="submit"/>
+    </body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/standard/formomittedforcc.xhtml b/test/servlet30/systest/src/main/webapp/standard/formomittedforcc.xhtml
new file mode 100644
index 0000000..bc7fb7a
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/standard/formomittedforcc.xhtml
@@ -0,0 +1,15 @@
+<!DOCTYPE html
+    PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:mycc="http://java.sun.com/jsf/composite/composite">
+    <head>
+        <title>Hello JSF 2!</title>
+    </head>
+    <body>
+        <h:outputText value="Project Stage: #{facesContext.application.projectStage}"/>
+        <mycc:simpleCompositeComponent value="#{hello.fname}"/> <br/>
+    </body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/standard/include/formomitted_includedcontent.xhtml b/test/servlet30/systest/src/main/webapp/standard/include/formomitted_includedcontent.xhtml
new file mode 100644
index 0000000..d0130c0
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/standard/include/formomitted_includedcontent.xhtml
@@ -0,0 +1,58 @@
+<?xml version = "1.0" encoding = "UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+
+<ui:component>
+  
+  <h:panelGrid columns="2">
+    <h:outputLabel value="Some input" for="input"/>
+    <h:inputText id="input" value="Hello"/>
+  </h:panelGrid>
+  <h:commandButton value="Submit" />
+  
+</ui:component>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/standard/linkTypeAttribute.xhtml b/test/servlet30/systest/src/main/webapp/standard/linkTypeAttribute.xhtml
new file mode 100644
index 0000000..a07209f
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/standard/linkTypeAttribute.xhtml
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"
+      xmlns:h="http://java.sun.com/jsf/html">
+<head>
+    <title>linkTypeAttribute</title>
+</head>
+<body>
+    <h:form id="form">
+        <h:commandLink id="clink" type="type" value="command link" />
+        <h:outputLink id="link" type="type" value="output link" />
+    </h:form>
+</body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/standard/messages01.jsp b/test/servlet30/systest/src/main/webapp/standard/messages01.jsp
new file mode 100644
index 0000000..4fb5204
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/standard/messages01.jsp
@@ -0,0 +1,109 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+  <head>
+    <title>messages01.jsp</title>
+
+<%@ page import="javax.faces.FactoryFinder"
+%><%@ page import="javax.faces.application.Application"
+%><%@ page import="javax.faces.application.FacesMessage"
+%><%@ page import="com.sun.faces.util.MessageFactory"
+%><%@ page import="javax.faces.application.ApplicationFactory"
+%><%@ page import="javax.faces.context.FacesContext"
+%><%
+
+  // Acquire the FacesContext instance for this request
+  FacesContext facesContext = FacesContext.getCurrentInstance();
+  if (facesContext == null) {
+    out.println("/messages01.jsp FAILED - No FacesContext returned");
+    return;
+  }
+
+  // Acquire our Application instance
+  ApplicationFactory afactory = (ApplicationFactory)
+    FactoryFinder.getFactory(FactoryFinder.APPLICATION_FACTORY);
+  Application appl = afactory.getApplication();
+
+  // get a message
+  FacesMessage message = MessageFactory.getMessage(facesContext, 
+        "javax.faces.component.UIInput.REQUIRED");
+  if (message == null) {
+    out.println("/messages01.jsp FAILED - No message returned");
+    return;
+  }
+
+  facesContext.addMessage(null, message);
+
+%>
+
+    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
+    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+
+<STYLE TYPE="text/css" MEDIA=screen>
+<!--
+.errors { 
+  background-color: #7171A5;
+  border: 5px outset #71A5A5;
+  border-collapse: collapse;
+  font-family: sans-serif;
+  font-size: 14pt;
+  padding: 10px;
+}
+-->
+</STYLE>
+  </head>
+
+  <body>
+
+<f:view>
+
+
+<h:messages styleClass="errors"/> 
+
+</f:view>
+
+
+
+  </body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/standard/messages02.jsp b/test/servlet30/systest/src/main/webapp/standard/messages02.jsp
new file mode 100644
index 0000000..23b2559
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/standard/messages02.jsp
@@ -0,0 +1,118 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<%@ page contentType="text/html" %>
+<%@ page import="javax.faces.application.FacesMessage"%>
+<%@ page import="javax.faces.context.FacesContext"%>
+
+<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
+<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %>
+                                                                                    
+<%
+  // Acquire the FacesContext instance for this request
+  FacesContext facesContext = FacesContext.getCurrentInstance();
+  if (facesContext == null) {
+    out.println("/messages02.jsp FAILED - No FacesContext returned");
+    return;
+  }
+  FacesMessage imsg = new FacesMessage(FacesMessage.SEVERITY_INFO,
+      "Information Summary", "Informational Detail");
+  FacesMessage wmsg = new FacesMessage(FacesMessage.SEVERITY_WARN,
+      "Warning Summary", "Warning Detail");
+  FacesMessage emsg = new FacesMessage(FacesMessage.SEVERITY_ERROR,
+      "Error Summary", "Error Detail");
+  FacesMessage fmsg = new FacesMessage(FacesMessage.SEVERITY_FATAL,
+      "Fatal Summary", "Fatal Detail");
+  facesContext.addMessage("1", imsg);
+  facesContext.addMessage("1", wmsg);
+  facesContext.addMessage("1", emsg);
+  facesContext.addMessage("1", fmsg);
+%>
+                                                                                    
+<html>
+<STYLE TYPE="text/css" MEDIA=screen>
+<!--
+.errors {
+  background-color: #7171A5;
+  border: 5px outset #71A5A5;
+  border-collapse: collapse;
+  font-family: sans-serif;
+  font-size: 14pt;
+  padding: 10px;
+  left: 48px;
+  top: 300px;
+  position: absolute;
+}
+-->
+</STYLE>
+
+<f:view>
+      <h:panelGrid columns="1"> 
+         <h:messages layout="list" 
+            style="left: 48px; top: 100px; position: absolute"
+            dir="LTR"
+            infoStyle="color: yellow"
+            errorStyle="color: red"
+            fatalStyle="color: blue"
+            showSummary="true" showDetail="true" tooltip="true"/>
+
+         <h:messages layout="table" 
+            style="left: 48px; top: 200px; position: absolute"
+            lang="en"
+            infoStyle="color: yellow"
+            errorStyle="color: red"
+            fatalStyle="color: blue"
+            showSummary="true" showDetail="true" tooltip="true"/>
+
+         <h:messages  
+            styleClass="errors"
+            showSummary="true" showDetail="true" />
+
+         <h:messages layout="table" 
+            style="left: 48px; top: 500px; position: absolute"
+            infoStyle="color: yellow"
+            errorStyle="color: red"
+            fatalStyle="color: blue"
+            showDetail="true" />
+       </h:panelGrid>
+</f:view>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/standard/metadataandformomitted.xhtml b/test/servlet30/systest/src/main/webapp/standard/metadataandformomitted.xhtml
new file mode 100644
index 0000000..ff0748e
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/standard/metadataandformomitted.xhtml
@@ -0,0 +1,17 @@
+<!DOCTYPE html
+    PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"
+      xmlns:f="http://java.sun.com/jsf/core" 
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title>Hello JSF 2!</title>
+        <f:viewParam name="q" value="Current Problem"/>
+    </h:head>
+    <h:body>
+        <h:outputText value="Project Stage: #{facesContext.application.projectStage}"/>
+        <h:inputText id="string" value="Hello"/>
+        <h:commandButton id="command" value="submit"/>
+    </h:body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/standard/metadataomitted.xhtml b/test/servlet30/systest/src/main/webapp/standard/metadataomitted.xhtml
new file mode 100644
index 0000000..e33e50b
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/standard/metadataomitted.xhtml
@@ -0,0 +1,19 @@
+<!DOCTYPE html
+    PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"
+      xmlns:f="http://java.sun.com/jsf/core" 
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title>Hello JSF 2!</title>
+        <f:viewParam name="q" value="Current Problem"/>
+    </h:head>
+    <h:body>
+        <h:outputText value="Project Stage: #{facesContext.application.projectStage}"/>
+        <h:form>
+            <h:inputText id="string" value="Hello"/>
+            <h:commandButton id="command" value="submit"/>
+        </h:form>
+    </h:body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/standard/nav1.xhtml b/test/servlet30/systest/src/main/webapp/standard/nav1.xhtml
new file mode 100644
index 0000000..a59c4b1
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/standard/nav1.xhtml
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+    <title>nav1</title>
+</head>
+<body>
+  nav1
+</body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/standard/nav2.xhtml b/test/servlet30/systest/src/main/webapp/standard/nav2.xhtml
new file mode 100644
index 0000000..39cf0a5
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/standard/nav2.xhtml
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+    <title>nav2</title>
+</head>
+<body>
+  nav2
+</body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/standard/outcometarget01.xhtml b/test/servlet30/systest/src/main/webapp/standard/outcometarget01.xhtml
new file mode 100644
index 0000000..dab2f65
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/standard/outcometarget01.xhtml
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xml:lang="en" lang="en">
+<head>
+    <title>outcometarget01</title>
+</head>
+<f:metadata>
+    <f:viewParam id="vid" name="id" value="view"/>
+    <f:viewParam id="vid2" name="id2" value="view"/>
+</f:metadata>
+<body>
+    <h3>Button</h3>
+    <h:button id="button1" value="button1" outcome="outcometarget01" /> 
+    <h:button id="button2" value="button2" outcome="nav1?faces-redirect=true"/> 
+    <h:button id="button3" value="button3" outcome="outcometarget01" fragment="about" includeViewParams="true">
+        <f:param name="id" value="page"/>
+    </h:button> 
+    <h:button id="button4" value="button4" outcome="nav2" onclick="alert('foo')" /> 
+    <h:button id="button5" value="button5" outcome="redirectWithParams">
+        <f:param name="id" value="page" />
+    </h:button> 
+    <h:button id="button6" value="button6" outcome="redirectWithAll">
+        <f:param name="id" value="page" />
+    </h:button> 
+    <h:button id="button7" value="button7" outcome="redirectWithAll">
+        <f:param name="id" value="page" disable="true"/>
+    </h:button> 
+    <hr />
+    <h3>Link</h3>
+    <h:link id="link1" value="link1" outcome="outcometarget01" /> 
+    <h:link id="link2" value="link2" outcome="nav1?faces-redirect=true"/> 
+    <h:link id="link3" value="link3" outcome="outcometarget01" fragment="about" includeViewParams="true">
+        <f:param name="id" value="page"/>
+    </h:link> 
+    <h:link id="link4" value="link4" outcome="nav2" onclick="alert('foo');" /> 
+    <h:link id="link5" value="link5" outcome="redirectWithParams">
+        <f:param name="id" value="page" />
+    </h:link> 
+    <h:link id="link6" value="link6" outcome="redirectWithAll">
+        <f:param name="id" value="page" />
+    </h:link> 
+    <h:link id="link7" value="link7" outcome="redirectWithAll">
+        <f:param name="id" value="page" disable="true"/>
+    </h:link> 
+</body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/standard/pgridcolumnclasses.jsp b/test/servlet30/systest/src/main/webapp/standard/pgridcolumnclasses.jsp
new file mode 100644
index 0000000..c67edd3
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/standard/pgridcolumnclasses.jsp
@@ -0,0 +1,197 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+    <title>pgridcolumnclasses.jsp</title>
+    <style type="text/css">
+        .b1 {
+            background-color: red;
+        }
+
+        .b2 {
+            background-color: green;
+        }
+
+        .b3 {
+            background-color: blue;
+        }
+
+        .b4 {
+            background-color: burlywood;
+        }
+
+        .b5 {
+            background-color: darkolivegreen;
+        }
+
+        .b6 {
+            background-color: darkviolet;
+        }
+
+        .b7 {
+            background-color: skyblue;
+        }
+    </style>
+    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
+    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+
+</head>
+<body>
+<f:view>
+<h:panelGrid columns="6"
+             columnClasses="b1,b2">
+    <h:outputText value="c1"/>
+    <h:outputText value="c2"/>
+    <h:outputText value="c3"/>
+    <h:outputText value="c4"/>
+    <h:outputText value="c5"/>
+    <h:outputText value="c6"/>
+
+    <h:outputText value="c1_1"/>
+    <h:outputText value="c2_1"/>
+    <h:outputText value="c3_1"/>
+    <h:outputText value="c4_1"/>
+    <h:outputText value="c5_1"/>
+    <h:outputText value="c6_1"/>
+</h:panelGrid>
+<h:panelGrid columns="6"
+             columnClasses="b1,b2,b3,b4,">
+    <h:outputText value="c1"/>
+    <h:outputText value="c2"/>
+    <h:outputText value="c3"/>
+    <h:outputText value="c4"/>
+    <h:outputText value="c5"/>
+    <h:outputText value="c6"/>
+
+    <h:outputText value="c1_1"/>
+    <h:outputText value="c2_1"/>
+    <h:outputText value="c3_1"/>
+    <h:outputText value="c4_1"/>
+    <h:outputText value="c5_1"/>
+    <h:outputText value="c6_1"/>
+</h:panelGrid>
+<h:panelGrid columns="6"
+             columnClasses="b1,b2,b3">
+    <h:outputText value="c1"/>
+    <h:outputText value="c2"/>
+    <h:outputText value="c3"/>
+    <h:outputText value="c4"/>
+    <h:outputText value="c5"/>
+    <h:outputText value="c6"/>
+
+    <h:outputText value="c1_1"/>
+    <h:outputText value="c2_1"/>
+    <h:outputText value="c3_1"/>
+    <h:outputText value="c4_1"/>
+    <h:outputText value="c5_1"/>
+    <h:outputText value="c6_1"/>
+</h:panelGrid>
+<h:panelGrid columns="6"
+             columnClasses="b1">
+    <h:outputText value="c1"/>
+    <h:outputText value="c2"/>
+    <h:outputText value="c3"/>
+    <h:outputText value="c4"/>
+    <h:outputText value="c5"/>
+    <h:outputText value="c6"/>
+
+    <h:outputText value="c1_1"/>
+    <h:outputText value="c2_1"/>
+    <h:outputText value="c3_1"/>
+    <h:outputText value="c4_1"/>
+    <h:outputText value="c5_1"/>
+    <h:outputText value="c6_1"/>
+</h:panelGrid>
+<h:panelGrid columns="6">
+    <h:outputText value="c1"/>
+    <h:outputText value="c2"/>
+    <h:outputText value="c3"/>
+    <h:outputText value="c4"/>
+    <h:outputText value="c5"/>
+    <h:outputText value="c6"/>
+
+    <h:outputText value="c1_1"/>
+    <h:outputText value="c2_1"/>
+    <h:outputText value="c3_1"/>
+    <h:outputText value="c4_1"/>
+    <h:outputText value="c5_1"/>
+    <h:outputText value="c6_1"/>
+</h:panelGrid>
+<h:panelGrid columns="6"
+             columnClasses="b1,b2,b3,b4,b5,b6,b7">
+    <h:outputText value="c1"/>
+    <h:outputText value="c2"/>
+    <h:outputText value="c3"/>
+    <h:outputText value="c4"/>
+    <h:outputText value="c5"/>
+    <h:outputText value="c6"/>
+
+    <h:outputText value="c1_1"/>
+    <h:outputText value="c2_1"/>
+    <h:outputText value="c3_1"/>
+    <h:outputText value="c4_1"/>
+    <h:outputText value="c5_1"/>
+    <h:outputText value="c6_1"/>
+</h:panelGrid>
+<h:panelGrid columns="6"
+             columnClasses=",b2,,,b5,b6,b7">
+    <h:outputText value="c1"/>
+    <h:outputText value="c2"/>
+    <h:outputText value="c3"/>
+    <h:outputText value="c4"/>
+    <h:outputText value="c5"/>
+    <h:outputText value="c6"/>
+
+    <h:outputText value="c1_1"/>
+    <h:outputText value="c2_1"/>
+    <h:outputText value="c3_1"/>
+    <h:outputText value="c4_1"/>
+    <h:outputText value="c5_1"/>
+    <h:outputText value="c6_1"/>
+</h:panelGrid>
+</f:view>
+</body>
+</html>
+
+
diff --git a/test/servlet30/systest/src/main/webapp/standard/selectOneLiteralHideNoSelectionOption.xhtml b/test/servlet30/systest/src/main/webapp/standard/selectOneLiteralHideNoSelectionOption.xhtml
new file mode 100644
index 0000000..9b55507
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/standard/selectOneLiteralHideNoSelectionOption.xhtml
@@ -0,0 +1,178 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:c="http://java.sun.com/jsp/jstl/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:f="http://java.sun.com/jsf/core">
+<head>
+    <title>hideNoSelection</title>
+</head>
+<body>
+<c:set target="#{requestScope}" property="selectedHobbit" value="Frodo"/>
+<c:set target="#{requestScope}" property="noSelectionValue" value="No Selection"/>
+<h:form id="f">
+
+    <p>
+        Literal hideNoSelectionOption (true) with nested selectItems with attribute noSelectionLabel and selected value different from the No Selection option.<br/>
+        As there is a selected value and the hideNoSelectionOption is set to true, the No Selection option shouldn't be shown to the user.
+    </p>
+    <h:selectOneMenu id="selectItemsSelectedValue" value="#{requestScope['selectedHobbit']}" hideNoSelectionOption="true">
+       <f:selectItems value="#{selectItemsBean.hobbitsNoSelection}" noSelectionValue="#{selectItemsBean.hobbitsNoSelection[0]}"/>
+    </h:selectOneMenu>
+
+    <p>
+        Literal hideNoSelectionOption (true) with nested selectItems with attribute noSelectionLabel and no selected value.<br/>
+        As there is no selected value, the No Selection option should be shown to the user, even though the hideNoSelectionOption is set to true.
+    </p>
+    <h:selectOneMenu id="selectItemsNoSelectedValue" value="#{requestScope['notYetSelectedHobbit']}" hideNoSelectionOption="true">
+       <f:selectItems value="#{selectItemsBean.hobbitsNoSelection}" noSelectionValue="#{selectItemsBean.hobbitsNoSelection[0]}"/>
+    </h:selectOneMenu>
+	
+    <p>
+        Literal hideNoSelectionOption (true) with nested selectItems with attribute noSelectionLabel and selected value equal to No Selection option.<br/>
+        As the selected value is equal to the No Selection option, the No Selection option should be shown to the user, even though the hideNoSelectionOption is set to true.
+    </p>
+    <h:selectOneMenu id="selectItemsNoSelectionSelectedValue" value="#{requestScope['noSelectionValue']}" hideNoSelectionOption="true">
+		<f:selectItems value="#{selectItemsBean.hobbitsNoSelection}" noSelectionValue="#{selectItemsBean.hobbitsNoSelection[0]}"/>
+    </h:selectOneMenu>
+	
+    <p>
+        Literal hideNoSelectionOption (true) with nested selectItem with attribute noSelectionOption set to true and selected value different from the No Selection Option.<br/>
+        As there is a selected value and the hideNoSelectionOption is set to true, the No Selection option shouldn't be shown to the user.
+    </p>
+    <h:selectOneMenu id="selectItemSelectedValue" value="#{requestScope['selectedHobbit']}" hideNoSelectionOption="true">
+       <f:selectItem noSelectionOption="true" itemLabel="No Selection" itemValue="No Selection"/>
+       <f:selectItems value="#{selectItemsBean.hobbits}" />
+    </h:selectOneMenu>
+	
+    <p>
+        Literal hideNoSelectionOption (true) with nested selectItem with attribute noSelectionOption set to true and selected value different from the No Selection Option.<br/>
+        The noSelectionOption is the last option.<br/>
+        As there is a selected value and the hideNoSelectionOption is set to true, the No Selection option shouldn't be shown to the user.
+    </p>
+    <h:selectOneMenu id="selectItemSelectedValueLast" value="#{requestScope['selectedHobbit']}" hideNoSelectionOption="true">
+       <f:selectItems value="#{selectItemsBean.hobbits}" />
+       <f:selectItem noSelectionOption="true" itemLabel="No Selection" itemValue="No Selection"/>
+    </h:selectOneMenu>
+	
+    <p>
+        Literal hideNoSelectionOption (true) with nested selectItem with attribute noSelectionOption and no selected value.<br/>
+        As there is no selected value, the No Selection option should be shown to the user, even though the hideNoSelectionOption is set to true.
+    </p>
+    <h:selectOneMenu id="selectItemNoSelectedValue" value="#{requestScope['notYetSelectedHobbit']}" hideNoSelectionOption="true">
+       <f:selectItem noSelectionOption="true" itemLabel="No Selection" itemValue="No Selection"/>
+       <f:selectItems value="#{selectItemsBean.hobbits}" />
+    </h:selectOneMenu>
+	
+    <p>
+        Literal hideNoSelectionOption (true) with nested selectItem with attribute noSelectionOption and selected value equal to No Selection option.<br/>
+        As the selected value is equal to the No Selection option, the No Selection option should be shown to the user, even though the hideNoSelectionOption is set to true.
+    </p>
+    <h:selectOneMenu id="selectItemNoSelectionSelectedValue" value="#{requestScope['noSelectionValue']}" hideNoSelectionOption="true">
+       <f:selectItem noSelectionOption="true" itemLabel="No Selection" itemValue="No Selection"/>
+       <f:selectItems value="#{selectItemsBean.hobbits}" />
+    </h:selectOneMenu>
+    
+    <!-- hideNoSelectionOption = false -->
+    
+    <p>
+        Literal hideNoSelectionOption (false) with nested selectItems with attribute noSelectionLabel and selected value.<br/>
+        As the hideNoSelectionOption is set to false, the No Selection Option should always be shown.
+    </p>
+    <h:selectOneMenu id="selectItemsSelectedValueNoHiding" value="#{requestScope['selectedHobbit']}" hideNoSelectionOption="false">
+		<f:selectItems value="#{selectItemsBean.hobbitsNoSelection}" noSelectionValue="#{selectItemsBean.hobbitsNoSelection[0]}"/>
+    </h:selectOneMenu>
+	
+    <p>
+        Literal hideNoSelectionOption (false) with nested selectItems with attribute noSelectionLabel and no selected value.<br/>
+        As the hideNoSelectionOption is set to false, the No Selection Option should always be shown.
+    </p>
+    <h:selectOneMenu id="selectItemsNoSelectedValueNoHiding" value="#{requestScope['notYetSelectedHobbit']}" hideNoSelectionOption="false">
+		<f:selectItems value="#{selectItemsBean.hobbitsNoSelection}" noSelectionValue="#{selectItemsBean.hobbitsNoSelection[0]}"/>
+    </h:selectOneMenu>
+	
+    <p>
+        Literal hideNoSelectionOption (false) with nested selectItems with attribute noSelectionLabel and selected value equal to No Selection option.<br/>
+        As the hideNoSelectionOption is set to false, the No Selection Option should always be shown.
+    </p>
+    <h:selectOneMenu id="selectItemsNoSelectionSelectedValueNoHiding" value="#{requestScope['noSelectionValue']}" hideNoSelectionOption="false">
+		<f:selectItems value="#{selectItemsBean.hobbitsNoSelection}" noSelectionValue="#{selectItemsBean.hobbitsNoSelection[0]}"/>
+    </h:selectOneMenu>
+	
+    <p>
+        Literal hideNoSelectionOption (false) with nested selectItem with attribute noSelectionOption set to true and selected value.<br/>
+        As the hideNoSelectionOption is set to false, the No Selection Option should always be shown.
+    </p>
+    <h:selectOneMenu id="selectItemSelectedValueNoHiding" value="#{requestScope['selectedHobbit']}" hideNoSelectionOption="false">
+       <f:selectItem noSelectionOption="true" itemLabel="No Selection" itemValue="No Selection"/>
+       <f:selectItems value="#{selectItemsBean.hobbits}" />
+    </h:selectOneMenu>
+	
+    <p>
+        Literal hideNoSelectionOption (false) with nested selectItem with attribute noSelectionOption and no selected value.<br/>
+        As the hideNoSelectionOption is set to false, the No Selection Option should always be shown.
+    </p>
+    <h:selectOneMenu id="selectItemNoSelectedValueNoHiding" value="#{requestScope['notYetSelectedHobbit']}" hideNoSelectionOption="false">
+       <f:selectItem noSelectionOption="true" itemLabel="No Selection" itemValue="No Selection"/>
+       <f:selectItems value="#{selectItemsBean.hobbits}" />
+    </h:selectOneMenu>
+	
+    <p>
+        Literal hideNoSelectionOption (false) with nested selectItem with attribute noSelectionOption and selected value equal to No Selection option.<br/>
+        As the hideNoSelectionOption is set to false, the No Selection Option should always be shown.
+    </p>
+    <h:selectOneMenu id="selectItemNoSelectionSelectedValueNoHiding" value="#{requestScope['noSelectionValue']}" hideNoSelectionOption="false">
+       <f:selectItem noSelectionOption="true" itemLabel="No Selection" itemValue="No Selection"/>
+       <f:selectItems value="#{selectItemsBean.hobbits}" />
+    </h:selectOneMenu>
+
+	<h:commandButton id="command" value="Submit" />
+</h:form>
+<h:messages id="messages"/>
+</body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/standard/selectOneLiteralHideNoSelectionOptionInSelectItemGroup.xhtml b/test/servlet30/systest/src/main/webapp/standard/selectOneLiteralHideNoSelectionOptionInSelectItemGroup.xhtml
new file mode 100644
index 0000000..d1b8db3
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/standard/selectOneLiteralHideNoSelectionOptionInSelectItemGroup.xhtml
@@ -0,0 +1,166 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:c="http://java.sun.com/jsp/jstl/core"
+      xmlns:f="http://java.sun.com/jsf/core">
+<head>
+    <title>hideNoSelection</title>
+</head>
+<body>
+<c:set target="#{requestScope}" property="selectedHobbit" value="Frodo"/>
+<c:set target="#{requestScope}" property="noSelectionValue" value="No Selection"/>
+<h:form id="f">
+
+    <p>
+        Literal hideNoSelectionOption (true) with nested selectItems with attribute noSelectionLabel and selected value different from the No Selection option.<br/>
+        As there is a selected value and the hideNoSelectionOption is set to true, the No Selection option shouldn't be shown to the user.
+    </p>
+    <h:selectOneMenu id="selectItemsSelectedValue" value="#{requestScope['selectedHobbit']}" hideNoSelectionOption="true">
+       <f:selectItems value="#{selectItemsBean.hobbitsNoSelectionNestedInGroup}" noSelectionValue="#{selectItemsBean.hobbitsNoSelectionNestedInGroup[0]}"/>
+    </h:selectOneMenu>
+	
+    <p>
+        Literal hideNoSelectionOption (true) with nested selectItems with attribute noSelectionLabel and no selected value.<br/>
+        As there is no selected value, the No Selection option should be shown to the user, even though the hideNoSelectionOption is set to true.
+    </p>
+    <h:selectOneMenu id="selectItemsNoSelectedValue" value="#{requestScope['notYetSelectedHobbit']}" hideNoSelectionOption="true">
+       <f:selectItems value="#{selectItemsBean.hobbitsNoSelectionNestedInGroup}" noSelectionValue="#{selectItemsBean.hobbitsNoSelectionNestedInGroup[0]}"/>
+    </h:selectOneMenu>
+	
+    <p>
+        Literal hideNoSelectionOption (true) with nested selectItems with attribute noSelectionLabel and selected value equal to No Selection option.<br/>
+        As the selected value is equal to the No Selection option, the No Selection option should be shown to the user, even though the hideNoSelectionOption is set to true.
+    </p>
+    <h:selectOneMenu id="selectItemsNoSelectionSelectedValue" value="#{requestScope['noSelectionValue']}" hideNoSelectionOption="true">
+		<f:selectItems value="#{selectItemsBean.hobbitsNoSelectionNestedInGroup}" noSelectionValue="#{selectItemsBean.hobbitsNoSelectionNestedInGroup[0]}"/>
+    </h:selectOneMenu>
+	
+    <p>
+        Literal hideNoSelectionOption (true) with nested selectItem with attribute noSelectionOption set to true and selected value different from the No Selection Option.<br/>
+        As there is a selected value and the hideNoSelectionOption is set to true, the No Selection option shouldn't be shown to the user.
+    </p>
+    <h:selectOneMenu id="selectItemSelectedValue" value="#{requestScope['selectedHobbit']}" hideNoSelectionOption="true">
+       <f:selectItem noSelectionOption="true" itemLabel="No Selection" itemValue="No Selection"/>
+       <f:selectItems value="#{selectItemsBean.hobbitsNestedInGroup}" />
+    </h:selectOneMenu>
+	
+    <p>
+        Literal hideNoSelectionOption (true) with nested selectItem with attribute noSelectionOption and no selected value.<br/>
+        As there is no selected value, the No Selection option should be shown to the user, even though the hideNoSelectionOption is set to true.
+    </p>
+    <h:selectOneMenu id="selectItemNoSelectedValue" value="#{requestScope['notYetSelectedHobbit']}" hideNoSelectionOption="true">
+       <f:selectItem noSelectionOption="true" itemLabel="No Selection" itemValue="No Selection"/>
+       <f:selectItems value="#{selectItemsBean.hobbitsNestedInGroup}" />
+    </h:selectOneMenu>
+	
+    <p>
+        Literal hideNoSelectionOption (true) with nested selectItem with attribute noSelectionOption and selected value equal to No Selection option.<br/>
+        As the selected value is equal to the No Selection option, the No Selection option should be shown to the user, even though the hideNoSelectionOption is set to true.
+    </p>
+    <h:selectOneMenu id="selectItemNoSelectionSelectedValue" value="#{requestScope['noSelectionValue']}" hideNoSelectionOption="true">
+       <f:selectItem noSelectionOption="true" itemLabel="No Selection" itemValue="No Selection"/>
+       <f:selectItems value="#{selectItemsBean.hobbitsNestedInGroup}" />
+    </h:selectOneMenu>
+    
+    <!-- hideNoSelectionOption = false -->
+    
+    <p>
+        Literal hideNoSelectionOption (false) with nested selectItems with attribute noSelectionLabel and selected value.<br/>
+        As the hideNoSelectionOption is set to false, the No Selection Option should always be shown.
+    </p>
+    <h:selectOneMenu id="selectItemsSelectedValueNoHiding" value="#{requestScope['selectedHobbit']}" hideNoSelectionOption="false">
+		<f:selectItems value="#{selectItemsBean.hobbitsNoSelectionNestedInGroup}" noSelectionValue="#{selectItemsBean.hobbitsNoSelectionNestedInGroup[0]}"/>
+    </h:selectOneMenu>
+	
+    <p>
+        Literal hideNoSelectionOption (false) with nested selectItems with attribute noSelectionLabel and no selected value.<br/>
+        As the hideNoSelectionOption is set to false, the No Selection Option should always be shown.
+    </p>
+    <h:selectOneMenu id="selectItemsNoSelectedValueNoHiding" value="#{requestScope['notYetSelectedHobbit']}" hideNoSelectionOption="false">
+		<f:selectItems value="#{selectItemsBean.hobbitsNoSelectionNestedInGroup}" noSelectionValue="#{selectItemsBean.hobbitsNoSelectionNestedInGroup[0]}"/>
+    </h:selectOneMenu>
+	
+    <p>
+        Literal hideNoSelectionOption (false) with nested selectItems with attribute noSelectionLabel and selected value equal to No Selection option.<br/>
+        As the hideNoSelectionOption is set to false, the No Selection Option should always be shown.
+    </p>
+    <h:selectOneMenu id="selectItemsNoSelectionSelectedValueNoHiding" value="#{requestScope['noSelectionValue']}" hideNoSelectionOption="false">
+		<f:selectItems value="#{selectItemsBean.hobbitsNoSelectionNestedInGroup}" noSelectionValue="#{selectItemsBean.hobbitsNoSelectionNestedInGroup[0]}"/>
+    </h:selectOneMenu>
+	
+    <p>
+        Literal hideNoSelectionOption (false) with nested selectItem with attribute noSelectionOption set to true and selected value.<br/>
+        As the hideNoSelectionOption is set to false, the No Selection Option should always be shown.
+    </p>
+    <h:selectOneMenu id="selectItemSelectedValueNoHiding" value="#{requestScope['selectedHobbit']}" hideNoSelectionOption="false">
+       <f:selectItem noSelectionOption="true" itemLabel="No Selection" itemValue="No Selection"/>
+       <f:selectItems value="#{selectItemsBean.hobbitsNestedInGroup}" />
+    </h:selectOneMenu>
+	
+    <p>
+        Literal hideNoSelectionOption (false) with nested selectItem with attribute noSelectionOption and no selected value.<br/>
+        As the hideNoSelectionOption is set to false, the No Selection Option should always be shown.
+    </p>
+    <h:selectOneMenu id="selectItemNoSelectedValueNoHiding" value="#{requestScope['notYetSelectedHobbit']}" hideNoSelectionOption="false">
+       <f:selectItem noSelectionOption="true" itemLabel="No Selection" itemValue="No Selection"/>
+       <f:selectItems value="#{selectItemsBean.hobbitsNestedInGroup}" />
+    </h:selectOneMenu>
+	
+    <p>
+        Literal hideNoSelectionOption (false) with nested selectItem with attribute noSelectionOption and selected value equal to No Selection option.<br/>
+        As the hideNoSelectionOption is set to false, the No Selection Option should always be shown.
+    </p>
+    <h:selectOneMenu id="selectItemNoSelectionSelectedValueNoHiding" value="#{requestScope['noSelectionValue']}" hideNoSelectionOption="false">
+       <f:selectItem noSelectionOption="true" itemLabel="No Selection" itemValue="No Selection"/>
+       <f:selectItems value="#{selectItemsBean.hobbitsNestedInGroup}" />
+    </h:selectOneMenu>
+
+</h:form>
+<h:messages id="messages"/>
+</body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/standard/selectOneValueExpressionHideNoSelectionOption.xhtml b/test/servlet30/systest/src/main/webapp/standard/selectOneValueExpressionHideNoSelectionOption.xhtml
new file mode 100644
index 0000000..86ef7e9
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/standard/selectOneValueExpressionHideNoSelectionOption.xhtml
@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:c="http://java.sun.com/jsp/jstl/core"
+      xmlns:f="http://java.sun.com/jsf/core">
+<head>
+    <title>hideNoSelection with Value Expression</title>
+</head>
+<body>
+<c:if test="#{empty requestScope.selectedHobbit}">
+  <c:set target="#{requestScope}" property="selectedHobbit" value="Frodo"/>
+</c:if>
+<h:form id="f">
+
+    <p>
+        Initially hideNoSelectionOption evaluates to true. As the selectOneMenu
+        has a non-null value different from the No Selection value, the No
+        Selection option should be hidden.
+        When the page is submitted with a value different from 'Frodo', the
+        hideNoSelectionOption evaluates to false, as such on page re-render, the
+        No Selection option
+        should be shown.
+    </p>
+    <h:selectOneMenu id="selectItemNoSelectedValue"
+                     value="#{requestScope['selectedHobbit']}"
+                     hideNoSelectionOption="#{requestScope['selectedHobbit'] eq 'Frodo'}">
+        <f:selectItem noSelectionOption="true" itemLabel="No Selection"
+                      itemValue="No Selection"/>
+        <f:selectItems value="#{selectItemsBean.hobbits}"/>
+    </h:selectOneMenu>
+
+    <h:commandButton id="command" value="Submit"/>
+</h:form>
+<h:messages id="messages"/>
+</body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/standard/selectmany01.jsp b/test/servlet30/systest/src/main/webapp/standard/selectmany01.jsp
new file mode 100644
index 0000000..f0708a0
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/standard/selectmany01.jsp
@@ -0,0 +1,68 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<%@ page contentType="text/html" %>
+<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
+<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+<%
+  if (session.getAttribute("status") == null) {
+    String[] a = {"1", "2"};
+    session.setAttribute("status", a);
+  }
+%>
+<f:view>
+  <h:form id="form1">
+    <h:selectManyCheckbox value="#{status}">
+      <f:selectItem itemValue="1" itemLabel="Open" />
+      <f:selectItem itemValue="2" itemLabel="Submitted" />
+      <f:selectItem itemValue="3" itemLabel="Accepted" />
+      <f:selectItem itemValue="4" itemLabel="Rejected" />
+    </h:selectManyCheckbox>
+    <h:commandButton id="modify" value="Update" />
+    <p>Current model value:
+    ${status[0]}, ${status[1]}, ${status[2]}, ${status[3]}
+  </h:form>
+  <h:form id="form2">
+    Resets the rendered values but not the model:
+    <h:commandButton id="doNotModify" value="Click" />
+  </h:form>
+</f:view>
diff --git a/test/servlet30/systest/src/main/webapp/standard/selectmany02.jsp b/test/servlet30/systest/src/main/webapp/standard/selectmany02.jsp
new file mode 100644
index 0000000..ddd46d7
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/standard/selectmany02.jsp
@@ -0,0 +1,68 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<%@ page contentType="text/html" %>
+<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
+<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+<%
+  if (session.getAttribute("status") == null) {
+    String[] a = {"1", "2"};
+    session.setAttribute("status", a);
+  }
+%>
+
+<f:view>
+    <%--- test styleClass --%>
+    <h:selectManyCheckbox value="#{status}" styleClass="one">
+      <f:selectItem  itemValue="1" itemLabel="Open" />
+      <f:selectItem itemValue="2" itemLabel="Submitted" />
+      <f:selectItem itemValue="3" itemLabel="Accepted" />
+      <f:selectItem itemValue="4" itemLabel="Rejected" />
+    </h:selectManyCheckbox>
+    <%--- test style and border passthrough --%>
+    <h:selectManyCheckbox value="#{status}" style="two" border="5">
+      <f:selectItem  itemValue="1" itemLabel="Open" />
+      <f:selectItem itemValue="2" itemLabel="Submitted" />
+      <f:selectItem itemValue="3" itemLabel="Accepted" />
+      <f:selectItem itemValue="4" itemLabel="Rejected" />
+    </h:selectManyCheckbox>
+</f:view>
diff --git a/test/servlet30/systest/src/main/webapp/standard/selectmany03.jsp b/test/servlet30/systest/src/main/webapp/standard/selectmany03.jsp
new file mode 100644
index 0000000..51695cd
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/standard/selectmany03.jsp
@@ -0,0 +1,67 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<%@ page contentType="text/html" %>
+<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
+<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+<%
+  if (session.getAttribute("status") == null) {
+    String[] a = {"1", "2"};
+    session.setAttribute("status", a);
+  }
+%>
+<f:view>
+    <%--- test selectedClass and unselectedClass --%>
+    <h:selectManyCheckbox value="#{status}" selectedClass="three" unselectedClass="four" >
+      <f:selectItem itemValue="1" itemLabel="Open" />
+      <f:selectItem itemValue="2" itemLabel="Submitted" />
+      <f:selectItem itemValue="3" itemLabel="Accepted" />
+      <f:selectItem itemValue="4" itemLabel="Rejected" />
+    </h:selectManyCheckbox> 
+    <%--- test disabled and enabled styles --%>
+    <h:selectManyCheckbox value="#{status}" enabledClass="four" disabledClass="five">
+      <f:selectItem  itemValue="1" itemLabel="Open" />
+      <f:selectItem itemValue="2" itemLabel="Submitted" />
+      <f:selectItem itemValue="3" itemLabel="Accepted" />
+      <f:selectItem itemValue="4" itemLabel="Rejected" itemDisabled="true" />
+    </h:selectManyCheckbox> 
+</f:view>
diff --git a/test/servlet30/systest/src/main/webapp/standard/selectmany04.jsp b/test/servlet30/systest/src/main/webapp/standard/selectmany04.jsp
new file mode 100644
index 0000000..0f8852f
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/standard/selectmany04.jsp
@@ -0,0 +1,60 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<%@ page contentType="text/html" %>
+<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
+<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+<%
+  if (session.getAttribute("status") == null) {
+    String[] a = {"1", "2"};
+    session.setAttribute("status", a);
+  }
+%>
+<f:view>
+    <%--- test selected and enabled styles together --%>
+    <h:selectManyCheckbox value="#{status}" enabledClass="six" disabledClass="seven" selectedClass="eight" unselectedClass="nine">
+      <f:selectItem  itemValue="1" itemLabel="Open" />
+      <f:selectItem itemValue="2" itemLabel="Submitted" itemDisabled="true" />
+      <f:selectItem itemValue="3" itemLabel="Accepted" />
+      <f:selectItem itemValue="4" itemLabel="Rejected" itemDisabled="true" />
+    </h:selectManyCheckbox> 
+</f:view>
diff --git a/test/servlet30/systest/src/main/webapp/standard/selectmany05.xhtml b/test/servlet30/systest/src/main/webapp/standard/selectmany05.xhtml
new file mode 100644
index 0000000..f4e0b15
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/standard/selectmany05.xhtml
@@ -0,0 +1,236 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+<head>
+    <title>selectmany05</title>
+</head>
+<body>
+<h:form id="f">
+
+    <p>
+        Array Values
+    </p>
+    <h:selectManyListbox id="array" value="#{select05.arrayValues}">
+        <f:selectItems value="#{select05.hobbitCollection}"/>
+    </h:selectManyListbox>
+
+    <p>
+        Initially Null List Values
+    </p>
+    <h:selectManyListbox id="list" value="#{select05.listValues}">
+        <f:selectItems value="#{select05.possibleValues}"/>
+    </h:selectManyListbox>
+
+    <p>
+        Initially Null Set Values
+    </p>
+    <h:selectManyListbox id="set" value="#{select05.setValues}">
+        <f:selectItems value="#{select05.possibleValues}"/>
+    </h:selectManyListbox>
+
+    <p>
+        Initially Null Sorted Set Values
+    </p>
+    <h:selectManyListbox id="sortedset" value="#{select05.sortedSetValues}">
+        <f:selectItems value="#{select05.possibleValues}"/>
+    </h:selectManyListbox>
+
+    <p>
+        Initially Null Collection Values
+    </p>
+    <h:selectManyListbox id="collection" value="#{select05.collectionValues}">
+        <f:selectItems value="#{select05.possibleValues}"/>
+    </h:selectManyListbox>
+
+    <!-- ///////////////////////////////////////////////////////////// -->
+
+    <p>
+        Initially Non-Null List Values/Collection non-select item
+    </p>
+    <h:selectManyListbox id="ilist" value="#{select05.initialListValues}">
+        <f:selectItems value="#{select05.hobbitCollection}"
+                       var="hobbit"
+                       itemLabel="#{hobbit.name}"
+                       itemDescription="#{hobbit.bio}"/>
+    </h:selectManyListbox>
+
+    <p>
+        Initially Non-Null List Values/DataModel non-select item
+    </p>
+    <h:selectManyListbox id="ilist2" value="#{select05.initialListValues}">
+        <f:selectItems value="#{select05.hobbitDataModel}"
+                       var="hobbit"
+                       itemLabel="#{hobbit.name}"
+                       itemDescription="#{hobbit.bio}"/>
+    </h:selectManyListbox>
+
+    <p>
+        Initially Non-Null Set Values
+    </p>
+    <h:selectManyListbox id="iset" value="#{select05.initialSetValues}">
+        <f:selectItems value="#{select05.possibleValues}"/>
+    </h:selectManyListbox>
+
+    <p>
+        Initially Non-Null Sorted Set Values
+    </p>
+    <h:selectManyListbox id="isortedset" value="#{select05.initialSortedSetValues}">
+        <f:selectItems value="#{select05.possibleValues}"/>
+    </h:selectManyListbox>
+
+    <p>
+        Initially Non-Null Collection Values
+    </p>
+    <h:selectManyListbox id="icollection" value="#{select05.initialCollectionValues}">
+        <f:selectItems value="#{select05.possibleValues}"/>
+    </h:selectManyListbox>
+
+    <!-- ///////////////////////////////////////////////////////////// -->
+
+    <p>
+        Initially Null Collection Values using f:attribute hint (java.lang.String)
+    </p>
+    <h:selectManyListbox id="hintString"
+                         value="#{select05.collectionFromHintValues}"
+                         collectionType="java.util.LinkedList">
+        <f:selectItems value="#{select05.possibleValues}"/>
+    </h:selectManyListbox>
+
+    <p>
+        Initially Null Collection Values using f:attribute hint (java.lang.String)
+    </p>
+    <h:selectManyListbox id="hintClass" value="#{select05.collectionFromHintValues2}">
+        <f:attribute name="collectionType" value="#{select05.collectionType}"/>
+        <f:selectItems value="#{select05.possibleValues}"/>
+    </h:selectManyListbox>
+
+    <!-- ///////////////////////////////////////////////////////////// -->
+
+    <p>
+        Initially Null Object type field
+    </p>
+    <h:selectManyListbox id="object" value="#{select05.someValues}">
+        <f:selectItems value="#{select05.possibleValues}"/>
+    </h:selectManyListbox>
+
+    <!-- //////////////////////////////////////////////////////////// -->
+
+    <p>
+        int values
+    </p>
+     <h:selectManyListbox id="intList1" value="#{select05.selectedIntValues}">
+        <f:selectItems value="#{select05.intOptions}"
+                       var="x"
+                       itemLabel="#{x}"
+                       itemDescription="#{x}"/>
+    </h:selectManyListbox>
+
+    <!-- //////////////////////////////////////////////////////////// -->
+
+    <p>
+        Integer values
+    </p>
+     <h:selectManyListbox id="integerList1" value="#{select05.selectedIntegerValues}">
+        <f:selectItems value="#{select05.integerOptions}"
+                       var="n"
+                       itemLabel="#{n}"
+                       itemDescription="#{n}"/>
+    </h:selectManyListbox>
+
+    <!-- //////////////////////////////////////////////////////////// -->
+
+    <p>
+        Item Label Escape (true)
+    </p>
+    <h:selectManyListbox id="escape01" value="#{select05.initialCollectionValues}">
+       <f:selectItems value="#{select05.hobbitCollection}"
+                      var="n"
+                      itemValue="#{n}"
+                      itemLabel="#{n.bio}"
+                      itemLabelEscaped="true"/>
+    </h:selectManyListbox>
+
+    <!-- //////////////////////////////////////////////////////////// -->
+
+    <p>
+        Item Label Escape (false)
+    </p>
+    <h:selectManyListbox id="escape02" value="#{select05.initialCollectionValues}">
+       <f:selectItems value="#{select05.hobbitCollection}"
+                      var="n"
+                      itemValue="#{n}"
+                      itemLabel="#{n.bio}"
+                      itemLabelEscaped="false"/>
+    </h:selectManyListbox>
+
+     <!-- ////////////////////////////////////////////////////////////// -->
+
+
+    <p>
+        Non-null select item with empty f:selectItems Collection
+    </p>
+    <h:selectManyListbox id="emptyItems">
+        <f:selectItem itemValue="Choose" itemLabel="Choose" />
+        <f:selectItems value="#{select05.emptyCollection}"
+                       var="n"
+                       itemValue="#{n}" />
+    </h:selectManyListbox>
+
+
+    <!-- ////////////////////////////////////////////////////////////// -->
+
+
+    <p>
+    <h:commandButton id="command" value="Submit" />
+    </p>
+
+</h:form>
+<h:messages id="messages"/>
+</body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/standard/selectonemanyenum.jsp b/test/servlet30/systest/src/main/webapp/standard/selectonemanyenum.jsp
new file mode 100644
index 0000000..4e1b7ff
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/standard/selectonemanyenum.jsp
@@ -0,0 +1,99 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<%@ page contentType="text/html" %>
+<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
+<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+
+<html>
+    <head>
+        <title>SelectOneMany Enum Test</title>
+    </head>
+</html>
+<body>
+<f:view>
+    <h:form id="test">
+        <p>
+        <h:selectOneMenu id="selected" value="#{enumbean.selected}">
+            <f:selectItem itemValue="Value1" itemLabel="Value1"/>
+            <f:selectItem itemValue="Value2" itemLabel="Value2"/>
+            <f:selectItem itemValue="Value3" itemLabel="Value3"/>
+            <f:selectItem itemValue="Value4" itemLabel="Value4"/>
+        </h:selectOneMenu>
+        </p>
+        <p>
+        <h:selectOneListbox id="selected2" value="#{enumbean.selected2}">
+            <f:selectItem itemValue="Value1" itemLabel="Value1"/>
+            <f:selectItem itemValue="Value2" itemLabel="Value2"/>
+            <f:selectItem itemValue="Value3" itemLabel="Value3"/>
+            <f:selectItem itemValue="Value4" itemLabel="Value4"/>
+        </h:selectOneListbox>
+        </p>
+        <p>
+        <h:selectOneMenu id="selected3" value="#{enumbean.selected3}">
+            <f:selectItem itemValue="Value1" itemLabel="Value1"/>
+            <f:selectItem itemValue="Value2" itemLabel="Value2"/>
+            <f:selectItem itemValue="Value3" itemLabel="Value3"/>
+            <f:selectItem itemValue="Value4" itemLabel="Value4"/>
+        </h:selectOneMenu>
+        </p>
+        <p>
+        <h:selectManyListbox id="array" value="#{enumbean.selectedArray}">
+            <f:selectItem itemValue="Value1" itemLabel="Value1"/>
+            <f:selectItem itemValue="Value2" itemLabel="Value2"/>
+            <f:selectItem itemValue="Value3" itemLabel="Value3"/>
+            <f:selectItem itemValue="Value4" itemLabel="Value4"/>
+        </h:selectManyListbox>
+        </p>
+        <p>
+        <h:selectManyListbox id="list" value="#{enumbean.selectedList}">
+            <f:selectItem itemValue="Value1" itemLabel="Value1"/>
+            <f:selectItem itemValue="Value2" itemLabel="Value2"/>
+            <f:selectItem itemValue="Value3" itemLabel="Value3"/>
+            <f:selectItem itemValue="Value4" itemLabel="Value4"/>
+        </h:selectManyListbox>
+        </p>
+        <h:commandButton value="Submit"/>
+    </h:form>
+</f:view>
+</body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/standard/submit.xhtml b/test/servlet30/systest/src/main/webapp/standard/submit.xhtml
new file mode 100644
index 0000000..d71a355
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/standard/submit.xhtml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html
+        PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"
+        xmlns:h="http://java.sun.com/jsf/html">
+<head>
+    <title>Hello</title>
+</head>
+<body>
+<h:form id="form">
+
+ <h:outputText id="string"
+                 value="hello"/>
+</h:form>
+</body>
+</html>
\ No newline at end of file
diff --git a/test/servlet30/systest/src/main/webapp/state/dynamicAddition.xhtml b/test/servlet30/systest/src/main/webapp/state/dynamicAddition.xhtml
new file mode 100644
index 0000000..afd4f08
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/state/dynamicAddition.xhtml
@@ -0,0 +1,86 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+<h:head>
+<title>Dynamic Component Addition</title>
+<style type="text/css">
+.grayBox { padding: 8px; margin: 10px 0; border: 1px solid #CCC; background-color: #f9f9f9;  }
+</style>
+</h:head>
+
+<h:body>
+
+  <ui:debug hotkey="p" rendered="true"/>
+
+<h:form id="form">
+
+  <p>
+
+   Type some text <h:inputText id="textField" 
+                               validator="#{dynamicStateBean.validateAddition}" />
+
+  </p>
+
+  <p>
+
+    <h:outputText value="This text has a listener attached to it that adds the button with id cbutton">
+      <f:event type="preRenderComponent" listener="#{dynamicStateBean.beforeRenderAddition}" />
+    </h:outputText>
+
+  </p>
+
+  <p><h:commandButton value="reload" id="reload" /> </p>
+
+  <p>Text inside the form, after the reload button.</p>
+
+</h:form>
+
+  <p>Text outside the form.</p>
+
+</h:body>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/state/dynamicAddition2.xhtml b/test/servlet30/systest/src/main/webapp/state/dynamicAddition2.xhtml
new file mode 100644
index 0000000..481a705
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/state/dynamicAddition2.xhtml
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:h="http://java.sun.com/jsf/html">
+<head/>
+<body>
+<h:form id="form">
+    <h:panelGroup id="viewPanel">
+        <!-- dynamic created components are added here. -->
+    </h:panelGroup>
+    <h:commandButton id="render" value="render" action="#{dynamicStateBean2.render}"/>
+    <h:commandButton id="submit" value="submit" />
+</h:form>
+</body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/state/dynamicAdditionDeletion.xhtml b/test/servlet30/systest/src/main/webapp/state/dynamicAdditionDeletion.xhtml
new file mode 100644
index 0000000..1d97d80
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/state/dynamicAdditionDeletion.xhtml
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:h="http://java.sun.com/jsf/html">
+<h:head/>
+<h:body>
+  <h:form id="form">
+    <h:outputText for="render" value="Pressing this button three times in a row causes a NullPointerException" />
+    <p/>
+    <h:commandButton id="render" value="dynamicStateBean2.render()" action="#{dynamicStateBean2.render2}"/>
+    <h:panelGroup id="viewPanel"/>
+  </h:form>
+</h:body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/state/dynamicAdditionTransientSubTree.xhtml b/test/servlet30/systest/src/main/webapp/state/dynamicAdditionTransientSubTree.xhtml
new file mode 100644
index 0000000..c487a0d
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/state/dynamicAdditionTransientSubTree.xhtml
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+<head>
+    <title>dynamicAdditionTransientSubTree</title>
+</head>
+<body>
+    <h:form id="f">
+        <h:commandButton id="btn" actionListener="#{dynamicStateBean.transientRoot}" value="Add transient subtree" />
+        <h:panelGroup id="addto"  style="border:green 1px solid"></h:panelGroup>
+        <h:messages />
+    </h:form>
+</body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/state/dynamicDeletion.xhtml b/test/servlet30/systest/src/main/webapp/state/dynamicDeletion.xhtml
new file mode 100644
index 0000000..94040d6
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/state/dynamicDeletion.xhtml
@@ -0,0 +1,86 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+<h:head>
+<title>Dynamic Component Deletion</title>
+<style type="text/css">
+.grayBox { padding: 8px; margin: 10px 0; border: 1px solid #CCC; background-color: #f9f9f9;  }
+</style>
+</h:head>
+
+<h:body>
+
+  <ui:debug hotkey="p" rendered="true"/>
+
+<h:form id="form">
+
+  <p>
+
+   Type some text <h:inputText id="textField" 
+                               validator="#{dynamicStateBean.validateDeletion}" />
+
+  </p>
+
+  <p>
+
+    <h:outputText value="This text has a listener attached to it that deletes the button with id cbutton">
+      <f:event type="preRenderComponent" listener="#{dynamicStateBean.beforeRenderDeletion}" />
+    </h:outputText>
+
+  </p>
+
+  <p><h:commandButton value="delete me" id="cbutton" /> </p>
+
+  <p><h:commandButton value="reload" id="reload" /> </p>
+
+</h:form>
+
+
+
+</h:body>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/state/isSavingState.xhtml b/test/servlet30/systest/src/main/webapp/state/isSavingState.xhtml
new file mode 100644
index 0000000..fdc5488
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/state/isSavingState.xhtml
@@ -0,0 +1,69 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:ez="http://java.sun.com/jsf/composite/composite">
+<f:view afterPhase="#{captureIsSavingStateValueBean.afterPhase}"
+        beforePhase="#{captureIsSavingStateValueBean.beforePhase}">
+<h:head>
+<title>IsSavingState</title>
+</h:head>
+
+<h:body>
+
+<h:form prependId="false" id="form">
+
+    <ez:captureIsSavingStateValue />
+    <h:commandButton id="next" value="next" action="isSavingState2" />
+
+
+</h:form>
+
+
+</h:body>
+
+</f:view>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/state/isSavingState2.xhtml b/test/servlet30/systest/src/main/webapp/state/isSavingState2.xhtml
new file mode 100644
index 0000000..940fb03
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/state/isSavingState2.xhtml
@@ -0,0 +1,64 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+<h:head>
+<title>IsSavingState2</title>
+</h:head>
+
+<h:body>
+
+<h:form id="form">
+
+    beforeMessage: #{sessionScope['beforeMessage']}
+    duringMessage: #{sessionScope['javax.faces.IS_SAVING_STATE']}
+    afterMessage: #{sessionScope['afterMessage']}
+    #{captureIsSavingStateValueBean.removeMessagesFromSession}
+
+</h:form>
+
+
+</h:body>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/subview01.jsp b/test/servlet30/systest/src/main/webapp/subview01.jsp
new file mode 100644
index 0000000..4b235a5
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/subview01.jsp
@@ -0,0 +1,68 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+<%@ page contentType="text/html" language="java" %>
+<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
+<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
+<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %>
+
+<f:view>
+<html>
+<head>
+<title>subview01</title>
+</head>
+<body>
+<h:outputText value="Begin test <c:import> with subview tag in imported page"/>
+
+<p>
+<c:import url="foo01.jsp"/>
+</p>
+
+<p><h:outputText value="subview01"/></p>
+
+<p><c:import url="bar01.jsp"/></p>
+
+<p><h:outputText value="End test <c:import> with subview tag in imported page"/></p>
+</body>
+</html>
+</f:view>
diff --git a/test/servlet30/systest/src/main/webapp/subview02.jsp b/test/servlet30/systest/src/main/webapp/subview02.jsp
new file mode 100644
index 0000000..17965da
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/subview02.jsp
@@ -0,0 +1,74 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+<%@ page contentType="text/html" language="java" %>
+<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
+<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
+<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %>
+
+<f:view>
+<html>
+<head>
+<title>subview02</title>
+</head>
+<body>
+<p>
+<h:outputText value="Begin test <c:import> with subview tag in importing page"/>
+</p>
+
+<p><f:subview id="foo02">
+<c:import url="foo02.jsp"/>
+</f:subview></p>
+
+
+<p><h:outputText value="subview02"/></p>
+
+<p><f:subview id="bar02">
+<c:import url="bar02.jsp"/>
+</f:subview>
+</p>
+
+<p><h:outputText value="End test <c:import> with subview tag in importing page"/></p>
+</body>
+</html>
+</f:view>
diff --git a/test/servlet30/systest/src/main/webapp/subview03.jsp b/test/servlet30/systest/src/main/webapp/subview03.jsp
new file mode 100644
index 0000000..8ea85d7
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/subview03.jsp
@@ -0,0 +1,67 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+<%@ page contentType="text/html" language="java" %>
+<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
+<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
+<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %>
+
+<f:view>
+<html>
+<head>
+<title>subview03</title>
+</head>
+<body>
+<p>
+<h:outputText value="Begin test <c:include> with subview tag in included page"/></p>
+
+<p><jsp:include page="foo01.jsp"/></p>
+
+<p><h:outputText value="subview03"/></p>
+
+<p><jsp:include page="bar01.jsp"/></p>
+
+<p><h:outputText value="End test <c:include> with subview tag in included page"/></p>
+</body>
+</html>
+</f:view>
diff --git a/test/servlet30/systest/src/main/webapp/subview04.jsp b/test/servlet30/systest/src/main/webapp/subview04.jsp
new file mode 100644
index 0000000..5b317e1
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/subview04.jsp
@@ -0,0 +1,73 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+<%@ page contentType="text/html" language="java" %>
+<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
+<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
+<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %>
+
+<f:view>
+<html>
+<head>
+<title>subview04</title>
+</head>
+<body>
+<p>
+<h:outputText value="[A]"/></p>
+
+<f:subview id="foo02">
+<p><h:outputText value="Begin test <c:include> with subview tag in including page"/></p>
+
+<p><jsp:include page="bar01.jsp"/></p>
+</f:subview>
+
+<p><h:outputText value="subview04"/></p>
+
+<f:subview id="bar02">
+<p><jsp:include page="bar02.jsp"/></p>
+</f:subview>
+
+<p><h:outputText value="End test <c:include> with subview tag in including page"/></p>
+</body>
+</html>
+</f:view>
diff --git a/test/servlet30/systest/src/main/webapp/subview05.jsp b/test/servlet30/systest/src/main/webapp/subview05.jsp
new file mode 100644
index 0000000..cb96d66
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/subview05.jsp
@@ -0,0 +1,63 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+<%@ page contentType="text/html" language="java" %>
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
+<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %>
+
+<f:view>
+<html>
+<head>
+<title>subview05</title>
+</head>
+<body>
+<p><h:outputText value="Begin test jsp:include with subview and iterator tag in included page"/></p>
+<br />
+<p><jsp:include page="subviewIterator01.jsp"/></p>
+
+<p><h:outputText value="Text from subview05.jsp"/></p>
+</p><h:outputText value="End test jsp:include with subview and iterator tag in included page"/></p>
+</body>
+</html>
+</f:view>
diff --git a/test/servlet30/systest/src/main/webapp/subview06.jsp b/test/servlet30/systest/src/main/webapp/subview06.jsp
new file mode 100644
index 0000000..48d3184
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/subview06.jsp
@@ -0,0 +1,66 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+<%@ page contentType="text/html" language="java" %>
+<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
+<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
+<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %>
+
+<f:view>
+<html>
+<head>
+<title>subview06</title>
+</head>
+<body>
+<p><h:outputText value="Begin test <c:import> with iterator tag in imported page"/></p>
+<f:subview id="subviewOuter">
+<br />
+<p><c:import url="subviewIterator01.jsp"/></p>
+</f:subview>
+
+<p><h:outputText value="Text from subview06.jsp"/></p>
+
+<p><h:outputText value="End test <c:import> with iterator tag in imported page"/></p>
+</body>
+</html>
+</f:view>
diff --git a/test/servlet30/systest/src/main/webapp/subviewIterator01.jsp b/test/servlet30/systest/src/main/webapp/subviewIterator01.jsp
new file mode 100644
index 0000000..5d2734b
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/subviewIterator01.jsp
@@ -0,0 +1,59 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<%@ page contentType="text/html" language="java" %>
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
+<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %>
+
+<f:subview id="subviewInner">
+  <br>
+  <c:forEach var="i" begin="0" end="3" varStatus="status">
+    Array[<c:out value="${i}"/>]: 
+    <h:outputText value="This component has no ID " /><br>
+    <h:inputText value="This component has no ID " /><br>
+  </c:forEach>
+
+</f:subview>
+
diff --git a/test/servlet30/systest/src/main/webapp/subviewIterator02.jsp b/test/servlet30/systest/src/main/webapp/subviewIterator02.jsp
new file mode 100644
index 0000000..a5d0f01
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/subviewIterator02.jsp
@@ -0,0 +1,56 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<%@ page contentType="text/html" language="java" %>
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
+<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %>
+
+  <br>
+  <c:forEach var="i" begin="0" end="3" varStatus="status">
+    Array[<c:out value="${i}"/>]: 
+    <h:outputText value="This component has no ID " /><br>
+    <h:inputText value="This component has no ID " /><br>
+  </c:forEach>
+
diff --git a/test/servlet30/systest/src/main/webapp/success.xhtml b/test/servlet30/systest/src/main/webapp/success.xhtml
new file mode 100644
index 0000000..420f0b3
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/success.xhtml
@@ -0,0 +1,49 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+    <head><title>Success!</title></head>
+    <body>
+        <p>Success!</p>
+    </body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/tag-ivars1.jsp b/test/servlet30/systest/src/main/webapp/tag-ivars1.jsp
new file mode 100644
index 0000000..88653a4
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/tag-ivars1.jsp
@@ -0,0 +1,82 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+  <head>
+    <title>Test Tag ivars are cleared properly</title>
+    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
+    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+
+  </head>
+
+  <body>
+    <h1>Test Tag ivars are cleared properly</h1>
+
+<p><a
+href="https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=36">https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=36</a></p>
+
+
+<f:view>
+
+<h:form>
+
+<p>  <h:outputText value="component 1" /> </p>
+
+<p>  <h:outputText value="component 2" /> </p>
+
+<p>  <h:outputText value="component 3" /> </p>
+
+<p>  <% Object hello = ""; hello = null; Object goodBye = hello.toString(); %> </p>
+
+</h:form>
+
+</f:view>
+
+    <hr>
+    <address><a href="mailto:b_edward at bellsouth.net">Ed Burns</a></address>
+<!-- Created: Tue Aug 31 13:26:22 EDT 2004 -->
+<!-- hhmts start -->
+Last modified: Tue Aug 31 13:42:12 EDT 2004
+<!-- hhmts end -->
+  </body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/tag-ivars2.jsp b/test/servlet30/systest/src/main/webapp/tag-ivars2.jsp
new file mode 100644
index 0000000..d8174de
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/tag-ivars2.jsp
@@ -0,0 +1,79 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+  <head>
+    <title>Test Tag ivars are cleared properly</title>
+    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
+    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+
+  </head>
+
+  <body>
+    <h1>Test Tag ivars are cleared properly</h1>
+
+<p><a
+href="https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=36">https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=36</a></p>
+
+
+<f:view>
+
+<h:form>
+
+<p>  <h:outputText value="component 1" /> </p>
+
+<p>  <h:outputText value="component 2" /> </p>
+
+<p>  <h:outputText value="component 3" /> </p>
+
+</h:form>
+
+</f:view>
+
+    <hr>
+    <address><a href="mailto:b_edward at bellsouth.net">Ed Burns</a></address>
+<!-- Created: Tue Aug 31 13:26:22 EDT 2004 -->
+<!-- hhmts start -->
+<!-- hhmts end -->
+  </body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/taglib/attributeTest.jsp b/test/servlet30/systest/src/main/webapp/taglib/attributeTest.jsp
new file mode 100644
index 0000000..9dc37fc
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/taglib/attributeTest.jsp
@@ -0,0 +1,70 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+  <head>
+    <title>f:attribute</title>
+    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
+    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+  </head>
+
+  <body>
+    <h1>f:attribute</h1>
+
+<f:view>
+    <p>
+    <h:outputText value="This Should Be Red">
+      <f:attribute name="style" value="color: red" />
+    </h:outputText>
+    </p>
+
+    <p>
+    <h:outputText>
+       <f:attribute name="value" value="#{test2.stringProperty}" />
+    </h:outputText>
+    </p>
+
+</f:view>
+
+  </body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/taglib/commandButton_param_test.jsp b/test/servlet30/systest/src/main/webapp/taglib/commandButton_param_test.jsp
new file mode 100644
index 0000000..e343752
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/taglib/commandButton_param_test.jsp
@@ -0,0 +1,75 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<html>
+<head>
+    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
+    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+    <title>commandButton_param_test.jsp</title>
+</head>
+<body>
+    <f:loadBundle basename="com.sun.faces.systest.resources.Resources" 
+        var="messageBundle"/>
+    <f:view locale="en_US">
+      <h:form id="form01">
+        <h:commandButton id="button01" action="next" value="Label">
+          <h:outputText value="Test Link"/>
+          <f:param name="testname" value="testval"/>
+        </h:commandButton>
+        <p/>
+        <h:commandButton id="button02" action="next" value="Label">
+          <h:outputText value="Test Link"/>
+        </h:commandButton>
+        <p/>
+        <h:commandButton id="button03" action="next" value="Label">
+          <h:outputText value="Test Link"/>
+          <f:param name="testname2" value="#{test1.stringProperty}"/>
+        </h:commandButton>
+        <p/>
+        <h:commandButton id="button04" action="next" value="Label" onclick="hello();">
+          <h:outputText value="Test Link"/>
+          <f:param name="testname" value="testval"/>
+        </h:commandButton>
+      </h:form>
+    </f:view>
+</body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/taglib/commandButton_test.jsp b/test/servlet30/systest/src/main/webapp/taglib/commandButton_test.jsp
new file mode 100644
index 0000000..4ce0099
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/taglib/commandButton_test.jsp
@@ -0,0 +1,65 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<html>
+<head>
+    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
+    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+    <title>commandButton_test.jsp</title>
+</head>
+<body>
+    
+    <f:loadBundle basename="com.sun.faces.systest.resources.Resources" 
+        var="messageBundle"/>
+    <f:view locale="en_US">
+      <h:form id="form01">
+        <h:commandButton id="button01" type="submit" value="My Label"/>
+        <h:commandButton id="button02" type="reset" value="#{test1.stringProperty}"/>
+        <h:commandButton id="button03" type="submit" value="#{messageBundle.button_key}"/>
+        <h:commandButton id="button04" type="reset" image="duke.gif" value="FAIL"/>
+        <h:commandButton id="button05" type="submit" image="#{messageBundle.image_key}"/>
+        <h:commandButton id="button06" type="submit" image="My Label" onclick="hello();"/>
+      </h:form>
+    </f:view>
+</body>
+</html>
+
diff --git a/test/servlet30/systest/src/main/webapp/taglib/commandLink_multiform_test.jsp b/test/servlet30/systest/src/main/webapp/taglib/commandLink_multiform_test.jsp
new file mode 100644
index 0000000..fac71d0
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/taglib/commandLink_multiform_test.jsp
@@ -0,0 +1,80 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+                                                                                
+    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
+                                                                                
+                                                                                
+<html>
+  <body>
+     <f:view>
+     <h:form id="form01">
+       <h:commandLink id ="Link1" action="redirect">
+          <h:outputText value="Link1"/>
+          <f:param id="hlParam1" name="param1" value="value1"/>
+          <f:param id="hlParam2" name="param2" value="value2"/>
+       </h:commandLink>
+       <h:commandLink id ="Link2" action="redirect">
+          <h:outputText value="Link2"/>
+          <f:param id="hlParam3" name="param1" value="value1"/>
+          <f:param id="hlParam4" name="param2" value="value2"/>
+       </h:commandLink>
+    </h:form> 
+    <h:form id="form02">
+       <h:commandLink id ="Link3" action="redirect">
+          <h:outputText value="Link3"/>
+          <f:param id="hlParam1" name="param3" value="value3"/>
+          <f:param id="hlParam2" name="param4" value="value4"/>
+       </h:commandLink>
+       <h:commandLink id ="Link4" action="forward">
+          <h:outputText value="Link4"/>
+       </h:commandLink>
+       <h:commandLink value="Link5">
+           <f:param id="l5param1" name="#{null}" value="should_not_be_present"/>
+           <f:param id="l5param2" name="param5" value="#{null}"/>
+       </h:commandLink>
+   </h:form>
+   </f:view>
+  </body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/taglib/commandLink_test.jsp b/test/servlet30/systest/src/main/webapp/taglib/commandLink_test.jsp
new file mode 100644
index 0000000..5fa82e0
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/taglib/commandLink_test.jsp
@@ -0,0 +1,66 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<html>
+<head>
+    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
+    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+    <title>commandLink_test.jsp</title>
+</head>
+<body>
+    <f:loadBundle basename="com.sun.faces.systest.resources.Resources" 
+         var="messageResources"/>
+    <f:view>
+      <h:form id="form01">
+        <h:commandLink id="hyperlink01"><f:verbatim>My Link</f:verbatim></h:commandLink>
+        <h:commandLink id="hyperlink02"><h:outputText value="#{test1.stringProperty}"/></h:commandLink>
+        <h:commandLink id="hyperlink03"><h:outputText value="#{messageResources.hyperlink_key}"/></h:commandLink>
+        <h:commandLink id="hyperlink04"><f:verbatim escape="false"><img src="duke.gif" /></f:verbatim></h:commandLink>
+        <h:commandLink id="hyperlink05"><h:graphicImage value="#{messageResources.image_key}"/></h:commandLink>
+        <h:commandLink id="hyperlink06"><f:verbatim>Paramter Link</f:verbatim>
+            <f:param name="param1" value="value1"/>
+        </h:commandLink>
+      </h:form>
+    </f:view>
+</body>
+</html>
+
diff --git a/test/servlet30/systest/src/main/webapp/taglib/command_button_test.jsp b/test/servlet30/systest/src/main/webapp/taglib/command_button_test.jsp
new file mode 100644
index 0000000..8461984
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/taglib/command_button_test.jsp
@@ -0,0 +1,64 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<html>
+<head>
+    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
+    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+    <title>command_button_test.jsp</title>
+</head>
+<body>
+    
+    <f:loadBundle basename="com.sun.faces.systest.resources.Resources" 
+        var="messageBundle"/>
+    <f:view locale="en_US">
+      <h:form id="form01">
+        <h:command_button id="button01" type="submit" value="My Label"/>
+        <h:command_button id="button02" type="reset" value="#{test1.stringProperty}"/>
+        <h:command_button id="button03" type="submit" value="#{messageBundle.button_key}"/>
+        <h:command_button id="button04" type="reset" image="duke.gif" value="FAIL"/>
+        <h:command_button id="button05" type="submit" image="#{messageBundle.image_key}"/>
+      </h:form>
+    </f:view>
+</body>
+</html>
+
diff --git a/test/servlet30/systest/src/main/webapp/taglib/command_link_test.jsp b/test/servlet30/systest/src/main/webapp/taglib/command_link_test.jsp
new file mode 100644
index 0000000..f3faaea
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/taglib/command_link_test.jsp
@@ -0,0 +1,66 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<html>
+<head>
+    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
+    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+    <title>command_link_test.jsp</title>
+</head>
+<body>
+    <f:loadBundle basename="com.sun.faces.systest.resources.Resources" 
+         var="messageResources"/>
+    <f:view>
+      <h:form id="form01">
+        <h:command_link id="hyperlink01"><f:verbatim>My Link</f:verbatim></h:command_link>
+        <h:command_link id="hyperlink02"><h:output_text value="#{test1.stringProperty}"/></h:command_link>
+        <h:command_link id="hyperlink03"><h:output_text value="#{messageResources.hyperlink_key}"/></h:command_link>
+        <h:command_link id="hyperlink04"><f:verbatim escape="false"><img src="duke.gif" /></f:verbatim></h:command_link>
+        <h:command_link id="hyperlink05"><h:graphic_image value="#{messageResources.image_key}"/></h:command_link>
+        <h:command_link id="hyperlink06"><f:verbatim>Paramter Link</f:verbatim>
+            <f:param name="param1" value="value1"/>
+        </h:command_link>
+      </h:form>
+    </f:view>
+</body>
+</html>
+
diff --git a/test/servlet30/systest/src/main/webapp/test01.jsp b/test/servlet30/systest/src/main/webapp/test01.jsp
new file mode 100644
index 0000000..8859ac6
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/test01.jsp
@@ -0,0 +1,53 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+<%@ page contentType="text/html" language="java" %>
+<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
+<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
+<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %>
+
+<f:subview id="test01">
+interweaving
+<h:outputText value="works"/>
+well!!
+</f:subview>
diff --git a/test/servlet30/systest/src/main/webapp/validator.jsp b/test/servlet30/systest/src/main/webapp/validator.jsp
new file mode 100644
index 0000000..fb34939
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/validator.jsp
@@ -0,0 +1,67 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<%@ page contentType="text/html"
+%><%@ page import="javax.faces.FactoryFinder"
+%><%@ page import="javax.faces.application.Application"
+%><%@ page import="javax.faces.application.ApplicationFactory"
+%><%@ page import="javax.faces.validator.Validator"
+%><%@ page import="com.sun.faces.systest.TestValidator"
+%><%
+
+  // Acquire our Application instance
+  ApplicationFactory afactory = (ApplicationFactory)
+   FactoryFinder.getFactory(FactoryFinder.APPLICATION_FACTORY);
+  Application appl = afactory.getApplication();
+
+  // try to retrieve our validator from Application
+  Validator result = appl.createValidator("TestValidator");
+  // report the result
+  if (result == null || 
+      !(result instanceof com.sun.faces.systest.TestValidator)) {
+    out.println("/validator.jsp FAILED");
+    return;
+  } else {
+      out.println("/validator.jsp PASSED");
+  }
+  
+%>
diff --git a/test/servlet30/systest/src/main/webapp/validator01.jsp b/test/servlet30/systest/src/main/webapp/validator01.jsp
new file mode 100644
index 0000000..6f8dc2d
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/validator01.jsp
@@ -0,0 +1,72 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<%@ page contentType="text/html"
+%><%@ page import="javax.faces.FactoryFinder"
+%><%@ page import="javax.faces.application.Application"
+%><%@ page import="javax.faces.application.ApplicationFactory"
+%><%@ page import="javax.faces.validator.Validator"
+%><%@ page import="com.sun.faces.systest.TestValidator"
+%><%
+
+  // Acquire our Application instance
+  ApplicationFactory afactory = (ApplicationFactory)
+   FactoryFinder.getFactory(FactoryFinder.APPLICATION_FACTORY);
+  Application appl = afactory.getApplication();
+
+  // replace mappings provided by the JSF implementation for Length
+  // LengthValidator and make sure that it can be retrieved using the
+  // standard identifier.
+  appl.addValidator("Length", "com.sun.faces.systest.TestValidator");
+
+  // try to retrieve our component from Application
+  Validator result = appl.createValidator("Length");
+  // report the result
+  if (result == null || 
+      !(result instanceof com.sun.faces.systest.TestValidator)) {
+    out.println("/validator01.jsp FAILED");
+    return;
+  } else {
+      out.println("/validator01.jsp PASSED");
+  }
+  
+%>
diff --git a/test/servlet30/systest/src/main/webapp/validator02.jsp b/test/servlet30/systest/src/main/webapp/validator02.jsp
new file mode 100644
index 0000000..eda5211
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/validator02.jsp
@@ -0,0 +1,135 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+  <head>
+    <title>Validators</title>
+    <%@ taglib uri="http://java.sun.com/jsf/core"  prefix="f" %>
+    <%@ taglib uri="http://java.sun.com/jsf/html"  prefix="h" %>
+  </head>
+
+  <body>
+    <h1>Validators</h1>
+
+<f:view>
+
+  <h:form>
+
+    <h:panelGrid columns="2">
+
+<%-- Case 1: Custom Validator with "validatorId" attribute --%>
+
+      <h:inputText id="text1"> 
+        <f:validator validatorId="TestValidator01" />
+      </h:inputText>
+
+      <h:message for="text1" />
+
+<%-- Case 2: Custom Validator with "binding" attribute --%>
+
+      <h:inputText id="text2"> 
+        <f:validator binding="#{validatorBean.validator}" />
+      </h:inputText>
+
+      <h:message for="text2" />
+
+<%-- Case 3: "validatorId" and "binding" specified                        --%>
+<%--         "binding" will set the instance (created from "validatorId") --%>
+<%--         to a property on the backing bean                     --%>
+
+      <h:inputText id="text3"> 
+        <f:validator validatorId="TestValidator01"
+           binding="#{validatorBean.validator}" />
+      </h:inputText>
+
+      <h:message for="text3" />
+
+<%-- Bind the validator we created (Case 3) to the component --%>
+
+      <h:inputText id="text4">
+        <f:validator binding="#{validatorBean.validator}" />
+      </h:inputText>
+
+      <h:message for="text4" />
+
+<%-- Double Range Validator with "binding" attribute --%>
+                                                                                     
+      <h:inputText id="text5">
+        <f:validateDoubleRange binding="#{validatorBean.doubleValidator}" 
+           maximum="2" />
+      </h:inputText>
+                                                                                     
+      <h:message for="text5" />
+                                                                                     
+<%-- Length Validator with "binding" attribute --%>
+                                                                                     
+      <h:inputText id="text6">
+        <f:validateLength binding="#{validatorBean.lengthValidator}" 
+           maximum="5" />
+      </h:inputText>
+                                                                                     
+      <h:message for="text6" />
+                                                                                     
+<%-- Long Range Validator with "binding" attribute --%>
+                                                                                     
+      <h:inputText id="text7">
+        <f:validateLongRange binding="#{validatorBean.longRangeValidator}"
+           minimum="13000000000" maximum="13999999999" />
+      </h:inputText>
+                                                                                     
+      <h:message for="text7" />
+                                                                                     
+
+      <h:commandButton value="submit" /> <h:messages />
+
+    </h:panelGrid>
+
+  </h:form>
+
+</f:view>
+
+    <hr>
+  </body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/validator03.jsp b/test/servlet30/systest/src/main/webapp/validator03.jsp
new file mode 100644
index 0000000..7111d2e
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/validator03.jsp
@@ -0,0 +1,120 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+  <head>
+    <title>Validators</title>
+    <%@ taglib uri="http://java.sun.com/jsf/core"  prefix="f" %>
+    <%@ taglib uri="http://java.sun.com/jsf/html"  prefix="h" %>
+  </head>
+
+  <body>
+    <h1>Validators</h1>
+
+<f:view>
+
+  <h:form>
+
+    <h:panelGrid columns="3">
+
+<%-- Case 1: Double Range Validator with no "label" attribute --%>
+
+      <h:outputText value="DoubleRange1:"/>
+      <h:inputText id="dr1"> 
+        <f:validateDoubleRange minimum="2" maximum="5" />
+      </h:inputText>
+      <h:message for="dr1" showSummary="true" />
+
+<%-- Case 2: Double Range Validator with "label" attribute --%>
+
+      <h:outputText value="DoubleRange2:"/>
+      <h:inputText id="dr2" label="DoubleRange2"> 
+        <f:validateDoubleRange minimum="2" maximum="5" />
+      </h:inputText>
+      <h:message for="dr2" showSummary="true" />
+
+<%-- Case 3: Length Validator with no "label" attribute --%>
+
+      <h:outputText value="Length1:"/>
+      <h:inputText id="l1"> 
+        <f:validateLength minimum="2" maximum="5" />
+      </h:inputText>
+      <h:message for="l1" showSummary="true" />
+
+<%-- Case 4: Length Validator with "label" attribute --%>
+
+      <h:outputText value="Length2:"/>
+      <h:inputText id="l2" label="Length2"> 
+        <f:validateLength minimum="2" maximum="5" />
+      </h:inputText>
+      <h:message for="l2" showSummary="true" />
+
+<%-- Case 5: Long Range Validator with no "label" attribute --%>
+
+      <h:outputText value="LongRange1:"/>
+      <h:inputText id="lr1"> 
+        <f:validateLongRange minimum="2" maximum="5" />
+      </h:inputText>
+      <h:message for="lr1" showSummary="true" />
+
+<%-- Case 6: Long Range Validator with "label" attribute --%>
+
+      <h:outputText value="LongRange2:"/>
+      <h:inputText id="lr2" label="LongRange2"> 
+        <f:validateLongRange minimum="2" maximum="5" />
+      </h:inputText>
+      <h:message for="lr2" showSummary="true" />
+
+      <h:commandButton value="submit" />
+
+    </h:panelGrid>
+
+  </h:form>
+
+</f:view>
+
+    <hr>
+  </body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/validator04.jsp b/test/servlet30/systest/src/main/webapp/validator04.jsp
new file mode 100644
index 0000000..f68adf6
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/validator04.jsp
@@ -0,0 +1,105 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+  <head>
+    <title>Validators</title>
+    <%@ taglib uri="http://java.sun.com/jsf/core"  prefix="f" %>
+    <%@ taglib uri="http://java.sun.com/jsf/html"  prefix="h" %>
+  </head>
+
+  <body>
+    <h1>Validators</h1>
+
+<f:view>
+
+  <h:form>
+
+    literal required: <h:inputText id="textField" required="true" 
+                 requiredMessage="Literal Message" />
+
+    <p/>
+
+    expression required <h:inputText id="textField2" required="true" 
+                 requiredMessage="#{test2.stringProperty}" />
+
+    <p/>
+    
+    literal converter <h:inputText id="textField3" value="#{test2.intProperty}" 
+                         converterMessage="Converter Literal" />
+
+    <p/>
+
+    expression converter <h:inputText id="textField4" value="#{test2.intProperty}" 
+                         converterMessage="#{test2.converterMessage}" />
+
+    <p/>
+    
+    literal validator <h:inputText id="textField5" value="#{test2.intProperty}" 
+                         validatorMessage="Validator Literal">
+                         <f:validateLongRange minimum="1" maximum="10" />
+                      </h:inputText>
+
+    <p/>
+
+    expression validator <h:inputText id="textField6" value="#{test2.intProperty}" 
+                         validatorMessage="#{test2.validatorMessage}">
+                         <f:validateLongRange minimum="1" maximum="10" />
+                      </h:inputText>
+
+    <p/>
+    
+
+    <h:messages />
+
+    <h:commandButton value="submit" />
+
+  </h:form>
+
+</f:view>
+
+    <hr>
+  </body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/validator05.xhtml b/test/servlet30/systest/src/main/webapp/validator05.xhtml
new file mode 100644
index 0000000..680e306
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/validator05.xhtml
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:f="http://java.sun.com/jsf/core">
+<head>
+    <title>form level validation test</title>
+</head>
+<body>
+<h:form id="form" prependId="false">
+  <f:event type="postValidate" listener="#{eventTagBean.postValidate}" />
+
+  <p>lesser: <h:inputText id="lesser" /></p>
+
+  <p>greater: <h:inputText id="greater" /></p>
+
+  <p>Verify that the value of "lesser" is lesser than the value of
+  "greater".</p>
+
+  <p><h:commandButton id="cbutton" value="submit" /></p>
+
+</h:form>
+
+
+<h:messages id="messages"/>
+</body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/valueBinding01.jsp b/test/servlet30/systest/src/main/webapp/valueBinding01.jsp
new file mode 100644
index 0000000..d0ad4db
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/valueBinding01.jsp
@@ -0,0 +1,77 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<%@ page contentType="text/html"
+%><%@ page import="javax.faces.application.Application"
+%><%@ page import="javax.faces.context.FacesContext"
+%><%@ page import="javax.faces.el.ValueBinding"
+%><%@ page import="com.sun.faces.systest.model.TestBean"
+%><%
+
+  // Instantiate our test bean in request scope
+  TestBean bean = new TestBean();
+  FacesContext context = FacesContext.getCurrentInstance();
+  context.getExternalContext().getRequestMap().put
+   ("testVB", bean);
+
+  // Retrieve the bean itself with a value binding expression
+  ValueBinding vb = context.getApplication().createValueBinding
+   ("#{testVB}");
+  Object result;
+  try {
+    result = vb.getValue(context);
+  } catch (Exception e) {
+    out.println("/valueBinding01.jsp FAILED - getValue() exception: " + e);
+    e.printStackTrace(System.out);
+    return;
+  }
+
+  // Validate the result
+  if (result == null) {
+    out.println("/valueBinding01.jsp FAILED - getValue() returned null");
+  } else if (bean != result) {
+    out.println("/valueBinding01.jsp FAILED - getValue() returned " + result);
+  } else {
+    out.println("/valueBinding01.jsp PASSED");
+  }
+
+%>
diff --git a/test/servlet30/systest/src/main/webapp/valueBinding02.jsp b/test/servlet30/systest/src/main/webapp/valueBinding02.jsp
new file mode 100644
index 0000000..3c76f47
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/valueBinding02.jsp
@@ -0,0 +1,79 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<%@ page contentType="text/html"
+%><%@ page import="javax.faces.application.Application"
+%><%@ page import="javax.faces.context.FacesContext"
+%><%@ page import="javax.faces.el.ValueBinding"
+%><%@ page import="com.sun.faces.systest.model.TestBean"
+%><%
+
+  // Instantiate our test bean in request scope
+  TestBean bean = new TestBean();
+  FacesContext context = FacesContext.getCurrentInstance();
+  context.getExternalContext().getRequestMap().put
+   ("testVB", bean);
+
+  // Retrieve a simple String property with a value binding expression
+  ValueBinding vb = context.getApplication().createValueBinding
+   ("#{testVB.stringProperty}");
+  Object result;
+  try {
+    result = vb.getValue(context);
+  } catch (Exception e) {
+    out.println("/valueBinding02.jsp FAILED - getValue() exception: " + e);
+    e.printStackTrace(System.out);
+    return;
+  }
+
+  // Validate the result
+  if (result == null) {
+    out.println("/valueBinding02.jsp FAILED - getValue() returned null");
+  } else if (!(result instanceof String)) {
+    out.println("/valueBinding02.jsp FAILED - getValue() returned " + result);
+  } else if (!"This is a String property".equals((String) result)) {
+    out.println("/valueBinding02.jsp FAILED - getValue() returned " + result);
+  } else {
+    out.println("/valueBinding02.jsp PASSED");
+  }
+
+%>
diff --git a/test/servlet30/systest/src/main/webapp/valueBinding03.jsp b/test/servlet30/systest/src/main/webapp/valueBinding03.jsp
new file mode 100644
index 0000000..13a6cac
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/valueBinding03.jsp
@@ -0,0 +1,79 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<%@ page contentType="text/html"
+%><%@ page import="javax.faces.application.Application"
+%><%@ page import="javax.faces.context.FacesContext"
+%><%@ page import="javax.faces.el.ValueBinding"
+%><%@ page import="com.sun.faces.systest.model.TestBean"
+%><%
+
+  // Instantiate our test bean in request scope
+  TestBean bean = new TestBean();
+  FacesContext context = FacesContext.getCurrentInstance();
+  context.getExternalContext().getRequestMap().put
+   ("testVB", bean);
+
+  // Retrieve a simple integer property with a value binding expression
+  ValueBinding vb = context.getApplication().createValueBinding
+   ("#{testVB.intProperty}");
+  Object result;
+  try {
+    result = vb.getValue(context);
+  } catch (Exception e) {
+    out.println("/valueBinding03.jsp FAILED - getValue() exception: " + e);
+    e.printStackTrace(System.out);
+    return;
+  }
+
+  // Validate the result
+  if (result == null) {
+    out.println("/valueBinding03.jsp FAILED - getValue() returned null");
+  } else if (!(result instanceof Number)) {
+    out.println("/valueBinding03.jsp FAILED - getValue() returned " + result);
+  } else if (123 != ((Number) result).intValue()) {
+    out.println("/valueBinding03.jsp FAILED - getValue() returned " + result);
+  } else {
+    out.println("/valueBinding03.jsp PASSED");
+  }
+
+%>
diff --git a/test/servlet30/systest/src/main/webapp/valueBinding04.jsp b/test/servlet30/systest/src/main/webapp/valueBinding04.jsp
new file mode 100644
index 0000000..73a492e
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/valueBinding04.jsp
@@ -0,0 +1,79 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<%@ page contentType="text/html"
+%><%@ page import="javax.faces.application.Application"
+%><%@ page import="javax.faces.context.FacesContext"
+%><%@ page import="javax.faces.el.ValueBinding"
+%><%@ page import="com.sun.faces.systest.model.TestBean"
+%><%
+
+  // Instantiate our test bean in request scope
+  TestBean bean = new TestBean();
+  FacesContext context = FacesContext.getCurrentInstance();
+  context.getExternalContext().getRequestMap().put
+   ("testVB", bean);
+
+  // Retrieve a simple boolean property with a value binding expression
+  ValueBinding vb = context.getApplication().createValueBinding
+   ("#{testVB.booleanProperty}");
+  Object result;
+  try {
+    result = vb.getValue(context);
+  } catch (Exception e) {
+    out.println("/valueBinding04.jsp FAILED - getValue() exception: " + e);
+    e.printStackTrace(System.out);
+    return;
+  }
+
+  // Validate the result
+  if (result == null) {
+    out.println("/valueBinding04.jsp FAILED - getValue() returned null");
+  } else if (!(result instanceof Boolean)) {
+    out.println("/valueBinding04.jsp FAILED - getValue() returned " + result);
+  } else if (!((Boolean) result).booleanValue()) {
+    out.println("/valueBinding04.jsp FAILED - getValue() returned " + result);
+  } else {
+    out.println("/valueBinding04.jsp PASSED");
+  }
+
+%>
diff --git a/test/servlet30/systest/src/main/webapp/valueBinding05.jsp b/test/servlet30/systest/src/main/webapp/valueBinding05.jsp
new file mode 100644
index 0000000..398a8db
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/valueBinding05.jsp
@@ -0,0 +1,79 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<%@ page contentType="text/html"
+%><%@ page import="javax.faces.application.Application"
+%><%@ page import="javax.faces.context.FacesContext"
+%><%@ page import="javax.faces.el.ValueBinding"
+%><%@ page import="com.sun.faces.systest.model.TestBean"
+%><%
+
+  // Instantiate our test bean in request scope
+  TestBean bean = new TestBean();
+  FacesContext context = FacesContext.getCurrentInstance();
+  context.getExternalContext().getRequestMap().put
+   ("testVB", bean);
+
+  // Retrieve a simple integer expression with a value binding expression
+  ValueBinding vb = context.getApplication().createValueBinding
+   ("#{testVB.intProperty + 1}");
+  Object result;
+  try {
+    result = vb.getValue(context);
+  } catch (Exception e) {
+    out.println("/valueBinding05.jsp FAILED - getValue() exception: " + e);
+    e.printStackTrace(System.out);
+    return;
+  }
+
+  // Validate the result
+  if (result == null) {
+    out.println("/valueBinding05.jsp FAILED - getValue() returned null");
+  } else if (!(result instanceof Number)) {
+    out.println("/valueBinding05.jsp FAILED - getValue() returned " + result);
+  } else if (124 != ((Number) result).intValue()) {
+    out.println("/valueBinding05.jsp FAILED - getValue() returned " + result);
+  } else {
+    out.println("/valueBinding05.jsp PASSED");
+  }
+
+%>
diff --git a/test/servlet30/systest/src/main/webapp/valueBinding06.jsp b/test/servlet30/systest/src/main/webapp/valueBinding06.jsp
new file mode 100644
index 0000000..65e096e
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/valueBinding06.jsp
@@ -0,0 +1,79 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<%@ page contentType="text/html"
+%><%@ page import="javax.faces.application.Application"
+%><%@ page import="javax.faces.context.FacesContext"
+%><%@ page import="javax.faces.el.ValueBinding"
+%><%@ page import="com.sun.faces.systest.model.TestBean"
+%><%
+
+  // Instantiate our test bean in request scope
+  TestBean bean = new TestBean();
+  FacesContext context = FacesContext.getCurrentInstance();
+  context.getExternalContext().getRequestMap().put
+   ("testVB", bean);
+
+  // Retrieve a simple boolean expression with a value binding expression
+  ValueBinding vb = context.getApplication().createValueBinding
+   ("#{testVB.intProperty > 100}");
+  Object result;
+  try {
+    result = vb.getValue(context);
+  } catch (Exception e) {
+    out.println("/valueBinding06.jsp FAILED - getValue() exception: " + e);
+    e.printStackTrace(System.out);
+    return;
+  }
+
+  // Validate the result
+  if (result == null) {
+    out.println("/valueBinding06.jsp FAILED - getValue() returned null");
+  } else if (!(result instanceof Boolean)) {
+    out.println("/valueBinding06.jsp FAILED - getValue() returned " + result);
+  } else if (!((Boolean) result).booleanValue()) {
+    out.println("/valueBinding06.jsp FAILED - getValue() returned " + result);
+  } else {
+    out.println("/valueBinding06.jsp PASSED");
+  }
+
+%>
diff --git a/test/servlet30/systest/src/main/webapp/valueBinding07.jsp b/test/servlet30/systest/src/main/webapp/valueBinding07.jsp
new file mode 100644
index 0000000..fa529de
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/valueBinding07.jsp
@@ -0,0 +1,81 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<%@ page contentType="text/html"
+%><%@ page import="javax.faces.application.Application"
+%><%@ page import="javax.faces.context.FacesContext"
+%><%@ page import="javax.faces.el.ValueBinding"
+%><%@ page import="com.sun.faces.systest.model.TestBean"
+%><%
+
+  // Instantiate our test bean in request scope
+  TestBean bean = new TestBean();
+  bean.setStringProperty("foo");
+  FacesContext context = FacesContext.getCurrentInstance();
+  context.getExternalContext().getRequestMap().put
+   ("testVB", bean);
+
+  // Retrieve a simple String property with a value binding expression
+  ValueBinding vb;
+  Object result;
+  try {
+    vb = context.getApplication().createValueBinding
+     ("#{testVB.stringProperty} and #{testVB.stringProperty}");
+    result = vb.getValue(context);
+  } catch (Exception e) {
+    out.println("/valueBinding07.jsp FAILED - getValue() exception: " + e);
+    e.printStackTrace(System.out);
+    return;
+  }
+
+  // Validate the result
+  if (result == null) {
+    out.println("/valueBinding07.jsp FAILED - getValue() returned null");
+  } else if (!(result instanceof String)) {
+    out.println("/valueBinding07.jsp FAILED - getValue() returned " + result);
+  } else if (!"foo and foo".equals((String) result)) {
+    out.println("/valueBinding07.jsp FAILED - getValue() returned " + result);
+  } else {
+    out.println("/valueBinding07.jsp PASSED");
+  }
+
+%>
diff --git a/test/servlet30/systest/src/main/webapp/valueChangeListener.jsp b/test/servlet30/systest/src/main/webapp/valueChangeListener.jsp
new file mode 100644
index 0000000..49d9653
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/valueChangeListener.jsp
@@ -0,0 +1,95 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+  <head>
+    <title>ValueChangeListeners and Validators</title>
+    <%@ taglib uri="http://java.sun.com/jsf/core"  prefix="f" %>
+    <%@ taglib uri="http://java.sun.com/jsf/html"  prefix="h" %>
+  </head>
+
+  <body>
+    <h1>ValueChangeListeners and Validators</h1>
+
+<f:view>
+
+  <h:form>
+
+    <p>Enter numbers from 1 to 10.</p>
+
+    <h:panelGrid columns="2">
+
+      <h:inputText id="textA" 
+	       valueChangeListener="#{valueChangeListenerBean.textAChanged}">
+        <f:validateLongRange minimum="1" maximum="10" />
+      </h:inputText>
+
+      <h:inputText id="textB" 
+	       valueChangeListener="#{valueChangeListenerBean.textBChanged}">
+        <f:validateLongRange minimum="1" maximum="10" />
+      </h:inputText>
+
+      <h:outputText value="#{valueChangeListenerBean.textAResult}" />
+
+      <h:outputText value="#{valueChangeListenerBean.textBResult}" />
+
+      <h:commandButton value="submit" /> <p>
+
+      <h:messages dir="LTR" lang="en"/>
+
+      <hr />
+
+      <h:message for="textB" dir="RTL" lang="de"/>
+
+
+    </h:panelGrid>
+
+  </h:form>
+
+</f:view>
+
+    <hr>
+  </body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/valueChangeListener02.jsp b/test/servlet30/systest/src/main/webapp/valueChangeListener02.jsp
new file mode 100644
index 0000000..41b0a04
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/valueChangeListener02.jsp
@@ -0,0 +1,65 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+    <title>ValueChangeListeners and Validators</title>
+    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
+</head>
+
+<body>
+<h1>ValueChangeListeners</h1>
+
+<f:view>
+    <h:form>
+        <h:selectBooleanCheckbox value="true">
+            <f:valueChangeListener type="com.sun.faces.systest.model.TestValueChangeListener"/>
+        </h:selectBooleanCheckbox>
+        <h:commandButton value="Click"/>
+    </h:form>
+    <h:messages/>
+</f:view>
+
+</body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/verbatim_test.jsp b/test/servlet30/systest/src/main/webapp/verbatim_test.jsp
new file mode 100644
index 0000000..57bd6bf
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/verbatim_test.jsp
@@ -0,0 +1,90 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+
+<f:view>
+
+  <html>
+
+    <head>
+      <title>Test of the Verbatim Tag</title>
+    </head>
+
+    <body>
+
+      <h1>Test of the Verbatim Tag</h1>
+
+      <p>
+        <f:verbatim>
+          [DEFAULT]
+          This text <b>has angle brackets</b>.
+          The angle brackets MUST NOT be escaped.
+        </f:verbatim>
+      </p>
+
+      <p>
+        <f:verbatim escape="false">
+          [FALSE]
+          This text <b>has angle brackets</b>.
+          The angle brackets MUST NOT be escaped.
+        </f:verbatim>
+      </p>
+
+      <p>
+        <f:verbatim escape="true">
+          [TRUE]
+          This text <b>has angle brackets</b>.
+          The angle brackets MUST be escaped.
+        </f:verbatim>
+      </p>
+
+     <p><f:verbatim rendered="false">This text must not be rendered.
+        </f:verbatim>  This text is rendered.
+     </p>
+
+    </body>
+
+  </html>
+
+</f:view>
+
diff --git a/test/servlet30/systest/src/main/webapp/view.xml/footer.xhtml b/test/servlet30/systest/src/main/webapp/view.xml/footer.xhtml
new file mode 100644
index 0000000..c333bc6
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/view.xml/footer.xhtml
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<table xmlns="http://www.w3.org/1999/xhtml"
+       xmlns:ui="http://java.sun.com/jsf/facelets"
+       xmlns:h="http://java.sun.com/jsf/html" border="1">
+
+    <tr>
+        <th>HTML table column 1</th>
+
+        <th>HTML table column 2</th>
+        
+    </tr>
+
+    <tr>
+
+        <ui:insert name="footer" />
+
+    </tr>
+
+
+</table>
diff --git a/test/servlet30/systest/src/main/webapp/view.xml/header.view.xml b/test/servlet30/systest/src/main/webapp/view.xml/header.view.xml
new file mode 100644
index 0000000..2714b8a
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/view.xml/header.view.xml
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<f:view xmlns:h="http://java.sun.com/jsf/html"
+    xmlns:f="http://java.sun.com/jsf/core"
+    xmlns:ui="http://java.sun.com/jsf/facelets">
+
+    <h:panelGrid id="gridXml" column="3">
+
+        <h:outputText id="text1" value="column1"></h:outputText>
+
+        <h:outputText id="text2" value="column2"></h:outputText>
+
+        <h:outputText id="text3" value="column3"></h:outputText>
+
+        <ui:insert name="header"></ui:insert>
+
+    </h:panelGrid>
+
+</f:view>
+
+
diff --git a/test/servlet30/systest/src/main/webapp/view.xml/includedInFooter.view.xml b/test/servlet30/systest/src/main/webapp/view.xml/includedInFooter.view.xml
new file mode 100644
index 0000000..cb69b36
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/view.xml/includedInFooter.view.xml
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<f:view
+    xmlns:h="http://java.sun.com/jsf/html"
+    xmlns:f="http://java.sun.com/jsf/core"
+    xmlns:ui="http://java.sun.com/jsf/facelets">
+
+    #{param1}
+
+</f:view>
+
+
diff --git a/test/servlet30/systest/src/main/webapp/view.xml/includedInFooter.xhtml b/test/servlet30/systest/src/main/webapp/view.xml/includedInFooter.xhtml
new file mode 100644
index 0000000..0f56509
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/view.xml/includedInFooter.xhtml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<td xmlns="http://www.w3.org/1999/xhtml">#{param2}</td>
diff --git a/test/servlet30/systest/src/main/webapp/view.xml/index.view.xml b/test/servlet30/systest/src/main/webapp/view.xml/index.view.xml
new file mode 100644
index 0000000..83433f0
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/view.xml/index.view.xml
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<f:view  
+    xmlns:f="http://java.sun.com/jsf/core"
+    xmlns:h="http://java.sun.com/jsf/html">
+
+    <html xmlns="http://www.w3.org/1999/xhtml">
+
+        <h:head><title>Raw XML View</title></h:head>
+
+        <h:body>
+
+            <h:form prependId="false" id="form">
+
+                <h:panelGrid id="grid" column="2">
+
+                    <h:outputText id="text" value="hello"></h:outputText>
+
+                    <h:commandButton id="button" value="reload"></h:commandButton>
+
+                </h:panelGrid>
+
+            </h:form>
+
+        </h:body>
+
+    </html>
+
+</f:view>
+
+
diff --git a/test/servlet30/systest/src/main/webapp/view.xml/templateClientUsingXmlAndXhtml.view.xml b/test/servlet30/systest/src/main/webapp/view.xml/templateClientUsingXmlAndXhtml.view.xml
new file mode 100644
index 0000000..93d908f
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/view.xml/templateClientUsingXmlAndXhtml.view.xml
@@ -0,0 +1,96 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<f:view 
+    xmlns:h="http://java.sun.com/jsf/html"
+    xmlns:f="http://java.sun.com/jsf/core"
+    xmlns:ui="http://java.sun.com/jsf/facelets">
+
+    <f:metadata>
+      <f:viewParam name="param1" required="true" />
+      <f:viewParam name="param2" required="true" />
+    </f:metadata>
+
+    <html xmlns="http://www.w3.org/1999/xhtml">
+
+        <h:head><title>Template client</title></h:head>
+
+        <h:body>
+
+            <!--
+            Make sure template clients declared in xml can use templates declared
+            both in xhtml and xml.
+            -->
+
+            <ui:composition template="xhtmlTemplate.xhtml">
+
+                <ui:define name="body">
+                
+                    <h:form prependId="false" id="form">
+
+                        <h:panelGrid id="grid" column="2">
+
+                            <h:outputText id="text" value="hello"></h:outputText>
+
+                            <h:commandButton id="button"
+                                             value="reload">
+
+      <f:param name="param1" value="#{param['param1']}" />
+      <f:param name="param2" value="#{param['param2']}" />
+                            </h:commandButton>
+
+                        </h:panelGrid>
+
+                    </h:form>
+                    
+                </ui:define>
+                
+            </ui:composition>
+
+        </h:body>
+
+    </html>
+
+</f:view>
+
+
diff --git a/test/servlet30/systest/src/main/webapp/view.xml/xhtmlTemplate.xhtml b/test/servlet30/systest/src/main/webapp/view.xml/xhtmlTemplate.xhtml
new file mode 100644
index 0000000..7d91d8b
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/view.xml/xhtmlTemplate.xhtml
@@ -0,0 +1,84 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xml:lang="en" lang="en">
+<head>
+    <title>Templating and XML views</title>
+</head>
+<body>
+
+    <ui:decorate template="header.view.xml">
+        <ui:define name="header">
+            <p>This is the header text declared in xhtmlTemplate.xhtml.
+            The preceding columns are declared in header.view.xml.</p>
+        </ui:define>
+    </ui:decorate>
+
+    <ui:insert name="body">
+
+        <p>default text</p>
+
+    </ui:insert>
+
+    <ui:decorate template="footer.xhtml">
+
+        <ui:define name="footer">
+            <td><ui:include src="includedInFooter.view.xml">
+                <ui:param name="param1" value="#{param['param1']}" />
+            </ui:include></td>
+            <ui:include src="includedInFooter.xhtml">
+                <ui:param name="param2" value="#{param['param2']}" />
+            </ui:include>
+        </ui:define>
+        
+    </ui:decorate>
+
+
+</body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/viewLocale.jsp b/test/servlet30/systest/src/main/webapp/viewLocale.jsp
new file mode 100644
index 0000000..5199b05
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/viewLocale.jsp
@@ -0,0 +1,75 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+  <head>
+    <title>Test view tag with Locale</title>
+  </head>
+
+  <body>
+    <h1>Test view tag with Locale</h1>
+
+    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
+    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+
+    <f:view locale="fr">  
+      <h:form id="form">
+
+	<hr>
+	<p>Press a button, see some text.</p>
+        <h:inputText id="field" required="true" /> 
+
+        <h:commandButton id="button" value="submit" />
+
+        <h:message for="field" />
+      </h:form>
+    </f:view>
+
+
+
+    <hr>
+    <address><a href="mailto:Ed Burns <ed.burns at sun.com>"></a></address>
+  </body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/viewParameters/events.xhtml b/test/servlet30/systest/src/main/webapp/viewParameters/events.xhtml
new file mode 100644
index 0000000..f5b3487
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/viewParameters/events.xhtml
@@ -0,0 +1,44 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<f:event xmlns:f="http://java.sun.com/jsf/core" type="preRenderView"
+listener="#{newsReader.loadStory}"/>
diff --git a/test/servlet30/systest/src/main/webapp/viewParameters/page01.xhtml b/test/servlet30/systest/src/main/webapp/viewParameters/page01.xhtml
new file mode 100644
index 0000000..cdd0e2b
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/viewParameters/page01.xhtml
@@ -0,0 +1,77 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:h="http://java.sun.com/jsf/html">
+<body>
+<ui:composition template="/viewParameters/template.xhtml">
+    <ui:define name="metadata">
+        <f:metadata>
+            <f:viewParam name="id"/>
+        </f:metadata>
+    </ui:define>
+    <ui:define name="content">
+        <h:messages style="color: red; list-style: none; border: 0 solid red; border-left-width: 2px; padding: 0 5px;"/>
+        <h1>The big news stories of the day</h1>
+        <ul>
+            <ui:repeat var="_story" value="#{newsReader.stories}">
+                <li>
+                    <h:link outcome="page02">
+                        <f:param name="id" value="#{_story.id}"/>
+                        #{_story.headline}
+                    </h:link>
+                </li>
+            </ui:repeat>
+        </ul>
+        <h:panelGroup rendered="#{not empty id}">
+            <p style="color: green;">You just looked at story ##{id}.</p>
+        </h:panelGroup>
+    </ui:define>
+</ui:composition>
+
+</body>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/viewParameters/page02.xhtml b/test/servlet30/systest/src/main/webapp/viewParameters/page02.xhtml
new file mode 100644
index 0000000..1e6907d
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/viewParameters/page02.xhtml
@@ -0,0 +1,109 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:c="http://java.sun.com/jsp/jstl/core">
+<body>
+<ui:composition template="/viewParameters/template.xhtml">
+    <ui:define name="metadata">
+        <f:metadata>
+            <f:viewParam id="id" name="id" value="#{newsReader.selectedStoryId}"
+                     required="true"
+                     requiredMessage="You did not specify a headline. (The id parameter is missing)"
+                     converterMessage="Invalid headline. (The id parameter is not a number)"
+                     validatorMessage="Invalid headline. (The id parameter is not a positive number)">
+                <f:validateLongRange minimum="1"/>
+            </f:viewParam>
+            <ui:include src="events.xhtml"/>
+        </f:metadata>
+    </ui:define>
+    <ui:define name="content">
+        <h:messages style="color: red; list-style: none; border: 0 solid red; border-left-width: 2px; padding: 0 5px;"/>
+        <h1>#{newsReader.selectedStory.headline}</h1>
+
+        <p>#{newsReader.selectedStory.content}</p>
+        <h:form prependId="false">
+            <p>
+                <h:commandButton id="refresh" value="Refresh"/>
+                #{' '}
+                <h:commandButton id="refreshClearParam"
+                                 value="Refresh (clear param)">
+                    <f:param name="id" value="#{null}"/>
+                </h:commandButton>
+                #{' '}
+                <h:commandButton id="refreshWithRedirectParams"
+                                 action="/viewParameters/page02.xhtml?faces-redirect=true&includeViewParams=true"
+                                 value="Refresh (Redirect After POST w/ params)"/>
+                #{' '}
+                <h:commandButton id="refreshWithRedirect"
+                                 action="/viewParameters/page02.xhtml?faces-redirect=true"
+                                 value="Refresh (Redirect After POST w/o params)"/>
+            </p>
+            <p>
+                <h:commandButton id="home"
+                                 action="/viewParameters/page01.xhtml?faces-redirect=true&from=story"
+                                 value="Home"/>
+                #{' '}
+                <h:commandButton id="homeRememberSelection"
+                                 action="/viewParameters/page01.xhtml?faces-redirect=true&includeViewParams=true&from=story"
+                                 value="Home (Keep selection)"/>
+                #{' '}
+                <h:commandButton id="homeRememberSelectionNavCase"
+                                 action="homeWithParams"
+                                 value="Home (Keep selection nav case)"/>
+
+                <h:commandButton id="story2RememberSelectionNavCase"
+                                 action="story2WithParams"
+                                 value="Story2 (Keep selection nav case)"/>
+
+            </p>
+        </h:form>
+    </ui:define>
+</ui:composition>
+
+</body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/viewParameters/page03.xhtml b/test/servlet30/systest/src/main/webapp/viewParameters/page03.xhtml
new file mode 100644
index 0000000..1a39ddb
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/viewParameters/page03.xhtml
@@ -0,0 +1,67 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:h="http://java.sun.com/jsf/html">
+<body>
+<ui:composition template="/viewParameters/template.xhtml">
+<ui:define name="metadata">
+    <f:metadata>
+        <f:viewParam id="bar" name="bar" value="foo"/>
+        <f:viewParam id="id" name="id" value="#{flash.id}"/>
+    </f:metadata>
+</ui:define>
+<ui:define name="content">
+    <h1>Story 2</h1>
+    <h:messages style="color: red; list-style: none; border: 0 solid red; border-left-width: 2px; padding: 0 5px;"/>
+    <p>bar is:
+        <h:outputText value="#{bar}"/>
+    </p>
+</ui:define>
+</ui:composition>
+</body>
+
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/viewParameters/template.xhtml b/test/servlet30/systest/src/main/webapp/viewParameters/template.xhtml
new file mode 100644
index 0000000..ef48fc9
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/viewParameters/template.xhtml
@@ -0,0 +1,59 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xml:lang="en" lang="en">
+
+<body>
+<f:view>
+    <ui:insert name="metadata"/>
+    <div id="container">
+        <ui:insert name="content"/>
+    </div>
+</f:view>
+</body>
+</html>
diff --git a/test/servlet30/systest/src/main/webapp/viewTagListeners.jsp b/test/servlet30/systest/src/main/webapp/viewTagListeners.jsp
new file mode 100644
index 0000000..e25f253
--- /dev/null
+++ b/test/servlet30/systest/src/main/webapp/viewTagListeners.jsp
@@ -0,0 +1,88 @@
+<%--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--%>
+
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
+<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %>
+
+<f:view beforePhase="#{phaseListener.beforePhase}"
+        afterPhase="#{phaseListener.afterPhase}">
+  <html>
+    <head>
+      <title>listener methods on f:view</title>
+    </head>
+    <body>
+      <h:form id="form">
+
+        <h2>About this test</h2>
+
+	  <p>The first time this page is visited, we'll only see output
+	  on the beforePhaseEvent below.  That's because the page will
+	  be done rendering by the time the afterPhase listener gets
+	  called, and thus the outputText's below will already have
+	  rendered their content to the page by the time the phase
+	  listener is called.</p>
+
+          <p>When the page is re-displayed any number of times by
+          pressing the redisplay button below, we'll see the apply,
+          process, update, invoke, and render phases on the
+          beforePhaseEvent, and we'll see apply, process, update, and
+          invoke on the afterPhaseEvent.  The former is correct because
+          it's impossible to see a restore-view event by using a view
+          scoped listener.  The latter is correct because we see
+          everything but the after render event because the outputText's
+          below render their output before the after event is sent.</p>
+
+       <h2>Output from the PhaseListener</h2>
+
+        <p>beforePhaseEvent: <h:outputText value="#{beforePhaseEvent}"/>.</p>
+
+        <p>afterPhaseEvent: <h:outputText value="#{afterPhaseEvent}"/>.</p>
+
+        <p><h:commandButton id="redisplay" value="redisplay" /></p>
+        
+      </h:form>
+     
+    </body>
+  </html>
+</f:view>
+
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/ajax/AjaxAllKeywordITCase.java b/test/servlet30/systest/src/test/java/com/sun/faces/ajax/AjaxAllKeywordITCase.java
new file mode 100644
index 0000000..3848096
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/ajax/AjaxAllKeywordITCase.java
@@ -0,0 +1,127 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.ajax;
+
+import com.sun.faces.htmlunit.HtmlUnitFacesITCase;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+public class AjaxAllKeywordITCase extends HtmlUnitFacesITCase {
+
+    public AjaxAllKeywordITCase(String name) {
+        super(name);
+    }
+
+    /*
+     * Set up instance variables required by this test case.
+     */
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+
+
+    /*
+     * Return the tests included in this test suite.
+     */
+    public static Test suite() {
+        return (new TestSuite(AjaxAllKeywordITCase.class));
+    }
+
+
+    /*
+     * Tear down instance variables required by this test case.
+     */
+    public void tearDown() {
+        super.tearDown();
+    }
+
+
+    public void testAjaxAllKeyword1() throws Exception {
+
+        getPage("/faces/ajax/ajaxAllKeyword1.xhtml");
+        System.out.println("Start ajax All Keyword test");
+
+        // First we'll check the first page was output correctly
+        checkTrue("form1:out1","testtext");
+
+        // Submit the ajax request
+        HtmlSubmitInput button1 = (HtmlSubmitInput) lastpage.getHtmlElementById("form1:allKeyword");
+        HtmlPage lastpage = (HtmlPage) button1.click();
+
+        // Check that the ajax request succeeds - if the page is rewritten, this will be the same
+        checkTrue("form1:out1","testtext");
+
+    }
+    public void testAjaxAllKeyword2() throws Exception {
+
+        getPage("/faces/ajax/ajaxAllKeyword2.xhtml");
+        System.out.println("Start ajax All Keyword test");
+
+        // First we'll check the first page was output correctly
+        checkTrue("form1:out1","testtext");
+
+        // Submit the ajax request
+        HtmlSubmitInput button1 = (HtmlSubmitInput) lastpage.getHtmlElementById("form1:allKeyword");
+        HtmlPage lastpage = (HtmlPage) button1.click();
+
+        // Check that the ajax request succeeds - if the page is rewritten, this will be the same
+        checkTrue("form1:out1","testtext");
+
+    }
+    public void testAjaxAllKeyword3() throws Exception {
+
+        getPage("/faces/ajax/ajaxAllKeyword3.xhtml");
+        System.out.println("Start ajax All Keyword test");
+
+        // First we'll check the first page was output correctly
+        checkTrue("form1:out1","testtext");
+
+        // Submit the ajax request
+        HtmlSubmitInput button1 = (HtmlSubmitInput) lastpage.getHtmlElementById("form1:allKeyword");
+        HtmlPage lastpage = (HtmlPage) button1.click();
+
+        // Check that the ajax request succeeds - if the page is rewritten, this will be the same
+        checkTrue("form1:out1","testtext");
+
+    }
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/ajax/AjaxAttrsITCase.java b/test/servlet30/systest/src/test/java/com/sun/faces/ajax/AjaxAttrsITCase.java
new file mode 100644
index 0000000..f91de6c
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/ajax/AjaxAttrsITCase.java
@@ -0,0 +1,134 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.ajax;
+
+import com.sun.faces.htmlunit.HtmlUnitFacesITCase;
+import com.gargoylesoftware.htmlunit.CollectingAlertHandler;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+import java.util.ArrayList;
+import java.util.List;
+
+
+public class AjaxAttrsITCase extends HtmlUnitFacesITCase {
+
+
+     public AjaxAttrsITCase(String name) {
+        super(name);
+    }
+
+    /*
+     * Set up instance variables required by this test case.
+     */
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+
+
+    /*
+     * Return the tests included in this test suite.
+     */
+    public static Test suite() {
+        return (new TestSuite(AjaxAttrsITCase.class));
+    }
+
+
+    /*
+     * Tear down instance variables required by this test case.
+     */
+    public void tearDown() {
+        super.tearDown();
+    }
+
+
+    // ------------------------------------------------------------ Test Methods
+
+
+    public void testAjaxAttrs() throws Exception {
+
+        List<String> collectedAlerts = new ArrayList<String>(1);
+        client.setAlertHandler(new CollectingAlertHandler(collectedAlerts));
+
+        HtmlPage page = getPage("/faces/ajax/ajaxAttrs.xhtml");
+
+        HtmlSubmitInput button = (HtmlSubmitInput)
+              getInputContainingGivenId(page, "form:attr");
+        assertNotNull(button);
+
+        String value = button.getValueAttribute();
+
+        assertTrue("expected Dummy but got "+value, "Dummy".equals(value));
+
+        page = button.click();
+
+        button = (HtmlSubmitInput)
+              getInputContainingGivenId(page, "form:attr");
+
+        value = button.getValueAttribute();
+
+        assertTrue("expected New Value but got "+value, "New Value".equals(value));
+
+        String onclick = button.getOnClickAttribute();
+        assertTrue(onclick.matches("(?s).*'delay':'none'.*"));
+        
+        button = (HtmlSubmitInput)
+              getInputContainingGivenId(page, "form:attrImplicitDelay");
+
+        value = button.getValueAttribute();
+        
+        assertTrue("expected Dummy Implicit Delay but got "+value, "Dummy Implicit Delay".equals(value));
+        onclick = button.getOnClickAttribute();
+        assertTrue(!onclick.matches("(?s).*'delay':'none'.*"));
+        
+        button = (HtmlSubmitInput)
+              getInputContainingGivenId(page, "form:attrDelay");
+
+        value = button.getValueAttribute();
+        
+        assertTrue("expected Dummy Delay but got "+value, "Dummy Delay".equals(value));
+        onclick = button.getOnClickAttribute();
+        assertTrue(onclick.matches("(?s).*'delay':'200'.*"));
+        
+    }
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/ajax/AjaxBadXMLITCase.java b/test/servlet30/systest/src/test/java/com/sun/faces/ajax/AjaxBadXMLITCase.java
new file mode 100644
index 0000000..2d554ec
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/ajax/AjaxBadXMLITCase.java
@@ -0,0 +1,91 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.ajax;
+
+import com.gargoylesoftware.htmlunit.html.*;
+import com.sun.faces.htmlunit.HtmlUnitFacesITCase;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+public class AjaxBadXMLITCase extends HtmlUnitFacesITCase {
+
+    public AjaxBadXMLITCase(String name) {
+        super(name);
+    }
+
+    /*
+     * Set up instance variables required by this test case.
+     */
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+
+
+    /*
+     * Return the tests included in this test suite.
+     */
+    public static Test suite() {
+        return (new TestSuite(AjaxBadXMLITCase.class));
+    }
+
+
+    /*
+     * Tear down instance variables required by this test case.
+     */
+    public void tearDown() {
+        super.tearDown();
+    }
+
+
+    // Test basic ajax functionality
+    public void testAjaxBadXML() throws Exception {
+        getPage("/faces/ajax/ajaxInvalidXML.xhtml");
+
+
+        // Submit the ajax request
+        HtmlSubmitInput button1 = (HtmlSubmitInput) lastpage.getHtmlElementById("form1:bad");
+        lastpage = (HtmlPage) button1.click();
+
+        // Check that the ajax request succeeds
+        checkTrue("h2","Bread & Butter");
+    }
+
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/ajax/AjaxEchoITCase.java b/test/servlet30/systest/src/test/java/com/sun/faces/ajax/AjaxEchoITCase.java
new file mode 100644
index 0000000..a184e01
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/ajax/AjaxEchoITCase.java
@@ -0,0 +1,299 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.ajax;
+
+import com.gargoylesoftware.htmlunit.html.*;
+import com.sun.faces.htmlunit.HtmlUnitFacesITCase;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+public class AjaxEchoITCase  extends HtmlUnitFacesITCase {
+
+    public AjaxEchoITCase(String name) {
+        super(name);
+    }
+
+    /*
+     * Set up instance variables required by this test case.
+     */
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+
+
+    /*
+     * Return the tests included in this test suite.
+     */
+    public static Test suite() {
+        return (new TestSuite(AjaxEchoITCase.class));
+    }
+
+
+    /*
+     * Tear down instance variables required by this test case.
+     */
+    public void tearDown() {
+        super.tearDown();
+    }
+
+
+    // Test basic ajax functionality
+    public void testAjaxEcho() throws Exception {
+        getPage("/faces/ajax/ajaxEcho.xhtml");
+
+        // First we'll check the first page was output correctly
+        checkTrue("form1:out1","");
+        checkTrue("form1:in1","");
+
+        HtmlTextInput in1 = (HtmlTextInput) lastpage.getHtmlElementById("form1:in1");
+
+        in1.type("hello");
+
+        // Submit the ajax request
+        HtmlSubmitInput button1 = (HtmlSubmitInput) lastpage.getHtmlElementById("form1:button1");
+        lastpage = (HtmlPage) button1.click();
+
+        // Check that the ajax request succeeds
+        checkTrue("form1:out1","hello");
+    }
+
+    // Test using a valid string as the request identifier, instead of an element
+    public void testAjaxEchoWithStringId() throws Exception {
+        getPage("/faces/ajax/ajaxEcho.xhtml");
+
+        // First we'll check the first page was output correctly
+        checkTrue("form1:out1","");
+        checkTrue("form1:in1","");
+
+        HtmlTextInput in1 = (HtmlTextInput) lastpage.getHtmlElementById("form1:in1");
+
+        in1.type("hello");
+
+        // Submit the ajax request
+        HtmlSubmitInput button2 = (HtmlSubmitInput) lastpage.getHtmlElementById("form1:button2");
+        lastpage = (HtmlPage) button2.click();
+
+        // Check that the ajax request succeeds
+        checkTrue("form1:out1","hello");
+    }
+
+    // Test basic ajax functionality
+    public void testAjaxEchoLT() throws Exception {
+        getPage("/faces/ajax/ajaxEcho.xhtml");
+
+        // First we'll check the first page was output correctly
+        checkTrue("form1:out1","");
+        checkTrue("form1:in1","");
+
+        HtmlTextInput in1 = (HtmlTextInput) lastpage.getHtmlElementById("form1:in1");
+
+        in1.type("<");
+
+        // Submit the ajax request
+        HtmlSubmitInput button1 = (HtmlSubmitInput) lastpage.getHtmlElementById("form1:button1");
+        lastpage = (HtmlPage) button1.click();
+
+        // Check that the ajax request succeeds
+        checkTrue("form1:out1","<");
+    }
+
+
+    /*
+     * Regression test for bug #939
+     */
+//    public void testCdataEscape1() throws Exception {
+//        getPage("/faces/ajax/ajaxEcho.xhtml");
+//
+//       // First we'll check the first page was output correctly
+//      checkTrue("form1:out1","");
+//        checkTrue("form1:in1","");
+//
+//        HtmlTextInput in1 = (HtmlTextInput) lastpage.getHtmlElementById("form1:in1");
+//
+//        in1.type("]]>");
+//
+//        // Submit the ajax request
+//        HtmlSubmitInput button1 = (HtmlSubmitInput) lastpage.getHtmlElementById("form1:button1");
+//        lastpage = (HtmlPage) button1.click();
+//
+//        // Check that the ajax request succeeds
+//        checkTrue("form1:out1","]]>");
+//    }
+//    public void testCdataEscape2() throws Exception {
+//        getPage("/faces/ajax/ajaxEcho.xhtml");
+//
+//        // First we'll check the first page was output correctly
+//        checkTrue("form1:out1","");
+//        checkTrue("form1:in1","");
+//
+//        HtmlTextInput in1 = (HtmlTextInput) lastpage.getHtmlElementById("form1:in1");
+//
+//        in1.type("<!");
+//
+//        // Submit the ajax request
+//        HtmlSubmitInput button1 = (HtmlSubmitInput) lastpage.getHtmlElementById("form1:button1");
+//        lastpage = (HtmlPage) button1.click();
+//
+//        // Check that the ajax request succeeds
+//        checkTrue("form1:out1","<!");
+//    }
+//    public void testCdataEscape3() throws Exception {
+//        getPage("/faces/ajax/ajaxEcho.xhtml");
+//
+//        // First we'll check the first page was output correctly
+//        checkTrue("form1:out1","");
+//        checkTrue("form1:in1","");
+//
+//        HtmlTextInput in1 = (HtmlTextInput) lastpage.getHtmlElementById("form1:in1");
+//
+//        in1.type("]");
+//
+//        // Submit the ajax request
+//        HtmlSubmitInput button1 = (HtmlSubmitInput) lastpage.getHtmlElementById("form1:button1");
+//        lastpage = (HtmlPage) button1.click();
+//
+//        // Check that the ajax request succeeds
+//        checkTrue("form1:out1","]");
+//    }
+//    public void testCdataEscape4() throws Exception {
+//        getPage("/faces/ajax/ajaxEcho.xhtml");
+//
+//        // First we'll check the first page was output correctly
+//        checkTrue("form1:out1","");
+//        checkTrue("form1:in1","");
+//
+//        HtmlTextInput in1 = (HtmlTextInput) lastpage.getHtmlElementById("form1:in1");
+//
+//        in1.type("]");
+//
+//        // Submit the ajax request
+//        HtmlSubmitInput button1 = (HtmlSubmitInput) lastpage.getHtmlElementById("form1:button1");
+//        lastpage = (HtmlPage) button1.click();
+//
+//        // Check that the ajax request succeeds
+//        checkTrue("form1:out1","]");
+//    }
+//    public void testCdataEscape5() throws Exception {
+//        getPage("/faces/ajax/ajaxEcho.xhtml");
+//
+//        // First we'll check the first page was output correctly
+//        checkTrue("form1:out1","");
+//        checkTrue("form1:in1","");
+//
+//        HtmlTextInput in1 = (HtmlTextInput) lastpage.getHtmlElementById("form1:in1");
+//
+//        in1.type("<![CDATA[ ]]>");
+//
+//        // Submit the ajax request
+//        HtmlSubmitInput button1 = (HtmlSubmitInput) lastpage.getHtmlElementById("form1:button1");
+//        lastpage = (HtmlPage) button1.click();
+//
+//        // Check that the ajax request succeeds
+//        checkTrue("form1:out1","<![CDATA[ ]]>");
+//    }
+//
+//    // Test for bug #1284
+//    public void testCdataEscape6() throws Exception {
+//        getPage("/faces/ajax/ajaxEcho.xhtml");
+//
+//        // First we'll check the first page was output correctly
+//        checkTrue("form1:out1","");
+//        checkTrue("form1:in1","");
+//
+//        HtmlTextInput in1 = (HtmlTextInput) lastpage.getHtmlElementById("form1:in1");
+//
+//        in1.type("[");
+//
+//        // Submit the ajax request
+//        HtmlSubmitInput button1 = (HtmlSubmitInput) lastpage.getHtmlElementById("form1:button1");
+//        lastpage = (HtmlPage) button1.click();
+//
+//        // Check that the ajax request succeeds
+//        checkTrue("form1:out1","[");
+//    }
+//    // Test for bug #1284
+//    public void testCdataEscape7() throws Exception {
+//        getPage("/faces/ajax/ajaxEcho.xhtml");
+//
+//        // First we'll check the first page was output correctly
+//        checkTrue("form1:out1","");
+//        checkTrue("form1:in1","");
+//
+//        HtmlTextInput in1 = (HtmlTextInput) lastpage.getHtmlElementById("form1:in1");
+//
+//        in1.type("var a=[");
+//
+//        // Submit the ajax request
+//        HtmlSubmitInput button1 = (HtmlSubmitInput) lastpage.getHtmlElementById("form1:button1");
+//        lastpage = (HtmlPage) button1.click();
+//
+//        // Check that the ajax request succeeds
+//        checkTrue("form1:out1","var a=[");
+//    }
+//
+//    public void testProjectStage() throws Exception {
+//        getPage("/faces/ajax/ajaxProjectStage.xhtml");
+//
+//        // First we'll check the first page was output correctly
+//        checkTrue("stage","Development");
+//    }
+
+    public void testTextArea() throws Exception {
+        getPage("/faces/ajax/ajaxEchoArea.xhtml");
+
+        // First we'll check the first page was output correctly
+        checkTrue("form1:out1","");
+        checkTrue("form1:in1","");
+
+        HtmlTextArea in1 = (HtmlTextArea) lastpage.getHtmlElementById("form1:in1");
+
+        in1.type("test value");
+
+        // Submit the ajax request
+        HtmlButtonInput button1 = (HtmlButtonInput) lastpage.getHtmlElementById("form1:button1");
+        lastpage = (HtmlPage) button1.click();
+
+        // Check that the ajax request succeeds
+        checkTrue("form1:out1","test value");
+    }
+
+
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/ajax/AjaxErrorITCase.java b/test/servlet30/systest/src/test/java/com/sun/faces/ajax/AjaxErrorITCase.java
new file mode 100644
index 0000000..547fb24
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/ajax/AjaxErrorITCase.java
@@ -0,0 +1,145 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.ajax;
+
+import com.sun.faces.htmlunit.HtmlUnitFacesITCase;
+import com.gargoylesoftware.htmlunit.CollectingAlertHandler;
+import com.gargoylesoftware.htmlunit.html.HtmlElement;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class AjaxErrorITCase extends HtmlUnitFacesITCase {
+
+    public AjaxErrorITCase(String name) {
+        super(name);
+    }
+
+    /*
+     * Set up instance variables required by this test case.
+     */
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+
+
+    /*
+     * Return the tests included in this test suite.
+     */
+    public static Test suite() {
+        return (new TestSuite(AjaxErrorITCase.class));
+    }
+
+
+    /*
+     * Tear down instance variables required by this test case.
+     */
+    public void tearDown() {
+        super.tearDown();
+    }
+
+    // ------------------------------------------------------------ Test Methods
+    public void testAjaxError() throws Exception {
+        List<String> collectedAlerts = new ArrayList<String>(1);
+        client.setAlertHandler(new CollectingAlertHandler(collectedAlerts));
+
+        HtmlPage page = getPage("/faces/ajax/ajaxError2.xhtml");
+
+        if (page.asXml().contains("Project Stage: Development")) {
+            HtmlSubmitInput button = (HtmlSubmitInput) getInputContainingGivenId(page, "form:error");
+            assertNotNull(button);
+
+            button.click();
+
+            assertEquals(1, collectedAlerts.size());
+            assertEquals("serverError: errorName Error Message", collectedAlerts.get(0));
+        }
+    }
+
+    public void testAjaxServerError() throws Exception {
+        List<String> collectedAlerts = new ArrayList<String>(1);
+        client.setAlertHandler(new CollectingAlertHandler(collectedAlerts));
+
+        HtmlPage page = getPage("/faces/ajax/ajaxError.xhtml");
+
+        if (page.asXml().contains("Project Stage: Development")) {
+            HtmlSubmitInput button = (HtmlSubmitInput) getInputContainingGivenId(page, "form:eval");
+            assertNotNull(button);
+
+            button.click();
+
+            assertEquals(1, collectedAlerts.size());
+            String serverError = "serverError:\\sclass javax.faces.el.MethodNotFoundException /ajax/ajaxError.xhtml.*action=.*evalBean.error.*: Method not fou.*";
+            String collectedAlertsStr = collectedAlerts.get(0).substring(0, 130);
+            assertTrue(collectedAlertsStr.matches(serverError));
+
+            page = getPage("/faces/ajax/ajaxError3.xhtml");
+            button = (HtmlSubmitInput) getInputContainingGivenId(page, "form:error");
+            assertNotNull(button);
+
+            HtmlPage page1 = button.click();
+            HtmlElement element = page1.getElementById("statusArea");
+            assertNotNull(element);
+            String statusText = element.getAttribute("value");
+            assertTrue(statusText.equals("Name: form:error Error: serverError "));
+        }
+    }
+
+    public void testAjaxMalformedXMLError() throws Exception {
+        List<String> collectedAlerts = new ArrayList<String>(1);
+        client.setAlertHandler(new CollectingAlertHandler(collectedAlerts));
+
+        HtmlPage page = getPage("/faces/ajax/ajaxMalformedXML.xhtml");
+
+        if (page.asXml().contains("Project Stage: Development")) {
+            HtmlSubmitInput button = (HtmlSubmitInput) getInputContainingGivenId(page, "form:error");
+            assertNotNull(button);
+
+            button.click();
+
+            assertEquals(1, collectedAlerts.size());
+            assertEquals("malformedXML: During update: doesntExist not found", collectedAlerts.get(0));
+        }
+    }
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/ajax/AjaxEvalITCase.java b/test/servlet30/systest/src/test/java/com/sun/faces/ajax/AjaxEvalITCase.java
new file mode 100644
index 0000000..75f9213
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/ajax/AjaxEvalITCase.java
@@ -0,0 +1,105 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.ajax;
+
+import com.sun.faces.htmlunit.HtmlUnitFacesITCase;
+import com.gargoylesoftware.htmlunit.CollectingAlertHandler;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+import java.util.ArrayList;
+import java.util.List;
+
+
+public class AjaxEvalITCase extends HtmlUnitFacesITCase {
+
+
+     public AjaxEvalITCase(String name) {
+        super(name);
+    }
+
+    /*
+     * Set up instance variables required by this test case.
+     */
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+
+
+    /*
+     * Return the tests included in this test suite.
+     */
+    public static Test suite() {
+        return (new TestSuite(AjaxEvalITCase.class));
+    }
+
+
+    /*
+     * Tear down instance variables required by this test case.
+     */
+    public void tearDown() {
+        super.tearDown();
+    }
+
+
+    // ------------------------------------------------------------ Test Methods
+
+
+    public void testAjaxEval() throws Exception {
+
+        List<String> collectedAlerts = new ArrayList<String>(1);
+        client.setAlertHandler(new CollectingAlertHandler(collectedAlerts));
+
+        HtmlPage page = getPage("/faces/ajax/ajaxEval.xhtml");
+
+        HtmlSubmitInput button = (HtmlSubmitInput)
+              getInputContainingGivenId(page, "form:eval");
+        assertNotNull(button);
+
+        button.click();
+
+        assertEquals(1, collectedAlerts.size());
+        assertEquals("test", collectedAlerts.get(0));
+
+    }
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/ajax/AjaxIncludedTextITCase.java b/test/servlet30/systest/src/test/java/com/sun/faces/ajax/AjaxIncludedTextITCase.java
new file mode 100644
index 0000000..803d598
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/ajax/AjaxIncludedTextITCase.java
@@ -0,0 +1,100 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.ajax;
+
+import com.sun.faces.htmlunit.HtmlUnitFacesITCase;
+import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+
+public class AjaxIncludedTextITCase  extends HtmlUnitFacesITCase {
+
+    public AjaxIncludedTextITCase(String name) {
+        super(name);
+    }
+
+    /*
+     * Set up instance variables required by this test case.
+     */
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+
+
+    /*
+     * Return the tests included in this test suite.
+     */
+    public static Test suite() {
+        return (new TestSuite(AjaxIncludedTextITCase.class));
+    }
+
+
+    /*
+     * Tear down instance variables required by this test case.
+     */
+    public void tearDown() {
+        super.tearDown();
+    }
+
+
+    public void testAjaxIncludedText() throws Exception {
+        getPage("/faces/ajax/ajaxIncludedText.xhtml");
+        System.out.println("Start ajax included text test");
+
+        // First we'll check the first page was output correctly
+        checkTrue("finalSpan1","Text should stay");
+        checkTrue("finalSpan2","Text should stay");
+
+        // Submit the ajax request
+        HtmlSubmitInput button1 = (HtmlSubmitInput) lastpage.getHtmlElementById("form1:refresh");
+        lastpage = (HtmlPage) button1.click();
+        HtmlSubmitInput button2 = (HtmlSubmitInput) lastpage.getHtmlElementById("form2:refresh");
+        lastpage = (HtmlPage) button2.click();
+
+        // Check that the ajax request succeeds
+        checkTrue("finalSpan1","Text should stay");
+        checkTrue("finalSpan2","Text should stay");
+    }
+}
+
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/ajax/AjaxInsertDeleteITCase.java b/test/servlet30/systest/src/test/java/com/sun/faces/ajax/AjaxInsertDeleteITCase.java
new file mode 100644
index 0000000..ced4c35
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/ajax/AjaxInsertDeleteITCase.java
@@ -0,0 +1,173 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.ajax;
+
+import com.sun.faces.htmlunit.HtmlUnitFacesITCase;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import com.gargoylesoftware.htmlunit.html.HtmlHorizontalRule;
+import com.gargoylesoftware.htmlunit.html.HtmlHeading2;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+public class AjaxInsertDeleteITCase extends HtmlUnitFacesITCase {
+
+    public AjaxInsertDeleteITCase(String name) {
+        super(name);
+    }
+
+    /*
+     * Set up instance variables required by this test case.
+     */
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+
+
+    /*
+     * Return the tests included in this test suite.
+     */
+    public static Test suite() {
+        return (new TestSuite(AjaxInsertDeleteITCase.class));
+    }
+
+
+    /*
+     * Tear down instance variables required by this test case.
+     */
+    public void tearDown() {
+        super.tearDown();
+    }
+
+
+    // ------------------------------------------------------------ Test Methods
+
+
+    public void testInsertDelete() throws Exception {
+
+        HtmlPage page = getPage("/faces/ajax/ajaxInsertDelete.xhtml");
+
+        assertNull(getBeforeHeading(page));
+        assertNull(getAfterHeading(page));
+
+        HtmlSubmitInput beforeButton = getBeforeButton(page);
+        assertNotNull(beforeButton);
+        page = beforeButton.click();
+
+        HtmlHeading2 beforeHeading = getBeforeHeading(page);
+        assertNotNull(beforeHeading);
+        assertTrue(beforeHeading.getNextSibling() instanceof HtmlHorizontalRule);
+        assertNotNull(page.getElementById("trbefore"));
+
+        HtmlSubmitInput afterButton = getAfterButton(page);
+        assertNotNull(afterButton);
+        page = afterButton.click();
+
+        HtmlHeading2 afterHeading = getAfterHeading(page);
+        assertNotNull(afterHeading);
+        assertTrue(afterHeading.getPreviousSibling() instanceof HtmlHorizontalRule);
+        assertNotNull(page.getElementById("trafter"));
+
+        HtmlSubmitInput removeBefore = getRemoveBeforeButton(page);
+        assertNotNull(removeBefore);
+        page = removeBefore.click();
+
+        assertNull(getBeforeHeading(page));
+        assertNotNull(getAfterHeading(page));
+
+        assertNull(page.getElementById("trbefore"));
+
+        HtmlSubmitInput removeAfter = getRemoveAfterButton(page);
+        assertNotNull(removeAfter);
+        page = removeAfter.click();
+
+        assertNull(page.getElementById("trafter"));
+
+        assertNull(getBeforeHeading(page));
+        assertNull(getAfterHeading(page));
+
+    }
+
+
+    // --------------------------------------------------------  Private Methods
+
+
+    private HtmlSubmitInput getBeforeButton(HtmlPage page) {
+
+        return (HtmlSubmitInput) getInputContainingGivenId(page, "form1:before");
+
+    }
+
+
+    private HtmlSubmitInput getAfterButton(HtmlPage page) {
+
+        return (HtmlSubmitInput) getInputContainingGivenId(page, "form1:after");
+
+    }
+
+
+    private HtmlSubmitInput getRemoveBeforeButton(HtmlPage page) {
+
+        return (HtmlSubmitInput) getInputContainingGivenId(page, "form1:removeBefore");
+
+    }
+
+
+    private HtmlSubmitInput getRemoveAfterButton(HtmlPage page) {
+
+        return (HtmlSubmitInput) getInputContainingGivenId(page, "form1:removeAfter");
+
+    }
+
+
+    private HtmlHeading2 getBeforeHeading(HtmlPage page) {
+
+        return (HtmlHeading2) page.getElementById("h2before");
+
+    }
+
+
+    private HtmlHeading2 getAfterHeading(HtmlPage page) {
+
+        return (HtmlHeading2) page.getElementById("h2after");
+
+    }
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/ajax/AjaxJsfJsITCase.java b/test/servlet30/systest/src/test/java/com/sun/faces/ajax/AjaxJsfJsITCase.java
new file mode 100644
index 0000000..c0fa94d
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/ajax/AjaxJsfJsITCase.java
@@ -0,0 +1,88 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.ajax;
+
+import com.sun.faces.htmlunit.HtmlUnitFacesITCase;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import com.gargoylesoftware.htmlunit.html.*;
+
+public class AjaxJsfJsITCase extends HtmlUnitFacesITCase {
+
+    public AjaxJsfJsITCase(String name) {
+        super(name);
+    }
+
+    /**
+     * Set up instance variables required by this test case.
+     */
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+
+
+    /*
+     * Return the tests included in this test suite.
+     */
+    public static Test suite() {
+        return (new TestSuite(AjaxJsfJsITCase.class));
+    }
+
+
+    /**
+     * Tear down instance variables required by this test case.
+     */
+    public void tearDown() {
+        super.tearDown();
+    }
+
+
+    public void testAjaxJsfJs() throws Exception {
+        getPage("/faces/ajax/jsfJS.xhtml");
+        System.out.println("Start ajax jsf js test");
+        HtmlSubmitInput button = (HtmlSubmitInput) lastpage.getHtmlElementById("button");
+        button.click();
+        assertTrue(-1 != lastpage.asText().indexOf("child nodes 0"));
+        assertTrue(-1 != lastpage.asText().indexOf("child nodes 1"));
+
+    }
+
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/ajax/AjaxMessageITCase.java b/test/servlet30/systest/src/test/java/com/sun/faces/ajax/AjaxMessageITCase.java
new file mode 100644
index 0000000..ebec5c5
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/ajax/AjaxMessageITCase.java
@@ -0,0 +1,177 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.ajax;
+
+import com.sun.faces.htmlunit.HtmlUnitFacesITCase;
+import com.sun.faces.render.MessageRenderITCase;
+import com.gargoylesoftware.htmlunit.html.*;
+import com.gargoylesoftware.htmlunit.javascript.host.Node;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+
+public class AjaxMessageITCase extends HtmlUnitFacesITCase {
+
+    public AjaxMessageITCase(String name) {
+        super(name);
+    }
+
+    /**
+     * Set up instance variables required by this test case.
+     */
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+
+
+    /**
+     * Return the tests included in this test suite.
+     */
+    public static Test suite() {
+        return (new TestSuite(AjaxMessageITCase.class));
+    }
+
+
+    /**
+     * Tear down instance variables required by this test case.
+     */
+    public void tearDown() {
+        super.tearDown();
+    }
+
+
+    public void testCommandButtonButton() throws Exception {
+        getPage("/faces/ajax/ajaxMessage.xhtml");
+
+
+        // Check that ids were rendered
+        try {
+            lastpage.getHtmlElementById("testform1:msgs");
+        } catch (Exception e) {
+            fail("testform1:msgs not rendered");
+        }
+        try {
+            lastpage.getHtmlElementById("testform1a:msgs");
+        } catch (Exception e) {
+            fail("testform1a:msgs not rendered");
+        }
+        try {
+            lastpage.getHtmlElementById("testform2:msg");
+        } catch (Exception e) {
+            fail("testform2:msg not rendered");
+        }
+
+        // check that other ids weren't
+
+        try {
+            lastpage.getHtmlElementById("testform3:msgs");
+            fail("testform3:msgs rendered - not correct");
+        } catch (Exception e) {
+            //  Success
+        }
+        try {
+            lastpage.getHtmlElementById("testform3a:msgs");
+            fail("testform3:msgs rendered - not correct");
+        } catch (Exception e) {
+            //  Success
+        }
+        try {
+            lastpage.getHtmlElementById("testform4:msg");
+            fail("testform4:msg rendered - not correct");
+        } catch (Exception e) {
+            //  Success
+        }
+
+        // Check initial state
+        checkTrue("testform1:in1","0");
+        checkTrue("testform1a:in1","0");
+        checkTrue("testform2:in1","0");
+        checkTrue("testform3:in1","0");
+        checkTrue("testform3a:in1","0");
+        checkTrue("testform4:in1","0");
+
+
+        HtmlTextInput in1 = (HtmlTextInput) lastpage.getHtmlElementById("testform1:in1");
+
+        in1.type("1");
+
+        // Submit the ajax request
+        HtmlSubmitInput button2 = (HtmlSubmitInput) lastpage.getHtmlElementById("testform1:button2");
+        lastpage = (HtmlPage) button2.click();
+
+        // Check that the ajax request succeeds
+        checkTrue("testform1:in1","1");
+
+        // And that others weren't effected
+        checkTrue("testform1a:in1","0");
+        checkTrue("testform2:in1","0");
+        checkTrue("testform3:in1","0");
+        checkTrue("testform3a:in1","0");
+        checkTrue("testform4:in1","0");
+
+
+        in1 = (HtmlTextInput) lastpage.getHtmlElementById("testform1:in1");
+
+        in1.type("a");
+
+        // Submit the ajax request
+        button2 = (HtmlSubmitInput) lastpage.getHtmlElementById("testform1:button2");
+        lastpage = (HtmlPage) button2.click();
+
+        HtmlUnorderedList ul = (HtmlUnorderedList) lastpage.getHtmlElementById("testform1:msgs");
+        DomNode node = ul.getFirstChild();
+        System.out.println(node.asText());
+        assertTrue("not equal to: testform1:in1: '1a' must be a number consisting of one or more digits. ",
+                node.asText().trim().equals("testform1:in1: '1a' must be a number consisting of one or more digits."));
+
+
+        checkTrue("testform1a:in1","0");
+        checkTrue("testform2:in1","0");
+        checkTrue("testform3:in1","0");
+        checkTrue("testform3a:in1","0");
+        checkTrue("testform4:in1","0");
+
+        // RELEASE_PENDING
+        // FINISH WRITING TESTS FOR OTHER 5 TEST CASES
+
+        
+    }
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/ajax/AjaxMultiformITCase.java b/test/servlet30/systest/src/test/java/com/sun/faces/ajax/AjaxMultiformITCase.java
new file mode 100644
index 0000000..ec86f19
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/ajax/AjaxMultiformITCase.java
@@ -0,0 +1,107 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.ajax;
+
+import com.sun.faces.htmlunit.HtmlUnitFacesITCase;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import com.gargoylesoftware.htmlunit.html.*;
+
+public class AjaxMultiformITCase extends HtmlUnitFacesITCase {
+
+    public AjaxMultiformITCase(String name) {
+        super(name);
+    }
+
+    /**
+     * Set up instance variables required by this test case.
+     */
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+
+
+    /*
+     * Return the tests included in this test suite.
+     */
+    public static Test suite() {
+        return (new TestSuite(AjaxMultiformITCase.class));
+    }
+
+
+    /**
+     * Tear down instance variables required by this test case.
+     */
+    public void tearDown() {
+        super.tearDown();
+    }
+
+
+    public void testAjaxMultiform() throws Exception {
+        getPage("/faces/ajax/ajaxMultiform.xhtml");
+        System.out.println("Start ajax multiform test");
+        // First we'll check the first page was output correctly
+        checkTrue("countForm1:out1","0");
+        checkTrue("countForm2:out1","1");
+        checkTrue("countForm3:out1","2");
+        checkTrue("out2","3");
+
+        // Submit the ajax request
+        HtmlSubmitInput button1 = (HtmlSubmitInput) lastpage.getHtmlElementById("countForm1:button1");
+        lastpage = (HtmlPage) button1.click();
+
+        // Check that the ajax request succeeds
+        checkTrue("countForm1:out1","4");
+
+        // Check that the request did NOT update the rest of the page.
+        checkTrue("out2","3");
+
+        // Submit the ajax request
+        button1 = (HtmlSubmitInput) lastpage.getHtmlElementById("countForm2:button1");
+        lastpage = (HtmlPage) button1.click();
+
+        // Check that the ajax request succeeds
+        checkTrue("countForm2:out1","5");
+
+        // Check that the request did NOT update the rest of the page.
+        checkTrue("out2","3");
+    }
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/ajax/AjaxRedirectITCase.java b/test/servlet30/systest/src/test/java/com/sun/faces/ajax/AjaxRedirectITCase.java
new file mode 100644
index 0000000..3d20441
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/ajax/AjaxRedirectITCase.java
@@ -0,0 +1,102 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.ajax;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import com.sun.faces.htmlunit.HtmlUnitFacesITCase;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import com.gargoylesoftware.htmlunit.html.HtmlSpan;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class AjaxRedirectITCase extends HtmlUnitFacesITCase {
+
+    public AjaxRedirectITCase(String name) {
+        super(name);
+    }
+
+    /*
+     * Set up instance variables required by this test case.
+     */
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+
+
+    /*
+     * Return the tests included in this test suite.
+     */
+    public static Test suite() {
+        return (new TestSuite(AjaxRedirectITCase.class));
+    }
+
+
+    /*
+     * Tear down instance variables required by this test case.
+     */
+    public void tearDown() {
+        super.tearDown();
+    }
+
+
+    // ------------------------------------------------------------ Test Methods
+
+
+    public void testAjaxRedirect() throws Exception {
+
+        HtmlPage page = getPage("/faces/ajax/ajaxRedirect.xhtml");
+        HtmlSubmitInput button = (HtmlSubmitInput)
+              getInputContainingGivenId(page, "form:redirect");
+        assertNotNull(button);
+
+        page = button.click();
+
+        List<HtmlSpan> spans = new ArrayList<HtmlSpan>(1);
+        getAllElementsOfGivenClass(page, spans, HtmlSpan.class);
+        assertEquals(1, spans.size());
+        HtmlSpan span = spans.get(0);
+        assertEquals("Redirect Target", span.asText());
+        
+    }
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/ajax/AjaxRequestHeaderITCase.java b/test/servlet30/systest/src/test/java/com/sun/faces/ajax/AjaxRequestHeaderITCase.java
new file mode 100644
index 0000000..2c6f0c8
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/ajax/AjaxRequestHeaderITCase.java
@@ -0,0 +1,89 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.ajax;
+
+import com.gargoylesoftware.htmlunit.html.*;
+import com.sun.faces.htmlunit.HtmlUnitFacesITCase;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+public class AjaxRequestHeaderITCase  extends HtmlUnitFacesITCase {
+
+    public AjaxRequestHeaderITCase(String name) {
+        super(name);
+    }
+
+    /*
+     * Set up instance variables required by this test case.
+     */
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+
+
+    /*
+     * Return the tests included in this test suite.
+     */
+    public static Test suite() {
+        return (new TestSuite(AjaxRequestHeaderITCase.class));
+    }
+
+
+    /*
+     * Tear down instance variables required by this test case.
+     */
+    public void tearDown() {
+        super.tearDown();
+    }
+
+
+    // Tests request header information sent by an Ajax request 
+    public void testAjaxRequestHeader() throws Exception {
+        getPage("/faces/ajax/ajaxRequestHeader.xhtml");
+
+        // Submit the ajax request
+        HtmlSubmitInput button1 = (HtmlSubmitInput) lastpage.getHtmlElementById("form:req");
+        lastpage = (HtmlPage) button1.click();
+
+        // Check that the ajax request succeeds
+        checkTrue("form:out","application/x-www-form-urlencoded;charset=UTF-8");
+    }
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/ajax/AjaxRequestITCase.java b/test/servlet30/systest/src/test/java/com/sun/faces/ajax/AjaxRequestITCase.java
new file mode 100644
index 0000000..0c064f8
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/ajax/AjaxRequestITCase.java
@@ -0,0 +1,505 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.ajax;
+
+import com.sun.faces.htmlunit.HtmlUnitFacesITCase;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import com.gargoylesoftware.htmlunit.html.HtmlElement;
+import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
+
+public class AjaxRequestITCase extends HtmlUnitFacesITCase {
+
+    public AjaxRequestITCase(String name) {
+        super(name);
+    }
+
+    /**
+     * Set up instance variables required by this test case.
+     */
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+
+
+    /**
+     * Return the tests included in this test suite.
+     */
+    public static Test suite() {
+        return (new TestSuite(AjaxRequestITCase.class));
+    }
+
+
+    /**
+     * Tear down instance variables required by this test case.
+     */
+    public void tearDown() {
+        super.tearDown();
+    }
+
+
+    public void testAjaxCount() throws Exception {
+        getPage("/faces/ajax/ajaxCount.xhtml");
+        System.out.println("Start ajax count test");
+
+        // First we'll check the first page was output correctly
+        assertTrue(check("countForm:out1","0"));
+        assertTrue(check("out2","1"));
+
+        // Submit the ajax request
+        HtmlSubmitInput button1 = (HtmlSubmitInput) lastpage.getHtmlElementById("countForm:button1");
+        HtmlPage lastpage = (HtmlPage) button1.click();
+
+        // Check that the ajax request succeeds
+        assertTrue(check("countForm:out1","2"));
+
+        // Check that the request did NOT update the rest of the page.
+        assertTrue(check("out2","1"));
+    }
+
+    public void testAjaxRequestDefaultsButton() throws Exception {
+        System.out.println("Starting Request Defaults Button Test");
+        getPage("/faces/ajax/ajaxRequestDefaultsButton.xhtml");
+
+        String out1 = "form1:out1";
+        String out2 = "form1:out2";
+        String out3 = "out3";
+        String reload = "form1:reload";
+        String reset1 = "form1:reset1";
+        String reset2 = "form1:reset2";
+        String reset3 = "form1:reset3";
+        String reset4 = "form1:reset4";
+
+        // First, we'll test to make sure the initial values come out right
+        assertTrue(check(out1,"0"));
+        assertTrue(check(out2,"1"));
+        assertTrue(check(out3,"2"));
+
+        // Reload the page
+        HtmlSubmitInput button = (HtmlSubmitInput) lastpage.getHtmlElementById(reload);
+        lastpage = (HtmlPage) button.click();
+
+        // Check that the page updated correctly
+        assertTrue(check(out1,"3"));
+        assertTrue(check(out2,"4"));
+        assertTrue(check(out3,"5"));
+
+        // Now, make the Ajax call to first reset button
+        button = (HtmlSubmitInput) lastpage.getHtmlElementById(reset1);
+        lastpage = (HtmlPage) button.click();
+
+        // Check that the ajax request succeeds
+        assertTrue(check(out1,"0"));
+        assertTrue(check(out2,"4"));
+        assertTrue(check(out3,"5"));
+
+        // Reload the page
+        button = (HtmlSubmitInput) lastpage.getHtmlElementById(reload);
+        lastpage = (HtmlPage) button.click();
+
+        // Check that the page updated correctly
+        assertTrue(check(out1,"1"));
+        assertTrue(check(out2,"2"));
+        assertTrue(check(out3,"3"));
+
+        // Now, make the Ajax call to second reset button
+        button = (HtmlSubmitInput) lastpage.getHtmlElementById(reset2);
+        lastpage = (HtmlPage) button.click();
+
+        // Check that the page updated correctly
+        assertTrue(check(out1,"0"));
+        assertTrue(check(out2,"2"));
+        assertTrue(check(out3,"3"));
+
+        // Reload the page
+        button = (HtmlSubmitInput) lastpage.getHtmlElementById(reload);
+        lastpage = (HtmlPage) button.click();
+
+        // Check that the page updated correctly
+        assertTrue(check(out1,"1"));
+        assertTrue(check(out2,"2"));
+        assertTrue(check(out3,"3"));
+
+        // Now, make the Ajax call to third reset button
+        button = (HtmlSubmitInput) lastpage.getHtmlElementById(reset3);
+        lastpage = (HtmlPage) button.click();
+
+        // Check the page did *not* update
+        assertTrue(check(out1,"1"));
+        assertTrue(check(out2,"2"));
+        assertTrue(check(out3,"3"));
+
+        // Now, Reload the page, to check that reset3 actually executed
+        button = (HtmlSubmitInput) lastpage.getHtmlElementById(reload);
+        lastpage = (HtmlPage) button.click();
+        assertTrue(check(out1,"0"));
+        assertTrue(check(out2,"1"));
+        assertTrue(check(out3,"2"));
+
+        // Reload the page
+        button = (HtmlSubmitInput) lastpage.getHtmlElementById(reload);
+        lastpage = (HtmlPage) button.click();
+
+        // Check that the page updated correctly
+        assertTrue(check(out1,"3"));
+        assertTrue(check(out2,"4"));
+        assertTrue(check(out3,"5"));
+
+        // Now, make the Ajax call to fourth reset button
+        button = (HtmlSubmitInput) lastpage.getHtmlElementById(reset4);
+        lastpage = (HtmlPage) button.click();
+
+        // Check the page did *not* update
+        assertTrue(check(out1,"3"));
+        assertTrue(check(out2,"4"));
+        assertTrue(check(out3,"5"));
+
+        // Now, Reload the page, to check that reset4 actually executed
+        button = (HtmlSubmitInput) lastpage.getHtmlElementById(reload);
+        lastpage = (HtmlPage) button.click();
+        assertTrue(check(out1,"0"));
+        assertTrue(check(out2,"1"));
+        assertTrue(check(out3,"2"));
+    }
+
+    public void testAjaxRequestDefaultsButtonNoPrepend() throws Exception {
+        System.out.println("Starting Request Defaults Button No Prepend Test");
+        getPage("/faces/ajax/ajaxRequestDefaultsButtonNoPrepend.xhtml");
+
+        String out1 = "out1";
+        String out2 = "out2";
+        String out3 = "out3";
+        String reload = "reload";
+        String reset1 = "reset1";
+        String reset2 = "reset2";
+        String reset3 = "reset3";
+        String reset4 = "reset4";
+
+
+        // First, we'll test to make sure the initial values come out right
+        assertTrue(check(out1,"0"));
+        assertTrue(check(out2,"1"));
+        assertTrue(check(out3,"2"));
+
+        // Reload the page
+        HtmlSubmitInput button = (HtmlSubmitInput) lastpage.getHtmlElementById(reload);
+        lastpage = (HtmlPage) button.click();
+
+        // Check that the page updated correctly
+        assertTrue(check(out1,"3"));
+        assertTrue(check(out2,"4"));
+        assertTrue(check(out3,"5"));
+
+        // Now, make the Ajax call to first reset button
+        button = (HtmlSubmitInput) lastpage.getHtmlElementById(reset1);
+        lastpage = (HtmlPage) button.click();
+
+        // Check that the ajax request succeeds
+        assertTrue(check(out1,"0"));
+        assertTrue(check(out2,"4"));
+        assertTrue(check(out3,"5"));
+
+        // Reload the page
+        button = (HtmlSubmitInput) lastpage.getHtmlElementById(reload);
+        lastpage = (HtmlPage) button.click();
+
+        // Check that the page updated correctly
+        assertTrue(check(out1,"1"));
+        assertTrue(check(out2,"2"));
+        assertTrue(check(out3,"3"));
+
+        // Now, make the Ajax call to second reset button
+        button = (HtmlSubmitInput) lastpage.getHtmlElementById(reset2);
+        lastpage = (HtmlPage) button.click();
+
+        // Check that the page updated correctly
+        assertTrue(check(out1,"0"));
+        assertTrue(check(out2,"2"));
+        assertTrue(check(out3,"3"));
+
+        // Reload the page
+        button = (HtmlSubmitInput) lastpage.getHtmlElementById(reload);
+        lastpage = (HtmlPage) button.click();
+
+        // Check that the page updated correctly
+        assertTrue(check(out1,"1"));
+        assertTrue(check(out2,"2"));
+        assertTrue(check(out3,"3"));
+
+        // Now, make the Ajax call to third reset button
+        button = (HtmlSubmitInput) lastpage.getHtmlElementById(reset3);
+        lastpage = (HtmlPage) button.click();
+
+        // Check the page did *not* update
+        assertTrue(check(out1,"1"));
+        assertTrue(check(out2,"2"));
+        assertTrue(check(out3,"3"));
+
+        // Now, Reload the page, to check that reset3 actually executed
+        button = (HtmlSubmitInput) lastpage.getHtmlElementById(reload);
+        lastpage = (HtmlPage) button.click();
+        assertTrue(check(out1,"0"));
+        assertTrue(check(out2,"1"));
+        assertTrue(check(out3,"2"));
+
+        // Reload the page
+        button = (HtmlSubmitInput) lastpage.getHtmlElementById(reload);
+        lastpage = (HtmlPage) button.click();
+
+        // Check that the page updated correctly
+        assertTrue(check(out1,"3"));
+        assertTrue(check(out2,"4"));
+        assertTrue(check(out3,"5"));
+
+        // Now, make the Ajax call to fourth reset button
+        button = (HtmlSubmitInput) lastpage.getHtmlElementById(reset4);
+        lastpage = (HtmlPage) button.click();
+
+        // Check the page did *not* update
+        assertTrue(check(out1,"3"));
+        assertTrue(check(out2,"4"));
+        assertTrue(check(out3,"5"));
+
+        // Now, Reload the page, to check that reset4 actually executed
+        button = (HtmlSubmitInput) lastpage.getHtmlElementById(reload);
+        lastpage = (HtmlPage) button.click();
+        assertTrue(check(out1,"0"));
+        assertTrue(check(out2,"1"));
+        assertTrue(check(out3,"2"));
+    }
+
+    public void testAjaxRequestDefaultsEdit() throws Exception {
+        System.out.println("Starting Request Defaults Edit Test");
+        getPage("/faces/ajax/ajaxRequestDefaultsEdit.xhtml");
+
+        String out1 = "form1:out1";
+        String out2 = "form1:out2";
+        String out3 = "out3";
+        String echo1Out = "form1:echo1Out";
+        String echo2Out = "form1:echo2Out";
+        String echo3Out = "form1:echo3Out";
+        String echo4Out = "form1:echo4Out";
+        String edit1 = "form1:edit1";
+        String edit2 = "form1:edit2";
+        String edit3 = "form1:edit3";
+        String edit4 = "form1:edit4";
+        String refresh = "form1:refresh";
+
+        // First, we'll test to make sure the initial values come out right
+        assertTrue(check(out1,"echo"));
+        assertTrue(check(out2,"echo"));
+        assertTrue(check(out3,"echo"));
+        assertTrue(check(echo1Out,""));
+        assertTrue(check(echo2Out,""));
+        assertTrue(check(echo3Out,""));
+        assertTrue(check(echo4Out,""));
+
+        // Next, enter data into first field
+        HtmlTextInput echo1 = ((HtmlTextInput)lastpage.getHtmlElementById(edit1));
+        echo1.focus();
+        echo1.type("test1");
+        echo1.blur();
+
+        // Refresh the panel to check the listener fired
+        HtmlSubmitInput button = lastpage.getHtmlElementById(refresh);
+        button.click();
+        assertTrue(check(echo1Out,"test1"));
+        assertTrue(check(out1,"test1"));
+        assertTrue(check(out2,"echo"));
+        assertTrue(check(out3,"echo"));
+
+        // Next, enter data into second field
+        HtmlTextInput echo2 = ((HtmlTextInput)lastpage.getHtmlElementById(edit2));
+        echo2.focus();
+        echo2.type("test2");
+        echo2.blur();
+
+        // Refresh the panel to check the listener fired
+        button = lastpage.getHtmlElementById(refresh);
+        button.click();
+        assertTrue(check(echo2Out,"test2"));
+        assertTrue(check(out1,"test2"));
+        assertTrue(check(out2,"echo"));
+        assertTrue(check(out3,"echo"));
+
+        // Next, enter data into third field
+        HtmlTextInput echo3 = ((HtmlTextInput)lastpage.getHtmlElementById(edit3));
+        echo3.focus();
+        echo3.type("test3");
+        echo3.blur();
+
+        // Refresh the panel to check the listener fired
+        button = lastpage.getHtmlElementById(refresh);
+        button.click();
+        assertTrue(check(echo3Out,"test3"));
+        assertTrue(check(out1,"test3"));
+        assertTrue(check(out2,"echo"));
+        assertTrue(check(out3,"echo"));
+
+        // Next, enter data into the fourth field
+        HtmlTextInput echo4 = ((HtmlTextInput)lastpage.getHtmlElementById(edit4));
+        echo4.focus();
+        echo4.type("test4");
+        echo4.blur();
+
+        // Refresh the panel to check the listener fired
+        button = lastpage.getHtmlElementById(refresh);
+        button.click();
+        assertTrue(check(echo4Out,"test4"));
+        assertTrue(check(out1,"test4"));
+        assertTrue(check(out2,"echo"));
+        assertTrue(check(out3,"echo"));
+
+    }
+
+    public void testAjaxRequestDefaultsEditNoPrepend() throws Exception {
+        System.out.println("Starting Request Defaults Edit No Prepend Test");
+        getPage("/faces/ajax/ajaxRequestDefaultsEditNoPrepend.xhtml");
+
+        String out1 = "out1";
+        String out2 = "out2";
+        String out3 = "out3";
+        String echo1Out = "echo1Out";
+        String echo2Out = "echo2Out";
+        String echo3Out = "echo3Out";
+        String echo4Out = "echo4Out";
+        String edit1 = "edit1";
+        String edit2 = "edit2";
+        String edit3 = "edit3";
+        String edit4 = "edit4";
+        String refresh = "refresh";
+
+        // First, we'll test to make sure the initial values come out right
+        assertTrue(check(out1,"echo"));
+        assertTrue(check(out2,"echo"));
+        assertTrue(check(out3,"echo"));
+        assertTrue(check(echo1Out,""));
+        assertTrue(check(echo2Out,""));
+        assertTrue(check(echo3Out,""));
+        assertTrue(check(echo4Out,""));
+
+        // Next, enter data into first field
+        HtmlTextInput echo1 = ((HtmlTextInput)lastpage.getHtmlElementById(edit1));
+        echo1.focus();
+        echo1.type("test1");
+        echo1.blur();
+
+        // Refresh the panel to check the listener fired
+        HtmlSubmitInput button = lastpage.getHtmlElementById(refresh);
+        button.click();
+        assertTrue(check(echo1Out,"test1"));
+        assertTrue(check(out1,"test1"));
+        assertTrue(check(out2,"echo"));
+        assertTrue(check(out3,"echo"));
+
+        // Next, enter data into second field
+        HtmlTextInput echo2 = ((HtmlTextInput)lastpage.getHtmlElementById(edit2));
+        echo2.focus();
+        echo2.type("test2");
+        echo2.blur();
+
+        // Refresh the panel to check the listener fired
+        button = lastpage.getHtmlElementById(refresh);
+        button.click();
+        assertTrue(check(echo2Out,"test2"));
+        assertTrue(check(out1,"test2"));
+        assertTrue(check(out2,"echo"));
+        assertTrue(check(out3,"echo"));
+
+        // Next, enter data into third field
+        HtmlTextInput echo3 = ((HtmlTextInput)lastpage.getHtmlElementById(edit3));
+        echo3.focus();
+        echo3.type("test3");
+        echo3.blur();
+
+        // Refresh the panel to check the listener fired
+        button = lastpage.getHtmlElementById(refresh);
+        button.click();
+        assertTrue(check(echo3Out,"test3"));
+        assertTrue(check(out1,"test3"));
+        assertTrue(check(out2,"echo"));
+        assertTrue(check(out3,"echo"));
+
+        // Next, enter data into the fourth field
+        HtmlTextInput echo4 = ((HtmlTextInput)lastpage.getHtmlElementById(edit4));
+        echo4.focus();
+        echo4.type("test4");
+        echo4.blur();
+
+        // Refresh the panel to check the listener fired
+        button = lastpage.getHtmlElementById(refresh);
+        button.click();
+        assertTrue(check(echo4Out,"test4"));
+        assertTrue(check(out1,"test4"));
+        assertTrue(check(out2,"echo"));
+        assertTrue(check(out3,"echo"));
+    }
+
+    public void testAjaxEvent() throws Exception {
+        getPage("/faces/ajax/ajaxEvent.xhtml");
+        System.out.println("Start ajax event test");
+
+        // First we'll check the first page was output correctly
+        assertTrue(check("countForm:out1","0"));
+        assertTrue(check("out2","1"));
+
+        // Submit the ajax request
+        HtmlSubmitInput button1 = (HtmlSubmitInput) lastpage.getHtmlElementById("countForm:button1");
+        HtmlPage lastpage = (HtmlPage) button1.click();
+
+        // Check that the ajax request succeeds
+        assertTrue(check("countForm:out1","2"));
+
+        // Check that the request did NOT update the rest of the page.
+        assertTrue(check("out2","1"));
+
+        // Check that events were written to the page.
+        String statusArea = "Name: countForm:button1 Event: begin ";
+        statusArea = statusArea + "Name: countForm:button1 Event: complete " ;
+        statusArea = statusArea + "Name: countForm:button1 Event: success " ;
+        //System.out.println(statusArea);
+        //System.out.println(getText("statusArea"));
+        assertTrue(check("statusArea",statusArea));
+    }
+
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/ajax/AjaxRequestMultiRenderITCase.java b/test/servlet30/systest/src/test/java/com/sun/faces/ajax/AjaxRequestMultiRenderITCase.java
new file mode 100644
index 0000000..fd29015
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/ajax/AjaxRequestMultiRenderITCase.java
@@ -0,0 +1,115 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.ajax;
+
+import com.sun.faces.htmlunit.HtmlUnitFacesITCase;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import com.gargoylesoftware.htmlunit.html.HtmlElement;
+import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
+
+public class AjaxRequestMultiRenderITCase extends HtmlUnitFacesITCase {
+
+    public AjaxRequestMultiRenderITCase(String name) {
+        super(name);
+    }
+
+    /**
+     * Set up instance variables required by this test case.
+     */
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+
+
+    /**
+     * Return the tests included in this test suite.
+     */
+    public static Test suite() {
+        return (new TestSuite(AjaxRequestMultiRenderITCase.class));
+    }
+
+
+    /**
+     * Tear down instance variables required by this test case.
+     */
+    public void tearDown() {
+        super.tearDown();
+    }
+
+
+    public void testAjaxMultiRender() throws Exception {
+        getPage("/faces/ajax/ajaxRequestMultiRender.xhtml");
+        System.out.println("Start ajax multi render test");
+
+        // First we'll check the first page was output correctly
+        assertTrue(check("out1","0"));
+        assertTrue(check("out2","0"));
+        assertTrue(check("out3","0"));
+        assertTrue(check("out4","0"));
+
+        // Submit the ajax request
+        HtmlSubmitInput button1 = (HtmlSubmitInput) lastpage.getHtmlElementById("button1");
+        lastpage = (HtmlPage) button1.click();
+
+        // Check that the request succeeds
+        assertTrue(check("out1","1"));
+        assertTrue(check("out2","1"));
+        assertTrue(check("out3","1"));
+
+        // Check that the request did NOT update the rest of the page.
+        assertTrue(check("out4","0"));
+
+        // Submit the reset
+        HtmlSubmitInput reset = (HtmlSubmitInput) lastpage.getHtmlElementById("reset");
+        lastpage = (HtmlPage) reset.click();
+
+        // Check that reset succeeds
+        assertTrue(check("out1","0"));
+        assertTrue(check("out2","0"));
+        assertTrue(check("out3","0"));
+        assertTrue(check("out4","0"));
+
+    }
+
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/ajax/AjaxRequestScriptITCase.java b/test/servlet30/systest/src/test/java/com/sun/faces/ajax/AjaxRequestScriptITCase.java
new file mode 100644
index 0000000..3f8f05b
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/ajax/AjaxRequestScriptITCase.java
@@ -0,0 +1,100 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.ajax;
+
+import com.sun.faces.htmlunit.HtmlUnitFacesITCase;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import com.gargoylesoftware.htmlunit.html.HtmlElement;
+import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
+
+public class AjaxRequestScriptITCase extends HtmlUnitFacesITCase {
+
+    public AjaxRequestScriptITCase(String name) {
+        super(name);
+    }
+
+    /**
+     * Set up instance variables required by this test case.
+     */
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+
+
+    /**
+     * Return the tests included in this test suite.
+     */
+    public static Test suite() {
+        return (new TestSuite(AjaxRequestScriptITCase.class));
+    }
+
+
+    /**
+     * Tear down instance variables required by this test case.
+     */
+    public void tearDown() {
+        super.tearDown();
+    }
+
+
+    public void testAjaxAndScript() throws Exception {
+        getPage("/faces/ajax/ajaxIncludedScript.xhtml");
+        System.out.println("Start ajax script test");
+
+        // First we'll check the first page was output correctly
+        assertTrue(check("countForm:out1","0"));
+        assertTrue(check("out2","1"));
+
+        // Submit the ajax request
+        HtmlSubmitInput button1 = (HtmlSubmitInput) lastpage.getHtmlElementById("countForm:button1");
+        HtmlPage lastpage = (HtmlPage) button1.click();
+
+        // Check that the ajax request succeeds
+        assertTrue(check("countForm:out1","2"));
+
+        // Check that the request did NOT update the rest of the page.
+        assertTrue(check("out2","1"));
+    }
+
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/ajax/AjaxRerenderOtherFormITCase.java b/test/servlet30/systest/src/test/java/com/sun/faces/ajax/AjaxRerenderOtherFormITCase.java
new file mode 100644
index 0000000..91dce70
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/ajax/AjaxRerenderOtherFormITCase.java
@@ -0,0 +1,94 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.ajax;
+
+import com.sun.faces.htmlunit.HtmlUnitFacesITCase;
+import com.gargoylesoftware.htmlunit.Page;
+import com.gargoylesoftware.htmlunit.html.HtmlInput;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+public class AjaxRerenderOtherFormITCase  extends HtmlUnitFacesITCase {
+
+    public AjaxRerenderOtherFormITCase(String name) {
+        super(name);
+    }
+
+    /*
+     * Set up instance variables required by this test case.
+     */
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+
+
+    /*
+     * Return the tests included in this test suite.
+     */
+    public static Test suite() {
+        return (new TestSuite(AjaxRerenderOtherFormITCase.class));
+    }
+
+
+    /*
+     * Tear down instance variables required by this test case.
+     */
+    public void tearDown() {
+        super.tearDown();
+    }
+
+
+    public void testRerenderingOtherForm() throws Exception {
+        HtmlPage htmlPage = getPage("/faces/ajax/ajaxRerenderOtherForm.xhtml");
+        
+        HtmlInput ajaxButton = getInputContainingGivenId(htmlPage, "button2");
+        HtmlPage rerenderedPage = ajaxButton.click();
+        
+        HtmlInput nonAjaxButton = getInputContainingGivenId(rerenderedPage, "button1");
+        HtmlPage finalPage = nonAjaxButton.click();
+        assertTrue(-1 != finalPage.asText().indexOf("It was a postback!!!"));
+        
+    }
+}
+
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/ajax/AjaxSelectITCase.java b/test/servlet30/systest/src/test/java/com/sun/faces/ajax/AjaxSelectITCase.java
new file mode 100644
index 0000000..570a14d
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/ajax/AjaxSelectITCase.java
@@ -0,0 +1,171 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.ajax;
+
+import com.gargoylesoftware.htmlunit.html.ClickableElement;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSelect;
+import com.sun.faces.htmlunit.HtmlUnitFacesITCase;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+
+public class AjaxSelectITCase extends HtmlUnitFacesITCase {
+
+    public AjaxSelectITCase(String name) {
+        super(name);
+    }
+
+    /**
+     * Set up instance variables required by this test case.
+     */
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+
+
+    /**
+     * Return the tests included in this test suite.
+     */
+    public static Test suite() {
+        return (new TestSuite(AjaxTagWrappingITCase.class));
+    }
+
+
+    /**
+     * Tear down instance variables required by this test case.
+     */
+    public void tearDown() {
+        super.tearDown();
+    }
+
+
+    /*
+       Test each component to see that it behaves correctly when used with an Ajax tag
+     */
+    public void testAjaxSelect() throws Exception {
+        getPage("/faces/ajax/ajaxSelect.xhtml");
+
+        checkTrue("out", "Pending");
+
+        ClickableElement click = lastpage.getHtmlElementById("form:s1rad:0");
+
+        lastpage = click.click();
+
+        checkTrue("out", "radio-1");
+
+        HtmlSelect select = lastpage.getHtmlElementById("form:s1menu");
+
+        lastpage = (HtmlPage) select.setSelectedAttribute("2",true);
+
+        checkTrue("out", "menu-2");
+
+        select = lastpage.getHtmlElementById("form:s1list");
+
+        lastpage = (HtmlPage) select.setSelectedAttribute("2",true);
+
+        checkTrue("out", "list-2");
+
+        select = lastpage.getHtmlElementById("form:smlist");
+
+        lastpage = (HtmlPage) select.setSelectedAttribute("2",true);
+
+        checkTrue("out", "mlist-2");
+
+        click = lastpage.getHtmlElementById("form:smcheck:0");
+
+        lastpage = click.click();
+
+        checkTrue("out", "mcheck-1");
+
+        click = lastpage.getHtmlElementById("form:bool");
+
+        lastpage = click.click();
+
+        checkTrue("out", "PASSED");
+
+
+        // Now, reload everything and do it again.
+        // This tests for bug 1339
+        click = lastpage.getHtmlElementById("form:button");
+
+        click.click();
+
+        checkTrue("out", "Pending");
+
+        click = lastpage.getHtmlElementById("form:s1rad:0");
+
+        lastpage = click.click();
+
+        checkTrue("out", "radio-1");
+
+        select = lastpage.getHtmlElementById("form:s1menu");
+
+        lastpage = (HtmlPage) select.setSelectedAttribute("2",true);
+
+        checkTrue("out", "menu-2");
+
+        select = lastpage.getHtmlElementById("form:s1list");
+
+        lastpage = (HtmlPage) select.setSelectedAttribute("2",true);
+
+        checkTrue("out", "list-2");
+
+        select = lastpage.getHtmlElementById("form:smlist");
+
+        lastpage = (HtmlPage) select.setSelectedAttribute("2",true);
+
+        checkTrue("out", "mlist-2");
+
+        click = lastpage.getHtmlElementById("form:smcheck:0");
+
+        lastpage = click.click();
+
+        checkTrue("out", "mcheck-1");
+
+        click = lastpage.getHtmlElementById("form:bool");
+
+        lastpage = click.click();
+
+        checkTrue("out", "PASSED");
+
+    }
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/ajax/AjaxTableITCase.java b/test/servlet30/systest/src/test/java/com/sun/faces/ajax/AjaxTableITCase.java
new file mode 100644
index 0000000..f06de68
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/ajax/AjaxTableITCase.java
@@ -0,0 +1,122 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.ajax;
+
+import com.sun.faces.htmlunit.HtmlUnitFacesITCase;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import com.gargoylesoftware.htmlunit.html.*;
+
+public class AjaxTableITCase extends HtmlUnitFacesITCase {
+
+    public AjaxTableITCase(String name) {
+        super(name);
+    }
+
+    /**
+     * Set up instance variables required by this test case.
+     */
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+
+
+    /*
+     * Return the tests included in this test suite.
+     */
+    public static Test suite() {
+        return (new TestSuite(AjaxTableITCase.class));
+    }
+
+
+    /*
+     * Tear down instance variables required by this test case.
+     */
+    public void tearDown() {
+        super.tearDown();
+    }
+
+
+    /*
+       Test each component to see that it behaves correctly when used with an Ajax tag
+     */
+    public void testAjaxTable() throws Exception {
+        getPage("/faces/ajax/ajaxTable.xhtml");
+        System.out.println("Start ajax table test");
+
+        assertTrue(check("table:2:inCity","Boston"));
+
+        // Check on the text field
+        HtmlTextInput intext = ((HtmlTextInput)lastpage.getHtmlElementById("table:2:inCity"));
+        intext.setValueAttribute("");
+        intext.focus();
+        intext.type("test");
+        intext.blur();
+
+        checkTrue("table:2:inCity","test");
+        System.out.println("Text Checked");
+
+        // Check on the checkbox
+
+        checkTrue("table:3:cheesepref","Eww");
+
+        HtmlCheckBoxInput checked = ((HtmlCheckBoxInput)lastpage.getHtmlElementById("table:3:cheesecheck"));
+        lastpage = (HtmlPage)checked.click();
+
+        checkTrue("table:3:cheesepref","Cheese Please");
+        System.out.println("Boolean Checkbox Checked");
+
+        checkTrue("table:4:count", "4");
+        HtmlAnchor countlink = (HtmlAnchor) lastpage.getHtmlElementById("table:4:countlink");
+        lastpage = countlink.click();
+
+        checkTrue("table:4:count", "5");
+        checkTrue("count","1");
+
+
+        HtmlSubmitInput button = (HtmlSubmitInput)lastpage.getHtmlElementById("submitButton");
+        lastpage = button.click();
+        checkTrue("table:0:count", "6");
+        checkTrue("count","1");
+        
+    }
+
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/ajax/AjaxTagEventAttributeITCase.java b/test/servlet30/systest/src/test/java/com/sun/faces/ajax/AjaxTagEventAttributeITCase.java
new file mode 100644
index 0000000..ed34571
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/ajax/AjaxTagEventAttributeITCase.java
@@ -0,0 +1,126 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.ajax;
+
+import com.sun.faces.htmlunit.HtmlUnitFacesITCase;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import com.gargoylesoftware.htmlunit.html.*;
+
+public class AjaxTagEventAttributeITCase extends HtmlUnitFacesITCase {
+
+    public AjaxTagEventAttributeITCase(String name) {
+        super(name);
+    }
+
+    /**
+     * Set up instance variables required by this test case.
+     */
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+
+
+    /*
+     * Return the tests included in this test suite.
+     */
+    public static Test suite() {
+        return (new TestSuite(AjaxTagEventAttributeITCase.class));
+    }
+
+
+    /**
+     * Tear down instance variables required by this test case.
+     */
+    public void tearDown() {
+        super.tearDown();
+    }
+
+
+    public void testAjaxTagEventAttribute() throws Exception {
+        getPage("/faces/ajax/ajaxTagEventAttribute.xhtml");
+        System.out.println("Start ajax tag event attribute test");
+
+        // Check initial values
+        checkTrue("out1","0");
+        checkTrue("out2","1");
+        checkTrue("out3","");
+        checkTrue("checkedvalue1","false");
+        checkTrue("checkedvalue2","false");
+
+        // Press Count
+        HtmlSubmitInput button = (HtmlSubmitInput) lastpage.getHtmlElementById("button");
+        lastpage = (HtmlPage) button.click();
+
+        checkTrue("out1","0");
+        checkTrue("out2","0");
+
+        HtmlInput input = (HtmlInput) lastpage.getHtmlElementById("in1");
+        lastpage = (HtmlPage) input.setValueAttribute("test");
+
+        checkTrue("out3","test");
+
+
+        // Check ajax checkbox
+        HtmlCheckBoxInput checked = ((HtmlCheckBoxInput)lastpage.getHtmlElementById("checkbox1"));
+        lastpage = (HtmlPage)checked.click();
+
+        checkTrue("checkedvalue1","true");
+
+        // Check ajax checkbox
+        checked = ((HtmlCheckBoxInput)lastpage.getHtmlElementById("checkbox2"));
+        lastpage = (HtmlPage)checked.click();
+
+        checkTrue("checkedvalue2","true");
+
+        // Check ajax checkbox
+        checked = ((HtmlCheckBoxInput)lastpage.getHtmlElementById("checkbox3"));
+        lastpage = (HtmlPage)checked.click();
+
+        checkTrue("checkedvalue3","true");
+
+
+        // Check that all ajax requests didn't result in a reload
+        checkTrue("out4","2");
+
+    }
+
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/ajax/AjaxTagEventWrappingITCase.java b/test/servlet30/systest/src/test/java/com/sun/faces/ajax/AjaxTagEventWrappingITCase.java
new file mode 100644
index 0000000..3432406
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/ajax/AjaxTagEventWrappingITCase.java
@@ -0,0 +1,205 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.ajax;
+
+import com.sun.faces.htmlunit.HtmlUnitFacesITCase;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import com.gargoylesoftware.htmlunit.html.*;
+
+public class AjaxTagEventWrappingITCase extends HtmlUnitFacesITCase {
+
+    public AjaxTagEventWrappingITCase(String name) {
+        super(name);
+    }
+
+    /**
+     * Set up instance variables required by this test case.
+     */
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+
+
+    /*
+     * Return the tests included in this test suite.
+     */
+    public static Test suite() {
+        return (new TestSuite(AjaxTagEventWrappingITCase.class));
+    }
+
+
+    /**
+     * Tear down instance variables required by this test case.
+     */
+    public void tearDown() {
+        super.tearDown();
+    }
+
+
+    public void testAjaxTagEventWrapping() throws Exception {
+        getPage("/faces/ajax/ajaxTagEventWrapping.xhtml");
+        System.out.println("Start ajax tag event wrapping test");
+
+        // Check initial values
+        checkTrue("out1","0");
+        checkTrue("say","init");
+        checkTrue("paramOut","");
+        checkTrue("out2","1");
+
+        // Press Count
+        HtmlSubmitInput button = (HtmlSubmitInput) lastpage.getHtmlElementById("button1");
+        lastpage = (HtmlPage) button.click();
+
+        checkTrue("out1","2");
+        checkTrue("out2","1");
+
+        // Press Say
+        button = (HtmlSubmitInput) lastpage.getHtmlElementById("button2");
+        lastpage = (HtmlPage) button.click();
+
+        checkTrue("say","1");
+        checkTrue("out1","2");
+        checkTrue("out2","1");
+
+        // Press Count and Say
+        button = (HtmlSubmitInput) lastpage.getHtmlElementById("button3");
+        lastpage = (HtmlPage) button.click();
+
+        checkTrue("say","2");
+        checkTrue("out1","3");
+        checkTrue("out2","1");
+
+        // Press Param
+        button = (HtmlSubmitInput) lastpage.getHtmlElementById("button4");
+        lastpage = (HtmlPage) button.click();
+
+        checkTrue("say","init");
+        checkTrue("out1","4");
+        checkTrue("out2","5");
+        checkTrue("paramOut","testval");
+
+        // Reset Page
+        button = (HtmlSubmitInput) lastpage.getHtmlElementById("reset");
+        lastpage = (HtmlPage) button.click();
+        button = (HtmlSubmitInput) lastpage.getHtmlElementById("reload");
+        lastpage = (HtmlPage) button.click();
+
+        // Check initial values
+        checkTrue("out1","0");
+        checkTrue("say","init");
+        checkTrue("paramOut","");
+        checkTrue("out2","1");
+
+        // Press Count and Param
+        button = (HtmlSubmitInput) lastpage.getHtmlElementById("button5");
+        lastpage = (HtmlPage) button.click();
+
+        checkTrue("out1","2");
+        checkTrue("say","init");
+        checkTrue("paramOut","testval");
+        checkTrue("out2","1");
+
+        // Reset Page
+        button = (HtmlSubmitInput) lastpage.getHtmlElementById("reset");
+        lastpage = (HtmlPage) button.click();
+        button = (HtmlSubmitInput) lastpage.getHtmlElementById("reload");
+        lastpage = (HtmlPage) button.click();
+
+        // Check initial values
+        checkTrue("out1","0");
+        checkTrue("say","init");
+        checkTrue("paramOut","");
+        checkTrue("out2","1");
+
+        // Press Count and Say and Param
+        /*  Test is faulty - commenting out - race to see if say is actually set
+
+        button = (HtmlSubmitInput) lastpage.getHtmlElementById("button6");
+        lastpage = (HtmlPage) button.click();
+
+        checkTrue("out1","2");
+        checkTrue("say","1");
+        checkTrue("paramOut","testval");
+        checkTrue("out2","1");
+        */
+        // leaving out button 7
+
+        // Reset Page
+        button = (HtmlSubmitInput) lastpage.getHtmlElementById("reset");
+        lastpage = (HtmlPage) button.click();
+        button = (HtmlSubmitInput) lastpage.getHtmlElementById("reload");
+        lastpage = (HtmlPage) button.click();
+
+        // Check initial values
+        checkTrue("out1","0");
+        checkTrue("say","init");
+        checkTrue("paramOut","");
+        checkTrue("out2","1");
+
+
+        // Check ajax checkbox
+        HtmlCheckBoxInput checked = ((HtmlCheckBoxInput)lastpage.getHtmlElementById("checkbox1"));
+        lastpage = (HtmlPage)checked.click();
+
+        System.out.println(getText("checkedvalue1"));
+        checkTrue("checkedvalue1","true");
+        checkTrue("out2","1");
+
+        // Check ajax + userwrap checkbox
+        checked = ((HtmlCheckBoxInput)lastpage.getHtmlElementById("checkbox2"));
+        lastpage = (HtmlPage)checked.click();
+
+        checkTrue("checkedvalue2","true");
+        checkTrue("say","1");
+        checkTrue("out2","1");
+
+        // Check user onchange checkbox
+        checked = ((HtmlCheckBoxInput)lastpage.getHtmlElementById("checkbox3"));
+        lastpage = (HtmlPage)checked.click();
+
+        checkTrue("checkedvalue3","false");
+        checkTrue("say","2");
+        checkTrue("out2","1");
+
+    }
+
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/ajax/AjaxTagITCase.java b/test/servlet30/systest/src/test/java/com/sun/faces/ajax/AjaxTagITCase.java
new file mode 100644
index 0000000..844ae0c
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/ajax/AjaxTagITCase.java
@@ -0,0 +1,656 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.ajax;
+
+import com.sun.faces.htmlunit.HtmlUnitFacesITCase;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import com.gargoylesoftware.htmlunit.html.*;
+
+public class AjaxTagITCase extends HtmlUnitFacesITCase {
+
+    public AjaxTagITCase(String name) {
+        super(name);
+    }
+
+    /**
+     * Set up instance variables required by this test case.
+     */
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+
+
+    /*
+     * Return the tests included in this test suite.
+     */
+    public static Test suite() {
+        return (new TestSuite(AjaxTagITCase.class));
+    }
+
+
+    /**
+     * Tear down instance variables required by this test case.
+     */
+    public void tearDown() {
+        super.tearDown();
+    }
+
+
+    public void testAjaxTagCount() throws Exception {
+        getPage("/faces/ajax/ajaxTagCount.xhtml");
+        System.out.println("Start ajax count test");
+        // First we'll check the first page was output correctly
+        checkTrue("countForm:out1","0");
+        checkTrue("out2","1");
+
+        // Submit the ajax request
+        HtmlSubmitInput button1 = (HtmlSubmitInput) lastpage.getHtmlElementById("countForm:button1");
+        lastpage = (HtmlPage) button1.click();
+
+        // Check that the ajax request succeeds
+        checkTrue("countForm:out1","2");
+
+        // Check that the request did NOT update the rest of the page.
+        checkTrue("out2","1");
+    }
+
+    public void testAjaxTagMulti() throws Exception {
+        getPage("/faces/ajax/ajaxTagMulti.xhtml");
+        System.out.println("Start ajax tag multi test");
+        // First we'll check the first page was output correctly
+        checkTrue("countForm:out1","0");
+        checkTrue("countForm:out2","1");
+        checkTrue("countForm:out3","2");
+        checkTrue("outside","3");
+
+        // Press Count 1
+        HtmlSubmitInput button = (HtmlSubmitInput) lastpage.getHtmlElementById("countForm:button1");
+        lastpage = (HtmlPage) button.click();
+
+        checkTrue("countForm:out1","4");
+
+        // Press Count 2
+        button = (HtmlSubmitInput) lastpage.getHtmlElementById("countForm:button2");
+        lastpage = (HtmlPage) button.click();
+
+        checkTrue("countForm:out1","5");
+        checkTrue("countForm:out2","6");
+
+        // Press Count all 3
+        button = (HtmlSubmitInput) lastpage.getHtmlElementById("countForm:button3");
+        lastpage = (HtmlPage) button.click();
+
+        checkTrue("countForm:out1","7");
+        checkTrue("countForm:out2","8");
+        checkTrue("countForm:out3","9");
+
+        // Check that the request did NOT update the rest of the page.
+        checkTrue("outside","3");
+
+        // Press Count form
+        button = (HtmlSubmitInput) lastpage.getHtmlElementById("countForm:button4");
+        lastpage = (HtmlPage) button.click();
+
+        checkTrue("countForm:out1","10");
+        checkTrue("countForm:out2","11");
+        checkTrue("countForm:out3","12");
+
+        // Check that the request did NOT update the rest of the page.
+        checkTrue("outside","3");
+
+        // Press Refresh form
+        button = (HtmlSubmitInput) lastpage.getHtmlElementById("countForm:reset");
+        lastpage = (HtmlPage) button.click();
+
+        checkTrue("countForm:out1","0");
+        checkTrue("countForm:out2","1");
+        checkTrue("countForm:out3","2");
+
+
+        // Check that the request did NOT update the rest of the page.
+        checkTrue("outside","3");
+    }
+
+    public void testAjaxTagDefaultsButton() throws Exception {
+        System.out.println("Starting Ajax Tag Defaults Button Test");
+        getPage("/faces/ajax/ajaxTagDefaultsButton.xhtml");
+
+
+        String out1 = "form1:out1";
+        String out2 = "form1:out2";
+        String out3 = "out3";
+        String reload = "form1:reload";
+        String reset1 = "form1:reset1";
+        String reset2 = "form1:reset2";
+        String reset3 = "form1:reset3";
+        String reset4 = "form1:reset4";
+
+        // First, we'll test to make sure the initial values come out right
+        checkTrue(out1,"0");
+        checkTrue(out2,"1");
+        checkTrue(out3,"2");
+
+        // Reload the page
+        HtmlSubmitInput button = (HtmlSubmitInput) lastpage.getHtmlElementById(reload);
+        lastpage = (HtmlPage) button.click();
+
+        // Check that the page updated correctly
+        checkTrue(out1,"3");
+        checkTrue(out2,"4");
+        checkTrue(out3,"5");
+
+        // Now, make the Ajax call to first reset button
+        button = (HtmlSubmitInput) lastpage.getHtmlElementById(reset1);
+        lastpage = (HtmlPage) button.click();
+
+        // Check that the ajax request succeeds
+        checkTrue(out1,"0");
+        checkTrue(out2,"4");
+        checkTrue(out3,"5");
+
+        // Reload the page
+        button = (HtmlSubmitInput) lastpage.getHtmlElementById(reload);
+        lastpage = (HtmlPage) button.click();
+
+        // Check that the page updated correctly
+        checkTrue(out1,"1");
+        checkTrue(out2,"2");
+        checkTrue(out3,"3");
+
+        // Now, make the Ajax call to second reset button
+        button = (HtmlSubmitInput) lastpage.getHtmlElementById(reset2);
+        lastpage = (HtmlPage) button.click();
+
+        // Check that the page updated correctly
+        checkTrue(out1,"0");
+        checkTrue(out2,"2");
+        checkTrue(out3,"3");
+
+        // Reload the page
+        button = (HtmlSubmitInput) lastpage.getHtmlElementById(reload);
+        lastpage = (HtmlPage) button.click();
+
+        // Check that the page updated correctly
+        checkTrue(out1,"1");
+        checkTrue(out2,"2");
+        checkTrue(out3,"3");
+
+        // Now, make the Ajax call to third reset button
+        button = (HtmlSubmitInput) lastpage.getHtmlElementById(reset3);
+        lastpage = (HtmlPage) button.click();
+
+        // Check the page did *not* update
+        checkTrue(out1,"1");
+        checkTrue(out2,"2");
+        checkTrue(out3,"3");
+
+        // Now, Reload the page, to check that reset3 actually executed
+        button = (HtmlSubmitInput) lastpage.getHtmlElementById(reload);
+        lastpage = (HtmlPage) button.click();
+        checkTrue(out1,"0");
+        checkTrue(out2,"1");
+        checkTrue(out3,"2");
+
+        // Reload the page
+        button = (HtmlSubmitInput) lastpage.getHtmlElementById(reload);
+        lastpage = (HtmlPage) button.click();
+
+        // Check that the page updated correctly
+        checkTrue(out1,"3");
+        checkTrue(out2,"4");
+        checkTrue(out3,"5");
+
+        // Now, make the Ajax call to fourth reset button
+        button = (HtmlSubmitInput) lastpage.getHtmlElementById(reset4);
+        lastpage = (HtmlPage) button.click();
+
+        // Check the page did *not* update
+        checkTrue(out1,"3");
+        checkTrue(out2,"4");
+        checkTrue(out3,"5");
+
+        // Now, Reload the page, to check that reset4 actually executed
+        button = (HtmlSubmitInput) lastpage.getHtmlElementById(reload);
+        lastpage = (HtmlPage) button.click();
+        checkTrue(out1,"0");
+        checkTrue(out2,"1");
+        checkTrue(out3,"2");
+    }
+
+    public void testAjaxTagDefaultsButtonNoPrepend() throws Exception {
+        System.out.println("Starting Tag Defaults Button No Prepend Test");
+        getPage("/faces/ajax/ajaxTagDefaultsButtonNoPrepend.xhtml");
+
+
+        String out1 = "out1";
+        String out2 = "out2";
+        String out3 = "out3";
+        String reload = "reload";
+        String reset1 = "reset1";
+        String reset2 = "reset2";
+        String reset3 = "reset3";
+        String reset4 = "reset4";
+
+
+        // First, we'll test to make sure the initial values come out right
+        checkTrue(out1,"0");
+        checkTrue(out2,"1");
+        checkTrue(out3,"2");
+
+        // Reload the page
+        HtmlSubmitInput button = (HtmlSubmitInput) lastpage.getHtmlElementById(reload);
+        lastpage = (HtmlPage) button.click();
+
+        // Check that the page updated correctly
+        checkTrue(out1,"3");
+        checkTrue(out2,"4");
+        checkTrue(out3,"5");
+
+        // Now, make the Ajax call to first reset button
+        button = (HtmlSubmitInput) lastpage.getHtmlElementById(reset1);
+        lastpage = (HtmlPage) button.click();
+
+        // Check that the ajax request succeeds
+        checkTrue(out1,"0");
+        checkTrue(out2,"4");
+        checkTrue(out3,"5");
+
+        // Reload the page
+        button = (HtmlSubmitInput) lastpage.getHtmlElementById(reload);
+        lastpage = (HtmlPage) button.click();
+
+        // Check that the page updated correctly
+        checkTrue(out1,"1");
+        checkTrue(out2,"2");
+        checkTrue(out3,"3");
+
+        // Now, make the Ajax call to second reset button
+        button = (HtmlSubmitInput) lastpage.getHtmlElementById(reset2);
+        lastpage = (HtmlPage) button.click();
+
+        // Check that the page updated correctly
+        checkTrue(out1,"0");
+        checkTrue(out2,"2");
+        checkTrue(out3,"3");
+
+        // Reload the page
+        button = (HtmlSubmitInput) lastpage.getHtmlElementById(reload);
+        lastpage = (HtmlPage) button.click();
+
+        // Check that the page updated correctly
+        checkTrue(out1,"1");
+        checkTrue(out2,"2");
+        checkTrue(out3,"3");
+
+        // Now, make the Ajax call to third reset button
+        button = (HtmlSubmitInput) lastpage.getHtmlElementById(reset3);
+        lastpage = (HtmlPage) button.click();
+
+        // Check the page did *not* update
+        checkTrue(out1,"1");
+        checkTrue(out2,"2");
+        checkTrue(out3,"3");
+
+        // Now, Reload the page, to check that reset3 actually executed
+        button = (HtmlSubmitInput) lastpage.getHtmlElementById(reload);
+        lastpage = (HtmlPage) button.click();
+        checkTrue(out1,"0");
+        checkTrue(out2,"1");
+        checkTrue(out3,"2");
+
+        // Reload the page
+        button = (HtmlSubmitInput) lastpage.getHtmlElementById(reload);
+        lastpage = (HtmlPage) button.click();
+
+        // Check that the page updated correctly
+        checkTrue(out1,"3");
+        checkTrue(out2,"4");
+        checkTrue(out3,"5");
+
+        // Now, make the Ajax call to fourth reset button
+        button = (HtmlSubmitInput) lastpage.getHtmlElementById(reset4);
+        lastpage = (HtmlPage) button.click();
+
+        // Check the page did *not* update
+        checkTrue(out1,"3");
+        checkTrue(out2,"4");
+        checkTrue(out3,"5");
+
+        // Now, Reload the page, to check that reset4 actually executed
+        button = (HtmlSubmitInput) lastpage.getHtmlElementById(reload);
+        lastpage = (HtmlPage) button.click();
+        checkTrue(out1,"0");
+        checkTrue(out2,"1");
+        checkTrue(out3,"2");
+    }
+
+    public void testAjaxTagDefaultsEdit() throws Exception {
+        System.out.println("Starting Tag Defaults Edit Test");
+        getPage("/faces/ajax/ajaxTagDefaultsEdit.xhtml");
+
+
+        String out1 = "form1:out1";
+        String out2 = "form1:out2";
+        String out3 = "out3";
+        String echo1Out = "form1:echo1Out";
+        String echo2Out = "form1:echo2Out";
+        String echo3Out = "form1:echo3Out";
+        String echo4Out = "form1:echo4Out";
+        String edit1 = "form1:edit1";
+        String edit2 = "form1:edit2";
+        String edit3 = "form1:edit3";
+        String edit4 = "form1:edit4";
+        String refresh = "form1:refresh";
+
+        // First, we'll test to make sure the initial values come out right
+        checkTrue(out1,"echo");
+        checkTrue(out2,"echo");
+        checkTrue(out3,"echo");
+        checkTrue(echo1Out,"");
+        checkTrue(echo2Out,"");
+        checkTrue(echo3Out,"");
+        checkTrue(echo4Out,"");
+
+        // Next, enter data into first field
+        HtmlTextInput echo1 = ((HtmlTextInput)lastpage.getHtmlElementById(edit1));
+        echo1.focus();
+        echo1.type("test1");
+        echo1.blur();
+
+        // Refresh the panel to check the listener fired
+        HtmlSubmitInput button = lastpage.getHtmlElementById(refresh);
+        button.click();
+        checkTrue(echo1Out,"test1");
+        checkTrue(out1,"test1");
+        checkTrue(out2,"echo");
+        checkTrue(out3,"echo");
+
+        // Next, enter data into second field
+        HtmlTextInput echo2 = ((HtmlTextInput)lastpage.getHtmlElementById(edit2));
+        echo2.focus();
+        echo2.type("test2");
+        echo2.blur();
+
+        // Refresh the panel to check the listener fired
+        button = lastpage.getHtmlElementById(refresh);
+        button.click();
+        checkTrue(echo2Out,"test2");
+        checkTrue(out1,"test2");
+        checkTrue(out2,"echo");
+        checkTrue(out3,"echo");
+
+        // Next, enter data into third field
+        HtmlTextInput echo3 = ((HtmlTextInput)lastpage.getHtmlElementById(edit3));
+        echo3.focus();
+        echo3.type("test3");
+        echo3.blur();
+
+        // Refresh the panel to check the listener fired
+        button = lastpage.getHtmlElementById(refresh);
+        button.click();
+        checkTrue(echo3Out,"test3");
+        checkTrue(out1,"test3");
+        checkTrue(out2,"echo");
+        checkTrue(out3,"echo");
+
+        // Next, enter data into the fourth field
+        HtmlTextInput echo4 = ((HtmlTextInput)lastpage.getHtmlElementById(edit4));
+        echo4.focus();
+        echo4.type("test4");
+        echo4.blur();
+
+        // Refresh the panel to check the listener fired
+        button = lastpage.getHtmlElementById(refresh);
+        button.click();
+        checkTrue(echo4Out,"test4");
+        checkTrue(out1,"test4");
+        checkTrue(out2,"echo");
+        checkTrue(out3,"echo");
+
+
+    }
+
+    public void testAjaxTagDefaultsEditNoPrepend() throws Exception {
+        System.out.println("Starting Tag Defaults Edit No Prepend Test");
+        getPage("/faces/ajax/ajaxTagDefaultsEditNoPrepend.xhtml");
+
+        String out1 = "out1";
+        String out2 = "out2";
+        String out3 = "out3";
+        String echo1Out = "echo1Out";
+        String echo2Out = "echo2Out";
+        String echo3Out = "echo3Out";
+        String echo4Out = "echo4Out";
+        String edit1 = "edit1";
+        String edit2 = "edit2";
+        String edit3 = "edit3";
+        String edit4 = "edit4";
+        String refresh = "refresh";
+
+        // First, we'll test to make sure the initial values come out right
+        checkTrue(out1,"echo");
+        checkTrue(out2,"echo");
+        checkTrue(out3,"echo");
+        checkTrue(echo1Out,"");
+        checkTrue(echo2Out,"");
+        checkTrue(echo3Out,"");
+        checkTrue(echo4Out,"");
+
+        // Next, enter data into first field
+        HtmlTextInput echo1 = ((HtmlTextInput)lastpage.getHtmlElementById(edit1));
+        echo1.focus();
+        echo1.type("test1");
+        echo1.blur();
+
+        // Refresh the panel to check the listener fired
+        HtmlSubmitInput button = lastpage.getHtmlElementById(refresh);
+        button.click();
+        checkTrue(echo1Out,"test1");
+        checkTrue(out1,"test1");
+        checkTrue(out2,"echo");
+        checkTrue(out3,"echo");
+
+        // Next, enter data into second field
+        HtmlTextInput echo2 = ((HtmlTextInput)lastpage.getHtmlElementById(edit2));
+        echo2.focus();
+        echo2.type("test2");
+        echo2.blur();
+
+        // Refresh the panel to check the listener fired
+        button = lastpage.getHtmlElementById(refresh);
+        button.click();
+        checkTrue(echo2Out,"test2");
+        checkTrue(out1,"test2");
+        checkTrue(out2,"echo");
+        checkTrue(out3,"echo");
+
+        // Next, enter data into third field
+        HtmlTextInput echo3 = ((HtmlTextInput)lastpage.getHtmlElementById(edit3));
+        echo3.focus();
+        echo3.type("test3");
+        echo3.blur();
+
+        // Refresh the panel to check the listener fired
+        button = lastpage.getHtmlElementById(refresh);
+        button.click();
+        checkTrue(echo3Out,"test3");
+        checkTrue(out1,"test3");
+        checkTrue(out2,"echo");
+        checkTrue(out3,"echo");
+
+        // Next, enter data into the fourth field
+        HtmlTextInput echo4 = ((HtmlTextInput)lastpage.getHtmlElementById(edit4));
+        echo4.focus();
+        echo4.type("test4");
+        echo4.blur();
+
+        // Refresh the panel to check the listener fired
+        button = lastpage.getHtmlElementById(refresh);
+        button.click();
+        checkTrue(echo4Out,"test4");
+        checkTrue(out1,"test4");
+        checkTrue(out2,"echo");
+        checkTrue(out3,"echo");
+
+    }
+
+    public void testAjaxTagEvent() throws Exception {
+        getPage("/faces/ajax/ajaxTagEvent.xhtml");
+        System.out.println("Start ajax tag event test");
+
+        // First we'll check the first page was output correctly
+        checkTrue("countForm:out1","0");
+        checkTrue("out2","1");
+
+        // Submit the ajax request
+        HtmlSubmitInput button1 = (HtmlSubmitInput) lastpage.getHtmlElementById("countForm:button1");
+        lastpage = (HtmlPage) button1.click();
+
+        // Check that the ajax request succeeds
+        checkTrue("countForm:out1","2");
+
+        // Check that the request did NOT update the rest of the page.
+        checkTrue("out2","1");
+
+        HtmlSubmitInput error = (HtmlSubmitInput) lastpage.getHtmlElementById("countForm:error");
+        lastpage = (HtmlPage) error.click();
+
+        // Check that events were written to the page.
+        String statusArea = "Name: countForm:button1 Event: begin ";
+        statusArea = statusArea + "Name: countForm:button1 Event: complete " ;
+        statusArea = statusArea + "Name: countForm:button1 Event: success " ;
+        statusArea = statusArea + "Name: countForm:error Event: begin " ;
+        statusArea = statusArea + "Name: countForm:error Event: complete " ;
+        statusArea = statusArea + "Name: countForm:error Event: success " ;
+        //System.out.println(statusArea);
+        //System.out.println(getText("statusArea");
+        checkTrue("statusArea",statusArea);
+    }
+
+    public void testAjaxTagDisabled() throws Exception {
+        getPage("/faces/ajax/ajaxTagDisabled.xhtml");
+        System.out.println("Start ajax tag Disabled test");
+
+        // First we'll check the first page was output correctly
+        checkTrue("countForm:out1","0");
+        checkTrue("out2","1");
+
+        // Submit the ajax request
+        HtmlButtonInput button1 = (HtmlButtonInput) lastpage.getHtmlElementById("countForm:button1");
+        lastpage = (HtmlPage) button1.click();
+
+        // Check that the button does nothing
+        checkTrue("countForm:out1","0");
+
+        // Check that the request did NOT update the rest of the page.
+        checkTrue("out2","1");
+
+        // Submit the ajax request
+        HtmlButtonInput button2 = (HtmlButtonInput) lastpage.getHtmlElementById("countForm:button2");
+        lastpage = (HtmlPage) button2.click();
+
+        // Check that the request succeeds
+        checkTrue("countForm:out1","2");
+
+        // Check that the request did NOT update the rest of the page.
+        checkTrue("out2","1");
+
+    }
+
+    public void testAjaxTagKeywords() throws Exception {
+        getPage("/faces/ajax/ajaxTagKeywords.xhtml");
+        System.out.println("Start ajax tag Keyword test");
+
+        checkTrue("out1","0");
+        checkTrue("out2","1");
+        checkTrue("button3","2");
+        checkTrue("out3","3");
+
+        // Submit the ajax request
+        HtmlSubmitInput button1 = (HtmlSubmitInput) lastpage.getHtmlElementById("button1");
+        lastpage = (HtmlPage) button1.click();
+
+
+        checkTrue("out1","4");
+        checkTrue("out2","5");
+        checkTrue("button3","6");
+        checkTrue("out3","7");
+
+        // Submit the ajax request
+        HtmlSubmitInput button2 = (HtmlSubmitInput) lastpage.getHtmlElementById("button2");
+        lastpage = (HtmlPage) button2.click();
+
+        checkTrue("out1","8");
+        checkTrue("out2","9");
+        checkTrue("button3","10");
+        checkTrue("out3","7");
+
+        // Submit the ajax request
+        HtmlSubmitInput button3 = (HtmlSubmitInput) lastpage.getHtmlElementById("button3");
+        lastpage = (HtmlPage) button3.click();
+
+        checkTrue("out1","8");
+        checkTrue("out2","9");
+        checkTrue("button3","11");
+        checkTrue("out3","7");
+
+        // Submit the ajax request
+        HtmlSubmitInput button4 = (HtmlSubmitInput) lastpage.getHtmlElementById("button4");
+        lastpage = (HtmlPage) button4.click();
+
+        checkTrue("out1","8");
+        checkTrue("out2","9");
+        checkTrue("button3","11");
+        checkTrue("out3","7");
+
+        // Submit the ajax request
+        HtmlSubmitInput button5 = (HtmlSubmitInput) lastpage.getHtmlElementById("button5");
+        lastpage = (HtmlPage) button5.click();
+
+        checkTrue("out1","8");
+        checkTrue("out2","12");
+        checkTrue("button3","11");
+        checkTrue("out3","7");
+        
+    }
+
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/ajax/AjaxTagResolveITCase.java b/test/servlet30/systest/src/test/java/com/sun/faces/ajax/AjaxTagResolveITCase.java
new file mode 100644
index 0000000..27cbd83
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/ajax/AjaxTagResolveITCase.java
@@ -0,0 +1,125 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.ajax;
+
+import com.sun.faces.htmlunit.HtmlUnitFacesITCase;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import com.gargoylesoftware.htmlunit.html.*;
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.AjaxController;
+import com.gargoylesoftware.htmlunit.NicelyResynchronizingAjaxController;
+
+public class AjaxTagResolveITCase extends HtmlUnitFacesITCase {
+
+    public AjaxTagResolveITCase(String name) {
+        super(name);
+    }
+
+    /**
+     * Set up instance variables required by this test case.
+     */
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+
+
+    /**
+     * Return the tests included in this test suite.
+     */
+    public static Test suite() {
+        return (new TestSuite(AjaxTagResolveITCase.class));
+    }
+
+
+    /**
+     * Tear down instance variables required by this test case.
+     */
+    public void tearDown() {
+        super.tearDown();
+    }
+
+
+    /*
+     * Check that the id's resolve correctly.
+     */
+    public void testAjaxTagWrapping() throws Exception {
+        getPage("/faces/ajax/ajaxTagResolve.xhtml");
+        System.out.println("Start ajax tag resolution test");
+
+        // First we'll check the first page was output correctly
+        assertTrue(check("form1:out1", "0"));
+        assertTrue(check("form1:out5", "1"));
+        assertTrue(check("form2:out2", "2"));
+        assertTrue(check("out3", "3"));
+        assertTrue(check("out4", "4"));
+
+        HtmlSubmitInput button;
+        button = (HtmlSubmitInput) lastpage.getHtmlElementById("form1:button1");
+        lastpage = (HtmlPage) button.click();
+        assertTrue(check("form1:out1","5"));
+
+        button = (HtmlSubmitInput) lastpage.getHtmlElementById("form1:button2");
+        lastpage = (HtmlPage) button.click();
+        assertTrue(check("form2:out2","6"));
+
+        button = (HtmlSubmitInput) lastpage.getHtmlElementById("form1:button3");
+        lastpage = (HtmlPage) button.click();
+        assertTrue(check("out3","7"));
+
+        button = (HtmlSubmitInput) lastpage.getHtmlElementById("form1:button4");
+        lastpage = (HtmlPage) button.click();
+        assertTrue(check("form1:out1","8"));
+
+        button = (HtmlSubmitInput) lastpage.getHtmlElementById("form1:button5");
+        lastpage = (HtmlPage) button.click();
+        assertTrue(check("form1:out1","9"));
+        assertTrue(check("form2:out2","10"));
+        assertTrue(check("out3","11"));
+
+        // Check that nothing updated that we didn't want
+        assertTrue(check("out4","4"));
+        assertTrue(check("form1:out5","1"));
+
+
+    }
+
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/ajax/AjaxTagWrappingITCase.java b/test/servlet30/systest/src/test/java/com/sun/faces/ajax/AjaxTagWrappingITCase.java
new file mode 100644
index 0000000..f496d62
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/ajax/AjaxTagWrappingITCase.java
@@ -0,0 +1,189 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.ajax;
+
+import com.sun.faces.htmlunit.HtmlUnitFacesITCase;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import com.gargoylesoftware.htmlunit.html.*;
+
+public class AjaxTagWrappingITCase extends HtmlUnitFacesITCase {
+
+    public AjaxTagWrappingITCase(String name) {
+        super(name);
+    }
+
+    /**
+     * Set up instance variables required by this test case.
+     */
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+
+
+    /**
+     * Return the tests included in this test suite.
+     */
+    public static Test suite() {
+        return (new TestSuite(AjaxTagWrappingITCase.class));
+    }
+
+
+    /**
+     * Tear down instance variables required by this test case.
+     */
+    public void tearDown() {
+        super.tearDown();
+    }
+
+
+    /*
+       Test each component to see that it behaves correctly when used with an Ajax tag
+     */
+    public void testAjaxTagWrapping() throws Exception {
+        getPage("/faces/ajax/ajaxTagWrapping.xhtml");
+        System.out.println("Start ajax tag wrapping test");
+
+        // First we'll check the first page was output correctly
+        checkTrue("out1", "0");
+        checkTrue("checkedvalue", "false");
+        checkTrue("outtext", "");
+
+        // Submit the ajax request
+        HtmlSubmitInput button1 = (HtmlSubmitInput) lastpage.getHtmlElementById("button1");
+        lastpage = (HtmlPage) button1.click();
+
+        // Check that the ajax request succeeds
+        checkTrue("out1","1");
+
+        HtmlAnchor link1 = (HtmlAnchor) lastpage.getHtmlElementById("link1");
+        lastpage = (HtmlPage) link1.click();
+
+        // Check that the ajax request succeeds
+        checkTrue("out1","2");
+
+        // Submit the ajax request
+        HtmlSubmitInput button2 = (HtmlSubmitInput) lastpage.getHtmlElementById("button2");
+        lastpage = (HtmlPage) button2.click();
+
+        // Check that the ajax request succeeds
+        checkTrue("out1","3");
+
+        // Check on the text field
+        HtmlTextInput intext = ((HtmlTextInput)lastpage.getHtmlElementById("intext"));
+        intext.focus();
+        intext.type("test");
+        intext.blur();
+
+        checkTrue("outtext","test");
+
+        // Check on the text field
+        HtmlTextInput intext2 = ((HtmlTextInput)lastpage.getHtmlElementById("intext2"));
+        intext2.focus();
+        intext2.type("test2");
+        intext2.blur();
+
+        checkTrue("outtext","test2");
+
+        // Check on the checkbox
+        HtmlCheckBoxInput checked = ((HtmlCheckBoxInput)lastpage.getHtmlElementById("checkbox"));
+        lastpage = (HtmlPage)checked.click();
+
+        checkTrue("checkedvalue","true");
+
+        // Check on the select many checkbox
+        checked = ((HtmlCheckBoxInput)lastpage.getHtmlElementById("manyCheckbox:0"));
+        lastpage = (HtmlPage)checked.click();
+
+        checkTrue("manyCheckedValue","Value: 1");
+
+    }
+
+    public void testReturnFalseOnlyGeneratedOnAjaxInsideActionSourceComponents() throws Exception {
+        HtmlPage page = getPage("/faces/ajax/issue1760NestedAjaxCheckboxRender.xhtml");
+        
+        sampleClickSample(page, "form1CurrentTime:", "checkbox1");
+        sampleClickSample(page, "form2CurrentTime:", "checkbox2");
+        sampleClickSample(page, "form3CurrentTime:", "button1");
+        sampleClickSample(page, "form4CurrentTime:", "link1");
+
+    }
+
+    private void sampleClickSample(HtmlPage page, String timestampPrefix, String clickableElementId) throws Exception {
+        String xml = page.asXml();
+        verifyContent(xml);
+
+        String timestampBefore = sampleTimestamp(timestampPrefix, xml);
+        ClickableElement clickable = (ClickableElement) page.getElementById(clickableElementId);
+        page = clickable.click();
+
+        xml = page.asXml();
+        verifyContent(xml);
+        String timestampAfter = sampleTimestamp(timestampPrefix, xml);
+
+        assertTrue(!timestampBefore.equals(timestampAfter));
+
+    }
+
+    private String sampleTimestamp(String timestampPrefix, String xml) {
+        String result = null;
+        int prefixLen = timestampPrefix.length();
+        int i = xml.indexOf(timestampPrefix);
+        int j = xml.indexOf(".", i);
+        result = xml.substring(i+prefixLen, j);
+
+        return result;
+    }
+
+    private void verifyContent(String xml) throws Exception {
+        // Verify that return false is *not* present on ajax request for form1
+        // and form2.
+        assertTrue(xml.matches("(?s).*<form id=\"form1\".*<input id=\"checkbox1\".*onclick=\".*[^f][^a][^l][^s][^e].*</form.*"));
+        assertTrue(xml.matches("(?s).*<form id=\"form2\".*<input id=\"checkbox2\".*onclick=\".*[^f][^a][^l][^s][^e].*</form.*"));
+
+        // Verify that return false *is* present on the ajax request for form3
+        // and form4
+        assertTrue(xml.matches("(?s).*<form id=\"form3\".*<input.*type=\"submit\".*onclick=\".*return false\".*</form.*"));
+        assertTrue(xml.matches("(?s).*<form id=\"form3\".*<a.*onclick=\".*return false\".*</form.*"));
+
+    }
+
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/ajax/AjaxViewStateITCase.java b/test/servlet30/systest/src/test/java/com/sun/faces/ajax/AjaxViewStateITCase.java
new file mode 100644
index 0000000..2f8a81d
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/ajax/AjaxViewStateITCase.java
@@ -0,0 +1,95 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.ajax;
+
+import com.sun.faces.htmlunit.HtmlUnitFacesITCase;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import com.gargoylesoftware.htmlunit.html.*;
+
+public class AjaxViewStateITCase extends HtmlUnitFacesITCase {
+
+    public AjaxViewStateITCase(String name) {
+        super(name);
+    }
+
+    /**
+     * Set up instance variables required by this test case.
+     */
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+
+
+    /*
+     * Return the tests included in this test suite.
+     */
+    public static Test suite() {
+        return (new TestSuite(AjaxViewStateITCase.class));
+    }
+
+
+    /**
+     * Tear down instance variables required by this test case.
+     */
+    public void tearDown() {
+        super.tearDown();
+    }
+
+
+    public void testAjaxViewState() throws Exception {
+        getPage("/faces/ajax/ajaxViewState.xhtml");
+        System.out.println("Start ajax view state test");
+
+        // Check ajax checkbox
+        HtmlCheckBoxInput checked = ((HtmlCheckBoxInput)lastpage.getHtmlElementById("checkbox1"));
+        lastpage = (HtmlPage)checked.click();
+
+        System.out.println(getText("checkedvalue1"));
+        checkTrue("checkedvalue1","true");
+
+        HtmlSubmitInput button = (HtmlSubmitInput) lastpage.getHtmlElementById("viewState");
+        button.click();
+        assertTrue(-1 != lastpage.asText().indexOf("&checkbox1=on"));
+
+    }
+
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/annotation/AnnotatedComponentsITCase.java b/test/servlet30/systest/src/test/java/com/sun/faces/annotation/AnnotatedComponentsITCase.java
new file mode 100644
index 0000000..1a2b806
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/annotation/AnnotatedComponentsITCase.java
@@ -0,0 +1,91 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.annotation;
+
+import java.util.List;
+import java.util.ArrayList;
+
+
+import com.sun.faces.htmlunit.HtmlUnitFacesITCase;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSpan;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+
+public class AnnotatedComponentsITCase extends HtmlUnitFacesITCase {
+
+
+    // ------------------------------------------------------------ Constructors
+
+
+    public AnnotatedComponentsITCase(String name) {
+        super(name);
+        addExclusion(Container.WLS_10_3_4_NO_CLUSTER, "testAnnotations");
+        addExclusion(Container.WLS_12_1_1_NO_CLUSTER, "testAnnotations");
+        addExclusion(Container.TOMCAT6, "testAnnotations");
+        addExclusion(Container.TOMCAT7, "testAnnotations");
+    }
+
+    /**
+     * Return the tests included in this test suite.
+     */
+    public static Test suite() {
+        return (new TestSuite(AnnotatedComponentsITCase.class));
+    }
+
+
+    // ------------------------------------------------------------ Test Methods
+
+
+    public void testAnnotations() throws Exception {
+        HtmlPage page = getPage("/faces/annotationtest.xhtml");
+        if (!page.asXml().toUpperCase().contains("TOMCAT") &&
+                !page.asXml().toUpperCase().contains("WEBLOGIC")) {
+            List<HtmlSpan> output = new ArrayList<HtmlSpan>(1);
+            getAllElementsOfGivenClass(page, output, HtmlSpan.class);
+            assertTrue(output.size() == 1);
+            HtmlSpan span = output.get(0);
+            assertTrue(span.asText().contains("true"));
+            assertTrue(page.asText().contains("AnnotatedPhaseListener: Hello World from env-entry!"));        
+        }
+    }
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/component/ComponentITCase.java b/test/servlet30/systest/src/test/java/com/sun/faces/component/ComponentITCase.java
new file mode 100644
index 0000000..ad8af6c
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/component/ComponentITCase.java
@@ -0,0 +1,124 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.component;
+
+import com.sun.faces.htmlunit.HtmlUnitFacesITCase;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+public class ComponentITCase extends HtmlUnitFacesITCase {
+
+    public ComponentITCase(String name) {
+        super(name);
+    }
+
+
+    /**
+     * Set up instance variables required by this test case.
+     */
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+
+
+    /**
+     * Return the tests included in this test suite.
+     */
+    public static Test suite() {
+        return (new TestSuite(ComponentITCase.class));
+    }
+
+
+    /**
+     * Tear down instance variables required by this test case.
+     */
+    public void tearDown() {
+        super.tearDown();
+    }
+
+
+    /**
+     * Added for issue 212.
+     * Ensure no exception when restoring state containing
+     * transient components.
+     *
+     * @throws Exception
+     */
+    public void testComponentTransienceRestoration() throws Exception {
+
+        HtmlPage page = getPage("/faces/component02.jsp");
+        HtmlSubmitInput submit = (HtmlSubmitInput)
+                getInputContainingGivenId(page, "submit");
+        try {
+            submit.click();
+        } catch (Exception ioe) {
+            fail("No exception should have been thrown: " +
+                    ioe.getMessage());
+        }
+
+    }
+    
+    public void testIssue1492Regression() throws Exception {
+        
+        HtmlPage page = getPage("/faces/component02.jsp");
+        HtmlSubmitInput submit = (HtmlSubmitInput)
+                getInputContainingGivenId(page, "submit");
+        
+        // exactly one occurrence of "ctor called"
+        assertTrue(page.asXml().matches("(?s).*|\\s*(ctor called)1\\s|.*"));
+        
+        try {
+            page = submit.click();
+        } catch (Exception ioe) {
+            fail("No exception should have been thrown: " +
+                    ioe.getMessage());
+        }
+
+        // exactly zero occurrence of "ctor called"
+        assertTrue(page.asXml().matches("(?s).*|\\s*|.*"));
+        
+        
+    }
+
+
+} // end of class PathTestCase
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/component/CompositeMetaDataITCase.java b/test/servlet30/systest/src/test/java/com/sun/faces/component/CompositeMetaDataITCase.java
new file mode 100644
index 0000000..ce289b3
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/component/CompositeMetaDataITCase.java
@@ -0,0 +1,126 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.component;
+
+import com.sun.faces.htmlunit.HtmlUnitFacesITCase;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+public class CompositeMetaDataITCase extends HtmlUnitFacesITCase {
+
+    public CompositeMetaDataITCase(String name) {
+        super(name);
+        addExclusion(Container.TOMCAT6, "testPrefixMappedFaceletPage");
+        addExclusion(Container.TOMCAT7, "testPrefixMappedFaceletPage");
+        addExclusion(Container.WLS_10_3_4_NO_CLUSTER, "testPrefixMappedFaceletPage");
+        addExclusion(Container.TOMCAT6, "testExtensionMappedFaceletPage");
+        addExclusion(Container.TOMCAT7, "testExtensionMappedFaceletPage");
+        addExclusion(Container.WLS_10_3_4_NO_CLUSTER, "testExtensionMappedFaceletPage");
+
+        addExclusion(Container.TOMCAT6, "testPrefixMappedFaceletPage");
+        addExclusion(Container.TOMCAT7, "testPrefixMappedFaceletPage");
+        addExclusion(Container.WLS_10_3_4_NO_CLUSTER, "testPrefixMappedFaceletPage");
+        addExclusion(Container.TOMCAT6, "testExtensionMappedFaceletPage");
+        addExclusion(Container.TOMCAT7, "testExtensionMappedFaceletPage");
+        addExclusion(Container.WLS_10_3_4_NO_CLUSTER, "testExtensionMappedFaceletPage");
+
+    }
+
+
+    /**
+     * Set up instance variables required by this test case.
+     */
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+
+
+    /**
+     * Return the tests included in this test suite.
+     */
+    public static Test suite() {
+        return (new TestSuite(CompositeMetaDataITCase.class));
+    }
+
+
+    /**
+     * Tear down instance variables required by this test case.
+     */
+    public void tearDown() {
+        super.tearDown();
+    }
+
+
+    /**
+     * Added for issue 10
+     *
+     * @throws Exception
+     */
+    public void testPrefixMappedFaceletPage() throws Exception {
+
+//        HtmlPage page = getPage("/faces/composite/jsr276-using.xhtml");
+//        String text = page.asText();
+//        assertTrue(-1 != text.indexOf("composite component with correctly specified jsr276 metadata"));
+//        assertTrue(-1 == text.indexOf("prefix fmd"));
+//        assertTrue(-1 != text.indexOf("prefix metaData"));
+    }
+
+    public void testExtensionMappedFaceletPage() throws Exception {
+
+//        HtmlPage page = getPage("/composite/jsr276-using.faces");
+//        String text = page.asText();
+//        assertTrue(-1 != text.indexOf("composite component with correctly specified jsr276 metadata"));
+//        assertTrue(-1 != text.indexOf("composite component with incorrectly specified jsr276 metadata"));
+    }
+
+   public void testDirectlyAccessedCompositeComponent() throws Exception {
+
+//       HtmlPage page = null;
+//       client.setThrowExceptionOnFailingStatusCode(false);
+//       page = getPage("/faces/resources/composite/jsr276Correct01.xhtml");
+//       String text = page.asText();
+//       assertTrue(text.contains("Component Not Found for identifier"));
+    }
+
+    
+
+} // end of class PathTestCase
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/composite/CompositeComponentsITCase.java b/test/servlet30/systest/src/test/java/com/sun/faces/composite/CompositeComponentsITCase.java
new file mode 100644
index 0000000..97a5f9f
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/composite/CompositeComponentsITCase.java
@@ -0,0 +1,1139 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.composite;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import com.sun.faces.htmlunit.HtmlUnitFacesITCase;
+import com.gargoylesoftware.htmlunit.html.*;
+
+import java.util.List;
+import java.util.ArrayList;
+
+/**
+ * Unit tests for Composite Components.
+ */
+public class CompositeComponentsITCase extends HtmlUnitFacesITCase {
+
+
+    @SuppressWarnings({"UnusedDeclaration"})
+    public CompositeComponentsITCase() {
+        this("CompositeComponentsTestCase");
+    }
+
+    public CompositeComponentsITCase(String name) {
+        super(name);
+        addExclusion(Container.TOMCAT6, "testForNoNPE");
+        addExclusion(Container.TOMCAT7, "testForNoNPE");
+        addExclusion(Container.WLS_10_3_4_NO_CLUSTER, "testForNoNPE");
+        addExclusion(Container.TOMCAT6, "testMetadataCache");
+        addExclusion(Container.TOMCAT7, "testMetadataCache");
+        addExclusion(Container.WLS_10_3_4_NO_CLUSTER, "testMetadataCache");
+    }
+
+
+    /**
+     * Set up instance variables required by this test case.
+     */
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+
+
+    /**
+     * Return the tests included in this test suite.
+     */
+    public static Test suite() {
+        return (new TestSuite(CompositeComponentsITCase.class));
+    }
+
+
+    /**
+     * Tear down instance variables required by this test case.
+     */
+    public void tearDown() {
+        super.tearDown();
+    }
+    
+
+    // -------------------------------------------------------------- Test Cases
+
+    public void testIsCompositeComponent() throws Exception {
+        HtmlPage page = getPage("/faces/composite/isCompositeComponentUsing.xhtml");
+        assertTrue(page.asText().contains("isCompositeComponent: true"));
+    }
+
+    /**
+     * <p>
+     *  Maps ActionListener to commandButton within composite/actionSource1.xhtml using
+     *   only the name attribute.
+     * </p>
+     */
+    public void testActionSource1() throws Exception {
+//
+//        HtmlPage page = getPage("/faces/composite/actionsource.xhtml");
+//        validateActionMessagePresent(page,
+//                                     "form:actionsource1:command");
+//
+    }
+
+
+    /**
+     * <p>
+     *   Maps ActionListener to commandButton within composite/actionSource2.xhtml using
+     *   name and target attributes.
+     * </p>
+     */
+    public void testActionSource2() throws Exception {
+//
+//        HtmlPage page = getPage("/faces/composite/actionsource.xhtml");
+//        validateActionMessagePresent(page,
+//                                     "form:actionsource2:ac2");
+//
+    }
+
+
+    /**
+     * <p>
+     *  Maps ActionListener to a commandButton within a composite/actionSource1.xhtml
+     *   which is nested within composite/actionSource3.xhtml. Using the same ID
+     *   in the nesting.
+     * </p>
+     */
+    public void testActionSource3() throws Exception {
+//
+//        HtmlPage page = getPage("/faces/composite/actionsource.xhtml");
+//        validateActionMessagePresent(page,
+//                                     "form:actionsource3:command:command");
+//        
+    }
+
+
+    /**
+     * <p>
+     *  Ensure actionListeners are properly re-targeted when the
+     *  target of the actionListener is nested within another naming
+     *  container.  Note that the value of the 'for' attribute doesn't
+     *  mimic the NamingContainer hierarchy, that's handled by the
+     *  'targets' attribute within the composite:implementation section
+     *  of actionSource4.xhtml.
+     * </p>
+     */
+    public void testActionSource4() throws Exception {
+//
+//        HtmlPage page = getPage("/faces/composite/actionsource.xhtml");
+//        validateActionMessagePresent(page,
+//                                     "form:actionsource4:naming:command");
+//        
+    }
+
+
+    /**
+     * <p>
+     *  Maps Validator to inputText within composite/validator1.xhtml using
+     *   only the name attribute.
+     * </p>
+     */
+    public void testValidator1() throws Exception {
+//
+//        HtmlPage page = getPage("/faces/composite/attachedvalidator.xhtml");
+//        validateValidatorMessagePresent(page,
+//                                        "form:s1",
+//                                        "form:validator1:input");
+//
+    }
+
+
+    /**
+     * <p>
+     *   Maps Validator to inputText within composite/validator2.xhtml using
+     *   name and target attributes.
+     * </p>
+     */
+    public void testValidator2() throws Exception {
+//
+//        HtmlPage page = getPage("/faces/composite/attachedvalidator.xhtml");
+//        validateValidatorMessagePresent(page,
+//                                        "form2:s2",
+//                                        "form2:validator2:it2");
+//
+    }
+
+
+    /**
+     * <p>
+     *   Maps Validator to inputText within composite/validator2.xhtml using
+     *   name and target attributes.
+     * </p>
+     */
+    public void testValidator3() throws Exception {
+//
+//        HtmlPage page = getPage("/faces/composite/attachedvalidator.xhtml");
+//        validateValidatorMessagePresent(page,
+//                                        "form3:s3",
+//                                        "form3:validator3:input:input");
+//
+    }
+
+
+    /**
+     * <p>
+     *  Ensure validators are properly re-targeted when the
+     *  target of the validator is nested within another naming
+     *  container.  Note that the value of the 'for' attribute doesn't
+     *  mimic the NamingContainer hierarchy, that's handled by the
+     *  'targets' attribute within the composite:implementation section
+     *  of validator4.xhtml.
+     * </p>
+     */
+    public void testValidator4() throws Exception {
+//
+//        HtmlPage page = getPage("/faces/composite/attachedvalidator.xhtml");
+//        validateValidatorMessagePresent(page,
+//                                        "form4:s4",
+//                                        "form4:validator4:naming:input");
+//
+    }
+
+    /**
+     * <p>
+     *  Maps Converter to inputText within composite/validator1.xhtml using
+     *   only the name attribute.
+     * </p>
+     *
+     * <p>
+     *   Maps Converter to inputText within composite/validator2.xhtml using
+     *   name and target attributes.
+     * </p>
+     *
+     * <p>
+     *   Maps Converter to inputText within composite/validator2.xhtml using
+     *   name and target attributes.
+     * </p>
+     *
+     * <p>
+     *  Ensure validators are properly re-targeted when the
+     *  target of the validator is nested within another naming
+     *  container.  Note that the value of the 'for' attribute doesn't
+     *  mimic the NamingContainer hierarchy, that's handled by the
+     *  'targets' attribute within the composite:implementation section
+     *  of validator4.xhtml.
+     * </p>
+     */
+    public void testConverters() throws Exception {
+//
+//        String[] messageSuffixes = new String[] {
+//              "form:converter1:input",
+//              "form2:converter2:it2",
+//              "form3:converter3:input:input",
+//              "form4:converter4:naming:input"
+//        };
+//
+//        HtmlPage page = getPage("/faces/composite/attachedconverter.xhtml");
+//        validateConverterMessages(page, messageSuffixes);
+//        page = pushButton(page, "cf:clear");
+//        validateConverterMessages(page, messageSuffixes);
+//
+    }
+
+
+    public void testActions() throws Exception {
+
+        final String[] commandIds = {
+              "form:c0:command",
+              "form:c1:nesting:aw1:command",
+              "form:c2:nesting:aw2:command",
+              "form:c3:nesting:aw3:nesting:aw1:command",
+              "form:c4:nesting:aw4:nesting:aw1:command"
+        };
+
+        HtmlPage page = getPage("/faces/composite/action.xhtml");
+        for (String commandId : commandIds) {
+            HtmlSubmitInput submit = (HtmlSubmitInput) getInputContainingGivenId(page, commandId);
+            assertNotNull(submit);
+            page = submit.click();
+            String message = "Action invoked: " + commandId;
+            assertTrue(page.asText().contains(message));
+        }
+        
+    }
+
+
+    public void testCustomActions() throws Exception {
+
+        final String[] commandIds = {
+              "form:c0:command",
+              "form:c1:nesting:aw1:command",
+              "form:c2:nesting:aw2:command",
+              "form:c3:nesting:aw3:nesting:aw1:command",
+              "form:c4:nesting:aw4:nesting:aw1:command"
+        };
+
+        HtmlPage page = getPage("/faces/composite/customAction.xhtml");
+        for (String commandId : commandIds) {
+            HtmlSubmitInput submit = (HtmlSubmitInput) getInputContainingGivenId(page, commandId);
+            assertNotNull(submit);
+            page = submit.click();
+            String message = "Custom action invoked: " + commandId;
+            assertTrue(page.asText().contains(message));
+        }
+
+    }
+
+
+    public void testActionListeners() throws Exception {
+
+        final String[] commandIds = {
+              "form:c0:command",
+              "form:c1:nesting:aw1:command",
+              "form:c2:nesting:aw2:command",
+              "form:c3:nesting:aw3:nesting:aw1:command",
+              "form:c4:nesting:aw4:nesting:aw1:command"
+        };
+
+        HtmlPage page = getPage("/faces/composite/actionListener.xhtml");
+        for (String commandId : commandIds) {
+            HtmlSubmitInput submit = (HtmlSubmitInput) getInputContainingGivenId(page, commandId);
+            assertNotNull(submit);
+            page = submit.click();
+            String message = "ActionListener invoked: " + commandId;
+            assertTrue(page.asText().contains(message));
+        }
+
+    }
+
+
+    public void testValidators() throws Exception {
+        try {
+            getPage("/faces/setApplicationMapProperty.xhtml?name=javax.faces.VALIDATE_EMPTY_FIELDS&value=true");
+
+            HtmlPage page = getPage("/faces/composite/validator.xhtml");
+            HtmlSubmitInput submit = (HtmlSubmitInput) getInputContainingGivenId(page, "form:submit");
+            assertNotNull(submit);
+            page = submit.click();
+
+            final String[] inputIds = {
+                "form:c0:input",
+                "form:c1:nesting:aw1:input",
+                "form:c2:nesting:aw2:input",
+                "form:c3:nesting:aw3:nesting:aw1:input",
+                "form:c4:nesting:aw4:nesting:aw1:input"
+            };
+
+            String pageText = page.asText();
+            for (String inputId : inputIds) {
+                String message = "validator invoked: " + inputId;
+                assertTrue(pageText.contains(message));
+            }
+        }
+        finally {
+            getPage("/faces/clearApplicationMapProperty.xhtml?name=javax.faces.VALIDATE_EMPTY_FIELDS");
+
+        }
+
+    }
+
+
+    public void testValueChangeListeners() throws Exception {
+
+        HtmlPage page = getPage("/faces/composite/valueChangeListener.xhtml");
+        HtmlSubmitInput submit = (HtmlSubmitInput) getInputContainingGivenId(page, "form:submit");
+        assertNotNull(submit);
+        page = submit.click();
+
+        final String[] inputIds = {
+              "form:c0:input",
+              "form:c1:nesting:aw1:input",
+              "form:c2:nesting:aw2:input",
+              "form:c3:nesting:aw3:nesting:aw1:input",
+              "form:c4:nesting:aw4:nesting:aw1:input"
+        };
+
+        String pageText = page.asText();
+        for (String inputId : inputIds) {
+            String message = "ValueChange invoked: " + inputId;
+            assertTrue(pageText.contains(message));
+        }
+
+    }
+
+
+    public void testNesting01() throws Exception {
+
+        HtmlPage page = getPage("/faces/composite/nesting01.xhtml");
+        List<HtmlSpan> spans = new ArrayList<HtmlSpan>(2);
+        getAllElementsOfGivenClass(page, spans, HtmlSpan.class);
+        assertEquals(2, spans.size());
+        HtmlSpan span = spans.get(0);
+        assertEquals("Should have a value: Hello World", span.asText());
+        span = spans.get(1);
+        assertEquals("Shouldn't have a value:", span.asText());
+
+    }
+
+
+    public void testNesting02() throws Exception {
+
+        HtmlPage page = getPage("/faces/composite/nesting02.xhtml");
+        HtmlSubmitInput input = (HtmlSubmitInput) getInputContainingGivenId(page, "commandButton");
+        assertNotNull(input);
+        page = input.click();
+        assertEquals("Navigation Result", page.getTitleText());
+
+    }
+
+
+    public void testNesting03() throws Exception {
+
+        HtmlPage page = getPage("/faces/composite/nesting03.xhtml");
+        HtmlSubmitInput input = (HtmlSubmitInput) getInputContainingGivenId(page, "commandButton");
+        assertNotNull(input);
+        page = input.click();
+        assertEquals("Navigation Result", page.getTitleText());
+
+    }
+
+
+    public void testNesting04() throws Exception {
+//
+//        HtmlPage page = getPage("/faces/composite/nesting04.xhtml");
+//        List<HtmlSpan> spans = new ArrayList<HtmlSpan>(3);
+//        getAllElementsOfGivenClass(page, spans, HtmlSpan.class);
+//        assertEquals(3, spans.size());
+//        assertEquals("static", spans.get(0).asText());
+//        assertEquals("com.sun.faces.context.FacesContextImpl", spans.get(1).asText());
+//        assertEquals("form:nesting4", spans.get(2).asText());
+//
+//        HtmlSubmitInput input = (HtmlSubmitInput) getInputContainingGivenId(page, "form:sub");
+//        page = input.click();
+//        spans.clear();
+//         getAllElementsOfGivenClass(page, spans, HtmlSpan.class);
+//        assertEquals(3, spans.size());
+//        assertEquals("static", spans.get(0).asText());
+//        assertEquals("com.sun.faces.context.FacesContextImpl", spans.get(1).asText());
+//        assertEquals("form:nesting4", spans.get(2).asText());
+//        
+    }
+
+
+    public void testNesting05() throws Exception {
+
+//        HtmlPage page = getPage("/faces/composite/nesting05.xhtml");
+//        HtmlSubmitInput submit = (HtmlSubmitInput) getInputContainingGivenId(page, "nesting6:nesting7:form1:command");
+//        page = submit.click();
+//        assertTrue(page.asText().contains("Action invoked"));
+//
+//        page = getPage("/faces/composite/nesting05.xhtml");
+//        submit = (HtmlSubmitInput) getInputContainingGivenId(page, "nesting6:nesting7:form2:command2");
+//        page = submit.click();
+//        assertTrue(page.asText().contains("ActionListener invoked"));
+//
+//        page = getPage("/faces/composite/nesting05.xhtml");
+//        submit = (HtmlSubmitInput) getInputContainingGivenId(page, "nesting6:nesting7:form3:command3");
+//        page = submit.click();
+//        assertTrue(page.asText().contains("Custom action invoked"));
+//
+//        page = getPage("/faces/composite/nesting05.xhtml");
+//        submit = (HtmlSubmitInput) getInputContainingGivenId(page, "nesting6:nesting7:form4:command");
+//        HtmlTextInput text = (HtmlTextInput) getInputContainingGivenId(page, "nesting6:nesting7:form4:input");
+//        text.setValueAttribute("foo");
+//        page = submit.click();
+//        assertTrue(page.asText().contains("validator invoked"));
+//
+//        page = getPage("/faces/composite/nesting05.xhtml");
+//        submit = (HtmlSubmitInput) getInputContainingGivenId(page, "nesting6:nesting7:form5:command");
+//        page = submit.click();
+//        assertTrue(page.asText().contains("ValueChange invoked"));
+        
+    }
+
+
+    public void testNesting06() throws Exception {
+        HtmlPage page = getPage("/faces/composite/addPhaseListener.xhtml");
+        assertTrue(page.asText().contains("/composite/addPhaseListener.xhtml PASSED"));
+    }
+
+
+    /**
+     * Added for issue 1238.
+     */
+    public void testNesting07() throws Exception {
+
+        HtmlPage page = getPage("/faces/composite/nestingCompositeExpressionTreeCreation.xhtml");
+        List<HtmlSpan> spans = new ArrayList<HtmlSpan>(5);
+        getAllElementsOfGivenClass(page, spans, HtmlSpan.class);
+        assertEquals(5, spans.size());
+        final String[] expectedSpanValues = {
+              "PASSED", "PASSED", "PASSED", "PASSED", "FAILED"
+        };
+        for (int i = 0; i < expectedSpanValues.length; i++) {
+            assertEquals(expectedSpanValues[i], expectedSpanValues[i], spans.get(i).asText());
+        }
+
+        // redisplay the view to make sure nothing changes over post back
+        HtmlSubmitInput submit = (HtmlSubmitInput) getInputContainingGivenId(page, "form:submit");
+        assertNotNull(submit);
+        page = submit.click();
+        spans.clear();
+        getAllElementsOfGivenClass(page, spans, HtmlSpan.class);
+        assertEquals(5, spans.size());
+        for (int i = 0; i < expectedSpanValues.length; i++) {
+            assertEquals(expectedSpanValues[i], expectedSpanValues[i], spans.get(i).asText());
+        }
+        
+    }
+
+
+    /**
+     * Added for issue 1255.
+     */
+    public void testNesting08() throws Exception {
+
+//        HtmlPage page = getPage("/faces/composite/nesting06.xhtml");
+//        HtmlSubmitInput submit = (HtmlSubmitInput) getInputContainingGivenId(page, "nesting10:nesting6:nesting7:form1:command");
+//        page = submit.click();
+//        assertTrue(page.asText().contains("Action invoked"));
+//
+//        page = getPage("/faces/composite/nesting06.xhtml");
+//        submit = (HtmlSubmitInput) getInputContainingGivenId(page, "nesting10:nesting6:nesting7:form2:command2");
+//        page = submit.click();
+//        assertTrue(page.asText().contains("ActionListener invoked"));
+//
+//        page = getPage("/faces/composite/nesting06.xhtml");
+//        submit = (HtmlSubmitInput) getInputContainingGivenId(page, "nesting10:nesting6:nesting7:form3:command3");
+//        page = submit.click();
+//        assertTrue(page.asText().contains("Custom action invoked"));
+//
+//        page = getPage("/faces/composite/nesting06.xhtml");
+//        submit = (HtmlSubmitInput) getInputContainingGivenId(page, "nesting10:nesting6:nesting7:form4:command");
+//        HtmlTextInput text = (HtmlTextInput) getInputContainingGivenId(page, "nesting10:nesting6:nesting7:form4:input");
+//        text.setValueAttribute("foo");
+//        page = submit.click();
+//        assertTrue(page.asText().contains("validator invoked"));
+//
+//        page = getPage("/faces/composite/nesting06.xhtml");
+//        submit = (HtmlSubmitInput) getInputContainingGivenId(page, "nesting10:nesting6:nesting7:form5:command");
+//        page = submit.click();
+//        assertTrue(page.asText().contains("ValueChange invoked"));
+
+    }
+    
+
+
+    public void testChildrenAndFacets() throws Exception {
+
+        HtmlPage page = getPage("/faces/composite/childrenfacets.xhtml");
+        List<HtmlSpan> spans = new ArrayList<HtmlSpan>(6);
+        getAllElementsOfGivenClass(page, spans, HtmlSpan.class);
+        validateChildrenAndFacets(spans);
+        page = pushButton(page, "form:submit");
+        spans.clear();
+        getAllElementsOfGivenClass(page, spans, HtmlSpan.class);
+        validateChildrenAndFacets(spans);
+        
+    }
+
+
+    public void testCompositeInsertChildrenNested() throws Exception {
+
+        HtmlPage page = getPage("/faces/composite/compositeInsertChildrenNesting.xhtml");
+        List<HtmlSpan> spans = new ArrayList<HtmlSpan>();
+        getAllElementsOfGivenClass(page, spans, HtmlSpan.class);
+        String[] expectedItems = {
+            "Before Insert A(1)",
+            "Before Nested compcomp (3)",
+            "Before Insert B(1)",
+            "Inside nested Component (4)",
+            "After Insert B(2)",
+            "After Nested compcomp(5)",
+            "After Insert A(2)"
+        };
+        assertTrue(spans.size() == expectedItems.length);
+        for (int i = 0, len = expectedItems.length; i < len; i++) {
+            assertTrue(expectedItems[i].equals(spans.get(i).asText()));    
+        }
+
+        HtmlSubmitInput input = (HtmlSubmitInput) getInputContainingGivenId(page, "form:submit");
+        assertNotNull(input);
+        page = input.click();
+
+        spans = new ArrayList<HtmlSpan>();
+        getAllElementsOfGivenClass(page, spans, HtmlSpan.class);
+        assertTrue(spans.size() == expectedItems.length);
+        for (int i = 0, len = expectedItems.length; i < len; i++) {
+            assertTrue(expectedItems[i].equals(spans.get(i).asText()));
+        }
+        
+    }
+
+
+    public void testCompositeInsertChildrenNested02() throws Exception {
+
+        HtmlPage page = getPage("/faces/composite/compositeInsertChildrenNesting02.xhtml");
+        List<HtmlDivision> divs = new ArrayList<HtmlDivision>(1);
+        getAllElementsOfGivenClass(page, divs, HtmlDivision.class);
+        assertTrue(Integer.toString(divs.size()), divs.size() == 1);
+        HtmlDivision div = divs.get(0);
+        int count = 0;
+        Class[] expectedElements = {
+              HtmlAnchor.class,
+              HtmlBreak.class
+        };
+        for (HtmlElement element : div.getChildElements()) {
+            if (count > 2) {
+                fail("Expected two children of the div");
+            }
+            assertTrue(element.getClass().equals(expectedElements[count]));
+            count++;
+        }
+        
+    }
+
+
+    public void testCompositeInsertFacetNested() throws Exception {
+
+        HtmlPage page = getPage("/faces/composite/compositeInsertFacetNesting.xhtml");
+        List<HtmlTable> tables = new ArrayList<HtmlTable>();
+        getAllElementsOfGivenClass(page, tables, HtmlTable.class);
+        assertTrue(tables.size() == 1);
+        HtmlTable table = tables.get(0);
+        HtmlTableHeader header = table.getHeader();
+        assertNotNull(header);
+        assertEquals(header.asText(), "header");
+        HtmlTableFooter footer = table.getFooter();
+        assertNotNull(footer);
+        assertEquals(footer.asText(), "footer");
+
+    }
+
+
+    public void testCompositeInsertFacetNested02() throws Exception {
+
+        HtmlPage page = getPage("/faces/composite/compositeInsertFacetNesting02.xhtml");
+        List<HtmlTable> tables = new ArrayList<HtmlTable>();
+        getAllElementsOfGivenClass(page, tables, HtmlTable.class);
+        assertTrue(tables.size() == 1);
+        HtmlTable table = tables.get(0);
+        HtmlTableHeader header = table.getHeader();
+        assertNotNull(header);
+        assertEquals(header.asText(), "Header");
+        HtmlTableFooter footer = table.getFooter();
+        assertNotNull(footer);
+        assertEquals(footer.asText(), "Footer");
+
+    }
+
+
+    public void testInsertFacetRequired01() throws Exception {
+
+        // facet required but not present
+        client.setThrowExceptionOnFailingStatusCode(false);
+        HtmlPage page = getPage("/faces/composite/insertfacetrequired01.xhtml");
+        assertTrue(page.asText().contains("Unable to find facet named 'header'"));
+
+    }
+
+
+    public void testInsertFacetRequired02() throws Exception {
+
+        // facet required but not present
+        client.setThrowExceptionOnFailingStatusCode(false);
+        HtmlPage page = getPage("/faces/composite/insertfacetrequired02.xhtml");
+        assertTrue(page.asText().contains("Unable to find facet named 'header'"));
+
+    }
+
+
+    public void testInsertFacetRequired03() throws Exception {
+
+        // facet not required and not present
+        client.setThrowExceptionOnFailingStatusCode(false);
+        HtmlPage page = getPage("/faces/composite/insertfacetrequired03.xhtml");
+        assertTrue(!page.asText().contains("Unable to find facet named 'header'"));
+
+    }
+    
+    
+    public void testRenderFacetRequired01() throws Exception {
+
+        // facet required but not present
+        client.setThrowExceptionOnFailingStatusCode(false);
+        HtmlPage page = getPage("/faces/composite/renderfacetrequired01.xhtml");
+        assertTrue(page.asText().contains("Unable to find facet named 'header'"));
+
+    }
+
+
+    public void testRenderFacetRequired02() throws Exception {
+
+        // facet required but not present
+        client.setThrowExceptionOnFailingStatusCode(false);
+        HtmlPage page = getPage("/faces/composite/renderfacetrequired02.xhtml");
+        assertTrue(page.asText().contains("Unable to find facet named 'header'"));
+
+    }
+
+
+    public void testRenderFacetRequired03() throws Exception {
+
+        // facet not required and not present
+        client.setThrowExceptionOnFailingStatusCode(false);
+        HtmlPage page = getPage("/faces/composite/renderfacetrequired03.xhtml");
+        assertTrue(!page.asText().contains("Unable to find facet named 'header'"));
+
+    }
+    
+    
+    public void testInsertChildrenRequired01() throws Exception {
+
+        // facet required but not present
+        client.setThrowExceptionOnFailingStatusCode(false);
+        HtmlPage page = getPage("/faces/composite/insertchildrenrequired01.xhtml");
+        assertTrue(page.asText().contains("Unable to find any children components nested within parent composite component"));
+
+    }
+
+
+    public void testInsertChildrenRequired02() throws Exception {
+
+        // facet required but not present
+        client.setThrowExceptionOnFailingStatusCode(false);
+        HtmlPage page = getPage("/faces/composite/insertchildrenrequired02.xhtml");
+        assertTrue(page.asText().contains("Unable to find any children components nested within parent composite component"));
+
+    }
+
+
+    public void testInsertChildrenRequired03() throws Exception {
+
+        // facet not required and not present
+        client.setThrowExceptionOnFailingStatusCode(false);
+        HtmlPage page = getPage("/faces/composite/insertchildrenrequired03.xhtml");
+        assertTrue(!page.asText().contains("Unable to find any children components nested within parent composite component"));
+
+    }
+
+    public void testTemplateDecorate() throws Exception {
+        lastpage = getPage("/faces/composite/decorate.xhtml");
+
+        assertTrue("Decorate Test".equals(lastpage.getTitleText()));
+
+        String templateText = lastpage.getElementById("comp").getTextContent();
+        assertTrue("Composition Text".equals(templateText));
+
+        String toplevelContent = lastpage.getElementById("insert").getTextContent();
+        assertTrue("Inserted Text".equals(toplevelContent));
+    }
+
+    public void testMetadataCache() throws Exception {
+//        HtmlPage page = getPage("/faces/composite/boostrapCompositeComponentMetadata.xhtml");
+//        String text = page.asText();
+//        assertTrue(text.contains("First call longer than second call"));
+    }
+
+    public void testMethodExprNotRequired() throws Exception {
+
+        try {
+            getPage("/faces/composite/methodExprNotRequired.xhtml");
+        } catch (Exception e) {
+            fail("Exception thrown when compiling page methodExprNotRequired.");
+        }
+
+    }
+
+    public void testMethodExprRequired() throws Exception {
+
+        try {
+            getPage("/faces/composite/methodExprRequired.xhtml");
+            fail("No exception thrown when composite component was missing a required MethodExpression enabled attribute");
+        } catch (Exception e) {
+            
+        }
+
+    }
+
+
+    public void testCompositionWithinComposite() throws Exception {
+        try {
+            getPage("/faces/composite/compositionWithinCompositeUsingPage.xhtml");
+            fail("No exception thrown when composite component contained ui:composition");
+        } catch (Exception e) {
+
+        }
+
+    }
+
+
+    /**
+     * Added for issue 1265.
+     */
+    public void testCompositeComponentResolutionWithinRelocatableResources() throws Exception {
+
+        HtmlPage page = getPage("/faces/composite/compAttributeResourceRelocation.xhtml");
+        List<HtmlStyle> styles = new ArrayList<HtmlStyle>(4);
+        List<HtmlScript> scripts = new ArrayList<HtmlScript>(1);
+        getAllElementsOfGivenClass(page, styles, HtmlStyle.class);
+        getAllElementsOfGivenClass(page, scripts, HtmlScript.class);
+        assertEquals(5, styles.size());
+        assertEquals(2, scripts.size());
+        String[] styleValues = {
+              "color:red",
+              "color:blue",
+              "color:red",
+              "color:red",
+              "color:red"
+        };
+        String[] scriptValues = {
+              "var a = \"ss\";",
+              "var a = \"ss\";"
+        };
+
+        for (int i = 0, len = styles.size(); i < len; i++) {
+            assertTrue(styles.get(i).asXml().contains(styleValues[i]));
+        }
+        for (int i = 0, len = scripts.size(); i < len; i++) {
+            System.out.println(scripts.get(i).asXml());
+            assertTrue(scripts.get(i).asXml().contains(scriptValues[i]));
+        }
+
+        HtmlSubmitInput submit = (HtmlSubmitInput) getInputContainingGivenId(page, "form:submit");
+        page = submit.click();
+
+        styles.clear();
+        scripts.clear();
+        getAllElementsOfGivenClass(page, styles, HtmlStyle.class);
+        getAllElementsOfGivenClass(page, scripts, HtmlScript.class);
+        assertEquals(5, styles.size());
+        assertEquals(2, scripts.size());
+        for (int i = 0, len = styles.size(); i < len; i++) {
+            assertTrue(styles.get(i).asXml().contains(styleValues[i]));
+        }
+        for (int i = 0, len = scripts.size(); i < len; i++) {
+            assertTrue(scripts.get(i).asXml().contains(scriptValues[i]));
+        }
+    }
+
+
+    /**
+     * Added for issue 1290.
+     */
+    public void testCCParentExpressionEvaluationWithNestingLevels() throws Exception {
+
+        HtmlPage page = getPage("/faces/composite/nesting07.xhtml");
+        List<HtmlSpan> spans = new ArrayList<HtmlSpan>(4);
+        getAllElementsOfGivenClass(page, spans, HtmlSpan.class);
+
+        assertEquals(4, 4, spans.size());
+
+        final String[] expectedSpanValues = {
+              "A",  // runtime eval value
+              "A",  // tree creation eval value
+              "B",  // tree creation eval value
+              "C"   // tree creation eval value
+        };
+
+        for (int i = 0, len = spans.size(); i < len; i++) {
+            String spanText = spans.get(i).asText();
+            assertEquals("Index: "
+                         + i
+                         + ", expected: "
+                         + expectedSpanValues[i]
+                         + ", received: "
+                         + spanText,
+                         expectedSpanValues[i],
+                         spanText);
+        }
+
+        HtmlSubmitInput button = (HtmlSubmitInput) getInputContainingGivenId(page, "form:submit");
+        assertNotNull(button);
+
+        page = button.click();
+
+        spans.clear();
+        getAllElementsOfGivenClass(page, spans, HtmlSpan.class);
+        assertEquals(4, 4, spans.size());
+        for (int i = 0, len = spans.size(); i < len; i++) {
+            String spanText = spans.get(i).asText();
+            assertEquals("Index: "
+                         + i
+                         + ", expected: "
+                         + expectedSpanValues[i]
+                         + ", received: "
+                         + spanText,
+                         expectedSpanValues[i],
+                         spanText);
+        }
+
+    }
+
+
+    /**
+     * Added for issue 1298.
+     */
+    /*
+    public void testMethodExpressionNesting() throws Exception {
+
+        HtmlPage page = getPage("/faces/composite/nesting08.xhtml");
+
+        HtmlSubmitInput button = (HtmlSubmitInput) getInputContainingGivenId(page, "form:submit");
+        assertNotNull(button);
+
+        page = button.click();
+        assertTrue(page.asText().contains("Action invoked"));
+
+    }
+    */
+
+
+    public void testMethodExpressionDefaults() throws Exception {
+
+        HtmlPage page = getPage("/faces/composite/defaultAttributeMethodExpression.xhtml");
+        HtmlSubmitInput submit = (HtmlSubmitInput) getInputContainingGivenId(page, "def:form1:command");
+        page = submit.click();
+        assertTrue(page.asText().contains("Action invoked"));
+
+        page = getPage("/faces/composite/defaultAttributeMethodExpression.xhtml");
+        submit = (HtmlSubmitInput) getInputContainingGivenId(page, "def:form2:command2");
+        page = submit.click();
+        assertTrue(page.asText().contains("ActionListener invoked"));
+
+        page = getPage("/faces/composite/defaultAttributeMethodExpression.xhtml");
+        submit = (HtmlSubmitInput) getInputContainingGivenId(page, "def:form3:command3");
+        page = submit.click();
+        assertTrue(page.asText().contains("Custom action invoked"));
+
+        page = getPage("/faces/composite/defaultAttributeMethodExpression.xhtml");
+        submit = (HtmlSubmitInput) getInputContainingGivenId(page, "def:form4:command");
+        HtmlTextInput text = (HtmlTextInput) getInputContainingGivenId(page, "def:form4:input");
+        text.setValueAttribute("foo");
+        page = submit.click();
+        assertTrue(page.asText().contains("validator invoked"));
+
+        page = getPage("/faces/composite/defaultAttributeMethodExpression.xhtml");
+        submit = (HtmlSubmitInput) getInputContainingGivenId(page, "def:form5:command");
+        page = submit.click();
+        assertTrue(page.asText().contains("ValueChange invoked"));
+
+    }
+
+
+    public void testProgrammaticDefaultAttributeValueAccess() throws Exception {
+        HtmlPage page = getPage("/faces/composite/programmaticDefaultAttributeValueAccess.xhtml");
+        String pageText = page.asText();
+        assertTrue(pageText.contains("attr1 value is attr1Value. attr2 value is attr2Value."));
+        assertTrue(pageText.contains("attr3 value is"));
+        assertTrue(pageText.contains("action value is"));
+        assertTrue(pageText.contains("actionListener value is"));
+        assertTrue(pageText.contains("validator value is"));
+        assertTrue(pageText.contains("valueChangeListener value is"));
+    }
+
+    public void testMissingRequiredAttribute() throws Exception {
+//        client.setThrowExceptionOnFailingStatusCode(false);
+//        HtmlPage page = getPage("/faces/composite/requiredAttribute.xhtml");
+//        String text = page.asText();
+//        assertTrue(text.contains("<ez:required01>"));
+//        assertTrue(text.contains("The following attribute(s) are required, but no values have been supplied for them: table."));
+    }
+    
+    public void testMissingRequiredFacet() throws Exception {
+//        client.setThrowExceptionOnFailingStatusCode(false);
+//        HtmlPage page = getPage("/faces/composite/requiredFacet.xhtml");
+//        String text = page.asText();
+//        assertTrue(text.contains("The following facets(s) are required, but no facets have been supplied for them: table."));
+    }
+
+    public void testDefaultAttributeValueELOverrides() throws Exception {
+        HtmlPage page = getPage("/faces/composite/issue-1782-using.xhtml");
+        String text = page.asText();
+        System.out.println(text);
+        assertTrue(text.matches("(?s).*collapsable\\s=\\strue.*"));
+    }
+
+    public void testCCPreRenderViewEvent() throws Exception {
+        HtmlPage page = getPage("/faces/composite/1462-using.xhtml");
+        String text = page.asText();
+        System.out.println(text);
+        assertTrue(text.matches("(?s).*Message:.*Received.*event:.*javax.faces.event.PreRenderViewEvent.*for.*component:.*javax.faces.component.UIViewRoot.*"));
+
+    }
+
+    //issue 1696
+    public void testForNoNPE() throws Exception {
+//        HtmlPage page = getPage("/faces/composite/simpleCompositeComponentUsingPage.xhtml");
+//        List list = getAllElementsOfGivenClass(page, null,
+//                HtmlSubmitInput.class);
+//        HtmlSubmitInput button = (HtmlSubmitInput) list.get(0);
+//        page = (HtmlPage) button.click();
+//        String pageAsText = page.asText();
+//        assertTrue(pageAsText.contains("Unable to find matching navigation case with from-view-id " +
+//                "'/composite/simpleCompositeComponentUsingPage.xhtml' for action '#{hello.getNextAction}' " +
+//                "with outcome '/submit.xhtml'"));
+    }
+
+    public void testDefaultAttributeValues() throws Exception {
+        HtmlPage page = getPage("/faces/composite/defaultAttributesUsingPage.xhtml");
+        String pageAsText = page.asText();
+        assertTrue(pageAsText.contains("rendered=true"));
+        assertTrue(pageAsText.contains("foo=bar"));
+    }
+
+    // --------------------------------------------------------- Private Methods
+
+
+    private void validateChildrenAndFacets(List<HtmlSpan> spans) throws Exception {
+
+        String[] ids = new String[] {
+            "form:cf:outheader2",
+                  "form:cf:outheader",
+                  "form:cf:out1",
+                  "form:cf:out2",
+                  "ccCount",
+                  "header2Facet",
+                  "header1Facet"
+
+        };
+        String[] values = new String[] {
+              "Rendered",
+              "Inserted",
+              "v1",
+              "v2",
+              "0",
+              "true",
+              "true"
+        };
+
+        assertEquals(ids.length, spans.size());
+        for (int i = 0, len = ids.length; i < len; i++) {
+            HtmlSpan span = spans.get(i);
+            assertEquals(ids[i], span.getId());
+            assertEquals(values[i], span.asText());
+        }
+       
+    }
+
+
+    private void validateActionMessagePresent(HtmlPage page, String commandId)
+    throws Exception {
+
+        page = pushButton(page, commandId);
+        validateMessage(page, "Action Invoked", commandId);
+
+    }
+
+
+    private void validateValidatorMessagePresent(HtmlPage page, String commandId, String inputId)
+    throws Exception {
+
+        page = pushButton(page, commandId);
+        validateMessage(page, "Validator Invoked", inputId);
+
+    }
+
+
+    private void validateConverterMessages(HtmlPage page, String[] messageSuffixes) {
+
+        List<HtmlUnorderedList> list = new ArrayList<HtmlUnorderedList>();
+        getAllElementsOfGivenClass(page, list, HtmlUnorderedList.class);
+        HtmlUnorderedList ulist = list.get(0);
+        assertEquals("messages", ulist.getId());
+        int count = 0;
+
+        for (HtmlElement e : ulist.getAllHtmlChildElements()) {
+            if (count > messageSuffixes.length) {
+                fail("Expected only four message to be displayed");
+            }
+            String message = ("Converter Invoked : " + messageSuffixes[count]);
+            count++;
+            assertTrue(e instanceof HtmlListItem);
+            assertEquals(message, message, e.asText());
+        }
+
+        if (list.size() == 2) {
+            ulist = list.get(1);
+            for (HtmlElement e : ulist.getAllHtmlChildElements()) {
+                fail("Messages have been redisplayed");
+            }
+        }
+
+    }
+
+
+    private HtmlPage pushButton(HtmlPage page, String commandId)
+    throws Exception {
+
+        HtmlSubmitInput input = (HtmlSubmitInput)
+              getInputContainingGivenId(page, commandId);
+        assertNotNull(input);
+        return (HtmlPage) input.click();
+
+    }
+
+
+    private void validateMessage(HtmlPage page,
+                                 String messagePrefix,
+                                 String messageSuffix) {
+
+        List<HtmlUnorderedList> list = new ArrayList<HtmlUnorderedList>();
+        getAllElementsOfGivenClass(page, list, HtmlUnorderedList.class);
+        HtmlUnorderedList ulist = list.get(0);
+        assertEquals("messages", ulist.getId());
+        int count = 0;
+        String message = (messagePrefix + " : " + messageSuffix);
+        for (HtmlElement e : ulist.getAllHtmlChildElements()) {
+            if (count > 1) {
+                fail("Expected only one message to be displayed");
+            }
+            count++;
+            assertTrue(e instanceof HtmlListItem);
+            assertEquals(message, message, e.asText());
+        }
+
+        if (list.size() == 2) {
+            ulist = list.get(1);
+            for (HtmlElement e : ulist.getAllHtmlChildElements()) {
+                fail("Messages have been redisplayed");
+            }
+        }
+
+
+    }
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/composite/CompositeComponentsWithEE6DependenciesITCase.java b/test/servlet30/systest/src/test/java/com/sun/faces/composite/CompositeComponentsWithEE6DependenciesITCase.java
new file mode 100644
index 0000000..18a1847
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/composite/CompositeComponentsWithEE6DependenciesITCase.java
@@ -0,0 +1,155 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.composite;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import com.sun.faces.htmlunit.HtmlUnitFacesITCase;
+import com.gargoylesoftware.htmlunit.html.*;
+
+import java.util.List;
+import java.util.ArrayList;
+
+/**
+ * Unit tests for Composite Components.
+ */
+public class CompositeComponentsWithEE6DependenciesITCase extends HtmlUnitFacesITCase {
+
+
+    @SuppressWarnings({"UnusedDeclaration"})
+    public CompositeComponentsWithEE6DependenciesITCase() {
+        this("CompositeComponentsTestCaseWithEE6Dependencies");
+    }
+
+    public CompositeComponentsWithEE6DependenciesITCase(String name) {
+        super(name);
+    }
+
+
+    /**
+     * Set up instance variables required by this test case.
+     */
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+
+
+    /**
+     * Return the tests included in this test suite.
+     */
+    public static Test suite() {
+        return (new TestSuite(CompositeComponentsWithEE6DependenciesITCase.class));
+    }
+
+
+    /**
+     * Tear down instance variables required by this test case.
+     */
+    public void tearDown() {
+        super.tearDown();
+    }
+    
+
+    // -------------------------------------------------------------- Test Cases
+
+    /**
+     * Added for issue 1318.
+     */
+    public void testIssue1318() throws Exception {
+
+        HtmlPage page = getPage("/faces/composite/issue1318.xhtml");
+        HtmlSubmitInput button = (HtmlSubmitInput) getInputContainingGivenId(page, "form:arg:n1:n2:command");
+        assertNotNull(button);
+        page = button.click();
+        String message = "Action invoked: form:arg:n1:n2:command, arg1: Hello, arg2: World!";
+        assertTrue(page.asText().contains(message));
+        
+    }
+
+    public void testCompositeComponentActionWithArgs() throws Exception {
+
+        HtmlPage page = getPage("/faces/composite/compActionWithArgs.xhtml");
+        HtmlSubmitInput button = (HtmlSubmitInput) getInputContainingGivenId(page, "n:form:command");
+        assertNotNull(button);
+        page = button.click();
+        String message = "Custom action invoked: c:n:form:command, arg1: arg1, arg2: arg2";
+        assertTrue(page.asText().contains(message));
+
+    }
+
+
+    public void testCompositeComponentAttributeWithArgs() throws Exception {
+
+        HtmlPage page = getPage("/faces/composite/compAttributeWithArgs.xhtml");
+        String message = "arg: arg1";
+        assertTrue(page.asText().contains(message));
+
+    }
+
+    public void testCompositeComponentAttributeRequired() throws Exception {
+
+        HtmlPage page = getPage("/faces/composite/compAttributeRequired.xhtml");
+        String message = "xx1:0xx";
+        assertTrue(page.asText().contains(message));
+
+        page = getPage("/faces/composite/compAttributeRequiredNullValue.xhtml");
+        message = "xx:0xx";
+        assertTrue(page.asText().contains(message));
+
+        page = getPage("/faces/composite/compAttributeRequiredLiteral.xhtml");
+        message = "xx2:0xx";
+        assertTrue(page.asText().contains(message));
+    }
+
+    public void testInvalidArgsToCCExpression() throws Exception {
+
+        client.setThrowExceptionOnFailingStatusCode(false);
+        HtmlPage page = getPage("/faces/composite/invalidMeArgs.xhtml");
+        assertTrue(page.asText().contains("value=\"#{cc.attrs.custom(cc.attrs.arg1)}\" Illegal attempt to pass arguments to a composite component lookup expression"));
+
+        page = getPage("/faces/composite/invalidVeArgs.xhtml");
+        assertTrue(page.asText().contains("value=\"#{cc.attrs.bean(cc.attrs.arg1)}\" Illegal attempt to pass arguments to a composite component lookup expression"));
+    }
+
+
+
+
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/composite/DefaultActionITCase.java b/test/servlet30/systest/src/test/java/com/sun/faces/composite/DefaultActionITCase.java
new file mode 100644
index 0000000..fbd153b
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/composite/DefaultActionITCase.java
@@ -0,0 +1,100 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.composite;
+
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import com.sun.faces.htmlunit.HtmlUnitFacesITCase;
+
+
+/**
+ * Unit tests for Composite Components.
+ */
+public class DefaultActionITCase extends HtmlUnitFacesITCase {
+
+
+    public DefaultActionITCase() {
+        this("ResourceDependencyComponentTestCase");
+    }
+
+    public DefaultActionITCase(String name) {
+        super(name);
+    }
+
+
+    /**
+     * Set up instance variables required by this test case.
+     */
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+
+
+    /**
+     * Return the tests included in this test suite.
+     */
+    public static Test suite() {
+        return (new TestSuite(DefaultActionITCase.class));
+    }
+
+
+    /**
+     * Tear down instance variables required by this test case.
+     */
+    public void tearDown() {
+        super.tearDown();
+    }
+    
+
+    // -------------------------------------------------------------- Test Cases
+
+    public void testDefaultAction() throws Exception {
+        HtmlPage page = getPage("/faces/composite/defaultActionUsingPage.xhtml");
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("ccTag:loginButton");
+        page = button.click();
+        assertTrue(page.asText().contains("defaultActionNext"));
+    }
+
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/composite/JavaTopLevelActionListenerComponentITCase.java b/test/servlet30/systest/src/test/java/com/sun/faces/composite/JavaTopLevelActionListenerComponentITCase.java
new file mode 100644
index 0000000..7822301
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/composite/JavaTopLevelActionListenerComponentITCase.java
@@ -0,0 +1,104 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.composite;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+import com.gargoylesoftware.htmlunit.html.HtmlInput;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.sun.faces.htmlunit.HtmlUnitFacesITCase;
+
+
+/**
+ * Unit tests for Composite Components.
+ */
+public class JavaTopLevelActionListenerComponentITCase extends HtmlUnitFacesITCase {
+
+
+    public JavaTopLevelActionListenerComponentITCase() {
+        this("JavaTopLevelActionListenerComponentTestCase");
+    }
+
+    public JavaTopLevelActionListenerComponentITCase(String name) {
+        super(name);
+    }
+
+
+    /**
+     * Set up instance variables required by this test case.
+     */
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+
+
+    /**
+     * Return the tests included in this test suite.
+     */
+    public static Test suite() {
+        return (new TestSuite(JavaTopLevelActionListenerComponentITCase.class));
+    }
+
+
+    /**
+     * Tear down instance variables required by this test case.
+     */
+    public void tearDown() {
+        super.tearDown();
+    }
+    
+
+    // -------------------------------------------------------------- Test Cases
+
+    public void testActionListeningComponentWasInvokedSuccessFully() throws Exception {
+        HtmlPage page = getPage("/faces/composite/javaTopLevelActionListenerComponentUsingPage.xhtml");
+        HtmlInput htmlInput = getInputContainingGivenId(page, "loginAction");
+        HtmlPage newPage = htmlInput.click();
+        String text = newPage.asText();
+        assertTrue(-1 != text.indexOf("javax.faces.Command"));
+        assertTrue(-1 != text.indexOf("Action was processed successfully"));
+    }
+
+
+
+
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/composite/JavaTopLevelComponentITCase.java b/test/servlet30/systest/src/test/java/com/sun/faces/composite/JavaTopLevelComponentITCase.java
new file mode 100644
index 0000000..3d31552
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/composite/JavaTopLevelComponentITCase.java
@@ -0,0 +1,117 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.composite;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import com.sun.faces.htmlunit.HtmlUnitFacesITCase;
+import com.gargoylesoftware.htmlunit.html.*;
+
+
+/**
+ * Unit tests for Composite Components.
+ */
+public class JavaTopLevelComponentITCase extends HtmlUnitFacesITCase {
+
+
+    public JavaTopLevelComponentITCase() {
+        this("JavaTopLevelComponentTestCase");
+    }
+
+    public JavaTopLevelComponentITCase(String name) {
+        super(name);
+    }
+
+
+    /**
+     * Set up instance variables required by this test case.
+     */
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+
+
+    /**
+     * Return the tests included in this test suite.
+     */
+    public static Test suite() {
+        return (new TestSuite(JavaTopLevelComponentITCase.class));
+    }
+
+
+    /**
+     * Tear down instance variables required by this test case.
+     */
+    public void tearDown() {
+        super.tearDown();
+    }
+    
+
+    // -------------------------------------------------------------- Test Cases
+
+    public void testJavaBeanPropertyOnTopLevelComponentHasExpectedValue() throws Exception {
+//
+//        HtmlPage page = getPage("/faces/composite/javaTopLevelComponentUsingPage.xhtml?q=foo");
+//        String text = page.asText();
+//        assertTrue(-1 != text.indexOf("Get out java property of type String Smallberries"));
+//        assertTrue(-1 != text.indexOf("Get out java property of type int 5"));
+    }
+
+    public void testDefaultActionAttribute() throws Exception {
+//
+//        HtmlPage page = getPage("/faces/composite/javaTopLevelComponentUsingPage.xhtml?q=foo");
+//        HtmlSubmitInput button = (HtmlSubmitInput)
+//                getInputContainingGivenId(page, "loginPanel1:loginAction");
+//        page = button.click();
+//        String text = page.asText();
+//        assertTrue(-1 != text.indexOf("Made it to page 2"));
+//
+    }
+
+    public void testDefaultAttribute() throws Exception {
+//
+//        HtmlPage page = getPage("/faces/composite/defaultAttributeValuesUsingPage.xhtml");
+//        String text = page.asXml();
+//        assertTrue(-1 != text.indexOf("User ID:"));
+//        assertTrue(-1 != text.indexOf("value=\"Login"));
+    }
+    
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/composite/ResourceDependencyComponentITCase.java b/test/servlet30/systest/src/test/java/com/sun/faces/composite/ResourceDependencyComponentITCase.java
new file mode 100644
index 0000000..b2b9785
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/composite/ResourceDependencyComponentITCase.java
@@ -0,0 +1,117 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.composite;
+
+import org.w3c.dom.NodeList;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+import com.gargoylesoftware.htmlunit.html.HtmlInput;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.sun.faces.htmlunit.HtmlUnitFacesITCase;
+
+
+/**
+ * Unit tests for Composite Components.
+ */
+public class ResourceDependencyComponentITCase extends HtmlUnitFacesITCase {
+
+
+    public ResourceDependencyComponentITCase() {
+        this("ResourceDependencyComponentTestCase");
+    }
+
+    public ResourceDependencyComponentITCase(String name) {
+        super(name);
+    }
+
+
+    /**
+     * Set up instance variables required by this test case.
+     */
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+
+
+    /**
+     * Return the tests included in this test suite.
+     */
+    public static Test suite() {
+        return (new TestSuite(ResourceDependencyComponentITCase.class));
+    }
+
+
+    /**
+     * Tear down instance variables required by this test case.
+     */
+    public void tearDown() {
+        super.tearDown();
+    }
+    
+
+    // -------------------------------------------------------------- Test Cases
+
+    public void testForwardingToNextPageProcessesResourceDependencies() throws Exception {
+        HtmlPage page = getPage("/faces/composite/resourceDependencyComponentUsingPage.xhtml");
+        assertNrOfLinksPresent(page, 1);
+        HtmlInput button = getInputContainingGivenId(page, "navigateAway");
+        page = button.click();
+        assertTrue(-1 != page.asText().indexOf("Next page"));
+        assertNrOfLinksPresent(page, 1);
+    }
+    
+    public void testStayingOnSamePageProcessesResourceDependencies() throws Exception {
+        HtmlPage page = getPage("/faces/composite/resourceDependencyComponentUsingPage.xhtml");
+        assertNrOfLinksPresent(page, 1);
+        HtmlInput button = getInputContainingGivenId(page, "stay");
+        page = button.click();
+        assertTrue(-1 != page.asText().indexOf("Using page"));
+        assertNrOfLinksPresent(page, 1);
+    }
+
+    private void assertNrOfLinksPresent(HtmlPage page, int number) {
+        NodeList nodeList = page.getElementsByTagName("link");
+        assertEquals(1, nodeList.getLength());
+    }
+
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/composite/ValueChangeListenerSetPropertyActionListener01ITCase.java b/test/servlet30/systest/src/test/java/com/sun/faces/composite/ValueChangeListenerSetPropertyActionListener01ITCase.java
new file mode 100644
index 0000000..0ff5dd4
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/composite/ValueChangeListenerSetPropertyActionListener01ITCase.java
@@ -0,0 +1,136 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.composite;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import com.sun.faces.htmlunit.HtmlUnitFacesITCase;
+import com.gargoylesoftware.htmlunit.html.*;
+
+
+/**
+ * Unit tests for Composite Components.
+ */
+public class ValueChangeListenerSetPropertyActionListener01ITCase extends HtmlUnitFacesITCase {
+
+
+    public ValueChangeListenerSetPropertyActionListener01ITCase() {
+        this("ValueChangeListenerSetPropertyActionListener01TestCase");
+    }
+
+    public ValueChangeListenerSetPropertyActionListener01ITCase(String name) {
+        super(name);
+    }
+
+
+    /**
+     * Set up instance variables required by this test case.
+     */
+    @Override
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+
+
+    /**
+     * Return the tests included in this test suite.
+     */
+    public static Test suite() {
+        return (new TestSuite(ValueChangeListenerSetPropertyActionListener01ITCase.class));
+    }
+
+
+    /**
+     * Tear down instance variables required by this test case.
+     */
+    @Override
+    public void tearDown() {
+        super.tearDown();
+    }
+    
+
+    // -------------------------------------------------------------- Test Cases
+
+    /**
+     * <p>
+     *  Maps ActionListener to commandButton within composite/actionSource1.xhtml using
+     *   only the name attribute.
+     * </p>
+     */
+    public void testValueChangeActionListener() throws Exception {
+
+        HtmlPage page = getPage("/faces/composite/valueChangeListenerSetPropertyActionListener01.xhtml");
+        HtmlInput input = getInputContainingGivenId(page, "form:composite:value");
+        input.setValueAttribute("Cause A ValueChangeEvent");
+        HtmlSubmitInput button = (HtmlSubmitInput)
+                getInputContainingGivenId(page, "form:composite:submit");
+        page = button.click();
+        String pageText = page.asText();
+
+        assertTrue(-1 != pageText.indexOf("ValueChangeSetPropertyActionListenerBean.processValueChange called"));
+
+        String searchString = "Property set by setPropertyActionListener:";
+        int searchStringLength = searchString.length(), i = 0, j = 0;
+        long lesser, greater;
+
+        // Get the value of the property set by the setPropertyActionListener
+        assertTrue(-1 != (i = pageText.indexOf(searchString)));
+        i += searchStringLength;
+        assertTrue(-1 != (j = pageText.indexOf(";", i)));
+        lesser = Long.valueOf(pageText.substring(i, j));
+
+        // Get the value of the currentTimeMillis at the time the page rendered
+        searchString = "System.currentTimeMillis():";
+        searchStringLength = searchString.length();
+        assertTrue(-1 != (i = pageText.indexOf(searchString)));
+        i += searchStringLength;
+        assertTrue(-1 != (j = pageText.indexOf(";", i)));
+        greater = Long.valueOf(pageText.substring(i, j));
+
+        assertTrue(lesser < greater);
+
+        
+
+
+    }
+
+
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/event/DynamicAddITCase.java b/test/servlet30/systest/src/test/java/com/sun/faces/event/DynamicAddITCase.java
new file mode 100644
index 0000000..2e73b2d
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/event/DynamicAddITCase.java
@@ -0,0 +1,210 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.event;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import com.sun.faces.htmlunit.HtmlUnitFacesITCase;
+import com.gargoylesoftware.htmlunit.html.*;
+import java.util.regex.Pattern;
+
+
+/**
+ * Unit tests for Composite Components.
+ */
+public class DynamicAddITCase extends HtmlUnitFacesITCase {
+
+
+    public DynamicAddITCase() {
+        this("VerifyBuildBeforeRestoreTestCase");
+    }
+
+    public DynamicAddITCase(String name) {
+        super(name);
+    }
+
+
+    /**
+     * Set up instance variables required by this test case.
+     */
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+
+
+    /**
+     * Return the tests included in this test suite.
+     */
+    public static Test suite() {
+        return (new TestSuite(DynamicAddITCase.class));
+    }
+
+
+    /**
+     * Tear down instance variables required by this test case.
+     */
+    public void tearDown() {
+        super.tearDown();
+    }
+    
+
+    // -------------------------------------------------------------- Test Cases
+
+    public void testVerifyDynamicAdd() throws Exception {
+
+        HtmlPage page = getPage("/faces/dynamicComponents.xhtml");
+        String text = page.asXml();
+        assertTrue(Pattern.matches("(?s).*\\s*<ul>\\s*\\s*<p>\\s*Dynamic Component dynamic1\\s*<ul>\\s*\\s*<p>\\s*Dynamic Component dynamic2\\s*<ul>\\s*\\s*<p>\\s*Dynamic Component dynamic3\\s*<ul>\\s*\\s*<p>\\s*Dynamic Component dynamic4\\s*<ul>\\s*\\s*<p>\\s*Dynamic Component dynamic5\\s*</p>\\s*\\s*</ul>\\s*\\s*</p>\\s*\\s*</ul>\\s*\\s*</p>\\s*\\s*</ul>\\s*\\s*</p>\\s*\\s*</ul>\\s*\\s*</p>\\s*\\s*</ul>\\s*.*",
+                text));
+
+    }
+
+    public void testDynamicAddHandlesViewIdChanges() throws Exception {
+
+        HtmlPage page = getPage("/faces/dynamicComponents00.xhtml");
+        String text;
+        HtmlSubmitInput button = (HtmlSubmitInput)
+                this.getInputContainingGivenId(page, "next");
+        page = button.click();
+        button = (HtmlSubmitInput)
+                this.getInputContainingGivenId(page, "thisAgain");
+        page = button.click();
+        button = (HtmlSubmitInput)
+                this.getInputContainingGivenId(page, "thisAgain");
+        page = button.click();
+        text = page.asXml();
+        assertTrue(text.contains("Dynamic Component dynamic1"));
+        button = (HtmlSubmitInput)
+                this.getInputContainingGivenId(page, "next");
+        page = button.click();
+        text = page.asXml();
+        assertTrue(page.asXml().contains("no dynamic component"));
+    }
+
+
+    public void testToggle() throws Exception {
+        HtmlPage page = getPage("/faces/dynamicComponents_toggle.xhtml");
+        String text = page.asText();
+        assertTrue(text.indexOf("Manually added child 2") < text.indexOf("Manually added child 1"));
+        HtmlSubmitInput button = (HtmlSubmitInput)
+                this.getInputContainingGivenId(page, "button");
+        page = button.click();
+        text = page.asText();
+        //toggling is not happening consistently. hence commenting out the assertion
+        //assertTrue(text.indexOf("Manually added child 1") < text.indexOf("Manually added child 2"));
+    }
+
+    public void testRecursive() throws Exception {
+        HtmlPage page = getPage("/faces/dynamicComponents_recursive.xhtml");
+        String text = page.asText();
+        int first = text.indexOf("Dynamically");
+        int next = text.indexOf("Dynamically", first + ("Dynamically").length());
+        assertTrue(first < next);
+        HtmlSubmitInput button = (HtmlSubmitInput) this.getInputContainingGivenId(page, "button");
+        page = button.click();
+        text = page.asText();
+        first = text.indexOf("Dynamically");
+        next = text.indexOf("Dynamically", first + ("Dynamically").length());
+        assertTrue(first < next);
+    }
+
+     public void testStable() throws Exception {
+        HtmlPage page = getPage("/faces/dynamicComponents_stable.xhtml");
+         String text;
+         
+        HtmlSubmitInput button = (HtmlSubmitInput)
+                this.getInputContainingGivenId(page, "button");
+        page = button.click();
+        text = page.asText();
+        assertTrue(text.contains("text3: Validation Error: Value is required."));
+    }
+
+    public void testTable() throws Exception {
+        HtmlPage page = getPage("/faces/dynamicComponents_table.xhtml");
+        String text = page.asText();
+        assertTrue(text.matches("(?s).*TestComponent::encodeBegin\\s*Foo\\s*Bar\\s*Baz\\s*TestComponent::encodeEnd.*"));
+        HtmlSubmitInput button = (HtmlSubmitInput)
+                this.getInputContainingGivenId(page, "button");
+        page = button.click();
+        text = page.asText();
+        assertTrue(text.matches("(?s).*TestComponent::encodeBegin\\s*Foo\\s*Bar\\s*Baz\\s*TestComponent::encodeEnd.*"));
+    }
+
+    public void testChildren() throws Exception {
+        HtmlPage page = getPage("/faces/dynamicComponents_2119.xhtml");
+        HtmlSubmitInput button = (HtmlSubmitInput)
+            this.getInputContainingGivenId(page, "postback");
+        page = button.click();
+        String text = page.asText();
+        assertTrue(text.matches("(?s).*TestComponent::encodeBegin\\s*NEW-OUTPUT\\s*TestComponent::encodeEnd.*"));
+        button = (HtmlSubmitInput)
+            this.getInputContainingGivenId(page, "postback");
+        page = button.click();
+        text = page.asText();
+        assertTrue(text.matches("(?s).*TestComponent::encodeBegin\\s*NEW-OUTPUT\\s*TestComponent::encodeEnd.*"));
+
+    }
+
+    public void testMultipleAdds() throws Exception {
+        HtmlPage page = getPage("/faces/dynamicComponents_2121.xhtml");
+        HtmlSubmitInput button = (HtmlSubmitInput)
+            this.getInputContainingGivenId(page, "add");
+        page = button.click();
+        String text = page.asText();
+        assertTrue(text.endsWith("AddComponentOUTPUT"));
+        button = (HtmlSubmitInput)
+            this.getInputContainingGivenId(page, "add");
+        page = button.click();
+        text = page.asText();
+        assertTrue(text.endsWith("AddComponentOUTPUTOUTPUT"));
+
+    }
+
+    public void testEventsPublishedAfterAddBeforeRender() throws Exception {
+        HtmlPage page = getPage("/faces/publishEvents.xhtml");
+        String text = page.asText();
+        assertTrue(text.contains("componentWithListener : Event: javax.faces.event.PostAddToViewEvent"));
+        assertTrue(text.contains("componentWithListener : Event: javax.faces.event.PreRenderViewEvent"));
+        assertTrue(!text.contains("componentWithNoListener"));
+    }
+
+
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/event/ValueChangeListenerCalledITCase.java b/test/servlet30/systest/src/test/java/com/sun/faces/event/ValueChangeListenerCalledITCase.java
new file mode 100644
index 0000000..84d1b12
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/event/ValueChangeListenerCalledITCase.java
@@ -0,0 +1,127 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.event;
+
+import com.gargoylesoftware.htmlunit.html.HtmlAnchor;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
+//import com.gargoylesoftware.htmlunit.javascript.host.HTMLAnchorElement;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import com.sun.faces.htmlunit.HtmlUnitFacesITCase;
+
+
+/**
+ * Unit tests for Composite Components.
+ */
+public class ValueChangeListenerCalledITCase extends HtmlUnitFacesITCase {
+
+
+    public ValueChangeListenerCalledITCase() {
+        this("ValueChangeListenerCalledTestCase");
+    }
+
+    public ValueChangeListenerCalledITCase(String name) {
+        super(name);
+    }
+
+
+    /**
+     * Set up instance variables required by this test case.
+     */
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+
+
+    /**
+     * Return the tests included in this test suite.
+     */
+    public static Test suite() {
+        return (new TestSuite(ValueChangeListenerCalledITCase.class));
+    }
+
+
+    /**
+     * Tear down instance variables required by this test case.
+     */
+    public void tearDown() {
+        super.tearDown();
+    }
+    
+
+    // -------------------------------------------------------------- Test Cases
+
+    public void testValueChangeListenerCalled() throws Exception {
+
+        HtmlPage page = getPage("/faces/listener-1729.xhtml");
+        HtmlTextInput textField = (HtmlTextInput) page.getElementById("test");
+        textField.setValueAttribute("0");
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("button");
+        page = button.click();
+        String text = page.asText();
+        String currentTime = "" + System.currentTimeMillis();
+        currentTime = currentTime.substring(0, 7);
+System.out.println("TEXT:"+text);
+System.out.println("CURRENTTIME:"+currentTime);
+        assertTrue(text.contains("Aufgerufen: " + currentTime));
+        assertTrue(text.contains("Hello from processValueChange: " + currentTime));
+
+        textField = (HtmlTextInput) page.getElementById("test");
+        textField.setValueAttribute("3");
+        HtmlAnchor anchor = (HtmlAnchor) page.getElementById("link");
+        page = anchor.click();
+        text = page.asText();
+        currentTime = "" + System.currentTimeMillis();
+        currentTime = currentTime.substring(0, 7);
+System.out.println("TEXT:"+text);
+System.out.println("CURRENTTIME:"+currentTime);
+        assertTrue(text.contains("Aufgerufen: " + currentTime));
+        assertTrue(text.contains("Hello from processValueChange: " + currentTime));
+
+
+    }
+
+}
+
+    
+
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/event/VerifyBuildBeforeRestoreITCase.java b/test/servlet30/systest/src/test/java/com/sun/faces/event/VerifyBuildBeforeRestoreITCase.java
new file mode 100644
index 0000000..0000529
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/event/VerifyBuildBeforeRestoreITCase.java
@@ -0,0 +1,105 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.event;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import com.sun.faces.htmlunit.HtmlUnitFacesITCase;
+import com.gargoylesoftware.htmlunit.html.*;
+
+
+/**
+ * Unit tests for Composite Components.
+ */
+public class VerifyBuildBeforeRestoreITCase extends HtmlUnitFacesITCase {
+
+
+    public VerifyBuildBeforeRestoreITCase() {
+        this("VerifyBuildBeforeRestoreTestCase");
+    }
+
+    public VerifyBuildBeforeRestoreITCase(String name) {
+        super(name);
+    }
+
+
+    /**
+     * Set up instance variables required by this test case.
+     */
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+
+
+    /**
+     * Return the tests included in this test suite.
+     */
+    public static Test suite() {
+        return (new TestSuite(VerifyBuildBeforeRestoreITCase.class));
+    }
+
+
+    /**
+     * Tear down instance variables required by this test case.
+     */
+    public void tearDown() {
+        super.tearDown();
+    }
+    
+
+    // -------------------------------------------------------------- Test Cases
+
+    public void testVerifyBuildBeforeRestore() throws Exception {
+
+        if (Boolean.TRUE.equals(Boolean.valueOf(System.getProperty("partial.state.saving")))) {
+            HtmlPage page = getPage("/faces/regression/verifyBuildBeforeRestore.xhtml");
+            HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("submit");
+
+            page = button.click();
+            String text = page.asText();
+            assertTrue(text.contains("Message: javax.faces.event.PostAddToViewEvent javax.faces.event.PostRestoreStateEvent"));
+            page = getPage("/faces/regression/uninstallListeners.xhtml");
+        }
+
+    }
+
+    
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/facelets/FaceletsITCase.java b/test/servlet30/systest/src/test/java/com/sun/faces/facelets/FaceletsITCase.java
new file mode 100644
index 0000000..23a0f46
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/facelets/FaceletsITCase.java
@@ -0,0 +1,478 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.facelets;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import com.gargoylesoftware.htmlunit.html.HtmlElement;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSpan;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import com.gargoylesoftware.htmlunit.html.HtmlAnchor;
+import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
+import com.gargoylesoftware.htmlunit.html.HtmlUnorderedList;
+import com.gargoylesoftware.htmlunit.html.HtmlDivision;
+import com.sun.faces.htmlunit.HtmlUnitFacesITCase;
+import java.io.BufferedReader;
+import java.io.BufferedWriter;
+import java.io.InputStreamReader;
+import java.io.OutputStreamWriter;
+import java.net.Socket;
+import java.net.URL;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+
+/**
+ * Test cases for Facelets functionality
+ */
+public class FaceletsITCase extends HtmlUnitFacesITCase {
+
+
+    // --------------------------------------------------------------- Test Init
+
+
+    public FaceletsITCase() {
+        this("FaceletsTestCase");
+    }
+
+
+    public FaceletsITCase(String name) {
+        super(name);
+    }
+
+
+    /**
+     * Set up instance variables required by this test case.
+     */
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+
+
+    /**
+     * Return the tests included in this test suite.
+     */
+    public static Test suite() {
+        return (new TestSuite(FaceletsITCase.class));
+    }
+
+
+    /**
+     * Tear down instance variables required by this test case.
+     */
+    public void tearDown() {
+        super.tearDown();
+    }
+
+
+    // ------------------------------------------------------------ Test Methods
+
+
+    /*
+     * Added for issue 917.
+     */
+    public void testSetPropertyActionListener1() throws Exception {
+
+        HtmlPage page = getPage("/faces/facelets/setpropertyactionlistener1.xhtml") ;
+
+        // verify the output is initially null
+        List<HtmlSpan> output = new ArrayList<HtmlSpan>(1);
+        getAllElementsOfGivenClass(page, output, HtmlSpan.class);
+        assertTrue(!output.isEmpty());
+        HtmlSpan span = output.get(0);
+        assertTrue("Expected: 'Current Name: ', Received: '"+span.asText()+"'","Current Name:".equals(span.asText()));
+
+        // click the commandLink with a nested setPropertyActionListener
+        // to cause the name attribute in the session to be populated.
+        HtmlElement clink = page.getHtmlElementById("form:s1");
+        assertNotNull(clink);
+        page = (HtmlPage) ((HtmlSubmitInput) clink).click();
+        output.clear();
+        getAllElementsOfGivenClass(page, output, HtmlSpan.class);
+        assertTrue(!output.isEmpty());
+        span = output.get(0);
+        assertTrue("Current Name: Mojarra".equals(span.asText()));
+
+        // click the commandButton with a nested setPropertyActionListener
+        // to cause the name attribute in the session to be cleared
+        HtmlElement cbutton = page.getHtmlElementById("form:s2");
+        assertNotNull(clink);
+        page = (HtmlPage) ((HtmlAnchor) cbutton).click();
+        output.clear();
+        getAllElementsOfGivenClass(page, output, HtmlSpan.class);
+        assertTrue(!output.isEmpty());
+        span = output.get(0);
+        assertTrue("Current Name:".equals(span.asText()));
+        
+    }
+
+    /*
+     * Verify #{component} and #{cc} expressions evaluate
+     * at build time.
+     * @throws Exception
+     */
+    public void testComponentELAtBuildTime() throws Exception {
+
+        HtmlPage page = getPage("/faces/facelets/componentELAtBuildTime.xhtml") ;
+
+        // verify the output is initially null
+        List<HtmlSpan> output = new ArrayList<HtmlSpan>(4);
+        getAllElementsOfGivenClass(page, output, HtmlSpan.class);
+        assertTrue(output.size() == 3);
+        for (HtmlSpan span : output) {
+            assertTrue("PASSED".equals(span.asText()));
+        }
+
+    }
+
+
+    /**
+     * Ensure attributes that evaluate EL expressions only render the attribute
+     * name/value pair when the value is non-null.
+     *
+     * https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=940
+     */ 
+    public void testConditionalAttributeRendering() throws Exception {
+
+        HtmlPage page = getPage("/faces/facelets/conditionalCCAttributeRendering.xhtml") ;
+
+        // verify the output is initially null
+        List<HtmlSpan> output = new ArrayList<HtmlSpan>(1);
+        getAllElementsOfGivenClass(page, output, HtmlSpan.class);
+        assertTrue(output.size() == 1);
+        HtmlSpan span = output.get(0);
+        assertTrue(span.getStyleAttribute().length() == 0);
+        HtmlSubmitInput add = (HtmlSubmitInput) getInputContainingGivenId(page, "form:add");
+        page = add.click();
+
+        // ensure the span is now styled since there is a non-null value available.
+        output.clear();
+        getAllElementsOfGivenClass(page, output, HtmlSpan.class);
+        assertTrue(output.size() == 1);
+        span = output.get(0);
+        assertEquals("color:red", span.getStyleAttribute());
+
+        // ensure the style is not rendered once again after the attribute value
+        // is set to "".
+        HtmlSubmitInput remove = (HtmlSubmitInput) getInputContainingGivenId(page, "form:remove");
+        page = remove.click();
+        output.clear();
+        getAllElementsOfGivenClass(page, output, HtmlSpan.class);
+        assertTrue(output.size() == 1);
+        span = output.get(0);
+        assertTrue(span.getStyleAttribute().length() == 0);
+
+    }
+
+    public void testTemplateComp() throws Exception {
+        lastpage = getPage("/faces/facelets/templateComp.xhtml");
+
+        assertTrue("Template Test".equals(lastpage.getTitleText()));
+
+        String templateText = lastpage.getElementById("templateText").getTextContent();
+        assertTrue("Template text".equals(templateText));
+
+        String toplevelContent = lastpage.getElementById("toplevelContent").getTextContent();
+        assertTrue("Inserted Content".equals(toplevelContent));
+    }
+
+    public void testTemplateDecorate() throws Exception {
+        lastpage = getPage("/faces/facelets/templateDecorate.xhtml");
+
+        assertTrue("Decorate Test".equals(lastpage.getTitleText()));
+
+        String templateText = lastpage.getElementById("comp").getTextContent();
+        assertTrue("Composition Text".equals(templateText));
+
+        String toplevelContent = lastpage.getElementById("insert").getTextContent();
+        assertTrue("Inserted Text".equals(toplevelContent));
+    }
+
+
+    public void testValidatorWrappingNestingDisableHandling() throws Exception {
+
+        HtmlPage page = getPage("/faces/facelets/validatorDisabled.xhtml");
+        HtmlTextInput input = (HtmlTextInput) getInputContainingGivenId(page, "form1:input");
+        assertNotNull(input);
+        input.setValueAttribute("aaaa");
+        HtmlSubmitInput submit = (HtmlSubmitInput) getInputContainingGivenId(page, "form1:sub");
+        page = submit.click();
+
+        HtmlUnorderedList list = (HtmlUnorderedList) page.getElementById("form1:messages1");
+        int count = 0;
+        for (HtmlElement element : list.getAllHtmlChildElements()) {
+            count++;
+            assertEquals("form1:input: Validation Error: Length is less than allowable minimum of '5'", element.asText());
+            if (count > 1) {
+                fail("Expected a single validation failure");
+            }
+        }
+
+        page = getPage("/faces/facelets/validatorDisabled.xhtml");
+        HtmlTextInput input1 = (HtmlTextInput) getInputContainingGivenId(page, "form2:input1");
+        HtmlTextInput input2 = (HtmlTextInput) getInputContainingGivenId(page, "form2:input2");
+        input1.setValueAttribute("aaaa");
+        input2.setValueAttribute("aaaa");
+        submit = (HtmlSubmitInput) getInputContainingGivenId(page, "form2:sub");
+        page = submit.click();
+
+        HtmlElement list1 = page.getElementById("form2:messages2");
+        assertTrue(list1 instanceof HtmlDivision); // if it's not, it means messages where displayed
+        HtmlUnorderedList list2 = (HtmlUnorderedList) page.getElementById("form2:messages3");
+        assertFalse(list1.getAllHtmlChildElements().iterator().hasNext());
+        count = 0;
+        for (HtmlElement element : list2.getAllHtmlChildElements()) {
+            count++;
+            assertEquals("form2:input2: Validation Error: Length is less than allowable minimum of '5'", element.asText());
+            if (count > 1) {
+                fail("Expected a single validation failure");
+            }
+        }
+    }
+
+
+    
+
+
+    /**
+     * Added for issue 1202.  Ensure duplicate phase listeners aren't registered
+     * when using f:phaseListener and partial state saving is enabled (which is
+     * the default for systest).
+     */
+    public void testPhaseListenerRegistration() throws Exception {
+        // moved to new harness, see issue #2848
+    }
+
+    public void testWhen() throws Exception {
+        HtmlPage page = getPage("/faces/facelets/when.xhtml");
+        String text = page.asText();
+        assertTrue(text.contains("size = 1"));
+        assertTrue(text.contains("isEmpty = false"));
+        assertTrue(text.contains("there is some!!!"));
+        assertTrue(text.contains("there is some (really)!!!"));
+
+    }
+
+
+    /**
+     * Added for issue 1552.
+     */
+    public void testModeratelyComplexTemplating() throws Exception {
+        HtmlPage page = getPage("/faces/facelets/templateDecoration2.xhtml");
+        String text = page.asText();
+        assertTrue(text.contains("Inserted from client1 Default"));
+    }
+
+
+    /**
+     * Added for issue 1313
+     */
+    public void testIssue1313() throws Exception {
+
+        HtmlPage page = getPage("/faces/facelets/issue1313.xhtml");
+        List<HtmlDivision> divs = new ArrayList<HtmlDivision>();
+
+        getAllElementsOfGivenClass(page, divs, HtmlDivision.class);
+        validateToggleState1(divs);
+        HtmlSubmitInput input = (HtmlSubmitInput)
+              getInputContainingGivenId(page, "form:nonajax");
+        assertNotNull(input);
+        page = input.click();
+        divs.clear();
+        getAllElementsOfGivenClass(page, divs, HtmlDivision.class);
+        validateToggleState2(divs);
+        input = (HtmlSubmitInput)
+              getInputContainingGivenId(page, "form:ajax");
+        assertNotNull(input);
+        page = input.click();
+        divs.clear();
+        getAllElementsOfGivenClass(page, divs, HtmlDivision.class);
+        validateToggleState1(divs);
+        input = (HtmlSubmitInput)
+              getInputContainingGivenId(page, "form:nonajax");
+        assertNotNull(input);
+        page = input.click();
+        divs.clear();
+        getAllElementsOfGivenClass(page, divs, HtmlDivision.class);
+        validateToggleState2(divs);
+        input = (HtmlSubmitInput)
+              getInputContainingGivenId(page, "form:ajax");
+        assertNotNull(input);
+        page = input.click();
+        divs.clear();
+        getAllElementsOfGivenClass(page, divs, HtmlDivision.class);
+        validateToggleState1(divs);
+
+    }
+    
+    public void testIssue1576() throws Exception {
+        HtmlPage page = getPage("/faces/facelets/Issue1576UsingPage.xhtml");
+        
+        String text = page.asText();
+        char copyright = 0xa9;
+        char middot = 0xb7;
+        char nbsp = 0xa0;
+
+        assertTrue(-1 != text.indexOf(copyright));
+        assertTrue(-1 != text.indexOf(middot));
+        // nbsp is converted to space on the server
+        assertTrue(-1 == text.indexOf(nbsp));
+        
+        int [] rc = new int[1];
+
+        // We have to use Socket to do this because HtmlUnit swallows the doctype.
+        String xml = this.issueHttpRequest("GET", rc, "/faces/facelets/Issue1576UsingPage.xhtml");
+        // assert there is exactly one DOCTYPE
+        int i = xml.indexOf("DOCTYPE");
+        assertTrue(-1 != i);
+        assertTrue(-1 == xml.indexOf("DOCTYPE", i + "DOCTYPE".length()));
+                
+    }
+    
+    
+    private String issueHttpRequest(String methodName, int [] rc, String path) throws Exception {
+
+        URL url = getURL(path);
+        Socket s = new Socket(url.getHost(), url.getPort());
+        BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
+        String requestLine = methodName + " /" + contextPath + path + " HTTP/1.1\r\n";
+        writer.write(requestLine);
+        writer.write("Host: " + url.getHost() + ":" + url.getPort() + "\r\n");
+        writer.write("User-Agent: systest-client\r\n");
+        writer.write("Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\n");
+        writer.write("Connection: close\r\n");
+        writer.write("\r\n");
+        writer.flush();
+        BufferedReader reader = new BufferedReader(new InputStreamReader(s.getInputStream()));
+        String cur = null;
+        StringBuilder builder = new StringBuilder();
+        rc[0] = -1;
+        while (null != (cur = reader.readLine())) {
+            if (-1 == rc[0]) {
+                String [] tokens = cur.split("\\s");
+                rc[0] = Integer.valueOf(tokens[1]);
+            }
+            builder.append(cur).append("\n");
+        }
+        writer.close();
+
+        
+        return builder.toString();
+    }
+
+    /*
+     * Added for issue 1527
+     */
+    public void testForEach() throws Exception {
+
+        HtmlPage page = getPage("/faces/facelets/forEach.xhtml");
+        boolean uniqueIds = true;
+        List<HtmlTextInput> input = new ArrayList<HtmlTextInput>();
+        getAllElementsOfGivenClass(page, input, HtmlTextInput.class);
+        String[] names = new String[input.size()];
+        String[] temp = new String[input.size()];
+        int i=0;
+        int j=0;
+        for (HtmlTextInput inputText : input) {
+            names[i++] = inputText.getNameAttribute();
+        }
+        for (i=0; i < names.length; i++) {
+            if (isUnique(names[i], temp)) {
+                temp[j++] = names[i];
+            } else {
+                uniqueIds = false;
+                break;
+            }
+        }
+        assertTrue(uniqueIds);
+    }
+
+    public void testDefineInsertELExpression() throws Exception {
+        HtmlPage page = getPage("/faces/facelets/Client3.xhtml");
+        assertTrue(page.asText().contains("Inserted from client3"));
+    }
+
+
+    // --------------------------------------------------------- Private Methods
+
+    private boolean isUnique(String s, String[] array) {
+        for (int i=0; i < array.length; i++) {
+            if (array[i] != null && s.equals(array[i])) {
+                return false;
+            }
+        }
+        return true;
+    }
+
+    private void validateToggleState1(List<HtmlDivision> divs) {
+        assertTrue(divs.size() == 2);
+        HtmlDivision div1 = divs.get(0);
+        assertEquals("frag1", "frag1", div1.getId());
+        assertEquals("frag1", "frag1", div1.asText().trim());
+        HtmlDivision div2 = divs.get(1);
+        assertEquals("otherwise", "otherwise", div2.getId());
+        assertEquals("C:OTHERWISE TOGGLE STATE FALSE C:OTHERWISE",
+                     "C:OTHERWISE TOGGLE STATE FALSE C:OTHERWISE",
+                     div2.asText().trim());
+    }
+
+
+    private void validateToggleState2(List<HtmlDivision> divs) {
+        assertTrue(divs.size() == 3);
+        HtmlDivision div1 = divs.get(0);
+        assertEquals("frag2", "frag2", div1.getId());
+        assertEquals("frag2", "frag2", div1.asText().trim());
+        HtmlDivision div2 = divs.get(1);
+        assertEquals("if", "if", div2.getId());
+        assertEquals("C:IF TOGGLE STATE TRUE C:IF",
+                     "C:IF TOGGLE STATE TRUE C:IF",
+                     div2.asText().trim());
+        HtmlDivision div3 = divs.get(2);
+        assertEquals("when", "when", div3.getId());
+        assertEquals("C:WHEN TOGGLE STATE TRUE C:WHEN",
+                     "C:WHEN TOGGLE STATE TRUE C:WHEN",
+                     div3.asText().trim());
+    }
+
+
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/facelets/FaceletsTargetNotFoundITCase.java b/test/servlet30/systest/src/test/java/com/sun/faces/facelets/FaceletsTargetNotFoundITCase.java
new file mode 100644
index 0000000..37f314e
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/facelets/FaceletsTargetNotFoundITCase.java
@@ -0,0 +1,155 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.facelets;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import com.gargoylesoftware.htmlunit.html.HtmlElement;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSpan;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import com.gargoylesoftware.htmlunit.html.HtmlAnchor;
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.FailingHttpStatusCodeException;
+import com.sun.faces.htmlunit.HtmlUnitFacesITCase;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+/**
+ * Test cases for Facelets functionality
+ */
+public class FaceletsTargetNotFoundITCase extends HtmlUnitFacesITCase {
+
+
+    // --------------------------------------------------------------- Test Init
+
+
+    public FaceletsTargetNotFoundITCase() {
+        this("FaceletsTargetNotFoundTestCase");
+    }
+
+
+    public FaceletsTargetNotFoundITCase(String name) {
+        super(name);
+    }
+
+
+    /**
+     * Set up instance variables required by this test case.
+     */
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+
+
+    /**
+     * Return the tests included in this test suite.
+     */
+    public static Test suite() {
+        return (new TestSuite(FaceletsTargetNotFoundITCase.class));
+    }
+
+
+    /**
+     * Tear down instance variables required by this test case.
+     */
+    public void tearDown() {
+        super.tearDown();
+    }
+
+
+    // ------------------------------------------------------------ Test Methods
+
+    /*
+     * Check that not found errors give a 500 status, instead of the 404 that
+     * they used to give.
+     */
+    public void testFaillingCode() throws Exception {
+
+        WebClient client = new WebClient();
+        client.setThrowExceptionOnFailingStatusCode(true);
+        HtmlPage page;
+        int code;
+
+        try {
+            page = getPage("/faces/facelets/compositionnotfound.xhtml", client) ;
+            fail("A Failing status code was not received");
+        } catch (FailingHttpStatusCodeException fail) {
+            code = fail.getStatusCode();
+            assertTrue("Expected 500, got: "+code, code==500);
+        }
+        try {
+            page = getPage("/faces/facelets/decoratenotfound.xhtml", client) ;
+            fail("A Failing status code was not received");
+        } catch (FailingHttpStatusCodeException fail) {
+            code = fail.getStatusCode();
+            assertTrue("Expected 500, got: "+code, code==500);
+        }
+        try {
+            page = getPage("/faces/facelets/includenotfound.xhtml", client) ;
+            fail("A Failing status code was not received");
+        } catch (FailingHttpStatusCodeException fail) {
+            code = fail.getStatusCode();
+            assertTrue("Expected 500, got: "+code, code==500);
+        }
+
+    }
+
+    public void testNotFoundCode() throws Exception {
+        WebClient client = new WebClient();
+        client.setThrowExceptionOnFailingStatusCode(true);
+        HtmlPage page;
+        int code;
+
+        try {
+            page = getPage("/faces/missing-top-level-page.xhtml", client) ;
+            fail("A Failing status code was not received");
+        } catch (FailingHttpStatusCodeException fail) {
+            code = fail.getStatusCode();
+            assertTrue("Expected 404, got: "+code, code==404);
+        }
+
+        
+
+    }
+
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/facelets/ImplicitFacetITCase.java b/test/servlet30/systest/src/test/java/com/sun/faces/facelets/ImplicitFacetITCase.java
new file mode 100644
index 0000000..44cd1b5
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/facelets/ImplicitFacetITCase.java
@@ -0,0 +1,169 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.facelets;
+
+
+import com.gargoylesoftware.htmlunit.html.HtmlCheckBoxInput;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import com.sun.faces.htmlunit.HtmlUnitFacesITCase;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+/**
+ * Test cases for Facelets functionality
+ */
+public class ImplicitFacetITCase extends HtmlUnitFacesITCase {
+
+
+    // --------------------------------------------------------------- Test Init
+
+
+    public ImplicitFacetITCase() {
+        this("FaceletsTestCase");
+    }
+
+
+    public ImplicitFacetITCase(String name) {
+        super(name);
+    }
+
+
+    /**
+     * Set up instance variables required by this test case.
+     */
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+
+
+    /**
+     * Return the tests included in this test suite.
+     */
+    public static Test suite() {
+        return (new TestSuite(ImplicitFacetITCase.class));
+    }
+
+
+    /**
+     * Tear down instance variables required by this test case.
+     */
+    public void tearDown() {
+        super.tearDown();
+    }
+
+
+    // ------------------------------------------------------------ Test Methods
+
+
+    /*
+     * Added for issue 917.
+     */
+    public void testUIRepeat() throws Exception {
+
+        HtmlPage page = getPage("/faces/facelets/implicitFacet01.xhtml") ;
+        
+        String text = page.asText();
+        
+        assertTrue(text.matches("(?s).*Implicit\\s*facet\\s*01\\s*id:.*Child\\s*01\\s*of\\s*facet\\s*01\\s*id:\\s*output01.\\s*Child\\s*02\\s*of\\s*facet\\s*01\\s*id:\\s*output02.\\s*Child\\s*03\\s*of\\s*facet\\s*01\\s*id:\\s*output03.*"));
+        assertTrue(-1 != text.indexOf("Implicit facet 01 id: panelGroup01. Child 01 of facet 01 id: output07. Child 02 of facet 01 id: output08. Child 03 of facet 01 id: output09."));
+
+        HtmlSubmitInput input = (HtmlSubmitInput) getInputContainingGivenId(page, "command");
+        page = input.click();
+
+        text = page.asText();
+
+        assertTrue(text.matches("(?s).*Implicit\\s*facet\\s*01\\s*id:.*Child\\s*01\\s*of\\s*facet\\s*01\\s*id:\\s*output01.\\s*Child\\s*02\\s*of\\s*facet\\s*01\\s*id:\\s*output02.\\s*Child\\s*03\\s*of\\s*facet\\s*01\\s*id:\\s*output03.*"));
+        assertTrue(-1 != text.indexOf("Implicit facet 01 id: panelGroup01. Child 01 of facet 01 id: output07. Child 02 of facet 01 id: output08. Child 03 of facet 01 id: output09."));
+
+
+    }
+
+    /*
+     * Added for issue 1726.
+     */
+    public void testPostBack() throws Exception {
+        HtmlPage page = getPage("/faces/facelets/issue1726.xhtml");
+        if (!page.asXml().toUpperCase().contains("TOMCAT")) {
+            HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("button");
+            page = button.click();
+            String text = page.asText();
+            assert(!text.contains("javax.faces.component.UIPanel"));
+        }
+    }
+
+    public void testConditionalImplicitFacetChild1727() throws Exception {
+        HtmlPage page = getPage("/faces/facelets/issue1727-facet-conditional.xhtml");
+        HtmlCheckBoxInput checkbox = (HtmlCheckBoxInput) page.getElementById("checkbox");
+        checkbox.setChecked(false);
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("button");
+        page = button.click();
+        String text = page.asText();
+        assertTrue(text.matches("(?s).*|Not in if 01|\\s|Not in if 02|.*"));
+
+        checkbox = (HtmlCheckBoxInput) page.getElementById("checkbox");
+        checkbox.setChecked(true);
+        button = (HtmlSubmitInput) page.getElementById("button");
+        page = button.click();
+        text = page.asText();
+        assertTrue(text.matches("(?s).*|Not in if 01|\\s|Not in if 02|\\s|In if 01|\\s|In if 02|.*"));
+
+        checkbox = (HtmlCheckBoxInput) page.getElementById("checkbox");
+        checkbox.setChecked(false);
+        button = (HtmlSubmitInput) page.getElementById("button");
+        page = button.click();
+        text = page.asText();
+        assertTrue(text.matches("(?s).*|Not in if 01|\\s|Not in if 02|.*"));
+
+    }
+
+    /*
+     * Added for Issue 2066
+     * Tests h:column "rowHeader" tag attribute.
+     */
+    public void testColumnRowHeader() throws Exception {
+         HtmlPage page = getPage("/faces/facelets/issue1726.xhtml");
+         if (!page.asXml().toUpperCase().contains("TOMCAT")) {
+            String xml = page.asXml();
+            assertTrue(xml.contains("<th scope=\"row\">"));
+         }
+    }
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/facelets/UIRepeatITCase.java b/test/servlet30/systest/src/test/java/com/sun/faces/facelets/UIRepeatITCase.java
new file mode 100644
index 0000000..c3c285f
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/facelets/UIRepeatITCase.java
@@ -0,0 +1,230 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.facelets;
+
+import com.gargoylesoftware.htmlunit.WebWindow;
+import com.gargoylesoftware.htmlunit.html.HtmlAnchor;
+import com.gargoylesoftware.htmlunit.html.HtmlElement;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSpan;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
+import com.sun.faces.htmlunit.HtmlUnitFacesITCase;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Test cases for Facelets functionality
+ */
+public class UIRepeatITCase extends HtmlUnitFacesITCase {
+
+
+    // --------------------------------------------------------------- Test Init
+
+
+    public UIRepeatITCase() {
+        this("UIRepeatTestCase");
+
+        // this test is excluded because it won't pass in tomcat due to an issue with NumberConverter
+        addExclusion(Container.TOMCAT6, "testUIRepeatStateNotLostOnNonUIRepeatMessage");
+        addExclusion(Container.TOMCAT7, "testUIRepeatStateNotLostOnNonUIRepeatMessage");
+        addExclusion(Container.WLS_10_3_4_NO_CLUSTER, "testUIRepeatStateNotLostOnNonUIRepeatMessage");
+
+    }
+
+
+    public UIRepeatITCase(String name) {
+        super(name);
+    }
+
+
+    /**
+     * Set up instance variables required by this test case.
+     */
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+
+
+    /**
+     * Return the tests included in this test suite.
+     */
+    public static Test suite() {
+        return (new TestSuite(UIRepeatITCase.class));
+    }
+
+
+    /**
+     * Tear down instance variables required by this test case.
+     */
+    public void tearDown() {
+        super.tearDown();
+    }
+
+
+    // ------------------------------------------------------------ Test Methods
+
+
+    /*
+     * Added for issue 917.
+     */
+    public void testUIRepeat() throws Exception {
+
+        HtmlPage page = getPage("/faces/facelets/uirepeat.xhtml") ;
+        
+        String text = page.asText();
+        
+        assertTrue(-1 != text.indexOf("ListFlavor is chocolate. Begin is . End is . Index is 0. Step is . Index is even: true. Index is odd: false. Index is first: true. Index is last: false."));
+        assertTrue(-1 != text.indexOf("ListFlavor is vanilla. Begin is . End is . Index is 1. Step is . Index is even: false. Index is odd: true. Index is first: false. Index is last: false."));
+        assertTrue(-1 != text.indexOf("ListFlavor is strawberry. Begin is . End is . Index is 2. Step is . Index is even: true. Index is odd: false. Index is first: false. Index is last: false."));
+        assertTrue(-1 != text.indexOf("ListFlavor is chocolate peanut butter. Begin is . End is . Index is 3. Step is . Index is even: false. Index is odd: true. Index is first: false. Index is last: true."));
+        assertTrue(-1 != text.indexOf("ArrayFlavor is chocolate. Begin is . End is . Index is 0. Step is . Index is even: true. Index is odd: false. Index is first: true. Index is last: false."));
+        assertTrue(-1 != text.indexOf("ArrayFlavor is vanilla. Begin is . End is . Index is 1. Step is . Index is even: false. Index is odd: true. Index is first: false. Index is last: false."));
+        assertTrue(-1 != text.indexOf("ArrayFlavor is strawberry. Begin is . End is . Index is 2. Step is . Index is even: true. Index is odd: false. Index is first: false. Index is last: false."));
+        assertTrue(-1 != text.indexOf("ArrayFlavor is chocolate peanut butter. Begin is . End is . Index is 3. Step is . Index is even: false. Index is odd: true. Index is first: false. Index is last: true."));
+        
+    }
+
+
+    public void testUIRepeatVarStatusBroadcast() throws Exception {
+
+        HtmlPage page = getPage("/faces/facelets/uirepeat2.xhtml");
+        List<HtmlAnchor> anchors = new ArrayList<HtmlAnchor>(4);
+        getAllElementsOfGivenClass(page, anchors, HtmlAnchor.class);
+        assertEquals("Expected to find only 4 HtmlAnchors", 4, anchors.size());
+        String[] expectedValues = {
+              "Index: 0",
+              "Index: 1",
+              "Index: 2",
+              "Index: 3",
+        };
+
+        for (int i = 0, len = expectedValues.length; i < len; i++) {
+            HtmlAnchor anchor = anchors.get(i);
+            page = anchor.click();
+            assertTrue(page.asText().contains(expectedValues[i]));
+        }
+
+    }
+
+
+    public void testUIRepeatStateNotLostOnNonUIRepeatMessage() throws Exception {
+
+        HtmlPage page = getPage("/faces/facelets/uirepeat3.xhtml");
+        List<HtmlTextInput> inputs = new ArrayList<HtmlTextInput>(5);
+        getAllElementsOfGivenClass(page, inputs, HtmlTextInput.class);
+        assertEquals("Expected 5 input fields", 5, inputs.size());
+        inputs.get(0).setValueAttribute("A"); // this causes a validation failure
+        inputs.get(1).setValueAttribute("1");
+        inputs.get(2).setValueAttribute("2");
+        inputs.get(3).setValueAttribute("3");
+        inputs.get(4).setValueAttribute("4");
+        HtmlSubmitInput submit = (HtmlSubmitInput) getInputContainingGivenId(page, "submit");
+        page = submit.click();
+        assertTrue(page.asText().contains("'A' is not a number."));
+        // now verify the inputs nested within the UIRepeat were not cleared
+        inputs.clear();
+        getAllElementsOfGivenClass(page, inputs, HtmlTextInput.class);
+        assertEquals("A", inputs.get(0).getValueAttribute());
+        assertEquals("1", inputs.get(1).getValueAttribute());
+        assertEquals("2", inputs.get(2).getValueAttribute());
+        assertEquals("3", inputs.get(3).getValueAttribute());
+        assertEquals("4", inputs.get(4).getValueAttribute());
+
+    }
+
+
+    public void testUIRepeatVarBeginEndStepProperties() throws Exception {
+
+        HtmlPage page = getPage("/faces/facelets/uirepeat4.xhtml");
+        List<HtmlSpan> spans = new ArrayList<HtmlSpan>(9);
+        getAllElementsOfGivenClass(page, spans, HtmlSpan.class);
+        assertEquals("Expected 9 spans", 9, spans.size());
+        String[] expectedValues = {
+              "vanilla : index=1 : begin=1 : end= : step= : first=true : last=false : even=true : odd=false",
+              "strawberry : index=2 : begin=1 : end= : step= : first=false : last=false : even=false : odd=true",
+              "chocolate peanut butter : index=3 : begin=1 : end= : step= : first=false : last=true : even=true : odd=false",
+              "strawberry: index=2 : begin=2 : end=3 : step= : first=true : last=false : even=true : odd=false",
+              "chocolate peanut butter: index=3 : begin=2 : end=3 : step= : first=false : last=true : even=false : odd=true",
+              "chocolate: index=0 : begin= : end= : step=2 : first=true : last=false : even=true : odd=false",
+              "strawberry: index=2 : begin= : end= : step=2 : first=false : last=true : even=false : odd=true",
+              "vanilla: index=1 : begin=1 : end=1 : step=2 : first=true : last=true : even=true : odd=false",
+              "chocolate: index=0 : begin= : end= : step= : first=true : last=true : even=true : odd=false"
+        };
+        for (int i = 0, len = spans.size(); i < len; i++) {
+            assertEquals("Expected: " + expectedValues[i] + ", received: " + spans.get(i).asText(),
+                         expectedValues[i],
+                         spans.get(i).asText());
+        }
+
+    }
+
+    /**
+     * Added for issue 1218.
+     */
+    public void testForEachVarStatusNoException() throws Exception {
+
+        HtmlPage page = getPage("/faces/facelets/forEach.xhtml");
+        assertTrue(page.asText().contains("1 2 3"));
+
+    }
+
+    /******* PENDING(edburns): disable this test until JAVASERVERFACES-2356 is resolved
+    public void testDebugViewState() throws Exception {
+        tearDown();
+        setUp();
+        HtmlPage page = getPage("/faces/facelets/uirepeat5.xhtml");
+        HtmlElement form = page.getElementById("form");
+        page = (HtmlPage) form.type('D', true, true, false);
+        List<WebWindow> windows = client.getWebWindows();
+        WebWindow debugWindow = windows.get(1);
+        page = (HtmlPage) debugWindow.getEnclosedPage();
+        String xml = page.asXml();
+        assertTrue(xml.matches("(?s).*<th>\\s*Total\\s*</th>\\s*<th>\\s*[0-9]*\\s*</th>.*"));
+
+
+    }
+    ***********/
+
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/facelets/csetITCase.java b/test/servlet30/systest/src/test/java/com/sun/faces/facelets/csetITCase.java
new file mode 100644
index 0000000..d04efbf
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/facelets/csetITCase.java
@@ -0,0 +1,111 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.facelets;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import com.gargoylesoftware.htmlunit.html.HtmlElement;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSpan;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import com.gargoylesoftware.htmlunit.html.HtmlAnchor;
+import com.sun.faces.htmlunit.HtmlUnitFacesITCase;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+/**
+ * Test cases for Facelets functionality
+ */
+public class csetITCase extends HtmlUnitFacesITCase {
+
+
+    // --------------------------------------------------------------- Test Init
+
+
+    public csetITCase() {
+        this("csetTestCase");
+    }
+
+
+    public csetITCase(String name) {
+        super(name);
+    }
+
+
+    /**
+     * Set up instance variables required by this test case.
+     */
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+
+
+    /**
+     * Return the tests included in this test suite.
+     */
+    public static Test suite() {
+        return (new TestSuite(csetITCase.class));
+    }
+
+
+    /**
+     * Tear down instance variables required by this test case.
+     */
+    public void tearDown() {
+        super.tearDown();
+    }
+
+
+    // ------------------------------------------------------------ Test Methods
+
+
+    /*
+     * Added for issue 917.
+     */
+    public void testSetPropertyActionListener1() throws Exception {
+
+        lastpage = getPage("/faces/facelets/csetTagBody.xhtml") ;
+
+        checkTrue("output", "y bop alice bop yes");
+    }
+
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/htmlunit/HtmlUnitFacesITCase.java b/test/servlet30/systest/src/test/java/com/sun/faces/htmlunit/HtmlUnitFacesITCase.java
new file mode 100644
index 0000000..36be3b0
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/htmlunit/HtmlUnitFacesITCase.java
@@ -0,0 +1,655 @@
+/*
+ * $Id: HtmlUnitFacesTestCase.java,v 1.16 2006/07/31 23:05:00 rlubke Exp $
+ */
+
+/*
+ * The contents of this file are subject to the terms
+ * of the Common Development and Distribution License
+ * (the License). You may not use this file except in
+ * compliance with the License.
+ * 
+ * You can obtain a copy of the License at
+ * https://javaserverfaces.dev.java.net/CDDL.html or
+ * legal/CDDLv1.0.txt. 
+ * See the License for the specific language governing
+ * permission and limitations under the License.
+ * 
+ * When distributing Covered Code, include this CDDL
+ * Header Notice in each file and include the License file
+ * at legal/CDDLv1.0.txt.    
+ * If applicable, add the following below the CDDL Header,
+ * with the fields enclosed by brackets [] replaced by
+ * your own identifying information:
+ * "Portions Copyrighted [year] [name of copyright owner]"
+ * 
+ * [Name of File] [ver.__] [Date]
+ * 
+ * Copyright 2005 Sun Microsystems Inc. All Rights Reserved
+ */
+
+package com.sun.faces.htmlunit;
+
+import com.gargoylesoftware.htmlunit.BrowserVersion;
+import com.gargoylesoftware.htmlunit.CookieManager;
+import com.gargoylesoftware.htmlunit.FailingHttpStatusCodeException;
+import com.gargoylesoftware.htmlunit.NicelyResynchronizingAjaxController;
+import com.gargoylesoftware.htmlunit.ProxyConfig;
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.WebRequestSettings;
+import com.gargoylesoftware.htmlunit.WebResponse;
+import com.gargoylesoftware.htmlunit.html.HtmlBody;
+import com.gargoylesoftware.htmlunit.html.HtmlElement;
+import com.gargoylesoftware.htmlunit.html.HtmlForm;
+import com.gargoylesoftware.htmlunit.html.HtmlInput;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import java.util.logging.Level;
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Random;
+import java.util.Vector;
+import java.util.logging.Logger;
+
+
+/**
+ * <p>Abstract base class for test cases utilizing HtmlUnit.</p>
+ */
+
+public abstract class HtmlUnitFacesITCase extends TestCase {
+
+    // ------------------------------------------------------------ Constructors
+
+
+    /**
+     * Construct a new instance of this test case.
+     *
+     * @param name Name of the test case
+     */
+    public HtmlUnitFacesITCase(String name) {
+        super(name);
+        this.testName = name;
+    }
+
+
+    // ------------------------------------------------------ Instance Variables
+
+    /**
+     * The <code>Log</code> instance for this class.
+     */
+    protected static final Logger log = Logger.getLogger(HtmlUnitFacesITCase.class.getName());
+
+    protected String testName;
+
+    // System property values used to configure the HTTP connection
+    protected String contextPath = null;
+    protected String host = null;
+    protected int port = 0;
+    protected Integer virtualServerPort = null;
+
+    // The current session identifier
+    protected String sessionId = null;
+
+
+    // The WebClient instance for this test case
+    protected WebClient client = null;
+
+    // The URL for our test application
+    protected URL domainURL = null;
+
+    // The cookie manager
+    protected CookieManager cmanager = null;
+
+    // The last requested page
+    protected HtmlPage lastpage = null;
+
+    // Possible containers - these should be the uppercase values of the possible container values in build.properties
+    protected enum Container { GLASSFISH, GLASSFISHV3PRELUDE, GLASSFISHV3, GLASSFISHV3_1, GLASSFISHV3_1_NO_CLUSTER, TOMCAT6, TOMCAT7, WLS_10_3_4_NO_CLUSTER, WLS_12_1_1_NO_CLUSTER }
+
+    // Per-container exclusions
+    protected Map<Container, Vector<String>> exclusions = null;
+
+    // Instance numbers for clustering
+    private List<Integer> instanceNumbers;
+
+    protected boolean forceNoCluster = false;
+
+    private Random rand = new Random();
+
+    protected boolean isVirtualServer = false;
+
+
+    // ---------------------------------------------------- Overall Test Methods
+
+
+    /**
+     * Set up instance variables required by this test case.
+     */
+    @Override
+    public void setUp() throws Exception {
+
+        BrowserVersion browserVersion;
+
+        isVirtualServer = Boolean.parseBoolean(System.getProperty("virtual-server"));
+
+        String instanceNumbersStr = System.getProperty("instance.numbers");
+        if (null != instanceNumbersStr && 0 < instanceNumbersStr.length() &&
+	    !("${instance.numbers}".equals(instanceNumbersStr))) {
+            String [] strs = instanceNumbersStr.split(",");
+            List<Integer> instNums = getInstanceNumbers();
+            for (String cur : strs) {
+                try {
+                    instNums.add(Integer.parseInt(cur));
+                } catch (NumberFormatException e) {
+                    System.out.println(e.getMessage());
+                }
+            }
+        }
+        String forceNoClusterStr = System.getProperty("force.no.cluster");
+        forceNoCluster = (null != forceNoClusterStr && 0 < forceNoClusterStr.length());
+
+        contextPath = "/jsf-systest";
+        host = System.getProperty("integration.serverName");
+        port = Integer.parseInt(System.getProperty("integration.serverPort"));
+        String browser = System.getProperty("browser");
+
+        if ("FF3".equals(browser)) {
+            browserVersion = BrowserVersion.FIREFOX_3;
+        } else if ("FF2".equals(browser)) {
+            browserVersion = BrowserVersion.FIREFOX_2;
+        } else if ("IE6".equals(browser)) {
+            browserVersion = BrowserVersion.INTERNET_EXPLORER_6;
+        } else {
+            browserVersion = BrowserVersion.INTERNET_EXPLORER_7;
+        }
+        
+        String proxyHost = System.getProperty("proxyHost");
+        String proxyPort = System.getProperty("proxyPort");
+
+        client = new WebClient(browserVersion);
+        cmanager = client.getCookieManager();
+        // Add an ajax controller to synchronize all ajax calls
+        client.setAjaxController(new NicelyResynchronizingAjaxController());
+        domainURL = getURL("/");
+        WebRequestSettings settings = new WebRequestSettings(domainURL);
+        if (null != proxyHost && null != proxyPort) {
+            settings.setProxyHost(proxyHost);
+            int proxyPortInt = Integer.parseInt(proxyPort);
+            settings.setProxyPort(proxyPortInt);
+            ProxyConfig config = client.getProxyConfig();
+            config.setProxyHost(proxyHost);
+            config.setProxyPort(proxyPortInt);
+        }
+
+        WebResponse response = client.getWebConnection().getResponse(settings);
+    }
+
+    protected List<Integer> getInstanceNumbers() {
+        if (null == instanceNumbers) {
+            instanceNumbers = new ArrayList<Integer>();
+        }
+        return instanceNumbers;
+    }
+
+
+    /**
+     * Return the tests included in this test suite.
+     */
+    public static Test suite() {
+        return (new TestSuite(HtmlUnitFacesITCase.class));
+    }
+
+
+    /**
+     * Tear down instance variables required by this test case.
+     */
+    public void tearDown() {
+
+        client = null;
+        domainURL = null;
+        cmanager = null;
+
+    }
+
+
+    // ------------------------------------------------- Individual Test Methods
+
+
+    // --------------------------------------------------------- Private Methods
+
+
+    /**
+     * <p>Extract and return the result of calling <code>asText()</code>
+     * on the <code><body></code> element of this page.</p>
+     *
+     * @param page The <code>HtmlPage</code> to process
+     */
+    protected String getBodyText(HtmlPage page) {
+
+        Object body =
+                page.getDocumentElement().getHtmlElementsByTagName("body").get(0);
+
+        if (body != null) {
+            if (body instanceof HtmlBody) {
+                return (((HtmlBody) body).asText());
+            }
+        }
+
+        fail("This page does not have a <body> element");
+        return (null); // To satisfy the compiler
+
+    }
+
+
+    /**
+     * <p>Return the page for the specified context-relative path,
+     * maintaining session affinity if <code>sessionId</code> is not null.</p>
+     *
+     * @param path Context-relative part of the path
+     */
+    protected HtmlPage getPage(String path) throws Exception {
+
+        /* Cookies seem to be maintained automatically now
+        if (sessionId != null) {
+            //            System.err.println("Joining   session " + sessionId);
+            client.addRequestHeader("Cookie", "JSESSIONID=" + sessionId);
+        }
+        */
+        lastpage  = (HtmlPage) client.getPage(getURL(path));
+        if (sessionId == null) {
+            parseSession(lastpage);
+        }
+        return lastpage;
+
+    }
+    
+    protected HtmlPage getPageWithRetry(String path, int retries) throws Exception {
+        int i = 0;
+        boolean success = false;
+        do {
+            try {
+                getPage(path);
+                success = true;
+            } catch (FailingHttpStatusCodeException fhse) {
+                Thread.sleep(3000);
+            }                
+        } while (!success && ++i < retries);
+        
+        
+        return lastpage;
+    }
+
+    protected HtmlPage getPageSticky(String path) throws Exception {
+
+        /* Cookies seem to be maintained automatically now
+        if (sessionId != null) {
+            //            System.err.println("Joining   session " + sessionId);
+            client.addRequestHeader("Cookie", "JSESSIONID=" + sessionId);
+        }
+        */
+        lastpage  = (HtmlPage) client.getPage(getURLSticky(path));
+        if (sessionId == null) {
+            parseSession(lastpage);
+        }
+        return lastpage;
+
+    }
+
+    protected HtmlPage getPageFromInstanceN(String path, int instanceNumber) throws Exception {
+
+        /* Cookies seem to be maintained automatically now
+        if (sessionId != null) {
+            //            System.err.println("Joining   session " + sessionId);
+            client.addRequestHeader("Cookie", "JSESSIONID=" + sessionId);
+        }
+        */
+        lastpage  = (HtmlPage) client.getPage(getURLFromInstanceN(path, instanceNumber));
+        if (sessionId == null) {
+            parseSession(lastpage);
+        }
+        return lastpage;
+
+    }
+
+    protected int getPort() {
+
+        if (null != virtualServerPort) {
+            return virtualServerPort.intValue();
+        }
+
+        int result = port;
+        List<Integer> instNums = getInstanceNumbers();
+        if (!instNums.isEmpty() && 
+            (!forceNoCluster || isVirtualServer)) {
+            int instanceNumberIndex = rand.nextInt(instNums.size());
+            try {
+                String num = instNums.get(instanceNumberIndex).toString() + port;
+                result = Integer.parseInt(num);
+
+            } catch (NumberFormatException e) {
+                System.out.println(e.getMessage());
+                throw e;
+            }
+        }
+
+        if (isVirtualServer) {
+            virtualServerPort = (Integer) result;
+        }
+
+        return result;
+    }
+
+    protected int getFirstPort() {
+        int result = port;
+        List<Integer> instNums = getInstanceNumbers();
+        if (!instNums.isEmpty() && !forceNoCluster) {
+            int instanceNumberIndex = 0;
+            try {
+                String num = instNums.get(instanceNumberIndex).toString() + port;
+                result = Integer.parseInt(num);
+
+            } catch (NumberFormatException e) {
+                System.out.println(e.getMessage());
+                throw e;
+            }
+        }
+        return result;
+    }
+
+    protected int getNthPort(int instanceNumber) {
+        int result = port;
+        if (!forceNoCluster) {
+            try {
+                String num = instanceNumber + "" + port;
+                result = Integer.parseInt(num);
+
+            } catch (NumberFormatException e) {
+                System.out.println(e.getMessage());
+                throw e;
+            }
+        }
+        return result;
+    }
+    /**
+     * The same as {@link #getPage(String)} except this uses the specified
+     * WebClient.
+     *
+     * @param path   context-relative path
+     * @param client WebClient
+     * @return an HtmlPage instance
+     * @throws Exception if an error occurs
+     */
+    protected HtmlPage getPage(String path, WebClient client) throws Exception {
+        lastpage = (HtmlPage) client.getPage(getURL(path));
+        if (sessionId == null) {
+            parseSession(lastpage);
+        }
+        return lastpage;
+    }
+
+
+    /**
+     * <p>Return a <code>URL</code> for the specified context-relative
+     * path.</p>
+     *
+     * @param path Context relative path
+     */
+    protected URL getURL(String path) throws Exception {
+
+        StringBuffer sb = new StringBuffer("http://");
+        sb.append(host);
+        int myPort = getPort();
+        if (myPort != 80) {
+            sb.append(":");
+            sb.append("" + myPort);
+        }
+        sb.append(contextPath);
+        sb.append(path);
+        if (log.isLoggable(Level.INFO)) {
+           log.info(sb.toString());
+        }
+        return (new URL(sb.toString()));
+
+    }
+
+    protected URL getURLSticky(String path) throws Exception {
+
+        StringBuffer sb = new StringBuffer("http://");
+        sb.append(host);
+        int myPort = getFirstPort();
+        if (myPort != 80) {
+            sb.append(":");
+            sb.append("" + myPort);
+        }
+        sb.append(contextPath);
+        sb.append(path);
+        if (log.isLoggable(Level.INFO)) {
+           log.info(sb.toString());
+        }
+        return (new URL(sb.toString()));
+
+    }
+
+    protected URL getURLFromInstanceN(String path, int instanceNumber) throws Exception {
+
+        StringBuilder sb = new StringBuilder("http://");
+        sb.append(host);
+        int myPort = getNthPort(instanceNumber);
+        if (myPort != 80) {
+            sb.append(":");
+            sb.append("").append(myPort);
+        }
+        sb.append(contextPath);
+        sb.append(path);
+        if (log.isLoggable(Level.INFO)) {
+           log.info(sb.toString());
+        }
+        return (new URL(sb.toString()));
+
+    }
+
+
+    /**
+     * <p>Parse and save any session identifier from the specified page.</p>
+     *
+     * @param page The current page
+     */
+    protected void parseSession(HtmlPage page) {
+
+        String value =
+                page.getWebResponse().getResponseHeaderValue("Set-Cookie");
+        if (value == null) {
+            return;
+        }
+        int equals = value.indexOf("JSESSIONID=");
+        if (equals < 0) {
+            return;
+        }
+        value = value.substring(equals + "JSESSIONID=".length());
+        int semi = value.indexOf(";");
+        if (semi >= 0) {
+            value = value.substring(0, semi);
+        }
+        sessionId = value;
+        //        System.err.println("Beginning session " + sessionId);
+
+    }
+
+
+    protected boolean clearAllCookies() {
+        cmanager.clearCookies();
+        return true;
+    }
+
+    // Return the form with the specified "id" from the specified page
+    // (HtmlPage.getFormByName() looks at "name" instead)
+    protected HtmlForm getFormById(HtmlPage page, String id) {
+
+        Iterator forms = page.getForms().iterator();
+        while (forms.hasNext()) {
+            HtmlForm form = (HtmlForm) forms.next();
+            if (id.equals(form.getAttributeValue("id"))) {
+                return (form);
+            }
+        }
+        return (null);
+
+    }
+
+
+    /**
+     * <p>Added to compensate for changes in the HtmlUnit 1.4 API.</p>
+     *
+     * @see #getAllElementsOfGivenClass(com.gargoylesoftware.htmlunit.html.HtmlElement, java.util.List, Class)
+     */
+    protected List getAllElementsOfGivenClass(HtmlPage root, List list,
+                                              Class matchClass) {
+
+        return getAllElementsOfGivenClass(root.getDocumentElement(),
+                list,
+                matchClass);
+
+    }
+
+    /**
+     * Depth first search from root to find all children that are
+     * instances of HtmlInput.  Add them to the list.
+     */
+    protected List getAllElementsOfGivenClass(HtmlElement root, List list,
+                                              Class matchClass) {
+        if (null == root) {
+            return list;
+        }
+        if (null == list) {
+            list = new ArrayList();
+        }
+        Iterable<HtmlElement> iterable = root.getAllHtmlChildElements();
+        Iterator<HtmlElement> iter = iterable.iterator();
+        while (iter.hasNext()) {
+            getAllElementsOfGivenClass((HtmlElement) iter.next(), list,
+                    matchClass);
+        }
+        if (matchClass.isInstance(root)) {
+            if (!list.contains(root)) {
+                list.add(root);
+            }
+        }
+        return list;
+    }
+
+    protected HtmlInput getInputContainingGivenId(HtmlPage root,
+                                                  String id) {
+        List list;
+        int i;
+        HtmlInput result = null;
+
+        list = getAllElementsOfGivenClass(root, null, HtmlInput.class);
+        for (i = 0; i < list.size(); i++) {
+            result = (HtmlInput) list.get(i);
+            if (-1 != result.getIdAttribute().indexOf(id)) {
+                break;
+            }
+            result = null;
+        }
+        return result;
+
+    }
+
+    protected HtmlInput getNthInputContainingGivenId(HtmlPage root,
+                                                     String id,
+                                                     int whichInput) {
+        List list;
+        int i, hitCount = 0;
+        HtmlInput result = null;
+
+        list = getAllElementsOfGivenClass(root, null, HtmlInput.class);
+        for (i = 0; i < list.size(); i++) {
+            result = (HtmlInput) list.get(i);
+            if (-1 != result.getIdAttribute().indexOf(id) &&
+                    hitCount++ == whichInput) {
+                break;
+            }
+            result = null;
+        }
+        return result;
+
+    }
+
+    protected HtmlInput getNthFromLastInputContainingGivenId(HtmlPage root,
+                                                             String id,
+                                                             int whichInput) {
+        List list;
+        int i, hitCount = 0;
+        HtmlInput result = null;
+
+        list = getAllElementsOfGivenClass(root, null, HtmlInput.class);
+        for (i = list.size() - 1; i >= 0; i--) {
+            result = (HtmlInput) list.get(i);
+            if (-1 != result.getIdAttribute().indexOf(id) &&
+                    hitCount++ == whichInput) {
+                break;
+            }
+            result = null;
+        }
+        return result;
+
+    }
+
+    protected String getText(String element) {
+        return ((HtmlElement)lastpage.getHtmlElementById(element)).asText();
+    }
+
+    /*
+      Check that the text of the element is equal to the supplied string
+     */
+    protected boolean check(String element, String expected) {
+        return expected.equals(getText(element));
+    }
+
+    protected void checkTrue(String element, String expected) {
+        assertTrue(element+":- Expected '"+expected+"', but received '"+getText(element)+"'", check(element,expected));
+    }
+
+    @Override
+    protected void runTest() throws Throwable {
+        String currentContainer = System.getProperty("container");
+        boolean doRunTest = true;
+        if(currentContainer == null) {
+            log.warning("Test exclusions not taken into account since no container property could be found");
+        } else if(exclusions != null) {
+            Vector<String> excludedTests = this.exclusions.get(Container.valueOf(currentContainer.toUpperCase().replaceAll("\\.", "_")));
+            if(null != excludedTests && !excludedTests.isEmpty() && excludedTests.contains(testName)) {
+                log.log(Level.INFO, "Skipping execution of test ''{0}'' for container {1}", new Object[]{testName, currentContainer});
+                doRunTest = false;
+            } 
+        }
+        if (doRunTest) {
+            super.runTest();
+        }
+    }
+
+    /**
+     * Adds an exclusion for a particular test method in the TestCase
+     * @param container the container for which the exclusion should be applied
+     * @param testName the name of the test method to exclude
+     */
+    protected void addExclusion(Container container, String testName) {
+
+        if(exclusions == null) {
+            exclusions = new HashMap<Container, Vector<String>>();
+        }
+        
+        Vector<String> excluded = this.exclusions.get(container);
+        if(excluded == null) {
+            excluded = new Vector<String>();
+            exclusions.put(container, excluded);
+        }
+        excluded.add(testName);
+    }
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/jsf2jsp/Jsf2JspITCase.java b/test/servlet30/systest/src/test/java/com/sun/faces/jsf2jsp/Jsf2JspITCase.java
new file mode 100644
index 0000000..5b508f8
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/jsf2jsp/Jsf2JspITCase.java
@@ -0,0 +1,143 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.jsf2jsp;
+
+
+import com.gargoylesoftware.htmlunit.FailingHttpStatusCodeException;
+import com.sun.faces.htmlunit.HtmlUnitFacesITCase;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import com.sun.faces.jsptest.ValidatorITCase;
+import junit.framework.Test;
+import junit.framework.TestResult;
+import junit.framework.TestSuite;
+
+public class Jsf2JspITCase extends HtmlUnitFacesITCase {
+
+
+    public Jsf2JspITCase() {
+        this("Jsf2Js2TestCase");
+    }
+
+
+    public Jsf2JspITCase(String name) {
+        super(name);
+    }
+
+    public static Test suite() {
+        return (new TestSuite(Jsf2JspITCase.class));
+    }
+
+
+    // ------------------------------------------------------------ Test Methods
+
+
+    public void testUnsupportedFeaturesAreUnsupported() throws Exception {
+
+        // These features are not implemented in JSP
+        assert500Response("/faces/jsf2jsp/head-gives-500.jspx");
+        assert500Response("/faces/jsf2jsp/body-gives-500.jspx");
+        assert500Response("/faces/jsf2jsp/outputScript-gives-500.jspx");
+        assert500Response("/faces/jsf2jsp/outputStylesheet-gives-500.jspx");
+        assert500Response("/faces/jsf2jsp/button-gives-500.jspx");
+        assert500Response("/faces/jsf2jsp/link-gives-500.jspx");
+        assert500Response("/faces/jsf2jsp/resource-ELResolver-gives-500.jspx");
+        assert500Response("/faces/jsf2jsp/ajax-gives-500.jspx");
+        assert500Response("/faces/jsf2jsp/event-gives-500.jspx");
+        assert500Response("/faces/jsf2jsp/metadata-gives-500.jspx");
+
+    }
+
+    public void testSupportedFeaturesAreSupported() throws Exception {
+
+//        // These features are implemented in JSP
+//        HtmlPage page = getPage("/faces/jsf2jsp/commandButton-parameter-children-gives-hidden-fields.jspx");
+//        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("reload");
+//        page = button.click();
+//        String text = page.asText();
+//        assertTrue(text.contains("name01=value01"));
+//        assertTrue(text.contains("name02=value02"));
+//
+//
+//        page = getPage("/faces/jsf2jsp/resources.jspx");
+//        text = page.asXml();
+//        assertTrue(text.contains("duke.gif"));
+//        assertTrue(text.contains("vLibrary"));
+//        assertTrue(text.contains("2_01_1"));
+//
+//        assert200Response("/faces/jsf2jsp/selectManyJsf2Features.jspx");
+//
+//        Test validatorTest = ValidatorITCase.suite();
+//        TestResult validatorResult = new TestResult();
+//        validatorTest.run(validatorResult);
+//        assertTrue(validatorResult.failureCount() == 0);
+//
+//
+//
+    }
+    
+    private void assert500Response(String urlFragment) throws Exception {
+        client.setThrowExceptionOnFailingStatusCode(true);
+        HtmlPage page = null;
+        int code;
+        try {
+            page = getPage(urlFragment);
+        } catch (FailingHttpStatusCodeException fail) {
+            code = fail.getStatusCode();
+            assertTrue("GET " + urlFragment + " Expected 500, got: "+code, code==500);
+        }
+        
+    }
+
+    private void assert200Response(String urlFragment) throws Exception {
+        client.setThrowExceptionOnFailingStatusCode(true);
+        HtmlPage page = null;
+        int code;
+        try {
+            page = getPage(urlFragment);
+        } catch (FailingHttpStatusCodeException fail) {
+            code = fail.getStatusCode();
+            assertTrue("GET " + urlFragment + " Expected 200, got: "+code, code==200);
+        }
+
+    }
+
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/jsptest/CommandLinkMultiFormITCase.java b/test/servlet30/systest/src/test/java/com/sun/faces/jsptest/CommandLinkMultiFormITCase.java
new file mode 100644
index 0000000..f6f51e0
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/jsptest/CommandLinkMultiFormITCase.java
@@ -0,0 +1,142 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.jsptest;
+
+
+import com.gargoylesoftware.htmlunit.html.*;
+import com.sun.faces.htmlunit.HtmlUnitFacesITCase;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+import java.util.List;
+
+
+/**
+ * <p>Test Case for JSP Interoperability.</p>
+ */
+
+public class CommandLinkMultiFormITCase extends HtmlUnitFacesITCase {
+
+    // ------------------------------------------------------------ Constructors
+
+
+    /**
+     * Construct a new instance of this test case.
+     *
+     * @param name Name of the test case
+     */
+    public CommandLinkMultiFormITCase(String name) {
+        super(name);
+        addExclusion(Container.TOMCAT6, "testMultiForm");
+        addExclusion(Container.TOMCAT7, "testMultiForm");
+        addExclusion(Container.WLS_10_3_4_NO_CLUSTER, "testMultiForm");
+    }
+
+    // ------------------------------------------------------ Instance Variables
+
+    // ---------------------------------------------------- Overall Test Methods
+
+
+    /**
+     * Set up instance variables required by this test case.
+     */
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+
+
+    /**
+     * Return the tests included in this test suite.
+     * @return Tests included in suite
+     */
+    public static Test suite() {
+        return (new TestSuite(CommandLinkMultiFormITCase.class));
+    }
+
+
+    /**
+     * Tear down instance variables required by this test case.
+     */
+    public void tearDown() {
+        super.tearDown();
+    }
+
+    // ------------------------------------------------- Individual Test Methods
+
+
+    public void testMultiForm() throws Exception {
+//        HtmlForm form1, form2;
+//        HtmlAnchor link1, link2, link3;
+//        HtmlTextInput input;
+//        HtmlPage page, page1;
+//        HtmlHiddenInput hidden1, hidden2;
+//
+//        page = getPage("/faces/taglib/commandLink_multiform_test.jsp");
+//        // press all command links..
+//        List forms = page.getForms();
+//        form1 = (HtmlForm) forms.get(0);
+//        form2 = (HtmlForm) forms.get(1);
+//
+//        // links within the first form
+//        hidden1 = (HtmlHiddenInput) form1.getInputByName("form01:j_idcl");
+//        assertNotNull(hidden1);
+//        //hidden1.setValueAttribute("form01:Link1");
+//        //page1 = (HtmlPage) form1.submit();
+//        page1 = page.getAnchorByName("form01:Link1").click();
+//        assertTrue(-1 != page1.asText().indexOf("Thank you"));
+//        //hidden1.setValueAttribute("form01:Link2");
+//        //page1 = (HtmlPage) form1.submit();
+//        page1 = page.getAnchorByName("form01:Link2").click();
+//        assertTrue(-1 != page1.asText().indexOf("Thank you"));
+//
+//        // links within second form
+//        hidden2 = (HtmlHiddenInput) form2.getInputByName("form02:j_idcl");
+//        assertNotNull(hidden2);
+//        //hidden2.setValueAttribute("form02:Link3");
+//        //page1 = (HtmlPage) form1.submit();
+//        page1 = page.getAnchorByName("form02:Link3").click();
+//        assertTrue(-1 != page1.asText().indexOf("Thank you"));
+//        //hidden2.setValueAttribute("form02:Link4");
+//        //page1 = (HtmlPage) form1.submit();
+//        page1 = page.getAnchorByName("form02:Link4").click();
+//        assertTrue(-1 != page1.asText().indexOf("Thank you"));
+    }
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/jsptest/CommandLinkNoFormITCase.java b/test/servlet30/systest/src/test/java/com/sun/faces/jsptest/CommandLinkNoFormITCase.java
new file mode 100644
index 0000000..c92e3a7
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/jsptest/CommandLinkNoFormITCase.java
@@ -0,0 +1,118 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.jsptest;
+
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSpan;
+import com.sun.faces.htmlunit.HtmlUnitFacesITCase;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+import java.util.List;
+
+/**
+ * <p>Verify expected behavior when command link is not enclosed by a form</p>
+ */
+
+public class CommandLinkNoFormITCase extends HtmlUnitFacesITCase {
+
+    // ------------------------------------------------------------ Constructors
+
+
+    /**
+     * Construct a new instance of this test case.
+     *
+     * @param name Name of the test case
+     */
+    public CommandLinkNoFormITCase(String name) {
+        super(name);
+    }
+
+    // ------------------------------------------------------ Instance Variables
+
+    // ---------------------------------------------------- Overall Test Methods
+
+
+    /**
+     * Set up instance variables required by this test case.
+     */
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+
+
+    /**
+     * Return the tests included in this test suite.
+     */
+    public static Test suite() {
+        return (new TestSuite(CommandLinkNoFormITCase.class));
+    }
+
+
+    /**
+     * Tear down instance variables required by this test case.
+     */
+    public void tearDown() {
+        super.tearDown();
+    }
+
+    // ------------------------------------------------------ Instance Variables
+
+    // ------------------------------------------------- Individual Test Methods
+
+    public void testRenderedClinkWithNoForm() throws Exception {
+        String noFormString =
+                ": This link is disabled as it is not nested within a JSF form.";
+        HtmlPage page = getPage("/faces/standard/clinknoform.jsp");
+        List list = getAllElementsOfGivenClass(page, null,
+                HtmlSpan.class);
+
+        HtmlSpan p = (HtmlSpan) list.get(0);
+        assertEquals("Link1" + noFormString, p.asText());
+        p = (HtmlSpan) list.get(1);
+        assertEquals("Link2" + noFormString, p.asText());
+        p = (HtmlSpan) list.get(2);
+        assertEquals("Click me once and click me twice" +
+                noFormString, p.asText());
+    }
+
+
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/jsptest/CommandLinkOnClickITCase.java b/test/servlet30/systest/src/test/java/com/sun/faces/jsptest/CommandLinkOnClickITCase.java
new file mode 100644
index 0000000..6106108
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/jsptest/CommandLinkOnClickITCase.java
@@ -0,0 +1,179 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.jsptest;
+
+import com.gargoylesoftware.htmlunit.ElementNotFoundException;
+import com.gargoylesoftware.htmlunit.html.*;
+import com.sun.faces.htmlunit.HtmlUnitFacesITCase;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+/**
+ * <p>Test Case for Multiple RenderKits.</p>
+ */
+
+public class CommandLinkOnClickITCase extends HtmlUnitFacesITCase {
+
+    // ------------------------------------------------------------ Constructors
+
+
+    /**
+     * Construct a new instance of this test case.
+     *
+     * @param name Name of the test case
+     */
+    public CommandLinkOnClickITCase(String name) {
+        super(name);
+    }
+
+    // ------------------------------------------------------ Instance Variables
+
+    // ---------------------------------------------------- Overall Test Methods
+
+
+    /**
+     * Set up instance variables required by this test case.
+     */
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+
+
+    /**
+     * Return the tests included in this test suite.
+     */
+    public static Test suite() {
+        return (new TestSuite(CommandLinkOnClickITCase.class));
+    }
+
+
+    /**
+     * Tear down instance variables required by this test case.
+     */
+    public void tearDown() {
+        super.tearDown();
+    }
+
+    // ------------------------------------------------- Individual Test Methods
+
+    // This method tests that a user provided commandLink "onclick" javascript
+    // method will get executed in addition to the internal one rendered
+    // as part of CommandLinkRenderer.
+
+    public void testOnClickReturnTrue() throws Exception {
+//        HtmlPage page = getPage("/faces/jsp/commandLinkOnClickTrue.jsp");
+//
+//        HtmlForm form = getFormById(page, "form");
+//        assertNotNull("form exists", form);
+//        HtmlHiddenInput hidden = null;
+//        try {
+//            hidden = (HtmlHiddenInput) form.getInputByName("form:j_idcl");
+//        } catch (ElementNotFoundException e) {
+//            assertTrue(false);
+//        }
+//        // This initial value was set by an "onLoad" javascript function in the jsp.
+//        assertTrue(hidden.getValueAttribute().equals("Goodbye"));
+//
+//        // click the link..
+//        HtmlAnchor submit = (HtmlAnchor)
+//                page.getFirstAnchorByText("submit");
+//        assertTrue(submit.getOnClickAttribute().equals("var a=function(){setValue('form');};var b=function(){clearFormHiddenParams_form('form');document.forms['form']['form:j_idcl'].value='form:submit'; document.forms['form'].submit(); return false;};return (a()==false) ? false : b();"));
+//        try {
+//            page = (HtmlPage) submit.click();
+//        } catch (Exception e) {
+//            e.printStackTrace();
+//            assertTrue(false);
+//        }
+//        // The value of this field was set by the user provided "onclick" javascript
+//        // function.
+//        HtmlTextInput input = (HtmlTextInput) form.getInputByName("form:init");
+//        assertTrue(input.getValueAttribute().equals("Hello"));
+//
+//        // The value of this field was changed by the internal Faces javascript function
+//        // created by CommandLinkRenderer..
+//        try {
+//            hidden = (HtmlHiddenInput) form.getInputByName("form:j_idcl");
+//        } catch (ElementNotFoundException e) {
+//            assertTrue(false);
+//        }
+//        assertTrue(hidden.getValueAttribute().equals("form:submit"));
+    }
+
+    // This method tests that a user provided commandLink "onclick" javascript
+    // method will get executed.  The user provided function returns "false",
+    // so, the internal Faces function should not execute.
+    public void testOnClickReturnFalse() throws Exception {
+//        HtmlPage page = getPage("/faces/jsp/commandLinkOnClickFalse.jsp");
+//
+//        HtmlForm form = getFormById(page, "form");
+//        assertNotNull("form exists", form);
+//        HtmlHiddenInput hidden = null;
+//        try {
+//            hidden = (HtmlHiddenInput) form.getInputByName("form:j_idcl");
+//        } catch (ElementNotFoundException e) {
+//            assertTrue(false);
+//        }
+//        // This initial value was set by an "onLoad" javascript function in the jsp.
+//        assertTrue(hidden.getValueAttribute().equals("Goodbye"));
+//
+//        // click the link..
+//        HtmlAnchor submit = (HtmlAnchor)
+//                page.getFirstAnchorByText("submit");
+//        assertTrue(submit.getOnClickAttribute().equals("var a=function(){setValue('form'); return false;};var b=function(){clearFormHiddenParams_form('form');document.forms['form']['form:j_idcl'].value='form:submit'; document.forms['form'].submit(); return false;};return (a()==false) ? false : b();"));
+//        try {
+//            page = (HtmlPage) submit.click();
+//        } catch (Exception e) {
+//            e.printStackTrace();
+//            assertTrue(false);
+//        }
+//        HtmlTextInput input = (HtmlTextInput) form.getInputByName("form:init");
+//        assertTrue(input.getValueAttribute().equals("Hello"));
+//
+//        // The value of this field remains unchanged from the initial value. 
+//        try {
+//            hidden = (HtmlHiddenInput) form.getInputByName("form:j_idcl");
+//        } catch (ElementNotFoundException e) {
+//            assertTrue(false);
+//        }
+//        assertTrue(hidden.getValueAttribute().equals("Goodbye"));
+    }
+
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/jsptest/ConverterITCase.java b/test/servlet30/systest/src/test/java/com/sun/faces/jsptest/ConverterITCase.java
new file mode 100755
index 0000000..249cf92
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/jsptest/ConverterITCase.java
@@ -0,0 +1,258 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.jsptest;
+
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
+import com.sun.faces.htmlunit.HtmlUnitFacesITCase;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+import java.util.List;
+
+/**
+ * <p>Test that invalid values don't cause valueChangeEvents to occur.</p>
+ */
+
+public class ConverterITCase extends HtmlUnitFacesITCase {
+
+    // ------------------------------------------------------------ Constructors
+
+
+    /**
+     * Construct a new instance of this test case.
+     *
+     * @param name Name of the test case
+     */
+    public ConverterITCase(String name) {
+        super(name);
+    }
+
+    // ------------------------------------------------------ Instance Variables
+
+    // ---------------------------------------------------- Overall Test Methods
+
+
+    /**
+     * Return the tests included in this test suite.
+     */
+    public static Test suite() {
+        return (new TestSuite(ConverterITCase.class));
+    }
+
+    // ------------------------------------------------- Individual Test Methods
+    public void testConverter() throws Exception {
+        HtmlPage page = getPage("/faces/converter03.jsp");
+        List list;
+        list = getAllElementsOfGivenClass(page, null,
+                HtmlTextInput.class);
+
+        // set the initial value to be 1 for all input fields
+        ((HtmlTextInput) list.get(0)).setValueAttribute("1111111111");
+        ((HtmlTextInput) list.get(1)).setValueAttribute("1111111111");
+        ((HtmlTextInput) list.get(2)).setValueAttribute("1111111111");
+        ((HtmlTextInput) list.get(3)).setValueAttribute("1111111111");
+        ((HtmlTextInput) list.get(4)).setValueAttribute("99");
+        ((HtmlTextInput) list.get(5)).setValueAttribute("4");
+        ((HtmlTextInput) list.get(6)).setValueAttribute("12");
+        ((HtmlTextInput) list.get(7)).setValueAttribute("7");
+        ((HtmlTextInput) list.get(8)).setValueAttribute("10");
+
+        list = getAllElementsOfGivenClass(page, null,
+                HtmlSubmitInput.class);
+        HtmlSubmitInput button = (HtmlSubmitInput) list.get(0);
+        page = (HtmlPage) button.click();
+        assertTrue(-1 != page.asText().indexOf("text1 was converted to Object"));
+        assertTrue(-1 != page.asText().indexOf("text1 was converted to String"));
+        assertTrue(-1 != page.asText().indexOf("text2 was converted to Object"));
+        assertTrue(-1 != page.asText().indexOf("text2 was converted to String"));
+        assertTrue(-1 != page.asText().indexOf("text3 was converted to Object"));
+        assertTrue(-1 != page.asText().indexOf("text3 was converted to String"));
+        assertTrue(-1 != page.asText().indexOf("text4 was converted to Object"));
+        assertTrue(-1 != page.asText().indexOf("text4 was converted to String"));
+        assertTrue(-1 != page.asText().indexOf("text5: '99' could not be understood as a time. Example:"));
+        assertTrue(-1 != page.asText().indexOf("4.0"));
+        assertTrue(-1 != page.asText().indexOf("12.0"));
+        assertTrue(-1 != page.asText().indexOf("7.0"));
+        assertTrue(-1 != page.asText().indexOf("10"));
+    }
+
+    public void testConverterMessages() throws Exception {
+        HtmlPage page = getPage("/faces/converter04.jsp");
+        List list;
+        list = getAllElementsOfGivenClass(page, null,
+                HtmlTextInput.class);
+
+        // set the initial value to be "aaa" for all input fields
+        for (int i = 0; i < list.size(); i++) {
+            ((HtmlTextInput) list.get(i)).setValueAttribute("aaa");
+        }
+
+        list = getAllElementsOfGivenClass(page, null,
+                HtmlSubmitInput.class);
+        HtmlSubmitInput button = (HtmlSubmitInput) list.get(0);
+        page = (HtmlPage) button.click();
+
+        assertTrue(-1 != page.asText().indexOf("form:bd1: 'aaa' must be a signed decimal number."));
+        assertTrue(-1 != page.asText().indexOf("form:bd1: 'aaa' must be a signed decimal number consisting of zero or more digits, that may be followed by a decimal point and fraction. Example: 198.23"));
+        assertTrue(-1 != page.asText().indexOf("BigDecimal2: 'aaa' must be a signed decimal number."));
+        assertTrue(-1 != page.asText().indexOf("BigDecimal2: 'aaa' must be a signed decimal number consisting of zero or more digits, that may be followed by a decimal point and fraction. Example: 198.23"));
+        assertTrue(-1 != page.asText().indexOf("form:bi1: 'aaa' must be a number consisting of one or more digits."));
+        assertTrue(-1 != page.asText().indexOf("form:bi1: 'aaa' must be a number consisting of one or more digits. Example: 9876"));
+        assertTrue(-1 != page.asText().indexOf("BigInteger2: 'aaa' must be a number consisting of one or more digits."));
+        assertTrue(-1 != page.asText().indexOf("BigInteger2: 'aaa' must be a number consisting of one or more digits. Example: 9876"));
+        assertTrue(-1 != page.asText().indexOf("form:byte1: 'aaa' must be a number between -128 and 127. "));
+        assertTrue(-1 != page.asText().indexOf("form:byte1: 'aaa' must be a number between -128 and 127. Example: 254"));
+        assertTrue(-1 != page.asText().indexOf("Byte2: 'aaa' must be a number between -128 and 127. "));
+        assertTrue(-1 != page.asText().indexOf("Byte2: 'aaa' must be a number between -128 and 127. Example: 254"));
+        assertTrue(-1 != page.asText().indexOf("form:date1: 'aaa' could not be understood as a date."));
+        assertTrue(-1 != page.asText().indexOf("form:date1: 'aaa' could not be understood as a date. Example:"));
+        assertTrue(-1 != page.asText().indexOf("Date2: 'aaa' could not be understood as a date."));
+        assertTrue(-1 != page.asText().indexOf("Date2: 'aaa' could not be understood as a date. Example:"));
+        assertTrue(-1 != page.asText().indexOf("form:time1: 'aaa' could not be understood as a time."));
+        assertTrue(-1 != page.asText().indexOf("form:time1: 'aaa' could not be understood as a time. Example:"));
+        assertTrue(-1 != page.asText().indexOf("Time2: 'aaa' could not be understood as a time."));
+        assertTrue(-1 != page.asText().indexOf("Time2: 'aaa' could not be understood as a time. Example:"));
+        assertTrue(-1 != page.asText().indexOf("form:datetime1: 'aaa' could not be understood as a date and time."));
+        assertTrue(-1 != page.asText().indexOf("form:datetime1: 'aaa' could not be understood as a date and time. Example:"));
+        assertTrue(-1 != page.asText().indexOf("DateTime2: 'aaa' could not be understood as a date and time."));
+        assertTrue(-1 != page.asText().indexOf("DateTime2: 'aaa' could not be understood as a date and time. Example:"));
+        assertTrue(-1 != page.asText().indexOf("form:double1: 'aaa' must be a number consisting of one or more digits."));
+        assertTrue(-1 != page.asText().indexOf("form:double1: 'aaa' must be a number between 4.9E-324 and 1.7976931348623157E308 Example: 1999999"));
+        assertTrue(-1 != page.asText().indexOf("Double2: 'aaa' must be a number consisting of one or more digits."));
+        assertTrue(-1 != page.asText().indexOf("Double2: 'aaa' must be a number between 4.9E-324 and 1.7976931348623157E308 Example: 1999999"));
+        assertTrue(-1 != page.asText().indexOf("form:float1: 'aaa' must be a number between 1.4E-45 and 3.4028235E38 Example: 2000000000"));
+        assertTrue(-1 != page.asText().indexOf("Float2: 'aaa' must be a number consisting of one or more digits."));
+        assertTrue(-1 != page.asText().indexOf("Float2: 'aaa' must be a number between 1.4E-45 and 3.4028235E38 Example: 2000000000"));
+        assertTrue(-1 != page.asText().indexOf("form:integer1: 'aaa' must be a number between -2147483648 and 2147483647 Example: 9346"));
+        assertTrue(-1 != page.asText().indexOf("Integer2: 'aaa' must be a number consisting of one or more digits. "));
+        assertTrue(-1 != page.asText().indexOf("Integer2: 'aaa' must be a number between -2147483648 and 2147483647 Example: 9346"));
+        assertTrue(-1 != page.asText().indexOf("form:long1: 'aaa' must be a number between -9223372036854775808 to 9223372036854775807 Example: 98765432"));
+        assertTrue(-1 != page.asText().indexOf("Long2: 'aaa' must be a number consisting of one or more digits. "));
+        assertTrue(-1 != page.asText().indexOf("Long2: 'aaa' must be a number between -9223372036854775808 to 9223372036854775807 Example: 98765432"));
+        assertTrue(-1 != page.asText().indexOf("form:number1: 'aaa' could not be understood as a currency value."));
+        assertTrue(-1 != page.asText().indexOf("form:number1: 'aaa' could not be understood as a currency value. Example: $99.99"));
+        assertTrue(-1 != page.asText().indexOf("Number2: 'aaa' could not be understood as a currency value."));
+        assertTrue(-1 != page.asText().indexOf("Number2: 'aaa' could not be understood as a currency value. Example: $99.99"));
+        assertTrue(-1 != page.asText().indexOf("form:number3: 'aaa' is not a number."));
+        assertTrue(-1 != page.asText().indexOf("form:number3: 'aaa' is not a number. Example: 99"));
+        assertTrue(-1 != page.asText().indexOf("Number4: 'aaa' is not a number."));
+        assertTrue(-1 != page.asText().indexOf("Number4: 'aaa' is not a number. Example: 99"));
+        assertTrue(-1 != page.asText().indexOf("form:number5: 'aaa' could not be understood as a percentage."));
+        assertTrue(-1 != page.asText().indexOf("form:number5: 'aaa' could not be understood as a percentage. Example: 75%"));
+        assertTrue(-1 != page.asText().indexOf("Number6: 'aaa' could not be understood as a percentage."));
+        assertTrue(-1 != page.asText().indexOf("Number6: 'aaa' could not be understood as a percentage. Example: 75%"));
+        assertTrue(-1 != page.asText().indexOf("form:number7: 'aaa' is not a number pattern."));
+        assertTrue(-1 != page.asText().indexOf("form:number7: 'aaa' is not a number pattern. Example: #,##0.0#"));
+        assertTrue(-1 != page.asText().indexOf("Number8: 'aaa' is not a number pattern."));
+        assertTrue(-1 != page.asText().indexOf("Number8: 'aaa' is not a number pattern. Example: #,##0.0#"));
+        assertTrue(-1 != page.asText().indexOf("form:short1: 'aaa' must be a number between -32768 and 32767 Example: 32456"));
+        assertTrue(-1 != page.asText().indexOf("Short2: 'aaa' must be a number consisting of one or more digits. "));
+        assertTrue(-1 != page.asText().indexOf("Short2: 'aaa' must be a number between -32768 and 32767 Example: 32456"));
+    }
+
+    public void testEnumConverter() throws Exception {
+        HtmlPage page = getPage("/faces/enum-converter.jsp");
+        List list;
+
+        // Case 0, invalid data in both text fields
+        list = getAllElementsOfGivenClass(page, null,
+                HtmlTextInput.class);
+        for (int i = 0; i < list.size(); i++) {
+            ((HtmlTextInput) list.get(i)).setValueAttribute("aoeuoeuoe");
+        }
+
+        list = getAllElementsOfGivenClass(page, null,
+                HtmlSubmitInput.class);
+        HtmlSubmitInput button = (HtmlSubmitInput) list.get(0);
+        page = (HtmlPage) button.click();
+
+        assertTrue(-1 != page.asText().indexOf("suit: 'aoeuoeuoe' must be convertible to an enum. suit: 'aoeuoeuoe' must be convertible to an enum from the enum that contains the constant 'aoeuoeuoe'."));
+        assertTrue(-1 != page.asText().indexOf("color: 'aoeuoeuoe' must be convertible to an enum. color: 'aoeuoeuoe' must be convertible to an enum from the enum that contains the constant 'aoeuoeuoe'."));
+
+        // Case 1, valid Suit, invalid color
+        list = getAllElementsOfGivenClass(page, null,
+                HtmlTextInput.class);
+        ((HtmlTextInput) list.get(0)).setValueAttribute("Hearts");
+
+        list = getAllElementsOfGivenClass(page, null,
+                HtmlSubmitInput.class);
+        button = (HtmlSubmitInput) list.get(0);
+        page = (HtmlPage) button.click();
+
+        assertTrue(-1 == page.asText().indexOf("suit:"));
+        assertTrue(-1 != page.asText().indexOf("color: 'aoeuoeuoe' must be convertible to an enum. color: 'aoeuoeuoe' must be convertible to an enum from the enum that contains the constant 'aoeuoeuoe'."));
+
+        // Case 2, valid Suit, valid color
+        list = getAllElementsOfGivenClass(page, null,
+                HtmlTextInput.class);
+        ((HtmlTextInput) list.get(1)).setValueAttribute("Blue");
+
+        list = getAllElementsOfGivenClass(page, null,
+                HtmlSubmitInput.class);
+        button = (HtmlSubmitInput) list.get(0);
+        page = (HtmlPage) button.click();
+
+        assertTrue(-1 == page.asText().indexOf("suit:"));
+        assertTrue(-1 == page.asText().indexOf("color:"));
+
+        list = getAllElementsOfGivenClass(page, null,
+                HtmlSubmitInput.class);
+        button = (HtmlSubmitInput) list.get(0);
+        page = (HtmlPage) button.click();
+
+        // Case 3, invalid suit, valid color
+        list = getAllElementsOfGivenClass(page, null,
+                HtmlTextInput.class);
+        ((HtmlTextInput) list.get(0)).setValueAttribute("aoeuoeuoe");
+
+        list = getAllElementsOfGivenClass(page, null,
+                HtmlSubmitInput.class);
+        button = (HtmlSubmitInput) list.get(0);
+        page = (HtmlPage) button.click();
+
+        assertTrue(-1 != page.asText().indexOf("suit: 'aoeuoeuoe' must be convertible to an enum. suit: 'aoeuoeuoe' must be convertible to an enum from the enum that contains the constant 'aoeuoeuoe'."));
+        assertTrue(-1 == page.asText().indexOf("color:"));
+
+
+    }
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/jsptest/ForEachITCase.java b/test/servlet30/systest/src/test/java/com/sun/faces/jsptest/ForEachITCase.java
new file mode 100644
index 0000000..77040db
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/jsptest/ForEachITCase.java
@@ -0,0 +1,181 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.jsptest;
+
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSpan;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
+import com.sun.faces.htmlunit.HtmlUnitFacesITCase;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * <p>Test that invalid values don't cause valueChangeEvents to occur.</p>
+ */
+
+public class ForEachITCase extends HtmlUnitFacesITCase {
+
+    // ------------------------------------------------------------ Constructors
+
+
+    /**
+     * Construct a new instance of this test case.
+     *
+     * @param name Name of the test case
+     */
+    public ForEachITCase(String name) {
+        super(name);
+
+        // TODO this test would actually work if the client IDs were adapted for execution on tomcat
+        addExclusion(Container.TOMCAT6, "testForEachIssue714");
+        addExclusion(Container.TOMCAT7, "testForEachIssue714");
+        addExclusion(Container.WLS_10_3_4_NO_CLUSTER, "testForEachIssue714");
+    }
+
+    // ------------------------------------------------------ Instance Variables
+
+    // ---------------------------------------------------- Overall Test Methods
+
+
+    /**
+     * Return the tests included in this test suite.
+     */
+    public static Test suite() {
+        return (new TestSuite(ForEachITCase.class));
+    }
+
+    // ------------------------------------------------- Individual Test Methods
+    public void testForEach() throws Exception {
+//        HtmlPage page = getPage("/faces/forEach01.jsp");
+//
+//        // Make sure values are displayed properly for the initial request 
+//        //assert outputText values are as expected
+//        assertTrue(-1 != page.asText().indexOf("output1"));
+//        assertTrue(-1 != page.asText().indexOf("output2"));
+//        assertTrue(-1 != page.asText().indexOf("output3"));
+//
+//        //assert inputText without "id" values are as expected
+//        assertTrue(-1 != page.asText().indexOf("inputText1=input1"));
+//        assertTrue(-1 != page.asText().indexOf("inputText2=input2"));
+//        assertTrue(-1 != page.asText().indexOf("inputText3=input3"));
+//
+//        //assert inputText with "id" values are as expected
+//        assertTrue(-1 != page.asText().indexOf("inputid1"));
+//        assertTrue(-1 != page.asText().indexOf("inputid2"));
+//        assertTrue(-1 != page.asText().indexOf("inputid3"));
+//
+//        // Assign new values to input fields, submit the form.
+//        List list;
+//        list = getAllElementsOfGivenClass(page, null,
+//                HtmlTextInput.class);
+//
+//        ((HtmlTextInput) list.get(0)).setValueAttribute("newValue1");
+//        ((HtmlTextInput) list.get(1)).setValueAttribute("newValue2");
+//        ((HtmlTextInput) list.get(2)).setValueAttribute("newValue3");
+//
+//        ((HtmlTextInput) list.get(3)).setValueAttribute("newValueid1");
+//        ((HtmlTextInput) list.get(4)).setValueAttribute("newValueid2");
+//        ((HtmlTextInput) list.get(5)).setValueAttribute("newValueid3");
+//
+//        list = getAllElementsOfGivenClass(page, null,
+//                HtmlSubmitInput.class);
+//        HtmlSubmitInput button = (HtmlSubmitInput) list.get(0);
+//        page = (HtmlPage) button.click();
+//
+//        // make sure the values are as expected on post back.
+//        assertTrue(-1 != page.asText().indexOf("output1"));
+//        assertTrue(-1 != page.asText().indexOf("output2"));
+//        assertTrue(-1 != page.asText().indexOf("output3"));
+//
+//        //assert inputText without "id" values are as expected
+//        assertTrue(-1 != page.asText().indexOf("inputText1=input1"));
+//        assertTrue(-1 != page.asText().indexOf("inputText2=input2"));
+//        assertTrue(-1 != page.asText().indexOf("inputText3=input3"));
+//
+//        assertTrue(-1 != page.asText().indexOf("newValue1"));
+//        assertTrue(-1 != page.asText().indexOf("newValue2"));
+//        assertTrue(-1 != page.asText().indexOf("newValue3"));
+//
+//        //assert inputText with "id" values are as expected
+//        assertTrue(-1 != page.asText().indexOf("inputid1"));
+//        assertTrue(-1 != page.asText().indexOf("inputid2"));
+//        assertTrue(-1 != page.asText().indexOf("inputid3"));
+//
+//        assertTrue(-1 != page.asText().indexOf("newValueid1"));
+//        assertTrue(-1 != page.asText().indexOf("newValueid2"));
+//        assertTrue(-1 != page.asText().indexOf("newValueid3"));
+    }
+
+    public void testForEachIssue714() throws Exception {
+
+        HtmlPage page = getPage("/faces/forEach04.jsp");
+        List<HtmlSpan> spans = new ArrayList<HtmlSpan>(2);
+        getAllElementsOfGivenClass(page, spans, HtmlSpan.class);
+        assertTrue(spans.size() == 2);
+        HtmlSpan span = spans.get(0);
+        assertTrue(span.getIdAttribute().matches(".*:idfrag1:frag1"));
+        span = spans.get(1);
+        assertTrue(span.getIdAttribute().matches(".*:idfrag2:frag2"));
+
+        // submit the form to ensure no duplicate ID exceptions are
+        // raised during post-back
+        List<HtmlSubmitInput> buttons = new ArrayList<HtmlSubmitInput>(1);
+        buttons = getAllElementsOfGivenClass(page, buttons, HtmlSubmitInput.class);
+        assertTrue(buttons.size() == 1);
+        HtmlSubmitInput submit = buttons.get(0);
+        page = (HtmlPage) submit.click();
+
+        // validate the IDs are as expected after post-back
+        spans = new ArrayList<HtmlSpan>(2);
+        getAllElementsOfGivenClass(page, spans, HtmlSpan.class);
+        assertTrue(spans.size() == 2);
+        span = spans.get(0);
+        assertTrue(span.getIdAttribute().matches(".*:idfrag1:frag1"));
+        span = spans.get(1);
+        assertTrue(span.getIdAttribute().matches(".*:idfrag2:frag2"));
+
+    }
+
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/jsptest/FormElITCase.java b/test/servlet30/systest/src/test/java/com/sun/faces/jsptest/FormElITCase.java
new file mode 100644
index 0000000..28b947f
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/jsptest/FormElITCase.java
@@ -0,0 +1,114 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.jsptest;
+
+
+import com.gargoylesoftware.htmlunit.html.HtmlForm;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.sun.faces.htmlunit.HtmlUnitFacesITCase;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+import java.util.List;
+
+
+/**
+ * <p>Verify that we have an intelligent error message when the user
+ * forgets the view tag.</p>
+ */
+
+public class FormElITCase extends HtmlUnitFacesITCase {
+
+    // ------------------------------------------------------------ Constructors
+
+
+    /**
+     * Construct a new instance of this test case.
+     *
+     * @param name Name of the test case
+     */
+    public FormElITCase(String name) {
+        super(name);
+    }
+
+    // ------------------------------------------------------ Instance Variables
+
+    // ---------------------------------------------------- Overall Test Methods
+
+
+    /**
+     * Set up instance variables required by this test case.
+     */
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+
+
+    /**
+     * Return the tests included in this test suite.
+     */
+    public static Test suite() {
+        return (new TestSuite(FormElITCase.class));
+    }
+
+
+    /**
+     * Tear down instance variables required by this test case.
+     */
+    public void tearDown() {
+        super.tearDown();
+    }
+
+    // ------------------------------------------------------ Instance Variables
+
+    // ------------------------------------------------- Individual Test Methods
+
+    public void testFormEnctype() throws Exception {
+        client.setThrowExceptionOnFailingStatusCode(false);
+        HtmlPage page = getPage("/faces/jsp/formEl.jsp");
+        List forms = page.getForms();
+        assertEquals("multipart/form-data", ((HtmlForm) forms.get(0)).getEnctypeAttribute());
+        assertEquals("application/x-www-form-urlencoded", ((HtmlForm) forms.get(1)).getEnctypeAttribute());
+        assertEquals("hi", ((HtmlForm) forms.get(2)).getEnctypeAttribute());
+        assertEquals("multipart/form-data", ((HtmlForm) forms.get(3)).getEnctypeAttribute());
+    }
+
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/jsptest/FormInputITCase.java b/test/servlet30/systest/src/test/java/com/sun/faces/jsptest/FormInputITCase.java
new file mode 100644
index 0000000..f85ca83
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/jsptest/FormInputITCase.java
@@ -0,0 +1,245 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.jsptest;
+
+
+import com.gargoylesoftware.htmlunit.html.HtmlForm;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
+import com.sun.faces.htmlunit.HtmlUnitFacesITCase;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+import javax.faces.component.NamingContainer;
+
+
+/**
+ * <p>Test Case for Form Input.</p>
+ */
+
+public class FormInputITCase extends HtmlUnitFacesITCase {
+
+    // ------------------------------------------------------------ Constructors
+
+
+    /**
+     * Construct a new instance of this test case.
+     *
+     * @param name Name of the test case
+     */
+    public FormInputITCase(String name) {
+        super(name);
+    }
+
+    // ------------------------------------------------------ Instance Variables
+
+    // ---------------------------------------------------- Overall Test Methods
+
+
+    /**
+     * Set up instance variables required by this test case.
+     */
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+
+
+    /**
+     * Return the tests included in this test suite.
+     */
+    public static Test suite() {
+        return (new TestSuite(FormInputITCase.class));
+    }
+
+
+    /**
+     * Tear down instance variables required by this test case.
+     */
+    public void tearDown() {
+        super.tearDown();
+    }
+
+    // ------------------------------------------------------ Instance Variables
+
+    // ---------- form-input-02.jsp values ----------
+
+    private String formInput02_name = "formInput02_form";
+
+    private String formInput02_names[] =
+            {
+                    "booleanProperty", "byteProperty", "doubleProperty", "floatProperty",
+                    "intProperty", "longProperty", "shortProperty", "stringProperty"
+            };
+
+    private String formInput02_pristine[] =
+            {
+                    "true", "12", "123.45", "12.34",
+                    "123", "12345", "1234", "This is a String property"
+            };
+
+    private String formInput02_updated[] =
+            {
+                    "false", "21", "543.21", "43.21",
+                    "321", "54321", "4321", "This was a String property"
+            };
+
+    // ------------------------------------------------- Individual Test Methods
+
+    // ---------- form-input-02.jsp tests ----------
+
+    // Request a pristine copy of the form a couple of times
+
+    public void testFormInput02_pristine() throws Exception {
+
+        checkFormInput00();
+        checkFormInput02(getFormInput02(), formInput02_pristine);
+        checkFormInput01();
+        checkFormInput02(getFormInput02(), formInput02_pristine);
+        checkFormInput00();
+
+    }
+
+
+    // Submit the form with no modifications
+    public void testFormInput02_submit01() throws Exception {
+
+        checkFormInput00();
+        HtmlPage page = getFormInput02();
+        checkFormInput02(page, formInput02_pristine);
+        HtmlForm form = getFormById(page, formInput02_name);
+        assertNotNull("form exists", form);
+        HtmlSubmitInput submit = (HtmlSubmitInput)
+                form.getInputByName(formInput02_name +
+                        NamingContainer.SEPARATOR_CHAR +
+                        "submit");
+        page = (HtmlPage) submit.click();
+        checkFormInput02(page, formInput02_pristine);
+
+    }
+
+
+    // Submit the form with updates to every field
+    public void testFormInput02_submit02() throws Exception {
+
+        checkFormInput00();
+        HtmlPage page = getFormInput02();
+        checkFormInput02(page, formInput02_pristine);
+        HtmlForm form = getFormById(page, formInput02_name);
+        assertNotNull("form exists", form);
+        for (int i = 0; i < formInput02_names.length; i++) {
+            HtmlTextInput input = (HtmlTextInput)
+                    form.getInputByName(formInput02_name +
+                            NamingContainer.SEPARATOR_CHAR +
+                            formInput02_names[i]);
+            assertNotNull("field '" + formInput02_names[i] + "' exists", input);
+            input.setValueAttribute(formInput02_updated[i]);
+        }
+        HtmlSubmitInput submit = (HtmlSubmitInput)
+                form.getInputByName(formInput02_name +
+                        NamingContainer.SEPARATOR_CHAR +
+                        "submit");
+        page = (HtmlPage) submit.click();
+        checkFormInput02(page, formInput02_updated);
+        checkFormInput01();
+
+    }
+
+    // --------------------------------------------------------- Private Methods
+
+    // Check the reset page to force a new component tree
+
+    private void checkFormInput00() throws Exception {
+
+        HtmlPage page = getPage("/faces/jsp/form-input-00.jsp");
+        assertEquals("Correct page title",
+                "form-input-00", page.getTitleText());
+
+    }
+
+
+    // Check the success page was received
+    private void checkFormInput01() throws Exception {
+
+        checkFormInput01(getPage("/faces/jsp/form-input-01.jsp"));
+
+    }
+
+
+    // Check the success page was received
+    private void checkFormInput01(HtmlPage page) {
+
+        assertEquals("Correct page title",
+                "form-input-01", page.getTitleText());
+
+    }
+
+
+    // Check the values of the input fields against the specified list
+    private void checkFormInput02(HtmlPage page, String expected[]) {
+
+
+        assertEquals("Correct page title",
+                "form-input-02", page.getTitleText());
+        HtmlForm form = getFormById(page, formInput02_name);
+        assertNotNull("form exists", form);
+        for (int i = 0; i < expected.length; i++) {
+            HtmlTextInput input = (HtmlTextInput)
+                    form.getInputByName(formInput02_name +
+                            NamingContainer.SEPARATOR_CHAR +
+                            formInput02_names[i]);
+            assertNotNull("field '" + formInput02_names[i] + "' exists", input);
+            assertEquals("field '" + formInput02_names[i] + "' value",
+                    expected[i], input.getValueAttribute());
+        }
+
+    }
+
+
+    // Retrieve the form-input-02 page
+    private HtmlPage getFormInput02() throws Exception {
+
+        return (getPage("/faces/jsp/form-input-02.jsp"));
+
+    }
+
+
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/jsptest/IdRefITCase.java b/test/servlet30/systest/src/test/java/com/sun/faces/jsptest/IdRefITCase.java
new file mode 100644
index 0000000..3bed3a2
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/jsptest/IdRefITCase.java
@@ -0,0 +1,212 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.jsptest;
+
+import com.gargoylesoftware.htmlunit.html.*;
+import com.sun.faces.htmlunit.HtmlUnitFacesITCase;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+import java.util.*;
+
+/**
+ * <p>
+ * Test id-ref values in <code>h:message</code> and <code>h:outputLabel</code>
+ * tags, and their interaction with <code>c:forEach</code>.
+ * </p>
+ */
+
+public class IdRefITCase extends HtmlUnitFacesITCase {
+
+    // ------------------------------------------------------------
+    // Constructors
+
+    /**
+     * Construct a new instance of this test case.
+     *
+     * @param name Name of the test case
+     */
+    public IdRefITCase(String name) {
+        super(name);
+        addExclusion(Container.TOMCAT6, "testIdRefs");
+        addExclusion(Container.TOMCAT7, "testIdRefs");
+        addExclusion(Container.WLS_10_3_4_NO_CLUSTER, "testIdRefs");
+        addExclusion(Container.TOMCAT6, "testIncludedLoopIdRefs");
+        addExclusion(Container.TOMCAT7, "testIncludedLoopIdRefs");
+        addExclusion(Container.WLS_10_3_4_NO_CLUSTER, "testIncludedLoopIdRefs");
+    }
+
+    // ----------------------------------------------------
+    // Overall Test Methods
+
+    /**
+     * Return the tests included in this test suite.
+     */
+    public static Test suite() {
+        return (new TestSuite(IdRefITCase.class));
+    }
+
+    private Map mapElementsByAttribute(HtmlElement docElem, String tagName,
+                                       String attName, String filterAtt, String filterValue) {
+        Map elems = new TreeMap();
+        List tags = docElem.getHtmlElementsByTagName(tagName);
+        for (Iterator tagIt = tags.iterator(); tagIt.hasNext();) {
+            HtmlElement tag = (HtmlElement) tagIt.next();
+            if (filterAtt != null && filterValue != null &&
+                    !filterValue.equals(tag.getAttributeValue(filterAtt))) {
+                continue;
+            }
+            String attValue = tag.getAttributeValue(attName);
+            assertNotNull(attName + " attribute of " + tagName, attValue);
+            assertNotSame(attName + " attribute of " + tagName, 0, attValue.length());
+            assertFalse("More than one " + tagName + " contains " + attName
+                    + "=" + attValue, elems.containsKey(attValue));
+            elems.put(attValue, tag);
+        }
+        return elems;
+    }
+
+    private Map mapMessagesById(HtmlElement docElem) {
+        Map elems = new TreeMap();
+        List tags = docElem.getHtmlElementsByTagName("span");
+        for (Iterator tagIt = tags.iterator(); tagIt.hasNext();) {
+            HtmlSpan tag = (HtmlSpan) tagIt.next();
+            if ("message".equals(tag.getClassAttribute())) {
+                String text = tag.asText();
+                assertNotSame(
+                        "expect validation message to start with component id",
+                        -1, text.indexOf(": "));
+                String id = text.substring(0, text.indexOf(": ")).trim();
+                assertFalse("Duplicate message for input " + id, elems
+                        .containsKey(id));
+                elems.put(id, tag);
+            }
+        }
+        return elems;
+    }
+
+    // -------------------------------------------------
+    // Individual Test Methods
+    public void testIdRefs() throws Exception {
+//        HtmlPage page = getPage("/faces/forEach03.jsp");
+//
+//        // assert every input has a label, and every label refers to an input
+//        Map inputTagsById = mapElementsByAttribute(page.getDocumentElement(),
+//                "input", "id", "type", "text");
+//        Map labelTagsByFor = mapElementsByAttribute(page.getDocumentElement(),
+//                "label", "for", null, null);
+//        assertEquals("//label/@for set should be the same as //input/@id set",
+//                inputTagsById.keySet(), labelTagsByFor.keySet());
+//
+//        // assign new values to input fields, submit the form.
+//        String idPrefix = "myform:input";
+//        String[] testIds = new String[]{idPrefix + "Int1", idPrefix + "Id1",
+//                idPrefix + "Id2j_id_1", idPrefix + "Id3j_id_2"};
+//        for (int i = 0; i < testIds.length; ++i) {
+//            HtmlTextInput input = (HtmlTextInput) inputTagsById.get(testIds[i]);
+//            input.setValueAttribute("");
+//        }
+//        List list = getAllElementsOfGivenClass(page, null,
+//                HtmlSubmitInput.class);
+//        HtmlSubmitInput button = (HtmlSubmitInput) list.get(0);
+//        page = (HtmlPage) button.click();
+//
+//        // make sure every 'value required' validation is present on post back.
+//        Map messageMap = mapMessagesById(page.getDocumentElement());
+//        assertEquals("One 'value required' message for each cleared input",
+//                testIds.length, messageMap.size());
+//        assertTrue("Only cleared inputs have messages", Arrays.asList(testIds)
+//                .containsAll(messageMap.keySet()));
+//        assertTrue("All cleared inputs have messages", messageMap.keySet()
+//                .containsAll(Arrays.asList(testIds)));
+    }
+
+    public void testIncludedLoopIdRefs() throws Exception {
+//        HtmlPage page = getPage("/faces/forEach03.jsp");
+//        Map inputTagsById = mapElementsByAttribute(page.getDocumentElement(),
+//                "input", "id", "type", "text");
+//        String[] testIds = {
+//                "myform:inputId11",
+//                "myform:inputId11j_id_1",
+//                "myform:inputId11j_id_2"
+//        };
+//        for (int i = 0; i < testIds.length; i++) {
+//            HtmlTextInput input = (HtmlTextInput) inputTagsById.get(testIds[i]);
+//            input.setValueAttribute("");
+//        }
+//        List list = getAllElementsOfGivenClass(page, null,
+//                HtmlSubmitInput.class);
+//        HtmlSubmitInput button = (HtmlSubmitInput) list.get(0);
+//        page = (HtmlPage) button.click();
+//        Map messageMap = mapMessagesById(page.getDocumentElement());
+//        assertEquals("One 'value required' message for each cleared input",
+//                testIds.length, messageMap.size());
+//        assertTrue("Only cleared inputs have messages", Arrays.asList(testIds)
+//                .containsAll(messageMap.keySet()));
+//        assertTrue("All cleared inputs have messages", messageMap.keySet()
+//                .containsAll(Arrays.asList(testIds)));
+    }
+
+    public void testIncludeNoLoopIdRef() throws Exception {
+//        HtmlPage page = getPage("/faces/forEach03.jsp");
+//        Map inputTagsById = mapElementsByAttribute(page.getDocumentElement(),
+//                "input", "id", "type", "text");
+//        String[] testIds = {
+//                "myform:Short11",
+//        };
+//        for (int i = 0; i < testIds.length; i++) {
+//            HtmlTextInput input = (HtmlTextInput) inputTagsById.get(testIds[i]);
+//            input.setValueAttribute("");
+//        }
+//        List list = getAllElementsOfGivenClass(page, null,
+//                HtmlSubmitInput.class);
+//        HtmlSubmitInput button = (HtmlSubmitInput) list.get(0);
+//        page = (HtmlPage) button.click();
+//        Map messageMap = mapMessagesById(page.getDocumentElement());
+//        assertEquals("One 'value required' message for each cleared input",
+//                testIds.length, messageMap.size());
+//        assertTrue("Only cleared inputs have messages", Arrays.asList(testIds)
+//                .containsAll(messageMap.keySet()));
+//        assertTrue("All cleared inputs have messages", messageMap.keySet()
+//                .containsAll(Arrays.asList(testIds)));
+    }
+
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/jsptest/InvalidateSessionITCase.java b/test/servlet30/systest/src/test/java/com/sun/faces/jsptest/InvalidateSessionITCase.java
new file mode 100644
index 0000000..fd5ac31
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/jsptest/InvalidateSessionITCase.java
@@ -0,0 +1,121 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.jsptest;
+
+
+import com.gargoylesoftware.htmlunit.html.*;
+import com.sun.faces.htmlunit.HtmlUnitFacesITCase;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+import javax.faces.component.NamingContainer;
+
+
+/**
+ * <p>Test Case for JSP Interoperability.</p>
+ */
+
+public class InvalidateSessionITCase extends HtmlUnitFacesITCase {
+
+    // ------------------------------------------------------------ Constructors
+
+
+    /**
+     * Construct a new instance of this test case.
+     *
+     * @param name Name of the test case
+     */
+    public InvalidateSessionITCase(String name) {
+        super(name);
+    }
+
+    // ------------------------------------------------------ Instance Variables
+
+    // ---------------------------------------------------- Overall Test Methods
+
+
+    /**
+     * Set up instance variables required by this test case.
+     */
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+
+
+    /**
+     * Return the tests included in this test suite.
+     */
+    public static Test suite() {
+        return (new TestSuite(InvalidateSessionITCase.class));
+    }
+
+
+    /**
+     * Tear down instance variables required by this test case.
+     */
+    public void tearDown() {
+        super.tearDown();
+    }
+
+    // ------------------------------------------------- Individual Test Methods
+
+
+    public void testInvalidateSession() throws Exception {
+        HtmlForm form;
+        HtmlSubmitInput submit;
+        HtmlAnchor link;
+        HtmlTextInput input;
+        HtmlPage page;
+
+        page = getPage("/faces/session-invalidator.jsp");
+        form = getFormById(page, "form");
+        submit = (HtmlSubmitInput)
+                form.getInputByName("form" + NamingContainer.SEPARATOR_CHAR +
+                        "button1");
+
+        // press button1
+        page = (HtmlPage) submit.click();
+        assertEquals("Test with action that invalidates a session.",
+                page.getTitleText());
+    }
+
+
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/jsptest/JspIntegration2ITCase.java b/test/servlet30/systest/src/test/java/com/sun/faces/jsptest/JspIntegration2ITCase.java
new file mode 100644
index 0000000..33257c5
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/jsptest/JspIntegration2ITCase.java
@@ -0,0 +1,90 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.jsptest;
+
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.sun.faces.htmlunit.HtmlUnitFacesITCase;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+
+/**
+ * <p>Test Case for JSP Interoperability.</p>
+ */
+
+public class JspIntegration2ITCase extends HtmlUnitFacesITCase {
+
+    // ------------------------------------------------------------ Constructors
+
+
+    /**
+     * Construct a new instance of this test case.
+     *
+     * @param name Name of the test case
+     */
+    public JspIntegration2ITCase(String name) {
+        super(name);
+    }
+
+    // ------------------------------------------------------ Instance Variables
+
+    // ---------------------------------------------------- Overall Test Methods
+
+
+    /**
+     * Return the tests included in this test suite.
+     */
+    public static Test suite() {
+        return (new TestSuite(JspIntegration2ITCase.class));
+    }
+
+    // ------------------------------------------------- Individual Test Methods
+
+    public void test6992760() throws Exception {
+        HtmlPage page = getPage("/faces/jsp/6992760.jsp");
+        assertTrue(page.asText().matches("(?s).*Message:\\s*class\\s*java.lang.String.*"));
+    }
+
+
+
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/jsptest/JspIntegrationITCase.java b/test/servlet30/systest/src/test/java/com/sun/faces/jsptest/JspIntegrationITCase.java
new file mode 100644
index 0000000..8639bcf
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/jsptest/JspIntegrationITCase.java
@@ -0,0 +1,411 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.jsptest;
+
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.sun.faces.htmlunit.HtmlUnitFacesITCase;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+
+/**
+ * <p>Test Case for JSP Interoperability.</p>
+ */
+
+public class JspIntegrationITCase extends HtmlUnitFacesITCase {
+
+    // ------------------------------------------------------------ Constructors
+
+
+    /**
+     * Construct a new instance of this test case.
+     *
+     * @param name Name of the test case
+     */
+    public JspIntegrationITCase(String name) {
+        super(name);
+    }
+
+    // ------------------------------------------------------ Instance Variables
+
+    // ---------------------------------------------------- Overall Test Methods
+
+
+    /**
+     * Set up instance variables required by this test case.
+     */
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+
+
+    /**
+     * Return the tests included in this test suite.
+     */
+    public static Test suite() {
+        return (new TestSuite(JspIntegrationITCase.class));
+    }
+
+
+    /**
+     * Tear down instance variables required by this test case.
+     */
+    public void tearDown() {
+        super.tearDown();
+    }
+
+    // ------------------------------------------------- Individual Test Methods
+
+    // Test dynamically adding and removing components
+
+    public void testJspDynamic01() throws Exception {
+
+//        // Check with children that have explicit ids
+//        checkJspDynamic00();
+//        checkJspDynamic01("",
+//                "[A]{ } [Z]");
+//        checkJspDynamic01("?mode=create&id=C1&value=[1]&javax.faces.ViewState=j_id2:j_id3",
+//                "[A]{ [1] } [Z]");
+//        checkJspDynamic01("?mode=create&id=C2&value=[2]&javax.faces.ViewState=j_id2:j_id4",
+//                "[A]{ [1] [2] } [Z]");
+//        checkJspDynamic01("?mode=create&id=C3&value=[3]&javax.faces.ViewState=j_id2:j_id5",
+//                "[A]{ [1] [2] [3] } [Z]");
+//        checkJspDynamic01("?mode=delete&id=C2&javax.faces.ViewState=j_id2:j_id6",
+//                "[A]{ [1] [3] } [Z]");
+//
+//        checkJspDynamic00();
+//        client = new WebClient();
+//        checkJspDynamic01("",
+//                "[A]{ } [Z]");
+//
+//        // Check with children that do not have ids
+//        /********** PENDING(edburns): pending resolution of 5040235
+//         checkJspDynamic00();
+//         checkJspDynamic01("",
+//         "[A] { } [Z]");
+//         checkJspDynamic01("?mode=create&value=[1]",
+//         "[A] { [1] } [Z]");
+//         checkJspDynamic01("?mode=create&value=[2]",
+//         "[A] { [1] [2] } [Z]");
+//         checkJspDynamic01("?mode=create&value=[3]",
+//         "[A] { [1] [2] [3] } [Z]");
+//         **************/
+//        checkJspDynamic00();
+//        client = new WebClient();
+//        checkJspDynamic01("",
+//                "[A]{ } [Z]");
+    }
+
+    // NOTE:  testJspIncludeXX tests are analogous to testJstlImportXX
+    // tests, but exercise <jsp:include> instead of <c:import>.
+
+    // Test importing JSPs with literal text
+
+    public void testJspInclude01() throws Exception {
+
+        checkJspInclude00();
+        checkJspInclude01();
+        checkJspInclude01();
+
+        checkJspInclude00();
+        checkJspInclude01();
+        checkJspInclude01();
+
+    }
+
+
+    // Test importing JSPs with simple components
+    public void testJspInclude02() throws Exception {
+
+        checkJspInclude00();
+        checkJspInclude02();
+        checkJspInclude02();
+
+        checkJspInclude00();
+        checkJspInclude02();
+        checkJspInclude02();
+
+    }
+
+
+    // Test selectively importing JSPs with simple components (explicit ids)
+    public void testJspInclude03() throws Exception {
+
+//        // Check each individual case multiple times
+//        checkJspInclude00();
+//        checkJspInclude03();
+//        checkJspInclude03a();
+//        checkJspInclude03a();
+//        checkJspInclude03a();
+//        checkJspInclude00();
+//        checkJspInclude03();
+//        checkJspInclude03b();
+//        checkJspInclude03b();
+//        checkJspInclude03b();
+//        checkJspInclude00();
+//        checkJspInclude03();
+//        checkJspInclude03c();
+//        checkJspInclude03c();
+//        checkJspInclude03c();
+//
+//        // Check cases in ascending order
+//        checkJspInclude00();
+//        checkJspInclude03();
+//        checkJspInclude03a();
+//        checkJspInclude03b();
+//        checkJspInclude03c();
+//
+//        // Check cases in descending order
+//        checkJspInclude00();
+//        checkJspInclude03();
+//        checkJspInclude03c();
+//        checkJspInclude03b();
+//        checkJspInclude03a();
+//
+//        // Check cases in random order
+//        checkJspInclude00();
+//        checkJspInclude03();
+//        checkJspInclude03b();
+//        checkJspInclude03a();
+//        checkJspInclude03c();
+
+    }
+
+
+    // Test selectively importing JSPs with simple components (naming container)
+    public void testJspInclude04() throws Exception {
+
+//        // Check each individual case multiple times
+//        checkJspInclude00();
+//        checkJspInclude04();
+//        checkJspInclude04a();
+//        checkJspInclude04a();
+//        checkJspInclude04a();
+//        checkJspInclude00();
+//        checkJspInclude04();
+//        checkJspInclude04b();
+//        checkJspInclude04b();
+//        checkJspInclude04b();
+//        checkJspInclude00();
+//        checkJspInclude04();
+//        checkJspInclude04c();
+//        checkJspInclude04c();
+//        checkJspInclude04c();
+//
+//        // Check cases in ascending order
+//        checkJspInclude00();
+//        checkJspInclude04();
+//        checkJspInclude04a();
+//        checkJspInclude04b();
+//        checkJspInclude04c();
+//
+//        // Check cases in descending order
+//        checkJspInclude00();
+//        checkJspInclude04();
+//        checkJspInclude04c();
+//        checkJspInclude04b();
+//        checkJspInclude04a();
+//
+//        // Check cases in random order
+//        checkJspInclude00();
+//        checkJspInclude04();
+//        checkJspInclude04b();
+//        checkJspInclude04a();
+//        checkJspInclude04c();
+
+    }
+
+    // --------------------------------------------------------- Private Methods
+
+    // Check the reset page to force a new component tree
+
+    private void checkJspDynamic00() throws Exception {
+
+        HtmlPage page = getPage("/faces/jsp/jsp-dynamic-00.jsp");
+        assertEquals("Correct page title",
+                "jsp-dynamic-00", page.getTitleText());
+
+    }
+
+
+    // Check the result of requesting the specified page
+    private void checkJspDynamic01(String query, String result)
+            throws Exception {
+
+        HtmlPage page = getPage("/faces/jsp/jsp-dynamic-01.jsp" + query);
+        assertEquals("Correct page title",
+                "jsp-dynamic-01", page.getTitleText());
+        String bodyText = getBodyText(page);
+        assertTrue("Correct body element",
+                -1 != bodyText.indexOf(result));
+
+    }
+
+
+    // Check the reset page to force a new component tree
+    private void checkJspInclude00() throws Exception {
+
+        HtmlPage page = getPage("/faces/jsp/jsp-include-00.jsp");
+        assertEquals("Correct page title",
+                "jsp-include-00", page.getTitleText());
+
+    }
+
+
+    // Check imports with literal text
+    private void checkJspInclude01() throws Exception {
+
+        HtmlPage page = getPage("/faces/jsp/jsp-include-01.jsp");
+        assertEquals("Correct page title",
+                "jsp-include-01", page.getTitleText());
+        assertEquals("Correct body element",
+                "[A] [B] [C] [D] [E]", getBodyText(page));
+
+    }
+
+
+    // Check imports with simple components
+    private void checkJspInclude02() throws Exception {
+
+        HtmlPage page = getPage("/faces/jsp/jsp-include-02.jsp");
+        assertEquals("Correct page title",
+                "jsp-include-02", page.getTitleText());
+        assertEquals("Correct body element",
+                "[A][B][C][D][E]", getBodyText(page));
+
+    }
+
+    private void checkJspInclude03() throws Exception {
+
+        HtmlPage page = getPage("/faces/jsp/jsp-include-03.jsp");
+        assertEquals("Correct page title",
+                "jsp-include-03", page.getTitleText());
+        assertEquals("Correct body element",
+                "[1][2c][2x][3]", getBodyText(page));
+
+    }
+
+
+    // Check selective imports with simple components (explicit ids)
+    private void checkJspInclude03a() throws Exception {
+
+        HtmlPage page = getPage("/faces/jsp/jsp-include-03.jsp?choose=a&javax.faces.ViewState=j_id2:j_id3");
+        assertEquals("Correct page title",
+                "jsp-include-03", page.getTitleText());
+        assertEquals("Correct body element",
+                "[1][2a][2z][3]", getBodyText(page));
+
+    }
+
+
+    // Check selective imports with simple components (explicit ids)
+    private void checkJspInclude03b() throws Exception {
+
+        HtmlPage page = getPage("/faces/jsp/jsp-include-03.jsp?choose=b&javax.faces.ViewState=j_id2:j_id3");
+        assertEquals("Correct page title",
+                "jsp-include-03", page.getTitleText());
+        assertEquals("Correct body element",
+                "[1][2b][2y][3]", getBodyText(page));
+
+    }
+
+
+    // Check selective imports with simple components (explicit ids)
+    private void checkJspInclude03c() throws Exception {
+
+        HtmlPage page = getPage("/faces/jsp/jsp-include-03.jsp?choose=c&javax.faces.ViewState=j_id2:j_id3");
+        assertEquals("Correct page title",
+                "jsp-include-03", page.getTitleText());
+        assertEquals("Correct body element",
+                "[1][2c][2x][3]", getBodyText(page));
+
+    }
+
+    private void checkJspInclude04() throws Exception {
+
+        HtmlPage page = getPage("/faces/jsp/jsp-include-04.jsp");
+        assertEquals("Correct page title",
+                "jsp-include-04", page.getTitleText());
+        assertEquals("Correct body element",
+                "[1][2c][2x][3]", getBodyText(page));
+
+    }
+
+
+    // Check selective imports with simple components (naming container)
+    private void checkJspInclude04a() throws Exception {
+
+        HtmlPage page = getPage("/faces/jsp/jsp-include-04.jsp?choose=a&javax.faces.ViewState=j_id2:j_id3");
+        assertEquals("Correct page title",
+                "jsp-include-04", page.getTitleText());
+        assertEquals("Correct body element",
+                "[1][2a][2z][3]", getBodyText(page));
+
+    }
+
+
+    // Check selective imports with simple components (naming container)
+    private void checkJspInclude04b() throws Exception {
+
+        HtmlPage page = getPage("/faces/jsp/jsp-include-04.jsp?choose=b&javax.faces.ViewState=j_id2:j_id3");
+        assertEquals("Correct page title",
+                "jsp-include-04", page.getTitleText());
+        assertEquals("Correct body element",
+                "[1][2b][2y][3]", getBodyText(page));
+
+    }
+
+
+    // Check selective imports with simple components (naming container)
+    private void checkJspInclude04c() throws Exception {
+
+        HtmlPage page = getPage("/faces/jsp/jsp-include-04.jsp?choose=c&javax.faces.ViewState=j_id2:j_id3");
+        assertEquals("Correct page title",
+                "jsp-include-04", page.getTitleText());
+        assertEquals("Correct body element",
+                "[1][2c][2x][3]", getBodyText(page));
+
+    }
+
+
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/jsptest/JstlIntegrationITCase.java b/test/servlet30/systest/src/test/java/com/sun/faces/jsptest/JstlIntegrationITCase.java
new file mode 100644
index 0000000..aa2e139
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/jsptest/JstlIntegrationITCase.java
@@ -0,0 +1,911 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.jsptest;
+
+
+import com.gargoylesoftware.htmlunit.html.HtmlForm;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
+import com.sun.faces.htmlunit.HtmlUnitFacesITCase;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+import javax.faces.component.NamingContainer;
+
+
+/**
+ * <p>Test Case for JSTL Interoperability.</p>
+ */
+
+public class JstlIntegrationITCase extends HtmlUnitFacesITCase {
+
+    // ------------------------------------------------------------ Constructors
+
+
+    /**
+     * Construct a new instance of this test case.
+     *
+     * @param name Name of the test case
+     */
+    public JstlIntegrationITCase(String name) {
+        super(name);
+    }
+
+    // ------------------------------------------------------ Instance Variables
+
+    // ---------- jstl-foreach-01.jsp values ----------
+
+    private String jstlForEach01_name = "jstlForeach01_form";
+
+    private String jstlForEach01_names[] =
+            {"arrayProp0", "arrayProp1", "arrayProp2", "arrayProp3", "arrayProp4"};
+
+    private String jstlForEach01_pristine[] =
+            {
+                    "First String", "Second String", "Third String", "Fourth String",
+                    "Fifth String"
+            };
+
+    private String jstlForEach01_updated[] =
+            {
+                    "New First String", "Second String", "Third String", "New Fourth String",
+                    "Fifth String"
+            };
+
+    // ---------------------------------------------------- Overall Test Methods
+
+
+    /**
+     * Set up instance variables required by this test case.
+     */
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+
+
+    /**
+     * Return the tests included in this test suite.
+     */
+    public static Test suite() {
+        return (new TestSuite(JstlIntegrationITCase.class));
+    }
+
+
+    /**
+     * Tear down instance variables required by this test case.
+     */
+    public void tearDown() {
+        super.tearDown();
+    }
+
+    // ------------------------------------------------- Individual Test Methods
+
+    public void testEmpty() {
+    }
+
+
+    /**
+     * ******************* PENDING(): re-enable these when we figure
+     * out how to do c:forEach.
+     * <p/>
+     * // Components Inside Choose (Explicit Identifiers)
+     * public void testJstlChoose01() throws Exception {
+     * <p/>
+     * // Check each individual case multiple times
+     * checkJstlChoose00();
+     * checkJstlChoose01a();
+     * checkJstlChoose01a();
+     * checkJstlChoose01a();
+     * checkJstlChoose00();
+     * checkJstlChoose01b();
+     * checkJstlChoose01b();
+     * checkJstlChoose01b();
+     * checkJstlChoose00();
+     * checkJstlChoose01c();
+     * checkJstlChoose01c();
+     * checkJstlChoose01c();
+     * <p/>
+     * // Check cases in ascending order
+     * checkJstlChoose00();
+     * checkJstlChoose01a();
+     * checkJstlChoose01b();
+     * checkJstlChoose01c();
+     * <p/>
+     * // Check cases in descending order
+     * checkJstlChoose00();
+     * checkJstlChoose01c();
+     * checkJstlChoose01b();
+     * checkJstlChoose01a();
+     * <p/>
+     * // Check cases in random order
+     * checkJstlChoose00();
+     * checkJstlChoose01b();
+     * checkJstlChoose01a();
+     * checkJstlChoose01c();
+     * <p/>
+     * }
+     * <p/>
+     * <p/>
+     * // Components Inside Choose (In Naming Container)
+     * public void testJstlChoose02() throws Exception {
+     * <p/>
+     * // Check each individual case multiple times
+     * checkJstlChoose00();
+     * checkJstlChoose02a();
+     * checkJstlChoose02a();
+     * checkJstlChoose02a();
+     * checkJstlChoose00();
+     * checkJstlChoose02b();
+     * checkJstlChoose02b();
+     * checkJstlChoose02b();
+     * checkJstlChoose00();
+     * checkJstlChoose02c();
+     * checkJstlChoose02c();
+     * checkJstlChoose02c();
+     * <p/>
+     * // Check cases in ascending order
+     * checkJstlChoose00();
+     * checkJstlChoose02a();
+     * checkJstlChoose02b();
+     * checkJstlChoose02c();
+     * <p/>
+     * // Check cases in descending order
+     * checkJstlChoose00();
+     * checkJstlChoose02c();
+     * checkJstlChoose02b();
+     * checkJstlChoose02a();
+     * <p/>
+     * // Check cases in random order
+     * checkJstlChoose00();
+     * checkJstlChoose02b();
+     * checkJstlChoose02a();
+     * checkJstlChoose02c();
+     * <p/>
+     * }
+     * <p/>
+     * <p/>
+     * // Form with fields rendered inside a <c:forEach> - pristine
+     * public void testJstForEach01_pristine() throws Exception {
+     * <p/>
+     * checkJstlForEach00();
+     * checkJstlForEach01(getJstlForEach01(), jstlForEach01_pristine);
+     * checkJstlForEach00();
+     * checkJstlForEach01(getJstlForEach01(), jstlForEach01_pristine);
+     * checkJstlForEach00();
+     * <p/>
+     * }
+     * <p/>
+     * <p/>
+     * // Form with fields rendered inside a <c:forEach> - submit unchanged
+     * public void testJstForEach01_submit01() throws Exception {
+     * <p/>
+     * checkJstlForEach00();
+     * HtmlPage page = getJstlForEach01();
+     * checkJstlForEach01(page, jstlForEach01_pristine);
+     * HtmlForm form = getFormById(page, jstlForEach01_name);
+     * assertNotNull("form exists", form);
+     * HtmlSubmitInput submit = (HtmlSubmitInput)
+     * form.getInputByName(jstlForEach01_name +
+     * NamingContainer.SEPARATOR_CHAR +
+     * "submit");
+     * page = (HtmlPage) submit.click();
+     * checkJstlForEach01(page, jstlForEach01_pristine);
+     * checkJstlForEach00();
+     * <p/>
+     * }
+     * <p/>
+     * <p/>
+     * // Form with fields rendered inside a <c:forEach> - submit modified
+     * public void testJstForEach01_submit02() throws Exception {
+     * <p/>
+     * checkJstlForEach00();
+     * HtmlPage page = getJstlForEach01();
+     * checkJstlForEach01(page, jstlForEach01_pristine);
+     * HtmlForm form = getFormById(page, jstlForEach01_name);
+     * assertNotNull("form exists", form);
+     * for (int i = 0; i < jstlForEach01_names.length; i++) {
+     * HtmlTextInput input = (HtmlTextInput)
+     * form.getInputByName(jstlForEach01_name +
+     * NamingContainer.SEPARATOR_CHAR +
+     * jstlForEach01_names[i]);
+     * assertNotNull("field '" + jstlForEach01_names[i] + "' exists", input);
+     * input.setValueAttribute(jstlForEach01_updated[i]);
+     * }
+     * HtmlSubmitInput submit = (HtmlSubmitInput)
+     * form.getInputByName(jstlForEach01_name + NamingContainer.SEPARATOR_CHAR +
+     * "submit");
+     * page = (HtmlPage) submit.click();
+     * checkJstlForEach01(page, jstlForEach01_updated);
+     * checkJstlForEach00();
+     * <p/>
+     * }
+     * <p/>
+     * <p/>
+     * // Components Inside Conditional
+     * public void testJstlIf01() throws Exception {
+     * <p/>
+     * // Check the "true" case multiple times in a row
+     * checkJstlIf00();
+     * checkJstlIf01a();
+     * checkJstlIf01a();
+     * checkJstlIf01a();
+     * checkJstlIf01a();
+     * <p/>
+     * // Check the "false case multiple times in a row
+     * checkJstlIf00();
+     * checkJstlIf01b();
+     * checkJstlIf01b();
+     * checkJstlIf01b();
+     * checkJstlIf01b();
+     * <p/>
+     * // Check alternating access to the same page (first pattern)
+     * checkJstlIf00();
+     * checkJstlIf01a();
+     * checkJstlIf01b();
+     * checkJstlIf01a();
+     * checkJstlIf01b();
+     * <p/>
+     * // Check alternating access to the same page (second pattern)
+     * checkJstlIf00();
+     * checkJstlIf01b();
+     * checkJstlIf01a();
+     * checkJstlIf01b();
+     * checkJstlIf01a();
+     * <p/>
+     * }
+     * <p/>
+     * <p/>
+     * // Components and facets inside conditional
+     * public void testJstlIf02() throws Exception {
+     * <p/>
+     * // Check each style sequentially
+     * checkJstlIf00();
+     * checkJstlIf02a();
+     * checkJstlIf02a();
+     * checkJstlIf02a();
+     * checkJstlIf00();
+     * checkJstlIf02b();
+     * checkJstlIf02b();
+     * checkJstlIf02b();
+     * checkJstlIf00();
+     * checkJstlIf02c();
+     * checkJstlIf02c();
+     * checkJstlIf02c();
+     * checkJstlIf00();
+     * checkJstlIf02d();
+     * checkJstlIf02d();
+     * checkJstlIf02d();
+     * checkJstlIf00();
+     * checkJstlIf02e();
+     * checkJstlIf02e();
+     * checkJstlIf02e();
+     * <p/>
+     * // Check each style in ascending order
+     * checkJstlIf00();
+     * checkJstlIf02a();
+     * checkJstlIf02b();
+     * checkJstlIf02c();
+     * checkJstlIf02d();
+     * checkJstlIf02e();
+     * <p/>
+     * // Check each style in descending order
+     * checkJstlIf00();
+     * checkJstlIf02e();
+     * checkJstlIf02d();
+     * checkJstlIf02c();
+     * checkJstlIf02b();
+     * checkJstlIf02a();
+     * <p/>
+     * // Check each style in a more random order
+     * checkJstlIf00();
+     * checkJstlIf02c();
+     * checkJstlIf02e();
+     * checkJstlIf02a();
+     * checkJstlIf02d();
+     * checkJstlIf02b();
+     * <p/>
+     * }
+     * <p/>
+     * <p/>
+     * // Component and Template Text Inside Conditional
+     * public void testJstlIf03() throws Exception {
+     * <p/>
+     * // Check the "true" case multiple times in a row
+     * checkJstlIf00();
+     * checkJstlIf03a();
+     * checkJstlIf03a();
+     * checkJstlIf03a();
+     * checkJstlIf03a();
+     * <p/>
+     * // Check the "false case multiple times in a row
+     * checkJstlIf00();
+     * checkJstlIf03b();
+     * checkJstlIf03b();
+     * checkJstlIf03b();
+     * checkJstlIf03b();
+     * <p/>
+     * // Check alternating access to the same page (first pattern)
+     * checkJstlIf00();
+     * checkJstlIf03a();
+     * checkJstlIf03b();
+     * checkJstlIf03a();
+     * checkJstlIf03b();
+     * <p/>
+     * // Check alternating access to the same page (second pattern)
+     * checkJstlIf00();
+     * checkJstlIf03b();
+     * checkJstlIf03a();
+     * checkJstlIf03b();
+     * checkJstlIf03a();
+     * <p/>
+     * }
+     * <p/>
+     * <p/>
+     * // Renders-Child Component Inside Conditional (no nested template text) (
+     * public void testJstlIf04() throws Exception {
+     * <p/>
+     * // Check the "true" case multiple times in a row
+     * checkJstlIf00();
+     * checkJstlIf04a();
+     * checkJstlIf04a();
+     * checkJstlIf04a();
+     * checkJstlIf04a();
+     * <p/>
+     * // Check the "false case multiple times in a row
+     * checkJstlIf00();
+     * checkJstlIf04b();
+     * checkJstlIf04b();
+     * checkJstlIf04b();
+     * checkJstlIf04b();
+     * <p/>
+     * // Check alternating access to the same page (first pattern)
+     * checkJstlIf00();
+     * checkJstlIf04a();
+     * checkJstlIf04b();
+     * checkJstlIf04a();
+     * checkJstlIf04b();
+     * <p/>
+     * // Check alternating access to the same page (second pattern)
+     * checkJstlIf00();
+     * checkJstlIf04b();
+     * checkJstlIf04a();
+     * checkJstlIf04b();
+     * checkJstlIf04a();
+     * <p/>
+     * }
+     * <p/>
+     * <p/>
+     * // Test importing JSPs with literal text
+     * public void testJstlImport01() throws Exception {
+     * <p/>
+     * checkJstlImport00();
+     * checkJstlImport01();
+     * checkJstlImport01();
+     * <p/>
+     * checkJstlImport00();
+     * checkJstlImport01();
+     * checkJstlImport01();
+     * <p/>
+     * }
+     * <p/>
+     * <p/>
+     * // Test importing JSPs with simple components
+     * public void testJstlImport02() throws Exception {
+     * <p/>
+     * checkJstlImport00();
+     * checkJstlImport02();
+     * checkJstlImport02();
+     * <p/>
+     * checkJstlImport00();
+     * checkJstlImport02();
+     * checkJstlImport02();
+     * <p/>
+     * }
+     * <p/>
+     * <p/>
+     * // Test selectively importing JSPs with simple components (explicit ids)
+     * public void testJstlImport03() throws Exception {
+     * <p/>
+     * // Check each individual case multiple times
+     * checkJstlImport00();
+     * checkJstlImport03a();
+     * checkJstlImport03a();
+     * checkJstlImport03a();
+     * checkJstlImport00();
+     * checkJstlImport03b();
+     * checkJstlImport03b();
+     * checkJstlImport03b();
+     * checkJstlImport00();
+     * checkJstlImport03c();
+     * checkJstlImport03c();
+     * checkJstlImport03c();
+     * <p/>
+     * // Check cases in ascending order
+     * checkJstlImport00();
+     * checkJstlImport03a();
+     * checkJstlImport03b();
+     * checkJstlImport03c();
+     * <p/>
+     * // Check cases in descending order
+     * checkJstlImport00();
+     * checkJstlImport03c();
+     * checkJstlImport03b();
+     * checkJstlImport03a();
+     * <p/>
+     * // Check cases in random order
+     * checkJstlImport00();
+     * checkJstlImport03b();
+     * checkJstlImport03a();
+     * checkJstlImport03c();
+     * <p/>
+     * }
+     * <p/>
+     * <p/>
+     * // Test selectively importing JSPs with simple components (naming container)
+     * public void testJstlImport04() throws Exception {
+     * <p/>
+     * // Check each individual case multiple times
+     * checkJstlImport00();
+     * checkJstlImport04a();
+     * checkJstlImport04a();
+     * checkJstlImport04a();
+     * checkJstlImport00();
+     * checkJstlImport04b();
+     * checkJstlImport04b();
+     * checkJstlImport04b();
+     * checkJstlImport00();
+     * checkJstlImport04c();
+     * checkJstlImport04c();
+     * checkJstlImport04c();
+     * <p/>
+     * // Check cases in ascending order
+     * checkJstlImport00();
+     * checkJstlImport04a();
+     * checkJstlImport04b();
+     * checkJstlImport04c();
+     * <p/>
+     * // Check cases in descending order
+     * checkJstlImport00();
+     * checkJstlImport04c();
+     * checkJstlImport04b();
+     * checkJstlImport04a();
+     * <p/>
+     * // Check cases in random order
+     * checkJstlImport00();
+     * checkJstlImport04b();
+     * checkJstlImport04a();
+     * checkJstlImport04c();
+     * <p/>
+     * }
+     * <p/>
+     * <p/>
+     * **************************************
+     */
+
+    // --------------------------------------------------------- Private Methods
+
+    // Check the reset page to force a new component tree
+    private void checkJstlChoose00() throws Exception {
+
+        HtmlPage page = getPage("/faces/jsp/jstl-choose-00.jsp");
+        assertEquals("Correct page title",
+                "jstl-choose-00", page.getTitleText());
+
+    }
+
+
+    // Check chosen components with explicit ids
+    private void checkJstlChoose01a() throws Exception {
+
+        HtmlPage page = getPage("/faces/jsp/jstl-choose-01.jsp?choose=a");
+        assertEquals("Correct page title",
+                "jstl-choose-01", page.getTitleText());
+        assertEquals("Correct body element",
+                "[1] [2a] [2z] [3]", getBodyText(page));
+
+    }
+
+
+    // Check chosen components with explicit ids
+    private void checkJstlChoose01b() throws Exception {
+
+        HtmlPage page = getPage("/faces/jsp/jstl-choose-01.jsp?choose=b");
+        assertEquals("Correct page title",
+                "jstl-choose-01", page.getTitleText());
+        assertEquals("Correct body element",
+                "[1] [2b] [2y] [3]", getBodyText(page));
+
+    }
+
+
+    // Check chosen components with explicit ids
+    private void checkJstlChoose01c() throws Exception {
+
+        HtmlPage page = getPage("/faces/jsp/jstl-choose-01.jsp?choose=c");
+        assertEquals("Correct page title",
+                "jstl-choose-01", page.getTitleText());
+        assertEquals("Correct body element",
+                "[1] [2c] [2x] [3]", getBodyText(page));
+
+    }
+
+
+    // Check chosen components with naming containers
+    private void checkJstlChoose02a() throws Exception {
+
+        HtmlPage page = getPage("/faces/jsp/jstl-choose-02.jsp?choose=a");
+        assertEquals("Correct page title",
+                "jstl-choose-02", page.getTitleText());
+        assertEquals("Correct body element",
+                "[1] [2a] [2z] [3]", getBodyText(page));
+
+    }
+
+
+    // Check chosen components with naming containers
+    private void checkJstlChoose02b() throws Exception {
+
+        HtmlPage page = getPage("/faces/jsp/jstl-choose-02.jsp?choose=b");
+        assertEquals("Correct page title",
+                "jstl-choose-02", page.getTitleText());
+        assertEquals("Correct body element",
+                "[1] [2b] [2y] [3]", getBodyText(page));
+
+    }
+
+
+    // Check chosen components with naming containers
+    private void checkJstlChoose02c() throws Exception {
+
+        HtmlPage page = getPage("/faces/jsp/jstl-choose-02.jsp?choose=c");
+        assertEquals("Correct page title",
+                "jstl-choose-02", page.getTitleText());
+        assertEquals("Correct body element",
+                "[1] [2c] [2x] [3]", getBodyText(page));
+
+    }
+
+
+    // Check the reset page to force a new component tree
+    private void checkJstlForEach00() throws Exception {
+
+        HtmlPage page = getPage("/faces/jsp/jstl-foreach-00.jsp");
+        assertEquals("Correct page title",
+                "jstl-foreach-00", page.getTitleText());
+
+    }
+
+
+    // Check the values of the input fields against the specified list
+    private void checkJstlForEach01(HtmlPage page, String expected[]) {
+
+
+        assertEquals("Correct page title",
+                "jstl-foreach-01", page.getTitleText());
+        HtmlForm form = getFormById(page, jstlForEach01_name);
+        assertNotNull("form exists", form);
+        for (int i = 0; i < expected.length; i++) {
+            HtmlTextInput input = (HtmlTextInput)
+                    form.getInputByName(jstlForEach01_name +
+                            NamingContainer.SEPARATOR_CHAR +
+                            jstlForEach01_names[i]);
+            assertNotNull("field '" + jstlForEach01_names[i] + "' exists",
+                    input);
+            assertEquals("field '" + jstlForEach01_names[i] + "' value",
+                    expected[i], input.getValueAttribute());
+        }
+
+    }
+
+
+    // Check the reset page to force a new component tree
+    private void checkJstlIf00() throws Exception {
+
+        HtmlPage page = getPage("/faces/jsp/jstl-if-00.jsp");
+        assertEquals("Correct page title",
+                "jstl-if-00", page.getTitleText());
+
+    }
+
+
+    // Check the actual conditional page with a "true" flag
+    private void checkJstlIf01a() throws Exception {
+
+        HtmlPage page = getPage("/faces/jsp/jstl-if-01.jsp?cond=true");
+        assertEquals("Correct page title",
+                "jstl-if-01", page.getTitleText());
+        assertEquals("Correct body element",
+                "[First] [Second] [Third]", getBodyText(page));
+
+    }
+
+
+    // Check the actual conditional page with a "false" flag
+    private void checkJstlIf01b() throws Exception {
+
+        HtmlPage page = getPage("/faces/jsp/jstl-if-01.jsp?cond=false");
+        assertEquals("Correct page title",
+                "jstl-if-01", page.getTitleText());
+        assertEquals("Correct body element",
+                "[First] [Third]", getBodyText(page));
+
+    }
+
+
+    // Check the actual facet page with true/true/true flags
+    private void checkJstlIf02a() throws Exception {
+
+        HtmlPage page = getPage
+                (
+                        "/faces/jsp/jstl-if-02.jsp?component=true&header=true&footer=true");
+        assertEquals("Correct page title",
+                "jstl-if-02", page.getTitleText());
+        assertEquals("Correct body element",
+                "[First] [Header] [Second] [Footer] [Third]",
+                getBodyText(page));
+
+    }
+
+
+    // Check the actual facet page with true/true/false flags
+    private void checkJstlIf02b() throws Exception {
+
+        HtmlPage page = getPage
+                (
+                        "/faces/jsp/jstl-if-02.jsp?component=true&header=true&footer=false");
+        assertEquals("Correct page title",
+                "jstl-if-02", page.getTitleText());
+        assertEquals("Correct body element",
+                "[First] [Header] [Second] [] [Third]",
+                getBodyText(page));
+
+    }
+
+
+    // Check the actual facet page with true/false/true flags
+    private void checkJstlIf02c() throws Exception {
+
+        HtmlPage page = getPage
+                (
+                        "/faces/jsp/jstl-if-02.jsp?component=true&header=false&footer=true");
+        assertEquals("Correct page title",
+                "jstl-if-02", page.getTitleText());
+        assertEquals("Correct body element",
+                "[First] [] [Second] [Footer] [Third]",
+                getBodyText(page));
+
+    }
+
+
+    // Check the actual facet page with true/false/false flags
+    private void checkJstlIf02d() throws Exception {
+
+        HtmlPage page = getPage
+                (
+                        "/faces/jsp/jstl-if-02.jsp?component=true&header=false&footer=false");
+        assertEquals("Correct page title",
+                "jstl-if-02", page.getTitleText());
+        assertEquals("Correct body element",
+                "[First] [] [Second] [] [Third]",
+                getBodyText(page));
+
+    }
+
+
+    // Check the actual facet page with false/true/true flags
+    private void checkJstlIf02e() throws Exception {
+
+        HtmlPage page = getPage
+                (
+                        "/faces/jsp/jstl-if-02.jsp?component=false&header=true&footer=true");
+        assertEquals("Correct page title",
+                "jstl-if-02", page.getTitleText());
+        assertEquals("Correct body element",
+                "[First] [Third]",
+                getBodyText(page));
+
+    }
+
+
+    // Check the actual template page with a "true" flag
+    private void checkJstlIf03a() throws Exception {
+
+        HtmlPage page = getPage("/faces/jsp/jstl-if-03.jsp?cond=true");
+        assertEquals("Correct page title",
+                "jstl-if-03", page.getTitleText());
+        assertEquals("Correct body element",
+                "[1] [2] [3] [4] [5]", getBodyText(page));
+
+    }
+
+
+    // Check the actual conditional page with a "false" flag
+    private void checkJstlIf03b() throws Exception {
+
+        HtmlPage page = getPage("/faces/jsp/jstl-if-03.jsp?cond=false");
+        assertEquals("Correct page title",
+                "jstl-if-03", page.getTitleText());
+        assertEquals("Correct body element",
+                "[1] [5]", getBodyText(page));
+
+    }
+
+
+    // Check the actual conditional page with a "true" flag
+    private void checkJstlIf04a() throws Exception {
+
+        HtmlPage page = getPage("/faces/jsp/jstl-if-04.jsp?cond=true");
+        assertEquals("Correct page title",
+                "jstl-if-04", page.getTitleText());
+        assertEquals("Correct body element",
+                "[1] [2] [3] { [4a] [4b] [4c] } [5] [6] [7]",
+                getBodyText(page));
+
+    }
+
+
+    // Check the actual conditional page with a "false" flag
+    private void checkJstlIf04b() throws Exception {
+
+        HtmlPage page = getPage("/faces/jsp/jstl-if-04.jsp?cond=false");
+        assertEquals("Correct page title",
+                "jstl-if-04", page.getTitleText());
+        assertEquals("Correct body element",
+                "[1] [7]", getBodyText(page));
+
+    }
+
+
+    // Check the reset page to force a new component tree
+    private void checkJstlImport00() throws Exception {
+
+        HtmlPage page = getPage("/faces/jsp/jstl-import-00.jsp");
+        assertEquals("Correct page title",
+                "jstl-import-00", page.getTitleText());
+
+    }
+
+
+    // Check imports with literal text
+    private void checkJstlImport01() throws Exception {
+
+        HtmlPage page = getPage("/faces/jsp/jstl-import-01.jsp");
+        assertEquals("Correct page title",
+                "jstl-import-01", page.getTitleText());
+        assertEquals("Correct body element",
+                "[A] [B] [C] [D] [E]", getBodyText(page));
+
+    }
+
+
+    // Check imports with simple components
+    private void checkJstlImport02() throws Exception {
+
+        HtmlPage page = getPage("/faces/jsp/jstl-import-02.jsp");
+        assertEquals("Correct page title",
+                "jstl-import-02", page.getTitleText());
+        assertEquals("Correct body element",
+                "[A] [B] [C] [D] [E]", getBodyText(page));
+
+    }
+
+
+    // Check selective imports with simple components (explicit ids)
+    private void checkJstlImport03a() throws Exception {
+
+        HtmlPage page = getPage("/faces/jsp/jstl-import-03.jsp?choose=a");
+        assertEquals("Correct page title",
+                "jstl-import-03", page.getTitleText());
+        assertEquals("Correct body element",
+                "[1] [2a][2z] [3]", getBodyText(page));
+
+    }
+
+
+    // Check selective imports with simple components (explicit ids)
+    private void checkJstlImport03b() throws Exception {
+
+        HtmlPage page = getPage("/faces/jsp/jstl-import-03.jsp?choose=b");
+        assertEquals("Correct page title",
+                "jstl-import-03", page.getTitleText());
+        assertEquals("Correct body element",
+                "[1] [2b][2y] [3]", getBodyText(page));
+
+    }
+
+
+    // Check selective imports with simple components (explicit ids)
+    private void checkJstlImport03c() throws Exception {
+
+        HtmlPage page = getPage("/faces/jsp/jstl-import-03.jsp?choose=c");
+        assertEquals("Correct page title",
+                "jstl-import-03", page.getTitleText());
+        assertEquals("Correct body element",
+                "[1] [2c][2x] [3]", getBodyText(page));
+
+    }
+
+
+    // Check selective imports with simple components (naming container)
+    private void checkJstlImport04a() throws Exception {
+
+        HtmlPage page = getPage("/faces/jsp/jstl-import-04.jsp?choose=a");
+        assertEquals("Correct page title",
+                "jstl-import-04", page.getTitleText());
+        assertEquals("Correct body element",
+                "[1] [2a][2z] [3]", getBodyText(page));
+
+    }
+
+
+    // Check selective imports with simple components (naming container)
+    private void checkJstlImport04b() throws Exception {
+
+        HtmlPage page = getPage("/faces/jsp/jstl-import-04.jsp?choose=b");
+        assertEquals("Correct page title",
+                "jstl-import-04", page.getTitleText());
+        assertEquals("Correct body element",
+                "[1] [2b][2y] [3]", getBodyText(page));
+
+    }
+
+
+    // Check selective imports with simple components (naming container)
+    private void checkJstlImport04c() throws Exception {
+
+        HtmlPage page = getPage("/faces/jsp/jstl-import-04.jsp?choose=c");
+        assertEquals("Correct page title",
+                "jstl-import-04", page.getTitleText());
+        assertEquals("Correct body element",
+                "[1] [2c][2x] [3]", getBodyText(page));
+
+    }
+
+
+    // Retrieve the jstl-foreach-01 page
+    private HtmlPage getJstlForEach01() throws Exception {
+
+        return (getPage("/faces/jsp/jstl-foreach-01.jsp"));
+
+    }
+
+
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/jsptest/LocaleITCase.java b/test/servlet30/systest/src/test/java/com/sun/faces/jsptest/LocaleITCase.java
new file mode 100644
index 0000000..1732aac
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/jsptest/LocaleITCase.java
@@ -0,0 +1,113 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.jsptest;
+
+
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.sun.faces.htmlunit.HtmlUnitFacesITCase;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+
+/**
+ * <p>Test Case for JSP Interoperability.</p>
+ */
+
+public class LocaleITCase extends HtmlUnitFacesITCase {
+
+    // ------------------------------------------------------------ Constructors
+
+
+    /**
+     * Construct a new instance of this test case.
+     *
+     * @param name Name of the test case
+     */
+    public LocaleITCase(String name) {
+        super(name);
+    }
+
+    // ------------------------------------------------------ Instance Variables
+
+    // ---------------------------------------------------- Overall Test Methods
+
+
+    /**
+     * Set up instance variables required by this test case.
+     */
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+
+
+    /**
+     * Return the tests included in this test suite.
+     */
+    public static Test suite() {
+        return (new TestSuite(LocaleITCase.class));
+    }
+
+
+    /**
+     * Tear down instance variables required by this test case.
+     */
+    public void tearDown() {
+        super.tearDown();
+    }
+
+    // ------------------------------------------------- Individual Test Methods
+
+    // Test dynamically adding and removing components
+
+    public void testLocaleAndEncoding() throws Exception {
+        client.addRequestHeader("Content-Type",
+                "text/html; charset=ISO-8859-4");
+        HtmlPage page = getPage("/faces/renderkit02A.jsp");
+        // PENDING(edburns): when you figure out why the encoding
+        // doesn't get passed through, fix this.
+        boolean correct =
+                page.getPageEncoding().equals("ISO-8859-1") ||
+                        page.getPageEncoding().equals("ISO-8859-4");
+        assertTrue("Encoding not as expected", correct);
+    }
+
+
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/jsptest/MissingActionListenerMethodITCase.java b/test/servlet30/systest/src/test/java/com/sun/faces/jsptest/MissingActionListenerMethodITCase.java
new file mode 100644
index 0000000..1681a8f
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/jsptest/MissingActionListenerMethodITCase.java
@@ -0,0 +1,85 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.jsptest;
+
+
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import com.sun.faces.htmlunit.HtmlUnitFacesITCase;
+import junit.framework.Assert;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+
+/**
+ * @author Jason Lee
+ */
+
+public class MissingActionListenerMethodITCase extends HtmlUnitFacesITCase {
+    // ------------------------------------------------------------ Constructors
+    /**
+     * Construct a new instance of this test case.
+     *
+     * @param name Name of the test case
+     */
+    public MissingActionListenerMethodITCase(String name) {
+        super(name);
+    }
+
+    /**
+     * Return the tests included in this test suite.
+     */
+    public static Test suite() {
+        return (new TestSuite(MissingActionListenerMethodITCase.class));
+    }
+
+    // ------------------------------------------------- Individual Test Methods
+
+    public void testMissingActionListenerMethod() throws Exception {
+        HtmlPage page = getPage("/faces/jsp/testMissingActionListenerMethod.jsp");
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getHtmlElementById("testForm:testButton");
+        try {
+            button.click();
+            Assert.fail();
+        } catch (Exception e) {
+        }
+    }
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/jsptest/MissingViewITCase.java b/test/servlet30/systest/src/test/java/com/sun/faces/jsptest/MissingViewITCase.java
new file mode 100644
index 0000000..0cf5183
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/jsptest/MissingViewITCase.java
@@ -0,0 +1,109 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.jsptest;
+
+
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.sun.faces.htmlunit.HtmlUnitFacesITCase;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+
+/**
+ * <p>Verify that we have an intelligent error message when the user
+ * forgets the view tag.</p>
+ */
+
+public class MissingViewITCase extends HtmlUnitFacesITCase {
+
+    // ------------------------------------------------------------ Constructors
+
+
+    /**
+     * Construct a new instance of this test case.
+     *
+     * @param name Name of the test case
+     */
+    public MissingViewITCase(String name) {
+        super(name);
+    }
+
+    // ------------------------------------------------------ Instance Variables
+
+    // ---------------------------------------------------- Overall Test Methods
+
+
+    /**
+     * Set up instance variables required by this test case.
+     */
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+
+
+    /**
+     * Return the tests included in this test suite.
+     */
+    public static Test suite() {
+        return (new TestSuite(MissingViewITCase.class));
+    }
+
+
+    /**
+     * Tear down instance variables required by this test case.
+     */
+    public void tearDown() {
+        super.tearDown();
+    }
+
+    // ------------------------------------------------------ Instance Variables
+
+    // ------------------------------------------------- Individual Test Methods
+
+    public void testMissingView() throws Exception {
+        client.setThrowExceptionOnFailingStatusCode(false);
+        HtmlPage page = getPage("/faces/jsp/missing-view.jsp");
+        assertTrue(-1 != page.asText().indexOf("UIViewRoot"));
+        assertTrue(-1 != page.asText().indexOf("UIForm"));
+
+    }
+
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/jsptest/SelectComponentValueITCase.java b/test/servlet30/systest/src/test/java/com/sun/faces/jsptest/SelectComponentValueITCase.java
new file mode 100644
index 0000000..0693e14
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/jsptest/SelectComponentValueITCase.java
@@ -0,0 +1,331 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.jsptest;
+
+
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlRadioButtonInput;
+import com.gargoylesoftware.htmlunit.html.HtmlSelect;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import com.sun.faces.htmlunit.HtmlUnitFacesITCase;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+import java.util.List;
+import java.util.Random;
+import java.util.ResourceBundle;
+
+
+/**
+ * <p>Verify that required validation occurrs for Select* components.</p>
+ */
+
+public class SelectComponentValueITCase extends HtmlUnitFacesITCase {
+
+    // ------------------------------------------------------------ Constructors
+
+
+    /**
+     * Construct a new instance of this test case.
+     *
+     * @param name Name of the test case
+     */
+    public SelectComponentValueITCase(String name) {
+        super(name);
+    }
+
+    // ------------------------------------------------------ Instance Variables
+
+    // ---------------------------------------------------- Overall Test Methods
+
+
+    /**
+     * Set up instance variables required by this test case.
+     */
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+
+
+    /**
+     * Return the tests included in this test suite.
+     */
+    public static Test suite() {
+        return (new TestSuite(SelectComponentValueITCase.class));
+    }
+
+
+    /**
+     * Tear down instance variables required by this test case.
+     */
+    public void tearDown() {
+        super.tearDown();
+    }
+
+    // ------------------------------------------------------ Instance Variables
+
+    // ------------------------------------------------- Individual Test Methods
+
+    /**
+     * <p>Verify that the required validator works for SelectOne</p>
+     */
+
+    public void testSelectOneNoValue() throws Exception {
+        HtmlPage page = getPage("/faces/jsp/selectOneNoValue.jsp");
+        List list = getAllElementsOfGivenClass(page, null,
+                HtmlSubmitInput.class);
+        HtmlSubmitInput button = (HtmlSubmitInput) list.get(0);
+        page = (HtmlPage) button.click();
+        assertTrue(-1 != page.asText().indexOf("equired"));
+
+    }
+
+    /**
+     * <p>Verify that the required validator works for SelectMany</p>
+     */
+
+    public void testSelectManyNoValue() throws Exception {
+        HtmlPage page = getPage("/faces/jsp/selectManyNoValue.jsp");
+        List list = getAllElementsOfGivenClass(page, null,
+                HtmlSubmitInput.class);
+        HtmlSubmitInput button = (HtmlSubmitInput) list.get(0);
+        page = (HtmlPage) button.click();
+        assertTrue(-1 != page.asText().indexOf("equired"));
+
+    }
+
+    /**
+     * <p>Verify that the conversion error works for SelectMany</p>
+     */
+
+    public void testSelectManyMismatchValue() throws Exception {
+//        HtmlPage page = getPage("/faces/jsp/selectManyMismatchValue.jsp");
+//        List list = getAllElementsOfGivenClass(page, null,
+//                HtmlSubmitInput.class);
+//        HtmlSubmitInput button = (HtmlSubmitInput) list.get(0);
+//        list = getAllElementsOfGivenClass(page, null, HtmlSelect.class);
+//        HtmlSelect options = (HtmlSelect) list.get(0);
+//        String chosen[] = {"one", "three"};
+//        options.setSelectedAttribute("one", true);
+//        options.setSelectedAttribute("three", true);
+//        //options.fakeSelectedAttribute(chosen);
+//        page = (HtmlPage) button.click();
+//        assertTrue(-1 != page.asText().indexOf("one three"));
+//        assertTrue(-1 != page.asText().indexOf("#{test3.selection}"));
+//
+    }
+
+
+    /**
+     * On SelectMany, test that the membership test works and doesn't
+     * produce spurious ValueChangeEvent instances.
+     */
+    public void testSelectManyInvalidValue() throws Exception {
+//        HtmlPage page = getPage("/faces/jsp/selectManyInvalidValue.jsp");
+//        List list = getAllElementsOfGivenClass(page, null,
+//                HtmlSubmitInput.class);
+//        HtmlSubmitInput button = (HtmlSubmitInput) list.get(0);
+//        list = getAllElementsOfGivenClass(page, null, HtmlSelect.class);
+//        HtmlSelect options = (HtmlSelect) list.get(0);
+//        Random random = new Random(4143);
+//        String str = new String((new Float(random.nextFloat())).toString());
+//
+//        String chosen[] = {
+//                (new Float(random.nextFloat())).toString(),
+//                (new Float(random.nextFloat())).toString()
+//        };
+//        options.setSelectedAttribute((new Float(random.nextFloat())).toString(), true);
+//        options.setSelectedAttribute((new Float(random.nextFloat())).toString(), true);
+//        //options.fakeSelectedAttribute(chosen);
+//        page = (HtmlPage) button.click();
+//        ResourceBundle messages = ResourceBundle.getBundle(
+//                "javax.faces.Messages");
+//        String message = messages.getString("javax.faces.component.UISelectMany.INVALID");
+//        // it does have a validation message
+//        assertTrue(-1 != page.asText().indexOf("Validation Error"));
+//        // it does not have a value change message
+//        assertTrue(-1 == page.asText().indexOf("value changed"));
+    }
+
+
+    /**
+     * run doInvalidTest on UISelectOne
+     */
+
+    public void testSelectOneInvalidValue() throws Exception {
+        HtmlPage page = getPage("/faces/jsp/selectOneInvalidValue.jsp");
+
+        List list = getAllElementsOfGivenClass(page, null,
+                HtmlSubmitInput.class);
+        HtmlSubmitInput button = (HtmlSubmitInput) list.get(0);
+        list = getAllElementsOfGivenClass(page, null,
+                HtmlRadioButtonInput.class);
+        HtmlRadioButtonInput radio = (HtmlRadioButtonInput) list.get(0);
+        radio.setChecked(true);
+        page = (HtmlPage) button.click();
+        ResourceBundle messages = ResourceBundle.getBundle("javax.faces.Messages");
+        String message = messages.getString("javax.faces.component.UIInput.REQUIRED");
+        // it does not have a validation error
+        assertTrue(-1 == page.asText().indexOf(message));
+    }
+
+    public void testSelectOneTypeInt() throws Exception {
+        HtmlPage page = getPage("/faces/jsp/selectOneTypeInt.jsp");
+        List list = getAllElementsOfGivenClass(page, null,
+                HtmlSubmitInput.class);
+        HtmlSubmitInput button = (HtmlSubmitInput) list.get(0);
+        list = getAllElementsOfGivenClass(page, null, HtmlSelect.class);
+        HtmlSelect options = (HtmlSelect) list.get(0);
+
+        String chosen = "2";
+        options.setSelectedAttribute(chosen,true);
+        //options.fakeSelectedAttribute(chosen);
+        page = (HtmlPage) button.click();
+        ResourceBundle messages = ResourceBundle.getBundle(
+                "javax.faces.Messages");
+        String message = messages.getString("javax.faces.component.UISelectMany.INVALID");
+        // it does not have a validation message
+        assertTrue(-1 == page.asText().indexOf("Validation Error"));
+    }
+
+    // Verifies original selection from model is unchanged
+    // when button with immediate="true" is pressed.
+    //
+    public void testSelectOneRadioTypeInteger() throws Exception {
+        HtmlPage page = getPage("/faces/jsp/selectOneRadioTypeInteger.jsp");
+        HtmlSubmitInput nonImmediateButton = null, immediateButton = null;
+        HtmlRadioButtonInput radio1 = null, radio2 = null, radio3 = null;
+        List submitList = getAllElementsOfGivenClass(page, null, HtmlSubmitInput.class);
+        List radioList = getAllElementsOfGivenClass(page, null, HtmlRadioButtonInput.class);
+        radio1 = (HtmlRadioButtonInput) radioList.get(0);
+        radio2 = (HtmlRadioButtonInput) radioList.get(1);
+        radio3 = (HtmlRadioButtonInput) radioList.get(2);
+        for (int i = 0; i < submitList.size(); i++) {
+            HtmlSubmitInput result = (HtmlSubmitInput) submitList.get(i);
+            if (-1 != result.getIdAttribute().indexOf("nonImmediate")) {
+                nonImmediateButton = result;
+            } else {
+                immediateButton = result;
+            }
+        }
+        assertTrue(-1 != page.asText().indexOf("Model Selection:2"));
+
+        // now press the immediate button and verify that our original
+        // selection is there...
+        page = (HtmlPage) immediateButton.click();
+        assertTrue(-1 != page.asText().indexOf("Model Selection:2"));
+
+        // now click the first radio option...
+        radio1.setChecked(true);
+        // now press the immediate button and verify that our original
+        // selection is there...
+        page = (HtmlPage) immediateButton.click();
+        assertTrue(-1 != page.asText().indexOf("Model Selection:2"));
+
+        // now click the first radio option...
+        radio1.setChecked(true);
+        // now press the non immediate button and verify that our new
+        // selection is there...
+        page = (HtmlPage) nonImmediateButton.click();
+        assertTrue(-1 != page.asText().indexOf("Model Selection:1"));
+    }
+
+    public void testSelectOneRadioTypeInt() throws Exception {
+//        HtmlPage page = getPage("/faces/jsp/selectOneRadioTypeInt.jsp");
+//        HtmlSubmitInput nonImmediateButton = null, immediateButton = null;
+//        HtmlRadioButtonInput radio1 = null, radio2 = null, radio3 = null;
+//        List submitList = getAllElementsOfGivenClass(page, null, HtmlSubmitInput.class);
+//        List radioList = getAllElementsOfGivenClass(page, null, HtmlRadioButtonInput.class);
+//        radio1 = (HtmlRadioButtonInput) radioList.get(0);
+//        radio2 = (HtmlRadioButtonInput) radioList.get(1);
+//        radio3 = (HtmlRadioButtonInput) radioList.get(2);
+//        for (int i = 0; i < submitList.size(); i++) {
+//            HtmlSubmitInput result = (HtmlSubmitInput) submitList.get(i);
+//            if (-1 != result.getIdAttribute().indexOf("nonImmediate")) {
+//                nonImmediateButton = result;
+//            } else {
+//                immediateButton = result;
+//            }
+//        }
+//        assertTrue(-1 != page.asText().indexOf("Model Selection:3"));
+//
+//        // now press the immediate button and verify that our original
+//        // selection is there...
+//        page = (HtmlPage) immediateButton.click();
+//        assertTrue(-1 != page.asText().indexOf("Model Selection:3"));
+//
+//        // now click the first radio option...
+//        radio1.setChecked(true);
+//        // now press the immediate button and verify that our original
+//        // selection is there...
+//        page = (HtmlPage) immediateButton.click();
+//        assertTrue(-1 != page.asText().indexOf("Model Selection:3"));
+//
+//        // now click the first radio option...
+//        radio1.setChecked(true);
+//        // now press the non immediate button and verify that our new
+//        // selection is there...
+//        page = (HtmlPage) nonImmediateButton.click();
+//        assertTrue(-1 != page.asText().indexOf("Model Selection:1"));
+    }
+
+    public void testSelectManyTypeInts() throws Exception {
+        HtmlPage page = getPage("/faces/jsp/selectManyTypeInts.jsp");
+        List list = getAllElementsOfGivenClass(page, null,
+                HtmlSubmitInput.class);
+        HtmlSubmitInput button = (HtmlSubmitInput) list.get(0);
+        list = getAllElementsOfGivenClass(page, null, HtmlSelect.class);
+        HtmlSelect options = (HtmlSelect) list.get(0);
+
+        String chosen[] = {"2", "3"};
+        options.setSelectedAttribute("2", true);
+        options.setSelectedAttribute("3", true);
+        //options.fakeSelectedAttribute(chosen);
+        page = (HtmlPage) button.click();
+        ResourceBundle messages = ResourceBundle.getBundle(
+                "javax.faces.Messages");
+        String message = messages.getString("javax.faces.component.UISelectMany.INVALID");
+        // it does not have a validation message
+        assertTrue(-1 == page.asText().indexOf("Validation Error"));
+    }
+
+
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/jsptest/SelectItemEscapeITCase.java b/test/servlet30/systest/src/test/java/com/sun/faces/jsptest/SelectItemEscapeITCase.java
new file mode 100644
index 0000000..2f1bc80
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/jsptest/SelectItemEscapeITCase.java
@@ -0,0 +1,125 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.jsptest;
+
+
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.sun.faces.htmlunit.HtmlUnitFacesITCase;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+
+/**
+ * <p>Verify that required validation occurrs for Select* components.</p>
+ */
+
+public class SelectItemEscapeITCase extends HtmlUnitFacesITCase {
+
+    // ------------------------------------------------------------ Constructors
+
+
+    /**
+     * Construct a new instance of this test case.
+     *
+     * @param name Name of the test case
+     */
+    public SelectItemEscapeITCase(String name) {
+        super(name);
+    }
+
+    // ------------------------------------------------------ Instance Variables
+
+    // ---------------------------------------------------- Overall Test Methods
+
+
+    /**
+     * Set up instance variables required by this test case.
+     */
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+
+
+    /**
+     * Return the tests included in this test suite.
+     */
+    public static Test suite() {
+        return (new TestSuite(SelectComponentValueITCase.class));
+    }
+
+
+    /**
+     * Tear down instance variables required by this test case.
+     */
+    public void tearDown() {
+        super.tearDown();
+    }
+
+    // ------------------------------------------------------ Instance Variables
+
+    // ------------------------------------------------- Individual Test Methods
+
+    /**
+     * <p>Verify that the required validator works for SelectOne</p>
+     */
+
+    public void testSelectOneNoValue() throws Exception {
+        HtmlPage page = getPage("/faces/selectItemEscape.jsp");
+
+        assertTrue(-1 != page.asText().indexOf("menu1_Wayne <Gretzky>"));
+        assertTrue(-1 != page.asText().indexOf("menu1_Bobby +Orr+"));
+        assertTrue(-1 != page.asText().indexOf("menu1_Brad &{Park}"));
+        assertTrue(-1 != page.asText().indexOf("menu1_Brad &{Park}"));
+
+        assertTrue(-1 != page.asText().indexOf("menu2_Wayne <Gretzky>"));
+        assertTrue(-1 != page.asText().indexOf("menu2_Bobby +Orr+"));
+        assertTrue(-1 != page.asText().indexOf("menu2_Brad &{Park}"));
+        assertTrue(-1 != page.asText().indexOf("menu2_Brad &{Park}"));
+
+        assertTrue(-1 != page.asText().indexOf("menu3_Wayne <Gretzky>"));
+        assertTrue(-1 != page.asText().indexOf("menu3_Bobby +Orr+"));
+        assertTrue(-1 != page.asText().indexOf("menu3_Brad &{Park}"));
+        assertTrue(-1 != page.asText().indexOf("menu3_Gordie &Howe&"));
+
+    }
+
+}
+
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/jsptest/SelectManyMultiFormITCase.java b/test/servlet30/systest/src/test/java/com/sun/faces/jsptest/SelectManyMultiFormITCase.java
new file mode 100644
index 0000000..a5720d7
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/jsptest/SelectManyMultiFormITCase.java
@@ -0,0 +1,124 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.jsptest;
+
+
+import com.gargoylesoftware.htmlunit.html.*;
+import com.sun.faces.htmlunit.HtmlUnitFacesITCase;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+import javax.faces.component.NamingContainer;
+
+
+/**
+ * <p>Test Case for JSP Interoperability.</p>
+ */
+
+public class SelectManyMultiFormITCase extends HtmlUnitFacesITCase {
+
+    // ------------------------------------------------------------ Constructors
+
+
+    /**
+     * Construct a new instance of this test case.
+     *
+     * @param name Name of the test case
+     */
+    public SelectManyMultiFormITCase(String name) {
+        super(name);
+    }
+
+    // ------------------------------------------------------ Instance Variables
+
+    // ---------------------------------------------------- Overall Test Methods
+
+
+    /**
+     * Set up instance variables required by this test case.
+     */
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+
+
+    /**
+     * Return the tests included in this test suite.
+     */
+    public static Test suite() {
+        return (new TestSuite(SelectManyMultiFormITCase.class));
+    }
+
+
+    /**
+     * Tear down instance variables required by this test case.
+     */
+    public void tearDown() {
+        super.tearDown();
+    }
+
+    // ------------------------------------------------- Individual Test Methods
+
+
+    public void testMultiForm() throws Exception {
+        HtmlForm form;
+        HtmlSubmitInput submit;
+        HtmlAnchor link;
+        HtmlTextInput input;
+        HtmlPage page;
+
+        page = getPage("/faces/standard/selectmany01.jsp");
+        // verify that the model tier is as expected
+        assertTrue(-1 !=
+                page.asText().indexOf("Current model value: 1, 2, ,"));
+        form = getFormById(page, "form2");
+        submit = (HtmlSubmitInput)
+                form.getInputByName("form2" + NamingContainer.SEPARATOR_CHAR +
+                        "doNotModify");
+
+        // press button1
+        page = (HtmlPage) submit.click();
+        // verify that submitting the form does not change the model tier
+        assertTrue(-1 !=
+                page.asText().indexOf("Current model value: 1, 2, ,"));
+
+    }
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/jsptest/SetPropertyITCase.java b/test/servlet30/systest/src/test/java/com/sun/faces/jsptest/SetPropertyITCase.java
new file mode 100644
index 0000000..b3d80f0
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/jsptest/SetPropertyITCase.java
@@ -0,0 +1,137 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.jsptest;
+
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import com.sun.faces.htmlunit.HtmlUnitFacesITCase;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+import java.util.ArrayList;
+import java.util.List;
+
+
+/**
+ * <p>Test Case for f:setProperty.</p>
+ */
+
+public class SetPropertyITCase extends HtmlUnitFacesITCase {
+
+    // ------------------------------------------------------------ Constructors
+
+
+    /**
+     * Construct a new instance of this test case.
+     *
+     * @param name Name of the test case
+     */
+    public SetPropertyITCase(String name) {
+        super(name);
+    }
+
+    // ------------------------------------------------------ Instance Variables
+
+    // ---------------------------------------------------- Overall Test Methods
+
+
+    /**
+     * Set up instance variables required by this test case.
+     */
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+
+
+    /**
+     * Return the tests included in this test suite.
+     */
+    public static Test suite() {
+        return (new TestSuite(SetPropertyITCase.class));
+    }
+
+
+    /**
+     * Tear down instance variables required by this test case.
+     */
+    public void tearDown() {
+        super.tearDown();
+    }
+
+    // ------------------------------------------------- Individual Test Methods
+
+    public void testSetPropertyPositive() throws Exception {
+        HtmlPage page = getPage("/faces/jsp/jsp-setProperty-01.jsp");
+
+        // press the button to increment the property
+        assertTrue(page.asText().contains("Integer Property is: 123."));
+        assertTrue(page
+                .asText().contains("String Property is: This is a String property."));
+        List buttons = getAllElementsOfGivenClass(page, new ArrayList(),
+                HtmlSubmitInput.class);
+        page = (HtmlPage) ((HtmlSubmitInput) buttons.get(0)).click();
+        assertTrue(page.asText().contains("Integer Property is: 100."));
+        assertTrue(page
+                .asText().contains("String Property is: This is a String property."));
+
+        buttons = getAllElementsOfGivenClass(page, new ArrayList(),
+                HtmlSubmitInput.class);
+        page = (HtmlPage) ((HtmlSubmitInput) buttons.get(1)).click();
+        assertTrue(page.asText().contains("Integer Property is: 100."));
+        assertTrue(page.asText().contains("String Property is: 100."));
+
+        buttons = getAllElementsOfGivenClass(page, new ArrayList(),
+                HtmlSubmitInput.class);
+        page = (HtmlPage) ((HtmlSubmitInput) buttons.get(2)).click();
+        assertTrue(page.asText().contains("Integer Property is: 100."));
+        assertTrue(page.asText().contains("String Property is: String."));
+
+        buttons = getAllElementsOfGivenClass(page, new ArrayList(),
+                HtmlSubmitInput.class);
+        page = (HtmlPage) ((HtmlSubmitInput) buttons.get(3)).click();
+        assertTrue(page.asText().contains("Integer Property is: 100."));
+        assertTrue(page
+                .asText().contains("String Property is: com.sun.faces.context.FacesContextImpl"));
+
+    }
+
+
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/jsptest/TagIvarITCase.java b/test/servlet30/systest/src/test/java/com/sun/faces/jsptest/TagIvarITCase.java
new file mode 100644
index 0000000..1a38d39
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/jsptest/TagIvarITCase.java
@@ -0,0 +1,110 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.jsptest;
+
+
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.sun.faces.htmlunit.HtmlUnitFacesITCase;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+
+/**
+ * <p>Test Case for JSP Interoperability.</p>
+ */
+
+public class TagIvarITCase extends HtmlUnitFacesITCase {
+
+    // ------------------------------------------------------------ Constructors
+
+
+    /**
+     * Construct a new instance of this test case.
+     *
+     * @param name Name of the test case
+     */
+    public TagIvarITCase(String name) {
+        super(name);
+    }
+
+    // ------------------------------------------------------ Instance Variables
+
+    // ---------------------------------------------------- Overall Test Methods
+
+
+    /**
+     * Set up instance variables required by this test case.
+     */
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+
+
+    /**
+     * Return the tests included in this test suite.
+     */
+    public static Test suite() {
+        return (new TestSuite(TagIvarITCase.class));
+    }
+
+
+    /**
+     * Tear down instance variables required by this test case.
+     */
+    public void tearDown() {
+        super.tearDown();
+    }
+
+    // ------------------------------------------------- Individual Test Methods
+
+
+    public void testLocaleOnTagIvar() throws Exception {
+        HtmlPage page;
+
+        // ignore the exception intentionally thrown by the first page.
+        client.setThrowExceptionOnFailingStatusCode(false);
+        page = getPage("/faces/tag-ivars1.jsp");
+
+        client.setThrowExceptionOnFailingStatusCode(true);
+        page = getPage("/faces/tag-ivars2.jsp");
+
+    }
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/jsptest/TlvITCase.java b/test/servlet30/systest/src/test/java/com/sun/faces/jsptest/TlvITCase.java
new file mode 100644
index 0000000..8db303e
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/jsptest/TlvITCase.java
@@ -0,0 +1,116 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.jsptest;
+
+
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import com.sun.faces.htmlunit.HtmlUnitFacesITCase;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+import java.util.List;
+
+
+/**
+ * <p>Verify that required validation occurrs for Select* components.</p>
+ */
+
+public class TlvITCase extends HtmlUnitFacesITCase {
+
+    // ------------------------------------------------------------ Constructors
+
+
+    /**
+     * Construct a new instance of this test case.
+     *
+     * @param name Name of the test case
+     */
+    public TlvITCase(String name) {
+        super(name);
+    }
+
+    // ------------------------------------------------------ Instance Variables
+
+    // ---------------------------------------------------- Overall Test Methods
+
+
+    /**
+     * Set up instance variables required by this test case.
+     */
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+
+
+    /**
+     * Return the tests included in this test suite.
+     */
+    public static Test suite() {
+        return (new TestSuite(TlvITCase.class));
+    }
+
+
+    /**
+     * Tear down instance variables required by this test case.
+     */
+    public void tearDown() {
+        super.tearDown();
+    }
+
+    // ------------------------------------------------------ Instance Variables
+
+    // ------------------------------------------------- Individual Test Methods
+
+    /**
+     * <p>Verify that the required validator works for SelectOne</p>
+     */
+
+    public void testButtonWithBinding() throws Exception {
+        HtmlPage page = getPage("/faces/jsp/tlvTest01.jsp");
+        List list = getAllElementsOfGivenClass(page, null,
+                HtmlSubmitInput.class);
+        HtmlSubmitInput button = (HtmlSubmitInput) list.get(0);
+        assertEquals("button label", button.asText());
+    }
+
+
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/jsptest/ValidatorITCase.java b/test/servlet30/systest/src/test/java/com/sun/faces/jsptest/ValidatorITCase.java
new file mode 100755
index 0000000..ec10b58
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/jsptest/ValidatorITCase.java
@@ -0,0 +1,156 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.jsptest;
+
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
+import com.sun.faces.htmlunit.HtmlUnitFacesITCase;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+import java.util.List;
+
+/**
+ * <p>Test that invalid values don't cause valueChangeEvents to occur.</p>
+ */
+
+public class ValidatorITCase extends HtmlUnitFacesITCase {
+
+    // ------------------------------------------------------------ Constructors
+
+
+    /**
+     * Construct a new instance of this test case.
+     *
+     * @param name Name of the test case
+     */
+    public ValidatorITCase(String name) {
+        super(name);
+    }
+
+    // ------------------------------------------------------ Instance Variables
+
+    // ---------------------------------------------------- Overall Test Methods
+
+
+    /**
+     * Return the tests included in this test suite.
+     */
+    public static Test suite() {
+        return (new TestSuite(ValidatorITCase.class));
+    }
+
+    // ------------------------------------------------- Individual Test Methods
+    public void testValidator() throws Exception {
+        HtmlPage page = getPage("/faces/validator02.jsp");
+        List list;
+        list = getAllElementsOfGivenClass(page, null,
+                HtmlTextInput.class);
+
+        // set the initial value to be 1 for all input fields
+        ((HtmlTextInput) list.get(0)).setValueAttribute("1111111111");
+        ((HtmlTextInput) list.get(1)).setValueAttribute("1111111111");
+        ((HtmlTextInput) list.get(2)).setValueAttribute("1111111111");
+        ((HtmlTextInput) list.get(3)).setValueAttribute("1111111111");
+        ((HtmlTextInput) list.get(4)).setValueAttribute("1111111111");
+        ((HtmlTextInput) list.get(5)).setValueAttribute("1111111111");
+        ((HtmlTextInput) list.get(6)).setValueAttribute("1111111111");
+
+        list = getAllElementsOfGivenClass(page, null,
+                HtmlSubmitInput.class);
+        HtmlSubmitInput button = (HtmlSubmitInput) list.get(0);
+        page = (HtmlPage) button.click();
+	String text = page.asText();
+        assertTrue(text.contains("text1 was validated"));
+        assertTrue(text.contains("text2 was validated"));
+        assertTrue(text.contains("text3 was validated"));
+        assertTrue(text.contains("text4 was validated"));
+        String str = "allowable maximum of " + '"' + "2" + '"';
+        assertTrue(text.contains(str));
+        assertTrue(text.contains("allowable maximum of '5'"));
+
+    }
+
+    public void testValidatorMessages() throws Exception {
+        HtmlPage page = getPage("/faces/validator03.jsp");
+        List list;
+        list = getAllElementsOfGivenClass(page, null,
+                HtmlTextInput.class);
+
+        // set the initial value to be "1" for all input fields
+        for (int i = 0; i < list.size(); i++) {
+            ((HtmlTextInput) list.get(i)).setValueAttribute("1");
+        }
+
+        list = getAllElementsOfGivenClass(page, null,
+                HtmlSubmitInput.class);
+        HtmlSubmitInput button = (HtmlSubmitInput) list.get(0);
+        page = (HtmlPage) button.click();
+        String text = page.asXml();
+        assertTrue(text.contains("Validation Error: Specified attribute is not between the expected values of 2 and 5."));
+        assertTrue(text.contains("DoubleRange2: Validation Error: Specified attribute is not between the expected values of 2 and 5."));
+        assertTrue(text.contains("Validation Error: Length is less than allowable minimum of '2'"));
+        assertTrue(text.contains("Length2: Validation Error: Length is less than allowable minimum of '2'"));
+        assertTrue(text.contains("Validation Error: Specified attribute is not between the expected values of 2 and 5."));
+        assertTrue(text.contains("LongRange2: Validation Error: Specified attribute is not between the expected values of 2 and 5."));
+    }
+
+    public void testRequiredValidatorMessage() throws Exception {
+        HtmlPage page = getPage("/faces/validator04.jsp");
+        List list;
+        list = getAllElementsOfGivenClass(page, null, HtmlTextInput.class);
+        ((HtmlTextInput) list.get(2)).setValueAttribute("a");
+        ((HtmlTextInput) list.get(3)).setValueAttribute("a");
+        ((HtmlTextInput) list.get(4)).setValueAttribute("20");
+        ((HtmlTextInput) list.get(5)).setValueAttribute("20");
+        list = getAllElementsOfGivenClass(page, null, HtmlSubmitInput.class);
+        page = (HtmlPage) ((HtmlSubmitInput) list.get(0)).click();
+        String text = page.asText();
+        assertTrue(text.contains("Literal Message"));
+        assertTrue(text.contains("New String Value"));
+        assertTrue(text.contains("Converter Literal"));
+        assertTrue(text.contains("Converter Message Expression"));
+        assertTrue(text.contains("Validator Literal"));
+        assertTrue(text.contains("Validator Message Expression"));
+    }
+
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/jsptest/ValueChangeListenerITCase.java b/test/servlet30/systest/src/test/java/com/sun/faces/jsptest/ValueChangeListenerITCase.java
new file mode 100644
index 0000000..d6fc33f
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/jsptest/ValueChangeListenerITCase.java
@@ -0,0 +1,204 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.jsptest;
+
+import com.gargoylesoftware.htmlunit.html.*;
+import com.sun.faces.htmlunit.HtmlUnitFacesITCase;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+import java.util.List;
+
+/**
+ * <p>Test that invalid values don't cause valueChangeEvents to occur.</p>
+ */
+
+public class ValueChangeListenerITCase extends HtmlUnitFacesITCase {
+
+    // ------------------------------------------------------------ Constructors
+
+
+    /**
+     * Construct a new instance of this test case.
+     *
+     * @param name Name of the test case
+     */
+    public ValueChangeListenerITCase(String name) {
+        super(name);
+    }
+
+    // ------------------------------------------------------ Instance Variables
+
+    // ---------------------------------------------------- Overall Test Methods
+
+
+    /**
+     * Return the tests included in this test suite.
+     */
+    public static Test suite() {
+        return (new TestSuite(ValueChangeListenerITCase.class));
+    }
+
+    // ------------------------------------------------- Individual Test Methods
+    public void testValueChangeListener() throws Exception {
+        HtmlPage page = getPage("/faces/valueChangeListener.jsp");
+        List list;
+        list = getAllElementsOfGivenClass(page, null,
+                HtmlTextInput.class);
+
+        // set the initial value to be 1 for both fields
+        ((HtmlTextInput) list.get(0)).setValueAttribute("1");
+        ((HtmlTextInput) list.get(1)).setValueAttribute("1");
+
+        list = getAllElementsOfGivenClass(page, null,
+                HtmlSubmitInput.class);
+        HtmlSubmitInput button = (HtmlSubmitInput) list.get(0);
+        page = (HtmlPage) button.click();
+
+        assertTrue(-1 !=
+                page.asText().indexOf("Received valueChangeEvent for textA"));
+
+        assertTrue(-1 !=
+                page.asText().indexOf("Received valueChangeEvent for textB"));
+
+        // re-submit the form, make sure no valueChangeEvents are fired
+        list = getAllElementsOfGivenClass(page, null,
+                HtmlSubmitInput.class);
+        button = (HtmlSubmitInput) list.get(0);
+        page = (HtmlPage) button.click();
+
+        assertTrue(-1 ==
+                page.asText().indexOf("Received valueChangeEvent for textA"));
+
+        assertTrue(-1 ==
+                page.asText().indexOf("Received valueChangeEvent for textB"));
+
+        // give invalid values to one field and make sure no
+        // valueChangeEvents are fired.
+        list = getAllElementsOfGivenClass(page, null,
+                HtmlTextInput.class);
+
+        ((HtmlTextInput) list.get(1)).setValueAttribute("-123");
+
+        list = getAllElementsOfGivenClass(page, null,
+                HtmlSubmitInput.class);
+        button = (HtmlSubmitInput) list.get(0);
+        page = (HtmlPage) button.click();
+
+        assertTrue(-1 ==
+                page.asText().indexOf("Received valueChangeEvent for textA"));
+
+        assertTrue(-1 ==
+                page.asText().indexOf("Received valueChangeEvent for textB"));
+
+        assertTrue(-1 !=
+                page.asText().indexOf("Validation Error"));
+
+        // make sure dir and lang are passed through as expected for
+        // message and messages
+        list = getAllElementsOfGivenClass(page, null,
+                HtmlSpan.class);
+
+        boolean
+                hasMessageContent = false, // do we have the h:message
+                // content we're looking for
+                hasMessagesContent = false; // do we have the h:messages
+        // content we're looking for.
+        HtmlSpan span = null;
+        HtmlUnorderedList ulist = null;
+
+        for (int i = 0; i < list.size(); i++) {
+            span = (HtmlSpan) list.get(i);
+            if (-1 != span.asXml().indexOf("dir=\"RTL\"")
+                    && span.asXml().indexOf("lang=\"de\"") != -1) {
+                hasMessageContent = true;
+            }
+        }
+        list = getAllElementsOfGivenClass(page, null, HtmlUnorderedList.class);
+        for (int i = 0; i < list.size(); i++) {
+            ulist = (HtmlUnorderedList) list.get(i);
+            if (-1 != ulist.asXml().indexOf("dir=\"LTR\"")
+                    && ulist.asXml().indexOf("lang=\"en\"") != -1) {
+                hasMessagesContent = true;
+            }
+        }
+        assertTrue(hasMessagesContent && hasMessageContent);
+
+    }
+
+    // Test case for Issue 752
+    // https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=752
+    public void testValueChangeListener02() throws Exception {
+
+        HtmlPage page = getPage("/faces/valueChangeListener02.jsp");
+        List list = getAllElementsOfGivenClass(page,
+                null,
+                HtmlSubmitInput.class);
+        HtmlSubmitInput button = (HtmlSubmitInput) list.get(0);
+        page = (HtmlPage) button.click();
+        assertTrue(!page.asText().contains("old value"));
+        assertTrue(!page.asText().contains("new value"));
+
+        list = getAllElementsOfGivenClass(page,
+                null,
+                HtmlCheckBoxInput.class);
+        HtmlCheckBoxInput input = (HtmlCheckBoxInput) list.get(0);
+        input.setChecked(false);
+        list = getAllElementsOfGivenClass(page,
+                null,
+                HtmlSubmitInput.class);
+        button = (HtmlSubmitInput) list.get(0);
+        page = (HtmlPage) button.click();
+
+        assertTrue(page.asText().contains("old value: true"));
+        assertTrue(page.asText().contains("new value: false"));
+
+        list = getAllElementsOfGivenClass(page,
+                null,
+                HtmlSubmitInput.class);
+        button = (HtmlSubmitInput) list.get(0);
+        page = (HtmlPage) button.click();
+        assertTrue(!page.asText().contains("old value"));
+        assertTrue(!page.asText().contains("new value"));
+
+    }
+
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/jsptest/ViewRootPhaseListenerIT.java b/test/servlet30/systest/src/test/java/com/sun/faces/jsptest/ViewRootPhaseListenerIT.java
new file mode 100644
index 0000000..401094e
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/jsptest/ViewRootPhaseListenerIT.java
@@ -0,0 +1,81 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.jsptest;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlButton;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import static junit.framework.TestCase.assertTrue;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.Ignore;
+
+public class ViewRootPhaseListenerIT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testViewTagListeners() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/viewTagListeners.jsp");
+
+        assertTrue(-1 != page.asText().indexOf("beforePhaseEvent: beforePhase: RENDER_RESPONSE 6."));
+        assertTrue(-1 != page.asText().indexOf("afterPhaseEvent: ."));
+
+        HtmlSubmitInput button = page.getHtmlElementById("form:redisplay");
+        page = (HtmlPage) button.click();
+
+        assertTrue(-1 != page.asText().indexOf("beforePhaseEvent: beforePhase: APPLY_REQUEST_VALUES 2 beforePhase: PROCESS_VALIDATIONS 3 beforePhase: UPDATE_MODEL_VALUES 4 beforePhase: INVOKE_APPLICATION 5 beforePhase: RENDER_RESPONSE 6."));
+        assertTrue(-1 != page.asText().indexOf("afterPhaseEvent: afterPhase: RESTORE_VIEW 1 afterPhase: APPLY_REQUEST_VALUES 2 afterPhase: PROCESS_VALIDATIONS 3 afterPhase: UPDATE_MODEL_VALUES 4 afterPhase: INVOKE_APPLICATION 5."));
+    }
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/jsptest/ViewRootPhaseListenerITCase.java b/test/servlet30/systest/src/test/java/com/sun/faces/jsptest/ViewRootPhaseListenerITCase.java
new file mode 100644
index 0000000..c5f0a3d
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/jsptest/ViewRootPhaseListenerITCase.java
@@ -0,0 +1,138 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.jsptest;
+
+
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import com.sun.faces.htmlunit.HtmlUnitFacesITCase;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+import java.util.List;
+
+
+/**
+ * <p>Make sure that only unique view ids are saved in the session</p>
+ */
+
+public class ViewRootPhaseListenerITCase extends HtmlUnitFacesITCase {
+
+    // ------------------------------------------------------------ Constructors
+
+
+    /**
+     * Construct a new instance of this test case.
+     *
+     * @param name Name of the test case
+     */
+    public ViewRootPhaseListenerITCase(String name) {
+        super(name);
+    }
+
+    // ------------------------------------------------------ Instance Variables
+
+    // ---------------------------------------------------- Overall Test Methods
+
+
+    /**
+     * Set up instance variables required by this test case.
+     */
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+
+
+    /**
+     * Return the tests included in this test suite.
+     */
+    public static Test suite() {
+        return (new TestSuite(ViewRootPhaseListenerITCase.class));
+    }
+
+
+    /**
+     * Tear down instance variables required by this test case.
+     */
+    public void tearDown() {
+        super.tearDown();
+    }
+
+    // ------------------------------------------------------ Instance Variables
+
+    // ------------------------------------------------- Individual Test Methods
+
+    public void testListenerTagListenersType() throws Exception {
+        HtmlPage page = getPage("/faces/listenerTagListenersType.jsp");
+        doTestListenerTagListeners(page);
+    }
+
+    public void testListenerTagListenersBinding() throws Exception {
+        HtmlPage page = getPage("/faces/listenerTagListenersBinding.jsp");
+        doTestListenerTagListeners(page);
+    }
+
+    public void testListenerTagListenersBindingType() throws Exception {
+        HtmlPage page = getPage("/faces/listenerTagListenersBindingType.jsp");
+        doTestListenerTagListeners(page);
+    }
+
+    public void doTestListenerTagListeners(HtmlPage page) throws Exception {
+
+        assertTrue(-1 != page.asText().indexOf("beforePhaseEvent: beforePhase: RENDER_RESPONSE 6."));
+        assertTrue(-1 != page.asText().indexOf("afterPhaseEvent: ."));
+
+        List list;
+
+        HtmlSubmitInput button = null;
+        list = getAllElementsOfGivenClass(page, null,
+                HtmlSubmitInput.class);
+        button = (HtmlSubmitInput) list.get(0);
+        page = (HtmlPage) button.click();
+
+        assertTrue(-1 != page.asText().indexOf("beforePhaseEvent: beforePhase: APPLY_REQUEST_VALUES 2 beforePhase: PROCESS_VALIDATIONS 3 beforePhase: UPDATE_MODEL_VALUES 4 beforePhase: INVOKE_APPLICATION 5 beforePhase: RENDER_RESPONSE 6."));
+        assertTrue(-1 != page.asText().indexOf("afterPhaseEvent: afterPhase: APPLY_REQUEST_VALUES 2 afterPhase: PROCESS_VALIDATIONS 3 afterPhase: UPDATE_MODEL_VALUES 4 afterPhase: INVOKE_APPLICATION 5."));
+
+
+    }
+
+}
+
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/jsptest/ViewTagITCase.java b/test/servlet30/systest/src/test/java/com/sun/faces/jsptest/ViewTagITCase.java
new file mode 100644
index 0000000..908d9a7
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/jsptest/ViewTagITCase.java
@@ -0,0 +1,130 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.jsptest;
+
+
+import com.gargoylesoftware.htmlunit.html.*;
+import com.sun.faces.htmlunit.HtmlUnitFacesITCase;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+import javax.faces.component.NamingContainer;
+
+
+/**
+ * <p>Test Case for JSP Interoperability.</p>
+ */
+
+public class ViewTagITCase extends HtmlUnitFacesITCase {
+
+    // ------------------------------------------------------------ Constructors
+
+
+    /**
+     * Construct a new instance of this test case.
+     *
+     * @param name Name of the test case
+     */
+    public ViewTagITCase(String name) {
+        super(name);
+    }
+
+    // ------------------------------------------------------ Instance Variables
+
+    // ---------------------------------------------------- Overall Test Methods
+
+
+    /**
+     * Set up instance variables required by this test case.
+     */
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+
+
+    /**
+     * Return the tests included in this test suite.
+     */
+    public static Test suite() {
+        return (new TestSuite(ViewTagITCase.class));
+    }
+
+
+    /**
+     * Tear down instance variables required by this test case.
+     */
+    public void tearDown() {
+        super.tearDown();
+    }
+
+    // ------------------------------------------------- Individual Test Methods
+
+
+    public void testLocaleOnViewTag() throws Exception {
+        HtmlForm form;
+        HtmlSubmitInput submit;
+        HtmlAnchor link;
+        HtmlTextInput input;
+        HtmlPage page;
+
+        page = getPage("/faces/viewLocale.jsp");
+        form = getFormById(page, "form");
+        submit = (HtmlSubmitInput)
+                form.getInputByName("form" + NamingContainer.SEPARATOR_CHAR +
+                        "button");
+
+        // press the button
+        page = (HtmlPage) submit.click();
+        assertTrue(-1 != page.asText().indexOf("erreur"));
+
+    }
+
+    public void testReplaceViewRoot() throws Exception {
+        HtmlPage page;
+        HtmlAnchor link;
+
+        page = getPage("/faces/replaceViewRoot.jsp");
+        link = page.getAnchorByName("examine");
+        page = (HtmlPage) link.click();
+        assertTrue(-1 != page.asText().indexOf("Replaced ViewRoot is com.sun.faces.systest.model.ViewRootExtension"));
+
+    }
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/methodref/MethodRefITCase.java b/test/servlet30/systest/src/test/java/com/sun/faces/methodref/MethodRefITCase.java
new file mode 100644
index 0000000..3a96f48
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/methodref/MethodRefITCase.java
@@ -0,0 +1,276 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.methodref;
+
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlAnchor;
+import com.gargoylesoftware.htmlunit.html.HtmlBody;
+import com.gargoylesoftware.htmlunit.html.HtmlElement;
+import com.gargoylesoftware.htmlunit.html.HtmlForm;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
+import com.sun.faces.htmlunit.HtmlUnitFacesITCase;
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+import javax.faces.component.NamingContainer;
+import javax.faces.component.UIViewRoot;
+
+
+/**
+ * <p>Test Case for JSP Interoperability.</p>
+ */
+
+public class MethodRefITCase extends HtmlUnitFacesITCase {
+
+
+    // ------------------------------------------------------------ Constructors
+
+
+    /**
+     * Construct a new instance of this test case.
+     *
+     * @param name Name of the test case
+     */
+    public MethodRefITCase(String name) {
+        super(name);
+    }
+
+
+    // ------------------------------------------------------ Instance Variables
+
+
+    // ---------------------------------------------------- Overall Test Methods
+
+
+    /**
+     * Set up instance variables required by this test case.
+     */
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+
+
+    /**
+     * Return the tests included in this test suite.
+     */
+    public static Test suite() {
+        return (new TestSuite(MethodRefITCase.class));
+    }
+
+
+    /**
+     * Tear down instance variables required by this test case.
+     */
+    public void tearDown() {
+        super.tearDown();
+    }
+
+
+    // ------------------------------------------------- Individual Test Methods
+    
+    public void testActionAndActionListener() throws Exception {
+        HtmlForm form;
+        HtmlSubmitInput submit;
+        HtmlAnchor link;
+        HtmlTextInput input;
+        HtmlPage page;
+
+        page = getPage("/faces/methodref01.jsp");
+        form = getFormById(page, "form");
+        submit = (HtmlSubmitInput)
+            form.getInputByName("form" + NamingContainer.SEPARATOR_CHAR +
+                                "button1");
+
+        // press button1
+        page = (HtmlPage) submit.click();
+        form = getFormById(page, "form");
+        input = (HtmlTextInput)
+            form.getInputByName("form" + NamingContainer.SEPARATOR_CHAR +
+                                "buttonStatus");
+        assertTrue("Input does not have expected value",
+                   -1 != input.asText().indexOf("button1 was pressed"));
+        link = (HtmlAnchor) page.getAnchors().get(0);
+
+        // press button2
+        page = (HtmlPage) link.click(); 
+        assertNotNull(page);
+        form = getFormById(page, "form");
+        input = (HtmlTextInput)
+            form.getInputByName("form" + NamingContainer.SEPARATOR_CHAR +
+                                "buttonStatus");
+        assertTrue("Input does not have expected value",
+                   -1 != input.asText().indexOf("button2 was pressed"));
+        submit = (HtmlSubmitInput)
+            form.getInputByName("form" + NamingContainer.SEPARATOR_CHAR +
+                                "button3"); 
+
+        // press button3
+        page = (HtmlPage) submit.click();
+        form = getFormById(page, "form");
+        input = (HtmlTextInput)
+            form.getInputByName("form" + NamingContainer.SEPARATOR_CHAR +
+                                "buttonStatus");
+        assertTrue("Input does not have expected value",
+                   -1 != input.asText().indexOf("button3 was pressed"));
+
+
+    } 
+
+
+    public void testValidatorReference() throws Exception {
+        HtmlForm form;
+        HtmlSubmitInput submit;
+        HtmlAnchor link;
+        HtmlTextInput input;
+        HtmlPage page;
+
+        page = getPage("/faces/methodref01.jsp");
+        form = getFormById(page, "form");
+        submit = (HtmlSubmitInput)
+            form.getInputByName("form" + NamingContainer.SEPARATOR_CHAR +
+                                "validate");
+
+        // press the button with no value, see that no value appears in
+        // the "toValidate" textField.
+        page = (HtmlPage) submit.click();
+        form = getFormById(page, "form");
+        input = (HtmlTextInput)
+            form.getInputByName("form" + NamingContainer.SEPARATOR_CHAR +
+                                "toValidate");
+        int fieldLen = input.asText().length();
+        assertTrue("Input does not have expected value", 0 == fieldLen);
+
+        // fill in an incorrect value, see that still no value appears
+        // in the text field.
+        input = (HtmlTextInput)
+            form.getInputByName("form" + NamingContainer.SEPARATOR_CHAR +
+                                "toValidate");
+        input.setValueAttribute("aoeuaoeu");
+        submit = (HtmlSubmitInput)
+            form.getInputByName("form" + NamingContainer.SEPARATOR_CHAR +
+                                "validate");
+        page = (HtmlPage) submit.click();
+        form = getFormById(page, "form");
+        input = (HtmlTextInput)
+            form.getInputByName("form" + NamingContainer.SEPARATOR_CHAR +
+                                "toValidate");
+        fieldLen = input.asText().length();
+        assertTrue("Input does not have expected value", 8 == fieldLen);
+
+        // fill in the correct value, see that finally we have a value
+        input = (HtmlTextInput)
+            form.getInputByName("form" + NamingContainer.SEPARATOR_CHAR +
+                                "toValidate");
+        input.setValueAttribute("batman");
+        submit = (HtmlSubmitInput)
+            form.getInputByName("form" + NamingContainer.SEPARATOR_CHAR +
+                                "validate");
+        page = (HtmlPage) submit.click();
+        form = getFormById(page, "form");
+        input = (HtmlTextInput)
+            form.getInputByName("form" + NamingContainer.SEPARATOR_CHAR +
+                                "toValidate");
+        assertEquals("Input does not have expected value",
+                     "batman", input.asText());
+    }
+
+
+    public void testValueChangeListenerByReference() throws Exception {
+        HtmlForm form;
+        HtmlSubmitInput submit;
+        HtmlAnchor link;
+        HtmlTextInput input;
+        HtmlPage page;
+
+        page = getPage("/faces/methodref01.jsp");
+        form = getFormById(page, "form");
+        submit = (HtmlSubmitInput)
+            form.getInputByName("form" + NamingContainer.SEPARATOR_CHAR +
+                                "changeValue");
+
+        // fill in a value, see we have a value
+        input = (HtmlTextInput)
+            form.getInputByName("form" + NamingContainer.SEPARATOR_CHAR +
+                                "toChange");
+        input.setValueAttribute("batman");
+        page = (HtmlPage) submit.click();
+        form = getFormById(page, "form");
+        input = (HtmlTextInput)
+            form.getInputByName("form" + NamingContainer.SEPARATOR_CHAR +
+                                "toChange");
+        assertEquals("Input does not have expected value",
+                     "batman", input.getOnBlurAttribute());
+    }
+    
+    /**
+     * Test case for bug 5030555
+     */
+    public void testValueChangeListenerWithBinding() throws Exception {
+        HtmlForm form;
+        HtmlSubmitInput submit;
+        HtmlAnchor link;
+        HtmlTextInput input;
+        HtmlPage page;
+
+        page = getPage("/faces/binding01.jsp");
+        form = getFormById(page, "form");
+        submit = (HtmlSubmitInput)
+            form.getInputByName("form" + NamingContainer.SEPARATOR_CHAR +
+                                "changeValue");
+
+        // fill in a value, see we have a value
+        input = (HtmlTextInput)
+            form.getInputByName("form" + NamingContainer.SEPARATOR_CHAR +
+                                "toChange");
+        input.setValueAttribute("binding works!!");
+        page = (HtmlPage) submit.click();
+        form = getFormById(page, "form");
+        input = (HtmlTextInput)
+            form.getInputByName("form" + NamingContainer.SEPARATOR_CHAR +
+                                "toChange");
+        assertEquals("Input does not have expected value",
+                     "binding works!!", input.getOnBlurAttribute());
+    }
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/methodref/TagAttributeListenerMethodExpressionNoArgITCase.java b/test/servlet30/systest/src/test/java/com/sun/faces/methodref/TagAttributeListenerMethodExpressionNoArgITCase.java
new file mode 100644
index 0000000..ef51536
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/methodref/TagAttributeListenerMethodExpressionNoArgITCase.java
@@ -0,0 +1,103 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.methodref;
+
+
+import com.gargoylesoftware.htmlunit.html.HtmlForm;
+import com.sun.faces.htmlunit.HtmlUnitFacesITCase;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
+import java.io.IOException;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+/**
+ * Validate resource re-location of scripts and stylesheets
+ */
+public class TagAttributeListenerMethodExpressionNoArgITCase extends HtmlUnitFacesITCase {
+
+
+    public TagAttributeListenerMethodExpressionNoArgITCase() {
+        this("TagAttributeListenerMethodExpressionNoArgTestCase");
+    }
+
+
+    public TagAttributeListenerMethodExpressionNoArgITCase(String name) {
+        super(name);
+    }
+
+    public static Test suite() {
+        return (new TestSuite(TagAttributeListenerMethodExpressionNoArgITCase.class));
+    }
+
+
+    // ------------------------------------------------------------ Test Methods
+
+
+    public void testResourceRelocation() throws Exception {
+
+        HtmlPage page = getPage("/faces/TestValueChangeAndActionListenerNoArg.jsp");
+        executeTest(page);
+        page = getPage("/faces/TestValueChangeAndActionListenerNoArg.xhtml");
+        executeTest(page);
+    }
+
+
+    // --------------------------------------------------------- Private Methods
+
+    private void executeTest(HtmlPage page) throws IOException {
+        HtmlTextInput usernameField = (HtmlTextInput) page.getHtmlElementById("username");
+        usernameField.setValueAttribute("newValue, not oldValue");
+        HtmlForm form = getFormById(page, "form");
+        HtmlSubmitInput button = (HtmlSubmitInput) form.getInputByName("loginEvent");
+        page = (HtmlPage) button.click();
+        String text = page.asText();
+        boolean hasExpectedValue = 
+                (-1 != text.indexOf("valueChange0Called:true")) ||
+                (-1 != text.indexOf("valueChange0Called: true"));
+        assertTrue(hasExpectedValue);
+        hasExpectedValue =
+                (-1 != text.indexOf("actionListener0Called:true")) ||
+                (-1 != text.indexOf("actionListener0Called: true"));
+        assertTrue(hasExpectedValue);
+    }
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/render/CommandButtonITCase.java b/test/servlet30/systest/src/test/java/com/sun/faces/render/CommandButtonITCase.java
new file mode 100644
index 0000000..bcb01c8
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/render/CommandButtonITCase.java
@@ -0,0 +1,106 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.render;
+
+import com.sun.faces.htmlunit.HtmlUnitFacesITCase;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import com.gargoylesoftware.htmlunit.html.*;
+
+public class CommandButtonITCase extends HtmlUnitFacesITCase {
+
+    public CommandButtonITCase(String name) {
+        super(name);
+    }
+
+    /**
+     * Set up instance variables required by this test case.
+     */
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+
+
+    /**
+     * Return the tests included in this test suite.
+     */
+    public static Test suite() {
+        return (new TestSuite(CommandButtonITCase.class));
+    }
+
+
+    /**
+     * Tear down instance variables required by this test case.
+     */
+    public void tearDown() {
+        super.tearDown();
+    }
+
+
+    public void testCommandButtonButton() throws Exception {
+        getPage("/faces/render/commandButtonButton.xhtml");
+        System.out.println("Start command Button type=button test");
+        // First we'll check the first page was output correctly
+        assertTrue(check("out1","0"));
+        assertTrue(check("outside","1"));
+
+        // Submit the ajax tagged request
+        HtmlButtonInput button = (HtmlButtonInput) lastpage.getHtmlElementById("button1");
+        lastpage = (HtmlPage) button.click();
+
+        // Check that the ajax request succeeds
+        assertTrue(check("out1","2"));
+
+        // Check that the request did NOT update the rest of the page.
+        assertTrue(check("outside","1"));
+
+        // Submit the onclick enhanced request - with no return false
+        button = (HtmlButtonInput) lastpage.getHtmlElementById("button2");
+        lastpage = (HtmlPage) button.click();
+
+        // Check that the ajax request succeeds
+        assertTrue(check("out1","3"));
+
+        // Check that the request did NOT update the rest of the page.
+        assertTrue(check("outside","1"));
+
+    }
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/render/MessageRenderITCase.java b/test/servlet30/systest/src/test/java/com/sun/faces/render/MessageRenderITCase.java
new file mode 100644
index 0000000..963e5b4
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/render/MessageRenderITCase.java
@@ -0,0 +1,143 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.render;
+
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.sun.faces.htmlunit.HtmlUnitFacesITCase;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+
+public class MessageRenderITCase extends HtmlUnitFacesITCase {
+
+    public MessageRenderITCase(String name) {
+        super(name);
+    }
+
+    /**
+     * Set up instance variables required by this test case.
+     */
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+
+
+    /**
+     * Return the tests included in this test suite.
+     */
+    public static Test suite() {
+        return (new TestSuite(MessageRenderITCase.class));
+    }
+
+
+    /**
+     * Tear down instance variables required by this test case.
+     */
+    public void tearDown() {
+        super.tearDown();
+    }
+
+
+    public void testCommandButtonButton() throws Exception {
+        getPage("/faces/render/messageRender.xhtml");
+
+
+        // Check that ids were rendered
+        try {
+            lastpage.getHtmlElementById("testform1:msgs");
+        } catch (Exception e) {
+            fail("testform1:msgs not rendered");
+        }
+        try {
+            lastpage.getHtmlElementById("testform1a:msgs");
+        } catch (Exception e) {
+            fail("testform1a:msgs not rendered");
+        }
+        try {
+            lastpage.getHtmlElementById("testform2:msg");
+        } catch (Exception e) {
+            fail("testform2:msg not rendered");
+        }
+
+        // check that other ids weren't
+
+        try {
+            lastpage.getHtmlElementById("testform3:msgs");
+            fail("testform3:msgs rendered - not correct");
+        } catch (Exception e) {
+            //  Success
+        }
+        try {
+            lastpage.getHtmlElementById("testform3a:msgs");
+            fail("testform3:msgs rendered - not correct");
+        } catch (Exception e) {
+            //  Success
+        }
+        try {
+            lastpage.getHtmlElementById("testform4:msg");
+            fail("testform4:msg rendered - not correct");
+        } catch (Exception e) {
+            //  Success
+        }
+    }
+
+    public void testMessagesToolTip() throws Exception {
+        HtmlPage page = getPage("/faces/message05.xhtml");
+        String pageXml = page.asXml().replaceAll("\n","");
+        pageXml = pageXml.replaceAll("\t","");
+        pageXml = pageXml.replaceAll("\r","");
+        String case1 = "<!-- Case 1: Expected output: Both summary and detail rendered. -->      This is the summary This is the detail";
+        String case2 = "<!-- Case 2: Expected output: Both summary and detail rendered. Tooltip detail rendered. -->      <span title=" + '"' + "This is the detail" + '"' + ">        This is the summary This is the detail      </span>";
+        String case3 = "<!-- Case 3: Expected output: Detail rendered. Tooltip detail rendered. -->      <span title=" + '"' + "This is the detail" + '"' + ">        This is the detail      </span>";
+        String case4 = "!-- Case 4: Expected output: Detail rendered. Tooltip detail rendered. -->      <span title=" + '"' + "This is the detail" + '"' + ">        This is the detail      </span>";
+        String case5 = "<!-- Case 5: Expected output: Both summary and detail rendered. Tooltip detail rendered. -->      <span title=" + '"' + "This is the detail" + '"' + ">        This is the summary This is the detail      </span>";
+        String case6 = "<!-- Case 6: Expected output: Summary rendered. Tooltip detail rendered. -->      <span title=" + '"' + "This is the detail" + '"' + ">        This is the summary       </span>";
+        assertTrue(-1 != pageXml.indexOf(case1));
+        assertTrue(-1 != pageXml.indexOf(case2));
+        assertTrue(-1 != pageXml.indexOf(case3));
+        assertTrue(-1 != pageXml.indexOf(case4));
+        assertTrue(-1 != pageXml.indexOf(case5));
+        assertTrue(-1 != pageXml.indexOf(case6));
+
+    }
+
+
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/render/MessagesRenderITCase.java b/test/servlet30/systest/src/test/java/com/sun/faces/render/MessagesRenderITCase.java
new file mode 100644
index 0000000..0f7ed3a
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/render/MessagesRenderITCase.java
@@ -0,0 +1,100 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.render;
+
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.sun.faces.htmlunit.HtmlUnitFacesITCase;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+
+public class MessagesRenderITCase extends HtmlUnitFacesITCase {
+
+    public MessagesRenderITCase(String name) {
+        super(name);
+    }
+
+    /**
+     * Set up instance variables required by this test case.
+     */
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+
+
+    /**
+     * Return the tests included in this test suite.
+     */
+    public static Test suite() {
+        return (new TestSuite(MessagesRenderITCase.class));
+    }
+
+
+    /**
+     * Tear down instance variables required by this test case.
+     */
+    public void tearDown() {
+        super.tearDown();
+    }
+
+
+    public void testMessagesToolTip() throws Exception {
+        HtmlPage page = getPage("/faces/messages.xhtml");
+        String pageXml = page.asXml().replaceAll("\n","");
+        pageXml = pageXml.replaceAll("\t","");
+        pageXml = pageXml.replaceAll("\r","");
+        String case1 = "<!-- Case 1: Expected output: Both summary and detail rendered. -->      <ul>        <li>          This is the summary This is the detail        </li>        <li>          This is the summary This is the detail        </li>      </ul>";
+        String case2 = "<!-- Case 2: Expected output: Both summary and detail rendered. Tooltip detail rendered. -->      <ul>        <li>          <span title=" + '"' + "This is the detail" + '"' + ">            This is the summary This is the detail          </span>        </li>        <li>          <span title=" + '"' + "This is the detail" + '"' + ">            This is the summary This is the detail          </span>        </li>      </ul>"; 
+        String case3 = "<!-- Case 3: Expected output: Both summary and detail rendered. Tooltip detail rendered. -->      <ul>        <li>          <span title=" + '"' + "This is the detail" + '"' + ">            This is the summary This is the detail          </span>        </li>        <li>          <span title=" + '"' + "This is the detail" + '"' + ">            This is the summary This is the detail          </span>        </li>      </ul>";
+        String case4 = "<!-- Case 4: Expected output: Summary rendered. Tooltip detail rendered. -->      <ul>        <li>          <span title=" + '"' + "This is the detail" + '"' + ">            This is the summary           </span>        </li>        <li>          <span title=" + '"' + "This is the detail" + '"' + ">            This is the summary           </span>        </li>      </ul>";
+        String case5 = "<!-- Case 5: Expected output: Summary rendered. Tooltip detail rendered. -->      <ul>        <li>          <span title=" + '"' + "This is the detail" + '"' + ">            This is the summary           </span>        </li>        <li>          <span title=" + '"' + "This is the detail" + '"' + ">            This is the summary           </span>        </li>      </ul>";
+        String case6 = "<!-- Case 6: Expected output: Summary rendered. Tooltip detail rendered. -->      <ul>        <li>          <span title=" + '"' + "This is the detail" + '"' + ">            This is the summary           </span>        </li>        <li>          <span title=" + '"' + "This is the detail" + '"' + ">            This is the summary           </span>        </li>      </ul>";
+        assertTrue(-1 != pageXml.indexOf(case1));
+        assertTrue(-1 != pageXml.indexOf(case2));
+        assertTrue(-1 != pageXml.indexOf(case3));
+        assertTrue(-1 != pageXml.indexOf(case4));
+        assertTrue(-1 != pageXml.indexOf(case5));
+        assertTrue(-1 != pageXml.indexOf(case6));
+
+    }
+
+
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/render/OutputScriptStyleITCase.java b/test/servlet30/systest/src/test/java/com/sun/faces/render/OutputScriptStyleITCase.java
new file mode 100644
index 0000000..f8b7de9
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/render/OutputScriptStyleITCase.java
@@ -0,0 +1,220 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.render;
+
+import com.sun.faces.htmlunit.HtmlUnitFacesITCase;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import com.gargoylesoftware.htmlunit.html.*;
+
+
+public class OutputScriptStyleITCase extends HtmlUnitFacesITCase {
+
+    public OutputScriptStyleITCase(String name) {
+        super(name);
+    }
+
+    /**
+     * Set up instance variables required by this test case.
+     */
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+
+
+    /**
+     * Return the tests included in this test suite.
+     */
+    public static Test suite() {
+        return (new TestSuite(OutputScriptStyleITCase.class));
+    }
+
+
+    /**
+     * Tear down instance variables required by this test case.
+     */
+    public void tearDown() {
+        super.tearDown();
+    }
+
+
+    public void testOutputScriptStyle() throws Exception {
+        HtmlPage page = getPage("/faces/render/outputScriptStyleNested.xhtml");
+
+        String text = page.asXml();
+
+        // case 1
+        assertTrue(text.matches(
+                "(?s).*<head>.*"+
+                "<script type=\"text/javascript\".*src=\"/jsf-systest/faces/javax.faces.resource/case1.js.*\">.*" +
+                "</script>.*" + 
+                "</head>.*"
+                ));
+        
+        assertTrue(!text.matches("(?s).*alert\\(\"case1\"\\);.*"));
+        
+        // case 2
+        assertTrue(text.matches(
+                "(?s).*<body>.*"+
+                "<script type=\"text/javascript\">.*" + 
+                "alert\\(\"case2\"\\);.*" +
+                "</script>.*" + 
+                "</body>.*"
+                ));
+        
+        // case 3
+        assertTrue(text.matches(
+                "(?s).*<body>.*"+
+                "<script type=\"text/javascript\".*src=\"/jsf-systest/faces/javax.faces.resource/case3.js.*\">.*" +
+                "</script>.*" + 
+                "</body>.*"
+                ));
+        
+        assertTrue(!text.matches("(?s).*alert\\(\"case3\"\\);.*"));
+        
+        // case 4
+        assertTrue(text.matches(
+                "(?s).*<head>.*"+
+                "<script type=\"text/javascript\".*src=\"/jsf-systest/faces/javax.faces.resource/case4.js.*\">.*" +
+                "</script>.*" + 
+                "</head>.*"
+                ));
+
+        // case 5, if not satisfied, would cause the page to fail.
+
+        // case 6
+        assertTrue(text.matches(
+                "(?s).*<body>.*"+
+                "<script type=\"text/javascript\".*src=\"/jsf-systest/faces/javax.faces.resource/case6.js.*\">.*" +
+                "</script>.*" + 
+                "</body>.*"
+                ));
+        
+        // case 7, if not satisfied, would cause the page to fail
+        
+        // case 8
+        assertTrue(text.matches(
+                "(?s).*<body>.*"+
+                "<script type=\"text/javascript\">.*" + 
+                "alert\\(\"case8\"\\);.*" +
+                "</script>.*" + 
+                "</body>.*"
+                ));
+        
+        // case 9
+        assertTrue(text.matches(
+                "(?s).*<head>.*"+
+                "<link.* type=\"text/css\".*rel=\"stylesheet\".* href=\"/jsf-systest/faces/javax.faces.resource/case9.css.*\"\\s*/>.*" + 
+                "</head>.*"
+                ));
+        
+        assertTrue(!text.matches("(?s).*\\.case9.*"));
+        
+        // case 10
+        assertTrue(text.matches(
+                "(?s).*<head>.*"+
+                "<style\\s*type=\"text/css\">.*" +
+                "\\.case10\\s*\\{.*" +
+                "color: blue;.*" +
+                "\\}.*" +
+                "</style>.*" +
+                "</head>.*"
+                ));
+        
+
+        // case 11
+        assertTrue(text.matches(
+                "(?s).*<head>.*"+
+                "<link.* type=\"text/css\".*rel=\"stylesheet\".* href=\"/jsf-systest/faces/javax.faces.resource/case11.css.*\"\\s*/>.*" + 
+                "</head>.*"
+                ));
+        
+        assertTrue(!text.matches("(?s).*\\.case11.*"));
+        
+        // case 12
+        assertTrue(text.matches(
+                "(?s).*<head>.*"+
+                "<link.* type=\"text/css\".*rel=\"stylesheet\".* href=\"/jsf-systest/faces/javax.faces.resource/case12.css.*\"\\s*/>.*" + 
+                "</head>.*"
+                ));
+
+        // case 13, if not satisfied, would cause the page to fail.
+
+        // case 14
+        assertTrue(text.matches(
+                "(?s).*<head>.*"+
+                "<link.* type=\"text/css\".*rel=\"stylesheet\".* href=\"/jsf-systest/faces/javax.faces.resource/case14.css.*\"\\s*/>.*" + 
+                "</head>.*"
+                ));
+
+        // case 15, if not satisfied, would cause the page to fail.
+        
+        // case 16
+        assertTrue(text.matches(
+                "(?s).*<head>.*"+
+                "<style\\s*type=\"text/css\">.*" +
+                "\\.case16\\s*\\{.*" +
+                "color: orange;.*" +
+                "\\}.*" +
+                "</style>.*" +
+                "</head>.*"
+                ));
+
+    }
+
+    public void testScriptQuery() throws Exception {
+        lastpage = getPage("/faces/render/outputScriptQuery.xhtml");
+        String text = lastpage.asXml();
+        assertTrue(text.contains("/jsf-systest/faces/javax.faces.resource/simple.js"));
+        assertTrue(text.contains("/jsf-systest/faces/javax.faces.resource/simple2.js"));
+        assertTrue(text.contains("/jsf-systest/faces/javax.faces.resource/jsf.js"));
+    }
+
+    public void testSheetMedia() throws Exception {
+        lastpage = getPage("/faces/render/outputSheetMedia.xhtml");
+        String text = lastpage.asXml();
+        assertTrue(text.matches(
+                "(?s).*<head>.*"+
+                "<link.* type=\"text/css\".* rel=\"stylesheet\".* href=\"/jsf-systest/faces/javax.faces.resource/case9.css.*\".* media=\"print\"\\s*/>.*" +
+                "</head>.*"
+                ));
+    }
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/render/SelectStarITCase.java b/test/servlet30/systest/src/test/java/com/sun/faces/render/SelectStarITCase.java
new file mode 100644
index 0000000..30e4a3f
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/render/SelectStarITCase.java
@@ -0,0 +1,272 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.render;
+
+import com.sun.faces.htmlunit.HtmlUnitFacesITCase;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import com.gargoylesoftware.htmlunit.html.*;
+
+import java.util.List;
+
+public class SelectStarITCase extends HtmlUnitFacesITCase {
+
+    public SelectStarITCase(String name) {
+        super(name);
+    }
+
+    /**
+     * Set up instance variables required by this test case.
+     */
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+
+
+    /**
+     * Return the tests included in this test suite.
+     */
+    public static Test suite() {
+        return (new TestSuite(SelectStarITCase.class));
+    }
+
+
+    /**
+     * Tear down instance variables required by this test case.
+     */
+    public void tearDown() {
+        super.tearDown();
+    }
+
+
+    public void testSelectStarXhtml() throws Exception {
+        String failMsg;
+
+        getPage("/faces/render/selectStarNoSelection.xhtml");
+        System.out.println("Start select star test case - facelets");
+
+        // Check SelectManyListbox
+        HtmlSelect selectOneList = (HtmlSelect) lastpage.getHtmlElementById("selectOneListbox");
+        List<HtmlOption> selectOneListOptions = selectOneList.getOptions();
+        failMsg = "Wrong number of options for SelectManyListbox, expected 5, got "+selectOneListOptions.size();
+        assertTrue(failMsg,selectOneListOptions.size() == 5);
+        HtmlOption selectOption = selectOneListOptions.get(0);
+        assertTrue(selectOption.getValueAttribute().equals("noSelection"));
+        assertTrue(selectOption.asText().equals("No selection"));
+        selectOption = selectOneListOptions.get(1);
+        assertTrue(selectOption.getValueAttribute().equals("Apple"));
+        assertTrue(selectOption.asText().equals("Apple"));
+
+        // Check SelectOneListbox
+        HtmlSelect selectOneMenu = (HtmlSelect) lastpage.getHtmlElementById("selectOneMenu");
+        List<HtmlOption> selectOneMenuOptions = selectOneMenu.getOptions();
+        assertTrue(selectOneMenuOptions.size() == 5);
+        selectOption = selectOneMenuOptions.get(0);
+        assertTrue(selectOption.getValueAttribute().equals("noSelection"));
+        assertTrue(selectOption.asText().equals("No selection"));
+        selectOption = selectOneMenuOptions.get(1);
+        assertTrue(selectOption.getValueAttribute().equals("Apple"));
+        assertTrue(selectOption.asText().equals("Apple"));
+
+        // Check SelectOneRadio
+        HtmlInput selectOneRadio0 = (HtmlInput) lastpage.getHtmlElementById("selectOneRadio:0");
+        assertTrue(selectOneRadio0.getValueAttribute().equals("noSelection"));
+        HtmlInput selectOneRadio1 = (HtmlInput) lastpage.getHtmlElementById("selectOneRadio:1");
+        assertTrue(selectOneRadio1.getValueAttribute().equals("Apple"));
+
+        // Check SelectManyCheckbox
+        HtmlInput selectManyCheckbox0 = (HtmlInput) lastpage.getHtmlElementById("selectManyCheckbox:0");
+        assertTrue(selectManyCheckbox0.getValueAttribute().equals("noSelection"));
+        HtmlInput selectManyCheckbox1 = (HtmlInput) lastpage.getHtmlElementById("selectManyCheckbox:1");
+        assertTrue(selectManyCheckbox1.getValueAttribute().equals("Apple"));
+
+        // Check SelectManyListbox
+        HtmlSelect selectManyListbox = (HtmlSelect) lastpage.getHtmlElementById("selectManyListbox");
+        List<HtmlOption> selectManyListOptions = selectManyListbox.getOptions();
+        assertTrue(selectManyListOptions.size() == 5);
+        selectOption = selectManyListOptions.get(0);
+        assertTrue(selectOption.getValueAttribute().equals("noSelection"));
+        assertTrue(selectOption.asText().equals("No selection"));
+        selectOption = selectManyListOptions.get(1);
+        assertTrue(selectOption.getValueAttribute().equals("Apple"));
+        assertTrue(selectOption.asText().equals("Apple"));
+
+        // Check SelectManyMenu
+        HtmlSelect selectManyMenu = (HtmlSelect) lastpage.getHtmlElementById("selectManyMenu");
+        List<HtmlOption> selectManyMenuOptions = selectManyMenu.getOptions();
+        assertTrue(selectManyMenuOptions.size() == 5);
+        selectOption = selectManyMenuOptions.get(0);
+        assertTrue(selectOption.getValueAttribute().equals("noSelection"));
+        assertTrue(selectOption.asText().equals("No selection"));
+        selectOption = selectManyMenuOptions.get(1);
+        assertTrue(selectOption.getValueAttribute().equals("Apple"));
+        assertTrue(selectOption.asText().equals("Apple"));
+    }
+
+    public void testSelectStarJspx() throws Exception {
+        String failMsg;
+
+        getPage("/faces/render/selectStarNoSelection.jspx");
+        System.out.println("Start select star test case - jspx");
+
+        // Check SelectManyListbox
+        HtmlSelect selectOneList = (HtmlSelect) lastpage.getHtmlElementById("selectOneListbox");
+        List<HtmlOption> selectOneListOptions = selectOneList.getOptions();
+        failMsg = "Wrong number of options for SelectManyListbox, expected 5, got "+selectOneListOptions.size();
+        assertTrue(failMsg,selectOneListOptions.size() == 5);
+        HtmlOption selectOption = selectOneListOptions.get(0);
+        assertTrue(selectOption.getValueAttribute().equals("noSelection"));
+        assertTrue(selectOption.asText().equals("No selection"));
+        selectOption = selectOneListOptions.get(1);
+        assertTrue(selectOption.getValueAttribute().equals("Apple"));
+        assertTrue(selectOption.asText().equals("Apple"));
+
+        // Check SelectOneListbox
+        HtmlSelect selectOneMenu = (HtmlSelect) lastpage.getHtmlElementById("selectOneMenu");
+        List<HtmlOption> selectOneMenuOptions = selectOneMenu.getOptions();
+        assertTrue(selectOneMenuOptions.size() == 5);
+        selectOption = selectOneMenuOptions.get(0);
+        assertTrue(selectOption.getValueAttribute().equals("noSelection"));
+        assertTrue(selectOption.asText().equals("No selection"));
+        selectOption = selectOneMenuOptions.get(1);
+        assertTrue(selectOption.getValueAttribute().equals("Apple"));
+        assertTrue(selectOption.asText().equals("Apple"));
+
+        // Check SelectOneRadio
+        HtmlInput selectOneRadio0 = (HtmlInput) lastpage.getHtmlElementById("selectOneRadio:0");
+        assertTrue(selectOneRadio0.getValueAttribute().equals("noSelection"));
+        HtmlInput selectOneRadio1 = (HtmlInput) lastpage.getHtmlElementById("selectOneRadio:1");
+        assertTrue(selectOneRadio1.getValueAttribute().equals("Apple"));
+
+        // Check SelectManyCheckbox
+        HtmlInput selectManyCheckbox0 = (HtmlInput) lastpage.getHtmlElementById("selectManyCheckbox:0");
+        assertTrue(selectManyCheckbox0.getValueAttribute().equals("noSelection"));
+        HtmlInput selectManyCheckbox1 = (HtmlInput) lastpage.getHtmlElementById("selectManyCheckbox:1");
+        assertTrue(selectManyCheckbox1.getValueAttribute().equals("Apple"));
+
+        // Check SelectManyListbox
+        HtmlSelect selectManyListbox = (HtmlSelect) lastpage.getHtmlElementById("selectManyListbox");
+        List<HtmlOption> selectManyListOptions = selectManyListbox.getOptions();
+        assertTrue(selectManyListOptions.size() == 5);
+        selectOption = selectManyListOptions.get(0);
+        assertTrue(selectOption.getValueAttribute().equals("noSelection"));
+        assertTrue(selectOption.asText().equals("No selection"));
+        selectOption = selectManyListOptions.get(1);
+        assertTrue(selectOption.getValueAttribute().equals("Apple"));
+        assertTrue(selectOption.asText().equals("Apple"));
+
+        // Check SelectManyMenu
+        HtmlSelect selectManyMenu = (HtmlSelect) lastpage.getHtmlElementById("selectManyMenu");
+        List<HtmlOption> selectManyMenuOptions = selectManyMenu.getOptions();
+        assertTrue(selectManyMenuOptions.size() == 5);
+        selectOption = selectManyMenuOptions.get(0);
+        assertTrue(selectOption.getValueAttribute().equals("noSelection"));
+        assertTrue(selectOption.asText().equals("No selection"));
+        selectOption = selectManyMenuOptions.get(1);
+        assertTrue(selectOption.getValueAttribute().equals("Apple"));
+        assertTrue(selectOption.asText().equals("Apple"));
+
+    }
+
+    public void testSelectStarXhtmlHide() throws Exception {
+        String failMsg;
+
+        getPage("/faces/render/selectStarSelectionHideNoSelection.xhtml");
+        System.out.println("Start select star test case - facelets");
+
+        // Check SelectManyListbox
+        HtmlSelect selectOneList = (HtmlSelect) lastpage.getHtmlElementById("selectOneListbox");
+        List<HtmlOption> selectOneListOptions = selectOneList.getOptions();
+        failMsg = "Wrong number of options for SelectManyListbox, expected 4, got "+selectOneListOptions.size();
+        assertTrue(failMsg,selectOneListOptions.size() == 4);
+        HtmlOption selectOption = selectOneListOptions.get(0);
+        assertTrue(selectOption.getValueAttribute().equals("Apple"));
+        assertTrue(selectOption.asText().equals("Apple"));
+
+        // Check SelectOneListbox
+        HtmlSelect selectOneMenu = (HtmlSelect) lastpage.getHtmlElementById("selectOneMenu");
+        List<HtmlOption> selectOneMenuOptions = selectOneMenu.getOptions();
+        assertTrue(selectOneMenuOptions.size() == 4);
+        selectOption = selectOneMenuOptions.get(0);
+        assertTrue(selectOption.getValueAttribute().equals("Apple"));
+        assertTrue(selectOption.asText().equals("Apple"));
+
+        // Check SelectOneRadio
+        HtmlInput selectOneRadio0 = (HtmlInput) lastpage.getHtmlElementById("selectOneRadio:1");
+        assertTrue(selectOneRadio0.getValueAttribute().equals("Apple"));
+
+        // Check SelectManyCheckbox
+        HtmlInput selectManyCheckbox0 = (HtmlInput) lastpage.getHtmlElementById("selectManyCheckbox:1");
+        assertTrue(selectManyCheckbox0.getValueAttribute().equals("Apple"));
+
+        // Check SelectManyListbox
+        HtmlSelect selectManyListbox = (HtmlSelect) lastpage.getHtmlElementById("selectManyListbox");
+        List<HtmlOption> selectManyListOptions = selectManyListbox.getOptions();
+        assertTrue(selectManyListOptions.size() == 4);
+        selectOption = selectManyListOptions.get(0);
+        assertTrue(selectOption.getValueAttribute().equals("Apple"));
+        assertTrue(selectOption.asText().equals("Apple"));
+
+        // Check SelectManyMenu
+        HtmlSelect selectManyMenu = (HtmlSelect) lastpage.getHtmlElementById("selectManyMenu");
+        List<HtmlOption> selectManyMenuOptions = selectManyMenu.getOptions();
+        assertTrue(selectManyMenuOptions.size() == 4);
+        selectOption = selectManyMenuOptions.get(0);
+        assertTrue(selectOption.getValueAttribute().equals("Apple"));
+        assertTrue(selectOption.asText().equals("Apple"));
+    }
+
+    
+    public void testMojarra932() throws Exception {
+        getPage("/faces/render/Mojarra932UsingPage.xhtml");
+        HtmlSelect selectOneMenu = (HtmlSelect) lastpage.getHtmlElementById("selectOneMenu");
+        List<HtmlOption> selectOneListOptions = selectOneMenu.getOptions();
+        HtmlOption noSelectionValue = selectOneListOptions.get(4);
+        selectOneMenu.setSelectedAttribute(noSelectionValue, true);
+        HtmlSubmitInput button = (HtmlSubmitInput) lastpage.getHtmlElementById("button");
+        lastpage = button.click();
+        String text = lastpage.asText();
+        assertTrue(text.matches("(?s).*REQUIRED.*"));
+        assertTrue(text.matches("(?s).*Frodo.*"));
+        
+    }
+
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/systest/BasicIT.java b/test/servlet30/systest/src/test/java/com/sun/faces/systest/BasicIT.java
new file mode 100644
index 0000000..93c4d20
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/systest/BasicIT.java
@@ -0,0 +1,83 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.systest;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import java.util.regex.Pattern;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class BasicIT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testSimpleNonFacesResponse() throws Exception {
+        webClient.setThrowExceptionOnFailingStatusCode(false);
+        HtmlPage page = webClient.getPage(webUrl + "hello.jsp");
+        assertEquals(200, page.getWebResponse().getStatusCode());
+        webClient.setThrowExceptionOnFailingStatusCode(true);
+        assertTrue(Pattern.matches("(?s).*/hello.jsp PASSED.*", page.asXml()));
+    }
+
+    @Test
+    public void testSimpleFacesResponseDirect() throws Exception {
+        webClient.setThrowExceptionOnFailingStatusCode(false);
+        HtmlPage page = webClient.getPage(webUrl + "faces/hello.jsp");
+        assertEquals(200, page.getWebResponse().getStatusCode());
+        webClient.setThrowExceptionOnFailingStatusCode(true);
+        assertTrue(Pattern.matches("(?s).*/hello.jsp PASSED.*", page.asXml()));
+    }
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/systest/BugDb13582626IT.java b/test/servlet30/systest/src/test/java/com/sun/faces/systest/BugDb13582626IT.java
new file mode 100644
index 0000000..4479e56
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/systest/BugDb13582626IT.java
@@ -0,0 +1,71 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.systest;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import java.util.regex.Pattern;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class BugDb13582626IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testViewNullLocale() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/facelets/i_bugdb_13582626_fViewNullLocale.xhtml");
+        assertTrue(Pattern.matches("(?s).*text\\s+value.*", page.asXml()));
+    }
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/systest/ComponentIT.java b/test/servlet30/systest/src/test/java/com/sun/faces/systest/ComponentIT.java
new file mode 100644
index 0000000..ad8e800
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/systest/ComponentIT.java
@@ -0,0 +1,85 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.systest;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import java.util.regex.Pattern;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class ComponentIT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testOutputLinkSpaces() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/component.jsp");
+        assertTrue(Pattern.matches("(?s).*/component.jsp PASSED.*", page.asXml()));
+    }
+    
+    @Test
+    public void testProcessSaveRestoreState() throws Exception {
+        webClient.setThrowExceptionOnFailingStatusCode(false);
+        HtmlPage page = webClient.getPage(webUrl + "faces/ProcessSaveRestoreStateTest.jsp");
+        assertEquals(200, page.getWebResponse().getStatusCode());
+        webClient.setThrowExceptionOnFailingStatusCode(true);
+    }
+    
+    @Test
+    public void testComponent01() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/component01.jsp");
+        assertTrue(Pattern.matches("(?s).*/component01.jsp PASSED.*", page.asXml()));
+    }
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/systest/ComponentMiscITCase.java b/test/servlet30/systest/src/test/java/com/sun/faces/systest/ComponentMiscITCase.java
new file mode 100644
index 0000000..f2b3a69
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/systest/ComponentMiscITCase.java
@@ -0,0 +1,143 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import com.gargoylesoftware.htmlunit.html.HtmlOption;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSelect;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import com.sun.faces.htmlunit.HtmlUnitFacesITCase;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+/**
+ * <p>Test Case for JSP Interoperability.</p>
+ */
+
+public class ComponentMiscITCase extends HtmlUnitFacesITCase {
+
+
+    // ------------------------------------------------------------ Constructors
+
+
+    /**
+     * Construct a new instance of this test case.
+     *
+     * @param name Name of the test case
+     */
+    public ComponentMiscITCase(String name) {
+        super(name);
+    }
+
+
+    // ------------------------------------------------------ Instance Variables
+
+
+    // ---------------------------------------------------- Overall Test Methods
+
+
+    /**
+     * Set up instance variables required by this test case.
+     */
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+
+
+    /**
+     * Return the tests included in this test suite.
+     */
+    public static Test suite() {
+        return (new TestSuite(ComponentMiscITCase.class));
+    }
+
+
+    /**
+     * Tear down instance variables required by this test case.
+     */
+    public void tearDown() {
+        super.tearDown();
+    }
+
+
+    // ------------------------------------------------- Individual Test Methods
+
+
+    public void testModelCoercionForUISelectOne() throws Exception {
+        HtmlPage page = getPage("/faces/ModelSelectItemConversion.jsp");
+        HtmlSelect select = (HtmlSelect) getAllElementsOfGivenClass(page, 
+                                                                    new ArrayList(),
+                                                                    HtmlSelect.class).get(0);
+        HtmlOption option = select.getOption(1);
+        option.setSelected(true);
+        
+        HtmlSubmitInput submit = (HtmlSubmitInput) getInputContainingGivenId(page,
+                                                                             "submit");
+        
+        // clicking this should yield no errors.
+        submit.click();
+        
+    }
+    
+    public void testConverterForUISelectMany() throws Exception {
+        HtmlPage page = getPage("/faces/SelectManyConverterTest.jsp");
+        List selects = getAllElementsOfGivenClass(page, 
+                                                  new ArrayList(), 
+                                                  HtmlSelect.class);
+        HtmlSelect select = (HtmlSelect) selects.get(0);
+        HtmlSelect select2 = (HtmlSelect) selects.get(1);
+        select.getOption(1).setSelected(true);
+        select.getOption(2).setSelected(true);
+        select2.getOption(1).setSelected(true);
+        select2.getOption(2).setSelected(true);
+        
+        HtmlSubmitInput submit = (HtmlSubmitInput) getInputContainingGivenId(page,
+                                                                             "submit");
+        page = (HtmlPage) submit.click();
+        
+        // ensure no validator errors
+        String pageText = page.asText();
+        assertTrue(pageText.indexOf("Value is not valid") < 0);
+    }
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/systest/ConditionalNavigationITCase.java b/test/servlet30/systest/src/test/java/com/sun/faces/systest/ConditionalNavigationITCase.java
new file mode 100644
index 0000000..aa1d549
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/systest/ConditionalNavigationITCase.java
@@ -0,0 +1,112 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlCheckBoxInput;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import com.sun.faces.htmlunit.HtmlUnitFacesITCase;
+
+public class ConditionalNavigationITCase extends HtmlUnitFacesITCase {
+
+
+    public ConditionalNavigationITCase(String name) {
+           super(name);
+       }
+
+       /**
+        * Set up instance variables required by this test case.
+        */
+       public void setUp() throws Exception {
+           super.setUp();
+       }
+
+
+       /**
+        * Return the tests included in this test suite.
+        */
+       public static Test suite() {
+           return (new TestSuite(ConditionalNavigationITCase.class));
+       }
+
+
+       /**
+        * Tear down instance variables required by this test case.
+        */
+       public void tearDown() {
+           super.tearDown();
+       }
+
+
+       // ------------------------------------------------------------ Test Methods
+
+       public void testConditionalNavigation() throws Exception {
+
+           HtmlPage page = getPage("/faces/conditionalNav.xhtml");
+
+           HtmlCheckBoxInput checkbox = (HtmlCheckBoxInput)
+                   page.getElementById("checkbox");
+           checkbox.setChecked(true);
+           HtmlSubmitInput button = (HtmlSubmitInput)
+                   page.getElementById("submit");
+           page = button.click();
+           String text = page.asText();
+           assertTrue(text.contains("Success!"));
+
+           page = getPage("/faces/conditionalNav.xhtml");
+
+           checkbox = (HtmlCheckBoxInput)
+                   page.getElementById("checkbox");
+           checkbox.setChecked(false);
+           button = (HtmlSubmitInput)
+                   page.getElementById("submit");
+           page = button.click();
+           text = page.asText();
+           assertTrue(text.contains("Failure!"));
+
+
+
+       }
+
+
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/systest/ConverterIT.java b/test/servlet30/systest/src/test/java/com/sun/faces/systest/ConverterIT.java
new file mode 100644
index 0000000..9c457c1
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/systest/ConverterIT.java
@@ -0,0 +1,108 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.systest;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import java.util.regex.Pattern;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class ConverterIT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    /*
+     * Test Converter creation
+     */
+    @Test
+    public void testConverter() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/converter.jsp");
+        assertTrue(Pattern.matches("(?s).*/converter.jsp PASSED.*", page.asXml()));
+    }
+
+    @Test
+    public void testConverter01() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/converter01.jsp");
+        assertTrue(Pattern.matches("(?s).*/converter01.jsp PASSED.*", page.asXml()));
+    }
+
+    @Test
+    public void testConverter02() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/converter02.jsp");
+        assertTrue(Pattern.matches("(?s).*<html>\\s*<head/>\\s*<body>\\s*<span\\s*id=\"id1\">\\s*\\$123\\.45\\s*</span>\\s*</body>\\s*</html>.*", page.asXml()));
+    }
+
+    @Test
+    public void testConverter03() throws Exception {
+        webClient.setThrowExceptionOnFailingStatusCode(false);
+        HtmlPage page = webClient.getPage(webUrl + "faces/converter03.jsp");
+        assertEquals(200, page.getWebResponse().getStatusCode());
+        webClient.setThrowExceptionOnFailingStatusCode(true);
+    }
+
+    @Test
+    public void testConverter04() throws Exception {
+        webClient.setThrowExceptionOnFailingStatusCode(false);
+        HtmlPage page = webClient.getPage(webUrl + "faces/converter04.jsp");
+        assertEquals(200, page.getWebResponse().getStatusCode());
+        webClient.setThrowExceptionOnFailingStatusCode(true);
+    }
+
+    @Test
+    public void testEnumConverter1() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/enum-converter-1.jsp");
+        assertTrue(Pattern.matches("(?s).*/enum-converter-1.jsp PASSED.*", page.asXml()));
+    }
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/systest/DataTableITCase.java b/test/servlet30/systest/src/test/java/com/sun/faces/systest/DataTableITCase.java
new file mode 100644
index 0000000..f93a854
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/systest/DataTableITCase.java
@@ -0,0 +1,243 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest;
+
+import java.util.List;
+import java.util.ArrayList;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import com.sun.faces.htmlunit.HtmlUnitFacesITCase;
+import com.gargoylesoftware.htmlunit.html.*;
+
+public class DataTableITCase extends HtmlUnitFacesITCase {
+
+    /**
+     * Construct a new instance of this test case.
+     *
+     * @param name Name of the test case
+     */
+    public DataTableITCase(String name) {
+        super(name);
+    }
+
+    /**
+     * Return the tests included in this test suite.
+     */
+    public static Test suite() {
+        return (new TestSuite(DataTableITCase.class));
+    }
+
+
+    // ------------------------------------------------------------ Test Methods
+
+
+    /*
+     * Test for https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=774
+     */
+    public void testVarNotOverrwrittenByNull() throws Exception {
+
+        HtmlPage page = getPage("/faces/standard/dtablevarnotoverwritten.jsp");
+        List<HtmlAnchor> links = new ArrayList<HtmlAnchor>(3);
+        getAllElementsOfGivenClass(page, links, HtmlAnchor.class);
+
+        // should have three links rendered by the table
+        // with their display values being abc, def, ghi in that
+        // order *if* the var attribute wasn't overwritten by the tag.
+        assertEquals(3, links.size());
+        List<String> expectedValues = new ArrayList<String>(3);
+        expectedValues.add("abc");
+        expectedValues.add("def");
+        expectedValues.add("ghi");
+        for (int i = 0, len = links.size(); i < len; i++) {
+            HtmlAnchor anchor = links.get(i);
+            String expectedValue = expectedValues.get(i);
+            assertEquals(expectedValue, expectedValue, anchor.asText().trim());
+        }
+
+    }
+
+
+    /*
+     * Test regression https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=902.
+     */
+    public void testRowClasses() throws Exception {
+
+        HtmlPage page = getPage("/faces/standard/dtablerowclasses.jsp");
+        assertNotNull(page);
+        List<HtmlTable> tableList = new ArrayList<HtmlTable>(1);
+        getAllElementsOfGivenClass(page, tableList, HtmlTable.class);
+        assertTrue(tableList.size() == 1);
+        HtmlTable table = tableList.get(0);
+        List<HtmlTableRow> rows = table.getRows();
+        assertEquals(6,rows.size());
+        for (int i = 0, len = rows.size(); i < len; i++) {
+            HtmlTableRow row = rows.get(i);
+            if (i % 2 == 0) {
+            	assertEquals("b1",row.getClassAttribute());
+            } else {
+            	assertEquals("b2",row.getClassAttribute());
+            }
+        }
+
+    }
+
+    // For Issue 2066: Assert rowHeader attribute has been rendered correctly.
+
+    public void testRowsWithRowHeader() throws Exception {
+        HtmlPage page = getPage("/faces/standard/dtablerowclasses.jsp");
+        assertNotNull(page);
+        List<HtmlTable> tableList = new ArrayList<HtmlTable>(1);
+        getAllElementsOfGivenClass(page, tableList, HtmlTable.class);
+        assertTrue(tableList.size() == 1);
+        HtmlTable table = tableList.get(0);
+        List<HtmlTableRow> rows = table.getRows();
+        for (int i = 0, len = rows.size(); i < len; i++) {
+            HtmlTableRow row = rows.get(i);
+            for (final HtmlTableCell cell : row.getCells()) {
+                assertEquals("row", cell.getAttribute("scope"));
+            }
+        }
+    }
+
+    public void testTablesWithEmptyBody() throws Exception {
+
+        HtmlPage page = getPage("/faces/standard/dtablewithemptybody.jsp");
+        String xml = page.asText();
+        System.out.println(xml);
+        assertNotNull(page);
+
+        assertEmptyTable("Empty", page, false);
+
+        HtmlTable table = (HtmlTable) page.getElementById("Some");
+        assertNotNull(table);
+        HtmlTableHeader header = table.getHeader();
+        HtmlTableRow row = assertSingle(header.getRows());
+        HtmlTableCell cell = assertSingle(row.getCells());
+        assertFalse(cell.hasAttribute("colspan"));
+        HtmlTableFooter footer = table.getFooter();
+        row = assertSingle(footer.getRows());
+        cell = assertSingle(row.getCells());
+        assertFalse(cell.hasAttribute("colspan"));
+        HtmlTableBody body = assertSingle(table.getBodies());
+        assertSingle(body.getRows());
+    }
+
+    /**
+     * tests that a table with the given id exists, and that it is rendered as
+     * <table>
+     * <tr>
+     * <td></td>
+     * </tr>
+     * </table>
+     *
+     * @param tableId
+     *            the id of the table
+     * @param page
+     *            the page to lookup the table in
+     */
+    private static void assertEmptyTable(final String tableId,
+            final HtmlPage page, final boolean hasHeader) {
+        HtmlTable table = (HtmlTable) page.getElementById(tableId);
+        assertNotNull("Should find Table with ID: " + tableId, table);
+        // Test that we have only one row at all
+        List<HtmlTableRow> allRows = table.getRows();
+        int expectedRowCount = hasHeader ? 2 : 1;
+        assertEquals("Table " + tableId
+                + " should have " + expectedRowCount
+                + " row(s)", expectedRowCount,
+                allRows.size());
+        // test that we have <tbody><tr>...</tr></tbody>
+        HtmlTableBody body = assertSingle(tableId + "should have one tbody",
+                table.getBodies());
+        HtmlTableRow row = assertSingle(tableId + ":tbody should have one tr",
+                body.getRows());
+        assertTrue(row.getCells().size() == 2);
+    }
+
+    private static <T> T assertSingle(final String msg, final List<T> input) {
+        assertEquals(msg, 1, input.size());
+        return input.get(0);
+    }
+
+    private static <T> T assertSingle(final List<T> input) {
+        assertEquals(1, input.size());
+        return input.get(0);
+    }
+
+    public void testTableForms() throws Exception {
+        getPage("/faces/standard/dtablemultiforms.jsp");
+        checkTrue("out","");
+
+        HtmlTextInput in0 = (HtmlTextInput) lastpage.getHtmlElementById("table:0:columnform:columninput");
+        in0.setValueAttribute("test0");
+
+        HtmlSubmitInput button0 = (HtmlSubmitInput) lastpage.getHtmlElementById("table:0:columnform:columnbutton");
+        lastpage = (HtmlPage) button0.click();
+
+        checkTrue("out","test0");
+
+        HtmlTextInput in1 = (HtmlTextInput) lastpage.getHtmlElementById("table:1:columnform:columninput");
+        in1.setValueAttribute("test1");
+
+        HtmlSubmitInput button1 = (HtmlSubmitInput) lastpage.getHtmlElementById("table:1:columnform:columnbutton");
+        lastpage = (HtmlPage) button1.click();
+
+        checkTrue("out","test1");
+
+        HtmlTextInput in2 = (HtmlTextInput) lastpage.getHtmlElementById("table:2:columnform:columninput");
+        in2.setValueAttribute("test2");
+
+        HtmlSubmitInput button2 = (HtmlSubmitInput) lastpage.getHtmlElementById("table:2:columnform:columnbutton");
+        lastpage = (HtmlPage) button2.click();
+
+        checkTrue("out","test2");
+
+        HtmlTextInput finalin = (HtmlTextInput) lastpage.getHtmlElementById("finalform:finalinput");
+        finalin.setValueAttribute("testfinal");
+
+        HtmlSubmitInput finalbutton = (HtmlSubmitInput) lastpage.getHtmlElementById("finalform:finalbutton");
+        lastpage = (HtmlPage) finalbutton.click();
+
+        checkTrue("out","testfinal");
+
+    }
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/systest/DuplicateIdIT.java b/test/servlet30/systest/src/test/java/com/sun/faces/systest/DuplicateIdIT.java
new file mode 100644
index 0000000..a7a97b3
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/systest/DuplicateIdIT.java
@@ -0,0 +1,105 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.systest;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import static com.sun.faces.test.junit.JsfServerExclude.WEBLOGIC_12_1_3;
+import static com.sun.faces.test.junit.JsfServerExclude.WEBLOGIC_12_1_4;
+import com.sun.faces.test.junit.JsfTest;
+import com.sun.faces.test.junit.JsfTestRunner;
+import static com.sun.faces.test.junit.JsfVersion.JSF_2_2_0;
+import static junit.framework.TestCase.assertEquals;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+ at RunWith(JsfTestRunner.class)
+public class DuplicateIdIT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @JsfTest(value = JSF_2_2_0, excludes = {WEBLOGIC_12_1_3, WEBLOGIC_12_1_4})
+    @Test
+    public void testDuplicateIds01() throws Exception {
+        webClient.setThrowExceptionOnFailingStatusCode(false);
+        HtmlPage page = webClient.getPage(webUrl + "faces/duplicateIds01.jsp");
+        assertEquals(500, page.getWebResponse().getStatusCode());
+        webClient.setThrowExceptionOnFailingStatusCode(true);
+    }
+
+    @Test
+    public void testDuplicateIds02() throws Exception {
+        webClient.setThrowExceptionOnFailingStatusCode(false);
+        HtmlPage page = webClient.getPage(webUrl + "faces/duplicateIds02.jsp");
+        assertEquals(200, page.getWebResponse().getStatusCode());
+        webClient.setThrowExceptionOnFailingStatusCode(true);
+    }
+
+    @JsfTest(value = JSF_2_2_0, excludes = {WEBLOGIC_12_1_3, WEBLOGIC_12_1_4})
+    @Test
+    public void testDuplicateIds03() throws Exception {
+        webClient.setThrowExceptionOnFailingStatusCode(false);
+        HtmlPage page = webClient.getPage(webUrl + "faces/duplicateIds03.jsp");
+        assertEquals(500, page.getWebResponse().getStatusCode());
+        webClient.setThrowExceptionOnFailingStatusCode(true);
+    }
+
+    @Test
+    public void testDuplicateIds05() throws Exception {
+        webClient.setThrowExceptionOnFailingStatusCode(false);
+        HtmlPage page = webClient.getPage(webUrl + "faces/duplicateIds05.jsp");
+        assertEquals(200, page.getWebResponse().getStatusCode());
+        webClient.setThrowExceptionOnFailingStatusCode(true);
+    }
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/systest/ExternalContextIT.java b/test/servlet30/systest/src/test/java/com/sun/faces/systest/ExternalContextIT.java
new file mode 100644
index 0000000..b24ff9a
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/systest/ExternalContextIT.java
@@ -0,0 +1,83 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.systest;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import java.util.regex.Pattern;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class ExternalContextIT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testRequestScopeAttributeTransparency() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/external01.jsp");
+        assertTrue(Pattern.matches("(?s).*/external01.jsp PASSED.*", page.asXml()));
+    }
+
+    @Test
+    public void testSessionScopeAttributeTransparency() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/external02.jsp");
+        assertTrue(Pattern.matches("(?s).*/external02.jsp PASSED.*", page.asXml()));
+    }
+
+    @Test
+    public void testApplicationScopeAttributeTransparency() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/external03.jsp");
+        assertTrue(Pattern.matches("(?s).*/external03.jsp PASSED.*", page.asXml()));
+    }
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/systest/FaceletIT.java b/test/servlet30/systest/src/test/java/com/sun/faces/systest/FaceletIT.java
new file mode 100644
index 0000000..0667fad
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/systest/FaceletIT.java
@@ -0,0 +1,88 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.systest;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class FaceletIT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testIssue955CompositionNotFound() throws Exception {
+        webClient.setThrowExceptionOnFailingStatusCode(false);
+        HtmlPage page = webClient.getPage(webUrl + "faces/facelets/compositionnotfound.xhtml");
+        assertEquals(500, page.getWebResponse().getStatusCode());
+        webClient.setThrowExceptionOnFailingStatusCode(true);
+    }
+
+    @Test
+    public void testIssue955DecorateNotFound() throws Exception {
+        webClient.setThrowExceptionOnFailingStatusCode(false);
+        HtmlPage page = webClient.getPage(webUrl + "faces/facelets/decoratenotfound.xhtml");
+        assertEquals(500, page.getWebResponse().getStatusCode());
+        webClient.setThrowExceptionOnFailingStatusCode(true);
+    }
+
+    @Test
+    public void testIssue955IncludeNotFound() throws Exception {
+        webClient.setThrowExceptionOnFailingStatusCode(false);
+        HtmlPage page = webClient.getPage(webUrl + "faces/facelets/includenotfound.xhtml");
+        assertEquals(500, page.getWebResponse().getStatusCode());
+        webClient.setThrowExceptionOnFailingStatusCode(true);
+    }
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/systest/ForEachFaceletsITCase.java b/test/servlet30/systest/src/test/java/com/sun/faces/systest/ForEachFaceletsITCase.java
new file mode 100644
index 0000000..c9a47dd
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/systest/ForEachFaceletsITCase.java
@@ -0,0 +1,100 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest;
+
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSpan;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
+import com.sun.faces.htmlunit.HtmlUnitFacesITCase;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * <p>Test that invalid values don't cause valueChangeEvents to occur.</p>
+ */
+
+public class ForEachFaceletsITCase extends HtmlUnitFacesITCase {
+
+    // ------------------------------------------------------------ Constructors
+
+
+    /**
+     * Construct a new instance of this test case.
+     *
+     * @param name Name of the test case
+     */
+    public ForEachFaceletsITCase(String name) {
+        super(name);
+    }
+
+    // ------------------------------------------------------ Instance Variables
+
+    // ---------------------------------------------------- Overall Test Methods
+
+
+    /**
+     * Return the tests included in this test suite.
+     */
+    public static Test suite() {
+        return (new TestSuite(ForEachFaceletsITCase.class));
+    }
+
+    // ------------------------------------------------- Individual Test Methods
+    public void testForEachIssue1753() throws Exception {
+        HtmlPage page = getPage("/faces/forEach.xhtml");
+
+        HtmlSubmitInput submitButton1 = (HtmlSubmitInput) page.getElementById("form:end");
+        page = (HtmlPage)submitButton1.click();
+        assertTrue(-1 != page.asText().indexOf("ID0"));
+        page = (HtmlPage)submitButton1.click();
+        assertTrue(-1 != page.asText().indexOf("ID0ID1"));
+
+        HtmlSubmitInput submitButton2 = (HtmlSubmitInput) page.getElementById("form:beginning");
+        page = (HtmlPage)submitButton2.click();
+        assertTrue(-1 != page.asText().indexOf("ID2ID0ID1"));
+        page = (HtmlPage)submitButton2.click();
+        assertTrue(-1 != page.asText().indexOf("ID3ID2ID0ID1"));
+    }
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/systest/ForEachIT.java b/test/servlet30/systest/src/test/java/com/sun/faces/systest/ForEachIT.java
new file mode 100644
index 0000000..0804584
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/systest/ForEachIT.java
@@ -0,0 +1,72 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.systest;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class ForEachIT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testForEach() throws Exception {
+        webClient.setThrowExceptionOnFailingStatusCode(false);
+        HtmlPage page = webClient.getPage(webUrl + "faces/forEach02.jsp");
+        assertEquals(200, page.getWebResponse().getStatusCode());
+        webClient.setThrowExceptionOnFailingStatusCode(true);
+    }
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/systest/FourOFourIT.java b/test/servlet30/systest/src/test/java/com/sun/faces/systest/FourOFourIT.java
new file mode 100644
index 0000000..f3bafa1
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/systest/FourOFourIT.java
@@ -0,0 +1,72 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.systest;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class FourOFourIT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void test404() throws Exception {
+        webClient.setThrowExceptionOnFailingStatusCode(false);
+        HtmlPage page = webClient.getPage(webUrl + "faces/thispagedoesnexist.jsp");
+        assertEquals(404, page.getWebResponse().getStatusCode());
+        webClient.setThrowExceptionOnFailingStatusCode(true);
+    }
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/systest/HtmlTaglibIT.java b/test/servlet30/systest/src/test/java/com/sun/faces/systest/HtmlTaglibIT.java
new file mode 100644
index 0000000..a71a197
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/systest/HtmlTaglibIT.java
@@ -0,0 +1,71 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.systest;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import java.util.regex.Pattern;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class HtmlTaglibIT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testSimpleNonFacesResponse() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/standard/selectmany02.jsp");
+        assertTrue(Pattern.matches("(?s).*<table\\s*class=\"one\">\\s*<tbody>\\s*<tr>\\s*<td>\\s*<input\\s*name=\".*\"\\s*id=\".*\"\\s*value=\"1\"\\s*type=\"checkbox\"\\s*checked=\"checked\"/>\\s*<label\\s*for=\".*\"\\s*class=\"\">\\s*Open\\s*</label>\\s*</td>\\s*<td>\\s*<input\\s*name=\".*\"\\s*id=\".*\"\\s*value=\"2\"\\s*type=\"checkbox\"\\s*checked=\"checked\"/>\\s*<label\\s*for=\".*\"\\s*class=\"\">\\s*Submitted\\s*</label>\\s*</td>\\s*<td>\\s*<input\\s*name=\".*\"\\s*id=\".*\"\\s*va [...]
+    }
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/systest/Issue2194ITCase.java b/test/servlet30/systest/src/test/java/com/sun/faces/systest/Issue2194ITCase.java
new file mode 100644
index 0000000..8a53e0a
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/systest/Issue2194ITCase.java
@@ -0,0 +1,121 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import com.sun.faces.htmlunit.HtmlUnitFacesITCase;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlCheckBoxInput;
+import com.gargoylesoftware.htmlunit.html.HtmlForm;
+import com.gargoylesoftware.htmlunit.html.HtmlInput;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.faces.component.NamingContainer;
+
+public class Issue2194ITCase extends HtmlUnitFacesITCase {
+
+    /**
+     * Construct a new instance of this test case.
+     *
+     * @param name Name of the test case
+     */
+    public Issue2194ITCase(String name) {
+        super(name);
+    }
+
+
+    /**
+     * Set up instance variables required by this test case.
+     */
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+
+    /**
+     * Return the tests included in this test suite.
+     */
+    public static Test suite() {
+        return (new TestSuite(Issue2194ITCase.class));
+    }
+
+
+    /**
+     * Tear down instance variables required by this test case.
+     */
+    public void tearDown() {
+        super.tearDown();
+    }
+
+    public void testCoreListeners() throws Exception {
+        HtmlPage page = getPage("/faces/listeners.xhtml");
+        assertTrue(page.asText().contains("RENDER_RESPONSE 6"));
+        HtmlForm form = getFormById(page, "form");
+        HtmlSubmitInput submit = (HtmlSubmitInput)
+            form.getInputByName("button1");
+        page = (HtmlPage) submit.click();
+        assertTrue(page.asText().contains("button1 was pressed"));
+        submit = (HtmlSubmitInput)
+            form.getInputByName("button2");
+        page = (HtmlPage) submit.click();
+        assertTrue(page.asText().contains("button2 was pressed"));
+        HtmlInput input = (HtmlInput)
+            form.getInputByName("input1");
+        page = (HtmlPage) input.setValueAttribute("Foo");
+        submit = (HtmlSubmitInput)
+            form.getInputByName("submit");
+        page = (HtmlPage) submit.click();
+        assertTrue(page.asText().contains("input1 value was changed"));
+        input = (HtmlInput)
+            form.getInputByName("input2");
+        page = (HtmlPage) input.setValueAttribute("Bar");
+        submit = (HtmlSubmitInput)
+            form.getInputByName("submit");
+        page = (HtmlPage) submit.click();
+        assertTrue(page.asText().contains("input2 value was changed"));
+    }
+}
+        
+
+
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/systest/JSPIT.java b/test/servlet30/systest/src/test/java/com/sun/faces/systest/JSPIT.java
new file mode 100644
index 0000000..92b46bc
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/systest/JSPIT.java
@@ -0,0 +1,72 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.systest;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class JSPIT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testPositiveTagFile() throws Exception {
+        webClient.setThrowExceptionOnFailingStatusCode(false);
+        HtmlPage page = webClient.getPage(webUrl + "faces/positiveTagFile.jsp");
+        assertEquals(200, page.getWebResponse().getStatusCode());
+        webClient.setThrowExceptionOnFailingStatusCode(true);
+    }
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/systest/LinkTypeAttributeITCase.java b/test/servlet30/systest/src/test/java/com/sun/faces/systest/LinkTypeAttributeITCase.java
new file mode 100644
index 0000000..7a1f178
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/systest/LinkTypeAttributeITCase.java
@@ -0,0 +1,120 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import com.sun.faces.htmlunit.HtmlUnitFacesITCase;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlElement;
+
+
+/**
+ * Test case for issue 1098.
+ */
+public class LinkTypeAttributeITCase extends HtmlUnitFacesITCase {
+
+    // ------------------------------------------------------------ Constructors
+
+
+       /**
+        * Construct a new instance of this test case.
+        *
+        * @param name Name of the test case
+        */
+       public LinkTypeAttributeITCase(String name) {
+           super(name);
+       }
+
+    // ------------------------------------------------------ Instance Variables
+
+       // ---------------------------------------------------- Overall Test Methods
+
+
+       /**
+        * Set up instance variables required by this test case.
+        */
+       public void setUp() throws Exception {
+           super.setUp();
+       }
+
+
+       /**
+        * Return the tests included in this test suite.
+        */
+       public static Test suite() {
+           return (new TestSuite(LinkTypeAttributeITCase.class));
+       }
+
+
+       /**
+        * Tear down instance variables required by this test case.
+        */
+       public void tearDown() {
+           super.tearDown();
+       }
+
+
+    // ------------------------------------------------------------ Test Methods
+
+
+    public void testLinkAttributeNotDuplicated() throws Exception {
+
+        String type ="type=\"type\"";
+        HtmlPage page = getPage("/faces/standard/linkTypeAttribute.xhtml");
+
+        HtmlElement link = page.getElementById("form:clink");
+        String xml = link.asXml();
+        int idx = xml.indexOf(type);
+        assertTrue(idx != -1);
+        idx = xml.indexOf(type, idx + type.length());
+        assertTrue(idx == -1);
+
+        link = page.getElementById("form:link");
+        xml = link.asXml();
+        idx = xml.indexOf(type);
+        assertTrue(idx != -1);
+        idx = xml.indexOf(type, idx + type.length());
+        assertTrue(idx == -1);
+
+    }
+
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/systest/ListenerIT.java b/test/servlet30/systest/src/test/java/com/sun/faces/systest/ListenerIT.java
new file mode 100644
index 0000000..d7273b7
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/systest/ListenerIT.java
@@ -0,0 +1,72 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.systest;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class ListenerIT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testListener() throws Exception {
+        webClient.setThrowExceptionOnFailingStatusCode(false);
+        HtmlPage page = webClient.getPage(webUrl + "faces/listener.jsp");
+        assertEquals(200, page.getWebResponse().getStatusCode());
+        webClient.setThrowExceptionOnFailingStatusCode(true);
+    }
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/systest/ManagedBeanIT.java b/test/servlet30/systest/src/test/java/com/sun/faces/systest/ManagedBeanIT.java
new file mode 100644
index 0000000..9d68a72
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/systest/ManagedBeanIT.java
@@ -0,0 +1,117 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.systest;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import static com.sun.faces.test.junit.JsfServerExclude.WEBLOGIC_12_1_3;
+import static com.sun.faces.test.junit.JsfServerExclude.WEBLOGIC_12_1_4;
+import com.sun.faces.test.junit.JsfTest;
+import com.sun.faces.test.junit.JsfTestRunner;
+import static com.sun.faces.test.junit.JsfVersion.JSF_2_2_0;
+import java.util.regex.Pattern;
+import static junit.framework.TestCase.assertEquals;
+import static junit.framework.TestCase.assertTrue;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+ at RunWith(JsfTestRunner.class)
+public class ManagedBeanIT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    /*
+     * Managed Bean Create #1 (No Property Setters) 
+     */
+    @Test
+    public void testManagerBean1() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/managed01.jsp");
+        assertTrue(Pattern.matches("(?s).*/managed01.jsp PASSED.*", page.asXml()));
+    }
+
+    /*
+     * Managed Bean Create #2 (Primitive Property Setters)
+     */
+    @Test
+    public void testManagerBean2() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/managed02.jsp");
+        assertTrue(Pattern.matches("(?s).*/managed02.jsp PASSED.*", page.asXml()));
+    }
+
+    @JsfTest(value=JSF_2_2_0, excludes = {WEBLOGIC_12_1_3, WEBLOGIC_12_1_4})
+    @Test
+    public void testManagedBean3() throws Exception {
+        webClient.setThrowExceptionOnFailingStatusCode(false);
+        HtmlPage page = webClient.getPage(webUrl + "faces/managed03.jsp");
+        assertEquals(500, page.getWebResponse().getStatusCode());
+        webClient.setThrowExceptionOnFailingStatusCode(true);
+    }
+
+    @JsfTest(value=JSF_2_2_0, excludes = {WEBLOGIC_12_1_3, WEBLOGIC_12_1_4})
+    @Test
+    public void testManagedBean7() throws Exception {
+        webClient.setThrowExceptionOnFailingStatusCode(false);
+        HtmlPage page = webClient.getPage(webUrl + "faces/managed07.jsp");
+        assertEquals(500, page.getWebResponse().getStatusCode());
+        webClient.setThrowExceptionOnFailingStatusCode(true);
+    }
+
+    @Test
+    public void testEagerBean() throws Exception {
+        webClient.setThrowExceptionOnFailingStatusCode(false);
+        HtmlPage page = webClient.getPage(webUrl + "faces/eagerbean.jsp");
+        assertEquals(200, page.getWebResponse().getStatusCode());
+        webClient.setThrowExceptionOnFailingStatusCode(true);
+    }
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/systest/MethodRefIT.java b/test/servlet30/systest/src/test/java/com/sun/faces/systest/MethodRefIT.java
new file mode 100644
index 0000000..9319cbc
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/systest/MethodRefIT.java
@@ -0,0 +1,71 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.systest;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import java.util.regex.Pattern;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class MethodRefIT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testMethodRef() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/methodref02.jsp");
+        assertTrue(Pattern.matches("(?s).*/methodref02.jsp PASSED.*", page.asXml()));
+    }
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/systest/NavigationITCase.java b/test/servlet30/systest/src/test/java/com/sun/faces/systest/NavigationITCase.java
new file mode 100644
index 0000000..b161b20
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/systest/NavigationITCase.java
@@ -0,0 +1,263 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest;
+
+import com.gargoylesoftware.htmlunit.FailingHttpStatusCodeException;
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlBody;
+import com.gargoylesoftware.htmlunit.html.HtmlElement;
+import com.gargoylesoftware.htmlunit.html.HtmlForm;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import com.gargoylesoftware.htmlunit.html.HtmlInput;
+import com.sun.faces.htmlunit.HtmlUnitFacesITCase;
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+import javax.faces.component.NamingContainer;
+
+/**
+ * <p>Test Case for JSP Interoperability.</p>
+ */
+
+public class NavigationITCase extends HtmlUnitFacesITCase {
+
+
+    // ------------------------------------------------------------ Constructors
+
+
+    /**
+     * Construct a new instance of this test case.
+     *
+     * @param name Name of the test case
+     */
+    public NavigationITCase(String name) {
+        super(name);
+    }
+
+
+    // ------------------------------------------------------ Instance Variables
+
+
+    // ---------------------------------------------------- Overall Test Methods
+
+
+    /**
+     * Set up instance variables required by this test case.
+     */
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+
+
+    /**
+     * Return the tests included in this test suite.
+     */
+    public static Test suite() {
+        return (new TestSuite(NavigationITCase.class));
+    }
+
+
+    /**
+     * Tear down instance variables required by this test case.
+     */
+    public void tearDown() {
+        super.tearDown();
+    }
+
+
+    // ------------------------------------------------- Individual Test Methods
+
+
+    // Test dynamically adding and removing components
+    public void testRedirect() throws Exception {
+        client.setRedirectEnabled(false);
+        // the navigation-case for this url is set up to cause a redirect
+        HtmlPage page = getPage("/faces/redirect.jsp");
+        HtmlForm form = getFormById(page, "redirect");
+        assertNotNull("form exists", form);
+        HtmlSubmitInput submit = (HtmlSubmitInput)
+            form.getInputByName("redirect" +
+                                NamingContainer.SEPARATOR_CHAR +
+                                "submit");
+        boolean exceptionThrown = false;
+        try {
+            page = (HtmlPage) submit.click();
+        } catch (FailingHttpStatusCodeException fhsce) {
+            assertEquals("Didn't get expected redirect",
+                         fhsce.getStatusCode(), 302);
+            exceptionThrown = true;
+        }
+        assertTrue("Didn't get expected redirect", exceptionThrown);
+    }
+
+
+    public void testNavigateWithVerbatim() throws Exception {
+        HtmlForm form;
+        HtmlSubmitInput submit;
+        HtmlPage page, page1;
+
+        page = getPage("/faces/jsp/verbatim-test.jsp");
+        form = getFormById(page, "form1");
+        assertNotNull("form exists", form);
+        submit = (HtmlSubmitInput)
+            form.getInputByName("form1" + NamingContainer.SEPARATOR_CHAR +
+                                "submit");
+
+        // press the button
+	try {
+            page1 = (HtmlPage) submit.click();
+            assertTrue(-1 != page1.asText().indexOf("Thank you"));
+	} catch (Exception e) {
+	    e.printStackTrace();
+	    assertTrue(false);
+	}
+    }
+
+    public void testNavigateWithVerbatim_One() throws Exception {
+        HtmlForm form;
+        HtmlSubmitInput submit;
+        HtmlPage page, page1;
+                                                                                
+        page = getPage("/faces/jsp/verbatim-one-test.jsp");
+        form = getFormById(page, "form");
+        assertNotNull("form exists", form);
+        submit = (HtmlSubmitInput)
+            form.getInputByName("form" + NamingContainer.SEPARATOR_CHAR +
+                                "submit");
+                                                                                
+        // press the link, return to the same page, and check that
+        // output text (header) is still present...
+ 
+        try {
+            page1 = (HtmlPage) submit.click();
+            assertTrue(-1 != page1.asText().indexOf("this is the header"));
+        } catch (Exception e) {
+            e.printStackTrace();
+            assertTrue(false);
+        }
+    }
+
+    public void testNavigateWithVerbatim_Two() throws Exception {
+        HtmlForm form;
+        HtmlSubmitInput submit;
+        HtmlPage page, page1;
+                                                                               
+                                                                               
+        page = getPage("/faces/jsp/verbatim-two-test.jsp");
+        form = getFormById(page, "form");
+        assertNotNull("form exists", form);
+        submit = (HtmlSubmitInput)
+            form.getInputByName("form" + NamingContainer.SEPARATOR_CHAR +
+                                "submit");
+                                                                               
+                                                                               
+        // submit the form, return to the same page, and check that
+        // output text (header) is still present...
+        // and verbatim text is still present...
+                                                                               
+        try {
+            page1 = (HtmlPage) submit.click();
+            assertTrue(-1 != page1.asText().indexOf("verbatim one text here"));
+            assertTrue(-1 != page1.asText().indexOf("this is the header"));
+            assertTrue(-1 != page1.asText().indexOf("verbatim two text here"));
+        } catch (Exception e) {
+            e.printStackTrace();
+            assertTrue(false);
+        }
+    }
+    
+    public void testNavigateWithEnum() throws Exception {
+        HtmlForm form;
+        HtmlSubmitInput submit;
+        HtmlPage page, page1;
+                                                                               
+                                                                               
+        page = getPage("/faces/enum01.jsp");
+        form = getFormById(page, "form");
+        assertNotNull("form exists", form);
+        submit = (HtmlSubmitInput)
+            form.getInputByName("form" + NamingContainer.SEPARATOR_CHAR +
+                                "go");
+                                                                               
+        // submit the form, go to next page, check that the text exists
+                                                                               
+        try {
+            page1 = (HtmlPage) submit.click();
+            assertTrue(-1 != page1.asText().indexOf("/hello.jsp PASSED"));
+        } catch (Exception e) {
+            e.printStackTrace();
+            assertTrue(false);
+        }
+        
+        page = getPage("/faces/enum01.jsp");
+        form = getFormById(page, "form");
+        assertNotNull("form exists", form);
+        submit = (HtmlSubmitInput)
+            form.getInputByName("form" + NamingContainer.SEPARATOR_CHAR +
+                                "stay");
+                                                                               
+        // submit the form, stay on same page, check that the text does not exist
+                                                                               
+        try {
+            page1 = (HtmlPage) submit.click();
+            assertTrue(-1 == page1.asText().indexOf("/hello.jsp PASSED"));
+            assertTrue(-1 != page1.asText().indexOf("stay here"));
+        } catch (Exception e) {
+            e.printStackTrace();
+            assertTrue(false);
+        }
+        
+    }
+
+
+    public void testNullOutcomeNoMessage() throws Exception {
+        HtmlPage page = getPage("/faces/standard/selectmany05.xhtml");
+
+        HtmlInput input = getInputContainingGivenId(page, "command");
+        page = (HtmlPage) input.click();
+
+        // if there is no outcome, no message should be displayed to the user
+        assertTrue(!page.asText().contains("javax_faces_developmentstage_messages"));
+    }
+
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/systest/OutputTargetsITCase.java b/test/servlet30/systest/src/test/java/com/sun/faces/systest/OutputTargetsITCase.java
new file mode 100644
index 0000000..90f4cd4
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/systest/OutputTargetsITCase.java
@@ -0,0 +1,258 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import com.sun.faces.htmlunit.HtmlUnitFacesITCase;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlAnchor;
+import com.gargoylesoftware.htmlunit.html.HtmlInput;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Test h:link and h:button.
+ */
+public class OutputTargetsITCase extends HtmlUnitFacesITCase {
+
+    /**
+     * Construct a new instance of this test case.
+     *
+     * @param name Name of the test case
+     */
+    public OutputTargetsITCase(String name) {
+        super(name);
+    }
+
+
+    /**
+     * Set up instance variables required by this test case.
+     */
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+
+
+    /**
+     * Return the tests included in this test suite.
+     */
+    public static Test suite() {
+        return (new TestSuite(OutputTargetsITCase.class));
+    }
+
+
+    /**
+     * Tear down instance variables required by this test case.
+     */
+    public void tearDown() {
+        super.tearDown();
+    }
+
+
+    // ------------------------------------------------------------ Test Methods
+
+
+    public void testOutputTargetButton() throws Exception {
+        HtmlPage page = getPage("/faces/standard/outcometarget01.xhtml");
+        // get the page twice to avoid jsession ID encoding in the results
+        page = getPage("/faces/standard/outcometarget01.xhtml");
+        assertNotNull(page);
+
+        List<HtmlInput> buttonList = new ArrayList<HtmlInput>(7);
+        getAllElementsOfGivenClass(page, buttonList, HtmlInput.class);
+        assertTrue(buttonList.size() == 7);
+
+        HtmlInput button = buttonList.get(0);
+        String onclick = button.getOnClickAttribute();
+        assertEquals("button", button.getTypeAttribute());
+        assertEquals("button1", button.getIdAttribute());
+        assertEquals("window.location.href='/jsf-systest/faces/standard/outcometarget01.xhtml'; return false;",
+                     onclick);
+        page = button.click();
+        assertEquals("outcometarget01", page.getTitleText());
+
+        // ---------------------------------------------------------------------
+
+        button = buttonList.get(1);
+        onclick = button.getOnClickAttribute();
+        assertEquals("button", button.getTypeAttribute());
+        assertEquals("button2", button.getIdAttribute());
+        assertEquals("window.location.href='/jsf-systest/faces/standard/nav1.xhtml'; return false;", onclick);
+        page = button.click();
+        assertEquals("nav1", page.getTitleText());
+        page = getPage("/faces/standard/outcometarget01.xhtml");
+
+        // ---------------------------------------------------------------------
+
+        button = buttonList.get(2);
+        onclick = button.getOnClickAttribute();
+        assertEquals("button", button.getTypeAttribute());
+        assertEquals("button3", button.getIdAttribute());
+        assertEquals("window.location.href='/jsf-systest/faces/standard/outcometarget01.xhtml?id=page&id2=view#about'; return false;",
+                     onclick);
+        page = button.click();
+        assertEquals("outcometarget01", page.getTitleText());
+
+        // ---------------------------------------------------------------------
+
+        button = buttonList.get(3);
+        onclick = button.getOnClickAttribute();
+        assertEquals("button", button.getTypeAttribute());
+        assertEquals("button4", button.getIdAttribute());
+        assertEquals("alert('foo'); window.location.href='/jsf-systest/faces/standard/nav2.xhtml'; return false;", onclick);
+        page = button.click();
+        assertEquals("nav2", page.getTitleText());
+
+        // ---------------------------------------------------------------------
+
+        button = buttonList.get(4);
+        onclick = button.getOnClickAttribute();
+        assertEquals("button", button.getTypeAttribute());
+        assertEquals("button5", button.getIdAttribute());
+        assertEquals("window.location.href='/jsf-systest/faces/standard/outcometarget01.xhtml?id=page'; return false;", onclick);
+        page = button.click();
+        assertEquals("outcometarget01", page.getTitleText());
+
+        // ---------------------------------------------------------------------
+
+        button = buttonList.get(5);
+        onclick = button.getOnClickAttribute();
+        assertEquals("button", button.getTypeAttribute());
+        assertEquals("button6", button.getIdAttribute());
+        assertEquals("window.location.href='/jsf-systest/faces/standard/outcometarget01.xhtml?id=page&id2=view'; return false;", onclick);
+        page = button.click();
+        assertEquals("outcometarget01", page.getTitleText());
+
+        // ---------------------------------------------------------------------
+
+        button = buttonList.get(6);
+        onclick = button.getOnClickAttribute();
+        assertEquals("button", button.getTypeAttribute());
+        assertEquals("button7", button.getIdAttribute());
+        assertEquals("window.location.href='/jsf-systest/faces/standard/outcometarget01.xhtml?id=config&id2=view'; return false;", onclick);
+        page = button.click();
+        assertEquals("outcometarget01", page.getTitleText());
+
+    }
+
+
+    public void testOutputTargetLink() throws Exception {
+
+        HtmlPage page = getPage("/faces/standard/outcometarget01.xhtml");
+        // get the page twice to avoid jsession ID encoding in the results
+        page = getPage("/faces/standard/outcometarget01.xhtml");
+        assertNotNull(page);
+
+        List<HtmlAnchor> linkList = new ArrayList<HtmlAnchor>(7);
+        getAllElementsOfGivenClass(page, linkList, HtmlAnchor.class);
+        assertTrue(linkList.size() == 7);
+
+        HtmlAnchor link = linkList.get(0);
+        String onclick = link.getOnClickAttribute();
+        assertEquals("link1", link.getIdAttribute());
+        assertEquals("", onclick);
+        assertEquals("/jsf-systest/faces/standard/outcometarget01.xhtml", link.getHrefAttribute());
+        page = link.click();
+        assertEquals("outcometarget01", page.getTitleText());
+
+        // ---------------------------------------------------------------------
+
+        link = linkList.get(1);
+        onclick = link.getOnClickAttribute();
+        assertEquals("link2", link.getIdAttribute());
+        assertEquals("", onclick);
+        assertEquals("/jsf-systest/faces/standard/nav1.xhtml", link.getHrefAttribute());
+        page = link.click();
+        assertEquals("nav1", page.getTitleText());
+        page = getPage("/faces/standard/outcometarget01.xhtml");
+
+        // ---------------------------------------------------------------------
+
+        link = linkList.get(2);
+        onclick = link.getOnClickAttribute();
+        assertEquals("link3", link.getIdAttribute());
+        assertEquals("", onclick);
+        assertEquals("/jsf-systest/faces/standard/outcometarget01.xhtml?id=page&id2=view#about",
+                     link.getHrefAttribute());
+        page = link.click();
+        assertEquals("outcometarget01", page.getTitleText());
+
+        // ---------------------------------------------------------------------
+
+        link = linkList.get(3);
+        onclick = link.getOnClickAttribute();
+        assertEquals("link4", link.getIdAttribute());
+        assertEquals("alert('foo');", onclick);
+        assertEquals("/jsf-systest/faces/standard/nav2.xhtml", link.getHrefAttribute());
+        page = link.click();
+        assertEquals("nav2", page.getTitleText());
+
+        // ---------------------------------------------------------------------
+
+        link = linkList.get(4);
+        onclick = link.getOnClickAttribute();
+        assertEquals("link5", link.getIdAttribute());
+        assertEquals("/jsf-systest/faces/standard/outcometarget01.xhtml?id=page", link.getHrefAttribute());
+        page = link.click();
+        assertEquals("outcometarget01", page.getTitleText());
+
+        // ---------------------------------------------------------------------
+
+        link = linkList.get(5);
+        onclick = link.getOnClickAttribute();
+        assertEquals("link6", link.getIdAttribute());
+        assertEquals("/jsf-systest/faces/standard/outcometarget01.xhtml?id=page&id2=view", link.getHrefAttribute());
+        page = link.click();
+        assertEquals("outcometarget01", page.getTitleText());
+
+        // ---------------------------------------------------------------------
+
+        link = linkList.get(6);
+        onclick = link.getOnClickAttribute();
+        assertEquals("link7", link.getIdAttribute());
+        assertEquals("/jsf-systest/faces/standard/outcometarget01.xhtml?id=config&id2=view", link.getHrefAttribute());
+        page = link.click();
+        assertEquals("outcometarget01", page.getTitleText());
+
+    }
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/systest/PGridColumnClassesITCase.java b/test/servlet30/systest/src/test/java/com/sun/faces/systest/PGridColumnClassesITCase.java
new file mode 100644
index 0000000..b9ca4fc
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/systest/PGridColumnClassesITCase.java
@@ -0,0 +1,69 @@
+
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest;
+
+import com.sun.faces.systest.jsp.interweaving.*;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.sun.faces.htmlunit.HtmlUnitFacesITCase;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+
+
+public class PGridColumnClassesITCase extends HtmlUnitFacesITCase {
+
+
+    public PGridColumnClassesITCase(String name) {
+        super(name);
+    }
+
+    public static Test suite() {
+        return (new TestSuite(PGridColumnClassesITCase.class));
+    }
+
+    public void test01() throws Exception {
+        HtmlPage page = getPage("/faces/standard/pgridcolumnclasses.jsp");
+        String xml = page.asXml();
+        String xmlWithoutWhitespace = xml.replaceAll("\\s{1,100}", "");
+        assertTrue(xmlWithoutWhitespace.contains("<html><head><title>pgridcolumnclasses.jsp</title><styletype=\"text/css\">.b1{background-color:red;}.b2{background-color:green;}.b3{background-color:blue;}.b4{background-color:burlywood;}.b5{background-color:darkolivegreen;}.b6{background-color:darkviolet;}.b7{background-color:skyblue;}</style></head><body><table><tbody><tr><tdclass=\"b1\">c1</td><tdclass=\"b2\">c2</td><td>c3</td><td>c4</td><td>c5</td><td>c6</td></tr><tr><tdclass=\"b1\">c1 [...]
+    }
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/systest/PhaseIT.java b/test/servlet30/systest/src/test/java/com/sun/faces/systest/PhaseIT.java
new file mode 100644
index 0000000..2f16ed4
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/systest/PhaseIT.java
@@ -0,0 +1,71 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.systest;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import java.util.regex.Pattern;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class PhaseIT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testPhaseListener01() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "phaseListener01.jsp");
+        assertTrue(Pattern.matches("(?s).*/phaseListener01.jsp PASSED.*", page.asXml()));
+    }
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/systest/PrefixSecurityIT.java b/test/servlet30/systest/src/test/java/com/sun/faces/systest/PrefixSecurityIT.java
new file mode 100644
index 0000000..71bc23e
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/systest/PrefixSecurityIT.java
@@ -0,0 +1,131 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.systest;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class PrefixSecurityIT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    /*
+     * Ensure a prefix mapped FacesServlet doesn't allow access to WEB-INF.
+     */
+    @Test
+    public void testPrefixSecurity1() throws Exception {
+        webClient.setThrowExceptionOnFailingStatusCode(false);
+        HtmlPage page = webClient.getPage(webUrl + "faces/WEB-INF/test.jsp");
+        assertEquals(404, page.getWebResponse().getStatusCode());
+        webClient.setThrowExceptionOnFailingStatusCode(true);
+    }
+
+    @Test
+    public void testPrefixSecurity2() throws Exception {
+        webClient.setThrowExceptionOnFailingStatusCode(false);
+        HtmlPage page = webClient.getPage(webUrl + "faces/WEB-INF");
+        assertEquals(404, page.getWebResponse().getStatusCode());
+        webClient.setThrowExceptionOnFailingStatusCode(true);
+    }
+
+    @Test
+    public void testPrefixSecurity3() throws Exception {
+        webClient.setThrowExceptionOnFailingStatusCode(false);
+        HtmlPage page = webClient.getPage(webUrl + "faces/WEB-INF/");
+        assertEquals(404, page.getWebResponse().getStatusCode());
+        webClient.setThrowExceptionOnFailingStatusCode(true);
+    }
+
+    @Test
+    public void testPrefixSecurity4() throws Exception {
+        webClient.setThrowExceptionOnFailingStatusCode(false);
+        HtmlPage page = webClient.getPage(webUrl + "faces/META-INF/MANIFEST.MF");
+        assertEquals(404, page.getWebResponse().getStatusCode());
+        webClient.setThrowExceptionOnFailingStatusCode(true);
+    }
+
+    @Test
+    public void testPrefixSecurity5() throws Exception {
+        webClient.setThrowExceptionOnFailingStatusCode(false);
+        HtmlPage page = webClient.getPage(webUrl + "faces/META-INF");
+        assertEquals(404, page.getWebResponse().getStatusCode());
+        webClient.setThrowExceptionOnFailingStatusCode(true);
+    }
+
+    @Test
+    public void testPrefixSecurity6() throws Exception {
+        webClient.setThrowExceptionOnFailingStatusCode(false);
+        HtmlPage page = webClient.getPage(webUrl + "faces/META-INF/");
+        assertEquals(404, page.getWebResponse().getStatusCode());
+        webClient.setThrowExceptionOnFailingStatusCode(true);
+    }
+
+    @Test
+    public void testPrefixSecurity7() throws Exception {
+        webClient.setThrowExceptionOnFailingStatusCode(false);
+        HtmlPage page = webClient.getPage(webUrl + "faces/web-Inf/test.jsp");
+        assertEquals(404, page.getWebResponse().getStatusCode());
+        webClient.setThrowExceptionOnFailingStatusCode(true);
+    }
+
+    @Test
+    public void testPrefixSecurity8() throws Exception {
+        webClient.setThrowExceptionOnFailingStatusCode(false);
+        HtmlPage page = webClient.getPage(webUrl + "faces/mEtA-InF/MANIFEST.MF");
+        assertEquals(404, page.getWebResponse().getStatusCode());
+        webClient.setThrowExceptionOnFailingStatusCode(true);
+    }
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/systest/RenderIT.java b/test/servlet30/systest/src/test/java/com/sun/faces/systest/RenderIT.java
new file mode 100644
index 0000000..6d9698c
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/systest/RenderIT.java
@@ -0,0 +1,71 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.systest;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import java.util.regex.Pattern;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class RenderIT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testOutputLinkSpaces() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/render/outputLinkSpaces.jsp");
+        assertTrue(Pattern.matches("(?s).*text%20before%20query%20string.*?text%20after=query%20string.*", page.asXml()));
+    }
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/systest/RenderKitIT.java b/test/servlet30/systest/src/test/java/com/sun/faces/systest/RenderKitIT.java
new file mode 100644
index 0000000..2658d84
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/systest/RenderKitIT.java
@@ -0,0 +1,77 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.systest;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import java.util.regex.Pattern;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class RenderKitIT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testRenderKit01() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "renderkit01.jsp");
+        assertTrue(Pattern.matches("(?s).*/renderkit01.jsp PASSED.*", page.asXml()));
+    }
+
+    @Test
+    public void testRenderKit02() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "renderkit02.jsp");
+        assertTrue(Pattern.matches("(?s).*/renderkit02.jsp PASSED.*", page.asXml()));
+    }
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/systest/RenderKitsITCase.java b/test/servlet30/systest/src/test/java/com/sun/faces/systest/RenderKitsITCase.java
new file mode 100644
index 0000000..3075bc5
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/systest/RenderKitsITCase.java
@@ -0,0 +1,192 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest;
+
+import com.gargoylesoftware.htmlunit.ElementNotFoundException;
+import com.gargoylesoftware.htmlunit.html.HtmlForm;
+import com.gargoylesoftware.htmlunit.html.HtmlHiddenInput;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import com.sun.faces.htmlunit.HtmlUnitFacesITCase;
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+import javax.faces.component.NamingContainer;
+
+/**
+ * <p>Test Case for Multiple RenderKits.</p>
+ */
+
+public class RenderKitsITCase extends HtmlUnitFacesITCase {
+
+
+    // ------------------------------------------------------------ Constructors
+
+
+    /**
+     * Construct a new instance of this test case.
+     *
+     * @param name Name of the test case
+     */
+    public RenderKitsITCase(String name) {
+        super(name);
+    }
+
+
+    // ------------------------------------------------------ Instance Variables
+
+
+    // ---------------------------------------------------- Overall Test Methods
+
+
+    /**
+     * Set up instance variables required by this test case.
+     */
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+
+
+    /**
+     * Return the tests included in this test suite.
+     */
+    public static Test suite() {
+        return (new TestSuite(RenderKitsITCase.class));
+    }
+
+
+    /**
+     * Tear down instance variables required by this test case.
+     */
+    public void tearDown() {
+        super.tearDown();
+    }
+
+
+    // ------------------------------------------------- Individual Test Methods
+
+    public void testRenderKits() throws Exception {
+//        HtmlPage page = getPage("/faces/renderkit04.jsp");
+//        assertTrue(-1 != page.asText().indexOf("HTML_BASIC"));
+//            assertTrue(-1 != page.asText().indexOf("com.sun.faces.renderkit.html_basic.HtmlResponseWriter"));
+//
+//        HtmlForm form = getFormById(page, "form");
+//        assertNotNull("form exists", form);
+//        HtmlSubmitInput submit = (HtmlSubmitInput)
+//            form.getInputByName("form" +
+//                                NamingContainer.SEPARATOR_CHAR +
+//                                "submit");
+//        try {
+//            page = (HtmlPage) submit.click();
+//            assertTrue(-1 != page.asText().indexOf("CUSTOM"));
+//            assertTrue(-1 != page.asText().indexOf("com.sun.faces.systest.render.CustomResponseWriter"));
+//	} catch (Exception e) {
+//	    e.printStackTrace();
+//	    assertTrue(false);
+//        }
+//
+//        form = getFormById(page, "form");
+//        assertNotNull("form exists", form);
+//        submit = (HtmlSubmitInput)
+//            form.getInputByName("form" +
+//                                NamingContainer.SEPARATOR_CHAR +
+//                                "submit");
+//        try {
+//            page = (HtmlPage) submit.click();
+//            assertTrue(-1 != page.asText().indexOf("HTML_BASIC"));
+//            assertTrue(-1 != page.asText().indexOf("com.sun.faces.renderkit.html_basic.HtmlResponseWriter"));
+//	} catch (Exception e) {
+//	    e.printStackTrace();
+//	    assertTrue(false);
+//        }
+    }
+
+    // Assert with no renderKitId specfied on the view, and no defaultRenderKitId, 
+    // HTML_BASIC is set.  Also assert that the hidden field was not written; 
+    public void testNoRenderKitId() throws Exception {
+//        HtmlPage page = getPage("/faces/renderkit06.jsp");
+//        HtmlForm form = getFormById(page, "form");
+//        assertNotNull("form exists", form);
+//        HtmlHiddenInput hidden = null;
+//        boolean exceptionThrown = false;
+//        try {
+//            hidden = (HtmlHiddenInput)form.getInputByName("javax.faces.RenderKitId");
+//        } catch (ElementNotFoundException e) {
+//            exceptionThrown = true;
+//        }
+//        assertTrue(exceptionThrown);
+//        assertTrue(-1 != page.asText().indexOf("HTML_BASIC"));
+//        assertTrue(-1 != page.asText().indexOf("com.sun.faces.renderkit.html_basic.HtmlResponseWriter"));
+    }
+
+    // Test when default-render-kit-id is set for application;
+    public void testDefaultRenderKitId() throws Exception {
+//        // sets default-render-kit-id in application
+//        HtmlPage page = getPageSticky("/faces/renderkit-default.jsp");
+//
+//        // Load a page with renderKitId="CUSTOM"; 
+//        // Assert hidden field is not written because renderKitId == defaultRenderKitId;
+//        page = getPageSticky("/faces/renderkit06.jsp");
+//        HtmlForm form = getFormById(page, "form");
+//        assertNotNull("form exists", form);
+//        HtmlHiddenInput hidden = null;
+//        boolean exceptionThrown = false;
+//        try {
+//            hidden = (HtmlHiddenInput)form.getInputByName("javax.faces.RenderKitId");
+//        } catch (ElementNotFoundException e) {
+//            exceptionThrown = true;
+//        }
+//        assertTrue(-1 != page.asText().indexOf("CUSTOM"));
+//        assertTrue(-1 != page.asText().indexOf("com.sun.faces.systest.render.CustomResponseWriter"));
+//
+//        // Load a page with renderKitId="HTML_BASIC";
+//        // Assert hidden field is written because renderKitId != defaultRenderKitId;
+//        page = getPageSticky("/faces/renderkit04.jsp");
+//        form = getFormById(page, "form");
+//        assertNotNull("form exists", form);
+//        hidden = (HtmlHiddenInput)form.getInputByName("javax.faces.RenderKitId");
+//        assertNotNull("hidden exists", hidden);
+//        assertTrue(-1 != page.asText().indexOf("HTML_BASIC"));
+//        assertTrue(-1 != page.asText().indexOf("com.sun.faces.renderkit.html_basic.HtmlResponseWriter"));
+//        page = getPageSticky("/faces/renderkit-default-clear.jsp");
+    }
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/systest/ResourceRelocationITCase.java b/test/servlet30/systest/src/test/java/com/sun/faces/systest/ResourceRelocationITCase.java
new file mode 100644
index 0000000..3ebe370
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/systest/ResourceRelocationITCase.java
@@ -0,0 +1,203 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest;
+
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Iterator;
+
+import com.sun.faces.htmlunit.HtmlUnitFacesITCase;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlElement;
+import com.gargoylesoftware.htmlunit.html.HtmlHead;
+import com.gargoylesoftware.htmlunit.html.HtmlTitle;
+import com.gargoylesoftware.htmlunit.html.HtmlScript;
+import com.gargoylesoftware.htmlunit.html.HtmlLink;
+import com.gargoylesoftware.htmlunit.html.HtmlBody;
+import com.gargoylesoftware.htmlunit.html.HtmlForm;
+import com.gargoylesoftware.htmlunit.html.HtmlInput;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+/**
+ * Validate resource re-location of scripts and stylesheets
+ */
+public class ResourceRelocationITCase extends HtmlUnitFacesITCase {
+
+
+    public ResourceRelocationITCase() {
+        this("ResourceRelocationTestCase");
+    }
+
+
+    public ResourceRelocationITCase(String name) {
+        super(name);
+    }
+
+    public static Test suite() {
+        return (new TestSuite(ResourceRelocationITCase.class));
+    }
+
+
+    // ------------------------------------------------------------ Test Methods
+
+
+    public void testResourceRelocation() throws Exception {
+
+        resourceRelocationTest("/faces/resourcerelocation.xhtml",true);
+        resourceRelocationTest("/faces/resourcerelocation2.xhtml",false);
+        resourceRelocationTest("/faces/resourcerelocation3.xhtml",false);
+        resourceRelocationTest("/faces/resourcerelocation4.xhtml",true);
+
+    }
+
+    // --------------------------------------------------------- Private Methods
+
+
+    private void resourceRelocationTest(String urlfrag, boolean scriptfirst) throws Exception {
+
+        int scriptPos;
+        int sheetPos;
+
+        if (scriptfirst) {
+            scriptPos = 1;
+            sheetPos = 2;
+        } else {
+            sheetPos = 1;
+            scriptPos = 2;
+        }
+
+        // for this request, the script and stylesheet will be in the head
+        HtmlPage page = getPage(urlfrag+"?location=head");
+        List<HtmlHead> headList = new ArrayList<HtmlHead>(1);
+        getAllElementsOfGivenClass(page, headList, HtmlHead.class);
+        assertTrue(headList.size() == 1);
+        HtmlHead head = headList.get(0);
+        List<HtmlElement> headChildren = getChildren(head);
+        assertTrue(headChildren.size() == 3);
+        assertTrue(headChildren.get(0) instanceof HtmlTitle);
+        assertTrue(headChildren.get(scriptPos) instanceof HtmlScript);
+        assertTrue(headChildren.get(sheetPos) instanceof HtmlLink);
+        List<HtmlBody> bodyList = new ArrayList<HtmlBody>(1);
+        getAllElementsOfGivenClass(page, bodyList, HtmlBody.class);
+        assertTrue(bodyList.size() == 1);
+        HtmlBody body = bodyList.get(0);
+        List<HtmlElement> bodyChildren = getChildren(body);
+        assertTrue(bodyChildren.size() == 1);
+        assertTrue(bodyChildren.get(0) instanceof HtmlForm);
+        List<HtmlForm> formList = new ArrayList<HtmlForm>(1);
+        getAllElementsOfGivenClass(page, formList, HtmlForm.class);
+        assertTrue(formList.size() == 1);
+        HtmlForm form = formList.get(0);
+        List<HtmlElement> formChildren = getChildren(form);
+        assertTrue(formChildren.size() == 2);
+        assertTrue(formChildren.get(0) instanceof HtmlInput);
+        assertTrue(formChildren.get(1) instanceof HtmlInput);
+
+        // for this request, the stylesheet will be in the head, and the script
+        // will be the last child of body
+        page = getPage(urlfrag+"?location=body");
+        headList.clear();
+        getAllElementsOfGivenClass(page, headList, HtmlHead.class);
+        assertTrue(headList.size() == 1);
+        head = headList.get(0);
+        headChildren = getChildren(head);
+        assertTrue(headChildren.size() == 2);
+        assertTrue(headChildren.get(0) instanceof HtmlTitle);
+        assertTrue(headChildren.get(1) instanceof HtmlLink);
+        bodyList.clear();
+        getAllElementsOfGivenClass(page, bodyList, HtmlBody.class);
+        assertTrue(bodyList.size() == 1);
+        body = bodyList.get(0);
+        bodyChildren = getChildren(body);
+        assertTrue(bodyChildren.size() == 2);
+        assertTrue(bodyChildren.get(0) instanceof HtmlForm);
+        assertTrue(bodyChildren.get(1) instanceof HtmlScript);
+        formList.clear();
+        getAllElementsOfGivenClass(page, formList, HtmlForm.class);
+        assertTrue(formList.size() == 1);
+        form = formList.get(0);
+        formChildren = getChildren(form);
+        assertTrue(formChildren.size() == 2);
+        assertTrue(formChildren.get(0) instanceof HtmlInput);
+        assertTrue(formChildren.get(1) instanceof HtmlInput);
+
+        // for this request, the stylesheet will be in the head, and the
+        // script will be the last child of the form
+        page = getPage(urlfrag+"?location=form");
+        headList.clear();
+        getAllElementsOfGivenClass(page, headList, HtmlHead.class);
+        assertTrue(headList.size() == 1);
+        head = headList.get(0);
+        headChildren = getChildren(head);
+        assertTrue(headChildren.size() == 2);
+        assertTrue(headChildren.get(0) instanceof HtmlTitle);
+        assertTrue(headChildren.get(1) instanceof HtmlLink);
+        bodyList.clear();
+        getAllElementsOfGivenClass(page, bodyList, HtmlBody.class);
+        assertTrue(bodyList.size() == 1);
+        body = bodyList.get(0);
+        bodyChildren = getChildren(body);
+        assertTrue(bodyChildren.size() == 1);
+        assertTrue(bodyChildren.get(0) instanceof HtmlForm);
+        formList.clear();
+        getAllElementsOfGivenClass(page, formList, HtmlForm.class);
+        assertTrue(formList.size() == 1);
+        form = formList.get(0);
+        formChildren = getChildren(form);
+        assertTrue(formChildren.size() == 3);
+        assertTrue(formChildren.get(0) instanceof HtmlInput);
+        assertTrue(formChildren.get(1) instanceof HtmlInput);
+        assertTrue(formChildren.get(2) instanceof HtmlScript);
+
+    }
+
+    private List<HtmlElement> getChildren(HtmlElement parent) {
+        List<HtmlElement> list = new ArrayList<HtmlElement>();
+        for (Iterator i = parent.getChildElements().iterator(); i.hasNext();) {
+            Object o = i.next();
+            if (o instanceof HtmlElement) {
+                list.add((HtmlElement) o);
+            }
+        }
+        return list;
+    }
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/systest/SelectManyCollectionITCase.java b/test/servlet30/systest/src/test/java/com/sun/faces/systest/SelectManyCollectionITCase.java
new file mode 100644
index 0000000..181c757
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/systest/SelectManyCollectionITCase.java
@@ -0,0 +1,274 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest;
+
+import java.util.List;
+import java.util.ArrayList;
+
+import com.sun.faces.htmlunit.HtmlUnitFacesITCase;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSelect;
+import com.gargoylesoftware.htmlunit.html.HtmlOption;
+import com.gargoylesoftware.htmlunit.html.HtmlInput;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+
+public class SelectManyCollectionITCase extends HtmlUnitFacesITCase {
+
+
+    /**
+     * Construct a new instance of this test case.
+     *
+     * @param name Name of the test case
+     */
+    public SelectManyCollectionITCase(String name) {
+        super(name);
+    }
+
+
+    /**
+     * Set up instance variables required by this test case.
+     */
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+
+
+    /**
+     * Return the tests included in this test suite.
+     */
+    public static Test suite() {
+        return (new TestSuite(SelectManyCollectionITCase.class));
+    }
+
+
+    /**
+     * Tear down instance variables required by this test case.
+     */
+    public void tearDown() {
+        super.tearDown();
+    }
+
+
+    // ------------------------------------------------------------ Test Methods
+
+
+    public void testSelectManyCollections() throws Exception {
+
+        HtmlPage page = getPage("/faces/standard/selectmany05.xhtml");
+        String[] selectIds = {
+              "array",
+              "list",
+              "set",
+              "sortedset",
+              "collection",
+              "ilist",
+              "ilist2",
+              "iset",
+              "isortedset",
+              "icollection",
+              "hintString",
+              "hintClass",
+              "object",
+              "intList1",
+              "integerList1",
+              "escape01",
+              "escape02",
+              "emptyItems",
+        };
+        int[] totalNumberOfSelections = {
+              4,
+              4,
+              4,
+              4,
+              4,
+              4,
+              4,
+              4,
+              4,
+              4,
+              4,
+              4,
+              4,
+              4,
+              4,
+              4,
+              4,
+              1,
+        };
+        String[][] initialSelections = {
+              new String[0],
+              new String[0],
+              new String[0],
+              new String[0],
+              new String[0],
+              new String[] { "Bilbo", "Pippin", "Merry" },
+              new String[] { "Bilbo", "Pippin", "Merry" },
+              new String[] { "Frodo" },
+              new String[] { "Pippin", "Frodo" },
+              new String[] { "Bilbo", "Merry" },
+              new String[0],
+              new String[0],
+              new String[0],
+              new String[0],
+              new String[0],
+              new String[] { "Frodo - <Ring Bearer>" },
+              new String[] { "Frodo -" },
+              new String[0],
+        };
+
+        String[][] postBackSelections = {
+              new String[] { "Bilbo" },
+              new String[] { "Bilbo" },
+              new String[] { "Bilbo" },
+              new String[] { "Bilbo" },
+              new String[] { "Bilbo" },
+              new String[] { "Bilbo" },
+              new String[] { "Bilbo" },
+              new String[] { "Bilbo" },
+              new String[] { "Bilbo" },
+              new String[] { "Bilbo" },
+              new String[] { "Bilbo" },
+              new String[] { "Bilbo" },
+              new String[] { "Bilbo" },
+              new String[] { "2" },
+              new String[] { "3" },
+              new String[] { "Bilbo - <Ring Finder>" },
+              new String[] {  },
+              new String[] {  },
+        };
+
+        // =====================================================================
+        //  Validate initial page state
+        //
+        List<HtmlSelect> selects = new ArrayList<HtmlSelect>(18);
+        getAllElementsOfGivenClass(page, selects, HtmlSelect.class);
+        assertTrue(selects.size() == 18);
+        for (int i = 0; i < selectIds.length; i++) {
+            String id = selectIds[i];
+            System.out.println("Validating HtmlSelect with ID: " + id);
+            String[] initialSelection = initialSelections[i];
+            String[] newSelection = postBackSelections[i];
+            HtmlSelect select = getHtmlSelectForId(selects, id);
+            assertNotNull(select);
+            validateState(select, totalNumberOfSelections[i], initialSelection);
+            updateSelections(select, totalNumberOfSelections[i], newSelection);
+        }
+
+        HtmlInput input = getInputContainingGivenId(page, "command");
+        page = (HtmlPage) input.click();
+
+        // ensure no messages were queued by the post-back
+        assertTrue(!page.asText().contains("Error"));
+
+        selects.clear();
+        getAllElementsOfGivenClass(page, selects, HtmlSelect.class);
+        assertTrue(selects.size() == 18);
+        for (int i = 0; i < selectIds.length; i++) {
+            String id = selectIds[i];
+            if ("escape02".equals(id)) {
+                continue;
+            }
+            String[] newSelection = postBackSelections[i];
+            HtmlSelect select = getHtmlSelectForId(selects, id);
+            assertNotNull(select);
+            validateState(select, totalNumberOfSelections[i], newSelection);
+        }
+        
+    }
+
+
+    // --------------------------------------------------------- Private Methods
+
+    private void updateSelections(HtmlSelect select,
+                                  int totalNumberOfOptions,
+                                  String[] selectedOptions) {
+
+        assertNotNull(select);
+        List<HtmlOption> options = select.getOptions();
+        assertTrue(options.size() == totalNumberOfOptions);
+        for (String s : selectedOptions) {
+            for (HtmlOption option : options) {
+                option.setSelected(s.equals(option.asText()));
+            }
+        }
+    }
+
+
+    private void validateState(HtmlSelect select,
+                               int totalNumberOfOptions,
+                               String[] selectedOptions) {
+
+        assertNotNull(select);
+        List<HtmlOption> options = select.getOptions();
+        assertTrue(options.size() == totalNumberOfOptions);
+        if (selectedOptions == null || selectedOptions.length == 0) {
+            for (HtmlOption option : options) {
+                System.out.println(option.asText());
+                assertTrue(!option.isSelected());
+            }
+        } else {
+            for (String text : selectedOptions) {
+                for (HtmlOption option : options) {
+                    if (text.equals(option.asText())) {
+                        assertTrue(option.isSelected());
+                    } 
+                }
+            }
+        }
+
+    }
+
+
+    private HtmlSelect getHtmlSelectForId(List<HtmlSelect> selects, String id) {
+
+        for (HtmlSelect select : selects) {
+            if (select.getId().contains(id)) {
+                return select;
+            }
+        }
+        
+        return null;
+
+    }
+
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/systest/SelectOneHideNoSelectionITCase.java b/test/servlet30/systest/src/test/java/com/sun/faces/systest/SelectOneHideNoSelectionITCase.java
new file mode 100644
index 0000000..ddca5fe
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/systest/SelectOneHideNoSelectionITCase.java
@@ -0,0 +1,167 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSelect;
+import com.sun.faces.htmlunit.HtmlUnitFacesITCase;
+
+
+public class SelectOneHideNoSelectionITCase extends HtmlUnitFacesITCase {
+
+
+    private HtmlPage page;
+
+	/**
+     * Construct a new instance of this test case.
+     *
+     * @param name Name of the test case
+     */
+    public SelectOneHideNoSelectionITCase(String name) {
+        super(name);
+    }
+
+
+    /**
+     * Set up instance variables required by this test case.
+     */
+    public void setUp() throws Exception {
+        super.setUp();
+        this.page = getPage(getPath());
+    }
+
+
+	protected String getPath() {
+		return "/faces/standard/selectOneLiteralHideNoSelectionOption.xhtml";
+	}
+
+
+    /**
+     * Return the tests included in this test suite.
+     */
+    public static Test suite() {
+        return (new TestSuite(SelectOneHideNoSelectionITCase.class));
+    }
+
+
+    /**
+     * Tear down instance variables required by this test case.
+     */
+    public void tearDown() {
+        super.tearDown();
+    }
+
+
+    // ------------------------------------------------------------ Test Methods
+
+
+    public void testSelectItemsWithSelectedValueDoesntShowNoSelectionOption() throws Exception {
+        HtmlSelect select = (HtmlSelect) this.page.getElementById("f:selectItemsSelectedValue");
+        assertEquals(4, select.getOptionSize());
+    }
+    
+    public void testSelectItemsWithNoSelectedValueShowsNoSelectionOption() throws Exception {
+    	HtmlSelect select = (HtmlSelect) this.page.getElementById("f:selectItemsNoSelectedValue");
+    	assertEquals(5, select.getOptionSize());
+    }
+    
+    public void testSelectItemsWithNoSelectionSelectedValueShowsNoSelectionOption() throws Exception {
+    	HtmlSelect select = (HtmlSelect) this.page.getElementById("f:selectItemsNoSelectionSelectedValue");
+    	assertEquals(5, select.getOptionSize());
+    }
+    
+    public void testSelectItemWithSelectedValueDoesntShowNoSelectionOption() throws Exception {
+    	HtmlSelect select = (HtmlSelect) this.page.getElementById("f:selectItemSelectedValue");
+    	assertEquals(4, select.getOptionSize());
+    }
+    
+    //same test as testSelectItemWithSelectedValueDoesntShowNoSelectionOption, but now the
+    //no selection option is put as last option in the selectOneMenu
+    public void testSelectItemAsLastWithSelectedValueDoesntShowNoSelectionOption() throws Exception {
+    	HtmlSelect select = (HtmlSelect) this.page.getElementById("f:selectItemSelectedValueLast");
+    	assertEquals(4, select.getOptionSize());
+    }
+    
+    public void testSelectItemWithNoSelectedValueShowsNoSelectionOption() throws Exception {
+    	HtmlSelect select = (HtmlSelect) this.page.getElementById("f:selectItemNoSelectedValue");
+    	assertEquals(5, select.getOptionSize());
+    }
+    
+    public void testSelectItemWithNoSelectionSelectedValueShowsNoSelectionOption() throws Exception {
+    	HtmlSelect select = (HtmlSelect) this.page.getElementById("f:selectItemNoSelectionSelectedValue");
+    	assertEquals(5, select.getOptionSize());
+    }
+    
+    
+    public void testSelectItemsWithSelectedValueNoHidingShowsNoSelectionOption() throws Exception {
+    	HtmlSelect select = (HtmlSelect) this.page.getElementById("f:selectItemsSelectedValueNoHiding");
+    	assertEquals(5, select.getOptionSize());
+    }
+    
+    public void testSelectItemsWithNoSelectedValueNoHidingShowsNoSelectionOption() throws Exception {
+    	HtmlSelect select = (HtmlSelect) this.page.getElementById("f:selectItemsNoSelectedValueNoHiding");
+    	assertEquals(5, select.getOptionSize());
+    }
+    
+    public void testSelectItemsWithNoSelectionSelectedValueNoHidingShowsNoSelectionOption() throws Exception {
+    	HtmlSelect select = (HtmlSelect) this.page.getElementById("f:selectItemsNoSelectionSelectedValueNoHiding");
+    	assertEquals(5, select.getOptionSize());
+    }
+    
+    public void testSelectItemWithSelectedValueNoHidingShowsNoSelectionOption() throws Exception {
+    	HtmlSelect select = (HtmlSelect) this.page.getElementById("f:selectItemSelectedValueNoHiding");
+    	assertEquals(5, select.getOptionSize());
+    }
+    
+    public void testSelectItemWithNoSelectedValueNoHidingShowsNoSelectionOption() throws Exception {
+    	HtmlSelect select = (HtmlSelect) this.page.getElementById("f:selectItemNoSelectedValueNoHiding");
+    	assertEquals(5, select.getOptionSize());
+    }
+    
+    public void testSelectItemWithNoSelectionSelectedValueNoHidingShowsNoSelectionOption() throws Exception {
+    	HtmlSelect select = (HtmlSelect) this.page.getElementById("f:selectItemNoSelectionSelectedValueNoHiding");
+    	assertEquals(5, select.getOptionSize());
+    }
+
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/systest/SelectOneHideNoSelectionInSelectItemGroupITCase.java b/test/servlet30/systest/src/test/java/com/sun/faces/systest/SelectOneHideNoSelectionInSelectItemGroupITCase.java
new file mode 100644
index 0000000..17ac78e
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/systest/SelectOneHideNoSelectionInSelectItemGroupITCase.java
@@ -0,0 +1,56 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest;
+
+
+
+public class SelectOneHideNoSelectionInSelectItemGroupITCase extends SelectOneHideNoSelectionITCase {
+
+    public SelectOneHideNoSelectionInSelectItemGroupITCase(String name) {
+		super(name);
+	}
+
+	@Override
+    protected String getPath() {
+		return "/faces/standard/selectOneLiteralHideNoSelectionOptionInSelectItemGroup.xhtml";
+    }
+
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/systest/SelectOneManyEnumITCase.java b/test/servlet30/systest/src/test/java/com/sun/faces/systest/SelectOneManyEnumITCase.java
new file mode 100644
index 0000000..7c63d25
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/systest/SelectOneManyEnumITCase.java
@@ -0,0 +1,194 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest;
+
+import javax.faces.component.NamingContainer;
+
+import java.util.List;
+import java.util.ArrayList;
+
+import com.sun.faces.htmlunit.HtmlUnitFacesITCase;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlForm;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import com.gargoylesoftware.htmlunit.html.HtmlSelect;
+import com.gargoylesoftware.htmlunit.html.HtmlOption;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+public class SelectOneManyEnumITCase extends HtmlUnitFacesITCase {
+
+    /**
+     * Construct a new instance of this test case.
+     *
+     * @param name Name of the test case
+     */
+    public SelectOneManyEnumITCase(String name) {
+        super(name);
+    }
+    
+    /**
+     * Return the tests included in this test suite.
+     */
+    public static Test suite() {
+        return (new TestSuite(NavigationITCase.class));
+    }
+
+    // ------------------------------------------------------------ Test Methods
+
+    public void testEnums() throws Exception {
+        HtmlPage page = getPage("/faces/standard/selectonemanyenum.jsp");
+        HtmlForm form = getFormById(page, "test");
+        assertNotNull(form);
+        List<HtmlSelect> selectList = getAllElementsOfGivenClass(page, 
+                                                     new ArrayList<HtmlSelect>(), 
+                                                     HtmlSelect.class);
+        assertTrue(selectList.size() == 5);
+        
+        // ID selected
+        HtmlSelect select = selectList.get(0);
+        assertTrue(select.getId().contains("selected"));
+        List<HtmlOption> selectedOptions = select.getSelectedOptions();
+        assertTrue(selectedOptions.size() == 1);
+        assertTrue("Value2".equals(selectedOptions.get(0).getValueAttribute()));
+        select.setSelectedAttribute(selectedOptions.get(0), false);
+        select.setSelectedAttribute("Value1", true);
+        
+        // ID selected2
+        HtmlSelect select2 = selectList.get(1);
+        assertTrue(select2.getId().contains("selected2"));
+        List<HtmlOption> selectedOptions2 = select2.getSelectedOptions();
+        assertTrue(selectedOptions2.size() == 1);
+        assertTrue("Value3".equals(selectedOptions2.get(0).getValueAttribute()));
+        select2.setSelectedAttribute(selectedOptions2.get(0), false);
+        select2.setSelectedAttribute("Value2", true);
+        
+        // ID selected3
+        HtmlSelect select3 = selectList.get(2);
+        assertTrue(select3.getId().contains("selected3"));
+        List<HtmlOption> selectedOptions3 = select3.getSelectedOptions();
+        assertTrue(selectedOptions3.size() == 1);
+        assertTrue("Value4".equals(selectedOptions3.get(0).getValueAttribute()));
+        select3.setSelectedAttribute(selectedOptions3.get(0), false);
+        select3.setSelectedAttribute("Value3", true);
+        
+        // ID array
+        HtmlSelect selectArray = selectList.get(3);
+        assertTrue(selectArray.getId().contains("array"));
+        List<HtmlOption> selectedOptionsArray = selectArray.getSelectedOptions();
+        assertTrue(selectedOptionsArray.size() == 2);
+        assertTrue("Value2".equals(selectedOptionsArray.get(0).getValueAttribute()));
+        assertTrue("Value4".equals(selectedOptionsArray.get(1).getValueAttribute()));
+        selectArray.setSelectedAttribute(selectedOptionsArray.get(0), false);
+        selectArray.setSelectedAttribute(selectedOptionsArray.get(1), false);
+        selectArray.setSelectedAttribute("Value1", true);
+        selectArray.setSelectedAttribute("Value3", true);
+        
+              
+        // ID list
+        HtmlSelect selectListt = selectList.get(4);
+        assertTrue(selectListt.getId().contains("list"));
+        List<HtmlOption> selectedOptionsList = selectListt.getSelectedOptions();
+        assertTrue(selectedOptionsList.size() == 2);
+        assertTrue("Value1".equals(selectedOptionsList.get(0).getValueAttribute()));
+        assertTrue("Value2".equals(selectedOptionsList.get(1).getValueAttribute()));
+        selectListt.setSelectedAttribute(selectedOptionsList.get(0), false);
+        selectListt.setSelectedAttribute(selectedOptionsList.get(1), false);
+        selectListt.setSelectedAttribute("Value2", true);
+        selectListt.setSelectedAttribute("Value4", true);
+        
+        HtmlSubmitInput submit = (HtmlSubmitInput)
+            form.getInputByName("test" +
+                                NamingContainer.SEPARATOR_CHAR +
+                                "submit");
+        page = (HtmlPage) submit.click();
+        
+        // verify the correct options were selected
+        
+        selectList = getAllElementsOfGivenClass(page, 
+                                                     new ArrayList<HtmlSelect>(), 
+                                                     HtmlSelect.class);
+        assertTrue(selectList.size() == 5);
+        
+        assertTrue(selectList.size() == 5);
+        
+        // ID selected
+        select = selectList.get(0);
+        assertTrue(select.getId().contains("selected"));
+        selectedOptions = select.getSelectedOptions();
+        assertTrue(selectedOptions.size() == 1);
+        assertTrue("Value1".equals(selectedOptions.get(0).getValueAttribute()));
+        
+        // ID selected2
+        select2 = selectList.get(1);
+        assertTrue(select2.getId().contains("selected2"));
+        selectedOptions2 = select2.getSelectedOptions();
+        assertTrue(selectedOptions2.size() == 1);
+        assertTrue("Value2".equals(selectedOptions2.get(0).getValueAttribute()));
+        
+        // ID selected3
+        select3 = selectList.get(2);
+        assertTrue(select3.getId().contains("selected3"));
+        selectedOptions3 = select3.getSelectedOptions();
+        assertTrue(selectedOptions3.size() == 1);
+        assertTrue("Value3".equals(selectedOptions3.get(0).getValueAttribute()));
+        
+        // ID array
+        selectArray = selectList.get(3);
+        assertTrue(selectArray.getId().contains("array"));
+        selectedOptionsArray = selectArray.getSelectedOptions();
+        assertTrue(selectedOptionsArray.size() == 2);
+        assertTrue("Value1".equals(selectedOptionsArray.get(0).getValueAttribute()));
+        assertTrue("Value2".equals(selectedOptionsArray.get(1).getValueAttribute()));
+              
+        // ID list
+        selectListt = selectList.get(4);
+        assertTrue(selectListt.getId().contains("list"));
+        selectedOptionsList = selectListt.getSelectedOptions();
+        assertTrue(selectedOptionsList.size() == 2);
+        assertTrue("Value2".equals(selectedOptionsList.get(0).getValueAttribute()));
+        assertTrue("Value3".equals(selectedOptionsList.get(1).getValueAttribute()));
+                
+    }
+    
+
+
+} // END SelectOneManyEnumTestCase
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/systest/SelectOneValueExpressionHideNoSelectionITCase.java b/test/servlet30/systest/src/test/java/com/sun/faces/systest/SelectOneValueExpressionHideNoSelectionITCase.java
new file mode 100644
index 0000000..1e1cf81
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/systest/SelectOneValueExpressionHideNoSelectionITCase.java
@@ -0,0 +1,113 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+import com.gargoylesoftware.htmlunit.html.HtmlInput;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSelect;
+import com.sun.faces.htmlunit.HtmlUnitFacesITCase;
+
+
+public class SelectOneValueExpressionHideNoSelectionITCase extends HtmlUnitFacesITCase {
+
+    private HtmlPage page;
+
+	/**
+     * Construct a new instance of this test case.
+     *
+     * @param name Name of the test case
+     */
+    public SelectOneValueExpressionHideNoSelectionITCase(String name) {
+        super(name);
+    }
+
+
+    /**
+     * Set up instance variables required by this test case.
+     */
+    public void setUp() throws Exception {
+        super.setUp();
+        this.page = getPage(getPath());
+    }
+
+
+	protected String getPath() {
+		return "/faces/standard/selectOneValueExpressionHideNoSelectionOption.xhtml";
+	}
+
+
+    /**
+     * Return the tests included in this test suite.
+     */
+    public static Test suite() {
+        return (new TestSuite(SelectOneValueExpressionHideNoSelectionITCase.class));
+    }
+
+
+    /**
+     * Tear down instance variables required by this test case.
+     */
+    public void tearDown() {
+        super.tearDown();
+    }
+
+
+    // ------------------------------------------------------------ Test Methods
+
+
+    public void testHideNoSelectionOptionIsAValueExpression() throws Exception {
+        HtmlSelect select = (HtmlSelect) this.page.getElementById("f:selectItemNoSelectedValue");
+        //validate initial page
+        assertEquals(4, select.getOptionSize());
+        
+        HtmlInput button = (HtmlInput) this.page.getElementById("f:command");
+        select.getOptionByValue("Pippin").click();
+        this.page = button.click();
+        
+        select = (HtmlSelect) this.page.getElementById("f:selectItemNoSelectedValue");
+        assertEquals(5, select.getOptionSize());
+    }
+    
+
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/systest/StandardIT.java b/test/servlet30/systest/src/test/java/com/sun/faces/systest/StandardIT.java
new file mode 100644
index 0000000..1ce6c80
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/systest/StandardIT.java
@@ -0,0 +1,95 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.systest;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import java.util.regex.Pattern;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class StandardIT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testMessage01() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/standard/messages01.jsp");
+        assertTrue(Pattern.matches("(?s).*<head>\\s*<title>\\s*messages01.jsp\\s*</title>\\s*<style\\s*type=\"text/css\"\\s*media=\"screen\">.*\\.errors.*</style>\\s*</head>\\s*<body>\\s*<ul\\s*class=\"errors\">\\s*<li>\\s*\\{0\\}:\\s*Validation\\s*Error:\\s*Value\\s*is\\s*required.\\s*</li>\\s*</ul>\\s*</body>.*", page.asXml()));
+    }
+
+    @Test
+    public void testMessage02() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/standard/messages02.jsp");
+        assertTrue(Pattern.matches("(?s).*<head>\\s*<style\\s*type=\"text/css\"\\s*media=\"screen\">.*\\.errors.*</style>\\s*</head>\\s*<body>\\s*<table>\\s*<tbody>\\s*<tr>\\s*<td>\\s*<ul\\s*dir=\"LTR\"\\s*style=\"left:\\s*48px;\\s*top:\\s*100px;\\s*position:\\s*absolute\">\\s*<li\\s*style=\"color:\\s*yellow\">\\s*<span\\s*title=\"Informational\\s*Detail\">\\s*Information\\s*Summary\\s*Informational\\s*Detail\\s*</span>\\s*</li>\\s*<li>\\s*<span\\s*title=\"Warning\\s*Detail\">\\s*Warning [...]
+    }
+
+    @Test
+    public void testComponent01() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/standard/component01.jsp");
+        assertTrue(Pattern.matches("(?s).*<html>\\s*<head>\\s*<title>\\s*component01.jsp\\s*</title>\\s*</head>\\s*<body>\\s*<input\\s*id=\"username\"\\s*type=\"text\"\\s*name=\"username\"\\s*maxlength=\"32\"\\s*onkeypress=\"attrValue\"\\s*size=\"20\"/>\\s*</body>\\s*</html>.*", page.asXml()));
+    }
+
+    @Test
+    public void testAutoComplete() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/standard/autocomplete.jsp");
+        assertTrue(Pattern.matches("(?s).*<html>\\s*<head>\\s*<title>\\s*autocomplete.jsp\\s*</title>\\s*</head>\\s*<body>\\s*autocomplete\\s*on\\s*.*\\s*no\\s*attribute\\s*rendered:\\s*<input\\s*id=\"a\"\\s*type=\"password\"\\s*name=\"a\"\\s*value=\"\"/>\\s*autocomplete\\s*off\\s*.*\\s*attribute\\s*rendered:\\s*<input\\s*id=\"b\"\\s*type=\"password\"\\s*name=\"b\"\\s*autocomplete=\"off\"\\s*value=\"\"/>\\s*no\\s*autocomplete\\s*defined\\s*.*\\s*no\\s*attribute\\s*rendered:\\s*<input\\s* [...]
+    }
+
+    @Test
+    public void testDataTableColumnClasses() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/standard/dtablecolumnclasses.jsp");
+        assertTrue(Pattern.matches("(?s).*<html>\\s*<head>\\s*<title>\\s*dtablecolumnclasses.jsp\\s*</title>\\s*<style\\s*type=\"text/css\">\\s*\\.b1.*\\.b2.*\\.b3.*\\.b4.*\\.b5.*.b6.*\\.b7.*</style>\\s*</head>\\s*<body>\\s*<table>\\s*<tbody>\\s*<tr>\\s*<td\\s*class=\"b1\">\\s*c1\\s*</td>\\s*<td\\s*class=\"b2\">\\s*c2\\s*</td>\\s*<td>\\s*c3\\s*</td>\\s*<td>\\s*c4\\s*</td>\\s*<td>\\s*c5\\s*</td>\\s*<td>\\s*c6\\s*</td>\\s*</tr>\\s*<tr>\\s*<td\\s*class=\"b1\">\\s*c1_1\\s*</td>\\s*<td\\s*cla [...]
+    }
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/systest/TLValidatorIT.java b/test/servlet30/systest/src/test/java/com/sun/faces/systest/TLValidatorIT.java
new file mode 100644
index 0000000..323dc69
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/systest/TLValidatorIT.java
@@ -0,0 +1,209 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.systest;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import static com.sun.faces.test.junit.JsfServerExclude.WEBLOGIC_12_1_3;
+import static com.sun.faces.test.junit.JsfServerExclude.WEBLOGIC_12_1_4;
+import com.sun.faces.test.junit.JsfTest;
+import com.sun.faces.test.junit.JsfTestRunner;
+import static com.sun.faces.test.junit.JsfVersion.JSF_2_2_0;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+import org.junit.runner.RunWith;
+
+ at RunWith(JsfTestRunner.class)
+public class TLValidatorIT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testHtmlBasicValidatorFail() throws Exception {
+        webClient.setThrowExceptionOnFailingStatusCode(false);
+        HtmlPage page = webClient.getPage(webUrl + "faces/TestHtmlBasicValidatorFail.jsp");
+        assertEquals(500, page.getWebResponse().getStatusCode());
+        webClient.setThrowExceptionOnFailingStatusCode(true);
+    }
+
+    @Test
+    public void testHtmlBasicValidatorFail2() throws Exception {
+        webClient.setThrowExceptionOnFailingStatusCode(false);
+        HtmlPage page = webClient.getPage(webUrl + "TestHtmlBasicValidatorFail.jsp");
+        assertEquals(500, page.getWebResponse().getStatusCode());
+        webClient.setThrowExceptionOnFailingStatusCode(true);
+    }
+
+    @Test
+    public void testHtmlBasicValidatorSucceed() throws Exception {
+        webClient.setThrowExceptionOnFailingStatusCode(false);
+        HtmlPage page = webClient.getPage(webUrl + "faces/TestHtmlBasicValidatorSucceed.jsp");
+        assertEquals(200, page.getWebResponse().getStatusCode());
+        webClient.setThrowExceptionOnFailingStatusCode(true);
+    }
+
+    @Test
+    public void testCoreValidatorFail() throws Exception {
+        webClient.setThrowExceptionOnFailingStatusCode(false);
+        HtmlPage page = webClient.getPage(webUrl + "faces/TestCoreValidatorFail.jsp");
+        assertEquals(500, page.getWebResponse().getStatusCode());
+        webClient.setThrowExceptionOnFailingStatusCode(true);
+    }
+
+    @Test
+    public void testCoreValidatorFail2() throws Exception {
+        webClient.setThrowExceptionOnFailingStatusCode(false);
+        HtmlPage page = webClient.getPage(webUrl + "TestCoreValidatorFail.jsp");
+        assertEquals(500, page.getWebResponse().getStatusCode());
+        webClient.setThrowExceptionOnFailingStatusCode(true);
+    }
+
+    @Test
+    public void testCoreValidatorSucceed() throws Exception {
+        webClient.setThrowExceptionOnFailingStatusCode(false);
+        HtmlPage page = webClient.getPage(webUrl + "faces/TestCoreValidatorSucceed.jsp");
+        assertEquals(200, page.getWebResponse().getStatusCode());
+        webClient.setThrowExceptionOnFailingStatusCode(true);
+    }
+
+    @Test
+    public void testCoreValidatorIfFail() throws Exception {
+        webClient.setThrowExceptionOnFailingStatusCode(false);
+        HtmlPage page = webClient.getPage(webUrl + "faces/TestCoreValidatorIfFail.jsp");
+        assertEquals(200, page.getWebResponse().getStatusCode());
+        webClient.setThrowExceptionOnFailingStatusCode(true);
+    }
+
+    @Test
+    public void testCoreValidatorIfSucceed() throws Exception {
+        webClient.setThrowExceptionOnFailingStatusCode(false);
+        HtmlPage page = webClient.getPage(webUrl + "faces/TestCoreValidatorIfSucceed.jsp");
+        assertEquals(200, page.getWebResponse().getStatusCode());
+        webClient.setThrowExceptionOnFailingStatusCode(true);
+    }
+
+    @JsfTest(value=JSF_2_2_0, excludes = {WEBLOGIC_12_1_3, WEBLOGIC_12_1_4})
+    @Test
+    public void testElValidatorActionRefFail() throws Exception {
+        webClient.setThrowExceptionOnFailingStatusCode(false);
+        HtmlPage page = webClient.getPage(webUrl + "faces/TestElValidatorActionRefFail.jsp");
+        assertEquals(500, page.getWebResponse().getStatusCode());
+        webClient.setThrowExceptionOnFailingStatusCode(true);
+    }
+
+    @JsfTest(value=JSF_2_2_0, excludes = {WEBLOGIC_12_1_3, WEBLOGIC_12_1_4})
+    @Test
+    public void testElValidatorComponentFail() throws Exception {
+        webClient.setThrowExceptionOnFailingStatusCode(false);
+        HtmlPage page = webClient.getPage(webUrl + "faces/TestElValidatorComponentFail.jsp");
+        assertEquals(500, page.getWebResponse().getStatusCode());
+        webClient.setThrowExceptionOnFailingStatusCode(true);
+    }
+
+    @Test
+    public void testElValidatorIdFail() throws Exception {
+        webClient.setThrowExceptionOnFailingStatusCode(false);
+        HtmlPage page = webClient.getPage(webUrl + "faces/TestElValidatorIdFail.jsp");
+        assertEquals(500, page.getWebResponse().getStatusCode());
+        webClient.setThrowExceptionOnFailingStatusCode(true);
+    }
+
+    @Test
+    public void testElValidatorValueRefFail() throws Exception {
+        webClient.setThrowExceptionOnFailingStatusCode(false);
+        HtmlPage page = webClient.getPage(webUrl + "faces/TestElValidatorValueRefFail.jsp");
+        assertEquals(500, page.getWebResponse().getStatusCode());
+        webClient.setThrowExceptionOnFailingStatusCode(true);
+    }
+
+    @Test
+    public void testElValidatorActionRefSucceed() throws Exception {
+        webClient.setThrowExceptionOnFailingStatusCode(false);
+        HtmlPage page = webClient.getPage(webUrl + "faces/TestElValidatorActionRefSucceed.jsp");
+        assertEquals(200, page.getWebResponse().getStatusCode());
+        webClient.setThrowExceptionOnFailingStatusCode(true);
+    }
+
+    @Test
+    public void testElValidatorComponentSucceed() throws Exception {
+        webClient.setThrowExceptionOnFailingStatusCode(false);
+        HtmlPage page = webClient.getPage(webUrl + "faces/TestElValidatorComponentSucceed.jsp");
+        assertEquals(200, page.getWebResponse().getStatusCode());
+        webClient.setThrowExceptionOnFailingStatusCode(true);
+    }
+
+    @Test
+    public void testElValidatorIdSucceed() throws Exception {
+        webClient.setThrowExceptionOnFailingStatusCode(false);
+        HtmlPage page = webClient.getPage(webUrl + "faces/TestElValidatorIdSucceed.jsp");
+        assertEquals(200, page.getWebResponse().getStatusCode());
+        webClient.setThrowExceptionOnFailingStatusCode(true);
+    }
+
+    @Test
+    public void testElValidatorValueRefSucceed() throws Exception {
+        webClient.setThrowExceptionOnFailingStatusCode(false);
+        HtmlPage page = webClient.getPage(webUrl + "faces/TestElValidatorValueRefSucceed.jsp");
+        assertEquals(200, page.getWebResponse().getStatusCode());
+        webClient.setThrowExceptionOnFailingStatusCode(true);
+    }
+
+    @Test
+    public void testTlvTest01() throws Exception {
+        webClient.setThrowExceptionOnFailingStatusCode(false);
+        HtmlPage page = webClient.getPage(webUrl + "faces/jsp/tlvTest01.jsp");
+        assertEquals(200, page.getWebResponse().getStatusCode());
+        webClient.setThrowExceptionOnFailingStatusCode(true);
+    }
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/systest/ValidatorIT.java b/test/servlet30/systest/src/test/java/com/sun/faces/systest/ValidatorIT.java
new file mode 100644
index 0000000..cf3a840
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/systest/ValidatorIT.java
@@ -0,0 +1,96 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.systest;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import java.util.regex.Pattern;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class ValidatorIT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    /*
+     * Test Validator creation
+     */
+    @Test
+    public void testValidator() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/validator.jsp");
+        assertTrue(Pattern.matches("(?s).*/validator.jsp PASSED.*", page.asXml()));
+    }
+
+    @Test
+    public void testValidator01() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/validator01.jsp");
+        assertTrue(Pattern.matches("(?s).*/validator01.jsp PASSED.*", page.asXml()));
+    }
+
+    @Test
+    public void testValidator02() throws Exception {
+        webClient.setThrowExceptionOnFailingStatusCode(false);
+        HtmlPage page = webClient.getPage(webUrl + "faces/converter02.jsp");
+        assertEquals(200, page.getWebResponse().getStatusCode());
+        webClient.setThrowExceptionOnFailingStatusCode(true);
+    }
+
+    @Test
+    public void testValidator03() throws Exception {
+        webClient.setThrowExceptionOnFailingStatusCode(false);
+        HtmlPage page = webClient.getPage(webUrl + "faces/converter03.jsp");
+        assertEquals(200, page.getWebResponse().getStatusCode());
+        webClient.setThrowExceptionOnFailingStatusCode(true);
+    }
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/systest/ValueBindingIT.java b/test/servlet30/systest/src/test/java/com/sun/faces/systest/ValueBindingIT.java
new file mode 100644
index 0000000..3e9e823
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/systest/ValueBindingIT.java
@@ -0,0 +1,128 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.systest;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import java.util.regex.Pattern;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class ValueBindingIT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+    
+    /*
+     * ValueBinding Test #1 (Simple Bean Getter)
+     */
+    @Test
+    public void testValueBinding1() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/valueBinding01.jsp");
+        assertTrue(Pattern.matches("(?s).*/valueBinding01.jsp PASSED.*", page.asXml()));
+    }
+
+    /*
+     * ValueBinding Test #2 (Simple String Property Getter)
+     */
+    @Test
+    public void testValueBinding2() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/valueBinding02.jsp");
+        assertTrue(Pattern.matches("(?s).*/valueBinding02.jsp PASSED.*", page.asXml()));
+    }
+    
+    /*
+     * ValueBinding Test #3 (Simple Integer Property Getter) 
+     */
+    @Test
+    public void testValueBinding3() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/valueBinding03.jsp");
+        assertTrue(Pattern.matches("(?s).*/valueBinding03.jsp PASSED.*", page.asXml()));
+    }
+    
+    /*
+     * ValueBinding Test #4 (Simple Boolean Property Getter)
+     */
+    @Test
+    public void testValueBinding4() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/valueBinding04.jsp");
+        assertTrue(Pattern.matches("(?s).*/valueBinding04.jsp PASSED.*", page.asXml()));
+    }
+    
+    /*
+     * ValueBinding Test #5 (Simple Integer Expression Getter)
+     */
+    @Test
+    public void testValueBinding5() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/valueBinding05.jsp");
+        assertTrue(Pattern.matches("(?s).*/valueBinding05.jsp PASSED.*", page.asXml()));
+    }
+    
+    /*
+     * ValueBinding Test #6 (Simple Boolean Expression Getter)
+     */
+    @Test
+    public void testValueBinding6() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/valueBinding06.jsp");
+        assertTrue(Pattern.matches("(?s).*/valueBinding06.jsp PASSED.*", page.asXml()));
+    }
+    
+    /*
+     * ValueBinding Test #7 (Mixed Literal and Expression Getter)
+     */
+    @Test
+    public void testValueBinding7() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/valueBinding07.jsp");
+        assertTrue(Pattern.matches("(?s).*/valueBinding07.jsp PASSED.*", page.asXml()));
+    }
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/systest/VerbatimIT.java b/test/servlet30/systest/src/test/java/com/sun/faces/systest/VerbatimIT.java
new file mode 100644
index 0000000..6f557b0
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/systest/VerbatimIT.java
@@ -0,0 +1,77 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.systest;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import java.util.regex.Pattern;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class VerbatimIT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testVerbatimTest() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/verbatim_test.jsp");
+        assertTrue(Pattern.matches("(?s).*\\s*<html>\\s*<head>\\s*<title>\\s*Test\\s*of\\s*the\\s*Verbatim\\s*Tag\\s*</title>\\s*</head>\\s*<body>\\s*<h1>\\s*Test\\s*of\\s*the\\s*Verbatim\\s*Tag\\s*</h1>\\s*<p>\\s*\\[DEFAULT\\]\\s*This\\s*text\\s*<b>\\s*has\\s*angle\\s*brackets\\s*</b>\\s*.\\s*The\\s*angle\\s*brackets\\s*MUST\\s*NOT\\s*be\\s*escaped.\\s*</p>\\s*<p>\\s*\\[FALSE\\]\\s*This\\s*text\\s*<b>\\s*has\\s*angle\\s*brackets\\s*</b>\\s*.\\s*The\\s*angle\\s*brackets\\s*MUST\\s*NOT\\s [...]
+    }
+
+    @Test
+    public void testEscapeTest() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/escape_test.jsp");
+        assertTrue(Pattern.matches("(?s).*<html>\\s*<head>\\s*<title>\\s*Test\\s*of\\s*outputText\\s*Escaping\\s*</title>\\s*</head>\\s*<body>\\s*<h1>\\s*Test\\s*of\\s*outputText\\s*Escaping\\s*</h1>\\s*<p>\\s*\\[DEFAULT\\]\\s*This\\s*text\\s*<b>has\\s*angle\\s*brackets</b>.\\s*The\\s*angle\\s*brackets\\s*MUST\\s*be\\s*escaped.\\s*</p>\\s*<p>\\s*\\[FALSE\\]\\s*This\\s*text\\s*<b>\\s*has\\s*angle\\s*brackets\\s*</b>\\s*.\\s*The\\s*angle\\s*brackets\\s*MUST\\s*NOT\\s*be\\s*esca [...]
+    }
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/systest/ViewIdNormalizationIT.java b/test/servlet30/systest/src/test/java/com/sun/faces/systest/ViewIdNormalizationIT.java
new file mode 100644
index 0000000..e20bc47
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/systest/ViewIdNormalizationIT.java
@@ -0,0 +1,72 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.systest;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class ViewIdNormalizationIT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testViewIdNormalization() throws Exception {
+        webClient.setThrowExceptionOnFailingStatusCode(false);
+        HtmlPage page = webClient.getPage(webUrl + "/faces/faces/faces/faces/duplicateIds02.jsp");
+        assertEquals(200, page.getWebResponse().getStatusCode());
+        webClient.setThrowExceptionOnFailingStatusCode(true);
+    }
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/systest/composite/CompositeAttributeITCase.java b/test/servlet30/systest/src/test/java/com/sun/faces/systest/composite/CompositeAttributeITCase.java
new file mode 100644
index 0000000..40497a9
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/systest/composite/CompositeAttributeITCase.java
@@ -0,0 +1,192 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.composite;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import com.sun.faces.htmlunit.HtmlUnitFacesITCase;
+import com.gargoylesoftware.htmlunit.html.*;
+
+import java.util.List;
+
+/**
+ * Unit tests for Composite Component Attributes
+ */
+public class CompositeAttributeITCase extends HtmlUnitFacesITCase {
+
+
+    @SuppressWarnings({"UnusedDeclaration"})
+    public CompositeAttributeITCase() {
+        this("CompositeAttributeTestCase");
+    }
+
+    public CompositeAttributeITCase(String name) {
+        super(name);
+    }
+
+
+    /**
+     * Set up instance variables required by this test case.
+     */
+    @Override
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+
+
+    /**
+     * Return the tests included in this test suite.
+     */
+    public static Test suite() {
+        return (new TestSuite(CompositeAttributeITCase.class));
+    }
+
+
+    /**
+     * Tear down instance variables required by this test case.
+     */
+    @Override
+    public void tearDown() {
+        super.tearDown();
+    }
+    
+
+    // -------------------------------------------------------------- Test Cases
+
+    // Tests cc:attribute default=....
+
+    public void testValueExpressionDefaults() throws Exception {
+
+        HtmlPage page = getPage("/faces/composite/defaultAttributeValueExpression.xhtml");
+        assertTrue(page.asText().contains("DEFAULT VALUE"));
+
+    }
+
+    /**
+     * Test for Issue #1966
+     * @throws Exception
+     */
+    public void testCompositeAttributeDefaults() throws Exception {
+        HtmlPage page = getPage("/faces/composite/defaultAttributeValueExpression_1966.xhtml");
+
+        // Test with empty list as items
+        HtmlElement dataTable = page.getElementById("WithValueEmptyList:DataTable");
+        List<DomText> content = (List<DomText>) dataTable.getByXPath("./tbody/tr/td/text()");
+        assertTrue("Table should conain max. 1 empty cell.", content.size() <= 1);
+        for (DomText text : content) {
+            assertTrue("Cells should be empty", text.asText().length() == 0);
+        }
+
+        // Test with null value as items
+        dataTable = page.getElementById("WithValueNull:DataTable");
+        content = (List<DomText>) dataTable.getByXPath("./tbody/tr/td/text()");
+        assertEquals("Table should contain 2 cells", 2, content.size());
+        for (int i = 0; i < 2; i++) {
+            assertEquals("---Item " + (i + 1) + "---", content.get(i).toString());
+        }
+
+        // @Todo change to a test without awt dependencies
+        // Test Colors
+//        assertElementContentEquals(page,
+//                "ColorWithValueFromBean:Output",
+//                "---java.awt.Color[r=255,g=175,b=175]---");
+//        assertElementContentEquals(page,
+//                "ColorWithValueLiteral:Output",
+//                "---java.awt.Color[r=80,g=40,b=20]---");
+//        assertElementContentEquals(page,
+//                "ColorWithValueNone:Output",
+//                "---java.awt.Color[r=200,g=100,b=50]---");
+//        assertElementContentEquals(page,
+//                "ColorWithValueEmpty:Output",
+//                "---java.awt.Color[r=200,g=100,b=50]---");
+//        assertElementContentEquals(page,
+//                "ColorWithValueNull:Output",
+//                "---java.awt.Color[r=200,g=100,b=50]---");
+
+    }
+
+    /**
+     * Test for Issue #1986
+     */
+    public void testCompositeAttributeCanBeNull() throws Exception {
+        HtmlPage page = getPage("/faces/composite/defaultAttributeValueExpression_1986.xhtml");
+        assertElementAttributeEquals(page, "WithValueNull:Input", "value", "");
+        assertElementAttributeEquals(page, "WithValueEmpty:Input", "value", "");
+    }
+
+    /**
+     * Helper to test for the Content of an HTML-Element.
+     * This method will assert, that the Element with the provided id exists
+     * and that its content is equal to the provided expected content.
+     * @param page the page to test
+     * @param elementId the id of the element that contains the content to be
+     *  tested.
+     * @param expected the expected content
+     */
+    private void assertElementContentEquals(final HtmlPage page,
+            final String elementId, final String expected) {
+        HtmlElement element = page.getElementById(elementId);
+        assertNotNull(element);
+        assertEquals("Testing element content of #" + elementId,
+                expected, element.getTextContent());
+    }
+
+
+    /**
+     * Helper to test for the value of an attribute of a HTML-Element.
+     * This method will assert, that the Element with the provided id exists
+     * and that the value of the attribute with the provided attributeName is
+     * equal to the provided expected content.
+     * @param page the page to test
+     * @param elementId the id of the element with the attribute to be tested
+     * @param attributeName the name of the attribute to be tested
+     * @param expected the expected content
+     */
+    private void assertElementAttributeEquals(final HtmlPage page,
+            final String elementId,final String attributeName,
+            final String expected) {
+        HtmlElement element = page.getElementById(elementId);
+        assertNotNull(element);
+        assertEquals("Testing attribute '" +  attributeName + "' of #"
+                + elementId,
+                expected, element.getAttribute(attributeName));
+    }
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/systest/composite/MultiActionComponentITCase.java b/test/servlet30/systest/src/test/java/com/sun/faces/systest/composite/MultiActionComponentITCase.java
new file mode 100644
index 0000000..3597958
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/systest/composite/MultiActionComponentITCase.java
@@ -0,0 +1,87 @@
+
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.composite;
+
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import com.sun.faces.htmlunit.HtmlUnitFacesITCase;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+
+
+public class MultiActionComponentITCase extends HtmlUnitFacesITCase {
+
+
+    public MultiActionComponentITCase(String name) {
+        super(name);
+    }
+
+    public static Test suite() {
+        return (new TestSuite(MultiActionComponentITCase.class));
+    }
+
+    public void test01() throws Exception {
+        doTest("/faces/composite/compositeComponentWithMultipleActions.xhtml");
+
+    }
+    
+    public void test02() throws Exception {
+        doTest("/faces/composite/compositeComponentWithMultipleActionsMethodSignatures.xhtml");
+
+    }
+
+    public void doTest(String path) throws Exception {
+        HtmlPage page = getPage(path);
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("cc:submitAction");
+        page = button.click();
+        assertTrue("Expected submit pressed, received: " + page.asText(),
+                page.asText().matches("(?s).*submit pressed.*"));
+
+        page = getPage(path);
+        button = (HtmlSubmitInput) page.getElementById("cc:cancelAction");
+        page = button.click();
+        assertTrue("Expected cancel pressed, received: " + page.asText(),
+                page.asText().matches("(?s).*cancel pressed.*"));
+
+    }
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/systest/composite/behavior/CompositeBehaviorITCase.java b/test/servlet30/systest/src/test/java/com/sun/faces/systest/composite/behavior/CompositeBehaviorITCase.java
new file mode 100644
index 0000000..450c767
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/systest/composite/behavior/CompositeBehaviorITCase.java
@@ -0,0 +1,89 @@
+
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.composite.behavior;
+
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
+import com.sun.faces.htmlunit.HtmlUnitFacesITCase;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+
+
+public class CompositeBehaviorITCase extends HtmlUnitFacesITCase {
+
+
+    public CompositeBehaviorITCase(String name) {
+        super(name);
+        addExclusion(Container.TOMCAT6, "test01");
+        addExclusion(Container.TOMCAT7, "test01");
+        addExclusion(Container.WLS_10_3_4_NO_CLUSTER, "test01");
+
+    }
+
+    public static Test suite() {
+        return (new TestSuite(CompositeBehaviorITCase.class));
+    }
+
+    public void test01() throws Exception {
+
+//        HtmlPage page = getPage("/faces/composite/behavior/composite.xhtml");
+//        if (page.asXml().contains("Project Stage: Development")) {
+//            HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("form:composite:cancel");
+//            page = button.click();
+//            assertTrue("Page does not contain validation message after clicking cancel button.",
+//                    page.asXml().contains("Length"));
+//            button = (HtmlSubmitInput) page.getElementById("form:composite:sub:commandAction");
+//            page = button.click();
+//            assertTrue("Page does not contain validation message after clicking ok with no text in textfield button.",
+//                    page.asXml().contains("Length"));
+//            button = (HtmlSubmitInput) page.getElementById("form:composite:sub:commandAction");
+//            HtmlTextInput textField = (HtmlTextInput) page.getElementById("form:composite:input");
+//            textField.setValueAttribute("more than three characters");
+//            page = button.click();
+//            assertTrue("Can't find the message: \"Reaching this page indicates that the method expression retargeting was successful.\"",
+//                    page.asXml().contains("Reaching this page indicates that the method expression retargeting was successful."));
+//        }
+    }
+
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/systest/dynamic1757/Issue1757ITCase.java b/test/servlet30/systest/src/test/java/com/sun/faces/systest/dynamic1757/Issue1757ITCase.java
new file mode 100644
index 0000000..b0dacbd
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/systest/dynamic1757/Issue1757ITCase.java
@@ -0,0 +1,108 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.dynamic1757;
+
+
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import com.sun.faces.htmlunit.HtmlUnitFacesITCase;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+
+/**
+ * Test cases for Facelets functionality
+ */
+public class Issue1757ITCase extends HtmlUnitFacesITCase {
+
+
+    // --------------------------------------------------------------- Test Init
+
+
+    public Issue1757ITCase() {
+        this("Issue1757TestCase");
+    }
+
+
+    public Issue1757ITCase(String name) {
+        super(name);
+    }
+
+
+    /**
+     * Set up instance variables required by this test case.
+     */
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+
+
+    /**
+     * Return the tests included in this test suite.
+     */
+    public static Test suite() {
+        return (new TestSuite(Issue1757ITCase.class));
+    }
+
+
+    /**
+     * Tear down instance variables required by this test case.
+     */
+    public void tearDown() {
+        super.tearDown();
+    }
+
+
+    // ------------------------------------------------------------ Test Methods
+
+
+    public void testDynamicComponents() throws Exception {
+        HtmlPage page = getPage("/faces/facelets/issue1757-dynamic-components.xhtml");
+        String text = page.asText();
+        assertTrue(text.matches("(?s).*TestComponent::encodeBegin\\s*Manually added child\\s*Dynamically added child\\s*TestComponent::encodeEnd.*"));
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("button");
+        page = button.click();
+        text = page.asText();
+        assertTrue(text.matches("(?s).*TestComponent::encodeBegin\\s*Manually added child\\s*Dynamically added child\\s*TestComponent::encodeEnd.*"));
+        
+    }
+
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/systest/el/ELITCase.java b/test/servlet30/systest/src/test/java/com/sun/faces/systest/el/ELITCase.java
new file mode 100644
index 0000000..97350dc
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/systest/el/ELITCase.java
@@ -0,0 +1,119 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.el;
+
+import java.util.List;
+import java.util.ArrayList;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import com.sun.faces.htmlunit.HtmlUnitFacesITCase;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSpan;
+import com.gargoylesoftware.htmlunit.html.HtmlInput;
+
+/**
+ * Validate new EL features such as the component implicit object
+ */
+public class ELITCase extends HtmlUnitFacesITCase {
+
+    public ELITCase(String name) {
+        super(name);
+    }
+
+
+    /**
+     * Set up instance variables required by this test case.
+     */
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+
+
+    /**
+     * Return the tests included in this test suite.
+     */
+    public static Test suite() {
+        return (new TestSuite(ELITCase.class));
+    }
+
+
+    /**
+     * Tear down instance variables required by this test case.
+     */
+    public void tearDown() {
+        super.tearDown();
+    }
+
+    // ------------------------------------------------------------ Test Methods
+
+
+    public void testComponentImplicitObject() throws Exception {
+        HtmlPage page = getPage("/faces/componentImplicitObject.jsp");
+        List<HtmlSpan> outputs = new ArrayList<HtmlSpan>(2);
+        getAllElementsOfGivenClass(page, outputs, HtmlSpan.class);
+        assertTrue(outputs.size() ==2);
+        HtmlSpan s = outputs.get(0);
+        assertTrue("ot".equals(s.getId()));
+        assertTrue("ot".equals(s.asText()));
+        s = outputs.get(1);
+        assertTrue(s.getId().contains("facetOT"));
+        assertTrue("facetOT".equals(s.asText()));
+        List<HtmlInput> inputs = new ArrayList<HtmlInput>(2);
+        getAllElementsOfGivenClass(page, inputs, HtmlInput.class);
+        HtmlInput i = inputs.get(2);
+        assertTrue(i.getId().contains("0:it"));
+        assertTrue("it".equals(i.asText()));
+        i = inputs.get(3);
+        assertTrue(i.getId().contains("1:it"));
+        assertTrue("it".equals(i.asText()));
+
+    }
+
+
+    public void testProgrammaticExpressionFunctionEval() throws Exception {
+
+        HtmlPage page = getPage("/faces/elfunction.xhtml");
+        assertTrue(page.asText().contains("PASSED"));
+        
+    }
+
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/systest/http/HttpMethodITCase.java b/test/servlet30/systest/src/test/java/com/sun/faces/systest/http/HttpMethodITCase.java
new file mode 100644
index 0000000..42adbb0
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/systest/http/HttpMethodITCase.java
@@ -0,0 +1,150 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.http;
+
+import com.sun.faces.htmlunit.HtmlUnitFacesITCase;
+import java.io.BufferedReader;
+import java.io.BufferedWriter;
+import java.io.InputStreamReader;
+import java.io.OutputStreamWriter;
+import java.net.HttpURLConnection;
+import java.net.Socket;
+import java.net.URL;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+
+
+ public class HttpMethodITCase extends HtmlUnitFacesITCase {
+
+
+    public HttpMethodITCase(String name) {
+        super(name);
+    }
+
+    public static Test suite() {
+        return (new TestSuite(HttpMethodITCase.class));
+    }
+    
+    static final String interweaving = "/faces/interweaving01.jsp";
+    static final String interweavingRegEx = "(?s).*Begin\\s*test\\s*jsp include without verbatim\\s*interweaving\\s*works\\s*well!!\\s*End\\s*test\\s*jsp include without verbatim.*";
+    
+    static final String repeat = "/faces/facelets/uirepeat.xhtml";
+    static final String repeatRegEx = "(?s).*ListFlavor is chocolate.*";
+
+    public void testPositive() throws Exception {
+        int [] rc = new int[1];
+        // Ensure the GET request works as expected
+        assertTrue(issueHttpRequest("GET", rc, interweaving).matches(interweavingRegEx));
+        assertEquals(HttpURLConnection.HTTP_OK, rc[0]);
+
+        // Ensure the POST request works as expected
+        assertTrue(issueHttpRequest("POST", rc, interweaving).matches(interweavingRegEx));
+        assertEquals(HttpURLConnection.HTTP_OK, rc[0]);
+
+        // Ensure the PUT request works as expected
+        assertTrue(issueHttpRequest("PUT", rc, repeat).matches(repeatRegEx));
+        assertEquals(HttpURLConnection.HTTP_OK, rc[0]);
+
+        // Ensure the DELETE request works as expected
+        assertTrue(issueHttpRequest("DELETE", rc, repeat).matches(repeatRegEx));
+        assertEquals(HttpURLConnection.HTTP_OK, rc[0]);
+
+        // Ensure the HEAD request works as expected
+        String result = issueHttpRequest("HEAD", rc, repeat);
+        String [] tokens = result.split("[\\r\\n][\\r\\n]");        
+        assertTrue(1 == tokens.length);
+        assertEquals(HttpURLConnection.HTTP_OK, rc[0]);
+
+        // Ensure the OPTIONS  request works as expected
+        result = issueHttpRequest("OPTIONS", rc, repeat);
+        tokens = result.split("[\\r\\n][\\r\\n]");        
+        assertTrue(1 == tokens.length || "0".equals(tokens[1]));
+        assertEquals(HttpURLConnection.HTTP_OK, rc[0]);
+
+        // Ensure the GETBOGUSALLOWED request *does* work, because
+        // we configured it in web.xml
+        assertTrue(issueHttpRequest("GETBOGUSALLOWED", rc, repeat).matches(repeatRegEx));
+        assertEquals(HttpURLConnection.HTTP_OK, rc[0]);
+
+    }
+
+     public void testNegative() throws Exception {
+        int [] rc = new int[1];
+
+        // Ensure the GET22 request does not work
+        assertFalse("Bogus HTTP method was accepted by server.  Fail.",
+                issueHttpRequest("GET22", rc, interweaving).matches(interweavingRegEx));
+        assertFalse("Bogus HTTP method returned HTTP_OK status.  Fail.", HttpURLConnection.HTTP_OK == rc[0]);
+     }
+    
+    private String issueHttpRequest(String methodName, int [] rc, String path) throws Exception {
+
+        URL url = getURL(path);
+        Socket s = new Socket(url.getHost(), url.getPort());
+        BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
+        String requestLine = methodName + " /" + contextPath + path + " HTTP/1.1\r\n";
+        writer.write(requestLine);
+        writer.write("Host: " + url.getHost() + ":" + url.getPort() + "\r\n");
+        writer.write("User-Agent: systest-client\r\n");
+        writer.write("Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\n");
+        writer.write("Connection: close\r\n");
+        writer.write("\r\n");
+        writer.flush();
+        BufferedReader reader = new BufferedReader(new InputStreamReader(s.getInputStream()));
+        String cur = null;
+        StringBuilder builder = new StringBuilder();
+        rc[0] = -1;
+        while (null != (cur = reader.readLine())) {
+            if (-1 == rc[0]) {
+                String [] tokens = cur.split("\\s");
+                rc[0] = Integer.valueOf(tokens[1]);
+            }
+            builder.append(cur).append("\n");
+        }
+        writer.close();
+
+        
+        return builder.toString();
+    }
+
+
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/systest/implicitnav/ImplicitNavigationITCase.java b/test/servlet30/systest/src/test/java/com/sun/faces/systest/implicitnav/ImplicitNavigationITCase.java
new file mode 100644
index 0000000..c522bba
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/systest/implicitnav/ImplicitNavigationITCase.java
@@ -0,0 +1,227 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.implicitnav;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import com.sun.faces.htmlunit.HtmlUnitFacesITCase;
+import com.gargoylesoftware.htmlunit.FailingHttpStatusCodeException;
+import com.gargoylesoftware.htmlunit.html.HtmlButtonInput;
+import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
+
+public class ImplicitNavigationITCase extends HtmlUnitFacesITCase {
+
+
+    public ImplicitNavigationITCase(String name) {
+           super(name);
+       }
+
+       /**
+        * Set up instance variables required by this test case.
+        */
+       public void setUp() throws Exception {
+           super.setUp();
+       }
+
+
+       /**
+        * Return the tests included in this test suite.
+        */
+       public static Test suite() {
+           return (new TestSuite(ImplicitNavigationITCase.class));
+       }
+
+
+       /**
+        * Tear down instance variables required by this test case.
+        */
+       public void tearDown() {
+           super.tearDown();
+       }
+
+
+       // ------------------------------------------------------------ Test Methods
+
+       public void testImplicitNavigation() throws Exception {
+
+           HtmlPage page = getPage("/faces/implicitnav/page01.xhtml");
+
+           // Assert that the navCase getters work correctly
+           String text = page.asText();
+           assertTrue(-1 != text.indexOf("/jsf-systest/faces/implicitnav/page01.xhtml"));
+           assertTrue(-1 != text.indexOf("/jsf-systest/implicitnav/page01.xhtml"));
+           // Make sure we're on the expected page
+           assertTrue(-1 != text.indexOf("[page01]"));
+
+           // click the page02 button
+           HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("page02");
+           page = button.click();
+           text = page.asText();
+           // Make sure we're on the expected page
+           assertTrue(-1 != text.indexOf("[page02]"));
+
+           // click the page01 button to go back to page01
+           button = (HtmlSubmitInput) page.getElementById("page01");
+           page = button.click();
+           text = page.asText();
+           // Make sure we're on the expected page
+           assertTrue(-1 != text.indexOf("[page01]"));
+
+           // go back again to page02
+           button = (HtmlSubmitInput) page.getElementById("page02");
+           page = button.click();
+           text = page.asText();
+           // Make sure we're on the expected page
+           assertTrue(-1 != text.indexOf("[page02]"));
+
+           // go forward to page03
+           button = (HtmlSubmitInput) page.getElementById("page03");
+           page = button.click();
+           text = page.asText();
+           // Make sure we're on the expected page
+           assertTrue(-1 != text.indexOf("[page03]"));
+
+           // click the page02 button to go back to page02
+           button = (HtmlSubmitInput) page.getElementById("page02");
+           page = button.click();
+           text = page.asText();
+           // Make sure we're on the expected page
+           assertTrue(-1 != text.indexOf("[page02]"));
+
+           // go forward to page03
+           button = (HtmlSubmitInput) page.getElementById("page03");
+           page = button.click();
+           text = page.asText();
+           // Make sure we're on the expected page
+           assertTrue(-1 != text.indexOf("[page03]"));
+
+           // go forward to page04.  This uses a redirect
+           button = (HtmlSubmitInput) page.getElementById("page04");
+           client.setRedirectEnabled(false);
+           boolean exceptionThrown = false;
+           try {
+               page = button.click();
+           } catch (FailingHttpStatusCodeException fhsce) {
+               exceptionThrown = true;
+               assertEquals(302, fhsce.getStatusCode());
+           }
+           assertTrue(exceptionThrown);
+           client.setRedirectEnabled(true);
+           page = button.click();
+           text = page.asText();
+           // Make sure we're on the expected page
+           assertTrue(-1 != text.indexOf("This is the last page."));
+
+
+
+
+       }
+
+
+       public void testImplicitNavigationWithredirect() throws Exception {
+
+           HtmlPage page = getPage("/faces/implicitnav/implicitNavRedirect.xhtml");
+           String text;
+           final String SEARCH_TEXT = "SEARCH_TEXT";
+
+           // case 1, h:button, make sure the input value is lost.
+           HtmlTextInput input = (HtmlTextInput) page.getElementById("input");
+           input.setValueAttribute(SEARCH_TEXT);
+           HtmlButtonInput buttonButton = (HtmlButtonInput) page.getElementById("httpGet");
+
+           page = buttonButton.click();
+           text = page.asText();;
+           assertTrue(!text.contains(SEARCH_TEXT));
+
+           // case 2 h:commandButton that does redirect.  Make sure a redirect is
+           // performed and the value is lost.
+           client.setRedirectEnabled(false);
+           boolean exceptionThrown = false;
+           page = getPage("/faces/implicitnav/implicitNavRedirect.xhtml");
+           input = (HtmlTextInput) page.getElementById("input");
+           input.setValueAttribute(SEARCH_TEXT);
+           HtmlSubmitInput submitButton = (HtmlSubmitInput) page.getElementById("httpPostRedirect");
+           try {
+               page = submitButton.click();
+           } catch (FailingHttpStatusCodeException e) {
+               assertEquals(302, e.getStatusCode());
+               exceptionThrown = true;
+           }
+           assertTrue(exceptionThrown);
+           client.setRedirectEnabled(true);
+           page = submitButton.click();
+           text = page.asText();;
+           assertTrue(!text.contains(SEARCH_TEXT));
+
+           // case 3 h:commandButton with empty query string
+           page = getPage("/faces/implicitnav/implicitNavRedirect.xhtml");
+           input = (HtmlTextInput) page.getElementById("input");
+           input.setValueAttribute(SEARCH_TEXT);
+           submitButton = (HtmlSubmitInput) page.getElementById("httpPostInvalidQueryString");
+           page = submitButton.click();
+           text = page.asText();
+           assertTrue(text.contains(SEARCH_TEXT));
+           if (text.contains("Project Stage: Development")) {
+            assertTrue(text.contains("Invalid query string in outcome \'implicitNavRedirect02?\'"));
+           }
+           // case 4: h:commandButton, regular post.
+           page = getPage("/faces/implicitnav/implicitNavRedirect.xhtml");
+           input = (HtmlTextInput) page.getElementById("input");
+           input.setValueAttribute(SEARCH_TEXT);
+           submitButton = (HtmlSubmitInput) page.getElementById("httpPost");
+           page = submitButton.click();
+           text = page.asText();
+           assertTrue(text.contains(SEARCH_TEXT));
+
+       }
+
+       public void testImplicitNavEmptyString() throws Exception {
+           HtmlPage page = getPage("/faces/implicitnav/implicitNavEmptyString.xhtml");
+           HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("button");
+           page = button.click();
+           assertTrue(page.asText().contains("Implicit Navigation with empty string action"));
+
+
+       }
+
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/systest/jsp/config/ConfigITCase.java b/test/servlet30/systest/src/test/java/com/sun/faces/systest/jsp/config/ConfigITCase.java
new file mode 100644
index 0000000..ede52cf
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/systest/jsp/config/ConfigITCase.java
@@ -0,0 +1,71 @@
+
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.jsp.config;
+
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.sun.faces.htmlunit.HtmlUnitFacesITCase;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+
+
+public class ConfigITCase extends HtmlUnitFacesITCase {
+
+
+    public ConfigITCase(String name) {
+        super(name);
+    }
+
+    public static Test suite() {
+        return (new TestSuite(ConfigITCase.class));
+    }
+
+    public void test01() throws Exception {
+        HtmlPage page = getPage("/faces/config01.jsp");
+        assertTrue(page.asText().matches("(?s).*config01.jsp PASSED.*"));
+    }
+
+    public void test02() throws Exception {
+        HtmlPage page = getPage("/faces/factoryFinder.jsp");
+        assertTrue(page.asXml().matches("(?s).*InjectionApplicationFactory InjectionFacesContextFactory LifecycleFactoryWrapper RenderKitFactoryWrapper.*"));
+    }
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/systest/jsp/converter/ConverterITCase.java b/test/servlet30/systest/src/test/java/com/sun/faces/systest/jsp/converter/ConverterITCase.java
new file mode 100644
index 0000000..cd4b2eb
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/systest/jsp/converter/ConverterITCase.java
@@ -0,0 +1,69 @@
+
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.jsp.converter;
+
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.sun.faces.htmlunit.HtmlUnitFacesITCase;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+
+
+public class ConverterITCase extends HtmlUnitFacesITCase {
+
+
+    public ConverterITCase(String name) {
+        super(name);
+    }
+
+    public static Test suite() {
+        return (new TestSuite(ConverterITCase.class));
+    }
+
+    public void test05() throws Exception {
+
+        HtmlPage page = getPage("/faces/converter05.jsp");
+        assertTrue(page.asXml().matches("(?s).*<body>\\s*<span\\s*id=\\\"outputDatetime1\\\">\\s*7/10/96\\s*3:31:31\\s*PM\\s*EDT\\s*</span>\\s*<span\\s*id=\\\"outputDatetime2\\\">\\s*7/10/96\\s*3:31:31\\s*PM\\s*EDT\\s*</span>\\s*<span\\s*id=\\\"outputDatetime3\\\">\\s*7/10/96\\s*3:31:31\\s*PM\\s*EDT\\s*</span>\\s*<span\\s*id=\\\"outputNumber1\\\">\\s*10.000\\s*</span>\\s*<span\\s*id=\\\"outputNumber2\\\">\\s*10,000\\s*</span>\\s*<span\\s*id=\\\"outputNumber3\\\">\\s*10,000\\s*</span>\\s* [...]
+    }
+
+
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/systest/jsp/htmltaglib/HtmlTaglibITCase.java b/test/servlet30/systest/src/test/java/com/sun/faces/systest/jsp/htmltaglib/HtmlTaglibITCase.java
new file mode 100644
index 0000000..cb32962
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/systest/jsp/htmltaglib/HtmlTaglibITCase.java
@@ -0,0 +1,102 @@
+
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.jsp.htmltaglib;
+
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.sun.faces.htmlunit.HtmlUnitFacesITCase;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+
+
+public class HtmlTaglibITCase extends HtmlUnitFacesITCase {
+
+
+    public HtmlTaglibITCase(String name) {
+        super(name);
+        addExclusion(Container.TOMCAT6, "test04");
+        addExclusion(Container.TOMCAT7, "test04");
+        addExclusion(Container.WLS_10_3_4_NO_CLUSTER, "test04");
+
+
+    }
+
+    public static Test suite() {
+        return (new TestSuite(HtmlTaglibITCase.class));
+    }
+
+    public void test01() throws Exception {
+
+        HtmlPage page = getPage("/faces/taglib/commandButton_test.jsp");
+        assertTrue(page.asXml().matches("(?s).*\\s*<body>\\s*<form\\s*id=\"form01\"\\s*name=\"form01\"\\s*method=\"post\"\\saction=\"/jsf-systest/faces/taglib/commandButton_test.jsp.*enctype=\"application/x-www-form-urlencoded\">\\s*<input\\s*type=\"hidden\"\\s*name=\"form01\"\\s*value=\"form01\"\\s*/>\\s*<input\\s*type=\"hidden\"\\s*name=\"javax.faces.ViewState\"\\s*id=\".*javax.faces.ViewState.*\"\\s*value=\".*\"\\s*/>\\s*<input\\s*id=\"form01:button01\"\\s*type=\"submit\"\\s*name=\"fo [...]
+
+    }
+
+    public void test02() throws Exception {
+
+        HtmlPage page = getPage("/faces/taglib/commandButton_param_test.jsp");
+        assertTrue(page.asXml().matches("(?s).*\\s*<body>\\s*<form\\s*id=\"form01\"\\s*name=\"form01\"\\s*method=\"post\"\\saction=\"/jsf-systest/faces/taglib/commandButton_param_test.jsp.*enctype=\"application/x-www-form-urlencoded\">\\s*<input\\s*type=\"hidden\"\\s*name=\"form01\"\\s*value=\"form01\"\\s*/>\\s*<input\\s*type=\"hidden\"\\s*name=\"javax.faces.ViewState\"\\s*id=\".*javax.faces.ViewState.*\"\\s*value=\".*\"\\s*/>\\s*<script\\s*type=\"text/javascript\"\\s*src=\"/jsf-systest/ [...]
+
+    }
+
+    public void test03() throws Exception {
+
+        HtmlPage page = getPage("/faces/taglib/commandLink_test.jsp");
+        assertTrue(page.asXml().matches("(?s).*\\s*<body>\\s*<form\\s*id=\"form01\"\\s*name=\"form01\"\\s*method=\"post\"\\saction=\"/jsf-systest/faces/taglib/commandLink_test.jsp.*enctype=\"application/x-www-form-urlencoded\">\\s*<input\\s*type=\"hidden\"\\s*name=\"form01\"\\s*value=\"form01\"\\s*/>\\s*<input\\s*type=\"hidden\"\\s*name=\"javax.faces.ViewState\"\\s*id=\".*javax.faces.ViewState.*\"\\s*value=\".*\"\\s*/>\\s*<script\\s*type=\"text/javascript\"\\s*src=\"/jsf-systest/faces/ja [...]
+
+
+    }
+
+    public void test04() throws Exception {
+
+        HtmlPage page = getPage("/faces/taglib/commandLink_multiform_test.jsp");
+        assertTrue(page.asXml().matches("(?s).*\\s*<body>\\s*<form\\s*id=\"form01\"\\s*name=\"form01\".*action.*commandLink_multiform_test.jsp.*<input\\s*type=\"hidden\"\\s*name=\"form01\"\\s*value=\"form01\"\\s*/>\\s*<input\\s*type=\"hidden\"\\s*name=\"javax.faces.ViewState.*<script.*src=.*jsf.js.*<a\\s*id=\"form01:Link1.*onclick=\"mojarra.jsfcljs\\(document.getElementById.*form01.*form01:Link1.*form01:Link1.*;param1.*value1.*param2.*value2.*return false.*Link1.*</a>\\s*<a\\s*id=\"form0 [...]
+
+    }
+
+    public void test05() throws Exception {
+
+        HtmlPage page = getPage("/faces/taglib/attributeTest.jsp");
+        assertTrue(page.asXml().matches("(?s).*\\s*<body>.*f:attribute.*<span\\s*style=\"color:\\s*red\">.*This Should Be Red.*New String Value.*"));
+
+    }
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/systest/jsp/interweaving/InterweavingITCase.java b/test/servlet30/systest/src/test/java/com/sun/faces/systest/jsp/interweaving/InterweavingITCase.java
new file mode 100644
index 0000000..47b245c
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/systest/jsp/interweaving/InterweavingITCase.java
@@ -0,0 +1,168 @@
+
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.jsp.interweaving;
+
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.sun.faces.htmlunit.HtmlUnitFacesITCase;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+
+
+public class InterweavingITCase extends HtmlUnitFacesITCase {
+
+
+    public InterweavingITCase(String name) {
+        super(name);
+        addExclusion(Container.WLS_10_3_4_NO_CLUSTER, "test07");
+        addExclusion(Container.WLS_10_3_4_NO_CLUSTER, "test13");
+        addExclusion(Container.WLS_12_1_1_NO_CLUSTER, "test07");
+        addExclusion(Container.WLS_12_1_1_NO_CLUSTER, "test13");
+    }
+
+    public static Test suite() {
+        return (new TestSuite(InterweavingITCase.class));
+    }
+
+    public void test01() throws Exception {
+
+        HtmlPage page = getPage("/faces/interweaving01.jsp");
+        assertTrue(page.asText().matches("(?s).*Begin\\s*test\\s*jsp include without verbatim\\s*interweaving\\s*works\\s*well!!\\s*End\\s*test\\s*jsp include without verbatim.*"
+));
+    }
+
+    public void test02() throws Exception {
+
+        HtmlPage page = getPage("/faces/interweaving02.jsp");
+        assertTrue(page.asText().matches("(?s).*Begin\\s*test\\s*jstl import without verbatim\\s*interweaving\\s*works\\s*well!!\\s*End\\s*test\\s*jstl import without verbatim.*"));
+    }
+
+    public void test03() throws Exception {
+
+        HtmlPage page = getPage("/faces/interweaving03.jsp");
+        assertTrue(page.asXml().matches("(?s).*<table>\\s*<tbody>\\s*<tr>\\s*<td>\\s*Row 1\\s*</td>\\s*</tr>\\s*<tr>\\s*<td>\\s*Row 2\\s*</td>\\s*</tr>\\s*<tr>\\s*<td>\\s*Row 3\\s*</td>\\s*</tr>\\s*</tbody>\\s*</table>\\s*.*"));
+    }
+
+    public void test04() throws Exception {
+
+        HtmlPage page = getPage("/faces/interweaving04.jsp");
+        assertTrue(page.asXml().matches("(?s).*\\[First\\]\\[Second\\]\\[Third\\].*"));
+    }
+
+    public void test05() throws Exception {
+
+        HtmlPage page = getPage("/faces/interweaving05.jsp");
+        assertTrue(page.asText().matches("(?s).*Begin jstl-choose test without id\\[FIRST\\]\\[SECOND\\]End jstl-choose test without id.*"));
+    }
+
+    public void test06() throws Exception {
+
+        HtmlPage page = getPage("/faces/interweaving06.jsp");
+        assertTrue(page.asXml().matches("(?s).*<body>\\s*<p>\\s*Begin\\s*test\\s*jsp:include\\s*without\\s*subview\\s*and\\s*iterator\\s*tag\\s*in\\s*included\\s*page\\s*</p>\\s*<br/>\\s*<p>\\s*<br/>\\s*Array\\[0\\]:\\s*This\\s*component\\s*has\\s*no\\s*ID\\s*<br/>\\s*<input\\s*type=\"text\"\\s*name=\".*\"\\s*value=\"This\\s*component\\s*has\\s*no\\s*ID\\s*\"/>\\s*<br/>\\s*Array\\[1\\]:\\s*This\\s*component\\s*has\\s*no\\s*ID\\s*<br/>\\s*<input\\s*type=\"text\"\\s*name=\".*\"\\s*value=\" [...]
+    }
+
+    public void test07() throws Exception {
+
+//        HtmlPage page = getPage("/faces/interweaving07.jsp");
+//        assertTrue(page.asXml().matches("(?s).*\\s*<body>\\s*<p>\\s*Begin\\s*test\\s*<c:import>\\s*with\\s*iterator\\s*tag\\s*in\\s*imported\\s*page\\s*</p>\\s*<br/>\\s*<p>\\s*<br/>\\s*Array\\[0\\]:\\s*This\\s*component\\s*has\\s*no\\s*ID\\s*<br/>\\s*<input\\s*type=\"text\"\\s*name=\".*\"\\s*value=\"This\\s*component\\s*has\\s*no\\s*ID\\s*\"/>\\s*<br/>\\s*Array\\[1\\]:\\s*This\\s*component\\s*has\\s*no\\s*ID\\s*<br/>\\s*<input\\s*type=\"text\"\\s*name=\".*\"\\s*value=\"This\\s*co [...]
+    }
+
+    public void test08() throws Exception {
+
+        // Make multiple requests to the same page and ensure the response is 200
+
+        HtmlPage page1 = getPage("/faces/interweaving08.jsp");
+        assertTrue(page1.asXml().matches("(?s).*\\s*<body>\\s*<form\\s*id=\"form\".*<input\\s*type=\"hidden\"\\s*name=\"form\".*<input\\s*type=\"hidden\"\\s*name=\"javax.faces.ViewState\".*<table>\\s*<tbody>\\s*<tr>\\s*<td>\\s*ciao\\s*Value\\s*</td>\\s*</tr>\\s*</tbody>\\s*</table>\\s*</form>\\s*</body>.*"));
+
+        HtmlPage page2 = getPage("/faces/interweaving08.jsp");
+        assertTrue(page2.asXml().matches("(?s).*\\s*<body>\\s*<form\\s*id=\"form\".*<input\\s*type=\"hidden\"\\s*name=\"form\".*<input\\s*type=\"hidden\"\\s*name=\"javax.faces.ViewState\".*<table>\\s*<tbody>\\s*<tr>\\s*<td>\\s*ciao\\s*Value\\s*</td>\\s*</tr>\\s*</tbody>\\s*</table>\\s*</form>\\s*</body>.*"));
+
+        HtmlPage page3 = getPage("/faces/interweaving08.jsp");
+        assertTrue(page3.asXml().matches("(?s).*\\s*<body>\\s*<form\\s*id=\"form\".*<input\\s*type=\"hidden\"\\s*name=\"form\".*<input\\s*type=\"hidden\"\\s*name=\"javax.faces.ViewState\".*<table>\\s*<tbody>\\s*<tr>\\s*<td>\\s*ciao\\s*Value\\s*</td>\\s*</tr>\\s*</tbody>\\s*</table>\\s*</form>\\s*</body>.*"));
+    }
+
+    public void test09() throws Exception {
+
+        // Make multiple requests to the same page and ensure the response is 200
+
+        HtmlPage page1 = getPage("/faces/interweaving09.jsp");
+        assertTrue(page1.asXml().matches("(?s).*\\s*<body>\\s*<form\\s*id=\"form\".*<input\\s*type=\"hidden\"\\s*name=\"form\".*<input\\s*type=\"hidden\"\\s*name=\"javax.faces.ViewState\".*<table>\\s*<tbody>\\s*<tr>\\s*<td>\\s*Value\\s*ciao\\s*Value\\s*</td>\\s*</tr>\\s*</tbody>\\s*</table>\\s*</form>\\s*</body>.*"));
+
+        HtmlPage page2 = getPage("/faces/interweaving09.jsp");
+        assertTrue(page2.asXml().matches("(?s).*\\s*<body>\\s*<form\\s*id=\"form\".*<input\\s*type=\"hidden\"\\s*name=\"form\".*<input\\s*type=\"hidden\"\\s*name=\"javax.faces.ViewState\".*<table>\\s*<tbody>\\s*<tr>\\s*<td>\\s*Value\\s*ciao\\s*Value\\s*</td>\\s*</tr>\\s*</tbody>\\s*</table>\\s*</form>\\s*</body>.*"));
+
+        HtmlPage page3 = getPage("/faces/interweaving09.jsp");
+        assertTrue(page3.asXml().matches("(?s).*\\s*<body>\\s*<form\\s*id=\"form\".*<input\\s*type=\"hidden\"\\s*name=\"form\".*<input\\s*type=\"hidden\"\\s*name=\"javax.faces.ViewState\".*<table>\\s*<tbody>\\s*<tr>\\s*<td>\\s*Value\\s*ciao\\s*Value\\s*</td>\\s*</tr>\\s*</tbody>\\s*</table>\\s*</form>\\s*</body>.*"));
+    }
+
+    public void test10() throws Exception {
+
+        // Make multiple requests to the same page and ensure the response is 200
+
+        HtmlPage page1 = getPage("/faces/interweaving10.jsp");
+        assertTrue(page1.asXml().matches("(?s).*\\s*<body>\\s*<form\\s*id=\"form\".*<input\\s*type=\"hidden\"\\s*name=\"form\".*<input\\s*type=\"hidden\"\\s*name=\"javax.faces.ViewState\".*<table>\\s*<tbody>\\s*<tr>\\s*<td>\\s*Value\\s*ciao\\s*</td>\\s*</tr>\\s*</tbody>\\s*</table>\\s*</form>\\s*</body>.*"));
+
+        HtmlPage page2 = getPage("/faces/interweaving10.jsp");
+        assertTrue(page2.asXml().matches("(?s).*\\s*<body>\\s*<form\\s*id=\"form\".*<input\\s*type=\"hidden\"\\s*name=\"form\".*<input\\s*type=\"hidden\"\\s*name=\"javax.faces.ViewState\".*<table>\\s*<tbody>\\s*<tr>\\s*<td>\\s*Value\\s*ciao\\s*</td>\\s*</tr>\\s*</tbody>\\s*</table>\\s*</form>\\s*</body>.*"));
+
+        HtmlPage page3 = getPage("/faces/interweaving10.jsp");
+        assertTrue(page3.asXml().matches("(?s).*\\s*<body>\\s*<form\\s*id=\"form\".*<input\\s*type=\"hidden\"\\s*name=\"form\".*<input\\s*type=\"hidden\"\\s*name=\"javax.faces.ViewState\".*<table>\\s*<tbody>\\s*<tr>\\s*<td>\\s*Value\\s*ciao\\s*</td>\\s*</tr>\\s*</tbody>\\s*</table>\\s*</form>\\s*</body>.*"));
+    }
+
+    public void test11() throws Exception {
+
+        HtmlPage page = getPage("/faces/interweaving11.jsp");
+        assertTrue(page.asXml().matches("(?s).*\\s*<body>\\s*<form.*<input\\s*type=\"hidden\".*<input\\s*type=\"hidden\"\\s*name=\"javax.faces.ViewState\".*<script.*jsf.js.*<a\\s*href.*>\\s*one\\s*</a>\\s*<a\\s*href.*>\\s*two\\s*</a>\\s*<a\\s*href.*>\\s*three\\s*</a>\\s*</form>\\s*</body>.*"));
+    }
+
+    public void test12() throws Exception {
+
+        HtmlPage page = getPage("/faces/interweaving12.jsp");
+        assertTrue(page.asXml().matches("(?s).*\\s*<body>\\s*<form.*<input\\s*type=\"hidden\".*<input\\s*type=\"hidden\"\\s*name=\"javax.faces.ViewState\".*this should be before the button\\s*<input.*type=\"submit\".*value=\"commandButton 1\"\\s*/>\\s*</form>\\s*</body>.*"));
+    }
+
+    public void test13() throws Exception {
+
+//        HtmlPage page = getPage("/faces/include-import-interweaving.jsp");
+//        assertTrue(page.asXml().matches("(?s).*\\s*<body.*<form.*<input\\s*type=\"hidden\".*<input\\s*type=\"hidden\"\\s*name=\"javax.faces.ViewState\".*Outer Template Text followed by\\s*<span\\s*id=\"form:outerComponent\">\\s*outer component\\s*</span>.*Subview on the outside only with jsp:include:.*Subview 1: Inner template text followed by\\s*<span\\s*id=\"form:subview01:innerComponent1\">\\s*inner component 1\\s*</span>.*Subview 1: Inner template 2 text followed by\\s*<span\\s*id= [...]
+    }
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/systest/jsp/managed/ManagedITCase.java b/test/servlet30/systest/src/test/java/com/sun/faces/systest/jsp/managed/ManagedITCase.java
new file mode 100644
index 0000000..6f0b193
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/systest/jsp/managed/ManagedITCase.java
@@ -0,0 +1,67 @@
+
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.jsp.managed;
+
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.sun.faces.htmlunit.HtmlUnitFacesITCase;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+
+
+public class ManagedITCase extends HtmlUnitFacesITCase {
+
+
+    public ManagedITCase(String name) {
+        super(name);
+    }
+
+    public static Test suite() {
+        return (new TestSuite(ManagedITCase.class));
+    }
+
+    public void test04() throws Exception {
+        HtmlPage page = getPage("/faces/managed04.jsp");
+        assertTrue(page.asText().matches("(?s).*one two three fourfivesixseveneight.*"));
+    }
+
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/systest/jsp/regressions/RegressionsIT.java b/test/servlet30/systest/src/test/java/com/sun/faces/systest/jsp/regressions/RegressionsIT.java
new file mode 100644
index 0000000..6f47337
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/systest/jsp/regressions/RegressionsIT.java
@@ -0,0 +1,79 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.systest.jsp.regressions;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import java.util.regex.Pattern;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class RegressionsIT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testAreaTextRowsAttrTest() throws Exception {
+        webClient.setThrowExceptionOnFailingStatusCode(false);
+        HtmlPage page = webClient.getPage(webUrl + "faces/regression/AreaTextRowsAttrTest.jsp");
+        assertTrue(Pattern.matches("(?s).*<html>\\s*<head>\\s*<title>\\s*Text\\s*Area\\s*Row\\s*Attribute\\s*Regression\\s*Test\\s*</title>\\s*</head>\\s*<body>\\s*<textarea\\s*name=\".*\"\\s*rows=\"30\">\\s*</textarea>\\s*</body>\\s*</html>.*", page.asXml()));
+    }
+
+    @Test
+    public void testSelectOneManySizeAttrTest() throws Exception {
+        webClient.setThrowExceptionOnFailingStatusCode(false);
+        HtmlPage page = webClient.getPage(webUrl + "faces/regression/SelectOneManySizeAttrTest.jsp");
+        assertTrue(Pattern.matches("(?s).*<html>\\s*<head>\\s*<title>\\s*Select.One,Many.ListBox\\s*Size\\s*Attribute\\s*Test\\s*</title>\\s*</head>\\s*<body>\\s*<select\\s*name=\".*\"\\s*size=\"5\">\\s*<option\\s*value=\"val1\">\\s*val1\\s*</option>\\s*</select>\\s*<select\\s*name=\".*\"\\s*multiple=\"multiple\"\\s*size=\"5\">\\s*<option\\s*value=\"val1\">\\s*val1\\s*</option>\\s*</select>\\s*</body>\\s*</html>.*", page.asXml()));
+    }
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/systest/jsp/regressions/RegressionsITCase.java b/test/servlet30/systest/src/test/java/com/sun/faces/systest/jsp/regressions/RegressionsITCase.java
new file mode 100644
index 0000000..9931a6e
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/systest/jsp/regressions/RegressionsITCase.java
@@ -0,0 +1,68 @@
+
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.jsp.regressions;
+
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.sun.faces.htmlunit.HtmlUnitFacesITCase;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+
+
+public class RegressionsITCase extends HtmlUnitFacesITCase {
+
+
+    public RegressionsITCase(String name) {
+        super(name);
+    }
+
+    public static Test suite() {
+        return (new TestSuite(RegressionsITCase.class));
+    }
+
+    public void test04() throws Exception {
+        HtmlPage page = getPage("/faces/regression/InjectUserDefJS.jsp");
+        assertTrue(page.asXml().matches("(?s).*\\s*<body>\\s*<form.*<input\\s*type=\"hidden\".*<input\\s*type=\"hidden\"\\s*name=\"javax.faces.ViewState\".*<script.*jsf.js.*<a\\s*href.*Are you sure.*>\\s*Link\\s*</a>\\s*<input\\s*type=\"submit\".*value=\"Button\"\\s*onclick=\"alert.*Are you sure.*</form>\\s*</body>.*"));
+
+    }
+
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/systest/jsp/subview/SubviewITCase.java b/test/servlet30/systest/src/test/java/com/sun/faces/systest/jsp/subview/SubviewITCase.java
new file mode 100644
index 0000000..2da87ee
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/systest/jsp/subview/SubviewITCase.java
@@ -0,0 +1,97 @@
+
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.jsp.subview;
+
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.sun.faces.htmlunit.HtmlUnitFacesITCase;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+
+
+public class SubviewITCase extends HtmlUnitFacesITCase {
+
+
+    public SubviewITCase(String name) {
+        super(name);
+    }
+
+    public static Test suite() {
+        return (new TestSuite(SubviewITCase.class));
+    }
+
+    public void test01() throws Exception {
+
+        HtmlPage page = getPage("/faces/subview01.jsp");
+        assertTrue(page.asXml().matches("(?s).*<body>\\s*Begin\\s*test\\s*<c:import>\\s*with\\s*subview\\s*tag\\s*in\\s*imported\\s*page\\s*<p>\\s*foo01\\s*</p>\\s*<p>\\s*subview01\\s*</p>\\s*<p>\\s*bar01\\s*</p>\\s*<p>\\s*End\\s*test\\s*<c:import>\\s*with\\s*subview\\s*tag\\s*in\\s*imported\\s*page\\s*</p>\\s*</body>.*"));
+    }
+
+    public void test02() throws Exception {
+
+        HtmlPage page = getPage("/faces/subview02.jsp");
+        assertTrue(page.asXml().matches("(?s).*<body>\\s*<p>\\s*Begin\\s*test\\s*<c:import>\\s*with\\s*subview\\s*tag\\s*in\\s*importing\\s*page\\s*</p>\\s*<p>\\s*foo02\\s*</p>\\s*<p>\\s*subview02\\s*</p>\\s*<p>\\s*bar02\\s*</p>\\s*<p>\\s*End\\s*test\\s*<c:import>\\s*with\\s*subview\\s*tag\\s*in\\s*importing\\s*page\\s*</p>\\s*</body>.*"));
+    }
+
+    public void test03() throws Exception {
+
+        HtmlPage page = getPage("/faces/subview03.jsp");
+        assertTrue(page.asXml().matches("(?s).*<body>\\s*<p>\\s*Begin\\s*test\\s*<c:include>\\s*with\\s*subview\\s*tag\\s*in\\s*included\\s*page\\s*</p>\\s*<p>\\s*foo01\\s*</p>\\s*<p>\\s*subview03\\s*</p>\\s*<p>\\s*bar01\\s*</p>\\s*<p>\\s*End\\s*test\\s*<c:include>\\s*with\\s*subview\\s*tag\\s*in\\s*included\\s*page\\s*</p>\\s*</body>.*"));
+    }
+
+    public void test04() throws Exception {
+
+        HtmlPage page = getPage("/faces/subview04.jsp");
+        assertTrue(page.asXml().matches("(?s).*\\s*<body>\\s*<p>\\s*\\[A\\]\\s*</p>\\s*<p>\\s*Begin\\s*test\\s*<c:include>\\s*with\\s*subview\\s*tag\\s*in\\s*including\\s*page\\s*</p>\\s*<p>\\s*bar01\\s*</p>\\s*<p>\\s*subview04\\s*</p>\\s*<p>\\s*bar02\\s*</p>\\s*<p>\\s*End\\s*test\\s*<c:include>\\s*with\\s*subview\\s*tag\\s*in\\s*including\\s*page\\s*</p>\\s*</body>.*"));
+    }
+
+    public void test05() throws Exception {
+
+        HtmlPage page = getPage("/faces/subview05.jsp");
+        assertTrue(page.asXml().matches("(?s).*<body>\\s*<p>\\s*Begin\\s*test\\s*jsp:include\\s*with\\s*subview\\s*and\\s*iterator\\s*tag\\s*in\\s*included\\s*page\\s*</p>\\s*<br/>\\s*<p>\\s*<br/>\\s*Array\\[0\\]:\\s*This\\s*component\\s*has\\s*no\\s*ID\\s*<br/>\\s*<input\\s*type=\"text\"\\s*name=\"subviewInner:.*\"\\s*value=\"This\\s*component\\s*has\\s*no\\s*ID\\s*\"/>\\s*<br/>\\s*Array\\[1\\]:\\s*This\\s*component\\s*has\\s*no\\s*ID\\s*<br/>\\s*<input\\s*type=\"text\"\\s*name=\"subvie [...]
+    }
+
+    public void test06() throws Exception {
+
+        HtmlPage page = getPage("/faces/subview06.jsp");
+        assertTrue(page.asXml().matches("(?s).*<body>\\s*<p>\\s*Begin\\s*test\\s*<c:import>\\s*with\\s*iterator\\s*tag\\s*in\\s*imported\\s*page\\s*</p>\\s*<br/>\\s*<p>\\s*<br/>\\s*Array\\[0\\]:\\s*This\\s*component\\s*has\\s*no\\s*ID\\s*<br/>\\s*<input\\s*type=\"text\"\\s*name=\"subviewOuter:subviewInner:.*\"\\s*value=\"This\\s*component\\s*has\\s*no\\s*ID\\s*\"/>\\s*<br/>\\s*Array\\[1\\]:\\s*This\\s*component\\s*has\\s*no\\s*ID\\s*<br/>\\s*<input\\s*type=\"text\"\\s*name=\"subvie [...]
+    }
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/systest/lifecycle/ManagedBeanLifecycleAnnotationITCase.java b/test/servlet30/systest/src/test/java/com/sun/faces/systest/lifecycle/ManagedBeanLifecycleAnnotationITCase.java
new file mode 100644
index 0000000..c3d1e29
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/systest/lifecycle/ManagedBeanLifecycleAnnotationITCase.java
@@ -0,0 +1,265 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.lifecycle;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import com.sun.faces.htmlunit.HtmlUnitFacesITCase;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+
+/**
+ * <p>Test Case for JSP Interoperability.</p>
+ */
+
+public class ManagedBeanLifecycleAnnotationITCase extends HtmlUnitFacesITCase {
+
+
+    // ------------------------------------------------------------ Constructors
+
+
+    /**
+     * Construct a new instance of this test case.
+     *
+     * @param name Name of the test case
+     */
+    public ManagedBeanLifecycleAnnotationITCase(String name) {
+        super(name);
+    }
+
+
+    // ------------------------------------------------------ Instance Variables
+
+
+    // ---------------------------------------------------- Overall Test Methods
+
+
+    /**
+     * Set up instance variables required by this test case.
+     */
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+
+
+    /**
+     * Return the tests included in this test suite.
+     */
+    public static Test suite() {
+        return (new TestSuite(ManagedBeanLifecycleAnnotationITCase.class));
+    }
+
+
+    /**
+     * Tear down instance variables required by this test case.
+     */
+    public void tearDown() {
+        super.tearDown();
+    }
+
+
+    // ------------------------------------------------- Individual Test Methods
+
+
+    public void testRequestLifecycle() throws Exception {
+        String text = null;
+        HtmlPage page = getPage("/faces/managed08.jsp");
+        HtmlSubmitInput button = (HtmlSubmitInput) 
+            page.getHtmlElementById("form:clearStatusMessage");
+        page = (HtmlPage) button.click();
+        text = page.asText();
+        Pattern pattern = null;
+        assertTrue(-1 != text.indexOf("requestBean PostConstruct: true"));
+        assertTrue(-1 != text.indexOf("requestBean PreDestroy: false"));
+        assertTrue(-1 != text.indexOf("sessionBean PostConstruct: true"));
+        assertTrue(-1 != text.indexOf("sessionBean PreDestroy: false"));
+        assertTrue(-1 != text.indexOf("applicationBean PostConstruct: true"));
+        assertTrue(-1 != text.indexOf("applicationBean PreDestroy: false"));
+        assertTrue(Pattern.matches("(?s).*-----------------.*bean: requestBean postConstructCalled: true.*",
+                text));
+        
+        button = (HtmlSubmitInput) 
+            page.getHtmlElementById("form:reload");
+        page = (HtmlPage) button.click();
+        text = page.asText();
+        assertTrue(Pattern.matches("(?s).*-----------------.*bean: requestBean postConstructCalled: true.*bean: requestBean preDestroyCalled: true.*-----------------.*bean: requestBean postConstructCalled: true.*",
+                text));
+        
+
+        button = (HtmlSubmitInput) 
+            page.getHtmlElementById("form:clearStatusMessage");
+        page = (HtmlPage) button.click();
+        button = (HtmlSubmitInput) 
+            page.getHtmlElementById("form:removeSessionBean");
+        page = (HtmlPage) button.click();
+        text = page.asText();
+        assertTrue(Pattern.matches("(?s).*-----------------.*bean: requestBean postConstructCalled: true.*bean: requestBean preDestroyCalled: true.*bean: sessionBean preDestroyCalled: true.*-----------------.*bean: requestBean postConstructCalled: true.*bean: sessionBean postConstructCalled: true.*",
+                text));
+
+        button = (HtmlSubmitInput)
+            page.getHtmlElementById("form:clearStatusMessage");
+        page = (HtmlPage) button.click();
+        button = (HtmlSubmitInput)
+            page.getHtmlElementById("form:removeSessionBean2");
+        page = (HtmlPage) button.click();
+        text = page.asText();
+        assertTrue(Pattern.matches("(?s).*-----------------.*bean: requestBean postConstructCalled: true.*bean: requestBean preDestroyCalled: true.*bean: sessionBean preDestroyCalled: true.*-----------------.*bean: requestBean postConstructCalled: true.*bean: sessionBean postConstructCalled: true.*",
+                text));
+        
+        button = (HtmlSubmitInput) 
+            page.getHtmlElementById("form:clearStatusMessage");
+        page = (HtmlPage) button.click();
+        button = (HtmlSubmitInput) 
+            page.getHtmlElementById("form:removeApplicationBean");
+        page = (HtmlPage) button.click();
+        text = page.asText();
+        assertTrue(Pattern.matches("(?s).*-----------------.*bean: requestBean postConstructCalled: true.*bean: requestBean preDestroyCalled: true.*bean: applicationBean preDestroyCalled: true.*-----------------.*bean: requestBean postConstructCalled: true.*bean: applicationBean postConstructCalled: true.*",
+                text));
+
+        button = (HtmlSubmitInput)
+            page.getHtmlElementById("form:clearStatusMessage");
+        page = (HtmlPage) button.click();
+        button = (HtmlSubmitInput)
+            page.getHtmlElementById("form:removeApplicationBean2");
+        page = (HtmlPage) button.click();
+        text = page.asText();
+        assertTrue(Pattern.matches("(?s).*-----------------.*bean: requestBean postConstructCalled: true.*bean: requestBean preDestroyCalled: true.*bean: applicationBean preDestroyCalled: true.*-----------------.*bean: requestBean postConstructCalled: true.*bean: applicationBean postConstructCalled: true.*",
+                text));
+
+        button = (HtmlSubmitInput) 
+            page.getHtmlElementById("form:clearStatusMessage");
+        page = (HtmlPage) button.click();
+        button = (HtmlSubmitInput) 
+            page.getHtmlElementById("form:invalidateSession");
+        page = (HtmlPage) button.click();
+        text = page.asText();
+        assertTrue(Pattern.matches("(?s).*-----------------.*bean: requestBean postConstructCalled: true.*bean: requestBean preDestroyCalled: true.*bean: sessionBean preDestroyCalled: true.*-----------------.*bean: requestBean postConstructCalled: true.*bean: sessionBean postConstructCalled: true.*",
+                text));
+
+        button = (HtmlSubmitInput) 
+            page.getHtmlElementById("form:clearStatusMessage");
+        page = (HtmlPage) button.click();
+        button = (HtmlSubmitInput) 
+            page.getHtmlElementById("form:clearSessionMapTwice");
+        page = (HtmlPage) button.click();
+        text = page.asText();
+        assertTrue(Pattern.matches("(?s).*-----------------.*bean: requestBean postConstructCalled: true.*bean: requestBean preDestroyCalled: true.*bean: sessionBean preDestroyCalled: true.*-----------------.*bean: requestBean postConstructCalled: true.*bean: sessionBean postConstructCalled: true.*",
+                text));
+
+        button = (HtmlSubmitInput)
+            page.getHtmlElementById("form:clearStatusMessage");
+        page = (HtmlPage) button.click();
+        button = (HtmlSubmitInput)
+            page.getHtmlElementById("form:replaceRequestBean");
+        page = (HtmlPage) button.click();
+        text = page.asText();
+        assertTrue(Pattern.matches("(?s).*-----------------.*bean: requestBean postConstructCalled: true.*bean: requestBean preDestroyCalled: true.*-----------------.*",
+                text));
+
+        button = (HtmlSubmitInput)
+            page.getHtmlElementById("form:clearStatusMessage");
+        page = (HtmlPage) button.click();
+        button = (HtmlSubmitInput)
+            page.getHtmlElementById("form:replaceRequestBean2");
+        button.click();
+        page = (HtmlPage) button.click();
+        text = page.asText();
+        assertTrue(Pattern.matches("(?s).*-----------------.*bean: requestBean postConstructCalled: true.*bean: requestBean preDestroyCalled: true.*-----------------.*bean: requestBean postConstructCalled: true.*bean: requestBean preDestroyCalled: true.*-----------------.*bean: requestBean postConstructCalled: true.*",
+                text));
+
+        button = (HtmlSubmitInput)
+            page.getHtmlElementById("form:removeSessionBean");
+        page = (HtmlPage) button.click();
+         button = (HtmlSubmitInput)
+            page.getHtmlElementById("form:clearStatusMessage");
+        page = (HtmlPage) button.click();
+        button = (HtmlSubmitInput)
+            page.getHtmlElementById("form:replaceSessionBean");
+        page = (HtmlPage) button.click();
+        text = page.asText();
+        assertTrue(Pattern.matches("(?s).*-----------------.*bean: requestBean postConstructCalled: true.*bean: requestBean preDestroyCalled: true.*bean: sessionBean preDestroyCalled: true.*-----------------.*bean: requestBean postConstructCalled: true.*",
+                text));
+
+        button = (HtmlSubmitInput)
+            page.getHtmlElementById("form:removeSessionBean");
+        page = (HtmlPage) button.click();
+         button = (HtmlSubmitInput)
+            page.getHtmlElementById("form:clearStatusMessage");
+        page = (HtmlPage) button.click();
+        button = (HtmlSubmitInput)
+            page.getHtmlElementById("form:replaceSessionBean2");
+        page = (HtmlPage) button.click();
+        text = page.asText();
+        assertTrue(Pattern.matches("(?s).*-----------------.*bean: requestBean postConstructCalled: true.*bean: requestBean preDestroyCalled: true.*-----------------.*bean: requestBean postConstructCalled: true.*",
+                text));
+
+        button = (HtmlSubmitInput)
+            page.getHtmlElementById("form:removeApplicationBean");
+        page = (HtmlPage) button.click();
+         button = (HtmlSubmitInput)
+            page.getHtmlElementById("form:clearStatusMessage");
+        page = (HtmlPage) button.click();
+        button = (HtmlSubmitInput)
+            page.getHtmlElementById("form:replaceApplicationBean");
+        page = (HtmlPage) button.click();
+        text = page.asText();
+        assertTrue(Pattern.matches("(?s).*-----------------.*bean: requestBean postConstructCalled: true.*bean: requestBean preDestroyCalled: true.*bean: applicationBean preDestroyCalled: true.*-----------------.*bean: requestBean postConstructCalled: true.*",
+                text));
+
+        button = (HtmlSubmitInput)
+            page.getHtmlElementById("form:removeApplicationBean");
+        page = (HtmlPage) button.click();
+         button = (HtmlSubmitInput)
+            page.getHtmlElementById("form:clearStatusMessage");
+        page = (HtmlPage) button.click();
+        button = (HtmlSubmitInput)
+            page.getHtmlElementById("form:replaceApplicationBean2");
+        page = (HtmlPage) button.click();
+        text = page.asText();
+        assertTrue(Pattern.matches("(?s).*-----------------.*bean: requestBean postConstructCalled: true.*bean: requestBean preDestroyCalled: true.*-----------------.*bean: requestBean postConstructCalled: true.*",
+                text));
+        
+    }
+
+
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/systest/projectstage/FormOmittedITCase.java b/test/servlet30/systest/src/test/java/com/sun/faces/systest/projectstage/FormOmittedITCase.java
new file mode 100644
index 0000000..e4c583d
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/systest/projectstage/FormOmittedITCase.java
@@ -0,0 +1,134 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.projectstage;
+
+import com.sun.faces.htmlunit.HtmlUnitFacesITCase;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+
+/**
+ * <p>Test Case for checking if form is omitted when there is a button/link in the page.</p>
+ */
+
+public class FormOmittedITCase extends HtmlUnitFacesITCase {
+
+
+    // ------------------------------------------------------------ Constructors
+
+
+    /**
+     * Construct a new instance of this test case.
+     *
+     * @param name Name of the test case
+     */
+    public FormOmittedITCase(String name) {
+        super(name);
+    }
+
+
+    // ------------------------------------------------------ Instance Variables
+
+
+    // ---------------------------------------------------- Overall Test Methods
+
+
+    /**
+     * Set up instance variables required by this test case.
+     */
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+
+
+    /**
+     * Return the tests included in this test suite.
+     */
+    public static Test suite() {
+        return (new TestSuite(FormOmittedITCase.class));
+    }
+
+
+    /**
+     * Tear down instance variables required by this test case.
+     */
+    public void tearDown() {
+        super.tearDown();
+    }
+
+
+    // ------------------------------------------------- Individual Test Methods
+
+
+    public void testFormOmitted() throws Exception {
+        HtmlPage page = getPage("/faces/standard/formomitted.xhtml");
+        String pageAsText = page.asXml();       
+        if (pageAsText.contains("Project Stage: Development")) {
+            assertTrue (pageAsText.contains("The form component needs to have a UIForm in its ancestry."));
+        }
+    }
+    
+    public void testFormNotOmitted() throws Exception {
+        HtmlPage page = getPage("/faces/standard/formnotomitted.xhtml");
+        String pageAsText = page.asXml();
+        if (pageAsText.contains("Project Stage: Development")) {
+            assertFalse (pageAsText.contains("The form component needs to have a UIForm in its ancestry. Suggestion: enclose the necessary components within <h:form>"));
+        }
+    }
+    
+    public void testFormOmittedForCC() throws Exception {
+        HtmlPage page = getPage("/faces/standard/formomittedforcc.xhtml");
+        String pageAsText = page.asXml();
+        if (pageAsText.contains("Project Stage: Development")) {
+            assertTrue (pageAsText.contains("The form component needs to have a UIForm in its ancestry."));
+        }
+    }
+
+    public void testFormOmittedFormlayoutTemplates() throws Exception {
+        HtmlPage page = getPage("/faces/standard/formlayouttemplates.xhtml");
+        String pageAsText = page.asXml();
+        if (pageAsText.contains("Project Stage: Development")) {
+            assertTrue (pageAsText.contains("Page defined content"));
+            assertFalse (pageAsText.contains("The form component needs to have a UIForm in its ancestry. Suggestion: enclose the necessary components within <h:form>"));
+        }
+    }
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/systest/projectstage/MetadataOmittedITCase.java b/test/servlet30/systest/src/test/java/com/sun/faces/systest/projectstage/MetadataOmittedITCase.java
new file mode 100644
index 0000000..9f46c3f
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/systest/projectstage/MetadataOmittedITCase.java
@@ -0,0 +1,119 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.projectstage;
+
+import com.sun.faces.htmlunit.HtmlUnitFacesITCase;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+
+/**
+ * <p>Test Case for checking if metadata is omitted when there is a UIViewAction or UIViewParameter
+ *  in the page.</p>
+ */
+
+public class MetadataOmittedITCase extends HtmlUnitFacesITCase {
+
+
+    // ------------------------------------------------------------ Constructors
+
+
+    /**
+     * Construct a new instance of this test case.
+     *
+     * @param name Name of the test case
+     */
+    public MetadataOmittedITCase(String name) {
+        super(name);
+    }
+
+
+    // ------------------------------------------------------ Instance Variables
+
+
+    // ---------------------------------------------------- Overall Test Methods
+
+
+    /**
+     * Set up instance variables required by this test case.
+     */
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+
+
+    /**
+     * Return the tests included in this test suite.
+     */
+    public static Test suite() {
+        return (new TestSuite(MetadataOmittedITCase.class));
+    }
+
+
+    /**
+     * Tear down instance variables required by this test case.
+     */
+    public void tearDown() {
+        super.tearDown();
+    }
+
+
+    // ------------------------------------------------- Individual Test Methods
+
+
+    public void testMetadataOmitted() throws Exception {
+        HtmlPage page = getPage("/faces/standard/metadataomitted.xhtml");
+        String pageAsText = page.asXml();
+        if (pageAsText.contains("Project Stage: Development")) {
+            assertTrue (pageAsText.contains("The metadata component needs to be nested within a f:metadata tag."));
+        }
+    }
+
+    public void testMetadataAndFormOmitted() throws Exception {
+        HtmlPage page = getPage("/faces/standard/metadataandformomitted.xhtml");
+        String pageAsText = page.asXml();       
+        if (pageAsText.contains("Project Stage: Development")) {
+            assertTrue (pageAsText.contains("The metadata component needs to be nested within a f:metadata tag."));
+            assertTrue (pageAsText.contains("The form component needs to have a UIForm in its ancestry."));
+        }
+    }
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/systest/projectstage/ProjectStageITCase.java b/test/servlet30/systest/src/test/java/com/sun/faces/systest/projectstage/ProjectStageITCase.java
new file mode 100644
index 0000000..6a3cdca
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/systest/projectstage/ProjectStageITCase.java
@@ -0,0 +1,70 @@
+
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.projectstage;
+
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.sun.faces.htmlunit.HtmlUnitFacesITCase;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+
+
+public class ProjectStageITCase extends HtmlUnitFacesITCase {
+
+
+    public ProjectStageITCase(String name) {
+        super(name);
+    }
+
+    public static Test suite() {
+        return (new TestSuite(ProjectStageITCase.class));
+    }
+
+    public void test01() throws Exception {
+
+        HtmlPage page = getPage("/faces/projectStage/formMessage.xhtml");
+        assertFalse("There should be no mention of missing form in this page",
+                page.asText().matches("(?s).*form.*component.*Suggestion.*"));
+    }
+
+
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/systest/resources/ResourceBundleELResolverIT.java b/test/servlet30/systest/src/test/java/com/sun/faces/systest/resources/ResourceBundleELResolverIT.java
new file mode 100644
index 0000000..e6f9571
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/systest/resources/ResourceBundleELResolverIT.java
@@ -0,0 +1,83 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.systest.resources;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import java.util.regex.Pattern;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class ResourceBundleELResolverIT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testResourceBundle01() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/resourceBundle01.jsp");
+        assertTrue(Pattern.matches("(?s).*Expression\\s*in\\s*raw\\s*JSP\\s*page\\s*is\\s*Value\\s*From\\s*ResourceBundle\\..*", page.asXml()));
+    }
+
+    @Test
+    public void testResourceBundle02() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/resourceBundle02.jsp");
+        assertTrue(Pattern.matches("(?s).*Value\\s*from\\s*Faces\\s*component\\s*is\\s*Value\\s*From\\s*ResourceBundle\\..*", page.asXml()));
+    }
+
+    @Test
+    public void testResourceBundle03() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/resourceBundle03.jsp");
+        assertTrue(Pattern.matches("(?s).*Values\\s*from\\s*Components:.*resourceBundle01:.*Value\\s*From\\s*ResourceBundle.*non\\s*existing\\s*resourceBundle:\\s*.br/.\\s*resourceBundle03:\\s*Value\\s*from\\s*ResourceBundle03.*", page.asXml()));
+    }
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/systest/resources/ResourceBundleELResolverITCase.java b/test/servlet30/systest/src/test/java/com/sun/faces/systest/resources/ResourceBundleELResolverITCase.java
new file mode 100644
index 0000000..b8d7dfe
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/systest/resources/ResourceBundleELResolverITCase.java
@@ -0,0 +1,151 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.resources;
+
+
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.sun.faces.htmlunit.HtmlUnitFacesITCase;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+
+public class ResourceBundleELResolverITCase extends HtmlUnitFacesITCase {
+
+
+    // ------------------------------------------------------------ Constructors
+
+
+    /**
+     * Construct a new instance of this test case.
+     *
+     * @param name Name of the test case
+     */
+    public ResourceBundleELResolverITCase(String name) {
+        super(name);
+    }
+
+
+    // ------------------------------------------------------ Instance Variables
+
+
+    // ---------------------------------------------------- Overall Test Methods
+
+
+    /**
+     * Set up instance variables required by this test case.
+     */
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+
+
+    /**
+     * Return the tests included in this test suite.
+     */
+    public static Test suite() {
+        return (new TestSuite(ResourceBundleELResolverITCase.class));
+    }
+
+
+    /**
+     * Tear down instance variables required by this test case.
+     */
+    public void tearDown() {
+        super.tearDown();
+    }
+
+
+    // ------------------------------------------------- Individual Test Methods
+
+
+    public void testResourceBundleELResolverGetType() throws Exception {
+        HtmlPage page = getPage("/faces/resourceBundle05.jsp");
+        String text = page.asXml();
+        assertTrue(text.contains("Result:\nclass java.util.ResourceBundle"));
+    }
+
+    public void testGetFeatureDescriptors() throws Exception {
+        HtmlPage page = getPage("/faces/resourceBundle05.jsp");
+        String text = page.asXml();
+
+        String [] unorderedListOfStringsToFindInPage = {
+            "Name: application displayName: application",
+            "Name: applicationScope displayName: applicationScope",
+            "Name: cookie displayName: cookie",
+            "Name: facesContext displayName: facesContext",
+            "Name: view displayName: view",
+            "Name: header displayName: header",
+            "Name: headerValues displayName: headerValues",
+            "Name: initParam displayName: initParam",
+            "Name: param displayName: param",
+            "Name: paramValues displayName: paramValues",
+            "Name: request displayName: request",
+            "Name: requestScope displayName: requestScope",
+            "Name: session displayName: session",
+            "Name: sessionScope displayName: sessionScope",
+            "Name: resourceBundle01 displayName: resourceBundle01 displayName",
+            "Name: resourceBundle03 displayName: resourceBundle03 displayName",
+            "Name: test1 displayName: test1"
+        };
+        boolean [] foundFlags = new boolean[unorderedListOfStringsToFindInPage.length];
+        int i,j;
+        for (i = 0; i < foundFlags.length; i++) {
+            foundFlags[i] = false;
+        }
+        String [] textSplitOnSpace = text.split("[[\\n][\\n\\r][\\u0085][\\u2028]]");
+        j = 0;
+        for (i = 0; i < textSplitOnSpace.length; i++) {
+            for (j = 0; j < unorderedListOfStringsToFindInPage.length; j++) {
+                if (textSplitOnSpace[i].contains(unorderedListOfStringsToFindInPage[j])) {
+                    foundFlags[j++] = true;
+                    break;
+                }
+            }
+        }
+        for (i = 0; i < foundFlags.length; i++) {
+            if (!foundFlags[i]) {
+                fail("Unable to find " + unorderedListOfStringsToFindInPage[i] +
+                     ".");
+            }
+        }
+
+    }
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/systest/state/DynamicStateITCase.java b/test/servlet30/systest/src/test/java/com/sun/faces/systest/state/DynamicStateITCase.java
new file mode 100644
index 0000000..b691bd8
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/systest/state/DynamicStateITCase.java
@@ -0,0 +1,212 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.state;
+
+import com.sun.faces.htmlunit.HtmlUnitFacesITCase;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+public class DynamicStateITCase extends HtmlUnitFacesITCase {
+
+    public DynamicStateITCase(String name) {
+        super(name);
+    }
+
+
+    /**
+     * Set up instance variables required by this test case.
+     */
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+
+
+    /**
+     * Return the tests included in this test suite.
+     */
+    public static Test suite() {
+        return (new TestSuite(DynamicStateITCase.class));
+    }
+
+
+    /**
+     * Tear down instance variables required by this test case.
+     */
+    public void tearDown() {
+        super.tearDown();
+    }
+
+
+    public void testDynamicDeletionPrefix() throws Exception {
+        doTestDynamicDeletion("/faces/state/dynamicDeletion.xhtml");
+    }
+    
+    public void testDynamicDeletionExtension() throws Exception {
+        doTestDynamicDeletion("/state/dynamicDeletion.faces");
+    }
+    
+    public void testDynamicAdditionPrefix() throws Exception {
+        doTestDynamicAddition("/faces/state/dynamicAddition.xhtml");
+    }
+    
+    public void testDynamicAdditionExtension() throws Exception {
+        doTestDynamicAddition("/state/dynamicAddition.faces");
+    }
+
+    /*
+     * Added for issue 1183.
+     */
+    public void testNestedComponentAddition() throws Exception {
+
+        HtmlPage page = getPage("/faces/state/dynamicAddition2.xhtml");
+        HtmlSubmitInput submit = (HtmlSubmitInput)
+              getInputContainingGivenId(page, "form:render");
+        page = submit.click();
+        HtmlTextInput input = (HtmlTextInput)
+              getInputContainingGivenId(page, "form:textInput");
+        assertNotNull(input);
+        assertEquals("default value", input.getValueAttribute());
+        input.setValueAttribute("new value");
+        submit = (HtmlSubmitInput)
+              getInputContainingGivenId(page, "form:render");
+        page = submit.click();
+        input = (HtmlTextInput)
+              getInputContainingGivenId(page, "form:textInput");
+        assertNotNull(input);
+        assertEquals("new value", input.getValueAttribute());
+
+        // ensure events are fired properly when adding tree deltas
+        // to the view
+        submit = (HtmlSubmitInput)
+              getInputContainingGivenId(page, "form:submit");
+        page = submit.click();
+        input = (HtmlTextInput)
+              getInputContainingGivenId(page, "form:textInput");
+        assertNotNull(input);
+
+        // once more for good measure
+        submit = (HtmlSubmitInput)
+              getInputContainingGivenId(page, "form:submit");
+        page = submit.click();
+        input = (HtmlTextInput)
+              getInputContainingGivenId(page, "form:textInput");
+        assertNotNull(input);
+
+    }
+
+
+    /**
+     * Added for issue 1185.
+     */
+    public void testDeleteAddSameAction() throws Exception {
+
+        HtmlPage page = getPage("/faces/state/dynamicAdditionDeletion.xhtml");
+        HtmlSubmitInput submit = (HtmlSubmitInput)
+              getInputContainingGivenId(page, "form:render");
+        page = submit.click();
+
+        // first click removes children from the panel (should be empty)
+        // and adds a new button
+        assertTrue(page.asText().contains("dynamically added button"));
+
+        for (int i = 0; i < 5; i++) {
+            // repeated clicks will remove the single child and add a new button
+            // back.
+            submit = (HtmlSubmitInput)
+              getInputContainingGivenId(page, "form:render");
+            page = submit.click();
+
+            assertTrue(page.asText().contains("dynamically added button"));
+        }
+
+    }
+
+
+    /**
+     * Added for issue 1553.
+     */
+    public void testDynamicAdditionTransietSubTree() throws Exception {
+
+        // any exception thrown here will fail the test
+        client.setThrowExceptionOnFailingStatusCode(true);
+        getPage("/faces/state/dynamicAdditionTransientSubTree.xhtml");
+
+    }
+
+
+    // --------------------------------------------------------- Private Methods
+
+
+    private void doTestDynamicDeletion(String viewId) throws Exception {
+        HtmlPage page = getPage(viewId);
+        HtmlTextInput textField = (HtmlTextInput)
+                getInputContainingGivenId(page, "textField");
+        textField.setValueAttribute("some text");
+        HtmlSubmitInput button = (HtmlSubmitInput)
+                getInputContainingGivenId(page, "reload");
+        try {
+            page = (HtmlPage) button.click();
+        } catch (Exception e) {
+            fail(e.getMessage());
+        }
+        assertTrue(-1 == page.asText().indexOf("cbutton should not be found"));
+    }
+
+
+    private void doTestDynamicAddition(String viewId) throws Exception {
+        HtmlPage page = getPage(viewId);
+        HtmlTextInput textField = (HtmlTextInput)
+                getInputContainingGivenId(page, "textField");
+        textField.setValueAttribute("some text");
+        HtmlSubmitInput button = (HtmlSubmitInput)
+                getInputContainingGivenId(page, "reload");
+        try {
+            page = (HtmlPage) button.click();
+        } catch (Exception e) {
+            fail(e.getMessage());
+        }
+        assertTrue(-1 == page.asText().indexOf("cbutton should be found"));
+    }
+
+} // end of class PathTestCase
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/systest/state/IsSavingStateITCase.java b/test/servlet30/systest/src/test/java/com/sun/faces/systest/state/IsSavingStateITCase.java
new file mode 100644
index 0000000..7a747ea
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/systest/state/IsSavingStateITCase.java
@@ -0,0 +1,75 @@
+
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.state;
+
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import com.sun.faces.htmlunit.HtmlUnitFacesITCase;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+
+
+public class IsSavingStateITCase extends HtmlUnitFacesITCase {
+
+
+    public IsSavingStateITCase(String name) {
+        super(name);
+    }
+
+    public static Test suite() {
+        return (new TestSuite(IsSavingStateITCase.class));
+    }
+
+    public void test01() throws Exception {
+
+        HtmlPage page = getPage("/faces/state/isSavingState.xhtml");
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("next");
+        page = button.click();
+        assertTrue(page.asText().matches("(?s).*beforeMessage:.*no.*value.*duringMessage:.*true.*afterMessage:.*no.*value.*"));
+        page = getPage("/faces/state/isSavingState2.xhtml");
+        String text = page.asText();
+        assertFalse(page.asText().matches("(?s).*beforeMessage:.*no.*value.*duringMessage:.*true.*afterMessage:.*no.*value.*"));
+        assertTrue(page.asText().matches("(?s).*beforeMessage:.*duringMessage:.*afterMessage:.*"));
+
+    }
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/systest/tags/EventITCase.java b/test/servlet30/systest/src/test/java/com/sun/faces/systest/tags/EventITCase.java
new file mode 100644
index 0000000..555847e
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/systest/tags/EventITCase.java
@@ -0,0 +1,179 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.tags;
+
+import com.gargoylesoftware.htmlunit.FailingHttpStatusCodeException;
+import java.util.List;
+import java.util.ArrayList;
+
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import com.sun.faces.htmlunit.HtmlUnitFacesITCase;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSpan;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+
+
+/**
+ * Validate new EL features such as the component implicit object
+ */
+public class EventITCase extends HtmlUnitFacesITCase {
+
+    public EventITCase(String name) {
+        super(name);
+    }
+
+
+    /**
+     * Set up instance variables required by this test case.
+     */
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+
+
+    /**
+     * Return the tests included in this test suite.
+     */
+    public static Test suite() {
+        return (new TestSuite(EventITCase.class));
+    }
+
+
+    /**
+     * Tear down instance variables required by this test case.
+     */
+    public void tearDown() {
+        super.tearDown();
+    }
+
+    // ------------------------------------------------------------ Test Methods
+
+
+    public void testValidEvents() throws Exception {
+        HtmlPage page = getPage("/faces/eventTag.xhtml");
+        List<HtmlSpan> outputs = new ArrayList<HtmlSpan>(4);
+        getAllElementsOfGivenClass(page, outputs, HtmlSpan.class);
+        assertTrue(outputs.size() == 6);
+        validateOutput(outputs);
+
+        HtmlSubmitInput submit = (HtmlSubmitInput) getInputContainingGivenId(page, "click");
+        assertNotNull(submit);
+        page = (HtmlPage) submit.click();
+        outputs.clear();
+        getAllElementsOfGivenClass(page, outputs, HtmlSpan.class);
+        assertTrue(outputs.size() == 6);
+        validateOutput(outputs);
+    }
+
+    public void testBeforeViewRender() throws Exception {
+        HtmlPage page = getPage("/faces/eventTag01.xhtml");
+        assertTrue(-1 != page.asText().indexOf("class javax.faces.component.UIViewRoot pre-render"));
+
+        page = getPage("/faces/eventTag02.xhtml");
+        assertTrue(-1 != page.asText().indexOf("class javax.faces.component.UIViewRoot pre-render"));
+
+    }
+
+
+    public void testInvalidEvent() throws Exception {
+        try {
+            getPage("/faces/eventTagInvalid.xhtml");
+            fail ("An exception should be thrown for an invalid event name in Development mode");
+        } catch (FailingHttpStatusCodeException fail) {
+            //
+        }
+    }
+
+    public static void main (String... args) {
+        try {
+            EventITCase etc = new EventITCase("foo");
+            etc.setUp();
+            etc.testValidEvents();
+            etc.testInvalidEvent();
+            etc.tearDown();
+        } catch (Exception ex) {
+            Logger.getLogger(EventITCase.class.getName()).log(Level.SEVERE, null, ex);
+        }
+    }
+
+    // --------------------------------------------------------- Private Methods
+
+
+    private void validateOutput(List<HtmlSpan> outputs) {
+
+        HtmlSpan s;
+
+        // Short name
+        s = outputs.get(0);
+        assertTrue(("The 'javax.faces.event.PreRenderComponentEvent' event fired!").equals(s.asText()));
+
+        // Long name
+        s = outputs.get(1);
+        assertTrue(("The 'javax.faces.event.PreRenderComponentEvent' event fired!").equals(s.asText()));
+
+        // Short Name
+        s = outputs.get(2);
+        assertTrue(("The 'javax.faces.event.PostAddToViewEvent' event fired!").equals(s.asText()));
+
+        // Long name
+        s = outputs.get(3);
+        assertTrue(("The 'javax.faces.event.PostAddToViewEvent' event fired!").equals(s.asText()));
+
+        // Fully-qualified class name
+        s = outputs.get(4);
+        assertTrue(("The 'javax.faces.event.PreRenderComponentEvent' event fired!").equals(s.asText()));
+
+        // No-arg
+        s = outputs.get(5);
+        assertTrue(("The no-arg event fired!").equals(s.asText()));
+
+    }
+
+    public void testPostAddParentCorrect1682() throws Exception {
+        HtmlPage page = getPage("/faces/issue1682.xhtml");
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("reload");
+        page = button.click();
+        assertTrue(page.asText().contains("source id: postAddTester"));
+    }
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/systest/view/xml/ViewXmlITCase.java b/test/servlet30/systest/src/test/java/com/sun/faces/systest/view/xml/ViewXmlITCase.java
new file mode 100644
index 0000000..e9d271d
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/systest/view/xml/ViewXmlITCase.java
@@ -0,0 +1,128 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.view.xml;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import com.sun.faces.htmlunit.HtmlUnitFacesITCase;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+
+/**
+ * <p>Test Case for JSP Interoperability.</p>
+ */
+
+public class ViewXmlITCase extends HtmlUnitFacesITCase {
+
+
+    // ------------------------------------------------------------ Constructors
+
+
+    /**
+     * Construct a new instance of this test case.
+     *
+     * @param name Name of the test case
+     */
+    public ViewXmlITCase(String name) {
+        super(name);
+    }
+
+
+    // ------------------------------------------------------ Instance Variables
+
+
+    // ---------------------------------------------------- Overall Test Methods
+
+
+    /**
+     * Set up instance variables required by this test case.
+     */
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+
+
+    /**
+     * Return the tests included in this test suite.
+     */
+    public static Test suite() {
+        return (new TestSuite(ViewXmlITCase.class));
+    }
+
+
+    /**
+     * Tear down instance variables required by this test case.
+     */
+    public void tearDown() {
+        super.tearDown();
+    }
+
+
+    // ------------------------------------------------- Individual Test Methods
+
+
+    public void testPrefixAndExtensionMapping() throws Exception {
+        doTest("/view.xml/templateClientUsingXmlAndXhtml.faces", "foo", "bar");
+        doTest("/faces/view.xml/templateClientUsingXmlAndXhtml.view.xml", "baz", "baba");
+    }
+
+    public void testSimpleXml() throws Exception {
+        HtmlPage page = getPage("/view.xml/index.faces");
+        String text = page.asText();
+        assertTrue(text.matches("(?s).*Raw XML View\\s*hello\\s*reload.*"));
+
+
+    }
+
+    private void doTest(String path, String param1, String param2) throws Exception {
+        HtmlPage page = getPage(path + "?param1=" + param1 + "&param2=" + param2);
+        String text = page.asText();
+        assertTrue(text.matches("(?s).*Templating and XML views\\s*column1\\s*column2\\s*column3\\s*This is the header text declared in xhtmlTemplate.xhtml. The preceding columns are declared in header.view.xml.\\s*hello\\s*reload\\s*HTML table column 1\\s*HTML table column 2\\s*" + 
+                param1 + "\\s*" + param2 + ".*"));
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("button");
+        page = button.click();
+        text = page.asText();
+        assertTrue(text.matches("(?s).*Templating and XML views\\s*column1\\s*column2\\s*column3\\s*This is the header text declared in xhtmlTemplate.xhtml. The preceding columns are declared in header.view.xml.\\s*hello\\s*reload\\s*HTML table column 1\\s*HTML table column 2\\s*" +
+                param1 + "\\s*" + param2 + ".*"));
+        
+    }
+
+}
diff --git a/test/servlet30/systest/src/test/java/com/sun/faces/systest/viewparameters/ViewParametersITCase.java b/test/servlet30/systest/src/test/java/com/sun/faces/systest/viewparameters/ViewParametersITCase.java
new file mode 100644
index 0000000..7a816a6
--- /dev/null
+++ b/test/servlet30/systest/src/test/java/com/sun/faces/systest/viewparameters/ViewParametersITCase.java
@@ -0,0 +1,311 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.systest.viewparameters;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import com.gargoylesoftware.htmlunit.html.HtmlAnchor;
+import com.sun.faces.htmlunit.HtmlUnitFacesITCase;
+import java.net.URL;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+/**
+ * Test cases for Facelets functionality
+ */
+public class ViewParametersITCase extends HtmlUnitFacesITCase {
+
+
+    // --------------------------------------------------------------- Test Init
+
+
+    public ViewParametersITCase() {
+        this("FaceletsTestCase");
+    }
+
+
+    public ViewParametersITCase(String name) {
+        super(name);
+    }
+
+
+    /**
+     * Set up instance variables required by this test case.
+     */
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+
+
+    /**
+     * Return the tests included in this test suite.
+     */
+    public static Test suite() {
+        return (new TestSuite(ViewParametersITCase.class));
+    }
+
+
+    /**
+     * Tear down instance variables required by this test case.
+     */
+    public void tearDown() {
+        super.tearDown();
+    }
+
+
+    // ------------------------------------------------------------ Test Methods
+
+
+    /*
+     * Added for issue 917.
+     */
+    public void testViewParameters() throws Exception {
+
+        doTestExtensionMapped(0);
+        doTestExtensionMapped(1);
+        
+    }
+
+    public void testViewParametersValidation() throws Exception {
+
+        HtmlPage page = getPage("/viewParameters/page02.faces?id=0");
+        assertTrue(page.asText().contains("Invalid headline. (The id parameter is not a positive number)"));
+
+    }
+    
+    
+    private void doTestExtensionMapped(int i) throws Exception {
+
+        int storyNum = i + 1;
+        HtmlPage page = null;
+        
+        page = fetchHomePageAndClickStoryLink(i);
+
+        page = fetchHomePageAndClickStoryLink(i);
+        
+        page = doRefreshButton(page, storyNum);
+        
+        page = doRefreshClearParamButton(page, storyNum);
+
+        page = fetchHomePageAndClickStoryLink(i);
+        
+        page = doRefreshWithRedirectParamsButton(page, storyNum);
+        
+        page = fetchHomePageAndClickStoryLink(i);
+        
+        page = doRefreshWithoutRedirectParamsButton(page, storyNum);
+        
+        page = fetchHomePageAndClickStoryLink(i);
+
+        page = doHomeButton(page, storyNum);
+        
+        page = fetchHomePageAndClickStoryLink(i);
+
+        page = doHomeKeepSelectionButton(page, i);
+        
+        page = fetchHomePageAndClickStoryLink(i);
+
+        page = doHomeKeepSelectionNavCaseButton(page, i);
+        
+        page = fetchHomePageAndClickStoryLink(i);
+
+        page = doStory2Button(page, i);
+        
+        
+    }
+    
+    private HtmlPage fetchHomePageAndClickStoryLink(int i) throws Exception {
+        HtmlPage page = getPage("/viewParameters/page01.faces") ;
+        String pageText = page.asText();
+
+        assertOnHomePage(pageText);
+        
+        List<HtmlAnchor> anchors = new ArrayList<HtmlAnchor>();
+        this.getAllElementsOfGivenClass(page, anchors, HtmlAnchor.class);
+        HtmlAnchor toClick = anchors.get(i);
+        page = (HtmlPage) toClick.click();
+        
+        int storyNum = i+1;
+        
+        // Assert some things about the content of the page
+        pageText = page.asText();
+        assertTrue(-1 != pageText.indexOf(getTitleContains(storyNum)));
+        assertTrue(-1 != pageText.indexOf(getContentContains(storyNum)));
+        
+        return page;
+    }
+    
+    private String getTitleContains(int storyNum) {
+        String titleContains = "Story " + storyNum + " Headline:";
+        return titleContains;
+    }
+    
+    private String getContentContains(int storyNum) {
+        String contentContains = "Story " + storyNum + " Content:";
+        return contentContains;
+    }
+    
+    private HtmlPage doRefreshButton(HtmlPage page, int storyNum) throws Exception {
+        String pageText = null;
+        
+        // Click the "refresh" button, ensure the page refreshes properly
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getHtmlElementById("refresh");
+        page = (HtmlPage) button.click();
+        pageText = page.asText();
+        assertTrue(-1 != pageText.indexOf(getTitleContains(storyNum)));
+        assertTrue(-1 != pageText.indexOf(getContentContains(storyNum)));
+
+        return page;
+    }
+    
+    private HtmlPage doRefreshClearParamButton(HtmlPage page, int storyNum) throws Exception {
+        String pageText = null;
+        // Click the "refreshClearParam" button, ensure you get back
+        // to the home page
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getHtmlElementById("refreshClearParam");
+        page = (HtmlPage) button.click();
+        pageText = page.asText();
+        
+        // no story content on home page
+        assertTrue(-1 == pageText.indexOf(getContentContains(storyNum)));
+        assertTrue(-1 != pageText.indexOf("You did not specify a headline. (The id parameter is missing)"));
+        assertOnHomePage(pageText);
+        return page;
+    }
+    
+    private HtmlPage doRefreshWithRedirectParamsButton(HtmlPage page, int storyNum) throws Exception {
+        // click the "refreshWithRedirectParams" button and make sure we're still
+        // on the same page.
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getHtmlElementById("refreshWithRedirectParams");
+        page = (HtmlPage) button.click();
+        String pageText = page.asText();
+        assertTrue(-1 != pageText.indexOf(getTitleContains(storyNum)));
+        assertTrue(-1 != pageText.indexOf(getContentContains(storyNum)));
+        
+        return page;
+    }
+    
+    private HtmlPage doRefreshWithoutRedirectParamsButton(HtmlPage page, int storyNum) throws Exception {
+        String pageText = null;
+        // Click the "refreshWithRedirect" button, ensure you get back
+        // to the home page
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getHtmlElementById("refreshWithRedirect");
+        page = (HtmlPage) button.click();
+        pageText = page.asText();
+        
+        // no story content on home page
+        assertTrue(-1 == pageText.indexOf(getContentContains(storyNum)));
+        assertTrue(-1 != pageText.indexOf("You did not specify a headline. (The id parameter is missing)"));
+        assertOnHomePage(pageText);
+        return page;
+    }
+
+    private HtmlPage doHomeButton(HtmlPage page, int storyNum) throws Exception {
+        String pageText = null;
+        // Click the "home" button, ensure you get back
+        // to the home page
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getHtmlElementById("home");
+        page = (HtmlPage) button.click();
+        pageText = page.asText();
+        
+        // no story content on the page, and no messages either
+        assertTrue(-1 == pageText.indexOf(getContentContains(storyNum)));
+        assertTrue(-1 == pageText.indexOf("The headline you requested does not exist."));
+        assertTrue(-1 == pageText.indexOf("You did not specify a headline. (The id parameter is missing)"));
+        assertOnHomePage(pageText);
+
+        return page;
+    }
+    
+    private HtmlPage doHomeKeepSelectionButton(HtmlPage page, int storyNum) throws Exception {
+        String pageText = null;
+        // Click the "homeKeepSelection" button, ensure you get back
+        // to the home page with the proper story number
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getHtmlElementById("homeRememberSelection");
+        page = (HtmlPage) button.click();
+        pageText = page.asText();
+        
+        assertOnHomePage(pageText);
+        assertTrue(-1 == pageText.indexOf("You just looked at story #" + storyNum + "."));
+        
+        
+        return page;
+    }
+    
+    private HtmlPage doHomeKeepSelectionNavCaseButton(HtmlPage page, int storyNum) throws Exception {
+        String pageText = null;
+        // Click the "homeKeepSelectionNavCase" button, ensure you get back
+        // to the home page with the proper story number
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getHtmlElementById("homeRememberSelectionNavCase");
+        page = (HtmlPage) button.click();
+        pageText = page.asText();
+        
+        assertOnHomePage(pageText);
+        assertTrue(-1 == pageText.indexOf("You just looked at story #" + storyNum + "."));
+        
+        
+        return page;
+    }
+    
+    private HtmlPage doStory2Button(HtmlPage page, int storyNum) throws Exception {
+        String pageText = null;
+        // Click the "story2" button, ensure you get
+        // to the story 2 page
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getHtmlElementById("story2RememberSelectionNavCase");
+        page = (HtmlPage) button.click();
+        pageText = page.asText();
+        
+        URL requestUrl = page.getWebResponse().getRequestUrl();
+        
+        assertTrue(-1 != pageText.indexOf("Story 2"));
+        assertTrue(-1 != pageText.indexOf("bar is: foo"));
+        
+        return page;
+    }
+    
+    private void assertOnHomePage(String pageText) throws Exception {
+        assertTrue(-1 != pageText.indexOf("The big news stories of the day"));
+    }
+
+}
diff --git a/test/servlet31/facelets/coreEmptyAsNull/nbactions.xml b/test/servlet31/facelets/coreEmptyAsNull/nbactions.xml
new file mode 100644
index 0000000..dbd0020
--- /dev/null
+++ b/test/servlet31/facelets/coreEmptyAsNull/nbactions.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<actions>
+    <action>
+        <actionName>test.single</actionName>
+        <goals>
+            <goal>test-compile</goal>
+            <goal>surefire:test</goal>
+        </goals>
+        <properties>
+            <test>${packageClassName}</test>
+            <integration.url>http://localhost:8080/test-servlet31-facelets-coreEmptyAsNull/</integration.url>
+        </properties>
+    </action>
+    <action>
+        <actionName>debug.test.single</actionName>
+        <goals>
+            <goal>test-compile</goal>
+            <goal>surefire:test</goal>
+        </goals>
+        <properties>
+            <test>${packageClassName}</test>
+            <forkMode>once</forkMode>
+            <maven.surefire.debug>-Xdebug -Xrunjdwp:transport=dt_socket,server=n,address=${jpda.address}</maven.surefire.debug>
+            <jpda.listen>true</jpda.listen>
+            <integration.url>http://localhost:8080/test-servlet31-facelets-coreEmptyAsNull/</integration.url>
+        </properties>
+    </action>
+</actions>
diff --git a/test/servlet31/facelets/coreEmptyAsNull/pom.xml b/test/servlet31/facelets/coreEmptyAsNull/pom.xml
new file mode 100644
index 0000000..e99c56e
--- /dev/null
+++ b/test/servlet31/facelets/coreEmptyAsNull/pom.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.servlet31.facelets</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.servlet31.facelets</groupId>
+    <artifactId>coreEmptyAsNull</artifactId>
+    <packaging>war</packaging>
+    <name>Mojarra ${project.version} - Test - Servlet 3.1 - Facelets - Core (Empty As Null)</name>
+    <build>
+        <finalName>test-servlet31-facelets-coreEmptyAsNull</finalName>
+    </build>
+    <properties>
+        <netbeans.hint.deploy.server>gfv3ee6</netbeans.hint.deploy.server>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/test/servlet31/facelets/coreEmptyAsNull/src/main/java/com/sun/faces/test/servlet31/facelets/coreEmptyAsNull/VerifyEmptyAsNullBean.java b/test/servlet31/facelets/coreEmptyAsNull/src/main/java/com/sun/faces/test/servlet31/facelets/coreEmptyAsNull/VerifyEmptyAsNullBean.java
new file mode 100644
index 0000000..8fa6162
--- /dev/null
+++ b/test/servlet31/facelets/coreEmptyAsNull/src/main/java/com/sun/faces/test/servlet31/facelets/coreEmptyAsNull/VerifyEmptyAsNullBean.java
@@ -0,0 +1,106 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet31.facelets.coreEmptyAsNull;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.SessionScoped;
+import javax.faces.event.ValueChangeEvent;
+
+ at ManagedBean
+ at SessionScoped
+public class VerifyEmptyAsNullBean {
+
+    Object integerPropertySet = "";
+    Integer integerProperty;
+    Object stringPropertySet = "";
+    String stringProperty;
+    boolean vceFired;
+    boolean vce2Fired;
+
+    public Integer getIntegerProperty() {
+        return integerProperty;
+    }
+
+    public void setIntegerProperty(Integer integerProperty) {
+        integerPropertySet = integerProperty;
+        this.integerProperty = integerProperty;
+    }
+
+    public String getStringProperty() {
+        return stringProperty;
+    }
+
+    public void setStringProperty(String stringProperty) {
+        stringPropertySet = stringProperty;
+        this.stringProperty = stringProperty;
+    }
+
+    public boolean isVceFired() {
+        boolean tmp = vceFired;
+        vceFired = false;
+        return tmp;
+    }
+
+    public boolean isVce2Fired() {
+        boolean tmp = vce2Fired;
+        vce2Fired = false;
+        return tmp;
+    }
+
+    public boolean isStringNull() {
+        boolean isNull = (this.stringPropertySet == null);
+        this.stringPropertySet = "";
+        return (isNull);
+    }
+
+    public boolean isIntegerNull() {
+        boolean isNull = (this.integerPropertySet == null);
+        this.integerPropertySet = "";
+        return (isNull);
+    }
+
+    public void valueChange(ValueChangeEvent event) {
+        vceFired = true;
+    }
+
+    public void valueChange2(ValueChangeEvent event) {
+        vce2Fired = true;
+    }
+}
diff --git a/test/servlet31/facelets/coreEmptyAsNull/src/main/webapp/WEB-INF/faces-config.xml b/test/servlet31/facelets/coreEmptyAsNull/src/main/webapp/WEB-INF/faces-config.xml
new file mode 100644
index 0000000..193e009
--- /dev/null
+++ b/test/servlet31/facelets/coreEmptyAsNull/src/main/webapp/WEB-INF/faces-config.xml
@@ -0,0 +1,7 @@
+<?xml version='1.0' encoding='UTF-8'?>
+
+<faces-config version="2.0"
+              xmlns="http://java.sun.com/xml/ns/javaee"
+              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+              xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd">
+</faces-config>
diff --git a/test/servlet31/facelets/coreEmptyAsNull/src/main/webapp/WEB-INF/glassfish-web.xml b/test/servlet31/facelets/coreEmptyAsNull/src/main/webapp/WEB-INF/glassfish-web.xml
new file mode 100644
index 0000000..aa926c0
--- /dev/null
+++ b/test/servlet31/facelets/coreEmptyAsNull/src/main/webapp/WEB-INF/glassfish-web.xml
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<glassfish-web-app error-url="">
+  <context-root>/test-servlet31-facelets-coreEmptyAsNull</context-root>
+  <class-loader delegate="true"/>
+  <jsp-config>
+    <property name="keepgenerated" value="true">
+      <description>Keep a copy of the generated servlet class' java code.</description>
+    </property>
+  </jsp-config>
+</glassfish-web-app>
diff --git a/test/servlet31/facelets/coreEmptyAsNull/src/main/webapp/WEB-INF/web.xml b/test/servlet31/facelets/coreEmptyAsNull/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..b64414c
--- /dev/null
+++ b/test/servlet31/facelets/coreEmptyAsNull/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,79 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" 
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>${webapp.projectStage}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
+        <param-value>${webapp.partialStateSaving}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>${webapp.stateSavingMethod}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL</param-name>
+        <param-value>true</param-value>
+    </context-param>
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <session-config>
+        <session-timeout>30</session-timeout>
+    </session-config>
+    <welcome-file-list>
+        <welcome-file>faces/index.xhtml</welcome-file>
+    </welcome-file-list>
+</web-app>
diff --git a/test/servlet31/facelets/coreEmptyAsNull/src/main/webapp/index.xhtml b/test/servlet31/facelets/coreEmptyAsNull/src/main/webapp/index.xhtml
new file mode 100644
index 0000000..9ea4bab
--- /dev/null
+++ b/test/servlet31/facelets/coreEmptyAsNull/src/main/webapp/index.xhtml
@@ -0,0 +1,13 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title>Core (Empty As Null) tests</title>
+    </h:head>
+    <h:body>
+        <a href="#{facesContext.externalContext.requestContextPath}/faces/verifyEmptyAsNull.xhtml">Issue #2827 - Verify Empty as Null</a> <br/>
+    </h:body>
+</html>
diff --git a/test/servlet31/facelets/coreEmptyAsNull/src/main/webapp/verifyEmptyAsNull.xhtml b/test/servlet31/facelets/coreEmptyAsNull/src/main/webapp/verifyEmptyAsNull.xhtml
new file mode 100644
index 0000000..a0289bf
--- /dev/null
+++ b/test/servlet31/facelets/coreEmptyAsNull/src/main/webapp/verifyEmptyAsNull.xhtml
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html
+    PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <head>
+        <title>Empty String As Null Test</title>
+    </head>
+    <body>
+        <h:form id="form">
+            <h:inputText id="string"
+                         value="#{verifyEmptyAsNullBean.stringProperty}"
+                         valueChangeListener="#{verifyEmptyAsNullBean.valueChange}"/>
+            <h:inputText id="integer"
+                         value="#{verifyEmptyAsNullBean.integerProperty}"
+                         valueChangeListener="#{verifyEmptyAsNullBean.valueChange2}"/>
+            <h:commandButton id="command" value="Submit"/>
+        </h:form>
+        VC1 Fired: <h:outputText value="#{verifyEmptyAsNullBean.vceFired}"/><br />
+        VC2 Fired: <h:outputText value="#{verifyEmptyAsNullBean.vce2Fired}"/><br />
+        <h:outputText value="String model set with null: #{verifyEmptyAsNullBean.stringNull}"/><br />
+        <h:outputText value="Integer model set with null: #{verifyEmptyAsNullBean.integerNull}"/><br />  
+    </body>
+</html>
diff --git a/test/servlet31/facelets/coreEmptyAsNull/src/test/java/com/sun/faces/test/servlet31/facelets/coreEmptyAsNull/Issue2827IT.java b/test/servlet31/facelets/coreEmptyAsNull/src/test/java/com/sun/faces/test/servlet31/facelets/coreEmptyAsNull/Issue2827IT.java
new file mode 100644
index 0000000..cb50a96
--- /dev/null
+++ b/test/servlet31/facelets/coreEmptyAsNull/src/test/java/com/sun/faces/test/servlet31/facelets/coreEmptyAsNull/Issue2827IT.java
@@ -0,0 +1,175 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet31.facelets.coreEmptyAsNull;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlInput;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import static com.sun.faces.test.junit.JsfServerExclude.GLASSFISH_4_0;
+import com.sun.faces.test.junit.JsfTest;
+import com.sun.faces.test.junit.JsfTestRunner;
+import static com.sun.faces.test.junit.JsfVersion.JSF_2_2_0;
+import org.junit.After;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+ at RunWith(JsfTestRunner.class)
+public class Issue2827IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    /**
+     * Test to verify empty as null.
+     *
+     * Note: this test is excluded on Tomcat because the included EL parser
+     * requires a System property for this test to work, which would cause
+     * problems with other tests. See
+     * http://tomcat.apache.org/tomcat-7.0-doc/config/systemprops.html and look
+     * for COERCE_TO_ZERO
+     * 
+     * @throws Exception
+     */
+    @JsfTest(value=JSF_2_2_0, excludes={GLASSFISH_4_0})
+    @Test
+    public void testValidateEmptyFields() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/index.xhtml");
+        if (page.getWebResponse().getResponseHeaderValue("Server") == null
+                || !page.getWebResponse().getResponseHeaderValue("Server").startsWith("Apache-Coyote")) {
+            page = webClient.getPage(webUrl + "faces/verifyEmptyAsNull.xhtml");
+
+            HtmlInput stringInput = page.getHtmlElementById("form:string");
+            HtmlInput integerInput = page.getHtmlElementById("form:integer");
+
+            assertNotNull(stringInput);
+            assertNotNull(integerInput);
+            assertEquals(stringInput.getValueAttribute(), "");
+            assertEquals(integerInput.getValueAttribute(), "");
+
+            String pageAsText = page.asText();
+            assertTrue(pageAsText.contains("VC1 Fired: false"));
+            assertTrue(pageAsText.contains("VC2 Fired: false"));
+            assertTrue(pageAsText.contains("String model set with null: false"));
+            assertTrue(pageAsText.contains("Integer model set with null: false"));
+
+            HtmlSubmitInput submit = (HtmlSubmitInput) page.getHtmlElementById("form:command");
+            assertNotNull(submit);
+
+            stringInput.setValueAttribute("11");
+            integerInput.setValueAttribute("11");
+
+            page = (HtmlPage) submit.click();
+
+            stringInput = page.getHtmlElementById("form:string");
+            integerInput = page.getHtmlElementById("form:integer");
+
+            assertNotNull(stringInput);
+            assertNotNull(integerInput);
+            assertEquals(stringInput.getValueAttribute(), "11");
+            assertEquals(integerInput.getValueAttribute(), "11");
+
+            pageAsText = page.asText();
+            assertTrue(pageAsText.contains("VC1 Fired: true"));
+            assertTrue(pageAsText.contains("VC2 Fired: true"));
+            assertTrue(pageAsText.contains("String model set with null: false"));
+            assertTrue(pageAsText.contains("Integer model set with null: false"));
+
+            submit = (HtmlSubmitInput) page.getHtmlElementById("form:command");
+            assertNotNull(submit);
+
+            stringInput.setValueAttribute("");
+            integerInput.setValueAttribute("");
+
+            page = (HtmlPage) submit.click();
+
+            stringInput = page.getHtmlElementById("form:string");
+            integerInput = page.getHtmlElementById("form:integer");
+
+            assertNotNull(stringInput);
+            assertNotNull(integerInput);
+            assertEquals(stringInput.getValueAttribute(), "");
+            assertEquals(integerInput.getValueAttribute(), "");
+
+            pageAsText = page.asText();
+            assertTrue(pageAsText.contains("VC1 Fired: true"));
+            assertTrue(pageAsText.contains("VC2 Fired: true"));
+            assertTrue(pageAsText.contains("String model set with null: true"));
+            assertTrue(pageAsText.contains("Integer model set with null: true"));
+
+            submit = (HtmlSubmitInput) page.getHtmlElementById("form:command");
+            assertNotNull(submit);
+
+            stringInput.setValueAttribute("");
+            integerInput.setValueAttribute("");
+
+            page = (HtmlPage) submit.click();
+
+            stringInput = page.getHtmlElementById("form:string");
+            integerInput = page.getHtmlElementById("form:integer");
+
+            assertNotNull(stringInput);
+            assertNotNull(integerInput);
+            assertEquals(stringInput.getValueAttribute(), "");
+            assertEquals(integerInput.getValueAttribute(), "");
+
+            pageAsText = page.asText();
+            assertTrue(pageAsText.contains("VC1 Fired: false"));
+            assertTrue(pageAsText.contains("VC2 Fired: false"));
+            assertTrue(pageAsText.contains("String model set with null: true"));
+            assertTrue(pageAsText.contains("Integer model set with null: true"));
+        }
+    }
+}
diff --git a/test/servlet31/facelets/html/pom.xml b/test/servlet31/facelets/html/pom.xml
new file mode 100644
index 0000000..ba20d4e
--- /dev/null
+++ b/test/servlet31/facelets/html/pom.xml
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.servlet31.facelets</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.servlet31.facelets</groupId>
+    <artifactId>html</artifactId>
+    <packaging>war</packaging>
+    <name>Mojarra ${project.version} - Test - Servlet 3.1 - Facelets - HTML</name>
+    <build>
+        <finalName>test-servlet31-facelets-html</finalName>
+    </build>
+    <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/test/servlet31/facelets/html/src/main/java/com/sun/faces/test/servlet31/facelets/html/Functions.java b/test/servlet31/facelets/html/src/main/java/com/sun/faces/test/servlet31/facelets/html/Functions.java
new file mode 100644
index 0000000..cedb531
--- /dev/null
+++ b/test/servlet31/facelets/html/src/main/java/com/sun/faces/test/servlet31/facelets/html/Functions.java
@@ -0,0 +1,49 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet31.facelets.html;
+
+import java.text.MessageFormat;
+
+public class Functions {
+
+    public static String format(String format, String element) {
+        return MessageFormat.format(format, element);
+    }
+}
diff --git a/test/servlet31/facelets/html/src/main/webapp/WEB-INF/glassfish-web.xml b/test/servlet31/facelets/html/src/main/webapp/WEB-INF/glassfish-web.xml
new file mode 100644
index 0000000..63588ff
--- /dev/null
+++ b/test/servlet31/facelets/html/src/main/webapp/WEB-INF/glassfish-web.xml
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<glassfish-web-app error-url="">
+  <context-root>/test-servlet31-facelets-html</context-root>
+  <class-loader delegate="true"/>
+  <jsp-config>
+    <property name="keepgenerated" value="true">
+      <description>Keep a copy of the generated servlet class' java code.</description>
+    </property>
+  </jsp-config>
+</glassfish-web-app>
diff --git a/test/servlet31/facelets/html/src/main/webapp/WEB-INF/test.taglib.xml b/test/servlet31/facelets/html/src/main/webapp/WEB-INF/test.taglib.xml
new file mode 100644
index 0000000..d161ea3
--- /dev/null
+++ b/test/servlet31/facelets/html/src/main/webapp/WEB-INF/test.taglib.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<facelet-taglib
+    xmlns='http://java.sun.com/xml/ns/javaee'
+    xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
+    xsi:schemaLocation='http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facelettaglibrary_2_0.xsd'
+    version="2.0">
+    <namespace>http://mojarra.java.net/j</namespace>
+    <function>
+        <description>
+            This takes an input format and a value and returns the formatted result.
+        </description>
+        <function-name>format</function-name>
+        <function-class>com.sun.faces.test.servlet31.facelets.html.Functions</function-class>
+        <function-signature>java.lang.String format(java.lang.String, java.lang.String)</function-signature>
+    </function>
+</facelet-taglib>
diff --git a/test/servlet31/facelets/html/src/main/webapp/WEB-INF/web.xml b/test/servlet31/facelets/html/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..ca5a663
--- /dev/null
+++ b/test/servlet31/facelets/html/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,79 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2014s Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" 
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>${webapp.projectStage}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
+        <param-value>${webapp.partialStateSaving}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>${webapp.stateSavingMethod}</param-value>
+    </context-param>
+        <context-param>
+        <param-name>javax.faces.FACELETS_LIBRARIES</param-name>
+        <param-value>/WEB-INF/test.taglib.xml</param-value>
+    </context-param>
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <session-config>
+        <session-timeout>30</session-timeout>
+    </session-config>
+    <welcome-file-list>
+        <welcome-file>faces/index.xhtml</welcome-file>
+    </welcome-file-list>
+</web-app>
diff --git a/test/servlet31/facelets/html/src/main/webapp/outputTextInline.xhtml b/test/servlet31/facelets/html/src/main/webapp/outputTextInline.xhtml
new file mode 100644
index 0000000..12b6085
--- /dev/null
+++ b/test/servlet31/facelets/html/src/main/webapp/outputTextInline.xhtml
@@ -0,0 +1,23 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:j="http://mojarra.java.net/j">
+    <h:head>
+        <title>EL Example Code</title>
+    </h:head>
+    <h:body>
+        #{'{0}'}
+        <br/>
+        #{'{'}
+        <br/>
+        #{'}'}
+        <br/>
+        #{'{0}'}
+        <br/>
+        <h:outputText value="#{j:format('What EE language is the coolest? Answer: {0}', 'Expression Language (EL)')}"/>
+    </h:body>
+</html>
+
diff --git a/test/servlet31/facelets/html/src/main/webapp/outputTextInlineEL3.xhtml b/test/servlet31/facelets/html/src/main/webapp/outputTextInlineEL3.xhtml
new file mode 100644
index 0000000..3e8f7aa
--- /dev/null
+++ b/test/servlet31/facelets/html/src/main/webapp/outputTextInlineEL3.xhtml
@@ -0,0 +1,59 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://xmlns.jcp.org/jsf/html">
+    <h:head>
+        <title>Facelet Title</title>
+    </h:head>
+    <h:body>
+        <h:panelGroup>
+            #{v = {1,2}}
+        </h:panelGroup>
+    </h:body>
+</html>
diff --git a/test/servlet31/facelets/html/src/test/java/com/sun/faces/test/servlet31/facelets/html/Issue2891IT.java b/test/servlet31/facelets/html/src/test/java/com/sun/faces/test/servlet31/facelets/html/Issue2891IT.java
new file mode 100644
index 0000000..0799375
--- /dev/null
+++ b/test/servlet31/facelets/html/src/test/java/com/sun/faces/test/servlet31/facelets/html/Issue2891IT.java
@@ -0,0 +1,70 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet31.facelets.html;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.After;
+import static org.junit.Assert.assertEquals;
+import org.junit.Before;
+import org.junit.Test;
+
+public class Issue2891IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+    
+    @Test
+    public void testOutputTextInlineEL3() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/outputTextInlineEL3.xhtml");
+        assertEquals(200, page.getWebResponse().getStatusCode());
+    }
+}
diff --git a/test/servlet31/facelets/html/src/test/java/com/sun/faces/test/servlet31/facelets/html/Issue3135IT.java b/test/servlet31/facelets/html/src/test/java/com/sun/faces/test/servlet31/facelets/html/Issue3135IT.java
new file mode 100644
index 0000000..e70b4ff
--- /dev/null
+++ b/test/servlet31/facelets/html/src/test/java/com/sun/faces/test/servlet31/facelets/html/Issue3135IT.java
@@ -0,0 +1,70 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet31.facelets.html;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class Issue3135IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+    
+    @Test
+    public void testOutputTextInlineEL() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/outputTextInline.xhtml");
+        assertEquals(200, page.getWebResponse().getStatusCode());
+    }
+}
diff --git a/test/servlet31/facelets/pom.xml b/test/servlet31/facelets/pom.xml
new file mode 100644
index 0000000..56cf426
--- /dev/null
+++ b/test/servlet31/facelets/pom.xml
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.servlet31</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.servlet31.facelets</groupId>
+    <artifactId>pom</artifactId>
+    <packaging>pom</packaging>
+    <name>Mojarra ${project.version} - Test - Servlet 3.1 - Facelets</name>
+    <modules>
+        <module>coreEmptyAsNull</module>
+        <module>html</module>
+    <module>ui</module>
+  </modules>
+</project>
\ No newline at end of file
diff --git a/test/servlet31/facelets/ui/pom.xml b/test/servlet31/facelets/ui/pom.xml
new file mode 100644
index 0000000..8157b55
--- /dev/null
+++ b/test/servlet31/facelets/ui/pom.xml
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.servlet31.facelets</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.servlet31.facelets</groupId>
+    <artifactId>ui</artifactId>
+    <packaging>war</packaging>
+    <name>Mojarra ${project.version} - Test - Servlet 3.1 - Facelets - UI</name>
+    <build>
+        <finalName>test-servlet31-facelets-ui</finalName>
+    </build>
+    <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/test/servlet31/facelets/ui/src/main/java/com/sun/faces/test/servlet31/facelets/ui/RepeatNestedBean.java b/test/servlet31/facelets/ui/src/main/java/com/sun/faces/test/servlet31/facelets/ui/RepeatNestedBean.java
new file mode 100644
index 0000000..c3241f0
--- /dev/null
+++ b/test/servlet31/facelets/ui/src/main/java/com/sun/faces/test/servlet31/facelets/ui/RepeatNestedBean.java
@@ -0,0 +1,87 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.agnostic.facelets.ui;
+
+import java.util.Arrays;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.RequestScoped;
+
+ at ManagedBean(name = "repeatNestedBean")
+ at RequestScoped
+public class RepeatNestedBean {
+
+    private final Cell[][] matrix = new Cell[2][2];
+
+    public RepeatNestedBean() {
+        for (Cell[] matrix1 : matrix) {
+            for (int y = 0; y < matrix1.length; y++) {
+                matrix1[y] = new Cell();
+            }
+        }
+    }
+
+    public void refresh() {
+        matrix[0][0].setValue(true);
+        System.out.println("Refresh: " + Arrays.deepToString(matrix));
+    }
+
+    public Cell[][] getMatrix() {
+        return matrix;
+    }
+
+    public static class Cell {
+
+        private Boolean value = false;
+
+        public Boolean getValue() {
+            return this.value;
+        }
+
+        public void setValue(Boolean value) {
+            this.value = value;
+        }
+
+        @Override
+        public String toString() {
+            return String.valueOf(value);
+        }
+    }
+}
diff --git a/test/servlet31/facelets/ui/src/main/webapp/WEB-INF/glassfish-web.xml b/test/servlet31/facelets/ui/src/main/webapp/WEB-INF/glassfish-web.xml
new file mode 100644
index 0000000..a3d0264
--- /dev/null
+++ b/test/servlet31/facelets/ui/src/main/webapp/WEB-INF/glassfish-web.xml
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<glassfish-web-app error-url="">
+  <context-root>/test-servlet31-facelets-ui</context-root>
+  <class-loader delegate="true"/>
+  <jsp-config>
+    <property name="keepgenerated" value="true">
+      <description>Keep a copy of the generated servlet class' java code.</description>
+    </property>
+  </jsp-config>
+</glassfish-web-app>
diff --git a/test/servlet31/facelets/ui/src/main/webapp/WEB-INF/web.xml b/test/servlet31/facelets/ui/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..89c2659
--- /dev/null
+++ b/test/servlet31/facelets/ui/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" 
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>${webapp.projectStage}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
+        <param-value>${webapp.partialStateSaving}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>${webapp.stateSavingMethod}</param-value>
+    </context-param>
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <session-config>
+        <session-timeout>30</session-timeout>
+    </session-config>
+    <welcome-file-list>
+        <welcome-file>faces/index.xhtml</welcome-file>
+    </welcome-file-list>
+</web-app>
diff --git a/test/servlet31/facelets/ui/src/main/webapp/repeatNested.xhtml b/test/servlet31/facelets/ui/src/main/webapp/repeatNested.xhtml
new file mode 100644
index 0000000..0d5c28b
--- /dev/null
+++ b/test/servlet31/facelets/ui/src/main/webapp/repeatNested.xhtml
@@ -0,0 +1,63 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+    <h:head>
+        <title>Nested ui:repeat</title>
+    </h:head>
+    <h:body>
+        <h:form id="form" >
+            <ui:repeat id="level1" value="#{repeatNestedBean.matrix}" var="row" varStatus="level1">
+                <ui:repeat id="level2" value="#{row}" var="cell" varStatus="level2">
+                    <h:outputText value="#{cell.value}" />
+                    <h:selectBooleanCheckbox id="#{level1.index}#{level2.index}_" value="#{cell.value}" />
+                </ui:repeat>
+                <br/>
+            </ui:repeat>
+            <h:commandButton id="refresh" action="#{repeatNestedBean.refresh}" value="Refresh" />
+        </h:form>
+    </h:body>
+</html>
diff --git a/test/servlet31/facelets/ui/src/test/java/com/sun/faces/test/servlet31/facelets/ui/Issue1807IT.java b/test/servlet31/facelets/ui/src/test/java/com/sun/faces/test/servlet31/facelets/ui/Issue1807IT.java
new file mode 100644
index 0000000..60dbd05
--- /dev/null
+++ b/test/servlet31/facelets/ui/src/test/java/com/sun/faces/test/servlet31/facelets/ui/Issue1807IT.java
@@ -0,0 +1,85 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.servlet31.facelets.ui;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlCheckBoxInput;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import org.junit.After;
+import static org.junit.Assert.*;
+import org.junit.Before;
+import org.junit.Test;
+
+public class Issue1807IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testRepeatNested() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/repeatNested.xhtml");
+        HtmlSubmitInput submit = (HtmlSubmitInput) page.getElementById("form:refresh");
+        page = (HtmlPage) submit.click();
+
+        HtmlCheckBoxInput cell0_0 = (HtmlCheckBoxInput) page.getElementById("form:level1:0:level2:0:_");
+        assertTrue(cell0_0.isChecked());
+        
+        HtmlCheckBoxInput cell0_1 = (HtmlCheckBoxInput) page.getElementById("form:level1:0:level2:1:_");
+        assertFalse(cell0_1.isChecked());
+
+        HtmlCheckBoxInput cell1_0 = (HtmlCheckBoxInput) page.getElementById("form:level1:1:level2:0:_");
+        assertFalse(cell1_0.isChecked());
+
+        HtmlCheckBoxInput cell1_1 = (HtmlCheckBoxInput) page.getElementById("form:level1:1:level2:1:_");
+        assertFalse(cell1_1.isChecked());
+    }
+}
diff --git a/test/servlet31/pom.xml b/test/servlet31/pom.xml
new file mode 100644
index 0000000..1567a60
--- /dev/null
+++ b/test/servlet31/pom.xml
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.servlet31</groupId>
+    <artifactId>pom</artifactId>
+    <packaging>pom</packaging>
+    <name>Mojarra ${project.version} - Test - Servlet 3.1</name>
+    <dependencies>
+        <dependency>
+            <groupId>com.sun.faces.test</groupId>
+            <artifactId>util</artifactId>
+            <version>${project.version}</version>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+    <modules>
+        <module>facelets</module>
+    </modules>
+</project>
diff --git a/test/unit/pom.xml b/test/unit/pom.xml
new file mode 100644
index 0000000..a264182
--- /dev/null
+++ b/test/unit/pom.xml
@@ -0,0 +1,224 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test</groupId>
+    <artifactId>unit</artifactId>
+    <name>Mojarra ${project.version} - Test - Unit Tests</name>
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-antrun-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <phase>clean</phase>
+                        <goals>
+                            <goal>run</goal>
+                        </goals>
+                        <configuration>
+                            <target>
+                                <delete dir="${basedir}/src/main/java/com"/>
+                                <delete dir="${basedir}/src/main/java/javax"/>
+                                <delete dir="${basedir}/src/main/resources/com"/>
+                                <delete dir="${basedir}/src/main/resources/javax"/>
+                                <delete dir="${basedir}/src/main/resources/META-INF"/>
+                            </target>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-dependency-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <id>unpack-sources</id>
+                        <phase>generate-sources</phase>
+                        <goals>
+                            <goal>unpack</goal>
+                        </goals>
+                        <configuration>
+                            <artifactItems>
+                                <artifactItem>
+                                    <groupId>org.glassfish</groupId>
+                                    <artifactId>javax.faces</artifactId>
+                                    <version>${project.version}</version>
+                                    <type>jar</type>
+                                    <classifier>sources</classifier>
+                                    <overWrite>true</overWrite>
+                                </artifactItem>
+                            </artifactItems>
+                            <includes>**/*.java</includes>
+                            <outputDirectory>src/main/java</outputDirectory>
+                            <overWriteReleases>true</overWriteReleases>
+                            <overWriteSnapshots>true</overWriteSnapshots>
+                        </configuration>
+                    </execution>
+                    <execution>
+                        <id>unpack-classes</id>
+                        <phase>generate-resources</phase>
+                        <goals>
+                            <goal>unpack</goal>
+                        </goals>
+                        <configuration>
+                            <artifactItems>
+                                <artifactItem>
+                                    <groupId>org.glassfish</groupId>
+                                    <artifactId>javax.faces</artifactId>
+                                    <version>${project.version}</version>
+                                    <type>jar</type>
+                                    <overWrite>true</overWrite>
+                                </artifactItem>
+                            </artifactItems>
+                            <excludes>**/*.class</excludes>
+                            <outputDirectory>src/main/resources</outputDirectory>
+                            <overWriteReleases>true</overWriteReleases>
+                            <overWriteSnapshots>true</overWriteSnapshots>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>3.1</version>
+                <configuration>
+                    <source>1.6</source>
+                    <target>1.6</target>
+                    <showWarnings>true</showWarnings>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+    <dependencies>
+        <dependency>
+            <groupId>javax.enterprise</groupId>
+            <artifactId>cdi-api</artifactId>
+            <version>1.1</version>
+            <scope>provided</scope>
+            <optional>true</optional>
+        </dependency>
+        <dependency>
+            <groupId>org.codehaus.groovy</groupId>
+            <artifactId>groovy-all</artifactId>
+            <version>1.8.5</version>
+            <scope>provided</scope>
+            <optional>true</optional>
+        </dependency>
+        <dependency>
+            <groupId>org.easymock</groupId>
+            <artifactId>easymockclassextension</artifactId>
+            <version>3.1</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.glassfish.web</groupId>
+            <artifactId>javax.el</artifactId>
+            <version>2.2.3</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.glassfish</groupId>
+            <artifactId>javax.servlet</artifactId>
+            <version>3.1.1</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.glassfish</groupId>
+            <artifactId>javax.servlet.jsp</artifactId>
+            <version>3.1.1</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.powermock</groupId>
+            <artifactId>powermock-api-easymock</artifactId>
+            <version>1.4.11</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.powermock</groupId>
+            <artifactId>powermock-module-junit4</artifactId>
+            <version>1.4.11</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>commons-beanutils</groupId>
+            <artifactId>commons-beanutils</artifactId>
+            <version>1.8.3</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>commons-digester</groupId>
+            <artifactId>commons-digester</artifactId>
+            <version>2.1</version>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+    <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+    <reporting>
+        <plugins>
+            <plugin>
+                <groupId>org.codehaus.mojo</groupId>
+                <artifactId>cobertura-maven-plugin</artifactId>
+                <version>2.5.1</version>
+                <configuration>
+                    <formats>
+                        <format>html</format>
+                        <format>xml</format>
+                    </formats>
+                </configuration>
+            </plugin>
+        </plugins>
+    </reporting>
+</project>
diff --git a/test/unit/src/test/java/com/sun/faces/application/FacesMessageTest.java b/test/unit/src/test/java/com/sun/faces/application/FacesMessageTest.java
new file mode 100644
index 0000000..da41b01
--- /dev/null
+++ b/test/unit/src/test/java/com/sun/faces/application/FacesMessageTest.java
@@ -0,0 +1,137 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.application;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.InputStream;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+
+import javax.faces.application.FacesMessage;
+
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class FacesMessageTest {
+
+    // Case 0 (nothing)
+    @Test
+    public void testSerializeable() throws Exception {
+        FacesMessage message = null;
+        message = new FacesMessage();
+        persistAndCheck(message);
+    }
+
+    // Case 1 (summary)
+    @Test
+    public void testSerializeableSummary() throws Exception {
+        FacesMessage message = null;
+        message = new FacesMessage("This is a bad error.");
+        persistAndCheck(message);
+    }
+
+    // Case 2 (summary & detail)
+    @Test
+    public void testSerializeableSummaryDetail() throws Exception {
+        FacesMessage message = null;
+        message = new FacesMessage("This is a bad error.", "This is a really bad error.");
+        persistAndCheck(message);
+    }
+
+    // Case 3 (severity, summary & detail)
+    @Test
+    public void testSerializeableSummaryDetailSeverity() throws Exception {
+        FacesMessage message = null;
+        message = new FacesMessage(FacesMessage.SEVERITY_FATAL, "This is a bad error.",
+                "This is a really bad error.");
+        persistAndCheck(message);
+    }
+
+    private void persistAndCheck(FacesMessage message) {
+        FacesMessage message1 = null;
+        String mSummary, mSummary1 = null;
+        String mDetail, mDetail1 = null;
+        String severity, severity1 = null;
+        ByteArrayOutputStream bos = null;
+        ByteArrayInputStream bis = null;
+
+        mSummary = message.getSummary();
+        mDetail = message.getDetail();
+        severity = message.getSeverity().toString();
+
+        try {
+            bos = new ByteArrayOutputStream();
+            ObjectOutputStream oos = new ObjectOutputStream(bos);
+            oos.writeObject(message);
+            oos.close();
+            byte[] bytes = bos.toByteArray();
+            InputStream in = new ByteArrayInputStream(bytes);
+            ObjectInputStream ois = new ObjectInputStream(in);
+            message1 = (FacesMessage)ois.readObject();
+            ois.close();
+            mSummary1 = message1.getSummary();
+            mDetail1 = message1.getDetail();
+            severity1 = message1.getSeverity().toString();
+            if (null != mSummary1) {
+                assertTrue(mSummary1.equals(mSummary));
+            } else {
+                assertTrue(mSummary == null);
+            }
+            if (null != mDetail1) {
+                assertTrue(mDetail1.equals(mDetail));
+            } else {
+                assertTrue(mDetail == null);
+            }
+            if (null != severity1) {
+                assertTrue(severity1.equals(severity));
+            } else {
+                assertTrue(severity == null);
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+            assertTrue(false);
+        }
+    }
+
+
+
+}
diff --git a/test/unit/src/test/java/com/sun/faces/config/DigesterFactory.java b/test/unit/src/test/java/com/sun/faces/config/DigesterFactory.java
new file mode 100644
index 0000000..5d75e9a
--- /dev/null
+++ b/test/unit/src/test/java/com/sun/faces/config/DigesterFactory.java
@@ -0,0 +1,500 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.config;
+
+import javax.xml.parsers.ParserConfigurationException;
+import java.net.URL;
+import java.util.HashMap;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import org.apache.commons.digester.Digester;
+import org.apache.commons.logging.impl.NoOpLog;
+import org.xml.sax.ErrorHandler;
+import org.xml.sax.InputSource;
+import org.xml.sax.SAXException;
+import org.xml.sax.SAXNotRecognizedException;
+import org.xml.sax.SAXNotSupportedException;
+import org.xml.sax.SAXParseException;
+import org.xml.sax.helpers.DefaultHandler;
+import com.sun.faces.util.ToolsUtil;
+
+/**
+ * <p>
+ * A simple factory to hide <code>Digester</code> configuration details.</p>
+ */
+public class DigesterFactory {
+
+    private static final Logger logger = ToolsUtil.getLogger(ToolsUtil.FACES_LOGGER
+            + ToolsUtil.CONFIG_LOGGER);
+
+    /**
+     * <p>
+     * <code>Xerces</code> specific feature to enable both DTD and Schema
+     * validation.</p>
+     */
+    private static final String XERCES_VALIDATION
+            = "http://xml.org/sax/features/validation";
+
+    /**
+     * <p>
+     * <code>Xerces</code> specific feature to enable both DTD and Schema
+     * validation.</p>
+     */
+    private static final String XERCES_SCHEMA_VALIDATION
+            = "http://apache.org/xml/features/validation/schema";
+
+    /**
+     * <p>
+     * <code>Xerces</code> specific feature to enabled constraint
+     * validation.</p>
+     */
+    private static final String XERCES_SCHEMA_CONSTRAINT_VALIDATION
+            = "http://apache.org/xml/features/validation/schema-full-checking";
+
+    /**
+     * <p>
+     * Custom <code>EntityResolver</code>.</p>
+     */
+    private static final JsfEntityResolver RESOLVER = new JsfEntityResolver();
+
+    /**
+     * <p>
+     * Custom <code>ErrorHandler</code>.</p>
+     */
+    private static final JsfErrorHandler ERROR_HANDLER = new JsfErrorHandler();
+
+    /**
+     * <p>
+     * Indicates whether or not document validation is requested or not.</p>
+     */
+    private boolean validating;
+
+    /**
+     * <p>
+     * The <code>ThreadLocal</code> variable used to record the VersionListener
+     * instance for each processing thread.</p>
+     */
+    private static ThreadLocal versionListener = new ThreadLocal() {
+        @Override
+        protected Object initialValue() {
+            return (null);
+        }
+    };
+
+    // ------------------------------------------------------------ Constructors
+    /**
+     * <p>
+     * Creates a new DigesterFactory instance.</p>
+     *
+     * @param isValidating - <code>true</code> if the <code>Digester</code>
+     * instance that is ultimately returned should be configured (if possible)
+     * for document validation. If validation is not desired, pass
+     * <code>false</code>.
+     */
+    private DigesterFactory(boolean isValidating) {
+
+        validating = isValidating;
+    } // END DigesterFactory
+
+    // ---------------------------------------------------------- Public Methods
+    /**
+     * <p>
+     * Returns a new <code>DigesterFactory</code> instance that will create a
+     * non-validating <code>Digester</code> instance.</p>
+     * @return 
+     */
+    public static DigesterFactory newInstance() {
+        return DigesterFactory.newInstance(false);
+    } // END newInstance
+
+    /**
+     * <p>
+     * Creates a new <code>DigesterFactory</code> instance that will create a
+     * <code>Digester</code> instance where validation depends on the value of
+     * <code>isValidating</code>.</p>
+     *
+     * @param isValidating - <code>true</code> if the <code>Digester</code>
+     * instance that is ultimately returned should be configured (if possible)
+     * for document validation. If validation is not desired, pass
+     * <code>false</code>.
+     * @return a new <code>DigesterFactory</code> capable of creating
+     * <code>Digester</code>instances
+     */
+    public static DigesterFactory newInstance(boolean isValidating) {
+        DigesterFactory result = new DigesterFactory(isValidating);
+        return result;
+    } // END newInstance
+
+    /**
+     * <p>
+     * Creates a new <code>DigesterFactory</code> instance that will create a
+     * <code>Digester</code> instance where validation depends on the value of
+     * <code>isValidating</code>.</p>
+     *
+     * @param isValidating - <code>true</code> if the <code>Digester</code>
+     * instance that is ultimately returned should be configured (if possible)
+     * for document validation. If validation is not desired, pass
+     * <code>false</code>.
+     * @param listener
+     * @return a new <code>DigesterFactory</code> capable of creating
+     * <code>Digester</code>instances
+     */
+    public static DigesterFactory newInstance(boolean isValidating,
+            VersionListener listener) {
+        DigesterFactory result = new DigesterFactory(isValidating);
+        if (null != listener) {
+            result.RESOLVER.setVersionListener(listener);
+            versionListener.set(listener);
+        }
+
+        return result;
+
+    } // END newInstance
+
+    public static VersionListener getVersionListener() {
+        return ((VersionListener) versionListener.get());
+    }
+
+    public static void releaseDigester(Digester toRelease) {
+        RESOLVER.setVersionListener(null);
+        versionListener.set(null);
+    }
+
+    /**
+     * <p>
+     * Creates a new <code>Digester</code> instance configured for use with
+     * JSF.</p>
+     * @return 
+     */
+    public Digester createDigester() {
+        Digester digester = new Digester();
+        configureDigester(digester);
+        return digester;
+    } // END getDigester
+
+    /**
+     * <p>
+     * Implemented by a class that wants to be called as a particular
+     * configuration file is parsed.</p>
+     *
+     * <p>
+     * This interface is implemented as an anonymous inner class inside
+     * ConfigureListener.digester().</p>
+     */
+    public interface VersionListener {
+
+        /**
+         * <p>
+         * Called from the EntityResolver when we know one of the XML Grammar
+         * elements to which this config file conforms.</p>
+         * @param grammar       */
+        public void takeActionOnGrammar(String grammar);
+
+        /**
+         * <p>
+         * Called from the individual digester beans to cause the artifact to be
+         * associated with the current JSF spec level of the file being
+         * parsed.</p>
+         * @param artifactName
+         */
+        public void takeActionOnArtifact(String artifactName);
+    }
+
+    // --------------------------------------------------------- Private Methods
+    /**
+     * <p>
+     * Configures the provided <code>Digester</code> instance appropriate for
+     * use with JSF.</p>
+     *
+     * @param digester - the <code>Digester</code> instance to configure
+     */
+    private void configureDigester(Digester digester) {
+
+        digester.setNamespaceAware(true);
+        digester.setUseContextClassLoader(true);
+        digester.setEntityResolver(RESOLVER);
+        digester.setErrorHandler(ERROR_HANDLER);
+        // disable digester log messages
+        digester.setLogger(new NoOpLog());
+
+        if (validating) {
+
+            if (logger.isLoggable(Level.FINE)) {
+                logger.log(Level.FINE, "Attempting to configure Digester to perform"
+                        + " document validation.");
+            }
+
+            // In order to validate using *both* DTD and Schema, certain
+            // Xerces specific features are required.  Try to set these
+            // features.  If an exception is thrown trying to set these
+            // features, then disable validation.
+            try {
+                digester.setFeature(XERCES_VALIDATION, true);
+                digester.setFeature(XERCES_SCHEMA_VALIDATION, true);
+                digester.setFeature(XERCES_SCHEMA_CONSTRAINT_VALIDATION, true);
+                digester.setValidating(true);
+            } catch (SAXNotSupportedException e) {
+
+                if (logger.isLoggable(Level.WARNING)) {
+                    logger.log(Level.WARNING, "Attempt to set supported feature on XMLReader, "
+                            + "but the value provided was not accepted.  "
+                            + "Validation will be disabledb.");
+                }
+
+                digester.setValidating(false);
+
+            } catch (SAXNotRecognizedException e) {
+
+                if (logger.isLoggable(Level.WARNING)) {
+                    logger.log(Level.WARNING, "Attempt to set unsupported feature on XMLReader"
+                            + " necessary for validation.  Validation will be"
+                            + "disabled.");
+                }
+
+                digester.setValidating(false);
+
+            } catch (ParserConfigurationException e) {
+
+                if (logger.isLoggable(Level.WARNING)) {
+                    logger.log(Level.WARNING, "Digester unable to configure underlying parser."
+                            + "  Validation will be disabled.");
+                }
+
+                digester.setValidating(false);
+
+            }
+        } else {
+            digester.setValidating(false);
+        }
+
+    } // END configureDigester
+
+    // ----------------------------------------------------------- Inner Classes
+    private static class JsfEntityResolver extends DefaultHandler {
+
+        /**
+         * <p>
+         * Contains associations between grammar name and the physical
+         * resource.</p>
+         */
+        private static final String[][] DTD_SCHEMA_INFO = {
+            {
+                "web-facesconfig_1_0.dtd",
+                "/com/sun/faces/web-facesconfig_1_0.dtd"
+            },
+            {
+                "web-facesconfig_1_1.dtd",
+                "/com/sun/faces/web-facesconfig_1_1.dtd"
+            },
+            {
+                "web-facesconfig_1_2.xsd",
+                "/com/sun/faces/web-facesconfig_1_2.xsd"
+            },
+            {
+                "web-facesconfig_2_0.xsd",
+                "/com/sun/faces/web-facesconfig_2_0.xsd"
+            },
+            {
+                "web-facesconfig_2_2.xsd",
+                "/com/sun/faces/web-facesconfig_2_2.xsd"
+            },
+            {
+                "javaee_5.xsd",
+                "/com/sun/faces/javaee_5.xsd"
+            },
+            {
+                "javaee_7.xsd",
+                "/com/sun/faces/javaee_7.xsd"
+            },
+            {
+                "javaee_web_services_client_1_2.xsd",
+                "/com/sun/faces/javaee_web_services_client_1_2.xsd"
+            },
+            {
+                "javaee_web_services_client_1_4.xsd",
+                "/com/sun/faces/javaee_web_services_client_1_4.xsd"
+            },
+            {
+                "xml.xsd",
+                "/com/sun/faces/xml.xsd"
+            }
+        };
+
+        /**
+         * <p>
+         * Contains mapping between grammar name and the local URL to the
+         * physical resource.</p>
+         */
+        private HashMap<String, String> entities = new HashMap<String, String>();
+
+        // -------------------------------------------------------- Constructors
+        public JsfEntityResolver() {
+
+            // Add mappings between last segment of system ID and
+            // the expected local physical resource.  If the resource
+            // cannot be found, then rely on default entity resolution
+            // and hope a firewall isn't in the way or a proxy has
+            // been configured
+            for (String[] aDTD_SCHEMA_INFO : DTD_SCHEMA_INFO) {
+                URL url = this.getClass().getResource(aDTD_SCHEMA_INFO[1]);
+                if (url == null) {
+                    if (logger.isLoggable(Level.WARNING)) {
+                        logger.log(Level.WARNING,
+                                "Unable to locate local resource '"
+                                + aDTD_SCHEMA_INFO[1]
+                                + "'.  Standard entity "
+                                + "resolution will be used when request "
+                                + "is present for '"
+                                + aDTD_SCHEMA_INFO[0] + '\'');
+                    }
+                } else {
+                    entities.put(aDTD_SCHEMA_INFO[0], url.toString());
+                }
+            }
+
+        } // END JsfEntityResolver
+
+        private VersionListener versionListener;
+
+        public void setVersionListener(VersionListener listener) {
+            versionListener = listener;
+        }
+
+        public VersionListener getVersionListener() {
+            return versionListener;
+        }
+
+        // ----------------------------------------- Methods from DefaultHandler
+        /**
+         * <p>
+         * Resolves the physical resource using the last segment of the
+         * <code>systemId</code> (e.g.
+         * http://java.sun.com/dtds/web-facesconfig_1_1.dtd, the last segment
+         * would be web-facesconfig_1_1.dtd). If a mapping cannot be found for
+         * the segment, then defer to the <code>DefaultHandler</code> for
+         * resolution.</p>
+         */
+        @Override
+        public InputSource resolveEntity(String publicId, String systemId)
+                throws SAXException {
+
+            // publicId is ignored.  Resolution performed using
+            // the systemId.
+            // If no system ID, defer to superclass
+            if (systemId == null) {
+                InputSource result;
+                try {
+                    result = super.resolveEntity(publicId, systemId);
+                } catch (Exception e) {
+                    throw new SAXException(e);
+                }
+                return result;
+            }
+
+            String grammarName
+                    = systemId.substring(systemId.lastIndexOf('/') + 1);
+            if (null != getVersionListener()) {
+                getVersionListener().takeActionOnGrammar(grammarName);
+            }
+
+            String entityURL = entities.get(grammarName);
+
+            InputSource source;
+            if (entityURL == null) {
+                // we don't have a registered mapping, so defer to our
+                // superclass for resolution
+
+                if (logger.isLoggable(Level.FINE)) {
+                    logger.log(Level.FINE, "Unknown entity, deferring to superclass.");
+                }
+                try {
+                    source = super.resolveEntity(publicId, systemId);
+                } catch (Exception e) {
+                    throw new SAXException(e);
+                }
+
+            } else {
+
+                try {
+                    source = new InputSource(new URL(entityURL).openStream());
+                } catch (Exception e) {
+                    if (logger.isLoggable(Level.WARNING)) {
+                        logger.log(Level.WARNING, "Unable to create InputSource for URL '"
+                                + entityURL + "'");
+                    }
+
+                    source = null;
+                }
+            }
+
+            // Set the System ID of the InputSource with the URL of the local
+            // resource - necessary to prevent parsing errors
+            if (source != null) {
+                source.setSystemId(entityURL);
+
+                if (publicId != null) {
+                    source.setPublicId(publicId);
+                }
+            }
+
+            return source;
+
+        } // END resolveEntity
+
+    } // END JsfEntityResolver
+
+    private static class JsfErrorHandler implements ErrorHandler {
+
+        @Override
+        public void warning(SAXParseException exception) throws SAXException {
+            // do nothing
+        }
+
+        @Override
+        public void error(SAXParseException exception) throws SAXException {
+            throw exception;
+        }
+
+        @Override
+        public void fatalError(SAXParseException exception) throws SAXException {
+            throw exception;
+        }
+    }
+}
diff --git a/test/unit/src/test/java/com/sun/faces/el/CompositeComponentAttributesELResolverTest.java b/test/unit/src/test/java/com/sun/faces/el/CompositeComponentAttributesELResolverTest.java
new file mode 100644
index 0000000..47ff0be
--- /dev/null
+++ b/test/unit/src/test/java/com/sun/faces/el/CompositeComponentAttributesELResolverTest.java
@@ -0,0 +1,112 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.el;
+
+import com.sun.faces.facelets.tag.composite.CompositeComponentBeanInfo;
+import java.beans.BeanDescriptor;
+import java.beans.BeanInfo;
+import java.beans.PropertyDescriptor;
+import java.beans.SimpleBeanInfo;
+import java.lang.reflect.Field;
+import java.util.HashMap;
+import java.util.Map;
+import javax.el.ELContext;
+import javax.el.MapELResolver;
+import javax.faces.application.Resource;
+import javax.faces.component.UIComponent;
+import javax.faces.component.UIPanel;
+import javax.faces.context.FacesContext;
+import org.easymock.EasyMock;
+import org.junit.Test;
+import static org.junit.Assert.*;
+import static org.easymock.EasyMock.*;
+
+/**
+ * The JUnit tests for the CompositeComponentAttributesELResolver class.
+ *
+ * @author Manfred Riem (manfred.riem at oracle.com)
+ */
+public class CompositeComponentAttributesELResolverTest {
+
+    /**
+     * Test issue #2508.
+     */
+    @Test
+    public void testGetValue() throws Exception {
+        ELContext elContext1 = EasyMock.createNiceMock(ELContext.class);
+        FacesContext facesContext1 = EasyMock.createNiceMock(FacesContext.class);
+        ELContext elContext2 = EasyMock.createNiceMock(ELContext.class);
+        FacesContext facesContext2 = EasyMock.createNiceMock(FacesContext.class);
+        
+        HashMap<Object, Object> ctxAttributes1 = new HashMap<Object, Object>();
+        UIPanel composite = new UIPanel();
+        CompositeComponentBeanInfo compositeBeanInfo = new CompositeComponentBeanInfo();
+        BeanDescriptor beanDescriptor = new BeanDescriptor(composite.getClass());
+        compositeBeanInfo.setBeanDescriptor(beanDescriptor);
+        composite.getAttributes().put(Resource.COMPONENT_RESOURCE_KEY, "dummy");
+        composite.getAttributes().put(UIComponent.BEANINFO_KEY, compositeBeanInfo);
+        String property = "attrs";
+
+        expect(elContext1.getContext(FacesContext.class)).andReturn(facesContext1);
+        expect(facesContext1.getAttributes()).andReturn(ctxAttributes1);
+        expect(elContext2.getContext(FacesContext.class)).andReturn(facesContext2);
+        expect(facesContext2.getAttributes()).andReturn(ctxAttributes1);
+        replay(elContext1, facesContext1, elContext2, facesContext2);
+        
+        CompositeComponentAttributesELResolver elResolver = new CompositeComponentAttributesELResolver();
+        Map<String, Object> evalMap1 = (Map<String, Object>) elResolver.getValue(elContext1, composite, property);
+        assertNotNull(evalMap1);
+        Map<String, Object> evalMap2 = (Map<String, Object>) elResolver.getValue(elContext2, composite, property);
+        assertNotNull(evalMap2);
+        
+        Field ctxField1 = evalMap1.getClass().getDeclaredField("ctx");
+        ctxField1.setAccessible(true);       
+        Field ctxField2 = evalMap2.getClass().getDeclaredField("ctx");
+        ctxField2.setAccessible(true);
+
+        assertTrue(evalMap1 == evalMap2);
+        assertTrue(facesContext1 != ctxField1.get(evalMap1));
+        assertTrue(facesContext2 == ctxField1.get(evalMap1));
+        assertTrue(facesContext1 != ctxField2.get(evalMap2));
+        assertTrue(facesContext2 == ctxField2.get(evalMap2));
+        
+        verify(elContext1, facesContext1, elContext2, facesContext2);
+    }
+}
diff --git a/test/unit/src/test/java/com/sun/faces/facelets/component/UIRepeatTest.java b/test/unit/src/test/java/com/sun/faces/facelets/component/UIRepeatTest.java
new file mode 100644
index 0000000..0b49759
--- /dev/null
+++ b/test/unit/src/test/java/com/sun/faces/facelets/component/UIRepeatTest.java
@@ -0,0 +1,57 @@
+package com.sun.faces.facelets.component;
+
+import static org.easymock.EasyMock.expect;
+import static org.easymock.EasyMock.replay;
+
+import java.lang.reflect.Method;
+
+import javax.faces.application.FacesMessage;
+import javax.faces.application.FacesMessage.Severity;
+import javax.faces.context.FacesContext;
+
+import junit.framework.TestCase;
+
+import org.easymock.EasyMock;
+import org.easymock.IAnswer;
+import org.junit.Test;
+
+public class UIRepeatTest extends TestCase {
+
+	private FacesContext jsf;
+
+	private FacesMessage.Severity maximumSeverity = FacesMessage.SEVERITY_WARN;
+
+	private Method uiRepeatHasErrorMessages;
+
+	@Test
+	public void testHasErrorMessages() throws Exception {
+		jsf = EasyMock.createMock(FacesContext.class);
+		expect(jsf.getMaximumSeverity()).andAnswer(new IAnswer<Severity>() {
+			@Override
+			public Severity answer() throws Throwable {
+				return maximumSeverity;
+			}
+		}).anyTimes();
+		replay(jsf);
+
+		maximumSeverity = FacesMessage.SEVERITY_WARN;
+		assertEquals(false, hasErrorMessages(jsf));
+		maximumSeverity = FacesMessage.SEVERITY_INFO;
+		assertEquals(false, hasErrorMessages(jsf));
+		maximumSeverity = FacesMessage.SEVERITY_ERROR;
+		assertEquals(true, hasErrorMessages(jsf));
+		maximumSeverity = FacesMessage.SEVERITY_FATAL;
+		assertEquals(true, hasErrorMessages(jsf));
+	}
+
+	private boolean hasErrorMessages(FacesContext context) throws Exception {
+		if (uiRepeatHasErrorMessages == null) {
+			Class<?> uiRepeatClass = Class.forName(UIRepeat.class.getName());
+			uiRepeatHasErrorMessages = uiRepeatClass.getDeclaredMethod(
+					"hasErrorMessages", new Class[] { FacesContext.class });
+			uiRepeatHasErrorMessages.setAccessible(true);
+		}
+		return (Boolean)uiRepeatHasErrorMessages.invoke(new UIRepeat(),
+				new Object[] { context });
+	}
+}
diff --git a/test/unit/src/test/java/com/sun/faces/facelets/util/ClasspathTestCase.java b/test/unit/src/test/java/com/sun/faces/facelets/util/ClasspathTestCase.java
new file mode 100644
index 0000000..1328d88
--- /dev/null
+++ b/test/unit/src/test/java/com/sun/faces/facelets/util/ClasspathTestCase.java
@@ -0,0 +1,65 @@
+
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.facelets.util;
+
+import java.util.jar.JarFile;
+import static junit.framework.Assert.assertNull;
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+public class ClasspathTestCase extends TestCase {
+
+    public static Test suite() {
+        return (new TestSuite(ClasspathTestCase.class));
+    }
+
+    public void testGetAlternativeJarFile() throws Exception {
+        String input = "rar:/scratch/fleme/fmwhome/AS11gR1SOA/soa/connectors/FileAdapter.rar!fileAdapter.jar!/META-INF/";
+
+        JarFile output = Classpath.getAlternativeJarFile(input);
+        assertNull(output);
+
+        input = "/scratch/ejburns/Documents/JavaEE/workareas/i_mojarra_1869/jsf-test/JAVASERVERFACES-1869/reproducer/FileAdapter.rar!fileAdapter.jar!/META-INF/";
+        output = Classpath.getAlternativeJarFile(input);
+        assertNull(output);
+    }
+}
diff --git a/test/unit/src/test/java/com/sun/faces/junit/JUnitFacesTestCaseBase.java b/test/unit/src/test/java/com/sun/faces/junit/JUnitFacesTestCaseBase.java
new file mode 100644
index 0000000..a900ca2
--- /dev/null
+++ b/test/unit/src/test/java/com/sun/faces/junit/JUnitFacesTestCaseBase.java
@@ -0,0 +1,142 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.junit;
+
+import com.sun.faces.mock.MockApplication;
+import com.sun.faces.mock.MockExternalContext;
+import com.sun.faces.mock.MockFacesContext;
+import com.sun.faces.mock.MockHttpServletRequest;
+import com.sun.faces.mock.MockHttpServletResponse;
+import com.sun.faces.mock.MockHttpSession;
+import com.sun.faces.mock.MockLifecycle;
+import com.sun.faces.mock.MockServletConfig;
+import com.sun.faces.mock.MockServletContext;
+import java.lang.reflect.Method;
+import java.util.HashMap;
+import java.util.Map;
+import javax.faces.FactoryFinder;
+import javax.faces.application.ApplicationFactory;
+import javax.faces.context.FacesContextFactory;
+import javax.faces.lifecycle.LifecycleFactory;
+import junit.framework.TestCase;
+
+public class JUnitFacesTestCaseBase extends TestCase {
+
+    protected MockApplication application = null;
+    protected MockServletConfig config = null;
+    protected MockHttpServletRequest request = null;
+    protected MockHttpServletResponse response = null;
+    protected MockServletContext servletContext = null;
+    protected MockExternalContext externalContext = null;
+    protected MockFacesContext facesContext = null;
+    protected MockLifecycle lifecycle = null;
+    protected MockHttpSession session = null;
+
+    public JUnitFacesTestCaseBase(String name) {
+        super(name);
+    }
+
+    @Override
+    public void setUp() throws Exception {
+        super.setUp();
+
+        // Set up Servlet API Objects
+        servletContext = new MockServletContext();
+        servletContext.addInitParameter("appParamName", "appParamValue");
+        servletContext.setAttribute("appScopeName", "appScopeValue");
+        config = new MockServletConfig(servletContext);
+        session = new MockHttpSession();
+        session.setAttribute("sesScopeName", "sesScopeValue");
+        request = new MockHttpServletRequest(session);
+        request.setAttribute("reqScopeName", "reqScopeValue");
+        response = new MockHttpServletResponse();
+
+        // Set up Faces API Objects
+        FactoryFinder.releaseFactories();
+        Method reInitializeFactoryManager = FactoryFinder.class.getDeclaredMethod("reInitializeFactoryManager", (Class<?>[]) null);
+        reInitializeFactoryManager.setAccessible(true);
+        reInitializeFactoryManager.invoke(null, (Object[]) null);
+
+        // Create something to stand-in as the InitFacesContext
+        new MockFacesContext(new MockExternalContext(servletContext, request, response),
+                new MockLifecycle());
+
+        FactoryFinder.setFactory(FactoryFinder.FACES_CONTEXT_FACTORY,
+                "com.sun.faces.mock.MockFacesContextFactory");
+        FactoryFinder.setFactory(FactoryFinder.LIFECYCLE_FACTORY,
+                "com.sun.faces.mock.MockLifecycleFactory");
+        FactoryFinder.setFactory(FactoryFinder.APPLICATION_FACTORY,
+                "com.sun.faces.mock.MockApplicationFactory");
+        FactoryFinder.setFactory(FactoryFinder.RENDER_KIT_FACTORY,
+                "com.sun.faces.mock.MockRenderKitFactory");
+        FacesContextFactory fcFactory = (FacesContextFactory) FactoryFinder.getFactory(FactoryFinder.FACES_CONTEXT_FACTORY);
+        LifecycleFactory lFactory = (LifecycleFactory) FactoryFinder.getFactory(FactoryFinder.LIFECYCLE_FACTORY);
+        lifecycle = (MockLifecycle) lFactory.getLifecycle(LifecycleFactory.DEFAULT_LIFECYCLE);
+        facesContext = (MockFacesContext) fcFactory.getFacesContext(servletContext, request, response, lifecycle);
+        externalContext = (MockExternalContext) facesContext.getExternalContext();
+        Map map = new HashMap();
+        externalContext.setRequestParameterMap(map);
+
+        ApplicationFactory applicationFactory = (ApplicationFactory) FactoryFinder.getFactory(FactoryFinder.APPLICATION_FACTORY);
+        application = (MockApplication) applicationFactory.getApplication();
+        facesContext.setApplication(application);
+
+    }
+
+    @Override
+    public void tearDown() throws Exception {
+        FactoryFinder.releaseFactories();
+        Method reInitializeFactoryManager = FactoryFinder.class.getDeclaredMethod("reInitializeFactoryManager", (Class<?>[]) null);
+        reInitializeFactoryManager.setAccessible(true);
+        reInitializeFactoryManager.invoke(null, (Object[]) null);
+
+        application = null;
+        config = null;
+        externalContext = null;
+        facesContext = null;
+        lifecycle = null;
+        request = null;
+        response = null;
+        servletContext = null;
+        session = null;
+
+        super.tearDown();
+    }
+}
diff --git a/test/unit/src/test/java/com/sun/faces/mock/MockApplication.java b/test/unit/src/test/java/com/sun/faces/mock/MockApplication.java
new file mode 100644
index 0000000..07116c1
--- /dev/null
+++ b/test/unit/src/test/java/com/sun/faces/mock/MockApplication.java
@@ -0,0 +1,1085 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.mock;
+
+import java.lang.reflect.Constructor;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Locale;
+import java.util.Map;
+import java.util.ResourceBundle;
+import java.util.Set;
+import java.util.concurrent.Callable;
+import java.util.concurrent.CancellationException;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentMap;
+import java.util.concurrent.CopyOnWriteArraySet;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.Future;
+import java.util.concurrent.FutureTask;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.el.ELContextListener;
+import javax.el.ELException;
+import javax.el.ELResolver;
+import javax.el.ExpressionFactory;
+import javax.el.ValueExpression;
+import javax.faces.FacesException;
+import javax.faces.application.*;
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.convert.Converter;
+import javax.faces.el.MethodBinding;
+import javax.faces.el.PropertyResolver;
+import javax.faces.el.ValueBinding;
+import javax.faces.el.VariableResolver;
+import javax.faces.event.AbortProcessingException;
+import javax.faces.event.ActionEvent;
+import javax.faces.event.ActionListener;
+import javax.faces.event.SystemEvent;
+import javax.faces.event.SystemEventListener;
+import javax.faces.event.SystemEventListenerHolder;
+import javax.faces.validator.Validator;
+import javax.servlet.ServletContext;
+import com.sun.el.ExpressionFactoryImpl;
+
+public class MockApplication extends Application {
+
+    private static final Logger LOGGER = Logger.getLogger("MockApplication");
+    private final SystemEventHelper systemEventHelper = new SystemEventHelper();
+    private final ComponentSystemEventHelper compSysEventHelper = new ComponentSystemEventHelper();
+
+    public MockApplication() {
+        addComponent("TestNamingContainer",
+                "javax.faces.webapp.TestNamingContainer");
+        addComponent("TestComponent", "javax.faces.webapp.TestComponent");
+        addComponent("TestInput", "javax.faces.component.UIInput");
+        addComponent("TestOutput", "javax.faces.component.UIOutput");
+        addConverter("Integer", "javax.faces.convert.IntegerConverter");
+        addConverter("javax.faces.Number",
+                "javax.faces.convert.NumberConverter");
+        addConverter("javax.faces.Long",
+                "javax.faces.convert.LongConverter");
+        addValidator("Length", "javax.faces.validator.LengthValidator");
+        servletContext = new MockServletContext();
+    }
+
+    private ServletContext servletContext = null;
+    private ActionListener actionListener = null;
+    private static boolean processActionCalled = false;
+
+    public ActionListener getActionListener() {
+        if (null == actionListener) {
+            actionListener = new ActionListener() {
+                public void processAction(ActionEvent e) {
+                    processActionCalled = true;
+                }
+
+                // see if the other object is the same as our
+                // anonymous inner class implementation.
+                public boolean equals(Object otherObj) {
+                    if (!(otherObj instanceof ActionListener)) {
+                        return false;
+                    }
+                    ActionListener other = (ActionListener) otherObj;
+
+                    processActionCalled = false;
+                    other.processAction(null);
+                    boolean result = processActionCalled;
+                    processActionCalled = false;
+                    return result;
+                }
+            };
+        }
+
+        return (this.actionListener);
+    }
+
+    public void setActionListener(ActionListener actionListener) {
+        this.actionListener = actionListener;
+    }
+
+    private NavigationHandler navigationHandler = null;
+
+    public NavigationHandler getNavigationHandler() {
+        return (this.navigationHandler);
+    }
+
+    public void setNavigationHandler(NavigationHandler navigationHandler) {
+        this.navigationHandler = navigationHandler;
+    }
+
+    private ResourceHandler resourceHandler = new MockResourceHandler();
+
+    @Override
+    public ResourceHandler getResourceHandler() {
+        return resourceHandler;
+    }
+
+    @Override
+    public void setResourceHandler(ResourceHandler resourceHandler) {
+        this.resourceHandler = resourceHandler;
+    }
+
+    private PropertyResolver propertyResolver = null;
+
+    public PropertyResolver getPropertyResolver() {
+        if (propertyResolver == null) {
+            propertyResolver = new MockPropertyResolver();
+        }
+        return (this.propertyResolver);
+    }
+
+    public void setPropertyResolver(PropertyResolver propertyResolver) {
+        this.propertyResolver = propertyResolver;
+    }
+
+    public MethodBinding createMethodBinding(String ref, Class params[]) {
+        if (ref == null) {
+            throw new NullPointerException();
+        } else {
+            return (new MockMethodBinding(this, ref, params));
+        }
+    }
+
+    public ValueBinding createValueBinding(String ref) {
+        if (ref == null) {
+            throw new NullPointerException();
+        } else {
+            return (new MockValueBinding(this, ref));
+        }
+    }
+
+    // PENDING(edburns): implement
+    public void addELResolver(ELResolver resolver) {
+    }
+
+    // PENDING(edburns): implement
+    public ELResolver getELResolver() {
+        return null;
+    }
+
+    private ExpressionFactory expressionFactory = null;
+
+    public ExpressionFactory getExpressionFactory() {
+        if (null == expressionFactory) {
+            expressionFactory = new ExpressionFactoryImpl();
+        }
+        return expressionFactory;
+    }
+
+    public Object evaluateExpressionGet(FacesContext context,
+            String expression,
+            Class expectedType) throws ELException {
+        ValueExpression ve = getExpressionFactory().createValueExpression(context.getELContext(), expression, expectedType);
+        return ve.getValue(context.getELContext());
+    }
+
+    private VariableResolver variableResolver = null;
+
+    public VariableResolver getVariableResolver() {
+        if (variableResolver == null) {
+            variableResolver = new MockVariableResolver();
+        }
+        return (this.variableResolver);
+    }
+
+    public void setVariableResolver(VariableResolver variableResolver) {
+        this.variableResolver = variableResolver;
+    }
+
+    private ViewHandler viewHandler = null;
+
+    public ViewHandler getViewHandler() {
+        if (null == viewHandler) {
+            viewHandler = new MockViewHandler();
+        }
+        return (this.viewHandler);
+    }
+
+    public void setViewHandler(ViewHandler viewHandler) {
+        this.viewHandler = viewHandler;
+    }
+
+    private StateManager stateManager = null;
+
+    public StateManager getStateManager() {
+        if (null == stateManager) {
+            stateManager = new MockStateManager();
+        }
+        return (this.stateManager);
+    }
+
+    public void setStateManager(StateManager stateManager) {
+        this.stateManager = stateManager;
+    }
+
+    private Map components = new HashMap();
+
+    public void addComponent(String componentType, String componentClass) {
+        components.put(componentType, componentClass);
+    }
+
+    public UIComponent createComponent(String componentType) {
+        String componentClass = (String) components.get(componentType);
+        try {
+            Class clazz = Class.forName(componentClass);
+            return ((UIComponent) clazz.newInstance());
+        } catch (Exception e) {
+            throw new FacesException(e);
+        }
+    }
+
+    public UIComponent createComponent(ValueBinding componentBinding,
+            FacesContext context,
+            String componentType)
+            throws FacesException {
+        throw new FacesException(new UnsupportedOperationException());
+    }
+
+    public UIComponent createComponent(ValueExpression componentExpression,
+            FacesContext context,
+            String componentType)
+            throws FacesException {
+        throw new FacesException(new UnsupportedOperationException());
+    }
+
+    public Iterator getComponentTypes() {
+        return (components.keySet().iterator());
+    }
+
+    private Map converters = new HashMap();
+
+    public void addConverter(String converterId, String converterClass) {
+        converters.put(converterId, converterClass);
+    }
+
+    public void addConverter(Class targetClass, String converterClass) {
+        throw new UnsupportedOperationException();
+    }
+
+    public Converter createConverter(String converterId) {
+        String converterClass = (String) converters.get(converterId);
+        try {
+            Class clazz = Class.forName(converterClass);
+            return ((Converter) clazz.newInstance());
+        } catch (Exception e) {
+            throw new FacesException(e);
+        }
+    }
+
+    public Converter createConverter(Class targetClass) {
+        throw new UnsupportedOperationException();
+    }
+
+    public Iterator getConverterIds() {
+        return (converters.keySet().iterator());
+    }
+
+    public Iterator getConverterTypes() {
+        throw new UnsupportedOperationException();
+    }
+
+    private String messageBundle = null;
+
+    public void setMessageBundle(String messageBundle) {
+        this.messageBundle = messageBundle;
+    }
+
+    public String getMessageBundle() {
+        return messageBundle;
+    }
+
+    private Map validators = new HashMap();
+
+    public void addValidator(String validatorId, String validatorClass) {
+        validators.put(validatorId, validatorClass);
+    }
+
+    public Validator createValidator(String validatorId) {
+        String validatorClass = (String) validators.get(validatorId);
+        try {
+            Class clazz = Class.forName(validatorClass);
+            return ((Validator) clazz.newInstance());
+        } catch (Exception e) {
+            throw new FacesException(e);
+        }
+    }
+
+    public Iterator getValidatorIds() {
+        return (validators.keySet().iterator());
+    }
+
+    public Iterator getSupportedLocales() {
+        return Collections.EMPTY_LIST.iterator();
+    }
+
+    public void setSupportedLocales(Collection newLocales) {
+    }
+
+    public void addELContextListener(ELContextListener listener) {
+        // PENDING(edburns): maybe implement
+    }
+
+    public void removeELContextListener(ELContextListener listener) {
+        // PENDING(edburns): maybe implement
+    }
+
+    public ELContextListener[] getELContextListeners() {
+        // PENDING(edburns): maybe implement
+        return (ELContextListener[]) java.lang.reflect.Array.newInstance(ELContextListener.class,
+                0);
+    }
+
+    public Locale getDefaultLocale() {
+        return Locale.getDefault();
+    }
+
+    public void setDefaultLocale(Locale newLocale) {
+    }
+
+    public String getDefaultRenderKitId() {
+        return null;
+    }
+
+    public void setDefaultRenderKitId(String renderKitId) {
+    }
+
+    public ResourceBundle getResourceBundle(FacesContext ctx, String name) {
+        return null;
+    }
+
+    /**
+     * <p class="changed_added_2_0">If there are one or more listeners for
+     * events of the type represented by <code>systemEventClass</code>, call
+     * those listeners, passing <code>source</code> as the source of the event.
+     * The implementation should be as fast as possible in determining whether
+     * or not a listener for the given <code>systemEventClass</code> and
+     * <code>source</code> has been installed, and should return immediately
+     * once such a determination has been made. The implementation of
+     * <code>publishEvent</code> must honor the requirements stated in
+     * {@link #subscribeToEvent} regarding the storage and retrieval of listener
+     * instances.</p>
+     *
+     * <div class="changed_added_2_0">
+     *
+     * <p>
+     * The default implementation must implement an algorithm semantically
+     * equivalent to the following to locate listener instances and to invoke
+     * them.</p>
+     *
+     * <ul>
+     *
+     * <li><p>
+     * If the <code>source</code> argument implements {@link
+     * javax.faces.event.SystemEventListenerHolder}, call {@link
+     * javax.faces.event.SystemEventListenerHolder#getListenersForEventClass} on
+     * it, passing the <code>systemEventClass</code> argument. If the list is
+     * not empty, perform algorithm
+     * <em>traverseListenerList</em> on the list.</p></li>
+     *
+     * <li><p>
+     * If any <code>Application</code> level listeners have been installed by
+     * previous calls to {@link
+     * #subscribeToEvent(Class, Class,
+     *     javax.faces.event.SystemEventListener)}, perform algorithm
+     * <em>traverseListenerList</em> on the list.</p></li>
+     *
+     * <li><p>
+     * If any <code>Application</code> level listeners have been installed by
+     * previous calls to {@link
+     * #subscribeToEvent(Class, javax.faces.event.SystemEventListener)}, perform
+     * algorithm <em>traverseListenerList</em> on the list.</p></li>
+     *
+     * </ul>
+     *
+     * <p>
+     * If the act of invoking the <code>processListener</code> method causes an
+     * {@link javax.faces.event.AbortProcessingException} to be thrown,
+     * processing of the listeners must be aborted.</p>
+     *
+     * RELEASE_PENDING (edburns,rogerk) it may be prudent to specify how the
+     * abortprocessingexception should be handled. Logged or thrown?
+     *
+     * <p>
+     * Algorithm <em>traverseListenerList</em>: For each listener in the
+     * list,</p>
+     *
+     * <ul>
+     *
+     * <li><p>
+     * Call {@link
+     * javax.faces.event.SystemEventListener#isListenerForSource}, passing the
+     * <code>source</code> argument. If this returns <code>false</code>, take no
+     * action on the listener.</p></li>
+     *
+     * <li><p>
+     * Otherwise, if the event to be passed to the listener instances has not
+     * yet been constructed, construct the event, passing <code>source</code> as
+     * the argument to the one-argument constructor that takes an
+     * <code>Object</code>. This same event instance must be passed to all
+     * listener instances.</p></li>
+     *
+     * <li><p>
+     * Call {@link javax.faces.event.SystemEvent#isAppropriateListener}, passing
+     * the listener instance as the argument. If this returns
+     * <code>false</code>, take no action on the listener.</p></li>
+     *
+     * <li><p>
+     * Call {@link javax.faces.event.SystemEvent#processListener}, passing the
+     * listener instance. </p></li>
+     *
+     * </ul>
+     * </div>
+     *
+     * @param systemEventClass The <code>Class</code> of event that is being
+     * published.
+     * @param source The source for the event of type
+     * <code>systemEventClass</code>.
+     *
+     * @throws NullPointerException if either <code>systemEventClass</code> or
+     * <code>source</code> is <code>null</code>
+     *
+     * @since 2.0
+     */
+    public void publishEvent(FacesContext context,
+            Class<? extends SystemEvent> systemEventClass,
+            Object source) {
+
+        if (systemEventClass == null) {
+            throw new NullPointerException("systemEventClass");
+        }
+        if (source == null) {
+            throw new NullPointerException("source");
+        }
+
+        try {
+            // The side-effect of calling invokeListenersFor
+            // will create a SystemEvent object appropriate to event/source
+            // combination.  This event will be passed on subsequent invocations
+            // of invokeListenersFor
+            SystemEvent event;
+
+            // Look for and invoke any listeners stored on the source instance.
+            event = invokeComponentListenersFor(systemEventClass, source);
+
+            // look for and invoke any listeners stored on the application
+            // using source type.
+            event = invokeListenersFor(systemEventClass, event, source, true);
+
+            // look for and invoke any listeners not specific to the source class
+            invokeListenersFor(systemEventClass, event, source, false);
+        } catch (AbortProcessingException ape) {
+            if (LOGGER.isLoggable(Level.SEVERE)) {
+                LOGGER.log(Level.SEVERE,
+                        ape.getMessage(),
+                        ape);
+            }
+        }
+    }
+
+    /**
+     * <p class="changed_added_2_0">Install the listener instance referenced by
+     * argument <code>listener</code> into the application as a listener for
+     * events of type <code>systemEventClass</code> that originate from objects
+     * of type <code>sourceClass</code>.</p>
+     *
+     * <div class="changed_added_2_0">
+     *
+     * <p>
+     * If argument <code>sourceClass</code> is non-<code>null</code>,
+     * <code>sourceClass</code> and <code>systemEventClass</code> must be used
+     * to store the argument <code>listener</code> in the application in such a
+     * way that the <code>listener</code> can be quickly looked up by the
+     * implementation of
+     * {@link javax.faces.application.Application#publishEvent} given
+     * <code>systemEventClass</code> and an instance of the <code>Class</code>
+     * referenced by <code>sourceClass</code>. If argument
+     * <code>sourceClass</code> is <code>null</code>, the <code>listener</code>
+     * must be discoverable by the implementation of
+     * {@link javax.faces.application.Application#publishEvent} given only
+     * <code>systemEventClass</code>.
+     * </p>
+     *
+     * </div>
+     *
+     * @param systemEventClass the <code>Class</code> of event for which
+     * <code>listener</code> must be fired.
+     *
+     * @param sourceClass the <code>Class</code> of the instance which causes
+     * events of type <code>systemEventClass</code> to be fired. May be
+     * <code>null</code>.
+     *
+     * @param listener the implementation of {@link
+     * javax.faces.event.SystemEventListener} whose {@link
+     * javax.faces.event.SystemEventListener#processEvent} method must be called
+     * when events of type <code>systemEventClass</code> are fired.
+     *
+     * @throws <code>NullPointerException</code> if any combination of
+     * <code>systemEventClass</code>, or <code>listener</code> are
+     * <code>null</code>.
+     *
+     * @since 2.0
+     */
+    public void subscribeToEvent(Class<? extends SystemEvent> systemEventClass,
+            Class<?> sourceClass,
+            SystemEventListener listener) {
+
+        if (systemEventClass == null) {
+            throw new NullPointerException("systemEventClass");
+        }
+        if (listener == null) {
+            throw new NullPointerException("listener");
+        }
+
+        Set<SystemEventListener> listeners
+                = getListeners(systemEventClass, sourceClass);
+        listeners.add(listener);
+
+    }
+
+    /**
+     * <p class="changed_added_2_0">Install the listener instance referenced by
+     * argument <code>listener</code> into application as a listener for events
+     * of type <code>systemEventClass</code>. The default implementation simply
+     * calls through to
+     * {@link #subscribeToEvent(Class, Class, javax.faces.event.SystemEventListener)}
+     * passing <code>null</code> as the <code>sourceClass</code> argument</p>
+     *
+     * @param systemEventClass the <code>Class</code> of event for which
+     * <code>listener</code> must be fired.
+     *
+     * @param listener the implementation of {@link
+     * javax.faces.event.SystemEventListener} whose {@link
+     * javax.faces.event.SystemEventListener#processEvent} method must be called
+     * when events of type <code>systemEventClass</code> are fired.
+     *
+     * @throws <code>NullPointerException</code> if any combination of
+     * <code>systemEventClass</code>, or <code>listener</code> are
+     * <code>null</code>.
+     *
+     * @since 2.0
+     */
+    public void subscribeToEvent(Class<? extends SystemEvent> systemEventClass,
+            SystemEventListener listener) {
+
+        subscribeToEvent(systemEventClass, null, listener);
+
+    }
+
+    /**
+     * <p class="changed_added_2_0">Remove the listener instance referenced by
+     * argument <code>listener</code> from the application as a listener for
+     * events of type <code>systemEventClass</code> that originate from objects
+     * of type <code>sourceClass</code>. See {@link
+     * #subscribeToEvent(Class, Class,
+     * javax.faces.event.SystemEventListener)} for the specification of how the
+     * listener is stored, and therefore, how it must be removed.</p>
+     *
+     * @param systemEventClass the <code>Class</code> of event for which
+     * <code>listener</code> must be fired.
+     *
+     * @param sourceClass the <code>Class</code> of the instance which causes
+     * events of type <code>systemEventClass</code> to be fired. May be
+     * <code>null</code>.
+     *
+     * @param listener the implementation of {@link
+     * javax.faces.event.SystemEventListener} to remove from the internal data
+     * structure.
+     *
+     * @throws <code>NullPointerException</code> if any combination of
+     * <code>context</code>, <code>systemEventClass</code>, or
+     * <code>listener</code> are <code>null</code>.
+     */
+    public void unsubscribeFromEvent(Class<? extends SystemEvent> systemEventClass,
+            Class<?> sourceClass,
+            SystemEventListener listener) {
+
+        if (systemEventClass == null) {
+            throw new NullPointerException("systemEventClass");
+        }
+        if (listener == null) {
+            throw new NullPointerException("listener");
+        }
+
+        Set<SystemEventListener> listeners
+                = getListeners(systemEventClass, sourceClass);
+        if (listeners != null) {
+            listeners.remove(listener);
+        }
+
+    }
+
+    /**
+     * <p class="changed_added_2_0">Remove the listener instance referenced by
+     * argument <code>listener</code> from the application as a listener for
+     * events of type <code>systemEventClass</code>. The default implementation
+     * simply calls through to
+     * {@link #unsubscribeFromEvent(Class, javax.faces.event.SystemEventListener)}
+     * passing <code>null</code> as the <code>sourceClass</code> argument</p>
+     *
+     * @param systemEventClass the <code>Class</code> of event for which
+     * <code>listener</code> must be fired.
+     *
+     * @param listener the implementation of {@link
+     * javax.faces.event.SystemEventListener} to remove from the internal data
+     * structure.
+     *
+     * @throws <code>NullPointerException</code> if any combination of
+     * <code>context</code>, <code>systemEventClass</code>, or
+     * <code>listener</code> are <code>null</code>.
+     */
+    public void unsubscribeFromEvent(Class<? extends SystemEvent> systemEventClass,
+            SystemEventListener listener) {
+
+        unsubscribeFromEvent(systemEventClass, null, listener);
+
+    }
+
+    /**
+     * @return the SystemEventListeners that should be used for the provided
+     * combination of SystemEvent and source.
+     */
+    private Set<SystemEventListener> getListeners(Class<? extends SystemEvent> systemEvent,
+            Class<?> sourceClass) {
+
+        Set<SystemEventListener> listeners = null;
+        EventInfo sourceInfo
+                = systemEventHelper.getEventInfo(systemEvent, sourceClass);
+        if (sourceInfo != null) {
+            listeners = sourceInfo.getListeners();
+        }
+
+        return listeners;
+
+    }
+
+    /**
+     * @return process any listeners for the specified SystemEventListenerHolder
+     * and return any SystemEvent that may have been created as a side-effect of
+     * processing the listeners.
+     */
+    private SystemEvent invokeComponentListenersFor(Class<? extends SystemEvent> systemEventClass,
+            Object source) {
+
+        if (source instanceof SystemEventListenerHolder) {
+            EventInfo eventInfo
+                    = compSysEventHelper.getEventInfo(systemEventClass,
+                            source.getClass());
+            return processListeners(((SystemEventListenerHolder) source).getListenersForEventClass(systemEventClass),
+                    null,
+                    source,
+                    eventInfo);
+        }
+        return null;
+
+    }
+
+    /**
+     * Traverse the <code>List</code> of listeners and invoke any that are
+     * relevent for the specified source.
+     *
+     * @throws javax.faces.event.AbortProcessingException propagated from the
+     * listener invocation
+     */
+    private SystemEvent invokeListenersFor(Class<? extends SystemEvent> systemEventClass,
+            SystemEvent event,
+            Object source,
+            boolean useSourceLookup)
+            throws AbortProcessingException {
+
+        EventInfo eventInfo = systemEventHelper.getEventInfo(systemEventClass,
+                source,
+                useSourceLookup);
+        if (eventInfo != null) {
+            Set<SystemEventListener> listeners = eventInfo.getListeners();
+            event = processListeners(listeners, event, source, eventInfo);
+        }
+
+        return event;
+
+    }
+
+    /**
+     * Iterate through and invoke the listeners. If the passed event was
+     * <code>null</code>, create the event, and return it.
+     */
+    private SystemEvent processListeners(Collection<SystemEventListener> listeners,
+            SystemEvent event,
+            Object source,
+            EventInfo eventInfo) {
+
+        if (listeners != null && !listeners.isEmpty()) {
+            for (SystemEventListener curListener : listeners) {
+                if (curListener.isListenerForSource(source)) {
+                    if (event == null) {
+                        event = eventInfo.createSystemEvent(source);
+                    }
+                    assert (event != null);
+                    if (event.isAppropriateListener(curListener)) {
+                        event.processListener(curListener);
+                    }
+                }
+            }
+        }
+
+        return event;
+
+    }
+
+    /**
+     * Utility class for dealing with application events.
+     */
+    private static class SystemEventHelper {
+
+        private final Cache<Class<? extends SystemEvent>, SystemEventInfo> systemEventInfoCache;
+
+        // -------------------------------------------------------- Constructors
+        public SystemEventHelper() {
+
+            systemEventInfoCache
+                    = new Cache<Class<? extends SystemEvent>, SystemEventInfo>(
+                            new Factory<Class<? extends SystemEvent>, SystemEventInfo>() {
+                                public SystemEventInfo newInstance(final Class<? extends SystemEvent> arg)
+                                throws InterruptedException {
+                                    return new SystemEventInfo(arg);
+                                }
+                            }
+                    );
+
+        }
+
+        // ------------------------------------------------------ Public Methods
+        public EventInfo getEventInfo(Class<? extends SystemEvent> systemEventClass,
+                Class<?> sourceClass) {
+
+            EventInfo info = null;
+            SystemEventInfo systemEventInfo = systemEventInfoCache.get(systemEventClass);
+            if (systemEventInfo != null) {
+                info = systemEventInfo.getEventInfo(sourceClass);
+            }
+
+            return info;
+
+        }
+
+        public EventInfo getEventInfo(Class<? extends SystemEvent> systemEventClass,
+                Object source,
+                boolean useSourceForLookup) {
+
+            Class<?> sourceClass
+                    = ((useSourceForLookup) ? source.getClass() : Void.class);
+            return getEventInfo(systemEventClass, sourceClass);
+
+        }
+
+    } // END SystemEventHelper
+
+    /**
+     * Utility class for dealing with {@link javax.faces.component.UIComponent}
+     * events.
+     */
+    private static class ComponentSystemEventHelper {
+
+        private Cache<Class<?>, Cache<Class<? extends SystemEvent>, EventInfo>> sourceCache;
+
+        // -------------------------------------------------------- Constructors
+        public ComponentSystemEventHelper() {
+
+            // Initialize the 'sources' cache for, ahem, readability...
+            // ~generics++
+            Factory<Class<?>, Cache<Class<? extends SystemEvent>, EventInfo>> eventCacheFactory
+                    = new Factory<Class<?>, Cache<Class<? extends SystemEvent>, EventInfo>>() {
+                        public Cache<Class<? extends SystemEvent>, EventInfo> newInstance(
+                                final Class<?> sourceClass)
+                        throws InterruptedException {
+                            Factory<Class<? extends SystemEvent>, EventInfo> eventInfoFactory
+                            = new Factory<Class<? extends SystemEvent>, EventInfo>() {
+                                public EventInfo newInstance(final Class<? extends SystemEvent> systemEventClass)
+                                throws InterruptedException {
+                                    return new EventInfo(systemEventClass, sourceClass);
+                                }
+                            };
+                            return new Cache<Class<? extends SystemEvent>, EventInfo>(eventInfoFactory);
+                        }
+                    };
+            sourceCache = new Cache<Class<?>, Cache<Class<? extends SystemEvent>, EventInfo>>(eventCacheFactory);
+
+        }
+
+        // ------------------------------------------------------ Public Methods
+        public EventInfo getEventInfo(Class<? extends SystemEvent> systemEvent,
+                Class<?> sourceClass) {
+
+            Cache<Class<? extends SystemEvent>, EventInfo> eventsCache
+                    = sourceCache.get(sourceClass);
+            return eventsCache.get(systemEvent);
+
+        }
+
+    } // END ComponentSystemEventHelper
+
+    /**
+     * Simple wrapper class for application level SystemEvents. It provides the
+     * structure to map a single SystemEvent to multiple sources which are
+     * represented by <code>SourceInfo</code> instances.
+     */
+    private static class SystemEventInfo {
+
+        private Cache<Class<?>, EventInfo> cache = new Cache<Class<?>, EventInfo>(
+                new Factory<Class<?>, EventInfo>() {
+                    public EventInfo newInstance(Class<?> arg)
+                    throws InterruptedException {
+                        return new EventInfo(systemEvent, arg);
+                    }
+                }
+        );
+        private Class<? extends SystemEvent> systemEvent;
+
+        // -------------------------------------------------------- Constructors
+        private SystemEventInfo(Class<? extends SystemEvent> systemEvent) {
+
+            this.systemEvent = systemEvent;
+
+        }
+
+        // ------------------------------------------------------ Public Methods
+        public EventInfo getEventInfo(Class<?> source) {
+
+            Class<?> sourceClass = ((source == null) ? Void.class : source);
+            return cache.get(sourceClass);
+
+        }
+
+    } // END SystemEventInfo
+
+    /**
+     * Represent a logical association between a SystemEvent and a Source. This
+     * call will contain the Listeners specific to this association as well as
+     * provide a method to construct new SystemEvents as required.
+     */
+    private static class EventInfo {
+
+        private Class<? extends SystemEvent> systemEvent;
+        private Class<?> sourceClass;
+        private Set<SystemEventListener> listeners;
+        private Constructor eventConstructor;
+        private Map<Class<?>, Constructor> constructorMap;
+
+        // -------------------------------------------------------- Constructors
+        public EventInfo(Class<? extends SystemEvent> systemEvent,
+                Class<?> sourceClass) {
+
+            this.systemEvent = systemEvent;
+            this.sourceClass = sourceClass;
+            this.listeners = new CopyOnWriteArraySet<SystemEventListener>();
+            this.constructorMap = new HashMap<Class<?>, Constructor>();
+            if (!sourceClass.equals(Void.class)) {
+                eventConstructor = getEventConstructor(sourceClass);
+            }
+
+        }
+
+        // ------------------------------------------------------ Public Methods
+        public Set<SystemEventListener> getListeners() {
+
+            return listeners;
+
+        }
+
+        public SystemEvent createSystemEvent(Object source) {
+
+            Constructor toInvoke = getCachedConstructor(source.getClass());
+            if (toInvoke != null) {
+                try {
+                    return (SystemEvent) toInvoke.newInstance(source);
+                } catch (Exception e) {
+                    throw new FacesException(e);
+                }
+            }
+            return null;
+
+        }
+
+        // ----------------------------------------------------- Private Methods
+        private Constructor getCachedConstructor(Class<?> source) {
+
+            if (eventConstructor != null) {
+                return eventConstructor;
+            } else {
+                Constructor c = constructorMap.get(source);
+                if (c == null) {
+                    c = getEventConstructor(source);
+                    if (c != null) {
+                        constructorMap.put(source, c);
+                    }
+                }
+                return c;
+            }
+
+        }
+
+        private Constructor getEventConstructor(Class<?> source) {
+
+            Constructor ctor = null;
+            try {
+                return systemEvent.getDeclaredConstructor(source);
+            } catch (NoSuchMethodException ignored) {
+                Constructor[] ctors = systemEvent.getConstructors();
+                if (ctors != null) {
+                    for (Constructor c : ctors) {
+                        Class<?>[] params = c.getParameterTypes();
+                        if (params.length != 1) {
+                            continue;
+                        }
+                        if (params[0].isAssignableFrom(source)) {
+                            return c;
+                        }
+                    }
+                }
+                if (eventConstructor == null) {
+                    if (LOGGER.isLoggable(Level.FINE)) {
+                        LOGGER.log(Level.FINE,
+                                "Unable to find Constructor within {0} that accepts {1} instances.",
+                                new Object[]{systemEvent.getName(), sourceClass.getName()});
+                    }
+                }
+            }
+            return ctor;
+
+        }
+
+    } // END SourceInfo
+
+    /**
+     * Factory interface for creating various cacheable objects.
+     */
+    private interface Factory<K, V> {
+
+        V newInstance(final K arg) throws InterruptedException;
+
+    } // END Factory
+
+    /**
+     * A concurrent caching mechanism.
+     */
+    private static final class Cache<K, V> {
+
+        private ConcurrentMap<K, Future<V>> cache
+                = new ConcurrentHashMap<K, Future<V>>();
+        private Factory<K, V> factory;
+
+        // -------------------------------------------------------- Constructors
+        /**
+         * Constructs this cache using the specified <code>Factory</code>.
+         *
+         * @param factory
+         */
+        public Cache(Factory<K, V> factory) {
+
+            this.factory = factory;
+
+        }
+
+        // ------------------------------------------------------ Public Methods
+        /**
+         * If a value isn't associated with the specified key, a new
+         * {@link java.util.concurrent.Callable} will be created wrapping the
+         * <code>Factory</code> specified via the constructor and passed to a
+         * {@link java.util.concurrent.FutureTask}. This task will be passed to
+         * the backing ConcurrentMap. When
+         * {@link java.util.concurrent.FutureTask#get()} is invoked, the Factory
+         * will return the new Value which will be cached by the
+         * {@link java.util.concurrent.FutureTask}.
+         *
+         * @param key the key the value is associated with
+         * @return the value for the specified key, if any
+         */
+        public V get(final K key) {
+
+            while (true) {
+                Future<V> f = cache.get(key);
+                if (f == null) {
+                    Callable<V> callable = new Callable<V>() {
+                        public V call() throws Exception {
+                            return factory.newInstance(key);
+                        }
+                    };
+                    FutureTask<V> ft = new FutureTask<V>(callable);
+                    // here is the real beauty of the concurrent utilities.
+                    // 1.  putIfAbsent() is atomic
+                    // 2.  putIfAbsent() will return the value already associated
+                    //     with the specified key
+                    // So, if multiple threads make it to this point
+                    // they will all be calling f.get() on the same
+                    // FutureTask instance, so this guarantees that the instances
+                    // that the invoked Callable will return will be created once
+                    f = cache.putIfAbsent(key, ft);
+                    if (f == null) {
+                        f = ft;
+                        ft.run();
+                    }
+                }
+                try {
+                    return f.get();
+                } catch (CancellationException ce) {
+                    if (LOGGER.isLoggable(Level.FINEST)) {
+                        LOGGER.log(Level.FINEST,
+                                ce.toString(),
+                                ce);
+                    }
+                    cache.remove(key);
+                } catch (InterruptedException ie) {
+                    if (LOGGER.isLoggable(Level.FINEST)) {
+                        LOGGER.log(Level.FINEST,
+                                ie.toString(),
+                                ie);
+                    }
+                    cache.remove(key);
+                } catch (ExecutionException ee) {
+                    throw new FacesException(ee);
+                }
+            }
+        }
+
+    } // END Cache
+}
diff --git a/test/unit/src/test/java/com/sun/faces/mock/MockApplicationFactory.java b/test/unit/src/test/java/com/sun/faces/mock/MockApplicationFactory.java
new file mode 100644
index 0000000..fa03deb
--- /dev/null
+++ b/test/unit/src/test/java/com/sun/faces/mock/MockApplicationFactory.java
@@ -0,0 +1,70 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.mock;
+
+import javax.faces.FactoryFinder;
+import javax.faces.application.Application;
+import javax.faces.application.ApplicationFactory;
+
+public class MockApplicationFactory extends ApplicationFactory {
+
+    public MockApplicationFactory(ApplicationFactory oldImpl) {
+        System.setProperty(FactoryFinder.APPLICATION_FACTORY,
+                this.getClass().getName());
+    }
+
+    public MockApplicationFactory() {
+    }
+
+    private Application application = null;
+
+    @Override
+    public Application getApplication() {
+        if (application == null) {
+            application = new MockApplication();
+        }
+        return (application);
+    }
+
+    @Override
+    public void setApplication(Application application) {
+        this.application = application;
+    }
+}
diff --git a/test/unit/src/test/java/com/sun/faces/mock/MockApplicationMap.java b/test/unit/src/test/java/com/sun/faces/mock/MockApplicationMap.java
new file mode 100644
index 0000000..076a0ff
--- /dev/null
+++ b/test/unit/src/test/java/com/sun/faces/mock/MockApplicationMap.java
@@ -0,0 +1,173 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.mock;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Enumeration;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import javax.servlet.ServletContext;
+
+final class MockApplicationMap implements Map {
+
+    public MockApplicationMap(ServletContext context) {
+        this.context = context;
+    }
+
+    private ServletContext context = null;
+
+    public void clear() {
+        Iterator keys = keySet().iterator();
+        while (keys.hasNext()) {
+            context.removeAttribute((String) keys.next());
+        }
+    }
+
+    public boolean containsKey(Object key) {
+        return (context.getAttribute(key(key)) != null);
+    }
+
+    public boolean containsValue(Object value) {
+        if (value == null) {
+            return (false);
+        }
+        Enumeration keys = context.getAttributeNames();
+        while (keys.hasMoreElements()) {
+            Object next = context.getAttribute((String) keys.nextElement());
+            if (next == value) {
+                return (true);
+            }
+        }
+        return (false);
+    }
+
+    public Set entrySet() {
+        Set set = new HashSet();
+        Enumeration keys = context.getAttributeNames();
+        while (keys.hasMoreElements()) {
+            set.add(context.getAttribute((String) keys.nextElement()));
+        }
+        return (set);
+    }
+
+    public boolean equals(Object o) {
+        return (context.equals(o));
+    }
+
+    public Object get(Object key) {
+        return (context.getAttribute(key(key)));
+    }
+
+    public int hashCode() {
+        return (context.hashCode());
+    }
+
+    public boolean isEmpty() {
+        return (size() < 1);
+    }
+
+    public Set keySet() {
+        Set set = new HashSet();
+        Enumeration keys = context.getAttributeNames();
+        while (keys.hasMoreElements()) {
+            set.add(keys.nextElement());
+        }
+        return (set);
+    }
+
+    public Object put(Object key, Object value) {
+        if (value == null) {
+            return (remove(key));
+        }
+        String skey = key(key);
+        Object previous = context.getAttribute(skey);
+        context.setAttribute(skey, value);
+        return (previous);
+    }
+
+    public void putAll(Map map) {
+        Iterator keys = map.keySet().iterator();
+        while (keys.hasNext()) {
+            String key = (String) keys.next();
+            context.setAttribute(key, map.get(key));
+        }
+    }
+
+    public Object remove(Object key) {
+        String skey = key(key);
+        Object previous = context.getAttribute(skey);
+        context.removeAttribute(skey);
+        return (previous);
+    }
+
+    public int size() {
+        int n = 0;
+        Enumeration keys = context.getAttributeNames();
+        while (keys.hasMoreElements()) {
+            keys.nextElement();
+            n++;
+        }
+        return (n);
+    }
+
+    public Collection values() {
+        List list = new ArrayList();
+        Enumeration keys = context.getAttributeNames();
+        while (keys.hasMoreElements()) {
+            list.add(context.getAttribute((String) keys.nextElement()));
+        }
+        return (list);
+    }
+
+    private String key(Object key) {
+        if (key == null) {
+            throw new IllegalArgumentException();
+        } else if (key instanceof String) {
+            return ((String) key);
+        } else {
+            return (key.toString());
+        }
+    }
+
+}
diff --git a/test/unit/src/test/java/com/sun/faces/mock/MockELContext.java b/test/unit/src/test/java/com/sun/faces/mock/MockELContext.java
new file mode 100644
index 0000000..c77ce15
--- /dev/null
+++ b/test/unit/src/test/java/com/sun/faces/mock/MockELContext.java
@@ -0,0 +1,79 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.mock;
+
+import javax.el.ELContext;
+import javax.el.ELResolver;
+import javax.el.FunctionMapper;
+import javax.el.VariableMapper;
+
+public class MockELContext extends ELContext {
+
+    private FunctionMapper functionMapper;
+    private VariableMapper variableMapper;
+    private ELResolver resolver;
+
+    protected MockELContext(ELResolver resolver) {
+        this.resolver = resolver;
+    }
+
+    public void setFunctionMapper(FunctionMapper fnMapper) {
+        functionMapper = fnMapper;
+    }
+
+    @Override
+    public FunctionMapper getFunctionMapper() {
+        return functionMapper;
+    }
+
+    public void setVariableMapper(VariableMapper varMapper) {
+        variableMapper = varMapper;
+    }
+
+    @Override
+    public VariableMapper getVariableMapper() {
+        return variableMapper;
+    }
+
+    @Override
+    public ELResolver getELResolver() {
+        return resolver;
+    }
+}
diff --git a/test/unit/src/test/java/com/sun/faces/mock/MockELResolver.java b/test/unit/src/test/java/com/sun/faces/mock/MockELResolver.java
new file mode 100644
index 0000000..5d2a562
--- /dev/null
+++ b/test/unit/src/test/java/com/sun/faces/mock/MockELResolver.java
@@ -0,0 +1,123 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.mock;
+
+import java.util.Iterator;
+import javax.faces.context.FacesContext;
+import javax.el.ELResolver;
+import javax.el.ELContext;
+import javax.el.ELException;
+
+/**
+ * <p>
+ * Mock implementation of <code>ELResolver</code> that supports a limited subset
+ * of expression evaluation functionality:</p>
+ *
+ * <ul>
+ * <li>Recognizes <code>applicationScope</code>, <code>requestScope</code>, and
+ * <code>sessionScope</code> implicit names.</li>
+ * <li>Searches in ascending scopes for non-reserved names.</li>
+ * </ul>
+ */
+public class MockELResolver extends ELResolver {
+
+    private MockVariableResolver variableResolver = null;
+    private MockPropertyResolver propertyResolved = null;
+
+    // ------------------------------------------------------------ Constructors
+    public MockELResolver() {
+        variableResolver = new MockVariableResolver();
+        propertyResolved = new MockPropertyResolver();
+    }
+
+    @Override
+    public Object getValue(ELContext context, Object base, Object property)
+            throws ELException {
+        Object result = null;
+        FacesContext facesContext = (FacesContext) context.getContext(FacesContext.class);
+
+        if (null == base) {
+            String name = (null != property) ? property.toString() : null;
+            try {
+                result = variableResolver.resolveVariable(facesContext, name);
+            } catch (Throwable e) {
+                throw new ELException(e);
+            }
+        } else {
+            try {
+                result = propertyResolved.getValue(base, property);
+            } catch (Throwable e) {
+                throw new ELException(e);
+            }
+        }
+        context.setPropertyResolved(result != null);
+        return result;
+    }
+
+    @Override
+    public Class getType(ELContext context, Object base, Object property)
+            throws ELException {
+        Class result = null;
+        return result;
+    }
+
+    @Override
+    public void setValue(ELContext context, Object base, Object property,
+            Object value) throws ELException {
+    }
+
+    @Override
+    public boolean isReadOnly(ELContext context, Object base, Object property)
+            throws ELException {
+        boolean result = false;
+        return result;
+    }
+
+    @Override
+    public Iterator getFeatureDescriptors(ELContext context, Object base) {
+        return null;
+    }
+
+    @Override
+    public Class getCommonPropertyType(ELContext context, Object base) {
+        Class result = null;
+        return result;
+    }
+}
diff --git a/test/unit/src/test/java/com/sun/faces/mock/MockEnumeration.java b/test/unit/src/test/java/com/sun/faces/mock/MockEnumeration.java
new file mode 100644
index 0000000..56d9936
--- /dev/null
+++ b/test/unit/src/test/java/com/sun/faces/mock/MockEnumeration.java
@@ -0,0 +1,67 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.mock;
+
+import java.util.Enumeration;
+import java.util.Iterator;
+
+/**
+ * <p>
+ * General purpose <code>Enumeration</code> wrapper around an
+ * <code>Iterator</code> specified to our controller.</p>
+ */
+public class MockEnumeration implements Enumeration {
+
+    public MockEnumeration(Iterator iterator) {
+        this.iterator = iterator;
+    }
+
+    protected Iterator iterator;
+
+    @Override
+    public boolean hasMoreElements() {
+        return (iterator.hasNext());
+    }
+
+    @Override
+    public Object nextElement() {
+        return (iterator.next());
+    }
+}
diff --git a/test/unit/src/test/java/com/sun/faces/mock/MockExternalContext.java b/test/unit/src/test/java/com/sun/faces/mock/MockExternalContext.java
new file mode 100644
index 0000000..941f583
--- /dev/null
+++ b/test/unit/src/test/java/com/sun/faces/mock/MockExternalContext.java
@@ -0,0 +1,367 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.mock;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.UnsupportedEncodingException;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.Enumeration;
+import java.util.Iterator;
+import java.util.Locale;
+import java.util.Set;
+import java.util.Map;
+import java.util.HashMap;
+
+import javax.faces.FacesException;
+import javax.faces.context.ExternalContext;
+import javax.servlet.ServletContext;
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletResponse;
+import javax.servlet.http.HttpServletRequest;
+
+
+
+public class MockExternalContext extends ExternalContext {
+
+
+    public MockExternalContext(ServletContext context,
+                               ServletRequest request,
+                               ServletResponse response) {
+        this.context = context;
+        this.request = request;
+        this.response = response;
+    }
+    
+
+    private ServletContext context = null;
+    private ServletRequest request = null;
+    private ServletResponse response = null;
+    private Map<String,String> initParams;
+
+
+    public Object getSession(boolean create) {
+        throw new UnsupportedOperationException();
+    }
+    
+
+    public Object getContext() {
+        return (context);
+    }
+
+    public String getContextName() { 
+	return context.getServletContextName();
+    }
+
+    
+    
+    public Object getRequest() {
+        return (request);
+    }
+
+    public void setRequest(Object request) {
+	throw new UnsupportedOperationException();
+    }
+
+    public Object getResponse() {
+        return (response);
+    }
+
+    public void setResponse(Object response) {
+	throw new UnsupportedOperationException();
+    }
+
+    public void setResponseCharacterEncoding(String encoding) {
+	throw new UnsupportedOperationException();
+    }
+
+    private Map applicationMap = null;
+    public Map getApplicationMap() {
+        if (applicationMap == null) {
+            applicationMap = new MockApplicationMap(context);
+        }
+        return (applicationMap);
+    }
+    
+
+    private Map sessionMap = null;
+    public Map getSessionMap() {
+        if (sessionMap == null) {
+            sessionMap = new MockSessionMap
+                (((HttpServletRequest) request).getSession(true));
+        }
+        return (sessionMap);
+    }
+    
+
+    private Map requestMap = null;
+    public Map getRequestMap() {
+        if (requestMap == null) {
+            requestMap = new MockRequestMap(request);
+        }
+        return (requestMap);
+    }
+    
+
+    private Map requestParameterMap = null;
+    public Map getRequestParameterMap() {
+        if (requestParameterMap != null) {
+            return (requestParameterMap);
+        } else {
+            throw new UnsupportedOperationException();
+        }
+    }
+    public void setRequestParameterMap(Map requestParameterMap) {
+        this.requestParameterMap = requestParameterMap;
+    }
+
+    public void setRequestCharacterEncoding(String encoding) throws UnsupportedEncodingException {
+        throw new UnsupportedOperationException();
+    }
+    
+
+    public Map getRequestParameterValuesMap() {
+        throw new UnsupportedOperationException();        
+    }
+
+    
+    public Iterator getRequestParameterNames() {
+        throw new UnsupportedOperationException();
+    }
+
+    
+    public Map getRequestHeaderMap() {
+        throw new UnsupportedOperationException();
+    }
+
+
+    public Map getRequestHeaderValuesMap() {
+        throw new UnsupportedOperationException();
+    }
+
+
+    public Map getRequestCookieMap() {
+        throw new UnsupportedOperationException();
+    }
+
+
+    public Locale getRequestLocale() {
+        return (request.getLocale());
+    }
+    
+
+    public Iterator getRequestLocales() {
+        return (new LocalesIterator(request.getLocales()));
+    }
+    
+
+    public String getRequestPathInfo() {
+        throw new UnsupportedOperationException();
+    }
+
+
+    public String getRequestContextPath() {
+        throw new UnsupportedOperationException();
+    }
+
+    public String getRequestServletPath() {
+        throw new UnsupportedOperationException();
+    }
+    
+    public String getRequestCharacterEncoding() {
+        throw new UnsupportedOperationException();
+    }
+
+    
+    public String getRequestContentType() {
+        throw new UnsupportedOperationException();
+    }
+
+    public int getRequestContentLength() {
+        throw new UnsupportedOperationException();
+    }
+
+
+    public String getResponseCharacterEncoding() {
+        throw new UnsupportedOperationException();
+    }
+    
+    public String getResponseContentType() {
+        throw new UnsupportedOperationException();
+    }
+
+
+    public String getInitParameter(String name) {
+        if (name
+              .equals(javax.faces.application.StateManager.STATE_SAVING_METHOD_PARAM_NAME)) {
+            return null;
+        }
+        if (name.equals(javax.faces.webapp.FacesServlet.LIFECYCLE_ID_ATTR)) {
+            return null;
+        }
+        return ((initParams == null) ? null : initParams.get(name));
+    }
+
+    public void addInitParameter(String name, String value) {
+        if (initParams == null) {
+            initParams = new HashMap<String,String>();
+        }
+        initParams.put(name, value);
+    }
+
+    @Override
+    public void addResponseHeader(String arg0, String arg1) {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    @Override
+    public void setResponseHeader(String arg0, String arg1) {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    @Override
+    public void setSessionMaxInactiveInterval(int interval) {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+	
+    @Override
+    public boolean isSecure() {
+	throw new UnsupportedOperationException("Not supported yet.");
+    }    
+
+    public Map getInitParameterMap() {
+        throw new UnsupportedOperationException();
+    }
+
+
+    public Set getResourcePaths(String path) {
+       return context.getResourcePaths(path);
+    }
+
+
+    public URL getResource(String path) throws MalformedURLException {
+        throw new UnsupportedOperationException();
+    }
+
+
+    public InputStream getResourceAsStream(String path) {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public int getSessionMaxInactiveInterval() {
+        throw new UnsupportedOperationException();
+    }
+
+    public String encodeActionURL(String sb) {
+        throw new UnsupportedOperationException();
+    }
+
+
+    public String encodeResourceURL(String sb) {
+        throw new UnsupportedOperationException();
+    }
+
+
+    public String encodeNamespace(String aValue) {
+        throw new UnsupportedOperationException();
+    }
+
+
+    public void dispatch(String requestURI)
+        throws IOException, FacesException {
+        throw new UnsupportedOperationException();
+    }
+
+    
+    public void redirect(String requestURI)
+        throws IOException {
+        throw new UnsupportedOperationException();
+    }
+
+    
+    public void log(String message) {
+        context.log(message);
+    }
+
+
+    public void log(String message, Throwable throwable) {
+        context.log(message, throwable);
+    }
+
+
+    public String getAuthType() {
+        return (((HttpServletRequest) request).getAuthType());
+    }
+
+    public String getRemoteUser() {
+        return (((HttpServletRequest) request).getRemoteUser());
+    }
+
+
+
+    public java.security.Principal getUserPrincipal() {
+        return (((HttpServletRequest) request).getUserPrincipal());
+    }
+
+    public boolean isUserInRole(String role) {
+        return (((HttpServletRequest) request).isUserInRole(role));
+    }
+
+
+    private class LocalesIterator implements Iterator {
+
+	public LocalesIterator(Enumeration locales) {
+	    this.locales = locales;
+	}
+
+	private Enumeration locales;
+
+	public boolean hasNext() { return locales.hasMoreElements(); }
+
+	public Object next() { return locales.nextElement(); }
+
+	public void remove() { throw new UnsupportedOperationException(); }
+
+    }
+
+
+}
diff --git a/test/unit/src/test/java/com/sun/faces/mock/MockExternalContextFactory.java b/test/unit/src/test/java/com/sun/faces/mock/MockExternalContextFactory.java
new file mode 100644
index 0000000..98fd72a
--- /dev/null
+++ b/test/unit/src/test/java/com/sun/faces/mock/MockExternalContextFactory.java
@@ -0,0 +1,66 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.mock;
+
+import javax.faces.FacesException;
+import javax.faces.FactoryFinder;
+import javax.faces.context.ExternalContextFactory;
+import javax.faces.context.ExternalContext;
+import javax.servlet.ServletContext;
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletResponse;
+
+public class MockExternalContextFactory extends ExternalContextFactory {
+
+    public MockExternalContextFactory(ExternalContextFactory oldImpl) {
+        System.setProperty(FactoryFinder.EXTERNAL_CONTEXT_FACTORY,
+                this.getClass().getName());
+    }
+
+    public MockExternalContextFactory() {
+    }
+
+    @Override
+    public ExternalContext getExternalContext(Object context, Object request,
+            Object response) throws FacesException {
+        return new MockExternalContext((ServletContext) context,
+                (ServletRequest) request, (ServletResponse) response);
+    }
+}
diff --git a/test/unit/src/test/java/com/sun/faces/mock/MockFacesContext.java b/test/unit/src/test/java/com/sun/faces/mock/MockFacesContext.java
new file mode 100644
index 0000000..6ffe053
--- /dev/null
+++ b/test/unit/src/test/java/com/sun/faces/mock/MockFacesContext.java
@@ -0,0 +1,399 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.mock;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+import java.util.HashMap;
+import java.util.Collections;
+import javax.faces.FactoryFinder;
+import javax.faces.webapp.PreJsf2ExceptionHandlerFactory;
+import javax.faces.application.Application;
+import javax.faces.application.FacesMessage;
+import javax.faces.application.ViewHandler;
+import javax.faces.application.FacesMessage.Severity;
+import javax.faces.component.UIViewRoot;
+import javax.faces.context.ExternalContext;
+import javax.faces.context.FacesContext;
+import javax.faces.context.ResponseStream;
+import javax.faces.context.ResponseWriter;
+import javax.faces.context.PartialViewContext;
+import javax.faces.context.ExceptionHandler;
+import javax.faces.event.PhaseId;
+import javax.faces.lifecycle.Lifecycle;
+import javax.faces.render.RenderKit;
+import javax.faces.render.RenderKitFactory;
+import javax.el.ELContext;
+import com.sun.faces.renderkit.RenderKitUtils;
+
+// Mock Object for FacesContext
+public class MockFacesContext extends FacesContext {
+
+    private static final String POST_BACK_MARKER
+            = MockFacesContext.class.getName() + "_POST_BACK";
+
+    private Severity maxSeverity;
+
+    private Map<Object, Object> attributes = null;
+    private PartialViewContext partialView = new MockPartialViewContext();
+
+    private boolean released;
+
+    // ------------------------------------------------------------ Constructors
+    public MockFacesContext() {
+        super();
+        setCurrentInstance(this);
+    }
+
+    public MockFacesContext(ExternalContext externalContext) {
+        setExternalContext(externalContext);
+        setCurrentInstance(this);
+        elContext = new MockELContext(new MockELResolver());
+        elContext.putContext(FacesContext.class, this);
+    }
+
+    public MockFacesContext(ExternalContext externalContext, Lifecycle lifecycle) {
+        this(externalContext);
+    }
+
+    // -------------------------------------------------------------- Properties
+    // application
+    private Application application = null;
+
+    @Override
+    public Application getApplication() {
+        return (this.application);
+    }
+
+    public void setApplication(Application application) {
+        this.application = application;
+    }
+
+    @Override
+    public Map<Object, Object> getAttributes() {
+
+        if (null == attributes) {
+            attributes = new HashMap<Object, Object>();
+        }
+
+        return attributes;
+    }
+
+    // clientIdsWithMessages
+    @Override
+    public Iterator getClientIdsWithMessages() {
+        return (messages.keySet().iterator());
+    }
+
+    private PhaseId currentPhaseId = PhaseId.RESTORE_VIEW;
+
+    @Override
+    public PhaseId getCurrentPhaseId() {
+        return currentPhaseId;
+    }
+
+    @Override
+    public void setCurrentPhaseId(PhaseId currentPhaseId) {
+        this.currentPhaseId = currentPhaseId;
+    }
+
+    private ELContext elContext = null;
+
+    @Override
+    public ELContext getELContext() {
+        return (this.elContext);
+    }
+
+    public void setELContext(ELContext elContext) {
+        this.elContext = elContext;
+    }
+
+    // externalContext
+    private ExternalContext externalContext = null;
+
+    @Override
+    public ExternalContext getExternalContext() {
+        return (this.externalContext);
+    }
+
+    public void setExternalContext(ExternalContext externalContext) {
+        this.externalContext = externalContext;
+    }
+
+    // locale
+    private Locale locale = null;
+
+    public Locale getLocale() {
+        return (this.locale);
+    }
+
+    public void setLocale(Locale locale) {
+        this.locale = locale;
+    }
+
+    // maximumSeverity
+    @Override
+    public Severity getMaximumSeverity() {
+        return maxSeverity;
+    }
+
+    // messages
+    private Map<String, List<FacesMessage>> messages = new HashMap();
+
+    @Override
+    public Iterator getMessages() {
+        List<FacesMessage> results = getMessageList();
+        return (results.iterator());
+    }
+
+    @Override
+    public Iterator getMessages(String clientId) {
+        List<FacesMessage> list = getMessageList(clientId);
+        return (list.iterator());
+    }
+
+    @Override
+    public List<FacesMessage> getMessageList() {
+        ArrayList results = new ArrayList<FacesMessage>();
+        Iterator clientIds = messages.keySet().iterator();
+        while (clientIds.hasNext()) {
+            String clientId = (String) clientIds.next();
+            results.addAll((List<FacesMessage>) messages.get(clientId));
+        }
+        return results;
+    }
+
+    @Override
+    public List<FacesMessage> getMessageList(String clientId) {
+        List<FacesMessage> list = messages.get(clientId);
+        if (list == null) {
+            list = Collections.EMPTY_LIST;
+        }
+        return list;
+    }
+
+    // renderKit
+    @Override
+    public RenderKit getRenderKit() {
+        UIViewRoot vr = getViewRoot();
+        if (vr == null) {
+            return (null);
+        }
+        String renderKitId = vr.getRenderKitId();
+        if (renderKitId == null) {
+            return (null);
+        }
+        RenderKitFactory rkFactory = (RenderKitFactory) FactoryFinder.getFactory(FactoryFinder.RENDER_KIT_FACTORY);
+        return (rkFactory.getRenderKit(this, renderKitId));
+    }
+
+    // renderResponse
+    private boolean renderResponse = false;
+
+    @Override
+    public boolean getRenderResponse() {
+        return (this.renderResponse);
+    }
+
+    public void setRenderResponse(boolean renderResponse) {
+        this.renderResponse = renderResponse;
+    }
+
+    // responseComplete
+    private boolean responseComplete = false;
+
+    @Override
+    public boolean getResponseComplete() {
+        return (this.responseComplete);
+    }
+
+    public void setResponseComplete(boolean responseComplete) {
+        this.responseComplete = responseComplete;
+    }
+
+    // responseStream
+    private ResponseStream responseStream = null;
+
+    @Override
+    public ResponseStream getResponseStream() {
+        return (this.responseStream);
+    }
+
+    @Override
+    public void setResponseStream(ResponseStream responseStream) {
+        this.responseStream = responseStream;
+    }
+
+    // responseWriter
+    private ResponseWriter responseWriter = null;
+
+    @Override
+    public ResponseWriter getResponseWriter() {
+        return (this.responseWriter);
+    }
+
+    @Override
+    public void setResponseWriter(ResponseWriter responseWriter) {
+        this.responseWriter = responseWriter;
+    }
+
+    // viewRoot
+    private UIViewRoot root = null;
+
+    @Override
+    public UIViewRoot getViewRoot() {
+        return (this.root);
+    }
+
+    @Override
+    public void setViewRoot(UIViewRoot root) {
+        this.root = root;
+    }
+
+    @Override
+    public boolean isPostback() {
+
+        Boolean postback = (Boolean) this.getAttributes().get(POST_BACK_MARKER);
+        if (postback == null) {
+            RenderKit rk = this.getRenderKit();
+            if (rk != null) {
+                postback = rk.getResponseStateManager().isPostback(this);
+            } else {
+                // ViewRoot hasn't been set yet, so calculate the RK
+                ViewHandler vh = this.getApplication().getViewHandler();
+                String rkId = vh.calculateRenderKitId(this);
+                postback = RenderKitUtils.getResponseStateManager(this, rkId).isPostback(this);
+            }
+            this.getAttributes().put(POST_BACK_MARKER, postback);
+        }
+
+        return postback.booleanValue();
+
+    }
+
+    @Override
+    public boolean isReleased() {
+        return released;
+    }
+
+    private ExceptionHandler exceptionHandler
+            = new PreJsf2ExceptionHandlerFactory().getExceptionHandler();
+
+    @Override
+    public ExceptionHandler getExceptionHandler() {
+        return exceptionHandler;
+    }
+
+    @Override
+    public void setExceptionHandler(ExceptionHandler exceptionHandler) {
+        this.exceptionHandler = exceptionHandler;
+    }
+
+    // ---------------------------------------------------------- Public Methods
+    @Override
+    public void addMessage(String clientId, FacesMessage message) {
+        if (message == null) {
+            throw new NullPointerException();
+        }
+        if (maxSeverity == null) {
+            maxSeverity = message.getSeverity();
+        } else {
+            Severity sev = message.getSeverity();
+            if (sev.getOrdinal() > maxSeverity.getOrdinal()) {
+                maxSeverity = sev;
+            }
+        }
+        List list = (List) messages.get(clientId);
+        if (list == null) {
+            list = new ArrayList();
+            messages.put(clientId, list);
+        }
+        list.add(message);
+    }
+
+    @Override
+    public void release() {
+        released = true;
+        application = null;
+        externalContext = null;
+        locale = null;
+        messages.clear();
+        renderResponse = false;
+        responseComplete = false;
+        responseStream = null;
+        responseWriter = null;
+        if (null != attributes) {
+            attributes.clear();
+            attributes = null;
+        }
+        root = null;
+        setCurrentInstance(null);
+    }
+
+    @Override
+    public void renderResponse() {
+        this.renderResponse = true;
+    }
+
+    @Override
+    public void responseComplete() {
+        this.responseComplete = true;
+    }
+
+    @Override
+    public PartialViewContext getPartialViewContext() {
+        return partialView;
+    }
+
+    boolean validationFailed = false;
+
+    @Override
+    public void validationFailed() {
+        validationFailed = true;
+    }
+
+    @Override
+    public boolean isValidationFailed() {
+        return validationFailed;
+    }
+}
diff --git a/test/unit/src/test/java/com/sun/faces/mock/MockFacesContextFactory.java b/test/unit/src/test/java/com/sun/faces/mock/MockFacesContextFactory.java
new file mode 100644
index 0000000..a6af31b
--- /dev/null
+++ b/test/unit/src/test/java/com/sun/faces/mock/MockFacesContextFactory.java
@@ -0,0 +1,84 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.mock;
+
+import javax.el.ELContext;
+import javax.faces.FacesException;
+import javax.faces.FactoryFinder;
+import javax.faces.application.Application;
+import javax.faces.application.ApplicationFactory;
+import javax.faces.context.ExternalContext;
+import javax.faces.context.FacesContextFactory;
+import javax.faces.context.FacesContext;
+import javax.faces.lifecycle.Lifecycle;
+import javax.servlet.ServletContext;
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletResponse;
+
+public class MockFacesContextFactory extends FacesContextFactory {
+    public MockFacesContextFactory(FacesContextFactory oldImpl) {
+	System.setProperty(FactoryFinder.FACES_CONTEXT_FACTORY, 
+			   this.getClass().getName());
+    }
+    public MockFacesContextFactory() {}
+    
+    @Override
+    public FacesContext getFacesContext(Object context, Object request,
+					Object response, 
+					Lifecycle lifecycle) throws FacesException {
+	MockFacesContext result = new MockFacesContext();
+        
+        ExternalContext externalContext =
+                new MockExternalContext((ServletContext) context, 
+                (ServletRequest) request, (ServletResponse) response);
+        result.setExternalContext(externalContext);
+        ApplicationFactory applicationFactory = (ApplicationFactory)
+                FactoryFinder.getFactory(FactoryFinder.APPLICATION_FACTORY);
+        Application application = (MockApplication) applicationFactory.getApplication();
+        result.setApplication(application);
+        
+	ELContext elContext = new MockELContext(new MockELResolver());
+	elContext.putContext(FacesContext.class, result);
+        result.setELContext(elContext);
+        
+        return result;
+    }
+}
+
diff --git a/test/unit/src/test/java/com/sun/faces/mock/MockHttpServletRequest.java b/test/unit/src/test/java/com/sun/faces/mock/MockHttpServletRequest.java
new file mode 100644
index 0000000..3e6b26f
--- /dev/null
+++ b/test/unit/src/test/java/com/sun/faces/mock/MockHttpServletRequest.java
@@ -0,0 +1,509 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.mock;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.security.Principal;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.Locale;
+import java.util.Map;
+import javax.servlet.AsyncContext;
+import javax.servlet.DispatcherType;
+import javax.servlet.RequestDispatcher;
+import javax.servlet.ServletContext;
+import javax.servlet.ServletException;
+import javax.servlet.ServletInputStream;
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletResponse;
+import javax.servlet.http.Cookie;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpSession;
+import javax.servlet.http.Part;
+
+// Mock Object for HttpServletRequest (Version 2.4)
+public class MockHttpServletRequest implements HttpServletRequest {
+
+    public MockHttpServletRequest() {
+        super();
+    }
+
+    public MockHttpServletRequest(HttpSession session) {
+        super();
+        setHttpSession(session);
+    }
+
+    public MockHttpServletRequest(String contextPath, String servletPath,
+            String pathInfo, String queryString) {
+        super();
+        setPathElements(contextPath, servletPath, pathInfo, queryString);
+    }
+
+    public MockHttpServletRequest(String contextPath, String servletPath,
+            String pathInfo, String queryString,
+            HttpSession session) {
+        super();
+        setPathElements(contextPath, servletPath, pathInfo, queryString);
+        setHttpSession(session);
+    }
+
+    protected HashMap attributes = new HashMap();
+    protected String contextPath = null;
+    protected Locale locale = null;
+    protected HashMap parameters = new HashMap();
+    protected String pathInfo = null;
+    protected Principal principal = null;
+    protected String queryString = null;
+    protected String servletPath = null;
+    protected HttpSession session = null;
+    protected String method = "GET";
+
+    // --------------------------------------------------------- Public Methods
+    public void addParameter(String name, String value) {
+        String values[] = (String[]) parameters.get(name);
+        if (values == null) {
+            String results[] = new String[]{value};
+            parameters.put(name, results);
+            return;
+        }
+        String results[] = new String[values.length + 1];
+        System.arraycopy(values, 0, results, 0, values.length);
+        results[values.length] = value;
+        parameters.put(name, results);
+    }
+
+    public void setHttpSession(HttpSession session) {
+        this.session = session;
+    }
+
+    public void setLocale(Locale locale) {
+        this.locale = locale;
+    }
+
+    public void setMethod(String method) {
+        this.method = method;
+    }
+
+    public void setPathElements(String contextPath, String servletPath,
+            String pathInfo, String queryString) {
+
+        this.contextPath = contextPath;
+        this.servletPath = servletPath;
+        this.pathInfo = pathInfo;
+        this.queryString = queryString;
+
+    }
+
+    public void setUserPrincipal(Principal principal) {
+        this.principal = principal;
+    }
+
+    // --------------------------------------------- HttpServletRequest Methods
+    @Override
+    public String getAuthType() {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public String getContextPath() {
+        return (contextPath);
+    }
+
+    @Override
+    public Cookie[] getCookies() {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public long getDateHeader(String name) {
+        return -1;
+    }
+
+    @Override
+    public String getHeader(String name) {
+        return null;
+    }
+
+    @Override
+    public Enumeration getHeaderNames() {
+        return Collections.enumeration(Collections.EMPTY_LIST);
+    }
+
+    @Override
+    public Enumeration getHeaders(String name) {
+        return Collections.enumeration(Collections.EMPTY_LIST);
+    }
+
+    @Override
+    public int getIntHeader(String name) {
+        return -1;
+    }
+
+    @Override
+    public String getMethod() {
+        return method;
+    }
+
+    @Override
+    public String getPathInfo() {
+        return (pathInfo);
+    }
+
+    @Override
+    public String getPathTranslated() {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public String getQueryString() {
+        return (queryString);
+    }
+
+    @Override
+    public String getRemoteUser() {
+        if (principal != null) {
+            return (principal.getName());
+        } else {
+            return (null);
+        }
+    }
+
+    @Override
+    public String getRequestedSessionId() {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public String getRequestURI() {
+        StringBuffer sb = new StringBuffer();
+        if (contextPath != null) {
+            sb.append(contextPath);
+        }
+        if (servletPath != null) {
+            sb.append(servletPath);
+        }
+        if (pathInfo != null) {
+            sb.append(pathInfo);
+        }
+        if (sb.length() > 0) {
+            return (sb.toString());
+        }
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public StringBuffer getRequestURL() {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public String getServletPath() {
+        return (servletPath);
+    }
+
+    @Override
+    public HttpSession getSession() {
+        return (getSession(true));
+    }
+
+    @Override
+    public HttpSession getSession(boolean create) {
+        if (create && (session == null)) {
+            throw new UnsupportedOperationException();
+        }
+        return (session);
+    }
+
+    @Override
+    public Principal getUserPrincipal() {
+        return (principal);
+    }
+
+    @Override
+    public boolean isRequestedSessionIdFromCookie() {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public boolean isRequestedSessionIdFromUrl() {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public boolean isRequestedSessionIdFromURL() {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public boolean isRequestedSessionIdValid() {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public boolean isUserInRole(String role) {
+        if ((principal != null) && (principal instanceof MockPrincipal)) {
+            return (((MockPrincipal) principal).isUserInRole(role));
+        } else {
+            return (false);
+        }
+    }
+
+    // ------------------------------------------------- ServletRequest Methods
+    @Override
+    public Object getAttribute(String name) {
+        return (attributes.get(name));
+    }
+
+    @Override
+    public Enumeration getAttributeNames() {
+        return (new MockEnumeration(attributes.keySet().iterator()));
+    }
+
+    @Override
+    public String getCharacterEncoding() {
+        return "ISO-8859-1";
+    }
+
+    @Override
+    public int getContentLength() {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public String getContentType() {
+        return "text/html";
+    }
+
+    @Override
+    public ServletInputStream getInputStream() {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public Locale getLocale() {
+        return (locale);
+    }
+
+    //
+    // Servlet 2.4 methods
+    // 
+    @Override
+    public int getRemotePort() {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public String getLocalName() {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public String getLocalAddr() {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public int getLocalPort() {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public Enumeration getLocales() {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public String getParameter(String name) {
+        String values[] = (String[]) parameters.get(name);
+        if (values != null) {
+            return (values[0]);
+        } else {
+            return (null);
+        }
+    }
+
+    @Override
+    public Map getParameterMap() {
+        return (parameters);
+    }
+
+    @Override
+    public Enumeration getParameterNames() {
+        return (new MockEnumeration(parameters.keySet().iterator()));
+    }
+
+    @Override
+    public String[] getParameterValues(String name) {
+        return ((String[]) parameters.get(name));
+    }
+
+    @Override
+    public String getProtocol() {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public BufferedReader getReader() {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public String getRealPath(String path) {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public String getRemoteAddr() {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public String getRemoteHost() {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public RequestDispatcher getRequestDispatcher(String path) {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public String getScheme() {
+        return ("http");
+    }
+
+    @Override
+    public String getServerName() {
+        return ("localhost");
+    }
+
+    @Override
+    public int getServerPort() {
+        return (8080);
+    }
+
+    @Override
+    public boolean isSecure() {
+        return (false);
+    }
+
+    @Override
+    public void removeAttribute(String name) {
+        attributes.remove(name);
+    }
+
+    @Override
+    public void setAttribute(String name, Object value) {
+        if (value == null) {
+            attributes.remove(name);
+        } else {
+            attributes.put(name, value);
+        }
+    }
+
+    @Override
+    public void setCharacterEncoding(String name) {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public boolean authenticate(HttpServletResponse hsr) throws IOException, ServletException {
+        throw new UnsupportedOperationException("Not supported yet."); 
+    }
+
+    @Override
+    public void login(String string, String string1) throws ServletException {
+        throw new UnsupportedOperationException("Not supported yet."); 
+    }
+
+    @Override
+    public void logout() throws ServletException {
+        throw new UnsupportedOperationException("Not supported yet."); 
+    }
+
+    @Override
+    public Collection<Part> getParts() throws IOException, ServletException {
+        throw new UnsupportedOperationException("Not supported yet."); 
+    }
+
+    @Override
+    public Part getPart(String string) throws IOException, ServletException {
+        throw new UnsupportedOperationException("Not supported yet."); 
+    }
+
+    @Override
+    public ServletContext getServletContext() {
+        throw new UnsupportedOperationException("Not supported yet."); 
+    }
+
+    @Override
+    public AsyncContext startAsync() throws IllegalStateException {
+        throw new UnsupportedOperationException("Not supported yet."); 
+    }
+
+    @Override
+    public AsyncContext startAsync(ServletRequest sr, ServletResponse sr1) throws IllegalStateException {
+        throw new UnsupportedOperationException("Not supported yet."); 
+    }
+
+    @Override
+    public boolean isAsyncStarted() {
+        throw new UnsupportedOperationException("Not supported yet."); 
+    }
+
+    @Override
+    public boolean isAsyncSupported() {
+        throw new UnsupportedOperationException("Not supported yet."); 
+    }
+
+    @Override
+    public AsyncContext getAsyncContext() {
+        throw new UnsupportedOperationException("Not supported yet."); 
+    }
+
+    @Override
+    public DispatcherType getDispatcherType() {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+}
diff --git a/test/unit/src/test/java/com/sun/faces/mock/MockHttpServletResponse.java b/test/unit/src/test/java/com/sun/faces/mock/MockHttpServletResponse.java
new file mode 100644
index 0000000..26075ed
--- /dev/null
+++ b/test/unit/src/test/java/com/sun/faces/mock/MockHttpServletResponse.java
@@ -0,0 +1,238 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.mock;
+
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.util.Collection;
+import java.util.Locale;
+import javax.servlet.ServletOutputStream;
+import javax.servlet.http.Cookie;
+import javax.servlet.http.HttpServletResponse;
+
+// Mock Object for HttpServletResponse (Version 2.3)
+public class MockHttpServletResponse implements HttpServletResponse {
+
+    private String encoding = "ISO-8859-1";
+    private String contentType = "text/html";
+    private int status;
+
+    // -------------------------------------------- HttpServletResponse Methods
+    @Override
+    public void addCookie(Cookie cookie) {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void addDateHeader(String name, long value) {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void addHeader(String name, String value) {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void addIntHeader(String name, int value) {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public boolean containsHeader(String name) {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public String encodeRedirectUrl(String url) {
+        return (encodeRedirectURL(url));
+    }
+
+    @Override
+    public String encodeRedirectURL(String url) {
+        return (url);
+    }
+
+    @Override
+    public String encodeUrl(String url) {
+        return (encodeURL(url));
+    }
+
+    @Override
+    public String encodeURL(String url) {
+        return (url);
+    }
+
+    @Override
+    public void sendError(int status) {
+        this.status = status;
+    }
+
+    @Override
+    public void sendError(int status, String message) {
+        this.status = status;
+    }
+
+    @Override
+    public void sendRedirect(String location) {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void setDateHeader(String name, long value) {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void setHeader(String name, String value) {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void setIntHeader(String name, int value) {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void setStatus(int status) {
+        this.status = status;
+    }
+
+    @Override
+    public void setStatus(int status, String message) {
+        this.status = status;
+    }
+
+    // ------------------------------------------------ ServletResponse Methods
+    @Override
+    public void flushBuffer() {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public int getBufferSize() {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public String getCharacterEncoding() {
+        return (this.encoding);
+    }
+
+    @Override
+    public String getContentType() {
+        return (this.contentType);
+    }
+
+    @Override
+    public Locale getLocale() {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public ServletOutputStream getOutputStream() throws IOException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public int getStatus() {
+        return status;
+    }
+
+    @Override
+    public PrintWriter getWriter() throws IOException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public boolean isCommitted() {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void reset() {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void resetBuffer() {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void setBufferSize(int size) {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void setCharacterEncoding(String charset) {
+        this.encoding = charset;
+    }
+
+    @Override
+    public void setContentLength(int length) {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void setContentType(String type) {
+        contentType = type;
+    }
+
+    @Override
+    public void setLocale(Locale locale) {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public String getHeader(String string) {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    @Override
+    public Collection<String> getHeaders(String string) {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    @Override
+    public Collection<String> getHeaderNames() {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+}
diff --git a/test/unit/src/test/java/com/sun/faces/mock/MockHttpSession.java b/test/unit/src/test/java/com/sun/faces/mock/MockHttpSession.java
new file mode 100644
index 0000000..1043172
--- /dev/null
+++ b/test/unit/src/test/java/com/sun/faces/mock/MockHttpSession.java
@@ -0,0 +1,157 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.mock;
+
+import java.util.Enumeration;
+import java.util.HashMap;
+import javax.servlet.ServletContext;
+import javax.servlet.http.HttpSession;
+import javax.servlet.http.HttpSessionContext;
+
+// Mock Object for HttpSession (Version 2.3)
+public class MockHttpSession implements HttpSession {
+
+    public MockHttpSession() {
+        super();
+    }
+
+    public MockHttpSession(ServletContext servletContext) {
+        super();
+        setServletContext(servletContext);
+    }
+
+    protected HashMap attributes = new HashMap();
+    protected ServletContext servletContext = null;
+
+    // --------------------------------------------------------- Public Methods
+    public void setServletContext(ServletContext servletContext) {
+        this.servletContext = servletContext;
+    }
+
+    // ---------------------------------------------------- HttpSession Methods
+    @Override
+    public Object getAttribute(String name) {
+        return (attributes.get(name));
+    }
+
+    @Override
+    public Enumeration getAttributeNames() {
+        return (new MockEnumeration(attributes.keySet().iterator()));
+    }
+
+    @Override
+    public long getCreationTime() {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public String getId() {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public long getLastAccessedTime() {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public int getMaxInactiveInterval() {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public ServletContext getServletContext() {
+        return (this.servletContext);
+    }
+
+    @Override
+    public HttpSessionContext getSessionContext() {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public Object getValue(String name) {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public String[] getValueNames() {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void invalidate() {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public boolean isNew() {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void putValue(String name, Object value) {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void removeAttribute(String name) {
+        attributes.remove(name);
+    }
+
+    @Override
+    public void removeValue(String name) {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void setAttribute(String name, Object value) {
+        if (value == null) {
+            attributes.remove(name);
+        } else {
+            attributes.put(name, value);
+        }
+    }
+
+    @Override
+    public void setMaxInactiveInterval(int interval) {
+        throw new UnsupportedOperationException();
+    }
+}
diff --git a/test/unit/src/test/java/com/sun/faces/mock/MockJspWriter.java b/test/unit/src/test/java/com/sun/faces/mock/MockJspWriter.java
new file mode 100644
index 0000000..145ca9e
--- /dev/null
+++ b/test/unit/src/test/java/com/sun/faces/mock/MockJspWriter.java
@@ -0,0 +1,251 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.mock;
+
+import java.io.IOException;
+import java.io.StringWriter;
+import javax.servlet.jsp.JspWriter;
+
+// Mock Object for JspWriter
+public class MockJspWriter extends JspWriter {
+
+    // Public constructor for convenient setup
+    public MockJspWriter(int bufferSize, boolean autoFlush) {
+        super(bufferSize, autoFlush);
+        writer = new StringWriter(bufferSize);
+    }
+
+    StringWriter writer;
+    String lineSeparator = System.getProperty("line.separator");
+    boolean closed = false;
+    boolean flushed = false;
+
+    // Mock Accessor for retrieving the contents that have been written
+    public String getBuffer() {
+        return (writer.getBuffer().toString());
+    }
+
+    // ------------------------------------------------------ JspWriter Methods
+    public void clear() throws IOException {
+        if (flushed) {
+            throw new IOException("Already flushed");
+        }
+        writer = new StringWriter(getBufferSize());
+    }
+
+    @Override
+    public void clearBuffer() throws IOException {
+        writer = new StringWriter(getBufferSize());
+    }
+
+    @Override
+    public void close() throws IOException {
+        if (!closed) {
+            flush();
+            closed = true;
+        }
+    }
+
+    @Override
+    public void flush() throws IOException {
+        if (closed) {
+            throw new IOException("Already closed");
+        }
+        flushed = true;
+    }
+
+    @Override
+    public int getRemaining() {
+        return (getBufferSize() - writer.getBuffer().length());
+    }
+
+    @Override
+    public void newLine() throws IOException {
+        write(lineSeparator);
+    }
+
+    @Override
+    public void print(boolean b) throws IOException {
+        write(b ? "true" : "false");
+    }
+
+    @Override
+    public void print(char c) throws IOException {
+        write(String.valueOf(c));
+    }
+
+    @Override
+    public void print(char c[]) throws IOException {
+        write(c);
+    }
+
+    @Override
+    public void print(double d) throws IOException {
+        write(String.valueOf(d));
+    }
+
+    @Override
+    public void print(float f) throws IOException {
+        write(String.valueOf(f));
+    }
+
+    @Override
+    public void print(int i) throws IOException {
+        write(String.valueOf(i));
+    }
+
+    @Override
+    public void print(long l) throws IOException {
+        write(String.valueOf(l));
+    }
+
+    @Override
+    public void print(Object o) throws IOException {
+        write(String.valueOf(o));
+    }
+
+    @Override
+    public void print(String s) throws IOException {
+        if (s == null) {
+            s = "null";
+        }
+        write(s);
+    }
+
+    @Override
+    public void println() throws IOException {
+        newLine();
+    }
+
+    @Override
+    public void println(boolean b) throws IOException {
+        print(b);
+        newLine();
+    }
+
+    @Override
+    public void println(char c) throws IOException {
+        print(c);
+        newLine();
+    }
+
+    @Override
+    public void println(char c[]) throws IOException {
+        print(c);
+        newLine();
+    }
+
+    @Override
+    public void println(double d) throws IOException {
+        print(d);
+        newLine();
+    }
+
+    @Override
+    public void println(float f) throws IOException {
+        print(f);
+        newLine();
+    }
+
+    @Override
+    public void println(int i) throws IOException {
+        print(i);
+        newLine();
+    }
+
+    @Override
+    public void println(long l) throws IOException {
+        print(l);
+        newLine();
+    }
+
+    @Override
+    public void println(Object o) throws IOException {
+        print(o);
+        newLine();
+    }
+
+    @Override
+    public void println(String s) throws IOException {
+        print(s);
+        newLine();
+    }
+
+    // --------------------------------------------------------- Writer Methods
+    @Override
+    public void write(char c[]) throws IOException {
+        if (closed) {
+            throw new IOException("Already closed");
+        }
+        writer.write(c);
+    }
+
+    @Override
+    public void write(char c[], int off, int len) throws IOException {
+        if (closed) {
+            throw new IOException("Already closed");
+        }
+        writer.write(c, off, len);
+    }
+
+    @Override
+    public void write(int c) throws IOException {
+        if (closed) {
+            throw new IOException("Already closed");
+        }
+        writer.write(c);
+    }
+
+    @Override
+    public void write(String s) throws IOException {
+        if (closed) {
+            throw new IOException("Already closed");
+        }
+        writer.write(s);
+    }
+
+    @Override
+    public void write(String s, int off, int len) throws IOException {
+        if (closed) {
+            throw new IOException("Already closed");
+        }
+        writer.write(s, off, len);
+    }
+}
diff --git a/test/unit/src/test/java/com/sun/faces/mock/MockLifecycle.java b/test/unit/src/test/java/com/sun/faces/mock/MockLifecycle.java
new file mode 100644
index 0000000..1a95a18
--- /dev/null
+++ b/test/unit/src/test/java/com/sun/faces/mock/MockLifecycle.java
@@ -0,0 +1,85 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.mock;
+
+import javax.faces.FacesException;
+import javax.faces.context.ExternalContext;
+import javax.faces.context.FacesContext;
+import javax.faces.event.PhaseListener;
+import javax.faces.lifecycle.Lifecycle;
+import javax.servlet.http.HttpServletResponse;
+
+public class MockLifecycle extends Lifecycle {
+
+    // ------------------------------------------------------------- Properties
+    // --------------------------------------------------------- Public Methods
+    @Override
+    public void addPhaseListener(PhaseListener listener) {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void execute(FacesContext context) throws FacesException {
+
+    }
+
+    @Override
+    public PhaseListener[] getPhaseListeners() {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void removePhaseListener(PhaseListener listener) {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void render(FacesContext context) throws FacesException {
+        if (null != context) {
+            ExternalContext extContext = context.getExternalContext();
+            if (null != extContext) {
+                Object response = extContext.getResponse();
+                if (response instanceof MockHttpServletResponse) {
+                    ((MockHttpServletResponse) response).setStatus(HttpServletResponse.SC_OK);
+                }
+            }
+        }
+    }
+}
diff --git a/test/unit/src/test/java/com/sun/faces/mock/MockLifecycleFactory.java b/test/unit/src/test/java/com/sun/faces/mock/MockLifecycleFactory.java
new file mode 100644
index 0000000..c936576
--- /dev/null
+++ b/test/unit/src/test/java/com/sun/faces/mock/MockLifecycleFactory.java
@@ -0,0 +1,74 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.mock;
+
+import java.util.Iterator;
+import java.util.ArrayList;
+import javax.faces.FactoryFinder;
+import javax.faces.lifecycle.LifecycleFactory;
+import javax.faces.lifecycle.Lifecycle;
+
+public class MockLifecycleFactory extends LifecycleFactory {
+
+    public MockLifecycleFactory(LifecycleFactory oldImpl) {
+        System.setProperty(FactoryFinder.LIFECYCLE_FACTORY,
+                this.getClass().getName());
+    }
+
+    public MockLifecycleFactory() {
+    }
+
+    @Override
+    public void addLifecycle(String lifecycleId,
+            Lifecycle lifecycle) {
+    }
+
+    @Override
+    public Lifecycle getLifecycle(String lifecycleId) {
+        return new MockLifecycle();
+    }
+
+    @Override
+    public Iterator getLifecycleIds() {
+        ArrayList result = new ArrayList(1);
+        result.add(LifecycleFactory.DEFAULT_LIFECYCLE);
+        return result.iterator();
+    }
+}
diff --git a/test/unit/src/test/java/com/sun/faces/mock/MockMethodBinding.java b/test/unit/src/test/java/com/sun/faces/mock/MockMethodBinding.java
new file mode 100644
index 0000000..837bf30
--- /dev/null
+++ b/test/unit/src/test/java/com/sun/faces/mock/MockMethodBinding.java
@@ -0,0 +1,210 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.mock;
+
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import javax.faces.application.Application;
+import javax.faces.context.FacesContext;
+import javax.faces.el.EvaluationException;
+import javax.faces.el.MethodBinding;
+import javax.faces.el.MethodNotFoundException;
+import javax.faces.el.ReferenceSyntaxException;
+import javax.faces.el.ValueBinding;
+import javax.faces.component.StateHolder;
+import javax.faces.component.UIComponentBase;
+
+/**
+ * <p>
+ * Mock implementation of {@link MethodBinding} that supports a limited subset
+ * of expression evaluation functionality:</p>
+ * <ul>
+ * <li>The portion of the method reference expression before the final "." must
+ * conform to the limitations of {@link MockValueBinding}.</li>
+ * <li>The name of the method to be executed cannot be delimited by "[]".</li>
+ * </ul>
+ */
+public class MockMethodBinding extends MethodBinding implements StateHolder {
+
+    // ------------------------------------------------------------ Constructors
+    public MockMethodBinding() {
+    }
+
+    public MockMethodBinding(Application application, String ref,
+            Class args[]) {
+
+        this.application = application;
+        this.args = args;
+        if (ref.startsWith("#{") && ref.endsWith("}")) {
+            ref = ref.substring(2, ref.length() - 1);
+        }
+        this.ref = ref;
+        int period = ref.lastIndexOf(".");
+        if (period < 0) {
+            throw new ReferenceSyntaxException(ref);
+        }
+        vb = application.createValueBinding(ref.substring(0, period));
+        name = ref.substring(period + 1);
+        if (name.length() < 1) {
+            throw new ReferenceSyntaxException(ref);
+        }
+
+    }
+
+    // ------------------------------------------------------ Instance Variables
+    private Application application;
+    private Class args[];
+    private String name;
+    private String ref;
+    private ValueBinding vb;
+
+    // --------------------------------------------------- MethodBinding Methods
+    public Object invoke(FacesContext context, Object params[])
+            throws EvaluationException, MethodNotFoundException {
+
+        if (context == null) {
+            throw new NullPointerException();
+        }
+        Object base = vb.getValue(context);
+        Method method = method(base);
+        try {
+            return (method.invoke(base, params));
+        } catch (IllegalAccessException e) {
+            throw new EvaluationException(e);
+        } catch (InvocationTargetException e) {
+            throw new EvaluationException(e.getTargetException());
+        }
+
+    }
+
+    public Class getType(FacesContext context) {
+
+        Object base = vb.getValue(context);
+        Method method = method(base);
+        Class returnType = method.getReturnType();
+        if ("void".equals(returnType.getName())) {
+            return (null);
+        } else {
+            return (returnType);
+        }
+
+    }
+
+    public String getExpressionString() {
+        return "#{" + ref + "}";
+    }
+
+    // ----------------------------------------------------- StateHolder Methods
+    public Object saveState(FacesContext context) {
+        Object values[] = new Object[4];
+        values[0] = name;
+        values[1] = ref;
+        values[2] = UIComponentBase.saveAttachedState(context, vb);
+        values[3] = args;
+        return (values);
+    }
+
+    public void restoreState(FacesContext context, Object state) {
+        Object values[] = (Object[]) state;
+        name = (String) values[0];
+        ref = (String) values[1];
+        vb = (ValueBinding) UIComponentBase.restoreAttachedState(context,
+                values[2]);
+        args = (Class[]) values[3];
+    }
+
+    private boolean transientFlag = false;
+
+    public boolean isTransient() {
+        return (this.transientFlag);
+    }
+
+    public void setTransient(boolean transientFlag) {
+        this.transientFlag = transientFlag;
+    }
+
+    public boolean equals(Object otherObj) {
+        MockMethodBinding other = null;
+
+        if (!(otherObj instanceof MockMethodBinding)) {
+            return false;
+        }
+        other = (MockMethodBinding) otherObj;
+        // test object reference equality
+        if (this.ref != other.ref) {
+            // test object equality
+            if (null != this.ref && null != other.ref) {
+                if (!this.ref.equals(other.ref)) {
+                    return false;
+                }
+            }
+            return false;
+        }
+	// no need to test name, since it flows from ref.
+        // test our args array
+        if (this.args != other.args) {
+            if (this.args.length != other.args.length) {
+                return false;
+            }
+            for (int i = 0, len = this.args.length; i < len; i++) {
+                if (this.args[i] != other.args[i]) {
+                    if (!this.ref.equals(other.ref)) {
+                        return false;
+                    }
+
+                }
+            }
+        }
+        return true;
+    }
+
+    // --------------------------------------------------------- Private Methods
+    // Package private so that unit tests can call this
+    Method method(Object base) {
+
+        Class clazz = base.getClass();
+        try {
+            return (clazz.getMethod(name, args));
+        } catch (NoSuchMethodException e) {
+            throw new MethodNotFoundException(ref + ": " + e.getMessage());
+        }
+
+    }
+}
diff --git a/test/unit/src/test/java/com/sun/faces/mock/MockPageContext.java b/test/unit/src/test/java/com/sun/faces/mock/MockPageContext.java
new file mode 100644
index 0000000..b9e3314
--- /dev/null
+++ b/test/unit/src/test/java/com/sun/faces/mock/MockPageContext.java
@@ -0,0 +1,354 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.mock;
+
+import java.io.IOException;
+import java.util.Enumeration;
+import java.util.Hashtable;
+import javax.servlet.Servlet;
+import javax.servlet.ServletConfig;
+import javax.servlet.ServletException;
+import javax.servlet.ServletContext;
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletResponse;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpSession;
+import javax.servlet.jsp.JspWriter;
+import javax.servlet.jsp.PageContext;
+import javax.servlet.jsp.tagext.BodyContent;
+import javax.servlet.jsp.el.VariableResolver;
+import javax.servlet.jsp.el.ExpressionEvaluator;
+import javax.el.ELContext;
+import static javax.servlet.jsp.PageContext.APPLICATION;
+import static javax.servlet.jsp.PageContext.APPLICATION_SCOPE;
+import static javax.servlet.jsp.PageContext.CONFIG;
+import static javax.servlet.jsp.PageContext.EXCEPTION;
+import static javax.servlet.jsp.PageContext.OUT;
+import static javax.servlet.jsp.PageContext.PAGE;
+import static javax.servlet.jsp.PageContext.PAGECONTEXT;
+import static javax.servlet.jsp.PageContext.PAGE_SCOPE;
+import static javax.servlet.jsp.PageContext.REQUEST;
+import static javax.servlet.jsp.PageContext.REQUEST_SCOPE;
+import static javax.servlet.jsp.PageContext.RESPONSE;
+import static javax.servlet.jsp.PageContext.SESSION;
+import static javax.servlet.jsp.PageContext.SESSION_SCOPE;
+
+// Mock Object for PageContext
+public class MockPageContext extends PageContext {
+
+    private Servlet servlet = null;
+    private ServletRequest request = null;
+    private ServletResponse response = null;
+    private HttpSession session = null;
+    private String errorPageURL = null;
+    private boolean needsSession = false;
+    private int bufferSize = 0;
+    private boolean autoFlush = false;
+    private ServletConfig config = null;
+    private ServletContext context = null;
+    private JspWriter out = null;
+    private Hashtable attributes = new Hashtable();
+
+    // ---------------------------------------------------- PageContext Methods
+    public void clearPageScope() {
+        attributes.clear();
+    }
+
+    @Override
+    public ELContext getELContext() {
+        return null;
+    }
+
+    @Override
+    public Object findAttribute(String name) {
+        Object value = attributes.get(name);
+        if (value == null) {
+            value = request.getAttribute(name);
+        }
+        if ((value == null) && (session != null)) {
+            value = session.getAttribute(name);
+        }
+        if (value == null) {
+            value = context.getAttribute(name);
+        }
+        return (value);
+    }
+
+    @Override
+    public void forward(String path) throws IOException, ServletException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public Object getAttribute(String name) {
+        return (getAttribute(name, PAGE_SCOPE));
+    }
+
+    @Override
+    public Object getAttribute(String name, int scope) {
+        switch (scope) {
+            case PAGE_SCOPE:
+                return (attributes.get(name));
+            case REQUEST_SCOPE:
+                return (request.getAttribute(name));
+            case SESSION_SCOPE:
+                if (session == null) {
+                    throw new IllegalArgumentException("No session for this request");
+                }
+                return (session.getAttribute(name));
+            case APPLICATION_SCOPE:
+                return (context.getAttribute(name));
+            default:
+                throw new IllegalArgumentException("Invalid scope " + scope);
+        }
+    }
+
+    @Override
+    public Enumeration getAttributeNamesInScope(int scope) {
+        switch (scope) {
+            case PAGE_SCOPE:
+                return (attributes.keys());
+            case REQUEST_SCOPE:
+                return (request.getAttributeNames());
+            case SESSION_SCOPE:
+                if (session == null) {
+                    throw new IllegalArgumentException("No session for this request");
+                }
+                return (session.getAttributeNames());
+            case APPLICATION_SCOPE:
+                return (context.getAttributeNames());
+            default:
+                throw new IllegalArgumentException("Invalid scope " + scope);
+        }
+    }
+
+    @Override
+    public int getAttributesScope(String name) {
+        if (attributes.get(name) != null) {
+            return (PAGE_SCOPE);
+        } else if (request.getAttribute(name) != null) {
+            return (REQUEST_SCOPE);
+        } else if ((session != null) && (session.getAttribute(name) != null)) {
+            return (SESSION_SCOPE);
+        } else if (context.getAttribute(name) != null) {
+            return (APPLICATION_SCOPE);
+        } else {
+            return (0);
+
+        }
+    }
+
+    @Override
+    public Exception getException() {
+        return ((Exception) request.getAttribute(EXCEPTION));
+    }
+
+    @Override
+    public JspWriter getOut() {
+        return (this.out);
+    }
+
+    @Override
+    public Object getPage() {
+        return (this.servlet);
+    }
+
+    @Override
+    public ServletRequest getRequest() {
+        return (this.request);
+    }
+
+    @Override
+    public ServletResponse getResponse() {
+        return (this.response);
+    }
+
+    @Override
+    public ServletConfig getServletConfig() {
+        return (this.config);
+    }
+
+    @Override
+    public ServletContext getServletContext() {
+        return (this.context);
+    }
+
+    @Override
+    public HttpSession getSession() {
+        return (this.session);
+    }
+
+    @Override
+    public void include(String relativeUrlPath, boolean flush)
+            throws ServletException, IOException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void handlePageException(Exception e) throws IOException, ServletException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void handlePageException(Throwable t) throws IOException, ServletException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void include(String path) throws IOException, ServletException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void initialize(Servlet servlet, ServletRequest request,
+            ServletResponse response, String errorPageURL,
+            boolean needsSession, int bufferSize,
+            boolean autoFlush)
+            throws IOException, IllegalStateException, IllegalArgumentException {
+        // Initialize state - passed values
+        this.servlet = servlet;
+        this.request = request;
+        this.response = response;
+        this.errorPageURL = errorPageURL;
+        this.bufferSize = bufferSize;
+        this.autoFlush = autoFlush;
+
+        // Initialize state - derived values
+        this.config = servlet.getServletConfig();
+        this.context = config.getServletContext();
+        if (request instanceof HttpServletRequest && needsSession) {
+            this.session = ((HttpServletRequest) request).getSession();
+        }
+        this.out = new MockJspWriter(bufferSize, autoFlush);
+
+        // Register predefined page scope attributes
+        setAttribute(OUT, this.out);
+        setAttribute(REQUEST, this.request);
+        setAttribute(RESPONSE, this.response);
+        if (session != null) {
+            setAttribute(SESSION, session);
+        }
+        setAttribute(PAGE, servlet);
+        setAttribute(CONFIG, config);
+        setAttribute(PAGECONTEXT, this);
+        setAttribute(APPLICATION, context);
+    }
+
+    @Override
+    public VariableResolver getVariableResolver() {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public ExpressionEvaluator getExpressionEvaluator() {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public JspWriter popBody() {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public BodyContent pushBody() {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void release() {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void removeAttribute(String name) {
+        removeAttribute(name, PAGE_SCOPE);
+    }
+
+    @Override
+    public void removeAttribute(String name, int scope) {
+        switch (scope) {
+            case PAGE_SCOPE:
+                attributes.remove(name);
+                break;
+            case REQUEST_SCOPE:
+                request.removeAttribute(name);
+                break;
+            case SESSION_SCOPE:
+                if (session == null) {
+                    throw new IllegalArgumentException("No session for this request");
+                }
+                session.removeAttribute(name);
+                break;
+            case APPLICATION_SCOPE:
+                context.removeAttribute(name);
+                break;
+            default:
+                throw new IllegalArgumentException("Invalid scope " + scope);
+        }
+    }
+
+    @Override
+    public void setAttribute(String name, Object value) {
+        setAttribute(name, value, PAGE_SCOPE);
+    }
+
+    @Override
+    public void setAttribute(String name, Object value, int scope) {
+        switch (scope) {
+            case PAGE_SCOPE:
+                attributes.put(name, value);
+                break;
+            case REQUEST_SCOPE:
+                request.setAttribute(name, value);
+                break;
+            case SESSION_SCOPE:
+                if (session == null) {
+                    throw new IllegalArgumentException("No session for this request");
+                }
+                session.setAttribute(name, value);
+                break;
+            case APPLICATION_SCOPE:
+                context.setAttribute(name, value);
+                break;
+            default:
+                throw new IllegalArgumentException("Invalid scope " + scope);
+        }
+    }
+}
diff --git a/test/unit/src/test/java/com/sun/faces/mock/MockPartialViewContext.java b/test/unit/src/test/java/com/sun/faces/mock/MockPartialViewContext.java
new file mode 100644
index 0000000..b04793f
--- /dev/null
+++ b/test/unit/src/test/java/com/sun/faces/mock/MockPartialViewContext.java
@@ -0,0 +1,139 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.mock;
+
+import java.util.Collection;
+import java.util.Map;
+import java.util.List;
+import java.util.HashMap;
+import javax.faces.context.PartialResponseWriter;
+import javax.faces.context.PartialViewContext;
+import javax.faces.event.PhaseId;
+
+/**
+ * MockPartialViewContext implementation.
+ */
+public class MockPartialViewContext extends PartialViewContext {
+
+    private Map<Object, Object> attributes;
+
+    // ------------------------------------------------------------ Constructors
+    public MockPartialViewContext() {
+
+        attributes = new HashMap<Object, Object>();
+
+    }
+
+    // ----------------------------------------- Methods from PartialViewContext
+    public Map<Object, Object> getAttributes() {
+        return attributes;
+    }
+
+    public List<String> getExecutePhaseClientIds() {
+        throw new UnsupportedOperationException();
+    }
+
+    public void setExecutePhaseClientIds(List<String> executePhaseClientIds) {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public Collection<String> getExecuteIds() {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    @Override
+    public Collection<String> getRenderIds() {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    public void setRenderPhaseClientIds(List<String> renderPhaseClientIds) {
+        throw new UnsupportedOperationException();
+    }
+
+    public PartialResponseWriter getPartialResponseWriter() {
+        throw new UnsupportedOperationException();
+    }
+
+    public boolean isAjaxRequest() {
+        return false;
+    }
+
+    public boolean isPartialRequest() {
+        return false;
+    }
+
+    public boolean isExecuteNone() {
+        throw new UnsupportedOperationException();
+    }
+
+    public boolean isExecuteAll() {
+        throw new UnsupportedOperationException();
+    }
+
+    public boolean isRenderAll() {
+        throw new UnsupportedOperationException();
+    }
+
+    public void setRenderAll(boolean renderAll) {
+        throw new UnsupportedOperationException();
+    }
+
+    public boolean isRenderNone() {
+        throw new UnsupportedOperationException();
+    }
+
+    public void enableResponseWriting(boolean enable) {
+        throw new UnsupportedOperationException();
+    }
+
+    public void processPartial(PhaseId phaseId) {
+        throw new UnsupportedOperationException();
+    }
+
+    public void release() {
+        // no-op
+    }
+
+    @Override
+    public void setPartialRequest(boolean arg0) {
+    }
+
+}
diff --git a/test/unit/src/test/java/com/sun/faces/mock/MockPrincipal.java b/test/unit/src/test/java/com/sun/faces/mock/MockPrincipal.java
new file mode 100644
index 0000000..17c3c9d
--- /dev/null
+++ b/test/unit/src/test/java/com/sun/faces/mock/MockPrincipal.java
@@ -0,0 +1,110 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.mock;
+
+import java.security.Principal;
+
+/**
+ * <p>
+ * Mock <strong>Principal</strong> object for low-level unit tests.</p>
+ */
+public class MockPrincipal implements Principal {
+
+    public MockPrincipal() {
+        super();
+        this.name = "";
+        this.roles = new String[0];
+    }
+
+    public MockPrincipal(String name) {
+        super();
+        this.name = name;
+        this.roles = new String[0];
+    }
+
+    public MockPrincipal(String name, String roles[]) {
+        super();
+        this.name = name;
+        this.roles = roles;
+    }
+
+    protected String name = null;
+
+    protected String roles[] = null;
+
+    @Override
+    public String getName() {
+        return (this.name);
+    }
+
+    public boolean isUserInRole(String role) {
+        for (int i = 0; i < roles.length; i++) {
+            if (role.equals(roles[i])) {
+                return (true);
+            }
+        }
+        return (false);
+    }
+
+    @Override
+    public boolean equals(Object o) {
+        if (o == null) {
+            return (false);
+        }
+        if (!(o instanceof Principal)) {
+            return (false);
+        }
+        Principal p = (Principal) o;
+        if (name == null) {
+            return (p.getName() == null);
+        } else {
+            return (name.equals(p.getName()));
+        }
+    }
+
+    @Override
+    public int hashCode() {
+        if (name == null) {
+            return ("".hashCode());
+        } else {
+            return (name.hashCode());
+        }
+    }
+}
diff --git a/test/unit/src/test/java/com/sun/faces/mock/MockPropertyResolver.java b/test/unit/src/test/java/com/sun/faces/mock/MockPropertyResolver.java
new file mode 100644
index 0000000..8946e48
--- /dev/null
+++ b/test/unit/src/test/java/com/sun/faces/mock/MockPropertyResolver.java
@@ -0,0 +1,143 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.mock;
+
+import java.lang.reflect.InvocationTargetException;
+import java.util.Map;
+import javax.faces.el.EvaluationException;
+import javax.faces.el.PropertyNotFoundException;
+import javax.faces.el.PropertyResolver;
+import org.apache.commons.beanutils.PropertyUtils;
+
+/**
+ * <p>
+ * Mock implementation of {@link PropertyResolver} that supports a limited
+ * subset of expression evaluation functionality:</p>
+ * <ul>
+ * <li>Supports <code>getValue()</code> and <code>setValue()</code> methods that
+ * take a String second argument.</li>
+ * <li>Supports property getting and setting as provided by
+ * <code>PropertyUtils.getSimpleProperty()</code> and
+ * <code>PropertyUtils.setSimpleProperty()</code>.</li>
+ * </ul>
+ */
+public class MockPropertyResolver extends PropertyResolver {
+
+    // ------------------------------------------------------------ Constructors
+    // ------------------------------------------------ PropertyResolver Methods
+    public Object getValue(Object base, Object property)
+            throws EvaluationException, PropertyNotFoundException {
+
+        if (base == null) {
+            throw new NullPointerException();
+        }
+        String name = property.toString();
+        try {
+            if (base instanceof Map) {
+                Map map = (Map) base;
+                if (map.containsKey(name)) {
+                    return (map.get(name));
+                } else {
+                    throw new PropertyNotFoundException(name);
+                }
+            } else {
+                return (PropertyUtils.getSimpleProperty(base, name));
+            }
+        } catch (IllegalAccessException e) {
+            throw new EvaluationException(e);
+        } catch (InvocationTargetException e) {
+            throw new EvaluationException(e.getTargetException());
+        } catch (NoSuchMethodException e) {
+            throw new PropertyNotFoundException(name);
+        }
+    }
+
+    public Object getValue(Object base, int index)
+            throws PropertyNotFoundException {
+        throw new UnsupportedOperationException();
+    }
+
+    public void setValue(Object base, Object property, Object value)
+            throws PropertyNotFoundException {
+
+        if (base == null) {
+            throw new NullPointerException();
+        }
+        String name = property.toString();
+        try {
+        if (base instanceof Map) {
+            ((Map) base).put(name, value);
+        } else {
+                PropertyUtils.setSimpleProperty(base, name, value);
+        }
+        } catch (IllegalAccessException e) {
+            throw new EvaluationException(e);
+        } catch (InvocationTargetException e) {
+            throw new EvaluationException(e.getTargetException());
+        } catch (NoSuchMethodException e) {
+            throw new PropertyNotFoundException(name);
+        }
+    }
+
+    public void setValue(Object base, int index, Object value)
+            throws PropertyNotFoundException {
+        throw new UnsupportedOperationException();
+    }
+
+    public boolean isReadOnly(Object base, Object property)
+            throws PropertyNotFoundException {
+        throw new UnsupportedOperationException();
+    }
+
+    public boolean isReadOnly(Object base, int index)
+            throws PropertyNotFoundException {
+        throw new UnsupportedOperationException();
+    }
+
+    public Class getType(Object base, Object property)
+            throws PropertyNotFoundException {
+        throw new UnsupportedOperationException();
+    }
+
+    public Class getType(Object base, int index)
+            throws PropertyNotFoundException {
+        throw new UnsupportedOperationException();
+    }
+}
diff --git a/test/unit/src/test/java/com/sun/faces/mock/MockRenderKit.java b/test/unit/src/test/java/com/sun/faces/mock/MockRenderKit.java
new file mode 100644
index 0000000..9f42c6e
--- /dev/null
+++ b/test/unit/src/test/java/com/sun/faces/mock/MockRenderKit.java
@@ -0,0 +1,202 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.mock;
+
+import java.util.HashMap;
+import java.util.Map;
+import javax.faces.component.UIComponent;
+import javax.faces.component.UIInput;
+import javax.faces.component.UIData;
+import javax.faces.component.UIOutput;
+import javax.faces.component.UIPanel;
+import javax.faces.context.FacesContext;
+import javax.faces.context.ResponseWriter;
+import javax.faces.context.ResponseStream;
+import javax.faces.render.Renderer;
+import javax.faces.render.RenderKit;
+import javax.faces.render.ResponseStateManager;
+import java.io.Writer;
+import java.io.OutputStream;
+import java.io.IOException;
+
+public class MockRenderKit extends RenderKit {
+
+    public MockRenderKit() {
+        addRenderer(UIData.COMPONENT_FAMILY,
+                "javax.faces.Table", new TestRenderer(true));
+        addRenderer(UIInput.COMPONENT_FAMILY,
+                "TestRenderer", new TestRenderer());
+        addRenderer(UIInput.COMPONENT_FAMILY,
+                "javax.faces.Text", new TestRenderer());
+        addRenderer(UIOutput.COMPONENT_FAMILY,
+                "TestRenderer", new TestRenderer());
+        addRenderer(UIOutput.COMPONENT_FAMILY,
+                "javax.faces.Text", new TestRenderer());
+        addRenderer(UIPanel.COMPONENT_FAMILY,
+                "javax.faces.Grid", new TestRenderer(true));
+        responseStateManager = new MockResponseStateManager();
+    }
+
+    private Map renderers = new HashMap();
+    private ResponseStateManager responseStateManager = null;
+
+    @Override
+    public void addRenderer(String family, String rendererType,
+            Renderer renderer) {
+        if ((family == null) || (rendererType == null) || (renderer == null)) {
+            throw new NullPointerException();
+        }
+        renderers.put(family + "|" + rendererType, renderer);
+    }
+
+    @Override
+    public Renderer getRenderer(String family, String rendererType) {
+        if ((family == null) || (rendererType == null)) {
+            throw new NullPointerException();
+        }
+        return ((Renderer) renderers.get(family + "|" + rendererType));
+    }
+
+    @Override
+    public ResponseWriter createResponseWriter(Writer writer,
+            String contentTypeList,
+            String characterEncoding) {
+        return new MockResponseWriter(writer, characterEncoding);
+    }
+
+    @Override
+    public ResponseStream createResponseStream(OutputStream out) {
+        final OutputStream os = out;
+        return new ResponseStream() {
+            @Override
+            public void close() throws IOException {
+                os.close();
+            }
+
+            @Override
+            public void flush() throws IOException {
+                os.flush();
+            }
+
+            @Override
+            public void write(byte[] b) throws IOException {
+                os.write(b);
+            }
+
+            @Override
+            public void write(byte[] b, int off, int len) throws IOException {
+                os.write(b, off, len);
+            }
+
+            @Override
+            public void write(int b) throws IOException {
+                os.write(b);
+            }
+        };
+    }
+
+    @Override
+    public ResponseStateManager getResponseStateManager() {
+        return responseStateManager;
+    }
+
+    class TestRenderer extends Renderer {
+
+        private boolean rendersChildren = false;
+
+        public TestRenderer() {
+        }
+
+        public TestRenderer(boolean rendersChildren) {
+            this.rendersChildren = rendersChildren;
+        }
+
+        @Override
+        public void decode(FacesContext context, UIComponent component) {
+
+            if ((context == null) || (component == null)) {
+                throw new NullPointerException();
+            }
+
+            if (!(component instanceof UIInput)) {
+                return;
+            }
+            UIInput input = (UIInput) component;
+            String clientId = input.getClientId(context);
+            // System.err.println("decode(" + clientId + ")");
+
+            // Decode incoming request parameters
+            Map params = context.getExternalContext().getRequestParameterMap();
+            if (params.containsKey(clientId)) {
+                // System.err.println("  '" + input.currentValue(context) +
+                //                    "' --> '" + params.get(clientId) + "'");
+                input.setSubmittedValue((String) params.get(clientId));
+            }
+        }
+
+        @Override
+        public void encodeBegin(FacesContext context, UIComponent component)
+                throws IOException {
+
+            if ((context == null) || (component == null)) {
+                throw new NullPointerException();
+            }
+            ResponseWriter writer = context.getResponseWriter();
+            writer.write("<text id='" + component.getClientId(context) + "' value='"
+                    + component.getAttributes().get("value") + "'/>\n");
+        }
+
+        @Override
+        public void encodeChildren(FacesContext context, UIComponent component)
+                throws IOException {
+            if ((context == null) || (component == null)) {
+                throw new NullPointerException();
+            }
+        }
+
+        @Override
+        public void encodeEnd(FacesContext context, UIComponent component)
+                throws IOException {
+            if ((context == null) || (component == null)) {
+                throw new NullPointerException();
+            }
+        }
+    }
+}
diff --git a/test/unit/src/test/java/com/sun/faces/mock/MockRenderKitFactory.java b/test/unit/src/test/java/com/sun/faces/mock/MockRenderKitFactory.java
new file mode 100644
index 0000000..0814f70
--- /dev/null
+++ b/test/unit/src/test/java/com/sun/faces/mock/MockRenderKitFactory.java
@@ -0,0 +1,95 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.mock;
+
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+import javax.faces.FactoryFinder;
+import javax.faces.context.FacesContext;
+import javax.faces.render.RenderKit;
+import javax.faces.render.RenderKitFactory;
+
+public class MockRenderKitFactory extends RenderKitFactory {
+
+    public MockRenderKitFactory(RenderKitFactory oldImpl) {
+        System.setProperty(FactoryFinder.RENDER_KIT_FACTORY,
+                this.getClass().getName());
+    }
+
+    public MockRenderKitFactory() {
+    }
+
+    private Map renderKits = new HashMap();
+
+    @Override
+    public void addRenderKit(String renderKitId, RenderKit renderKit) {
+        if ((renderKitId == null) || (renderKit == null)) {
+            throw new NullPointerException();
+        }
+        synchronized (renderKits) {
+            if (renderKits.containsKey(renderKitId)) {
+                throw new IllegalArgumentException(renderKitId);
+            }
+            renderKits.put(renderKitId, renderKit);
+        }
+    }
+
+    @Override
+    public RenderKit getRenderKit(FacesContext context, String renderKitId) {
+        if (renderKitId == null) {
+            throw new NullPointerException();
+        }
+        synchronized (renderKits) {
+            RenderKit renderKit = (RenderKit) renderKits.get(renderKitId);
+            if (renderKit == null) {
+                throw new IllegalArgumentException(renderKitId);
+            }
+            return (renderKit);
+        }
+    }
+
+    @Override
+    public Iterator getRenderKitIds() {
+        synchronized (renderKits) {
+            return (renderKits.keySet().iterator());
+        }
+    }
+}
diff --git a/test/unit/src/test/java/com/sun/faces/mock/MockRequestMap.java b/test/unit/src/test/java/com/sun/faces/mock/MockRequestMap.java
new file mode 100644
index 0000000..7cc711f
--- /dev/null
+++ b/test/unit/src/test/java/com/sun/faces/mock/MockRequestMap.java
@@ -0,0 +1,173 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.mock;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Enumeration;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import javax.servlet.ServletRequest;
+
+final class MockRequestMap implements Map {
+
+    public MockRequestMap(ServletRequest request) {
+        this.request = request;
+    }
+
+    private ServletRequest request = null;
+
+    public void clear() {
+        Iterator keys = keySet().iterator();
+        while (keys.hasNext()) {
+            request.removeAttribute((String) keys.next());
+        }
+    }
+
+    public boolean containsKey(Object key) {
+        return (request.getAttribute(key(key)) != null);
+    }
+
+    public boolean containsValue(Object value) {
+        if (value == null) {
+            return (false);
+        }
+        Enumeration keys = request.getAttributeNames();
+        while (keys.hasMoreElements()) {
+            Object next = request.getAttribute((String) keys.nextElement());
+            if (next == value) {
+                return (true);
+            }
+        }
+        return (false);
+    }
+
+    public Set entrySet() {
+        Set set = new HashSet();
+        Enumeration keys = request.getAttributeNames();
+        while (keys.hasMoreElements()) {
+            set.add(request.getAttribute((String) keys.nextElement()));
+        }
+        return (set);
+    }
+
+    public boolean equals(Object o) {
+        return (request.equals(o));
+    }
+
+    public Object get(Object key) {
+        return (request.getAttribute(key(key)));
+    }
+
+    public int hashCode() {
+        return (request.hashCode());
+    }
+
+    public boolean isEmpty() {
+        return (size() < 1);
+    }
+
+    public Set keySet() {
+        Set set = new HashSet();
+        Enumeration keys = request.getAttributeNames();
+        while (keys.hasMoreElements()) {
+            set.add(keys.nextElement());
+        }
+        return (set);
+    }
+
+    public Object put(Object key, Object value) {
+        if (value == null) {
+            return (remove(key));
+        }
+        String skey = key(key);
+        Object previous = request.getAttribute(skey);
+        request.setAttribute(skey, value);
+        return (previous);
+    }
+
+    public void putAll(Map map) {
+        Iterator keys = map.keySet().iterator();
+        while (keys.hasNext()) {
+            String key = (String) keys.next();
+            request.setAttribute(key, map.get(key));
+        }
+    }
+
+    public Object remove(Object key) {
+        String skey = key(key);
+        Object previous = request.getAttribute(skey);
+        request.removeAttribute(skey);
+        return (previous);
+    }
+
+    public int size() {
+        int n = 0;
+        Enumeration keys = request.getAttributeNames();
+        while (keys.hasMoreElements()) {
+            keys.nextElement();
+            n++;
+        }
+        return (n);
+    }
+
+    public Collection values() {
+        List list = new ArrayList();
+        Enumeration keys = request.getAttributeNames();
+        while (keys.hasMoreElements()) {
+            list.add(request.getAttribute((String) keys.nextElement()));
+        }
+        return (list);
+    }
+
+    private String key(Object key) {
+        if (key == null) {
+            throw new IllegalArgumentException();
+        } else if (key instanceof String) {
+            return ((String) key);
+        } else {
+            return (key.toString());
+        }
+    }
+
+}
diff --git a/test/unit/src/test/java/com/sun/faces/mock/MockResourceHandler.java b/test/unit/src/test/java/com/sun/faces/mock/MockResourceHandler.java
new file mode 100644
index 0000000..5d9e4f3
--- /dev/null
+++ b/test/unit/src/test/java/com/sun/faces/mock/MockResourceHandler.java
@@ -0,0 +1,85 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.mock;
+
+import java.io.IOException;
+
+import javax.faces.application.ResourceHandler;
+import javax.faces.application.Resource;
+import javax.faces.context.FacesContext;
+
+public class MockResourceHandler extends ResourceHandler {
+
+    public Resource createResource(String resourceName) {
+        throw new UnsupportedOperationException();
+    }
+
+    public Resource createResource(String resourceName, String libraryName) {
+        throw new UnsupportedOperationException();
+    }
+
+    public Resource createResource(String resourceName,
+            String libraryName,
+            String contentType) {
+        throw new UnsupportedOperationException();
+    }
+
+    public void handleResourceRequest(FacesContext context) throws IOException {
+        throw new UnsupportedOperationException();
+    }
+
+    public boolean isResourceRequest(FacesContext context) {
+        return false;
+    }
+
+    public boolean libraryExists(String libraryName) {
+        return true;
+    }
+
+    public String getRendererTypeForResourceName(String resourceName) {
+        if (resourceName.endsWith(".js")) {
+            return "javax.faces.resource.Script";
+        } else if (resourceName.endsWith(".css")) {
+            return "javax.faces.resource.Stylesheet";
+        } else {
+            return null;
+        }
+    }
+}
diff --git a/test/unit/src/test/java/com/sun/faces/mock/MockResponseStateManager.java b/test/unit/src/test/java/com/sun/faces/mock/MockResponseStateManager.java
new file mode 100644
index 0000000..99b1217
--- /dev/null
+++ b/test/unit/src/test/java/com/sun/faces/mock/MockResponseStateManager.java
@@ -0,0 +1,45 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.mock;
+
+import javax.faces.render.ResponseStateManager;
+
+public class MockResponseStateManager extends ResponseStateManager {
+}
diff --git a/test/unit/src/test/java/com/sun/faces/mock/MockResponseWriter.java b/test/unit/src/test/java/com/sun/faces/mock/MockResponseWriter.java
new file mode 100644
index 0000000..d7c8b91
--- /dev/null
+++ b/test/unit/src/test/java/com/sun/faces/mock/MockResponseWriter.java
@@ -0,0 +1,154 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.mock;
+
+import java.io.IOException;
+import java.io.Writer;
+import javax.faces.context.ResponseWriter;
+import javax.faces.component.UIComponent;
+
+public class MockResponseWriter extends ResponseWriter {
+
+    public MockResponseWriter(Writer writer, String encoding) {
+        this.writer = writer;
+        this.encoding = encoding;
+    }
+
+    private Writer writer;
+    private String encoding;
+
+    // ---------------------------------------------------------- Writer Methods
+    @Override
+    public void close() throws IOException {
+        writer.close();
+    }
+
+    @Override
+    public void flush() throws IOException {
+        writer.flush();
+    }
+
+    public void write(char c) throws IOException {
+        writer.write(c);
+    }
+
+    @Override
+    public void write(char cbuf[], int off, int len) throws IOException {
+        writer.write(cbuf, off, len);
+    }
+
+    @Override
+    public void write(int c) throws IOException {
+        writer.write(c);
+    }
+
+    @Override
+    public void write(String s) throws IOException {
+        writer.write(s);
+    }
+
+    @Override
+    public void write(String s, int off, int len) throws IOException {
+        writer.write(s, off, len);
+    }
+
+    // --------------------------------------------------- ResponseWrter Methods
+    @Override
+    public String getContentType() {
+        return "text/html";
+    }
+
+    @Override
+    public String getCharacterEncoding() {
+        return (this.encoding);
+    }
+
+    @Override
+    public void startDocument() throws IOException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void endDocument() throws IOException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void startElement(String name,
+            UIComponent component) throws IOException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void endElement(String name) throws IOException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void writeAttribute(String name, Object value,
+            String componentPropertyName) throws IOException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void writeURIAttribute(String name, Object value, String componentPropertyName) throws IOException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void writeComment(Object comment) throws IOException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void writeText(Object text, String componentProperty) throws IOException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void writeText(char text[], int off, int len) throws IOException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public ResponseWriter cloneWithWriter(Writer writer) {
+        throw new UnsupportedOperationException();
+    }
+}
diff --git a/test/unit/src/test/java/com/sun/faces/mock/MockResult.java b/test/unit/src/test/java/com/sun/faces/mock/MockResult.java
new file mode 100644
index 0000000..68fcc26
--- /dev/null
+++ b/test/unit/src/test/java/com/sun/faces/mock/MockResult.java
@@ -0,0 +1,117 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.mock;
+
+import java.util.SortedMap;
+import java.util.TreeMap;
+import javax.faces.FacesException;
+import javax.servlet.jsp.jstl.sql.Result;
+import org.apache.commons.beanutils.PropertyUtils;
+
+/**
+ * <p>
+ * Mock object that implements enough of
+ * <code>javax.servlet.jsp.jstl.sql.ResultSet</code> to exercise the
+ * <code>ResultDataModel</code> functionality. It wraps an array of JavaBeans
+ * objects that are passed to the constructor.</p>
+ *
+ * <p>
+ * <strong>IMPLEMENTATION NOTE</strong> - The <code>SortedMap</code> objects
+ * returned by <code>getRows()</code> do <strong>NOT</strong>
+ * support case-insensitive key comparisons, as required by the JSTL
+ * specification. Therefore, key values in value reference expressions will be
+ * matched case sensitively in unit tests.</p>
+ */
+public class MockResult implements Result {
+
+    // ------------------------------------------------------------ Constructors
+    /**
+     * <p>
+     * Construct a new <code>MockResult</code> instance wrapping the specified
+     * array of beans.</p>
+     *
+     * @param beans Array of beans representing the content of the result set
+     */
+    public MockResult(Object beans[]) {
+        if (beans == null) {
+            throw new NullPointerException();
+        }
+        this.beans = beans;
+    }
+
+    // ------------------------------------------------------ Instance Variables
+    // Array of beans representing our underlying data
+    private Object beans[] = null;
+
+    // ----------------------------------------------------- Implemented Methods
+    @Override
+    public SortedMap[] getRows() {
+        TreeMap results[] = new TreeMap[beans.length];
+        for (int i = 0; i < results.length; i++) {
+            try {
+                results[i] = new TreeMap(PropertyUtils.describe(beans[i]));
+            } catch (Exception e) {
+                throw new FacesException(e);
+            }
+        }
+        return (results);
+    }
+
+    @Override
+    public int getRowCount() {
+        return (beans.length);
+    }
+
+    // --------------------------------------------------- Unimplemented Methods
+    @Override
+    public Object[][] getRowsByIndex() {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public String[] getColumnNames() {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public boolean isLimitedByMaxRows() {
+        throw new UnsupportedOperationException();
+    }
+}
diff --git a/test/unit/src/test/java/com/sun/faces/mock/MockResultSet.java b/test/unit/src/test/java/com/sun/faces/mock/MockResultSet.java
new file mode 100644
index 0000000..17bbcc0
--- /dev/null
+++ b/test/unit/src/test/java/com/sun/faces/mock/MockResultSet.java
@@ -0,0 +1,1164 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.mock;
+
+import java.io.InputStream;
+import java.io.Reader;
+import java.sql.NClob;
+import java.sql.RowId;
+import java.sql.SQLXML;
+import java.util.Calendar;
+import java.util.Map;
+import java.math.BigDecimal;
+import java.net.URL;
+import java.sql.Array;
+import java.sql.Blob;
+import java.sql.Clob;
+import java.sql.Date;
+import java.sql.Ref;
+import java.sql.ResultSet;
+import java.sql.ResultSetMetaData;
+import java.sql.SQLException;
+import java.sql.SQLWarning;
+import java.sql.Statement;
+import java.sql.Time;
+import java.sql.Timestamp;
+import com.sun.faces.mock.model.BeanTestImpl;
+import org.apache.commons.beanutils.PropertyUtils;
+
+/**
+ * <p>
+ * Mock object that implements enough of <code>java.sql.ResultSet</code> to
+ * exercise the <code>ResultSetDataModel</code> functionality. It wraps an array
+ * of JavaBeans objects that are passed to the constructor.</p>
+ */
+public class MockResultSet implements ResultSet {
+
+    // ------------------------------------------------------------ Constructors
+    /**
+     * <p>
+     * Construct a new <code>MockResultSet</code> instance wrapping the
+     * specified array of beans.</p>
+     *
+     * @param beans Array of beans representing the content of the result set
+     */
+    public MockResultSet(Object beans[]) {
+        if (beans == null) {
+            throw new NullPointerException();
+        }
+        this.beans = beans;
+        this.clazz = beans.getClass().getComponentType();
+    }
+
+    // ------------------------------------------------------ Instance Variables
+    // Array of beans representing our underlying data
+    private Object beans[] = null;
+
+    // Class representing the underlying data type we are wrapping
+    private Class clazz = null;
+
+    // ResultSetMetaData for this ResultSet
+    private MockResultSetMetaData metadata = null;
+
+    // Current row number (0 means "before the first row"
+    private int row = 0;
+
+    // ----------------------------------------------------- Implemented Methods
+    @Override
+    public boolean absolute(int row) throws SQLException {
+        if (row == 0) {
+            this.row = 0;
+            return (false);
+        } else if (row > 0) {
+            if (row > beans.length) {
+                this.row = beans.length + 1;
+                return (false);
+            } else {
+                this.row = row;
+                return (true);
+            }
+        } else {
+            this.row = (beans.length + 1) - row;
+            if (row < 1) {
+                row = 0;
+                return (false);
+            } else {
+                return (true);
+            }
+        }
+    }
+
+    @Override
+    public void beforeFirst() throws SQLException {
+        absolute(0);
+    }
+
+    @Override
+    public void close() throws SQLException {
+        // No action required
+    }
+
+    @Override
+    public int getConcurrency() throws SQLException {
+        return (ResultSet.CONCUR_UPDATABLE);
+    }
+
+    @Override
+    public ResultSetMetaData getMetaData() throws SQLException {
+        if (metadata == null) {
+            metadata = new MockResultSetMetaData(clazz);
+        }
+        return (metadata);
+    }
+
+    @Override
+    public Object getObject(int columnIndex) throws SQLException {
+        return (getObject(getMetaData().getColumnName(columnIndex)));
+    }
+
+    @Override
+    public Object getObject(String columnName) throws SQLException {
+        if ((row <= 0) || (row > beans.length)) {
+            throw new SQLException("Invalid row number " + row);
+        }
+        try {
+            if (columnName.equals("writeOnlyProperty")
+                    && (beans[row - 1] instanceof BeanTestImpl)) {
+                return (((BeanTestImpl) beans[row - 1]).getWriteOnlyPropertyValue());
+            } else {
+                return (PropertyUtils.getSimpleProperty(beans[row - 1],
+                        columnName));
+            }
+        } catch (Exception e) {
+            throw new SQLException(e.getMessage());
+        }
+    }
+
+    @Override
+    public int getRow() throws SQLException {
+        return (this.row);
+    }
+
+    @Override
+    public int getType() throws SQLException {
+        return (ResultSet.TYPE_SCROLL_INSENSITIVE);
+    }
+
+    @Override
+    public boolean last() throws SQLException {
+        return (absolute(beans.length));
+    }
+
+    @Override
+    public void updateObject(int columnIndex, Object value)
+            throws SQLException {
+        updateObject(getMetaData().getColumnName(columnIndex), value);
+    }
+
+    @Override
+    public void updateObject(String columnName, Object value)
+            throws SQLException {
+        if ((row <= 0) || (row > beans.length)) {
+            throw new SQLException("Invalid row number " + row);
+        }
+        try {
+            PropertyUtils.setSimpleProperty(beans[row - 1], columnName, value);
+        } catch (Exception e) {
+            throw new SQLException(e.getMessage());
+        }
+    }
+
+    // --------------------------------------------------- Unimplemented Methods
+    @Override
+    public void afterLast() throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void cancelRowUpdates() throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void clearWarnings() throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void deleteRow() throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public int findColumn(String columnName) throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public boolean first() throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public Array getArray(int columnIndex) throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public Array getArray(String columnName) throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public InputStream getAsciiStream(int columnIndex) throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public InputStream getAsciiStream(String columnName) throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public BigDecimal getBigDecimal(int columnIndex) throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    /**
+     * @deprecated
+     */
+    @Override
+    public BigDecimal getBigDecimal(int columnIndex, int scale)
+            throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public BigDecimal getBigDecimal(String columnName) throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    /**
+     * @param columnName
+     * @deprecated
+     */
+    @Override
+    public BigDecimal getBigDecimal(String columnName, int scale)
+            throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public InputStream getBinaryStream(int columnIndex) throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public InputStream getBinaryStream(String columnName) throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public Blob getBlob(int columnIndex) throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public Blob getBlob(String columnName) throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public boolean getBoolean(int columnIndex) throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public boolean getBoolean(String columnName) throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public byte getByte(int columnIndex) throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public byte getByte(String columnName) throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public byte[] getBytes(int columnIndex) throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public byte[] getBytes(String columnName) throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public Reader getCharacterStream(int columnIndex)
+            throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public Reader getCharacterStream(String columnName) throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public Clob getClob(int columnIndex) throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public Clob getClob(String columnName) throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public String getCursorName() throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public Date getDate(int columnIndex) throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public Date getDate(int columnIndex, Calendar cal) throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public Date getDate(String columnName) throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public Date getDate(String columnName, Calendar cal) throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public double getDouble(int columnIndex) throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public double getDouble(String columnName) throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public int getFetchDirection() throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public int getFetchSize() throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public float getFloat(int columnIndex) throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public float getFloat(String columnName) throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public int getInt(int columnIndex) throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public int getInt(String columnName) throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public long getLong(int columnIndex) throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public long getLong(String columnName) throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public Object getObject(int columnIndex, Map map) throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public Object getObject(String columnName, Map map) throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public Ref getRef(int columnIndex) throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public Ref getRef(String columnName) throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public short getShort(int columnIndex) throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public short getShort(String columnName) throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public Statement getStatement() throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public String getString(int columnIndex) throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public String getString(String columnName) throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public Time getTime(int columnIndex) throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public Time getTime(int columnIndex, Calendar cal) throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public Time getTime(String columnName) throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public Time getTime(String columnName, Calendar cal) throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public Timestamp getTimestamp(int columnIndex) throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public Timestamp getTimestamp(int columnIndex, Calendar cal)
+            throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public Timestamp getTimestamp(String columnName) throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public Timestamp getTimestamp(String columnName, Calendar cal)
+            throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    /**
+     * @deprecated
+     */
+    @Override
+    public InputStream getUnicodeStream(int columnIndex) throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    /**
+     * @param columnName
+     * @deprecated
+     */
+    @Override
+    public InputStream getUnicodeStream(String columnName) throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public URL getURL(int columnIndex) throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public URL getURL(String columnName) throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public SQLWarning getWarnings() throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void insertRow() throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public boolean isAfterLast() throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public boolean isBeforeFirst() throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public boolean isFirst() throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public boolean isLast() throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void moveToCurrentRow() throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void moveToInsertRow() throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public boolean next() throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public boolean previous() throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void refreshRow() throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public boolean relative(int rows) throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public boolean rowDeleted() throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public boolean rowInserted() throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public boolean rowUpdated() throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void setFetchDirection(int direction) throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void setFetchSize(int size) throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void updateArray(int columnPosition, Array x)
+            throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void updateArray(String columnName, Array x)
+            throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void updateAsciiStream(int columnPosition, InputStream x, int len)
+            throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void updateAsciiStream(String columnName, InputStream x, int len)
+            throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void updateBigDecimal(int columnPosition, BigDecimal x)
+            throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void updateBigDecimal(String columnName, BigDecimal x)
+            throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void updateBinaryStream(int columnPosition, InputStream x, int len)
+            throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void updateBinaryStream(String columnName, InputStream x, int len)
+            throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void updateBlob(int columnPosition, Blob x)
+            throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void updateBlob(String columnName, Blob x)
+            throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void updateBoolean(int columnPosition, boolean x)
+            throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void updateBoolean(String columnName, boolean x)
+            throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void updateByte(int columnPosition, byte x)
+            throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void updateByte(String columnName, byte x)
+            throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void updateBytes(int columnPosition, byte x[])
+            throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void updateBytes(String columnName, byte x[])
+            throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void updateCharacterStream(int columnPosition, Reader x, int len)
+            throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void updateCharacterStream(String columnName, Reader x, int len)
+            throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void updateClob(int columnPosition, Clob x)
+            throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void updateClob(String columnName, Clob x)
+            throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void updateDate(int columnPosition, Date x)
+            throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void updateDate(String columnName, Date x)
+            throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void updateDouble(int columnPosition, double x)
+            throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void updateDouble(String columnName, double x)
+            throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void updateFloat(int columnPosition, float x)
+            throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void updateFloat(String columnName, float x)
+            throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void updateInt(int columnPosition, int x)
+            throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void updateInt(String columnName, int x)
+            throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void updateLong(int columnPosition, long x)
+            throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void updateLong(String columnName, long x)
+            throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void updateNull(int columnPosition)
+            throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void updateNull(String columnName)
+            throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void updateObject(int columnPosition, Object x, int scale)
+            throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void updateObject(String columnName, Object x, int scale)
+            throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void updateRef(int columnPosition, Ref x)
+            throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void updateRef(String columnName, Ref x)
+            throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void updateRow() throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void updateShort(int columnPosition, short x)
+            throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void updateShort(String columnName, short x)
+            throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void updateString(int columnPosition, String x)
+            throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void updateString(String columnName, String x)
+            throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void updateTime(int columnPosition, Time x)
+            throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void updateTime(String columnName, Time x)
+            throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void updateTimestamp(int columnPosition, Timestamp x)
+            throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void updateTimestamp(String columnName, Timestamp x)
+            throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public boolean wasNull() throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public int getHoldability() throws SQLException {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    @Override
+    public Reader getNCharacterStream(int columnIndex) throws SQLException {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    @Override
+    public Reader getNCharacterStream(String columnLabel) throws SQLException {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    @Override
+    public NClob getNClob(int columnIndex) throws SQLException {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    @Override
+    public NClob getNClob(String columnLabel) throws SQLException {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    @Override
+    public String getNString(int columnIndex) throws SQLException {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    @Override
+    public String getNString(String columnLabel) throws SQLException {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    @Override
+    public RowId getRowId(int columnIndex) throws SQLException {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    @Override
+    public RowId getRowId(String columnLabel) throws SQLException {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    @Override
+    public SQLXML getSQLXML(int columnIndex) throws SQLException {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    @Override
+    public SQLXML getSQLXML(String columnLabel) throws SQLException {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    @Override
+    public boolean isClosed() throws SQLException {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    @Override
+    public void updateAsciiStream(int columnIndex, InputStream x, long length) throws SQLException {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    @Override
+    public void updateAsciiStream(String columnLabel, InputStream x, long length) throws SQLException {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    @Override
+    public void updateAsciiStream(int columnIndex, InputStream x) throws SQLException {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    @Override
+    public void updateAsciiStream(String columnLabel, InputStream x) throws SQLException {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    @Override
+    public void updateBinaryStream(int columnIndex, InputStream x, long length) throws SQLException {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    @Override
+    public void updateBinaryStream(String columnLabel, InputStream x, long length) throws SQLException {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    @Override
+    public void updateBinaryStream(int columnIndex, InputStream x) throws SQLException {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    @Override
+    public void updateBinaryStream(String columnLabel, InputStream x) throws SQLException {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    @Override
+    public void updateBlob(int columnIndex, InputStream inputStream, long length) throws SQLException {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    @Override
+    public void updateBlob(String columnLabel, InputStream inputStream, long length) throws SQLException {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    @Override
+    public void updateBlob(int columnIndex, InputStream inputStream) throws SQLException {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    @Override
+    public void updateBlob(String columnLabel, InputStream inputStream) throws SQLException {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    @Override
+    public void updateCharacterStream(int columnIndex, Reader x, long length) throws SQLException {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    @Override
+    public void updateCharacterStream(String columnLabel, Reader reader, long length) throws SQLException {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    @Override
+    public void updateCharacterStream(int columnIndex, Reader x) throws SQLException {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    @Override
+    public void updateCharacterStream(String columnLabel, Reader reader) throws SQLException {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    @Override
+    public void updateClob(int columnIndex, Reader reader, long length) throws SQLException {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    @Override
+    public void updateClob(String columnLabel, Reader reader, long length) throws SQLException {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    @Override
+    public void updateClob(int columnIndex, Reader reader) throws SQLException {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    @Override
+    public void updateClob(String columnLabel, Reader reader) throws SQLException {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    @Override
+    public void updateNCharacterStream(int columnIndex, Reader x, long length) throws SQLException {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    @Override
+    public void updateNCharacterStream(String columnLabel, Reader reader, long length) throws SQLException {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    @Override
+    public void updateNCharacterStream(int columnIndex, Reader x) throws SQLException {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    @Override
+    public void updateNCharacterStream(String columnLabel, Reader reader) throws SQLException {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    @Override
+    public void updateNClob(int columnIndex, NClob nClob) throws SQLException {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    @Override
+    public void updateNClob(String columnLabel, NClob nClob) throws SQLException {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    @Override
+    public void updateNClob(int columnIndex, Reader reader, long length) throws SQLException {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    @Override
+    public void updateNClob(String columnLabel, Reader reader, long length) throws SQLException {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    @Override
+    public void updateNClob(int columnIndex, Reader reader) throws SQLException {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    @Override
+    public void updateNClob(String columnLabel, Reader reader) throws SQLException {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    @Override
+    public void updateNString(int columnIndex, String nString) throws SQLException {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    @Override
+    public void updateNString(String columnLabel, String nString) throws SQLException {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    @Override
+    public void updateRowId(int columnIndex, RowId x) throws SQLException {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    @Override
+    public void updateRowId(String columnLabel, RowId x) throws SQLException {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    @Override
+    public void updateSQLXML(int columnIndex, SQLXML xmlObject) throws SQLException {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    @Override
+    public void updateSQLXML(String columnLabel, SQLXML xmlObject) throws SQLException {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    @Override
+    public boolean isWrapperFor(Class<?> iface) throws SQLException {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    @Override
+    public <T> T unwrap(Class<T> iface) throws SQLException {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    public <T> T getObject(int columnIndex, Class<T> type) throws SQLException {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    public <T> T getObject(String columnLabel, Class<T> type) throws SQLException {
+        throw new UnsupportedOperationException("Not supported yet."); 
+    }
+}
diff --git a/test/unit/src/test/java/com/sun/faces/mock/MockResultSetMetaData.java b/test/unit/src/test/java/com/sun/faces/mock/MockResultSetMetaData.java
new file mode 100644
index 0000000..6c968e1
--- /dev/null
+++ b/test/unit/src/test/java/com/sun/faces/mock/MockResultSetMetaData.java
@@ -0,0 +1,205 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.mock;
+
+import java.beans.Introspector;
+import java.beans.PropertyDescriptor;
+import java.sql.ResultSetMetaData;
+import java.sql.SQLException;
+
+/**
+ * <p>
+ * Mock object that implements enough of <code>java.sql.ResultSetMetaData</code>
+ * to exercise the <code>ResultSetDataModel</code> functionality.</p>
+ */
+public class MockResultSetMetaData implements ResultSetMetaData {
+
+    // ------------------------------------------------------------ Constructors
+    /**
+     * <p>
+     * Construct a new <code>ResultSetMetaData</code> object wrapping the
+     * properties of the specified Java class.</p>
+     *
+     * @param clazz Class whose properties we treat like columns
+     */
+    public MockResultSetMetaData(Class clazz) throws SQLException {
+        this.clazz = clazz;
+        try {
+            descriptors
+                    = Introspector.getBeanInfo(clazz).getPropertyDescriptors();
+        } catch (Exception e) {
+            throw new SQLException(e.getMessage());
+        }
+    }
+
+    // ------------------------------------------------------ Instance Variables
+    // The Class whose properties we are treating as columns
+    private Class clazz = null;
+
+    // The PropertyDescriptors for the Class we are wrapping
+    private PropertyDescriptor descriptors[] = null;
+
+    // ---------------------------------------------------------- Public Methods
+    public PropertyDescriptor getDescriptor(int columnIndex)
+            throws SQLException {
+        try {
+            return (descriptors[columnIndex - 1]);
+        } catch (IndexOutOfBoundsException e) {
+            throw new SQLException("Invalid columnIndex " + columnIndex);
+        }
+    }
+
+    // ----------------------------------------------------- Implemented Methods
+    @Override
+    public String getColumnClassName(int columnIndex) throws SQLException {
+        return (getDescriptor(columnIndex).getPropertyType().getName());
+    }
+
+    @Override
+    public int getColumnCount() throws SQLException {
+        return (descriptors.length);
+    }
+
+    @Override
+    public String getColumnName(int columnIndex) throws SQLException {
+        return (getDescriptor(columnIndex).getName());
+    }
+
+    @Override
+    public boolean isReadOnly(int columnIndex) throws SQLException {
+        return (getDescriptor(columnIndex).getWriteMethod() == null);
+    }
+
+    // --------------------------------------------------- Unimplemented Methods
+    @Override
+    public String getCatalogName(int columnIndex) throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public int getColumnDisplaySize(int columnIndex) throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public String getColumnLabel(int columnIndex) throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public int getColumnType(int columnIndex) throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public String getColumnTypeName(int columnIndex) throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public int getPrecision(int columnIndex) throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public int getScale(int columnIndex) throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public String getSchemaName(int columnIndex) throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public String getTableName(int columnIndex) throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public boolean isAutoIncrement(int columnIndex) throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public boolean isCaseSensitive(int columnIndex) throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public boolean isCurrency(int columnIndex) throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public boolean isDefinitelyWritable(int columnIndex) throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public int isNullable(int columnIndex) throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public boolean isSearchable(int columnIndex) throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public boolean isSigned(int columnIndex) throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public boolean isWritable(int columnIndex) throws SQLException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public <T> T unwrap(Class<T> iface) throws SQLException {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    @Override
+    public boolean isWrapperFor(Class<?> iface) throws SQLException {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+}
diff --git a/test/unit/src/test/java/com/sun/faces/mock/MockServlet.java b/test/unit/src/test/java/com/sun/faces/mock/MockServlet.java
new file mode 100644
index 0000000..b32d106
--- /dev/null
+++ b/test/unit/src/test/java/com/sun/faces/mock/MockServlet.java
@@ -0,0 +1,88 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.mock;
+
+import java.io.IOException;
+import javax.servlet.Servlet;
+import javax.servlet.ServletConfig;
+import javax.servlet.ServletException;
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletResponse;
+
+/**
+ * <p>
+ * Mock <strong>Servlet</strong> for unit tests.</p>
+ */
+public class MockServlet implements Servlet {
+
+    public MockServlet() {
+    }
+
+    public MockServlet(ServletConfig config) throws ServletException {
+        init(config);
+    }
+
+    private ServletConfig config;
+
+    @Override
+    public void destroy() {
+    }
+
+    @Override
+    public ServletConfig getServletConfig() {
+        return (this.config);
+    }
+
+    @Override
+    public String getServletInfo() {
+        return ("MockServlet");
+    }
+
+    @Override
+    public void init(ServletConfig config) throws ServletException {
+        this.config = config;
+    }
+
+    @Override
+    public void service(ServletRequest request, ServletResponse response)
+            throws IOException, ServletException {
+        throw new UnsupportedOperationException();
+    }
+}
diff --git a/test/unit/src/test/java/com/sun/faces/mock/MockServletConfig.java b/test/unit/src/test/java/com/sun/faces/mock/MockServletConfig.java
new file mode 100644
index 0000000..69a3a41
--- /dev/null
+++ b/test/unit/src/test/java/com/sun/faces/mock/MockServletConfig.java
@@ -0,0 +1,89 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.mock;
+
+import java.util.Enumeration;
+import java.util.Hashtable;
+import javax.servlet.ServletConfig;
+import javax.servlet.ServletContext;
+
+// Mock Object for ServletConfig (version 2.3)
+public class MockServletConfig implements ServletConfig {
+
+    public MockServletConfig() {
+    }
+
+    public MockServletConfig(ServletContext context) {
+        setServletContext(context);
+    }
+
+    private Hashtable parameters = new Hashtable();
+    private ServletContext context;
+
+    // --------------------------------------------------------- Public Methods
+    public void addInitParameter(String name, String value) {
+        parameters.put(name, value);
+    }
+
+    public void setServletContext(ServletContext context) {
+        this.context = context;
+    }
+
+    // -------------------------------------------------- ServletConfig Methods
+    @Override
+    public String getInitParameter(String name) {
+        return ((String) parameters.get(name));
+    }
+
+    @Override
+    public Enumeration getInitParameterNames() {
+        return (parameters.keys());
+    }
+
+    @Override
+    public ServletContext getServletContext() {
+        return (this.context);
+    }
+
+    @Override
+    public String getServletName() {
+        return ("MockServlet");
+    }
+}
diff --git a/test/unit/src/test/java/com/sun/faces/mock/MockServletContext.java b/test/unit/src/test/java/com/sun/faces/mock/MockServletContext.java
new file mode 100644
index 0000000..c604693
--- /dev/null
+++ b/test/unit/src/test/java/com/sun/faces/mock/MockServletContext.java
@@ -0,0 +1,303 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.mock;
+
+import java.io.InputStream;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.Enumeration;
+import java.util.EventListener;
+import java.util.Hashtable;
+import java.util.Set;
+import java.util.HashSet;
+import java.util.Map;
+import javax.servlet.Filter;
+import javax.servlet.FilterRegistration;
+import javax.servlet.RequestDispatcher;
+import javax.servlet.Servlet;
+import javax.servlet.ServletContext;
+import javax.servlet.ServletException;
+import javax.servlet.ServletRegistration;
+import javax.servlet.SessionCookieConfig;
+import javax.servlet.SessionTrackingMode;
+import javax.servlet.descriptor.JspConfigDescriptor;
+
+// Mock Object for ServletContext (Version 2.5)
+public class MockServletContext implements ServletContext {
+
+    private Hashtable attributes = new Hashtable();
+    private Hashtable parameters = new Hashtable();
+
+    // --------------------------------------------------------- Public Methods
+    public void addInitParameter(String name, String value) {
+        parameters.put(name, value);
+    }
+
+    // ------------------------------------------------- ServletContext Methods
+    public Object getAttribute(String name) {
+        return (attributes.get(name));
+    }
+
+    public Enumeration getAttributeNames() {
+        return (attributes.keys());
+    }
+
+    public ServletContext getContext(String uripath) {
+        throw new UnsupportedOperationException();
+    }
+
+    public String getContextPath() {
+        throw new UnsupportedOperationException();
+    }
+
+    public String getInitParameter(String name) {
+        return ((String) parameters.get(name));
+    }
+
+    public Enumeration getInitParameterNames() {
+        return (parameters.keys());
+    }
+
+    public int getMajorVersion() {
+        return (2);
+    }
+
+    public String getMimeType(String path) {
+        throw new UnsupportedOperationException();
+    }
+
+    public int getMinorVersion() {
+        return (5);
+    }
+
+    public RequestDispatcher getNamedDispatcher(String name) {
+        throw new UnsupportedOperationException();
+    }
+
+    public String getRealPath(String path) {
+        throw new UnsupportedOperationException();
+    }
+
+    public RequestDispatcher getRequestDispatcher(String path) {
+        throw new UnsupportedOperationException();
+    }
+
+    public URL getResource(String path) throws MalformedURLException {
+        throw new UnsupportedOperationException();
+    }
+
+    public InputStream getResourceAsStream(String path) {
+        throw new UnsupportedOperationException();
+    }
+
+    public Set getResourcePaths(String path) {
+        return new HashSet(0);
+    }
+
+    public Servlet getServlet(String name) throws ServletException {
+        throw new UnsupportedOperationException();
+    }
+
+    public String getServletContextName() {
+        return ("MockServletContext");
+    }
+
+    public String getServerInfo() {
+        return ("MockServletContext");
+    }
+
+    public Enumeration getServlets() {
+        throw new UnsupportedOperationException();
+    }
+
+    public Enumeration getServletNames() {
+        throw new UnsupportedOperationException();
+    }
+
+    public void log(String message) {
+        throw new UnsupportedOperationException();
+    }
+
+    public void log(Exception exception, String message) {
+        throw new UnsupportedOperationException();
+    }
+
+    public void log(String message, Throwable exception) {
+        throw new UnsupportedOperationException();
+    }
+
+    public void removeAttribute(String name) {
+        attributes.remove(name);
+    }
+
+    public void setAttribute(String name, Object value) {
+        attributes.put(name, value);
+    }
+
+    @Override
+    public int getEffectiveMajorVersion() {
+        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+    }
+
+    @Override
+    public int getEffectiveMinorVersion() {
+        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+    }
+
+    @Override
+    public boolean setInitParameter(String string, String string1) {
+        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+    }
+
+    @Override
+    public ServletRegistration.Dynamic addServlet(String string, String string1) {
+        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+    }
+
+    @Override
+    public ServletRegistration.Dynamic addServlet(String string, Servlet srvlt) {
+        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+    }
+
+    @Override
+    public ServletRegistration.Dynamic addServlet(String string, Class<? extends Servlet> type) {
+        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+    }
+
+    @Override
+    public <T extends Servlet> T createServlet(Class<T> type) throws ServletException {
+        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+    }
+
+    @Override
+    public ServletRegistration getServletRegistration(String string) {
+        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+    }
+
+    @Override
+    public Map<String, ? extends ServletRegistration> getServletRegistrations() {
+        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+    }
+
+    @Override
+    public FilterRegistration.Dynamic addFilter(String string, String string1) {
+        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+    }
+
+    @Override
+    public FilterRegistration.Dynamic addFilter(String string, Filter filter) {
+        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+    }
+
+    @Override
+    public FilterRegistration.Dynamic addFilter(String string, Class<? extends Filter> type) {
+        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+    }
+
+    @Override
+    public <T extends Filter> T createFilter(Class<T> type) throws ServletException {
+        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+    }
+
+    @Override
+    public FilterRegistration getFilterRegistration(String string) {
+        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+    }
+
+    @Override
+    public Map<String, ? extends FilterRegistration> getFilterRegistrations() {
+        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+    }
+
+    @Override
+    public SessionCookieConfig getSessionCookieConfig() {
+        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+    }
+
+    @Override
+    public void setSessionTrackingModes(Set<SessionTrackingMode> set) {
+        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+    }
+
+    @Override
+    public Set<SessionTrackingMode> getDefaultSessionTrackingModes() {
+        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+    }
+
+    @Override
+    public Set<SessionTrackingMode> getEffectiveSessionTrackingModes() {
+        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+    }
+
+    @Override
+    public void addListener(String string) {
+        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+    }
+
+    @Override
+    public <T extends EventListener> void addListener(T t) {
+        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+    }
+
+    @Override
+    public void addListener(Class<? extends EventListener> type) {
+        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+    }
+
+    @Override
+    public <T extends EventListener> T createListener(Class<T> type) throws ServletException {
+        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+    }
+
+    @Override
+    public JspConfigDescriptor getJspConfigDescriptor() {
+        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+    }
+
+    @Override
+    public ClassLoader getClassLoader() {
+        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+    }
+
+    @Override
+    public void declareRoles(String... strings) {
+        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+    }
+}
diff --git a/test/unit/src/test/java/com/sun/faces/mock/MockSessionMap.java b/test/unit/src/test/java/com/sun/faces/mock/MockSessionMap.java
new file mode 100644
index 0000000..1294630
--- /dev/null
+++ b/test/unit/src/test/java/com/sun/faces/mock/MockSessionMap.java
@@ -0,0 +1,173 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.mock;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Enumeration;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import javax.servlet.http.HttpSession;
+
+final class MockSessionMap implements Map {
+
+    public MockSessionMap(HttpSession session) {
+        this.session = session;
+    }
+
+    private HttpSession session = null;
+
+    public void clear() {
+        Iterator keys = keySet().iterator();
+        while (keys.hasNext()) {
+            session.removeAttribute((String) keys.next());
+        }
+    }
+
+    public boolean containsKey(Object key) {
+        return (session.getAttribute(key(key)) != null);
+    }
+
+    public boolean containsValue(Object value) {
+        if (value == null) {
+            return (false);
+        }
+        Enumeration keys = session.getAttributeNames();
+        while (keys.hasMoreElements()) {
+            Object next = session.getAttribute((String) keys.nextElement());
+            if (next == value) {
+                return (true);
+            }
+        }
+        return (false);
+    }
+
+    public Set entrySet() {
+        Set set = new HashSet();
+        Enumeration keys = session.getAttributeNames();
+        while (keys.hasMoreElements()) {
+            set.add(session.getAttribute((String) keys.nextElement()));
+        }
+        return (set);
+    }
+
+    public boolean equals(Object o) {
+        return (session.equals(o));
+    }
+
+    public Object get(Object key) {
+        return (session.getAttribute(key(key)));
+    }
+
+    public int hashCode() {
+        return (session.hashCode());
+    }
+
+    public boolean isEmpty() {
+        return (size() < 1);
+    }
+
+    public Set keySet() {
+        Set set = new HashSet();
+        Enumeration keys = session.getAttributeNames();
+        while (keys.hasMoreElements()) {
+            set.add(keys.nextElement());
+        }
+        return (set);
+    }
+
+    public Object put(Object key, Object value) {
+        if (value == null) {
+            return (remove(key));
+        }
+        String skey = key(key);
+        Object previous = session.getAttribute(skey);
+        session.setAttribute(skey, value);
+        return (previous);
+    }
+
+    public void putAll(Map map) {
+        Iterator keys = map.keySet().iterator();
+        while (keys.hasNext()) {
+            String key = (String) keys.next();
+            session.setAttribute(key, map.get(key));
+        }
+    }
+
+    public Object remove(Object key) {
+        String skey = key(key);
+        Object previous = session.getAttribute(skey);
+        session.removeAttribute(skey);
+        return (previous);
+    }
+
+    public int size() {
+        int n = 0;
+        Enumeration keys = session.getAttributeNames();
+        while (keys.hasMoreElements()) {
+            keys.nextElement();
+            n++;
+        }
+        return (n);
+    }
+
+    public Collection values() {
+        List list = new ArrayList();
+        Enumeration keys = session.getAttributeNames();
+        while (keys.hasMoreElements()) {
+            list.add(session.getAttribute((String) keys.nextElement()));
+        }
+        return (list);
+    }
+
+    private String key(Object key) {
+        if (key == null) {
+            throw new IllegalArgumentException();
+        } else if (key instanceof String) {
+            return ((String) key);
+        } else {
+            return (key.toString());
+        }
+    }
+
+}
diff --git a/test/unit/src/test/java/com/sun/faces/mock/MockStateManager.java b/test/unit/src/test/java/com/sun/faces/mock/MockStateManager.java
new file mode 100644
index 0000000..34b538e
--- /dev/null
+++ b/test/unit/src/test/java/com/sun/faces/mock/MockStateManager.java
@@ -0,0 +1,98 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.mock;
+
+import java.io.IOException;
+import javax.faces.context.FacesContext;
+import javax.faces.component.UIViewRoot;
+import javax.faces.application.StateManager;
+
+public class MockStateManager extends StateManager {
+
+    protected Object getTreeStructureToSave(FacesContext context) {
+        return null;
+    }
+
+    protected Object getComponentStateToSave(FacesContext context) {
+        return null;
+    }
+
+    public UIViewRoot restoreView(FacesContext context, String viewId,
+            String renderKitId) {
+        return null;
+    }
+
+    public SerializedView saveSerializedView(FacesContext context) {
+        return null;
+    }
+
+    public void writeState(FacesContext context,
+            SerializedView state) throws IOException {
+    }
+
+    protected UIViewRoot restoreTreeStructure(FacesContext context,
+            String viewId, String renderKitId) {
+        return null;
+    }
+
+    protected void restoreComponentState(FacesContext context, UIViewRoot root, String renderKitId) {
+    }
+
+    @Override
+    public String getViewState(FacesContext arg0) {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public boolean isSavingStateInClient(FacesContext arg0) {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public Object saveView(FacesContext arg0) {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void writeState(FacesContext arg0, Object arg1) throws IOException {
+        throw new UnsupportedOperationException();
+    }
+
+}
diff --git a/test/unit/src/test/java/com/sun/faces/mock/MockValueBinding.java b/test/unit/src/test/java/com/sun/faces/mock/MockValueBinding.java
new file mode 100644
index 0000000..51b3d92
--- /dev/null
+++ b/test/unit/src/test/java/com/sun/faces/mock/MockValueBinding.java
@@ -0,0 +1,274 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.mock;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import javax.faces.application.Application;
+import javax.faces.component.StateHolder;
+import javax.faces.context.ExternalContext;
+import javax.faces.context.FacesContext;
+import javax.faces.el.EvaluationException;
+import javax.faces.el.PropertyNotFoundException;
+import javax.faces.el.PropertyResolver;
+import javax.faces.el.ReferenceSyntaxException;
+import javax.faces.el.ValueBinding;
+import javax.faces.el.VariableResolver;
+
+/**
+ * <p>
+ * Mock implementation of {@link ValueBinding} that supports a limited subset of
+ * expression evaluation functionality:</p>
+ * <ul>
+ * <li>Looking up the first name via the configured {@link VariableResolver}
+ * (which is also limited in capability).</li>
+ * <li>Resolving the "." operator via the configured
+ * {@link PropertyResolver}.</li>
+ * <li>Supports only <code>getValue()</code> and <code>setValue()</code>.</li>
+ * </ul>
+ */
+public class MockValueBinding extends ValueBinding implements StateHolder {
+
+    // ------------------------------------------------------------ Constructors
+    public MockValueBinding() {
+
+        this(null, null);
+
+    }
+
+    public MockValueBinding(Application application, String ref) {
+
+        this.application = application;
+        if (ref != null) {
+            if (ref.startsWith("#{") && ref.endsWith("}")) {
+                ref = ref.substring(2, ref.length() - 1);
+            }
+        }
+        this.ref = ref;
+
+    }
+
+    // ------------------------------------------------------ Instance Variables
+    private transient Application application; // Restored as necessary
+    private String ref;
+
+    // ---------------------------------------------------- ValueBinding Methods
+    public Object getValue(FacesContext context)
+            throws EvaluationException, PropertyNotFoundException {
+
+        if (context == null) {
+            throw new NullPointerException();
+        }
+        // System.out.println("getValue(" + ref + ")");
+        List names = parse(ref);
+        // for (int i = 0; i < names.size(); i++) {
+        //     System.out.println("  names[" + i + "]=" + names.get(i));
+        // }
+
+        // Resolve the variable name
+        VariableResolver vr = application().getVariableResolver();
+        String name = (String) names.get(0);
+        Object base = vr.resolveVariable(context, name);
+        // System.out.println("  base=" + base);
+        if (names.size() < 2) {
+            return (base);
+        }
+
+        // Resolve the property names
+        PropertyResolver pr = application().getPropertyResolver();
+        for (int i = 1; i < names.size(); i++) {
+            if (null != base) {
+
+                // System.out.println("  property=" + names.get(i));
+                base = pr.getValue(base, (String) names.get(i));
+            }
+        }
+
+        // Return the resolved value
+        // System.out.println("  result=" + base);
+        return (base);
+
+    }
+
+    public void setValue(FacesContext context, Object value)
+            throws EvaluationException, PropertyNotFoundException {
+
+        if (context == null) {
+            throw new NullPointerException();
+        }
+        // System.out.println("setValue(" + ref + "," + value + ")");
+        List names = parse(ref);
+        // for (int i = 0; i < names.size(); i++) {
+        //     System.out.println("  names[" + i + "]=" + names.get(i));
+        // }
+
+        // Resolve the variable name
+        VariableResolver vr = application().getVariableResolver();
+        String name = (String) names.get(0);
+        Object base = vr.resolveVariable(context, name);
+        // System.out.println("  base=" + base);
+        if (names.size() < 2) {
+            if ("applicationScope".equals(name)
+                    || "requestScope".equals(name)
+                    || "sessionScope".equals(name)) {
+                throw new ReferenceSyntaxException("Cannot set '"
+                        + name + "'");
+            }
+            Map map = econtext().getRequestMap();
+            if (map.containsKey(name)) {
+                map.put(name, value);
+                return;
+            }
+            map = econtext().getSessionMap();
+            if ((map != null) && (map.containsKey(name))) {
+                map.put(name, value);
+                return;
+            }
+            map = econtext().getApplicationMap();
+            if (map.containsKey(name)) {
+                map.put(name, value);
+                return;
+            }
+            econtext().getRequestMap().put(name, value);
+            return;
+        }
+
+        // Resolve the property names
+        PropertyResolver pr = application().getPropertyResolver();
+        for (int i = 1; i < (names.size() - 1); i++) {
+            // System.out.println("  property=" + names.get(i));
+            base = pr.getValue(base, (String) names.get(i));
+        }
+
+        // Update the last property
+        pr.setValue(base, (String) names.get(names.size() - 1), value);
+
+    }
+
+    public boolean isReadOnly(FacesContext context)
+            throws PropertyNotFoundException {
+
+        throw new UnsupportedOperationException();
+
+    }
+
+    public Class getType(FacesContext context)
+            throws PropertyNotFoundException {
+
+        throw new UnsupportedOperationException();
+
+    }
+
+    public String getExpressionString() {
+        return "#{" + ref + "}";
+    }
+
+    // ----------------------------------------------------- StateHolder Methods
+    public Object saveState(FacesContext context) {
+        Object values[] = new Object[1];
+        values[0] = ref;
+        return (values);
+    }
+
+    public void restoreState(FacesContext context, Object state) {
+        Object values[] = (Object[]) state;
+        ref = (String) values[0];
+    }
+
+    private boolean transientFlag = false;
+
+    public boolean isTransient() {
+        return (this.transientFlag);
+    }
+
+    public void setTransient(boolean transientFlag) {
+        this.transientFlag = transientFlag;
+    }
+
+    // ---------------------------------------------------------- Public Methods
+    public String ref() {
+        return (this.ref);
+    }
+
+    // --------------------------------------------------------- Private Methods
+    private Application application() {
+
+        if (application == null) {
+            application = FacesContext.getCurrentInstance().getApplication();
+        }
+        return (application);
+
+    }
+
+    private ExternalContext econtext() {
+
+        return (FacesContext.getCurrentInstance().getExternalContext());
+
+    }
+
+    private List parse(String ref) {
+
+        String expr = ref;
+        List names = new ArrayList();
+        while (expr.length() > 0) {
+            int period = expr.indexOf(".");
+            if (period >= 0) {
+                names.add(expr.substring(0, period));
+                expr = expr.substring(period + 1);
+            } else {
+                names.add(expr);
+                expr = "";
+            }
+        }
+        if (names.size() < 1) {
+            throw new ReferenceSyntaxException("No expression in '"
+                    + ref + "'");
+        }
+        for (int i = 0; i < names.size(); i++) {
+            String name = (String) names.get(i);
+            if (name.length() < 1) {
+                throw new ReferenceSyntaxException("Invalid expression '"
+                        + ref + "'");
+            }
+        }
+        return (names);
+    }
+}
diff --git a/test/unit/src/test/java/com/sun/faces/mock/MockVariableResolver.java b/test/unit/src/test/java/com/sun/faces/mock/MockVariableResolver.java
new file mode 100644
index 0000000..9152c73
--- /dev/null
+++ b/test/unit/src/test/java/com/sun/faces/mock/MockVariableResolver.java
@@ -0,0 +1,101 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.mock;
+
+import java.util.Map;
+import javax.faces.context.ExternalContext;
+import javax.faces.context.FacesContext;
+import javax.faces.el.VariableResolver;
+
+/**
+ * <p>
+ * Mock implementation of {@link VariableResolver} that supports a limited
+ * subset of expression evaluation functionality:</p>
+ * <ul>
+ * <li>Recognizes <code>applicationScope</code>, <code>requestScope</code>, and
+ * <code>sessionScope</code> implicit names.</li>
+ * <li>Searches in ascending scopes for non-reserved names.</li>
+ * </ul>
+ */
+public class MockVariableResolver extends VariableResolver {
+
+    // ------------------------------------------------------------ Constructors
+    // ------------------------------------------------ VariableResolver Methods
+    public Object resolveVariable(FacesContext context, String name) {
+
+        if ((context == null) || (name == null)) {
+            throw new NullPointerException();
+        }
+
+        // Handle predefined variables
+        if ("applicationScope".equals(name)) {
+            return (econtext().getApplicationMap());
+        } else if ("requestScope".equals(name)) {
+            return (econtext().getRequestMap());
+        } else if ("sessionScope".equals(name)) {
+            return (econtext().getSessionMap());
+        }
+
+        // Look up in ascending scopes
+        Map map = null;
+        map = econtext().getRequestMap();
+        if (map.containsKey(name)) {
+            return (map.get(name));
+        }
+        map = econtext().getSessionMap();
+        if ((map != null) && (map.containsKey(name))) {
+            return (map.get(name));
+        }
+        map = econtext().getApplicationMap();
+        if (map.containsKey(name)) {
+            return (map.get(name));
+        }
+
+        // Requested object is not found
+        return (null);
+
+    }
+
+    // --------------------------------------------------------- Private Methods
+    private ExternalContext econtext() {
+
+        return (FacesContext.getCurrentInstance().getExternalContext());
+    }
+}
diff --git a/test/unit/src/test/java/com/sun/faces/mock/MockViewHandler.java b/test/unit/src/test/java/com/sun/faces/mock/MockViewHandler.java
new file mode 100644
index 0000000..0a4f516
--- /dev/null
+++ b/test/unit/src/test/java/com/sun/faces/mock/MockViewHandler.java
@@ -0,0 +1,128 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.mock;
+
+import java.util.Locale;
+import java.io.IOException;
+import javax.faces.FacesException;
+import javax.faces.context.FacesContext;
+import javax.faces.component.UIViewRoot;
+import javax.faces.application.ViewHandler;
+import javax.faces.application.StateManager;
+import javax.faces.render.RenderKitFactory;
+
+public class MockViewHandler extends ViewHandler {
+
+    protected StateManager stateManager = null;
+
+    public void renderView(FacesContext context, UIViewRoot viewToRender)
+            throws IOException, FacesException {
+    }
+
+    public UIViewRoot restoreView(FacesContext context, String viewId) {
+        return null;
+    }
+
+    public UIViewRoot createView(FacesContext context, String viewId) {
+        UIViewRoot result = new UIViewRoot();
+        result.setViewId(viewId);
+        result.setRenderKitId(calculateRenderKitId(context));
+        return result;
+    }
+
+    public void writeState(FacesContext context) {
+    }
+
+    public StateManager getStateManager() {
+        if (null == stateManager) {
+            stateManager = new StateManager() {
+                protected Object getTreeStructureToSave(FacesContext context) {
+                    return null;
+                }
+
+                protected Object getComponentStateToSave(FacesContext context) {
+                    return null;
+                }
+
+                public UIViewRoot restoreView(FacesContext context, String viewId, String renderKitId) {
+                    return null;
+                }
+
+                public SerializedView saveSerializedView(FacesContext context) {
+                    return null;
+                }
+
+                public void writeState(FacesContext context,
+                        SerializedView state) throws IOException {
+                }
+
+                protected UIViewRoot restoreTreeStructure(FacesContext context,
+                        String viewId, String renderKitId) {
+                    return null;
+                }
+
+                protected void restoreComponentState(FacesContext context, UIViewRoot root, String renderKitId) {
+                }
+            };
+        }
+        return stateManager;
+    }
+
+    public String getActionURL(FacesContext context, String viewId) {
+        throw new UnsupportedOperationException();
+    }
+
+    public String getResourceURL(FacesContext context, String path) {
+        if (path.startsWith("/")) {
+            return context.getExternalContext().getRequestContextPath() + path;
+        } else {
+            return (path);
+        }
+    }
+
+    public Locale calculateLocale(FacesContext context) {
+        return Locale.getDefault();
+    }
+
+    public String calculateRenderKitId(FacesContext context) {
+        return RenderKitFactory.HTML_BASIC_RENDER_KIT;
+    }
+
+}
diff --git a/test/unit/src/test/java/com/sun/faces/mock/model/BeanTestImpl.java b/test/unit/src/test/java/com/sun/faces/mock/model/BeanTestImpl.java
new file mode 100644
index 0000000..c3211de
--- /dev/null
+++ b/test/unit/src/test/java/com/sun/faces/mock/model/BeanTestImpl.java
@@ -0,0 +1,200 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.mock.model;
+
+/**
+ * <p>
+ * JavaBean for data model tests.</p>
+ */
+public class BeanTestImpl {
+
+    // -------------------------------------------------------------- Properties
+    /**
+     * A boolean property.
+     */
+    private boolean booleanProperty = true;
+
+    public boolean getBooleanProperty() {
+        return (booleanProperty);
+    }
+
+    public void setBooleanProperty(boolean booleanProperty) {
+        this.booleanProperty = booleanProperty;
+    }
+
+    /**
+     * A boolean property that uses an "is" method for the getter.
+     */
+    private boolean booleanSecond = true;
+
+    public boolean isBooleanSecond() {
+        return (booleanSecond);
+    }
+
+    public void setBooleanSecond(boolean booleanSecond) {
+        this.booleanSecond = booleanSecond;
+    }
+
+    /**
+     * A byte property.
+     */
+    private byte byteProperty = (byte) 121;
+
+    public byte getByteProperty() {
+        return (this.byteProperty);
+    }
+
+    public void setByteProperty(byte byteProperty) {
+        this.byteProperty = byteProperty;
+    }
+
+    /**
+     * A double property.
+     */
+    private double doubleProperty = 321.0;
+
+    public double getDoubleProperty() {
+        return (this.doubleProperty);
+    }
+
+    public void setDoubleProperty(double doubleProperty) {
+        this.doubleProperty = doubleProperty;
+    }
+
+    /**
+     * A float property.
+     */
+    private float floatProperty = (float) 123.0;
+
+    public float getFloatProperty() {
+        return (this.floatProperty);
+    }
+
+    public void setFloatProperty(float floatProperty) {
+        this.floatProperty = floatProperty;
+    }
+
+    /**
+     * An integer property.
+     */
+    private int intProperty = 123;
+
+    public int getIntProperty() {
+        return (this.intProperty);
+    }
+
+    public void setIntProperty(int intProperty) {
+        this.intProperty = intProperty;
+    }
+
+    /**
+     * A long property.
+     */
+    private long longProperty = 321;
+
+    public long getLongProperty() {
+        return (this.longProperty);
+    }
+
+    public void setLongProperty(long longProperty) {
+        this.longProperty = longProperty;
+    }
+
+    /**
+     * A String property with an initial value of null.
+     */
+    private String nullProperty = null;
+
+    public String getNullProperty() {
+        return (this.nullProperty);
+    }
+
+    public void setNullProperty(String nullProperty) {
+        this.nullProperty = nullProperty;
+    }
+
+    /**
+     * A read-only String property.
+     */
+    private String readOnlyProperty = "Read Only String Property";
+
+    public String getReadOnlyProperty() {
+        return (this.readOnlyProperty);
+    }
+
+    /**
+     * A short property.
+     */
+    private short shortProperty = (short) 987;
+
+    public short getShortProperty() {
+        return (this.shortProperty);
+    }
+
+    public void setShortProperty(short shortProperty) {
+        this.shortProperty = shortProperty;
+    }
+
+    /**
+     * A String property.
+     */
+    private String stringProperty = "This is a string";
+
+    public String getStringProperty() {
+        return (this.stringProperty);
+    }
+
+    public void setStringProperty(String stringProperty) {
+        this.stringProperty = stringProperty;
+    }
+
+    /**
+     * A write-only String property.
+     */
+    private String writeOnlyProperty = "Write Only String Property";
+
+    public String getWriteOnlyPropertyValue() {
+        return (this.writeOnlyProperty);
+    }
+
+    public void setWriteOnlyProperty(String writeOnlyProperty) {
+        this.writeOnlyProperty = writeOnlyProperty;
+    }
+}
diff --git a/test/unit/src/test/java/com/sun/faces/renderkit/html_basic/HtmlResponseWriterTest.java b/test/unit/src/test/java/com/sun/faces/renderkit/html_basic/HtmlResponseWriterTest.java
new file mode 100644
index 0000000..89c8a95
--- /dev/null
+++ b/test/unit/src/test/java/com/sun/faces/renderkit/html_basic/HtmlResponseWriterTest.java
@@ -0,0 +1,167 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.renderkit.html_basic;
+
+import java.io.StringWriter;
+import java.io.Writer;
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+import javax.faces.component.UIComponent;
+import javax.faces.component.UIOutput;
+import javax.faces.context.FacesContext;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class HtmlResponseWriterTest {
+    
+    /**
+     * Test cloneWithWriter method.
+     * @throws java.lang.Exception
+     */
+    @Test
+    public void testCloneWithWriter() throws Exception {
+        
+        Method method = FacesContext.class.getDeclaredMethod("setCurrentInstance", FacesContext.class);
+        method.setAccessible(true);
+        method.invoke(null, new Object[] { null });
+        
+        Writer writer = new StringWriter();
+        HtmlResponseWriter responseWriter = new HtmlResponseWriter(writer, "text/html", "UTF-8");
+        Field field = responseWriter.getClass().getDeclaredField("dontEscape");
+        field.setAccessible(true);
+        field.set(responseWriter, Boolean.TRUE);
+
+        HtmlResponseWriter clonedWriter = (HtmlResponseWriter) responseWriter.cloneWithWriter(writer);
+        assertTrue((Boolean) field.get(clonedWriter));
+
+        responseWriter = new HtmlResponseWriter(writer, "text/html", "UTF-8");
+        field.set(responseWriter, Boolean.FALSE);
+
+        clonedWriter = (HtmlResponseWriter) responseWriter.cloneWithWriter(writer);
+        assertFalse((Boolean) field.get(clonedWriter));
+    }
+
+    /**
+     * Test cloneWithWriter method.
+     * @throws java.lang.Exception
+     */
+    @Test
+    public void testCloneWithWriter2() throws Exception {
+
+        Method method = FacesContext.class.getDeclaredMethod("setCurrentInstance", FacesContext.class);
+        method.setAccessible(true);
+        method.invoke(null, new Object[] { null });        
+        
+        Writer writer = new StringWriter();
+        HtmlResponseWriter responseWriter = new HtmlResponseWriter(writer, "text/html", "UTF-8");
+        Field field = responseWriter.getClass().getDeclaredField("writingCdata");
+        field.setAccessible(true);
+        field.set(responseWriter, Boolean.TRUE);
+
+        HtmlResponseWriter clonedWriter = (HtmlResponseWriter) responseWriter.cloneWithWriter(writer);
+        assertTrue((Boolean) field.get(clonedWriter));
+
+        responseWriter = new HtmlResponseWriter(writer, "text/html", "UTF-8");
+        field.set(responseWriter, Boolean.FALSE);
+
+        clonedWriter = (HtmlResponseWriter) responseWriter.cloneWithWriter(writer);
+        assertFalse((Boolean) field.get(clonedWriter));
+    }
+
+    /**
+     * Test CDATA.
+     * @throws java.lang.Exception
+     */
+    @Test
+    public void testCDATAWithXHTML() throws Exception {
+        
+        Method method = FacesContext.class.getDeclaredMethod("setCurrentInstance", FacesContext.class);
+        method.setAccessible(true);
+        method.invoke(null, new Object[] { null });
+
+        UIComponent componentForElement = new UIOutput();
+        String expected = "<script>\n//<![CDATA[\n\n function queueEvent() {\n  return false;\n}\n\n\n//]]>\n</script>";
+
+        // Case 1 start is // end is //
+        StringWriter stringWriter = new StringWriter();
+        HtmlResponseWriter responseWriter = new HtmlResponseWriter(stringWriter, "application/xhtml+xml", "UTF-8");
+        responseWriter.startElement("script", componentForElement);
+        responseWriter.write("    // <![CDATA[\n function queueEvent() {\n  return false;\n}\n\n//   ]]>  \n");
+        responseWriter.endElement("script");
+        responseWriter.flush();
+        assertEquals(expected, stringWriter.toString());
+
+        // Case 2 start is // end is /* */
+        stringWriter = new StringWriter();
+        responseWriter = new HtmlResponseWriter(stringWriter, "application/xhtml+xml", "UTF-8");
+        responseWriter.startElement("script", componentForElement);
+        responseWriter.write("    // <![CDATA[\n function queueEvent() {\n  return false;\n}\n\n/*\n  ]]> \n*/ \n");
+        responseWriter.endElement("script");
+        responseWriter.flush();
+        assertEquals(expected, stringWriter.toString());
+
+        // Case 3 start is /* */  end is /* */
+        stringWriter = new StringWriter();
+        responseWriter = new HtmlResponseWriter(stringWriter, "application/xhtml+xml", "UTF-8");
+        responseWriter.startElement("script", componentForElement);
+        responseWriter.write("    /* \n <![CDATA[ \n*/\n function queueEvent() {\n  return false;\n}\n\n/*\n  ]]> \n*/ \n");
+        responseWriter.endElement("script");
+        responseWriter.flush();
+        assertEquals(expected, stringWriter.toString());
+
+        // Case 4 start is /* */  end is //
+        stringWriter = new StringWriter();
+        responseWriter = new HtmlResponseWriter(stringWriter, "application/xhtml+xml", "UTF-8");
+        responseWriter.startElement("script", componentForElement);
+        responseWriter.write("    /* \n <![CDATA[ \n*/\n function queueEvent() {\n  return false;\n}\n\n//\n  ]]>\n");
+        responseWriter.endElement("script");
+        responseWriter.flush();
+        assertEquals(expected, stringWriter.toString());
+
+        // Case 5 start is /* */  end is //
+        stringWriter = new StringWriter();
+        responseWriter = new HtmlResponseWriter(stringWriter, "application/xhtml+xml", "UTF-8");
+        responseWriter.startElement("script", componentForElement);
+        responseWriter.write("    /* \n <![CDATA[ \n*/\n function queueEvent() {\n  return false;\n}\n\n//\n  ]]>\n");
+        responseWriter.endElement("script");
+        responseWriter.flush();
+        assertEquals(expected, stringWriter.toString());
+    }
+}
diff --git a/test/unit/src/test/java/com/sun/faces/util/ByteArrayGuardAESCTRTest.java b/test/unit/src/test/java/com/sun/faces/util/ByteArrayGuardAESCTRTest.java
new file mode 100644
index 0000000..28ac568
--- /dev/null
+++ b/test/unit/src/test/java/com/sun/faces/util/ByteArrayGuardAESCTRTest.java
@@ -0,0 +1,66 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+ * Copyright (c) 2013 Oracle and/or its affiliates. All rights reserved.
+
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.util;
+
+import org.junit.Test;
+
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.assertEquals;
+
+
+public class ByteArrayGuardAESCTRTest {
+    
+    @Test
+    public void testSmallerSizeBytes() throws Exception {
+        ByteArrayGuardAESCTR guard = new ByteArrayGuardAESCTR();
+
+	// simulated flash value
+        String value = "1fX_2vX";
+        String encrypted = guard.encrypt(value);
+        assertTrue(encrypted.length() < 15);
+        
+        String decryptedValue = guard.decrypt(encrypted);
+        assertEquals(decryptedValue, value);
+
+        
+    }
+    
+}
+
diff --git a/test/unit/src/test/java/com/sun/faces/util/MostlySingletonTest.java b/test/unit/src/test/java/com/sun/faces/util/MostlySingletonTest.java
new file mode 100644
index 0000000..053cd89
--- /dev/null
+++ b/test/unit/src/test/java/com/sun/faces/util/MostlySingletonTest.java
@@ -0,0 +1,647 @@
+package com.sun.faces.util;
+
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+
+import java.util.HashSet;
+import java.util.Set;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class MostlySingletonTest {
+    
+    public MostlySingletonTest() {
+    }
+    
+    @Test
+    public void testAdd() {
+        MostlySingletonSet<Integer> set = new MostlySingletonSet<Integer>();
+        
+        set.add(1);
+        assertTrue(1 == set.size());
+        
+        set.add(2);
+        assertTrue(2 == set.size());
+        
+        set.add(3);
+        assertTrue(3 == set.size());
+        
+    }
+    
+    @Test
+    public void testAddWithNulls() {
+        
+        MostlySingletonSet<Integer> set = new MostlySingletonSet<Integer>();
+        
+        set.add(1);
+        assertTrue(1 == set.size());
+        
+        set.add(null);
+        assertTrue(2 == set.size());
+        
+        set.add(3);
+        assertTrue(3 == set.size());
+        
+        
+    }
+    
+    @Test
+    public void testAddAll() {
+        Set<Integer> otherSet = new HashSet<Integer>();
+        otherSet.add(4);
+        otherSet.add(5);
+        otherSet.add(6);
+        
+        MostlySingletonSet<Integer> set = new MostlySingletonSet<Integer>();
+        
+        set.add(1);
+        assertTrue(1 == set.size());
+        
+        set.add(2);
+        assertTrue(2 == set.size());
+        
+        set.add(3);
+        assertTrue(3 == set.size());
+        
+        set.addAll(otherSet);
+        assertTrue(6 == set.size());
+        
+        otherSet.add(3);
+        assertTrue(4 == otherSet.size());
+        set.clear();
+        set.add(1);
+        assertTrue(1 == set.size());
+        
+        set.add(2);
+        assertTrue(2 == set.size());
+        
+        set.add(3);
+        assertTrue(3 == set.size());
+        
+        set.addAll(otherSet);
+        assertTrue(6 == set.size());
+        
+        set.clear();
+        assertTrue(0 == set.size());
+        set.add(1);
+        set.addAll(otherSet);
+        assertTrue(5 == set.size());
+        
+        set.clear();
+        otherSet.clear();
+        otherSet.add(1);
+        set.addAll(otherSet);
+        assertTrue(1 == set.size());
+        
+        
+    }
+    
+    
+    @Test
+    public void testRemove() {
+        MostlySingletonSet<Integer> set = new MostlySingletonSet<Integer>();
+        
+        set.add(1);
+        assertTrue(1 == set.size());
+        
+        set.add(2);
+        assertTrue(2 == set.size());
+        
+        set.add(3);
+        assertTrue(3 == set.size());
+        
+        boolean didRemove = set.remove(2);
+        assertTrue(didRemove);
+        assertTrue(2 == set.size());
+        
+        didRemove = set.remove(1);
+        assertTrue(didRemove);
+        assertTrue(1 == set.size());
+        
+        didRemove = set.remove(3);
+        assertTrue(didRemove);
+        assertTrue(0 == set.size());
+        
+        didRemove = set.remove(4);
+        assertTrue(!didRemove);
+        assertTrue(0 == set.size());
+        
+        set.clear();
+        assertTrue(0 == set.size());
+        set.add(1);
+        set.add(2);
+        assertTrue(2 == set.size());
+        
+        set.remove(2);
+        assertTrue(1 == set.size());
+        set.remove(1);
+        assertTrue(0 == set.size());
+        
+    }
+    
+    @Test
+    public void testRemoveWithNulls() {
+        MostlySingletonSet<Integer> set = new MostlySingletonSet<Integer>();
+        
+        set.add(1);
+        assertTrue(1 == set.size());
+        
+        set.add(null);
+        assertTrue(2 == set.size());
+        
+        set.add(3);
+        assertTrue(3 == set.size());
+        
+        boolean didRemove = set.remove(null);
+        assertTrue(didRemove);
+        assertTrue(2 == set.size());
+        
+        didRemove = set.remove(1);
+        assertTrue(didRemove);
+        assertTrue(1 == set.size());
+        
+        didRemove = set.remove(3);
+        assertTrue(didRemove);
+        assertTrue(0 == set.size());
+        
+        didRemove = set.remove(4);
+        assertTrue(!didRemove);
+        assertTrue(0 == set.size());
+        
+        set.clear();
+        assertTrue(0 == set.size());
+        set.add(null);
+        assertTrue(1 == set.size());
+        set.remove(null);
+        assertTrue(0 == set.size());
+        
+        set.clear();
+        assertTrue(0 == set.size());
+        set.add(1);
+        set.add(null);
+        assertTrue(2 == set.size());
+        
+        set.remove(null);
+        assertTrue(1 == set.size());
+        set.remove(1);
+        assertTrue(0 == set.size());
+        
+        set.clear();
+        set.add(null);
+        set.remove(null);
+        
+        
+    }
+    
+    @Test
+    public void testRemoveAll() {
+        Set<Integer> otherSet = new HashSet<Integer>();
+        otherSet.add(1);
+        otherSet.add(2);
+        otherSet.add(3);
+        
+        MostlySingletonSet<Integer> set = new MostlySingletonSet<Integer>();
+        
+        set.add(1);
+        assertTrue(1 == set.size());
+        
+        set.add(2);
+        assertTrue(2 == set.size());
+        
+        set.add(3);
+        assertTrue(3 == set.size());
+        
+        boolean didRemove = set.removeAll(otherSet);
+        assertTrue(didRemove);
+        assertTrue(0 == set.size());
+        
+        
+        set = new MostlySingletonSet<Integer>();
+        
+        set.add(1);
+        assertTrue(1 == set.size());
+        
+        set.add(2);
+        assertTrue(2 == set.size());
+        
+        set.add(3);
+        assertTrue(3 == set.size());      
+        
+        set.add(4);
+        assertTrue(4 == set.size());
+        
+        set.add(5);
+        assertTrue(5 == set.size());
+        
+        didRemove = set.removeAll(otherSet);
+        assertTrue(didRemove);
+        assertTrue(2 == set.size());
+        
+        set.clear();
+        assertTrue(0 == set.size());
+        set.add(1);
+        set.removeAll(otherSet);
+    }
+    
+    @Test
+    public void testRemoveAllWithNulls() {
+        Set<Integer> otherSet = new HashSet<Integer>();
+        otherSet.add(1);
+        otherSet.add(null);
+        otherSet.add(3);
+        
+        MostlySingletonSet<Integer> set = new MostlySingletonSet<Integer>();
+        
+        set.add(1);
+        assertTrue(1 == set.size());
+        
+        set.add(null);
+        assertTrue(2 == set.size());
+        
+        set.add(3);
+        assertTrue(3 == set.size());
+        
+        boolean didRemove = set.removeAll(otherSet);
+        assertTrue(didRemove);
+        assertTrue(0 == set.size());
+        
+        set = new MostlySingletonSet<Integer>();
+        
+        set.add(1);
+        assertTrue(1 == set.size());
+        
+        set.add(null);
+        assertTrue(2 == set.size());
+        
+        set.add(3);
+        assertTrue(3 == set.size());      
+        
+        set.add(4);
+        assertTrue(4 == set.size());
+        
+        set.add(5);
+        assertTrue(5 == set.size());
+        
+        didRemove = set.removeAll(otherSet);
+        assertTrue(didRemove);
+        assertTrue(2 == set.size());
+        
+        
+        set.clear();
+        assertTrue(0 == set.size());
+        set.add(null);
+        set.removeAll(otherSet);
+        
+    }
+    
+    @Test
+    public void testRetainAll() {
+        Set<Integer> otherSet = new HashSet<Integer>();
+        otherSet.add(1);
+        otherSet.add(2);
+        otherSet.add(3);
+        
+        MostlySingletonSet<Integer> set = new MostlySingletonSet<Integer>();
+        
+        set.add(1);
+        assertTrue(1 == set.size());
+        
+        set.add(2);
+        assertTrue(2 == set.size());
+        
+        set.add(3);
+        assertTrue(3 == set.size());
+
+        boolean didRemove = set.retainAll(otherSet);
+        assertTrue(!didRemove);
+        assertTrue(3 == set.size());
+        
+        set.add(4);
+        assertTrue(4 == set.size()) ;
+        set.retainAll(otherSet);
+        assertTrue(3 == set.size());
+        assertTrue(!set.contains(4));
+        
+        set.clear();
+        assertTrue(0 == set.size());
+        otherSet.clear();
+        assertTrue(0 == otherSet.size());
+        set.add(1);
+        assertTrue(1 == set.size());
+        otherSet.add(2);
+        assertTrue(1 == otherSet.size());
+        
+        set.retainAll(otherSet);
+        assertTrue(0 == set.size());
+    }
+    
+    
+    @Test
+    public void testRetainAllWithNulls() {
+        Set<Integer> otherSet = new HashSet<Integer>();
+        otherSet.add(1);
+        otherSet.add(null);
+        otherSet.add(3);
+        
+        MostlySingletonSet<Integer> set = new MostlySingletonSet<Integer>();
+        
+        set.add(1);
+        assertTrue(1 == set.size());
+        
+        set.add(null);
+        assertTrue(2 == set.size());
+        
+        set.add(3);
+        assertTrue(3 == set.size());
+
+        boolean didRemove = set.retainAll(otherSet);
+        assertTrue(!didRemove);
+        assertTrue(3 == set.size());
+        
+        set.add(4);
+        assertTrue(4 == set.size()) ;
+        set.retainAll(otherSet);
+        assertTrue(3 == set.size());
+        assertTrue(!set.contains(4));
+        
+        set.clear();
+        assertTrue(0 == set.size());
+        otherSet.clear();
+        assertTrue(0 == otherSet.size());
+        set.add(null);
+        assertTrue(1 == set.size());
+        otherSet.add(2);
+        assertTrue(1 == otherSet.size());
+        
+        set.retainAll(otherSet);
+        assertTrue(0 == set.size());
+        
+    }
+    
+    @Test
+    public void testContains() {
+        MostlySingletonSet<Integer> set = new MostlySingletonSet<Integer>();
+        
+        set.add(1);
+        assertTrue(set.contains(1));
+        assertTrue(!set.contains(2));
+        
+        set.add(2);
+        assertTrue(set.contains(2));
+        
+        set.remove(2);
+        assertTrue(!set.contains(2));
+        assertTrue(1 == set.size());
+        
+        set.remove(1);
+        assertTrue(!set.contains(1));
+        assertTrue(0 == set.size());
+        
+        set.add(1);
+        assertTrue(set.contains(1));
+        assertTrue(!set.contains(2));
+        
+        set.add(2);
+        assertTrue(set.contains(2));
+
+        
+    }
+    
+    @Test
+    public void testContainsWithNulls() {
+        MostlySingletonSet<Integer> set = new MostlySingletonSet<Integer>();
+        
+        set.add(null);
+        assertTrue(set.contains(null));
+        assertTrue(!set.contains(2));
+        
+        set.add(2);
+        assertTrue(set.contains(2));
+        
+        set.remove(2);
+        assertTrue(!set.contains(2));
+        assertTrue(1 == set.size());
+        
+        set.remove(null);
+        assertTrue(!set.contains(null));
+        assertTrue(0 == set.size());
+        
+        set.add(1);
+        assertTrue(set.contains(1));
+        assertTrue(!set.contains(2));
+        
+        set.add(null);
+        assertTrue(set.contains(null));
+
+        
+    }
+    
+    @Test
+    public void testContainsAll() {
+        MostlySingletonSet<Integer> set = new MostlySingletonSet<Integer>();
+        
+        set.add(1);
+        assertTrue(set.contains(1));
+        assertTrue(!set.contains(2));
+
+        Set<Integer> otherSet = new HashSet<Integer>();
+        otherSet.add(1);
+        assertTrue(set.containsAll(otherSet));
+        
+        set.add(2);
+        assertTrue(set.contains(1));
+        assertTrue(set.contains(2));
+        
+        assertTrue(set.containsAll(otherSet));
+        otherSet.clear();
+        assertTrue(set.containsAll(otherSet));
+    }
+        
+    @Test
+    public void testContainsAllWithNulls() {
+        MostlySingletonSet<Integer> set = new MostlySingletonSet<Integer>();
+        
+        set.add(null);
+        assertTrue(set.contains(null));
+        assertTrue(!set.contains(2));
+
+        Set<Integer> otherSet = new HashSet<Integer>();
+        otherSet.add(null);
+        assertTrue(set.containsAll(otherSet));
+        
+        set.add(2);
+        assertTrue(set.contains(null));
+        assertTrue(set.contains(2));
+        
+        assertTrue(set.containsAll(otherSet));
+        otherSet.clear();
+        assertTrue(set.containsAll(otherSet));
+    }
+        
+    
+    @Test
+    public void testIsEmpty() {
+        MostlySingletonSet<Integer> set = new MostlySingletonSet<Integer>();
+        
+        assertTrue(set.isEmpty());
+        set.add(1);
+        assertTrue(!set.isEmpty());
+        
+        set.remove(1);
+        assertTrue(set.isEmpty());
+        
+        set.add(1);
+        set.add(2);
+        assertTrue(!set.isEmpty());
+        set.remove(1);
+        set.remove(2);
+        assertTrue(set.isEmpty());
+        
+    }
+    
+    @Test
+    public void testIsEmptyWithNulls() {
+        MostlySingletonSet<Integer> set = new MostlySingletonSet<Integer>();
+        
+        assertTrue(set.isEmpty());
+        set.add(null);
+        assertTrue(!set.isEmpty());
+        
+        set.remove(null);
+        assertTrue(set.isEmpty());
+        
+        set.add(1);
+        set.add(null);
+        assertTrue(!set.isEmpty());
+        set.remove(1);
+        set.remove(null);
+        assertTrue(set.isEmpty());
+        
+    }
+   
+    @Test
+    public void testEquals() {
+        MostlySingletonSet<Integer> setA = new MostlySingletonSet<Integer>();
+        
+        setA.add(1);
+        assertTrue(1 == setA.size());
+        
+        setA.add(2);
+        assertTrue(2 == setA.size());
+        
+        setA.add(3);
+        assertTrue(3 == setA.size());
+        
+        Set<Integer> otherSet = new HashSet<Integer>();
+        otherSet.add(1);
+        otherSet.add(2);
+        otherSet.add(3);
+
+        assertTrue(setA.equals(otherSet));
+        assertTrue(otherSet.equals(setA));
+        
+        setA.clear();
+        otherSet.clear();
+        assertTrue(setA.equals(otherSet));
+        assertTrue(otherSet.equals(setA));
+
+        setA.add(1);
+        setA.add(2);
+        setA.add(3);
+        
+        MostlySingletonSet<Integer> setB = new MostlySingletonSet<Integer>();
+        setB.add(1);
+        setB.add(2);
+        setB.add(3);
+        assertTrue(setA.equals(setB));
+        assertTrue(setB.equals(setA));
+        
+        setA.clear();
+        setB.clear();
+        assertTrue(setA.equals(setB));
+        assertTrue(setB.equals(setA));
+    }
+    
+    @Test
+    public void testToString() {
+        
+        MostlySingletonSet<Integer> setA = new MostlySingletonSet<Integer>();
+        
+        setA.add(1);
+        assertTrue(1 == setA.size());
+        
+        setA.add(2);
+        assertTrue(2 == setA.size());
+        
+        setA.add(3);
+        assertTrue(3 == setA.size());
+        
+        String toString = setA.toString();
+        assertTrue(toString.contains("1"));
+        assertTrue(toString.contains("2"));
+        assertTrue(toString.contains("3"));
+        assertTrue(!toString.contains("4"));
+        
+    }
+    
+    @Test
+    public void testToStringWithNulls() {
+        
+        MostlySingletonSet<Integer> setA = new MostlySingletonSet<Integer>();
+        
+        setA.add(1);
+        assertTrue(1 == setA.size());
+        
+        setA.add(null);
+        assertTrue(2 == setA.size());
+        
+        setA.add(3);
+        assertTrue(3 == setA.size());
+        
+        String toString = setA.toString();
+        assertTrue(toString.contains("1"));
+        assertTrue(toString.contains("null"));
+        assertTrue(toString.contains("3"));
+        assertTrue(!toString.contains("4"));
+        
+    }
+
+}
diff --git a/test/unit/src/test/java/com/sun/faces/util/TestHtmlUtils.java b/test/unit/src/test/java/com/sun/faces/util/TestHtmlUtils.java
new file mode 100644
index 0000000..a47c2a1
--- /dev/null
+++ b/test/unit/src/test/java/com/sun/faces/util/TestHtmlUtils.java
@@ -0,0 +1,162 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+// TestHtmlUtils.java
+package com.sun.faces.util;
+
+import java.io.IOException;
+import java.io.StringWriter;
+
+import junit.framework.TestCase;
+
+/**
+ * <B>TestHtmlUtils</B> is a class ...
+ */
+public class TestHtmlUtils extends TestCase {
+
+    public void testWriteURL() throws IOException {
+        //Test url with no params
+        testURLEncoding("http://www.google.com",
+                "http://www.google.com",
+                "http://www.google.com");
+        //Test URL with one param
+        testURLEncoding("http://www.google.com?joe=10",
+                "http://www.google.com?joe=10",
+                "http://www.google.com?joe=10");
+        //Test URL with two params
+        testURLEncoding("http://www.google.com?joe=10&fred=20",
+                "http://www.google.com?joe=10&fred=20",
+                "http://www.google.com?joe=10&fred=20");
+        //Test URL with & entity encoded
+        testURLEncoding("/index.jsf?joe=10&fred=20",
+                "/index.jsf?joe=10&fred=20",
+                "/index.jsf?joe=10&fred=20");
+        //Test URL with two params and second & close to end of string
+        testURLEncoding("/index.jsf?joe=10&f=20",
+                "/index.jsf?joe=10&f=20",
+                "/index.jsf?joe=10&f=20");
+        //Test URL with misplaced & expected behavior but not necissarily right.
+        testURLEncoding("/index.jsf?joe=10&f=20&",
+                "/index.jsf?joe=10&f=20&",
+                "/index.jsf?joe=10&f=20&");
+        //Test URL with encoded entity at end of URL expected behavior but not necissarily right.
+        testURLEncoding("/index.jsf?joe=10&f=20&",
+                "/index.jsf?joe=10&f=20&",
+                "/index.jsf?joe=10&f=20&");
+    }
+
+    public void testControlCharacters() throws IOException {
+
+        final char[] controlCharacters = new char[32];
+        for (int i = 0; i < 32; i++) {
+            controlCharacters[i] = (char) i;
+        }
+
+        String[] stringValues = new String[32];
+        for (int i = 0; i < 32; i++) {
+            stringValues[i] = "b" + controlCharacters[i] + "b";
+        }
+
+        final String[] largeStringValues = new String[32];
+        for (int i = 0; i < 32; i++) {
+            largeStringValues[i] = (stringValues[i] + "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb");
+        }
+
+        for (int i = 0; i < 32; i++) {
+            char[] textBuffer = new char[1024];
+            char[] buffer = new char[1024];
+            StringWriter writer = new StringWriter();
+            HtmlUtils.writeAttribute(writer, false, false, buffer, stringValues[i], textBuffer, false);
+            if (i == 9 || i == 10 || i == 12 || i == 13) {
+                assertTrue(writer.toString().length() == 3);
+            } else {
+                assertTrue(writer.toString().length() == 2);
+            }
+        }
+
+        for (int i = 0; i < 32; i++) {
+            char[] textBuffer = new char[1024];
+            char[] buffer = new char[1024];
+            StringWriter writer = new StringWriter();
+            HtmlUtils.writeAttribute(writer, false, false, buffer, largeStringValues[i], textBuffer, false);
+            if (i == 9 || i == 10 || i == 12 || i == 13) {
+                assertTrue(writer.toString().length() == 34);
+            } else {
+                assertTrue(writer.toString().length() == 33);
+            }
+        }
+
+        for (int i = 0; i < 32; i++) {
+            char[] textBuffer = new char[1024];
+            char[] buffer = new char[1024];
+            StringWriter writer = new StringWriter();
+            HtmlUtils.writeText(writer, false, false, buffer, stringValues[i], textBuffer);
+            if (i == 9 || i == 10 || i == 12 || i == 13) {
+                assertTrue(writer.toString().length() == 3);
+            } else {
+                assertTrue(writer.toString().length() == 2);
+            }
+        }
+
+        for (int i = 0; i < 32; i++) {
+            char[] textBuffer = new char[1024];
+            char[] buffer = new char[1024];
+            StringWriter writer = new StringWriter();
+            HtmlUtils.writeText(writer, false, false, buffer, largeStringValues[i], textBuffer);
+            if (i == 9 || i == 10 || i == 12 || i == 13) {
+                assertTrue(writer.toString().length() == 34);
+            } else {
+                assertTrue(writer.toString().length() == 33);
+            }
+        }
+    }
+
+    private void testURLEncoding(String urlToEncode, String expectedHTML, String expectedXML)
+            throws IOException {
+        char[] textBuffer = new char[1024];
+        StringWriter xmlWriter = new StringWriter();
+        HtmlUtils.writeURL(xmlWriter, urlToEncode, textBuffer, "UTF-8");
+        System.out.println("XML: " + xmlWriter.toString());
+        assertEquals(xmlWriter.toString(), expectedXML);
+        StringWriter htmlWriter = new StringWriter();
+        HtmlUtils.writeURL(htmlWriter, urlToEncode, textBuffer, "UTF-8");
+        System.out.println("HTML: " + htmlWriter.toString());
+        assertEquals(htmlWriter.toString(), expectedHTML);
+    }
+}
diff --git a/test/unit/src/test/java/com/sun/faces/util/TestLRUMap_local.java b/test/unit/src/test/java/com/sun/faces/util/TestLRUMap_local.java
new file mode 100644
index 0000000..9862868
--- /dev/null
+++ b/test/unit/src/test/java/com/sun/faces/util/TestLRUMap_local.java
@@ -0,0 +1,114 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.util;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Collections;
+import static junit.framework.Assert.assertEquals;
+
+import junit.framework.TestCase;
+
+/**
+ * Validate LRU functionality of LRUMap
+ */
+public class TestLRUMap_local extends TestCase {
+
+    // ------------------------------------------------------------ Constructors
+    public TestLRUMap_local() {
+        super("TestLRUMap_local");
+    }
+
+    public TestLRUMap_local(String name) {
+        super(name);
+    }
+
+    // ------------------------------------------------------------ Test Methods
+    /**
+     * Ensure that LRUMap works as advertised.
+     */
+    public void testLRUMap() {
+
+        LRUMap<String, String> map = new LRUMap<String, String>(5);
+        map.put("one", "one");
+        map.put("two", "two");
+        map.put("three", "three");
+
+        // order should be "three", "two", "one"
+        String[] control = {
+            "three", "two", "one"
+        };
+
+        int count = 3;
+        display(control.clone(), map);
+        for (String s : map.keySet()) {
+            assertEquals(control[--count], s);
+        }
+
+        map.put("four", "four");
+        map.put("five", "five");
+        map.put("three", "three");
+        map.put("six", "six");
+        control = new String[]{
+            "six", "three", "five", "four", "two"
+        };
+        count = 5;
+        display(control.clone(), map);
+        for (String s : map.keySet()) {
+            assertEquals(control[--count], s);
+        }
+    }
+
+    // --------------------------------------------------------- Private Methods
+    private static void display(String[] expected, LRUMap<String, String> actual) {
+        System.out.println("Expected order:");
+        List<String> revControl = Arrays.asList(expected);
+        Collections.reverse(revControl);
+        for (String s : revControl) {
+            System.out.print(s + ' ');
+        }
+        System.out.println('\n');
+        System.out.println("Actual order:");
+        for (String s : actual.keySet()) {
+            System.out.print(s + ' ');
+        }
+        System.out.println();
+    }
+}
diff --git a/test/unit/src/test/java/com/sun/faces/util/TestUtil_local.java b/test/unit/src/test/java/com/sun/faces/util/TestUtil_local.java
new file mode 100644
index 0000000..4803a96
--- /dev/null
+++ b/test/unit/src/test/java/com/sun/faces/util/TestUtil_local.java
@@ -0,0 +1,121 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+// TestUtil_local.java
+package com.sun.faces.util;
+
+import junit.framework.TestCase;
+
+import java.util.Locale;
+import static junit.framework.Assert.assertNotNull;
+import static junit.framework.Assert.fail;
+
+/**
+ * <B>TestUtil_local.java</B> is a class ...
+ * <p/>
+ * <B>Lifetime And Scope</B>
+ * <P>
+ *
+ */
+public class TestUtil_local extends TestCase {
+
+//
+// Protected Constants
+//
+// Class Variables
+//
+//
+// Instance Variables
+//
+// Attribute Instance Variables
+// Relationship Instance Variables
+//
+// Constructors and Initializers    
+//
+    public TestUtil_local() {
+        super("TestUtil_local.java");
+    }
+
+    public TestUtil_local(String name) {
+        super(name);
+    }
+
+//
+// Class methods
+//
+//
+// General Methods
+//
+    public void testGetLocaleFromString() {
+        Locale result = null;
+
+        // positive tests
+        assertNotNull(result = Util.getLocaleFromString("ps"));
+        assertNotNull(result = Util.getLocaleFromString("tg_AF"));
+        assertNotNull(result = Util.getLocaleFromString("tk_IQ-Traditional"));
+        assertNotNull(result = Util.getLocaleFromString("tk-IQ_Traditional"));
+
+        try {
+            Util.getLocaleFromString("aoeuhoentuhtnhtnhoaenhnhu");
+            fail();
+        } catch (Exception exception) {
+        }
+
+        try {
+            Util.getLocaleFromString("ps_PS-at-pq-wp");
+        } catch (Exception exception) {
+        }
+
+        try {
+            Util.getLocaleFromString("tg-AF-oe-12");
+        } catch (Exception exception) {
+        }
+
+        try {
+            Util.getLocaleFromString("12-34");
+        } catch (Exception exception) {
+        }
+
+        try {
+            Util.getLocaleFromString("12-");
+        } catch (Exception exception) {
+        }
+    }
+
+} // end of class TestUtil_local
diff --git a/test/unit/src/test/java/com/sun/faces/util/ToolsUtil.java b/test/unit/src/test/java/com/sun/faces/util/ToolsUtil.java
new file mode 100644
index 0000000..bd6d631
--- /dev/null
+++ b/test/unit/src/test/java/com/sun/faces/util/ToolsUtil.java
@@ -0,0 +1,138 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.util;
+
+import java.util.ResourceBundle;
+import java.util.Locale;
+import java.text.MessageFormat;
+import java.util.logging.Logger;
+
+/**
+ * Various static utility methods.
+ */
+public class ToolsUtil {
+
+    public static final String FACES_LOGGER = "javax.enterprise.resource.webcontainer.jsf";
+
+    public static final String CONFIG_LOGGER = ".config";
+
+    public static final String BEANS_LOGGER = ".config.beans";
+
+    public static final String RULES_LOGGER = ".config.rules";
+
+    public static final String GENERATE_LOGGER = ".config.generate";
+
+    public static final String FACES_LOG_STRINGS
+            = "com.sun.faces.LogStrings";
+
+    public static final String TOOLS_LOG_STRINGS
+            = "com.sun.faces.ToolsLogStrings";
+
+    private static final String RESOURCE_BUNDLE_BASE_NAME
+            = "com.sun.faces.resources.JsfToolsMessages";
+
+    // --------------------------------------------------- Message Key Constants
+    public static final String MANAGED_BEAN_NO_MANAGED_BEAN_NAME_ID
+            = "com.sun.faces.MANAGED_BEAN_NO_MANAGED_BEAN_NAME";
+
+    public static final String MANAGED_BEAN_NO_MANAGED_BEAN_CLASS_ID
+            = "com.sun.faces.MANAGED_BEAN_NO_MANAGED_BEAN_CLASS";
+
+    public static final String MANAGED_BEAN_NO_MANAGED_BEAN_SCOPE_ID
+            = "com.sun.faces.MANAGED_BEAN_NO_MANAGED_BEAN_SCOPE";
+
+    public static final String MANAGED_BEAN_INVALID_SCOPE_ID
+            = "com.sun.faces.MANAGED_BEAN_INVALID_SCOPE";
+
+    public static final String MANAGED_BEAN_AS_LIST_CONFIG_ERROR_ID
+            = "com.sun.faces.MANAGED_BEAN_AS_LIST_CONFIG_ERROR";
+
+    public static final String MANAGED_BEAN_AS_MAP_CONFIG_ERROR_ID
+            = "com.sun.faces.MANAGED_BEAN_AS_MAP_CONFIG_ERROR";
+
+    public static final String MANAGED_BEAN_LIST_PROPERTY_CONFIG_ERROR_ID
+            = "com.sun.faces.MANAGED_BEAN_LIST_PROPERTY_CONFIG_ERROR";
+
+    public static final String MANAGED_BEAN_MAP_PROPERTY_CONFIG_ERROR_ID
+            = "com.sun.faces.MANAGED_BEAN_MAP_PROPERTY_CONFIG_ERROR";
+
+    public static final String MANAGED_BEAN_PROPERTY_CONFIG_ERROR_ID
+            = "com.sun.faces.MANAGED_BEAN_PROPERTY_CONFIG_ERROR";
+
+    public static final String MANAGED_BEAN_NO_MANAGED_PROPERTY_NAME_ID
+            = "com.sun.faces.MANAGED_BEAN_NO_MANAGED_PROPERTY_NAME";
+
+    // ---------------------------------------------------------- Public Methods
+    public static String getMessage(String messageKey, Object[] params) {
+
+        ResourceBundle bundle
+                = ResourceBundle.getBundle(RESOURCE_BUNDLE_BASE_NAME,
+                        Locale.getDefault(),
+                        Thread.currentThread().getContextClassLoader());
+        return MessageFormat.format(bundle.getString(messageKey), params);
+
+    } // END getMessage
+
+    public static String getMessage(String messageKey) {
+
+        return getMessage(messageKey, null);
+
+    } // END getMessage
+
+    public static Logger getLogger(String loggerName) {
+        return Logger.getLogger(loggerName, FACES_LOG_STRINGS);
+    }
+
+    public static Class loadClass(String name,
+            Object fallbackClass)
+            throws ClassNotFoundException {
+        ClassLoader loader = ToolsUtil.getCurrentLoader(fallbackClass);
+        return Class.forName(name, false, loader);
+    }
+
+    public static ClassLoader getCurrentLoader(Object fallbackClass) {
+        ClassLoader loader
+                = Thread.currentThread().getContextClassLoader();
+        if (loader == null) {
+            loader = fallbackClass.getClass().getClassLoader();
+        }
+        return loader;
+    }
+}
diff --git a/test/unit/src/test/java/com/sun/faces/xml/ParseXMLTestCase.java b/test/unit/src/test/java/com/sun/faces/xml/ParseXMLTestCase.java
new file mode 100644
index 0000000..2023f4a
--- /dev/null
+++ b/test/unit/src/test/java/com/sun/faces/xml/ParseXMLTestCase.java
@@ -0,0 +1,151 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.xml;
+
+import javax.xml.parsers.SAXParser;
+import javax.xml.parsers.SAXParserFactory;
+import org.xml.sax.InputSource;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import java.util.ArrayList;
+import java.util.List;
+import java.io.File;
+import java.io.FileInputStream;
+import static junit.framework.Assert.fail;
+import junit.framework.TestCase;
+
+public class ParseXMLTestCase extends TestCase {
+
+    List list = new ArrayList();
+    private final static String xmlDir = "/conf/share";
+    private final static String jsfri = "/jsf-ri";
+
+    /**
+     * Construct a new instance of this test case.
+     *
+     * @param name Name of the test case
+     */
+    public ParseXMLTestCase(String name) {
+        super(name);
+    }
+
+    /**
+     * Set up instance variables required by this test case.
+     */
+    @Override
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+
+    /**
+     * Return the tests included in this test suite.
+     * @return 
+     */
+    public static Test suite() {
+        return (new TestSuite(ParseXMLTestCase.class));
+    }
+
+    // ------------------------------------------------------------ Test Methods
+    /**
+     * Added for issue 904.
+     */
+    public void testParseXML() throws Exception {
+
+        String curDir = System.getProperty("user.dir");
+        File baseDir = new File(curDir);
+        System.out.println("current dir = " + curDir);
+        System.out.flush();
+        visitAllDirsAndFiles(new File(baseDir, xmlDir));
+        //printAllXMLFiles();
+        for (Object file : list) {
+            try {
+                SAXParserFactory factory = SAXParserFactory.newInstance();
+                factory.setNamespaceAware(true);
+                factory.setValidating(true);
+                SAXParser saxParser = factory.newSAXParser();
+
+                System.out.println("XML file to be parsed : file://" + file.toString());
+                System.out.flush();
+                saxParser.parse(new InputSource(new FileInputStream(file.toString())), new XHTMLResolvingHandler());
+                System.out.println("parsing complete.");
+                System.out.flush();
+            } catch (Exception e) {
+                System.out.println("Parse error for " + file.toString() + " " + e.toString());
+                System.out.flush();
+                fail();
+            }
+        }
+
+    }
+
+    // Process all files and directories under dir
+    public void visitAllDirsAndFiles(File dir) {
+
+        if (dir.isFile()) {
+            if (isXML(dir)) {
+                //add it to the list
+                list.add(dir);
+            }
+        }
+        if (dir.isDirectory()) {
+            String[] children = dir.list();
+            for (int i = 0; i < children.length; i++) {
+                visitAllDirsAndFiles(new File(dir, children[i]));
+            }
+        }
+    }
+
+    public boolean isXML(File file) {
+        String name = file.getName();
+        if (name.endsWith(".xml")) {
+            //it is an xml file
+            //add to list
+            return true;
+        } else {
+            return false;
+        }
+    }
+
+    private void printAllXMLFiles() {
+        for (Object l : list) {
+            System.out.println("XML file : " + l);
+        }
+    }
+}
diff --git a/test/unit/src/test/java/com/sun/faces/xml/XHTMLResolvingHandler.java b/test/unit/src/test/java/com/sun/faces/xml/XHTMLResolvingHandler.java
new file mode 100644
index 0000000..10d1ad0
--- /dev/null
+++ b/test/unit/src/test/java/com/sun/faces/xml/XHTMLResolvingHandler.java
@@ -0,0 +1,102 @@
+
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.xml;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.Reader;
+import java.io.StringReader;
+import java.io.UnsupportedEncodingException;
+import java.util.Locale;
+import java.util.ResourceBundle;
+import org.xml.sax.InputSource;
+import org.xml.sax.SAXException;
+import org.xml.sax.helpers.DefaultHandler;
+
+public class XHTMLResolvingHandler extends DefaultHandler {
+
+    private ResourceBundle bundle;
+
+    public XHTMLResolvingHandler() {
+        bundle = ResourceBundle.getBundle(this.getClass().getPackage().getName() + ".Entities",
+                Locale.US);
+    }
+
+    @Override
+    public InputSource resolveEntity(String publicId, String systemId) throws IOException, SAXException {
+        InputSource is = null;
+        int slashslash = systemId.indexOf("//");
+        String key = systemId;
+        if (-1 != slashslash) {
+            key = systemId.substring(slashslash + 2);
+        }
+        final String value;
+
+        try {
+            value = bundle.getString(key);
+            is = new InputSource(systemId) {
+
+                @Override
+                public InputStream getByteStream() {
+                    InputStream inputStream = null;
+                    try {
+                        inputStream = new ByteArrayInputStream(value.getBytes("UTF-8"));
+                    } catch (UnsupportedEncodingException ex) {
+                    }
+                    return inputStream;
+                }
+
+                @Override
+                public Reader getCharacterStream() {
+                    Reader reader = null;
+                    reader = new StringReader(value);
+                    return reader;
+                }
+
+            };
+        } catch (Exception e) {
+
+        }
+
+        return is;
+    }
+}
diff --git a/test/unit/src/test/java/javax/faces/FacesWrapperTestCase.java b/test/unit/src/test/java/javax/faces/FacesWrapperTestCase.java
new file mode 100644
index 0000000..f646fe4
--- /dev/null
+++ b/test/unit/src/test/java/javax/faces/FacesWrapperTestCase.java
@@ -0,0 +1,241 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package javax.faces;
+
+import java.io.File;
+
+import java.lang.reflect.Method;
+import java.lang.reflect.Modifier;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import static junit.framework.Assert.assertNotNull;
+import static junit.framework.Assert.assertTrue;
+import junit.framework.TestCase;
+
+/**
+ * <p>
+ * A unit test to make sure all classes implementing {@link FacesWrapper} are
+ * actually wrapping all public and protected methods of the wrapped class. This
+ * should help to keep the wrapper classes in synch with the wrapped classes.
+ * </p>
+ */
+public class FacesWrapperTestCase extends TestCase {
+
+    private static List<Class<?>> wrapperClasses;
+    private static List<Class<?>> noWrapperClasses;
+    private static List<Method> methodsToIgnore;
+    private static final String JAVAX_FACES_PKG = "javax.faces.";
+
+    /**
+     * Perform class-level initialization for test - lookup for classes
+     * implementing FacesWrapper.
+     * @throws java.lang.Exception
+     */
+    @Override
+    protected void setUp() throws Exception {
+        if (wrapperClasses == null) {
+            loadWrapperClasses();
+            methodsToIgnore = new ArrayList<Method>();
+            methodsToIgnore.add(Object.class.getMethod("toString", new Class[0]));
+        }
+    }
+
+    /**
+     * Unit test to assert wrapperClasses list was loaded (see {@link #setUp()}.
+     */
+    public void testWrapperClassesLoaded() {
+        assertNotNull(wrapperClasses);
+        assertTrue("no wrapper classes found!", !wrapperClasses.isEmpty());
+    }
+
+    /**
+     * Unit test to assert there are no *Wrapper classes not implementing
+     * FacesWrapper.
+     */
+    public void testWrapperClassesImplementFacesWrapper() {
+        assertNotNull(noWrapperClasses);
+        if (noWrapperClasses.size() > 0) {
+            System.out.println("Wrapper classes not implementing javax.faces.FacesWrapper:");
+            System.out.println(noWrapperClasses.toString());
+        }
+        assertTrue("Found wrapper classes not implementing FacesWrapper!", noWrapperClasses
+                .isEmpty());
+    }
+
+    /**
+     * The main goal of this TestSuite: unit test to assert all classes
+     * implementing FacesWrapper do wrap all public and protected methods of the
+     * wrapped class.
+     */
+    public void testWrapperClassWrapsPublicAndProtectedMethods() {
+        for (Class<?> wrapper : wrapperClasses) {
+            if (wrapper.isInterface()) {
+                continue;
+            }
+            List<Method> wrapperMethods = getPublicAndProtectedMethods(wrapper);
+            List<Method> methodsToWrap = getPublicAndProtectedMethods(wrapper.getSuperclass());
+
+            System.out.println("verify " + wrapper.getName() + " is wrapping "
+                    + wrapper.getSuperclass().getName() + " well");
+            String msg = wrapper.getCanonicalName() + " does not wrap method: ";
+            for (Method m : methodsToWrap) {
+                if (isMethodContained(m, methodsToIgnore)) {
+                    continue;
+                }
+                assertTrue(msg + m.toString(), isMethodContained(m, wrapperMethods));
+            }
+        }
+    }
+
+    // private methods
+    /**
+     * Returns true it the passed method is contained in the also passed list of
+     * methods by also comparing matching parameters.
+     *
+     * @param m the method (from the wrapped class) to compare against.
+     * @param wrapperMethods the list of methods of the wrapper class.
+     */
+    private boolean isMethodContained(Method m, List<Method> wrapperMethods) {
+        String name = m.getName();
+        Class<?>[] paramTypes = m.getParameterTypes();
+        Class<?> returnType = m.getReturnType();
+        for (Method wm : wrapperMethods) {
+            if (name.equals(wm.getName()) && Arrays.equals(paramTypes, wm.getParameterTypes())
+                    && returnType == wm.getReturnType()) {
+                return true;
+            }
+        }
+
+        return false;
+    }
+
+    /**
+     * Collect public and protected methods of a class.
+     *
+     * @param wrapper the class to find its methods.
+     * @return list of found methods.
+     */
+    private List<Method> getPublicAndProtectedMethods(Class<?> wrapper) {
+        List<Method> mList = new ArrayList<Method>();
+        if (Object.class == wrapper) {
+            return mList;
+        }
+
+        Method[] methods = wrapper.getDeclaredMethods();
+        for (Method m : methods) {
+            int mod = m.getModifiers();
+            if (!Modifier.isStatic(mod) && (Modifier.isPublic(mod) || Modifier.isProtected(mod))) {
+                mList.add(m);
+            }
+        }
+        return mList;
+    }
+
+    /**
+     * Collect the wrapper classes.
+     */
+    private void loadWrapperClasses() {
+        wrapperClasses = new ArrayList<Class<?>>();
+        noWrapperClasses = new ArrayList<Class<?>>();
+
+        ClassLoader cl = Thread.currentThread().getContextClassLoader();
+        try {
+            URL res = cl.getResource("javax/faces/Messages.properties");
+            File javaxFacesPackage = new File(res.getFile()).getParentFile();
+            collectWrapperClasses(cl, JAVAX_FACES_PKG, javaxFacesPackage);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    /**
+     * Walk package tree for collecting wrapper classes.
+     *
+     * @param cl the ClassLoader.
+     * @param pkg package name.
+     * @param file current File (directory or file)
+     * @throws Exception might throw ClassNotFoundException from class loading.
+     */
+    private void collectWrapperClasses(ClassLoader cl, String pkg, File file) throws Exception {
+        for (File f : file.listFiles()) {
+            if (f.isDirectory()) {
+                collectWrapperClasses(cl, pkg + f.getName() + ".", f);
+            } else {
+                addWrapperClassToWrapperClassesList(cl, pkg, f);
+            }
+        }
+    }
+
+    /**
+     * Add classes that are assignable to FacesWrapper class to the
+     * wrapperClasses list - and also add classes with a name ending on
+     * "Wrapper" but being not assignable to FacesWrapper to the
+     * noWrapperClasses list.
+     *
+     * @param cl the ClasslOader used to load the class.
+     * @param pkg the name of the package working in.
+     * @param f the File to analyse.
+     * @throws Exception ClassLoader exceptions.
+     */
+    private void addWrapperClassToWrapperClassesList(ClassLoader cl, String pkg, File f)
+            throws Exception {
+        String name = f.getName();
+        if (!name.endsWith(".class")) {
+            return;
+        }
+        String className = pkg + name.substring(0, name.length() - 6);
+        Class<?> c = cl.loadClass(className);
+        Class<?> wrappedClass = c.getSuperclass();
+        if (wrappedClass != null) {
+            // we are not interested in interfaces extending FacesWrapper interface.
+            // also skip classes implementing FacesWrapper but extend from Object (e.g. factories).
+            if (FacesWrapper.class.isAssignableFrom(wrappedClass) || wrappedClass == Object.class) {
+                return;
+            }
+        }
+        if (FacesWrapper.class.isAssignableFrom(c)) {
+            wrapperClasses.add(c);
+        } else if (c != FacesWrapper.class && c.getName().endsWith("Wrapper")) {
+            noWrapperClasses.add(c);
+        }
+    }
+}
diff --git a/test/unit/src/test/java/javax/faces/FactoryFinderTestCase.java b/test/unit/src/test/java/javax/faces/FactoryFinderTestCase.java
new file mode 100644
index 0000000..68148b8
--- /dev/null
+++ b/test/unit/src/test/java/javax/faces/FactoryFinderTestCase.java
@@ -0,0 +1,318 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package javax.faces;
+
+import com.sun.faces.mock.MockHttpServletRequest;
+import com.sun.faces.mock.MockHttpServletResponse;
+import com.sun.faces.mock.MockServletContext;
+import java.io.File;
+import java.io.PrintWriter;
+import java.lang.reflect.Method;
+import javax.faces.application.Application;
+import javax.faces.application.ApplicationFactory;
+import javax.faces.context.FacesContext;
+import javax.faces.context.FacesContextFactory;
+import javax.faces.lifecycle.Lifecycle;
+import javax.faces.lifecycle.LifecycleFactory;
+import static junit.framework.Assert.assertNull;
+import static junit.framework.Assert.assertTrue;
+import junit.framework.TestCase;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+/**
+ * <p>
+ * Unit tests for {@link UISelectBooleanBase}.</p>
+ */
+public class FactoryFinderTestCase extends TestCase {
+
+    // ------------------------------------------------------------ Constructors
+    /**
+     * Construct a new instance of this test case.
+     *
+     * @param name Name of the test case
+     */
+    public FactoryFinderTestCase(String name) {
+        super(name);
+    }
+
+    public static String FACTORIES[][] = {
+        {FactoryFinder.APPLICATION_FACTORY,
+            "com.sun.faces.mock.MockApplicationFactory"
+        },
+        {FactoryFinder.EXTERNAL_CONTEXT_FACTORY,
+            "com.sun.faces.mock.MockExternalContextFactory"
+        },
+        {FactoryFinder.FACES_CONTEXT_FACTORY,
+            "com.sun.faces.mock.MockFacesContextFactory"
+        },
+        {FactoryFinder.LIFECYCLE_FACTORY,
+            "com.sun.faces.mock.MockLifecycleFactory"
+        },
+        {FactoryFinder.RENDER_KIT_FACTORY,
+            "com.sun.faces.mock.MockRenderKitFactory"
+        }
+    };
+
+    // ---------------------------------------------------- Overall Test Methods
+    // Set up instance variables required by this test case.
+    @Override
+    public void setUp() throws Exception {
+        super.setUp();
+
+        Method method = FacesContext.class.getDeclaredMethod("setCurrentInstance", FacesContext.class);
+        method.setAccessible(true);
+        method.invoke(null, new Object[]{null});
+
+        for (int i = 0, len = FACTORIES.length; i < len; i++) {
+            System.getProperties().remove(FACTORIES[i][0]);
+        }
+    }
+
+    // Return the tests included in this test case.
+    public static Test suite() {
+        return (new TestSuite(FactoryFinderTestCase.class));
+    }
+
+    // Tear down instance variables required by ths test case
+    @Override
+    public void tearDown() throws Exception {
+        super.tearDown();
+        FactoryFinder.releaseFactories();
+        for (int i = 0, len = FACTORIES.length; i < len; i++) {
+            System.getProperties().remove(FACTORIES[i][0]);
+        }
+    }
+
+    // ------------------------------------------------- Individual Test Methods
+    /**
+     * <p>
+     * verify that the overrides specified in the faces-config.xml in the user's
+     * webapp take precedence.</p>
+     *
+     * @throws java.lang.Exception
+     */
+    public void testFacesConfigCase() throws Exception {
+        Object factory = null;
+        Class clazz = null;
+
+        FactoryFinder.releaseFactories();
+        int len, i = 0;
+
+        // simulate the "faces implementation specific" part
+        for (i = 0, len = FACTORIES.length; i < len; i++) {
+            FactoryFinder.setFactory(FACTORIES[i][0],
+                    FACTORIES[i][1]);
+        }
+
+        // simulate the "WEB-INF/services" part
+        // this is done by the build.xml file
+        File servicesDir = new File(System.getProperty("basedir"), "target/classes/META-INF/services");
+        servicesDir.mkdirs();
+
+        File servicesFile = new File(servicesDir, "javax.faces.context.FacesContextFactory");
+        
+        if (servicesFile.exists()) {
+            servicesFile.delete();
+        }
+        PrintWriter writer = new PrintWriter(servicesFile);
+        writer.println("javax.faces.mock.MockFacesContextFactoryExtender");
+        writer.flush();
+        writer.close();
+        
+        File cServicesDir = new File(System.getProperty("basedir"), "target/generated-classes/cobertura/META-INF/services");
+        cServicesDir.mkdirs();
+
+        File cServicesFile = new File(cServicesDir, "javax.faces.context.FacesContextFactory");
+        
+        if (cServicesFile.exists()) {
+            cServicesFile.delete();
+        }
+        PrintWriter cWriter = new PrintWriter(cServicesFile);
+        cWriter.println("javax.faces.mock.MockFacesContextFactoryExtender");
+        cWriter.flush();
+        cWriter.close();
+
+        // simulate the "webapp faces-config.xml" part
+        FactoryFinder.setFactory(FactoryFinder.FACES_CONTEXT_FACTORY,
+                "javax.faces.mock.MockFacesContextFactoryExtender2");
+
+        for (i = 0, len = FACTORIES.length; i < len; i++) {
+            clazz = Class.forName(FACTORIES[i][0]);
+            factory = FactoryFinder.getFactory(FACTORIES[i][0]);
+            assertTrue("Factory for " + clazz.getName()
+                    + " not of expected type.",
+                    clazz.isAssignableFrom(factory.getClass()));
+            clazz = Class.forName(FACTORIES[i][1]);
+            assertTrue("Factory " + FACTORIES[i][1] + " not of expected type",
+                    clazz.isAssignableFrom(factory.getClass()));
+
+        }
+        // verify that the delegation works
+        assertTrue(System.getProperty(FACTORIES[2][0]).equals("javax.faces.mock.MockFacesContextFactoryExtender2"));
+        assertTrue(System.getProperty("oldImpl").equals("javax.faces.mock.MockFacesContextFactoryExtender"));
+
+        // Verify IllegalStateException when factory not found 
+        FactoryFinder.releaseFactories();
+        FactoryFinder.setFactory(FACTORIES[0][0], FACTORIES[0][1]);
+        FactoryFinder.setFactory(FACTORIES[1][0], FACTORIES[1][1]);
+        FactoryFinder.setFactory(FACTORIES[2][0], FACTORIES[2][1]);
+        FactoryFinder.setFactory(FACTORIES[4][0], FACTORIES[4][1]);
+        boolean exceptionThrown = false;
+        try {
+            factory = FactoryFinder.getFactory(FACTORIES[3][0]);
+        } catch (IllegalStateException ise) {
+            exceptionThrown = true;
+        }
+        assertTrue(exceptionThrown);
+
+        servicesFile.delete();
+        cServicesFile.delete();
+    }
+
+    public void testNoFacesContext() throws Exception {
+        assertNull(FacesContext.getCurrentInstance());
+        Object result = FactoryFinder.getFactory(FactoryFinder.FACES_CONTEXT_FACTORY);
+        assertNotNull(result);
+        assertTrue(result instanceof FacesContextFactory);
+    }
+
+    /**
+     * <p>
+     * In the absence of webapp faces-config.xml, verify that the overrides
+     * specified in the META-INF/services take precedence.</p>
+     *
+     * @throws java.lang.Exception
+     */
+    public void testServicesCase() throws Exception {
+        Object factory = null;
+        Class clazz = null;
+
+        FactoryFinder.releaseFactories();
+        int len, i = 0;
+
+        // simulate the "faces implementation specific" part
+        for (i = 0, len = FACTORIES.length; i < len; i++) {
+            FactoryFinder.setFactory(FACTORIES[i][0],
+                    FACTORIES[i][1]);
+        }
+
+        // simulate the "WEB-INF/services" part
+        // this is done by the build.xml file
+        File servicesDir = new File(System.getProperty("basedir"), "target/classes/META-INF/services");
+        servicesDir.mkdirs();
+
+        File servicesFile = new File(servicesDir, "javax.faces.context.FacesContextFactory");
+        
+        if (servicesFile.exists()) {
+            servicesFile.delete();
+        }
+        
+        PrintWriter writer = new PrintWriter(servicesFile);
+        writer.println("javax.faces.mock.MockFacesContextFactoryExtender");
+        writer.flush();
+        writer.close();
+        
+        File cServicesDir = new File(System.getProperty("basedir"), "target/generated-classes/cobertura/META-INF/services");
+        cServicesDir.mkdirs();
+
+        File cServicesFile = new File(cServicesDir, "javax.faces.context.FacesContextFactory");
+        
+        if (cServicesFile.exists()) {
+            cServicesFile.delete();
+        }
+        
+        PrintWriter cWriter = new PrintWriter(cServicesFile);
+        cWriter.println("javax.faces.mock.MockFacesContextFactoryExtender");
+        cWriter.flush();
+        cWriter.close();
+
+        // this testcase omits the "webapp faces-config.xml" simulation
+        for (i = 0, len = FACTORIES.length; i < len; i++) {
+            clazz = Class.forName(FACTORIES[i][0]);
+            factory = FactoryFinder.getFactory(FACTORIES[i][0]);
+            assertTrue("Factory for " + clazz.getName()
+                    + " not of expected type.",
+                    clazz.isAssignableFrom(factory.getClass()));
+            clazz = Class.forName(FACTORIES[i][1]);
+            assertTrue("Factory " + FACTORIES[i][1] + " not of expected type",
+                    clazz.isAssignableFrom(factory.getClass()));
+
+        }
+        // verify that the delegation works
+        assertTrue(System.getProperty(FACTORIES[2][0]).equals("javax.faces.mock.MockFacesContextFactoryExtender"));
+        assertTrue(System.getProperty("oldImpl").equals("com.sun.faces.mock.MockFacesContextFactory"));
+
+        servicesFile.delete();
+        cServicesFile.delete();
+    }
+
+    public void testNoFacesContextInitially() throws Exception {
+        assertNull(FacesContext.getCurrentInstance());
+
+        FactoryFinder.releaseFactories();
+        FactoryFinder.setFactory(FACTORIES[0][0], FACTORIES[0][1]);
+        FactoryFinder.setFactory(FACTORIES[1][0], FACTORIES[1][1]);
+        FactoryFinder.setFactory(FACTORIES[2][0], FACTORIES[2][1]);
+        FactoryFinder.setFactory(FACTORIES[3][0], FACTORIES[3][1]);
+        FactoryFinder.setFactory(FACTORIES[4][0], FACTORIES[4][1]);
+
+        FacesContextFactory fcFactory = (FacesContextFactory) FactoryFinder.getFactory(FactoryFinder.FACES_CONTEXT_FACTORY);
+        LifecycleFactory lFactory = (LifecycleFactory) FactoryFinder.getFactory(FactoryFinder.LIFECYCLE_FACTORY);
+        Object request = new MockHttpServletRequest();
+        Object response = new MockHttpServletResponse();
+        Object containerContext = new MockServletContext();
+        Lifecycle l = lFactory.getLifecycle(LifecycleFactory.DEFAULT_LIFECYCLE);
+        FacesContext context = fcFactory.getFacesContext(containerContext, request, response, l);
+
+        ApplicationFactory aFactory = (ApplicationFactory) FactoryFinder.getFactory(FactoryFinder.APPLICATION_FACTORY);
+        Application app = aFactory.getApplication();
+        FactoryFinder.releaseFactories();
+    }
+
+    // ------------------------------------------- helpers
+    public static void printRelevantSystemProperties() {
+        System.out.println("++++++Relevant System Properties: ");
+        for (int i = 0, len = FACTORIES.length; i < len; i++) {
+            System.out.println(FACTORIES[i][0] + ": "
+                    + System.getProperty(FACTORIES[i][0]));
+        }
+    }
+}
diff --git a/test/unit/src/test/java/javax/faces/FactoryFinderTestCase2.java b/test/unit/src/test/java/javax/faces/FactoryFinderTestCase2.java
new file mode 100644
index 0000000..81d1b7c
--- /dev/null
+++ b/test/unit/src/test/java/javax/faces/FactoryFinderTestCase2.java
@@ -0,0 +1,138 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package javax.faces;
+
+import junit.framework.TestCase;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+/**
+ * <p>
+ * Unit tests for {@link UISelectBooleanBase}.</p>
+ */
+public class FactoryFinderTestCase2 extends TestCase {
+
+    // ------------------------------------------------------------ Constructors
+    /**
+     * Construct a new instance of this test case.
+     *
+     * @param name Name of the test case
+     */
+    public FactoryFinderTestCase2(String name) {
+        super(name);
+    }
+    
+        public static String FACTORIES[][] = {
+	{ FactoryFinder.APPLICATION_FACTORY, 
+	  "com.sun.faces.mock.MockApplicationFactory"
+	},
+	{ FactoryFinder.EXTERNAL_CONTEXT_FACTORY, 
+	  "com.sun.faces.mock.MockExternalContextFactory"
+	},
+	{ FactoryFinder.FACES_CONTEXT_FACTORY, 
+	  "com.sun.faces.mock.MockFacesContextFactory"
+	},
+	{ FactoryFinder.LIFECYCLE_FACTORY, 
+	  "com.sun.faces.mock.MockLifecycleFactory"
+	},
+	{ FactoryFinder.RENDER_KIT_FACTORY, 
+	  "com.sun.faces.mock.MockRenderKitFactory"
+	}
+    };
+
+    // ---------------------------------------------------- Overall Test Methods
+    // Set up instance variables required by this test case.
+    @Override
+    public void setUp() throws Exception {
+        super.setUp();
+        for (int i = 0, len = FactoryFinderTestCase2.FACTORIES.length; i < len; i++) {
+            System.getProperties().remove(FactoryFinderTestCase2.FACTORIES[i][0]);
+        }
+    }
+
+    // Return the tests included in this test case.
+    public static Test suite() {
+        return (new TestSuite(FactoryFinderTestCase2.class));
+    }
+
+    // Tear down instance variables required by ths test case
+    @Override
+    public void tearDown() throws Exception {
+        super.tearDown();
+        FactoryFinder.releaseFactories();
+        for (int i = 0, len = FactoryFinderTestCase2.FACTORIES.length; i < len; i++) {
+            System.getProperties().remove(FactoryFinderTestCase2.FACTORIES[i][0]);
+        }
+    }
+
+    // ------------------------------------------------- Individual Test Methods
+    /**
+     * <p>
+     * In the absence of webapp faces-config.xml and META-INF/services, verify
+     * that the overrides specified in the implementation faces-config.xml take
+     * precedence.</p>
+     * @throws java.lang.Exception
+     */
+    public void testJSFImplCase() throws Exception {
+        Object factory = null;
+        Class clazz = null;
+
+        FactoryFinder.releaseFactories();
+        int len, i = 0;
+
+	// this testcase only simulates the "faces implementation
+        // specific" part
+        for (i = 0, len = FactoryFinderTestCase2.FACTORIES.length; i < len; i++) {
+            FactoryFinder.setFactory(FactoryFinderTestCase2.FACTORIES[i][0],
+                    FactoryFinderTestCase2.FACTORIES[i][1]);
+        }
+
+        for (i = 0, len = FactoryFinderTestCase2.FACTORIES.length; i < len; i++) {
+            clazz = Class.forName(FactoryFinderTestCase2.FACTORIES[i][0]);
+            factory = FactoryFinder.getFactory(FactoryFinderTestCase2.FACTORIES[i][0]);
+            assertTrue("Factory for " + clazz.getName()
+                    + " not of expected type.",
+                    clazz.isAssignableFrom(factory.getClass()));
+            clazz = Class.forName(FactoryFinderTestCase2.FACTORIES[i][1]);
+            assertTrue("Factory " + FactoryFinderTestCase2.FACTORIES[i][1] + " not of expected type",
+                    clazz.isAssignableFrom(factory.getClass()));
+        }
+    }
+}
diff --git a/test/unit/src/test/java/javax/faces/application/StateManagerTestCase.java b/test/unit/src/test/java/javax/faces/application/StateManagerTestCase.java
new file mode 100644
index 0000000..33a47ff
--- /dev/null
+++ b/test/unit/src/test/java/javax/faces/application/StateManagerTestCase.java
@@ -0,0 +1,105 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package javax.faces.application;
+
+import com.sun.faces.junit.JUnitFacesTestCaseBase;
+import javax.faces.component.*;
+import com.sun.faces.mock.*;
+import javax.faces.context.FacesContext;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import javax.faces.FactoryFinder;
+import javax.faces.render.RenderKit;
+import javax.faces.render.RenderKitFactory;
+
+/**
+ * <p>
+ * Base unit tests for all {@link UIComponent} implementation classes.</p>
+ */
+public class StateManagerTestCase extends JUnitFacesTestCaseBase {
+
+    // ------------------------------------------------------------ Constructors
+    // Construct a new instance of this test case.
+    public StateManagerTestCase(String name) {
+        super(name);
+    }
+
+    // ---------------------------------------------------- Overall Test Methods
+    // Set up instance variables required by this test case.
+    @Override
+    public void setUp() throws Exception {
+        super.setUp();
+
+        UIViewRoot root = facesContext.getApplication().getViewHandler().createView(facesContext, null);
+        root.setViewId("/viewId");
+        facesContext.setViewRoot(root);
+        RenderKitFactory renderKitFactory = (RenderKitFactory) FactoryFinder.getFactory(FactoryFinder.RENDER_KIT_FACTORY);
+        RenderKit renderKit = new MockRenderKit();
+        try {
+            renderKitFactory.addRenderKit(RenderKitFactory.HTML_BASIC_RENDER_KIT,
+                    renderKit);
+        } catch (IllegalArgumentException e) {
+
+        }
+
+    }
+
+    // Return the tests included in this test case.
+    public static Test suite() {
+
+        return (new TestSuite(StateManagerTestCase.class));
+
+    }
+
+    // ------------------------------------------------- Individual Test Methods
+    public void testNoStackOverflowOnNonOverriddenStateManagerMethods() throws Exception {
+        StateManager override = new StateManager() {
+
+            @Override
+            public UIViewRoot restoreView(FacesContext context, String viewId, String renderKitId) {
+                throw new UnsupportedOperationException("Not supported yet.");
+            }
+
+        };
+
+        override.saveView(facesContext);
+        override.saveSerializedView(facesContext);
+    }
+}
diff --git a/test/unit/src/test/java/javax/faces/component/ActionListenerTestImpl.java b/test/unit/src/test/java/javax/faces/component/ActionListenerTestImpl.java
new file mode 100644
index 0000000..84c09cc
--- /dev/null
+++ b/test/unit/src/test/java/javax/faces/component/ActionListenerTestImpl.java
@@ -0,0 +1,128 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package javax.faces.component;
+
+import javax.faces.context.FacesContext;
+import javax.faces.event.ActionEvent;
+import javax.faces.event.ActionListener;
+
+/**
+ * <p>
+ * Test {@link ActionListener} implementation.</p>
+ */
+public class ActionListenerTestImpl implements ActionListener, StateHolder {
+
+    public ActionListenerTestImpl() {
+    }
+
+    public ActionListenerTestImpl(String id) {
+        this.id = id;
+    }
+
+    private String id = null;
+
+    // ----------------------------------------------------------- Pubic Methods
+    public String getId() {
+        return (this.id);
+    }
+
+    @Override
+    public void processAction(ActionEvent event) {
+        trace(getId() + "@" + event.getPhaseId().toString());
+    }
+
+    @Override
+    public boolean equals(Object otherObj) {
+        if (!(otherObj instanceof ActionListenerTestImpl)) {
+            return false;
+        }
+        ActionListenerTestImpl other = (ActionListenerTestImpl) otherObj;
+        if ((null != id && null == other.id)
+                || (null == id && null != other.id)) {
+            return false;
+        }
+        boolean idsAreEqual = true;
+        if (null != id) {
+            idsAreEqual = id.equals(other.id);
+        }
+        return idsAreEqual;
+    }
+
+    // ---------------------------------------------------- Static Trace Methods
+    // Accumulated trace log
+    private static StringBuffer trace = new StringBuffer();
+
+    // Append to the current trace log (or clear if null)
+    public static void trace(String text) {
+        if (text == null) {
+            trace.setLength(0);
+        } else {
+            trace.append('/');
+            trace.append(text);
+        }
+    }
+
+    // Retrieve the current trace log
+    public static String trace() {
+        return (trace.toString());
+    }
+
+    //
+    // methods from StateHolder
+    //
+    @Override
+    public Object saveState(FacesContext context) {
+        return id;
+    }
+
+    @Override
+    public void restoreState(FacesContext context, Object state) {
+        id = (String) state;
+    }
+
+    @Override
+    public boolean isTransient() {
+        return false;
+    }
+
+    @Override
+    public void setTransient(boolean newT) {
+    }
+}
diff --git a/test/unit/src/test/java/javax/faces/component/CommandActionListenerTestImpl.java b/test/unit/src/test/java/javax/faces/component/CommandActionListenerTestImpl.java
new file mode 100644
index 0000000..e405ffb
--- /dev/null
+++ b/test/unit/src/test/java/javax/faces/component/CommandActionListenerTestImpl.java
@@ -0,0 +1,80 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package javax.faces.component;
+
+import javax.faces.event.ActionEvent;
+import javax.faces.event.ActionListener;
+
+/**
+ * <p>
+ * Test implementation of {@link ActionListener}.</p>
+ */
+public class CommandActionListenerTestImpl implements ActionListener {
+
+    protected String actionListenerId = null;
+
+    public CommandActionListenerTestImpl(String actionListenerId) {
+        this.actionListenerId = actionListenerId;
+    }
+
+    @Override
+    public void processAction(ActionEvent event) {
+        trace(actionListenerId);
+    }
+
+    // ---------------------------------------------------- Static Trace Methods
+    // Accumulated trace log
+    private static StringBuffer trace = new StringBuffer();
+
+    // Append to the current trace log (or clear if null)
+    public static void trace(String text) {
+        if (text == null) {
+            trace.setLength(0);
+        } else {
+            trace.append('/');
+            trace.append(text);
+        }
+    }
+
+    // Retrieve the current trace log
+    public static String trace() {
+        return (trace.toString());
+    }
+}
diff --git a/test/unit/src/test/java/javax/faces/component/CommandTestImpl.java b/test/unit/src/test/java/javax/faces/component/CommandTestImpl.java
new file mode 100644
index 0000000..13962a8
--- /dev/null
+++ b/test/unit/src/test/java/javax/faces/component/CommandTestImpl.java
@@ -0,0 +1,55 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package javax.faces.component;
+
+/**
+ * <p>
+ * Test {@link UICommand} subclass.</p>
+ */
+public class CommandTestImpl extends UICommand {
+
+    public CommandTestImpl() {
+        super();
+    }
+
+    public CommandTestImpl(String id) {
+        setId(id);
+    }
+}
diff --git a/test/unit/src/test/java/javax/faces/component/ComponentTestImpl.java b/test/unit/src/test/java/javax/faces/component/ComponentTestImpl.java
new file mode 100644
index 0000000..6b05c42
--- /dev/null
+++ b/test/unit/src/test/java/javax/faces/component/ComponentTestImpl.java
@@ -0,0 +1,143 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package javax.faces.component;
+
+import java.io.IOException;
+import javax.faces.context.FacesContext;
+
+/**
+ * <p>
+ * Test <code>UIComponent</code> for unit tests.</p>
+ */
+public class ComponentTestImpl extends UIComponentBase {
+
+    public ComponentTestImpl() {
+        this("test");
+    }
+
+    public ComponentTestImpl(String componentId) {
+        super();
+        setId(componentId);
+    }
+
+    public String getComponentType() {
+        return ("TestComponent");
+    }
+
+    @Override
+    public String getFamily() {
+        return ("Test");
+    }
+
+    // -------------------------------------------------- Trace-Enabled Methods
+    @Override
+    public void decode(FacesContext context) {
+        trace("d-" + getId());
+        super.decode(context);
+    }
+
+    @Override
+    public void encodeBegin(FacesContext context) throws IOException {
+        trace("eB-" + getId());
+        super.encodeBegin(context);
+    }
+
+    @Override
+    public void encodeChildren(FacesContext context) throws IOException {
+        trace("eC-" + getId());
+        super.encodeChildren(context);
+    }
+
+    @Override
+    public void encodeEnd(FacesContext context) throws IOException {
+        trace("eE-" + getId());
+        super.encodeEnd(context);
+    }
+
+    public void updateModel(FacesContext context) {
+        trace("u-" + getId());
+        //        super.updateModel(context);
+    }
+
+    @Override
+    public void processDecodes(FacesContext context) {
+        trace("pD-" + getId());
+        super.processDecodes(context);
+    }
+
+    @Override
+    public void processValidators(FacesContext context) {
+        trace("pV-" + getId());
+        super.processValidators(context);
+    }
+
+    @Override
+    public void processUpdates(FacesContext context) {
+        trace("pU-" + getId());
+        super.processUpdates(context);
+    }
+
+    public void callPushComponent(FacesContext context) {
+        pushComponentToEL(context, null);
+    }
+
+    public void callPopComponent(FacesContext context) {
+        popComponentFromEL(context);
+    }
+
+    // --------------------------------------------------- Static Trace Methods
+    // Accumulated trace log
+    private static StringBuffer trace = new StringBuffer();
+
+    // Append to the current trace log (or clear if null)
+    public static void trace(String text) {
+        if (text == null) {
+            trace.setLength(0);
+        } else {
+            trace.append('/');
+            trace.append(text);
+        }
+    }
+
+    // Retrieve the current trace log
+    public static String trace() {
+        return (trace.toString());
+    }
+}
diff --git a/test/unit/src/test/java/javax/faces/component/DataBeanTestImpl.java b/test/unit/src/test/java/javax/faces/component/DataBeanTestImpl.java
new file mode 100644
index 0000000..b568eb7
--- /dev/null
+++ b/test/unit/src/test/java/javax/faces/component/DataBeanTestImpl.java
@@ -0,0 +1,76 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package javax.faces.component;
+
+import java.io.Serializable;
+
+// Test JavaBean for DataModel Tests
+public class DataBeanTestImpl implements Serializable {
+
+    private String command;
+
+    public String getCommand() {
+        return (this.command);
+    }
+
+    public void setCommand(String command) {
+        this.command = command;
+    }
+
+    private String input;
+
+    public String getInput() {
+        return (this.input);
+    }
+
+    public void setInput(String input) {
+        this.input = input;
+    }
+
+    private String output;
+
+    public String getOutput() {
+        return (this.output);
+    }
+
+    public void setOutput(String output) {
+        this.output = output;
+    }
+}
diff --git a/test/unit/src/test/java/javax/faces/component/EventTestImpl.java b/test/unit/src/test/java/javax/faces/component/EventTestImpl.java
new file mode 100644
index 0000000..220d68f
--- /dev/null
+++ b/test/unit/src/test/java/javax/faces/component/EventTestImpl.java
@@ -0,0 +1,71 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package javax.faces.component;
+
+import javax.faces.event.FacesEvent;
+import javax.faces.event.FacesListener;
+
+public class EventTestImpl extends FacesEvent {
+
+    public EventTestImpl(UIComponent component) {
+        this(component, null);
+    }
+
+    public EventTestImpl(UIComponent component, String id) {
+        super(component);
+        this.id = id;
+    }
+
+    private String id;
+
+    public String getId() {
+        return (this.id);
+    }
+
+    @Override
+    public boolean isAppropriateListener(FacesListener listener) {
+        return (listener instanceof ListenerTestImpl);
+    }
+
+    @Override
+    public void processListener(FacesListener listener) {
+        ((ListenerTestImpl) listener).processTest(this);
+    }
+}
diff --git a/test/unit/src/test/java/javax/faces/component/InputTestImpl.java b/test/unit/src/test/java/javax/faces/component/InputTestImpl.java
new file mode 100644
index 0000000..cfa49c0
--- /dev/null
+++ b/test/unit/src/test/java/javax/faces/component/InputTestImpl.java
@@ -0,0 +1,59 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package javax.faces.component;
+
+/**
+ * <p>Test {@link UIInput} subclass.</p>
+ */
+public class InputTestImpl extends UIInput {
+
+    public InputTestImpl() {
+        super();
+    }
+
+    public InputTestImpl(String id) {
+        setId(id);
+    }
+
+    @Override
+    public boolean compareValues(Object previous, Object value) {
+        return (super.compareValues(previous, value));
+    }
+}
diff --git a/test/unit/src/test/java/javax/faces/component/InputValidatorTestImpl.java b/test/unit/src/test/java/javax/faces/component/InputValidatorTestImpl.java
new file mode 100644
index 0000000..4a29a7d
--- /dev/null
+++ b/test/unit/src/test/java/javax/faces/component/InputValidatorTestImpl.java
@@ -0,0 +1,80 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package javax.faces.component;
+
+import javax.faces.context.FacesContext;
+import javax.faces.validator.Validator;
+
+/**
+ * <p>
+ * Test implementation of {@link Validator}.</p>
+ */
+public class InputValidatorTestImpl implements Validator {
+
+    protected String validatorId = null;
+
+    public InputValidatorTestImpl(String validatorId) {
+        this.validatorId = validatorId;
+    }
+
+    @Override
+    public void validate(FacesContext context, UIComponent component, Object value) {
+        trace(validatorId);
+    }
+
+    // ---------------------------------------------------- Static Trace Methods
+    // Accumulated trace log
+    private static StringBuffer trace = new StringBuffer();
+
+    // Append to the current trace log (or clear if null)
+    public static void trace(String text) {
+        if (text == null) {
+            trace.setLength(0);
+        } else {
+            trace.append('/');
+            trace.append(text);
+        }
+    }
+
+    // Retrieve the current trace log
+    public static String trace() {
+        return (trace.toString());
+    }
+}
diff --git a/test/unit/src/test/java/javax/faces/component/InputValueChangeListenerTestImpl.java b/test/unit/src/test/java/javax/faces/component/InputValueChangeListenerTestImpl.java
new file mode 100644
index 0000000..870c9ea
--- /dev/null
+++ b/test/unit/src/test/java/javax/faces/component/InputValueChangeListenerTestImpl.java
@@ -0,0 +1,80 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package javax.faces.component;
+
+import javax.faces.event.ValueChangeEvent;
+import javax.faces.event.ValueChangeListener;
+
+/**
+ * <p>
+ * Test implementation of {@link ValueChangeListener}.</p>
+ */
+public class InputValueChangeListenerTestImpl implements ValueChangeListener {
+
+    protected String valueChangeListenerId = null;
+
+    public InputValueChangeListenerTestImpl(String valueChangeListenerId) {
+        this.valueChangeListenerId = valueChangeListenerId;
+    }
+
+    @Override
+    public void processValueChange(ValueChangeEvent event) {
+        trace(valueChangeListenerId);
+    }
+
+    // ---------------------------------------------------- Static Trace Methods
+    // Accumulated trace log
+    private static StringBuffer trace = new StringBuffer();
+
+    // Append to the current trace log (or clear if null)
+    public static void trace(String text) {
+        if (text == null) {
+            trace.setLength(0);
+        } else {
+            trace.append('/');
+            trace.append(text);
+        }
+    }
+
+    // Retrieve the current trace log
+    public static String trace() {
+        return (trace.toString());
+    }
+}
diff --git a/test/unit/src/test/java/javax/faces/component/ListenerTestImpl.java b/test/unit/src/test/java/javax/faces/component/ListenerTestImpl.java
new file mode 100644
index 0000000..57691ce
--- /dev/null
+++ b/test/unit/src/test/java/javax/faces/component/ListenerTestImpl.java
@@ -0,0 +1,104 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package javax.faces.component;
+
+import javax.faces.event.AbortProcessingException;
+import javax.faces.event.FacesListener;
+
+public class ListenerTestImpl implements FacesListener {
+
+    public ListenerTestImpl(String id,
+            String fromId, String toId) {
+        this.id = id;
+        this.fromId = fromId; // When an event with this id is received ...
+        this.toId = toId;     // queue an additional event with this id
+    }
+
+    public ListenerTestImpl(String id) {
+        this.id = id;
+    }
+
+    public ListenerTestImpl(String id, boolean abort) {
+        this.id = id;
+        this.abort = abort;
+    }
+
+    private boolean abort = false;
+    private String fromId = null;
+    private String id = null;
+    private String toId = null;
+
+    public String getId() {
+        return (this.id);
+    }
+
+    public void processTest(EventTestImpl event) {
+        if (getId() != null) {
+            trace(getId());
+        }
+        if (event.getId() != null) {
+            trace(event.getId());
+            if (event.getId().equals(fromId)) {
+                event.getComponent().queueEvent(new EventTestImpl(event.getComponent(), toId));
+            }
+        }
+        if (abort) {
+            throw new AbortProcessingException();
+        }
+    }
+
+    // Accumulated trace log
+    private static StringBuffer trace = new StringBuffer();
+
+    // Append to the current trace log (or clear if null)
+    public static void trace(String text) {
+        if (text == null) {
+            trace.setLength(0);
+        } else {
+            trace.append('/');
+            trace.append(text);
+        }
+    }
+
+    // Retrieve the current trace log
+    public static String trace() {
+        return (trace.toString());
+    }
+}
diff --git a/test/unit/src/test/java/javax/faces/component/NamingContainerTestCase.java b/test/unit/src/test/java/javax/faces/component/NamingContainerTestCase.java
new file mode 100644
index 0000000..29dc107
--- /dev/null
+++ b/test/unit/src/test/java/javax/faces/component/NamingContainerTestCase.java
@@ -0,0 +1,543 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package javax.faces.component;
+
+import com.sun.faces.junit.JUnitFacesTestCaseBase;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import com.sun.faces.mock.MockRenderKit;
+import java.util.HashMap;
+import java.util.Map;
+import javax.faces.FactoryFinder;
+import javax.faces.render.RenderKit;
+import javax.faces.render.RenderKitFactory;
+import static junit.framework.Assert.assertNull;
+import static junit.framework.Assert.assertTrue;
+import static junit.framework.Assert.fail;
+
+/**
+ * <p>
+ * Unit tests for the {@link NamingContainer} functionality of all the standard
+ * component classes.</p>
+ */
+public class NamingContainerTestCase extends JUnitFacesTestCaseBase {
+
+    // ------------------------------------------------------ Instance Variables
+    // The root of the component tree to be tested
+    private UIViewRoot root = null;
+
+    // ------------------------------------------------------------ Constructors
+    // Construct a new instance of this test case.
+    public NamingContainerTestCase(String name) {
+        super(name);
+    }
+
+    // ---------------------------------------------------- Overall Test Methods
+    // Set up instance variables required by this test case.
+    @Override
+    public void setUp() throws Exception {
+        super.setUp();
+
+        root = new UIViewRoot();
+
+        root.setViewId("/viewId");
+        root.setRenderKitId(RenderKitFactory.HTML_BASIC_RENDER_KIT);
+        facesContext.setViewRoot(root);
+        RenderKitFactory renderKitFactory = (RenderKitFactory) FactoryFinder.getFactory(FactoryFinder.RENDER_KIT_FACTORY);
+        RenderKit renderKit = new MockRenderKit();
+        try {
+            renderKitFactory.addRenderKit(RenderKitFactory.HTML_BASIC_RENDER_KIT,
+                    renderKit);
+        } catch (IllegalArgumentException e) {
+        }
+        Map map = new HashMap();
+        externalContext.setRequestParameterMap(map);
+
+    }
+
+    // Return the tests included in this test case.
+    public static Test suite() {
+
+        return (new TestSuite(NamingContainerTestCase.class));
+
+    }
+
+    // Tear down instance variables required by this test case.
+    @Override
+    public void tearDown() throws Exception {
+
+        root = null;
+        super.tearDown();
+    }
+
+    // ------------------------------------------------- Individual Test Methods
+    // Test nested NamingContainer callbacks
+    public void testNested() {
+
+        NamingContainerTestImpl a = new NamingContainerTestImpl();
+        a.setId("a");
+        NamingContainerTestImpl b = new NamingContainerTestImpl();
+        b.setId("b");
+        NamingContainerTestImpl d = new NamingContainerTestImpl();
+        d.setId("d");
+        UIPanel e = new UIPanel();
+        e.setId("e");
+        UIPanel g = new UIPanel();
+        g.setId("g");
+        a.getChildren().add(b);
+        b.getChildren().add(d);
+        b.getChildren().add(g);
+        d.getChildren().add(e);
+
+        NamingContainerTestImpl.trace(null);
+        assertTrue(a == a.findComponent("a"));
+
+        NamingContainerTestImpl.trace(null);
+        assertTrue(a == a.findComponent(":a"));
+
+        NamingContainerTestImpl.trace(null);
+        assertTrue(b == a.findComponent("b"));
+
+        NamingContainerTestImpl.trace(null);
+        assertTrue(b == a.findComponent(":b"));
+
+        NamingContainerTestImpl.trace(null);
+        assertTrue(d == a.findComponent("b:d"));
+
+        NamingContainerTestImpl.trace(null);
+        assertTrue(d == a.findComponent(":b:d"));
+
+        NamingContainerTestImpl.trace(null);
+        assertTrue(e == a.findComponent("b:d:e"));
+
+        NamingContainerTestImpl.trace(null);
+        assertTrue(e == a.findComponent(":b:d:e"));
+
+        NamingContainerTestImpl.trace(null);
+        assertTrue(g == a.findComponent("b:g"));
+
+        NamingContainerTestImpl.trace(null);
+        assertTrue(g == a.findComponent(":b:g"));
+
+    }
+
+    // Test nested NamingContainer callbacks
+    public void testNested2() {
+
+        NamingContainerTestImpl a = new NamingContainerTestImpl();
+        a.setId("a");
+        NamingContainerTestImpl b = new NamingContainerTestImpl();
+        b.setId("b");
+        NamingContainerTestImpl d = new NamingContainerTestImpl();
+        d.setId("b");
+        UIPanel e = new UIPanel();
+        e.setId("e");
+        UIPanel g = new UIPanel();
+        g.setId("g");
+        a.getChildren().add(b);
+        b.getChildren().add(d);
+        b.getChildren().add(g);
+        d.getChildren().add(e);
+
+        NamingContainerTestImpl.trace(null);
+        assertTrue(a == a.findComponent("a"));
+
+        NamingContainerTestImpl.trace(null);
+        assertTrue(a == a.findComponent(":a"));
+
+        NamingContainerTestImpl.trace(null);
+        assertTrue(b == a.findComponent("b"));
+
+        NamingContainerTestImpl.trace(null);
+        assertTrue(b == a.findComponent(":b"));
+
+        NamingContainerTestImpl.trace(null);
+        assertTrue(d == a.findComponent("b:b"));
+
+        NamingContainerTestImpl.trace(null);
+        assertTrue(d == a.findComponent(":b:b"));
+
+        NamingContainerTestImpl.trace(null);
+        assertTrue(e == a.findComponent("b:b:e"));
+
+        NamingContainerTestImpl.trace(null);
+        assertTrue(e == a.findComponent(":b:b:e"));
+
+        NamingContainerTestImpl.trace(null);
+        assertTrue(g == a.findComponent("b:g"));
+
+        NamingContainerTestImpl.trace(null);
+        assertTrue(g == a.findComponent(":b:g"));
+
+    }
+
+    // Test standard NamingContainer functionality
+    public void testStandard() {
+
+        // Set up a component hierarchy as follows (component ids in quotes):
+        // "a" - UIViewRoot at head of hierarchy
+        // "a" has children "b" and "c"
+        // "b" has children "d" and "g"
+        // "d" has children "e" and "f"
+        // "c" has children "h" and "i"
+        // Components "b" and "d" implement NamingContainer
+        UIViewRoot a = (UIViewRoot) root;
+        a.setId("a");
+        UIForm b = new UIForm();
+        b.setId("b");
+        UIPanel c = new UIPanel();
+        c.setId("c");
+        UINamingContainer d = new UINamingContainer();
+        d.setId("d");
+        UIPanel e = new UIPanel();
+        e.setId("e");
+        UIPanel f = new UIPanel();
+        f.setId("f");
+        UIPanel g = new UIPanel();
+        g.setId("g");
+        UIPanel h = new UIPanel();
+        h.setId("h");
+        UIPanel i = new UIPanel();
+        i.setId("i");
+        a.getChildren().add(b);
+        a.getChildren().add(c);
+        b.getChildren().add(d);
+        b.getChildren().add(g);
+        c.getChildren().add(h);
+        c.getChildren().add(i);
+        d.getChildren().add(e);
+        d.getChildren().add(f);
+
+        // Positive relative searches from "a"
+        assertTrue(a == a.findComponent("a"));
+        assertTrue(b == a.findComponent("b"));
+        assertTrue(c == a.findComponent("c"));
+        assertTrue(d == a.findComponent("b:d"));
+        assertTrue(e == a.findComponent("b:d:e"));
+        assertTrue(f == a.findComponent("b:d:f"));
+        assertTrue(g == a.findComponent("b:g"));
+        assertTrue(h == a.findComponent("h"));
+        assertTrue(i == a.findComponent("i"));
+
+        // Negative relative searches from "a"
+        assertNull(a.findComponent("d"));
+        assertNull(a.findComponent("e"));
+        assertNull(a.findComponent("f"));
+        assertNull(a.findComponent("g"));
+
+        // Positive relative searches from "b"
+        assertTrue(b == b.findComponent("b"));
+        assertTrue(d == b.findComponent("d"));
+        assertTrue(e == b.findComponent("d:e"));
+        assertTrue(f == b.findComponent("d:f"));
+        assertTrue(g == b.findComponent("g"));
+
+        // Negative relative searches from "b"
+        assertNull(b.findComponent("a"));
+        assertNull(b.findComponent("c"));
+        assertNull(b.findComponent("e"));
+        assertNull(b.findComponent("f"));
+        assertNull(b.findComponent("h"));
+        assertNull(b.findComponent("i"));
+
+        // Positive relative searches from "c"
+        assertTrue(a == c.findComponent("a"));
+        assertTrue(b == c.findComponent("b"));
+        assertTrue(c == c.findComponent("c"));
+        assertTrue(d == c.findComponent("b:d"));
+        assertTrue(e == c.findComponent("b:d:e"));
+        assertTrue(f == c.findComponent("b:d:f"));
+        assertTrue(g == c.findComponent("b:g"));
+        assertTrue(h == c.findComponent("h"));
+        assertTrue(i == c.findComponent("i"));
+
+        // Negative relative searches from "c"
+        assertNull(c.findComponent("d"));
+        assertNull(c.findComponent("e"));
+        assertNull(c.findComponent("f"));
+        assertNull(c.findComponent("g"));
+
+        // Positive relative searches from "d"
+        assertTrue(d == d.findComponent("d"));
+        assertTrue(e == d.findComponent("e"));
+        assertTrue(f == d.findComponent("f"));
+
+        // Negative relative searches from "d"
+        assertNull(d.findComponent("a"));
+        assertNull(d.findComponent("b"));
+        assertNull(d.findComponent("c"));
+        assertNull(d.findComponent("g"));
+        assertNull(d.findComponent("h"));
+        assertNull(d.findComponent("i"));
+
+        // Positive relative searches from "e"
+        assertTrue(d == e.findComponent("d"));
+        assertTrue(e == e.findComponent("e"));
+        assertTrue(f == e.findComponent("f"));
+
+        // Negative relative searches from "e"
+        assertNull(e.findComponent("a"));
+        assertNull(e.findComponent("b"));
+        assertNull(e.findComponent("c"));
+        assertNull(e.findComponent("g"));
+        assertNull(e.findComponent("h"));
+        assertNull(e.findComponent("i"));
+
+        // Positive relative searches from "f"
+        assertTrue(d == f.findComponent("d"));
+        assertTrue(e == f.findComponent("e"));
+        assertTrue(f == f.findComponent("f"));
+
+        // Negative relative searches from "f"
+        assertNull(f.findComponent("a"));
+        assertNull(f.findComponent("b"));
+        assertNull(f.findComponent("c"));
+        assertNull(f.findComponent("g"));
+        assertNull(f.findComponent("h"));
+        assertNull(f.findComponent("i"));
+
+        // Positive relative searches from "g"
+        assertTrue(b == g.findComponent("b"));
+        assertTrue(d == g.findComponent("d"));
+        assertTrue(e == g.findComponent("d:e"));
+        assertTrue(f == g.findComponent("d:f"));
+        assertTrue(g == g.findComponent("g"));
+
+        // Negative relative searches from "g"
+        assertNull(g.findComponent("a"));
+        assertNull(g.findComponent("c"));
+        assertNull(g.findComponent("e"));
+        assertNull(g.findComponent("f"));
+        assertNull(g.findComponent("h"));
+        assertNull(g.findComponent("i"));
+
+        // Positive relative searches from "h"
+        assertTrue(a == h.findComponent("a"));
+        assertTrue(b == h.findComponent("b"));
+        assertTrue(c == h.findComponent("c"));
+        assertTrue(d == h.findComponent("b:d"));
+        assertTrue(e == h.findComponent("b:d:e"));
+        assertTrue(f == h.findComponent("b:d:f"));
+        assertTrue(g == h.findComponent("b:g"));
+        assertTrue(h == h.findComponent("h"));
+        assertTrue(i == h.findComponent("i"));
+
+        // Negative relative searches from "h"
+        assertNull(h.findComponent("d"));
+        assertNull(h.findComponent("e"));
+        assertNull(h.findComponent("f"));
+        assertNull(h.findComponent("g"));
+
+        // Positive relative searches from "i"
+        assertTrue(a == i.findComponent("a"));
+        assertTrue(b == i.findComponent("b"));
+        assertTrue(c == i.findComponent("c"));
+        assertTrue(d == i.findComponent("b:d"));
+        assertTrue(e == i.findComponent("b:d:e"));
+        assertTrue(f == i.findComponent("b:d:f"));
+        assertTrue(g == i.findComponent("b:g"));
+        assertTrue(h == i.findComponent("h"));
+        assertTrue(i == i.findComponent("i"));
+
+        // Negative relative searches from "i"
+        assertNull(i.findComponent("d"));
+        assertNull(i.findComponent("e"));
+        assertNull(i.findComponent("f"));
+        assertNull(i.findComponent("g"));
+
+        // Absolute searches from "a"
+        assertTrue(a == a.findComponent(":a"));
+        assertTrue(b == a.findComponent(":b"));
+        assertTrue(c == a.findComponent(":c"));
+        assertTrue(d == a.findComponent(":b:d"));
+        assertTrue(e == a.findComponent(":b:d:e"));
+        assertTrue(f == a.findComponent(":b:d:f"));
+        assertTrue(g == a.findComponent(":b:g"));
+        assertTrue(h == a.findComponent(":h"));
+        assertTrue(i == a.findComponent(":i"));
+
+        // Absolute searches from "b"
+        assertTrue(a == b.findComponent(":a"));
+        assertTrue(b == b.findComponent(":b"));
+        assertTrue(c == b.findComponent(":c"));
+        assertTrue(d == b.findComponent(":b:d"));
+        assertTrue(e == b.findComponent(":b:d:e"));
+        assertTrue(f == b.findComponent(":b:d:f"));
+        assertTrue(g == b.findComponent(":b:g"));
+        assertTrue(h == b.findComponent(":h"));
+        assertTrue(i == b.findComponent(":i"));
+
+        // Absolute searches from "c"
+        assertTrue(a == c.findComponent(":a"));
+        assertTrue(b == c.findComponent(":b"));
+        assertTrue(c == c.findComponent(":c"));
+        assertTrue(d == c.findComponent(":b:d"));
+        assertTrue(e == c.findComponent(":b:d:e"));
+        assertTrue(f == c.findComponent(":b:d:f"));
+        assertTrue(g == c.findComponent(":b:g"));
+        assertTrue(h == c.findComponent(":h"));
+        assertTrue(i == c.findComponent(":i"));
+
+        // Absolute searches from "d"
+        assertTrue(a == d.findComponent(":a"));
+        assertTrue(b == d.findComponent(":b"));
+        assertTrue(c == d.findComponent(":c"));
+        assertTrue(d == d.findComponent(":b:d"));
+        assertTrue(e == d.findComponent(":b:d:e"));
+        assertTrue(f == d.findComponent(":b:d:f"));
+        assertTrue(g == d.findComponent(":b:g"));
+        assertTrue(h == d.findComponent(":h"));
+        assertTrue(i == d.findComponent(":i"));
+
+        // Absolute searches from "e"
+        assertTrue(a == e.findComponent(":a"));
+        assertTrue(b == e.findComponent(":b"));
+        assertTrue(c == e.findComponent(":c"));
+        assertTrue(d == e.findComponent(":b:d"));
+        assertTrue(e == e.findComponent(":b:d:e"));
+        assertTrue(f == e.findComponent(":b:d:f"));
+        assertTrue(g == e.findComponent(":b:g"));
+        assertTrue(h == e.findComponent(":h"));
+        assertTrue(i == e.findComponent(":i"));
+
+        // Absolute searches from "f"
+        assertTrue(a == f.findComponent(":a"));
+        assertTrue(b == f.findComponent(":b"));
+        assertTrue(c == f.findComponent(":c"));
+        assertTrue(d == f.findComponent(":b:d"));
+        assertTrue(e == f.findComponent(":b:d:e"));
+        assertTrue(f == f.findComponent(":b:d:f"));
+        assertTrue(g == f.findComponent(":b:g"));
+        assertTrue(h == f.findComponent(":h"));
+        assertTrue(i == f.findComponent(":i"));
+
+        // Absolute searches from "g"
+        assertTrue(a == g.findComponent(":a"));
+        assertTrue(b == g.findComponent(":b"));
+        assertTrue(c == g.findComponent(":c"));
+        assertTrue(d == g.findComponent(":b:d"));
+        assertTrue(e == g.findComponent(":b:d:e"));
+        assertTrue(f == g.findComponent(":b:d:f"));
+        assertTrue(g == g.findComponent(":b:g"));
+        assertTrue(h == g.findComponent(":h"));
+        assertTrue(i == g.findComponent(":i"));
+
+        // Absolute searches from "h"
+        assertTrue(a == h.findComponent(":a"));
+        assertTrue(b == h.findComponent(":b"));
+        assertTrue(c == h.findComponent(":c"));
+        assertTrue(d == h.findComponent(":b:d"));
+        assertTrue(e == h.findComponent(":b:d:e"));
+        assertTrue(f == h.findComponent(":b:d:f"));
+        assertTrue(g == h.findComponent(":b:g"));
+        assertTrue(h == h.findComponent(":h"));
+        assertTrue(i == h.findComponent(":i"));
+
+        // Absolute searches from "i"
+        assertTrue(a == i.findComponent(":a"));
+        assertTrue(b == i.findComponent(":b"));
+        assertTrue(c == i.findComponent(":c"));
+        assertTrue(d == i.findComponent(":b:d"));
+        assertTrue(e == i.findComponent(":b:d:e"));
+        assertTrue(f == i.findComponent(":b:d:f"));
+        assertTrue(g == i.findComponent(":b:g"));
+        assertTrue(h == i.findComponent(":h"));
+        assertTrue(i == i.findComponent(":i"));
+
+        // Cases that should throw exceptions
+        try {
+            a.findComponent(null);
+            fail("Should have thrown NullPointerException");
+        } catch (NullPointerException ex) {
+            // Expected result
+        }
+        try {
+            a.findComponent("a:c:h");
+            fail("Should have thrown IllegalArgumentException");
+        } catch (IllegalArgumentException ex) {
+            // Expected result
+        }
+        try {
+            a.findComponent("a:c:i");
+            fail("Should have thrown IllegalArgumentException");
+        } catch (IllegalArgumentException ex) {
+            // Expected result
+        }
+        try {
+            a.findComponent(":a:c:h");
+            fail("Should have thrown IllegalArgumentException");
+        } catch (IllegalArgumentException ex) {
+            // Expected result
+        }
+        try {
+            a.findComponent(":a:c:i");
+            fail("Should have thrown IllegalArgumentException");
+        } catch (IllegalArgumentException ex) {
+            // Expected result
+        }
+        try {
+            a.findComponent("c:h");
+            fail("Should have thrown IllegalArgumentException");
+        } catch (IllegalArgumentException ex) {
+            // Expected result
+        }
+        try {
+            a.findComponent("c:i");
+            fail("Should have thrown IllegalArgumentException");
+        } catch (IllegalArgumentException ex) {
+            // Expected result
+        }
+        try {
+            a.findComponent(":c:h");
+            fail("Should have thrown IllegalArgumentException");
+        } catch (IllegalArgumentException ex) {
+            // Expected result
+        }
+        try {
+            a.findComponent(":c:i");
+            fail("Should have thrown IllegalArgumentException");
+        } catch (IllegalArgumentException ex) {
+            // Expected result
+        }
+
+    }
+
+    // --------------------------------------------------------- Support Methods
+}
diff --git a/test/unit/src/test/java/javax/faces/component/NamingContainerTestImpl.java b/test/unit/src/test/java/javax/faces/component/NamingContainerTestImpl.java
new file mode 100644
index 0000000..35f63fd
--- /dev/null
+++ b/test/unit/src/test/java/javax/faces/component/NamingContainerTestImpl.java
@@ -0,0 +1,80 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package javax.faces.component;
+
+/**
+ * <p>
+ * Test {@link NamingContainer} implementation with tracing.</p>
+ */
+public class NamingContainerTestImpl extends UINamingContainer {
+
+    // ------------------------------------------------------------ Constructors
+    public NamingContainerTestImpl() {
+    }
+
+    // ---------------------------------------------------------- Public Methods
+    @Override
+    public UIComponent findComponent(String expr) {
+
+        trace(getId());
+        trace(expr);
+        return (super.findComponent(expr));
+
+    }
+
+    // ---------------------------------------------------- Static Trace Methods
+    // Accumulated trace log
+    private static StringBuffer trace = new StringBuffer();
+
+    // Append to the current trace log (or clear if null)
+    public static void trace(String text) {
+        if (text == null) {
+            trace.setLength(0);
+        } else {
+            trace.append('/');
+            trace.append(text);
+        }
+    }
+
+    // Retrieve the current trace log
+    public static String trace() {
+        return (trace.toString());
+    }
+}
diff --git a/test/unit/src/test/java/javax/faces/component/SelectManyTestImpl.java b/test/unit/src/test/java/javax/faces/component/SelectManyTestImpl.java
new file mode 100644
index 0000000..bc7054a
--- /dev/null
+++ b/test/unit/src/test/java/javax/faces/component/SelectManyTestImpl.java
@@ -0,0 +1,52 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package javax.faces.component;
+
+/**
+ * <p>
+ * Test {@link UISelectMany} subclass.</p>
+ */
+public class SelectManyTestImpl extends UISelectMany {
+
+    @Override
+    public boolean compareValues(Object previous, Object value) {
+        return (super.compareValues(previous, value));
+    }
+}
diff --git a/test/unit/src/test/java/javax/faces/component/StateHolderSaverTestCase.java b/test/unit/src/test/java/javax/faces/component/StateHolderSaverTestCase.java
new file mode 100644
index 0000000..ad51916
--- /dev/null
+++ b/test/unit/src/test/java/javax/faces/component/StateHolderSaverTestCase.java
@@ -0,0 +1,117 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package javax.faces.component;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import javax.faces.convert.IntegerConverter;
+
+public class StateHolderSaverTestCase extends UIComponentBaseTestCase {
+
+    // ------------------------------------------------------ Instance Variables
+    // ------------------------------------------------------------ Constructors
+    // Construct a new instance of this test case.
+    public StateHolderSaverTestCase(String name) {
+        super(name);
+    }
+
+    // ---------------------------------------------------- Overall Test Methods
+    // Return the tests included in this test case.
+    public static Test suite() {
+        return (new TestSuite(StateHolderSaverTestCase.class));
+    }
+
+    // ------------------------------------------------- Individual Test Methods
+    @Override
+    public void testLifecycleManagement() {
+    }
+
+    @Override
+    public void testChildrenRecursive() {
+    }
+
+    @Override
+    public void testComponentReconnect() {
+    }
+
+    @Override
+    public void testComponentRemoval() {
+    }
+
+    @Override
+    public void testStateHolder() throws Exception {
+    }
+
+    @Override
+    public void testValueBindings() {
+    }
+
+    public void testImplementsStateHolder() throws Exception {
+        StateHolderSaver saver = null;
+        UIInput postSave,
+                preSave = new UIInput();
+        preSave.setId("id1");
+        preSave.setRendererType(null);
+
+        saver = new StateHolderSaver(facesContext, preSave);
+        postSave = (UIInput) saver.restore(facesContext);
+        assertEquals(postSave.getId(), preSave.getId());
+    }
+
+    public void testImplementsSerializable() throws Exception {
+        StateHolderSaver saver = null;
+        String preSave = "hello";
+        String postSave = null;
+
+        saver = new StateHolderSaver(facesContext, preSave);
+        postSave = (String) saver.restore(facesContext);
+        assertTrue(preSave.equals(postSave));
+    }
+
+    public void testImplementsNeither() throws Exception {
+        StateHolderSaver saver = null;
+        IntegerConverter preSave = new IntegerConverter(),
+                postSave = null;
+
+        saver = new StateHolderSaver(facesContext, preSave);
+        postSave = (IntegerConverter) saver.restore(facesContext);
+        assertTrue(true); // lack of ClassCastException
+    }
+}
diff --git a/test/unit/src/test/java/javax/faces/component/UIColumnTestCase.java b/test/unit/src/test/java/javax/faces/component/UIColumnTestCase.java
new file mode 100644
index 0000000..9a9facb
--- /dev/null
+++ b/test/unit/src/test/java/javax/faces/component/UIColumnTestCase.java
@@ -0,0 +1,125 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package javax.faces.component;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+/**
+ * <p>
+ * Unit tests for {@link UIColumn}.</p>
+ */
+public class UIColumnTestCase extends UIComponentBaseTestCase {
+
+    // ------------------------------------------------------------ Constructors
+    /**
+     * Construct a new instance of this test case.
+     *
+     * @param name Name of the test case
+     */
+    public UIColumnTestCase(String name) {
+        super(name);
+    }
+
+    // ---------------------------------------------------- Overall Test Methods
+    // Set up instance variables required by this test case.
+    @Override
+    public void setUp() throws Exception {
+        super.setUp();
+        component = new UIColumn();
+        expectedFamily = UIColumn.COMPONENT_FAMILY;
+        expectedId = null;
+        expectedRendererType = null;
+    }
+
+    // Return the tests included in this test case.
+    public static Test suite() {
+        return (new TestSuite(UIColumnTestCase.class));
+    }
+
+    // Tear down instance variables required by ths test case
+    @Override
+    public void tearDown() throws Exception {
+        super.tearDown();
+    }
+
+    // ------------------------------------------------- Individual Test Methods
+    // Test attribute-property transparency
+    @Override
+    public void testAttributesTransparency() {
+        super.testAttributesTransparency();
+        UIColumn column = (UIColumn) component;
+    }
+
+    // Suppress lifecycle tests since we do not have a renderer
+    @Override
+    public void testLifecycleManagement() {
+    }
+
+    // Test a pristine UIColumn instance
+    @Override
+    public void testPristine() {
+        super.testPristine();
+        UIColumn column = (UIColumn) component;
+    }
+
+    // Test setting properties to invalid values
+    @Override
+    public void testPropertiesInvalid() throws Exception {
+        super.testPropertiesInvalid();
+        UIColumn column = (UIColumn) component;
+    }
+
+    // Test setting properties to valid values
+    @Override
+    public void testPropertiesValid() throws Exception {
+        super.testPropertiesValid();
+        UIColumn column = (UIColumn) component;
+    }
+
+    // --------------------------------------------------------- Support Methods
+    // Create a pristine component of the type to be used in state holder tests
+    @Override
+    protected UIComponent createComponent() {
+        UIComponent component = new UIColumn();
+        component.setRendererType(null);
+        return (component);
+    }
+}
diff --git a/test/unit/src/test/java/javax/faces/component/UICommandTestCase.java b/test/unit/src/test/java/javax/faces/component/UICommandTestCase.java
new file mode 100644
index 0000000..6e121b0
--- /dev/null
+++ b/test/unit/src/test/java/javax/faces/component/UICommandTestCase.java
@@ -0,0 +1,539 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package javax.faces.component;
+
+import com.sun.faces.mock.MockExternalContext;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import javax.faces.FactoryFinder;
+import javax.faces.application.Application;
+import javax.faces.context.FacesContext;
+import javax.faces.el.MethodBinding;
+import javax.faces.event.ActionEvent;
+import javax.faces.event.ActionListener;
+import javax.faces.event.PhaseId;
+import javax.faces.render.RenderKit;
+import javax.faces.render.RenderKitFactory;
+import javax.faces.render.Renderer;
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+import static junit.framework.Assert.assertEquals;
+import static junit.framework.Assert.assertNotNull;
+import static junit.framework.Assert.assertNull;
+import static junit.framework.Assert.assertTrue;
+
+/**
+ * <p>
+ * Unit tests for {@link UICommand}.</p>
+ */
+public class UICommandTestCase extends UIComponentBaseTestCase {
+
+    // ------------------------------------------------------------ Constructors
+    /**
+     * Construct a new instance of this test case.
+     *
+     * @param name Name of the test case
+     */
+    public UICommandTestCase(String name) {
+        super(name);
+    }
+
+    private static Class actionListenerSignature[] = {ActionEvent.class};
+
+    // ---------------------------------------------------- Overall Test Methods
+    // Set up instance variables required by this test case.
+    @Override
+    public void setUp() throws Exception {
+        super.setUp();
+        component = new UICommand();
+        expectedFamily = UICommand.COMPONENT_FAMILY;
+        expectedId = null;
+        expectedRendererType = "javax.faces.Button";
+    }
+
+    // Return the tests included in this test case.
+    public static Test suite() {
+        return (new TestSuite(UICommandTestCase.class));
+    }
+
+    // ------------------------------------------------- Individual Test Methods
+    // Test order of action listener calls with actionListener also
+    public void PENDING_FIXME_testActionOrder() throws Exception {
+
+        RenderKitFactory renderKitFactory = (RenderKitFactory) FactoryFinder.getFactory(FactoryFinder.RENDER_KIT_FACTORY);
+        RenderKit renderKit
+                = renderKitFactory.getRenderKit(facesContext,
+                        RenderKitFactory.HTML_BASIC_RENDER_KIT);
+        renderKit.addRenderer(UICommand.COMPONENT_FAMILY,
+                "javax.faces.Button", new ButtonRenderer());
+        UIViewRoot root = facesContext.getApplication().getViewHandler().createView(facesContext, null);
+        root.getChildren().add(component);
+        UICommand command = (UICommand) component;
+        MethodBinding binding = facesContext.getApplication().
+                createMethodBinding("#{l3.processAction}",
+                        actionListenerSignature);
+        MethodBinding actionBinding = facesContext.getApplication().
+                createMethodBinding("#{l4.test}", null);
+        command.setId("command");
+        command.addActionListener(new CommandActionListenerTestImpl("l1"));
+        command.addActionListener(new CommandActionListenerTestImpl("l2"));
+        command.setActionListener(binding);
+        command.setAction(actionBinding);
+        command.setImmediate(true);
+        request.setAttribute("l3", new CommandActionListenerTestImpl("l3"));
+
+        // Override the default action listener to test ordering
+        ActionListener oldDefaultActionListener
+                = facesContext.getApplication().getActionListener();
+        facesContext.getApplication().setActionListener(
+                new CommandActionListenerTestImpl("14"));
+        Map map = new HashMap();
+        map.put(command.getClientId(facesContext), "");
+        MockExternalContext econtext
+                = (MockExternalContext) facesContext.getExternalContext();
+        econtext.setRequestParameterMap(map);
+        CommandActionListenerTestImpl.trace(null);
+        root.processDecodes(facesContext);
+        assertEquals("/l1/l2/l3/14", CommandActionListenerTestImpl.trace());
+
+        // Restore the default action listener
+        facesContext.getApplication().setActionListener(
+                oldDefaultActionListener);
+    }
+
+    // Test attribute-property transparency
+    @Override
+    public void testAttributesTransparency() {
+
+        super.testAttributesTransparency();
+        UICommand command = (UICommand) component;
+        Application app = facesContext.getApplication();
+        MethodBinding methodBinding = null;
+
+        assertEquals(command.getValue(),
+                (String) component.getAttributes().get("value"));
+        command.setValue("foo");
+        assertEquals("foo", (String) component.getAttributes().get("value"));
+        command.setValue(null);
+        assertNull((String) component.getAttributes().get("value"));
+        component.getAttributes().put("value", "bar");
+        assertEquals("bar", command.getValue());
+        component.getAttributes().put("value", null);
+        assertNull(command.getValue());
+
+        assertEquals(command.getAction(),
+                (MethodBinding) command.getAttributes().get("action"));
+        command.setAction(methodBinding
+                = app.createMethodBinding("#{foo.bar}", null));
+        assertEquals(methodBinding,
+                (MethodBinding) command.getAttributes().get("action"));
+        command.setAction(null);
+        assertNull((MethodBinding) command.getAttributes().get("action"));
+        methodBinding = app.createMethodBinding("#{bar.baz}", null);
+        command.getAttributes().put("action", methodBinding);
+        assertEquals(methodBinding, command.getAction());
+        command.getAttributes().put("action", null);
+        assertNull(command.getAction());
+
+        assertEquals(command.getActionListener(),
+                (MethodBinding) command.getAttributes().get("actionListener"));
+        methodBinding = app.createMethodBinding("#{foo.yoyo}",
+                actionListenerSignature);
+        command.setActionListener(methodBinding);
+        assertEquals(methodBinding,
+                (MethodBinding) command.getAttributes().get("actionListener"));
+        command.setActionListener(null);
+        assertNull((MethodBinding) command.getAttributes().get("actionListener"));
+        methodBinding = app.createMethodBinding("#{foo.buckaroo}",
+                actionListenerSignature);
+        command.getAttributes().put("actionListener", methodBinding);
+        assertEquals(methodBinding, command.getActionListener());
+        command.getAttributes().put("actionListener", null);
+        assertNull(command.getActionListener());
+
+    }
+
+    // Test event queuing and broadcasting (any phase listeners)
+    public void testEventsGeneric() {
+
+        UICommand command = (UICommand) component;
+        command.setRendererType(null);
+        ActionEvent event = new ActionEvent(command);
+
+        // Register three listeners
+        command.addActionListener(new ActionListenerTestImpl("AP0"));
+        command.addActionListener(new ActionListenerTestImpl("AP1"));
+        command.addActionListener(new ActionListenerTestImpl("AP2"));
+
+        // Fire events and evaluate results
+        ActionListenerTestImpl.trace(null);
+        UIViewRoot root = facesContext.getApplication().getViewHandler().createView(facesContext, null);
+        root.getChildren().add(command);
+        command.queueEvent(event);
+        root.processDecodes(facesContext);
+        root.processValidators(facesContext);
+        root.processApplication(facesContext);
+        assertEquals("/AP0 at INVOKE_APPLICATION 5/AP1 at INVOKE_APPLICATION 5/AP2 at INVOKE_APPLICATION 5",
+                ActionListenerTestImpl.trace());
+
+    }
+
+    // Test event queuing and broadcasting (mixed phase listeners)
+    public void testEventsMixed() {
+
+        UICommand command = (UICommand) component;
+        command.setRendererType(null);
+        ActionEvent event = new ActionEvent(command);
+
+        // Register three listeners
+        command.addActionListener(new ActionListenerTestImpl("ARV"));
+        command.addActionListener(new ActionListenerTestImpl("PV"));
+        command.addActionListener(new ActionListenerTestImpl("AP"));
+
+        // Fire events and evaluate results
+        ActionListenerTestImpl.trace(null);
+        UIViewRoot root = facesContext.getApplication().getViewHandler().createView(facesContext, null);
+        root.getChildren().add(command);
+        command.queueEvent(event);
+        root.processDecodes(facesContext);
+        root.processValidators(facesContext);
+        root.processApplication(facesContext);
+        assertEquals("/ARV at INVOKE_APPLICATION 5/PV at INVOKE_APPLICATION 5/AP at INVOKE_APPLICATION 5",
+                ActionListenerTestImpl.trace());
+
+    }
+
+    // Test event queuing and broadcasting (mixed phase listeners), with
+    // immediate set.
+    public void testEventsMixedImmediate() {
+
+        UICommand command = (UICommand) component;
+        command.setImmediate(true);
+        command.setRendererType(null);
+        ActionEvent event = new ActionEvent(command);
+
+        // Register three listeners
+        command.addActionListener(new ActionListenerTestImpl("ARV"));
+        command.addActionListener(new ActionListenerTestImpl("PV"));
+        command.addActionListener(new ActionListenerTestImpl("AP"));
+
+        // Fire events and evaluate results
+        ActionListenerTestImpl.trace(null);
+        UIViewRoot root = facesContext.getApplication().getViewHandler().createView(facesContext, null);
+        root.getChildren().add(command);
+        command.queueEvent(event);
+        root.processDecodes(facesContext);
+        root.processValidators(facesContext);
+        root.processApplication(facesContext);
+        assertEquals("/ARV at APPLY_REQUEST_VALUES 2/PV at APPLY_REQUEST_VALUES 2/AP at APPLY_REQUEST_VALUES 2",
+                ActionListenerTestImpl.trace());
+
+    }
+
+    // Test listener registration and deregistration
+    public void testListeners() {
+
+        CommandTestImpl command = new CommandTestImpl();
+        ActionListenerTestImpl listener = null;
+
+        command.addActionListener(new ActionListenerTestImpl("ARV0"));
+        command.addActionListener(new ActionListenerTestImpl("ARV1"));
+        command.addActionListener(new ActionListenerTestImpl("PV0"));
+        command.addActionListener(new ActionListenerTestImpl("PV1"));
+        command.addActionListener(new ActionListenerTestImpl("PV2"));
+
+        ActionListener listeners[] = command.getActionListeners();
+        assertEquals(5, listeners.length);
+        command.removeActionListener(listeners[2]);
+        listeners = command.getActionListeners();
+        assertEquals(4, listeners.length);
+
+    }
+
+    // Test empty listener list
+    public void testEmptyListeners() {
+
+        CommandTestImpl command = new CommandTestImpl();
+        ActionListenerTestImpl listener = null;
+
+        //No listeners added, should be empty
+        ActionListener listeners[] = command.getActionListeners();
+        assertEquals(0, listeners.length);
+
+    }
+
+    // Suppress lifecycle tests since we do not have a renderer
+    @Override
+    public void testLifecycleManagement() {
+    }
+
+    // Test a pristine UICommand instance
+    @Override
+    public void testPristine() {
+
+        super.testPristine();
+        UICommand command = (UICommand) component;
+
+        assertNull("no value", command.getValue());
+        assertNull("no action", command.getAction());
+        assertNull("no actionListener", command.getActionListener());
+
+    }
+
+    // Test setting properties to invalid values
+    @Override
+    public void testPropertiesInvalid() throws Exception {
+        super.testPropertiesInvalid();
+        UICommand command = (UICommand) component;
+    }
+
+    // Test setting properties to valid values
+    @Override
+    public void testPropertiesValid() throws Exception {
+        super.testPropertiesValid();
+        UICommand command = (UICommand) component;
+        Application app = facesContext.getApplication();
+
+        // value
+        command.setValue("foo.bar");
+        assertEquals("expected value",
+                "foo.bar", command.getValue());
+        command.setValue(null);
+        assertNull("erased value", command.getValue());
+
+        MethodBinding methodBinding = null;
+
+        command.setAction(methodBinding
+                = app.createMethodBinding("#{foo.bar}", null));
+        assertEquals(methodBinding, command.getAction());
+        command.setAction(null);
+        assertNull(command.getAction());
+
+        methodBinding = app.createMethodBinding("#{foo.yoyo}",
+                actionListenerSignature);
+        command.setActionListener(methodBinding);
+        assertEquals(methodBinding, command.getActionListener());
+        command.setActionListener(null);
+        assertNull(command.getActionListener());
+
+    }
+
+    public void testNestedCommands() {
+        UIViewRoot root = new UIViewRoot();
+        UICommand c1 = new UICommand();
+        UICommand c2 = new UICommand();
+        root.getChildren().add(c1);
+        c2.setImmediate(true);
+        c1.getChildren().add(c2);
+        ActionEvent ae = new ActionEvent(c2);
+        c2.queueEvent(ae);
+        assertTrue(ae.getPhaseId().equals(PhaseId.APPLY_REQUEST_VALUES));
+
+        root = new UIViewRoot();
+        c1 = new UICommand();
+        c2 = new UICommand();
+        root.getChildren().add(c1);
+        c1.setImmediate(true);
+        c2.setImmediate(false);
+        c1.getChildren().add(c2);
+        ae = new ActionEvent(c2);
+        c2.queueEvent(ae);
+        assertTrue(ae.getPhaseId().equals(PhaseId.INVOKE_APPLICATION));
+    }
+
+    public void PENDING_FIXME_testValueBindings() {
+
+        super.testValueBindings();
+        UICommand test = (UICommand) component;
+
+        // "immediate" property
+        request.setAttribute("foo", Boolean.FALSE);
+        boolean initial = test.isImmediate();
+        if (initial) {
+            request.setAttribute("foo", Boolean.FALSE);
+        } else {
+            request.setAttribute("foo", Boolean.TRUE);
+        }
+        test.setValueBinding("immediate", application.createValueBinding("#{foo}"));
+        assertEquals(!initial, test.isImmediate());
+        test.setImmediate(initial);
+        assertEquals(initial, test.isImmediate());
+        assertNotNull(test.getValueBinding("immediate"));
+
+        // "value" property
+        request.setAttribute("foo", "bar");
+        test.setValue(null);
+        assertNull(test.getValue());
+        test.setValueBinding("value", application.createValueBinding("#{foo}"));
+        assertNotNull(test.getValueBinding("value"));
+        assertEquals("bar", test.getValue());
+        test.setValue("baz");
+        assertEquals("baz", test.getValue());
+        test.setValue(null);
+        assertEquals("bar", test.getValue());
+        test.setValueBinding("value", null);
+        assertNull(test.getValueBinding("value"));
+        assertNull(test.getValue());
+
+    }
+
+    public void testGetActionListeners() throws Exception {
+        UICommand command = (UICommand) component;
+        UIViewRoot root = facesContext.getApplication().getViewHandler().createView(facesContext, null);
+        root.getChildren().add(command);
+
+        ActionListenerTestImpl ta1 = new ActionListenerTestImpl("ta1"),
+                ta2 = new ActionListenerTestImpl("ta2");
+
+        command.addActionListener(ta1);
+        command.addActionListener(ta2);
+        ActionListener[] listeners = (ActionListener[]) command.getActionListeners();
+        assertEquals(2, listeners.length);
+        ActionListenerTestImpl[] taListeners = (ActionListenerTestImpl[]) command.getFacesListeners(ActionListenerTestImpl.class);
+    }
+
+    // --------------------------------------------------------- Support Methods
+    // Check that the properties on the specified components are equal
+    @Override
+    protected void checkProperties(UIComponent comp1, UIComponent comp2) {
+        super.checkProperties(comp1, comp2);
+        UICommand c1 = (UICommand) comp1;
+        UICommand c2 = (UICommand) comp2;
+        assertEquals(c1.getAction(), c2.getAction());
+        assertEquals(c1.getActionListener(), c2.getActionListener());
+    }
+
+    // Create a pristine component of the type to be used in state holder tests
+    @Override
+    protected UIComponent createComponent() {
+        UIComponent component = new UICommand();
+        component.setRendererType(null);
+        return (component);
+    }
+
+    // Populate a pristine component to be used in state holder tests
+    @Override
+    protected void populateComponent(UIComponent component) {
+        super.populateComponent(component);
+        UICommand c = (UICommand) component;
+        Application app = facesContext.getApplication();
+        MethodBinding methodBinding = null;
+
+        c.setAction(methodBinding = app.createMethodBinding("#{foo.bar}",
+                null));
+        c.setActionListener(methodBinding
+                = app.createMethodBinding("#{baz.bop}",
+                        actionListenerSignature));
+    }
+
+    protected boolean listenersAreEqual(FacesContext context,
+            UICommand comp1,
+            UICommand comp2) {
+        ActionListener[] list1 = comp1.getActionListeners();
+        ActionListener[] list2 = comp2.getActionListeners();
+        // make sure they're either both null or both non-null
+        if ((null == list1 && null != list2)
+                || (null != list1 && null == list2)) {
+            return false;
+        }
+        if (null == list1) {
+            return true;
+        }
+        int j = 0, outerLen = list1.length;
+        boolean result = true;
+        if (outerLen != list2.length) {
+            return false;
+        }
+        for (j = 0; j < outerLen; j++) {
+            result = list1[j].equals(list2[j]);
+            if (!result) {
+                return false;
+            }
+        }
+        return true;
+    }
+
+    // --------------------------------------------------------- Private Classes
+    // "Button" Renderer
+    class ButtonRenderer extends Renderer {
+
+        @Override
+        public void decode(FacesContext context, UIComponent component) {
+
+            if ((context == null) || (component == null)) {
+                throw new NullPointerException();
+            }
+
+            if (!(component instanceof ActionSource)) {
+                return;
+            }
+            String clientId = component.getClientId(context);
+            Map params = context.getExternalContext().getRequestParameterMap();
+            if (params.containsKey(clientId)) {
+                component.queueEvent(new ActionEvent(component));
+            }
+        }
+
+        @Override
+        public void encodeBegin(FacesContext context, UIComponent component)
+                throws IOException {
+            if ((context == null) || (component == null)) {
+                throw new NullPointerException();
+            }
+        }
+
+        @Override
+        public void encodeChildren(FacesContext context, UIComponent component)
+                throws IOException {
+            if ((context == null) || (component == null)) {
+                throw new NullPointerException();
+            }
+        }
+
+        @Override
+        public void encodeEnd(FacesContext context, UIComponent component)
+                throws IOException {
+            if ((context == null) || (component == null)) {
+                throw new NullPointerException();
+            }
+        }
+    }
+}
diff --git a/test/unit/src/test/java/javax/faces/component/UIComponentBaseAttachedStateTestCase.java b/test/unit/src/test/java/javax/faces/component/UIComponentBaseAttachedStateTestCase.java
new file mode 100644
index 0000000..2802e5c
--- /dev/null
+++ b/test/unit/src/test/java/javax/faces/component/UIComponentBaseAttachedStateTestCase.java
@@ -0,0 +1,342 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package javax.faces.component;
+
+import com.sun.faces.mock.MockExternalContext;
+import com.sun.faces.mock.MockFacesContext;
+import com.sun.faces.mock.MockHttpServletRequest;
+import com.sun.faces.mock.MockHttpServletResponse;
+import com.sun.faces.mock.MockLifecycle;
+import com.sun.faces.mock.MockServletContext;
+import java.lang.reflect.Method;
+import java.util.HashMap;
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+import javax.faces.context.FacesContext;
+import javax.faces.event.FacesListener;
+import javax.faces.event.ValueChangeListener;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+import java.util.Stack;
+import javax.faces.FactoryFinder;
+import static junit.framework.Assert.assertEquals;
+import static junit.framework.Assert.assertNotNull;
+import static junit.framework.Assert.assertNull;
+import static junit.framework.Assert.assertTrue;
+
+public class UIComponentBaseAttachedStateTestCase extends TestCase {
+
+    private UIComponentBase component;
+    private MockFacesContext facesContext = null;
+    private MockServletContext servletContext;
+    private MockHttpServletRequest request;
+    private MockHttpServletResponse response;
+
+    public UIComponentBaseAttachedStateTestCase(String arg0) {
+        super(arg0);
+    }
+
+    // Return the tests included in this test case.
+    public static Test suite() {
+        return (new TestSuite(UIComponentBaseAttachedStateTestCase.class));
+    }
+
+    @Override
+    public void setUp() throws Exception {
+        super.setUp();
+        component = new UIOutput();
+        facesContext = new MockFacesContext();
+        
+        servletContext = new MockServletContext();
+        servletContext.addInitParameter("appParamName", "appParamValue");
+        servletContext.setAttribute("appScopeName", "appScopeValue");
+        request = new MockHttpServletRequest(null);
+        request.setAttribute("reqScopeName", "reqScopeValue");
+        response = new MockHttpServletResponse();
+        
+        // Create something to stand-in as the InitFacesContext
+        new MockFacesContext(new MockExternalContext(servletContext, request, response),
+                new MockLifecycle());
+        
+    }
+
+    @Override
+    protected void tearDown() throws Exception {
+        super.tearDown();
+        FactoryFinder.releaseFactories();
+        Method reInitializeFactoryManager = FactoryFinder.class.getDeclaredMethod("reInitializeFactoryManager", (Class<?>[]) null);
+        reInitializeFactoryManager.setAccessible(true);
+        reInitializeFactoryManager.invoke(null, (Object[]) null);
+    }
+
+    public void testAttachedObjectsSet() throws Exception {
+        Set<ValueChangeListener> returnedAttachedObjects = null,
+                attachedObjects = new HashSet<ValueChangeListener>();
+        ValueChangeListener toAdd = new ValueChangeListenerTestImpl();
+        attachedObjects.add(toAdd);
+        toAdd = new ValueChangeListenerTestImpl();
+        attachedObjects.add(toAdd);
+        toAdd = new ValueChangeListenerTestImpl();
+        attachedObjects.add(toAdd);
+        Object result = UIComponentBase.saveAttachedState(facesContext, attachedObjects);
+        returnedAttachedObjects = (Set<ValueChangeListener>) UIComponentBase.restoreAttachedState(facesContext, result);
+    }
+
+    public void testAttachedObjectsStack() throws Exception {
+        Stack<ValueChangeListener> returnedAttachedObjects = null,
+                attachedObjects = new Stack<ValueChangeListener>();
+        ValueChangeListener toAdd = new ValueChangeListenerTestImpl();
+        attachedObjects.add(toAdd);
+        toAdd = new ValueChangeListenerTestImpl();
+        attachedObjects.add(toAdd);
+        toAdd = new ValueChangeListenerTestImpl();
+        attachedObjects.add(toAdd);
+        Object result = UIComponentBase.saveAttachedState(facesContext, attachedObjects);
+        returnedAttachedObjects = (Stack<ValueChangeListener>) UIComponentBase.restoreAttachedState(facesContext, result);
+    }
+
+    public void testAttachedObjectsMap() throws Exception {
+        Map<String, ValueChangeListener> returnedAttachedObjects = null,
+                attachedObjects = new HashMap<String, ValueChangeListener>();
+        ValueChangeListener toAdd = new ValueChangeListenerTestImpl();
+        attachedObjects.put("one", toAdd);
+        toAdd = new ValueChangeListenerTestImpl();
+        attachedObjects.put("two", toAdd);
+        toAdd = new ValueChangeListenerTestImpl();
+        attachedObjects.put("three", toAdd);
+        Object result = UIComponentBase.saveAttachedState(facesContext, attachedObjects);
+        returnedAttachedObjects = (Map<String, ValueChangeListener>) UIComponentBase.restoreAttachedState(facesContext, result);
+    }
+
+    // Regression test for bug #907
+    public void testAttachedObjectsCount() throws Exception {
+        Set<ValueChangeListener> returnedAttachedObjects = null,
+                attachedObjects = new HashSet<ValueChangeListener>();
+        ValueChangeListener toAdd = new ValueChangeListenerTestImpl();
+        attachedObjects.add(toAdd);
+        toAdd = new ValueChangeListenerTestImpl();
+        attachedObjects.add(toAdd);
+        toAdd = new ValueChangeListenerTestImpl();
+        attachedObjects.add(toAdd);
+        Object result = UIComponentBase.saveAttachedState(facesContext, attachedObjects);
+        returnedAttachedObjects = (Set<ValueChangeListener>) UIComponentBase.restoreAttachedState(facesContext, result);
+        int firstSize = returnedAttachedObjects.size();
+        returnedAttachedObjects = (Set<ValueChangeListener>) UIComponentBase.restoreAttachedState(facesContext, result);
+        int secondSize = returnedAttachedObjects.size();
+        assertEquals(firstSize, secondSize);
+    }
+
+    public void testFacesListenerState() {
+        UIComponent component = new UIOutput();
+        TestFacesListener listener = new TestFacesListener();
+        listener.setValue("initial");
+        component.addFacesListener(listener);
+        component.markInitialState();
+        assertTrue(component.initialStateMarked());
+        assertTrue(listener.initialStateMarked());
+
+        Object state = component.saveState(facesContext);
+        assertNull(state);
+
+        component = new UIOutput();
+        listener = new TestFacesListener();
+        component.addFacesListener(listener);
+        listener.setValue("initial");
+        component.markInitialState();
+        listener.setValue("newvalue");
+        state = component.saveState(facesContext);
+        assertNotNull(state);
+
+        // verify that state is applied to existing Listener instances.
+        component = new UIOutput();
+        listener = new TestFacesListener();
+        component.addFacesListener(listener);
+        listener.setValue("newinitial");
+        component.restoreState(facesContext, state);
+        assertTrue("newvalue".equals(listener.getValue()));
+
+        // verify listeners are overwritten when using full state saving
+        component = new UIOutput();
+        listener = new TestFacesListener();
+        component.addFacesListener(listener);
+        listener.setValue("initial");
+        state = component.saveState(facesContext);
+        assertNotNull(state);
+        listener.setValue("postsave");
+
+        component.restoreState(facesContext, state);
+        TestFacesListener l = (TestFacesListener) component.getFacesListeners(TestFacesListener.class)[0];
+        assertTrue(l != listener);
+        assertTrue("initial".equals(l.getValue()));
+    }
+
+    public void testTransientListenersState() {
+        UIComponent output = new UIOutput();
+        output.markInitialState();
+        TestFacesListener l1 = new TestFacesListener();
+        TestFacesListener l2 = new TestFacesListener();
+        TestFacesListener l3 = new TestFacesListener();
+        TestFacesListener l4 = new TestFacesListener();
+        l1.setValue("l1");
+        l2.setValue("l2");
+        l3.setValue("l3");
+        l4.setValue("l4");
+        l2.setTransient(true);
+        l4.setTransient(true);
+
+        output.addFacesListener(l1);
+        output.addFacesListener(l2);
+        output.addFacesListener(l3);
+        output.addFacesListener(l4);
+
+        Object state = output.saveState(facesContext);
+        assertNotNull(state);
+        output = new UIOutput();
+        output.restoreState(facesContext, state);
+        FacesListener[] listeners = output.getFacesListeners(TestFacesListener.class);
+        assertTrue(listeners.length == 2);
+        assertEquals("l1", ((TestFacesListener) listeners[0]).getValue());
+        assertEquals("l3", ((TestFacesListener) listeners[1]).getValue());
+
+        output = new UIOutput();
+        output.markInitialState();
+        output.addFacesListener(l2);
+        state = output.saveState(facesContext);
+        assertNotNull(state);
+        output = new UIOutput();
+        output.restoreState(facesContext, state);
+        listeners = output.getFacesListeners(TestFacesListener.class);
+        assertTrue(listeners.length == 0);
+    }
+
+    public void testTransientListenersState2() {
+        UIComponent output = new UIOutput();
+        TestFacesListener l1 = new TestFacesListener();
+        TestFacesListener l2 = new TestFacesListener();
+        TestFacesListener l3 = new TestFacesListener();
+        TestFacesListener l4 = new TestFacesListener();
+        l1.setValue("l1");
+        l2.setValue("l2");
+        l3.setValue("l3");
+        l4.setValue("l4");
+        l2.setTransient(true);
+        l4.setTransient(true);
+
+        output.addFacesListener(l1);
+        output.addFacesListener(l2);
+        output.addFacesListener(l3);
+        output.addFacesListener(l4);
+
+        Object state = output.saveState(facesContext);
+        assertNotNull(state);
+        output = new UIOutput();
+        output.restoreState(facesContext, state);
+        FacesListener[] listeners = output.getFacesListeners(TestFacesListener.class);
+        assertTrue(listeners.length == 2);
+        assertEquals("l1", ((TestFacesListener) listeners[0]).getValue());
+        assertEquals("l3", ((TestFacesListener) listeners[1]).getValue());
+
+        output = new UIOutput();
+        output.addFacesListener(l2);
+        state = output.saveState(facesContext);
+        assertNotNull(state);
+        output = new UIOutput();
+        output.restoreState(facesContext, state);
+        listeners = output.getFacesListeners(TestFacesListener.class);
+        assertTrue(listeners.length == 0);
+    }
+
+    // ---------------------------------------------------------- Nested Classes
+    public static final class TestFacesListener implements FacesListener, PartialStateHolder {
+
+        private boolean initialState;
+        private String value;
+        private boolean trans;
+
+        public String getValue() {
+            return value;
+        }
+
+        public void setValue(String value) {
+            clearInitialState();
+            this.value = value;
+        }
+
+        @Override
+        public void markInitialState() {
+            initialState = true;
+        }
+
+        @Override
+        public boolean initialStateMarked() {
+            return initialState;
+        }
+
+        @Override
+        public void clearInitialState() {
+            initialState = false;
+        }
+
+        @Override
+        public Object saveState(FacesContext context) {
+            return ((!initialState) ? new Object[]{value} : null);
+        }
+
+        @Override
+        public void restoreState(FacesContext context, Object state) {
+            if (state != null) {
+                Object[] values = (Object[]) state;
+                value = (String) values[0];
+            }
+        }
+
+        @Override
+        public boolean isTransient() {
+            return trans;
+        }
+
+        @Override
+        public void setTransient(boolean trans) {
+            this.trans = trans;
+        }
+    }
+}
diff --git a/test/unit/src/test/java/javax/faces/component/UIComponentBaseBehaviorTestCase.java b/test/unit/src/test/java/javax/faces/component/UIComponentBaseBehaviorTestCase.java
new file mode 100644
index 0000000..f29ed75
--- /dev/null
+++ b/test/unit/src/test/java/javax/faces/component/UIComponentBaseBehaviorTestCase.java
@@ -0,0 +1,275 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package javax.faces.component;
+
+import javax.faces.component.behavior.ClientBehavior;
+import javax.faces.component.behavior.ClientBehaviorContext;
+import javax.faces.component.behavior.ClientBehaviorHint;
+import javax.faces.component.behavior.ClientBehaviorHolder;
+import javax.faces.context.FacesContext;
+import javax.faces.event.BehaviorEvent;
+import java.io.Serializable;
+import java.util.*;
+import static junit.framework.Assert.assertEquals;
+import static junit.framework.Assert.assertFalse;
+import static junit.framework.Assert.assertTrue;
+
+/**
+ * <p class="changed_added_2_0">
+ * Test case for component behaviors.
+ * </p>
+ *
+ * @since 2.0
+ */
+public class UIComponentBaseBehaviorTestCase extends UIComponentTestCase {
+
+    private static final String ONTEST = "ontest";
+    private static final String ONCLICK = "onclick";
+    private static final String ONCHANGE = "onchange";
+    private static final String TEST_FAMILY = "javax.faces.Test";
+    private static final Collection<String> EVENTS = set(ONTEST, ONCLICK, ONCHANGE);
+
+    public static class BehaviorComponent extends UIComponentBase implements ClientBehaviorHolder {
+
+        /* (non-Javadoc)
+         * @see javax.faces.component.UIComponent#getFamily()
+         */
+        @Override
+        public String getFamily() {
+            return TEST_FAMILY;
+        }
+
+        @Override
+        public Collection<String> getEventNames() {
+            return EVENTS;
+        }
+
+        @Override
+        public String getDefaultEventName() {
+            return ONTEST;
+        }
+
+    }
+
+    @SuppressWarnings("serial")
+    public static class TestBehavior implements ClientBehavior, Serializable {
+
+        private static final Set<ClientBehaviorHint> HINTS
+                = Collections.unmodifiableSet(EnumSet.of(ClientBehaviorHint.SUBMITTING));
+
+        private static int sequence = 0;
+
+        private final int id;
+
+        public TestBehavior() {
+            id = sequence++;
+        }
+
+        public String getRendererType() {
+            return TEST_FAMILY;
+        }
+
+        @Override
+        public Set<ClientBehaviorHint> getHints() {
+            return HINTS;
+        }
+
+        @Override
+        public void broadcast(BehaviorEvent event) {
+        }
+
+        @Override
+        public void decode(FacesContext context, UIComponent component) {
+        }
+
+        @Override
+        public String getScript(ClientBehaviorContext bContext) {
+            return null;
+        }
+
+        @Override
+        public int hashCode() {
+            final int prime = 31;
+            int result = 1;
+            result = prime * result + id;
+            return result;
+        }
+
+        @Override
+        public boolean equals(Object obj) {
+            if (this == obj) {
+                return true;
+            }
+            if (obj == null) {
+                return false;
+            }
+            if (getClass() != obj.getClass()) {
+                return false;
+            }
+            TestBehavior other = (TestBehavior) obj;
+            if (id != other.id) {
+                return false;
+            }
+            return true;
+        }
+
+        @Override
+        public String toString() {
+            return "Behavior #" + id;
+        }
+    }
+
+    public UIComponentBaseBehaviorTestCase(String name) {
+        super(name);
+    }
+
+    /**
+     * Test method for
+     * {@link javax.faces.component.UIComponentBase#saveState(javax.faces.context.FacesContext)}.
+     */
+    public void testSaveState() {
+        BehaviorComponent comp = new BehaviorComponent();
+        // Cast component to the interface, to be sure about method definition.
+        ClientBehaviorHolder holder = (ClientBehaviorHolder) comp;
+        TestBehavior behavior = new TestBehavior();
+        holder.addClientBehavior(ONCLICK, behavior);
+        TestBehavior behavior2 = new TestBehavior();
+        holder.addClientBehavior(ONCLICK, behavior2);
+        TestBehavior behavior3 = new TestBehavior();
+        holder.addClientBehavior(ONCHANGE, behavior3);
+        Object state = comp.saveState(facesContext);
+        BehaviorComponent restoredComp = new BehaviorComponent();
+        restoredComp.restoreState(facesContext, state);
+        Map<String, List<ClientBehavior>> behaviors = restoredComp.getClientBehaviors();
+        assertFalse(behaviors.isEmpty());
+        assertTrue(behaviors.containsKey(ONCLICK));
+        assertTrue(behaviors.containsKey(ONCHANGE));
+        assertFalse(behaviors.containsKey(ONTEST));
+        assertEquals(2, behaviors.entrySet().size());
+        assertEquals(2, behaviors.keySet().size());
+        assertEquals(2, behaviors.values().size());
+        assertEquals(2, behaviors.get(ONCLICK).size());
+        assertEquals(1, behaviors.get(ONCHANGE).size());
+        assertEquals(behavior3, behaviors.get(ONCHANGE).get(0));
+        assertEquals(behavior, behaviors.get(ONCLICK).get(0));
+        assertEquals(behavior2, behaviors.get(ONCLICK).get(1));
+    }
+
+    public void testNonClientBehaviorHolder() throws Exception {
+        UIInput input = new UIInput();
+        try {
+            input.addClientBehavior(ONTEST, new TestBehavior());
+        } catch (IllegalStateException e) {
+            return;
+        }
+        assertFalse(true);
+    }
+
+    /**
+     * Test method for
+     * {@link javax.faces.component.UIComponentBase#addClientBehavior(java.lang.String, javax.faces.component.behavior.Behavior)}.
+     */
+    public void testAddBehavior() {
+        BehaviorComponent comp = new BehaviorComponent();
+        // Cast component to the interface, to be sure about method definition.
+        ClientBehaviorHolder holder = (ClientBehaviorHolder) comp;
+        holder.addClientBehavior(ONCLICK, new TestBehavior());
+        holder.addClientBehavior(ONCLICK, new TestBehavior());
+        holder.addClientBehavior(ONCHANGE, new TestBehavior());
+        try {
+            holder.addClientBehavior("foo", new TestBehavior());
+        } catch (IllegalArgumentException e) {
+            return;
+        }
+        assertFalse(true);
+    }
+
+    /**
+     * Test method for
+     * {@link javax.faces.component.UIComponentBase#getEventNames()}.
+     */
+    public void testGetEventNames() {
+        BehaviorComponent comp = new BehaviorComponent();
+        ClientBehaviorHolder holder = (ClientBehaviorHolder) comp;
+        assertEquals(EVENTS, holder.getEventNames());
+    }
+
+    /**
+     * Test method for
+     * {@link javax.faces.component.UIComponentBase#getClientBehaviors()}.
+     */
+    public void testGetBehaviors() {
+        BehaviorComponent comp = new BehaviorComponent();
+        // Cast component to the interface, to be sure about method definition.
+        ClientBehaviorHolder holder = (ClientBehaviorHolder) comp;
+        Map<String, List<ClientBehavior>> behaviors = holder.getClientBehaviors();
+        assertTrue(behaviors.isEmpty());
+        assertFalse(behaviors.containsKey(ONCLICK));
+        assertFalse(behaviors.containsValue(new TestBehavior()));
+        assertEquals(0, behaviors.entrySet().size());
+        holder.addClientBehavior(ONCLICK, new TestBehavior());
+        holder.addClientBehavior(ONCLICK, new TestBehavior());
+        holder.addClientBehavior(ONCHANGE, new TestBehavior());
+        assertFalse(behaviors.isEmpty());
+        assertTrue(behaviors.containsKey(ONCLICK));
+        assertTrue(behaviors.containsKey(ONCHANGE));
+        assertFalse(behaviors.containsKey(ONTEST));
+        assertEquals(2, behaviors.entrySet().size());
+        assertEquals(2, behaviors.keySet().size());
+        assertEquals(2, behaviors.values().size());
+        assertEquals(2, behaviors.get(ONCLICK).size());
+        assertEquals(1, behaviors.get(ONCHANGE).size());
+    }
+
+    /**
+     * Test method for
+     * {@link javax.faces.component.UIComponentBase#getDefaultEventName()}.
+     */
+    public void testGetDefaultEventName() {
+        BehaviorComponent comp = new BehaviorComponent();
+        // Cast component to the interface, to be sure about method definition.
+        ClientBehaviorHolder holder = (ClientBehaviorHolder) comp;
+        assertEquals(ONTEST, holder.getDefaultEventName());
+    }
+
+    public static <T> Set<T> set(T... ts) {
+        return new HashSet<T>(Arrays.asList(ts));
+    }
+}
diff --git a/test/unit/src/test/java/javax/faces/component/UIComponentBaseTestCase.java b/test/unit/src/test/java/javax/faces/component/UIComponentBaseTestCase.java
new file mode 100644
index 0000000..d0afe19
--- /dev/null
+++ b/test/unit/src/test/java/javax/faces/component/UIComponentBaseTestCase.java
@@ -0,0 +1,1833 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package javax.faces.component;
+
+import com.sun.faces.mock.MockExternalContext;
+import com.sun.faces.mock.MockValueBinding;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+import javax.el.ValueExpression;
+import javax.faces.FacesException;
+import javax.faces.application.FacesMessage;
+import javax.faces.context.FacesContext;
+import javax.faces.el.ValueBinding;
+import javax.faces.event.*;
+import javax.faces.validator.ValidatorException;
+import java.io.IOException;
+import java.lang.reflect.InvocationTargetException;
+import java.util.*;
+
+/**
+ * <p>
+ * Base unit tests for all {@link UIComponentBase} subclasses.</p>
+ */
+public class UIComponentBaseTestCase extends UIComponentTestCase {
+
+    // ------------------------------------------------------ Instance Variables
+    // Mock object instances for our tests
+    // ------------------------------------------------------------ Constructors
+    /**
+     * Construct a new instance of this test case.
+     *
+     * @param name Name of the test case
+     */
+    public UIComponentBaseTestCase(String name) {
+        super(name);
+    }
+
+    // ---------------------------------------------------- Overall Test Methods
+    // Set up instance variables required by this test case.
+    @Override
+    public void setUp() throws Exception {
+
+        // Set up the component under test
+        super.setUp();
+        component = new ComponentTestImpl(expectedId);
+
+    }
+
+    // Return the tests included in this test case.
+    public static Test suite() {
+        return (new TestSuite(UIComponentBaseTestCase.class));
+    }
+
+    // Tear down instance variables required by ths test case
+    @Override
+    public void tearDown() throws Exception {
+        externalContext.setRequestParameterMap(null);
+
+        super.tearDown();
+
+    }
+
+    // ------------------------------------------------- Individual Test Methods
+    // Test lifecycle management methods
+    public void testLifecycleManagement() {
+
+        checkLifecycleParentRendered();
+        checkLifecycleParentUnrendered();
+        checkLifecycleSelfRendered();
+        checkLifecycleSelfUnrendered();
+
+    }
+
+    public void testComponentToFromELBackwardCompatible() {
+
+        final String key = UIComponent.CURRENT_COMPONENT;
+        ((MockExternalContext) this.facesContext.getExternalContext()).addInitParameter(UIComponent.HONOR_CURRENT_COMPONENT_ATTRIBUTES_PARAM_NAME, "true");
+        ComponentTestImpl c = new ComponentTestImpl();
+        facesContext.getAttributes().clear();
+        assertNull(facesContext.getAttributes().get(key));
+        c.pushComponentToEL(facesContext, null);
+        assertTrue(facesContext.getAttributes().get(key) == c);
+        c.popComponentFromEL(facesContext);
+        assertNull(facesContext.getAttributes().get(key));
+
+    }
+
+    public void testComponentToFromEL() {
+
+        final String key = UIComponent.CURRENT_COMPONENT;
+        ComponentTestImpl c = new ComponentTestImpl();
+        facesContext.getAttributes().clear();
+        assertNull(facesContext.getAttributes().get(key));
+        c.pushComponentToEL(facesContext, null);
+        assertFalse(facesContext.getAttributes().get(key) == c);
+        c.popComponentFromEL(facesContext);
+        assertNull(facesContext.getAttributes().get(key));
+
+    }
+
+    public void testComponentToFromEL2() throws Exception {
+
+        final String key = UIComponent.CURRENT_COMPONENT;
+        final FacesContext ctx = facesContext;
+        ComponentTestImpl c = new ComponentTestImpl();
+        ComponentTestImpl c2 = new ComponentTestImpl();
+        UIComponent eeo = new UIComponentOverrideEncodeEnd();
+        ComponentTestImpl c3 = new ComponentTestImpl();
+        UIComponent ebo = new UIComponentOverrideEncodeBegin();
+
+        c.encodeBegin(ctx);
+        assertEquals(UIComponent.getCurrentComponent(ctx), c);
+        c2.encodeBegin(ctx);
+        assertEquals(UIComponent.getCurrentComponent(ctx), c2);
+        c2.encodeEnd(ctx);
+        assertEquals(UIComponent.getCurrentComponent(ctx), c);
+        c.encodeEnd(ctx);
+        assertNull(UIComponent.getCurrentComponent(ctx));
+
+        // sanity check for the case where a component overrides
+        // encodeBegin() without calling super or pushComponentToEL
+        c.encodeBegin(ctx);
+        c2.encodeBegin(ctx);
+        ebo.encodeBegin(ctx);
+        assertEquals(UIComponent.getCurrentComponent(ctx), c2);
+        ebo.encodeEnd(ctx); // if the component wasn't pushed
+        // it shouldn't be popped.
+        assertEquals(UIComponent.getCurrentComponent(ctx), c2);
+        c2.encodeEnd(ctx);
+        assertEquals(UIComponent.getCurrentComponent(ctx), c);
+        c.encodeEnd(ctx);
+        assertNull(UIComponent.getCurrentComponent(ctx));
+
+        // sanity check for the case where a component overrides
+        // encodeEnd() without calling super or popComponentFromEL
+        c.encodeBegin(ctx);
+        c2.encodeBegin(ctx);
+        eeo.encodeBegin(ctx);
+        assertEquals(UIComponent.getCurrentComponent(ctx), eeo);
+        eeo.encodeEnd(ctx);
+        // this is ugly.  Because of a component not doing calling
+        // super() or popComponentFromEL, c2 won't be visible
+        // as the current component.
+        assertEquals(UIComponent.getCurrentComponent(ctx), eeo);
+        c2.encodeEnd(ctx);
+        assertEquals(UIComponent.getCurrentComponent(ctx), c);
+        c.encodeEnd(ctx);
+        assertNull(UIComponent.getCurrentComponent(ctx));
+
+        UIComponent eeo2 = new UIComponentOverrideEncodeEnd();
+        c.encodeBegin(ctx);
+        c2.encodeBegin(ctx);
+        eeo.encodeBegin(ctx);
+        assertEquals(UIComponent.getCurrentComponent(ctx), eeo);
+        c3.encodeBegin(ctx);
+        assertEquals(UIComponent.getCurrentComponent(ctx), c3);
+        eeo2.encodeBegin(ctx);
+        assertEquals(UIComponent.getCurrentComponent(ctx), eeo2);
+        eeo2.encodeEnd(ctx);
+        // this is ugly.
+        assertEquals(UIComponent.getCurrentComponent(ctx), eeo2);
+        c3.encodeEnd(ctx);
+        assertEquals(UIComponent.getCurrentComponent(ctx), eeo);
+        eeo.encodeEnd(ctx);
+        // this is ugly.
+        assertEquals(UIComponent.getCurrentComponent(ctx), eeo);
+        c2.encodeEnd(ctx);
+        assertEquals(UIComponent.getCurrentComponent(ctx), c);
+        c.encodeEnd(ctx);
+        assertNull(UIComponent.getCurrentComponent(ctx));
+
+    }
+
+    public void testEncodeChildren() throws Exception {
+        ComponentTestImpl.trace(null);
+        UIComponent comp1 = new ComponentTestImpl("one");
+        UIComponent comp2 = new ComponentTestImpl("two");
+        UIComponent comp3 = new ComponentTestImpl("three");
+        UIComponent comp4 = new ComponentTestImpl("four");
+
+        comp1.getChildren().add(comp2);
+        comp1.getChildren().add(comp3);
+        comp1.getChildren().add(comp4);
+
+        comp1.encodeChildren(facesContext);
+        System.out.println("Actual:   " + ComponentTestImpl.trace());
+        System.out.println("Expected: " + "/eC-one/eB-two/eE-two/eB-three/eE-three/eB-four/eE-four");
+        assertEquals("/eC-one/eB-two/eE-two/eB-three/eE-three/eB-four/eE-four", ComponentTestImpl.trace());
+
+    }
+
+    // Test recursive adding and removing child trees with ids
+    public void testChildrenRecursive() {
+
+        // Create the components we will need
+        UIComponent testComponent = new ComponentTestImpl();
+        UIComponent child1 = new ComponentTestImpl("child1");
+        UIComponent child2 = new ComponentTestImpl("child2");
+        UIComponent child3 = new ComponentTestImpl("child3");
+
+        // Prepare ancestry tree before adding to base component
+        child1.getChildren().add(child2);
+        child2.getChildren().add(child3);
+
+        // Verify that no child ids are visible yet
+        assertNull(testComponent.findComponent("child1"));
+        assertNull(testComponent.findComponent("child2"));
+        assertNull(testComponent.findComponent("child3"));
+
+        // Add the entire tree
+        testComponent.getChildren().add(child1);
+
+        // Verify that all named children get added
+        assertEquals(child1, testComponent.findComponent("child1"));
+        assertEquals(child2, testComponent.findComponent("child2"));
+        assertEquals(child3, testComponent.findComponent("child3"));
+
+        // Remove the entire tree
+        testComponent.getChildren().remove(child1);
+
+        // Verify that child ids are no longer visible
+        assertNull(testComponent.findComponent("child1"));
+        assertNull(testComponent.findComponent("child2"));
+        assertNull(testComponent.findComponent("child3"));
+
+    }
+
+    public void testChildrenAndFacetsWithNullGetParent() throws Exception {
+        ComponentTestImpl child = new ComponentTestImpl() {
+            @Override
+            public UIComponent getParent() {
+                return null;
+            }
+        };
+        component.getChildren().add(child);
+        assertNull(component.getChildren().get(0).getParent());
+        ComponentTestImpl facet = new ComponentTestImpl() {
+            @Override
+            public UIComponent getParent() {
+                return null;
+            }
+        };
+        component.getFacets().put("nullParent", facet);
+        assertNull(component.getFacets().get("nullParent").getParent());
+    }
+
+    // Test reconnecting a child or facet to a different component
+    public void testComponentReconnect() {
+
+        UIComponent parent1 = new ComponentTestImpl();
+        UIComponent parent2 = new ComponentTestImpl();
+
+        // Reconnect an existing child as a child
+        checkChildCount(parent1, 0);
+        checkChildCount(parent2, 0);
+        parent1.getChildren().add(component);
+        checkChildCount(parent1, 1);
+        checkChildCount(parent2, 0);
+        checkChildPresent(parent1, component, 0);
+        parent2.getChildren().add(component);
+        checkChildCount(parent1, 0);
+        checkChildCount(parent2, 1);
+        checkChildPresent(parent2, component, 0);
+        parent2.getChildren().clear();
+        checkChildCount(parent1, 0);
+        checkChildCount(parent2, 0);
+
+        // Reconnect an existing child as a facet
+        checkChildCount(parent1, 0);
+        checkFacetCount(parent2, 0);
+        parent1.getChildren().add(component);
+        checkChildCount(parent1, 1);
+        checkFacetCount(parent2, 0);
+        checkChildPresent(parent1, component, 0);
+        parent2.getFacets().put("facet", component);
+        checkChildCount(parent1, 0);
+        checkFacetCount(parent2, 1);
+        checkFacetPresent(parent2, "facet", component);
+        parent2.getFacets().clear();
+        checkChildCount(parent1, 0);
+        checkFacetCount(parent2, 0);
+
+        // Reconnect an existing facet as a child
+        checkFacetCount(parent1, 0);
+        checkChildCount(parent2, 0);
+        parent1.getFacets().put("facet", component);
+        checkFacetCount(parent1, 1);
+        checkChildCount(parent2, 0);
+        checkFacetPresent(parent1, "facet", component);
+        parent2.getChildren().add(component);
+        checkFacetCount(parent1, 0);
+        checkChildCount(parent2, 1);
+        checkChildPresent(parent2, component, 0);
+        parent2.getChildren().clear();
+        checkFacetCount(parent1, 0);
+        checkChildCount(parent2, 0);
+
+    }
+
+    // Test removing components from our naming container.
+    public void testComponentRemoval() {
+
+        UIComponent testComponent = new ComponentTestImpl();
+        UIComponent child1 = new ComponentTestImpl("child1");
+        UIComponent child2 = new ComponentTestImpl("child2");
+        UIComponent child3 = new ComponentTestImpl("child3");
+        UIComponent child = null;
+
+        //adding children to naming container
+        testComponent.getChildren().add(child1);
+        testComponent.getChildren().add(child2);
+        testComponent.getChildren().add(child3);
+
+        // make sure children are stored in naming container properly
+        Iterator kidItr = null;
+
+        kidItr = testComponent.getFacetsAndChildren();
+
+        child = (UIComponent) kidItr.next();
+        assertTrue(child.equals(child1));
+
+        child = (UIComponent) kidItr.next();
+        assertTrue(child.equals(child2));
+
+        child = (UIComponent) kidItr.next();
+        assertTrue(child.equals(child3));
+
+        //make sure child is removed from component and naming container
+        //pass in a component to remove method
+        testComponent.getChildren().remove(child1);
+
+        kidItr = testComponent.getFacetsAndChildren();
+
+        child = (UIComponent) kidItr.next();
+        assertTrue(child.equals(child2));
+
+        child = (UIComponent) kidItr.next();
+        assertTrue(child.equals(child3));
+
+        //make sure child is removed from component and naming container
+        //pass an index to remove method
+        testComponent.getChildren().remove(0);
+
+        kidItr = testComponent.getFacetsAndChildren();
+
+        child = (UIComponent) kidItr.next();
+        assertTrue(child.equals(child3));
+
+        //make sure child is removed from component and naming container
+        //remove all children
+        testComponent.getChildren().clear();
+
+        kidItr = testComponent.getFacetsAndChildren();
+        assertTrue(!kidItr.hasNext());
+    }
+
+    public void testStateHolder() throws Exception {
+
+        // Set up the components we will need
+        UIComponent parent = new ComponentTestImpl("root");
+        UIComponent preSave = createComponent();
+        UIComponent facet1 = createComponent();
+        facet1.setId("facet1");
+        preSave.getFacets().put("facet1 key", facet1);
+        UIComponent facet2 = createComponent();
+        facet2.setId("facet2");
+        preSave.getFacets().put("facet2 key", facet2);
+        parent.getChildren().add(preSave);
+        populateComponent(preSave);
+        UIComponent postSave = createComponent();
+
+        // Save and restore state and compare the results
+        Object state = preSave.saveState(facesContext);
+        assertNotNull(state);
+        postSave.restoreState(facesContext, state);
+        checkComponents(preSave, postSave);
+        checkValueBindings(preSave, postSave);
+        checkComponentListeners(preSave, postSave);
+    }
+
+    public void testStateHolder2() throws Exception {
+
+        UIComponent c = new UIComponentListener();
+        c.subscribeToEvent(PostAddToViewEvent.class, (ComponentSystemEventListener) c);
+        Object state = c.saveState(facesContext);
+        c = new UIComponentListener();
+        c.pushComponentToEL(facesContext, c);
+        c.restoreState(facesContext, state);
+        c.popComponentFromEL(facesContext);
+        assertTrue(c.getListenersForEventClass(PostAddToViewEvent.class).size() == 1);
+
+    }
+
+    public void testValueBindings() {
+
+        UIComponentBase test = (UIComponentBase) component;
+
+        // generic attributes
+        request.setAttribute("foo", "bar");
+        Object result = test.getAttributes().get("childCount");
+        test.getAttributes().clear();
+        assertNull(test.getAttributes().get("baz"));
+        test.setValueBinding("baz", application.createValueBinding("#{foo}"));
+        assertEquals("bar", test.getAttributes().get("baz"));
+        test.getAttributes().put("baz", "bop");
+        assertEquals("bop", test.getAttributes().get("baz"));
+        test.getAttributes().remove("baz");
+        assertEquals("bar", test.getAttributes().get("baz"));
+        test.setValueBinding("baz", null);
+        assertNull(test.getAttributes().get("baz"));
+
+        // "id" property
+        try {
+            test.setValueBinding("id",
+                    application.createValueBinding("#{foo}"));
+            fail("Should have thrown IllegalArgumentException");
+        } catch (IllegalArgumentException e) {
+            // Expected response
+        }
+
+        // "parent" property
+        try {
+            test.setValueBinding("parent",
+                    application.createValueBinding("#{foo}"));
+            fail("Should have thrown IllegalArgumentException");
+        } catch (IllegalArgumentException e) {
+            // Expected response
+        }
+
+        // "rendered" property
+        request.setAttribute("foo", Boolean.FALSE);
+        boolean initial = test.isRendered();
+        if (initial) {
+            request.setAttribute("foo", Boolean.FALSE);
+        } else {
+            request.setAttribute("foo", Boolean.TRUE);
+        }
+        test.setValueBinding("rendered", application.createValueBinding("#{foo}"));
+        assertEquals(!initial, test.isRendered());
+        test.setRendered(initial);
+        assertEquals(initial, test.isRendered());
+        assertNotNull(test.getValueBinding("rendered"));
+
+        // "rendererType" property
+        request.setAttribute("foo", "bar");
+        test.setRendererType(null);
+        assertNull(test.getRendererType());
+        test.setValueBinding("rendererType", application.createValueBinding("#{foo}"));
+        assertNotNull(test.getValueBinding("rendererType"));
+        assertEquals("bar", test.getRendererType());
+        test.setRendererType("baz");
+        assertEquals("baz", test.getRendererType());
+        test.setRendererType(null);
+        assertEquals("bar", test.getRendererType());
+        test.setValueBinding("rendererType", null);
+        assertNull(test.getValueBinding("rendererType"));
+        assertNull(test.getRendererType());
+
+    }
+
+    public void testValueExpressions() throws Exception {
+
+        UIComponentBase test = (UIComponentBase) component;
+
+        // generic attributes
+        request.setAttribute("foo", "bar");
+        test.getAttributes().clear();
+        assertNull(test.getAttributes().get("baz"));
+        test.setValueExpression("baz", application.getExpressionFactory().createValueExpression(facesContext.getELContext(), "#{foo}", String.class));
+        assertEquals("bar", test.getAttributes().get("baz"));
+        test.getAttributes().put("baz", "bop");
+        assertEquals("bop", test.getAttributes().get("baz"));
+        test.getAttributes().remove("baz");
+        assertEquals("bar", test.getAttributes().get("baz"));
+        test.setValueExpression("baz", null);
+        assertNull(test.getAttributes().get("baz"));
+
+        // "id" property
+        try {
+            test.setValueExpression("id",
+                    application.getExpressionFactory().createValueExpression(facesContext.getELContext(), "#{foo}", String.class));
+            fail("Should have thrown IllegalArgumentException");
+        } catch (IllegalArgumentException e) {
+            // Expected response
+        }
+
+        // "parent" property
+        try {
+            test.setValueExpression("parent",
+                    application.getExpressionFactory().createValueExpression(facesContext.getELContext(), "#{foo}", UIComponent.class));
+            fail("Should have thrown IllegalArgumentException");
+        } catch (IllegalArgumentException e) {
+            // Expected response
+        }
+
+        // "rendered" property
+        request.setAttribute("foo", Boolean.FALSE);
+        test.setValueExpression("rendered", null);
+        boolean initial = test.isRendered();
+        if (initial) {
+            request.setAttribute("foo", Boolean.FALSE);
+        } else {
+            request.setAttribute("foo", Boolean.TRUE);
+        }
+        test.setValueExpression("rendered", application.getExpressionFactory().createValueExpression(facesContext.getELContext(), "#{foo}", Boolean.class));
+        assertEquals(!initial, test.isRendered());
+        test.setRendered(initial);
+        assertEquals(initial, test.isRendered());
+        assertNotNull(test.getValueExpression("rendered"));
+
+        // "rendererType" property
+        request.setAttribute("foo", "bar");
+        test.setRendererType(null);
+        assertNull(test.getRendererType());
+        test.setValueExpression("rendererType", application.getExpressionFactory().createValueExpression(facesContext.getELContext(), "#{foo}", String.class));
+        assertNotNull(test.getValueExpression("rendererType"));
+        assertEquals("bar", test.getRendererType());
+        test.setRendererType("baz");
+        assertEquals("baz", test.getRendererType());
+        test.setRendererType(null);
+        assertEquals("bar", test.getRendererType());
+        test.setValueExpression("rendererType", null);
+        assertNull(test.getValueExpression("rendererType"));
+        assertNull(test.getRendererType());
+
+    }
+
+    public void testValueExpressionValueBindingIdempotency() throws Exception {
+
+        UIComponentBase test = (UIComponentBase) component;
+
+        request.setAttribute("foo", "bar");
+        test.getAttributes().clear();
+        assertNull(test.getAttributes().get("baz"));
+        ValueBinding binding = null;
+        ValueExpression expression = null;
+
+        binding = application.createValueBinding("#{foo}");
+        test.setValueBinding("baz", binding);
+        expression = test.getValueExpression("baz");
+
+        assertEquals(binding.getExpressionString(),
+                expression.getExpressionString());
+        test.setValueBinding("baz", null);
+
+        expression = application.getExpressionFactory().createValueExpression(facesContext.getELContext(), "#{foo}", String.class);
+        test.setValueExpression("baz", expression);
+        binding = test.getValueBinding("baz");
+        assertEquals(binding.getExpressionString(),
+                expression.getExpressionString());
+        test.setValueBinding("baz", null);
+
+    }
+
+    public void testMethodBindingAdapterBaseException() throws Exception {
+        IllegalThreadStateException itse = new IllegalThreadStateException("The root cause!");
+        AbortProcessingException ape = new CustomAbortProcessingException(itse);
+        InvocationTargetException ite1 = new InvocationTargetException(ape);
+        InvocationTargetException ite2 = new InvocationTargetException(ite1);
+        InvocationTargetException ite3 = new InvocationTargetException(ite2);
+        MethodBindingValueChangeListener mbvcl
+                = new MethodBindingValueChangeListener();
+        Throwable expected
+                = mbvcl.getExpectedCause(AbortProcessingException.class, ite3);
+        assertEquals(expected, ape);
+
+        ValidatorException ve = new ValidatorException(new FacesMessage(),
+                itse);
+        ite1 = new InvocationTargetException(ve);
+        ite2 = new InvocationTargetException(ite1);
+        ite3 = new InvocationTargetException(ite2);
+
+        MethodBindingValidator mbv = new MethodBindingValidator();
+        expected
+                = mbv.getExpectedCause(ValidatorException.class, ite3);
+        assertEquals(expected, ve);
+    }
+
+    // --------------------------------------------------------- support Methods
+    // Check that the attributes on the specified components are equal
+    protected void checkAttributes(UIComponent comp1, UIComponent comp2) {
+        assertEquals(comp1.getAttributes(), comp2.getAttributes());
+    }
+
+    // Check that the specified components are equal
+    protected void checkComponents(UIComponent comp1, UIComponent comp2) {
+        checkAttributes(comp1, comp2);
+        // checkFacets(comp1, comp2); // Not saved and restored by component
+        checkProperties(comp1, comp2);
+    }
+
+    // Check lifecycle processing when parent "rendered" property is "true"
+    private void checkLifecycleParentRendered() {
+
+        // Put our component under test in a tree under a UIViewRoot
+        component.getAttributes().clear();
+        component.getChildren().clear();
+        component.getFacets().clear();
+        component.setRendered(true);
+        UIViewRoot root = facesContext.getApplication().getViewHandler().createView(facesContext, null);
+        UIPanel panel = new UIPanel();
+        panel.setRendered(true);
+        root.getChildren().add(panel);
+        panel.getChildren().add(component);
+
+        // Establish a view with multiple facets and children
+        UIComponent facet1 = new ComponentTestImpl("f1");
+        UIComponent facet2 = new ComponentTestImpl("f2");
+        UIComponent facet3 = new ComponentTestImpl("f3");
+        component.getFacets().put("f1", facet1);
+        component.getFacets().put("f2", facet2);
+        component.getFacets().put("f3", facet3);
+        checkFacetCount(component, 3);
+        UIComponent child1 = new ComponentTestImpl("c1");
+        UIComponent child2 = new ComponentTestImpl("c2");
+        UIComponent child3 = new ComponentTestImpl("c3");
+        component.getChildren().add(child1);
+        component.getChildren().add(child2);
+        component.getChildren().add(child3);
+        checkChildCount(component, 3);
+        UIComponent child2a = new ComponentTestImpl("c2a");
+        UIComponent child2b = new ComponentTestImpl("c2b");
+        child2.getChildren().add(child2a);
+        child2.getChildren().add(child2b);
+        checkChildCount(child2, 2);
+
+        // Enqueue a single FacesEvent for each component
+        component.queueEvent(new EventTestImpl(component));
+        component.queueEvent(new EventTestImpl(facet1));
+        component.queueEvent(new EventTestImpl(facet2));
+        component.queueEvent(new EventTestImpl(facet3));
+        component.queueEvent(new EventTestImpl(child1));
+        component.queueEvent(new EventTestImpl(child2));
+        component.queueEvent(new EventTestImpl(child3));
+        component.queueEvent(new EventTestImpl(child2a));
+        component.queueEvent(new EventTestImpl(child2b));
+
+        // Test processDecodes()
+        ComponentTestImpl.trace(null);
+        component.processDecodes(facesContext);
+        assertEquals("processDecodes",
+                lifecycleTrace("pD", "d"),
+                ComponentTestImpl.trace());
+
+        // Test processValidators()
+        ComponentTestImpl.trace(null);
+        component.processValidators(facesContext);
+        assertEquals("processValidators",
+                lifecycleTrace("pV", null),
+                ComponentTestImpl.trace());
+
+        // Test processUpdates()
+        ComponentTestImpl.trace(null);
+        component.processUpdates(facesContext);
+        assertEquals("processUpdates",
+                lifecycleTrace("pU", null),
+                ComponentTestImpl.trace());
+
+    }
+
+    // Check lifecycle processing when parent "rendered" property is "false"
+    private void checkLifecycleParentUnrendered() {
+
+        // Put our component under test in a tree under a UIViewRoot
+        component.getAttributes().clear();
+        component.getChildren().clear();
+        component.getFacets().clear();
+        component.setRendered(true);
+        UIViewRoot root = facesContext.getApplication().getViewHandler().createView(facesContext, null);
+        UIPanel panel = new UIPanel();
+        panel.setRendered(false);
+        root.getChildren().add(panel);
+        panel.getChildren().add(component);
+
+        // Establish a view with multiple facets and children
+        UIComponent facet1 = new ComponentTestImpl("f1");
+        UIComponent facet2 = new ComponentTestImpl("f2");
+        UIComponent facet3 = new ComponentTestImpl("f3");
+        component.getFacets().put("f1", facet1);
+        component.getFacets().put("f2", facet2);
+        component.getFacets().put("f3", facet3);
+        checkFacetCount(component, 3);
+        UIComponent child1 = new ComponentTestImpl("c1");
+        UIComponent child2 = new ComponentTestImpl("c2");
+        UIComponent child3 = new ComponentTestImpl("c3");
+        component.getChildren().add(child1);
+        component.getChildren().add(child2);
+        component.getChildren().add(child3);
+        checkChildCount(component, 3);
+        UIComponent child2a = new ComponentTestImpl("c2a");
+        UIComponent child2b = new ComponentTestImpl("c2b");
+        child2.getChildren().add(child2a);
+        child2.getChildren().add(child2b);
+        checkChildCount(child2, 2);
+
+        // Enqueue a single FacesEvent for each component
+        component.queueEvent(new EventTestImpl(component));
+        component.queueEvent(new EventTestImpl(facet1));
+        component.queueEvent(new EventTestImpl(facet2));
+        component.queueEvent(new EventTestImpl(facet3));
+        component.queueEvent(new EventTestImpl(child1));
+        component.queueEvent(new EventTestImpl(child2));
+        component.queueEvent(new EventTestImpl(child3));
+        component.queueEvent(new EventTestImpl(child2a));
+        component.queueEvent(new EventTestImpl(child2b));
+
+        // Test processDecodes()
+        ComponentTestImpl.trace(null);
+        component.processDecodes(facesContext);
+        assertEquals("processDecodes",
+                lifecycleTrace("pD", "d"),
+                ComponentTestImpl.trace());
+
+        // Test processValidators()
+        ComponentTestImpl.trace(null);
+        component.processValidators(facesContext);
+        assertEquals("processValidators",
+                lifecycleTrace("pV", null),
+                ComponentTestImpl.trace());
+
+        // Test processUpdates()
+        ComponentTestImpl.trace(null);
+        component.processUpdates(facesContext);
+        assertEquals("processUpdates",
+                lifecycleTrace("pU", null),
+                ComponentTestImpl.trace());
+
+    }
+
+    // Check lifecycle processing when our "rendered" property is "true"
+    private void checkLifecycleSelfRendered() {
+
+        // Put our component under test in a tree under a UIViewRoot
+        component.getAttributes().clear();
+        component.getChildren().clear();
+        component.getFacets().clear();
+        component.setRendered(true);
+        UIViewRoot root = facesContext.getApplication().getViewHandler().createView(facesContext, null);
+        root.getChildren().add(component);
+
+        // Establish a view with multiple facets and children
+        UIComponent facet1 = new ComponentTestImpl("f1");
+        UIComponent facet2 = new ComponentTestImpl("f2");
+        UIComponent facet3 = new ComponentTestImpl("f3");
+        component.getFacets().put("f1", facet1);
+        component.getFacets().put("f2", facet2);
+        component.getFacets().put("f3", facet3);
+        checkFacetCount(component, 3);
+        UIComponent child1 = new ComponentTestImpl("c1");
+        UIComponent child2 = new ComponentTestImpl("c2");
+        UIComponent child3 = new ComponentTestImpl("c3");
+        component.getChildren().add(child1);
+        component.getChildren().add(child2);
+        component.getChildren().add(child3);
+        checkChildCount(component, 3);
+        UIComponent child2a = new ComponentTestImpl("c2a");
+        UIComponent child2b = new ComponentTestImpl("c2b");
+        child2.getChildren().add(child2a);
+        child2.getChildren().add(child2b);
+        checkChildCount(child2, 2);
+
+        // Enqueue a single FacesEvent for each component
+        component.queueEvent(new EventTestImpl(component));
+        component.queueEvent(new EventTestImpl(facet1));
+        component.queueEvent(new EventTestImpl(facet2));
+        component.queueEvent(new EventTestImpl(facet3));
+        component.queueEvent(new EventTestImpl(child1));
+        component.queueEvent(new EventTestImpl(child2));
+        component.queueEvent(new EventTestImpl(child3));
+        component.queueEvent(new EventTestImpl(child2a));
+        component.queueEvent(new EventTestImpl(child2b));
+
+        // Test processDecodes()
+        ComponentTestImpl.trace(null);
+        component.processDecodes(facesContext);
+        assertEquals("processDecodes",
+                lifecycleTrace("pD", "d"),
+                ComponentTestImpl.trace());
+
+        // Test processValidators()
+        ComponentTestImpl.trace(null);
+        component.processValidators(facesContext);
+        assertEquals("processValidators",
+                lifecycleTrace("pV", null),
+                ComponentTestImpl.trace());
+
+        // Test processUpdates()
+        ComponentTestImpl.trace(null);
+        component.processUpdates(facesContext);
+        assertEquals("processUpdates",
+                lifecycleTrace("pU", null),
+                ComponentTestImpl.trace());
+
+    }
+
+    // Check lifecycle processing when our "rendered" property is "false"
+    private void checkLifecycleSelfUnrendered() {
+
+        // Put our component under test in a tree under a UIViewRoot
+        component.getAttributes().clear();
+        component.getChildren().clear();
+        component.getFacets().clear();
+        component.setRendered(false);
+        UIViewRoot root = facesContext.getApplication().getViewHandler().createView(facesContext, null);
+        root.getChildren().add(component);
+
+        // Establish a view with multiple facets and children
+        UIComponent facet1 = new ComponentTestImpl("f1");
+        UIComponent facet2 = new ComponentTestImpl("f2");
+        UIComponent facet3 = new ComponentTestImpl("f3");
+        component.getFacets().put("f1", facet1);
+        component.getFacets().put("f2", facet2);
+        component.getFacets().put("f3", facet3);
+        checkFacetCount(component, 3);
+        UIComponent child1 = new ComponentTestImpl("c1");
+        UIComponent child2 = new ComponentTestImpl("c2");
+        UIComponent child3 = new ComponentTestImpl("c3");
+        component.getChildren().add(child1);
+        component.getChildren().add(child2);
+        component.getChildren().add(child3);
+        checkChildCount(component, 3);
+        UIComponent child2a = new ComponentTestImpl("c2a");
+        UIComponent child2b = new ComponentTestImpl("c2b");
+        child2.getChildren().add(child2a);
+        child2.getChildren().add(child2b);
+        checkChildCount(child2, 2);
+
+        // Enqueue a single FacesEvent for each component
+        component.queueEvent(new EventTestImpl(component));
+        component.queueEvent(new EventTestImpl(facet1));
+        component.queueEvent(new EventTestImpl(facet2));
+        component.queueEvent(new EventTestImpl(facet3));
+        component.queueEvent(new EventTestImpl(child1));
+        component.queueEvent(new EventTestImpl(child2));
+        component.queueEvent(new EventTestImpl(child3));
+        component.queueEvent(new EventTestImpl(child2a));
+        component.queueEvent(new EventTestImpl(child2b));
+
+        // Test processDecodes()
+        ComponentTestImpl.trace(null);
+        component.processDecodes(facesContext);
+        assertEquals("processDecodes",
+                lifecycleTrace("pD", "d"),
+                ComponentTestImpl.trace());
+
+        // Test processValidators()
+        ComponentTestImpl.trace(null);
+        component.processValidators(facesContext);
+        assertEquals("processValidators",
+                lifecycleTrace("pV", null),
+                ComponentTestImpl.trace());
+
+        // Test processUpdates()
+        ComponentTestImpl.trace(null);
+        component.processUpdates(facesContext);
+        assertEquals("processUpdates",
+                lifecycleTrace("pU", null),
+                ComponentTestImpl.trace());
+
+    }
+
+    // Check that the properties on the specified components are equal
+    protected void checkProperties(UIComponent comp1, UIComponent comp2) {
+        assertEquals(comp1.getClientId(facesContext),
+                comp2.getClientId(facesContext));
+        assertEquals(comp1.getId(), comp2.getId());
+        assertEquals(comp1.isRendered(), comp2.isRendered());
+        assertEquals(comp1.getRendererType(), comp2.getRendererType());
+        assertEquals(comp1.getRendersChildren(), comp2.getRendersChildren());
+    }
+
+    // Check that the configured ValueBindings got restored
+    protected void checkValueBindings(UIComponent comp1, UIComponent comp2) {
+
+        ValueBinding vb1, vb2;
+
+        vb1 = comp1.getValueBinding("baz");
+        vb2 = comp2.getValueBinding("baz");
+        assertEquals(((MockValueBinding) vb1).ref(),
+                ((MockValueBinding) vb2).ref());
+
+        vb1 = comp1.getValueBinding("bop");
+        vb2 = comp2.getValueBinding("bop");
+        assertEquals(((MockValueBinding) vb1).ref(),
+                ((MockValueBinding) vb2).ref());
+
+    }
+
+    protected void checkComponentListeners(UIComponent control, UIComponent toValidate) {
+
+        List<SystemEventListener> lc = control.getListenersForEventClass(PostAddToViewEvent.class);
+        List<SystemEventListener> tvl = toValidate.getListenersForEventClass(PostAddToViewEvent.class);
+        List<SystemEventListener> lc2 = control.getListenersForEventClass(PostConstructViewMapEvent.class);
+        List<SystemEventListener> tvl2 = toValidate.getListenersForEventClass(PostConstructViewMapEvent.class);
+        assertTrue(lc.size() == tvl.size());
+        assertTrue(lc2.size() == tvl2.size());
+
+    }
+
+    // Create a pristine component of the type to be used in state holder tests
+    protected UIComponent createComponent() {
+        return (new ComponentTestImpl());
+    }
+
+    // Populate a pristine component to be used in state holder tests
+    protected void populateComponent(UIComponent component) {
+
+        component.getAttributes().put("foo", "foo value");
+        component.getAttributes().put("bar", "bar value");
+        component.setId("componentId");
+        component.getClientId(facesContext); // Forces evaluation
+        component.setRendered(false);
+        component.setRendererType(null); // Since we have no renderers
+
+        component.setValueBinding("baz",
+                application.createValueBinding("baz.value"));
+        component.setValueBinding("bop",
+                application.createValueBinding("bop.value"));
+        component.subscribeToEvent(PostAddToViewEvent.class,
+                new ComponentListener());
+        component.subscribeToEvent(PostAddToViewEvent.class,
+                new ComponentListener());
+        component.subscribeToEvent(PostConstructViewMapEvent.class,
+                new ComponentListener());
+
+    }
+
+    /**
+     * Construct and return a lifecycle method call trace for the specified
+     * method names.
+     *
+     * @param lmethod Name of the lifecycle method under test
+     * @param cmethod Name of the component method that corresponds
+     * @return 
+     */
+    protected String lifecycleTrace(String lmethod, String cmethod) {
+        StringBuffer sb = new StringBuffer();
+        lifecycleTrace(lmethod, cmethod, component, sb);
+        return (sb.toString());
+    }
+
+    protected void lifecycleTrace(String lmethod, String cmethod,
+            UIComponent component, StringBuffer sb) {
+
+        // Append the call for this lifecycle method
+        String id = component.getId();
+        sb.append("/").append(lmethod).append("-").append(id);
+        if (!component.isRendered()) {
+            return;
+        }
+
+        // Append the calls for each facet
+        Iterator names = component.getFacets().keySet().iterator();
+        while (names.hasNext()) {
+            String name = (String) names.next();
+            sb.append("/").append(lmethod).append("-").append(name);
+            if ((cmethod != null)
+                    && ((UIComponent) component.getFacets().get(name)).isRendered()) {
+                sb.append("/").append(cmethod).append("-").append(name);
+            }
+        }
+
+        // Append the calls for each child
+        Iterator kids = component.getChildren().iterator();
+        while (kids.hasNext()) {
+            UIComponent kid = (UIComponent) kids.next();
+            lifecycleTrace(lmethod, cmethod, kid, sb);
+        }
+
+        // Append the call for this component's component method
+        if ((cmethod != null) && component.isRendered()) {
+            sb.append("/").append(cmethod).append("-").append(id);
+        }
+
+    }
+
+    public void testGetFacetsAndChildren() {
+
+        UIComponent testComponent = new ComponentTestImpl();
+        UIComponent child1 = new ComponentTestImpl("child1");
+        UIComponent child2 = new ComponentTestImpl("child2");
+        UIComponent child3 = new ComponentTestImpl("child3");
+        UIComponent facet1 = new ComponentTestImpl("facet1");
+        UIComponent facet2 = new ComponentTestImpl("facet2");
+        UIComponent facet3 = new ComponentTestImpl("facet3");
+
+        testComponent.getChildren().add(child1);
+        testComponent.getChildren().add(child2);
+        testComponent.getChildren().add(child3);
+        testComponent.getFacets().put("facet1", facet1);
+        testComponent.getFacets().put("facet2", facet2);
+        testComponent.getFacets().put("facet3", facet3);
+
+        Iterator iter = testComponent.getFacetsAndChildren();
+        Object cur = null;
+        boolean exceptionThrown = false;
+        assertTrue(iter.hasNext());
+
+        try {
+            iter.remove();
+        } catch (UnsupportedOperationException e) {
+            exceptionThrown = true;
+        }
+        assertTrue(exceptionThrown);
+
+        // facets are returned in an undefined order.
+        cur = iter.next();
+        assertTrue(cur == facet1 || cur == facet2 || cur == facet3);
+        cur = iter.next();
+        assertTrue(cur == facet1 || cur == facet2 || cur == facet3);
+        cur = iter.next();
+        assertTrue(cur == facet1 || cur == facet2 || cur == facet3);
+
+        // followed by components, in the order added
+        cur = iter.next();
+        assertTrue(cur == child1);
+        cur = iter.next();
+        assertTrue(cur == child2);
+        cur = iter.next();
+        assertTrue(cur == child3);
+
+        assertTrue(!iter.hasNext());
+
+    }
+
+    private Object foundComponent = null;
+
+    /**
+     * <p>
+     * Build a tree with the following layout.</p>
+     * <code><pre>
+     * root: id: root
+     * <p/>
+     *   form1: id: form1
+     * <p/>
+     *     panel1: id: panel
+     * <p/>
+     *       input1: id: input1
+     * <p/>
+     *       input2: id: input2
+     * <p/>
+     *   form2: id: form2
+     * <p/>
+     *     panel2: id: panel
+     * <p/>
+     *       input3: id: input1
+     * <p/>
+     *       input4: id: input2
+     * </pre></code>
+     *
+     * @return a Map<String, UIComponent>. The key is the string before the
+     * first : in the above layout. The value is the component instance. Note
+     * that the keys in the map are <b>not</b> the ids.
+     */
+    private Map<String, UIComponent> setupInvokeOnComponentTree() {
+        UIViewRoot root = new UIViewRoot();
+        UIForm form1 = new UIForm();
+        UIPanel panel1 = new UIPanel();
+        UIInput input1 = new UIInput();
+        UIInput input2 = new UIInput();
+        UIForm form2 = new UIForm();
+        UIPanel panel2 = new UIPanel();
+        UIInput input3 = new UIInput();
+        UIInput input4 = new UIInput();
+
+        root.setId("root");
+        form1.setId("form1");
+        panel1.setId("panel");
+        input1.setId("input1");
+        input2.setId("input2");
+
+        form2.setId("form2");
+        panel2.setId("panel");
+        input3.setId("input1");
+        input4.setId("input2");
+
+        root.getChildren().add(form1);
+        form1.getChildren().add(panel1);
+        panel1.getChildren().add(input1);
+        panel1.getChildren().add(input2);
+
+        root.getChildren().add(form2);
+        form2.getChildren().add(panel2);
+        panel2.getChildren().add(input3);
+        panel2.getChildren().add(input4);
+        Map<String, UIComponent> result = new HashMap<String, UIComponent>();
+        result.put("root", root);
+        result.put("form1", form1);
+        result.put("panel1", panel1);
+        result.put("input1", input1);
+        result.put("input2", input2);
+        result.put("form2", form2);
+        result.put("panel2", panel2);
+        result.put("input3", input3);
+        result.put("input4", input4);
+
+        return result;
+    }
+
+    public void testInvokeOnComponentPositive() throws Exception {
+
+        Map<String, UIComponent> tree = setupInvokeOnComponentTree();
+
+        UIViewRoot root = (UIViewRoot) tree.get("root");
+        UIInput input1 = (UIInput) tree.get("input1");
+
+        foundComponent = null;
+        boolean result = false;
+
+        assertNull(UIComponent.getCurrentComponent(facesContext));
+
+        result = root.invokeOnComponent(facesContext,
+                input1.getClientId(facesContext),
+                new ContextCallback() {
+                    @Override
+                    public void invokeContextCallback(FacesContext context, UIComponent component) {
+                        assertEquals("getCurrentComponent does not return the current component during"
+                                + "invokeOnComponent", UIComponent.getCurrentComponent(context), component);
+                        foundComponent = component;
+                    }
+                });
+        assertEquals(input1, foundComponent);
+        assertTrue(result);
+        assertNull(UIComponent.getCurrentComponent(facesContext));
+
+    }
+
+    public void testInvokeOnComponentNegative() throws Exception {
+        Map<String, UIComponent> tree = setupInvokeOnComponentTree();
+
+        UIViewRoot root = (UIViewRoot) tree.get("root");
+        UIInput input4 = (UIInput) tree.get("input4");
+
+        foundComponent = null;
+        boolean result = false;
+        boolean exceptionThrown = false;
+
+        // Negative case 0, null pointers
+        exceptionThrown = false;
+        FacesContext nullContext = null;
+        ContextCallback nullCallback = null;
+        try {
+            root.invokeOnComponent(nullContext, "form:input7",
+                    nullCallback);
+        } catch (NullPointerException npe) {
+            exceptionThrown = true;
+        }
+        assertTrue(exceptionThrown);
+
+        exceptionThrown = false;
+        try {
+            root.invokeOnComponent(facesContext, null,
+                    nullCallback);
+        } catch (NullPointerException npe) {
+            exceptionThrown = true;
+        }
+        assertTrue(exceptionThrown);
+
+        exceptionThrown = false;
+        try {
+            root.invokeOnComponent(nullContext, null,
+                    nullCallback);
+        } catch (NullPointerException npe) {
+            exceptionThrown = true;
+        }
+        assertTrue(exceptionThrown);
+
+        // Negative case 1, not found component.
+        result = root.invokeOnComponent(facesContext,
+                "form:input7",
+                new ContextCallback() {
+                    @Override
+                    public void invokeContextCallback(FacesContext context, UIComponent component) {
+                        foundComponent = component;
+                    }
+                });
+        assertNull(foundComponent);
+        assertTrue(!result);
+
+        // Negative case 2A, callback throws exception with found component
+        foundComponent = null;
+        result = false;
+        exceptionThrown = false;
+        try {
+            result = root.invokeOnComponent(facesContext,
+                    "form2:input2",
+                    new ContextCallback() {
+                        @Override
+                        public void invokeContextCallback(FacesContext context, UIComponent component) {
+                            foundComponent = component;
+                            // When else am I going to get the chance to throw this exception?
+                            throw new IllegalStateException();
+                        }
+                    });
+        } catch (FacesException e) {
+            assertTrue(e.getCause() instanceof IllegalStateException);
+            exceptionThrown = true;
+        }
+        assertTrue(exceptionThrown);
+        assertEquals(foundComponent, input4);
+        assertTrue(!result);
+
+        // Negative case 2B, callback throws exception with not found component
+        foundComponent = null;
+        result = false;
+        exceptionThrown = false;
+        try {
+            result = root.invokeOnComponent(facesContext,
+                    "form2:input6",
+                    new ContextCallback() {
+                        @Override
+                        public void invokeContextCallback(FacesContext context, UIComponent component) {
+                            foundComponent = component;
+                            // When else am I going to get the chance to throw this exception?
+                            throw new IllegalStateException();
+                        }
+                    });
+        } catch (FacesException e) {
+            assertTrue(e.getCause() instanceof IllegalStateException);
+            exceptionThrown = true;
+        }
+        assertTrue(!exceptionThrown);
+        assertNull(foundComponent);
+        assertTrue(!result);
+
+    }
+
+    public void testInvokeOnComponentWithPrependId() throws Exception {
+        Map<String, UIComponent> tree = setupInvokeOnComponentTree();
+
+        UIViewRoot root = (UIViewRoot) tree.get("root");
+        UIForm truePrependIdForm = (UIForm) tree.get("form1");
+        UIForm falsePrependIdForm = (UIForm) tree.get("form2");
+        UIInput truePrependIdInput = (UIInput) tree.get("input2");
+        UIInput falsePrependIdInput = (UIInput) tree.get("input3");
+
+        truePrependIdForm.setPrependId(true);
+        falsePrependIdForm.setPrependId(false);
+
+        foundComponent = null;
+        boolean result = false;
+        boolean exceptionThrown = false;
+
+        // Case 1, positive find with prependId == true
+        result = root.invokeOnComponent(facesContext,
+                "form1:input2",
+                new ContextCallback() {
+                    @Override
+                    public void invokeContextCallback(FacesContext context, UIComponent component) {
+                        foundComponent = component;
+                    }
+                });
+        assertEquals(truePrependIdInput, foundComponent);
+        assertTrue(result);
+
+        // Case 2, negative find with prependId == true
+        foundComponent = null;
+        result = false;
+
+        result = root.invokeOnComponent(facesContext,
+                "form9:input5",
+                new ContextCallback() {
+                    @Override
+                    public void invokeContextCallback(FacesContext context, UIComponent component) {
+                        foundComponent = component;
+                    }
+                });
+        assertNull(foundComponent);
+        assertTrue(!result);
+
+        // Case 3, exception positive find with prependId == true
+        foundComponent = null;
+        result = false;
+        exceptionThrown = false;
+        try {
+
+            result = root.invokeOnComponent(facesContext,
+                    "form1:input2",
+                    new ContextCallback() {
+                        @Override
+                        public void invokeContextCallback(FacesContext context, UIComponent component) {
+                            foundComponent = component;
+                            throw new IllegalStateException();
+                        }
+                    });
+        } catch (FacesException e) {
+            assertTrue(e.getCause() instanceof IllegalStateException);
+            exceptionThrown = true;
+        }
+        assertEquals(truePrependIdInput, foundComponent);
+        assertTrue(!result);
+        assertTrue(exceptionThrown);
+
+        // Case 4, exception negative find with prependId == true
+        foundComponent = null;
+        result = false;
+        exceptionThrown = false;
+        try {
+
+            result = root.invokeOnComponent(facesContext,
+                    "formFozzy:inputKermit",
+                    new ContextCallback() {
+                        @Override
+                        public void invokeContextCallback(FacesContext context, UIComponent component) {
+                            foundComponent = component;
+                            throw new IllegalStateException();
+                        }
+                    });
+        } catch (FacesException e) {
+            assertTrue(e.getCause() instanceof IllegalStateException);
+            exceptionThrown = true;
+        }
+        assertNull(foundComponent);
+        assertTrue(!result);
+        assertTrue(!exceptionThrown);
+
+        // Case 5, positive find with prependId == false
+        result = root.invokeOnComponent(facesContext,
+                "input1",
+                new ContextCallback() {
+                    @Override
+                    public void invokeContextCallback(FacesContext context, UIComponent component) {
+                        foundComponent = component;
+                    }
+                });
+        assertEquals(falsePrependIdInput, foundComponent);
+        assertTrue(result);
+
+        // Case 6, negative find with prependId == false
+        foundComponent = null;
+        result = false;
+
+        result = root.invokeOnComponent(facesContext,
+                "input99",
+                new ContextCallback() {
+                    @Override
+                    public void invokeContextCallback(FacesContext context, UIComponent component) {
+                        foundComponent = component;
+                    }
+                });
+        assertNull(foundComponent);
+        assertTrue(!result);
+
+        // Case 3, exception positive find with prependId == false
+        foundComponent = null;
+        result = false;
+        exceptionThrown = false;
+        try {
+
+            result = root.invokeOnComponent(facesContext,
+                    "input1",
+                    new ContextCallback() {
+                        @Override
+                        public void invokeContextCallback(FacesContext context, UIComponent component) {
+                            foundComponent = component;
+                            throw new IllegalStateException();
+                        }
+                    });
+        } catch (FacesException e) {
+            assertTrue(e.getCause() instanceof IllegalStateException);
+            exceptionThrown = true;
+        }
+        assertEquals(falsePrependIdInput, foundComponent);
+        assertTrue(!result);
+        assertTrue(exceptionThrown);
+
+        // Case 4, exception negative find with prependId == false
+        foundComponent = null;
+        result = false;
+        exceptionThrown = false;
+        try {
+
+            result = root.invokeOnComponent(facesContext,
+                    "inputKermit",
+                    new ContextCallback() {
+                        @Override
+                        public void invokeContextCallback(FacesContext context, UIComponent component) {
+                            foundComponent = component;
+                            throw new IllegalStateException();
+                        }
+                    });
+        } catch (FacesException e) {
+            assertTrue(e.getCause() instanceof IllegalStateException);
+            exceptionThrown = true;
+        }
+        assertNull(foundComponent);
+        assertTrue(!result);
+        assertTrue(!exceptionThrown);
+
+    }
+
+    public void testChildrenListAfterAddPublish() {
+
+        Listener listener = new Listener();
+        application.subscribeToEvent(PostAddToViewEvent.class, listener);
+
+        UIComponent c1 = createComponent();
+        c1.setInView(true);
+        UIComponent c2 = createComponent();
+        c2.setInView(true);
+        UIComponent c3 = createComponent();
+        c3.setInView(true);
+
+        c1.getChildren().add(c2);
+        SystemEvent e = listener.getEvent();
+        assertNotNull(e);
+        assertTrue(e.getSource() == c2);
+        assertTrue(((UIComponent) e.getSource()).getParent() == c1);
+        listener.reset();
+        c2.getChildren().add(c3);
+        e = listener.getEvent();
+        assertNotNull(e);
+        assertTrue(e.getSource() == c3);
+        assertTrue(((UIComponent) e.getSource()).getParent() == c2);
+
+        //ensure events are re-published if the event is added
+        listener.reset();
+        c2.getChildren().remove(c3);
+        c1.getChildren().add(c3);
+        e = listener.getEvent();
+        assertNotNull(e);
+        assertTrue(e.getSource() == c3);
+        assertTrue(((UIComponent) e.getSource()).getParent() == c1);
+
+        application.unsubscribeFromEvent(PostAddToViewEvent.class, listener);
+
+    }
+
+    public void testFacetMapAfterAddViewPublish() {
+
+        QueueingListener listener = new QueueingListener();
+        application.subscribeToEvent(PostAddToViewEvent.class, listener);
+
+        UIComponent c1 = createComponent();
+        UIComponent c2 = createComponent();
+        UIComponent c3 = createComponent();
+
+        List<SystemEvent> e = listener.getEvents();
+        Map<String, UIComponent> facets = c1.getFacets();
+        facets.put("c2", c2);
+        assertTrue("Expected Event queue size of 0, found: " + e.size(), e.isEmpty());
+
+        UIViewRoot root = new UIViewRoot();
+        root.getChildren().add(c1);
+        assertTrue("Expected Event queue size of 2, found: " + e.size(), e.size() == 2);
+        assertTrue(e.get(0).getSource() == c1);
+        assertTrue(e.get(1).getSource() == c2);
+
+        // remove c1 from the root and add c3 as a facet to c1 - no events should be
+        // published
+        e.clear();
+        root.getChildren().remove(c1);
+        facets = c1.getFacets();
+        facets.put("c3", c3);
+        assertTrue("Expected Event queue size of 0, found: " + e.size(), e.isEmpty());
+
+        // reorganize the facet structure to ensure nested facets work
+        facets.remove("c3");
+        c2.getFacets().put("c3", c3);
+        root.getChildren().add(c1);
+        assertTrue("Expected Event queue size of 3, found: " + e.size(), e.size() == 3);
+        assertTrue(e.get(0).getSource() == c1);
+        assertTrue(e.get(1).getSource() == c2);
+        assertTrue(e.get(2).getSource() == c3);
+
+        e.clear();
+        // ensure clear() method disconnects the facets from the view
+        facets.clear();
+        c2.getFacets().remove("c3");
+        c2.getFacets().put("c3", c3);
+        assertTrue("Expected Event queue size of 0, found: " + e.size(), e.isEmpty());
+
+        application.unsubscribeFromEvent(PostAddToViewEvent.class, listener);
+
+    }
+
+    public void testChildrenListAfterAddViewPublish() {
+
+        QueueingListener listener = new QueueingListener();
+        application.subscribeToEvent(PostAddToViewEvent.class, listener);
+
+        UIComponent c1 = createComponent();
+        UIComponent c2 = createComponent();
+        UIComponent c3 = createComponent();
+        UIComponent c4 = createComponent();
+        c1.getChildren().add(c2);
+        List<SystemEvent> e = listener.getEvents();
+        assertTrue(e.isEmpty());
+        c2.getChildren().add(c3);
+        assertTrue(e.isEmpty());
+        UIViewRoot root = new UIViewRoot();
+        root.getChildren().add(c1);
+
+        // sub-tree has been added to the view.  Ensure that subsequent additions
+        // to that sub-tree cause the PostAddToViewEvent to fire.
+        c2.getChildren().add(c4);
+        assertTrue("Expected Event queue size of 4, found: " + e.size(), e.size() == 4);
+
+        UIComponent[] comps = {
+            c1, c2, c3, c4
+        };
+        for (int i = 0; i < comps.length; i++) {
+            assertTrue("Index " + i + " invalid", e.get(i).getSource() == comps[i]);
+        }
+
+        // remove c1 and it's children from the subview, then remove and
+        // re-add one of the children in the sub-tree.  No event should
+        // be fired
+        e.clear();
+        root.getChildren().remove(c1);
+        c2.getChildren().remove(c4);
+        c2.getChildren().add(c4);
+        assertTrue("AfterAddToView events queued after a sub-tree was removed from the view, and a child added to the sub-view",
+                e.isEmpty());
+
+        c2.getChildren().remove(c4);
+        c1.getChildren().add(c4);
+        assertTrue("AfterAddToView events queued after a sub-tree was removed from the view, and a child added to the sub-view",
+                e.isEmpty());
+
+        // re-wire c1 as a child of root and ensure all children get re-notified
+        root.getChildren().add(c1);
+        assertTrue("Expected Event queue size of 4, found: " + e.size(), e.size() == 4);
+
+        for (int i = 0; i < comps.length; i++) {
+            assertTrue("Index " + i + " invalid", e.get(i).getSource() == comps[i]);
+        }
+
+        // validate clearing c1's children (effectively removing them from the view
+        // will result in no events being fired of components are added to any of
+        // the disconnected children.
+        // At this point in the test, c2 and c4 are children of c1, and c3
+        // is a child of c2.
+        c1.getChildren().clear();
+        UIComponent temp = createComponent();
+        e.clear();
+        c2.getChildren().add(temp);
+        assertTrue("AfterAddToView events queued after a sub-tree was removed from the view, and a child added to the sub-view",
+                e.isEmpty());
+        c2.getChildren().remove(temp);
+        c3.getChildren().add(temp);
+        assertTrue("AfterAddToView events queued after a sub-tree was removed from the view, and a child added to the sub-view",
+                e.isEmpty());
+        c3.getChildren().remove(temp);
+        c4.getChildren().add(temp);
+        assertTrue("AfterAddToView events queued after a sub-tree was removed from the view, and a child added to the sub-view",
+                e.isEmpty());
+        c4.getChildren().remove(temp);
+
+        // now add c2 and c4 as children of c1.  This should cause three
+        // events to fire
+        c1.getChildren().add(c2);
+        c1.getChildren().add(c4);
+        assertTrue("Expected Event queue size of 3, found: " + e.size(), e.size() == 3);
+
+        UIComponent[] comps2 = {
+            c2, c3, c4
+        };
+        for (int i = 0; i < comps2.length; i++) {
+            assertTrue("Index " + i + " invalid", e.get(i).getSource() == comps2[i]);
+        }
+
+        // validate add(int, UIComponent) fires events
+        e.clear();
+        c1.getChildren().remove(c4);
+        c1.getChildren().add(0, c4);
+
+        assertTrue(c1.getChildren().get(0) == c4);
+        assertTrue(c1.getChildren().get(1) == c2);
+        assertTrue("Expected Event queue size of 1, found: " + e.size(), e.size() == 1);
+        assertTrue(e.get(0).getSource() == c4);
+
+        // validate addAll(Collection<UIComponent>) fires events
+        e.clear();
+        c1.getChildren().clear();
+        List<UIComponent> children = new ArrayList<UIComponent>(2);
+        Collections.addAll(children, c2, c4);
+        c1.getChildren().addAll(children);
+        assertTrue(c1.getChildren().get(0) == c2);
+        assertTrue(c1.getChildren().get(1) == c4);
+        assertTrue("Expected Event queue size of 3, found: " + e.size(), e.size() == 3);
+        assertTrue(e.get(0).getSource() == c2);
+        assertTrue(e.get(2).getSource() == c4);
+
+        // validate addAll(int, Collection<UIComponent>) fires events
+        e.clear();
+        children = new ArrayList<UIComponent>(2);
+        UIComponent t1 = createComponent();
+        UIComponent t2 = createComponent();
+        Collections.addAll(children, t1, t2);
+        c1.getChildren().addAll(0, children);
+        assertTrue(c1.getChildren().get(0) == t1);
+        assertTrue(c1.getChildren().get(1) == t2);
+        assertTrue(c1.getChildren().get(2) == c2);
+        assertTrue(c1.getChildren().get(3) == c4);
+        assertTrue("Expected Event queue size of 2, found: " + e.size(), e.size() == 2);
+        assertTrue(e.get(0).getSource() == t1);
+        assertTrue(e.get(1).getSource() == t2);
+
+        // validate retainAll(Collection<UIComponent> properly disconnects
+        // the components from the view such that events aren't fired
+        // if children are added to them
+        e.clear();
+        List<UIComponent> retained = new ArrayList<UIComponent>(2);
+        Collections.addAll(retained, c2, c4);
+        c1.getChildren().retainAll(retained);
+        assertTrue(c1.getChildren().size() == 2);
+        assertTrue(c1.getChildren().get(0) == c2);
+        assertTrue(c1.getChildren().get(1) == c4);
+        t1.getChildren().add(t2);
+        assertTrue("Expected Event queue size of 0, found: " + e.size(), e.isEmpty());
+
+        // test set(int, UIComponent) properly fires an event if the parent
+        // the component is being added to is wired to the view
+        e.clear();
+        c1.getChildren().set(0, t1);
+        assertTrue(c1.getChildren().size() == 2);
+        assertTrue(c1.getChildren().get(0) == t1);
+        assertTrue(c1.getChildren().get(1) == c4);
+        assertTrue("Expected Event queue size of 2, found: " + e.size(), e.size() == 2);
+        assertTrue(e.get(0).getSource() == t1);
+        assertTrue(e.get(1).getSource() == t2);
+
+        // c2 was removed by the set operation, so ensure it's marked as
+        // having been removed from the view by ensuring events aren't fired.
+        e.clear();
+        UIComponent t3 = createComponent();
+        c2.getChildren().add(t3);
+        assertTrue("Expected Event queue size of 0, found: " + e.size(), e.isEmpty());
+
+        application.unsubscribeFromEvent(PostAddToViewEvent.class, listener);
+
+        // validate Iterator.remove() over c1's children correctly disconnects
+        // the children from the view
+        for (Iterator<UIComponent> i = c1.getChildren().iterator(); i.hasNext();) {
+            i.next();
+            i.remove();
+        }
+
+        // at this point, t1 and c4 should be disconnected meaning adding children
+        // to t1, t2, or c4 should result in no events being fired
+        e.clear();
+        t1.getChildren().add(temp);
+        assertTrue("AfterAddToView events queued after a sub-tree was removed from the view, and a child added to the sub-view",
+                e.isEmpty());
+        t1.getChildren().remove(temp);
+        t2.getChildren().add(temp);
+        assertTrue("AfterAddToView events queued after a sub-tree was removed from the view, and a child added to the sub-view",
+                e.isEmpty());
+        t2.getChildren().remove(temp);
+        c4.getChildren().add(temp);
+        assertTrue("AfterAddToView events queued after a sub-tree was removed from the view, and a child added to the sub-view",
+                e.isEmpty());
+        c4.getChildren().remove(temp);
+
+    }
+
+    public void testEncodeBeginPublish() throws Exception {
+
+        Listener listener = new Listener();
+        application.subscribeToEvent(PreRenderComponentEvent.class, listener);
+
+        UIComponent c1 = createComponent();
+        c1.encodeBegin(facesContext);
+        SystemEvent e = listener.getEvent();
+        assertNotNull(e);
+        assertTrue(e.getSource() == c1);
+        listener.reset();
+        c1.encodeChildren(facesContext);
+        assertNull(listener.getEvent());
+        c1.encodeEnd(facesContext);
+        assertNull(listener.getEvent());
+
+        application.unsubscribeFromEvent(PreRenderComponentEvent.class, listener);
+
+    }
+
+    // --------------------------------------------------------- Private Classes
+    public static final class Listener implements SystemEventListener {
+
+        private SystemEvent event;
+
+        @Override
+        public void processEvent(SystemEvent event)
+                throws AbortProcessingException {
+            this.event = event;
+        }
+
+        @Override
+        public boolean isListenerForSource(Object source) {
+            return (source instanceof UIComponent);
+        }
+
+        public SystemEvent getEvent() {
+            return event;
+        }
+
+        public void reset() {
+            event = null;
+        }
+    }
+
+    public static final class QueueingListener implements SystemEventListener {
+
+        private List<SystemEvent> events = new ArrayList<SystemEvent>();
+
+        @Override
+        public void processEvent(SystemEvent event)
+                throws AbortProcessingException {
+            events.add(event);
+        }
+
+        @Override
+        public boolean isListenerForSource(Object source) {
+            return (source instanceof UIComponent);
+        }
+
+        public List<SystemEvent> getEvents() {
+            return events;
+        }
+
+        public void reset() {
+            events.clear();
+        }
+    }
+
+    public static final class ComponentListener implements ComponentSystemEventListener {
+
+        @Override
+        public void processEvent(ComponentSystemEvent event)
+                throws AbortProcessingException {
+
+        }
+    }
+
+    public static final class UIComponentListener extends UIComponentBase implements ComponentSystemEventListener {
+
+        @Override
+        public String getFamily() {
+            return "family";
+        }
+
+        @Override
+        public void processEvent(ComponentSystemEvent event)
+                throws AbortProcessingException {
+        }
+
+    }
+
+    public static final class UIComponentOverrideEncodeBegin extends UIComponentBase {
+
+        @Override
+        public String getFamily() {
+            return "UIComponentOverrideEncodeBegin";
+        }
+
+        @Override
+        public void encodeBegin(FacesContext context) throws IOException {
+            // no-op
+        }
+
+    }
+
+    public static final class UIComponentOverrideEncodeEnd extends UIComponentBase {
+
+        @Override
+        public String getFamily() {
+            return "UIComponentOverrideEncodeEnd";
+        }
+
+        @Override
+        public void encodeEnd(FacesContext context) throws IOException {
+            // no-op
+        }
+    }
+
+    public static final class CustomAbortProcessingException extends AbortProcessingException {
+
+        public CustomAbortProcessingException() {
+            super();
+        }
+
+        public CustomAbortProcessingException(String message) {
+            super(message);
+        }
+
+        public CustomAbortProcessingException(Throwable cause) {
+            super(cause);
+        }
+
+        public CustomAbortProcessingException(String message, Throwable cause) {
+            super(message, cause);
+        }
+    }
+}
diff --git a/test/unit/src/test/java/javax/faces/component/UIComponentTestCase.java b/test/unit/src/test/java/javax/faces/component/UIComponentTestCase.java
new file mode 100644
index 0000000..12feed2
--- /dev/null
+++ b/test/unit/src/test/java/javax/faces/component/UIComponentTestCase.java
@@ -0,0 +1,2049 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package javax.faces.component;
+
+import com.sun.faces.junit.JUnitFacesTestCaseBase;
+import com.sun.faces.mock.MockRenderKit;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import javax.faces.FactoryFinder;
+import javax.faces.context.FacesContext;
+import javax.faces.event.AbortProcessingException;
+import javax.faces.event.ComponentSystemEvent;
+import javax.faces.event.ComponentSystemEventListener;
+import javax.faces.event.PostValidateEvent;
+import javax.faces.event.PreValidateEvent;
+import javax.faces.render.RenderKit;
+import javax.faces.render.RenderKitFactory;
+import javax.faces.validator.Validator;
+import javax.faces.validator.ValidatorException;
+import java.io.Serializable;
+import java.util.*;
+import static junit.framework.Assert.assertEquals;
+import static junit.framework.Assert.assertNotNull;
+import static junit.framework.Assert.assertNull;
+import static junit.framework.Assert.assertTrue;
+import static junit.framework.Assert.fail;
+
+/**
+ * <p>
+ * Base unit tests for all {@link UIComponent} implementation classes.</p>
+ */
+public class UIComponentTestCase extends JUnitFacesTestCaseBase {
+
+    // ------------------------------------------------------ Instance Variables
+    // The component to be tested
+    protected UIComponent component = null;
+
+    // The set of attribute names expected on a pristine component instance
+    protected String expectedAttributes[] = null;
+
+    // The expected component family on a pristine component instance
+    protected String expectedFamily = null;
+
+    // The expected component identifier on a pristine component instance
+    protected String expectedId = null;
+
+    // The expected rendered on a pristine component instance
+    protected boolean expectedRendered = true;
+
+    // The expected rendererType on a pristine component instance
+    protected String expectedRendererType = null;
+
+    // The expected rendersChildren on a pristine component instance
+    protected boolean expectedRendersChildren = false;
+
+    private Map.Entry<String, UIComponent> bogusEntry
+            = new Map.Entry<String, UIComponent>() {
+                @Override
+                public boolean equals(Object r) {
+                    return false;
+                }
+
+                @Override
+                public String getKey() {
+                    return "key";
+                }
+
+                @Override
+                public int hashCode() {
+                    return 0;
+                }
+
+                @Override
+                public UIComponent getValue() {
+                    return null;
+                }
+
+                @Override
+                public UIComponent setValue(UIComponent value) {
+                    return null;
+                }
+
+            };
+
+    // ------------------------------------------------------------ Constructors
+    // Construct a new instance of this test case.
+    public UIComponentTestCase(String name) {
+        super(name);
+    }
+
+    // ---------------------------------------------------- Overall Test Methods
+    // Set up instance variables required by this test case.
+    @Override
+    public void setUp() throws Exception {
+        super.setUp();
+
+        expectedAttributes = new String[0];
+        expectedFamily = "Test";
+        expectedId = "test";
+        expectedRendered = true;
+        expectedRendererType = null;
+        expectedRendersChildren = false;
+
+        UIViewRoot root = facesContext.getApplication().getViewHandler().createView(facesContext, null);
+        root.setViewId("/viewId");
+        facesContext.setViewRoot(root);
+        RenderKitFactory renderKitFactory = (RenderKitFactory) FactoryFinder.getFactory(FactoryFinder.RENDER_KIT_FACTORY);
+        RenderKit renderKit = new MockRenderKit();
+        try {
+            renderKitFactory.addRenderKit(RenderKitFactory.HTML_BASIC_RENDER_KIT,
+                    renderKit);
+        } catch (IllegalArgumentException e) {
+        }
+
+        component = new ComponentTestImpl(expectedId);
+    }
+
+    // Return the tests included in this test case.
+    public static Test suite() {
+        return (new TestSuite(UIComponentTestCase.class));
+    }
+
+    // Tear down instance variables required by this test case.
+    @Override
+    public void tearDown() throws Exception {
+
+        component = null;
+        expectedAttributes = null;
+        expectedFamily = null;
+        expectedId = null;
+        expectedRendered = true;
+        expectedRendererType = null;
+        expectedRendersChildren = false;
+        super.tearDown();
+
+    }
+
+    // ------------------------------------------------- Individual Test Methods
+    public void testValidationEvents() {
+        Listener prelistener = new Listener();
+        Listener postlistener = new Listener();
+        List<String> ldata = new ArrayList<String>();
+        ldata.add("one");
+        UIViewRoot root = new UIViewRoot();
+        root.setId("root");
+        root.subscribeToEvent(PreValidateEvent.class, prelistener);
+        root.subscribeToEvent(PostValidateEvent.class, postlistener);
+        UIOutput out = new UIOutput();
+        out.setId("out");
+        out.subscribeToEvent(PreValidateEvent.class, prelistener);
+        out.subscribeToEvent(PostValidateEvent.class, postlistener);
+        root.getChildren().add(out);
+        UIForm f = new UIForm();
+        f.setSubmitted(true);
+        f.setId("form");
+        f.subscribeToEvent(PreValidateEvent.class, prelistener);
+        f.subscribeToEvent(PostValidateEvent.class, postlistener);
+        root.getChildren().add(f);
+        UIData data = new UIData();
+        data.setId("data");
+        data.subscribeToEvent(PreValidateEvent.class, prelistener);
+        data.subscribeToEvent(PostValidateEvent.class, postlistener);
+        data.setValue(ldata);
+        UIColumn c = new UIColumn();
+        c.setId("column");
+        c.subscribeToEvent(PreValidateEvent.class, prelistener);
+        c.subscribeToEvent(PostValidateEvent.class, postlistener);
+        UIInput in = new UIInput();
+        in.setId("in");
+        in.subscribeToEvent(PreValidateEvent.class, prelistener);
+        in.subscribeToEvent(PostValidateEvent.class, postlistener);
+        in.addValidator(new ValidationSignal());
+        c.getChildren().add(in);
+        data.getChildren().add(c);
+        f.getChildren().add(data);
+        data.setRowIndex(0);
+        UIComponent col = data.getChildren().get(0);
+        ((UIInput) col.getChildren().get(0)).setSubmittedValue("hello");
+        data.setRowIndex(-1);
+        root.processValidators(facesContext);
+        assertEquals("root/out/form/data/in/", "root/out/form/data/in/", prelistener.getResults());
+        assertEquals("out/*/in/data/form/root/", "out/*/in/data/form/root/", postlistener.getResults());
+
+    }
+
+    // Test behavior of Map returned by getAttributes()
+    public void testAttributesMap() {
+
+        // Initialize some attributes
+        Map attributes = component.getAttributes();
+        attributes.put("foo", "bar");
+        attributes.put("baz", "bop");
+
+        // Test containsKey()
+        assertTrue(attributes.containsKey("foo"));
+        assertTrue(attributes.containsKey("baz"));
+        assertTrue(!attributes.containsKey("bar"));
+        assertTrue(!attributes.containsKey("bop"));
+        assertTrue(!attributes.containsKey("id")); // Property name
+        assertTrue(!attributes.containsKey("parent")); // Property name
+
+        // Test get()
+        assertEquals("bar", (String) attributes.get("foo"));
+        assertEquals("bop", (String) attributes.get("baz"));
+        assertNull((String) attributes.get("bar"));
+        assertNull((String) attributes.get("bop"));
+        component.setId("oldvalue");
+        assertEquals("oldvalue", (String) attributes.get("id")); // Property
+        component.setRendered(false);
+        assertTrue(!((Boolean) attributes.get("rendered")).booleanValue());
+        component.setRendered(true);
+        assertTrue(((Boolean) attributes.get("rendered")).booleanValue());
+
+        // Test put()
+        try {
+            attributes.put(null, "dummy");
+            fail("Should have thrown NullPointerException");
+        } catch (NullPointerException e) {
+            // Expected result
+        }
+        try {
+            attributes.put(new java.util.Date(), "dummy");
+            fail("Should have thrown ClassCastException");
+        } catch (ClassCastException e) {
+            // Expected result
+        }
+        try {
+            attributes.put("rendersChildren", null); // Primitive property
+            fail("Should have thrown IllegalArgumentException");
+        } catch (IllegalArgumentException e) {
+            // Expected result
+        }
+        try {
+            attributes.put("rendersChildren", Boolean.TRUE); // Write-only
+            fail("Should have thrown IllegalArgumentException");
+        } catch (IllegalArgumentException e) {
+            // Expected result
+        }
+        attributes.put("id", "newvalue");
+        assertEquals("newvalue", (String) attributes.get("id"));
+        assertEquals("newvalue", component.getId());
+        attributes.put("rendered", Boolean.TRUE);
+        assertTrue(component.isRendered());
+        attributes.put("rendered", Boolean.FALSE);
+        assertTrue(!component.isRendered());
+
+        // Test remove()
+        attributes.remove("baz");
+        assertTrue(!attributes.containsKey("baz"));
+        assertNull(attributes.get("baz"));
+        try {
+            attributes.remove("id");
+            fail("Should have thrown IllegalArgumentException()");
+        } catch (IllegalArgumentException e) {
+            // Expected result
+        }
+
+    }
+
+    // Negative tests on attribute methods
+    public void testAttributesNegative() {
+
+        // getAttributes().get() - null
+        try {
+            Object value = component.getAttributes().get(null);
+            fail("should have thrown NullPointerException");
+        } catch (NullPointerException e) {
+            // Expected result
+        }
+
+        // getAttributes().put() - null
+        try {
+            component.getAttributes().put(null, "bar");
+            fail("should have thrown NullPointerException");
+        } catch (NullPointerException e) {
+            // Expected result
+        }
+
+    }
+
+    // Positive tests on attribute methods
+    public void testAttributesPositive() {
+
+        checkAttributeCount(component, expectedAttributes.length);
+        checkAttributeMissing(component, "foo");
+        checkAttributeMissing(component, "baz");
+
+        component.getAttributes().put("foo", "bar");
+        checkAttributeCount(component, expectedAttributes.length + 1);
+        checkAttributePresent(component, "foo", "bar");
+        checkAttributeMissing(component, "baz");
+
+        component.getAttributes().put("baz", "bop");
+        checkAttributeCount(component, expectedAttributes.length + 2);
+        checkAttributePresent(component, "foo", "bar");
+        checkAttributePresent(component, "baz", "bop");
+
+        component.getAttributes().put("baz", "boo");
+        checkAttributeCount(component, expectedAttributes.length + 2);
+        checkAttributePresent(component, "foo", "bar");
+        checkAttributePresent(component, "baz", "boo");
+
+        component.getAttributes().remove("foo");
+        checkAttributeCount(component, expectedAttributes.length + 1);
+        checkAttributeMissing(component, "foo");
+        checkAttributePresent(component, "baz", "boo");
+
+    }
+
+    // Test attribute-property transparency
+    public void testAttributesTransparency() {
+
+        assertEquals(component.getChildren(),
+                (List) component.getAttributes().get("children"));
+
+        assertEquals(component.getFacets(),
+                (Map) component.getAttributes().get("facets"));
+
+        assertEquals(component.getId(),
+                (String) component.getAttributes().get("id"));
+
+        assertEquals(component.getParent(),
+                (UIComponent) component.getAttributes().get("parent"));
+
+        assertEquals(component.isRendered(),
+                ((Boolean) component.getAttributes().get("rendered")).
+                booleanValue());
+        component.setRendered(false);
+        assertEquals(Boolean.FALSE,
+                (Boolean) component.getAttributes().get("rendered"));
+        component.setRendered(true);
+        assertEquals(Boolean.TRUE,
+                (Boolean) component.getAttributes().get("rendered"));
+        component.getAttributes().put("rendered", Boolean.FALSE);
+        assertTrue(!component.isRendered());
+        component.getAttributes().put("rendered", Boolean.TRUE);
+        assertTrue(component.isRendered());
+
+        component.setRendererType("foo");
+        assertEquals("foo",
+                (String) component.getAttributes().get("rendererType"));
+        component.setRendererType(null);
+        assertNull((String) component.getAttributes().get("rendererType"));
+        component.getAttributes().put("rendererType", "bar");
+        assertEquals("bar", component.getRendererType());
+        component.getAttributes().put("rendererType", null);
+        assertNull(component.getRendererType());
+
+        assertEquals(component.getRendersChildren(),
+                ((Boolean) component.getAttributes().
+                get("rendersChildren")).booleanValue());
+
+    }
+
+    // Test getChildren().iterator()
+    public void testChildrenIterator() {
+
+        Iterator kids;
+
+        // Construct components we will need
+        UIComponent comp0 = new ComponentTestImpl(null);
+        UIComponent comp1 = new ComponentTestImpl("comp1");
+        UIComponent comp2 = new ComponentTestImpl("comp2");
+        UIComponent comp3 = new ComponentTestImpl("comp3");
+        UIComponent comp4 = new ComponentTestImpl("comp4");
+        UIComponent comp5 = new ComponentTestImpl("comp5");
+        List comps = new ArrayList();
+        comps.add(comp0);
+        comps.add(comp1);
+        comps.add(comp2);
+        comps.add(comp3);
+        comps.add(comp4);
+        comps.add(comp5);
+
+        // Test hasNext() and next()
+        component.getChildren().clear();
+        component.getChildren().addAll(comps);
+        kids = component.getChildren().iterator();
+        assertTrue(kids.hasNext());
+        assertEquals(comp0, (UIComponent) kids.next());
+        assertEquals(comp1, (UIComponent) kids.next());
+        assertEquals(comp2, (UIComponent) kids.next());
+        assertEquals(comp3, (UIComponent) kids.next());
+        assertEquals(comp4, (UIComponent) kids.next());
+        assertEquals(comp5, (UIComponent) kids.next());
+        assertTrue(!kids.hasNext());
+
+        // Test remove()
+        component.getChildren().clear();
+        component.getChildren().addAll(comps);
+        kids = component.getChildren().iterator();
+        while (kids.hasNext()) {
+            UIComponent kid = (UIComponent) kids.next();
+            if ((kid == comp2) || (kid == comp4)) {
+                kids.remove();
+            }
+        }
+        kids = component.getChildren().iterator();
+        assertTrue(kids.hasNext());
+        assertEquals(comp0, (UIComponent) kids.next());
+        assertEquals(comp1, (UIComponent) kids.next());
+        assertEquals(comp3, (UIComponent) kids.next());
+        assertEquals(comp5, (UIComponent) kids.next());
+        assertTrue(!kids.hasNext());
+
+    }
+
+    // Test getChildren().listIterator()
+    public void testChildrenListIterator() {
+
+        ListIterator kids;
+
+        // Construct components we will need
+        UIComponent comp0 = new ComponentTestImpl(null);
+        UIComponent comp1 = new ComponentTestImpl("comp1");
+        UIComponent comp2 = new ComponentTestImpl("comp2");
+        UIComponent comp3 = new ComponentTestImpl("comp3");
+        UIComponent comp4 = new ComponentTestImpl("comp4");
+        UIComponent comp5 = new ComponentTestImpl("comp5");
+        UIComponent comp6 = new ComponentTestImpl("comp6");
+        List comps = new ArrayList();
+        comps.add(comp0);
+        comps.add(comp1);
+        comps.add(comp2);
+        comps.add(comp3);
+        comps.add(comp4);
+        comps.add(comp5);
+
+        // Test hasNext(), next(), and nextIndex()
+        component.getChildren().clear();
+        component.getChildren().addAll(comps);
+        kids = component.getChildren().listIterator();
+        assertTrue(kids.hasNext());
+        assertEquals(0, kids.nextIndex());
+        assertEquals(comp0, (UIComponent) kids.next());
+        assertEquals(1, kids.nextIndex());
+        assertEquals(comp1, (UIComponent) kids.next());
+        assertEquals(2, kids.nextIndex());
+        assertEquals(comp2, (UIComponent) kids.next());
+        assertEquals(3, kids.nextIndex());
+        assertEquals(comp3, (UIComponent) kids.next());
+        assertEquals(4, kids.nextIndex());
+        assertEquals(comp4, (UIComponent) kids.next());
+        assertEquals(5, kids.nextIndex());
+        assertEquals(comp5, (UIComponent) kids.next());
+        assertEquals(6, kids.nextIndex());
+        assertTrue(!kids.hasNext());
+
+        // Test hasPrevious(), previous(), and previousIndex()
+        assertTrue(kids.hasPrevious());
+        assertEquals(5, kids.previousIndex());
+        assertEquals(comp5, (UIComponent) kids.previous());
+        assertEquals(4, kids.previousIndex());
+        assertEquals(comp4, (UIComponent) kids.previous());
+        assertEquals(3, kids.previousIndex());
+        assertEquals(comp3, (UIComponent) kids.previous());
+        assertEquals(2, kids.previousIndex());
+        assertEquals(comp2, (UIComponent) kids.previous());
+        assertEquals(1, kids.previousIndex());
+        assertEquals(comp1, (UIComponent) kids.previous());
+        assertEquals(0, kids.previousIndex());
+        assertEquals(comp0, (UIComponent) kids.previous());
+        assertEquals(-1, kids.previousIndex());
+        assertTrue(!kids.hasPrevious());
+
+        // Test remove()
+        component.getChildren().clear();
+        component.getChildren().addAll(comps);
+        kids = component.getChildren().listIterator();
+        while (kids.hasNext()) {
+            UIComponent kid = (UIComponent) kids.next();
+            if ((kid == comp2) || (kid == comp4)) {
+                kids.remove();
+            }
+        }
+        kids = component.getChildren().listIterator();
+        assertTrue(kids.hasNext());
+        assertEquals(comp0, (UIComponent) kids.next());
+        assertEquals(comp1, (UIComponent) kids.next());
+        assertEquals(comp3, (UIComponent) kids.next());
+        assertEquals(comp5, (UIComponent) kids.next());
+        assertTrue(!kids.hasNext());
+
+        // Test set()
+        component.getChildren().clear();
+        component.getChildren().addAll(comps);
+        kids = component.getChildren().listIterator();
+        while (kids.hasNext()) {
+            UIComponent kid = (UIComponent) kids.next();
+            if (kid == comp2) {
+                kids.set(comp6);
+            }
+        }
+        kids = component.getChildren().listIterator();
+        assertTrue(kids.hasNext());
+        assertEquals(0, kids.nextIndex());
+        assertEquals(comp0, (UIComponent) kids.next());
+        assertEquals(1, kids.nextIndex());
+        assertEquals(comp1, (UIComponent) kids.next());
+        assertEquals(2, kids.nextIndex());
+        assertEquals(comp6, (UIComponent) kids.next());
+        assertEquals(3, kids.nextIndex());
+        assertEquals(comp3, (UIComponent) kids.next());
+        assertEquals(4, kids.nextIndex());
+        assertEquals(comp4, (UIComponent) kids.next());
+        assertEquals(5, kids.nextIndex());
+        assertEquals(comp5, (UIComponent) kids.next());
+        assertEquals(6, kids.nextIndex());
+        assertTrue(!kids.hasNext());
+
+        // Test add()
+        component.getChildren().clear();
+        component.getChildren().addAll(comps);
+        kids = component.getChildren().listIterator();
+        while (kids.hasNext()) {
+            UIComponent kid = (UIComponent) kids.next();
+            if (kid == comp2) {
+                kids.add(comp6);
+            }
+        }
+        kids = component.getChildren().listIterator();
+        assertTrue(kids.hasNext());
+        assertEquals(0, kids.nextIndex());
+        assertEquals(comp0, (UIComponent) kids.next());
+        assertEquals(1, kids.nextIndex());
+        assertEquals(comp1, (UIComponent) kids.next());
+        assertEquals(2, kids.nextIndex());
+        assertEquals(comp2, (UIComponent) kids.next());
+        assertEquals(3, kids.nextIndex());
+        assertEquals(comp6, (UIComponent) kids.next());
+        assertEquals(4, kids.nextIndex());
+        assertEquals(comp3, (UIComponent) kids.next());
+        assertEquals(5, kids.nextIndex());
+        assertEquals(comp4, (UIComponent) kids.next());
+        assertEquals(6, kids.nextIndex());
+        assertEquals(comp5, (UIComponent) kids.next());
+        assertEquals(7, kids.nextIndex());
+        assertTrue(!kids.hasNext());
+
+        // Test listIterator(int)
+        component.getChildren().clear();
+        component.getChildren().addAll(comps);
+        kids = component.getChildren().listIterator(2);
+        assertTrue(kids.hasNext());
+        assertTrue(kids.hasPrevious());
+        assertEquals(2, kids.nextIndex());
+        assertEquals(1, kids.previousIndex());
+        assertEquals(comp2, (UIComponent) kids.next());
+        assertEquals(comp3, (UIComponent) kids.next());
+        assertEquals(comp4, (UIComponent) kids.next());
+        assertEquals(comp4, (UIComponent) kids.previous());
+        assertEquals(comp3, (UIComponent) kids.previous());
+        assertEquals(comp2, (UIComponent) kids.previous());
+        assertEquals(comp1, (UIComponent) kids.previous());
+
+        // Test IOB exception for list iterator
+        component.getChildren().clear();
+        component.getChildren().addAll(comps);
+        try {
+            component.getChildren().listIterator(-1);
+            fail("Should throw IndexOutOfBoundsException on index -1");
+        } catch (IndexOutOfBoundsException e) {
+            //Expected result
+        }
+
+        try {
+            component.getChildren().listIterator(component.getChildren().size() + 1);
+            fail("Should throw IndexOutOfBoundsException on index = size() + 1");
+        } catch (IndexOutOfBoundsException e) {
+            //Expected result
+        }
+
+        //Iterate with list iterator in reverse order
+        int i = component.getChildren().size() - 1;
+        for (ListIterator<UIComponent> li = component.getChildren().listIterator(
+                component.getChildren().size()); li.hasPrevious();) {
+
+            assertEquals(comps.get(i--), li.previous());
+        }
+
+    }
+
+    // Negative tests on children methods
+    public void testChidrenNegative() {
+
+        // Construct components we will need
+        UIComponent comp0 = new ComponentTestImpl(null);
+        UIComponent comp1 = new ComponentTestImpl("comp1");
+        UIComponent comp2 = new ComponentTestImpl("comp2");
+        UIComponent comp3 = new ComponentTestImpl("comp3");
+
+        // Set up and verify initial state
+        List children = component.getChildren();
+        children.add(comp0);
+        children.add(comp1);
+        children.add(comp2);
+        checkChildCount(component, 3);
+        checkChildPresent(component, comp0, 0);
+        checkChildPresent(component, comp1, 1);
+        checkChildPresent(component, comp2, 2);
+        checkChildMissing(component, comp3);
+
+        // add(Object) - ClassCastException
+        try {
+            children.add("String");
+            fail("Should have thrown ClassCastException");
+        } catch (ClassCastException e) {
+            // Expected result
+        }
+        checkChildCount(component, 3);
+        checkChildPresent(component, comp0, 0);
+        checkChildPresent(component, comp1, 1);
+        checkChildPresent(component, comp2, 2);
+        checkChildMissing(component, comp3);
+
+        // add(Object) - NullPointerException
+        try {
+            children.add(null);
+            fail("Should have thrown NullPointerException");
+        } catch (NullPointerException e) {
+            // Expected result
+        }
+        checkChildCount(component, 3);
+        checkChildPresent(component, comp0, 0);
+        checkChildPresent(component, comp1, 1);
+        checkChildPresent(component, comp2, 2);
+        checkChildMissing(component, comp3);
+
+        // add(int,Object) - ClassCastException
+        try {
+            children.add(1, "String");
+            fail("Should have thrown ClassCastException");
+        } catch (ClassCastException e) {
+            // Expected result
+        }
+        checkChildCount(component, 3);
+        checkChildPresent(component, comp0, 0);
+        checkChildPresent(component, comp1, 1);
+        checkChildPresent(component, comp2, 2);
+        checkChildMissing(component, comp3);
+
+        // add(int,Object) - IndexOutOfBoundsException low
+        try {
+            children.add(-1, comp3);
+            fail("Should have thrown IndexOutOfBoundsException low");
+        } catch (IndexOutOfBoundsException e) {
+            // Expected result
+        }
+        checkChildCount(component, 3);
+        checkChildPresent(component, comp0, 0);
+        checkChildPresent(component, comp1, 1);
+        checkChildPresent(component, comp2, 2);
+        checkChildMissing(component, comp3);
+
+        // add(int,Object) - IndexOutOfBoundsException high
+        try {
+            children.add(4, comp3);
+            fail("Should have thrown IndexOutOfBoundsException high");
+        } catch (IndexOutOfBoundsException e) {
+            // Expected result
+        }
+        checkChildCount(component, 3);
+        checkChildPresent(component, comp0, 0);
+        checkChildPresent(component, comp1, 1);
+        checkChildPresent(component, comp2, 2);
+        checkChildMissing(component, comp3);
+
+        // add(int,Object) - NullPointerException
+        try {
+            children.add(1, null);
+            fail("Should have thrown NullPointerException");
+        } catch (NullPointerException e) {
+            // Expected result
+        }
+        checkChildCount(component, 3);
+        checkChildPresent(component, comp0, 0);
+        checkChildPresent(component, comp1, 1);
+        checkChildPresent(component, comp2, 2);
+        checkChildMissing(component, comp3);
+
+        // set(int,Object) - ClassCastException
+        try {
+            children.set(1, "String");
+            fail("Should have thrown ClassCastException");
+        } catch (ClassCastException e) {
+            // Expected result
+        }
+        checkChildCount(component, 3);
+        checkChildPresent(component, comp0, 0);
+        checkChildPresent(component, comp1, 1);
+        checkChildPresent(component, comp2, 2);
+        checkChildMissing(component, comp3);
+
+        // set(int,Object) - IndexOutOfBoundsException low
+        try {
+            children.set(-1, comp3);
+            fail("Should have thrown IndexOutOfBoundsException low");
+        } catch (IndexOutOfBoundsException e) {
+            // Expected result
+        }
+        checkChildCount(component, 3);
+        checkChildPresent(component, comp0, 0);
+        checkChildPresent(component, comp1, 1);
+        checkChildPresent(component, comp2, 2);
+        checkChildMissing(component, comp3);
+
+        // set(int,Object) - IndexOutOfBoundsException high
+        try {
+            children.set(4, comp3);
+            fail("Should have thrown IndexOutOfBoundsException high");
+        } catch (IndexOutOfBoundsException e) {
+            // Expected result
+        }
+        checkChildCount(component, 3);
+        checkChildPresent(component, comp0, 0);
+        checkChildPresent(component, comp1, 1);
+        checkChildPresent(component, comp2, 2);
+        checkChildMissing(component, comp3);
+
+        // set(int,Object) - NullPointerException
+        try {
+            children.set(1, null);
+            fail("Should have thrown NullPointerException");
+        } catch (NullPointerException e) {
+            // Expected result
+        }
+        checkChildCount(component, 3);
+        checkChildPresent(component, comp0, 0);
+        checkChildPresent(component, comp1, 1);
+        checkChildPresent(component, comp2, 2);
+        checkChildMissing(component, comp3);
+
+    }
+
+    // Positive tests on children methods
+    public void testChildrenPositive() {
+
+        // Construct components we will need
+        UIComponent comp0 = new ComponentTestImpl(null);
+        UIComponent comp1 = new ComponentTestImpl("comp1");
+        UIComponent comp2 = new ComponentTestImpl("comp2");
+        UIComponent comp3 = new ComponentTestImpl("comp3");
+        UIComponent comp4 = new ComponentTestImpl("comp4");
+        UIComponent comp5 = new ComponentTestImpl("comp5");
+        UIComponent comp6 = new ComponentTestImpl("comp6");
+
+        // Verify initial state
+        List children = component.getChildren();
+        checkChildMissing(component, comp0);
+        checkChildCount(component, 0);
+        checkChildMissing(component, comp1);
+        checkChildMissing(component, comp2);
+        checkChildMissing(component, comp3);
+        checkChildMissing(component, comp4);
+        checkChildMissing(component, comp5);
+        checkChildMissing(component, comp6);
+
+        // add(Object)
+        children.add(comp1);
+        checkChildCount(component, 1);
+        checkChildMissing(component, comp0);
+        checkChildPresent(component, comp1, 0);
+        checkChildMissing(component, comp2);
+        checkChildMissing(component, comp3);
+        checkChildMissing(component, comp4);
+        checkChildMissing(component, comp5);
+        checkChildMissing(component, comp6);
+
+        // add(int, Object)
+        children.add(0, comp0);
+        checkChildCount(component, 2);
+        checkChildPresent(component, comp0, 0);
+        checkChildPresent(component, comp1, 1);
+        checkChildMissing(component, comp2);
+        checkChildMissing(component, comp3);
+        checkChildMissing(component, comp4);
+        checkChildMissing(component, comp5);
+        checkChildMissing(component, comp6);
+
+        // addAll(Collection)
+        ArrayList list1 = new ArrayList();
+        list1.add(comp4);
+        list1.add(comp5);
+        children.addAll(list1);
+        checkChildCount(component, 4);
+        checkChildPresent(component, comp0, 0);
+        checkChildPresent(component, comp1, 1);
+        checkChildMissing(component, comp2);
+        checkChildMissing(component, comp3);
+        checkChildPresent(component, comp4, 2);
+        checkChildPresent(component, comp5, 3);
+        checkChildMissing(component, comp6);
+
+        // addAll(int, Collection)
+        ArrayList list2 = new ArrayList();
+        list2.add(comp2);
+        list2.add(comp3);
+        children.addAll(2, list2);
+        checkChildCount(component, 6);
+        checkChildPresent(component, comp0, 0);
+        checkChildPresent(component, comp1, 1);
+        checkChildPresent(component, comp2, 2);
+        checkChildPresent(component, comp3, 3);
+        checkChildPresent(component, comp4, 4);
+        checkChildPresent(component, comp5, 5);
+        checkChildMissing(component, comp6);
+
+        // contains(Object) is tested in checkChildPresent / checkChildMissing
+        // containsAll(Collection)
+        assertTrue(children.containsAll(list1));
+        assertTrue(children.containsAll(list2));
+
+        // get(int) is tested in checkChildPresent / checkChildMissing
+        // indexOf(Object) is tested in checkChildPresent / checkChildMissing
+        // isEmpty() is tested in checkChildCount
+        // iterator() is tested in testChildrenIterator
+        // listIterator() is tested in testChildrenListIterator
+        // toArray(Object[])
+        UIComponent kids[]
+                = (UIComponent[]) children.toArray(new UIComponent[0]);
+        assertEquals(comp0, kids[0]);
+        assertEquals(comp1, kids[1]);
+        assertEquals(comp2, kids[2]);
+        assertEquals(comp3, kids[3]);
+        assertEquals(comp4, kids[4]);
+        assertEquals(comp5, kids[5]);
+
+        // subList(int,int)
+        List subList = children.subList(3, 5);
+        assertEquals(2, subList.size());
+        assertEquals(comp3, (UIComponent) subList.get(0));
+        assertEquals(comp4, (UIComponent) subList.get(1));
+
+        // set(int,Object)
+        children.set(4, comp6);
+        checkChildCount(component, 6);
+        checkChildPresent(component, comp0, 0);
+        checkChildPresent(component, comp1, 1);
+        checkChildPresent(component, comp2, 2);
+        checkChildPresent(component, comp3, 3);
+        checkChildMissing(component, comp4);
+        checkChildPresent(component, comp5, 5);
+        checkChildPresent(component, comp6, 4);
+        assertTrue(!children.containsAll(list1));
+        assertTrue(children.containsAll(list2));
+
+        // remove(int)
+        children.remove(4);
+        checkChildCount(component, 5);
+        checkChildPresent(component, comp0, 0);
+        checkChildPresent(component, comp1, 1);
+        checkChildPresent(component, comp2, 2);
+        checkChildPresent(component, comp3, 3);
+        checkChildMissing(component, comp4);
+        checkChildPresent(component, comp5, 4);
+        checkChildMissing(component, comp6);
+        assertTrue(!children.containsAll(list1));
+        assertTrue(children.containsAll(list2));
+
+        // removeAll(Collection)
+        children.removeAll(list2);
+        checkChildCount(component, 3);
+        checkChildPresent(component, comp0, 0);
+        checkChildPresent(component, comp1, 1);
+        checkChildMissing(component, comp2);
+        checkChildMissing(component, comp3);
+        checkChildMissing(component, comp4);
+        checkChildPresent(component, comp5, 2);
+        checkChildMissing(component, comp6);
+        assertTrue(!children.containsAll(list1));
+        assertTrue(!children.containsAll(list2));
+
+        // retainAll()
+        ArrayList list3 = new ArrayList();
+        list3.add(comp1);
+        list3.add(comp3);
+        list3.add(comp5);
+        children.retainAll(list3);
+        checkChildCount(component, 2);
+        checkChildMissing(component, comp0);
+        checkChildPresent(component, comp1, 0);
+        checkChildMissing(component, comp2);
+        checkChildMissing(component, comp3);
+        checkChildMissing(component, comp4);
+        checkChildPresent(component, comp5, 1);
+        checkChildMissing(component, comp6);
+        assertTrue(!children.containsAll(list3));
+
+        // size() is tested in checkChildCount
+        // clear()
+        children.clear();
+        checkChildCount(component, 0);
+        assertNull(comp0.getParent());
+        assertNull(comp1.getParent());
+        assertNull(comp2.getParent());
+        assertNull(comp3.getParent());
+        assertNull(comp4.getParent());
+        assertNull(comp5.getParent());
+        assertNull(comp6.getParent());
+
+    }
+
+    // Test replacing a child with a new one that has the same id
+    public void testChidrenReplace() {
+
+        ComponentTestImpl child1 = new ComponentTestImpl("child");
+        ComponentTestImpl child2 = new ComponentTestImpl("child");
+
+        checkChildCount(component, 0);
+        component.getChildren().add(child1);
+        checkChildCount(component, 1);
+        checkChildPresent(component, child1, 0);
+        checkChildMissing(component, child2);
+        component.getChildren().set(0, child2);
+        checkChildCount(component, 1);
+        checkChildMissing(component, child1);
+        checkChildPresent(component, child2, 0);
+        component.getChildren().clear();
+        checkChildCount(component, 0);
+
+    }
+
+    // Test Set returned by getFacets().entrySet()
+    public void testFacetsMapEntrySet() {
+
+        Map facets;
+        Set matches;
+        Set entrySet;
+        Iterator entries;
+
+        // Construct the pre-load set of facets we will need
+        UIComponent facet1 = new ComponentTestImpl("facet1");
+        UIComponent facet2 = new ComponentTestImpl("facet2");
+        UIComponent facet3 = new ComponentTestImpl("facet3");
+        UIComponent facet4 = new ComponentTestImpl("facet4");
+        UIComponent facet5 = new ComponentTestImpl("facet5");
+        UIComponent facet6 = new ComponentTestImpl("facet6"); // Not normally added
+        Map preload = new HashMap<String, UIComponent>();
+        preload.put("a", facet1);
+        preload.put("b", facet2);
+        preload.put("c", facet3);
+        preload.put("d", facet4);
+        preload.put("e", facet5);
+
+        // Test add()
+        facets = component.getFacets();
+        facets.clear();
+        facets.putAll(preload);
+        entrySet = facets.entrySet();
+        try {
+            entrySet.add(bogusEntry);
+            fail("Should have thrown UnsupportedOperationExcepton");
+        } catch (UnsupportedOperationException e) {
+            // Expected result
+        }
+
+        // Test addAll()
+        facets = component.getFacets();
+        facets.clear();
+        facets.putAll(preload);
+        entrySet = facets.entrySet();
+        try {
+            entrySet.addAll(preload.values());
+            fail("Should have thrown UnsupportedOperationExcepton");
+        } catch (UnsupportedOperationException e) {
+            // Expected result
+        }
+
+        // Test clear()
+        facets = component.getFacets();
+        facets.clear();
+        facets.putAll(preload);
+        entrySet = facets.entrySet();
+        assertEquals(5, facets.size());
+        assertEquals(5, entrySet.size());
+        checkFacetPresent(component, "a", facet1);
+        checkFacetPresent(component, "b", facet2);
+        checkFacetPresent(component, "c", facet3);
+        checkFacetPresent(component, "d", facet4);
+        checkFacetPresent(component, "e", facet5);
+        entrySet.clear();
+        assertEquals(0, facets.size());
+        assertEquals(0, entrySet.size());
+        checkFacetMissing(component, "a", facet1);
+        checkFacetMissing(component, "b", facet2);
+        checkFacetMissing(component, "c", facet3);
+        checkFacetMissing(component, "d", facet4);
+        checkFacetMissing(component, "e", facet5);
+
+        // Test contains()
+        facets = component.getFacets();
+        facets.clear();
+        facets.putAll(preload);
+        entrySet = facets.entrySet();
+        assertTrue(entrySet.contains(new TestMapEntry("a", facet1)));
+        assertTrue(entrySet.contains(new TestMapEntry("b", facet2)));
+        assertTrue(entrySet.contains(new TestMapEntry("c", facet3)));
+        assertTrue(entrySet.contains(new TestMapEntry("d", facet4)));
+        assertTrue(entrySet.contains(new TestMapEntry("e", facet5)));
+        assertTrue(!entrySet.contains(new TestMapEntry("f", facet6)));
+
+        // Test containsAll()
+        facets = component.getFacets();
+        facets.clear();
+        facets.putAll(preload);
+        entrySet = facets.entrySet();
+        matches = new HashSet();
+        matches.add(new TestMapEntry("a", facet1));
+        matches.add(new TestMapEntry("c", facet3));
+        matches.add(new TestMapEntry("d", facet4));
+        assertTrue(entrySet.containsAll(matches));
+        matches = new HashSet();
+        matches.add(new TestMapEntry("a", facet1));
+        matches.add(new TestMapEntry("c", facet3));
+        matches.add(new TestMapEntry("f", facet6));
+        assertTrue(!entrySet.containsAll(matches));
+
+        // Test iterator().hasNext() and iterator().next()
+        facets = component.getFacets();
+        facets.clear();
+        facets.putAll(preload);
+        entrySet = facets.entrySet();
+        matches = new HashSet();
+        entries = entrySet.iterator();
+        while (entries.hasNext()) {
+            matches.add(entries.next());
+        }
+        assertTrue(entrySet.equals(matches));
+
+        // Test iterator().remove()
+        facets = component.getFacets();
+        facets.clear();
+        facets.putAll(preload);
+        entrySet = facets.entrySet();
+        entries = entrySet.iterator();
+        while (entries.hasNext()) {
+            Map.Entry entry = (Map.Entry) entries.next();
+            if ("b".equals(entry.getKey()) || "d".equals(entry.getKey())) {
+                entries.remove();
+            }
+        }
+        assertEquals(3, facets.size());
+        assertEquals(3, entrySet.size());
+        checkFacetPresent(component, "a", facet1);
+        checkFacetMissing(component, "b", facet2);
+        checkFacetPresent(component, "c", facet3);
+        checkFacetMissing(component, "d", facet4);
+        checkFacetPresent(component, "e", facet5);
+
+        // Test iterator() based modify-value
+        facets = component.getFacets();
+        facets.clear();
+        facets.putAll(preload);
+        entrySet = facets.entrySet();
+        entries = entrySet.iterator();
+        while (entries.hasNext()) {
+            Map.Entry entry = (Map.Entry) entries.next();
+            if ("c".equals(entry.getKey())) {
+                entry.setValue(facet6);
+            }
+        }
+        assertEquals(5, facets.size());
+        assertEquals(5, entrySet.size());
+        checkFacetPresent(component, "a", facet1);
+        checkFacetPresent(component, "b", facet2);
+        checkFacetPresent(component, "c", facet6);
+        checkFacetPresent(component, "d", facet4);
+        checkFacetPresent(component, "e", facet5);
+
+        // Test remove()
+        facets = component.getFacets();
+        facets.clear();
+        facets.putAll(preload);
+        entrySet = facets.entrySet();
+        entrySet.remove(new TestMapEntry("c", facet3));
+        assertEquals(4, facets.size());
+        assertEquals(4, entrySet.size());
+        checkFacetPresent(component, "a", facet1);
+        checkFacetPresent(component, "b", facet2);
+        checkFacetMissing(component, "c", facet3);
+        checkFacetPresent(component, "d", facet4);
+        checkFacetPresent(component, "e", facet5);
+
+        // Test removeAll()
+        facets = component.getFacets();
+        facets.clear();
+        facets.putAll(preload);
+        entrySet = facets.entrySet();
+        matches = new HashSet();
+        matches.add(new TestMapEntry("b", facet2));
+        matches.add(new TestMapEntry("d", facet4));
+        entrySet.removeAll(matches);
+        assertEquals(3, facets.size());
+        assertEquals(3, entrySet.size());
+        checkFacetPresent(component, "a", facet1);
+        checkFacetMissing(component, "b", facet2);
+        checkFacetPresent(component, "c", facet3);
+        checkFacetMissing(component, "d", facet4);
+        checkFacetPresent(component, "e", facet5);
+
+        // Test retainAll()
+        facets = component.getFacets();
+        facets.clear();
+        facets.putAll(preload);
+        entrySet = facets.entrySet();
+        matches = new HashSet();
+        matches.add(new TestMapEntry("b", facet2));
+        matches.add(new TestMapEntry("d", facet4));
+        matches.add(new TestMapEntry("f", facet6));
+        entrySet.retainAll(matches);
+        assertEquals(2, facets.size());
+        assertEquals(2, entrySet.size());
+        checkFacetMissing(component, "a", facet1);
+        checkFacetPresent(component, "b", facet2);
+        checkFacetMissing(component, "c", facet3);
+        checkFacetPresent(component, "d", facet4);
+        checkFacetMissing(component, "e", facet5);
+
+    }
+
+    // Test Set returned by getFacets().keySet()
+    public void testFacetsMapKeySet() {
+
+        Map facets;
+        Set matches;
+        Set keySet;
+        Iterator keys;
+
+        // Construct the pre-load set of facets we will need
+        UIComponent facet1 = new ComponentTestImpl("facet1");
+        UIComponent facet2 = new ComponentTestImpl("facet2");
+        UIComponent facet3 = new ComponentTestImpl("facet3");
+        UIComponent facet4 = new ComponentTestImpl("facet4");
+        UIComponent facet5 = new ComponentTestImpl("facet5");
+        UIComponent facet6 = new ComponentTestImpl("facet6"); // Not normally added
+        Map preload = new HashMap();
+        preload.put("a", facet1);
+        preload.put("b", facet2);
+        preload.put("c", facet3);
+        preload.put("d", facet4);
+        preload.put("e", facet5);
+
+        // Test add()
+        facets = component.getFacets();
+        facets.clear();
+        facets.putAll(preload);
+        keySet = facets.keySet();
+        try {
+            keySet.add("bogusEntry");
+            fail("Should have thrown UnsupportedOperationExcepton");
+        } catch (UnsupportedOperationException e) {
+            // Expected result
+        }
+
+        // Test addAll()
+        facets = component.getFacets();
+        facets.clear();
+        facets.putAll(preload);
+        keySet = facets.keySet();
+        try {
+            keySet.addAll(preload.values());
+            fail("Should have thrown UnsupportedOperationExcepton");
+        } catch (UnsupportedOperationException e) {
+            // Expected result
+        }
+
+        // Test clear()
+        facets = component.getFacets();
+        facets.clear();
+        facets.putAll(preload);
+        keySet = facets.keySet();
+        assertEquals(5, facets.size());
+        assertEquals(5, keySet.size());
+        checkFacetPresent(component, "a", facet1);
+        checkFacetPresent(component, "b", facet2);
+        checkFacetPresent(component, "c", facet3);
+        checkFacetPresent(component, "d", facet4);
+        checkFacetPresent(component, "e", facet5);
+        keySet.clear();
+        assertEquals(0, facets.size());
+        assertEquals(0, keySet.size());
+        checkFacetMissing(component, "a", facet1);
+        checkFacetMissing(component, "b", facet2);
+        checkFacetMissing(component, "c", facet3);
+        checkFacetMissing(component, "d", facet4);
+        checkFacetMissing(component, "e", facet5);
+
+        // Test contains()
+        facets = component.getFacets();
+        facets.clear();
+        facets.putAll(preload);
+        keySet = facets.keySet();
+        assertTrue(keySet.contains("a"));
+        assertTrue(keySet.contains("b"));
+        assertTrue(keySet.contains("c"));
+        assertTrue(keySet.contains("d"));
+        assertTrue(keySet.contains("e"));
+        assertTrue(!keySet.contains("f"));
+
+        // Test containsAll()
+        facets = component.getFacets();
+        facets.clear();
+        facets.putAll(preload);
+        keySet = facets.keySet();
+        matches = new HashSet();
+        matches.add("a");
+        matches.add("c");
+        matches.add("d");
+        assertTrue(keySet.containsAll(matches));
+        matches = new HashSet();
+        matches.add("a");
+        matches.add("c");
+        matches.add("f");
+        assertTrue(!keySet.containsAll(matches));
+
+        // Test iterator().hasNext() and iterator().next()
+        facets = component.getFacets();
+        facets.clear();
+        facets.putAll(preload);
+        keySet = facets.keySet();
+        matches = new HashSet();
+        keys = keySet.iterator();
+        while (keys.hasNext()) {
+            matches.add(keys.next());
+        }
+        assertTrue(keySet.equals(matches));
+
+        // Test iterator().remove()
+        facets = component.getFacets();
+        facets.clear();
+        facets.putAll(preload);
+        keySet = facets.keySet();
+        keys = keySet.iterator();
+        while (keys.hasNext()) {
+            String key = (String) keys.next();
+            if ("b".equals(key) || "d".equals(key)) {
+                keys.remove();
+            }
+        }
+        assertEquals(3, facets.size());
+        assertEquals(3, keySet.size());
+        checkFacetPresent(component, "a", facet1);
+        checkFacetMissing(component, "b", facet2);
+        checkFacetPresent(component, "c", facet3);
+        checkFacetMissing(component, "d", facet4);
+        checkFacetPresent(component, "e", facet5);
+
+        // Test remove()
+        facets = component.getFacets();
+        facets.clear();
+        facets.putAll(preload);
+        keySet = facets.keySet();
+        keySet.remove("c");
+        assertEquals(4, facets.size());
+        assertEquals(4, keySet.size());
+        checkFacetPresent(component, "a", facet1);
+        checkFacetPresent(component, "b", facet2);
+        checkFacetMissing(component, "c", facet3);
+        checkFacetPresent(component, "d", facet4);
+        checkFacetPresent(component, "e", facet5);
+
+        // Test removeAll()
+        facets = component.getFacets();
+        facets.clear();
+        facets.putAll(preload);
+        keySet = facets.keySet();
+        matches = new HashSet();
+        matches.add("b");
+        matches.add("d");
+        keySet.removeAll(matches);
+        assertEquals(3, facets.size());
+        assertEquals(3, keySet.size());
+        checkFacetPresent(component, "a", facet1);
+        checkFacetMissing(component, "b", facet2);
+        checkFacetPresent(component, "c", facet3);
+        checkFacetMissing(component, "d", facet4);
+        checkFacetPresent(component, "e", facet5);
+
+        // Test retainAll()
+        facets = component.getFacets();
+        facets.clear();
+        facets.putAll(preload);
+        keySet = facets.keySet();
+        matches = new HashSet();
+        matches.add("b");
+        matches.add("d");
+        matches.add("f");
+        keySet.retainAll(matches);
+        assertEquals(2, facets.size());
+        assertEquals(2, keySet.size());
+        checkFacetMissing(component, "a", facet1);
+        checkFacetPresent(component, "b", facet2);
+        checkFacetMissing(component, "c", facet3);
+        checkFacetPresent(component, "d", facet4);
+        checkFacetMissing(component, "e", facet5);
+
+    }
+
+    // Test Collection returned by getFacets().values()
+    public void testFacetsMapValues() {
+
+        Map facets;
+        Collection matches;
+        Collection values;
+        Iterator vals;
+
+        // Construct the pre-load set of facets we will need
+        UIComponent facet1 = new ComponentTestImpl("facet1");
+        UIComponent facet2 = new ComponentTestImpl("facet2");
+        UIComponent facet3 = new ComponentTestImpl("facet3");
+        UIComponent facet4 = new ComponentTestImpl("facet4");
+        UIComponent facet5 = new ComponentTestImpl("facet5");
+        UIComponent facet6 = new ComponentTestImpl("facet6"); // Not normally added
+        Map preload = new HashMap();
+        preload.put("a", facet1);
+        preload.put("b", facet2);
+        preload.put("c", facet3);
+        preload.put("d", facet4);
+        preload.put("e", facet5);
+
+        // Test add()
+        facets = component.getFacets();
+        facets.clear();
+        facets.putAll(preload);
+        values = facets.values();
+        try {
+            values.add(new ComponentTestImpl("facet0"));
+            fail("Should have thrown UnsupportedOperationExcepton");
+        } catch (UnsupportedOperationException e) {
+            // Expected result
+        }
+
+        // Test addAll()
+        facets = component.getFacets();
+        facets.clear();
+        facets.putAll(preload);
+        values = facets.values();
+        try {
+            values.addAll(preload.values());
+            fail("Should have thrown UnsupportedOperationExcepton");
+        } catch (UnsupportedOperationException e) {
+            // Expected result
+        }
+
+        // Test clear()
+        facets = component.getFacets();
+        facets.clear();
+        facets.putAll(preload);
+        values = facets.values();
+        assertEquals(5, facets.size());
+        assertEquals(5, values.size());
+        checkFacetPresent(component, "a", facet1);
+        checkFacetPresent(component, "b", facet2);
+        checkFacetPresent(component, "c", facet3);
+        checkFacetPresent(component, "d", facet4);
+        checkFacetPresent(component, "e", facet5);
+        values.clear();
+        assertEquals(0, facets.size());
+        assertEquals(0, values.size());
+        checkFacetMissing(component, "a", facet1);
+        checkFacetMissing(component, "b", facet2);
+        checkFacetMissing(component, "c", facet3);
+        checkFacetMissing(component, "d", facet4);
+        checkFacetMissing(component, "e", facet5);
+
+        // Test contains()
+        facets = component.getFacets();
+        facets.clear();
+        facets.putAll(preload);
+        values = facets.values();
+        assertTrue(values.contains(facet1));
+        assertTrue(values.contains(facet2));
+        assertTrue(values.contains(facet3));
+        assertTrue(values.contains(facet4));
+        assertTrue(values.contains(facet5));
+        assertTrue(!values.contains(facet6));
+
+        // Test containsAll()
+        facets = component.getFacets();
+        facets.clear();
+        facets.putAll(preload);
+        values = facets.values();
+        matches = new ArrayList();
+        matches.add(facet1);
+        matches.add(facet3);
+        matches.add(facet4);
+        assertTrue(values.containsAll(matches));
+        matches = new ArrayList();
+        matches.add(facet1);
+        matches.add(facet3);
+        matches.add(facet6);
+        assertTrue(!values.containsAll(matches));
+
+        // Test iterator().hasNext() and iterator().next()
+        facets = component.getFacets();
+        facets.clear();
+        facets.putAll(preload);
+        values = facets.values();
+        matches = new ArrayList();
+        vals = values.iterator();
+        while (vals.hasNext()) {
+            matches.add(vals.next());
+        }
+        assertTrue(matches.containsAll(values));
+
+        // Test iterator().remove()
+        facets = component.getFacets();
+        facets.clear();
+        facets.putAll(preload);
+        values = facets.values();
+        vals = values.iterator();
+        while (vals.hasNext()) {
+            UIComponent val = (UIComponent) vals.next();
+            if (facet2.equals(val) || facet4.equals(val)) {
+                vals.remove();
+            }
+        }
+        assertEquals(3, facets.size());
+        assertEquals(3, values.size());
+        checkFacetPresent(component, "a", facet1);
+        checkFacetMissing(component, "b", facet2);
+        checkFacetPresent(component, "c", facet3);
+        checkFacetMissing(component, "d", facet4);
+        checkFacetPresent(component, "e", facet5);
+
+        // Test remove()
+        facets = component.getFacets();
+        facets.clear();
+        facets.putAll(preload);
+        values = facets.values();
+        values.remove(facet3);
+        assertEquals(4, facets.size());
+        assertEquals(4, values.size());
+        checkFacetPresent(component, "a", facet1);
+        checkFacetPresent(component, "b", facet2);
+        checkFacetMissing(component, "c", facet3);
+        checkFacetPresent(component, "d", facet4);
+        checkFacetPresent(component, "e", facet5);
+
+        // Test removeAll()
+        facets = component.getFacets();
+        facets.clear();
+        facets.putAll(preload);
+        values = facets.values();
+        matches = new ArrayList();
+        matches.add(facet2);
+        matches.add(facet4);
+        values.removeAll(matches);
+        assertEquals(3, facets.size());
+        assertEquals(3, values.size());
+        checkFacetPresent(component, "a", facet1);
+        checkFacetMissing(component, "b", facet2);
+        checkFacetPresent(component, "c", facet3);
+        checkFacetMissing(component, "d", facet4);
+        checkFacetPresent(component, "e", facet5);
+
+        // Test retainAll()
+        facets = component.getFacets();
+        facets.clear();
+        facets.putAll(preload);
+        values = facets.values();
+        matches = new ArrayList();
+        matches.add(facet2);
+        matches.add(facet4);
+        matches.add(facet6);
+        values.retainAll(matches);
+        assertEquals(2, facets.size());
+        assertEquals(2, values.size());
+        checkFacetMissing(component, "a", facet1);
+        checkFacetPresent(component, "b", facet2);
+        checkFacetMissing(component, "c", facet3);
+        checkFacetPresent(component, "d", facet4);
+        checkFacetMissing(component, "e", facet5);
+
+    }
+
+    // Negative tests on facet methods
+    public void testFacetsNegative() {
+
+        // Construct components we will need
+        UIComponent facet1 = new ComponentTestImpl("facet1");
+        UIComponent facet2 = new ComponentTestImpl("facet2");
+        UIComponent facet3 = new ComponentTestImpl("facet3");
+
+        // Set up and verify initial conditions
+        Map facets = component.getFacets();
+        facets.put("facet1", facet1);
+        facets.put("facet2", facet2);
+        checkFacetCount(component, 2);
+        checkFacetPresent(component, "facet1", facet1);
+        checkFacetPresent(component, "facet2", facet2);
+        checkFacetMissing(component, "facet3", facet3);
+
+        // put(Object,Object) - null first argument
+        try {
+            facets.put(null, facet3);
+            fail("Should have thrown NullPointerException");
+        } catch (NullPointerException e) {
+            // Expected result
+        }
+        checkFacetCount(component, 2);
+        checkFacetPresent(component, "facet1", facet1);
+        checkFacetPresent(component, "facet2", facet2);
+        checkFacetMissing(component, "facet3", facet3);
+
+        // put(Object,Object) - null second argument
+        try {
+            facets.put("facet3", null);
+            fail("Should have thrown NullPointerException");
+        } catch (NullPointerException e) {
+            // Expected result
+        }
+        checkFacetCount(component, 2);
+        checkFacetPresent(component, "facet1", facet1);
+        checkFacetPresent(component, "facet2", facet2);
+        checkFacetMissing(component, "facet3", facet3);
+
+        // put(Object,Object) - non-String first argument
+        try {
+            facets.put(facet3, facet3);
+            fail("Should have thrown ClassCastException");
+        } catch (ClassCastException e) {
+            // Expected result
+        }
+        checkFacetCount(component, 2);
+        checkFacetPresent(component, "facet1", facet1);
+        checkFacetPresent(component, "facet2", facet2);
+        checkFacetMissing(component, "facet3", facet3);
+
+        // put(Object,Object) - non-UIComponent second argument
+        try {
+            facets.put("facet3", "facet3");
+            fail("Should have thrown ClassCastException");
+        } catch (ClassCastException e) {
+            // Expected result
+        }
+        checkFacetCount(component, 2);
+        checkFacetPresent(component, "facet1", facet1);
+        checkFacetPresent(component, "facet2", facet2);
+        checkFacetMissing(component, "facet3", facet3);
+
+    }
+
+    // Positive tests on facet methods
+    public void testFacetsPositive() {
+
+        // Construct components we will need
+        UIComponent facet1 = new ComponentTestImpl("facet1");
+        UIComponent facet2 = new ComponentTestImpl("facet2");
+        UIComponent facet3 = new ComponentTestImpl("facet3");
+        UIComponent facet4 = new ComponentTestImpl("facet4");
+        UIComponent facet5 = new ComponentTestImpl("facet5");
+        UIComponent facet6 = new ComponentTestImpl("facet6");
+
+        // Verify initial conditions
+        Map facets = component.getFacets();
+        checkFacetCount(component, 0);
+        checkFacetMissing(component, "facet1", facet1);
+        checkFacetMissing(component, "facet2", facet2);
+        checkFacetMissing(component, "facet3", facet3);
+        checkFacetMissing(component, "facet4", facet4);
+        checkFacetMissing(component, "facet5", facet5);
+
+        // containsKey(Object) is tested in checkFacetMissing / checkFacetPresent
+        // containsValue(Object) is tested in checkFacetMissing / checkFacetPresent
+        // entrySet() is tested in testFacetsMapEntrySet()
+        // get(Object) is tested in checkFacetMissing / checkFacetPresent
+        // isEmpty() is tested in checkFacetCount
+        // keySet() is tested in testFacetsMapKeySet()
+        // put(Object,Object)
+        facets.put("facet1", facet1);
+        checkFacetCount(component, 1);
+        checkFacetPresent(component, "facet1", facet1);
+        checkFacetMissing(component, "facet2", facet2);
+        checkFacetMissing(component, "facet3", facet3);
+        checkFacetMissing(component, "facet4", facet4);
+        checkFacetMissing(component, "facet5", facet5);
+
+        // put(Object,Object)
+        facets.put("facet4", facet4);
+        checkFacetCount(component, 2);
+        checkFacetPresent(component, "facet1", facet1);
+        checkFacetMissing(component, "facet2", facet2);
+        checkFacetMissing(component, "facet3", facet3);
+        checkFacetPresent(component, "facet4", facet4);
+        checkFacetMissing(component, "facet5", facet5);
+
+        // putAll(Map)
+        Map map = new HashMap();
+        map.put("facet2", facet2);
+        map.put("facet3", facet3);
+        facets.putAll(map);
+        checkFacetCount(component, 4);
+        checkFacetPresent(component, "facet1", facet1);
+        checkFacetPresent(component, "facet2", facet2);
+        checkFacetPresent(component, "facet3", facet3);
+        checkFacetPresent(component, "facet4", facet4);
+        checkFacetMissing(component, "facet5", facet5);
+
+        // remove(Object)
+        facets.remove("facet3");
+        checkFacetCount(component, 3);
+        checkFacetPresent(component, "facet1", facet1);
+        checkFacetPresent(component, "facet2", facet2);
+        checkFacetMissing(component, "facet3", facet3);
+        checkFacetPresent(component, "facet4", facet4);
+        checkFacetMissing(component, "facet5", facet5);
+
+        // values() is tested in testFacetsMapValues()
+        // clear()
+        facets.clear();
+        checkFacetCount(component, 0);
+        checkFacetMissing(component, "facet1", facet1);
+        checkFacetMissing(component, "facet2", facet2);
+        checkFacetMissing(component, "facet3", facet3);
+        checkFacetMissing(component, "facet4", facet4);
+        checkFacetMissing(component, "facet5", facet5);
+
+    }
+
+    // Test a pristine UIComponent instance 
+    public void testPristine() {
+
+        // Validate attributes
+        checkAttributeCount(component, expectedAttributes.length);
+        for (int i = 0; i < expectedAttributes.length; i++) {
+            checkAttributePresent(component, expectedAttributes[i], null);
+        }
+
+        // Validate properties
+        assertEquals("expected family",
+                expectedFamily, component.getFamily());
+        assertEquals("expected id",
+                expectedId, component.getId());
+        assertNull("no parent", component.getParent());
+        assertEquals("expected rendered",
+                expectedRendered, component.isRendered());
+        assertEquals("expected rendererType",
+                expectedRendererType, component.getRendererType());
+        assertEquals("expected rendersChildren",
+                expectedRendersChildren, component.getRendersChildren());
+
+        // Validate children and facets
+        checkChildCount(component, 0);
+        checkFacetCount(component, 0);
+        int n = 0;
+        Iterator items = component.getFacetsAndChildren();
+        assertNotNull("iterator returned", items);
+        while (items.hasNext()) {
+            items.next();
+            n++;
+        }
+        assertEquals("facets and children", 0, n);
+
+    }
+
+    // Test setting properties to invalid values
+    public void testPropertiesInvalid() throws Exception {
+
+        // id - zero length
+        try {
+            component.setId("");
+            fail("should have thrown IllegalArgumentException");
+        } catch (IllegalArgumentException e) {
+            // Expected result
+        }
+
+        // id - leading digits
+        try {
+            component.setId("1abc");
+            fail("should have thrown IllegalArgumentException");
+        } catch (IllegalArgumentException e) {
+            // Expected result
+        }
+
+        // id - invalid characters 1
+        try {
+            component.setId("a*c");
+            fail("should have thrown IllegalArgumentException");
+        } catch (IllegalArgumentException e) {
+            // Expected result
+        }
+
+        // id - invalid characters 2
+        try {
+            component.setId(" abc");
+            fail("should have thrown IllegalArgumentException");
+        } catch (IllegalArgumentException e) {
+            // Expected result
+        }
+
+        // id - invalid characters 3
+        try {
+            component.setId("-abc");
+            fail("should have thrown IllegalArgumentException");
+        } catch (IllegalArgumentException e) {
+            // Expected result
+        }
+
+    }
+
+    // Test setting properties to valid values
+    public void testPropertiesValid() throws Exception {
+
+        // id - simple name
+        component.setId("foo");
+        assertEquals("expected id",
+                "foo", component.getId());
+
+        // id - complex name
+        component.setId("a123-bcd_e");
+        assertEquals("expected id",
+                "a123-bcd_e", component.getId());
+
+        // parent
+        UIComponent parent = new ComponentTestImpl("parent");
+        component.setParent(parent);
+        assertEquals("expected parent",
+                parent, component.getParent());
+
+        // rendered
+        component.setRendered(!expectedRendered);
+        assertEquals("expected rendered",
+                !expectedRendered, component.isRendered());
+
+        // rendererType
+        component.setRendererType("foo");
+        assertEquals("expected rendererType",
+                "foo", component.getRendererType());
+
+    }
+
+    // --------------------------------------------------------- Support Methods
+    // Validate that the specified number of attributes are present.
+    protected void checkAttributeCount(UIComponent component, int count) {
+        int result = 0;
+        Iterator names = component.getAttributes().keySet().iterator();
+        while (names.hasNext()) {
+            names.next();
+            result++;
+        }
+        assertEquals("attribute count", count, result);
+    }
+
+    // Validate that the specified attribute name is not present
+    protected void checkAttributeMissing(UIComponent component,
+            String name) {
+        assertNull("Attribute " + name + " should be missing",
+                component.getAttributes().get(name));
+        Iterator keys = component.getAttributes().keySet().iterator();
+        while (keys.hasNext()) {
+            String key = (String) keys.next();
+            if (name.equals(key)) {
+                fail("Attribute " + name + " should not be in names list");
+            }
+        }
+    }
+
+    // Validate that the specified attribute name is present with the
+    // specified value (if value is not null)
+    protected void checkAttributePresent(UIComponent component,
+            String name, Object value) {
+        assertNotNull("attribute " + name + " should be present",
+                component.getAttributes().get(name));
+        if (value != null) {
+            assertEquals("attribute " + name + " value should be equal",
+                    value, component.getAttributes().get(name));
+        }
+        Iterator keys = component.getAttributes().keySet().iterator();
+        while (keys.hasNext()) {
+            String key = (String) keys.next();
+            if (name.equals(key)) {
+                if (value != null) {
+                    assertEquals("attribute " + name + " value should match",
+                            value, component.getAttributes().get(name));
+                }
+                return;
+            }
+        }
+        fail("attribute " + name + " should be in name list");
+
+    }
+
+    // Validate that the specified number of children are present
+    protected void checkChildCount(UIComponent component, int count) {
+        assertEquals("child count 1", count, component.getChildCount());
+        assertEquals("child count 2",
+                count, component.getChildren().size());
+        assertEquals("child count 3", count, component.getChildCount());
+        if (count == 0) {
+            assertTrue("children empty", component.getChildren().isEmpty());
+        } else {
+            assertTrue("children not empty", !component.getChildren().isEmpty());
+        }
+    }
+
+    // Validate that the specified child is not present
+    protected void checkChildMissing(UIComponent component,
+            UIComponent child) {
+        assertNull("child " + child + " has no parent",
+                child.getParent());
+        List children = component.getChildren();
+        assertTrue("child " + child + " should not be contained",
+                !children.contains(child));
+        assertEquals("child " + child + " should not be found by indexOf",
+                -1, children.indexOf(child));
+        for (int i = 0; i < children.size(); i++) {
+            if (child.equals((UIComponent) children.get(i))) {
+                fail("child " + child + " should be missing");
+            }
+        }
+    }
+
+    // Validate that the specified child is present at the specified index
+    protected void checkChildPresent(UIComponent component,
+            UIComponent child, int index) {
+        List children = component.getChildren();
+        assertTrue("child " + child + " should be contained",
+                children.contains(child));
+        assertEquals("child " + child + " should be found by indexOf",
+                index, children.indexOf(child));
+        UIComponent kid = (UIComponent) children.get(index);
+        assertEquals("child " + child + " should be present",
+                child, kid);
+        assertEquals("child " + child + " has correct parent",
+                component, kid.getParent());
+    }
+
+    // Validate that the specified number of facets is present
+    protected void checkFacetCount(UIComponent component, int count) {
+        assertEquals("facet count",
+                count, component.getFacets().size());
+        if (count == 0) {
+            assertTrue("facets empty",
+                    component.getFacets().isEmpty());
+        } else {
+            assertTrue("facets not empty",
+                    !component.getFacets().isEmpty());
+        }
+    }
+
+    // Validate that the specified facet is not present
+    protected void checkFacetMissing(UIComponent component,
+            String name, UIComponent facet) {
+        assertNull("facet " + name + " has no parent",
+                facet.getParent());
+        Map facets = component.getFacets();
+        assertTrue("facet " + name + " key not present",
+                !facets.containsKey(name));
+        assertTrue("facet " + name + " value not present",
+                !facets.containsValue(facet));
+        assertNull("facet " + name + " key not found by get",
+                facets.get(name));
+        assertNull("facet " + name + " not returned by getFacet(String)",
+                component.getFacet(name));
+        Iterator keys = facets.keySet().iterator();
+        while (keys.hasNext()) {
+            String key = (String) keys.next();
+            if (name.equals(key)) {
+                fail("facet " + name + " found in keys");
+            }
+        }
+        Iterator values = facets.values().iterator();
+        while (values.hasNext()) {
+            UIComponent value = (UIComponent) values.next();
+            if (facet.equals(value)) {
+                fail("facet " + name + " found in values");
+            }
+        }
+    }
+
+    // Validate that the specified facet is present
+    protected void checkFacetPresent(UIComponent component,
+            String name, UIComponent facet) {
+
+        assertEquals("facet " + name + " has correct parent",
+                component, facet.getParent());
+        Map facets = component.getFacets();
+        assertTrue("facet " + name + " key is present",
+                facets.containsKey(name));
+        assertTrue("facet " + name + " value is present",
+                facets.containsValue(facet));
+        assertEquals("facet " + name + " has correct value",
+                facet, (UIComponent) facets.get(name));
+        assertTrue("facet " + name + " returned by getFacet(String)",
+                facet == component.getFacet(name));
+        boolean found = false;
+        Iterator keys = facets.keySet().iterator();
+        while (keys.hasNext()) {
+            String key = (String) keys.next();
+            if (name.equals(key)) {
+                found = true;
+                break;
+            }
+        }
+        if (!found) {
+            fail("facet " + name + " not found in keys");
+        }
+        found = false;
+        Iterator values = facets.values().iterator();
+        while (values.hasNext()) {
+            UIComponent value = (UIComponent) values.next();
+            if (facet.equals(value)) {
+                found = true;
+                break;
+            }
+        }
+        if (!found) {
+            fail("facet " + name + " not found in values");
+        }
+    }
+
+    // --------------------------------------------------------- Private Classes
+    // Test Implementation of Map.Entry
+    private class TestMapEntry implements Map.Entry {
+
+        public TestMapEntry(Object key, Object value) {
+            this.key = key;
+            this.value = value;
+        }
+
+        private Object key;
+        private Object value;
+
+        @Override
+        public boolean equals(Object o) {
+            if (o == null) {
+                return (false);
+            }
+            if (!(o instanceof Map.Entry)) {
+                return (false);
+            }
+            Map.Entry e = (Map.Entry) o;
+            if (key == null) {
+                if (e.getKey() != null) {
+                    return (false);
+                }
+            } else {
+                if (!key.equals(e.getKey())) {
+                    return (false);
+                }
+            }
+            if (value == null) {
+                if (e.getValue() != null) {
+                    return (false);
+                }
+            } else {
+                if (!value.equals(e.getValue())) {
+                    return (false);
+                }
+            }
+            return (true);
+        }
+
+        @Override
+        public Object getKey() {
+            return (key);
+        }
+
+        @Override
+        public Object getValue() {
+            return (value);
+        }
+
+        @Override
+        public int hashCode() {
+            return (((key == null) ? 0 : key.hashCode())
+                    ^ ((value == null) ? 0 : value.hashCode()));
+        }
+
+        @Override
+        public Object setValue(Object value) {
+            Object previous = this.value;
+            this.value = value;
+            return (previous);
+        }
+
+    }
+
+    public static class Listener implements ComponentSystemEventListener, Serializable {
+
+        private StringBuilder sb = new StringBuilder();
+
+        @Override
+        public void processEvent(ComponentSystemEvent event)
+                throws AbortProcessingException {
+            UIComponent source = ((UIComponent) event.getSource());
+            Boolean validatorCalled = (Boolean) source.getAttributes().remove("vCalled");
+            if (validatorCalled != null) {
+                sb.append("*/");
+            }
+            sb.append(source.getId()).append('/');
+        }
+
+        public String getResults() {
+            return sb.toString();
+        }
+    }
+
+    public static class ValidationSignal implements Validator {
+
+        @Override
+        public void validate(FacesContext context,
+                UIComponent component,
+                Object value) throws ValidatorException {
+
+            component.getAttributes().put("vCalled", Boolean.TRUE);
+
+        }
+    }
+
+}
diff --git a/test/unit/src/test/java/javax/faces/component/UIDataTest.java b/test/unit/src/test/java/javax/faces/component/UIDataTest.java
new file mode 100644
index 0000000..615d7d8
--- /dev/null
+++ b/test/unit/src/test/java/javax/faces/component/UIDataTest.java
@@ -0,0 +1,91 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package javax.faces.component;
+
+import javax.faces.context.FacesContext;
+import org.easymock.EasyMock;
+import org.junit.Test;
+import static org.junit.Assert.*;
+import static org.easymock.EasyMock.*;
+
+/**
+ * @author Manfred Riem (manfred.riem at oracle.com)
+ */
+public class UIDataTest {
+    
+    /**
+     * Test partial state saving.
+     */
+    @Test
+    public void testSaveState() {
+        FacesContext context = EasyMock.createMock(FacesContext.class);
+        UIData data = new UIData();
+        data.markInitialState();
+        replay(context);
+        assertNull(data.saveState(context));
+        verify(context);
+    }
+    
+    /**
+     * Test full state saving.
+     */
+    @Test
+    public void testSaveState2() {
+        FacesContext context = EasyMock.createMock(FacesContext.class);
+        UIData data = new UIData();
+        replay(context);
+        assertNotNull(data.saveState(context));
+        verify(context);
+    }
+    
+    /**
+     * Test partial state saving with rowIndex.
+     */
+    @Test
+    public void testSaveState3() {
+        FacesContext context = EasyMock.createMock(FacesContext.class);
+        UIData data = new UIData();
+        data.markInitialState();
+        data.setRowIndex(4);
+        replay(context);
+        assertNotNull(data.saveState(context));
+        verify(context);
+    }
+}
diff --git a/test/unit/src/test/java/javax/faces/component/UIGraphicTestCase.java b/test/unit/src/test/java/javax/faces/component/UIGraphicTestCase.java
new file mode 100644
index 0000000..c3aea18
--- /dev/null
+++ b/test/unit/src/test/java/javax/faces/component/UIGraphicTestCase.java
@@ -0,0 +1,207 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package javax.faces.component;
+
+import javax.faces.el.ValueBinding;
+import static junit.framework.Assert.assertEquals;
+import static junit.framework.Assert.assertNotNull;
+import static junit.framework.Assert.assertNull;
+import static junit.framework.Assert.assertTrue;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+/**
+ * <p>
+ * Unit tests for {@link UIGraphic}.</p>
+ */
+public class UIGraphicTestCase extends UIComponentBaseTestCase {
+
+    // ------------------------------------------------------------ Constructors
+    /**
+     * Construct a new instance of this test case.
+     *
+     * @param name Name of the test case
+     */
+    public UIGraphicTestCase(String name) {
+        super(name);
+    }
+
+    // ---------------------------------------------------- Overall Test Methods
+    // Set up instance variables required by this test case.
+    @Override
+    public void setUp() throws Exception {
+        super.setUp();
+        component = new UIGraphic();
+        expectedFamily = UIGraphic.COMPONENT_FAMILY;
+        expectedId = null;
+        expectedRendererType = "javax.faces.Image";
+    }
+
+    // Return the tests included in this test case.
+    public static Test suite() {
+        return (new TestSuite(UIGraphicTestCase.class));
+    }
+
+    // ------------------------------------------------- Individual Test Methods
+    // Test attribute-property transparency
+    @Override
+    public void testAttributesTransparency() {
+
+        super.testAttributesTransparency();
+        UIGraphic graphic = (UIGraphic) component;
+
+        assertEquals(graphic.getValue(),
+                (String) component.getAttributes().get("value"));
+        graphic.setValue("foo");
+        assertEquals("foo", (String) component.getAttributes().get("value"));
+        graphic.setValue(null);
+        assertNull((String) component.getAttributes().get("value"));
+        component.getAttributes().put("value", "bar");
+        assertEquals("bar", graphic.getValue());
+        component.getAttributes().put("value", null);
+        assertNull(graphic.getValue());
+
+        assertEquals(graphic.getUrl(),
+                (String) graphic.getAttributes().get("url"));
+        graphic.setUrl("foo");
+        assertEquals("foo", (String) graphic.getAttributes().get("url"));
+        graphic.setUrl(null);
+        assertNull((String) graphic.getAttributes().get("url"));
+        graphic.getAttributes().put("url", "bar");
+        assertEquals("bar", graphic.getUrl());
+        graphic.getAttributes().put("url", null);
+        assertNull(graphic.getUrl());
+    }
+
+    // Suppress lifecycle tests since we do not have a renderer
+    @Override
+    public void testLifecycleManagement() {
+    }
+
+    // Test a pristine UIGraphic instance
+    @Override
+    public void testPristine() {
+        super.testPristine();
+        UIGraphic graphic = (UIGraphic) component;
+
+        assertNull("no value", graphic.getValue());
+        assertNull("no url", graphic.getUrl());
+    }
+
+    // Test setting properties to invalid values
+    @Override
+    public void testPropertiesInvalid() throws Exception {
+        super.testPropertiesInvalid();
+        UIGraphic graphic = (UIGraphic) component;
+    }
+
+    // Test setting properties to valid values
+    @Override
+    public void testPropertiesValid() throws Exception {
+        super.testPropertiesValid();
+        UIGraphic graphic = (UIGraphic) component;
+
+        // value
+        graphic.setValue("foo.bar");
+        assertEquals("expected value",
+                "foo.bar", graphic.getValue());
+        graphic.setValue(null);
+        assertNull("erased value", graphic.getValue());
+
+        // Test transparency between "value" and "url" properties
+        graphic.setUrl("foo");
+        assertEquals("foo", (String) graphic.getValue());
+        graphic.setUrl(null);
+        assertNull(graphic.getValue());
+        graphic.setValue("bar");
+        assertEquals("bar", graphic.getUrl());
+        graphic.setValue(null);
+        assertNull(graphic.getUrl());
+
+        // Transparency applies to value bindings as well
+        assertNull(graphic.getValueBinding("url"));
+        assertNull(graphic.getValueBinding("value"));
+        request.setAttribute("foo", "bar");
+        ValueBinding vb = application.createValueBinding("#{foo}");
+        graphic.setValueBinding("url", vb);
+        assertTrue(vb == graphic.getValueBinding("url"));
+        assertTrue(vb == graphic.getValueBinding("value"));
+        graphic.setValueBinding("url", null);
+        assertNull(graphic.getValueBinding("url"));
+        assertNull(graphic.getValueBinding("value"));
+        graphic.setValueBinding("value", vb);
+        assertTrue(vb == graphic.getValueBinding("url"));
+        assertTrue(vb == graphic.getValueBinding("value"));
+        graphic.setValueBinding("url", null);
+        assertNull(graphic.getValueBinding("url"));
+        assertNull(graphic.getValueBinding("value"));
+    }
+
+    public void PENDING_FIXME_testValueBindings() {
+
+        super.testValueBindings();
+        UIGraphic test = (UIGraphic) component;
+
+        // "value" property
+        request.setAttribute("foo", "bar");
+        test.setValue(null);
+        assertNull(test.getValue());
+        test.setValueBinding("value", application.createValueBinding("#{foo}"));
+        assertNotNull(test.getValueBinding("value"));
+        assertEquals("bar", test.getValue());
+        test.setValue("baz");
+        assertEquals("baz", test.getValue());
+        test.setValue(null);
+        assertEquals("bar", test.getValue());
+        test.setValueBinding("value", null);
+        assertNull(test.getValueBinding("value"));
+        assertNull(test.getValue());
+
+    }
+
+    // --------------------------------------------------------- Support Methods
+    // Create a pristine component of the type to be used in state holder tests
+    @Override
+    protected UIComponent createComponent() {
+        UIComponent component = new UIGraphic();
+        component.setRendererType(null);
+        return (component);
+    }
+}
diff --git a/test/unit/src/test/java/javax/faces/component/UIInputTest.java b/test/unit/src/test/java/javax/faces/component/UIInputTest.java
new file mode 100644
index 0000000..e6946f8
--- /dev/null
+++ b/test/unit/src/test/java/javax/faces/component/UIInputTest.java
@@ -0,0 +1,228 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package javax.faces.component;
+
+import javax.faces.context.FacesContext;
+import javax.faces.validator.LengthValidator;
+import javax.faces.validator.LongRangeValidator;
+import javax.faces.validator.Validator;
+import org.easymock.EasyMock;
+import org.junit.Test;
+import static org.junit.Assert.*;
+import static org.easymock.EasyMock.*;
+
+/**
+ * @author Manfred Riem (manfred.riem at oracle.com)
+ */
+public class UIInputTest {
+
+    @Test
+    public void testSaveState() {
+        FacesContext context = EasyMock.createMock(FacesContext.class);
+        UIInput input = new UIInput();
+        replay(context);
+        assertNotNull(input.saveState(context));
+        verify(context);
+    }
+
+    @Test(expected = NullPointerException.class)
+    public void testSaveState2() {
+        UIInput input = new UIInput();
+        input.saveState(null);
+    }
+
+    @Test
+    public void testSaveState3() {
+        FacesContext context = EasyMock.createMock(FacesContext.class);
+        UIInput input = new UIInput();
+        replay(context);
+        input.markInitialState();
+        assertNull(input.saveState(context));
+        verify(context);
+    }
+
+    @Test
+    public void testSaveState4() {
+        FacesContext context = EasyMock.createMock(FacesContext.class);
+        UIInput input = new UIInput();
+        LengthValidator l1 = new LengthValidator();
+        LengthValidator l2 = new LengthValidator();
+        replay(context);
+        input.addValidator(l1);
+        input.addValidator(l2);
+        l1.setMinimum(1);
+        l2.setMinimum(2);
+        input.markInitialState();
+        assertTrue(input.initialStateMarked());
+        assertTrue(l1.initialStateMarked());
+        assertTrue(l2.initialStateMarked());
+        Object state = input.saveState(context);
+        assertNull(state);
+        verify(context);
+    }
+
+    @Test
+    public void testRestoreState() {
+        FacesContext context = EasyMock.createMock(FacesContext.class);
+        UIInput input = new UIInput();
+        replay(context);
+        input.restoreState(context, null);
+        verify(context);
+    }
+
+    @Test(expected = NullPointerException.class)
+    public void testRestoreState2() {
+        FacesContext context = EasyMock.createMock(FacesContext.class);
+        UIInput input = new UIInput();
+        replay(context);
+        input.restoreState(null, null);
+        verify(context);
+    }
+
+    @Test
+    public void testRestoreState3() {
+        FacesContext context = EasyMock.createMock(FacesContext.class);
+        UIInput input = new UIInput();
+        replay(context);
+        Object state = input.saveState(context);
+        assertNotNull(state);
+        input.restoreState(context, state);
+        verify(context);
+    }
+
+    @Test
+    public void testRestoreState4() {
+        FacesContext context = EasyMock.createMock(FacesContext.class);
+        UIInput input = new UIInput();
+        input.addValidator(new LongRangeValidator());
+        replay(context);
+        Object state = input.saveState(context);
+        assertNotNull(state);
+        input = new UIInput();
+        input.restoreState(context, state);
+        verify(context);
+    }
+
+    @Test
+    public void testRestoreState5() {
+        FacesContext context = EasyMock.createMock(FacesContext.class);
+        UIInput input = new UIInput();
+        LengthValidator l1 = new LengthValidator();
+        LengthValidator l2 = new LengthValidator();
+        replay(context);
+        input.addValidator(l1);
+        input.addValidator(l2);
+        l1.setMinimum(1);
+        l2.setMinimum(2);
+        input.markInitialState();
+        l2.setMinimum(3);
+        assertTrue(input.initialStateMarked());
+        assertTrue(l1.initialStateMarked());
+        assertTrue(!l2.initialStateMarked());
+        Object state = input.saveState(context);
+        assertTrue(state instanceof Object[]);
+        Object[] validatorState = (Object[]) ((Object[]) state)[1];
+        assertNotNull(validatorState);
+        assertNull(validatorState[0]);
+        assertNotNull(validatorState[1]);
+        assertTrue(!(validatorState[1] instanceof StateHolderSaver));
+        input = new UIInput();
+        l1 = new LengthValidator();
+        l2 = new LengthValidator();
+        l1.setMinimum(1);
+        l2.setMinimum(2);
+        input.addValidator(l1);
+        input.addValidator(l2);
+        input.restoreState(context, state);
+        assertTrue(l1.getMinimum() == 1);
+        assertTrue(l2.getMinimum() == 3);
+        assertTrue(input.getValidators().length == 2);
+
+        input = new UIInput();
+        l1 = new LengthValidator();
+        l2 = new LengthValidator();
+        input.addValidator(l1);
+        input.addValidator(l2);
+        l1.setMinimum(1);
+        l2.setMinimum(2);
+        input.markInitialState();
+        LengthValidator l3 = new LengthValidator();
+        l3.setMinimum(3);
+        input.addValidator(l3);
+        state = input.saveState(context);
+        assertNotNull(validatorState);
+        assertTrue(state instanceof Object[]);
+        validatorState = (Object[]) ((Object[]) state)[1];
+        assertNotNull(validatorState);
+        assertTrue(validatorState.length == 3);
+        assertNotNull(validatorState[0]);
+        assertNotNull(validatorState[1]);
+        assertNotNull(validatorState[2]);
+        assertTrue(validatorState[0] instanceof StateHolderSaver);
+        assertTrue(validatorState[1] instanceof StateHolderSaver);
+        assertTrue(validatorState[2] instanceof StateHolderSaver);
+
+        input = new UIInput();
+        l1 = new LengthValidator();
+        l2 = new LengthValidator();
+        l3 = new LengthValidator();
+        LengthValidator l4 = new LengthValidator();
+        input.addValidator(l1);
+        input.addValidator(l2);
+        input.addValidator(l3);
+        input.addValidator(l4);
+        l1.setMinimum(100);
+        l2.setMinimum(101);
+        l3.setMinimum(102);
+        l4.setMinimum(103);
+        assertTrue(input.getValidators().length == 4);
+        input.markInitialState();
+        input.restoreState(context, state);
+        assertTrue(input.getValidators().length == 3);
+       
+        Validator[] validators = input.getValidators();
+        for (int i = 0, len = validators.length; i < len; i++) {
+            LengthValidator v = (LengthValidator) validators[i];
+            assertTrue(v.getMinimum() == (i + 1));
+        }
+        
+        verify(context);
+    }
+}
diff --git a/test/unit/src/test/java/javax/faces/component/UIInputTestCase.java b/test/unit/src/test/java/javax/faces/component/UIInputTestCase.java
new file mode 100644
index 0000000..2b78b06
--- /dev/null
+++ b/test/unit/src/test/java/javax/faces/component/UIInputTestCase.java
@@ -0,0 +1,605 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package javax.faces.component;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import javax.faces.application.Application;
+import javax.faces.application.FacesMessage;
+import javax.faces.context.FacesContext;
+import javax.faces.el.MethodBinding;
+import javax.faces.event.PhaseId;
+import javax.faces.event.ValueChangeEvent;
+import javax.faces.event.ValueChangeListener;
+import javax.faces.validator.Validator;
+import java.util.Iterator;
+
+/**
+ * <p>
+ * Unit tests for {@link UIInput}.</p>
+ */
+public class UIInputTestCase extends UIOutputTestCase {
+
+    // ------------------------------------------------------------ Constructors
+    /**
+     * Construct a new instance of this test case.
+     *
+     * @param name Name of the test case
+     */
+    public UIInputTestCase(String name) {
+        super(name);
+    }
+
+    // ---------------------------------------------------- Overall Test Methods
+    // Set up instance variables required by this test case.
+    @Override
+    public void setUp() throws Exception {
+        super.setUp();
+        component = new UIInput();
+        expectedFamily = UIInput.COMPONENT_FAMILY;
+        expectedRendererType = "javax.faces.Text";
+    }
+
+    // Return the tests included in this test case.
+    public static Test suite() {
+        return (new TestSuite(UIInputTestCase.class));
+    }
+
+    // ------------------------------------------------- Individual Test Methods
+    // Test attribute-property transparency
+    @Override
+    public void testAttributesTransparency() {
+        super.testAttributesTransparency();
+        UIInput input = (UIInput) component;
+
+        assertEquals(input.getSubmittedValue(),
+                (String) input.getAttributes().get("submittedValue"));
+        input.setSubmittedValue("foo");
+        assertEquals("foo", (String) input.getAttributes().get("submittedValue"));
+        input.setSubmittedValue(null);
+        assertNull((String) input.getAttributes().get("submittedValue"));
+        input.getAttributes().put("submittedValue", "bar");
+        assertEquals("bar", input.getSubmittedValue());
+        input.getAttributes().put("submittedValue", null);
+        assertNull(input.getSubmittedValue());
+
+        input.setRequired(true);
+        assertEquals(Boolean.TRUE,
+                (Boolean) input.getAttributes().get("required"));
+        input.setRequired(false);
+        assertEquals(Boolean.FALSE,
+                (Boolean) input.getAttributes().get("required"));
+        input.getAttributes().put("required", Boolean.TRUE);
+        assertTrue(input.isRequired());
+        input.getAttributes().put("required", Boolean.FALSE);
+        assertTrue(!input.isRequired());
+
+        assertEquals(input.isValid(), true);
+        assertEquals(input.isValid(),
+                ((Boolean) component.getAttributes().get("valid")).
+                booleanValue());
+        input.setValid(false);
+        assertEquals(input.isValid(),
+                ((Boolean) component.getAttributes().get("valid")).
+                booleanValue());
+        component.getAttributes().put("valid", Boolean.TRUE);
+        assertEquals(input.isValid(),
+                ((Boolean) component.getAttributes().get("valid")).
+                booleanValue());
+
+    }
+
+    // Test the compareValues() method
+    public void testCompareValues() {
+        InputTestImpl input = new InputTestImpl();
+        Object value1a = "foo";
+        Object value1b = "foo";
+        Object value2 = "bar";
+        Object value3 = null;
+
+        assertTrue(!input.compareValues(value1a, value1a));
+        assertTrue(!input.compareValues(value1a, value1b));
+        assertTrue(!input.compareValues(value1b, value1b));
+        assertTrue(!input.compareValues(value2, value2));
+        assertTrue(!input.compareValues(value3, value3));
+
+        assertTrue(input.compareValues(value1a, value2));
+        assertTrue(input.compareValues(value1a, value3));
+        assertTrue(input.compareValues(value2, value3));
+        assertTrue(input.compareValues(value3, value2));
+    }
+
+    // Test event queuing and broadcasting (any phase listeners)
+    public void testEventsGeneric() {
+        UIInput input = (UIInput) component;
+        ValueChangeEvent event = new ValueChangeEvent(input, null, null);
+
+        // Register three listeners
+        input.addValueChangeListener(new ValueChangeListenerTestImpl("AP0"));
+        input.addValueChangeListener(new ValueChangeListenerTestImpl("AP1"));
+        input.addValueChangeListener(new ValueChangeListenerTestImpl("AP2"));
+
+        // Fire events and evaluate results
+        ValueChangeListenerTestImpl.trace(null);
+        input.broadcast(event);
+        assertEquals("/AP0/AP1/AP2",
+                ValueChangeListenerTestImpl.trace());
+    }
+
+    // Test event queuing and broadcasting (mixed phase listeners)
+    public void testEventsMixed() {
+        UIInput input = (UIInput) component;
+        input.setRendererType(null);
+        UIViewRoot root = facesContext.getApplication().getViewHandler().createView(facesContext, null);
+        root.getChildren().add(input);
+        ValueChangeEvent event = null;
+
+        // Register three listeners
+        input.addValueChangeListener(new ValueChangeListenerTestImpl("ARV"));
+        input.addValueChangeListener(new ValueChangeListenerTestImpl("PV"));
+        input.addValueChangeListener(new ValueChangeListenerTestImpl("AP"));
+
+        ValueChangeListenerTestImpl.trace(null);
+        event = new ValueChangeEvent(input, null, null);
+        event.setPhaseId(PhaseId.APPLY_REQUEST_VALUES);
+        input.queueEvent(event);
+
+        event = new ValueChangeEvent(input, null, null);
+        event.setPhaseId(PhaseId.PROCESS_VALIDATIONS);
+        input.queueEvent(event);
+
+        event = new ValueChangeEvent(input, null, null);
+        event.setPhaseId(PhaseId.INVOKE_APPLICATION);
+        input.queueEvent(event);
+
+        // Fire events and evaluate results
+        root.processDecodes(facesContext);
+        root.processValidators(facesContext);
+        root.processApplication(facesContext);
+        assertEquals("/ARV/PV/AP/ARV/PV/AP/ARV/PV/AP",
+                ValueChangeListenerTestImpl.trace());
+    }
+
+    // Test listener registration and deregistration
+    public void testListeners() {
+        InputTestImpl input = new InputTestImpl();
+        ValueChangeListenerTestImpl listener = null;
+
+        input.addValueChangeListener(new ValueChangeListenerTestImpl("ARV0"));
+        input.addValueChangeListener(new ValueChangeListenerTestImpl("ARV1"));
+        input.addValueChangeListener(new ValueChangeListenerTestImpl("PV0"));
+        input.addValueChangeListener(new ValueChangeListenerTestImpl("PV1"));
+        input.addValueChangeListener(new ValueChangeListenerTestImpl("PV2"));
+
+        ValueChangeListener listeners[] = input.getValueChangeListeners();
+        assertEquals(5, listeners.length);
+        input.removeValueChangeListener(listeners[2]);
+        listeners = input.getValueChangeListeners();
+        assertEquals(4, listeners.length);
+    }
+
+    // Test empty listener list
+    public void testEmptyListeners() {
+        InputTestImpl input = new InputTestImpl();
+        ValueChangeListenerTestImpl listener = null;
+
+        //No listeners added, should be empty
+        ValueChangeListener listeners[] = input.getValueChangeListeners();
+        assertEquals(0, listeners.length);
+    }
+
+    // Test a pristine UIInput instance
+    @Override
+    public void testPristine() {
+        super.testPristine();
+        UIInput input = (UIInput) component;
+
+        assertNull("no submittedValue", input.getSubmittedValue());
+        assertTrue("not required", !input.isRequired());
+        assertTrue("is valid", input.isValid());
+        assertTrue("is not immediate", !input.isImmediate());
+        assertNull("no validatorBinding", input.getValidator());
+        assertNull("no valueChangeListener", input.getValueChangeListener());
+    }
+
+    // Test setting properties to invalid values
+    @Override
+    public void testPropertiesInvalid() throws Exception {
+        super.testPropertiesInvalid();
+        UIInput input = (UIInput) component;
+    }
+
+    // Test setting properties to valid values
+    @Override
+    public void testPropertiesValid() throws Exception {
+        super.testPropertiesValid();
+        UIInput input = (UIInput) component;
+
+        input.setSubmittedValue("foo");
+        assertEquals("foo", input.getSubmittedValue());
+        input.setSubmittedValue(null);
+        assertNull(input.getSubmittedValue());
+
+        input.setRequired(true);
+        assertTrue(input.isRequired());
+        input.setRequired(false);
+        assertTrue(!input.isRequired());
+
+        input.setValid(false);
+        assertTrue(!input.isValid());
+        input.setValid(true);
+        assertTrue(input.isValid());
+
+        Application app = facesContext.getApplication();
+        MethodBinding methodBinding = null;
+
+        input.setValidator(methodBinding
+                = app.createMethodBinding("#{foo.bar}", null));
+        assertEquals(methodBinding, input.getValidator());
+        input.setValidator(null);
+        assertNull(input.getValidator());
+
+        input.setValueChangeListener(methodBinding
+                = app.createMethodBinding("#{foo.bar}", null));
+        assertEquals(methodBinding, input.getValueChangeListener());
+        input.setValueChangeListener(null);
+        assertNull(input.getValueChangeListener());
+    }
+
+    // Test updating model values
+    public void testUpdateModel() throws Exception {
+        // Set up test bean as a request attribute
+        DataBeanTestImpl test = new DataBeanTestImpl();
+        test.setCommand("old command");
+        request.setAttribute("test", test);
+
+        // Point at the "command" property
+        UIViewRoot root = facesContext.getApplication().getViewHandler().createView(facesContext, null);
+        root.getChildren().add(component);
+        UIInput input = (UIInput) component;
+        input.setValueBinding("value",
+                application.createValueBinding("#{test.command}"));
+        checkMessages(0);
+
+        // Perform update on a valid value
+        input.setValid(true);
+        input.setValue("new command");
+        assertEquals("new command", input.getLocalValue());
+        input.updateModel(facesContext);
+        assertEquals("new command", test.getCommand());
+        assertNull(input.getLocalValue());
+        assertTrue(input.isValid());
+        checkMessages(0);
+        input.resetValue();
+        assertNull(input.getLocalValue());
+        assertEquals("new command", input.getValue());
+        assertNull(input.getSubmittedValue());
+        assertTrue(input.isValid());
+        assertTrue(!input.isLocalValueSet());
+
+        // Skip update on an invalid value
+        input.setValid(false);
+        input.setValue("bad command");
+        assertEquals("bad command", input.getLocalValue());
+        input.updateModel(facesContext);
+        assertEquals("new command", test.getCommand());
+        assertEquals("bad command", input.getLocalValue());
+        assertTrue(!input.isValid());
+        checkMessages(0);
+
+        // Log conversion error on update failure
+        input.setValid(true);
+        input.setValue(new Integer(5));
+        assertEquals(new Integer(5), (Integer) input.getLocalValue());
+        input.updateModel(facesContext);
+        assertEquals("new command", test.getCommand());
+        assertEquals(new Integer(5), (Integer) input.getLocalValue());
+        assertTrue(!input.isValid());
+        checkMessages(1);
+
+        // Perform update on a null value
+        input.setValid(true);
+        input.setValue(null);
+        assertNull(input.getLocalValue());
+        input.updateModel(facesContext);
+        assertNull(test.getCommand());
+        assertNull(input.getLocalValue());
+        assertTrue(input.isValid());
+        checkMessages(1);
+    }
+
+    // Test order of validator calls with validator also
+    public void testValidateOrder() throws Exception {
+        Class validateParams[] = {FacesContext.class, UIComponent.class,
+            Object.class};
+
+        UIViewRoot root = facesContext.getApplication().getViewHandler().createView(facesContext, null);
+        root.getChildren().add(component);
+        UIInput input = (UIInput) component;
+        input.addValidator(new InputValidatorTestImpl("v1"));
+        input.addValidator(new InputValidatorTestImpl("v2"));
+        Application app = facesContext.getApplication();
+        MethodBinding methodBinding = null;
+
+        input.setValidator(methodBinding
+                = app.createMethodBinding("v3.validate", validateParams));
+        assertEquals(methodBinding, input.getValidator());
+        request.setAttribute("v3", new InputValidatorTestImpl("v3"));
+        InputValidatorTestImpl.trace(null);
+        setupNewValue(input);
+        root.processValidators(facesContext);
+        assertEquals("/v1/v2/v3", InputValidatorTestImpl.trace());
+    }
+
+    // Test validation of a required field
+    public void testValidateRequired() throws Exception {
+        UIViewRoot root = facesContext.getApplication().getViewHandler().createView(facesContext, null);
+        root.getChildren().add(component);
+        UIInput input = (UIInput) component;
+        input.setRequired(true);
+        checkMessages(0);
+
+        input.setValid(true);
+        input.setSubmittedValue("foo");
+        input.validate(facesContext);
+        checkMessages(0);
+        assertTrue(input.isValid());
+
+        input.getAttributes().put("label", "mylabel");
+        input.setValid(true);
+        input.setSubmittedValue("");
+        input.validate(facesContext);
+        checkMessages(1);
+        assertTrue(!input.isValid());
+
+        Iterator messages = facesContext.getMessages();
+        while (messages.hasNext()) {
+            FacesMessage message = (FacesMessage) messages.next();
+            assertTrue(message.getSummary().indexOf("mylabel") >= 0);
+        }
+
+        input.setValid(true);
+        input.setSubmittedValue(null);
+        input.validate(facesContext);
+        // awiner: this was formerly "checkMessages(2)", but a submitted
+        // value of null now explicitly means _do not validate_.
+        checkMessages(1);
+        // awiner: And this next line flipped as well
+        assertTrue(input.isValid());
+    }
+
+    // Test that appropriate properties are value binding enabled
+    @Override
+    public void testValueBindings() {
+        super.testValueBindings();
+        UIInput test = (UIInput) component;
+
+        // "required" property
+        request.setAttribute("foo", Boolean.FALSE);
+        boolean initial = test.isRequired();
+        if (initial) {
+            request.setAttribute("foo", Boolean.FALSE);
+        } else {
+            request.setAttribute("foo", Boolean.TRUE);
+        }
+        test.setValueBinding("required", application.createValueBinding("#{foo}"));
+        assertEquals(!initial, test.isRequired());
+        test.setRequired(initial);
+        assertEquals(initial, test.isRequired());
+        assertNotNull(test.getValueBinding("required"));
+
+        // "value" property
+        request.setAttribute("foo", "bar");
+        test.resetValue();
+        assertNull(test.getValue());
+        test.setValueBinding("value", application.createValueBinding("#{foo}"));
+        assertNotNull(test.getValueBinding("value"));
+        assertEquals("bar", test.getValue());
+        test.setValue("baz");
+        assertEquals("baz", test.getValue());
+        test.resetValue();
+        assertEquals("bar", test.getValue());
+        test.setValueBinding("value", null);
+        assertNull(test.getValueBinding("value"));
+        assertNull(test.getValue());
+
+        // "immediate" property
+        request.setAttribute("foo", Boolean.FALSE);
+        boolean initialImmediate = test.isImmediate();
+        if (initialImmediate) {
+            request.setAttribute("foo", Boolean.FALSE);
+        } else {
+            request.setAttribute("foo", Boolean.TRUE);
+        }
+        test.setValueBinding("immediate", application.createValueBinding("#{foo}"));
+        assertEquals(!initialImmediate, test.isImmediate());
+        test.setImmediate(initialImmediate);
+        assertEquals(initialImmediate, test.isImmediate());
+        assertNotNull(test.getValueBinding("immediate"));
+    }
+
+    // Test order of value change calls with valueChangeListener also
+    public void testValueChangeOrder() throws Exception {
+
+        Class signature[] = {ValueChangeEvent.class};
+        Application app = facesContext.getApplication();
+        MethodBinding methodBinding = null;
+
+        UIViewRoot root = facesContext.getApplication().getViewHandler().createView(facesContext, null);
+        root.getChildren().add(component);
+        UIInput input = (UIInput) component;
+        input.addValueChangeListener(new InputValueChangeListenerTestImpl("l1"));
+        input.addValueChangeListener(new InputValueChangeListenerTestImpl("l2"));
+        input.setValueChangeListener(app.createMethodBinding("l3.processValueChange", signature));
+        request.setAttribute("l3", new InputValueChangeListenerTestImpl("l3"));
+        InputValueChangeListenerTestImpl.trace(null);
+        setupNewValue(input);
+        root.processValidators(facesContext);
+        assertEquals("/l1/l2/l3", InputValueChangeListenerTestImpl.trace());
+    }
+
+    // Test order of value change calls with valueChangeListener also
+    public void testImmediate() throws Exception {
+        Class signature[] = {ValueChangeEvent.class};
+        Application app = facesContext.getApplication();
+        MethodBinding methodBinding = null;
+
+        UIViewRoot root = facesContext.getApplication().getViewHandler().createView(facesContext, null);
+        root.getChildren().add(component);
+        UIInput input = (UIInput) component;
+        input.setImmediate(true);
+        input.addValueChangeListener(new InputValueChangeListenerTestImpl("l1"));
+        input.addValueChangeListener(new InputValueChangeListenerTestImpl("l2"));
+        input.setValueChangeListener(app.createMethodBinding("l3.processValueChange", signature));
+        request.setAttribute("l3", new InputValueChangeListenerTestImpl("l3"));
+        InputValueChangeListenerTestImpl.trace(null);
+        setupNewValue(input);
+        root.processValidators(facesContext);
+        // No ValueChangeEvent should get delivered, because
+        // "immediate" processing fires during processDecodes(), not
+        // processValidators()
+        assertEquals("", InputValueChangeListenerTestImpl.trace());
+    }
+
+    public void testGetValueChangeListeners() throws Exception {
+        UIInput command = (UIInput) component;
+        UIViewRoot root = facesContext.getApplication().getViewHandler().createView(facesContext, null);
+        root.getChildren().add(command);
+
+        ValueChangeListenerTestImpl ta1 = new ValueChangeListenerTestImpl("ta1"),
+                ta2 = new ValueChangeListenerTestImpl("ta2");
+
+        command.addValueChangeListener(ta1);
+        command.addValueChangeListener(ta2);
+        ValueChangeListener[] listeners = (ValueChangeListener[]) command.getValueChangeListeners();
+        assertEquals(2, listeners.length);
+        ValueChangeListenerTestImpl[] taListeners = (ValueChangeListenerTestImpl[]) command.getFacesListeners(ValueChangeListenerTestImpl.class);
+    }
+
+    // --------------------------------------------------------- Support Methods
+    // Check that the number of queued messages equals the expected count
+    // and that each of them is of severity ERROR
+    protected void checkMessages(int expected) {
+        facesContext.getExceptionHandler().handle();
+        int n = 0;
+        Iterator messages = facesContext.getMessages();
+        while (messages.hasNext()) {
+            FacesMessage message = (FacesMessage) messages.next();
+            assertEquals("Severity == ERROR",
+                    FacesMessage.SEVERITY_ERROR,
+                    message.getSeverity());
+            n++;
+            // System.err.println(message.getSummary());
+        }
+        assertEquals("expected message count", expected, n);
+    }
+
+    // Check that the properties on the specified components are equal
+    @Override
+    protected void checkProperties(UIComponent comp1, UIComponent comp2) {
+        super.checkProperties(comp1, comp2);
+        UIInput i1 = (UIInput) comp1;
+        UIInput i2 = (UIInput) comp2;
+        // "submittedValue" is not preserved across state-saves
+        //        assertEquals(i1.getSubmittedValue(), i2.getSubmittedValue());
+        assertEquals(i1.isRequired(), i2.isRequired());
+        assertEquals(i1.isValid(), i2.isValid());
+        assertEquals(i1.getValidator(), i2.getValidator());
+        assertEquals(i1.getValueChangeListener(), i2.getValueChangeListener());
+    }
+
+    // Create a pristine component of the type to be used in state holder tests
+    @Override
+    protected UIComponent createComponent() {
+        UIComponent component = new UIInput();
+        component.setRendererType(null);
+        return (component);
+    }
+
+    // Populate a pristine component to be used in state holder tests
+    @Override
+    protected void populateComponent(UIComponent component) {
+        super.populateComponent(component);
+        UIInput i = (UIInput) component;
+        i.setSubmittedValue("submittedValue");
+        i.setValid(false);
+        i.setRequired(true);
+        Application app = facesContext.getApplication();
+        MethodBinding methodBinding = null;
+
+        i.setValidator(methodBinding
+                = app.createMethodBinding("#{foo.bar}", null));
+        i.setValueChangeListener(app.createMethodBinding("#{baz.bop}", null));
+    }
+
+    protected boolean listenersAreEqual(FacesContext context,
+            UIInput comp1,
+            UIInput comp2) {
+
+        ValueChangeListener list1[] = comp1.getValueChangeListeners();
+        ValueChangeListener list2[] = comp2.getValueChangeListeners();
+        assertNotNull(list1);
+        assertNotNull(list2);
+        assertEquals(list1.length, list2.length);
+        for (int i = 0; i < list1.length; i++) {
+            assertTrue(list1[i].getClass() == list2[i].getClass());
+        }
+        return true;
+    }
+
+    protected void setupNewValue(UIInput input) {
+        input.setSubmittedValue("foo");
+    }
+
+    protected boolean validatorsAreEqual(FacesContext context,
+            UIInput comp1,
+            UIInput comp2) {
+
+        Validator list1[] = comp1.getValidators();
+        Validator list2[] = comp2.getValidators();
+        assertNotNull(list1);
+        assertNotNull(list2);
+        assertEquals(list1.length, list2.length);
+        for (int i = 0; i < list1.length; i++) {
+            assertTrue(list1[i].getClass() == list2[i].getClass());
+        }
+        return (true);
+    }
+}
diff --git a/test/unit/src/test/java/javax/faces/component/UIOutputAttachedObjectStateTestCase.java b/test/unit/src/test/java/javax/faces/component/UIOutputAttachedObjectStateTestCase.java
new file mode 100644
index 0000000..80c4a71
--- /dev/null
+++ b/test/unit/src/test/java/javax/faces/component/UIOutputAttachedObjectStateTestCase.java
@@ -0,0 +1,184 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package javax.faces.component;
+
+import com.sun.faces.mock.MockExternalContext;
+import junit.framework.TestCase;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import com.sun.faces.mock.MockFacesContext;
+import com.sun.faces.mock.MockHttpServletRequest;
+import com.sun.faces.mock.MockHttpServletResponse;
+import com.sun.faces.mock.MockLifecycle;
+import com.sun.faces.mock.MockServletContext;
+import java.lang.reflect.Method;
+import javax.faces.FactoryFinder;
+import javax.faces.convert.DateTimeConverter;
+import javax.faces.convert.Converter;
+import static junit.framework.Assert.assertNotNull;
+import static junit.framework.Assert.assertNull;
+import static junit.framework.Assert.assertTrue;
+
+public class UIOutputAttachedObjectStateTestCase extends TestCase {
+
+    private MockFacesContext facesContext = null;
+    private MockServletContext servletContext;
+    private MockHttpServletRequest request;
+    private MockHttpServletResponse response;
+
+    public UIOutputAttachedObjectStateTestCase(String arg0) {
+        super(arg0);
+    }
+
+    // Return the tests included in this test case.
+    public static Test suite() {
+        return (new TestSuite(UIOutputAttachedObjectStateTestCase.class));
+    }
+
+    @Override
+    public void setUp() throws Exception {
+        super.setUp();
+        facesContext = new MockFacesContext();
+        facesContext = new MockFacesContext();
+
+        servletContext = new MockServletContext();
+        servletContext.addInitParameter("appParamName", "appParamValue");
+        servletContext.setAttribute("appScopeName", "appScopeValue");
+        request = new MockHttpServletRequest(null);
+        request.setAttribute("reqScopeName", "reqScopeValue");
+        response = new MockHttpServletResponse();
+
+        // Create something to stand-in as the InitFacesContext
+        new MockFacesContext(new MockExternalContext(servletContext, request, response),
+                new MockLifecycle());
+
+    }
+
+    @Override
+    protected void tearDown() throws Exception {
+        super.tearDown();
+        FactoryFinder.releaseFactories();
+        Method reInitializeFactoryManager = FactoryFinder.class.getDeclaredMethod("reInitializeFactoryManager", (Class<?>[]) null);
+        reInitializeFactoryManager.setAccessible(true);
+        reInitializeFactoryManager.invoke(null, (Object[]) null);
+    }
+
+    // ------------------------------------------------------------ Test Methods
+    public void testConverterState() {
+        UIOutput output = new UIOutput();
+        DateTimeConverter converter = new DateTimeConverter();
+        converter.setPattern("MM-dd-yy");
+        output.setConverter(converter);
+        output.markInitialState();
+        assertTrue(output.initialStateMarked());
+        assertTrue(converter.initialStateMarked());
+
+        Object result = output.saveState(facesContext);
+        // initial state has been marked an no changes
+        // have occurred, we should have null state.
+        assertNull(result);
+
+        // setup the scenario again, but this time,
+        // update the converter pattern.
+        output = new UIOutput();
+        converter = new DateTimeConverter();
+        converter.setPattern("MM-dd-yy");
+        output.setConverter(converter);
+        output.markInitialState();
+        assertTrue(output.initialStateMarked());
+        assertTrue(converter.initialStateMarked());
+
+        // now tweak the converter
+        converter.setPattern("dd-MM-yy");
+        result = output.saveState(facesContext);
+        assertTrue(result instanceof Object[]);
+        Object[] state = (Object[]) result;
+
+        // state should have a lenght of 2.  The first element
+        // is the state from UIComponentBase, where the second
+        // is the converter state.  The first element in this
+        // case should be null
+        assertTrue(state.length == 2);
+        assertTrue(state[0] == null);
+        assertTrue(state[1] != null);
+
+        output = new UIOutput();
+        converter = new DateTimeConverter();
+        output.setConverter(converter);
+
+        // now validate what we've restored
+        // first, ensure converter is null.  This will
+        // be the case when initialState has been marked
+        // for the component.
+        output.restoreState(facesContext, state);
+        assertTrue(output.getConverter() != null);
+        assertTrue("dd-MM-yy".equals(converter.getPattern()));
+
+        // now validate the case where UIOutput has some event
+        // that adds a converter *after* initial state has been
+        // marked.  This will cause the component to save full
+        // state.
+        output = new UIOutput();
+        output.markInitialState();
+        output.setConverter(converter);
+        assertTrue(!output.initialStateMarked());
+        assertTrue(!converter.initialStateMarked());
+
+        result = output.saveState(facesContext);
+        assertNotNull(result);
+
+        // this time, both elements in the state array will not
+        // be null.  If we call retoreState() on a new component instance
+        // without setting a converter, we should have a new DateTimeConverter
+        // *with* the expected pattern.
+        assertTrue(result instanceof Object[]);
+        state = (Object[]) result;
+        assertTrue(state.length == 2);
+        assertTrue(state[1] instanceof StateHolderSaver);
+        output = new UIOutput();
+        assertNull(output.getConverter());
+        output.restoreState(facesContext, state);
+        Converter c = output.getConverter();
+        assertNotNull(c);
+        assertTrue(c instanceof DateTimeConverter);
+        converter = (DateTimeConverter) c;
+        assertTrue("dd-MM-yy".equals(converter.getPattern()));
+    }
+}
diff --git a/test/unit/src/test/java/javax/faces/component/UIOutputTestCase.java b/test/unit/src/test/java/javax/faces/component/UIOutputTestCase.java
new file mode 100644
index 0000000..1b1e56e
--- /dev/null
+++ b/test/unit/src/test/java/javax/faces/component/UIOutputTestCase.java
@@ -0,0 +1,167 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package javax.faces.component;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import javax.faces.convert.LongConverter;
+import javax.faces.convert.ShortConverter;
+
+/**
+ * <p>
+ * Unit tests for {@link UIOutput}.</p>
+ */
+public class UIOutputTestCase extends ValueHolderTestCaseBase {
+
+    // ------------------------------------------------------------ Constructors
+    /**
+     * Construct a new instance of this test case.
+     *
+     * @param name Name of the test case
+     */
+    public UIOutputTestCase(String name) {
+        super(name);
+    }
+
+    // ---------------------------------------------------- Overall Test Methods
+    // Set up instance variables required by this test case.
+    @Override
+    public void setUp() throws Exception {
+        super.setUp();
+        component = new UIOutput();
+        expectedFamily = UIOutput.COMPONENT_FAMILY;
+        expectedId = null;
+        expectedRendererType = "javax.faces.Text";
+    }
+
+    // Return the tests included in this test case.
+    public static Test suite() {
+        return (new TestSuite(UIOutputTestCase.class));
+    }
+
+    // ------------------------------------------------- Individual Test Methods
+    // Test attribute-property transparency
+    @Override
+    public void testAttributesTransparency() {
+
+        super.testAttributesTransparency();
+        UIOutput output = (UIOutput) component;
+
+    }
+
+    // Suppress lifecycle tests since we do not have a renderer
+    @Override
+    public void testLifecycleManagement() {
+    }
+
+    // Test a pristine UIOutput instance
+    @Override
+    public void testPristine() {
+
+        super.testPristine();
+        UIOutput output = (UIOutput) component;
+
+    }
+
+    // Test setting properties to invalid values
+    @Override
+    public void testPropertiesInvalid() throws Exception {
+
+        super.testPropertiesInvalid();
+        UIOutput output = (UIOutput) component;
+
+    }
+
+    // Test setting properties to valid values
+    @Override
+    public void testPropertiesValid() throws Exception {
+
+        super.testPropertiesValid();
+        UIOutput output = (UIOutput) component;
+
+    }
+
+    @Override
+    public void testValueBindings() {
+
+        super.testValueBindings();
+        UIOutput test = (UIOutput) component;
+
+        // "converter" property
+        request.setAttribute("foo", new LongConverter());
+        test.setConverter(null);
+        assertNull(test.getConverter());
+        test.setValueBinding("converter", application.createValueBinding("#{foo}"));
+        assertNotNull(test.getValueBinding("converter"));
+        assertTrue(test.getConverter() instanceof LongConverter);
+        test.setConverter(new ShortConverter());
+        assertTrue(test.getConverter() instanceof ShortConverter);
+        test.setConverter(null);
+        assertTrue(test.getConverter() instanceof LongConverter);
+        test.setValueBinding("converter", null);
+        assertNull(test.getValueBinding("converter"));
+        assertNull(test.getConverter());
+
+        // "value" property
+        request.setAttribute("foo", "bar");
+        test.resetValue();
+        assertNull(test.getValue());
+        test.setValueBinding("value", application.createValueBinding("#{foo}"));
+        assertNotNull(test.getValueBinding("value"));
+        assertEquals("bar", test.getValue());
+        test.setValue("baz");
+        assertEquals("baz", test.getValue());
+        test.resetValue();
+        assertEquals("bar", test.getValue());
+        test.setValueBinding("value", null);
+        assertNull(test.getValueBinding("value"));
+        assertNull(test.getValue());
+
+    }
+
+    // --------------------------------------------------------- Support Methods
+    // Create a pristine component of the type to be used in state holder tests
+    @Override
+    protected UIComponent createComponent() {
+        UIComponent component = new UIOutput();
+        component.setRendererType(null);
+        return (component);
+    }
+}
diff --git a/test/unit/src/test/java/javax/faces/component/UIPanelTestCase.java b/test/unit/src/test/java/javax/faces/component/UIPanelTestCase.java
new file mode 100644
index 0000000..a2bc051
--- /dev/null
+++ b/test/unit/src/test/java/javax/faces/component/UIPanelTestCase.java
@@ -0,0 +1,118 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package javax.faces.component;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+/**
+ * <p>
+ * Unit tests for {@link UIPanel}.</p>
+ */
+public class UIPanelTestCase extends UIComponentBaseTestCase {
+
+    // ------------------------------------------------------------ Constructors
+    /**
+     * Construct a new instance of this test case.
+     *
+     * @param name Name of the test case
+     */
+    public UIPanelTestCase(String name) {
+        super(name);
+    }
+
+    // ---------------------------------------------------- Overall Test Methods
+    // Set up instance variables required by this test case.
+    @Override
+    public void setUp() throws Exception {
+        super.setUp();
+        component = new UIPanel();
+        expectedFamily = UIPanel.COMPONENT_FAMILY;
+        expectedId = null;
+        expectedRendererType = null;
+        expectedRendersChildren = false;
+    }
+
+    // Return the tests included in this test case.
+    public static Test suite() {
+        return (new TestSuite(UIPanelTestCase.class));
+    }
+
+    // ------------------------------------------------- Individual Test Methods
+    // Suppress lifecycle tests since we do not have a renderer
+    @Override
+    public void testLifecycleManagement() {
+    }
+
+    // Test a pristine UIPanel instance
+    @Override
+    public void testPristine() {
+        super.testPristine();
+        UIPanel panel = (UIPanel) component;
+    }
+
+    // Test setting properties to invalid values
+    @Override
+    public void testPropertiesInvalid() throws Exception {
+        super.testPropertiesInvalid();
+        UIPanel panel = (UIPanel) component;
+    }
+
+    // Test setting properties to valid values
+    @Override
+    public void testPropertiesValid() throws Exception {
+        super.testPropertiesValid();
+        UIPanel panel = (UIPanel) component;
+    }
+
+    public void PENDING_FIXME_testValueBindings() {
+        super.testValueBindings();
+        UIPanel test = (UIPanel) component;
+    }
+
+    // --------------------------------------------------------- Support Methods
+    // Create a pristine component of the type to be used in state holder tests
+    @Override
+    protected UIComponent createComponent() {
+        UIComponent component = new UIPanel();
+        component.setRendererType(null);
+        return (component);
+    }
+}
diff --git a/test/unit/src/test/java/javax/faces/component/UIParameterTest.java b/test/unit/src/test/java/javax/faces/component/UIParameterTest.java
new file mode 100644
index 0000000..a079120
--- /dev/null
+++ b/test/unit/src/test/java/javax/faces/component/UIParameterTest.java
@@ -0,0 +1,91 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package javax.faces.component;
+
+import java.lang.reflect.Method;
+import javax.el.ELContext;
+import javax.el.ValueExpression;
+import javax.faces.context.FacesContext;
+import org.junit.Test;
+import static org.easymock.EasyMock.*;
+import static org.junit.Assert.*;
+import org.powermock.api.easymock.PowerMock;
+
+public class UIParameterTest {
+    
+    /**
+     * Test isDisable method.
+     */
+    @Test
+    public void testIsDisable() throws Exception {
+        FacesContext facesContext = PowerMock.createNicePartialMockForAllMethodsExcept(FacesContext.class, "getCurrentInstance", "setCurrentInstance");
+        ValueExpression valueExpression = PowerMock.createMock(ValueExpression.class);
+        Method method = FacesContext.class.getDeclaredMethod("setCurrentInstance", FacesContext.class);
+        method.setAccessible(true);
+        method.invoke(null, facesContext);        
+        UIParameter parameter = new UIParameter();
+        parameter.setDisable(true);
+        assertTrue(parameter.isDisable());
+        method.invoke(null, (FacesContext) null);
+    }
+    
+    /**
+     * Test isDisable method.
+     */
+    @Test
+    public void testIsDisable2() throws Exception {
+        ELContext elContext = PowerMock.createMock(ELContext.class);
+        FacesContext facesContext = PowerMock.createPartialMockForAllMethodsExcept(FacesContext.class, "getCurrentInstance", "setCurrentInstance");
+        ValueExpression valueExpression = PowerMock.createMock(ValueExpression.class);
+        Method method = FacesContext.class.getDeclaredMethod("setCurrentInstance", FacesContext.class);
+        method.setAccessible(true);
+        method.invoke(null, facesContext);        
+        expect(facesContext.getExternalContext()).andReturn(null).anyTimes();
+        expect(valueExpression.isLiteralText()).andReturn(false).anyTimes();
+        expect(facesContext.getELContext()).andReturn(elContext);
+        expect(valueExpression.getValue(elContext)).andReturn(true);
+        replay(elContext, facesContext, valueExpression);
+        UIParameter parameter = new UIParameter();
+        parameter.setValueExpression("disable", valueExpression);
+        assertTrue(parameter.isDisable());
+        verify(elContext, facesContext, valueExpression);
+        method.invoke(null, (FacesContext) null);
+    }
+}
diff --git a/test/unit/src/test/java/javax/faces/component/UIParameterTestCase.java b/test/unit/src/test/java/javax/faces/component/UIParameterTestCase.java
new file mode 100644
index 0000000..795546c
--- /dev/null
+++ b/test/unit/src/test/java/javax/faces/component/UIParameterTestCase.java
@@ -0,0 +1,213 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package javax.faces.component;
+
+import static junit.framework.Assert.assertEquals;
+import static junit.framework.Assert.assertNotNull;
+import static junit.framework.Assert.assertNull;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+/**
+ * <p>
+ * Unit tests for {@link UIParameter}.</p>
+ */
+public class UIParameterTestCase extends UIComponentBaseTestCase {
+
+    // ------------------------------------------------------------ Constructors
+    /**
+     * Construct a new instance of this test case.
+     *
+     * @param name Name of the test case
+     */
+    public UIParameterTestCase(String name) {
+        super(name);
+    }
+
+    // ---------------------------------------------------- Overall Test Methods
+    // Set up instance variables required by this test case.
+    @Override
+    public void setUp() throws Exception {
+        super.setUp();
+        component = new UIParameter();
+        expectedFamily = UIParameter.COMPONENT_FAMILY;
+        expectedId = null;
+        expectedRendererType = null;
+    }
+
+    // Return the tests included in this test case.
+    public static Test suite() {
+        return (new TestSuite(UIParameterTestCase.class));
+    }
+
+    // ------------------------------------------------- Individual Test Methods
+    // Test attribute-property transparency
+    @Override
+    public void testAttributesTransparency() {
+
+        super.testAttributesTransparency();
+        UIParameter parameter = (UIParameter) component;
+
+        assertEquals(parameter.getValue(),
+                (String) component.getAttributes().get("value"));
+        parameter.setValue("foo");
+        assertEquals("foo", (String) component.getAttributes().get("value"));
+        parameter.setValue(null);
+        assertNull((String) component.getAttributes().get("value"));
+        component.getAttributes().put("value", "bar");
+        assertEquals("bar", parameter.getValue());
+        component.getAttributes().put("value", null);
+        assertNull(parameter.getValue());
+
+        assertEquals(parameter.getName(),
+                (String) parameter.getAttributes().get("name"));
+        parameter.setName("foo");
+        assertEquals("foo", (String) parameter.getAttributes().get("name"));
+        parameter.setName(null);
+        assertNull((String) parameter.getAttributes().get("name"));
+        parameter.getAttributes().put("name", "bar");
+        assertEquals("bar", parameter.getName());
+        parameter.getAttributes().put("name", null);
+        assertNull(parameter.getName());
+    }
+
+    // Suppress lifecycle tests since we do not have a renderer
+    @Override
+    public void testLifecycleManagement() {
+    }
+
+    // Test a pristine UIParameter instance
+    @Override
+    public void testPristine() {
+        super.testPristine();
+        UIParameter parameter = (UIParameter) component;
+
+        assertNull("no value", parameter.getValue());
+        assertNull("no name", parameter.getName());
+    }
+
+    // Test setting properties to invalid values
+    @Override
+    public void testPropertiesInvalid() throws Exception {
+        super.testPropertiesInvalid();
+        UIParameter parameter = (UIParameter) component;
+    }
+
+    // Test setting properties to valid values
+    @Override
+    public void testPropertiesValid() throws Exception {
+        super.testPropertiesValid();
+        UIParameter parameter = (UIParameter) component;
+
+        // value
+        parameter.setValue("foo.bar");
+        assertEquals("expected value",
+                "foo.bar", parameter.getValue());
+        parameter.setValue(null);
+        assertNull("erased value", parameter.getValue());
+
+        parameter.setName("foo");
+        assertEquals("foo", parameter.getName());
+        parameter.setName(null);
+        assertNull(parameter.getName());
+    }
+
+    @Override
+    public void testValueBindings() {
+        super.testValueBindings();
+        UIParameter test = (UIParameter) component;
+
+        // "name" property
+        request.setAttribute("foo", "bar");
+        test.setName(null);
+        assertNull(test.getName());
+        test.setValueBinding("name", application.createValueBinding("#{foo}"));
+        assertNotNull(test.getValueBinding("name"));
+        assertEquals("bar", test.getName());
+        test.setName("baz");
+        assertEquals("baz", test.getName());
+        test.setName(null);
+        assertEquals("bar", test.getName());
+        test.setValueBinding("name", null);
+        assertNull(test.getValueBinding("name"));
+        assertNull(test.getName());
+
+        // "value" property
+        request.setAttribute("foo", "bar");
+        test.setValue(null);
+        assertNull(test.getValue());
+        test.setValueBinding("value", application.createValueBinding("#{foo}"));
+        assertNotNull(test.getValueBinding("value"));
+        assertEquals("bar", test.getValue());
+        test.setValue("baz");
+        assertEquals("baz", test.getValue());
+        test.setValue(null);
+        assertEquals("bar", test.getValue());
+        test.setValueBinding("value", null);
+        assertNull(test.getValueBinding("value"));
+        assertNull(test.getValue());
+    }
+
+    // --------------------------------------------------------- Support Methods
+    // Check that the properties on the specified components are equal
+    @Override
+    protected void checkProperties(UIComponent comp1, UIComponent comp2) {
+        super.checkProperties(comp1, comp2);
+        UIParameter p1 = (UIParameter) comp1;
+        UIParameter p2 = (UIParameter) comp2;
+        assertEquals(p1.getName(), p2.getName());
+    }
+
+    // Create a pristine component of the type to be used in state holder tests
+    @Override
+    protected UIComponent createComponent() {
+        UIComponent component = new UIParameter();
+        component.setRendererType(null);
+        return (component);
+    }
+
+    // Populate a pristine component to be used in state holder tests
+    @Override
+    protected void populateComponent(UIComponent component) {
+        super.populateComponent(component);
+        UIParameter p = (UIParameter) component;
+        p.setName("foo");
+    }
+}
diff --git a/test/unit/src/test/java/javax/faces/component/UISelectBooleanTestCase.java b/test/unit/src/test/java/javax/faces/component/UISelectBooleanTestCase.java
new file mode 100644
index 0000000..d3e02f2
--- /dev/null
+++ b/test/unit/src/test/java/javax/faces/component/UISelectBooleanTestCase.java
@@ -0,0 +1,185 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package javax.faces.component;
+
+import javax.faces.el.ValueBinding;
+import static junit.framework.Assert.assertEquals;
+import static junit.framework.Assert.assertNotNull;
+import static junit.framework.Assert.assertNull;
+import static junit.framework.Assert.assertTrue;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+/**
+ * <p>
+ * Unit tests for {@link UISelectBoolean}.</p>
+ */
+public class UISelectBooleanTestCase extends UIInputTestCase {
+
+    // ------------------------------------------------------------ Constructors
+    /**
+     * Construct a new instance of this test case.
+     *
+     * @param name Name of the test case
+     */
+    public UISelectBooleanTestCase(String name) {
+        super(name);
+    }
+
+    // ---------------------------------------------------- Overall Test Methods
+    // Set up instance variables required by this test case.
+    @Override
+    public void setUp() throws Exception {
+        super.setUp();
+        component = new UISelectBoolean();
+        expectedFamily = UISelectBoolean.COMPONENT_FAMILY;
+        expectedRendererType = "javax.faces.Checkbox";
+    }
+
+    // Return the tests included in this test case.
+    public static Test suite() {
+        return (new TestSuite(UISelectBooleanTestCase.class));
+    }
+
+    // ------------------------------------------------- Individual Test Methods
+    // Test attribute-property transparency
+    @Override
+    public void testAttributesTransparency() {
+        super.testAttributesTransparency();
+        UISelectBoolean selectBoolean = (UISelectBoolean) component;
+
+        selectBoolean.setSelected(false);
+        assertEquals(Boolean.FALSE,
+                (Boolean) selectBoolean.getAttributes().get("selected"));
+        selectBoolean.setSelected(true);
+        assertEquals(Boolean.TRUE,
+                (Boolean) selectBoolean.getAttributes().get("selected"));
+        selectBoolean.getAttributes().put("selected", Boolean.FALSE);
+        assertTrue(!selectBoolean.isSelected());
+        selectBoolean.getAttributes().put("selected", Boolean.TRUE);
+        assertTrue(selectBoolean.isSelected());
+    }
+
+    // Test a pristine UISelectBoolean instance
+    @Override
+    public void testPristine() {
+        super.testPristine();
+        UISelectBoolean selectBoolean = (UISelectBoolean) component;
+        assertTrue("not selected", !selectBoolean.isSelected());
+    }
+
+    // Test setting properties to invalid values
+    @Override
+    public void testPropertiesInvalid() throws Exception {
+        super.testPropertiesInvalid();
+        UISelectBoolean selectBoolean = (UISelectBoolean) component;
+    }
+
+    // Test setting properties to valid values
+    @Override
+    public void testPropertiesValid() throws Exception {
+        super.testPropertiesValid();
+        UISelectBoolean selectBoolean = (UISelectBoolean) component;
+        selectBoolean.setSelected(true);
+        assertTrue(selectBoolean.isSelected());
+        assertEquals(Boolean.TRUE,
+                (Boolean) selectBoolean.getValue());
+        selectBoolean.setSelected(false);
+        assertTrue(!selectBoolean.isSelected());
+        assertEquals(Boolean.FALSE,
+                (Boolean) selectBoolean.getValue());
+
+        // Test transparency between "value" and "selected" properties
+        selectBoolean.setValue(Boolean.TRUE);
+        assertTrue(selectBoolean.isSelected());
+        selectBoolean.setValue(Boolean.FALSE);
+        assertTrue(!selectBoolean.isSelected());
+        selectBoolean.resetValue();
+        assertTrue(!selectBoolean.isSelected());
+
+        // Transparency applies to value bindings as well
+        assertNull(selectBoolean.getValueBinding("selected"));
+        assertNull(selectBoolean.getValueBinding("value"));
+        request.setAttribute("foo", Boolean.TRUE);
+        ValueBinding vb = application.createValueBinding("#{foo}");
+        selectBoolean.setValueBinding("selected", vb);
+        assertTrue(vb == selectBoolean.getValueBinding("selected"));
+        assertTrue(vb == selectBoolean.getValueBinding("value"));
+        selectBoolean.setValueBinding("selected", null);
+        assertNull(selectBoolean.getValueBinding("selected"));
+        assertNull(selectBoolean.getValueBinding("value"));
+        selectBoolean.setValueBinding("value", vb);
+        assertTrue(vb == selectBoolean.getValueBinding("selected"));
+        assertTrue(vb == selectBoolean.getValueBinding("value"));
+        selectBoolean.setValueBinding("selected", null);
+        assertNull(selectBoolean.getValueBinding("selected"));
+        assertNull(selectBoolean.getValueBinding("value"));
+    }
+
+    @Override
+    public void testValueBindings() {
+        super.testValueBindings();
+        UISelectBoolean test = (UISelectBoolean) component;
+
+        // "value" property
+        request.setAttribute("foo", "bar");
+        test.resetValue();
+        assertNull(test.getValue());
+        test.setValueBinding("value", application.createValueBinding("#{foo}"));
+        assertNotNull(test.getValueBinding("value"));
+        assertEquals("bar", test.getValue());
+        test.setValue("baz");
+        assertEquals("baz", test.getValue());
+        test.resetValue();
+        assertEquals("bar", test.getValue());
+        test.setValueBinding("value", null);
+        assertNull(test.getValueBinding("value"));
+        assertNull(test.getValue());
+    }
+
+    // --------------------------------------------------------- Support Methods
+    // Create a pristine component of the type to be used in state holder tests
+    @Override
+    protected UIComponent createComponent() {
+        UIComponent component = new UISelectBoolean();
+        component.setRendererType(null);
+        return (component);
+    }
+}
diff --git a/test/unit/src/test/java/javax/faces/component/UISelectItemSub.java b/test/unit/src/test/java/javax/faces/component/UISelectItemSub.java
new file mode 100644
index 0000000..ec56f4c
--- /dev/null
+++ b/test/unit/src/test/java/javax/faces/component/UISelectItemSub.java
@@ -0,0 +1,50 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package javax.faces.component;
+
+public class UISelectItemSub extends UISelectItem {
+
+    public UISelectItemSub(String value, String label, String description) {
+        super();
+        setItemValue(value);
+        setItemLabel(label);
+        setItemDescription(description);
+    }
+}
diff --git a/test/unit/src/test/java/javax/faces/component/UISelectItemTestCase.java b/test/unit/src/test/java/javax/faces/component/UISelectItemTestCase.java
new file mode 100644
index 0000000..af7bf48
--- /dev/null
+++ b/test/unit/src/test/java/javax/faces/component/UISelectItemTestCase.java
@@ -0,0 +1,319 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package javax.faces.component;
+
+import javax.faces.model.SelectItem;
+import static junit.framework.Assert.assertEquals;
+import static junit.framework.Assert.assertFalse;
+import static junit.framework.Assert.assertNotNull;
+import static junit.framework.Assert.assertNull;
+import static junit.framework.Assert.assertTrue;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+/**
+ * <p>
+ * Unit tests for {@link UISelectItem}.</p>
+ */
+public class UISelectItemTestCase extends UIComponentBaseTestCase {
+
+    // ------------------------------------------------------------ Constructors
+    /**
+     * Construct a new instance of this test case.
+     *
+     * @param name Name of the test case
+     */
+    public UISelectItemTestCase(String name) {
+        super(name);
+    }
+
+    // ---------------------------------------------------- Overall Test Methods
+    // Set up instance variables required by this test case.
+    @Override
+    public void setUp() throws Exception {
+        super.setUp();
+        component = new UISelectItem();
+        expectedFamily = UISelectItem.COMPONENT_FAMILY;
+        expectedId = null;
+        expectedRendererType = null;
+    }
+
+    // Return the tests included in this test case.
+    public static Test suite() {
+        return (new TestSuite(UISelectItemTestCase.class));
+    }
+
+    // ------------------------------------------------- Individual Test Methods
+    // Suppress lifecycle tests since we do not have a renderer
+    @Override
+    public void testLifecycleManagement() {
+    }
+
+    // Test attribute-property transparency
+    @Override
+    public void testAttributesTransparency() {
+        super.testAttributesTransparency();
+        UISelectItem selectItem = (UISelectItem) component;
+
+        assertEquals(selectItem.getValue(),
+                component.getAttributes().get("value"));
+        SelectItem item = new SelectItem("foo");
+        selectItem.setValue(item);
+        assertEquals(item, component.getAttributes().get("value"));
+        selectItem.setValue(null);
+
+        assertNull(component.getAttributes().get("value"));
+        component.getAttributes().put("value", "bar");
+        assertEquals("bar", selectItem.getValue());
+        component.getAttributes().put("value", null);
+        assertNull(selectItem.getValue());
+
+        assertEquals(selectItem.getItemDescription(),
+                (String) selectItem.getAttributes().get("itemDescription"));
+        selectItem.setItemDescription("foo");
+        assertEquals("foo", (String) selectItem.getAttributes().get("itemDescription"));
+        selectItem.setItemDescription(null);
+        assertNull((String) selectItem.getAttributes().get("itemDescription"));
+        selectItem.getAttributes().put("itemDescription", "bar");
+        assertEquals("bar", selectItem.getItemDescription());
+        selectItem.getAttributes().put("itemDescription", null);
+        assertNull(selectItem.getItemDescription());
+
+        assertEquals(selectItem.isItemDisabled(),
+                ((Boolean) selectItem.getAttributes().get("itemDisabled")).
+                booleanValue());
+        selectItem.setItemDisabled(true);
+        assertTrue(((Boolean) selectItem.getAttributes().
+                get("itemDisabled")).booleanValue());
+        selectItem.setItemDisabled(false);
+        assertFalse(((Boolean) selectItem.getAttributes().
+                get("itemDisabled")).booleanValue());
+        selectItem.getAttributes().put("itemDisabled", Boolean.FALSE);
+        assertFalse(selectItem.isItemDisabled());
+        selectItem.getAttributes().put("itemDisabled", Boolean.TRUE);
+        assertTrue(selectItem.isItemDisabled());
+
+        assertEquals(selectItem.getItemLabel(),
+                (String) selectItem.getAttributes().get("itemLabel"));
+        selectItem.setItemLabel("foo");
+        assertEquals("foo", (String) selectItem.getAttributes().get("itemLabel"));
+        selectItem.setItemLabel(null);
+        assertNull((String) selectItem.getAttributes().get("itemLabel"));
+        selectItem.getAttributes().put("itemLabel", "bar");
+        assertEquals("bar", selectItem.getItemLabel());
+        selectItem.getAttributes().put("itemLabel", null);
+        assertNull(selectItem.getItemLabel());
+
+        assertEquals(selectItem.getItemValue(),
+                (String) selectItem.getAttributes().get("itemValue"));
+        selectItem.setItemValue("foo");
+        assertEquals("foo", (String) selectItem.getAttributes().get("itemValue"));
+        selectItem.setItemValue(null);
+        assertNull((String) selectItem.getAttributes().get("itemValue"));
+        selectItem.getAttributes().put("itemValue", "bar");
+        assertEquals("bar", selectItem.getItemValue());
+        selectItem.getAttributes().put("itemValue", null);
+        assertNull(selectItem.getItemValue());
+    }
+
+    // Test a pristine UISelectItem instance
+    @Override
+    public void testPristine() {
+        super.testPristine();
+        UISelectItem selectItem = (UISelectItem) component;
+
+        assertNull("no value", selectItem.getValue());
+        assertNull("no itemDescription", selectItem.getItemDescription());
+        assertFalse("no itemDisabled", selectItem.isItemDisabled());
+        assertNull("no itemLabel", selectItem.getItemLabel());
+        assertNull("no itemValue", selectItem.getItemValue());
+    }
+
+    // Test setting properties to invalid values
+    @Override
+    public void testPropertiesInvalid() throws Exception {
+        super.testPropertiesInvalid();
+        UISelectItem selectItem = (UISelectItem) component;
+    }
+
+    // Test setting properties to valid values
+    @Override
+    public void testPropertiesValid() throws Exception {
+        super.testPropertiesValid();
+        UISelectItem selectItem = (UISelectItem) component;
+
+        // value
+        SelectItem item = new SelectItem("foo");
+        selectItem.setValue(item);
+        assertEquals("expected value",
+                item, selectItem.getValue());
+        selectItem.setValue(null);
+        assertNull("erased value", selectItem.getValue());
+
+        selectItem.setItemDescription("foo");
+        assertEquals("foo", selectItem.getItemDescription());
+        selectItem.setItemDescription(null);
+        assertNull(selectItem.getItemDescription());
+
+        selectItem.setItemDisabled(false);
+        assertFalse(selectItem.isItemDisabled());
+        selectItem.setItemDisabled(true);
+        assertTrue(selectItem.isItemDisabled());
+
+        selectItem.setItemLabel("foo");
+        assertEquals("foo", selectItem.getItemLabel());
+        selectItem.setItemLabel(null);
+        assertNull(selectItem.getItemLabel());
+
+        selectItem.setItemValue("foo");
+        assertEquals("foo", selectItem.getItemValue());
+        selectItem.setItemValue(null);
+        assertNull(selectItem.getItemValue());
+    }
+
+    public void PENDING_FIXME_testValueBindings() {
+
+        super.testValueBindings();
+        UISelectItem test = (UISelectItem) component;
+
+        // "itemDescription" property
+        request.setAttribute("foo", "bar");
+        test.setItemDescription(null);
+        assertNull(test.getItemDescription());
+        test.setValueBinding("itemDescription", application.createValueBinding("#{foo}"));
+        assertNotNull(test.getValueBinding("itemDescription"));
+        assertEquals("bar", test.getItemDescription());
+        test.setItemDescription("baz");
+        assertEquals("baz", test.getItemDescription());
+        test.setItemDescription(null);
+        assertEquals("bar", test.getItemDescription());
+        test.setValueBinding("itemDescription", null);
+        assertNull(test.getValueBinding("itemDescription"));
+        assertNull(test.getItemDescription());
+
+        // "itemDisabled" property
+        assertFalse(test.isItemDisabled());
+        request.setAttribute("foo", Boolean.TRUE);
+        test.setValueBinding("itemDisabled", application.createValueBinding("#{foo}"));
+        assertNotNull(test.getValueBinding("itemDisabled"));
+        assertTrue(test.isItemDisabled());
+        test.setItemDisabled(false);
+        assertFalse(test.isItemDisabled());
+        test.setValueBinding("itemDisabled", null);
+        assertNull(test.getValueBinding("itemDisabled"));
+        assertFalse(test.isItemDisabled());
+
+        // "itemLabel" property
+        request.setAttribute("foo", "bar");
+        test.setItemLabel(null);
+        assertNull(test.getItemLabel());
+        test.setValueBinding("itemLabel", application.createValueBinding("#{foo}"));
+        assertNotNull(test.getValueBinding("itemLabel"));
+        assertEquals("bar", test.getItemLabel());
+        test.setItemLabel("baz");
+        assertEquals("baz", test.getItemLabel());
+        test.setItemLabel(null);
+        assertEquals("bar", test.getItemLabel());
+        test.setValueBinding("itemLabel", null);
+        assertNull(test.getValueBinding("itemLabel"));
+        assertNull(test.getItemLabel());
+
+        // "itemValue" property
+        request.setAttribute("foo", "bar");
+        test.setItemValue(null);
+        assertNull(test.getItemValue());
+        test.setValueBinding("itemValue", application.createValueBinding("#{foo}"));
+        assertNotNull(test.getValueBinding("itemValue"));
+        assertEquals("bar", test.getItemValue());
+        test.setItemValue("baz");
+        assertEquals("baz", test.getItemValue());
+        test.setItemValue(null);
+        assertEquals("bar", test.getItemValue());
+        test.setValueBinding("itemValue", null);
+        assertNull(test.getValueBinding("itemValue"));
+        assertNull(test.getItemValue());
+
+        // "value" property
+        request.setAttribute("foo", "bar");
+        test.setValue(null);
+        assertNull(test.getValue());
+        test.setValueBinding("value", application.createValueBinding("#{foo}"));
+        assertNotNull(test.getValueBinding("value"));
+        assertEquals("bar", test.getValue());
+        test.setValue("baz");
+        assertEquals("baz", test.getValue());
+        test.setValue(null);
+        assertEquals("bar", test.getValue());
+        test.setValueBinding("value", null);
+        assertNull(test.getValueBinding("value"));
+        assertNull(test.getValue());
+    }
+
+    // --------------------------------------------------------- Support Methods
+    // Check that the properties on the specified components are equal
+    @Override
+    protected void checkProperties(UIComponent comp1, UIComponent comp2) {
+        super.checkProperties(comp1, comp2);
+        UISelectItem si1 = (UISelectItem) comp1;
+        UISelectItem si2 = (UISelectItem) comp2;
+        assertEquals(si1.getItemDescription(), si2.getItemDescription());
+        assertEquals(si1.isItemDisabled(), si2.isItemDisabled());
+        assertEquals(si1.getItemLabel(), si2.getItemLabel());
+        assertEquals(si1.getItemValue(), si2.getItemValue());
+    }
+
+    // Create a pristine component of the type to be used in state holder tests
+    @Override
+    protected UIComponent createComponent() {
+        UIComponent component = new UISelectItem();
+        component.setRendererType(null);
+        return (component);
+    }
+
+    // Populate a pristine component to be used in state holder tests
+    @Override
+    protected void populateComponent(UIComponent component) {
+        super.populateComponent(component);
+        UISelectItem si = (UISelectItem) component;
+        si.setItemDescription("item description");
+        si.setItemLabel("item label");
+        si.setItemValue("item value");
+    }
+}
diff --git a/test/unit/src/test/java/javax/faces/component/UISelectItemsTestCase.java b/test/unit/src/test/java/javax/faces/component/UISelectItemsTestCase.java
new file mode 100644
index 0000000..8c9a340
--- /dev/null
+++ b/test/unit/src/test/java/javax/faces/component/UISelectItemsTestCase.java
@@ -0,0 +1,165 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package javax.faces.component;
+
+import javax.faces.model.SelectItem;
+import static junit.framework.Assert.assertEquals;
+import static junit.framework.Assert.assertNotNull;
+import static junit.framework.Assert.assertNull;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+/**
+ * <p>
+ * Unit tests for {@link UISelectItems}.</p>
+ */
+public class UISelectItemsTestCase extends UIComponentBaseTestCase {
+
+    // ------------------------------------------------------------ Constructors
+    /**
+     * Construct a new instance of this test case.
+     *
+     * @param name Name of the test case
+     */
+    public UISelectItemsTestCase(String name) {
+        super(name);
+    }
+
+    // ---------------------------------------------------- Overall Test Methods
+    // Set up instance variables required by this test case.
+    @Override
+    public void setUp() throws Exception {
+        super.setUp();
+        component = new UISelectItems();
+        expectedFamily = UISelectItems.COMPONENT_FAMILY;
+        expectedId = null;
+        expectedRendererType = null;
+    }
+
+    // Return the tests included in this test case.
+    public static Test suite() {
+        return (new TestSuite(UISelectItemsTestCase.class));
+    }
+
+    // ------------------------------------------------- Individual Test Methods
+    // Test attribute-property transparency
+    @Override
+    public void testAttributesTransparency() {
+        super.testAttributesTransparency();
+        UISelectItems selectItems = (UISelectItems) component;
+
+        assertEquals(selectItems.getValue(),
+                component.getAttributes().get("value"));
+        SelectItem item = new SelectItem("foo");
+        selectItems.setValue(item);
+        assertEquals(item, component.getAttributes().get("value"));
+        selectItems.setValue(null);
+        assertNull(component.getAttributes().get("value"));
+        component.getAttributes().put("value", "bar");
+        assertEquals("bar", selectItems.getValue());
+        component.getAttributes().put("value", null);
+        assertNull(selectItems.getValue());
+    }
+
+    // Suppress lifecycle tests since we do not have a renderer
+    @Override
+    public void testLifecycleManagement() {
+    }
+
+    // Test a pristine UISelectItems instance
+    @Override
+    public void testPristine() {
+        super.testPristine();
+        UISelectItems selectItems = (UISelectItems) component;
+        assertNull("no value", selectItems.getValue());
+    }
+
+    // Test setting properties to invalid values
+    @Override
+    public void testPropertiesInvalid() throws Exception {
+        super.testPropertiesInvalid();
+        UISelectItems selectItems = (UISelectItems) component;
+    }
+
+    // Test setting properties to valid values
+    @Override
+    public void testPropertiesValid() throws Exception {
+        super.testPropertiesValid();
+        UISelectItems selectItems = (UISelectItems) component;
+
+        // value
+        SelectItem item = new SelectItem("foo");
+        selectItems.setValue(item);
+        assertEquals("expected value",
+                item, selectItems.getValue());
+        selectItems.setValue(null);
+        assertNull("erased value", selectItems.getValue());
+    }
+
+    @Override
+    public void testValueBindings() {
+        super.testValueBindings();
+        UISelectItems test = (UISelectItems) component;
+
+        // "value" property
+        request.setAttribute("foo", "bar");
+        test.setValue(null);
+        assertNull(test.getValue());
+        test.setValueBinding("value", application.createValueBinding("#{foo}"));
+        assertNotNull(test.getValueBinding("value"));
+        assertEquals("bar", test.getValue());
+        test.setValue("baz");
+        assertEquals("baz", test.getValue());
+        test.setValue(null);
+        assertEquals("bar", test.getValue());
+        test.setValueBinding("value", null);
+        assertNull(test.getValueBinding("value"));
+        assertNull(test.getValue());
+    }
+
+    // --------------------------------------------------------- Support Methods
+    // Create a pristine component of the type to be used in state holder tests
+    @Override
+    protected UIComponent createComponent() {
+        UIComponent component = new UISelectItems();
+        component.setRendererType(null);
+        return (component);
+    }
+}
diff --git a/test/unit/src/test/java/javax/faces/component/UISelectManyTestCase.java b/test/unit/src/test/java/javax/faces/component/UISelectManyTestCase.java
new file mode 100644
index 0000000..53eaf19
--- /dev/null
+++ b/test/unit/src/test/java/javax/faces/component/UISelectManyTestCase.java
@@ -0,0 +1,640 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package javax.faces.component;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import javax.faces.application.FacesMessage;
+import javax.faces.el.ValueBinding;
+import javax.faces.model.SelectItem;
+import javax.faces.model.SelectItemGroup;
+import javax.faces.model.ListDataModel;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.HashSet;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.NoSuchElementException;
+import static junit.framework.Assert.assertEquals;
+import static junit.framework.Assert.assertFalse;
+import static junit.framework.Assert.assertNotNull;
+import static junit.framework.Assert.assertNull;
+import static junit.framework.Assert.assertTrue;
+
+/**
+ * <p>
+ * Unit tests for {@link UISelectMany}.</p>
+ */
+public class UISelectManyTestCase extends UIInputTestCase {
+
+    // ------------------------------------------------------------ Constructors
+    /**
+     * Construct a new instance of this test case.
+     *
+     * @param name Name of the test case
+     */
+    public UISelectManyTestCase(String name) {
+        super(name);
+    }
+
+    // ---------------------------------------------------- Overall Test Methods
+    // Set up instance variables required by this test case.
+    @Override
+    public void setUp() throws Exception {
+        super.setUp();
+        component = new UISelectMany();
+        expectedFamily = UISelectMany.COMPONENT_FAMILY;
+        expectedRendererType = "javax.faces.Listbox";
+    }
+
+    // Return the tests included in this test case.
+    public static Test suite() {
+        return (new TestSuite(UISelectManyTestCase.class));
+    }
+
+    // ------------------------------------------------- Individual Test Methods
+    // Test the compareValues() method
+    @Override
+    public void testCompareValues() {
+        SelectManyTestImpl selectMany = new SelectManyTestImpl();
+        Object values1a[] = new Object[]{"foo", "bar", "baz"};
+        Object values1b[] = new Object[]{"foo", "baz", "bar"};
+        Object values1c[] = new Object[]{"baz", "foo", "bar"};
+        Object values2[] = new Object[]{"foo", "bar"};
+        Object values3[] = new Object[]{"foo", "bar", "baz", "bop"};
+        Object values4[] = null;
+
+        assertTrue(!selectMany.compareValues(values1a, values1a));
+        assertTrue(!selectMany.compareValues(values1a, values1b));
+        assertTrue(!selectMany.compareValues(values1a, values1c));
+        assertTrue(!selectMany.compareValues(values2, values2));
+        assertTrue(!selectMany.compareValues(values3, values3));
+        assertTrue(!selectMany.compareValues(values4, values4));
+
+        assertTrue(selectMany.compareValues(values1a, values2));
+        assertTrue(selectMany.compareValues(values1a, values3));
+        assertTrue(selectMany.compareValues(values1a, values4));
+        assertTrue(selectMany.compareValues(values2, values3));
+        assertTrue(selectMany.compareValues(values2, values4));
+        assertTrue(selectMany.compareValues(values4, values1a));
+        assertTrue(selectMany.compareValues(values4, values2));
+        assertTrue(selectMany.compareValues(values4, values3));
+    }
+
+    // Test a pristine UISelectMany instance
+    @Override
+    public void testPristine() {
+        super.testPristine();
+        UISelectMany selectMany = (UISelectMany) component;
+
+        assertNull("no selectedValues", selectMany.getSelectedValues());
+    }
+
+    // Test setting properties to invalid values
+    @Override
+    public void testPropertiesInvalid() throws Exception {
+        super.testPropertiesInvalid();
+    }
+
+    // Test setting properties to valid values
+    @Override
+    public void testPropertiesValid() throws Exception {
+        super.testPropertiesValid();
+        UISelectMany selectMany = (UISelectMany) component;
+
+        Object values[] = new Object[]{"foo", "bar"};
+
+        selectMany.setSelectedValues(values);
+        assertEquals(values, selectMany.getSelectedValues());
+        assertEquals(values, selectMany.getValue());
+        selectMany.setSelectedValues(null);
+        assertNull(selectMany.getSelectedValues());
+        assertNull(selectMany.getValue());
+
+        // Test transparency between "value" and "selectedValues" properties
+        selectMany.setValue(values);
+        assertEquals(values, selectMany.getSelectedValues());
+        assertEquals(values, selectMany.getValue());
+        selectMany.resetValue();
+        assertNull(selectMany.getSelectedValues());
+        assertNull(selectMany.getValue());
+
+        // Transparency applies to value bindings as well
+        assertNull(selectMany.getValueBinding("selectedValues"));
+        assertNull(selectMany.getValueBinding("value"));
+        request.setAttribute("foo", new Object[]{"bar", "baz"});
+        ValueBinding vb = application.createValueBinding("#{foo}");
+        selectMany.setValueBinding("selectedValues", vb);
+        assertTrue(vb == selectMany.getValueBinding("selectedValues"));
+        assertTrue(vb == selectMany.getValueBinding("value"));
+        selectMany.setValueBinding("selectedValues", null);
+        assertNull(selectMany.getValueBinding("selectedValues"));
+        assertNull(selectMany.getValueBinding("value"));
+        selectMany.setValueBinding("value", vb);
+        assertTrue(vb == selectMany.getValueBinding("selectedValues"));
+        assertTrue(vb == selectMany.getValueBinding("value"));
+        selectMany.setValueBinding("selectedValues", null);
+        assertNull(selectMany.getValueBinding("selectedValues"));
+        assertNull(selectMany.getValueBinding("value"));
+    }
+
+    // Test validation of value against the valid list
+    public void testValidation() throws Exception {
+        // Put our component under test in a tree under a UIViewRoot
+        UIViewRoot root = facesContext.getApplication().getViewHandler().createView(facesContext, null);
+        root.getChildren().add(component);
+
+        // Add valid options to the component under test
+        UISelectMany selectMany = (UISelectMany) component;
+        selectMany.getChildren().add(new UISelectItemSub("foo", null, null));
+        selectMany.getChildren().add(new UISelectItemSub("bar", null, null));
+        selectMany.getChildren().add(new UISelectItemSub("baz", null, null));
+
+        // Validate two values that are on the list
+        selectMany.setValid(true);
+        selectMany.setSubmittedValue(new Object[]{"foo", "baz"});
+        selectMany.validate(facesContext);
+        assertTrue(selectMany.isValid());
+
+        // Validate one value on the list and one not on the list
+        selectMany.getAttributes().put("label", "mylabel");
+        selectMany.setValid(true);
+        selectMany.setSubmittedValue(new Object[]{"bar", "bop"});
+        selectMany.setRendererType(null); // We don't have any renderers
+        selectMany.validate(facesContext);
+        assertTrue(!selectMany.isValid());
+
+        Iterator messages = facesContext.getMessages();
+        while (messages.hasNext()) {
+            FacesMessage message = (FacesMessage) messages.next();
+            assertTrue(message.getSummary().indexOf("mylabel") >= 0);
+        }
+    }
+
+    // Test validation of component with UISelectItems pointing to map
+    public void testValidation2() throws Exception {
+        // Put our component under test in a tree under a UIViewRoot
+        UIViewRoot root = facesContext.getApplication().getViewHandler().createView(facesContext, null);
+        root.getChildren().add(component);
+
+        // Add valid options to the component under test
+        Map<String, String> map = new HashMap<String, String>();
+        map.put("key_foo", "foo");
+        map.put("key_bar", "bar");
+        map.put("key_baz", "baz");
+        UISelectItems items = new UISelectItems();
+        items.setValue(map);
+        UISelectMany selectMany = (UISelectMany) component;
+        selectMany.getChildren().add(items);
+
+        // Validate two values that are on the list
+        selectMany.setValid(true);
+        selectMany.setSubmittedValue(new Object[]{"foo", "baz"});
+        selectMany.validate(facesContext);
+        assertTrue(selectMany.isValid());
+
+        // Validate one value on the list and one not on the list
+        selectMany.setValid(true);
+        selectMany.setSubmittedValue(new Object[]{"bar", "bop"});
+        selectMany.setRendererType(null); // We don't have any renderers
+        selectMany.validate(facesContext);
+        assertTrue(!selectMany.isValid());
+    }
+
+    // Test validation of component with UISelectItems pointing to Set and the
+    // value of the component is Set
+    public void testValidation3() throws Exception {
+        Set<SelectItem> items = new HashSet<SelectItem>();
+        items.add(new SelectItem("foo"));
+        items.add(new SelectItem("bar"));
+        items.add(new SelectItem("baz"));
+        Set<String> submittedValues = new HashSet<String>();
+        submittedValues.add("bar");
+        submittedValues.add("baz");
+        Set<String> invalidValues = new HashSet<String>();
+        invalidValues.add("bar");
+        invalidValues.add("car");
+        testValidateWithCollection(items,
+                submittedValues,
+                invalidValues);
+    }
+
+    // Test validation of component with UISelectItems pointing to List
+    public void testValidation4() throws Exception {
+        List<SelectItem> items = new ArrayList<SelectItem>();
+        items.add(new SelectItem("foo"));
+        items.add(new SelectItem("bar"));
+        items.add(new SelectItem("baz"));
+        List<String> submittedValues = new ArrayList<String>();
+        submittedValues.add("bar");
+        submittedValues.add("baz");
+        ArrayList<String> invalidValues = new ArrayList<String>();
+        invalidValues.add("bar");
+        invalidValues.add("car");
+        testValidateWithCollection(items,
+                submittedValues,
+                invalidValues);
+    }
+
+    // Test validation of component with UISelectItems pointing to an Array
+    public void testValidation5() throws Exception {
+        // Put our component under test in a tree under a UIViewRoot
+        UIViewRoot root = facesContext.getApplication().getViewHandler()
+                .createView(facesContext, null);
+        root.getChildren().add(component);
+
+        // Add valid options to the component under test
+        SelectItem[] itemsArray = {
+            new SelectItem("foo"),
+            new SelectItem("bar"),
+            new SelectItem("baz")
+        };
+        UISelectItems items = new UISelectItems();
+        items.setValue(itemsArray);
+        UISelectMany selectMany = (UISelectMany) component;
+        selectMany.getChildren().add(items);
+
+        selectMany.setValid(true);
+        selectMany.setSubmittedValue(new String[]{"bar", "baz"});
+        selectMany.validate(facesContext);
+        assertTrue(selectMany.isValid());
+
+        // Validate one value on the list and one not on the list
+        selectMany.setValid(true);
+        selectMany.setSubmittedValue(new String[]{"bar", "car"});
+        selectMany.setRendererType(null); // We don't have any renderers
+        selectMany.validate(facesContext);
+        assertTrue(!selectMany.isValid());
+    }
+
+    private void testValidateWithCollection(Collection<SelectItem> selectItems,
+            Object validValues,
+            Object invalidValues)
+            throws Exception {
+        UIViewRoot root = facesContext.getApplication().getViewHandler().createView(facesContext, null);
+        root.getChildren().add(component);
+
+        UISelectItems itemsComponent = new UISelectItems();
+        itemsComponent.setValue(selectItems);
+        UISelectMany selectMany = (UISelectMany) component;
+        selectMany.setRendererType(null);
+        selectMany.getChildren().add(itemsComponent);
+
+        selectMany.setValue(true);
+        selectMany.setSubmittedValue(validValues);
+        selectMany.validate(facesContext);
+        assertTrue(selectMany.isValid());
+        selectMany.updateModel(facesContext);
+
+        selectMany.setValid(true);
+        selectMany.setSubmittedValue(invalidValues);
+        selectMany.validate(facesContext);
+        assertTrue(!selectMany.isValid());
+
+    }
+
+    private String legalValues[]
+            = {"A1", "A2", "A3", "B1", "B2", "B3", "C1", "C2", "C3"};
+
+    private String illegalValues[]
+            = {"D1", "D2", "Group A", "Group B", "Group C"};
+
+    // Test validation against a nested list of available options
+    public void testValidateNested() throws Exception {
+        // Set up UISelectMany with nested UISelectItems
+        UIViewRoot root = facesContext.getApplication().getViewHandler().createView(facesContext, null);
+        root.getChildren().add(component);
+        UISelectMany selectMany = (UISelectMany) component;
+        UISelectItems selectItems = new UISelectItems();
+        selectItems.setValue(setupOptions());
+        selectMany.getChildren().add(selectItems);
+        selectMany.setRequired(true);
+        checkMessages(0);
+
+        // Verify that all legal values will validate
+        for (int i = 0; i < legalValues.length; i++) {
+            selectMany.setValid(true);
+            selectMany.setSubmittedValue(new Object[]{legalValues[0], legalValues[i]});
+            selectMany.validate(facesContext);
+            assertTrue("Value '" + legalValues[i] + "' found",
+                    selectMany.isValid());
+            checkMessages(0);
+        }
+
+        // Verify that illegal values will not validate
+        for (int i = 0; i < illegalValues.length; i++) {
+            selectMany.setValid(true);
+            selectMany.setSubmittedValue(new Object[]{legalValues[0], illegalValues[i]});
+            selectMany.validate(facesContext);
+            assertTrue("Value '" + illegalValues[i] + "' not found",
+                    !selectMany.isValid());
+            checkMessages(i + 1);
+        }
+    }
+
+    // Test validation against a nested Set of available options
+    public void testValidateNestedSet() throws Exception {
+        // Set up UISelectMany with nested UISelectItems
+        UIViewRoot root = facesContext.getApplication().getViewHandler().createView(facesContext, null);
+        root.getChildren().add(component);
+        UISelectMany selectMany = (UISelectMany) component;
+        UISelectItems selectItems = new UISelectItems();
+        selectItems.setValue(setupOptionsSet());
+        selectMany.getChildren().add(selectItems);
+        selectMany.setRequired(true);
+        checkMessages(0);
+
+        // Verify that all legal values will validate
+        for (int i = 0; i < legalValues.length; i++) {
+            selectMany.setValid(true);
+            selectMany.setSubmittedValue(new Object[]{legalValues[0], legalValues[i]});
+            selectMany.validate(facesContext);
+            assertTrue("Value '" + legalValues[i] + "' found",
+                    selectMany.isValid());
+            checkMessages(0);
+        }
+
+        // Verify that illegal values will not validate
+        for (int i = 0; i < illegalValues.length; i++) {
+            selectMany.setValid(true);
+            selectMany.setSubmittedValue(new Object[]{legalValues[0], illegalValues[i]});
+            selectMany.validate(facesContext);
+            assertTrue("Value '" + illegalValues[i] + "' not found",
+                    !selectMany.isValid());
+            checkMessages(i + 1);
+        }
+    }
+
+    // Test validation of a required field
+    @Override
+    public void testValidateRequired() throws Exception {
+        UIViewRoot root = facesContext.getApplication().getViewHandler().createView(facesContext, null);
+        root.getChildren().add(component);
+        UISelectMany selectMany = (UISelectMany) component;
+        selectMany.getChildren().add(new UISelectItemSub("foo", null, null));
+        selectMany.getChildren().add(new UISelectItemSub("bar", null, null));
+        selectMany.getChildren().add(new UISelectItemSub("baz", null, null));
+        selectMany.setRequired(true);
+        checkMessages(0);
+
+        selectMany.setValid(true);
+        selectMany.setSubmittedValue(new Object[]{"foo"});
+        selectMany.validate(facesContext);
+        checkMessages(0);
+        assertTrue(selectMany.isValid());
+
+        selectMany.setValid(true);
+        selectMany.setSubmittedValue(new Object[]{""});
+        selectMany.validate(facesContext);
+        checkMessages(1);
+        assertTrue(!selectMany.isValid());
+
+        selectMany.setValid(true);
+        selectMany.setSubmittedValue(null);
+        // this execution of validate shouldn't add any messages to the
+        // queue, since a value of null means "don't validate".  This is
+        // different behavior than in previous versions of this
+        // testcase, which expected the UISelectMany.validate() to
+        // operate on the previously validated value, which is not
+        // correct.
+        selectMany.validate(facesContext);
+        checkMessages(1);
+        // since we're setting the submitted value to null, we don't
+        // want validation to occurr, therefore, the valid state of the
+        // componet should be as we left it.
+        assertTrue(selectMany.isValid());
+    }
+
+    // Test that appropriate properties are value binding enabled
+    @Override
+    public void testValueBindings() {
+        super.testValueBindings();
+        UISelectMany test = (UISelectMany) component;
+
+        // "value" property
+        request.setAttribute("foo", "bar");
+        test.resetValue();
+        assertNull(test.getValue());
+        test.setValueBinding("value", application.createValueBinding("#{foo}"));
+        assertNotNull(test.getValueBinding("value"));
+        assertEquals("bar", test.getValue());
+        test.setValue("baz");
+        assertEquals("baz", test.getValue());
+        test.resetValue();
+        assertEquals("bar", test.getValue());
+        test.setValueBinding("value", null);
+        assertNull(test.getValueBinding("value"));
+        assertNull(test.getValue());
+    }
+
+    public void testSelectItemsIterator() {
+        // sub test 1: non-selectitem at end 
+        UISelectMany selectMany = (UISelectMany) component;
+        selectMany.getChildren().add(new UISelectItemSub("orr", null, null));
+        UIParameter param = new UIParameter();
+        param.setName("param");
+        param.setValue("paramValue");
+        selectMany.getChildren().add(param);
+        selectMany.getChildren().add(new UISelectItemSub("esposito", null, null));
+        Iterator<SelectItem> iter = new SelectItemsIterator(facesContext, selectMany);
+        while (iter.hasNext()) {
+            Object object = iter.next();
+            assertTrue(object instanceof javax.faces.model.SelectItem);
+            assertTrue((((SelectItem) object).getValue().equals("orr"))
+                    || (((SelectItem) object).getValue().equals("esposito")));
+        }
+
+        // sub test 2: non-selectitem in middle
+        selectMany = new UISelectMany();
+        selectMany.getChildren().add(new UISelectItemSub("gretsky", null, null));
+        selectMany.getChildren().add(param);
+        selectMany.getChildren().add(new UISelectItemSub("howe", null, null));
+        iter = new SelectItemsIterator(facesContext, selectMany);
+        while (iter.hasNext()) {
+            Object object = iter.next();
+            assertTrue(object instanceof javax.faces.model.SelectItem);
+            assertTrue((((SelectItem) object).getValue().equals("gretsky"))
+                    || (((SelectItem) object).getValue().equals("howe")));
+        }
+
+        // sub test 3: Empty collection
+        selectMany = new UISelectMany();
+        UISelectItems items = new UISelectItems();
+        items.setValue(Collections.emptyList());
+        selectMany.getChildren().add(items);
+        iter = new SelectItemsIterator(facesContext, selectMany);
+        assertTrue(!iter.hasNext());
+        try {
+            iter.next();
+            assertTrue(false);
+        } catch (NoSuchElementException nsee) {
+            // expected
+        }
+
+        // sub test 4: items exposed as generic collection of non-SelectItem
+        //             instances
+        Collection<Integer> cItems = new ArrayList<Integer>(5);
+        Collections.addAll(cItems, 0, 1, 2, 3, 4);
+        selectMany = new UISelectMany();
+        items = new UISelectItems();
+        items.setValue(cItems);
+        selectMany.getChildren().add(items);
+        iter = new SelectItemsIterator(facesContext, selectMany);
+        SelectItem previous = null;
+        for (int i = 0, len = cItems.size(); i < len; i++) {
+            assertTrue(iter.hasNext());
+            SelectItem item = iter.next();
+            assertNotNull(item);
+            assertEquals(i, item.getValue());
+            assertEquals(Integer.toString(i), item.getLabel());
+            assertNull(item.getDescription());
+            assertFalse(item.isDisabled());
+            assertTrue(item.isEscape());
+            if (previous != null) {
+                // using fly-weight pattern make sure we use the same
+                // instance through out the iteration
+                assertTrue(item == previous);
+            }
+            previous = item;
+        }
+        assertFalse(iter.hasNext());
+        try {
+            iter.next();
+            assertTrue(false);
+        } catch (NoSuchElementException nsee) {
+            // expected
+        }
+
+        // sub-test 5: DataModel providing the instances to produce
+        //             SelectItems from
+        selectMany = new UISelectMany();
+        items = new UISelectItems();
+        items.setValue(new ListDataModel<Integer>((List<Integer>) cItems));
+        selectMany.getChildren().add(items);
+        iter = new SelectItemsIterator(facesContext, selectMany);
+        previous = null;
+        for (int i = 0, len = cItems.size(); i < len; i++) {
+            assertTrue(iter.hasNext());
+            SelectItem item = iter.next();
+            assertNotNull(item);
+            assertEquals(i, item.getValue());
+            assertEquals(Integer.toString(i), item.getLabel());
+            assertNull(item.getDescription());
+            assertFalse(item.isDisabled());
+            assertTrue(item.isEscape());
+            if (previous != null) {
+                // using fly-weight pattern make sure we use the same
+                // instance through out the iteration
+                assertTrue(item == previous);
+            }
+            previous = item;
+        }
+        assertFalse(iter.hasNext());
+        try {
+            iter.next();
+            assertTrue(false);
+        } catch (NoSuchElementException nsee) {
+            // expected
+        }
+    }
+
+    // --------------------------------------------------------- Support Methods
+    // Create a pristine component of the type to be used in state holder tests
+    @Override
+    protected UIComponent createComponent() {
+        UIComponent component = new UISelectMany();
+        component.setRendererType(null);
+        return (component);
+    }
+
+    @Override
+    protected void setupNewValue(UIInput input) {
+        input.setSubmittedValue(new Object[]{"foo"});
+        UISelectItem si = new UISelectItem();
+        si.setItemValue("foo");
+        si.setItemLabel("foo label");
+        input.getChildren().add(si);
+    }
+
+    // Create an options list with nested groups
+    protected List setupOptions() {
+        SelectItemGroup group, subgroup;
+        subgroup = new SelectItemGroup("Group C");
+        subgroup.setSelectItems(new SelectItem[]{new SelectItem("C1"),
+            new SelectItem("C2"),
+            new SelectItem("C3")});
+        List options = new ArrayList();
+        options.add(new SelectItem("A1"));
+        group = new SelectItemGroup("Group B");
+        group.setSelectItems(new SelectItem[]{new SelectItem("B1"),
+            subgroup,
+            new SelectItem("B2"),
+            new SelectItem("B3")});
+
+        options.add(group);
+        options.add(new SelectItem("A2"));
+        options.add(new SelectItem("A3"));
+        return (options);
+    }
+
+    // Create an options list with nested groups
+    protected Set setupOptionsSet() {
+        SelectItemGroup group, subgroup;
+        subgroup = new SelectItemGroup("Group C");
+        subgroup.setSelectItems(new SelectItem[]{new SelectItem("C1"),
+            new SelectItem("C2"),
+            new SelectItem("C3")});
+        Set<SelectItem> options = new HashSet<SelectItem>();
+        options.add(new SelectItem("A1"));
+        group = new SelectItemGroup("Group B");
+        group.setSelectItems(new SelectItem[]{new SelectItem("B1"),
+            subgroup,
+            new SelectItem("B2"),
+            new SelectItem("B3")});
+        options.add(group);
+        options.add(new SelectItem("A2"));
+        options.add(new SelectItem("A3"));
+        return (options);
+    }
+}
diff --git a/test/unit/src/test/java/javax/faces/component/UISelectOneTestCase.java b/test/unit/src/test/java/javax/faces/component/UISelectOneTestCase.java
new file mode 100644
index 0000000..00f52fd
--- /dev/null
+++ b/test/unit/src/test/java/javax/faces/component/UISelectOneTestCase.java
@@ -0,0 +1,409 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package javax.faces.component;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import javax.faces.application.FacesMessage;
+import javax.faces.model.SelectItem;
+import javax.faces.model.SelectItemGroup;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.HashSet;
+import java.util.Collection;
+import static junit.framework.Assert.assertEquals;
+import static junit.framework.Assert.assertNotNull;
+import static junit.framework.Assert.assertNull;
+import static junit.framework.Assert.assertTrue;
+
+/**
+ * <p>
+ * Unit tests for {@link UISelectOne}.</p>
+ */
+public class UISelectOneTestCase extends UIInputTestCase {
+
+    // ------------------------------------------------------------ Constructors
+    /**
+     * Construct a new instance of this test case.
+     *
+     * @param name Name of the test case
+     */
+    public UISelectOneTestCase(String name) {
+        super(name);
+    }
+
+    // ---------------------------------------------------- Overall Test Methods
+    // Set up instance variables required by this test case.
+    @Override
+    public void setUp() throws Exception {
+        super.setUp();
+        component = new UISelectOne();
+        expectedFamily = UISelectOne.COMPONENT_FAMILY;
+        expectedRendererType = "javax.faces.Menu";
+    }
+
+    // Return the tests included in this test case.
+    public static Test suite() {
+        return (new TestSuite(UISelectOneTestCase.class));
+    }
+
+    // ------------------------------------------------- Individual Test Methods
+    // Test a pristine UISelectOne instance
+    @Override
+    public void testPristine() {
+        super.testPristine();
+        UISelectOne selectOne = (UISelectOne) component;
+    }
+
+    // Test setting properties to invalid values
+    @Override
+    public void testPropertiesInvalid() throws Exception {
+        super.testPropertiesInvalid();
+        UISelectOne selectOne = (UISelectOne) component;
+    }
+
+    // Test setting properties to valid values
+    @Override
+    public void testPropertiesValid() throws Exception {
+        super.testPropertiesValid();
+        UISelectOne selectOne = (UISelectOne) component;
+    }
+
+    // Test validation of value against the valid list
+    public void testValidation() throws Exception {
+        // Put our component under test in a tree under a UIViewRoot
+        UIViewRoot root = facesContext.getApplication().getViewHandler().createView(facesContext, null);
+        root.getChildren().add(component);
+
+        // Add valid options to the component under test
+        UISelectOne selectOne = (UISelectOne) component;
+        selectOne.getChildren().add(new UISelectItemSub("foo", null, null));
+        selectOne.getChildren().add(new UISelectItemSub("bar", null, null));
+        selectOne.getChildren().add(new UISelectItemSub("baz", null, null));
+
+        // Validate a value that is on the list
+        selectOne.setValid(true);
+        selectOne.setSubmittedValue("bar");
+        selectOne.setRendererType(null); // We don't have any renderers
+        selectOne.validate(facesContext);
+        assertTrue(selectOne.isValid());
+
+        // Validate a value that is not on the list
+        selectOne.getAttributes().put("label", "mylabel");
+        selectOne.setValid(true);
+        selectOne.setSubmittedValue("bop");
+        selectOne.validate(facesContext);
+        assertTrue(!selectOne.isValid());
+        Iterator messages = facesContext.getMessages();
+        while (messages.hasNext()) {
+            FacesMessage message = (FacesMessage) messages.next();
+            assertTrue(message.getSummary().indexOf("mylabel") >= 0);
+        }
+    }
+
+    // Test validation of component with UISelectItems pointing to map
+    public void testValidation2() throws Exception {
+        // Put our component under test in a tree under a UIViewRoot
+        UIViewRoot root = facesContext.getApplication().getViewHandler().createView(facesContext, null);
+        root.getChildren().add(component);
+
+        // Add valid options to the component under test
+        Map map = new HashMap();
+        map.put("key_foo", "foo");
+        map.put("key_bar", "bar");
+        map.put("key_baz", "baz");
+        UISelectItems items = new UISelectItems();
+        items.setValue(map);
+        UISelectOne selectOne = (UISelectOne) component;
+        selectOne.getChildren().add(items);
+
+        selectOne.setValid(true);
+        selectOne.setSubmittedValue("foo");
+        selectOne.validate(facesContext);
+        assertTrue(selectOne.isValid());
+
+        // Validate one value on the list and one not on the list
+        selectOne.setValid(true);
+        selectOne.setSubmittedValue("car");
+        selectOne.setRendererType(null); // We don't have any renderers
+        selectOne.validate(facesContext);
+        assertTrue(!selectOne.isValid());
+    }
+
+    // Test validation of component with UISelectItems pointing to Set
+    public void testValidation3() throws Exception {
+        Set<SelectItem> items = new HashSet<SelectItem>();
+        items.add(new SelectItem("foo"));
+        items.add(new SelectItem("bar"));
+        items.add(new SelectItem("baz"));
+
+        testValidateWithCollection(items, "bar", "car");
+    }
+
+    // Test validation of component with UISelectItems pointing to List
+    public void testValidation4() throws Exception {
+        List<SelectItem> items = new ArrayList<SelectItem>();
+        items.add(new SelectItem("foo"));
+        items.add(new SelectItem("bar"));
+        items.add(new SelectItem("baz"));
+
+        testValidateWithCollection(items, "bar", "car");
+    }
+
+    // Test validation of component with UISelectItems pointing to an Array
+    public void testValidation5() throws Exception {
+        // Put our component under test in a tree under a UIViewRoot
+        UIViewRoot root = facesContext.getApplication().getViewHandler().createView(facesContext, null);
+        root.getChildren().add(component);
+
+        // Add valid options to the component under test
+        SelectItem[] itemsArray = {
+            new SelectItem("foo"),
+            new SelectItem("bar"),
+            new SelectItem("baz")
+        };
+        UISelectItems items = new UISelectItems();
+        items.setValue(itemsArray);
+        UISelectOne selectOne = (UISelectOne) component;
+        selectOne.getChildren().add(items);
+
+        selectOne.setValid(true);
+        selectOne.setSubmittedValue("foo");
+        selectOne.validate(facesContext);
+        assertTrue(selectOne.isValid());
+
+        // Validate one value on the list and one not on the list
+        selectOne.setValid(true);
+        selectOne.setSubmittedValue("car");
+        selectOne.setRendererType(null); // We don't have any renderers
+        selectOne.validate(facesContext);
+        assertTrue(!selectOne.isValid());
+    }
+
+    private void testValidateWithCollection(Collection<SelectItem> selectItems,
+            String validValue,
+            String invalidValue)
+            throws Exception {
+        UIViewRoot root = facesContext.getApplication().getViewHandler().createView(facesContext, null);
+        root.getChildren().add(component);
+
+        UISelectItems itemsComponent = new UISelectItems();
+        itemsComponent.setValue(selectItems);
+        UISelectOne selectOne = (UISelectOne) component;
+        selectOne.setRendererType(null);
+        selectOne.getChildren().add(itemsComponent);
+
+        selectOne.setValue(true);
+        selectOne.setSubmittedValue(validValue);
+        selectOne.validate(facesContext);
+        assertTrue(selectOne.isValid());
+        selectOne.updateModel(facesContext);
+
+        selectOne.setValid(true);
+        selectOne.setSubmittedValue(invalidValue);
+        selectOne.validate(facesContext);
+        assertTrue(!selectOne.isValid());
+    }
+
+    private String legalValues[]
+            = {"A1", "A2", "A3", "B1", "B2", "B3", "C1", "C2", "C3"};
+
+    private String illegalValues[]
+            = {"D1", "D2", "Group A", "Group B", "Group C"};
+
+    // Test validation against a nested list of available options
+    public void testValidateNested() throws Exception {
+        // Set up UISelectOne with nested UISelectItems
+        UIViewRoot root = facesContext.getApplication().getViewHandler().createView(facesContext, null);
+        root.getChildren().add(component);
+        UISelectOne selectOne = (UISelectOne) component;
+        UISelectItems selectItems = new UISelectItems();
+        selectItems.setValue(setupOptions());
+        selectOne.getChildren().add(selectItems);
+        selectOne.setRequired(true);
+        checkMessages(0);
+
+        // Verify that all legal values will validate
+        for (int i = 0; i < legalValues.length; i++) {
+            selectOne.setValid(true);
+            selectOne.setSubmittedValue(legalValues[i]);
+            selectOne.validate(facesContext);
+            assertTrue("Value '" + legalValues[i] + "' found",
+                    selectOne.isValid());
+            checkMessages(0);
+        }
+
+        // Verify that illegal values will not validate
+        for (int i = 0; i < illegalValues.length; i++) {
+            selectOne.setValid(true);
+            selectOne.setSubmittedValue(illegalValues[i]);
+            selectOne.validate(facesContext);
+            assertTrue("Value '" + illegalValues[i] + "' not found",
+                    !selectOne.isValid());
+            checkMessages(i + 1);
+        }
+    }
+
+    // Test validation of a required field
+    @Override
+    public void testValidateRequired() throws Exception {
+        UIViewRoot root = facesContext.getApplication().getViewHandler().createView(facesContext, null);
+        root.getChildren().add(component);
+        UISelectOne selectOne = (UISelectOne) component;
+        selectOne.getChildren().add(new UISelectItemSub("foo", null, null));
+        selectOne.getChildren().add(new UISelectItemSub("bar", null, null));
+        selectOne.getChildren().add(new UISelectItemSub("baz", null, null));
+        selectOne.setRequired(true);
+        checkMessages(0);
+
+        selectOne.setValid(true);
+        selectOne.setSubmittedValue("foo");
+        selectOne.validate(facesContext);
+        checkMessages(0);
+        assertTrue(selectOne.isValid());
+
+        selectOne.setValid(true);
+        selectOne.setSubmittedValue("");
+        selectOne.validate(facesContext);
+        checkMessages(1);
+        assertTrue(!selectOne.isValid());
+
+        selectOne.setValid(true);
+        selectOne.setSubmittedValue(null);
+        // awiner: see UIInputTestCase
+        selectOne.validate(facesContext);
+        checkMessages(1);
+        assertTrue(selectOne.isValid());
+    }
+
+    // Test that appropriate properties are value binding enabled
+    public void PENDING_FIXME_testValueBindings() {
+        super.testValueBindings();
+        UISelectOne test = (UISelectOne) component;
+
+        // "value" property
+        request.setAttribute("foo", "bar");
+        test.setValue(null);
+        assertNull(test.getValue());
+        test.setValueBinding("value", application.createValueBinding("#{foo}"));
+        assertNotNull(test.getValueBinding("value"));
+        assertEquals("bar", test.getValue());
+        test.setValue("baz");
+        assertEquals("baz", test.getValue());
+        test.setValue(null);
+        assertEquals("bar", test.getValue());
+        test.setValueBinding("value", null);
+        assertNull(test.getValueBinding("value"));
+        assertNull(test.getValue());
+    }
+
+    public void testSelectItemsIterator() {
+        // sub test 1 : non-selectItem at end
+        UISelectOne selectOne = (UISelectOne) component;
+        selectOne.getChildren().add(new UISelectItemSub("orr", null, null));
+        selectOne.getChildren().add(new UISelectItemSub("esposito", null, null));
+        UIParameter param = new UIParameter();
+        param.setName("param");
+        param.setValue("paramValue");
+        selectOne.getChildren().add(param);
+        Iterator iter = new SelectItemsIterator(facesContext, selectOne);
+        while (iter.hasNext()) {
+            Object object = iter.next();
+            assertTrue(object instanceof javax.faces.model.SelectItem);
+            assertTrue((((SelectItem) object).getValue().equals("orr"))
+                    || (((SelectItem) object).getValue().equals("esposito")));
+        }
+
+        // sub test 2: non-selectitem in middle
+        selectOne = new UISelectOne();
+        selectOne.getChildren().add(new UISelectItemSub("gretsky", null, null));
+        selectOne.getChildren().add(param);
+        selectOne.getChildren().add(new UISelectItemSub("howe", null, null));
+        iter = new SelectItemsIterator(facesContext, selectOne);
+        while (iter.hasNext()) {
+            Object object = iter.next();
+            assertTrue(object instanceof javax.faces.model.SelectItem);
+            assertTrue((((SelectItem) object).getValue().equals("gretsky"))
+                    || (((SelectItem) object).getValue().equals("howe")));
+        }
+    }
+
+    // --------------------------------------------------------- Support Methods
+    // Create a pristine component of the type to be used in state holder tests
+    @Override
+    protected UIComponent createComponent() {
+        UIComponent component = new UISelectOne();
+        component.setRendererType(null);
+        return (component);
+    }
+
+    @Override
+    protected void setupNewValue(UIInput input) {
+        input.setSubmittedValue("foo");
+        UISelectItem si = new UISelectItem();
+        si.setItemValue("foo");
+        si.setItemLabel("foo label");
+        input.getChildren().add(si);
+    }
+
+    // Create an options list with nested groups
+    protected List setupOptions() {
+        SelectItemGroup group, subgroup;
+        subgroup = new SelectItemGroup("Group C");
+        subgroup.setSelectItems(new SelectItem[]{new SelectItem("C1"),
+            new SelectItem("C2"),
+            new SelectItem("C3")});
+        List options = new ArrayList();
+        options.add(new SelectItem("A1"));
+        group = new SelectItemGroup("Group B");
+        group.setSelectItems(new SelectItem[]{new SelectItem("B1"),
+            subgroup,
+            new SelectItem("B2"),
+            new SelectItem("B3")});
+        options.add(group);
+        options.add(new SelectItem("A2"));
+        options.add(new SelectItem("A3"));
+        return (options);
+    }
+}
diff --git a/test/unit/src/test/java/javax/faces/component/UIViewRootTest.java b/test/unit/src/test/java/javax/faces/component/UIViewRootTest.java
new file mode 100644
index 0000000..de1d950
--- /dev/null
+++ b/test/unit/src/test/java/javax/faces/component/UIViewRootTest.java
@@ -0,0 +1,182 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package javax.faces.component;
+
+import java.lang.reflect.Method;
+import java.util.HashMap;
+import java.util.Map;
+import javax.faces.application.Application;
+import javax.faces.application.ProjectStage;
+import javax.faces.context.ExternalContext;
+import javax.faces.context.FacesContext;
+import javax.faces.event.PostConstructViewMapEvent;
+import javax.faces.event.PreDestroyViewMapEvent;
+import javax.servlet.http.HttpSession;
+import org.easymock.EasyMock;
+import org.junit.Test;
+import static org.easymock.EasyMock.*;
+import static org.junit.Assert.*;
+
+public class UIViewRootTest {
+
+    @Test
+    public void testViewMapPostConstructViewMapEvent() {
+        FacesContext facesContext = EasyMock.createMock(FacesContext.class);
+        Application application = EasyMock.createMock(Application.class);
+        ExternalContext externalContext = EasyMock.createMock(ExternalContext.class);
+        HttpSession httpSession = EasyMock.createMock(HttpSession.class);
+        
+        setFacesContext(facesContext);
+
+        expect(facesContext.getExternalContext()).andReturn(externalContext).anyTimes();
+        expect(externalContext.getApplicationMap()).andReturn(null).anyTimes();
+        replay(facesContext, externalContext);
+        UIViewRoot viewRoot = new UIViewRoot();
+        verify(facesContext, externalContext);
+        
+        reset(facesContext, externalContext);
+        expect(facesContext.getApplication()).andReturn(application).anyTimes();
+        expect(application.getProjectStage()).andReturn(ProjectStage.UnitTest);
+        application.publishEvent(facesContext, PostConstructViewMapEvent.class, viewRoot);
+        replay(facesContext, application, externalContext, httpSession);
+        Map<String, Object> viewMap = viewRoot.getViewMap();
+        assertNotNull(viewMap);
+        verify(facesContext, application, externalContext, httpSession);
+
+        setFacesContext(null);
+    }
+
+    @Test
+    public void testViewMapPreDestroyViewMapEvent() {
+        FacesContext facesContext = EasyMock.createMock(FacesContext.class);
+        Application application = EasyMock.createMock(Application.class);
+        ExternalContext externalContext = EasyMock.createMock(ExternalContext.class);
+        HttpSession httpSession = EasyMock.createMock(HttpSession.class);
+        
+        setFacesContext(facesContext);
+        
+        expect(facesContext.getExternalContext()).andReturn(externalContext).anyTimes();
+        expect(externalContext.getApplicationMap()).andReturn(null).anyTimes();
+        replay(facesContext, externalContext);
+        UIViewRoot viewRoot = new UIViewRoot();
+        verify(facesContext, externalContext);
+        
+        reset(facesContext, externalContext);
+        expect(facesContext.getApplication()).andReturn(application).anyTimes();
+        expect(application.getProjectStage()).andReturn(ProjectStage.UnitTest);
+        application.publishEvent(facesContext, PostConstructViewMapEvent.class, viewRoot);
+        expect(facesContext.getViewRoot()).andReturn(viewRoot);
+        application.publishEvent(facesContext, PreDestroyViewMapEvent.class, viewRoot);
+        expect(facesContext.getViewRoot()).andReturn(viewRoot);
+        application.publishEvent(facesContext, PreDestroyViewMapEvent.class, viewRoot);
+
+        replay(facesContext, application, externalContext, httpSession);
+        
+        Map<String, Object> viewMap = viewRoot.getViewMap();
+        assertNotNull(viewMap);
+        viewRoot.getViewMap().clear();
+        viewRoot.getViewMap().clear();
+        
+        verify(facesContext, application, externalContext, httpSession);
+        
+        setFacesContext(null);
+    }
+    
+    @Test
+    public void testViewMapSaveAndRestoreState() {
+        FacesContext facesContext = EasyMock.createMock(FacesContext.class);
+        Application application = EasyMock.createMock(Application.class);
+        ExternalContext externalContext = EasyMock.createMock(ExternalContext.class);
+        HttpSession httpSession = EasyMock.createMock(HttpSession.class);
+        HashMap<Object, Object> attributes = new HashMap<Object, Object>();
+        HashMap<String, Object> sessionMap = new HashMap<String, Object>();
+
+        setFacesContext(facesContext);
+                
+        expect(facesContext.getExternalContext()).andReturn(externalContext).anyTimes();
+        expect(externalContext.getApplicationMap()).andReturn(null).anyTimes();
+        replay(facesContext, externalContext);
+        UIViewRoot viewRoot1 = new UIViewRoot();
+        verify(facesContext, externalContext);        
+        reset(facesContext, externalContext);
+        
+        expect(facesContext.getExternalContext()).andReturn(externalContext).anyTimes();
+        expect(externalContext.getApplicationMap()).andReturn(null).anyTimes();
+        replay(facesContext, externalContext);
+        UIViewRoot viewRoot2 = new UIViewRoot();
+        verify(facesContext, externalContext);        
+        reset(facesContext, externalContext);
+                
+        expect(facesContext.getAttributes()).andReturn(attributes).anyTimes();
+        expect(facesContext.getApplication()).andReturn(application).anyTimes();
+        expect(application.getProjectStage()).andReturn(ProjectStage.UnitTest).anyTimes();
+        expect(facesContext.getExternalContext()).andReturn(externalContext).anyTimes();
+        expect(externalContext.getSessionMap()).andReturn(sessionMap).anyTimes();
+        application.publishEvent(facesContext, PostConstructViewMapEvent.class, viewRoot1);
+        replay(facesContext, application, externalContext, httpSession);
+        Map<String, Object> viewMap = viewRoot1.getViewMap();
+        viewMap.put("one", "one");
+        Object saved = viewRoot1.saveState(facesContext);
+        
+        /*
+         * Simulate our ViewMapListener.
+         */
+        Map<String, Object> viewMaps = new HashMap<String, Object>();
+        viewMaps.put((String) viewRoot1.getTransientStateHelper().getTransient("com.sun.faces.application.view.viewMapId"), viewMap);
+        sessionMap.put("com.sun.faces.application.view.activeViewMaps", viewMaps);
+        
+        viewRoot2.restoreState(facesContext, saved);
+        viewMap = viewRoot2.getViewMap();
+        assertEquals("one", viewMap.get("one"));
+        verify(facesContext, application, externalContext, httpSession);
+        
+        setFacesContext(null);
+    }
+    
+    private void setFacesContext(FacesContext facesContext) {
+        try {
+            Method method = FacesContext.class.getDeclaredMethod("setCurrentInstance", FacesContext.class);
+            method.setAccessible(true);
+            method.invoke(null, facesContext);
+        } catch (Exception exception) {
+            exception.printStackTrace(System.err);
+        }
+    }
+}
diff --git a/test/unit/src/test/java/javax/faces/component/UIViewRootTestCase.java b/test/unit/src/test/java/javax/faces/component/UIViewRootTestCase.java
new file mode 100644
index 0000000..43c4ae7
--- /dev/null
+++ b/test/unit/src/test/java/javax/faces/component/UIViewRootTestCase.java
@@ -0,0 +1,922 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package javax.faces.component;
+
+import com.sun.faces.mock.MockRenderKit;
+import java.lang.reflect.Field;
+import java.util.List;
+import java.util.Locale;
+import java.io.IOException;
+import javax.faces.FactoryFinder;
+import javax.faces.event.PhaseEvent;
+import javax.faces.event.PhaseListener;
+import javax.faces.context.FacesContext;
+import javax.faces.event.PhaseId;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import javax.el.ValueExpression;
+import javax.el.MethodExpression;
+import javax.faces.render.RenderKit;
+import javax.faces.render.RenderKitFactory;
+import static junit.framework.Assert.assertEquals;
+import static junit.framework.Assert.assertNotNull;
+import static junit.framework.Assert.assertNull;
+import static junit.framework.Assert.assertTrue;
+
+/**
+ * <p>
+ * Test case for the <strong>javax.faces.UIViewRoot</strong>
+ * concrete class.</p>
+ */
+public class UIViewRootTestCase extends UIComponentBaseTestCase {
+
+    // ------------------------------------------------------------ Constructors
+    /**
+     * Construct a new instance of this test case.
+     *
+     * @param name Name of the test case
+     */
+    public UIViewRootTestCase(String name) {
+        super(name);
+    }
+
+    // ---------------------------------------------------- Overall Test Methods
+    /**
+     * Return the tests included in this test suite.
+     *
+     * @return
+     */
+    public static Test suite() {
+        return (new TestSuite(UIViewRootTestCase.class));
+    }
+
+    public static String FACTORIES[][] = {
+        {FactoryFinder.APPLICATION_FACTORY,
+            "com.sun.faces.mock.MockApplicationFactory"
+        },
+        {FactoryFinder.FACES_CONTEXT_FACTORY,
+            "com.sun.faces.mock.MockFacesContextFactory"
+        },
+        {FactoryFinder.LIFECYCLE_FACTORY,
+            "com.sun.faces.mock.MockLifecycleFactory"
+        },
+        {FactoryFinder.RENDER_KIT_FACTORY,
+            "com.sun.faces.mock.MockRenderKitFactory"
+        }
+    };
+
+    @Override
+    public void setUp() throws Exception {
+        FactoryFinder.releaseFactories();
+        super.setUp();
+        for (int i = 0, len = FACTORIES.length; i < len; i++) {
+            System.getProperties().remove(FACTORIES[i][0]);
+        }
+
+        FactoryFinder.releaseFactories();
+        int len, i = 0;
+
+        // simulate the "faces implementation specific" part
+        for (i = 0, len = FACTORIES.length; i < len; i++) {
+            FactoryFinder.setFactory(FACTORIES[i][0],
+                    FACTORIES[i][1]);
+        }
+
+        UIViewRoot root = facesContext.getApplication().getViewHandler().createView(facesContext, null);
+        root.setViewId("/viewId");
+        facesContext.setViewRoot(root);
+        RenderKitFactory renderKitFactory = (RenderKitFactory) FactoryFinder.getFactory(FactoryFinder.RENDER_KIT_FACTORY);
+        RenderKit renderKit = new MockRenderKit();
+        try {
+            renderKitFactory.addRenderKit(RenderKitFactory.HTML_BASIC_RENDER_KIT,
+                    renderKit);
+        } catch (IllegalArgumentException e) {
+        }
+    }
+
+    /**
+     * Tear down instance variables required by this test case.
+     *
+     * @throws java.lang.Exception
+     */
+    @Override
+    public void tearDown() throws Exception {
+        component = null;
+        super.tearDown();
+    }
+
+    // ------------------------------------------------- Individual Test Methods
+    public void testAddGetComponentResources() {
+        application.addComponent("javax.faces.ComponentResourceContainer", Container.class.getName());
+        UIViewRoot root = new UIViewRoot();
+        UIOutput resource = new UIOutput();
+
+        // no target argument should result in target being head
+        root.addComponentResource(facesContext, resource);
+        List<UIComponent> components = root.getComponentResources(facesContext, "head");
+        assertNotNull(components);
+        assertTrue(components.size() == 1);
+        assertTrue(components.get(0) == resource);
+        UIOutput resource2 = new UIOutput();
+        root.addComponentResource(facesContext, resource2);
+        assertTrue(components.size() == 2);
+        assertTrue(components.get(1) == resource2);
+        root.addComponentResource(facesContext, resource2, "form");
+        components = root.getComponentResources(facesContext, "form");
+        assertTrue(components.size() == 1);
+        root.addComponentResource(facesContext, resource2, "body");
+        components = root.getComponentResources(facesContext, "body");
+        assertTrue(components.size() == 1);
+
+        // the default implementation masks the facet name values
+        // of head and form to ensure there are no collisions with valid
+        // facets by the name.  Calling UIViewRoot.getFacet("head") or
+        // get("form") will return null.
+        assertNull(root.getFacet("head"));
+        assertNull(root.getFacet("form"));
+        assertNull(root.getFacet("body"));
+        assertNotNull(root.getFacet("javax_faces_location_HEAD"));
+        assertNotNull(root.getFacet("javax_faces_location_FORM"));
+        assertNotNull(root.getFacet("javax_faces_location_BODY"));
+
+        // custom locations will also be masked
+        root.addComponentResource(facesContext, resource2, "gt");
+        assertNotNull(root.getFacet("javax_faces_location_gt"));
+        components = root.getComponentResources(facesContext, "gt");
+        assertTrue(components.size() == 1);
+    }
+
+    // Test AbortProcessingException support
+    public void testAbortProcessingException() {
+        // Register three listeners, with the second one set to abort
+        UIViewRoot root = facesContext.getApplication().getViewHandler().createView(facesContext, null);
+        facesContext.setViewRoot(root);
+        root.addFacesListener(new ListenerTestImpl("a", false));
+        root.addFacesListener(new ListenerTestImpl("b", true));
+        root.addFacesListener(new ListenerTestImpl("c", false));
+
+        // Queue two event and check the results
+        ListenerTestImpl.trace(null);
+        EventTestImpl event1 = new EventTestImpl(root, "1");
+        event1.setPhaseId(PhaseId.APPLY_REQUEST_VALUES);
+        root.queueEvent(event1);
+        EventTestImpl event2 = new EventTestImpl(root, "2");
+        event2.setPhaseId(PhaseId.APPLY_REQUEST_VALUES);
+        root.queueEvent(event2);
+        root.processDecodes(facesContext);
+        assertEquals("/a/1/b/1/a/2/b/2", ListenerTestImpl.trace());
+    }
+
+    // Test event queuing and dequeuing during broadcasting
+    public void testEventBroadcasting() {
+        // Register a listener that will conditionally queue a new event
+        UIViewRoot root = facesContext.getApplication().getViewHandler().createView(facesContext, null);
+        facesContext.setViewRoot(root);
+
+        root.addFacesListener(new ListenerTestImpl("t", "2", "4"));
+        ListenerTestImpl.trace(null);
+
+        // Queue some events, including the trigger one
+        EventTestImpl event = new EventTestImpl(root, "1");
+        event.setPhaseId(PhaseId.APPLY_REQUEST_VALUES);
+        root.queueEvent(event);
+        event = new EventTestImpl(root, "2");
+        event.setPhaseId(PhaseId.APPLY_REQUEST_VALUES);
+        root.queueEvent(event);
+        event = new EventTestImpl(root, "3");
+        event.setPhaseId(PhaseId.APPLY_REQUEST_VALUES);
+        root.queueEvent(event);
+
+        // Simulate the Apply Request Values phase
+        root.processDecodes(facesContext);
+
+        // Validate the results (expect 4th event to also be queued)
+        String expected = "/t/1/t/2/t/3/t/4";
+        assertEquals(expected, ListenerTestImpl.trace());
+    }
+
+    // Test event queuing and broadcasting
+    public void testEventQueuing() {
+        // Check for correct ifecycle management processing of event broadcast
+        checkEventQueueing(PhaseId.APPLY_REQUEST_VALUES);
+        checkEventQueueing(PhaseId.PROCESS_VALIDATIONS);
+        checkEventQueueing(PhaseId.UPDATE_MODEL_VALUES);
+        checkEventQueueing(PhaseId.INVOKE_APPLICATION);
+        checkEventQueueing(PhaseId.ANY_PHASE);
+    }
+
+    public void testLocaleFromVB() throws Exception {
+        UIViewRoot root = facesContext.getApplication().getViewHandler().createView(facesContext, null);
+        facesContext.setViewRoot(root);
+        ValueExpression expression = application.getExpressionFactory().createValueExpression(facesContext.getELContext(),
+                "#{locale}", Object.class);
+        request.setAttribute("locale", Locale.CHINESE);
+        assertEquals(Locale.getDefault(), root.getLocale());
+        root.setValueExpression("locale", expression);
+        assertEquals(Locale.CHINESE, root.getLocale());
+
+        // test locale from String
+        request.setAttribute("locale", "en");
+        assertEquals(new Locale("en"), root.getLocale());
+        request.setAttribute("locale", "en_IE");
+        assertEquals(new Locale("en", "IE"), root.getLocale());
+        request.setAttribute("locale", "en_IE_EURO");
+        assertEquals(new Locale("en", "IE", "EURO"), root.getLocale());
+
+        root.setLocale(Locale.CANADA_FRENCH);
+        assertEquals(Locale.CANADA_FRENCH, root.getLocale());
+    }
+
+    public void testUninitializedInstance() throws Exception {
+        UIViewRoot root = facesContext.getApplication().getViewHandler().createView(facesContext, null);
+        facesContext.setViewRoot(root);
+        assertEquals(javax.faces.render.RenderKitFactory.HTML_BASIC_RENDER_KIT,
+                root.getRenderKitId());
+        assertEquals(Locale.getDefault(), root.getLocale());
+    }
+
+    public void testPhaseMethExpression() throws Exception {
+        UIViewRoot root = facesContext.getApplication().getViewHandler().createView(facesContext, null);
+        facesContext.setViewRoot(root);
+        doTestPhaseMethodExpression(root, false);
+    }
+
+    public void testPhaseMethExpressionSkipping() throws Exception {
+        UIViewRoot root = facesContext.getApplication().getViewHandler().createView(facesContext, null);
+        facesContext.setViewRoot(root);
+        doTestPhaseMethodExpression(root, true);
+    }
+
+    public void testPhaseListener() throws Exception {
+        UIViewRoot root = facesContext.getApplication().getViewHandler().createView(facesContext, null);
+        facesContext.setViewRoot(root);
+        doTestPhaseListener(root, false);
+    }
+
+    public void testPhaseListenerSkipping() throws Exception {
+        UIViewRoot root = facesContext.getApplication().getViewHandler().createView(facesContext, null);
+        facesContext.setViewRoot(root);
+        doTestPhaseListener(root, true);
+    }
+
+    public void testPhaseMethodExpressionAndListener() throws Exception {
+        UIViewRoot root = facesContext.getApplication().getViewHandler().createView(facesContext, null);
+        facesContext.setViewRoot(root);
+        doTestPhaseMethodExpressionAndListener(root, false);
+    }
+
+    public void testPhaseMethodExpressionAndListenerSkipping() throws Exception {
+        UIViewRoot root = facesContext.getApplication().getViewHandler().createView(facesContext, null);
+        facesContext.setViewRoot(root);
+        doTestPhaseMethodExpressionAndListener(root, true);
+    }
+
+    public void testPhaseMethExpressionState() throws Exception {
+        UIViewRoot root = facesContext.getApplication().getViewHandler().createView(facesContext, null);
+        facesContext.setViewRoot(root);
+        Object state = root.saveState(facesContext);
+        root = facesContext.getApplication().getViewHandler().createView(facesContext, null);
+        facesContext.setViewRoot(root);
+        root.restoreState(facesContext, state);
+
+        doTestPhaseMethodExpression(root, false);
+    }
+
+    public void testPhaseListenerState() throws Exception {
+        UIViewRoot root = facesContext.getApplication().getViewHandler().createView(facesContext, null);
+        facesContext.setViewRoot(root);
+        Object state = root.saveState(facesContext);
+        root = facesContext.getApplication().getViewHandler().createView(facesContext, null);
+        facesContext.setViewRoot(root);
+        root.restoreState(facesContext, state);
+
+        doTestPhaseListener(root, false);
+    }
+
+    public void testPhaseMethodExpressionAndListenerState() throws Exception {
+        UIViewRoot root = facesContext.getApplication().getViewHandler().createView(facesContext, null);
+        facesContext.setViewRoot(root);
+        Object state = root.saveState(facesContext);
+        root = facesContext.getApplication().getViewHandler().createView(facesContext, null);
+        facesContext.setViewRoot(root);
+        root.restoreState(facesContext, state);
+
+        doTestPhaseMethodExpressionAndListener(root, false);
+    }
+
+    public void testPhaseListenerExceptions() throws Exception {
+        PhaseId[] ids = {
+            PhaseId.APPLY_REQUEST_VALUES,
+            PhaseId.PROCESS_VALIDATIONS,
+            PhaseId.UPDATE_MODEL_VALUES,
+            PhaseId.INVOKE_APPLICATION,
+            PhaseId.RENDER_RESPONSE};
+        Class[] args = new Class[]{PhaseEvent.class};
+        MethodExpression beforeExpression = facesContext.getApplication()
+                .getExpressionFactory()
+                .createMethodExpression(facesContext.getELContext(),
+                        "#{bean.beforePhase}", null,
+                        args);
+        MethodExpression afterExpression = facesContext.getApplication()
+                .getExpressionFactory()
+                .createMethodExpression(facesContext.getELContext(),
+                        "#{bean.afterPhase}", null,
+                        args);
+        for (PhaseId id : ids) {
+            UIViewRoot root = facesContext.getApplication().getViewHandler().createView(facesContext, null);
+            PhaseListenerBean bean = new PhaseListenerBean(id, true, false);
+            PhaseListenerBean pl1 = new PhaseListenerBean(id);
+            PhaseListenerBean pl2 = new PhaseListenerBean(id);
+            facesContext.getExternalContext().getRequestMap().put("bean", bean);
+            root.setBeforePhaseListener(beforeExpression);
+            root.setAfterPhaseListener(afterExpression);
+            root.addPhaseListener(pl1);
+            root.addPhaseListener(pl2);
+
+            // validate behavior
+            callRightLifecycleMethodGivenPhaseId(root, id);
+            assertTrue(bean.isBeforePhaseCalled());
+            assertTrue(!bean.isAfterPhaseCalled());
+            assertTrue(!pl1.isBeforePhaseCalled());
+            assertTrue(!pl1.isAfterPhaseCalled());
+            assertTrue(!pl2.isBeforePhaseCalled());
+            assertTrue(!pl2.isAfterPhaseCalled());
+
+            // ensure PLs are invoked properly in the case of exceptions
+            root = facesContext.getApplication().getViewHandler().createView(facesContext, null);
+            bean = new PhaseListenerBean(id);
+            pl1 = new PhaseListenerBean(id, true, false);
+            pl2 = new PhaseListenerBean(id);
+            facesContext.getExternalContext().getRequestMap().put("bean", bean);
+            root.setBeforePhaseListener(beforeExpression);
+            root.setAfterPhaseListener(afterExpression);
+            root.addPhaseListener(pl1);
+            root.addPhaseListener(pl2);
+
+            // validate behavior
+            callRightLifecycleMethodGivenPhaseId(root, id);
+            assertTrue(bean.isBeforePhaseCalled());
+            assertTrue(bean.isAfterPhaseCalled());
+            assertTrue(pl1.isBeforePhaseCalled());
+            assertTrue(!pl1.isAfterPhaseCalled());
+            assertTrue(!pl2.isBeforePhaseCalled());
+            assertTrue(!pl2.isAfterPhaseCalled());
+        }
+    }
+
+    public void doTestPhaseMethodExpression(UIViewRoot root,
+            boolean skipping) throws Exception {
+        PhaseSkipTestComponent comp = null;
+        if (skipping) {
+            comp = new PhaseSkipTestComponent();
+            root.getChildren().add(comp);
+            facesContext.responseComplete();
+        }
+        doTestPhaseMethodExpressionWithPhaseId(root,
+                PhaseId.APPLY_REQUEST_VALUES);
+        if (skipping) {
+            assertTrue(!comp.isDecodeCalled());
+        }
+        doTestPhaseMethodExpressionWithPhaseId(root, PhaseId.PROCESS_VALIDATIONS);
+        if (skipping) {
+            assertTrue(!comp.isProcessValidatorsCalled());
+        }
+        doTestPhaseMethodExpressionWithPhaseId(root, PhaseId.UPDATE_MODEL_VALUES);
+        if (skipping) {
+            assertTrue(!comp.isProcessUpdatesCalled());
+        }
+        doTestPhaseMethodExpressionWithPhaseId(root, PhaseId.INVOKE_APPLICATION);
+        doTestPhaseMethodExpressionWithPhaseId(root, PhaseId.RENDER_RESPONSE);
+        if (skipping) {
+            assertTrue(!comp.isEncodeBeginCalled());
+        }
+    }
+
+    public void doTestPhaseMethodExpressionWithPhaseId(UIViewRoot root,
+            PhaseId phaseId) throws Exception {
+        PhaseListenerBean phaseListenerBean = new PhaseListenerBean(phaseId);
+        facesContext.getExternalContext().getRequestMap().put("bean",
+                phaseListenerBean);
+        Class[] args = new Class[]{PhaseEvent.class};
+        MethodExpression beforeExpression = facesContext.getApplication().getExpressionFactory().createMethodExpression(facesContext.getELContext(),
+                "#{bean.beforePhase}", null,
+                args),
+                afterExpression = facesContext.getApplication().getExpressionFactory().createMethodExpression(facesContext.getELContext(),
+                        "#{bean.afterPhase}", null,
+                        args);
+        root.setBeforePhaseListener(beforeExpression);
+        root.setAfterPhaseListener(afterExpression);
+
+        callRightLifecycleMethodGivenPhaseId(root, phaseId);
+
+        assertTrue(phaseListenerBean.isBeforePhaseCalled());
+        assertTrue(phaseListenerBean.isAfterPhaseCalled());
+    }
+
+    public void doTestPhaseListener(UIViewRoot root,
+            boolean skipping) throws Exception {
+        PhaseSkipTestComponent comp = null;
+        if (skipping) {
+            comp = new PhaseSkipTestComponent();
+            root.getChildren().add(comp);
+            facesContext.responseComplete();
+        }
+        doTestPhaseListenerWithPhaseId(root,
+                PhaseId.APPLY_REQUEST_VALUES);
+        if (skipping) {
+            assertTrue(!comp.isDecodeCalled());
+        }
+        doTestPhaseListenerWithPhaseId(root, PhaseId.PROCESS_VALIDATIONS);
+        if (skipping) {
+            assertTrue(!comp.isProcessValidatorsCalled());
+        }
+        doTestPhaseListenerWithPhaseId(root, PhaseId.UPDATE_MODEL_VALUES);
+        if (skipping) {
+            assertTrue(!comp.isProcessUpdatesCalled());
+        }
+        doTestPhaseListenerWithPhaseId(root, PhaseId.INVOKE_APPLICATION);
+        doTestPhaseListenerWithPhaseId(root, PhaseId.RENDER_RESPONSE);
+        if (skipping) {
+            assertTrue(!comp.isEncodeBeginCalled());
+        }
+    }
+
+    public void doTestPhaseListenerWithPhaseId(UIViewRoot root,
+            PhaseId phaseId) throws Exception {
+        PhaseListenerBean phaseListener = new PhaseListenerBean(phaseId);
+        root.addPhaseListener(phaseListener);
+
+        callRightLifecycleMethodGivenPhaseId(root, phaseId);
+
+        assertTrue(phaseListener.isBeforePhaseCalled());
+        assertTrue(phaseListener.isAfterPhaseCalled());
+    }
+
+    public void doTestPhaseMethodExpressionAndListener(UIViewRoot root,
+            boolean skipping) throws Exception {
+        PhaseSkipTestComponent comp = null;
+        if (skipping) {
+            comp = new PhaseSkipTestComponent();
+            root.getChildren().add(comp);
+            facesContext.responseComplete();
+        }
+        doTestPhaseMethodExpressionAndListenerWithPhaseId(root,
+                PhaseId.APPLY_REQUEST_VALUES);
+        if (skipping) {
+            assertTrue(!comp.isDecodeCalled());
+        }
+        doTestPhaseMethodExpressionAndListenerWithPhaseId(root,
+                PhaseId.PROCESS_VALIDATIONS);
+        if (skipping) {
+            assertTrue(!comp.isProcessValidatorsCalled());
+        }
+        doTestPhaseMethodExpressionAndListenerWithPhaseId(root,
+                PhaseId.UPDATE_MODEL_VALUES);
+        if (skipping) {
+            assertTrue(!comp.isProcessUpdatesCalled());
+        }
+        doTestPhaseMethodExpressionAndListenerWithPhaseId(root,
+                PhaseId.INVOKE_APPLICATION);
+        doTestPhaseMethodExpressionAndListenerWithPhaseId(root,
+                PhaseId.RENDER_RESPONSE);
+        if (skipping) {
+            assertTrue(!comp.isEncodeBeginCalled());
+        }
+    }
+
+    public void doTestPhaseMethodExpressionAndListenerWithPhaseId(UIViewRoot root,
+            PhaseId phaseId) throws Exception {
+        PhaseListenerBean phaseListener = new PhaseListenerBean(phaseId);
+        PhaseListenerBean phaseListenerBean = new PhaseListenerBean(phaseId);
+        facesContext.getExternalContext().getRequestMap().put("bean",
+                phaseListenerBean);
+        Class[] args = new Class[]{PhaseEvent.class};
+        MethodExpression beforeExpression = facesContext.getApplication().getExpressionFactory().createMethodExpression(facesContext.getELContext(),
+                "#{bean.beforePhase}", null,
+                args),
+                afterExpression = facesContext.getApplication().getExpressionFactory().createMethodExpression(facesContext.getELContext(),
+                        "#{bean.afterPhase}", null,
+                        args);
+        root.setBeforePhaseListener(beforeExpression);
+        root.setAfterPhaseListener(afterExpression);
+        root.addPhaseListener(phaseListener);
+
+        callRightLifecycleMethodGivenPhaseId(root, phaseId);
+
+        assertTrue(phaseListenerBean.isBeforePhaseCalled());
+        assertTrue(phaseListenerBean.isAfterPhaseCalled());
+        assertTrue(phaseListener.isBeforePhaseCalled());
+        assertTrue(phaseListener.isAfterPhaseCalled());
+    }
+
+    private void checkEventQueuesSizes(List<List> events,
+            int applyEventsSize, int valEventsSize, int updateEventsSize, int appEventsSize) {
+        List applyEvents = events.get(PhaseId.APPLY_REQUEST_VALUES.getOrdinal());
+        assertEquals("Apply-Request-Values Event Count", applyEventsSize, applyEvents.size());
+        List valEvents = events.get(PhaseId.PROCESS_VALIDATIONS.getOrdinal());
+        assertEquals("Process-Validations Event Count", valEventsSize, valEvents.size());
+        List updateEvents = events.get(PhaseId.UPDATE_MODEL_VALUES.getOrdinal());
+        assertEquals("Update-Model Event Count", updateEventsSize, updateEvents.size());
+        List appEvents = events.get(PhaseId.INVOKE_APPLICATION.getOrdinal());
+        assertEquals("Invoke-Application Event Count", appEventsSize, appEvents.size());
+    }
+
+    // Test Events List Clearing
+    public void testEventsListClear() {
+        UIViewRoot root = facesContext.getApplication().getViewHandler().createView(facesContext, null);
+        facesContext.setViewRoot(root);
+        EventTestImpl event1, event2, event3, event4 = null;
+        event1 = new EventTestImpl(root, "1");
+        event1.setPhaseId(PhaseId.APPLY_REQUEST_VALUES);
+        root.queueEvent(event1);
+        event2 = new EventTestImpl(root, "2");
+        event2.setPhaseId(PhaseId.PROCESS_VALIDATIONS);
+        root.queueEvent(event2);
+        event3 = new EventTestImpl(root, "3");
+        event3.setPhaseId(PhaseId.UPDATE_MODEL_VALUES);
+        root.queueEvent(event3);
+        event4 = new EventTestImpl(root, "4");
+        event4.setPhaseId(PhaseId.INVOKE_APPLICATION);
+        root.queueEvent(event4);
+        final Field fields[] = UIViewRoot.class.getDeclaredFields();
+        Field field = null;
+        List<List> events = null;
+        for (int i = 0; i < fields.length; ++i) {
+            if ("events".equals(fields[i].getName())) {
+                field = fields[i];
+                field.setAccessible(true);
+                try {
+                    events = TypedCollections.dynamicallyCastList((List) field.get(root), List.class);
+                } catch (Exception e) {
+                    assertTrue(false);
+                }
+                break;
+            }
+        }
+        // CASE: renderReponse not set; responseComplete not set;
+        // check for existence of events before processDecodes
+        checkEventQueuesSizes(events, 1, 1, 1, 1);
+        root.processDecodes(facesContext);
+        // there should be no events
+        checkEventQueuesSizes(events, 0, 1, 1, 1);
+
+        // requeue apply request event
+        root.queueEvent(event1);
+        // CASE: renderReponse set;
+        // check for existence of events before processValidators
+        checkEventQueuesSizes(events, 1, 1, 1, 1);
+        facesContext.renderResponse();
+        root.processValidators(facesContext);
+        // there should be no events
+        checkEventQueuesSizes(events, 0, 0, 0, 0);
+
+        // reset FacesContext
+        facesContext.setRenderResponse(false);
+        facesContext.setResponseComplete(false);
+        // requeue all events
+        root.queueEvent(event1);
+        root.queueEvent(event2);
+        root.queueEvent(event3);
+        root.queueEvent(event4);
+        try {
+            events = TypedCollections.dynamicallyCastList((List) field.get(root), List.class);
+        } catch (Exception e) {
+            assertTrue(false);
+        }
+        // CASE: response set;
+        // check for existence of events before processValidators
+        checkEventQueuesSizes(events, 1, 1, 1, 1);
+        facesContext.renderResponse();
+        root.processValidators(facesContext);
+        // there should be no events
+        checkEventQueuesSizes(events, 0, 0, 0, 0);
+
+        // reset FacesContext
+        facesContext.setRenderResponse(false);
+        facesContext.setResponseComplete(false);
+        // requeue all events
+        root.queueEvent(event1);
+        root.queueEvent(event2);
+        root.queueEvent(event3);
+        root.queueEvent(event4);
+        try {
+            events = TypedCollections.dynamicallyCastList((List) field.get(root), List.class);
+        } catch (Exception e) {
+            assertTrue(false);
+        }
+        // CASE: response complete;
+        // check for existence of events before processUpdates
+        checkEventQueuesSizes(events, 1, 1, 1, 1);
+        facesContext.responseComplete();
+        root.processUpdates(facesContext);
+        // there should be no events
+        checkEventQueuesSizes(events, 0, 0, 0, 0);
+
+        // reset FacesContext
+        facesContext.setRenderResponse(false);
+        facesContext.setResponseComplete(false);
+        // requeue all events
+        root.queueEvent(event1);
+        root.queueEvent(event2);
+        root.queueEvent(event3);
+        root.queueEvent(event4);
+        try {
+            events = TypedCollections.dynamicallyCastList((List) field.get(root), List.class);
+        } catch (Exception e) {
+            assertTrue(false);
+        }
+        // CASE: response complete;
+        // check for existence of events before processApplication
+        checkEventQueuesSizes(events, 1, 1, 1, 1);
+        facesContext.responseComplete();
+        root.processApplication(facesContext);
+        // there should be no events
+        checkEventQueuesSizes(events, 0, 0, 0, 0);
+
+        //finally, get the internal events list one more time
+        //to make sure it is null
+        try {
+            events = TypedCollections.dynamicallyCastList((List) field.get(root), List.class);
+        } catch (Exception e) {
+            assertTrue(false);
+        }
+        assertNull("events", events);
+    }
+
+    private void callRightLifecycleMethodGivenPhaseId(UIViewRoot root,
+            PhaseId phaseId) throws Exception {
+        if (phaseId.getOrdinal() == PhaseId.APPLY_REQUEST_VALUES.getOrdinal()) {
+            root.processDecodes(facesContext);
+        } else if (phaseId.getOrdinal() == PhaseId.PROCESS_VALIDATIONS.getOrdinal()) {
+            root.processValidators(facesContext);
+        } else if (phaseId.getOrdinal() == PhaseId.UPDATE_MODEL_VALUES.getOrdinal()) {
+            root.processUpdates(facesContext);
+        } else if (phaseId.getOrdinal() == PhaseId.INVOKE_APPLICATION.getOrdinal()) {
+            root.processApplication(facesContext);
+        } else if (phaseId.getOrdinal() == PhaseId.RENDER_RESPONSE.getOrdinal()) {
+            root.encodeBegin(facesContext);
+            root.encodeEnd(facesContext);
+        }
+    }
+
+    // --------------------------------------------------------- Support Methods
+    private void checkEventQueueing(PhaseId phaseId) {
+
+        // NOTE:  Current semantics for ANY_PHASE listeners is that
+        // the event should be delivered exactly once, so the existence
+        // of such a listener does not cause the event to remain queued.
+        // Therefore, the expected string is the same as for any
+        // phase-specific listener, and it should get matched after
+        // Apply Request Values processing since that is first phase
+        // for which events are fired
+        // Register an event listener for the specified phase id
+        UIViewRoot root = facesContext.getApplication().getViewHandler().createView(facesContext, null);
+        facesContext.setViewRoot(root);
+        EventTestImpl event = null;
+        ListenerTestImpl listener = new ListenerTestImpl("t");
+        root.addFacesListener(listener);
+
+        // Queue some events to be processed
+        event = new EventTestImpl(root, "1");
+        event.setPhaseId(phaseId);
+        root.queueEvent(event);
+        event = new EventTestImpl(root, "2");
+        event.setPhaseId(phaseId);
+        root.queueEvent(event);
+        String expected = "/t/1/t/2";
+
+        // Fire off the relevant lifecycle methods and check expected results
+        ListenerTestImpl.trace(null);
+        assertEquals("", ListenerTestImpl.trace());
+        root.processDecodes(facesContext);
+        if (PhaseId.APPLY_REQUEST_VALUES.equals(phaseId)
+                || PhaseId.ANY_PHASE.equals(phaseId)) {
+            assertEquals(expected, ListenerTestImpl.trace());
+        } else {
+            assertEquals("", ListenerTestImpl.trace());
+        }
+        root.processValidators(facesContext);
+        if (PhaseId.PROCESS_VALIDATIONS.equals(phaseId)
+                || PhaseId.APPLY_REQUEST_VALUES.equals(phaseId)
+                || PhaseId.APPLY_REQUEST_VALUES.equals(phaseId)
+                || PhaseId.ANY_PHASE.equals(phaseId)) {
+            assertEquals(expected, ListenerTestImpl.trace());
+        } else {
+            assertEquals("", ListenerTestImpl.trace());
+        }
+        root.processUpdates(facesContext);
+        if (PhaseId.UPDATE_MODEL_VALUES.equals(phaseId)
+                || PhaseId.PROCESS_VALIDATIONS.equals(phaseId)
+                || PhaseId.APPLY_REQUEST_VALUES.equals(phaseId)
+                || PhaseId.ANY_PHASE.equals(phaseId)) {
+            assertEquals(expected, ListenerTestImpl.trace());
+        } else {
+            assertEquals("", ListenerTestImpl.trace());
+        }
+        root.processApplication(facesContext);
+        assertEquals(expected, ListenerTestImpl.trace());
+    }
+
+    // These overrides are necessary because our normal setup
+    // calls releaseFactories, which makes it impossible to get clientIds.
+    @Override
+    public void testInvokeOnComponentPositive() throws Exception {
+        super.setUp();
+        super.testInvokeOnComponentPositive();
+    }
+
+    @Override
+    public void testInvokeOnComponentNegative() throws Exception {
+        super.setUp();
+        super.testInvokeOnComponentNegative();
+    }
+
+    @Override
+    public void testInvokeOnComponentWithPrependId() throws Exception {
+        super.setUp();
+        super.testInvokeOnComponentWithPrependId();
+    }
+
+    @Override
+    public void testChildrenListAfterAddViewPublish() {
+        // overridding to do nothing.  UIViewRoot is a special cases
+        // and there should always only be on UIViewRoot in a tree
+    }
+
+    @Override
+    public void testFacetMapAfterAddViewPublish() {
+        // overridding to do nothing.  UIViewRoot is a special cases
+        // and there should always only be on UIViewRoot in a tree
+    }
+
+    // Check that the properties on the specified components are equal
+    @Override
+    protected void checkProperties(UIComponent comp1, UIComponent comp2) {
+        super.checkProperties(comp1, comp2);
+        UIViewRoot vr1 = (UIViewRoot) comp1;
+        UIViewRoot vr2 = (UIViewRoot) comp2;
+        assertEquals(vr2.getRenderKitId(), vr2.getRenderKitId());
+        assertEquals(vr1.getViewId(), vr2.getViewId());
+        assertEquals(vr1.getLocale(), vr2.getLocale());
+    }
+
+    // Create a pristine component of the type to be used in state holder tests
+    @Override
+    protected UIComponent createComponent() {
+        UIComponent component = new UIViewRoot();
+        component.setRendererType(null);
+        return (component);
+    }
+
+    // Populate a pristine component to be used in state holder tests
+    @Override
+    protected void populateComponent(UIComponent component) {
+        super.populateComponent(component);
+        UIViewRoot vr = (UIViewRoot) component;
+        vr.setRenderKitId("foo");
+        vr.setViewId("bar");
+        vr.setLocale(new Locale("fr", "FR"));
+    }
+
+    public static class PhaseListenerBean extends Object
+            implements PhaseListener {
+
+        private boolean beforePhaseCalled = false;
+        private boolean afterPhaseCalled = false;
+        private PhaseId phaseId = null;
+        private boolean exceptionBefore;
+        private boolean exceptionAfter;
+
+        public PhaseListenerBean(PhaseId phaseId) {
+            this.phaseId = phaseId;
+        }
+
+        public PhaseListenerBean(PhaseId phaseId,
+                boolean exceptionBefore,
+                boolean exceptionAfter) {
+            this(phaseId);
+            this.exceptionBefore = exceptionBefore;
+            this.exceptionAfter = exceptionAfter;
+        }
+
+        public boolean isBeforePhaseCalled() {
+            return beforePhaseCalled;
+        }
+
+        public boolean isAfterPhaseCalled() {
+            return afterPhaseCalled;
+        }
+
+        @Override
+        public void beforePhase(PhaseEvent e) {
+            beforePhaseCalled = true;
+            if (exceptionBefore) {
+                throw new RuntimeException();
+            }
+        }
+
+        @Override
+        public void afterPhase(PhaseEvent e) {
+            afterPhaseCalled = true;
+            if (exceptionAfter) {
+                throw new RuntimeException();
+            }
+        }
+
+        @Override
+        public PhaseId getPhaseId() {
+            return phaseId;
+        }
+    }
+
+    public static class PhaseSkipTestComponent extends UIInput {
+
+        private boolean decodeCalled = false;
+
+        @Override
+        public void decode(FacesContext context) {
+            decodeCalled = true;
+        }
+
+        public boolean isDecodeCalled() {
+            return decodeCalled;
+        }
+
+        private boolean encodeBeginCalled = false;
+
+        @Override
+        public void encodeBegin(FacesContext context) throws IOException {
+            encodeBeginCalled = true;
+        }
+
+        public boolean isEncodeBeginCalled() {
+            return encodeBeginCalled;
+        }
+
+        private boolean processValidatorsCalled = false;
+
+        @Override
+        public void processValidators(FacesContext context) {
+            processValidatorsCalled = true;
+        }
+
+        public boolean isProcessValidatorsCalled() {
+            return processValidatorsCalled;
+        }
+
+        private boolean processUpdatesCalled = false;
+
+        @Override
+        public void processUpdates(FacesContext context) {
+            processUpdatesCalled = true;
+        }
+
+        public boolean isProcessUpdatesCalled() {
+            return processUpdatesCalled;
+        }
+    }
+
+    public static class Container extends UIPanel {
+
+        @Override
+        public void encodeAll(FacesContext context) throws IOException {
+        }
+    }
+}
diff --git a/test/unit/src/test/java/javax/faces/component/ValueChangeListenerTestImpl.java b/test/unit/src/test/java/javax/faces/component/ValueChangeListenerTestImpl.java
new file mode 100644
index 0000000..6f9b271
--- /dev/null
+++ b/test/unit/src/test/java/javax/faces/component/ValueChangeListenerTestImpl.java
@@ -0,0 +1,134 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package javax.faces.component;
+
+import javax.faces.event.ValueChangeEvent;
+import javax.faces.event.ValueChangeListener;
+import javax.faces.context.FacesContext;
+
+/**
+ * <p>
+ * Test {@link ValueChangeListener} implementation.</p>
+ */
+public class ValueChangeListenerTestImpl implements ValueChangeListener, StateHolder {
+
+    // ------------------------------------------------------------ Constructors
+    /**
+     *
+     * Called from state system.
+     */
+    public ValueChangeListenerTestImpl() {
+    }
+
+    public ValueChangeListenerTestImpl(String id) {
+        this.id = id;
+    }
+
+    private String id = null;
+
+    // ----------------------------------------------------------- Pubic Methods
+    public String getId() {
+        return (this.id);
+    }
+
+    @Override
+    public void processValueChange(ValueChangeEvent event) {
+        trace(getId());
+    }
+
+    // ---------------------------------------------------- Static Trace Methods
+    // Accumulated trace log
+    private static StringBuffer trace = new StringBuffer();
+
+    // Append to the current trace log (or clear if null)
+    public static void trace(String text) {
+        if (text == null) {
+            trace.setLength(0);
+        } else {
+            trace.append('/');
+            trace.append(text);
+        }
+    }
+
+    // Retrieve the current trace log
+    public static String trace() {
+        return (trace.toString());
+    }
+
+    // this needs to be named differently because other test methods
+    // rely on the standard equal method.
+    public boolean isEqual(Object otherObj) {
+        if (!(otherObj instanceof ValueChangeListenerTestImpl)) {
+            return false;
+        }
+        ValueChangeListenerTestImpl other = (ValueChangeListenerTestImpl) otherObj;
+        if ((null != id && null == other.id)
+                || (null == id && null != other.id)) {
+            return false;
+        }
+        boolean idsAreEqual = true;
+        if (null != id) {
+            idsAreEqual = id.equals(other.id);
+        }
+        return idsAreEqual;
+    }
+
+    //
+    // methods from StateHolder
+    //
+    @Override
+    public Object saveState(FacesContext context) {
+        return id;
+    }
+
+    @Override
+    public void restoreState(FacesContext context, Object state) {
+        id = (String) state;
+    }
+
+    @Override
+    public boolean isTransient() {
+        return false;
+    }
+
+    @Override
+    public void setTransient(boolean newT) {
+    }
+}
diff --git a/test/unit/src/test/java/javax/faces/component/ValueHolderTestCaseBase.java b/test/unit/src/test/java/javax/faces/component/ValueHolderTestCaseBase.java
new file mode 100644
index 0000000..28a943f
--- /dev/null
+++ b/test/unit/src/test/java/javax/faces/component/ValueHolderTestCaseBase.java
@@ -0,0 +1,318 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package javax.faces.component;
+
+import javax.faces.component.html.HtmlInputText;
+import javax.faces.convert.Converter;
+import javax.faces.convert.LongConverter;
+import javax.faces.convert.NumberConverter;
+import javax.faces.convert.ShortConverter;
+import java.beans.PropertyDescriptor;
+import java.lang.reflect.Field;
+import java.util.Map;
+import static junit.framework.Assert.assertEquals;
+import static junit.framework.Assert.assertNotNull;
+import static junit.framework.Assert.assertNull;
+import static junit.framework.Assert.assertTrue;
+import static junit.framework.Assert.fail;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+/**
+ * <p>
+ * Unit tests for {@link ValueHolder}. Any test case for a component class that
+ * implements {@link ValueHolder} should extend this class.</p>
+ */
+public abstract class ValueHolderTestCaseBase extends UIComponentBaseTestCase {
+
+    // ------------------------------------------------------------ Constructors
+    /**
+     * Construct a new instance of this test case.
+     *
+     * @param name Name of the test case
+     */
+    public ValueHolderTestCaseBase(String name) {
+        super(name);
+    }
+
+    // ---------------------------------------------------- Overall Test Methods
+    // Set up instance variables required by this test case.
+    @Override
+    public void setUp() throws Exception {
+        super.setUp();
+        component = new UIOutput();
+        expectedId = null;
+        expectedRendererType = "Text";
+    }
+
+    // Return the tests included in this test case.
+    public static Test suite() {
+        return (new TestSuite(ValueHolderTestCaseBase.class));
+    }
+
+    // ------------------------------------------------- Individual Test Methods
+    public void testAttributesTransparencyNonDeterministic() throws Exception {
+        final int numThreads = 30;
+        final Boolean outcomes[] = new Boolean[numThreads];
+        Runnable runnables[] = new Runnable[numThreads];
+        int i = 0;
+
+        for (i = 0; i < outcomes.length; i++) {
+            outcomes[i] = null;
+        }
+
+        for (i = 0; i < runnables.length; i++) {
+            runnables[i] = new Runnable() {
+                @Override
+                public void run() {
+                    int threadNum = 0;
+                    try {
+                        threadNum = Integer.valueOf(Thread.currentThread().
+                                getName()).intValue();
+                    } catch (NumberFormatException ex) {
+                        fail("Expected thread name to be an integer");
+                    }
+                    // Even threadNums use HtmlInputText, odd use this component
+                    boolean isEven = (threadNum % 2) == 0;
+                    ValueHolder vh = null;
+                    UIComponent newComp = null;
+                    if (isEven) {
+                        newComp = new HtmlInputText();
+                        vh = (ValueHolder) newComp;
+                    } else {
+                        try {
+                            newComp = ValueHolderTestCaseBase.this.component.getClass().newInstance();
+                            vh = (ValueHolder) newComp;
+
+                        } catch (IllegalAccessException ex) {
+                            fail("Can't instantiate class of " + ValueHolderTestCaseBase.this.component.getClass().getName());
+                        } catch (InstantiationException ex) {
+                            fail("Can't instantiate class of " + ValueHolderTestCaseBase.this.component.getClass().getName());
+                        }
+                    }
+                    try {
+                        boolean result = doTestAttributesTransparency(vh, newComp);
+                        outcomes[threadNum] = new Boolean(result);
+                    } catch (Throwable e) {
+                        e.printStackTrace();
+                        outcomes[threadNum] = new Boolean(false);
+                    }
+                }
+            };
+        }
+//        clearDescriptors();
+        Thread thread = null;
+        for (i = 0; i < runnables.length; i++) {
+            thread = new Thread(runnables[i], "" + i);
+            thread.start();
+        }
+
+        // Keep polling the outcomes array until there are no nulls.
+        boolean foundNull = false;
+        while (!foundNull) {
+            for (i = 0; i < outcomes.length; i++) {
+                if (null != outcomes[i]) {
+                    foundNull = true;
+                }
+            }
+            Thread.currentThread().sleep(500);
+        }
+
+        for (i = 0; i < outcomes.length; i++) {
+            if (!outcomes[i].booleanValue()) {
+                fail("Thread " + i + " failed");
+            }
+        }
+    }
+
+    private void clearDescriptors() throws Exception {
+        Field descriptorsField = UIComponentBase.class.getDeclaredField("descriptors");
+        descriptorsField.setAccessible(true);
+        Map<Class<?>, Map<String, PropertyDescriptor>> descriptors
+                = (Map<Class<?>, Map<String, PropertyDescriptor>>) descriptorsField
+                .get(null);
+        descriptors.clear();
+    }
+
+    public void testAttributesTransparency() {
+        super.testAttributesTransparency();
+        ValueHolder vh = (ValueHolder) component;
+        doTestAttributesTransparency(vh, component);
+    }
+
+    // Test attribute-property transparency
+    public boolean doTestAttributesTransparency(ValueHolder vh, UIComponent newComp) {
+        assertEquals(vh.getValue(),
+                (String) newComp.getAttributes().get("value"));
+        vh.setValue("foo");
+        assertEquals("foo", (String) newComp.getAttributes().get("value"));
+        vh.setValue(null);
+        assertNull((String) newComp.getAttributes().get("value"));
+        newComp.getAttributes().put("value", "bar");
+        assertEquals("bar", vh.getValue());
+        newComp.getAttributes().put("value", null);
+        assertNull(vh.getValue());
+
+        assertEquals(vh.getConverter(),
+                (String) newComp.getAttributes().get("converter"));
+        vh.setConverter(new LongConverter());
+        assertNotNull((Converter) newComp.getAttributes().get("converter"));
+        assertTrue(newComp.getAttributes().get("converter") instanceof LongConverter);
+        vh.setConverter(null);
+        assertNull(newComp.getAttributes().get("converter"));
+        newComp.getAttributes().put("converter", new ShortConverter());
+        assertNotNull(vh.getConverter());
+        assertTrue(vh.getConverter() instanceof ShortConverter);
+        newComp.getAttributes().put("converter", null);
+        assertNull(vh.getConverter());
+
+        return true;
+    }
+
+    // Suppress lifecycle tests since we do not have a renderer
+    @Override
+    public void testLifecycleManagement() {
+    }
+
+    // Test a pristine ValueHolderBase instance
+    @Override
+    public void testPristine() {
+        super.testPristine();
+        ValueHolder vh = (ValueHolder) component;
+
+        // Validate properties
+        assertNull("no value", vh.getValue());
+        assertNull("no converter", vh.getConverter());
+    }
+
+    // Test setting properties to invalid values
+    @Override
+    public void testPropertiesInvalid() throws Exception {
+        super.testPropertiesInvalid();
+        ValueHolder vh = (ValueHolder) component;
+    }
+
+    // Test setting properties to valid values
+    public void testPropertiesValid() throws Exception {
+        super.testPropertiesValid();
+        ValueHolder vh = (ValueHolder) component;
+
+        // value
+        vh.setValue("foo.bar");
+        assertEquals("expected value",
+                "foo.bar", vh.getValue());
+        vh.setValue(null);
+        assertNull("erased value", vh.getValue());
+
+        // converter
+        vh.setConverter(new LongConverter());
+        assertTrue("expected converter",
+                vh.getConverter() instanceof LongConverter);
+        vh.setConverter(null);
+        assertNull("erased converter", vh.getConverter());
+    }
+
+    // --------------------------------------------------------- Support Methods
+    // Check that the properties of the NumberConverters are equal
+    protected void checkNumberConverter(NumberConverter nc1, NumberConverter nc2) {
+        assertEquals(nc1.getCurrencyCode(), nc2.getCurrencyCode());
+        assertEquals(nc1.getCurrencySymbol(), nc2.getCurrencySymbol());
+        assertEquals(nc1.isGroupingUsed(), nc2.isGroupingUsed());
+        assertEquals(nc1.isIntegerOnly(), nc2.isIntegerOnly());
+        assertEquals(nc1.getMaxFractionDigits(), nc2.getMaxFractionDigits());
+        assertEquals(nc1.getMaxIntegerDigits(), nc2.getMaxIntegerDigits());
+        assertEquals(nc1.getMinFractionDigits(), nc2.getMinFractionDigits());
+        assertEquals(nc1.getMinIntegerDigits(), nc2.getMinIntegerDigits());
+        assertEquals(nc1.getLocale(), nc2.getLocale());
+        assertEquals(nc1.getPattern(), nc2.getPattern());
+        assertEquals(nc1.getType(), nc2.getType());
+    }
+
+    // Check that the properties on the specified components are equal
+    @Override
+    protected void checkProperties(UIComponent comp1, UIComponent comp2) {
+        super.checkProperties(comp1, comp2);
+        ValueHolder vh1 = (ValueHolder) comp1;
+        ValueHolder vh2 = (ValueHolder) comp2;
+        assertEquals(vh1.getValue(), vh2.getValue());
+        checkNumberConverter((NumberConverter) vh1.getConverter(),
+                (NumberConverter) vh2.getConverter());
+    }
+
+    // Populate a pristine component to be used in state holder tests
+    @Override
+    protected void populateComponent(UIComponent component) {
+        super.populateComponent(component);
+        ValueHolder vh = (ValueHolder) component;
+        vh.setValue("component value");
+        vh.setConverter(createNumberConverter());
+    }
+
+    // Create and configure a NumberConverter
+    protected NumberConverter createNumberConverter() {
+        NumberConverter nc = new NumberConverter();
+        nc.setCurrencyCode("USD");
+        nc.setCurrencySymbol("$");
+        nc.setGroupingUsed(false);
+        nc.setIntegerOnly(true);
+        nc.setMaxFractionDigits(2);
+        nc.setMaxIntegerDigits(10);
+        nc.setMinFractionDigits(2);
+        nc.setMinIntegerDigits(5);
+        nc.setType("currency");
+        return (nc);
+    }
+
+    protected void checkNumberConverters(NumberConverter nc1, NumberConverter nc2) {
+        assertNotNull(nc1);
+        assertNotNull(nc2);
+        assertEquals(nc1.getCurrencyCode(), nc2.getCurrencyCode());
+        assertEquals(nc1.getCurrencySymbol(), nc2.getCurrencySymbol());
+        assertEquals(nc1.isGroupingUsed(), nc2.isGroupingUsed());
+        assertEquals(nc1.isIntegerOnly(), nc2.isIntegerOnly());
+        assertEquals(nc1.getMaxFractionDigits(), nc2.getMaxFractionDigits());
+        assertEquals(nc1.getMaxIntegerDigits(), nc2.getMaxIntegerDigits());
+        assertEquals(nc1.getMinFractionDigits(), nc2.getMinFractionDigits());
+        assertEquals(nc1.getMinIntegerDigits(), nc2.getMinIntegerDigits());
+        assertEquals(nc1.getLocale(), nc2.getLocale());
+        assertEquals(nc1.getPattern(), nc2.getPattern());
+        assertEquals(nc1.getType(), nc2.getType());
+    }
+}
diff --git a/test/unit/src/test/java/javax/faces/event/PhaseIdTest.java b/test/unit/src/test/java/javax/faces/event/PhaseIdTest.java
new file mode 100644
index 0000000..1e6e776
--- /dev/null
+++ b/test/unit/src/test/java/javax/faces/event/PhaseIdTest.java
@@ -0,0 +1,83 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package javax.faces.event;
+
+import junit.framework.TestCase;
+import java.util.Iterator;
+import static junit.framework.Assert.assertTrue;
+
+public class PhaseIdTest extends TestCase {
+//
+// Protected Constants
+//
+
+//
+// Class Variables
+//
+//
+// Instance Variables
+//
+// Attribute Instance Variables
+// Relationship Instance Variables
+//
+// Constructors and Initializers    
+//
+    public PhaseIdTest() {
+        super();
+    }
+
+//
+// Class methods
+//
+//
+// General Methods
+//
+    public void testToString() {
+        Iterator valueIter = PhaseId.VALUES.iterator();
+        String cur = null;
+        while (valueIter.hasNext()) {
+            cur = (String) valueIter.next().toString();
+            System.out.println(cur);
+            assertTrue(cur.length() > 3);
+        }
+
+    }
+
+} // end of class PhaseIdTest
diff --git a/test/unit/src/test/java/javax/faces/mock/MockFacesContextFactoryExtender.java b/test/unit/src/test/java/javax/faces/mock/MockFacesContextFactoryExtender.java
new file mode 100644
index 0000000..0dd0383
--- /dev/null
+++ b/test/unit/src/test/java/javax/faces/mock/MockFacesContextFactoryExtender.java
@@ -0,0 +1,56 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package javax.faces.mock;
+
+import com.sun.faces.mock.MockFacesContextFactory;
+import javax.faces.FactoryFinder;
+import javax.faces.context.FacesContextFactory;
+
+public class MockFacesContextFactoryExtender extends MockFacesContextFactory {
+
+    public MockFacesContextFactoryExtender() {
+    }
+
+    public MockFacesContextFactoryExtender(FacesContextFactory oldImpl) {
+        System.setProperty(FactoryFinder.FACES_CONTEXT_FACTORY,
+                this.getClass().getName());
+        System.setProperty("oldImpl", oldImpl.getClass().getName());
+    }
+}
diff --git a/test/unit/src/test/java/javax/faces/mock/MockFacesContextFactoryExtender2.java b/test/unit/src/test/java/javax/faces/mock/MockFacesContextFactoryExtender2.java
new file mode 100644
index 0000000..990021f
--- /dev/null
+++ b/test/unit/src/test/java/javax/faces/mock/MockFacesContextFactoryExtender2.java
@@ -0,0 +1,56 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package javax.faces.mock;
+
+import com.sun.faces.mock.MockFacesContextFactory;
+import javax.faces.FactoryFinder;
+import javax.faces.context.FacesContextFactory;
+
+public class MockFacesContextFactoryExtender2 extends MockFacesContextFactory {
+
+    public MockFacesContextFactoryExtender2() {
+    }
+
+    public MockFacesContextFactoryExtender2(FacesContextFactory oldImpl) {
+        System.setProperty(FactoryFinder.FACES_CONTEXT_FACTORY,
+                this.getClass().getName());
+        System.setProperty("oldImpl", oldImpl.getClass().getName());
+    }
+}
diff --git a/test/unit/src/test/java/javax/faces/model/ArrayDataModelTestCase.java b/test/unit/src/test/java/javax/faces/model/ArrayDataModelTestCase.java
new file mode 100644
index 0000000..6b42de0
--- /dev/null
+++ b/test/unit/src/test/java/javax/faces/model/ArrayDataModelTestCase.java
@@ -0,0 +1,82 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package javax.faces.model;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+/**
+ * <p>
+ * Unit tests for {@link ArrayDataModel}.</p>
+ */
+public class ArrayDataModelTestCase extends DataModelTestCaseBase {
+
+    // ------------------------------------------------------------ Constructors
+    /**
+     * Construct a new instance of this test case.
+     *
+     * @param name Name of the test case
+     */
+    public ArrayDataModelTestCase(String name) {
+        super(name);
+    }
+
+    // ------------------------------------------------------ Instance Variables
+    // ---------------------------------------------------- Overall Test Methods
+    // Set up instance variables required by this test case.
+    @Override
+    public void setUp() throws Exception {
+        beans = new BeanTestImpl[5];
+        for (int i = 0; i < beans.length; i++) {
+            beans[i] = new BeanTestImpl();
+        }
+        configure();
+        model = new ArrayDataModel<BeanTestImpl>(beans);
+        super.setUp();
+    }
+
+    // Return the tests included in this test case.
+    public static Test suite() {
+        return (new TestSuite(ArrayDataModelTestCase.class));
+    }
+
+    // ------------------------------------------------- Individual Test Methods
+    // ------------------------------------------------------- Protected Methods
+}
diff --git a/test/unit/src/test/java/javax/faces/model/BeanTestImpl.java b/test/unit/src/test/java/javax/faces/model/BeanTestImpl.java
new file mode 100644
index 0000000..355e536
--- /dev/null
+++ b/test/unit/src/test/java/javax/faces/model/BeanTestImpl.java
@@ -0,0 +1,47 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package javax.faces.model;
+
+/**
+ * <p>
+ * JavaBean for data model tests.</p>
+ */
+public class BeanTestImpl extends com.sun.faces.mock.model.BeanTestImpl {
+}
diff --git a/test/unit/src/test/java/javax/faces/model/CollectionDataModelTest.java b/test/unit/src/test/java/javax/faces/model/CollectionDataModelTest.java
new file mode 100644
index 0000000..643c1ed
--- /dev/null
+++ b/test/unit/src/test/java/javax/faces/model/CollectionDataModelTest.java
@@ -0,0 +1,66 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package javax.faces.model;
+
+import java.util.ArrayList;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+/**
+ * The JUnit tests for CollectionDataModel.
+ * 
+ * @author Manfred Riem
+ */
+public class CollectionDataModelTest {
+
+    /**
+     * Test getWrappedData method.
+     */
+    @Test
+    public void testGetWrappedData() {
+        CollectionDataModel model = new CollectionDataModel();
+        assertNull(model.getWrappedData());
+        ArrayList<String> list = new ArrayList<String>();
+        model.setWrappedData(list);
+        assertNotNull(model.getWrappedData());
+        model.setWrappedData(null);
+        assertNull(model.getWrappedData());
+    }
+}
diff --git a/test/unit/src/test/java/javax/faces/model/DataModelTestCaseBase.java b/test/unit/src/test/java/javax/faces/model/DataModelTestCaseBase.java
new file mode 100644
index 0000000..0545bf5
--- /dev/null
+++ b/test/unit/src/test/java/javax/faces/model/DataModelTestCaseBase.java
@@ -0,0 +1,374 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package javax.faces.model;
+
+import java.util.Iterator;
+import java.util.Map;
+import java.util.NoSuchElementException;
+import java.lang.reflect.Method;
+import static junit.framework.Assert.assertEquals;
+import static junit.framework.Assert.assertNotNull;
+import static junit.framework.Assert.assertNull;
+import static junit.framework.Assert.assertTrue;
+import static junit.framework.Assert.fail;
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+/**
+ * <p>
+ * Abstract base class for {@link DataModel} tests.</p>
+ */
+public abstract class DataModelTestCaseBase extends TestCase {
+
+    // ------------------------------------------------------------ Constructors
+    /**
+     * Construct a new instance of this test case.
+     *
+     * @param name Name of the test case
+     */
+    public DataModelTestCaseBase(String name) {
+
+        super(name);
+
+    }
+
+    // ------------------------------------------------------ Instance Variables
+    // The array of beans we will be wrapping (must be initialized before setUp)
+    protected BeanTestImpl beans[] = new BeanTestImpl[0];
+
+    // The DataModel we are testing
+    protected DataModel model = null;
+
+    // ---------------------------------------------------- Overall Test Methods
+    // Configure the properties of the beans we will be wrapping
+    protected void configure() {
+        for (int i = 0; i < beans.length; i++) {
+            BeanTestImpl bean = beans[i];
+            bean.setBooleanProperty((i % 2) == 0);
+            bean.setBooleanSecond(!bean.getBooleanProperty());
+            bean.setByteProperty((byte) i);
+            bean.setDoubleProperty(((double) i) * 100.0);
+            bean.setFloatProperty(((float) i) * ((float) 10.0));
+            bean.setIntProperty(1000 * i);
+            bean.setLongProperty((long) 10000 * (long) i);
+            bean.setStringProperty("This is string " + i);
+        }
+    }
+
+    // Set up instance variables required by this test case.
+    @Override
+    public void setUp() throws Exception {
+        // Subclasses must create "beans", call "configure()", create "model"
+        super.setUp();
+    }
+
+    // Return the tests included in this test case.
+    public static Test suite() {
+        return (new TestSuite(DataModelTestCaseBase.class));
+    }
+
+    // Tear down instance variables required by ths test case
+    public void tearDown() throws Exception {
+        super.tearDown();
+        beans = null;
+        model = null;
+    }
+
+    // ------------------------------------------------- Individual Test Methods
+    // Test invalid arguments to listener methods
+    public void testInvalidListeners() throws Exception {
+        try {
+            model.addDataModelListener(null);
+            fail("Should have thrown NullPointerException");
+        } catch (NullPointerException e) {
+            // Expected result
+        }
+
+        try {
+            model.removeDataModelListener(null);
+            fail("Should have thrown NullPointerException");
+        } catch (NullPointerException e) {
+            // Expected result
+        }
+    }
+
+    // Test positioning to all rows in ascending order
+    public void testPositionAscending() throws Exception {
+        StringBuffer sb = new StringBuffer();
+        model.setRowIndex(-1);
+        model.addDataModelListener(new ListenerTestImpl());
+        ListenerTestImpl.trace(null);
+
+        int n = model.getRowCount();
+        for (int i = 0; i < n; i++) {
+            checkRow(i);
+            sb.append("/").append(i);
+        }
+        assertEquals(sb.toString(), ListenerTestImpl.trace());
+    }
+
+    // Test positioning to all rows in descending order
+    public void testPositionDescending() throws Exception {
+        StringBuffer sb = new StringBuffer();
+        model.setRowIndex(-1);
+        model.addDataModelListener(new ListenerTestImpl());
+        ListenerTestImpl.trace(null);
+
+        int n = model.getRowCount();
+        for (int i = (n - 1); i >= 0; i--) {
+            checkRow(i);
+            sb.append("/").append(i);
+        }
+        assertEquals(sb.toString(), ListenerTestImpl.trace());
+    }
+
+    // Test a pristine DataModel instance
+    public void testPristine() throws Exception {
+        // Unopened instance
+        assertNotNull("beans exists", beans);
+        assertNotNull("model exists", model);
+
+        // Correct row count
+        if (model instanceof ResultSetDataModel) {
+            assertEquals("correct row count", -1, model.getRowCount());
+        } else {
+            assertEquals("correct row count", beans.length,
+                    model.getRowCount());
+        }
+
+        // Correct row index
+        assertEquals("correct row index", 0, model.getRowIndex());
+    }
+
+    // Test removing listener
+    public void testRemoveListener() throws Exception {
+        ListenerTestImpl listener = new ListenerTestImpl();
+        ListenerTestImpl.trace(null);
+        model.addDataModelListener(listener);
+        model.setRowIndex(-1);
+        model.setRowIndex(0);
+        model.setRowIndex(0); // No movement so no event
+        model.setRowIndex(-1);
+        model.removeDataModelListener(listener);
+        model.setRowIndex(0);
+        assertEquals("/-1/0/-1", ListenerTestImpl.trace());
+    }
+
+    // Test resetting the wrapped data (should trigger an event
+    public void testReset() throws Exception {
+        ListenerTestImpl listener = new ListenerTestImpl();
+        ListenerTestImpl.trace(null);
+        model.addDataModelListener(listener);
+
+        assertEquals(0, model.getRowIndex());
+        model.setWrappedData(model.getWrappedData());
+        assertEquals("/0", ListenerTestImpl.trace());
+    }
+
+    // Test row available manipulations
+    public void testRowAvailable() throws Exception {
+        // Position to the "no current row" position
+        model.setRowIndex(-1);
+        assertTrue(!model.isRowAvailable());
+
+        // Position to an arbitrarily high row number
+        model.setRowIndex(beans.length);
+        assertTrue(!model.isRowAvailable());
+
+        // Position to a known good row number
+        model.setRowIndex(0);
+        assertTrue(model.isRowAvailable());
+    }
+
+    // Test the ability to update through the Map returned by getRowData()
+    public void testRowData() throws Exception {
+        // Retrieve the row data for row zero
+        model.setRowIndex(0);
+        Object data = model.getRowData();
+        assertNotNull(data);
+
+        // Modify several property values
+        BeanTestImpl bean = beans[0];
+        bean.setBooleanProperty(!bean.getBooleanProperty());
+        if (data instanceof Map) {
+            ((Map) data).put("booleanProperty",
+                    bean.getBooleanProperty()
+                    ? Boolean.TRUE : Boolean.FALSE);
+        } else {
+            Method m = data.getClass().getMethod("setBooleanProperty", Boolean.TYPE);
+            m.invoke(data, bean.getBooleanProperty() ? Boolean.TRUE : Boolean.FALSE);
+        }
+        bean.setIntProperty(bean.getIntProperty() + 5);
+        if (data instanceof Map) {
+            ((Map) data).put("intProperty",
+                    bean.getIntProperty());
+        } else {
+            Method m = data.getClass().getMethod("setIntProperty", Integer.TYPE);
+            m.invoke(data, bean.getIntProperty());
+        }
+        bean.setStringProperty(bean.getStringProperty() + "XYZ");
+        if (data instanceof Map) {
+            ((Map) data).put("stringProperty",
+                    bean.getStringProperty() + "XYZ");
+        } else {
+            Method m = data.getClass().getMethod("setStringProperty", String.class);
+            m.invoke(data, bean.getStringProperty());
+        }
+
+        // Ensure that all the modifications flowed through to beans[0]
+        assertEquals(bean.getBooleanProperty(),
+                beans[0].getBooleanProperty());
+        assertEquals(bean.isBooleanSecond(),
+                beans[0].isBooleanSecond());
+        assertEquals(bean.getByteProperty(),
+                beans[0].getByteProperty());
+        assertEquals(bean.getDoubleProperty(),
+                beans[0].getDoubleProperty(), 0.005);
+        assertEquals(bean.getFloatProperty(),
+                beans[0].getFloatProperty(), (float) 0.005);
+        assertEquals(bean.getIntProperty(),
+                beans[0].getIntProperty());
+        assertEquals(bean.getLongProperty(),
+                beans[0].getLongProperty());
+        assertEquals(bean.getStringProperty(),
+                beans[0].getStringProperty());
+    }
+
+    // Test row index manipulations
+    public void testRowIndex() throws Exception {
+        assertEquals("correct row index", 0, model.getRowIndex());
+
+        // Positive setRowIndex() tests
+        model.setRowIndex(0);
+        model.setRowIndex(-1);
+
+        // Negative setRowIndex() tests
+        try {
+            model.setRowIndex(-2);
+            fail("Should have thrown IllegalArgumentException");
+        } catch (IllegalArgumentException e) {
+            // Expected result
+        }
+    }
+
+    public void testIterator() {
+        Iterator iterator = model.iterator();
+        if (!(model instanceof ScalarDataModel)) {
+            for (int i = 0; i < 5; i++) {
+                System.out.println("Index: " + i);
+                assertTrue(iterator.hasNext());
+                assertNotNull(iterator.next());
+            }
+        } else {
+            assertTrue(iterator.hasNext());
+            assertNotNull(iterator.next());
+        }
+
+        assertTrue(!iterator.hasNext());
+        try {
+            iterator.next();
+            assertTrue(false);
+        } catch (NoSuchElementException nsee) {
+            // expected
+        }
+    }
+
+    // Test resetting the wrapped data to null
+    public void testWrapped() throws Exception {
+        model.setWrappedData(null);
+        assertTrue(!model.isRowAvailable());
+        assertEquals(-1, model.getRowCount());
+        assertNull(model.getRowData());
+        assertEquals(-1, model.getRowIndex());
+        assertNull(model.getWrappedData());
+    }
+
+    // ------------------------------------------------------- Protected Methods
+    protected BeanTestImpl data() throws Exception {
+        Object data = model.getRowData();
+        assertNotNull(data);
+        assertTrue(data instanceof BeanTestImpl);
+        return ((BeanTestImpl) data);
+    }
+
+    protected void checkRow(int i) throws Exception {
+        model.setRowIndex(i);
+        String prompt = "Row " + i + " property ";
+        BeanTestImpl bean = data();
+        assertNotNull("Row " + i + " data", bean);
+        assertEquals(prompt + "booleanProperty",
+                beans[i].getBooleanProperty(),
+                bean.getBooleanProperty());
+        assertEquals(prompt + "booleanSecond",
+                beans[i].isBooleanSecond(),
+                bean.isBooleanSecond());
+        assertEquals(prompt + "byteProperty",
+                beans[i].getByteProperty(),
+                bean.getByteProperty());
+        assertEquals(prompt + "doubleProperty",
+                "" + beans[i].getDoubleProperty(),
+                "" + bean.getDoubleProperty());
+        assertEquals(prompt + "floatProperty",
+                "" + beans[i].getFloatProperty(),
+                "" + bean.getFloatProperty());
+        assertEquals(prompt + "intProperty",
+                beans[i].getIntProperty(),
+                bean.getIntProperty());
+        assertEquals(prompt + "longProperty",
+                beans[i].getLongProperty(),
+                bean.getLongProperty());
+        assertEquals(prompt + "nullProperty",
+                beans[i].getNullProperty(),
+                bean.getNullProperty());
+        assertEquals(prompt + "readOnlyProperty",
+                beans[i].getReadOnlyProperty(),
+                bean.getReadOnlyProperty());
+        assertEquals(prompt + "shortProperty",
+                beans[i].getShortProperty(),
+                bean.getShortProperty());
+        assertEquals(prompt + "stringProperty",
+                beans[i].getStringProperty(),
+                bean.getStringProperty());
+        assertEquals(prompt + "writeOnlyProperty",
+                beans[i].getWriteOnlyPropertyValue(),
+                bean.getWriteOnlyPropertyValue());
+    }
+}
diff --git a/test/unit/src/test/java/javax/faces/model/ListDataModelTestCase.java b/test/unit/src/test/java/javax/faces/model/ListDataModelTestCase.java
new file mode 100644
index 0000000..078e38c
--- /dev/null
+++ b/test/unit/src/test/java/javax/faces/model/ListDataModelTestCase.java
@@ -0,0 +1,88 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package javax.faces.model;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+/**
+ * <p>
+ * Unit tests for {@link ListDataModel}.</p>
+ */
+public class ListDataModelTestCase extends DataModelTestCaseBase {
+
+    // ------------------------------------------------------------ Constructors
+    /**
+     * Construct a new instance of this test case.
+     *
+     * @param name Name of the test case
+     */
+    public ListDataModelTestCase(String name) {
+
+        super(name);
+
+    }
+
+    // ------------------------------------------------------ Instance Variables
+    // ---------------------------------------------------- Overall Test Methods
+    // Set up instance variables required by this test case.
+    @Override
+    public void setUp() throws Exception {
+        List<BeanTestImpl> list = new ArrayList<BeanTestImpl>();
+        for (int i = 0; i < 5; i++) {
+            list.add(new BeanTestImpl());
+        }
+        beans = list.toArray(new BeanTestImpl[5]);
+        configure();
+        model = new ListDataModel<BeanTestImpl>(list);
+        super.setUp();
+    }
+
+    // Return the tests included in this test case.
+    public static Test suite() {
+        return (new TestSuite(ListDataModelTestCase.class));
+    }
+
+    // ------------------------------------------------- Individual Test Methods
+    // ------------------------------------------------------- Protected Methods
+}
diff --git a/test/unit/src/test/java/javax/faces/model/ListenerTestImpl.java b/test/unit/src/test/java/javax/faces/model/ListenerTestImpl.java
new file mode 100644
index 0000000..903a13e
--- /dev/null
+++ b/test/unit/src/test/java/javax/faces/model/ListenerTestImpl.java
@@ -0,0 +1,81 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package javax.faces.model;
+
+/**
+ * <p>
+ * Test implementation of DataModelListener.</p>
+ */
+public class ListenerTestImpl implements DataModelListener {
+
+    // ----------------------------------------------- DataModelListener Methods
+    @Override
+    public void rowSelected(DataModelEvent event) {
+        Object rowData = event.getRowData();
+        int rowIndex = event.getRowIndex();
+        trace("" + rowIndex);
+        if ((rowIndex >= 0) && (rowData == null)) {
+            throw new IllegalArgumentException("rowIndex=" + rowIndex
+                    + " but rowData is null");
+        } else if ((rowIndex == -1) && (rowData != null)) {
+            throw new IllegalArgumentException("rowIndex=" + rowIndex
+                    + " but rowData is not null");
+        } else if (rowIndex < -1) {
+            throw new IllegalArgumentException("rowIndex=" + rowIndex);
+        }
+
+    }
+
+    // ---------------------------------------------------------- Static Methods
+    private static StringBuffer trace = new StringBuffer();
+
+    public static String trace() {
+        return (trace.toString());
+    }
+
+    public static void trace(String value) {
+        if (value == null) {
+            trace = new StringBuffer();
+        } else {
+            trace.append("/");
+            trace.append(value);
+        }
+    }
+}
diff --git a/test/unit/src/test/java/javax/faces/model/ResultDataModelTestCase.java b/test/unit/src/test/java/javax/faces/model/ResultDataModelTestCase.java
new file mode 100644
index 0000000..3e96f25
--- /dev/null
+++ b/test/unit/src/test/java/javax/faces/model/ResultDataModelTestCase.java
@@ -0,0 +1,112 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package javax.faces.model;
+
+import java.util.Map;
+import com.sun.faces.mock.MockResult;
+import static junit.framework.Assert.assertTrue;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+/**
+ * <p>
+ * Unit tests for {@link ResultDataModel}.</p>
+ */
+public class ResultDataModelTestCase extends DataModelTestCaseBase {
+
+    // ------------------------------------------------------------ Constructors
+    /**
+     * Construct a new instance of this test case.
+     *
+     * @param name Name of the test case
+     */
+    public ResultDataModelTestCase(String name) {
+
+        super(name);
+
+    }
+
+    // ------------------------------------------------------ Instance Variables
+    // The Result passed to our ResultDataModel
+    protected MockResult result = null;
+
+    // ---------------------------------------------------- Overall Test Methods
+    // Set up instance variables required by this test case.
+    @Override
+    public void setUp() throws Exception {
+        beans = new BeanTestImpl[5];
+        for (int i = 0; i < beans.length; i++) {
+            beans[i] = new BeanTestImpl();
+        }
+        configure();
+        result = new MockResult(beans);
+        model = new ResultDataModel(result);
+        super.setUp();
+    }
+
+    // Return the tests included in this test case.
+    public static Test suite() {
+        return (new TestSuite(ResultDataModelTestCase.class));
+    }
+
+    // ------------------------------------------------- Individual Test Methods
+    // ------------------------------------------------------- Protected Methods
+    @Override
+    protected BeanTestImpl data() throws Exception {
+        Object data = model.getRowData();
+        assertTrue(data instanceof Map);
+        BeanTestImpl bean = new BeanTestImpl();
+        Map map = (Map) data;
+
+        bean.setBooleanProperty(((Boolean) map.get("booleanProperty")).booleanValue());
+        bean.setBooleanSecond(((Boolean) map.get("booleanSecond")).booleanValue());
+        bean.setByteProperty(((Byte) map.get("byteProperty")).byteValue());
+        bean.setDoubleProperty(((Double) map.get("doubleProperty")).doubleValue());
+        bean.setFloatProperty(((Float) map.get("floatProperty")).floatValue());
+        bean.setIntProperty(((Integer) map.get("intProperty")).intValue());
+        bean.setLongProperty(((Long) map.get("longProperty")).longValue());
+        bean.setNullProperty((String) map.get("nullProperty"));
+        bean.setShortProperty(((Short) map.get("shortProperty")).shortValue());
+        bean.setStringProperty((String) map.get("stringProperty"));
+        bean.setWriteOnlyProperty((String) map.get("writeOnlyPropertyValue"));
+
+        return (bean);
+    }
+}
diff --git a/test/unit/src/test/java/javax/faces/model/ResultSetDataModelTestCase.java b/test/unit/src/test/java/javax/faces/model/ResultSetDataModelTestCase.java
new file mode 100644
index 0000000..566c788
--- /dev/null
+++ b/test/unit/src/test/java/javax/faces/model/ResultSetDataModelTestCase.java
@@ -0,0 +1,606 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package javax.faces.model;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import com.sun.faces.mock.MockResultSet;
+import static junit.framework.Assert.assertEquals;
+import static junit.framework.Assert.assertNotNull;
+import static junit.framework.Assert.assertNull;
+import static junit.framework.Assert.assertTrue;
+import static junit.framework.Assert.fail;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+/**
+ * <p>
+ * Unit tests for {@link ArrayDataModel}.</p>
+ */
+public class ResultSetDataModelTestCase extends DataModelTestCaseBase {
+
+    // ------------------------------------------------------------ Constructors
+    /**
+     * Construct a new instance of this test case.
+     *
+     * @param name Name of the test case
+     */
+    public ResultSetDataModelTestCase(String name) {
+        super(name);
+    }
+
+    // ------------------------------------------------------ Instance Variables
+    // The ResultSet passed to our ResultSetDataModel
+    protected MockResultSet result = null;
+
+    // ---------------------------------------------------- Overall Test Methods
+    // Set up instance variables required by this test case.
+    @Override
+    public void setUp() throws Exception {
+        beans = new BeanTestImpl[5];
+        for (int i = 0; i < beans.length; i++) {
+            beans[i] = new BeanTestImpl();
+        }
+        configure();
+        result = new MockResultSet(beans);
+        model = new ResultSetDataModel(result);
+        super.setUp();
+    }
+
+    // Return the tests included in this test case.
+    public static Test suite() {
+        return (new TestSuite(ResultSetDataModelTestCase.class));
+    }
+
+    // ------------------------------------------------- Individual Test Methods
+    // Test ((Map) getRowData()).containsKey()
+    public void testRowDataContainsKey() throws Exception {
+        // Position to row 1 and retrieve the corresponding Map
+        model.setRowIndex(1);
+        assertTrue(model.isRowAvailable());
+        Object data = model.getRowData();
+        assertNotNull(data);
+        assertTrue(data instanceof Map);
+        Map map = (Map) data;
+
+        // Test exact match on column names
+        assertTrue(map.containsKey("booleanProperty"));
+        assertTrue(map.containsKey("booleanSecond"));
+        assertTrue(map.containsKey("byteProperty"));
+        assertTrue(map.containsKey("doubleProperty"));
+        assertTrue(map.containsKey("floatProperty"));
+        assertTrue(map.containsKey("intProperty"));
+        assertTrue(map.containsKey("longProperty"));
+        assertTrue(map.containsKey("stringProperty"));
+
+        // Test inexact match on column names
+        assertTrue(map.containsKey("booleanPROPERTY"));
+        assertTrue(map.containsKey("booleanSECOND"));
+        assertTrue(map.containsKey("bytePROPERTY"));
+        assertTrue(map.containsKey("doublePROPERTY"));
+        assertTrue(map.containsKey("floatPROPERTY"));
+        assertTrue(map.containsKey("intPROPERTY"));
+        assertTrue(map.containsKey("longPROPERTY"));
+        assertTrue(map.containsKey("stringPROPERTY"));
+
+        // Test false return on invalid column names
+        assertTrue(!map.containsKey("foo"));
+        assertTrue(!map.containsKey("FOO"));
+        assertTrue(!map.containsKey("bar"));
+        assertTrue(!map.containsKey("BAR"));
+    }
+
+    // Test ((Map) getRowData()).containsValue()
+    public void testRowDataContainsValue() throws Exception {
+        // Position to row 1 and retrieve the corresponding Map
+        model.setRowIndex(1);
+        assertTrue(model.isRowAvailable());
+        Object data = model.getRowData();
+        assertNotNull(data);
+        assertTrue(data instanceof Map);
+        Map map = (Map) data;
+
+        // Test positive results
+        assertTrue(map.containsValue(Boolean.TRUE));
+        assertTrue(map.containsValue(Boolean.FALSE));
+        assertTrue(map.containsValue(new Byte((byte) 1)));
+        assertTrue(map.containsValue(new Double((double) 100.0)));
+        assertTrue(map.containsValue(new Float((float) 10.0)));
+        assertTrue(map.containsValue(new Integer((int) 1000)));
+        assertTrue(map.containsValue(new Long((long) 10000)));
+        assertTrue(map.containsValue("This is string 1"));
+
+        // Test negative results
+        assertTrue(!map.containsValue("foo"));
+        assertTrue(!map.containsValue(new Integer(654321)));
+    }
+
+    // Test ((Map) getRowData()).entrySet()
+    public void testRowDataEntrySet() throws Exception {
+        // Position to row 1 and retrieve the corresponding Map
+        model.setRowIndex(1);
+        assertTrue(model.isRowAvailable());
+        Object data = model.getRowData();
+        assertNotNull(data);
+        assertTrue(data instanceof Map);
+        Map map = (Map) data;
+        Set set = map.entrySet();
+
+        // Test exact match postive results
+        assertTrue(set.contains(new TestEntry("booleanProperty",
+                Boolean.FALSE)));
+        assertTrue(set.contains(new TestEntry("booleanSecond",
+                Boolean.TRUE)));
+        assertTrue(set.contains(new TestEntry("byteProperty",
+                new Byte((byte) 1))));
+        assertTrue(set.contains(new TestEntry("doubleProperty",
+                new Double((double) 100.0))));
+        assertTrue(set.contains(new TestEntry("floatProperty",
+                new Float((float) 10.0))));
+        assertTrue(set.contains(new TestEntry("intProperty",
+                new Integer((int) 1000))));
+        assertTrue(set.contains(new TestEntry("longProperty",
+                new Long((long) 10000))));
+        assertTrue(set.contains(new TestEntry("stringProperty", "This is string 1")));
+
+        // Test exact match postive results
+        assertTrue(set.contains(new TestEntry("booleanPROPERTY",
+                Boolean.FALSE)));
+        assertTrue(set.contains(new TestEntry("booleanSECOND",
+                Boolean.TRUE)));
+        assertTrue(set.contains(new TestEntry("bytePROPERTY",
+                new Byte((byte) 1))));
+        assertTrue(set.contains(new TestEntry("doublePROPERTY",
+                new Double((double) 100.0))));
+        assertTrue(set.contains(new TestEntry("floatPROPERTY",
+                new Float((float) 10.0))));
+        assertTrue(set.contains(new TestEntry("intPROPERTY",
+                new Integer((int) 1000))));
+        assertTrue(set.contains(new TestEntry("longPROPERTY",
+                new Long((long) 10000))));
+        assertTrue(set.contains(new TestEntry("stringPROPERTY", "This is string 1")));
+
+        // Test negative results
+        assertTrue(!set.contains(new TestEntry("foo", "bar")));
+        assertTrue(!set.contains(new TestEntry("FOO", "bar")));
+        assertTrue(!set.contains(new TestEntry("baz", "bop")));
+        assertTrue(!set.contains(new TestEntry("BAZ", "bop")));
+
+        // Test other methods
+        assertTrue(!set.isEmpty());
+
+        // Test updating through the entry set
+        Iterator entries = set.iterator();
+        while (entries.hasNext()) {
+            Map.Entry entry = (Map.Entry) entries.next();
+            if ("stringProperty".equalsIgnoreCase((String) entry.getKey())) {
+                entry.setValue("This is string 1 modified");
+            }
+        }
+        assertEquals("This is string 1 modified",
+                beans[1].getStringProperty());
+        assertEquals("This is string 1 modified",
+                (String) map.get("stringProperty"));
+        assertEquals("This is string 1 modified",
+                (String) map.get("stringPROPERTY"));
+        result.absolute(2); // ResultSet indexing is one-relative
+        assertEquals("This is string 1 modified",
+                (String) result.getObject("stringProperty"));
+    }
+
+    // Test ((Map) getRowData()).get()
+    public void testRowDataGet() throws Exception {
+        // Position to row 1 and retrieve the corresponding Map
+        model.setRowIndex(1);
+        assertTrue(model.isRowAvailable());
+        Object data = model.getRowData();
+        assertNotNull(data);
+        assertTrue(data instanceof Map);
+        Map map = (Map) data;
+
+        // Test exact match on column names
+        assertEquals(Boolean.FALSE,
+                (Boolean) map.get("booleanProperty"));
+        assertEquals(Boolean.TRUE,
+                (Boolean) map.get("booleanSecond"));
+        assertEquals(new Byte((byte) 1),
+                (Byte) map.get("byteProperty"));
+        assertEquals(new Double((double) 100.0),
+                (Double) map.get("doubleProperty"));
+        assertEquals(new Float((float) 10.0),
+                (Float) map.get("floatProperty"));
+        assertEquals(new Integer((int) 1000),
+                (Integer) map.get("intProperty"));
+        assertEquals(new Long((long) 10000),
+                (Long) map.get("longProperty"));
+        assertEquals("This is string 1",
+                (String) map.get("stringProperty"));
+
+        // Test inexact match on column names
+        assertEquals(Boolean.FALSE,
+                (Boolean) map.get("booleanPROPERTY"));
+        assertEquals(Boolean.TRUE,
+                (Boolean) map.get("booleanSECOND"));
+        assertEquals(new Byte((byte) 1),
+                (Byte) map.get("bytePROPERTY"));
+        assertEquals(new Double((double) 100.0),
+                (Double) map.get("doublePROPERTY"));
+        assertEquals(new Float((float) 10.0),
+                (Float) map.get("floatPROPERTY"));
+        assertEquals(new Integer((int) 1000),
+                (Integer) map.get("intPROPERTY"));
+        assertEquals(new Long((long) 10000),
+                (Long) map.get("longPROPERTY"));
+        assertEquals("This is string 1",
+                (String) map.get("stringPROPERTY"));
+
+        // Test null return on non-existent column names
+        assertNull(map.get("foo"));
+        assertNull(map.get("FOO"));
+        assertNull(map.get("bar"));
+        assertNull(map.get("bar"));
+    }
+
+    // Test ((Map) getRowData()).keySet()
+    public void testRowDataKeySet() throws Exception {
+        // Position to row 1 and retrieve the corresponding Map
+        model.setRowIndex(1);
+        assertTrue(model.isRowAvailable());
+        Object data = model.getRowData();
+        assertNotNull(data);
+        assertTrue(data instanceof Map);
+        Map map = (Map) data;
+        Set set = map.keySet();
+
+        // Test exact match postive results
+        assertTrue(set.contains("booleanProperty"));
+        assertTrue(set.contains("booleanSecond"));
+        assertTrue(set.contains("byteProperty"));
+        assertTrue(set.contains("doubleProperty"));
+        assertTrue(set.contains("floatProperty"));
+        assertTrue(set.contains("intProperty"));
+        assertTrue(set.contains("longProperty"));
+        assertTrue(set.contains("stringProperty"));
+
+        // Test inexact match positive results
+        assertTrue(set.contains("booleanPROPERTY"));
+        assertTrue(set.contains("booleanSECOND"));
+        assertTrue(set.contains("bytePROPERTY"));
+        assertTrue(set.contains("doublePROPERTY"));
+        assertTrue(set.contains("floatPROPERTY"));
+        assertTrue(set.contains("intPROPERTY"));
+        assertTrue(set.contains("longPROPERTY"));
+        assertTrue(set.contains("stringPROPERTY"));
+
+        // Test negative results
+        assertTrue(!set.contains("foo"));
+        assertTrue(!set.contains("FOO"));
+        assertTrue(!set.contains("bar"));
+        assertTrue(!set.contains("BAR"));
+
+        // Test other methods
+        assertTrue(!set.isEmpty());
+    }
+
+    // Test ((Map) getRowData()).put()
+    public void testRowDataPut() throws Exception {
+        // Position to row 1 and retrieve the corresponding Map
+        model.setRowIndex(1);
+        assertTrue(model.isRowAvailable());
+        Object data = model.getRowData();
+        assertNotNull(data);
+        assertTrue(data instanceof Map);
+        Map map = (Map) data;
+    }
+
+    // Test unsupported operations on ((Map) getRowData())
+    public void testRowDataUnsupported() throws Exception {
+        // Position to row 1 and retrieve the corresponding Map
+        model.setRowIndex(1);
+        assertTrue(model.isRowAvailable());
+        Object data = model.getRowData();
+        assertNotNull(data);
+        assertTrue(data instanceof Map);
+        Map map = (Map) data;
+
+        // clear()
+        try {
+            map.clear();
+            fail("Should have thrown UnsupportedOperationException");
+        } catch (UnsupportedOperationException e) {
+            // Expected result
+        }
+
+        // entrySet()
+        Set entrySet = map.entrySet();
+        try {
+            entrySet.add(new TestEntry("foo", "bar"));
+            fail("Should have thrown UnsupportedOperationException");
+        } catch (UnsupportedOperationException e) {
+            // Expected result
+        }
+        List mapEntries = new ArrayList();
+        mapEntries.add(new TestEntry("foo", "bar"));
+        mapEntries.add(new TestEntry("baz", "bop"));
+        try {
+            entrySet.addAll(mapEntries);
+            fail("Should have thrown UnsupportedOperationException");
+        } catch (UnsupportedOperationException e) {
+            // Expected result
+        }
+        try {
+            entrySet.clear();
+            fail("Should have thrown UnsupportedOperationException");
+        } catch (UnsupportedOperationException e) {
+            // Expected result
+        }
+        try {
+            Iterator iterator = entrySet.iterator();
+            iterator.next();
+            iterator.remove();
+            fail("Should have thrown UnsupportedOperationException");
+        } catch (UnsupportedOperationException e) {
+            // Expected result
+        }
+        try {
+            entrySet.remove(new TestEntry("foo", "bar"));
+            fail("Should have thrown UnsupportedOperationException");
+        } catch (UnsupportedOperationException e) {
+            // Expected result
+        }
+        try {
+            entrySet.removeAll(mapEntries);
+            fail("Should have thrown UnsupportedOperationException");
+        } catch (UnsupportedOperationException e) {
+            // Expected result
+        }
+        try {
+            entrySet.retainAll(mapEntries);
+            fail("Should have thrown UnsupportedOperationException");
+        } catch (UnsupportedOperationException e) {
+            // Expected result
+        }
+
+        // keySet()
+        Set keySet = map.keySet();
+        try {
+            keySet.add("foo");
+            fail("Should have thrown UnsupportedOperationException");
+        } catch (UnsupportedOperationException e) {
+            // Expected result
+        }
+        List mapKeys = new ArrayList();
+        mapKeys.add("foo");
+        mapKeys.add("bar");
+        try {
+            keySet.addAll(mapKeys);
+            fail("Should have thrown UnsupportedOperationException");
+        } catch (UnsupportedOperationException e) {
+            // Expected result
+        }
+        try {
+            keySet.clear();
+            fail("Should have thrown UnsupportedOperationException");
+        } catch (UnsupportedOperationException e) {
+            // Expected result
+        }
+        try {
+            Iterator iterator = keySet.iterator();
+            iterator.next();
+            iterator.remove();
+            fail("Should have thrown UnsupportedOperationException");
+        } catch (UnsupportedOperationException e) {
+            // Expected result
+        }
+        try {
+            keySet.remove(new TestEntry("foo", "bar"));
+            fail("Should have thrown UnsupportedOperationException");
+        } catch (UnsupportedOperationException e) {
+            // Expected result
+        }
+        try {
+            keySet.removeAll(mapKeys);
+            fail("Should have thrown UnsupportedOperationException");
+        } catch (UnsupportedOperationException e) {
+            // Expected result
+        }
+        try {
+            keySet.retainAll(mapKeys);
+            fail("Should have thrown UnsupportedOperationException");
+        } catch (UnsupportedOperationException e) {
+            // Expected result
+        }
+
+        // remove()
+        try {
+            map.remove("foo");
+            fail("Should have thrown UnsupportedOperationException");
+        } catch (UnsupportedOperationException e) {
+            // Expected result
+        }
+
+        // values()
+        Collection values = map.values();
+        try {
+            values.add("foo");
+            fail("Should have thrown UnsupportedOperationException");
+        } catch (UnsupportedOperationException e) {
+            // Expected result
+        }
+        List list = new ArrayList();
+        list.add("foo");
+        list.add("bar");
+        try {
+            values.addAll(list);
+            fail("Should have thrown UnsupportedOperationException");
+        } catch (UnsupportedOperationException e) {
+            // Expected result
+        }
+        try {
+            values.clear();
+            fail("Should have thrown UnsupportedOperationException");
+        } catch (UnsupportedOperationException e) {
+            // Expected result
+        }
+        try {
+            Iterator iterator = values.iterator();
+            iterator.next();
+            iterator.remove();
+            fail("Should have thrown UnsupportedOperationException");
+        } catch (UnsupportedOperationException e) {
+            // Expected result
+        }
+        try {
+            values.remove("foo");
+            fail("Should have thrown UnsupportedOperationException");
+        } catch (UnsupportedOperationException e) {
+            // Expected result
+        }
+        try {
+            values.removeAll(list);
+            fail("Should have thrown UnsupportedOperationException");
+        } catch (UnsupportedOperationException e) {
+            // Expected result
+        }
+        try {
+            values.retainAll(list);
+            fail("Should have thrown UnsupportedOperationException");
+        } catch (UnsupportedOperationException e) {
+            // Expected result
+        }
+
+    }
+
+    // Test ((Map) getRowData()).values()
+    public void testRowDataValues() throws Exception {
+        // Position to row 1 and retrieve the corresponding Map
+        model.setRowIndex(1);
+        assertTrue(model.isRowAvailable());
+        Object data = model.getRowData();
+        assertNotNull(data);
+        assertTrue(data instanceof Map);
+        Map map = (Map) data;
+        Collection values = map.values();
+
+        // Test positive results
+        assertTrue(values.contains(Boolean.TRUE));
+        assertTrue(values.contains(Boolean.FALSE));
+        assertTrue(values.contains(new Byte((byte) 1)));
+        assertTrue(values.contains(new Double((double) 100.0)));
+        assertTrue(values.contains(new Float((float) 10.0)));
+        assertTrue(values.contains(new Integer((int) 1000)));
+        assertTrue(values.contains(new Long((long) 10000)));
+        assertTrue(values.contains("This is string 1"));
+
+        // Test negative results
+        assertTrue(!values.contains("foo"));
+        assertTrue(!values.contains(new Integer(654321)));
+
+        // Test other methods
+        assertTrue(!values.isEmpty());
+    }
+
+    // ------------------------------------------------------- Protected Methods
+    @Override
+    protected BeanTestImpl data() throws Exception {
+        Object data = model.getRowData();
+        assertTrue(data instanceof Map);
+        BeanTestImpl bean = new BeanTestImpl();
+        Map map = (Map) data;
+
+        bean.setBooleanProperty(((Boolean) map.get("booleanProperty")).booleanValue());
+        bean.setBooleanSecond(((Boolean) map.get("booleanSecond")).booleanValue());
+        bean.setByteProperty(((Byte) map.get("byteProperty")).byteValue());
+        bean.setDoubleProperty(((Double) map.get("doubleProperty")).doubleValue());
+        bean.setFloatProperty(((Float) map.get("floatProperty")).floatValue());
+        bean.setIntProperty(((Integer) map.get("intProperty")).intValue());
+        bean.setLongProperty(((Long) map.get("longProperty")).longValue());
+        bean.setNullProperty((String) map.get("nullProperty"));
+        bean.setShortProperty(((Short) map.get("shortProperty")).shortValue());
+        bean.setStringProperty((String) map.get("stringProperty"));
+        bean.setWriteOnlyProperty((String) map.get("writeOnlyPropertyValue"));
+
+        return (bean);
+    }
+
+    class TestEntry implements Map.Entry {
+
+        public TestEntry(Object key, Object value) {
+            this.key = key;
+            this.value = value;
+        }
+
+        private Object key;
+        private Object value;
+
+        @Override
+        public Object getKey() {
+            return key;
+        }
+
+        @Override
+        public Object getValue() {
+            return value;
+        }
+
+        @Override
+        public Object setValue(Object value) {
+            Object previous = this.value;
+            this.value = value;
+            return previous;
+        }
+
+        @Override
+        public boolean equals(Object o) {
+            if (!(o instanceof Map.Entry)) {
+                return (false);
+            }
+            Map.Entry e = (Map.Entry) o;
+            return (key == null
+                    ? e.getKey() == null : key.equals(e.getKey()))
+                    && (value == null
+                    ? e.getValue() == null : value.equals(e.getValue()));
+        }
+    }
+}
diff --git a/test/unit/src/test/java/javax/faces/model/ScalarDataModelTestCase.java b/test/unit/src/test/java/javax/faces/model/ScalarDataModelTestCase.java
new file mode 100644
index 0000000..36fd6e2
--- /dev/null
+++ b/test/unit/src/test/java/javax/faces/model/ScalarDataModelTestCase.java
@@ -0,0 +1,80 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package javax.faces.model;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+/**
+ * <p>
+ * Unit tests for {@link ScalarDataModel}.</p>
+ */
+public class ScalarDataModelTestCase extends DataModelTestCaseBase {
+
+    // ------------------------------------------------------------ Constructors
+    /**
+     * Construct a new instance of this test case.
+     *
+     * @param name Name of the test case
+     */
+    public ScalarDataModelTestCase(String name) {
+        super(name);
+    }
+
+    // ------------------------------------------------------ Instance Variables
+    // ---------------------------------------------------- Overall Test Methods
+    // Set up instance variables required by this test case.
+    @Override
+    public void setUp() throws Exception {
+        beans = new BeanTestImpl[1];
+        beans[0] = new BeanTestImpl();
+        configure();
+        model = new ScalarDataModel<BeanTestImpl>(beans[0]);
+        super.setUp();
+    }
+
+    // Return the tests included in this test case.
+    public static Test suite() {
+        return (new TestSuite(ScalarDataModelTestCase.class));
+    }
+
+    // ------------------------------------------------- Individual Test Methods
+    // ------------------------------------------------------- Protected Methods
+}
diff --git a/test/unit/src/test/java/javax/faces/validator/DoubleRangeValidatorTestCase.java b/test/unit/src/test/java/javax/faces/validator/DoubleRangeValidatorTestCase.java
new file mode 100644
index 0000000..2113f41
--- /dev/null
+++ b/test/unit/src/test/java/javax/faces/validator/DoubleRangeValidatorTestCase.java
@@ -0,0 +1,145 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package javax.faces.validator;
+
+import java.util.Locale;
+import javax.faces.component.UIInput;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+/**
+ * <p>
+ * Unit tests for {@link DoubleRangeValidator}.</p>
+ */
+public class DoubleRangeValidatorTestCase extends ValidatorTestCase {
+
+    // ------------------------------------------------------------ Constructors
+    /**
+     * Construct a new instance of this test case.
+     *
+     * @param name Name of the test case
+     */
+    public DoubleRangeValidatorTestCase(String name) {
+        super(name);
+    }
+
+    // ---------------------------------------------------- Overall Test Methods
+    // Return the tests included in this test case.
+    public static Test suite() {
+        return (new TestSuite(DoubleRangeValidatorTestCase.class));
+    }
+
+    // ------------------------------------------------- Individual Test Methods
+    public void testLocaleHonored() {
+        DoubleRangeValidator validator = new DoubleRangeValidator();
+        validator.setMinimum(10.1);
+        validator.setMaximum(20.1);
+        boolean exceptionThrown = false;
+        UIInput component = new UIInput();
+        String message;
+        Locale.setDefault(Locale.US);
+        facesContext.getViewRoot().setLocale(Locale.US);
+
+        try {
+            validator.validate(facesContext, component, "5.1");
+            fail("Exception not thrown");
+        } catch (ValidatorException e) {
+            exceptionThrown = true;
+            message = e.getMessage();
+            assertTrue("message: \"" + message + "\" missing localized chars.",
+                    -1 != message.indexOf("10.1"));
+            assertTrue("message: \"" + message + "\" missing localized chars.",
+                    -1 != message.indexOf("20.1"));
+        }
+        assertTrue(exceptionThrown);
+
+        exceptionThrown = false;
+        Locale.setDefault(Locale.GERMAN);
+        facesContext.getViewRoot().setLocale(Locale.GERMAN);
+
+        try {
+            validator.validate(facesContext, component, "5");
+            fail("Exception not thrown");
+        } catch (ValidatorException e) {
+            exceptionThrown = true;
+            message = e.getMessage();
+            assertTrue("message: \"" + message + "\" missing localized chars.",
+                    -1 != message.indexOf("10,1"));
+            assertTrue("message: \"" + message + "\" missing localized chars.",
+                    -1 != message.indexOf("20,1"));
+        }
+        assertTrue(exceptionThrown);
+    }
+
+    public void testHashCode() {
+        DoubleRangeValidator validator1 = new DoubleRangeValidator();
+        DoubleRangeValidator validator2 = new DoubleRangeValidator();
+
+        validator1.setMinimum(10.0d);
+        validator1.setMaximum(15.1d);
+        validator2.setMinimum(10.0d);
+        validator2.setMaximum(15.1d);
+
+        assertTrue(validator1.hashCode() == validator2.hashCode());
+        assertTrue(validator1.hashCode() == validator2.hashCode());
+
+        validator2.setMaximum(15.2d);
+
+        assertTrue(validator1.hashCode() != validator2.hashCode());
+
+        validator1 = new DoubleRangeValidator();
+        validator2 = new DoubleRangeValidator();
+
+        validator1.setMinimum(10.0d);
+        validator2.setMinimum(10.0d);
+
+        assertTrue(validator1.hashCode() == validator2.hashCode());
+        assertTrue(validator1.hashCode() == validator2.hashCode());
+
+        validator1.setMinimum(11.0d);
+
+        assertTrue(validator1.hashCode() != validator2.hashCode());
+
+        validator1.setMinimum(10.0d);
+        validator1.setMaximum(10.1d);
+
+        assertTrue(validator1.hashCode() != validator2.hashCode());
+    }
+}
diff --git a/test/unit/src/test/java/javax/faces/validator/LengthValidatorTestCase.java b/test/unit/src/test/java/javax/faces/validator/LengthValidatorTestCase.java
new file mode 100644
index 0000000..50d8ab7
--- /dev/null
+++ b/test/unit/src/test/java/javax/faces/validator/LengthValidatorTestCase.java
@@ -0,0 +1,145 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package javax.faces.validator;
+
+import java.util.Locale;
+import javax.faces.component.UIInput;
+import static junit.framework.Assert.assertTrue;
+import static junit.framework.Assert.fail;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+/**
+ * <p>
+ * Unit tests for {@link LengthValidator}.</p>
+ */
+public class LengthValidatorTestCase extends ValidatorTestCase {
+
+    // ------------------------------------------------------------ Constructors
+    /**
+     * Construct a new instance of this test case.
+     *
+     * @param name Name of the test case
+     */
+    public LengthValidatorTestCase(String name) {
+        super(name);
+    }
+
+    // ---------------------------------------------------- Overall Test Methods
+    // Return the tests included in this test case.
+    public static Test suite() {
+        return (new TestSuite(LengthValidatorTestCase.class));
+    }
+
+    // ------------------------------------------------- Individual Test Methods
+    public void testLocaleHonored() {
+        LengthValidator validator = new LengthValidator();
+        validator.setMinimum(1000);
+        validator.setMaximum(2000);
+        boolean exceptionThrown = false;
+        UIInput component = new UIInput();
+        String message;
+        Locale.setDefault(Locale.US);
+        facesContext.getViewRoot().setLocale(Locale.US);
+
+        try {
+            validator.validate(facesContext, component,
+                    "Not at all long enough");
+            fail("Exception not thrown");
+        } catch (ValidatorException e) {
+            exceptionThrown = true;
+            message = e.getMessage();
+            assertTrue("message: \"" + message + "\" missing localized chars.",
+                    -1 != message.indexOf("1,000"));
+        }
+        assertTrue(exceptionThrown);
+
+        exceptionThrown = false;
+        Locale.setDefault(Locale.GERMAN);
+        facesContext.getViewRoot().setLocale(Locale.GERMAN);
+
+        try {
+            validator.validate(facesContext, component,
+                    "Still not long enough");
+            fail("Exception not thrown");
+        } catch (ValidatorException e) {
+            exceptionThrown = true;
+            message = e.getMessage();
+            assertTrue("message: \"" + message + "\" missing localized chars.",
+                    -1 != message.indexOf("1.000"));
+        }
+        assertTrue(exceptionThrown);
+    }
+
+    public void testHashCode() {
+        LengthValidator validator1 = new LengthValidator();
+        LengthValidator validator2 = new LengthValidator();
+
+        validator1.setMinimum(10);
+        validator1.setMaximum(15);
+        validator2.setMinimum(10);
+        validator2.setMaximum(15);
+
+        assertTrue(validator1.hashCode() == validator2.hashCode());
+        assertTrue(validator1.hashCode() == validator2.hashCode());
+
+        validator2.setMaximum(16);
+
+        assertTrue(validator1.hashCode() != validator2.hashCode());
+
+        validator1 = new LengthValidator();
+        validator2 = new LengthValidator();
+
+        validator1.setMinimum(10);
+        validator2.setMinimum(10);
+
+        assertTrue(validator1.hashCode() == validator2.hashCode());
+        assertTrue(validator1.hashCode() == validator2.hashCode());
+
+        validator1.setMinimum(11);
+
+        assertTrue(validator1.hashCode() != validator2.hashCode());
+
+        validator1.setMinimum(10);
+        validator1.setMaximum(10);
+
+        assertTrue(validator1.hashCode() != validator2.hashCode());
+    }
+}
diff --git a/test/unit/src/test/java/javax/faces/validator/LongRangeValidatorTestCase.java b/test/unit/src/test/java/javax/faces/validator/LongRangeValidatorTestCase.java
new file mode 100644
index 0000000..8a70c8d
--- /dev/null
+++ b/test/unit/src/test/java/javax/faces/validator/LongRangeValidatorTestCase.java
@@ -0,0 +1,147 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package javax.faces.validator;
+
+import java.util.Locale;
+import javax.faces.component.UIInput;
+import static junit.framework.Assert.assertTrue;
+import static junit.framework.Assert.fail;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+/**
+ * <p>
+ * Unit tests for {@link LongRangeValidator}.</p>
+ */
+public class LongRangeValidatorTestCase extends ValidatorTestCase {
+
+    // ------------------------------------------------------------ Constructors
+    /**
+     * Construct a new instance of this test case.
+     *
+     * @param name Name of the test case
+     */
+    public LongRangeValidatorTestCase(String name) {
+        super(name);
+    }
+
+    // ---------------------------------------------------- Overall Test Methods
+    // Return the tests included in this test case.
+    public static Test suite() {
+        return (new TestSuite(LongRangeValidatorTestCase.class));
+    }
+
+    // ------------------------------------------------- Individual Test Methods
+    public void testLocaleHonored() {
+        LongRangeValidator validator = new LongRangeValidator();
+        validator.setMinimum(10100);
+        validator.setMaximum(20100);
+        boolean exceptionThrown = false;
+        UIInput component = new UIInput();
+        String message;
+        Locale.setDefault(Locale.US);
+        facesContext.getViewRoot().setLocale(Locale.US);
+
+        try {
+            validator.validate(facesContext, component, "5100");
+            fail("Exception not thrown");
+        } catch (ValidatorException e) {
+            exceptionThrown = true;
+            message = e.getMessage();
+            assertTrue("message: \"" + message + "\" missing localized chars.",
+                    -1 != message.indexOf("10,100"));
+            assertTrue("message: \"" + message + "\" missing localized chars.",
+                    -1 != message.indexOf("20,100"));
+        }
+        assertTrue(exceptionThrown);
+
+        exceptionThrown = false;
+        Locale.setDefault(Locale.GERMAN);
+        facesContext.getViewRoot().setLocale(Locale.GERMAN);
+
+        try {
+            validator.validate(facesContext, component, "5100");
+            fail("Exception not thrown");
+        } catch (ValidatorException e) {
+            exceptionThrown = true;
+            message = e.getMessage();
+            assertTrue("message: \"" + message + "\" missing localized chars.",
+                    -1 != message.indexOf("10.100"));
+            assertTrue("message: \"" + message + "\" missing localized chars.",
+                    -1 != message.indexOf("20.100"));
+        }
+        assertTrue(exceptionThrown);
+    }
+
+    public void testHashCode() {
+        LongRangeValidator validator1 = new LongRangeValidator();
+        LongRangeValidator validator2 = new LongRangeValidator();
+
+        validator1.setMinimum(10l);
+        validator1.setMaximum(15l);
+        validator2.setMinimum(10l);
+        validator2.setMaximum(15l);
+
+        assertTrue(validator1.hashCode() == validator2.hashCode());
+        assertTrue(validator1.hashCode() == validator2.hashCode());
+
+        validator2.setMaximum(16l);
+
+        assertTrue(validator1.hashCode() != validator2.hashCode());
+
+        validator1 = new LongRangeValidator();
+        validator2 = new LongRangeValidator();
+
+        validator1.setMinimum(10l);
+        validator2.setMinimum(10l);
+
+        assertTrue(validator1.hashCode() == validator2.hashCode());
+        assertTrue(validator1.hashCode() == validator2.hashCode());
+
+        validator1.setMinimum(11l);
+
+        assertTrue(validator1.hashCode() != validator2.hashCode());
+
+        validator1.setMinimum(10l);
+        validator1.setMaximum(11l);
+
+        assertTrue(validator1.hashCode() != validator2.hashCode());
+    }
+}
diff --git a/test/unit/src/test/java/javax/faces/validator/RegexValidatorTestCase.java b/test/unit/src/test/java/javax/faces/validator/RegexValidatorTestCase.java
new file mode 100644
index 0000000..c034165
--- /dev/null
+++ b/test/unit/src/test/java/javax/faces/validator/RegexValidatorTestCase.java
@@ -0,0 +1,102 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package javax.faces.validator;
+
+import java.util.Locale;
+import javax.faces.component.UIInput;
+import static junit.framework.Assert.assertTrue;
+import static junit.framework.Assert.fail;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+/**
+ * <p>
+ * Unit tests for {@link RegexValidator}.</p>
+ */
+public class RegexValidatorTestCase extends ValidatorTestCase {
+
+    // ------------------------------------------------------------ Constructors
+    /**
+     * Construct a new instance of this test case.
+     *
+     * @param name Name of the test case
+     */
+    public RegexValidatorTestCase(String name) {
+        super(name);
+    }
+
+    // ---------------------------------------------------- Overall Test Methods
+    // Return the tests included in this test case.
+    public static Test suite() {
+        return (new TestSuite(RegexValidatorTestCase.class));
+    }
+
+    // ------------------------------------------------- Individual Test Methods
+    public void testPatternMatch() {
+        String patternStr = "t.*";
+        RegexValidator validator = new RegexValidator();
+        validator.setPattern(patternStr);
+        UIInput component = new UIInput();
+        String checkme = "test";
+        try {
+            validator.validate(facesContext, component, checkme);
+            assertTrue(true);
+        } catch (ValidatorException ve) {
+            fail("Exception thrown " + ve.getMessage());
+        }
+    }
+
+    public void testPatterMismatch() {
+        String patternStr = "t.*";
+        facesContext.getViewRoot().setLocale(Locale.US);
+        RegexValidator validator = new RegexValidator();
+        validator.setPattern(patternStr);
+        UIInput component = new UIInput();
+        String checkme = "jest";
+        try {
+            validator.validate(facesContext, component, checkme);
+            fail("Exception not thrown when tested " + checkme + " against " + patternStr);
+        } catch (ValidatorException ve) {
+            String detail = ve.getFacesMessage().getDetail();
+            System.out.println("Detail in test: " + detail);
+            assertTrue(detail.equalsIgnoreCase("Regex pattern of 't.*' not matched"));
+        }
+    }
+}
diff --git a/test/unit/src/test/java/javax/faces/validator/ValidatorTestCase.java b/test/unit/src/test/java/javax/faces/validator/ValidatorTestCase.java
new file mode 100644
index 0000000..1edd223
--- /dev/null
+++ b/test/unit/src/test/java/javax/faces/validator/ValidatorTestCase.java
@@ -0,0 +1,92 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package javax.faces.validator;
+
+import com.sun.faces.junit.JUnitFacesTestCaseBase;
+import javax.faces.FactoryFinder;
+import com.sun.faces.mock.MockRenderKit;
+import javax.faces.render.RenderKit;
+import javax.faces.render.RenderKitFactory;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import javax.faces.component.UIViewRoot;
+
+/**
+ * <p>
+ * Base unit tests for all {@link Validator} implementations.</p>
+ */
+public class ValidatorTestCase extends JUnitFacesTestCaseBase {
+
+    // ------------------------------------------------------------ Constructors
+    /**
+     * Construct a new instance of this test case.
+     *
+     * @param name Name of the test case
+     */
+    public ValidatorTestCase(String name) {
+        super(name);
+    }
+
+    // ---------------------------------------------------- Overall Test Methods
+    // Set up instance variables required by this test case.
+    @Override
+    public void setUp() throws Exception {
+        super.setUp();
+        UIViewRoot root = facesContext.getApplication().getViewHandler().createView(facesContext, null);
+        root.setViewId("/viewId");
+        facesContext.setViewRoot(root);
+        RenderKitFactory renderKitFactory = (RenderKitFactory) FactoryFinder.getFactory(FactoryFinder.RENDER_KIT_FACTORY);
+        RenderKit renderKit = new MockRenderKit();
+        try {
+            renderKitFactory.addRenderKit(RenderKitFactory.HTML_BASIC_RENDER_KIT,
+                    renderKit);
+        } catch (IllegalArgumentException e) {
+        }
+
+    }
+
+    // Return the tests included in this test case.
+    public static Test suite() {
+        return (new TestSuite(ValidatorTestCase.class));
+    }
+
+    public void testNoOp() {
+    }
+}
diff --git a/test/unit/src/test/java/javax/faces/webapp/AttributeTagTestCase.java b/test/unit/src/test/java/javax/faces/webapp/AttributeTagTestCase.java
new file mode 100644
index 0000000..ca8cff4
--- /dev/null
+++ b/test/unit/src/test/java/javax/faces/webapp/AttributeTagTestCase.java
@@ -0,0 +1,200 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package javax.faces.webapp;
+
+import javax.faces.component.UIComponent;
+import static junit.framework.Assert.assertEquals;
+import static junit.framework.Assert.assertNotNull;
+import static junit.framework.Assert.assertTrue;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+/**
+ * <p>
+ * Unit tests for <code>AttributeTag</code>.</p>
+ */
+public class AttributeTagTestCase extends TagTestCaseBase {
+
+    // ------------------------------------------------------ Instance Variables
+    protected UIComponentTag ctag = null; // Component tag
+    protected UIComponentTag rtag = null; // Root tag
+
+    // ------------------------------------------------------------ Constructors
+    /**
+     * Construct a new instance of this test case.
+     *
+     * @param name Name of the test case
+     */
+    public AttributeTagTestCase(String name) {
+        super(name);
+    }
+
+    // ---------------------------------------------------- Overall Test Methods
+    /**
+     * Set up our root and component tags.
+     * @throws java.lang.Exception
+     */
+    @Override
+    public void setUp() throws Exception {
+        super.setUp();
+
+        rtag = new TagTestImpl("ROOT", "root") {
+            @Override
+            protected void setProperties(UIComponent component) {
+            }
+        };
+        rtag.setPageContext(this.pageContext);
+        ctag = new OutputTagTestImpl();
+        ctag.setParent(this.rtag);
+        ctag.setPageContext(this.pageContext);
+        rtag.doStartTag();
+        ctag.doStartTag();
+    }
+
+    /**
+     * Return the tests included in this test suite.
+     * @return 
+     */
+    public static Test suite() {
+        return (new TestSuite(AttributeTagTestCase.class));
+    }
+
+    /**
+     * Clear our root and component tags.
+     * @throws java.lang.Exception
+     */
+    @Override
+    public void tearDown() throws Exception {
+        ctag.doEndTag();
+        rtag.doEndTag();
+
+        ctag = null;
+        rtag = null;
+
+        super.tearDown();
+    }
+
+    // ------------------------------------------------- Individual Test Methods
+    // Test literal name and literal value
+    public void testLiteralLiteral() throws Exception {
+        UIComponent component = ((UIComponentTag) ctag).getComponentInstance();
+        assertNotNull(component);
+        assertTrue(!component.getAttributes().containsKey("foo"));
+        AttributeTag tag = new AttributeTag();
+        tag.setName("foo");
+        tag.setValue("bar");
+        add(tag);
+        tag.doStartTag();
+        assertEquals("bar",
+                (String) component.getAttributes().get("foo"));
+        tag.doEndTag();
+    }
+
+    // Test literal name and expression value
+    public void testLiteralExpression() throws Exception {
+        UIComponent component = ((UIComponentTag) ctag).getComponentInstance();
+        assertNotNull(component);
+        assertTrue(!component.getAttributes().containsKey("foo"));
+        AttributeTag tag = new AttributeTag();
+        tag.setName("foo");
+        tag.setValue("#{barValue}");
+        add(tag);
+        request.setAttribute("barValue", "bar");
+        tag.doStartTag();
+        assertEquals("bar",
+                (String) component.getAttributes().get("foo"));
+        tag.doEndTag();
+    }
+
+    // Test expression name and literal value
+    public void testExpressionLiteral() throws Exception {
+        UIComponent component = ((UIComponentTag) ctag).getComponentInstance();
+        assertNotNull(component);
+        assertTrue(!component.getAttributes().containsKey("foo"));
+        AttributeTag tag = new AttributeTag();
+        tag.setName("#{fooValue}");
+        tag.setValue("bar");
+        add(tag);
+        request.setAttribute("fooValue", "foo");
+        tag.doStartTag();
+        assertEquals("bar",
+                (String) component.getAttributes().get("foo"));
+        tag.doEndTag();
+    }
+
+    // Test expression name and expression value
+    public void testExpressionExpression() throws Exception {
+        UIComponent component = ((UIComponentTag) ctag).getComponentInstance();
+        assertNotNull(component);
+        assertTrue(!component.getAttributes().containsKey("foo"));
+        AttributeTag tag = new AttributeTag();
+        tag.setName("#{fooValue}");
+        tag.setValue("#{barValue}");
+        add(tag);
+        request.setAttribute("fooValue", "foo");
+        request.setAttribute("barValue", "bar");
+        tag.doStartTag();
+        assertEquals("bar",
+                (String) component.getAttributes().get("foo"));
+        tag.doEndTag();
+    }
+
+    // Test pre-existing attribute
+    public void testPreExisting() throws Exception {
+        UIComponent component = ((UIComponentTag) ctag).getComponentInstance();
+        assertNotNull(component);
+        component.getAttributes().put("foo", "bap");
+        AttributeTag tag = new AttributeTag();
+        tag.setName("foo");
+        tag.setValue("bar");
+        add(tag);
+        tag.doStartTag();
+        assertEquals("bap",
+                (String) component.getAttributes().get("foo"));
+        tag.doEndTag();
+    }
+
+    // ------------------------------------------------------- Protected Methods
+    // Add the specified AttributeTag to our component tag
+    protected void add(AttributeTag tag) {
+        tag.setParent(root);
+        tag.setPageContext(this.pageContext);
+    }
+}
diff --git a/test/unit/src/test/java/javax/faces/webapp/ComponentTestImpl.java b/test/unit/src/test/java/javax/faces/webapp/ComponentTestImpl.java
new file mode 100644
index 0000000..dae330c
--- /dev/null
+++ b/test/unit/src/test/java/javax/faces/webapp/ComponentTestImpl.java
@@ -0,0 +1,126 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package javax.faces.webapp;
+
+import java.io.IOException;
+import javax.faces.component.UIComponentBase;
+import javax.faces.context.FacesContext;
+import javax.faces.context.ResponseWriter;
+import javax.faces.el.ValueBinding;
+
+// Test UIComponent Class
+public class ComponentTestImpl extends UIComponentBase {
+
+    public ComponentTestImpl() {
+        super();
+    }
+
+    public ComponentTestImpl(String id) {
+        super();
+        setId(id);
+    }
+
+    @Override
+    public String getFamily() {
+        return ("Test");
+    }
+
+    private String label = null;
+
+    public String getLabel() {
+        if (this.label != null) {
+            return (this.label);
+        }
+        ValueBinding vb = getValueBinding("label");
+        if (vb != null) {
+            return ((String) vb.getValue(getFacesContext()));
+        } else {
+            return (null);
+        }
+    }
+
+    public void setLabel(String label) {
+        this.label = label;
+    }
+
+    private boolean rendersChildren = false;
+
+    @Override
+    public boolean getRendersChildren() {
+        return (this.rendersChildren);
+    }
+
+    public void setRendersChildren(boolean rendersChildren) {
+        this.rendersChildren = rendersChildren;
+    }
+
+    @Override
+    public void encodeBegin(FacesContext context) throws IOException {
+        if (!isRendered()) {
+            return;
+        }
+        ResponseWriter writer = context.getResponseWriter();
+        writer.write("/b");
+        String id = getId();
+        if (id != null) {
+            writer.write(id);
+        }
+    }
+
+    @Override
+    public void encodeChildren(FacesContext context) throws IOException {
+        if (isRendered()) {
+            super.encodeChildren(context);
+        }
+    }
+
+    @Override
+    public void encodeEnd(FacesContext context) throws IOException {
+        if (!isRendered()) {
+            return;
+        }
+        ResponseWriter writer = context.getResponseWriter();
+        writer.write("/e");
+        String id = getId();
+        if (id != null) {
+            writer.write(id);
+        }
+    }
+}
diff --git a/test/unit/src/test/java/javax/faces/webapp/ConfigAttribute.java b/test/unit/src/test/java/javax/faces/webapp/ConfigAttribute.java
new file mode 100644
index 0000000..cdd893b
--- /dev/null
+++ b/test/unit/src/test/java/javax/faces/webapp/ConfigAttribute.java
@@ -0,0 +1,67 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package javax.faces.webapp;
+
+/**
+ * <p>
+ * Config Bean for an Attribute.</p>
+ */
+public class ConfigAttribute extends ConfigFeature {
+
+    private String attributeClass;
+
+    public String getAttributeClass() {
+        return (this.attributeClass);
+    }
+
+    public void setAttributeClass(String attributeClass) {
+        this.attributeClass = attributeClass;
+    }
+
+    private String attributeName;
+
+    public String getAttributeName() {
+        return (this.attributeName);
+    }
+
+    public void setAttributeName(String attributeName) {
+        this.attributeName = attributeName;
+    }
+}
diff --git a/test/unit/src/test/java/javax/faces/webapp/ConfigBase.java b/test/unit/src/test/java/javax/faces/webapp/ConfigBase.java
new file mode 100644
index 0000000..2e2d653
--- /dev/null
+++ b/test/unit/src/test/java/javax/faces/webapp/ConfigBase.java
@@ -0,0 +1,146 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package javax.faces.webapp;
+
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * <p>
+ * Base bean for parsing configuration information.</p>
+ */
+public class ConfigBase {
+
+    // ---------------------------------------------------------- <application>
+    private String actionListener = null;
+
+    public String getActionListener() {
+        return (this.actionListener);
+    }
+
+    public void setActionListener(String actionListener) {
+        this.actionListener = actionListener;
+    }
+
+    private String navigationHandler = null;
+
+    public String getNavigationHandler() {
+        return (this.navigationHandler);
+    }
+
+    public void setNavigationHandler(String navigationHandler) {
+        this.navigationHandler = navigationHandler;
+    }
+
+    private String propertyResolver = null;
+
+    public String getPropertyResolver() {
+        return (this.propertyResolver);
+    }
+
+    public void setPropertyResolver(String propertyResolver) {
+        this.propertyResolver = propertyResolver;
+    }
+
+    private String variableResolver = null;
+
+    public String getVariableResolver() {
+        return (this.variableResolver);
+    }
+
+    public void setVariableResolver(String variableResolver) {
+        this.variableResolver = variableResolver;
+    }
+
+    // ------------------------------------------------------------ <component>
+    private Map components = null;
+
+    public void addComponent(ConfigComponent component) {
+        if (components == null) {
+            components = new HashMap();
+        }
+        components.put(component.getComponentType(), component);
+    }
+
+    public Map getComponents() {
+        if (components == null) {
+            return (Collections.EMPTY_MAP);
+        } else {
+            return (this.components);
+        }
+    }
+
+    // ------------------------------------------------------------ <converter>
+    private Map converters = null;
+
+    public void addConverter(ConfigConverter converter) {
+        if (converters == null) {
+            converters = new HashMap();
+        }
+        converters.put(converter.getConverterId(), converter);
+    }
+
+    public Map getConverters() {
+        if (converters == null) {
+            return (Collections.EMPTY_MAP);
+        } else {
+            return (this.converters);
+        }
+    }
+
+    // ------------------------------------------------------------ <validator>
+    private Map validators = null;
+
+    public void addValidator(ConfigValidator validator) {
+        if (validators == null) {
+            validators = new HashMap();
+        }
+        validators.put(validator.getValidatorId(), validator);
+    }
+
+    public Map getValidators() {
+        if (validators == null) {
+            return (Collections.EMPTY_MAP);
+        } else {
+            return (this.validators);
+        }
+    }
+}
diff --git a/test/unit/src/test/java/javax/faces/webapp/ConfigComponent.java b/test/unit/src/test/java/javax/faces/webapp/ConfigComponent.java
new file mode 100644
index 0000000..fdaff54
--- /dev/null
+++ b/test/unit/src/test/java/javax/faces/webapp/ConfigComponent.java
@@ -0,0 +1,67 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package javax.faces.webapp;
+
+/**
+ * <p>
+ * Config Bean for an Component.</p>
+ */
+public class ConfigComponent extends ConfigFeature {
+
+    private String componentClass;
+
+    public String getComponentClass() {
+        return (this.componentClass);
+    }
+
+    public void setComponentClass(String componentClass) {
+        this.componentClass = componentClass;
+    }
+
+    private String componentType;
+
+    public String getComponentType() {
+        return (this.componentType);
+    }
+
+    public void setComponentType(String componentType) {
+        this.componentType = componentType;
+    }
+}
diff --git a/test/unit/src/test/java/javax/faces/webapp/ConfigConverter.java b/test/unit/src/test/java/javax/faces/webapp/ConfigConverter.java
new file mode 100644
index 0000000..d3d8bc5
--- /dev/null
+++ b/test/unit/src/test/java/javax/faces/webapp/ConfigConverter.java
@@ -0,0 +1,67 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package javax.faces.webapp;
+
+/**
+ * <p>
+ * Config Bean for a Converter.</p>
+ */
+public class ConfigConverter extends ConfigFeature {
+
+    private String converterId;
+
+    public String getConverterId() {
+        return (this.converterId);
+    }
+
+    public void setConverterId(String converterId) {
+        this.converterId = converterId;
+    }
+
+    private String converterClass;
+
+    public String getConverterClass() {
+        return (this.converterClass);
+    }
+
+    public void setConverterClass(String converterClass) {
+        this.converterClass = converterClass;
+    }
+}
diff --git a/test/unit/src/test/java/javax/faces/webapp/ConfigFeature.java b/test/unit/src/test/java/javax/faces/webapp/ConfigFeature.java
new file mode 100644
index 0000000..321efb2
--- /dev/null
+++ b/test/unit/src/test/java/javax/faces/webapp/ConfigFeature.java
@@ -0,0 +1,125 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package javax.faces.webapp;
+
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * <p>
+ * Base bean for configuration beans that have common feature elements.</p>
+ */
+public abstract class ConfigFeature {
+
+    private Map attributes = null;
+
+    public void addAttribute(ConfigAttribute attribute) {
+        if (attributes == null) {
+            attributes = new HashMap();
+        }
+        attributes.put(attribute.getAttributeName(), attribute);
+    }
+
+    public Map getAttributes() {
+        if (attributes == null) {
+            return (Collections.EMPTY_MAP);
+        } else {
+            return (attributes);
+        }
+    }
+
+    private String description;
+
+    public String getDescription() {
+        return (this.description);
+    }
+
+    public void setDescription(String description) {
+        this.description = description;
+    }
+
+    private String displayName;
+
+    public String getDisplayName() {
+        return (this.displayName);
+    }
+
+    public void setDisplayName(String displayName) {
+        this.displayName = displayName;
+    }
+
+    private String largeIcon;
+
+    public String getLargeIcon() {
+        return (this.largeIcon);
+    }
+
+    public void setLargeIcon(String largeIcon) {
+        this.largeIcon = largeIcon;
+    }
+
+    private Map properties = null;
+
+    public void addProperty(ConfigProperty property) {
+        if (properties == null) {
+            properties = new HashMap();
+        }
+        properties.put(property.getPropertyName(), property);
+    }
+
+    public Map getProperties() {
+        if (properties == null) {
+            return (Collections.EMPTY_MAP);
+        } else {
+            return (properties);
+        }
+    }
+
+    private String smallIcon;
+
+    public String getSmallIcon() {
+        return (this.smallIcon);
+    }
+
+    public void setSmallIcon(String smallIcon) {
+        this.smallIcon = smallIcon;
+    }
+}
diff --git a/test/unit/src/test/java/javax/faces/webapp/ConfigFileTestCase.java b/test/unit/src/test/java/javax/faces/webapp/ConfigFileTestCase.java
new file mode 100644
index 0000000..f4daf82
--- /dev/null
+++ b/test/unit/src/test/java/javax/faces/webapp/ConfigFileTestCase.java
@@ -0,0 +1,414 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package javax.faces.webapp;
+
+import java.io.File;
+import java.io.InputStream;
+import java.net.URL;
+import java.util.Map;
+import junit.framework.TestCase;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import org.apache.commons.digester.Digester;
+import org.xml.sax.InputSource;
+import com.sun.faces.config.DigesterFactory;
+import static junit.framework.Assert.assertEquals;
+import static junit.framework.Assert.assertNotNull;
+import static junit.framework.Assert.assertNull;
+
+/**
+ * <p>
+ * Unit tests for Configuration File processing.</p>
+ */
+public class ConfigFileTestCase extends TestCase {
+
+    // The public identifier of our DTD
+    protected String CONFIG_DTD_PUBLIC_ID
+            = "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.0//EN";
+
+    // ----------------------------------------------------- Instance Variables
+    /**
+     * The Digester instance we will use to parse configuration files.
+     */
+    protected Digester digester = null;
+
+    // ----------------------------------------------------------- Constructors
+    /**
+     * Construct a new instance of this test case.
+     *
+     * @param name Name of the test case
+     */
+    public ConfigFileTestCase(String name) {
+        super(name);
+    }
+
+    // --------------------------------------------------- Overall Test Methods
+    /**
+     * Set up instance variables required by this test case.
+     *
+     * @throws java.lang.Exception
+     */
+    @Override
+    public void setUp() throws Exception {
+        digester = createDigester();
+        configureRules(digester);
+    }
+
+    /**
+     * Return the tests included in this test suite.
+     *
+     * @return
+     */
+    public static Test suite() {
+        return (new TestSuite(ConfigFileTestCase.class));
+    }
+
+    // ------------------------------------------------ Individual Test Methods
+    // Test parsing an empty configuration file
+    public void testEmpty() throws Exception {
+        ConfigBase base
+                = parseConfig(relativeURL("src/test/java/javax/faces/webapp/config-file-0.xml"));
+        assertNotNull(base);
+    }
+
+    // Test parsing a full configuration file
+    public void testFull() throws Exception {
+        // Retrieve entire configuration metadata instance
+        ConfigBase base
+                = parseConfig(relativeURL("src/test/java/javax/faces/webapp/config-file-1.xml"));
+        assertNotNull(base);
+
+        // <application>
+        assertEquals("com.mycompany.MyActionListener",
+                base.getActionListener());
+        assertEquals("com.mycompany.MyNavigationHandler",
+                base.getNavigationHandler());
+        assertEquals("com.mycompany.MyPropertyResolver",
+                base.getPropertyResolver());
+        assertEquals("com.mycompany.MyVariableResolver",
+                base.getVariableResolver());
+
+        // <component>
+        Map components = base.getComponents();
+        assertNotNull(components);
+        ConfigComponent ccomp1 = (ConfigComponent) components.get("Command");
+        assertNotNull(ccomp1);
+        assertEquals("User Interface Command Component",
+                ccomp1.getDescription());
+        assertEquals("User Interface Command",
+                ccomp1.getDisplayName());
+        assertEquals("Command",
+                ccomp1.getComponentType());
+        assertEquals("javax.faces.component.UICommand",
+                ccomp1.getComponentClass());
+        assertNull(ccomp1.getLargeIcon());
+        assertNull(ccomp1.getSmallIcon());
+        assertEquals(0, ccomp1.getAttributes().size());
+        assertEquals(0, ccomp1.getProperties().size());
+
+        // <converter>
+        Map converters = base.getConverters();
+        assertNotNull(converters);
+        ConfigConverter cc1 = (ConfigConverter) converters.get("First");
+        assertNotNull(cc1);
+        assertEquals("First Converter Description",
+                cc1.getDescription());
+        assertEquals("First Converter Display Name",
+                cc1.getDisplayName());
+        assertEquals("firstConverter.gif",
+                cc1.getLargeIcon());
+        assertEquals("firstConverter.jpg",
+                cc1.getSmallIcon());
+        assertEquals("First",
+                cc1.getConverterId());
+        assertEquals("com.mycompany.MyFirstConverter",
+                cc1.getConverterClass());
+        assertEquals(1, cc1.getAttributes().size());
+        ConfigAttribute cc1a1
+                = (ConfigAttribute) cc1.getAttributes().get("attr1");
+        assertNotNull(cc1a1);
+        assertEquals("First Converter Attribute 1 Description",
+                cc1a1.getDescription());
+        assertEquals("First Converter Attribute 1 Display Name",
+                cc1a1.getDisplayName());
+        assertNull(cc1a1.getLargeIcon());
+        assertNull(cc1a1.getSmallIcon());
+        assertEquals("attr1",
+                cc1a1.getAttributeName());
+        assertEquals("java.lang.String",
+                cc1a1.getAttributeClass());
+        assertEquals(0, cc1.getProperties().size());
+        ConfigConverter cc2 = (ConfigConverter) converters.get("Second");
+        assertNotNull(cc2);
+        assertEquals("Second Converter Description",
+                cc2.getDescription());
+        assertEquals("Second Converter Display Name",
+                cc2.getDisplayName());
+        assertEquals("secondConverter.gif",
+                cc2.getLargeIcon());
+        assertEquals("secondConverter.jpg",
+                cc2.getSmallIcon());
+        assertEquals("Second",
+                cc2.getConverterId());
+        assertEquals("com.mycompany.MySecondConverter",
+                cc2.getConverterClass());
+        assertEquals(0, cc2.getAttributes().size());
+        assertEquals(1, cc2.getProperties().size());
+        ConfigProperty cc2p1
+                = (ConfigProperty) cc2.getProperties().get("prop1");
+        assertNotNull(cc2p1);
+        assertEquals("Second Converter Property 1 Description",
+                cc2p1.getDescription());
+        assertEquals("Second Converter Property 1 Display Name",
+                cc2p1.getDisplayName());
+        assertNull(cc2p1.getLargeIcon());
+        assertNull(cc2p1.getSmallIcon());
+        assertEquals("prop1",
+                cc2p1.getPropertyName());
+        assertEquals("java.lang.String",
+                cc2p1.getPropertyClass());
+
+        // <validator>
+        Map validators = base.getValidators();
+        assertNotNull(validators);
+        ConfigValidator cv1 = (ConfigValidator) validators.get("First");
+        assertNotNull(cv1);
+        assertEquals("First Validator Description",
+                cv1.getDescription());
+        assertEquals("First Validator Display Name",
+                cv1.getDisplayName());
+        assertEquals("firstValidator.gif",
+                cv1.getLargeIcon());
+        assertEquals("firstValidator.jpg",
+                cv1.getSmallIcon());
+        assertEquals("First",
+                cv1.getValidatorId());
+        assertEquals("com.mycompany.MyFirstValidator",
+                cv1.getValidatorClass());
+        assertEquals(1, cv1.getAttributes().size());
+        ConfigAttribute cv1a1
+                = (ConfigAttribute) cv1.getAttributes().get("attr1");
+        assertNotNull(cv1a1);
+        assertEquals("First Validator Attribute 1 Description",
+                cv1a1.getDescription());
+        assertEquals("First Validator Attribute 1 Display Name",
+                cv1a1.getDisplayName());
+        assertNull(cv1a1.getLargeIcon());
+        assertNull(cv1a1.getSmallIcon());
+        assertEquals("attr1",
+                cv1a1.getAttributeName());
+        assertEquals("java.lang.String",
+                cv1a1.getAttributeClass());
+        assertEquals(0, cv1.getProperties().size());
+        ConfigValidator cv2 = (ConfigValidator) validators.get("Second");
+        assertNotNull(cv2);
+        assertEquals("Second Validator Description",
+                cv2.getDescription());
+        assertEquals("Second Validator Display Name",
+                cv2.getDisplayName());
+        assertEquals("secondValidator.gif",
+                cv2.getLargeIcon());
+        assertEquals("secondValidator.jpg",
+                cv2.getSmallIcon());
+        assertEquals("Second",
+                cv2.getValidatorId());
+        assertEquals("com.mycompany.MySecondValidator",
+                cv2.getValidatorClass());
+        assertEquals(0, cv2.getAttributes().size());
+        assertEquals(1, cv2.getProperties().size());
+        ConfigProperty cv2p1
+                = (ConfigProperty) cv2.getProperties().get("prop1");
+        assertNotNull(cv2p1);
+        assertEquals("Second Validator Property 1 Description",
+                cv2p1.getDescription());
+        assertEquals("Second Validator Property 1 Display Name",
+                cv2p1.getDisplayName());
+        assertNull(cv2p1.getLargeIcon());
+        assertNull(cv2p1.getSmallIcon());
+        assertEquals("prop1",
+                cv2p1.getPropertyName());
+        assertEquals("java.lang.String",
+                cv2p1.getPropertyClass());
+    }
+
+    // Test a pristine Digester instance
+    public void testPristine() {
+    }
+
+    // ------------------------------------------------------ Protected Methods
+    // Create a Digester instance with no rules yet
+    protected Digester createDigester() throws Exception {
+        digester = DigesterFactory.newInstance(true).createDigester();
+        return (digester);
+    }
+
+    // Configure the matching rules for the specified Digester instance
+    // Rules assume that a ConfigBase bean is pushed on the stack first
+    protected void configureRules(Digester digester) {
+        configureRulesApplication(digester);
+        configureRulesConverter(digester);
+        configureRulesComponent(digester);
+        configureRulesValidator(digester);
+    }
+
+    // Configure the rules for an <application> element
+    protected void configureRulesApplication(Digester digester) {
+        digester.addCallMethod("faces-config/application/action-listener",
+                "setActionListener", 0);
+        digester.addCallMethod("faces-config/application/navigation-handler",
+                "setNavigationHandler", 0);
+        digester.addCallMethod("faces-config/application/property-resolver",
+                "setPropertyResolver", 0);
+        digester.addCallMethod("faces-config/application/variable-resolver",
+                "setVariableResolver", 0);
+    }
+
+    // Configure the rules for a <attribute> element
+    protected void configureRulesAttribute(Digester digester, String prefix) {
+        digester.addObjectCreate(prefix,
+                "javax.faces.webapp.ConfigAttribute");
+        digester.addSetNext(prefix,
+                "addAttribute",
+                "javax.faces.webapp.ConfigAttribute");
+        configureRulesFeature(digester, prefix);
+        digester.addCallMethod(prefix + "/attribute-name",
+                "setAttributeName", 0);
+        digester.addCallMethod(prefix + "/attribute-class",
+                "setAttributeClass", 0);
+    }
+
+    // Configure the rules for a <component> element
+    protected void configureRulesComponent(Digester digester) {
+        String prefix = "faces-config/component";
+
+        digester.addObjectCreate(prefix,
+                "javax.faces.webapp.ConfigComponent");
+        digester.addSetNext(prefix,
+                "addComponent",
+                "javax.faces.webapp.ConfigComponent");
+        configureRulesFeature(digester, prefix);
+        digester.addCallMethod(prefix + "/component-type",
+                "setComponentType", 0);
+        digester.addCallMethod(prefix + "/component-class",
+                "setComponentClass", 0);
+        configureRulesAttribute(digester, prefix + "/attribute");
+        configureRulesProperty(digester, prefix + "/property");
+    }
+
+    // Configure the rules for a <converter> element
+    protected void configureRulesConverter(Digester digester) {
+        String prefix = "faces-config/converter";
+
+        digester.addObjectCreate(prefix,
+                "javax.faces.webapp.ConfigConverter");
+        digester.addSetNext(prefix,
+                "addConverter",
+                "javax.faces.webapp.ConfigConverter");
+        configureRulesFeature(digester, prefix);
+        digester.addCallMethod(prefix + "/converter-id",
+                "setConverterId", 0);
+        digester.addCallMethod(prefix + "/converter-class",
+                "setConverterClass", 0);
+        configureRulesAttribute(digester, prefix + "/attribute");
+        configureRulesProperty(digester, prefix + "/property");
+    }
+
+    // Configure the generic feature rules for the specified prefix
+    protected void configureRulesFeature(Digester digester, String prefix) {
+        digester.addCallMethod(prefix + "/description",
+                "setDescription", 0);
+        digester.addCallMethod(prefix + "/display-name",
+                "setDisplayName", 0);
+        digester.addCallMethod(prefix + "/icon/large-icon",
+                "setLargeIcon", 0);
+        digester.addCallMethod(prefix + "/icon/small-icon",
+                "setSmallIcon", 0);
+    }
+
+    // Configure the rules for a <property> element
+    protected void configureRulesProperty(Digester digester, String prefix) {
+        digester.addObjectCreate(prefix,
+                "javax.faces.webapp.ConfigProperty");
+        digester.addSetNext(prefix,
+                "addProperty",
+                "javax.faces.webapp.ConfigProperty");
+        configureRulesFeature(digester, prefix);
+        digester.addCallMethod(prefix + "/property-name",
+                "setPropertyName", 0);
+        digester.addCallMethod(prefix + "/property-class",
+                "setPropertyClass", 0);
+    }
+
+    // Configure the rules for a <validator> element
+    protected void configureRulesValidator(Digester digester) {
+        String prefix = "faces-config/validator";
+
+        digester.addObjectCreate(prefix,
+                "javax.faces.webapp.ConfigValidator");
+        digester.addSetNext(prefix,
+                "addValidator",
+                "javax.faces.webapp.ConfigValidator");
+        configureRulesFeature(digester, prefix);
+        digester.addCallMethod(prefix + "/validator-id",
+                "setValidatorId", 0);
+        digester.addCallMethod(prefix + "/validator-class",
+                "setValidatorClass", 0);
+        configureRulesAttribute(digester, prefix + "/attribute");
+        configureRulesProperty(digester, prefix + "/property");
+    }
+
+    // Parse the configuration file at the specified URL
+    protected ConfigBase parseConfig(URL config) throws Exception {
+        digester.clear();
+        digester.push(new ConfigBase());
+        InputSource iso = new InputSource(config.toExternalForm());
+        InputStream ist = config.openStream();
+        iso.setByteStream(ist);
+        ConfigBase base = (ConfigBase) digester.parse(iso);
+        ist.close();
+        return (base);
+    }
+
+    // Return the URL of the specified path, relative to our base directory
+    protected URL relativeURL(String relativePath) throws Exception {
+        File file = new File(System.getProperty("base.dir"), relativePath);
+        return (file.toURL());
+    }
+}
diff --git a/test/unit/src/test/java/javax/faces/webapp/ConfigProperty.java b/test/unit/src/test/java/javax/faces/webapp/ConfigProperty.java
new file mode 100644
index 0000000..7e107e4
--- /dev/null
+++ b/test/unit/src/test/java/javax/faces/webapp/ConfigProperty.java
@@ -0,0 +1,67 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package javax.faces.webapp;
+
+/**
+ * <p>
+ * Config Bean for an Property.</p>
+ */
+public class ConfigProperty extends ConfigFeature {
+
+    private String propertyClass;
+
+    public String getPropertyClass() {
+        return (this.propertyClass);
+    }
+
+    public void setPropertyClass(String propertyClass) {
+        this.propertyClass = propertyClass;
+    }
+
+    private String propertyName;
+
+    public String getPropertyName() {
+        return (this.propertyName);
+    }
+
+    public void setPropertyName(String propertyName) {
+        this.propertyName = propertyName;
+    }
+}
diff --git a/test/unit/src/test/java/javax/faces/webapp/ConfigValidator.java b/test/unit/src/test/java/javax/faces/webapp/ConfigValidator.java
new file mode 100644
index 0000000..de97538
--- /dev/null
+++ b/test/unit/src/test/java/javax/faces/webapp/ConfigValidator.java
@@ -0,0 +1,67 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package javax.faces.webapp;
+
+/**
+ * <p>
+ * Config Bean for a Validator.</p>
+ */
+public class ConfigValidator extends ConfigFeature {
+
+    private String validatorId;
+
+    public String getValidatorId() {
+        return (this.validatorId);
+    }
+
+    public void setValidatorId(String validatorId) {
+        this.validatorId = validatorId;
+    }
+
+    private String validatorClass;
+
+    public String getValidatorClass() {
+        return (this.validatorClass);
+    }
+
+    public void setValidatorClass(String validatorClass) {
+        this.validatorClass = validatorClass;
+    }
+}
diff --git a/test/unit/src/test/java/javax/faces/webapp/ConverterTagTestCase.java b/test/unit/src/test/java/javax/faces/webapp/ConverterTagTestCase.java
new file mode 100644
index 0000000..0cfdd80
--- /dev/null
+++ b/test/unit/src/test/java/javax/faces/webapp/ConverterTagTestCase.java
@@ -0,0 +1,156 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package javax.faces.webapp;
+
+import javax.faces.component.ValueHolder;
+import javax.faces.component.UIComponent;
+import javax.faces.convert.Converter;
+import javax.faces.convert.IntegerConverter;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import static junit.framework.Assert.assertNotNull;
+import static junit.framework.Assert.assertNull;
+import static junit.framework.Assert.assertTrue;
+
+/**
+ * <p>
+ * Unit tests for <code>ConverterTag</code>.</p>
+ */
+public class ConverterTagTestCase extends TagTestCaseBase {
+
+    // ------------------------------------------------------ Instance Variables
+    protected UIComponentTag ctag = null; // Component tag
+    protected UIComponentTag rtag = null; // Root tag
+
+    // ------------------------------------------------------------ Constructors
+    /**
+     * Construct a new instance of this test case.
+     *
+     * @param name Name of the test case
+     */
+    public ConverterTagTestCase(String name) {
+        super(name);
+    }
+
+    // ---------------------------------------------------- Overall Test Methods
+    /**
+     * Set up our root and component tags.
+     * @throws java.lang.Exception
+     */
+    @Override
+    public void setUp() throws Exception {
+        super.setUp();
+
+        rtag = new TagTestImpl("ROOT", "root") {
+            @Override
+            protected void setProperties(UIComponent component) {
+            }
+        };
+        rtag.setPageContext(this.pageContext);
+        ctag = new OutputTagTestImpl();
+        ctag.setParent(this.rtag);
+        ctag.setPageContext(this.pageContext);
+
+        rtag.doStartTag();
+        ctag.doStartTag();
+    }
+
+    /**
+     * Return the tests include
+     * @return d in this test suite.
+     */
+    public static Test suite() {
+        return (new TestSuite(ConverterTagTestCase.class));
+    }
+
+    /**
+     * Clear our root and component tags.
+     * @throws java.lang.Exception
+     */
+    @Override
+    public void tearDown() throws Exception {
+        ctag.doEndTag();
+        rtag.doEndTag();
+
+        ctag = null;
+        rtag = null;
+
+        super.tearDown();
+    }
+
+    // ------------------------------------------------- Individual Test Methods
+    // Test literal converter id
+    public void testLiteral() throws Exception {
+        UIComponent component = ctag.getComponentInstance();
+        assertNotNull(component);
+        assertNull(((ValueHolder) component).getConverter());
+        ConverterTag tag = new ConverterTag();
+        tag.setConverterId("Integer");
+        add(tag);
+        tag.doStartTag();
+        Converter converter = ((ValueHolder) component).getConverter();
+        assertNotNull(converter);
+        assertTrue(converter instanceof IntegerConverter);
+        tag.doEndTag();
+    }
+
+    // Test expression converter id
+    public void testExpression() throws Exception {
+        UIComponent component = ctag.getComponentInstance();
+        assertNotNull(component);
+        assertNull(((ValueHolder) component).getConverter());
+        ConverterTag tag = new ConverterTag();
+        tag.setConverterId("#{foo}");
+        add(tag);
+        request.setAttribute("foo", "Integer");
+        tag.doStartTag();
+        Converter converter = ((ValueHolder) component).getConverter();
+        assertNotNull(converter);
+        assertTrue(converter instanceof IntegerConverter);
+        tag.doEndTag();
+    }
+
+    // ------------------------------------------------------- Protected Methods
+    // Add the specified ConverterTag to our component tag
+    protected void add(ConverterTag tag) {
+        tag.setParent(ctag);
+        tag.setPageContext(this.pageContext);
+    }
+}
diff --git a/test/unit/src/test/java/javax/faces/webapp/FacesServletTestCase.java b/test/unit/src/test/java/javax/faces/webapp/FacesServletTestCase.java
new file mode 100644
index 0000000..0afa0c0
--- /dev/null
+++ b/test/unit/src/test/java/javax/faces/webapp/FacesServletTestCase.java
@@ -0,0 +1,233 @@
+
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package javax.faces.webapp;
+
+import com.sun.faces.junit.JUnitFacesTestCaseBase;
+import com.sun.faces.mock.MockRenderKit;
+import javax.faces.FactoryFinder;
+import javax.faces.component.UIViewRoot;
+import javax.faces.render.RenderKit;
+import javax.faces.render.RenderKitFactory;
+import javax.servlet.http.HttpServletResponse;
+import static junit.framework.Assert.assertEquals;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+public class FacesServletTestCase extends JUnitFacesTestCaseBase {
+
+    // this is private in FacesServlet to not break backwards compatibility
+    private static final String ALLOWED_HTTP_METHODS_ATTR_COPY
+            = "com.sun.faces.allowedHttpMethods";
+
+    public FacesServletTestCase(String name) {
+        super(name);
+    }
+
+    public static Test suite() {
+        return (new TestSuite(FacesServletTestCase.class));
+    }
+
+    @Override
+    public void setUp() throws Exception {
+        super.setUp();
+        // Set up Servlet API Objects
+        servletContext.addInitParameter("appParamName", "appParamValue");
+        servletContext.setAttribute("appScopeName", "appScopeValue");
+        session.setAttribute("sesScopeName", "sesScopeValue");
+        request.setAttribute("reqScopeName", "reqScopeValue");
+
+        UIViewRoot root = facesContext.getApplication().getViewHandler().createView(facesContext, null);
+        root.setViewId("/viewId");
+        facesContext.setViewRoot(root);
+        RenderKitFactory renderKitFactory = (RenderKitFactory) FactoryFinder.getFactory(FactoryFinder.RENDER_KIT_FACTORY);
+        RenderKit renderKit = new MockRenderKit();
+        try {
+            renderKitFactory.addRenderKit(RenderKitFactory.HTML_BASIC_RENDER_KIT,
+                    renderKit);
+        } catch (IllegalArgumentException e) {
+        }
+    }
+
+    public void testPositiveInitWithNoContextParams() throws Exception {
+        FacesServlet me = new FacesServlet();
+        me.init(config);
+        this.sendRequest(me, "OPTIONS");
+        assertEquals(HttpServletResponse.SC_OK, response.getStatus());
+        this.sendRequest(me, "GET");
+        assertEquals(HttpServletResponse.SC_OK, response.getStatus());
+        this.sendRequest(me, "HEAD");
+        assertEquals(HttpServletResponse.SC_OK, response.getStatus());
+        this.sendRequest(me, "POST");
+        assertEquals(HttpServletResponse.SC_OK, response.getStatus());
+        this.sendRequest(me, "PUT");
+        assertEquals(HttpServletResponse.SC_OK, response.getStatus());
+        this.sendRequest(me, "DELETE");
+        assertEquals(HttpServletResponse.SC_OK, response.getStatus());
+        this.sendRequest(me, "TRACE");
+        assertEquals(HttpServletResponse.SC_OK, response.getStatus());
+        this.sendRequest(me, "CONNECT");
+        assertEquals(HttpServletResponse.SC_OK, response.getStatus());
+    }
+
+    public void testPositiveInitWithContextParamsOfKnownHttpMethods() throws Exception {
+        FacesServlet me = new FacesServlet();
+        servletContext.addInitParameter(ALLOWED_HTTP_METHODS_ATTR_COPY, "GET   POST");
+        me.init(config);
+        this.sendRequest(me, "OPTIONS");
+        assertEquals(HttpServletResponse.SC_BAD_REQUEST, response.getStatus());
+        this.sendRequest(me, "GET");
+        assertEquals(HttpServletResponse.SC_OK, response.getStatus());
+        this.sendRequest(me, "HEAD");
+        assertEquals(HttpServletResponse.SC_BAD_REQUEST, response.getStatus());
+        this.sendRequest(me, "POST");
+        assertEquals(HttpServletResponse.SC_OK, response.getStatus());
+        this.sendRequest(me, "PUT");
+        assertEquals(HttpServletResponse.SC_BAD_REQUEST, response.getStatus());
+        this.sendRequest(me, "DELETE");
+        assertEquals(HttpServletResponse.SC_BAD_REQUEST, response.getStatus());
+        this.sendRequest(me, "TRACE");
+        assertEquals(HttpServletResponse.SC_BAD_REQUEST, response.getStatus());
+        this.sendRequest(me, "CONNECT");
+        assertEquals(HttpServletResponse.SC_BAD_REQUEST, response.getStatus());
+    }
+
+    public void testNegativeInitWithContextParamsOfKnownHttpMethods() throws Exception {
+        FacesServlet me = new FacesServlet();
+        servletContext.addInitParameter(ALLOWED_HTTP_METHODS_ATTR_COPY, "GET   POST GET  POST");
+        me.init(config);
+        this.sendRequest(me, "OPTIONS");
+        assertEquals(HttpServletResponse.SC_BAD_REQUEST, response.getStatus());
+        this.sendRequest(me, "GET");
+        assertEquals(HttpServletResponse.SC_OK, response.getStatus());
+        this.sendRequest(me, "HEAD");
+        assertEquals(HttpServletResponse.SC_BAD_REQUEST, response.getStatus());
+        this.sendRequest(me, "POST");
+        assertEquals(HttpServletResponse.SC_OK, response.getStatus());
+        this.sendRequest(me, "PUT");
+        assertEquals(HttpServletResponse.SC_BAD_REQUEST, response.getStatus());
+        this.sendRequest(me, "DELETE");
+        assertEquals(HttpServletResponse.SC_BAD_REQUEST, response.getStatus());
+        this.sendRequest(me, "TRACE");
+        assertEquals(HttpServletResponse.SC_BAD_REQUEST, response.getStatus());
+        this.sendRequest(me, "CONNECT");
+        assertEquals(HttpServletResponse.SC_BAD_REQUEST, response.getStatus());
+    }
+
+    public void testPositiveInitWithContextParamsOfWildcardHttpMethods() throws Exception {
+        FacesServlet me = new FacesServlet();
+        servletContext.addInitParameter(ALLOWED_HTTP_METHODS_ATTR_COPY, "*");
+        me.init(config);
+        this.sendRequest(me, "OPTIONS");
+        assertEquals(HttpServletResponse.SC_OK, response.getStatus());
+        this.sendRequest(me, "GET");
+        assertEquals(HttpServletResponse.SC_OK, response.getStatus());
+        this.sendRequest(me, "HEAD");
+        assertEquals(HttpServletResponse.SC_OK, response.getStatus());
+        this.sendRequest(me, "POST");
+        assertEquals(HttpServletResponse.SC_OK, response.getStatus());
+        this.sendRequest(me, "PUT");
+        assertEquals(HttpServletResponse.SC_OK, response.getStatus());
+        this.sendRequest(me, "DELETE");
+        assertEquals(HttpServletResponse.SC_OK, response.getStatus());
+        this.sendRequest(me, "TRACE");
+        assertEquals(HttpServletResponse.SC_OK, response.getStatus());
+        this.sendRequest(me, "CONNECT");
+        assertEquals(HttpServletResponse.SC_OK, response.getStatus());
+        this.sendRequest(me, "BOO_YA");
+        assertEquals(HttpServletResponse.SC_OK, response.getStatus());
+    }
+
+    public void testNegativeInitWithContextParamsOfWildcardHttpMethods() throws Exception {
+        FacesServlet me = new FacesServlet();
+        servletContext.addInitParameter(ALLOWED_HTTP_METHODS_ATTR_COPY, "* * * *");
+        me.init(config);
+        this.sendRequest(me, "OPTIONS");
+        assertEquals(HttpServletResponse.SC_OK, response.getStatus());
+        this.sendRequest(me, "GET");
+        assertEquals(HttpServletResponse.SC_OK, response.getStatus());
+        this.sendRequest(me, "HEAD");
+        assertEquals(HttpServletResponse.SC_OK, response.getStatus());
+        this.sendRequest(me, "POST");
+        assertEquals(HttpServletResponse.SC_OK, response.getStatus());
+        this.sendRequest(me, "PUT");
+        assertEquals(HttpServletResponse.SC_OK, response.getStatus());
+        this.sendRequest(me, "DELETE");
+        assertEquals(HttpServletResponse.SC_OK, response.getStatus());
+        this.sendRequest(me, "TRACE");
+        assertEquals(HttpServletResponse.SC_OK, response.getStatus());
+        this.sendRequest(me, "CONNECT");
+        assertEquals(HttpServletResponse.SC_OK, response.getStatus());
+        this.sendRequest(me, "BOO_YA");
+        assertEquals(HttpServletResponse.SC_OK, response.getStatus());
+    }
+
+    public void testPositiveInitWithContextParamsOfUnknownAndKnownHttpMethods() throws Exception {
+        FacesServlet me = new FacesServlet();
+        servletContext.addInitParameter(ALLOWED_HTTP_METHODS_ATTR_COPY, "GET\tPOST\tGETAAAAA");
+        me.init(config);
+        this.sendRequest(me, "OPTIONS");
+        assertEquals(HttpServletResponse.SC_BAD_REQUEST, response.getStatus());
+        this.sendRequest(me, "GET");
+        assertEquals(HttpServletResponse.SC_OK, response.getStatus());
+        this.sendRequest(me, "HEAD");
+        assertEquals(HttpServletResponse.SC_BAD_REQUEST, response.getStatus());
+        this.sendRequest(me, "POST");
+        assertEquals(HttpServletResponse.SC_OK, response.getStatus());
+        this.sendRequest(me, "PUT");
+        assertEquals(HttpServletResponse.SC_BAD_REQUEST, response.getStatus());
+        this.sendRequest(me, "DELETE");
+        assertEquals(HttpServletResponse.SC_BAD_REQUEST, response.getStatus());
+        this.sendRequest(me, "TRACE");
+        assertEquals(HttpServletResponse.SC_BAD_REQUEST, response.getStatus());
+        this.sendRequest(me, "CONNECT");
+        assertEquals(HttpServletResponse.SC_BAD_REQUEST, response.getStatus());
+        this.sendRequest(me, "BOO_YA");
+        assertEquals(HttpServletResponse.SC_BAD_REQUEST, response.getStatus());
+        this.sendRequest(me, "GETAAAAA");
+        assertEquals(HttpServletResponse.SC_OK, response.getStatus());
+    }
+
+    private void sendRequest(FacesServlet me, String method) throws Exception {
+        request.setMethod(method);
+        request.setPathElements("/test", "/test", "/test", "");
+        me.service(request, response);
+    }
+}
diff --git a/test/unit/src/test/java/javax/faces/webapp/FacetTagTestCase.java b/test/unit/src/test/java/javax/faces/webapp/FacetTagTestCase.java
new file mode 100644
index 0000000..d55cc82
--- /dev/null
+++ b/test/unit/src/test/java/javax/faces/webapp/FacetTagTestCase.java
@@ -0,0 +1,135 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package javax.faces.webapp;
+
+import javax.faces.component.UIComponent;
+import javax.faces.component.UIOutput;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import static junit.framework.Assert.assertNotNull;
+import static junit.framework.Assert.assertTrue;
+
+/**
+ * <p>
+ * Unit tests for <code>FacetTag</code>.</p>
+ */
+public class FacetTagTestCase extends TagTestCaseBase {
+
+    // ------------------------------------------------------ Instance Variables
+    protected UIComponentTag ctag = null; // Component tag
+    protected FacetTag ftag = null;       // Facet tag
+    protected UIComponentTag rtag = null; // Root tag
+
+    // ------------------------------------------------------------ Constructors
+    /**
+     * Construct a new instance of this test case.
+     *
+     * @param name Name of the test case
+     */
+    public FacetTagTestCase(String name) {
+
+        super(name);
+
+    }
+
+    // ---------------------------------------------------- Overall Test Methods
+    /**
+     * Set up our root and component tags.
+     * @throws java.lang.Exception
+     */
+    @Override
+    public void setUp() throws Exception {
+        super.setUp();
+
+        rtag = new TagTestImpl("ROOT", "root") {
+            @Override
+            protected void setProperties(UIComponent component) {
+            }
+        };
+        rtag.setPageContext(this.pageContext);
+
+        ftag = new FacetTag();
+        ftag.setPageContext(this.pageContext);
+        ftag.setParent(this.rtag);
+
+        ctag = new OutputTagTestImpl();
+        ctag.setPageContext(this.pageContext);
+        ctag.setParent(this.ftag);
+    }
+
+    /**
+     * Return the tests included in this test suite.
+     * @return 
+     */
+    public static Test suite() {
+        return (new TestSuite(FacetTagTestCase.class));
+    }
+
+    /**
+     * Clear our root and component tags.
+     * @throws java.lang.Exception
+     */
+    @Override
+    public void tearDown() throws Exception {
+        ctag = null;
+        ftag = null;
+        rtag = null;
+        super.tearDown();
+    }
+
+    // ------------------------------------------------- Individual Test Methods
+    // Test literal facet name
+    public void testLiteral() throws Exception {
+        rtag.doStartTag();
+        ftag.setName("foo");
+        ftag.doStartTag();
+        ctag.doStartTag();
+
+        UIComponent component = rtag.getComponentInstance();
+        assertNotNull(component);
+        UIComponent facet = component.getFacet("foo");
+        assertNotNull(facet);
+        assertTrue(facet instanceof UIOutput);
+
+        ctag.doEndTag();
+        ftag.doEndTag();
+        rtag.doEndTag();
+    }
+}
diff --git a/test/unit/src/test/java/javax/faces/webapp/InputTagTestImpl.java b/test/unit/src/test/java/javax/faces/webapp/InputTagTestImpl.java
new file mode 100644
index 0000000..48bf523
--- /dev/null
+++ b/test/unit/src/test/java/javax/faces/webapp/InputTagTestImpl.java
@@ -0,0 +1,88 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package javax.faces.webapp;
+
+import javax.faces.component.UIComponent;
+import javax.faces.el.ValueBinding;
+
+// Test UIInput Tag
+public class InputTagTestImpl extends UIComponentTag {
+
+    public InputTagTestImpl() {
+        super();
+    }
+
+    public InputTagTestImpl(String componentId) {
+        super();
+        setId(componentId);
+    }
+
+    private boolean rendersChildren = false;
+    private boolean rendersChildrenSet = false;
+
+    public void setRendersChildren(boolean rendersChildren) {
+        this.rendersChildren = rendersChildren;
+        this.rendersChildrenSet = true;
+    }
+
+    @Override
+    public void release() {
+        super.release();
+        this.rendersChildrenSet = false;
+    }
+
+    @Override
+    public String getComponentType() {
+        return ("TestInput");
+    }
+
+    @Override
+    public String getRendererType() {
+        return ("TestRenderer");
+    }
+
+    @Override
+    protected void setProperties(UIComponent component) {
+        super.setProperties(component);
+        if (rendersChildrenSet) {
+            ((ComponentTestImpl) component).setRendersChildren(rendersChildren);
+        }
+    }
+}
diff --git a/test/unit/src/test/java/javax/faces/webapp/OutputTagTestImpl.java b/test/unit/src/test/java/javax/faces/webapp/OutputTagTestImpl.java
new file mode 100644
index 0000000..7e024aa
--- /dev/null
+++ b/test/unit/src/test/java/javax/faces/webapp/OutputTagTestImpl.java
@@ -0,0 +1,88 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package javax.faces.webapp;
+
+import javax.faces.component.UIComponent;
+import javax.faces.el.ValueBinding;
+
+// Test UIOutput Tag
+public class OutputTagTestImpl extends UIComponentTag {
+
+    public OutputTagTestImpl() {
+        super();
+    }
+
+    public OutputTagTestImpl(String componentId) {
+        super();
+        setId(componentId);
+    }
+
+    private boolean rendersChildren = false;
+    private boolean rendersChildrenSet = false;
+
+    public void setRendersChildren(boolean rendersChildren) {
+        this.rendersChildren = rendersChildren;
+        this.rendersChildrenSet = true;
+    }
+
+    @Override
+    public void release() {
+        super.release();
+        this.rendersChildrenSet = false;
+    }
+
+    @Override
+    public String getComponentType() {
+        return ("TestOutput");
+    }
+
+    @Override
+    public String getRendererType() {
+        return ("TestRenderer");
+    }
+
+    @Override
+    protected void setProperties(UIComponent component) {
+        super.setProperties(component);
+        if (rendersChildrenSet) {
+            ((ComponentTestImpl) component).setRendersChildren(rendersChildren);
+        }
+    }
+}
diff --git a/test/unit/src/test/java/javax/faces/webapp/TagTestCaseBase.java b/test/unit/src/test/java/javax/faces/webapp/TagTestCaseBase.java
new file mode 100644
index 0000000..e3cfca3
--- /dev/null
+++ b/test/unit/src/test/java/javax/faces/webapp/TagTestCaseBase.java
@@ -0,0 +1,116 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package javax.faces.webapp;
+
+import com.sun.faces.junit.JUnitFacesTestCaseBase;
+import javax.faces.FactoryFinder;
+import javax.faces.component.UIViewRoot;
+import javax.faces.render.RenderKit;
+import javax.faces.render.RenderKitFactory;
+import javax.servlet.jsp.tagext.Tag;
+import com.sun.faces.mock.MockPageContext;
+import com.sun.faces.mock.MockRenderKit;
+import com.sun.faces.mock.MockServlet;
+
+/**
+ * <p>
+ * Base unit tests for all UIComponentTag classes.</p>
+ */
+public class TagTestCaseBase extends JUnitFacesTestCaseBase {
+
+    // ----------------------------------------------------- Instance Variables
+    protected MockPageContext pageContext = null;
+    protected MockServlet servlet = null;
+
+    protected Tag root = null;
+
+    // ---------------------------------------------------------- Constructors
+    /**
+     * Construct a new instance of this test case.
+     *
+     * @param name Name of the test case
+     */
+    public TagTestCaseBase(String name) {
+
+        super(name);
+
+    }
+
+    // -------------------------------------------------- Overall Test Methods
+    /**
+     * Set up instance variables required by this test case.
+     *
+     * @throws java.lang.Exception
+     */
+    @Override
+    public void setUp() throws Exception {
+        super.setUp();
+
+        // Set up Servlet API Objects
+        servlet = new MockServlet(config);
+
+        // Set up JSP API Objects
+        pageContext = new MockPageContext();
+        pageContext.initialize(servlet, request, response, null,
+                true, 1024, true);
+
+        UIViewRoot rootComponent = facesContext.getApplication().getViewHandler().createView(facesContext, null);
+        rootComponent.setViewId("/root");
+        facesContext.setViewRoot(rootComponent);
+        RenderKitFactory renderKitFactory = (RenderKitFactory) FactoryFinder.getFactory(FactoryFinder.RENDER_KIT_FACTORY);
+        RenderKit renderKit = new MockRenderKit();
+        try {
+            renderKitFactory.addRenderKit(RenderKitFactory.HTML_BASIC_RENDER_KIT,
+                    renderKit);
+        } catch (IllegalArgumentException e) {
+        }
+    }
+
+    /**
+     * Tear down instance variables required by this test case.
+     * @throws java.lang.Exception
+     */
+    @Override
+    public void tearDown() throws Exception {
+        pageContext = null;
+        root = null;
+        super.tearDown();
+    }
+}
diff --git a/test/unit/src/test/java/javax/faces/webapp/TagTestImpl.java b/test/unit/src/test/java/javax/faces/webapp/TagTestImpl.java
new file mode 100644
index 0000000..17172fb
--- /dev/null
+++ b/test/unit/src/test/java/javax/faces/webapp/TagTestImpl.java
@@ -0,0 +1,111 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package javax.faces.webapp;
+
+import javax.faces.component.UIComponent;
+import javax.faces.el.ValueBinding;
+import static javax.faces.webapp.UIComponentTag.isValueReference;
+
+// Test UIComponent Tag
+public class TagTestImpl extends UIComponentTag {
+
+    public TagTestImpl() {
+        super();
+    }
+
+    public TagTestImpl(String componentId) {
+        this(componentId, componentId);
+    }
+
+    public TagTestImpl(String componentId, String label) {
+        super();
+        setId(componentId);
+        setLabel(label);
+    }
+
+    private String label = null;
+
+    public void setLabel(String label) {
+        this.label = label;
+    }
+
+    private boolean rendersChildren = false;
+    private boolean rendersChildrenSet = false;
+
+    public void setRendersChildren(boolean rendersChildren) {
+        this.rendersChildren = rendersChildren;
+        this.rendersChildrenSet = true;
+    }
+
+    @Override
+    public void release() {
+        super.release();
+        this.label = null;
+        this.rendersChildrenSet = false;
+    }
+
+    @Override
+    public String getComponentType() {
+        return ("TestComponent");
+    }
+
+    @Override
+    public String getRendererType() {
+        return (null);
+    }
+
+    @Override
+    protected void setProperties(UIComponent component) {
+        super.setProperties(component);
+        if (rendersChildrenSet) {
+            ((ComponentTestImpl) component).setRendersChildren(rendersChildren);
+        }
+        if (label != null) {
+            if (isValueReference(label)) {
+                ValueBinding vb
+                        = getFacesContext().getApplication().
+                        createValueBinding(label);
+                component.setValueBinding("label", vb);
+            } else {
+                ((ComponentTestImpl) component).setLabel(label);
+            }
+        }
+    }
+}
diff --git a/test/unit/src/test/java/javax/faces/webapp/ValidatorTagTestCase.java b/test/unit/src/test/java/javax/faces/webapp/ValidatorTagTestCase.java
new file mode 100644
index 0000000..c8390a5
--- /dev/null
+++ b/test/unit/src/test/java/javax/faces/webapp/ValidatorTagTestCase.java
@@ -0,0 +1,155 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package javax.faces.webapp;
+
+import javax.faces.component.UIComponent;
+import javax.faces.component.EditableValueHolder;
+import javax.faces.validator.LengthValidator;
+import javax.faces.validator.Validator;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import static junit.framework.Assert.assertEquals;
+import static junit.framework.Assert.assertNotNull;
+import static junit.framework.Assert.assertTrue;
+
+/**
+ * <p>
+ * Unit tests for <code>ValidatorTag</code>.</p>
+ */
+public class ValidatorTagTestCase extends TagTestCaseBase {
+
+    // ------------------------------------------------------ Instance Variables
+    protected UIComponentTag ctag = null; // Component tag
+    protected UIComponentTag rtag = null; // Root tag
+
+    // ------------------------------------------------------------ Constructors
+    /**
+     * Construct a new instance of this test case.
+     *
+     * @param name Name of the test case
+     */
+    public ValidatorTagTestCase(String name) {
+        super(name);
+    }
+
+    // ---------------------------------------------------- Overall Test Methods
+    /**
+     * Set up our root and component tags.
+     * @throws java.lang.Exception
+     */
+    @Override
+    public void setUp() throws Exception {
+        super.setUp();
+
+        rtag = new TagTestImpl("ROOT", "root") {
+            @Override
+            protected void setProperties(UIComponent component) {
+            }
+        };
+        rtag.setPageContext(this.pageContext);
+        ctag = new InputTagTestImpl();
+        ctag.setParent(this.rtag);
+        ctag.setPageContext(this.pageContext);
+
+        rtag.doStartTag();
+        ctag.doStartTag();
+    }
+
+    /**
+     * Return the tests included in this test suite.
+     * @return 
+     */
+    public static Test suite() {
+        return (new TestSuite(ValidatorTagTestCase.class));
+    }
+
+    /**
+     * Clear our root and component tags.
+     * @throws java.lang.Exception    */
+    @Override
+    public void tearDown() throws Exception {
+        ctag.doEndTag();
+        rtag.doEndTag();
+
+        ctag = null;
+        rtag = null;
+
+        super.tearDown();
+    }
+
+    // ------------------------------------------------- Individual Test Methods
+    // Test literal validator id
+    public void testLiteral() throws Exception {
+        UIComponent component = ctag.getComponentInstance();
+        assertNotNull(component);
+        assertEquals(0, ((EditableValueHolder) component).getValidators().length);
+        ValidatorTag tag = new ValidatorTag();
+        tag.setValidatorId("Length");
+        add(tag);
+        tag.doStartTag();
+        Validator validator = ((EditableValueHolder) component).getValidators()[0];
+        assertNotNull(validator);
+        assertTrue(validator instanceof LengthValidator);
+        tag.doEndTag();
+    }
+
+    // Test expression validator id
+    public void testExpression() throws Exception {
+        UIComponent component = ctag.getComponentInstance();
+        assertNotNull(component);
+        assertEquals(0, ((EditableValueHolder) component).getValidators().length);
+        ValidatorTag tag = new ValidatorTag();
+        tag.setValidatorId("#{foo}");
+        request.setAttribute("foo", "Length");
+        add(tag);
+        tag.doStartTag();
+        Validator validator = ((EditableValueHolder) component).getValidators()[0];
+        assertNotNull(validator);
+        assertTrue(validator instanceof LengthValidator);
+        tag.doEndTag();
+    }
+
+    // ------------------------------------------------------- Protected Methods
+    // Add the specified ValidatorTag to our component tag
+    protected void add(ValidatorTag tag) {
+        tag.setParent(ctag);
+        tag.setPageContext(this.pageContext);
+    }
+}
diff --git a/test/unit/src/test/java/javax/faces/webapp/config-file-0.xml b/test/unit/src/test/java/javax/faces/webapp/config-file-0.xml
new file mode 100644
index 0000000..b6befaf
--- /dev/null
+++ b/test/unit/src/test/java/javax/faces/webapp/config-file-0.xml
@@ -0,0 +1,49 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!-- ========== EMPTY CONFIGURATION FILE ================================== -->
+
+<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd"
+    version="1.2"/>
diff --git a/test/unit/src/test/java/javax/faces/webapp/config-file-1.xml b/test/unit/src/test/java/javax/faces/webapp/config-file-1.xml
new file mode 100644
index 0000000..b5f8665
--- /dev/null
+++ b/test/unit/src/test/java/javax/faces/webapp/config-file-1.xml
@@ -0,0 +1,323 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd"
+    version="1.2">
+
+  <!-- Initial application element with partial values -->
+  <application id="applicationElement">
+    <action-listener>com.mycompany.MyActionListener</action-listener>
+    <variable-resolver>com.mycompany.OldVariableResolver</variable-resolver>
+  </application>
+
+
+  <!-- Second validator -->
+  <validator>
+    <description>Second Validator Description</description>
+    <display-name>Second Validator Display Name</display-name>
+    <icon>
+      <small-icon>secondValidator.jpg</small-icon>
+      <large-icon>secondValidator.gif</large-icon>
+    </icon>
+    <validator-id>Second</validator-id>
+    <validator-class>com.mycompany.MySecondValidator</validator-class>
+    <property>
+      <description>Second Validator Property 1 Description</description>
+      <display-name>Second Validator Property 1 Display Name</display-name>
+      <property-name>prop1</property-name>
+      <property-class>java.lang.String</property-class>
+    </property>
+  </validator>
+
+
+  <!-- First validator -->
+  <validator>
+    <description>First Validator Description</description>
+    <display-name>First Validator Display Name</display-name>
+    <icon>
+      <small-icon>firstValidator.jpg</small-icon>
+      <large-icon>firstValidator.gif</large-icon>
+    </icon>
+    <validator-id>First</validator-id>
+    <validator-class>com.mycompany.MyFirstValidator</validator-class>
+    <attribute>
+      <description>First Validator Attribute 1 Description</description>
+      <display-name>First Validator Attribute 1 Display Name</display-name>
+      <attribute-name>attr1</attribute-name>
+      <attribute-class>java.lang.String</attribute-class>
+    </attribute>
+  </validator>
+
+
+  <!-- First component -->
+  <component>
+    <description>User Interface Command Component</description>
+    <display-name>User Interface Command</display-name>
+    <component-type>Command</component-type>
+    <component-class>javax.faces.component.UICommand</component-class>
+  </component>
+
+
+  <!-- First converter -->
+  <converter>
+    <description>First Converter Description</description>
+    <display-name>First Converter Display Name</display-name>
+    <icon>
+      <small-icon>firstConverter.jpg</small-icon>
+      <large-icon>firstConverter.gif</large-icon>
+    </icon>
+    <converter-id>First</converter-id>
+    <converter-class>com.mycompany.MyFirstConverter</converter-class>
+    <attribute>
+      <description>First Converter Attribute 1 Description</description>
+      <display-name>First Converter Attribute 1 Display Name</display-name>
+      <attribute-name>attr1</attribute-name>
+      <attribute-class>java.lang.String</attribute-class>
+    </attribute>
+  </converter>
+
+
+  <!-- Second application element with overapping values -->
+  <application>
+    <navigation-handler>
+      com.mycompany.MyNavigationHandler
+    </navigation-handler>
+    <property-resolver>com.mycompany.MyPropertyResolver</property-resolver>
+    <variable-resolver>com.mycompany.MyVariableResolver</variable-resolver>
+  </application>
+
+
+  <!-- Second converter -->
+  <converter>
+    <description>Second Converter Description</description>
+    <display-name>Second Converter Display Name</display-name>
+    <icon>
+      <small-icon>secondConverter.jpg</small-icon>
+      <large-icon>secondConverter.gif</large-icon>
+    </icon>
+    <converter-id>Second</converter-id>
+    <converter-class>com.mycompany.MySecondConverter</converter-class>
+    <property>
+      <description>Second Converter Property 1 Description</description>
+      <display-name>Second Converter Property 1 Display Name</display-name>
+      <property-name>prop1</property-name>
+      <property-class>java.lang.String</property-class>
+    </property>
+  </converter>
+
+  <!-- Third converter (by-type) -->
+  <converter>
+    <description>Third Converter Description</description>
+    <display-name>Third Converter Display Name</display-name>
+    <icon>
+      <small-icon>thirdConverter.jpg</small-icon>
+      <large-icon>thirdConverter.gif</large-icon>
+    </icon>
+    <converter-for-class>java.util.Date</converter-for-class>
+    <converter-class>com.mycompany.MyThirdConverter</converter-class>
+    <property>
+      <description>Third Converter Property 1 Description</description>
+      <display-name>Third Converter Property 1 Display Name</display-name>
+      <property-name>prop1</property-name>
+      <property-class>java.lang.String</property-class>
+    </property>
+  </converter>
+
+
+  <!-- First navigation rule (global) -->
+  <navigation-rule>
+    <description>
+      This is the set of rules that provides default navigation
+      independent of the request view.
+    </description>
+    <display-name>Default Navigation Rules</display-name>
+    <!-- Can also be omitted, since this is the default -->
+    <from-view-id> * </from-view-id>
+    <!-- Logout button on every page -->
+    <navigation-case>
+      <from-action>#{UserBean.Logout}</from-action>
+      <to-view-id>/logout.jsp</to-view-id>
+    </navigation-case>
+    <!-- Generic "not logged in" handler -->
+    <navigation-case>
+      <from-outcome>loginRequired</from-outcome>
+      <to-view-id>/must-login-first.jsp</to-view-id>
+      <redirect/>
+    </navigation-case>
+  </navigation-rule>
+
+
+  <!-- Second navigation rule (login page only) -->
+  <navigation-rule>
+    <from-view-id> /login.jsp </from-view-id>
+    <!-- Login action was invoked successfully -->
+    <navigation-case>
+      <from-action>#{UserBean.login}</from-action>
+      <from-outcome>success</from-outcome>
+      <to-view-id>/home.jsp</to-view-id>
+    </navigation-case>
+    <!-- User registration required -->
+    <navigation-case>
+      <from-action>#{UserBean.register}</from-action>
+      <from-outcome>success</from-outcome>
+      <to-view-id>/get-user-info.jsp</to-view-id>
+    </navigation-case>
+    <!-- User registration failed -->
+    <navigation-case>
+      <from-action>#{UserBean.register}</from-action>
+      <from-outcome>duplicate</from-outcome>
+      <to-view-id>/try-another-name.jsp</to-view-id>
+    </navigation-case>
+  </navigation-rule>
+
+
+  <!-- Third navigation rule (more global stuff) -->
+  <navigation-rule>
+    <!-- Omit the request view id this time -->
+    <!-- General search form handling -->
+    <navigation-case>
+      <from-action>#{SearchForm.go}</from-action>
+      <to-view-id>/search-results.jsp</to-view-id>
+    </navigation-case>
+  </navigation-rule>
+
+
+  <!-- Fourth navigation rule (special search handling) -->
+  <navigation-rule>
+    <!-- Search works differently for part of the app -->
+    <from-view-id>/movies/*</from-view-id>
+    <!-- Special search form handling -->
+    <navigation-case>
+      <from-action>#{SearchForm.go}</from-action>
+      <to-view-id>/movies/movie-search-results.jsp</to-view-id>
+    </navigation-case>
+  </navigation-rule>
+
+
+  <!-- First managed bean -->
+  <managed-bean>
+    <!-- Basic information about this bean -->
+    <description>
+      Auto-creates the form handler for new customers into request scope
+      if it is not already present.
+    </description>
+    <display-name>New Customer Form Handler</display-name>
+    <managed-bean-name>NewCustomerFormHandler</managed-bean-name>
+    <managed-bean-class>
+      com.example.formhandler.NewCustomerFormHandler
+    </managed-bean-class>
+    <managed-bean-scope>request</managed-bean-scope>
+    <!-- Managed property initializations -->
+    <managed-property>
+      <property-name>minimumAge</property-name>
+      <value>#{initParam.minimumCustomerAge}</value>
+    </managed-property>
+    <managed-property>
+      <property-name>maximumAge</property-name>
+      <value>65</value>
+    </managed-property>
+    <managed-property>
+      <property-name>nationality</property-name>
+      <null-value/>
+    </managed-property>
+    <managed-property>
+      <property-name>allowableValues</property-name>
+      <!-- Assume the type is java.util.List -->
+      <list-entries>
+        <value-class>java.lang.Integer</value-class>
+        <value>10</value>
+        <value>20</value>
+        <value>60</value>
+      </list-entries>
+    </managed-property>
+    <managed-property>
+      <property-name>firstNames</property-name>
+      <!-- Assume the type is java.util.List or java.lang.String[] -->
+      <list-entries>
+        <value>Thomas</value>
+        <value>#{someOtherBean.someName}</value>
+        <null-value/>
+      </list-entries>
+    </managed-property>
+    <managed-property>
+      <description>
+        Map property with a description.
+      </description>
+      <display-name>Claim Amounts</display-name>
+      <property-name>claimAmounts</property-name>
+      <map-entries>
+        <key-class>java.lang.String</key-class> <!-- Default so redundant -->
+        <value-class>java.lang.Double</value-class>
+        <map-entry>
+          <key>fire</key>
+          <value>1000.00</value>
+        </map-entry>
+        <map-entry>
+          <key>water</key>
+          <value>#{claimConfiguration.waterDamageAmount}</value>
+        </map-entry>
+        <map-entry>
+          <key>earthquake</key>
+          <null-value/>
+        </map-entry>
+      </map-entries>
+    </managed-property>
+  </managed-bean>
+
+
+  <!-- First referenced bean -->
+  <referenced-bean>
+    <description>
+      This element represents a JDBC DataSource that will be
+      initialized through some external means, and made available
+      in some scope (most likely application).
+    </description>
+    <display-name>Database Connection Pool</display-name>
+    <referenced-bean-name>connectionPool</referenced-bean-name>
+    <referenced-bean-class>javax.sql.DataSource</referenced-bean-class>
+  </referenced-bean>
+
+
+</faces-config>
diff --git a/test/unit/src/test/resources/com/sun/faces/xml/Entities_en_US.properties b/test/unit/src/test/resources/com/sun/faces/xml/Entities_en_US.properties
new file mode 100644
index 0000000..fc4b6d0
--- /dev/null
+++ b/test/unit/src/test/resources/com/sun/faces/xml/Entities_en_US.properties
@@ -0,0 +1,60 @@
+#   Extensible HTML version 1.0 Transitional DTD
+#
+#   This is the same as HTML 4 Transitional except for
+#   changes due to the differences between XML and SGML.
+#
+#   Namespace = http://www.w3.org/1999/xhtml
+#
+#   For further information, see: http://www.w3.org/TR/xhtml1
+#
+#   Copyright (c) 1998-2002 W3C (MIT, INRIA, Keio),
+#   All Rights Reserved. 
+#
+#   This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+#
+#   PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+#   SYSTEM "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
+#
+#   $Revision: 1.2 $
+#   $Date: 2002/08/01 18:37:55 $
+#<!-- Portions (C) International Organization for Standardization 1986
+#     Permission to copy in any form is granted for use with
+#     conforming SGML systems and applications as defined in
+#     ISO 8879, provided this notice is included in all copies.
+#-->
+#<!-- Character entity set. Typical invocation:
+#    <!ENTITY % HTMLlat1 PUBLIC
+#       "-//W3C//ENTITIES Latin 1 for XHTML//EN"
+#       "http://www.w3.org/TR/xhtml1/DTD/xhtml-lat1.ent">
+#    %HTMLlat1;
+#-->
+#<!-- Special characters for XHTML -->
+#
+#<!-- Character entity set. Typical invocation:
+#     <!ENTITY % HTMLspecial PUBLIC
+#        "-//W3C//ENTITIES Special for XHTML//EN"
+#        "http://www.w3.org/TR/xhtml1/DTD/xhtml-special.ent">
+#     %HTMLspecial;
+#-->
+#
+#<!-- Relevant ISO entity set is given unless names are newly introduced.
+#     New names (i.e., not in ISO 8879 list) do not clash with any
+#     existing ISO 8879 entity names. ISO 10646 character numbers
+#     are given for each character, in hex. values are decimal
+#     conversions of the ISO 10646 values and refer to the document
+#     character set. Names are Unicode names. 
+#-->
+#<!-- Mathematical, Greek and Symbolic characters for XHTML -->
+#
+#<!-- Character entity set. Typical invocation:
+#     <!ENTITY % HTMLsymbol PUBLIC
+#        "-//W3C//ENTITIES Symbols for XHTML//EN"
+#        "http://www.w3.org/TR/xhtml1/DTD/xhtml-symbol.ent">
+#     %HTMLsymbol;
+#-->
+#
+www.w3.org/TR/xhtml1/DTD/xhtml-lat1.ent=<!ENTITY nbsp   \" \"> <!-- no-break space = non-breaking space,                                  U+00A0 ISOnum --><!ENTITY iexcl  \"¡\"> <!-- inverted exclamation mark, U+00A1 ISOnum --><!ENTITY cent   \"¢\"> <!-- cent sign, U+00A2 ISOnum --><!ENTITY pound  \"£\"> <!-- pound sign, U+00A3 ISOnum --><!ENTITY curren \"¤\"> <!-- currency sign, U+00A4 ISOnum --><!ENTITY yen    \"¥\"> <!-- yen sign = yuan sign, U+00A5 ISOnu [...]
+www.w3.org/TR/xhtml1/DTD/xhtml-special.ent=<!-- C0 Controls and Basic Latin --> <!ENTITY quot    \""\"> <!--  quotation mark, U+0022 ISOnum --><!ENTITY amp     \"&#38;\"> <!--  ampersand, U+0026 ISOnum --><!ENTITY lt      \"&#60;\"> <!--  less-than sign, U+003C ISOnum --><!ENTITY gt      \">\"> <!--  greater-than sign, U+003E ISOnum --><!ENTITY apos	 \"'\"> <!--  apostrophe = APL quote, U+0027 ISOnum --><!-- Latin Extended-A --><!ENTITY OElig   \"Œ\"> <!--  latin [...]
+www.w3.org/TR/xhtml1/DTD/xhtml-symbol.ent=<!-- Latin Extended-B --><!ENTITY fnof     \"ƒ\"> <!-- latin small letter f with hook = function                                    = florin, U+0192 ISOtech --><!-- Greek --><!ENTITY Alpha    \"Α\"> <!-- greek capital letter alpha, U+0391 --><!ENTITY Beta     \"Β\"> <!-- greek capital letter beta, U+0392 --><!ENTITY Gamma    \"Γ\"> <!-- greek capital letter gamma,                                    U+0393 ISOgrk3 --><!ENTITY D [...]
+www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd=<!--================ Character mnemonic entities =========================--><!ENTITY % HTMLlat1 PUBLIC   \"-//W3C//ENTITIES Latin 1 for XHTML//EN\"   \"xhtml-lat1.ent\">%HTMLlat1;<!ENTITY % HTMLsymbol PUBLIC   \"-//W3C//ENTITIES Symbols for XHTML//EN\"   \"xhtml-symbol.ent\">%HTMLsymbol;<!ENTITY % HTMLspecial PUBLIC   \"-//W3C//ENTITIES Special for XHTML//EN\"   \"xhtml-special.ent\">%HTMLspecial;<!--================== Imported Names ==== [...]
+
diff --git a/test/util/pom.xml b/test/util/pom.xml
new file mode 100644
index 0000000..5b00b55
--- /dev/null
+++ b/test/util/pom.xml
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test</groupId>
+    <artifactId>util</artifactId>
+    <name>Mojarra ${project.version} - Test - Utils</name>
+    <dependencies>
+        <dependency>
+            <groupId>net.sourceforge.htmlunit</groupId>
+            <artifactId>htmlunit</artifactId>
+            <version>2.13</version>
+            <scope>compile</scope>
+        </dependency>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <version>4.11</version>
+            <scope>compile</scope>
+        </dependency>
+    </dependencies>
+    <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/test/util/src/main/java/com/sun/faces/test/htmlunit/IgnoringIncorrectnessListener.java b/test/util/src/main/java/com/sun/faces/test/htmlunit/IgnoringIncorrectnessListener.java
new file mode 100644
index 0000000..88244df
--- /dev/null
+++ b/test/util/src/main/java/com/sun/faces/test/htmlunit/IgnoringIncorrectnessListener.java
@@ -0,0 +1,56 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.htmlunit;
+
+import com.gargoylesoftware.htmlunit.IncorrectnessListener;
+
+/**
+ * An ignoring incorrectness listener.
+ * 
+ * <p>
+ *  This incorrectness listener ignores any incorrectness.
+ * </p>
+ */
+public class IgnoringIncorrectnessListener implements IncorrectnessListener {
+
+    @Override
+    public void notify(String string, Object o) {
+    }
+}
diff --git a/test/util/src/main/java/com/sun/faces/test/junit/JsfServerExclude.java b/test/util/src/main/java/com/sun/faces/test/junit/JsfServerExclude.java
new file mode 100644
index 0000000..3fbe6b2
--- /dev/null
+++ b/test/util/src/main/java/com/sun/faces/test/junit/JsfServerExclude.java
@@ -0,0 +1,100 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.junit;
+
+public enum JsfServerExclude {
+
+    GLASSFISH_4_0_1("Glassfish", "4.0.1"),
+    GLASSFISH_4_0("Glassfish", "4.0"),
+    GLASSFISH_3_1_2_2("Glassfish", "3.1.2.2"),
+    TOMCAT_7_0_35("Tomcat", "7.0.35"),
+    WEBLOGIC_12_1_4("Weblogic", "12.1.4.0"),
+    WEBLOGIC_12_1_3("Weblogic", "12.1.3.0"),
+    WEBLOGIC_12_1_2("Weblogic", "12.1.2.0"),
+    WEBLOGIC_12_1_1("Weblogic", "12.1.1.0");
+
+    /**
+     * Constructor.
+     *
+     * @param version the version.
+     */
+    private JsfServerExclude(String name, String version) {
+        this.name = name;
+        this.version = version;
+    }
+
+    /**
+     * To string representation.
+     *
+     * @return the string representation.
+     */
+    @Override
+    public String toString() {
+        return name + ":" + version;
+    }
+
+    /**
+     * From string.
+     *
+     * @param serverString the server string.
+     * @return the JsfServerExclude
+     */
+    public static JsfServerExclude fromString(String serverString) {
+        if (serverString != null) {
+            JsfServerExclude[] excludes = JsfServerExclude.values();
+            for (JsfServerExclude exclude : excludes) {
+                if (serverString.contains(exclude.name) && serverString.contains(exclude.version)) {
+                    return exclude;
+                }
+            }
+        }
+        return null;
+    }
+
+    /**
+     * Stores the name.
+     */
+    private final String name;
+
+    /**
+     * Stores the version.
+     */
+    private final String version;
+}
diff --git a/test/util/src/main/java/com/sun/faces/test/junit/JsfTest.java b/test/util/src/main/java/com/sun/faces/test/junit/JsfTest.java
new file mode 100644
index 0000000..9d598c7
--- /dev/null
+++ b/test/util/src/main/java/com/sun/faces/test/junit/JsfTest.java
@@ -0,0 +1,67 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.junit;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * Define an annotation that defines the minimum JSF version of a test (at class-level or method-level).
+ */
+ at Target({ElementType.TYPE, ElementType.METHOD})
+ at Retention(RetentionPolicy.RUNTIME)
+public @interface JsfTest {
+
+    /**
+     * Defines the JSF version.
+     *
+     * @return the JSF version.
+     */
+    JsfVersion value();
+    
+    /**
+     * Determine the excludes 
+     * 
+     * @return the excludes.
+     */
+    JsfServerExclude[] excludes() default {};
+}
diff --git a/test/util/src/main/java/com/sun/faces/test/junit/JsfTestRunner.java b/test/util/src/main/java/com/sun/faces/test/junit/JsfTestRunner.java
new file mode 100644
index 0000000..52f9217
--- /dev/null
+++ b/test/util/src/main/java/com/sun/faces/test/junit/JsfTestRunner.java
@@ -0,0 +1,154 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.junit;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.runners.BlockJUnit4ClassRunner;
+import org.junit.runners.model.FrameworkMethod;
+import org.junit.runners.model.InitializationError;
+
+/**
+ * The JSF JUnit 4 Test runner.
+ */
+public class JsfTestRunner extends BlockJUnit4ClassRunner {
+
+    /**
+     * Stores the boolean flag indicating we skip.
+     */
+    private boolean skip = false;
+
+    /**
+     * Constructor.
+     *
+     * @param clazz the class.
+     * @throws InitializationError when initialization fails.
+     */
+    public JsfTestRunner(Class<?> clazz) throws InitializationError {
+        super(clazz);
+
+        if (clazz.getAnnotation(JsfTest.class) != null) {
+            JsfTest jsfTest = clazz.getAnnotation(JsfTest.class);
+
+            if (System.getProperty("jsf.version") != null) {
+                try {
+                    JsfVersion serverVersion = JsfVersion.fromString(System.getProperty("jsf.version"));
+
+                    if (serverVersion.ordinal() < jsfTest.value().ordinal()) {
+                        this.skip = true;
+                    }
+                } catch (IllegalArgumentException exception) {
+                    /*
+                     * We could not match up the version, so we are going to 
+                     * assume you still want to run the tests.
+                     */
+                }
+            }
+        }
+    }
+
+    /**
+     * Compute the test methods.
+     *
+     * @return the test methods.
+     */
+    @Override
+    protected List<FrameworkMethod> computeTestMethods() {
+        List<FrameworkMethod> result = new ArrayList<FrameworkMethod>();
+        if (!skip) {
+            Iterator<FrameworkMethod> methods = super.computeTestMethods().iterator();
+
+            while (methods.hasNext()) {
+                FrameworkMethod method = methods.next();
+
+                if (method.getAnnotation(JsfTest.class) != null) {
+                    JsfTest jsfTest = method.getAnnotation(JsfTest.class);
+                    boolean excludeFlag = false;
+
+                    if (jsfTest.excludes().length > 0) {
+                        JsfServerExclude exclude = JsfServerExclude.fromString(System.getProperty("jsf.serverString"));
+
+                        if (exclude != null) {
+                            for (JsfServerExclude current : jsfTest.excludes()) {
+                                if (current.equals(exclude)) {
+                                    excludeFlag = true;
+                                }
+                            }
+                        }
+                    }
+
+                    if (!excludeFlag && System.getProperty("jsf.version") != null) {
+                        try {
+                            JsfVersion serverVersion = JsfVersion.fromString(System.getProperty("jsf.version"));
+
+                            if (serverVersion.ordinal() < jsfTest.value().ordinal()) {
+                            } else {
+                                result.add(method);
+                            }
+                        } catch (IllegalArgumentException exception) {
+                            /*
+                             * We could not match up the version, so we are going to
+                             * assume you still want to run the tests.
+                             */
+                            result.add(method);
+                        }
+                    }
+                } else {
+                    result.add(method);
+                }
+            }
+        }
+        return result;
+    }
+
+    /*
+     * Allow for no (active) test methods on the test class.
+     */
+    @Override
+    @SuppressWarnings({"deprecation"})
+    protected void validateInstanceMethods(List<Throwable> errors) {
+        validatePublicVoidNoArgMethods(After.class, false, errors);
+        validatePublicVoidNoArgMethods(Before.class, false, errors);
+        validateTestMethods(errors);
+    }
+}
diff --git a/test/util/src/main/java/com/sun/faces/test/junit/JsfVersion.java b/test/util/src/main/java/com/sun/faces/test/junit/JsfVersion.java
new file mode 100644
index 0000000..652c415
--- /dev/null
+++ b/test/util/src/main/java/com/sun/faces/test/junit/JsfVersion.java
@@ -0,0 +1,106 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.junit;
+
+public enum JsfVersion {
+
+    JSF_2_2_0_M01("2.2.0-m01"),
+    JSF_2_2_0_M02("2.2.0-m02"),
+    JSF_2_2_0_M03("2.2.0-m03"),
+    JSF_2_2_0_M04("2.2.0-m04"),
+    JSF_2_2_0_M05("2.2.0-m05"),
+    JSF_2_2_0_M06("2.2.0-m06"),
+    JSF_2_2_0_M07("2.2.0-m07"),
+    JSF_2_2_0_M08("2.2.0-m08"),
+    JSF_2_2_0_M09("2.2.0-m09"),
+    JSF_2_2_0_M10("2.2.0-m10"),
+    JSF_2_2_0_M11("2.2.0-m11"),
+    JSF_2_2_0_M12("2.2.0-m12"),
+    JSF_2_2_0_M13("2.2.0-m13"),
+    JSF_2_2_0_M14("2.2.0-m14"),
+    JSF_2_2_0_M15("2.2.0-m15"),
+    JSF_2_2_0("2.2.0"),
+    JSF_2_2_1("2.2.1"),
+    JSF_2_2_2("2.2.2"),
+    JSF_2_2_3("2.2.3"),
+    JSF_2_2_4("2.2.4"),
+    JSF_2_2_5("2.2.5"),
+    JSF_2_2_6("2.2.6");
+
+    /**
+     * Constructor.
+     *
+     * @param version the version.
+     */
+    private JsfVersion(String version) {
+        this.version = version;
+
+    }
+
+    /**
+     * To string representation.
+     *
+     * @return the string representation.
+     */
+    @Override
+    public String toString() {
+        return version;
+    }
+
+    /**
+     * From string.
+     *
+     * @param version the JSF version.
+     * @return the JsfVersion
+     */
+    public static JsfVersion fromString(String version) {
+        JsfVersion[] versions = JsfVersion.values();
+        for (JsfVersion current : versions) {
+            if (current.toString().equals(version)) {
+                return current;
+            }
+        }
+        throw new IllegalArgumentException("Unable to determine JSF version");
+    }
+    /**
+     * Stores the version.
+     */
+    private final String version;
+}
diff --git a/test/util/src/main/java/com/sun/faces/test/util/ClusterUtils.java b/test/util/src/main/java/com/sun/faces/test/util/ClusterUtils.java
new file mode 100644
index 0000000..fcfa482
--- /dev/null
+++ b/test/util/src/main/java/com/sun/faces/test/util/ClusterUtils.java
@@ -0,0 +1,84 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.util;
+
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+public class ClusterUtils {
+
+    /**
+     * No instantiating me :)
+     */
+    private ClusterUtils() {
+    }
+
+    /**
+     * A utility method that gives you an array of String that contain the base
+     * URLs for the given test scenario.
+     * 
+     * @return the base URLs.
+     */
+    public static String[] getBaseUrls() {
+        List<String> result = new ArrayList<String>();
+        result.add(System.getProperty("integration.url"));
+        for (int i = 1; i < 10; i++) {
+            if (System.getProperty("integration.url" + i) != null
+                    && !System.getProperty("integration.url" + i).trim().equals("")) {
+                result.add(System.getProperty("integration.url" + i));
+            }
+        }
+        return result.toArray(new String[0]);
+    }
+    
+    /**
+     * A utility method that scrambles the order of the base URLs.
+     * 
+     * @return the randomized base URLs.
+     */
+    public static String[] getRandomizedBaseUrls() {
+        List<String> urls = Arrays.asList(getBaseUrls());
+        Collections.shuffle(urls);
+        return urls.toArray(new String[0]);
+    }
+}
diff --git a/test/util/src/main/java/com/sun/faces/test/util/HttpUtils.java b/test/util/src/main/java/com/sun/faces/test/util/HttpUtils.java
new file mode 100644
index 0000000..4bf8e3d
--- /dev/null
+++ b/test/util/src/main/java/com/sun/faces/test/util/HttpUtils.java
@@ -0,0 +1,93 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.test.util;
+
+import java.io.BufferedReader;
+import java.io.BufferedWriter;
+import java.io.InputStreamReader;
+import java.io.OutputStreamWriter;
+import java.net.Socket;
+
+public class HttpUtils {
+    
+    /**
+     * <p>Create an HTTP request line from the following parameters.</p>
+     * 
+     * <code><pre><methodName> + " /" + <path> + " HTTP/1.1\r\n"</pre></code>
+     * 
+     * <p>Open a socket to the specified host and port, and issue the request. 
+     * Read the result into a buffer and return it as the result.  Save aside the
+     * HTTP response code into the outbound argument rc, which must have 
+     * at least one element.</p>
+     * 
+     */ 
+
+    public static String issueHttpRequest(String methodName, int [] rc, String host, String port, String path) throws Exception {
+        Integer portInt = Integer.valueOf(port);
+
+        Socket s = new Socket(host, portInt);
+        BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
+        String requestLine = methodName + " /" + path + " HTTP/1.1\r\n";
+        writer.write(requestLine);
+        writer.write("Host: " + host + ":" + port + "\r\n");
+        writer.write("User-Agent: systest-client\r\n");
+        writer.write("Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\n");
+        writer.write("Connection: close\r\n");
+        writer.write("\r\n");
+        writer.flush();
+        BufferedReader reader = new BufferedReader(new InputStreamReader(s.getInputStream()));
+        String cur = null;
+        StringBuilder builder = new StringBuilder();
+        rc[0] = -1;
+        while (null != (cur = reader.readLine())) {
+            if (-1 == rc[0]) {
+                String [] tokens = cur.split("\\s");
+                rc[0] = Integer.valueOf(tokens[1]);
+            }
+            builder.append(cur).append("\n");
+        }
+        writer.close();
+
+        
+        return builder.toString();
+    }
+    
+}
diff --git a/test/util/src/test/java/com/sun/faces/test/junit/JsfNoVersionTest.java b/test/util/src/test/java/com/sun/faces/test/junit/JsfNoVersionTest.java
new file mode 100644
index 0000000..dcb8197
--- /dev/null
+++ b/test/util/src/test/java/com/sun/faces/test/junit/JsfNoVersionTest.java
@@ -0,0 +1,51 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.junit;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+ at RunWith(JsfTestRunner.class)
+public class JsfNoVersionTest {
+
+    @Test
+    public void testJsfNoVersion() {
+    }
+}
diff --git a/test/util/src/test/java/com/sun/faces/test/junit/JsfVersion2_2_0_m01Test.java b/test/util/src/test/java/com/sun/faces/test/junit/JsfVersion2_2_0_m01Test.java
new file mode 100644
index 0000000..2d3d624
--- /dev/null
+++ b/test/util/src/test/java/com/sun/faces/test/junit/JsfVersion2_2_0_m01Test.java
@@ -0,0 +1,52 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.junit;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+ at JsfTest(JsfVersion.JSF_2_2_0_M01)
+ at RunWith(JsfTestRunner.class)
+public class JsfVersion2_2_0_m01Test {
+
+    @Test
+    public void testJsfVersion2_2_0_m01() {
+    }
+}
diff --git a/test/util/src/test/java/com/sun/faces/test/junit/JsfVersion2_2_0_m02Test.java b/test/util/src/test/java/com/sun/faces/test/junit/JsfVersion2_2_0_m02Test.java
new file mode 100644
index 0000000..00faf01
--- /dev/null
+++ b/test/util/src/test/java/com/sun/faces/test/junit/JsfVersion2_2_0_m02Test.java
@@ -0,0 +1,52 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.junit;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+ at JsfTest(JsfVersion.JSF_2_2_0_M02)
+ at RunWith(JsfTestRunner.class)
+public class JsfVersion2_2_0_m02Test {
+
+    @Test
+    public void testJsfVersion2_2_0_m02() {
+    }
+}
diff --git a/test/util/src/test/java/com/sun/faces/test/junit/JsfVersion2_2_0_m03Test.java b/test/util/src/test/java/com/sun/faces/test/junit/JsfVersion2_2_0_m03Test.java
new file mode 100644
index 0000000..20880f2
--- /dev/null
+++ b/test/util/src/test/java/com/sun/faces/test/junit/JsfVersion2_2_0_m03Test.java
@@ -0,0 +1,52 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.junit;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+ at JsfTest(JsfVersion.JSF_2_2_0_M03)
+ at RunWith(JsfTestRunner.class)
+public class JsfVersion2_2_0_m03Test {
+
+    @Test
+    public void testJsfVersion2_2_0_m03() {
+    }
+}
diff --git a/test/util/src/test/java/com/sun/faces/test/junit/JsfVersion2_2_0_m04Test.java b/test/util/src/test/java/com/sun/faces/test/junit/JsfVersion2_2_0_m04Test.java
new file mode 100644
index 0000000..022d71f
--- /dev/null
+++ b/test/util/src/test/java/com/sun/faces/test/junit/JsfVersion2_2_0_m04Test.java
@@ -0,0 +1,52 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.junit;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+ at JsfTest(JsfVersion.JSF_2_2_0_M04)
+ at RunWith(JsfTestRunner.class)
+public class JsfVersion2_2_0_m04Test {
+
+    @Test
+    public void testJsfVersion2_2_0_m04() {
+    }
+}
diff --git a/test/util/src/test/java/com/sun/faces/test/junit/JsfVersion2_2_0_m05Test.java b/test/util/src/test/java/com/sun/faces/test/junit/JsfVersion2_2_0_m05Test.java
new file mode 100644
index 0000000..b953d47
--- /dev/null
+++ b/test/util/src/test/java/com/sun/faces/test/junit/JsfVersion2_2_0_m05Test.java
@@ -0,0 +1,52 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.junit;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+ at JsfTest(JsfVersion.JSF_2_2_0_M05)
+ at RunWith(JsfTestRunner.class)
+public class JsfVersion2_2_0_m05Test {
+
+    @Test
+    public void testJsfVersion2_2_0_m05() {
+    }
+}
diff --git a/test/util/src/test/java/com/sun/faces/test/junit/JsfVersion2_2_0_m06Test.java b/test/util/src/test/java/com/sun/faces/test/junit/JsfVersion2_2_0_m06Test.java
new file mode 100644
index 0000000..633280c
--- /dev/null
+++ b/test/util/src/test/java/com/sun/faces/test/junit/JsfVersion2_2_0_m06Test.java
@@ -0,0 +1,52 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.junit;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+ at JsfTest(JsfVersion.JSF_2_2_0_M06)
+ at RunWith(JsfTestRunner.class)
+public class JsfVersion2_2_0_m06Test {
+
+    @Test
+    public void testJsfVersion2_2_0_m06() {
+    }
+}
diff --git a/test/util/src/test/java/com/sun/faces/test/junit/JsfVersion2_2_0_m07Test.java b/test/util/src/test/java/com/sun/faces/test/junit/JsfVersion2_2_0_m07Test.java
new file mode 100644
index 0000000..f439e25
--- /dev/null
+++ b/test/util/src/test/java/com/sun/faces/test/junit/JsfVersion2_2_0_m07Test.java
@@ -0,0 +1,52 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.junit;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+ at JsfTest(JsfVersion.JSF_2_2_0_M07)
+ at RunWith(JsfTestRunner.class)
+public class JsfVersion2_2_0_m07Test {
+
+    @Test
+    public void testJsfVersion2_2_0_m07() {
+    }
+}
diff --git a/test/util/src/test/java/com/sun/faces/test/util/ClusterUtilsTest.java b/test/util/src/test/java/com/sun/faces/test/util/ClusterUtilsTest.java
new file mode 100644
index 0000000..d472c79
--- /dev/null
+++ b/test/util/src/test/java/com/sun/faces/test/util/ClusterUtilsTest.java
@@ -0,0 +1,20 @@
+package com.sun.faces.test.util;
+
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class ClusterUtilsTest {
+    
+    /**
+     * Test getBaseUrls method.
+     */
+    @Test
+    public void testGetBaseUrls() {
+        System.setProperty("integration.url", "dummy");
+        assertEquals(1, ClusterUtils.getBaseUrls().length);
+        System.setProperty("integration.url2", "dummy2");
+        assertEquals(2, ClusterUtils.getBaseUrls().length);
+        System.setProperty("integration.url2", "");
+        assertEquals(1, ClusterUtils.getBaseUrls().length);
+    }
+}
diff --git a/test/web-profile/adf/basic/nbactions.xml b/test/web-profile/adf/basic/nbactions.xml
new file mode 100644
index 0000000..5d5d9f7
--- /dev/null
+++ b/test/web-profile/adf/basic/nbactions.xml
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<actions>
+    <action>
+        <actionName>debug.test.single</actionName>
+        <goals>
+            <goal>test-compile</goal>
+            <goal>surefire:test</goal>
+        </goals>
+        <properties>
+            <test>${packageClassName}</test>
+            <forkMode>once</forkMode>
+            <maven.surefire.debug>-Xdebug -Xrunjdwp:transport=dt_socket,server=n,address=${jpda.address}</maven.surefire.debug>
+            <jpda.listen>true</jpda.listen>
+            <integration.url>http://localhost:8080/test-webprofile-adf-basic/</integration.url>
+        </properties>
+    </action>
+    <action>
+        <actionName>test.single</actionName>
+        <goals>
+            <goal>test-compile</goal>
+            <goal>surefire:test</goal>
+        </goals>
+        <properties>
+            <integration.url>http://localhost:8080/test-webprofile-adf-basic/</integration.url>
+            <test>${packageClassName}</test>
+        </properties>
+    </action>
+</actions>
diff --git a/test/web-profile/adf/basic/pom.xml b/test/web-profile/adf/basic/pom.xml
new file mode 100644
index 0000000..3c4ccd3
--- /dev/null
+++ b/test/web-profile/adf/basic/pom.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.webprofile.adf</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.webprofile.adf</groupId>
+    <artifactId>basic</artifactId>
+    <packaging>war</packaging>
+    <name>Mojarra ${project.version} - Test - Web-Profile - ADF - Basic Tests</name>
+    <build>
+        <finalName>test-webprofile-adf-basic</finalName>
+    </build>
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.myfaces.trinidad</groupId>
+            <artifactId>trinidad-api</artifactId>
+            <version>2.0.1</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.myfaces.trinidad</groupId>
+            <artifactId>trinidad-impl</artifactId>
+            <version>2.0.1</version>
+        </dependency>
+    </dependencies>
+    <properties>
+        <netbeans.hint.deploy.server>gfv3ee6</netbeans.hint.deploy.server>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/test/web-profile/adf/basic/src/main/webapp/WEB-INF/faces-config.xml b/test/web-profile/adf/basic/src/main/webapp/WEB-INF/faces-config.xml
new file mode 100644
index 0000000..383b5bc
--- /dev/null
+++ b/test/web-profile/adf/basic/src/main/webapp/WEB-INF/faces-config.xml
@@ -0,0 +1,65 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
+              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+              xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
+              version="2.0">
+    <name>D</name>
+
+    <!-- this ordering info shouldn't be considered -->
+    <ordering>
+        <before>
+            <others/>
+        </before>
+    </ordering>
+    <application>
+      <default-render-kit-id>
+        org.apache.myfaces.trinidad.core
+      </default-render-kit-id>
+    </application>
+     
+    
+
+
+</faces-config>
diff --git a/test/web-profile/adf/basic/src/main/webapp/WEB-INF/glassfish-web.xml b/test/web-profile/adf/basic/src/main/webapp/WEB-INF/glassfish-web.xml
new file mode 100644
index 0000000..3688df5
--- /dev/null
+++ b/test/web-profile/adf/basic/src/main/webapp/WEB-INF/glassfish-web.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
+<glassfish-web-app error-url="">
+  <context-root>/test-webprofile-adf-basic</context-root>
+  <class-loader delegate="true"/>
+  <jsp-config>
+    <property name="keepgenerated" value="true">
+      <description>Keep a copy of the generated servlet class' java code.</description>
+    </property>
+  </jsp-config>
+</glassfish-web-app>
diff --git a/test/web-profile/adf/basic/src/main/webapp/WEB-INF/trinidad-config.xml b/test/web-profile/adf/basic/src/main/webapp/WEB-INF/trinidad-config.xml
new file mode 100644
index 0000000..01e24b0
--- /dev/null
+++ b/test/web-profile/adf/basic/src/main/webapp/WEB-INF/trinidad-config.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<trinidad-config xmlns="http://myfaces.apache.org/trinidad/config">
+  <!-- Enable debug output -->
+  <debug-output>true</debug-output>
+
+  <!-- Pick accessibility options based on a per-user managed bean -->
+  <accessibility-mode>#{user.accessibilityMode}</accessibility-mode>
+
+  <!-- A silly use of EL: English users get one appearance, -->
+  <!-- others get another -->
+  <skin-family>
+    #{view.locale.language=='en' ?  'minimal' : 'customSkin'}
+  </skin-family>
+</trinidad-config>
diff --git a/test/web-profile/adf/basic/src/main/webapp/WEB-INF/web.xml b/test/web-profile/adf/basic/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..9274a83
--- /dev/null
+++ b/test/web-profile/adf/basic/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,126 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<web-app xmlns="http://java.sun.com/xml/ns/javaee"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee web-app_2_5.xsd"
+         version="2.5">
+
+    <description>
+       JSF Systests
+    </description>
+    <display-name>JSF Systests</display-name>
+    
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>${webapp.projectStage}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
+        <param-value>${webapp.partialStateSaving}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>${webapp.stateSavingMethod}</param-value>
+    </context-param>
+    
+    <!-- Faces Servlet -->
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup> 1 </load-on-startup>
+    </servlet>
+
+    <!-- Faces Servlet Mapping -->
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+
+    <servlet>
+      <servlet-name>resources</servlet-name>
+      <servlet-class>org.apache.myfaces.trinidad.webapp.ResourceServlet</servlet-class>
+     </servlet>    
+
+    <!-- This cannot be configured currently -->
+    <servlet-mapping>
+        <servlet-name>resources</servlet-name>
+        <url-pattern>/adf/*</url-pattern>
+    </servlet-mapping>
+    
+
+
+    <context-param>
+       <param-name>org.apache.myfaces.trinidad.ALTERNATE_VIEW_HANDLER</param-name>
+       <!-- TrinidadFaceletViewHander must be the alternate view handler if SessionChangeManager is used -->
+       <param-value>org.apache.myfaces.trinidadinternal.facelets.TrinidadFaceletViewHandler</param-value>
+     </context-param>
+
+     <context-param>
+       <!--Unfortunately, Facelets provides no hook for plugging the PageResolver into the logic
+         handling "facelets.VIEW_MAPPINGS". You should leave "facelets.VIEW_MAPPINGS"
+         unset and use "org.apache.myfaces.trinidad.FACELETS_VIEW_MAPPINGS" instead.-->
+       <param-name>org.apache.myfaces.trinidad.FACELETS_VIEW_MAPPINGS</param-name>
+       <param-value>*.xhtml</param-value>
+     </context-param>
+    
+    
+
+<filter>
+    <filter-name>trinidad</filter-name>
+    <filter-class>org.apache.myfaces.trinidad.webapp.TrinidadFilter</filter-class>
+  </filter>
+
+  <filter-mapping>
+    <filter-name>trinidad</filter-name>
+    <servlet-name>Faces Servlet</servlet-name>
+  </filter-mapping>
+
+
+    <welcome-file-list>
+        <welcome-file>faces/formomitted.xhtml</welcome-file>
+    </welcome-file-list>
+  
+
+
+</web-app>
diff --git a/test/web-profile/adf/basic/src/main/webapp/formomitted.xhtml b/test/web-profile/adf/basic/src/main/webapp/formomitted.xhtml
new file mode 100644
index 0000000..0e86fbb
--- /dev/null
+++ b/test/web-profile/adf/basic/src/main/webapp/formomitted.xhtml
@@ -0,0 +1,14 @@
+
+<tr:document
+   xmlns:ui="http://java.sun.com/jsf/facelets"
+   xmlns:h="http://java.sun.com/jsf/html"
+   xmlns:f="http://java.sun.com/jsf/core"
+   xmlns:tr="http://myfaces.apache.org/trinidad"
+   title="Facelets">
+
+<tr:form>
+  <tr:inputText value="Hello" />
+  <tr:commandButton text="submit"/>
+</tr:form>
+
+</tr:document>
\ No newline at end of file
diff --git a/test/web-profile/adf/basic/src/test/java/com/sun/faces/test/webprofile/adf/basic/FormOmittedTrinidadIT.java b/test/web-profile/adf/basic/src/test/java/com/sun/faces/test/webprofile/adf/basic/FormOmittedTrinidadIT.java
new file mode 100644
index 0000000..8be055a
--- /dev/null
+++ b/test/web-profile/adf/basic/src/test/java/com/sun/faces/test/webprofile/adf/basic/FormOmittedTrinidadIT.java
@@ -0,0 +1,78 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.webprofile.adf.basic;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.assertTrue;
+
+public class FormOmittedTrinidadIT {
+    
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+    
+    @Test
+    public void testFormOmittedTrinidad() throws Exception {
+        webClient.getOptions().setJavaScriptEnabled(false);
+        HtmlPage page = webClient.getPage(webUrl + "faces/formomitted.xhtml");
+
+        String pageAsText = page.asText();
+        assertTrue (!pageAsText.contains("The form component needs to have a UIForm in its ancestry. Suggestion: enclose the necessary components within <h:form>"));
+
+        String xml = page.asXml();
+        assertTrue(xml.matches("(?s).*link.*stylesheet.*adf/styles.*css.*"));
+        assertTrue(xml.matches("(?s).*AdfWindowOpenError.*"));
+        assertTrue(xml.matches("(?s).*script.*adf/jsLibs.*"));
+    }
+}
diff --git a/test/web-profile/adf/pom.xml b/test/web-profile/adf/pom.xml
new file mode 100644
index 0000000..75d61ce
--- /dev/null
+++ b/test/web-profile/adf/pom.xml
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.webprofile</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.webprofile.adf</groupId>
+    <artifactId>pom</artifactId>
+    <packaging>pom</packaging>
+    <name>Mojarra ${project.version} - Test - Web-Profile - ADF</name>
+    <modules>
+        <module>basic</module>
+    </modules>
+</project>
diff --git a/test/web-profile/facelets/core/nbactions.xml b/test/web-profile/facelets/core/nbactions.xml
new file mode 100644
index 0000000..746010a
--- /dev/null
+++ b/test/web-profile/facelets/core/nbactions.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<actions>
+        <action>
+            <actionName>debug.test.single</actionName>
+            <goals>
+                <goal>test-compile</goal>
+                <goal>surefire:test</goal>
+            </goals>
+            <properties>
+                <test>${packageClassName}</test>
+                <forkMode>once</forkMode>
+                <maven.surefire.debug>-Xdebug -Xrunjdwp:transport=dt_socket,server=n,address=${jpda.address}</maven.surefire.debug>
+                <jpda.listen>true</jpda.listen>
+                <integration.url>http://localhost:8080/test-webprofile-facelets-core/</integration.url>
+            </properties>
+        </action>
+    </actions>
diff --git a/test/web-profile/facelets/core/pom.xml b/test/web-profile/facelets/core/pom.xml
new file mode 100644
index 0000000..74125b2
--- /dev/null
+++ b/test/web-profile/facelets/core/pom.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.webprofile.facelets</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.webprofile.facelets</groupId>
+    <artifactId>core</artifactId>
+    <packaging>war</packaging>
+    <name>Mojarra ${project.version} - Test - Web-Profile - Facelets - Core</name>
+    <build>
+        <finalName>test-webprofile-facelets-core</finalName>
+    </build>
+    <properties>
+        <netbeans.hint.deploy.server>gfv3ee6</netbeans.hint.deploy.server>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/test/web-profile/facelets/core/src/main/java/com/sun/faces/test/webprofile/facelets/core/EventPreRenderViewBean.java b/test/web-profile/facelets/core/src/main/java/com/sun/faces/test/webprofile/facelets/core/EventPreRenderViewBean.java
new file mode 100644
index 0000000..804f9de
--- /dev/null
+++ b/test/web-profile/facelets/core/src/main/java/com/sun/faces/test/webprofile/facelets/core/EventPreRenderViewBean.java
@@ -0,0 +1,61 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.webprofile.facelets.core;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.RequestScoped;
+
+ at ManagedBean
+ at RequestScoped
+public class EventPreRenderViewBean {
+
+    private int count = 0;
+
+    public EventPreRenderViewBean() {
+    }
+    
+    public void preRenderView() {
+        ++count;
+    }
+    
+    public int getCount() {
+        return this.count;
+    }
+}
diff --git a/test/web-profile/facelets/core/src/main/java/com/sun/faces/test/webprofile/facelets/core/ValidateRequiredBean.java b/test/web-profile/facelets/core/src/main/java/com/sun/faces/test/webprofile/facelets/core/ValidateRequiredBean.java
new file mode 100644
index 0000000..8d9057d
--- /dev/null
+++ b/test/web-profile/facelets/core/src/main/java/com/sun/faces/test/webprofile/facelets/core/ValidateRequiredBean.java
@@ -0,0 +1,30 @@
+package com.sun.faces.test.webprofile.facelets.core;
+
+import java.io.Serializable;
+import javax.faces.view.ViewScoped;
+import javax.inject.Named;
+
+ at Named
+ at ViewScoped
+public class ValidateRequiredBean implements Serializable {
+
+    private static final long serialVersionUID = -8114872795707646008L;
+    private String text1;
+    private String text2;
+
+    public String getText1() {
+        return text1;
+    }
+
+    public void setText1(String text1) {
+        this.text1 = text1;
+    }
+
+    public String getText2() {
+        return text2;
+    }
+
+    public void setText2(String text2) {
+        this.text2 = text2;
+    }
+}
diff --git a/test/web-profile/facelets/core/src/main/webapp/WEB-INF/beans.xml b/test/web-profile/facelets/core/src/main/webapp/WEB-INF/beans.xml
new file mode 100644
index 0000000..cc7c587
--- /dev/null
+++ b/test/web-profile/facelets/core/src/main/webapp/WEB-INF/beans.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://java.sun.com/xml/ns/javaee"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
+</beans>
diff --git a/test/web-profile/facelets/core/src/main/webapp/WEB-INF/faces-config.xml b/test/web-profile/facelets/core/src/main/webapp/WEB-INF/faces-config.xml
new file mode 100644
index 0000000..193e009
--- /dev/null
+++ b/test/web-profile/facelets/core/src/main/webapp/WEB-INF/faces-config.xml
@@ -0,0 +1,7 @@
+<?xml version='1.0' encoding='UTF-8'?>
+
+<faces-config version="2.0"
+              xmlns="http://java.sun.com/xml/ns/javaee"
+              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+              xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd">
+</faces-config>
diff --git a/test/web-profile/facelets/core/src/main/webapp/WEB-INF/glassfish-web.xml b/test/web-profile/facelets/core/src/main/webapp/WEB-INF/glassfish-web.xml
new file mode 100644
index 0000000..348394f
--- /dev/null
+++ b/test/web-profile/facelets/core/src/main/webapp/WEB-INF/glassfish-web.xml
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<glassfish-web-app error-url="">
+  <context-root>/test-webprofile-facelets-core</context-root>
+  <class-loader delegate="true"/>
+  <jsp-config>
+    <property name="keepgenerated" value="true">
+      <description>Keep a copy of the generated servlet class' java code.</description>
+    </property>
+  </jsp-config>
+</glassfish-web-app>
diff --git a/test/web-profile/facelets/core/src/main/webapp/WEB-INF/web.xml b/test/web-profile/facelets/core/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..a3c5c7b
--- /dev/null
+++ b/test/web-profile/facelets/core/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" 
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>${webapp.projectStage}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
+        <param-value>${webapp.partialStateSaving}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>${webapp.stateSavingMethod}</param-value>
+    </context-param>
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <session-config>
+        <session-timeout>30</session-timeout>
+    </session-config>
+    <welcome-file-list>
+        <welcome-file>faces/index.xhtml</welcome-file>
+    </welcome-file-list>
+</web-app>
diff --git a/test/web-profile/facelets/core/src/main/webapp/eventPreRenderView.xhtml b/test/web-profile/facelets/core/src/main/webapp/eventPreRenderView.xhtml
new file mode 100644
index 0000000..6aca67f
--- /dev/null
+++ b/test/web-profile/facelets/core/src/main/webapp/eventPreRenderView.xhtml
@@ -0,0 +1,16 @@
+<!DOCTYPE html>
+
+<html lang="en"
+      xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    <f:metadata>
+        <f:event type="preRenderView" listener="#{eventPreRenderViewBean.preRenderView}" />
+    </f:metadata>
+    <h:head>
+        <title>preRenderView fail</title>
+    </h:head>
+    <h:body>
+        #{eventPreRenderViewBean.count}
+    </h:body>
+</html>
diff --git a/test/web-profile/facelets/core/src/main/webapp/validateRequired.xhtml b/test/web-profile/facelets/core/src/main/webapp/validateRequired.xhtml
new file mode 100644
index 0000000..a5bba68
--- /dev/null
+++ b/test/web-profile/facelets/core/src/main/webapp/validateRequired.xhtml
@@ -0,0 +1,20 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    <h:body>
+        <h:form id="form1" prependId="false">
+            <h:inputText id="input2" value="#{validateRequiredBean.text2}">
+                <f:validateRequired />
+            </h:inputText>
+            
+            <h:commandButton value="submit" id="submit" />
+            
+            
+            <p id="messages"><h:messages /></p>
+        </h:form>
+    </h:body>
+</html>
diff --git a/test/web-profile/facelets/core/src/test/java/com/sun/faces/test/webprofile/facelets/core/Issue2719IT.java b/test/web-profile/facelets/core/src/test/java/com/sun/faces/test/webprofile/facelets/core/Issue2719IT.java
new file mode 100644
index 0000000..3f8a48b
--- /dev/null
+++ b/test/web-profile/facelets/core/src/test/java/com/sun/faces/test/webprofile/facelets/core/Issue2719IT.java
@@ -0,0 +1,79 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.webprofile.facelets.core;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class Issue2719IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testPreRenderViewListenerRegisteredOnlyOnce() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/eventPreRenderView.xhtml");
+        String serverName = page.getWebResponse().getResponseHeaderValue("Server");
+        
+        /*
+         * This issue is only fixed on GF 3.1.2.2 and later. We won't go back 
+         * and fix this on 3.1.1 and 3.1.2, hence we are excluding 3.1.1 and 
+         * 3.1.2 here.
+         */
+        if (serverName == null || (serverName.indexOf("3.1.1") == -1 && (serverName.indexOf("3.1.2") == -1 || serverName.indexOf("3.1.2.2") != -1))) {
+            assertTrue(page.asText().contains("1"));
+        }
+    }
+}
diff --git a/test/web-profile/facelets/core/src/test/java/com/sun/faces/test/webprofile/facelets/core/Issue3058IT.java b/test/web-profile/facelets/core/src/test/java/com/sun/faces/test/webprofile/facelets/core/Issue3058IT.java
new file mode 100644
index 0000000..1d1c0e4
--- /dev/null
+++ b/test/web-profile/facelets/core/src/test/java/com/sun/faces/test/webprofile/facelets/core/Issue3058IT.java
@@ -0,0 +1,88 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.webprofile.facelets.core;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
+import com.sun.faces.test.junit.JsfTestRunner;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+import org.junit.runner.RunWith;
+
+ at RunWith(JsfTestRunner.class)
+public class Issue3058IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+    
+    @Test
+    public void testValidateRequired() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/faces/validateRequired.xhtml");
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("submit");
+        page = button.click();
+        assertTrue(page.asText().contains("input2"));
+    }
+
+    @Test
+    public void testValidateRequiredNegative() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/faces/validateRequired.xhtml");
+        HtmlTextInput input = (HtmlTextInput) page.getElementById("input2");
+        input.setText("Some Value");
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("submit");
+        page = button.click();
+        assertTrue(!page.asText().contains("input2"));
+    }
+    
+}
diff --git a/test/web-profile/facelets/pom.xml b/test/web-profile/facelets/pom.xml
new file mode 100644
index 0000000..eb4d2a2
--- /dev/null
+++ b/test/web-profile/facelets/pom.xml
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.webprofile</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.webprofile.facelets</groupId>
+    <artifactId>pom</artifactId>
+    <packaging>pom</packaging>
+    <name>Mojarra ${project.version} - Test - Web-Profile - Facelets</name>
+    <modules>
+        <module>core</module>
+    </modules>
+</project>
diff --git a/test/web-profile/flow/basic-empty-flow-def/nbactions.xml b/test/web-profile/flow/basic-empty-flow-def/nbactions.xml
new file mode 100644
index 0000000..954fef3
--- /dev/null
+++ b/test/web-profile/flow/basic-empty-flow-def/nbactions.xml
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<actions>
+    <action>
+        <actionName>debug.test.single</actionName>
+        <goals>
+            <goal>test-compile</goal>
+            <goal>surefire:test</goal>
+        </goals>
+        <properties>
+            <test>${packageClassName}</test>
+            <forkMode>once</forkMode>
+            <maven.surefire.debug>-Xdebug -Xrunjdwp:transport=dt_socket,server=n,address=${jpda.address}</maven.surefire.debug>
+            <jpda.listen>true</jpda.listen>
+            <integration.url>http://localhost:8080/test-webprofile-flow-basic-empty-flow-def/</integration.url>
+        </properties>
+    </action>
+    <action>
+        <actionName>test.single</actionName>
+        <goals>
+            <goal>test-compile</goal>
+            <goal>surefire:test</goal>
+        </goals>
+        <properties>
+            <integration.url>http://localhost:8080/test-webprofile-flow-basic-empty-flow-def/</integration.url>
+            <test>${packageClassName}</test>
+        </properties>
+    </action>
+</actions>
diff --git a/test/web-profile/flow/basic-empty-flow-def/pom.xml b/test/web-profile/flow/basic-empty-flow-def/pom.xml
new file mode 100644
index 0000000..3e483c4
--- /dev/null
+++ b/test/web-profile/flow/basic-empty-flow-def/pom.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.webprofile.flow</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.webprofile.flow</groupId>
+    <artifactId>basic-empty-flow-def</artifactId>
+    <packaging>war</packaging>
+    <name>Mojarra ${project.version} - Test - Web-Profile - Flow - basic-empty-flow-def</name>
+    <build>
+        <finalName>test-webprofile-flow-basic-empty-flow-def</finalName>
+    </build>
+    <properties>
+        <netbeans.hint.deploy.server>gfv3ee6</netbeans.hint.deploy.server>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/test/web-profile/flow/basic-empty-flow-def/src/main/java/com/sun/faces/test/webprofile/flow/basic_empty_flow_def/FlowBean.java b/test/web-profile/flow/basic-empty-flow-def/src/main/java/com/sun/faces/test/webprofile/flow/basic_empty_flow_def/FlowBean.java
new file mode 100644
index 0000000..d3667d6
--- /dev/null
+++ b/test/web-profile/flow/basic-empty-flow-def/src/main/java/com/sun/faces/test/webprofile/flow/basic_empty_flow_def/FlowBean.java
@@ -0,0 +1,58 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.webprofile.flow.basic_empty_flow_def;
+
+import javax.faces.flow.FlowScoped;
+import java.io.Serializable;
+
+import javax.inject.Named;
+
+ at Named
+ at FlowScoped("bounded-task-flow")
+public class FlowBean implements Serializable {
+
+   public String getName() {
+       return "basicFlow";
+   }
+   
+   public String getReturnValue() {
+       return "/return1";
+   }
+}
diff --git a/test/web-profile/flow/basic-empty-flow-def/src/main/resources/META-INF/persistence.xml b/test/web-profile/flow/basic-empty-flow-def/src/main/resources/META-INF/persistence.xml
new file mode 100644
index 0000000..6377368
--- /dev/null
+++ b/test/web-profile/flow/basic-empty-flow-def/src/main/resources/META-INF/persistence.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<persistence version="2.0"
+   xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+   xsi:schemaLocation="
+        http://java.sun.com/xml/ns/persistence
+        http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
+   <persistence-unit name="primary">
+      <!-- If you are running in a production environment, add a managed 
+         data source, the example data source is just for development and testing! -->
+      <jta-data-source>java:jboss/datasources/acmeDS</jta-data-source>
+      <properties>
+         <!-- Properties for Hibernate -->
+         <property name="hibernate.hbm2ddl.auto" value="create-drop" />
+         <property name="hibernate.show_sql" value="false" />
+      </properties>
+   </persistence-unit>
+</persistence>
\ No newline at end of file
diff --git a/test/web-profile/flow/basic-empty-flow-def/src/main/webapp/WEB-INF/beans.xml b/test/web-profile/flow/basic-empty-flow-def/src/main/webapp/WEB-INF/beans.xml
new file mode 100644
index 0000000..c782f57
--- /dev/null
+++ b/test/web-profile/flow/basic-empty-flow-def/src/main/webapp/WEB-INF/beans.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- This file can be an empty text file (0 bytes) -->
+<!-- We're declaring the schema to save you time if you do have to configure 
+   this in the future -->
+<beans xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+   xsi:schemaLocation="
+        http://java.sun.com/xml/ns/javaee 
+        http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
+</beans>
diff --git a/test/web-profile/flow/basic-empty-flow-def/src/main/webapp/WEB-INF/glassfish-web.xml b/test/web-profile/flow/basic-empty-flow-def/src/main/webapp/WEB-INF/glassfish-web.xml
new file mode 100644
index 0000000..f252d23
--- /dev/null
+++ b/test/web-profile/flow/basic-empty-flow-def/src/main/webapp/WEB-INF/glassfish-web.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
+<glassfish-web-app error-url="">
+  <context-root>/test-webprofile-flow-basic-empty-flow-def</context-root>
+  <class-loader delegate="true"/>
+  <jsp-config>
+    <property name="keepgenerated" value="true">
+      <description>Keep a copy of the generated servlet class' java code.</description>
+    </property>
+  </jsp-config>
+</glassfish-web-app>
diff --git a/test/web-profile/flow/basic-empty-flow-def/src/main/webapp/WEB-INF/web.xml b/test/web-profile/flow/basic-empty-flow-def/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..74e3339
--- /dev/null
+++ b/test/web-profile/flow/basic-empty-flow-def/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>${webapp.projectStage}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
+        <param-value>${webapp.partialStateSaving}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>${webapp.stateSavingMethod}</param-value>
+    </context-param>
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <welcome-file-list>
+        <welcome-file>faces/index.xhtml</welcome-file>
+    </welcome-file-list>
+</web-app>
diff --git a/test/web-profile/flow/basic-empty-flow-def/src/main/webapp/bounded-task-flow-return.xhtml b/test/web-profile/flow/basic-empty-flow-def/src/main/webapp/bounded-task-flow-return.xhtml
new file mode 100644
index 0000000..82df218
--- /dev/null
+++ b/test/web-profile/flow/basic-empty-flow-def/src/main/webapp/bounded-task-flow-return.xhtml
@@ -0,0 +1,61 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <head>
+        <title>Page navigated to upon return from bounded-task-flow</title>
+    </head>
+    <body>
+        <h1>Page navigated to upon return from bounded-task-flow</h1>
+        
+    <h:form prependId="false">
+        <p>return page</p>
+        
+        <p>flowScope value, should be empty: #{flowScope.value}</p>
+                
+    </h:form>
+</body>
+</html>
diff --git a/test/web-profile/flow/basic-empty-flow-def/src/main/webapp/bounded-task-flow/bounded-task-flow-flow.xml b/test/web-profile/flow/basic-empty-flow-def/src/main/webapp/bounded-task-flow/bounded-task-flow-flow.xml
new file mode 100644
index 0000000..e69de29
diff --git a/test/web-profile/flow/basic-empty-flow-def/src/main/webapp/bounded-task-flow/bounded-task-flow.xhtml b/test/web-profile/flow/basic-empty-flow-def/src/main/webapp/bounded-task-flow/bounded-task-flow.xhtml
new file mode 100644
index 0000000..99c5973
--- /dev/null
+++ b/test/web-profile/flow/basic-empty-flow-def/src/main/webapp/bounded-task-flow/bounded-task-flow.xhtml
@@ -0,0 +1,64 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    
+    <head>
+        <title>First page in the flow</title>
+    </head>
+    <body>
+    <h:form prependId="false">
+        <p>First page in the flow</p>
+        <p>Flow bean name: #{flowBean.name}</p>
+        
+        <p><h:commandButton id="index" value="home" action="/index" /></p>
+        <p><h:commandButton id="next_a" value="next" action="next_a" /></p>
+        <p><h:commandButton id="nonFlow" value="nonFlow" action="/nonFlow" /></p>
+        
+    </h:form>
+    </body>
+</html>
diff --git a/test/web-profile/flow/basic-empty-flow-def/src/main/webapp/bounded-task-flow/next_a.xhtml b/test/web-profile/flow/basic-empty-flow-def/src/main/webapp/bounded-task-flow/next_a.xhtml
new file mode 100644
index 0000000..4a1e156
--- /dev/null
+++ b/test/web-profile/flow/basic-empty-flow-def/src/main/webapp/bounded-task-flow/next_a.xhtml
@@ -0,0 +1,65 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    
+    <head>
+        <title>Second page in the flow</title>
+    </head>
+    <body>
+    <h:form prependId="false">
+        <p>Second page in the flow</p>
+        <p>Flow bean name: #{flowBean.name}</p>
+        
+        <p>value: <h:inputText id="input" value="#{flowScope.value}" /></p>
+        
+        <p><h:commandButton id="start" value="back" action="bounded-task-flow" /></p>
+        <p><h:commandButton id="next" value="next" action="next_b" /></p>
+        
+    </h:form>
+    </body>
+</html>
diff --git a/test/web-profile/flow/basic-empty-flow-def/src/main/webapp/bounded-task-flow/next_b.xhtml b/test/web-profile/flow/basic-empty-flow-def/src/main/webapp/bounded-task-flow/next_b.xhtml
new file mode 100644
index 0000000..4dda25c
--- /dev/null
+++ b/test/web-profile/flow/basic-empty-flow-def/src/main/webapp/bounded-task-flow/next_b.xhtml
@@ -0,0 +1,66 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    
+    <head>
+        <title>Last page in the flow</title>
+    </head>
+    <body>
+        
+        <p>Last page in the flow</p>
+        <p>Flow bean name: #{flowBean.name}</p>
+        
+        <p>value: #{flowScope.value}</p>
+        
+    <h:form prependId="false">
+        <p><h:commandButton id="back" value="back" action="next_a" /></p>
+        <p><h:commandButton id="return" value="return" action="bounded-task-flow-return" /></p>
+        
+    </h:form>
+    </body>
+</html>
diff --git a/test/web-profile/flow/basic-empty-flow-def/src/main/webapp/index.xhtml b/test/web-profile/flow/basic-empty-flow-def/src/main/webapp/index.xhtml
new file mode 100644
index 0000000..2277d98
--- /dev/null
+++ b/test/web-profile/flow/basic-empty-flow-def/src/main/webapp/index.xhtml
@@ -0,0 +1,59 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <head>
+        <title>Page with link to flow entry</title>
+    </head>
+    <body>
+        <h1>Page with link to flow entry</h1>
+        
+    <h:form prependId="false">
+        <p><h:commandButton id="start" value="start flow on valid entry node" action="bounded-task-flow" /></p>
+        <p><h:commandButton id="stay" value="stay" /></p>
+    </h:form>
+</body>
+</html>
diff --git a/test/web-profile/flow/basic-empty-flow-def/src/test/java/com/sun/faces/test/webprofile/flow/basic_empty_flow_def/BasicEmptyFlowDefEntryExitIT.java b/test/web-profile/flow/basic-empty-flow-def/src/test/java/com/sun/faces/test/webprofile/flow/basic_empty_flow_def/BasicEmptyFlowDefEntryExitIT.java
new file mode 100644
index 0000000..ed59062
--- /dev/null
+++ b/test/web-profile/flow/basic-empty-flow-def/src/test/java/com/sun/faces/test/webprofile/flow/basic_empty_flow_def/BasicEmptyFlowDefEntryExitIT.java
@@ -0,0 +1,156 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.webprofile.flow.basic_empty_flow_def;
+
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
+import static org.junit.Assert.assertTrue;
+
+public class BasicEmptyFlowDefEntryExitIT {
+    /**
+     * Stores the web URL.
+     */
+    private String webUrl;
+    /**
+     * Stores the web client.
+     */
+    private WebClient webClient;
+
+    /**
+     * Setup before testing.
+     * 
+     * @throws Exception when a serious error occurs.
+     */
+    @BeforeClass
+    public static void setUpClass() throws Exception {
+    }
+
+    /**
+     * Cleanup after testing.
+     * 
+     * @throws Exception when a serious error occurs.
+     */
+    @AfterClass
+    public static void tearDownClass() throws Exception {
+    }
+
+    /**
+     * Setup before testing.
+     */
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    /**
+     * Tear down after testing.
+     */
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testFlowEntryExit() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl);
+
+        assertTrue(page.getBody().asText().indexOf("Page with link to flow entry") != -1);
+
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("start");
+        page = button.click();
+        
+        String pageText = page.getBody().asText();
+        assertTrue(pageText.indexOf("First page in the flow") != -1);
+        assertTrue(pageText.contains("basicFlow"));
+        
+        page = webClient.getPage(webUrl);
+
+        assertTrue(page.getBody().asText().indexOf("Page with link to flow entry") != -1);
+
+        button = (HtmlSubmitInput) page.getElementById("start");
+        page = button.click();
+        
+        pageText = page.getBody().asText();
+        assertTrue(pageText.indexOf("First page in the flow") != -1);
+        assertTrue(pageText.contains("basicFlow"));   
+        
+    }
+    
+    @Test
+    public void testFacesFlowScope() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl);
+        
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("start");
+        page = button.click();
+
+        String pageText = page.getBody().asText();
+        assertTrue(pageText.indexOf("First page in the flow") != -1);
+        assertTrue(pageText.contains("basicFlow"));
+
+        button = (HtmlSubmitInput) page.getElementById("next_a");
+        page = button.click();
+        
+        HtmlTextInput input = (HtmlTextInput) page.getElementById("input");
+        final String flowScopeValue = "Value in faces flow scope";
+        input.setValueAttribute(flowScopeValue);
+        
+        button = (HtmlSubmitInput) page.getElementById("next");
+        page = button.click();
+        
+        assertTrue(page.asText().contains(flowScopeValue));
+        
+        button = (HtmlSubmitInput) page.getElementById("return");
+        page = button.click();
+        
+        assertTrue(page.asText().contains("return page"));
+        assertTrue(!page.asText().contains(flowScopeValue));
+        
+        
+        
+    }
+}
diff --git a/test/web-profile/flow/basic-implicit/nbactions.xml b/test/web-profile/flow/basic-implicit/nbactions.xml
new file mode 100644
index 0000000..8ac85b5
--- /dev/null
+++ b/test/web-profile/flow/basic-implicit/nbactions.xml
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<actions>
+    <action>
+        <actionName>debug.test.single</actionName>
+        <goals>
+            <goal>test-compile</goal>
+            <goal>surefire:test</goal>
+        </goals>
+        <properties>
+            <test>${packageClassName}</test>
+            <forkMode>once</forkMode>
+            <maven.surefire.debug>-Xdebug -Xrunjdwp:transport=dt_socket,server=n,address=${jpda.address}</maven.surefire.debug>
+            <jpda.listen>true</jpda.listen>
+            <integration.url>http://localhost:8080/test-webprofile-flow-basic-implicit/</integration.url>
+        </properties>
+    </action>
+    <action>
+        <actionName>test.single</actionName>
+        <goals>
+            <goal>test-compile</goal>
+            <goal>surefire:test</goal>
+        </goals>
+        <properties>
+            <integration.url>http://localhost:8080/test-webprofile-flow-basic-implicit/</integration.url>
+            <test>${packageClassName}</test>
+        </properties>
+    </action>
+</actions>
diff --git a/test/web-profile/flow/basic-implicit/pom.xml b/test/web-profile/flow/basic-implicit/pom.xml
new file mode 100644
index 0000000..d95dd56
--- /dev/null
+++ b/test/web-profile/flow/basic-implicit/pom.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.webprofile.flow</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.webprofile.flow</groupId>
+    <artifactId>basic-implicit</artifactId>
+    <packaging>war</packaging>
+    <name>Mojarra ${project.version} - Test - Web-Profile - Flow - Basic-Implicit Tests</name>
+    <build>
+        <finalName>test-webprofile-flow-basic-implicit</finalName>
+    </build>
+    <properties>
+        <netbeans.hint.deploy.server>gfv3ee6</netbeans.hint.deploy.server>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/test/web-profile/flow/basic-implicit/src/main/java/com/sun/faces/test/webprofile/flow/basic_implicit/FlowBean.java b/test/web-profile/flow/basic-implicit/src/main/java/com/sun/faces/test/webprofile/flow/basic_implicit/FlowBean.java
new file mode 100644
index 0000000..4a843db
--- /dev/null
+++ b/test/web-profile/flow/basic-implicit/src/main/java/com/sun/faces/test/webprofile/flow/basic_implicit/FlowBean.java
@@ -0,0 +1,60 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.webprofile.flow.basic_implicit;
+
+import javax.faces.flow.FlowScoped;
+import java.io.Serializable;
+
+import javax.inject.Named;
+
+ at Named
+ at FlowScoped("flow")
+public class FlowBean implements Serializable {
+
+    public FlowBean() {
+        System.out.println("FlowBean ctor");
+    }
+    
+    
+
+   public String getName() {
+       return "basicFlow";
+   }
+}
diff --git a/test/web-profile/flow/basic-implicit/src/main/resources/META-INF/persistence.xml b/test/web-profile/flow/basic-implicit/src/main/resources/META-INF/persistence.xml
new file mode 100644
index 0000000..6377368
--- /dev/null
+++ b/test/web-profile/flow/basic-implicit/src/main/resources/META-INF/persistence.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<persistence version="2.0"
+   xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+   xsi:schemaLocation="
+        http://java.sun.com/xml/ns/persistence
+        http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
+   <persistence-unit name="primary">
+      <!-- If you are running in a production environment, add a managed 
+         data source, the example data source is just for development and testing! -->
+      <jta-data-source>java:jboss/datasources/acmeDS</jta-data-source>
+      <properties>
+         <!-- Properties for Hibernate -->
+         <property name="hibernate.hbm2ddl.auto" value="create-drop" />
+         <property name="hibernate.show_sql" value="false" />
+      </properties>
+   </persistence-unit>
+</persistence>
\ No newline at end of file
diff --git a/test/web-profile/flow/basic-implicit/src/main/webapp/WEB-INF/beans.xml b/test/web-profile/flow/basic-implicit/src/main/webapp/WEB-INF/beans.xml
new file mode 100644
index 0000000..c782f57
--- /dev/null
+++ b/test/web-profile/flow/basic-implicit/src/main/webapp/WEB-INF/beans.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- This file can be an empty text file (0 bytes) -->
+<!-- We're declaring the schema to save you time if you do have to configure 
+   this in the future -->
+<beans xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+   xsi:schemaLocation="
+        http://java.sun.com/xml/ns/javaee 
+        http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
+</beans>
diff --git a/test/web-profile/flow/basic-implicit/src/main/webapp/WEB-INF/faces-config.xml b/test/web-profile/flow/basic-implicit/src/main/webapp/WEB-INF/faces-config.xml
new file mode 100644
index 0000000..e1a2cae
--- /dev/null
+++ b/test/web-profile/flow/basic-implicit/src/main/webapp/WEB-INF/faces-config.xml
@@ -0,0 +1,58 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<faces-config version="2.2" xmlns="http://xmlns.jcp.org/xml/ns/javaee"
+   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+   xsi:schemaLocation="
+        http://xmlns.jcp.org/xml/ns/javaee
+        http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd">
+
+        <flow-definition id="flow">
+            <start-node>start</start-node>
+            <view id="start">
+                <vdl-document>/start.xhtml</vdl-document>
+            </view>
+            
+
+        </flow-definition>
+</faces-config>
\ No newline at end of file
diff --git a/test/web-profile/flow/basic-implicit/src/main/webapp/WEB-INF/glassfish-web.xml b/test/web-profile/flow/basic-implicit/src/main/webapp/WEB-INF/glassfish-web.xml
new file mode 100644
index 0000000..ddf217f
--- /dev/null
+++ b/test/web-profile/flow/basic-implicit/src/main/webapp/WEB-INF/glassfish-web.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
+<glassfish-web-app error-url="">
+  <context-root>/test-webprofile-flow-basic-implicit</context-root>
+  <class-loader delegate="true"/>
+  <jsp-config>
+    <property name="keepgenerated" value="true">
+      <description>Keep a copy of the generated servlet class' java code.</description>
+    </property>
+  </jsp-config>
+</glassfish-web-app>
diff --git a/test/web-profile/flow/basic-implicit/src/main/webapp/WEB-INF/web.xml b/test/web-profile/flow/basic-implicit/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..74e3339
--- /dev/null
+++ b/test/web-profile/flow/basic-implicit/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>${webapp.projectStage}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
+        <param-value>${webapp.partialStateSaving}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>${webapp.stateSavingMethod}</param-value>
+    </context-param>
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <welcome-file-list>
+        <welcome-file>faces/index.xhtml</welcome-file>
+    </welcome-file-list>
+</web-app>
diff --git a/test/web-profile/flow/basic-implicit/src/main/webapp/index.xhtml b/test/web-profile/flow/basic-implicit/src/main/webapp/index.xhtml
new file mode 100644
index 0000000..644e786
--- /dev/null
+++ b/test/web-profile/flow/basic-implicit/src/main/webapp/index.xhtml
@@ -0,0 +1,59 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <head>
+        <title>Page with link to flow entry</title>
+    </head>
+    <body>
+        <h1>Page with link to flow entry</h1>
+        
+    <h:form prependId="false">
+        <p><h:commandButton id="start" value="start" action="flow" /></p>
+        <p><h:commandButton id="stay" value="stay" /></p>
+    </h:form>
+</body>
+</html>
diff --git a/test/web-profile/flow/basic-implicit/src/main/webapp/start.xhtml b/test/web-profile/flow/basic-implicit/src/main/webapp/start.xhtml
new file mode 100644
index 0000000..5d9f561
--- /dev/null
+++ b/test/web-profile/flow/basic-implicit/src/main/webapp/start.xhtml
@@ -0,0 +1,63 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    
+    <head>
+        <title>First page in the flow</title>
+    </head>
+    <body>
+    <h:form prependId="false">
+        <p>First page in the flow</p>
+        <p>Flow bean name: #{flowBean.name}</p>
+        
+        <p><h:commandButton id="index" value="home" action="index" /></p>
+        <p><h:commandButton id="nonFlow" value="nonFlow" action="nonFlow" /></p>
+        
+    </h:form>
+    </body>
+</html>
diff --git a/test/web-profile/flow/basic-implicit/src/test/java/com/sun/faces/test/webprofile/flow/basic_implicit/BasicFlowEntryExitIT.java b/test/web-profile/flow/basic-implicit/src/test/java/com/sun/faces/test/webprofile/flow/basic_implicit/BasicFlowEntryExitIT.java
new file mode 100644
index 0000000..3317faa
--- /dev/null
+++ b/test/web-profile/flow/basic-implicit/src/test/java/com/sun/faces/test/webprofile/flow/basic_implicit/BasicFlowEntryExitIT.java
@@ -0,0 +1,123 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.webprofile.flow.basic_implicit;
+
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.junit.Ignore;
+import static org.junit.Assert.assertTrue;
+
+public class BasicFlowEntryExitIT {
+    /**
+     * Stores the web URL.
+     */
+    private String webUrl;
+    /**
+     * Stores the web client.
+     */
+    private WebClient webClient;
+
+    /**
+     * Setup before testing.
+     * 
+     * @throws Exception when a serious error occurs.
+     */
+    @BeforeClass
+    public static void setUpClass() throws Exception {
+    }
+
+    /**
+     * Cleanup after testing.
+     * 
+     * @throws Exception when a serious error occurs.
+     */
+    @AfterClass
+    public static void tearDownClass() throws Exception {
+    }
+
+    /**
+     * Setup before testing.
+     */
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    /**
+     * Tear down after testing.
+     */
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testFlowEntryExit() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl);
+
+        assertTrue(page.getBody().asText().indexOf("Page with link to flow entry") != -1);
+
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("start");
+        page = button.click();
+        
+        String pageText = page.getBody().asText();
+        assertTrue(pageText.indexOf("First page in the flow") != -1);
+        assertTrue(pageText.contains("basicFlow"));
+        
+        page = webClient.getPage(webUrl);
+
+        assertTrue(page.getBody().asText().indexOf("Page with link to flow entry") != -1);
+
+        button = (HtmlSubmitInput) page.getElementById("start");
+        page = button.click();
+        
+        pageText = page.getBody().asText();
+        assertTrue(pageText.indexOf("First page in the flow") != -1);
+        assertTrue(pageText.contains("basicFlow"));        
+        
+    }
+}
diff --git a/test/web-profile/flow/basic-multi-page-fdl-in-web-inf/nbactions.xml b/test/web-profile/flow/basic-multi-page-fdl-in-web-inf/nbactions.xml
new file mode 100644
index 0000000..4f30ed2
--- /dev/null
+++ b/test/web-profile/flow/basic-multi-page-fdl-in-web-inf/nbactions.xml
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<actions>
+    <action>
+        <actionName>debug.test.single</actionName>
+        <goals>
+            <goal>test-compile</goal>
+            <goal>surefire:test</goal>
+        </goals>
+        <properties>
+            <test>${packageClassName}</test>
+            <forkMode>once</forkMode>
+            <maven.surefire.debug>-Xdebug -Xrunjdwp:transport=dt_socket,server=n,address=${jpda.address}</maven.surefire.debug>
+            <jpda.listen>true</jpda.listen>
+            <integration.url>http://localhost:8080/test-webprofile-flow-basic_multi_page_fdl_in_web_inf/</integration.url>
+        </properties>
+    </action>
+    <action>
+        <actionName>test.single</actionName>
+        <goals>
+            <goal>test-compile</goal>
+            <goal>surefire:test</goal>
+        </goals>
+        <properties>
+            <integration.url>http://localhost:8080/test-webprofile-flow-basic_multi_page_fdl_in_web_inf/</integration.url>
+            <test>${packageClassName}</test>
+        </properties>
+    </action>
+</actions>
diff --git a/test/web-profile/flow/basic-multi-page-fdl-in-web-inf/pom.xml b/test/web-profile/flow/basic-multi-page-fdl-in-web-inf/pom.xml
new file mode 100644
index 0000000..65b6aa0
--- /dev/null
+++ b/test/web-profile/flow/basic-multi-page-fdl-in-web-inf/pom.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.webprofile.flow</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.webprofile.flow</groupId>
+    <artifactId>basic_multi_page_fdl_in_web_inf</artifactId>
+    <packaging>war</packaging>
+    <name>Mojarra ${project.version} - Test - Web-Profile - Flow - Basic With Multi Page Flow Tests with the FDL in WEB-INF</name>
+    <build>
+        <finalName>test-webprofile-flow-basic_multi_page_fdl_in_web_inf</finalName>
+    </build>
+    <properties>
+        <netbeans.hint.deploy.server>gfv3ee6</netbeans.hint.deploy.server>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/test/web-profile/flow/basic-multi-page-fdl-in-web-inf/src/main/java/com/sun/faces/test/webprofile/flow/basic/FlowBean.java b/test/web-profile/flow/basic-multi-page-fdl-in-web-inf/src/main/java/com/sun/faces/test/webprofile/flow/basic/FlowBean.java
new file mode 100644
index 0000000..0853298
--- /dev/null
+++ b/test/web-profile/flow/basic-multi-page-fdl-in-web-inf/src/main/java/com/sun/faces/test/webprofile/flow/basic/FlowBean.java
@@ -0,0 +1,58 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.webprofile.flow.basic;
+
+import javax.faces.flow.FlowScoped;
+import java.io.Serializable;
+
+import javax.inject.Named;
+
+ at Named
+ at FlowScoped("bounded-task-flow")
+public class FlowBean implements Serializable {
+
+   public String getName() {
+       return "basicFlow";
+   }
+   
+   public String getReturnValue() {
+       return "/return1";
+   }
+}
diff --git a/test/web-profile/flow/basic-multi-page-fdl-in-web-inf/src/main/resources/META-INF/persistence.xml b/test/web-profile/flow/basic-multi-page-fdl-in-web-inf/src/main/resources/META-INF/persistence.xml
new file mode 100644
index 0000000..6377368
--- /dev/null
+++ b/test/web-profile/flow/basic-multi-page-fdl-in-web-inf/src/main/resources/META-INF/persistence.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<persistence version="2.0"
+   xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+   xsi:schemaLocation="
+        http://java.sun.com/xml/ns/persistence
+        http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
+   <persistence-unit name="primary">
+      <!-- If you are running in a production environment, add a managed 
+         data source, the example data source is just for development and testing! -->
+      <jta-data-source>java:jboss/datasources/acmeDS</jta-data-source>
+      <properties>
+         <!-- Properties for Hibernate -->
+         <property name="hibernate.hbm2ddl.auto" value="create-drop" />
+         <property name="hibernate.show_sql" value="false" />
+      </properties>
+   </persistence-unit>
+</persistence>
\ No newline at end of file
diff --git a/test/web-profile/flow/basic-multi-page-fdl-in-web-inf/src/main/webapp/WEB-INF/beans.xml b/test/web-profile/flow/basic-multi-page-fdl-in-web-inf/src/main/webapp/WEB-INF/beans.xml
new file mode 100644
index 0000000..c782f57
--- /dev/null
+++ b/test/web-profile/flow/basic-multi-page-fdl-in-web-inf/src/main/webapp/WEB-INF/beans.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- This file can be an empty text file (0 bytes) -->
+<!-- We're declaring the schema to save you time if you do have to configure 
+   this in the future -->
+<beans xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+   xsi:schemaLocation="
+        http://java.sun.com/xml/ns/javaee 
+        http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
+</beans>
diff --git a/test/web-profile/flow/basic-multi-page-fdl-in-web-inf/src/main/webapp/WEB-INF/bounded-task-flow/bounded-task-flow-flow.xml b/test/web-profile/flow/basic-multi-page-fdl-in-web-inf/src/main/webapp/WEB-INF/bounded-task-flow/bounded-task-flow-flow.xml
new file mode 100644
index 0000000..9a51526
--- /dev/null
+++ b/test/web-profile/flow/basic-multi-page-fdl-in-web-inf/src/main/webapp/WEB-INF/bounded-task-flow/bounded-task-flow-flow.xml
@@ -0,0 +1,57 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<faces-config version="2.2" xmlns="http://xmlns.jcp.org/xml/ns/javaee"
+   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+   xsi:schemaLocation="
+        http://xmlns.jcp.org/xml/ns/javaee
+        http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd">
+
+    <flow-definition id="bounded-task-flow">
+        <flow-return id="taskFlowReturn1">
+            <from-outcome>#{flowBean.returnValue}</from-outcome>
+        </flow-return>
+        
+    </flow-definition>
+
+</faces-config>
\ No newline at end of file
diff --git a/test/web-profile/flow/basic-multi-page-fdl-in-web-inf/src/main/webapp/WEB-INF/web.xml b/test/web-profile/flow/basic-multi-page-fdl-in-web-inf/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..4b91d97
--- /dev/null
+++ b/test/web-profile/flow/basic-multi-page-fdl-in-web-inf/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <welcome-file-list>
+        <welcome-file>faces/index.xhtml</welcome-file>
+    </welcome-file-list>
+</web-app>
diff --git a/test/web-profile/flow/basic-multi-page-fdl-in-web-inf/src/main/webapp/bounded-task-flow/bounded-task-flow.xhtml b/test/web-profile/flow/basic-multi-page-fdl-in-web-inf/src/main/webapp/bounded-task-flow/bounded-task-flow.xhtml
new file mode 100644
index 0000000..99c5973
--- /dev/null
+++ b/test/web-profile/flow/basic-multi-page-fdl-in-web-inf/src/main/webapp/bounded-task-flow/bounded-task-flow.xhtml
@@ -0,0 +1,64 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    
+    <head>
+        <title>First page in the flow</title>
+    </head>
+    <body>
+    <h:form prependId="false">
+        <p>First page in the flow</p>
+        <p>Flow bean name: #{flowBean.name}</p>
+        
+        <p><h:commandButton id="index" value="home" action="/index" /></p>
+        <p><h:commandButton id="next_a" value="next" action="next_a" /></p>
+        <p><h:commandButton id="nonFlow" value="nonFlow" action="/nonFlow" /></p>
+        
+    </h:form>
+    </body>
+</html>
diff --git a/test/web-profile/flow/basic-multi-page-fdl-in-web-inf/src/main/webapp/bounded-task-flow/next_a.xhtml b/test/web-profile/flow/basic-multi-page-fdl-in-web-inf/src/main/webapp/bounded-task-flow/next_a.xhtml
new file mode 100644
index 0000000..4a1e156
--- /dev/null
+++ b/test/web-profile/flow/basic-multi-page-fdl-in-web-inf/src/main/webapp/bounded-task-flow/next_a.xhtml
@@ -0,0 +1,65 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    
+    <head>
+        <title>Second page in the flow</title>
+    </head>
+    <body>
+    <h:form prependId="false">
+        <p>Second page in the flow</p>
+        <p>Flow bean name: #{flowBean.name}</p>
+        
+        <p>value: <h:inputText id="input" value="#{flowScope.value}" /></p>
+        
+        <p><h:commandButton id="start" value="back" action="bounded-task-flow" /></p>
+        <p><h:commandButton id="next" value="next" action="next_b" /></p>
+        
+    </h:form>
+    </body>
+</html>
diff --git a/test/web-profile/flow/basic-multi-page-fdl-in-web-inf/src/main/webapp/bounded-task-flow/next_b.xhtml b/test/web-profile/flow/basic-multi-page-fdl-in-web-inf/src/main/webapp/bounded-task-flow/next_b.xhtml
new file mode 100644
index 0000000..ce02e18
--- /dev/null
+++ b/test/web-profile/flow/basic-multi-page-fdl-in-web-inf/src/main/webapp/bounded-task-flow/next_b.xhtml
@@ -0,0 +1,66 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    
+    <head>
+        <title>Last page in the flow</title>
+    </head>
+    <body>
+        
+        <p>Last page in the flow</p>
+        <p>Flow bean name: #{flowBean.name}</p>
+        
+        <p>value: #{flowScope.value}</p>
+        
+    <h:form prependId="false">
+        <p><h:commandButton id="back" value="back" action="next_a" /></p>
+        <p><h:commandButton id="return" value="return" action="taskFlowReturn1" /></p>
+        
+    </h:form>
+    </body>
+</html>
diff --git a/test/web-profile/flow/basic-multi-page-fdl-in-web-inf/src/main/webapp/index.xhtml b/test/web-profile/flow/basic-multi-page-fdl-in-web-inf/src/main/webapp/index.xhtml
new file mode 100644
index 0000000..2277d98
--- /dev/null
+++ b/test/web-profile/flow/basic-multi-page-fdl-in-web-inf/src/main/webapp/index.xhtml
@@ -0,0 +1,59 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <head>
+        <title>Page with link to flow entry</title>
+    </head>
+    <body>
+        <h1>Page with link to flow entry</h1>
+        
+    <h:form prependId="false">
+        <p><h:commandButton id="start" value="start flow on valid entry node" action="bounded-task-flow" /></p>
+        <p><h:commandButton id="stay" value="stay" /></p>
+    </h:form>
+</body>
+</html>
diff --git a/test/web-profile/flow/basic-multi-page-fdl-in-web-inf/src/main/webapp/return1.xhtml b/test/web-profile/flow/basic-multi-page-fdl-in-web-inf/src/main/webapp/return1.xhtml
new file mode 100644
index 0000000..82df218
--- /dev/null
+++ b/test/web-profile/flow/basic-multi-page-fdl-in-web-inf/src/main/webapp/return1.xhtml
@@ -0,0 +1,61 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <head>
+        <title>Page navigated to upon return from bounded-task-flow</title>
+    </head>
+    <body>
+        <h1>Page navigated to upon return from bounded-task-flow</h1>
+        
+    <h:form prependId="false">
+        <p>return page</p>
+        
+        <p>flowScope value, should be empty: #{flowScope.value}</p>
+                
+    </h:form>
+</body>
+</html>
diff --git a/test/web-profile/flow/basic-multi-page-fdl-in-web-inf/src/test/java/com/sun/faces/test/webprofile/flow/basic_in_web_inf/BasicInWebInfFlowEntryExitIT.java b/test/web-profile/flow/basic-multi-page-fdl-in-web-inf/src/test/java/com/sun/faces/test/webprofile/flow/basic_in_web_inf/BasicInWebInfFlowEntryExitIT.java
new file mode 100644
index 0000000..97e7143
--- /dev/null
+++ b/test/web-profile/flow/basic-multi-page-fdl-in-web-inf/src/test/java/com/sun/faces/test/webprofile/flow/basic_in_web_inf/BasicInWebInfFlowEntryExitIT.java
@@ -0,0 +1,156 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.webprofile.flow.basic_in_web_inf;
+
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
+import static org.junit.Assert.assertTrue;
+
+public class BasicInWebInfFlowEntryExitIT {
+    /**
+     * Stores the web URL.
+     */
+    private String webUrl;
+    /**
+     * Stores the web client.
+     */
+    private WebClient webClient;
+
+    /**
+     * Setup before testing.
+     * 
+     * @throws Exception when a serious error occurs.
+     */
+    @BeforeClass
+    public static void setUpClass() throws Exception {
+    }
+
+    /**
+     * Cleanup after testing.
+     * 
+     * @throws Exception when a serious error occurs.
+     */
+    @AfterClass
+    public static void tearDownClass() throws Exception {
+    }
+
+    /**
+     * Setup before testing.
+     */
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    /**
+     * Tear down after testing.
+     */
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testFlowEntryExit() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl);
+
+        assertTrue(page.getBody().asText().indexOf("Page with link to flow entry") != -1);
+
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("start");
+        page = button.click();
+        
+        String pageText = page.getBody().asText();
+        assertTrue(pageText.indexOf("First page in the flow") != -1);
+        assertTrue(pageText.contains("basicFlow"));
+        
+        page = webClient.getPage(webUrl);
+
+        assertTrue(page.getBody().asText().indexOf("Page with link to flow entry") != -1);
+
+        button = (HtmlSubmitInput) page.getElementById("start");
+        page = button.click();
+        
+        pageText = page.getBody().asText();
+        assertTrue(pageText.indexOf("First page in the flow") != -1);
+        assertTrue(pageText.contains("basicFlow"));   
+        
+    }
+    
+    @Test
+    public void testFacesFlowScope() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl);
+        
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("start");
+        page = button.click();
+
+        String pageText = page.getBody().asText();
+        assertTrue(pageText.indexOf("First page in the flow") != -1);
+        assertTrue(pageText.contains("basicFlow"));
+
+        button = (HtmlSubmitInput) page.getElementById("next_a");
+        page = button.click();
+        
+        HtmlTextInput input = (HtmlTextInput) page.getElementById("input");
+        final String flowScopeValue = "Value in faces flow scope";
+        input.setValueAttribute(flowScopeValue);
+        
+        button = (HtmlSubmitInput) page.getElementById("next");
+        page = button.click();
+        
+        assertTrue(page.asText().contains(flowScopeValue));
+        
+        button = (HtmlSubmitInput) page.getElementById("return");
+        page = button.click();
+        
+        assertTrue(page.asText().contains("return page"));
+        assertTrue(!page.asText().contains(flowScopeValue));
+        
+        
+        
+    }
+}
diff --git a/test/web-profile/flow/basic-multi-page/nbactions.xml b/test/web-profile/flow/basic-multi-page/nbactions.xml
new file mode 100644
index 0000000..22b8865
--- /dev/null
+++ b/test/web-profile/flow/basic-multi-page/nbactions.xml
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<actions>
+    <action>
+        <actionName>debug.test.single</actionName>
+        <goals>
+            <goal>test-compile</goal>
+            <goal>surefire:test</goal>
+        </goals>
+        <properties>
+            <test>${packageClassName}</test>
+            <forkMode>once</forkMode>
+            <maven.surefire.debug>-Xdebug -Xrunjdwp:transport=dt_socket,server=n,address=${jpda.address}</maven.surefire.debug>
+            <jpda.listen>true</jpda.listen>
+            <integration.url>http://localhost:8080/test-webprofile-flow-basic_multi_page/</integration.url>
+        </properties>
+    </action>
+    <action>
+        <actionName>test.single</actionName>
+        <goals>
+            <goal>test-compile</goal>
+            <goal>surefire:test</goal>
+        </goals>
+        <properties>
+            <integration.url>http://localhost:8080/test-webprofile-flow-basic_multi_page/</integration.url>
+            <test>${packageClassName}</test>
+        </properties>
+    </action>
+</actions>
diff --git a/test/web-profile/flow/basic-multi-page/pom.xml b/test/web-profile/flow/basic-multi-page/pom.xml
new file mode 100644
index 0000000..f03713b
--- /dev/null
+++ b/test/web-profile/flow/basic-multi-page/pom.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.webprofile.flow</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.webprofile.flow</groupId>
+    <artifactId>basic_multi_page</artifactId>
+    <packaging>war</packaging>
+    <name>Mojarra ${project.version} - Test - Web-Profile - Flow - Basic With Multi Page Flow Tests</name>
+    <build>
+        <finalName>test-webprofile-flow-basic_multi_page</finalName>
+    </build>
+    <properties>
+        <netbeans.hint.deploy.server>gfv3ee6</netbeans.hint.deploy.server>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/test/web-profile/flow/basic-multi-page/src/main/java/com/sun/faces/test/webprofile/flow/basic/FlowBean.java b/test/web-profile/flow/basic-multi-page/src/main/java/com/sun/faces/test/webprofile/flow/basic/FlowBean.java
new file mode 100644
index 0000000..0853298
--- /dev/null
+++ b/test/web-profile/flow/basic-multi-page/src/main/java/com/sun/faces/test/webprofile/flow/basic/FlowBean.java
@@ -0,0 +1,58 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.webprofile.flow.basic;
+
+import javax.faces.flow.FlowScoped;
+import java.io.Serializable;
+
+import javax.inject.Named;
+
+ at Named
+ at FlowScoped("bounded-task-flow")
+public class FlowBean implements Serializable {
+
+   public String getName() {
+       return "basicFlow";
+   }
+   
+   public String getReturnValue() {
+       return "/return1";
+   }
+}
diff --git a/test/web-profile/flow/basic-multi-page/src/main/resources/META-INF/persistence.xml b/test/web-profile/flow/basic-multi-page/src/main/resources/META-INF/persistence.xml
new file mode 100644
index 0000000..6377368
--- /dev/null
+++ b/test/web-profile/flow/basic-multi-page/src/main/resources/META-INF/persistence.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<persistence version="2.0"
+   xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+   xsi:schemaLocation="
+        http://java.sun.com/xml/ns/persistence
+        http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
+   <persistence-unit name="primary">
+      <!-- If you are running in a production environment, add a managed 
+         data source, the example data source is just for development and testing! -->
+      <jta-data-source>java:jboss/datasources/acmeDS</jta-data-source>
+      <properties>
+         <!-- Properties for Hibernate -->
+         <property name="hibernate.hbm2ddl.auto" value="create-drop" />
+         <property name="hibernate.show_sql" value="false" />
+      </properties>
+   </persistence-unit>
+</persistence>
\ No newline at end of file
diff --git a/test/web-profile/flow/basic-multi-page/src/main/webapp/WEB-INF/beans.xml b/test/web-profile/flow/basic-multi-page/src/main/webapp/WEB-INF/beans.xml
new file mode 100644
index 0000000..c782f57
--- /dev/null
+++ b/test/web-profile/flow/basic-multi-page/src/main/webapp/WEB-INF/beans.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- This file can be an empty text file (0 bytes) -->
+<!-- We're declaring the schema to save you time if you do have to configure 
+   this in the future -->
+<beans xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+   xsi:schemaLocation="
+        http://java.sun.com/xml/ns/javaee 
+        http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
+</beans>
diff --git a/test/web-profile/flow/basic-multi-page/src/main/webapp/WEB-INF/faces-config.xml b/test/web-profile/flow/basic-multi-page/src/main/webapp/WEB-INF/faces-config.xml
new file mode 100644
index 0000000..eb35394
--- /dev/null
+++ b/test/web-profile/flow/basic-multi-page/src/main/webapp/WEB-INF/faces-config.xml
@@ -0,0 +1,19 @@
+<?xml version='1.0' encoding='UTF-8'?>
+
+<!-- =========== FULL CONFIGURATION FILE ================================== -->
+
+<faces-config version="2.0"
+    xmlns="http://java.sun.com/xml/ns/javaee" 
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd">
+    
+        <navigation-rule>
+            <from-view-id>*</from-view-id>
+            <navigation-case>
+                <from-action>issue2997PageInFacesConfig</from-action>
+                <to-view-id>/issue2997PageInFacesConfig.xhtml</to-view-id>
+            </navigation-case>
+        </navigation-rule>
+            
+
+</faces-config>
diff --git a/test/web-profile/flow/basic-multi-page/src/main/webapp/WEB-INF/web.xml b/test/web-profile/flow/basic-multi-page/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..74e3339
--- /dev/null
+++ b/test/web-profile/flow/basic-multi-page/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>${webapp.projectStage}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
+        <param-value>${webapp.partialStateSaving}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>${webapp.stateSavingMethod}</param-value>
+    </context-param>
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <welcome-file-list>
+        <welcome-file>faces/index.xhtml</welcome-file>
+    </welcome-file-list>
+</web-app>
diff --git a/test/web-profile/flow/basic-multi-page/src/main/webapp/bounded-task-flow/bounded-task-flow-flow.xml b/test/web-profile/flow/basic-multi-page/src/main/webapp/bounded-task-flow/bounded-task-flow-flow.xml
new file mode 100644
index 0000000..c4e13a4
--- /dev/null
+++ b/test/web-profile/flow/basic-multi-page/src/main/webapp/bounded-task-flow/bounded-task-flow-flow.xml
@@ -0,0 +1,57 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<faces-config version="2.2" xmlns="http://xmlns.jcp.org/xml/ns/javaee"
+   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+   xsi:schemaLocation="
+        http://xmlns.jcp.org/xml/ns/javaee
+        http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd">
+    
+    <flow-definition id="bounded-task-flow">
+        <flow-return id="taskFlowReturn1">
+            <from-outcome>#{flowBean.returnValue}</from-outcome>
+        </flow-return>
+        
+    </flow-definition>
+    
+</faces-config>
\ No newline at end of file
diff --git a/test/web-profile/flow/basic-multi-page/src/main/webapp/bounded-task-flow/bounded-task-flow.xhtml b/test/web-profile/flow/basic-multi-page/src/main/webapp/bounded-task-flow/bounded-task-flow.xhtml
new file mode 100644
index 0000000..99c5973
--- /dev/null
+++ b/test/web-profile/flow/basic-multi-page/src/main/webapp/bounded-task-flow/bounded-task-flow.xhtml
@@ -0,0 +1,64 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    
+    <head>
+        <title>First page in the flow</title>
+    </head>
+    <body>
+    <h:form prependId="false">
+        <p>First page in the flow</p>
+        <p>Flow bean name: #{flowBean.name}</p>
+        
+        <p><h:commandButton id="index" value="home" action="/index" /></p>
+        <p><h:commandButton id="next_a" value="next" action="next_a" /></p>
+        <p><h:commandButton id="nonFlow" value="nonFlow" action="/nonFlow" /></p>
+        
+    </h:form>
+    </body>
+</html>
diff --git a/test/web-profile/flow/basic-multi-page/src/main/webapp/bounded-task-flow/next_a.xhtml b/test/web-profile/flow/basic-multi-page/src/main/webapp/bounded-task-flow/next_a.xhtml
new file mode 100644
index 0000000..4a1e156
--- /dev/null
+++ b/test/web-profile/flow/basic-multi-page/src/main/webapp/bounded-task-flow/next_a.xhtml
@@ -0,0 +1,65 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    
+    <head>
+        <title>Second page in the flow</title>
+    </head>
+    <body>
+    <h:form prependId="false">
+        <p>Second page in the flow</p>
+        <p>Flow bean name: #{flowBean.name}</p>
+        
+        <p>value: <h:inputText id="input" value="#{flowScope.value}" /></p>
+        
+        <p><h:commandButton id="start" value="back" action="bounded-task-flow" /></p>
+        <p><h:commandButton id="next" value="next" action="next_b" /></p>
+        
+    </h:form>
+    </body>
+</html>
diff --git a/test/web-profile/flow/basic-multi-page/src/main/webapp/bounded-task-flow/next_b.xhtml b/test/web-profile/flow/basic-multi-page/src/main/webapp/bounded-task-flow/next_b.xhtml
new file mode 100644
index 0000000..ce02e18
--- /dev/null
+++ b/test/web-profile/flow/basic-multi-page/src/main/webapp/bounded-task-flow/next_b.xhtml
@@ -0,0 +1,66 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    
+    <head>
+        <title>Last page in the flow</title>
+    </head>
+    <body>
+        
+        <p>Last page in the flow</p>
+        <p>Flow bean name: #{flowBean.name}</p>
+        
+        <p>value: #{flowScope.value}</p>
+        
+    <h:form prependId="false">
+        <p><h:commandButton id="back" value="back" action="next_a" /></p>
+        <p><h:commandButton id="return" value="return" action="taskFlowReturn1" /></p>
+        
+    </h:form>
+    </body>
+</html>
diff --git a/test/web-profile/flow/basic-multi-page/src/main/webapp/flow-with-templates/flow-with-templates-flow.xml b/test/web-profile/flow/basic-multi-page/src/main/webapp/flow-with-templates/flow-with-templates-flow.xml
new file mode 100644
index 0000000..e69de29
diff --git a/test/web-profile/flow/basic-multi-page/src/main/webapp/flow-with-templates/flow-with-templates.xhtml b/test/web-profile/flow/basic-multi-page/src/main/webapp/flow-with-templates/flow-with-templates.xhtml
new file mode 100644
index 0000000..4ac0640
--- /dev/null
+++ b/test/web-profile/flow/basic-multi-page/src/main/webapp/flow-with-templates/flow-with-templates.xhtml
@@ -0,0 +1,21 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:h="http://java.sun.com/jsf/html">
+
+    <body>
+
+        <ui:composition template="/templates/issue2997-template.xhtml">
+
+            <ui:define name="content">
+                Page 01 in the flow
+                <h:form prependId="false">
+                <h:commandButton action="page02" value="page02" id="page02" />
+                </h:form>
+            </ui:define>
+
+        </ui:composition>
+
+    </body>
+</html>
diff --git a/test/web-profile/flow/basic-multi-page/src/main/webapp/flow-with-templates/page02.xhtml b/test/web-profile/flow/basic-multi-page/src/main/webapp/flow-with-templates/page02.xhtml
new file mode 100644
index 0000000..fbc0c14
--- /dev/null
+++ b/test/web-profile/flow/basic-multi-page/src/main/webapp/flow-with-templates/page02.xhtml
@@ -0,0 +1,21 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:h="http://java.sun.com/jsf/html">
+
+    <body>
+
+        <ui:composition template="/templates/issue2997-template.xhtml">
+
+            <ui:define name="content">
+                Page 02 in the flow
+                <h:form prependId="false">
+                <h:commandButton action="flow-with-templates" value="page01" id="page01" />
+                </h:form>
+            </ui:define>
+
+        </ui:composition>
+
+    </body>
+</html>
diff --git a/test/web-profile/flow/basic-multi-page/src/main/webapp/index.xhtml b/test/web-profile/flow/basic-multi-page/src/main/webapp/index.xhtml
new file mode 100644
index 0000000..5c4c5aa
--- /dev/null
+++ b/test/web-profile/flow/basic-multi-page/src/main/webapp/index.xhtml
@@ -0,0 +1,61 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <head>
+        <title>Page with link to flow entry</title>
+    </head>
+    <body>
+        <h1>Page with link to flow entry</h1>
+        
+    <h:form prependId="false">
+        <p><h:commandButton id="start" value="start flow on valid entry node" action="bounded-task-flow" /></p>
+        <p><h:commandButton id="flow-with-templates" value="flow-with-templates" action="flow-with-templates" /></p>
+
+        <p><h:commandButton id="stay" value="stay" /></p>
+    </h:form>
+</body>
+</html>
diff --git a/test/web-profile/flow/basic-multi-page/src/main/webapp/issue2997Home.xhtml b/test/web-profile/flow/basic-multi-page/src/main/webapp/issue2997Home.xhtml
new file mode 100644
index 0000000..f884d40
--- /dev/null
+++ b/test/web-profile/flow/basic-multi-page/src/main/webapp/issue2997Home.xhtml
@@ -0,0 +1,12 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title>Facelet Title</title>
+    </h:head>
+    <h:body>
+        Issue2997Home
+    </h:body>
+</html>
+
diff --git a/test/web-profile/flow/basic-multi-page/src/main/webapp/issue2997PageInFacesConfig.xhtml b/test/web-profile/flow/basic-multi-page/src/main/webapp/issue2997PageInFacesConfig.xhtml
new file mode 100644
index 0000000..1fed27d
--- /dev/null
+++ b/test/web-profile/flow/basic-multi-page/src/main/webapp/issue2997PageInFacesConfig.xhtml
@@ -0,0 +1,12 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title>Facelet Title</title>
+    </h:head>
+    <h:body>
+        Issue2997PageInFacesConfig
+    </h:body>
+</html>
+
diff --git a/test/web-profile/flow/basic-multi-page/src/main/webapp/issue2997UserList.xhtml b/test/web-profile/flow/basic-multi-page/src/main/webapp/issue2997UserList.xhtml
new file mode 100644
index 0000000..2f46e5c
--- /dev/null
+++ b/test/web-profile/flow/basic-multi-page/src/main/webapp/issue2997UserList.xhtml
@@ -0,0 +1,12 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title>Facelet Title</title>
+    </h:head>
+    <h:body>
+        Issue2997UserList
+    </h:body>
+</html>
+
diff --git a/test/web-profile/flow/basic-multi-page/src/main/webapp/resources/templates/cssLayout.css b/test/web-profile/flow/basic-multi-page/src/main/webapp/resources/templates/cssLayout.css
new file mode 100644
index 0000000..8ee7ceb
--- /dev/null
+++ b/test/web-profile/flow/basic-multi-page/src/main/webapp/resources/templates/cssLayout.css
@@ -0,0 +1,61 @@
+
+#top {
+    position: relative;
+    background-color: #036fab;
+    color: white;
+    padding: 5px;
+    margin: 0px 0px 10px 0px;
+}
+
+#bottom {
+    position: relative;
+    background-color: #c2dfef;
+    padding: 5px;
+    margin: 10px 0px 0px 0px;
+}
+
+#left {
+    float: left;
+    background-color: #ece3a5;
+    padding: 5px;
+    width: 150px;
+}
+
+#right {
+    float: right;
+    background-color: #ece3a5;
+    padding: 5px;
+    width: 150px;
+}
+
+.center_content {
+    position: relative;
+    background-color: #dddddd;
+    padding: 5px;
+}
+
+.left_content {
+    background-color: #dddddd;
+    padding: 5px;
+    margin-left: 170px;
+}
+
+.right_content {
+    background-color: #dddddd;
+    padding: 5px;
+    margin: 0px 170px 0px 170px;
+}
+
+#top a:link, #top a:visited {
+  color: white;
+  font-weight : bold;
+  text-decoration: none;
+}
+
+#top a:link:hover, #top a:visited:hover  {
+  color: black;
+  font-weight : bold;
+  text-decoration : underline;
+}
+
+
diff --git a/test/web-profile/flow/basic-multi-page/src/main/webapp/resources/templates/default.css b/test/web-profile/flow/basic-multi-page/src/main/webapp/resources/templates/default.css
new file mode 100644
index 0000000..6cbc3d1
--- /dev/null
+++ b/test/web-profile/flow/basic-multi-page/src/main/webapp/resources/templates/default.css
@@ -0,0 +1,29 @@
+body {
+    background-color: #ffffff;
+    font-size: 12px;
+    font-family: Verdana, "Verdana CE",  Arial, "Arial CE", "Lucida Grande CE", lucida, "Helvetica CE", sans-serif;
+    color: #000000;  
+    margin: 10px;
+}
+
+h1 {
+    font-family: Arial, "Arial CE", "Lucida Grande CE", lucida, "Helvetica CE", sans-serif;
+    border-bottom: 1px solid #AFAFAF; 
+    font-size:  16px;
+    font-weight: bold;
+    margin: 0px;
+    padding: 0px;
+    color: #D20005;
+}
+
+a:link, a:visited {
+  color: #045491;
+  font-weight : bold;
+  text-decoration: none;
+}
+
+a:link:hover, a:visited:hover  {
+  color: #045491;
+  font-weight : bold;
+  text-decoration : underline;
+}
diff --git a/test/web-profile/flow/basic-multi-page/src/main/webapp/return1.xhtml b/test/web-profile/flow/basic-multi-page/src/main/webapp/return1.xhtml
new file mode 100644
index 0000000..82df218
--- /dev/null
+++ b/test/web-profile/flow/basic-multi-page/src/main/webapp/return1.xhtml
@@ -0,0 +1,61 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <head>
+        <title>Page navigated to upon return from bounded-task-flow</title>
+    </head>
+    <body>
+        <h1>Page navigated to upon return from bounded-task-flow</h1>
+        
+    <h:form prependId="false">
+        <p>return page</p>
+        
+        <p>flowScope value, should be empty: #{flowScope.value}</p>
+                
+    </h:form>
+</body>
+</html>
diff --git a/test/web-profile/flow/basic-multi-page/src/main/webapp/templates/issue2997-template.xhtml b/test/web-profile/flow/basic-multi-page/src/main/webapp/templates/issue2997-template.xhtml
new file mode 100644
index 0000000..c5a8029
--- /dev/null
+++ b/test/web-profile/flow/basic-multi-page/src/main/webapp/templates/issue2997-template.xhtml
@@ -0,0 +1,38 @@
+<?xml version='1.0' encoding='UTF-8' ?> 
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:h="http://java.sun.com/jsf/html">
+
+    <h:head>
+        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+        <h:outputStylesheet name="default.css" library="templates" />
+        <h:outputStylesheet name="cssLayout.css" library="templates" />
+        <title>Facelets Template</title>
+    </h:head>
+
+    <h:body>
+
+        <div id="top">
+            <ui:insert name="top">Top From Template</ui:insert>
+        </div>
+
+        <div id="content" class="center_content">
+            <ui:insert name="content">Content From Template</ui:insert>
+        </div>
+
+        <div id="bottom">
+            <ui:insert name="bottom">Bottom From Template</ui:insert>
+            <br />
+            
+            <h:form prependId="false">
+            <h:commandButton id="issue2997Home" value="home" immediate="true" action="/issue2997Home" /> <br />
+            <h:commandButton id="issue2997UserList" value="User List" immediate="true" action="/issue2997UserList" /> <br />
+            <h:commandButton id="issue2997PageInFacesConfig" value="Page in faces config" immediate="true" action="issue2997PageInFacesConfig" /> <br />
+            </h:form>
+            
+        </div>
+
+    </h:body>
+
+</html>
diff --git a/test/web-profile/flow/basic-multi-page/src/test/java/com/sun/faces/test/webprofile/flow/basic_multi_page/BasicMultiPageFlowEntryExitIT.java b/test/web-profile/flow/basic-multi-page/src/test/java/com/sun/faces/test/webprofile/flow/basic_multi_page/BasicMultiPageFlowEntryExitIT.java
new file mode 100644
index 0000000..e2583ed
--- /dev/null
+++ b/test/web-profile/flow/basic-multi-page/src/test/java/com/sun/faces/test/webprofile/flow/basic_multi_page/BasicMultiPageFlowEntryExitIT.java
@@ -0,0 +1,156 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.webprofile.flow.basic_multi_page;
+
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
+import static org.junit.Assert.assertTrue;
+
+public class BasicMultiPageFlowEntryExitIT {
+    /**
+     * Stores the web URL.
+     */
+    private String webUrl;
+    /**
+     * Stores the web client.
+     */
+    private WebClient webClient;
+
+    /**
+     * Setup before testing.
+     * 
+     * @throws Exception when a serious error occurs.
+     */
+    @BeforeClass
+    public static void setUpClass() throws Exception {
+    }
+
+    /**
+     * Cleanup after testing.
+     * 
+     * @throws Exception when a serious error occurs.
+     */
+    @AfterClass
+    public static void tearDownClass() throws Exception {
+    }
+
+    /**
+     * Setup before testing.
+     */
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    /**
+     * Tear down after testing.
+     */
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testFlowEntryExit() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl);
+
+        assertTrue(page.getBody().asText().indexOf("Page with link to flow entry") != -1);
+
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("start");
+        page = button.click();
+        
+        String pageText = page.getBody().asText();
+        assertTrue(pageText.indexOf("First page in the flow") != -1);
+        assertTrue(pageText.contains("basicFlow"));
+        
+        page = webClient.getPage(webUrl);
+
+        assertTrue(page.getBody().asText().indexOf("Page with link to flow entry") != -1);
+
+        button = (HtmlSubmitInput) page.getElementById("start");
+        page = button.click();
+        
+        pageText = page.getBody().asText();
+        assertTrue(pageText.indexOf("First page in the flow") != -1);
+        assertTrue(pageText.contains("basicFlow"));   
+        
+    }
+    
+    @Test
+    public void testFacesFlowScope() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl);
+        
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("start");
+        page = button.click();
+
+        String pageText = page.getBody().asText();
+        assertTrue(pageText.indexOf("First page in the flow") != -1);
+        assertTrue(pageText.contains("basicFlow"));
+
+        button = (HtmlSubmitInput) page.getElementById("next_a");
+        page = button.click();
+        
+        HtmlTextInput input = (HtmlTextInput) page.getElementById("input");
+        final String flowScopeValue = "Value in faces flow scope";
+        input.setValueAttribute(flowScopeValue);
+        
+        button = (HtmlSubmitInput) page.getElementById("next");
+        page = button.click();
+        
+        assertTrue(page.asText().contains(flowScopeValue));
+        
+        button = (HtmlSubmitInput) page.getElementById("return");
+        page = button.click();
+        
+        assertTrue(page.asText().contains("return page"));
+        assertTrue(!page.asText().contains(flowScopeValue));
+        
+        
+        
+    }
+}
diff --git a/test/web-profile/flow/basic-multi-page/src/test/java/com/sun/faces/test/webprofile/flow/basic_multi_page/issue2997/Issue2997IT.java b/test/web-profile/flow/basic-multi-page/src/test/java/com/sun/faces/test/webprofile/flow/basic_multi_page/issue2997/Issue2997IT.java
new file mode 100644
index 0000000..c66700d
--- /dev/null
+++ b/test/web-profile/flow/basic-multi-page/src/test/java/com/sun/faces/test/webprofile/flow/basic_multi_page/issue2997/Issue2997IT.java
@@ -0,0 +1,115 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.test.webprofile.flow.basic_multi_page.issue2997;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import com.sun.faces.test.junit.JsfTest;
+import com.sun.faces.test.junit.JsfTestRunner;
+import com.sun.faces.test.junit.JsfVersion;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+import static org.junit.Assert.assertTrue;
+import org.junit.runner.RunWith;
+
+ at RunWith(JsfTestRunner.class)
+public class Issue2997IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @JsfTest(JsfVersion.JSF_2_2_3)
+    @Test
+    public void testGlobalReturn() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl);
+        assertTrue(page.getBody().asText().indexOf("Page with link to flow entry") != -1);
+
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("flow-with-templates");
+        page = button.click();
+        String pageText = page.getBody().asText();
+        assertTrue(pageText.indexOf("Bottom From Template") != -1);
+
+        button = (HtmlSubmitInput) page.getElementById("issue2997Home");
+        page = button.click();
+        pageText = page.getBody().asText();
+        assertTrue(pageText.indexOf("Issue2997Home") != -1);
+
+        page = webClient.getPage(webUrl);
+        assertTrue(page.getBody().asText().indexOf("Page with link to flow entry") != -1);
+
+        button = (HtmlSubmitInput) page.getElementById("flow-with-templates");
+        page = button.click();
+        pageText = page.getBody().asText();
+        assertTrue(pageText.indexOf("Bottom From Template") != -1);
+
+        button = (HtmlSubmitInput) page.getElementById("issue2997UserList");
+        page = button.click();
+        pageText = page.getBody().asText();
+        assertTrue(pageText.indexOf("Issue2997UserList") != -1);
+
+        page = webClient.getPage(webUrl);
+        assertTrue(page.getBody().asText().indexOf("Page with link to flow entry") != -1);
+
+        button = (HtmlSubmitInput) page.getElementById("flow-with-templates");
+        page = button.click();
+        pageText = page.getBody().asText();
+        assertTrue(pageText.indexOf("Bottom From Template") != -1);
+
+        button = (HtmlSubmitInput) page.getElementById("issue2997PageInFacesConfig");
+        page = button.click();
+        pageText = page.getBody().asText();
+        assertTrue(pageText.indexOf("Issue2997PageInFacesConfig") != -1);
+    }
+}
diff --git a/test/web-profile/flow/basic_faces_flow_call/nbactions.xml b/test/web-profile/flow/basic_faces_flow_call/nbactions.xml
new file mode 100644
index 0000000..5ad7722
--- /dev/null
+++ b/test/web-profile/flow/basic_faces_flow_call/nbactions.xml
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<actions>
+    <action>
+        <actionName>debug.test.single</actionName>
+        <goals>
+            <goal>test-compile</goal>
+            <goal>surefire:test</goal>
+        </goals>
+        <properties>
+            <test>${packageClassName}</test>
+            <forkMode>once</forkMode>
+            <maven.surefire.debug>-Xdebug -Xrunjdwp:transport=dt_socket,server=n,address=${jpda.address}</maven.surefire.debug>
+            <jpda.listen>true</jpda.listen>
+            <integration.url>http://localhost:8080/test-webprofile-flow-basic_faces_flow_call/</integration.url>
+        </properties>
+    </action>
+    <action>
+        <actionName>test.single</actionName>
+        <goals>
+            <goal>test-compile</goal>
+            <goal>surefire:test</goal>
+        </goals>
+        <properties>
+            <integration.url>http://localhost:8080/test-webprofile-flow-basic_faces_flow_call/</integration.url>
+            <test>${packageClassName}</test>
+        </properties>
+    </action>
+</actions>
diff --git a/test/web-profile/flow/basic_faces_flow_call/pom.xml b/test/web-profile/flow/basic_faces_flow_call/pom.xml
new file mode 100644
index 0000000..ba3b7c4
--- /dev/null
+++ b/test/web-profile/flow/basic_faces_flow_call/pom.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.webprofile.flow</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.webprofile.flow</groupId>
+    <artifactId>basic_faces_flow_call</artifactId>
+    <packaging>war</packaging>
+    <name>Mojarra ${project.version} - Test - Web-Profile - Flow - Basic flow-call test</name>
+    <build>
+        <finalName>test-webprofile-flow-basic_faces_flow_call</finalName>
+    </build>
+    <properties>
+        <netbeans.hint.deploy.server>gfv3ee6</netbeans.hint.deploy.server>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/test/web-profile/flow/basic_faces_flow_call/src/main/java/com/sun/faces/test/webprofile/flow/basic/FlowA.java b/test/web-profile/flow/basic_faces_flow_call/src/main/java/com/sun/faces/test/webprofile/flow/basic/FlowA.java
new file mode 100644
index 0000000..b4f9ea4
--- /dev/null
+++ b/test/web-profile/flow/basic_faces_flow_call/src/main/java/com/sun/faces/test/webprofile/flow/basic/FlowA.java
@@ -0,0 +1,72 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.test.webprofile.flow.basic;
+
+import java.io.Serializable;
+import javax.enterprise.inject.Produces;
+import javax.faces.flow.Flow;
+import javax.faces.flow.builder.FlowBuilder;
+import javax.faces.flow.builder.FlowDefinition;
+import javax.faces.flow.builder.FlowBuilderParameter;
+
+
+public class FlowA implements Serializable {
+    
+    private static final long serialVersionUID = -7623501087369765218L;
+
+    public FlowA() {
+    }
+    
+    @Produces @FlowDefinition
+    public Flow buildMyFlow(@FlowBuilderParameter FlowBuilder flowBuilder) {
+        String flowId = "flow-a";
+        flowBuilder.id("unique", flowId);
+        flowBuilder.returnNode("taskFlowReturn1").
+                fromOutcome("#{flow_a_Bean.returnValue}");
+        flowBuilder.inboundParameter("param1FromFlowB", "#{flowScope.param1Value}");
+        flowBuilder.inboundParameter("param2FromFlowB", "#{flowScope.param2Value}");
+        flowBuilder.flowCallNode("callB").flowReference("", "flow-b").
+                outboundParameter("param1FromFlowA", "param1Value").
+                outboundParameter("param2FromFlowA", "param2Value");
+        
+        return flowBuilder.getFlow();
+    }
+}
diff --git a/test/web-profile/flow/basic_faces_flow_call/src/main/java/com/sun/faces/test/webprofile/flow/basic/FlowC.java b/test/web-profile/flow/basic_faces_flow_call/src/main/java/com/sun/faces/test/webprofile/flow/basic/FlowC.java
new file mode 100644
index 0000000..729abea
--- /dev/null
+++ b/test/web-profile/flow/basic_faces_flow_call/src/main/java/com/sun/faces/test/webprofile/flow/basic/FlowC.java
@@ -0,0 +1,68 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.test.webprofile.flow.basic;
+
+import java.io.Serializable;
+import javax.enterprise.inject.Produces;
+import javax.faces.flow.Flow;
+import javax.faces.flow.builder.FlowBuilder;
+import javax.faces.flow.builder.FlowDefinition;
+import javax.faces.flow.builder.FlowBuilderParameter;
+
+
+public class FlowC implements Serializable {
+
+    private static final long serialVersionUID = -758160342621469893L;
+    
+    public FlowC() {
+    }
+    
+    @Produces @FlowDefinition
+    public Flow buildMyFlow(@FlowBuilderParameter FlowBuilder flowBuilder) {
+        String flowId = "flow-c";
+        flowBuilder.id("", flowId);
+        flowBuilder.returnNode("taskFlowReturn1").
+                fromOutcome("#{flow_c_Bean.returnValue}");
+        flowBuilder.flowCallNode("callA").flowReference("unique", "flow-a");
+        
+        return flowBuilder.getFlow();
+    }
+}
diff --git a/test/web-profile/flow/basic_faces_flow_call/src/main/java/com/sun/faces/test/webprofile/flow/basic/Flow_a_Bean.java b/test/web-profile/flow/basic_faces_flow_call/src/main/java/com/sun/faces/test/webprofile/flow/basic/Flow_a_Bean.java
new file mode 100644
index 0000000..c148e8f
--- /dev/null
+++ b/test/web-profile/flow/basic_faces_flow_call/src/main/java/com/sun/faces/test/webprofile/flow/basic/Flow_a_Bean.java
@@ -0,0 +1,58 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.webprofile.flow.basic;
+
+import javax.faces.flow.FlowScoped;
+import java.io.Serializable;
+
+import javax.inject.Named;
+
+ at Named
+ at FlowScoped(definingDocumentId="unique", value="flow-a")
+public class Flow_a_Bean implements Serializable {
+
+   public String getName() {
+       return "Flow_a_Bean";
+   }
+   
+   public String getReturnValue() {
+       return "/return1";
+   }
+}
diff --git a/test/web-profile/flow/basic_faces_flow_call/src/main/java/com/sun/faces/test/webprofile/flow/basic/Flow_b_Bean.java b/test/web-profile/flow/basic_faces_flow_call/src/main/java/com/sun/faces/test/webprofile/flow/basic/Flow_b_Bean.java
new file mode 100644
index 0000000..3b983cd
--- /dev/null
+++ b/test/web-profile/flow/basic_faces_flow_call/src/main/java/com/sun/faces/test/webprofile/flow/basic/Flow_b_Bean.java
@@ -0,0 +1,58 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.webprofile.flow.basic;
+
+import javax.faces.flow.FlowScoped;
+import java.io.Serializable;
+
+import javax.inject.Named;
+
+ at Named
+ at FlowScoped("flow-b")
+public class Flow_b_Bean implements Serializable {
+
+   public String getName() {
+       return "Flow_B_Bean";
+   }
+   
+   public String getReturnValue() {
+       return "/return1";
+   }
+}
diff --git a/test/web-profile/flow/basic_faces_flow_call/src/main/java/com/sun/faces/test/webprofile/flow/basic/Flow_c_Bean.java b/test/web-profile/flow/basic_faces_flow_call/src/main/java/com/sun/faces/test/webprofile/flow/basic/Flow_c_Bean.java
new file mode 100644
index 0000000..571df49
--- /dev/null
+++ b/test/web-profile/flow/basic_faces_flow_call/src/main/java/com/sun/faces/test/webprofile/flow/basic/Flow_c_Bean.java
@@ -0,0 +1,58 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.webprofile.flow.basic;
+
+import javax.faces.flow.FlowScoped;
+import java.io.Serializable;
+
+import javax.inject.Named;
+
+ at Named
+ at FlowScoped("flow-c")
+public class Flow_c_Bean implements Serializable {
+
+   public String getName() {
+       return "Flow_C_Bean";
+   }
+   
+   public String getReturnValue() {
+       return "/return1";
+   }
+}
diff --git a/test/web-profile/flow/basic_faces_flow_call/src/main/webapp/WEB-INF/beans.xml b/test/web-profile/flow/basic_faces_flow_call/src/main/webapp/WEB-INF/beans.xml
new file mode 100644
index 0000000..c782f57
--- /dev/null
+++ b/test/web-profile/flow/basic_faces_flow_call/src/main/webapp/WEB-INF/beans.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- This file can be an empty text file (0 bytes) -->
+<!-- We're declaring the schema to save you time if you do have to configure 
+   this in the future -->
+<beans xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+   xsi:schemaLocation="
+        http://java.sun.com/xml/ns/javaee 
+        http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
+</beans>
diff --git a/test/web-profile/flow/basic_faces_flow_call/src/main/webapp/WEB-INF/web.xml b/test/web-profile/flow/basic_faces_flow_call/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..74e3339
--- /dev/null
+++ b/test/web-profile/flow/basic_faces_flow_call/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>${webapp.projectStage}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
+        <param-value>${webapp.partialStateSaving}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>${webapp.stateSavingMethod}</param-value>
+    </context-param>
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <welcome-file-list>
+        <welcome-file>faces/index.xhtml</welcome-file>
+    </welcome-file-list>
+</web-app>
diff --git a/test/web-profile/flow/basic_faces_flow_call/src/main/webapp/flow-a/flow-a.xhtml b/test/web-profile/flow/basic_faces_flow_call/src/main/webapp/flow-a/flow-a.xhtml
new file mode 100644
index 0000000..c468641
--- /dev/null
+++ b/test/web-profile/flow/basic_faces_flow_call/src/main/webapp/flow-a/flow-a.xhtml
@@ -0,0 +1,67 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    
+    <head>
+        <title>First page in the flow</title>
+    </head>
+    <body bgcolor="red">
+    <h:form prependId="false">
+        <p>First page in the flow</p>
+        <p>Flow bean name: #{flow_a_Bean.name}</p>
+
+        <p><span id="param1FromFlowB">#{flowScope.param1Value}</span></p>
+        <p><span id="param2FromFlowB">#{flowScope.param2Value}</span></p>
+
+        <p>Has a flow: #{null != facesContext.application.flowHandler.currentFlow}.</p>
+        
+        <p><h:commandButton id="next_a" value="next" action="next_a" /></p>
+        
+    </h:form>
+    </body>
+</html>
diff --git a/test/web-profile/flow/basic_faces_flow_call/src/main/webapp/flow-a/next_a.xhtml b/test/web-profile/flow/basic_faces_flow_call/src/main/webapp/flow-a/next_a.xhtml
new file mode 100644
index 0000000..912e548
--- /dev/null
+++ b/test/web-profile/flow/basic_faces_flow_call/src/main/webapp/flow-a/next_a.xhtml
@@ -0,0 +1,65 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    
+    <head>
+        <title>Second page in the flow</title>
+    </head>
+    <body bgcolor="red">
+    <h:form prependId="false">
+        <p>Second page in the flow</p>
+        <p>Flow bean name: #{flow_a_Bean.name}</p>
+        
+        <p>value: <h:inputText id="input" value="#{flowScope.value}" /></p>
+        
+        <p><h:commandButton id="start" value="back" action="flow-a" /></p>
+        <p><h:commandButton id="next" value="next" action="next_b" /></p>
+        
+    </h:form>
+    </body>
+</html>
diff --git a/test/web-profile/flow/basic_faces_flow_call/src/main/webapp/flow-a/next_b.xhtml b/test/web-profile/flow/basic_faces_flow_call/src/main/webapp/flow-a/next_b.xhtml
new file mode 100644
index 0000000..ca98931
--- /dev/null
+++ b/test/web-profile/flow/basic_faces_flow_call/src/main/webapp/flow-a/next_b.xhtml
@@ -0,0 +1,69 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    
+    <head>
+        <title>Last page in the flow</title>
+    </head>
+    <body bgcolor="red">
+        
+        <p>Last page in the flow</p>
+        <p>Flow bean name: #{flow_a_Bean.name}</p>
+        
+        <p>value: #{flowScope.value}</p>
+        
+    <h:form prependId="false">
+        <p><h:commandButton id="back" value="back" action="next_a" /></p>
+        <p><h:commandButton id="return" value="return" action="taskFlowReturn1" /></p>
+        <p><h:button id="return_GET" value="return via GET" outcome="taskFlowReturn1" /></p>
+        <p><h:commandButton id="callB" value="callB" action="callB" /></p>
+        <p><h:button id="callB_GET" value="callB via GET" outcome="callB" /></p>
+        
+    </h:form>
+    </body>
+</html>
diff --git a/test/web-profile/flow/basic_faces_flow_call/src/main/webapp/flow-b/flow-b-flow.xml b/test/web-profile/flow/basic_faces_flow_call/src/main/webapp/flow-b/flow-b-flow.xml
new file mode 100644
index 0000000..6491dd6
--- /dev/null
+++ b/test/web-profile/flow/basic_faces_flow_call/src/main/webapp/flow-b/flow-b-flow.xml
@@ -0,0 +1,83 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<faces-config version="2.2" xmlns="http://xmlns.jcp.org/xml/ns/javaee"
+   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+   xsi:schemaLocation="
+        http://xmlns.jcp.org/xml/ns/javaee
+        http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd">
+
+    <flow-definition id="flow-b">
+        
+            <flow-return id="taskFlowReturn1">
+                <from-outcome>#{flow_b_Bean.returnValue}</from-outcome>
+            </flow-return>
+
+            <inbound-parameter>
+                <name>param1FromFlowA</name>
+                <value>#{flowScope.param1Value}</value>
+            </inbound-parameter>
+            <inbound-parameter>
+                <name>param2FromFlowA</name>
+                <value>#{flowScope.param2Value}</value>
+            </inbound-parameter>
+            
+            <flow-call id="callA">
+                <flow-reference>
+                    <flow-document-id>unique</flow-document-id>
+                    <flow-id>flow-a</flow-id>
+                </flow-reference>
+                <outbound-parameter>
+                    <name>param1FromFlowB</name>
+                    <value>param1Value</value>
+                </outbound-parameter>
+                <outbound-parameter>
+                    <name>param2FromFlowB</name>
+                    <value>param2Value</value>
+                </outbound-parameter>
+            </flow-call>
+                        
+        </flow-definition>
+
+</faces-config>
+
diff --git a/test/web-profile/flow/basic_faces_flow_call/src/main/webapp/flow-b/flow-b.xhtml b/test/web-profile/flow/basic_faces_flow_call/src/main/webapp/flow-b/flow-b.xhtml
new file mode 100644
index 0000000..10eecb9
--- /dev/null
+++ b/test/web-profile/flow/basic_faces_flow_call/src/main/webapp/flow-b/flow-b.xhtml
@@ -0,0 +1,67 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    
+    <head>
+        <title>First page in the flow</title>
+    </head>
+    <body bgcolor="blue">
+    <h:form prependId="false">
+        <p>First page in the flow</p>
+        <p>Flow bean name: #{flow_b_Bean.name}</p>
+        
+        <p><span id="param1FromFlowA">#{flowScope.param1Value}</span></p>
+        <p><span id="param2FromFlowA">#{flowScope.param2Value}</span></p>
+        
+        <p><h:commandButton id="index" value="home" action="/index" /></p>
+        <p><h:commandButton id="next_a" value="next" action="next_a" /></p>
+        <p><h:commandButton id="nonFlow" value="nonFlow" action="/nonFlow" /></p>
+        
+    </h:form>
+    </body>
+</html>
diff --git a/test/web-profile/flow/basic_faces_flow_call/src/main/webapp/flow-b/next_a.xhtml b/test/web-profile/flow/basic_faces_flow_call/src/main/webapp/flow-b/next_a.xhtml
new file mode 100644
index 0000000..7b19ed9
--- /dev/null
+++ b/test/web-profile/flow/basic_faces_flow_call/src/main/webapp/flow-b/next_a.xhtml
@@ -0,0 +1,65 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    
+    <head>
+        <title>Second page in the flow</title>
+    </head>
+    <body bgcolor="blue">
+    <h:form prependId="false">
+        <p>Second page in the flow</p>
+        <p>Flow bean name: #{flow_b_Bean.name}</p>
+        
+        <p>value: <h:inputText id="input" value="#{flowScope.value}" /></p>
+        
+        <p><h:commandButton id="start" value="back" action="flow-a" /></p>
+        <p><h:commandButton id="next" value="next" action="next_b" /></p>
+        
+    </h:form>
+    </body>
+</html>
diff --git a/test/web-profile/flow/basic_faces_flow_call/src/main/webapp/flow-b/next_b.xhtml b/test/web-profile/flow/basic_faces_flow_call/src/main/webapp/flow-b/next_b.xhtml
new file mode 100644
index 0000000..7ad25fb
--- /dev/null
+++ b/test/web-profile/flow/basic_faces_flow_call/src/main/webapp/flow-b/next_b.xhtml
@@ -0,0 +1,72 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    
+    <head>
+        <title>Last page in the flow</title>
+    </head>
+    <body bgcolor="blue">
+        
+        <p>Last page in the flow</p>
+        <p>Flow bean name: #{flow_b_Bean.name}</p>
+        
+        <p>value: #{flowScope.value}</p>
+        
+    <h:form prependId="false">
+        <p><h:commandButton id="back" value="back" action="next_a" /></p>
+        <p><h:commandButton id="return" value="return" action="taskFlowReturn1" /></p>
+        <p><h:button id="return_GET" value="return via GET" outcome="taskFlowReturn1" /></p>
+        <p><h:commandButton id="callA" value="callA" action="callA" /></p>
+        <p><h:button id="callA_GET" value="callA via GET" outcome="callA">
+              <f:attribute name="to-flow-document-id" value="unique"/>
+        </h:button></p>
+        
+        
+    </h:form>
+    </body>
+</html>
diff --git a/test/web-profile/flow/basic_faces_flow_call/src/main/webapp/flow-c/flow-c.xhtml b/test/web-profile/flow/basic_faces_flow_call/src/main/webapp/flow-c/flow-c.xhtml
new file mode 100644
index 0000000..e530fa0
--- /dev/null
+++ b/test/web-profile/flow/basic_faces_flow_call/src/main/webapp/flow-c/flow-c.xhtml
@@ -0,0 +1,64 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    
+    <head>
+        <title>First page in the flow</title>
+    </head>
+    <body bgcolor="green">
+    <h:form prependId="false">
+        <p>First page in the flow</p>
+        <p>Flow bean name: #{flow_c_Bean.name}</p>
+        
+        <p><h:commandButton id="index" value="home" action="/index" /></p>
+        <p><h:commandButton id="next_a" value="next" action="next_a" /></p>
+        <p><h:commandButton id="nonFlow" value="nonFlow" action="/nonFlow" /></p>
+        
+    </h:form>
+    </body>
+</html>
diff --git a/test/web-profile/flow/basic_faces_flow_call/src/main/webapp/flow-c/next_a.xhtml b/test/web-profile/flow/basic_faces_flow_call/src/main/webapp/flow-c/next_a.xhtml
new file mode 100644
index 0000000..c631826
--- /dev/null
+++ b/test/web-profile/flow/basic_faces_flow_call/src/main/webapp/flow-c/next_a.xhtml
@@ -0,0 +1,65 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    
+    <head>
+        <title>Second page in the flow</title>
+    </head>
+    <body bgcolor="green">
+    <h:form prependId="false">
+        <p>Second page in the flow</p>
+        <p>Flow bean name: #{flow_c_Bean.name}</p>
+        
+        <p>value: <h:inputText id="input" value="#{flowScope.value}" /></p>
+        
+        <p><h:commandButton id="start" value="back" action="flow-a" /></p>
+        <p><h:commandButton id="next" value="next" action="next_b" /></p>
+        
+    </h:form>
+    </body>
+</html>
diff --git a/test/web-profile/flow/basic_faces_flow_call/src/main/webapp/flow-c/next_b.xhtml b/test/web-profile/flow/basic_faces_flow_call/src/main/webapp/flow-c/next_b.xhtml
new file mode 100644
index 0000000..5344c90
--- /dev/null
+++ b/test/web-profile/flow/basic_faces_flow_call/src/main/webapp/flow-c/next_b.xhtml
@@ -0,0 +1,72 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    
+    <head>
+        <title>Last page in the flow</title>
+    </head>
+    <body bgcolor="green">
+        
+        <p>Last page in the flow</p>
+        <p>Flow bean name: #{flow_c_Bean.name}</p>
+        
+        <p>value: #{flowScope.value}</p>
+        
+    <h:form prependId="false">
+        <p><h:commandButton id="back" value="back" action="next_a" /></p>
+        <p><h:commandButton id="return" value="return" action="taskFlowReturn1" /></p>
+        <p><h:button id="return_GET" value="return via GET" outcome="taskFlowReturn1" /></p>
+        <p><h:commandButton id="callA" value="callA" action="callA" /></p>
+        <p><h:button id="callA_GET" value="callA via GET" outcome="callA">
+              <f:attribute name="to-flow-document-id" value="unique"/>
+        </h:button></p>
+        
+        
+    </h:form>
+    </body>
+</html>
diff --git a/test/web-profile/flow/basic_faces_flow_call/src/main/webapp/index.xhtml b/test/web-profile/flow/basic_faces_flow_call/src/main/webapp/index.xhtml
new file mode 100644
index 0000000..60fe21c
--- /dev/null
+++ b/test/web-profile/flow/basic_faces_flow_call/src/main/webapp/index.xhtml
@@ -0,0 +1,73 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core">
+    <head>
+        <title>Outside of flow</title>
+    </head>
+    <body>
+        <h1>Outside of flow</h1>
+        
+    <h:form prependId="false">
+        <p><h:commandButton id="start_a" value="enter flow-a" 
+                            action="flow-a">
+              <f:attribute name="to-flow-document-id" value="unique"/>
+            </h:commandButton></p>
+        <p><h:button id="start_a_GET" value="enter flow-a via GET" outcome="flow-a">
+              <f:attribute name="to-flow-document-id" value="unique"/>
+            </h:button></p>
+        <p><h:commandButton id="start_b" value="enter flow-b" 
+                            action="flow-b" /></p>
+        <p><h:button id="start_b_GET" value="enter flow-b via GET" outcome="flow-b" /></p>
+        <p><h:commandButton id="start_c" value="enter flow-c" 
+                            action="flow-c">
+            </h:commandButton></p>
+        <p><h:button id="start_c_GET" value="enter flow-c via GET" outcome="flow-c">
+            </h:button></p>
+        <p><h:commandButton id="stay" value="stay" /></p>
+    </h:form>
+</body>
+</html>
diff --git a/test/web-profile/flow/basic_faces_flow_call/src/main/webapp/nonFlow.xhtml b/test/web-profile/flow/basic_faces_flow_call/src/main/webapp/nonFlow.xhtml
new file mode 100644
index 0000000..b5d740b
--- /dev/null
+++ b/test/web-profile/flow/basic_faces_flow_call/src/main/webapp/nonFlow.xhtml
@@ -0,0 +1,61 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <head>
+        <title>Try to access a flow bean from outside of a flow</title>
+    </head>
+    <body>
+    <h:form prependId="false">
+        <p>Try to access a flow bean from outside of a flow</p>
+        <p>Flow bean name: #{flowBean.name}</p>
+        
+        <p><h:commandButton id="index" value="home" action="index" /></p>
+        <p><h:commandButton id="nonFlow" value="nonFlow" action="nonFlow" /></p>
+        
+    </h:form>
+    </body>
+</html>
diff --git a/test/web-profile/flow/basic_faces_flow_call/src/main/webapp/return1.xhtml b/test/web-profile/flow/basic_faces_flow_call/src/main/webapp/return1.xhtml
new file mode 100644
index 0000000..73a0b25
--- /dev/null
+++ b/test/web-profile/flow/basic_faces_flow_call/src/main/webapp/return1.xhtml
@@ -0,0 +1,63 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <head>
+        <title>Page navigated to upon return from any flow</title>
+    </head>
+    <body>
+        <h1>Page navigated to upon return from any flow</h1>
+        
+    <h:form prependId="false">
+        <p>return page</p>
+        
+        <p>Has a flow: #{null != facesContext.application.flowHandler.currentFlow}.</p>
+        
+        <p>flowScope value, should be empty: #{flowScope.value}.</p>
+                
+    </h:form>
+</body>
+</html>
diff --git a/test/web-profile/flow/basic_faces_flow_call/src/test/java/com/sun/faces/test/webprofile/flow/basic_faces_flow_call/FlowACallsFlowBIT.java b/test/web-profile/flow/basic_faces_flow_call/src/test/java/com/sun/faces/test/webprofile/flow/basic_faces_flow_call/FlowACallsFlowBIT.java
new file mode 100644
index 0000000..d1e9044
--- /dev/null
+++ b/test/web-profile/flow/basic_faces_flow_call/src/test/java/com/sun/faces/test/webprofile/flow/basic_faces_flow_call/FlowACallsFlowBIT.java
@@ -0,0 +1,217 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.webprofile.flow.basic_faces_flow_call;
+
+import com.gargoylesoftware.htmlunit.html.HtmlInput;
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.assertEquals;
+
+public class FlowACallsFlowBIT {
+    /**
+     * Stores the web URL.
+     */
+    private String webUrl;
+    /**
+     * Stores the web client.
+     */
+    private WebClient webClient;
+
+    /**
+     * Setup before testing.
+     * 
+     * @throws Exception when a serious error occurs.
+     */
+    @BeforeClass
+    public static void setUpClass() throws Exception {
+    }
+
+    /**
+     * Cleanup after testing.
+     * 
+     * @throws Exception when a serious error occurs.
+     */
+    @AfterClass
+    public static void tearDownClass() throws Exception {
+    }
+
+    /**
+     * Setup before testing.
+     */
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    /**
+     * Tear down after testing.
+     */
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testFacesFlowCallPostback() throws Exception {
+        doTestFacesFlowCall("");
+    }
+
+    @Test
+    public void testFacesFlowCallGet() throws Exception {
+        doTestFacesFlowCall("_GET");
+    }
+
+    public void doTestFacesFlowCall(String flowInvocationSuffix) throws Exception {
+        HtmlPage page = webClient.getPage(webUrl);
+
+        assertTrue(page.getBody().asText().indexOf("Outside of flow") != -1);
+        
+        HtmlInput button = (HtmlInput) page.getElementById("start_a" + flowInvocationSuffix);
+        page = button.click();
+        String pageText = page.asText();
+        assertTrue(pageText.contains("Flow_a_Bean"));
+        assertTrue(pageText.matches("(?s).*Has a flow:\\s+true\\..*"));
+        
+        String param1Value = page.getElementById("param1FromFlowB").getTextContent();
+        assertEquals("", param1Value);
+        String param2Value = page.getElementById("param2FromFlowB").getTextContent();
+        assertEquals("", param2Value);
+        
+        
+        button = (HtmlInput) page.getElementById("next_a");
+        page = button.click();
+        pageText = page.asText();
+        assertTrue(pageText.contains("Second page in the flow"));
+        
+        HtmlTextInput input = (HtmlTextInput) page.getElementById("input");
+        String value = "" + System.currentTimeMillis();
+        input.setValueAttribute(value);
+        
+        button = (HtmlInput) page.getElementById("next");
+        page = button.click();
+        
+        pageText = page.asText();
+        assertTrue(pageText.contains(value));
+        
+        button = (HtmlInput) page.getElementById("callB" + flowInvocationSuffix);
+        page = button.click();
+        
+        pageText = page.asText();
+        assertTrue(pageText.contains("Flow_B_Bean"));
+        assertTrue(!pageText.contains("Flow_A_Bean"));
+        
+        param1Value = page.getElementById("param1FromFlowA").getTextContent();
+        assertEquals("param1Value", param1Value);
+        param2Value = page.getElementById("param2FromFlowA").getTextContent();
+        assertEquals("param2Value", param2Value);
+        
+        
+        button = (HtmlInput) page.getElementById("next_a");
+        page = button.click();
+        pageText = page.asText();
+        assertTrue(pageText.contains("Second page in the flow"));
+        
+        input = (HtmlTextInput) page.getElementById("input");
+        value = "" + System.currentTimeMillis();
+        input.setValueAttribute(value);
+        
+        button = (HtmlInput) page.getElementById("next");
+        page = button.click();
+        
+        pageText = page.asText();
+        assertTrue(pageText.contains(value));
+        
+        button = (HtmlInput) page.getElementById("callA" + flowInvocationSuffix);
+        page = button.click();
+        
+        param1Value = page.getElementById("param1FromFlowB").getTextContent();
+        assertEquals("param1Value", param1Value);
+        param2Value = page.getElementById("param2FromFlowB").getTextContent();
+        assertEquals("param2Value", param2Value);
+        
+        button = (HtmlInput) page.getElementById("next_a");
+        page = button.click();
+        pageText = page.asText();
+        assertTrue(pageText.contains("Second page in the flow"));
+        
+        button = (HtmlInput) page.getElementById("next");
+        page = button.click();
+        
+        button = (HtmlInput) page.getElementById("return" + flowInvocationSuffix);
+        page = button.click();
+        
+        pageText = page.asText();
+        assertTrue(pageText.contains("Flow bean name: Flow_B_Bean"));
+        
+        button = (HtmlInput) page.getElementById("next_a");
+        page = button.click();
+        
+        button = (HtmlInput) page.getElementById("next");
+        page = button.click();
+        
+        button = (HtmlInput) page.getElementById("return" + flowInvocationSuffix);
+        page = button.click();
+        
+        pageText = page.asText();
+        assertTrue(pageText.contains("Flow bean name: Flow_a_Bean"));
+        
+        button = (HtmlInput) page.getElementById("next_a");
+        page = button.click();
+        
+        button = (HtmlInput) page.getElementById("next");
+        page = button.click();
+        
+        button = (HtmlInput) page.getElementById("return" + flowInvocationSuffix);
+        page = button.click();
+        
+        pageText = page.asText();
+        assertTrue(pageText.matches("(?s).*flowScope value,\\s+should be empty:\\s+\\..*"));
+        assertTrue(pageText.matches("(?s).*Has a flow:\\s+false\\..*"));
+
+    }
+}
diff --git a/test/web-profile/flow/basic_implicit_in_jar/pom.xml b/test/web-profile/flow/basic_implicit_in_jar/pom.xml
new file mode 100644
index 0000000..9514ec6
--- /dev/null
+++ b/test/web-profile/flow/basic_implicit_in_jar/pom.xml
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" 
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.webprofile.flow</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.webprofile.flow</groupId>
+    <artifactId>flow_with_template_in_jar</artifactId>
+    <packaging>jar</packaging>
+    <name>Mojarra ${project.version} - Test - Web-Profile - Flow - flow_with_template_in_jar</name>
+    <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/test/web-profile/flow/basic_implicit_in_jar/src/main/java/com/sun/faces/test/webprofile/flow/flow_with_template_in_jar/FlowBean.java b/test/web-profile/flow/basic_implicit_in_jar/src/main/java/com/sun/faces/test/webprofile/flow/flow_with_template_in_jar/FlowBean.java
new file mode 100644
index 0000000..084d2a6
--- /dev/null
+++ b/test/web-profile/flow/basic_implicit_in_jar/src/main/java/com/sun/faces/test/webprofile/flow/flow_with_template_in_jar/FlowBean.java
@@ -0,0 +1,63 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.webprofile.flow.flow_with_template_in_jar;
+
+import javax.faces.flow.FlowScoped;
+import java.io.Serializable;
+
+import java.util.logging.Logger;
+import javax.inject.Named;
+
+ at Named
+ at FlowScoped("flow_with_template_in_jar")
+public class FlowBean implements Serializable {
+
+    public FlowBean() {
+        Logger.getAnonymousLogger().info("FlowBean in jar constructed");
+    }
+
+   public String getName() {
+       return "basicFlow";
+   }
+   
+   public String getReturnValue() {
+       return "/return1";
+   }
+}
diff --git a/test/web-profile/flow/basic_implicit_in_jar/src/main/resources/META-INF/beans.xml b/test/web-profile/flow/basic_implicit_in_jar/src/main/resources/META-INF/beans.xml
new file mode 100644
index 0000000..c782f57
--- /dev/null
+++ b/test/web-profile/flow/basic_implicit_in_jar/src/main/resources/META-INF/beans.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- This file can be an empty text file (0 bytes) -->
+<!-- We're declaring the schema to save you time if you do have to configure 
+   this in the future -->
+<beans xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+   xsi:schemaLocation="
+        http://java.sun.com/xml/ns/javaee 
+        http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
+</beans>
diff --git a/test/web-profile/flow/basic_implicit_in_jar/src/main/resources/META-INF/faces-config.xml b/test/web-profile/flow/basic_implicit_in_jar/src/main/resources/META-INF/faces-config.xml
new file mode 100644
index 0000000..a6e8354
--- /dev/null
+++ b/test/web-profile/flow/basic_implicit_in_jar/src/main/resources/META-INF/faces-config.xml
@@ -0,0 +1,62 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<faces-config version="2.2" xmlns="http://xmlns.jcp.org/xml/ns/javaee"
+   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+   xsi:schemaLocation="
+        http://xmlns.jcp.org/xml/ns/javaee
+        http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd">
+
+    <flow-definition id="flow_with_template_in_jar">
+        <start-node>01</start-node>
+        <view id="01">
+            <vdl-document>/flow_with_template_in_jar/01.xhtml</vdl-document>
+        </view>
+        <view id="02">
+            <vdl-document>/flow_with_template_in_jar/02.xhtml</vdl-document>
+        </view>
+        <flow-return id="return">
+            <from-outcome>/flow_with_template_in_jar-return</from-outcome>
+        </flow-return>
+        
+    </flow-definition>
+</faces-config>
diff --git a/test/web-profile/flow/basic_implicit_in_jar/src/main/resources/META-INF/flows/flow_with_template_in_jar/01.xhtml b/test/web-profile/flow/basic_implicit_in_jar/src/main/resources/META-INF/flows/flow_with_template_in_jar/01.xhtml
new file mode 100644
index 0000000..a18ed01
--- /dev/null
+++ b/test/web-profile/flow/basic_implicit_in_jar/src/main/resources/META-INF/flows/flow_with_template_in_jar/01.xhtml
@@ -0,0 +1,27 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:h="http://java.sun.com/jsf/html">
+
+    <body>
+
+        <ui:composition template="./myTemplate.xhtml">
+
+            <ui:define name="top">
+                top from template client flow-a
+            </ui:define>
+
+            <ui:define name="content">
+                <h:form prependId="false">
+                    
+                    <h:commandButton id="next" value="template client with relative template reference"
+                                     action="02"/>
+                    
+                </h:form>
+            </ui:define>
+
+        </ui:composition>
+
+    </body>
+</html>
diff --git a/test/web-profile/flow/basic_implicit_in_jar/src/main/resources/META-INF/flows/flow_with_template_in_jar/02.xhtml b/test/web-profile/flow/basic_implicit_in_jar/src/main/resources/META-INF/flows/flow_with_template_in_jar/02.xhtml
new file mode 100644
index 0000000..6565ebc
--- /dev/null
+++ b/test/web-profile/flow/basic_implicit_in_jar/src/main/resources/META-INF/flows/flow_with_template_in_jar/02.xhtml
@@ -0,0 +1,27 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:h="http://java.sun.com/jsf/html">
+
+    <body>
+
+        <ui:composition template="myTemplate.xhtml">
+
+            <ui:define name="content">
+                <h:form prependId="false">
+                    
+                    <h:commandButton id="return" value="return "
+                                     action="return"/>
+                    
+                </h:form>
+            </ui:define>
+
+            <ui:define name="bottom">
+                bottom from template client
+            </ui:define>
+
+        </ui:composition>
+
+    </body>
+</html>
diff --git a/test/web-profile/flow/basic_implicit_in_jar/src/main/resources/META-INF/flows/flow_with_template_in_jar/myTemplate.xhtml b/test/web-profile/flow/basic_implicit_in_jar/src/main/resources/META-INF/flows/flow_with_template_in_jar/myTemplate.xhtml
new file mode 100644
index 0000000..096b519
--- /dev/null
+++ b/test/web-profile/flow/basic_implicit_in_jar/src/main/resources/META-INF/flows/flow_with_template_in_jar/myTemplate.xhtml
@@ -0,0 +1,30 @@
+<?xml version='1.0' encoding='UTF-8' ?> 
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:h="http://java.sun.com/jsf/html">
+
+    <h:head>
+        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+        <h:outputStylesheet name="default.css" library="resources" />
+        <h:outputStylesheet name="cssLayout.css" library="resources" />
+        <title>Facelets Template</title>
+    </h:head>
+
+    <h:body>
+
+        <div id="top">
+            <ui:insert name="top">Top from template</ui:insert>
+        </div>
+
+        <div id="content" class="center_content">
+            <ui:insert name="content">Content</ui:insert>
+        </div>
+
+        <div id="bottom">
+            <ui:insert name="bottom">Bottom from template</ui:insert>
+        </div>
+
+    </h:body>
+
+</html>
diff --git a/test/web-profile/flow/basic_implicit_in_jar/src/main/resources/META-INF/resources/resources/cssLayout.css b/test/web-profile/flow/basic_implicit_in_jar/src/main/resources/META-INF/resources/resources/cssLayout.css
new file mode 100644
index 0000000..42d12e2
--- /dev/null
+++ b/test/web-profile/flow/basic_implicit_in_jar/src/main/resources/META-INF/resources/resources/cssLayout.css
@@ -0,0 +1,61 @@
+
+#top {
+    position: relative;
+    background-color: green;
+    color: white;
+    padding: 5px;
+    margin: 0px 0px 10px 0px;
+}
+
+#bottom {
+    position: relative;
+    background-color: blue;
+    padding: 5px;
+    margin: 10px 0px 0px 0px;
+}
+
+#left {
+    float: left;
+    background-color: #ece3a5;
+    padding: 5px;
+    width: 150px;
+}
+
+#right {
+    float: right;
+    background-color: #ece3a5;
+    padding: 5px;
+    width: 150px;
+}
+
+.center_content {
+    position: relative;
+    background-color: #dddddd;
+    padding: 5px;
+}
+
+.left_content {
+    background-color: #dddddd;
+    padding: 5px;
+    margin-left: 170px;
+}
+
+.right_content {
+    background-color: #dddddd;
+    padding: 5px;
+    margin: 0px 170px 0px 170px;
+}
+
+#top a:link, #top a:visited {
+  color: white;
+  font-weight : bold;
+  text-decoration: none;
+}
+
+#top a:link:hover, #top a:visited:hover  {
+  color: black;
+  font-weight : bold;
+  text-decoration : underline;
+}
+
+
diff --git a/test/web-profile/flow/basic_implicit_in_jar/src/main/resources/META-INF/resources/resources/default.css b/test/web-profile/flow/basic_implicit_in_jar/src/main/resources/META-INF/resources/resources/default.css
new file mode 100644
index 0000000..6cbc3d1
--- /dev/null
+++ b/test/web-profile/flow/basic_implicit_in_jar/src/main/resources/META-INF/resources/resources/default.css
@@ -0,0 +1,29 @@
+body {
+    background-color: #ffffff;
+    font-size: 12px;
+    font-family: Verdana, "Verdana CE",  Arial, "Arial CE", "Lucida Grande CE", lucida, "Helvetica CE", sans-serif;
+    color: #000000;  
+    margin: 10px;
+}
+
+h1 {
+    font-family: Arial, "Arial CE", "Lucida Grande CE", lucida, "Helvetica CE", sans-serif;
+    border-bottom: 1px solid #AFAFAF; 
+    font-size:  16px;
+    font-weight: bold;
+    margin: 0px;
+    padding: 0px;
+    color: #D20005;
+}
+
+a:link, a:visited {
+  color: #045491;
+  font-weight : bold;
+  text-decoration: none;
+}
+
+a:link:hover, a:visited:hover  {
+  color: #045491;
+  font-weight : bold;
+  text-decoration : underline;
+}
diff --git a/test/web-profile/flow/basic_implicit_template/nbactions.xml b/test/web-profile/flow/basic_implicit_template/nbactions.xml
new file mode 100644
index 0000000..7f6b604
--- /dev/null
+++ b/test/web-profile/flow/basic_implicit_template/nbactions.xml
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<actions>
+    <action>
+        <actionName>debug.test.single</actionName>
+        <goals>
+            <goal>test-compile</goal>
+            <goal>surefire:test</goal>
+        </goals>
+        <properties>
+            <test>${packageClassName}</test>
+            <forkMode>once</forkMode>
+            <maven.surefire.debug>-Xdebug -Xrunjdwp:transport=dt_socket,server=n,address=${jpda.address}</maven.surefire.debug>
+            <jpda.listen>true</jpda.listen>
+            <integration.url>http://localhost:8080/test-webprofile-flow-basic_implicit_template/</integration.url>
+        </properties>
+    </action>
+    <action>
+        <actionName>test.single</actionName>
+        <goals>
+            <goal>test-compile</goal>
+            <goal>surefire:test</goal>
+        </goals>
+        <properties>
+            <integration.url>http://localhost:8080/test-webprofile-flow-basic_implicit_template/</integration.url>
+            <test>${packageClassName}</test>
+        </properties>
+    </action>
+</actions>
diff --git a/test/web-profile/flow/basic_implicit_template/pom.xml b/test/web-profile/flow/basic_implicit_template/pom.xml
new file mode 100644
index 0000000..4443645
--- /dev/null
+++ b/test/web-profile/flow/basic_implicit_template/pom.xml
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.webprofile.flow</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.webprofile.flow</groupId>
+    <artifactId>basic_implicit_template</artifactId>
+    <packaging>war</packaging>
+    <name>Mojarra ${project.version} - Test - Web-Profile - Flow - basic_implicit_template</name>
+    <build>
+        <finalName>test-webprofile-flow-basic_implicit_template</finalName>
+    </build>
+    <dependencies>
+        <dependency>
+            <groupId>com.sun.faces.test.webprofile.flow</groupId>
+            <artifactId>flow_with_template_in_jar</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+    </dependencies>
+    <properties>
+        <netbeans.hint.deploy.server>gfv3ee6</netbeans.hint.deploy.server>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/test/web-profile/flow/basic_implicit_template/src/main/resources/META-INF/persistence.xml b/test/web-profile/flow/basic_implicit_template/src/main/resources/META-INF/persistence.xml
new file mode 100644
index 0000000..6377368
--- /dev/null
+++ b/test/web-profile/flow/basic_implicit_template/src/main/resources/META-INF/persistence.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<persistence version="2.0"
+   xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+   xsi:schemaLocation="
+        http://java.sun.com/xml/ns/persistence
+        http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
+   <persistence-unit name="primary">
+      <!-- If you are running in a production environment, add a managed 
+         data source, the example data source is just for development and testing! -->
+      <jta-data-source>java:jboss/datasources/acmeDS</jta-data-source>
+      <properties>
+         <!-- Properties for Hibernate -->
+         <property name="hibernate.hbm2ddl.auto" value="create-drop" />
+         <property name="hibernate.show_sql" value="false" />
+      </properties>
+   </persistence-unit>
+</persistence>
\ No newline at end of file
diff --git a/test/web-profile/flow/basic_implicit_template/src/main/webapp/WEB-INF/beans.xml b/test/web-profile/flow/basic_implicit_template/src/main/webapp/WEB-INF/beans.xml
new file mode 100644
index 0000000..c782f57
--- /dev/null
+++ b/test/web-profile/flow/basic_implicit_template/src/main/webapp/WEB-INF/beans.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- This file can be an empty text file (0 bytes) -->
+<!-- We're declaring the schema to save you time if you do have to configure 
+   this in the future -->
+<beans xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+   xsi:schemaLocation="
+        http://java.sun.com/xml/ns/javaee 
+        http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
+</beans>
diff --git a/test/web-profile/flow/basic_implicit_template/src/main/webapp/WEB-INF/glassfish-web.xml b/test/web-profile/flow/basic_implicit_template/src/main/webapp/WEB-INF/glassfish-web.xml
new file mode 100644
index 0000000..7079794
--- /dev/null
+++ b/test/web-profile/flow/basic_implicit_template/src/main/webapp/WEB-INF/glassfish-web.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
+<glassfish-web-app error-url="">
+  <context-root>/test-webprofile-flow-basic_implicit_template</context-root>
+  <class-loader delegate="true"/>
+  <jsp-config>
+    <property name="keepgenerated" value="true">
+      <description>Keep a copy of the generated servlet class' java code.</description>
+    </property>
+  </jsp-config>
+</glassfish-web-app>
diff --git a/test/web-profile/flow/basic_implicit_template/src/main/webapp/WEB-INF/web.xml b/test/web-profile/flow/basic_implicit_template/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..74e3339
--- /dev/null
+++ b/test/web-profile/flow/basic_implicit_template/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>${webapp.projectStage}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
+        <param-value>${webapp.partialStateSaving}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>${webapp.stateSavingMethod}</param-value>
+    </context-param>
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <welcome-file-list>
+        <welcome-file>faces/index.xhtml</welcome-file>
+    </welcome-file-list>
+</web-app>
diff --git a/test/web-profile/flow/basic_implicit_template/src/main/webapp/flow-a-return.xhtml b/test/web-profile/flow/basic_implicit_template/src/main/webapp/flow-a-return.xhtml
new file mode 100644
index 0000000..3cf26de
--- /dev/null
+++ b/test/web-profile/flow/basic_implicit_template/src/main/webapp/flow-a-return.xhtml
@@ -0,0 +1,12 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title>Facelet Title</title>
+    </h:head>
+    <h:body>
+        flow-a-return
+    </h:body>
+</html>
+
diff --git a/test/web-profile/flow/basic_implicit_template/src/main/webapp/flow-a/flow-a-flow.xml b/test/web-profile/flow/basic_implicit_template/src/main/webapp/flow-a/flow-a-flow.xml
new file mode 100644
index 0000000..e69de29
diff --git a/test/web-profile/flow/basic_implicit_template/src/main/webapp/flow-a/flow-a-next.xhtml b/test/web-profile/flow/basic_implicit_template/src/main/webapp/flow-a/flow-a-next.xhtml
new file mode 100644
index 0000000..9a1a91d
--- /dev/null
+++ b/test/web-profile/flow/basic_implicit_template/src/main/webapp/flow-a/flow-a-next.xhtml
@@ -0,0 +1,27 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:h="http://java.sun.com/jsf/html">
+
+    <body>
+
+        <ui:composition template="templateWithinFlow.xhtml">
+
+            <ui:define name="content">
+                <h:form prependId="false">
+                    
+                    <h:commandButton id="return" value="return "
+                                     action="flow-a-return"/>
+                    
+                </h:form>
+            </ui:define>
+
+            <ui:define name="bottom">
+                bottom from template client
+            </ui:define>
+
+        </ui:composition>
+
+    </body>
+</html>
diff --git a/test/web-profile/flow/basic_implicit_template/src/main/webapp/flow-a/flow-a.xhtml b/test/web-profile/flow/basic_implicit_template/src/main/webapp/flow-a/flow-a.xhtml
new file mode 100644
index 0000000..da9a7d4
--- /dev/null
+++ b/test/web-profile/flow/basic_implicit_template/src/main/webapp/flow-a/flow-a.xhtml
@@ -0,0 +1,27 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:h="http://java.sun.com/jsf/html">
+
+    <body>
+
+        <ui:composition template="./templateWithinFlow.xhtml">
+
+            <ui:define name="top">
+                top from template client flow-a
+            </ui:define>
+
+            <ui:define name="content">
+                <h:form prependId="false">
+                    
+                    <h:commandButton id="next" value="template client with relative template reference"
+                                     action="flow-a-next"/>
+                    
+                </h:form>
+            </ui:define>
+
+        </ui:composition>
+
+    </body>
+</html>
diff --git a/test/web-profile/flow/basic_implicit_template/src/main/webapp/flow-a/templateWithinFlow.xhtml b/test/web-profile/flow/basic_implicit_template/src/main/webapp/flow-a/templateWithinFlow.xhtml
new file mode 100644
index 0000000..731767c
--- /dev/null
+++ b/test/web-profile/flow/basic_implicit_template/src/main/webapp/flow-a/templateWithinFlow.xhtml
@@ -0,0 +1,30 @@
+<?xml version='1.0' encoding='UTF-8' ?> 
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:h="http://java.sun.com/jsf/html">
+
+    <h:head>
+        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+        <link href="./../resources/css/default.css" rel="stylesheet" type="text/css" />
+        <link href="./../resources/css/cssLayout.css" rel="stylesheet" type="text/css" />
+        <title>Facelets Template</title>
+    </h:head>
+
+    <h:body>
+
+        <div id="top">
+            <ui:insert name="top">Top from template</ui:insert>
+        </div>
+
+        <div id="content" class="center_content">
+            <ui:insert name="content">Content</ui:insert>
+        </div>
+
+        <div id="bottom">
+            <ui:insert name="bottom">Bottom from template</ui:insert>
+        </div>
+
+    </h:body>
+
+</html>
diff --git a/test/web-profile/flow/basic_implicit_template/src/main/webapp/flow_with_template_in_jar-return.xhtml b/test/web-profile/flow/basic_implicit_template/src/main/webapp/flow_with_template_in_jar-return.xhtml
new file mode 100644
index 0000000..664cfc6
--- /dev/null
+++ b/test/web-profile/flow/basic_implicit_template/src/main/webapp/flow_with_template_in_jar-return.xhtml
@@ -0,0 +1,12 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title>Facelet Title</title>
+    </h:head>
+    <h:body>
+        flow_with_template_in_jar-return
+    </h:body>
+</html>
+
diff --git a/test/web-profile/flow/basic_implicit_template/src/main/webapp/index.xhtml b/test/web-profile/flow/basic_implicit_template/src/main/webapp/index.xhtml
new file mode 100644
index 0000000..cb00db1
--- /dev/null
+++ b/test/web-profile/flow/basic_implicit_template/src/main/webapp/index.xhtml
@@ -0,0 +1,59 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <head>
+        <title>Page with link to flow entry</title>
+    </head>
+    <body>
+        <h1>Page with link to flow entry</h1>
+        
+    <h:form prependId="false">
+        <p><h:commandButton id="flow-a" value="flow-a" action="flow-a" /></p>
+        <p><h:commandButton id="flow_with_template_in_jar" value="flow_with_template_in_jar" action="flow_with_template_in_jar" /></p>
+    </h:form>
+</body>
+</html>
diff --git a/test/web-profile/flow/basic_implicit_template/src/main/webapp/resources/css/cssLayout.css b/test/web-profile/flow/basic_implicit_template/src/main/webapp/resources/css/cssLayout.css
new file mode 100644
index 0000000..8ee7ceb
--- /dev/null
+++ b/test/web-profile/flow/basic_implicit_template/src/main/webapp/resources/css/cssLayout.css
@@ -0,0 +1,61 @@
+
+#top {
+    position: relative;
+    background-color: #036fab;
+    color: white;
+    padding: 5px;
+    margin: 0px 0px 10px 0px;
+}
+
+#bottom {
+    position: relative;
+    background-color: #c2dfef;
+    padding: 5px;
+    margin: 10px 0px 0px 0px;
+}
+
+#left {
+    float: left;
+    background-color: #ece3a5;
+    padding: 5px;
+    width: 150px;
+}
+
+#right {
+    float: right;
+    background-color: #ece3a5;
+    padding: 5px;
+    width: 150px;
+}
+
+.center_content {
+    position: relative;
+    background-color: #dddddd;
+    padding: 5px;
+}
+
+.left_content {
+    background-color: #dddddd;
+    padding: 5px;
+    margin-left: 170px;
+}
+
+.right_content {
+    background-color: #dddddd;
+    padding: 5px;
+    margin: 0px 170px 0px 170px;
+}
+
+#top a:link, #top a:visited {
+  color: white;
+  font-weight : bold;
+  text-decoration: none;
+}
+
+#top a:link:hover, #top a:visited:hover  {
+  color: black;
+  font-weight : bold;
+  text-decoration : underline;
+}
+
+
diff --git a/test/web-profile/flow/basic_implicit_template/src/main/webapp/resources/css/default.css b/test/web-profile/flow/basic_implicit_template/src/main/webapp/resources/css/default.css
new file mode 100644
index 0000000..6cbc3d1
--- /dev/null
+++ b/test/web-profile/flow/basic_implicit_template/src/main/webapp/resources/css/default.css
@@ -0,0 +1,29 @@
+body {
+    background-color: #ffffff;
+    font-size: 12px;
+    font-family: Verdana, "Verdana CE",  Arial, "Arial CE", "Lucida Grande CE", lucida, "Helvetica CE", sans-serif;
+    color: #000000;  
+    margin: 10px;
+}
+
+h1 {
+    font-family: Arial, "Arial CE", "Lucida Grande CE", lucida, "Helvetica CE", sans-serif;
+    border-bottom: 1px solid #AFAFAF; 
+    font-size:  16px;
+    font-weight: bold;
+    margin: 0px;
+    padding: 0px;
+    color: #D20005;
+}
+
+a:link, a:visited {
+  color: #045491;
+  font-weight : bold;
+  text-decoration: none;
+}
+
+a:link:hover, a:visited:hover  {
+  color: #045491;
+  font-weight : bold;
+  text-decoration : underline;
+}
diff --git a/test/web-profile/flow/basic_implicit_template/src/test/java/com/sun/faces/test/webprofile/flow/basic_implicit_template/BasicFlowEntryExitIT.java b/test/web-profile/flow/basic_implicit_template/src/test/java/com/sun/faces/test/webprofile/flow/basic_implicit_template/BasicFlowEntryExitIT.java
new file mode 100644
index 0000000..fbc8670
--- /dev/null
+++ b/test/web-profile/flow/basic_implicit_template/src/test/java/com/sun/faces/test/webprofile/flow/basic_implicit_template/BasicFlowEntryExitIT.java
@@ -0,0 +1,138 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.webprofile.flow.basic_implicit_template;
+
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import java.io.IOException;
+import org.junit.Ignore;
+import static org.junit.Assert.assertTrue;
+
+public class BasicFlowEntryExitIT {
+    /**
+     * Stores the web URL.
+     */
+    private String webUrl;
+    /**
+     * Stores the web client.
+     */
+    private WebClient webClient;
+
+    /**
+     * Setup before testing.
+     * 
+     * @throws Exception when a serious error occurs.
+     */
+    @BeforeClass
+    public static void setUpClass() throws Exception {
+    }
+
+    /**
+     * Cleanup after testing.
+     * 
+     * @throws Exception when a serious error occurs.
+     */
+    @AfterClass
+    public static void tearDownClass() throws Exception {
+    }
+
+    /**
+     * Setup before testing.
+     */
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    /**
+     * Tear down after testing.
+     */
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testDirectoryFlowWithTemplate() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl);
+
+        assertTrue(page.getBody().asText().indexOf("Page with link to flow entry") != -1);
+
+        doTest(page, "flow-a");
+        
+    }
+    
+    @Test
+    public void testJarFlowWithTemplate() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl);
+
+        assertTrue(page.getBody().asText().indexOf("Page with link to flow entry") != -1);
+
+        doTest(page, "flow_with_template_in_jar");
+        
+    }
+    public void doTest(HtmlPage page, String startButtonId) throws IOException {
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById(startButtonId);
+        page = button.click();
+        
+        String pageText = page.getBody().asText();
+        assertTrue(pageText.contains("top from template client flow-a"));
+        assertTrue(pageText.contains("Bottom from template"));
+        button = (HtmlSubmitInput) page.getElementById("next");
+        page = button.click();
+        
+        pageText = page.getBody().asText();
+        assertTrue(pageText.contains("Top from template"));
+        assertTrue(pageText.contains("bottom from template client"));
+        button = (HtmlSubmitInput) page.getElementById("return");
+        page = button.click();
+        
+        pageText = page.getBody().asText();
+        assertTrue(pageText.contains(startButtonId + "-return"));
+        
+    }
+}
diff --git a/test/web-profile/flow/basic_method_call/nbactions.xml b/test/web-profile/flow/basic_method_call/nbactions.xml
new file mode 100644
index 0000000..278cd5b
--- /dev/null
+++ b/test/web-profile/flow/basic_method_call/nbactions.xml
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<actions>
+    <action>
+        <actionName>debug.test.single</actionName>
+        <goals>
+            <goal>test-compile</goal>
+            <goal>surefire:test</goal>
+        </goals>
+        <properties>
+            <test>${packageClassName}</test>
+            <forkMode>once</forkMode>
+            <maven.surefire.debug>-Xdebug -Xrunjdwp:transport=dt_socket,server=n,address=${jpda.address}</maven.surefire.debug>
+            <jpda.listen>true</jpda.listen>
+            <integration.url>http://localhost:8080/test-webprofile-flow-basic_method_call/</integration.url>
+        </properties>
+    </action>
+    <action>
+        <actionName>test.single</actionName>
+        <goals>
+            <goal>test-compile</goal>
+            <goal>surefire:test</goal>
+        </goals>
+        <properties>
+            <integration.url>http://localhost:8080/test-webprofile-flow-basic_method_call/</integration.url>
+            <test>${packageClassName}</test>
+        </properties>
+    </action>
+</actions>
diff --git a/test/web-profile/flow/basic_method_call/pom.xml b/test/web-profile/flow/basic_method_call/pom.xml
new file mode 100644
index 0000000..cdc9c5c
--- /dev/null
+++ b/test/web-profile/flow/basic_method_call/pom.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.webprofile.flow</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.webprofile.flow</groupId>
+    <artifactId>basic_method_call</artifactId>
+    <packaging>war</packaging>
+    <name>Mojarra ${project.version} - Test - Web-Profile - Flow - basic_method_call Test </name>
+    <build>
+        <finalName>test-webprofile-flow-basic_method_call</finalName>
+    </build>
+    <properties>
+        <netbeans.hint.deploy.server>gfv3ee6</netbeans.hint.deploy.server>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/test/web-profile/flow/basic_method_call/src/main/java/com/sun/faces/test/webprofile/flow/basic_method_call/FlowA.java b/test/web-profile/flow/basic_method_call/src/main/java/com/sun/faces/test/webprofile/flow/basic_method_call/FlowA.java
new file mode 100644
index 0000000..a916a49
--- /dev/null
+++ b/test/web-profile/flow/basic_method_call/src/main/java/com/sun/faces/test/webprofile/flow/basic_method_call/FlowA.java
@@ -0,0 +1,70 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.test.webprofile.flow.basic_method_call;
+
+import java.io.Serializable;
+import javax.enterprise.inject.Produces;
+import javax.faces.flow.builder.FlowBuilder;
+import javax.faces.flow.Flow;
+import javax.faces.flow.builder.FlowBuilderParameter;
+import javax.faces.flow.builder.FlowDefinition;
+
+
+public class FlowA implements Serializable {
+    
+    private static final long serialVersionUID = -7623501087369765218L;
+
+    public FlowA() {
+    }
+    
+    @Produces @FlowDefinition
+    public Flow defineFlow(@FlowBuilderParameter FlowBuilder flowBuilder) {
+        String flowId = "flow-a";
+        flowBuilder.id("", flowId);
+        flowBuilder.returnNode("taskFlowReturn1").
+                fromOutcome("#{flow_a_Bean.returnValue}");
+        flowBuilder.methodCallNode("outcome-from-method").expression("#{flow_a_Bean.methodWithOutcome}").defaultOutcome("taskFlowReturn1");
+        flowBuilder.methodCallNode("outcome-from-markup").expression("#{flow_a_Bean.voidMethod}").defaultOutcome("taskFlowReturn1");
+        
+        return flowBuilder.getFlow();
+    }
+    
+}
diff --git a/test/web-profile/flow/basic_method_call/src/main/java/com/sun/faces/test/webprofile/flow/basic_method_call/Flow_a_Bean.java b/test/web-profile/flow/basic_method_call/src/main/java/com/sun/faces/test/webprofile/flow/basic_method_call/Flow_a_Bean.java
new file mode 100644
index 0000000..b383e39
--- /dev/null
+++ b/test/web-profile/flow/basic_method_call/src/main/java/com/sun/faces/test/webprofile/flow/basic_method_call/Flow_a_Bean.java
@@ -0,0 +1,70 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.webprofile.flow.basic_method_call;
+
+import javax.faces.flow.FlowScoped;
+import java.io.Serializable;
+
+import javax.faces.context.FacesContext;
+import javax.inject.Named;
+
+ at Named
+ at FlowScoped("flow-a")
+public class Flow_a_Bean implements Serializable {
+
+   public String getName() {
+       return "Flow_a_Bean";
+   }
+   
+   public String getReturnValue() {
+       return "/return1";
+   }
+   
+   public String methodWithOutcome() {
+       return "next_b";
+   }
+   
+   public void voidMethod() {
+       FacesContext context = FacesContext.getCurrentInstance();
+       context.getExternalContext().getRequestMap().put("message", "voidMethod called in flow-a");
+       
+   }
+   
+}
diff --git a/test/web-profile/flow/basic_method_call/src/main/java/com/sun/faces/test/webprofile/flow/basic_method_call/Flow_b_Bean.java b/test/web-profile/flow/basic_method_call/src/main/java/com/sun/faces/test/webprofile/flow/basic_method_call/Flow_b_Bean.java
new file mode 100644
index 0000000..8472d48
--- /dev/null
+++ b/test/web-profile/flow/basic_method_call/src/main/java/com/sun/faces/test/webprofile/flow/basic_method_call/Flow_b_Bean.java
@@ -0,0 +1,80 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.webprofile.flow.basic_method_call;
+
+import javax.faces.flow.FlowScoped;
+import java.io.Serializable;
+
+import javax.faces.context.FacesContext;
+import javax.inject.Named;
+
+ at Named
+ at FlowScoped("flow-b")
+public class Flow_b_Bean implements Serializable {
+
+   public String getName() {
+       return "Flow_B_Bean";
+   }
+   
+   public String getReturnValue() {
+       return "/return1";
+   }
+   
+   public String methodWithOutcome(String strParam, Integer intParam) {
+       if (!strParam.equals("param1Value")) {
+           throw new IllegalArgumentException();
+       }
+       if (!intParam.equals(getInteger())) {
+           throw new IllegalArgumentException();
+       }
+       
+       return "next_b";
+   }
+   
+   public void voidMethod() {
+       FacesContext context = FacesContext.getCurrentInstance();
+       context.getExternalContext().getRequestMap().put("message", "voidMethod called in flow-b");
+       
+   }
+   
+   public Integer getInteger() {
+       return Integer.valueOf(Integer.MAX_VALUE);
+   }
+}
diff --git a/test/web-profile/flow/basic_method_call/src/main/java/com/sun/faces/test/webprofile/flow/basic_method_call/Pflow.java b/test/web-profile/flow/basic_method_call/src/main/java/com/sun/faces/test/webprofile/flow/basic_method_call/Pflow.java
new file mode 100644
index 0000000..3477799
--- /dev/null
+++ b/test/web-profile/flow/basic_method_call/src/main/java/com/sun/faces/test/webprofile/flow/basic_method_call/Pflow.java
@@ -0,0 +1,57 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.test.webprofile.flow.basic_method_call;
+
+import java.io.Serializable;
+import javax.faces.flow.FlowScoped;
+import javax.inject.Named;
+
+ at Named
+ at FlowScoped(value="method-call-start-node")
+public class Pflow implements Serializable {
+    
+    private static final long serialVersionUID = -8810904955483635554L;
+    
+    public String firstPage() {
+        return "myFirstViewNode";
+    }
+    
+}
diff --git a/test/web-profile/flow/basic_method_call/src/main/java/com/sun/faces/test/webprofile/flow/basic_method_call/SwitchFlow.java b/test/web-profile/flow/basic_method_call/src/main/java/com/sun/faces/test/webprofile/flow/basic_method_call/SwitchFlow.java
new file mode 100644
index 0000000..c48844a
--- /dev/null
+++ b/test/web-profile/flow/basic_method_call/src/main/java/com/sun/faces/test/webprofile/flow/basic_method_call/SwitchFlow.java
@@ -0,0 +1,57 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.test.webprofile.flow.basic_method_call;
+
+import java.io.Serializable;
+import javax.faces.flow.FlowScoped;
+import javax.inject.Named;
+
+ at Named
+ at FlowScoped(value="switch-start-node")
+public class SwitchFlow implements Serializable {
+    
+    private static final long serialVersionUID = 5651420988399505348L;
+    
+    public boolean isFirstPage() {
+        return true;
+    }
+    
+}
diff --git a/test/web-profile/flow/basic_method_call/src/main/webapp/WEB-INF/beans.xml b/test/web-profile/flow/basic_method_call/src/main/webapp/WEB-INF/beans.xml
new file mode 100644
index 0000000..c782f57
--- /dev/null
+++ b/test/web-profile/flow/basic_method_call/src/main/webapp/WEB-INF/beans.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- This file can be an empty text file (0 bytes) -->
+<!-- We're declaring the schema to save you time if you do have to configure 
+   this in the future -->
+<beans xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+   xsi:schemaLocation="
+        http://java.sun.com/xml/ns/javaee 
+        http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
+</beans>
diff --git a/test/web-profile/flow/basic_method_call/src/main/webapp/WEB-INF/glassfish-web.xml b/test/web-profile/flow/basic_method_call/src/main/webapp/WEB-INF/glassfish-web.xml
new file mode 100644
index 0000000..b21693f
--- /dev/null
+++ b/test/web-profile/flow/basic_method_call/src/main/webapp/WEB-INF/glassfish-web.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
+<glassfish-web-app error-url="">
+  <context-root>/test-webprofile-flow-basic_method_call</context-root>
+  <class-loader delegate="true"/>
+  <jsp-config>
+    <property name="keepgenerated" value="true">
+      <description>Keep a copy of the generated servlet class' java code.</description>
+    </property>
+  </jsp-config>
+</glassfish-web-app>
diff --git a/test/web-profile/flow/basic_method_call/src/main/webapp/WEB-INF/web.xml b/test/web-profile/flow/basic_method_call/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..74e3339
--- /dev/null
+++ b/test/web-profile/flow/basic_method_call/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>${webapp.projectStage}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
+        <param-value>${webapp.partialStateSaving}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>${webapp.stateSavingMethod}</param-value>
+    </context-param>
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <welcome-file-list>
+        <welcome-file>faces/index.xhtml</welcome-file>
+    </welcome-file-list>
+</web-app>
diff --git a/test/web-profile/flow/basic_method_call/src/main/webapp/flow-a/flow-a.xhtml b/test/web-profile/flow/basic_method_call/src/main/webapp/flow-a/flow-a.xhtml
new file mode 100644
index 0000000..cb9cc28
--- /dev/null
+++ b/test/web-profile/flow/basic_method_call/src/main/webapp/flow-a/flow-a.xhtml
@@ -0,0 +1,60 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    
+    <head>
+        <title>First page in the flow</title>
+    </head>
+    <body bgcolor="red">
+    <h:form prependId="false">
+        <p>First page in the flow</p>
+        <p><h:commandButton id="outcome-from-method" action="outcome-from-method" value="outcome-from-method" /></p>
+        <p><h:commandButton id="outcome-from-markup" action="outcome-from-markup" value="outcome-from-markup" /></p>
+    </h:form>
+    </body>
+</html>
diff --git a/test/web-profile/flow/basic_method_call/src/main/webapp/flow-a/next_b.xhtml b/test/web-profile/flow/basic_method_call/src/main/webapp/flow-a/next_b.xhtml
new file mode 100644
index 0000000..c90a650
--- /dev/null
+++ b/test/web-profile/flow/basic_method_call/src/main/webapp/flow-a/next_b.xhtml
@@ -0,0 +1,57 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    
+    <head>
+        <title>Last page in the flow</title>
+    </head>
+    <body bgcolor="red">
+        
+        <p>Last page in the flow</p>
+    </body>
+</html>
diff --git a/test/web-profile/flow/basic_method_call/src/main/webapp/flow-b/flow-b-flow.xml b/test/web-profile/flow/basic_method_call/src/main/webapp/flow-b/flow-b-flow.xml
new file mode 100644
index 0000000..fb7a7e3
--- /dev/null
+++ b/test/web-profile/flow/basic_method_call/src/main/webapp/flow-b/flow-b-flow.xml
@@ -0,0 +1,75 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<faces-config version="2.2" xmlns="http://xmlns.jcp.org/xml/ns/javaee"
+   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+   xsi:schemaLocation="
+        http://xmlns.jcp.org/xml/ns/javaee
+        http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd">
+
+  <flow-definition id="flow-b">
+    
+    <flow-return id="taskFlowReturn1">
+      <from-outcome>#{flow_b_Bean.returnValue}</from-outcome>
+    </flow-return>            
+    
+    <method-call id="outcome-from-method">
+      <method>#{flow_b_Bean.methodWithOutcome}</method>
+      <default-outcome>taskFlowReturn1</default-outcome>
+      <parameter>
+        <value>param1Value</value>
+      </parameter>
+      <parameter>
+        <class>java.lang.Integer</class>
+        <value>#{flow_b_Bean.integer}</value>
+      </parameter>
+    </method-call>
+    
+    <method-call id="outcome-from-markup">
+      <method>#{flow_b_Bean.voidMethod}</method>
+      <default-outcome>taskFlowReturn1</default-outcome>
+    </method-call>
+    
+  </flow-definition>
+  
+</faces-config>
diff --git a/test/web-profile/flow/basic_method_call/src/main/webapp/flow-b/flow-b.xhtml b/test/web-profile/flow/basic_method_call/src/main/webapp/flow-b/flow-b.xhtml
new file mode 100644
index 0000000..72d666d
--- /dev/null
+++ b/test/web-profile/flow/basic_method_call/src/main/webapp/flow-b/flow-b.xhtml
@@ -0,0 +1,61 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    
+    <head>
+        <title>First page in the flow</title>
+    </head>
+    <body bgcolor="blue">
+    <h:form prependId="false">
+        <p>First page in the flow</p>
+        <p><h:commandButton id="outcome-from-method" action="outcome-from-method" value="outcome-from-method" /></p>
+        <p><h:commandButton id="outcome-from-markup" action="outcome-from-markup" value="outcome-from-markup" /></p>
+        
+    </h:form>
+    </body>
+</html>
diff --git a/test/web-profile/flow/basic_method_call/src/main/webapp/flow-b/next_b.xhtml b/test/web-profile/flow/basic_method_call/src/main/webapp/flow-b/next_b.xhtml
new file mode 100644
index 0000000..ef0605a
--- /dev/null
+++ b/test/web-profile/flow/basic_method_call/src/main/webapp/flow-b/next_b.xhtml
@@ -0,0 +1,57 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    
+    <head>
+        <title>Last page in the flow</title>
+    </head>
+    <body bgcolor="blue">
+        
+        <p>Last page in the flow</p>
+    </body>
+</html>
diff --git a/test/web-profile/flow/basic_method_call/src/main/webapp/index.xhtml b/test/web-profile/flow/basic_method_call/src/main/webapp/index.xhtml
new file mode 100644
index 0000000..6ffef31
--- /dev/null
+++ b/test/web-profile/flow/basic_method_call/src/main/webapp/index.xhtml
@@ -0,0 +1,67 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <head>
+        <title>Outside of flow</title>
+    </head>
+    <body>
+        <h1>Outside of flow</h1>
+        
+    <h:form prependId="false">
+        <p><h:commandButton id="start_a" value="enter flow-a" 
+                            action="flow-a" /></p>
+        <p><h:commandButton id="start_b" value="enter flow-b" 
+                            action="flow-b" /></p>
+        <p><h:commandButton id="start_method-call-start-node" value="enter method-call-start-node" 
+                            action="method-call-start-node" /></p>
+        <p><h:commandButton id="start_switch-start-node" value="enter switch-start-node" 
+                            action="switch-start-node" /></p>
+
+        <p><h:commandButton id="stay" value="stay" /></p>
+    </h:form>
+</body>
+</html>
diff --git a/test/web-profile/flow/basic_method_call/src/main/webapp/method-call-start-node/method-call-start-node-flow.xml b/test/web-profile/flow/basic_method_call/src/main/webapp/method-call-start-node/method-call-start-node-flow.xml
new file mode 100644
index 0000000..b1c2c0b
--- /dev/null
+++ b/test/web-profile/flow/basic_method_call/src/main/webapp/method-call-start-node/method-call-start-node-flow.xml
@@ -0,0 +1,65 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<faces-config version="2.2" xmlns="http://xmlns.jcp.org/xml/ns/javaee"
+              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+              xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
+                                  http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd">
+  
+  <flow-definition id="method-call-start-node">
+    <start-node>firstpage</start-node>
+    
+    <method-call id="firstpage" >
+      <method>#{pflow.firstPage()}</method>
+      <default-outcome>delay_event</default-outcome>
+    </method-call>
+    
+    <flow-call id="call-switch-start-node">
+        <flow-reference>
+            <flow-id>switch-start-node</flow-id>
+        </flow-reference>
+    </flow-call>
+    
+  </flow-definition>  
+  
+</faces-config>
diff --git a/test/web-profile/flow/basic_method_call/src/main/webapp/method-call-start-node/myFirstViewNode.xhtml b/test/web-profile/flow/basic_method_call/src/main/webapp/method-call-start-node/myFirstViewNode.xhtml
new file mode 100644
index 0000000..fdbc456
--- /dev/null
+++ b/test/web-profile/flow/basic_method_call/src/main/webapp/method-call-start-node/myFirstViewNode.xhtml
@@ -0,0 +1,61 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    
+    <head>
+        <title>First page in the flow</title>
+    </head>
+    <body bgcolor="orange">
+    <h:form prependId="false">
+        <p>First page in the flow</p>
+        
+        <p><h:commandButton id="method-call-button" value="call switch-start-node" action="call-switch-start-node" /></p>
+        
+    </h:form>
+    </body>
+</html>
diff --git a/test/web-profile/flow/basic_method_call/src/main/webapp/return1.xhtml b/test/web-profile/flow/basic_method_call/src/main/webapp/return1.xhtml
new file mode 100644
index 0000000..acfe962
--- /dev/null
+++ b/test/web-profile/flow/basic_method_call/src/main/webapp/return1.xhtml
@@ -0,0 +1,65 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <head>
+        <title>Page navigated to upon return from any flow</title>
+    </head>
+    <body>
+        <h1>Page navigated to upon return from any flow</h1>
+        
+        <p><span id="message">#{message}</span></p>
+        
+    <h:form prependId="false">
+        <p>return page</p>
+        
+        <p>Has a flow: #{null != facesContext.application.flowHandler.currentFlow}.</p>
+        
+        <p>flowScope value, should be empty: #{flowScope.value}.</p>
+                
+    </h:form>
+</body>
+</html>
diff --git a/test/web-profile/flow/basic_method_call/src/main/webapp/switch-start-node/myFirstViewNode.xhtml b/test/web-profile/flow/basic_method_call/src/main/webapp/switch-start-node/myFirstViewNode.xhtml
new file mode 100644
index 0000000..fcafe74
--- /dev/null
+++ b/test/web-profile/flow/basic_method_call/src/main/webapp/switch-start-node/myFirstViewNode.xhtml
@@ -0,0 +1,61 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    
+    <head>
+        <title>First page in the flow</title>
+    </head>
+    <body bgcolor="purple">
+    <h:form prependId="false">
+        <p>First page in the flow</p>
+        
+        <p><h:commandButton id="switch-button" value="call method-call-start-node" action="call-method-call-start-node" /></p>
+        
+    </h:form>
+    </body>
+</html>
diff --git a/test/web-profile/flow/basic_method_call/src/main/webapp/switch-start-node/switch-start-node-flow.xml b/test/web-profile/flow/basic_method_call/src/main/webapp/switch-start-node/switch-start-node-flow.xml
new file mode 100644
index 0000000..b2d8af4
--- /dev/null
+++ b/test/web-profile/flow/basic_method_call/src/main/webapp/switch-start-node/switch-start-node-flow.xml
@@ -0,0 +1,67 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<faces-config version="2.2" xmlns="http://xmlns.jcp.org/xml/ns/javaee"
+              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+              xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
+                                  http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd">
+  
+  <flow-definition id="switch-start-node">
+    <start-node>firstpage</start-node>
+    
+    <switch id="firstpage">
+      <case>
+        <if>#{switchFlow.isFirstPage()}</if>
+        <from-outcome>myFirstViewNode</from-outcome>
+      </case>
+    </switch>
+    
+    <flow-call id="call-method-call-start-node">
+        <flow-reference>
+            <flow-id>method-call-start-node</flow-id>
+        </flow-reference>
+    </flow-call>
+    
+  </flow-definition>  
+  
+</faces-config>
diff --git a/test/web-profile/flow/basic_method_call/src/test/java/com/sun/faces/test/webprofile/flow/basic_method_call/FlowMethodCallIT.java b/test/web-profile/flow/basic_method_call/src/test/java/com/sun/faces/test/webprofile/flow/basic_method_call/FlowMethodCallIT.java
new file mode 100644
index 0000000..8174c93
--- /dev/null
+++ b/test/web-profile/flow/basic_method_call/src/test/java/com/sun/faces/test/webprofile/flow/basic_method_call/FlowMethodCallIT.java
@@ -0,0 +1,134 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.webprofile.flow.basic_method_call;
+
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.assertEquals;
+
+public class FlowMethodCallIT {
+    /**
+     * Stores the web URL.
+     */
+    private String webUrl;
+    /**
+     * Stores the web client.
+     */
+    private WebClient webClient;
+
+    /**
+     * Setup before testing.
+     * 
+     * @throws Exception when a serious error occurs.
+     */
+    @BeforeClass
+    public static void setUpClass() throws Exception {
+    }
+
+    /**
+     * Cleanup after testing.
+     * 
+     * @throws Exception when a serious error occurs.
+     */
+    @AfterClass
+    public static void tearDownClass() throws Exception {
+    }
+
+    /**
+     * Setup before testing.
+     */
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    /**
+     * Tear down after testing.
+     */
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testBuilderDefinedFlowWithMethodCall() throws Exception {
+        doTest("start_a");
+    }
+
+    @Test
+    public void testXmlDefinedFlowWithMethodCall() throws Exception {
+        doTest("start_b");
+    }
+
+    public void doTest(String startId) throws Exception {
+        HtmlPage page = webClient.getPage(webUrl);
+
+        assertTrue(page.getBody().asText().indexOf("Outside of flow") != -1);
+        
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById(startId);
+        page = button.click();
+        
+        button = (HtmlSubmitInput) page.getElementById("outcome-from-method");
+        page = button.click();
+        
+        String pageText = page.asText();
+        assertTrue(pageText.contains("Last page in the flow"));
+
+        page = webClient.getPage(webUrl);
+        
+        button = (HtmlSubmitInput) page.getElementById("start_a");
+        page = button.click();
+        
+        button = (HtmlSubmitInput) page.getElementById("outcome-from-markup");
+        page = button.click();
+        
+        pageText = page.asText();
+        assertTrue(pageText.contains("voidMethod called in flow-a"));
+    }
+}
diff --git a/test/web-profile/flow/basic_method_call/src/test/java/com/sun/faces/test/webprofile/flow/basic_method_call/NonViewStartNodeIT.java b/test/web-profile/flow/basic_method_call/src/test/java/com/sun/faces/test/webprofile/flow/basic_method_call/NonViewStartNodeIT.java
new file mode 100644
index 0000000..0318e11
--- /dev/null
+++ b/test/web-profile/flow/basic_method_call/src/test/java/com/sun/faces/test/webprofile/flow/basic_method_call/NonViewStartNodeIT.java
@@ -0,0 +1,111 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.webprofile.flow.basic_method_call;
+
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.assertEquals;
+
+public class NonViewStartNodeIT {
+    /**
+     * Stores the web URL.
+     */
+    private String webUrl;
+    /**
+     * Stores the web client.
+     */
+    private WebClient webClient;
+
+    /**
+     * Setup before testing.
+     * 
+     * @throws Exception when a serious error occurs.
+     */
+    @BeforeClass
+    public static void setUpClass() throws Exception {
+    }
+
+    /**
+     * Cleanup after testing.
+     * 
+     * @throws Exception when a serious error occurs.
+     */
+    @AfterClass
+    public static void tearDownClass() throws Exception {
+    }
+
+    /**
+     * Setup before testing.
+     */
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    /**
+     * Tear down after testing.
+     */
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testMethodCallStartNode() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl);
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("start_method-call-start-node");
+        page = button.click();
+        button = (HtmlSubmitInput) page.getElementById("method-call-button");
+        page = button.click();
+        button = (HtmlSubmitInput) page.getElementById("switch-button");
+        page = button.click();
+        button = (HtmlSubmitInput) page.getElementById("method-call-button");
+
+    }
+}
diff --git a/test/web-profile/flow/basic_switch/nbactions.xml b/test/web-profile/flow/basic_switch/nbactions.xml
new file mode 100644
index 0000000..9d4eb12
--- /dev/null
+++ b/test/web-profile/flow/basic_switch/nbactions.xml
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<actions>
+    <action>
+        <actionName>debug.test.single</actionName>
+        <goals>
+            <goal>test-compile</goal>
+            <goal>surefire:test</goal>
+        </goals>
+        <properties>
+            <test>${packageClassName}</test>
+            <forkMode>once</forkMode>
+            <maven.surefire.debug>-Xdebug -Xrunjdwp:transport=dt_socket,server=n,address=${jpda.address}</maven.surefire.debug>
+            <jpda.listen>true</jpda.listen>
+            <integration.url>http://localhost:8080/test-webprofile-flow-basic_switch/</integration.url>
+        </properties>
+    </action>
+    <action>
+        <actionName>test.single</actionName>
+        <goals>
+            <goal>test-compile</goal>
+            <goal>surefire:test</goal>
+        </goals>
+        <properties>
+            <integration.url>http://localhost:8080/test-webprofile-flow-basic_switch/</integration.url>
+            <test>${packageClassName}</test>
+        </properties>
+    </action>
+</actions>
diff --git a/test/web-profile/flow/basic_switch/pom.xml b/test/web-profile/flow/basic_switch/pom.xml
new file mode 100644
index 0000000..7ac9661
--- /dev/null
+++ b/test/web-profile/flow/basic_switch/pom.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.webprofile.flow</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.webprofile.flow</groupId>
+    <artifactId>basic_switch</artifactId>
+    <packaging>war</packaging>
+    <name>Mojarra ${project.version} - Test - Web-Profile - Flow - basic_switch Test </name>
+    <build>
+        <finalName>test-webprofile-flow-basic_switch</finalName>
+    </build>
+    <properties>
+        <netbeans.hint.deploy.server>gfv3ee6</netbeans.hint.deploy.server>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/test/web-profile/flow/basic_switch/src/main/java/com/sun/faces/test/webprofile/flow/basic_switch/FlowA.java b/test/web-profile/flow/basic_switch/src/main/java/com/sun/faces/test/webprofile/flow/basic_switch/FlowA.java
new file mode 100644
index 0000000..f2aa5b1
--- /dev/null
+++ b/test/web-profile/flow/basic_switch/src/main/java/com/sun/faces/test/webprofile/flow/basic_switch/FlowA.java
@@ -0,0 +1,80 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.test.webprofile.flow.basic_switch;
+
+import java.io.Serializable;
+import javax.enterprise.inject.Produces;
+import javax.faces.flow.Flow;
+import javax.faces.flow.builder.FlowBuilder;
+import javax.faces.flow.builder.FlowDefinition;
+import javax.faces.flow.builder.FlowBuilderParameter;
+
+
+public class FlowA implements Serializable {
+    
+    private static final long serialVersionUID = -7623501087369765218L;
+
+    public FlowA() {
+    }
+    
+    @Produces @FlowDefinition
+    public Flow defineFlow(@FlowBuilderParameter FlowBuilder flowBuilder) {
+        String flowId = "flow-a";
+        flowBuilder.id("", flowId);
+        flowBuilder.returnNode("taskFlowReturn1").
+                fromOutcome("#{flow_a_Bean.returnValue}");
+        flowBuilder.switchNode("switchA").defaultOutcome("defaultPage").
+                switchCase().condition("#{flow_a_Bean.switchA_Case01}").fromOutcome("page01").
+                switchCase().condition("#{flow_a_Bean.switchA_Case02}").fromOutcome("page02").
+                switchCase().condition("#{flow_a_Bean.switchA_Case03}").fromOutcome("switchA_result");
+        flowBuilder.switchNode("switchB").defaultOutcome("defaultPage").
+                switchCase().condition("#{flow_a_Bean.switchB_Case01}").fromOutcome("page01").
+                switchCase().condition("#{flow_a_Bean.switchB_Case02}").fromOutcome("switchB_result").
+                switchCase().condition("#{flow_a_Bean.switchB_Case03}").fromOutcome("page03");
+        flowBuilder.switchNode("switchC").defaultOutcome("#{flow_a_Bean.defaultOutcome}").
+                switchCase().condition("#{flow_a_Bean.switchB_Case01}").fromOutcome("page01").
+                switchCase().condition("#{flow_a_Bean.switchB_Case02}").fromOutcome("page02").
+                switchCase().condition("#{flow_a_Bean.switchB_Case03}").fromOutcome("page03");
+        
+        return flowBuilder.getFlow();
+    }
+    
+}
diff --git a/test/web-profile/flow/basic_switch/src/main/java/com/sun/faces/test/webprofile/flow/basic_switch/Flow_a_Bean.java b/test/web-profile/flow/basic_switch/src/main/java/com/sun/faces/test/webprofile/flow/basic_switch/Flow_a_Bean.java
new file mode 100644
index 0000000..fc07b80
--- /dev/null
+++ b/test/web-profile/flow/basic_switch/src/main/java/com/sun/faces/test/webprofile/flow/basic_switch/Flow_a_Bean.java
@@ -0,0 +1,99 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.webprofile.flow.basic_switch;
+
+import javax.faces.flow.FlowScoped;
+import java.io.Serializable;
+
+import javax.inject.Named;
+
+ at Named
+ at FlowScoped("flow-a")
+public class Flow_a_Bean implements Serializable {
+
+   public String getName() {
+       return "Flow_a_Bean";
+   }
+   
+   public String getReturnValue() {
+       return "/return1";
+   }
+   
+   public boolean isSwitchA_Case01() {
+       return false;
+   }
+   
+   public boolean isSwitchA_Case02() {
+       return false;
+   }
+   
+   public boolean isSwitchA_Case03() {
+       return true;
+   }
+
+   public boolean isSwitchB_Case01() {
+       return false;
+   }
+   
+   public boolean isSwitchB_Case02() {
+       return true;
+   }
+   
+   public boolean isSwitchB_Case03() {
+       return false;
+   }
+
+   public boolean isSwitchC_Case01() {
+       return false;
+   }
+   
+   public boolean isSwitchC_Case02() {
+       return false;
+   }
+   
+   public boolean isSwitchC_Case03() {
+       return false;
+   }
+   
+   public String getDefaultOutcome() {
+       return "switchC_result";
+   }
+   
+}
diff --git a/test/web-profile/flow/basic_switch/src/main/java/com/sun/faces/test/webprofile/flow/basic_switch/Flow_b_Bean.java b/test/web-profile/flow/basic_switch/src/main/java/com/sun/faces/test/webprofile/flow/basic_switch/Flow_b_Bean.java
new file mode 100644
index 0000000..c07ba81
--- /dev/null
+++ b/test/web-profile/flow/basic_switch/src/main/java/com/sun/faces/test/webprofile/flow/basic_switch/Flow_b_Bean.java
@@ -0,0 +1,99 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.webprofile.flow.basic_switch;
+
+import javax.faces.flow.FlowScoped;
+import java.io.Serializable;
+
+import javax.inject.Named;
+
+ at Named
+ at FlowScoped("flow-b")
+public class Flow_b_Bean implements Serializable {
+
+   public String getName() {
+       return "Flow_B_Bean";
+   }
+   
+   public String getReturnValue() {
+       return "/return1";
+   }
+   
+   public boolean isSwitchA_Case01() {
+       return false;
+   }
+   
+   public boolean isSwitchA_Case02() {
+       return false;
+   }
+   
+   public boolean isSwitchA_Case03() {
+       return true;
+   }
+
+   public boolean isSwitchB_Case01() {
+       return false;
+   }
+   
+   public boolean isSwitchB_Case02() {
+       return true;
+   }
+   
+   public boolean isSwitchB_Case03() {
+       return false;
+   }
+
+   public boolean isSwitchC_Case01() {
+       return false;
+   }
+   
+   public boolean isSwitchC_Case02() {
+       return false;
+   }
+   
+   public boolean isSwitchC_Case03() {
+       return false;
+   }
+   
+   public String getDefaultOutcome() {
+       return "switchC_result";
+   }
+   
+}
diff --git a/test/web-profile/flow/basic_switch/src/main/webapp/WEB-INF/beans.xml b/test/web-profile/flow/basic_switch/src/main/webapp/WEB-INF/beans.xml
new file mode 100644
index 0000000..c782f57
--- /dev/null
+++ b/test/web-profile/flow/basic_switch/src/main/webapp/WEB-INF/beans.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- This file can be an empty text file (0 bytes) -->
+<!-- We're declaring the schema to save you time if you do have to configure 
+   this in the future -->
+<beans xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+   xsi:schemaLocation="
+        http://java.sun.com/xml/ns/javaee 
+        http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
+</beans>
diff --git a/test/web-profile/flow/basic_switch/src/main/webapp/WEB-INF/glassfish-web.xml b/test/web-profile/flow/basic_switch/src/main/webapp/WEB-INF/glassfish-web.xml
new file mode 100644
index 0000000..aa5a250
--- /dev/null
+++ b/test/web-profile/flow/basic_switch/src/main/webapp/WEB-INF/glassfish-web.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
+<glassfish-web-app error-url="">
+  <context-root>/test-webprofile-flow-basic_switch</context-root>
+  <class-loader delegate="true"/>
+  <jsp-config>
+    <property name="keepgenerated" value="true">
+      <description>Keep a copy of the generated servlet class' java code.</description>
+    </property>
+  </jsp-config>
+</glassfish-web-app>
diff --git a/test/web-profile/flow/basic_switch/src/main/webapp/WEB-INF/web.xml b/test/web-profile/flow/basic_switch/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..74e3339
--- /dev/null
+++ b/test/web-profile/flow/basic_switch/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>${webapp.projectStage}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
+        <param-value>${webapp.partialStateSaving}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>${webapp.stateSavingMethod}</param-value>
+    </context-param>
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <welcome-file-list>
+        <welcome-file>faces/index.xhtml</welcome-file>
+    </welcome-file-list>
+</web-app>
diff --git a/test/web-profile/flow/basic_switch/src/main/webapp/flow-a/flow-a.xhtml b/test/web-profile/flow/basic_switch/src/main/webapp/flow-a/flow-a.xhtml
new file mode 100644
index 0000000..14d61f8
--- /dev/null
+++ b/test/web-profile/flow/basic_switch/src/main/webapp/flow-a/flow-a.xhtml
@@ -0,0 +1,61 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    
+    <head>
+        <title>First page in the flow</title>
+    </head>
+    <body bgcolor="red">
+    <h:form prependId="false">
+        <p>First page in the flow</p>
+        <p><h:commandButton id="switchA" action="switchA" value="switchA" /></p>
+        <p><h:commandButton id="switchB" action="switchB" value="switchB" /></p>
+        <p><h:commandButton id="switchC" action="switchC" value="switchC" /></p>
+    </h:form>
+    </body>
+</html>
diff --git a/test/web-profile/flow/basic_switch/src/main/webapp/flow-a/switchA_result.xhtml b/test/web-profile/flow/basic_switch/src/main/webapp/flow-a/switchA_result.xhtml
new file mode 100644
index 0000000..bd06054
--- /dev/null
+++ b/test/web-profile/flow/basic_switch/src/main/webapp/flow-a/switchA_result.xhtml
@@ -0,0 +1,57 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    
+    <head>
+        <title>switchA_result</title>
+    </head>
+    <body bgcolor="red">
+        
+        <p>switchA_result</p>
+    </body>
+</html>
diff --git a/test/web-profile/flow/basic_switch/src/main/webapp/flow-a/switchB_result.xhtml b/test/web-profile/flow/basic_switch/src/main/webapp/flow-a/switchB_result.xhtml
new file mode 100644
index 0000000..a39a7d2
--- /dev/null
+++ b/test/web-profile/flow/basic_switch/src/main/webapp/flow-a/switchB_result.xhtml
@@ -0,0 +1,57 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    
+    <head>
+        <title>switchB_result</title>
+    </head>
+    <body bgcolor="red">
+        
+        <p>switchB_result</p>
+    </body>
+</html>
diff --git a/test/web-profile/flow/basic_switch/src/main/webapp/flow-a/switchC_result.xhtml b/test/web-profile/flow/basic_switch/src/main/webapp/flow-a/switchC_result.xhtml
new file mode 100644
index 0000000..ee2c917
--- /dev/null
+++ b/test/web-profile/flow/basic_switch/src/main/webapp/flow-a/switchC_result.xhtml
@@ -0,0 +1,57 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    
+    <head>
+        <title>switchC_result</title>
+    </head>
+    <body bgcolor="red">
+        
+        <p>switchC_result</p>
+    </body>
+</html>
diff --git a/test/web-profile/flow/basic_switch/src/main/webapp/flow-b/flow-b-flow.xml b/test/web-profile/flow/basic_switch/src/main/webapp/flow-b/flow-b-flow.xml
new file mode 100644
index 0000000..d634b8b
--- /dev/null
+++ b/test/web-profile/flow/basic_switch/src/main/webapp/flow-b/flow-b-flow.xml
@@ -0,0 +1,104 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<faces-config version="2.2" xmlns="http://xmlns.jcp.org/xml/ns/javaee"
+   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+   xsi:schemaLocation="
+        http://xmlns.jcp.org/xml/ns/javaee
+        http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd">
+
+  <flow-definition id="flow-b">
+    <flow-return id="taskFlowReturn1">
+      <from-outcome>#{flow_b_Bean.returnValue}</from-outcome>
+    </flow-return>            
+    
+    <switch id="switchA">
+      <case>
+        <if>#{flow_b_Bean.switchA_Case01}</if>
+        <from-outcome>page01</from-outcome>
+      </case>
+      <case>
+        <if>#{flow_b_Bean.switchA_Case02}</if>
+        <from-outcome>page02</from-outcome>
+      </case>
+      <case>
+        <if>#{flow_b_Bean.switchA_Case03}</if>
+        <from-outcome>switchA_result</from-outcome>
+      </case>
+      <default-outcome>defaultPage</default-outcome>
+    </switch>
+    
+    <switch id="switchB">
+      <case>
+        <if>#{flow_b_Bean.switchB_Case01}</if>
+        <from-outcome>page01</from-outcome>
+      </case>
+      <case>
+        <if>#{flow_b_Bean.switchB_Case02}</if>
+        <from-outcome>switchB_result</from-outcome>
+      </case>
+      <case>
+        <if>#{flow_b_Bean.switchB_Case03}</if>
+        <from-outcome>page03</from-outcome>
+      </case>
+      <default-outcome>defaultPage</default-outcome>
+    </switch>
+    
+    <switch id="switchC">
+      <case>
+        <if>#{flow_b_Bean.switchC_Case01}</if>
+        <from-outcome>page01</from-outcome>
+      </case>
+      <case>
+        <if>#{flow_b_Bean.switchC_Case02}</if>
+        <from-outcome>page02</from-outcome>
+      </case>
+      <case>
+        <if>#{flow_b_Bean.switchC_Case03}</if>
+        <from-outcome>page03</from-outcome>
+      </case>
+      <default-outcome>#{flow_b_Bean.defaultOutcome}</default-outcome>
+    </switch>
+  </flow-definition>
+  
+</faces-config>
diff --git a/test/web-profile/flow/basic_switch/src/main/webapp/flow-b/flow-b.xhtml b/test/web-profile/flow/basic_switch/src/main/webapp/flow-b/flow-b.xhtml
new file mode 100644
index 0000000..08b2973
--- /dev/null
+++ b/test/web-profile/flow/basic_switch/src/main/webapp/flow-b/flow-b.xhtml
@@ -0,0 +1,62 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    
+    <head>
+        <title>First page in the flow</title>
+    </head>
+    <body bgcolor="blue">
+    <h:form prependId="false">
+        <p>First page in the flow</p>
+        <p><h:commandButton id="switchA" action="switchA" value="switchA" /></p>
+        <p><h:commandButton id="switchB" action="switchB" value="switchB" /></p>
+        <p><h:commandButton id="switchC" action="switchC" value="switchC" /></p>
+        
+    </h:form>
+    </body>
+</html>
diff --git a/test/web-profile/flow/basic_switch/src/main/webapp/flow-b/switchA_result.xhtml b/test/web-profile/flow/basic_switch/src/main/webapp/flow-b/switchA_result.xhtml
new file mode 100644
index 0000000..e0b8f97
--- /dev/null
+++ b/test/web-profile/flow/basic_switch/src/main/webapp/flow-b/switchA_result.xhtml
@@ -0,0 +1,57 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    
+    <head>
+        <title>switchA_result</title>
+    </head>
+    <body bgcolor="blue">
+        
+        <p>switchA_result</p>
+    </body>
+</html>
diff --git a/test/web-profile/flow/basic_switch/src/main/webapp/flow-b/switchB_result.xhtml b/test/web-profile/flow/basic_switch/src/main/webapp/flow-b/switchB_result.xhtml
new file mode 100644
index 0000000..c75cd8b
--- /dev/null
+++ b/test/web-profile/flow/basic_switch/src/main/webapp/flow-b/switchB_result.xhtml
@@ -0,0 +1,57 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    
+    <head>
+        <title>switchB_result</title>
+    </head>
+    <body bgcolor="blue">
+        
+        <p>switchB_result</p>
+    </body>
+</html>
diff --git a/test/web-profile/flow/basic_switch/src/main/webapp/flow-b/switchC_result.xhtml b/test/web-profile/flow/basic_switch/src/main/webapp/flow-b/switchC_result.xhtml
new file mode 100644
index 0000000..d7c1326
--- /dev/null
+++ b/test/web-profile/flow/basic_switch/src/main/webapp/flow-b/switchC_result.xhtml
@@ -0,0 +1,57 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    
+    <head>
+        <title>switchC_result</title>
+    </head>
+    <body bgcolor="blue">
+        
+        <p>switchC_result</p>
+    </body>
+</html>
diff --git a/test/web-profile/flow/basic_switch/src/main/webapp/index.xhtml b/test/web-profile/flow/basic_switch/src/main/webapp/index.xhtml
new file mode 100644
index 0000000..60cfb27
--- /dev/null
+++ b/test/web-profile/flow/basic_switch/src/main/webapp/index.xhtml
@@ -0,0 +1,62 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <head>
+        <title>Outside of flow</title>
+    </head>
+    <body>
+        <h1>Outside of flow</h1>
+        
+    <h:form prependId="false">
+        <p><h:commandButton id="start_a" value="enter flow-a" 
+                            action="flow-a" /></p>
+        <p><h:commandButton id="start_b" value="enter flow-b" 
+                            action="flow-b" /></p>
+        <p><h:commandButton id="stay" value="stay" /></p>
+    </h:form>
+</body>
+</html>
diff --git a/test/web-profile/flow/basic_switch/src/main/webapp/return1.xhtml b/test/web-profile/flow/basic_switch/src/main/webapp/return1.xhtml
new file mode 100644
index 0000000..acfe962
--- /dev/null
+++ b/test/web-profile/flow/basic_switch/src/main/webapp/return1.xhtml
@@ -0,0 +1,65 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <head>
+        <title>Page navigated to upon return from any flow</title>
+    </head>
+    <body>
+        <h1>Page navigated to upon return from any flow</h1>
+        
+        <p><span id="message">#{message}</span></p>
+        
+    <h:form prependId="false">
+        <p>return page</p>
+        
+        <p>Has a flow: #{null != facesContext.application.flowHandler.currentFlow}.</p>
+        
+        <p>flowScope value, should be empty: #{flowScope.value}.</p>
+                
+    </h:form>
+</body>
+</html>
diff --git a/test/web-profile/flow/basic_switch/src/test/java/com/sun/faces/test/webprofile/flow/basic_switch/SwitchCallIT.java b/test/web-profile/flow/basic_switch/src/test/java/com/sun/faces/test/webprofile/flow/basic_switch/SwitchCallIT.java
new file mode 100644
index 0000000..17a9aa9
--- /dev/null
+++ b/test/web-profile/flow/basic_switch/src/test/java/com/sun/faces/test/webprofile/flow/basic_switch/SwitchCallIT.java
@@ -0,0 +1,149 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.webprofile.flow.basic_switch;
+
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.assertEquals;
+
+public class SwitchCallIT {
+    /**
+     * Stores the web URL.
+     */
+    private String webUrl;
+    /**
+     * Stores the web client.
+     */
+    private WebClient webClient;
+
+    /**
+     * Setup before testing.
+     * 
+     * @throws Exception when a serious error occurs.
+     */
+    @BeforeClass
+    public static void setUpClass() throws Exception {
+    }
+
+    /**
+     * Cleanup after testing.
+     * 
+     * @throws Exception when a serious error occurs.
+     */
+    @AfterClass
+    public static void tearDownClass() throws Exception {
+    }
+
+    /**
+     * Setup before testing.
+     */
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    /**
+     * Tear down after testing.
+     */
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testBuilderDefinedFlowWithMethodCall() throws Exception {
+        doTest("start_a");
+    }
+
+    @Test
+    public void testXmlDefinedFlowWithMethodCall() throws Exception {
+        doTest("start_b");
+    }
+
+    public void doTest(String startId) throws Exception {
+        HtmlPage page = webClient.getPage(webUrl);
+
+        assertTrue(page.getBody().asText().indexOf("Outside of flow") != -1);
+        
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById(startId);
+        page = button.click();
+        
+        button = (HtmlSubmitInput) page.getElementById("switchA");
+        page = button.click();
+        
+        String pageText = page.asText();
+        assertTrue(pageText.contains("switchA_result"));
+
+        page = webClient.getPage(webUrl);
+
+        assertTrue(page.getBody().asText().indexOf("Outside of flow") != -1);
+        
+        button = (HtmlSubmitInput) page.getElementById(startId);
+        page = button.click();
+        
+        button = (HtmlSubmitInput) page.getElementById("switchB");
+        page = button.click();
+        
+        pageText = page.asText();
+        assertTrue(pageText.contains("switchB_result"));
+
+        page = webClient.getPage(webUrl);
+
+        assertTrue(page.getBody().asText().indexOf("Outside of flow") != -1);
+        
+        button = (HtmlSubmitInput) page.getElementById(startId);
+        page = button.click();
+        
+        button = (HtmlSubmitInput) page.getElementById("switchC");
+        page = button.click();
+        
+        pageText = page.asText();
+        assertTrue(pageText.contains("switchC_result"));
+    }
+}
diff --git a/test/web-profile/flow/defining_document_id/app/nbactions.xml b/test/web-profile/flow/defining_document_id/app/nbactions.xml
new file mode 100644
index 0000000..ea383eb
--- /dev/null
+++ b/test/web-profile/flow/defining_document_id/app/nbactions.xml
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<actions>
+    <action>
+        <actionName>debug.test.single</actionName>
+        <goals>
+            <goal>test-compile</goal>
+            <goal>surefire:test</goal>
+        </goals>
+        <properties>
+            <test>${packageClassName}</test>
+            <forkMode>once</forkMode>
+            <maven.surefire.debug>-Xdebug -Xrunjdwp:transport=dt_socket,server=n,address=${jpda.address}</maven.surefire.debug>
+            <jpda.listen>true</jpda.listen>
+            <integration.url>http://localhost:8080/test-webprofile-flow-defining_document_id/</integration.url>
+        </properties>
+    </action>
+    <action>
+        <actionName>test.single</actionName>
+        <goals>
+            <goal>test-compile</goal>
+            <goal>surefire:test</goal>
+        </goals>
+        <properties>
+            <integration.url>http://localhost:8080/test-webprofile-flow-defining_document_id/</integration.url>
+            <test>${packageClassName}</test>
+        </properties>
+    </action>
+</actions>
diff --git a/test/web-profile/flow/defining_document_id/app/pom.xml b/test/web-profile/flow/defining_document_id/app/pom.xml
new file mode 100644
index 0000000..32b3bb9
--- /dev/null
+++ b/test/web-profile/flow/defining_document_id/app/pom.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.webprofile.flow.defining_document_id_parent</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.webprofile.flow.defining_document_id_parent</groupId>
+    <artifactId>test-webprofile-flow-defining_document_id</artifactId>
+    <packaging>war</packaging>
+    <name>Mojarra ${project.version} - Test - Web-Profile - Flow - defining_document_id - App</name>
+    <build>
+        <finalName>test-webprofile-flow-defining_document_id</finalName>
+    </build>
+    <dependencies>
+        <dependency>
+            <groupId>com.sun.faces.test.webprofile.flow.defining_document_id_parent</groupId>
+            <artifactId>flow01</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>com.sun.faces.test.webprofile.flow.defining_document_id_parent</groupId>
+            <artifactId>flow02</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+    </dependencies>
+    <properties>
+        <netbeans.hint.deploy.server>gfv3ee6</netbeans.hint.deploy.server>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/test/web-profile/flow/defining_document_id/app/src/main/java/com/sun/faces/test/webprofile/flow/defining_document_id/SessionScopedBean.java b/test/web-profile/flow/defining_document_id/app/src/main/java/com/sun/faces/test/webprofile/flow/defining_document_id/SessionScopedBean.java
new file mode 100644
index 0000000..6cd003b
--- /dev/null
+++ b/test/web-profile/flow/defining_document_id/app/src/main/java/com/sun/faces/test/webprofile/flow/defining_document_id/SessionScopedBean.java
@@ -0,0 +1,58 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.test.webprofile.flow.defining_document_id;
+
+import java.io.Serializable;
+import javax.enterprise.context.SessionScoped;
+import javax.inject.Named;
+
+ at Named
+ at SessionScoped
+public class SessionScopedBean implements Serializable {
+    
+    public Object flow01() {
+        return "bounded-task-flow";
+    }
+    
+    public Object flow02() {
+        return "bounded-task-flow";
+    }
+}
diff --git a/test/web-profile/flow/defining_document_id/app/src/main/resources/META-INF/persistence.xml b/test/web-profile/flow/defining_document_id/app/src/main/resources/META-INF/persistence.xml
new file mode 100644
index 0000000..6377368
--- /dev/null
+++ b/test/web-profile/flow/defining_document_id/app/src/main/resources/META-INF/persistence.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<persistence version="2.0"
+   xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+   xsi:schemaLocation="
+        http://java.sun.com/xml/ns/persistence
+        http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
+   <persistence-unit name="primary">
+      <!-- If you are running in a production environment, add a managed 
+         data source, the example data source is just for development and testing! -->
+      <jta-data-source>java:jboss/datasources/acmeDS</jta-data-source>
+      <properties>
+         <!-- Properties for Hibernate -->
+         <property name="hibernate.hbm2ddl.auto" value="create-drop" />
+         <property name="hibernate.show_sql" value="false" />
+      </properties>
+   </persistence-unit>
+</persistence>
\ No newline at end of file
diff --git a/test/web-profile/flow/defining_document_id/app/src/main/webapp/WEB-INF/beans.xml b/test/web-profile/flow/defining_document_id/app/src/main/webapp/WEB-INF/beans.xml
new file mode 100644
index 0000000..c782f57
--- /dev/null
+++ b/test/web-profile/flow/defining_document_id/app/src/main/webapp/WEB-INF/beans.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- This file can be an empty text file (0 bytes) -->
+<!-- We're declaring the schema to save you time if you do have to configure 
+   this in the future -->
+<beans xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+   xsi:schemaLocation="
+        http://java.sun.com/xml/ns/javaee 
+        http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
+</beans>
diff --git a/test/web-profile/flow/defining_document_id/app/src/main/webapp/WEB-INF/faces-config.xml b/test/web-profile/flow/defining_document_id/app/src/main/webapp/WEB-INF/faces-config.xml
new file mode 100644
index 0000000..4200d70
--- /dev/null
+++ b/test/web-profile/flow/defining_document_id/app/src/main/webapp/WEB-INF/faces-config.xml
@@ -0,0 +1,27 @@
+<?xml version='1.0' encoding='UTF-8'?>
+
+<!-- =========== FULL CONFIGURATION FILE ================================== -->
+
+<faces-config version="2.2"
+    xmlns="http://xmlns.jcp.org/xml/ns/javaee" 
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd">
+        
+   <navigation-rule>
+       <from-view-id>/index.xhtml</from-view-id>
+       <navigation-case>
+           <from-action>#{sessionScopedBean.flow01}</from-action>
+           <from-outcome>bounded-task-flow</from-outcome>
+           <to-view-id>bounded-task-flow</to-view-id>
+           <to-flow-document-id>flow01</to-flow-document-id>
+       </navigation-case>
+       <navigation-case>
+           <from-action>#{sessionScopedBean.flow02}</from-action>
+           <from-outcome>bounded-task-flow</from-outcome>
+           <to-view-id>bounded-task-flow</to-view-id>
+           <to-flow-document-id>flow02</to-flow-document-id>
+       </navigation-case>
+   </navigation-rule>
+
+
+</faces-config>
diff --git a/test/web-profile/flow/defining_document_id/app/src/main/webapp/WEB-INF/glassfish-web.xml b/test/web-profile/flow/defining_document_id/app/src/main/webapp/WEB-INF/glassfish-web.xml
new file mode 100644
index 0000000..6d0a732
--- /dev/null
+++ b/test/web-profile/flow/defining_document_id/app/src/main/webapp/WEB-INF/glassfish-web.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
+<glassfish-web-app error-url="">
+  <context-root>/test-webprofile-flow-defining_document_id</context-root>
+  <class-loader delegate="true"/>
+  <jsp-config>
+    <property name="keepgenerated" value="true">
+      <description>Keep a copy of the generated servlet class' java code.</description>
+    </property>
+  </jsp-config>
+</glassfish-web-app>
diff --git a/test/web-profile/flow/defining_document_id/app/src/main/webapp/WEB-INF/web.xml b/test/web-profile/flow/defining_document_id/app/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..74e3339
--- /dev/null
+++ b/test/web-profile/flow/defining_document_id/app/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>${webapp.projectStage}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
+        <param-value>${webapp.partialStateSaving}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>${webapp.stateSavingMethod}</param-value>
+    </context-param>
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <welcome-file-list>
+        <welcome-file>faces/index.xhtml</welcome-file>
+    </welcome-file-list>
+</web-app>
diff --git a/test/web-profile/flow/defining_document_id/app/src/main/webapp/index.xhtml b/test/web-profile/flow/defining_document_id/app/src/main/webapp/index.xhtml
new file mode 100644
index 0000000..880fd9b
--- /dev/null
+++ b/test/web-profile/flow/defining_document_id/app/src/main/webapp/index.xhtml
@@ -0,0 +1,64 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core">
+    <head>
+        <title>Page with link to flow entry</title>
+    </head>
+    <body>
+        <h1>Page with link to flow entry</h1>
+
+    <h:form prependId="false">
+        <p><h:commandButton id="flow01" value="bounded-task-flow from flow01" action="#{sessionScopedBean.flow01}">
+           </h:commandButton>
+        </p>
+        <p><h:commandButton id="flow02" value="bounded-task-flow from flow02" action="#{sessionScopedBean.flow02}">
+           </h:commandButton>
+        </p>
+        <p><h:commandButton id="stay" value="stay" /></p>
+    </h:form>
+</body>
+</html>
diff --git a/test/web-profile/flow/defining_document_id/app/src/main/webapp/nonFlow.xhtml b/test/web-profile/flow/defining_document_id/app/src/main/webapp/nonFlow.xhtml
new file mode 100644
index 0000000..b5d740b
--- /dev/null
+++ b/test/web-profile/flow/defining_document_id/app/src/main/webapp/nonFlow.xhtml
@@ -0,0 +1,61 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <head>
+        <title>Try to access a flow bean from outside of a flow</title>
+    </head>
+    <body>
+    <h:form prependId="false">
+        <p>Try to access a flow bean from outside of a flow</p>
+        <p>Flow bean name: #{flowBean.name}</p>
+        
+        <p><h:commandButton id="index" value="home" action="index" /></p>
+        <p><h:commandButton id="nonFlow" value="nonFlow" action="nonFlow" /></p>
+        
+    </h:form>
+    </body>
+</html>
diff --git a/test/web-profile/flow/defining_document_id/app/src/main/webapp/return1.xhtml b/test/web-profile/flow/defining_document_id/app/src/main/webapp/return1.xhtml
new file mode 100644
index 0000000..3e87108
--- /dev/null
+++ b/test/web-profile/flow/defining_document_id/app/src/main/webapp/return1.xhtml
@@ -0,0 +1,63 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <head>
+        <title>Page navigated to upon return from bounded-task-flow</title>
+    </head>
+    <body>
+        <h1>Page navigated to upon return from bounded-task-flow</h1>
+        
+    <h:form prependId="false">
+        <p>return page</p>
+        
+        <p>flowScope value, should be empty: #{flowScope.value}</p>
+        
+        <p><h:commandButton value="home" action="index" /></p>
+                
+    </h:form>
+</body>
+</html>
diff --git a/test/web-profile/flow/defining_document_id/app/src/test/java/com/sun/faces/test/webprofile/flow/defining_document_id/DefiningDocumentIdIT.java b/test/web-profile/flow/defining_document_id/app/src/test/java/com/sun/faces/test/webprofile/flow/defining_document_id/DefiningDocumentIdIT.java
new file mode 100644
index 0000000..5e0435a
--- /dev/null
+++ b/test/web-profile/flow/defining_document_id/app/src/test/java/com/sun/faces/test/webprofile/flow/defining_document_id/DefiningDocumentIdIT.java
@@ -0,0 +1,133 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.webprofile.flow.defining_document_id;
+
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
+import static org.junit.Assert.assertTrue;
+
+public class DefiningDocumentIdIT {
+    /**
+     * Stores the web URL.
+     */
+    private String webUrl;
+    /**
+     * Stores the web client.
+     */
+    private WebClient webClient;
+
+    /**
+     * Setup before testing.
+     * 
+     * @throws Exception when a serious error occurs.
+     */
+    @BeforeClass
+    public static void setUpClass() throws Exception {
+    }
+
+    /**
+     * Cleanup after testing.
+     * 
+     * @throws Exception when a serious error occurs.
+     */
+    @AfterClass
+    public static void tearDownClass() throws Exception {
+    }
+
+    /**
+     * Setup before testing.
+     */
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    /**
+     * Tear down after testing.
+     */
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testFlow01() throws Exception {
+
+        doTest("flow01");
+        doTest("flow02");
+    }
+    public void doTest(String flowId) throws Exception {
+        HtmlPage page = webClient.getPage(webUrl);
+        String pageText = null;
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById(flowId);
+        HtmlTextInput text = null;
+        
+        page = button.click();
+        pageText = page.asText();
+        assertTrue(pageText.contains(flowId + " name"));
+        
+        button = (HtmlSubmitInput) page.getElementById("next_a");
+        page = button.click();
+        
+        text = (HtmlTextInput) page.getElementById("input");
+        String textValue = "" + System.currentTimeMillis();
+        text.setText(textValue);
+        
+        button = (HtmlSubmitInput) page.getElementById("next");
+        page = button.click();
+        
+        pageText = page.asText();
+        assertTrue(pageText.contains(textValue));
+        
+        button = (HtmlSubmitInput) page.getElementById("return");
+        page = button.click();
+        
+        pageText = page.asText();
+        assertTrue(pageText.contains("return page"));
+    }
+}
diff --git a/test/web-profile/flow/defining_document_id/jar01/pom.xml b/test/web-profile/flow/defining_document_id/jar01/pom.xml
new file mode 100644
index 0000000..c9c804f
--- /dev/null
+++ b/test/web-profile/flow/defining_document_id/jar01/pom.xml
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" 
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.webprofile.flow.defining_document_id_parent</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.webprofile.flow.defining_document_id_parent</groupId>
+    <artifactId>flow01</artifactId>
+    <packaging>jar</packaging>
+    <name>Mojarra ${project.version} - Test - Web-Profile - Flow - defining_document_id - Flow 01</name>
+    <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/test/web-profile/flow/defining_document_id/jar01/src/main/java/com/sun/faces/test/webprofile/flow/basic/FlowBean01.java b/test/web-profile/flow/defining_document_id/jar01/src/main/java/com/sun/faces/test/webprofile/flow/basic/FlowBean01.java
new file mode 100644
index 0000000..c4bdb4e
--- /dev/null
+++ b/test/web-profile/flow/defining_document_id/jar01/src/main/java/com/sun/faces/test/webprofile/flow/basic/FlowBean01.java
@@ -0,0 +1,64 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.webprofile.flow.basic;
+
+import javax.faces.flow.FlowScoped;
+import java.io.Serializable;
+
+import java.util.logging.Logger;
+import javax.inject.Named;
+
+ at Named
+ at FlowScoped(value="bounded-task-flow",
+            definingDocumentId="flow01")
+public class FlowBean01 implements Serializable {
+
+    public FlowBean01() {
+        Logger.getAnonymousLogger().info("FlowBean in jar constructed");
+    }
+
+   public String getName() {
+       return "flow01 name";
+   }
+   
+   public String getReturnValue() {
+       return "/return1";
+   }
+}
diff --git a/test/web-profile/flow/defining_document_id/jar01/src/main/resources/META-INF/beans.xml b/test/web-profile/flow/defining_document_id/jar01/src/main/resources/META-INF/beans.xml
new file mode 100644
index 0000000..c782f57
--- /dev/null
+++ b/test/web-profile/flow/defining_document_id/jar01/src/main/resources/META-INF/beans.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- This file can be an empty text file (0 bytes) -->
+<!-- We're declaring the schema to save you time if you do have to configure 
+   this in the future -->
+<beans xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+   xsi:schemaLocation="
+        http://java.sun.com/xml/ns/javaee 
+        http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
+</beans>
diff --git a/test/web-profile/flow/defining_document_id/jar01/src/main/resources/META-INF/faces-config.xml b/test/web-profile/flow/defining_document_id/jar01/src/main/resources/META-INF/faces-config.xml
new file mode 100644
index 0000000..59de939
--- /dev/null
+++ b/test/web-profile/flow/defining_document_id/jar01/src/main/resources/META-INF/faces-config.xml
@@ -0,0 +1,62 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<faces-config version="2.2" xmlns="http://xmlns.jcp.org/xml/ns/javaee"
+   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+   xsi:schemaLocation="
+        http://xmlns.jcp.org/xml/ns/javaee
+        http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd">
+    <name>flow01</name>
+
+    <flow-definition id="bounded-task-flow">
+        <flow-return id="taskFlowReturn1">
+            <from-outcome>#{flowBean01.returnValue}</from-outcome>
+        </flow-return>
+        <flow-call id="call-flow-02">
+            <flow-reference>
+                <flow-document-id>flow02</flow-document-id>
+                <flow-id>bounded-task-flow</flow-id>
+            </flow-reference>
+        </flow-call>
+        
+    </flow-definition>
+</faces-config>
diff --git a/test/web-profile/flow/defining_document_id/jar01/src/main/resources/META-INF/flows/bounded-task-flow/bounded-task-flow.xhtml b/test/web-profile/flow/defining_document_id/jar01/src/main/resources/META-INF/flows/bounded-task-flow/bounded-task-flow.xhtml
new file mode 100644
index 0000000..e39232d
--- /dev/null
+++ b/test/web-profile/flow/defining_document_id/jar01/src/main/resources/META-INF/flows/bounded-task-flow/bounded-task-flow.xhtml
@@ -0,0 +1,64 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    
+    <head>
+        <title>First page in the flow</title>
+    </head>
+    <body bgcolor="red">
+    <h:form prependId="false">
+        <p>First page in the flow</p>
+        <p>Flow bean name: #{flowBean01.name}</p>
+        
+        <p><h:commandButton id="index" value="home" action="/index" /></p>
+        <p><h:commandButton id="next_a" value="next" action="next_a" /></p>
+        <p><h:commandButton id="nonFlow" value="nonFlow" action="/nonFlow" /></p>
+        
+    </h:form>
+    </body>
+</html>
diff --git a/test/web-profile/flow/defining_document_id/jar01/src/main/resources/META-INF/flows/bounded-task-flow/next_a.xhtml b/test/web-profile/flow/defining_document_id/jar01/src/main/resources/META-INF/flows/bounded-task-flow/next_a.xhtml
new file mode 100644
index 0000000..e13b89d
--- /dev/null
+++ b/test/web-profile/flow/defining_document_id/jar01/src/main/resources/META-INF/flows/bounded-task-flow/next_a.xhtml
@@ -0,0 +1,65 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    
+    <head>
+        <title>Second page in the flow</title>
+    </head>
+    <body bgcolor="red">
+    <h:form prependId="false">
+        <p>Second page in the flow</p>
+        <p>Flow bean name: #{flowBean01.name}</p>
+        
+        <p>value: <h:inputText id="input" value="#{flowScope.value}" /></p>
+        
+        <p><h:commandButton id="start" value="back" action="bounded-task-flow" /></p>
+        <p><h:commandButton id="next" value="next" action="next_b" /></p>
+        
+    </h:form>
+    </body>
+</html>
diff --git a/test/web-profile/flow/defining_document_id/jar01/src/main/resources/META-INF/flows/bounded-task-flow/next_b.xhtml b/test/web-profile/flow/defining_document_id/jar01/src/main/resources/META-INF/flows/bounded-task-flow/next_b.xhtml
new file mode 100644
index 0000000..e5e52d3
--- /dev/null
+++ b/test/web-profile/flow/defining_document_id/jar01/src/main/resources/META-INF/flows/bounded-task-flow/next_b.xhtml
@@ -0,0 +1,66 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    
+    <head>
+        <title>Last page in the flow</title>
+    </head>
+    <body bgcolor="red">
+        
+        <p>Last page in the flow</p>
+        <p>Flow bean name: #{flowBean01.name}</p>
+        
+        <p>value: #{flowScope.value}</p>
+        
+    <h:form prependId="false">
+        <p><h:commandButton id="back" value="back" action="next_a" /></p>
+        <p><h:commandButton id="return" value="return" action="taskFlowReturn1" /></p>
+        
+    </h:form>
+    </body>
+</html>
diff --git a/test/web-profile/flow/defining_document_id/jar02/pom.xml b/test/web-profile/flow/defining_document_id/jar02/pom.xml
new file mode 100644
index 0000000..421adf7
--- /dev/null
+++ b/test/web-profile/flow/defining_document_id/jar02/pom.xml
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" 
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.webprofile.flow.defining_document_id_parent</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.webprofile.flow.defining_document_id_parent</groupId>
+    <artifactId>flow02</artifactId>
+    <packaging>jar</packaging>
+    <name>Mojarra ${project.version} - Test - Web-Profile - Flow - defining_document_id - Flow 02</name>
+    <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/test/web-profile/flow/defining_document_id/jar02/src/main/java/com/sun/faces/test/webprofile/flow/basic/FlowBean02.java b/test/web-profile/flow/defining_document_id/jar02/src/main/java/com/sun/faces/test/webprofile/flow/basic/FlowBean02.java
new file mode 100644
index 0000000..2ae7884
--- /dev/null
+++ b/test/web-profile/flow/defining_document_id/jar02/src/main/java/com/sun/faces/test/webprofile/flow/basic/FlowBean02.java
@@ -0,0 +1,64 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.webprofile.flow.basic;
+
+import javax.faces.flow.FlowScoped;
+import java.io.Serializable;
+
+import java.util.logging.Logger;
+import javax.inject.Named;
+
+ at Named
+ at FlowScoped(value="bounded-task-flow",
+            definingDocumentId="flow02")
+public class FlowBean02 implements Serializable {
+
+    public FlowBean02() {
+        Logger.getAnonymousLogger().info("FlowBean in jar constructed");
+    }
+
+   public String getName() {
+       return "flow02 name";
+   }
+   
+   public String getReturnValue() {
+       return "/return1";
+   }
+}
diff --git a/test/web-profile/flow/defining_document_id/jar02/src/main/resources/META-INF/beans.xml b/test/web-profile/flow/defining_document_id/jar02/src/main/resources/META-INF/beans.xml
new file mode 100644
index 0000000..c782f57
--- /dev/null
+++ b/test/web-profile/flow/defining_document_id/jar02/src/main/resources/META-INF/beans.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- This file can be an empty text file (0 bytes) -->
+<!-- We're declaring the schema to save you time if you do have to configure 
+   this in the future -->
+<beans xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+   xsi:schemaLocation="
+        http://java.sun.com/xml/ns/javaee 
+        http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
+</beans>
diff --git a/test/web-profile/flow/defining_document_id/jar02/src/main/resources/META-INF/faces-config.xml b/test/web-profile/flow/defining_document_id/jar02/src/main/resources/META-INF/faces-config.xml
new file mode 100644
index 0000000..5c4fe5e
--- /dev/null
+++ b/test/web-profile/flow/defining_document_id/jar02/src/main/resources/META-INF/faces-config.xml
@@ -0,0 +1,62 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<faces-config version="2.2" xmlns="http://xmlns.jcp.org/xml/ns/javaee"
+   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+   xsi:schemaLocation="
+        http://xmlns.jcp.org/xml/ns/javaee
+        http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd">
+    <name>flow02</name>
+
+    <flow-definition id="bounded-task-flow">
+        <flow-return id="taskFlowReturn1">
+            <from-outcome>#{flowBean02.returnValue}</from-outcome>
+        </flow-return>
+        <flow-call id="call-flow-01">
+            <flow-reference>
+                <flow-document-id>flow01</flow-document-id>
+                <flow-id>bounded-task-flow</flow-id>
+            </flow-reference>
+        </flow-call>
+        
+    </flow-definition>
+</faces-config>
diff --git a/test/web-profile/flow/defining_document_id/jar02/src/main/resources/META-INF/flows/bounded-task-flow/bounded-task-flow.xhtml b/test/web-profile/flow/defining_document_id/jar02/src/main/resources/META-INF/flows/bounded-task-flow/bounded-task-flow.xhtml
new file mode 100644
index 0000000..156d733
--- /dev/null
+++ b/test/web-profile/flow/defining_document_id/jar02/src/main/resources/META-INF/flows/bounded-task-flow/bounded-task-flow.xhtml
@@ -0,0 +1,64 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    
+    <head>
+        <title>First page in the flow</title>
+    </head>
+    <body bgcolor="blue">
+    <h:form prependId="false">
+        <p>First page in the flow</p>
+        <p>Flow bean name: #{flowBean02.name}</p>
+        
+        <p><h:commandButton id="index" value="home" action="/index" /></p>
+        <p><h:commandButton id="next_a" value="next" action="next_a" /></p>
+        <p><h:commandButton id="nonFlow" value="nonFlow" action="/nonFlow" /></p>
+        
+    </h:form>
+    </body>
+</html>
diff --git a/test/web-profile/flow/defining_document_id/jar02/src/main/resources/META-INF/flows/bounded-task-flow/next_a.xhtml b/test/web-profile/flow/defining_document_id/jar02/src/main/resources/META-INF/flows/bounded-task-flow/next_a.xhtml
new file mode 100644
index 0000000..9e0ecd7
--- /dev/null
+++ b/test/web-profile/flow/defining_document_id/jar02/src/main/resources/META-INF/flows/bounded-task-flow/next_a.xhtml
@@ -0,0 +1,65 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    
+    <head>
+        <title>Second page in the flow</title>
+    </head>
+    <body bgcolor="blue">
+    <h:form prependId="false">
+        <p>Second page in the flow</p>
+        <p>Flow bean name: #{flowBean02.name}</p>
+        
+        <p>value: <h:inputText id="input" value="#{flowScope.value}" /></p>
+        
+        <p><h:commandButton id="start" value="back" action="bounded-task-flow" /></p>
+        <p><h:commandButton id="next" value="next" action="next_b" /></p>
+        
+    </h:form>
+    </body>
+</html>
diff --git a/test/web-profile/flow/defining_document_id/jar02/src/main/resources/META-INF/flows/bounded-task-flow/next_b.xhtml b/test/web-profile/flow/defining_document_id/jar02/src/main/resources/META-INF/flows/bounded-task-flow/next_b.xhtml
new file mode 100644
index 0000000..719b060
--- /dev/null
+++ b/test/web-profile/flow/defining_document_id/jar02/src/main/resources/META-INF/flows/bounded-task-flow/next_b.xhtml
@@ -0,0 +1,66 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    
+    <head>
+        <title>Last page in the flow</title>
+    </head>
+    <body bgcolor="blue">
+        
+        <p>Last page in the flow</p>
+        <p>Flow bean name: #{flowBean02.name}</p>
+        
+        <p>value: #{flowScope.value}</p>
+        
+    <h:form prependId="false">
+        <p><h:commandButton id="back" value="back" action="next_a" /></p>
+        <p><h:commandButton id="return" value="return" action="taskFlowReturn1" /></p>
+        
+    </h:form>
+    </body>
+</html>
diff --git a/test/web-profile/flow/defining_document_id/pom.xml b/test/web-profile/flow/defining_document_id/pom.xml
new file mode 100644
index 0000000..13d0b1f
--- /dev/null
+++ b/test/web-profile/flow/defining_document_id/pom.xml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.webprofile.flow</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.webprofile.flow.defining_document_id_parent</groupId>
+    <artifactId>pom</artifactId>
+    <packaging>pom</packaging>
+    <name>Mojarra ${project.version} - Test - Web-Profile - Flow - defining_document_id parent</name>
+    <modules>
+        <module>app</module>
+        <module>jar01</module>
+        <module>jar02</module>
+    </modules>
+    <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/test/web-profile/flow/factory/nbactions.xml b/test/web-profile/flow/factory/nbactions.xml
new file mode 100644
index 0000000..9712a64
--- /dev/null
+++ b/test/web-profile/flow/factory/nbactions.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<actions>
+    <action>
+        <actionName>test.single</actionName>
+        <goals>
+            <goal>test-compile</goal>
+            <goal>surefire:test</goal>
+        </goals>
+        <properties>
+            <test>${packageClassName}</test>
+            <integration.url>http://localhost:8080/test-webprofile-flow-factory/</integration.url>
+        </properties>
+    </action>
+    <action>
+        <actionName>debug.test.single</actionName>
+        <goals>
+            <goal>test-compile</goal>
+            <goal>surefire:test</goal>
+        </goals>
+        <properties>
+            <test>${packageClassName}</test>
+            <forkMode>once</forkMode>
+            <maven.surefire.debug>-Xdebug -Xrunjdwp:transport=dt_socket,server=n,address=${jpda.address}</maven.surefire.debug>
+            <jpda.listen>true</jpda.listen>
+            <integration.url>http://localhost:8080/test-webprofile-flow-factory/</integration.url>
+        </properties>
+    </action>
+</actions>
diff --git a/test/web-profile/flow/factory/pom.xml b/test/web-profile/flow/factory/pom.xml
new file mode 100644
index 0000000..34f28b6
--- /dev/null
+++ b/test/web-profile/flow/factory/pom.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.webprofile.flow</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.webprofile.flow</groupId>
+    <artifactId>factory</artifactId>
+    <packaging>war</packaging>
+    <name>Mojarra ${project.version} - Test - Web-Profile - Flow - Factory</name>
+    <build>
+        <finalName>test-webprofile-flow-factory</finalName>
+    </build>
+    <properties>
+        <netbeans.hint.deploy.server>gfv3ee6</netbeans.hint.deploy.server>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/test/web-profile/flow/factory/src/main/java/com/sun/faces/test/webprofile/flow/factory/AppBean.java b/test/web-profile/flow/factory/src/main/java/com/sun/faces/test/webprofile/flow/factory/AppBean.java
new file mode 100644
index 0000000..30e2476
--- /dev/null
+++ b/test/web-profile/flow/factory/src/main/java/com/sun/faces/test/webprofile/flow/factory/AppBean.java
@@ -0,0 +1,59 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.test.webprofile.flow.factory;
+
+import javax.enterprise.context.ApplicationScoped;
+import javax.inject.Named;
+
+ at Named 
+ at ApplicationScoped
+public class AppBean {
+    
+    private String id = "MyAppBean";
+
+    public AppBean() {
+    }
+
+    public String getId() {
+        return id;
+    }
+    
+}
diff --git a/test/web-profile/flow/factory/src/main/java/com/sun/faces/test/webprofile/flow/factory/FlowBean.java b/test/web-profile/flow/factory/src/main/java/com/sun/faces/test/webprofile/flow/factory/FlowBean.java
new file mode 100644
index 0000000..82d392e
--- /dev/null
+++ b/test/web-profile/flow/factory/src/main/java/com/sun/faces/test/webprofile/flow/factory/FlowBean.java
@@ -0,0 +1,54 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.webprofile.flow.factory;
+
+import javax.faces.flow.FlowScoped;
+import java.io.Serializable;
+
+import javax.inject.Named;
+
+ at Named("flowBean")
+ at FlowScoped("flow")
+public class FlowBean implements Serializable {
+
+    public String getName() {
+        return "basicFlow";
+    }
+}
diff --git a/test/web-profile/flow/factory/src/main/java/com/sun/faces/test/webprofile/flow/factory/FlowHandlerFactoryTestImpl.java b/test/web-profile/flow/factory/src/main/java/com/sun/faces/test/webprofile/flow/factory/FlowHandlerFactoryTestImpl.java
new file mode 100644
index 0000000..49087f6
--- /dev/null
+++ b/test/web-profile/flow/factory/src/main/java/com/sun/faces/test/webprofile/flow/factory/FlowHandlerFactoryTestImpl.java
@@ -0,0 +1,95 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.test.webprofile.flow.factory;
+
+import javax.enterprise.context.ApplicationScoped;
+import javax.faces.context.FacesContext;
+import javax.faces.flow.FlowHandler;
+import javax.faces.flow.FlowHandlerFactory;
+import javax.faces.flow.FlowHandlerFactoryWrapper;
+import javax.inject.Inject;
+import javax.inject.Named;
+
+/**
+ * A simple wrapped flow handler factory.
+ */
+ at Named
+ at ApplicationScoped
+public class FlowHandlerFactoryTestImpl extends FlowHandlerFactoryWrapper {
+
+    public FlowHandlerFactoryTestImpl() {
+    }
+    
+    private FlowHandlerFactory wrapped;
+    
+    @Inject
+    private AppBean appBean;
+
+    /**
+     * Constructor.
+     *
+     * @param wrapped the wrapped flow handler factory.
+     */
+    public FlowHandlerFactoryTestImpl(FlowHandlerFactory wrapped) {
+        this.wrapped = wrapped;
+    }
+
+    @Override
+    public FlowHandlerFactory getWrapped() {
+        return this.wrapped;
+    }
+
+    /**
+     * Add a message to the context every time the createFlowHandler method is
+     * called so we can verify later that the factory is actually being used.
+     *
+     * @param context the Faces context.
+     * @return the flow handler.
+     */
+    @Override
+    public FlowHandler createFlowHandler(FacesContext context) {
+        System.out.println("createFlowHandler");
+        FacesContext.getCurrentInstance().getExternalContext().getApplicationMap().put("flowHandlerFactoryWrapped", true);
+        String id = (null != appBean) ? appBean.getId() : "null";
+        FacesContext.getCurrentInstance().getExternalContext().getApplicationMap().put("appBean", id);
+        return getWrapped().createFlowHandler(context);
+    }
+}
diff --git a/test/web-profile/flow/factory/src/main/webapp/WEB-INF/beans.xml b/test/web-profile/flow/factory/src/main/webapp/WEB-INF/beans.xml
new file mode 100644
index 0000000..58bf3b1
--- /dev/null
+++ b/test/web-profile/flow/factory/src/main/webapp/WEB-INF/beans.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- This file can be an empty text file (0 bytes) -->
+<!-- We're declaring the schema to save you time if you do have to configure 
+   this in the future -->
+<beans xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+   xsi:schemaLocation="
+        http://java.sun.com/xml/ns/javaee 
+        http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
+</beans>
diff --git a/test/web-profile/flow/factory/src/main/webapp/WEB-INF/faces-config.xml b/test/web-profile/flow/factory/src/main/webapp/WEB-INF/faces-config.xml
new file mode 100644
index 0000000..6a8814a
--- /dev/null
+++ b/test/web-profile/flow/factory/src/main/webapp/WEB-INF/faces-config.xml
@@ -0,0 +1,58 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<faces-config version="2.2" xmlns="http://xmlns.jcp.org/xml/ns/javaee"
+   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+   xsi:schemaLocation="
+        http://xmlns.jcp.org/xml/ns/javaee
+        http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd">
+            <factory>
+                <flow-handler-factory>com.sun.faces.test.webprofile.flow.factory.FlowHandlerFactoryTestImpl</flow-handler-factory>
+            </factory>
+        <flow-definition id="flow">
+            <start-node>start</start-node>
+            <view id="start">
+                <vdl-document>/start.xhtml</vdl-document>                
+            </view>
+        </flow-definition>
+</faces-config>
\ No newline at end of file
diff --git a/test/web-profile/flow/factory/src/main/webapp/WEB-INF/glassfish-web.xml b/test/web-profile/flow/factory/src/main/webapp/WEB-INF/glassfish-web.xml
new file mode 100644
index 0000000..c3ff4eb
--- /dev/null
+++ b/test/web-profile/flow/factory/src/main/webapp/WEB-INF/glassfish-web.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
+<glassfish-web-app error-url="">
+  <context-root>/test-webprofile-flow-factory</context-root>
+  <class-loader delegate="true"/>
+  <jsp-config>
+    <property name="keepgenerated" value="true">
+      <description>Keep a copy of the generated servlet class' java code.</description>
+    </property>
+  </jsp-config>
+</glassfish-web-app>
diff --git a/test/web-profile/flow/factory/src/main/webapp/WEB-INF/web.xml b/test/web-profile/flow/factory/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..7e50bd7
--- /dev/null
+++ b/test/web-profile/flow/factory/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<web-app 
+    version="3.0" 
+    xmlns="http://java.sun.com/xml/ns/javaee" 
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+    xsi:schemaLocation="
+        http://java.sun.com/xml/ns/javaee 
+        http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>${webapp.projectStage}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
+        <param-value>${webapp.partialStateSaving}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>${webapp.stateSavingMethod}</param-value>
+    </context-param>
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <welcome-file-list>
+        <welcome-file>faces/index.xhtml</welcome-file>
+    </welcome-file-list>
+</web-app>
diff --git a/test/web-profile/flow/factory/src/main/webapp/index.xhtml b/test/web-profile/flow/factory/src/main/webapp/index.xhtml
new file mode 100644
index 0000000..0927e5a
--- /dev/null
+++ b/test/web-profile/flow/factory/src/main/webapp/index.xhtml
@@ -0,0 +1,58 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <head>
+        <title>Page with link to flow entry</title>
+    </head>
+    <body>
+        <h1>Page with link to flow entry</h1>
+        <h:form prependId="false">
+            <p><h:commandButton id="start" value="start" action="flow" /></p>
+        </h:form>
+    </body>
+</html>
diff --git a/test/web-profile/flow/factory/src/main/webapp/start.xhtml b/test/web-profile/flow/factory/src/main/webapp/start.xhtml
new file mode 100644
index 0000000..cf296f7
--- /dev/null
+++ b/test/web-profile/flow/factory/src/main/webapp/start.xhtml
@@ -0,0 +1,64 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+
+    <head>
+        <title>First page in the flow</title>
+    </head>
+    <body>
+        <h:form prependId="false">
+            <p>First page in the flow</p>
+            <p>Flow bean name: #{flowBean.name}</p>
+            <p>Did we wrap: #{applicationScope['flowHandlerFactoryWrapped']}</p>
+            <p>Did we inject: #{applicationScope['appBean']}</p>
+            <p><h:commandButton id="index" value="home" action="index" /></p>
+        </h:form>
+        <h:messages/>
+    </body>
+</html>
diff --git a/test/web-profile/flow/factory/src/test/java/com/sun/faces/test/webprofile/flow/factory/FlowHandlerFactoryTestImplIT.java b/test/web-profile/flow/factory/src/test/java/com/sun/faces/test/webprofile/flow/factory/FlowHandlerFactoryTestImplIT.java
new file mode 100644
index 0000000..49cb82f
--- /dev/null
+++ b/test/web-profile/flow/factory/src/test/java/com/sun/faces/test/webprofile/flow/factory/FlowHandlerFactoryTestImplIT.java
@@ -0,0 +1,44 @@
+package com.sun.faces.test.webprofile.flow.factory;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class FlowHandlerFactoryTestImplIT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testFlowHandlerFactoryWrapping() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl);
+        
+        Thread.sleep(3000);
+
+        assertTrue(page.getBody().asText().indexOf("Page with link to flow entry") != -1);
+
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("start");
+        page = button.click();
+
+        String pageText = page.getBody().asText();
+        assertTrue(pageText.indexOf("First page in the flow") != -1);
+        assertTrue(pageText.contains("basicFlow"));
+        assertTrue(pageText.contains("Did we wrap: true"));
+        assertTrue(pageText.contains("Did we inject: MyAppBean"));
+    }
+}
diff --git a/test/web-profile/flow/intermediate/nbactions.xml b/test/web-profile/flow/intermediate/nbactions.xml
new file mode 100644
index 0000000..818dd92
--- /dev/null
+++ b/test/web-profile/flow/intermediate/nbactions.xml
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<actions>
+    <action>
+        <actionName>debug.test.single</actionName>
+        <goals>
+            <goal>test-compile</goal>
+            <goal>surefire:test</goal>
+        </goals>
+        <properties>
+            <test>${packageClassName}</test>
+            <forkMode>once</forkMode>
+            <maven.surefire.debug>-Xdebug -Xrunjdwp:transport=dt_socket,server=n,address=${jpda.address}</maven.surefire.debug>
+            <jpda.listen>true</jpda.listen>
+            <integration.url>http://localhost:8080/test-webprofile-flow-intermediate/</integration.url>
+        </properties>
+    </action>
+    <action>
+        <actionName>test.single</actionName>
+        <goals>
+            <goal>test-compile</goal>
+            <goal>surefire:test</goal>
+        </goals>
+        <properties>
+            <integration.url>http://localhost:8080/test-webprofile-flow-intermediate/</integration.url>
+            <test>${packageClassName}</test>
+        </properties>
+    </action>
+</actions>
diff --git a/test/web-profile/flow/intermediate/pom.xml b/test/web-profile/flow/intermediate/pom.xml
new file mode 100644
index 0000000..fe58646
--- /dev/null
+++ b/test/web-profile/flow/intermediate/pom.xml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.webprofile.flow</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.webprofile.flow</groupId>
+    <artifactId>intermediate</artifactId>
+    <packaging>war</packaging>
+    <name>Mojarra ${project.version} - Test - Web-Profile - Flow - Intermediate Tests</name>
+    <build>
+        <finalName>test-webprofile-flow-intermediate</finalName>
+    </build>
+    <dependencies></dependencies>
+    <properties>
+        <netbeans.hint.deploy.server>gfv3ee6</netbeans.hint.deploy.server>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/test/web-profile/flow/intermediate/src/main/java/com/sun/faces/test/webprofile/flow/intermediate/CustomerBean.java b/test/web-profile/flow/intermediate/src/main/java/com/sun/faces/test/webprofile/flow/intermediate/CustomerBean.java
new file mode 100644
index 0000000..effb6d5
--- /dev/null
+++ b/test/web-profile/flow/intermediate/src/main/java/com/sun/faces/test/webprofile/flow/intermediate/CustomerBean.java
@@ -0,0 +1,72 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.test.webprofile.flow.intermediate;
+
+public class CustomerBean
+{
+    private static int lastId = 0;
+    
+    private int myId;
+    
+    private boolean upgraded = false;
+
+    public boolean isUpgraded() {
+        return upgraded;
+    }
+
+    public void setUpgraded(boolean upgraded) {
+        this.upgraded = upgraded;
+    }
+    
+   public CustomerBean()
+   {
+      super();
+      myId = incrementId();
+   }
+   
+   public int getCustomerId() {
+       return myId;
+   }
+   
+   private synchronized int incrementId() {
+       return ++lastId;
+   }
+}
diff --git a/test/web-profile/flow/intermediate/src/main/java/com/sun/faces/test/webprofile/flow/intermediate/MaintainCustomerBean.java b/test/web-profile/flow/intermediate/src/main/java/com/sun/faces/test/webprofile/flow/intermediate/MaintainCustomerBean.java
new file mode 100644
index 0000000..af1482f
--- /dev/null
+++ b/test/web-profile/flow/intermediate/src/main/java/com/sun/faces/test/webprofile/flow/intermediate/MaintainCustomerBean.java
@@ -0,0 +1,100 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.test.webprofile.flow.intermediate;
+
+import java.io.Serializable;
+import java.util.Map;
+import javax.faces.context.FacesContext;
+import javax.faces.flow.FlowHandler;
+
+public class MaintainCustomerBean implements Serializable
+{
+   public MaintainCustomerBean() {
+      super();
+   }
+   
+   public String createCustomer() {
+       //  Logic to create a new customer object.
+       FacesContext context = FacesContext.getCurrentInstance();
+       CustomerBean customer = new CustomerBean();
+       FlowHandler flowHandler = context.getApplication().getFlowHandler();
+       Map<Object, Object> flowScope = flowHandler.getCurrentFlowScope();
+       if (null == flowScope) {
+           throw new IllegalStateException("Must have a flow handler");
+       }
+       flowScope.put("customerId", customer.getCustomerId());
+       flowScope.put("customerIdValue", customer);
+       return "router1";
+   }
+   
+   public String fetchCustomer() {
+      //  Logic to fetch a customer.
+      return "success";
+   }
+   
+   public void upgradeCustomer() {
+       FacesContext context = FacesContext.getCurrentInstance();
+       FlowHandler flowHandler = context.getApplication().getFlowHandler();
+       Map<Object, Object> flowScope = flowHandler.getCurrentFlowScope();
+       if (null == flowScope) {
+           throw new IllegalStateException("Must have a flow handler");
+       }
+       CustomerBean customer = (CustomerBean) flowScope.get("customerIdValue");
+       customer.setUpgraded(true);
+
+   }
+   
+   public void initializeFlow() {
+       FacesContext context = FacesContext.getCurrentInstance();
+       Map<String,Object> requestMap = context.getExternalContext().getRequestMap();
+       requestMap.put("initializerMessage", "Initializer called");
+
+   }
+   
+   public void cleanUpFlow() {
+       Map<String,Object> requestMap = FacesContext.getCurrentInstance().getExternalContext().getRequestMap();
+       requestMap.put("finalizerMessage", "Finalizer called");
+   }
+   
+   public String action01() {
+       return "pageB";
+   }
+}
diff --git a/test/web-profile/flow/intermediate/src/main/java/com/sun/faces/test/webprofile/flow/intermediate/MaintainCustomerBeanJavaFlow.java b/test/web-profile/flow/intermediate/src/main/java/com/sun/faces/test/webprofile/flow/intermediate/MaintainCustomerBeanJavaFlow.java
new file mode 100644
index 0000000..f5ec7db
--- /dev/null
+++ b/test/web-profile/flow/intermediate/src/main/java/com/sun/faces/test/webprofile/flow/intermediate/MaintainCustomerBeanJavaFlow.java
@@ -0,0 +1,51 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.test.webprofile.flow.intermediate;
+
+import javax.inject.Named;
+
+import javax.faces.flow.FlowScoped;
+
+ at Named(value="maintainCustomerBeanJava")
+ at FlowScoped("maintain-customer-record-java")
+public class MaintainCustomerBeanJavaFlow extends MaintainCustomerBean {
+    
+}
diff --git a/test/web-profile/flow/intermediate/src/main/java/com/sun/faces/test/webprofile/flow/intermediate/MaintainCustomerBeanXmlFlow.java b/test/web-profile/flow/intermediate/src/main/java/com/sun/faces/test/webprofile/flow/intermediate/MaintainCustomerBeanXmlFlow.java
new file mode 100644
index 0000000..b269829
--- /dev/null
+++ b/test/web-profile/flow/intermediate/src/main/java/com/sun/faces/test/webprofile/flow/intermediate/MaintainCustomerBeanXmlFlow.java
@@ -0,0 +1,51 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.test.webprofile.flow.intermediate;
+
+import javax.inject.Named;
+
+import javax.faces.flow.FlowScoped;
+
+ at Named(value="maintainCustomerBean")
+ at FlowScoped("maintain-customer-record")
+public class MaintainCustomerBeanXmlFlow extends MaintainCustomerBean {
+    
+}
diff --git a/test/web-profile/flow/intermediate/src/main/java/com/sun/faces/test/webprofile/flow/intermediate/MaintainCustomerRecordJavaFlowDefinition.java b/test/web-profile/flow/intermediate/src/main/java/com/sun/faces/test/webprofile/flow/intermediate/MaintainCustomerRecordJavaFlowDefinition.java
new file mode 100644
index 0000000..55cb82d
--- /dev/null
+++ b/test/web-profile/flow/intermediate/src/main/java/com/sun/faces/test/webprofile/flow/intermediate/MaintainCustomerRecordJavaFlowDefinition.java
@@ -0,0 +1,97 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.test.webprofile.flow.intermediate;
+
+import java.io.Serializable;
+import javax.enterprise.inject.Produces;
+import javax.faces.flow.Flow;
+import javax.faces.flow.builder.FlowBuilder;
+import javax.faces.flow.builder.FlowDefinition;
+import javax.faces.flow.builder.FlowBuilderParameter;
+
+
+public class MaintainCustomerRecordJavaFlowDefinition implements Serializable {
+    
+    private static final long serialVersionUID = -5610441904980215032L;
+
+    public MaintainCustomerRecordJavaFlowDefinition() {
+    }
+    
+    @Produces @FlowDefinition
+    public Flow defineFlow(@FlowBuilderParameter FlowBuilder flowBuilder) {
+        String flowId = "maintain-customer-record-java";
+        flowBuilder.id("", flowId);
+        flowBuilder.viewNode(flowId, "/" + flowId + "/" + flowId + ".xhtml");
+
+        flowBuilder.switchNode("router1").markAsStartNode().defaultOutcome("view-customer").
+                switchCase().condition("#{flowScope.customerId == null}").
+                fromOutcome("create-customer");
+        flowBuilder.viewNode("create-customer", "/" + flowId + "/" + "create-customer.xhtml");
+        flowBuilder.viewNode("view-customer", "/" + flowId + "/" + "view-customer.xhtml");
+        flowBuilder.viewNode("maintain-customer-record", "/" + flowId + "/" + "maintain-customer-record");
+        flowBuilder.methodCallNode("upgrade-customer").expression("#{maintainCustomerBeanJava.upgradeCustomer}").
+                defaultOutcome("view-customer");
+        flowBuilder.initializer("#{maintainCustomerBeanJava.initializeFlow}");
+        flowBuilder.finalizer("#{maintainCustomerBeanJava.cleanUpFlow}");
+        flowBuilder.returnNode("success").fromOutcome("/complete");
+        flowBuilder.returnNode("errorOccurred").fromOutcome("error");
+        flowBuilder.navigationCase().fromViewId("/" + flowId + "/pageA.xhtml").
+                fromAction("#{maintainCustomerBeanJava.action01}").
+                fromOutcome("pageB").
+                toViewId("/" + flowId + "/pageB.xhtml");
+        flowBuilder.navigationCase().fromViewId("/" + flowId + "/pageB.xhtml").
+                fromOutcome("pageC").condition("#{param.gotoC != null}").toViewId("/" + flowId + "/pageC_true.xhtml");
+        flowBuilder.navigationCase().fromViewId("/" + flowId + "/pageB.xhtml").
+                fromOutcome("pageC").condition("#{param.gotoC == null}").toViewId("/" + flowId + "/pageC_false.xhtml");
+        flowBuilder.navigationCase().fromViewId("/" + flowId + "/pageB.xhtml").
+                fromOutcome("pageD_redirect").toViewId("/" + flowId + "/pageD_noParams.xhtml").redirect();
+        flowBuilder.navigationCase().fromViewId("/" + flowId + "/pageC*").
+                toViewId("/" + flowId + "/pageB.xhtml");
+        flowBuilder.navigationCase().fromViewId("*").fromOutcome("pageB").toViewId("/" + flowId + "/pageB.xhtml");
+        
+        flowBuilder.navigationCase().fromViewId("/" + flowId + "/pageB.xhtml").
+                fromOutcome("pageD_redirect_params").toViewId("/" + flowId + "/pageD_params.xhtml").
+                redirect().includeViewParams().parameter("id", "foo").parameter("baz", "bar");
+                
+        return flowBuilder.getFlow();
+    }
+    
+}
diff --git a/test/web-profile/flow/intermediate/src/main/resources/META-INF/persistence.xml b/test/web-profile/flow/intermediate/src/main/resources/META-INF/persistence.xml
new file mode 100644
index 0000000..6377368
--- /dev/null
+++ b/test/web-profile/flow/intermediate/src/main/resources/META-INF/persistence.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<persistence version="2.0"
+   xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+   xsi:schemaLocation="
+        http://java.sun.com/xml/ns/persistence
+        http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
+   <persistence-unit name="primary">
+      <!-- If you are running in a production environment, add a managed 
+         data source, the example data source is just for development and testing! -->
+      <jta-data-source>java:jboss/datasources/acmeDS</jta-data-source>
+      <properties>
+         <!-- Properties for Hibernate -->
+         <property name="hibernate.hbm2ddl.auto" value="create-drop" />
+         <property name="hibernate.show_sql" value="false" />
+      </properties>
+   </persistence-unit>
+</persistence>
\ No newline at end of file
diff --git a/test/web-profile/flow/intermediate/src/main/webapp/WEB-INF/beans.xml b/test/web-profile/flow/intermediate/src/main/webapp/WEB-INF/beans.xml
new file mode 100644
index 0000000..c782f57
--- /dev/null
+++ b/test/web-profile/flow/intermediate/src/main/webapp/WEB-INF/beans.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- This file can be an empty text file (0 bytes) -->
+<!-- We're declaring the schema to save you time if you do have to configure 
+   this in the future -->
+<beans xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+   xsi:schemaLocation="
+        http://java.sun.com/xml/ns/javaee 
+        http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
+</beans>
diff --git a/test/web-profile/flow/intermediate/src/main/webapp/WEB-INF/web.xml b/test/web-profile/flow/intermediate/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..74e3339
--- /dev/null
+++ b/test/web-profile/flow/intermediate/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>${webapp.projectStage}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
+        <param-value>${webapp.partialStateSaving}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>${webapp.stateSavingMethod}</param-value>
+    </context-param>
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <welcome-file-list>
+        <welcome-file>faces/index.xhtml</welcome-file>
+    </welcome-file-list>
+</web-app>
diff --git a/test/web-profile/flow/intermediate/src/main/webapp/complete.xhtml b/test/web-profile/flow/intermediate/src/main/webapp/complete.xhtml
new file mode 100644
index 0000000..bf35432
--- /dev/null
+++ b/test/web-profile/flow/intermediate/src/main/webapp/complete.xhtml
@@ -0,0 +1,63 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <head>
+        <title>Page navigated to upon return from bounded-task-flow</title>
+    </head>
+    <body>
+        <h1>Page navigated to upon return from bounded-task-flow</h1>
+        
+    <h:form prependId="false">
+        <p>return page</p>
+        
+        <p>Finalizer message: #{finalizerMessage}</p>
+                
+        <p><h:commandButton id="home" value="home" action="/index.xhtml" /></p>
+        
+    </h:form>
+</body>
+</html>
diff --git a/test/web-profile/flow/intermediate/src/main/webapp/index.xhtml b/test/web-profile/flow/intermediate/src/main/webapp/index.xhtml
new file mode 100644
index 0000000..a095f67
--- /dev/null
+++ b/test/web-profile/flow/intermediate/src/main/webapp/index.xhtml
@@ -0,0 +1,60 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    <head>
+        <title>Outside of flow</title>
+    </head>
+    <body>
+        <h1>Outside of flow</h1>
+        
+    <h:form prependId="false">
+        <p style="background-color:red;"><h:commandButton id="maintain-customer-record" value="Enter XML Defined flow" action="maintain-customer-record" /></p>
+        <p style="background-color:blue;"><h:commandButton id="maintain-customer-record-java" value="Enter Java Defined flow" action="maintain-customer-record-java"/></p>
+    </h:form>
+</body>
+</html>
diff --git a/test/web-profile/flow/intermediate/src/main/webapp/maintain-customer-record-java/create-customer.xhtml b/test/web-profile/flow/intermediate/src/main/webapp/maintain-customer-record-java/create-customer.xhtml
new file mode 100644
index 0000000..c846bdd
--- /dev/null
+++ b/test/web-profile/flow/intermediate/src/main/webapp/maintain-customer-record-java/create-customer.xhtml
@@ -0,0 +1,68 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    
+    <head>
+        <title>Create customer page</title>
+    </head>
+    <body bgcolor="blue">
+        
+        <p>Create customer page</p>
+        
+    <h:form prependId="false">
+        
+        <p>Initializer message: #{initializerMessage}</p>
+
+        <p><h:commandButton id="return" value="return" action="success" /></p>
+        
+        <p><h:commandButton id="createCustomer" value="Create Customer" action="#{maintainCustomerBeanJava.createCustomer}" /></p>
+        
+    </h:form>
+        
+    </body>
+</html>
diff --git a/test/web-profile/flow/intermediate/src/main/webapp/maintain-customer-record-java/maintain-customer-record-java.xhtml b/test/web-profile/flow/intermediate/src/main/webapp/maintain-customer-record-java/maintain-customer-record-java.xhtml
new file mode 100644
index 0000000..47f6e2a
--- /dev/null
+++ b/test/web-profile/flow/intermediate/src/main/webapp/maintain-customer-record-java/maintain-customer-record-java.xhtml
@@ -0,0 +1,54 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    <head>
+        <title>First page in the flow</title>
+    </head>
+    <body bgcolor="blue">
+    </body>
+</html>
diff --git a/test/web-profile/flow/intermediate/src/main/webapp/maintain-customer-record-java/pageA.xhtml b/test/web-profile/flow/intermediate/src/main/webapp/maintain-customer-record-java/pageA.xhtml
new file mode 100644
index 0000000..96f3e03
--- /dev/null
+++ b/test/web-profile/flow/intermediate/src/main/webapp/maintain-customer-record-java/pageA.xhtml
@@ -0,0 +1,64 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    
+    <head>
+        <title>pageA</title>
+    </head>
+    <body bgcolor="blue">
+        
+        <p>explicit in flow nav 01</p>
+        
+    <h:form prependId="false">
+        
+        <p><h:commandButton id="pageB" value="pageB" action="pageB" /></p>
+        
+    </h:form>
+        
+    </body>
+</html>
diff --git a/test/web-profile/flow/intermediate/src/main/webapp/maintain-customer-record-java/pageB.xhtml b/test/web-profile/flow/intermediate/src/main/webapp/maintain-customer-record-java/pageB.xhtml
new file mode 100644
index 0000000..4e6d7ec
--- /dev/null
+++ b/test/web-profile/flow/intermediate/src/main/webapp/maintain-customer-record-java/pageB.xhtml
@@ -0,0 +1,77 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    
+    <head>
+        <title>pageB</title>
+    </head>
+    <body bgcolor="blue">
+        
+        <p>explicit in flow nav 02</p>
+        
+    <h:form prependId="false">
+        
+        <p><h:commandButton id="pageD_redirect" value="pageD via redirect" action="pageD_redirect" /></p>
+
+        <p><h:button id="pageD_redirect_params" value="pageD_redirect_params"
+                     outcome="pageD_redirect_params">
+        </h:button></p>
+
+        <p><h:commandButton id="pageC_true" value="pageC with true" action="pageC" /></p>
+        <h:inputHidden id="gotoC" value="true" />
+        
+    </h:form>
+        
+    <h:form prependId="false">
+        
+        <p><h:commandButton id="pageC_false" value="pageC with false" action="pageC" /></p>
+        
+    </h:form>
+        
+    </body>
+</html>
diff --git a/test/web-profile/flow/intermediate/src/main/webapp/maintain-customer-record-java/pageC.xhtml b/test/web-profile/flow/intermediate/src/main/webapp/maintain-customer-record-java/pageC.xhtml
new file mode 100644
index 0000000..2589bc6
--- /dev/null
+++ b/test/web-profile/flow/intermediate/src/main/webapp/maintain-customer-record-java/pageC.xhtml
@@ -0,0 +1,64 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    
+    <head>
+        <title>pageB</title>
+    </head>
+    <body bgcolor="blue">
+        
+        <p>explicit in flow nav 03</p>
+        
+    <h:form prependId="false">
+        
+        <p><h:commandButton id="pageB" value="pageB" action="pageB" /></p>
+        
+    </h:form>
+        
+    </body>
+</html>
diff --git a/test/web-profile/flow/intermediate/src/main/webapp/maintain-customer-record-java/pageC_false.xhtml b/test/web-profile/flow/intermediate/src/main/webapp/maintain-customer-record-java/pageC_false.xhtml
new file mode 100644
index 0000000..9459c29
--- /dev/null
+++ b/test/web-profile/flow/intermediate/src/main/webapp/maintain-customer-record-java/pageC_false.xhtml
@@ -0,0 +1,64 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    
+    <head>
+        <title>pageB</title>
+    </head>
+    <body bgcolor="blue">
+        
+        <p>explicit in flow nav 03: if false</p>
+        
+    <h:form prependId="false">
+        
+        <p><h:commandButton id="pageB" value="pageB" action="pageB" /></p>
+        
+    </h:form>
+        
+    </body>
+</html>
diff --git a/test/web-profile/flow/intermediate/src/main/webapp/maintain-customer-record-java/pageC_true.xhtml b/test/web-profile/flow/intermediate/src/main/webapp/maintain-customer-record-java/pageC_true.xhtml
new file mode 100644
index 0000000..e76f8b6
--- /dev/null
+++ b/test/web-profile/flow/intermediate/src/main/webapp/maintain-customer-record-java/pageC_true.xhtml
@@ -0,0 +1,64 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    
+    <head>
+        <title>pageB</title>
+    </head>
+    <body bgcolor="blue">
+        
+        <p>explicit in flow nav 03: if true</p>
+        
+    <h:form prependId="false">
+        
+        <p><h:commandButton id="pageB" value="pageB" action="pageB" /></p>
+        
+    </h:form>
+        
+    </body>
+</html>
diff --git a/test/web-profile/flow/intermediate/src/main/webapp/maintain-customer-record-java/pageD_noParams.xhtml b/test/web-profile/flow/intermediate/src/main/webapp/maintain-customer-record-java/pageD_noParams.xhtml
new file mode 100644
index 0000000..8bb3e29
--- /dev/null
+++ b/test/web-profile/flow/intermediate/src/main/webapp/maintain-customer-record-java/pageD_noParams.xhtml
@@ -0,0 +1,64 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    
+    <head>
+        <title>pageB</title>
+    </head>
+    <body bgcolor="blue">
+        
+        <p>explicit in flow nav 04: no params</p>
+        
+    <h:form prependId="false">
+        
+        <p><h:commandButton id="pageB" value="pageB" action="pageB" /></p>
+        
+    </h:form>
+        
+    </body>
+</html>
diff --git a/test/web-profile/flow/intermediate/src/main/webapp/maintain-customer-record-java/pageD_params.xhtml b/test/web-profile/flow/intermediate/src/main/webapp/maintain-customer-record-java/pageD_params.xhtml
new file mode 100644
index 0000000..40a8111
--- /dev/null
+++ b/test/web-profile/flow/intermediate/src/main/webapp/maintain-customer-record-java/pageD_params.xhtml
@@ -0,0 +1,72 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    <f:metadata>
+        <f:viewParam name="id" required="true" value="#{flowScope.id}" />
+        <f:viewParam name="baz" required="true" value="#{flowScope.baz}" />
+    </f:metadata>
+    
+    <head>
+        <title>pageB</title>
+    </head>
+    <body bgcolor="blue">
+        
+        <p>explicit in flow nav 05: params</p>
+        
+        <p>id param: #{flowScope.id}</p>
+        
+        <p>baz param: #{flowScope.baz}</p>
+        
+    <h:form prependId="false">
+        
+        <p><h:commandButton id="pageB" value="pageB" action="pageB" /></p>
+        
+    </h:form>
+        
+    </body>
+</html>
diff --git a/test/web-profile/flow/intermediate/src/main/webapp/maintain-customer-record-java/view-customer.xhtml b/test/web-profile/flow/intermediate/src/main/webapp/maintain-customer-record-java/view-customer.xhtml
new file mode 100644
index 0000000..79a4428
--- /dev/null
+++ b/test/web-profile/flow/intermediate/src/main/webapp/maintain-customer-record-java/view-customer.xhtml
@@ -0,0 +1,72 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    
+    <head>
+        <title>View customer page</title>
+    </head>
+    <body bgcolor="blue">
+        
+        <p>View customer page</p>
+        
+    <h:form prependId="false">
+        
+        <p>Customer Id: #{flowScope.customerId}</p>
+        
+        <p>Customer is upgraded: #{flowScope.customerIdValue.upgraded}</p>
+        
+        <p><h:commandButton id="exit" value="exit flow" action="success" /></p>
+        
+        <p><h:commandButton id="upgrade" value="upgrade customer" action="upgrade-customer" /></p>
+        
+        <p><h:commandButton id="pageA" value="pageA" action="pageA" /></p>
+        
+    </h:form>
+        
+    </body>
+</html>
diff --git a/test/web-profile/flow/intermediate/src/main/webapp/maintain-customer-record/create-customer.xhtml b/test/web-profile/flow/intermediate/src/main/webapp/maintain-customer-record/create-customer.xhtml
new file mode 100644
index 0000000..f7ba822
--- /dev/null
+++ b/test/web-profile/flow/intermediate/src/main/webapp/maintain-customer-record/create-customer.xhtml
@@ -0,0 +1,68 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    
+    <head>
+        <title>Create customer page</title>
+    </head>
+    <body bgcolor="red">
+        
+        <p>Create customer page</p>
+        
+    <h:form prependId="false">
+        
+        <p>Initializer message: #{initializerMessage}</p>
+
+        <p><h:commandButton id="return" value="return" action="success" /></p>
+        
+        <p><h:commandButton id="createCustomer" value="Create Customer" action="#{maintainCustomerBean.createCustomer}" /></p>
+        
+    </h:form>
+        
+    </body>
+</html>
diff --git a/test/web-profile/flow/intermediate/src/main/webapp/maintain-customer-record/maintain-customer-record-flow.xml b/test/web-profile/flow/intermediate/src/main/webapp/maintain-customer-record/maintain-customer-record-flow.xml
new file mode 100644
index 0000000..78c12e2
--- /dev/null
+++ b/test/web-profile/flow/intermediate/src/main/webapp/maintain-customer-record/maintain-customer-record-flow.xml
@@ -0,0 +1,151 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<faces-config version="2.2" xmlns="http://xmlns.jcp.org/xml/ns/javaee"
+   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+   xsi:schemaLocation="
+        http://xmlns.jcp.org/xml/ns/javaee
+        http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd">
+
+    <flow-definition id="maintain-customer-record">
+        <start-node>router1</start-node>
+        
+        <flow-return id="success">
+            <from-outcome>/complete</from-outcome>
+        </flow-return>
+        <flow-return id="errorOccurred">
+            <from-outcome>error</from-outcome>
+        </flow-return>
+        
+        <!-- If a customerId was specified then we'll edit it, otherwise create a new customer. -->
+        <switch id="router1">
+          <case>
+              <if>#{flowScope.customerId == null}</if>
+              <from-outcome>create-customer</from-outcome>
+          </case>
+          <default-outcome>view-customer</default-outcome>
+        </switch>
+        
+        <view id="create-customer">
+            <vdl-document>/maintain-customer-record/create-customer.xhtml</vdl-document>
+        </view>
+        
+        <view id="view-customer">
+            <vdl-document>/maintain-customer-record/view-customer.xhtml</vdl-document>
+        </view>
+        
+        <view id="maintain-customer-record">
+            <vdl-document>/maintain-customer-record/maintain-customer-record.xhtml</vdl-document>
+        </view>
+        
+        <method-call id="upgrade-customer">
+            <method>#{maintainCustomerBean.upgradeCustomer}</method>
+            <default-outcome>view-customer</default-outcome>
+        </method-call>
+        
+        <initializer>#{maintainCustomerBean.initializeFlow}</initializer>
+        <finalizer>#{maintainCustomerBean.cleanUpFlow}</finalizer>
+        
+        <navigation-rule>
+            <from-view-id>/maintain-customer-record/pageA.xhtml</from-view-id>
+            <navigation-case>
+                <from-outcome>pageB</from-outcome>
+                <from-action>#{maintainCustomerBean.action01}</from-action>
+                <to-view-id>/maintain-customer-record/pageB.xhtml</to-view-id>
+            </navigation-case>
+        </navigation-rule>
+        
+        <navigation-rule>
+            <from-view-id>/maintain-customer-record/pageB.xhtml</from-view-id>
+            <navigation-case>
+                <from-outcome>pageC</from-outcome>
+                <if>#{param.gotoC != null}</if>
+                <to-view-id>/maintain-customer-record/pageC_true.xhtml</to-view-id>
+            </navigation-case>
+            <navigation-case>
+                <from-outcome>pageC</from-outcome>
+                <if>#{param.gotoC == null}</if>
+                <to-view-id>/maintain-customer-record/pageC_false.xhtml</to-view-id>
+            </navigation-case>
+            
+            <navigation-case>
+                <from-outcome>pageD_redirect</from-outcome>
+                <to-view-id>/maintain-customer-record/pageD_noParams.xhtml</to-view-id>
+                <redirect />
+            </navigation-case>
+            
+            <navigation-case>
+                <from-outcome>pageD_redirect_params</from-outcome>
+                <to-view-id>/maintain-customer-record/pageD_params.xhtml</to-view-id>
+                <redirect include-view-params="true">
+                    <redirect-param>
+                        <name>id</name>
+                        <value>foo</value>
+                    </redirect-param>
+                    <redirect-param>
+                        <name>baz</name>
+                        <value>bar</value>
+                    </redirect-param>
+                </redirect>
+            </navigation-case>
+            
+            
+            
+        </navigation-rule>
+        
+        <navigation-rule>
+            <from-view-id>/maintain-customer-record/pageC*</from-view-id>
+            <navigation-case>
+                <to-view-id>/maintain-customer-record/pageB.xhtml</to-view-id>
+            </navigation-case>
+        </navigation-rule>
+        
+        <navigation-rule>
+            <from-view-id>*</from-view-id>
+            <navigation-case>
+                <from-outcome>pageB</from-outcome>
+                <to-view-id>/maintain-customer-record/pageB.xhtml</to-view-id>
+            </navigation-case>
+        </navigation-rule>
+
+    </flow-definition>
+</faces-config>
\ No newline at end of file
diff --git a/test/web-profile/flow/intermediate/src/main/webapp/maintain-customer-record/maintain-customer-record.xhtml b/test/web-profile/flow/intermediate/src/main/webapp/maintain-customer-record/maintain-customer-record.xhtml
new file mode 100644
index 0000000..26bad3e
--- /dev/null
+++ b/test/web-profile/flow/intermediate/src/main/webapp/maintain-customer-record/maintain-customer-record.xhtml
@@ -0,0 +1,54 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    <head>
+        <title>First page in the flow</title>
+    </head>
+    <body bgcolor="red">
+    </body>
+</html>
diff --git a/test/web-profile/flow/intermediate/src/main/webapp/maintain-customer-record/pageA.xhtml b/test/web-profile/flow/intermediate/src/main/webapp/maintain-customer-record/pageA.xhtml
new file mode 100644
index 0000000..385c96a
--- /dev/null
+++ b/test/web-profile/flow/intermediate/src/main/webapp/maintain-customer-record/pageA.xhtml
@@ -0,0 +1,64 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    
+    <head>
+        <title>pageA</title>
+    </head>
+    <body bgcolor="red">
+        
+        <p>explicit in flow nav 01</p>
+        
+    <h:form prependId="false">
+        
+        <p><h:commandButton id="pageB" value="pageB" action="#{maintainCustomerBean.action01}" /></p>
+        
+    </h:form>
+        
+    </body>
+</html>
diff --git a/test/web-profile/flow/intermediate/src/main/webapp/maintain-customer-record/pageB.xhtml b/test/web-profile/flow/intermediate/src/main/webapp/maintain-customer-record/pageB.xhtml
new file mode 100644
index 0000000..cfd96c2
--- /dev/null
+++ b/test/web-profile/flow/intermediate/src/main/webapp/maintain-customer-record/pageB.xhtml
@@ -0,0 +1,77 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    
+    <head>
+        <title>pageB</title>
+    </head>
+    <body bgcolor="red">
+        
+        <p>explicit in flow nav 02</p>
+        
+    <h:form prependId="false">
+        
+        <p><h:commandButton id="pageD_redirect" value="pageD via redirect" action="pageD_redirect" /></p>
+        
+        <p><h:button id="pageD_redirect_params" value="pageD_redirect_params"
+                     outcome="pageD_redirect_params">
+        </h:button></p>
+
+        <p><h:commandButton id="pageC_true" value="pageC with true" action="pageC" /></p>
+        <h:inputHidden id="gotoC" value="true" />
+        
+    </h:form>
+        
+    <h:form prependId="false">
+        
+        <p><h:commandButton id="pageC_false" value="pageC with false" action="pageC" /></p>
+        
+    </h:form>
+
+</body>
+</html>
diff --git a/test/web-profile/flow/intermediate/src/main/webapp/maintain-customer-record/pageC_false.xhtml b/test/web-profile/flow/intermediate/src/main/webapp/maintain-customer-record/pageC_false.xhtml
new file mode 100644
index 0000000..f8ddf6b
--- /dev/null
+++ b/test/web-profile/flow/intermediate/src/main/webapp/maintain-customer-record/pageC_false.xhtml
@@ -0,0 +1,64 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    
+    <head>
+        <title>pageB</title>
+    </head>
+    <body bgcolor="red">
+        
+        <p>explicit in flow nav 03: if false</p>
+        
+    <h:form prependId="false">
+        
+        <p><h:commandButton id="pageB" value="pageB" action="pageB" /></p>
+        
+    </h:form>
+        
+    </body>
+</html>
diff --git a/test/web-profile/flow/intermediate/src/main/webapp/maintain-customer-record/pageC_true.xhtml b/test/web-profile/flow/intermediate/src/main/webapp/maintain-customer-record/pageC_true.xhtml
new file mode 100644
index 0000000..b202db1
--- /dev/null
+++ b/test/web-profile/flow/intermediate/src/main/webapp/maintain-customer-record/pageC_true.xhtml
@@ -0,0 +1,64 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    
+    <head>
+        <title>pageB</title>
+    </head>
+    <body bgcolor="red">
+        
+        <p>explicit in flow nav 03: if true</p>
+        
+    <h:form prependId="false">
+        
+        <p><h:commandButton id="pageB" value="pageB" action="pageB" /></p>
+        
+    </h:form>
+        
+    </body>
+</html>
diff --git a/test/web-profile/flow/intermediate/src/main/webapp/maintain-customer-record/pageD_noParams.xhtml b/test/web-profile/flow/intermediate/src/main/webapp/maintain-customer-record/pageD_noParams.xhtml
new file mode 100644
index 0000000..679d793
--- /dev/null
+++ b/test/web-profile/flow/intermediate/src/main/webapp/maintain-customer-record/pageD_noParams.xhtml
@@ -0,0 +1,64 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    
+    <head>
+        <title>pageB</title>
+    </head>
+    <body bgcolor="red">
+        
+        <p>explicit in flow nav 04: no params</p>
+        
+    <h:form prependId="false">
+        
+        <p><h:commandButton id="pageB" value="pageB" action="pageB" /></p>
+        
+    </h:form>
+        
+    </body>
+</html>
diff --git a/test/web-profile/flow/intermediate/src/main/webapp/maintain-customer-record/pageD_params.xhtml b/test/web-profile/flow/intermediate/src/main/webapp/maintain-customer-record/pageD_params.xhtml
new file mode 100644
index 0000000..8d6a31e
--- /dev/null
+++ b/test/web-profile/flow/intermediate/src/main/webapp/maintain-customer-record/pageD_params.xhtml
@@ -0,0 +1,72 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    <f:metadata>
+        <f:viewParam name="id" required="true" value="#{flowScope.id}" />
+        <f:viewParam name="baz" required="true" value="#{flowScope.baz}" />
+    </f:metadata>
+    
+    <head>
+        <title>pageB</title>
+    </head>
+    <body bgcolor="red">
+        
+        <p>explicit in flow nav 05: params</p>
+        
+        <p>id param: #{flowScope.id}</p>
+        
+        <p>baz param: #{flowScope.baz}</p>
+        
+    <h:form prependId="false">
+        
+        <p><h:commandButton id="pageB" value="pageB" action="pageB" /></p>
+        
+    </h:form>
+        
+    </body>
+</html>
diff --git a/test/web-profile/flow/intermediate/src/main/webapp/maintain-customer-record/view-customer.xhtml b/test/web-profile/flow/intermediate/src/main/webapp/maintain-customer-record/view-customer.xhtml
new file mode 100644
index 0000000..7af46af
--- /dev/null
+++ b/test/web-profile/flow/intermediate/src/main/webapp/maintain-customer-record/view-customer.xhtml
@@ -0,0 +1,72 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    
+    <head>
+        <title>View customer page</title>
+    </head>
+    <body bgcolor="red">
+        
+        <p>View customer page</p>
+        
+    <h:form prependId="false">
+        
+        <p>Customer Id: #{flowScope.customerId}</p>
+        
+        <p>Customer is upgraded: #{flowScope.customerIdValue.upgraded}</p>
+        
+        <p><h:commandButton id="exit" value="exit flow" action="success" /></p>
+        
+        <p><h:commandButton id="upgrade" value="upgrade customer" action="upgrade-customer" /></p>
+
+        <p><h:commandButton id="pageA" value="pageA" action="pageA" /></p>
+        
+    </h:form>
+        
+    </body>
+</html>
diff --git a/test/web-profile/flow/intermediate/src/test/java/com/sun/faces/test/webprofile/flow/intermediate/FlowEntryExitIntermediateIT.java b/test/web-profile/flow/intermediate/src/test/java/com/sun/faces/test/webprofile/flow/intermediate/FlowEntryExitIntermediateIT.java
new file mode 100644
index 0000000..bda45cb
--- /dev/null
+++ b/test/web-profile/flow/intermediate/src/test/java/com/sun/faces/test/webprofile/flow/intermediate/FlowEntryExitIntermediateIT.java
@@ -0,0 +1,244 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.webprofile.flow.intermediate;
+
+import com.gargoylesoftware.htmlunit.html.HtmlButtonInput;
+import com.gargoylesoftware.htmlunit.html.HtmlButton;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+
+public class FlowEntryExitIntermediateIT {
+    /**
+     * Stores the web URL.
+     */
+    private String webUrl;
+    /**
+     * Stores the web client.
+     */
+    private WebClient webClient;
+
+    /**
+     * Setup before testing.
+     * 
+     * @throws Exception when a serious error occurs.
+     */
+    @BeforeClass
+    public static void setUpClass() throws Exception {
+    }
+
+    /**
+     * Cleanup after testing.
+     * 
+     * @throws Exception when a serious error occurs.
+     */
+    @AfterClass
+    public static void tearDownClass() throws Exception {
+    }
+
+    /**
+     * Setup before testing.
+     */
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    /**
+     * Tear down after testing.
+     */
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testFacesFlowScopeXml() throws Exception {
+        performCustomerUpgradeTest("maintain-customer-record");
+        performCustomerUpgradeTest("maintain-customer-record");
+        performInFlowExplicitNavigationTest("maintain-customer-record");
+        performInFlowExplicitNavigationTest("maintain-customer-record");
+        
+    }
+    
+    @Test
+    public void testFacesFlowScopeJava() throws Exception {
+        performCustomerUpgradeTest("maintain-customer-record-java");
+        performCustomerUpgradeTest("maintain-customer-record-java");
+        performInFlowExplicitNavigationTest("maintain-customer-record-java");
+        performInFlowExplicitNavigationTest("maintain-customer-record-java");
+        
+    }
+    private void performCustomerUpgradeTest(String startButton) throws Exception {
+        quickEnterExit();
+        
+        HtmlPage page = webClient.getPage(webUrl);
+        
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById(startButton);
+        
+        page = button.click();
+        
+        button = (HtmlSubmitInput) page.getElementById("createCustomer");
+        page = button.click();
+        String pageText = page.asText();
+        Pattern pattern = Pattern.compile("(?s).*Customer Id:\\s+([0-9])+.*");
+        Matcher matcher = pattern.matcher(pageText);
+        assertTrue(matcher.matches());
+        String customerId = matcher.group(1);
+        assertTrue(pageText.matches("(?s).*Customer is upgraded:\\s+false.*"));
+        
+        button = (HtmlSubmitInput) page.getElementById("upgrade");
+        page = button.click();
+        pageText = page.asText();
+        matcher = pattern.matcher(pageText);
+        assertTrue(matcher.matches());
+        String sameCustomerId = matcher.group(1);
+        assertTrue(pageText.matches("(?s).*Customer is upgraded:\\s+true.*"));
+        assertEquals(customerId, sameCustomerId);
+        
+        button = (HtmlSubmitInput) page.getElementById("exit");
+        page = button.click();
+        
+        pageText = page.getBody().asText();
+        
+        assertTrue(pageText.contains("return page"));
+        assertTrue(pageText.contains("Finalizer called"));
+        
+        button = (HtmlSubmitInput) page.getElementById("home");
+        page = button.click();
+
+        button = (HtmlSubmitInput) page.getElementById(startButton);
+        assertNotNull(button);
+        
+        
+    }
+    
+    private void performInFlowExplicitNavigationTest(String startButton) throws Exception {
+        HtmlPage page = webClient.getPage(webUrl);
+        
+        HtmlSubmitInput submit = (HtmlSubmitInput) page.getElementById(startButton);
+        page = submit.click();
+        submit = (HtmlSubmitInput) page.getElementById("createCustomer");
+        page = submit.click();
+        
+        submit = (HtmlSubmitInput) page.getElementById("pageA");
+        page = submit.click();
+        String pageText = page.asText();
+        assertTrue(pageText.contains("explicit in flow nav 01"));
+        
+        submit = (HtmlSubmitInput) page.getElementById("pageB");
+        page = submit.click();
+        
+        pageText = page.asText();
+        assertTrue(pageText.contains("explicit in flow nav 02"));
+        
+        submit = (HtmlSubmitInput) page.getElementById("pageC_true");
+        page = submit.click();
+        
+        pageText = page.asText();
+        assertTrue(pageText.contains("explicit in flow nav 03: if true"));
+        
+        submit = (HtmlSubmitInput) page.getElementById("pageB");
+        page = submit.click();
+        
+        submit = (HtmlSubmitInput) page.getElementById("pageC_false");
+        page = submit.click();
+        
+        pageText = page.asText();
+        assertTrue(pageText.contains("explicit in flow nav 03: if false"));
+        
+        submit = (HtmlSubmitInput) page.getElementById("pageB");
+        page = submit.click();
+        
+        submit = (HtmlSubmitInput) page.getElementById("pageD_redirect");
+        page = submit.click();
+        
+        pageText = page.asText();
+        assertTrue(pageText.contains("explicit in flow nav 04: no params"));
+
+        submit = (HtmlSubmitInput) page.getElementById("pageB");
+        page = submit.click();
+        
+        HtmlButtonInput button = (HtmlButtonInput) page.getElementById("pageD_redirect_params");
+        page = button.click();
+        
+        pageText = page.asText();
+        assertTrue(pageText.contains("explicit in flow nav 05: params"));
+        assertTrue(pageText.contains("id param: foo"));
+        assertTrue(pageText.contains("baz param: bar"));
+        
+        
+    }
+    
+    
+    private void quickEnterExit() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl);
+        
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("maintain-customer-record");
+        
+        page = button.click();
+        
+        String pageText = page.getBody().asText();
+        
+        assertTrue(pageText.contains("Create customer page"));
+        assertTrue(pageText.contains("Initializer called"));
+        
+        button = (HtmlSubmitInput) page.getElementById("return");
+        
+        page = button.click();
+        
+        pageText = page.getBody().asText();
+        
+        assertTrue(pageText.contains("return page"));
+        assertTrue(pageText.contains("Finalizer called"));
+        
+    }
+}
diff --git a/test/web-profile/flow/multi-page-from-jar/app/nbactions.xml b/test/web-profile/flow/multi-page-from-jar/app/nbactions.xml
new file mode 100644
index 0000000..bc61c7d
--- /dev/null
+++ b/test/web-profile/flow/multi-page-from-jar/app/nbactions.xml
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<actions>
+    <action>
+        <actionName>debug.test.single</actionName>
+        <goals>
+            <goal>test-compile</goal>
+            <goal>surefire:test</goal>
+        </goals>
+        <properties>
+            <test>${packageClassName}</test>
+            <forkMode>once</forkMode>
+            <maven.surefire.debug>-Xdebug -Xrunjdwp:transport=dt_socket,server=n,address=${jpda.address}</maven.surefire.debug>
+            <jpda.listen>true</jpda.listen>
+            <integration.url>http://localhost:8080/test-webprofile-flow-multi_page_from_jar/</integration.url>
+        </properties>
+    </action>
+    <action>
+        <actionName>test.single</actionName>
+        <goals>
+            <goal>test-compile</goal>
+            <goal>surefire:test</goal>
+        </goals>
+        <properties>
+            <integration.url>http://localhost:8080/test-webprofile-flow-multi_page_from_jar/</integration.url>
+            <test>${packageClassName}</test>
+        </properties>
+    </action>
+</actions>
diff --git a/test/web-profile/flow/multi-page-from-jar/app/pom.xml b/test/web-profile/flow/multi-page-from-jar/app/pom.xml
new file mode 100644
index 0000000..564dcf1
--- /dev/null
+++ b/test/web-profile/flow/multi-page-from-jar/app/pom.xml
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.webprofile.flow.multi_page_from_jar_parent</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.webprofile.flow.multi_page_from_jar_parent</groupId>
+    <artifactId>multi_page_from_jar</artifactId>
+    <packaging>war</packaging>
+    <name>Mojarra ${project.version} - Test - Web-Profile - Flow - Multi page parent - Basic With Multi Page Flow Stored In Jar, Tests</name>
+    <build>
+        <finalName>test-webprofile-flow-multi_page_from_jar</finalName>
+    </build>
+    <dependencies>
+      <dependency>
+        <groupId>com.sun.faces.test.webprofile.flow.multi_page_from_jar_parent</groupId>
+        <artifactId>flow_in_jar</artifactId>
+        <version>${project.version}</version>
+      </dependency>
+    </dependencies>
+    <properties>
+        <netbeans.hint.deploy.server>gfv3ee6</netbeans.hint.deploy.server>
+    </properties>
+</project>
diff --git a/test/web-profile/flow/multi-page-from-jar/app/src/main/resources/META-INF/persistence.xml b/test/web-profile/flow/multi-page-from-jar/app/src/main/resources/META-INF/persistence.xml
new file mode 100644
index 0000000..6377368
--- /dev/null
+++ b/test/web-profile/flow/multi-page-from-jar/app/src/main/resources/META-INF/persistence.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<persistence version="2.0"
+   xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+   xsi:schemaLocation="
+        http://java.sun.com/xml/ns/persistence
+        http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
+   <persistence-unit name="primary">
+      <!-- If you are running in a production environment, add a managed 
+         data source, the example data source is just for development and testing! -->
+      <jta-data-source>java:jboss/datasources/acmeDS</jta-data-source>
+      <properties>
+         <!-- Properties for Hibernate -->
+         <property name="hibernate.hbm2ddl.auto" value="create-drop" />
+         <property name="hibernate.show_sql" value="false" />
+      </properties>
+   </persistence-unit>
+</persistence>
\ No newline at end of file
diff --git a/test/web-profile/flow/multi-page-from-jar/app/src/main/webapp/WEB-INF/beans.xml b/test/web-profile/flow/multi-page-from-jar/app/src/main/webapp/WEB-INF/beans.xml
new file mode 100644
index 0000000..c782f57
--- /dev/null
+++ b/test/web-profile/flow/multi-page-from-jar/app/src/main/webapp/WEB-INF/beans.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- This file can be an empty text file (0 bytes) -->
+<!-- We're declaring the schema to save you time if you do have to configure 
+   this in the future -->
+<beans xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+   xsi:schemaLocation="
+        http://java.sun.com/xml/ns/javaee 
+        http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
+</beans>
diff --git a/test/web-profile/flow/multi-page-from-jar/app/src/main/webapp/WEB-INF/glassfish-web.xml b/test/web-profile/flow/multi-page-from-jar/app/src/main/webapp/WEB-INF/glassfish-web.xml
new file mode 100644
index 0000000..bbe32b9
--- /dev/null
+++ b/test/web-profile/flow/multi-page-from-jar/app/src/main/webapp/WEB-INF/glassfish-web.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
+<glassfish-web-app error-url="">
+  <context-root>/test-webprofile-flow-multi_page_from_jar</context-root>
+  <class-loader delegate="true"/>
+  <jsp-config>
+    <property name="keepgenerated" value="true">
+      <description>Keep a copy of the generated servlet class' java code.</description>
+    </property>
+  </jsp-config>
+</glassfish-web-app>
diff --git a/test/web-profile/flow/multi-page-from-jar/app/src/main/webapp/WEB-INF/web.xml b/test/web-profile/flow/multi-page-from-jar/app/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..74e3339
--- /dev/null
+++ b/test/web-profile/flow/multi-page-from-jar/app/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>${webapp.projectStage}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
+        <param-value>${webapp.partialStateSaving}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>${webapp.stateSavingMethod}</param-value>
+    </context-param>
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <welcome-file-list>
+        <welcome-file>faces/index.xhtml</welcome-file>
+    </welcome-file-list>
+</web-app>
diff --git a/test/web-profile/flow/multi-page-from-jar/app/src/main/webapp/index.xhtml b/test/web-profile/flow/multi-page-from-jar/app/src/main/webapp/index.xhtml
new file mode 100644
index 0000000..9fb8d73
--- /dev/null
+++ b/test/web-profile/flow/multi-page-from-jar/app/src/main/webapp/index.xhtml
@@ -0,0 +1,88 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <head>
+        <title>Page with link to flow entry</title>
+    </head>
+    <body>
+        <h1>Page with link to flow entry</h1>
+
+<pre>
+
+With FacesFlows, it is possible to bundle an entrire flow into a jar
+file.  Then, the mere presence of one or more such jar files in the
+application's classpath (usually by virtue of placing the jar in
+WEB-INF/lib) is sufficient to make those flows accessible to the
+application.
+
+Here is the required arrangement of a flow packaged within a jar.
+
+META-INF/beans.xml
+META-INF/flows/{flowName}/{flowName}-flow.xml
+META-INF/flows/{flowName}/{viewNode}.xhtml
+{javaPackagePath}/{javaClassName}.class
+
+Here is an example of the contents of a jar file conforming to the
+preceding packaging requirements.
+
+META-INF/beans.xml
+META-INF/flows/bounded-task-flow/bounded-task-flow-flow.xml
+META-INF/flows/bounded-task-flow/bounded-task-flow.xhtml
+META-INF/flows/bounded-task-flow/next_a.xhtml
+META-INF/flows/bounded-task-flow/next_b.xhtml
+com/sun/faces/test/webprofile/flow/basic/FlowBean.class
+
+</pre>
+
+
+        
+    <h:form prependId="false">
+        <p><h:commandButton id="start" value="start flow on valid entry node" action="bounded-task-flow" /></p>
+        <p><h:commandButton id="stay" value="stay" /></p>
+    </h:form>
+</body>
+</html>
diff --git a/test/web-profile/flow/multi-page-from-jar/app/src/main/webapp/return1.xhtml b/test/web-profile/flow/multi-page-from-jar/app/src/main/webapp/return1.xhtml
new file mode 100644
index 0000000..82df218
--- /dev/null
+++ b/test/web-profile/flow/multi-page-from-jar/app/src/main/webapp/return1.xhtml
@@ -0,0 +1,61 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <head>
+        <title>Page navigated to upon return from bounded-task-flow</title>
+    </head>
+    <body>
+        <h1>Page navigated to upon return from bounded-task-flow</h1>
+        
+    <h:form prependId="false">
+        <p>return page</p>
+        
+        <p>flowScope value, should be empty: #{flowScope.value}</p>
+                
+    </h:form>
+</body>
+</html>
diff --git a/test/web-profile/flow/multi-page-from-jar/app/src/test/java/com/sun/faces/test/webprofile/flow/basic_multi_page_flow_in_jar/BasicMultiPageFlowInJarEntryExitIT.java b/test/web-profile/flow/multi-page-from-jar/app/src/test/java/com/sun/faces/test/webprofile/flow/basic_multi_page_flow_in_jar/BasicMultiPageFlowInJarEntryExitIT.java
new file mode 100644
index 0000000..3581313
--- /dev/null
+++ b/test/web-profile/flow/multi-page-from-jar/app/src/test/java/com/sun/faces/test/webprofile/flow/basic_multi_page_flow_in_jar/BasicMultiPageFlowInJarEntryExitIT.java
@@ -0,0 +1,157 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.webprofile.flow.basic_multi_page_flow_in_jar;
+
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
+import static org.junit.Assert.assertTrue;
+import org.junit.Ignore;
+
+public class BasicMultiPageFlowInJarEntryExitIT {
+    /**
+     * Stores the web URL.
+     */
+    private String webUrl;
+    /**
+     * Stores the web client.
+     */
+    private WebClient webClient;
+
+    /**
+     * Setup before testing.
+     * 
+     * @throws Exception when a serious error occurs.
+     */
+    @BeforeClass
+    public static void setUpClass() throws Exception {
+    }
+
+    /**
+     * Cleanup after testing.
+     * 
+     * @throws Exception when a serious error occurs.
+     */
+    @AfterClass
+    public static void tearDownClass() throws Exception {
+    }
+
+    /**
+     * Setup before testing.
+     */
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    /**
+     * Tear down after testing.
+     */
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testFlowEntryExit() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl);
+
+        assertTrue(page.getBody().asText().indexOf("Page with link to flow entry") != -1);
+
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("start");
+        page = button.click();
+        
+        String pageText = page.getBody().asText();
+        assertTrue(pageText.indexOf("First page in the flow") != -1);
+        assertTrue(pageText.contains("basicFlow"));
+        
+        page = webClient.getPage(webUrl);
+
+        assertTrue(page.getBody().asText().indexOf("Page with link to flow entry") != -1);
+
+        button = (HtmlSubmitInput) page.getElementById("start");
+        page = button.click();
+        
+        pageText = page.getBody().asText();
+        assertTrue(pageText.indexOf("First page in the flow") != -1);
+        assertTrue(pageText.contains("basicFlow"));   
+        
+    }
+    
+    @Test
+    public void testFacesFlowScope() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl);
+        
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("start");
+        page = button.click();
+
+        String pageText = page.getBody().asText();
+        assertTrue(pageText.indexOf("First page in the flow") != -1);
+        assertTrue(pageText.contains("basicFlow"));
+
+        button = (HtmlSubmitInput) page.getElementById("next_a");
+        page = button.click();
+        
+        HtmlTextInput input = (HtmlTextInput) page.getElementById("input");
+        final String flowScopeValue = "Value in faces flow scope";
+        input.setValueAttribute(flowScopeValue);
+        
+        button = (HtmlSubmitInput) page.getElementById("next");
+        page = button.click();
+        
+        assertTrue(page.asText().contains(flowScopeValue));
+        
+        button = (HtmlSubmitInput) page.getElementById("return");
+        page = button.click();
+        
+        assertTrue(page.asText().contains("return page"));
+        assertTrue(!page.asText().contains(flowScopeValue));
+        
+        
+        
+    }
+}
diff --git a/test/web-profile/flow/multi-page-from-jar/jar/pom.xml b/test/web-profile/flow/multi-page-from-jar/jar/pom.xml
new file mode 100644
index 0000000..004b81a
--- /dev/null
+++ b/test/web-profile/flow/multi-page-from-jar/jar/pom.xml
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" 
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.webprofile.flow.multi_page_from_jar_parent</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.webprofile.flow.multi_page_from_jar_parent</groupId>
+    <artifactId>flow_in_jar</artifactId>
+    <packaging>jar</packaging>
+    <name>Mojarra ${project.version} - Test - Web-Profile - Flow - Multi page parent - Basic With Multi Page Flow Stored In Jar, the actual jar</name>
+    <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/test/web-profile/flow/multi-page-from-jar/jar/src/main/java/com/sun/faces/test/webprofile/flow/basic/FlowBean.java b/test/web-profile/flow/multi-page-from-jar/jar/src/main/java/com/sun/faces/test/webprofile/flow/basic/FlowBean.java
new file mode 100644
index 0000000..dc49edb
--- /dev/null
+++ b/test/web-profile/flow/multi-page-from-jar/jar/src/main/java/com/sun/faces/test/webprofile/flow/basic/FlowBean.java
@@ -0,0 +1,63 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.webprofile.flow.basic;
+
+import javax.faces.flow.FlowScoped;
+import java.io.Serializable;
+
+import java.util.logging.Logger;
+import javax.inject.Named;
+
+ at Named
+ at FlowScoped("bounded-task-flow")
+public class FlowBean implements Serializable {
+
+    public FlowBean() {
+        Logger.getAnonymousLogger().info("FlowBean in jar constructed");
+    }
+
+   public String getName() {
+       return "basicFlow";
+   }
+   
+   public String getReturnValue() {
+       return "/return1";
+   }
+}
diff --git a/test/web-profile/flow/multi-page-from-jar/jar/src/main/resources/META-INF/beans.xml b/test/web-profile/flow/multi-page-from-jar/jar/src/main/resources/META-INF/beans.xml
new file mode 100644
index 0000000..c782f57
--- /dev/null
+++ b/test/web-profile/flow/multi-page-from-jar/jar/src/main/resources/META-INF/beans.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- This file can be an empty text file (0 bytes) -->
+<!-- We're declaring the schema to save you time if you do have to configure 
+   this in the future -->
+<beans xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+   xsi:schemaLocation="
+        http://java.sun.com/xml/ns/javaee 
+        http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
+</beans>
diff --git a/test/web-profile/flow/multi-page-from-jar/jar/src/main/resources/META-INF/faces-config.xml b/test/web-profile/flow/multi-page-from-jar/jar/src/main/resources/META-INF/faces-config.xml
new file mode 100644
index 0000000..354868e
--- /dev/null
+++ b/test/web-profile/flow/multi-page-from-jar/jar/src/main/resources/META-INF/faces-config.xml
@@ -0,0 +1,55 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<faces-config version="2.2" xmlns="http://xmlns.jcp.org/xml/ns/javaee"
+   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+   xsi:schemaLocation="
+        http://xmlns.jcp.org/xml/ns/javaee
+        http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd">
+
+    <flow-definition id="bounded-task-flow">
+        <flow-return id="taskFlowReturn1">
+            <from-outcome>#{flowBean.returnValue}</from-outcome>
+        </flow-return>
+        
+    </flow-definition>
+</faces-config>
diff --git a/test/web-profile/flow/multi-page-from-jar/jar/src/main/resources/META-INF/flows/bounded-task-flow/bounded-task-flow.xhtml b/test/web-profile/flow/multi-page-from-jar/jar/src/main/resources/META-INF/flows/bounded-task-flow/bounded-task-flow.xhtml
new file mode 100644
index 0000000..99c5973
--- /dev/null
+++ b/test/web-profile/flow/multi-page-from-jar/jar/src/main/resources/META-INF/flows/bounded-task-flow/bounded-task-flow.xhtml
@@ -0,0 +1,64 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    
+    <head>
+        <title>First page in the flow</title>
+    </head>
+    <body>
+    <h:form prependId="false">
+        <p>First page in the flow</p>
+        <p>Flow bean name: #{flowBean.name}</p>
+        
+        <p><h:commandButton id="index" value="home" action="/index" /></p>
+        <p><h:commandButton id="next_a" value="next" action="next_a" /></p>
+        <p><h:commandButton id="nonFlow" value="nonFlow" action="/nonFlow" /></p>
+        
+    </h:form>
+    </body>
+</html>
diff --git a/test/web-profile/flow/multi-page-from-jar/jar/src/main/resources/META-INF/flows/bounded-task-flow/next_a.xhtml b/test/web-profile/flow/multi-page-from-jar/jar/src/main/resources/META-INF/flows/bounded-task-flow/next_a.xhtml
new file mode 100644
index 0000000..4a1e156
--- /dev/null
+++ b/test/web-profile/flow/multi-page-from-jar/jar/src/main/resources/META-INF/flows/bounded-task-flow/next_a.xhtml
@@ -0,0 +1,65 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    
+    <head>
+        <title>Second page in the flow</title>
+    </head>
+    <body>
+    <h:form prependId="false">
+        <p>Second page in the flow</p>
+        <p>Flow bean name: #{flowBean.name}</p>
+        
+        <p>value: <h:inputText id="input" value="#{flowScope.value}" /></p>
+        
+        <p><h:commandButton id="start" value="back" action="bounded-task-flow" /></p>
+        <p><h:commandButton id="next" value="next" action="next_b" /></p>
+        
+    </h:form>
+    </body>
+</html>
diff --git a/test/web-profile/flow/multi-page-from-jar/jar/src/main/resources/META-INF/flows/bounded-task-flow/next_b.xhtml b/test/web-profile/flow/multi-page-from-jar/jar/src/main/resources/META-INF/flows/bounded-task-flow/next_b.xhtml
new file mode 100644
index 0000000..ce02e18
--- /dev/null
+++ b/test/web-profile/flow/multi-page-from-jar/jar/src/main/resources/META-INF/flows/bounded-task-flow/next_b.xhtml
@@ -0,0 +1,66 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    
+    <head>
+        <title>Last page in the flow</title>
+    </head>
+    <body>
+        
+        <p>Last page in the flow</p>
+        <p>Flow bean name: #{flowBean.name}</p>
+        
+        <p>value: #{flowScope.value}</p>
+        
+    <h:form prependId="false">
+        <p><h:commandButton id="back" value="back" action="next_a" /></p>
+        <p><h:commandButton id="return" value="return" action="taskFlowReturn1" /></p>
+        
+    </h:form>
+    </body>
+</html>
diff --git a/test/web-profile/flow/multi-page-from-jar/pom.xml b/test/web-profile/flow/multi-page-from-jar/pom.xml
new file mode 100644
index 0000000..bbce911
--- /dev/null
+++ b/test/web-profile/flow/multi-page-from-jar/pom.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.webprofile.flow</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.webprofile.flow.multi_page_from_jar_parent</groupId>
+    <artifactId>pom</artifactId>
+    <packaging>pom</packaging>
+    <name>Mojarra ${project.version} - Test - Web-Profile - Flow - Multi page parent</name>
+    <modules>
+        <module>jar</module>
+        <module>app</module>
+    </modules>
+    <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/test/web-profile/flow/nested_flows/nbactions.xml b/test/web-profile/flow/nested_flows/nbactions.xml
new file mode 100644
index 0000000..6a3deb7
--- /dev/null
+++ b/test/web-profile/flow/nested_flows/nbactions.xml
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<actions>
+    <action>
+        <actionName>debug.test.single</actionName>
+        <goals>
+            <goal>test-compile</goal>
+            <goal>surefire:test</goal>
+        </goals>
+        <properties>
+            <test>${packageClassName}</test>
+            <forkMode>once</forkMode>
+            <maven.surefire.debug>-Xdebug -Xrunjdwp:transport=dt_socket,server=n,address=${jpda.address}</maven.surefire.debug>
+            <jpda.listen>true</jpda.listen>
+            <integration.url>http://localhost:8080/test-webprofile-flow-nested_flows/</integration.url>
+        </properties>
+    </action>
+    <action>
+        <actionName>test.single</actionName>
+        <goals>
+            <goal>test-compile</goal>
+            <goal>surefire:test</goal>
+        </goals>
+        <properties>
+            <integration.url>http://localhost:8080/test-webprofile-flow-nested_flows/</integration.url>
+            <test>${packageClassName}</test>
+        </properties>
+    </action>
+</actions>
diff --git a/test/web-profile/flow/nested_flows/pom.xml b/test/web-profile/flow/nested_flows/pom.xml
new file mode 100644
index 0000000..e86b11a
--- /dev/null
+++ b/test/web-profile/flow/nested_flows/pom.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.webprofile.flow</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.webprofile.flow</groupId>
+    <artifactId>nested_flows</artifactId>
+    <packaging>war</packaging>
+    <name>Mojarra ${project.version} - Test - Web-Profile - Flow - nested_flows</name>
+    <build>
+        <finalName>test-webprofile-flow-nested_flows</finalName>
+    </build>
+    <properties>
+        <netbeans.hint.deploy.server>gfv3ee6</netbeans.hint.deploy.server>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/test/web-profile/flow/nested_flows/src/main/webapp/WEB-INF/beans.xml b/test/web-profile/flow/nested_flows/src/main/webapp/WEB-INF/beans.xml
new file mode 100644
index 0000000..c782f57
--- /dev/null
+++ b/test/web-profile/flow/nested_flows/src/main/webapp/WEB-INF/beans.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- This file can be an empty text file (0 bytes) -->
+<!-- We're declaring the schema to save you time if you do have to configure 
+   this in the future -->
+<beans xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+   xsi:schemaLocation="
+        http://java.sun.com/xml/ns/javaee 
+        http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
+</beans>
diff --git a/test/web-profile/flow/nested_flows/src/main/webapp/WEB-INF/faces-config.xml b/test/web-profile/flow/nested_flows/src/main/webapp/WEB-INF/faces-config.xml
new file mode 100644
index 0000000..7ea4e20
--- /dev/null
+++ b/test/web-profile/flow/nested_flows/src/main/webapp/WEB-INF/faces-config.xml
@@ -0,0 +1,43 @@
+<?xml version='1.0' encoding='UTF-8'?>
+
+<!-- =========== FULL CONFIGURATION FILE ================================== -->
+
+<faces-config version="2.2"
+    xmlns="http://xmlns.jcp.org/xml/ns/javaee" 
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd">
+    <flow-definition id="flow3">
+        <flow-return id="exit3">
+            <navigation-case>
+                <from-outcome>exit2</from-outcome>
+            </navigation-case>
+        </flow-return>
+    </flow-definition>
+    <flow-definition id="flow2">
+      <flow-call id="call_flow3">
+        <flow-reference>
+          <flow-id>flow3</flow-id>
+        </flow-reference>
+      </flow-call>
+      <flow-return id="exit2">
+        <navigation-case>
+          <from-outcome>exit1</from-outcome>
+        </navigation-case>
+      </flow-return>
+    </flow-definition>
+    <flow-definition id="flow1">
+      <flow-call id="call_flow2">
+        <flow-reference>
+          <flow-id>flow2</flow-id>
+        </flow-reference>
+      </flow-call>
+      <navigation-rule>
+        <from-view-id>*</from-view-id>
+          <navigation-case>
+            <from-outcome>exit1</from-outcome>
+            <to-view-id>/flow1/return2.xhtml</to-view-id>
+          </navigation-case>
+        </navigation-rule>
+    </flow-definition>
+
+</faces-config>
diff --git a/test/web-profile/flow/nested_flows/src/main/webapp/WEB-INF/glassfish-web.xml b/test/web-profile/flow/nested_flows/src/main/webapp/WEB-INF/glassfish-web.xml
new file mode 100644
index 0000000..e507ae1
--- /dev/null
+++ b/test/web-profile/flow/nested_flows/src/main/webapp/WEB-INF/glassfish-web.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
+<glassfish-web-app error-url="">
+  <context-root>/test-webprofile-flow-nested_flows</context-root>
+  <class-loader delegate="true"/>
+  <jsp-config>
+    <property name="keepgenerated" value="true">
+      <description>Keep a copy of the generated servlet class' java code.</description>
+    </property>
+  </jsp-config>
+</glassfish-web-app>
diff --git a/test/web-profile/flow/nested_flows/src/main/webapp/WEB-INF/web.xml b/test/web-profile/flow/nested_flows/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..74e3339
--- /dev/null
+++ b/test/web-profile/flow/nested_flows/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>${webapp.projectStage}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
+        <param-value>${webapp.partialStateSaving}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>${webapp.stateSavingMethod}</param-value>
+    </context-param>
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <welcome-file-list>
+        <welcome-file>faces/index.xhtml</welcome-file>
+    </welcome-file-list>
+</web-app>
diff --git a/test/web-profile/flow/nested_flows/src/main/webapp/flow1/flow1.xhtml b/test/web-profile/flow/nested_flows/src/main/webapp/flow1/flow1.xhtml
new file mode 100644
index 0000000..b51680c
--- /dev/null
+++ b/test/web-profile/flow/nested_flows/src/main/webapp/flow1/flow1.xhtml
@@ -0,0 +1,16 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://xmlns.jcp.org/jsf/html">
+    <h:head>
+        <title>flow1</title>
+    </h:head>
+    <body bgcolor="red">
+        
+        <h:form prependId="false">
+            <p><h:commandButton value="flow2" id="flow2" action="call_flow2" /></p>
+        </h:form>
+
+    </body>
+</html>
+
diff --git a/test/web-profile/flow/nested_flows/src/main/webapp/flow1/return2.xhtml b/test/web-profile/flow/nested_flows/src/main/webapp/flow1/return2.xhtml
new file mode 100644
index 0000000..f5171e9
--- /dev/null
+++ b/test/web-profile/flow/nested_flows/src/main/webapp/flow1/return2.xhtml
@@ -0,0 +1,13 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://xmlns.jcp.org/jsf/html">
+    <h:head>
+        <title>flow1</title>
+    </h:head>
+    <body bgcolor="red">
+        
+        <p>The return page</p>
+    </body>
+</html>
+
diff --git a/test/web-profile/flow/nested_flows/src/main/webapp/flow2/flow2.xhtml b/test/web-profile/flow/nested_flows/src/main/webapp/flow2/flow2.xhtml
new file mode 100644
index 0000000..bdbfce6
--- /dev/null
+++ b/test/web-profile/flow/nested_flows/src/main/webapp/flow2/flow2.xhtml
@@ -0,0 +1,16 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://xmlns.jcp.org/jsf/html">
+    <h:head>
+        <title>flow2</title>
+    </h:head>
+    <body bgcolor="blue">
+        
+        <h:form prependId="false">
+            <p><h:commandButton value="flow3" id="flow3" action="call_flow3" /></p>
+        </h:form>
+
+    </body>
+</html>
+
diff --git a/test/web-profile/flow/nested_flows/src/main/webapp/flow3/flow3.xhtml b/test/web-profile/flow/nested_flows/src/main/webapp/flow3/flow3.xhtml
new file mode 100644
index 0000000..ca0c585
--- /dev/null
+++ b/test/web-profile/flow/nested_flows/src/main/webapp/flow3/flow3.xhtml
@@ -0,0 +1,16 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://xmlns.jcp.org/jsf/html">
+    <h:head>
+        <title>flow3</title>
+    </h:head>
+    <body bgcolor="green">
+        
+        <h:form prependId="false">
+            <p><h:commandButton value="exit3" id="exit3" action="exit3" /></p>
+        </h:form>
+
+    </body>
+</html>
+
diff --git a/test/web-profile/flow/nested_flows/src/main/webapp/index.xhtml b/test/web-profile/flow/nested_flows/src/main/webapp/index.xhtml
new file mode 100644
index 0000000..935f5aa
--- /dev/null
+++ b/test/web-profile/flow/nested_flows/src/main/webapp/index.xhtml
@@ -0,0 +1,16 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://xmlns.jcp.org/jsf/html">
+    <h:head>
+        <title>Nested Flows</title>
+    </h:head>
+    <h:body>
+        <p>Nested Flow Test</p>
+        <h:form prependId="false">
+            <p><h:commandButton value="flow1" id="flow1" action="flow1" /></p>
+        </h:form>
+        
+    </h:body>
+</html>
+
diff --git a/test/web-profile/flow/nested_flows/src/test/java/com/sun/faces/test/webprofile/flow/nested_flows/NestedFlowsIT.java b/test/web-profile/flow/nested_flows/src/test/java/com/sun/faces/test/webprofile/flow/nested_flows/NestedFlowsIT.java
new file mode 100644
index 0000000..6e3edd5
--- /dev/null
+++ b/test/web-profile/flow/nested_flows/src/test/java/com/sun/faces/test/webprofile/flow/nested_flows/NestedFlowsIT.java
@@ -0,0 +1,120 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.webprofile.flow.nested_flows;
+
+import com.gargoylesoftware.htmlunit.html.HtmlInput;
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import static org.junit.Assert.assertTrue;
+
+public class NestedFlowsIT {
+    /**
+     * Stores the web URL.
+     */
+    private String webUrl;
+    /**
+     * Stores the web client.
+     */
+    private WebClient webClient;
+
+    /**
+     * Setup before testing.
+     * 
+     * @throws Exception when a serious error occurs.
+     */
+    @BeforeClass
+    public static void setUpClass() throws Exception {
+    }
+
+    /**
+     * Cleanup after testing.
+     * 
+     * @throws Exception when a serious error occurs.
+     */
+    @AfterClass
+    public static void tearDownClass() throws Exception {
+    }
+
+    /**
+     * Setup before testing.
+     */
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    /**
+     * Tear down after testing.
+     */
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testFacesFlowCallPostback() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl);
+
+        assertTrue(page.getBody().asText().indexOf("Nested Flow Test") != -1);
+        
+        HtmlInput button = (HtmlInput) page.getElementById("flow1");
+        page = button.click();
+
+        button = (HtmlInput) page.getElementById("flow2");
+        page = button.click();
+        
+        button = (HtmlInput) page.getElementById("flow3");
+        page = button.click();
+
+        button = (HtmlInput) page.getElementById("exit3");
+        page = button.click();
+        
+        String pageText = page.asText();
+        assertTrue(pageText.contains("The return page"));
+        
+        
+    }
+}
diff --git a/test/web-profile/flow/parameter_faces_flow_call/nbactions.xml b/test/web-profile/flow/parameter_faces_flow_call/nbactions.xml
new file mode 100644
index 0000000..05a9a59
--- /dev/null
+++ b/test/web-profile/flow/parameter_faces_flow_call/nbactions.xml
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<actions>
+    <action>
+        <actionName>debug.test.single</actionName>
+        <goals>
+            <goal>test-compile</goal>
+            <goal>surefire:test</goal>
+        </goals>
+        <properties>
+            <test>${packageClassName}</test>
+            <forkMode>once</forkMode>
+            <maven.surefire.debug>-Xdebug -Xrunjdwp:transport=dt_socket,server=n,address=${jpda.address}</maven.surefire.debug>
+            <jpda.listen>true</jpda.listen>
+            <integration.url>http://localhost:8080/test-webprofile-flow-parameter_faces_flow_call/</integration.url>
+        </properties>
+    </action>
+    <action>
+        <actionName>test.single</actionName>
+        <goals>
+            <goal>test-compile</goal>
+            <goal>surefire:test</goal>
+        </goals>
+        <properties>
+            <integration.url>http://localhost:8080/test-webprofile-flow-parameter_faces_flow_call/</integration.url>
+            <test>${packageClassName}</test>
+        </properties>
+    </action>
+</actions>
diff --git a/test/web-profile/flow/parameter_faces_flow_call/pom.xml b/test/web-profile/flow/parameter_faces_flow_call/pom.xml
new file mode 100644
index 0000000..6b4c59e
--- /dev/null
+++ b/test/web-profile/flow/parameter_faces_flow_call/pom.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.webprofile.flow</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.webprofile.flow</groupId>
+    <artifactId>parameter_faces_flow_call</artifactId>
+    <packaging>war</packaging>
+    <name>Mojarra ${project.version} - Test - Web-Profile - Flow - parameter_faces_flow_call</name>
+    <build>
+        <finalName>test-webprofile-flow-parameter_faces_flow_call</finalName>
+    </build>
+    <properties>
+        <netbeans.hint.deploy.server>gfv3ee6</netbeans.hint.deploy.server>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/test/web-profile/flow/parameter_faces_flow_call/src/main/java/com/sun/faces/test/webprofile/flow/parameter_faces_flow_call/FlowA.java b/test/web-profile/flow/parameter_faces_flow_call/src/main/java/com/sun/faces/test/webprofile/flow/parameter_faces_flow_call/FlowA.java
new file mode 100644
index 0000000..ebb1a7f
--- /dev/null
+++ b/test/web-profile/flow/parameter_faces_flow_call/src/main/java/com/sun/faces/test/webprofile/flow/parameter_faces_flow_call/FlowA.java
@@ -0,0 +1,72 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.test.webprofile.flow.parameter_faces_flow_call;
+
+import java.io.Serializable;
+import javax.enterprise.inject.Produces;
+import javax.faces.flow.Flow;
+import javax.faces.flow.builder.FlowBuilder;
+import javax.faces.flow.builder.FlowDefinition;
+import javax.faces.flow.builder.FlowBuilderParameter;
+
+
+public class FlowA implements Serializable {
+    
+    private static final long serialVersionUID = -7623501087369765218L;
+
+    public FlowA() {
+    }
+    
+    @Produces @FlowDefinition
+    public Flow buildMyFlow(@FlowBuilderParameter FlowBuilder flowBuilder) {
+        String flowId = "flow-a";
+        flowBuilder.id("unique", flowId);
+        flowBuilder.returnNode("taskFlowReturn1").
+                fromOutcome("#{flow_a_Bean.returnValue}");
+        flowBuilder.inboundParameter("param1FromFlowB", "#{flowScope.param1Value}");
+        flowBuilder.inboundParameter("param2FromFlowB", "#{flowScope.param2Value}");
+        flowBuilder.flowCallNode("callB").flowReference("", "flow-b").
+                outboundParameter("param1FromFlowA", "param1Value").
+                outboundParameter("param2FromFlowA", "param2Value");
+        
+        return flowBuilder.getFlow();
+    }
+}
diff --git a/test/web-profile/flow/parameter_faces_flow_call/src/main/java/com/sun/faces/test/webprofile/flow/parameter_faces_flow_call/Flow_a_Bean.java b/test/web-profile/flow/parameter_faces_flow_call/src/main/java/com/sun/faces/test/webprofile/flow/parameter_faces_flow_call/Flow_a_Bean.java
new file mode 100644
index 0000000..571516b
--- /dev/null
+++ b/test/web-profile/flow/parameter_faces_flow_call/src/main/java/com/sun/faces/test/webprofile/flow/parameter_faces_flow_call/Flow_a_Bean.java
@@ -0,0 +1,58 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.webprofile.flow.parameter_faces_flow_call;
+
+import javax.faces.flow.FlowScoped;
+import java.io.Serializable;
+
+import javax.inject.Named;
+
+ at Named
+ at FlowScoped(definingDocumentId="unique", value="flow-a")
+public class Flow_a_Bean implements Serializable {
+
+   public String getName() {
+       return "Flow_a_Bean";
+   }
+   
+   public String getReturnValue() {
+       return "/return1";
+   }
+}
diff --git a/test/web-profile/flow/parameter_faces_flow_call/src/main/java/com/sun/faces/test/webprofile/flow/parameter_faces_flow_call/Flow_b_Bean.java b/test/web-profile/flow/parameter_faces_flow_call/src/main/java/com/sun/faces/test/webprofile/flow/parameter_faces_flow_call/Flow_b_Bean.java
new file mode 100644
index 0000000..15cec5e
--- /dev/null
+++ b/test/web-profile/flow/parameter_faces_flow_call/src/main/java/com/sun/faces/test/webprofile/flow/parameter_faces_flow_call/Flow_b_Bean.java
@@ -0,0 +1,58 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.webprofile.flow.parameter_faces_flow_call;
+
+import javax.faces.flow.FlowScoped;
+import java.io.Serializable;
+
+import javax.inject.Named;
+
+ at Named
+ at FlowScoped("flow-b")
+public class Flow_b_Bean implements Serializable {
+
+   public String getName() {
+       return "Flow_B_Bean";
+   }
+   
+   public String getReturnValue() {
+       return "/return1";
+   }
+}
diff --git a/test/web-profile/flow/parameter_faces_flow_call/src/main/webapp/WEB-INF/beans.xml b/test/web-profile/flow/parameter_faces_flow_call/src/main/webapp/WEB-INF/beans.xml
new file mode 100644
index 0000000..c782f57
--- /dev/null
+++ b/test/web-profile/flow/parameter_faces_flow_call/src/main/webapp/WEB-INF/beans.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- This file can be an empty text file (0 bytes) -->
+<!-- We're declaring the schema to save you time if you do have to configure 
+   this in the future -->
+<beans xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+   xsi:schemaLocation="
+        http://java.sun.com/xml/ns/javaee 
+        http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
+</beans>
diff --git a/test/web-profile/flow/parameter_faces_flow_call/src/main/webapp/WEB-INF/glassfish-web.xml b/test/web-profile/flow/parameter_faces_flow_call/src/main/webapp/WEB-INF/glassfish-web.xml
new file mode 100644
index 0000000..3830708
--- /dev/null
+++ b/test/web-profile/flow/parameter_faces_flow_call/src/main/webapp/WEB-INF/glassfish-web.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
+<glassfish-web-app error-url="">
+  <context-root>/test-webprofile-flow-parameter_faces_flow_call</context-root>
+  <class-loader delegate="true"/>
+  <jsp-config>
+    <property name="keepgenerated" value="true">
+      <description>Keep a copy of the generated servlet class' java code.</description>
+    </property>
+  </jsp-config>
+</glassfish-web-app>
diff --git a/test/web-profile/flow/parameter_faces_flow_call/src/main/webapp/WEB-INF/web.xml b/test/web-profile/flow/parameter_faces_flow_call/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..74e3339
--- /dev/null
+++ b/test/web-profile/flow/parameter_faces_flow_call/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>${webapp.projectStage}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
+        <param-value>${webapp.partialStateSaving}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>${webapp.stateSavingMethod}</param-value>
+    </context-param>
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <welcome-file-list>
+        <welcome-file>faces/index.xhtml</welcome-file>
+    </welcome-file-list>
+</web-app>
diff --git a/test/web-profile/flow/parameter_faces_flow_call/src/main/webapp/flow-a-no-inbound-no-outbound/flow-a-no-inbound-no-outbound-flow.xml b/test/web-profile/flow/parameter_faces_flow_call/src/main/webapp/flow-a-no-inbound-no-outbound/flow-a-no-inbound-no-outbound-flow.xml
new file mode 100644
index 0000000..320c0e7
--- /dev/null
+++ b/test/web-profile/flow/parameter_faces_flow_call/src/main/webapp/flow-a-no-inbound-no-outbound/flow-a-no-inbound-no-outbound-flow.xml
@@ -0,0 +1,61 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<faces-config version="2.2" xmlns="http://xmlns.jcp.org/xml/ns/javaee"
+   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+   xsi:schemaLocation="
+        http://xmlns.jcp.org/xml/ns/javaee
+        http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd">
+
+    <flow-definition id="flow-a-no-inbound-no-outbound">
+        
+            <flow-call id="callB">
+                <flow-reference>
+                    <flow-id>flow-b-no-inbound-no-outbound</flow-id>
+                </flow-reference>
+            </flow-call>
+                        
+        </flow-definition>
+
+</faces-config>
+
diff --git a/test/web-profile/flow/parameter_faces_flow_call/src/main/webapp/flow-a-no-inbound-no-outbound/flow-a-no-inbound-no-outbound.xhtml b/test/web-profile/flow/parameter_faces_flow_call/src/main/webapp/flow-a-no-inbound-no-outbound/flow-a-no-inbound-no-outbound.xhtml
new file mode 100644
index 0000000..2ca9fe0
--- /dev/null
+++ b/test/web-profile/flow/parameter_faces_flow_call/src/main/webapp/flow-a-no-inbound-no-outbound/flow-a-no-inbound-no-outbound.xhtml
@@ -0,0 +1,62 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    
+    <head>
+        <title>flow-a-no-inbound-no-outbound</title>
+    </head>
+    <body bgcolor="red">
+    <h:form prependId="false">
+        <p>flow-a-no-inbound-no-outbound</p>
+        
+        <p><h:commandButton id="callB" value="callB" 
+                            action="callB" /></p>
+        
+    </h:form>
+    </body>
+</html>
diff --git a/test/web-profile/flow/parameter_faces_flow_call/src/main/webapp/flow-a-no-inbound-yes-outbound/flow-a-no-inbound-yes-outbound-flow.xml b/test/web-profile/flow/parameter_faces_flow_call/src/main/webapp/flow-a-no-inbound-yes-outbound/flow-a-no-inbound-yes-outbound-flow.xml
new file mode 100644
index 0000000..94757a8
--- /dev/null
+++ b/test/web-profile/flow/parameter_faces_flow_call/src/main/webapp/flow-a-no-inbound-yes-outbound/flow-a-no-inbound-yes-outbound-flow.xml
@@ -0,0 +1,66 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<faces-config version="2.2" xmlns="http://xmlns.jcp.org/xml/ns/javaee"
+   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+   xsi:schemaLocation="
+        http://xmlns.jcp.org/xml/ns/javaee
+        http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd">
+
+    <flow-definition id="flow-a-no-inbound-yes-outbound">
+        
+            <flow-call id="callB">
+                <flow-reference>
+                    <flow-id>flow-b-no-inbound-no-outbound</flow-id>
+                </flow-reference>
+                <outbound-parameter>
+                    <name>param1FromFlowA</name>
+                    <value>param1Value</value>
+                </outbound-parameter>
+                
+            </flow-call>
+                        
+        </flow-definition>
+
+</faces-config>
+
diff --git a/test/web-profile/flow/parameter_faces_flow_call/src/main/webapp/flow-a-no-inbound-yes-outbound/flow-a-no-inbound-yes-outbound.xhtml b/test/web-profile/flow/parameter_faces_flow_call/src/main/webapp/flow-a-no-inbound-yes-outbound/flow-a-no-inbound-yes-outbound.xhtml
new file mode 100644
index 0000000..78df69b
--- /dev/null
+++ b/test/web-profile/flow/parameter_faces_flow_call/src/main/webapp/flow-a-no-inbound-yes-outbound/flow-a-no-inbound-yes-outbound.xhtml
@@ -0,0 +1,62 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    
+    <head>
+        <title>flow-a-no-inbound-yes-outbound</title>
+    </head>
+    <body bgcolor="red">
+    <h:form prependId="false">
+        <p>flow-a-no-inbound-yes-outbound</p>
+        
+        <p><h:commandButton id="callB" value="callB" 
+                            action="callB" /></p>
+        
+    </h:form>
+    </body>
+</html>
diff --git a/test/web-profile/flow/parameter_faces_flow_call/src/main/webapp/flow-a-yes-inbound-no-outbound/flow-a-yes-inbound-no-outbound-flow.xml b/test/web-profile/flow/parameter_faces_flow_call/src/main/webapp/flow-a-yes-inbound-no-outbound/flow-a-yes-inbound-no-outbound-flow.xml
new file mode 100644
index 0000000..9df1da5
--- /dev/null
+++ b/test/web-profile/flow/parameter_faces_flow_call/src/main/webapp/flow-a-yes-inbound-no-outbound/flow-a-yes-inbound-no-outbound-flow.xml
@@ -0,0 +1,66 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<faces-config version="2.2" xmlns="http://xmlns.jcp.org/xml/ns/javaee"
+   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+   xsi:schemaLocation="
+        http://xmlns.jcp.org/xml/ns/javaee
+        http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd">
+
+    <flow-definition id="flow-a-yes-inbound-no-outbound">
+    
+            <inbound-parameter>
+                <name>param1FromFlowA</name>
+                <value>#{flowScope.param1Value}</value>
+            </inbound-parameter>
+        
+            <flow-call id="callB-no-inbound-no-outbound">
+                <flow-reference>
+                    <flow-id>flow-b-no-inbound-no-outbound</flow-id>
+                </flow-reference>
+            </flow-call>
+                        
+        </flow-definition>
+
+</faces-config>
+
diff --git a/test/web-profile/flow/parameter_faces_flow_call/src/main/webapp/flow-a-yes-inbound-no-outbound/flow-a-yes-inbound-no-outbound.xhtml b/test/web-profile/flow/parameter_faces_flow_call/src/main/webapp/flow-a-yes-inbound-no-outbound/flow-a-yes-inbound-no-outbound.xhtml
new file mode 100644
index 0000000..88f793b
--- /dev/null
+++ b/test/web-profile/flow/parameter_faces_flow_call/src/main/webapp/flow-a-yes-inbound-no-outbound/flow-a-yes-inbound-no-outbound.xhtml
@@ -0,0 +1,62 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    
+    <head>
+        <title>flow-a-yes-inbound-no-outbound</title>
+    </head>
+    <body bgcolor="red">
+    <h:form prependId="false">
+        <p>flow-a-yes-inbound-no-outbound</p>
+        
+        <p><h:commandButton id="callB" value="callB" 
+                            action="callB-no-inbound-no-outbound" /></p>
+        
+    </h:form>
+    </body>
+</html>
diff --git a/test/web-profile/flow/parameter_faces_flow_call/src/main/webapp/flow-a/flow-a.xhtml b/test/web-profile/flow/parameter_faces_flow_call/src/main/webapp/flow-a/flow-a.xhtml
new file mode 100644
index 0000000..c468641
--- /dev/null
+++ b/test/web-profile/flow/parameter_faces_flow_call/src/main/webapp/flow-a/flow-a.xhtml
@@ -0,0 +1,67 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    
+    <head>
+        <title>First page in the flow</title>
+    </head>
+    <body bgcolor="red">
+    <h:form prependId="false">
+        <p>First page in the flow</p>
+        <p>Flow bean name: #{flow_a_Bean.name}</p>
+
+        <p><span id="param1FromFlowB">#{flowScope.param1Value}</span></p>
+        <p><span id="param2FromFlowB">#{flowScope.param2Value}</span></p>
+
+        <p>Has a flow: #{null != facesContext.application.flowHandler.currentFlow}.</p>
+        
+        <p><h:commandButton id="next_a" value="next" action="next_a" /></p>
+        
+    </h:form>
+    </body>
+</html>
diff --git a/test/web-profile/flow/parameter_faces_flow_call/src/main/webapp/flow-a/next_a.xhtml b/test/web-profile/flow/parameter_faces_flow_call/src/main/webapp/flow-a/next_a.xhtml
new file mode 100644
index 0000000..912e548
--- /dev/null
+++ b/test/web-profile/flow/parameter_faces_flow_call/src/main/webapp/flow-a/next_a.xhtml
@@ -0,0 +1,65 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    
+    <head>
+        <title>Second page in the flow</title>
+    </head>
+    <body bgcolor="red">
+    <h:form prependId="false">
+        <p>Second page in the flow</p>
+        <p>Flow bean name: #{flow_a_Bean.name}</p>
+        
+        <p>value: <h:inputText id="input" value="#{flowScope.value}" /></p>
+        
+        <p><h:commandButton id="start" value="back" action="flow-a" /></p>
+        <p><h:commandButton id="next" value="next" action="next_b" /></p>
+        
+    </h:form>
+    </body>
+</html>
diff --git a/test/web-profile/flow/parameter_faces_flow_call/src/main/webapp/flow-a/next_b.xhtml b/test/web-profile/flow/parameter_faces_flow_call/src/main/webapp/flow-a/next_b.xhtml
new file mode 100644
index 0000000..ca98931
--- /dev/null
+++ b/test/web-profile/flow/parameter_faces_flow_call/src/main/webapp/flow-a/next_b.xhtml
@@ -0,0 +1,69 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    
+    <head>
+        <title>Last page in the flow</title>
+    </head>
+    <body bgcolor="red">
+        
+        <p>Last page in the flow</p>
+        <p>Flow bean name: #{flow_a_Bean.name}</p>
+        
+        <p>value: #{flowScope.value}</p>
+        
+    <h:form prependId="false">
+        <p><h:commandButton id="back" value="back" action="next_a" /></p>
+        <p><h:commandButton id="return" value="return" action="taskFlowReturn1" /></p>
+        <p><h:button id="return_GET" value="return via GET" outcome="taskFlowReturn1" /></p>
+        <p><h:commandButton id="callB" value="callB" action="callB" /></p>
+        <p><h:button id="callB_GET" value="callB via GET" outcome="callB" /></p>
+        
+    </h:form>
+    </body>
+</html>
diff --git a/test/web-profile/flow/parameter_faces_flow_call/src/main/webapp/flow-b-no-inbound-no-outbound/flow-b-no-inbound-no-outbound-flow.xml b/test/web-profile/flow/parameter_faces_flow_call/src/main/webapp/flow-b-no-inbound-no-outbound/flow-b-no-inbound-no-outbound-flow.xml
new file mode 100644
index 0000000..b2d9d74
--- /dev/null
+++ b/test/web-profile/flow/parameter_faces_flow_call/src/main/webapp/flow-b-no-inbound-no-outbound/flow-b-no-inbound-no-outbound-flow.xml
@@ -0,0 +1,67 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<faces-config version="2.2" xmlns="http://xmlns.jcp.org/xml/ns/javaee"
+   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+   xsi:schemaLocation="
+        http://xmlns.jcp.org/xml/ns/javaee
+        http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd">
+
+    <flow-definition id="flow-b-no-inbound-no-outbound">
+        
+            <flow-call id="callA">
+                <flow-reference>
+                    <flow-id>flow-a-no-inbound-no-outbound</flow-id>
+                </flow-reference>
+            </flow-call>
+                        
+            <flow-call id="callA-yes-inbound-no-outbound">
+                <flow-reference>
+                    <flow-id>flow-a-yes-inbound-no-outbound</flow-id>
+                </flow-reference>
+            </flow-call>
+            
+        </flow-definition>
+
+</faces-config>
+
diff --git a/test/web-profile/flow/parameter_faces_flow_call/src/main/webapp/flow-b-no-inbound-no-outbound/flow-b-no-inbound-no-outbound.xhtml b/test/web-profile/flow/parameter_faces_flow_call/src/main/webapp/flow-b-no-inbound-no-outbound/flow-b-no-inbound-no-outbound.xhtml
new file mode 100644
index 0000000..6295aef
--- /dev/null
+++ b/test/web-profile/flow/parameter_faces_flow_call/src/main/webapp/flow-b-no-inbound-no-outbound/flow-b-no-inbound-no-outbound.xhtml
@@ -0,0 +1,65 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    
+    <head>
+        <title>flow-b-no-inbound-no-outbound</title>
+    </head>
+    <body bgcolor="blue">
+    <h:form prependId="false">
+        <p>flow-b-no-inbound-no-outbound</p>
+        
+        <p><h:commandButton id="callA" value="callA" 
+                            action="callA" /></p>
+        
+        <p><h:commandButton id="callA-yes-inbound-no-outbound" value="callA-yes-inbound-no-outbound" 
+                            action="callA-yes-inbound-no-outbound" /></p>
+        
+    </h:form>
+    </body>
+</html>
diff --git a/test/web-profile/flow/parameter_faces_flow_call/src/main/webapp/flow-b/flow-b-flow.xml b/test/web-profile/flow/parameter_faces_flow_call/src/main/webapp/flow-b/flow-b-flow.xml
new file mode 100644
index 0000000..6491dd6
--- /dev/null
+++ b/test/web-profile/flow/parameter_faces_flow_call/src/main/webapp/flow-b/flow-b-flow.xml
@@ -0,0 +1,83 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<faces-config version="2.2" xmlns="http://xmlns.jcp.org/xml/ns/javaee"
+   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+   xsi:schemaLocation="
+        http://xmlns.jcp.org/xml/ns/javaee
+        http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd">
+
+    <flow-definition id="flow-b">
+        
+            <flow-return id="taskFlowReturn1">
+                <from-outcome>#{flow_b_Bean.returnValue}</from-outcome>
+            </flow-return>
+
+            <inbound-parameter>
+                <name>param1FromFlowA</name>
+                <value>#{flowScope.param1Value}</value>
+            </inbound-parameter>
+            <inbound-parameter>
+                <name>param2FromFlowA</name>
+                <value>#{flowScope.param2Value}</value>
+            </inbound-parameter>
+            
+            <flow-call id="callA">
+                <flow-reference>
+                    <flow-document-id>unique</flow-document-id>
+                    <flow-id>flow-a</flow-id>
+                </flow-reference>
+                <outbound-parameter>
+                    <name>param1FromFlowB</name>
+                    <value>param1Value</value>
+                </outbound-parameter>
+                <outbound-parameter>
+                    <name>param2FromFlowB</name>
+                    <value>param2Value</value>
+                </outbound-parameter>
+            </flow-call>
+                        
+        </flow-definition>
+
+</faces-config>
+
diff --git a/test/web-profile/flow/parameter_faces_flow_call/src/main/webapp/flow-b/flow-b.xhtml b/test/web-profile/flow/parameter_faces_flow_call/src/main/webapp/flow-b/flow-b.xhtml
new file mode 100644
index 0000000..10eecb9
--- /dev/null
+++ b/test/web-profile/flow/parameter_faces_flow_call/src/main/webapp/flow-b/flow-b.xhtml
@@ -0,0 +1,67 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    
+    <head>
+        <title>First page in the flow</title>
+    </head>
+    <body bgcolor="blue">
+    <h:form prependId="false">
+        <p>First page in the flow</p>
+        <p>Flow bean name: #{flow_b_Bean.name}</p>
+        
+        <p><span id="param1FromFlowA">#{flowScope.param1Value}</span></p>
+        <p><span id="param2FromFlowA">#{flowScope.param2Value}</span></p>
+        
+        <p><h:commandButton id="index" value="home" action="/index" /></p>
+        <p><h:commandButton id="next_a" value="next" action="next_a" /></p>
+        <p><h:commandButton id="nonFlow" value="nonFlow" action="/nonFlow" /></p>
+        
+    </h:form>
+    </body>
+</html>
diff --git a/test/web-profile/flow/parameter_faces_flow_call/src/main/webapp/flow-b/next_a.xhtml b/test/web-profile/flow/parameter_faces_flow_call/src/main/webapp/flow-b/next_a.xhtml
new file mode 100644
index 0000000..7b19ed9
--- /dev/null
+++ b/test/web-profile/flow/parameter_faces_flow_call/src/main/webapp/flow-b/next_a.xhtml
@@ -0,0 +1,65 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    
+    <head>
+        <title>Second page in the flow</title>
+    </head>
+    <body bgcolor="blue">
+    <h:form prependId="false">
+        <p>Second page in the flow</p>
+        <p>Flow bean name: #{flow_b_Bean.name}</p>
+        
+        <p>value: <h:inputText id="input" value="#{flowScope.value}" /></p>
+        
+        <p><h:commandButton id="start" value="back" action="flow-a" /></p>
+        <p><h:commandButton id="next" value="next" action="next_b" /></p>
+        
+    </h:form>
+    </body>
+</html>
diff --git a/test/web-profile/flow/parameter_faces_flow_call/src/main/webapp/flow-b/next_b.xhtml b/test/web-profile/flow/parameter_faces_flow_call/src/main/webapp/flow-b/next_b.xhtml
new file mode 100644
index 0000000..7ad25fb
--- /dev/null
+++ b/test/web-profile/flow/parameter_faces_flow_call/src/main/webapp/flow-b/next_b.xhtml
@@ -0,0 +1,72 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    
+    <head>
+        <title>Last page in the flow</title>
+    </head>
+    <body bgcolor="blue">
+        
+        <p>Last page in the flow</p>
+        <p>Flow bean name: #{flow_b_Bean.name}</p>
+        
+        <p>value: #{flowScope.value}</p>
+        
+    <h:form prependId="false">
+        <p><h:commandButton id="back" value="back" action="next_a" /></p>
+        <p><h:commandButton id="return" value="return" action="taskFlowReturn1" /></p>
+        <p><h:button id="return_GET" value="return via GET" outcome="taskFlowReturn1" /></p>
+        <p><h:commandButton id="callA" value="callA" action="callA" /></p>
+        <p><h:button id="callA_GET" value="callA via GET" outcome="callA">
+              <f:attribute name="to-flow-document-id" value="unique"/>
+        </h:button></p>
+        
+        
+    </h:form>
+    </body>
+</html>
diff --git a/test/web-profile/flow/parameter_faces_flow_call/src/main/webapp/index.xhtml b/test/web-profile/flow/parameter_faces_flow_call/src/main/webapp/index.xhtml
new file mode 100644
index 0000000..c85f26e
--- /dev/null
+++ b/test/web-profile/flow/parameter_faces_flow_call/src/main/webapp/index.xhtml
@@ -0,0 +1,100 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core">
+    <head>
+        <title>Outside of flow</title>
+    </head>
+    <body>
+        <h1>Outside of flow</h1>
+        
+        <p>This is the ideal test matrix.</p>        
+        
+        <pre><code>
+
+flow-a and flow-b call eachother
+
+           inbound params     outbound params
+
+flow-a     y                  y
+           n                  n
+           y                  n
+           n                  y
+
+flow-b     y                  y
+           n                  n
+           y                  n
+           n                  y
+
+        </code></pre>
+        
+        <p>Cases covered in this test</p>
+        <pre><code>
+flow-a-no-inbound-no-outbound calls flow-b-no-inbound-no-outbound
+
+flow-a-yes-inbound-no-outbound calls flow-b-no-inbound-no-outbound
+
+flow-a-no-inbound-yes-outbound calls flow-b-no-inbound-no-outbound
+
+        </code></pre>
+        
+        
+        
+    <h:form prependId="false">
+        <p><h:commandButton id="flow-a-no-inbound-no-outbound" value="enter flow-a-no-inbound-no-outbound" 
+                            action="flow-a-no-inbound-no-outbound">
+            </h:commandButton></p>
+        <p><h:commandButton id="flow-a-yes-inbound-no-outbound" value="enter flow-a-yes-inbound-no-outbound" 
+                            action="flow-a-yes-inbound-no-outbound">
+            </h:commandButton></p>
+        <p><h:commandButton id="flow-a-no-inbound-yes-outbound" value="enter flow-a-no-inbound-yes-outbound" 
+                            action="flow-a-no-inbound-yes-outbound">
+            </h:commandButton></p>
+            
+            
+    </h:form>
+</body>
+</html>
diff --git a/test/web-profile/flow/parameter_faces_flow_call/src/main/webapp/return1.xhtml b/test/web-profile/flow/parameter_faces_flow_call/src/main/webapp/return1.xhtml
new file mode 100644
index 0000000..73a0b25
--- /dev/null
+++ b/test/web-profile/flow/parameter_faces_flow_call/src/main/webapp/return1.xhtml
@@ -0,0 +1,63 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <head>
+        <title>Page navigated to upon return from any flow</title>
+    </head>
+    <body>
+        <h1>Page navigated to upon return from any flow</h1>
+        
+    <h:form prependId="false">
+        <p>return page</p>
+        
+        <p>Has a flow: #{null != facesContext.application.flowHandler.currentFlow}.</p>
+        
+        <p>flowScope value, should be empty: #{flowScope.value}.</p>
+                
+    </h:form>
+</body>
+</html>
diff --git a/test/web-profile/flow/parameter_faces_flow_call/src/test/java/com/sun/faces/test/webprofile/flow/parameter_faces_flow_call/FlowACallsFlowBIT.java b/test/web-profile/flow/parameter_faces_flow_call/src/test/java/com/sun/faces/test/webprofile/flow/parameter_faces_flow_call/FlowACallsFlowBIT.java
new file mode 100644
index 0000000..0b2db5e
--- /dev/null
+++ b/test/web-profile/flow/parameter_faces_flow_call/src/test/java/com/sun/faces/test/webprofile/flow/parameter_faces_flow_call/FlowACallsFlowBIT.java
@@ -0,0 +1,143 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.webprofile.flow.parameter_faces_flow_call;
+
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import static org.junit.Assert.assertTrue;
+
+public class FlowACallsFlowBIT {
+    /**
+     * Stores the web URL.
+     */
+    private String webUrl;
+    /**
+     * Stores the web client.
+     */
+    private WebClient webClient;
+
+    /**
+     * Setup before testing.
+     * 
+     * @throws Exception when a serious error occurs.
+     */
+    @BeforeClass
+    public static void setUpClass() throws Exception {
+    }
+
+    /**
+     * Cleanup after testing.
+     * 
+     * @throws Exception when a serious error occurs.
+     */
+    @AfterClass
+    public static void tearDownClass() throws Exception {
+    }
+
+    /**
+     * Setup before testing.
+     */
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    /**
+     * Tear down after testing.
+     */
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testFlowANoInboundNoOutboundFlowBNoInboundNoOutbound() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl);
+
+        assertTrue(page.getBody().asText().indexOf("Outside of flow") != -1);
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("flow-a-no-inbound-no-outbound");
+        page = button.click();
+        assertTrue(page.getBody().asText().indexOf("flow-a-no-inbound-no-outbound") != -1);
+        
+        button = (HtmlSubmitInput) page.getElementById("callB");
+        page = button.click();
+        assertTrue(page.getBody().asText().indexOf("flow-b-no-inbound-no-outbound") != -1);
+        
+    }
+    
+    @Test
+    public void testFlowAYesInboundNoOutboundFlowBNoInboundNoOutbound() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl);
+
+        assertTrue(page.getBody().asText().indexOf("Outside of flow") != -1);
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("flow-a-yes-inbound-no-outbound");
+        page = button.click();
+        assertTrue(page.getBody().asText().indexOf("flow-a-yes-inbound-no-outbound") != -1);
+        
+        button = (HtmlSubmitInput) page.getElementById("callB");
+        page = button.click();
+        assertTrue(page.getBody().asText().indexOf("flow-b-no-inbound-no-outbound") != -1);
+        
+    }
+    
+    @Test
+    public void testFlowANoInboundYesOutboundFlowBNoInboundNoOutbound() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl);
+
+        assertTrue(page.getBody().asText().indexOf("Outside of flow") != -1);
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("flow-a-no-inbound-yes-outbound");
+        page = button.click();
+        assertTrue(page.getBody().asText().indexOf("flow-a-no-inbound-yes-outbound") != -1);
+        
+        button = (HtmlSubmitInput) page.getElementById("callB");
+        page = button.click();
+        assertTrue(page.getBody().asText().indexOf("flow-b-no-inbound-no-outbound") != -1);
+        
+    }
+    
+    
+}
diff --git a/test/web-profile/flow/pom.xml b/test/web-profile/flow/pom.xml
new file mode 100644
index 0000000..3b811e5
--- /dev/null
+++ b/test/web-profile/flow/pom.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.webprofile</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.webprofile.flow</groupId>
+    <artifactId>pom</artifactId>
+    <packaging>pom</packaging>
+    <name>Mojarra ${project.version} - Test - Web-Profile - Flow</name>
+    <modules>
+        <module>basic-empty-flow-def</module>
+        <module>basic-implicit</module>
+        <module>basic-multi-page</module>
+        <module>basic-multi-page-fdl-in-web-inf</module>
+        <module>basic_faces_flow_call</module>
+        <module>basic_implicit_in_jar</module>
+        <module>basic_implicit_template</module>
+        <module>basic_method_call</module>
+        <module>basic_switch</module>
+        <module>defining_document_id</module>
+        <module>factory</module>
+        <module>intermediate</module>
+        <module>multi-page-from-jar</module>
+        <module>nested_flows</module>
+        <module>parameter_faces_flow_call</module>
+        <module>return_from_depth</module>
+        <module>view_node_differences</module>
+    </modules>
+</project>
diff --git a/test/web-profile/flow/return_from_depth/nbactions.xml b/test/web-profile/flow/return_from_depth/nbactions.xml
new file mode 100644
index 0000000..3b6e7b1
--- /dev/null
+++ b/test/web-profile/flow/return_from_depth/nbactions.xml
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<actions>
+    <action>
+        <actionName>debug.test.single</actionName>
+        <goals>
+            <goal>test-compile</goal>
+            <goal>surefire:test</goal>
+        </goals>
+        <properties>
+            <test>${packageClassName}</test>
+            <forkMode>once</forkMode>
+            <maven.surefire.debug>-Xdebug -Xrunjdwp:transport=dt_socket,server=n,address=${jpda.address}</maven.surefire.debug>
+            <jpda.listen>true</jpda.listen>
+            <integration.url>http://localhost:8080/test-webprofile-flow-return_from_depth/</integration.url>
+        </properties>
+    </action>
+    <action>
+        <actionName>test.single</actionName>
+        <goals>
+            <goal>test-compile</goal>
+            <goal>surefire:test</goal>
+        </goals>
+        <properties>
+            <integration.url>http://localhost:8080/test-webprofile-flow-return_from_depth/</integration.url>
+            <test>${packageClassName}</test>
+        </properties>
+    </action>
+</actions>
diff --git a/test/web-profile/flow/return_from_depth/pom.xml b/test/web-profile/flow/return_from_depth/pom.xml
new file mode 100644
index 0000000..12e5269
--- /dev/null
+++ b/test/web-profile/flow/return_from_depth/pom.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.webprofile.flow</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.webprofile.flow</groupId>
+    <artifactId>return_from_depth</artifactId>
+    <packaging>war</packaging>
+    <name>Mojarra ${project.version} - Test - Web-Profile - Flow - return_from_depth</name>
+    <build>
+        <finalName>test-webprofile-flow-return_from_depth</finalName>
+    </build>
+    <properties>
+        <netbeans.hint.deploy.server>gfv3ee6</netbeans.hint.deploy.server>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/test/web-profile/flow/return_from_depth/src/main/webapp/WEB-INF/beans.xml b/test/web-profile/flow/return_from_depth/src/main/webapp/WEB-INF/beans.xml
new file mode 100644
index 0000000..c782f57
--- /dev/null
+++ b/test/web-profile/flow/return_from_depth/src/main/webapp/WEB-INF/beans.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- This file can be an empty text file (0 bytes) -->
+<!-- We're declaring the schema to save you time if you do have to configure 
+   this in the future -->
+<beans xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+   xsi:schemaLocation="
+        http://java.sun.com/xml/ns/javaee 
+        http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
+</beans>
diff --git a/test/web-profile/flow/return_from_depth/src/main/webapp/WEB-INF/faces-config.xml b/test/web-profile/flow/return_from_depth/src/main/webapp/WEB-INF/faces-config.xml
new file mode 100644
index 0000000..0a70a88
--- /dev/null
+++ b/test/web-profile/flow/return_from_depth/src/main/webapp/WEB-INF/faces-config.xml
@@ -0,0 +1,28 @@
+<?xml version='1.0' encoding='UTF-8'?>
+
+<!-- =========== FULL CONFIGURATION FILE ================================== -->
+
+<faces-config version="2.2"
+    xmlns="http://xmlns.jcp.org/xml/ns/javaee" 
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd">
+    <flow-definition id="flow2">
+      <flow-return id="exit2">
+          <from-outcome>returnFromFlow2</from-outcome>
+      </flow-return>
+    </flow-definition>
+
+    <flow-definition id="flow1">
+      <flow-call id="call_flow2">
+        <flow-reference>
+          <flow-id>flow2</flow-id>
+        </flow-reference>
+      </flow-call>
+
+      <flow-return id="returnFromFlow2">
+        <from-outcome>/index</from-outcome>
+      </flow-return>
+
+    </flow-definition>
+
+</faces-config>
diff --git a/test/web-profile/flow/return_from_depth/src/main/webapp/WEB-INF/glassfish-web.xml b/test/web-profile/flow/return_from_depth/src/main/webapp/WEB-INF/glassfish-web.xml
new file mode 100644
index 0000000..367bea2
--- /dev/null
+++ b/test/web-profile/flow/return_from_depth/src/main/webapp/WEB-INF/glassfish-web.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
+<glassfish-web-app error-url="">
+  <context-root>/test-webprofile-flow-return_from_depth</context-root>
+  <class-loader delegate="true"/>
+  <jsp-config>
+    <property name="keepgenerated" value="true">
+      <description>Keep a copy of the generated servlet class' java code.</description>
+    </property>
+  </jsp-config>
+</glassfish-web-app>
diff --git a/test/web-profile/flow/return_from_depth/src/main/webapp/WEB-INF/web.xml b/test/web-profile/flow/return_from_depth/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..74e3339
--- /dev/null
+++ b/test/web-profile/flow/return_from_depth/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>${webapp.projectStage}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
+        <param-value>${webapp.partialStateSaving}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>${webapp.stateSavingMethod}</param-value>
+    </context-param>
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <welcome-file-list>
+        <welcome-file>faces/index.xhtml</welcome-file>
+    </welcome-file-list>
+</web-app>
diff --git a/test/web-profile/flow/return_from_depth/src/main/webapp/flow1/flow1.xhtml b/test/web-profile/flow/return_from_depth/src/main/webapp/flow1/flow1.xhtml
new file mode 100644
index 0000000..b51680c
--- /dev/null
+++ b/test/web-profile/flow/return_from_depth/src/main/webapp/flow1/flow1.xhtml
@@ -0,0 +1,16 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://xmlns.jcp.org/jsf/html">
+    <h:head>
+        <title>flow1</title>
+    </h:head>
+    <body bgcolor="red">
+        
+        <h:form prependId="false">
+            <p><h:commandButton value="flow2" id="flow2" action="call_flow2" /></p>
+        </h:form>
+
+    </body>
+</html>
+
diff --git a/test/web-profile/flow/return_from_depth/src/main/webapp/flow1/return2.xhtml b/test/web-profile/flow/return_from_depth/src/main/webapp/flow1/return2.xhtml
new file mode 100644
index 0000000..f5171e9
--- /dev/null
+++ b/test/web-profile/flow/return_from_depth/src/main/webapp/flow1/return2.xhtml
@@ -0,0 +1,13 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://xmlns.jcp.org/jsf/html">
+    <h:head>
+        <title>flow1</title>
+    </h:head>
+    <body bgcolor="red">
+        
+        <p>The return page</p>
+    </body>
+</html>
+
diff --git a/test/web-profile/flow/return_from_depth/src/main/webapp/flow2/flow2.xhtml b/test/web-profile/flow/return_from_depth/src/main/webapp/flow2/flow2.xhtml
new file mode 100644
index 0000000..8cded7b
--- /dev/null
+++ b/test/web-profile/flow/return_from_depth/src/main/webapp/flow2/flow2.xhtml
@@ -0,0 +1,16 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://xmlns.jcp.org/jsf/html">
+    <h:head>
+        <title>flow2</title>
+    </h:head>
+    <body bgcolor="blue">
+        
+        <h:form prependId="false">
+            <p><h:commandButton value="exit2" id="exit2" action="exit2" /></p>
+        </h:form>
+
+    </body>
+</html>
+
diff --git a/test/web-profile/flow/return_from_depth/src/main/webapp/index.xhtml b/test/web-profile/flow/return_from_depth/src/main/webapp/index.xhtml
new file mode 100644
index 0000000..e6f4960
--- /dev/null
+++ b/test/web-profile/flow/return_from_depth/src/main/webapp/index.xhtml
@@ -0,0 +1,16 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://xmlns.jcp.org/jsf/html">
+    <h:head>
+        <title>Return From Depth</title>
+    </h:head>
+    <h:body>
+        <p>Return From Depth Test</p>
+        <h:form prependId="false">
+            <p><h:commandButton value="flow1" id="flow1" action="flow1" /></p>
+        </h:form>
+        
+    </h:body>
+</html>
+
diff --git a/test/web-profile/flow/return_from_depth/src/test/java/com/sun/faces/test/webprofile/flow/return_from_depth/ReturnFromDepthIT.java b/test/web-profile/flow/return_from_depth/src/test/java/com/sun/faces/test/webprofile/flow/return_from_depth/ReturnFromDepthIT.java
new file mode 100644
index 0000000..c0ff7bb
--- /dev/null
+++ b/test/web-profile/flow/return_from_depth/src/test/java/com/sun/faces/test/webprofile/flow/return_from_depth/ReturnFromDepthIT.java
@@ -0,0 +1,86 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.webprofile.flow.return_from_depth;
+
+import com.gargoylesoftware.htmlunit.html.HtmlInput;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.sun.faces.test.junit.JsfTest;
+import com.sun.faces.test.junit.JsfTestRunner;
+import com.sun.faces.test.junit.JsfVersion;
+import static org.junit.Assert.assertTrue;
+import org.junit.runner.RunWith;
+
+ at RunWith(JsfTestRunner.class)
+public class ReturnFromDepthIT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @JsfTest(JsfVersion.JSF_2_2_1)
+    @Test
+    public void testFacesFlowCallPostback() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl);
+        assertTrue(page.getBody().asText().indexOf("Return From Depth Test") != -1);
+
+        HtmlInput button = (HtmlInput) page.getElementById("flow1");
+        page = button.click();
+        button = (HtmlInput) page.getElementById("flow2");
+        page = button.click();
+        button = (HtmlInput) page.getElementById("exit2");
+        page = button.click();
+        String pageText = page.asText();
+        assertTrue(pageText.contains("Return From Depth Test"));
+    }
+}
diff --git a/test/web-profile/flow/view_node_differences/nbactions.xml b/test/web-profile/flow/view_node_differences/nbactions.xml
new file mode 100644
index 0000000..182f2d7
--- /dev/null
+++ b/test/web-profile/flow/view_node_differences/nbactions.xml
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<actions>
+    <action>
+        <actionName>debug.test.single</actionName>
+        <goals>
+            <goal>test-compile</goal>
+            <goal>surefire:test</goal>
+        </goals>
+        <properties>
+            <test>${packageClassName}</test>
+            <forkMode>once</forkMode>
+            <maven.surefire.debug>-Xdebug -Xrunjdwp:transport=dt_socket,server=n,address=${jpda.address}</maven.surefire.debug>
+            <jpda.listen>true</jpda.listen>
+            <integration.url>http://localhost:8080/test-webprofile-flow-view_node_differences/</integration.url>
+        </properties>
+    </action>
+    <action>
+        <actionName>test.single</actionName>
+        <goals>
+            <goal>test-compile</goal>
+            <goal>surefire:test</goal>
+        </goals>
+        <properties>
+            <integration.url>http://localhost:8080/test-webprofile-flow-view_node_differences/</integration.url>
+            <test>${packageClassName}</test>
+        </properties>
+    </action>
+</actions>
diff --git a/test/web-profile/flow/view_node_differences/pom.xml b/test/web-profile/flow/view_node_differences/pom.xml
new file mode 100644
index 0000000..29ddca6
--- /dev/null
+++ b/test/web-profile/flow/view_node_differences/pom.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.webprofile.flow</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.webprofile.flow</groupId>
+    <artifactId>view_node_differences</artifactId>
+    <packaging>war</packaging>
+    <name>Mojarra ${project.version} - Test - Web-Profile - Flow - view_node_differences</name>
+    <build>
+        <finalName>test-webprofile-flow-view_node_differences</finalName>
+    </build>
+    <properties>
+        <netbeans.hint.deploy.server>gfv3ee6</netbeans.hint.deploy.server>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/test/web-profile/flow/view_node_differences/src/main/java/com/sun/faces/test/webprofile/flow/view_node_differences/Flow1Bean.java b/test/web-profile/flow/view_node_differences/src/main/java/com/sun/faces/test/webprofile/flow/view_node_differences/Flow1Bean.java
new file mode 100644
index 0000000..85228c4
--- /dev/null
+++ b/test/web-profile/flow/view_node_differences/src/main/java/com/sun/faces/test/webprofile/flow/view_node_differences/Flow1Bean.java
@@ -0,0 +1,58 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.webprofile.flow.view_node_differences;
+
+import javax.faces.flow.FlowScoped;
+import java.io.Serializable;
+
+import javax.inject.Named;
+
+ at Named
+ at FlowScoped("flow1")
+public class Flow1Bean implements Serializable {
+
+   public String getName() {
+       return "Flow_B_Bean";
+   }
+   
+   public String getReturnValue() {
+       return "/return1";
+   }
+}
diff --git a/test/web-profile/flow/view_node_differences/src/main/webapp/WEB-INF/beans.xml b/test/web-profile/flow/view_node_differences/src/main/webapp/WEB-INF/beans.xml
new file mode 100644
index 0000000..c782f57
--- /dev/null
+++ b/test/web-profile/flow/view_node_differences/src/main/webapp/WEB-INF/beans.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- This file can be an empty text file (0 bytes) -->
+<!-- We're declaring the schema to save you time if you do have to configure 
+   this in the future -->
+<beans xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+   xsi:schemaLocation="
+        http://java.sun.com/xml/ns/javaee 
+        http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
+</beans>
diff --git a/test/web-profile/flow/view_node_differences/src/main/webapp/WEB-INF/glassfish-web.xml b/test/web-profile/flow/view_node_differences/src/main/webapp/WEB-INF/glassfish-web.xml
new file mode 100644
index 0000000..bbcf9a0
--- /dev/null
+++ b/test/web-profile/flow/view_node_differences/src/main/webapp/WEB-INF/glassfish-web.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
+<glassfish-web-app error-url="">
+  <context-root>/test-webprofile-flow-view_node_differences</context-root>
+  <class-loader delegate="true"/>
+  <jsp-config>
+    <property name="keepgenerated" value="true">
+      <description>Keep a copy of the generated servlet class' java code.</description>
+    </property>
+  </jsp-config>
+</glassfish-web-app>
diff --git a/test/web-profile/flow/view_node_differences/src/main/webapp/WEB-INF/web.xml b/test/web-profile/flow/view_node_differences/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..74e3339
--- /dev/null
+++ b/test/web-profile/flow/view_node_differences/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>${webapp.projectStage}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
+        <param-value>${webapp.partialStateSaving}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>${webapp.stateSavingMethod}</param-value>
+    </context-param>
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <welcome-file-list>
+        <welcome-file>faces/index.xhtml</welcome-file>
+    </welcome-file-list>
+</web-app>
diff --git a/test/web-profile/flow/view_node_differences/src/main/webapp/flow1/flow1-flow.xml b/test/web-profile/flow/view_node_differences/src/main/webapp/flow1/flow1-flow.xml
new file mode 100644
index 0000000..81b740c
--- /dev/null
+++ b/test/web-profile/flow/view_node_differences/src/main/webapp/flow1/flow1-flow.xml
@@ -0,0 +1,77 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<faces-config version="2.2" xmlns="http://xmlns.jcp.org/xml/ns/javaee"
+   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+   xsi:schemaLocation="
+        http://xmlns.jcp.org/xml/ns/javaee
+        http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd">
+
+
+<flow-definition id="flow1">
+        
+        <start-node>flow12</start-node>
+        
+        <view id="flow12">
+            <vdl-document>/flow1/flow1.xhtml</vdl-document>
+        </view> 
+        
+        <view id="flow1_next">
+            <vdl-document>/flow1/flow1_2.xhtml</vdl-document>
+        </view> 
+        
+        <flow-call id="callFlow2">
+            <flow-reference>                
+                <flow-id>/flow2</flow-id>
+            </flow-reference>                       
+        </flow-call>    
+ 
+        <flow-return id="taskFlowReturn">
+            <from-outcome>#{flow1Bean.returnValue}</from-outcome>
+        </flow-return>
+    </flow-definition>
+
+
+
+</faces-config>
+
diff --git a/test/web-profile/flow/view_node_differences/src/main/webapp/flow1/flow1.xhtml b/test/web-profile/flow/view_node_differences/src/main/webapp/flow1/flow1.xhtml
new file mode 100644
index 0000000..2e4a991
--- /dev/null
+++ b/test/web-profile/flow/view_node_differences/src/main/webapp/flow1/flow1.xhtml
@@ -0,0 +1,58 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    
+    <head>
+        <title>First page in the flow</title>
+    </head>
+    <body bgcolor="blue">
+    <h:form prependId="false">
+        <p><h:commandButton id="next" value="next" action="flow1_next" /></p>
+    </h:form>
+    </body>
+</html>
diff --git a/test/web-profile/flow/view_node_differences/src/main/webapp/flow1/flow1_2.xhtml b/test/web-profile/flow/view_node_differences/src/main/webapp/flow1/flow1_2.xhtml
new file mode 100644
index 0000000..883cac9
--- /dev/null
+++ b/test/web-profile/flow/view_node_differences/src/main/webapp/flow1/flow1_2.xhtml
@@ -0,0 +1,59 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    
+    <head>
+        <title>Second page in the flow</title>
+    </head>
+    <body bgcolor="blue">
+    <h:form prependId="false">
+        <p>Second page in the flow</p>
+        
+    </h:form>
+    </body>
+</html>
diff --git a/test/web-profile/flow/view_node_differences/src/main/webapp/flow2/flow2-flow.xml b/test/web-profile/flow/view_node_differences/src/main/webapp/flow2/flow2-flow.xml
new file mode 100644
index 0000000..e69de29
diff --git a/test/web-profile/flow/view_node_differences/src/main/webapp/flow2/flow2.xhtml b/test/web-profile/flow/view_node_differences/src/main/webapp/flow2/flow2.xhtml
new file mode 100644
index 0000000..21fdedc
--- /dev/null
+++ b/test/web-profile/flow/view_node_differences/src/main/webapp/flow2/flow2.xhtml
@@ -0,0 +1,12 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title>Flow2</title>
+    </h:head>
+    <h:body>
+        Flow2
+    </h:body>
+</html>
+
diff --git a/test/web-profile/flow/view_node_differences/src/main/webapp/index.xhtml b/test/web-profile/flow/view_node_differences/src/main/webapp/index.xhtml
new file mode 100644
index 0000000..f8ddc5a
--- /dev/null
+++ b/test/web-profile/flow/view_node_differences/src/main/webapp/index.xhtml
@@ -0,0 +1,59 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core">
+    <head>
+        <title>Outside of flow</title>
+    </head>
+    <body>
+        <h1>Outside of flow</h1>
+        
+    <h:form prependId="false">
+        <p><h:commandButton id="flow1" value="enter flow1" 
+                            action="flow1" /></p>
+    </h:form>
+</body>
+</html>
diff --git a/test/web-profile/flow/view_node_differences/src/main/webapp/nonFlow.xhtml b/test/web-profile/flow/view_node_differences/src/main/webapp/nonFlow.xhtml
new file mode 100644
index 0000000..b5d740b
--- /dev/null
+++ b/test/web-profile/flow/view_node_differences/src/main/webapp/nonFlow.xhtml
@@ -0,0 +1,61 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <head>
+        <title>Try to access a flow bean from outside of a flow</title>
+    </head>
+    <body>
+    <h:form prependId="false">
+        <p>Try to access a flow bean from outside of a flow</p>
+        <p>Flow bean name: #{flowBean.name}</p>
+        
+        <p><h:commandButton id="index" value="home" action="index" /></p>
+        <p><h:commandButton id="nonFlow" value="nonFlow" action="nonFlow" /></p>
+        
+    </h:form>
+    </body>
+</html>
diff --git a/test/web-profile/flow/view_node_differences/src/main/webapp/return1.xhtml b/test/web-profile/flow/view_node_differences/src/main/webapp/return1.xhtml
new file mode 100644
index 0000000..9729a7f
--- /dev/null
+++ b/test/web-profile/flow/view_node_differences/src/main/webapp/return1.xhtml
@@ -0,0 +1,61 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <head>
+        <title>Page navigated to upon return from any flow</title>
+    </head>
+    <body>
+        <h1>Page navigated to upon return from any flow</h1>
+        
+    <h:form prependId="false">
+        <p>return page</p>
+        
+        <p>Has a flow: #{null != facesContext.application.flowHandler.currentFlow}.</p>
+        
+    </h:form>
+</body>
+</html>
diff --git a/test/web-profile/flow/view_node_differences/src/test/java/com/sun/faces/test/webprofile/flow/view_node_differences/ViewNodeDifferencesIT.java b/test/web-profile/flow/view_node_differences/src/test/java/com/sun/faces/test/webprofile/flow/view_node_differences/ViewNodeDifferencesIT.java
new file mode 100644
index 0000000..a18e24f
--- /dev/null
+++ b/test/web-profile/flow/view_node_differences/src/test/java/com/sun/faces/test/webprofile/flow/view_node_differences/ViewNodeDifferencesIT.java
@@ -0,0 +1,119 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.webprofile.flow.view_node_differences;
+
+import com.gargoylesoftware.htmlunit.html.HtmlInput;
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.assertEquals;
+
+public class ViewNodeDifferencesIT {
+    /**
+     * Stores the web URL.
+     */
+    private String webUrl;
+    /**
+     * Stores the web client.
+     */
+    private WebClient webClient;
+
+    /**
+     * Setup before testing.
+     * 
+     * @throws Exception when a serious error occurs.
+     */
+    @BeforeClass
+    public static void setUpClass() throws Exception {
+    }
+
+    /**
+     * Cleanup after testing.
+     * 
+     * @throws Exception when a serious error occurs.
+     */
+    @AfterClass
+    public static void tearDownClass() throws Exception {
+    }
+
+    /**
+     * Setup before testing.
+     */
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    /**
+     * Tear down after testing.
+     */
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testFacesFlowCallPostback() throws Exception {
+        doTestFacesFlowCall("");
+    }
+
+    public void doTestFacesFlowCall(String flowInvocationSuffix) throws Exception {
+        HtmlPage page = webClient.getPage(webUrl);
+
+        assertTrue(page.getBody().asText().indexOf("Outside of flow") != -1);
+        
+        HtmlInput button = (HtmlInput) page.getElementById("flow1" + flowInvocationSuffix);
+        page = button.click();
+
+        button = (HtmlInput) page.getElementById("next");
+        page = button.click();
+        
+        String pageText = page.asText();
+        assertTrue(pageText.contains("Second page in the flow"));
+
+    }
+}
diff --git a/test/web-profile/multi_templating/basic/nbactions.xml b/test/web-profile/multi_templating/basic/nbactions.xml
new file mode 100644
index 0000000..e9b223e
--- /dev/null
+++ b/test/web-profile/multi_templating/basic/nbactions.xml
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<actions>
+    <action>
+        <actionName>debug.test.single</actionName>
+        <goals>
+            <goal>test-compile</goal>
+            <goal>surefire:test</goal>
+        </goals>
+        <properties>
+            <test>${packageClassName}</test>
+            <forkMode>once</forkMode>
+            <maven.surefire.debug>-Xdebug -Xrunjdwp:transport=dt_socket,server=n,address=${jpda.address}</maven.surefire.debug>
+            <jpda.listen>true</jpda.listen>
+            <integration.url>http://localhost:8080/test-webprofile-multi_templating-basic/</integration.url>
+        </properties>
+    </action>
+    <action>
+        <actionName>test.single</actionName>
+        <goals>
+            <goal>test-compile</goal>
+            <goal>surefire:test</goal>
+        </goals>
+        <properties>
+            <integration.url>http://localhost:8080/test-webprofile-multi_templating-basic/</integration.url>
+            <test>${packageClassName}</test>
+        </properties>
+    </action>
+</actions>
diff --git a/test/web-profile/multi_templating/basic/pom.xml b/test/web-profile/multi_templating/basic/pom.xml
new file mode 100644
index 0000000..a005d01
--- /dev/null
+++ b/test/web-profile/multi_templating/basic/pom.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.webprofile.multi_templating</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.webprofile.multi_templating</groupId>
+    <artifactId>basic</artifactId>
+    <packaging>war</packaging>
+    <name>Mojarra ${project.version} - Test - Web-Profile - Multi-Templating - Basic Tests</name>
+    <build>
+        <finalName>test-webprofile-multi_templating-basic</finalName>
+    </build>
+    <properties>
+        <netbeans.hint.deploy.server>gfv3ee6</netbeans.hint.deploy.server>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/test/web-profile/multi_templating/basic/src/main/resources/META-INF/persistence.xml b/test/web-profile/multi_templating/basic/src/main/resources/META-INF/persistence.xml
new file mode 100644
index 0000000..6377368
--- /dev/null
+++ b/test/web-profile/multi_templating/basic/src/main/resources/META-INF/persistence.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<persistence version="2.0"
+   xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+   xsi:schemaLocation="
+        http://java.sun.com/xml/ns/persistence
+        http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
+   <persistence-unit name="primary">
+      <!-- If you are running in a production environment, add a managed 
+         data source, the example data source is just for development and testing! -->
+      <jta-data-source>java:jboss/datasources/acmeDS</jta-data-source>
+      <properties>
+         <!-- Properties for Hibernate -->
+         <property name="hibernate.hbm2ddl.auto" value="create-drop" />
+         <property name="hibernate.show_sql" value="false" />
+      </properties>
+   </persistence-unit>
+</persistence>
\ No newline at end of file
diff --git a/test/web-profile/multi_templating/basic/src/main/webapp/WEB-INF/beans.xml b/test/web-profile/multi_templating/basic/src/main/webapp/WEB-INF/beans.xml
new file mode 100644
index 0000000..c782f57
--- /dev/null
+++ b/test/web-profile/multi_templating/basic/src/main/webapp/WEB-INF/beans.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- This file can be an empty text file (0 bytes) -->
+<!-- We're declaring the schema to save you time if you do have to configure 
+   this in the future -->
+<beans xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+   xsi:schemaLocation="
+        http://java.sun.com/xml/ns/javaee 
+        http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
+</beans>
diff --git a/test/web-profile/multi_templating/basic/src/main/webapp/WEB-INF/glassfish-web.xml b/test/web-profile/multi_templating/basic/src/main/webapp/WEB-INF/glassfish-web.xml
new file mode 100644
index 0000000..e96240c
--- /dev/null
+++ b/test/web-profile/multi_templating/basic/src/main/webapp/WEB-INF/glassfish-web.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
+<glassfish-web-app error-url="">
+  <context-root>/test-webprofile-multi_templating-basic</context-root>
+  <class-loader delegate="true"/>
+  <jsp-config>
+    <property name="keepgenerated" value="true">
+      <description>Keep a copy of the generated servlet class' java code.</description>
+    </property>
+  </jsp-config>
+</glassfish-web-app>
diff --git a/test/web-profile/multi_templating/basic/src/main/webapp/WEB-INF/web.xml b/test/web-profile/multi_templating/basic/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..74e3339
--- /dev/null
+++ b/test/web-profile/multi_templating/basic/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>${webapp.projectStage}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
+        <param-value>${webapp.partialStateSaving}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>${webapp.stateSavingMethod}</param-value>
+    </context-param>
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <welcome-file-list>
+        <welcome-file>faces/index.xhtml</welcome-file>
+    </welcome-file-list>
+</web-app>
diff --git a/test/web-profile/multi_templating/basic/src/main/webapp/contracts/basic/banner3.png b/test/web-profile/multi_templating/basic/src/main/webapp/contracts/basic/banner3.png
new file mode 100644
index 0000000..b3450af
Binary files /dev/null and b/test/web-profile/multi_templating/basic/src/main/webapp/contracts/basic/banner3.png differ
diff --git a/test/web-profile/multi_templating/basic/src/main/webapp/contracts/basic/concert.jpg b/test/web-profile/multi_templating/basic/src/main/webapp/contracts/basic/concert.jpg
new file mode 100644
index 0000000..20d6f29
Binary files /dev/null and b/test/web-profile/multi_templating/basic/src/main/webapp/contracts/basic/concert.jpg differ
diff --git a/test/web-profile/multi_templating/basic/src/main/webapp/contracts/basic/flourishes.png b/test/web-profile/multi_templating/basic/src/main/webapp/contracts/basic/flourishes.png
new file mode 100644
index 0000000..636eab2
Binary files /dev/null and b/test/web-profile/multi_templating/basic/src/main/webapp/contracts/basic/flourishes.png differ
diff --git a/test/web-profile/multi_templating/basic/src/main/webapp/contracts/basic/star.png b/test/web-profile/multi_templating/basic/src/main/webapp/contracts/basic/star.png
new file mode 100644
index 0000000..c4ccbaa
Binary files /dev/null and b/test/web-profile/multi_templating/basic/src/main/webapp/contracts/basic/star.png differ
diff --git a/test/web-profile/multi_templating/basic/src/main/webapp/contracts/basic/template.css b/test/web-profile/multi_templating/basic/src/main/webapp/contracts/basic/template.css
new file mode 100644
index 0000000..8708784
--- /dev/null
+++ b/test/web-profile/multi_templating/basic/src/main/webapp/contracts/basic/template.css
@@ -0,0 +1,201 @@
+/* Site Designed by Hillary Louise Johnson */
+
+/* CSS Resets From Eric Meyer: http://meyerweb.com/eric/thoughts/2007/05/01/reset-reloaded/ */
+
+html, body, div, span, applet, object, iframe,
+h1, h2, h3, h4, h5, h6, p, blockquote, pre,
+a, abbr, acronym, address, big, cite, code,
+del, dfn, em, font, img, ins, kbd, q, s, samp,
+small, strike, strong, sub, sup, tt, var,
+dl, dt, dd, ol, ul, li,
+fieldset, form, label, legend,
+table, caption, tbody, tfoot, thead, tr, th, td {
+	margin: 0;
+	padding: 0;
+	border: 0;
+	outline: 0;
+	font-weight: inherit;
+	font-style: inherit;
+	font-size: 100%;
+	font-family: inherit;
+	line-height: 1.2em;
+}
+
+:focus {
+	outline: 0;
+}
+body {
+	color: black;
+}
+ol, ul {
+	list-style: none;
+}
+/* tables still need 'cellspacing="0"' in the markup */
+table {
+	border-collapse: separate;
+	border-spacing: 5;
+}
+caption, th, td {
+	text-align: left;
+	font-weight: normal;
+}
+blockquote:before, blockquote:after,
+q:before, q:after {
+	content: "";
+}
+blockquote, q {
+	quotes: "" "";
+}
+
+/* end of resets */
+
+html {
+font-family: arial, sans-serif;
+height: 100%;
+}
+
+body {
+background: #323131 url(#{resource['this:concert.jpg']}) bottom left repeat-x;
+background-attachment: fixed;
+}
+
+#wrapper {
+width: 950px;
+height: 800px;
+left: 0px;
+margin-right: auto;
+margin-left: auto;
+background: transparent url(#{resource['this:star.png']}) top left no-repeat;
+}
+
+#outerwrapper{
+background: transparent url(#{resource['this:flourishes.png']}) top center no-repeat;
+}
+
+#header {
+position: relative;
+height: 340px;
+top: 0px;
+background: transparent url(#{resource['this:banner3.png']}) top left no-repeat;
+z-index: 100;
+}
+
+#header h1 {
+display: none;
+margin-left -3000px;
+}
+
+h2 {
+font-size: 180%;
+margin-top: 20px;
+padding-bottom: 20px;
+font-family: georgia;
+}
+
+#menu {
+position: relative;
+float: left;
+width: 160px;
+height: auto;
+margin-bottom: 20px;
+background: transparent;
+padding-top: 20px;
+}
+
+#menu li {
+text-align: right;
+padding: 5px 10px;
+margin: 5px 0px;
+list-style-position: outside;
+background-color: #c30a0b;
+text-transform: uppercase;
+font-family: impact, sans-serif;
+font-size: 1.3em;
+font-weight: normal;
+/* white-space: nowrap; */
+display: block;
+}
+
+#menu a:link {color: #ffffff; font-weight: normal; text-decoration: none;}
+#menu a:visited {color: #ffffff; font-weight: normal; text-decoration: none;}
+#menu a:hover {color: #ffde00; font-weight: normal; text-decoration: none; }
+#menu a:active {color: #ffde00; font-weight: normal; text-decoration: none;}
+
+a:link {color: #c30a0b; font-weight: bold; text-decoration: none;}
+a:visited {color: #c30a0b; font-weight: bold; text-decoration: none;}
+a:hover {color: #898989; font-weight: bold; text-decoration: none;}
+a:active {color: #898989; font-weight: bold;  text-decoration: none;}
+
+#content {
+float: right;
+width: 700px;
+height: 600px;
+background: #fff;
+padding: 40px;
+margin-top: -100px;
+overflow: scroll;
+}
+
+p {
+margin: 0px 0px;
+font-family:Verdana;
+line-height:150%;
+text-align:justify;
+}
+
+#description {
+font-size: 1.2em;
+font-weight: bold;
+font-family: georgia;
+background: transparent;
+color: #af1e23;
+margin: 0 30px;
+}
+
+h3 {
+font-weight: bold;
+margin-bottom: 10px;
+margin-top: 10px;
+}
+
+#footer {
+clear: both;
+color: #fff;
+margin-top: 20px;
+margin-right: auto;
+margin-left: auto;
+text-align: center;
+font-size: 80%;
+font-weight: bold;
+}
+
+#footer a:link {color: #ffff00; font-weight: bold;}
+#footer a:visited {color: #ffff00; font-weight: bold;}
+#footer a:hover {color: #fff; font-weight: bold;}
+#footer a:active {color: #fff; font-weight: bold;}
+
+p img {
+float: left;
+margin: 0 10px 5px 0;
+}
+
+
+td {
+padding: 10px 10px 5px 5px;
+text-align:center;
+}
+
+th {
+font-weight: bold;
+padding-left: 5px;
+text-align:center;
+background-color:rgb(0,0,0);
+color:gold;
+-moz-border-radius: 10px;
+-webkit-border-radius: 10px;
+line-height: 2em;
+}
+
+tr.tableheader {
+background: #d2d2d2;
+}
diff --git a/test/web-profile/multi_templating/basic/src/main/webapp/contracts/basic/template.png b/test/web-profile/multi_templating/basic/src/main/webapp/contracts/basic/template.png
new file mode 100644
index 0000000..951f8a4
Binary files /dev/null and b/test/web-profile/multi_templating/basic/src/main/webapp/contracts/basic/template.png differ
diff --git a/test/web-profile/multi_templating/basic/src/main/webapp/contracts/basic/template.xhtml b/test/web-profile/multi_templating/basic/src/main/webapp/contracts/basic/template.xhtml
new file mode 100644
index 0000000..d64ca36
--- /dev/null
+++ b/test/web-profile/multi_templating/basic/src/main/webapp/contracts/basic/template.xhtml
@@ -0,0 +1,51 @@
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
+    <html xmlns="http://www.w3.org/1999/xhtml"  
+      xmlns:h="http://java.sun.com/jsf/html"  
+      xmlns:ui="http://java.sun.com/jsf/facelets">  
+  <h:head>
+  		<title>Rockstar</title>  
+  		<META HTTP-EQUIV="Cache-Control" CONTENT="max-age=0"/>
+		<META HTTP-EQUIV="Cache-Control" CONTENT="no-cache"/>
+		<META http-equiv="expires" content="0"/>
+		<META HTTP-EQUIV="Expires" CONTENT="Tue, 01 Jan 1980 1:00:00 GMT"/>
+		<META HTTP-EQUIV="Pragma" CONTENT="no-cache"/> 
+          <h:outputStylesheet name="template.css"/>  
+    </h:head> 
+
+
+<body>
+
+<div id="wrapper">
+
+
+<div id="header">
+
+<ui:insert name="header"/>
+
+</div><!--header-->
+
+
+<div id="menu">
+
+<ui:insert name="menu"/>
+
+</div><!--navigation-->
+
+<div id="content">
+
+<ui:insert name="content"/>
+
+</div><!--main-->
+
+</div><!--wrapper-->
+<div id="footer">
+<ui:insert name="footer">
+	© 2008 - 2010 by Ed Burns | Site design by <a href="http://www.xoxiety.com">Xoxiety.com</a>
+</ui:insert>
+</div>
+
+
+
+</body>
+</html>
+
diff --git a/test/web-profile/multi_templating/basic/src/main/webapp/contracts/basic/template.xml b/test/web-profile/multi_templating/basic/src/main/webapp/contracts/basic/template.xml
new file mode 100644
index 0000000..73111a4
--- /dev/null
+++ b/test/web-profile/multi_templating/basic/src/main/webapp/contracts/basic/template.xml
@@ -0,0 +1,13 @@
+<template>
+
+<name>rockstar</name>
+	<version>1.0</version>
+	<creationDate>11/2010</creationDate>
+	<author>Ed burns</author>
+	<authorEmail>edburns at yahoo.com</authorEmail>
+	<authorUrl></authorUrl>
+	<copyright>Joomla-Best-Templates.com</copyright>
+	<description>Rockstar TEMPLATE</description>
+
+
+</template>
\ No newline at end of file
diff --git a/test/web-profile/multi_templating/basic/src/main/webapp/index.xhtml b/test/web-profile/multi_templating/basic/src/main/webapp/index.xhtml
new file mode 100644
index 0000000..fb4a096
--- /dev/null
+++ b/test/web-profile/multi_templating/basic/src/main/webapp/index.xhtml
@@ -0,0 +1,75 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:ui="http://java.sun.com/jsf/facelets">
+    
+    <ui:composition template="/template.xhtml">
+        
+        <ui:define name="header">
+            
+            <p>header</p>
+            
+        </ui:define>
+
+        <ui:define name="menu">
+            
+            <p>menu</p>
+            
+        </ui:define>
+        
+        <ui:define name="content">
+            
+            <h:form prependId="false">
+                <p><h:commandButton id="button" value="button" /></p>
+            </h:form>
+            
+        </ui:define>       
+            
+    </ui:composition>
+        
+        
+</html>
diff --git a/test/web-profile/multi_templating/basic/src/test/java/com/sun/faces/test/webprofile/multi_templating/BasicRenderIT.java b/test/web-profile/multi_templating/basic/src/test/java/com/sun/faces/test/webprofile/multi_templating/BasicRenderIT.java
new file mode 100644
index 0000000..3372ec4
--- /dev/null
+++ b/test/web-profile/multi_templating/basic/src/test/java/com/sun/faces/test/webprofile/multi_templating/BasicRenderIT.java
@@ -0,0 +1,148 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.webprofile.multi_templating;
+
+import com.gargoylesoftware.htmlunit.WebResponse;
+import com.gargoylesoftware.htmlunit.html.HtmlLink;
+import com.gargoylesoftware.htmlunit.html.DomNodeList;
+import com.gargoylesoftware.htmlunit.html.HtmlElement;
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.DomElement;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.assertEquals;
+
+public class BasicRenderIT {
+    /**
+     * Stores the web URL.
+     */
+    private String webUrl;
+    /**
+     * Stores the web client.
+     */
+    private WebClient webClient;
+
+    /**
+     * Setup before testing.
+     * 
+     * @throws Exception when a serious error occurs.
+     */
+    @BeforeClass
+    public static void setUpClass() throws Exception {
+    }
+
+    /**
+     * Cleanup after testing.
+     * 
+     * @throws Exception when a serious error occurs.
+     */
+    @AfterClass
+    public static void tearDownClass() throws Exception {
+    }
+
+    /**
+     * Setup before testing.
+     */
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    /**
+     * Tear down after testing.
+     */
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testBasicRender() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl);
+
+        assertTrue(page.getBody().asText().indexOf("Site design by Xoxiety.com") != -1);
+        
+        DomNodeList<DomElement> links = page.getElementsByTagName("link");
+        assertEquals(1, links.size());
+        HtmlLink styleLink = (HtmlLink) links.get(0);
+        WebResponse response = styleLink.getWebResponse(true);
+        String css = response.getContentAsString("UTF-8");
+        String contextName = extractContextNameFromWebUrl(webUrl);
+        String resourceRef = synthesizeResourceRef(contextName, "concert.jpg", "basic");
+        assertTrue(css.contains(resourceRef));
+
+        resourceRef = synthesizeResourceRef(contextName, "star.png", "basic");
+        assertTrue(css.contains(resourceRef));
+
+        resourceRef = synthesizeResourceRef(contextName, "flourishes.png", "basic");
+        assertTrue(css.contains(resourceRef));
+
+        resourceRef = synthesizeResourceRef(contextName, "banner3.png", "basic");
+        assertTrue(css.contains(resourceRef));
+
+
+    }
+    
+    private String extractContextNameFromWebUrl(String webUrl) {
+        String str = webUrl;
+        
+        if (str.endsWith("/")) {
+            str = str.substring(0, str.length() - 1);
+        }
+        int i = str.lastIndexOf("/");
+        if (-1 != 1) {
+            str = str.substring(i+1);
+        }
+        
+        return str;
+    }
+    
+    private String synthesizeResourceRef(String contextName, String resourceName, String contractName) {
+        String result = "url(/" + contextName + "/faces/javax.faces.resource/" + 
+                resourceName + "?con=" + contractName + ")";
+        return result;
+    }
+}
diff --git a/test/web-profile/multi_templating/pom.xml b/test/web-profile/multi_templating/pom.xml
new file mode 100644
index 0000000..13cfcad
--- /dev/null
+++ b/test/web-profile/multi_templating/pom.xml
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.webprofile</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.webprofile.multi_templating</groupId>
+    <artifactId>pom</artifactId>
+    <packaging>pom</packaging>
+    <name>Mojarra ${project.version} - Test - Web-Profile - Multi-Templating</name>
+    <modules>
+        <module>basic</module>
+    </modules>
+</project>
diff --git a/test/web-profile/pom.xml b/test/web-profile/pom.xml
new file mode 100644
index 0000000..3ca10de
--- /dev/null
+++ b/test/web-profile/pom.xml
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.webprofile</groupId>
+    <artifactId>pom</artifactId>
+    <packaging>pom</packaging>
+    <name>Mojarra ${project.version} - Test - Web-Profile</name>
+    <dependencies>
+        <dependency>
+            <groupId>com.sun.faces.test</groupId>
+            <artifactId>util</artifactId>
+            <version>${project.version}</version>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+    <modules>
+        <module>adf</module>	
+        <module>facelets</module>
+        <module>flow</module>
+        <module>multi_templating</module>
+        <module>renderKit</module>
+        <module>scope</module>
+        <module>stateSaving</module>
+    </modules>
+</project>
diff --git a/test/web-profile/renderKit/basic/inputFileFailure.txt b/test/web-profile/renderKit/basic/inputFileFailure.txt
new file mode 100644
index 0000000..f773998
--- /dev/null
+++ b/test/web-profile/renderKit/basic/inputFileFailure.txt
@@ -0,0 +1,2 @@
+This file does not contain the required string and will not be set into
+the model.
diff --git a/test/web-profile/renderKit/basic/inputFileSuccess.txt b/test/web-profile/renderKit/basic/inputFileSuccess.txt
new file mode 100644
index 0000000..8b36847
--- /dev/null
+++ b/test/web-profile/renderKit/basic/inputFileSuccess.txt
@@ -0,0 +1,2 @@
+This file contains the string JSR-344 and will be successfully set into
+the model.
diff --git a/test/web-profile/renderKit/basic/nbactions.xml b/test/web-profile/renderKit/basic/nbactions.xml
new file mode 100644
index 0000000..e2b8433
--- /dev/null
+++ b/test/web-profile/renderKit/basic/nbactions.xml
@@ -0,0 +1,163 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--><actions>
+        <action>
+            <actionName>debug.test.single</actionName>
+            <goals>
+                <goal>test-compile</goal>
+                <goal>surefire:test</goal>
+            </goals>
+            <properties>
+                <test>${packageClassName}</test>
+                <forkMode>once</forkMode>
+                <maven.surefire.debug>-Xdebug -Xrunjdwp:transport=dt_socket,server=n,address=${jpda.address}</maven.surefire.debug>
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                <jpda.listen>true</jpda.listen>
+                <project.build.finalName>test-webprofile-renderKit-basic</project.build.finalName>
+                <webapp.projectStage>Development</webapp.projectStage>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                <integration.serverPort>8080</integration.serverPort>
+                <integration.serverName>localhost</integration.serverName>
+                <integration.url>http://localhost:8080/test-webprofile-renderKit-basic/</integration.url>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+            </properties>
+        </action>
+        <action>
+            <actionName>test.single</actionName>
+            <goals>
+                <goal>test-compile</goal>
+                <goal>surefire:test</goal>
+            </goals>
+            <properties>
+                <project.build.finalName>test-webprofile-renderKit-basic</project.build.finalName>
+                <integration.serverPort>8080</integration.serverPort>
+                <integration.serverName>localhost</integration.serverName>
+                <integration.url>http://localhost:8080/test-webprofile-renderKit-basic/</integration.url>
+                <test>${packageClassName}</test>
+            </properties>
+        </action>
+        <action>
+            <actionName>build</actionName>
+            <goals>
+                <goal>install</goal>
+            </goals>
+            <properties>
+                <webapp.projectStage>Development</webapp.projectStage>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+            </properties>
+        </action>
+        <action>
+            <actionName>rebuild</actionName>
+            <goals>
+                <goal>clean</goal>
+                <goal>install</goal>
+            </goals>
+            <properties>
+                
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                
+                <webapp.projectStage>Development</webapp.projectStage>
+                
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                
+            </properties>
+        </action>
+        <action>
+            <actionName>build-with-dependencies</actionName>
+            <reactor>also-make</reactor>
+            <goals>
+                <goal>install</goal>
+            </goals>
+            <properties>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                <webapp.projectStage>Development</webapp.projectStage>
+            </properties>
+        </action>
+        <action>
+            <actionName>run</actionName>
+            <goals>
+                <goal>package</goal>
+            </goals>
+            <properties>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                <netbeans.deploy>true</netbeans.deploy>
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                <webapp.projectStage>Development</webapp.projectStage>
+            </properties>
+        </action>
+        <action>
+            <actionName>run.single.deploy</actionName>
+            <goals>
+                <goal>package</goal>
+            </goals>
+            <properties>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                <netbeans.deploy>true</netbeans.deploy>
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                <netbeans.deploy.clientUrlPart>${webpagePath}</netbeans.deploy.clientUrlPart>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                <webapp.projectStage>Development</webapp.projectStage>
+            </properties>
+        </action>
+        <action>
+            <actionName>debug.single.deploy</actionName>
+            <goals>
+                <goal>package</goal>
+            </goals>
+            <properties>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                <netbeans.deploy>true</netbeans.deploy>
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                <netbeans.deploy.debugmode>true</netbeans.deploy.debugmode>
+                <netbeans.deploy.clientUrlPart>${webpagePath}</netbeans.deploy.clientUrlPart>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                <webapp.projectStage>Development</webapp.projectStage>
+            </properties>
+        </action>
+    </actions>
diff --git a/test/web-profile/renderKit/basic/pom.xml b/test/web-profile/renderKit/basic/pom.xml
new file mode 100644
index 0000000..775a6f3
--- /dev/null
+++ b/test/web-profile/renderKit/basic/pom.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.webprofile.renderKit</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.webprofile.renderKit</groupId>
+    <artifactId>basic</artifactId>
+    <packaging>war</packaging>
+    <name>Mojarra ${project.version} - Test - Web-Profile - RenderKit - Basic Tests</name>
+    <build>
+        <finalName>test-webprofile-renderKit-basic</finalName>
+    </build>
+    <properties>
+        <netbeans.hint.deploy.server>gfv3ee6</netbeans.hint.deploy.server>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/test/web-profile/renderKit/basic/src/main/java/com/sun/faces/test/webprofile/renderKit/basic/FileUploadBean.java b/test/web-profile/renderKit/basic/src/main/java/com/sun/faces/test/webprofile/renderKit/basic/FileUploadBean.java
new file mode 100644
index 0000000..caaed6b
--- /dev/null
+++ b/test/web-profile/renderKit/basic/src/main/java/com/sun/faces/test/webprofile/renderKit/basic/FileUploadBean.java
@@ -0,0 +1,99 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.webprofile.renderKit.basic;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Scanner;
+import javax.enterprise.context.RequestScoped;
+import javax.faces.application.ProjectStage;
+import javax.faces.context.FacesContext;
+import javax.inject.Named;
+import javax.servlet.http.Part;
+
+ at Named
+ at RequestScoped
+public class FileUploadBean {
+
+    public FileUploadBean() {
+    }
+    private Part uploadedFile;
+
+    public Part getUploadedFile() {
+        return uploadedFile;
+    }
+
+    public void setUploadedFile(Part uploadedFile) {
+        this.uploadedFile = uploadedFile;
+    }
+    
+    public String getFileText() {
+        String text = "";
+
+        if (null != uploadedFile) {
+            try {
+                InputStream is = uploadedFile.getInputStream();
+                text = new Scanner( is ).useDelimiter("\\A").next();
+            } catch (IOException ex) {
+                
+            }
+        }
+        return text;
+    }
+    
+    private String text;
+
+    public String getText() {
+        return text;
+    }
+
+    public void setText(String text) {
+        this.text = text;
+    }
+
+    public String getProjectStage() {
+        String projectStage = null;
+        if (FacesContext.getCurrentInstance().isProjectStage(ProjectStage.Development)) {
+            projectStage = "ProjectStage.Development";
+        }
+        return projectStage;
+    }
+}
diff --git a/test/web-profile/renderKit/basic/src/main/java/com/sun/faces/test/webprofile/renderKit/basic/FileValidator.java b/test/web-profile/renderKit/basic/src/main/java/com/sun/faces/test/webprofile/renderKit/basic/FileValidator.java
new file mode 100644
index 0000000..3ee7d3a
--- /dev/null
+++ b/test/web-profile/renderKit/basic/src/main/java/com/sun/faces/test/webprofile/renderKit/basic/FileValidator.java
@@ -0,0 +1,77 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.test.webprofile.renderKit.basic;
+
+import java.io.InputStream;
+import java.util.Scanner;
+import javax.faces.application.FacesMessage;
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.validator.FacesValidator;
+import javax.faces.validator.Validator;
+import javax.faces.validator.ValidatorException;
+import javax.servlet.http.Part;
+
+ at FacesValidator(value="FileValidator")
+public class FileValidator implements Validator {
+
+    @Override
+    public void validate(FacesContext context, UIComponent component, Object value) throws ValidatorException {
+        Part file = (Part) value;
+        String text = "";
+        
+        try {
+            InputStream is = file.getInputStream();
+            text = new Scanner( is ).useDelimiter("\\A").next();
+            // Do not accept an upload unless it contains the string
+            // JSR-344
+        } catch (Exception ex) {
+            throw new ValidatorException(new FacesMessage("Invalid file"), ex);
+        }
+        if (!text.contains("JSR-344")) {
+            throw new ValidatorException(new FacesMessage("Invalid file.  File must contain special string"));
+        }
+        
+    }
+    
+    
+    
+}
diff --git a/test/web-profile/renderKit/basic/src/main/java/com/sun/faces/test/webprofile/renderKit/basic/Issue2941Bean.java b/test/web-profile/renderKit/basic/src/main/java/com/sun/faces/test/webprofile/renderKit/basic/Issue2941Bean.java
new file mode 100644
index 0000000..b3539c0
--- /dev/null
+++ b/test/web-profile/renderKit/basic/src/main/java/com/sun/faces/test/webprofile/renderKit/basic/Issue2941Bean.java
@@ -0,0 +1,75 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.      
+ *  
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *  
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package test.webprofile.renderKit.basic;
+
+import javax.faces.application.FacesMessage;
+import javax.faces.bean.ManagedBean;
+import javax.faces.context.FacesContext;
+import javax.servlet.http.Part;
+
+ at ManagedBean
+public class Issue2941Bean {
+    private Part file;
+
+	public Part getFile()
+	{
+		return null;
+	}
+	public void setFile(Part p)
+	{
+		FacesMessage msg=new FacesMessage("file 1 is saved");
+		msg.setSeverity(FacesMessage.SEVERITY_ERROR);
+		FacesContext.getCurrentInstance().addMessage(null, msg);
+		
+	}
+	
+	public Part getFile1()
+	{
+		return null;
+	}
+	public void setFile1(Part p)
+	{
+		FacesMessage msg=new FacesMessage("file 2 is saved");
+		msg.setSeverity(FacesMessage.SEVERITY_ERROR);
+		FacesContext.getCurrentInstance().addMessage(null, msg);
+		
+	}
+}
diff --git a/test/web-profile/renderKit/basic/src/main/webapp/WEB-INF/beans.xml b/test/web-profile/renderKit/basic/src/main/webapp/WEB-INF/beans.xml
new file mode 100644
index 0000000..c782f57
--- /dev/null
+++ b/test/web-profile/renderKit/basic/src/main/webapp/WEB-INF/beans.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- This file can be an empty text file (0 bytes) -->
+<!-- We're declaring the schema to save you time if you do have to configure 
+   this in the future -->
+<beans xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+   xsi:schemaLocation="
+        http://java.sun.com/xml/ns/javaee 
+        http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
+</beans>
diff --git a/test/web-profile/renderKit/basic/src/main/webapp/WEB-INF/web.xml b/test/web-profile/renderKit/basic/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..54f95e1
--- /dev/null
+++ b/test/web-profile/renderKit/basic/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>${webapp.projectStage}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
+        <param-value>${webapp.partialStateSaving}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>${webapp.stateSavingMethod}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>com.sun.faces.enableClientStateDebugging</param-name>
+        <param-value>${webapp.enableClientStateDebugging}</param-value>
+    </context-param>
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <welcome-file-list>
+        <welcome-file>faces/inputFile.xhtml</welcome-file>
+    </welcome-file-list>
+</web-app>
diff --git a/test/web-profile/renderKit/basic/src/main/webapp/inputFile.xhtml b/test/web-profile/renderKit/basic/src/main/webapp/inputFile.xhtml
new file mode 100644
index 0000000..659e8ad
--- /dev/null
+++ b/test/web-profile/renderKit/basic/src/main/webapp/inputFile.xhtml
@@ -0,0 +1,66 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:h="http://java.sun.com/jsf/html">
+
+    <h:form id="form" enctype="multipart/form-data" prependId="false">
+        
+        <p><h:inputText id="text" value="#{fileUploadBean.text}" /></p>
+        
+        <p><h:inputFile id="file" value="#{fileUploadBean.uploadedFile}"> 
+           <f:validator validatorId="FileValidator" />
+       </h:inputFile>
+        </p>
+       <br/>
+       
+       <p id="textOutput">Text: #{fileUploadBean.text}</p>
+       
+       <h:commandButton id="button" value="submit"/>
+       
+       #{fileUploadBean.fileText}
+       
+       <p><h:messages id="messages" /></p>
+    </h:form>
+
+</html>
diff --git a/test/web-profile/renderKit/basic/src/main/webapp/inputFileAjax.xhtml b/test/web-profile/renderKit/basic/src/main/webapp/inputFileAjax.xhtml
new file mode 100644
index 0000000..e4d38c5
--- /dev/null
+++ b/test/web-profile/renderKit/basic/src/main/webapp/inputFileAjax.xhtml
@@ -0,0 +1,79 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head></h:head>
+
+    <h:form id="form" enctype="multipart/form-data" prependId="false">
+
+        <h4>Manual Testing Instructions</h4>
+        <ul>
+        <li>Press <i>Choose File</i> button</li>
+        <li>Navigate to root directory for this application (test/webprofile/renderKit/basic)</li>
+        <li>Select <i>inputFileSuccess.txt</i> file</li>
+        <li>You should see the text: <i>This file contains the string JSR-344 and will be successfully set into the model.</i></li>
+        <li>Do the same by choosing <i>inputFileFailure.txt</i> file</li>
+        <li>You should see the text: <i>Invalid file. File must contain special string</i></li>
+        </ul>
+        
+        <p><h:inputText id="text" value="#{fileUploadBean.text}">
+           </h:inputText></p>
+        
+        <p><h:inputFile id="file" value="#{fileUploadBean.uploadedFile}"> 
+             <f:validator validatorId="FileValidator" />
+             <f:ajax execute="@this" render="@form"/>
+           </h:inputFile>
+        </p>
+       <br/>
+       
+       <p id="textOutput">Text: #{fileUploadBean.text}</p>
+       
+       <h:commandButton id="button" value="submit"/>
+       
+       #{fileUploadBean.fileText}
+       
+       <p><h:messages id="messages" /></p>
+    </h:form>
+
+</html>
diff --git a/test/web-profile/renderKit/basic/src/main/webapp/inputFileNoEncTyoe.xhtml b/test/web-profile/renderKit/basic/src/main/webapp/inputFileNoEncTyoe.xhtml
new file mode 100644
index 0000000..b48ce45
--- /dev/null
+++ b/test/web-profile/renderKit/basic/src/main/webapp/inputFileNoEncTyoe.xhtml
@@ -0,0 +1,68 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:h="http://java.sun.com/jsf/html">
+
+    <h:form id="form" prependId="false">
+        
+        <p><h:inputText id="text" value="#{fileUploadBean.text}" /></p>
+        
+        <p><h:inputFile id="file" value="#{fileUploadBean.uploadedFile}"> 
+           <f:validator validatorId="FileValidator" />
+       </h:inputFile>
+        </p>
+       <br/>
+       
+       <p id="textOutput">Text: #{fileUploadBean.text}</p>
+       
+       <h:commandButton id="button" value="submit"/>
+       
+       #{fileUploadBean.fileText}
+
+       ${fileUploadBean.projectStage}
+       
+       <p><h:messages id="messages" /></p>
+    </h:form>
+
+</html>
diff --git a/test/web-profile/renderKit/basic/src/main/webapp/issue2941.xhtml b/test/web-profile/renderKit/basic/src/main/webapp/issue2941.xhtml
new file mode 100644
index 0000000..71b287a
--- /dev/null
+++ b/test/web-profile/renderKit/basic/src/main/webapp/issue2941.xhtml
@@ -0,0 +1,70 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!--
+****** NOTE: There is NO HtmlUnit test for this page (issue) because HtmlUnit cannot
+      handle programmatic creation of IFrame onload callback (done in JSF)
+      for IE. IFrame is still used because the form is multipart/form-data.
+      This tests standard ajax in conjuction with that form enc type.
+******
+-->
+
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"
+	xmlns:h="http://xmlns.jcp.org/jsf/html"
+	xmlns:f="http://xmlns.jcp.org/jsf/core"
+	xmlns:ui="http://xmlns.jcp.org/jsf/facelets">
+<h:head>
+</h:head>
+<h:body>
+	
+	<h:form id="f" enctype="multipart/form-data">
+		<h:messages id="msgs"></h:messages>
+		<h:inputFile value="#{issue2941Bean.file}" id="file">
+			<f:ajax execute="@this" render="@this msgs"></f:ajax>
+		</h:inputFile>
+		<h:inputFile value="#{issue2941Bean.file1}" id="file1">
+			<f:ajax execute="@this" render="@this msgs"></f:ajax>
+		</h:inputFile>
+	</h:form>
+</h:body>
+</html>
diff --git a/test/web-profile/renderKit/basic/src/test/java/com/sun/faces/test/webprofile/renderKit/basic/Spec802IT.java b/test/web-profile/renderKit/basic/src/test/java/com/sun/faces/test/webprofile/renderKit/basic/Spec802IT.java
new file mode 100644
index 0000000..a4f3b55
--- /dev/null
+++ b/test/web-profile/renderKit/basic/src/test/java/com/sun/faces/test/webprofile/renderKit/basic/Spec802IT.java
@@ -0,0 +1,128 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDLGPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.webprofile.renderKit.basic;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlFileInput;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
+import com.sun.faces.test.junit.JsfServerExclude;
+import com.sun.faces.test.junit.JsfTest;
+import com.sun.faces.test.junit.JsfTestRunner;
+import com.sun.faces.test.junit.JsfVersion;
+import java.io.File;
+import org.junit.After;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+import org.junit.Before;
+import org.junit.runner.RunWith;
+
+ at RunWith(JsfTestRunner.class)
+public class Spec802IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @JsfTest(value = JsfVersion.JSF_2_2_0, excludes = {JsfServerExclude.WEBLOGIC_12_1_3})
+    public void testFileUpload() throws Exception {
+        webClient = new WebClient();
+        HtmlPage page = webClient.getPage(webUrl + "faces/inputFile.xhtml");
+        HtmlTextInput text;
+
+        String basedir = System.getProperty("basedir");
+        HtmlFileInput fileInput = (HtmlFileInput) page.getElementById("file");
+        fileInput.setValueAttribute(basedir + File.separator + "inputFileSuccess.txt");
+
+        text = (HtmlTextInput) page.getElementById("text");
+        String textValue = "" + System.currentTimeMillis();
+        text.setText(textValue);
+
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("button");
+
+        page = button.click();
+
+        String pageText = page.getBody().asText();
+        assertTrue(pageText.contains("JSR-344"));
+
+        pageText = page.getElementById("textOutput").getTextContent();
+        assertTrue(pageText.contains(textValue));
+
+        page = webClient.getPage(webUrl + "faces/inputFile.xhtml");
+
+        fileInput = (HtmlFileInput) page.getElementById("file");
+        fileInput.setValueAttribute(basedir + File.separator + "inputFileFailure.txt");
+        button = (HtmlSubmitInput) page.getElementById("button");
+
+        text = (HtmlTextInput) page.getElementById("text");
+        textValue = "" + System.currentTimeMillis();
+        text.setText(textValue);
+
+        page = button.click();
+
+        pageText = page.getBody().asText();
+        assertFalse(pageText.contains("JSR-344"));
+        assertTrue(pageText.contains("Invalid file"));
+
+        pageText = page.getElementById("textOutput").getTextContent();
+        assertTrue(!pageText.contains(textValue));
+    }
+
+    @JsfTest(value = JsfVersion.JSF_2_2_0, excludes = {JsfServerExclude.WEBLOGIC_12_1_3})
+    public void testFileUploadNoEncType() throws Exception {
+        webClient = new WebClient();
+        HtmlPage page = webClient.getPage(webUrl + "faces/inputFileNoEncTyoe.xhtml");
+        if (page.asText().contains("ProjectStage.Development")) {
+            assertTrue(page.asText().contains(
+                    "File upload component requires a form with an enctype of multipart/form-data"));
+        }
+    }
+}
diff --git a/test/web-profile/renderKit/fileUploadFailure/inputFileSuccess.txt b/test/web-profile/renderKit/fileUploadFailure/inputFileSuccess.txt
new file mode 100644
index 0000000..8b36847
--- /dev/null
+++ b/test/web-profile/renderKit/fileUploadFailure/inputFileSuccess.txt
@@ -0,0 +1,2 @@
+This file contains the string JSR-344 and will be successfully set into
+the model.
diff --git a/test/web-profile/renderKit/fileUploadFailure/nbactions.xml b/test/web-profile/renderKit/fileUploadFailure/nbactions.xml
new file mode 100644
index 0000000..1a28044
--- /dev/null
+++ b/test/web-profile/renderKit/fileUploadFailure/nbactions.xml
@@ -0,0 +1,163 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--><actions>
+        <action>
+            <actionName>debug.test.single</actionName>
+            <goals>
+                <goal>test-compile</goal>
+                <goal>surefire:test</goal>
+            </goals>
+            <properties>
+                <test>${packageClassName}</test>
+                <forkMode>once</forkMode>
+                <maven.surefire.debug>-Xdebug -Xrunjdwp:transport=dt_socket,server=n,address=${jpda.address}</maven.surefire.debug>
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                <jpda.listen>true</jpda.listen>
+                <project.build.finalName>test-webprofile-renderKit-fileUploadFailure</project.build.finalName>
+                <webapp.projectStage>Development</webapp.projectStage>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                <integration.serverPort>8080</integration.serverPort>
+                <integration.serverName>localhost</integration.serverName>
+                <integration.url>http://localhost:8080/test-webprofile-renderKit-fileUploadFailure/</integration.url>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+            </properties>
+        </action>
+        <action>
+            <actionName>test.single</actionName>
+            <goals>
+                <goal>test-compile</goal>
+                <goal>surefire:test</goal>
+            </goals>
+            <properties>
+                <project.build.finalName>test-webprofile-renderKit-fileUploadFailure</project.build.finalName>
+                <integration.serverPort>8080</integration.serverPort>
+                <integration.serverName>localhost</integration.serverName>
+                <integration.url>http://localhost:8080/test-webprofile-renderKit-fileUploadFailure/</integration.url>
+                <test>${packageClassName}</test>
+            </properties>
+        </action>
+        <action>
+            <actionName>build</actionName>
+            <goals>
+                <goal>install</goal>
+            </goals>
+            <properties>
+                <webapp.projectStage>Development</webapp.projectStage>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+            </properties>
+        </action>
+        <action>
+            <actionName>rebuild</actionName>
+            <goals>
+                <goal>clean</goal>
+                <goal>install</goal>
+            </goals>
+            <properties>
+                
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                
+                <webapp.projectStage>Development</webapp.projectStage>
+                
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                
+            </properties>
+        </action>
+        <action>
+            <actionName>build-with-dependencies</actionName>
+            <reactor>also-make</reactor>
+            <goals>
+                <goal>install</goal>
+            </goals>
+            <properties>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                <webapp.projectStage>Development</webapp.projectStage>
+            </properties>
+        </action>
+        <action>
+            <actionName>run</actionName>
+            <goals>
+                <goal>package</goal>
+            </goals>
+            <properties>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                <netbeans.deploy>true</netbeans.deploy>
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                <webapp.projectStage>Development</webapp.projectStage>
+            </properties>
+        </action>
+        <action>
+            <actionName>run.single.deploy</actionName>
+            <goals>
+                <goal>package</goal>
+            </goals>
+            <properties>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                <netbeans.deploy>true</netbeans.deploy>
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                <netbeans.deploy.clientUrlPart>${webpagePath}</netbeans.deploy.clientUrlPart>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                <webapp.projectStage>Development</webapp.projectStage>
+            </properties>
+        </action>
+        <action>
+            <actionName>debug.single.deploy</actionName>
+            <goals>
+                <goal>package</goal>
+            </goals>
+            <properties>
+                <webapp.partialStateSaving>false</webapp.partialStateSaving>
+                <netbeans.deploy>true</netbeans.deploy>
+                <webapp.enableClientStateDebugging>true</webapp.enableClientStateDebugging>
+                <netbeans.deploy.debugmode>true</netbeans.deploy.debugmode>
+                <netbeans.deploy.clientUrlPart>${webpagePath}</netbeans.deploy.clientUrlPart>
+                <webapp.stateSavingMethod>client</webapp.stateSavingMethod>
+                <webapp.projectStage>Development</webapp.projectStage>
+            </properties>
+        </action>
+    </actions>
diff --git a/test/web-profile/renderKit/fileUploadFailure/pom.xml b/test/web-profile/renderKit/fileUploadFailure/pom.xml
new file mode 100644
index 0000000..9bc5c78
--- /dev/null
+++ b/test/web-profile/renderKit/fileUploadFailure/pom.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.webprofile.renderKit</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.webprofile.renderKit</groupId>
+    <artifactId>fileUploadFailure</artifactId>
+    <packaging>war</packaging>
+    <name>Mojarra ${project.version} - Test - Web-Profile - RenderKit - FileUpload Failure</name>
+    <build>
+        <finalName>test-webprofile-renderKit-fileUploadFailure</finalName>
+    </build>
+    <properties>
+        <netbeans.hint.deploy.server>gfv3ee6</netbeans.hint.deploy.server>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/test/web-profile/renderKit/fileUploadFailure/src/main/java/com/sun/faces/test/webprofile/renderKit/fileUploadFailure/ExternalContextImpl.java b/test/web-profile/renderKit/fileUploadFailure/src/main/java/com/sun/faces/test/webprofile/renderKit/fileUploadFailure/ExternalContextImpl.java
new file mode 100644
index 0000000..e26e908
--- /dev/null
+++ b/test/web-profile/renderKit/fileUploadFailure/src/main/java/com/sun/faces/test/webprofile/renderKit/fileUploadFailure/ExternalContextImpl.java
@@ -0,0 +1,73 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.test.webprofile.renderKit.fileUploadFailure;
+
+import javax.faces.context.ExternalContext;
+import javax.faces.context.ExternalContextWrapper;
+import javax.servlet.http.HttpServletRequest;
+
+public class ExternalContextImpl extends ExternalContextWrapper {
+    
+    private ExternalContext wrapped;
+
+    public ExternalContextImpl(ExternalContext wrapped) {
+        this.wrapped = wrapped;
+    }
+
+    @Override
+    public ExternalContext getWrapped() {
+        return wrapped;
+    }
+    
+    private HttpServletRequestImpl request;
+
+    @Override
+    public Object getRequest() {
+        if (null == request) {
+            request = new HttpServletRequestImpl((HttpServletRequest) wrapped.getRequest());
+        }
+        return request;
+    }
+    
+    
+    
+    
+}
diff --git a/test/web-profile/renderKit/fileUploadFailure/src/main/java/com/sun/faces/test/webprofile/renderKit/fileUploadFailure/FacesContextFactoryWrapper.java b/test/web-profile/renderKit/fileUploadFailure/src/main/java/com/sun/faces/test/webprofile/renderKit/fileUploadFailure/FacesContextFactoryWrapper.java
new file mode 100644
index 0000000..6eb2ce9
--- /dev/null
+++ b/test/web-profile/renderKit/fileUploadFailure/src/main/java/com/sun/faces/test/webprofile/renderKit/fileUploadFailure/FacesContextFactoryWrapper.java
@@ -0,0 +1,72 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.test.webprofile.renderKit.fileUploadFailure;
+
+import javax.faces.FacesException;
+import javax.faces.context.FacesContext;
+import javax.faces.context.FacesContextFactory;
+import javax.faces.lifecycle.Lifecycle;
+
+public class FacesContextFactoryWrapper extends FacesContextFactory {
+
+    public FacesContextFactoryWrapper() {
+    }
+    
+    private FacesContextFactory oldFactory = null;
+    
+    public FacesContextFactoryWrapper(FacesContextFactory yourOldFactory) {
+	oldFactory = yourOldFactory;
+    }
+    
+    @Override
+    public FacesContext getFacesContext(Object context, Object request,
+					Object response, 
+					Lifecycle lifecycle) throws FacesException {
+	return new FacesContextImpl(oldFactory.getFacesContext(context, request, response, 
+					  lifecycle));
+    }
+
+    @Override
+    public String toString() {
+	return "FacesContextFactoryWrapper";
+    }
+
+}
diff --git a/test/web-profile/renderKit/fileUploadFailure/src/main/java/com/sun/faces/test/webprofile/renderKit/fileUploadFailure/FacesContextImpl.java b/test/web-profile/renderKit/fileUploadFailure/src/main/java/com/sun/faces/test/webprofile/renderKit/fileUploadFailure/FacesContextImpl.java
new file mode 100644
index 0000000..062278f
--- /dev/null
+++ b/test/web-profile/renderKit/fileUploadFailure/src/main/java/com/sun/faces/test/webprofile/renderKit/fileUploadFailure/FacesContextImpl.java
@@ -0,0 +1,75 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.test.webprofile.renderKit.fileUploadFailure;
+
+import javax.faces.context.ExternalContext;
+import javax.faces.context.FacesContext;
+import javax.faces.context.FacesContextWrapper;
+
+public class FacesContextImpl extends FacesContextWrapper {
+    
+    private FacesContext wrapped;
+
+    public FacesContextImpl(FacesContext wrapped) {
+        this.wrapped = wrapped;
+    }
+    
+    @Override
+    public FacesContext getWrapped() {
+        return wrapped;
+    }
+    
+    private ExternalContextImpl extContext;
+
+    @Override
+    public ExternalContext getExternalContext() {
+        if (null == extContext) {
+            extContext = new ExternalContextImpl(getWrapped().getExternalContext());
+            
+        }
+        return extContext;
+    }
+    
+    
+    
+    
+    
+}
diff --git a/test/web-profile/renderKit/fileUploadFailure/src/main/java/com/sun/faces/test/webprofile/renderKit/fileUploadFailure/FileUploadBean.java b/test/web-profile/renderKit/fileUploadFailure/src/main/java/com/sun/faces/test/webprofile/renderKit/fileUploadFailure/FileUploadBean.java
new file mode 100644
index 0000000..d17696e
--- /dev/null
+++ b/test/web-profile/renderKit/fileUploadFailure/src/main/java/com/sun/faces/test/webprofile/renderKit/fileUploadFailure/FileUploadBean.java
@@ -0,0 +1,80 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.webprofile.renderKit.fileUploadFailure;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Scanner;
+import javax.enterprise.context.RequestScoped;
+import javax.inject.Named;
+import javax.servlet.http.Part;
+
+ at Named
+ at RequestScoped
+public class FileUploadBean {
+
+    public FileUploadBean() {
+    }
+    private Part uploadedFile;
+
+    public Part getUploadedFile() {
+        return uploadedFile;
+    }
+
+    public void setUploadedFile(Part uploadedFile) {
+        this.uploadedFile = uploadedFile;
+    }
+    
+    public String getFileText() {
+        String text = "";
+
+        if (null != uploadedFile) {
+            try {
+                InputStream is = uploadedFile.getInputStream();
+                text = new Scanner( is ).useDelimiter("\\A").next();
+            } catch (IOException ex) {
+                
+            }
+        }
+        return text;
+    }
+    
+}
diff --git a/test/web-profile/renderKit/fileUploadFailure/src/main/java/com/sun/faces/test/webprofile/renderKit/fileUploadFailure/HttpServletRequestImpl.java b/test/web-profile/renderKit/fileUploadFailure/src/main/java/com/sun/faces/test/webprofile/renderKit/fileUploadFailure/HttpServletRequestImpl.java
new file mode 100644
index 0000000..e1aef4f
--- /dev/null
+++ b/test/web-profile/renderKit/fileUploadFailure/src/main/java/com/sun/faces/test/webprofile/renderKit/fileUploadFailure/HttpServletRequestImpl.java
@@ -0,0 +1,66 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.test.webprofile.renderKit.fileUploadFailure;
+
+import java.io.IOException;
+import java.util.Collection;
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletRequestWrapper;
+import javax.servlet.http.Part;
+
+public class HttpServletRequestImpl extends HttpServletRequestWrapper {
+    
+    private HttpServletRequest wrapped;
+
+    public HttpServletRequestImpl(HttpServletRequest request) {
+        super(request);
+        this.wrapped = request;
+    }
+
+    @Override
+    public Collection<Part> getParts() throws IOException, ServletException {
+        throw new IOException("Negative test, intentional failure");
+    }
+    
+    
+    
+}
diff --git a/test/web-profile/renderKit/fileUploadFailure/src/main/webapp/WEB-INF/beans.xml b/test/web-profile/renderKit/fileUploadFailure/src/main/webapp/WEB-INF/beans.xml
new file mode 100644
index 0000000..c782f57
--- /dev/null
+++ b/test/web-profile/renderKit/fileUploadFailure/src/main/webapp/WEB-INF/beans.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- This file can be an empty text file (0 bytes) -->
+<!-- We're declaring the schema to save you time if you do have to configure 
+   this in the future -->
+<beans xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+   xsi:schemaLocation="
+        http://java.sun.com/xml/ns/javaee 
+        http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
+</beans>
diff --git a/test/web-profile/renderKit/fileUploadFailure/src/main/webapp/WEB-INF/faces-config.xml b/test/web-profile/renderKit/fileUploadFailure/src/main/webapp/WEB-INF/faces-config.xml
new file mode 100644
index 0000000..b3d6376
--- /dev/null
+++ b/test/web-profile/renderKit/fileUploadFailure/src/main/webapp/WEB-INF/faces-config.xml
@@ -0,0 +1,13 @@
+<?xml version='1.0' encoding='UTF-8'?>
+
+<faces-config version="2.0"
+    xmlns="http://java.sun.com/xml/ns/javaee" 
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd">
+        
+        <factory>
+            <faces-context-factory>com.sun.faces.test.webprofile.renderKit.fileUploadFailure.FacesContextFactoryWrapper</faces-context-factory>
+        </factory>
+
+
+</faces-config>
diff --git a/test/web-profile/renderKit/fileUploadFailure/src/main/webapp/WEB-INF/web.xml b/test/web-profile/renderKit/fileUploadFailure/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..54f95e1
--- /dev/null
+++ b/test/web-profile/renderKit/fileUploadFailure/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>${webapp.projectStage}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
+        <param-value>${webapp.partialStateSaving}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>${webapp.stateSavingMethod}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>com.sun.faces.enableClientStateDebugging</param-name>
+        <param-value>${webapp.enableClientStateDebugging}</param-value>
+    </context-param>
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <welcome-file-list>
+        <welcome-file>faces/inputFile.xhtml</welcome-file>
+    </welcome-file-list>
+</web-app>
diff --git a/test/web-profile/renderKit/fileUploadFailure/src/main/webapp/inputFile.xhtml b/test/web-profile/renderKit/fileUploadFailure/src/main/webapp/inputFile.xhtml
new file mode 100644
index 0000000..4dcc041
--- /dev/null
+++ b/test/web-profile/renderKit/fileUploadFailure/src/main/webapp/inputFile.xhtml
@@ -0,0 +1,58 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:h="http://java.sun.com/jsf/html">
+
+    <h:form id="form" enctype="multipart/form-data" prependId="false">
+        
+        <p><h:inputFile id="file" value="#{fileUploadBean.uploadedFile}" /> 
+        </p>
+       <br/>
+       
+       <h:commandButton id="button" value="submit"/>
+       
+       <p><h:messages id="messages" /></p>
+    </h:form>
+
+</html>
diff --git a/test/web-profile/renderKit/fileUploadFailure/src/test/java/com/sun/faces/test/webprofile/renderKit/fileUploadFailure/Issue2326IT.java b/test/web-profile/renderKit/fileUploadFailure/src/test/java/com/sun/faces/test/webprofile/renderKit/fileUploadFailure/Issue2326IT.java
new file mode 100644
index 0000000..56731c2
--- /dev/null
+++ b/test/web-profile/renderKit/fileUploadFailure/src/test/java/com/sun/faces/test/webprofile/renderKit/fileUploadFailure/Issue2326IT.java
@@ -0,0 +1,90 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDLGPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.webprofile.renderKit.fileUploadFailure;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlFileInput;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import com.sun.faces.test.junit.JsfServerExclude;
+import com.sun.faces.test.junit.JsfTest;
+import com.sun.faces.test.junit.JsfTestRunner;
+import com.sun.faces.test.junit.JsfVersion;
+import java.io.File;
+import org.junit.After;
+import static org.junit.Assert.assertTrue;
+import org.junit.Before;
+import org.junit.runner.RunWith;
+
+ at RunWith(JsfTestRunner.class)
+public class Issue2326IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @JsfTest(value = JsfVersion.JSF_2_2_0, excludes = {JsfServerExclude.WEBLOGIC_12_1_3})
+    public void testFileException() throws Exception {
+        webClient = new WebClient();
+        HtmlPage page = webClient.getPage(webUrl + "faces/inputFile.xhtml");
+
+        String basedir = System.getProperty("basedir");
+        HtmlFileInput fileInput = (HtmlFileInput) page.getElementById("file");
+        fileInput.setValueAttribute(basedir + File.separator + "inputFileSuccess.txt");
+
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("button");
+
+        webClient.setThrowExceptionOnFailingStatusCode(false);
+        page = button.click();
+
+        String pageText = page.getBody().asText();
+        assertTrue(pageText.contains("Negative test, intentional failure"));
+    }
+}
diff --git a/test/web-profile/renderKit/pom.xml b/test/web-profile/renderKit/pom.xml
new file mode 100644
index 0000000..1a4b0f9
--- /dev/null
+++ b/test/web-profile/renderKit/pom.xml
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.webprofile</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.webprofile.renderKit</groupId>
+    <artifactId>pom</artifactId>
+    <packaging>pom</packaging>
+    <name>Mojarra ${project.version} - Test - Web-Profile - RenderKit</name>
+    <modules>
+        <module>basic</module>
+        <module>fileUploadFailure</module>
+    </modules>
+</project>
diff --git a/test/web-profile/scope/pom.xml b/test/web-profile/scope/pom.xml
new file mode 100644
index 0000000..514b002
--- /dev/null
+++ b/test/web-profile/scope/pom.xml
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.webprofile</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.webprofile.scope</groupId>
+    <artifactId>pom</artifactId>
+    <packaging>pom</packaging>
+    <name>Mojarra ${project.version} - Test - Web-Profile - Scope</name>
+    <modules>
+        <module>view</module>
+    </modules>
+</project>
diff --git a/test/web-profile/scope/view/nbactions.xml b/test/web-profile/scope/view/nbactions.xml
new file mode 100644
index 0000000..178b2d1
--- /dev/null
+++ b/test/web-profile/scope/view/nbactions.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<actions>
+        <action>
+            <actionName>debug.test.single</actionName>
+            <goals>
+                <goal>test-compile</goal>
+                <goal>surefire:test</goal>
+            </goals>
+            <properties>
+                <test>${packageClassName}</test>
+                <forkMode>once</forkMode>
+                <maven.surefire.debug>-Xdebug -Xrunjdwp:transport=dt_socket,server=n,address=${jpda.address}</maven.surefire.debug>
+                <jpda.listen>true</jpda.listen>
+                <integration.url>http://localhost:8080/test-webprofile-scope-view/</integration.url>
+            </properties>
+        </action>
+        <action>
+            <actionName>test.single</actionName>
+            <goals>
+                <goal>test-compile</goal>
+                <goal>surefire:test</goal>
+            </goals>
+            <properties>
+                <test>${packageClassName}</test>
+                <integration.url>http://localhost:8080/test-webprofile-scope-view/</integration.url>
+            </properties>
+        </action>
+    </actions>
diff --git a/test/web-profile/scope/view/pom.xml b/test/web-profile/scope/view/pom.xml
new file mode 100644
index 0000000..b2d1e52
--- /dev/null
+++ b/test/web-profile/scope/view/pom.xml
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" 
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.webprofile.scope</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.webprofile.scope</groupId>
+    <artifactId>view</artifactId>
+    <packaging>war</packaging>
+    <name>Mojarra ${project.version} - Test - Web-Profile - Scope - View</name>
+    <build>
+        <finalName>test-webprofile-scope-view</finalName>
+    </build>
+    <properties>
+        <netbeans.hint.deploy.server>gfv3ee6</netbeans.hint.deploy.server>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/test/web-profile/scope/view/src/main/java/com/sun/faces/test/webprofile/scope/view/InvalidatedBean.java b/test/web-profile/scope/view/src/main/java/com/sun/faces/test/webprofile/scope/view/InvalidatedBean.java
new file mode 100644
index 0000000..a67796c
--- /dev/null
+++ b/test/web-profile/scope/view/src/main/java/com/sun/faces/test/webprofile/scope/view/InvalidatedBean.java
@@ -0,0 +1,93 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.webprofile.scope.view;
+
+import java.io.Serializable;
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
+import javax.faces.context.FacesContext;
+import javax.faces.view.ViewScoped;
+import javax.inject.Named;
+
+/**
+ * A ViewScoped bean testing session invalidation functionality.
+ */
+ at Named(value = "invalidatedBean")
+ at ViewScoped
+public class InvalidatedBean implements Serializable {
+    private static final long serialVersionUID = -4803754563990391919L;
+    
+    /**
+     * Stores the text.
+     */
+    private String text;
+
+    /**
+     * Constructor.
+     */
+    public InvalidatedBean() {
+        this.text = "This is from the constructor";
+    }
+
+    /**
+     * Post-construct.
+     *
+     */
+    @PostConstruct
+    public void init() {
+        FacesContext.getCurrentInstance().getExternalContext().getApplicationMap().remove("invalidated");
+        this.text = "This is from the @PostConstruct";
+    }
+
+    /**
+     * Pre-destroy
+     */
+    @PreDestroy
+    public void destroy() {
+        FacesContext.getCurrentInstance().getExternalContext().getApplicationMap().put("invalidated", true);
+    }
+
+    /**
+     * Get the text.
+     */
+    public String getText() {
+        return this.text;
+    }
+}
diff --git a/test/web-profile/scope/view/src/main/java/com/sun/faces/test/webprofile/scope/view/ViewScopedBean.java b/test/web-profile/scope/view/src/main/java/com/sun/faces/test/webprofile/scope/view/ViewScopedBean.java
new file mode 100644
index 0000000..fc5b9f6
--- /dev/null
+++ b/test/web-profile/scope/view/src/main/java/com/sun/faces/test/webprofile/scope/view/ViewScopedBean.java
@@ -0,0 +1,89 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.webprofile.scope.view;
+
+import java.io.Serializable;
+
+import java.util.Map;
+import javax.faces.context.FacesContext;
+import javax.faces.view.ViewScoped;
+import javax.inject.Named;
+
+ at Named
+ at ViewScoped
+public class ViewScopedBean implements Serializable {
+    
+
+    private static final String SESSION_KEY = ViewScopedBean.class.getName() + "_KEY";
+    private static final long serialVersionUID = 8437531843054754394L;
+    private int myCount = 0;
+    
+    private String value;
+
+    public String getValue() {
+        return value;
+    }
+
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+    public int getMyCount() {
+        return myCount;
+    }
+    
+    private synchronized int increment() {
+        Map<String, Object> sessionMap = FacesContext.getCurrentInstance().getExternalContext().getSessionMap();
+        Integer result = (Integer) sessionMap.get(SESSION_KEY);
+        if (null == result) {
+            result = new Integer(0);
+            sessionMap.put(SESSION_KEY, result);
+        }
+        sessionMap.put(SESSION_KEY, ++result);
+        return result;
+        
+    }
+
+    public ViewScopedBean() {
+        myCount = increment();
+    }
+    
+
+}
diff --git a/test/web-profile/scope/view/src/main/webapp/WEB-INF/beans.xml b/test/web-profile/scope/view/src/main/webapp/WEB-INF/beans.xml
new file mode 100644
index 0000000..a4e93ee
--- /dev/null
+++ b/test/web-profile/scope/view/src/main/webapp/WEB-INF/beans.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<beans xmlns="http://java.sun.com/xml/ns/javaee" 
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
+</beans>
diff --git a/test/web-profile/scope/view/src/main/webapp/WEB-INF/glassfish-web.xml b/test/web-profile/scope/view/src/main/webapp/WEB-INF/glassfish-web.xml
new file mode 100644
index 0000000..2f61666
--- /dev/null
+++ b/test/web-profile/scope/view/src/main/webapp/WEB-INF/glassfish-web.xml
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+<glassfish-web-app error-url="">
+  <context-root>/test-webprofile-scope-view</context-root>
+  <class-loader delegate="true"/>
+  <jsp-config>
+    <property name="keepgenerated" value="true">
+      <description>Keep a copy of the generated servlet class' java code.</description>
+    </property>
+  </jsp-config>
+</glassfish-web-app>
diff --git a/test/web-profile/scope/view/src/main/webapp/WEB-INF/web.xml b/test/web-profile/scope/view/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..7a863ea
--- /dev/null
+++ b/test/web-profile/scope/view/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>${webapp.projectStage}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
+        <param-value>${webapp.partialStateSaving}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>${webapp.stateSavingMethod}</param-value>
+    </context-param>
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <welcome-file-list>
+        <welcome-file>faces/index.xhtml</welcome-file>
+    </welcome-file-list>
+</web-app>
diff --git a/test/web-profile/scope/view/src/main/webapp/invalidatedPerform.xhtml b/test/web-profile/scope/view/src/main/webapp/invalidatedPerform.xhtml
new file mode 100644
index 0000000..c693a57
--- /dev/null
+++ b/test/web-profile/scope/view/src/main/webapp/invalidatedPerform.xhtml
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC 
+    "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title>Invalidated Session Perform</title>
+    </h:head>
+    <h:body>
+        #{facesContext.externalContext.invalidateSession()}
+    </h:body>
+</html>
diff --git a/test/web-profile/scope/view/src/main/webapp/invalidatedSession.xhtml b/test/web-profile/scope/view/src/main/webapp/invalidatedSession.xhtml
new file mode 100644
index 0000000..4390b56
--- /dev/null
+++ b/test/web-profile/scope/view/src/main/webapp/invalidatedSession.xhtml
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC 
+    "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title>Navigate Away Test</title>
+    </h:head>
+    <h:body>
+        <h:outputText value="#{invalidatedBean.text}"/>
+    </h:body>
+</html>
diff --git a/test/web-profile/scope/view/src/main/webapp/invalidatedVerify.xhtml b/test/web-profile/scope/view/src/main/webapp/invalidatedVerify.xhtml
new file mode 100644
index 0000000..56f61cc
--- /dev/null
+++ b/test/web-profile/scope/view/src/main/webapp/invalidatedVerify.xhtml
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC 
+    "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title>Invalidated Session Verify</title>
+    </h:head>
+    <h:body>
+        <h:outputText value="#{applicationScope['invalidated']}"/>
+    </h:body>
+</html>
diff --git a/test/web-profile/scope/view/src/main/webapp/otherPage.xhtml b/test/web-profile/scope/view/src/main/webapp/otherPage.xhtml
new file mode 100644
index 0000000..a224e20
--- /dev/null
+++ b/test/web-profile/scope/view/src/main/webapp/otherPage.xhtml
@@ -0,0 +1,64 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <head>
+        <title>ViewScoped2</title>
+    </head>
+    <body>
+        <h1>ViewScoped2</h1>
+        
+    <h:form prependId="false">
+        
+        <p id="count">#{viewScopedBean.myCount}</p>
+        
+        <p><h:commandButton id="stay" value="Stay Here" /></p>
+
+        <p><h:commandButton id="go" value="Leave" action="viewScoped"/></p>
+    </h:form>
+</body>
+</html>
diff --git a/test/web-profile/scope/view/src/main/webapp/viewScoped.xhtml b/test/web-profile/scope/view/src/main/webapp/viewScoped.xhtml
new file mode 100644
index 0000000..dacb1a5
--- /dev/null
+++ b/test/web-profile/scope/view/src/main/webapp/viewScoped.xhtml
@@ -0,0 +1,64 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <head>
+        <title>ViewScoped</title>
+    </head>
+    <body>
+        <h1>ViewScoped</h1>
+        
+    <h:form prependId="false">
+        
+        <p id="count">#{viewScopedBean.myCount}</p>
+        
+        <p><h:commandButton id="stay" value="Stay Here" /></p>
+        
+        <p><h:commandButton id="go" value="Leave" action="otherPage"/></p>
+    </h:form>
+</body>
+</html>
diff --git a/test/web-profile/scope/view/src/main/webapp/viewScoped2.xhtml b/test/web-profile/scope/view/src/main/webapp/viewScoped2.xhtml
new file mode 100644
index 0000000..a320209
--- /dev/null
+++ b/test/web-profile/scope/view/src/main/webapp/viewScoped2.xhtml
@@ -0,0 +1,59 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <head>
+        <title>ViewScoped</title>
+    </head>
+    <body>
+        <h1>ViewScoped</h1>
+        The current count is <h:outputText value="#{viewScopedBean.myCount}"/> <br/>
+        <h:panelGroup rendered="#{viewScope['viewScopedBean'] != null}">
+            Found the viewScopedBean using the viewMap!
+        </h:panelGroup>
+    </body>
+</html>
diff --git a/test/web-profile/scope/view/src/main/webapp/viewScopedInput.xhtml b/test/web-profile/scope/view/src/main/webapp/viewScopedInput.xhtml
new file mode 100644
index 0000000..11fe10a
--- /dev/null
+++ b/test/web-profile/scope/view/src/main/webapp/viewScopedInput.xhtml
@@ -0,0 +1,65 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <head>
+        <title>ViewScoped</title>
+    </head>
+    <body>
+        <h1>ViewScoped</h1>
+        
+    <h:form prependId="false">
+        
+        <p><h:inputText id="input" value="#{viewScopedBean.value}" /></p>
+        <p><h:outputText id="output" value="#{viewScopedBean.value}" /></p>
+        
+        <p><h:commandButton id="stay" value="Stay Here" /></p>
+        
+        <p><h:commandButton id="go" value="Leave" action="otherPage"/></p>
+    </h:form>
+</body>
+</html>
diff --git a/test/web-profile/scope/view/src/test/java/com/sun/faces/test/webprofile/scope/view/Issue2641IT.java b/test/web-profile/scope/view/src/test/java/com/sun/faces/test/webprofile/scope/view/Issue2641IT.java
new file mode 100644
index 0000000..4c664af
--- /dev/null
+++ b/test/web-profile/scope/view/src/test/java/com/sun/faces/test/webprofile/scope/view/Issue2641IT.java
@@ -0,0 +1,152 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.webprofile.scope.view;
+
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.DomElement;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+public class Issue2641IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @BeforeClass
+    public static void setUpClass() throws Exception {
+    }
+
+    @AfterClass
+    public static void tearDownClass() throws Exception {
+    }
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testViewScope() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/viewScoped.xhtml");
+        int previousCount = 0;
+        int count = Integer.parseInt(page.getElementById("count").getTextContent());
+        assertTrue(previousCount < count);
+        previousCount = count;
+
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("stay");
+        page = button.click();
+        count = Integer.parseInt(page.getElementById("count").getTextContent());
+        assertEquals(previousCount, count);
+
+        button = (HtmlSubmitInput) page.getElementById("stay");
+        page = button.click();
+        count = Integer.parseInt(page.getElementById("count").getTextContent());
+        assertEquals(previousCount, count);
+
+        button = (HtmlSubmitInput) page.getElementById("go");
+        page = button.click();
+        count = Integer.parseInt(page.getElementById("count").getTextContent());
+        assertTrue(previousCount < count);
+        previousCount = count;
+
+        button = (HtmlSubmitInput) page.getElementById("stay");
+        page = button.click();
+        count = Integer.parseInt(page.getElementById("count").getTextContent());
+        assertEquals(previousCount, count);
+
+        button = (HtmlSubmitInput) page.getElementById("stay");
+        page = button.click();
+        count = Integer.parseInt(page.getElementById("count").getTextContent());
+        assertEquals(previousCount, count);
+
+        button = (HtmlSubmitInput) page.getElementById("go");
+        page = button.click();
+        count = Integer.parseInt(page.getElementById("count").getTextContent());
+        assertTrue(previousCount < count);
+        previousCount = count;
+
+        button = (HtmlSubmitInput) page.getElementById("stay");
+        page = button.click();
+        count = Integer.parseInt(page.getElementById("count").getTextContent());
+        assertEquals(previousCount, count);
+
+        button = (HtmlSubmitInput) page.getElementById("stay");
+        page = button.click();
+        count = Integer.parseInt(page.getElementById("count").getTextContent());
+        assertEquals(previousCount, count);
+    }
+
+    @Test
+    public void testInvalidatedSession() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/invalidatedSession.xhtml");
+        assertTrue(page.asText().indexOf("This is from the @PostConstruct") != -1);
+        webClient.getPage(webUrl + "faces/invalidatedPerform.xhtml");
+        page = webClient.getPage(webUrl + "faces/invalidatedVerify.xhtml");
+        assertTrue(page.asText().indexOf("true") != -1);
+    }
+    
+    @Test
+    public void testViewScopedInput() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/viewScopedInput.xhtml");
+        HtmlTextInput input = (HtmlTextInput) page.getElementById("input");
+        String value = ""+System.currentTimeMillis();
+        input.setValueAttribute(value);
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("stay");
+        page = button.click();
+        DomElement output = page.getElementById("output");
+        assertTrue(output.asText().contains(value));
+        
+        
+    }
+}
diff --git a/test/web-profile/stateSaving/basic/pom.xml b/test/web-profile/stateSaving/basic/pom.xml
new file mode 100644
index 0000000..6dcd254
--- /dev/null
+++ b/test/web-profile/stateSaving/basic/pom.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.webprofile.statesaving</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.webprofile.statesaving</groupId>
+    <artifactId>basic</artifactId>
+    <packaging>war</packaging>
+    <name>Mojarra ${project.version} - Test - Web-Profile - State Saving - Basic</name>
+    <build>
+        <finalName>test-webprofile-statesaving-basic</finalName>
+    </build>
+    <properties>
+        <netbeans.hint.deploy.server>gfv3ee6</netbeans.hint.deploy.server>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/test/web-profile/stateSaving/basic/src/main/java/com/sun/faces/test/webprofile/statesaving/basic/Issue1845Bean.java b/test/web-profile/stateSaving/basic/src/main/java/com/sun/faces/test/webprofile/statesaving/basic/Issue1845Bean.java
new file mode 100644
index 0000000..b8e16a4
--- /dev/null
+++ b/test/web-profile/stateSaving/basic/src/main/java/com/sun/faces/test/webprofile/statesaving/basic/Issue1845Bean.java
@@ -0,0 +1,73 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.webprofile.statesaving.basic;
+
+import java.io.Serializable;
+import javax.enterprise.context.Conversation;
+import javax.enterprise.context.ConversationScoped;
+import javax.enterprise.inject.Model;
+import javax.inject.Inject;
+
+ at Model
+ at ConversationScoped
+public class Issue1845Bean implements Serializable {
+
+    private static final long serialVersionUID = 2736489267082630032L;
+    private boolean showButton;
+    @Inject
+    private Conversation conversation;
+
+    public void bar() {
+    }
+
+    public void beginConversation() {
+        if (conversation.isTransient()) {
+            conversation.begin();
+        }
+    }
+
+    public boolean isShowButton() {
+        return showButton;
+    }
+
+    public void setShowButton(boolean showButton) {
+        this.showButton = showButton;
+    }
+}
diff --git a/test/web-profile/stateSaving/basic/src/main/webapp/WEB-INF/beans.xml b/test/web-profile/stateSaving/basic/src/main/webapp/WEB-INF/beans.xml
new file mode 100644
index 0000000..9157ea3
--- /dev/null
+++ b/test/web-profile/stateSaving/basic/src/main/webapp/WEB-INF/beans.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<beans xmlns="http://java.sun.com/xml/ns/javaee"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
+</beans>
diff --git a/test/web-profile/stateSaving/basic/src/main/webapp/WEB-INF/faces-config.xml b/test/web-profile/stateSaving/basic/src/main/webapp/WEB-INF/faces-config.xml
new file mode 100644
index 0000000..30d561b
--- /dev/null
+++ b/test/web-profile/stateSaving/basic/src/main/webapp/WEB-INF/faces-config.xml
@@ -0,0 +1,7 @@
+<?xml version='1.0' encoding='UTF-8'?>
+
+<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
+              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+              xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
+              version="2.0">
+</faces-config>
diff --git a/test/web-profile/stateSaving/basic/src/main/webapp/WEB-INF/glassfish-web.xml b/test/web-profile/stateSaving/basic/src/main/webapp/WEB-INF/glassfish-web.xml
new file mode 100644
index 0000000..38e0b04
--- /dev/null
+++ b/test/web-profile/stateSaving/basic/src/main/webapp/WEB-INF/glassfish-web.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
+<glassfish-web-app error-url="">
+  <context-root>/test-webprofile-statesaving-basic</context-root>
+  <class-loader delegate="true"/>
+  <jsp-config>
+    <property name="keepgenerated" value="true">
+      <description>Keep a copy of the generated servlet class' java code.</description>
+    </property>
+  </jsp-config>
+</glassfish-web-app>
diff --git a/test/web-profile/stateSaving/basic/src/main/webapp/WEB-INF/web.xml b/test/web-profile/stateSaving/basic/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..fb174f6
--- /dev/null
+++ b/test/web-profile/stateSaving/basic/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,65 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+ Copyright 1997-2012 Sun Microsystems, Inc. All rights reserved.
+
+ The contents of this file are subject to the terms of either the GNU
+ General Public License Version 2 only ("GPL") or the Common Development
+ and Distribution License("CDDL") (collectively, the "License").  You
+ may not use this file except in compliance with the License. You can obtain
+ a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
+ or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
+ language governing permissions and limitations under the License.
+
+ When distributing the software, include this License Header Notice in each
+ file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
+ Sun designates this particular file as subject to the "Classpath" exception
+ as provided by Sun in the GPL Version 2 section of the License file that
+ accompanied this code.  If applicable, add the following below the License
+ Header, with the fields enclosed by brackets [] replaced by your own
+ identifying information: "Portions Copyrighted [year]
+ [name of copyright owner]"
+
+ Contributor(s):
+
+ If you wish your version of this file to be governed by only the CDDL or
+ only the GPL Version 2, indicate your decision by adding "[Contributor]
+ elects to include this software in this distribution under the [CDDL or GPL
+ Version 2] license."  If you don't indicate a single choice of license, a
+ recipient has the option to distribute your version of this file under
+ either the CDDL, the GPL Version 2 or to extend the choice of license to
+ its licensees as provided above.  However, if you add GPL Version 2 code
+ and therefore, elected the GPL Version 2 license, then the option applies
+ only if the new code is made subject to such option by the copyright
+ holder.
+
+-->
+
+<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>${webapp.projectStage}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
+        <param-value>${webapp.partialStateSaving}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>${webapp.stateSavingMethod}</param-value>
+    </context-param>
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <welcome-file-list>
+        <welcome-file>faces/index.xhtml</welcome-file>
+    </welcome-file-list>
+</web-app>
diff --git a/test/web-profile/stateSaving/basic/src/main/webapp/index.xhtml b/test/web-profile/stateSaving/basic/src/main/webapp/index.xhtml
new file mode 100644
index 0000000..d637900
--- /dev/null
+++ b/test/web-profile/stateSaving/basic/src/main/webapp/index.xhtml
@@ -0,0 +1,15 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title>Web-Profile State Saving tests</title>
+    </h:head>
+    <h:body>
+        <a href="faces/issue1845.xhtml">Issue #1845</a> <br/>
+    </h:body>
+</html>
+
diff --git a/test/web-profile/stateSaving/basic/src/main/webapp/issue1845.xhtml b/test/web-profile/stateSaving/basic/src/main/webapp/issue1845.xhtml
new file mode 100644
index 0000000..aad4b60
--- /dev/null
+++ b/test/web-profile/stateSaving/basic/src/main/webapp/issue1845.xhtml
@@ -0,0 +1,30 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:c="http://java.sun.com/jsp/jstl/core">
+    <f:view contentType="text/html">
+        <f:metadata>
+            <f:event type="preRenderView" listener="#{issue1845Bean.beginConversation}"/>
+        </f:metadata>
+        <h:head/>
+        <h:body>
+            <h:form id="myForm">
+                <h:outputLabel value="Show Button" for="buttonCheckbox" />
+                <h:selectBooleanCheckbox id="buttonCheckbox" value="#{issue1845Bean.showButton}">
+                    <f:ajax render="buttonGroup" />
+                </h:selectBooleanCheckbox>
+                <h:panelGroup id="buttonGroup">
+                    <c:if test="#{issue1845Bean.showButton}">
+                        <h:commandButton id="clickme"  value="Click Me" action="#{issue1845Bean.bar}">
+                            <f:ajax render="buttonGroup"/>
+                        </h:commandButton>
+                    </c:if>
+                </h:panelGroup>
+                <h:commandButton id="reload" value="Reload"/>
+            </h:form>
+        </h:body>
+    </f:view>
+</html>
diff --git a/test/web-profile/stateSaving/basic/src/test/java/com/sun/faces/test/webprofile/statesaving/Issue1845IT.java b/test/web-profile/stateSaving/basic/src/test/java/com/sun/faces/test/webprofile/statesaving/Issue1845IT.java
new file mode 100644
index 0000000..1b1f668
--- /dev/null
+++ b/test/web-profile/stateSaving/basic/src/test/java/com/sun/faces/test/webprofile/statesaving/Issue1845IT.java
@@ -0,0 +1,88 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDLGPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.webprofile.statesaving;
+
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlCheckBoxInput;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class Issue1845IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+        webClient.setJavaScriptEnabled(true);
+        webClient.setJavaScriptTimeout(120000);
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testIssue1845() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "faces/issue1845.xhtml");
+        assertTrue(!page.asText().contains("Click Me"));
+        HtmlCheckBoxInput checkbox = (HtmlCheckBoxInput) page.getHtmlElementById("myForm:buttonCheckbox");
+        page = checkbox.click();
+        webClient.waitForBackgroundJavaScript(60000);
+        HtmlSubmitInput reload = (HtmlSubmitInput) page.getHtmlElementById("myForm:reload");
+        page = reload.click();
+        webClient.waitForBackgroundJavaScript(60000);
+        assertTrue(page.asText().contains("Click Me"));
+        checkbox = (HtmlCheckBoxInput) page.getHtmlElementById("myForm:buttonCheckbox");
+        page = checkbox.click();
+        webClient.waitForBackgroundJavaScript(60000);
+        reload = (HtmlSubmitInput) page.getHtmlElementById("myForm:reload");
+        page = reload.click();
+        webClient.waitForBackgroundJavaScript(60000);
+        assertTrue(!page.asText().contains("Click Me"));
+    }
+}
diff --git a/test/web-profile/stateSaving/pom.xml b/test/web-profile/stateSaving/pom.xml
new file mode 100644
index 0000000..9d5fae2
--- /dev/null
+++ b/test/web-profile/stateSaving/pom.xml
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.webprofile</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.webprofile.statesaving</groupId>
+    <artifactId>pom</artifactId>
+    <packaging>pom</packaging>
+    <name>Mojarra ${project.version} - Test - Web-Profile - State Saving</name>
+    <modules>
+        <module>basic</module>
+    </modules>
+</project>
diff --git a/test/weblogic/pom.xml b/test/weblogic/pom.xml
new file mode 100644
index 0000000..4a3765b
--- /dev/null
+++ b/test/weblogic/pom.xml
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.weblogic</groupId>
+    <artifactId>pom</artifactId>
+    <packaging>pom</packaging>
+    <name>Mojarra ${project.version} - Test - Weblogic</name>
+    <dependencies>
+        <dependency>
+            <groupId>com.sun.faces.test</groupId>
+            <artifactId>util</artifactId>
+            <version>${project.version}</version>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>    
+    <modules>
+	<module>wls1214</module>
+    </modules>
+</project>
diff --git a/test/weblogic/wls1214/facelets/core/pom.xml b/test/weblogic/wls1214/facelets/core/pom.xml
new file mode 100644
index 0000000..2de384f
--- /dev/null
+++ b/test/weblogic/wls1214/facelets/core/pom.xml
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.weblogic.wls1214.facelets</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.weblogic.wls1214.facelets</groupId>
+    <artifactId>core</artifactId>
+    <packaging>war</packaging>
+    <name>Mojarra ${project.version} - Test - Weblogic - Wls1214 - Facelets - Core</name>
+    <build>
+        <finalName>test-weblogic-wls1214-facelets-core</finalName>
+    </build>
+    <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+</project>
diff --git a/test/weblogic/wls1214/facelets/core/src/main/java/com/sun/faces/annotation/AnnotatedValidatorNoValue.java b/test/weblogic/wls1214/facelets/core/src/main/java/com/sun/faces/annotation/AnnotatedValidatorNoValue.java
new file mode 100644
index 0000000..d837d87
--- /dev/null
+++ b/test/weblogic/wls1214/facelets/core/src/main/java/com/sun/faces/annotation/AnnotatedValidatorNoValue.java
@@ -0,0 +1,64 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.annotation;
+
+import javax.faces.validator.Validator;
+import javax.faces.validator.ValidatorException;
+import javax.faces.validator.FacesValidator;
+import javax.faces.context.FacesContext;
+import javax.faces.component.UIComponent;
+
+ at FacesValidator
+public class AnnotatedValidatorNoValue implements Validator {
+    public void validate(FacesContext context,
+                         UIComponent component,
+                         Object value) throws ValidatorException {
+        return;
+    }
+
+    private String welcomeMessage ="AnnotatedValidatorNoValue";
+
+    public String getWelcomeMessage() {
+        return welcomeMessage;
+    }
+
+}
+
diff --git a/test/weblogic/wls1214/facelets/core/src/main/java/com/sun/faces/test/weblogic/wls1214/facelets/core/AnnotationTestBean.java b/test/weblogic/wls1214/facelets/core/src/main/java/com/sun/faces/test/weblogic/wls1214/facelets/core/AnnotationTestBean.java
new file mode 100644
index 0000000..8502a65
--- /dev/null
+++ b/test/weblogic/wls1214/facelets/core/src/main/java/com/sun/faces/test/weblogic/wls1214/facelets/core/AnnotationTestBean.java
@@ -0,0 +1,111 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.weblogic.wls1214.facelets.core;
+
+import java.util.Set;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.faces.FacesException;
+import javax.faces.application.Application;
+import javax.faces.context.FacesContext;
+import javax.faces.validator.Validator;
+
+import com.sun.faces.annotation.AnnotatedValidatorNoValue;
+
+public class AnnotationTestBean {
+    
+      public String getTestResult() {
+
+        try {
+            testAnnotatedComponentsWebInfClasses();
+            return Boolean.TRUE.toString();
+        } catch (Exception e) {
+            Logger.getAnonymousLogger().log(Level.SEVERE,
+                                            "AnnotationTestBean validation failure!",
+                                            e);
+            return Boolean.FALSE.toString();
+        }
+    }
+    
+    private void testAnnotatedComponentsWebInfClasses() throws Exception {
+        FacesContext ctx = FacesContext.getCurrentInstance();
+        Application app = ctx.getApplication();
+        Validator v = app.createValidator("annotatedValidatorNoValue");
+        
+        assertNotNull(v);
+        assertTrue(v instanceof AnnotatedValidatorNoValue);
+        Set<String> defaultValidatorIds = app.getDefaultValidatorInfo().keySet();
+        assertFalse(defaultValidatorIds.contains("AnnotatedValidatorNoValue"));
+        String welcomeMessage = ((AnnotatedValidatorNoValue)v).getWelcomeMessage();
+        assertTrue(welcomeMessage.equals("AnnotatedValidatorNoValue"));
+
+        boolean exceptionThrown = false;
+        v = null;
+        try {
+            v = app.createValidator("AnnotatedValidatorNoValue");
+        }
+        catch (FacesException fe) {
+            assertTrue(null == v);
+            exceptionThrown = true;
+        }
+        assertTrue(exceptionThrown);
+
+    } 
+    
+     private void assertNotNull(Object v) {
+        if (v == null) {
+            throw new RuntimeException();
+        }
+    }
+
+    private void assertTrue(boolean t) {
+        if (!t) {
+            throw new RuntimeException();
+        }
+    }
+
+    private void assertFalse(boolean t) {
+        if (t) {
+            throw new RuntimeException();
+        }
+    }
+
+}
diff --git a/test/weblogic/wls1214/facelets/core/src/main/webapp/WEB-INF/faces-config.xml b/test/weblogic/wls1214/facelets/core/src/main/webapp/WEB-INF/faces-config.xml
new file mode 100644
index 0000000..1c51728
--- /dev/null
+++ b/test/weblogic/wls1214/facelets/core/src/main/webapp/WEB-INF/faces-config.xml
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
+    version="2.0">
+
+    <managed-bean>
+      <managed-bean-name>annotationTestBean</managed-bean-name>
+      <managed-bean-class>com.sun.faces.test.weblogic.wls1214.facelets.core.AnnotationTestBean</managed-bean-class>
+      <managed-bean-scope>request</managed-bean-scope>
+  </managed-bean>  
+    
+</faces-config>
diff --git a/test/weblogic/wls1214/facelets/core/src/main/webapp/WEB-INF/web.xml b/test/weblogic/wls1214/facelets/core/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..999361b
--- /dev/null
+++ b/test/weblogic/wls1214/facelets/core/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<web-app version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd">
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>${webapp.projectStage}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
+        <param-value>${webapp.partialStateSaving}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>${webapp.stateSavingMethod}</param-value>
+    </context-param>
+
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <session-config>
+        <session-timeout>
+            30
+        </session-timeout>
+    </session-config>
+    <welcome-file-list>
+        <welcome-file>faces/annotationtest.xhtml</welcome-file>
+    </welcome-file-list>
+</web-app>
diff --git a/test/weblogic/wls1214/facelets/core/src/main/webapp/WEB-INF/weblogic.xml b/test/weblogic/wls1214/facelets/core/src/main/webapp/WEB-INF/weblogic.xml
new file mode 100644
index 0000000..c7f1134
--- /dev/null
+++ b/test/weblogic/wls1214/facelets/core/src/main/webapp/WEB-INF/weblogic.xml
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<weblogic-web-app xmlns="http://xmlns.oracle.com/weblogic/weblogic-web-app"
+        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+        xsi:schemaLocation="http://xmlns.oracle.com/weblogic/weblogic-web-app http://xmlns.oracle.com/weblogic/weblogic-web-app/1.0/weblogic-web-app.xsd">
+    <context-root>/test-weblogic-wls1214-facelets-core</context-root>
+</weblogic-web-app>
diff --git a/test/weblogic/wls1214/facelets/core/src/main/webapp/annotationtest.xhtml b/test/weblogic/wls1214/facelets/core/src/main/webapp/annotationtest.xhtml
new file mode 100644
index 0000000..a291f1f
--- /dev/null
+++ b/test/weblogic/wls1214/facelets/core/src/main/webapp/annotationtest.xhtml
@@ -0,0 +1,60 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core">
+    <head>
+        <title>Annotation Scanning Test Case</title>
+    </head>
+
+    <body>
+        <h:outputText value="#{request.servletContext.serverInfo}"/>
+        <h:outputText style="font-style: italic;"
+                      value="Test Passed: #{annotationTestBean.testResult}"/>
+
+    </body>
+</html>
+
diff --git a/test/weblogic/wls1214/facelets/core/src/test/java/com/sun/faces/test/weblogic/wls1214/facelets/core/AnnotatedComponentIT.java b/test/weblogic/wls1214/facelets/core/src/test/java/com/sun/faces/test/weblogic/wls1214/facelets/core/AnnotatedComponentIT.java
new file mode 100644
index 0000000..3623b60
--- /dev/null
+++ b/test/weblogic/wls1214/facelets/core/src/test/java/com/sun/faces/test/weblogic/wls1214/facelets/core/AnnotatedComponentIT.java
@@ -0,0 +1,74 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package com.sun.faces.test.weblogic.wls1214.facelets.core;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+
+import static org.junit.Assert.assertTrue;
+
+public class AnnotatedComponentIT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testAnnotations() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl + "/faces/annotationtest.xhtml");
+
+        String pageText = page.getBody().asText();
+        assertTrue(pageText.contains("true"));
+    }
+}
diff --git a/test/weblogic/wls1214/facelets/pom.xml b/test/weblogic/wls1214/facelets/pom.xml
new file mode 100644
index 0000000..aeedd5e
--- /dev/null
+++ b/test/weblogic/wls1214/facelets/pom.xml
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.weblogic.wls1214</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.weblogic.wls1214.facelets</groupId>
+    <artifactId>pom</artifactId>
+    <packaging>pom</packaging>
+    <name>Mojarra ${project.version} - Test - Weblogic - WLS1214 - Facelets</name>
+    <modules>
+	<module>core</module>
+    </modules>
+</project>
+
diff --git a/test/weblogic/wls1214/pom.xml b/test/weblogic/wls1214/pom.xml
new file mode 100644
index 0000000..121280a
--- /dev/null
+++ b/test/weblogic/wls1214/pom.xml
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.weblogic</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.weblogic.wls1214</groupId>
+    <artifactId>pom</artifactId>
+    <packaging>pom</packaging>
+    <name>Mojarra ${project.version} - Test - Weblogic - WLS 12.1.4</name>
+    <modules>
+	<module>facelets</module>
+    </modules>
+</project>
+
diff --git a/test/weblogic12c/pom.xml b/test/weblogic12c/pom.xml
new file mode 100644
index 0000000..063dfb7
--- /dev/null
+++ b/test/weblogic12c/pom.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.weblogic12c</groupId>
+    <artifactId>pom</artifactId>
+    <packaging>pom</packaging>
+    <name>Mojarra ${project.version} - Test - Weblogic 12c</name>
+    <dependencies>
+        <dependency>
+            <groupId>com.sun.faces.test</groupId>
+            <artifactId>util</artifactId>
+            <version>${project.version}</version>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>    
+    <modules>
+        <module>request_char_encoding</module>
+    </modules>
+</project>
diff --git a/test/weblogic12c/request_char_encoding/nbactions.xml b/test/weblogic12c/request_char_encoding/nbactions.xml
new file mode 100644
index 0000000..ba6a18a
--- /dev/null
+++ b/test/weblogic12c/request_char_encoding/nbactions.xml
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+--><actions>
+        <action>
+            <actionName>debug.test.single</actionName>
+            <goals>
+                <goal>test-compile</goal>
+                <goal>surefire:test</goal>
+            </goals>
+            <properties>
+                <test>${packageClassName}</test>
+                <forkMode>once</forkMode>
+                <maven.surefire.debug>-Xdebug -Xrunjdwp:transport=dt_socket,server=n,address=${jpda.address}</maven.surefire.debug>
+                <jpda.listen>true</jpda.listen>
+                <project.build.finalName>test-webprofile-lifecycle-request_char_encoding</project.build.finalName>
+                <integration.serverPort>8080</integration.serverPort>
+                <integration.serverName>localhost</integration.serverName>
+                <integration.url>http://localhost:8080/test-webprofile-lifecycle-request_char_encoding/</integration.url>
+            </properties>
+        </action>
+        <action>
+            <actionName>test.single</actionName>
+            <goals>
+                <goal>test-compile</goal>
+                <goal>surefire:test</goal>
+            </goals>
+            <properties>
+                <project.build.finalName>test-webprofile-lifecycle-request_char_encoding</project.build.finalName>
+                <integration.serverPort>8080</integration.serverPort>
+                <integration.serverName>localhost</integration.serverName>
+                <integration.url>http://localhost:8080/test-webprofile-lifecycle-request_char_encoding/</integration.url>
+                <test>${packageClassName}</test>
+            </properties>
+        </action>
+    </actions>
diff --git a/test/weblogic12c/request_char_encoding/pom.xml b/test/weblogic12c/request_char_encoding/pom.xml
new file mode 100644
index 0000000..490c468
--- /dev/null
+++ b/test/weblogic12c/request_char_encoding/pom.xml
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sun.faces.test.weblogic12c</groupId>
+        <artifactId>pom</artifactId>
+        <version>2.2.8-SNAPSHOT</version>
+    </parent>
+    <groupId>com.sun.faces.test.weblogic12c</groupId>
+    <artifactId>request_char_encoding</artifactId>
+    <packaging>war</packaging>
+    <name>Mojarra ${project.version} - Test - Weblogic 12c - Request Character Encoding</name>
+    <build>
+        <finalName>test-weblogic12c-request_char_encoding</finalName>
+    </build>
+    <properties>
+        <netbeans.hint.deploy.server>gfv3ee6</netbeans.hint.deploy.server>
+    </properties>
+</project>
diff --git a/test/weblogic12c/request_char_encoding/src/main/java/com/sun/faces/test/Bean.java b/test/weblogic12c/request_char_encoding/src/main/java/com/sun/faces/test/Bean.java
new file mode 100644
index 0000000..aff6186
--- /dev/null
+++ b/test/weblogic12c/request_char_encoding/src/main/java/com/sun/faces/test/Bean.java
@@ -0,0 +1,92 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.test;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.ViewScoped;
+import javax.faces.context.ExternalContext;
+import javax.faces.context.FacesContext;
+
+ at ManagedBean
+ at ViewScoped
+public class Bean implements Serializable {
+    
+    String valueFromQueryParamAtCtorTime;
+    
+    public Bean() {
+        ExternalContext extContext = FacesContext.getCurrentInstance().getExternalContext();
+        valueFromQueryParamAtCtorTime = extContext.getRequestParameterMap().get("pageWithViewScopedBean");
+        foos = new ArrayList<Foo>();
+        foos.add(new Foo("Shirley"));
+        foos.add(new Foo("Stan"));
+        foos.add(new Foo("Cole"));
+
+    }
+    
+    
+    public String getBob() { return "Bob created with param " + valueFromQueryParamAtCtorTime; }
+    
+    
+    List<Foo> foos;
+
+    public List<Foo> getFoos() {
+        return foos;
+    }
+
+    public void setFoos(List<Foo> foos) {
+        this.foos = foos;
+    }
+        
+    private Foo selectedFoo;
+
+    public Foo getSelectedFoo() {
+        return selectedFoo;
+    }
+
+    public void setSelectedFoo(Foo selectedFoo) {
+        this.selectedFoo = selectedFoo;
+    }
+    
+    
+}
diff --git a/test/weblogic12c/request_char_encoding/src/main/java/com/sun/faces/test/Foo.java b/test/weblogic12c/request_char_encoding/src/main/java/com/sun/faces/test/Foo.java
new file mode 100644
index 0000000..d1e8116
--- /dev/null
+++ b/test/weblogic12c/request_char_encoding/src/main/java/com/sun/faces/test/Foo.java
@@ -0,0 +1,85 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.test;
+
+import java.io.Serializable;
+
+public class Foo implements Serializable {
+    
+    private String name = "";
+
+    public Foo(String name) {
+        this.name = name;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (obj == null) {
+            return false;
+        }
+        if (getClass() != obj.getClass()) {
+            return false;
+        }
+        final Foo other = (Foo) obj;
+        if ((this.name == null) ? (other.name != null) : !this.name.equals(other.name)) {
+            return false;
+        }
+        return true;
+    }
+
+    @Override
+    public int hashCode() {
+        int hash = 5;
+        hash = 41 * hash + (this.name != null ? this.name.hashCode() : 0);
+        return hash;
+    }
+    
+    
+    
+}
diff --git a/test/weblogic12c/request_char_encoding/src/main/java/com/sun/faces/test/FooConverterBase.java b/test/weblogic12c/request_char_encoding/src/main/java/com/sun/faces/test/FooConverterBase.java
new file mode 100644
index 0000000..2681db7
--- /dev/null
+++ b/test/weblogic12c/request_char_encoding/src/main/java/com/sun/faces/test/FooConverterBase.java
@@ -0,0 +1,75 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.test;
+
+import java.util.logging.Logger;
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.convert.Converter;
+
+public class FooConverterBase implements Converter {
+    
+    public static final Logger LOGGER = Logger.getAnonymousLogger();
+
+    public FooConverterBase() {
+        LOGGER.info("FooConverter ctor");        
+    }
+    
+    @Override
+    public Object getAsObject(FacesContext context, UIComponent component, String value) {
+        Foo result = new Foo(value);
+        
+        return result;
+    }
+
+    @Override
+    public String getAsString(FacesContext context, UIComponent component, Object value) {
+        String result = "";
+        
+        if (null != value) {
+            result =  ((Foo)value).getName();
+        }
+        return result;
+    }
+    
+    
+    
+}
diff --git a/test/weblogic12c/request_char_encoding/src/main/java/com/sun/faces/test/FooConverterByClass.java b/test/weblogic12c/request_char_encoding/src/main/java/com/sun/faces/test/FooConverterByClass.java
new file mode 100644
index 0000000..aca6c42
--- /dev/null
+++ b/test/weblogic12c/request_char_encoding/src/main/java/com/sun/faces/test/FooConverterByClass.java
@@ -0,0 +1,48 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.test;
+
+import javax.faces.convert.FacesConverter;
+
+ at FacesConverter(forClass = com.sun.faces.test.Foo.class)
+public class FooConverterByClass extends FooConverterBase {
+    
+}
diff --git a/test/weblogic12c/request_char_encoding/src/main/java/com/sun/faces/test/FooConverterById.java b/test/weblogic12c/request_char_encoding/src/main/java/com/sun/faces/test/FooConverterById.java
new file mode 100644
index 0000000..c7022c9
--- /dev/null
+++ b/test/weblogic12c/request_char_encoding/src/main/java/com/sun/faces/test/FooConverterById.java
@@ -0,0 +1,49 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ * 
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ * 
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ * 
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ * 
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ * 
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ * 
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+
+ */
+package com.sun.faces.test;
+
+import javax.faces.convert.FacesConverter;
+
+
+ at FacesConverter(value = "fooConverter")
+public class FooConverterById extends FooConverterBase {
+    
+}
diff --git a/test/weblogic12c/request_char_encoding/src/main/java/hello1/Hello.java b/test/weblogic12c/request_char_encoding/src/main/java/hello1/Hello.java
new file mode 100644
index 0000000..28d5522
--- /dev/null
+++ b/test/weblogic12c/request_char_encoding/src/main/java/hello1/Hello.java
@@ -0,0 +1,64 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+
+package hello1;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.SessionScoped;
+
+ at ManagedBean
+ at SessionScoped
+public class Hello {
+
+    private String name;
+
+    public Hello() {
+    }
+
+    public String getName() { 
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+}
+
diff --git a/test/weblogic12c/request_char_encoding/src/main/webapp/WEB-INF/web.xml b/test/weblogic12c/request_char_encoding/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..93059b5
--- /dev/null
+++ b/test/weblogic12c/request_char_encoding/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<web-app version="3.0"
+         xmlns="http://java.sun.com/xml/ns/javaee"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+    <context-param>
+        <param-name>javax.faces.PROJECT_STAGE</param-name>
+        <param-value>${webapp.projectStage}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
+        <param-value>${webapp.partialStateSaving}</param-value>
+    </context-param>
+    <context-param>
+        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+        <param-value>${webapp.stateSavingMethod}</param-value>
+    </context-param>
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>/faces/*</url-pattern>
+    </servlet-mapping>
+    <session-config>
+        <session-timeout>
+            30
+        </session-timeout>
+    </session-config>
+    <welcome-file-list>
+        <welcome-file>faces/index.xhtml</welcome-file>
+    </welcome-file-list>
+</web-app>
diff --git a/test/weblogic12c/request_char_encoding/src/main/webapp/WEB-INF/weblogic.xml b/test/weblogic12c/request_char_encoding/src/main/webapp/WEB-INF/weblogic.xml
new file mode 100644
index 0000000..58e3d9c
--- /dev/null
+++ b/test/weblogic12c/request_char_encoding/src/main/webapp/WEB-INF/weblogic.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<wls:weblogic-web-app xmlns:wls="http://www.bea.com/ns/weblogic/90"
+      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+      xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd http://www.bea.com/ns/weblogic/90 http://www.bea.com/ns/weblogic/90/weblogic-web-app.xsd">
+      <wls:charset-params>
+            <wls:input-charset>
+                  <wls:resource-path>/*</wls:resource-path>
+                  <wls:java-charset-name>UTF-8</wls:java-charset-name>
+            </wls:input-charset>
+      </wls:charset-params>
+</wls:weblogic-web-app>
diff --git a/test/weblogic12c/request_char_encoding/src/main/webapp/duke.waving.gif b/test/weblogic12c/request_char_encoding/src/main/webapp/duke.waving.gif
new file mode 100644
index 0000000..e69de29
diff --git a/test/weblogic12c/request_char_encoding/src/main/webapp/index.xhtml b/test/weblogic12c/request_char_encoding/src/main/webapp/index.xhtml
new file mode 100644
index 0000000..389eee1
--- /dev/null
+++ b/test/weblogic12c/request_char_encoding/src/main/webapp/index.xhtml
@@ -0,0 +1,33 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html lang="en"
+      xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title>Facelets Hello Greeting</title>
+    </h:head>
+    <h:body>
+        <h:form prependId="false">
+            <h:graphicImage url="duke.waving.gif" alt="Duke waving his hand"/>
+            <h2>Hello, my name is Duke. What's yours?</h2>
+            <h:inputText id="username"
+                         title="My name is: "
+                         value="#{hello.name}"
+                         required="true"
+                         requiredMessage="Error: A name is required."
+                         maxlength="25" />
+            <p></p>
+            <h:commandButton id="submit" value="Submit" action="response">
+            </h:commandButton>
+            <h:commandButton id="reset" value="Reset" type="reset">
+            </h:commandButton>
+        </h:form>
+        <div class="messagecolor">
+            <h:messages showSummary="true" 
+                        showDetail="false"
+                        errorStyle="color: #d20005" 
+                        infoStyle="color: blue"/>
+        </div>
+    </h:body>
+</html>
diff --git a/test/weblogic12c/request_char_encoding/src/main/webapp/response.xhtml b/test/weblogic12c/request_char_encoding/src/main/webapp/response.xhtml
new file mode 100644
index 0000000..c7fac01
--- /dev/null
+++ b/test/weblogic12c/request_char_encoding/src/main/webapp/response.xhtml
@@ -0,0 +1,18 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html lang="en"
+      xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <h:head>
+        <title>Facelets Hello Response</title>
+    </h:head>
+    <h:body>
+        <h:form>
+            <h:graphicImage url="duke.waving.gif" alt="Duke waving his hand"/>
+            <h2>Hello, #{hello.name}!</h2>
+            <p></p>
+            <h:commandButton id="back" value="Back" action="index" />
+        </h:form>
+    </h:body>
+</html>
diff --git a/test/weblogic12c/request_char_encoding/src/test/java/com/sun/faces/test/weblogic12c/request_char_encoding/Issue2217IT.java b/test/weblogic12c/request_char_encoding/src/test/java/com/sun/faces/test/weblogic12c/request_char_encoding/Issue2217IT.java
new file mode 100644
index 0000000..b954f10
--- /dev/null
+++ b/test/weblogic12c/request_char_encoding/src/test/java/com/sun/faces/test/weblogic12c/request_char_encoding/Issue2217IT.java
@@ -0,0 +1,105 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common Development
+ * and Distribution License("CDDL") (collectively, the "License").  You
+ * may not use this file except in compliance with the License.  You can
+ * obtain a copy of the License at
+ * https://glassfish.dev.java.net/public/CDDLGPL_1_1.html
+ * or packager/legal/LICENSE.txt.  See the License for the specific
+ * language governing permissions and limitations under the License.
+ *
+ * When distributing the software, include this License Header Notice in each
+ * file and include the License file at packager/legal/LICENSE.txt.
+ *
+ * GPL Classpath Exception:
+ * Oracle designates this particular file as subject to the "Classpath"
+ * exception as provided by Oracle in the GPL Version 2 section of the License
+ * file that accompanied this code.
+ *
+ * Modifications:
+ * If applicable, add the following below the License Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyright [year] [name of copyright owner]"
+ *
+ * Contributor(s):
+ * If you wish your version of this file to be governed by only the CDDL or
+ * only the GPL Version 2, indicate your decision by adding "[Contributor]
+ * elects to include this software in this distribution under the [CDDL or GPL
+ * Version 2] license."  If you don't indicate a single choice of license, a
+ * recipient has the option to distribute your version of this file under
+ * either the CDDL, the GPL Version 2 or to extend the choice of license to
+ * its licensees as provided above.  However, if you add GPL Version 2 code
+ * and therefore, elected the GPL Version 2 license, then the option applies
+ * only if the new code is made subject to such option by the copyright
+ * holder.
+ */
+package com.sun.faces.test.weblogic12c.request_char_encoding;
+
+import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
+import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.assertFalse;
+
+public class Issue2217IT {
+
+    private String webUrl;
+    private WebClient webClient;
+
+    @Before
+    public void setUp() {
+        webUrl = System.getProperty("integration.url");
+        webClient = new WebClient();
+    }
+
+    @After
+    public void tearDown() {
+        webClient.closeAllWindows();
+    }
+
+    @Test
+    public void testJapanese() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl);
+        
+        String pageText = page.getBody().asText();
+        assertTrue(pageText.contains("Hello, my name is Duke. What's yours?"));
+
+        HtmlTextInput text = (HtmlTextInput) page.getElementById("username");
+        text.type("\u65E5");
+        
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("submit");
+        page = button.click();
+        
+        pageText = page.getBody().asText();
+        assertTrue(pageText.contains("\u65E5"));
+        
+    }
+        
+    @Test
+    public void testHebrew() throws Exception {
+        HtmlPage page = webClient.getPage(webUrl);
+        
+        String pageText = page.getBody().asText();
+        assertTrue(pageText.contains("Hello, my name is Duke. What's yours?"));
+
+        HtmlTextInput text = (HtmlTextInput) page.getElementById("username");
+        text.type("\u05D0");
+        
+        HtmlSubmitInput button = (HtmlSubmitInput) page.getElementById("submit");
+        page = button.click();
+        
+        pageText = page.getBody().asText();
+        assertTrue(pageText.contains("\u05D0"));
+        
+    }
+    
+}
diff --git a/updatecenter2/README b/updatecenter2/README
new file mode 100644
index 0000000..d5c311b
--- /dev/null
+++ b/updatecenter2/README
@@ -0,0 +1,63 @@
+
+To build this updatecenter2 code, you first need to download the 
+updatecenter2 tool from :
+
+http://wiki.updatecenter.java.net/Wiki.jsp?page=Download
+
+Install it in some well defined path
+
+Add the location to your build.properties file in the pkg.dir value.
+
+add the pkg/pkg/bin directory to your $PATH - you'll need the 
+pkg and pkg.depotd files for testing
+
+Next, in the Mojarra codebase edit the udpatecenter2/bin/makepkgs, and 
+add UCHOME to point to the location of the updatecenter2 codebase.
+
+
+Now, build the repository files:
+(only works on linux, you'll need to either do it manually on windows or 
+update the build.xml file - if you do, check in the changes! Also, note 
+that you need python installed.) 
+
+
+cd {mojarra-sources-home}
+ant updatecenter2   # copies latest jsf jars to updatecenter2/lib
+# or, you could just do this manually
+cd updatecenter2
+ant main  # creates the dist directory
+mkdir repo  # create repo dir
+pkg.depotd -d `pwd`/repo -p 10000 &  # start repo
+ant updatecenter2.repo  # installs into repository
+
+This will create a repository with the latest SNAPSHOT files.
+
+To test:
+
+pkg.depotd -d `pwd`/repo -p 10000 & 
+
+Now you have you own repository server running on port 10000.  To add this repository to your Glassfish image, you can either using the updatetool GUI (click on File|Image Properties, then click Add) or use the pkg CLI:
+
+bin/pkg set-authority -O http://yourhost:10000/ testrepo
+bin/pkg refresh
+
+The refresh command is need to get the catalog from your testrepo downloaded.
+
+Then, to install your package, either use updatetool (you should see your package listed in the Available Add-ons panel after clicking the Refresh button), or the pkg CLI:
+
+bin/pkg install yourpkg
+
+where "yourpkg" is the name of your package. 
+
+To test the current contents of the Glassfish repo, you need to do this:
+
+mkdir testrepo
+pkg image-create -a testrepo=http://pkg.glassfish.org/dev/linux/v3prelude/ testrepo
+cd testrepo
+pkg list -a   # lists all packages in the glassfish repo
+pkg install glassfish-jsf # installs contents of glassfish-jsf package
+ls -R # examine installed files from glassfish-jsf package
+
+
+To push this to the public repo, contact Omar.
+
diff --git a/updatecenter2/bin/makepkgs.sh b/updatecenter2/bin/makepkgs.sh
new file mode 100644
index 0000000..d6f26ce
--- /dev/null
+++ b/updatecenter2/bin/makepkgs.sh
@@ -0,0 +1,72 @@
+#!/bin/sh
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
+# Remember to set pkg.dir in build.properties!
+# This value is passed to this program as $1
+
+# set this to the location of the Updatecenter2 tools
+UCHOME=$1
+export UCHOME
+
+# add OpenSSL path for Solaris
+LD_LIBRARY_PATH=$UCHOME/python2.4-minimal/lib
+export LD_LIBRARY_PATH 
+
+# add the necessary libraries to python
+PYTHONPATH=$UCHOME/vendor-packages:.
+export PYTHONPATH
+
+# execute the bundled python
+PYTHONBIN=$UCHOME/python2.4-minimal/bin/python
+export PYTHONBIN
+
+# create the repo
+# new version 
+#$PYTHONBIN $UCHOME/bin/makepkgs.py -s file://`pwd`/repo -b dist conf/jsf_proto.py
+# old version
+#$PYTHONBIN $UCHOME/bin/makepkgs.py -d `pwd`/repo -b dist conf/jsf_proto.py
+
+# Or, optionally, put the repo files into a local repository
+#$PYTHONBIN $UCHOME/bin/makepkgs.py -s http://localhost:10000 -b dist conf/jsf_proto.py
+
+# Or, optionally, put the repo files into the dev test repository
+$PYTHONBIN $UCHOME/bin/makepkgs.py -s http://eflat.sfbay.sun.com:60000 -b dist conf/jsf_proto.py
+
diff --git a/updatecenter2/build.xml b/updatecenter2/build.xml
new file mode 100644
index 0000000..b36b406
--- /dev/null
+++ b/updatecenter2/build.xml
@@ -0,0 +1,80 @@
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<project name="mojarra-updatecenter2" default="main" basedir=".">
+
+
+    <property file="${user.home}/build.properties"/>
+    <property file="../build.properties"/>
+
+    <import file="${jsf.build.home}/common/ant/common.xml"/>
+
+    <target name="main" depends="repo"/>
+
+    <!-- Create the distributed artifacts -->
+    <target name="dist">
+      <mkdir dir="dist/glassfish/modules/web"/>
+      <copy file="lib/javax.faces.jar" 
+            tofile="dist/glassfish/modules/web/javax.faces.jar"/>
+      <mkdir dir="dist/jsf2.1"/>
+      <copy file="conf/LICENSE" todir="dist/jsf2.1"/>
+      <copy file="conf/README" todir="dist/jsf2.1"/>
+    </target>
+
+    <target name="repo" depends="dist">
+        <exec command="/bin/sh bin/makepkgs.sh ${pkg.dir}" failonerror="true"/>
+    </target>
+
+    <target name="updatecenter2.clean" depends="cleanall"/>
+
+    <target name="clean">
+      <delete dir="build"/>
+      <delete dir="dist"/>
+      <delete dir="repo"/>
+      <delete file="conf/jsf_proto.pyc"/>
+    </target>
+
+    <target name="cleanall" depends="clean">
+      <delete file="lib/javax.faces.jar"/>
+    </target>
+
+</project>
diff --git a/updatecenter2/conf/LICENSE b/updatecenter2/conf/LICENSE
new file mode 100644
index 0000000..e430406
--- /dev/null
+++ b/updatecenter2/conf/LICENSE
@@ -0,0 +1,37 @@
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
diff --git a/updatecenter2/conf/README b/updatecenter2/conf/README
new file mode 100644
index 0000000..c0f948e
--- /dev/null
+++ b/updatecenter2/conf/README
@@ -0,0 +1,7 @@
+
+Thank you for installing JSF 2.1.
+
+Please register any comments or bugs by visiting http://mojarra.dev.java.net/
+
+Release notes are available at https://javaserverfaces.dev.java.net/nonav/rlnotes/2.1.0/index.html
+
diff --git a/updatecenter2/conf/jsf_proto.py b/updatecenter2/conf/jsf_proto.py
new file mode 100644
index 0000000..81f0ce5
--- /dev/null
+++ b/updatecenter2/conf/jsf_proto.py
@@ -0,0 +1,72 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 2008-2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
+pkg = {
+    "name"          : "glassfish-jsf",
+    "version"       : "2.1.0,0-11",
+    "depends"       : {
+                       "pkg:/glassfish-jsf at 2.1" : {"type" : "incorporate"},
+                       "pkg:/glassfish-common" : { "type" : "require" }
+                      },
+    "attributes"    : { 
+                        "pkg.summary" : "JSF 2.1.0- Project Mojarra 2.1.0 Patch Release",
+                        "pkg.description" : "Updated Mojarra 2.1 implementation.  \
+Current version supports JSF 2.1.  This version replaces the default version \
+of Mojarra that ships with Glassfish.",
+                        "info.classification" : "Application Servers"
+                      },
+
+    "files"         : {
+                       "jsf2.1/LICENSE"      : {"mode" : "0644"},
+                       "jsf2.1/README"       : {"mode" : "0644"},
+                       },
+
+    "licenses"      : {
+                       "jsf2.1/LICENSE"      : {"license" : "JSF-LICENSE"},
+                       },
+
+    "dirtrees"      : [
+                        "glassfish",
+                        "jsf2.1",
+                      ]
+}
+
diff --git a/updatecenter2/updatecenter2.iml b/updatecenter2/updatecenter2.iml
new file mode 100644
index 0000000..0f7b5ef
--- /dev/null
+++ b/updatecenter2/updatecenter2.iml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module relativePaths="true" type="JAVA_MODULE" version="4">
+  <component name="NewModuleRootManager" inherit-compiler-output="true">
+    <exclude-output />
+    <content url="file://$MODULE_DIR$" />
+    <orderEntry type="inheritedJdk" />
+    <orderEntry type="sourceFolder" forTests="false" />
+  </component>
+</module>
+
diff --git a/www/.java.net.updater b/www/.java.net.updater
new file mode 100644
index 0000000..c836d2f
--- /dev/null
+++ b/www/.java.net.updater
@@ -0,0 +1 @@
+200606091235
\ No newline at end of file
diff --git a/www/alm-process/snippets/page.xml b/www/alm-process/snippets/page.xml
new file mode 100644
index 0000000..7dfb0a1
--- /dev/null
+++ b/www/alm-process/snippets/page.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<page visibility="1"><component_list><component visibility="1" type="ProjectMetadata" order="1"><title localize="false"></title></component><component visibility="1" type="Html" order="2"><title localize="false"></title><filename>index.html</filename></component><component visibility="1" type="Subproject" order="3"><title localize="true">Subprojects</title></component></component_list></page>
diff --git a/www/index.html b/www/index.html
new file mode 100644
index 0000000..dce11ee
--- /dev/null
+++ b/www/index.html
@@ -0,0 +1,122 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<!--
+
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+
+-->
+
+<title>Project Home Page</title>
+<meta http-equiv="REFRESH" content="0;url=https://javaserverfaces.dev.java.net">
+</head>
+
+<body bgcolor="#FFFFFF" text="#000000">
+</body>
+=======
+<head>
+<!--
+  - The code that you create using these templates is your code and no 
+  - attribution to Sun is required.  The following license applies to the
+  - template package itself.
+  - 
+  - Copyright 1994-2004 Sun Microsystems, Inc. All Rights Reserved.
+  -
+  - Redistribution and use in source and binary forms, with or without
+  - modification, are permitted provided that the following conditions are met:
+  -
+  - * Redistribution of source code must retain the above copyright notice, 
+  -   this list of conditions and the following disclaimer.
+  -
+  - * Redistribution in binary form must reproduce the above copyright 
+  -   notice, this list of conditions and the following disclaimer in 
+  -   the documentation and/or other materials provided with the distribution.
+  -
+  - Neither the name of Sun Microsystems, Inc. or the names of contributors 
+  - may be used to endorse or promote products derived from this software
+  - without specific prior written permission.
+  -
+  - This software is provided "AS IS," without a warranty of any kind. 
+  - ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, 
+  - INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A 
+  - PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN 
+  - MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR ANY 
+  - DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR 
+  - DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR 
+  - ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR 
+  - DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE 
+  - DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY,
+  - ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF 
+  - SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+  -
+  - You acknowledge that this software is not designed, licensed or intended 
+  - for use in the design, construction, operation or maintenance of any 
+  - nuclear facility. 
+  --><!--
+  - Standard template index.html for Enterprise Foundry projects
+  -
+  - To customize this template to your application:
+  -   1. Fill in the Project Info section at the top
+  -   2. Replace all occurrences of 'javaserverfaces' with the name of your application
+  -   3. Create a 64x64 icon for your application and save it in 
+  -      images/icon.gif (or use the default icon provided)
+  -   4. Capture a 320x240 screenshot of your application and save it in 
+  -      images/screenshot.gif (or use the default "No Screenshot" image
+  -      provided).
+  -   5. Customize the "Download and Installation" instructions for your
+  -      application.
+  -   6. Fill in the feature list
+  -   7. Fill in the usage instructions
+  -   8. Fill in the participation section
+  -   9. Feel free to update the nav bar and/or add additional sections.
+  -->
+  <title>javaserverfaces Home</title>
+<link rel="SHORTCUT ICON" href="http://jaxb.dev.java.net/images/glassfish_favicon.gif">
+</head>
+<body>
+<p>This project contains the source code for Sun's
+Implementation of the JCP JavaServer(TM) Faces Specification.  Access to
+the source code is under the conditions of the the Common Development and Distribution License.   
+The full text of the license is available <a href="https://javaserverfaces-sources.dev.java.net/legal/jsf-cddl/CDDLv1.0.txt"> here</a>.
+
+If you've already accepted the JDL or JRL license, and want to redistribute under CDDL, you must <a href="https://javaserverfaces.dev.java.net/source-gateway/click-through.html">accept the CDDL</a>.</p>
+</body>
+
+</html>
+
diff --git a/jsf-api/LICENSE.TXT b/www/legal/jsf-cddl/CDDLv1.0.txt
similarity index 100%
copy from jsf-api/LICENSE.TXT
copy to www/legal/jsf-cddl/CDDLv1.0.txt
diff --git a/www/legal/jsf-cddl/COPYRIGHT b/www/legal/jsf-cddl/COPYRIGHT
new file mode 100644
index 0000000..e430406
--- /dev/null
+++ b/www/legal/jsf-cddl/COPYRIGHT
@@ -0,0 +1,37 @@
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
diff --git a/www/legal/jsf-cddl/jsf-cddl-header-props.txt b/www/legal/jsf-cddl/jsf-cddl-header-props.txt
new file mode 100644
index 0000000..6ca29a0
--- /dev/null
+++ b/www/legal/jsf-cddl/jsf-cddl-header-props.txt
@@ -0,0 +1,77 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common Development
+# and Distribution License("CDDL") (collectively, the "License").  You
+# may not use this file except in compliance with the License.  You can
+# obtain a copy of the License at
+# https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+# or packager/legal/LICENSE.txt.  See the License for the specific
+# language governing permissions and limitations under the License.
+#
+# When distributing the software, include this License Header Notice in each
+# file and include the License file at packager/legal/LICENSE.txt.
+#
+# GPL Classpath Exception:
+# Oracle designates this particular file as subject to the "Classpath"
+# exception as provided by Oracle in the GPL Version 2 section of the License
+# file that accompanied this code.
+#
+# Modifications:
+# If applicable, add the following below the License Header, with the fields
+# enclosed by brackets [] replaced by your own identifying information:
+# "Portions Copyright [year] [name of copyright owner]"
+#
+# Contributor(s):
+# If you wish your version of this file to be governed by only the CDDL or
+# only the GPL Version 2, indicate your decision by adding "[Contributor]
+# elects to include this software in this distribution under the [CDDL or GPL
+# Version 2] license."  If you don't indicate a single choice of license, a
+# recipient has the option to distribute your version of this file under
+# either the CDDL, the GPL Version 2 or to extend the choice of license to
+# its licensees as provided above.  However, if you add GPL Version 2 code
+# and therefore, elected the GPL Version 2 license, then the option applies
+# only if the new code is made subject to such option by the copyright
+# holder.
+#
+
+#  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+#  Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+#  The contents of this file are subject to the terms of either the GNU
+#  General Public License Version 2 only ("GPL") or the Common Development
+#  and Distribution License("CDDL") (collectively, the "License").  You
+#  may not use this file except in compliance with the License.  You can
+#  obtain a copy of the License at
+#  https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+#  or packager/legal/LICENSE.txt.  See the License for the specific
+#  language governing permissions and limitations under the License.
+
+#  When distributing the software, include this License Header Notice in each
+#  file and include the License file at packager/legal/LICENSE.txt.
+
+#  GPL Classpath Exception:
+#  Oracle designates this particular file as subject to the "Classpath"
+#  exception as provided by Oracle in the GPL Version 2 section of the License
+#  file that accompanied this code.
+
+#  Modifications:
+#  If applicable, add the following below the License Header, with the fields
+#  enclosed by brackets [] replaced by your own identifying information:
+#  "Portions Copyright [year] [name of copyright owner]"
+
+#  Contributor(s):
+#  If you wish your version of this file to be governed by only the CDDL or
+#  only the GPL Version 2, indicate your decision by adding "[Contributor]
+#  elects to include this software in this distribution under the [CDDL or GPL
+#  Version 2] license."  If you don't indicate a single choice of license, a
+#  recipient has the option to distribute your version of this file under
+#  either the CDDL, the GPL Version 2 or to extend the choice of license to
+#  its licensees as provided above.  However, if you add GPL Version 2 code
+#  and therefore, elected the GPL Version 2 license, then the option applies
+#  only if the new code is made subject to such option by the copyright
+#  holder.
diff --git a/www/legal/jsf-cddl/jsf-cddl-header-xml.txt b/www/legal/jsf-cddl/jsf-cddl-header-xml.txt
new file mode 100644
index 0000000..9f22c60
--- /dev/null
+++ b/www/legal/jsf-cddl/jsf-cddl-header-xml.txt
@@ -0,0 +1,40 @@
+<!--
+    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+    The contents of this file are subject to the terms of either the GNU
+    General Public License Version 2 only ("GPL") or the Common Development
+    and Distribution License("CDDL") (collectively, the "License").  You
+    may not use this file except in compliance with the License.  You can
+    obtain a copy of the License at
+    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+    or packager/legal/LICENSE.txt.  See the License for the specific
+    language governing permissions and limitations under the License.
+
+    When distributing the software, include this License Header Notice in each
+    file and include the License file at packager/legal/LICENSE.txt.
+
+    GPL Classpath Exception:
+    Oracle designates this particular file as subject to the "Classpath"
+    exception as provided by Oracle in the GPL Version 2 section of the License
+    file that accompanied this code.
+
+    Modifications:
+    If applicable, add the following below the License Header, with the fields
+    enclosed by brackets [] replaced by your own identifying information:
+    "Portions Copyright [year] [name of copyright owner]"
+
+    Contributor(s):
+    If you wish your version of this file to be governed by only the CDDL or
+    only the GPL Version 2, indicate your decision by adding "[Contributor]
+    elects to include this software in this distribution under the [CDDL or GPL
+    Version 2] license."  If you don't indicate a single choice of license, a
+    recipient has the option to distribute your version of this file under
+    either the CDDL, the GPL Version 2 or to extend the choice of license to
+    its licensees as provided above.  However, if you add GPL Version 2 code
+    and therefore, elected the GPL Version 2 license, then the option applies
+    only if the new code is made subject to such option by the copyright
+    holder.
+-->
+
diff --git a/www/legal/jsf-cddl/jsf-cddl-header.txt b/www/legal/jsf-cddl/jsf-cddl-header.txt
new file mode 100644
index 0000000..ba2caf2
--- /dev/null
+++ b/www/legal/jsf-cddl/jsf-cddl-header.txt
@@ -0,0 +1,39 @@
+/*
+ *  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+ *  Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
+
+ *  The contents of this file are subject to the terms of either the GNU
+ *  General Public License Version 2 only ("GPL") or the Common Development
+ *  and Distribution License("CDDL") (collectively, the "License").  You
+ *  may not use this file except in compliance with the License.  You can
+ *  obtain a copy of the License at
+ *  https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
+ *  or packager/legal/LICENSE.txt.  See the License for the specific
+ *  language governing permissions and limitations under the License.
+
+ *  When distributing the software, include this License Header Notice in each
+ *  file and include the License file at packager/legal/LICENSE.txt.
+
+ *  GPL Classpath Exception:
+ *  Oracle designates this particular file as subject to the "Classpath"
+ *  exception as provided by Oracle in the GPL Version 2 section of the License
+ *  file that accompanied this code.
+
+ *  Modifications:
+ *  If applicable, add the following below the License Header, with the fields
+ *  enclosed by brackets [] replaced by your own identifying information:
+ *  "Portions Copyright [year] [name of copyright owner]"
+
+ *  Contributor(s):
+ *  If you wish your version of this file to be governed by only the CDDL or
+ *  only the GPL Version 2, indicate your decision by adding "[Contributor]
+ *  elects to include this software in this distribution under the [CDDL or GPL
+ *  Version 2] license."  If you don't indicate a single choice of license, a
+ *  recipient has the option to distribute your version of this file under
+ *  either the CDDL, the GPL Version 2 or to extend the choice of license to
+ *  its licensees as provided above.  However, if you add GPL Version 2 code
+ *  and therefore, elected the GPL Version 2 license, then the option applies
+ *  only if the new code is made subject to such option by the copyright
+ *  holder.
+ */

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-java/mojarra.git



More information about the pkg-java-commits mailing list